netcdf-1.0.17/0000755000000000000000000000000014502076114011231 5ustar0000000000000000netcdf-1.0.17/.travis.yml0000644000000000000000000000041114502076114013336 0ustar0000000000000000language: cpp sudo: required dist: trusty before_install: - sudo apt-get -qq update - sudo apt-get install -y octave liboctave-dev libnetcdf-dev netcdf-bin script: cd ..; mv octave-netcdf netcdf; octave --eval 'pkg install netcdf; pkg load netcdf; test_netcdf' netcdf-1.0.17/COPYING0000644000000000000000000010451314502076114012270 0ustar0000000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . netcdf-1.0.17/DESCRIPTION0000644000000000000000000000067414502076114012746 0ustar0000000000000000Name: netcdf Version: 1.0.17 Date: 2023-09-18 Author: Alexander Barth Maintainer: John Donoghue Title: netcdf Description: A NetCDF interface for Octave Depends: octave (>= 4.0.0) BuildRequires: netcdf-devel [Fedora] libnetcdf-dev [Debian], netcdf-bin [Debian] License: GPLv3+ Url: https://octave.sf.net/netcdf/index.html Repository: https://sourceforge.net/p/octave/netcdf/ci/master/tree/ netcdf-1.0.17/INDEX0000644000000000000000000000433314502076114012026 0ustar0000000000000000netcdf >> NetCDF interface High-level functions nccreate ncdisp ncinfo ncreadatt ncread ncwriteatt ncwrite ncwriteschema Low-level functions (Deprecated) netcdf_getConstant netcdf_getConstantNames netcdf_inqLibVers netcdf_setDefaultFormat netcdf_setChunkCache netcdf_getChunkCache netcdf_create netcdf_open netcdf_abort netcdf_sync netcdf_setFill netcdf_inq netcdf_inqUnlimDims netcdf_inqFormat netcdf_defDim netcdf_renameDim netcdf_defVar netcdf_renameVar netcdf_defVarFill netcdf_inqVarFill netcdf_defVarDeflate netcdf_inqVarDeflate netcdf_defVarChunking netcdf_inqVarChunking netcdf_defVarFletcher32 netcdf_inqVarFletcher32 netcdf_endDef netcdf_reDef netcdf_putVar netcdf_getVar netcdf_close netcdf_inqAttName netcdf_inqAttID netcdf_inqAtt netcdf_getAtt netcdf_putAtt netcdf_copyAtt netcdf_renameAtt netcdf_delAtt netcdf_inqVarID netcdf_inqVarIDs netcdf_inqVar netcdf_inqDim netcdf_inqDimID netcdf_inqDimIDs netcdf_defGrp netcdf_inqGrps netcdf_inqGrpName netcdf_inqGrpNameFull netcdf_inqGrpParent netcdf_inqGrpFullNcid netcdf_inqNcid netcdf_defVlen netcdf_inqUserType netcdf_inqVlen Low-level functions netcdf.getConstant netcdf.getConstantNames netcdf.inqLibVers netcdf.setDefaultFormat netcdf.setChunkCache netcdf.getChunkCache netcdf.create netcdf.open netcdf.abort netcdf.sync netcdf.setFill netcdf.inq netcdf.inqUnlimDims netcdf.inqFormat netcdf.defDim netcdf.renameDim netcdf.defVar netcdf.renameVar netcdf.defVarFill netcdf.inqVarFill netcdf.defVarDeflate netcdf.inqVarDeflate netcdf.defVarChunking netcdf.inqVarChunking netcdf.defVarFletcher32 netcdf.inqVarFletcher32 netcdf.endDef netcdf.reDef netcdf.putVar netcdf.getVar netcdf.close netcdf.inqAttName netcdf.inqAttID netcdf.inqAtt netcdf.getAtt netcdf.putAtt netcdf.copyAtt netcdf.renameAtt netcdf.delAtt netcdf.inqVarID netcdf.inqVarIDs netcdf.inqVar netcdf.inqDim netcdf.inqDimID netcdf.inqDimIDs netcdf.defGrp netcdf.inqGrps netcdf.inqGrpName netcdf.inqGrpNameFull netcdf.inqGrpParent netcdf.inqGrpFullNcid netcdf.inqNcid netcdf.defVlen netcdf.inqUserType netcdf.inqVlen Import functions (Deprecated) import_netcdf Test function test_netcdf netcdf-1.0.17/Makefile0000644000000000000000000002663714502076114012707 0ustar0000000000000000## Copyright 2015-2016 Carnë Draug ## Copyright 2015-2016 Oliver Heimlich ## Copyright 2017 Julien Bect ## Copyright 2017 Olaf Till ## Copyright 2018-2023 John Donoghue ## ## Copying and distribution of this file, with or without modification, ## are permitted in any medium without royalty provided the copyright ## notice and this notice are preserved. This file is offered as-is, ## without any warranty. TOPDIR := $(shell pwd) ## Some basic tools (can be overriden using environment variables) SED ?= sed TAR ?= tar GREP ?= grep CUT ?= cut TR ?= tr TEXI2PDF ?= texi2pdf -q MAKEINFO ?= makeinfo # work out a possible help generator ifeq ($(strip $(QHELPGENERATOR)),) ifneq ($(shell qhelpgenerator-qt5 -v 2>/dev/null),) QHELPGENERATOR = qhelpgenerator-qt5 else ifneq ($(shell qcollectiongenerator-qt5 -v 2>/dev/null),) QHELPGENERATOR = qcollectiongenerator-qt5 else ifneq ($(shell qcollectiongenerator -qt5 -v 2>/dev/null),) QHELPGENERATOR = qcollectiongenerator -qt5 #else ifneq ($(shell qhelpgenerator -qt5 -v 2>/dev/null),) # # qt4 version wont error on-qt5 but also wont work # QHELPGENERATOR = qhelpgenerator -qt5 else QHELPGENERATOR = true endif endif ## Note the use of ':=' (immediate set) and not just '=' (lazy set). ## http://stackoverflow.com/a/448939/1609556 package := $(shell $(GREP) "^Name: " DESCRIPTION | $(CUT) -f2 -d" " | \ $(TR) '[:upper:]' '[:lower:]') version := $(shell $(GREP) "^Version: " DESCRIPTION | $(CUT) -f2 -d" ") pkg_date := $(shell $(GREP) "^Date: " DESCRIPTION | $(CUT) -f2 -d" ") ## These are the paths that will be created for the releases. target_dir := target release_dir := $(target_dir)/$(package)-$(version) release_tarball := $(target_dir)/$(package)-$(version).tar.gz html_dir := $(target_dir)/$(package)-html html_tarball := $(target_dir)/$(package)-html.tar.gz ## Using $(realpath ...) avoids problems with symlinks due to bug ## #50994 in Octaves scripts/pkg/private/install.m. But at least the ## release directory above is needed in the relative form, for 'git ## archive --format=tar --prefix=$(release_dir). real_target_dir := $(realpath .)/$(target_dir) installation_dir := $(real_target_dir)/.installation package_list := $(installation_dir)/.octave_packages install_stamp := $(installation_dir)/.install_stamp ## These can be set by environment variables which allow to easily ## test with different Octave versions. ifndef OCTAVE OCTAVE := octave endif OCTAVE := $(OCTAVE) --no-gui --silent --norc MKOCTFILE ?= mkoctfile ## Command used to set permissions before creating tarballs FIX_PERMISSIONS ?= chmod -R a+rX,u+w,go-w,ug-s GIT := git GIT_TIMESTAMP := $(firstword $(shell $(GIT) log -n1 --date=unix --format="%ad")) ## Detect which VCS is used vcs := $(if $(wildcard .hg),hg,$(if $(wildcard .git),git,unknown)) ifeq ($(vcs),hg) release_dir_dep := .hg/dirstate endif ifeq ($(vcs),git) release_dir_dep := .git/index endif TAR_REPRODUCIBLE_OPTIONS := --sort=name --mtime="@$(GIT_TIMESTAMP)" --owner=0 --group=0 --numeric-owner TAR_OPTIONS := --format=ustar $(TAR_REPRODUCIBLE_OPTIONS) ## .PHONY indicates targets that are not filenames ## (https://www.gnu.org/software/make/manual/html_node/Phony-Targets.html) .PHONY: help ## make will display the command before runnning them. Use @command ## to not display it (makes specially sense for echo). help: @echo "Targets:" @echo " dist - Create $(release_tarball) for release." @echo " html - Create $(html_tarball) for release." @echo " release - Create both of the above and show md5sums." @echo " install - Install the package in $(installation_dir), where it is not visible in a normal Octave session." @echo " check - Execute package tests." @echo " doctest - Test the help texts with the doctest package." @echo " run - Run Octave with the package installed in $(installation_dir) in the path." @echo " clean - Remove everything made with this Makefile." ## ## Recipes for release tarballs (package + html) ## .PHONY: release dist html clean-tarballs clean-unpacked-release ## To make a release, build the distribution and html tarballs. release: dist html md5sum $(release_tarball) $(html_tarball) @echo "Upload @ https://sourceforge.net/p/octave/package-releases/new/" @echo " and note the changeset the release corresponds to" ## dist and html targets are only PHONY/alias targets to the release ## and html tarballs. dist: $(release_tarball) html: $(html_tarball) ## An implicit rule with a recipe to build the tarballs correctly. %.tar.gz: % $(TAR) -cf - $(TAR_OPTIONS) -C "$(target_dir)/" "$(notdir $<)" | gzip -9n > "$@" clean-tarballs: @echo "## Cleaning release tarballs (package + html)..." -$(RM) $(release_tarball) $(html_tarball) @echo ## Create the unpacked package. ## ## Notes: ## * having ".hg/dirstate" (or ".git/index") as a prerequesite means it is ## only rebuilt if we are at a different commit. ## * the variable RM usually defaults to "rm -f" ## * having this recipe separate from the one that makes the tarball ## makes it easy to have packages in alternative formats (such as zip) ## * note that if a commands needs to be run in a specific directory, ## the command to "cd" needs to be on the same line. Each line restores ## the original working directory. $(release_dir): $(release_dir_dep) -$(RM) -r "$@" ifeq (${vcs},hg) hg archive --exclude ".hg*" --type files "$@" endif ifeq (${vcs},git) git archive --format=tar --prefix="$@/" HEAD | $(TAR) -x $(RM) "$@/.gitignore" endif ## Don't fall back to run the supposed necessary contents of ## 'bootstrap' here. Users are better off if they provide ## 'bootstrap'. Administrators, checking build reproducibility, can ## put in the missing 'bootstrap' file if they feel they know its ## necessary contents. ifneq (,$(wildcard src/autogen.sh)) cd "$@/src" && ./autogen.sh && $(RM) -r "autom4te.cache" endif ifneq (,$(wildcard doc)) $(MAKE) -C "$@" docs cd "$@" && $(RM) -f doc/mkfuncdocs.py doc/mkqhcp.py endif cd "$@" && $(RM) -rf devel ## Uncomment this if your src/Makefile.in has these targets for ## pre-building something for the release (e.g. documentation). # cd "$@/src" && ./configure && $(MAKE) prebuild && \ # $(MAKE) distclean && $(RM) Makefile ## ${FIX_PERMISSIONS} "$@" run_in_place = $(OCTAVE) --eval ' pkg ("local_list", "$(package_list)"); ' \ --eval ' pkg ("load", "$(package)"); ' # html_options = --eval 'options = get_html_options ("octave-forge");' ## Uncomment this for package documentation. html_options = --eval 'options = get_html_options ("octave-forge");' #html_options = --eval 'options = get_html_options ("octave-forge");' \ # --eval 'options.package_doc = "$(package).texi";' ifneq (,$(wildcard doc)) html_options += \ --eval 'options.package_doc = "octave-$(package).texi";' \ --eval 'options.package_doc_options = [options.package_doc_options " --css-include=octave-$(package).css"];' endif $(html_dir): $(install_stamp) $(RM) -r "$@"; $(run_in_place) \ --eval ' pkg load generate_html; ' \ $(html_options) \ --eval ' generate_package_html ("$(package)", "$@", options); '; $(FIX_PERMISSIONS) "$@"; clean-unpacked-release: @echo "## Cleaning unpacked release tarballs (package + html)..." -$(RM) -r $(release_dir) $(html_dir) @echo ## ## Recipes for installing the package. ## .PHONY: install clean-install octave_install_commands = \ ' llist_path = pkg ("local_list"); \ mkdir ("$(installation_dir)"); \ load (llist_path); \ local_packages(cellfun (@ (x) strcmp ("$(package)", x.name), local_packages)) = []; \ save ("$(package_list)", "local_packages"); \ pkg ("local_list", "$(package_list)"); \ pkg ("prefix", "$(installation_dir)", "$(installation_dir)"); \ pkg ("install", "-local", "-verbose", "$(release_tarball)"); ' ## Install unconditionally. Maybe useful for testing installation with ## different versions of Octave. install: $(release_tarball) @echo "Installing package under $(installation_dir) ..." $(OCTAVE) --eval $(octave_install_commands) touch $(install_stamp) ## Install only if installation (under target/...) is not current. $(install_stamp): $(release_tarball) @echo "Installing package under $(installation_dir) ..." $(OCTAVE) --eval $(octave_install_commands) touch $(install_stamp) clean-install: @echo "## Cleaning installation under $(installation_dir) ..." -$(RM) -r $(installation_dir) @echo ## ## Recipes for testing purposes ## .PHONY: run doctest check ## Start an Octave session with the package directories on the path for ## interactice test of development sources. run: $(install_stamp) $(run_in_place) --persist ## Test example blocks in the documentation. Needs doctest package ## https://octave.sourceforge.io/doctest/index.html doctest: $(install_stamp) $(run_in_place) --eval 'pkg load doctest;' \ --eval "targets = '$(shell (cd inst && ls *.m) | $(CUT) -f2 -d@ | $(CUT) -f1 -d.)';" \ --eval "targets = strsplit (targets, ' '); doctest (targets);" ## Test package. octave_test_commands = \ ' pkgs = pkg("list", "$(package)"); \ dirs = {pkgs{1}.dir}; \ __run_test_suite__ (dirs, {}); ' ## the following works, too, but provides no overall summary output as ## __run_test_suite__ does: ## ## else cellfun (@runtests, horzcat (cellfun (@ (dir) ostrsplit (([~, dirs] = system (sprintf ("find %s -type d", dir))), "\n\r", true), dirs, "UniformOutput", false){:})); endif ' check: $(install_stamp) $(run_in_place) --eval $(octave_test_commands) ## ## Docs ## .PHONY: docs docs: doc/octave-$(package).pdf doc/octave-$(package).html doc/octave-$(package).qhc clean-docs: $(RM) -f doc/octave-$(package).info $(RM) -f doc/octave-$(package).pdf $(RM) -f doc/octave-$(package).html $(RM) -f doc/functions.texi $(RM) -f doc/version.texi $(RM) -f doc/octave-$(package).qhc doc/octave-$(package).qch doc/version.texi: $(release_dir_dep) @echo Generating $@ @echo "@c autogenerated from Makefile" > $@ @echo "@set VERSION $(version)" >> $@ @echo "@set PACKAGE $(package)" >> $@ @echo "@set DATE $(pkg_date)" >> $@ doc/octave-$(package).pdf: doc/octave-$(package).texi doc/functions.texi doc/version.texi cd doc && SOURCE_DATE_EPOCH=$(GIT_TIMESTAMP) $(TEXI2PDF) octave-$(package).texi # remove temp files cd doc && $(RM) -f octave-$(package).aux octave-$(package).cp octave-$(package).cps octave-$(package).fn octave-$(package).fns octave-$(package).log octave-$(package).toc doc/octave-$(package).html: doc/octave-$(package).texi doc/functions.texi doc/version.texi cd doc && SOURCE_DATE_EPOCH=$(GIT_TIMESTAMP) $(MAKEINFO) --html --css-ref=octave-$(package).css --no-split --output=octave-${package}.html octave-$(package).texi doc/functions.texi: $(release_dir_dep) cd doc && ./mkfuncdocs.py --src-dir=../inst/ --src-dir=../src/ --allowscan ../INDEX | $(SED) 's/@seealso/@xseealso/g' > functions.texi doc/octave-$(package).qhc: doc/octave-$(package).html # try also create qch file if can cd doc && ./mkqhcp.py octave-$(package) && $(QHELPGENERATOR) octave-$(package).qhcp -o octave-$(package).qhc cd doc && $(RM) octave-$(package).qhcp octave-$(package).qhp ## ## CLEAN ## .PHONY: clean clean: clean-tarballs clean-unpacked-release clean-install clean-docs @echo "## Removing target directory (if empty)..." -test -e $(target_dir) && rmdir $(target_dir) @echo @echo "## Cleaning done" @echo netcdf-1.0.17/NEWS0000644000000000000000000000717714502076114011744 0ustar0000000000000000Summary of important user-visible changes for netcdf 1.0.17: ------------------------------------------------------------------- ** Fix compiling Octave 9+ ** Add +netcdf package functions ** minor doc updates Summary of important user-visible changes for netcdf 1.0.16: ------------------------------------------------------------------- ** Fix compiling Octave 8+ ** minor doc updates Summary of important user-visible changes for netcdf 1.0.15: ------------------------------------------------------------------- ** Update license to use GPLv3+ ** Add NC_VLEN processing as a user type ** Add user manual ** add warning in getVar if try to read negative ** minor doc updates ** Update requirement of octave version to 4.0+ Summary of important user-visible changes for netcdf 1.0.14: ------------------------------------------------------------------- ** Add NC_STRING type as an octave type ** Minor bugfixes Summary of important user-visible changes for netcdf 1.0.13: ------------------------------------------------------------------- ** Update to depend on Octave 3.8+ ** Update for Octave 5 and newer Summary of important user-visible changes for netcdf 1.0.12: ------------------------------------------------------------------- ** Fix bug #51443: configure in dev octave 4.3.0+ Summary of important user-visible changes for netcdf 1.0.11: ------------------------------------------------------------------- ** Fix cleaning of files (thanks to Rafael Laboissiere) Summary of important user-visible changes for netcdf 1.0.10: ------------------------------------------------------------------- ** Fix bug #46060: building with the --enable-64 option Summary of important user-visible changes for netcdf 1.0.9: ------------------------------------------------------------------- ** Fix bug #47014: writing NaNs Summary of important user-visible changes for netcdf 1.0.8: ------------------------------------------------------------------- ** Fix bug #45190, #46747: netcdf(nccreate) to enable DeflateLevel in nccreate ** Fix bug #46798: using the right delete operator Summary of important user-visible changes for netcdf 1.0.7: ------------------------------------------------------------------- ** Apply patch from John Donoghue to allow cross-compilation (bug #44837) Summary of important user-visible changes for netcdf 1.0.6: ------------------------------------------------------------------- ** ncread: do not replace _FillValue by NaNs for characters ** ncdisp: fix for attributes value with %-sign Summary of important user-visible changes for netcdf 1.0.5: ------------------------------------------------------------------- ** Implement DeflateLevel in nccreate Summary of important user-visible changes for netcdf 1.0.4: ------------------------------------------------------------------- ** Work-around for problem in netcdf 4.1.3 for reading a unlimited variable of current size 0 Summary of important user-visible changes for netcdf 1.0.3: ------------------------------------------------------------------- ** remove NC_INDEPENDENT and NC_COLLECTIVE which are no longer defined in netcdf 4.3.1 Summary of important user-visible changes for netcdf 1.0.2: ------------------------------------------------------------------- ** Avoid obsolete isequalwithequalnans functions Summary of important user-visible changes for netcdf 1.0.1: ------------------------------------------------------------------- ** Fix bug preventing compilation on 32-bit platforms. Summary of important user-visible changes for netcdf 1.0.0: ------------------------------------------------------------------- ** Initial release netcdf-1.0.17/PKG_ADD0000644000000000000000000001231214502076114012244 0ustar0000000000000000% File automatically generated by PKG_ADD.sh autoload ("netcdf_getConstant", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getConstantNames", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqLibVers", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setDefaultFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_create", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_open", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_abort", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_sync", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_setFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inq", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqUnlimDims", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_endDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_reDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_putVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_close", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAttName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAttID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_getAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_putAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_copyAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_renameAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_delAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVarIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDimID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqDimIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defGrp", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrps", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpNameFull", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpParent", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqGrpFullNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_defVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); autoload ("netcdf_inqUserType", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct")); netcdf-1.0.17/PKG_DEL0000644000000000000000000001327114502076114012265 0ustar0000000000000000% File automatically generated by PKG_ADD.sh autoload ("netcdf_getConstant", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getConstantNames", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqLibVers", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setDefaultFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getChunkCache", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_create", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_open", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_abort", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_sync", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_setFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inq", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqUnlimDims", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqFormat", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarFill", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarDeflate", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarChunking", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarFletcher32", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_endDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_reDef", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_putVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_close", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAttName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAttID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_getAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_putAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_copyAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_renameAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_delAtt", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVarIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVar", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDim", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDimID", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqDimIDs", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defGrp", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrps", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpName", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpNameFull", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpParent", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqGrpFullNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqNcid", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_defVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqVlen", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); autoload ("netcdf_inqUserType", fullfile (fileparts (mfilename ("fullpath")), "__netcdf__.oct"),"remove"); netcdf-1.0.17/README.md0000644000000000000000000000033714502076114012513 0ustar0000000000000000# octave-netcdf A NetCDF interface for Octave Releases: https://octave.sourceforge.io/netcdf/ Documentation: https://octave.sourceforge.io/netcdf/overview.html Wiki: https://github.com/Alexander-Barth/octave-netcdf/wiki netcdf-1.0.17/doc/0000755000000000000000000000000014502076114011776 5ustar0000000000000000netcdf-1.0.17/doc/functions.texi0000644000000000000000000016705614502076114014720 0ustar0000000000000000@c --------------------------------------------------- @node High-level functions @section High-level functions @cindex High-level functions @c High-level functions nccreate @c ----------------------------------------- @subsection nccreate @cindex nccreate @deftypefn {Function File} {} nccreate(@var{filename},@var{varname}) @deftypefnx {Function File} {} nccreate(@var{filename},@var{varname},"property",@var{value},...) Create the variable @var{varname} in the file @var{filename}. @subsubheading Properties The following properties can be used: @itemize @item "Dimensions": a cell array with the dimension names followed by their length or Inf if the dimension is unlimited. If the property is omitted, a scalar variable is created. @item "Datatype": a string with the Octave data type name (see @code{ncinfo} for the correspondence between Octave and NetCDF data types). The default data type is a "double". @item "Format": This can be "netcdf4_classic" (default), "classic", "64bit" or "netcdf4". @item "FillValue": the value used for undefined elements of the NetCDF variable. @item "ChunkSize": the size of the data chunks. If omitted, the variable is not chunked. @item "DeflateLevel": The deflate level for compression. It can be the string "disable" (default) for no compression or an integer between 0 (no compression) and 9 (maximum compression). @item "Shuffle": true for enabling the shuffle filter or false (default) for disabling it. @end itemize @subsubheading Example @example nccreate("test.nc","temp","Dimensions",@{"lon",10,"lat",20@},"Format","classic"); ncdisp("test.nc"); @end example @xseealso{ncwrite} @end deftypefn @c High-level functions ncdisp @c ----------------------------------------- @subsection ncdisp @cindex ncdisp @deftypefn {Function File} {} ncdisp (@var{filename}) Display meta-data of the NetCDF file @var{filename} @subsubheading Example @example ncdisp("test.nc"); @end example @xseealso{ncinfo} @end deftypefn @c High-level functions ncinfo @c ----------------------------------------- @subsection ncinfo @cindex ncinfo @deftypefn {Function File} {@var{info} =} ncinfo (@var{filename}) @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{varname}) @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{groupname}) Return information about an entire NetCDF file @var{filename} (i.e. the root group "/"), about the variable called @var{varname} or the group called @var{groupname}. The structure @var{info} has always the following fields: @itemize @item @var{Filename}: the name of the NetCDF file @item @var{Format}: one of the strings "CLASSIC", "64BIT", "NETCDF4" or "NETCDF4_CLASSIC" @end itemize The structure @var{info} has additional fields depending on whether a group of variable is queried. @subsubheading Groups Groups are returned as an array structure with the following fields: @itemize @item @var{Name}: the group name. The root group is named "/". @item @var{Dimensions}: a array structure with the dimensions. @item @var{Variables}: a array structure with the variables. @item @var{Attributes}: a array structure with global attributes. @item @var{Groups}: a array structure (one for each group) with the same fields as this structure. @end itemize @subsubheading Dimensions Dimensions are returned as an array structure with the following fields: @itemize @item @var{Name}: the name of the dimension @item @var{Length}: the length of the dimension @item @var{Unlimited}: true of the dimension has no fixed limited, false @end itemize @subsubheading Variables Variables are returned as an array structure with the following fields: @itemize @item @var{Name}: the name of the dimension @item @var{Dimensions}: array structure of all dimensions of this variable with the same structure as above. @item @var{Size}: array with the size of the variable @item @var{Datatype}: string with the corresponding octave data-type (see below) @item @var{Attributes}: a array structure of attributes @item @var{FillValue}: the NetCDF fill value of the variable. If the fill value is not defined, then this attribute is an empty array ([]). @item @var{DeflateLevel}: the NetCDF deflate level between 0 (no compression) and 9 (maximum compression). @item @var{Shuffle}: is true if the shuffle filter is activated to improve compression, otherwise false. @item @var{CheckSum}: is set to "fletcher32", if check-sums are used, otherwise this field is not defined. @end itemize @subsubheading Attributes Attributes are returned as an array structure with the following fields: @itemize @item @var{Name}: the name of the attribute @item @var{Value}: the value of the attribute (with the corresponding type) @item @var{Unlimited}: true of the dimension has no fixed limited, false @end itemize @subsubheading Data-types The following the the correspondence between the Octave and NetCDF data-types: @multitable @columnfractions .5 .5 @headitem Octave type @tab NetCDF type @item @code{int8} @tab @code{NC_BYTE} @item @code{uint8} @tab @code{NC_UBYTE} @item @code{int16} @tab @code{NC_SHORT} @item @code{uint16} @tab @code{NC_USHORT} @item @code{int32} @tab @code{NC_INT} @item @code{uint32} @tab @code{NC_UINT} @item @code{int64} @tab @code{NC_INT64} @item @code{uint64} @tab @code{NC_UINT64} @item @code{single} @tab @code{NC_FLOAT} @item @code{double} @tab @code{NC_DOUBLE} @item @code{char} @tab @code{NC_CHAR} @end multitable The output of @code{ncinfo} can be used to create a NetCDF file with the same meta-data using @code{ncwriteschema}. Note: If there are no attributes (or variable or groups), the corresponding field is an empty matrix and not an empty struct array for compatibility with matlab. @xseealso{ncread,nccreate,ncwriteschema,ncdisp} @end deftypefn @c High-level functions ncread @c ----------------------------------------- @subsection ncread @cindex ncread @deftypefn {Function File} {@var{x} =} ncread (@var{filename}, @var{varname}) @deftypefnx {Function File} {@var{x} =} ncread (@var{filename}, @var{varname},@var{start},@var{count},@var{stride}) Read the variable @var{varname} from the NetCDF file @var{filename}. If @var{start},@var{count} and @var{stride} are present, a subset of the variable is loaded. The parameter @var{start} contains the starting indices (1-based), @var{count} is the number of elements and @var{stride} the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable. Elements of @var{count} might be Inf which means that as many values as possible are loaded. If the variable has the _FillValue attribute, then the corresponding values are replaced by NaN (except for characters). NetCDF attributes scale_factor (default 1) and add_offset (default 0) are use the transform the variable during the loading: x = scale_factor * x_in_file + add_offset The output data type matches the NetCDF datatype, except when the attributes _FillValue, add_offset or scale_factor are defined in which case the output is a array in double precision. Note that values equal to the attribute missing_value are not replaced by NaN (for compatibility). @subsubheading Example Read the data from variable 'mydata' in the file test.nc. @example data = ncread('test.nc','mydata'); @end example @xseealso{ncwrite,ncinfo,ncdisp} @end deftypefn @c High-level functions ncreadatt @c ----------------------------------------- @subsection ncreadatt @cindex ncreadatt @deftypefn {Function File} {@var{val} =} ncreadatt(@var{filename},@var{varname},@var{attname}) Return the attribute @var{attname} of the variable @var{varname} in the file @var{filename}. Global attributes can be accessed by using "/" or the group name as @var{varname}. The type of attribute is mapped to the Octave data types. (see @code{ncinfo}). @subsubheading Example Read global attribute 'creation_date' @example d = ncreadatt('test.nc','/','creation_date') @end example Read atribute 'myattr' assigned to variable mydata. @example d = ncreadattr('test.nc', 'mydata', 'myattr'); @end example @xseealso{ncinfo,ncwriteatt} @end deftypefn @c High-level functions ncwrite @c ----------------------------------------- @subsection ncwrite @cindex ncwrite @deftypefn {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}) @deftypefnx {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}, @var{start}, @var{stride}) Write array @var{x} to the the variable @var{varname} in the NetCDF file @var{filename}. The variable with the name @var{varname} and the appropriate dimension must already exist in the NetCDF file. If @var{start} and @var{stride} are present, a subset of the variable is written. The parameter @var{start} contains the starting indices (1-based) and @var{stride} the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable. If the variable has the _FillValue attribute, then the values equal to NaN are replaced by corresponding fill value NetCDF attributes scale_factor (default 1) and add_oddset (default 0) are use the transform the variable during writing: x_in_file = (x - add_offset)/scale_factor @subsubheading Example Create a netcdf file with a variable of 'mydata' and then write data to that variable. @example nccreate('myfile.nc','mydata'); ncwrite('myfile.nc','mydata', 101); @end example @xseealso{ncread,nccreate} @end deftypefn @c High-level functions ncwriteatt @c ----------------------------------------- @subsection ncwriteatt @cindex ncwriteatt @deftypefn {Function File} {} ncwriteatt(@var{filename},@var{varname},@var{attname},@var{val}) Defines the attribute @var{attname} of the variable @var{varname} in the file @var{filename} with the value @var{val}. Global attributes can be defined by using "/" or the group name as @var{varname}. The type of value is mapped to the NetCDF data types. (see @code{ncinfo}). @subsubheading Example Create a netcdf4 format file with a variable mydata and assign an attribute "units" to it. @example nccreate("myfile.nc", "mydata", "Format", "netcdf4"); ncwriteatt("myfile.nc", "mydata", "Units", "K"); @end example @xseealso{ncinfo} @end deftypefn @c High-level functions ncwriteschema @c ----------------------------------------- @subsection ncwriteschema @cindex ncwriteschema @deftypefn {Function File} {} ncwriteschema (@var{filename}, @var{schema}) Create a NetCDF called @var{filename} with the dimensions, attributes, variables and groups given by the structure @var{schema}. The variable @var{schema} has the same structure as the results of @code{ncinfo}. @code{ncinfo} and @code{ncwriteschema} can be used together to create a NetCDF using another file as a template: @subsubheading Example @example schema = ncinfo("template.nc"); # the new file should be named "new_file.nc" ncwriteschema("new_file.nc",schema); @end example Unused field in @var{schema} such as @var{ChunkSize}, @var{Shuffle}, @var{DeflateLevel}, @var{FillValue}, @var{Checksum} can be left-out if the corresponding feature is not used. Dimensions are considered as limited if the field @var{Unlimited} is missing, unless the dimension length is Inf. @xseealso{ncinfo} @end deftypefn @c --------------------------------------------------- @node Low-level functions (Deprecated) @section Low-level functions (Deprecated) @cindex Low-level functions (Deprecated) @c Low-level functions (Deprecated) netcdf_abort @c ----------------------------------------- @subsection netcdf_abort @cindex netcdf_abort @deftypefn {Loadable Function} {} netcdf_abort(@var{ncid}) Aborts all changes since the last time the dataset entered in define mode. @end deftypefn @xseealso{netcdf_reDef} @c Low-level functions (Deprecated) netcdf_close @c ----------------------------------------- @subsection netcdf_close @cindex netcdf_close @deftypefn {Loadable Function} {} netcdf_close(@var{ncid}) Close the NetCDF file with the id @var{ncid}. @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_copyAtt @c ----------------------------------------- @subsection netcdf_copyAtt @cindex netcdf_copyAtt @deftypefn {Loadable Function} {} netcdf_copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} to the variable @var{varid_out} in the data set @var{ncid_out}. To copy a global attribute use netcdf_getConstant("global") for @var{varid} or @var{varid_out}. @xseealso{netcdf_getAtt,netcdf_getConstant} @end deftypefn @c Low-level functions (Deprecated) netcdf_create @c ----------------------------------------- @subsection netcdf_create @cindex netcdf_create @deftypefn {Loadable Function} {@var{ncid} =} netcdf_create(@var{filename},@var{mode}) Creates the file named @var{filename} in the mode @var{mode} which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). @var{mode} can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or. @end deftypefn @subsubheading Example @example mode = bitor(netcdf.getConstant("classic_model"), ... netcdf.getConstant("netcdf4")); ncid = netcdf.create("test.nc",mode); @end example @xseealso{netcdf_close} @c Low-level functions (Deprecated) netcdf_defDim @c ----------------------------------------- @subsection netcdf_defDim @cindex netcdf_defDim @deftypefn {Loadable Function} {@var{dimid} =} netcdf_defDim(@var{ncid},@var{name},@var{len}) Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned. @end deftypefn @xseealso{netcdf_defVar} @c Low-level functions (Deprecated) netcdf_defGrp @c ----------------------------------------- @subsection netcdf_defGrp @cindex netcdf_defGrp @deftypefn {Loadable Function} {@var{new_ncid} =} netcdf_defGrp(@var{ncid},@var{name}) Define a group in a NetCDF file. @xseealso{netcdf_inqGrps} @end deftypefn @c Low-level functions (Deprecated) netcdf_defVar @c ----------------------------------------- @subsection netcdf_defVar @cindex netcdf_defVar @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. @end deftypefn @xseealso{netcdf_open,netcdf_defDim} @c Low-level functions (Deprecated) netcdf_defVarChunking @c ----------------------------------------- @subsection netcdf_defVarChunking @cindex netcdf_defVarChunking @deftypefn {Loadable Function} {} netcdf_defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) Define the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @xseealso{netcdf_inqVarChunking} @c Low-level functions (Deprecated) netcdf_defVarDeflate @c ----------------------------------------- @subsection netcdf_defVarDeflate @cindex netcdf_defVarDeflate @deftypefn {Loadable Function} {} netcdf_defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) Define the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @xseealso{netcdf_inqVarDeflate} @c Low-level functions (Deprecated) netcdf_defVarFill @c ----------------------------------------- @subsection netcdf_defVarFill @cindex netcdf_defVarFill @deftypefn {Loadable Function} {} netcdf_defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) Define the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @xseealso{netcdf_inqVarFill} @c Low-level functions (Deprecated) netcdf_defVarFletcher32 @c ----------------------------------------- @subsection netcdf_defVarFletcher32 @cindex netcdf_defVarFletcher32 @deftypefn {Loadable Function} {} netcdf_defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is "NOCHECKSUM", then checksums will be disabled. @end deftypefn @xseealso{netcdf_defVar,netcdf_inqVarFletcher32} @c Low-level functions (Deprecated) netcdf_defVlen @c ----------------------------------------- @subsection netcdf_defVlen @cindex netcdf_defVlen @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVlen(@var{ncid},@var{typename},@var{basetype}) Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The new data type id is returned. @end deftypefn @xseealso{netcdf_open,netcdf_defVar, netcdf_inqVlen} @c Low-level functions (Deprecated) netcdf_delAtt @c ----------------------------------------- @subsection netcdf_delAtt @cindex netcdf_delAtt @deftypefn {Loadable Function} {} netcdf_delAtt(@var{ncid},@var{varid},@var{name}) Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. To delete a global attribute use netcdf_getConstant("global") for @var{varid}. @xseealso{netcdf_defAtt,netcdf_getConstant} @end deftypefn @c Low-level functions (Deprecated) netcdf_endDef @c ----------------------------------------- @subsection netcdf_endDef @cindex netcdf_endDef @deftypefn {Loadable Function} {} netcdf_endDef (@var{ncid}) Leaves define-mode of NetCDF file @var{ncid}. @end deftypefn @xseealso{netcdf_reDef} @c Low-level functions (Deprecated) netcdf_getAtt @c ----------------------------------------- @subsection netcdf_getAtt @cindex netcdf_getAtt @deftypefn {Loadable Function} {@var{data} =} netcdf_getAtt (@var{ncid},@var{varid},@var{name}) Get the value of a NetCDF attribute. This function returns the value of the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_putAtt} @end deftypefn @c Low-level functions (Deprecated) netcdf_getChunkCache @c ----------------------------------------- @subsection netcdf_getChunkCache @cindex netcdf_getChunkCache @deftypefn {Loadable Function} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf_getChunkCache() Gets the default chunk cache settings in the HDF5 library. @end deftypefn @xseealso{netcdf_setChunkCache} @c Low-level functions (Deprecated) netcdf_getConstant @c ----------------------------------------- @subsection netcdf_getConstant @cindex netcdf_getConstant @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstant(@var{name}) Returns the value of a NetCDF constant called @var{name}. @xseealso{netcdf_getConstantNames} @end deftypefn @c Low-level functions (Deprecated) netcdf_getConstantNames @c ----------------------------------------- @subsection netcdf_getConstantNames @cindex netcdf_getConstantNames @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstantNames() Returns a list of all constant names. @end deftypefn @xseealso{netcdf_getConstant} @c Low-level functions (Deprecated) netcdf_getVar @c ----------------------------------------- @subsection netcdf_getVar @cindex netcdf_getVar @deftypefn {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid}) @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start}) @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count}) @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) Get the data from a NetCDF variable. The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @xseealso{netcdf_putVar} @c Low-level functions (Deprecated) netcdf_inq @c ----------------------------------------- @subsection netcdf_inq @cindex netcdf_inq @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() Returns the version of the NetCDF library. @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_inqAtt @c ----------------------------------------- @subsection netcdf_inqAtt @cindex netcdf_inqAtt @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) Get the name of a NetCDF attribute. This function returns the name of the attribute with the id @var{attnum} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_inqAttName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqAttID @c ----------------------------------------- @subsection netcdf_inqAttID @cindex netcdf_inqAttID @deftypefn {Loadable Function} {@var{attnum} =} netcdf_inqAttID(@var{ncid},@var{varid},@var{attname}) Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_inqAttName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqAttName @c ----------------------------------------- @subsection netcdf_inqAttName @cindex netcdf_inqAttName @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) Get the name of a NetCDF attribute. This function returns the name of the attribute with the id @var{attnum} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_inqAttName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqDim @c ----------------------------------------- @subsection netcdf_inqDim @cindex netcdf_inqDim @deftypefn {Loadable Function} {[@var{name},@var{length}] =} netcdf_inqDim(@var{ncid},@var{dimid}) Returns the name and length of a NetCDF dimension. @xseealso{netcdf_inqDimID} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqDimID @c ----------------------------------------- @subsection netcdf_inqDimID @cindex netcdf_inqDimID @deftypefn {Loadable Function} {@var{dimid} =} netcdf_inqDimID(@var{ncid},@var{dimname}) Return the id of a NetCDF dimension. @xseealso{netcdf_inqDim} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqDimIDs @c ----------------------------------------- @subsection netcdf_inqDimIDs @cindex netcdf_inqDimIDs @deftypefn {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid}) @deftypefnx {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid},@var{include_parents}) Return the dimension ids defined in a NetCDF file. If @var{include_parents} is 1, the dimension ids of the parent group are also returned. Per default this is not the case (@var{include_parents} is 0). @xseealso{netcdf_inqDim} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqFormat @c ----------------------------------------- @subsection netcdf_inqFormat @cindex netcdf_inqFormat @deftypefn {Loadable Function} {@var{format} =} netcdf_inqFormat(@var{ncid}) Return the NetCDF format of the dataset @var{ncid}. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC" @end deftypefn @xseealso{netcdf_inq} @c Low-level functions (Deprecated) netcdf_inqGrpFullNcid @c ----------------------------------------- @subsection netcdf_inqGrpFullNcid @cindex netcdf_inqGrpFullNcid @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqGrpFullNcid(@var{ncid},@var{name}) Return the group id based on the full group name. @xseealso{netcdf_inqGrpName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrpName @c ----------------------------------------- @subsection netcdf_inqGrpName @cindex netcdf_inqGrpName @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpName(@var{ncid}) Return group name in a NetCDF file. @xseealso{netcdf_inqGrps} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrpNameFull @c ----------------------------------------- @subsection netcdf_inqGrpNameFull @cindex netcdf_inqGrpNameFull @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpNameFull(@var{ncid}) Return full name of group in NetCDF file. @xseealso{netcdf_inqGrpName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrpParent @c ----------------------------------------- @subsection netcdf_inqGrpParent @cindex netcdf_inqGrpParent @deftypefn {Loadable Function} {@var{parent_ncid} =} netcdf_inqGrpParent(@var{ncid}) Return id of the parent group @xseealso{netcdf_inqGrpName} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqGrps @c ----------------------------------------- @subsection netcdf_inqGrps @cindex netcdf_inqGrps @deftypefn {Loadable Function} {@var{ncids} =} netcdf_inqGrps(@var{ncid}) Return all groups ids in a NetCDF file. @xseealso{netcdf_inqGrps} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqLibVers @c ----------------------------------------- @subsection netcdf_inqLibVers @cindex netcdf_inqLibVers @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() Returns the version of the NetCDF library. @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_inqNcid @c ----------------------------------------- @subsection netcdf_inqNcid @cindex netcdf_inqNcid @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqNcid(@var{ncid},@var{name}) Return group id based on its name @xseealso{netcdf_inqGrpFullNcid} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqUnlimDims @c ----------------------------------------- @subsection netcdf_inqUnlimDims @cindex netcdf_inqUnlimDims @deftypefn {Loadable Function} {@var{unlimdimids} =} netcdf_inqUnlimDims(@var{ncid}) Return the id of all unlimited dimensions of the NetCDF file @var{ncid}. @end deftypefn @xseealso{netcdf_inq} @c Low-level functions (Deprecated) netcdf_inqUserType @c ----------------------------------------- @subsection netcdf_inqUserType @cindex netcdf_inqUserType @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf_inqUserType(@var{ncid},@var{typeid}) Provide information on a user defined type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, base type id, number of fields and class identifier of the type. @end deftypefn @xseealso{netcdf_open, netcdf_defVlen, netcdf_inqVlen} @c Low-level functions (Deprecated) netcdf_inqVar @c ----------------------------------------- @subsection netcdf_inqVar @cindex netcdf_inqVar @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) Determines the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @xseealso{netcdf_defVarFill} @c Low-level functions (Deprecated) netcdf_inqVarChunking @c ----------------------------------------- @subsection netcdf_inqVarChunking @cindex netcdf_inqVarChunking @deftypefn {Loadable Function} {[@var{storage},@var{chunkSizes}] = } netcdf_inqVarChunking (@var{ncid},@var{varid}) Determines the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @xseealso{netcdf_defVarChunking} @c Low-level functions (Deprecated) netcdf_inqVarDeflate @c ----------------------------------------- @subsection netcdf_inqVarDeflate @cindex netcdf_inqVarDeflate @deftypefn {Loadable Function} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf_inqVarDeflate (@var{ncid},@var{varid}) Determines the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @xseealso{netcdf_defVarDeflate} @c Low-level functions (Deprecated) netcdf_inqVarFill @c ----------------------------------------- @subsection netcdf_inqVarFill @cindex netcdf_inqVarFill @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) Determines the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @xseealso{netcdf_defVarFill} @c Low-level functions (Deprecated) netcdf_inqVarFletcher32 @c ----------------------------------------- @subsection netcdf_inqVarFletcher32 @cindex netcdf_inqVarFletcher32 @deftypefn {Loadable Function} {@var{checksum} =} netcdf_inqVarFletcher32(@var{ncid},@var{varid}) Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM". @end deftypefn @xseealso{netcdf_defVar,netcdf_inqVarFletcher32} @c Low-level functions (Deprecated) netcdf_inqVarID @c ----------------------------------------- @subsection netcdf_inqVarID @cindex netcdf_inqVarID @deftypefn {Loadable Function} {@var{varid} = } netcdf_inqVarID (@var{ncid},@var{name}) Return the id of a variable based on its name. @xseealso{netcdf_defVar,netcdf_inqVarIDs} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqVarIDs @c ----------------------------------------- @subsection netcdf_inqVarIDs @cindex netcdf_inqVarIDs @deftypefn {Loadable Function} {@var{varids} = } netcdf_inqVarID (@var{ncid}) Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group. @xseealso{netcdf_inqVarID} @end deftypefn @c Low-level functions (Deprecated) netcdf_inqVlen @c ----------------------------------------- @subsection netcdf_inqVlen @cindex netcdf_inqVlen @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf_inqVlen(@var{ncid},@var{typeid}) Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, and base type id. @end deftypefn @xseealso{netcdf_open, netcdf_defVlen} @c Low-level functions (Deprecated) netcdf_open @c ----------------------------------------- @subsection netcdf_open @cindex netcdf_open @deftypefn {Loadable Function} {@var{ncid} =} netcdf_open(@var{filename},@var{mode}) Opens the file named @var{filename} in the mode @var{mode}. @end deftypefn @xseealso{netcdf_close} @c Low-level functions (Deprecated) netcdf_putAtt @c ----------------------------------------- @subsection netcdf_putAtt @cindex netcdf_putAtt @deftypefn {Loadable Function} {} netcdf_putAtt (@var{ncid},@var{varid},@var{name},@var{data}) Defines a NetCDF attribute. This function defines the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. For global attributes @var{varid} can be netcdf_getConstant("global"). @xseealso{netcdf_getAtt} @end deftypefn @c Low-level functions (Deprecated) netcdf_putVar @c ----------------------------------------- @subsection netcdf_putVar @cindex netcdf_putVar @deftypefn {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{data}) @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{data}) @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) Put data in a NetCDF variable. The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @xseealso{netcdf_endDef} @c Low-level functions (Deprecated) netcdf_reDef @c ----------------------------------------- @subsection netcdf_reDef @cindex netcdf_reDef @deftypefn {Loadable Function} {} netcdf_reDef (@var{ncid}) Enter define-mode of NetCDF file @var{ncid}. @end deftypefn @xseealso{netcdf_endDef} @c Low-level functions (Deprecated) netcdf_renameAtt @c ----------------------------------------- @subsection netcdf_renameAtt @cindex netcdf_renameAtt @deftypefn {Loadable Function} {} netcdf_renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute. To rename a global attribute use netcdf_getConstant("global") for @var{varid}. @xseealso{netcdf_copyAtt,netcdf_getConstant} @end deftypefn @c Low-level functions (Deprecated) netcdf_renameDim @c ----------------------------------------- @subsection netcdf_renameDim @cindex netcdf_renameDim @deftypefn {Loadable Function} {} netcdf_renameDim(@var{ncid},@var{dimid},@var{name}) Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension. @end deftypefn @xseealso{netcdf_defDim} @c Low-level functions (Deprecated) netcdf_renameVar @c ----------------------------------------- @subsection netcdf_renameVar @cindex netcdf_renameVar @deftypefn {Loadable Function} {} netcdf_renameVar(@var{ncid},@var{varid},@var{name}) Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable. @end deftypefn @xseealso{netcdf_defVar} @c Low-level functions (Deprecated) netcdf_setChunkCache @c ----------------------------------------- @subsection netcdf_setChunkCache @cindex netcdf_setChunkCache @deftypefn {Loadable Function} {} netcdf_setChunkCache(@var{size}, @var{nelems}, @var{preemption}) Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created. @end deftypefn @xseealso{netcdf_getChunkCache} @c Low-level functions (Deprecated) netcdf_setDefaultFormat @c ----------------------------------------- @subsection netcdf_setDefaultFormat @cindex netcdf_setDefaultFormat @deftypefn {Loadable Function} {@var{old_format} =} netcdf_setDefaultFormat(@var{format}) Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic". @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_setFill @c ----------------------------------------- @subsection netcdf_setFill @cindex netcdf_setFill @deftypefn {Loadable Function} {@var{old_mode} =} netcdf_setFill(@var{ncid},@var{fillmode}) Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either "fill" or "nofill". @end deftypefn @xseealso{netcdf_open} @c Low-level functions (Deprecated) netcdf_sync @c ----------------------------------------- @subsection netcdf_sync @cindex netcdf_sync @deftypefn {Loadable Function} {} netcdf_sync(@var{ncid}) Writes all changes to the disk and leaves the file open. @end deftypefn @xseealso{netcdf_close} @c --------------------------------------------------- @node Low-level functions @section Low-level functions @cindex Low-level functions @c Low-level functions netcdf.abort @c ----------------------------------------- @subsection netcdf.abort @cindex abort @deftypefn {} {} netcdf.abort(@var{ncid}) Aborts all changes since the last time the dataset entered in define mode. @end deftypefn @c Low-level functions netcdf.close @c ----------------------------------------- @subsection netcdf.close @cindex close @deftypefn {} {} netcdf.close(@var{ncid}) Close the NetCDF file with the id @var{ncid}. @end deftypefn @c Low-level functions netcdf.copyAtt @c ----------------------------------------- @subsection netcdf.copyAtt @cindex copyAtt @deftypefn {} {} netcdf.copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} to the variable @var{varid_out} in the data set @var{ncid_out}. To copy a global attribute use netcdf.getConstant("global") for @var{varid} or @var{varid_out}. @xseealso{netcdf.getAtt,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.create @c ----------------------------------------- @subsection netcdf.create @cindex create @deftypefn {} {@var{ncid} =} netcdf.create(@var{filename},@var{mode}) Creates the file named @var{filename} in the mode @var{mode} which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). @var{mode} can also be the numeric value return by netcdf.getConstant. In the later-case it can be combined with a bitwise-or. @end deftypefn @subsubheading Example @example mode = bitor(netcdf.getConstant("classic_model"), ... netcdf.getConstant("netcdf4")); ncid = netcdf.create("test.nc",mode); @end example @c Low-level functions netcdf.defDim @c ----------------------------------------- @subsection netcdf.defDim @cindex defDim @deftypefn {} {@var{dimid} =} netcdf.defDim(@var{ncid},@var{name},@var{len}) Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned. @end deftypefn @c Low-level functions netcdf.defGrp @c ----------------------------------------- @subsection netcdf.defGrp @cindex defGrp @deftypefn {} {@var{new_ncid} =} netcdf.defGrp(@var{ncid},@var{name}) Define a group in a NetCDF file. @xseealso{netcdf.inqGrps} @end deftypefn @c Low-level functions netcdf.defVar @c ----------------------------------------- @subsection netcdf.defVar @cindex defVar @deftypefn {} {@var{varid} = } netcdf.defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. @end deftypefn @c Low-level functions netcdf.defVarChunking @c ----------------------------------------- @subsection netcdf.defVarChunking @cindex defVarChunking @deftypefn {} {} netcdf.defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) Define the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @c Low-level functions netcdf.defVarDeflate @c ----------------------------------------- @subsection netcdf.defVarDeflate @cindex defVarDeflate @deftypefn {} {} netcdf.defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) Define the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @c Low-level functions netcdf.defVarFill @c ----------------------------------------- @subsection netcdf.defVarFill @cindex defVarFill @deftypefn {} {} netcdf.defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) Define the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @c Low-level functions netcdf.defVarFletcher32 @c ----------------------------------------- @subsection netcdf.defVarFletcher32 @cindex defVarFletcher32 @deftypefn {} {} netcdf.defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is "NOCHECKSUM", then checksums will be disabled. @end deftypefn @c Low-level functions netcdf.defVlen @c ----------------------------------------- @subsection netcdf.defVlen @cindex defVlen @deftypefn {} {@var{varid} = } netcdf.defVlen(@var{ncid},@var{typename},@var{basetype}) Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The new data type id is returned. @end deftypefn @c Low-level functions netcdf.delAtt @c ----------------------------------------- @subsection netcdf.delAtt @cindex delAtt @deftypefn {} {} netcdf.delAtt(@var{ncid},@var{varid},@var{name}) Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. To delete a global attribute use netcdf.getConstant("global") for @var{varid}. @xseealso{netcdf.defAtt,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.endDef @c ----------------------------------------- @subsection netcdf.endDef @cindex endDef @deftypefn {} {} netcdf.endDef (@var{ncid}) Leaves define-mode of NetCDF file @var{ncid}. @end deftypefn @c Low-level functions netcdf.getAtt @c ----------------------------------------- @subsection netcdf.getAtt @cindex getAtt @deftypefn {} {@var{data} =} netcdf.getAtt (@var{ncid},@var{varid},@var{name}) Get the value of a NetCDF attribute. This function returns the value of the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.putAtt} @end deftypefn @c Low-level functions netcdf.getChunkCache @c ----------------------------------------- @subsection netcdf.getChunkCache @cindex getChunkCache @deftypefn {} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf.getChunkCache() Gets the default chunk cache settings in the HDF5 library. @end deftypefn @c Low-level functions netcdf.getConstant @c ----------------------------------------- @subsection netcdf.getConstant @cindex getConstant @deftypefn {} {@var{value} =} netcdf.getConstant(@var{name}) Returns the value of a NetCDF constant called @var{name}. @xseealso{netcdf.getConstantNames} @end deftypefn @c Low-level functions netcdf.getConstantNames @c ----------------------------------------- @subsection netcdf.getConstantNames @cindex getConstantNames @deftypefn {} {@var{value} =} netcdf.getConstantNames() Returns a list of all constant names. @end deftypefn @c Low-level functions netcdf.getVar @c ----------------------------------------- @subsection netcdf.getVar @cindex getVar @deftypefn {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid}) @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start}) @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count}) @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) Get the data from a NetCDF variable. The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @c Low-level functions netcdf.inq @c ----------------------------------------- @subsection netcdf.inq @cindex inq @deftypefn {} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf.inq(@var{ncid}) Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use the function netcdf.inqUnlimDims as multiple unlimite dimension exists. @end deftypefn @c Low-level functions netcdf.inqAtt @c ----------------------------------------- @subsection netcdf.inqAtt @cindex inqAtt @deftypefn {} {[@var{xtype},@var{len}] = } netcdf.inqAtt(@var{ncid},@var{varid},@var{name}) Get attribute type and length. @xseealso{netcdf.inqAttName} @end deftypefn @c Low-level functions netcdf.inqAttID @c ----------------------------------------- @subsection netcdf.inqAttID @cindex inqAttID @deftypefn {} {@var{attnum} =} netcdf.inqAttID(@var{ncid},@var{varid},@var{attname}) Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.inqAttName} @end deftypefn @c Low-level functions netcdf.inqAttName @c ----------------------------------------- @subsection netcdf.inqAttName @cindex inqAttName @deftypefn {} {@var{name} =} netcdf.inqAttName (@var{ncid},@var{varid},@var{attnum}) Get the name of a NetCDF attribute. This function returns the name of the attribute with the id @var{attnum} of the variable @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.inqAttName} @end deftypefn @c Low-level functions netcdf.inqDim @c ----------------------------------------- @subsection netcdf.inqDim @cindex inqDim @deftypefn {} {[@var{name},@var{length}] =} netcdf.inqDim(@var{ncid},@var{dimid}) Returns the name and length of a NetCDF dimension. @xseealso{netcdf.inqDimID} @end deftypefn @c Low-level functions netcdf.inqDimID @c ----------------------------------------- @subsection netcdf.inqDimID @cindex inqDimID @deftypefn {} {@var{dimid} =} netcdf.inqDimID(@var{ncid},@var{dimname}) Return the id of a NetCDF dimension. @xseealso{netcdf.inqDim} @end deftypefn @c Low-level functions netcdf.inqDimIDs @c ----------------------------------------- @subsection netcdf.inqDimIDs @cindex inqDimIDs @deftypefn {} {@var{dimids} =} netcdf.inqDimID(@var{ncid}) @deftypefnx {} {@var{dimids} =} netcdf.inqDimID(@var{ncid},@var{include_parents}) Return the dimension ids defined in a NetCDF file. If @var{include_parents} is 1, the dimension ids of the parent group are also returned. Per default this is not the case (@var{include_parents} is 0). @xseealso{netcdf.inqDim} @end deftypefn @c Low-level functions netcdf.inqFormat @c ----------------------------------------- @subsection netcdf.inqFormat @cindex inqFormat @deftypefn {} {@var{format} =} netcdf.inqFormat(@var{ncid}) Return the NetCDF format of the dataset @var{ncid}. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC" @end deftypefn @c Low-level functions netcdf.inqGrpFullNcid @c ----------------------------------------- @subsection netcdf.inqGrpFullNcid @cindex inqGrpFullNcid @deftypefn {} {@var{grp_ncid} =} netcdf.inqGrpFullNcid(@var{ncid},@var{name}) Return the group id based on the full group name. @xseealso{netcdf.inqGrpName} @end deftypefn @c Low-level functions netcdf.inqGrpName @c ----------------------------------------- @subsection netcdf.inqGrpName @cindex inqGrpName @deftypefn {} {@var{name} =} netcdf.inqGrpName(@var{ncid}) Return group name in a NetCDF file. @xseealso{netcdf.inqGrps} @end deftypefn @c Low-level functions netcdf.inqGrpNameFull @c ----------------------------------------- @subsection netcdf.inqGrpNameFull @cindex inqGrpNameFull @deftypefn {} {@var{name} =} netcdf.inqGrpNameFull(@var{ncid}) Return full name of group in NetCDF file. @xseealso{netcdf.inqGrpName} @end deftypefn @c Low-level functions netcdf.inqGrpParent @c ----------------------------------------- @subsection netcdf.inqGrpParent @cindex inqGrpParent @deftypefn {} {@var{parent_ncid} =} netcdf.inqGrpParent(@var{ncid}) Return id of the parent group @xseealso{netcdf.inqGrpName} @end deftypefn @c Low-level functions netcdf.inqGrps @c ----------------------------------------- @subsection netcdf.inqGrps @cindex inqGrps @deftypefn {} {@var{ncids} =} netcdf.inqGrps(@var{ncid}) Return all groups ids in a NetCDF file. @xseealso{netcdf.inqGrps} @end deftypefn @c Low-level functions netcdf.inqLibVers @c ----------------------------------------- @subsection netcdf.inqLibVers @cindex inqLibVers @deftypefn {} {@var{vers} =} netcdf.inqLibVers() Returns the version of the NetCDF library. @end deftypefn @c Low-level functions netcdf.inqNcid @c ----------------------------------------- @subsection netcdf.inqNcid @cindex inqNcid @deftypefn {} {@var{grp_ncid} =} netcdf.inqNcid(@var{ncid},@var{name}) Return group id based on its name @xseealso{netcdf.inqGrpFullNcid} @end deftypefn @c Low-level functions netcdf.inqUnlimDims @c ----------------------------------------- @subsection netcdf.inqUnlimDims @cindex inqUnlimDims @deftypefn {} {@var{unlimdimids} =} netcdf.inqUnlimDims(@var{ncid}) Return the id of all unlimited dimensions of the NetCDF file @var{ncid}. @end deftypefn @c Low-level functions netcdf.inqUserType @c ----------------------------------------- @subsection netcdf.inqUserType @cindex inqUserType @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf.inqUserType(@var{ncid},@var{typeid}) Provide information on a user defined type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, base type id, number of fields and class identifier of the type. @end deftypefn @c Low-level functions netcdf.inqVar @c ----------------------------------------- @subsection netcdf.inqVar @cindex inqVar @deftypefn {} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf.inqVar (@var{ncid},@var{varid}) Inquires information about a NetCDF variable. This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an integer corresponding NetCDF constants. @xseealso{netcdf.inqVarID,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.inqVarChunking @c ----------------------------------------- @subsection netcdf.inqVarChunking @cindex inqVarChunking @deftypefn {} {[@var{storage},@var{chunkSizes}] = } netcdf.inqVarChunking (@var{ncid},@var{varid}) Determines the chunking settings of NetCDF variable @var{varid}. If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. @end deftypefn @c Low-level functions netcdf.inqVarDeflate @c ----------------------------------------- @subsection netcdf.inqVarDeflate @cindex inqVarDeflate @deftypefn {} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf.inqVarDeflate (@var{ncid},@var{varid}) Determines the compression settings NetCDF variable @var{varid}. If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). @end deftypefn @c Low-level functions netcdf.inqVarFill @c ----------------------------------------- @subsection netcdf.inqVarFill @cindex inqVarFill @deftypefn {} {[@var{no_fill},@var{fillvalue}] = } netcdf.inqVarFill(@var{ncid},@var{varid}) Determines the fill-value settings of the NetCDF variable @var{varid}. If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. @end deftypefn @c Low-level functions netcdf.inqVarFletcher32 @c ----------------------------------------- @subsection netcdf.inqVarFletcher32 @cindex inqVarFletcher32 @deftypefn {} {@var{checksum} =} netcdf.inqVarFletcher32(@var{ncid},@var{varid}) Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM". @end deftypefn @c Low-level functions netcdf.inqVarID @c ----------------------------------------- @subsection netcdf.inqVarID @cindex inqVarID @deftypefn {} {@var{varid} = } netcdf.inqVarID (@var{ncid},@var{name}) Return the id of a variable based on its name. @xseealso{netcdf.defVar,netcdf.inqVarIDs} @end deftypefn @c Low-level functions netcdf.inqVarIDs @c ----------------------------------------- @subsection netcdf.inqVarIDs @cindex inqVarIDs @deftypefn {} {@var{varids} = } netcdf.inqVarID (@var{ncid}) Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group. @xseealso{netcdf.inqVarID} @end deftypefn @c Low-level functions netcdf.inqVlen @c ----------------------------------------- @subsection netcdf.inqVlen @cindex inqVlen @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf.inqVlen(@var{ncid},@var{typeid}) Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}. The function returns the typename, bytesize, and base type id. @end deftypefn @c Low-level functions netcdf.open @c ----------------------------------------- @subsection netcdf.open @cindex open @deftypefn {} {@var{ncid} =} netcdf.open(@var{filename},@var{mode}) Opens the file named @var{filename} in the mode @var{mode}. @end deftypefn @c Low-level functions netcdf.putAtt @c ----------------------------------------- @subsection netcdf.putAtt @cindex putAtt @deftypefn {} {} netcdf.putAtt (@var{ncid},@var{varid},@var{name},@var{data}) Defines a NetCDF attribute. This function defines the attribute called @var{name} of the variable @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. For global attributes @var{varid} can be netcdf.getConstant("global"). @xseealso{netcdf.getAtt} @end deftypefn @c Low-level functions netcdf.putVar @c ----------------------------------------- @subsection netcdf.putVar @cindex putVar @deftypefn {} {} netcdf.putVar (@var{ncid},@var{varid},@var{data}) @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{data}) @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) Put data in a NetCDF variable. The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), @var{count} is the number of elements of to be written along each dimension (default all elements) and @var{stride} is the sampling interval. @end deftypefn @c Low-level functions netcdf.reDef @c ----------------------------------------- @subsection netcdf.reDef @cindex reDef @deftypefn {} {} netcdf.reDef (@var{ncid}) Enter define-mode of NetCDF file @var{ncid}. @end deftypefn @c Low-level functions netcdf.renameAtt @c ----------------------------------------- @subsection netcdf.renameAtt @cindex renameAtt @deftypefn {} {} netcdf.renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute. To rename a global attribute use netcdf.getConstant("global") for @var{varid}. @xseealso{netcdf.copyAtt,netcdf.getConstant} @end deftypefn @c Low-level functions netcdf.renameDim @c ----------------------------------------- @subsection netcdf.renameDim @cindex renameDim @deftypefn {} {} netcdf.renameDim(@var{ncid},@var{dimid},@var{name}) Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension. @end deftypefn @c Low-level functions netcdf.renameVar @c ----------------------------------------- @subsection netcdf.renameVar @cindex renameVar @deftypefn {} {} netcdf.renameVar(@var{ncid},@var{varid},@var{name}) Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable. @end deftypefn @c Low-level functions netcdf.setChunkCache @c ----------------------------------------- @subsection netcdf.setChunkCache @cindex setChunkCache @deftypefn {} {} netcdf.setChunkCache(@var{size}, @var{nelems}, @var{preemption}) Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created. @end deftypefn @c Low-level functions netcdf.setDefaultFormat @c ----------------------------------------- @subsection netcdf.setDefaultFormat @cindex setDefaultFormat @deftypefn {} {@var{old_format} =} netcdf.setDefaultFormat(@var{format}) Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic". @end deftypefn @c Low-level functions netcdf.setFill @c ----------------------------------------- @subsection netcdf.setFill @cindex setFill @deftypefn {} {@var{old_mode} =} netcdf.setFill(@var{ncid},@var{fillmode}) Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either "fill" or "nofill". @end deftypefn @c Low-level functions netcdf.sync @c ----------------------------------------- @subsection netcdf.sync @cindex sync @deftypefn {} {} netcdf.sync(@var{ncid}) Writes all changes to the disk and leaves the file open. @end deftypefn @c --------------------------------------------------- @node Import functions (Deprecated) @section Import functions (Deprecated) @cindex Import functions (Deprecated) @c Import functions (Deprecated) import_netcdf @c ----------------------------------------- @subsection import_netcdf @cindex import_netcdf @deftypefn {} {} import_fits Dummy function provided to provide compatibility with older versions of GNU Octave netcdf Function is deprecated. @end deftypefn @c --------------------------------------------------- @node Test function @section Test function @cindex Test function @c Test function test_netcdf @c ----------------------------------------- @subsection test_netcdf @cindex test_netcdf @deftypefn {} {} test_netcdf Function to do a basic test of the netcdf interface @end deftypefn netcdf-1.0.17/doc/gpl.texi0000644000000000000000000010433014502076114013454 0ustar0000000000000000@node Copying @appendix GNU General Public License @cindex warranty @cindex copyright @center Version 3, 29 June 2007 @display Copyright @copyright{} 2007 Free Software Foundation, Inc. @url{http://fsf.org/} Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @end display @heading Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program---to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. @heading TERMS AND CONDITIONS @enumerate 0 @item Definitions. ``This License'' refers to version 3 of the GNU General Public License. ``Copyright'' also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. ``The Program'' refers to any copyrightable work licensed under this License. Each licensee is addressed as ``you''. ``Licensees'' and ``recipients'' may be individuals or organizations. To ``modify'' a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a ``modified version'' of the earlier work or a work ``based on'' the earlier work. A ``covered work'' means either the unmodified Program or a work based on the Program. To ``propagate'' a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To ``convey'' a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays ``Appropriate Legal Notices'' to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. @item Source Code. The ``source code'' for a work means the preferred form of the work for making modifications to it. ``Object code'' means any non-source form of a work. A ``Standard Interface'' means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The ``System Libraries'' of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A ``Major Component'', in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The ``Corresponding Source'' for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. @item Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. @item Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. @item Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. @item Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: @enumerate a @item The work must carry prominent notices stating that you modified it, and giving a relevant date. @item The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to ``keep intact all notices''. @item You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. @item If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. @end enumerate A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an ``aggregate'' if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. @item Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: @enumerate a @item Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. @item Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. @item Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. @item Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. @item Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. @end enumerate A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A ``User Product'' is either (1) a ``consumer product'', which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, ``normally used'' refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. ``Installation Information'' for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. @item Additional Terms. ``Additional permissions'' are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: @enumerate a @item Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or @item Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or @item Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or @item Limiting the use for publicity purposes of names of licensors or authors of the material; or @item Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or @item Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. @end enumerate All other non-permissive additional terms are considered ``further restrictions'' within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. @item Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. @item Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. @item Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An ``entity transaction'' is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. @item Patents. A ``contributor'' is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's ``contributor version''. A contributor's ``essential patent claims'' are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, ``control'' includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a ``patent license'' is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To ``grant'' such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. ``Knowingly relying'' means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is ``discriminatory'' if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. @item No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. @item Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. @item Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License ``or any later version'' applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. @item Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. @item Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. @item Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. @end enumerate @heading END OF TERMS AND CONDITIONS @heading How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the ``copyright'' line and a pointer to where the full notice is found. @smallexample @var{one line to give the program's name and a brief idea of what it does.} Copyright (C) @var{year} @var{name of author} This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see @url{http://www.gnu.org/licenses/}. @end smallexample Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: @smallexample @var{program} Copyright (C) @var{year} @var{name of author} This program comes with ABSOLUTELY NO WARRANTY; for details type @samp{show w}. This is free software, and you are welcome to redistribute it under certain conditions; type @samp{show c} for details. @end smallexample The hypothetical commands @samp{show w} and @samp{show c} should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an ``about box''. You should also get your employer (if you work as a programmer) or school, if any, to sign a ``copyright disclaimer'' for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see @url{http://www.gnu.org/licenses/}. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read @url{http://www.gnu.org/philosophy/why-not-lgpl.html}. netcdf-1.0.17/doc/macros.texi0000644000000000000000000000624114502076114014160 0ustar0000000000000000@c Copyright (C) 2012-2019 John W. Eaton @c @c This file is part of Octave. @c @c Octave is free software: you can redistribute it and/or modify it @c under the terms of the GNU General Public License as published by @c the Free Software Foundation, either version 3 of the License, or @c (at your option) any later version. @c @c Octave is distributed in the hope that it will be useful, but @c WITHOUT ANY WARRANTY; without even the implied warranty of @c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the @c GNU General Public License for more details. @c @c You should have received a copy of the GNU General Public License @c along with Octave; see the file COPYING. If not, see @c . @c The following macro marks words that aspell should ignore during @c spellchecking. Within Texinfo it has no effect as it merely replaces @c the macro call with the argument itself. @macro nospell {arg} \arg\ @end macro @c The following macro works around the Info/plain text expansion of @code{XXX} @c which is `XXX'. This looks particularly bad when the macro body is @c single or double-quoted text, such as a property value `"position"' @ifinfo @macro qcode{arg} \arg\ @end macro @end ifinfo @ifnotinfo @macro qcode{arg} @code{\arg\} @end macro @end ifnotinfo @c The following macro is used for the on-line help system, but we don't @c want lots of `See also: foo, bar, and baz' strings cluttering the @c printed manual (that information should be in the supporting text for @c each group of functions and variables). @c @c Implementation Note: @c For TeX, @vskip produces a nice separation. @c For Texinfo, '@sp 1' should work, but in practice produces ugly results @c for HTML. We use a simple blank line to produce the correct @c behavior. @c @c We use @xseealso now because Texinfo introduced its own @seealso @c command. But instead of modifying all source files, we'll have the @c munge-texi script convert @seealso to @xseealso. @macro xseealso {args} @iftex @vskip 2pt @end iftex @ifnottex @end ifnottex @ifnotinfo @noindent @strong{See also:} \args\. @end ifnotinfo @ifinfo @noindent See also: \args\. @end ifinfo @end macro @c The following macro works around a situation where the Info/plain text @c expansion of the @code{XXX} macro is `XXX'. The use of the apostrophe @c can be confusing if the code segment itself ends with a transpose operator. @ifinfo @macro tcode{arg} \arg\ @end macro @end ifinfo @ifnotinfo @macro tcode{arg} @code{\arg\} @end macro @end ifnotinfo @c FIXME: someday, when Texinfo 5.X is standard, we might replace this with @c @backslashchar, which is a new addition to Texinfo. @macro xbackslashchar \\ @end macro @c These may be useful for all, not just for octave.texi. @tex \ifx\rgbDarkRed\thisisundefined \def\rgbDarkRed{0.50 0.09 0.12} \fi \ifx\linkcolor\thisisundefined \relax \else \global\def\linkcolor{\rgbDarkRed} \fi \ifx\urlcolor\thisisundefined \relax \else \global\def\urlcolor{\rgbDarkRed} \fi \ifx\urefurlonlylinktrue\thisisundefined \relax \else \global\urefurlonlylinktrue \fi @end tex @c Make the apostrophe in code examples cut-and-paste friendly. @codequoteundirected on netcdf-1.0.17/doc/octave-netcdf.css0000644000000000000000000000133714502076114015236 0ustar0000000000000000pre.example, .header, .float-caption, hr { /* base00 ~ body text in light solarized theme */ color: #657b83; border-color: #657b83; } pre.example { /* base3 ~ background color in light solarized theme */ background-color: #fdf6e3; padding: 0.5em; } table.cartouche { border: 1px solid #948473; background-color: #FFE3C6; width: 100%; } table.cartouche td, table.cartouche th { border: 1px solid #948473; padding: 4px 4px; } /* newer texinfo generation styles */ div.example { /* base00 ~ body text in light solarized theme */ color: #657b83; border-color: #657b83; } pre.example-preformatted { /* base3 ~ background color in light solarized theme */ background-color: #fdf6e3; padding: 0.5em; } netcdf-1.0.17/doc/octave-netcdf.html0000644000000000000000000071267014502076114015423 0ustar0000000000000000 Octave NetCDF - A NetCDF interface for Octave

Introduction

The Octave NetCDF toolkit is a set of NetCDF routines for GNU Octave

Table of Contents


1 Installing and loading

The toolkit must be installed and then loaded to be used.

It can be installed in GNU Octave directly from the website, or can be installed in an off-line mode via a downloaded tarball.

The toolkit has a dependency on the netcdf library (https://www.unidata.ucar.edu/software/netcdf/), so it must be installed in order to successfully install the toolkit.

The toolkit must be then be loaded once per each GNU Octave session in order to use its functionality.

1.1 Online Direct install

With an internet connection available, the package can be installed from octave-forge using the following command within GNU Octave:

pkg install -forge netcdf

The latest released version of the toolkit will be downloaded and installed.

1.2 Off-line install

With the toolkit package already downloaded, and in the current directory when running GNU Octave, the package can be installed using the following command within GNU Octave:

pkg install netcdf-1.0.17.tar.gz

1.3 Loading

Regardless of the method of installing the toolkit, in order to use its functions, the toolkit must be loaded using the pkg load command:

pkg load netcdf

The toolkit must be loaded on each GNU Octave session.


2 Basic Usage Overview

The toolkit provides high and level functionality for reading and writing NetCDF format files.

2.1 High level functionality

The toolkit provides the following high level functions:

  • nccreate
  • ncdisp
  • ncinfo
  • ncreadatt
  • ncread
  • ncwriteatt
  • ncwrite
  • ncwriteschema

2.2 Low level functionality

The package aims to implement the netcdf interface of MATLAB in GNU Octave, however GNU Octave does not support the import function.

Functions can be used in netcdf_functionname format, or an emulated import can be done using the import_netcdf script so that functions can be used in netcdf.functionname format.


3 Function Reference

The functions currently available in the toolkit are described below;


3.1 High-level functions

3.1.1 nccreate

Function File: nccreate(filename,varname)
Function File: nccreate(filename,varname,"property",value,...)

Create the variable varname in the file filename.

Properties

The following properties can be used:

  • "Dimensions": a cell array with the dimension names followed by their length or Inf if the dimension is unlimited. If the property is omitted, a scalar variable is created.
  • "Datatype": a string with the Octave data type name (see ncinfo for the correspondence between Octave and NetCDF data types). The default data type is a "double".
  • "Format": This can be "netcdf4_classic" (default), "classic", "64bit" or "netcdf4".
  • "FillValue": the value used for undefined elements of the NetCDF variable.
  • "ChunkSize": the size of the data chunks. If omitted, the variable is not chunked.
  • "DeflateLevel": The deflate level for compression. It can be the string "disable" (default) for no compression or an integer between 0 (no compression) and 9 (maximum compression).
  • "Shuffle": true for enabling the shuffle filter or false (default) for disabling it.

Example

 nccreate("test.nc","temp","Dimensions",{"lon",10,"lat",20},"Format","classic");
 ncdisp("test.nc");

See also: ncwrite.

3.1.2 ncdisp

Function File: ncdisp (filename)

Display meta-data of the NetCDF file filename

Example

 ncdisp("test.nc");

See also: ncinfo.

3.1.3 ncinfo

Function File: info = ncinfo (filename)
Function File: info = ncinfo (filename, varname)
Function File: info = ncinfo (filename, groupname)

Return information about an entire NetCDF file filename (i.e. the root group "/"), about the variable called varname or the group called groupname.

The structure info has always the following fields:

  • Filename: the name of the NetCDF file
  • Format: one of the strings "CLASSIC", "64BIT", "NETCDF4" or "NETCDF4_CLASSIC"

The structure info has additional fields depending on whether a group of variable is queried.

Groups

Groups are returned as an array structure with the following fields:

  • Name: the group name. The root group is named "/".
  • Dimensions: a array structure with the dimensions.
  • Variables: a array structure with the variables.
  • Attributes: a array structure with global attributes.
  • Groups: a array structure (one for each group) with the same fields as this structure.

Dimensions

Dimensions are returned as an array structure with the following fields:

  • Name: the name of the dimension
  • Length: the length of the dimension
  • Unlimited: true of the dimension has no fixed limited, false

Variables

Variables are returned as an array structure with the following fields:

  • Name: the name of the dimension
  • Dimensions: array structure of all dimensions of this variable with the same structure as above.
  • Size: array with the size of the variable
  • Datatype: string with the corresponding octave data-type (see below)
  • Attributes: a array structure of attributes
  • FillValue: the NetCDF fill value of the variable. If the fill value is not defined, then this attribute is an empty array ([]).
  • DeflateLevel: the NetCDF deflate level between 0 (no compression) and 9 (maximum compression).
  • Shuffle: is true if the shuffle filter is activated to improve compression, otherwise false.
  • CheckSum: is set to "fletcher32", if check-sums are used, otherwise this field is not defined.

Attributes

Attributes are returned as an array structure with the following fields:

  • Name: the name of the attribute
  • Value: the value of the attribute (with the corresponding type)
  • Unlimited: true of the dimension has no fixed limited, false

Data-types

The following the the correspondence between the Octave and NetCDF data-types:

Octave typeNetCDF type
int8NC_BYTE
uint8NC_UBYTE
int16NC_SHORT
uint16NC_USHORT
int32NC_INT
uint32NC_UINT
int64NC_INT64
uint64NC_UINT64
singleNC_FLOAT
doubleNC_DOUBLE
charNC_CHAR

The output of ncinfo can be used to create a NetCDF file with the same meta-data using ncwriteschema.

Note: If there are no attributes (or variable or groups), the corresponding field is an empty matrix and not an empty struct array for compatibility with matlab.

See also: ncread,nccreate,ncwriteschema,ncdisp.

3.1.4 ncread

Function File: x = ncread (filename, varname)
Function File: x = ncread (filename, varname,start,count,stride)

Read the variable varname from the NetCDF file filename.

If start,count and stride are present, a subset of the variable is loaded. The parameter start contains the starting indices (1-based), count is the number of elements and stride the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable. Elements of count might be Inf which means that as many values as possible are loaded.

If the variable has the _FillValue attribute, then the corresponding values are replaced by NaN (except for characters). NetCDF attributes scale_factor (default 1) and add_offset (default 0) are use the transform the variable during the loading:

x = scale_factor * x_in_file + add_offset

The output data type matches the NetCDF datatype, except when the attributes _FillValue, add_offset or scale_factor are defined in which case the output is a array in double precision.

Note that values equal to the attribute missing_value are not replaced by NaN (for compatibility).

Example

Read the data from variable ’mydata’ in the file test.nc.

 data  = ncread('test.nc','mydata');

See also: ncwrite,ncinfo,ncdisp.

3.1.5 ncreadatt

Function File: val = ncreadatt(filename,varname,attname)

Return the attribute attname of the variable varname in the file filename.

Global attributes can be accessed by using "/" or the group name as varname. The type of attribute is mapped to the Octave data types. (see ncinfo).

Example

Read global attribute ’creation_date’

 d = ncreadatt('test.nc','/','creation_date')

Read atribute ’myattr’ assigned to variable mydata.

 d = ncreadattr('test.nc', 'mydata', 'myattr');

See also: ncinfo,ncwriteatt.

3.1.6 ncwrite

Function File: ncwrite (filename, varname, x)
Function File: ncwrite (filename, varname, x, start, stride)

Write array x to the the variable varname in the NetCDF file filename.

The variable with the name varname and the appropriate dimension must already exist in the NetCDF file.

If start and stride are present, a subset of the variable is written. The parameter start contains the starting indices (1-based) and stride the increment between two successive elements. These parameters are vectors whose length is equal to the number of dimension of the variable.

If the variable has the _FillValue attribute, then the values equal to NaN are replaced by corresponding fill value NetCDF attributes scale_factor (default 1) and add_oddset (default 0) are use the transform the variable during writing:

x_in_file = (x - add_offset)/scale_factor

Example

Create a netcdf file with a variable of ’mydata’ and then write data to that variable.

 nccreate('myfile.nc','mydata');
 ncwrite('myfile.nc','mydata', 101);

See also: ncread,nccreate.

3.1.7 ncwriteatt

Function File: ncwriteatt(filename,varname,attname,val)

Defines the attribute attname of the variable varname in the file filename with the value val.

Global attributes can be defined by using "/" or the group name as varname. The type of value is mapped to the NetCDF data types. (see ncinfo).

Example

Create a netcdf4 format file with a variable mydata and assign an attribute "units" to it.

 nccreate("myfile.nc", "mydata", "Format", "netcdf4");
 ncwriteatt("myfile.nc", "mydata", "Units", "K");

See also: ncinfo.

3.1.8 ncwriteschema

Function File: ncwriteschema (filename, schema)

Create a NetCDF called filename with the dimensions, attributes, variables and groups given by the structure schema.

The variable schema has the same structure as the results of ncinfo. ncinfo and ncwriteschema can be used together to create a NetCDF using another file as a template:

Example

 schema = ncinfo("template.nc");
 # the new file should be named "new_file.nc"
 ncwriteschema("new_file.nc",schema);

Unused field in schema such as ChunkSize, Shuffle, DeflateLevel, FillValue, Checksum can be left-out if the corresponding feature is not used.

Dimensions are considered as limited if the field Unlimited is missing, unless the dimension length is Inf.

See also: ncinfo.


3.2 Low-level functions (Deprecated)

3.2.1 netcdf_abort

Loadable Function: netcdf_abort(ncid)

Aborts all changes since the last time the dataset entered in define mode.

See also: netcdf_reDef.

3.2.2 netcdf_close

Loadable Function: netcdf_close(ncid)

Close the NetCDF file with the id ncid.

See also: netcdf_open.

3.2.3 netcdf_copyAtt

Loadable Function: netcdf_copyAtt (ncid,varid,name,ncid_out,varid_out)

Copies the attribute named old_name of the variable varid in the data set ncid to the variable varid_out in the data set ncid_out. To copy a global attribute use netcdf_getConstant("global") for varid or varid_out.

See also: netcdf_getAtt,netcdf_getConstant.

3.2.4 netcdf_create

Loadable Function: ncid = netcdf_create(filename,mode)

Creates the file named filename in the mode mode which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). mode can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or.

Example

mode =  bitor(netcdf.getConstant("classic_model"), ...
netcdf.getConstant("netcdf4")); 
ncid = netcdf.create("test.nc",mode); 

See also: netcdf_close.

3.2.5 netcdf_defDim

Loadable Function: dimid = netcdf_defDim(ncid,name,len)

Define the dimension with the name name and the length len in the dataset ncid. The id of the dimension is returned.

See also: netcdf_defVar.

3.2.6 netcdf_defGrp

Loadable Function: new_ncid = netcdf_defGrp(ncid,name)

Define a group in a NetCDF file.

See also: netcdf_inqGrps.

3.2.7 netcdf_defVar

Loadable Function: varid = netcdf_defVar(ncid,name,xtype,dimids)

Defines a variable with the name name in the dataset ncid. xtype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The parameter dimids define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned.

See also: netcdf_open,netcdf_defDim.

3.2.8 netcdf_defVarChunking

Loadable Function: netcdf_defVarChunking (ncid,varid,storage,chunkSizes)

Define the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

See also: netcdf_inqVarChunking.

3.2.9 netcdf_defVarDeflate

Loadable Function: netcdf_defVarDeflate (ncid,varid,shuffle,deflate,deflate_level)

Define the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

See also: netcdf_inqVarDeflate.

3.2.10 netcdf_defVarFill

Loadable Function: netcdf_defVarFill(ncid,varid,no_fill,fillvalue)

Define the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

See also: netcdf_inqVarFill.

3.2.11 netcdf_defVarFletcher32

Loadable Function: netcdf_defVarFletcher32(ncid,varid,checksum)

Defines the checksum settings of the variable with the id varid in the data set ncid. If checksum is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If checksum is "NOCHECKSUM", then checksums will be disabled.

See also: netcdf_defVar,netcdf_inqVarFletcher32.

3.2.12 netcdf_defVlen

Loadable Function: varid = netcdf_defVlen(ncid,typename,basetype)

Defines a NC_VLEN variable length array type with the type name typename and a base datatype of basetype in the dataset ncid. basetype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf_getConstant. The new data type id is returned.

See also: netcdf_open,netcdf_defVar, netcdf_inqVlen.

3.2.13 netcdf_delAtt

Loadable Function: netcdf_delAtt(ncid,varid,name)

Deletes the attribute named name of the variable varid in the data set ncid. To delete a global attribute use netcdf_getConstant("global") for varid.

See also: netcdf_defAtt,netcdf_getConstant.

3.2.14 netcdf_endDef

Loadable Function: netcdf_endDef (ncid)

Leaves define-mode of NetCDF file ncid.

See also: netcdf_reDef.

3.2.15 netcdf_getAtt

Loadable Function: data = netcdf_getAtt (ncid,varid,name)

Get the value of a NetCDF attribute. This function returns the value of the attribute called name of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_putAtt.

3.2.16 netcdf_getChunkCache

Loadable Function: [size, nelems, preemption] = netcdf_getChunkCache()

Gets the default chunk cache settings in the HDF5 library.

See also: netcdf_setChunkCache.

3.2.17 netcdf_getConstant

Loadable Function: value = netcdf_getConstant(name)

Returns the value of a NetCDF constant called name.

See also: netcdf_getConstantNames.

3.2.18 netcdf_getConstantNames

Loadable Function: value = netcdf_getConstantNames()

Returns a list of all constant names.

See also: netcdf_getConstant.

3.2.19 netcdf_getVar

Loadable Function: data = netcdf_getVar (ncid,varid)
Loadable Function: data = netcdf_getVar (ncid,varid,start)
Loadable Function: data = netcdf_getVar (ncid,varid,start,count)
Loadable Function: data = netcdf_getVar (ncid,varid,start,count,stride)

Get the data from a NetCDF variable. The data data is loaded from the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

See also: netcdf_putVar.

3.2.20 netcdf_inq

Loadable Function: vers = netcdf_inqLibVers()

Returns the version of the NetCDF library.

See also: netcdf_open.

3.2.21 netcdf_inqAtt

Loadable Function: name = netcdf_inqAttName (ncid,varid,attnum)

Get the name of a NetCDF attribute. This function returns the name of the attribute with the id attnum of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_inqAttName.

3.2.22 netcdf_inqAttID

Loadable Function: attnum = netcdf_inqAttID(ncid,varid,attname)

Return the attribute id attnum of the attribute named attname of the variable varid in the dataset ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_inqAttName.

3.2.23 netcdf_inqAttName

Loadable Function: name = netcdf_inqAttName (ncid,varid,attnum)

Get the name of a NetCDF attribute. This function returns the name of the attribute with the id attnum of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_inqAttName.

3.2.24 netcdf_inqDim

Loadable Function: [name,length] = netcdf_inqDim(ncid,dimid)

Returns the name and length of a NetCDF dimension.

See also: netcdf_inqDimID.

3.2.25 netcdf_inqDimID

Loadable Function: dimid = netcdf_inqDimID(ncid,dimname)

Return the id of a NetCDF dimension.

See also: netcdf_inqDim.

3.2.26 netcdf_inqDimIDs

Loadable Function: dimids = netcdf_inqDimID(ncid)
Loadable Function: dimids = netcdf_inqDimID(ncid,include_parents)

Return the dimension ids defined in a NetCDF file. If include_parents is 1, the dimension ids of the parent group are also returned. Per default this is not the case (include_parents is 0).

See also: netcdf_inqDim.

3.2.27 netcdf_inqFormat

Loadable Function: format = netcdf_inqFormat(ncid)

Return the NetCDF format of the dataset ncid. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC"

See also: netcdf_inq.

3.2.28 netcdf_inqGrpFullNcid

Loadable Function: grp_ncid = netcdf_inqGrpFullNcid(ncid,name)

Return the group id based on the full group name.

See also: netcdf_inqGrpName.

3.2.29 netcdf_inqGrpName

Loadable Function: name = netcdf_inqGrpName(ncid)

Return group name in a NetCDF file.

See also: netcdf_inqGrps.

3.2.30 netcdf_inqGrpNameFull

Loadable Function: name = netcdf_inqGrpNameFull(ncid)

Return full name of group in NetCDF file.

See also: netcdf_inqGrpName.

3.2.31 netcdf_inqGrpParent

Loadable Function: parent_ncid = netcdf_inqGrpParent(ncid)

Return id of the parent group

See also: netcdf_inqGrpName.

3.2.32 netcdf_inqGrps

Loadable Function: ncids = netcdf_inqGrps(ncid)

Return all groups ids in a NetCDF file.

See also: netcdf_inqGrps.

3.2.33 netcdf_inqLibVers

Loadable Function: vers = netcdf_inqLibVers()

Returns the version of the NetCDF library.

See also: netcdf_open.

3.2.34 netcdf_inqNcid

Loadable Function: grp_ncid = netcdf_inqNcid(ncid,name)

Return group id based on its name

See also: netcdf_inqGrpFullNcid.

3.2.35 netcdf_inqUnlimDims

Loadable Function: unlimdimids = netcdf_inqUnlimDims(ncid)

Return the id of all unlimited dimensions of the NetCDF file ncid.

See also: netcdf_inq.

3.2.36 netcdf_inqUserType

Loadable Function: [typename, bytesize, basetypeid, numfields, classid] = netcdf_inqUserType(ncid,typeid)

Provide information on a user defined type typeid in the dataset ncid.

The function returns the typename, bytesize, base type id, number of fields and class identifier of the type.

See also: netcdf_open, netcdf_defVlen, netcdf_inqVlen.

3.2.37 netcdf_inqVar

Loadable Function: [no_fill,fillvalue] = netcdf_inqVarFill(ncid,varid)

Determines the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

See also: netcdf_defVarFill.

3.2.38 netcdf_inqVarChunking

Loadable Function: [storage,chunkSizes] = netcdf_inqVarChunking (ncid,varid)

Determines the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

See also: netcdf_defVarChunking.

3.2.39 netcdf_inqVarDeflate

Loadable Function: [shuffle,deflate,deflate_level] = netcdf_inqVarDeflate (ncid,varid)

Determines the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

See also: netcdf_defVarDeflate.

3.2.40 netcdf_inqVarFill

Loadable Function: [no_fill,fillvalue] = netcdf_inqVarFill(ncid,varid)

Determines the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

See also: netcdf_defVarFill.

3.2.41 netcdf_inqVarFletcher32

Loadable Function: checksum = netcdf_inqVarFletcher32(ncid,varid)

Determines the checksum settings of the variable with the id varid in the data set ncid. If fletcher32 checksums is turned on for this variable, then checksum is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM".

See also: netcdf_defVar,netcdf_inqVarFletcher32.

3.2.42 netcdf_inqVarID

Loadable Function: varid = netcdf_inqVarID (ncid,name)

Return the id of a variable based on its name.

See also: netcdf_defVar,netcdf_inqVarIDs.

3.2.43 netcdf_inqVarIDs

Loadable Function: varids = netcdf_inqVarID (ncid)

Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group.

See also: netcdf_inqVarID.

3.2.44 netcdf_inqVlen

Loadable Function: [typename, bytesize, basetypeid] = netcdf_inqVlen(ncid,typeid)

Provide information on a NC_VLEN variable length array type typeid in the dataset ncid.

The function returns the typename, bytesize, and base type id.

See also: netcdf_open, netcdf_defVlen.

3.2.45 netcdf_open

Loadable Function: ncid = netcdf_open(filename,mode)

Opens the file named filename in the mode mode.

See also: netcdf_close.

3.2.46 netcdf_putAtt

Loadable Function: netcdf_putAtt (ncid,varid,name,data)

Defines a NetCDF attribute. This function defines the attribute called name of the variable varid in the NetCDF file ncid. The value of the attribute will be data. For global attributes varid can be netcdf_getConstant("global").

See also: netcdf_getAtt.

3.2.47 netcdf_putVar

Loadable Function: netcdf_putVar (ncid,varid,data)
Loadable Function: netcdf_putVar (ncid,varid,start,data)
Loadable Function: netcdf_putVar (ncid,varid,start,count,data)
Loadable Function: netcdf_putVar (ncid,varid,start,count,stride,data)

Put data in a NetCDF variable. The data data is stored in the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

See also: netcdf_endDef.

3.2.48 netcdf_reDef

Loadable Function: netcdf_reDef (ncid)

Enter define-mode of NetCDF file ncid.

See also: netcdf_endDef.

3.2.49 netcdf_renameAtt

Loadable Function: netcdf_renameAtt(ncid,varid,old_name,new_name)

Renames the attribute named old_name of the variable varid in the data set ncid. new_name is the new name of the attribute. To rename a global attribute use netcdf_getConstant("global") for varid.

See also: netcdf_copyAtt,netcdf_getConstant.

3.2.50 netcdf_renameDim

Loadable Function: netcdf_renameDim(ncid,dimid,name)

Renames the dimension with the id dimid in the data set ncid. name is the new name of the dimension.

See also: netcdf_defDim.

3.2.51 netcdf_renameVar

Loadable Function: netcdf_renameVar(ncid,varid,name)

Renames the variable with the id varid in the data set ncid. name is the new name of the variable.

See also: netcdf_defVar.

3.2.52 netcdf_setChunkCache

Loadable Function: netcdf_setChunkCache(size, nelems, preemption)

Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created.

See also: netcdf_getChunkCache.

3.2.53 netcdf_setDefaultFormat

Loadable Function: old_format = netcdf_setDefaultFormat(format)

Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). format can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic".

See also: netcdf_open.

3.2.54 netcdf_setFill

Loadable Function: old_mode = netcdf_setFill(ncid,fillmode)

Change the fill mode (fillmode) of the data set ncid. The previous value of the fill mode is returned. fillmode can be either "fill" or "nofill".

See also: netcdf_open.

3.2.55 netcdf_sync

Loadable Function: netcdf_sync(ncid)

Writes all changes to the disk and leaves the file open.

See also: netcdf_close.


3.3 Low-level functions

3.3.1 netcdf.abort

: netcdf.abort(ncid)

Aborts all changes since the last time the dataset entered in define mode.

3.3.2 netcdf.close

: netcdf.close(ncid)

Close the NetCDF file with the id ncid.

3.3.3 netcdf.copyAtt

: netcdf.copyAtt (ncid,varid,name,ncid_out,varid_out)

Copies the attribute named old_name of the variable varid in the data set ncid to the variable varid_out in the data set ncid_out. To copy a global attribute use netcdf.getConstant("global") for varid or varid_out.

See also: netcdf.getAtt,netcdf.getConstant.

3.3.4 netcdf.create

: ncid = netcdf.create(filename,mode)

Creates the file named filename in the mode mode which can have the following values: "clobber" (overwrite existing files), "noclobber" (prevent to overwrite existing files) "64bit_offset" (use the 64bit-offset format), "netcdf4" (use the NetCDF4, i.e. HDF5 format) or "share" (concurrent reading of the dataset). mode can also be the numeric value return by netcdf.getConstant. In the later-case it can be combined with a bitwise-or.

Example

 mode = bitor(netcdf.getConstant("classic_model"), ...
 netcdf.getConstant("netcdf4"));
 ncid = netcdf.create("test.nc",mode);

3.3.5 netcdf.defDim

: dimid = netcdf.defDim(ncid,name,len)

Define the dimension with the name name and the length len in the dataset ncid. The id of the dimension is returned.

3.3.6 netcdf.defGrp

: new_ncid = netcdf.defGrp(ncid,name)

Define a group in a NetCDF file.

See also: netcdf.inqGrps.

3.3.7 netcdf.defVar

: varid = netcdf.defVar(ncid,name,xtype,dimids)

Defines a variable with the name name in the dataset ncid. xtype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The parameter dimids define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned.

3.3.8 netcdf.defVarChunking

: netcdf.defVarChunking (ncid,varid,storage,chunkSizes)

Define the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

3.3.9 netcdf.defVarDeflate

: netcdf.defVarDeflate (ncid,varid,shuffle,deflate,deflate_level)

Define the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

3.3.10 netcdf.defVarFill

: netcdf.defVarFill(ncid,varid,no_fill,fillvalue)

Define the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

3.3.11 netcdf.defVarFletcher32

: netcdf.defVarFletcher32(ncid,varid,checksum)

Defines the checksum settings of the variable with the id varid in the data set ncid. If checksum is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If checksum is "NOCHECKSUM", then checksums will be disabled.

3.3.12 netcdf.defVlen

: varid = netcdf.defVlen(ncid,typename,basetype)

Defines a NC_VLEN variable length array type with the type name typename and a base datatype of basetype in the dataset ncid. basetype can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The new data type id is returned.

3.3.13 netcdf.delAtt

: netcdf.delAtt(ncid,varid,name)

Deletes the attribute named name of the variable varid in the data set ncid. To delete a global attribute use netcdf.getConstant("global") for varid.

See also: netcdf.defAtt,netcdf.getConstant.

3.3.14 netcdf.endDef

: netcdf.endDef (ncid)

Leaves define-mode of NetCDF file ncid.

3.3.15 netcdf.getAtt

: data = netcdf.getAtt (ncid,varid,name)

Get the value of a NetCDF attribute. This function returns the value of the attribute called name of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.putAtt.

3.3.16 netcdf.getChunkCache

: [size, nelems, preemption] = netcdf.getChunkCache()

Gets the default chunk cache settings in the HDF5 library.

3.3.17 netcdf.getConstant

: value = netcdf.getConstant(name)

Returns the value of a NetCDF constant called name.

See also: netcdf.getConstantNames.

3.3.18 netcdf.getConstantNames

: value = netcdf.getConstantNames()

Returns a list of all constant names.

3.3.19 netcdf.getVar

: data = netcdf.getVar (ncid,varid)
: data = netcdf.getVar (ncid,varid,start)
: data = netcdf.getVar (ncid,varid,start,count)
: data = netcdf.getVar (ncid,varid,start,count,stride)

Get the data from a NetCDF variable. The data data is loaded from the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

3.3.20 netcdf.inq

: [ndims,nvars,ngatts,unlimdimid] = netcdf.inq(ncid)

Return the number of dimension (ndims), the number of variables (nvars), the number of global attributes (ngatts) and the id of the unlimited dimension (unlimdimid). If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use the function netcdf.inqUnlimDims as multiple unlimite dimension exists.

3.3.21 netcdf.inqAtt

: [xtype,len] = netcdf.inqAtt(ncid,varid,name)

Get attribute type and length.

See also: netcdf.inqAttName.

3.3.22 netcdf.inqAttID

: attnum = netcdf.inqAttID(ncid,varid,attname)

Return the attribute id attnum of the attribute named attname of the variable varid in the dataset ncid. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.inqAttName.

3.3.23 netcdf.inqAttName

: name = netcdf.inqAttName (ncid,varid,attnum)

Get the name of a NetCDF attribute. This function returns the name of the attribute with the id attnum of the variable varid in the NetCDF file ncid. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.inqAttName.

3.3.24 netcdf.inqDim

: [name,length] = netcdf.inqDim(ncid,dimid)

Returns the name and length of a NetCDF dimension.

See also: netcdf.inqDimID.

3.3.25 netcdf.inqDimID

: dimid = netcdf.inqDimID(ncid,dimname)

Return the id of a NetCDF dimension.

See also: netcdf.inqDim.

3.3.26 netcdf.inqDimIDs

: dimids = netcdf.inqDimID(ncid)
: dimids = netcdf.inqDimID(ncid,include_parents)

Return the dimension ids defined in a NetCDF file. If include_parents is 1, the dimension ids of the parent group are also returned. Per default this is not the case (include_parents is 0).

See also: netcdf.inqDim.

3.3.27 netcdf.inqFormat

: format = netcdf.inqFormat(ncid)

Return the NetCDF format of the dataset ncid. Format might be one of the following "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC"

3.3.28 netcdf.inqGrpFullNcid

: grp_ncid = netcdf.inqGrpFullNcid(ncid,name)

Return the group id based on the full group name.

See also: netcdf.inqGrpName.

3.3.29 netcdf.inqGrpName

: name = netcdf.inqGrpName(ncid)

Return group name in a NetCDF file.

See also: netcdf.inqGrps.

3.3.30 netcdf.inqGrpNameFull

: name = netcdf.inqGrpNameFull(ncid)

Return full name of group in NetCDF file.

See also: netcdf.inqGrpName.

3.3.31 netcdf.inqGrpParent

: parent_ncid = netcdf.inqGrpParent(ncid)

Return id of the parent group

See also: netcdf.inqGrpName.

3.3.32 netcdf.inqGrps

: ncids = netcdf.inqGrps(ncid)

Return all groups ids in a NetCDF file.

See also: netcdf.inqGrps.

3.3.33 netcdf.inqLibVers

: vers = netcdf.inqLibVers()

Returns the version of the NetCDF library.

3.3.34 netcdf.inqNcid

: grp_ncid = netcdf.inqNcid(ncid,name)

Return group id based on its name

See also: netcdf.inqGrpFullNcid.

3.3.35 netcdf.inqUnlimDims

: unlimdimids = netcdf.inqUnlimDims(ncid)

Return the id of all unlimited dimensions of the NetCDF file ncid.

3.3.36 netcdf.inqUserType

: [typename, bytesize, basetypeid, numfields, classid] = netcdf.inqUserType(ncid,typeid)

Provide information on a user defined type typeid in the dataset ncid.

The function returns the typename, bytesize, base type id, number of fields and class identifier of the type.

3.3.37 netcdf.inqVar

: [name,nctype,dimids,nattr] = netcdf.inqVar (ncid,varid)

Inquires information about a NetCDF variable. This functions returns the name, the NetCDF type nctype, an array of dimension ids dimids and the number of attributes nattr of the NetCDF variable. nctype in an integer corresponding NetCDF constants.

See also: netcdf.inqVarID,netcdf.getConstant.

3.3.38 netcdf.inqVarChunking

: [storage,chunkSizes] = netcdf.inqVarChunking (ncid,varid)

Determines the chunking settings of NetCDF variable varid. If storage is the string "chunked", the variable is stored by chunk of the size chunkSizes. If storage is the string "contiguous", the variable is stored in a contiguous way.

3.3.39 netcdf.inqVarDeflate

: [shuffle,deflate,deflate_level] = netcdf.inqVarDeflate (ncid,varid)

Determines the compression settings NetCDF variable varid. If deflate is true, then the variable is compressed. The compression level deflate_level is an integer between 0 (no compression) and 9 (maximum compression).

3.3.40 netcdf.inqVarFill

: [no_fill,fillvalue] = netcdf.inqVarFill(ncid,varid)

Determines the fill-value settings of the NetCDF variable varid. If no_fill is false, then the values between no-contiguous writes are filled with the value fill_value. This is disabled by setting no_fill to true.

3.3.41 netcdf.inqVarFletcher32

: checksum = netcdf.inqVarFletcher32(ncid,varid)

Determines the checksum settings of the variable with the id varid in the data set ncid. If fletcher32 checksums is turned on for this variable, then checksum is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM".

3.3.42 netcdf.inqVarID

: varid = netcdf.inqVarID (ncid,name)

Return the id of a variable based on its name.

See also: netcdf.defVar,netcdf.inqVarIDs.

3.3.43 netcdf.inqVarIDs

: varids = netcdf.inqVarID (ncid)

Return all variable ids. This functions returns all variable ids in a NetCDF file or NetCDF group.

See also: netcdf.inqVarID.

3.3.44 netcdf.inqVlen

: [typename, bytesize, basetypeid] = netcdf.inqVlen(ncid,typeid)

Provide information on a NC_VLEN variable length array type typeid in the dataset ncid.

The function returns the typename, bytesize, and base type id.

3.3.45 netcdf.open

: ncid = netcdf.open(filename,mode)

Opens the file named filename in the mode mode.

3.3.46 netcdf.putAtt

: netcdf.putAtt (ncid,varid,name,data)

Defines a NetCDF attribute. This function defines the attribute called name of the variable varid in the NetCDF file ncid. The value of the attribute will be data. For global attributes varid can be netcdf.getConstant("global").

See also: netcdf.getAtt.

3.3.47 netcdf.putVar

: netcdf.putVar (ncid,varid,data)
: netcdf.putVar (ncid,varid,start,data)
: netcdf.putVar (ncid,varid,start,count,data)
: netcdf.putVar (ncid,varid,start,count,stride,data)

Put data in a NetCDF variable. The data data is stored in the variable varid of the NetCDF file ncid. start is the start index of each dimension (0-based and defaults to a vector of zeros), count is the number of elements of to be written along each dimension (default all elements) and stride is the sampling interval.

3.3.48 netcdf.reDef

: netcdf.reDef (ncid)

Enter define-mode of NetCDF file ncid.

3.3.49 netcdf.renameAtt

: netcdf.renameAtt(ncid,varid,old_name,new_name)

Renames the attribute named old_name of the variable varid in the data set ncid. new_name is the new name of the attribute. To rename a global attribute use netcdf.getConstant("global") for varid.

See also: netcdf.copyAtt,netcdf.getConstant.

3.3.50 netcdf.renameDim

: netcdf.renameDim(ncid,dimid,name)

Renames the dimension with the id dimid in the data set ncid. name is the new name of the dimension.

3.3.51 netcdf.renameVar

: netcdf.renameVar(ncid,varid,name)

Renames the variable with the id varid in the data set ncid. name is the new name of the variable.

3.3.52 netcdf.setChunkCache

: netcdf.setChunkCache(size, nelems, preemption)

Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created.

3.3.53 netcdf.setDefaultFormat

: old_format = netcdf.setDefaultFormat(format)

Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). format can be "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic".

3.3.54 netcdf.setFill

: old_mode = netcdf.setFill(ncid,fillmode)

Change the fill mode (fillmode) of the data set ncid. The previous value of the fill mode is returned. fillmode can be either "fill" or "nofill".

3.3.55 netcdf.sync

: netcdf.sync(ncid)

Writes all changes to the disk and leaves the file open.


3.4 Import functions (Deprecated)

3.4.1 import_netcdf

: import_fits

Dummy function provided to provide compatibility with older versions of GNU Octave netcdf

Function is deprecated.


3.5 Test function

3.5.1 test_netcdf

: test_netcdf

Function to do a basic test of the netcdf interface


Appendix A GNU General Public License

Version 3, 29 June 2007
Copyright © 2007 Free Software Foundation, Inc. http://fsf.org/

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Preamble

The GNU General Public License is a free, copyleft license for software and other kinds of works.

The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program—to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it.

For the developers’ and authors’ protection, the GPL clearly explains that there is no warranty for this free software. For both users’ and authors’ sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions.

Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users’ freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users.

Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS

  1. Definitions.

    “This License” refers to version 3 of the GNU General Public License.

    “Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks.

    “The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations.

    To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work.

    A “covered work” means either the unmodified Program or a work based on the Program.

    To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.

    To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

    An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion.

  2. Source Code.

    The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

    A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language.

    The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it.

    The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work’s System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work.

    The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source.

    The Corresponding Source for a work in source code form is that same work.

  3. Basic Permissions.

    All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law.

    You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you.

    Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary.

  4. Protecting Users’ Legal Rights From Anti-Circumvention Law.

    No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures.

    When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work’s users, your or third parties’ legal rights to forbid circumvention of technological measures.

  5. Conveying Verbatim Copies.

    You may convey verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program.

    You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee.

  6. Conveying Modified Source Versions.

    You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions:

    1. The work must carry prominent notices stating that you modified it, and giving a relevant date.
    2. The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”.
    3. You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
    4. If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so.

    A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation’s users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate.

  7. Conveying Non-Source Forms.

    You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways:

    1. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange.
    2. Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge.
    3. Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b.
    4. Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements.
    5. Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d.

    A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work.

    A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product.

    “Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made.

    If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM).

    The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network.

    Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying.

  8. Additional Terms.

    “Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions.

    When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission.

    Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms:

    1. Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or
    2. Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or
    3. Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or
    4. Limiting the use for publicity purposes of names of licensors or authors of the material; or
    5. Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or
    6. Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors.

    All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying.

    If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms.

    Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way.

  9. Termination.

    You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11).

    However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation.

    Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice.

    Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10.

  10. Acceptance Not Required for Having Copies.

    You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so.

  11. Automatic Licensing of Downstream Recipients.

    Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License.

    An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party’s predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts.

    You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it.

  12. Patents.

    A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor’s “contributor version”.

    A contributor’s “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License.

    Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor’s essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version.

    In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party.

    If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient’s use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid.

    If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it.

    A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007.

    Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law.

  13. No Surrender of Others’ Freedom.

    If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program.

  14. Use with the GNU Affero General Public License.

    Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such.

  15. Revised Versions of this License.

    The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation.

    If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Program.

    Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version.

  16. Disclaimer of Warranty.

    THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  17. Limitation of Liability.

    IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

  18. Interpretation of Sections 15 and 16.

    If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

one line to give the program's name and a brief idea of what it does.  
Copyright (C) year name of author

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see http://www.gnu.org/licenses/.

Also add information on how to contact you by electronic and paper mail.

If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode:

program Copyright (C) year name of author 
This program comes with ABSOLUTELY NO WARRANTY; for details type ‘show w’.
This is free software, and you are welcome to redistribute it
under certain conditions; type ‘show c’ for details.

The hypothetical commands ‘show w’ and ‘show c’ should show the appropriate parts of the General Public License. Of course, your program’s commands might be different; for a GUI interface, you would use an “about box”.

You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see http://www.gnu.org/licenses/.

The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read http://www.gnu.org/philosophy/why-not-lgpl.html.


Index

Jump to:   A   B   C   D   E   F   G   H   I   L   N   O   P   R   S   T   W  
Index Entry  Section

A
abort: Low-level functions

B
Basic Usage Overview: Basic Usage Overview

C
close: Low-level functions
copyAtt: Low-level functions
copyright: Copying
create: Low-level functions

D
defDim: Low-level functions
defGrp: Low-level functions
defVar: Low-level functions
defVarChunking: Low-level functions
defVarDeflate: Low-level functions
defVarFill: Low-level functions
defVarFletcher32: Low-level functions
defVlen: Low-level functions
delAtt: Low-level functions

E
endDef: Low-level functions

F
Function Reference: Function Reference

G
getAtt: Low-level functions
getChunkCache: Low-level functions
getConstant: Low-level functions
getConstantNames: Low-level functions
getVar: Low-level functions

H
High level functionality: Basic Usage Overview
High-level functions: High-level functions

I
Import functions (Deprecated): Import functions (Deprecated)
import_netcdf: Import functions (Deprecated)
inq: Low-level functions
inqAtt: Low-level functions
inqAttID: Low-level functions
inqAttName: Low-level functions
inqDim: Low-level functions
inqDimID: Low-level functions
inqDimIDs: Low-level functions
inqFormat: Low-level functions
inqGrpFullNcid: Low-level functions
inqGrpName: Low-level functions
inqGrpNameFull: Low-level functions
inqGrpParent: Low-level functions
inqGrps: Low-level functions
inqLibVers: Low-level functions
inqNcid: Low-level functions
inqUnlimDims: Low-level functions
inqUserType: Low-level functions
inqVar: Low-level functions
inqVarChunking: Low-level functions
inqVarDeflate: Low-level functions
inqVarFill: Low-level functions
inqVarFletcher32: Low-level functions
inqVarID: Low-level functions
inqVarIDs: Low-level functions
inqVlen: Low-level functions
Installing and loading: Installing and loading

L
Loading: Installing and loading
Low level functionality: Basic Usage Overview
Low-level functions: Low-level functions
Low-level functions (Deprecated): Low-level functions (Deprecated)

N
nccreate: High-level functions
ncdisp: High-level functions
ncinfo: High-level functions
ncread: High-level functions
ncreadatt: High-level functions
ncwrite: High-level functions
ncwriteatt: High-level functions
ncwriteschema: High-level functions
netcdf_abort: Low-level functions (Deprecated)
netcdf_close: Low-level functions (Deprecated)
netcdf_copyAtt: Low-level functions (Deprecated)
netcdf_create: Low-level functions (Deprecated)
netcdf_defDim: Low-level functions (Deprecated)
netcdf_defGrp: Low-level functions (Deprecated)
netcdf_defVar: Low-level functions (Deprecated)
netcdf_defVarChunking: Low-level functions (Deprecated)
netcdf_defVarDeflate: Low-level functions (Deprecated)
netcdf_defVarFill: Low-level functions (Deprecated)
netcdf_defVarFletcher32: Low-level functions (Deprecated)
netcdf_defVlen: Low-level functions (Deprecated)
netcdf_delAtt: Low-level functions (Deprecated)
netcdf_endDef: Low-level functions (Deprecated)
netcdf_getAtt: Low-level functions (Deprecated)
netcdf_getChunkCache: Low-level functions (Deprecated)
netcdf_getConstant: Low-level functions (Deprecated)
netcdf_getConstantNames: Low-level functions (Deprecated)
netcdf_getVar: Low-level functions (Deprecated)
netcdf_inq: Low-level functions (Deprecated)
netcdf_inqAtt: Low-level functions (Deprecated)
netcdf_inqAttID: Low-level functions (Deprecated)
netcdf_inqAttName: Low-level functions (Deprecated)
netcdf_inqDim: Low-level functions (Deprecated)
netcdf_inqDimID: Low-level functions (Deprecated)
netcdf_inqDimIDs: Low-level functions (Deprecated)
netcdf_inqFormat: Low-level functions (Deprecated)
netcdf_inqGrpFullNcid: Low-level functions (Deprecated)
netcdf_inqGrpName: Low-level functions (Deprecated)
netcdf_inqGrpNameFull: Low-level functions (Deprecated)
netcdf_inqGrpParent: Low-level functions (Deprecated)
netcdf_inqGrps: Low-level functions (Deprecated)
netcdf_inqLibVers: Low-level functions (Deprecated)
netcdf_inqNcid: Low-level functions (Deprecated)
netcdf_inqUnlimDims: Low-level functions (Deprecated)
netcdf_inqUserType: Low-level functions (Deprecated)
netcdf_inqVar: Low-level functions (Deprecated)
netcdf_inqVarChunking: Low-level functions (Deprecated)
netcdf_inqVarDeflate: Low-level functions (Deprecated)
netcdf_inqVarFill: Low-level functions (Deprecated)
netcdf_inqVarFletcher32: Low-level functions (Deprecated)
netcdf_inqVarID: Low-level functions (Deprecated)
netcdf_inqVarIDs: Low-level functions (Deprecated)
netcdf_inqVlen: Low-level functions (Deprecated)
netcdf_open: Low-level functions (Deprecated)
netcdf_putAtt: Low-level functions (Deprecated)
netcdf_putVar: Low-level functions (Deprecated)
netcdf_reDef: Low-level functions (Deprecated)
netcdf_renameAtt: Low-level functions (Deprecated)
netcdf_renameDim: Low-level functions (Deprecated)
netcdf_renameVar: Low-level functions (Deprecated)
netcdf_setChunkCache: Low-level functions (Deprecated)
netcdf_setDefaultFormat: Low-level functions (Deprecated)
netcdf_setFill: Low-level functions (Deprecated)
netcdf_sync: Low-level functions (Deprecated)

O
Off-line install: Installing and loading
Online install: Installing and loading
open: Low-level functions

P
putAtt: Low-level functions
putVar: Low-level functions

R
reDef: Low-level functions
renameAtt: Low-level functions
renameDim: Low-level functions
renameVar: Low-level functions

S
setChunkCache: Low-level functions
setDefaultFormat: Low-level functions
setFill: Low-level functions
sync: Low-level functions

T
Test function: Test function
test_netcdf: Test function

W
warranty: Copying

netcdf-1.0.17/doc/octave-netcdf.pdf0000644000000000000000000107133514502076114015225 0ustar0000000000000000%PDF-1.5 %ĐÔÅØ 1 0 obj << /Length 587 /Filter /FlateDecode >> stream xÚmTM¢@½ó+z&ÎÁ±?tBL$ñ°ăd4›½*´.‰<øï·_•è̀f’W¯_wƠ«îrđăc;̣ê`GæUOÛV×&³£øç¾öƒ¤Ê®[vïÖæ6ïWÛ7ñÑTÙÖvb¯“uYt/N¼.³ó5·½êÿ¢¥=åS‚> stream xÚmTM¢@½ó+z&ÎÁ±?tBL0ñ°ăd4›½*´.‰<̀¿ß~U¢Îf’W¯_u½ªîvđăc;ZäƠÁ̀«Ÿ¶­®MfGñÏ}í I•]/¶́̃­Ím̃¯¶o⣩²­íÄ0^'ë²è^œx]fçkn{ƠÿEK{*ʇuÄpg6;µ̃$4»¢;»µgZ8, ’ü²M[Tå›P¯RJG¤eWxm½ñ­÷E™7·¢â ̉"/²îÑ7»¸¦‘¼ưj;{Y—ÇÊ‹"1₫t‹m×|‘£o¼irÛåI É‘c¶×º>[T̉›ÏEnn#×Ûû₫bÅø¹‘û̉î«¶BS¬ØEVå¶­÷™möåÉz‘”s…«¹gËüŸµ)gÏR©đ133wÄ xAÄbêí;¬̉aGL6K& 0+‡}&ö"?‘á°(̉¦̉a/ ¡ć,•!£½¥‰î-fö3¤Ù*IĂx {aªùđ”sIC%̉đhSô¢¨7å£Å}­HÏ=ŤIYƒ¹(îƒêjŧ ÿZóéàü4{ÖØSOØá5˜‡áZ ä®ekxvKº·Ǭü÷…Ü@2aÂ> stream xÚmSÁnâ0½ç+¼$z Ø¨"¤€ÄaKU¢Ơ^C<ĐHàDN8đ÷ờV{Hôüæç=üúØS`¾Jñ m}u%Œ̉ßE Y]^/`»w¦¶oâĂƠå:1L·ÙÖVƯ‹omy¾èUÿ­àTÙ ÖĂ₫v¹Êó‘DM^ug{¦…Ç‚° ÉpmUÛ7¡^¥”X[“ÖôÚă{=1î+kܽ¨8 …@iaª²»¯è_^|Ó˜¼¿µ\¶öXq,ÆŸ>ØvîF^‚ñÎp•=‰!9̣̀₫Ú4gÀêBË¥0pôù̃̃‹ ˆñs#P~k@hZ+vQÖÚ¦(ÁöA,åRÄÑf€5ÿĦœq8>K¥Â_¸—X NˆHæĐÔ3$¤Ç˜{<Ư0*¢5cƠ~ÿP÷ơʯÂùƯ5WÂ42^!0^#rq‰xƘœE„3xÎü ñ ªz“)c̉gl1B̀î̉°ơ•?ŸXqû!̣NA‡¨W»A*dư1ùÔ)iȧΰÅç“Đó â9ç’†NVf¤¡–kô¯VäaUJü†ố?%Í5Ø»bÿTW£=ј«±®–¾Œ¿É5ëñ2éfè&p2pj³V^ócH£Mc†VYxLS7˜E=›₫1âj· ¾gÈÈ endstream endobj 6 0 obj << /Length 308 /Filter /FlateDecode >> stream xÚ…‘ÍNĂ0„ïy C¯×¿W(­ÔC(œP¨$m$¢¤Ă3À©mq›¹¬¨ ªˆ‰‹¬e(+Ȱ!³ÍD²=w»áØwïéjd[2Ï)ŒA¢Ó.å ̣¬#o#V›ûÙôm›v@q6èÀđÑ@àÚЧÓ@eĐƒ ü4Ÿ%Ê“ë₫ĐåF}×ï©Äsók/>‚?[Aˆ‘¦V>¥˜~÷ endstream endobj 13 0 obj << /Length 663 /Filter /FlateDecode >> stream xÚ}TMÚ0½ó+r ̉âḾ8 ×~l¥=U·¶‡,1ÁÚ$F¡ê¿ïŒÇ^ »ªÈxx÷^(³>eÖđ¬ikE“í§Uá³vÈ(øñmU\%“•€ø¿°ä̉ă6IƠO»Ơă“”YY°m±-³ƯÛ–²fb›íú́g₫ּٜÍÿZ=1pëß»çLVŒ7Đ’ p{̀?>ƠUZk#X! u‚ûU”’ ·mË †«aRâçøë"6Ç£*ÿbfCƒœ•Ÿ¤d¿VVă NPäû7¹²“^mà~Uñ\/øù`×ẽ͈pª§œ3„™ºW“NƯÜSĐëÅYưrvàœBÙ—Îé‰2{s̉j!´9ĐÓcˉڻ‘~9Yƒç‹†Iz¨ ßñJX-Ù‹7,lµ'ˆ'f6NïÑåGÆ€ăϧơæ–ŒwwlNV-Ê^<¡ á3t…©ưĐ óĂ‚’m2/*[_uhÓÖà¯>‹¬´$&P|Æ5éä7 Ï·_U±FP»…6¨†¯~Œ'êëƠÀóyî• g˜{í|•`µ2ÙqÛ°6lx0pUđ:'Ú¢'0÷Đóđ€™†toA÷̃ó ẃ\ŒZbFÛaΣƒBt„yơU&HüÁƒ±¯ṭÊ#́± ›ÆvwNk+VË-­å@´%Xà@ÊwÁ$@P{k'‘Ø©ÊÉÔô~é}7?{_Y±Hn!®cÔ-“ücû`ƺ±OÚájŸ›"µđªÁưéHădÑ눷Nñ½©£‰¥ °hé0vópÆ?–Áë÷pO®”LÔÜ(ƒ†C6–nRq₫7ëQ›À9Mă·‰ñ1™ßÓºúº[ư£¢¤Ï endstream endobj 19 0 obj << /Length 1128 /Filter /FlateDecode >> stream xÚ•VKoă6¾çWèVˆiñ%J½mw›E‹b·(ÜÓbEÛBmÉä¤ù÷ᶤ$kĂÑp8óÍ‹C‘¤đ'+›++›lw©çv»„ˆ¿>߉ §âF+ (¶4̉x¹åHë/ë»ƠC.¡¹̉™LÖ[oVf<5:YWÉ7ö©î‡®~<uÛ,¾¯_=“ˆ”i!P¨<"•Ü₫ga,+wA îƒ©âSRg\djjjÛ9w¢̀2nS==×·Û1<#IJs|±ÔJ±‡EnªôæB ~-i9–Ă;‚uømY»%₫°̣ç̃uưOD#ܪ="âDđT^ë++·Öº¡],èêÎÍ=PyÁ6í ‘¼,rÁ«Ơà£ÎÈ(A¶l_6ae3V6©­§®ÅÍ'Ôéˆéñ"1̣Ú†ĐˆÊz£ÀÑ•M•)wO(îº\ÚÆ½åḅL½2éè)ï4¬/"êVÂư¦lç®Q˜‚¡ ¸n(ëøÑ6UƯÓƒS™T7ZB‹‚+#¦Àß鉑« U뙿Ô>ä–¬¡'0RX¯vª̀rm5½¶KFí¢U!®M;ܵoCÖrŸ øß…ï¾ %©TÁNç…`‡zCŸP‘"l#Øo1£Xy]½Ûc ®"J ©íª2Ă´l|¬‰ă‚z‡>z\# Ü{R‘ÇƠè¢ó>(Hèè„zeBGëU®¯w ƠT,ÀuM&  ¸- ëøûxQ²€́jÖ—ÇÀuó¤ÖµàÖk;ƒœ¿–}ø.’z„[ébeÛ – C>¿ß&•Üæbêëí‘Ñ‘9´K<áוw)ÙŸçP–@ÿQo eˆN^b́M{t=‘Ïơ°Û?B*mÁ™½ T¥®äÙ±ùlCăq¶!¤W³ ™”o ¢•‡¾ ›§¥¡́¨3Ä(PđÈ­W¦úw¿®/‰\Ăđµ)|tp[<…ÎâBú×Ç”3~†„ăËÑyÿ ™FdfÄ¿D>D̀PXÿR­| åÛÇp_ÔÍîû=ù)ÜZI5wA*ĂS5qáưwS¾x¦̉æ¯æ=Lïr»Æá Y1p V~@>7‡¶¬ˆSâ’ÂT…Y§±ßÀ‰ëÄabgo©s.³|zl>LW,BDâ‹Đb,BHøÊNWö$ê&å,Z®àémưßzç—#”ŸĺƯÜŒOĐ~N?¯V-xöä([đ®P¤O(.LÈd߻۶ƯÎñÆ +ømªíêU]¥đ‚ ÀÓ…›üfaéåHü­Ê)½–₫‹Äđ̣ endstream endobj 75 0 obj << /Length 2844 /Filter /FlateDecode >> stream xÚí]s㶆ïư+t)_Å÷Gîu7M¦ÓLS77Ù\(íƠT–7²²;ư÷E8”‰,ÂÙX2gg,›Îy×x| ØŒúlfø̀XA¬0³ƠĂ=^ƯßÏo~øæµï[ø7.À;¿¾½úË[¥fŒG›ỮÍçD1âƯ®g?Í7×?ß~wơ·ÛHqE”™Y»w?KmùŒ™’uêúÁ5¡ơOuÖÛk'çË_¶ƠơB5¼k^ß<î®›ªæå©ÖÖ„’DHÍëPt¶œPÉ›H́zÁWóowO‡åv»ÙƯ7¡–»uóÍöq¹®¯C1ja,f)¡\û˜ÇX_ùXÚ4/º÷S₫Å̉r_́â vjf en¦­ô¯üh¢üïu₫‹¿R{¦¥g¶ü扵t¦­÷g¾ơ₫²}1˜o›w?KƯGÆj⤜imˆ2¢ÍLjÏQJçßï¼ßj 1¿Ù́«Ơ¡₫^Î7»k6̣o×–lœ§ŒëK˜ÿ/•ñ^n°?#Ă3ûÑÆ~­U>›…¶ülĂûiR,4­2“цă©;”$’xÇÂ;ÊÄ"̣°iÚă!ó;Eœ°…̃Ÿl~VR”´&*§$À(éy5I “C º£Dz4L×WÑṚ8éS¡5‘¯…‰»Ü )~Z{•ó`üô\œäˆÉáç$u°ç¡™bYƠdåíø₫ëåÓfƠŒèÿó´¼o'߬' Ơ₫ă¦ú”áK¢¥s ơâ‡ư£ gº1w[åCûÚ÷«<5´br†ö'©jå$1² ó0´ÿûæ₫}3ÙV¯¹Wơp~Û\ºûm·:lwËíæPÿîƒC|áˆp|jĐÏ"C¢íÜQÜ΂H;Û7aª…b2ÚY¤–fŸ¯–î'­•ÊA‰0RzM¢Ää°‚¦î`‘NÍl„EX6»»ÇAXáVN°¼v¶̀t*f@˜é7Å “Á :0c9‘0#3~́µdÆxÑfbfZ-:¥µR9,1 t¬JÂÄäÀ‚¦°hG‹3v¢z°,‡!^¬ïˆøËƯñ39b†­qÊш04 ?Óh19h ©Jÿ‰hè€Æ§ư&1‡ŸÀx¥R˜´&*Ç$À0^ƠIL€˜LĐÔ)eÓÇ$Ơ…ø$†O«]¯Ö2åPÄĐ™i(€˜(ĐÔ îˆƠ*BaûP<­ê{!難åཪȸû|&`^̉·Îå₫0ÿC¦ưÄäøMỮ”LĂdgÿ“ d̉Sóă;ªèMơa_­–‡jíbƒœXI¸†¿P°”›ÛÊ.ws €¹zÊ$Ư Ää¸MZs*ˆ̉ÑÎñv^uX­ï:-¿†L+"Œ;4î8ÿég:[û_~çÿ̉̀>ßù0óÑŒđßmgÿ¾ú× ?W‘Lơ5,¹^x€÷ƒC+nư$DLƯÇ…‘¯5F9~1†ô_? &?4u‡Ÿp&"~<¿º –£à×Ó°Ú>> Nÿ¹ïätîáBå&́¬Q €Øs`@(&@EĂᦓ’—₫ܾˆÖåàÅxĐxx@Mxhî¤̃Öâ¹Û.ê‚ÆÂà±ĂokY5í®½ ûÇÊ9 å1̀€ÏÊ¢”ȰÄ1̃ô²Ü-uÉZúA ‘²oo7êă‘뉳sü»Îím…—3`PA_!T59X¡¹W¬~„ ä*wOF]RZ1WPCäª^¿H¬2;@~ùŸ‚Úº»­Ưrˆb "h"" &"4w€È¿RΉđÜuI!Fjđ¥ï—®:?Sn¯¶âËù0¾ ¿¾€¾ĐÜ_Ö'Á¾v»ÅÂZßUŒ±­*hàơ)?¡Óúá™} Zkñ¶’‹Aå “̉)¡‰;ˆ¼‘ƒån›0P1Æw¨ ƒhđ•â^ñô@Ñ󤨭åbby„"h%ÆR)¡‰;üäCKpR„çîŸĐuù1(‚ » endstream endobj 141 0 obj << /Length 2980 /Filter /FlateDecode >> stream xÚíKo¹€ï₫s”â6ßdnÉ*6²Xy(¹lö •F̃AF#{$g±ÿ>äL7Y-5˪̀ŒˆÖ²<¬*ß§fwW³ù¢ ÿñ… ë$s̉.nîßu»ïn?-ö_üưĂ;̃î"|đ|̣OWï¾{¯ơ‚ẁw/®î{¦œLñ®n?­Vç?_ưđîÏW)’i%‰i‡O#7ï8sÎ…ǰN«}nÉîü‚w]w¶Y>ƯÜ̃ Å|I¸íB\µ)œñú¹[܆üaÑ1e¿í>y¿ᬠ_­ÿx÷·É"¬bÎkXm¾|Ø~~îäÙ×s~¶^¼YƯÆ*¾{o$l ăF…đ»aU»ÿĂŒ₫6ùMÂG^ùÍĂ 6_†ç rÅLOFœÏ*ÓáßXçĂÿ¸Ø;₫ÎƯ~ü0©Í8Ín₫9/jª¡hƒæNÚp¾'6ª —ŒK7‡6°†½6¯ï—S®Á”Í•CËP¨ŸÙzrL "¨†"{ÈxϬÉ(PéƯjÈí=ëơ”H3Éu¥HưWe(È2̀bµ, "Ë–²,°‚,xî$‹3̀tÈ©²„‘ư"đµ²Àö²üơ\¸³ëírÿ|<îæ¥9X]̃%‡úÉ­w(À‚ !j(¡¹“CV†5 ªCadÈ1‡C°†½CSÚ(Î8wM›c:•̀ê§¼̃¬3 ’…˜ª¡˜…æNf™.¬̃ Y’jV©å,fÁ‚Y?®~ùW\Æ-·“‚iÁŒåM°Ă.·¤T?×ơJå˜R)D)P E)4wRJYN3²QjT(Ă(PBªtNºđ)ÓNˆ0CI¯ưÄ×Û•Æcrº¸(º•K¡¨…%NfIɼ÷@-MUK*&¤C-XCp럛ơê₫ru?y¨²a-¨øÛ¸twØJ¾ô³Y/L€¡A”ƠPœAs'iDP@Ai UÁYçf‘Ö¥y\n¯â…‡ß?Ÿ_„?J×½…—íº÷‘\÷æ¸^¥S ¢„¨ª¡¨„æN*u–ï€J–ªR饜C%XCPiw¦t½\̃IÆÛ‰̉1ßJªơ Ô«–`ªAÔƠ@5ƠĐ܃jÚ«đq T£¶6đ։TƠUû₫×xäúºùÏjóị6SH¦T[ôĐm¦a&«…aFÀ”…Ơ„Ás'aâƯM…¡65Ä‘FÎ" ¬! s¹üwÇơơÓô*ϲNêfË¡_¸æ¶^¡S"„(ª¡(„æN Ç„2Y!Emkˆ#•ăs(kÈ ½_­c?Ưäåđđ¥Um•w”—Ç鮷*À¬‚TqY´ TC± ͬ̉:üàz¸¢ö?Ä‘³œ3JR­Cq-÷ër+ÅäR.,%­mÈÿ¯Jªô“X¯J€©YATƠPTAs'Ug^AU¨mZ‰p®?G?÷¨†́Ê_.'{ Ó­Ơá¨/Û ó]¯U€i±B´ƠP´Bs'­„cÖƒÇ$µÇA Ï:1‹V°¨Ơt‹o7fwM×Ou½Q9f$ 1 TC1 ÍŒâÀµÇ!tvđQ ѨơrÓ̃B“Ă0óơ‚å˜`0D0P E04w¬ Ny(µÓ!´b¦ñQ ưÚIÅ„dÖˆ¶<‰K̃ơ@Ô{—`̃Aîï@5ïĐ܃wÊy&xXCQ›%âHmçđnTĂç¯OÜ=¡1ùˆ†4íâù‘₫(86L~µc âØˆ±²c°‚cxîäX|øÛƒ–sEí¢ˆ#•˜£å|TCp ë¢0LjÙÖ§³~&¿̃±s 2ÆUÑ1P Å14wr̀HÖ)èµ}"v&ôQ Ûåạ̊nríhĂr˜7½~©[’­§ ^¶“ †Èª¡È†æN²)Ïh°UÔÎ ¥ă=‹k „írs}¿DV:̃ƒk JGzđÚÏt½Niˆ\‚5́eº\ƯOdBѲ]÷8ĐrKơó[¯P€91B$ƠP,Bs'„dÚFuMí¹ˆ#˜£ébTĂ^#ä,+“¬í˜t”w¼†©®7*ÀŒ‚D!Fj(F¡¹“Qá{JB£¨­q¤±³kx\>¥Fôï¯û6¦Ég5ó¼mµw€[í óY¯M€i±A´ƠP´AsÚHo™p +]S[/âH-æèJƠ´¹\̃]]?ív {Ø̃_O#9ÍŒ0íxtéXí €x2â„ë’'°‚'xîä‰SŒKĐz®© q¤´s´j¼_Mo£'ëÚ.z§÷Tá0ÿơå˜f3D3P E34w̉,HăÔŒÚVcB̀¢¬áñ÷ÍÍäUqêm‹¶“ÉPR®g¡^¹S"‡(ª¡(‡æv†yRküI-íĂêïLJxẬÛÅzùßóƯ₫ñé¦ )åÙƯ×ÍÍÓêa3ÙËă®ë̃µ£ÏñÊ]R¡¥^…Ṣˆ¨ª¡¨€æNGjp©]²ñE9vưË®Çîa;yFâĂ`Ó¶C9ùCBI½9ædñTCñÍ<œi <_Jc7ë‡ÇÉKY>üüζ“̣·±7×€I½ 9f¤1TC1ÍLàI'³ ̣™ Ÿw»d!7óy§™í\“âäxà¨ç?Àø‡ "üƒj(ü£¹ÿ^!Eæ_=ă»,lâ ëD{ªçd¼*9ĐRï@€99DƠP@s/Xç€ăKŔvyWh?‰të< ú4ªéúGrS¢VC Ïè·yÉ3ưæư¶Ÿ§éï˜5msƯ“íШ§?Àè‡"ôƒj(ô£¹ư&,̃]†ß¾€i™̣¹ÖÆ{Âüïá¨Ç?Çè"đçR(́c‰úñ5à̀×Ñçg±ÑÉ";ṇxÙé€@nû¬÷³]Ïr± BXÎ¥PXÆ'–¥gÊú ³G`¾ÜỨ;b†¿În¹ ¡̃x¬ụ=Ă» ïr†ª¡ æNŒ äk̃!—z‡¸è˜Tªư¦>æ-ĂêiÏ0Ú!qí  íhîD{|Ñ3\™sѾßH̉–7’äZ1®ÚN’‡´)ø0ÇơçÆ%cP c4w¸ ?‚°cñă¾Y¼ó̀·>ÏÚ÷` ¡øBÇmxP x4÷<¯L¶/Ÿ¿Fo¦*¦|kû?½›©Ớƒû#₫ẾĂj́ă¹ûV2+ ûÏî¦.7·…M8xgX÷V:k̃Ô®ÙơÜç÷=„{P …{4wâ>¾ˆØjÀư³;¨Ÿ–Oßøo½o¿óOưŒzösŒ}ÈÂ>¨†Â>;±¯,S¶›́ÓæÊ½æÊăºº8Lr=Ç9Æ1d áTCáÍ8ïçµàv·/9~Ø<>]ov¿É§/Ç'’Ûë‘mÇ2L}=Ư9F7$ ¡TC¡Íè> stream xÚµZÛ·}Ÿ¯à£óÂa]I‚Û‚‚ `H XØE+BŒ]aµ ́¿Ïa³w›–gÙÛ¤íayN‘¬"ë2RĐPs äˆ{ T‚°² †ḯƒ[­! _`Ñ16c æYÓ}³@:¬yV4J Ù°đcr’Ys€ư*¬JẤ«„‚ UCáB¡Z(Ró¡z(F̉t¤8v±l?V2”̉4‹U*Ä"hAMµ½a &ÈÖèjÓ¦*¶Œ°ƒXu=P̣P2úƠŒ‰Q‚L5µáuQ)Œ§ö=AH¢bRSÔ$”h.Mi›ZÓbj@™ø@Ô$*MưRªP¢ÖJM¿©!Q“[‹›Ø¼ ¥öRûÛ„'‡̉·ñÛOMƠ©ätx̣äp|ùˇS8~ÿúƯépüîæúît}÷18¬êùáøüôñæÓí›ÓG˜Ø̣âï§·ï_{ósx•đªE†E)–zuÊ-†CØ¥÷×_/Ï< Çg;Ú¾ÁǴoY>¢ÓñûÛ›7/Nwáäxú,_~¾ W÷ăÏ ˆ¥ûLB,đ">Èu|Å&}”Œơ72æ? ăñ›ëëÀ½j§Y‡–Ưi§Y{|&Ẳùp|ñéßwKûoï¯ÿ{8~{sûötÛé̉Ué ¦R4fsN ÚÅb15—˜LĐë›eM^„ă_n^̃„ăÓđƠw7~yưîOmIÎÑçQµ(íܨæblÑ´-Kûê3qĂFüçí¾úÏƯƯ‡?7oî^ÿïû‚₫xsûî¯OwGüóöÇăï” 'Œ‰ÔNù$±BV—ö‘†W´j×?ÿơĂrÀyÅ–‡ëO?ưtơeö‚Ïưg\.üÍö¹fy”r×Q^u´ËÏ]v^ ¢Ư Ë£OBºü̉µYºÅIG‘"E:tí(ÚQ´£hGÑ¢E;ví(ÚQ¬£XG±bÅ:uë(ÖQ¬£XGñâÅ;wï(̃Q¼£xGñâơ±–lTbÂyă…"C#Œ=&(–CkÖ³¶L­åË(9u ÏÑ 4F §IJi•J§Xë\J©8h£Ô‹–)”÷{™J„‡·í%ö<%ï3K«á´ 4GaJ™kÔ¼QZÁBç9”ëÂQ4øh÷ kP8g)e§Y Ǫu›¥b¡Ơ§RB]*oŒ\bµ©„¸Ía#ávש”ˆ¢Ó@‰[œªN¥,Ơ7J­x¯ç½%Û‰N‚Đæ6!|Ă<—̉<îªJ—¨ṽ*}'J…ÛI¥%8‡4•’á}ùvö¨äˆ˜y*%áB.Ă^²b/Ïy'J…µ(ư’pHI)0 ̀ôa8f=—rq;¶ ZÜ)S)]c‹æ(3E/y*%Œ¢ú0K+Ñd.%¢B/ÛƠ%-˜+ç5¶́D £p(q{"8J™pÆ–íXªx?•’+ü;(“Å*:•² p†¿—‹L¥̀“ ”đ÷\æRÂ(jÚnv¸¶ÏRÖ(aÙ¶›„M¢M¥„Qx(5E*S)Ç–~`ä“LeL8aËvÂ2nÏ’ëLJª„Im',§3O]WÊ9–²QRiơJÂÉ*W׳Snơùk„̉N”-êÊÛ¡Nˆº8û\N)˜×À‰¨x2'·LÙv¬“h¬Ùær¶ .o‡,!ö+¬S9q{Ơ$'ûÉ…ÜÑ>ŒV1©!S[>ï Ÿ†WYGnyH(iæVĂÊ÷ —W¤QúMDê£̉˹gZsÏ´æi-]ỂÓ¨µw©½Kí]jOÆÖ¾Dµ'ckOÆÖ>áÚQjGiUÁ₫¤ơÉëSÖ§®Ïµ(“|}æơYÖçG+­x´âÑ·Öè¾È³VyˆV¼µr@´âñ·Öh­ĐZjå¾₫\ñÖŒ<­)yZṣ´&åiÍÊÓ–§5/OkbÖ̀<­©yZsóW{bâÁ¯È"x?ƠÊ2áV‹Œ«X/8{q:‚`—3ÁâÉœˆ‚up-¼Â¡ºàŹƉ0xØÍV’H—|‹½(áñiÀV’(—\‹½(áñ§Áµh5‰|ɵà8§ăàZ¸6—ÊærRYÄœÜ\*ˉHØß©Ưs9[éC碕>è’w±'ba₫Uí£ùT<—Á0 ôNƠNÙ‰Ó¸U!7NonÍåx?CĐ´9Vs)Ù1­R<^ÈÍíF‰€Øx¬̣Hdªs9·tmu„±^¦r*Bbfª.+MæDP<äÊ´H̀~a;u'J—˜†$¶æ|.§.aÂVvÉQ}2% #ËÀ©…l.',Ưâ.%×¹œ° •s)@Ïål¥ LIc¹äMÛNœđ2[<°•{(f⹜^~U»“\¢9Íå„m8Ư¢̉dNؼø¡âĂñ’›¹%LĂd l¿}Iu.'9¦5Ổđ¬6™n&™Ç’ÊTÎVqIcF»ÖèváVñ8Ûvñhi2%,cT8Kó¹”–0­ÓSäds9¥ưx©5˜“Mæ„—)<̀S$Ö¤s9áf̉¸Ÿœb¾đáƯ8áf¦!đ䔣_(7ÑC­ûÿơfÎ endstream endobj 189 0 obj << /Length 2154 /Filter /FlateDecode >> stream xÚíÜOs7đ{>…ö!BÿWê’&Ă0´ \€ƒq6à©íǙ·¯Ö̃•íƠCí`'fˆ³±ß{‰~Ú•%­Ù€ºlPñAe1¢Læ't}tùi°yđÇÅ kŸwêx ùëåÉ“s¥ŒK-\^ÓDªị̈jđn8NG._œüvéC)®ˆ’"1o÷́ï$g”cŒû}4¡Jn’ "—£SF).êƠäêL_Φó¦¦'çZl‡°Dr—uưÚ_ÜËtµù¢·¾ë=˜đ”̣C¡!ÈA5)ÈÑÜrm-©D®û‘ßơ+—Äö8”o§ŒđîÚ>›7€đ̃"ç «Iàçö¼&rÀ»Úă}>2rx³œWưÄƯ؈Ûr"?́ 1âmûç0âBT“BÍí‰W½7`€¸Ù#~±¼]+¿ŸÍ^M¦W½Î¥qç~VœÿÄ`1Äm ç#0ijQÄ ÄhnXS"(Dlû¿Ïë^¼Bºl¶ŒC-CLtÛÜù¢CL4T…ˆƠ¤ˆFs{Ѳ"LĐ‚Æ@wgæ^ØÊơ–;sR,₫P†̃MËæÛơ¯Çè>ˆÜPJ \,±w+±Ö¸¬îë7Ăñ²^4_ûÎÂê~“rN>ô1rÛâù CL4„…Ơ¤˜Fs{Ôœ#!j̃‡ºĂ=®,+§à4ñÑrÈ`â¡:D<¨&E<Û‹§ÑÖñbOüËéÇ·ÍØ£^F'÷*m~éZ¨ñ@¾ñ3!ÆA5)ÆÑÜqe›w}0¾¿ îp¹÷Ă9«w²Åƒˆø-uqñ°ñxn/̃0",¿¿$ùf1›ÎϦó₫sº„ Sfù~~†˜â¶‰ó‡˜b( Q ªIQŒæöµ!\j xÍñÍ]½¼l̃[~»º/Ñi?QfưeÖ¯k÷|Ú!F̣BhƒjRh£¹=m¥Ü¯§ưö××cîñ²Ÿ”"\ÑGœ!f¿…‘o?À́CœFíƒjŔ£¹½}Ɉ•Đ¾‰ÙöyÄ«áưâ¯ébĆŸúg¾Ưß‚Ue¤rxë‘]Cç[0ËĐbT“bÍí-sC* öº ³|V¿§LWulœ‰²óơp2ÄL· o:ÀLCWˆiPMi4·7ÍÑlơ“4fú|YäÔ…¨Ê\øQĂ[ùÔCŒ:ä†PƠ¤PGs{ê”i!u¥>sGÑÈçz)xÿHD©ùZ‚ïÚ7Ÿp€†Œ Âhî°4– v®J#¹éƒá.çêôw†lï â}Ë\Ü;¬&Á;Û{¯4á”"îư.68);µ|p̉1È—`̉¡6D:¨&E:ÛKׂP ¥ï/[¾Ơ‹²lù(–-;ùâCLñ#™!ÄA5)ÄÑܸªˆ`»¢ÚY`½«WÍ>EÓ́S|64>×±N¡e”rˆ[»FÎw`¡%Ä1¨&Å1Û;–®¶**±çؽÇßÏVçÍéúf9bĂ¹{Ê0̣W.kÅEÑ|wu›ï7ÀüBCœGư‚jRü¢¹½_ÁYèWîùîG¤n0Sö#s†üVE>üƒñ!đA5)đÑÜ>3D°IQí,‹̃}[Lz§ˇn>¨ ±.ĐúÈï!Ö C¤ €jRºÛhb¥KƯÜî&üÇî¼ÿ|¾Ùp³\\_ĂëûÅd5½YÜm¾}O=«o—ơd¼ª¯Üw¬÷ÚĐ|đœ6¥›Ä8¦mé|Ë!f‚B,ƒjR,£¹»Ó9·œP0“nÆd 8·}ñY˜6Äơ„æÅ‚­gß} ƒ+÷³î¯á†6¯Ÿ84]Û Êgƒ?O~ï­£âîùz»Í•¤¯{Jªr{Ưèá‘×1Èîq ̉ă¶´Å{¬&¡Çá¹Û«¯ ±Âï£́O—Í›Üúnç̉Ñ;¢îWPåñ2ÄzIk(¿—„X/T‘^ªIé%hn]̉T~‚̣—¥UÓGö¯GJÍ™{•&tóa‘Ù$U­¶ @¯G¦Ü­̣Èîăjiä÷>ÿz¬óHß ¥¤t½íÄîRå’ ©y“¸â.ÑƯcOoƯP°a½¸~u*5|ºî„jxñêÍæÀE½¨—ăÙæ›×÷gÓÉæñËé¤^ܵ댘HPKtơŸî₫î°vEZiưŸä_7vûúS ç¾›fÓÜb¿¹ƯyÍlWƒµ÷æÙßÉƯ48mđ­²ç‹«úko‹IF¨ĐÖ`?áàñÓƯ¶¾îÓ ™‰¸nPÍîđ… endstream endobj 149 0 obj << /Type /ObjStm /N 100 /First 889 /Length 1731 /Filter /FlateDecode >> stream xÚµY]S7}¿¿ÂË=¶gl !AWÛV¢•ÚªBr¢. JÂ׿ï™ÄÙ KE,±Ø{=sÎ|Ù{×g<‰ñ1fC0b6>8ëÁ›$XǬ‡`²Óơh yŒÉxb焼jFEa- ™¬̣¬ “0Á“\đ_̣†œ˜!%ơ)¢áaûΧd(ª ‰ %5"‰!Q+¬Î¤êÅP‰P‡ÍÁAĐ³7Á „aJ 5\sæhḄ¥óœLà OØIª.&d5•³ %«z1Ñ5‰˜xâ¤è1F@‚‰ „^"¢&̉yI&JQa6±8“©p6ÉG.&‘IAMÍvTSAœXME°’x¨çhR©ó9™TÔỒ†ZœaƠđY “&ærđ¡ÅRĐØ  é‚áè? sŒ:Nä̉‘ƒV,b8ÁS'̉ ´@H«a„aF °˜•V2Ă"h‰ªC“%¥ùγ–~8o2 ጠ 3< Tkĉáâµ.Á¥É%Ô&º®"¾#<傸ªNœCÅ€ ̀$$FTµ˜ÄEdLXʦ¢üå‹ Ô=< › !&FÔB‰‚¡ô0A}2-(;£U.„`*J‚ª£¢$() I‚–'ø$ .P°˜îîƯëFÏ¿¼ïÍèÁ|¾Xw£g^¯7¿?ÍÿéFËi¿4/¶§{Ơö“µy’±›RÍl5^¨›à«/ÑÆD{`îƯ3£gfôóâùÂŒÎÍ™—;æ₫ưÿ~S‚…çgö»-gÊđ+œœ-N‹¶œ1Á¯0p¦Ô–/Ơƒï/z›ciËé‹Ơ}rÍIÙrìé’ÍØjל^ÇÜ”³•Đ‘ En&̀§!”bqv́s±8w2çrÍ(l]i˘‚Ơ3tÇÈdKLßÁxn^ø¨OÍè?ÿ™ k‹ÍÅ̀?\]½Ú‰],æë ̉™·â¸´e;‡ÔèÉr1yÖĂ$3zr~aFÏûÏkóêkÏŒßôƯè'€ơóơJû UW_V‹ËI¿Ú\”›G¿ơÓÙøáâóÖa\«–p´fƯ†º#Œ—€@ơl¥7![[ûµH͈ۘÚ̃TÇPÇXÇTG®cƠO;ư²ÙƠ±âqÅăÇ+W<®x\ñ¸âIÅ“'O*T<©xRñ¤âƠÈk§²sÅË/W¼\ñrÅË/oñ^`wQ°% G3.Yª-gÀá%{~â0K’Úrú ¿dïb@ïF±-'z${œ^ï¶œx÷„_C̀h+<…¶œè+H†Æ"ål‹P[N´ö8ư5æLè&dè÷º œ7r’;U?ƒ&„†c(EôpÔ–’níQtq̉–̉x5Ü)x¡·xYoËéÜ»õM9c«_?vœ±°-¾1§Dë†C(f¼(sÛtFvpk¸T¢8ËÛrF_{œIlä#œ₫Dœẵ…c´Á§¶œäá×^>q™¢énˉ­ĂŸ¸LoˉwaKyÏOm>̉NŸŒm¦~$̃q†â­xjˉ½Q̣§d›Ø·åÄ̃Èa¸<'}cŃ ÎĂåp™é3‰ND‰­‘Â%îRïJ[NÏV¿¹^sb,©1'z¼äö̉‰Û4Û'â¤\lª–J±œ¤-%vF ĂåI™ávcŃŒ½7’`CjTµƯüá]¦Û¶a.ư#B{„3œˆS?>n.²Êé±9óÍBÿưn–ó~7]dèƠ©wÙÔ¯;·}OûÚ²_ç«ơøêj6ó̉E7Ou¸ZŒ§x²±ù̀ë“o€n¿³Çs(ô*y>["v:›më\^̃ƯiƯ&ûèÿĂñj6Q„ßWă7¨ÇûåÇYÿi«HúèB€Û2=ûeöæíÆñ₫c¥“ËóÉz¶˜¯fë/GƠ->ư­‹º¬¢OûË~ÙÏ'ư)è³›×`ÔØ»œ«Á“›P¶…{6ŸL–ưxƯC`:[½ÿÆ̣l~¹8\N»e OoY¯×‡¼“ø´œƯd̃×ëß±¼íߥĦ¿¼<;ïߣ¾éË;×)ÿ>é©ÖôëÉộïñëÅr}›Đäj±êoZ¼ỵ̈`};Ö‘4-5í/ÏgïîtÿcûÜê endstream endobj 272 0 obj << /Type /ObjStm /N 100 /First 844 /Length 795 /Filter /FlateDecode >> stream xÚ•”MOÛ@†ï₫s„;;³_Bª@ JªTàZ¹Ä@TăĐÄø÷}'=5Ù4ÛCâơî3߯×'&G>)yG Éx$¶™)ẸÙQÁffbc²+đ¬Ä1á‰sé|ÆÚ¼ă'L¾ÀCÀ^1¿Ø+‚ÜÄà¼]‹À|K°ưB’<‰c’¢8OÊïJ*¶Hl]"E‚â2©Ù‚ 3…O ¾X)d‹QLî„Q”‡o.‘¿À&¢JAM5‰JÛJ̃Î#¥-g]@<_(‡Ú²‹ §ljÈs ”£Ơ”(£‚Fä(öÁF”©X₫*T’í+Ë9³óÜ œ°S# ÑÚâ°@%xbFaĐ|Û XÙ¶9Ù"caM 0÷G›˜ Ơss‰˜™ R"̀­Ă‚ÊØJÄcËQ‚(PK†U²‰³Á\ÅTCêƒàí40a‰A-Đ;ÉP˜`‚uÓà`å˜d¢³#6\4Œ£Á…MU¾Ȇ#@h8 áp²T ‚&Ebh'¤ª̀ T ³)Ç!h¬g5ÆtS§gxV8å‚?“̀YAK`,`^P®2‚TÈÈ;hDM»CSÉ»ˆ¨Ê»»ós:ûFg7«»]ÑI>¥‹‹îdæÇÅÓ÷Åđt³~;=N=ôë6ệå}ú¹œÛè«áíç¡ ¾^c#9âíeX‹ßçË?Óqlü4ÏǨaZ  cÔó07øµmåeBZàƠ´™ûi₫ô¶6û<»]ƒêđw°åô«…©V^Å>_5‚VF zµ|mĪ¡¹ nZÈëƠúµŸ[H|Œ×ïăxû¸\4âª?„÷Fük¿¦Ö¬›úđeùăaX×P¿‹èÀw?ËWL¢ÉéưfXß}¼ -l]ó5́đWÅ^y,º~çƠÑ\zUƒª̀ëউ¬^¤;Üê­z{¯_‘¬»X}Lcë¡z+ïQ¾–°ÈúuR#[rÜüûºç°K£¤₫}œ^-{”´Ă}L§ƯoS¡æ: endstream endobj 423 0 obj << /Type /ObjStm /N 100 /First 847 /Length 820 /Filter /FlateDecode >> stream xÚ•”Mo9†ïư+ê¸ ®r•?$„„ˆ‚VBiÓ^†¤#:ƯCÏdÿ·f÷2ij1‡‘ƯöSßïXE(J"X2¥‚¥ReâàBŒ#‘X«§Œ5ÿ.$!+‰À‹2‰ÂN…$ V%)†Ơ(øƠLQ`§…¢"¸ vÆ üö5=ÆTKÿưp—}E.¿È~ĂàKáĂ’YñïD)ÀJJ‚üR¥äUf¦„;Í‚j‘_VÊvÙ( ́r¦Œ\4Ê`´Ê÷…©ÎK¤¢:(j/ÈAK¢‚3Eî¥Âoñöy*z¥U¨üÖHƠó‡¯êùƒåp 6*ƒWŨ¡MÏzpl(„Ă2dʬ~•±I ̀ c`‚‰Ă\0>cŒL,Æ0—́Ḷa:ó(Î hD_ ½yĂ4ñ‰;¶™Uü$¹|ƒ èä`P«ĂA=²¹^ ƒ³ˆ †É™+ÆĐV‹‚B3œ‹Aœ CIœ|„H…SIƒA7œƒ_!h>e˜gó ‚f̀Ë .è–á” TePT Æ´x9æ:-~… J5(ˆ«Ă A+¼4Ä_††ru–l—yÿ„^¼ÎƯ=đÁö/?‡ë›Ûg›OËzx”º–ưø8µ́~¼á–]´»o¿’±ö˜N±ul¾̀¨ÿcØŸ®#âa endstream endobj 617 0 obj << /Length 1329 /Filter /FlateDecode >> stream xÚµWߣ6~ß¿‚G"-¶1˜{¬Ú®ªz̉)Uz}đ‚“ %°²Ñö¯ïØc dïZ©Ziöx G'p±ÂO}5èGXIhØv¸ă\“Ö5§P®¸f…½lû5¦<‚äk à$z©$i£©'Lié’öZ)—.̀@Ùn`÷̉̀R¥º'¸ø61”¤q¤‚ÁQ»ENÊsDNæ‘“‚}GƠă–ŸR¿ wM©›â …ÚÆ÷z=å7ëê©SƯn|E¼,7.r’@Y8‹Lµ[€løG™-»ùÊ´₫üñèz+?Baq‰-˜ă0¼ô¶ÛËåBÎMUªA‘s¡:¢ËóÖ† b¡rÊ Ïơí~¸¨NoÑÍí̉!r’r€Ă„gù7øĂKGñêZ*µ–@8é#¦»o “’—¾ä“)$“eÉW®ÎÛ®Ô+~`%§¯?…îûư¹Æ¢ă*ytz§¼svŒ–L`—@1̀agV®„•8®°Ö[aKLÉ”B̀‹‡¾yn›Â­:°vø¦UaôßaÎ`9›Ùùmvá"#’ÊÙ© »8#eØC$«Ö™_¹_wó Œêd†₫†(ö0{É₫ÜhT5DîyÛH´ÖôŸ„đ$eÆÚØ6 ®aû!¶±đó&‚d N₫h Ïôóđ”Ëkj“$ @‰=aưQ GßQF˜ƒî jp¥h›F[ó=™ÀëF¤¡ªjơTkíÁ7¶̀ß³9¸ÅÂ_đ^[óDÎC„Ú,7Ñ¾í¼¶s}Ø]»ˆ½H$tébßÖ5̣îx¤0·Đđ&ÑĐ5̉ Db½¡±œ¤yºmFî  fn#m…Tr ?¸C3¶‹(ƒÉ#†]å-^ÁLW®l^¼÷æÙñöÚÀÆR3q…Ë£VƒöLÓéZ«̃Çí́z—ă$l÷‹œ̃+—ʓˌµÖzœ›V&é^Ç₫8,Éœzü³ ₫¯MØặwúP÷1ŸC?1½Í‘Ï>fS-’åɪî´*ßđđÜƯÇ™¿̀qöäâÜu`³…Sc˹íœÖË8Ơu禙—·T(bF2IgÎƯ)pUleg}rÖÇq®\†@¼_̀7 kQ£XàXŒÙ¼O#@îV! ŒYÿOr6X*fE³^„Xx@‹À7Œnäđ÷’-†—Hæˆä_!­2̀sç«Áö•̀`ˆ&> stream xÚµVK“›F¾ëWpª¢ñ¼`À7o’uÊåG9‘O¶Fe °«̣¿w÷ôÀJ»*¿².4ô4Ư_ưBF~2²*²™æ™¶QÙ®„—»ˆ?_É ·Åơ‰æƠfơä:I")x.rm¶Q¢Y¾ØÛTÑ{¦â›«?7‹¡D%<1ú;½ÎÚ\g*’–+™tQ¨” |"¯ë$Ớ*–¬ë2^k›°wc±st|skÉÜp[»#¼ÊZpƒW•q‘››=¾¬5›ú.Xß|ª'’†>V–ƯÖ8-ÉFºØ×»=®¢CănQ×5ô¸½éʩc`ơs÷ f‹Ú®»‰sÇ¡‚T³×núưk̉ mđ}̉4nä*Rg¸6©ÂPï"ÍrØăùŚ/tL!Xă‘#k qx†䟿F¤̀¹TÙÏ9Íïlû¦é‘¨ăÂÅÉÛ́·ăS‚–Sh9×:d)—!Ă@“½„T<‰ ­®,WLî’ÍuPơVu₫cf«z<|ÓèB­»mÿè@!üª˜¦ÇÆf+ö‡û`½Ư_ƒv,±ˆ÷®-.ơëZĨïWEưú;¦µbGêÑŸiY8eóüµàKØÈXÅ3 µKûÉ…ú)N,£Éj+êv¤ḱnü¯ÛCăZסî®öA»sSYmƒi¸a[”ÁC®^=‹³„m^>»¢×@ƠËŸ¿~G‡7åTàÛÔ₫¿‘pOs‹à"‡y¿Ä›ó ºñæp á7LgÎ _pcçƒYƒiXbn§N}ç¹O”º[ăÆhÈü ›ÇÑQ5Á₫%H$½]Eâ™Ô“°¶ÿ[v±R°ṛcM›øưGUp‰XŒ^³4WVĂ©‰₫Y½½ô¥p\Á̃V°ÎàÏ…Ú­#t´ÎBfưra »)¿i`*ÏÁ´§ỗ>gÁjƠw3±ß5¾ %Ûy‚å ¹pjB·,£S/ø’Êp!Rÿj’gÿ‡/‰ß!đ´ đÓbî,§r¨¡\Æ~.¨yưoO ‰ Đ¼+†BÀ¨ºP¬àÁ]¼å÷R²|ađ9̣/ñ¾} endstream endobj 625 0 obj << /Length 2306 /Filter /FlateDecode >> stream xÚíZƯÛ¸Ï_aøIlø)1E_ܶ9½6Yô%—E¢w…È̉V’³—÷¿w†¤>W¶ăËö€¢Å>˜’Èá̀p>~3\º á®"¶bNb­̉Ă‹Đ¾­ïVnđö/¨Ÿ·ƒ‰»Ñ̀?ܾøîFÊ ‰5]ƯîW’…$ŒuOï6[½øæĂí/¾¿í I&‰ü+wíf?Ù:f+F¥À­Q ¦HˆOn×T<¸ÙhË´Í«r³ă‘ ̃½©M™dk.À.$\Ă^,&Qèù¿½7°’ó`ïé4ø(‚ôX ‹ƒ¶øâf$øôy#eäẸ±đ ó̉ư¶’Új³cQPỴ̈Ö½Ij?73MZçá{˜̀½óOE…äçGñáB1d¼ă[ªc¯BQ,øÓfGƒüî~W˜Ï΀ÓÄ OO“Ta 1Eb­{b¹2Mk“´‹úăxFBÁZø¥̉­}³‰ùè@¢›¼0<µ¢”h)­»BèÖv›ưÊĐÍWÑx¾TDÄq7{dËä`–(Ël…v3·KÄaQ¿óç¤>EJp¢¹́&ktI ô§9è´J%ưŸĐÅvưPW¦n¿¬©F’p d‹ă"QN śˆBN)yÇ„&b®åWÎ@§N~©ÀÏrë—”“̉‡=onöH́ɾB÷|âà?…T,ḯ⨷œwj®Á«E7—,¹é±ˆèH¢"¥>øư¡œDns‘B¨âb骃M<‚d4¸sB=XªđÖ`@©áÇaăV¥I9‰WîáØ˜́¥·1Ñ7á<1Ñ«#́a˜JQ²7²ơ’<”€*}Π  B¢á (Ÿ°êu~0e3„»ÙƯR‘?̉Ó¥—7ŒÀB5]ơr³<†œ°ăL©) 7JjT]‚êưẫ<æí=bo@đ*ë¸uïÑB÷e8›M—"àíG|đä€H^»!ØÖ]G»̣ï̃”{÷"ߣ\ƒèa¢ó•¤â¾¢íLb̀ØBîÏüXù!oMF@Z!‚7{Ÿáºũhb4ÅGL‰~}u°É m©µ¶”Ápës¢›̉¤I‘Ôńr«÷á!ÈÆÖå3²di;o?hkL°o¶5ÅsS 9QB{SKÚÄ ëE?kq2"!` …‹Û*F"pÛÉ"kphYdĐ´u^̃¹±30ÙsÁÁiëÑsU|—ß~Ú„{ûÊ);ÂüÓ˜³BAô&Z©)e—ûê‚d ¤ˆg’íÑv'́§€¯ÔAU¢ÑXëÁh•âÀ,¶Đ@ñơQÊê|ÉxăëÆB»2sÿbÚW¯o¼SX…ÙÈoƯهdz•u9ÄỒ́“cÑN¹¦Ç¾‘,iÖ@¼?k’D¬‡YụƯ”%’Ê‹”¢Y₫™¹•JƯùưfß0oÁRUÀ›–cö. đ̉…¨Ûû>f̀ÖÂ& óă›”¦M³½èjô… —Ơ r…Đ Ë˜÷ÂUÑêÑÎ<¬8@/£bơîÅß–Ê,¦Y°BRLú2%-’¦ÉÓ% *ˆ©>+$cÅGˆ6ôæ–¼]¢)bBˆvY/߯̃„Ô"?(¥¾̃²”ø˜/À(L—tƠ£2ˆLK†ÎÇú¼Êj¬<ú[ƯT„ à1{¶8uÓ¼(₫® x~C—ưH0Gñ×ÓôÎ:CïX/ô¨̉}°¹ÁA‘̀ .»²Ùæ€z´ÚØÏpú8˜ëƒe%¢ÛÅú?ê^Ưc"8–Ÿ̃åÿ\T Ôl<äWG»^Ôé.kaHc)2q*Ăƒ,?5>‹½Ùwp-œ–mÏ•VXVVíʘ¤?áè\ĂIù³Ù* u6ƒk›Jœy¸†f#=₫Ù|¶lgñZÄ1XO(\Ü6r}™É"8 »9€± ëØpEÏŒ}tf"«Ă@„âp8>½iƯ—Î"—Îl•†oÛ¾„gD"qL¯“M(IT8“-Ë›ä́è7ÓP Ë+7“aL4›-réjçßHéèÁn‚C’]RHíµªB°S÷b¤]÷ÁN€‰Î]@1wÆđÊn}Iy _B·Ù[  ZÂW=,8$?çë-‡E$ËA{Œû"mFơ7©&Áë ^HîÔŒi|}́ªfäM veëIjÆ ØO¶³̉¿̀-:IÑô& §k|Ô]¹Û A¹Û.w_$çˆO›/ßÿœN@nAÀå§M—qWoƯ¦%eº̃Âèđ?C×b½ư׺¨Êơ–†Ûu‘´ë- Ù®o,<†™`­QÛ"Æî¸)V¦ ÔĂd›~.0Ma}ÇiL8W₫”MW Mơr±+&ÇX¥Lë¼5'4‚§²©æ°É̀º&32{¹Å¬£­:l¥Â‰8À â¥æ0N»®Sr¶ëÊ.µwÀvưÜÙ¹¹¯Á"éÛ'"8˜6Ù i{–Ñ9à,‚lsºIcH¶RjHÎN­›íM₫JƒÿÍíû×™!ï̀0Çn ªg2Å©é̀MqÔ9Óÿ=9i§̀ M‹¡ç±[zñº>̣ëÿe\}uÙSJ¾xẉ$¾|Å=Áe4 ÿ×kpWWLJ“&;¹ ;¥ÙQÛ1†̣9 !áÅ/ª·¦=Ö¶¯¬̉0Ñú> stream xÚƠYmÛD₫~¿"â“#5Û}é·öÚBQ¢P©›́],ûpøờz×í['MÔ ĐIÇ÷yfÆ!3 d¦èLi†4S³Ơö 7w«»™¿x÷ơ t \ô(_,¯¾bF02ØỤ̀¶Ïj¹½O®7é}m«ù‚1–°góç"y=×<Ù«:+ ÷„'ḯ­­l±²óUB„Ï?,¿½zµ́d *à́m©i+y_[#!”– î5₫儃e¦OK¦=Á )Åç¶pŒ¢IYmÓ:œS§9C\áiđ %†%e. ˤ¼m.DRoÚ[»ºÊ»]à/üsj4„™uB#†Rœ]¿}~sóæú˜0&âF)L(DéÈyOQ‘±»OÑn¼,ù‹7Ëc¢8¡ÈÈ3ƯljF̉3,âL!ÉÉ™b o˜4ĂCß½Z^¿|Í 3I­Î&ˆ@„•Ơ19]U8bvD@j8ÓÔ[ÏWï¿wEL¤DJW†Ó®„ßÀ³5<üv†W³‡†r;cˆ‚\<Ëg7W?ÄP‰(Œ„âƠÖÇœK¤I§aÔ†aIXC €ˆ§\ºRuH•º_ƠûÊÆDD m¹gÅm@)Â’µT›tç9§ëuæp3Íưw€+nóơÎăèÚ̃èÄë9Öw₫¶‡Y–®Ê&¾eíIzÔm|Ü©u,©)JéăY=῭§1.z?É£3Å< =@i›àTrW_f[[́ ¢%8À·ù6ír%ua% ï…eƯ‰[!!wé‰ñÓ\³P^6jçĐïÔg²âP̀P)Nà‚LDEê1zIP;j˜N>îë “ Ô9½Đ$P<ñ]^~l‘/íN„‡" uv~|¦‹Á¼(/²â,0 p‡¦·e@a›®Ü©M¯ú– Ñ‹đaçPạ̊·È耤‚Nƒ8TC´•Kß>T/®\÷ˆÏ„́I?ưñºèâÑvÏîQ‡ÑôäĐ*ùEƠöÖwà¥X~Âf¡Å”ª¹?w‘² $¿À§?y¶Íê®! 1VüHÛj4©ØĂcÿ¼‰̣ú´c½Ü'!‡̉|g£eĂ˜%|°  ? Đ ?1åÀb¨̃¯6¨>ª6¬>U½X[1~Q³ư7Kâ¸p¥ùhñàđiÜ(¾= eưă’ -åđ¸³IĐăCc†¡1Á<¤yîo¬Ø˜”µëƲÍÿ¬×ßLë(ÓÁüH¦vÉöYó} ôöÊĂÑ~2#ÏöÍ­Ô@€=p²”aÇSĐñj±¶:̀•$qKÿ“Àqc‹ö*›À h_X;»¨ô·Ĩơ(»½¯{¡µKÑ÷\6~̉³ß³2 … ÀîLimßZ_=ù©÷­R7¯\\XeVÈà.¬œ{§: ₫kn=ˆæ₫k¨Àº)ÀFÆÑđ»ïŒf$[«r{(àZB˜ê]µkOiüww`›₫™m·ư6+( ¤qP~Äơ3ø|ïgï̃Gk0—³´ù̉oAc,ßơÙvCK~¼mÖ­ề§~ƯMụ20½×ÙüĂCÂÀWº÷\ÙÎö濸ŸÄëÓ‚S“ ÷CCh¼×»r1üíÆGñXR bÍđ<øRƠø’́ ÉàB9Û½̣'Üñp:ơz—B«V\ ¹¬·uc8Ñ£B¥D\¨3¥* s#zâ7éâŒöâ[@kvăß»ư6ø¤©ƯÅ~× ÷îh/Ö·6­ĂṔo·7vF+ŒS˜^„W*àêÔkNJnÎÏçŒoœÍÎÀ†+ô¨Ư₫§Öh·4èÿÂ}èLŸwö ÛÄ\@¢JOi;hˇɦóơ¨™:€DdjB̀€“#3È0öEvrùEvr6ØÉù©|T`/ưt Uæ<“UÆ̀¨Ê–£P®aîFñ8ÆAOé~Y¨üû̉û¦çCŒüOÔ½A¼tú‰ûưaÈï†yßûYoàˆN₫mI†Uo[/ƠËàÉh‡€V#đ@^lí‘ă7} Ñ₫BUk`cˆSûú×?/_5ÚRUöNKlƯS„@Gdđæ›ïß-Ûßÿ₫Ü;ê˜ endstream endobj 635 0 obj << /Length 2758 /Filter /FlateDecode >> stream xÚíZ_Û6ϧ0î%̣ƯÿIb}hӤ͡Øà6Û{IƒB–åµ[v%9›|û›áP©ÈÙ´»¸§C€5%g†œá̀oFá‹₫ñE*i&Y&ÓEqxÛ·ÍƯ‚7?=ăn„+̣‡Ûgß¼̉zÁcfbĂ·[ŸƠífñ.z±ËO]Ù,WRÊH~»\)¥£WËLEçºèªc3*º)·eSÖE¹\‰T'&̉Ë÷·ÿzọ̈v­…fZɯT´§₫\ÛÄ×6KO§HX¬i|®ê'ËÏbĐ̣úÅ￾ưùÍÍ-ê¼W\2®9‘¥H™Ä)__‡d#C"ëNéFv‰ ÙÁó áy ô8NH‰²­ê»}éQ¾úåÍ÷³Â7Çó: üñͯ?ụ̈r´Øå`Pn¸´„/~₫₫ɦ®ÀY,œ=2Í̉l‘đŒÉ æÀäv¤Ȣă¹;;7̃:F•z«r²„›O]Tơöø€|n4K¤WyMR×èt‘SçÜ–uGú-2ïÜlN?×e÷âÇW4₫-æjï¦ï«nç÷ÛkóƒÊ._ṃ.ïm¾´]çœI¬™ưf+ÛbẈ¹=§)pä˜ Å¬ơà&,ufà ñ¼>v¥½—qôz‹ªT¾)i˜÷ƒOCÆQ̃uMµ^̣è zĐ«ßb"û°ÔUùzïö3wÍñ|j–_Ñ2wD&*MS¶'k…c½Ác±ïñdËư†¨«Ö)TÓoy8uKXđ‰ö8Ù`0•8;rĐø#E ¼̃PÀ©]ÿ†~‰_ǘ|Û5ç¢'i|˜’ÑÖîhăá”wƠºÚW7ïœF yŸ¯™3Tê ¯z³»RoË̉ÉÚ·Çoç,«4Ë”é-[£Sn®ê‚œójp Ỗlªöädgb8^Èj•Äp5 ” Á²$#p¿„Ç|N ‰ÑT%v%DiZù¹ôĂ¹Œ^Uụ̂=1H`Ûœ­…Ưspûø8^€‘ˆs-{’ï–Í¥’ØWJĂƯNèŒs’JôD[Đ¯Æ‹9#]ÇLp̃S^Íñ ü7#¯P5%™‘ÚSϪˆK²$ ²ÿ?Ơæ¯đTgy%L¤ƒ̣m—7Ư#É!ˆ¥=Eq<×aäiÔT›Y‘´yÈcV"ƒ“—&Èơ7hIë(Y!BA4N†hL|L€R–êl8r¢ö=Œ@él0á¶9&̉†¬/]Vœ‘Éă„I£Æ-"á%™̉ø´C>a¸W)Ä.ăräëí¬Ôq‘A  ÂE¾‹\¬¬ĂuWÈâ²âá"t#L] ÔpRŸƒÅ˜Á™gfºÁÑă. „ 8m²E‹”äÑ ’tICWè+4Ñ×mÙÑœưí!́ÜBđ+5bå’9Î́ù¦Ü°å*U!Bœ=å ¸V 3…‘1ók°¨zÈ’₫BîbM°²€8‹È-¯j ltïÙ˜.§ 0JQ:ŒŒ|µÎ6¶y@gs¦{MDŸIöCKˆ4):¡¿ºªkyK‡m³ˆ 0m­ƒ¿å¾<”$Ñ­½àV¾l~¥¸÷%¿̣—jx¯â4\ê^¸Ïv¸qø´ÂupÊBưè»Å÷ø§,k_él *8c°Z[}À}ăI©d8`Ư‚*ĂÑ [7;8bK̀ ĂÄ+´èừưîØ/‚`vg ¼Ë\Ø¡,V –œóư“8Ơ™p¦„ƒ)Ó~× MXS如 ´„¼×Ă“XF/½M«¾ST #ƒ¯÷ׯ1¸éLẠ ª»]oRĐw¬Á@×ơ–÷»Ê¦vs8_A=—™c™ÓÅÅ””w”“̣¶‡âµ‡î)ÓíÏ¥›%*¹Ä:M[Q c 7èă•-™É&ÚÄ’¼̉ĐJ˜” ! úŒNÇ(ˆS;ki(XºÇCJlaÜ2Ö±mb¼{/60‰̣Uº¸·”‡ Fè´_¼}öï¹¾Œ§­-†á)P°å₫?ËLÛS!…©̉ƒ2ëµ8ÁÔ4ăö”z•[6Tnn¯ĂùZV[Đ”§}^`…Oë%rŸh|_Ǫƶ *M̀¸pb¼-?åÉØôƠ˜‰¨ô[à…ÅXŒZK–˜qO-=·E¾Ÿ9xÉç‚% ½G{¿)`í°Ÿma„´Á½mÊm~̃»Íq Isª\a°Ù|®°L¬bưÔ+•|¡ÆG€l̉&üYă´N/«„¢Ü¤ÜCx¥Î­C.{ÁåmàƒY_³vjsn\RöÈđÂ[[D/VPvd`2¸<ÏúêÈ.øÎúóÀe @”N ]gºz\Byg,'  =V—ÑßI‘3Jd \©'Qî¢÷@‹ª‹9)™<‰L€L 3( ¾WÊôX"ưc.©@5 ấEP¥¤?…úBe€†ÓPưÁù]¬2*hqB̉|¦ü§LÆ'Œ]PZ¬ ‰‚§#<äëà´ô¢ëYŒAŒX‹¯èưÈœY]/ü}B̉¶£í øëăBÈp.*ƒ¤/yx2.Û(›#®†³œàz xAgnɬµy åê ”ÜïGê<”qÆ´¡~ØSQy/…{O®¢¯—J\TUѦÄ{V—®!P¹Ï,€§È¿èu‘|GW•®®P¶é=mƒ*ÇSp %¢ÅÙˆÚ,ˆB\Êûº}b]ȱ&Ñcº×„ ›€45Àd$:›UÛw×§‰ê'Iư¥¼ö;đàÔÿ“&ü¸V3MMExœ̀6ŒA³KáT3¸\OÔ¦OØư¿Ơå¬LXf‘¥×³¿)»sSO®ŒÿÁl¾J rV5=ù¨z9¢Ù› ĐTü¥fo5Ư”½¾ẀR†áè1 ̃X‡É‚k¸iiJÉâ§ưqM™@L :Amú¦ç7đØư¡Ø+¼Ø+₫+ vqM¨Åß.t=Ơe EP«¾ù’C”ÓÙŸ•±1í(ƒˆ1àâçW0؉jú*Ø^hư ü•€'¸;ô/™5Xø9|¬ÇÚ\©" jÜ}:ù£¦Ô6p%X* ư´?–C~rœ6>^ăi¼) …ÁĐ D 3ä¶@ÛTÔèmËÙÊE@™̀Çï?—ÿKd™(?¸̀§a ¿$̀_‘¸Ơ4qß Weˆ́›çöë1&ŒÏë(PUA†Âè¤ô£ª!3`‘YVB¨!‡—ÏçÎrÅ9}” jö eŸ¹$4—ñ¿FưG=˜è̉Ȧ™ø̉üƒ§ú¼ï"¶Ơ]=ơ¹iÛÜs@G_yæ÷ß̀Ñ„À'xI =4„¦ÿ/z1 endstream endobj 638 0 obj << /Length 2715 /Filter /FlateDecode >> stream xÚíZYܸ~÷¯hLV LsÅ›r°/ñ®9` ëÙäÁk{FXµzV‡ÇίOñTKƯ3ëIn‰b,«¾*^¥đ¯$YIE‘¢rµƯ¿Jíhs·r?ưø ûy˜¸ f₫éæƠ·o9_áei†W7»ƠM±ú¼¹Ï:Ư¬7”̉„¾^oăÉÛµbI_o»̣P›/,ùIït£ë­^oˆä"KÄúăÍ_^ưp3Êæ„#ÎèfŸj+Cm•@XO"PÊ™Óø½ÖNÛ¼j¯Ó52Ë@_oËzw¸®·MÙé¼ë£Qd…)JÈĐlDRæ# #¤#±̃pAO<'Œ0a yJé° -H“·e¥?zb…1Ê8'ṾÀaÔ7%̉ha¢j\Ø/)Oư,2dˆ€eư¤ˆ­ó½“̀SD0f^ÏñÂq>2û”7K¼EåÏàơyn)‚ơá9‹“”!¡Àâ°}˜ÿßàÏ3x̀%2ø˜´]̃tsŒ(K‘gqjÊbÖèT"ÁƠ%/Ød̃ °›ưOăv7]ˆh|MṬÅsÈB\!%³©y"!đˆ̉×î^»¨èḥiÍ+óÛJωÊp‘ǘ`găđÅW£—”ơDè;Ư½ù₫­ü%ÅlA"E0áhD3oI /ÏØ0׆Ç|U>X+¤Z *bu³‡97Vb.DžۑDz»wOƯ0)éÈ XÁ¢Y,Å3_R;$aAḅ¼.&äÍá´íü@QîuƯº¯û5É’¾íǘªÑyñŽèÏå0^ÖG¶ÆTCRóÉJ@" ØëpºY§æơd©D˜bGöçƯ{eppá%" Ïæ’¡0Áˆg2&4†:/3p`œMåOđ²@ I”Oä5F¨4yht«ks@»kÉH’›8iûÛVwn̉aç~í.±Ï™Oe뾘8̃é{ß y.dPÎùU2«„“÷l«2SÂíÁ­,/ëvaÏ9œR³ÓựR'°¬ïü̉ê¢ÜêÖ½˜„7·y« íàåƯ#Q@ÅHÜ“6H†(^Đ³¬·̃ûísC·æ'ƒÿÍỶđÙmRÉÁ¯²ß²Ụ́“æÆà'•ă™%]k÷‘™}lgOW)`G§Ö¸Çíù}¸üd„êmw¾<̃Zÿ BâV0\úÏú·>¯|xă=²5‘I¿Æ&PH»Z™8́̀¬›9aHW7¼*\,À<'  IÆÇX°¡‚{đxsaä>os<.ÿmÛ8Ë„3h¸Â.̉₫đ1]đÍø$“«G;q¿‚¸%MʨVï_ư}®x4%)`(x‹TÈUưc­àW½W đvS̃ö†N¥µC}ºf)ü"†0sî÷]₫γkö˜dÔc‚s¹Í„_¬ëâ–Ú"C){r[ă|íơ¾®«±ơ¿’•uÎt‡LỎéÎbkoÆ-âkµÛ/Bä_³̀¦.†¨`aÏD „Ú—ÅM̀™:`@0GÅÆOV×Ôv=v@§¼mË»zô¿“ˆC"S,«Ñd³NÍ‘$ăŒ¾.»ṽøHḍ,#¡‚N[×e7‹Ơ ˆ6É>‹Ëœ­]0ëʃª+³Æ×·ÖÂă«·₫Ơ)Œ›Ă—ÙÿlL1¾ươê¿ èŒ7?Ç©ǵÛ5Tµ÷zŸÿ/á\»=JŒoU„¦r•E^óÙûqʲfö¾ç)Kñ8â ñ!ơ¤;Ê2ˆs̉´h*½Ø(åAW+Î!Å‘œ Èê*&"Œ°<öÛk¯đ˜»ư@ˆÇZ?Ç…鲘¼ó Ôz®g‚äké³Å˜éMQ·6éÛ®é·]ß̀╆Ñ\x,º4„ù”Æ·H!|±·HXpÄ2Ü"q%}p}l06FŒŒbrQ±ĐˆQÛî©Q£sú¨¤µàÀ ­c_ƯL5̀”I£Û¾ê<ưaw×0 À,gÍBÀa3È2¢Dge ²äïÅS°Ø÷xÅ0+mp7Neƒ¬“p4ù;Îă™ßÙóvD@đb;z8Q̀³71¦Ù6vNœúip̣™‡µ>I,ÂVíŸ)Ô<_ÏÆ§ú"J™o‚PÅÅ&²ïÜÛ›Ù&.¶@₫àÈœzưèLÈvOíư¡¯ ÷|;L¿.Æüüø¯!åé²8e­f!Åơ8>&ᓨ8é …L^0̃ñ³½4‚ưµ{«́VèÊ¿¸^ç\”bÈÀæ>+àx>4EÄ2Æ"ẫQ;ùóơ@È‚PÓŒX¼¹·+ª}_₫[_R@,Ä© é¯/ỀLÏC÷N&O^i. pÊ% ‰CÛÇààÓî^­º(p‡ÈđógæÚ1²¿Yâa%¾(“Aebÿ˜à2£öos¢=ƠÖ/~mûưE‘&ăÇä>¨©1¨ÍƯjpé™›_é]·9ô¾F)§÷†ó÷VPǾé^bBé ₫Đ#äÿa endstream endobj 641 0 obj << /Length 2474 /Filter /FlateDecode >> stream xÚ½ZYܸ~÷¯h̀“˜fx‹rdzNv±ƯI^¼ÆB#±g¨¥‰¤ö¬ÿ}‡Z¢FêĂî5Œqë`¬*~E¬0ü#«˜®bÅbñ*Û½Áöió¸r¿üă ñă60p3ù÷û7ù Ä`”à„¬î·cV÷ùêcô₫)}ît³̃0Æ"öv½á\DÖGû*ëº2oxô‹̃êFW™^oh,dÅëO÷?½ùá₫ [Pgg*Ú>¡-A+O£$"1đ§aÁW÷;Đ₫®Øéª-[£&̉F»‹ 9¨œûv‰ÊbWtưĂbë~»'Oơ&\—¹1 4I–4a#«P•ÿT=oG½h‹)„†Ô…7`W´mQ=̃º»}Uê¶(™÷6A+2ñ¡ ”9¦¥®»'7µN~¬¶Èk5Ä« I‰ ‹_µvtiÙÖoçLâ)_eEµ­=gEW„#Æ%57#L!0AS7!º̃I£Ÿ×Ơk°ëeSêÏk˜#]‚èXD[­»ư |§Ÿ¥àe¸#ƒ4†0èåí¿ª$9ÈAÄIª´Ơeù¶Ưÿ⑌e+É8J@WˆÆŸđ*‡—?­àÈx±Cw+81SY®~}óo³¡D”Ä—d̃Ÿé†6Ưœ/ìQl\YÁ„'ùøsæéCé'r’ơ9ùÉ3‘+BP"„ó3 ÉD¦D[O@¨ñ£‘ñ˜FÁ”$l4‰ùgĐ`Ù<±I ôhqÄéxvSénûx*ƯE¶¦qô”VÚ¿¸Ï¼­>ÖyT¦mçAÔO^æi—¶Ú¿×Ơät}Æó¨¨Ü‹\›¬®<ñ®¶úäz6 Œêq ÓĂ”'e‚ Ư>b\A+!ÈÓăñ! fcFؤ0OĂÊ#¶Ñwz‹æ2b£°m‚K!-èùi•E®’‚SÔû6+ëVï„°B¿WB*Ă„xoMù_º{÷Á=4ÁÚ[øR¸êÍû¡PÆç' ƠÜơZíĐ«¸1ưcDÁ_jüó8F˜±kÄ?%ûJ_?Û̀ÖƠI@†,`çgq–\% /đˆOЇ/ï̀ÿƯw_!@ü—w½X‰Çb†å£@ŸM(?/g¢oçøH˜ø¸ñ9mæŒ`dtHÏ*ƯéÓI|0́÷zßÍñ‚¡„\hÜÀ,tºˆ«øTu« 2æ€ư$—û½¯Ÿ »² Ơc ¨Ê]§]×ûÎ̃ ëœÙ’2bOIŒˆƠ€í`r˜)”̉T¯×‹9¾(ŸAÅàÈÍê’[¨„\cºzë ẉy-bè ›GÇÁ˜Á2dØÓç'´ar‰Mˆ-Hkc0{dÍqu8Lå/ôKvR.`>1 éºúëưâă% è3ç–I=.œ;>f×-‡T ´̉uÉB6NB*3+”'‡¼1×nb̀Ơ鉡ú½„‡Lû‰™d …5E¨+û‚BmăSNû‚r¸ ÈĐzĂ)‹î×JDµó€Y¯h}qw̃-eưîJKÿt¨3ævßÚ µ8*¾6(CÜKái`Ñ#À-è*»Ôµ Ăªfjúeô<`e: ï›S9¦ ÇÄT0¸üsD– €¥¤¼L– ´Dư²1Ư `đ˸pƒ¶u3'% kƠZÈÅGÔ±Ă¹À Ÿd³́&…A&Pèß `)è• ÖæË .…:Œ †R @Èí‘Đ¯Ü#YBÆ’ÂÔ€²€âc¬¾  J¤eÅa¨• ñ₫ÎFzw»¤e1®¡efë'y¥Â8åæ!ºñƒ¡œ6ªü|ˆÎ8Àj¯ÑTCE½Y£Óî­j_!ó́́û·µÙG=Àx«âF'ĐÛAïI·E©—€ñ™`öơ»:×_ß%ĂRI'% ’Qâq¬µªu–Zp"(?tÉÖü%;âL±<"dí˜,É1µàH° µ F¯“p[Kq”ëº0 ±ÆCfSÚ%M˜0Åj¢ÉËSá6ÓœBYZ9…Róô³É8=ñß¶.ËÚ¼})ªG÷ê²€J¶q‹Æ«I¡*_/q¯Û·Ç–1Q.‰nNØF`ÙI‰2X2¬otsT¢ H`~¡D(8RLÔ4 T{Ç©/M°ÆöK 8̣¢í¬Ï̀‹ Ö„öí1í¨Röă"íhQ''&U.PÎu ă°´(v™`¾4Ê+·<7Ú9ÅUqçÛ8Ào=›ñÙI‡S»¹X­‚ ¤§I đ’?Ư\÷èF);ÔÎoñ„bXD A 没]˜\Ààă‹L5+V™½ÛXŒûƯÂØ¹`sPĂ>̀·K»Ó!›ÀrFƠe1ÓøˆĐ nuâG£” °âÖ=í·¹ÊoƯ]´ih₫y÷AL=bkßëÆ–BP2ñ“z4á‚S6¡8…ß 6¦¨}2g™Ç‡ÚÇäBQ `đ ˆŒß²ºÊöM3d6ĂQăº_èér¸r9 í üză₫Æ8ÚAǦäÎdNí 0h EHk;£„ÁàîÊ8鉒ְưN7°VÚnƒ¢Üû÷îöMƠs°ƯíL÷­,d«Gö|…aŒØÁ‰ø¶njürgÁ´=³ÿ± NXTnj6YÚúS†ÂŸ”y—±±£5Ô;Ăí¡¨ÜÚpúÀL‡o†˜r C^VoêfĂseơCø₫HwÏål,C÷¨÷ÇH2>Â’¸%˜FjƯ˜uîFƒơ¶s¿ÉÊ´m‹́wCỸ¸ºf „\>û˜qö‹¯R–̃üư5 %#T̃+7 o4 ª²›[£ÎÑë“gøåÍäÙÇ,Db»p…cĂJ2:²»èœQœß¾sü¯sünxIâµÎơö®Ø}·ö-/v ư„ú°×öoNÇ3û·óN&¿ßáôQslÄ9MÎhñ¤Đ&đƒ}¿ Nđg¾ƒ Ê*àȸdI•îh{,đHK8Đ™¯ áÓ¥Ũëè\LváœPẮ–ṔŸ.jÁ̀×SPBÆdEơZ‰₫S‰ZpÁ„I œ±p ĐÅ@—„tvYâÑ}?]…÷M½[XxSøuơ0Á sÿ óKµÎ¶ê¸eøç~Ăó«|ÂUG&‡"ơ_SiR·¶ÑÿcˆPŸ endstream endobj 645 0 obj << /Length 3056 /Filter /FlateDecode >> stream xÚÍ[K“ÛÆ¾ëW°|«–̀{ÆU¹d%9ql§bmt‘U*Äî²̀%×(Ùùơùzđ  D–R:, Ît÷ôóëÆˆORüă+&ÖIæ¤,^¤áéînR~øù»¼Z7ĂÂYkå_n^üéµÖ2Ÿz>¹¹m“ºYÑ%×÷óÇ"ÛMgRÊD~;)¥“×S§’ưfQ¬¶úE%?g·Ù.Û,²éLXm|â¦ïo¾ñê¦á­…fZÉ3­W?‘Ö‰ —,…¸µ´Â°T«RZÉ3Ó™6"Ù@‹åm-Éo y®S¦… {¥̉DüƯût²ÄßOđ˜|K&)îđi=yóâŸ}"p­™·2–c™Ư~·{$Æ]ư «˜0ÈM¹úƯÛùr₫q•Z†ve­Ư÷% c'œ3¯µ 3©3^C¬°“}₫°Y¬–?Ó^« SÎƠ+ÿ<%ÍbéåC)å/©Nû¸đ4e ’ÖLĐ9RS¯ºê£d˜°ÍÍü!;MBñ>ơ͸÷L’qÍËƠ/³_R®6•₫æ¥K̃í¶ûÇ̣ÉjÓúE&?•®qựuù6¯3Vñ³m~)qdÆ•|̃d5‹u¾ư¶O>¥™S₫`˜ÿ3‚që'Æ8&¼íúŸ²ûÁ¡á[‘ûÅ ¹váHD*5²ä»ÚüĂæƠ‰by6*s{~Ø%˜óê"aC´L*›°y;ơ*™ï₫W¡ói¾ëwki™Ñí¸á“Và¼ï†Ç€…ÿ:sÎ$g̉‰“„l½b¹zX-óÓÊeÎRQy–3ˆ8C ßôp†‡VPçdÚ4Ä®đɧ©&ÿXƠ6O“Ï«â¾ü­¸¯µTå8 ørÊc­mC‚ —2¡;’–é%­øC弘çYqB©9Îtd8xË ̉rd¤Î>v™ơà¿Sa“?©h'§®``‘v(,æƠÙ?F4LD£& Fľ9ÅU x¥7} bǹY‰$Grƒ–¸÷\åâÆR7’‹‡¥7íÏ9”æơe¤ µP lÄ©ªpÔ“ƒÛY\°ÖÇ;̣ûí®8ƆsŸdž Á”rñ¦£‡áÂ3%G†ËPc¢=ûÓB1FmÉ á́œs" /°j$§Ph;²!sÁéŸÉ[{?̣3ÂŒ8“À3ĂùH6p );ΰ?ăPæuÜä¦8z5æPÊ0ƠF˜jÛk(£²ƒ_7V‡đ • (•̉ (À\ÆE¿¥ŸJ ‹,1̉VƒLé1¶’ À[´•Tđ?lÑÛùQÿ“A•T¡DEÓr̀‘V4×#¹ ù Ơ±Ôr»'¼u¬¢2IçÆñR¨L¼+àñz :̉Á•4̀uưgAwßôư¼´ezlT°,WM[Ÿ(]De’Åv·ËfD }“wºSw­e(‡*Jè̀%ÛÍrµ¹#¬åDOöS<₫~,ç3.™çåß]V́w›lIß,¡%—üQmèH…E(au¤ÄưŒ´} ´̀zD'ºËëí&/!XÁ¦3¥yrS‚w›<ÎwÀá4sêA´mâkxª‰GMÉ \JÓl£»µ5Epu3a"lokƒù®ÁŒ,«ÈT5‰’mrt¢tB=4§Á¤J̣ơÙóơ”S·Ö÷«¼ütPAøZ?n(gEcT ;"đcIZÓwï©ñ ¼m­]Mư“i÷O ¾,÷Ô\jçé‡đĂÄQS—'+8yædÄœŒ b¦èf‰¸3îY“t)Eb-'ñƯ–Ñ”m®#!…K y½€‚Zb¯b –ÙíËƠCÿh†K6„Ù ¿θó‡3 ›Ë̀4‰·ª;œ¹¾ŸJ́7¿RFºØ &!¬K!>G^Xn N×̀ i/ÂcÀ̃XÂCÜH®ˆx+Èè !#-“ E:vºĂnĂ™!¶w÷ºf¯JS´m"̃[k¯ávÁ!+Ft¾9ɸXËYÛ²\Ưí·äzùIŸ3r$ßàt…U>×ñ7ˆ0œ|âo²‚Ịàoâ÷K­cáPÛ}^®úL~2/qª_/¾q¤™¡éơÚélp¥DJ:¹¶"J?Ơõ̉Á@h²~?̉AgJûŸ>Đ‘ƠÙÙ‹éà½éPØô¼È¾ Êy™Ư®̃qÙV9xsôổ‘g!ư5Îư₫öv}¤³lëë¿"e;¤>¬³OÙºÏ#‚ä)ÜD-g'ÍHˆ¢¤z œx]úSä‡Ç]–çå ÛIqºó/QĐI†À°¬ëM†ú¿í–!ưâ׈¶¯s~NKÚ ö”n¹'—.Q\Ê„KÔƯ€9e• @xz¨Èô*r´)î»èI™Ê…q‡Eb†Êá-k$çÉ–µÓ+æyç4®‹¥û¥XyU¾‹ÀR×ièæf{bÄt÷QB—é‘₫¹¹jÈQ—\¼9$ØÅ'-Çè е¹×áJM«uk̃.›3FÀyƠ!¯¶É|s5%9º€Ö̃ôú‡W7×}ơs“ú/Ñ5ÑQ́„ ơª<`tt¸ªCy)(‘̣RxZNơÎ^)è3ê@ A:ZsƠB'Ûîmùß´̃é·_¼³¾FÖ ¦éAĐ|>6¹ 1½4½ríÿ°êŸ¯ă£iÖôê•TØÔĂŸ₫‹]ÿưÍ¿~́£†rdµ=ŸÚU9«ÿIt8VKù`’†a¡/(×U…̣×û 4ơ%‰á®^kx·ºÈ…ͤiĐ®6u7?poØHYy9½à‘1YWb4aĂjq₫°‘ endstream endobj 648 0 obj << /Length 2495 /Filter /FlateDecode >> stream xÚƠZ[oÛF~ϯö‰âYÎ}¦@²NÓEQØÔèK,h‰¶„Ê’+Q ̉_¿ß™Ê$MJb­,vQ a¨™s¿|ç0|’ă?>±bbdNÚÉ́áŨnï'ñáĂ¯x:w…ƒW“ÿ¸yơ÷wZOxÎ|îùäæ®Iêf>ù˜]/ǪÜN¯¤”™ünz¥”Î̃MÊöëYµÜ¬é•}(ïÊm¹•Ó+aµñ™Ÿ~ºùéƠ7̃Zh¦•wp–‹Î0nåÄ8ØŒĂ·¸ö¶ü-çj]îà峂₫pÙû뾘ầ:®;ÄA'¦”=„¢lZ!5(×9!ÚBưúóï£<Ÿ§Zgđ} ¼?ï«E³Øn‹©°Ù×øS5.ûúˆuYO|YƳøqQvOÙ,½jxËÈ©gJ̣¶œU`H5ˆ )«,LĂ;(Öó–íÉåD6ơ®ă9‹l5.̃›UÑƠ8WÙæ®O“-®Ó¹±g-b=4‰@nU›ÈrEˆ¦Æ‰Ht $´b¦M©‘Cœí[́#Ç™ó/S\¢ *ß±̃¬Hß¶h˜VÔLỊ̂+ÿv©Ñ̀ê®Ë‚ÔƠqfN3ú?›ç̀Øm_eă-ëÚä•KøÎ¥ư9J)áQ2F*¥$®£”Rˆ–±\”eÚv”Ú-6Ûê('‹Ú"ÔHV¨ù…5”̣#Ù8Dïºé¤J;æÍÈ0×…ÀШ.‹†3É1A æ:]BtûöÔ-đ£ú0Nå+÷è¤uë¨Fœ#€ŒËG ¯xѾµ?G-ôCe|;å˜Êùµ4a(7–J¥“º×YFåçÈ]£ùyđëÿ¸^̣]Œä#rr—ïw×qÅ„”ècC^HÏ”ă0¡Z F̣Dô¼c@àK½)†!à"*ÓØ¨–J“£ÂÂY?–ơĂÜ´oÍ7{‚¤Ç"’Rû±¹%Ñܤă*̀f@˜cc]¢»YƯ1ùŒ"pQlăÁ¤ÍÎö°ÛĐØ~ñ"f›ívʳ0Øî"¬̃¬çËơ}üyMà`ÿ@B̃F̀»˜»meè^Û²Úo×å<ΟfÄÑ>Î=óèr&Q€đ/™w¬CN- l÷eu½Yïª"¨U±¸z¸Y¤y]~‰¢£¤]´—I¡å. j„дFö) ÆcDù˜‚”A”_ÊD®Xí6ßơùR!qÔà4ôË)Sn*û"“iÁr%)‹)7đƯ$Ưׯ‡$PÏSÇ}¹‚FmÊߦ´Q ƯE±}]»i@˜oøEqå̃µY®ÿ ƠFrr{cs%¸7h£]sw$Ïßi¯™Âz‰ƯÑâ¨QɆ«7S öƠ×GíƠHw}tØ­̃TƠĐ:ˆöö̉Ë áÅ ¡ço‚†6JA 3~ ¤µ…d½Z•UØY“ʱƠYQUÛåí¾*ă{’`~bM"p¿ômêglF„öá|ë̃æ®#Đç©V‡mĐqAP ‘,¼M0ƯG}́_/4ï#r­ëÜ ṔRôœÊ36ÍưB₫`rm[gvR ́»÷Đ0‹ÙÍÿÛ$Y‚ăsÑ×µ’aíܯ6·Å*₫†«ñ×ư®<̃’\bâ ‚Öº—ƠYt"Ô†ƒl=Íñ)eÛ X„?%Q/ A‡lL*÷PBÜ*§Ï§-Øên³ís;fYư”½ˆ<“5JAÛ’¶'édÛ¦Ơ•§¶Í$̣qmÛŸlÛdFÀb‘/jÛE‹›@ÊÊCÁ¿{ÜX ÷m‰vÉ/!@âçª#Á3¬Ơ×5É t3vMÙèêü®©< D.Ñ5‰¯1Z¹¿-ïNwL}ÑÙäj̣&WtËü ơTÅ„Ï{j›Ôy- ĐU0!$$̀ÿ\äÑÏÓ‰16$Đœ>k\=ldœ';„–‚?ß# ̃¾‹5NôÛúÄ2T©E~"ys…^¯æ6ßs+)˜̣₫˜›H “ ×¶Dô' A\ú†ù,_ôˆ|É 2^\&_@Ë g×)y”yü#e€'¡̃÷Súú['‰Y‹ØÎ D”ó¿˜`Ç0âi¬ùRĐjŸƒÖŒ×§2O^·Œ4 ›`~à‚§tˆ̉¤6»Ú—ñ}̀v¾¬á¯OIoO˜»-æî8B›́®ñá_§½Áî<>é÷6rÆûY±Z„ε†Z#°ơÙÈ9lŒQ&Z÷H EÁO!ÛßQËÁ=@§E°¾ © ÀHÔ¾L°¹%Mízy¤ú6Đ8¹Biç4p– ` {·ÊSzó°‚")j,LÏçíNÁy/Å3KaÆÀ|pÚXÊ fDç~ø–Hb4¾%va<-ïè³^4ĂPcàU‘lÑƯKƒÈ™Dø₫/Cô&&áK0 Ó¥~S4-…`Z/¦‰OMêq_%0Ưß”‘½tåùêǜߔ…7ĐÔ^¤)-]ƒ™uåưú÷ëbFO‹̣¿¶úx²ñí––±r5åSp¬Ê‡Ưé°t©ÇmY><†ÔCÁfỞÙO[<ƒ׋hđEIi:Œ°Q*¬´ a' ….›@ujoºb¿ªâÛEă"¬æ×¿ÇßgE|™µ+«j¹¾O+ê°Dy¢&³¾}§ăO«å--gíWrí@îªP¿é₫¦Q́u,M¤ŒIá¿ á-u]Ûh$¶¶#̉8ר@ê2i Z¹{¾¡¶~Á¡ôÔ¿$Èuό„vpóËkƯ}ÙªơĂw̉›Öœúá F6̣¨#ëáTE¸ÚœQ‘du§¥úñÍ ¦Â3z|®î`pJ ă“«V—߸QrẻÜ%%WÔ¸úwˆïa‡Ư=³™lîüdă‚£jó‹$Ѧ7ׂÿ7 ¤=Úŕ Ô æJQw†]Ỡà üS³iø8}“kxúX÷øF› y“«K4P’Ư0‰ÿÔçƠê endstream endobj 651 0 obj << /Length 2088 /Filter /FlateDecode >> stream xÚíZKoÛF¾ûW=Q@´Ư÷#@iÜ MŒ\Ü  %Ú! QE;m}gwùZ´$›I›ÂđÁ+kgöÛy}3¤I„á‡DFJ3¤™ë́₫Z\G~ñîơ ©öÍaă¼³óçó“_ Œ 6$:¿êª:_FñËOÉM™³9c,fÏgsÎEüj¦y|›/Êl“Ûoxü.½J‹4_¤³9UX˜àÙÇó·'¿œ7‡ *à́@¤ơî¸F„! xk¸T",¸‡ËEÄ̀æB̉80$.Ë«ÊçF? i­œ0ăÂj¿øˆ£%|ù6ÂHÀ)_ÜÖuÄ'V«èưÉoCˆdˆ1¹NË3Ă㤰‡÷­L¥BL˜hN)RđÛ‰\üºI–Éå*ơÆ#³ÚȽ©"B‚Z%s&4’F6'¿Lʤ:Lv÷1‚ ®vư4³¶ăXĂüaaÖ%îB4ILj©ß±ÀC8¢¼Q/²åp%Á²̃ơlHDT5;î’¢Vb o˜Èq‰Äb0ƒˆ OÆ3î}7U¤êÛ2)ÊGx‰BqUyéÉI_ƯIRÔ ZlnóGx[ ØeṚûóöămK¸Z:7 I`¾=q+]Q¶–ˆ(I!à¤5ˆ½NK<".?¥~á‚­®ÍÚ¯ª?œ¥åËÓW~}7 ¸9³á‡ ©4>Tx,f #☇`:rcw`œ"A{rÙÖŸ»‚tH—}đÍͺ÷Àă LhxL-¿Üƒ‘dB ¼¹jÑ€ø_À¡‚WÛSs ®%|/bÂ%̉Æ„Z:ù5–H‰x_í;LqĈ …º¹3vÅQëö® sÜÓ; ^“[fù2ưÓ/áw,fTÇŸü§e¶Nó­o£­ÆóËdëâ₫äƠb™^%·«²>kS}íƯYé¢Üµsv¼CáÊö>­3YüwZl¶6󬵃ºÍL¨Æ {đ˜Ơ:N‚8>öQÏêøf1èRñíÚj¼„).TM5Üt•‚±Ü‰[?ulf$¾̣KgØT‰ú_¬,ÓÜHV›üº̉d} œàS×đÑú ²v-¸rf%=“B̓Tv—éBs¥̀a²Î0¬ÂK2T!CB­Å¸a»½x¼MÖ7«¬¾RæOO Hs¨x«:TWăœ(ós‡f¿OÓú¢ÛÍó!$\ ÍuC{éÈLÅ5–‘Đ@Óœ÷g*èơê‘ ¦40`0RơCA¡9dNÇƠ|ts #ôIQ].Ăæ;™¹m,…nçAŸ…€N2Z]̀r¢s_₫yï (§é‹î̉b{l_đ~Í.?€¤ ÿ16Ö4AÏ₫.-o‹¼œ¾"mVƠIǗh٘ū́²H¿́EGâ–»”ûºa‹‚¸œ$lA”îæÆ—¤üȨ%‡G-·ÏHv3îAQku Á¨}1cp|ùÍbäÉ:}@ô¾(˳F2́4 ĐjûñûZ{vPk/ïÈÛÚ7¨“²̀ÜHăq’pån'Më¥̃nås—ú>t2—ZXEvy[º&sh¢’=UÑøªóˆÆE[(î9…´_5ºưÇ/YùÉó0\…÷®Â ¾Mu•FA6H¿]qMéPÜZÚV¯ÚÚ»vl¤4Ÿ¸wzm¬ ‰=!÷í]”j¤LOc­`¹<Z’@:Ë{xÎ|A©\HîéÏ»ºLPBƯc z íeÔ@ĐEKU6…Çq½Ú\&«ë·ûpqmûó‡ZL`ƒéYl‘äCư§²uÓ´™£̀IN”q’B©G1 ƒÆ F–DơŒùå&‡qĂ÷~ma³¥¦••‘¶Ôü0dmjVåˆM\‹Ă5Ùb4Bèđ‘Üu¶6Ăèf/£Û[»c EEew˜/ƯA•d²ĂÖâr†iƯp'·KëôpZgÛZIhƯêJ÷iưÍé7#ö.ƒ…\È2LÜGíoNÇX›ŒÿÙGröÖ#»6?„¸EX‰çHJí+‘ï¿{¬Ú£Îq"Í“ ‚8¡êưL؈s ö5¡x wPY»́ÆIJ”»ÀZ£¢bøë=¨Z~†Öeœk¥\ÄTOé^Âi¤}r wz€w€‘ º}ƸMË!L4°ajăzGƠ±u8˜u8˜W̃›Œ̉0§i;Ư™£&âÀm†[‚Ư}X3VÍ´©8ÅÚAÁ`̣ˆj΀u8°Nc̉ïœEÔiNè×eQĂ·}Q7‹2 &Mè,ÊgQj 'zÅO †ä}=)FỌw= SÁƯc•ÿÁ€L9âñăä@|’9Đxô€HO< ºÁéä‡Y¬é‘ÙúFÔÏ“W!̀&Ọ~j§PL±¢SP;…¿5ÿ4ø(jç‡S;ÑĐWªI˜h°³2 ₫Ól=!£‡ÔÖgô‹½ä6Æùǵ«4¿ö$±C·I~ôƯĂNVùƃø2[̉Œ¾±¢LB¨°^YƠD˪—îö½”7—×\½ÀJü¯–ăy¼´”¾vñĂrk,6ù`nă¯›Ô„Ù·́f¤¶ªlê$Å›Ó#ÓY‘Îà^f&ÊgĐE° ¡»ÅZ›fz´Iw(ïÏ09uXï}B%öçˆXú₫»¯}.Ơɱl¾ n’©Ûqu₫#ăßÈFEÅéxÀ(¨>ơ ; endstream endobj 654 0 obj << /Length 1781 /Filter /FlateDecode >> stream xÚƯZ[oÚH~ϯ°úd¤2;gÎ\+íC›6Uª6ÛMĐ¾´UE°I‘À¤@Zí¿ß3l° lœ́Ey`ÀgÎmÎw.ă@Äé"#"c‘Y4ÑhvÂó_7QX\¾=‚®O„ư å«ÁÉ/gJEÀ™ă¢Á¸ÊjDŸâÓoĂÛUºèơ1ƽ¾”*>ëYße£Ơdù'2¾LÇé"ÍFi¯/ ×.è}¼;y3X WB1%ñ@MKêu­ˆ'}Ku…f\É .2Á„îơ•qFÊ@¼%ăR•ïk₫  ³Öä›Q*ÏưÓ%ôđ]Ä™")?s̉Y$™K«itụ{“ ‘!êº"“́ûëÉ́üởË̃v²Đ†¡rQ_ SN„Ÿ̃χÉđz_“±ôñ—ÀD›€9¥„g̉Ge™vTË÷'“Ù$)Åé*¥DæpM÷kÏ;—¼ă=óµÔó3W¼I €`ά7g£Ỉ$‚N ¸.©ˆ4Ù F3mÈṇ(øßÙư¼‰“f¬)&Ùhz—¤_o‡„–U£ÖN2÷º’VVÁl5ƒ‘&ï‚3Úv™®î96]¼ú–»ÖzOåÈz/ưbB‹yAå}˜/’ô3™¥Iñ{6Ă׋tuúú,¬=Ư4e””ˆÏÇ…®MM¤óP jz₫Ø(C¡ˆÑíT5> ̣d| Ÿ{t°À Á¶ªC~=aăỢ>OKÁÉƠu ·ÁóogËIƠ¿Ä=‚­C£äÁ!° ²¢Yxp³˜ßƯ†%= 4Ăér~Zäg&₫@¤Œ?ö„‰Ë̀¤ăáƯtỤJc¡¼Œ³ùª&ăÑpYØ ¤îV2¡–[‘½{’Rs&dn¨̣!)µ$³öYrÿá‘\¬Q\Í=ªXAoªô} †đ)Ể'†}WiáḯMr¤bVºu¶H[ªtè}DBé‹z*Ơ”W(µ”y!«°z‘êSZñô¾äX•ji¯–ZÖtR-5AÉ9½Vü¬çd<_̀†«û+&vS9ÆUqÇT³|c{épLĐ̣̉¡î-™¿ơŒ¡,¤Âz× vư¢̀Ñ~]ؘ¯}~Ñ ˆ̣~ÖÉpEH_5¼" ÂÔEẂjÓÑ'ñú6ÊN„/ëOKÄåf“›o>c_¯}#Y*9Ï̉ªSÇói?¤Ơ]? ‹ u:÷¼N²›ÍQTT.ăÜG¡°¶ơÙ=F’5äYßtæÅưvù᥷rĐ€(ă¨IˆæA™ ¢ ơÊJm™~ú₫åƠƠùé>»’Üg· Ăå’Ú¦ç{ÅHM¿É#Å(Á4ÂqîE.˜-Τ;÷"'ư·4Ṇ̃Ơù`ŸÑÎi´o• ‡#|‹₫ÈÈ¥„Ê„3ǹVrÜ®=+Ák¯ë\¼P“û¬–T­;̉¹̉Xf̀–s狽r¨zZ‰ÇÉQœïIáƯ~S+¨¨Ê:Uô‚̃ÿؘ9h0á–°Jµ ¬~Đ ¦îh-8©{}»yqÔôB'‚ ÍÎÖïÉS”7l̃Uä„Ï7–BßàḤƠ¸Ù{7Ïœæ<…2/Ú±̣÷¡„Ôˆmú¶æ¦Ị́œv·i³‡7m„‹nz6EØwÔ¿–J¿]ÜæmÛƯtzÑ̉ > stream xÚÍZƯoÛFÏ_!ôI¬½ư₫(Đ—s.Ňâ.ñơ% Z¤lâ$Ê%©¸¹¿₫fvI‘K“¦ «× €M/ggç{~; [PøÇ†/ŒÄ ³ǾßP¿Z̃-ÂĂûß°†n „ëå_õüåR F‰£-n¶}V7éâặú>y¨³rµB,Å÷«µ”jùneạ̊XlêüPà¹|Ÿm³2+6ÙjÍ ƠnÉøêÓÍOo₫vs:\qE”gJÚR?×̣„‚¼­¸\ªdWN„\­•æË„aËz“n[Q~;ñgÊkß,¤Bî?ÑE /ZP¢à”GOº_H"™…§ƯâĂ›ÉÀ´ BèX¼øíçMâÉCsmˆPn±F… ôÿqH̉äv—Kƒ…EkáO‰6 ƈS#“µP–h§@0¿ÿ®|ø\tê>­̉DZÛR₫°Bă‚uĐ2Ÿ9¥è†S\»wêĐ„Ñ“,Wcœ4áÆœø$ûlÅÆ ¸æ,G!JÀ ¬1àû¬>–E°̃]y8>„G×èmReiX:4Ty]…w=iLÿ'K›>ds’]uø~L0©ˆ•±²‰ØÓœ0ăâ@I;Œ=iN¡ÑlDzñLƒY™ö¬ëBïÇ̣!äèn‡̃%AØ8l×Nú½†VôóGŸ?Z2b »H₫ /0G«Ă¿‹]¾›ï«ÿ[ñÄ4ßçi5œFÍdä̀%a µ́e¹4\‚Ơ&S ¾ÏBpçmÔoÛàƯ…¯m^gM‚€̃YQ©ª˜₫Äè笾~û.,₫J™Üµ9ă"Ç`TI1¢d́?ÚR±̀[ n!l08 F¿(ílJpƠ ¥`¯I@Å u•‘Dî¼ăg©'~qúüŒS̉îôE2yQªº”«²̣f%Ø̣+VO¶̀.˜zqSïăTËĐ-Eươ!›jB%ă϶Æ >5$·_ë¬Êÿû*f§ÇÖ‚̉§3{£å d+ûmíÆkPÜÊÏn³Kªj\2)ˆ'| ớ¤ßj ‘a¢̣̉+u' ñd¥c£ê¼J§gQCăœ„!Z¹ù)À·A+¨ÿYVÜ.¿äi¼y±=”û¤·-`HÂY< 53ĂBX¬0S q›J[#;̀ ø5^#©%¦óbD?^.xCŸ́k|ÔƒcgiGŒ²/,ÇPOœmêU ëBç}u³.µËmw€¿Jß~ªđGỬDÚa_aiQË[¿¦«½í0ư›ƠFö†¥iô¶5 kÚkd¿$å;`3ÙÇ$`́ÑêùªÛï—¤œhcŒËçÚ#”ÇEJê²P¤̃fuVîó"kn·M±j@ûnưe¥ (Đn₫5ô:/î"Ô/ÇQØYæ>BFzMO0¡-QœÅ’µûWØ*ŸWL@":;ĐŒ¬ÖRéåß·3‡cđáæâđ4%Ü¡ŒăĐ0ưÂÊ1y<Ü],·ññÁø3ZK(û`ôxg̃øq Í·H¡Đ=Eç(ß¶zAƠÈ(̃[Ă+ïrdƠ4L³À?ñGæÙÁCqXo ŸĂSßÇ*,?–pQl6'eƒJ₫₫Ëy}ÖĆ ¤j  =̣¥/rg¯Øe¸₫HO«´º”Ë(d`ăF›sMlpŒTa(åóÆxi^aö¤aơ ưu viüŒÈskRt̀|ͺ5ă °#7¡ḍUö‚₫*¨édKŸkФ+Áơ¡Nåq(YèƒàØ?( ¸˜He/”ç¢*Ø,};̣¶;ă₫/zxÁ¸DÛËLÜWohÑÀ…ë{‹ÿt1÷-@‡ª>”É]v è°¹í>À£¿±?‡®ïûV̉4g¸yI1¸kN©™Ù¥`F,Úy0£ E‰K€úøc3¸S¡êCe^nđNtïogÁ8₫u3a®¶è× ̃çĐEO•HBQ‹j÷§3Ê ö;F››‚=-ú›ál1sú›ăÈœ:WBAtrpn~²^"xSƠe—y:ª=-+£ `x̀껹ó¡ú8íâM‘³đ9KŸ;X1 <ÄËV€²†ç^µ …‰AŒáà—6m´A®éÅMl@¡MCũö¡º¶úç >ߣF¨˜ßâ±-¼:qíM‡Àà$wÔÏj"¹"æư:¢¦Ø EJTăN̉i<Ûí†ƠhÂ₫îg¢®¿WR€%€q£½­ơ˜Oω9ÁB ø|7{:~ă·Fâ¾ 9«Å ÏŘSƒ]-œ9p,]¼…›No¢Aᢋ7ü´Ï{jR;Ơ#ÆI¦]Đÿ¼) 1đ»øAVøb~®Ûœ€Xz!rç# ‘h”¼B^R‹!z‹ƒ]•Ôß̉ê₫¸Ưî.‚Àc»N¹§¬ä‹Y}̃e_²Ñ±Åñ ÿÊ€7 i)BXoû’Æ(† êGtZñK‰x%´z:ÁaÔ ˆæ ´’Œ…²„›Ă₫¡̀ªÊÜq¡CUøW‹¦đ9ª`3×oåÀE<–¡Ư?;¨»;U ±ikÏÔPMŒ‹÷¦Ï¥^4+’ ImÎ[‹Á-ó !oF%­GG%NCêXïÊR¤!¥;?KA=KEø ̉Ü ~ª²›³<‡*q× ̉0ûPø¿=’Æ.4úÀ±~«ëË0”ÚùP y¼·5W̉Ø"M1»Ăï3¸0>|Â74üÂL“Œa³¶`.®Zq2ºO³Đ)‹¦5»vä©è>ù=÷Ÿ‰ûđn°óÏkÈJM/̣Ơ8 í†íøÔÅH+Ăÿ)™yZ endstream endobj 660 0 obj << /Length 2433 /Filter /FlateDecode >> stream xÚÍZ[sÛ¸~ϯĐô‰±°ÄÜ™}ØÚq›Ư4é&j^²™Z¤lN%̉KQñ¤¿¾ç¼"-y,§L, Îåû̉YÿèL³™6œ®g«í«Đ¶–·3÷đáo¯hƯo½]¾úáZÊ IFt¶\÷E-“Ùçạ̀.¾¯̉r¾àœüÇùB\ÏöùªÊÁ‡t–i¾Jç ¦C”Ï¿,yơzÙN.™$Rđ5mz¨kØŒr‚¾ºL‘P §.'Œˆp¾9(Cƒj•¬U₫låS©‰1ÚæB¢ôÏ_ÂY?₫2 ‰„Yl×íLA d5 ; kiu’ƒ¿iR#qN¹SX‚?ÏbÜêN·äñ؆•t0\GªrŸ’º»îw_àOp-’’Z±£>¦5~Aü?ÍYcDg€t‚t…!a¨fGD úD+øË’Œ„P ("í¼Iº₫„„i) nS/Ñ§ë… íP»Ä^Ơ@O¯•$ôYª”¥›ôª† qÎip—–œ±~đYqX?¬î̉Ơ¿wûí$£·N₫É1ºÏ䨴Ux’ÏaƠÔ¨“ø\åsơb|.uD(ÖrC>—uè+D°~X«ÙÖÏṇ̃¹7ÈAZÍá¶Åá¶×©]Í4Ă "z>Ư‘ç0‚½ñY>Đ"‰«¸]Ó…Ă)(‚C^3~ç̃)EÀÍDÇpkʰ̀X!ºIXS˜sp—öÇ¡v®9³Ÿ&¨öe@m¸YÁÏuQº‡ê®éÖ/¬.p“ĂĂŸà`zOùƒ 8â T¦Œl×(˜º‡]UvÜ£Hî«ĐA›«Ư€pÜøé $âyjvzÚ×°û¾°;~÷"À!`$uƠ e7å~ùÂ#p ¦Đ¶ŸÄxäÛ[xˆ†Ù ?́N?jwú&X×¶¬¿–V̉ÎI¨E™qQ®OÖLë¾¶gpĐd÷Úu,${¿!@iQ§Ü‚nËbÿ¿?ˆô³€âb$sÇ7vÔ0oÅéyË9lUÄỴE©¾î›¶Äÿ8¯¾Ư§6ß!Ø‘=Jª”ÙỜ7ߪt—ưçYÂZ0@BDíÆ ‚L+qpÔÙ°À| Ư=vîx` i t¨8ûQÁô2lí­7h„‡ËÚ_Ñ?ËKدYR‡G–Ă.sw7dM!Qï.Gx–){çÅ; }Ïb€$̀úpéÓÛ×ï¦*pĂ­=y¨Î2(*ÔµËV›b—>énG×x¿¦;K^Û»ºFëû}ơ3^èTƠñÄfç)9ë\Å™›Yư}djØùó‰[¾ïreó”ă£çCÙËsC¹ÎW)BûH́^è^耦ª*³›}•Ú£sỨ`ñe¯(Iú’d‡íx÷uÛ·Æ®¨%”±£ùaơmË₫ƒwQ¼ÂqdxŒ¿6˜N¦½ RAÏïrj,¥Pû†ơgù#/ÆÔ`}D%B’Aé̃;UCză˜&̀øăˆ{nÙ3ê½Ôs`º§2{ aËÇÉʺ¯‡mƒ̉µ¯C²Óº 7äbLw‹'öºƯ7PơÆ›º»QÚó}¬%‘TŸàcÄÀ[XŹo‚GKFª# Z‰“égV®ºÿ7j£.·LE¾«@%P¥ê Đ¿IÂóó„{)´j¼“¦F. gb»E₫¿́ °£f̣H ©9‚£ÿlÍ]‘fæÿ4~‚ endstream endobj 664 0 obj << /Length 2231 /Filter /FlateDecode >> stream xÚíZ[oÛ8~ϯöIj.ï—y›m§»,»m0/b Xt,¬-g$¹™Î¯ßCR”%E‰›îE€D–y.<<üÎwÈĂIM”fH3•¬vWØ¿­n“đđîïW¤·„Ë̃È¿]_ươ­ ÁÈ`C’ëu_Ơu|H_o²»ÆV‹%c,eß-–œ‹ôíBóôP®b_ºoxúήmeË•],©Ẩ¤„/>^ÿxơĂug\PggzG?pWÓ„0„Áßè.• Üeˆ"®K!iZ‚3$mVù:º̣k§Ÿ…´V^˜qá´øˆ“¾ü1ÁH€•{?t—pĉ†§ṃ₫ê?S>ÉcrèÈƯ¡ùiaxUÎø8ÊT*Ä„I–0K%tùđÏ}–g7[‚ Af1È[%2!!¨S²dB#iøæåKëæú‹³­JÜ·ªÂ\Çá?cÛQª¯–#Êi§sUäS¶Áo‚eơjJDTu#>eƠ´"FÓô¤"GäY“MÍÍ;$zs#Sq' ÄÅ–ˆoa?;́u“UÍ3ɳÖO\?&lW|[¾—_¾Ơ₫P6_… „û["üù¡n`jvR“BRè—‚x̉¼eZ"¨‰äàaÉơä₫}h ±8f ÅLZ”áM₫üË6¯ß¼ _}Z µ¿pùˆ€4 ^olOAđÀ̀y@µF“¡ =ÁYסHÑ@®¨ƒáºÙW6ú̃D¯Àc=>å§ qƇVâ”óS.r!î5̃¯û₫€ƒm4A—­ ăzÑŸ1áó>G‡đ¸‘do{99 Do,‡NciB‡Bư­7kMH’ _>&bhxZ{^ ¿ĂWE™Ûߣ$üµÙjAMº Ỵ̈bg˺¥ëƒ^̃duH‘f%(kŸs»ÎÛ&ZƯ·#‚íO ªS»‚Lê›ăéïÎ'[ík·¿^ÍÄÇŒ7°04LÓ!S>£N˜Øöœ ¥Cx ’H½®ĂÎư¾¦œ®Âˆ.@[ 1ñëá7aÊ<Ê…÷n‚.äEÓØ6ŒÙv_̃†¯}¸ơd¸¹wƠđ"Ûn:‘)!£(aíçë癕ùTp!”ĐILÄĐËkëeV¶»ÛaǸa„s̀V°µƯdcÚ«¾Æ¥„Êu2qLƒ̃÷¶-ÂÙ¶̃7åHki(½]×à®L„Æ+>î̉¸ê4 ơ©A“6b‚Bơf‰PÚÍÚ2c×í´†MỬ™tư§oêT¯»Ôçw—Bpđ›]¤»‚!¥ÛWü~鯲gtDŒ0RœCŒØCbôGèß̉à£Fà‡˜­a–¹uu¡´Ë[§½;—€wưÎz›=REˆ°|‚Ó Căˆé}BŒA«/»S8`†‚¿Ø)NWä;Åœ¿S¸„—9‡qº8áq§”ÙÎ~¿`àAọ́;Æo¹=¼Ä̀ÿ[»Đ)Úoó_ܦt Ü/9§u•ö₫q]ä>,ꀴñ¥ñvívºăPªmxΨ‡7‡Æd©•Ÿ`p’Ùh94Ñx˜ÁĐíÁÎă~ä“KÔ¬y{‰“¡ù^đæÂ³EÑ¡×ë0m_ä]8Îaú±›ààµÅ9ÊŸ¢ÎLaôy(́ú7¡r¯jÛœp‡3ơWŒÂrÄsa ăÉ"ñˆ”ccö₫a €K€Ñä²)À5h“Ÿ‚hÀ³‘½éFc7ºÖÄH?KxÁå³Èˆă˜nS¹öúµë…¾̀ €{í¸đêv»¿É¶#ÑđƠ¡î̀N N¢à¤sVhóœâÖ°ằđv‚[`ûZµ@&¸íđªW#»E¢ˆ̉Qÿr*µàñyÄ– eR>Í–pY`FÎ5 h(óƒÖûj AÁêoíù¡s>œæDĂs”đ_™'Q"s’I ³2CP=ŸÇˆ (¨`€®†xvçRäó÷>QWsnP¦ iåÜ€IJ‡nŒv¡i¼d ḥHÑ »Ï¦hŒ›‰ ü!†Æ€­jiú íM±û:́ ¿0;Ë‹ƯeØÙ›:ÿÀSdäˆM1¦§r¹;ñƠñ|C§÷E³ Ôi1˰¢M yE¡ïí‡fÖY6Jơ@°(Göă)­NëÛ§ÜaĐ5¸zÛ×úµèä ư‘d(‡Nƒ)pE‡Æ©íªW ]78˜z=º¯̃n±Bv¯BĂÆL?_¤Ưm× ¬íL˽Èíb©„ưÊé%ºX§ă¶+Íí¶ûÓºXØ& Ât´[ÜUB<íÁdwB/Óp`Ú¶X₫«‘½AÓÙ³G8 e{`Tû, é46ơå!§Ư-Â@¾(nˆ)E¸W˜nÂzZFB¦‡Zç²/HåĐ)càÍ eOî¯{†S¯GSo‘RvHy¼>y€”à<8i°ï^áo+™ Pɾ Tz–KÙ% ’Hâ(BåO0²ê‰pIχKÂ`CQz¸tÿ¢Y{ZY)̃¸#¿Cùß×ÙjÁhº±/›̃‰àÀÆÎb'€™>x×ÅïóP%…> stream xÚ½ZKÛȾϯöDV§ß98v&Éb ërp ƒ#Q3D$Ñ¡(Oæß§ª›¤Ø)J;ÊbCRƯUƠ_×ăë"ٌ›>3V+̀l¹½£₫iù4 ¿₫åƠă0pÑù§‡»?Ü+5c”8êǾaƯơ°}I>>§ß«¬œ/„‰x?_H©’û¹•Éa·¬̣b‡¿Èä×l•Ùn™ÍÜPí¦æ_~¾ûóC«\qE”ZÚŒ>1×̣„‚½¹\ªd0WN”˜/”æÉŒaIµ\­S₫ÓÊgÊkŸ,¤Bé_¾̉Ù ~üyF‰-/~èv&‰d®6³Ïwÿ²iA„б!û¬ú”­Ó溟;™å6­ĐŒ>̃\"”›-¸$Nđ0ùË/EºJ7Y€à Ü_ƒmfŒ§G! ¡,ÑN•~~±Y}[wUêîhí•ÍĐ?ÎjÀ qúÖ±ÚOÿUtH!.™|µq]­l3ı!¡̀Ơ;c5aF̀´5ÄÁî>lãç¬Ú\'Ơs.VÁ̀pSë‡k“ë̃È¿gƠÇO÷áz“?–iùn̉Ư*\”Yu(w} ßË́G^öú¢t«Âeđ̃*Œ$–³°4ÏnÎmrØfe¾ ~̀•L̉ÍaÎﱈ©ar=˜ù̀2¢À×"ëQ/ë̀ä̀ÎU Âéx̉»³j¤$Fó+Ơ(€ĂºË`I°·†Ơ˜?iù˜WçV+äizåj!ƒëº+@•’U&ƠN—*5Ô)Ăo ª„­iÏçB–çÖ«¨"¬ïăSëULÁà¬EyNO“̃4#PƵ(bø@•èƠb(}iª7AÈ-°×¶aëéƠ’0Ín¢W[œôI-ÜËÚª8\S LwÄ‚ F R$pr@?̣sVs†t³/̃ –°Ù²ƠÀÀFZB)@‡z6߀íÀpj‚S|‡:c“lW¯,&T KưŒp@.X‡ÙÉË™¦À܂ء( Y¶!v÷ùfó»r¹m±Ê†Ø•̉ưí(•C;GƠ Åµ~°̀WC`mmy7$ jµ9Æ8¨µê/c—pA§e ªÀ}ÉîÉS4Ûp5 ˜„=ñ×ÛÂs˜UûSÀ ™jơ0§ˆ„3F¤(È5¶Ï}K4̣Q8Tơ£|Ûÿq”É@¨Y¾UTee¶ ¿æue[eè±»zr[‡S\ÓÏpà@';áƯặMđĂ¯MP}ùŸBÔ~âWµ+ơWqÙ2m¿ü1j̉}LÛ‰BÆ(Bw¶’D‰̃l¬hJm“JúMÛ1[ø)D$lªá{|ơ!ѳäå9gÀ`oE¢AÏ)>ư1ưÈ¿u±ÙøëK¾{ ¿Ơí×ÅÈGN·«¿Œ8dû÷çR%'Ä£9Sïä6'd4{ơ·g_ bßAQy> yCÅ6b́5f¨ó¥̀¡Xy ́ĂÿæûÊĂ…wÁyöèƠg_skư—DרÆø›×³ r)$ÛÓV\¥VŒÈ>û`›̃’`X¿§ƒđ¿8úâ5 Ö/xñ‹ÇÏWX×̀qo¢íW}R µÓÚ™•°`ó–.WW;ă”®"°3.DpØc¡₫vƯJÄ>µÑÜChI˜¦Ï`‹Ö ÿlƯ|Y5á­NÁ9̃^g˜JKU Ÿ ¡€]©JB‘Ô`Ú2̣]¸ËI†lUÑ䯟îUŸñNO+††&æô‡ ÎAá'L1CFq!,³N˳A1‡²ë yNGs²e±[ỆÓ‚&eó1Xê[Ú>zá±? Ăÿ\Úô G?ëhá1r̀®ú³¯Ơ¢“´ĂO ºSë×lÔ»pƠyáÖ11ú̃ „ófx»ˆKơï ₫̀2ôúĐÀé¹ëЧ„ĐÀö·]¯·¿ÎR.–é¾îæusuø5á²Øb}̀wÙ*î > stream xÚÍ]Û¸ñ=¿ÂÈ“ ¬Y~‹º¢/Ư$×öÚM¶÷’Ö–w…³å=IÎ&ươ!%Z”%ÙB‚̃á[™â|p¾g(¶ đ[Ä|AŒˆëư jWˇ…{x÷ă Ö́[ÁÆUgçŸï^üáR FIB¶¸ÛvQƯm¢ÛÇô©ÎÊåJ‰–+)Uôfidt,Öu~(đŒ̃eÛ¬̀u¶\ñ˜ê$bzùñîo/^ßyâ+¢¤¸’Óv÷»†/˜ ømÙåP%»¯¿¤û§]†´ádº{2!‰âñbÅb¢E³}ØÇ@+ú“ûsŸ×‡̣?TÑ"«×›-yÈêÛCQƠiQăêËơ.­ª|ư w/a‰Ư8@BæWÀSÿ·,-<₫ûcÊØu¾ xk­Ë,­3‹§Îªë—7ÈGԗѪ=9—» ‚(À«9à]®Xdqo²í«|ïèxÁI”∄Zp̃đ¶É÷Àœ̣i›á*»í¶q‡"À(%’‹Ô~€0Á¨nwƯ ả„Ç~G‘î³ïg—Ch˜!†'í&TA³+p*F(m-ÛhÂb±ĐÉ%(cp¯@yL¢ĐËêGûÀQÊYQ5>&¢ç¼~t/¢{ºdŒ ×`T†…;€£œ̣„Ăº ÓbÓr¹dQĂç~_`Dh¨‰C|'¹̣!0€£pyqÎÆ&­Ó*«/ñ!• 4 ädo£ŒÈ“ Á(£»Viy#ŸĂÖ:u_íT_êƠ(ZFyå–ˬ>–E¶!ƒ^ͤÅxæƠzÈ«,Ÿ.{u‘=ó;¥‰4ă ø§›ÿ6=æ‘+–$„s†ÜĐS§‡̣p|r+­Ñ¥îÏ['âÛWoÜõe¶TÜ¥‡±=! .Kç}Ö’ØU‡†ø“éăJ#ç¼øä\ ›ƒ¦„‚”Ï̀!2‡Ÿ—‰Œ̉rÊ$‘|NË+#=ưw,âç´· ~”ü^Cư—úëÓ "Áˆ0ü"¢¸Ưa³duYxiƒ‡áC*ä&̀6ZPk”<‰>/ª6Oïw™{Ñä x×:•7Z\A±âDÖđ`†®zœ:¿¡ }`d:R·¸„b0t‡ñ@íábFt\"ƒ̣ă_ê%£¯OXƠF—.AÁœö0¬Óǽ÷ 2ơùE‚_h"xy‰ªâ`•ItoÙ®§©A6“L̀¤Rb2„¹™¤b¬™™TP P!ĐñC),ÈäL*²NfœªuG)‰¿ œ) !ªÇCYO‘aLƒMÎ#Ă8'Rḥ0Œ'D™§a¢ªa—% ÓsOîlL2çD1XA,g’1’hÚă "Ưô™’˜˜$™G â˜q&k±™dÀ€„èĂñCqP¯añLj’AÏ.çJhMçÊNIH1ñ ¢´œ$v¡Í\‚]H:Ç¡8¸ºHf:3b|XSÓ§<†(1SWP}©æèJH¨ăÅL] ‰ß³s([Ô!´?¡Á©èL ÈhJ̀9+©™T øsÙÓÔæp¼ßM§[ÈL˜y´$d&Ögp:ßB‘:ÓÀ¥ĐÄôíg†÷ض#´ _ª¹iP‚f™́pÀ(US J­e™­ÜXŒ$&éå]¬Ä!zº,Ơ™‰Å&/°Ö2x‰{üÿ½}é˜&Jm­ûÎÚ­̃ăÆ¯ hb‡ïjḷo›|=¥%”Â8(*» Kè̉c̀]]ƒ¾@‚BÎ0" Ơ´ơ¼‰}h¦€'Q=™ư±X“u<Ø1†ÆÉ®pڀηZcÏ˜î– {E»¿~tĂ ƠưÙ.{̀Ù₫©örU€ D4¶„sر;üđ{K;n¥«°…ÑƯF5Cé©LNFØi*.ucdØ ›‰nøöq)Xt,~A;hÚzqĐễ>vá4 Œº=®ºCÂÁ®XÚ¨̣}zbß‚·ï×ơ²TUÊôa°-–‚$B]j²zŸÿ7«†¤¥9‰µœß ¨ ƠgUÙ¶’5Aͧ-» h ?*·<È®¾ÍÁ¬A*oÚHń<)`§…¿Ø¸B/§Áå`ô8₫º½ØÀr0Î BµMu®‚÷@óª'½ª.Ïn)•èñMK á-€iGGˆÅ/ø”m®iüf‘n¿èÆÍm e¢gaP̃2ÀƠ‰ ñ¢Ây‹¼AÙÛÏ÷màƒçÀ ˆ5:? AXp}{¶xB!·˜¯yÇÉÎdàÑ ₫ ±!™Ư ZC«"́BO[‡•”B̀CØVz~Vu…ÙÔàyy‘:"JôÔº>¸;8Đôª‹6§ÅLºÖèz»º+ÀPB©́ƯôíMøëoo˜(ĂIuçXp¨Ă±r»ÑNR—¥!ïÏ»gH&R©¿*­³©<:F_eÛ‡êgQ,Äÿ3‹êï•E}:®Ûín<‹ÊĂ宨¾-!7¨>í²ÏÙnHöúúD\ÊɨŸ s Æ#äyRfmZ¡`›û§2«*4#w‹ƯœÜÍÅ í?ÊÅ].ư@> Øhl.A@‡b*€¶€ Œ´†[«zÓó‹qÚ‰!í:oÄQ—ḈÆK±è¥é@@v%¯|#ƠSÂ5Ù†>§¬ªáŒ¬­Ç¥ăo¢ÁP–¢[c9‚ŸÔ€ ¸ é2ÀD~ơ_}p£ç8øg ~óñá#]là%²/ăųƯ¹_°_4ÈƯâư‹5ß±Œrah¤dÈ…=‚9A …ÆÄ!pqÓÂß b—˜=´Ê4]§m€lͲf+m¯ -mpöâµ®ee÷́9C/a iY6’®}ú%ßÛzi?ˆt^hgt"¶¿Éw»™aAF/'I¬~·!»8|ÚœxnœE<ŸÓƯ1»|Á>zoÍc¨ ĂMÜ[×­ßâ"¤ûƯnå¤́*…Stu_*Øí¾Äđá6,7́‡^N¹O]m÷>_9ˆ̀‹¶ùtb¤È4PÜv´p-DÉ|H8́7D ·ªXđ’hÑê€ÉƯ`|`àŒÆ«µÛtWÙ¸́dYÚ\@•o0BßfƯ_sƒç® Ñÿ(·Q„‚8V¶¤3M¥Ú\?—yí¯ƒË¦~vÇp…¡¿ ö—±¢ínOfyVëû|hlđyRO9P“'€ ₫P‹nºh –¦Cú́«1`h— ï±ßô9wÍX«ĩàï&¯0nÚËÛv’¥ êÄ:8ÄĂ ̀zz•±½Öu×׆ Æ'!à>“|›¬(‡(’œHαăºÉGX^ ç ¼Ÿ†P}/ØT¾ØA*ÀÉÚcV >w°f¡-äh̀¬O•ódQ¿Áä ¸_ÿR÷ƒAŸÚc_QX‡&e‰~ö„0çÖø°Æ h£éZúvơúñ†₫(,qÅ ®Íi“—ËXÅ…‘‚AƯƯeóbÙíÇX’$,<"v³›øưˆcªjBä4CxÙ@MÈĐØ‡$]0¨áu #†  €ÿđjXiX« «’$ê˜DŸ|_Û1¸dỬÓÏÙơănkÀm»h^^"ÍpIyôæï¯ïnỵ̈ú]׋n?ñÎ ‚ô,rœ'Ĩđ¨7î€m*Uö̃c‰"Æ»ê&^';oôŒE›EàS©Åæï}TthđnƯ…‡îÜnt¯ ÈP!®b̉~:R¿ØG¼æăQÍKÓưæ/=Á£ö{ŪH̀}ùöŸ °ÛŸ̃ÿûCØ %±¯ÇvăKæKƠÓ±:²P¬`/oKO·¯é‡Ú¯]]j%m&üNÍ\à endstream endobj 673 0 obj << /Length 2533 /Filter /FlateDecode >> stream xÚíZIÛF¾ûWs¢«Rû §Î  ŒÓđÅñ-Q-!ÙCQö8¿>¯J,6W· ‚À€Å&«̃{ơö¯ªÈĂ?²Pt¡4C©Åúø»·åĂÂ?¼ưñ ăV0pƠùưƯ‹on…XŒ 6dq·m’ºÛ,̃'7»ô±ÊÊå1–°o—+ÎEr»Ô<9çëj_äö ÕfÛ¬̣̀u¶\Q…¥IˆZ~¸ûéÅwæ‚ $8›(i=ú‰¸.Cä­Å¥aÁ½¸ 1Dèr%$Mr†$Ơz³E›lûîåV¤on¥Z‚ŒÔRÀ‹eˆJá |LËưƲ9)$…†ánØw@ <ô…W]<¡È(YOÎ×Ư,`É@´ơ²‹’DT©zDơù1ËÓcÖEK`D ¥u‘é>=e–^/-Z„E’0*̣‚0 ÖÓÅR$™^ÜaÚë́WLxÀa¸IRû£“77µ›ü÷b{"RZ¸éÈ€åßÀ‹ |üiW‹OnäqvƒïxqXụ̈â?]̃܉4¥±Pï~₫á—çăRˆlŸ̃2ÿ́ùPí¼˜iY¦Kª’Ï₫Sµ¤:ùü¾®“̀ø´÷cáă.kRIxƠ°–é‘“S‚8#±œ•cH5ˆô-–+P iY Í7‘î­É-Đ©Ñ-Ë)‰¸ó6i•¶WŒyRl»V̉ E8E\."æü,"Ö±’&­@"Ùç^¯jx°"ZºĂQÁ‘Œ)5B±Oª8¢ñ,4ÆH¤ÍóÎ ­qÓ̉̃: +¿hÈÈ j#Ü2å¿Æ˜J”h›̀I] 3Ó.fr3IỞíËA6F¡¶NƸp̀lO:OY§€è̀Eq…K̀Yçà-s¹p…„j-ê´+Êj“‚ÜBùLV "P9 ‚’͹™ÉRi¯è<º$A42r¦› ‰À̀XQ%ô¶3êe9˜ˆ0 ¼ÛÄS oA\4ˆØô?‹÷º“hÖà‚¦g&Û*Ï:OYÔiÓø¶bÏÚgÛ’EJaæÆƒâÆèS1@‹ÎơuƠM‰–Ê×Öwi9Ü¿PÄ̀lvªƒ]añ+Ô{ß/ÂĂº(Ë%I@<ù¶ºÈ7ûüÁÎmsp>Z!ï}Ϥ'×0·Ë$¢¥çUfƠ¹̀³G̀¾Íđ9`Ҭº)̣S•:.²'wN47ꓟj{ZÿÔn¾aÔ>ĐߟüoÍ5t¦1H^îä´@WÈ&RfHùđjÉhRU]H°–/è÷đªªúÀ/4đZ}mèÛÓ bNǽ}øÙ $çc^©bUc̃CV9Ä«dp>(³ªÊưư¹Êü{+ÁfR ]31ơ 8 À¦%·X À¾ü‚}‡ßC˜`˜Ơ ¦ó!,•nÍwpÎ äc̉>\×D»#}z¬ơ¨0ʾiσx&wKø¯²83úç´+@'° àáPܧ–MSĂŸçS6” ®Ôʈ¶.È‹ïwæ@Àmô2"ˆĐA üˆk1’s|'û¶(»̀´¸Fx‚L¡†̀a.„k­# ÁA&…\Awj€‘úKÔ—NÅ·]”9T[À¸••¶¯œZ«—}™·+WZÔLiG®äOre–o^gÛéy²9^âæ Gb®Jï̀¤QNŸf̉˜Ô´Äµ"˜"J¡&ÀÚIóç,µù¸ôuJc¨Daënu,\ Ú{¸D¿o@¯¯o½gÛ‘=YDEÛˆ}ñIqËEZö¡˜C†O ÙàίË8£廥Ưnđ« ñÈ /&_hÑ¡R4^̉₫„Úø%.OFÄy’< ơvä×ÁeD¨CL†́q8g₫½w/é¶+áÏ«—Ék^uƯ“‚îÉ7B2Ù6%Dh‹NÓø„ïq†÷ëôp­Đơ A7FO/ІCäGó¬@œ/ÿ6§‡å †#ù;"XÏ+ˆ²9HO¶Ơ9’¦6„}9î¢a& Åʯόs„ÛóÀâ{E\_o¥¨K®}¾ï4Ö5¾0Œ>Ñ´2ІŒ+‹$mÍw´VŒÆm»[à„úóµăµ4ĹÀ¸̣y½å[OløtJ6Ê»k6–PpùUjöă¹ 5{fq–]¹ÿfg“ÿ9ÿí&]/Á&»lB­~?Oûß³/̀Ó`y!Øuч́x?lœ@ê±̀²ă£K|äÀÓ•¼ûƒ/aO*ÙÍΫj—Y÷ëï8P÷ơñ4!™‡f¡ª,ô_éùPù·kkƠƒƠùo₫û:ơ/ƒ£@›_?|›GÔX̣ï×·Â:́ï-ÔHËÏKÍ’™€Wuú‰‹< ™[/©&Ûê1唸¥bă½X™@‰ÖWü¥M·ê»Ĉ7ä‘,i½—b́­)OÛ‡ŒC‘nüÉRSô˺go‚`B#.ơô± QÜh$ s}Ăàeé¾R¦¹;Ís£/Zæx`!ºJ&‘6&"2áê‘öU±¡iÑŸZÈÏa {«ëM•2nR-Î<Ă€ h„qêp±—ÓS–|*÷U•åu[¸s_K)ơÓaÛ»aøÓ ´¶9î: ̉Đ ‡³ ¦hơQ w–ëP«´!IWRŒ5é_1â¾åNéññ°¯—´÷ܳ̉ïP}ßöÔ, endstream endobj 676 0 obj << /Length 2252 /Filter /FlateDecode >> stream xÚÍY[oă¶~ϯ0ú$k̃I8énS¤hÓ6›ó´]8¶’°åÔ–»í¿ï Iɤ-Yv6myˆ$“săÇofH6¢đÇF†ŒÄ 3-/¨ûº~ù‡Ûï.X7“hä7wÿ¹RjÄ(ÉiÎFw±¨»ùèCööiú\ëñD‘‰¯Ç)Uv5¶2ÛV³º\Uø‹̀n‹‡b]T³b<á†ê£¹Í —6ˆÎ¾Ưæ£+•M×åô~QlN6\̣œX£ö G-ÃR)b,{™ ºk!V[/ʹ°z\¬î§ ÿ _—÷ÛÚù ï'øÉrJ$¼%²“í̉»B@ œÊt¦ƒ£·¥ûï(<”áCcyûƒÛSe]„ßc”æ„”P¡RSvjïJax);t„Œ'F°́:Ø[­Üº€ »·.ZĂL¤Ö;#¨ŒÁ×r>³ÅtƯ °ô×µçä1Ë`“s‚@á˜O xk?䦨߾»’₫åWÊ$€%ËVHéøyó´Ú.‚íÆ}ĨƒØđü°­àe攕đ´Â§Ê£oÏEˆ†̉ÁÅ“ư}‡»Ùe¾éÆç¹¥ƒô¢.Ÿ…ÿ¥‰‹ƒĂ‹?ÊM½!~™̉̀5ảéŸpN˜ÓëJ_—cÁ³º~•,öGưçsñYlQT]b˜%–燹‚̃£_Öu_¾` 8Rñ“†:Ư^HºƯ‚ÎκÓeṇ̃ 6á¦Ø0 S̀₫®¨Ö®óªr>Ú, ̀1>À<ÖO_ÊÄJ̀®s/ư}Ñ̀]lV_wY%±²]µh™P]߀ËƯ@Ö@Qœ ‹Èü¯ßu¹²̣R ä@KArÑ®üAr‰ úÁÅInÔyƠÈ0&>\-JÑë|9·å ’ÛË)ØPV³´D¸O…HPdz֕¼O2§Œ@3FÛCÖ0ŒK ñÍÓé˜@Y…q4L(§Ö‡†í‚Úk•È5|·Ví /H-‹bÈ ©s"̀ĐFÆ|È$™è„̉Ée´z9MQ iÛOë馨»l Qѱ[8mF¸l-1[ Ÿ­N" ™Ê/æv¬Óº‚BsØyí†+Ưn]Ư†Î¦•WwÓ`ØïP0¬ªM=uEl”SpïDÊ¡î…̉µùU—V(lyk_p­C'í’|ÉƠẢ¡Ñ’ÿû\-«E"ÊñôM»i2ua¥Ü×ÅÓ‘.”I.í$sÙá/£NˆXê^Úcrîm)8dVá7w¨"jr áÖâ?Êê=V ;ú+gW¢ĂÑÁ‡‚sÅf@ ëéO%”å¡é£rÏ 4j¸w¥ĐŸyé 6 Đi2}8ñ´³•†¾pOûų¤·²‡˜|Oâ ¿·³ÁœËtvYíÙs㋨°„,4FC– E¡¹á©́>¢O&êx)™èĐ"b₫gÿó¸I°KŹ5_1i„±½ˆaèH…’*ˆnÈ…CÙĂÉô ̀LBa‘Ë=́?›=â–UvUúĐ=¿Î¡ëIÍÖ0ûfiø¨´ïpüù‡[̃ÓØ4ơ÷™BC EÚg̃î]4ü"[F?h.ưÏ…O&"J&2›cîX₫€…e|pG.ƠßÛ—Âr\¿;³ÊQ=8=©í_ „í-rœüăÈѯ]Á€­G{H5Œ˜b ËźÄĐÙCNàr‘8aE'c;*ÎÄ„îÅÄæTPl^pDq*ÔK/LRaf9¡L§4đ>L„e5[lçÅÿŸ§ë¢ê¾îJ¯˜ú`eÇ^ʰ;§ù₫ÑH̃ Ü:èvĐ›…Atók²Ê|ă÷ÊOú×cæ¡vĂjJq<ƒï(–b;,ˆb<54D¤¹dư­½9ØÈøÑx:[^|øHGsøOø¥}r#—#À¾ÁÖi1zñK¸ î7€̣Ä·®hØ [r Ñ̃ó!D/̃¢ûw”vXÈ3eă>¢¥má b½Ú>RY‡1È.₫“osÂ…„̀~‡ë6Ç\ÅĂt»¨ùeHe¸¨Vu¢Z@)º únxÀ+"vש½‹)µ 5@OE₫Yk)µtù¡ Ú|xưÀHÊÛ½ÜøMûëQ Îx₫ïq¹éậ«q̀z9­Oàó‡hàY´xå&¾ê…Æé7à°9µÙ;ƯƠLzHâCC?ø\tϸm4ÛƯáó‘ĂH³À56‰æ#e; k¥tl9ÀŒÅ¶’g‘iẸ̈ñÉèù×pƒ́Mt;û#GV‹Iß%³%*4‹‹J₫TV½^sRÀxa“E¿đ¹‘ñ”+TơÓí—èßƯágˆ9-ä·Ç{í°`ºJ|~ûĂåû÷×o9̀±¯ ö‡9,¨» ̃MysT…Ävy– ʼńœ˜ ʉơËđz1LÒĐ̣›ë»c̃"Üss–·˜í e'o;ÔY 0›sâ))¯NÉĐp›qóí»ú?â®ÔĐ̉ægET0Û$]­ê€Z̉JqEé̃*„N:ïgdÿPàE'/@)M­ÅÁ6̀çZHäÚyê=µP¡1Í^C­v#·‰Ú#$Ä`™MÅĐ²¿]§J endstream endobj 679 0 obj << /Length 1182 /Filter /FlateDecode >> stream xÚÍXMÛ6½ï¯ĐQb†ß"ä’M (‹ÛK²-oز+É l}‡"%K6eËÈnø`}Œ8óæ ‡$† bÄ!Åâ`±¹ÁơÓâ1°Ÿnˆ³›€á¤cùavóv*D@0̉X“`¶ê5[_ÂÛïÉ®J‹h ٻh¹§‘âá>_TÙ67oxø®̉"Íi4¡1–:$:ú6ûưæ·Yë\Pg#‘6Ö'p Cđ6p©DXp —!†¨&B̉00$¬ËỆ>»i¤öz}·È–ƯÛ©ŒB‚Áp0¡0@́¦₫X́₫Î[S!»¦B"®|Q[¾ ^pØuæ}Åûœ‘d¬bÈ„`ÙX½ñ$[‹<Ù¤—ÇPÄYơØŸP®g2˜@Œ‰°Æiµ/r›Ơ÷Ô₫Xl÷;û €×ÿó¤LƯe“Μ…+ˆ†½ê|h°"#îÂ"ˆB¸đ9u£$ërû·› ¤¸ncĐåáîट:‰¦´æ\Bù£̣ç®­?oäy A œÉă`0_Œ ¨º._y&2†ˆ1Ç39%úˆ&Kgæ^&öïÎ("á­¹ø8µ¿bÂׯOl9‚Uq`•á3¬6•aDUø1vMU8_ø(†Åe†5E«a†’<¼]°Ÿ9)ߥƠí óŸ"]FH¾ X¡"f2ö2Í;c\ ÖÿX€¯øÛ÷ơƒ\3’"/Ä5¥±3b¶ú@o[–ëYFTAH:Uư×£•ĐZ,Ķô*6FRœ]ĂËAú°DRë—*ÆBÀ¢3¸æ&V§–(¶0k[—eW¢®,_­Ôÿ«wùd>>ÿÈæ™:œåˆUö©5»ª'đ¥!v˜Q¬}r*º '£ÎơÁ́Xa}2ÖÙ¼HçH±Đ/‰™'^ܯ×ocÏö¯WH@\́_ăQưëˆJˆ¡KÂdPK'm+?m[áUå$ÖAójÚ±›)»Y¸RF—æëló1ÛŒÑ̃Ø.³Í@…¼°Êµ~U®Ơ\³!iĘ4N=Ư¬Jó0ñ47Ú-Gˆ×VRLwQÍå¾\?Å…ŸeFâDzh–^Ë´˜™®æÙä3 ½ª9¢ûËÅícơ¼K‡$í)%ô¬” EæÊ™̀Ÿ«´̀₫ư¡ÁÚ°™t₫’Å’_-ßoVYºöç}¿,·X'eéGÆ̉¬MîoVCïe`JU¼Ÿ̉}aʃ̣"ÑΔ^èa8ÊưéŒPÍœiZ÷ÅÖ,–OÙ2mº–Ơ¶Ø$‡3¤mw¹/í±è45âË¡ơ©àÔ]™áḶ›%Ø«K¬P| ±gï—(ăË6Ùq]Y&•IBŸ/©Q,Ô•% €7Êx)XÈÉÁt&³Ú-V°QkOÚà®h¸©›̃䌀ßÀs"Âyư"WƠ¡3j¬ßØeÏó­}”-Ư÷°9Đá~c,æÖÀp‚µ­•`i˜©eTß%ù̉^Ô‚hÆr[Œ¬¶-ê™7ç|JÖˆ¬ơ´OpjNÿ<à2 endstream endobj 683 0 obj << /Length 2659 /Filter /FlateDecode >> stream xÚƯZK“Û¸¾ûW¨öDUâ nƠ^2c'̃l¼‰­øâumqDjÄZ e‹”'ίO7>@‘’f­=$5‡!! Ñht_7@:‹áÎ4›iÉáz¶z|ÛÖưẰ=¼ưË êû- ă¢×óÏËz%åŒÆ$‰:[®û¢–Ù́Ct»I?Ơù~¾àœGüûùB½ÊU]́JüEDoóu¾ÏËU>_0«$bñüặÇ/—íä’I"¿PÓ¦÷‘º†Í('1èۨˉ¥pêrz¾E%(C£z•­IQ~~?OD”îQ+X³QJ) ‰g Æ å̉Éøàú(Ưï£Ó zÚeú˜ iÜöº9/gUư4*‰k¢dr¹¤¬x,²ê’Ê´®G­Ä)á`|ßíă·(úLËlƯÚ¹±±û~E©!°~ô/0fLA˜`úV₫’îA¡Ná@'ê§ "Œ÷J£Ơ|¦LB´2³å# {]~>û¼‚8 **Êơnÿ˜úÀ€†ô"ÂD»CíßñŸ̃äơíƯ+×ôe.5xf‘̃osâl‰»™Ó¨¨\ÿum4̣-û¼>́K?m½i¼(™P]pE$¡î=?Z²P”•„ăn`VFí¬vz¿4£$fkiEơ#ë9ÓÑ×OˆѨʽñ6Të$f!§Dđ(.B¨}’D)îALاV$¾Êh·vÍQyY¹}„æ.º¦Ôe†3˜*Ë)%9„†w F¦eæôpF JṬđ8or>eQz8e„[ÜÀEj‹|çJĂ‹Ø·₫S ‹DÁJ 7ZÔè¶¹ó…#(®¤]÷6€V d#Jƒï &{¨‰F°.`Æ]œ=V퀢tó¤¬àÖùCĂk«Ư"ØÉÛ•YQ>¸ö¾’+4i€`bxHí–ÔU£³î«° €S"ÿ˜ÄÓÓ»<÷ªl«Ư÷c ¦mẫs몯ïn|Ûè¶+«Ú+áuÙq¡bØ5féMđ>Ey»™s ô₫ÚátYƠ»}ú0Ês‚“„˳X®›« èơ®øO>ÊuF‰K(êvÓ_߀ª”!JĐÿ®’ ³# º»R¹Ç¢D¶b‰tØÂ`ÓW›9Km·?Wy]ĂKåú`€ckØÖ§®3Ä9$€6BÍǿ̀b8°PËp0r%7Ñëơ¹™u¤ ‡>9É~T‘D æ-ZëY¤s¦èíGKÏ›QZZ‡ D}wn~/À¾Á `³đ9ÏNM,^ÅŸ71¤ d8ïMCđ”|LCÜÅÜ3¼å+P®êz±Kfà´}¹çû†záy…Ï\.̀±¬?µR+ˆư ^kƠbIL´1¡^đ>‚È)1\Àp§@ŒMĐâ § FƒË*4aô ¯ëqLx±ơœ)À6øè`~9ß̣ÉÛºÚ9)»Ă¼K.&]Î(₫̀yÑçäÀ`7c‰„” ±àÙùÛ ‹p-Öbđ¿ơ7Çư€æo—‹Ú*×ë ư$µYÆÜđhœ\©°Ú“kr‚\ị̈_b*Ó:¿³nëơö*̀åëí„ZV”x¶¨_·ù—|;&2e™đKxú®¯Ơ¦á]’÷¿DÓÇE’H£ø1M êë,|Xí?A¢êªlèßfÆç N×Ă Đ&Đ¡Ÿ+^Œ ±,@R3 ’m!+^06Èd¥…â#\4Ụ̂L¯́̀8,Q̃`~ØeX¸p#B:Ú"i­Ÿg°>óhi÷¥÷‹ÛhÏGXi½̉ôî/Đ ° }nŸ7¤̉öO¨=ûđ1eđă@ßBÏlÏÇwÅÛÎ̃½ø§?è›ÔÊ&i¨Åp Ó  gƒÁÉRo¡¬«¸°á̃•ï¶–²óä¾ḱ₫a8—»1ô=ц–ZËÛ`óuûĽ£¬Çôß…­¡‚¶¿ F>âE|â_Ûíuw¿®'d=ƯQΗt{Åwp*aô%pŒK›Z®Óm… À¹ô ĐlÔ8@­í3́¹M¸ÍVqx(w‹ /®\óÓ¾¨›Áé>wnM®́1ÑSƠ£m÷•é¦=ç-À¸&Đ¹³Ø€0M P·MrµM‹!ö80Û¹}cp=°¹¯å—›ÂÛ°đöË #(s­¾Za¤!é…ù(³#‡í¦F¸9å1j+OCåÿ-ăÈ]·ªe§=ÖÑp½s(‚‰̀85Fĺ15ÑSÔ´4ÇÓ½M¾çl {$µÚä«ß*à̀)Úhmùƒ£.p:;Ơ$i(˜̀¨?0?¿i€óa¦zÄ2ñé9>¸#†Ü₫³F³­gàrF0(̀7±ÅaCĐ©]̀4Cíªù A(M ÇB9Đ!Kë´]Ñu«VJ47gk Øb"Ă4eHcĂcZH¥;uCß¶aÖ“íCûW®Ù&Âû2lsT­w{÷Pon}âÆBøâ‚ &éë~ägvA¡AâÓQTz¹{8èÓØ0Z˜äÄÙ‹$µ€óê§—ËÛ¿¾|Û B([ăYVÛ÷¼4{J&¢ŸAíưSQùô¨¨Ăs™6o:±(X*Ùå3¿ùVqû·wÿúû˜8Ư¥¨—¬c z9æ1ÇØËN`ïë» đv¸´²Ûăä¼àw^¼ók§îƯơr¨R(g „,fª00PC oíµ÷À¬Ÿ·‡{Ç'‚÷iƠî¼¢ö̃ˆÚ̃äÅ₫Ó^–¯ßăYbºü²—xè#¼4÷{Ü:Iơ¼›<ÁOº\u©ÏUç«̀?ÄéFæFœE]ÀØĂ[ ª O†ơXlƯSrHÀÆn(à'°ƒÍD“65í§₫µûî$xQf\”ëS4Ӻ׶F„&› ú₫HD½ßGR\ˆCÜØ=́w‡O'ƯơzWÎÏôH1ê‘Û–B¿íP¿˜ú₫JÆ„Qv  Ú•ŸÜ…B­»Qú]ÂZ7GpAíÆÁó̉»i°Ód²Œßı«Ÿ°Lë’Î$Ps-Hks@í:ÿc¿Ắ́K‘5—1Á—Q=ö`ưæö¸cP*ÚO9Q́¹§ŒÇ¡ ¼W³¾ÿéå›)€Mx°:êg¿2ö’ÏF¾= “B¼øë+è?CÅ+5üZ¥e7L¼'Rn•@>£G"\|ä338đm†ß¦@̃{{,›£¯uđe§Å;`©rxB, #̣Æs¬­Ñ]\Ư²Ç̀è<$# üè̀= endstream endobj 686 0 obj << /Length 2339 /Filter /FlateDecode >> stream xÚíZYăÆ~Ÿ_!ø‰Ví>ÙMypv¼ ̣cwàÛ08RkD„¢Æ$åÉú×§ú"Ù©cẃ‰±À,%UuU×ùUIdáYHº!Åäb½¿ĂöƯúiá̃ÿéxº®”|¸ụ̂ ‚Q†3²xØzØ,¾K̃ị̂çV×Ëc,a_-Wœ‹äƯRñäX­ÛâP™Ox̣^ou­«µ^®¨Äi–P²üáá/wß}x@Ÿâ¡v˜«¯&Cˆ#Ú[j.>c·_ŸŸóú@Ÿ=¨‹é¹x¶ ‰ëÏÙäm>e£øœÙx¦˜B@ Ïø^›¬tăb*7ÿ‰ä¯º}{ÿοƠ¶uñxl52¥M&»Âo£·$ú0íøƯËu^–Ó¹Á8A„̉ £Åá!IX :lƯ±¸Ÿ—B$à¸ü±œL xÊ”¯¡ßD²EJâ·½qúR¤ÉÀñb™VT1wQÔé-ÙUˆ JQ,£2>w̉³ Q*U#FäúÑĂÀ˜BFœg yÇg₫˜]Æ0R„ÆLĂÔ›•&R˜ÑG̉ñ8ÖX”E ₫ºj£ÿåƯ8 ¯—4KvîƠ¦Øëªñƒ°Å ¯óÆ…L[æŸ7z›Ë6H=x0|đ¼n”Ưôñ‹ÑIׇÆä×›¹cœ`B"…ư5ME±àsǹàƯÔiÏÌZo$‘س{ó×#₫z8/J 6±›øwe>œ`Œ24&/ÚV{3æå¡zr[s«IssknoU?ñ¸‘,V"T¦ñÄĂ9‡BÈƯ=ójrđ¦d¸“jjdG¨Î¸ïE3ÚG5ù₫¹,ܘ©F1]»¼œ RIJ‰™@̀µ¾×ÛëJ̣Q#†æ-É5˜6âOZ»de|„½¿ ÖqÆ »“ỠÜ·Ûë ‹]¹I ©@À5!âñŸß÷‘,CË Ïd1«+V~lä!ËÖ¶s>€̣ơ,» Ư°Dû\8ÔC¹ùñ́¦ú†³*ựău[ïs$N}FgPêlê¿·ÖnLd™:¥H»çÁ‡J6¿¹œOi /̉XX#|ŸñS÷% Y(ÜR ¸íz÷Ưx±Mgærñb)÷ Ö0 W.>ÜưĂí2+Ÿ§¦I,n]8ä“Icµ·î̃¶{\e\â u62tà¿„ tiÀ1³V‘6/·Ư^P‡³ §™å2Já"H5⻄R8Tî4 Ó/§1*!å½ơz1ÀU†$ơ­1 ˆBLŒøf*28„dÈơ9B́-á;qö-[£áÿÆedYØ›„_*aJ»ùØƠ>OêóÛ¾·[ÂÂËc£½ÀÓ…£:³ṕLE¥ñe¾¸0¯f‚D<óûÈî L®NÓ›$ @"‹µ›343S´£Ùêé₫=£¯ơgW¼ĐÚä¨ Ö£CËWY®ÏÆ[ưôÍ´/¯X²¾ƒß§›ñ}±¿µËk4âö€s_§ŸưzíªÙ]â üMĂƠuNÆT?an ˜·h­Çê*y)Ú]D¨’b¶›¡F (8’:4άºvЇ¸Œ8‹j¤AØ9¨¤qqrI!ñfjkt́¹F̉1¸NɈ]·à’Ä)å²ûÊf8>¾~3º¾+×à2_rá-©ÍT™ÁRG8ÏenYNS“̀¤æÍ_lx¶¼₫ÓóƠp̣ç¥'̀œ4v‘–ƒÛÇÙÙ-9̉øK`ûQÈ̀ÑtfäQÊBƯÂÑÖ$™Î‡!?¤ƒù…NÄ_T‘¢KOáV3Ó0op*`OËÎ!Ÿ„¶4æC—„Ù5ÛXØLnø8ä…Ù˜ÅWoFW÷©™v©Ùo NR”%!öh¦â¡[“N&'3L§¹IOrĐơÛ™`Ơ?ßæë%#ÉN_Ÿ£–Ư±îôl‚̣ªŸT›â—OưQ> stream xÚ­XKoÛF¾ûW=‘@´Ù÷£@/« 9¤h¢¢‡40hr••H—¢äßwöA™¤IɆ øĐ́̀́7ß~34I0ü‘DÑDi†4SI±¿Â₫mû% 7̃^‘h·ĂƠẠ̀×ÍƠëµ ÁÈ`C’ÍvèjS&Ÿ̉7_ó»Î¶Ù1–²Ÿ³ç"]g§Çºèª¦v¿đôƒƯÚÖÖ…ÍVTaiRJ³Ï›wW¿mNÁHpöÈL{ëéj†0äÛ§K%‚‡tbH°l%$MkH†¤]QnÑÁv×Iíֽɻn6í>ï\¯×R%„ #u^q²¢ IB‚ÓfW̃lÆB¥A˜ĂoúKæ2‡Đ§°vëăùåÿ`çâÉѪw²‹)$…îíÀ‰V£„‰‰@j‰ˆb‰ÔQ>ö°î£íP6*Óî« 7eH3<Äøp¯̉f;±|o»7×ëp¿«nÛ¼ựº 7­ím=p×ÚoUs<\ˆç ÊnWnt² WNÂ.̣ÀÅ:£:=îm[áÅ·Lđ4ß]½]¹J(Âd&0ơ₫‰&H‡FFe +)`©¯,̣:ärë¤q*åÀGï@(DaáÈÁO—¢JŒÔKùºc÷ßé,Q#%Ê3%ƯIúô'%üø.Áˆ«ä»·Ü' Q@'»äăƠŸsê0HaŒè²b—Pˆ3ûe #9Mử~ƒÔ/zu6 çHIúÄ0àĐæq°2&ÅôKĂªRjÂ'Éo«îÜn9¡Hà'î– Ô5O•ƒÔi.†a1Ê*— û¾0¨4Zâ ç‚FósûX 2åø¥ư "ÂÚ´çâộæNµ9F EgÚÄCB9ĹŒèó0¤º°¹Ï¬7 ,9"’¼H`©1zøŒºPƒ495ÆËØÅ†0&V„¤ÜĐƯßôƯß|n¤XC‹©v»GNû¦´s=]HĐ½8@¬!ÂâÜ€%’Æôkë¢*ç"À(E°è­^Íy‚¡î‰!³Ơ'ä1ˆƒ ÀKOn˜*ë/~0Đư„ Áဦ¿ß7¾s–§Ÿz´đSbâ0(Ÿ÷̃.äJ¡àS°IŸF†)—À€¼ËĂëRŒH`¡û”m11“Ö“…† ¦ÓMŸÍpÄ̉nn² ¹;h ưâ:"®̉*Î`ă" # 0LJs-g‡+î„C̃óäT½PN¡§~‚rŸ·~‰ ¶‚́g•Ú†̉O8ÿ‘kṣ́ g=Ääiâ_Pv6´¹œOƯ,gä„„ÉçjåpÆA+‚¶ ¤M<”¶u1wö'¢ÖkX/ ”ÀVơ4}Z̉”pPƒ¨44å˜Ăß™fi[uö’{:ĂM‘‰Ae€á_ü΢A×Ä«?đåê0,₫.üw ǗlùsäFøĂh .»0æ×ä9b\̉ØU3Øi¤Ư'X@>v”ß÷wîÀÜé6~W£CöÚÂÉ.̣Ζ÷ØŒ«ë*è@y{ïˆÿƠÀÿÆ-¸—#®\—Ó†- Hß±9â^Œ{œ‘$By_ ó!Eæj¾̉Ú›ÉB7Ûª;̀1î&M…3 Ÿµ×Çữ̀}2r2<Ưµ/fUÚ2¼ Lư^Í₫.ïªÛjC75ÁM¿ƒøèæá?"đԩ=Ä‚¹·áúöư_áæ¢ëy…Œ p™*,‡ïIYØÑÚ±{° æ™ê®å‰ œẵÛ„sñ¨o2Zz˜îQ¼=¯ºx¨Ç^¹6 G$1Ø̀³xÅW̃&ô"«ÜØ9Aº›Ñq“@yQ +¢̃‹F¯y8÷·¹›FƒE€Ó‰Áv¢1v(_íĤ³í6/lÛÿ‰Ë\ endstream endobj 693 0 obj << /Length 3383 /Filter /FlateDecode >> stream xÚÛă¶ơ=_á·h€-IQ·ô)i“ AĐÍ´AĐôAcÓ¶°¶äê²ưø)ÊöÅk’"ÏưÆÑÿô¦4›²Ể*+7ÛóV‡Ă†ÿ₫ -û^`ăK´ó›×/>|—ç­̉ZƠzóºßäÚ¦Ef¼×Ưæ_‰É₫ưúăß¾H¹ÉÓÜfÿçµ~÷ƯƯ•Ùè25:·x7’aTá ¯ưúryzÉtâº]ûŒÊ<ùúé%/²äû¿₫ƒç߻Π͉'?Ïo§vËăŸÚ­ëF‡xß’¨‹:­+»y¬)ºêŸOU–¸alûÎgY’=ó¯©ñ×&?Γ¥J»yÑV§é"Í”aHî/O¦J®C{8â`¢½¹M §̉̀Ô¼o˨6Fí%K°)Úö»̉ùC",p´ö²€'Âî;$dp‚ë/ư~B$̃ŸL™4ƒ‹öôs·k&¤W'ÏLăƯ6½tfMZªzST2$è4‡o),ªT’øz%½?ÿ`µ+brn¯!ªÓtùêÇư¸Oûáđá5kª´Đå µÏë ß}ȯJ¥Ơ¦È«Ô ôÛOÈA7\ñ§g-°I;2/ACéë¹&·ăµ©çß-ªB™\yÖṭy×ÓĐ¾Í“ˆănrĂHă¶N.è÷|át„+Q•è[–ꜱ;‰3ä°ÙÎgבî‰`á.Œ«Ç¦;´ƯWÚiMO×ËÖætêƒê¸]ÊJˆ ́³…!uVđê¬`|~\s~£};=4>Ũké´På&¯ ø…ăg8₫z$R*±đ¬Œ,Vƒ…ÇŸÊ+A¿J₫¶ xæ•­ØăÉí'₫xîû#™JôṼT*/´2é§£“[XÔ‰ÜẸ̀!>ƠI?|S–̉=˜µ²+:2¬đؔɹ'^xđ*’ËĐl§v˼*„xîÜØ:'çYW‹dj>’ øåF„rå½l³\‡<̃ơg¢V£µ„X”eJ.)¥ r•ŒGƆŒ< ¶¨[¨̣a:Ê€”™ù’«"ùæ*À]Á—i₫7@˜fÏsT‹âÀ̃Eq`Æ‹âÀ„0„'Èâ"È:" ¹M¤æfhØĐœ»gQXqº Œ@™°‹Å.ư‡“Q|Æ%‘#ë[é5ư2ô‡¡9ÿ×C?Gr„»fU+Ê?¸sÓv£—H³àùräí%„¨Xÿ‚)QTP Á8<˜GÀäf­J~¥°ú̀XD0ˆc”’U®\ƯĨç:׋›ˆ¥ißÚ!ĐhJ3BcĐS‹À[Ó¦.Yœ¸±¢fLụ'̀P4±·4—ˉ\7MNcÏ£I~Q[Èœ>›.‰vĐw¾pp'׌~Ç+äü—Må¼ItÏ 2ûA¼‘^\¸[J̣̣\3~cNK€h$ÿAB®¦uX‹uÜzŸ—Mø9½ó :µÖnl]¥ÆÖ|ơ¯G‡×•F¢ GŒ©0M¦9i<üNâd ,¢9¤ˆĐĂb}*AƯ`3qtï.q,…8¹LV@q4„åËÊ‚ÎÆ#̉a%Ÿæó:g«2£j¥sh**́ÔÊ'Ă2á¿‘-ĂLlvOÇfâ5O¤Ÿ¢#l&ªˆQ~•‡À¦uÀ7â9ü ÏUq=¥Å"à²Î6~k+ä₫®r%N®̣Nn8܆^@“|d´O( ^)|Í›5YH.3›KÖôTjÂ1K8On;ñD”eàY(½ˆ «˜yÇ#3³í€ 9V VX$ç<̣x?éÀhÇ{®́6lL¼U¨€@½ ÖŒă³ơr¶÷Sï ²ÔµdRà̀O–’„S‘KQ×br98°.÷¼rؼûH¹Ư'ï#ae놩aí`NÜ/$í[{j'©DŒ„Ape·.fLTºˆăLo•BA¥k%ºMq¥ja%Ïä̃,¾7ƒ0Mqf×ù© ª; |³ ‘nK9dĐIDiÛR±B¤̉Ư¬*̉̉J4…¼Å0æ¨Q4çˉèÑab‡BDüŒ¡~1ç‘—{9;Μ3ójĂ‹b¾rÍûÑIMXŸZCÖö~Đđú̃y ĂäŒhÎăRÅ<"¹̀ ‘’/Íèoèø(ñÓé£P¹½à{¼ù86g'˜1ăẶ>TA¼Êàå¹*}±Ô₫FL¿Å›gK %ö î8àqÅóÏœwV(ÈZ–B÷¼FC`‹ºŸBÁGă VB<‚ñVØ‘ÑVÉ×ätáĂâ`rƉçÁñ2Ø3¯{ǃC70ÿ²d́Ă×+Èq×|ÖÛáÖ03[¦¦’ü,ö,̃;ÅÜÉ[Ú₫â<3trzB–Îȸ%z Zbp¾fĂÁÏ?±Ë¸rđÁ>ơ*ïÔn<o§£€ ƠD/1”€¸ËHBSV¢1àÏ ¾ày,æwÓÁă˜Û=R]r›”4„åœ=thÆíÀyDÀ°½ÿ]éŒ-öFüœ÷ă¥h…É¡ưÄQävÿÉ(5qcȗΦ'h²ĐÁ˜*:-Îx/₫È"Îú{-Q6-*‰é\qˆæuä4LU¥YeƒŸỗç©0؉íù’¿HNƒ™êY–,À—ˆ(Q¥<ÙB15p-“ƒG¾œ¨₫•ͬ“tlƒ­|́z₫!úJŸyv¯ ¦̀S“ u{ï ¼Cơ²ÖJéÄ|GÉœ{c_C* Sª©¿d@¢EỲ „®æb›¼äđ‰Ya°æ₫ÏÜnô¸± 4,AÈ[PDë#Ï¿­:>DÑÏ&U•Ḍ7ªl0çf`ß»ăܰCº+]ŸƯ³ï1ø²̃ç›́›|rúvrg9ü̃ú†ƒt*•đJRÙf’p*—ºaè;×Ï#k€d}¸‘¹rå 7¶JëL:˜!¶#ôkÅÏ Oâ\0\S‡F'é#ƯÈLZ‹~é}´eo9[Z ¥`IwÜĐ½̣ŒÔAbø@ŒëÍ ß÷eŒ:¯f ÎÁ\QØ₫O¤;Ă:.‰Ç­oû‘÷ ‘Ñuê+@À¥¥« <’”|î ¸?P½‹lQVŸÊf¬ÓvÿØ̀È?>¼4*%àẃ±.·¤½XĐ¼Á́°…t–̀˜råå¶Ûöç äFئ¦hQ?Æ,>º©SŸ {̣*ø!̣Êyµl^Eéd.2Ê«uÍ—W èqi‡•ârÍkø~'ẁ·r3h¼º5:”&ü`°QM¡ë,Ơ¥ˆ§yăhŒù¿lçaôjt#zÀ¦‰µ‚ºdñ»y;«́ï Líææäó¹wÀâ¤̃í’ÎJŸ Bº8:’%´¡e#ˆ´’ºµ£Wé%MUQÄÑ•a ©s‡¶r™9¹\sS(©¥săP'ŨŸÅså=;Œùƒ¾[á¡÷)aiñCÀÂ#”)ÓjŸöÍü¨ƯêƯJäWtQ¤U²~t₫%@lÅ‚´æ*ùa/ï ^5üÎà\QÀ­1ÎoàD8äµb7°̀eb±<;€́{ê(?ó‡÷èó®_w¾ûǗ’xp`ÓưA«]çYZÂ× m(˜Ö¿Ơ¡³>ÁE ¯5̃ûyưCÈçzë…—B̉ºÔ9 Q”Œ¨Yº1˜ƠSID¡Ui^ …½T¹̉>¿÷DÚà²OŸÚ„Bu ˜|ÁØ„§Jz ‘ºpưĐ1AÀr~æĐø¤Â‚₫ä™åÍ?[æêÎñêAp5'O4¿L°42L¨Sæ“<£p˜Îuô ø 7ÔZ§Úd¾ œäưr\sRˆî½Q²èß;Wc…¯4 ØÇi^ÜÏ}¹̀ƒtüy S ^ËåAuÑ+6>OX¶V—i]¯Ä>ƯÜơwæ’S“3¦7OÔ·»U~[$̉äOɯ£ÉàññWƯ03—'ƯíMôă[‚E¤;˜B‹8a=ÔÓ÷YNeÓÊ©äÏ4äÛTÚ€'Q]y _†ÖMÍ@å¹ă|iïÑÇ9I¬ÎÉ PèđRû<PÆÍœÛêÙë@¿´ât z¤^¾¿Qê+À@av@đÛåbs²ÔqR€ °°̀‚Úă%/₫Åa`·Ávß:²ú³‘× ?éJ5ÿù—¨äTÛÉû.ë»éK]¹ÈóÍ„¿n`vIŸ°,ÖvÛøMÑ[lø«ÿNßn› endstream endobj 575 0 obj << /Type /ObjStm /N 100 /First 858 /Length 1402 /Filter /FlateDecode >> stream xÚƠ™Ưn7…ï÷)xéỤ̈́g8$‹ @bĂA€´§hë…"­!̣ÊVpüö=³JIŒjY+đ…Mz5Îùf†\Á>̉ʇ ¬ĂYå£V́1 ƒSFŒ¤Œƒmde<ŒcP&$ŒIYm Ÿ´²'«¬xINYÏY9?)(çeLÊa?ÖZ9ذvà—5)¢„‘[0ö$́Å>± ööXg\ñm0’ Vƨ"BFHF;Ę¢ÄíñWÆ*VÆ Lè3VÂ4xàÖZ]̀†ơ¼;ñºG¿Ö£ñàÅô«:×rÊ'_Z´U$SÆtQÀj«•FX?o)> stream xÚZYoäÆ~ß_1ĐK(@bØdóÊÛf}d{mx•§8-N¦½rÂCZù×»ª«ªIÆ€±ÀN³ïº¿ª–Ú%đOíÊtWVY\eå®9½K|ïđ´£Æ/ß¿S<ï&̃¯f₫óáƯß¿ËóJâ:©Ơîá°̃êa¿ûoô₫|¾½O«Èv{÷ơö>˲èư?è÷ûOÿÁ†¾·LK½?Ï­k¨ưƒkl7ZØ@Ơe¥úöÿ~÷íC¸Pæq®³¿x{™ư†„*Ư)gºH…„´ˆ“\ ß₫̣ăg¸P™Gï?}C?}úæăĂÇŸ>}Æ+]2!k•ïîU«´¢M’øö¾(’èûk¢tç&×wcŒ‹w*뢆éE\ Û~U™~8ºqÇb×`và‘©§ßçÛ´Œ v¥Œ~ú­™vĂôlÍtí™~«"â»–óøzq’2ë$®*½+Ê,Ö9Pzâ›~èÏx₫ëà· ́ nªU™v́±¥¢“5ƯH N®drM÷­ûâ¯OS[ƒ/#}MG3ñfçsûʼkd 4úÅu{^‚4ăï îÓ_Æ;øǹÁ#‘¨̉²¸Ø€â,aÂF{rMßíçfêâÙÉŒ_Xh ́ê‚+:‹ó"[¸̣ày®ªèç¡̀醾‚øTIâƒ>Óy–ЇgP½â¦yly§’è«%1íékîöÈ ¿-itĨk]Dß7@¼îÙígP)Ö́–ôĂ“éÜïfmP+Íâ4)w…rÊ‚y¸­̉ÈkPåor‚6èÅ̃^o¨×àOˆ:ƒ W¬%IªŒ^©÷0ô'êï̃goÎu™¶¥>;›,nâÎo|´×vo™ñˆ†.z˜md–$18:"u°ÿŸƯàº'äU}az5é$b=œÜˆä&³qaŒ°“–¥ÆÉ|¡ma=9™:’Iö«i¦í‰·U¡väiDfË@›æv —{ñJ$¿QĂ¼*ă¬ÔD’øÄ8Jº¨‘/¢V^˜Ư¬èê󭧉cE£+g‹_´fhe WYiZF§\â™f”›đ×7΂XIOïÁº’lëøß/Û6=Îæ» )rº )¥?ȉÀÂéœBĐî…!Z<̉_ /Đóº‹X»,1ßZ]gql.z4̉vú³y2Ŵή7gW q5Ç9kT Ơ ©¸F ŸÆÜD=:X—ư D†™ỢºÆÓé3FÂ}ĐrÏ₫+nÔR'q©™ÀW/Ù—Áj̃mj_鋸«  `81ƒ“Ö±g‡öAf¹î€kÓ©Wœ;41ºfYÙl‚o)+ZïJ_ĐưẓR0ËÆ‚;ºJJZÆ94Oưj›™́R'©g'₫¢øñPöןÎóäĂ/̣ïÊ—† ưœ÷|›ƒ±N–:‚÷ẃÑQåƠÂÉa®kÚyQd½¶¾»NÀ8­™½§Á=δ[¦ÁÛ'yÂz¢Éă/öfè:Ú˜Kăo«²0ÏV^UÖ['RäZ‡¦ØàÜqö€Öo 9jréø;ö'{Åă%*Në’èhú™Tap–ƒn¿˜:¸ZŒ-qÙ+³mÛƠELÔ•¼² ‰Y–°ëñ'ª|½¡C?Kh¯`£‰·É’‚wâñµÈƠB”YË;ÚaËvÈ?̃&Đ–`ŒÂv ÙdI¸ A!¾á.8ÖZB`c9Q\‘£ÁªTÑ`ëmd NpÄm@Ç\V“!9ŒØGÅ̃ré²9 ưüt\E$½2œÑÙ‰l’œÜơẳQ×óNđ@"ùUˆY¬nc|Àø‘™g!@vưÄ‘¯ |@û¹†” ÉÚi­>0~ÄWƠ–#ÏÂ}`êyJ‰S¦ñƒhCă™ÀüëH“Pµ !EœwØùƒ}̣i4?Á•) axLX1F®Ä  a¿N¶OWU¢G0Ơ]÷n:­âŒiåP´WiüÙ¨{çÂî~ ê±Æ˜đÎu<æ3}v£ó¦k¦™ ¿9w:…~„>·œÑ üi+î\¦•Çi*~á-ËJ”;`ï;«d…¥¿AJ7ÀÏ <ĂÈM çePå2X¦,m…Ê?R“µ¤tÄ ƒáP%ؽ”p¶Ú}•ºđu yAŸ ûƯ/«®’Ÿ¤qRÔ§¦UŒ\n]…-÷bø™h)P–^àno÷ẫ7t·Kú‚Ÿ«¼¤\i @Ư×·dV ™à¸ ,lu¼gGwÈzM%(u\+bA‚ÇúQÏξ0m4‚ï$o±œ¼Ió$úx¨Ä×–Îf ]gÀé’¦­Ạ̀hd±É1‹ă;Ÿ‘ûñ+N:+ó¸,˜È₫́Ó7ö`K¢¾´àñÍw«̃leœ¬œ=IîxåæĐ­Fµ!µ`íb˜6WT9ăt®ç(®ç|îç¡a<üs_Q^ ¹™N!¬s>MyPB^q”m!lSåĐtCƯ‡[†’ I ©ÖÊ–,p9yBắ« ”=àưp¢–Ùzæv¯ƒœ¶×¹a£+Eƒ,­c¥™H©O¹ÉÜÜûdöyưf›I¢.û6«Y*#>@v÷ăáLΪÎe¶Ỷ~ô6̀e*ˆÀY2æ\)å%Ÿ'ƒ}O=×Aí†úän)ç»đ{û̉Z< zIËpâz!‚`dÑ8₫ {ܾ§J¡åÏGW¸₫ªsLë:Nóù7ưSç~Çåi™‡½Gú¤ÚÊ¢h>A¿ĂNä7Đnp²×l4fạ̈7₫‚÷9»jBʉ½^£°aèÇc»fn wŸ)™<¡¶½Ñ©´*b•p 5ƯÓĺ¤¥V ØL[ô₫½eƯ™)|MIëÔS µ½$†ă6v2sq%†un;û mK.́>-ê8+ʵƯC†æơíud7¥À5?1₫ 燀«ư7åeKâ·â„M ÛpHhÜgÈwÈZ…§¨6‘K±×U+U»HîÓ¼ˆSÅùĂ˱oí](q–Ãæ¨X*µ@°½|]T–:ïçNT®ƒ×¡̀t¦*æ—Û¢̃S¨q áGøÍ‹è·kW‚“²Kxà{>ν^Ë¢â,6Ñ8Ơ`|U}J+ש/ăùÇÚ4ÀQhù«h¾ |óUJ¾JIWI¥¥” >2ÇàÂ))&ŸÚw^›Sÿ₫Y…ơ!ơ`ụ̈&<²̉””+%"ƠbC*¸n|¹ ×Írd:Jaiơg,åŒzU­q§s»)d„BúY„Fäí2rµà!1h# Æ´¬9ëƯ)¯¼ê1lëêaR`̣^c̣^P̣Wñ\„wü¥À˜s₫N^Y¡o ×/Œúô‰úêc]êăJB!oĂBèû€¥b­Ùl»A>ª,ĂÄÂüùêy­RCWÂPœÀÿ¡lO:q2sE±’Ïè˜ÂOå“Ơ­z̉RTJJ¹‡Î¶wÔùù½¯O¾Đ÷èÙVŸ¡·Å¥í,íéT ¯àÎÁL̃¨«ª“XË‹Ë<)™‘cLÊbI}(£­ªE«̃ºÙêÑ3ĂÔ2ơ4̣]k¹sæ²iŒs¯(³ k>ruÖễ?U–1Hœ‘̣pU‚¶XJ²}ÆSŒ„Ŷ NR7C]—.¨‘´¬]GQEçe¾ d:Ñü(sưÙsñO3>¾¡°Ø6ô³zèH4=t$Ù–*hüF>(àLy•ÁưKÂjlˆ™nw¸úl¢t딽Dg-Å'-e§:ẓ肋rĐí:@Tm{'åhw7èe[ZªÜ¬“ø2o¢ ¾©¤}ø}”ü_sC åDơcÜÚL†ZXṭµ¡Î5̣Î@6ûö%‡„¬–:*?¯ôü×0p÷#•À›åo–ú½µá5” kËѵ0ü{Ị́Đ@+0¥q]»X•§6Ơ üs§?â^Ød endstream endobj 701 0 obj << /Length 3442 /Filter /FlateDecode >> stream xÚZ[ă¶~ß_aô%2°£©Ḳ´Ù6A‹$]$“AÓ̀ ‘%G’w3ÿ¾çF²¶X`-R$Åsøï\8j—Á?µ+ơ®¬̣´ÊË]{z“Qïô²ă‡ï¿~£dÜ |ˆF~ùøæÏ_Y»SYZgµÚ=>ÇK=vÿJ̃Ïû]%n8t¿ị̈˜äk7¸©é¹÷Ăå©ïZ~₫¦kƯ0;X@Ơe–h»ÿ÷ăßßüơ1lÈj›Z“ÿŸ»÷£ÿ‡đTÉ”:OuV‚PEY³{ưßđ|AÖ$M n²¤™o ¼È€X3öÖnÂ!‘¹Ü1q“ô 6>Ϊ¶”e+“•PÖÏûÊ"̣ ¬Œ&¾úƯØr¸U• Ø¡ŸI`oçæ…üR‚TÍ, ‡‘­ä;sSø^é…|÷0̣/9L| ˜ĐÉÖ¬Ă×}U$´•|ê–ăxYGzÆđ̉–±6m©R›‹°óÈÇ̉́*<èƠzè}Œ8NoÇHvŸNÔ&x¸SÓ ²H7‚ni$ö|(µ‰Ï›'7/S [ˆéoĂ.ª̉x÷É|iñÅ‘[x°Xî.3cvy¥¥ă₫éHéPaăxÁF̃»äúŸ]ç7ĐéAL¡ÉƠZdÿM€$-x½Ø%,#¥?{¯jè§x² 'úÔd‹¢¿KX7đza6f )oj q̣÷,#SAØÊèÛØË¡i†A£Ïy@°"¸à ;»óÔ¯»YÖƒ%Ó†ö“¸₫›Ú ÛQÖwºyaR#‚î/®*9 "ñkRkñ.0(µ¥8ĂÁ|±gÖˆg‹¬ ̉ÿÈäpCđ¹í›îį"§W`܈Ø̃rl2 *€Ü—ÛªT,÷èK#¬ j60à6ÊêMÀ/ȆÎLø•ư”$dĐÛÈJ®¤‡ç¢kÀü Å×àû^0[üÂGùU?›¹M•U™’½g ùWª2a[_„c$¨9ö‘9wtưêè¦+GÇềWC„=&̣ÊËE娱Ü‘a{_ ‹Iç®6â£ß‡ü2†ḶOôÁnz‚“9ùº/€÷h +9PuU¡b e•¡l–Ù¥Êo™ tư§*³ÆđLW¾R"ûL̃‡â/ÍăÔR”*øă p+ûŨà™×çJ8M áaiø¿ÔV²wè.'˜m³"NB‘=JvăSØ6°’uîÚËx™)¿-36Oz8cÅbâÅùwg íæ#7ˆ°à×5Ưhų¨˜ eÚM ¬«,µ¥ a‚ÿ®ºÍƠ¸ÂGà©/¸ÁY¼;s«cd6- Ơ’K†9370¦P©P{×U\ró)=„.8<Ü%]”©ÑR¹ÙÔa} Á—¾¥̉¾DΕ¬̣µăäë&½e—I)“Ïœ°G•P^o…ÎXUª ‚"øsø2ª¨Ë§̃y««ú#?©­Iu™ûTỴ̈ØúÓ́†V2i²́ c·×S#Oø ?îÀ/«5¬ í¤+Be_̣«oñ‡7rh¡ ÑH5M‡R‡fƯƯ°«6*UZ Åđû”£ñ₫.»¡ˆ6VÊ)ŒÄÍôríॹa Q&₫E‡,NôVêA&2=̀ÎÑj¾Ü³ ¹̀5éÁF)03r×Ă£ƯĂ®($¹ă‡´̉inEúù"÷ªă$é÷L{oSKđ̣T]â0TEäºíÙ¹{Dîrí÷ ߯u>Ỵ̈ÿ]Ơ‹ÉÁ^¯.ÏÔöUâgtJ¡XÓDñJ»Ùh¶¡w>5³‘Xj]saî%7]<"DmûŸmnoBù’ÖCRÁC.,©• ºw­v©:>V”V—zcoÙt¸–çk„\¦;q—·Áà ÉJWg¨C2é-WfŒWx€†‘/_]1Đét¡&¤̉Ïă-T°W¥})Ϲµ"!5´ơÙßƠq…MQ*$ŸÓ²6­ƠUÓÜĐƒÂûÛÊëTg6º¤7YW¹ƒ’*ùa«K¡x¿D™OƯ¥1µ´8)Wÿ†Äăg‘Vè×–€vOĸqX©ÙhQ$ÿ́`r½û¸·E°jRÛü¹·Ø"Ơ`L]=¥7 “¥U–¼”•븂­USTÛeM :bMIMX|B*„„=œÎÿ×@‰Ä8¯áÚÉJ>Vđ\±¢.S]•××ĐCÄw7wLJpgr´«X)6GA¼ûí̉Mî$‘¹Ü1+¸ys};åöl+“ª\È<üYĂº“YR2†_Tnâp,¿ Ç"ë’³øÓÊäYYoqÑ®ô[l¶UT©Ơ÷¸wS(îẤZ‰÷™Ë$/6)©ç¥Ṃé8öt˜Ûơ,Lˆ-œ}0=ù–ÏŸLpéô—$.,ÈÛñ´̃gf#Ÿµi^ÔAíº w:ÏÎßê‡äK{÷œ?ø1‚‰ 0Ñßk€ú>ÀcrÀá/a©·₫G_7ơq©ăb×úä¡₫HØ‚ endstream endobj 706 0 obj << /Length 3570 /Filter /FlateDecode >> stream xÚƯZ_ă¶¿Oaä¥Z`W)J”̉§kĐ)‚ Èm¦ZYöª‘%W”/·ß¾3œṚÚh‹;¬(’r8ÿ~3´ÚeđOí¬̃Ù*O«ÜîÚÓ‡̀÷ÎÇ5~₫îƒâyO0ñi5ó¯Ï₫ümQ́T–ÖY­vχ5©çưîŸÉÇóùáIWI7îû/Oy'¿¦çw?₫‚ “|×ƯÜ ÔûÓåeè[jÿĐ·Ưè:  j›%º|ø×óß?üí9l¨ĐEZ˜üî^fÿ Uñ'J)0¤Ë4+̀îù ¹®]úi¤[z4û}ÂẲÍ'÷ˆí2Y&î{íḥï¯ÓÀÍé@Ï8ö ëdóßI3îya F¿8jœ›yqA5sGsÓ>h›üöPÀFƯ>}x2y•<¿ö&éà˱ÿŒ³;'&²ƒ̃ùÔ;G§ ‘@ ;xP ·á*<Öóg͈+đ6'ØñLœ®LZeƠ®¬ëỒ—§ÔàŸ·‡*OI/—E“:ö)©£×qâ₫̃/ùù¡(Aư¾Y:êw—i¾²,èă“øéo— KÄoå3₫JđT@AÁÁùá&Î]Ûơ4oÏô–Ô³û«êeªª’¬lOcï4·E/JKgñ=îH‹&Bc}̀9́ÍQ™®Q‡Đô°W¸88̣0¥Â)‡¦í¼ê2ép(0å„í‹[èmß»óĐ Ư7ê¿0Oç¹§#…@‰j₫8- î/wx²Yjó„*^‘Ùt´Ơw“Ơt₫™fn¡ñÓ<çæ„/™…̃À 3['ƯƠ€g‘¾Z^›…FQađICÂ`å„‘(Ó5ĐG3½­$†jÚú‚Âß‚ry¿r îƠm"ÇZç)¸×]™WifxqºMÚétî‡Fe×bÁ¤xœơm¦ÍØÍ&á­_^ù[o²¾éº³Ww&6̣—ư¸ïB¸èHW4UâĐ`¹ûB,Î+°YF6Ë]©ÁIÔ1ù"â‚/`o½ßø®f¹¡îË. Øw4FüWÑ[A;BuăiN`‘v̀®£ÚyËyéÇ@O°bwe7îh¸kC!V•J­á¨å]®*“Ă4Ÿ¨ƠĐcđçè½̣¯ TZ4oƠ¼/Lœf~4‹¿÷lOĂåÔñđa3́–inƯ–ØÊ2÷à„I­ çÔíû ­˜%>¾@g QÏŸîv|/Ï,­*³+ê*-jfóW•›æxÄ€¸t_±R‚„ï(uÔ?®ܯ» K?)†·x:ÓÙ»¯¹?¾®óZ€½$“£Đo!ÎDraMÛr¼¶x.¢³b-Á¢*Rc8’ ́ó,¡-1G樂™WỤ'G½è¾ù‹22MÄ}ªé½[®„P†Ùî÷YY´)Æè¾ :0:ù~l‡‹‚".³áÈêT×8¢m×äKê[¾dƒàÍë"~!O5½n¢x-ÊÍÅñ”…Đ ´"zÁî‰ ÑkS½|uô`5á/î=l\:1ZÔ©2:€+̣¾a¿1”—U± å%œdYfÉ7ÓƯÊ«¢è0>}‚xĐ2ÉoÖ€Q»TtHoƯzàƠZE;ùÇC¥Œ€Ñ5‚§C¶C(÷5¬ưSaÁ(+‚)Y0E2b\ü79GPÄE¨{MÙw4½´.àçgçTzfzêbĐíèÍlĐq™·bAÁ_–85œư>X'«»]C40̀ÁMâ'ƨ‘ÈMÑ÷ŸóôĐ5vOäE™ùf¾ơeà©ßLsråÀôz´Đ#͹ ‹Àññ ¿ÔÂ#tBï•.dTÖkëʃÆÑøÇmưs7Ɉ‡‡® pĂ2zv_ûơ´V¢°)lóNóԘʤºbÇü͵zÁ¡Đ­é¼º@ÇZ]  ô÷l,èè(D̉̉Ỗ‹Ơä2¹̣Ú ïgï*ß\ßz'†=3s¡ơḶkVd^‚à¼ödjĐ{‹ÀmN­JUÎ~ú*¸Rpƒ5Ôcđưà ›±czY"›Aáơ¥säb½¢©?ZWæ‹P‘ơź/³èß{ÄiqÖ•ØÆ+‰˜t¶LJĐˆŸNÍÜ“[̀C€3Éđ2¶› cñkLDÑd&Íx ¾¯„H ¶ªôrO• @™Ú₫ÿ©̉»äÆè*-„_«’¾V%s­Jz…i5)XñÜ/€b©o•É)I‚Ï!³µ>³¥ÁĂÄyyF  £qÜ\^ç® 9 xÄfælư°”ÖÉx I®LÍü|ö¥^-“Ơ²¤aT‚Xt"5œ1̉¡ƯS•ÀÅ̀™áJÊY"´I{;~s—3Ô¼\mBÂAv-Tè9°Ø‹ûïèi¦ÓÜ+È clqĂ{ÿN€×DqTp®Ăÿ²/‰6ÙíđªëmxÍ’®œ’y}„é u†wÀƒx–U…!¤®#̣»á}Xaë|Ăs^̉ü}S)'k¥xUFđ{ËWˆ° ª ˆr³{ÁÉ»ä+AâŸƯÄ?Îc$“-Ñ[FW l¶LÚrcƯåÊ ÀRÁ]B{ë.áHÙ]Â4ˆËñU nTlÚøÊG">l¸ª6÷-—ʤĐv„ œÑxOV¥†́—£Yjˆ›FA+ˆØÜ²ÆÅ&J ¬¤̣…€.¨ˆ8Ú[¶×.bN³„´"Ó¢­Å*O*Đ¢̃G²ÜÔær$[+µ‰¸;*sµ ¥y²̉‡yâ€×pM¥‹:Ê@¢\7³®­eNb@Itóqñ3[oĂ\{§Z„̉¢X‡9AŸÀ.ÊM:¦ ̉¹G?cx¨øôLût%‡B́hÙxœÊ Øj5>¼H¯ˆôBñ£âˆư’M]áøímN5 Ơ¬NßKGCÄ!é`b©,—5$Í&26±4‰4¨Ñ×pÑ›K§88¨¯8L'жóƠzéö™Î§â)„‹¶÷£U‘WŸmËçyfSà‘XàTDóR˜SÙA¯“ ʺ–˺!ƠÖWÈ:VâÂW©)ª₫Ø„ß]³/Ờ¼”PĐ@áE®1̃”®Mª2f¬|¹×¶UçwaP[—ª¾ ׌â(ƒ Ï´a¦ÎÖ‘ Çû¹Ä W|Ï€Ÿ‘ñú^ź;×AIđ˜ñư<4-ÓDsœAø[t<ØFs‡«̉¤V²+’Ú9ƒ1Sf¤s*±|é₫séùtäá©ßïß'ƒôVdä¢Èl¼VL̀ÊkÂ×Û\sâ–$ox€7P*-U%5yºÑ!TÛ<4ˆ¶øue½ÏĂ®q¢çá2̃À—µ„m”Xr(¼₫ă§T±¦™ÊŒç3ẉ̉öà̉(ipôÍÂˬÜoQ‚Ü•œ̣ ²`{ß·`¸_•f˜¤;«Ù¸QFd—¾äUÓµJD7¥U¼ü³›¸T₫Úw$¦‹4—«*“r¥µ¸® “ÂUÍ·"ZÅ*‚*oŸZ%˜Đ>…+ UHƠ^6u`È6{¯ó›Ư#­wÂSQ˜Ÿ>̉~9á₫Ê3)*¹&‰~Ơp φ€@¼Óƒ&¦&C nqŒ’t̀ç F‹µZ¶VªóE¬10ñĐ´ư€™̃̉SIç‘ÜŒ¢t‰v \Ă×kø6í†MU×@Ù·‚1̃ƒ™Ä2Ó¾35 ûJ±,)VÍÁ8‰•Ío%:©c -,-Œû+ºQeêÄ×–Å¢6Å+•Ü €€̉ªdÎ~^ßZ[E¨Đ†24ôÎX̉yLÊ“iGиY%¹Ÿ¶¬ô*‡„‘¹ó2 5_†₫ÈÚC7¦²:µ±?$|7”‡d$^#÷’Ç[ă~L¯̉kÆÇâxbÏ(¶ÓíåâW~@à0d̃b‘ÎO£Wv¢'ñœ·À'íîl2-tu§ÆRÉ‘Wz´±c~ÂëÅ‘ªpAĐÍOËôDé:w0͹_›£¬ệÚ~6̉«đ:‹Ç¸‘đ€̀³6́˜<Í-³Ă~†¯?ê¨î!á­ˆ+L¦ÚL¸Á«ï„”zRªpµ¨oï18奺xç`D äöă¶>æYªµ½ºZ8ÆßĐ˜ä¼ú Íư …«yRÏ×°ĐO-ßÿ¬€/”B@lĂ]±.s¾ÓơʯÁ±zrØă3’±ïX9v„đ÷ˆj‚rÏu|ºaI_=ö‡g÷kn`”’ÏmÖ»!¹w5ôÚ¦UQ^W3¢rMíÓ›[änư‡₫enæơïKn\̀ÇØékï²Óu%>^Á¬²å<øÊ©çÛ Á ]I­¼'7A)À Ó_èg¹ÿ‰D¨|}ʼn„£g¬)i»CA‰ËŒD Xp®¶©Mưæ+NL6÷ßXĐlF^!₫¼«¿éÙwêPip₫WV7ï»+đ_á²Gæ/‚_ôöîë-ºGp(\̉đ?Y¡rU—ÍÚ\7lN½$ˆ±àˆIÁ^§k>çË,U=₫M‡L­6¥Äễy¿xŰ½Đø'e8²×XY¶»ÇU@ (UO¹ơærSü-VC“÷>kè†öÀ₫û‘‡:¼vêGRL„¯ë„¶̣ưUítuÊüvï¿ 0 endstream endobj 710 0 obj << /Length 3534 /Filter /FlateDecode >> stream xÚZIăÆ¾Ï¯|bƯ ‹;Ó8‰ ¶c8mAœC5Eµ˜¡H…‹g:¿>o-VI'èƒÈÚßRßû̃c›] fW&»²J÷UZîó»˜Z§×?üôÍ;#ă`à“7̣«çw¿û:Ïw&̃×qmvÏG©çĂîÑûËåá)©¢v8tŸ̉4̃É¿ßüđ3>dÑ7íĐN¶çÖ×—¾køù»®i‡¹…L]ÆQR>üóùÏï₫ố”'ù>Ï̉ÿóô:úˆ`öq"Sêt_€HÅ>γƯóäiÆa^Ïí̀Lt™F8\ÖfyĦ<:ŒëËr\{ĐØ¹ùq>Ù^Z_hRË/0ÑØ?˜è×l?pG7đïÑb+u²ïx”åG×|m÷OYYE_?T‰ŒM"+GµÓ̉5ko'TâÄ­@J“€R–’åªH.4E §lÚ6ªøxĐ̣‚/oülùÇÛ̃‹hEÛ„ j'­¢_L ătUÈÔ:Iíá Ù Zh̃Q&ƒ ,#/-;.tˆK×°ûˆ†à·Ïçq-đÔy$ÙÁÀ¡…‹º̃—¹È¾œ,ÉœDMoç™=‘M¾b¹ij_ítèÛë¡Ë©å†y±Ë:s#w¦Ú™\©,Á³N²Îô™)Qf̣‰7n GO(ªÁ“3r gÚ ]ä¤ơb:̀ĂKgÈr˜Ø&l³¬b³¤ÆöY¤§SBSû ï9ü6Ë̀-£Líf₫å ‚!lLÚçÑWt±¢kP4‰'[Đ¹³:z/§¾rQÚè®ĐeºÏrĂB£ÛÄ©‹áíj)h lglƒ5Ü eŸơîü“ùa^_ÀüZléÈGi÷3́ƯÀ;JmàäĂa— ˆ†îYÄû4 H­E ăđä‰QÄÎ*h³Có¼G¸Aü4µ€vÀÎ…›X"x25Îî^‡î—ØdơGEb¾¡i!ÄÈÇmQ’*)+÷&¿›ư ă}Ue»"7 Fùv½ö½]:ºåI};X¨ÁD_pă‘ư3&ĂĂÏḮÑđô# r>Fv3ut& ²Ằ¯l¸7pÓËAIÍIæÑ´‡ujµƠ®0pê₫ĂG¹ë’¦Ø°öêÍFW›đLđË–Ô9¸Ç&5Lí¿×nÂ[„o˨ĂJ4¸dPû©mÖ¥åµV—apŸfØeæ´ ₫Z^ ƒM¥Ăt€^ơNÎ44N7`e˜ª`3g hû1¼BĐwœÆ3÷Y₫9‹±Ü¡±Ñ;470ZÖQG0ëüaœÀ4 =#á•üu\§†fFÏäøY¨Z®¢)}‰rpH¡g¼psÑî%\48YÑ´üFØFÄg^%¢á«N2n1Ư¬¼mep¬¢ă:8ècŸæ³£Ç«%ÎBC6Ư Y‘çÑ¿ÚfÑXÇ2‰€₫ÆÛ{—åHf8̉r0é`dckhÈÊ" C,S;ÙW(>uËIBâØ·L2%C•0…îÙèOVáá…#I+íg{h÷Î^æˆyÁ|{äHñ†§W~!ơWB¢$ÀÙû®TX‡*¬ÑûḲ~c(öACær̉È7Ăt)p̀áQ֖ȉZñ›pÂEt"²#·à,qV¼6rÀØ$ηÀWTză ½quÚH`}*uMÑ ̀+áÉM³N3%Ó@± jáPñÖ°èd@YUtẉ ́e TƠv†©{=¹ÈS)‡¨©aÓl rÛgˆu ¥H§¬+ôAƒâQyGĐÇÆ,IŒœZ¼ºpŒTV!ªÜ]:¹2YÎ h’ßeíÄÏ7Ÿ»´ˆV«Oç¬I¼…ôOzåá¾ùé—8“6N”5| 0¤`Áœa<|`«Ø úZkíÖ6W´Ál¹Á,<3̀̃÷ϸ܂Cèi.Ϩ_åJU¥^)xâŒA gÂN‚âª̣,è² ®‹:]ñE¹s¥ÀĂ¡  L@̀¾Z—»’duæój:dáÂôÙăX˜̣Ùd̀0J»½\˜sA ?J_‹€ér h˺J†.<ÉäAE‚8ÀtàÇ ̀Æû¸uNíb»aÖ‘­̀éúζŒî–pUf‹«Œ}ơ†SĐ Cü,?Ó0¡ÇWwçó7]z@Pá'{¾ôœ9”Û” &—20d”zv8èM̀Ëj£Û[ư„Êù ́₫=zÿ₫$q¹ƠlK¤"3é­d&#ØÀNäèøpí }Gùä–¬t#|%7‡nhúơ ëØÏîŸz¨i–VA±ƒ3—Qjm¹ @€'Åh†“KǼJ±g¤€5vúµkÈDYÂ\ÑN“äC̀­«œj™qÅ•3Ƀ]´trÔ.©ex&†7å“FŒ ;ùƆökêxWđ$Û@•Hx‘ø”où uhñ#) {6nÀÑî¯yéV:̣ƒ7]ŸBWÇAèuØĂ1±Æ˜HÇ‘n’“áäÄ×[^_$‘ń<~cJ^55x¯1 ¿o Êe¹̀‘bh ü µ.W*=üE†Ñ ôâœS;\Åûl:€Â·ưQWÇØ£ æ0Ȥú5#¡ÔêNPÙJëjCg »¤R¤đ‹4£P®ÉÑÍ;•¼ X_âê4¿vc/.Ks„óĂó´ö­́'$„ I‹$c/G] ”Z ]ăå"PUîU5iœçà°™wXº+ûû€"Ø)?¾Ÿ+¹ N8J ‰£̀• ÖW,ë*¦eˆaĆ&Î(@tº%ŒÙ“¬¤iƒÄÿ{8Íó wƯÎĹ¥hY\o~™QƠ…-ÿ ö W¬ gd¡±3ÿ^ăc$œ7«¢+z:v`´"eàB,m&›vºtèä”z˜Ï6D¶¬÷4Ôơö¥§;$œ¸̣¸—VÑ)&‚c# ÀÆ„.6¦—̉ÁËơ¢%>ÁJ )ü2Èî³ø¸̉…ǰó,(ËpÖ“`Ơ£–t‹ÿÖĂ“jäu¸ØúNù(תµê¢™ÜB¬­]‡ ƒ=₫Éäû¢Êá·ÜÇuÎ_%J$tE½?:ôưøđüP¥€çù6Às*¦Wd«C…+ÔáŸ;J=æ/¤†1IºT&´Đ\Sà́}˜i-Ë%Û .ûo©e½}!ÁfÇkS©dÙR5¸çW P¹¼i?5íeá̉E\®¾`TÚ0<ŸÇ©ơ¿BPXâú|†Đ5°B4pR…¥5äáJOסÜê&È‹ÙƠqÈxÀ±̀ø•í<Ọ́;*¼C }, –§î{Lyá Úđ«…(÷ˆTÀ¨åD—çơ¤¯ä¾0à#G ÙD˜L¦ËG£Éd¹û¨ơ(ƠÑÑ­vßJˆl…iñ²ÊÔ9Pªg{Àzƒ&‰¾;p;dQ~&ÅÂ{OØ̣‘́e¤T£®nˆTù}»ÉZoH-́pbœrE@#s(@›‰ká\´£Ù¾Kˆµµ™…5ZaHcqr÷Êÿ°/çøinaUË(R̉²ă,ă• h¸°çÄRŸyY—àŒÆ÷°KẠ̀¥Û\ë,I¨éƠ/«Z+Ûîrê®»÷A'bP×E—Ä\_ÆWTàưËw—ÄÀ0ª¸ûs·4÷ëg¹W?«ĐÓœK¶¹c~c{WådljzÿđÈÑ?Øk#™¸Îœf’].J00Ù={›È¬Á_bSŒ^¾ Úk€::¸¿YiåêÔ®´›V,7–uªL?|r|Ú†—₫A*çÓR5ƒ_U¹ŒÈ%Â@S}æ4‚˜…ב¦ÅS· |(÷(²6ébV®1Æcü˜\éºí&)@T :Nµ 8Æ‘_‹Êøid‚ƒT’äk8Nv‰ÀVÑ€fWÈ>¾iÂFº÷HN@- ̉ßé3÷ºå¥æ—̃6Oë xfÊÄđ^äwuZDêMƒ<:ßÑ2Ç‹çR¿_«ïº|áº,+I@.¹_EơĐë{p²¡[Ñ=ẹÚÅÆJ!ăµă„É÷4^@ª¥ ùW]%Ôd>6"ÎŒû»!Ë ªBX9 ¬Â¡WCđôn€Ñï]Ä’ ó13;æq.L0(? ‚¢?ằÅoú`cŒ…ØD\ZHÍ=÷‘ËƠÙăPÏIMŸH`o£ÔsJxÁ[ÜiX•o„ÜWÜÿ¶-0³{ˆ`@¶4Ué€ÎW…>¸l Ó£²2L₫ç…[7í‚ÀoÄ"o±/i•|_%̃o»…Z\>Ù!Đâ«́榷ƯÙ‘{₫‡«Â‘Gû³¨‡Ñ‹ßwZĐt©¼ºÿ&¡^Mé"s¶ÅM§Ur¦É¥´\́ÖY&ƠˆL¦đÿ;$»ƠăïƯ'4ÎZ}R›Py/7Y ïÔ7óüDy+"Ăâ¢Ê•¸‡ƒ&GÇ,uô}KÛ\é6Ă Ï΀ŒÂ»Áèùq—N?M¶Âû9;PÇ–ÿ> stream xÚZIo举÷¯0r’[%RKúÔÙzLs̉9È*–MŒJª‘Tíñ¿ÏÛHQªj$đ¡¸“oÿ̃“Ơ]ê®Ê諸H뢺ëN2^î¸ñóçJÖ=ÂÂÇhåŸ>ü₫¯ÆÜ©,m²FƯ=ă£wÿN>Ï÷yØáà~»,"ùô₫ưüÓ?±¡“Ïv°SÛóè—Ësï:nÿè:;̀PM•%y}ÿŸ§¿øËSxÉMjtñ¾̃¯₫$¨,KU\)Ó̀h¦£Kñî;XƠÈqJ™4_`Ñ—i|uÏnqĂ P&'7Oö<ÙÙ÷À„¥]Ü8đÔxäßåƠÊÀä^ÜƠd»ÈIíb'×ö~1₫VÉd½¸{•Lre•,Đ“]Ur‰ù÷5SÚˆ•fª 4è´^¥r ¿`*¾ƯçUb§:Ă1°Ÿƒó¥Ă¹WơOẫ3ÜÛüÔô ràDŒO¶Ç¡}îeƯ.j‘5ïrU+¿ôäÂNÈ8$Óxâ™kø4â<‚HÛ‘U6MZ™•¬ZÈúÈêLÄ] D˜Ơđ[¥µ®Ỹ‡ ïºØ¼¬°Êđ™?ºSv#̉Yr™-IN0r&­vË}̃$ï~hbÓg;ó‹½I†ö´êÉÆÉO<Ü^–×uđ¿^BwÜ!:Êx#tN˜4«-'́ʉíM¦â₫l»̃ ̀‰ôvÄ_“¼L-+>ƒ¬^‘Ë̀ưËp°“́˜Úƒ%µ¡=)ÅÏ1a”ù‹}ÀïAp›K“×µ‡ƒC‚ZÙjqej’5À‹ÙƠsdh’¯ªĐÇË$7À–Ëä:b̀ïxu#‹i§°(Í;£uZ•̣̣“m‡ƒ},m·F_÷÷ÚäÉßöab8x­w(Áï;R9^¸b²B÷Gܲ Ëe¬&ern§eûY_±fQ­䦖†qA´ó)Li¡̉G”Î)ˆR­½̣é.à7óïË(ö‹} gĂè³$íơkèƒÚ~ô§³Eb«å9ïöbaÁKt²JÆPT‚̉ˆ̉a{ÁÖ8<‰–BUêR1¡‘Ö´‘ÉMö4®̃ik†5=’D‰¨kfq%6"́©ºËɆ€Ă{ù„Í‘ÊÖ±Ệ́óEö¯¦!ï¦Úf&-”Đ8Y~ 4¯ ©S^éÈÿÂaï` *‘A±ÉÄå"Á¼¼^9‡Ss¸́•GÑ̉€¿n½ ßèŒÏ¸2̣ùU¤^$@£đÀAàæbƯä©*™à €yî]¼49̀^œy :WB{`pø=àg₫p@¸f•`^́$ˆG£b’¶̣°HǹÀ0-/vÊL`Ơœ”ÈIˆ¹&Ä ~x#`ô» ¸"¿¤7M¬x'¦ê¬³Lú…;$Rl©9Êÿ t+ÿz5dç*h́¡ß¥Í]7N~y:t[â]AZ5«ÎáÔ ï»̀ ÷Î}ÛYYæÿS׺†µZ‡ưvoªd…”ʼLÖT™ Êèú¹´<¤¬†H­”÷ùÊlô½ b“5V·ç3gư$G\¹Ù³“'x•ñO‰ú†̀B§µ˜€B×yŸñ:*X”‘JAWù€.a« ×ÁFάp1’´(«¶q^vÍBœ¿¶ỤÀưïÄ{%Ú«é¸å̀Y`X m9=CQè<ó‘¼$tà N€•§Ḳ )ù·åÅôH áVÀØë¡ù¾çpäë R~o:o“[;ÄX‰Ÿ©×, <ª û[g±}ÜsŸ ¢,Sz>ơóṕ ¯deÂS$Û0ªÖI²²¼É%áºJ A­,³äé¾.ˆß¥«Äë­Ä H÷T)˜÷_¸‰ƒ©£ÄËA|è¹}!®Æ¢öˆpÇ÷Hù&j́ư .[ư ö˜—rÀ́ǰT2÷ïá ä©ÄĂˆÏIAÜṔ6ÆP…Ct."ÇŸ,C6ƒ œÎRY ˆûæf©*p₫Zo¸@¯—̣†Ïkr–“cœT/ˆ £;HÊøZ×K¹øAL¶ïß!ņ­@eÅ/,"cË0X¬ rΫEÁ ̣êÚă:\qÂnÈ̉Gë/Đ:Hö'9Đ9·Ë¦#æ"‡†ßăùÍƠ7|L¤•ÿđ¸Il ¬¸…Ăίlh/¥0?Lo†}íơû‡‘«¾Æ *ŸbÀtEĐélKEF åƒoń%)Ç%”^jYÀª™;Î*ÛasøÄ½ `Z¼‘Œǹ˜E—̣æ ®»ôíÄĂƯx¦rQîML70Tûƒ÷%$ẉA.\œZNĐr¾Mü÷Æ6S$¬óD|âe€¨*§…ṬÂrwưÎ̉««øƠ4¿ ́œalè|¦w[͆¶Z§¦S¦°G/ Q B2̀È"́Ó% Éû¹Nñ́éÏÖÀƠ¢îÈ‚ÂÇ@w”[_C+d¢'DJÙ@`f¥4K­ëå}½3Ç÷kĂÈ+•joQ¶£Å"Gº‰Ư€¢Ñ^¸ FbJ­XÉ‚œxö²v>̀ñ«tRfÜ?¬ÅX̀qaJt$_P…m¨Q[: –Ç₫₫cœl7§‡à½ªƠ{ơ±c’oÁøüÏjØ_ơ ³ Àx˜ Œ‡¶›}527¯ơxÚ-1óă¶Àpeg:ùÔ¾ v­äeµ¾Ú(g*{ÍÜ0½(¥Pú2vYmD ƯP¶+C³¬¶"…>‰YZŨÏèÿ gă+¦y¹é6ó¼Jsoa‹cå1±₫™äµE7´?sU Đ–Ú¬¯f«¦ë°¼´`ÿ¹÷Œ8¦)7CÁˆkæĐñÂÛ­ úz!³ö̉i¼ăÜĐ­tªô\æP₫lÄNËøHÓ±J6:­s©4IÁ#@Èqf*hxÍcÆ›=ă¹2^è Ÿ1ø…–Hz ûb ¯“¢rVĐ\t9à™BVSÇYDßW$øn©UZVB˜ÿcèƒáà[¤o&ÎḮÄ•™& ‡¦Ù–yFĐ(“Q̉ ƯQn¤¤¹̣I³á4“Qi6UIV¤åHoÉ EY§F”ñÉoíèÂg5Èø†#ê’½ $;ÑïÍwÆÀ]®·R½C1Rb!=a½¼‰¯'­àÜÄeƒ ­ÍÇ“>†{ŒÊƒ]ÓZ£f¥Æ T´¡|_Ê:Å€´_'>—Œ<̉Z<Èï<¦₫ÿs₫ t’ endstream endobj 718 0 obj << /Length 3610 /Filter /FlateDecode >> stream xÚZÉăȽ÷Wê2, $3¹$IßÚö̀`lĂhŒËĂăKJItS¤&IvuÍ×;¶\(©a£®Ü˜KdÄ‹‘R)üSUöPƠù¶Î«‡ƯùCJ­öøÀ…Ÿü dÜn¢‘xùđ»ỆA¥Û&mÔĂË!êeÿđ¯äăạ̊´ÉêÄ ûîëÓ&ÏóäăïùïûäG3ÛöÜúiyí»—ÿÚí̀0˜@5UdÍÓ¿_₫üáû¿¡2+·e‘ÿŸ»w£ÿç¶…†ÿơ6- >ô>m´N“Ë<Ûy½Án8̣AÆ7ÿi|‚#¿ ÓlM{澟ͮ»tfÀyÚâIÔ6ÍdsM¾…5ÓzÛ”ơĂËÖü¾Ư=eUr‚Ï3̀ƯÙ`©J̃±u\¸²iÂ/Øf̃¹­å/v#6r5{î{ĂÑ£ưǜƠù$“Úxw2;jÛ÷ï~”éxƉi¹£w…•ƒÏt<i]ÆçÓM¹­S9¯7°îØ |ÿL5Ú ·X¤É_Íç»»‚_˜%‚ünº¯›* ø~ƒsN«tI§¤Èj —:ÍØR$§vÏ7z7.½4“¹¶ {c¹HĂÁ°Ö—n\&n†m¶GÛ^NdSP‡…{î,Ù‚±ºă‰ö 3·˜W6M@sọ̈#ØÔ4É…ær3E$º"ùăh a8Á́úû¸Ø‰?Íl‹•Ès¯É…¯å‰ ƯÀ#:Öqæ³tE³“†>l€b©ØƯßLujf»Y¶'»V9éq# #ø·Ó8´û€ö¿¤*­#k@`.u€Ù¹œM®ÊäÜ:½W…xhíÎ(N0ẓÀĐ€¨Çæ •Ăbᘖ+(Û‘mOÜBwYP0_ ø"7ƯCÜ͆ë H´ÚLøƒ_ÈR-SÛ34Ë)›µö”Úă´¨,1{¯jåyÓ䇧º©ƒ¦mÁCTçDˆj–T‚„ "₫· Ơ"¡œ9R󨌛ÑÙ.ÿ¼₫‚•A¸`øøp»™±§­*ܪmÚh‰e”Ä2ŸH¿çuH‚ª›¯á¨n[iQß̀•‘&}Ă·Ư+„ ö‘{ºØU7̃U³^7‰píÓØ‹É7Îí×qœ ø=oB¿êñ¡ñøĐ„à0p€&Ÿ@“E€÷,²ˆƠJÎÄÂ-yËåÊÓ>bë© $¨Œ\æ›Ḅsæ:ï°L^ÛÉ́ ¿Ṭ‚Æ}³4 ¦^ä;A¥=×Ül‡¹69f(4ßăî¨é¶®‹‡¡V—|Xsá+Ö‰Ñ{?úA]ë°Ó\7A²æÎ¨™" àcs½¶N¨“uTǸá¹›ÙkçùUŒéàD>¯iÙ7À0#Elj&Ù̃(^+̃³ÛŒJ–ù~!ÖÙ(‰´÷‚ÁÑ“§PđzB½•!l̃$d́xeap……ŒŒ”â½8ú¡—P£ÁØÉüº‰Ô ƠçBJ2̉=îQ¨à{×{®4¯u€Z,$iê;̉ ”B ¬TI%®û²XÉ L¾uʇẾ5jê¦ơ÷q.D¢ËÈ«’_¼kÎT<“]…°ưUå*r@Ơ2‹ru䲿Î=eMx̣ÄuÏZñ‹–Û†qؘ¯ â©ă€”¢r΢߿u{×vÍQaÆÍÁĂ3ʼn x¢‹B6+lÖ”Ơư=„ç#è^;t‡¦ åœlÅƯ—b‰Ïâ¼F₫ â Ơer%Ä) ›âÊÁ9jO¥Ê˜B‰çD`Áôü ö­2cơ(ï‹9jH*æn®|TŒbN')RHØ£Œå}Ÿ[{ă½«d–f9ïô'¢ä/…x·ÅüFPË}¬Pôa> >«(èÁv4í•~@›èÇ#×8¬ÈB‰óÂâÉơa™ój k2̀^‚c¡>¸ÿg¯^U|® Q¼ë9±'YD‰ ¸4Œçn€½îåºè5,J9`,röÔ¬8ÜRJb¦%&p åZ2ae8«±ó>›¡½̃^,&Ç‚ó×™„·+₫âH-jbâSm<Êû´ỶWÓâƠ'åƒĐë¹Mpwƒ±ú…¢ !4Cđ(üÈÛ‰åă#äëùW³úm®oÁ¾R!"¼ÍM;Lq1ơxÀ5ÚMårtKÈ ¤̃*9G»JEi¬{¾OäÖ‰ô% »›W±wĂ4ßBG¦Sú!ơäÏÑw0ä f¨EVˆ%#B*èX o95¿å¼=ê =œè…¾Ơƒ†J>lFpû½|mMÿ.Ѳâ@¦PnJ8±ó‰©¡¹tÇJ …›ôƯñ.neˆ°•àVÈëiÁF½Ÿâ€ËEOÚƯZ½́z—FÓÎhR´#³¶U6± ¨K—ÂaGöSÆ™TB-{jwßçÉïL X BnÜQd+6Rµăr;ܘ™Ÿ¢×<;¡g&F¡B*ĂTä¾ë%Ïßî8>ù')Åf0[¯”æ³aN!eá=*gcåæLç–.•dr(•è¾Á́ƯºÊ ;̣PÄ´øÀèøaæ´Q`HDÛÈÂ6Z ø¬ÂđÙa8­›‹7+äŒÄ„-–·Œ̣—Ï•6n¯±́ùƒV”6ĐB…u=ơéLË‚ZúV:c@p‰Ø”3x¹ªräçûg®ª€ÜD»ƯƒrE´ÛA†uò}ûwcaßä{U˜)æ=GL Ơæ ¯Û>‰ D ă›¯°Æ̃•)×iMc8£çH†—LG^jÈJÉ÷ôV?Ø—ë'q|´+tJ~ó/v@K)~ÚG!¶Î·•±q”/á­^Ôo7/:;üîÍ₫蔂VA¬×(^ßøwOÔWOR·₫{-¤gèôؽ°Å¾H,1öÖ!ñ«X^źáêÍnréµ§1 Éê+Ñ'1÷â˜üơ=æu ó¤P¥Pä¼Tw~½nB6Z2Ó’Æf´Ñ’ÎV¹¬}ƒ$Œ˜7°ç)uaóh¥b6É¡ư ˆ—*â¨Óz#î%ơ†|¨¬ )X ·¶³‡d÷"’ßh].ṚQ„§0 ïL<̉ÿ’Aµïö÷¸¢̉*¸†Ÿr¹@Å¥ 4ܹeí0ë%R³›=Ơv<ÿÀ¹)›ó¾ñ âÙÙÎ"Uù¹H$ HJĂư^Fî—~„rß7EÄăă(PE)3…]$ÀƯâ2ÿW|MƒuI_><ß¼æWk›R+LÏ!ƒÂ*…¢®hlåhlÄÖ•¨é«[¬UÀ~2$í,^×ѯMt-?â“Æƒn­M;Ó!kÓ>É₫=ñ»÷_ƯxN¨đ'>4ïÈ%5PƠá ¤Bö'Ew¡kw•7?¬¨=܇›i˜i§,Aø#ôˆRuÜữ UâºSçºï±ótÍÎÙÏWŸ­=¾=~imªBLÔƠ/´n_¯Êàغd¯3zΰ"ľnň’H¬›jư,ï“/®Y ô"Ó.9²u¿æû/â9ªç endstream endobj 722 0 obj << /Length 3546 /Filter /FlateDecode >> stream xÚZ[sÛ6~ϯđô¥ÔŒÍxÛ7·q虜ÇV›f¶û@SÅ©DjI±÷×ï¹e%ÛñŒˆ;p.8ç;Ï"ø‹Ị̈ä,/TX¨ü¬̃½‰¨µ:ăÂư‡7±Œ»€̃ÈŸ–õ¾OÓ³8 ˨ŒÏ–k©åế_Áå~¿¸HÀ´«æëâB)\₫ƒ¿n~Å‚>˜ÖôƠ–[ïÆÇmSsùSS›v0°@\æQ ¢Å¿—ÿ|sµtJ“4Lµú›§·£ÿ qÙ)¥ ag * £TŸ-wH- öƠÁ´  ́Àơ­=«JÊ ¸ñXéU3Ô}³kÚêĐơ/?pG³–2{Ơ‘y`d^ÛI{ÓÖÛq%«>7‡MÓrÇac¸0ÔƯçr½s+ËZu·€̃¿đ¨Àå'sLD"#5Q™åqPLă¾ï6Í£,‘ØÍT`¾¾nˆJhîÖçRè¹»‘ñủ>4]kV2 å²P¶₫bÏMCÍ|Ñ]×»ưÓ7OÁ@4ËMYY†y*4615 *^0 Ñͺù#u]m·/ÜñÔW,[& Ævez.‚ .‰z†‹ ­óàË¢ĐA7r×®Âé²H3E¾`3ËB:+Û5ơôv×g¬vưŸ\#ï µVŒÉŒâ" 3h"™Î¼ =೯úê Wô¢p̣†ƠOf‡j“ZC'êÜl ¿_ùën=f0”ˆAømmäqÖ ̉Ṃ„/ÜCß<‡¦}:MU®BÆLƠĐ­‰güQÓÈIHgÁó tn¸ú‚e TvƠŸ ¹,PÛ³˜vPw›¡ƒxƒß±&›&Ml„êc5é!5÷g™¯‡‰›8`=;RÚ, U$ÔVơ¡ù«±ûi¸Ø¸~I™èb9/È:j¦½±@üå₫èTƒ”á́Á¸R‰WXc^È«i6Ù¢Û<1c»­œ¯p\Ơ8%.(w³HgTê<ŒS17°Cöνé¤Àz¾]qµ7µiø‚pƒ˜̣ÔƯ)gw§ Ö}·ă’Üs®Uü™Ûhn›ø̉3đPù#J£ ~b®‚¢Ÿ”¤R`’J&äƠ­"*¬¶7 J`Á )!2!k]L#ñ¬8шKˆˆík]P!èWÆ=Zu…•§ÛHÙÙÓ§ØU+Ù^øG'êă\H9#7‰ÂB;r÷ RdÑ9;$Ú'aÖ= ëP»€ïUßå…êÚ#}%GỌ̈wÆ?ñ†\œŒ1åvmv««±&Wæ¢îvûf[ár̉Cæ‹èÑåaVN„¤{a+¥O© v*xÎƠ±Ư²éƒ²µáT5›&6ÜĐÙMØq©c }.³ŸÓGª«ê"u`\ÀK^ÄmФ"H£ƒVr4Ï÷É "ëŒí™’‚ë¿T½5XM"`×É«æe˜Drßo:2OÈwqHûUhù4A©U1†åă¼3w?:¸ 8‘8g‰À̃¯ˆ›Ü,ơ±k®Ơ,́jvûmc—ñÀM>IQæB ˆ¼O PάqîÀ5bXZ¼î›¹wÅ^ô#`à³@3­ö̀ĐªÁP©XÑĐ¢ƒ₫>n ϧ} {º̃åä¡¿Úy5¥ăiêC¿cƯAÖ“¿eÁc ú“†J'¬?à¶@°¬cß ™´7Ü"]Ă\y¿(Á³êvßP™$ øó±®q‰, åÀơªg›…e!á¹rZ²CÎ|®@ ĐóƈÄ2䯀Ź\́z ¯@ª̣'ơd—%É@³ùZ)eµ”@Z_p%Vº˜o“(U'êkúƯ`ơ¬’„æÄ‡Î*ëvkj{"në;¦QÄÖE(΅ß0å:ÍB‰sZƒ`Ùhddc³½5¥À!.vü+^äqŒ×íl™{×wàwwç>êÓh¿¶2’£v”₫-Ƶ& iñürjªXÜÔt)`¡G6–Œ¢rG Eä#Ws÷œûô¹oΙ!đíͺgÈD‰ Rñ¦7 ù ËLxÛIábˆ¹ºª(Œ3¡KØwÂC)ñPJ<Ô¯6ß đqq.!¥‚KÀà$îïe©Â“¶Q•e¨ó̉á$ ·À>å=0ÂÊB! „"bX4Í ÈWâfâËb:çŒÏ¤W“•Å̃́aZ“e…ȧư“'v½EXd;Á:†ưªÈB(ñêdäâA 4úÝı);î &S±äơB4(ÂṔĂFp”E®±Èµï¤yhdzÊ:¨ r>wo g„ÓYͱVá+Kuk¸J́Ë‘}6¸Zñp/:Đ™‹Ï3·Ü±½ ¾́Ü›œư¼‚ ä9¬µ´ĂN‰wÖa+đè$Y-¹Í–±3S¾3Ă[³•`Á ó`4~| n¾H¶®›å₫çx5/Q#ín¤ÓŸÜéOâç5đZ>‡£Y6¬®ơàÙŒR…E.®®Ç Öh'†I+ë‘ብ3%Y…Ô³ zv%Ó`p‘+tÅêܹíÚô-º)îƒyô+£ä…y’ZơƯø$‘WÅ+8%cCăƯ¥Iv k{&̉¯4©le­qwGø¾ h±µ÷¬‹M¿!Üç ;ø_ưZƠNỶ$ÊÏ …‘X|Rq'Œ=NÄxÀ¢>ñœµĂ:0 –$h›pTö(»aĂ•̃*p3ß’1„rky#FFœXȉmv ¬1X9™£N2,Ä?Lú“ù×.sé+€€ÍNÚXlµÚ. ́‚ñLÎ 1Àơ©S…L@€, 0bÊ+œă€FJ ơüRám»‘I{°E·)¬‚  ɳ0WB wÉ-ÈơƠ>HUÁªáKæ®·ļG†fµê]VE(ÆŒ@G³æ ¹nĂiOdq¨J1W•ådRÎÈ ¨°I™O ë§©«ầi³#A«è†c󫕈qăWAQ N¡0UI¡ Fă\9ï¸î^/pw”f¾ŒœŒA4–*^(§¼•‰3ƒ˜è"L´D6è́ô*³ăHXOXé±à #TœbÏácNd693KÇlö÷nSëꑘ̀0Ăe6‡éeKψSi•b4½À(°‘{=­±·¦oÂkˆ5:pl±ăéÎBfh“€/̉P7 ú"§p̉.4áˆíĐå³Ưªî\~`†K-$²º LT>²„å«*„ by×bJ‹¨bʵ{æè-ffk¡unk)F”Leí-0sQÏ¢'ĐB@ §¾z¨L¢"̀Kи¼µÀʱ̀LJñ)­ö¥›Lo“âéß·'¨Â £\ơƯ{âz°à”ÊC |Ăièr™Æj‰7Ê?í+§—i˜iIÏ‘¤äPVhÚ°Ë{|¡é“B“tœ'4ë¬f')¼—©ëơL5 _“qṛ₫Û‚ÊâóĂ¢’@§¾ÆƠô, WbàVVo ÿÑ «ëñ0ZƯ;öuöäÓ9E¾Å̀/ƒá8›§¬ở¹ç–±BĂsbÅ…¾Xʧ±MËc#Q˜…?̉à- áÁË0b½¡Á·ªk³‡x±¦Åó©?ßWÔ{‚r‘_e3M[Q•j„đ¿o₫k^¿OL¾v®ËæøuâÈhyËñ‘å,N?vÀ±*Â,µqÛ©Ä{½€:’o"ÀÓ!Tyr/„8ØQ]€Àc<ßâÆ¦Nv°pĂP.̣ÀGạ€v,.‚»;F@ :I1³æoD»Xg;{ùŒñßP"q¶^’Õ½zû?$»½å´¼„Ù—//UPä·öd\zÊenl̉z6Ư–Chœiw䇔~†¡œ̃©yYºsäØ%=Cy¯×j'¡J…ÆÉoJøÁÊà\ÑLªßÉá¤W¼k†z[́íçÄg4sôFÆh”́+4}+(â0ËÅ-?^Ư_¡£àú¿7·üư¼ˆ̃_̃ß_̃,¿pÓ{Üàö+0• w÷Ôüá₫̣—séº=rơụ̂êf)Ă¯î¹^.¯̃qơ§/'‰ÿ}”a*ÿÑqyw÷éúçËŸ>ár%L—t¶Ï!W¯~G…üùênÉơϯn°¤ƒ[¤Æ“®ḍĂưô%₫đ! íúFf̃_/¯o>đd>=´₫|{÷åâô[ È)+sưáăó’pYn?½»%¼àúåÍ»·È6¥s95ß-Œ¿Ëë++ÜD)₫v «P#gcoμæD’—2ơúáûŸbÿ'8, endstream endobj 727 0 obj << /Length 3093 /Filter /FlateDecode >> stream xÚ½Y[oë¸~?¿ÂèKe Q¬»´ûä8J¢®cge9§A·@[…Ê’!ÉǛ߹Q¾Äi·(PˆÈáüf87̉FoFÏ3{oé¾åơ›o¢Öï=nÄß á»Æë#ÎÛäÛͽăôŒ £—¬—J–½¿iĂí¶múZV.óßû×–eiĂŸøû0™cĂÖ²2«Ó‚©Ï»·"_p{œ/²²É`#đeôÿüå[˜t€ÓÑÛúƒè÷Z¾L ,}`Û ”«»—l@¢ïQ̣8'Ê5µï}Éâx8I^™4½Ç/'Bø%Ü]1-́ZÔ¿6´ä›±Pÿú‡³Yx' ÄüÇQ¨¦F“Ñx~w8Cèö<Ăôă‹&8Å ´[BéùÚd0e=E ídzÅÆ(²#SE‹ÂI8à| ă>œêèû¾£ o£q@t†>0èàäznè#ø†ØẠ̀<í>J&°®¡Í¤ß7=̣̃\mÈ´ç¾oüŸ ̃¢Ñ|<–çyü<…:s’Hn21f¿Èz²I2å>²+Uè̉ơ]Ưë¯ó!‰Öè p @…ñ=J?Ÿ†“QÈDÔ r1ä" MâáD3@âÖët®óØ Lj,Ë+h GĂ:æYºí —÷ºåÍ@í‡Ô—Iwá}8J¢—đû°7†³Ùü 4/|Œ#Ôñ$A,jßËœñ˜i4]âÄÆlÆÇ#g‚×èÖ@đÎÀb ĂĐ^¢[(:xƒ‘E1÷§̣MăÓ‰#„‰N«CĐ »wm¸ºÍáZưkØBÅ&oÓ6¯J^¡Zqlçé[+y‹ùèû¶¦_0S@kzº£>ÀôÀÏá/Jú–Žùd ₫Êí8üuövǽ[´•̀í*iĐ5tÏöEƒ¼®ßÅ7tR‰qöÛÀœéë–‘IÂF—…(ÚM…8%²|‘ÀC¹ÑE(ôûeK|¸>^2HÇöu!¿ “ xĂ ¸AÀD;!ƯFóxˆk%!sÑVđEh¤wàÍ1cñ–Ñ„W0ØíáËf%9 Écß]†f9ºm ´.ÍÁ vS\ ’Ăî=Ea4Ç­§÷ÇáX>åR.r‚'D3•ƒ̀.Z $¨Äă`5MƯ ÜO‰gÇmPnñµđcä„ºSªxdÅ ®|,åxˆtlƯ …!Kå₫W™N‘·a8áÖ á%ẬéSr$ ‡³]YJ]¶öŒ&æ–̣Œ̣«cœÍG̀y悟²‘…îKùÈ“|•ÈÛfơ¶Î.å¥Y¶@bĂTĂáoZ.yóÚ¥JÏö`3[N"Zñ¬vñ¬ẽ,4ßdơñf–¶G,i]§ £ÜÏ¡ÉÅÅjR(åOŸ§YÚ¶®°÷#_fKA₫Fe>“q´H˲j™‡Ydà=Wl†&1,à*pQv«I9̀"{烧e¿Aêä¸.U½̀Q®w¦´ọ́ZY½i$p×Ù<Ûçå;-ª]Ư6ÜnÖi!›¤ÛmñÁM‚Lî§(È^6[§-“7U#­EQ5̀VBu¶3€ô$RÁ.¬ÙßóMÚf çÜơc ă¦*vmƽ=î¢A§5ÓèÈpÁÂ"ÿ‘L;?FÍKZTeÉö(KçíGØ´€ô\Wïuº¹ẫ®,²¦ùB Ë…t&—¥”SßWhUÍß´iv›­2¾@Œ/øl|đf›–9é üYTÛ#.µ€8G $àN.Û€sîji¯:,,û*ËÈ oÀºËvM¼‡[³=đtÓ”’'ä‹Ăñ¾ ”/3nƠä÷;¨Ú ˳özÄ >«¾e)+Ù-ÎÓĂ×^‡©Ùl Íø”ùÉ`ÂÜ›d²–ß°<§÷]÷÷ “å8z .kb P*ÙjÇeÆFW€Â‰@`j%íưíÁXp”ƒÚÙ"l%’Z¦ạ̈e5Ă…X6́!Ç Î]gè!2‡ª¦Éß aØ5ÙñzGS·ôÄpu–QvÛÔ}u`~¸ô"3´t÷ˆ9åÛƯ)Y÷z¸ÎQ=&“ÛũpK}û&ưg_ÄQY}UgBiªƯYx¿:ăÍö뜷a&Ù«fƯ–2uA!¸ë rB[ço6$œÆqD©Í@w‘z˜Öiù.qzG‚3:aµZC»,tëp}öz>I²f‚·®Ë̀¥Dă¦ºbBÚ¶)oªÂ4l˜q{UÅCŸ] ²I¾È$@·²¨­«,’°mC̉25Wñ<]‰Å¸]V8Ư–Ú|±xÓ¦µ„t0G±Á‘"Í Đ}[ngÙѲˆ»«¢9ÈW6^I•"+₫ª„av-çĂåÄcâ₫mv’̣MΟ¿Ăj l;h5ØÂ;ïy"ÿ…!X₫|Rx˜Œ­ zˆTÁlÖƠ®®u*yÍ(ơάÊć”ÀPé:mÚ³jå7Ă²Ù®ó÷5ú“ª9ÊLU(ªẨƒ==WơƠ±mđ¬>U‘¥­vœÄm±¦æRz­ª]¹”8ïz=_\ׯ°húºÅ¥̣”Ĩ嘀Ăn‹_(fe- ±DĐ Ó0¥L72F2Qƒ?ou­¸ •+¡́©¢ 1ù.«¬Ä–q„’ „uÛ•d2ª¶¤W™…W³́du!äS¤‰YZŸCVh̉]»†<ùyókYăÚ„h` „„‚ß‘:D!r¬Ăƺ=ĸŸ¸ûYȰqȵʼ©ï¦Zæ«>fI®ÇúP༳ú́´ZΤǒvcôNM ơNơNíîđ(‰‘¡YgrÔo_Áêö¹ï´1m-”ệ+&dP) ~duCEv¬/$|2]) @‰ç¡ú ‚Ø©*#Ă}ˆ¤í ]­ô_ØÀáXEQyy†~]m;ç:w…}^Èy¼ ¤}px–½$\÷„̀§ŸœNbçÙ$ʺm·?ƯǗ÷{ư½ÜéUư~S°àÍÍ9FÛ0tÛ71~ư+˜b₫·ˆÎV$Dú¥Ë^˜tßwèÄuåG¿¢‘&]ÊăB^¢YÚ‹f]ybweÊ+=)4e¸R¢Où~oă%—K¾(̃$¨* jª«Rư€ØÛT~†”zaæüé…–ªVơ¼NwSƠ¦{ˆ_ØYVêzB1BÉKz€V(̉̉…Än|Ô:*ú‘§å/Ä™íNÚ)À›j¡te ´‹üx¾\. …Oyº&U«M‡å¬:‹“ƯTÔßUTiWxªº”$]Br₫U’R̉ç Ạ́à–á«"ăÿ\KwÜÓhñEfZT›¬9"ĂÛÙt> stream xÚ•VKÛ6¾ï¯0rYXÑ¢(ê‘ Y¤X´AánÈ2m‘D¤áøßwÈ¡lÙ»Á¶0`q†Ăyqæ̉E?º(̉EQ2R²bÑôw‰çêư>̃Ñ ƒ`<“ü¸¾[}â|AR%]¬wsUëíâïèĂ8.ă´ŒÄ°•?–1c,úđ¿¿u‹,zƒĐu‡Ü/‡M'\?ÉF F€ZIÄ̉å?ëßî~]Ÿâ)')Ày{…b·fü°h­߯VÇă‘́‡Qz¿ềêÖÏ,©`(fW~₫|„N̉/½ºÂÇ[¥̃+́:ª̣›ñB3‹t>^X>¥9Ÿ?ǿy_Ø*|g””E~x~è^†¥‘«\gA9 {Ü (£ĂI,×é”%…Ú³a†BƠ¾‚̀ %Yâ ZŒ«lFŸwX1sSéÜóo _Éø1‡“C(¿N‚Óí†FguM\ĂÔØï€‚‘₫íàuÛÛôܺs— ;ê>g!<@Ås|¼,IZPŒ¯“ĂwL`Z]å4%¾±àYà((r”¶Å½ĐP ¨Ø¸¡ă#J(& äm‹ùH0/NC[[ä\¢N†ÖxMÁ€Â­z@F˜“iØrE6E8»A^p2aĂ “OŸ?—"çR„ơ¥ƒ±¢̃"¡.q@æ"î°|@€º‹UÑG?¯ ¤™6ö!äµơ¤];Ơ·M̀*’Ă+(øư±f:_ο57F^CŸË˜åª£nª£ Ă ±•2jlO«c{¡Eăn?v¤µ}÷>9÷5ÆsJª·ö“p|‘~”nT^0ÉÙưî-=¢ endstream endobj 835 0 obj << /Length 3861 /Filter /FlateDecode >> stream xÚíMs7†ï₫ùp5Ñ\1#ƠÎ̃‡ùä‡3)Ïúđơ«/?́,i¡™V²R6•>̉îÅ„[&¸VA;ü7„a]ø)Ⱦ_͇?‚̣¶ bR ^tLoWZ&Ͷ́ëm91é™3fc.â^»sÛRÓŸÏ/„;»YßG³ ¸̀zån[̣ïçỤ̈í_bï'₫đï^́”ˆ¾cܧÛXÉx¯7”ødø̀ø„ø_‰ .ûŸ@n̉óÀÀ†˜æC‘Mú¸>öÅ1©å/8±©ô‘̣>ˆ–3-ƯÄHÉœ[é/Hy,4½[̀Î/¤’gßßM?áŸấ¿Ÿ‹₫lXÿ¾>ê8SÖ>/@’¤˜UzbxÏ”‡áñÀlŸ¿ À́‹lÂ)P^€+5¼yÑÖ2cbåú¦†—Ụ̀æn(ÔYÜW€r¬³>C¥`\Ûö: @ë¬Tæ: úRÁ ¥́ÛX­¹¯̉"÷³›Ûsß"₫ù:Ô<÷…fQ*ï©«|£)Ƽ¦l§ &–  øRC¡hRÙ§i½øøË¨O=ë{>̣ôĐH1Üí e8H0§B¢ _j@"”HÂ1!#Gëaz_jï4sºáiz#j÷v vÏă<ÔơRv¤†¦}Ùb?KùÂ.ơ³.kúYóáêrq]¨µ:f¸Á{bï~‹ƒ²©§t­€”¹Tf Á ƒ¾TPG)û:LÉTj=KïÖ·…J̀C©ÇƠ‰Xog)ÀY‚i%X¾Ô°D(–´đî›Kÿ9ïÍÙt]ä‰<§ơv²œ'˜Z‚'àK O„ràI…Fñ§7›~úo«ÿ.VÑ2–u/oJCcÀv2vÏă`€\dGj°Àe¾g£Ó„{Æârø±ăºØ×YnÆê†"%µ•lgf€øRC ¡páiÛậv±\“¢ăj$åñøÄ ·ă“ àøÀLø_jđ!”>]ÏL'đY÷³Đư2¬¥8Év̀ú§^ H1zí\d80EÀ—.eÏ…t–úºËaU„K&Ç1øg¢S¨›!Pˆọ̈É-ô¥"J9@Ôftbhù:̀D—V4„ñ˜qÑ́¤=ûv¨vÏăLôHeGjˆÚ—-N"Je™́cCùeÍ$â°_WÅID̃ØiêRrÖ?¥“ à̀Å2A|©¡î@¹ˆp‚y[µ»émèMư¶Ư/nVÛ½%ß WĂzXÍ Ă8ë6?ŒÈa­ÿ6ö-&ÀºÅ$•Ùî¢Ăđ®Tàs(\ÆGZÖ«8•đ®¦Öú8ÜSM¦3n¬¹NÙd !˜”O˜OĐ ,•y ƒ¾ÔH(û˜àÜ—³;¬Â£ sŒo¦q”W˜i4¬ëÜ8ƠÓ#ØÎF6€³ÓD°|©aƒPltïMå*çÍÍêî~ºÚT<…¹Æ;vƠ+†u)®íÄd810y1À—beO ÷åTjCˆùvz=Üú6=SöY¯[ ¤X5S  ́%§úRA¥(9•;¨ÅPÑ5ÆiÆX1èí4íÇay%XÊÔ ´/[́{mf̉i¯júÇ_…=›QƠr8çgÛ­úËí'W›Q—ÿôf5].îĂ¯₫,là÷}œ₫¹¬‡ Ă*Üêöa0€«Rzç>t¥†B8T@¾_ĂË,\,‡ßC#´Ï€oœïY·Z¾Ü±v];ÙL:Ö†®Ô@q ¼_—ÈÎ2ß=5}ÏŒK‡ÖÊu‰7¥7±¦{}»;ˆ¶9ù“áÙ°ôc§»Ëáv=̀¦÷ĂÜ×+₫~̀ơ毶öđ¨ 7L~b¬̣5ïă{¨éù `à‚C‘mÍ °c‹Đ—c‹”²́zOˆ¿JæúHߤ7zđëά”† eư*í«ÿá§n2÷¿üzzÂf̣iSôz"˜5ac×ṛïWÿ*HKÇŒ6ûÚ«á~6¿*Oá¼ôÓ™1~ídf8™0I™À—2 åD¦–L©8̀_¬~-T#uj<’ñùđw ÄT´ƒ– à Á|ó øR¡œ@S‚¹4.ô á³Éq5ÑNTyŨ·3• àLÁÔL_j˜"”SR0iÔ!Sï/‹Ë”#U­Ư³év²œ#˜N‚#àK G„râHpÖ§ú™£0X˜u欓c{HŒöwùŒam‡&À¡¹# ¾Ô@C('hüàO¤én v2¬·cµs¢Æ,F¼§lç ¦•à øRĂ¡œxê:f¥ƒ<•²°mÚ‡\ß»ám‡'Àá9$à¾ÔÀC(Gx´ó;»Oa®QÖW‚<¢ÎImÆ@±ÙË ô¥J9ac·sD ›Í±›ơơ´0.Srœh©xRŒÛ Êp‚`" ‚€/5ʉ ă‡ë<Á̃­o· —Ëog‹ya+dƾØÍb#1íŒd8#0UÜ¡Œ_j!”#ºgÚ È2´Ră‘°‡j“ËvR²œ˜0‚àK )„r"Eơ›Áơ)©F)ưêú{ôk—¯¶v(² ˜ àK „r‚BZ¦z¡øg˜ ™®‡r”¶̀I1®ga‰ál‡%Àa9#`¾ÔÀB('XÂJ&XỊ̈°Ü¯­ë́ØĐ<µ×cƯNR6€“J|©!‰PN$yX°úfñóf_á°.«5ëûñzàGÔB1ºí́d8;0…;À—våÄNçy Så¡ôC!1NÆ<µ±n')ÀI‚ %H¾ÔD(G’”Ó̃9§Í‹_THÑkg#ÀÙ€)"ؾ԰A('6ÏG2ÈÖaÓ;®»41̉íe8G0GÀ—åÄQx;^ï9º+¶RZcîÇ×D1Æíe8A0‘AÀ—‚åDP×íÀBo·4b¼Æư‰sÅ)Öí$e8I0¡IÀ—’åH’ /4IËïĂ=(Ëeso OWçül¯(¸™Î‹ƒñ¾gư3<Ê‚ÿbJ³‹Ù£‰ˆÏ_ÇDˆl'ù0  +@ ŸK?€6ÖjßÔ>ÿcC†w›Œ5ĐÇî‰åCΟ‚]6€cË<€p¥;B8ƠC¾±̉V%ÂBħt7JñRŒí­(®x+`ưs[#Řˆakg"À™€¹AÏ™CWj˜ „B²N=&¶w¤¤{ruGu›ă3/çήԙHqkî±he/9ǯ`ÛQ|©¡‚PNTpÁ”ă•T.?An>‘©ƠḾûÿóíß÷lÿ¾Ă[4³À•̀»á/ibëómM×c5Ẵ́èóéø8svFĂD'Û¹PîR™̣}K‰$èJw”p¬Q„Ö̀€/înË·Ư¸q·̃IÛ«”÷ÿv¸².˜d.àJ \„p‚Kiß÷MW)Í««›"\¡Máú pÅø·Ă• àpÁ$ăpWjà"„\¾‘Û½riZ–Qa}Ă;̃'đYàño‡+Àá‚IF;ÚĐ•¸á—đ=bi \Ó̉åK̉1=nInfNYÑnG)ÀQ‚)ÅQ®Ô D'”¸ôuJ(}Z/=v>°9ơ\u|;VÙL¯A±®Ô`E'¬:Áœ–{X«(%Ç÷$µ,ǧüÆ8·C” àÁdâWj "„#DÜ ¦8߃èn¦•~®§Å#nÜ7F̣’BÚ̀ 0€̣²—7”èJ/”pâ¥ç¬7Gwă^É+ưÀ0¬3O»’×úVñ@vú3¼ ø »/F>5·•"ÛNk6€Ó ӇΩBWjh%„­–o¦êh ¯2ü´BÙỤ̀æ®ĐƯ ¥FNÁiŒi;§ÙÎ)LÎ)p¥†SB8qj:f{SÉ©/́¬;§Pvvs»YQ~½¹!⾸¤đ̀WÛWR$Ûé̀p:aºp:+5t‰NƯ1¡T%¾°’ötBYlK?¶&*¦XR8ÛÍpDaÎpD+5ˆ Qé˜M‹g"ê ÷ΜQ(;®°m­%«ÏÇv6³œM˜,œMàJ ›„pb3ÜÏ¿[`}ˆM̃”£NÁ&”ơl¾[ß"¯ĐWGH6cÛÙ̀p6a²ĐË(¡+5l‰M̃3Ăk‡óÉpÊz6ñ£ô– =Ö5Í{ i;¦Ù)̀)p¥SB8aêÿêlí8¾ ;¸O2‡²Óçó̃>Ï·î8ˆi‡-ÀaƒÑÇa®ÔÀFGØœeZVÅ}Y+N1‡¢™4ꜸI¾¤ư½‹©fộó(y0(xÀ îƠˆ]¿ƯbW…]¿­cÍØ¡W'_ü½#‘‘¹f óó(†09(†À Ơˆ¡5LéÊ´/kÔ)ÆÑP`øđµ½ú¿¿êá+†¤™¯ü<ÊŒ:Êđ£‚/Bu÷úDæxå`Øl'÷Î |a†5·ăüv‰ÆÀfóó(0GËâΪ—,¢ª»‹ö™¬]ÍöeơI³¡è|Xâïu4¬7„Ut c@›é̀Ï£tœ×ûïü8¢óñ¶ endstream endobj 694 0 obj << /Type /ObjStm /N 100 /First 889 /Length 2096 /Filter /FlateDecode >> stream xÚ½Z]o\·}ß_ÁÇô!\r8dah¨(ІíMŒ<¸ÎÆ2¢jI†ăß3»̀ƯKkDÚK^ñîygæp8äZ[ )ä&!—ˆCÖ´å@©¢Ơ@øh«¡4ÿ.‹K)HÊh)h*x1L+K²ëc }÷ăP‹¢m¡Ö,çĐ«!'đY.x¨˜@®)dÂ<,̀V–æf>ZCæ\ƒQƃ‡0\ Ă 6(†¡*pÜ«˜«9¢Á:+ 뤭¬À̀́ó,¨0úÀ8Xe˜5©xç‚Ø^}”Œ)p†$h¡(¡3FjœC©RVƇ9—ÀÉíbLđ›±û¦k`.>Ü Ă.|X¶s l%®ˆ€IvĂÅBA2l2)Ađ&¤øTE‚°a¸h©̃Ç‚xLjJØ‚4‰&„`¦9hVøYLª₫ơp¦¢’1Uu*Äà7µ U½³Ë¼só8£³¹¯3₫x„ éỀ„K̀C…™áÁAưÁ5Ö¼3@›{Ơ,Ôä^hÍÅ;C=+Ư#µ8|Í¡r2¦[Ơă UsmTHÎcepzmâ5ÈPCËn \ÓÈ „&»˜A‚PgSæ•5 ͽe­„V}°­5Ÿª/–”“¿‚Ú0×´S;]ük›«½à»¸ç¤>}¬œ€°zölµ~ơéjÖ»¼Ü̃®Ößn¯̃\‡×¾ÓO«ơ‹ÍÛÛđº0E_>Zs¬ aªQ±4°Dư;ú½üđßÛÎ?ß_₫ ´đ́YX¿ ë¿øÇ₫ÏWç··W]¯¹ù%n¯ß­ÿ¾ùf…>ƒïĂk…¥)¼ëÿüđcđHir¸üpqñÓ»m/owôgbƯw?s‡÷Gè Î̃?C£´GÄàơóëíÛ—ØÖÏ¿? ëW›ßnĂ„»÷Óó7ï6«ơwàØ\̃̃¸ê|¸;êfûáúíæf—{v¯₫µùùư›o·¿í½)M"A_•ƯgpÙó7×€ï>7RO4̣‘Ætqǘöc yøÆx–~„1¶@?·À3ωÈSZÓ] ê©´'µ€ïXéD ryR ê] ôT ́)- ºc¥- ü¤Ø] ”X­tƒw[Û È½ó)}ÆüÅ­¬E5¯,(rŒ?ü°­ïăÇñƯå‡Ưöwñ₫íæ̣fsóù>è¥ăÉ6æßaΨí¤H¹‰RNŒDÙkÉk̃}k ·è…ÊÅH¨ª8µ((pµ́¾/™?1. \%FÑwp!ÁtW¼₫ư±Ó¹:±½Ù^Z<ÿô5&đơÅ»«‹x~û¿‹Îrq )Tóºû>zr.́ÂöLÀ Ôkơ®˜ëéb®]ÄûiúIlßv‘s9—̃ro¥·Ú[ëmÇă'O:t<éx̉ñ¤ăIÇ“'O:v<íxÚñ´ăiÇÓ§O;v<íxÖñ¬ăYdzgÏ:u<ëxÖñ¬ăƠW;^íxµăƠW;^íxµăƠW;^ëx­ăơC„ªömÇk¯×ßÖ:^ëxûZxwÚ·¹·ÔÛ̉[î­ôV{k½­½íx¹ăå—;^/zj₫̉¶ơ‡…{4WÖ3r¬Z‰~ÁAµÅù(v7́hè7-ø¿o_mV́WYæ—?ÉÉÑ%s}THeâÄN*¥ƯËI§RîÍ¥˜¡₫ß)Ek,•™Ù9±12ÁÄ)Kjc9±Ơ1VïÄÉ9Đư®- qR‹T”EbJu¨™lyNÆ{=N]ˆSs´Y8û•³s)N¡èwz§T̀Ær¢lñ:q²El ƒ9SlZgQ̀!å̀¨tlO”gHĐc9S~/8qf•ÚPÎ̉,zơ?q¦«”û9m!Î ØTJ£XÍÆRTe³pdÂ|,œ¶̀FFfà8¸–j‰åẸ̀\(Ùa¥¶N"Ï÷CK8Ei>¬MÊåX®]ˆ37¬“Y®¥¤Èƒu,gÅ:™må¾”±ë$ÖÉ,×f eÂPÑf(Èß™8]B‰ÆT_b™™ 1éˆu"¨- UÔ±„3›Ư₫Cθ÷[I q¢È$>ôƠR¤¬c9U 'ÎóرïWP]ˆàŒ•2q¢ĐMÇVÊRœ¨”̣Ó Ư–Çrb¥$›iˆ,6nc9ưÎjWTwN_*Ç2ßBœ‚lÛfTl[UÇrVÄOº•æïy,'¶ë–iv'¨2ÇêV‡>;èVLbá#ºm qzUyàTÚÚXN4ưÎuâF¾µ±œ8iÚ,ßâƒJEÇr‚‹fùråÄ)AgùVˆPÑXÎÄ1Ị̈­d©Ơ-·‚ÙL·)£«[FÉfù–[íX¾]Óü—¢ƒnưö¢É·”âÔÛ,ßúíE;’oăDm³|˨MJ¥±œœp <è–¹Æz$ß.Ɖڤ̣̀-ûïMG̣íbœÙoifºEm¢RÇr¢6™×·ŒÚ$籺-¨Mæơ-£6Q¤[Ô{₫ŸĐ j“y}[P›äcùv!J&” 3J¤x,¥_˜”ĂJ)¥Ạ̊ˆsàḶd;³̉oèødfÆ!Œ‹³`áP¾ÿ hËP’¢Je¢$Cî=r›Y¢”‚̉öé¾Ö:”’«ÿàXB¶/¬C) ï®l'JOöé₫d°|ˆ’=ä> stream xÚíMs·†ïú{$„ß@n‰¹́JYÍ$Û†\É[!W2¹*Çÿ̃̀¢wwl‚ăƒ¸S®²dª§ßV÷c40˜ÁÈEÿÈ…W ´Ú/®ï^uÛŸ̃¿_ô¿ù₫«W2Û]€á²üÛå«/̃X»ˆ]”‹ËwØƠåÍâdz¯×7ËÿŸÿ|ùÍÂ%œ6àhûÚ¤Ÿ¾úûåλUVX£™¡ ÖGñ¨EÑ93D£œè¬éE×ËÍơÍ»Aø×·è…ñqk«̀ÖƠ?w‹ø³oĐÁ-~ÛZ̃-”đÎÂïn?¼úç± ́:BÜW]®o^/·ª_¼ ÈXwBY=$ä/ç̉Ë₫µ÷_̣ñ?û́/8`A#¼±»<&„…?]„Iµ…bÿ'˜áú äà¨X‡"Û2ÄăP¢ĐP& å`]NXJ v’‡¥L¨›)°Äªï—›¿«x¶Ù£©¼̉Îh¢R„æ”¶ZĐ„âºÑ„¢P8„V„¡Îx¡`&‹ _₫’ư´₫ß—W×ç*œư²èƒpJ~~R@å ´UĐ@á4Ó@¡P8@U„P^ «y3Ùz=OXxú÷ypgW÷#S»(¤?ơUÇƯ¶¥ I|:’ươÈÁ’û"ÛüËdÅÂa²¢œ˜tVÉ̀ë”èÔ$ «®Ö¿Ó(ahÖr^hđÆ¢œÙvR‹T\¾ ©(©åDª• ÎlÇ`«Ơ$í«©ôÊ8NÏĂç8”9‰íP4”¸R(Q,(+Ê JÓ £˜-l‚I,Z˜üúơÈ­Ä ´T'G%ÅaN\;‡ÅÍ!®N…C ‡Ăr↯˜ml£œ¤cƠbZ¦Œ.“£zÑ¢.g©ºâ€¦—¢B…C]E9Q'¡é)t`ªä$ $ ̀½^Ưî x§æf ¶ưííç’ˆE{Çz°US§#Å]ÎV;xÅM.I= ‡½2Àg,'yÍ7Ù†næ»§:Đ7rwĐXOb7™ànÈS3wÈÉƯ^1¤¤¸Ă±0¸«)'î‚‘· ¶Á ÙMÑ~±(P÷&ƯNüpwµøNê`Ÿ±v₫v×Óø¡¢Tè+pà£e{̃ Ơñn²â^̀&°÷ƠưÇ-~Ÿno¿½^ƯŒ́ka]|!Rt头ăUĐ|á̀WC±p«('Äœ…đ™ml]œ¤­bƠ2b=kD§Ư‹Ư(ÔrjÚQ+hÔp₫+¨¡X8¨U”jP̀À ,cœ¤‘Í‚Ù0ŒeQÄÏ÷a¨mÚy.§i*I®°´‹‚C©™820(DfW[§ ‹ö(}—nÄ]Ư/×éÙ¨±GV`¢Ô 4*³ÓYq@c†KP ÅÂA­¢œ`ÓZhX°-¬¦  «ö´,:Á(º“}N”B1§®Åâ€F×§‚"…ƒbE9¡¨L¿x$‚i“4P$ ₫cơßí³-Ëûñ› ̃›¾ ̉窼Ươ4x¨îJ ́hÙD”"f·•JÈ0uX°_y¦áVêyüÛ‡0§®Ââ€Æ×G*’C Är"±“Bf+[ăƯ(bU@ñ_ëÛƠƯëƠƯÈøgáï¡âiLørVÚ)+hÊpê+”¡X8”U”2!|̃25™úIÅ¢‰±‡åưeZ]ü₫ñü~»1s¿NŸ̉‘œ£fâÊơ$p¸ 4o(nÙD›"x^w5å$›Z{¢€[íiåùa»qs Ûi,hq*<¢X8@V”‘®DE$Øj7E—ƯS-H¦7ĐBzmµ~?r·ÎĂló³_ÿR„匴VĐ„á´WC±p«('Âl̀W“©s“tX$Zøz½ü©“öj³½{»Ó˜̀åÜ´“¶» ¥¿ÂY „ƒ-›(3È`b¶q’a ‹̀̃¬Æ6Œ/mµĐ2­Ë)k§¯8 ñĂu‘äŰ¢œÔ^tÙIÁVÙIĪÁ[ ‰û^«‘×ájă^ÚÖ׌v¸.œñ \(\å—r0ơⱦÖN̉D‘hA‹x%Âú0¿‘ éóÖNáîzBT ƒ%‚´l"PZá,A° f}Ø=ÙàĂhƒ5FÏ6§¬¿â€æ×¥ …C`E9!Ø™íc·,;+¤™¤ĂbƠ„àírMlǸ›³(æÔµ£XĐ(âúTPD±pP¬(:˜À±HL¦i\z>‰XôCºUÎÆPT₫ n~Íûq>sB›ñ,דtâÑp¢@lVd†"ĂkÔÉÖë)ơêÇO›Ú;Ưn>ƒà1'±Èâ€&Wª‚$…ĂdE9Aé̀y­[{½} x(±*@YÛùˆffr”ÉœĂv&‹I\(iH&Q,&+ʉI§ó ³dªơ$=‰̃/G*UJØ`æ₫Íèß}2ÛÑÜ]O“‰êU³Âá’–MXZ) ó^O²u“<đ¼§z¿\_Ư-Én¬°6œîƒC®Ú¹+hđpA*ä¡X8èU”{¦ƒù ³M›tøÄ$m«ö́@`¼PÁ0w9OíÜ4w¸îP,î*ʉ; ‘+̃ĂÎÉV©)ÎüÙSí¹#gˆ0æuÂ;¹jg¯8 ÙĂ©°‡bá°WQÖ]2̣®‡  pn“ëuÚ́ñ²̀˜µĐ/æ-Ă¯H'´ Í'Ñ×W„?!`Û}!u}ùBBEy€-1ÿØ#ö;ØÀ؇)XĂªÀ,=®>Ưnjg x)¬{1›Ä»ºçD´ĂUĐpálKKÂ…báÀUQàJûÉØêgµƒ ©[ăÀ¤íÅùôÑ*}ÛÉÜ]Oƒ‰*Uá²ÂÁ’–ÍT¦cäƯc;w–É8lúM½wŸÖ×›Ơ‡ơèWBœ×ư5¸tPÂÄg̀—®Áæ¸p, ¸jÊyüJ/&u*7äM"æøa•̃̀́ߌRê9_VÓÊ iü¾hyç {Hëü²Újq@ƒKWÅÂơ@y|4éÔùÜăÿĂë¿“p•?”Î5ÙƠñ"Îw±|Ä̀ˆÆÇñ v•‡âEź4‰]íqü?Oç( endstream endobj 896 0 obj << /Length1 1597 /Length2 8627 /Length3 0 /Length 9672 /Filter /FlateDecode >> stream xÚ¶T\Ù.‚;‡wwwînM 7 ÜƯ%8„@ Á%h°à\‚»»…GfæÎ̀½ÿ¿Ö{«×:}¾ª¯jïªưƠ^‡–RM“UẨÑ,ëècå`cH)Kr°ØÙ¹ØØÙ9Ñhiµ 0(ø/3­ØÅâè ø/‚” Øöd“6‡=ñ”nP€ƒWƒOÀÉÎ.đ¢£‹ @ÚÜb Pf(::€]Ñh¥¼\ Ö6°§e₫ó `18øX₫H؃] s€²9̀lÿ´"È ĐtAÀ0¯ÿJÁ lƒ9 læö®l.Ö¢Œ,̀ v»¸ƒ-¿ ¨˜Ûƒÿ¬Œ  eqưÓ®éhó0w Ṕàúáæ` v<-ĐTP¨:₫$+ưI`üƠÇßé₫₫âđG°9ähïdîàq°XA `€ª¬̀Æ0w°üM4‡º:>Å›»›C æO„?vn•P˜?øWy® ˆ̀•Íư]"đw§.Ë8XJ9ÚÛƒ`®h¿÷' qƒÚîüódí=|₫VK«ßEXº9µ În`é¿(O&´lÖ`€‡—v€=A6Àßéµ¼œÀ8ÿ0?Uàçăäè°z*́±?ư¡ù¸»ƒ07°ŸÏ¿ÿĐ88– `¶†8 ư“ưÉ ¶ú?¾ Ä`È₫¤=ûïßßoÆỌ²tt€zưCÿă|r* ềVü·OR̉ÑàĂÊË `åäap°?-Ï÷ôâ÷ßiỒ!mă_± V?wûÔ¦ÿ́Øư/0ü5Œ€ÿÎ¥âø¤Z0€á‘±ó°ƒÿÏRÿ#äÿOῳüßD₫¿’uƒBÿp3üáÿÿ¸Íí!P¯¿O¢uƒ= €²ăÓ8ü/UüçĐJ:B-ÿ×§3 kèßM„¸ÊB<Á–jÈæO­üi×₫=cPˆXÍṆ̃ûR°r°³ÿïi°@vO‡ë“ ÿpŸææ¿—”q9Z₫0N^€¹‹‹¹ÚÓ?!€ÇÓ$Z‚=ÿ0Èæà{ <ç°rtAû}¼| ÔoÓŸˆ”₫ñ±€²ÿ 'ŸÊ?HTưñs€#§œæÿ '&èoÄó”ä}*÷?–'9€àÁ'ôø¤U ă¿ 'èô/Ⱥ₫ ̣€°Á§Tîÿ@ΧT^Àÿj!ÈÍÅåéùCâOưư₫ăƒ=Á ´Ù)GPíç –ë* 2Öa‘ Ú Ư4FVŸY—V·[,ädÆOYË.—Éư8 k2 âs>{5È¡M‰êÍw¾÷¦ñcÍh3£„=#…{_¾‘£¾dƠßô}pöƠ °ƒo„kS¤}ḯÆ¥–wíÑ-çùåÛ‡ùÁ© ơÍO¼¯Ñï?Œ³FkG”L̉æYdÿ ¦B‚±’£0½8öļ¸œx‘;̣H¡ÏŒæ·ÍUäcđ“3ææ‡÷âG-N×vbrø‹ƒct>’Û)DÓ>¥ÅQË"Ó9|á±}sAƯ ?^ëP½Q#v *cÉôWjĂ£iÏơeº@u@#*:z/(>Á´¥rV‰•Ôư¥¦Ù/!oo¨É5ôà,™[;^µïj·1±od%F5Ï0êèp’' ´ü;¤‹„sr¬nIïøfáè…Æ`‚¹xª̉¶f=ơœ(?˪Í<‹'¯é«ïße)¹îá|äô ÉÂ07…Û‚6YJ6rÑ“#lÀ¯›uF.½:1~Ă'<=æ̉€+p³hR¦Óp˜ÂÁ«UY ,‚¾¸7Xµ×î =øÚàNüë2Rn×H0à©©!†ºœ‰ăÂʉq¥:_<ö&zƯM×Ñ}ñ |‹Ù̀ŸV°`xÍ65¹f¯Ujd2}î›eFGöNºpYv +A\%y¯̀è†+²î§°Bj•] Ûơ³[2–đƯœ¡Ÿ–Óú~”T+KåÎØôăà°2₫ç¹Gn^=èà&w/91ï|Oµ±í<¿5ơhG‡OéZÛ·YІ 3&d-¹.7¤kÊ;ÊÙ‰é ÄyD̉V—$M¬Xôöú”ÙºÔF¿jSw²JA>(W‚óMøúĦ9?¢ƒ{iK)úW*Ń# MÚª)Iîµ¼›¬>ÜHè"ƒºmwoÀˆ1+ôHz¶C$4{7ñí‰'ï‡1‹N¾äLU¹‡ï-³Û!ߨ„=7₫H’çf™bÙœ[ywß¼Ÿ­½¦©¸ œhÀPuxºâcœ̀9°6×mtªÎ.5´mâ®ôLÑè3RNSlz~+Yê;cØ1-<0µpêZúeuÔZe§j>÷¯"®ôî,7~l×ÔͲ·;¸́Ͻ³z7ú«Dwxá{aa₫Mv‡2­…½.fFW3*cî®Ûr{?D £Ó£&h¬ḍ6Nß²^%ûi 4Dt$ṛ́Â%Œ8*¡8R_ßN»S#ä…M¼ºT#²"œP$`ïf¦Í Ø” 7đ?³gY³1Íô½<£¡Ăz}NÑ!F®kơEw¡rœ̃-<6¾@Ơ*̉²htƒ8’3ßkÉ—ëfă|‡¥Q5Èë+d¬¶m­/—zm:x¹îb–¶Dd]̀ч̉a§.Ư•¶ Í¿rȶGḌ"täÀkH‘ûU(6'í n½ĐĂ#¹ûæ÷=Ç­×å(æTV<-yY7âØÎmƠGN ¡>a”1!œDr1M´S–Ă÷3 f½I{w¸“)½4̣е ³Ö0?PÇqÀ¬}w݃Réc-ă;FŸ#‡ÇưÎÂç6xæ¸Ù8&rüï¶P=++uquHoæT—-æ8Ä•0Ô3’Npx¥}JPe×·«ªûWhoœç@'VÖà†ˆb¤‘ŸƠ8Ï'à‘…×jóÁó¶ÓÔ}ó4;±M5¼:µ½?áKĆ´̣á0O¡=Ù4ÿé«­Ụ̀ë1œ÷ :—éq’ÍF w á–|êd¼ÆV‘{°úKû̉Êzºaá Ÿ́ï₫ÄLGVŸÁ ­Ơ~¯Ë\=áRÇY§çë í¯R>Öäm¹Đ¯.Äï%¨]×0CSĺv®¸Íbx^#nơS}×Ív©YœĐÔfJ„¿°ód$ö䓼Œº‚>6puk4oÜä²v¼đÚÛ.i—l~Ç‚3ÚêG’”:O a[¤6Æ7ĐåCóssÖNŒ²èV¿k[=¢œ™0ÉŸ©Ôø)UË+Êr¾‚Åäâ˳Ăw[½bCgÊ-•¯I¶ y´#û́Sjê1‰‚3ÉăîÉÉ{¾eMo1÷¶3$­;Në’rHa!¹Ư[RIw8ûyØ(€É:jÔ{Xy4S?—/üBLG~vx]̀m$^ûxv‘9q|ø®© #¤;M?tê­j{ÿà¡£… ¡+§d—d½} ̃[A!ƒôw wq„ CöơŸ¤‡ư$yktÇæÉÀ™g6Ö[—ú+®åÙ‹¢’ •ĐÛk€>ˆâƯé·øư]÷F̉[i;ở’]Đ•l´§;ăÙÄêG”©UM®lă›a.Êê½Y$3Ă@_æÛÀ7̉/µ´[ŒĂ/ṭ®R¬!̉¢?‘¨§ Óˆ—>ºæ¤e°>øÍ†}UOC²Á4Z턾yV ẽ¡iÑH¬œª̀ñ·#© Å[}³̃?7ơ©pưU`FÑû« 'nñ\埨ù[M;O¶¾WYJä„ÙtUMvÏ·«˜áYcị́đ»0úŒMиt ¡;­)+Ê@fỜ 2Qu>ô”O^Ư¦º±A8"ÏOo›S bçסÔơjŸª(*©eM¼×“æĐ!E Œ~/U °~í½êà -ÔC´àố² y®µ¯‚“¬¿8,ùî÷×Üưèô,¡éB¯É«}D¹Ø<±wí—+ ø™ăĂŒzÆq*[ï]÷«$vC¹䕬̣G,Ỷ˜vJæ€-Q.Â$ª÷¨ÚJ®+[ục¡ 9³qÓP…¶x¹œù›*j[úâBmµ.‚«^O“+)6ê+^m§½]3™—¦^_ơơ‘ +ÛÊ’nŒ¢~/Àû—\88·IbúÜB\l”€ˆ9iKX„ÿ”Ï?÷a¾ßvÆhë8¶o1Siÿ́˜R®œđcoQÁXÔ#50“tN.Ás¼@9¾¨Æ“xÁ”wHú=„Ăaä¨i]́F¸¥ày]ÏUß*u:Wô×GÁ2¹B‚ư”Îàv…Gâ;̉ƯPÊ©đS9!¦WîÍvâd L˜•Û=¨£¢zü½M%yäXà@ç.D”*VÑ¿˜¥x“›P@Wˆ!øh”åË{¾‘¨˜2;ÉÅ~1(³ÑđdzdøN±̉ô{r0±ơ¬¯öc¹h? æP£ àBK4>X’ÖGÓæ2xóKMo'CLègrí>—>ͯÂ6 …v(F…˜Ưe mgx@ôÆ̉Ơîlơm‹Ü>Jáûgz"„pæEơ³âרèïXđ~~+çb-5>]*¦s´¼‡₫4«2³Ê‘+˜pbÂ(D,}!O£#"Vh† ccf\i “–”¼uÎPĂynîß\ëúÚ¼đ[âÑͧØơo=|^í<¸Q Bªq ̣¸ /ë‘´â;áoI6´xJmáq̉±ÙQa aÏnñN39ăT^íóøÆˆZÏz$™)\%k9ic¯œÍYBéw9àŒ5"Ë'ƯÎ÷×Ñ%öE“‘Lñ\Îx—]Sƒ‹„ú x|]µ—¾#ÛÏW7ôæ€\¤ó)Ú¦8dP¿3́}¾]‡7Í(¼àŸ“8"G¥£n›ª§="%¿¹ï»•î+O2g̣HĐ.{H Ö3Ä$}ÛP¿B£S÷yĐÉĐ@>¼LYiØ”Óú´Œaö.ôƯf«Â¤Ó¢¦evƠ£OTô±Ê‰ÀË8T† »¯$Px‡fg«â¤ß)¸x˜æPj+%îĐXÔù")¡¬Lö́Ùâ»›»Â†¡-áß@Hñ躧óÏbd’+Yå¨Ư·cØi¬$áÉ98oœÇ\HÎëz®]áË7VjFH7ÆÖkÛŒBV9k¨‚Đ2¿¨¸6¥ÛÂƠ³¦ơ8‰1¿O”:«j;£4 0RCüº~µđé1¿ơ.’è,'nhÔ÷¨°_× _Ͳ.@|  ›Œ̉† ¾ÂL¼éĂC‚¿¢ø®²\“•@ƒ½¯¬_Ó.» œÂü%ÎøŒâJ9Œ|¬!èP¶EĂ>‰œê7A=LÅ*£Â:÷¶m–ôƠÊ•¡&´è²¼ 9z£ÄøÎ["d7Qاm7ëäê’óâ¼đ»×€¦'RvD4k«øịƯ$Ç¡ơ[mûʇ†kuôƠT\iŒgú¢³@ÉGzÊ 8®ÅôÙù–› /üBËfµ=f¢y~? F›‹z^‘zđm\9ç°|̉?lpIlîeA߸(ó=&!̣áÛî¤ÖÊM°³MÍ owÜûB(}ÎØƠƠq©=]B†¼˜nKr³ç/­ö'CnQ´̣E ¼×đ‡«-iđ@KÆøÿ%d‚·c`eà×áà‡—‰æ–Ú·̃ 9Zđ-ß¼¯o £w¾?èÔpû§́J̉ÅÖ"G‘Û0î§)KáṃºÙ 5́ƠÉÔ0¹ei‚rŒ¦ùeîßGRù cN.˜ëGuIÛnÆ₫o¼XKª+r8™n;º¦­_èSdÎÄ=²¸d=/£©YµÊ>‘éÙF“ffäŒ₫HmK“4'—߯¹â;沉SÇ «¸' ƒ×—̃1lĐ_p'siÜÉĐÔSn”YjH₫  ̀êD ç†{âK9…é)ê…)^ÜMl…*Ĩ¼‰a=¤d/¿ÄœB ¢R¼¸lA:Ỷ“ê‡s@i,º×á/ºVè{M%4njFe3±yqñđŒđë§Ơ82],7Yƒ<~GÏÆ"Ê0=•LjăÉåZ†|,(ÏßĂÈ®ÛØ÷Á)§„JF™™Ơ?ñúoX±èJûX¶6«BÑ?fñ2u1†!Àcp¤©âVMîDD&/ÜØú´ûR\©c×£æß^¾º2tîXw̃?Ă%ÈJÍ̃U?́«éU"¸G¡fùvÜR@ÄÂT4؈²r@ÑN̉$»’D¥3[èvb¡RXê/ÅZ÷IP¿kijƯ‹ZÙ`Ë©¹3wf-­Oh¯ÎAbå”ơLÄm†ÑË:5Ă·¥ÂC¿„Ë£ù~Éj5#Ï`̉?äO*Ñ%¦Ë¦7œsóx±%»µ›£}OOF<Ï&+˰fq˜O¥¡V‘¦7ÂpÚ! ̀1FC„O~_èü5€2ôYT,¢2\ÂŒ¿m%:f»̃́“,së-Zˆ·)e‚₫Ñ”đ XƠ ÛPH"¬iØ=Qr¥VÜ@$´`{‚o»§Ö~W‰(t×g-+8 #Œîô‹ëK”©¦Ó븙÷ù¯†~aøcŒ¬Æ…|$}Íäë¡Ó!Æ–2/dÚĶ$zĐ¿¬=¿ÄbÊ“dVÔ(Đâ₫¡+ÎÍđÜ₫#·át -tgªó¼V/³wï7h4ísXœÍ’’ö>¿Yl!¿‹¿ẓA®Êq=‚̀Rä{å¯-X ÈÑñ¡̃'ú^ç΢A¬ûq=‹I6/g[¬Lâä*C€_9 rVÎFU-y;{¹ï¨œ»Ä»Âø§tƠ€JJÉa²­¿Bsâ-NMäº Â—ehßÑ“Ë˰f£v~A¸KØƠñû2cUYPW d6¶QÖ!gRP-ŸE`ÑD¦r¤sâÀYw±üyƒuX±WơzÖ*²E¾‡…«%a¿‰¿¨7‚¯Í7åê“yO‚ŸUzº9pKp¹‚©#3ÏvägáS;₫,«íf|‘ ÷ƈϬ–è(42:Î…ÇO.Ôê[ƯóqG5»ó́¶¾¸ăưË]ÎSDg»wƒ#ă1c̃"‘¼§Qaơ„|3ó†âäá•W¿„ ~ /–3“§MÊ-g¤́²Æœ–¨Ü K‰9“]^{NNY^Í'{΅IÇî+Î ̉Û".˘; DÀSRE:¢Ñb1h“Ñ€³tỢ^Ç1ă=©?ồ×ç̃ơ˜ ¾1/¡(ºÈï¶©‰FùJâ†đ ưd˜7îb :«QfĐŨÄÑFô¸;Y2/ôÄKvºeuĂwÛTÉÛcº¥ŸÊYxáKrb|v`—hÄC‚{)zSoÛVk¥ơñ«ÿ³øç³´&H×o*w*¥¬ư„ {Û%·©ÇÏê5¦ƯNÔ6uỊ̂Ăçư™0R!"nÈ!¯oÇưPáù`!´…+d}>ÖˆC"ö̃óN(úBt{ïùFjµĐ£Ô‘‘HÑ,£Đ!<Ưî|¯>ˆ9Vo¨^ƒr "#2¦[m±¯l-XÈ*̉^½kƸ$'ß̃jʉ“.ÙC,- ỡ¸,²æd«3Fö "!~=óŸNÚ’R£FR ÅFÏ ₫´aslˆú&—P°ÏûN}ˆŸñ8F¯̣ Ơ t“B%Δ¢Y¯•á­¤L±{mµz*¾n[úøŒƠđ¾ëñ>F.wQ]ŒW± G.±ßW̉ Ơï³ó•yàSFñ•ƒ§oüêkX—¥ew¿~6bÎó@ÉEį¡§í'Dµ“C‹ Äu ƒç?kl^"rEêÏ¿f³$Ö HûUĐĐ5 ƒ%%ÙK˜0¶UƯ/pó‡đΠ̃₫ÓV1ß $9̃Ou:Ç•”Of¨O²®#7Âö0WøÖtü¸qnøtÓï›ø?7ó’—êfë,ú­ÎóGÚ¿à(†0 ¹¥̉®ó¶„ư=#Ü÷¾Í.đbçi“đk'È#-¯Rœ·b@nL è­ u»¥Ư`"«—€­R)N±ó £ˆzgSÊLù™‰·umæEVÁẉ’:ó7ô ÔƠÈ­OÜE¹­ó9¯ĐpRÂû›l²$ÙÀev V T/ÆkEh'‰ÔÈ8Å<`Å¨Đ…?ˈ² Y!·`œ >ÀƯÈv‚—/¢²Ø r›eă[ư¶{»«PtiT@뛼đ,C£H˜"~¡g¹H/â3nÏ·ơàÚeër’q̃²Bsz¶!n)¼ç<¶_{dôRu~øÄ¸I7e_¶ÇK‰ª|+0à;~n0ÓØ5=¸ªœ̃Ÿÿ£Qª9ÿe³đuITÑx$WϪ“àW¹‰ÔŒ±\iñÉYÙũ«Ê/ô :=!C± ¬­$'~ø RY–F°r‹º Fu¨ÍƠ¬~¾&ˆ;…@Bfµó.e®‡>ÎḶ;×5Đì½ơă-”R₫sÛêÊ­p>–Ûl¢?PËV~ö-> r0ë¤_Ok†sO:h´˜Ä̉‡¯ƠÛ¼µ¬ƒ±×äæi6QëÉzQ¢†prM܆‹µÎ]J´e­tĐäöT·Ÿ§r-˜̉y«GØb¡”‰ €¯Á·a§Ơ?Û†•ˆ̀FMÓI7bT©°çưØë2÷5-uçXûĤèưœñ`˜á,Ç·ơîsÆtÊNÏGïc–`»8WíŒÑ_!µƠ"loW¹¥U„qa˜äxâu”?óXF1ḿă¼’ñó́ơb!zđEPĐrâ4 ÊAnơơ ôî,«Ø‰†©\NœÁ̃@röwÇûu ̀|ü¥Í°I´U9Ÿ5®í8¦4Î6&•µ(ͲyŸ²o»ö$Ơ¯™ËûûWѺD<ÎK©ó¬Ó˜T¥Ññ ¤PZ|̣püŸuækQ|k¦9®Ú¾ ‘6‰¾êMfîU\„¯©rKvbăˆTøÅ$)f퉿iûèÏ׬·|₫ưĂĂ/¡îë ´†®"³~mÿÍœP«ÅĂbQÎđ®n¯ë8)‚“RßPàZ‘ÿæDƠKUNô•3A²d·*K:dïx¡A¦ Ç iwàö4NǪŒ*6V7±tăëø}à ̣í+ÿ4(hŸC—yxÙ5ۘ ½¬F•Ÿ´Ÿæ+w¯»0£̉Qª’æ§âØEª I†oÔ(ßûơÊP¯¹&s9Y`£­m32‡wlǻÈ₫fÔQ5›-2ỷƒPDÀ°P± § st]­¼Cvˆ„2‘„/<̣Yû/V)́ÄÊoÈ̃6|fö„om—&x‹æL«8đzÇ›Of÷R{TFÅ%äq¥ǽÚßëï¼²|ˆÛeư)¨©Ù›9P̣ÇÜO³"Í©ùüÁCGD'3÷) ’ø‚ùœÄZDT±iCjL ÇE#Øư“ä1¦—¬Hr‘søáà́ "ow|‹-.₫,û\ä‡iz/EY©Ó¶»zä»Û B»©)d)S€̀Äñ‰·F÷?ÔpÆÛ^ÿœêÁ÷·blôöäPÿJ̀Vb¨m!ß}Ù#Ç»‚µĐy¸ÿ)n¼à'µêø·ÈA†‰=£âز¦†ĂB>TU•GĂjëD~}Üch7‰¢±ưM?aè’ByæÉ¹̃ ĐÎ¥Ó *†âU¥€)b0Û}¹c÷’ÊÈ4ô{é]½ö½»C¼è‹µQ|Q~ăߢ̃ÀvX p› T¾œḥ`ÓOQ`£6aC" ơÆ9Âl[oºu‡o}µ„:ø‘>¯d¶VˆḶ­;—«e¡ [/íP¹ONĂDä«|½&Ö}5M7Om"p™ÙúZ]Ëx‚́‹#öQÎ ô“­…XÂ’/‡ß4…ëºIŸ̀V̀ÏÙñËân +ǹ´‘Œ×JÆ¢ƒ¢bĂóñ&<ƒbˬ7M–M‡?ÇC©ĐÛ́"ûêÛÅ 8+ûy¹ñƯưóƠ®XÚç¡j₫́¨ºÖ#ïÜ<§G· E˜”¯¡” ¬ùYŒùȯ%ễăñ3ÔY]lQ »£p t½âV1ÆÏ}˜‘vŸ5¸y2¢%+ơTcc3đª‰+Æ(®èDÜ|ÎåŸHyñé™yÜÉƠe®ö€K%,ç̣ṕ˜XV罄\°}0ÂW\>¹„'чÆD–gơ^BÑJkÔ2˜ç˜< Å 6í|$·J¥Èlù«Û!»°%8Ư‹‡fơ®`ƪú+ˆuYæ}X€‚êTHj†ŒÊ÷ÜÍG@î̃áœÜ7æËX‘Q. ¨Á®A‚…ă% Ï×4öe¦ëf¯É́·mÉ‚"W 5ßÏÇçD0R»Á<Ü4w3ë|„oö“Ⱥîk¨üuS,8pI—ƱÆRv’óÚ£œWDm5®mà¹*íXqºkVÔ%¦IJ²¾—‹%'ế‹ù‚[o ưç<ߢèÚx¢ >WWÇVE\Wilj ơ¼\nÆ̉œH:{&¿*íU-BcÏpíe•GÛ ^h A÷È$“1Œe#k¯eܤKỐ”Ï“¨¿ß¢) E{đå1ß‹0P[ûú”›¼Ÿ‰=éxCMëÓ*wkbú¾¹Ñ‘Ô|̀<¶çh¨oz©ÛifÛ0ëñi–Áå/Êäl^åö‡₫3. •gRÅ)‘é›lñ•1ëbÑÈÓăjƯÉELu5QG©Xd½æù°ăWxùdứü _˜zÜúªb0Ú…(ăvåâḮe³‡¼‘f§Đù²Ü 2.«>3ÎÔÔªư)«9ÍEÆÀ‰“Ä¥Ë;æ…vÄƯ²³€t¯ô­ÙTàs…©₫¡m–‚œQ’ư×ohÇîè6c— OèăơK¤8«WÚvUÊK„b9¤5û¾Ơ7ïïXqW&\ ~̣ÂÎø¯êùYù>"̉£ïÊt»e5¼À¡’(GÆhú~x÷ïÔh¦¶Đ2RÆíU=Å.Ị̂JÅ:ñÂÚ÷Ç¥À¤7ă]á8ÿ%Ôƒ endstream endobj 898 0 obj << /Length1 2303 /Length2 17092 /Length3 0 /Length 18439 /Filter /FlateDecode >> stream xÚŒöPể"A‚Üwwwww`ĐÁƯƯ='Á‚Cp'8ÁƯ5܃]ö>’}₫÷ªî-ª`Vû꯻JRuFQsS”ƒ½+#+ @\QL‡• ÀÂÂÎĆ@I©aí ưG@©rv±v°çû‡…¸3èú&“º¾*:ØäÜÀVv++7 €……÷?†Î|  »µ9@‘ ç`rA wpôr¶¶´r}ËóŸ3Z+//7ĂßîQ;³µĐ tµÙ½e4‚êfÖ W¯ÿ A#`åêêÈÇ̀́ááÁ´sarp¶¢exX»ZÔ@. gw9à/Ê% èßÔ˜(VÖ.ÿR¨;X¸zA€7ØÚ dị̈æâfor¼e¨Ë*”Aöÿ2Vø—àßͰ2±₫7Ü¿½ÿ dmÿ·3Đ̀̀ÁÎhïemo °°ƒÊR L®®  ½ù_†@°‹Ă›?Đh ¾ü]: %ª ¾1ü7?3gkGW&kđ_™ÿ óÖfI{sq;;½« Â_ơIX;ƒ̀̃úîÅüïǵµwđ°÷ù²°¶7·ø‹†¹›#³¦½µ“HVâß6o"„?2K+€“………›‹r€<ͬ˜ÿJ áåú[Éú—øƒŸ£ƒ#ÀâÈÏÚôöÁÇè¸:»ü|₫©ø_„ÀÊ 0·6s˜‚,­í₫Dƒ,₫…ß̃ßÙÚ Ị̈6~¬–¿~₫ûÉđmẦ́Á^̀ÿ~bf q E-úS₫¯RL̀ÁàĂÈÉ`dăd°²²ó¸9Y~ÿGhưï:X₫øÊÚ[8xÿUî[Ÿ₫S²û¿g€æß B øßXJo“ ĐütN³·_¬ÿŸÇưo—ÿS₫W”ÿ×Aÿ¿I¹Áëi₫eđÿ£ÚYƒ½₫mñ6¹n®o[ èđ¶ öÿ×Tô¯Ơs›ÿ_¬+đmDí-Áÿm£µ‹”µ'È\ÅÚỜê_ặ/¹æ_‹¶¶©8¸XÿuZŒ¬,,ÿG÷¶]f¶oçĂåm&ÿṼ–çSJÚ›9˜ÿµelœ\ ³3Đ åm”Ø89>¬oëḥü{̀Lö®o.€7r~ g„¿^”‹À,ú—è_ˆ À,öq˜Åÿ ³ÄÄ `–ü/âf0KưA¬fé?ˆím4ÿ v³́Ä`–ûƒ̃²+üAoÙÿ ·́JĐ[våÿ"·́*Đ[>µ?è-Ÿúô–Oăză®ù½e×úƒ̃²kÿAoùtÿ‹xßtÀ?è­2Ó?èÍ̉́¿è¯e6ÿ|ë è¿đíÁ˜ÿ5L ̃·øß̀-₫À·f¶°vÿ€ơ/ø₫/g7ç„{3°ü|£oơ_ÈñFßÊËÑêíÄÿ±x“Yÿ¾1µư|£ ₫|ăj÷b߸₫ Åùæjÿ6ÂÿĐ¿±qø“ưÍÙáÔoƠ;₫Q¿s|ûr²ƒ,₫ô‡ƒơßRçÿiÇ[#ßn‰Ă?ZưWoœ₫ߨÿ£1¬o<]₫Ôú¹ÿ£œoæ.oøĂ[? ß•3èoùV¯«‡Ă?̃ø»ư¾µÎưđ½ÇÈöæưdloá½₫°{sơ9ÿ+öÿ,¿™›ó[/\ÿ>Ïo—á?øïï[Èd†°4ï`ÆjSÚ~_#JàÁ¸7!8C¹§NËè³äÜáö.…¶:;xĂùV4e¸muG’æFd™äÙ縥.¢5YµíÑ÷É8Imj¯ añöàdá±hưÑ{BF ‘}ßg'_­ [èÈ.9Ê\'7•|Œ{~iÏụ́•±đù=Ơưj.yħ̣iÆ8ÍXƒ ’YÊ<ÓÏs¸d°®ŒDđtÎ=Qgong>äL¾’È%Ñ#øưc/̣ÑÛd‹˜ó^«Ô`s鯣ÀÓĂ%‚¾ù06Eå#v˜*‡³àSZœ SlAd4ß,Ô tâ¨%íZ(ÜÅưi$^º3`¦ºM)6ü¬Ó‰û!·»dú™Ơ¸ÁEµóàÛ;¦j6Û9DxĐÖơD…-"£ï#˜8ô†F¶ó0â0uk/p€×ºáăk€H̉"›i«~Đù¤û₫ÂorRÚ₫‹₫µ†î‰ÆÂarà«i?¬ÉÉí¡Á¯^m… Ê⦠ämÆj7亼Q^û”¾›…/ ́?ˆ Am.8í¹….—냦â3møäźßÊ?F“³©ç×è:ø,fúAx¬R2Ø!´»º,LʧÆÿay]r§BÄ7Ñ0U6‰øÓ¼Z̀ü£ï”lùÓ0#HEÔ¯“ r ‰3ÖḮÚÉƯQLc?®ºä˜°¹¾Î ¤kà)ÿ"k uÆ¥Á«T ₫ơ%i;„]óÅ£úơbá©"q·ïǶÁ–¶“xÖ´Á™̉₫>anGï7vt˜YQáK°1KO™b¸Jó]9bg¼—…ºWéÖ|—é&úxŸ ¯‘cüà­ÊöPb’›ó<­‚ ›UYü\đôÄÄR^kÊlŒQ‰nó7˜îîY„]Æ̉ oMºñböÊÿÛ™"œï=U>¨¹a¸6”ù­q¦OSXf­åØî¸iåø4™Áô¢¹39åWf3ë!gè½ŸĐ¥;̣X i»œu+“£ùª1‡Ị́!±ÅẸ̈¸eµæ‚aæ÷rµ_[²Ô ‘³yûaôô²ˆ́|ÍpB#jƒ†ƒe ́• Âưí3>í Ưæâ±à=[( e9¿[œ—̉¤Üÿ꿼6~ŸUƠ ÍJ3B½¼O”ÖcQ‚üÄ\d¦"‘₫ư¯”2dä·Ú jihëF₫»₫¥é®̀' ÇsŒd̉dD«W¼ơ±jAn½K¿²́ƠDCúcoP®œ~ÆÈ{|X»FÆNºîMbL¥OZzŒƠ©=_3fµ—åS«‘Nó¿5åùk¸ƯÏ+׳b%U’>ú³¨¸9 C`b®Nw À1¶̉–kIá˜í³°×Œâ}ç±@´úe s nĂ:µ‡OÜfî57ß*uGíâ;Ï+ÑÏ Ï1çûam†5Ÿaó,₫¨È¶k2ÆéüU!á¯w·¾pè÷fUç¸ÿæ‹Yî‡E“÷¥›Q¤¼ÆB*GƠ~đR…e·UB0‹ûé)Mép{đÉíD<̃ (Mxz9ܘ<[t<$!ÿ¯FCBƠ₫èÖưißñâ¤Jç0b‡̉OÎFÀ¦±Ư·'ÚeZï?L|f…p®M)ûu= ¤Wq:¶.<?γ­¢iw˜Kn’P¹Ê,äj%HúôÀ[́.h%Ùm¬C3è•®tŸGĂ‹_r€cÎ9/¿®ĂQÓÆ‰Ap¤#[#I,w_ÑÙŒf°8k¨“‡‰ÛJÜđ5ëi L÷mvŒ€O—°‘QˆĐq˜û6å›BëcĂ÷E½/ßÅư뿃on*£?´™g°ó1ưX’2`~GèXơ‹ËCQ ?‡ăe×̣t¦¨Æç¥¿66m#sC̣“@Az9ÑoíW\ OË5¤ˆĂÀ¾ßw¿³av₫1·œ¢G¤‚FËQc1O¯́¨céêàLƠOPÓ£°Ê_÷Hï ¹xäPÅøäaeÚ óÀn-éܨZd÷Ëû.E ë‚hæ Z_2—Ă#¬ßÑ[Yûá' ăû¶ R ±,̀~c²Ur9Èâ’ºư[à¾SVs <Óçyq7BÍü;¢_Tå{+ ¢Sï=Éè9ê)Ö‹„¦[ ÓÉ¿‚Däé´¡Ú%£ª]ß3Êu|úhJ4QQp¥gp^f‘X“Đ/ä©tR–¿î¸“à]ü¹EZ!pI¹ÈJè*gÆ!îzæ8·ô3~7IJÿ¹½Â ¡̃#îH¯-Fü¼]/¬ÀDbºG¿ăphÅåá#j& ¸₫ƠƯ/k UB¼h~.Ú×Et!í—…ü ưu+iPU\I²ºưCáÀ?y\€1:]¸!Ñ—FësR¬¹që́§Ñt;9€|=À¢#7̉‹NưÅï6ÊZZ‹ËØ ‰³EaWî.€æ­§J`¤0wÀ¢t¤æ”yKºBÇ=́¦ Ü>!h0îúd¼&÷₫Y€+ÍAZ$øE™(…£úº)½=ä̃ +l¢Î·ỳ'rTkF½ØæÍª€ˆÍ]Đ½Ó·Jkªº₫¾ 9³Ù¹5ÂsDñ»‹œ ÿCđĂœ-"хźEh^jBlÎ(â×eÁ H*’¼%7“Jm¡ËùÏ¥¯‘d6:0m:.ĐÏÎø‹G’Ơ ¿>Ï)<‘’₫¢³À¥Ï"…ÔJBbfÿĐ½ăÉzÁENĐơ $½ŒÜ!Âx|FNv+‰1ÍÿÆœ¼!ƯU¿JQ¹3(301ƯÚ™£¸ú¤Nd.Æ¿ăÈrÀÓD;:^â₫Ê”ËY¶ƒ+Ö´£& Ȩ/â’áj‘b́Py¢³Zî—W:¥Û¦¦†ÿeè±¶‡ÇU·¯ÉèŸ}ÍÜ•B·ª»‹LXÿḷ8˜ö"6Ï|…ê= G£tÙđÏ2€=DƯÏ̉ÄŸ-#đí]ÙZ …§0VW}Âr÷v¤sæ¿À‹Ôñ æ+¸÷y—:¥[§µ¢-Ú®åĐÛóV;‹Æd!LZNă…Oo ù¯±a¥ưÔ)ˆ¾Hw[H M¶nÔgYhÏƠi^ARGé¡ë} lĘ-Éư~²të 8bâ“B^Â™ÊÆĂ0íiø¶SjM%rµ CY›¦µÎLBÈ"ä¤X̀Mø­¿đ^ÇrÖ-8¤Æ*m?̉øôó­"Àg4¾¬2‚äMñSF͂愱jsƬ†ï\è?LäDÿ4ntÉú2¨^‡óùˆèZêe Y{15æü̉BÙp)Å÷d‰V”S´C•¯è·¸R:Ä#a;degắf.´qÁgƯ"J`Üy……à e<•af{£”5sObo’ÿÛ}k–-3e%ăă.ù 2×Ă”ÏËüSÅÁö×&)÷Í_ÚDˆ]àSJO}ˆY´“0.ÿ¢∳X«d?Ù‚ÅëμP[W) _HhPÚ7iÏIe+3C`*¢exU cÎø_é9uœ”-“XËæ‡QçˆjdÑy†”>–¤̉^“Xç@Bºrèe¥jÀÚíEiÍ@$-+?&~½i§µ„°~iA¸¤d„’Ó̀Ơ·¨ÑĐáefÂ3‹À ‚×|ÉpgÅ}Æ£˜Ï1yDø̃û—og¬~ËæÅÎÙư&Kå:Yèc.¼i çeÛñ][ñ¨Bß·₫D¯đ̣äëINÔ)5f‹cUñ ¿ ó‘nø¡…[ÿÅçúŸ¤ƠĐmÏ9S‰7m±*Í']3ôFÔ é(§\Æ̀+Ú>V‹ăĂgẰQS™Gc6ơê~Ó/'r̃ˆS.áÑsM»Ñ[ó68ïK×ëư½³|œD Ô¦­(hcø¼•ÔåÖ¼mŒ¾ôú₫‘¨2q˜vZă‡ÿy=hQ¬ß*,0 Á°r*Ø₫4B₫¼ÛT}Eëî=ÛF¯dđ!0´:œ‚VĐJÓÁ@%´Åº2Ê8V˜íywXÖUKwáƒ@®zî ™Û$́c̉—«F¥ëç›üme¢̉̀¥Nӵ׽–8H×<©K¯Ëưú½› ª3Ÿ+U}z½h¹ùNßè[¶DÏv́́6lí%-d‘́KƠ¤‰ª5ßU5è¢Tóôf̃+…ᔼ~–G‹æ#0́/#-ÀQ”Ă>; ^eºµíöPêM̃£`6Íß¡4Sk ß²o'}G²s™™Ç‹‰ÉM²ª„êf¬ñù(“µ ‰„ê”T¨dDUâ&ë{óJÿ:ÏRÖH†È‡™h£w^UÑËơUÓăF™Lrá1€èÇùå± TBŸÀ I.ê”>Y˜' &úÎ3bÆOp\ßơ: S(.̉ Ïèwê&½÷ =ăÆ@JKsdÿ¶€DÓCyíÙcÍ\ïđKÈÛü˜¥Ïáù· ²€ Së÷P`¡¦§ƒª-³‚đnzf°Xî”?&´wØă~.b§L¶6†¶Y›sÂŒŸaQ8±Â½Z æüÅ•®„jƯ”˜<=¿¾ưPÈqÑơ‰’h ç@¼‘đ–Øđ7SØ¡™äPËK"¥R;&ï!gˆoWÅÑq YçÍQPF€’’(«d]ÅúGĂ•~0ÜÜ”‹­¶̀l²M¶QÔU%Цcb)n}¿óën'!~íwKù,–3`Ưfïñ"`P3…€ ôœœDjL°£p1ÅcjNP¸đ–}/5ñëôÙ¾—ùÜÛÛ÷¹6®'Œ~nđçvưn›ôUÉʰÄlªyR&ן´•E‰hç7s³WÜ)°ñà)ûLE=lDßaä®û¼oçë¸läm#|¾£?Ú¹Öó8djfm/üeC!$ă‹́®g/2Ư«¢ªMzơ3=˃ƒ¶†ĐtĂDÓ7 p»©“°̣™‰r‹'øëĐï§wª‘Kïjơ»FK¬›#w6¾Ÿg ܦ rÛ€Yñ¾6ƯÅ© N¯!8®pÖ:)®S®Éi¢¼Â³„‡¸Â×Ô¡²äJ\Tî<¸ú½9«=ÁVk´Œ{Ÿ‰â-]}̣°Vʨx~ö²è0V%[zd²4¹Åă’>@x:K!~2×9Mlļ‰oÑ‘ôƒ¨Í> Ûih3>̀ƒUË0¸a­JCƒ>J Ô'â³Ïf<éA¿¬m+Qb¯«ÂyLà®…ÄôùdQIVẠ̊åÛ P£~\d•Ö6Ëú¥ äøÏ-gU[È—YÛzN½{́¿gØ/ƠûÛØ"¨04ï8·ÉÔ»¤.G-?é•́U–3½3|é1ÄÉ m²¢ôùfYèË`•ƒWĂÙW‚Fô7"¼Q˜°%g!ºÏ%m© ‡æSW]\qé'Ơ³‹Ư‡-ø’½<̉súhÓ( %^"Ü:ú¹Hh1p?Í?hSsµÉ‰–>JßÈ1Ÿ!Rø‹Å“6lûå"ï¾S”¯GmÖă»ÍÅë́ANJrđĂû*¥·Î£‹Ü¬b¥‡=±¿̣́̃œ©Y`]ÉS»|ÖÀeht÷é\v¬¯½29Ä 5Œ.SM găr»‰́Œ úØ"ăªê1|©Qăư'%̃ziAzàD0ù÷BxMÂ+BôÈ̀«3o¹Ơ·É¡}¢íûiJDyƠQÏôm7/ ù…ªÏûT}ăâà̃ªÖđ(MưEóƒ“cƠÎŒ—u‹†(¸|kkä£(T†‡­üYtÍ\I7OÛF½Ó^̉æ-7 „%\¤u”Ạ̈ë›I ™;ö=ØÄ ₫Úô¾.#æÚ̉\_ë¼XáL+0át8`䥋êÈûO¹§Øç±ÑĐ’8È́‘'DSå®–>À¦l‘`ñ3ùC&HÈÏA®:ëÿà/đ0ơ¼j?Æ!} íƠf¶Kéé$H“Ülgu=ĂÆÇq7D`Qœ;§7âº[œ¼³ú2ĐIÚ  »© ñ­'ø7›W0£<\ùl5Sư»HCÓ¯îÎü[œQ×µÛ­̃ ‰­?•w³[́ĐÚ³ç8ÑĐ+±!–^džf,\Ógb>F¹ §Æp¦¿ƒD¥U0e*郱¾ ëîbw¾#-è÷c̃_ÑÁöxï0“‰E}ơƒA¤ùÔ¤îr9`¤%jW~Ü£üzfXƯÂÈh¨6„9Ö”ˆ¬ÍëhÙgh§Kơ\ÙpQ4xdR`”Ă­IưY<Ê1B:ÈÿîÁ*€ơhtkæœJÍ… ¿çußwä¢Ä¤ß 3N¯BT)¨dÚÏY+ñ˜̣zéUO Êp5¦(8„B'—2U1Æ"Ü€9÷c]½Z|@¡›Ek¶,®Ut@¨îÉY‚ŸÆ̉BÖ&Zù&äa!EL»ă©tgÏwí¸Ûµw=¡>”ç¿ÜŒñÂÑëæ̃é¡!4¶cqø›°³ 9nœ«lÍ4&¾eP-nvÁËé½Ô¬é|ï¢"—â±̃yoÄ›Ơ$ ê1¢Ïc,7wˆå™gg¹cœ í•Á%²9në“á`_áÚ,«Óë–'A.¶!/,°UÂÁ¨×U& _ >L%)Í¢2ĐĂ•C~,«¿[@ÉíÀ©^ɺ胯o"½dƒ#I¼Ÿ&×=û—T*•ơ°w”$uqÜ,1aEŸ`c7]Ó çßẹ́1sx¤]½(„§¿Û µ£ËöÂàUÊ €ê’Ê¢àœœcâ”¶_{̀èX£½í9·̃Ö_.i9@ ä›”.Ù}¸9—Á‰)²LưÙ/ê₫:4UÀ´m»̃ĐH÷ëF̣<́©£₫hHWO”Ÿ=?1FW'çß°æñ₫¤C;1%#Ü —Â]X0Îü%adYÉÿ«fàh%½ue“uƯ*RU{j‚æˆ̀…&}[7sn³F#öé’a’‚ÿåo¤I¹3éw¾Ú—ưeơ4ö/„‹™¯ 5K³ØIPSæ '}zб”J‚F¨1½ơêÔLßăª '¤î+yD?·?₫È‚œn¡dµy½́¹Ö¥µ,Ø€̉øcÓ.¶ÅáÊ™2kÅÓëXæ×ơ«`à n$Cgs̀HÀ¾Ư¦5ß2ïpµ*²Ơߣ‘eøëYÓ8û1mI¨ÿÖÈÍ@ÅQ-‚wu?ü½ çµKA)̃ù µ‘[4&l²æˆç ß…ÀÈ0Wyx­fï*pÖ¬½³èqrÏdT5¹€ê:Ø[‹»É¹Áÿºê₫û\Su-¾á@Üf[œÓÈgxƠCö:w.AéÊvúặ,_9>âùĂ#]­bC+1íW±'³T»ûS=\@"L3̣‹ÎŒư–æ[±4 F›]f±Ä…,ê©‹ ĐmxdmÁ§x™E@;­YDź¹D·₫rÓOi…UäÑ%ó*¬Ö‰JØàGs4\Iâ2ÈÊâ²v!Êœvëî„§çéO¢uáQt˾8°Úí52& ~AiM+N₫™XùPÆèOÇ+Ê=sØ•ó>©G ´lÄk^Ÿ¶G”ă2$pWÆA ÁÜóóUmóZø©Ë¶C̉F A¢zqÈô«²¾%`¦‚_ơ¸5çå9¥+Ú(_¢Ä5ÓQḲ0;¬f E°Ï<ùH^pèÅ8.â­¿¬æ°¬"ePj®©«)­ú~•ª ®5Höƒ¿A,bc>5Ó Å5ÍÿáƯGb;A‹JS3Cº¡¯´WB‹g4M¨ĐC÷‰<̉×Àt\)¶ƒ€ø\sǺ'¢ÙK¶7W6:D ø^Nl`Đêư ÷±6Ï»-Ÿ‹6£WéèÅ̃G ÎKD´Ë̃ ‡~c±2ÚAA>+Ü×̉ûiDZh\¼}h‚Eëٟܼ#ô‰®O‡Ùº/Nî]`ë™ÑuQâ_ÛÛÈ–ÆsẸ́´o%’r)Çôđú‰Ú®̉K¾Í^˜ô.U6®§Ä.,ë—4Ơ¨Ùă€Ă ÜéB̃?•s³~œŸăXϯ=hÓ~Y·•>˜I”(­£fÍ́÷“êêăÅ1PæwUĂÈc0°oÍÛú[33Đ¾æ'̣bU¬½n‡éN`(m3Fàåô±k‹HWó¬5)9®øYƠÓR„î¥zÅ$&t^ŒNÑOx̉MªŒăé¤3“zưFWLI6 w]’̉•¿‡ßéÏÛvuÖs¬®.B€JX ÷dZ:‹dí<©"s­k7' %¾ƒ°kØyCçD)%'_a€1ZüˆŸÅ¿ÇT“º(·nÅ4Àe÷è›:A”Ưû'— È̃¼˜çHƯâË­«”ƯỏDy5ê# ÀÍ0÷´mŸÁ#păl}2á_’]§`Ktô;Q—\ºĂ‰k̃½‚5Gr‚¨¶†©›Éa¥Ût…C‡/c¤O<»¯I™0(T_Ö ḄÓ¥Á » ¶¬tÁy¡SÓ†l³̣¢¹û¢BÄk̃F£ä ’ÁÑ67—H÷¹EÊ.ög!K—¶‚mK'„$ûxE!æĐ@е=SQ,:ÿT»Ư7ăÆó%±PVß¹ö…åk¿SføC¸Ó?[2?1i:z!µ§¼’\}Q^\¯Èâ€"°ƒwË !§ÔêSˆ6…|jĂ“+̀\G˜XœƠ†µYFŸ3ÚFÈ¥}¿‘4º±¶[Hÿco B—EÛˆ‚€¸ÁIX$˜†D»J¹êÙ,da¶Ơ¦2‘R’M8: «…ºÀ&{R᫺Iˆ÷ÊÆÀ"eF±¡ñY©èºN­‹ñĂØ£>±7e$*!/(zP†÷f£åÅ»-2ơ^²xm`dÙ{°ĐE`¸®í»¤ôIù âơ»  ‹£é•ÑÀ(¦¦2-„h¥GΑÎn  ÄceÜjkÿ»3J~6Z|?Ă2 ưsÉïÂT§ă.yÇ ®<6û¢Ÿ³ I„Z±&\FT®u¿ZĂZ§ˆµ`Ù“!\èáŒÚb‹Ơ†öbvî§•¸êƠ'»®ª5ë—©¥á‹ëÂ0'å:¬ˆwË–ß*SÄÁ¬‰±äHW} ~»ogg©³†%L^NM %±K‹J%‰­ê^Ư•+¦¦ơ®i¶¼·{Uº7äđø”t§ÚÇÆ1Ù[…W°°I3Ù¯̉o€§–IÁs™#ô)óœ¯(Ÿ”Ç̉‹l½çq• ¹A“Œá]ù{†ÍwŸ|d¦ ơGˆsrKơ »COÜM\Iâ lẵµD™_—Lˆ†Å$ơo T7đăö–Jå ±aaÇ•I]—¾9Èÿ±] d9®Y;mù₫9`{am’Vđ₫WnMƯÏ+5w,®ùDëB®”3±3~iµƯ×—?aXâ‘_ ‘p?”:5;P‰ä¬ñà Ç̣₫ÂĐk(ÂlöÜ­ó¶NgLÑ´́8~©ƒNốè:;ÜÚĐæºA·æêñĐcÅa|v.û Á  9•Ü^w•¸B”•í_'èCÍg̉Y\[Ưlíx¿îDcĂâÖˆ²SÚU W“Ks‰ ‡]&k¶ư`­ù)\Éœ‹Ç¿¢júÇùÇe§•tÿ~¼È ?¬# tÛ̃2>˜ö̃hE«åiǻµœ@¨¸đ¡_ĐëđÂ''\g³!¢–]J đ)¬®Û#µJl=GdÛ%­«Yé ~ơÁ3âxÍ¡&›Ú ̣Ø:­5²ÊÅ#$±·9tS-ØéÄo‰…à\„H(xiеèèÅX&¹.1>êÚS·%ƒG=áwÏ·¿4—»­¹t3Y=Ü16Lß¾ó¤Où̉ÛôZļ\]îæƒ'WªZö÷íóđæM<4×zưDN:'/Ñj$ØS¡‡e :Éeç\ktkƯ•Vđ]5 ¾)TíU‡©.H–Vƒ̀i†¹êEBHª j^{?«×‰HD1Ư¥2M*MÂù[#"™¨ô+êÀơŒ“+ZyC̀9U¾¬Œá¯ŸøN››Í¦ö!¡ĐØ,r¡]’‘äẻPø¤tG₫,́³VƠ¹µZnGL’ä ¯r}ØPg7?w9¥+ wƠKă/ Ô€ïn­æ‚M ‹‘0Ta{(³R™×Ø),̃½Àq¡ư†z0½¸{Va´ v($ü»Đ’‹8‘‘̃lÎM}*Ơ’`î|r.„‡|D™P¸ ơß=ªLvnßĂÁíÆ(Ă^ơD­NâÆ ÏÍ,x”‹˜k7hIêUă0…q ể9Tñ¡WÙ{g]kặÅ!̉ü|D́́•aÓˆÆEGs×Ó†™4…å&6·¨ÎƒDçJ.ú^sâ÷#&ºḯ"gˆñ¥Æ´½ç…8†…:ÅGLR¸©}ósc6–§×eËêÆÁ ®U/Úd.ËÑW#µ#Öª´¸QưƯü–%DưÑ£ ØIƒ Ø¥À¨ăI6•ÀKÜÉF6ä§æíbF½Û¦̀l)7Ơrßß*Ưú£H+ơJ3_a=ÍÅ@–,§¡¸I½Æc`=ú©~qÙâZØlrˆä¢Đ8å²1"A˜P^¹ˆ<ú³‹Ü®¼„ó4©ú×ư6¥änqNư³„Sb=ó¢̉ûÔÆd¨̉ϧ.o'}́if/72;Ÿ§†€~BăùrĂƒ$Û¦b—.IO^»çóéÉqŒ§ÖPĂưmO²m#Rđ̉Ôb”CÀº ¯ŒµaÆ(Lô:HFUM"Yâ„S_3%‰ÇQÍ«­ơÅ¿Z«À^ÇkË”/Ñb~ƒkS§‘\hy9CÄ|÷C¶LX1U’röœ—Ø#‘M€'Ú¬;Æơxùb6"áL™/¥IeP4±f¸¡«́ÙCc̉Tçùéô±×ÆƯBRù2Æêù6ü”‘jªj„î₫¢R{̃˜6<Ï₫½Ú¢a G<™çgiº)‰âÑ™ƯÎ̀ü_e(Ëû.ÅFPm|,öÛ¦—ôÄMÈŒ)ơ¾èDÆÊû¢Ÿê¦çùóRÆc+v5’øDÚ€±md„Ù€†‡(¸±Ó­¨˜i–̉‡|&£9É[¬9«L é"ït³#¦‘IlcÔø¹²’P²ÍÀŒËÀƯèEë–™£HGñă$ :Ál“n?UBYƠXE^» lH©™ñ©8tGpùđ2ÈUŒ£Y~@¢rr¿®|(ô&oñ= G’#:ï4Jü°w¦“‘HÛùÓTKdtŒ8ûƒZ¹1N°Ù#9Êû³̣êi ‚0ẂH•DOhïÈ®̃T+£ÙE] sưxTÊ gÑê%§DUKAËe^÷{¶›ªÅ₫#gœư­â‘Ị̈óß3ÅêíeÛôGpÔâjEüé¢üû#*>Ñ~³yń¿‘½ë÷ /BX§#¾´>L˜•{F§…J¢ eË ¼6€đ›J_—¦0;ó–÷Ó¶ë_W¾úJ‹û%¢fÑ0”øEP¸DEENa‡#›ßU¢¹?ÚU‚2™R¿ü YÑätˆ^~ “Ù|Ñ“üVŒÇxȸÎ;›||ÂÔC%v/¡-nºy?–È$ªzddª“ƒKÓFü‰:N‚ôV©ĂµyuûäG“¡âg®&X·w#âíđ/ë_&vRÓÔí X»ç¿C¦ôW® , ߟ£èc¹NÔYɱájøzd‡¡#/UT!́₫BmIc"³gsYNÔ—-WDøNßñ.2V#ê’ë[üĂ2P¾_ßđ¼È}%r¼‘xnÇñ:} 5ú Ñ€DëÄÄ̃¨b~ư÷yfœI|Á₫ }¬÷̀äú¬Z›”ˆ×,‰ó¾Tte€(Ù῭§fù ~Ä’¾¼̉Oèï­¿€gº^{âÉ×#µgZ(4ï~æÔëÓù\¶(ó wàedc9Đ4ză¹¥²2ªŒ8Ï‹çsñÓnuPéÂL¤¨”‰@o¦ß¨R-‚̣ˆÄ̀ÈfGmïJ€đ1Ớ›+dä|§/(c–Dñ&f9˜jl<—ø`úh°ÈÛ›äEyü®ø™œ:]tơĐÙÓ3•æ’OTÎƯmŒ×XĐLr÷ ’?Ȇ£è–CRØYCÍù¢]=(nDùµcQ™ÚđRU…w‚ÈÙaè=‰¨†›a-¸u7Z·Íj/Ơb–é§«©Œ“ 68Ï…)æW{,|ư¥±LuÔáeÅS~́«Á¤K{æ5“4äÏ5¬ÍÇ#à¹<×̃’Ó[ISö̉eÅ/œ–w x1I±Qjw£”¨¬:‘gBϾ/u7ơÙSbg¢3¤ïâ?̃²zºéÀ]ïX,ÄyvA¼(™Ûx6÷¨NˆsØ„˜ø-}Ă½çη%JëÔ8á…%æDÓÎÀÏüĐ0_—†½r¢,Ă`.U{(úøÈ‰í{”GS 9.dZ¢r*Èú©ÆW®8D¾̃êUu›”%®91ûC å´YMËå“Ï•BJ“đî<ÇGÇ´ø '.W‹™°}.KïèÚƯ¤âåŒÎöîPx[ïÔ‰uR×Óƒ¢ Êå!ë4u¡Rq¥º–k³<Q%uwg{d{ĂûWĐ@¡₫eH%|é=}”Új¡₫lL4<†₫`|ûóráîA¤i;I+¯/½‡1ZRÓĨ„Ă,§JŸ2dŒ)̣,£Qû[d ;ƒÓ0dĐ$h70¤̉ùeINW¦©&øUrÛ,páNÂLÈÎ)c†’›ÙÆ7áü‡½'« |ëíG„XôËÆjg]éƒDñ—ƠǺƠw‰0·6T`múơÆG´ˆăÛP̣·ö"k²}»Lb•M& êéê8yú‡n8v‰¸M:·³¿ç(́ấVÙåt̃v¦-rđ[Ñ«.W̉yÂOv"­æ¶®@Ư»Q¡w¡Çغr¸Q³ÁñB±Ôà©<Ùˆ¤ Æ0˜À»hV™ĺ=>¹C‘.đ§‹iIĐÖW0†TĂѸÜ5[¼ ·9äI‹–ïK>ûĐ¹bĂ(¾¬ËkUF‰ pÆ ÜLN€O;ưeæ—·"a L •ưÈ7¸ơN¬ÅSª,'ªEv¥Ù4G88°@Äï‡ùi¯¬ä)đô>Í”áöóU'Ü;Û®̣ôi6|wO×°ON $ç?Y$«pĂrGl•pHˆ@tHû$:¼Œ¼âª{ 4âïL…]„úÊƠëˆû!·l^̀êŒ:"†¥An M'Ø›3_³¹à̃3IßS̀!ÇDÇô{8îj$˜Âc₫Ly8yO⮦†ílQó¬]g™?jW%v¢6&áđÙ·2é‚. EË7ygæ=£,Â’äZâ¶G6TIµàGµ/È_ă¼Ïˆi¢JI0¦6°3Ơ‹1›ÆỔ‰ '¡¸ÈXpÔ›É>Ü~W—4ưQ¨q8û‰[Ñ6“4hăØæø|„™¢ ¯®jú c4qn}̀R»„ă!_qà,B}Ç‚•´/øÑËʧ̣ ª¢–3b‚k×Å8}¹¼r:;i€ˆIê~^¹+HùË´üEq]JƠÈÜ1Z~?*9†’©Ç€qù§¢± dɆ́¤Wª®í'0倻§—ܘZổˆ¹.  AAÿ¼oajá7‘7/y¡̉¥¹ưC¿Ô%o•\²,‡D°u„c®Ev »¿ˆVà#ËÇ_Rï{îÔup }5h 7›7;Ä7~1Ọe¡d´L:‹^ÙcC­Ơ'b>ßKkµ¼v[œ£êa{2¹2ߢT'}Ơsv˜`wdkä½iăßíÊÁ)Ç¿0•q°TÊ<Á!^˜M‰Óª¯÷Ơˆí:Î?ḅjØœ'çœêR˜£û@~¯6‡lî½BNôä*b“7’Ét6L›eáù½¦X=“Ưe€ÇËÊ_ú¡x,ÎaŸ~ÿ¾‰JÔS˜f‚âÿ‰̀-›EṃkakÿàO ¶nÓS¦‡½#¬³4Ú½ÏyPñ/j/?CYy8äŸyÏt‚b{îR_c€ ĐT¢6×5>…~¡AÛë™û‚sH.fÇÇYR˧ĂÁ( :µơ~›\e뜜{;ÁKăkodÓæÑ°8ăñ,8ªvĂÎhûĂrĂo/5![:¦l>uü³p6™F̣́…r“ÍG/đ•>ÔǸc¶®y_Ô HsY˜o"-zê#a|¯ ₫=Al5dÅ©u+ÔƒhÛy»Y@‚tk))SiœW|ZÄ̃ÉÆi«µ€7¿ơ÷Ă×vWêd­çŸ|ÅîÏ&FüèƠåDaĂ¯Qht±’öä3º̣ëa*²Đ̃§ËRQÖ«/;ÓßA×—fä7ï=çJá»f=·¤Uy.¨‹%öư–0‹ưI Ø$ôqGÓ$§¢¡uøe~ư¸ô i úÆ}±) XåÎ1?¡oƠw\7áM’«'h–oqfĐÄ•a-9̉<·Ù¬;₫€d₫$÷c½è'ÚÑ% Ư«‘5½œñ‘±¥QÅç€eŒR¥³‡ÆŸälm7jü‚¦ó›Ü'f•½’£h]È:a¨y9 GgÆ T5B¨a%¼ÛŸÏÓHvWE”½"J“"$Z7%²Åm7%¾a‘=¼,[0bÁ¾Ü0ÄXbđµd£43¦] Qt…+ é+£h>Mu\èåúp41RÁŒÉeø{ª²r‘ ™bª×;('L¨™´¼<È ]cÏ0̉ĂÀ| EsDË¿fèZÑ·ƒ _̉Ï*“Ưˆ°É'C{j™e3dr4 ¿)´FÄJsOU?–»™Ôƒ¨É/´ù•_IÖ™ÍFí5ùPÍÅ‚ï,`9îmÓ²•̀×§Í´ñÚ̉ ïc}äĂc&,OkÁjÖ¥mó‰'…«I-˜‡½{ØØ˜y•½]*́åYE@Ú W­đ·¶Ú¯&î€8₫fSAÉPư3â97‹DÁ)ú{äù?öÖP~£•’0½ÎkC÷É6ÆÎªJ̣®Vt–µưº¨Ăo¬&Ø=?%ÔZô¼â¯S‚›A”Ï[¶m9sP.d¼_x»d=F°±R!Ø–¬/2.*½ï—V"· å(lL²HúđÓÓU7îí@¿ƠÎÄ]ƒoæVÈr¤§h {%ËI¥2«%…îçñøO©«jE÷X¯x÷”‹ºt†á˜¨”ßM+P2&ïLçÖ¾ª‹IHŒèk ÍÉ[>ù‰'“ß…é)ë>¿SêûÅv]ù q{ưRö½B…ALÏ|4BºvûP¯±—º̉µD ÚƒŒ»´_o¦ r• Ú¶[&–’r'{Ḳ­₫¢8[iæ] S9á>?ĂzñÙŒơêM·Ư™0Âç,M©œ3Ă ÁHç ë°å”X(}j®vDâf́Ưb ưmZ¼_ăPëÙú6_¦Ơ=qàÓÛ́ ùf¯×²Œá§–9Ÿïø'78·]¦¨ưó¤)8p—ytØ;{Zúc¹‹é¶ùWô·Ñ?9̣ïƯ:Ư‚ôSa [û¥AÍñ}·O°(ü=QY¥.–ûçÓ4»PÉÍÁüÇæ^QDoʾ){Xs®vÖà²uŸyyB8‰ªg.†\g…½Ç¢\ ,g₫SdŸv:&–eiÿ́P ᤶ®_@j³ ÅL’áw´ưjơ¹#ÑMŒ¤È—ừà¬|ŸzKø•-He ÖØôLs™‹œ#Îo¥‡ô,Fn̉-rDKT/ë`¿·ÿÀ€wc„_~ÖøiÑ$P]ơÑaCUj¨m϶•+÷8:LPhBÅ|Ăsñvøœ³»å̃ƒưe\Ê:³"AI±)wÏ3̃|Í/Ígd‰[ÑóÚœ;¿I”×’}ơ­;ư2U¿Næ*k­¹ ú‹hËS®”7ø¡Œđ ¯`ÜrsÊÆ‹?[u4n'œPä÷øÇ_-ÓŸ)ñ;¶ê"Vd泇è^›îØ/gб”p )´ab ÅVß'%&‚_\}Œđúr K°¹ ~gÍS²LđzLEæy§ zïgË:ÛÊØIÚÉY—¢¼₫¬ª®S1[Íïi’H‘ÓnÎă±H“çÖơ}fYbz7­˜vGq &ûöѹƒy`BYÔa.n.ÍJ(AGáâ;«Ûú[ü3“Ú­Ûl>*Ô;Ô+/ªO¢0ûúà3÷w<5ïÁ^ü:Óổ8D¤øM̀¥D(z”&>h«xY¯œÍ$OÚÙ6¨äüS°ºµmÑƯ™Ä/ç|4XI±‹8Û ç¹çϺ̣–柫ª¾ap²74ŒÂÖîi‚°¹,Q–ơàuú˜4‡e(~w£CCI}Pw™Á7ÙlP7÷Œ\qºzoÍÈMơk㻦p®tçmó¡fÖ̉W©¬û@ï̃¨ôÏÎ[0Aη„$‚43Ù”° [¡ *–‹¾5—uáÔ”´cÛ]£`†́¯(œÔ¨Å"IwÆr*VkáoGn\ă²eXê2ä½v»|ÖAÍ}¨OßMđMଶåĐ ₫F×:?êúñ´mÔ]ïµËúèÎ牢 ‰¹Ÿy¸zMV'/P±¼eOÚ¾Àˆíé̀YytüÙ ÖØÑ’₫»zßÖ+Q)4ødvcÈê¯FÆ̀K–›ösß °sÉÁ˜SŒƠïU{ sƯ"‡ưDfÓ«ùB˜́Å×`:^u$J¤¬6`‡½ọÛ’ jµW¯^ă|‰>µÍ_ƠT¡?7 ̀ÍsÄeÖï’c„™S]ïøn`– |·ÎIăzL6[ í† @{½̉ú 9y.¥8xN«{RŸI?Ă—Nƒ±É…&̃q–Em₫¼pÄdsµ« %}|65Ö°¯²Åëđÿ¶^¤P§YܧX!ë}‚ת‹ve½C¨Ÿ]Û₫¤:w‚—*j¥ï!D˜>Ä– ‡H¼²ƯAfŒ›a\ö «¤BiGeRVó©ă>ăCüAêGË!yg§¶8»®ĂʾuѤU¸„8üN伙먻Se¢1h^‘ÔæYÛ×₫ô{ÂâH$‡¿›/æ™…ó»×_ǹ…×X]âSHq€Èt,séư"̃’Z¬^x•…Öº,Û­Ä•ÚĐ—«·ÔêÛ»§á[ ¹êLï-éQ÷¤×½uöăà€ '8Åû‹V Ñ¥­ë^̀»¸ăÇæâ³¹Ơ0Z_" ”U(%$±JH´³wŒ“€{îÁ$yÑÖÓĂ¢₫g¥˜W„ï'X^jFë3ôĂ ÔVÈ7À¢kÂúÙ¨ñKÔÏ XäU§ôÜÏfè <ùø'L‰&AFÊvh)LBC1½[¹âAD]û'ƠÙƯ³¼Ö@¤8A£nôÑ„m”ußÖ9(‡‘^›ßíB °ˆï€¹L?¾Á˜ä¡ç0n:Ï5§lg"íƒ|\;y ˆƯ÷=èÏJÊçæÚ6>Jóu*èfNrÊ<§FËgÓÀ{¾€›ö½ª4Ê ¡óÖæĐ̉H*ÓHă«a*Êz³ư©^±íŒ¦`ÎpdÜó…ô¥,+»â_­² ê–q0¿ù=kHPûXO¼;;Eá—áËAæ>ƒ¹wâ [,äOŶ&~Q"µ) ¼œ¤Ä’ Ü®8)g6¨ásMW̃5b-v£o±­>Ì:ơ—ä+₫²Œ́Øœ¨–Ê?ÓÜ@L(¬¬w7ÈỤ̂)T=Cv¡7ÖkÈ¿ñL̃úṂÚô›‹¦öø ª˜$̃öù́-dßè²Í×kÚB1-eCkáEW°©|%v@¤ÑỎ÷-Æ‚ü† ê[Ư⤮­¥#̉Bưb^Ñ©`®Ma]/ äĐUÈ8º¾‘/ÆôkôøªS¤lEëơhóÍRûˆ0rÚÖ0G•Sp²âÜMG/*8`°CEr×å̀µá‚æ¡GîÔ LJ€ßäÇ̃±Ụ̀h§đñ«)ÖïWP¸“ơ˜7f’áSv¶œ¯́Vñ) y/“<#ÍÍßEÅ+w\X•|Ä1đ¤Đ;1åJö)+~HH=q(XKN–('Ë?£çȱ{ÂÙ –äïn@Éà*c#‚#ÖrÍKRëOñx•Åy^\ 9t6—‡ĂQ‰N¹C©0Ư>¶Ä¤ƒ¯IøÇ_Æmw´IÍƯÖœ 'Ø̣3¿ß`ZE„*%Ëü?n‘ù­•ÄÇ'_º»ô%sôa:L¹xLvăö†#„ '©t eÅËC™ˆ}•q#hàg AꯋéB«Mjí%ñ#’â°ä¿Uµ*‹Gü{[Ïsé^÷2'2BÄoÀÏ”µYcÎ&2†ùƠØ&<µ‡ñ\ˆçÀ"اfÙSÇPz‰\å+‹=̀0ó¥A÷ađLùW,'̉Tb2²f¤¬Ă'Ѱ«ƒÉ̃`êÇ…’R¤±P¾Î8jNƯï>ºÄµÆij§»Á ï̉¨êú¿ÀK BúiTYÚ¼í&RP6ó2Gº+£6ŒmÔÈÊ\Ù³µư0N?ă§Åp<ơÎ )èĐ5ºRç-·€%8GgÁqàÔăG¨ÂjØ?™”đ@̃«»|vÉæ¡Ú†bùÿf,W†₫‰ÿ¯\–Ä"̀‰8Cđ™`5x+»:eZ¹3dKèL°đ÷Â8.}%GÉ´xÂûZV'·MRS?r¤nÔ§ˆbà§Găpm‡“a@ç̀6đ?ư΋†ƒÓ„"OÿzQQ!äăÂkh’¼đrù³Æ#ÊÆƒIÿONˆuWäå=FØl₫ WcEm0Qyº–ÔÄ+ƯƠÔĐ3»7Ûû0!róUˆ æ̀Ä‚³‰†«¥Y›i—₫ïTö|Ñѧ°„háÑKm̉ºu+9Ă₫  ơ ³ëeypCÓ%̉ÿ*3Q,t®£wK8À±ÿ1Ă5 .‰dKăÄ "0Ñ­dẺ89 œkÛ‡ñ;>Áă‘ăX3Ë4È›@À0rLŸ†–ñ9Yhßá›w' åË¿̀2°¯"• ¦30·‡QUñ "›æ„º3O4O%®Âtr§Eø´«ß̀'cñXà°ơ #ë₫ùƠœ `–?lÛi]Ï#.GYº¯†a˜èă×`˶iVR!¤çc@9¦FƒLÿ{»–ƠƠª¸{YâT9̣íĐÿƠ}«[TwøźBƠ ̀1¶¢~¬\„Ë¿Èr«GÂ+K·[°´g_éhTÆè̉đ/}×8üÿ·q¢¢ọÄéªƠ/ûÿzáß±8ÊFĂ‹ÿl1]#D&^D9Ÿ™›tËÀ`̀·GJṿ²8¡­ư_e¡ªô¯–Đºr„à—…¼RnG  ü,mû ”!r¶p‘¿¥Đ“jzTB₫‘M¤₫uµg /Ÿ ø¸‡³qc‚̣®ùøM«Ûør׿â·%V!!~ÇóFy›n1đè¬̃G±Eí6R£ßÊ~ko !†±†MhB¨¬“ü8ë ¬̀ yù8$\ˆ(Bêă«dw6—»Yiy>=êự qÜ™ư†¨<­w2ê‡Ïø\Ơásbs¼¨}÷TƠo¬đó†nÁ–wÄÆĂ€Ty†+h£)‹¼“¶BX› âăạ̀§ Á×'À•rÚæh)ÏÖLä'"Ñ/\/üzeóUt Ñ@’ /Œơ\E÷JC«ơơ‡EÔ*`êh9 c.Vº_˜ß”øÈ«lRzøY©#s¾́AĂ¹̉ü…Ä́Höđ—ó[‚;$Øë ¸jÀÔ½ º¡ªyaÑj„ùª äjÓÙZ@5’̉̉ó0Ï¥´Vó ,åBתiä^“çĐ̃ å²)ZICßD1ư…q‰Ưùƒ%¾sm/é‹cB<ˆt'êàU`bê¹Êu†™/ˆ—O/mVÆÿRøÓ… ËÏLŸ}X»ĐÆ/eÆèØT¸ZIÁù*Çyđ›R̉Ûh ?– §ă¡ŒIçă+{k3%åñ̀oVˆ£W7mU‚ .~¡NN>¾OQMe@.¯ 3Á¥A0Ï^q4ª";,è̉ØF%< Ö ,P9Îê®ät£³JùĐMíÊlgº¿Z+\N¯ê9ÛøáEo9?₫â –ñqë! Í̃à鱋ÙP—"n¯Á#chåÑdi®^Z•WÍÍ^–AëÉY–àïB€ö¼-,¯°»êó(6WÀQé§ú†Ëÿ½Ñˆ••Û8Ă'yêXĐ&o½'Ư»ÉÁdiC/¯ñ`/³·Ñ(¨d¦Êû¨k¸Ñâh₫ƠṬÏHC¤×i™Z­¸&ĂăÔî5çûd$J¥ëÉ{KđÑî¿PöÀ‹ú‰ endstream endobj 900 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚwT“ë²6‚´ RD¤JD`ÓIh"½÷^U@I€P’„ ½)½7é*½ƒ(U@”ªt"EEéEàuŸsöùÿµî]Y+ygæ™öÎ3ßúÂ}ĂĐDH †²ƒ«£8!°0H¨¢§§A 1aHÀÍmÀ¹ÀÿÖ¸Íá,…”₫„ Átª¨‡BµƯ]€`1 XR|K‚@·ÿ¢0̉@UˆÔj£p,€[…öÆ q„<¼P> øöí[‚¿ÜJ®p  Aơ 8G¸+!#â4AApœ÷?BđÊ:âphiOOOaˆ+V…qçz"p@c8ñ€Ă€ç-ơ!®đ?­ ¸¦́oƒ Êç ÁÀ…  Gb .îH$dhé Đpäo°îo€ đÏåÁÂà…ûă}üå BQ®h̉tÚ#\à@u]aœNAÂÎ,àñ€ \ vÀ¯̉!@u%# „ĐáŸ₫°P Ă c.ç=œ‡!\³¦‚ru…#qXÀy}ª J¸wo‘?ĂuF¢<‘>Kö$̀₫¼ ˜;ZÄ ‰ps‡k©₫ÁT€ëà8 Hê–˜”î„{AEΘz£á¿Œàs5¡?4 ´'´÷CØĂ ?,ÄÄaÜá~>ÿiø§ƒ0´ƒ; €G'¨áö¿eÂü1/ %ˆ@?0t₫ù×ÉÀ0 éâưoø¯‹¨˜ikê« üiù_Fee”ĐGHL($*‚AâRÀ[„ƒß?ăBêø_-¤= x́¼^ÂEư]³Çđ₫Ù>à?ƒé£Ô…yÿÍt+JøÿŸù₫ËåÿGóó(ÿ+Óÿ»"uw—_ṽ߀ÿÇqE¸xÿA¨ë#¬° Èÿ†ZÀﮆpwưo«BX%¤̉B`qaøo=«đ‚Ă 8¨ăoÚüÖ›/œ  7Daç‚ô_6–A ,›¿M,aåp¿y.Ă KơÏ:ÔṔ|ûD%$ â Ÿ I}À„5…Á½~±("ŒDá.@BÏ~@{p>h ) 0́\øGl¨;CH₫‹„ÄË¿Ö÷‚Că(¨L°SupËA¥«§Đ̣ ,éfêÁQ¡Á‚û¸.µa›…x“¬̀Igê`ơûNmúÊnÙ³¶}–j8j½Å÷„8ÔW8́bÇÏö.Œ&ǿ³qÓ4=±HV¾.]Œé"2d¢m§T€9t™pÓø₫UƯñ1Á“‡¡Dư–vH‹~k{eI¦.#Ûmó/ŸŒqMv½¦Ë;Lå|r}´m‘¢ŸÎ©#Ûzˆ÷¬ ïéë¦ëd¨íñpù;W(NM¦—MUœ¼Â|:ị̈Ïœbtz;+°®çs|ÉƠú[K[Ö7xÛo9Ú&ÚGƒ¿àÙéĐÓ Ê©˜Üü•HØTvIC|Â>Ö¼# ¡ùz¶́»³vXˆ÷ähÇĐüOw-ËwƯÁ¼‚zñr§¥K_üê¸_Æx؇7ÿU™L·¤&À˜É·îg”×Íå’5½Ç2j!j)•êØb*_4};¸9à˜µ"µǗ²HƯç̣»{>xñÓ¼íÖVeI·(d }4~¾fÚ7½àÉÑ&XäM-4­*Zï麰ç[áµ`­Ûă*ô+Ă·¸J|ÿ@÷(% äÈ~º̃Ă$ÜÁY6µØ¾{½”8FT¢Ÿûüh'ñm7ª…H àQ}´?Ù Nêеx̉g†Wè‡Û${̣º¨ˆå'Ï~È7§h‹»*NŒÅêÇ›øz}Ẓ›—èoÓ-„ Ü—ßé%.(̉8ú ]™â}DưÁ¨7h-₫qt‹̉üNSNßHëè×K-%r·Ÿ~ÎÜØs`eÙΔ»̀aÙjĂqfw†²¹ú]™Í¼`î¨ûa?yư–'ÇWfâ¥ú¬Œ×ó­5Ô=u¬A_pb÷&Lt«É3ZÿEÙˆ¦ü®ªßîw©¬¸®»I—[¾ÖVî•9”\&kÛµ6ej?ƒøÚ¶:ÆÛ=à{åy7hjÉrJü^}‡è–÷àJª#³ICHé?zô©Đđºưø} äxÜĐÅê"7_Û^EoÏ·±ÛÄÀ+jø‰ñ¾ÉqIá†Û|z̉2”CMÍaÅ̃=~́œ+x?Ú.>ư;¾¿‰BƠ"n£L¶¸~…”~ú¸{đ¼)04I7ræ‹E]µh•©zœù<‚¤ƠK¾Ï₫ƒfÍ‘%‡µ©Ú̃+§tẵHcª¥%Æu`z*팋Ô₫Ît<ºz''#Kó†ù₫t ¬₫F}€ Lécgúr Å,ôÓ×Ü2ŸƯá đöv@߬ۋ}EóGûßêæä¯L.Ơæ~́E}3öLY„]Ï€7mD¶(#WÙÙ^11zm¼́œ†[™¼“Ồy+`Ë 8ƒk1W’ḤÚ`ô8"p!°€€ ™gú¡¢ÖPdaO|ûLn“ư-&í…‡÷T…ă}₫W:U¾V;ïFx^©cÑÛÈä¯ëŒôđ~Vx»èZe§$¤¥–î2üîZº_,‰äSQ? Đ7óJÆÁÑäS"Å’í₫ư -gåøđîS—ọñ³wÖe?ĩ©́¾èåAỵ̈_À’ºWg†Ă ̃:¼³ª‘±N¦¦ç̣SAcg–3Ơ’>óxÙ™øaÚÎ\Íô™“†­Ăp˜Ñ³ªjJ̃¢Ï2ư•FÔfÁ*h»Ơ·2*D·ák<ê–¼Q€¼Ÿ!‡±‡E ƒL1¢È¯©-Í6;å!ätĂö³ï‰KrJÜA3ûq1Î"ñå<»—̃ —Ö}¤ ¬Ó½k~ï™Ưñ;Ù– ÷'FyµQçê€êwºÚuc[ëôÄ™¥Tîe,ơÂ\L5Ùz‘ç̃p³îØ¥‹Ó™‘¨1A_k`…uÚ̉ +¾)pF¿œ'‰%Qc̀ ¬X*,r›X¦gHëÂú;u|"WQk€ÙGb—ö’^nó¹́”̃€jO¿ª‡"5üÜGSvIÎ ?ïVy£¼̃×;•Kñʯ6y™Jbå]LJ¼¦Đœm¾úP»ùú!™G/«3$$×’?=`ŸZ@Ỵ̈Á^‹Æ̉YXQl„»åÇÓrÚ·gåơ¼¤mVB÷nD3_Ï̃Đîḥ±aŒöbëØ$ọ̈˜2Ùéú‰ÈJ8ÓaÚ—3̣̀38½Å(ñ3ü&«t̉Á<3F]C…¸º¾kú*å+&z{cˆÍ1êIù¤ËtƯïöĂ—/-ÿăÿàtÓ¢#Ku]j5kkÄw+ûFƒzä\ß@dă)ËÚ¤n‚ŒÍ̀(Y[‹«¾9¹ăn/ïG&FWc·Ơ+ûùÚ–Lñ₫öă´$·“ŸKÖ|ºf>Êñ÷R½ØxÊf"Hª~¬DAµ=®4Ú5çíÂûpQ÷BÓ;Ü‹\’M³Xúo_V)Û™Ÿ»*ó3Ç2ÜRk".´0pLMS©¹†^aº Ñ$»ÎIa…/8yM+2Z¹@Á¨*•a+s^©­‡ÙmF ª”»mwđ„ܹ²¡•ŸÑ=zó̉jª₫ơĂ7gŸá([ø…f ́ZáË»Ṇ̃Lû1•Á«dUOÇ›,H÷Đ¡£ÛÎdyAƒ½J¹´¼ÖzK̀èh(iö¦cï– $U¹̀¼{ï-ǶSr/¡ÈŒç:}Øư: êw6‰D?~©ôرƒ¥ ynKªư6áÔ9ª¥i@CÍq”gUájP0ÿÊ|9«mRÖ¢âí¨©(+EƯˆiµ1ê ¾­â/₫Wûf2¡BjC,Ë! ¨¦vŸfÚ$–*Ú~¾Ml•₫EÇËM¬£p₫ ®˜½,c-ö½ïÅîpP₫€ÜZœbEs¢đ¦èưyLM¡t/»¦|)|ủp`¦fT¦bÿcχ'Á~®™kB?êô”ñX[¬_lvôÄI¶Q‘Á&Û"Bœ’½¨̃Lc¯öúyË·¨YG+ [» {ëRé \¼³[½÷ÍÄ®T¸¥×în.n«r>?óh‹jÜu:¥#QHÍ9îWbiX‘.ÁJ·Z÷°Êh–‡¼¬Vpi«­†2Đ/îïÜ€SäO­ áÀ>°ˆôÄÙɆ&%LŸ8‹,û̀‘­ %¢2s¯?~ÛM²ø¥PJƒ›.=Ø̣f£»Aï‡ôḤ̉ä5Ô$`ƒUâÆ³ǿfPRä§IÅÉơ₫Kª”#7¥d.=x²U{¶½Ès½RÎAå{^\màŒÂáêÆ<¹LŒuB ÆŸđO3¡"B÷“ªc{URåé- ‡GM©‡oX¥i•ånsí’ÿèÙ`âÊàoŒÛ=êuÄĐ́̃¢ä€—ʬö_¶è.ùïkœ‚ÔR)‰ fÁKơ…1^ˆÊHógn—â+'–Ñ£?;è_đô¶·ÊœÆº¹~;UÈ₫X¨S´'ă³»kÚ$₫6´=çơăbư¼ÍQÚy²VçùNؼ×+-G5¹ âđBëxk Đ4¾Ưºù›ÖĂă¯¢3̀å7© Ă.¦®wYRV¦Æâ¡î'̃MfÆÎó$±„7’º¾ÖçoÛBƒ}[îæ¿́â]ĂÏ­»úx¼|Ô¡ăÏø‘¥%RM«`‰§²‘Á9Î ed­‹³sדª—n¦1_:˜ùZÍrDÉ ‡·<ûƾ›wú=¨:¥É)ÊC*„¤̉Ùô¯Œ°[Ü»!ç®¶m´–˜BÁ»¡*+SăTÙÙ×p47¡µ|(e`Ï«Ÿ;VªuƠHx«ỏ íưÙüC/:³xkLåÑ}åÜ…¨ƠJ¹ĹṃC¦‹[¯¨ơL[>œ5Kg5TĂ₫E¡x ÑÿAu?&uë2ĂU:[C“39™3µĂÖŒ íˆ|Œ—(%—å‡h¯q´X+ÑÆ§»fOJƯ‚Hëø‰ms1À§ûJTe fRƯ=]¨X~4öÛ!µZá‹s±"̉H`{@Æ8.™!êư.´‚1x¢̃ïú‹Uµ:æ¦A7ŸK±,Dg'¡Ơ¤[=û²²‡Ơ ôT 9¥rZ»kÅÚ=¶ßß$̃á3öÚœ_‹%éô¢”t,¹IѬªÉ¼3ê%†Öù¿jbÔ.¼´Ú¸X(ív‘±»×Ñ[g¦öT]FöîYÎûŸ₫¾[Ïæ(Gé®́˜`ÚN8*6•:íÖ[ẓk—\J¹]đ; tˆ?ös‚ª¡¾¸UừÖ‚ÚÍÆÈáư$Îơç›39;ñ&¹G¾ÚT|g;VYÉü‡=̀Teùú“7­ 2N ¾%½ø_úivMă}Ư«R¢†tS®U-½½ï(¢t)Fq=vßʆ¶›9r¶’,Ư¤Ä¤q8ê+ƒRÎ}×y«d²v‡I™9M‹9Lá×eä¨3.jL=x€—¢½e‚Aó„VsE8ï.½U\¤¨+J‚è„¿N¾Æp³¯î{œºcWñézƠ%œn˜ÔP(¥/Ü÷ƯÈz«Áu¾9·÷Ë´êI8Êdƒâ|9¯êÂæ.̉¨IêE6+]rg ´')Ă·—C•ü˜XQ-xß§”ó²‰~ơÜŒôÅăö¹'’aNÊ“‹R ! ÁŸ—UI_ÄűY>ÚñVMœh#wµ(²¹o9Köơä£Ó²§)ë@@ ¾ńK!aí,S4§X¯’"Ï·â˯ŒŸF‘…·'£Döă†X¨¼¨’¶wùoƠoj¾³90’Ưa{` ‚L/ÔL9I¤Àî`’5UÁœ-Đ·–Ư¼‡e{®/xQÉíez„_ü©ñÁ¯̣nÓ7<4mt§â‚ø‡«ùøo©nẓ¢…CÔÓ §˜A9‘*6°º©Ÿơ±'sÅ&ÜlxE•ê+T Ơ¥½¼Skz‘.ç̃¿—8óŒU÷ˆ%ôÖha™†À½ö₫å誹ȶu¹F ~@Ó[Ï¥ü„Å̃LïnsIz-Åqµ£ºëe££öqCÑ«\¶<^§˜3»e~F9_\4« t8Dßriج¬}‹•5oö$*í'î?áàçx¬Î´•"T̉1UsH÷’ê-œ~^+%¡U{pÜÇÓÁđđ#YwqÁÁƯ&aPíŒĐØâ¤‰­Ê%¢‡·Üà¦éŒÅ²v…Th4®ºav¸gja`Ê6ü]\ØÀ‹Ë+̃ë3ƯGw™sKû¤t4l¾jn£vđEAßú̉=d-[StjZÚ~›^ôüüëfZÚêøP3¹¾¥›À#mq7²³%-¸èđ¬ N&F¬CA­x,6fơÍD_ZêI>ă_׿(̀fù–Fí¸‡'QÑ ©«̣‘’Ô‹=₫|©”ñ€çO{îxJ¼á́_đuN+á…3s‰0Íj?oƠ jœO¸̃³û*› ¤·‹ºéˆ2]ăîÜZ¾ dœË+_È?xD9\̣¥WT"ܱeu³ÙWKXÂư•­‘a₫₫øC>ÛOSŒŒzê×x’ï‹'H0%ƠÜ/ ~È 7W g§Đà·Uxk¬®WB=ßp:6à°øhƯn?9GŒ$9%j•èÓÀJ â¾êtnĐ[ê¼Ư(k•Ûë¹:ÿbï“\»a±1Œ=R»Zß­Ơ´)y x¬eú+,ætĐ;c"́[ÂÍd4¢iå̀ê˜mÍäÂ35÷D½cFºé5­AÁ×Í̃Hª̉%DQtD!Ü|Ää ¦Å =¯„“̃NƯ”#¶×0z₫#é°qЦ¨ơ-/̃/ÍâhªrC©~6á‹́ÙØ~;ÙƯG5ÖºF¡ M₫ƒz¯IåáÂB“¨g#WOU˜Ë™i.&?épé£Ứ²̣g6¸ÊåÑJV-L›t£8ơ<\Ï]…p„_ú¬ªÄ¬̣ó•ăsË‚&,yºxÂÚÏVFº —Gơ°·Í¼/ »Ö9X¸Ñă’hî%¶kớ̉·®…̀Î?R+‹’3y‰ô¾†đô5Ö;ºªÂ)Ëày‹¨û0\æA®ïă³Á=)d½˜-”*ÓD/ŒRd›L×}T1è¯Î6‚₫ăSÊĨ"w¯¯ËÉV$Aí²–v–¬3ô/äQQ‹…§¼‹âº |æ½ • §åŸ\£û8̉¢AöÁ+}÷h³¤Å®ôPnƠ¹ç[²|2}u^c(hÅà>¡Hư\ÄI-u¯fïf[`¸9–Ç£x«úăUCαwÅ6z5tz0#K̃ÅiÖ²¹–Ñ÷x̀¯ơ0¸×H’“ä3·ú…æÑ8M¤xmL}³ù±Gv endstream endobj 902 0 obj << /Length1 1398 /Length2 5888 /Length3 0 /Length 6843 /Filter /FlateDecode >> stream xÚuTÓưû6("LAB¥a”̉0º¤$¤[’±ml£AºD@º;%¤„$DAB:Dº‘₫3ßó~ï{Îû³}?÷}Ươ¹¯ë;NV=C~E(Ú¦FáøAB̉ÀûÚÚê a ˆ€0€“Ó‰³‡ưmp>„a°H4Jú!îc``̃¦ ÆáÚhPĂÙ‚Ä¥ẢBB@a!!©¿hŒ4Ṕ‚„µ€h à¼vtÇ á¾Îß@.7$%%Á÷+¨èĂ !`PŒCÀđ!`{ !‚„áÜÿ•‚KĂ9J ººº €°h \›èÄ!€0, ăƒ Ô;À₫Œ&à!ØßC´-ÎŒñ{$†ÂâCœQPˆ¯4T×ê:ÂP¿ÁZ¿|À?— €₫“îOôÏDHÔ¯`0‚vp£Ü‘(8Điêªj àÜp|@0 ú¶Ç¢ññ`0̉lƒüj TUÔ‚ñ₫™ Á qX,̉₫猂?Óà¯Y½vp€¡pXÀÏ₫”‘ïî‚–û…vEy₫}²E¢ ¶?Ç€:; £NÎ0uå?¼ đ ĂÅ„$%D$Å0' ̀ ‚üYÀÈƯöË úiÆÏàíéˆvÚâÇ€y#maø€'́â0Î0oÏÿíø÷ ¡Hhƒ#Q€²ăÍ0Ûßgü₫1H7 ¹~  ĐÏÏ,ñ ƒ¢QöîÿÀ­XPMOQÇÈ”÷ÏÈÿq*)¡Ư€ü" ¿°˜$$,”À?xÿ;ù§¡bƠQ¶h|Äï~ñơwÏ.HÀơG!ÜÀ'ÓAă© rưĂt !1!₫ ôÿÍ÷_!ÿ7ỵ̈̀ÿdúw¤êloÿËÏơđøÁH{÷?í›x,"Ö ™˜ù™-₫̀*;­jàÛ\?̉3Hs4~e¶gÁ₫Zkÿ®4v/DiÑÏÓ†ávI¯ fü&Y°ếwT<®¡kGơj DY·Œ¼½¤æ icäàx¬ Gë_í + €Æ¦êmư1đ–Çg‹êjà 0•ư“®DÜxQÁé™t_‰Ä¬TÜƠ¸ø8¹­(/A«ZùØ(iFÚ5’,]è÷¥µ= 'Åu%÷å/ Ë&5 ƒưd¶³ ·®UyôăŸ6÷·÷F¯O–l 2:T µ-_̣£®ÏÈë¤ë¡ÍÜ›Ô 7¿Ç"ªBªƠPpgít<¼xGBüÖ¹½óe®RïI¦GĐ•n¾l“³x%lÎ_ḷ¨q© Ơ‡_ëYoơ›Öz.±ZÁ½Ê\f@₫n"1”åïb+;²4I—jæ!#Ó] .¥te& Ú<°°…€Ù2?Ä‹B¬\éI¤Tj°À#•Æëư$ă>å— 7 4U[¿Ü\Ư¦RO”iƒÍŒ%ÈæZz‰¿ZT9uçª+è^®Br«4)O†=•_ôñ?Ÿ¤•LfÔ¢æ›]ôªc¿#U˜F ˜ƯÙfˆ™è}‹d€ó?ắ÷–ôñfµ|ª/s/s¬ƠU{@RØcsË+aÆU:¹•hû;®’¼®‰\•,iX ŒĐŔR’l%ªux1dûä"í%q‘Mê’†ư|á“KYfØfÊ$£eí“7ºQÉk.a+;zËÊ ñêTLù‰ư;„ÆÓă’ß®Q±đV·z<à́Dô,2¶NÙ|¸ÉNóƠès=¼:l4ö`Pxo-W™©übÂ.—;œhøæi÷+»>ú ?ɅŶƠÎSp.—‚wn•C̉e`aßP³èÀJÉ^!M$´S£Í|{º¿Ø1‡§K‘ ‡‘ügă ƯÇwY2³\ Đ=ù¦ï̀€|…Ç0³Be›¬éư˜µ©€= £~BFǤY œ0GF·¤¾B̀ÑŸÇ̃ÖÅ–LUTÁ}N^4\aAT|ƠÈ́å~̀üÊ“4¥0í¨l©3ôĐ—ñN©é‘ Íníï¦]/a& ,Åå^/+“z`[,ï;©®ˆ–̃_`Dyé²…]søôp¥'µJùú„⻌“Uf²ƯÜĂÔ‚)©Æ±¿‰ü'»oíP•ñ^&!®–Ă`#̃qÙNOMUyI‘+PNqÅÉúÇa­hNî23µAÔÙg÷cß­Û]ë£'ơ>)Á̉§:¬MúñsÍ£c`ØD%³LuŒˆ%KàÚ:ƒZ$n₫‰₫Dđ ‰N³Ø=ó¡^Ç$céUßEƒ× ^q›ºí6Æ]Ÿ̃÷½æ¥üï9k-ï!ú ›>i²V´@‹ÂÛ’ ¿˜ôUŸ9](Wơ‰„ÄRÓ(o’|@"Δ¿‘ïèùí9KË̀¼kî7×¾́LƒË8Ơ>×đa<“Pb9^{̃ÔT³s®çé^Å  VWs[í1ÍM£‹MöƯÜØ½|‡¨:́Çä`Î @n]êz”(¤Î8¯"u¡ƯɃî:˜L7HkÛĐ1WÎ^V¡¥÷™aó’X ¼BÖ¼eÙØ3ňè¿Đ’Sº(âT:U‡§O™>y“²Èçi0Bê†Ú OEg½K×ÉTÍSÑ$ù<î« .á~‘ºuséè©%UcíñƒœÀƯ…1UѵÎú½âï_ˆ® tâ J,j‹ Û]Íđä⃒µ·ópÿ»ƒ7–j]¨@ªöb©pTÖEÍFN_çtà$ß`Đ ø̃gëa‚•ưI¹´̣Ö ÷ă7r×0—oˆÜ¸eÁaÑA›5̉ÓYyP£±Aä}) ~ĂiîªÂĂw6ésÏÔÑÜ|_+Ôç3„<’||/Zư.Ïô ‰!3ÆÉÁºt‡d#̀d=Î?ÜpKTXXă-¿¶́G5ªLº7vÊp©*rPéÙ©™˜èN«¶Yñ² ┪ůªjvONF)÷̉_çpù!*&|UÓûÍïa\à¢[QV oÏ„âEú\ñØÁxAœ‘ÎGrUvƒöúB=t+bÅ­ƒ…·ÁHÜv¢ÄDưfưhc_,!B©ï¢«ÍÿƠíß=»eê>Đd«j?ó…ñ¹nW˜É»\¢–ZéưñKk¨’"ˆ¬°gÊ%±w ơf[0Ûơ^ň®|µSu_? (Â51ÿzkEƒÏôW×÷ùêa|f ´m-‹8Rè JÚ´¥„ÍÆR3Ă¡üĂà́DØö€̣Éøb¥[.êÓØÊ–£E?h‹koA€Xc\²̣fVẠ̊¢Ë^đ,ÆæîZtm^q¥MY´‘{¬ç±¨|#—̣Ü̃ $ëÇø ƒâ*ˆœß­½SR3èa¹Ư20OûÆh£ă{n7°}ØñéѨç†ÙD$Áq$‹ŸôƯ)âÔ‚£²ñ;G/̣ï9 ŒǼRÚ»^Êóè́ ½ÿ*öá„}<¿9̃ë[f¿sL«Â^`-iw§mf—Ù,'<@̃àÑ{Ô ñô+́‘»ßVùvạ̊ÔFÉ,(Å*Cd¬gƯ),¨¥V¤cWÛö¶ 8>ọ̈Sö) ïGÆp`V¶O*ç>&%Oímotí g_ra:#¶2µÏ"Æ—̣ê 9æß7ø̣c¼¸K‚µT¿“Ü£Á»qaé÷ ^à<­kè%ˆu“mߤ5ĂzëŒCvè ƠMNŸ êa€úèá¿À ny@‘çÂêØ ±í>—=³{¸đ†râĂ›Á ¡­ i¸P·½èJ«6F[ëüÂZöºƠ«b&ÛWU=ÑÔ“§BÍ}k--_»=ä .úHÖF´ÉüŒ,`ZzWM<€Y¿wöܵuØDxè†Ù=@5̀3’6S”Sèqvd S“K…°¾éOèÅ3#|íè’VH^ñ–«.­kk]PêwG“Á̀@ëjêàˆ@I Ùï«Öü:Åörg½áù /®,ßOx˜ˆÖÊ×éÓM«́øx™ó1A@Đ»ó8Ơœ§3GvcÑ‹V;:4{‹ÀfÛ×yÄHœpúQ=ÈVÅ©ºÛ\ñmÄY„ peMÑĐ2Ø48#̣¸¢d6­°c-6R̀ơ˜*₫¾Çû‘RŸ%i§sƠ‰G«<,ÏLÁ/́jƒ̣Qê ñ–&Ơ°.ẰB?vFÖ5‰¼l± ¾ö>‰WKÁä'ÛbV[¬ù„Ó÷ëIK_ic‹aĂ9 ºÚ,Jh¥~±û$Æă×ëÚ3^Ă•ë¡ÈÜßhÖ§’}ĐáÖ¦¿»À¬¼·R§Y(ª÷3qüâ]LaƠ¢Ø0:äw²“‘R]@g —Dº‰Å­37AZ‡hx*ëlƯ?¿TÊÏ ́"Q\]”|!¢hΖ·‹kAø̉ĂßM$æÍ÷ºå€C$Qä>”ùÓAâ%ö~¯bv®sñ#¿>¦„bR_ººçùÅ7T̀¿xùEǾ§6 tk@Ôˆ½1:cèm$i¤9M”ưªU}íÖ-„ëù@Ù3·§̣?ØôÔnꦨx¹{¼Đ́WÊ8M ̉ßäHŒ4›ơ,ØØë ¾CY<V('®^—uÄ}±ªgw2™±¾Ml¦TÏí¯Ä>Æ8Ñÿ–=zÏêǦô]0ˆlûFÚ’ZR)…₫Ư-̣ég”ÈB(V½6‰nó₫e›-ă1¥ÜN₫›¸LØ{c#‚°lc₫ñ^®Ëö ŸoÓg„e¼Ơ®~ÄĐ™;Ødº<Ü©₫fép/#°œy=Î܇Kr₫ɤe¾#âc¤MZ€_̉)Gb‰NrZâxÅỶr@zNMÆ_“„LØơ€̉*»o\¾/i‘Pa T+L,¯ióªN—Uuz6‘~ ‚́,×›X_·*ÛYU÷-\&,ÚøX9u{Ơ‹ä˜Œ½YtÍađ)¶­L|“‰@!ÚÖv3Ă~¿4¦Y];Ó-²=×TLÖÚ¿ È­~)×&{%Äm}Ü„4d³¢Tsµ Œ®¼„´đ*̣®Ë¶‘A·’§ç[‚B=ǯ$£Ú AOÚÉNŒ›wew\r¾m_v?ÙÂ=̀ØđyyUà?3ỏ$çÏjâHî¬ÍIö 6°#Úd°4d–]+Ö$˜„Ù?R}O°¼óе`;åÍë  ñÔ“NïĐp)},ƒ́¸…ÊÁóÓUăG—ö߃N£i£¤ßN3ơêT–—­WŒ$è]5˜Yjçc¥¶ĂiójØ|ahZ—蟅«Â9 l핯ô¿̃H&n&Hó }ó âMx“ÀơHzỵ̈Rk•Ú^i>çp?³Œ¨₫qÿu ̉Æy*~=‹£ó/íưUØåÑ»ĂÊ2_‡öRÁ•ÎÅ˘a‚üǴ́¬¶MûijßF‹6/OnK̀?}" Q ô·§|NÇeiG4í”OÙ¾ẠS¡UxtI^¶5fhÙ"ªs7’à‚“—*=«|öfJ AȸJ(́/BOrg h ³©5ñàÊ5ÉŒ®j̃„áá‰ÙÂÚîµI>Óí…ëeơÍ,¾ôå̃<¼60å)_¡¯aÚ›.ŸK/èÅv=ßPÉŒ›Xơ1,4§Â¸2zß3>o«…¥©$@‡*~°ÖKù7}2¡SxœPé8êĂ½‘´Ä5÷”Émh1Œ>mÇ«ÛÜ–›_̀g̣ºyÁ$îYÄ_ªóo(öhJ/ÂÚöȼÀ=«Ê¢€đ S ^¥»Y(×N6oY~ßqZ¤ßZñâ+"·à× ;"]PnÅ)µÜÖlÈÆP“÷Ö’I‹6ÿd‹Æjg¹¥âǼ`×̀œYß’Ä9ÈeÊñ³!¥å­1‘˜«‹¥7  ªÙ “xóơA?öPÅüU¥+øÙ‰§ùD˜v́/Gù¬¼ˆ?ß°?ƒ_¤jƒ_́œ¨µ×u++<§3¹ Ï•-'æ›2ᡟE/µÊŒªTDơ‰‘3mc* Ÿ&|T²-Hyt(uư³1½‘ ”6ö×븽Ñ~L©nY!Oí$ÁqÄ×¹ÁZñÉöû}năôgyá˜dùƠôjÓÍDLK~â«dâKô$ߘ¬œƯƯ™P×̀ +˜sX¾̀IÓ·LÉæ®|₫Øöó9¯û*Óëº_øµ‘¡t’¸tV5æ<êIç™l vÚ­‹ç „^3Ç}<5ï˲ïÂ¦Ï  m! +*Ú|i#y4̀´Ü~›RP×y'щË$đ́Ù1 ƒ€”-O÷À„‹·Ô.:5ßÛº%lMá’'Ä¥Ç9E' —ÏúBJW%ej¾ä;™Í C/‚(__‚‘xỚîŸÈtEĐo­¦«i´ơm’j¿z(‰ÊR·½°r‰}2×̣“éêùÀ&md›‚Eè/½dĂÿĂQ <ÖĂª/=ä&|ˆÂ¾kï xpímTëưX²ORcṆ̃Ơ"Ô|°è$“øÜ§kåÚë{‹´/¹:âÍuÖÖ›»n]^{¦›Â ¥=ĂTd~@Ư $1Ë™jRÅ)\u›.·8¶Qëk —kÉóÆÎÜË'¥*ESÛƯ#È\®W› Á”Ï{îôb™ê¸ ‡‡.4+ &±›ï6wójóë> stream xÚtT”ïö.‚€ C "0”„twHˆ„0  13C HKJ*¢€t§t#©tç )¥̉ñăœóÿ{׺wÍZß|{ïgïwïw?ÏÇÁ¢«Ï+g ·‚(Ăa(^> @AKKM ñ‚$P”#䯛„Ă‚@Bá0‰ÿP@@@(ŒO„Âà´à0€º«#@@ đPB@TâÿÂEÔ ÅP‡Ă H¸³'jk‡Âó¯W˜ ..úàw:@Î ‚€‚A0€eqœ9ôá`(åù\’v(”³?¿»»;È ÉGØJs?¸CQv€Ç$á±ü  r‚ü™Œ„``E₫ñëĂmPî €q8BÁ“á ³† ˜ĂújǵXóààïƯø₫]îoö¯BPØïd wrÁ<¡0[€ ÔĐQÖäCy @0ë_@#ɹ  + àwç €²œ„đïxH0êŒḄ!¡¿FäÿUsËJ0k¸“†B’üêO€€1×îÉÿg³0¸;̀ë¯a…YÛüÂÚƠ™ßuq…¨)₫…`\$ÿñÙBP ˜¨˜0â€x€íø•7đt†ü ürc&đñr†;l0C@| 6̀‰ä ®¯ÿø§E" °†‚Q+ˆ-F̣Ÿê7ÄæY>ê0b¸'₫úưûÍC/k8̀Ñó?đßûå×ƠSÓ4Påù3ñ¿c̣̣p€¯ 8€WPD1/>ÿ,£ ‚₫møŸ\5˜ “ñ§]̀=ư«e·¿ àú«nÀ?‹iĂ1´…¸₫Ăr3 ŒyüsưwÊÿ⿪ü¿X₫ß )»::₫sưÿaÔÑó/ĂZWFZpŒ`ÿ }ù£Z-ˆ5ÔƠé¿£j(F r0[ ›y„ù€ÂüP¤2Ôb­ Eí₫pæßđ—Ö¡0ˆ. ươqÁdÿĂ ́€ù€ 1Äü!1jCư^ă/‚ÑÓ?ûP‚áÖ¿„'(̣B @$˜Ơc,€—F¡ÖßÔđóÁà(L 3³À ùµf1¿3f7pë_~’Ô»"˜ĂSsđ¿́ß ‡@< `’é 8øQ}EPăI™ƒ;ïÚ$₫^̉‰± ïPö3"T—̉ˆÅrœ~zÚŒF̣t§€̣3ûmy—“Œ…Éï^èJæ*Oá#^få [f«˜‰ë#́±x¯cFÖ :¬¬' ̣L]Xºw#n¶ËXÛvésPxß«è˜wç¤ÎSUnÔnn-ËKÓ¤e7ÚYyŒª·ê5XùAw/sÅ):p5̉,,Q;…UC²ù”$νôæRO_ïeçƯ¶u·€µ}ö—(J¥G½ŒÂ„¥FsïÈ/2?¸m§PyY©Ü’Ư¶î*\äN8©Đ>´Cn›³Üwé̀¨¥ë$ÚÉÑT‰{‘’Ơ';[ö=Öl¢(¶@í!0Ô"ăåçQJ?`uú2§/X^HC  ƯƠ¢…#fư"½ú¿.o₫ ÆywU\ •–Ô@¼¼4äeÚŸvAµSe|µ[)\ç°ư™„ÛÀäÈÊ'F3wbqd¤N¨F}ơÖ ‰5,đ‹(É#¥N­Ul¤û`vk,mÂÑŒúH¶0Z¼€Ư»_0+>«Ê¬üN÷Ñù–@P¯ÖÙ'ooü­RWH̉Ͳh˜EÈ'B³ yߘĐkÈÈ’œë¶²jçéưºr±©’§¯Đñ‘ÆƠ³ù¡¥8Láo–ä6e7:ö¨=)îÖh“ÉÈrh™Ô§'§Ó0, ˜ó7’Í”øaơqúªƯ¶Q.å:¦›2*ÎíH°—º®%³Aï yÚoïE₫Vd+xÜÇEåG ¨¸ØI£vẽ ̣„lyEªØiû±s蒥Ƴ¹8D'änLv>ø9¨»«QPFF}îåB×̣ÚIĐ =­ó°®`‡̃bÑ[‚ÇÏ×UÔ|“ˆÔ(?LJ”²P=T¾êÆÜtM À)ơÓ0£y ‘y7{­°Küjéën¶¾¢ÀyzC•‰På™ĂfEÓg NC ·)úøÖvFÏ•‡Q‹Í¾Ư…ï±[¥¹å è¨=M°—¦Ưë Ô›N­ưè9ÚvyÖ®"̃V´Î`̀–ư#Ä,Z&¹§¤8E‹±èà…á}Ó冷QO› -çóV¢E\Ûǯê½È®X÷’{®•¾8ͪû7›̃Mƒ©¥S·gíơtÍÇ¡d ›ä(å±5†Ôđûë&twmáxÍ ²°ÎXß'+đJÉ£C ëdîÔßÜYç;±Æ¹m@F̣¸Í!7 w÷ÊyơÄ)Fy~£‰‚½ ïd!ø½$gdÜ–NZäÁXPéWÜØB•ªºLÆ·œSăy»:¹Dvjøü‚ûq†Ơcœ/I/}”D›÷`wÖ±c±ç’™$ôà;=¬X7ăŒâ·Ï\]›8“È%A±t|ă á—>;Ñ5m Qûçéă??-z’̉ă+}äRê*¼^pzmxÖ̀³œÓ̉Æ!ấxEÄVƯmÊ2ÓR§̉Ö5hỤ̈ăZªØÏ`Éæ—]Óêï0×îæåC8àBïXK“¿œw§­„äSP=ÑÍ£’6ÊBÍR–çOƒLV’Y°EnkD ê¨ØëízÀù>ºă¹rLIsđT–KXêë±ù i|O¾XI•z€&lC¸̣Ú·¡gêX́œOÊ‚́̀gÆ'[CíêC¦s& w›?a¯µI“ܧ üÖï WßEMå:û§₫&‹›đ4½‘ª9R#;Æ~ĂWºI8aFéæï öüJ×*Öíסsån§–cijË?UKûC¾Jn®ë¸;Ç.§½âÊÑ­û ×̃ñwă‰ga·Ë•Yº„w.¬$¨†{enj‰û+„–É£gnMÈ– ·7Æ6\*=*¸A˜Íkç•yâ_×cƒKÓŸG|öÂú#pú*GpiKÚ/pûIB6˾&ơ‡±…­gÆ7q1Ÿœ ¾•‘̀—Ç~¸z\Á”| ;âœ$.™Äµ2TÄÓX›¶él¦+Tkû6K ʉËÀظI…#üP7m\âÛô<«x.|~I "yèù` Ûϼ8…ă éè¶+G9̃,KN)ç1’‚…&DŒf }₫Â~p1†ưî.Ń缒1ˆöñÅBíÎ =e¾lÛ÷lm±»–oÏ®^N¼xnơƯ <:.‘àëˆz”/¡– ô§Ụ̂V R±âµôö)îŒY0•çüøåÓưº„Z‘*•»Ë¯”íªy%ừˆ»ëÀÂïMüư3ƒ§lW+*)F ̃ë…c=†V™f=¨[0ö¨µuo)c|qe,X5.¸ÏÏL+ÏKAú˜WÏ–öxw¶Ăm—8 Ä5ôÁ₫ s7.Ñq,àZûƠ¸È 4¬@OUl»úă„!c²©ô'aIđ±́ÇÛ‚â8POe’D*3%­A;Á¶Öù·g¾œiM̃ºGI5''x̉Œxô#Ïư£àÄÈ}Ç-ó^ç?dQ#ëâ%x,x:îÄdJ,{¡4¤ ®ÆV#Jˆû9-uÍg$h7·ËĂ›,l°Y«÷—±ˆ’<Ún$gñ@óøWd|¢æå–ùW-\³P–:; b:8Wú­~ñœycOßL̃m›‘­Aúƒ™Éߢ­=>*“Ë'![0@OSº@yê¢ñêŒL¿g“J^u˜B¿tç|P_=BơM6Æ¡è:FO{%sưQ†…1Ôäưé±Ư‹1ÙU‰3׃¯ÔC]†¢%øñyTăR~SàµË©‹|¸Ø¨j̉ÓEwßœxĐAú"©™ƯFå¡ÁN˜ÖXÜJUÂÈ,)1•s¦9 ÷ñâö¬K( c™dBí‘ʺMo[»U÷ &6,?ÛPqákhpÙnăuÆWo¦6ø®’ï2¯m0‹z°‹¸0ˆE’t—(8ÚM‰fîĂK7́¦5ós­ˆY㨠|{Ăᵑ¬„P+®ĂÚÚ´ưĂÆ‚N¥uø &Ơ—·vÑ U²¶ííi–2ăÓÇ7¯×ßqd{sˆ/¤^å”W—ă ä¾²OÜ,jgaLX~)œ2e$`yĹ‹;oÅX/*ŦnZñT,°̣ö£¡_˜"F[íª|8W&4D¤ỊƠaê3€SÚz¯±¡.4Ínr2Çc‚x'̣̀oÙ¿Ür<ô:qµÉë+ă.h$»à8*†ÄT7©Øœ|+ÑR<_ ²00¸o±Ä®Ï?*-ÎzÄvSm̉½Èƒ¥1^àtS²tw"ßV?ôHíơÎÍ_Ï”à˜s _ &?£Yđ̉S¨µL¯ô Öë9Ú‡Í;µR™P)39Ÿ JH&¥íƠùăÄl7_y_Ó=tµÈK -R̀‘,•u~k¼́p‹S×ó¡hÿêƒRWk5ĂáÉÜçê!)÷F»¬ÂḿĐç_p—Ê©ä†m’‰TưµHăX]˜—¼o¢Q(`áÅíl?éèÍ~“ H/°ÇL©Y°Ôñ— á0ö¼Í“ÒöC«<ĂƠv•ªĐëx”R©ïđä"AF´RSÉé#€Zậ`íªưœ8ÔH”¹HíŸíÀ=~¡tQûƠï§băë!9““üÜBëå]­ç₫âÖäí ï È5É'm`ơêd|Ă[&Gè”×﬽̣ôn4lăÅÊ|¤̃ ¸ ¡DG̉•ï ”æS}¥å}öÎ kI¢Æ­W ß­ê¦́~$È"!ơđ̣NWÆ…1ë[5½¯Ûă Q^Sj¥›_kdóŸÑX̣¯Ê¡5ÔƠ²_ôÊÀ}à¸dÉ Dư4ÚÉM/jÖ²v́”®”b̃́bl¿đÇsy`/ËÁ©hWTüóà~W_~°0o"Ëè¥Kèă³®qxÀ‰́3©C—h5¯_k_ƠđÓëü+¡îÉæÁèÅsjöWĐ‚×È|~^FkdÓnBËÜx\Û|mö çä½gßoåWíLH®f(Qáô!XÛ̃ƯÍ2ørÖqjZØùAß§réŸMƠß~91"XZ)"»³'́¦¶’(Ir.̣¡P9 ̣î „’©†.‰6M?%•àG"[!ÏVÉ•¡²̉’“HNæow oR_@‘7|xÅj(AÙ”yZbEă ùÏ._:tϯc/œöëñr+/ªm÷̣œä»í6’ﬕ)Ä[rS₫hwXWKôÙré˜Ù*’¡wÍrµa˜̉Æ›ư(ÏÑ©„U‘S£YÊŸ‰Rág0«ƒÆPÁƒ¯e~ê¿€J¾GŸtb×7²êªóÄ ËXÅ1áäy÷ô¦æ&pMOÔŒµ6¨txăÉ„×tô·Í¶\ư¯È¥ư$’ÂóÚi48”N‰ ój»a7gUR‹§Ơ‡̃˜¢7ûqÇÕ̃ïƒ<Ëü×Ú,ÓíÄf̃Â(̃÷’rôc¸`ï”\£¡₫›6|iÂ8­6`Û>Ơr%XœU0$r|ù º]JƠe¡Íq–;̣MÉú6%ïëåÚ“ ¯äÊe¯´$ 5ïø'à“R~%ägùxiÇØÅTæ¨4đbñ̃´?ÏaGùƒÓ\á‰Dâ€GÊpV’¸È‰@Đ÷đƯ§—Ö̃x°ÂÚÍ¥ç´ï^O"¨øH$—ég@©K3²aO}DùăØLÆÄëï=„»|OÀÇû/5ÑĂ*wv×?JT…o›Dç~2Y"¥–̣Ơ N{Ps7˜́>̀¹ÚÓñJPÖ·7Ó‰t-BĂ`3‡/NA­¥Èưvâ§9Ơ=Œ?{₫ùÀKPºe|sL…À¼3ÙÄrwz(”ú\ ïÀ>¿'äË–ïƒá®ü’O+JĂœ ̉6 ÷„.û¥'vä°*ëԪ͓KoƯ¸=¢éürevy—ÛỞßđÉ>.$|N2ˆËr!"¾b×~J¶²ªG‚Ÿ̀ñJútÈcD]0È@³z₫°´ <7¹+†SŸÿ¾OúXă¼-³Û´Ó©ùëĂbuzåé¡[ªŸM•å]ÆIá&$O.NÑGQem㸻b>ÍLé7JV¯%ḳ¯‹qƠÚËTÑ.¨p|óÈ×¹J4¹ótfIÖ́ư-‰i|®ùúĐ›ô…̀ úJØ?Ó'ƒ€’`Uœ́˜+5¸Ü¥2(ö¡ï#O’±q»e—Í¥¼9iê7ÑÈ‘äøœ…®&C̃NÓÀĂ}ŸQÈ;c•j.g"¶V»£Îjöô¼-eÿUN¹µoùk@ê] o<È›‘ÁæÀ¹Yă¼́-x’ɾ‘zBh0[¤»¤XA€Ö7®ND_§½©£üBv5> ư|¹“‚{1ËH÷Ö$Ư)¦³”·Q₫øKœ– ßÍkơZ2Øâuơơëí6ƒ0Ü̉½§¨#Â?S̀Æh-ëÎÂ`±KŸY¼‚öÂÖÑTQ̣æ@…Ưƒ–z₫Œ>/·ÁTÉe¬´ù J6JùÇæu¹U¥êëR_̉])̉®b;Ă¹C×»µ[ÜGb†²Ëă…ܔӫ3ư]nGo9 T<«xrzç.Ø=o0º?ŒëÖ‹ -q¦nߦ€.>Ÿ¤w4hÊUñ¢ÇAÅF¬ê¹;¹Ç†Âậá KŸY§j̣Yóf5o¯±®"öAÈ÷ú¹™VΟ²%°–öÀ/FU%W$\7F¾s/W{œƯsܨ˜¿/ưi<¡BFk›øƯëú†ùÉÚ)q»bà£H¼øæº,Ÿt)ûGFƠc…P¢ûRˆË¨lN6J&ĐÓ¤;4@Ă¡ë\ÈJ́sŸ;V¢(û&jµkIz“YÙÑ©*<\Qsx §ë«œ+¬₫$FăV~ ™²feDÜ=́¸a½„ î§Œ<ú̉9ÍÅĐëÆÙDæÆÆV¶{«?îœѧ29đuæñ÷¤ñµ€j©j½'̓]¹QuûéäjLơ(:=|îÍ(rjE£ øEéT){Qrøè~QTøCƯ·Vá Ư?î Ï91˜&Èîè¬ß9wŸ£v/Yliz¿WÄØ‡&‰«ªn½µÂCxå†î€º‰‰ˆz¥si5H´¸Â.ïè-|è£üü.&Z|À̀̀Ⱥ?ơ<µàêVơp>¯$î°p›̀Ë–çÑ&N~ßøĐee«âđ/»­Ö‡­5_Ϙ›(®Ñß6t¼%Óœ₫ôµï »WUzûÛM¿qê:w¬¥4q¾¯̣FơfƯ_p"9—ƒ̉±ïRV‡h¿5–/霃–´I¹‰9UMu1ë°}̀êËJOTó^ˆ“#LO¹i KiPÓĐÜeÄÖxëñá‘ äÄ'ùÂ3:Ó§føơØj¡Ë­›^L!Å'÷×kwˆØ½‚6Ûßd̃-‘óe&ß­DjÛÁ´iäU¯³¨Rù¼­đ$R}.®CÙÏâ¦*V™±&Î#»¾à´'á²Ï»<¹zÄÀđé4—-`­Q¯5™OÊ‘ú$ªm};“YíV„côöíCö©–*+rd]F%©5).Ü€jwØ{¡Ê3̉Ñ+ß´§ï°úṔ®Më̉ùḍÖÿ¬́́í4Ôq)xyóâÓ~o ïlÇûÏ}»{í‹)Ó”Û‘?-¦ñ>jîê?Nbû”ơZ2 &(3Œ¬ç‚Ÿđz€+G²)Q•²Df󺈓Ù§PM?û=âépYñ£vËGW~ăỊ̂DblñoÉe«(QâgĐÁ"CVVÉ– ́K0]¤¬k+¶íṂ”|*_i)Úf4₫l¹á¢jP³F6ä–Zñ² Od9«bB]ŸÈb[ơfx§ü23JëtI3&c†ükIq.‹é=Úo·ôÇĂ“ÈÁ‘t3z\–7«~0ø‡-£¶s¬ü§̃˜iBí†üơƯfêñp.»¿ÉLM½À·Äaß+i}4<ô½HY¿u/LaŒùud`3U×%ùpÿư!*Ÿ‚̀­g5_ù[Œf»9äx„+rßÊ™®îp+èɦ*êN:Ư2…î÷OƯ¿014ÿ¹:Á endstream endobj 906 0 obj << /Length1 2696 /Length2 23804 /Length3 0 /Length 25308 /Filter /FlateDecode >> stream xÚŒ¶TU Ø.L§H§Ä¡Kº»»»›Cw§tHwww(H HwJw# ̉u3óÎ÷ÿkƯ»X öóæóÖ̃+ªĐ ™ÚÅíí\è˜è¹"rÊLŒFFzFFfrrUKà?bru “³¥½÷"N@#LÔÈd'govµ0±˜Ø¹™8¸̀ŒŒ\ÿchïÄ 5r³4ÈѤíí€Îä"öN–æ. 4ÿó 2¡0qqq¼ÿË d t²41²È¹XmAMŒl*ö&–@Ïÿ„ âµpqqàf`pww§7²u¦·w2ç§~p·t±(Nn@SÀ¯‚̣F¶À¿+£G ¨ZX:ÿ-W±7sq7r@K 3ÈĂƠÎè%¨HÉ€vË₫mđđOoLôLÿ†ûÇûW K»¿œLĹmŒ́<-í̀f–6@€‚¸,½‹‡Ë{€‘é/C#g{¿‘›‘¥‘1Èà/æFq!%€¨ÀÊs6q²tpq¦w¶´ùU"Ă¯0 .‹Ù™ØÛÚí\œ~ñµt€ÚîÉđ÷d­í́Ưí¼ÿf–v¦f¿0uu`P³³ttJ‰₫c!ü–™]lŒŒŒ\, #èabÁđ+¼ª§đ/%Ó/1¨_o{€¨ ¯¥ôÁÛÙÈ pqrúzÿ©ø/B`b˜Z¸Œæ–v¿£ƒÄ@³¿1høN–FĐî1ưüû¤Z/S{;ÏßæÍ—AKBDIC‰öïÿƠ Û{¼éXt̀lŒ¦_KÆzđưoE#Ëhüá+egfàú›-¨MÿĂØíŸ úç8¨ÿ%oÚZ €ê÷’ë2²1€~1ư?¯ú_.ÿ₫+ÊÿmÉÿ7!qW›¿ÔTéÿ?j#[KÏ @Këê:9{ĐØưoS àßG+4µtµưßZ)#Đ!Ù™ÛüÛFKgqK ©¢¥‹‰ÅßỤ̂·\íוÙXÚí-½Vt Ñü/è´L¬A¯gĐJ₫¥‚.ç¿)ǺĹM3;ÀÈÉÉÈ4dbx3nÑèñ×èí́]@.Py¾3{'„_eg0ưưØ ¿€Aä7â0ˆ₫F\±#€Aü7b0HüF̀É߈À ơ±¤#™ßÄEö7q‘û@\ä#…'ˆ‹âoâ¢ô¸(ÿF .*¿ˆ‹êoâ¢ö¸¨ÿF .¿ˆ‹æoâ¢ơ/âYư‹XAÙœA»eélưÛänüè;™XA#3—ßr–åÔ¿ P>“(˜‰½ h™₫ÍÉúKbkû›Å¯-c0ư‚RGU üO&fP ­©‘³Åïéỵ̈qt]ëï0 ầ~CÙơ´üÙ~á?¼9ÿV³±ü‚n¿Y1ưü6gûenïêôGvù”ï7[VP6 O  Ư Ù|Ae[ưAs³₫‚Úúg© Û₫Q*¨Ÿ¿#³\í@§û‡Ô ûßd@ÎöÿQƒqø­s}‘í₫3~V¦¤ÿ>+ˆµh́ÿç¯V9₫^PpGW{ ©±Í"²°₫Vü¯bÿGó_{®¤ÿ5fú5Ù?æđk°Î¿{rrÚZ₫w%Ù~ÙƯ₫˜(ˆ3ès÷o] :Ûü¹pLL V¿Ó‚¾# .NÀ?öÔ7wû?@1\ÿ€ ºưÀÜÿX?·Ç̃ój¢×or H^@§¿Sưç]lâê‘Ë__KĐ‹úđ_ÿû@„Å9{`«OÁíwuBïÜévÇùfÈw5̉¨é¼:\̃Â&S×f®;Ư%}CYÙ£º\"zö>ji€ kMTj{ôy2ˆWÚmCX˜ÄêŸ(:úÜGO§*¸çó́è£` Ù̃)MçèÊùV±ưνWÂăs_Ạ̊hèÜ®̉^-» âSÅ4]´Z”n@é,y¾qöw:8´säÙ뛴܉W"éxZßăh–boí æ˜ûï^«Uª̀Î]¸d¸Ú8×h£S̃Â)̉Øó̃eÅ+ư -¼ÅD¹HïSWèPè˜3k-•#ízêƯF¿2íä%‚)ßơ£ï$Ö—7a8‘(`Ö¶D¢»Ô³X ¾ ¯¶ß¨w›Y¥â/qM~̀"iYù7w{?68® ÷ÓƯ†¦¶̃ 5 owûj” ô à›»3шYèD¬,sg¤BW¸ŒAti¥0P̃/¹%s>A…đz^?à1m12jsB÷€âŸ²åù\ÄøV7ËƯ˜E·qGÓ z b—5îL=?/µ`3̀ ¥ÊÏë₫˜¿K©Äó Ø8TÁp¾QE/ZîI$›°Å¶p1@V̀*%ѳ;_3¡èiuÏUHª^­ÖÇV¨D¼sI7vĐ0(̉Ëucz°uSY)¬yh¯~^í.<³©Êœÿñ«²n—³Bº„P$DÉíö÷xc̉Ua7bÛ¦Xd U¾‡í±®’'÷÷R¢ä”Å‹r}2‡¼a>‹z ¢Å=¸u₫‚X¯›ü™?u(ÜQ½ÉBY!ÏÚ[†$5èjR¿xÁ~§¢zW@êµÖ3?=¶M<2µMæmS­[ÊÚÛ àa‹J‡´‰§ ßöϸZç£x1‹h^SsjX¯Ϝí®B “Âv°0bđKÊ)³Öd‹i1^çs¬¶¼²ˆb›ùjœu?­a\ó†Ṭévi“­‹ „«ư€ŸÜ{bOÎöÈW²¨|—»cYK>—”CüV|̃ÜDœ-)ÖưB%œ̀§ö5À^‰w|<qÊđẴlB&Ær¸ôW̃¶CÛ³†¦û…¬µ!‹óµ¼àơêC¸ÆÆººL!\C+”#,DƒÑèÉ~ص´ G* Æ‘µcS¹t§(§;©«Í‘đº+ăúĂ7H™°C5úÜ.ơd!ÿĐ0ç½£€x›Æ)ëf̣ƯÚ²±¤‹bDîø‡m¯`“Æ÷Đjœ¢jÛcrÆÅ4hĂŒ#Ø̃üÄơD³ël›rE1æ|nBu!jaY†=̃ ¬S6ô ‘¡ÂơÛlï‘.D*̉ÖMh;q˜¸H°4°`NoåûÔî^Ulªsc¡?{9Dô¹™T Ôơüø$ϹƒWvÿʼzư[#—"8A¦£|†l0ñ ¢¤/,„¤éÛ&Èrró“}ÚÏ«:¶U¯­^Qâ~0đh6÷•$ߤùk€P ê±Âø¾ûêÔqP+*ƒË–¸ïóÏÖJϔѰ±;ÚÄ£ +:³é:d¡¦ü=î Jp tÆ5ƠĂQ±®~*åƠ"©*¾^»åƯ#‡ß'8¼,á9ùY$>4'ºb]ÄG̉ÚxăÁƯ•nçâ ͰÙYđ$×ܦ¼pƠÆ0 êrÇ0úµ+™i*v¢ÑjcåhŒüCy¼W+F᪕X°ÔƠỵÛÇÂg̃"¡Ơ(Đ+älX¾oç䬜# :î 1ÏåÓåÛ$ßx¿SÍ7~L‹ÿªcCec^Ó½d<]½JÜ|Pñ=åûˆîæó½«vƯè@%×–£zqséh1 ÁYßú¤ÀÙ4&Óî­W|7luá~÷¾l®^ êy…bDqAE›¼è×H9 .2)YËD¡ów›v6́àảđ±â —¼2đ»GcE 1BB8Ăn¡‰~kÓ6ûwZ»ó ”‹ă`K“»A]Œ2€\̀ KxËÅiWxă¼o"œ½^B’ÅßsYÀ<é/ụl6R¦ô`ô Hç®.̃F‰X$1ĂơĂ‹¡^rL¥Äqñb{Å̃­)Ô ?²¸’)–ö[E®y®cíhg®0pJĂíjB¤c§%{nù¤âăAç™ë¤&"A³ 7Yú«!̀¬îhå6^ˆ{d³̀gèŸÜWCú¸Œ_ wIJrчÇ4zhÄÑôVJ =+¢”êáÇ’t•’¿½§©X±Tźˆ>Đ—ܘÊ…ª«~–o•ር…£UNŸ;Öq*Î|ÔºîC?Ñrú¶×/à¿)¼]Đ S|ø‰0.®&Vp|ơu>#ÔơY2̣S#?¸¶’à8²Ô↠yáÎkJV—N5G/Å×§<‹q»́7ơ¸‡Z”³ËFß¾¨ö\Pj:ùÍ®§3ØØ%CJËæc!ÂQ¥"|ÚÏ™̀@¨n”'đ–o\_>×·Î4^ûf÷ăÖ‰¡lm¡ܲQ‘Z>xKŸ÷S8ÛÖ™́úJë^kâO¦42?t'[¡×SçdŒoưW—vÚë4ém|å·ĂÎ×çö™Æ‚̃ñsˆpÄ""D‘̃Ø&pô~Ú_Ï÷±í7ŒB̀ÓLÉè¦tojÇg3)dy:¡Đ‘mĐßø´|ÈlààåYæD´iđIØ«f8,7ô'³€Ûl; Ä«öëù°Mp£BbNÜïE¶)Ëa8æî‹Ä°pw»âđZ‚*z.Br!̉«ïḿ…ç«á‰R²Ưˆï"Ä“߬®?œ–‹­é„Ư)z°úK†äaúü€ƠxjàY– œĂ@ÑB'a₫ɶxơ´w·)©K2S©sÇ”2~bÂ&ÇUáÀÏ̀!Ư&ü|Ơè̀yñÅœêg¹¦̉û·.ü:5[œc‰Î}ÍÜDÊd\źá¶5Ô–¸nC‡Vßn4Ê"e{•…ơ ”…l:<>äÍkesb“+­…Zß;]Æ8‹€Ei«Fn|çWöÈ`U²Ñ·˜Ó»f˜tz$J¡ï?X±3§¤ÙB#¹^º<ê"UTƯï7ø~Q ÿBpÁ³̉)Åàç±ƯJÀ78¤¯ OÛ.ḄĐt²Hv)‘©ĐkXú!Ëæ r°úcy¢ ë&OÊd„ĂÖÎÙ½_ºWˆjă›ø“l:•âCñ* üf¨»B¿dß7_2DóÀªàR¾Ño¹æ̃q’®·üáQù9HŒQb˜g¼sYÉ"¦| ÉZ•²å<…'‡7ÎñƯÂk€‹¬S¢f/€m /Á1~¾×qº8@`'r̉‹ID…¶ ¿P‘©ç!pB…y ‘¥R:Eni88Ù†êb¦‘ °8¤´Ë`ë Ï&Ă®ñ Œđ¡îY^X3L©̃Đn™©euVóí́ëƯïùYƒ¡˜"IÑJ>₫vO< .7«µ[6“‹+C~`R,VÛ|Lø˜É'¼8*¥÷Î_†é@z5ÓjñvTG)TÖ¢B‹n7đƒÓ‹§@NQK¢üû$!T4¾Tù¶Vdˆ ›ÂêúÂ]V¥™œó́,‘¦†Ú³ïÓMcS³Voc´>¢ÿ́<¹Ơرä׳HÉW¸¡±"ƒû/‘<aŸÆ/ưâ·¤›Ựß~ Đ[!E [„­@^¦±`Kç VÁy&h;©ë¾L¬ÆÉ†Ï0ªjđ§ĂḤ3‰=´±×o£ºŒ…qk*%]6œŸ´Ọ́¶Z6dñ±p#¨1l¥”²É{öÛ¨'̃mxÊ¿Qü6|́T#V›vÆ7î`t °`q¤` i˜Ưt¹íp÷đ¦ÓƠs…̀é2eơ*ÙÁ̀×ı‡–­Ûóñóª̃÷́‡ww]ÇoỠWƒuÉ£̃³ä–¼̀ûª̉»LUcT8$Wÿúâ8 ƒÅ_åz°ÑK'Á¾yÑë”’)©­K«vâ¶ĐFˆ4éµ­³1"íIî/¯ºƠü……§FóhC ƯC:á‹n†%ø–Àr{^Rp%.Àl"èÙºY™₫(óúÙ̉À–rLeû›hÛè¢çG"VÁ­ë9‘ÏƠ}¶‡ú_j%\Ù $2aï™J‘]¢f_6¢G·Î6X?Ö3UÛ…<̣û:ÀĐî™U˜sY<”ơë ÉƯ.èO·HÈÜđ°U¹µAíH99 •±˜ ®k¡ZºVù[Ưé¹́˜:;FÓrB9$½¾á^2%„U.†\$ ¹ ¾9¢«ˆ{A½ƠjTQ4Ôj±5Á¥3[êú §²Ă%“€ŒÚ«*Sn¤I¶ăn>”øE!Hg Â#̣ă@P¡'”UÊk» ›li…T—I£¯aY¼—èºÚÄ·8÷6­hÚç*mîñ³ữ‰¢¾,¦ÎËF¿E`×»pC×;A<¨ªc"̀¹•đƒ†Œ~ư%öw§ 9S†Fçùh%ƒH:µă(†Ó_GÅr ¿¹ăuC¾{“ïµgy)kŒæk5\·?$øX±ëÛçç¼w¦ñ6}×.̀9&Ñæ­÷ÛZír¯«Èäa´H₫æ}Î":Ù)ÁÂGÈ3C~€aCù7Ă”‚ÓƠÎ!ç V·‘¶~}Ư§4 ˜sÏJĂ›ẹÆf!´Ëí_ׂśIà£KƠàÛ½¦®̀˜íÄĹ6ˆçM¥óö k>x®6WTMB<Đ´C ß¼² h2ë}‹c-“̀+Èœ¿̀Đït”ÚÊJS;¹úđæ¶8!a’ƒÿ˜º¿è*]̉..¢µ¬ZˆƒäĐ[4T™—ÙåY®oàç½ón‰ÿ£5—”æÏ³Ậ¬)ȭ׉çGZôÅM±ẳ”Aú›Ä]“=$4̉Ë*o»–´káđ Ï¬–‘(¦…¤ßĐVî…w¶´Á¡-¡ñ]§Èçï’±»}RÁSƠBưHºŒS#›úÊ:^zº/ 6Ays|Ûsï'mª.!;÷v˳Jâ¥hCŸ¡¹Ü±¡jèÜ"ª¹ê₫^›°Ê+X´ÜEđ Ë--#3÷@nAßWĂÂpG®=œÿu¾`èơĂ&păD]Tú»Ojk«&²ïT©ˆSÄ v¿ê Đà¢Î3DZaB’¢/tÉL»̀Í éx¼j^Ó[ñÛƯ}¼ç[ưÙDH\?Ẵ—E„UÑ́^e¬ç­¢n³ØĐ˜ƒ è`5km²ˆ]¦_ø¬ A­¯=EGbçîûü1\[¾Y sRügí-¢b´24°ÑëÛ́Í9Kû´.——“—­M6ĂXlñ™ƯÑAj9>‘” aÁ‚Èjs(́RˆºDéÁû+7üOÜCêCüßK¸h¤}±fuI¼0áÎXÔ–¼ú/†\wij̀ G‹B®׈©ÅâÂ9‘ŸÔ³Ü©kÎÍÑ#F0g¹7L­H‹[jW0Ă-`‹³Úí‘èZd %8b·Iª}”&Ă ö*vÚ—^Î>!¾…½²ßTĐ#¹ưÍ*¾Û¶—~b9‹;WAdîåĂŸÓùlÚ´ø$¥»̣‹°ÿËäx ÇÿéÙfÄå«ÓT¦Đ¾ÓKfM×TÍ î¨´Û·÷2D>àđ— !ÉêkqqYiO™JÁ :+k¼jƯÜøPKË&´7äơđ'̣m+Â*l\¡wAƯŸÁ£+rHzæz³>›¨¶¯îè—kôÁÁ,S}¢!D¹ĂTƯPcFD%n‡ècÈ;U÷hyó‡R`;¥̣™J‰¼3dđE ³€³{éØ\">GdɰâÑŒÈĐáίj«́*FƠUHPơbơ®<`œ;c^˜”TäèÆ®%<ÑÚÑ¢û$>„&&?¯—1(üq+— Lï‚™œW©eoëä…₫&áöáèq_áé̉€·i‰ƒûT0˜åƒå"{8.§Ä15o;¯_v½+>Eƒí¬€ª€v%U¥byẻˆ[û¢g ö zÓ₫Íj™{¸¦Ărœ7 .&8[S–˜r¼ÿÊtÙ5‚ƒ…Ư1˜Êø@ç —ŸÖׄ+É#¢Ù6=#‘¡îc”ÏdØŸ33‚7ôØîQJµñ¾¢ûÓ·ë߯E­¸åĨWÅxËÎîÜc=…±”>ä×@4º¥ÓψAX£a§«o[öbØÛ|KS}ƒ!$á Á@‚4đÍbËÏßé#_÷» u^ûÜÓ«ï²ä…̣à3Cî3è̉j…ŒÆ9wø"K Xp,s„ÑE÷T̉¡ ‰ç”¤f*ƠˆzºèpÎG]çr.MHB5sBVp‹‹4̃ÁXóDÍXF$ :¥¼ú–\Û7´Ĩ¡ÿôè î‡*û¢‰ëX…7î4Çö ă<}«¯¢{Ă®gơtÍ(z«ç̀₫Tûx=Eđ…ï;–fîGrI÷̀½…­²úđaÿư¤êôéî–8€jI/‚@±±¤Wnuô{÷jM-v[:²têVYºÄâË‚±@¥(ØPÂ/™ơ­“×8+ÂÄ9ëcß Tl¨xähƒ¾̣Q¹<©XÚ̃ó¥YO— ‘w/hQÀ•]C¶;s}ä÷²3–µ´Ø‡̉B‘́ÚÈă.›"DˆÀS8,°\§]tr M|^̃èp—½Fø‹’WÈjç"¶•ˆxh1°ÅnJỌ́Ç.VßơÔ6ú’à€aÜÁs‰m5xJ)ưLƯ÷w̉%$ö3̣É™ ëC/¬ÎZxĐÊ7.9Nû ª*Éî‰.ï3 •ZÖ„øEæTiFtH%ëúŸ|»w,P•¼ŒF«lÏ* )‰Ô%#•¤™j&ơÉèÛWúï¥kk¤¶lº‰¥í¡v_Œ }ĐNS¦½F(x̣•‘S…6úȇ_AØWIRçy!Z®t˜‡LÚÁc¬z[Eáٹήfü₫+½E‘T88Å¥ÛôÉ[¦R!‘­¡v˜­H £Û°J¹†Ô5™óîP×ơs³ä±§fT» W/̉mßöäă{~¸•üH·Ÿ¹Û6ZZ¼xÏ̀?ˆzˆ#H„Ånë Ñ™j́*¾m*í¡Ÿº[ ZÙt/›cŸ©Q~[#D¡©6¹u°”̀~Áï’F«41A™³â²>¶ÑråàR<ÑƯ$hÈ×0Q®täLÑÂAWƱµD-dvïGªW¶Gnnøđ}”Q½¯kĂñˆû¾uɵƒœ¤̣‰Âºñ:‹D¶y¼Ăv‰ hlY0™rºƯÔđmfQ{ü¢.²ñĘ€]…lS´ôîE~t⇃®çưÄÖ#^¾HǺ*·¡ôB_ó¢ĂD"ª4")nx³u_ªƠHد¬̣™q¤uQ>ó9QáSX§ö ©đ8N˜Hº:&Û«%ăÑPiH©";B₫³*.töœT Ûă„W^%Z",ŸÁæ*Ÿ‡öDư—uW28ÀÛ¾½T‹uX mST†+¤ÄDF×÷?&³×7Ị̈Ư\I$IˆŒŒăÍ%éA£]>ÎQ~‰óÂy oOÿbÇçỡé‹h¢ơs8ö&êíQ¢V­´Z“ßAå·#ó”ªÏÏ¡ï×>‘MHVNí9B qev%1ÀÇQĂ#è}SO†§Ç–+9ëƒfÙ ưàvªƒ ơA‹Í¼"ȶ¬Mwû]Åå̀Ú̉&+ÿα¤fv˜#ߢú́1É` ́©ôP[2Q w p½Üg¥†’TY‹“|ãIÉwû+jÛ§—-æY\² ,”<Å( å‹̀ÉÉÊ]¿hŶ̉‰xëø¤•R₫øùâ ÊÚ5ÍƠ«́̀ÄâTYW«Á“í6ë*3Íá3€k8Á¢5æ94Â÷₫¡x׌ℋƠ²9xÇw ”–r)<†Œl§ºîk]y¬k4~v%nÛŸÉh¯[j,fĂ(Ô :züíqơ£ˆ¡--3¦ eơ¾ÚÓ梵Lw–ØRö0{†nUñ¤o+#¢dü%₫DÁÇ̣ó®é`%Ö̉V™çbëx̉j/Vđ®\Ăơà¢Í)9#­³ܺ4"Ê%Á̀ö„-´çí¥ỡܽ½—¨ZÖ 5rµñ_JĂéjÍ~Q̃zŸAíFëgÈ„’›È›‰/„̃KÆø̃­°că=B{ôĂ³|oëăà;Í]*ÿ*ơưaûåB¡,ÁB ?’R…µ„¹ßœá©gq§hÏéÔôjëé§‚BË—̃ àăoÅ[q¼²8¤Iö•óøÉêí$ó\Æ ½#ûÁùÆÙ‡“B9Ê=ªxJ˜xÏD@ HÄ«x™ZFÀ—„đ9¡¹}©&W±ƠaiS¥Ùé`ᣮ£ ̣"öđüơµôl3‰/‚>*L•ÊÉÛq„•&Y¬¬Æ¾ơÈOÖå–¢Ad–ă(pZVöô¶µÔraÀ÷̉+7QT”RZXÏ–ơnûÏäYî;M©\—éÚư¢¼Ÿå?0m̃DÊ=»»ƒq_9‹Ô%¦z¡È:™O­í~œµ™óÎ! ßÚç?ºÎ6…ʾɰ¬R. /™17µ9NaI?bÿé˜$Àƒ¦Ï}ê-₫tdÁ¯O–œEMuô¿œYMK€aÿ:<Ú½x}üjñŒµïôÉkê³^hÖmÄŒJ±LßyḈhó—…°LçÈZ¡I™ơbóßh ǵEÊp(³&ĐM4¨)ûđOñ¦ØvñŒXi}uÉO÷Ozת.{ԃ͆ !É6hf.a$¤˜äÓi¶äçÁ²Ö‹̃U‡>ê_h%¯:#QüH–Ê,ËQăÎäQ=Í3ÖuƯIdj¸ï-v•Zº́éô)kz*ê½Ü +ع?*¡±geA‹\•VX½¾ë]Á`â4}å™đƒI­[NƉAƯv4¡™ê–ÄcüRN#íjḍlJ*+öÇ*n#t¢ºKĐáGßÉm(ö9Wes¾[—£Ÿ“½öYt£ŒÅrfÜ•Gª̣*ø¸vƠ‰ÉÇ¢¹gư)ö³đj§´ÓiV´[0™N_á9Ÿn`r[Lñ¾¸½<‰¹•ÇYà¢L¯O!W¾_D]ÄI“jK¨Åk& XªHöJê¢!D¨W:Çf¡¨æá, %H‚Qa‡đ$vA^ÄÂ/ê²£[qp%:ZÀG»9+–Ị̈•aôO÷›jL·¥a,LUÙy_g̣ƯV“E±æù º2̣µf̉"Ïc•{¶¤µÇđçydú³´ ˆÊ†Xmf$A¥ÑNÚ'ÜTŒăä-7Ôfˆ ñ₫I©ữđ¥E‡©,ov˜m;\ÆLÉƯđ ¹ Ä`5꬈¸úçD8¹)Tùó©…£kŸŒzd# yxGq•3 {­íC“„î·–̃­û'÷!…xÎóCWéZ̃ ¹ïøñø̣³Ø0Ζ} ÀY)ĂoDÜsZ*‚jhă»ú!¨)Ÿw̉÷$Á̉d•”ñyÈ̃Ü”J»øªƸOSI¼èf؆w¦¹!6Û‰ÚéE¿ú¼`Ü̉nN‹ûĐ_Í?q¥Ëpq;F÷X.v]®(Kª;&/)övÔç¡+J|œËørÍ¥œ#"àáiÎe’Фb+!ª̃tŒÆJ´?(ö“«W?˜Ôg&XsüÀo«¤ÓêÂe~U€ÅCi§n%[s@*u@ôÖ Q‡ÍDcœ₫éó½N¿‰UĂô¹đŒgç‚€;³fç8qđ]ˆx»Åă£nPœqy®W™ {æ–tÿu”Dˆ Üÿ˧ç Xç\ÔÇñ:ŚÆ4#Å&”Œ`LÙ¦oÔ´™₫±¾ «”]xz “tÁ©ư ⣃ça—mDUÀđÊ4àóË×&àGä5{Ñ ¸ß57ŒS¤Lùq+¡aÈ{kàÖ)´¡3î] üÔ.´* ^O<ư æOB©Ë#Ó÷¥z!ß_T®QcOl1ëĐàƯßs’ÔSQ×5ª…đê.6êX½.&ç̉²Ùx àCW7\óyÊ«dÙ; ñøX:ßâLK Í-̉sï”*© ¥©P¦„Ǥ úel¤D̀ƒ7•KkóÏJĂpr²rû{F¯À‡o|æv[tưW» |bƯUux ư9óyªH[Tú́*£Zô}¦ïY¡‹9l‚j½/b„îLÍv x8H7sª8wÂüØ#:Ë,̣n0ÅmºÏ®ŨơØ—MW»GT¦”®°|wF«̀z¬g%H²z¶v%%©³/,ó˜~ ôvµ&ñ`%Sq¯e}ÔĐlàĂnniË´osÿà@u]%¢û8½+’é†å@­ C˜_’£†h ±¶kƒ8ÜHÄÖµ8N•™ ­SGº†‰[°YÙơÂN‚àfă¸£²™7̀Çc¡­/rọ̈g”“h7¦lw Ç­¦¾©Ç̀+²5k[£ûdjÁH—7́óÚE•˜ ±w;"»c¾j2 ‚˶µỢ,¬CYWŒ„ÎH;%–ưTX‡—Übr­a3" ³A‰ÓÑ-æ ÔX.ÚóS¶X¹:)Ó+ûñkT¢h‘ ñ~{K›°Tü†–'›§±]f^ă†ºy‡\*á ^yE ]„µDNÂYÂâ¶“ÆÙG™÷L"W™Đ\₫d¦ç÷*Ơ­:_ưÑk‚ÖäˆßÁđ±LI^ Á68xÄ60Bn¯RGº5?Å,=ÜqeÚ½´-ˆ/]Y¥ :=agù# xhÔ2ÛÏØú×̀¢?aàÓ|`̀íÔ¬ÍĐHb¤£RÄ̉­d^'_‡ÏhuJ¥À¸#1jÉ we÷»]¯‘æ¥₫0Ó¶ø¥v¯æ¦]³ä"Öܽ1ZÓi[“¬BĂœÖ¬h$//µIB‰ØÛĐ̉äî±°J3 Wβ›Úư ÿɺSÇơưà™ÅRÉvÚ¯#W1ÿSÜP®/Ú.sÁÄ$”2– v÷Çl̀m×jRQFưs>}/¡*ÍÈ~ .«¥ Û́©rÑhܼÈÖ._`¹n›Mú"|$R+½P’Oñ*‰DÍ—Jÿă×–ư¥²7B₫ç/‡‚Ï„±0¥¶­UƠùÔ„9 /vĐÇ̀¨¯’₫äQZ£ñ nEHX&éúPqŸZî!Z®®Ï–|̣$,B§ƒçp;Qé¯}ơußq;ă\.¾iX‹ejb9ƯŒj³XtxÁay™1h{1đFb'‡ăµ1S 2D*_H‹ ü[qΪ^lă( Oƒ|Ây8G4v̀²CÉBtƯ;Aô¼c •çű(ú–Ùn–‹Đg­,.óAô9ÿ|[ÚRxøf>Ư|}̀́"k¡ -ë)ät˜ng¯MâÎ(–fä$ZH:RĤ n”há7i-ÍnË—Sú"èE„ƒ€NÜj0æư’åáä,µOæÂÛóSƯÅl™â%‚G…cA(ÆÔî£vû<8³$¬¿‡&-x]?₫ ÚäơkṬ€‘m.LŸ]–Ï/¾‹EEQÅ&«#6·¥“Óz’g qQøÂÍ6r p ơÏEÀ?A€"¨«vs†Mq.5‹µL¼¤uc.»ÊíK^ÑÛL~¨Eç½eº¾O“¨Ö¹Cswå†ǗR9åă$JëÖ9EơvÔJ­´g*i^IJ)Í‘ÚĂY–´ 0³ÔÿCÂ`ǹú-Z°rWgoñqW4ßeú¢ø῭,·•mfHm̀Đt.¢Á»ûñ7đArF5r̉]çnvßÈå¨ÇJâYÜE¹à₫Ø [<»)>ÔP¿wé{7ƒGYcM (R*ŸmÎ-Gb!ü¹à6TîZvÈ•`Öb¡2Gú¿ăaGó®|à|÷Y–ë-–8 ><¤à‘Ml´+}†Ï!‰ï>"Ơá¾y“êûe‘*›‰…†yv—ʃÓbújöOµ,̀5^| 3²œ"̃â0MË.‹i@²J¥Mät_}1'‰@jÑâOû ÿAĂ ¥â†³ÎC̣ímăÂâ¦íY"mKËg~;\è@v́Ó§¨±•öOè—™oZ¹rcÙ·iaǦ²ư41Nøƒ÷27œvïưm2B󤱒“sv7µU +\¾t̉}m‚ï”OŸ%£Û8́ÁL¼ổ0Là ¾!c6¿k]ïmH"D3–ÓT©ÙÀQÆ¿Đ~¸<­çiJ¤‡²ÏØ¡J,›Ơ”¤Să˜4€Đï¼ë”Îi©m̃)Ơè:Đ¡±@&bíz8D¯$M/ "_ÊÄæk¨©j‹Ùî^uđứéH®¹đÊƯ†CŸ€ŒÀnĂ"J„ƒß› ˆ eÊŸfÿh¶=Ô (-‰Ïeđù8ûí>ưĂévúmwÖ±¨dE¶Ú¸W»7u k¯ÓæŸV¢÷Ưµ÷«eS'OÑƯ…x«•{̣5e#c惉F&ëuyđÊSh—÷Xư"')u'¦E©S¢Íf{zS}ëB­̉µrPÍåÇẁàYƒ¶|>7Êq8>Ko˜ÛĐ †©åzSª?¹B#²-e4*&ô•¨/z¸`“Ï!¶s=7óbú½(ñµư€x¼ÇÎ4®nZ%n~øb²ÇÚkma nđ₫̃¨îöMíZ3Ná¡3ÍàñÇÊ:nôe‚æ7¹hJ½Ú©rA6ăVVÈIê¾ù;ÉIå~̣_ƒÎHäúEs¬p§ D²ƒÇ©̃LŒÁB>wSḶ•ªĐ3¤B˜ûƯk¯ù¡_"‘¶ àc~‚‘›ÏÂ"Ô6,EKjđ r4Œ$ĂPU\ưïĂ(B‡3˜h£s(M‘¥­&‰§ň^^-Éü…Ün}-S¥Ç x. ¶\ÀCêOxBôó~v<µ猑º2ňEô<èÿ­ôưÏ€ó=:̃ôË·ÄÍ–Btí49„kjçENưË…Ù² ùŸ)c9ºê.ÖRIp·è ±M²÷“pèë́~(ÜMM áîxS®Äåa&맘5“]Mh/Ø̃á l…rˆkÔ\L{$„ølVâûđokN°pkOÊŸ!ê½¾+§ĂÅS̀ F…–§úƒm t5'áHê—ơËï¡}¤`r3èH+Àù"R₫â+’د́9d ½VA€ƒz¤È6áF;øÍBxɾ¹}JYÆÿ³øK1ÔªS#T÷]¹2à¶…®¨³ĂÅÆº|¢LG¬6p¾Ávøz ˜ư=K«ALrÉb{{„ô‰h¸ ¬öëùVÔ ¥áƠüFDzŸDĽ÷5ä₫N»P´¶ö>‘œ/ÓœCBđàÔ›Cä’÷"ÙêŸ"ùêfBy£̣mpĂ?5ÁGôá¨7©[×ÓEÆç(OÂø|ŹÙ+ ƒ¿("~gs&Û¶¥ øY%ÿ±˜>lp™tPä©ÈiµhY‘‡¤–{ª–7k×uU’S¦_˜·tѵ۟Ó9*>4XC™‰Zu¶] Öp3N:?à]EzM‚€™‡Çä¦)[°+Æ æ©ÑáđºÖÔ[_¾Z¨Ú¯~}V¹âơ6p×ö–y¿©L28Œ©̃;6ÈAB‰“Ó»A¡àƯ°*₫hÁ¤f¡^ÎdÇ kÙqpoujŸ~¾ØÏTikEc}¬¦¥ÆE—+ƒZ—£‹j-nåq£Q,±ÚÉQ˜B6£:™"S&pß/_ßöaôJAp29Åvnb°3p<óƒ‚#œcM(=({axi s‚ào\‹1Đ³.yr!ê9 '$]Œ.qÊSktÓ•#z"ZÊl±¹–Qzo₫ƯƯØEˆráiL¬ x«*K*¹© åô×|„Äë2ë́xW ON«(_MnÖ¢ùR¸b‚y;Ư¿I®a­ÅÆs̀­UO$¯ăĐƯ_ BKßÿËM;„¾§(gÜC# ̣]cœ¨mJ`]£]˜PRÁ›ŸPX„“#R¤÷çCÈ–JRü³Ü[yÅÔô7³¯7a‹]Đ́4ʰGq̀ÚH¨ÄÈ₫ïú{ù÷é—j8aî²£=ơxư¤‹.<Ă8Tü¹{É?)\Ô¾‚e[¹5*•NK^ÿ™¬̉»@^̀((äCàa€ «k§[ơH%k/´NAŸêÑÀæm¸mO¬Ö7ÍV„âJƯ1á±_{#VNÄå0Ù*“'HFåuôb¥ƠÓÁ¯÷=­ÑFîÇùÔ[ÉwĂñµ´~WŸÙ‚ư;iO¾Ë–:iñÑ:~£AhwW~wû¢sẰz$üöƒ‡iœLÏYGK>ù!—~à`ÇÇEC|ÊqèĂÙ·mw̃Pô|}'¶_[d0×¼d놾=—]‰·[Ugó]ƒ¿}—|z§ƯHu0öq5̉rñ"øỴlC98ñ₫©bô;×jµŒÁưi9¤¾¬qÚñ"¡‚­ˆÜ™röq]R|R³àˆV¾‹ro3Y‹8nËUNüKZ0—|/Kg·‰[¦ +yºW߬­ä—Rºæa‚äFŒÀÅ3:'BÈæṆ̃ùüt†Íxkn@²y2]ƒ%ĂNøư]t|s³J̉¨J’à@aĂ  îøöÎĂѵז®:®áçøçÁ>,—‚Í1üÏzĂ—˜ vˆ¤Đ}âN ñÎ-\XQˆÄwÉñé+O¯Fà)‹ZƯ—§"̀p*Aw¼}tŸ×ó%\=¬ŒÚ .Ÿ6a›¾™OÛ y¥…½úÓVÓX¨ßÎÂÛû7dʪJ03Â/h¨[™‡¦à†$rƒgÇ$ŸÓ[6ÙÍàLO-ij ñ.{èfĐgÅß -´X©|u7‰É/U. xoÍí8ú™öSÿLÿö¬UYñAÙt:“vlÑæf¿̃Ê))¾ÉX½E‘n¡¸Vÿ)l^]‚A$mç8w£B6Ô„̣äKŸ' Ϋáêu•sîÓ•9 ¦y›ú&{đ¶±½ ÆỌ̈0Îg/˜D¹¥ñEóó‹x0ùT;«EÑư¹§}fG°¯³·¡Xz„èƠŸ`¾Å‡óAP:ŒÎÉ9̣́7ˆÎ;̀¶©c07…ˆ™^T¤,d"«Ă=ªG (ƒÁFéüزg¬­Ăw"`;h i"T‡a I‹L^Ó×/¶CkƒÆÜm7¡YS°&ă‰cí÷Í‹·x3û€4^D2dIv:™0:pđU~í5oC›̉çơ gCÙ↤ r₫Ù̃\q2ÎÛhƠÊûÊqAF>€̀¬dỦ&;ă`Ê$à4sÔ­¹´â%²P̉ú8¥™r]Ú[K̀ ĐÁÜ|¬vËÍÑn₫íwÑ©µî\³mÁë|l‚ÇqH‹ƒjg0&rîÎÈñŸØ̉¬¥zµ"èi!rP¿(êGµHt[ĐæĂßk®!Jó·~ø ç?$óS;´÷Ú-Eơ°™ Ëf4 ÛDÿ¡¿ ~ @%ö†KsÏÜá0,đjP?´I°+Å‹-$7#×N k^đô”§«€~80̣æçm5iéà|ḍ¹Î8§ºĂôªo´¼lU¦ 1‘G ›\$'ç>O#6|I[Èơj>‡—é'Ô!”ÖJÅVÈæµÜÔrơéF|NYï¤Ó†ZN¸Ù êÍ)AdqHe¼ÉZiüOAy>´}÷xd$}§Hă>¢̉·ÇÖX½$`; ̃H³ +]ÑcaÏÊÈYø{û%Dö“niͤç¬ÏXl î÷»ój E]Jÿ\,ˆ…J%ª·ø̉3üµ@©#4æUw>Yª¶r ÷0;é¯B́€”Đ“—+ù}•GßOÓr\,×lâ„B7̃å-—'} và?褉jc<·rŸÛ{gÄ̃*†§¥ùHöÅ\V;d¶đj¡rrùkŸûÑát˜± R1Ä;À,‘¸‰CÚ€r™3E0v,#ßU«)Öÿ2‹y‚ÙRÀ:1aḰ¡³të „ï:, Âi«ó²X=®H"‹êBxsÀ–Âđ§zî~aß§M3_ch<áÖOW´6ËÚÆSÀqÛ1HKx4‹Ö-Ó[‚›¯RŨ8Ú{×̃¼5•o9Ö”ö6¶`yÁ k×Q \ŸB̃vO5…]>eó*̉AØg~päaèF…eLG¼%mÉbƯ¤åíEÿgŸ‹ó»iÎÅŒ]ØëhWp™ƒ—TF¼km²Zx¤dôØrÏG7_Ơ¥m÷ß÷ñà:=d<äüă.ÀDE₫Ÿ<|‘-üÁ‚XFơö¡$˜®Pđe}p‡æ_p?Ư/.Ó#¿"Ư çqlHɼ¬e´~(=œw¼ `—̃úäCRï?}¡Ïă”°3Ư g{k™‚çß±âHØÉƠˆ«… ¦n˜:ééʧèMđ&¾äeáv·̀<Ép"*ƯXüän¿²"Hœê÷^F IÜ9äoø/Â<Øwß7|;LöGgÄS»,\=¦j5·2•$¸4œ`k€È₫FmtÂ`up+EWNTl%àæKâXMO0QË̃÷‘]‹W:;i¦ æP)%¯̀á6èDÇ®ĂÉÓn7Í\\¢v3KT9BéÚ#Å6¬SF/Œº£tè) /-- `Í©ù§–%đÊ,^f/ú‰Cx]¢:Ö̃Œ₫'Y`¹W¾”gmÑÍŸî­)iÀr@=¸È Ư#˜tĂ|xÎg(ăÈ^ÊNâÜÓavúmPwüS+÷̉Ç·MÀ·”xpùÑ"›±íÂà¨&pƼ\¾¥ZóƠŒWs~sz¨à§•åÙœh 1Ï]s«¾Î 9ß°÷âĂGüc£(P\X| ú̉Đâß6å³­¦÷“±ñÙ„8€«$eÖM€hṛ‹¬b'î ñ¸Äªp§Oï’¶ĐO˘åÄ«K79d́}ƠÖ(~Rñ‘¬«:°£v_€R{í76ØÜµ̣Ơ èŒ)̉CL ̉Ë¡€r¸´+l¹,ug ”ÇÇ|P…‘#ˆˆ́} ÄdØm*ˆÍˆÚ5×ñ4hIO?ÑBÁÙà₫ưŸ_¿$– rXÚ'̃^èđóL C9ÁïÍœ.ºrdr^}o¾Ö¦Ăôëâó–â–i¹qsŒi#đƠÆå¹bå kïíH-m¶øŸ-ƒ §¡)gSÄ́/œbBoLÁ»ŒƯ31¾Ôé¯r³ơoÓf¬ h܀РóüÍơY‰ YJ6Ä»‘Ưe!cĂ™@9ÓÖT¬kU@ư¿½ :¢È†êƧ#;fû ̀7,IÅÚ›~¸ œ&Œ,óP₫'́¤—#»Î}£@ñä&uíø-ơû^*ŒS¾đꫪa5Ÿ|3‰H=f_âñ[îë6‹.S!ܳ6óªol³́Ÿµ̀ùScs|ÔåƯX~„â)dpoÅí{MơaƯ“}£SÀuÊ€áÀîàí>Ú² ³@5];Qđœ.bîU31ZEiô(üg–¶(6ïÜ·evâ=j̀·Ê¦ƠĐøơœ¸ƠCûëJVgƯÆư5cơx]’ª6Gr¹­E¢7»DÖö±••EDüg),E]E4â½à…€ä–AÅ:”ÄQt›.hÛÊ"tYFÚ[j”¯¢¥û …‘Ø;ƒ×)2ưëVˆẨí̃¾6^< ,qªÁ' Óú± zï2Ïr÷*Eä¨xpäáëĂܲ ê£ú#ÿ)¤%™À­´) ÓLyó/P„!”27îăJC$£ vî …gNƯ h¬$ĂW>ÜG* ›Ơhnο­ˆ¦€đ‰5~2vé܈°ƯÇÆ=Ô+ÂĐ`~g­ï¿€¸Í$–̣ưƺơåĂJFÊăyăàÀ~“sWˆ_„J«>a>é÷”¢æ^ ÙZ¾¬Àă“Îʑԟû6˜ƒ³â0HÊsỦ¸‹j‚¥Í,÷ö“í "œb“̀¦%Æ[¼Ă&èeX{„\Ñr±CđpbVƠOÂ9̣aÔwBª°ĐJwơj´́Oa ̣™³¬’´;:6+€ ú{+a,xxưaư,œ –ï++pi h‹ŸºÛ[[ÓƠ­÷®²DQNÙ¨ -f¡O^oÉ5;Öađ!§̉Zæ?Ï`ˆ6HFJpoÆềÎÂ7¡WÈc †‡Ÿµ2ü‚«Ơ ñàb‡vi§Œ¨4đHcs“Æu¬4YK±Đ[î!›ÿ®"s§é’ S|"SĂ₫?­¬6qOû~ÁÂ*ôyUܯHN©Y‡Á·Á‚?ÁƒÓ&·^ŒUHJùM‰¥É˜Ë¡æ„×f̉TÑù±HY?~ë §¬èG³_»_ :2 c‰~z!¡BẠ̊½FñƠG¶̉èÎzu™₫`¯=¨i”wt3^ET…±}±jIfŸíc:åÓ¥,£rº@GæHƯưq«(h›Eơ Iá~\ç±4É–ÂVt9̣1Æà%Fs²̉Är?_,`Ư;€_ŸAl¡Qsg6Ô¬-GØ©DKyÍîŒRea£sU¤V˾]G›;tî Øñ=D~m+ä¢đÿÀé·U@èpIz#b’Ñ—lh-Ùÿ ‡¨as¾¬üƒṽ«´°$¹0.b„ 4ư@qw ̉ïL’ÙeÇír¼~B›q3gäצ­O`¬p•æ_”®32Ü·ư pL¤̉_?6ˆ¬ Q)_Đø»`¢Æ† »YÊj˹Ó~vÈd—Üd^Ú@MP¹&f+ƒCfͽªÜ鋆jÀmf'ªÍç4~VOR`Ñ V¥ˆ{exüÄîVÿviQû\§¸qwÁ¼ †ƒPF ä>ínơ½ø@B¾́²̃¡ê«öJ—Ưsæư'UªwT8‰K¶ öW“p'0©Đ;°ÊÄ¿́½ßW×€EKéEè&²mæ¢H„In;{0̀—®SRV¶íˆ`ôơf@E ¡sO#±Ÿưˆ©ÿƠàú_â…œ8~ưÍ+y -øÅlË[~ ï÷ĂÎØfK¨\…ç₫=îD¦v¿> y‰Â2lßf‘SèÈ)½Áó¡A—‰¼¡€÷ÍGC¾ ÓĂí„–ÙÆ„Teb%Iă Ü/dˆ s̃Äóm昫 Ç‹î൧ ûúó©$K¨ï.¶“l›˜”8ưƠê†çôR¹Ưp›,tÿ!+`)ꙃ‹¥¯È₫²ơ@;ø´V[¿B5£›Aéƒa—ơàæ©ÆzNî„c ?Y¬R®¡hŸ¬u£Dr¨•ÓBúHJ—ßÔ»3»̀Ơí ơ đÊlƠÄqv¦\_fUœA‚2é—ă­`Ⱥå]bMÄ?®ÈÂ?nWE¦7HÉ2èIˬ*¡cc_‘$m‰¾̉₫çlđç²ás‘ûcV½q XÔ•&°UËé̉ƯÜÏ€Äï• ‹> ƯéóC}1'Ø*y®ÊÁ¼‹…Rûè•â,ă#nÁ₫v%[Ñ;!Ă9{ Fº»A16?k?4t«ă{~1úvÔ…/G?AÉAL/4̉„)dwG̃ĐVd÷G¤jíKÏ_h ZÉÈak,y} ‡øÿˆ È™ÇUă¼¸yt¥ÍƠ)”ÑÈn=wK›Åơ*^®¾d³Wûô9hJGmf{Ü)jâ:lµû"₫“‡:Ë´!đ±UèLÙ‰K«PÈ<_±'̃߈́‰v²:‚úbÉ Ùwª^bwŒú($#<­;5 »ü-d]L;w÷áuË[!c"6ø 8â§}PĂô„mºk¡£²ß ̉PAósaÔVé—‡‚"ƒØÉ÷ñÇÙO§çàl8á¾9—-Mlø@p4ÍRÆôx½D³‡$ơNM¼KôO« wÛû+ćcö#˸9>p#ƠÀ:°Ÿ"³̀P{Ï;Wxµ₫ñ€qh…•f‹‹ç¥đ†<É+—đcïÆÇ:—{¸< ·}ÆĐiO“|̣bU¾ùïzỒ`óñ è²¼6ëđ¡ q‘WG£ØœG¨î …-É¥µ¬…¨ ˜)¶ÎØe—'[iá+rËlI\™xƒ6S̉ÛÎø»|ÚVfk(¤„‚}úfF•fæ2X@˜dGY²QJ¾j]̀…+ç¾÷†đŒƒÂ WQ`YÆ÷{J/ÙȉHe¯ª©©^ÎƯÂ-‰đ`–ôÅ<’‰̉„ç¼ưüÊU©.NE qDtY©«² Ø@]× Đ%–œûÙ4™{ºP 2Ÿ.œĐă:U|^Îñ]uF€Cä aY»̣@´·3öq9j‹£FawƯÆơûsls-%ÖƠ&¨ºx‡+ m‰EÇ)Y'Û²wn×!,¸"…·NT›Ă'3n ßkù{¢́ €h¾O•Äqh¬v&˱²€ÈVơù%¤Ózç8'"AăË'à´¡»Oô™¿ƾÄ₫s¤Ó*œ©ºUôlWÁC¸”ç B }Đ[VµÎ6@Ă 7ác“Ă)̣Û¸¤́ζ>¼äǵSKUs¬Ûç{wha÷L” ̣½©¬ïœJư YµÁ#@æœpGŸ-x`áÈÆïß̃ȹ( „{2™Çë‰x{³¥jĐ„)¼ÊjVßtÙåxØÑ;•/YΑ }S’è.Ó¶AâCJuyBúy´êUu…cm LH:#Yª1b2 4e49;oï74d+ÿ\†K I}f]K’oX5^E€ =¥±…IAº{Œ¬Ù°NË«mN=#êîË uä¥?;&á^Ø^ ÚM!cǘ£‹̉Yÿ$<#y‚>ŸsĐE¤­Ñ5 ‡ù‚9!.}̉3¸­rP{q.ÓÖ˜méC\.î͸áîª*‡’­*çz¶uà?ÆÙ£ 4_Ë+™-µ·ˆÔε>.­NÎE×[ËJ‰À z¬¢ L½å¬3}P“U‹EóÈ₫«ï€J¹æ>œç̀.\tªeqz̉‚&±.J™§2$Z·ÜĐ4a(U!op2Ư<Ưf5@7¢ØORPÔC îX=Tj_ßUÁà0g‡»Å™Åú¬Ơ»O_d['.ƠW>´GU€ư_×Ù‚ªóæ:-K©Ôû­̀rà ï²ù£l w=Zó¸}Ï%îµơô._Œơö ©ñ(ÉăkĂÀƒOyÖÑv/ôÍÊ+b¥ŸuÓ¤bLAđ®Tq₫™=¿Ö†8"9ăX˜Næ&†gÓ!ó˜>„ø€ß§Ía8Í~©/8ѸSgÆ2£Îí£IèCŸs Ḳ‡áØ _:Ö£€2§³$JOqètW P±áiøkƒÊă!Q0†=öR.×jÈÍUéÅôÀƠ‚so*X¹øëÉPDÈDXWU¥¬}±êÜâtPtD,@?WÛ®„„¾;ÚCo6 é(ÛDf¨¼ó TD}*G2¡”8Iû]¸ÑÙ₫ô¤ŸH7O\\LwÔ–xI~L®CK'˜MΧOÁ2v—Ô¡iÛJ_«-`î:¯ü >f&(‘×DZḌ`à4ß“,dàp­̣Û̉WX„OjR¥$ï·3ả’hë~µ5¡Œđ±ÀÁq<]7~Qi­úßæór‹Z‚q‚T)«JyDD ¿«%·[Ö‘»)’Fă#HAù#PoÖ!yú_¡e;ZÉfy:!ú3Q© ê³\ă÷DÊa>ú¢+á̀Öüæc !aí<ÏH̃{lj‘Hfđ®Cæ& GĂO >ÏÄóZ= o¹`,ÎW‹w{̀…†[çÀçF! bÙëF•5À3d_„O„M̀è^…ƠBÖ׿MÔXl°>°”cRÏX@˺́• chE@äs]ç»É &­Ê ,ÖÏWU&KEăÖẪcü  YWf¸L¬©–8­1]\N%tÖ%fˆ*‘QBä•«7 “=”Eust¦\|ŸÂå%n¤ØüÍ!&9ŒÍ\½•!WDAP^$›Úñ܇ºd̉€f—3í@¦̃ˆ5,°ƺêÅÁÔ˜Ö¥3̉ LĐ…Â\́FHÀzư“‘v§„hÄÏJ(EUhÛưƠ¶ Äo¦‡³æ©ˆŸ?¤ÑÉg—Aơúº!k‘ ̃˜ €nkºÁtB”u<»bíÀö‰-£<º]ê; Á¿ÄÇ/OWă€;6o¡gÿ‚¹4FÓ:1 d¯L₫÷ˆ"În¨z;đÛ¨O’ \^JRx×gc(³ü ä=1ëXœs ÿ=£=°5J‹*xî3p“ơȶOê“)ØÅ(ĂZˆÛ ‹Eù˜¢ ˆlȪ‰̀¹{Uh”£̃2Ä‹­¾´;bÓÇ-URă`_¹ûHÉ× -+fÇ‘:w6ûoNÿ%ë÷”̀ó“KZfW©ù¤”Üt!ȸ•ååÏEµQùHVH纰ß]ÔônÈæÇ$UÑË ™–ø¸8̉ƒH%VX,{’“éÂÆkkÁwR•Äúê˜ö/c’: fΠƒ¹~£~w¶“EüI«¶öÓ)†ÜgZ²0dçagc³C+ׇÎ5mÇÀ8é¡2O>V)êơ5Uç`₫ |w+‚sé\ÓÈé“|Û6øƯêzđZÜ\Á¨4“ë:Áüyq`z¾wûÆ MßùÀ¡‡úĐ%áE£Œd(vŒ̣x®©ó½=é_=j¡¢9ÿªÔ½ÙXḅˆOÿ¡Û3mjË Ă ñ²zïîN?úĐ6mPÂɵQL±9”¹ Q묕l‹ø³«̀Uăǻgç!¿ï™S|yƯÏ:ơ³·«/̃¾Ùc‹́G>jÎƯø!HñHr¡X ă‡,° –I²Á|zZPhÊ–}}DûvÂÅ@547ëOÙg/»«Éư%ÎđĂÉ2r•eÍ)WÇê™VüY/¬»Í·vO}₫>™ƒg-„Ó«¼ÏTêÉwl;ª·_±¼_ơØ “4^î!Z’5As%‘G!†fB¥THi2“¦¼Œ6= ªÜB1©Ư²¶R¸M€7™\4ª™úL'ɨ(@ÏPÑ‘I_S?2ơ¾µnsÄvx€s›97,̣¡̣(̣oưS4<¡ùu°¯t\¤0\̣gJ†Ê'DàÆVsṛ3ÔÎ1fV…}ÎÖ¸Ï@đÿ À.â(Ç:‹äwăƒY_Ơ7l0?¬j¤Å/ă q ÜíeƠ.<í-úñé GøÓqR† ç·QÙ% {prF2I·́κGß§ÂÎÆ",‘æ‰ƯĐh›ûA·]nR¿»jS 4?2 *@4K$èÈ‹¯¸, ‡B`.à‚móèÜ«?KoÀÆ"¢»§KcÙ ̣1§Q ˆ7ƒÔO—FY!Ư}–R:L‹.¸´GCt2u /_H{÷Oøq“÷¨:}¾æư®ñWX{KĂó:‰JzZ̀¯²pu°˜8•-¯¼Ú©Ël „.·̉°ZeîÏSÂ₫h-̃å2ë̉³^ï°˜©í‹ß´Fù,§M%$Ï[D´K‹Ö&¼¶Pµ8RbR%ú9™¤: ¿Ø[7AÛv¬´&Uå&ăËSÜÀííYüû<ưlĐ>0Τ¦¢ïŸí Ö—ØÍ,P"0üÙQh ƒdón™Kj ̉í†É”ƒ«‚Ơ›ùPl'ÑR4D« ]Äzæt÷L>ñeÑ̀“ưA:†K¼EAîdŸ"¨êN†YØåy/&«ß~¿Vq]AÈ4 kÿ ưl9Âr¹$â´¼À“ñ d8å+̣Dz̀Hc‰]Yøy‡²ÁḯO¸˜Ï ăQó¹YÊÁ\è&nC‹&pÙɨ;˜ Ã́5–3£ùB„LZ°\P ×÷ fá/ºOÜó*½„̀L£L2äöĂ«o©̀5P*™“}Ñ_C–;K³ÿÖVb¬âR;*́z`LUó9µÍ‚åh¾´rc@øa1ï|•ü{Ë+"=^gdđưDĂ¾*ëÅhƠ°ÔqL“—”‹ŒíAÀy †¥Óö/·đ´•Ç$H2áUd+ÑÁ0h)äOÔ„h%…E¨÷ªÁñÍ¡ĐQ*VḶrµåiÇÛ¯Ñøº *qcR+Ó¢‰»J=(àO×έ÷¤íµ5¼¿º&ØÚ¯ï2ª³„ÿFœẸ̈âˆk»Ăè”Ç«(—Îï@f±•á p–y× îamßµˆ_ꤛ€º¦ØưÜk7~Tj9^̃j1Kă«t3ÛM½Àc¦ endstream endobj 908 0 obj << /Length1 2171 /Length2 16990 /Length3 0 /Length 18290 /Filter /FlateDecode >> stream xÚŒºeP\ëÖ-Œ{p—и»»»»;Ó¸»www îÜƯBp ‚^ö>ç=Ùçư¾ª{««è5¦ù̀ù¬₫‰²ƒˆ¹ƒ)P̉äÊÀÂÈ̀ SPå03³123³"PP¨[»Úÿ%E Đ:»X;€xÿ¡s¸¾ËÄM\ßÍ@Y7; €…“—…‹—™ÀỀ̀ó?†μqwks€#@ÖtA spôr¶¶´r}Ị̈?j3 ưßî{ ³µ™  `âj´ÏhfbPs0³ºzưWj~+WWG^&&F{FgKAz€‡µ«@ètv₫¢ P4±₫MŒ neị́/±ƒ…«‡‰3đ.°³6‚\̃Ü@æ@gÀ{n€Œ<@Éú—±ü¿ èÿn €…‘å?á₫íưW kĐßÎ&ffö& /k%ÀÂÚP’”gtơt¥˜€̀ÿ24±sqx÷7q7±¶31}7ø»p€¤ˆ Àä߿ٹ˜9[;ºº0ºXÛưÅé¯0ïM–™‹9ØÛA®.Ơ'ní 4{ïºÓßÇj rđùüëÙÂdnñs7G& µ“PFüßï"„?2K +€ƒ™™™‹‡t=ͬ˜₫ ®îåü[Ẹ́—ø½~?GG€Å; Ÿµđư ÁÇÅÄpuvúùüSñß…`nmæ 0ZZƒ₫D-₫…ßÕÙÚ Çü>x,æ¿>ÿy2xŸ-s×ó¿—ITVKB\‡îoÂÿQ‰:x|Øx ¬̀f6N×ûƒßGQ6±₫ẁ|e@û̃¥ÿ)Øưß§OưïÅ üw,E‡÷‰¨ÿ ¸>3³Ùû–ÿç1ÿÛåÿoºỵ̈đÿ]¤›ƯßZê¿Ôÿ­‰½µ×¿ơïóêæú>û ïúߦZÀ­«ĐÜÚÍ₫ke\M̃w@di÷Ÿ&Z»HZ{Í•­]ͬ₫5*ÿ’küµ`vÖ  ²ƒ‹ơ_ €…™ùé̃·ỀöửpyŸÇ¿UÀ÷¥ùï” 3ó¿¶‹•ƒ`ấlâ…đ~ÄïˆàẶ¾†æ@Ï¿'ÀÄrp}w¼ÓóX88#üuœ&‘¿DÿBœï#ôq˜Ä₫ n“ø3€Ịb0IưA¬&é?ˆ À$ó½gÿƒ̃c*₫A<&¥ÿ î÷ ÊĐ{LƠ?ˆÀ¤₫½sĐøƒ̃3h₫ñ¼s0ùƒ̃ó™₫Aïù̀₫ƒ₫ê>“ù?à;'àà{s™₫uô ̃K²øßÍ-₫@wÖÖî°ü%°û£ÿËÙÁÍùá̃ ,ÿß)Zư²¿S´̣r´z¿†ÿX¼Ë¬ÿß™Ú₫¾Sµû|çjÿbß¹₫ Åñî z·èßÙ8üÉ₫î́đ_ê÷êÿ¨ßƒ9¾¿@@v@‹?ưagù·Ôù¿ÛöW#œ₫ßy₫£ ,ï¤\₫öºÿƒ5Ç»¹ËûµøÇáư`₫D¿^˜\­œÿ8¸÷â\=₫áđNÖíđ½Oîÿ€ïT=₫@Ö÷x^(½Ûzÿ́¿ÖĐ̀Íù©ëß×äû₫₫ûzÍV—̀øBmB;êD<ö§æ)öµ>Ó0ø¬:w¹="æ̉Ôfo;ß‹¤ơ£ńIPß ¯¿øœ¶7ÁF|MVéx̣}6JTƯï@X™Á.:i"‚'dP>đ}q̣Ơ ²…lï‘¥ÈsrăFV.Àxđ”̣lªXŸ_ÚW9¨å”C|®˜cˆƠˆÑ*] È7Í^Ä%…qe ‚£Eÿ鉲pw?;ưF,›H‡àwËV́£»Ă÷{Ñ{³JƠ¥O—̣}b–̉Gô(MgÙ§¬xcxų¿˜8÷}ú*ăë—ZkƠhPë@½ûÄj7˼T@(Á0Æäụ́VL#gR%¬Ú£h ×z6[ ÑQ·…èfç½fŸ…M:áÏ\ă`‘‹$¹₫CN¤Çä¦6o/[~n‘¬ÇådÑyâg9l›Ư' <­gœü3F[w±ñ -£MúØRËu-Ư»t­{¥gÿ 9RÏÑ‘•ÈYg·3Ù…â!ÉÉ5ÎÓß²Ù8N‘`‚EW¢†…³ÈTü¬Ư‰¦‰?’Ơªa¼±³¡™Úm·Lº¾u+W“Ú\ơ%màºîøé¡¯‘a¥ë9$î¡!Â_`ëÀ¯b̃“Œµ?¹̀ M»ùo,C1}âV‹±̉ù$.yâ¢Ó6ù?m„Û̉d·Ö‰?Œ!±‰ÍE¥Di¤uaˆ{Œÿ₫yœ̀”0:•TUÈé–¢Æúvë̃±9t†äÿéÀËơ~\ΜôÛ¾‰nöt˜ăIËÈHñÅĺ}sè‹ƯômṼ¸„†^¨®dpC¹±Ê­ñÖ,ÎÆƒ¥9OR&½ØYƒaXÖÿ ÚóỊ̂œ=\Nû¢úC¼Oßj@Uă¯ä̀Ô¡\Çä¯MûWŸ•„* …ô¿ŒĂPÈcFB}/Ë„ó¦È…ZÄ—S”}N6¬,ó[̉âl+̀Ă‹U&@åT<ùBÅeÜѹ‘́¶¨ˆP¨v¡-|Mk=?Hÿê)³E«ÄDÖ‹ØàÊÂGn<:ñFña—¿ôäH–/JWà·¼Øñô€E5\ßP¢ªf˜WŒ=¯<̃œa!yw\KƯíŸƯ€ÛtL†Ü̃[º‰Yµ̃Z±"J=+CH +Ü–{°7ùƒØ/’a÷3¯Ï¾—y›=ïTp$Ơ7¿’ùR Cư“·Á¯‚{./‡À´QË¡]ohúæM¦·Ÿ­„ à<-n~IÅÀÄf/èiÇùr¢8óC¢ÑeE¦™y*~Â\ä9ă˾FÆ¡ö|ḱn &f¸PÎƠ$=›p̣¢Hb½ n¤Èh¸râ'qʨi³f¿½ùmƠízb…đ²v H63–×[Û·ö^G>Æ®´„Z†¦·Ù²Ô¤ÈØó<’?éRækä£a©éd©Œ;ÑöGà—{˜¥J/ơ_„xϯ ÇæĂùiX=Iµ•E¼sP‹ å› ̃‰9Q³q¡,7Đ)UöêteôùµR…ZÈ ü1́I~(O‹ „ÜLÅ"§»¿nŒü¸û>Ø·†Ư^?QÄ¥x䦫Û"”"¯ê¨r~ƯYhơPDđ͆oÿỐÖH½Ñ<†·_ÿjº‰f̉G'>Q¡đ²jÈG¹r³ÔÜ)Û,|€pÉ¥­-âÔo(8©Í!„¹±xÚÎHë̀ë³ÛÁQƠ÷u‡ŸVu¼¯»Ú§ö¿Ø̣"æƠ@91´Ö5|çƯÜMÊO7uÜ‘X¥;ÇdF«13×~Ï®ü"aa$w+×r~±̣'ËnëwÑïEºf_ÓKbD¶Vêi:÷Ë‘CQï•VƠË%=…ü”×”é¼Q “!̣Mî ĂÇ¢luÛÿ3WÍ<ñ/øßp»‚Y4}åÔ+àH¸˜*Cđ‘½†œDíR¢Ó-4b¸YĂv‘½–m3…Ç`1/ƒUÅ_FÉ0$̣ÂNăZ¾Æ§9PX[¿¦v©sÂơ»ÓSPúp®Ê*» jØ!Í•€¾ø]æç~Ù«(<]v;;²ÎßđÊA‘64 Îù’ HË-R?Ó½%÷neÔT§µ°át0Ù¿A­U~b ̃†Ï ío´Ơ]IZÅt2fJ¿7»]³wä™sºĐ­ÜoYh×ü€·ÎmÔ-Ufc3í)&©^5X¨EÚÉâN˜M™¬‰#́'Ê¢UZZđù5ÇỊ̂̉æ×Ö¬Ë2ü¦‘=Q<¢Ÿ§̃Ư £®˜å¦Hîïơ*â‰;È[~÷éâÔ³æV<Óô£äfÙg…z´†˜ ñØ%.{#SZ`́­UæqÇsäßʲ¾||>Gˆ»)ƒ̣¥>†LgÜ! ¡ " Â¢8ÊW BÂA^â"„X(pDûp­åŒÑĂÛ5†¨è#¿ÊKW'8đR|C90™–vׯ«7~Ksju=Î_ºéº¶âQlĂ‚¤’SĂÀæ—‘ZH¼¡€©æÆ`€ EûƯ؇¾9€Z³e¦ă0x»„~ͽ©g ”˜„naI× ä–úœTaƯOQ’Rª3r£( îƠÎf,ăņ¿Ü>₫¼ÖquXk¶ÂË<¦ú¾xAIƯ8A­ĂÈ„s§Û£éMÇ%2́Ç^Ûˆđ´}Ü´SçƠÙ±>Çö›’fec…TIĂ1Óẁ¾1_¶á½üS3•±us~Ăixƒf¬—Ø-œ-îE¿¹‹“7¨Ê_E]NEmn*Q¹s1«ÎL6̣ÓW1 "u[ƠB¡S™NSwu]CÔÇ&w`d•Ü^;øǘ̉4D2IÜ-¶Măñƒ“ªOw¾|·S̃0t̉_&ơôr$Ö¿XE'¸|óè!2>ä6%1ÿe`Tˆ­º'ÊÓĂe£/‘¦MO¨)ø™b₫ZÄ.Qü­Pq7?aRƠơ´,wø"è7ÔvÉđ.dË›Đotwef}é ­N¶₫ó]®;ƠÁÜf¯T[¯X1.û‹5Oe•¶•CeW&₫4»̣|ƒ÷‚.Ë̀ªöÅ̃ÔO@s`Ă˜GƯÈ€b¬P%#Äø‚iŸtơ½ậi‹/zT˜KC}đ:3£úØÖÈ.—5–r×íuü§4ÛCç×Â,ëñƒ/óé¯8Ë|•«Æb†è“Ö£æw¶½”¼b Ù²đrƒ $ZûPÊUP ×<¹îØ‚»„ XCEf:¿đÂ~+rªá[Íy± ¿èq!Öüơ#₫¥©l÷Ṿáä%‡æüHñ5Ơ]ô™1rI@¯†AøUwWcª]SK-NÊúψ «†y›‚i~ªKm„o•B;%Jw¥iÈÅü„̀…E’¤r²P2ơºḿ€$Ëó»&²ÔÊçP2Ö–G A¥æ×iµ—µ ®T"9sÆr[5Ù ½’l ·¯ÿîìåôEûâÈ€Rƒƒ%ơ`‡çÑw±mËó”v?å@DJ»N\æ¤o¿¨z?´Rè>Niv(:œ¬D‡̃Ú o"ĂÙäđy^ƼVß~ùÖφ²O³J"uăÚбb!k€F w÷ƠgƒÆÚ™%–›)ÍÜÎe~Q¢–Ûl»mpƒ•J ±213e°¾9÷hRă™n1Ȥ"kí‚>%›¬úùÆ5¹!¾hEOO–…Ö¶[5¶|¦-°~+c–C\6…˜̀.ä$ø#älŸë •˜ê4Ro¸ăG}êg)Íz¨oÍVl“!¥µ(,©F!«¸ù‹=ó¡·£*‘.¦î®Ÿf:ɽ.N¾ûFU‰÷oH‹V¾~øØ:ÎÄÔÿcs?ÚrÖ~é7”Ú äo%T‰>×üĐÖ™Æv\”F̣‰ÅêfÁr§2ÊŒçKµ}qÇ@wøÚ‚QF8t©x‘ªÉ)ạ́Ă6¯ovQàâ{­ûvê6ëK̉ÙÈÑÎ]ɲë Ñä!ö ®s[Û7̃Í&(À1ơ™¶Ơ'9ưÊƠ³uÅk©oÎ"™Rs©@2¤RrsåƯpƒ-HB“á©—U¸µÉA¹×ûJ¤O&ŒlRj™ùLÎ1En2Í·Dl¨áYNă›1´¯ZâhO«#9*Ñ낌Ï‚@L|Ø=$@ŸBÎí}ºljjû“Đ]蓬º„7ó¶¶‘¥é–úfD÷Ḅ¤ÅæÇç¦Ï:鈄jØƆÊÂpwË— sÚ›–j´„ç̉Úi¿Lû”QåhPÅ7VºFJeûE*d9'²|ƒUxcàl¨Nœ+rÚA*åß&àŸÇPËøë??£(·™Ï Z Ê†vǬ÷QpdGׄud "Êxû«0¹³k!"^ÓnÖdÓ7Ç„Üó”µâ¼­æJ”དྷü*,F¶CĂü¢Ă”;bk‰ Ư• !̀ûûµñx–|Ʊö͈À‰ß=AQ:æxd¨+ưØhSq;½-­6Ô,›cAÙ}·+êxƠ²™ô¡ˆ…§‹,¾ ɺ™óíæ̣•N3×Aê›̃ñ½0*öÇ~4öVđMÇ_»¬[Xœw6ÁAIÄ4Y*9—‘h+M=½SƯ§L)>'7E‰Ï;ơXŸdØø¦Ùă,wo]èëgö#q³û2úÖÏÍU\:m?…©Ñ…xEƒ'Ơ•„] ú¬ü$/Æ”cƒb ôÆ  K8ÿDŸhJBX,m¡#/2ëÿâr¸„Ă|¾Îh‘Ç º3s ®±Üä¨u# o»÷=µ¯eæØ‚ߟs½u”¹kjupóA<'B/zUfñĂ^‚·Æ¥Tÿ`ÛW@̣ÓVØ9ñ dÅü;đ†;̀Ä̃)yÅ.³$…u§éçk"áP©ÎôLŒàX¿ô:‰XlyñZ©i5ZaEîH±áuú/¸wÍs™́] œ¤ ̃®q9ë"²4̣ÉY0Î1´2 ´Ú\1ĂC™.ôRlͤ¬ºŸQû1º ÏèfQ¬k‹ ¨áE‹|Sp¢1é=È’¦W’‹µ©‰Ü·8P íÜæt¢$(y€à]"mđ—PÆă4ưGµ‹Ư{üưU¨x·3/\m—j! Ä,9D½=73ñ¼ERĐ5浇Nàe·ä²–Đ y—>¢N:ß lđR›-^uDלOă¢ÎCï®­»qÇo8Ơb`*ûẠ̈œx‚!yx̃bơ_…¼”¾ª-1Đí¨“?Ë̉6Ó–Ơ(9O.ó"²04tJ™ ’Jj›v²~R’¤ắ)Ç;b¨Óè€Q›k¾É!|+®ïĐMÍŸˆ}₫ôi³[‰7»á‡s½aܯB K̉kXp(­x̉£Îg#Ô€y~0SA±+ ̃E\»đL©E0QÉh ™W4qöÂÉăѨªMb–-«ÈÁ}JÂÆÍ#"(*ˆyZ`2]_’§ù½ªéƯ‰§̉p÷ÚÄ’:+«q#ƠÏï×ë$@øYV½=M¹ºca§Ü~É6!. \¬ÂîÄ^:´Mïå¡ä°~¿̀í¹l™.u¼vÀWù¼ÊÅ˹ÛƠ?Á}.@ ¹:Ó—ßQÏ´~ ™íù£ Á€M‡}̣}jM̀t»‹ 5y‚2‡º́±lC₫ïŸíê$$p͹r©ñcƒû/‘“µöZÑP$9¹–N¿\QZtO+^ưü *ơbH57yäĂÆẹ̈™åÊP¨CÁ3ÚA>]ÅJ¾vx¹­,%aÁÓ̀n£à¹I8D=æg~ú Đ́K*Q ;Ôà/+ïhn8£ß̃DÛi¼êÖ́wóIá*ê’́°¸Ç†uïjë(x̉m‘wÇr?â'`;}ÑŒƒv‘HdT9Î¥l0üxüođæ À9cn“‡±q_M,æ²";/N₫‘ Đ~‰91ñø¨Ä¨ú‰® ÁÜÆ?&ñDë”Ëti…ó“„›P¯b¾€Ô¹×Ít˜0Y™4Bß´³_[áˆê9¤ù¾qØëafôÈôt ¾M«¡·7U#́;ÂĐœ%YiÍê£̣ÔXÅ­„EQ€‘=ªäï›Ôú°˜ø´®‰àđd¬Íi¼ưaaœEZù~¡!×Ó’Hh‰DaQµ†@kƠ·̃¥)QN¯ÊˆEô¦¬{́>ơ~iËQtôq^ÅIYẹ̀lÓ_~”„9!lMÖQ·Yȳiw«  ¥5lkâç$ªĐëcAÁˆ l#3Íc•INPD.r#Diñ=uë8‹N ~CS™ræ–)àRṔ$úPÀ̀÷cdĂ AZ|DàÙ·‰÷\¢€‹cC•õÙwỞ7¨½´ÙMÀ>….ÿ^R5yˈ³Å?TÆÜ<´x~“¼1Tu’P-ˆ¥h̀Ç[{]̣3iƯaÅ®¶™7>ÜVx›©¿eơ#ÙíiÜIăă}ƒ<ư~u±Ÿ)êçÖ̀ 3ÄÊûÊ·:çè“8ö„ (ÙW7Æ'ß~Êsûl¤T7¦;`ă˜ô@%=€EwQi£³Bf01û*÷™ÙƠ‚ ,5ÓôÛ´áo(eÓ₫²9 `ÙØbɤ’Ó–í­b¨h¤?Äzk`:Á¥{E₫̃<¯˜× <„ÿÎZ.wÑÆ‚×b=b6Üåǹ̃deêȱgRwy ÉzX»ç"È\™•ßa “¹)ͨçäZ®-2ïY`]ÆĂ]¢V­ñ­…!M1£e§ÄPÖ÷ çÔgœ7/í¨Ư0‘¤Y”Mư1œ{XÓj̀ÆÚº@@n̉$7zYjăÆuó^ ñHÂêj’̉O°] Cuñ=9ÄÎÛË ÿ(nÆoó±xü;HÏ›sc«ÊVèßg­ß»¶XRª!"}-ộëuW† a?vQHöQMĂnŸ́y+§Â‡Ïụ̂¶ípÈ#¢ß¼CëÂr{gñ>&Ôº…Í6‡ÊB´M#í$ßD3UCÜf‹§”3­Üđ#u=ÊV¢K ²(ä‚Èw P6³ØflưăzÎ>¡K₫BB^çÚø6y†Ô܉ê3‡àe%ëà6æ+NÖ-Oê}åGÎT Sđ̀ñ*Vª;.Å&ßô×qKÓu½¨ªß|‰`cŒàöă“/;²î®@œdhz…Î ̉ç¹XéïY•c¥¿[;¿(‚Íæá &ưYh`Ú踩ahj,èñ&̃}"ˆÅ7ë¿– ăôI±³ƠXTî=©}Ă73I•›Ê¨ßx(ªèéMGŸ̉C0¡ÖM•Bss/h1€üJ/jwO[+ÿ î«=Đ˜Ä°Ÿö±rÙaÚû` –N÷¶LA“î¡Ö5(/ï&~~åweÇÁD6çŒIªw.Œÿr¨±z½ŸOEô÷B\°È4ÍKæc°Ă£°¤Ư½¯ ´P— Ú¢,Ak¾«‚e›7›5…₫oèí997Ÿ8UR™e”ˆT8 ;Xöñe¥û¼ûuiSUÙ2¸çáù.7 pPïNI™X5êĂïÓ‘ ±% (0¬_ ó1ׇmÀ€Á÷QË‚êy!/"̣;‰?…̃ÆÑɘjƒêI~vàlë×»f1>\Ÿ|ÿ~§ân[†a85ï¢;5À“Ó‰px²¼ÇÏËûÜ:”ïƯ%[ÇÅ»¬¢&jejxuư¡/1¿Á$3sªPƒîǘÔPceM¦ëüa266W¬Ư„âr/ ¦LÆoB€Ư₫Ü™–ÔÉ—!ZGd—qôưçpY#ˆÑ4W$¨‰xa™”Ï§ÅÆ5ƠÊ’éè—đ ;|¯œ¶úzG‚YÓơ+mÖ7_Hå̃+ï×&1dí_ºṆ̃HïRdÂú»ë¥¯_z•¹jmó¡^+!†ç–K4mÀNænU_u@‚ή6±!]hUơüeC„ »,á)jx'©ơnCù́E-&°ëWJ×Ù<¯À‰¶ 7ª8¨–®Z·œÖ^ÈKÍĂ@#ŸN†Lü9ë.‘«XlǼ‰z₫„”_ơ?̉5|îdrÅ´áO\\̣ôÈÑp襠Ưùå—¿¹ö—tçKo²8s ê#>eÍAo’¬mÂâÉ,¸Äb¡9í¼I ²-­ÁbƠÑoq2Ä# ́‘æIˆù¿”çM~d-¥  Fßô ¬‚ÿ®b‰¡#®̃;”B}®‡§„G¸*ẩ‘Ænó—OB㸤&±ZH<‰.$4HP¢î"”Ákjú#B}öåÖ-{¤:a]_PuÄè„„®QGíkÚa6Ù‰§FË –]3qp6øU(ôGæÀ‰ …_íTÂ*ânÙ^,̃\åÔôʼn#£Æ×åo4ßÇ«lJ4Ñûj½t+K(;#/³Ă–ÑÔÑâ‚ôóÜ ~^Ưödèÿ\ÆßqwàO‚OKD/Ÿr„I¢ë— 2u¿‚£X{€ ©^ă ©J‘vW_·oiO<²Ha¾Ûœ§Ï61“8ñ¶[¼~6[Pbß6„ï̃,³•(#kbµ^h¦µlĂ©‡JwÑlGêç1k­=¤üQ°¾ùæ₫&Y‡ÚXÑ%Ê?Œ€&—Ù†P%A Ă›Fơv'Ï æ[YÚb½RWZCi…åd„¢“†g¨ƒŸk] {"ª43{ÄKûŒ™àÂÛœ€é́0¹à=#j&Èóè•Ú/ÍBRm=nƯïö!œ‘qzSƸ¤œÛÅÔS"Ü&&ö‘…uÆŸ…w\J/„>ˆ"øoëVd«%|HĐ ̀;{#¹Ç3kņÏK¾̣~ưr‡óoJ¤˜+~ \ÆÁlG”ẂJŸ)"ù¼Tày&`…&°êCLI,_ÔưSoy ²Ü ­ ŒÆiª0¢Îׯ óo›éíă¡©#Ÿ;Ó‡XJ&™ û,“¢ÈS>ß#µ‘:vô¾n¶ç3möE?%$’óz$è‡ÿááX¨yG3‚á₫íÙY¤GƯçŒ j_Enë”éfæXâ¸&‘\…JO?fJ¾Cí ß¾FN!Ëæ+Đ¾†ª;·ëñị́E*|?µ3wƒ¦”LTNÊI+¬ïî{ĂAß,²ă8ÀÄ ÛÆKTOíkă>ăœ«)++̉^VöÚøië}c¿¦=-–¸ƯG–₫8í"ÎêÊæ₫¥ïăîƯ, @§V2Áȱo“¼q"×‰Ú dŸÍư3»Ç»ÔÄq{„́ă´/̣ ­ÖÁdØb̃87#ÇQV R­₫“^=ªY‰×!n§₫̀}îäEùwEs¢1G.§ É°æ‘#É- ZÜïdq‡^˜¤ÊqlHbp4B?-µH^®Ă´:‚ØPHÙR3N¥¨h[ÚăÈ>½mC.ŸïeK°‹u—2Ê„đÖ9ÇøŒ†ÂYăù¯‹0Ô¤Ôaø5¬!8r2á1Æ4€â8®|ºÓü)t9œinÛ‡̣%*"»W—n¯¼^÷!†ÏP«®¾® ̣Ud…! ³h©” s)R|bŸ³»«‚j·ƒ°°Óuc‚ÂÆ̣:-xœéÏtÏ{èU Đî·B»3LÊuóTæÆáíæñGçđô6'ª/ÁwlK×À¢8% ”Γ±>j)ë Ñ|*Dª,=tÑ›k¦‚ÛiÚf<Áñ49¸5C½ÙQë­Ç¸{¸Ûë{`ƒVœJŸ¿‘₫¬°t~JèḱåÛêñºÎÿ™ó‘B$ÄÉñ;piv 4³É̉¨N˵°)å¡2nx,đŒ=´¼æ.”H‘P‹/‘º*™XI×¥€-¥ON8ØPs©ÓK„{k.0Æ©ÿªF`‘2‹Ü/—Ålnù;, ỢóÓè¦<-Z-Å…WÉ öNܤ¸ØƠT=*í}VÍû¶†Ÿ5á'ǗlJ:–a(?ÊMă#k+rÆoí°9v¾£]¦~5ÉÖÿEØ3$ñ¸üàî°QX›‰fé,çÛ€YÙd+;¦¦¸èÙ˜v_S;‚<˜¨Å¹\g(Àû†*Ø£g•®œ ÉĂNæî€qvñÁƒtî×'àGÛ $F|¬«çbÖJ•kĂmđ5Ơ8Ăiæ₫sg}W4‰ú"<̉9àp–f@ö€Bo„̉ĂtÎ?}̃#Jl$m€ê»₫9:â-ê°/Ͱ׺'ƒ ¶̉ZªˆÅlÊUmóÄpiưS S§ŸÂÛªm–ÉvˆÉđkÑ ¦̣˜éä„fM¾”µkŸœ5§ƒlh‚¯ºÈÈ£™³‡LNmîÇ~½%Í—ñÅ÷`MŒ#ră/a–¯̣̉pT̃±«¼Ë«¾Xä̃́Ë÷;¾°C£|»-4Gæ>‚â¼}0ŒÄŸgƒ?ÔuOËëÜÜÊ£ªñ¬F¹:Ad{r©r˙ڽÂƯFƯ \{¼VZ×Řötê‹hK>Ûµ‰î¿âÎj=^öù¤†m±ƯXë̀X4ö_éà(à¤d÷W§¥$Ë $´J8ÈÖs»È‚ Ηsu÷}Ư°t L¨K%&˜Á®ñÓI6K„́ÛEU;áG¥œX#ºơ» ´.ïF́₫0à¡ß$ày<º½ăÊñ­4TG•áÇÛù3ÊHüñgiaXÉædèh†»,SˆíxV•÷Oá÷û²LÚMœâDˆ»ˆâNr[_̀kPaÚöq*j.`1)‹Q¶–T e‘¶£„Bb€XÆøeƠÖ鮇Á‰nKÁ±–w^]4Ÿ_¯c3Ó;Á¨•Bö\F*~P>­­'±ó5ÿ#8[¨EYïœ́tƯ₫lÍ̉·©¿§Á÷¼ÿöàçip¼ó‚säLUpµ<¦œ¹«ư‘arkr‚o†¢É£é Ú³ø¡r=IÈoàra[ƒ‡›̉$̉\Å_}´áŸ‰ƠLÔ6k$ọ̈%³e¨K⦥«(²ú §Æl3«¾b-}Ă₫5[ü`„ƒ]»T¶uó8Ó>üYĂsö!e¼%^ÂQ]?¼¡»c\UE.ÚMA•ñB« 0‹EÁ±¿!åKKû¾öó(©ư7°Ï¼XÍbcù,Ñ Q=´h&?~®?V˜SD«¯“³(éfYÓ}ƒrR¹ © T>?đ§+|䆣ˆÙ»ê"Ÿ‚ÊêzƠƯH­‹_·$â%(3ÜaAB­?ă×>Ö”±qƠĐŇ̉j\7ߪÖå–<˜6>©æ)²± ‚+‰4Á *wœ$(ÆÜw+¹̉Dĺ;ƯK-.sÁQƯ"ÿL₫ ê¼T®BO5|¾÷×ÍYÖR¤æM’öÍÿmỵ̈ÀKÿ{Ôđí€Äfḷ³6r€?|¹ä=˜¨ï6ôí¢[ L¾hùu?¤—06kƒŸ`‰ „Ḍ’xĂ˜t¼Ú¢¢™ÏàfưFrÎM„½bÙ$¦°H±ÇÓOA"è?u¦Ù£è0MÔüM¬ósJªẸ2’[á*mÖrDO3…lééq0·aŒJËpççsbˆO¾ñä ; 2Ẉ)°Éˆ‹‰ĂG¡̉qhî)‚î̀\%ˆaøöW; 6¥-\Ÿ!V˜„¨_É$è̀U–©™ Ù oºÁ×~uo($s¦{ŸB`­káưnT"®Díës ù†ñÙ’±8à”êaô|çä@©/’₫dC¾%¶LèJ2øX†xƒqÖ¢₫³\r½ă¦A8[”ƠZZ¨,­—>ö¡æ«à‰›»X’ÜÚ„ưG¢OÜ‘†„d\ˆ}¼¤2¶% âbN5̣ơ€x†ơ<©µF“¬ÊóưÂ]â-Y__lRwü|f‘PgơÁg˜”Ø] ÈD¨²pœ…uƒ“§ÈơvjûMb›#nnV3K®s -L?UÈ*á„—¢¢£Mră”.ôœUüÉƯOÛLĐ™-Q ¶rÔ…¹Ï¸bËü(ᥠ±|¨Ë®ª2GîEqÀë¤ÿŒèXª°‚íÈ#0cÁ‘o RyK¯̉ù•”̉på4›·¶ ŸŸÛ6gÄèѯñˆ 3=öËÿX†gŸ¬§av×–È•’%k.HyS½₫)6…̉¤îsñiva ̣ 4Æèk¹.<)¦+û:äw}¾µđؖʇ@îë!ŸîôË{ z4¥‹¯–¥è\ £à(ÁJxk†ư…T§NŸzŒ'K£üª’g&wûX”îÔ#6 :TÍ.Ö*Oư¦|˜àßV0êƠ–³Ă`±n€’ßZvùaΤö´:;%uß•c₫*¥¦´¶‘*2D"°‚ïzÓ^Q¹ü1Js`+bÿ{₫1™˜§Q?Å ‘L¹­µă.€hÛ˜‰sH†Xz1÷ˆ1¥N}C%GS›ªÉNµ&ø¹-ÿsÛôa<ç+À±¦Ú7Ùû}²'›áVlÁq$«>ÈaíĐÀ6ƯîˆO6q`̀àË Ñz¿[¢]r’X¿iº5RU øÄÅE3b¤È8£µ,q÷,y#0W —ñfnˆÄĂ>ĂåpF$°/¢­<÷÷*8‘;đ'ä¶\²’̣ >ƒË¤̃MÁÜËCÛ³k0Z‰¼_’UWMJVy5”·oɺësÜ‚wÀâo IJ9ô?™É̉3ö·xDê—|æÜK#Ăļ\^r´Mê£V¾î·†ÀÏHßGGz†´!GΦ“V4^wd®jÜ_nIéOïS…:=Ù̃"?k£>hÍ»u¡Mÿ5D€Î\|æóúå̉¹]ÛŸSÊè¡Åi†<¦ÚÈ‚Ç6㨛g »u~Skîîü!Cy¹₫ˆ:ªM!ø›µœA ­pógkG\pñ4dBá±TJë[}x`²4BÜt€/kJ âlúƒ¸.â—̉dyüEđp¶[ÿ¶²!lrĐoÜ»FL¬Áœ‰È$;qƒ Ó"îqbÿŸ«Ư }H pé°j́ư2>Ö°¶å”ÅîF’ôUÈơ˜¤l)₫8¤ÀR9Ø}•ÍI:ÁKl:rê—”ă5!C2°¥t‹àÜ]ÚïÏ¢ïLƒq³c M[,øµñŇI$üÅè缋Ö×Êđ%x¥Û"Đ£t.!©¹ƠƯ§}£¦’­ÖÂ]T'R;Upü‡=!jÛ£/‘Ă˜N!Åu3Üä-˜ßâγÁ?ûkoè* px”µ̣´XôÚ¬E»:´Ïèé˜,86ç=ÇØ‰‚XʇÓZ×¡ÚÆ­—N{ë₫œ§>Ʊ´3¸úd^ß36tË’‰$Ñî'r‰}µm}ªB8-¸§Û¡ÙTưÅs\e~4i@a5̣„²Ys¹mºÅ]'Â{R}°9 †Í“@5*p’²¯ä:›Ü/ç>àÂÚ:£¸^ç“F₫u…ÙUÓÖé&¥±̀²nlQñ›ihIPÿ¥íj÷û›á—·Ù‹‚峦âTA•eỷj½ñ¨ˆú  sÏŒoù ùê2Ø€í­‰Hûîưeø¬̀E$µ‹á Ü¢„)·Ø!¬Çx¢ƠÊ€£˜û`ØÓtÈ+©ËS!sb9`0óxp€@fúƯ¥K7$”íf%[Q_ó¼Úû§®f$!úö5˜ÖưMï¸D́n÷°ä=4NöÇŸÇGg°á¶wÅâ’2tÈ處8†É#¸‘2n5£o¥ö²ĐÓÛlS© ²0ä©à¶nµ¥x‰B>¤3=Ư’z~Úÿ cFƒ˜B7ÎgqH̉ú©,¸«°=aæ˜@÷ˆ¾'˜¨†¼Yzj`ơtβyÚêûÁFñ|,Ë™W„矡sj$q°ơï}v¸'iÍ ŸX_†C‰¼fs„MØX}{Å:ÇjB<–[Ưå«yeÓ@¤5Bd]lYïoh|ỬÖ·G9üÀăƯ??fÚYuÖú]N.9•¨mÉT+~Ô½f&̉Xo ÑpỠ&F„GDålŸưíçµ&¿b¹sq±’:v©/[m̀`Z4ó^ôđ0˜ÙtNH TÁơÂåÛ[s‡đ‡̀Üíà²H„ÿÔáñç8Ô‹ÍLÑ5O‰Ï÷W̃²xUƯ'”i %»²|á÷„¡%ß`ÑØ¤›>¦…ù'ĐƒĐ#–ÚDD?½ü4 Ë×,)»m˜‹ÀÊNºuÅ`<1PpêȨØX€ôz̃XèÆ7-P Vlw¿G<µ`‹Y£‰ÙÊÏ|(̀Îđ´r̀ÚƠl7™*º~ÍÓÎn:cÛ7đ•yM:âk>oö–V‹‘́·ć ®ÿg¾ĂúV©’l7rÓâE e¾ƒ \’ »Ú>§«Ơ›Wí½Ê¹…„Ø`UçÉè`ñ¿ë ÷áŸh }@›&́K’&Ü᯿¥áņ8@127Á9³×=µpy´Ár¸™/ {̀/«dÔ°Uư \IM¾©9¢¼±Êy»Í¥¼Ç.•êv4'·[-¢%zZ{zja{Cl¶æépßê9E—%Úlđ£wÖ‚:qÄEæ­ïÈ™²e`lzÏ«_h©™"¾ âo„%«ưÆíÅ©̃13̃8Æá́­̉M,5ª“:fx½Ä¾~h8¨ŒÁ ½©Vå]œđÚÉ8ùæßqPÁWǸ½́₫Ü娴¡–øÎùđht ¬ĐV-Ň[,Êy|™%;Ă)7µƯÁFŸ*sJö¶6Åơ³ÙËÖá°uÆÇJ Cˆ¤÷7°hb¡Ñï'u6Ϩs‡[w¾é*ác°% ïÂg>Ø…rÉöÆĂi³`8I^H×ø{­<Ë;}̉bÓG°mUÜX6·đ«à[₫́7…n³p!âfă’Ë„.âÂ8é#2ă·4+~I8ĬӾ̃´§±×¾®BéA¶Ơ•è¥&Ơ :¡i§S¦ù‰¨ăÈk '€¿êæ²oj¦(PÔÆ& Q|®mÚ¸¬Ä"¿ ®¹w~;ößÜcÈ\tȪ¤́(Ûº¾´Veß4i 6ª¹ĂRf²`¸Gϵ"t©ºh`j9´Œ ’qtÍëCµư’¤ü˜RˆĂß*œ¥³(ÆPÎ*ß¾“MË+ăÁ;î–äF?#'„àÁ_‡9J|Ơù°ä¿íƒÉ®æ»<èa?đa$B•kNbáTu¼k€XÎ,zÇÏÅÆ¦„à ÛNƠ¸i}GKq³zk¿¨å4—ækÏú‹,LºúÚ4ŒWûx‰Ÿª&öœÅ='ßü¾5ƒƒ ]œ÷$r+âi‹’¬̃ÜÉ̃HûTñ¬yÖ̉¤em¡':BƯNA!¼ ù»X×Q­ơ*ËTyÜfƒÑÍăpfg0³{úÖcêC•|ߌ@yœÅX„±…'W­”°hp>ºOIâÊêĐÇg¬ÏưPeÔƠƠvxÁX3ñ&+ßgTfä!vnÆ—B1'U“”Ư%q‰u­<:Œéö¤mTŒÔÚq, ó>Ó&w²A—–ææpÓƒ,JÈO÷¨ü£ÜíÛ!ô¯ûF$81ØÈ˜ùÑ,,Êܦ èÔ7E’× QÔX/$PƼf¢VŒ,bÜBÇ*&N‰÷~ÈẺ~§WÉć±Ü₫uăn̉Ôà?Y>ẉ¬ịÅËB,Kˆ5$&ØßïƒĂV²)£*V»¤è{Át®üO|12Ă3ˆ„u¯—GAz’A…Hº4EßjQÑ;37–$A[9—dž¤ÁàJIbüñ % Á:{j2p6RAYË 6-đÓË>º˜–¨ˆ,́OzngăQÊṭ¼̉"zö ½ËAFKϧo¢4t™™2,X0¶6 üŔ»™8û a´ZÜ̃Ơ®yj‡¼4[ḄUTÙÖÇ¢„ûĐ)Ÿiü›ù8´uä^“¶V~‹‡juW}ÇươTÏéd¥È·/胛„„·ÍÄ‚º•4q)‚ŒuJ-^¡¾ÁB–¡¹> 2n đD ºÄñ0ºPç&™/ai”Øe}%é%£ăÅ “†-úd[2a„÷›4M đơîuî˜Ç4nÊfĐƒƒ¶¡Đ úăÈù7ÿđè¯́w홀ăzI~¶‹u»Ø)â¿ÿëÂl2–ĂÏÁĐW¤í×U[g¾‹GHv ÏÛQù¹qZC¢̃û”Á Q2_ù^æ»kXá„Ù/d¾ü<²[[U¤r¸âçBÉØS=Á@Đ"́üï̃.=æ2¥Aû_f••aë%‡Ô¼Èx@)f¯“ÁmQfô¼Đl·ÏÊch›¤'`Í€o÷jP§ «¡#lp©lºe₫"4íÈ催đi­ …¾#m3¿Ä'™÷Ó-eÈÆdå…ÖF}®‹¨‹[xfKÅÅî \Î £¦Ù‡FÂ₫È6çØ¿½D]t‚øù°:•(IÀg;¡ˆoëßI¿½,SÍå7Mjăkw=^t]R˦₫0T¼$é>@™ë¡ØAởÓÿ₫$çí§ĂŸ¿Æ€Ó‘Hw?…,Í‹ {Gáăå- R]˜ŒƒLêh›9Ö”<¸bµ•8kYr`ná ó:₫`@ áÙ{ºƯÍÁa—+);­¶­æD÷y;̉Z…ưA%Óéy³ ̣å°-ẫ)£ô™-PÙcnñˉBv LKc-»ævPÜéÓrÔê½*bÂ'³´QV]úqâq¾Nùuî…I˜́]ưAá6Ÿ«Ÿ=̃`Åg7Ÿ~Iq_•Øi»̃’!Ơă3²ưú@Ơu~eD̀ s ZQ¨0¼ú̉³|å\'̣8*â½ØÆ8¶d)Ñ©ëáơÚs´< t'ÇAçÅÓ§’ÑC´1îƯ¼ơÏ9U…{ªA¬¾I# gD %̀<#Œˆ¡7?³›Ëw₫_Æ—}É₫Oåú¨LáƒS3º6|`·CÉʦ§—\»_»£,¢Đ'£åuÙä¿9泆r%ÊçZ+–¤‘!^Àö·çá̃lA‡‰̉ͺÍ}Ă÷̃®YrôXÊ‘²VÏ̀¢"¨3u™Ó´ÑϳöÖEÛj­'×G% œWƒ]ă¥{;ècZÿĐV,é“äÔ*́E¯Ÿ"°ñ®h'/Iµ¯đ˜”È)b±~çư®½ư—ùĐÑmNư§O›Ođ~¹áâ*h3Ÿ¼rf]tÀư¢„Çû‚FÑ84 ƒ#¸$KTÎ̀„ÁM ï[b«óè¾tV¦7çÀ2Ë-30­ưrçm×ç:¨™˜Îúvº› ´–H`?ÛŸ$8…n™¸x¯X‚vÖ¡ĺ'&§IƒÛC†:+ï˃#;Ü;³#́?-‡Ÿ³át́çz¼'×¥œ«”åwƯ×y˜†D>ÙÙ-èxg6º`ÇÖE3âA±É9k9&S$á<”·Y]ŒĂm₫mBg‡TÊ­Ç12”KåÖ0 xs¨!,-ù+ù>áSĐY»±ĂU@±¢‰$û|´*¨F€œ°\Ù“ÄŸ­Ù6¥¶>ôư sÜWg}óaÿ¨¼ăÅ‚rvjĐŸ2‹c˜€ đ£éÍCŒêÂÊùJ̉»4]¯ÛÊ&.°YµAœ₫L/nfûN€­öóƒ Ăa É´¿Rày˜Ö¢;Å̉}dL€'‡9̀sL¢ °Ê”¼>Æ%˜À|»ătÏđ‚‡;•tr3ĐP_1Ù³ºÖfLë׆˜ˆ¯[æYs|–Ç-̃ˆIĂRáa™ÙêO"oLµbç¨%ëÖ» Ô–Ùc©m|“€‡S‚çY ¸ØµÀ¾v™&ŒZ2i€oûĂ`6vsæÈ/Êc—‡áTø‰/„Å*wÚöåjơ„b_=qr9í"̃‘›f‘»R ¦xÈg.Ü f¾̀1-̣(à́BÇj©¹‚këÏQAÈ’FxK°ÓH®zkPÏiĂe¨¾˜ó†3ÑÛÔêƠ'V1ñø®ÍB‚æ,¶Tz'5PÉ.ƒ/­j¼F*¶Đ‹ö@… @ endstream endobj 910 0 obj << /Length1 1904 /Length2 14217 /Length3 0 /Length 15377 /Filter /FlateDecode >> stream xÚôPœÛ̉€ \ƒ{„àîîw'8 .ƒkp‚wwwîîîîÁ —-ḉ}¾ÿ¯º·¨̃§½×ê^ä$ ÊtBÆ6†@qk0=#7@DVY†‰ÀÈÈBÏÈÈŒHN®[ÿ#G$WÚ;€l¬¹ÿe!b4¿ÉD Ào†²6Ö)GK €‰›‰ƒ›‘À̀ÈÈơC{n€¨È K²±: ’‹ØØºÚƒLÍÀoy₫ó  4¢0qqqĐ₫é²ÚƒŒ ¬²`3 Ơ[F#K€²vưŸ”¼f`°-7ƒ³³3½•½½)?-À6(€öN@cÀ-ä ¬€·FHP19ü¥P¶1;ØoKĐÚáÍÅÑÚhxËP–”ÈÛ­ÿ2–ùË€đ÷á˜è™₫îoï?¬ÿt602²±²5°vY›L@–@€¼¸ =ØL 0°6₫ĂĐÀ̉ÁæÍßÀÉdi`øfđgéq!E€Á[‡÷ç`d²;Đ;€,ÿè‘á0oÇ,fm,bce´; ₫QŸ(Èhôvî® _®…µ³µûÈdmḷGƶ ªÖ ;G ¤èß6o"Äd¦@0€‘‘‘ƒ‹´]Œ̀₫H âj üSÉô‡ø­Ow[[€É[@O đí¢»ƒ¶wzºÿ[ñ¿„ÈÄ0†@S5â?ÑßÄ@“¿øí₫íA.mÆ·ñc0₫ñ÷ß/· 3¶±¶tưÇüÏ+fP•UW£ù»åÿ*……m\ît́̀:f6F3 €ăíĂóă(€₫®ă_¾’Ö&6®¿Ê};§ÿ”́ô÷ P₫½ T€ÿ%gó6¹@å?ƒ₫•‘Ñèí‡éÿó¸ÿẹ́ÿoÊÿˆ̣ÿ:èÿ·"qGKË?ơ”üÿè ¬@–®[¼M®#øm dm̃vÁúÿªÿZ]Y 1ÈÑêÿj%ÁoÛ dmú6Ñt\ô¬́‰Aâ  ±ldö×Đü%WưcƯ,AÖ@Đ €‰‘ñÿè̃v̀Èâíqx›̀?UÀ·úß´bÖF6Ǽ3;ÀÀ̃̃Àñíªßˆ àÎô¶”Æ@—?gÀ@om~s¼µè 0±±Güă^ÙÙ Bˆ₫"ƒÈ?Ä `ư/q0Äÿ!&Ă—ˆÀ ó½ùÉư—8Y ÊÿĐ[>ƠèÍOí¿Äơ–Ưàz‹bøqŒ₫Kœƒñ¿đ­à¿À`̣¾¥41±ü‡ÿĐ‚₫Á·ú₫­e|cÓ!+€Á́_ǿ_¾Œo%[ü ßj₫w¨·¢­₫Á·Ưd°₫¾mó/|+Ëö_ø–×₫_ø–×á_øvpàá[ÿ·2œ₫…oe8ÿ«ư·2\₫…oe¸₫ ßÊpûÿgÎŒííß̃Ü?߃·!üÿùÀ.@#ÄÅ9#ójÿ–ûJ!BgºƯ1fV”¾«ï7đê;bøNû¾"¼×,9¡ B3{¡Ç̀…¯ 8ŒºëI¡Ü8‹µ-0&†Û´|Ç2̀{̉ííZú,ÖÆ¦8çJÎ7‚ÓT¸´v—»³©‡_x?7–ß•™ĂQÔŸĐ#C…‡Âáqr² Cú· ¥¶– W MÏ´I~r¸;!?|HêffÛê[*¦}ÚL"<:B±•¾I=âO<èb'ÖŸL“ït‰á=ERú̃´ø£4tQ ăI“Ü™¸’¸:KÓ¨E{üô C‹†TËE¡k=÷SC^«ƒeG¶7JÖ"ôü»_‚µÉJI^₫VU³9Lp•Ûü0ø¬ÓåÁ2ˆt̃Ü#€«¥êWÁD¡î[?µ\ª065&$[VJøÎ0Ç@…PÀ´ªÉ[6Xôơ¸Éºß&²üÖĐZơ‰ó‚HO‡èµÓ2D̃TOK„’T Wˆ‚ÎùÉ(L¼ïÆ„J"€¤sØ^E8;ßïZ_£ÓL·aœüZTÛL Ḱ‚‚ÑÓçơÓW¯ả~.ÖÑÆÎ’¡O¨TmXÙü.{cÙ\éµ ơ¨p»¨Nó•»ÖYÓÑ«ë_©ÁÔ%Âñ₫l…j¸`{øZmÆô(”e²ë‡*Ü•%WÜÆ)»/Ăñ=YIï[³%Ëq¨b‰¡7«àT³- Û7Û<ăoܬÊ–uSéܼ̃/öBSçT’$Ă÷?¡Ë,ª““Ñüû³7¡×Ỉ[Ÿù!W~Ñ>~1Ă5€3ùâ©̣‹·æ€î€%xvhey y_Eê ́”â^¶ßK w-@Î=í¶zZöúñŸƽµgZ<́ù«½@Jê/ Ÿ̃¢Ëuê&ïè¶ö*Umyʤ†é„ƒˆ%³£ư¶"9€eˆa€ËYl„sXPäÙI¥È†¡~wÑÀ;‹øû›µ̀0¯+üÍ«„\O? ))Ar¡àHDQK¨À× X©6‚oé»J¯V^xinâXÎH‚uư¯º‹Éz1BK{-ER¡ArxBt›!|̀Ϭºx­®́†érR}‚ˆ*Áº́/Ê™œ™ßÂq~¨„–L đ;؆!¨ÓÅODr^§û¡;à|¿èÇ ëÓùá,÷b̃çĐÀ -̉=û€ô€¸“g]%bíbRS>m"ŸŸO9mC>ôp>\FÂ’„^'0°ª•4¢I²ŸUI[0ëOO;S€Ê=._>³®OÇÓ ï4P”8lÙG^cûM)FzœDÜƠĐ¾=æWg̀\̣Ï̉\$³é” : Ĩ‹BỀ)†üØ.Ϻ/´æG=5ß=¾ÁcÂCÏ­¾á+̉öđ»FØ(é<…§©xrơ¿)‚ckfjËßC}ÆjÑïäÓ²ÖµuëƠ0̀BNEó(œ„ôÜđ„ºwAÊüÜvÎá"B1asmD¶¥"E)ßÿîçÙ=ÔNi‘%íº˜ö\wJ̃4Aceâ7Tº£GưƒöÇa\¤ »\«nÍx|cÓˆ¸¹¸­•†ßl$̃‘'êÉ[1^Øùk×K)/ëïs¿ÛÔ₫(å7P‚ƒ =ç£9˜9ôCÈlËû2ú‰ù7̉77µ…ôÆóƒvéfa¸†l†WßHWw?>­+_0Yưr<æ„;UèMÂ>beôBq†á b3¨ÿ4'·Á-M‡ ¾~ó_âj j=.b"Ă„%o@­È”±;¾“9úbbĐzFuL”óóĂt æ¥Q9fçs)Àƒ€’ƯÏW)¸Sº ¥£ºtaø‹·9%̃̀–ø$ŒS³‡”NmKú4FLËGÖ¶K L>a¹§b/º»´sMT“ƒA˜(₫Ẩ…́—0!JØs8ËæD•¹VÈ¥²zLµÚ‰×̃öhë ”dElCúËË+¦hÍ}-âk*vœ®Ek½‡©qµ¶:Iïê7® Öä§É¯O“ø,Ù§%H$(RP|êï_Àû6öøß]×–©#[tÌpù/ê>_@i® Mê+MqÇí±:/¦]–Óé§ÎÓM¹©Ÿê•kë`)X O|lXá}…̣ªÂ, '6¨‰5Ë ÿöƯ¹”€T°™ÎæœéưR©a…ÑƯĆü™³ˆK¤ÆÅ-íôe¯;/́|ñä” P”¸ĂöCj;²Â°o)MRzɱT,?u´†7”f¡Đ₫fXè¯̀çwº !êY¡q/œßFy©`BñÖÖͽă9dº̉}Sép´–ÆR>ã~¸G²rɇ5j|;̃#`®œ=̃…óoLZwº§ˆíØh #è#:,Ä&Tsa-#,‡Z:CG¦3Uzz¾1m—ºz€Q¡+wq6Ó o—áJI…@đ§ Ê‡đ@h´-‰o[sñ¶;ècÖ·û. ;!̉ÎuïÅå˜Ï"îÍeÇ¡÷~T¿jĂXarƯ\$ä øtƒ«€W‚¸Ï¡•DWºñ985öqê¹ÖDá5‹‘]ưz_®rv ¸zä¾ú«cÛƒbX!àKè­̀Juᘨ&zEM%ß#)éÄåjÆ(#ë÷«8“ó,»çfÆhÔ| 7tƯIK*G\)gd®'/uŒÍ]&5ÔŸw)ÖïôÂb'̉Ñæ›ÔRx)›ư=¸bs&׃É×í;PR‡m²øCE­û¹Œ¦æ°Êwñ›Z4{¨ơOÖÆÛ>ƯLp!W,MÏ6‘7} sªjçèÅ9=¹M?‘÷g§1o©^ ™-z‰½¿ôªÜü¡Ùç½ë£°¦É'₫\Ở’~¥Vرr10̀\»á¡Đm}ƯßëƠ^IưÎl{JĂÊÅœµĂÛö˜5`Œ"(R³Ơ½‰ơ­ÄX×,1® ǘS€bÙ- *ñáJ`»Œû<¦kR0ïÇ]1uZp˜Üa·n8dố__°âËL˜ÓîZ¬w@ ö\£°è=ät»á‰_‚ßÎÙ£À-́ØPàs¾>Œ.vù®Ø².I@wÙ bqŒ.gßg»*D a ̉+¸M=¹4(">n+IâƠz÷.âNC¿/†^âhzH9"Kc!Û¹â…î8º·h˜® ê]Äeú .¨,LL«ÓPFɉLŸ˜'D“„_^‹qÑrĐÊHä́ZêGÊ-~8ƒÍÖÚv ›×ùw£9gï{wû Bçû‘™Ok ˜sÉohWÜƠq†ªĐh<Ñc̀hXÅđa5å×ÚJ›•!ÏÙÙ¾@¤Ær}ÀH&W[ˆơ3×|Áf_̃W,]¼®6,&'c½̣*c¬0₫­(m0‡mñ+ĂÊrÏíïͦ٠xÓÜđ\, Û* OàáLTÅ}“̀t¿ˆe±áçщú§«l$)¬®îđ-OD}]Đ4¶‚?²$øØ'Æ1÷$́U"áßÇJAHùNŸÇWQ,Ô¤V*’Ï5×ïĐeLa6ƠúB5†¬Üú™gù¼—xgÅă[̣ü,;0"ÄIL}Đ ¡›™´a^·Đ|ˆöјÁg@("ËÚđ3szÙó((ø‘C@_¹̣®ç0êÀƯRӼˆ0XÍ Âơ͆§x8Ǽxƒc . /fM©Ê;l\O²AîZåÉ É{sĐK"l{>\&đ¨)åv» EÚùQ`‹gŸå£»Đ¢c"¿1Dô›b\…‡Çâ ^”cư¾/stËÙỤl‘·Æ̉7XZŸ³Î«?—wßVúG\̃Täh¦`?üÑüKC¬³…³¼Ûơ4j¹oŒ÷ekÖ;EZQq„fû„˜›>Io EN·?Î ai}Îưâ¬¬Æ ©x‰T¾iĂQĐTAÊáÁµ&µ™û¬Íyw˜RÔ/S}zêáa†™̉Ê_f¦é¼B{™äÜ*ŒLè< G4^…{` G…³e'̃'âRîơ·„ºåà…­º}ØŸ[”†₫Öö­ª• ­+£I ¨_LOMœuÙWGß “N"Aùê6bb”íxƯ=“6†=êrÓGPÜJ|áeONñh·Geز%&Ó´2yñ8Àç76ü…¸™ Ü-ba?Ùl¬¢%®—ªê™ÆÀ>l¸,ï$ØŸo™6@Ut÷êŒóˆIăîZL/o`…^Ñîr>Ñ ‹?o­;±€Y‰º A‹,Ç₫<‡÷zœ¸O±óYPfƯïb¨¦“K̃Ñ%/'Đœ~ÇóºÜƯÆb)}óú„Ç©ÿ̉© ?©ÄÚ· 7̣%e(\›Ç|0•ïS¹o[367q{%!Æv»³IF¢yM̃Ç¢í ¿è‹E ÷iL‡’{[Ă%‘A,·xÛ«Ùy2ø!³[@½üG̃âsĂj;b áIfçyÄ&p½ÿs¤6rô÷— ßáXÜ£Ña>oÉsÂî+AIÍçÑT&¥LÎt’ă:È&!cÿ4™³ºÔG«9èêÚÈíÓSI2ÜCX¾©›°¾«đEàOéĂGce!-x8yj‘%ëüèjn®Ùâ+·n„Wûăy¦‰¡ÄV́˨:I¸Íñ„4K2Œ÷0Ö$O6L±%]ˆÍg¼ƠkÂM,‹¯MU7\‚} 6»Å‹ÿkÅr놫›¡́ż+ö6̣øpwê5Ûû4IƯwÁ/h₫j …8.X_ă*„–¨¦Œ£Í¨Mi—­:†l±ˆÓ°·th\@:?i(cI÷`óêuø3>ZµØ•3g!{I’”/̉9tơQaŒUâ%w´́Ç̀JGxäé0IB+Ăv˜Qç2ĐL{²»?ƒ×‚Pç,‚~ßœ+ôz8.¿ö°ÁàQBZ i¯a‚Ú*8xµ(‚ v²ºRƒ+à8Dä™Z‘‡äÛí#ËsÚ¯@uKN5₫”¬:‹»)N½–Ü&ÎRú¡¾Ẓ:éQe"ă¸Ë¸É[(gw;j¹<iC!EÜ>pÄï\9¸Ø< êßiH"­ĂN×eœ-¶ÓơlôƯ …„F:r ¸9ó«̉¸ƠKŸ|äÖ¡¤ƯéÙE€kZç³ADç?óç N Jmb¬¦ƯUÔĂw,QjÅÀYÆñäđjŒ¸v ́ơ¦̣^îÅHD˜•†¿F§xuH|úü¦îMï~ËÆdÖzÅød?²`¿  “Eư0i)‹âk}Z’c̀Y´'ÚP¹|ù}|ƒZÈJÄ$:b§5}‰h ´*È¢̣‰"¿ĐßQ¸hu±®—=̣W_}·¸³\5Â4¤ô+îÛó2›âU%>`‡Aꃾ*…#àƯĂĂ]öœĐ„—î0å1ÉßƠ×ÂỒ ÎÊm¨)YæÊ6¯•ä¿GAßu_pæi“µÀy ẫ¥-ß’-ÉsZ2™ÀĂ8"m "¿zé’ĂßäÈ‹́­iQ%êyM¼D©«O²ípE~ÍAfĐg%g¯2[đWg!"±íƯ"̣NßJ«Mƒ>?Ä’Z¦Ö_›Ä]ÇŸÜU­ZPSÓqÛMb‰ºÀ“¿¶J*ÓÇr»ænÇS¹Ö üNd©»c­ÄÂ!ØÜÿcôaו=:{̃Ạ̈ÚŸ("Í̃A–€’µ4à© çÇÇÙÆ–ÿ$G¨ÚGưkåÜưÆ_Á.¼ÁK¸_ÎÑNô„‰uú#3ư2RÉèx’~b£w(™í’-N9ƠRÜgA‹±3û¤é ¹@?ă9fůí₫êí±J½¤C-¬5=®—Oí́ªÍ(5‘èæ\đLM0æ[åñçP¤*ß÷œ„ây—·ƯxºƯđé&6tp1Ođs?¦·tîª`©†̣aÜ—²€ÓPñ&­-ÚC±Gaô†€F|ï—OG¾Ö[P̀̉B0~8¦Äù€ •k^É +Ÿ™$¹8í¼ü|1vɛĄ±Á‹ÿ¹[¿6}"D>s¦ÛI·rmÆíwđËç}J–ön:LD‰%œf;L₫~ص\„3̣aƯPÅiúœH§úŸ1ƒX˜“}Q§+E˜’̉O¡/aÓ{WĂH¦\oüFÙq­j¾a†» Đ^ ¹_w Z&={Ơ…ÔŽ筮ÑƠ>å¼_m¶ ̃Œ4-øf‹5Ơ~@ö:"$¦¯´ ܱ—|™CÉB§íÄØ…u ´Ê'/U"Q›u—~ªIÊ»î`[”Đë<<=2)›ĂËD± `±f%"FeÀ07Aú UQ¦+'YQL“V¶…²–7èï–é5Yâk«JÀ `°á‰\[ø|Í8˜Í Ó<åíwÛ›ö´»T/›1ư|ĐúưđRÙE=°p¯aEeAzø]Gơ¯ ¦|Ys?úsÊç'´ÆP6óû#>ßæº-¶Ơ‰d>8̉ú@çœ,„ÕáU@B³–4O«åp—Û«x"TÉeÀ${·±é¨½^ S*8€}6^‡k +×đT‡Y÷ƯM”;lW₫3VCº jNWâÀWJ§‡2É1Cäăº ¹=¡̀°,¿Ú››Üàb–’rmP ®7ém]rù'*›(xè H®ßÖuØi„m…%½+ ¹œkLSÖC€„íOe™…; ́=4:…‰r¿>¦g̉On’Ér”Éiôăë6uJQk -Êl$œ e¶äåViX *EU¶ä­Í•X1Ó}›ù̀Ya½ÈhF¸é-á.¼¨đ˜È1É´€‹2è4ñ‘DÇ47ñ÷^iđNÇWĂ›’ºP8¯Ïbiq4¥hsw?D÷(w&Z0z| ¡?Ñ(ßp²+©,]9xv×n²Úy`3ÙJæz—: TgN`¡̣âU‰Ó²$A}6ơapÛ&•†iDm˜¦-Û„ü¡œI–i‚B¨º;:cđµS3¥@¤₫Ë2>´Ñ÷ å̀̃RUß̣mMDăKÄ=eáu_Œ‘û•¡Ø¥X))üë[ h́XÉîEz“̉DwENǹ½«.ˆ£½qƯGÛ–ÑGá“¡Ç3<ÛØ‰D|&" WùÇ>$'C~E‚¯œek_ưÎÈ7b\˜̉ÂXWøyT̉äăª₫;®3ÿCÖåÎí¯Î|h¼†ÛƯ«4Ă}Ư…ªÛuĐïuª '‚mÑ=»O¬"„Q`´g‚c3µ¦÷k~YÀ£zK’»̉©>h½`jï‰÷Gƒúúù́ïQ›å̀E–Û Ô)Ÿ®o—ưÊÍÓ:Êä )øÂv¦̣·rJ–̃ëkSºV{ó€Ưàæe}Äi{·U(s}NH\ c¬è!x`Êt: +ÄT#ª‘ Æ~H†±Đû(A¢9ú۪ܛÑâÄưđJ7xÂ%&iT¥åKd̉ñùbtuFȯ†É‚ñèh­å6W¹bx—g.xïÇáV88]¢(uÔcBÍ#_¬sŸ6ŸÊ3.4|Cëî5ùaoa³xËS¢ybíAçøf• Œ×ÿὴX¿ö!üIl—IÁeÙƯAƉúxH±à;J^Æis5 A…è¸ä²ĐØ. îĐ¿Å3C‹€…Pú=%à‰.ŸS”tú³`öÓ™Œö× ²fÜ*HµAeHÖnA=B0WáK{€_a(Éï¾9eq?ó·‹û+_Ëa™6xT‘ùèÁ]ê₫’ơæp;mX́69kiÆ•º…¹0> Ö̀Hg ¹'IQ*1„¶4’Ô`uØ_ư@oå‚‘ë₫Q©6ưí£ĐF¿E¶)}Ơ7·gæZ¶Đ˜9–+´X<¥!SÔbÙ–=I¥Ê—·ZGü}x'ÈῬ6X„̀Ô•‡ºæ_©»«)ư₫2L‚J²B!¶tú%Û0Ä‚ó{ÆÓ¬á`ƯắÇ×°rPë{g8¬ËđHPḮt~AÊ×Tÿô<'IöNƠ¬÷üÛ¡¾™¸˜U8đ“¹:H~­†ÛirBñ"_l°µĐR`. öÔ^'ªÀbừ Ậw F¾@Tb®‡ă°xÏ_DE›'W²)_E…ưëÂơ²C“Á¡ÉăáD¡T:€Ăư<¹ú†¥LSë¼bÿT笱¶{¦ơcF›p¾f9Q\ˆtFéü8e¡–«g9˜GÈ€,ˆÙ>àE%•ºæIɹp¦®å*o@kƠ*Æ‘=×Ï[œµE‚Dèµ,¸ú|Û6n½œD¹Î%Ư@̃"j„âN… Đ]4LéL¥Z„ªYë₫”À5c RFØ[¨Úà÷¼ëJÄû¼C^0èb&̃ÖAOpÊ)SEˆ*XQe[qÖí¤†÷8¾xʃlî…4/Y!J{Tö‘‡Aèæ²̀mƒRpv`YưWƠ₫̃=̀x̃Ùih\äù1|‘Ñ5s•Á²«ÑU®Ü_•a<Œ¡×`ºV”‚}^êûû|³®˜YüP…-+^UœÏV˜Ä2[ˆ~é/±D]₫‡w~Ơ B}¿̃‡¤í>£1jà3/—r™ŒŒÂ£ßy’êQ¬1‡¼tR²±ªµ#̣Â$ª¾'„èZ₫¹1Ï :±ôh¶̣ÏRœ\÷ë?­ÄÖưZúv«̀âOv¤¥đ'Íé §] ₫=âp5¿àØ?·LÍ„}³œî±É̃¡ëÇbĐÅíàrj™áïû騋*¾I!H̀S“›Æh Ë~y? Óp† ¥Ï#RW¯Oyü©/ơñlÓíAgq}3Œ«‘YX‹Gú%.Ê RzÀƒfæ8ëëµPrSJf²§“¸ |½Ñua¸ùi)Ư7n₫æ–~¢"Ôg{­*6v´É’“EGµ̉ .®6ê+W‡đ.äa1ăË;ê^QØ8_Ñkjơ\'9äXîÔ¯qÂñ‡=3¡`‘đƯj¥ -µù¸<¶‡ç1c×gïW#|£¢n¶îùé‰nàĂ­7¬Ëß#¬‚"hàÜû)f¾nC,¤OWPƠ;#,̣“\K²Y§µ¬È0íæM©=«+tøé¦“°¿D¾è† 2–»çF‡¤r½¬XU3_m§ .ó°£ï«ăµÏJD]uĐIÚ\q—½óÓ¢`5èÍ̉};«ḥ\€¸Pf‹'܆¬5ñ̀ßrÖ>€>7äÑ Ïv%µ̣&¤*…Qt ß|d»?*n¨ÿ®ïæ.lÎ9ø *Øưe]áöRd Æœ € #ÎM.3OµÉ!Øå₫´°§˜æ`Y›X$‚åÑ9ç˜IR¿ö OnµJt ạ̈̃̉¸ƠçóưôA/ %ÂÔúlƠt$ í¯wdUv ¢Ë3=û^‹5ŘƠnóYF3¦ˆO)åèÑ₫;á"l*?₫ €SĐ~—Ê1u^úÇfXr6Ân1Wrkv&ÿ$Xw,®1d}ÈU ºpgñ¸Q-C¤˜Ø+9n"‹!‡v Ô¸x–§é´' 2æ>Ö{«o”éơ¶Ä·1HRº’æ¢.Ë+ßĂŸsoàĐîJ€Ë[zià[%£é’²Û›[xm¾Î«’<Ù`fâáǤƯä‰ê—̃’g» y~*AÅ$₫- öN¶áï0Ñtß´ÍáđÚÄïÛn³Y…9‹Î̓´è¢ù;]¢J9ÈQ-9˜ûK`kWö̀YŸtJ›ï!…¡đ«üvT:ó“·w‹&0 Cû„*£gy8áíF›̉¾§´#óJˆNâÆØ¡aë•==›âV…ôaÜă)ú($ïưL'5P©'ˆ3ÂéhµßT₫¸"åDsÛ%6t$Îô0µ÷5P>@tk₫(|D@S:Ó6kϪéÅ_TƒĂ”J¥0ö>´Œ̀¿„Û‚àg׸ôé rê7‹©kÚºg•|µ+á²cQöÂÄͰI] «Ă:E|Ùíüm” 7)B#RŒơ[t_ƸqsàëV)Tp§WG—°6· ư‘'ïü•í4Wˈ̣à0W*ˆo¡UkM÷§iù"™éú£F·²8rÍ8}›÷åú×´”]ë9AơMï½Ùm"ôX§Î–Ÿ˜?¢,ạ̈º… P~ aN‚ḥXSú+Âñđ§Ơ«_öe›ßظ4[Ú[@₫́ó»‘àûëøÅl$R¼J B¿aù7ô#ưQ*2Xü}Ø= £”Ψ5>¬¯™̉(ĂưOjɺ“¯%̀ê~Ö¸ÏÈ#v6½î¿Ægu¹¦|£å4¶ƒ7{Ío¾˜@mCe•Ú8çÄ'n›Ë1ö»|´*¢È r/ûèHË!˜1O\™»;̣£3úw"–_ö,:[eBÆæ̉è7êx©oƯ](´Ë;à€ Í¾d“‘_P‹qS.én¬Ÿ[…Í”Ç”éØ®Ñ?ÅmA`}[»ô‡Uu<HT»A/̃Ï7Ư •¿nŸ!á:å¿Lơ;8_v2Ê&̣bÿ²¯ßh6êA—̀~'8s„ŒÆ}+‰GoY,‘́¢m°!êdRk…­N¤!n 8ú„|r•¬%ë.ä…v‚Z–‰R(+¿ÚQL‹Z˜¤^öCơ%L7bo“@đH,äkV)ôÁ»6ϼüg™Ü¡¬ˆa´đfíiºqÁ¤L¹2ÏÑ8ư2„w GÙÅI±%(¿Ä.äÖv_¸cŸ)#Üä¼e5‰çÈv•«©¥ØFVƒơ×Ú¸xºÔŌơöµôâÈé¥àh…÷ ™tûĐ¿ơ#`ư6\@_+búĂ@»KªÔp™yÊÁÛ¸É&Å6úÖ¿’œẴû~;•Né~ÿ°Èo÷¨iK÷ÎȦŒđáÔ×$/  R¬[•FA=F\:VcmÎMXriXP£X¤°#fRv;b<’s«°í´gqƵă¸îÚ§_đÛ¡"0ÿù¤q¦^œdWđb®DÉûtîˆ̉9; 2[§¶%Ø –Ág¹Ád‚ÛĂdz¥½/ƒJ`¦)zapU~÷é•Ná‘U÷D÷Ú̀^W;˜hS2\uÆDú*{廨W(>8̃́z~Đç3c̣ˆ^WøâÎç²› æ\ѼÄ/«N×|y²̉™}¥7¥_ṽÎg[ 5­ ÛÔ÷e%œÊ±'‘Ú{µ„‹¤-|í# ø¹À7Û…"… ]ăîĂcÈYt¶`IÑ̉ñ-ưcI|É̃<¸‡*»íYv[âfmh—°ç"ÈÔÈ6&3Ó+ƒpQÜFTioœ´©É|𤦋×Ë2 ˆ‚Ш i:₫Ctÿ$˜Ø±ƒ ¿J‰ÿÇxq`ZOûö¸åWFTTơ]8U•€tJÇPQOm"âA³Ÿp½Ÿlơu¼cÖ"}¦,Ù¬ºúvV~¸ÏĂÀØü„8!Éï’ư·ß le&À}¼=Oùó~?/¡§₫́Ö X³îó­oP‰éßoqw4,A2¸b”Ï_Ô G¶Újʵ…SÈF¥°F-¿ßÂD4Åå!Ô#2Rù¾L5ỒÀ^Ç—N¨ö9ŒxÏXæx̃Ÿ·Oø0¯đ.FÙó¼N×°Yă•~´ù\²ó( å~óÄdƠlÁ dT~H7á/½‚C±_#'È¡_Ê»ùU(f5 YVĹ@ÊÁI¯â<æ™EY\J Ù›…Ø#@“ = :ç|Đü#E‹í7……¼±Í·½ŸƒêÛ„NBuÊîÁ/æƠ‹#î3©_«îM¼Ec ­ăË0<Alê8£˜q”¬—Ÿ¿²¢œ̉̀䣑ä ́öGE£çïÿ&Ëù2ơ‘M ÷ªÉ- œe=ŒÉ¹âxs¤§d-’Ú8…|Ld@Éi®í±ö£hÅiU–h1ot´s‰ˆ!E™°$©œo•I|'t€f| đúÎdZ–!/(äĂ­áEHûù ›ÅGÖÑFùJ¯w¦YÙG̉•Yr¢ïƒphüœ¹uđöÉU};hkç~ºÎw* ·¯[oZNäÆ!p3 D”^³À¼ah°äxÀ8äî³£Vl·ÂÙ‚¾;\åT…¹̀ ±:]ÈW )©EI«¢¤´µƒè¸+f¯gMăÙëË#BÆöơsyç”®Ú¡̃XØ)HoÄà́ùU$Zc‚v»ß³ˆ„Z­hoU 7l‰Tä¥ü\Ö¦’«Çœ="d}h åƒ.dsÉz15,ïh\ÇÁWbµăny0_6Ø‹£í-CíHOmó¸Ư0ÍpK€ô¦­ØĨØëX4ú̀̉ 9ÁnÄYX²ö`̀â|Éc£¸̃[¼cé2ª·LD‹MçZ~’µÉI„'fiøPçÇM‚:Ó¾L ñáu¥Ú~Ă’ û†Ă s†̣<Ÿ0Z‘â¡‘˜ND¼b0‰{²vùjƯ”ơÁ!çàHB&¥»–•»fi¿W‹ơxm¶KÎc‚ Áázû̉Í´±±_-fßGƒñ雂¥²7̉'}̃ •Èæ\=]¾Aq¢±ƯCµÉƯn!ÊËrµä€‹a¿”ˆÜåÛ‹f¤tR7(é|kkäQ\æ÷v́§lŸxt­Á² ĂÏ v&ܦ̉ư ¤:ÿB¤y¬×Ézf:9 ̉ªÉ<ÓW;ØÚø—}lƯªnÿ‰#Ï‚t/!ˆÂñz9‹ÍºÆë‹¢¤mG²Yæ<ÆØX£º?÷°5Ă…E Ă_Á‘={íßHrqå)³o‘9Zj¶ œê™µ*OE£‘% Ï÷Q-ë⣷¬^°¥mO50­8QÚP“sˆơ&N² ªI¨ª,—ŒW¼at`̀¶uÎ,̉ê>ß̣đp0ƒp@EơăPß³Çê½f]ç-Mß…iz© ߸Ää 0.u²¶î²‡¯˜üTJxáµ[̃IL1,yœÖ‰üu¶Å xb+6oôƯM†afí'fø'OHÁí!Ôd¯¬đÖa·ÊËÉ}Wk<ă鵪‚#>Æùö§xNºHâ´ä—÷±[PbôÇ›&e¹u²]±]ÂרSÂ|§i— K„ßJágâ”´ĂI”‚ø¤ $â/u#Ëjú¦ neÀ·ưmÔ+Ü-F{+ơ ‚ơDà̉ä¾+L®n¤%ó´ÑçöMÉ¿ÊÀÑÅ)%+ă4HlÏtʰ–¤°¥/otA32ÆË§âràÂWÇ!C§Ênx0ÊöçO@Hâ ƒ<&†ĐñMvwênƠʼnñw‚çÙn‡;X¾ßÁÿ87Ö=ơR`5EMl>Œ̣ÈNÉ 9ÏA‚øé¡É§@2À*ˤ›úó2}ăÀ3dF©0đ¼¼ô8EK/ïdMß g$ÈœK>~Î:̣ ul̃iTål¡v+½îEk43[Ơ "|-3›Óéäʆ¯(HƒuR17säJÙN¸ĐzS”rà*Q₫ơ×·)@̣֋了 Coy #Ë6çÉí¬L÷Z™ăse ØD}§SH#µ§p̀µỊ́çjƒ¦`R•ùt¬;:âç,…íºpeDQ ØôÂ3g y"Bv5ƳX ÛWa ₫jNÇ• «ôi/ ̀‹xƠ xjè9Mlđ”´Ñß́ÈŸlrQƠ¸ˆë×o®2|¥i/ñ öê§?6ƯjˆJ¤̣¿9fI‡ñŸcç™â&¥‹È©ëàó­b®Ÿ÷zê?Ř•Ο=¶̣~F lÇHÿä»mpj·ÿ¬hỢb6 iñÀvÏÁÑ?¤VăˆipUùp"³{•D\>cL)ĐÉ¥xˆlÖ¦ZLèóËz ö¬Zl Œă©‹´đUψÑ4Ó̀¼“VÚc  A×,jy0ÎN&w½Á̃## Äô™½ßƒª+è{4ŸÏAYK¤ Ek½̃éà$R¡1që`µlQë7‡—fù!B×̀QUœªEÜ ó™î¾. sßœÿÈ%L±áÙ_ÿ÷ˆZ_$@µÔóW®ZƠ8ÔUZb‹µ¶qj3J }SªïŒ`³hÁ]€y׺.1¤ZÈ‚`¥À›S³€”‡}¨V¬^x›©w©NƯ’B`Ë¥…¢7á ÿÂB½¢Ke‰{×'7ñÅ—t¾Ç»)Ø.í|¿IÇ0 ûÉæÉÆÎ p"MăLVp|O+*yÑå¡óaX7^̉̀ođ-‚ÿù¾³öaØ8H‘cWIå°ÔOʸnˆÍɯXæ×£E~iÔO…™ß̃s{ÁƠj ïÆÊtC̣¹ï ¤A;´3”#óµ)jÙ:[ŸÆ™i4:´D«P4s¹ ܈uËkz5´đØ5·B)lѯ0K ëÊX x€90¿Uk/`đƠ2OÏ –°~›ó"½  a3à̀'³¨yïÉç3/µÍÄ1MĹ—JX`Ùhæ }Øç̣=â;·ëÆ’;%ÔKÍw‹Tÿ|pƯØÇ/硘ÊaŸé4|G®êÙe!¡ù*î.üñ!Eºë¸³¨E9!Kü,ĂÎn[ẃ!û¡)̃Ä^ƒiKsSáÙdĐßFŸṬ3³ræuÔØ{¸¨vƯû2“²M±G‚•ÔhÓöGßiä5díTƲk{ékïd0RF<¨‘₫l^¢eÙüCSO.Á¬èoñ‹/8Ç)—VQ¹cÇç}¿×ê/'WÚßá2d¡³ôXQ\¶:\­4K ÂUµ̃@…m@“îƒ×‘\÷(‡gÁeyØ\úơ>›û"@ïúl₫Z˜ƒ3|ÎÇP¡0#Âwç¿>J@«@Êø¼x#ko –y¾¾jmÔŸ[™z₫î¨Ê€ÙÙ*öàÈrƯÙ¸›¼Åu¡Ḥ2t_“-ÁuÎY¡oÇÙôâ¡›Úxæá±!¼Ù/âü rw7c¦“Ñ95´ÙKƯs†¯tS #$½³½tüđ%MÇăP8 _^̀( w4@s×b»a3Ô“µF„B[_!ïè ŸDÿGcóq¸îµ",ºµ% T{d›=Ơ¾• ‡WîÙÙªÄ`³”÷“̃̉i'}Cuăç:GØ*Hl4‰fHÂ>dôưܪ-ÏÔKÙ| ï•›oÓ­aƠ‹d{yưp4£¾¤ âßÈ“ñ9yóL˵ûCɘÙh0R¯*̀VeOs9 ‘ơRÔKm Ăô´ø ;¿$̣‘̣̀â R£²Í»8¢ñdÚlM Đ®)Á¿_c V…̀àIé„V6F6ăÜꨟHơC}™Ly<¯©—yw/b¨Tïg₫r÷rÍ‘é× ÅdĐQÉœĐ’µœ×l…ï™Aχ̀(„B}ê•E!¼JäêWëA)—îªty±‰^N•* æú³ƒé*6­d)Ú­íe$Ë!y|™¬+xœëkˆ)SÊ5̣e>¤fg›]E®E¢E¿+•ÊX[à  ËÉÙ1èÚd2·YW&03÷ơ¡Ga¾Ïnuúàg`áËΔôp%̀Dd2•»?PSY„$dùÈmBƒi­N4.ÖÄäø,Ḅớ^6I¦À§®ealo^z¡DWL̀²…+ƒI@Ơä“Ö+ܼÇgó’ü] ‘^zká‡iBN®=½]„Àª‡V}É‚Çß~EÜÙÍ|²¥̣«Ç}Ú”¼}ÙI¥å–2Akô—)28Æ¿ÎΤ¦†¡›^9‡qCÆ·+‹·]µ‹ÔµñfnÑqƯÑöº{l“”´ĂÇŸOu¢{GÚWÿº°‚GqonéđhóĂ(  µ¾Sg̀—Öcüá»<üm‹O¦d'Æ’Q[=±£9mè÷Óü+\ÜÁ¾ê€À(3êï¤Æî>/•h_B^ˆ÷":”÷jFÜä¤ÔlÁ=ó5O>Ÿ £x`OÏZk·C̉ƯéjTrLâ–Ç.;¤Ë́2l«,'} ß®.áæ Â7oƯ† ±đHzC4 Ă}ÑW©C:̉ŸñFp#ût5æñ>ĺŸåĂ@*®#» ü?î¡$ endstream endobj 912 0 obj << /Length1 1812 /Length2 10289 /Length3 0 /Length 11420 /Filter /FlateDecode >> stream xÚweTœK-îîNÁƯƯƯƯ!h¤‘ÆƯ-¸»»K ‚»»»HGî™›™÷~¼ƠkuûXíSµO­¯i©4´Y%­Á–@9°„•“C ­ª­¢£ĂÉàààfăààB¡¥ƠA€ÿxPhơ€®n °“Đ1̉®@ È‹MÆ̣ª v(¹;8¹œ|BœüB.Á‚]…2 k€*@ ́tC¡•;{»‚lí /+ưûÀ`Åàägù+ étYY8T- v@Ç—­,Ú`+âư_%D́ g!vvOOO6 G76°«­# À±hƯ€®@kÀï¶jÀÿ4džB б¹ưí̉Û@<-\€ƒÈ èäö’äîd t¼¬ĐVT¨;₫Vù;€đ¯íp²q₫§Ü¿²9ư•laevt¶p̣9Ùl@@€ºœ Ä Â°p²₫háà~É·đ°9XX¾üẼ '© °xéñ_ºY¹‚œ!nln ‡ß]²ÿ.ó²Ñ²NÖ̉`GG Ä å7?+Đêeç½ÙÿsÄöN`O'ß° ÈÉÚæw+ÖîÎ́ºN w ¢̀¿¢^L(ÿØl/‡ÀËÁ]@/+;öß‹èx;ÿrr₫6¿ôáïë vؼ´ôÙ_~P|Ư,<€ˆ«;Đß÷OÇ#NN€5È °Ú‚œP₫©₫bÚü_Tà ̣s¼ˆÀñûóŸ'ÓYƒ¼ÿ ÿë ÙƠ”µÔÔ ˜ÿÓôÜRR`/€/+€•‹›ÀÇÉàäøÿw! Đ¿ˆü‘ªèd₫Í÷e£₫ÍÙă_B`ø×œ0₫»–øEÀ@Ă?z7áàå°zùâüÿVư_)ÿ/±ÿ®̣ÿ¡÷ÿå$çîàđWĂ¿C₫¯ Gƒ÷¿b^$́yUđËP8ưo¨>đï)VZƒÜÿ׫±x I'Ûi³ ²ñđưm¹É¼€Ö ˆ•Ư_2ùÛ¬û{́@N@ °è÷U`åäàøßˬYÙ¿\'n/êüË|¥ÿ^UÖÉ lư{æ¸xù®®̃(/¢ââåør¾ §5Đë/=ØÙœÀ—ÀK‡₫°+Êï£à°kÿ6ư…ù́ÿ »å?HÀnơô›+»ơÀürØm₫€/«Ø₫ýv@^;èøBÂ₫øÂÂáøBĂñø¢xv§?à đđ…†óàˉ°;¿hüïb.î`Đ ô×¹ư“ùBÑơøBÑíøR ̣|á₫ÏF½Ä₫u©ºY]ÿ,ù̉ˆÇđ¥ÏàËœ²{ư_ñ₫¾4âóü¯Ó·rwu}¹ÿÔiüÿuư^@+”…Y°•p؛氮»FIROÖQîÏ|º?Ư)yPâ ·Ø`>©ÙW‘̣Ư¤åÉh Û‰ƠĂªÂBG$’ÊÆñ{Ú Ju³!âà†ăÀ(D“³µˆ¨ ¡#1Œ_p|&IzK”Qp í=¨pFUóĂVLzG;ŒH~g´·ï¢@JQSR‡¬¾?Ë(Hđ3äT]Á!@Saúk Ç›È T¥̃¶‰{z%#Ô¶ă[ܺnó™Ù~)t̃ÀéyHó¹%©a¿PÏH/×O»ne‰è,e1…ô{W,e_oT`“h^‰º̣k|ˆ¸J-—‘›=áz£§nế)66Í&4‹–ùÙÆ3ø῭Ná4̃'Ÿ¿êèkß”ĂYÎd/ḥ»9Í\Z¬AD‘â«Héyư˜1Û…pÉÎöcâÏI;r|I¯ÍZ‰‘ fR¿@Ö1P†‚t”ôjö°O€,¨đ®°ê2}SæÊÆ%d'~̀ă ÙĂûʳx²r:Æ]œ^©[ô %3BVư“¦Fç}µ»ỡ-cªœ̀IU>Ç­cܦ!’uÄO^‰&cIÏCïOSü¼˜RbÖơRa`áƒö£̃m~Öá<:9C˜R€öï4êƒz®–üÎàƯ'Vj•Q‹Â,¾{? g½DOg5oŒgBb½̣}€e!`>:Æa@ZµÈ1ƒư#.kÁÓe툆À>éd ºL®ö¬hŒ  ă<âî$.º÷¡Uc­—IÆ`+ew(+SƠ;z²¥(¿Ö,A¬> Œ¯B($ăưÑ#„á·|x¸×RJ̉ä(ĂVú“Ở̃INă³Ä–âêdA¼k: 8g[»EÍ‹SR₫‚±&ßP6‡cđÔ[¾´÷,Ăë]çj`Ü×+‚EÓ°¬>ễ°›NM±Ói³YO;¸}Qy•Ùӓ̓ÁñtÆOEQ3̀uSÁ³³îc‹ëÎÍ{ÖEmËCâ,œ¬›Lêú9ÈêGóUàNF=B…/,/r}ûñ»ü@‘½ÎOMSiU.ŒB_„ÜŒ28ơœ\~gPQbµÛ0Ă{ ûI FU6 Ó»¾-Ă×StoÖ¼êqnMÓM«Ißâ{lu}–4–r«è™ûÜÀ̃zíœT¼̣̀ŒÉÀÏÔ9 Jăûx¤íMđù°I†Î$)TZ7AÇEëu{4“G¥Í­Ôz5?JÊrZAwûJ₫5ŸYÄ̀ÁOrÖư'¸> @Î¥rxi©°¨É·-_zRÙ@ ¨YÚÁg»moN*ª¯Ôº;»ÈrÅÛªûx‘Ê£̃ºÑdº²A›Øt;~·‹Åp5™²^™szÀü…{ƠÜ̉ªĂ&ÈÂtNIª¤aá|$±XŒDăFkÀ‚`stôC3́rât9 ¸=¤—íbÏ~C‹$Ñ'¡+ë3àDjÄđz»9¦UM3• »ö!₫jßZ‘3~ÿ­­§¬Ù‚†¤f§)ªd–˜·M÷AVƯ—;9₫¸5 ÅWâº̉̃¢‘˜}mp—F©‚Ṿ*œú×Ô¯‹+ˆp̉`c¾R0ô8¯ö_.  >­Ư ¶ndª/Ȫđ"ÎÊ}ÅZ²ÈĂˆ4ØiƯ2OĂVoä(™Ø‡›ï—³äŒCèM‚÷]^·%2pâĐZ–?˜É¤7JS{HhâÜd{™•ÿXΤÿ¦HÅ6ÚE¼ {‡¨…­é-]«°ă™¶FÍNXT­c|`Ơ…e¤cơÖ&$>(’¢À‡­&¿XQBîơDsÙ‡JÈ;&ùn.7Ê®‡ÍP•'ìZÁ”Ă#¶“ºÓ}«RɾW‚ZI1I+²Ư}ÖHC8Á¡]%í]vS|"äß,69\F̃˜…¿»€đ#p–ä¡%1qỂŒ£ßÓçIäư aEOt U@ñ“$W%zdÿ€m©!ÀWªnÁ°â2`(œ¥÷b©Ÿ”?äËYÈ+̣ù§àú‡5éh†)Ç̉©ûïPPŸ²›8|.ƒÏJ'Óc&úŒ¥@M(:¥lÍ„đÍÊÄ÷ăÙhú-₫î;Lê(ƠrCVF±ÿ´Â™5 ‘)G$±xi[,a•₫/́kË>اqn ÔÈ*hÎE Ά¼¡V ¾«L»Ö]üëÜ-̀ÈtdưgỊ̂OXÛ2‘Đ4^{x%apă!–•HC+²Y·.@?È]œ$ñ@øÄeJqjïº#Â7ÚéO PÍ«®ôê§O”ƯäOjc¹¿ö}×§zß?f"N2’á”hZʲ(¢Á±Epû9ç²đl‰ëÔ₫Œh₫ÊsôLúơí<¬ï.ùM½«̣'€î]QZ€×cÊÈ ö™X1Ɖ·2|ª#ºVVpnÎ8­7QHˆg<ÿ;XœÎ,̉lb•÷>“­hßĐ„ IK³¬>¯nÅÔT”¡ ̣ $Tm«PÏ,8₫.÷í¦CñoáÁ…t[ËÛk…¾Ç´S̀KVç(y°ÉOrr̃¸è¤Ç¯n01¨àÜ"x)ĐH5§/ƒÜ·Ê₫;ÎM^b…”a!çè‡æ Ø„›̉³[Âá¡wBÇ&À̉ù§¾×½—)*vwíđù>¾ßÛ¿J*ê´ár¾œ¼Ơ³}¾C~߀n'j4Ø…ê…zĂ=T©Ÿ¯;sltóË Açˆ&_-€ Û߸œ¬ăÂyu¼ÿN̉Đ8ßR̀WIØû¹QÿêM´˜aGöƯØ3"(ô¯̉g{xñ˜@¾–Åùű¹₫½•`í¯¯¦̉¨iw)Ó5.RkI3G.¡Cç%|J0¬{:m†‹3.ª¸†ôº×ưOƠ½çă´…]w¬ªÖ+įđ"Yq§áH£â¡¹á½Ùʰx„3|“t²SR 2§(Ôs–›·™­OgƲ üÖ´Ạ́£Ï6‚‹[:˜{PzàcQ&₫¬?¥̃’ÂLcømÛÊ6 êˆ$„üÁơgd媽$ù®ü₫δ8¶ßĐÇϳÖ]3ĂcxÚ½“̀Í $ƒïï ¨I&[·3.ÁG₫̀Å·̉±:ª2{chuÿ–íº†Ơ„Ëzăbj³Â3s‘Á=i1”ơØXË́©ßk6ÿªyÏø}̉Ơ¯üM ç̣̀́W"Å@/á)Öä5µx6ư#³ ’®óT`á«ă§¨1+t* Éo":O…„Ó­O£̉Uû̉á9˜z4uĂ''Åzưe¢ó Ü+-ZúæNú;Ä‹î˜̉1î7PÔG[”‹ (" ëƠ²•6hsk vki†Àƒ²ø¯îë;ZñéĐÇ'`₫9Ç«®%˜¸Y70!C̣Z/lđ2OÉ)Ô.ÖV¡¯ “Á… ËU¤ó¾ç!‹ä¹Iî¼÷¾cĂ3Ó,µiÑQŸ»<3đ½)¯…“²L‹À+1$b~<¨Vb×ç––"—ơ=|ÙDxo>u<·äăơ…o¾&.çӣɮ̉¬FMùû)̀¤ª?`<”ăîů$ܳª×’k(̃Źº0¨jö@ ¶Eó…à6!“sÈ‘L¬ñj†•(ÉYöpµAæp;4+f—_>w>70‘Í̀…f²ỀO¬M©ËÍ̉¥›…‹:Á±́hIùl.1ÚÈGiï5|{@ܼûÄŸ~_ 5”ÓÎƯ}>ÁN)“ ×Bˆ£±Ư ÿ á́Æ›?NE₫bE{ÿ-làVESxLñÂñ­_£Iz‹÷l…GưÊ#¢Nä>hñˆÆ—å.R®—Jpa ¡6ï@̀ÓW¿}ø,¾rßÄeÄÚư÷4ˆ·¬d1­¶]e¦%’ë”I}C¿‹é¾9¾…Đàåä$›ª¥û­&₫8Äù­Ë$ùYé•ZEP÷5ªß#ÉÖ²óÜb+‚EuËŒă ?‰15 ÊfY—…´¬²c¶|vt\¿`Ä+âaج‡À‘p“—=V–oÜẠºƯ8cSé{)ÖFKa¦jb£Ọ̈=¾öܱØQTe¶ÊMÇ€'̀™)̣¾₫Ò«JíïÀ‘ËáBϦyö ¬Öj¬Ư£¾v’¢ ĂŪ ç´Æ‚¬bJäS ï ËÄ%ר‰¡vá4¾èÏs úå[à<¶5bp¹ẲÇ\´— æ%éG,jZ«‰ñöqf¯ >[F£.¼A‚¤’‡sϮƸ•Đ=;r?l²Ôwöđ¶¨u)ÁMÎSuT¥¬’85NLËî̀̃Aă4Kv‘ÊÑe.:̉SV—Ư’‘–‘,º/Ơ §Â6€a_ZÁÜErá(ù”WÏM¤7îcÂuϤ¿x¨•ƒÖk`k³k?,îûDI·́¡\¨!ăyN¾âóU ÄÊĐhíIPßfYbFÀppâ(”™Ô¬²)̀o¤¨đV—øH>x0Z ̉Óđ̣aDZPˆwR›ƠS{â¯K²Àv›7(6]/êm“qPØOÀ’#ÊÙfÜɇkªJ¡‚{mvÄéËÓîîå„ULåë85L)^Î~GăH{iÜH¦_`±¶P!ĂkÀ&SM=đ¿P×$Ëü¡µ{}¦"Ê {€‡¾h@ËÇE›n@hôa„›7{)>e"3̣ºÇ»ÑØY ²¯̃ï¶¿ÆÁ«j¿Ơ³7ë% ̃Ư}3û4Bä0£UëJ₫llÅqR天ô8?dDo2ă=B‹´±ÉđVt̉ÖO³Y°ûĂsY€Óă·Dl.8À—¾|­çz‚#₫¨º̉X—RÑĐQö°¾#Øü »7ßå'×cdH|¢z¤ø{( Ñä$ëê‡Ư¯an˨v…<× 8W<ÓäT`X­5p±ä%Lo[sÙËHÀU;́ï ê$_‡åé“¶e¼Æö±Yö{|HÙ|úÉJ`CïÆ º»|¨hø†íؤ]»Oüí̃Ed¶“èN×—)†ceÁä¤#à’V,gcî–o£ ”i—b^kÊưÇƯ ¡Wü̃D6™â/¯¹)ˆß7û:sîf.€ÎW¦™È½X9|ođÇ£¾l °̉“bPNĂ ¬Jv»£¯+kAu½vG¢„¬]9H¿ê«Û#A$rt?¿ËÜ—¢ N¢hñ‹ªè—oE´kđdß¼Eáö­V¸»ăOœ›<›6¢'ä%¿(¸‰’)L ñç‚çËßÏul]!*꺈5ö8n_A¢$o`çú`’ö@|4ä'<YđPƒGcx–VTç-¼ÈN;ktˆ§gp«Fïoă®EĐ¹iîW‰?àMƬ#]Ơ[º’úĂR<lt˜<\>¥«©·uo—äỘ{—+—Öl!ôu¿ EƒM$Ë‘Ç4lrĂUÄƠº¦:vét Û?+™¢ÿ´HlÜ“ ©̉7t:rëëvËø¦±aé̀ÀHwÏF\Vr›º®1/úÅ$0×*a—$ÔÀ›tó“ya•‰)rÁu¶èAØo¥{ơLÿ^_ƒá³á|ÿ¥¡ô—5̉–Ă~a©®O=ŸÆÅ–U@j}k‹÷ÏËä!ÜS‚~Æ`:Ù7+¼kw† Ÿ§¹ Îl.›¦ÇsŸïơ£é’ø^Ûma₫ÄÈB<2·ĂĂ2̉»—¾ÏE‹ —:PÔ<€>[ŸE}ëEy¨8Só]^÷m²©Å¯uñ¦̀ZÊ¢ ¨7¶ß%oŸ-#<¹ÉÅ2  ×¸6ÜÛk(…æ–Î÷å 4©\lZ%ÙkÖZ|ÿñ¶ii,± [“©“8¼B÷4ăve7øJç¯ê»wô+‹¦rü@)Ê_ÿ`(ßyÜ:”³6B̃ïÏR2·Åo–x‚hÄB_[!äÏ×6s+Ï®Á`̣C©–o1ËX¥›Ñ•2<ÖÛ hÁhƠä°oµW‹Ç~ /‹ ÍÜG̣”SV₫VØÙU& ª# ’d`LƯé">Ôbă?=æ₫X́Ëï $J|Ox/v¹ú…Dó"VWÁæûœỵtóÙ₫ÛÛ†®%ÑtŒc¿ÅqѪí)ûn¬]Ưxơ¸Đi+ñ6ÇùO2W.5k>7ØøˆGÊĐ_@JJ-ëƒËơÊp6»"«ư*¦xbfFiŘVÚ8ú{ÄO—bæ>Ù@{³lƯâ@¯$±ƯÚ*c;h’‡oáw¨”~BĐ÷o%áÑ'}nb–Ó»ùVTçÉ£+âÙu]YK´ú,^ÊË Ù¨’÷j«¾á§^®5zÇ(.¯k+tAûéNöîgq…cåă*Œ ÁLÄéî‘ˬ“•œcă8a}…@zœK+t º4́“£9Íj“ÛØM†{R“ÍϯÄ–›Ø‰ö©g¦+”Æ&ª"oáæ+冇‡‘!ùhj7í,r}Â.n]·Ä“^~tbV9{̀H»ü‘o+FîË‹È&ö"}ùï¤7Äæ­4`ih_i ä¦W±9\Cö!T²̃Ư}X”•Xè \®Œ˜~˜]_Bê¨÷¼æĐĂñD0Đ@Ñwøl¯đoư ©Û!ç4Ç`º’^Â?Ợ2ĂĐâ!7bpÖ¼Ëeû&¥X̀ä]ñ¢Ó_ΔÚ8ƠFƒ¿üˆ¡‘ĂOÛ¦¡á¤²EĐ]»Ñ–óy ¹ Ư„Åäú>4úuî¼ù¶óDD\Mqmï6ùi‚\ÛȤè¹å8pươẠ̀²n–L\³Ô…*ÍcÄÀ©̀₫›£Äù4{°+$e^*÷ªđµ’Ñ*åơÚƠ×ÑS7Ä›÷Đ=J„â¬ñơªË7-¾h‹®Ó̀ZÍ¿f»ú3#¯tyƯĐZ Ú™D‡Á~hcÍØ˜ú©•¹„»¡“D`é’7¿–Ó·\6P*%żb; 5ưïMă^kªñƯ$®Ø-¼[à)^ÀÈp«5“¯2+\‹Ó1– /RDfưe‹Z2èöä"®ÔsUZg¾x{5ÓŒUG4ÇM‡qsă ÂÔU4ơædZª+ç+üNµ–Đíœ\>ëpeỷ]µ́Ă¼«æ¹₫¥OB"´w¸ºCºM që'㸄ư<{j4œRÓ̃yøÈåưaÍE¦]Wc9˜ sÁèi§¾íà*lzØ`Æư¯%üđ92)ƒæª´ê°·å×Eúö÷7ÛEZ̀4÷œ¯…QÔÙ0·̀¸F zOuïTñ¶öÈÄûQ°“²¯>¡¸tv˜6.R_WƠ{}Ö̀C×ó]³¤l(̀,$ª>ŸÜfÄÎßH9ÆÅ¶–@°B®4¼i¦XM´8}9uh‰¥MW½(gጹº»øFª!vÍ×;ƒÜ‹hjbæ¶á ŸG}(O%«›På±Xöœf]y¢ØS»œ2ï̃!Ô…‹ÓöUÓÁ) a~ôÈ|UÓ*8Ÿ’»©äÖF¾ÔaóĂi7 Âˆ9&8·ú Î|Ï$Y”(́ë(ºÜ {rèÎlé°ưĂ;EC°†úa~₫¹® d´xèœv­ Ö7n₫¹ôwÚ—•=z8$pT̃¯k“«¾!AG4VQT 1ë\à9(´JŒ´Y7‡Ïçn–ßhQ»@ ®¶lă>‡`·đ~!Vûl›+̃q…¶üËL¶ö㨠̀₫w³¢àÇ1ÅKÂ~¡®?$Íj|²Ă‹)ï@‘³@çùL){¯ÀE~&Å4ÛÀ±̀©At—wˆD«Ù”°XB‘\Nxw¶#N:wQWi{«©':Ø_„¾”%¶®üE_ơè¢|Sü}¶)¼æä=r•*³P@¤¸_Râ`²b—~ÓU³GéÖYÎ]÷9Úüê¦À±üé·8–}G‹Aê²üVÙ±>Üøƒ₫ù~éÔt?ØÜCÄ›±‘h¾ŒÉƒ w˜rࢨîæ.•˜ŸH‡Ăs›Ï+ÆE‡MØ!±#:€ÎâGxö÷̃̉…̃)<%"ê…\V>¦(IbúĐ#«XA>O·`¸6~óBw¦œ¯ă÷7C=ßÛ´7Æÿ «%ÜÇIf §Ă)B&*GïË׫cá› ‘­^ƒ/ú·4Äl’çÓÄ©LQñm€RNñ‰½é©‡ ̃" ÷¸Ne`đÓV®…"ú[³‚®Çt'>Úyµ±†±é˜6°*I×F§®t-L̉ñAÚÚî¡v6©1ùüÎ0OBˆ+3 Ơ·0/‚_S;Á·Ùª³…ÏN7Foréœú¬˜ă“ÿüg;ñƠƒ ¬1g!a_“(ÂuRkTĂ³Aqf¶˜-ßf—­V6Çd ÔPŸZlăñÛ'¶uÂDó h³î·üŒ%a,ªG₫´{Ójµ“P˜µÇå­×CU‘ Đ÷DÊÓÂö"(T`”‹ŒD„—vQæœ"¥§PFx¶çºÁ’uöÇäóÆ;xÂ&ªa£ª¹mºeáLîi%”€ÆúHÑR\Óă©…öÁ'Suw<«On­÷F£©‰Œ*÷ñŒ+T¦ßCBÏ’ÜZ›‡ –ÈƠyP΢o¬#sЉû ^±@©¨ªX›O5VË]¶tóªàf—LÖ€oY—•$wơN„uàIÆäY›x¼5zi DHÆ3fG̀nƯº|áYŒ}ú+}&>zµØ 2’ëË\W’~ƈ¨´ư™‹‘´ơo•äH®ÜîçÎÂ?tµ·ú6ÛÈ-Ǜ-6̃âl4¥È4¦ ê}ÂU¶$¤ ẹ̈uæªH´⓺Ä̉†s®i3Œ%U¯7($yEƒùöh_‰ÿî,©ă!¶´Îû¼¿!‘Ø€ £ặ¦i×MƠœ‘—œ/ôµ={¸ú®á 5û ÜÄ&ùÍ/¾WöØNÍö&®M%í±B?¦$óÚ½8{çú₫„p*´D¤/ưÉäéœ2:ØíøÎ—"ûuÛAÖ‘ødiÁæ:&¬½#êvuÎMôôâ#ïY ̃Í"|‡Ö<Ë U£ÀÀ]WÊwîOÁ?¶áUê÷̀=ªVå—Ăé¢í‹¶æèÂnqû~‚?N’¹2âDSTMô vbO røe>Z =»&áùÖ¾¯3rÙÚ¦̃¢‹”&²™TU_¢₫@o÷)‡ Œg?O8á¬̣‚¡×ცơÿèG6  endstream endobj 914 0 obj << /Length1 1401 /Length2 6058 /Length3 0 /Length 7007 /Filter /FlateDecode >> stream xÚwT”[Û6R"ÀC7 ‚¤tw0À3À ]̉ ¡̉©H(%]̉ " %!̉Ư)~cœs̃ó₫ÿZß·f­g}ß×]{_×^ëaaĐÖ㑵ƒÛ@”à0$?/H×ĐÓă /$€Ç¢Eº@₫²ă±B<P8Lâ?̣0eS#Q@ 8 Pơtø~ ~Q ÄÿÂ=$°ÔĐàTá0EîæëupD¢êüơ °Ûrüââ¢Ü¿ÂYWˆÔ 4ÀHGˆ+ª¢-ØĐƒÛB!Hߥ`—rD"Ư$øø¼½½yÁ®^¸‡ƒ47à E:ºÄĂ büĐ»B₫ŒÆ‹Çè;B¿zp{¤7Ø  .P[ ñ„ÙA<Tu@OEĐrƒÀ~ƒƠ¸?›đọ́ÿîOôÏDPد`°­-ÜƠ ó…Â{¨ ĐRRçEú ¹0̀î'́‚€£âÁ^`¨ ØøƠ:P’ƠÀ¨ ÿ̀‡°ơ€º!¼¨ËÏù~¦Am³"̀Nîê !x?ûS€z@lQûîË÷çpapo˜ÿ_+{(̀Î₫çvn|0¨»'DEáeÂûÇæA H $@܈­#ßÏú¾n_N₫ŸfÔ ₫np7À5$jAưáù#À^éá ôÿOÇ¿Wxüü€Ô Ø@ 0¼²£̀ûßkÔù{@}3~üèçïï7 Ắà0ß࿘OIÉDÍXëÏÈ;åäà>€??À# ÄÅÅQaq đßi´ÁĐ?müG¨ ̀ˆÿîµMúơ‡́ôÁü;—&E\À₫ÏÍA [Ôƒÿÿ̀ö_!ÿ?’ỵ̈̀¿̣ü¿;Ṛtqùågÿ øü`W¨‹ï¸H”4à()À₫jù­\ ˆÔÓơ¿½*H0J ²0—¿7P‚ú@́´¡H[Çß|ùm7ø©4( ¢ G@̃-?ô_>”¼lQ÷EÊ_.J=ÿ.©³…Ûư”™€°öđûâP\üùQz´ƒøü¢1ÀÇ ƒ#Q!j¼@Àî÷óL…@Ÿê€¹@́‘?]¿­ü¬¿Ïï§ù_Um==PNä/f ZúkưKéˆÄojn+îT̃rV)Kăͳü{~±5æ‰IO´0’ơs¿£úÍŒ£îrÖve”©Ú“%‘#4œ;gC>æY!s)ʹH4Å%¹=ü₫óĂœÚá£hj̀̉íƯDZ"k3L3¶$£‰«ÑNÁỢ•‚ï­ˆUSñMÀ(:e1wˆbå¾5bsc¶E·|–1Xx n î9½0cäjkçX/®¬b9YX£ÅïàFÍi±}xñªˆp2ú ZíHTE-Ç͵8ó×̀où1ơ!Ï G¹0g¯§ûº¶<-NxåÏç}:„lIÖ EcºíÈ&s°Xs…ôA$ù½‰ŒqV]6í“ß6ÛΪ3ô‹«okb.„YÑăØnCZƯS÷hÍåƠßơ9iMưèæXùàè{Ó#”+»Å=ÿ O£"”p¥RªñMêÀú„ÓG¥Ù4®s·AĂIÎƯêë·z̉ ¶[&ä›^Đ-ñpµz^ó¬&ë±3c\ÑíŸ'%m=ño‘D+¬Ek{Uí¤Z\³æ¼ưó¥]ˆ„³K-b4'0X·°ư—zÿ#”ÆëưŒëºá¬‰­S:Q¯Ÿ·̀qË‹ Pàngđ́ ’"eS?)<ä%C2ƠM@GÖH-Ü]ôD„´Æ)×jZF!ë&g¥ˆßăNHƯ‘kÆN¸4dRydÚ2Mº“Êæ‰…}YçíkËâ ¢1tÖmbé#M½p ôGƠ£æ9L Ó¸^ä‰Ă˜iº€fñÔ‡G¾¿đÇÈz%æ`læ¼G³L{?Ñïu·ÊŒ~ëdúÙ·–Ü›Z*£ C½ù}¯C˜åe0±#¡Áü–Ò\é¶²–LGùnKRÛMáz~9ei#åæ¶¡hÏŸ|sa£ë>Æ9Ư¡ƒưƠ¦°ºFÇ–«Ö´ûêËơ` ×r6el:&có³Đ’ùeÇS …Ơ×öóˆù‡@Ù%µư…†Ó±ÉĐiGÉæH­C b̉Àø†Ø/×V½¹ÇD»~"‘ÆJ]“ƒVMªÁ¡ë¥$Q& ¤Xs»Wc ?J#íO¹ơYj1Û¯ÅûÁM©:¾¨éƠ'½Œ©u+¼EÆw"&¦¥ơLB¦°–sÓÜ 0Ư°>$–Ï+jÀôDkÖ¡·)Ù)O*É®đ©øZ¯‡b19Èä+C‘ôôº¬¢îƠëoDXïÜîF̀½GsVíß°¥  Ú}¦G¶ôüùĐù«jÙd«"̉L^÷äWÎÚW¸í/.ZiØđ¬!M£9̃ÛÎ…îŸäMd[Ö®@©»Ë&sb}AäpP9ÛßM,IῈSs§KJ;wØù!\#-Óư)%tiépüFTÀ'Ưƒ@f & %̀^¿nơ×›Wµ.ï›rŸ̉Îv>K]7µ›$e%: :”…fàÓSnÚô“̀T§¥¿¬ƒQ}´˜i—Ö L˱k«¥z]#7 êœñ™û{AÓ"º¬ éÙlû‚ố8û1`î÷Ú—Ûä†̃Ó >&đØ~ôæÊ„Û¡ÔÛei*Pƒ’ƒZ̀qƠ *E€y” úF(ÖÖÔA>ï+¡„ufÈjƯ\µôi¡{[—¼ï ,—ÑŒk¿œêÍ;GS'»AGçÁ‘)] ¾ê'̉¶W2Ôª́'(lºă- {w“f4Ë Ç$1_N ÷aèŒå*å®`ÂÆßXwíMaÔ4!†d8d“GZỊ̂ 'Åmu&ÈâG‘% 9N‹pµ6~jơR§Ñ•\Îå‰Â˜J›h^å£S›ˆpäÓ̃é&Sˆ•*ă>_#ñ¼̉%Ó¼ă‚¿¼ĐJM¼­é[ñ₫@(“̉ÈL¤3îÎMhæÖ̃ÆcăÓ;?’#&¾$óèO3üyäjí!ựXŒÆPođᡘ¿èƯ×C†[<ƒy¸–§g^!ùiŸlå3‹%́Pù>Fèiß7Ǘ ~®bæÊ©»³°–>ogNwăëv§Œq<Öîj|ô©‚É+‚O²•ë̀=Uï v&c'ÚçêÅ€{œ]Kg<‘¯9’¬4×̃ơ-h±9)>i³'̉̀ÚÀN/4₫5)Pp°üeßXQ—~Gb¹wØ”µỨ1•g•?Z©G…Qê'K~.YNöab>#|XñˆÍ¤ºôá²o7ñ9W……ª©bq× ØGĂV¸Év$uW?¶s‡qY₫ö›|uR™È‘ŸOơqø!‰›ïˆ̉»kÑ܈x‡~Ç?<ÖÙO+ê¯^„3íß¾́¾ÁÉ-¢FÜăæđDæ“æ DB6I}±dNé«ỏ‰§ñáfm[62Êơ—D°˜¡¹fÿ2K—T‡zBLe/<Ɔc{̣å Ù)!EaèÖaÿ:ƠÛ7Í[xVÏaXƒ{™ Ơ[U,¯'Đ ư"´Ÿ’M̉*¼hI^v7e2uPgÛd!́¾Uî•#«y×)ó¼ƒQz¹U6Ú7÷¤’â9¥‹/ñ¼^̃Ç(K88ưÔç-¨sûƠAÉYav‚¾̃^5ơ`QnW†ƒ-eA·Úh»?ñG%.È]¡—SÈƠ _â‹À9s½nß' À?=s(˜o¼@Ó⡲ôG¯e›¬iˆcK4“ª8H«!eg3‰ Æ»n.‹¨¾ÄÓiês»°ñÉ5Á2¹¸×{Ö±ơó¾]æ­Á—µS_•6«³ûSờâƠ¹ צ—\ÊøEùÏåÍ̀«X„g#|_s¬-ïÜ2¥1g Qºf^äë&O•¡»—>Oí¬6ÍBß2ß×µüîê÷úȺ̀í¢¦ŸXpÖÆ<Æ»Q»jØ$]’ÚøY$k'?âßÉtWtymшÀPî4=±=v|8́Zgq1~¿Îy¢.5ñËƯm/ p´”îUơÛxl³á: Y•¸E²êè»d ›´äª†¶1ă÷ÉΑkr0Føđ ÀmưUÏ¢J̃đÙ»ä>Å•8œ0AC¨Ía,ˆ*›à}lÿU0ư¾€SX&\•”ĂTss#œ̣-=µ{ûª,^cR2̉ËÁ‚â©àÇè2í…yø;} 7t¿¬o¤Q¥„%æÙ€]Ú¶0†TÅœ‹ U†™­ûx1)êvCF ÆMǘNñ2H'È»d«¥È™·K2‹N™NºS‚ŒªóM¥ÊI-gˆqˆ ®·óù"8hwàÁTgeù ¥”äO–¯Zí 7 ̉!•ªy¨·ÑB¨C´&‡¬æ™̀¸,l°Ç—†¥ÛwW"ă•mJ7éáuY*_„2 ×V#ïḤ›%–#Ô- ’®¿µu~¥Ù1Ó_érb*s roûFæ@cËU\Ê?‘ ÷„§*ÇËÅ0<¥N#à­»#¾zŸ+úË„ƒ&Å1ê‚?PI‰ñó‰×̀”Do³;ïMƒ7z°ña₫OƯ(Ă= Ÿ¼×iërwÙ°Ÿ²wz ̉À1Ax÷‹Ï·øÛ ÷̃¾˜Q™äN½¼=h{ÆkSx‘ă·ííFÚŒ̃¸ÜÀŸC;ßơØ“J±H_¹µ§¸†§µ“‡a 4 äôŒå&ï»qºöÄùđ*̃éÊ;µĐº̀öÖ‘åü†£j³Ơt“#ùcέĐYYsg©Íâ£2I/¨ˆZưeDñY„ˆ3/—̃¼¼­¿QôíAók‰§d4ØäuK’|{•údp¤:4­º&–ç¸h.[²§”×áM̃²@FâîQ´4Ùø=®3PK¿–ß0z/̉$‡ús’̣8&¯E 5ưbAC—J³gZÈÉ9Óáœt«h³Á¤~‹ó³Ïµ¡¡…¤G¦.V₫́”F•ûaĐ|£Á[2‹ wMM–Óú¥åÆ-dú7Å3CæÔªS­Hî,ºD²÷‹QÆoKÓǪçÇ»Ế˜Ji¯u®¾K÷'Ff…nỉ̃Sđï‚ƠJÊß1%OI×<‘-/âkzbåk{ư¾û®2œë g›ï=¬«·ÅéPLAÊ–ÁNA ¢ÀÑc!ß7Üà;Hsê3t^9-'!±ªÀë Ø9)¨èX÷:³;×;,ƯúI}\̣Ơ¦ù¤ÓÔ¶Et‰öáÔiß v*µÍ•ô>7¦N̉¶C,fß[Å•„Ç ½!Ü+E]”Ä׿èŦ³@mX¡Fu¤­±vOG˜>ć§bÄÛ«á\æ[Ä-aê#ÉƯ¶G.¹g̀æx;Ç›¥7SK³²U¸ŸÅ)Ơóq†|†\ÓK:™¢Í/Ëcñ‘:Q‘˜$ơºÆÑHI®Ú{œËîwêÙ?„d«zjµÚl™toîc~=pt>p)UDç,ç~óăÅQg4&H'÷xPnkù1ï~₫ơƒäµDÂ!t:j8ç²tśΪ¹‰J;Ăt徯Aœ¦cP Æ´=}<‡6ÏO ³¿ßÜŒ~wÊÇÍ%Ëd1¦wª{„òÆ®ÿÆM÷f̀¤´¥F¸îyÊÄ̉ûUXÈ+ƒZyánüÜ|³È2ù¨Î·Ä±̃4ç<«¹V9"®ĂV^ÙéYÏ Ơ^©ë½­'‰räz>©ÔδÔö¢Aº%¬–̃‘óÓ1óÓÍ‚!Q_ÊDH½^äKë$]—ÀÙ’œ]̃÷> ZWöÀWÍ Å¼è^ Óú,!°”c–å(<ê₫`‰¼÷“ 5 ©¼“¦¢ûÀGñnEÎŒ:×ö˜S7CíS™éR%<¥äܵÓü«••ÉK.{˲0÷ z¾Í̀x̃» "ià"h{˜ë¾ưf̃£-h©TŒ Áí£ ¥I>–o²ƒÈ̃9jͤ€úÓSÇŧ—dcX~­Uk²?of¬-½Ávˆ»Â£Ă1~9³0?YÂ.yÖ$­àQ̀Ÿ¸B⪥ÁtˆzÇ~1¢ĐĂ³Æ?Lj£ÛÚ¬Ö;Y¿ụ̀Ư¸2›ºª¤ y†@6ăg‘Ûă`»¡6¹BóoĂß `geØbÓl¾ÊơÑơ₫K Ơ·jvL [̀¤8Årܼ˜eáÙ œO V¥‰3‘꺣‹˜bóÁs5Jwú²ñdóùvc2B7*đ6ψ HjÍ{ă—Ă€)¬ÜÆÜ;zÈƯByt…̃^_ôƒ^N°A9H¤ˆ~ÙơøCỵ̄QXe.¡øKΕº!÷¾oÓñgíaAf+¬ï^œû²³‡»¯*hÑ(>Ñ;í º˜ú›XÊ2 i?»ă9ÂRϺc;`¬v™0Aç¹|{§{¨PŒà ±̣Ỡ£×‘‰–}ß@,Té_‡Œ« R¥ơZÅ ÍZ•±[ó—fŒrr®*RG {¦˜‹5ª; ”‚&_Đô&È;Û?.`³âÆà‚OĐ^„jêă »Yàâ3|0ÂVø‚]Md[¥SŒ>‘]ÛƯk$ÖàiíQ4/.́[Ôµ[Ÿrkù¢¶bßW¾¢eÔ=©·¨¶%̉Ùî-‘YƠf×PŒ…0ơ”Ôó`?ê¼ÇÚỀœ̃©c—å~YƠÊDH]5™·ó ̃TYœÈ‘¤Êª3ÉB©o#ô¡ŸN—QyÂä–ÙH]ô„^‰È÷iËøçûỌ̈[[\ñdÙ”>q…]̣PÈ>¤¼ûăÍ÷>U—tDñ‹0%₫FM™4€¢KÍ' Ça幃̃`ø¡t«´û|ÁóưIÍ3_wåó^ăx:|»,°=¨s°ô²Çêîæ^³̃µE…è]ӱɵ ËVÂ3¢Ù'âơhgç¡ĂG‹̀6LtÈvbơigo¢Uăn¤ œ*ỗ¤;†ĂȾF¯zâGùç=h­"I×c2±©’…QØ–ÍÂôÈœÇ ŒÙđ÷úă5îÇàÍçă6£NÛ[L–Å—:‰—̃ÛÇGoö çkarj.Ÿt"·Ô´M̃œc·qéTZ7†u»|ç³bï2KëêĐ—;mËC^’ñúI|Ç>HăU•xÆ̉Œ}ĂQÏ%̣󈔗ӾÇʨ-zc%•ß₫æËÛ\+”KÍÛKa5í†Å2ư&É·¸Nå#̀Ÿ­E<U®B}·­1T÷*/û©—5 >6#†pv›wªĂ5ĂLŸËsúo˜}‹PŸ˜Æêp¶±;Wà5T?ox|ÿưÇâ8…‡» _ºâ#`£³#‡ăï§,ơŒÄÂC¶'«GlGüa®Ô]%ô£Đ·²aûñä^ƯøÍ…̣ä—:Là#& f₫é—ûúRcR[– c¾ƯƯÜGLÏ\üu+¬'êÅaø§¦₫N„z¦oEk#̀øz-ên„Ö;ØX ¢€H‰¸µDmú@¾ƒKºÍ¿cŒđÙó3‘¹ú‰(‘Rưç˜"̉γqööÅKéƠXW$E˯öˈqœ̀‚¡>vÉqr¿ŸöçTX5zṢ†FZ}²®ưÚƠ™ø endstream endobj 838 0 obj << /Type /ObjStm /N 100 /First 909 /Length 3343 /Filter /FlateDecode >> stream xÚí[]s·}ß_¡Ç¤n1úh}VQ©; ; „âÁǾÅxÍî:ûëïiI;3';÷ŨFÓG}ºƠjiÆQ¡DT$´v8[aˆ¯ Ë×^XÏ×A¸À×QøÄ×)·‰Z‰dp­µĐ́,jA6  ?ª­Đp•¼Đ6zá¹±3xPë¼1*¡½3h́„ÉĐáè ºÉQ˜Ü„ɰɽ0Z˜„C4F" ̉,ĐXAÆG E®ñP-qMä5úl¢ `¸& ưA(qçI «×a5ƒR–@K´JX˺[´q jÑ&kaIØàưŒeÙÈ ĐÄ&µ^8 "8r]ˆ6 Gx"Ú$œu¨qJ8Æ¢ÓÂùª!Ô±¢#á’N³è¬đ »s ODfç @ËèµđÜ©è ÊzÎ"́tDW!+ƒz/”G!ˆà„o¹M!°ƒÍƒ!%´ lNÍ5Ć™GÙ½‹ÁswùñÀ²¸qdo@5³– 7pBc$‘HÑ¢ÀDE'’O4‹đ*­³—,7(YîÔ9Œ@@‰ƠM:—<ƒÀc‰ ™xd̀d¹DM´qÎ̀"ˆÔ¤¹ ̣ÈÂ1“‚B‰UKxÂĂ%¶\rá©Übb³ï-!‚³‡̉<¾8çwÜ%NïÊ9Ôs¬çTÎFƠ³®gSÏT϶«4cÚà;- ó ’èÑÛÆ§‰‰E* ̀@K¤”Fˆ¥-ạ~”é!-5#b[C4`R˜Å̉ÄE?-&Ö&¼5ÜabmăÄ̀"0ưBÁjƯè8)"amâÔ€Y¬Ml˜–YâíqƠ3K8‡0-³„\@¥~©@!5c1Ïn ̉›F÷‘°8!ï§…tXöQoM,L?²Ă¹5L‹uß ´"RriZLÂºÏ ¬I¾1nnöùÍÊf{¤Ûé¼f{dk˜X1 vW1rôÈ,æ¶„©°XèßêÄ […m ’7H̉`1häuÇ#v»Ö £7¦ÇÔG|vKˆ&:ơ¦ä5<¦µI 7´æ%|ÿ¾ƒ×đN]M¬Ù¦‹œôjºÄ¯BĂ´˜Á;Ç{_Ób5dbï=8i×ÓbÂâॠC8Jvb=±"×Cj~Û:­-y9Äßt˜ QwZf-&I₫€aÉi»ÖfZL˯xû×ơœ¶{{ơ₫1[Â$˜û0Ëy»qZLĂûÑL4Gv¶…I¼Ó”z{Ö»aä­ëÖ0ƒAB̉Û“°̃5#;´[Ă4À„wBxcá₫ü.4ªö’óê7›ƒ—Ÿ×¿äD ‡̃¾œ½p¼ïÁ[tù1ÿºz̀-!uv¼=~áƯqSĂ;cüÑS³y6a ̀_™Z]„—ciR@‡åaKB9Ôc̃ ¿$íKĂ¾•cÁ²(S=–¢zàù}£tä÷L|ßĂD₫^ŸÏíˆI†³äïÁƒÔƒŸH̀I‘S+’˱pÂ_é¥]>j…›æR•χ4|^¾DRĐ»åR€¼½ƒú:°¡;vƯê[–ûVüJƠTƯ¢@)ç#ûÉÑáëïË`“ăkÊQ ô xÄ•#Á">Âe‹iê±Ô—ị̈\9×{Ï̃”ë}¹÷ q$Øû G¿Pk¼R"9U¯J¾+—ư ÈJ–=Á׿­¨4̀](rG°Â„›Ǿr(`¨P̃¶¬BmnU˹ăE]~¦ÔIp¦—3viÓ·.-l>Rî0%Ơ·+tdJ9¿:óÿđÀÉ̃Ïæ«ÿOlZGk>–q^—bRŸư¸ơ1×5 æ§ø:)“™ùôÁÄtMjXéJĂVƒ]Äï :xUׯ~æ³^ŒGz BAêâ—·á)éœQfyÅ ×Eø‚ Ï̉ªç- ńnLÇWgûêlW:[–Âî7ăÑü)Na†7ºê‘´É+ â4Ësým^êqׂ)1?É_4–ûp´È' Y¥~#›WW.êXZ—rßÊæk;h1Đ•®ïáß9V‰ƒe H3ùùX₫›&Ơu[Üèéó "'ŸSØÿăÖ‰MÍƯó¿E^µùà₫˜¦Ü Â"pN3‘\”p—Íx§ƒ?9ÍíRæĐ›Z,G{[1ΡFßÚd¡l§|Ö9騗k/Y=ñ±Ô«ä纶å¾uÜ̃lƠJư½ÂP)çăËÁo?́¶«ăåü|½X–íˆÇGïy·ä·{<ù×Σ»Z¡₫ôèÍJØ̉àn₫úX¸ẹ Ô‡#o¬ùSh¬frçèü~;ó—ÑÏ$£đ½[o>XÎ9mĬÛ÷¿đ¿(Íä³úF d¼=ẒÇ7rGîÊ=ùX₫$ä‘<–Ç‹ÓÅ™lå©\Ès¹’kù»üôméß̃RcÊ;(—·€ÆƠ½¿»³ûèV÷™6WëëˆơƠüÿSiKú¦Q}ïÈ»Yçï¡ơ=y_>?ẹ̑Qf`_> ‡̣gù‹üU>¯ÀÈ ØÈ¢äkùóß[ùúT¾^\,åùV¾ưt₫¶=“sù¤½—g̣l~Ö‚½ç̣œ?b?m_¯Ki™·ËùâD~K0¼jÇă«ùGp½~»l[¹₫c!/Àụ̂£ü$ÿÓ.— ob€Ÿ¸ÿxxô`̀á¨s8ÿÂtni»1A0 Z (?Ô()uîíßy|ø¬h4âR¤7¿%¼»‘Fæ&í?yđđđ~Ö(]­I…§·d"{#…́Mz~oçɯäùœU…Tú…ºAïÓ¨:Wù£₫É¥qÿ,ü£Ơ$¬̃!¼Z¿k×y×rÆ›hy¼xÿ₫h'Ú÷'G«·²ưpqtZƒÆë9~¸˜_?₫ưO"ȇ‹Åº=yul.J›|Ơ×—Êq̃ÏKÏûس:å.D ÏbPR7î₫đë÷»ÏÙFÜ›:÷&¿o¸Æ¹7̃°ñ…‡]́/0YÔÿëpÿé ¢ó~´»ÿ϶ÿ2»Đ†¾(’¤ëëF̃†ifùàOü¾îÆÄiæ´'“seÎ>^x‰}£)ăñOÿô,órx8ÆŒáDü}àÿf£ơ%bø²#Æ3F̀5!éà Ÿ+¿ßăüàà`Ôeêl‡ê4î1|ùwçx:zƠÀ¹¬\7ưpơ³m endstream endobj 916 0 obj << /Length1 1406 /Length2 6162 /Length3 0 /Length 7128 /Filter /FlateDecode >> stream xÚx4\íÚ¶è½F¢×Aôè½÷AÆ c3:ÑkDÑ{DoQDI$z'B|“ä}Ï9ïùÿµ¾oÍZ{ösß×Ưçºö̀Ú́,úFü v[ˆ*âJ”tŒ,„€ PD&`g7†¢`¿í́¦w$—ú„’;„BÛ”A(4PhzÀB"!1)!q)  J₫ D¸K”AP;€@‡ Ø•®>îPGºÎß·.07@HRRœïw8@ÁâƒàÊâ‚®ÁF0‚̣ùG ®(”«”  ———È)€pwåæxAQCâî ±ü  rü5;ÀØüă0BØ£¼@îÚƒ‚!p$:Änq «Œ4´z®ø°öà¯Í ư+Ư_Ñ¿AῃA`0ÂÅ÷ÂöP §ª-€̣Fñ@p»_@ ‰@ǃ$ØêB ¡°_3 ₫Jƒ̃f¸ÂÅG! ~ơ§ u‡€Ñûî#ø×á:Ă^p¿¿WöP¸ư¯1́<\MàP7ˆ†̣_´‰àß6 ”@Üo°£à¯Æ>®ßÎßfô ~®W€=z HÔ‚₫"đC‚₫#VnH₫i½O·́ù¸₫7àŸ¹thæB\ÿ&ú# (Œ¾ưŸé₫;äÿÇ̣_Y₫W¢ÿwGª0Øo?×Àÿă¹@a>!Đ̀ơ@¡U ƒ@k₫ßP3Èéê@́ .ÿíƠ@ĐjP€; Í/t_xÿT…zĆô¡(°ăÖü±›ü̉ ‡è#Đ_Otø_>´ÈÀÎè§MÍß.ZCÿ¬«#́~‰MXT rwù Ï½ø ¡Uiñ₫Mf€ B‡Đ3́î¿VH h‹̃#4ÁÑö?&€ ê†AÀ¿ñăEÁîîh₫fº£¿×¿åxCÀ ³°t˜Óë°ö‹z/₫Ï£¸+«Ñ }Q¢(¹~ÚxYjSníªî§ëÏ—ELÎúÓó́]Œy?êÎ ^NSÏCa¨ô­+đç~?îv€0Ù!èÆÅÓ£×Éö I[b[r&›Í^…‹÷ˆl¾úRxƯ‰Ü|(¹ pŸ‘²¤Ñ£)ävnc>µ`a[E Y<"#w·̀đ0Ö0¿Æ| ;Wl¥ưî³n—9´´ô.§¿/]ä¨@«·Z¬*‚‚–̉W“%w8i€–*1G³ ‰Á¡(z¦T–ÀJ[äÁ±ŒơX|ùÇtA[ Gƒƒ®Rđ½'#uÑY™Üå#›lăï‚Dw›“¢ùj̉ÙÙ«í0Ά2ö«E`y½ØÔLܺÎ7:Óˆ’̉s m̀ÅÆX¼'¡"Ö_&î^<~–•($l•*“øôRQLÆä:lo¶xơ @AÇN¡¯¥Ëâ´ê1|Oàôe´Âœ9~̣µù]ûPOä‚m‘j*8Á¼#kûíVb“†èÙ{2S1T­Ö¢Ë†;>7~:Đ0/[¿­SMú¡¼äük¼©I¾1Ùœ±ö&F†îm ©p… iRb ç½2ÆW‹•b#/dBeR%‚€O>LÜR6؉'­]¿cĐóÇ:ÁÖư@PßZ+¯ó¡ăă]NMÔưhăvÂƠWE‹©àñÙå<ÅŸ&6¥OåÙ?ûwºỷ°Ÿg®Pở5¸nór„±ăaCÆ›‰̃ÎÔMoơ†Ë3́ Û!5©Ö°"XEc¼h«̉R?U´‰e?H»ư¤ß½gľñä;¡å¹ôư`Wë¯ ºû®?ÊƯ•ä$œóá’"ëU:A’~Ø„Q¦ÊD§äD ‰†áY¸†£}#ÁLNk‘º`Û’íis YƯ¥ëÁY/ĂEk-ƒ æ€/ø«(DU⇧¾ÈÇO‚æzbï|]µ{O¶7­̀Üè•CtZp£,G4“XÄÏŒ˜ë«h_ ¯Û·Ü©j)C¨§úÑxOÑRnqvµ{Đú·!ˆ.Î.Ít™ ³TRw3[â§1O~p¤¬gÀ˜Uo¨j“a: ½bR͵=,®à„)]X‹>ôpá‡1xÚÏ ByíÇïæèlï2לĂäÀ<ËQ¬{UÖ†•_¬Ê]"6HßCK´Êơ§âX4îľ~ưcóî©!ÙOÔ´™tf×ÈaÆ€‡<×½rÏH Åô“9~₫ë§§ ‘Ϫ¥0¬ÔÎc óJz¼Â)T’º™BiOƠtË¢ẹ́ÄO"¥Ö!ÊPSD]úÏÖÜ$¹ºf锜Z™á²|aưë%X+¾7¦fÑLîâx*¥Îaç(;ĐOËÛđåPçt8“S?³µ‡m*h\è[c–×ez-dQÛi ªû:sÏEB½$0Å ï ™èkÔÙûi•"é ÷F-ªÛóww<»ăÇ-ó[~̀35k³ëåËogª‡F$“?XÖçŒÓ|9ü!Đ3q†¯Ÿ­ƠѤDGî¤n[n5Ù•g6LÜ“xF惾2`]$Y¾P7IÔú@$5Úøs„}k€ÎÇ 82´E;¬¨(>ưe8üv˜aáe’¡ïKăcûo~‘ÖdÊOløef®)¦oÍ\¾é_ÈE Ûs*û,¯ƠØ ¼~%of’H®…Ó‰»q†̉~¹¥uußYO†f÷g…ü¬ ©ô#ŒoI¡̣t™æ‹3æûLbq|7,ËEÜó˦±ù¯Óm!ÖslM±Ÿ¬È$`©ñMȰ°nÁ„µ5kî,ăÏoƒ@Dǘ«•{ u«ÔÁF¬ù̉ñ_S¯<¬1Œ¢ D2ÅeÈ>xÂ?d¯ăWeÆ×·³†O—QX ậøEMöÊçM§ñ>eÈ‚ߺ.ƒÆ\áƒÖë§?Íø•é–…`́;²#¿—;È`´̀­êR‡l|®4]Üí•eY|•›á#ÄÜ=²EåĂ’3IÅoô¢<{lJp ¿ÔI&¬±ôwY \Ïow'ĐŸ·¸‹·wKƠ=LûÚƠ¿á9Ï$éLèCGƯ äă*M§<8·Hv¢ƯÊ™:0 ³ª\ʶơUS’ceñ‡,y±|­M{6\d¨ÿ•íKS‹ÔMÇ{îÁ8•{ó_‹́8+{?wÑó·4¾Æ¤ï°ÆD.tÑÇΤ!t¯~xE÷¶@›XbüÍÉÂ3đđqĂ8‚r³2&[[½è}«ÖÇ“ăÆ\îŒS<·\̃¹` ŸÔ¾Ñ¶¢¼́[6:#±×ùåëđ€ä¦¸×ôœ'9ăµge(£̉ÁB;¹¥Zs*l ®P‹Đđ·çκf ovUç|U ¨Kûæ\÷¡oÅp—kqfÜZxˆ©pu½ăÖ†;F̣ æï˜~·SvŸÖàs+UUX¾Ïs ÿäøEOf̣}̃' …yLoSTÀqï_/`%éôoÏ V1Ro£æĂ±®Ô!Y úJơßG)- ¾E=iḾˈÀ)A0̣́¦KÆö»Ïh<ÍG8U›́jQx;å· ÜæĂ½àµª™}}HØ«‘ SÖ̃7xˆ%|̃¨ÏGœ´up>˜°èXÁ…đï ^Çæ‰Ç̣¨ˆ̃K·‹<,DÄ¥ùY)•˲ưÄR½íëÀ2ÅóÑ1ăó_÷GđîhÑhâH"¾OËËÀaé™k5qˆÀlLÔó±íZBmÓè''ïn®.\ˆ(a 1"+vÊÖâÇ me6¯   t®oÎú☆đđI˜¢>æ¡ñX S£¯¸¿0çïbŸÙ iå8WTŒÄ8-VàÓĂ¾4åj¯W™Ư¢›â·Aefߨ}æïj¾n™7/¤+èAiøßv¾À¾Ưg™|¯1TùÊû$W×jỦÓÚå Ï}w½i»1¸8üN!Ù–½d(O5ư¹Ôiç¦́@{–Ïè²6£=æè3ª^É$P’“4/£U0̣6÷Ä¢B’CoÏV°¹VæÓFNß…‡Ç# Œ‹Ü·á{găwêfŒÛSÈz3>h­knï}³V†–^[H!<ÿØ,ÜĂrH¹ly韑v÷»¨iضư¤Ì–›~pÀùƠ”¿̀MlúÿL¨¿~/îWd–äa S\ÀÆçdF^W… ¾¾n§ aQ2¥Áñ́Ó¤ư´ê†ôỷ@o‚ª¥ôôƒ-ĂÀ‚4”aÎjk ¦+ƒ„Đ‘¶‹X?èdcÖÅơhO3Q/_S»–|cs°¥0(R²f@ơ­K‘Éôä Û¤JA+u‚“ ÁS+9@Å×ç~^8Ơ6$¢"çEª{Ó]u÷Ÿ+f~ƯÈ̃Q(­ _íp{=~0L¼̣fỵ~^ SdaÂÄĐ+}û»ïoWóÍơ剬·ă0¼p/,±L\êö|ü‰°½¡öÇ3“®@ïs5¶›<ú°¢­q€ü–±;#)M¥4Ç;UG3SÀ5µY‰!2w«ºíYhn1ó w” à nzá¾6”hå’_XxåKnîïƠåĐpIÏ]z)kỊ̂Î%r8$?£&6»a2URÿzñ\â½3ÍL"Ο‹]"P ̃VQiGŸ@qÿ>&J·¾èmLø5i³³‚†U$7ÎI`£QÁ—‹´x]È3\ǛøRë8ÆDÎ+°<ÉÚƯ+¦Aÿ+c}…éçL“t»5ä7[ å¼)`⪠ÆùO|8]v2M¾Kº²Øtb–´/npëf«Ơï¯âdÈcö•¾q²ª'‡‹˜ËjæûÊ-(ïÉè^„ßê°…1>ós£±µà’e]àùú´spÔ¹ÔGä±sñt­¾̃C¯́µÖraUDØAŸ@µm÷ÂO%‰j¨¨÷©Wđíj&™•éê¦#*ç̀×™ÍÙ™Íê₫v5öؾ9ÿ²´M Û,M₫høø‡Èó³tWf˜Aơ‹dƒ/™Ñض«¥T‚®Ç·_0'»uªNJ`ÛüœQ Kê‚oS¼Ç»)pÑóăđ•~0Ó•‹́r´n §®ßÎyyÈÉC}ífd| ~„z@?ë|$ˆ/W&́BË;‹èb4j?DÖyë{ø%R#Û[Çk.ôsỴ̣̈?¯*Ë7y^«zjr¡ÏÚ¦5Á[Ñ>eÑ §Vp¥áCíè鳴륜ñ$»É¹,4øba_îI?¡Úü¢0¯.UÿêŪ…:£­PrĂZ›ú€_³W耡µÅd-1Á 6Ở÷iêÊ G¦tr®Gx>“é-”úË́ª2m!=ư‘¸g gùjZóúuOtë-›±5†l¶¢‚”đŒ©}—§́oõ~0–{|ëñ}ô¯²Đ¬&gûơêÛăĂÛ¸$!x‹JƒÈÖt…í @ÇMq‘ç¤[ơG«[]'Z̀ürt¦—EäæâŸ•éY}—2£•¦$ódN'ÍÀ1_“Æ SdNº]bN/ ¿ª!-—Çb\¸Ó„¤̃Á:3±Úx$3ióóÎu’hư›˜ ÷ ”¬LuÏz°­Vçk¢T½‚{m>Œ³ñ¢¯8ơêøÖ£“óù¼Aí`̀íĐ|ưdqó̀CÍWZËá₫âñä3&é&nÖoủ—RÓz<;†®N•ÔÉui†¶ &©²™Ôe7q1Ox?jL‡iY‡¦+&e¶ƒ‘ß–wC½V«så,#^WbzKOsƒPÛĂ¢d¦kĂeu¼•dEM•Uo®ÅcêL!Y¯fËú}6?½MÆ3΋U½RswX3Á}K*:™Ëá_ßĐƒÿ$uI­|c^"7}‹(¿WÇóó — ª$t}@t8^?ÜͶ³ê3À1»®7ŸHåB,û2®êà¶¡e'ÍDB÷Ó½/ø?9C6ß¶ UQ̀¿‘`&9¤ø<Ë%5‰¯•; X§x˜yŸI+Ê!»¬ïkaOÙ& …|lqe `†tÆỄ¯åÿØ@+àSÁ»ơ#刜ähâ€c ë·’׳%m›¶t`̃@•.^9ÂAÑâ(˜ä‰y‹¾́Üá䶆ꦔ\*e>×ÈDo ÜÓ$¬äbYô©BO\6ØÙ́̉¹¨ ¬sؼ3ôơc1u UÏ“’×sº$´vNsÄ"¤‘²„™÷èéÓ&Qœæ©vT’¼*⵺¸ø™v±~}VG±.-Ï#iïô’æ¶ÍÅQÙÑỷ>µÀŒÀµH;ûÉ́…p¥8ù–É’©̣Vÿ¹¸ªâîø['}ɵ£*Ö́n‡dŘç±c} ú{q'̉ÖñzeÉ"ß»xïˆÔ…zÀÛ°ØV4ú‰·ṇlôp!?¿'`Î`{³̣8$€_’Ê@đmÑg:HP®Ü|÷ÀàÖTMĂ-&̉Ç ,«˜bÛƒ®Û×ßÚ¶*l¶„L^Œ¦ơób“î zÊk,Çsj£h5ó–éɲë$j„,#B7̀{â†F̀<¢k´]Ÿ́=̉1U¥̃Œñ:k|6“”µO (kN\¼m<AE6VÜ´æ;•G÷ú³–Ô9ÙK˜%È´¤Öq̀ĂŒ³ §ªăGˆ;S­üL¾Çˆ§ôƒ¯̉{̀ÿYỗ-RÏ} ªE¶¾93ºëXr§å¡ØÄƯp ¾åIG#~³‡äñÄXcw9›j·dJ7>zé~~^‚•KE³]艮èo„yơÚLD«cX´–E¢'†Y­?O~wpû) ¬µWéç’ve•ù9dÈvVCîÎ( o¯ÇÜÖû~¸ư˜|¿Ä5)Ă¯y¥TCŒF)MëZ KĐ«æ¹ %^ÅÇ!£÷l¯ ~0M*iŸ'6S{gxƯ₫ÔỲ®Ú¼œĂAô„5lC%Yv4¿Qú16I¡çö æÅjcË]đ,®Ơ~3†U-Ư„ÎéÙJn˜ÒÊÓ{FÊĂÎ ‘Úă¡ åkc;Öạ̈—¶¼›ƯzVó°jïOœb^Gëb毕H»”µ˜ôđh»#í³¹佬́‹M3‡{,·ŸlÇ ©~ÿÆdM¢ âYy{`M/Ûsª¡Qø–'!ïågăæåËaàÂ¥í½³́[–Ù¾>ăI3lØ¡ÊÎ3¢év† ;¹úÂåưdp|̀d»¢6d/«7}ä¿ôƯ´˜¬^âÿ~¥Đ«.=öK;xà£h+^cáđo=À‘/‹|¿ŸÏo—ư¡ĂccëFÏ(æÖŒÀsN½!*Ù"?€ơÏhzÛ_ZϼJ¹Ë=“ÉïפßR£7{)LjXÚSOâưîë6>s”A₫‰—¢ĂDâZûµÑu[n6ë\9,Ûöà̀Wº¥6CĂgæ‘ÊN÷đV´«{©³a“<®|„ăÍ ‘Ô XïP4ÊèüË[vÆà]®†Ë oÊYï 7xd¨@’D/xß.Ô Kq̉áSÖ¶”œf|Ú´2xMwrPc#Ïsê;$Đ̉ùâỷb.­=a Đ̣}¤K™¶yµ~N­²…Ç·1"“Ñ¡APpṢk‚L?JMÑ™,O6Ë EͽKf%é20k}ªw}:™xŸGÏ÷G«¸ùØ œRaÁqµ̣q~~œ"~gKf[œ<ÅânfưÙÅ»ƒ->QøÆjLª`ÜƠHLæ*‘)P¯+xC–“ê/>ŸÓ½¬tØö_WƠ—`J[P{b Äo¿Íq똱³ƯË =Ị̂NΤËaÍ4ö÷/ed=ɼ†ˆÅFéKæ{yל¾sÔ*ûă~́÷£ñîØ¨]åÈ"?~y₫PÛS¶'ßCüîô›×ÓO‰±´ˆ_‚æI{i©0b}ÈC°;D«IÇá 7nAk^nmï4x)Å{ĂVùóă3ÖÍ„á/¢9r—ENÖä(ñÁ3«Ú’E?|³™s‡…Acg3¾₫ơ+U­ÓˆGKB!MS´`™9~_¯@‘‰gKKVXƒƠ$đD‡®Ư8ÓXÑ0ûHîG1%R¦¯G ̀ º)Yç€û3̀/)ÈbL#ºmÅ(¿ÇÇ]Kl±tïVå‡áx†WŸ»Ó‡‰…„J†ï9fZ¬"/!8 —äk¼™DöK₫ẻC×.UñÖ ừ…i‹év˜ q†ÎĐ‹æm ‡Â”Ùï¯æ̉¦c\½¼¤^éYˆ¸í+4ĤÆéỴ̈Ö>ÔtRYx9i" '6‰ơ)K¹üvø¢³Ík3»­gVÓ¥&+ơiI®Fi+^˜¥¥Ă›ởe‘…È'Óz[ Ù€¹W7Ô't(ÍÎmHXX₫óØ‘Á¢Ï?£´âJ‹^4Un8j:̉/Ư¥UçJóç)Îû±L˜%g7ȧƒỵŸH¿b8œ»ơÎØØ$Ü:J“)Èr¬̣ÊéûÏÚO=g. ?ÆyîƠ ̉gfæÄJ‹ÆÄ-ÿhùÓ̀ endstream endobj 919 0 obj << /Length1 2508 /Length2 17291 /Length3 0 /Length 18747 /Filter /FlateDecode >> stream xÚŒöPÜ̉âw·Á‚»»»{€à îîîî®àÜƯƯƯ‚ ¸|rNr₫÷ªî-ª†Ym«»w÷̃CN¬¨B'dlk·µq¢c¢gäˆÈ©ª21Yè™aÉÉUͬ€ÿ‘Ă’«Ímm¸ÿ°q8½ËD œ̃ ålm̉ÎV&;77##€™‘‘ë?†¶ÜQsc€=@ÚÖèK.bkçî`njæôÎóŸ¯J#*íßî!k ƒ¹‘ @ÎÀÉ hưÎhd`P±52:¹ÿOJ^3'';nWWWzkGz[S~*Z€«¹“@ètp₫* o` ü·4zXr€ª™¹ă? ['W à]`en´q|wq¶1:̃Ù*R²; Í?ƲÿĐ₫m€‰é¿á₫ơ₫+¹ÍßÎFF¶Öv6îæ6¦s+ @A\–̃É͉``cü—¡•£í»¿‹¹•á»Áߩą”ï₫[Ÿ£‘ƒ¹“#½£¹Ơ_52üæ½Íb6Æ"¶ÖÖ@'GØ¿̣5w½÷Ưáßõ´±uµñü21·16ù« cg;5s{g ”è¿6ï"Øß2S €‘‘‘“…´ƯŒ̀₫"Pu·₫­dúKü^ƒ·§­Àä½  ·¹ đư¬§£ àäà ôöüSñ¿–‰ `lnä0ÛÀ₫₫.üƒßÏßÁÜ  Íø>~LÆ¿₫₫ûMç}ÂŒmm¬Ü›ÿ}Ä jŸ4”…%i₫-ù¿Jaa[7€'+€™…ÀÆÂ`çbxÿoEó³øĂSÊÆÄÀơO²ï]úOÂ.ÿNå¿ëAøßX̣¶ïs P₫óÏŒlŒFïLÿŸ‡ưo—ÿ3₫W”ÿ×1ÿ¿‰;[Yư­§üÇàÿGo`mnå₫¯ÅûÜ:;½ï€œíû&Øü_S à?‹+46w¶₫¿Z)'ƒ÷]²1µúo#ÍÅÍƯ€ÆæNFfÏÆ?bµ¿ö̀Êܨhëh₫×Í cbdü?º÷å2²|¿=ßG̣ođ}w₫—Q̀ÆÈÖø¯%cfc88¸Ă2¾O3À“é}n1€̃ÆÖéƯđ^7ÀÄÖö¯#eg0ư%ú±„#ƒÈoÄ `ư¸ bÿEŒñ߈ À ñ1$#ƒÔoôÎ.ó½³Ë₫Fï|̣¿Ñ;ŸÂç;ŸâoôΠü½3¨üF¬ƠßèOí7zçSÿ̃4ÿ‹¸̃k7ø̃s1ü/bb~§0t00ZMœ₫³ư+₫gèÿë̀ôØèô?ö\,ÿ•ÿ‡÷LŒ₫‹Ø̃¹l­̃ä?VÖ¿$ÖÖ¿óûkrŒÿ€ï”Àß̃ë₫û_z{ç÷uûị́̃D“ß.![g‡?ôïÙ₫ßs0ûÑ{åfîvf@›?,̃eæÀ÷†Z₫ß«ú“ư½dëßđưúbøå=’³µá_×é ï÷(ƒíï̃C¼¿´¨ßk°û­~i÷₫ØÙüϰ2ư+ưß`}ï˜Ưû1Ú₫î)ë{ưvVÎÄ—ØÿṆ½!öζN@cĂ?êbùWèh₫÷•đÛ÷Ưúæ2½Wø;2Û{%@kóÿ=u¶¿l€.´˜í=ˆăû+ñßß[́heàhöGà÷B~—ơ~ÿ28™9ÿ÷®8¹Ú₫áđĂù÷$¾s₫ưƒÀÑÈÖáÏôßOÏåø°ë{đNă₫|?ßI¾»z₫¡üŸ«̀ÈÙáư œ₫~m̃ï¹ÿà¿<n@#Ø•E[# ‹º öÇ!‹©s»9·C7•Ár± gDXèÂät$d´ÂŒF̣‘ø»Z4ÖÏ0Ơ\m† 0Ÿ{¨´GpVÅƠÖèí¯_Y¿çk¥qÊ<{¸ºâ7¸[%MI±¢6YÅרCL MäÈ-\)“©å~$”^3®œi? =zèÑ+Ë6F!5¥©{:ăk:æ?‹€˜×Ê5đmnJƠÀ¿CdÓdXƯăƠª,<.̀HÅÄ›øª=6ù1/Z ®—ơxáá!j* Û̀Î̉¤)L^»2‹Søedô¦Z¼WÀT9]¦ô›NøD¯Êœb@s÷RlÅW¾»²]íqü¾ÄRŸ´q­¹­e÷Q·á꨺ĐÚ!¢Úñs' ™QZxH¸đÛ‚½zwÆouơÍÜ-ZĐëưŒÎ[“$jذ9ŒÖ=}t™“k£v³n^À<Ô¬JEç?_G w8@«ˆ³3ñdíöb,?Ê=ÉæÑ9e¨î4ó¦,V‚Ø©‘™·Î²º×]ÿ¨±î‡¹1äIØôåê—µx?îÆe9Av}j̃êBúKœ¸ŒfÈWALU¡u¹gEÄz˜¸(ÉQóOµ9<̃u 9臟îÄ–œË‰Ú ؆Ú́Öâ„¥Ú‹ṿ#T˜/¥yvJѬŒF ’éó ¬WÎÚç®})9Ù̀íÚNÓ³#£)«QơYf·é͆Y;¯Ô+`d~°Æƒ_ơ#ÈÁđÁ™áÜ₫È$y×¥T1¥^j3—ƒ¥gQ&XP?ËÑD ‘çS{‹óø*2³Ø&~´û̉à5^XpôŸ™ ¾¥bî¢ £Pá€Î„©2€Lۇ᪭O‹ŸÔ>ĵ0%9‰M̀6m|D˜ùâ‡Å„ÓWP'®«,B—œ}Ó[d­›EüFÍdêúpÄÜÏÊP”—Û̀̉%X¾û¹†ĂcÍÀăt† ÿ„*¼‰~;ưꇤ˜[€&EëpÙĂ)[˜¸‘/ŸE'ónÇÔ¢úqœ+|ôËăø1‹Ÿa®”NhVD{sẁø>‚Éb~éúidâÁéuÑs‰‰é9y—]₫3¯ù5‘!%…gíBƯ¢kù«Ê¡ 0“‚Sôízlo÷óÔd÷¡7áƒx¥ŸđB‰í\tküw4]ˆÀÔ ­¢\(¸³•7ä¸ÊDPÏñ´đ>ƒLaÿçÇ)¶¬BEk¡ùa<ơ¥QÑ‚„L#L¢Pl}]UDØ\Eظ55{=§ñ:ÊÊ™e"_E t«Ù~q‘̃ }ß¡>#;Z¢:L¨ă.¦Ô 8¤y(ƒÇ¡sHWÍI^ÀÔ4÷ƒ@ ¦µ̀/9úˆ́;Y.F’é|Ư¶¢¹ưTªÉ2£«ORO™\9Ge₫D'C$³;‡@ÁŸ‹’%¶­(OË-ẃ¡Â"Á¬Œ(È₫9w[€îjAóS4…ßÚñ¯8&½½YZäƒ&^îͳU€AY‰ëø|•ƯD±~eåín†W-Ô¾º´é¬¡+ñn*üx»c¿ÿ¨êlH¥h7¸aÀ·†=±¯ù`¾k[¢₫Ûqa)tÅA¯₫¶™.T/¼ªj¬T¹d8Đj¿ñ JÇDÂM̀C_>êÆưâßử€¢„Đ.l ‘’¢\“©åđ¾<§àÙ ơ& µDwvµ˜̣y•©Ë%WôÓ˲E±:Ä@K6¾ÓÁ™ùçæ„+®?BƼ°J°³C\Dª#{âµ›Ñ'úâ»̉Đ ÄƯ寃ùC}bôTœBYNú4©“¶§+§Iª*ü=Đơ‰½^}+ ¨«&ŒÔàâ  ©è¤đÍ́ă—^Ă©Áó́/üZkưªù‚ä1†Ô`X‰†c·9úư¸œµY¼¢¯ØÁ´Ø .¿>/sBo%k¤áÛ‹Êt´Çx®ׯCO6vMÂóZ B~ó`hÊ:–¤èÔ" _I_–›,äŒ.܉ÔB‹-üÀ˱åY-k·‰̉÷ NE†ºsl9ºÎt®j[ø"băÍÊߤơæ0\ăÙæ€Ơ£¦ơÆ%V–»8/QµăÏʵʿ­o‹cß9ÁP¸ăs‚è¶›«́•eÂE´T!Đưé̃yXØÍDÂṔ…̃Uƒç98Ư–¶ë«°¬¥¥Lƒ'4—ÉSÓZP«¯̣íx~³ØˆrĂÔód÷á].¤ëüçjçF'¾}Đå M`è¡6Ị́HÓé“LQGE›ƒå¯Đ%+oêëđ¥ịÎP4\o«H¬(‘îH”3½¯[[%₫½Ư$•£»ˆ¶ ½zI^FZ¯øÂ…‡‚MZ~BD?· €n)x†qGü$“É o#ĐƯÁ—Y‹Xá'ªE¦ÂơVh+Ñ\j¿ÄO¥«HPµítzáV!Gí&Í¢–{̣&»J®CÔÀ8ư¦=̣6;eC¾ù=%b½pÊḌTƯ=åk¼‘J ºƒ [åÆ2á²Û«×5Î$\”V¦eצS¥₫ÎJœ=ă® ¢O!×đ‹®̣Cơ÷Q9´rE!̉A“x?Uü(àCêë§â ÊưbCgp:%̀²~§!ư ́đ×fTœÇ1„ MïS‰±ZĂ®œ›äx"Á?1‚zt0m‘±“a4y?ûkđn1Y˜ïr°ư"ëd­‚ÖÔ•ÊĐºLæ«:+Û¶poÜđ]{4ˆƠ•PM0̉'vUÇ0mRÁ?cF’₫•‚àióSÔÁBíi¸nÁTízM~9Nn•§M"È̀Nô¿ß3Î~YâôZ_“˜ÊÙܸǜÓ* k3¸eĶUíFôi =‰X€{c¥%åÓ‰”°oS€¼eæ!Ù4(B¥ ¨í‘‘ œ öŒn™Q¥>‰Ăƒ[Đ=ê?Wbw¹óp.Œ4 „‰€1w«7ÜĐwXCưèĐ}„€(u~ …‹»Ú¢Ç̣ÁIåTẠ̊û@“́"XŸª°·̣n¦{‰2ó¢+EîQUgZ\ªJỞí*ÓÂÔ0G2Ñø=%7lÏîey>}Ô4X*y¡}WÙ-?¦o¿î‰‡íª§n„‘Cæ.»mUSHCË]₫đf…“d¢êºÈ¯©%@²Ï´ư®¿çO2t÷æ&á0[Y?O>“îÆ 2 €øă€7ơ] ùOêHDÔ§²''cÇ/˜™" ̣FmÅÏl>¾Ë½Í9@À)s$Á¼q9>*hÄ¡£E×0÷Á”†P}Y:?+6 ́/°"6ç->iBƠ›§ÊDÉ0 PÎÍ&L›f´é)Ï—Z:¤öǧ9No³̃/çINư_¥Ư¾%s. Ï)ă¯íĐc}öƠw̃xÓÆĂ#j(¾%?iaé ‹} æèư¼à`"/MÔpú9u“₫+O¼̉²¢îäM§‚EWjnƠÖê!M=´waÚ±TnA=5’ª́1-åGÏ6t™ôµ¦úơX&gưy7SÏ/(cRiY&L4¹úa4’LĂâq¥DüËΣ¦é¹\‡új8^S+ŸèËÔx6Íj™)>•ƒk3cXÁ°B?=h¶IÇí€ç»uŒÁS†›ƯÖÈqKuü çCÓ}ߤ_ù‘‹È̃¬VÉÓI‚?«»ô¤¶Z8p2§<ăt!<ÜéŒ&°ƯLđ̣;ƉP9¤·f¯ƒ–æºêU²K÷(rqñ<'FüÜ—%4œÇè¡­6U°¡àÄy.«¬"ÆÂ›¡à!x f„î…dúRàü0ĐXá—̀UÜsü$ÉŸ4ôSL!QÂKrµ›´ÈÄH\0ûÄôđ‡â®d²^·È‰ẉ̣‡ïS›D7\Y/Î`RHÆ8•ƪ\•Ä“Đœ½FÏÅA]a óKÈĐ8¨”£Ü€2³À-S†t·¶üù™ïƒsj̀7¦"èJ₫åè¤v°̃RĐ2Ú?Âh;ç„̉.•lj -Íy4TA ă¶ÏôĂœ&Â3¬ÆcïU=©?3ªÂM’ ¯äÉçÁ× @2&¥Úá¼}•½ªOúT_‹°ºùS4É@ê€ßÀƠ¡u)qAç§qgYjỎ‘K5ú7°ÓÖ,6 F¿¨‰2M“Ÿ¢9Ø›cùÚ§xN‚׌ùikëH¿Œ5±ÊjÙÓ~,I¯J•Ä̃ÚĐ&éƯptWñƠăA}ñÁQMwÛ R™Ơâ]̃Ïô=ÀđCÉM ;"æÏˆĂ+`áEO1 ¨ßaMUSä4¨U¨ZoLƠ|Uƒ´É°€°Ụ̈)0Œ̀yÓÜ¢¶ù׫OEz4NILù̀TB‹ˆ[%—{FK5yñå%ÔJc¥©*KÊÆÔDGṾß±–c Ñ,FBKÑÁ\;œơÁ±ñ·°Y¾êuY÷ñ3où*]ß~s6¹Ưư{M!#ñ¥mW`Í̃¢́: v4æ,c®&§1_uh†`ÚáËn[)ûGÉé$®EkH¯>‡:Ô?ɹCo¤^y7)ËM%t{ûë¿ùT»)@éúÉ́nÎă`ơlk>i‹%’<6'‘¡ ˜4q¦®fly£´$|Û·=;byɢإQ zqÜùäº=r‰w&,B&’ÑaÇ/Ó’̀÷>˜ÀrÉ;¡à$s´9›:ŃKû¹Âiy5ö C’‰ kÏG,¯áfI@ë¶;ypY¼„â=Äw4Yï5 —Uđ%GÓ¤wsN¨|̃Đɳ µ»Pú®x0r•]C·Z†Ä*Ù Hr4¼üxª¤Ø/¢Á’>Q|68–ùyëèÍ…ă©$Då+}êưi;ĂœÅ9J•L5Ó-̃Đ‹Đḉ)÷„ù¹›ÇPÈ;Ø?7÷«́§yö£gd 0}n¢©ùë°ú®úøÂVPŒkNÓ()P²; Úä·q9}wo‰Ó¢,¬Q*£„uÈÍ)o;2pĜ£1V #ôëđ`¶w„S˜ Îa.°2MA*ŒZ¼eí7rº9¶b`;‹—I¼ŸÂŒ €2º>CÛM~40ĈۼÖ-.Ñ\üÅơ$„L'Eß?W'+¤áUQF„¥T›¢æ]nPW€Ç ùD0Êm–.Vd^•æçŒövW°Jn 3¶{’OJaß̉]<®2¯€a+׬±ú%CăÀRÇ´Vruj·+ Bø^ê L˜¡|Đ6ŸH¹‘Û/áUIwŒ³$x™“*"U‡`|½³î£đÏÚóÏóº¼ÄtELd5l²I›r((Rtü¯˜ IR L¡Æ¤Y¨̉\Ó¥bÁƒIkS¦1[FÔmÂ( 4%•ëâ6Æ!r̃SÊÎé†àM•.GFz¦r–lZ¶ư¶èûø%¹ßgṂBÀ}°¶¾KộÏ¿,7œM„Ñæ"çU¤í™Z耉q¢5 €§å.ë„É3èÛA#Mî03›ƒ—<9ÁP2h÷ îyñˆmè8°ï-|ºC̉h¦k‰ŒQÀ¼W:×Ô/9̉—Ö®̃&4+·¿>Aă„'æ¡¿™Âë¢îï’•{¨º<Ê4́J*’“ÁI5đ4´•É”:´™Q ²mÆs]0%¸aIèYˆöWî´'@¹*§x*E:UyZ´•ZTÿܽ¦c¾¨j:­­·¥Ơ wn‚_UđÄVX]B!Ïé$FM#Æí1J̃Ô a{ØưéIn¬-¢ñ₫£·́¡sv‘/öWÖµ\uíñmú/zÁ†§%dN÷åqL§ỗ#‹Cs=F3/Ơûå¼¼™.çëÍ[˜ă‹·¡¼Op ×)ĂÓ \ăP›Ø ₫$Y†Né£idî'Óe‹ùêḉ̃ÅÙy₫‚=Fđ”;_"ÅBá„& j-‘‘Á̀…œS?˜3Æo'~ ±X­“‹Ư­P*Aµl“Ét̃áæ1Wèz2©±¥Dªb=™†[B„"̉¶´¾íCWá8(ÄSJ|€ĂµICeß#BoưÂe¾Ç¶eˆ"úK₫¡ˆÂU¶ô€µÎ‚$ùDĂ囻ܤ¡‰KfKáOü´ !’ĐU!È3íÚ&Áßû1>&–*v»5×”BÅÎH;+Œ5ç£DKÍ;öàĐöd>ñ/B̀èÔçIY¹T¹+̃®¼GÍi‚8¡´z̀¸îó̀˜}åJ©>ù¯Âyꙸ­Y!Íj‰áØrEAæ@“é”ñ+ôƒ*ˆjËúc¤¬Æ¸̉<Â,G"Uå7Ó{¿&ÿ¥ññ$ôaƯío&€0d±̀_Ô»°H5Xr£÷ÜøƠw¸Ö™iàđeÄ E]è,-nèưx¼Ú€‹ưrˆ‹đ<œ3›¸ ƯtÇÖî\ƯT9Ï>.±Ä&ô|°qΙ á='̃U ̉³ok0, ̃½È₫‡>:ṢB¿f܈‹à¿›$]‘¿Î¦÷=Ö¸ö®à#ø‡ơ}£]îRZÜ‹ª×諈,Ë…Œ+E'¬BÄÂsFd¾́û6kj‡ ñ‘?Ơí\ƒ ‹Ü´„̃J†EÊ2¶²7] ·Ơç%à UE+ÛÜ;7üµ*r×XLu…9ﮩvr²€ ?<́âỹ.ƒh„éSÁx),‰_*±UQ¥êư5ÁÚèKvsA"­ÿwÖúÚơ0DÚjß–ëÜ7q D2uúÇXÂñKûç»§hbrû̃x€'ơ~ÙD›Ô=û~·y §Ö#'å¯ç ßB+ƒ4=#‰£´HDK°A3;ưë†Ko³Åqœ¦"œ£Æ“H’"Óz Ă+l‹<Ø8øë¸lº«9 ßXä¡ ‰*:G œ'­ÙªV»£¹ƯHµVÊ ¹¯8 —Ă ] ¦Aù¨-¾_€w€ăHå^û¦ÊW|Ps,>I—¯Ï•ÑUª̃%gÍ\Iưăƒ„®.ưF^#̉§àq[ h?÷G‹Wº¾̉P„ù5ÿ©s– ¯½­Đ™"v¯ªüqªÑC(Ç牻ÈJœ‘©̉Ê;zé-q?DÈ6G›ḅ ÀFØ̃‰KÇ1J»¹Ó dúåGw½Çs[®‘A®y§­è£‚Q ø Î/ùmP‹ă÷Ágä¦'’e^GôÊ1½9X¶”#³Á{g;ZĐ€aR‡F̃X4˜½†ÇÛÇÅËÆ}DUÔ½3Ư•è̀œé%̃{:Ï6ü*!ù=̉\EȼY•&ÚÈ`ñD4uvÖ¼Ó?RƯĐL¥‹<}†:]Üa7G ̃æRo83ä?Áïß.zVơId%¶?à­2)]J}€˜ØX,TŸ/®Ü[ªD^đ;;¯áB̉6z̀‚‰̃‡g%{cÍB ¾rå"?™%Á ›øº®Äî₫"§eÚj•kÀóÚå3’ª:}w~g_û¡{Ç[v ̣–bPéG (RĂë/¼ùÀ v,BÔܹ K&§åPƒ°ªî–6™Ă{ËÉ›îz+m}‚ăÔ‡'ߑӣÖ.–ÊfÊLö·èêØ:6đfùÖî£S©J²¸Œï)Mé T*ɯ£S[G×<áÚ°ívÎæ‹XŸmɺB„Åŧă"d÷ñÂSđÚ̃–Âs…§-Ç03›5̉yE"t¥Âô%i ­ ƒrùRs·R#jdH‘-ÓÚ•Ñiˆæ5]œ=E©”~–̉ƒÔưü£²jB~V¹1Xà~éZđC1ëÏílŸ „ïˆÆ*Ê;ª̀*AÀLQ‡UỢ,´Ă­/UÎ cƠ&׸™8QL‹=€ƒ”» ÿ€T!̀p‰Í­Nç•z‚'Y¤ø)Ê]tzD]À„Oy¶=u ưë‘çÍ,.ºbøq‰Ô|æ”`Bˆú guØGßÁ彋L›áAéˆ{£7̃ĂRtæXkÛ9áÔ`ØÍ!OS0wU†–ÏÅ«|3Ñ’̃ö?µ-‹ˆ́dËxe¨W3@PÅ:<'M+‹%rÆRơE£…¾d¶G—ÎÙ]Â:Ù±ºXÎé¥X•q±ELÏ–M\ªÑ°+´¤3ư_†,̣V_3;jư÷uÇ_ܾ’i„VrøoP}Ç“XTtHÚZÛ*yÅđàÚÔÿˆåÑ‹i ₫ØañB"‚¤Ø l·›M"¿±c×ï±™{<{jàIơ₫¦Å§Ù·%¸n‹̃̉w£|J“fµµ³2¼ÜĂB›Ú`â,ŸŒ†­·¸í₫đE¾ª̣Ú¾¡Û±úh‚ gÔ¶ßq̉₫#vÑ€E¯_¨Í—Ơ=­£Ë›—Ÿ‘(ÈƠµüöLé0Ëw~1É-3å/1™Ù™—R`¼Ø̉´e¦ájî®Pæ˜ÙB{ÆBă ü •ÔN2äcX®†ª}Yܤѧ—°Ïa«R₫îd#@©Ï³‡½ &0ß4§Fi?¶("°ô©ÙƯÊdü₫:2¦˜‘ #Y¡uá2ȵˆ¥,¬ÁV¾«|ßu%̀W°aq›¥óÛD=Æ­”™̀ç>ŸCpe¾öe&Ñÿo?щMk9N|S¢>±Ô¶ê;—†Ư›²Q†éÛu­?G̀"÷^ÊA/ăă9œö§•:Ö>g ؾÅ4)a,Û|»§6ÙåFë~³ˆ̉̉|†M0*l̃¸K†$Û?±}q“ ¸Æ ÿ ÆYƯ‰{Z`…]¥¹=”‹,kö°Y´?Ló?^=,æüJLü {–@ÔQS¦ßzÔ_’̃Tà~rZ; ·åˆúº¨}I¯̃*>´ió"̀ ‘{¢+ʾ­—Ç% ̃hr—ß9,@¢k†aÇM>†ÀÈ`‰Ngs"Ñ/£ÀsÜ{-\¿ªzNUkæờè¦]Ö$fR¼Ø&÷ÚùùܼÀ₫¦4'È(Èß%æ†Ö;¼,6tV×ÇÆçà.T×èOS[M‹öèG Åb&3Û³†…_Ç3¯Lr™(b>2D«i îj‡9ÈÂzü®A˜ùå~„8ü›?8ºVÚ¡à¦0~0˪ł/©6Ûư|0díä— ö´=síôªè5̉óưE/u°n;ălù*_̃ñƯfM3®fPNÿ¾Fl€Í.¸âR{Â(K ×ioY¾»à‡Èníăkb“èó((p_‘ôÏJ2ˆ]¤¡_đÓ£‘ŸPSCP˜0ⱟ̃ÇÁæR÷ÆăR¹4ÁPAÑok+VÂÛfG$_C|ÜßöÅÁ½vc̀ç7ơ²¿Ôo…9+l£gN 9Đ<87PدæU‹¡áPivØŵ­&i©,¡3¾M̀̀R/9u!ÇÂsüU./6‡v:đĂØV̀)í.û4’â™­ƯIIKîu¢YO₫ êđ1bĂ_=t£%û£aCÁ¸I¬¹„ÚÏ/Pơ¤v1ÀÑ5Bª/|éÓXw™s‡µ¦f+Ơ¶±ư ER†C¦—$Ă=ù*)§u¦y ¯/7Èq æ™VíÙ"ÉÑÉ+̉wvú4q ëD©N±ï‡²–1¥Ë̉PdĐwóŸ±(]¿\×c; èÔ§ÏL™á¸ïFµ—̀áµG­±Ä†“ÂW8{råorl%V1hQØ`ÓXQ3 Ó¥å8Q±6J…̉k‡äd́»I;Í}Ưå­œơOdi2¤¹oùé®×X× 9YJ6ù £´?uC¸[¢¥øKäM“To…|ª-̃ƒ›ƠEă@“†ẓ¡¢¼FHÎÆu…J›Q¬’ûjæ9_EÛˆ4e±¿đáߺUd?•ÎÀˆPêg|HB™ X5Q”‘*™ÇẤ‡À{"‡Ö|F{qÀÖ`ñ²ÖéLTƒúÇ«êP«̉—bnĐºfc{´0aç[Æ+ØCIón\‰[0¡ø¾­kc̀±°†54yX¬w†I?̉1x"·«̃Đ̣¢+{Wˆ"W›¸F¼Ÿ©½«ZµưññÈË<ưă@¿₫̀)û¡•n•:ú);Q2Úa%ĂGLc2:„º–9áAçxd£Đ̃Œ—$yÖ¤ÇÀKsänM—2à.4ƠíÊ?ûë @»u= ÿ¼ØÁ<ñh&GaÁ¯Ù[>¹•A© Ñïœ{ơFvÉJ%¯ñkц`wX; g­…ñĂbăđVÁ;7MݧÿTjIă9幯5/ö*€Ï/Zºîo uºÅ°íK(¥JQ̉₫kBƠA] „#›[<;£̣ nàơĂUẸ@î4‡y“Wù¢œ·¶­¹´5¿ƠĐsÄ7úûă )U)>© ^÷o®ÅÂb›ƒN¾HßNœúî}"1â-ewZ_&LÓƯ@ă´É£‰pL¯²®ævÄè1ow»ZzÀ²læKRôD́‘U‚k^VcqÄ»évÜ}ªæ)Dö¿)Đ<Ê«ºFà»̣[ -ñf©¿åràè́Y>öFæ+Bb ;å »åíúĐà"æ{2“f]k>'MØa†ơrr(ß’Äo#MÚ‘cëvî FZ+‡Ñ‡Óèma)…:đ5¨§S)Gœ.ÉçÓ¬áü”|ù¢ú b̉Ơưkz+œ5U³0÷LGSu%Üí÷dăi›§ èIĂn÷ü?̀Æ¡sŒúçûRnbé_‹å9$“đq¯ ®ø ëO‡Ñ ?®Å3–'ßđl¼‰×‚b;Ù{ñ|₫¹ Ü[ËÖr^°X€í ÿË|·=\Ë—y,â eÇ÷Äg²9‘ÀG¿¾4ñ:;™eh3*÷jÆ—ÆnyŸøê¹û¶bé€t?±’e Á![8v®ÍꇙƠ®}²Aqa¸„´Z™èGq céăÍ6áž6ư‚Í­̀'5Ⱦ9—hđbjb™à%ŸâéÍ>ä@ƒ×MRƒ–˜.AÅư¦7Á퇽3₫X·4~g6Y"† “̣̉ ®^µù«s̀8}©tÔâd“ö‰»hơ‹ M4¤îù„“É́îéøJ{Ñx₫1É“̣;jè³§†Qpgq$ơĐ”º¶SÉ7®Ă6́Èåù•p%K¦Æj,Øñ]íÂ’#±ÜNy”lmPIñ ¿²”ú̃^Y%—*aùäûö|íI y»,Zy…Äb+UÍŲ¢º{È,¥Æ«iêW­O;Ø]®],răd:Wă»¶K+¾µÂ ̉ƠD Ưà­J^%ÉXæ¬Xv;ËTjn‰}¢9`jcøœH‹©’M*íMÎi5«Úß$Œo¿à‰[Iµ’ꈶÏ29{å€9 ă:ưªE¼µ1¶S"Y†ÚÅp4DqÇ™öĐ¥=âß8êâÎÓœŒÈ®´H”>"Ùƒeî/DDtÍxª6[;½ûAJ¨\È"0³Ñ:pĹe¢G«g0É9™{*¯V‡ˆN©H Ó—bô€[¦Xƒ­Â˜±©&¦Tv5DT82VnáK-ç˧g¢Æ ùFug¹ù/gˆỈ”•Ć ưÆH[)ô¤‰&„Ô*‚z¨È“lÆƯđÏdHAØ Đ?s7ëÇj(n¸ÀđOfcÖ?{̉ƯĐ$¢ ·ñâ8å#¸±H_X¦_-?`ëÀI}¶nö'Sư(g+¿…Ä(á´Ưb ?<̀u:’ —”¿»€hâơV¹À2₫Üt&7ÊëQ¢Y^•EÈ6UñKĐ‚ó΄ºpíXRª&fíµê1 WŸd;Fư^g½ºÉ µ®#» ÊFq}?`„ó ¤A₫Œ[XPnÊ’T¢WsX2‹9|†5Ó”ù›Óµ ĐÏ-ƯVÜañ1-íª{,cΣJ|VO5Iă{ø‚̉ íu5-3LíKk̀ưM ŸÏNíÓÚ@B™Áf:Ëü´jÓba¯¨í¶ q§aÇëÂxIƒ\&Ă8t>+ăŒ2ú₫bD@^rÑ#ß‘Èh½M›a%¥X̣=¦÷lÉhzám¿xP»OV¬•ûZÀUĂqá JnBosĐÉ)+Utе•SøÑCLlX­a¸Đ.ơMô0¾a„ôHZăpÆÚịׂ̂]ă`x¬-¤£ù/bº°t²ơE¤p†Äơ'·ïd»(:˜uûgrºÔ"¦ñXDmûQCØ=¬§+s¿öï’2„›}NrJÄĐøF·KÁh̉øº†¢‚/BE/ÉK©ØZ–N:Z KƒqQ” ́—¶UR„¿”^>Ÿí¥CwŲ̣ßªÍ mŸÑضv´ætÜn&­iXÚØß%5,é„b=PÁPó=DIW.ú?XÙôæj¸›“º,üP[ ₫"R¥ ̣yL6 Ù vrowDkøt‘Ưh¡±Ă¯éî"•hJJ?2üשjË#Àó¤C¢$˜R†ç"C|ƯP…aÙµVÀü®•W÷¥¥ô¨ÍƠ’Ù˽„Á€›s̉ÇÎ[`ǸѪ¬§ŨŒë—äĂÆ3-‚Wƒ¦»¡úº©m@-¨Q–ƒNY¢£«]Qæ̃zû‰áëi9»–Á•|fv¸̣®œrf.ZبĐt¹̉,ă5ˆåy 1„/3ƒ2Öƒ|ɰ]%Se>ÖïĐtçἉ¶äå¨çSü°?¯Txtéévbúƒú肹Đk—ôO—Ÿ˜¦ö#–­S­á̃] ù̃ƠMm¡S&³xÏỌΉ˜Ê„₫̃1!Aú>î§,f £ü¶¼e³)4ÏrÖ^ÇæûÅƯUÛ¸.ø´,óxI”>_£i4›²™)'s æĐ|•2o½ƠûÆÖ4§‚ ×„ÆÆq;EMt Xö<8—Úâ]ïĂƯ×W3~Hï¹_£·ôbä(D;îVÏ4Q+zÇÜ›(»_¦ÅºD[w„â@y¥{x «4†̣ÙĐéÎ9́îPŒBüL×dˆæl¿f´ºCniT´¦Ä̉ ¹>ɘZ+InD›ÜXO»QX“ •vK¥’å½[u ëĐº÷uÿ G_Ñ«‹k’ËRmM nTŸ¾e.|”ȇ½A9º-ºÄ1ƃx`Điû‹øt‰j¢é[©ùtl}]¡B’ØZÙđé}{\ˆ\ưák^ơÄb$kxÀóIÜCĬ¬]£ùE§¸4$Ôº¸ưtVÛÆQÍÁW>j`üG ¡Q‰aL¦Á°wU\̣‡B,“‘9Qøí# sóBû́¦P`s²ËÄGÚï9c£ù¦rÅ¥Ét)é̀̀²:đ ü±8°¨bͰœ]2±ªÆ’»²:‹gĐ¹Í¯(>/í=ZD 8*›åœ^›ÆK !Ê—ûÜ*x‡œüQ¸%[½~Åf?å®í}*Y©̀ư$?óköMO‚‘Bù w—*¦  F˜øØ c‰ {dx ®úÏ\úÁ5ˆfæQĂ¾£ ̀Búp<Îj$)@‚QZD­0±ïtN4ïÈ̃¸1T¤¼0e²mñÅCÄ|} n»ÚT©F´+¾ăm¡w–ŸSP +ô+üÊŸDy™a`'Íó®a¡B Ë„ÚT-x"Á×tC¢÷ú@ŒxwîưÓF‚K9i°'3Œë¸¿_,Gó rCÈpSÚSgP$!ˆZÚ]@ƒ}î "æÆ Ñq9µ̣¥x”HM’üçĐ9Ử…̃¸P2qŸ0KQ›zK8AsÂîjIQÜr¿©Kk˜+Öeîq©K.7Ù®u€ÇuÑ¡ ˆ_ ‘6†jN^Ơˆ]îe3’}„wYjésđ44́jÊÄéD₫Đ€²̃ÍSđñ']Ô¾«¹.¼ôø:&æí¹̃i%àmxG ç-FÂó¼/E‰ưÛP<9„©[W§UVp¿êæƯó÷ów0áy@‰r²×û}vÉø]ÿắ©É_œ“o·‡CXÄ_XV Mo}AÜÚyNª¬ô™ü]8V’«^ôß|è’CèCµÅ̀ưô¡î ^:Wđf̃Ϋ-ăx›ưwñn?ÿâÔR–β»åm5*Àh0̣¶„£ ù Í,CÔĐRŒöÄ).®&ƠW¢¬!¢ñ¥72̉g”‚÷úqEI™Ă¬ z¤µ‹©`–ƯÖ« 9ß@Ơ#ààăƯ½\+º/ {`ÆÏƯÈ 9Tăå›.t—œÜĐ̉Eº/́É:Ñ©~1†µ·¨t¸ A‚9ÓÈEEC$ w*gUË£Íde®C¶?Ç¢ô:°2½Å“?ơ”·IÛrf=çb^±G÷°Äñg₫ˆ‘&]Ư±ö‘ë¿IúzSSŸæñ陿W$'¯£ư f6ç38&ë$;D}ƠÙ₫½ô(«¶åc#s¡¬0(Já6!_¬’T5gdíĐí¸)$³đSÇØ5[úRC¨£ÎÁă0¥ÑÁ•ưcgAy<¢ă]ñS5̉"ü+>jÖ÷oßϬi/;Ú¸Ÿ—5ü%Ă b̀tVxÁ«¾ùÜ]*7;íƠ ñà b¿Ơ¿aØiÈW¬‚¥Á¬×YeÂD:é=7$PN¸gÊ!†ÆZ̃M¥…|đóßIlTí7Ïe sDH !(ù°`7ô&lJÙǸ¾4ا+‡løkƯ‹æÉ:ê²u±]́¦BÅ®è©i^Đc ̉s ÇGơ₫̉W»â‹tÄ©D@m2€woµBuqÀ¸ Ă܃)ņôøî—OwøÉ…pwP7䥖@ ‚—a»®MDA¹‘_2¢̃u-L°jöZ¦ …́Wuº{ üL—§.Cï¬V«¨v§́—â4ËƠ¥„¡GóÛe”ÅlÛ< ̃ ó¹cQ&”°à ˆ\*'¡ô±j„ûÔæ’†¤¢‰=|™n…Å-!2ëfÆ?˜Ø‚,JEÜ*”R´F d‘Pøs•>+pL"4_׋YON¿¢]U‚Vñ¢Đv¤#eÂm:pÚ Ÿ6ơ©HŸưD”Lª7Ä‚›<-É„LăăpỰ¢3}Èr· ٬–G†J?`ÉÍ2˜Ï²ûf¦_nÑß|¸‚_³‡˜¾̀.ÅaC²-ÜÄ,^„b‘ÿÂÿ5#]¼!dÑzïü­|y4Fsüxpª•coöcdNˆÜŒ¥ÊÚW\‡Û³Äơ”¹)¸ÊÚ,‰^ÆĂXaîSÂÛo =©“ÛûÇ©L²kg­©“®^l9m¯¾ï™èưh4Á`¸„R½§|™C/]ĐQ«h&_³ƯCñ̀Ú÷S÷™¯/À…¼̣c&»–7g ïdà­ûܧA»x†waÑ)®yj/üOÁJd·øR¼Ưƶ<µÔẸ̀láI—_±'+ø¹ï0ĐÅYÑ(Ư:́ôƠ®†Äç Àdo¥ö¥~ºÿü©Ñäî~©ws̀ƠX]#§Aîó’ ‰¿®Ø)ß³Ưø×ïHµ jG‡ xæ+ntÅp°ƒl=¤_j¶Ơ¯ÎpƯ¶û<)ç\£ sƒ[¹¸®ë–=:ïצ…Åc›ö$Ơbmé{¾ Œ³ÈäÚ,¾Px%YEñ œ‡y!‡ ¬êw&œ-@~ºn/s„d“seƼªĐî¾@ÜhyóDwGso±°¾Ö# ̣ơd’ëơ6&KY«É=±;a_?ëLY±Ư ®ƯóPŸ5•¿VÍ«Ụ̀â·‰˜¸Ăm&md¯°•e,7“)LáÂƠB¥S¼2Û–8¶'~äs°ÊåPÆ-¹Ä˨Ơ/¾¦ïUcV1¨ÚpÛæ\ Lº¬/† 1® '̃̉óŒ”û$µtÈdлԨ6d}L9Ê'ÇYÓ/8RwV¤ä« ½³>U÷ä÷Órµr ü¼;²*¬ô˜Ëo0\ê2V$=̃ƒfÑÓ†÷…©À—%PÁsäÁ‰̀ÁôA,-Éơ ̉ơsaüWˆb\ÇùÙ/£ˆ 3‰a/Äpèµ1ä:zà,?©U~¥)}ÖhNfí-Đ̀H¡á́Ë Q¾Ó;Cđ#U‰Hd¼"bÁB?g[P~¥c•!džqG̣Û+UtÏœt°f\VKî[ i'Ü®œJ íCUø™h|Ÿøñ£ù¼Ëˆ5ǯÜ8÷9Ô²F{Ưl%g\¼ÂK«-êºÏèUSưöLzh₫—\¢x̣×M]ÉCiÛÁNa¨₫¼«_\V³Nj̃•“̣9“q 4𬒠ê§8%%‰ß̉“^…w„ 8Èú· ’@tÉ¥îç=‚₫Ÿƒ|ø‹¼’@‡’%ÓäC jà«tỸEO>¡×iàÜ Y f‰íâ!¸\Z°_Ú}¶Á¸4˜u» •-‡XŒM“¼Đ™ ÅÉö̃¤Å^64he4_ĂCf[Ưđ0UÙb‡M»?–¿}#“Øl‚ư/ rϘ 9¬óƒfN‚Ï{†ú²Íj÷Eßx‚Ú¸ZŸøà~]»%Hu[÷“åê´œ‰»±Ơ_¥£ä¾ç-CH̃\.èv:JX… ̉c™^Äé8#*s.µqá‹¥wÆÁ¡Wbû1Á;é¯'ÑñH ?ÄËS|o­vôú«|ªR¡Ỏ²Yñ¿Ma¿› 9ó™¬Hđ­Üg%«û 3j̉¹ăy₫²œülŸ¹”_™ưµÉ«–zƯT^ă8Mj­w½—™˜%+àí…‡xr{­y¶î€̉úñp>: áê‡Èù¡£•LÅơk Á̉đ¼Û=Jóy„h•§-xQĂë0ËuŒ§¢s1ü¯§̀ÏÎÅ eµ¸Äz±{­xÜcí™d¨Öl;Q°ÿ¦î¨tâÏƯÔl§±̃ªƠ8pÁ}ÅQÄBÎç®ơœ¢aƒU#1†Ô™eœÇ˜‰¹èYæ’*ú¿H]ê¦Å#†âŸ¸V+/ ”ï9íÅêßE~'ÆÎ³²Ï_D̉V™ưML­î\â@bpè1±+›`¿₫›TGQXø´¯iƠÑÄĐÔ§WŒn%†“óĐøµƠ/b“pJJ°Ç>e°1½Íê;xk+–‚§m=¼®K»Ø¿P¼fJŸÏè‘S˜ó8ö7OÔ¸ó›íƒß^²Ë³¶¾̉VQËDt> ¯ ˜ï “ÿH¹Ư'ăQp´hR±@ix{‡±Åî|O›£!£ƒm-́ ~nw8­-@YµxẃG>̣¼yṣ‘sxû³U(8ækt{­|U!ŒÖçr“,§ÊùT…0¹~C¥Yjođ Â1l7ÊùÊ|£1Î.Y² àÏXxƒ¦~ đçSL¸pYX₫X.óṃ©MÙï|µ‹{¡t.«Hª(rú™Ô©rpˆAöÔ&oâŸMöjAu…µ}>EbϧUU¸sç…>b:'5Œelí­đ@ÿNu‰Å–Ào%(3GŒü›g.°Z̀\(V‡°öBŒuÊ|$“HνªU‹S2nO(°4Ä_ñˆ1ÇûÇâ endstream endobj 921 0 obj << /Length1 2127 /Length2 13081 /Length3 0 /Length 14348 /Filter /FlateDecode >> stream xÚ·P›ë¨»»”´¸»»»»,Xq—âîîV´Xñ̉Bq§8Å)VÜ{Ùrv÷9ÿ?sï0̣,}×z×ú’ĐP¨i2‹[9YeœÀfv6€¤²–?€“……†F q₫-F¡ÑººœÀÿ2tC^dRæ;e'0@ÁƯÀÎ `ç`ç`cp°±ñÿÇĐÉU eî²(³œÀ@7I'goW-ä%Í̃è,é́üü¼LºÄ® Ks0@Ùb t|ÉhiîĐt²!̃ÿ‚NÈq`eơôôd1wtcqrµ¡gx‚ ¶  ĐƠhø£`€¹#đ¯ÊXPhZ¶ ·¿äNÖOsW àEಂƯ^<ÜÁV@WÀKr€¦¼@Ơ₫ËXé/&Àß½°³°ÿîoï?À:›[Z:9:›ƒ½A`€5ÈP•QbxA˜æ`«? ÍÜœ^üÍ=̀Aæ/Ü #®0)đị̈Ü,]AÎ77Ă%²₫æ¥Ë̉`+I'GG â†̣Çù¤@®@Ë—¶{³₫u³ö`'O°Ïß` [YÿQ„•»3«6äâ”—úÛäE„̣[f„¸ÙØØø8Ù@ĐË̉–ơđZ̃ÎÀ?•_*đóqvrX¿ôY_₫¡ø¸™{Ww ŸÏ¿ÿM(́́+%`´Q~G­ÿâ—Ëwy Ù^fÀöÇß?ïŒ_ÆËÊ ́àưÛüÏûe•V—‘”Ơaü«âtN^f3''€›‹ÀĂÏđûï jæ ¿ÁöÛSlíàÿë¬/MúÏy=₫¾~º¿Wƒđß±Tœ^f û=âFlÜl–//́ÿσ₫§Ëÿß|ÿåÿ6âÿ{ w‡?Ơtêÿ?jsGƒ÷ß/#ëye§—%ÿ¯©.đ¯•UZÜÿW+1Yq°Ă?m¹É€¼€Vj ˆ¥íŸƒñ—XûsjNn ?)fv6¶ÿѽ́•¥ưËsĂíeÿT_Öæ¿3Jƒ-¬₫Ø/n€¹««¹7 ÛËqps|Ø_Ñ èơçXYÀNÀKu~k'W”?.”‡À*₫‡è/â°Jü&^«äo⯈— À*󛨬²¿‰À*÷›8¬̣¿é%ƒ̉ozÉ ü›ø¬*¿é%Ÿê?Ä÷’Oí7½dĐøM/4€Uë7½Ô§ư›^̣é₫¦— úÿÿ‹Îü7½œÅâ7½XZ₫CÜ/:K'‡—+û„‹ë‰£ăoÿ?î’Ơê_ø̉!à¿đ¥ëáK6ÿ—p¶ÿ—@ÿ—ôÿ—³9₫Fö—¼àáK^§áK^çßÇ~±u~yöƒ€ÖßRö¿¥mî?â—›s~ÙW§ßUñ¿ˆ\Ü Àỵ̈çäÿ[úß₫́́/U¹₫ _ªrûƯÓ'7 #èúúr'nænÿjûKÎßA_'¬[Wà¿ZË₫âă₫/|é–Ç¿đ%çoäxñ÷₫ÿk«,Ư]_ê‡üùØ{Y¹ÿđŸa@ ĐåÛ¼“¥`¨]cèÇÛzqROæqáƯ zfŸo®]î÷ˆ©ôïs‚×]¯ÅS‡û±V¶¤é®Ä–ÈŸ|~´7#Ft$«w>ø>&jLít¢,N|(ù!̃4H†üYKl×÷ÉÅW'ȶºG¦ÀÅC­÷Öó“¬WÓ`Ợhøüúî{EÔǪiæXí£ ̣YB‹Ü9"J3ΙǽƠơ N₫Ä/r…DF¿£XÎRƒ ¸»¹·«5Zn½ÄÔÄDd°W8£S´>ûi „ >e1ë ylô,P‹à¾¢3 +“kÖR fÙFÿó2‹)(̃&€Ê-­Cȳ”̀UÆ&wë§JÛĂØ$œZƒ%ÿ‰6S₫†`6|x¥Æë½†¯Œªâ}VBíj¹6.LJÁ £<Ûu¯A ÆÇ½vÚ•|ú§ÆL”‡ÚnsùŸfĐ¥eâ§,#¸}aN¦ƒ€éàj«ÜLăoG•bné°ÎË é‚=w=Œ'Ë ǻzmƒci^ßtb#±u ¹vsˆ´e4Cí£)¬,Jâ₫WD+–Níâ₫‰Ûë¥Rª ă]> ôtM?Vóộ΂êÊ¡ḳi.>i!t‘LÁ’3ˆy+;×]†ü#¤É¥”%ö¦ïf©¡4¦f,ç2¦l/ІƯă¼*ft”mf•¨9Ơ`2–ñ¦¿ywbpçÔà1ơ8QṆ¾‰Üë`@8–. ‚k0€₫5sPnÙù³j̀‚/Ö•ÚL¦wi­œµ!÷̃ơụ́øcØêm¿q`²€ÄỚ¼µºđlbQóaàDdHkQ\Á·¼Û¡œ¡íĂ´Æ¾ỡfM8S¥qïm½¯6 ]T‚2Vx̃÷üè2,^ư´º+„{Ó–Q†ÓƯµ÷v—µ(!+?Ñ×µr˜míÚ2fáz“æG-,g¼Hïü'm^ÛÁ±d™¤W4ÓÆprÚÄüäÜ=ôtä¸ës–ˆÉ‘ „Ljđw©‘ÁØ8rZ5!‚:“—`˜R˜d©5đ Ÿ¶<ă Âç#=̉o˜gaDzSw‹l/=ûÔwc6®a2ëM.©Î…äƯ·6„±ƒöá ­±{ü™º Ê$q©‡C£Zái[e}Ñh_/ÊWà̃'aYoO/c’́h„bÚûl'~ëÖ%úGçæ₫Áµ)oDGơYW]ˆ ́²ÑX¯6"”{²€ÛÁYDmfèõÛEˆăs5̃́hu!Fu†MÂLúX¹æ°YE¿µvơ¾j[ûŒHÄlªød»äŸp#¸N,®i›©1§K›öÎú-ƠSY˜ÇªûÇu(ƒ]Jméáü{ÏÚÛ'æKèWPb[€‚ß@€ísyÆ TC¬Ñµ´_eƯ‚z%<À®dÙ½Œ'vQÀ…¯†-½¼? ¯™Ḿ’ ‹¾â-£ØDÅƠó¿Ăâ¬E[ûL(UÙG’t…lIƒÖж˜¹́ư^AR¸̣-üaÊ1!ö´!à‘™™̣µR$Xgw³Â1óW?a_đY®°®sY$ă–Ă||x!‚œÓ¦ ‚÷³ÀWơ ¢>±5ÿiæ#w±™©S#R7ÍÊ$Ág/A”…º ôº7ÎñéĐç(̃¢£Ïñ&’ĂW8çẉè¨ädơ 3f$è¡H˜FË„J9v4OÖ59ă°^_4²—b\VWº+đØ…óë· ”§äEœ’-”(ÈŸ×â;/«äSM¾â«úö¸³˜|ŸRÁ̃s¿ Éñ´0;âïài,¹]C²RPC«ÿtÆv|y¡—Pv6Læ|g8¹XƯÀ} ?́¾OnB³XvnFöæ …M+  Ñ™<ŒÇN¸øfÔ3zy¸«´g) ©sd7œøv(ă©abùwđnIÀç¾ ¯ó*¿#BÔA®ùc&ưyú_¼juI‘£˜)ºéuÆÈz:ºZLô¼8l¬G‹‘z,ñàåC’ÁMö¥Æú•twäZ]·)dcïí&Sóu‘˜í“ïëÓO\r₫\8'1 ¼ÁYBEÙ“ưƠx’ Ăj»“Đ9A}~îo÷û}sol°¡]™ ²°H öƯ·¡/ ‰/7 ¤öBzW+f$3lñ¯£†åmg`êUŒ½·¨¾Ë›­¿œñ7i‰$ÈPº)¢KW¨æd,¡er¯_ëç9Åú!ơˆg”ă>̀l–#Đÿˆ²‘ºÅ±Ô°J·êØ»¸Ëg2•ÁÊ.ṿÅuß6¬ùw=«.Ïl‰Oíö>mNă4ö¡+ydŒåÀăÇy»±PnÖµüD€f%¦s³d´­Ö/ ”ÔWêÁ%%¸û'©|'Êy$ ˆlœ»ÙAk±ơ&ÅöuJ÷Ơµ˜¨JätK³”J³h¿^ GßäiºÚ=`¥₫D}̣püå“ưmĐIMÓ.38 ÇÇ7á¶ ¬¬™́Lʤz’mQk]]1á2TN3:n Ç.‡¾ªLÜó¶à .éOø²5Yêo;—: °ăÿđÖfˆ%s¨ÿœµă;— !ùvVItQIẹ́:F8ï>œ¦_ÑÂo›g6­—6@¬Éñ¥:ȱ=©5^™W I2ø₫ik°>’lF|¢iÆ7Å¥m– .‡èI€›üç`— t‹Ûý-®¢ÉÙ~ÀĐåZæ(©lňDf4†³I2.4®ĐcÆg ©ߢW´Î0«¡ĂéÂÎDgV˜û]«Ñpœ_́¤v~y ¥Ơ^¬°£|₫a~‹ ! ’*?—& ä#AfŸèûƠ;ÏR­°'A1öo·Ç‘Yqoê‚₫Tk« çí_ôi®¢ă8¹,%v{ºH½ ïx±₫ ̣DÀRΤl;|5-"EóĐíÈG@Y7(p½áªă‘¸&ÛÚ±ùv¾Êà›o½4??5OÅqiù½( Ô WÑà°¸Äă8»²|1" Úw]î (à¼VjÅÛZ<Í2snơˆ¬̉¤˜…Ờs†¾©EÈoăÈ _®²ŒôET¡7Ư²Ï}ă¬ªí{›üØXÊÜ|*C±₫¾™ió…é92h¤óe8ß ̉K¢¦––†nZ%ơâÛ©•# tm̃#o¡²Ú¾7Æd™DÂl·©iÏgr­ÑOZ½ˆv́¾ÇÍ£^¸L´²gRoL´í'}pÁXK!al̉œûÅVøúđ–Xa@F}¸·+É'Tñi9̃â+uyÚ‡ơÅ*₫n$C_\¡ <£']ă팑?agA59U^DTl–à!¨.½{rÔ¥¢T{ §UÍKÛ÷Ÿ;Pk\a›52q¾ăêJ¾9ɱÁPûX?Œ¡á"HDïMºƒ¼=ºÄ¼œû¼̉Ç£a"gLJ"0™Œ¾²ưZ»Û¦9S±ư¹¾ ®s à[¡Ø«v‡Å%ΉuØÀ¬»9›{œ5}‚c’¾g°-Ï̀_•çḅ£*đ†’^ŒÈ¼6¦Ñ} 9[ÂñcêÓD.¡`èc¹(ACNÎđÈ€́Ḷ†ß\«¶÷“7hÀƯVëˆÀ F8ºJÓ̀Ñœ­âËs`Á‹ûƠĐæ€Éó~G»N¿ă´̣MmÅi‘3 â©pư£±‰€=`È¢sºÑĂÆè9$>>Ư"+¼nœ{Å1ú.DL=(‘×cÊo–û-§ăÆbÖ9ëç«÷M5ùÄͦ˜Q₫=“²ÖgP„²GU‰É\)ÁL¥µï…˸ni —Ú·¥s墭ÁĂË^ï>k¼j>¿ÏWb%ÓàEbÉiƯú „¿™è*MxAj>-ë·F´ßéÚXˆâCVm,D öĂ½¥„TèÉCè|AE ×·H|èQ–ľd•QM¿öóỒkUÁÎ. œWôµ•N5:‡ơgÏ»BŸ‚3ÍƠ_³Ç¸¿e‹TüDC¦1́ ¶Lô©ó¸²¯$=™Üö_Œ˜„!Fợ‰­uVé_·ÎµÑ-’Ôy}K¥ƒ|!§ƠÓ?gî¬åe¨&=g;ơJ¦•>Höx Ú˜S²s26´nr`ÃØ7ˆƯ-•·ˆ³!H˜sóÜĐ¥­®,3m{¢— “«%‡TÑ>Œ̣µ¡û÷sß,|Í!Y¬+høÿ°Ù׸n¹MöÊ•…₫CªCóuaê—i#ákÑHơZƯ)N0Ä,:‡­èdÑ»S¾Aª ̀2i{SÆ,i¯ê4rƠ¤đS„f¶¤T7¤àÛ²¥úëú•àÉ…áXw2‡z1®úO°¾\ƠÖ—˜Ío ˄ب›~•Gù~pQ{ßÙÑZmJ—a³(KªHëø©̉ö¶ÿà±ÖºÊ uÁŒ«ü-W s,/»ư©¦[j‚g…‘ºA~l3ú·Qf–Æ̉¢ơ飳 ¨Q±Ù×ËÙa+»ư-ÍÔpïÏÆ¨̃ “ö›¿iơ™ N5áú+:ØMíèHœü\&:ñDvѯû¨K¤ÔèR­I~’ç´ y^$E²ªÂæwhëa3–ü †7‹ØO¤Œ†ÇR34zØ€ éØ×ë0'ñ•À¥¥ ÉkÉíÛ™HZQgDQbM½9M°ûá-Çnư| ̀!„]ȱB°ßÙ=’Ä ×|°¥§kª‡F0ÑѲđúX³¤xE1HÍZfyûµÈfá3†#Y‹̣ư‹9’d€;1Ñ­̣ÙÜôuØzßÈ=T¢›!9ÉaCÈÓu=̃ưQŸLÙç¹ ƒ? nf̉Ù<Ó~¡p*º h}¿[™ˆÅ©0ªùøö4.ÉáUU„1E)œó“Mî 9¯,)}ä{½á†NÔ”Ja÷â³ÿU“²ˆŒ½˜Yt2³èêG³©GL”ÁH½Û¶§tW‚†~ )»æ¥äѵåîâ- Zæ(̃5y“V¡2Gô„¤êê£N!0_8ơö‹& ï¦{qPªi|(†Wzêơ‘•Á9¨›ưkD•Cª7úÀ_ơ‡¼Âz¥‰HËZâI9pư ̣DÅ×»!_[ ÑÑ*z¯ßOŒlùÛå‰K¤¢/©ºsg ˜Œ̀5?Ö™¬Öª¼­ +=f³!ÈÏ‚pd¤fKØANÍ‹ÄÆ)Ѻr58ơÇú°«~„oÔT̀:4Ư%¬ ¨™rOçRg”®g·/Z…ï=1›ØIu°fwÓ‚2Q#µTÁâbeJ½‘­W×A.w¤â¬Ù¾:ºñ‹’}ÊË2ÍßuË™m‰‡‰/`;Ngu£̀¯Ô&›'¥AíÇœØYƒGµ—3c$ó²ÛÍ‹!­¬1+{Ÿv» Î=–WÖ—Ô\^IS«¨™˜~ ¶ºÛ÷hh».§ÄÔʇ’4<÷øVta”yN±ụ̂â\¦KĐ̀üú°oL^L¨[KiƠ»Éƒ¤(õu31(Ͳ)Ô­™ ʹëKÇˤÇclÉC¥™„Ó7DO®ă¦ˆPtR̉́LW™{tm«f»-u¶ôA#1“ˆ¹;´®Dóü`÷]è^§(rĐyÙÎ\‰&ßy4EU:Ó× ÔĐj ÂW†°fĂ”ˆæ»IưÜóäưTqÄVˆº4úQƯ₫„¬ÍÁ"u‚ÀY™>ªŸéc¿¯¢¼̃·6(¸¶Ä­aEhfƒ2J4b‚}uIZE7w‡¯³ ­Y¾X< 0 5j×Héy=›ñîuZ¯Cr¦̣ƠeôM_V•4ˆ6âH[áƠûm†ỡC¹gé0M&QVј&T’%(‡–Pry¬´—ö«ôè4ørE²37ẓ°®/v«…ç0ê±̃‘È„øn\…AŸ y„Ñd|‹tÂj¢D¿ơ:º9,‰ÔÑ{Dø"2Bñ°7=󽿨â3 ^}ÁÑhEÂÔ²Ư•==éyI\o¾I¹f₫(³V[†]‚)ă@Œª„́kưyWFTy?Đ´(x•Á¼;-æ5iû"̀§>î¹í™®Ô₫Ψb«rtŒw[ăÙ û OVÊ AkƯsʸt¤º-6jl§ĐÓ÷溅‡,cE˽¬–by>=V”â÷­D·Æj~’ˆg ´ˆö^_/ íyV§1¼†C`h:æĐMô8¦”blŒ “nI/ÂFuß·ÖB—)ÛzƯlç«Ñ̉Múä“îÛ<M̀=!*™Mñ=nè ;²²Ú!é9b-_鈕 œMu™PxăY#qR ©ë"-L ȳQ]5Sm((]·œ½lOF«3ÊQd¸`ÍĂ~hƪkCÊüh“ĐÈop-Äæ±-‘ØzùZWQ8=`[=ÑØœKh¢WGˆ¹Vhaâ»X́BZÜKùÉdbtÖ·À÷ ̃íĐôkJ]øy/öÁ•ë ÜÀÑŒxZÚU‰n¦í",Ô\¯?'k@̃¡¥};óèù¹‹` VÔ NÅ1XR; ¼ù~ư1q>>UĐ!°×NĐD¸¼êæ#+ÔWé ªa.ÔÎs¤È¤Z½ˆg„4VEqé1Ô×»•+èy%CkK +ÓX>¾Dđ ë̃Î̉ü4(·«½€åæßœiÊ6Àb̃©@đTT¬.骺Ÿ’ŸLƠ½d₫ †l©÷å{Fc6°¦“X¤4|NE4¥‚eê‹yoÔyZa7P«öÊJi.Ê¿±³ bw"3¥ë¥̃ṣdú¹â₫º‰R±,Vø}w¹ r¨~}Úœmv$9±oQ—đ 8nq!¦O+j́…&4đôÔAYóÀirê΃ vËá’Å7—Ì́ê€fow¦Í®¬r|3ÔŒx0Î5]{¦Uci€ÍÖ6óÉÅ¥—Ê%(2Ûâ(?Ê`-@àf«"£1ƯK}jß{o+k=„“r›Â7ªU >B‹p6"¦ £–v¦c:«Êèt¶›† #Ă}c lg50 ° P[#ìËÈôsÈ64ÛíÚ6÷´K¡+[1ïlÉ¥»ÛÙ ËỚÚ̉ÎȽ´ZpdÂ,""Lp’ƯD¢u¿—̃:Ft±f ̉„'¦ œR>™|¤[±hv£"º̀{‹q'[“ösF‘Ϲö"Ú*ߌ§_„rH#Vˆxí]†¬̉'âRŸgv‡¯oøÎlhüñäe:~%ÇSáfñ)x¡5›çÅp˜±Û陘}q«ß”cT}Y{Cùá§lù›́ª̃`¿L²T*&“v ®ô²œIfKâú ƠÊ—*Ê·9l̀†·~Ï⤲Ÿ—r{0#và'ià:¬ô¡S;-dÍGjḳû‡¢/¹©\æ\ûF¢ÀẺiñOx{3²–‡HDiŒwK±c±z—ơ×[é°Ïó’«% Ê«ü¯C,EÙ]¸To#‹Ou\eZMÇñ¡0Të ·‚w‡<đÀ¦_mÖd4ư ÛzÜŸØ̃-+Â*QQ: FM9ÓdÖq¦oåïÅC”ß¡Ưœ»Ø̣*Óưä¨N¾æ(”»̀Ú×|oơăÿU;̃ Eœ©Ñ6Ẳí‚ G£Ñ+^œqKÀ̀zÏå-ßóÍy$Z̃¶Đ¥ZÓ:ßĐÍƯÆCêÍÑÜíưVÁpÏ¢ÜTCWÂSËvjZ»u°Ä¶Kc¦¼ă¦E™QÔN±9¨jCS|^uh|&‚s¤Bq]Ö¥º§0ÙHwy5çĐ<Ù€çÛxûè”8IÏçºômùâ>D¯^úµvæĐw{F_}1¶kÖŒ’w/»o§†̉TTß`ûgŒ¶›"Ï‘¹&F·å¾’¼¾È/¼wç˜̀Æ,ø´z°Æb­0¤úƒ•XG+bÇÜö»ÅzâÀö±¢%i-̀°Ù‚'yN0-§×bM>ïnÁG±YKf¹82¥·ƒ$ ¥7Rw‘ ‡{:3O™ ûBEy~¶ăØzGÄữ¦iơ§Ûơ0v́f~+ꇃ‘IÈ&â»ơo豦Pkïin>Iú\Tă‹[3àTÔ£§ÏàVå,Á~9}âu*¸]/Ƽ"œ£í—ªHeÏ¿‹âơBº¯Ø̉j;â3A¯ÈAöú±u 0ߺG€Æ°]y¢ç0¥Å̀e¦ä –"MCEi[9 v^Ûp¼+ÚÈÿZyÉ'×ô#k"m¨ư›̀ÛÎX²=~ú³| ²†”óx ¤m­™'Ă/èĐ₫À‚f8Øí'ÿ»&´2ÚDâŸ^£!ÀFNQÛ“àp̣£¹Yx'1₫öû§~<¸è óö4ëúív2[ÿn‡‡x¸bög´/Go¬C>ï|gÙÑWï…ˆ·9ˆœÔ$¾r$=ÁH¢6ÀT7¹Q¨ƠƯh^:¼¡0™ ¬‘o©[̀•µ3É­–¯wvM?Åí- (2SÆÑÛ „uË.V8ÇI‘èüη₫ÎÁI²'̣×úíö4å·‚åÄ™§ÀbÔơGO%©£]b–°Œ)^TFṆhZÇÄÉdÉæ9è:QI7º@yÅ÷¡ºó×$FÈ‚gÉíâñ{®…ÔQ‰Åj•$†”bùŒ{èøè,\đ#A…̉QV”YYÚ®ËVÜ¡(1æi,(¨èź9ôŸ´.c©°›€mfb wàdIwfèÄ9sœ=A G!̣+ăGpăQ‡cÏá^ ¥–û ,à ă©›±Üí£ARJ,!ÑûÅ»{0È®B̉‘ï ÿËú8́ú4öuÏ̀Ă6BÉ*[ÍŒ`›̀ºë‘» Ơ‰0ٵْ“âNf”ÇåägUcaуuK‚ØGåi;­PẺ”h@½Î•7—»°¯½IÛg‘fuµîGBÂè¨jAæ/̉sƒßà—ˆơ¥:Er°Íô|ă ‡ß8»Ü ¤đÚ’±™^'q®ˆóÆéYÚJD-˜èÇB+aiPŒđ …<ÛÑ$ï±Äv¿#‡ă“WÛ&M9i´8xN(Á…k—ö3LˆÙ›u2ư¹w²Æ6QÚ|üÍ´ßÄ’₫f•]®2?ôÜÙæ|quºä[ kqxIqï™=Ö7nEóª4ûÙøơtñÙÊ‹›WÉ:¦œªà* ­XWçlÂnTçoçơ¾2ÊÍÑÄ”Æ'®*F ‰—›Íø¶‘wè (1è>̉t¹‡è×Ë>ơ²©}^Óo>¿â%tÜ—68lÄĐ>;êÏôpÜ÷€ÊÖ-ê±z±O›œ'O‚Ÿ}=‹êEé:{P²·»¹}îUç@_q)́ÄŸ§G¨Ó_Å·+dÍÙ½2|#á̀Ö,A&OÉb<Đ*ty«¥x̃ÁI‘¡ư–Í75đîMïѬËÇ‹ưª;̀Âz¢mJÊ€rV4²jÏpŒ|ïĂ ØWfeĂ‹??§†vy„N[¨~x§ óỄÏ…ÂÇØM‰8 ‡†e"ª¦¶V’©#Dï“a|«ÑăƠfÅ/!³ëđ¨”[ŒB₫C¥ëẠ(QPZ(}n :à«{0 50цǵ”¨₫ów+æđBvC3́~Ó'{=kcWp—À=¥Ÿ %Pjäô±¶ĐßđÖîÊ ë”½rI”±€¦â't;鼄«í=¬@®ESª¯ÛßÍÑ&I!¿ø ®ÙOÊXBøJRËơ2U?iPI{]́$q OÁ?¹8ư9>8¦̀‡Fß³ÎÅlơëµG9&ơm²=¯EO µäÔ—"Øö÷¡FŒ‡¹8¿̃M4Úg{w`PíVí#|c¾|ëÉß3 9±'h¼5Y| gcmđVÊgZî5¦ ªú¹RÛU>î+Ê£­dÑ´§ ă@*ă¥qœ0EŸ‚Ç+%t4Xi×Ù¿·Ă|¨Kíô¤₫¤½¤§´’ăÖàÑ|“4ú\¸MŸùÑZW]Ïé6ÚA,ưáUÎ !Êu&蔾h`°[f¾ư®ˆYÄúăX º~» #çqJ s»íÈüºpï¶ËϪâ-·‰̣&Å’€ă‘—oN<̣Ao˜Å«Úù_ß5CÁ¢™\„™¨V%­WJ`¥LŒÄ‘EÂdx@„q¶5nÍ„€¿¹NÅùF.L‰ĐÀ„¬2/Ăw^Ç)f)¡âgfŮ߼c¯^ÿA€4Üăß¶½&R/ˆ6©ÛđZ(kBd­b¬=›T©ÿºéủRÿY¿#´xü9ỏ§­ºÏ³D¯É́‚öàĐ~ âH>¬°° }¢\DăÀ {íùàû„XºupñMê&̣Ȱz¹X¨äç<ø„fÆØ£!8æÂ(³Ñ:̉Öi\ ”GDœỌ̈E'phâÎi₫0u°²ÁNÖÄ‚dî 9/B€­U/hOvÇa˜,S, Ê]Ä•v#‚Ø$̃¿f,59Iûˆ„"IöÎâí¦̃·p^¹Ü\̣dŒê>€^S@Mî]Ḱ ^Îa}Úsn}¾])Ÿñ‘>ơ¾m×ÿÑT*Œ†LåÈH½Rí”á»NC¯„«äj3–-²̃ø>H®gù}I?=đC#­_†x¢_iæ¥Æé÷oå—ÈæŸÖ&_Ư¹ ‹¦ï ÍÀđ»>JTæ¸Äa0`,Ñ\wÎnF øy%đƒFEîädzœ­Óq₫ªÅäs„çØZ»Zb›ư‚Œ₫¤åU´è”4Œ£’wBMˆđ$ï#ñ)Ê&¿/oøuÁQM~k±+Ueß4[uE]h(®¿÷Öˆ`Ywª´‚/ïJíâ"dû²³}›)cñăüÙ,|E§+&à¼÷i×B\ÿ¸®2Pˆ¯R¢ª÷à»Ï¯ó:·¯Û“Xb¬D̀wLßÛ5@e đ1Q¬ă¦|ho»à»¬æF˜Ø̃__+ !̀&̃ïâh¾1Lôqfv‘D|å,AMM˜µÍx1Đ̃È7ĐŒ‡7WưuGúråC)¢ƒÁG HΣÅ[̉½¦‘PêQ1«m(¶å}¾ÒosÎwíBÚû# S?Ùá긭† 2³ßèâpy…₫ƒØd™ˆè£‰‚Xû&ú­ÁâÄ ÿ̃Z"ÂilxªÎf„˜©ưë+q^äŸ?‡g̃u³>”3Đ×j9s˜G¿üU8•jbà·nUÛe¹#J̀>‡ ºyÆ´ECà ꨂ‹[¢Ü¡³‰‚» *wêñÁ1bf—oĂ.if₫Ÿ¨ê‹‘uÓ̉è–_… 擽m, ˜£è•R&ÙECàÛ¹• %i<å·qû6WFÁ~)‚ ÍÏ=wjê(ÈñÍCº$n(@†ùê©IRcáeËr‡jMF¢GKe|±¸|ärDo”ÆÆk"Çú4v‚âFæ·!Ÿ›ë‹Oaaå’ï­ÙOÜ/º©{D?¤×‚H¹mkĂ“¤Đ¸Ú߆Æ̣­xæáS=Q)E×áïëàÓ{ } ÷D „5̉Å#f~û‘́6nOæ¾rk„«K8€»x(ÈĐA{óÙÎÄw/àÚ‹aÙâC…CĐɸllÖ¸N|ß9Zy³9t4/BıảÎF´ EÏáÏ­B°†…râmùéÉtm‚kügm‹£‘-;먂e˜HEù >ë "]¤êđNhô ÚÅâ¼/Øđ·›ˆÏ;9˜7•´À 5ƒ–é,ËÛæ¬e Û5q¥WׯzTÆ ¡Ktç¸ç÷YÄ?ƒºê3y·ÍØ¡?î¥)8Ó ü*|ó6l^½„$w=z(¥@\v˜Y'¸Ă±v.»¡¿“ib0Á̉’ưÛ*-”j'K›¥¾`@QÊøgxÍö¾íΪ%+#­ÛÀB}Ü\́2¼´zû0rr—7VÎüºùûë ¯´=É*ñxÛ ̀cÔáS’˜-$@I‹Ữ|áv ü8âJª­Îèø³ă3·¯‹‘&fä_é:`ö̀¤”À¢Œ*ơ«í÷»ßHœ“2ĂXñơÍE˜ß 6hăKˆë0à!ׇaơj¿›2ÙÀ*° lyh́±q®Mÿ@ºbâz%öĂAœ£³eçt\jƯx²^¨¿bµ \pè %®g`́7=d„1³åơGÁÙÔ=µÈƠ`/‘µKđºSE"ôƒÙe‚ªg¦ơ=—*àbhơ¬sPCØ–4QæÜnÏ®Ơ,W¯1¯NCđ÷ê;à·–x ÙÛ†gº.íY³{!aºæ‘Ưg·l%ÂQ¢­‰¹ø|¦S‘jn;ˆ́»­Å„f H­¿Vø?'í®Ä`›Úëí;ä‹D#kèGĐ ËƒawaæỂ3äƒñs_}2z‹2e“¹Ă²ßuăvê°3QFtª¬É¸?`€s–€KF—d›ÚlÓNǺ}^,rsxàêX]ǰ{ëÈíÎ8GÿĐÿ 1á¿JÛ¾"È“¢Iï«"”Aú½₫&àÖEN¼à"xØdÇʰ²-°ÀjÅÿ<—½F½kNp8e¯ ®‡,oă–ΦG‡Œ72:íé­ ­;ơ„7˜aJ¿•oùöJFÙÏ]™XT~ÚỊqª— %ƠAr¾#¯Hcup—µ#XL*58v Ơèt¯b‰îswáL+‡X"בΕp‹ TeÏoÁfb™RG$`Ï›FRvÆĐDו2©N¾ñ1 |́LkÉ\¹ÊJQ̀ÊJ©ÆƯÏàr$X„x¥9Œʧ2Pú¨]ØƯù4#”ØdÚ—&º JRÁŒ%nÄÔ2Iº…¦}ÓúQˆm‹*@ÇđZ‡GwKùùËÊYû]üÿi|׉Ÿd A84S ·9~< aʉđ/c…®·œÔ(]iö„€TŒoḿ€W6S=¿æ.¡ERœh‘­V́™+dÖĂô£;×…DOTÔL®îèY=½é|åxF¸:—×Y§0:»}³Ó¿D0p×úEy¾ }\6ÜtË \‹ÉÛJ+<₫H\1vÖn÷̀|ÏgM*iÑ ½rƒ ¿g/AX·Â²7â'µă×TZ¸œâœ§]yŒeđ󛹫,Ö˜ÉùNü¨‹æu¢̀q‚)EæhfA`˜·ÑñÅK‹â1ˆ·f§Do1æXpÊÖcê‡>Mb¿ë̉ur¤»u%2ùà₫4V[­­¦C̣×Ó„¡–èˆÍKkØj/6Y•-×K@»Eágù₫×=÷OË´UÀà‘- tn•á‰À£¸ñ“‰•<ˆEC#£ÜÏù0_å¦rx—<Çù_k»̣ç‘æ̣Å&§#¶àAV1Áø)K„̉‘5h·“¢K¢ë́ ùµ ₫°½[£¢ËwFü*ÈRÔ”X,„†>/$, <¥p e¿Ñœ“v§©Tœ%@¬sị¹ñö÷9ÙƒÇ ôCAĂkZ0©›§ßÄüb*Œ×›úAé×T®Ü¥]Ñû¯\¡Æ­¢†w˜ôƼ1PZÂPŒ›Y3°>ÉÇ ÿæHwY®Îék‰³6j¶–~'́úª3 k¨P™6Đ"ϘQüFïƠâzƯU?í™ÑssăB"©Ưpænh¹%³«Åq«{&¦,œÍ̀!·€yÉÎ5₫Ö˜]–eå,U ̃IđC6VV 3ËNw‰œ•OwXvñDqŸœI‘$_ö†7?ÆVÎé#LÁă»²Ờ}Œ`Œ¹ïbH0Ç4ưw‡Veú¹ˆ¡CØ£ư_ZÁùn¦ ÔưTđ«Ư”§)åßI|ï"Ku Å„<Én@?çkÛqVTÓXp:t<6Öæ÷́ôxŒ¿³[đà{["F —˜b2=BÛđAMaƯR)rO™Ø¦~2–j+₫²¯%Öí*«‰Öñ̃C=E5Úë ±h.,û;~ñÅW±]ÄQ,rÂJoèÔq̀.ÑjêR~†pØÁøù®_uGÁvÆĂKâa|äVÁû—k"“üÓ+IŒCu:ƒˆT%t2wÇ]̉9 RÀMí6j?ëÏ<Ă.ïÖyS³Ă ‰âÛhG9©đ»@8¿|èLÙĂëN“1½úz¬ßI䨘!p°¿ILUêØ%áủ Z®6Iû{~d­To>ÚÚH?A!Ơ›n¬¦É#tS&üô@¢––¶ñ᫲¦×~]Î0K̃v'hÏn¨„§#²e/«Ơë_ÀC4¸̣̉÷‘ô°ö‹}¡´ÎƒÓûS©hµØ_áÀ+C;CØỞ[×W-Ç[đ»[ É´~yßU„h| )·ơµN†K-ƒßë¢"—"²’ỏ̀ ²1•ỒYÀ.Ú#úE-sjÅüä/ûÑZ_Đ~hs`"#nQ‹g>ª₫mé¼;!à¯,+)K<ö”°³Ñă]³ư “_aµ°èè9Í₫öm¤4¯ËæIơ¦̉Sq›[Ơ¡ă”´4Qrɵ\<{ơ‘ƒbiiuăj†™c]ơpg‘ºå©éZÍ #<Ø ¼ăù™Cn@Ц˜ÉƒÀ?u­ÊÛ΃ELÔFƯ\Z©ç|c{ÚÎ́UÙS :{[fÅijC!Q́Ấ¸âˆªc­>ƒlIßLøsoN‰jí¦^à—* €Ç…¯×0³̀ĂS¥Ô¥1Xl"‰Uœ¤Æ j@Û0j¦†¿÷ŒFÛÅñ3ÿ¹Øó­ŸrxR®„¶ –uÀÎm…'<‰Äv?‘0ú^ËW³̀]¦KàqP|/ •Ó‡€ë× #@x¦l²L@W¶¨%:I·ùÍa90Äi›„úˆá¬ö‹Èá÷×'¹Öît3³Oè­ơ¬V€Ú¥J½&₫›Ă1Æcª+H«̉7Yæ«_ å×"憢³ ß“i[vŒ”¨¶Y²†²fv›ªÑ0ÇỤÇæ&¨¾XĨë1± '“‡iÍM¹nà(ß]A >_MqHù”DàØJ¶í­Ó€µuBºM ” ¦tRà%é½è[faª Ĭ`gĂƒËúoÆb,yư`1›…§£×E£Ú¦(˜xrçèg q'Në>•€r̀íó»ÇÓ|?K~ÊæáÀ³…gÖ ˜E5k~2‚„/ȶ ( Ê,¡½V́¨³uÊUïcMÉøbÇ(ßµéÈoxëPÊ{+`SiA6!”ªqá Ơ_‘ŒÏÂøä¡ßd—ó+ä¡™oè̃Ưͽn!¸Đ:Nxg ˜ y];¤Ü¶äöÛ£'á³ü˜¶í·đ*íZÖÜÉa¾×₫Tơ Z}5‹â3d±oKơnûk:-1Ö*Ûơ&–Ëö¬/"7́2‡èÜEO.¯»o¨å·,ÛƒÇÏs¸'¶_1êaLⲆT¤DÀÎ9[qằ,×Y— í ơ´m÷N):J±Œ*‰ÇTÁÅ£Á/"á|zꦔ0rô;¤ ¡×øz”‡;đNÀ'®égđ›1¾âX1Ÿ0ƠOüUe 3Đ[r¾‰ñ+àÿ¹¾~ endstream endobj 918 0 obj << /Type /ObjStm /N 100 /First 885 /Length 2438 /Filter /FlateDecode >> stream xÚ­˜Ys¹†ïư+tyN¢´}Úª¦¦* Kgj.L̉×8vđÂÀüúyƠƯ¶¬F$ĂẺjµúư¶GjYA:&XP‚)¥qÙIͬrL G …Î3©­d÷äó ‹èwÚẵ2é½)É”PQÀ2%­CĂ3¥1RSdĐ«˜2fT`Êa˜„io³Á³¤˜±‹ZZY/˜VèqB3­cC£‡Đ0¦ y4ˆáIl¦ˆ ‹4¬„ ‡k½Ú{¸'0&˜0²B1Â1<#‰ç&4ਠ’‘r’GZk4đˆD`Ñ"Ü‚ÂgYdÅ8Ïđÿúz̀/yĂ[xói=̣üĂ|½àù¿úzsỜø„ÿɧüÏøl}ư¾Y,'g|Î糆ßđ›ñ¢™µ6ÚVgá.̀/ùÍt½äŸø§ơ|Ơ\¾Ÿvå$¦€/ø’/›ëIçʲù CËɾœ—W|ÅWW‹¦á«¿æ|Í׳KX½˜/₫™ÿÅ¿̣¿ùßÍbW:Ü¥̉_(óÛ¾̀ßîC[§I_ùwêÑæ¿}Ö¶ºgƒBdé_wùÎƠ±˜hDº~¿joc'BÜ/›øëÆÿ?y…tï·ó*+ V(×*̣£Éb¹yÁWbÄŸû|́GüíäruµÄúÖ=ŸÍạ̀eĂîáÎăĂƒĂç±úûçRü Cb‘Ë₫àĂüïư98ûíññ!üy₫¤Ÿ d5?ñf›pwë^îŸwÖUÁº₫aëø”ÜÙúËWO>n­‡‚qóă¡ë»÷èàƠÛÈåëb̃Ưw8 Đé'p°ÿÛÛ‡‡ï¢;¥TÜJÿ3¼9{~ø̣Eœ%'ÏJÙ‘ßPéÙñGídGưŸ¾>~q̃úÓŸ‡}C*¶¼·x„]áÀ£{àstôîéyœ·''E¾7îd¶₫ĐnÁ́OHĐpw6tÇƠÓcvêud 7OëJ|§8»æåO(Îà?tG ƯÁæú¶Ùd~À—ăÍŸơù:nF¸_Ä-Aü)ؾütr¹d¿·JPï.-ƒØtw$ú̃¶ûûÈÛn¿‹N²¿vÚøưÔ_7÷î₫6z?-ơZ享éûî¯ö₫6Lè4l¯eû¸lßïT5÷·áºô[ßkueƵï}¸Nt9qƯw ×Î×-U¸v¹s]½j6hÇe6T—××Öo®^|OSï:nvEe_KÙç›ú\Ø+¿‰KßÅï̀„Óßơ/.—Ưà>¯›Ø/½X¯¦“Y|¯ÎLnvpq>·'-í]'j¶ïNđÛˆÙÍWcÍ~Ú:ܯÊ/ÍçöœfwÖwoo¾Êx{³](¾­6 Îqó%¹4Đ²I‹2­x"TŸ<¹ç[k­mv?Dí9ÓNv6w]vÈ܈ ÛMÈÜÈÆÛ4^Wœ¢ ]BÄîzÜ|%·w·¹¨’É<[#]|¡‚Ƨ½«¾½ë° ²¤•‚÷TƠÚ¥á¿t̉’5-2­RQ¼Øj9_Ơ²™V:ă\̉ªÆè²](i¥]5F›ÅèlI+Åh«1Ú,FWѦ­©jé]-[ÑR̉RU-‘i•b´r«eBM˸LK´ŒOZ¶ªE™–(i™¤¥«ZrW«÷r •f³©Îf̣™´(ÍmªÎmÊæ¶)ÍmJs›ªÜSÆ=•æ6%î©Ê½Î¸§̉ܦĽ®r¯3î©Ä½NÜë*÷:ă^—¸×‰{]å^gÜë÷:q¯ªÜ«Œ{]â^%îU•{•q¯KܫĽªr¯2îU‰{•¸WUîeƽ*q/÷²Ê½̀¸W%îeâ^V¹—÷²Ä}ÚkYå^dÜË÷2q/ªÜ‹Œû̉ÎˈĽ¨r/2îE‰{‘¸UîEƽ(q/¶ÜS¨qO!ă^¸§à“–­jeÜ Q̉2IKWµv¹ßx9ĐRI«Æ=yŸi¸§´—£ê^²½•ör”örTƯËQ¶—£̉^̉^ª{9ÊörTÚËQÚËQu/GÙ^J{9J{9r¦ªµË=•örä(i©ª–È´lI+qo«Ü[—i•¸·‰{[å̃R¦Uẫ&îm•{›qoKÜÛĽ­ro2îm‰{“¸7UîMƽ-qo÷¦Ê½É¸7%îMẫT¹§Œ{Sẫ$î©Ê=eÜ›÷”¸§*÷”qO%î)qOUî)ăJÜSâ^W¹×÷Tâ^'îu•{qO%îuâ^W¹×÷ºÄ½NÜë*÷*ă^—¸W‰{u ÷ưÛ%̉U"]©ÊQ…Êå§)[7û£ ™U3´™*,ó o­tÑËRîdª©´Ơ·³ªRMeª©ÔU­¬¦e¿RMgh-‘ƠT–jNÔhp¢6ÔÊ*,KN'j48QjekYé¤̉i YÑ̉![ËDi-ÛµL_ƠÊÖ²̉) .i™ªÖîZ¶ñr EIKUµD¦eKZ[̉µ¯‘®½Ë´¶kÙ?wÚå endstream endobj 941 0 obj << /Producer (pdfTeX-1.40.24) /Creator (TeX) /CreationDate (D:20230918163524Z) /ModDate (D:20230918163524Z) /Trapped /False /PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/CVE-2023-32700 patched) kpathsea version 6.3.4) >> endobj 927 0 obj << /Type /ObjStm /N 75 /First 658 /Length 1744 /Filter /FlateDecode >> stream xÚ™Oo7Åï₫<ÚĂä̀K†6AĐ i¤É©ÉAµ7®ÿƒ%;É·ïă.)+†í!ƠrwöͼáOÔÀe?(­Ø‹>Œ2–^y|ZÅZđ‰{a.(±ˆsNYÆ=ÇÊiÄ9­œ—#¶dgEyFœ5*ĉWÁ#N¬2ÚAPH#ˆä  „"ÜP@,³2́̀Z¨̉«B0 .‚ uºX”ñÊ PgeçŒt&hk(‡hJ;E:º̉¬ÈD[xL¤åˆÂ}bDĂ£H`P.Yx#oq₫Ç]w4üC½ụHˆU|ÁheĂ ¡El`b_ Ä䢼D·:æAG1‚GSRÁ£)©˜ØmÄpÜvG(3îtâLI)(FR\8%ÿ!"%m#ôGÍ&ôGâV¢¸p±%x$Øpô›*|Dœ‰mĂ6;< h– đB|Đ* \«ÑÈÀFYl!.HYB®€³Œ2‹²‚ÂJµÎ‡£€fÙ c̀€ c<ȉxgP]@³6₫èüüè́ăz{3Fw`óĂÑÙ/¸tóåûƠăx·z7¯Çç ßiơvü¾E/ô´º¸¨´lÑâ®–Ù×¾ZT´tOkđ•–4´SÖ†®–­´LKË-éjѾVªr¡ÅEËô´\¨´lKKï´œïj¹J‹Zn(Z¶«ÅûZ©Ê…–-êjéJ˵´̀Nˆ–*-nhÙ½íro+î]‹{[¸·]îmŽmqo ÷¶Ë½TÜÛ÷R¸—.÷Rqo[ÜKá^ºÜKŽ´¸—½t¹ç{iq/…{îrÏ÷̉â ÷Üå+î¹Å=î¹Ë=WÜs‹{.ÜS—{ª¸ç÷T¸§.÷TqÏ-î©pO]î©âZÜSáºÜ›{jqo ÷¦Ë½©¸§÷¦poºÜ›{ÓẫîM—{]qoZܛ½îr¯+îM‹{]¸×]îuŽnq¯ ÷ºË½®¸×-îơ{ =îăŒ¹¯Ơà‚/Z®«Uq¯uKË-îjísŸ«\hQÑêqÕWZ îÉï¸'?tµl¥eZZ®hIWkŸû\åB‹‹V{B¥e[Z;îiđ]-Wi5¸§a(Z¶«µÏ}®r¡%E«ë±år• ­â±;ËQ5Ëå*k­2ËQw–£j–£Ö,Ge–£î,GƠ,G­YÊ,GƯYªYZ³•Y~6Ë¥·[ßæ2½‘]¸Ê?Js%´ßmÉ?~¯Ö›m)óÍj¦¼¸‚ΩµËœÅ½,Üï~•§œ̉:3¤ø×}»ro[îjUgY»®r–‰îiqu–Ië,ăr–ñĐƠªÎ2ie\Î2–®Vu–që,ăr–±éiQơ=çÖYÆå{N¾­•̃n^T¾Ù$mnÓ¾KEj.l"5C‘IơË$Åîb, µƯjüqy$É)Ư^J—ç‚üåX¤,Ó-§7S}[s•y–óZU"µ&4*™]ªƯÍưNvóX9w8¬É.-RêbW×vwIf»ºeW»ZºoWæu˼.æµik¥·›•́`6ah·.5¾nV.ln–®›Å9ÉÛƠí¸QŸ5ÿfªăS:Qf>s°à“øGÉyƒBºÔ'ʧ îσÑä[ß®·Y2>ú²̀e&}NïFưù¤ÂB⦅‹œÂÅÅC\øe¨Ÿ&ôˆ·ÙCˆ†̀¼À>Ư'ï'×dâ"•H±̃y0¬̉A5>;HGSË’ ‚%7ÉXÀ̉ sÉÁ̉`rU>.́2aÔφŸ6A”,1, ”\pÜ›ª~T5Ÿ`ûVS½‡Á;g¿¯¯|a₫¡œ₫?ôIé“›G‰?œ‡éoơöÿg=‰ÿÀí£ëçï¿Ä“Íôÿöë£:{±Â^Ư_Ç3ú»̣4ûîi‹œîäC{ÚîÀ»1ơzüă₫ Ÿ6cî¾Yư=̃lÔù¹:{ût‹̣ôtư¨³?ƠÙKuqÁñ®qí̉u¼ÿÿT¬ñ_wÿ@₫ endstream endobj 942 0 obj << /Type /XRef /Index [0 943] /Size 943 /W [1 3 1] /Root 940 0 R /Info 941 0 R /ID [<4BA0135AEB0CB4AF1F1118749B2ECC80> <4BA0135AEB0CB4AF1F1118749B2ECC80>] /Length 2125 /Filter /FlateDecode >> stream xÚ%˜;l]IÇç»×‰ñ;Ûñû'ñ#‰?’8{âØc;qüŒÛP€h€v+ª,H3̉p…„4ZÍ#´ Q $¥@V -BBT,÷÷OóÓÿ;÷úÜsf~s¾9vι/͹g®đqçÖ]Á¹jå²̣§å²+@•¹áQ•|ZsƠïƠQçA5¨0WÛ¢óUñ•POYYp…\ ]µ@'Ч @¿ÑÁEĐ.Vp\m t€« tnĐzAè` k`\7ÀM0FÁ·ÀmpL€»à˜SàxfÁ ¨1×ø{Ë4Cr”‡®0׺Á 0 n»` Ü:Ơ#0ƒy°€E°Ê«ïă)ià}êåă>I¿†̣Qgá̉RYùÅOôdåfâ.Ǹ£„÷‘OÜ~̉â5‰±Jêy\ib`“ö¯H̀B̉NÛJLYÂû¸Eb~̃GÆ !CÂû¸Aœ„÷‘Kh–đ>®“p2á}dt'¼k$lOx™„÷ ïă ï̃Gæ-á}Âû¸LÂû„÷‘INxŸđ>z̃'¼‘đ>á}\$á}Âûˆ> ï̃Ç̃'¼¸–đ>á}|LÂû„÷1̃'¼HxŸđ>bqÂû¤ưÆC̃'¼(Ÿ¼÷Iú ¼úN÷q¤kÁû¨“êÂñ>N’t—xu¼wI?©¢ËƠ`ă}¼C̉̀È{Ư›¦Q̃ß"iÎå½B‚Èû1’l’÷5©'ïGH›ä½†½“¼¿AÂû$ï5xŸäư0 ×äa»3ëøL;ß!JR~TR~€¤Í”ï'±ư“̣}¤j å{IÚÉÔ]A©È{í@#8áX© H₫N̉E ù¯’.ä÷:‹6—AĐ_\1·¼£•¬e ó邺̀=ÿ³>Đ½ơ™Ûü¾îü(]î02·ÿw}ù¸ ®›;kб10bîC*ï€qsßiÖù)ï sÔé+Ó`̉Ü»u•ÀŒ¹Tj‡̣ĐÜÿ¤r̀™û¸S¥v# æ>ù‘N¯!y –̀ưê›úÊ*X6÷Ûo«\kæ>ëV¹ ^˜ûüs•¯À–¹4©ÜÛæ₫5¦Ó·Pîƒ]sÿyoÀ¹ÿưAå)82«Z¢̀‚T93«_.+ơ“ÿêØyPaÖûK•蓱$WÿEǤ³û\c6ûC}€>ArÙê:VƯÜh¶÷¥1¿Y'¸hö•ặĐjö­w:†%¹ Rn3ûàS}ĐÁ4€VJ$̀Ø™‘:w}Ø£ïáPÆầZÈ8”Y3A2̉äë€WŒ/yđ̣“ñ%^ƒ̣m€4y°Îø’Ùêf̃2¾äÀ›RÆ—ǜ|És€W…Œ/yđ̉ñ%/ö¬Ụ2àE"¯|Ék€÷Œ/ùØø’·ÀK€/y°QÏø’Ùf¶́Ụ`óQ%măß‚€4ùŒ¥‹f^û{4•çyÈøs€ç‹¯¸á«OÏ2ơôPßxFø‹€Çƒ¿ôd¸ 舾 đđL²§úN@ ôƯ€îç{ÏK¸~³đ­~4JôƒỊ´ Nq!Lîä}æƠwæ»₫ Ú_’Áº! e* 5tl::j́†ơ₫ßjeäëʺ†y½Çæú'́;‚ˆX„‘2•¸xœ́½isÛX’(ú¿W¯Ûz’-Ék-PIr•î¸d_[VMGÇ„"A ×$À@Éêùï/·³a Ê®î˜.‹N-3On'ó‡ÿụöøâoïNư›|>;ô~₫×Μ†ANü«{ÿçó₫Eø%§‰ÿb÷Éî₫¾ÏÙwßƯƯí^ÇËƯ$½~œ%Óü.HĂÇ9ûØßÙA˜a0æaP³đ÷etûăÖqçaœï\Ü/Â-̀¿~Ü‚ÆùcÇ÷₫ø&H³0ÿq™Ow^nŒ<ÊgááÛq܆₫y˜Ÿ¼öwü#ơg ̉i0ưi’úüÙ¹‘'#ˆƒyøăÖ$̀Æi´È£$¶ºîxëĐø9¼¿K̉I6¸4̀’e:wrwu&Éx9‡¿ ŸO¢,O£«eaB׳ä*˜¾ư9ŒĂ4È“Ôúp|qË Ÿ̃FáƯ"IsëË»h’ßü8 o#ưEq”GÁl'³đǽ-\ëYöỏpúăÖ\$‹-? g?ney€ÀhG~ÜÂç‡î§gñ$ü"Gü·|̀o Ÿ8=₫$h”I«±₫©z ®f¡ŸL}ưa©OÖ \ïñdg–ø[ÀÅ€ÖÔ—>|é«/^–ßC'¸W‚ÀăŒúḄ‚Ưq²ˆp;Ôí?o£,ºfQ~ÿM&aü½v&á8=üΓ8ü̃‡áÎM]ßäßùOÂùÿ´l9ŸéưÎ,̀v) ­•ÿÏJ(ÿăM¢ÛƯqˆH'Ÿ³è:₫ñk@ Å,¸÷ÿ  ¯£€O¡ÇƒƯ}́?¿ó̀±̣ƒE*0°zäÈ<₫9…Eß™óh“â›0̣ÿñ²Ew“Ü€W‡₫Á »“øzwNw3 pçIœÈ1,=¿“»Jfy”Eÿ¿óg0vœq>Ù5˶Ăÿ…ÅHa₫0¦<D–5̣ódQư}qëZǗ"À(̀vÿUíëHŸ ¼nß/g»°Ÿw®–3@ÿŸ3 ÿBBbßù°cú,OÆ;ñr~¦ádÛØ+!>ư˜)âz…'ÙM" ¸È-Ô“óÚ‰Ă|<™î2Öù?f¦ïưp•LîaÙăë·Â˜̃Ùÿ÷`–?Y“ Ơm8Û.ĂùÑDóë»8¸Ưô ‰­-½søü;ÿ‡ œƒñ8̀2`ÓÂ&îĂjª₫áqpèÿ%¾Êßû7Đ]Sd1ă^t¨ Ôÿ₫»=Ø2³¹ß!=¢V?<^à&ÁJà™ºg-¯Ô [2Ya;ó vcÖêâ&ôƯC)O’Ùç(÷£̀|8jq̣*Mà4‰ĂŒÎ(”¸¥Găpv$œ…x$í˜Ùăxœ•Â!ï«ïƠw„éÄ@K<†¼_èÅ,&<_Î̀ü ø ï}pøVÇTăÄÎ̃V ̉îùơØƯ´£4’·1±ô“(rNBÀơ0ªßîíîùüÊç  ˆù²ˆ( //octave-netcdf.cssoctave-netcdf.cssE 1goctave-netcdf.htmlOctave NetCDF - A NetCDF interface for Octave ÷÷ doc îî!qchVersion1.0W¾¼Âaüđz΅j:ưôäÉ₫„@–zªz íûđf‡ºểÇE]ö^¸ƯÿY+à‡ÇË™ùáÂú)È¢ñÎÇ,¸w̃SEáĂÚ¢ª×[‡û>=÷鹯¯¼=¿ÀÁ!\hºŒ‰z<ô(j?8܇M·>½ơ·-kxרeƯ{èqÖø®­Ă¦5-ṽ‡SXd:³âå—[‡¾zêë§k­6c¡3½̀CƯ'0Yïwú™Œ¦ÓxJ#ÇcR{tÿúö=ªßîVÀAqÈ‚B? ƾϿZ!ÍpŒÄ„à?2_n¯G$ƯAoϦÁ©ƒj±/p,H%üœµí‚1%YX›_́}›ơ€,ị̂Ê‘«Wÿ@Ăç§=z(0̉‚ÿTĂïÄF P}N¢yxyCàŸ)đü°øŸÓE x|CàŸ[àáa/đ—AZßøxxØüñÍ2₫lK#ơ_Pw/ƯîÔ˾Ư„ÓYÍλP§¯ÜNå]ß>_G–,Wư–Iñ‰Û¾éƯh˜Àø̉ƒư†Í7Üï^¡_ư¾_ï3Pk:ÅWÜ×¾Ư<îÓŬ†)ÈîàÀt0ëÅÂx\_̃0|Íøiwø×a^3~yĂđ5Wà§½àU°y5ƯXpoÏ­̃̀Ë~&¨{Äu3Ó¯¹Ăv‡̣j¥î΃y˜µôÉßpÇ/+:¦÷½z¯aŒ̣†{zeơÔ‹3FñïUÀñ1Ÿ§AÀ£^`kÕ0đ= x/ÄăïÏNê{€wÜǾÛÇÙIß^pÇêû¡·ÜÓÛ¾éƠWÍù-o¸§V½p₫¾vÅø÷ñ̀í£çQ‹J*1/¹ŸçÅ~zĐ4yMVää%wôÂêˆ_ôê$™×ËÙ́|Mjz³¿à._Z]ZoûöÛ€{ê-÷÷Êí¯7îIgsô‹ÂOÊ}âÛ¾ư¾ ̉°•;ï¹Ï=·O~×·Ç:́¤WÜϾÛO?̀|]]†i]/ê-wd3 yÓ«¯¬4èx`³̃xø1Es Đº ™÷Ü™Í?ô»~=faÊnßêƠkîÏæ#êU¯îjNXyĂØ<¤ï Û¢{¾à₫^ºươW>¸]ƒ̣á~À½¾r{í­}p³:íĂzËÊî·»~Ú‡´iÔ>Jßp¿{…~WĐ>¸eíyÊ︷}··ç)µ¨#=yÉưûéGtuÊ”zÅØœ¤Ÿ2•,ªáÓs®9>ëy±¬Ssä C×|‚Ÿö‚_Ă"ä ĂaÁïÅ"̉°F ä ]3zØ8zÄkÖǼäN^™NäEßj„Xó’íPOÜz‰²Ü¤fG̀KîhÏí¨×¾dmêmVVoŸijÏVSo¡́o°œåơnéîúÀêÚyß«÷:î­^q_O­¾úñí́>WÂÇç \ó|6„=½ƠtTYɇ1Œï‡5†qơ»×†ñƯ^†ñư°Æ0®^l…–»½ ă¢Î0n^ü ¿ŸaÀÔÆơ‚ÿTĂïeßë ăú W·ÛÏ0N@* ăú nïa' •ŒN¿!đ/,đ=8œR/œ–¾ î^ºƯơ•MĐZÙ´øuúÊí´§hª@V37ç-“â·»>,NCkM+¾á~÷ ưöMr¥,g^q_ûv_=d9„Sm×o¸ƒÓAĂø~Xg×o¾f ư ăûaa\¿aø+ô3Œ”&É¡ø÷öÜê­¿äÀ0k ăîkîđ…ƯaOø¯Æ0^ñ wü²¢ă^†q‚\ĂaüÀÆwûÆ÷ĂJĂ8?æóT3ˆ†qj_ƒxÆ0~` ă»ư ă J•Zj½ă>öƯ>º«¥ Rµq̉yË=¸=ơ1N´óÛÆŒa|·Ÿa\A©]1m?0†ñƯ¾†q©’JĂø1Œë~zĐEƒaÜ~ɽ°:ê§)¬FĂxé ị̂¥Ơå †qµ÷,Ăø1Œïö7ŒÛĐª ă¥/X~Rî³a\A­3Œ̃sŸ{nŸư ă bv*Ăø1Œïö4ŒœZøó–;²™FOĂ8AkÀJƒ6Ûè‡ †ñÂ{î̀æ½ ă ±Ö0î¾æ₫l>̉×0NđjNXc?0†ñƯ~†q¥I÷(ÆŒa|w5ø‚Ú |” ăÆ0¾»’a\Á¬Ó>\Ăø1Œïö7ŒkhÚG•aüÀÆw‹ïûö^{jĂø1Œïö5ŒHu¤g ăÆ0®ûéGtuÊ”e?0†ñƯ†ñư°Ú0.ϸæ} ăûaa\¿aèOô3Œ”a ăÆ0¾ÛÏ0¾ÖÆƠ †®B/Ă8¨5ŒÛ/¹“W¦“†q«Fˆu ăÆ0¾ÛÛ0®`Ớˆc?0†ñỮ†ñư°Å0^ü€;ÔÔ¾’aœ`¶Æ+¾á®¬®W2Œä:îmÆŒa|·§aàTÆå9×| ¯aül÷t»G˜wúơÔçO7Wdrđ´ơđÊop(»{¾¼à‡}è"̀̀t­…pc/Ï||¤§»Ös€T5½âś&G[§ÖtŸççó;|¿{¶óny5‹Æ;o¢q[îƒădqỎÖÑÎIôÅ?¢ë}̉̀çf¾4s.P®ÁÚwèêo/2¹¾Ă¨®2¦îưÎñM°À{Íå» u—ôz]­¼FV9´îvÙÈ—†·Q²̀làtÓƯ‚¥î½¹Üïd"Œ‹¦ÖKi½\”Û~ĂWS÷ ;Ù´y€> w,ñ( HÀY×´wPơC¨ü¬1ˆvƠÅWuƠu¾ê¾̉×Ă ơ™ß„1u ¿óß/³p²Ë·]ÂYîƒØmŰyWW©`0N“øz 'è̃ªë¶º¶9»÷§i2ÇÎü»đ*‹̣pä%i%dx”¨›˜ódú·Qà₫$¹‹Ơ0ƒô >7c´gyà̃Iˆ$Æă{?‰©[æ.₫,ºJƒỗd–w™êĂÏN£I»Ëq¥Ẹ́Á oöú÷d{äe‰_¹0ó$„)nB¶$Z˜.g°p̣ MB&Y=s“v₫•ƠJâqè/pRIç}Ë ¼ëh ƹ.ƠX̀!1âhø$§›84„UsØ"| –뾈•7}-€ ₫Ơ_ëua½©¸/°uXºË+¼Üâ¼’À ‚q×\k^qPhÜx×ùæ ;ît?ÄK~‹̣¤+J¿èˆ<1–,ÁmÍWĂÁø3²üe"ưz’ô`¤×È'oa£i2›%wøkœ̀çÈUî Çî\â;Á!ûj=gƯ ³, OT[‡‹Ï×JdlLs6 …A+zAûP pô0VçĂáF¨g…Ec0K`1œ™^…øÂư»áCååót¨º‘̃*;rđÁ«Úơ`†—Zï­9d̉ôùx™¢ñU˜zlôyMºŒcØ|¯ăn· Ú7‰VŒO;{»Ov÷^́´{ư"vơA„7F„«Ü{+‡@×-ă₫°ËïĂë ̀€—)Ô‡ùM2Á_‘<,<5²ûläåÇІÙ6\7|¨vm€m pM4]3( êUN=EÚ$¡»B{'y½:cC/i½"A½¬^™ ZRï%¦(¼×åù·ăk’tÔæáè*ÂWăJ¥¿H“Ûhf₫ fÛ Í('À ¬5)ç—Áo<¼ÀŸsv¦,cè!»ƠçqÅ·öD E©«&ˆ+ĵfûè#•Ơ§2©äÆÍùMº²çúN›÷Ú=oÊăȘ¿Z›ÚƠ<ú°{“(KöS%ñ “G+Ç1/rœÇ”ø°üX2_T=®øZe¥¨z\ó5ç›Ç´³}×̀15ÜN¦ûñ[Ó¥³½ZĐæ±x˜CÊÖQM–Dà{¿]¼9ú f“jäß$w!&‘ëx°y“P)NrP-dÔÄî"×¾i´Ê×Úâ)̉pb»U-(#3”È ¨b„ó匲g p0IbKađc¦Ï)}ĐŒó›À¶·Vö¾[Ñû®Jεê‰]•ñ§×y­Œ‹ơ‡t³©±ú°nµÙ¹Gu½Íîßè ®̀́T“¾©ë!]…][8Ë:̉́̃hÖJ}R¼=‘—ó°^aÙxû÷ưNâÊ@ÿ“¸*æ¿æ®¼]Pé)Í­ xzôY¶¿T̃\¨‚ØÍµcĂ ÈƠæä©êÉơØŸm–¼(„R´ú7‹)•+Ô3­¼·.ûê²ÍE>ӢĨl§Z…ù†™OIŒhÜ3bAµyÛúÈƠÁ:îạ¼¹Ü¢œ̃­Øóº¹´_LèVlĂ™Ü\‚.¦p+¶áÜm.‘“¶Uµ¡äh.%Väh+¶”älV»ç[‡¥¤l•­¾Ø:¬JÁVÙVå^³¿Ü:¬É¶V¡Û,¯êù†ÉÜhú´Ü¤œÑïæi7ü3ß&ߦQaæ)&ËÆÄ¢rở<®€ElµQçđÇø6HƠ߯ 'L™¬zhpÀ¸&$£yÆë3ú₫đ?åđ_Jœl ̣'Dôô£^ßbđˆÄáçá¨ô^ÆÅ¯·1k0öphÎÉç,.¥¿₫GŸé₫8̃"Hƒïyóy&'yơr~ñqZăùdgơăöAÛ\„i~O?ä“Ù̉|ºÿùv·eô—ß—I₫½ÿªj³“»»»Ù̀ƠV¶ &tÀsy(¡7£ß¼(J₫Ä‘–?u×W›>Ʊ¼R‹ ¿̃ñ¤"¼öb₫>"±6Y,ô¶>×ĂhÁ›xŒÆÙŒçĂV…³HÓipOäD}G™ü3—s€÷Qê_Ă× °Å mO í¢̀_b 3Œh²ëŸñkµø6W9¹F<SÿĂ‚ê€×Œä«†̀ ȤR3~,]+¤Ç®|æđ!e§)x₫£,„}£/\#ç$4')₫:$»9iP@²EBîïÖ;¿ ĂXÁF«¡X±úɶw}Ü´ GY ôØ<àIJ« ¾47:S3»¸‰ôfó3VƯŸ~¢ñGc~è?’·G̣™óZ=|₫ô*Đn±n<Ñlv‰„¦†Ä䨀‹µ„F1ü’<̃ÚO äé]-§(¿€®6x̀´¯ Đ ñ«ŒPH£ŒC¶Qæ‘Q†>¬ÂÆ~ƒG¼Y[Ú'|® VH‘̀Agç…oB6hX„dÚÅ( ô6 qbĂƒ£®ĂTăÑÿQœxö‡Û„T¯üGóàK4_Îw¥9}¸YN§3³pé’‹º̉₫¨Œ?B…µàơ4˜e¡;^ÏçÉ`#‰°¬…üëT¹Ÿäá\+:¨´ ơˆ'…̃åƯX!±z6_8́lôO₫w–Ạ̈`ï‰|:S„5Ụ́?£2½*hgH……óªAm_ö¢Nf₫µuø!D¯p–|§H•˜O €0ÁÿXámƯåTÎ Ư$¥œÑƯeT†:„„Ps^Øá9©ux;Étđ{'H¯©â ²mRѶ]ÅX³¬8q"µQ°0α4‡Av(ºÈB†¸ÔCQä¦POÜ0_•ªÇ|“ë¼;æ3Ô!0!­ƒùE„¦bN‡%Tá ’Œú£’c¨†?ÿjTĂ‹2°F@÷ÿÅWzÔ¢¡¬´û›Ø‰ƒ¿¸N“åbͽ8h=K̃‡ù2Eq’ù4…^%Ëœœ†q¥½NÿQ´î̉Y”&Iîù4 ‘q «Ì=æ(³Yt)†ÊM¼¶…s£raÇ–c˜rÅT,  håÙ]p_tôO£p6éăÚ/ợÚY0VQÈeZ>ĂŒ^†"·‰zq¥9«™,ùñ›£΋ÛOgî£óÓ èôiI›“çŸ8®Dß{Y'“ˆƯđ²˜« ÈwwÂ4RÔáy—a^¶ÿû2L#åÙ(¿üŒ€øø_>±qÀü›ü})¡?Æfˆñl´0“Ñ&€j đVCóÂöóD XßG̉‘‡0c|>qIh·3Œ£ºê§¥­+YÈKYÿ.Ơ^5<ʹ8d+D®éúû&¨j›ë >B2!ci}·ơÀ=?£¸FÉéÖ^7î£ÆpwC¡Ÿy6 ƒ6̉8áÑE¯ºƠ~CÖ:ˆ²ßơóQ™ô4$´<a爘ùX(i1bëCш́à´Úưè¼-ä_9ÀĂĐiCúÜ`»¢]Ï̀ˆÂ´Åµ¸Jn&8·{Đ²Æ™₫g$öY°h5†U:BŒ­–$=1ÓR4ÇvsG]¸.₫¬œ¶uÚ;jN÷™Ø= k¡-Ûø‰'ßD$&vÑ_%¢-Óƒ!“0Æy-̣{ơ£¿ÿ÷vËFÙ–̀aºÍ‚©Ñïallƶ*ª₫a"ÄÄP°9â4AÖ¿¥`6ÔK! Ăù JwQ2“hÂñM8₫üa9·Æ€Å'>¸S—BÉM0º16ÚÉ–sfhÀÑíXÓ7íñ…Âö9O ^º8ªø–yöM2.¢Í[P"‡< ?ª!|$öĐ³Ù…'‡Ùq$kç\Å¢Ơ{,O”ñy†Ói™4g…J"N–³<¢'T¯œÊà₫§đ¿ŸKgo={̣ÿl©æ̀hó›̉{áæưc̣8—bê9ÖƠÀ§a…ƒ,ó—J›}œOº49?₫ôÓß.NV8¯c—ËƠúü¸V§Đç̃ó₫~øåíû‹µfºJ¯×ëzŤ=}{=;_o¦«ôùqN¡ÏçOWg¡Yß™®̉ëÇơºÅ¸p<—ûvûúÍÛ£ƠW˜Úư{=yûñ§7«ëø̉ôíôø—£÷]>f~ˆ ë5Ü>Yæ‹%Uµn °£́A‘"csätÏrqLeN,ue,dçI~'(ûđ?8 Ä :´T“mʲgä-—Îô…/”…ôs–NDTQ~ó ®"¼«!ê4WúJA?ÿ”Cxä,ˆ½Ræ̃đêî#.hÛä>2…n»»êî#„ôî£/=́è¼߬GƒWl`Ư¼oé̃†rè_–i^÷rœ,ăÚ—h˜¬³½«‰ÜÙ&½BûtZ•Î+¹Ë´üm×"îÚ¸HÄÖQS†½a¸̣¨\ô ϱ¶ó}m¶Jă Áƒ·ÛÆF¡₫Agâ€gÂ-&öv®0½ĂvسˆgµÂ±é`°öùÑ4"Ü]ºÂ§¨;Â%UG¤ÙeÖüX¾¥T ™w“€̃§Œ›0¬đ÷e0ĂÙŸÑKSÇVöVÙ“G×7tO ïn¢1œza@kä¨Ïσøc²Q/˜ n ØS›ec‘ƒ²7¯é'm™2'»¶)Ơjî̀ËÂbŒ9fó<8÷…_Æá"çħ`Œ«·½«̃’03ü4 pM=/æï±Ư(˜L>%S,øb^=ÙVVVŒSXôQ,‡“eªtg¹ÿ^€/₫NÇ₫ÿëùÅŸˆÿ?«WÇC(" ¶Á…̀1Œ‰MräËÜ©Ơ³­ƒf¡Göa Ψø̃‡b!©xÙ©X„c|ưU ₫uôWîù¯¥x¤•bñF,Ñ,aâ—F!ó™oƯ°é'ǵ¡DMÖ p¥¤£8ˆ̃S ‚á­{ï¡ôZ¦¼êm•̃ËÚE¶¡—;4»xÄơ¸èP>ë„ Ÿ‹¾_¥óå,>†XÏuœănY¢ƒ¬Ü­3B–pˆÛÛdºó`±` ¼ê*@¶Ûñ@?®yPĂ5‹₫pÅ/I¯úø åÙRsG¤‹A>†ÿ9ƯưuÛe•j¬AaŒó{¶âéĐwtóÂj4bæ».o·GZC÷s§¿đe™Í¯v:2· ˆ@å‹́ư¹¯/BvgîwÖN 6-Óz8=´ü₫Ëj¤,ÊÀ–†º†©à°Ôole·YÙ[mŸ:¨ü¿Q¸kM+r*¬p:a~]Ä »mû¥#®¥WI)ëĂa–& €ÛOLÏæé,ƒá—(Ë+ÆÙÙ>1¨ 7 äFl<[ºÊ}Q'¯¬Û»+Ve%½~2YC¯—,i–N¯øưG_üK±̃~́Œ¦‡¸ơ´,n+w‹$C2î–Àr€L«VÀ™¸'âb¢Ôr{/׿Ư² QgA}UBBåû‘¿÷dom×qª ¡Ưêü ̣Ï ßÎçĐSLÁUĐ:«bxĂ|c·ôƠh6«¯ṼØ_U•]}Ûï2§eßRk‡G#­_Æê¯2nJûƠ!‡®ækY>7©ù>keÅOí\™%–̀ OR1)ÎèË´HË8Êå‚/ÅæCñb†©®{ÉBÎç™sa¸ê ½ÅÉ‘¼{wđÑLU=úÏ+—_éÎ¥x§‘ï¿ô Á =Y¿êc0îÏ7¨ «‰nRIS}¬¬L©Uèœ"E‡°ÔƯùªc&d}dñÅ‘ÑØ9È1)₫5汤iºŸd/@ªƠØF‹̃åXyºf ö²ï¯…Sî¶‘Ẩ-ª§@tÍ÷ªrLQØ>F‚˜â–™­Rµ̀€ñßßơaàχº,Γ!c®€¾5Îc²oûÿ!iZïxđÙM²œaGçî¼₫ä°MÏå'j>ñë*Sáǘ³–p SÜ‚' /̃àÂVDŸKÚ’Z"uBäGåă¼Ç_¤p!¡â ƒÏT¼B °À¼°‰z^Đ™ß%ÀƯ-SS¸ëyºuÊÑé[­"ưyÛ¢¶I2aß%P₫2¦Dún·Ñ¯ÏâécæpsTæD¶™»g{t®˜H²_ÎÈú\·̣ºùnëRœ₫™‡²pnJJƯ’á³G.́HØ=w¥ªøl\%i^ÊaÉïé]m₫Ec^*jÔ·´¶'[Qx¾¶uV)ÉÔT’o‚R(oƠÔ…o‚åX©Ü{}Kªç®9…Üûæ°/ªz {¬Ïåª~íơ¥^0Ù`’ÎĂYÑî’Å d@PFˆÎV|köeË|LƠJ¾Óƹ´¦|;Â6%ßñ5†qD˜i€.QYîçÑ<Ôú½bé+¾ÀîG*]r₫ô4²Y¼¤¡jkG|d³A#>î«.ÅŒ°>J/ƒâ#Á|@|¤₫6„siÅÇclSº,§½>Q…MØŒuÄCw«S#h$TV¨UĐPơ4,"2Ô‡æÚè§æ½†WÓ́e@Kư˦XÂØdY{É’›z:K+–¹2`)…}Z¥Ñ%³É§Á,ÑÄ e¡È d÷ ëí{̉Ù¬S7èæû]ß»ÀŒ÷‹{?(_xÀ¸Á²-G|wüµøéZbă´kß[ƒÑ¬̃<…f£̣`×™°p©µ¤Đ>æƒơ* g¸CE åø/”-8;̃ ³p»ĂÅ0{%ûÛá̀Ö?cÛ–­¯„̀ܪ¬á)…@ !d́§ü­™¾Á©´nùd÷L+A₫Î÷T}„äê*LUå‹ä6L¹-…¡Krˆ)F¤Aœ Ó‘Jµ&~mkƠ˜–H¼°j¯B‘éƯ\̉åH«WZÿ§Å6,±<ù”÷ø—“×ÏTKä.̉6» R]ÚcœÄR‹R—ƒ¶“`30À¦ƠÅuE£ ‰ÄpL¦ÑXâö8û†½T0ÿ,!Ë­̉ăH%'ó+ ,”:X ̀a·“¤8 Çê ̣b PB¸}Q’>âyí–¹?ÁˆÆŸđsuŒüƯƯ]¯¶‰³«ÛÛßûrŒ9á D°l°Îư1K__ú/căQđLơ©¼+ªŸAê(cÍØ€ =Üq0‰æưÏ~?9µéœ »áÇD§%m¯5Âê¾`Órơ¨ẫ‘„äÔOÔ–[DPW2-enŒ2ưr½¼ƒĐ&úîió¹Ơ)ụ̀W£MêghÚ Ơˆô@"Zx÷i1G¾*Y®G{ơKÖ•æ•>v³¾­¡“ˆgnH DJQû…KO«¢6ơ34jĐù›̉_t&d‡ï¶’ÚÙa.ĂA_L̉ị́K^‘!è¤çúw$̀¾̉ư¸ês5-˜[eñê>Ư+Ẹ̈£́&I A–Ï¢¸øQé % -T|6%Å›'v-I]û”÷j‘₫+·VsôÖ)-xm”R^¶ÿf¥“~×-Y”‚”“lÀ’9¬” ƯwBú£‰#-”4œ•ÍÈ#G$Dt¸´]ưM|ö¥ËgM ÀÊüÖô»¾«€oØà\\Œ¯awÎ@s ®kÙéXƯ0,u5ÛrqaûÈ÷ci…FڜىÜÑɼëU'°¦®¨S8(CuVßq¬ËT„%Iåb:~¨+anúÖ•\yLIœG×Ëd™µ ‹¤3óµÜ£{¸Á Ă nHÿv‚—gu¯ơổÜV_Ú><[î°{ĂM¬ˆ‘58‡³bHÔT襜2Gxœ́ا=Ư¥»EyOR=ĐzX{€<z…ÿ—đ$éÈ<Û†‹¾x`tC²Ü̉Áxˆ̉ÛÈIö œÄø]ŸXo‚«hđu0–Û´ÆJôˆd(cçJđú £ßªu¶ö°₫Â-KLâ¶dª)»]- † ¶µ,[¥†ñúÍéÅñ/§ïMM1b9¦Ô˜°̀Á…₫^6°€ 2MÄđ¡&×uRØơ-t}üŸ>₫êt^îQ1¥,$Œ#—ăèĂw(¿‘ỨÛĂ!Ô\†ºœ¹ˆsÎP¶ĐfQL]§,£ß¸9&̉©‰Ö½Ws„ơXæVçóăO—oNÏ Ó×'[")É’fCô«Ú(í®ç3̣qL:÷<j^ ớÙX´«MÚ˜vÄ x»2rP[h› ¼¬®72ÎĂ8g«Æ.«f›´VÆ[ƯÊñp  V^‹ÓuZ™é®ÁȈ̀aÂƠ†…×p¸’l>XỰo$]¬’¬@ºª£AI—nØ|«&=ˆƯve»©j+±½ ƒ[ 5ö‚îPü£ñÅT×’úJ̀@ײT&‰FÜ|æÆ̀¯„›ª£Aq“®‹›]#ëơ•²Ơ‚}Ư»4+„ZßV‚ø«qÛE¡ƒR2ê] i*­‘È`™Û̀=½ê6_•©T‹çWWB¥(†âÉU‘ ÎîBÄp¯ÛÙ¶ÆÑÅWʇ<§ ÙaYÂsûđ¶®\¯Ǽn‡f6 YSËÿ^v6¥ Œ1'}Vûz‘†!½ó'ÿƯ‹ç˜9?ZC4­Y¼.̀@R₫INy #cüZ¤;³è* ̉ûÔ1' À G¤IwÔH/*$Ú•IBw98AdÖ94PØ̣«ôĂgÅB7£ƒƠ.J+ª¿¯:ÄL]Úá [ï"£“3kè#ÁMÔƠH/ëÆ´.Hç›"¿ÙăapZ 1¯Ë̃«çßíàÜƠ…¡l ƯăJ4\¹áä—m±đ{¯¬®/W †W ¯ôÛVvhÁ6¯́¬£ĐĐ[¬ÿÏ=j®!¾î6`₫ÜÀ5À¯»»̃Ư§îî»[Ơrå‚å½élk2婃bœÚ䃦m‰2)ÊÎ`ºûAÜè¶v;RÙ*e—Ă‹¬Bx>­ v‚öjƯ}ô„‹â‘«Yë ̀)_‡m₫¦ ¥bhÚ?ƠŸ©g§ÊăѼ(qTơ¡ ±µ8¥×£Đ§Ún{íÅú"]ˆc1ăy˜‚<Œ¨È¹×—)1pc²'–ww%ùºT84iYZ¡L°ư¸œ́:úKƠ”û)́ĐÔ*â(Ô¬lQßPâ2•xº)÷,¤\ƠI£:5%_ơé.–{ Jê¤Ú_ăđÅRwVçjG¨½̉Qoêí±Q­\‡Mc§=Åc¿Ù¤! u&Ç|#“ØwGi—WfØÙÅÙI]0ŒUḳaÎ6c{²’³“¹Ă†î>+Üñ(-p€®„ߢԿögU”R{̉¿+«à̉̀â <5Øw¸)Éâa,nJa³éíOÉâ_‘]´æ­ÛjaƠÄuª£¡YD)Ëe2yÀ8–Lr×ùMïV?.aeÎ[O„hXĐ^ú7W¿'ê †Í*L*™µèª O ­rö³âÖ ˆMÈÙ¶´‰+]¯”ÉQ½7ê%?·¬\©™S$nå7đ-¡ûÏ‹¿Z̀‡ƠƯæq₫ñ|i+¢Éػ߭n¢x<[RŃgÓ3{À~›Û•2ûQ•Inˆ Ơ-g–dåj¨û “ —Uw™+g‰>Ÿ½QlÓùcɤ‰i(u¶Éû.Lui.‰°Œ5Ư Äë–å¨Ç“5…ëá9«ª:ƠÈY_XCPƠ¨Vă¬ª»¡9+Ăư ¬u*ËÑ›ˆyÄ›ă­U+̉‡±˜Búæ»Eܳ?®orT;“XkÓ&Ç¿$¾ưöư¯GŸß}øpv́^•wÏŸ₫tvQùæüôS뛋ºUo]ØĂ„wẶâRsê„6RàK«k§Œèjdèt<4-ZÀƯăáa…ûët±RJhw_!5t§%́CÊ’$zâsøFÂO§Đ¼µÁfœÑ°úèú·´ñª<5èb3Fbü¨ Æ2àÍO•+̉« Ú~ă¹Ï‹E˜ë¾=)#2×h^ ™¹ă !4ÿĂ!5zăˆ]^™®ÈMŒYù t‚ÿ!Q|3¬Z•oÄñ=w$ª‚øÊ®:Ư~3诀Ư¬6®!¼đÈ7âU‹ÓÁMa[÷₫6‘ºÅèx°_8<Ö@å ê×`ÏăƠ [8Übm¶ÂJRÎÈpôÍ‹”Ú‚ºvp…´X{u‡(~ Îo+¦¸C,å5ª¸Ưöq`{ö×1zlÆÚñ6s|=ûƆ²Q#Ê3›×åÆỆ20S₫Ï¢ùI4oc˶ă^·Yç­N‡F| ú+Ḱ{eÿ™ùædÅYÁ7¢Í6Ê˵«˜̃üa2~ e÷₫˜…éíl#%Ø}ƠdeBĐ]NÙågØêAC¼ ‰q+’µ̃çac> •ÍU³ÿ „ZΧQ8›Ôg ¢¿„~ádj!û'ˆfÛ6²•zߥÉm4A›$»ÍHCea™±™|Ù”¶q}âÇơiwA6ưpV…#_¡ÀˆóK:Ú‘u“w—Bâ¨?x ´ÁăTqle¸ÀúYk ™¶‡Ï[Ë9Ä[xíâ¾\1ç†êhhsÙXFă¡BH{Ơ éGù—kV9Yî[–·C̃Û½X‚‘C·́„ûkz+‘’ÙA¥³/¯Og—mvÀg{.]®h ´ºÛܺ3ç!é †±÷ÀÚtÖe}zÑÙíf#$W 3£y§¸>•ÁLéºÖ1¨°-7¬é D§ÑJÔVèvPs`Va´á̉FÌé·LfVđIí°Bp›…óú´‹4 ç ưdĂ*¶â‡0—ÓN !| rŒ L,³Ü/'¯Ÿéœ[ä)Ó_‹Å, Ù3›‘Bùw7Ñø†.*‚₫¾„…ƯûèsÇ0HX4„}-g%ZƠ¹e–ar;á5éROàÙEqN»U‰®ĐùĐtç€çưçĂD FµZ©âđ+bG,¸kœxmëÔŸ¼ÜÚçN;²‡ÚTÀ!n#¼̣Shư(@{ Œ'Ǽ­̃®8èœÅU>fVîdôu4v+È»çO¯¢\½q_ñ •¸o]àÅü“£¶µưbá³§E¯|«Pw54ư–¯»á­‡ơB 6áJ½è·ÿ]A5½!ˆºeñZÉúø&ˆ¯C}Q#¹*#Ǿ!ÛGÚåÖ ›8)¦Ë(3E}ª¯ưYÛ# Œđ¾"Yø¤HÆqb~K™5³ûxÜB²:*¿]^©“a‰@:ȶYơ»ÛPẠ̀LZ)å7¹¬ ;&¢!‘mÙg©S܆V ¥Á–ACoRƒ}HX‹o´+ïOø¾Ơ°å¶ƒÛ˜|H‡ tw `ă^Ë­ÿ8›/’47ÍwhOB pÜ~Á ?Ă,û̃Ä- íRÀÿ¸½u©â‘i»‹?̣ß ³°»­|{ï é9âä¯Lă>.́®úî¼§aÆăĐé`),[‡êS_ư¿ÄWÙâ{ÿïæ‡ÓăOÇIœ“ÂåçQ> ܺ j̃8Öo²₫y¨ Ôÿ¶À!‚k8̣‹ÚêĂªă?ÔÊa^7´iÄtb́ø‹,ê ‹ªÅBfUKͪæQíä qÊYth&«éx? ®—œƯØŚc—̃15CózD[Œ} ƒ̃uÁ^ÊÂo»À!5̉óÔ€¡— °5ỘLCá—Ư üœ.(Ïm(đ²´oÚP^ØPÈtÚNÅeC{Y€fRPu„z")wl ¯ @OT>”0YRv@°àƯµ½uữ…b]îï‹î^Y èW‡–3r3놳nøËuƯvhÇἺÿ́ÖÎ6陿¶©°qÚ90äY?Xé"«C/ºÁºd£›‚ĐF¢øwƯ₫îÖÂ^u₫Ù¹^ñvZâ•ÏmÏ-9o×<êÖü’¦m7néZÙNË®cVE‡ »́gd kÖÊ¢Ö¥µSĐ€p* v„S\w]‘­G{.YU‚ÁŰ:ÂQ…(ªÜPGY¡yǽĐƠ0Lc]_£Kûâ6t_+Ư»in%‘ïCgʶ@è́Û] ؼE¥ÓíØÎ¤ÂtÚ÷8q Iî0ƯÏX;Á•¢ă[NqăBésÆtŒ®|åR̉wÄçt×·´[[̣…MiÆ×>[Û¨Ël̉JƯë̉ÎÆ8_ƯÚN"1¥™Ä7vh¥#ätKq×±µ}¼Xa4[Û“µ‚Z[g•’LÖS’){[  ‚/§ ,‡Ä´ñ¸½%™T32`é6—³UŒfJƠk°́ª¨ ¥úuµ ème2ÜƲ~¶1áFŒc•Coµa×:–Eñ˜-ËĐ{îçÑ"h›ù»»pdÔ¶q6u{û{ø˜ôå’9¿‚ÉwcƯ…Ư@X™4¦ÏËÆÁ,’°\ÖĂ;S÷’ÙöÑßÿ{[¥́Óy¥7xf_v«¨x°û̉e~ư *;Û3´€f -N÷ë$„êU­qe»§;×>bï¥ưo±⪃²âÚ~̉^Âđ`÷•Kß'}+ºÚuØ÷ÉĂ•¬ í¡«#®Iư²½ˆưÚƒ•t6ù)>¸6·]í;ØƯ{â’o¿Û}v/ ܆:vă8ù„÷p¦̣ÉXẂÜímÆ2¤·²WưÁµƠƠW²=V)°’ªÿ%K®Oâü¡ï}…"å7AôméÆª4Û¦(}ưª|U¢¶]Nn}zî·H- _¹~_˲uªÂ' ¡² J[ßP°ë8ªëùIçåË´aºß·é¾W& p*¯,ư£bª¦Ñ·g{\©\R“RMu¶ĐcUû¯h/¨¤ùưª¶@º+AbpÀe;Pä‚đÜZÏxY€ơ§ư²Ú~‰)ÀˆcK}ªÍg­A“{†{ÍzM*èó®YCÖƠ|€­lg6l̃Ú|¢›cºk$äC䜥Å jĂQk¸1I6¨nâ6’§ATu»’§‚>(yj ƒQŸÖ×̀‹®æƠJLo8{Èd˜¼èk ºŒƯˆ:ÏÜxÚ :èđ!O¦.EgYS-É×£__yø­øú3đbc¡̣Đç¥Ji¾[*ÍÎ WS›¬Ư´a˦­\ơ¬!Øq ªgrër`Zï–H₫¹=ÁR±ú2‡¥~–Ë₫6Vôí™*µ{Á_wƠ­!ưƠ¬U‚_1ĂêÀ«su4¢ë‹ ꇬºŸÁQU ³¾ÉØCË̃ÓÛŒR»Kµg5'ÏX€v8EÖ»Bä$uÙ~K&™F$Y7¦•0]zܺøA™óàøNC\—¹VO·3jÀ73ʬKשJÇ@µË¶Ø×½W‚]ö ~UЇF&ú­Èù—S,pY†¸™’Œ zKm³É i¬̃¸ænmªB­†¿ÿç~u¯¶¹îfn¨­†ß\ÍöÏÍ́Q:uƯ­n,}ëØLȘ=M“yU‘T¿k•ÔYL@È%8«“úÀeR¿J•TÀ2©kd”Á±1[Íë*TwQŒà*‡DÇ{´CK<‰´)¥ü₫[ỵ̈:ÈóÚ·K̀¹gƯeía„‰o(…NiI;ê ‚°p½i=·G…vwdUí̀R—Ú•M¥í­ƯØÖ×^Í%UÚ(Ñ4úâ®ms aœT¶Ç8¿c´ưÎ[_M¼’=€sŒü$Ú¾I–³ : =‡TVk³÷:[#zăçÀH¢Å̀Œßêr ª­©d­üaÏk/¯Œ‚>4—Üß̃•w4̃ Ô7«ûQ₫7èÉï¸Äăƒ¡Đ®h€ÁBë]ٕܾĂÓ&Ưl¤†}w˜“³=` ˆ³“º ƒ-ب9áë0Ȩv2 ̣ËDÂÿn Úç@5´P$ë,cɃYÿâLyå˜ö˜oÙ¹IvÀ¹­ÂAy}Y÷²¦ €‡Ï>ap®'Áọ́| ũ¦¯••r3‰Îj¹*Ú3’Á®¸jØ@c˜}¹ư·‹gØ;hMè´ÿÔC¯ŒN úĐ, ¾ê÷†”ëæK ö­""¯ST}=1 aưz9•‰˜́ë°ƒBỢUqJG ñ­̣đ³âúbư&äa[Ú¹JÁ+¥1SCí̃Cɹ- ƠGºeÓËĐzHƯ±ÿ¼ˆƠ=b¬>6×›ĂålÈ<4¶6bè:°jÚˆâñlIYYŸMTYfsÙ°6· e¢æ%sÚg©[½>\Æ2ÆNT\û¤"\å•ÍÊi¢woT\$h₫XÏá]qÊÖjn?ùïÂTG/ærô&ÙM'>‡6$±ø g3yk³ÆÉN7`ÑeñÿUy}q3¦R¼ù“bEĂ©ŒosEåtÅ\ƒßxb̃b½ÉÆÚÜJÙJ5’äV{uÏk‡‡_Ù‹&Û;¨o5Y´RüÁo»“C”æ$¡r5]ëk_m4l·ï¡ƒĂ,S‰s¥à4Ö¦“–j%“·Đ^›,js“¹SQ@5Ȧ5ä™Á¥ZW‡ñ×ƯQWAy5Đî8Ú‚gjZ_·pX…1_§^Y^â©ơ)\Û–kb½₫vʇ]ÔW6SŤ–÷OßÇ•á&û˶H §/,²¿́ ¤ Mö—=#ÚÉ₫̣keΆ´/7Wc„¡÷TA¿áo,U0Ønl®†ˆÀßÿ·ØÆ̉ĂmÖÆj„ü~5B₫%7Ë.æ°É­l¯̣n™³wÀ¶ê(a¤Gơ/ógí?~í4:J10 –# aͪ#:á©tɱǘÀ"§]/z(ô84I8àÙŬÿ܈終Ở/G[á‹·à®q\´-K̀wó1Ÿ;YŒÈôd‹ñ̃FÂ_hư(@h ƯƯó Ưvq/÷³>7µ€N#̉.×çŸáơd‘…Ñ´Ç.çó{ÿ·àđ rFù›n“ytÍ¢ü3 ÁÙ*ÙDÉWüóùGÿí8ö)g›¶̀kr¦êñ ‡ăª.læU,¯ÍÔ3À̉ư“¶ˆỸ3¿p"ueq…íî̀ÊàèobdôzM6V́¢‰=&ætÙ•…•úXŸ@è̀® +§•‰i2®5Á(˜«”fZ`¥L0,2™ă°È~¼JTæCÁDÂIô¥bû“ޤÁê!À qƠ n̉ª¶fⲪjvRäOÉ¢–!J&“¥–"¿aV´_Ü2̃%8¨v~ă0 f;ï–W³h¼ó&‡q8{$_úGtÉg>æËg@«ûƯhơoGÅù½"̉MĐ+bÉ0iă tØ»ux)Y¼F₫₫+ÿ/ăĐß̣äEº‚f³˜÷„{iXxºØ̃Gî€ôíÿ‡ñ=ơ_§aèH¦ùZ‡_'ËxB÷ÂF₫Y<̃ơͤ–éLyë&Ïß=~<ͦ»Izưxë°đ€§v ̣Ă=–EÁ`‰pHÂØ;‡¶E™ €o¯ _̀m³@ë5‘u”y3̃ û1Y÷G>|ÎúE•åªa€5×DîHĂCY+ûȺ ̀ĂÇÛ´̀g·Ơ_|D©{iơøAY{ü),Ûˆf2ë«aÂr{™ZLœbBVϰû4§»$ưœ¹7à¤iFÁóXZ€EMa0,ù“0‹®ăpâ¡–|†Ïï‚{ÿ>Y¦4ºI2ÇÅÎn¤±±öđ0|ÿ§{"Ø4Ẹ̀‘—·N¹k,̉ăơ2@ää±{ôªz¤«¹–, èyó¿̀'Avó=´™ăø³eJ ̉pDqæ!L³¸< ¯°c¢XÿoœÖ¡‰= Fi™˜^wNEơø=tå)o ÅD—J|/[‚kˆŒ*¤HMÊ5ëuO# –ùMBcü[²ôĐf…đB¡%“EÈ` Ibpâ7LSq_„%s–a„¯p’)²xÊ8đdơGH ̃"…‰AÇo¡ê)»øă;ëŸß9Ï»AYŸ,%™,‚5tênÓ#Ùøô© ̀ưh A·Èn¶Gº ˜Ă8Œn±ñ2#È ỬÆƠºs"njèƯ¦ÁO«)~c!´îă–ĂØÆ<:£ç—ÑÉ,:çpŸăäNĂƠˆ=j¹’̉”ƒ˜Ç;HÜ4£-‰C¥T܃%Naá&aŒ‚Í„sCl}–WD¬Ë4E KiRǘ$° âä°ûzgÆa•øœ`4cơ wDÖºr«ªg0 º—çÉ$"r~W†—'ô 'maƒ‡ÄBs4˃·°Â/đ À›†‘-Ñ©öÖï&DPüÊ#Z"ṿŒưùÈs\Üg!V'G0Îu qèÉà²M˜PÙ¡ơ=ÑàÈSi!!c—ÆO€sˆ£•ƯâÓÎz˜!'ó3â=£ü)\1‹u‚̣e²@$¡Q8ŒêƯ›*D“À‰;À“<\dßyö¶€æ¾,TQE³ÍˆèöÑlƒ1 ™•đï:ºU8 ¯WĐY͹́ä°ÙÛàÇ”q÷ŸƯxjjI³ß—É÷4áˆê‘̀$ 7̀y ̀4&~ñOµ?iÈǼ¯D.“ßÇá>°;8ˆ+ÀL>#¬x…d€¦ë4”¼ÇÔ%M.ÖÇÖUh“~ƘǜcÆ3ñ>ó#bèWgÀ—Q(¹²Â&'>đk‡@À‡)扄qHfQ?$sZÑh\Á¶‘³đDE Ç‡†9Â`!̉é•碒—* Đ„X Ø2ƒQ-¯)@Ç›ñ´©h%U¬1Kˆ#qª³)´(—A‡€ ±²%YQ>^RÍ‘7pÍÙëx©`è̀ư¼́PŒ €™Æ†\!é$ăñ2ƠáĐ0>Q™!ÙÊ P}²„£;[br8‹@ÙIÂ$îƯH°$±`ăÚ.r²x1°}bÅfG(á”[ƒ‘‹m7ÀS U<‘æBÁâ$ ơHa¾g21NA™¦ĐÀ€á«‘,µÇb,’ ߣs<˜ ‚ù¤¼Ê¨Èاhºô¤%®Ùt‰[\Â; DF‡›¶ær(f‹³ Û‹È_€¸æÆă_ù7Ms'˜üR3'ƠĐ£đ˜eÆƯZ²ƒZó8‰wp,®Î!ØîóiE&)gû&"å˜mă§<đÀE™Œ9wWºV°kT­‹Ó÷¿~Ø9:?Ù9~{~rvqööüĂÖ!=ơá©o*,ÑÖ®â70[/_™úqë‰X₫|ºơÎC̃%µí/³ 2” ëpûKJXX&”QÔy q¼V10K&µ­À’R0ƒ83çïÎ,‚mw²[,öCÏ–&è)Mp$, Đ<œG¸Kº̃5±0+ơ;÷N4§̉ÄP1уà0KTPD»’ÔZÍÏ÷Oñ¶—|ÂídÂymqL̉-H̉´g"̀ôRjÈ;#˜©—sÔ‹đœ1 ï°¥×Aư#ÈƯˆ@±ˆ¡{à ñr++É×(+N‚_Rƒ ¼['Û‹m<º48U“ÍàIÇ‘™ŒÈ3’}‚½“| èÀMàH·c–µø\B´œÑ™FƒĂÔÀœK!p&a¿j:Á£À)m’„^úK«¼mªQ±…Yµ#Ơdœ@G˜¾^ëơ§5“ˆ „±Œơ°¡¬¾©SOÄHy]µ=È»‚k ÍºV’Å̉¨qø+Y‚ªj­ûa’¬8QŒ"hä!’ƒđsÆ1Ä| OqéR¢à7ñà1}avˆ¢/x†Ă?áx™‹éY§_ µøµ“è6`µwû̀–<]ñx¶„S_³IÏa“؇–ªiú6ÏưWP*¸ ¢ •5oÁ‡v@Ù %?º̀™’̃D»‡‚Ă-+f@¡wálVµ5°\·a5å Ÿ@&$â‘1«0ÆñH_̉‘h€´-(P‚ĺ,˯$,¡Ư2`Ó3ÍKù‚§$Jú´E;=†Q%úäùl*Å9DÛ`“dz€¥²Đ<6Ư†\0HÛü}±{jÎu´àó·ñ é6ç Ê]1N$EV~^²ÈöRN}8#%W8̀JB S˜ e Ö%Q#Ó£`£AȘF¡53Pg3ÖbiBmZ°öG‚̉‚=ö$¤A$*ƒ̣ú*Û‹âøqf^f‚ApÍI¡NB)iºp‚Fá́”²̉úæD9c¶fö•³xƯ²‘& ÚÅ„O½¶NĂÀ^ØFÀ+ƒ†$æJirÜ(2] ưIơÜ{$%|`ƠưUwmÜô°Ôz…SĂ…±´„¶6`–hM·ObCBÎ6‘³–›ọ́íƠÿ éä0]rDMÆ‚xD 5́ưøA:ñÏÔ áYkÏ4ÍlŸsÍ'S"°^¦àL¤ÜÈà’wr g2üV€ê›LîÑX4R«?X¼Öe,ÓyÂ+H¬c¼œÚ̀9Ç5ؼ ®Ñöóđ<4›nÎîY æèm4Z¾?.¸+ \V­©‰€*:Ç…÷ÙHè\Rrö{ú́§¯(Œøî&áÂX¼ÍÆpj­“ Äèi™)æ9₫\óQ̣kđaU&±öahƠ…x#²@ô¹g}N|âjÎÁĂ×’˜%JæÖ¢́˜‹â k[êÙG‚Ñ5|“†VÆ'ÚA¹/{úÛ@Åx-Ÿ->±Œ×eJ*,ŒEvFpJ*À¾À5aFIç¥#„z>ƒ₫Îđ ‰'À”Ø8ÀË9LP&FË1ú¡m+ËĐÇ̃£Qâ~e,.†¤KäJ„ÑØ}4 S¥ly¬± $fHIØGnÚ!LÇjf¡ï±S/YWgÜNădƠf3¯`°´”wVs4β‰H0kÊ7“§s`›FĐ́ÎÈj(럙;S-00ăéçù–@™cÍÚˆ.€¿$wháy;IB¦E ¬˜ˆ2¯H×´ÖE>OV,ä‰ÁUÔ=eü·®Ă,Y7̉â0¬-  .)¹V GÂơLc—rỳb‚Ôvđª=ơ´„aÉ.Z•+; ÿ&c¤:!è¥xVdñU™³ư±'n"7'H@§ë}̀Ñ•8»÷0:yựJ/>´B£hˆÔ6>Étä©S]_@«sv(8Ïøe¬ŒdV`„˜¢!Gb`k”=Ëï «›9ËëĐMƠâ²+ÆF'­„(C{JÆ/ E q:!ó"Í’µỆªºë0 —t‹L’Íb00̣`ØsÔB̀Oị̂N+Kbđ8uW<×ä‹TÈn„¨êµ’ÑTÉkđN¹dÈb(̀ç6aÊr€èYv#ü|æÊ:¬úGc>È(2 } Á‰|º¦®ç:×)먢sƒFºo|ÓëÙz/—èáßW÷îrĐáñ~2¤‘ ºåF÷$^eÄÖÉ(§<‚o/ÎÎù8¹Îqf̣îMưi±?…\Â'¤™Û`ÆÇzf–ôễUX Z‘Û Äô9ù+puDaåÛ›åøåi€…û‘§TQk¿à¨¤”?lˆa RqqÄ“…8!\Wƒ¡Đw¢Ư‚gY‚h#üÖă&@_û„I¥t…fPhfËŒ-£†Eœ^Eª²9¿ñ€c*÷ä”Ư±a×bY³°UùŒáŸƯÇ[? : NV+dQB~–F,ÚÉÉaXŸqz÷?Ø’¼̀´ùÈdqÏ™k‡"yXœ•² ư¹ o‚Ùt$4NØH¢L³2”3ÍíÅ–ëaÎd£,l3¯,á®F81ÄQ"ôd†3̃¯›hÁ‹ - ¾ëÅ“Œ˜Géx9GÅU'*Ue¿¶ù s˜>}ÿ‰›˜Àµ'øç{_B0ư½'¨–a/h1 C{‘³¾3N©¶S­ï™_ă’ÁɶsL3@=ṿɧ|8;ç.g-„!æzQ2 YÊø;4¾‰“Yr‡è»y¤ÍY¦,à₫t9ĂûL„L°×B2̣=j[ ·íí©£ê·³wo-’£Û`N@ƠæJûOüXÊ ¶÷êƠs$4/Œ:™¯̃(üg YNuOœCVˆeả#~árRöí߸8cq?ĂN’dqVûrÎW*mD̀ 4 ·)à ¯>³[wÓqDX$ »âđ$n£Ă’ṇ̃A)ăº:q&(¥"Vé˜óDa9Èq¢Øº)›,Ëc²6LÓ>&Íx= í^Q4fqfÄ́€}â)#©¿ŒÍ¼°2Ë̃+["Cá—*jï˜í}`ÉWFöY ™‡-ñ‰¤£10đ‡*ëÂ!N¢å¼¹ÇÙ"/Ù½N₫~c{CO²́QŸrÜIb£…î{ïs.p7Ñ́°SŸñÈ“´Dé[(8Å÷u”`s«=m1ăq’*Á^xÖ ă+b4›4 @%eºÊ0̀—™Ë½6rÄÅ5¨„V¨LµáN’ÿéÄ%«¿̃ھ(̀ Q.Näo<ÍÚÚ;C"ˆ¢”9ƠqF“o¶\ĐƯ NfĐ~$ÖK-o¸r˜Üù£…W‹'NÈIˆ7&Đè*Z•kü"åu‚˜}`$|9!D°DŒÄ…»"ÿƒr+c‹)stá‘£ư#ôæ£:>ưÛd¶ätN/å´ñăU"ƒå›•Q:¸¾FŒ6.́HÚ,-DY®~#&È,Él{˜'"ê‚϶”ĂơyA,Ñ•-]leÁáSB“ÙˆÜ-Èç­3^vǴ•-…s[̣yƯ¾ÉE˜ÜáW5‚…«̀«±‚:o;9H¼ºm)w/Éÿ1ú…8BLV@}YB^J ;ÿU_¨’Ùv 3Ñ¢4a ¯3?ơTÜW5Eô@…™°Ç”v?NDy©BU‹ËºZª½KÙbí‹nöúZoGÁ c˜8`›Ä~ÅÆéd<2ÑX‘Åøô¤ ¹‚ĂjÉ?"vlKQT™OÔØ(jŸú̃²÷üª _‰öFʧœ,:;‡ÈXB̀8ô/tđlË hÑŒAÜ a¯Å}Ast•Đm+a¤RǼß̃t™²Ư‘÷o€h¡Iôç‰Á®êî j²µ,·M$H#P^‰ f%́Ơc3NzL¬Ñ”.ơæ ©±I‰©Ï@Zbcºß¿³ª̀³–Z×|cH·UV̉QB[8̃É0†æ̀ĂkËZV°f–‘ĂçQz‹Ä+Yí5{ïh$ïȼn€Sdµ-Gr­è‰%”…/`l:‹ơJËưẹ̈wí÷2DPödg˜u¡…%™a˜îäÉ₫Ëñl:¨Ñ^S«.*ÇbHÑ-¼ZNöJ| Q6BĂ«¹å”˜¼l¸¿U\†ÍûXàñ ÍûÏ'z–ºÀZ €9–‘̉%êèæ°m‘øp&xf(cI5%!8n}àk6¯´‹|âúcJ ®:J mù¨záY¨Eû̀=gM¨d†̉›::u` ë):JËËñÊ1- l)Ш¢…)æL1¡<¤b™éÔÇ#ò£R†Ă{Đ·'Ê7–™sNùªµ§̃ÙD"^qĂ–¨0Tºj0Á(PŒ’DÚq‘v¡Ep å$ ¯8åèË«|Y6‚Œî\ˆÿö-™Ự&Lƒ[*<Â2Ep­.[ƒ½¨}"‘Tf}€ZÎH©_ÎrU„´£4MrIÂñ‚0ǵH̉ µRópÍÊM½Ô¿ ñ¹’ ‘¨ơ‘ TüoA©±̣v…_Đ+@§áư‚\ ºZd‰cål_ÜwäÚ8[¤C ‚uÈ7"é“%ÊÇ´TdzÖđp—1&QŸ@˜É$…Ââ™>AÛW:¬Ø25—â­„3%b”<3…eƯÀ%›"­ĐÇ9̀3™d#ÜÂq8AwĂHn ÊÍÿsxÏëÍ|Ó.]+́¹ºơ†¼“#™Âk|eÛ‡+Äzj€"ĐÛó}â¬^² ={x|At‰!—añ€b+́d¼DN!‰;䦱C#ư»̉^fN8Sî 1`ƒÏ VâQ½ Yåw•ÖH£tT ÔÓ@ñ Ñú‘Q!äjƠ$$ÈƯM¨«kr÷€e…³©ç­2˜ W 9,‹2: Œ›Z'V"“"Œ₫6Jf´D9Ë™¢Ç.ćåTÎióŒÓ$£²E¨‚ùCíf+¹¬Á¶:[IF|ÿ‹ÓB‹eD¤c •Y–rWˆÿÄ/D>ׇ={ň>Ño©w¥eÏVwG1ÁV 7́–1ºOÈÓỴ̈ƯIßÜÂ,Y]Œç"Ô¶Vuéż4sO/ íØ D‰/YAƠ=ADg â'|K”b$ăẲPÆO·ëU…{Äo%*½Á4å5!A¸ǯđ­Ds=o¾}dâÛF.'$D'¸§¾ÙîWº5†¡w¤Ê•c÷ØT®"đíà_í–Kºi®ˆ“”ă•̉^Nº÷m`³Ă«bT̃5Ê-|WĂ+E©`pPjÚƠ3hÎaÓVU˜Î%t|_øÛ<‘Đê¾”Ă<Èåb²A­0~€×Î#gÆ£T‘T5 MÔ±ø’;´CEQ’¢°s§&XˆVßƯ–d œ U5ĂG"Ls$^g1µv}[nt %PiD(£2ÎÄôföå<ÉqCé̉SY Ô%₫’£‚’©x=46Àp+F©·’î?ˆœ­O,k`7””n*sF ½ƯÈ2ŒäW«yKN$´X‚Î4t°ÑM¢H‰&Ú.¦·ơ¨<r‘ù{ψ)ï=/S†Û¦÷ú~0iHé­>Í%'c×÷ËIeU=•÷ƒ:WJ†‰¨L•)³ÖÓë‰/˜w‡(Á¬ÛGyqàï¬x=@*­á9Ç9́÷uûÅm%iÇÜŒ®I‚¢Rnèi˜¬(̉¡^”;º₫˜Y6K½3<€@g+ÎâÚaüx)é¹ø¬ÅƯV —‚?8–€r©¤vZṿX‹ưœ„ă¯$ºjÁ a€)èF89¾E†óßz4€‘ù”ơT%ie²źBçúQU-²`/²'A&0œ…ÉNƒ²l‰†_¨[N>™h+¢!R\6Mshp–´((|‘§×CÅèh¶8¥2qóÁl†`‘P÷=‘øÜ̃o FöU¿ßÁ"57ÑiZ°à¥“_XÅIxú vèAà)›8ù̃2ÍDXñn₫B÷ùJ·?Tp§åŸñ9‡‹É9áÈ+ơ&f-tăl̀Đ£x 5àÈr¼¦I¾’³Å(·?‹w«Ñ}ïYĂ’ñ`r/â₫O”="ĐËdƯnGY„¼¹NR);8Y8¨]u´p|á&j(ÔYÍä„H+PiX‹*6ÁM/‹¦>‰o^̣"—îØ2ê‰ü!'™YƒàtPYRF/u4ʧ"Ÿ$w€ă˜0Nè0†Q̉2Í‘jn–¹ÎçüUü+³Äâ²zªU“‘\Jiy"xf{8ßơ™-Ù#B›³Â.QH‚Ư‰Pæ’ßOhù®l— 1-t–²ÓÅJÑA»!jdÆ#e?¸¾4í ăù+Ư"̣́¼l,¿9™'ÉÉe!‡ƒª¾¡:–UÊ0æazÍ8e'}#XGÈdØÆ°kcûå9J„>;¯rÎÈêÙsEFmí¹ÀG‘4;¬?ÀP$$^ĂóƠ vÿphÀ½ÛrB÷KÙ¦C~X,LqpaULkæ‘ ĐÈi:ß«Ơ@Ÿ-qtr_³x¤Öèd#RX\3&¼â{º™̣nºY’A8bYùB9ÜX«GöT¡”eÊ9(.µ{¶ºÅÊP'†;i5DÍố₫ 5c̃è4¹f́ÇS÷uVr{,ÅqÔ¥¿º·gŒ™:ú1vQ×[&·×_e$  YúM̃(¼a»Dc :÷®•YÀ³Ä|ùØpơ‰qÄŒøè–Ă¡?#’I‚™¤÷¦ÚEÊf§úĂ~Lh—ÉGc¬‰*k!»`̀fÍ$uXKIöDÓöeºÜPa-(ïVB'+Ï;“?–®îI¨…Đ#PNriîx¨ø =X¡Ọ̈< ‰íh²&/‘½]› ¥ó½˜YQçA1¾b»«‘‰Ûq.ß`,ŕ-Ơ¬a¨§#ua₫ḌvZøB">H1 Øú¾½WŸQ‹,™|á\üzÅyh%éSyƯeªuC"ÏY ¢Đ,YLqª«Ñ}3?đls0MȤÑ9{̀4¾ªÜ;&DY€=Ù®L¥ ;y”‹ M‹}¢c€ăÅîTѧ|-ÖLĂü2·èŒ˜ 3M0)fb;œ¾ÈÑÿ­ă¤ Ok¥S‰P”n±p¾ÜA¬ƒù†ÉĂĂÙ@d ƒ¬A¾Xö6umẵ™=Q¾du’‘L¥ufmsø^™pyău ;ăQqu"-3b˜4¢S(Iï­+ÇU9c̉Ë`ºV|Gßt~¬¨]$$]‡bÑ(=6¢¤aô°B—‰¬ -; ×«W’vMLÉ;Vr¢ñ}5’§˜ÁWíơ´BR•óSä ET Ă5CÉÖ§̃đM<™‹à^Å‚"»''ˆäRÖbÉÿHç²CvÚ#°YÖẹ́a.™ ¦ÄüEÙKä¢̀È#ºf#Q‘'SnÚ2›p/5:°ụƠ=É#;Œ(9ôD[Ƹd>̃æC+0¾$ÊG7E»Ö4«k±°œ¢î¿ ¦‰;ºÄÈơƠƠG$¤˜y|‡Ï髸îÜZ¹GÂ₫Kÿ× …ƯÂ*ˆNđƠM¤̉ [öK}%†¦KíÏ•ßM"%£G1öB'ƠS‚((Úªä$°—{ÏHÜn‡jO‚íÚÚÆä Ô:üyâĐÅ`óß"dê5×oa ÿljEnræG²ªL$ưœÿH)¥”©pIY{Økc  f́Ûf[S¬Æúƃê¢Ê½x¯’êÁºâÁŒưj›V}[íJQ%Q§½óÉÉ+¡îüeÑ|9ËU’‰C‹¹Ơ\¬ÊF£îđ¡q…¦nÉT̉qïËÜø~@™fÖ-±ÚÓ̉R‚ ®<ª0Ä10_̉‰ơƠWÅ®<‹¡0¹-́XåFÔ“¦Z6ª®%tư7úOéưä@™¦HØÓ G ĽÑWH7¥ñ÷£$¼áB-G¨§&µơZVÔ’h1GMüYØ&))9`ÔQåTZ‘đ̃ÊB3ăW÷ùX¢óLf“ă×IqáÖ‘ä¨ƠÜ„`_p2~PØ’¾ĂX’©<–¬ØË:C‡Ù<íc< è¨q˜r £U<ÂŒPz‡OX£•u‘ |¾̉VBœ÷!́4Œÿ̉)hefÔ-“ºÊ¡,9ăR'¥ïĐ«ªbêNœ–lQ°0¤–‡¯îư8̃ ^`~¯µ›Ä/3¢ƒÀá i‰-ª¨zF±ß$®^˜á/§ïOư³₫ù[ÿ·£÷ïÎ/₫æ¿~û̃‡₫»÷o~ôëÈ¿xK¿OÿëâôüÂwú₫׳‹‹Óÿ§¿yGï̃½9;>úéÍ©ÿæè7,.ö_ǧï.üß~9=÷ß"øßÎ>œú.°ÁÙ¹ÿÛû³‹³óŸ àñÛw{öó/̃/oßœœ¾§Êp¡wjè¿;zqvúÇqyvrjI×úùƒẂá·³‹_̃~¼đôD̃¾€óÿó́üdäŸĐÓÿz÷₫ôĂ ôsö+Œ₫^¿ùxăù?}¼€Ơ¸đ̃œÁ,᳋·#êY¾UË„ø¿¾?₫~ưtöæ ºÄ̉v¯Ï.Ρ \GïˆgqüñÍLèăûwo?œâ¡Ë @`ñߟ}øOæ!‹ü>)@¬4Àøơèüøû²ç[†Óơÿöö#,0ï7'θh§̃ÉéëÓă‹³ËÓ~ Ư|øøë©¬ư‡ Z 7oüóÓcïÑû¿ùNß_Ó:¼?}wt[ñ̃;~û₫=By{^Â-Û×^›7*<\´‹sD«ÓKDçopĨŸ₫Ÿ0iDßEÜ£ŸßŸ̉[ˆâưv#ÄmÔØâ3¶Œ¨ ¼0Ø̣7À»·₫¯oO₫ỵ̈®¼·måˆÿÏOA°@›¦ơ¶@ë8d¶TɰäAQ´DYBi‰”¬øÛwföà®7¶WÛ}T‡ä’Ưùí9;ÇvÚX?¬5Aù{_[ß<xÙë}Dè ̉¡̣@ .́Íú?ë—­Á‰'›åyÙêµnêƯpƯjtđ̃C#…–ĐÅrAàë8¯• • ½…̃-±'Zäija?”yCëô uúeëô»ư5Åf}X÷©Äp½há×7­E¯̃hÜ̃@'Ä Å_<ƒ[è–« ä—ú}ç¦){́·ëîíÍf ô ç>@ˆ$©%*5Á¾|<¡Ê÷;mȪqÅ«ÍưÛc5vUqÑ‚Ïêͯê—<(d‡c̉ç8[Ͱ#N\‘Mq°å$%^œÆÚ˜(}đËTk̉¥Çƒ°ææËå9œlí”.0dó b§¹å8¬—乯£oẩ2Y³ư×c lÅË)Åk¾9€!´Fé‚9í¢ßĐ:l£À£ ăûb‘bЧÍSĂEÿ́i–*eß±9„‹j)û s\ÍëªôåĐ(ƯÓ™°»e°çÓå°>Ø̀—ûx́99ÚlØo‡»…—Ô@^8GtY˜Ñ̃¯‡dA’-&~ƒZ{É:äKcµÑçÜàn(œđs> "k©MăGY‘H³.<%üd{®-âè=·kË×E­ ¿ă®%*–,XNI— ­wâÄYO;#›/Ûèh^Ü₫ÅƠ¬xµ¾ÅÌR×&N6×$ƒ¾4ù®g¹àqRxœÚÈ-â ̣‡Å–¿~“3 bAv]ï;y¨ĐĐeËD¾m«DÄÔCa%"ÁÏ&iA¤å¹´Ø8ä5e’?é™-HXe("pÓd%ĂrӉظ²0gỎë‘ííøF¼áèí˜åÉÆ'aFÖ˜èr0¢ó'´g_Àma¥Q¡xŒAà?äÇË{ŸÏ’ j¨bc‹«NÏk@+̣}Ojëh|ô·2Ă@‰üÛ­w”ÓBø‘²¯³ån=ï‹rE\hb÷’Xv"$¿­}̉$&÷?ÄKOñx₫¸-n3\̣%φ›¢Gø} Iú4´’ă=¾`¥©S,Z?K¿n óBtÄ®r98O¼Íu'[Yvú{–ƒ$pzûö-„bˆm+ )jxÔ$-ßu«ÊưuäiôJÜØ†ô"´HIüóX4´U₫:ŒáËevV«­×ëÓ‡ùêt‘?Ô„•N-ˆ^z{^‹#ê’yStJáWX|¦ÅÂđ8lÀ'•Ĉémñ¼ÜfÍs ©†Q/â ­•˜- :S}nËŸªû\'̣,p~–QŒ¨æKpœ¬̀<äÂQ‘—”ÅơU£Uc ¦³C6œ>-|½ó°(èÔ8êƒ~÷vØê~SRM·G̣‡a›v Î àFä‡÷AT`=®ÏkøñÍ…S–áæ°TÎÇ4A&éhñÈw¯µQïíÊ0réóOf¤FefGóÄíÉés†›×¤ªöå‘©¯ă™x{eÉx'Çw4ŒªÑ ´ĐĐ{¶â}¿?¡­°ƠgïÉMÉ̀#5'Œa#vSD̀°ËÛNˆCˆíx‰VáĐ…î?¶,8•ál¼Ñ¸™†óZ₫âíx¸¦¥<|EWäÉ·ỶI:\Œ“¦Æ=¢”$ÔĐgÊ€@zå,¢¶´!ÑḈùÚ‘»L Ç7¶Ñ#Ùë. ˜̃¡Lé…iWîg2óR_ RC½Zùü€jIĐ́™-›o(e&Ñ3_ n]°x”H¹ơɽq|$Ù„Jfz¬$¨¿adל.ù¦;W.qâb_› kaµ³æ68ăYMz₫.YæûƠ9Å2‰Ç;´•0ă“cZư“ë%Ÿưô¬—Mg .²ésm=}ú0}È̉Óẹ́1ƯY¯/ư@­êir @êd²‹mñ0Ei&döL˜êÀˆø#Đ0ŸB “”¦œ¤Kæîp†,2¶₫Đ`±nq÷ŸäùKh(Wø>ˆö79,󉛩ô†‹L£µâ´V0ÄuĐ ̉ñ·₫ç÷EöÙÿWùóA«ñ½ÁMX9[¦É—`H vfơÁßMù‰Ÿ Ơ+ä*‚¢ßÎ^”D¿ẩ0C}úitçđỊ̈—ÓO‘çk¨CG¼ơGYX>a%°3mù‡đ6M`ºÏ‹åâ$×>>_æđ7~‘ư™ë¼‰çËqT6Óbcx₫̀©©T4¾²ïü“:Đ¿êçµû™÷qï=D/ˆè…Y¢ "Ú0K´ID›f‰¶ˆhË,Ñ6m›%zID/ͽ"¢Wf‰vˆhÇ,Ñ.í%Ú#¢=³DûD´o–è5½6Kô†ˆ̃˜%: ¢³D‡Dth–è½ÛA´†#u Ç̣ ₫;&=4’BË笺¾¿Đ¬‘³Ÿh¡¡àÅ~·c̣ ̣ù-4z–ó+̉&˜k±gÏH ¢,hîTÀ̉âKđWø ,%£ü›i9]êO½œÁXYÆÛ?.ßmϪ!û¹¢r®gÉ …äË ¢ VÅ™̀Dă?]ˆJ¹»Xÿå—Oc¶êA‚aÙ/ØRLF¦È6;oÆ æÔ‹ƒâEgZ‡·Eü„ư' ™•¬!O:éR}‘j Í×åhKXJ4%é„‚ˆ.î´½·³¢A} ‰ßT„%Ú%`LÑ­)¶„$ñÓE'e”›®îÔÅ›»#,›íăd̉œ=»ºƒØ{º̀3b®Ơ`è+îI³kejLW´á%Ï•a°™LRŒ´Çʰץ©à ï«Ă ½£i’ÿå“dO¦T„É4™3̃à¦,¥´cWwzó¬ß p‹́€³~2ĂxD́ZÄÚîÿ±6/xx“âo»Hóe)$>7ƒ^¸Ưy@ ’%ơSvu§Ơ½‡!Z¶4b˜ˆ¯̣±"́¡iW†Áëmî{́©2̀‚¯ŒƯÙ=Æ´!®ø}5“ƒcuFÅÛy:{„é™Ơ–|ªsE’Ÿ36拇j°Fû{́Z†JËư¹2 JËí±2́1Ë€̣¾:Œ)–›)•a’  tW!¦’«̀j̀ƒßT€¥*ßè 0ĂtÁ¢ De: tẲí¿:×m–߬ˆèèas@EDW°Óuµw0µ̃­£ƒ•Tѽ¶S₫΂=YïÑ̃́(ÏAôhæKep éèUwÀd>¦ơâÎ%Mđ;ØÏ ™ÂkEX È^+†@–đZ!–bÔŸÊÛ0†§ªÓ8A7UbW—¸¯kH±±ä=VƒA2)!cîöÊSlx¿]˜€€{_̣N˜îA <6V7ƯƒA¬ç8 6<&Ax?̣$+N.‚@“%‡wœt̉¥” ^¥â(¥₫EĂ’ÆQP¤ÎFĂÄêÆQH˜GĂĂ‚ºÇU0Ư‰-‘“ÀBÁăđª aHƠå¦'Uç@§<Éß©s ÿGdÅ ̉ETŸÉ k®“NB"ư,@́¸[º ÷ÍܯĆ‹¦‹À¨2·Nç@ *₫|xG*ÙWç+ÎW‚€–J 7XræÏ AaÁ­ÁE0ÔÍ<+a‚ w ÎdÎQl!qtëÅ[­„ÂÓ‹Phn%öƯes±ăç0̀“n  u‚"¼ï4H¬8á9 H±Å1Î,̉˯D³Ÿ‹`lN*G:›(̃„%¶œ Dz *xØqDtuËó¢£ liÚ­:<: ʦ¦Ư¦“¤£hvk•®‚±­i·́Œé(0ú¦ Ng(¶8ÆU‡f}aÇQÔ9™‚>ÙJ3:`G‚ºædÇB¨&8ôt|àÉ̃j)Ç …ª0“)Ç …:@È”cƒ¢ØiU³u0#e¼J—J´ÍGŒ&˜̣磃áy>*1€‡ßo8ĐđÈƯFèO&ŒûÙ< g,®ä9™„˜âóSXÿ_ôçLÎ+Ç"Ă,È_6¡¸đdè¶}!³YÖl„ṭ—ÁËF¸ đï6.¬Ù̉l4Eđ²%qÙc‹„([̉“=¶¨ÇÚ’„ltÚA Úi7¤'›b“f±- Y,1ɤ;⌖HB± ØèÄĂ ´“¢<32ƒGÉŒ)ü₫WÙYíïêQK”`ö ¥×³óæê¿ ¢»ƒVÿ:Îóxá$Å)”ø‘÷AÄõ‚Lmß§ ~ŒW‘û( $Îsp2octave-netcdf.html#ncinfo3.1.3 ncinfo2octave-netcdf.html#ncread3.1.4 ncread8octave-netcdf.html#ncreadatt3.1.5 ncreadatt4octave-netcdf.html#ncwrite3.1.6 ncwrite:octave-netcdf.html#ncwriteatt 3.1.7 ncwriteatt@octave-netcdf.html#ncwriteschema&3.1.8 ncwriteschema~octave-netcdf.html#Low_002dlevel-functions-_0028Deprecated_0029H3.2 Low-level functions (Deprecated)Foctave-netcdf.html#netcdf_005fabort$3.2.1 netcdf_abortFoctave-netcdf.html#netcdf_005fclose$3.2.2 netcdf_closeJoctave-netcdf.html#netcdf_005fcopyAtt(3.2.3 netcdf_copyAttHoctave-netcdf.html#netcdf_005fcreate&3.2.4 netcdf_createHoctave-netcdf.html#netcdf_005fdefDim&3.2.5 netcdf_defDimHoctave-netcdf.html#netcdf_005fdefGrp&3.2.6 netcdf_defGrpHoctave-netcdf.html#netcdf_005fdefVar&3.2.7 netcdf_defVarXoctave-netcdf.html#netcdf_005fdefVarChunking63.2.8 netcdf_defVarChunkingVoctave-netcdf.html#netcdf_005fdefVarDeflate43.2.9 netcdf_defVarDeflatePoctave-netcdf.html#netcdf_005fdefVarFill03.2.10 netcdf_defVarFill\octave-netcdf.html#netcdf_005fdefVarFletcher32<3.2.11 netcdf_defVarFletcher32Joctave-netcdf.html#netcdf_005fdefVlen*3.2.12 netcdf_defVlenHoctave-netcdf.html#netcdf_005fdelAtt(3.2.13 netcdf_delAttHoctave-netcdf.html#netcdf_005fendDef(3.2.14 netcdf_endDefHoctave-netcdf.html#netcdf_005fgetAtt(3.2.15 netcdf_getAttVoctave-netcdf.html#netcdf_005fgetChunkCache63.2.16 netcdf_getChunkCacheRoctave-netcdf.html#netcdf_005fgetConstant23.2.17 netcdf_getConstant\octave-netcdf.html#netcdf_005fgetConstantNames<3.2.18 netcdf_getConstantNamesHoctave-netcdf.html#netcdf_005fgetVar(3.2.19 netcdf_getVarBoctave-netcdf.html#netcdf_005finq"3.2.20 netcdf_inqHoctave-netcdf.html#netcdf_005finqAtt(3.2.21 netcdf_inqAttLoctave-netcdf.html#netcdf_005finqAttID,3.2.22 netcdf_inqAttIDPoctave-netcdf.html#netcdf_005finqAttName03.2.23 netcdf_inqAttNameHoctave-netcdf.html#netcdf_005finqDim(3.2.24 netcdf_inqDimLoctave-netcdf.html#netcdf_005finqDimID,3.2.25 netcdf_inqDimIDNoctave-netcdf.html#netcdf_005finqDimIDs.3.2.26 netcdf_inqDimIDsNoctave-netcdf.html#netcdf_005finqFormat.3.2.27 netcdf_inqFormatXoctave-netcdf.html#netcdf_005finqGrpFullNcid83.2.28 netcdf_inqGrpFullNcidPoctave-netcdf.html#netcdf_005finqGrpName03.2.29 netcdf_inqGrpNameXoctave-netcdf.html#netcdf_005finqGrpNameFull83.2.30 netcdf_inqGrpNameFullToctave-netcdf.html#netcdf_005finqGrpParent43.2.31 netcdf_inqGrpParentJoctave-netcdf.html#netcdf_005finqGrps*3.2.32 netcdf_inqGrpsPoctave-netcdf.html#netcdf_005finqLibVers03.2.33 netcdf_inqLibVersJoctave-netcdf.html#netcdf_005finqNcid*3.2.34 netcdf_inqNcidToctave-netcdf.html#netcdf_005finqUnlimDims43.2.35 netcdf_inqUnlimDimsRoctave-netcdf.html#netcdf_005finqUserType23.2.36 netcdf_inqUserTypeHoctave-netcdf.html#netcdf_005finqVar(3.2.37 netcdf_inqVarXoctave-netcdf.html#netcdf_005finqVarChunking83.2.38 netcdf_inqVarChunkingVoctave-netcdf.html#netcdf_005finqVarDeflate63.2.39 netcdf_inqVarDeflatePoctave-netcdf.html#netcdf_005finqVarFill03.2.40 netcdf_inqVarFill\octave-netcdf.html#netcdf_005finqVarFletcher32<3.2.41 netcdf_inqVarFletcher32Loctave-netcdf.html#netcdf_005finqVarID,3.2.42 netcdf_inqVarIDNoctave-netcdf.html#netcdf_005finqVarIDs.3.2.43 netcdf_inqVarIDsJoctave-netcdf.html#netcdf_005finqVlen*3.2.44 netcdf_inqVlenDoctave-netcdf.html#netcdf_005fopen$3.2.45 netcdf_openHoctave-netcdf.html#netcdf_005fputAtt(3.2.46 netcdf_putAttHoctave-netcdf.html#netcdf_005fputVar(3.2.47 netcdf_putVarFoctave-netcdf.html#netcdf_005freDef&3.2.48 netcdf_reDefNoctave-netcdf.html#netcdf_005frenameAtt.3.2.49 netcdf_renameAttNoctave-netcdf.html#netcdf_005frenameDim.3.2.50 netcdf_renameDimNoctave-netcdf.html#netcdf_005frenameVar.3.2.51 netcdf_renameVarVoctave-netcdf.html#netcdf_005fsetChunkCache63.2.52 netcdf_setChunkCache\octave-netcdf.html#netcdf_005fsetDefaultFormat<3.2.53 netcdf_setDefaultFormatJoctave-netcdf.html#netcdf_005fsetFill*3.2.54 netcdf_setFillDoctave-netcdf.html#netcdf_005fsync$3.2.55 netcdf_syncToctave-netcdf.html#Low_002dlevel-functions.3.3 Low-level functionsFoctave-netcdf.html#netcdf_002eabort$3.3.1 netcdf.abortFoctave-netcdf.html#netcdf_002eclose$3.3.2 netcdf.closeJoctave-netcdf.html#netcdf_002ecopyAtt(3.3.3 netcdf.copyAttHoctave-netcdf.html#netcdf_002ecreate&3.3.4 netcdf.createHoctave-netcdf.html#netcdf_002edefDim&3.3.5 netcdf.defDimHoctave-netcdf.html#netcdf_002edefGrp&3.3.6 netcdf.defGrpHoctave-netcdf.html#netcdf_002edefVar&3.3.7 netcdf.defVarXoctave-netcdf.html#netcdf_002edefVarChunking63.3.8 netcdf.defVarChunkingVoctave-netcdf.html#netcdf_002edefVarDeflate43.3.9 netcdf.defVarDeflatePoctave-netcdf.html#netcdf_002edefVarFill03.3.10 netcdf.defVarFill\octave-netcdf.html#netcdf_002edefVarFletcher32<3.3.11 netcdf.defVarFletcher32Joctave-netcdf.html#netcdf_002edefVlen*3.3.12 netcdf.defVlenHoctave-netcdf.html#netcdf_002edelAtt(3.3.13 netcdf.delAttHoctave-netcdf.html#netcdf_002eendDef(3.3.14 netcdf.endDefHoctave-netcdf.html#netcdf_002egetAtt(3.3.15 netcdf.getAttVoctave-netcdf.html#netcdf_002egetChunkCache63.3.16 netcdf.getChunkCacheRoctave-netcdf.html#netcdf_002egetConstant23.3.17 netcdf.getConstant\octave-netcdf.html#netcdf_002egetConstantNames<3.3.18 netcdf.getConstantNamesHoctave-netcdf.html#netcdf_002egetVar(3.3.19 netcdf.getVarBoctave-netcdf.html#netcdf_002einq"3.3.20 netcdf.inqHoctave-netcdf.html#netcdf_002einqAtt(3.3.21 netcdf.inqAttLoctave-netcdf.html#netcdf_002einqAttID,3.3.22 netcdf.inqAttIDPoctave-netcdf.html#netcdf_002einqAttName03.3.23 netcdf.inqAttNameHoctave-netcdf.html#netcdf_002einqDim(3.3.24 netcdf.inqDimLoctave-netcdf.html#netcdf_002einqDimID,3.3.25 netcdf.inqDimIDNoctave-netcdf.html#netcdf_002einqDimIDs.3.3.26 netcdf.inqDimIDsNoctave-netcdf.html#netcdf_002einqFormat.3.3.27 netcdf.inqFormatXoctave-netcdf.html#netcdf_002einqGrpFullNcid83.3.28 netcdf.inqGrpFullNcidPoctave-netcdf.html#netcdf_002einqGrpName03.3.29 netcdf.inqGrpNameXoctave-netcdf.html#netcdf_002einqGrpNameFull83.3.30 netcdf.inqGrpNameFullToctave-netcdf.html#netcdf_002einqGrpParent43.3.31 netcdf.inqGrpParentJoctave-netcdf.html#netcdf_002einqGrps*3.3.32 netcdf.inqGrpsPoctave-netcdf.html#netcdf_002einqLibVers03.3.33 netcdf.inqLibVersJoctave-netcdf.html#netcdf_002einqNcid*3.3.34 netcdf.inqNcidToctave-netcdf.html#netcdf_002einqUnlimDims43.3.35 netcdf.inqUnlimDimsRoctave-netcdf.html#netcdf_002einqUserType23.3.36 netcdf.inqUserTypeHoctave-netcdf.html#netcdf_002einqVar(3.3.37 netcdf.inqVarXoctave-netcdf.html#netcdf_002einqVarChunking83.3.38 netcdf.inqVarChunkingVoctave-netcdf.html#netcdf_002einqVarDeflate63.3.39 netcdf.inqVarDeflatePoctave-netcdf.html#netcdf_002einqVarFill03.3.40 netcdf.inqVarFill\octave-netcdf.html#netcdf_002einqVarFletcher32<3.3.41 netcdf.inqVarFletcher32Loctave-netcdf.html#netcdf_002einqVarID,3.3.42 netcdf.inqVarIDNoctave-netcdf.html#netcdf_002einqVarIDs.3.3.43 netcdf.inqVarIDsJoctave-netcdf.html#netcdf_002einqVlen*3.3.44 netcdf.inqVlenDoctave-netcdf.html#netcdf_002eopen$3.3.45 netcdf.openHoctave-netcdf.html#netcdf_002eputAtt(3.3.46 netcdf.putAttHoctave-netcdf.html#netcdf_002eputVar(3.3.47 netcdf.putVarFoctave-netcdf.html#netcdf_002ereDef&3.3.48 netcdf.reDefNoctave-netcdf.html#netcdf_002erenameAtt.3.3.49 netcdf.renameAttNoctave-netcdf.html#netcdf_002erenameDim.3.3.50 netcdf.renameDimNoctave-netcdf.html#netcdf_002erenameVar.3.3.51 netcdf.renameVarVoctave-netcdf.html#netcdf_002esetChunkCache63.3.52 netcdf.setChunkCache\octave-netcdf.html#netcdf_002esetDefaultFormat<3.3.53 netcdf.setDefaultFormatJoctave-netcdf.html#netcdf_002esetFill*3.3.54 netcdf.setFillDoctave-netcdf.html#netcdf_002esync$3.3.55 netcdf.syncpoctave-netcdf.html#Import-functions-_0028Deprecated_0029B3.4 Import functions (Deprecated)Hoctave-netcdf.html#import_005fnetcdf&3.4.1 import_netcdf@octave-netcdf.html#Test-function"3.5 Test functionDoctave-netcdf.html#test_005fnetcdf"3.5.1 test_netcdf ỲæĐº¤ˆpR.â¸h@ à ª z >  ́ Ä œ f 4 ø Đ ® † Z *  Ö ¨ z B  Ú ¦ | L "î¼”\&öº`6êœn@Ü vR,Ü´Œd<Îb8èÀXổª~N&ú̀,Y- 5netcdf.inqDimIDsnetcdf_002einqDimIDs*X+ 3netcdf.inqDimIDnetcdf_002einqDimID&W' /netcdf.inqDimnetcdf_002einqDim.V/ 7netcdf.inqAttNamenetcdf_002einqAttName*U+ 3netcdf.inqAttIDnetcdf_002einqAttID&T' /netcdf.inqAttnetcdf_002einqAtt S! )netcdf.inqnetcdf_002einq&R' /netcdf.getVarnetcdf_002egetVar:Q; Cnetcdf.getConstantNamesnetcdf_002egetConstantNames0P1 9netcdf.getConstantnetcdf_002egetConstant4O5 =netcdf.getChunkCachenetcdf_002egetChunkCache&N' /netcdf.getAttnetcdf_002egetAtt&M' /netcdf.endDefnetcdf_002eendDef&L' /netcdf.delAttnetcdf_002edelAtt(K) 1netcdf.defVlennetcdf_002edefVlen:J; Cnetcdf.defVarFletcher32netcdf_002edefVarFletcher32.I/ 7netcdf.defVarFillnetcdf_002edefVarFill4H5 =netcdf.defVarDeflatenetcdf_002edefVarDeflate6G7 ?netcdf.defVarChunkingnetcdf_002edefVarChunking&F' /netcdf.defVarnetcdf_002edefVar&E' /netcdf.defGrpnetcdf_002edefGrp&D' /netcdf.defDimnetcdf_002edefDim&C' /netcdf.createnetcdf_002ecreate(B) 1netcdf.copyAttnetcdf_002ecopyAtt$A% -netcdf.closenetcdf_002eclose$@% -netcdf.abortnetcdf_002eabort"?# +netcdf_syncnetcdf_005fsync(>) 1netcdf_setFillnetcdf_005fsetFill:=; Cnetcdf_setDefaultFormatnetcdf_005fsetDefaultFormat4<5 =netcdf_setChunkCachenetcdf_005fsetChunkCache,;- 5netcdf_renameVarnetcdf_005frenameVar,:- 5netcdf_renameDimnetcdf_005frenameDim,9- 5netcdf_renameAttnetcdf_005frenameAtt$8% -netcdf_reDefnetcdf_005freDef&7' /netcdf_putVarnetcdf_005fputVar&6' /netcdf_putAttnetcdf_005fputAtt"5# +netcdf_opennetcdf_005fopen(4) 1netcdf_inqVlennetcdf_005finqVlen,3- 5netcdf_inqVarIDsnetcdf_005finqVarIDs*2+ 3netcdf_inqVarIDnetcdf_005finqVarID:1; Cnetcdf_inqVarFletcher32netcdf_005finqVarFletcher32.0/ 7netcdf_inqVarFillnetcdf_005finqVarFill4/5 =netcdf_inqVarDeflatenetcdf_005finqVarDeflate6.7 ?netcdf_inqVarChunkingnetcdf_005finqVarChunking&-' /netcdf_inqVarnetcdf_005finqVar0,1 9netcdf_inqUserTypenetcdf_005finqUserType2+3 ;netcdf_inqUnlimDimsnetcdf_005finqUnlimDims(*) 1netcdf_inqNcidnetcdf_005finqNcid.)/ 7netcdf_inqLibVersnetcdf_005finqLibVers(() 1netcdf_inqGrpsnetcdf_005finqGrps2'3 ;netcdf_inqGrpParentnetcdf_005finqGrpParent6&7 ?netcdf_inqGrpNameFullnetcdf_005finqGrpNameFull.%/ 7netcdf_inqGrpNamenetcdf_005finqGrpName6$7 ?netcdf_inqGrpFullNcidnetcdf_005finqGrpFullNcid,#- 5netcdf_inqFormatnetcdf_005finqFormat,"- 5netcdf_inqDimIDsnetcdf_005finqDimIDs*!+ 3netcdf_inqDimIDnetcdf_005finqDimID& ' /netcdf_inqDimnetcdf_005finqDim./ 7netcdf_inqAttNamenetcdf_005finqAttName*+ 3netcdf_inqAttIDnetcdf_005finqAttID&' /netcdf_inqAttnetcdf_005finqAtt ! )netcdf_inqnetcdf_005finq&' /netcdf_getVarnetcdf_005fgetVar:; Cnetcdf_getConstantNamesnetcdf_005fgetConstantNames01 9netcdf_getConstantnetcdf_005fgetConstant45 =netcdf_getChunkCachenetcdf_005fgetChunkCache&' /netcdf_getAttnetcdf_005fgetAtt&' /netcdf_endDefnetcdf_005fendDef&' /netcdf_delAttnetcdf_005fdelAtt() 1netcdf_defVlennetcdf_005fdefVlen:; Cnetcdf_defVarFletcher32netcdf_005fdefVarFletcher32./ 7netcdf_defVarFillnetcdf_005fdefVarFill45 =netcdf_defVarDeflatenetcdf_005fdefVarDeflate67 ?netcdf_defVarChunkingnetcdf_005fdefVarChunking&' /netcdf_defVarnetcdf_005fdefVar&' /netcdf_defGrpnetcdf_005fdefGrp& ' /netcdf_defDimnetcdf_005fdefDim& ' /netcdf_createnetcdf_005fcreate( ) 1netcdf_copyAttnetcdf_005fcopyAtt$ % -netcdf_closenetcdf_005fclose$ % -netcdf_abortnetcdf_005fabort"' 'ncwriteschemancwriteschema! !ncwriteattncwriteatt ncwritencwrite ncreadattncreadatt ncreadncread ncinfoncinfo ncdispncdisp nccreatenccreate  ^̉j2₫Ô¤zF ́ ´ ~ N  æ ¸ j B  ô Æ ˜ j 4 ø Î ª ‚ ^"x# +test_netcdftest_005fnetcdf&w' /import_netcdfimport_005fnetcdf"v# +netcdf.syncnetcdf_002esync(u) 1netcdf.setFillnetcdf_002esetFill:t; Cnetcdf.setDefaultFormatnetcdf_002esetDefaultFormat4s5 =netcdf.setChunkCachenetcdf_002esetChunkCache,r- 5netcdf.renameVarnetcdf_002erenameVar,q- 5netcdf.renameDimnetcdf_002erenameDim,p- 5netcdf.renameAttnetcdf_002erenameAtt$o% -netcdf.reDefnetcdf_002ereDef&n' /netcdf.putVarnetcdf_002eputVar&m' /netcdf.putAttnetcdf_002eputAtt"l# +netcdf.opennetcdf_002eopen(k) 1netcdf.inqVlennetcdf_002einqVlen,j- 5netcdf.inqVarIDsnetcdf_002einqVarIDs*i+ 3netcdf.inqVarIDnetcdf_002einqVarID:h; Cnetcdf.inqVarFletcher32netcdf_002einqVarFletcher32.g/ 7netcdf.inqVarFillnetcdf_002einqVarFill4f5 =netcdf.inqVarDeflatenetcdf_002einqVarDeflate6e7 ?netcdf.inqVarChunkingnetcdf_002einqVarChunking&d' /netcdf.inqVarnetcdf_002einqVar0c1 9netcdf.inqUserTypenetcdf_002einqUserType2b3 ;netcdf.inqUnlimDimsnetcdf_002einqUnlimDims(a) 1netcdf.inqNcidnetcdf_002einqNcid.`/ 7netcdf.inqLibVersnetcdf_002einqLibVers(_) 1netcdf.inqGrpsnetcdf_002einqGrps2^3 ;netcdf.inqGrpParentnetcdf_002einqGrpParent6]7 ?netcdf.inqGrpNameFullnetcdf_002einqGrpNameFull.\/ 7netcdf.inqGrpNamenetcdf_002einqGrpName6[7 ?netcdf.inqGrpFullNcidnetcdf_002einqGrpFullNcid,Z- 5netcdf.inqFormatnetcdf_002einqFormatnetcdf-1.0.17/doc/octave-netcdf.qhc0000644000000000000000000035000014502076114015213 0ustar0000000000000000SQLite format 3@ ##.c ²¨†’$ º  w † ä h ó z ó H¾"¾fó| ¨b''tableVersionFilterVersionFilterCREATE TABLE VersionFilter (Version TEXT, FilterId INTEGER)n++tableComponentFilterComponentFilterCREATE TABLE ComponentFilter (ComponentName TEXT, FilterId INTEGER)u--tableComponentMappingComponentMappingCREATE TABLE ComponentMapping (ComponentId INTEGER, NamespaceId INTEGER)q))tableComponentTableComponentTableCREATE TABLE ComponentTable (ComponentId INTEGER PRIMARY KEY, Name TEXT)VtableFilterFilterCREATE TABLE Filter (FilterId INTEGER PRIMARY KEY, Name TEXT)b%%tableVersionTableVersionTableCREATE TABLE VersionTable (NamespaceId INTEGER, Version TEXT)))mtableTimeStampTableTimeStampTableCREATE TABLE TimeStampTable (NamespaceId INTEGER, FolderId INTEGER, FilePath TEXT, Size INTEGER, TimeStamp TEXT)551tableOptimizedFilterTableOptimizedFilterTableCREATE TABLE OptimizedFilterTable (NamespaceId INTEGER, FilterAttributeId INTEGER)(77otableFileAttributeSetTableFileAttributeSetTableCREATE TABLE FileAttributeSetTable (NamespaceId INTEGER, FilterAttributeSetId INTEGER, FilterAttributeId INTEGER) 33/tableContentsFilterTableContentsFilterTableCREATE TABLE ContentsFilterTable (FilterAttributeId INTEGER, ContentsId INTEGER )w --!tableIndexFilterTableIndexFilterTable CREATE TABLE IndexFilterTable (FilterAttributeId INTEGER, IndexId INTEGER)s ++tableFileFilterTableFileFilterTable CREATE TABLE FileFilterTable (FilterAttributeId INTEGER, FileId INTEGER)z ''3tableContentsTableContentsTable CREATE TABLE ContentsTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Data BLOB) !!‚ tableIndexTableIndexTable CREATE TABLE IndexTable (Id INTEGER PRIMARY KEY, Name TEXT, Identifier TEXT, NamespaceId INTEGER, FileId INTEGER, Anchor TEXT)''MtableFileNameTableFileNameTable CREATE TABLE FileNameTable (FolderId INTEGER, Name TEXT, FileId INTEGER PRIMARY KEY, Title TEXT)e'' tableSettingsTableSettingsTableCREATE TABLE SettingsTable (Key TEXT PRIMARY KEY, Value BLOB )9M'indexsqlite_autoindex_SettingsTable_1SettingsTableh##tableFilterTableFilterTableCREATE TABLE FilterTable (NameId INTEGER, FilterAttributeId INTEGER )l++tableFilterNameTableFilterNameTableCREATE TABLE FilterNameTable (Id INTEGER PRIMARY KEY, Name TEXT ){55tableFilterAttributeTableFilterAttributeTableCREATE TABLE FilterAttributeTable (Id INTEGER PRIMARY KEY, Name TEXT )u##1tableFolderTableFolderTableCREATE TABLE FolderTable (Id INTEGER PRIMARY KEY, NamespaceId INTEGER, Name TEXT )x))+tableNamespaceTableNamespaceTableCREATE TABLE NamespaceTable (Id INTEGER PRIMARY KEY, Name TEXT, FilePath TEXT ) ËË3I/octave.community.octave-netcdfoctave-netcdf.qch ÷÷ doc    #Ô¶{fS>#9FullTextSearchFallback%CreationTimee|î) HideAddressBar- EnableAddressBarA EnableDocumentationManager; HideFilterFunctionality? EnableFilterFunctionality*-;LastRegisterTime2023-09-18T12:38:06.972 ?Z~“Î?k²́9FullTextSearchFallback%CreationTime)HideAddressBar-EnableAddressBarAEnableDocumentationManager;HideFilterFunctionality?EnableFilterFunctionality- LastRegisterTime ‘º‘' //octave-netcdf.cssoctave-netcdf.cssD 1goctave-netcdf.htmlOctave NetCDF - A NetCDF interface for Octaveûû[  đ đ‹x ‚—p$octave-netcdf.htmlhOctave NetCDF - A NetCDF interface for Octave ManualRoctave-netcdf.html#Installing-and-loading01 Installing and loadingPoctave-netcdf.html#Online-Direct-install21.1 Online Direct installNoctave-netcdf.html#Off_002dline-install(1.2 Off-line install4octave-netcdf.html#Loading1.3 LoadingNoctave-netcdf.html#Basic-Usage-Overview,2 Basic Usage OverviewVoctave-netcdf.html#High-level-functionality82.1 High level functionalityToctave-netcdf.html#Low-level-functionality62.2 Low level functionalityJoctave-netcdf.html#Function-Reference(3 Function ReferenceVoctave-netcdf.html#High_002dlevel-functions03.1 High-level functions6octave-netcdf.html#nccreate3.1.1 nccreate2octave-netcdf.html#ncdisp3.1.2 ncdi      ÑÑ- /3octave-netcdf.qchĐ2023-09-18T12:38:06 ûû  øødoc ûû   [Áç̉½¨vY6́ĂœuN' đ » Œ Q (  Ú ³ ~ M  ë Ê £ x I " ÷ Ê f 7 Í ¤ u L èÁU&ëÀ“jG ùÔ§zMƯ´‘lG÷Đ©‚K笃\5Ù¨mF%₫Ó¤}R%øÁ5[7 ?netcdf.inqGrpFullNcidnetcdf_002einqGrpFullNcid+Z- 5netcdf.inqFormatnetcdf_002einqFormat+Y- 5netcdf.inqDimIDsnetcdf_002einqDimIDs)X+ 3netcdf.inqDimIDnetcdf_002einqDimID%W' /netcdf.inqDimnetcdf_002einqDim-V/ 7netcdf.inqAttNamenetcdf_002einqAttName)U+ 3netcdf.inqAttIDnetcdf_002einqAttID%T' /netcdf.inqAttnetcdf_002einqAttS! )netcdf.inqnetcdf_002einq%R' /netcdf.getVarnetcdf_002egetVar9Q; Cnetcdf.getConstantNamesnetcdf_002egetConstantNames/P1 9netcdf.getConstantnetcdf_002egetConstant3O5 =netcdf.getChunkCachenetcdf_002egetChunkCache%N' /netcdf.getAttnetcdf_002egetAtt%M' /netcdf.endDefnetcdf_002eendDef%L' /netcdf.delAttnetcdf_002edelAtt'K) 1netcdf.defVlennetcdf_002edefVlen9J; Cnetcdf.defVarFletcher32netcdf_002edefVarFletcher32-I/ 7netcdf.defVarFillnetcdf_002edefVarFill3H5 =netcdf.defVarDeflatenetcdf_002edefVarDeflate5G7 ?netcdf.defVarChunkingnetcdf_002edefVarChunking%F' /netcdf.defVarnetcdf_002edefVar%E' /netcdf.defGrpnetcdf_002edefGrp%D' /netcdf.defDimnetcdf_002edefDim%C' /netcdf.createnetcdf_002ecreate'B) 1netcdf.copyAttnetcdf_002ecopyAtt#A% -netcdf.closenetcdf_002eclose#@% -netcdf.abortnetcdf_002eabort!?# +netcdf_syncnetcdf_005fsync'>) 1netcdf_setFillnetcdf_005fsetFill9=; Cnetcdf_setDefaultFormatnetcdf_005fsetDefaultFormat3<5 =netcdf_setChunkCachenetcdf_005fsetChunkCache+;- 5netcdf_renameVarnetcdf_005frenameVar+:- 5netcdf_renameDimnetcdf_005frenameDim+9- 5netcdf_renameAttnetcdf_005frenameAtt#8% -netcdf_reDefnetcdf_005freDef%7' /netcdf_putVarnetcdf_005fputVar%6' /netcdf_putAttnetcdf_005fputAtt!5# +netcdf_opennetcdf_005fopen'4) 1netcdf_inqVlennetcdf_005finqVlen+3- 5netcdf_inqVarIDsnetcdf_005finqVarIDs)2+ 3netcdf_inqVarIDnetcdf_005finqVarID91; Cnetcdf_inqVarFletcher32netcdf_005finqVarFletcher32-0/ 7netcdf_inqVarFillnetcdf_005finqVarFill3/5 =netcdf_inqVarDeflatenetcdf_005finqVarDeflate5.7 ?netcdf_inqVarChunkingnetcdf_005finqVarChunking%-' /netcdf_inqVarnetcdf_005finqVar/,1 9netcdf_inqUserTypenetcdf_005finqUserType1+3 ;netcdf_inqUnlimDimsnetcdf_005finqUnlimDims'*) 1netcdf_inqNcidnetcdf_005finqNcid-)/ 7netcdf_inqLibVersnetcdf_005finqLibVers'() 1netcdf_inqGrpsnetcdf_005finqGrps1'3 ;netcdf_inqGrpParentnetcdf_005finqGrpParent5&7 ?netcdf_inqGrpNameFullnetcdf_005finqGrpNameFull-%/ 7netcdf_inqGrpNamenetcdf_005finqGrpName5$7 ?netcdf_inqGrpFullNcidnetcdf_005finqGrpFullNcid+#- 5netcdf_inqFormatnetcdf_005finqFormat+"- 5netcdf_inqDimIDsnetcdf_005finqDimIDs)!+ 3netcdf_inqDimIDnetcdf_005finqDimID% ' /netcdf_inqDimnetcdf_005finqDim-/ 7netcdf_inqAttNamenetcdf_005finqAttName)+ 3netcdf_inqAttIDnetcdf_005finqAttID%' /netcdf_inqAttnetcdf_005finqAtt! )netcdf_inqnetcdf_005finq%' /netcdf_getVarnetcdf_005fgetVar9; Cnetcdf_getConstantNamesnetcdf_005fgetConstantNames/1 9netcdf_getConstantnetcdf_005fgetConstant35 =netcdf_getChunkCachenetcdf_005fgetChunkCache%' /netcdf_getAttnetcdf_005fgetAtt%' /netcdf_endDefnetcdf_005fendDef%' /netcdf_delAttnetcdf_005fdelAtt') 1netcdf_defVlennetcdf_005fdefVlen9; Cnetcdf_defVarFletcher32netcdf_005fdefVarFletcher32-/ 7netcdf_defVarFillnetcdf_005fdefVarFill35 =netcdf_defVarDeflatenetcdf_005fdefVarDeflate57 ?netcdf_defVarChunkingnetcdf_005fdefVarChunking%' /netcdf_defVarnetcdf_005fdefVar%' /netcdf_defGrpnetcdf_005fdefGrp% ' /netcdf_defDimnetcdf_005fdefDim% ' /netcdf_createnetcdf_005fcreate' ) 1netcdf_copyAttnetcdf_005fcopyAtt# % -netcdf_closenetcdf_005fclose# % -netcdf_abortnetcdf_005fabort!' 'ncwriteschemancwriteschema! !ncwriteattncwriteatt ncwritencwrite ncreadattncreadatt ncreadncread ncinfoncinfo ncdispncdisp nccreatenccreate  áÑg>泂[$ ï À … Z -  á º “ n A  ç ² w N +  á!x# +test_netcdftest_005fnetcdf%w' /import_netcdfimport_005fnetcdf!v# +netcdf.syncnetcdf_002esync'u) 1netcdf.setFillnetcdf_002esetFill9t; Cnetcdf.setDefaultFormatnetcdf_002esetDefaultFormat3s5 =netcdf.setChunkCachenetcdf_002esetChunkCache+r- 5netcdf.renameVarnetcdf_002erenameVar+q- 5netcdf.renameDimnetcdf_002erenameDim+p- 5netcdf.renameAttnetcdf_002erenameAtt#o% -netcdf.reDefnetcdf_002ereDef%n' /netcdf.putVarnetcdf_002eputVar%m' /netcdf.putAttnetcdf_002eputAtt!l# +netcdf.opennetcdf_002eopen'k) 1netcdf.inqVlennetcdf_002einqVlen+j- 5netcdf.inqVarIDsnetcdf_002einqVarIDs)i+ 3netcdf.inqVarIDnetcdf_002einqVarID9h; Cnetcdf.inqVarFletcher32netcdf_002einqVarFletcher32-g/ 7netcdf.inqVarFillnetcdf_002einqVarFill3f5 =netcdf.inqVarDeflatenetcdf_002einqVarDeflate5e7 ?netcdf.inqVarChunkingnetcdf_002einqVarChunking%d' /netcdf.inqVarnetcdf_002einqVar/c1 9netcdf.inqUserTypenetcdf_002einqUserType1b3 ;netcdf.inqUnlimDimsnetcdf_002einqUnlimDims'a) 1netcdf.inqNcidnetcdf_002einqNcid-`/ 7netcdf.inqLibVersnetcdf_002einqLibVers'_) 1netcdf.inqGrpsnetcdf_002einqGrps1^3 ;netcdf.inqGrpParentnetcdf_002einqGrpParent5]7 ?netcdf.inqGrpNameFullnetcdf_002einqGrpNameFull-\/ 7netcdf.inqGrpNamenetcdf_002einqGrpNamesp2octave-netcdf.html#ncinfo3.1.3 ncinfo2octave-netcdf.html#ncread3.1.4 ncread8octave-netcdf.html#ncreadatt3.1.5 ncreadatt4octave-netcdf.html#ncwrite3.1.6 ncwrite:octave-netcdf.html#ncwriteatt 3.1.7 ncwriteatt@octave-netcdf.html#ncwriteschema&3.1.8 ncwriteschema~octave-netcdf.html#Low_002dlevel-functions-_0028Deprecated_0029H3.2 Low-level functions (Deprecated)Foctave-netcdf.html#netcdf_005fabort$3.2.1 netcdf_abortFoctave-netcdf.html#netcdf_005fclose$3.2.2 netcdf_closeJoctave-netcdf.html#netcdf_005fcopyAtt(3.2.3 netcdf_copyAttHoctave-netcdf.html#netcdf_005fcreate&3.2.4 netcdf_createHoctave-netcdf.html#netcdf_005fdefDim&3.2.5 netcdf_defDimHoctave-netcdf.html#netcdf_005fdefGrp&3.2.6 netcdf_defGrpHoctave-netcdf.html#netcdf_005fdefVar&3.2.7 netcdf_defVarXoctave-netcdf.html#netcdf_005fdefVarChunking63.2.8 netcdf_defVarChunkingVoctave-netcdf.html#netcdf_005fdefVarDeflate43.2.9 netcdf_defVarDeflatePoctave-netcdf.html#netcdf_005fdefVarFill03.2.10 netcdf_defVarFill\octave-netcdf.html#netcdf_005fdefVarFletcher32<3.2.11 netcdf_defVarFletcher32Joctave-netcdf.html#netcdf_005fdefVlen*3.2.12 netcdf_defVlenHoctave-netcdf.html#netcdf_005fdelAtt(3.2.13 netcdf_delAttHoctave-netcdf.html#netcdf_005fendDef(3.2.14 netcdf_endDefHoctave-netcdf.html#netcdf_005fgetAtt(3.2.15 netcdf_getAttVoctave-netcdf.html#netcdf_005fgetChunkCache63.2.16 netcdf_getChunkCacheRoctave-netcdf.html#netcdf_005fgetConstant23.2.17 netcdf_getConstant\octave-netcdf.html#netcdf_005fgetConstantNames<3.2.18 netcdf_getConstantNamesHoctave-netcdf.html#netcdf_005fgetVar(3.2.19 netcdf_getVarBoctave-netcdf.html#netcdf_005finq"3.2.20 netcdf_inqHoctave-netcdf.html#netcdf_005finqAtt(3.2.21 netcdf_inqAttLoctave-netcdf.html#netcdf_005finqAttID,3.2.22 netcdf_inqAttIDPoctave-netcdf.html#netcdf_005finqAttName03.2.23 netcdf_inqAttNameHoctave-netcdf.html#netcdf_005finqDim(3.2.24 netcdf_inqDimLoctave-netcdf.html#netcdf_005finqDimID,3.2.25 netcdf_inqDimIDNoctave-netcdf.html#netcdf_005finqDimIDs.3.2.26 netcdf_inqDimIDsNoctave-netcdf.html#netcdf_005finqFormat.3.2.27 netcdf_inqFormatXoctave-netcdf.html#netcdf_005finqGrpFullNcid83.2.28 netcdf_inqGrpFullNcidPoctave-netcdf.html#netcdf_005finqGrpName03.2.29 netcdf_inqGrpNameXoctave-netcdf.html#netcdf_005finqGrpNameFull83.2.30 netcdf_inqGrpNameFullToctave-netcdf.html#netcdf_005finqGrpParent43.2.31 netcdf_inqGrpParentJoctave-netcdf.html#netcdf_005finqGrps*3.2.32 netcdf_inqGrpsPoctave-netcdf.html#netcdf_005finqLibVers03.2.33 netcdf_inqLibVersJoctave-netcdf.html#netcdf_005finqNcid*3.2.34 netcdf_inqNcidToctave-netcdf.html#netcdf_005finqUnlimDims43.2.35 netcdf_inqUnlimDimsRoctave-netcdf.html#netcdf_005finqUserType23.2.36 netcdf_inqUserTypeHoctave-netcdf.html#netcdf_005finqVar(3.2.37 netcdf_inqVarXoctave-netcdf.html#netcdf_005finqVarChunking83.2.38 netcdf_inqVarChunkingVoctave-netcdf.html#netcdf_005finqVarDeflate63.2.39 netcdf_inqVarDeflatePoctave-netcdf.html#netcdf_005finqVarFill03.2.40 netcdf_inqVarFill\octave-netcdf.html#netcdf_005finqVarFletcher32<3.2.41 netcdf_inqVarFletcher32Loctave-netcdf.html#netcdf_005finqVarID,3.2.42 netcdf_inqVarIDNoctave-netcdf.html#netcdf_005finqVarIDs.3.2.43 netcdf_inqVarIDsJoctave-netcdf.html#netcdf_005finqVlen*3.2.44 netcdf_inqVlenDoctave-netcdf.html#netcdf_005fopen$3.2.45 netcdf_openHoctave-netcdf.html#netcdf_005fputAtt(3.2.46 netcdf_putAttHoctave-netcdf.html#netcdf_005fputVar(3.2.47 netcdf_putVarFoctave-netcdf.html#netcdf_005freDef&3.2.48 netcdf_reDefNoctave-netcdf.html#netcdf_005frenameAtt.3.2.49 netcdf_renameAttNoctave-netcdf.html#netcdf_005frenameDim.3.2.50 netcdf_renameDimNoctave-netcdf.html#netcdf_005frenameVar.3.2.51 netcdf_renameVarVoctave-netcdf.html#netcdf_005fsetChunkCache63.2.52 netcdf_setChunkCache\octave-netcdf.html#netcdf_005fsetDefaultFormat<3.2.53 netcdf_setDefaultFormatJoctave-netcdf.html#netcdf_005fsetFill*3.2.54 netcdf_setFillDoctave-netcdf.html#netcdf_005fsync$3.2.55 netcdf_syncToctave-netcdf.html#Low_002dlevel-functions.3.3 Low-level functionsFoctave-netcdf.html#netcdf_002eabort$3.3.1 netcdf.abortFoctave-netcdf.html#netcdf_002eclose$3.3.2 netcdf.closeJoctave-netcdf.html#netcdf_002ecopyAtt(3.3.3 netcdf.copyAttHoctave-netcdf.html#netcdf_002ecreate&3.3.4 netcdf.createHoctave-netcdf.html#netcdf_002edefDim&3.3.5 netcdf.defDimHoctave-netcdf.html#netcdf_002edefGrp&3.3.6 netcdf.defGrpHoctave-netcdf.html#netcdf_002edefVar&3.3.7 netcdf.defVarXoctave-netcdf.html#netcdf_002edefVarChunking63.3.8 netcdf.defVarChunkingVoctave-netcdf.html#netcdf_002edefVarDeflate43.3.9 netcdf.defVarDeflatePoctave-netcdf.html#netcdf_002edefVarFill03.3.10 netcdf.defVarFill\octave-netcdf.html#netcdf_002edefVarFletcher32<3.3.11 netcdf.defVarFletcher32Joctave-netcdf.html#netcdf_002edefVlen*3.3.12 netcdf.defVlenHoctave-netcdf.html#netcdf_002edelAtt(3.3.13 netcdf.delAttHoctave-netcdf.html#netcdf_002eendDef(3.3.14 netcdf.endDefHoctave-netcdf.html#netcdf_002egetAtt(3.3.15 netcdf.getAttVoctave-netcdf.html#netcdf_002egetChunkCache63.3.16 netcdf.getChunkCacheRoctave-netcdf.html#netcdf_002egetConstant23.3.17 netcdf.getConstant\octave-netcdf.html#netcdf_002egetConstantNames<3.3.18 netcdf.getConstantNamesHoctave-netcdf.html#netcdf_002egetVar(3.3.19 netcdf.getVarBoctave-netcdf.html#netcdf_002einq"3.3.20 netcdf.inqHoctave-netcdf.html#netcdf_002einqAtt(3.3.21 netcdf.inqAttLoctave-netcdf.html#netcdf_002einqAttID,3.3.22 netcdf.inqAttIDPoctave-netcdf.html#netcdf_002einqAttName03.3.23 netcdf.inqAttNameHoctave-netcdf.html#netcdf_002einqDim(3.3.24 netcdf.inqDimLoctave-netcdf.html#netcdf_002einqDimID,3.3.25 netcdf.inqDimIDNoctave-netcdf.html#netcdf_002einqDimIDs.3.3.26 netcdf.inqDimIDsNoctave-netcdf.html#netcdf_002einqFormat.3.3.27 netcdf.inqFormatXoctave-netcdf.html#netcdf_002einqGrpFullNcid83.3.28 netcdf.inqGrpFullNcidPoctave-netcdf.html#netcdf_002einqGrpName03.3.29 netcdf.inqGrpNameXoctave-netcdf.html#netcdf_002einqGrpNameFull83.3.30 netcdf.inqGrpNameFullToctave-netcdf.html#netcdf_002einqGrpParent43.3.31 netcdf.inqGrpParentJoctave-netcdf.html#netcdf_002einqGrps*3.3.32 netcdf.inqGrpsPoctave-netcdf.html#netcdf_002einqLibVers03.3.33 netcdf.inqLibVersJoctave-netcdf.html#netcdf_002einqNcid*3.3.34 netcdf.inqNcidToctave-netcdf.html#netcdf_002einqUnlimDims43.3.35 netcdf.inqUnlimDimsRoctave-netcdf.html#netcdf_002einqUserType23.3.36 netcdf.inqUserTypeHoctave-netcdf.html#netcdf_002einqVar(3.3.37 netcdf.inqVarXoctave-netcdf.html#netcdf_002einqVarChunking83.3.38 netcdf.inqVarChunkingVoctave-netcdf.html#netcdf_002einqVarDeflate63.3.39 netcdf.inqVarDeflatePoctave-netcdf.html#netcdf_002einqVarFill03.3.40 netcdf.inqVarFill\octave-netcdf.html#netcdf_002einqVarFletcher32<3.3.41 netcdf.inqVarFletcher32Loctave-netcdf.html#netcdf_002einqVarID,3.3.42 netcdf.inqVarIDNoctave-netcdf.html#netcdf_002einqVarIDs.3.3.43 netcdf.inqVarIDsJoctave-netcdf.html#netcdf_002einqVlen*3.3.44 netcdf.inqVlenDoctave-netcdf.html#netcdf_002eopen$3.3.45 netcdf.openHoctave-netcdf.html#netcdf_002eputAtt(3.3.46 netcdf.putAttHoctave-netcdf.html#netcdf_002eputVar(3.3.47 netcdf.putVarFoctave-netcdf.html#netcdf_002ereDef&3.3.48 netcdf.reDefNoctave-netcdf.html#netcdf_002erenameAtt.3.3.49 netcdf.renameAttNoctave-netcdf.html#netcdf_002erenameDim.3.3.50 netcdf.renameDimNoctave-netcdf.html#netcdf_002erenameVar.3.3.51 netcdf.renameVarVoctave-netcdf.html#netcdf_002esetChunkCache63.3.52 netcdf.setChunkCache\octave-netcdf.html#netcdf_002esetDefaultFormat<3.3.53 netcdf.setDefaultFormatJoctave-netcdf.html#netcdf_002esetFill*3.3.54 netcdf.setFillDoctave-netcdf.html#netcdf_002esync$3.3.55 netcdf.syncpoctave-netcdf.html#Import-functions-_0028Deprecated_0029B3.4 Import functions (Deprecated)Hoctave-netcdf.html#import_005fnetcdf&3.4.1 import_netcdf@octave-netcdf.html#Test-function"3.5 Test functionDoctave-netcdf.html#test_005fnetcdf"3.5.1 test_netcdfnetcdf-1.0.17/doc/octave-netcdf.texi0000644000000000000000000001334214502076114015416 0ustar0000000000000000\input texinfo @c -*-texinfo-*- @c Copyright (c) 2022-2023, John Donoghue @c Octave NetCDF - A NetCDF interface for Octave @c For manually generating the documentation use @c LANGUAGE=en makeinfo --html --no-split octave-netcdf.texi @c %*** Start of HEADER @setfilename octave-netcdf.info @settitle Octave NetCDF - A NetCDF interface for Octave @afourpaper @paragraphindent 0 @finalout @set COPYRIGHT_DATE 2022-2023 @c @afourwide @c %*** End of the HEADER @include version.texi @include macros.texi @c %*** Start of TITLEPAGE @titlepage @c @center @image{octave-netcdf-logo} @vskip 0pt plus 1filll @title Octave NetCDF Toolkit @value{VERSION} @subtitle NetCDF functions for @acronym{GNU} Octave. @author John Donoghue @page @vskip 0pt plus 1filll Copyright @copyright{} @value{COPYRIGHT_DATE} John Donoghue Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the same conditions as for modified versions. @page @heading Distribution The @acronym{GNU} Octave NetCDF package is @dfn{free} software. Free software is a matter of the users' freedom to run, copy, distribute, study, change and improve the software. This means that everyone is free to use it and free to redistribute it on certain conditions. The @acronym{GNU} Octave NetCDF package is not, however, in the public domain. It is copyrighted and there are restrictions on its distribution, but the restrictions are designed to ensure that others will have the same freedom to use and redistribute Octave that you have. The precise conditions can be found in the @acronym{GNU} General Public License that comes with the @acronym{GNU} Octave NetCDF package and that also appears in @ref{Copying}. To download a copy of the @acronym{GNU} Octave NetCDF package, please visit @url{http://octave.sourceforge.net/netcdf/}. @end titlepage @c %*** End of TITLEPAGE @dircategory Math @direntry * NetCDF for Octave: (netcdf). NetCDF Toolbox for Octave @end direntry @c %*** Start of BODY @contents @ifnottex @node Top @top Introduction The Octave NetCDF toolkit is a set of NetCDF routines for GNU Octave @end ifnottex @menu * Installing and loading:: Installing and loading the toolkit * Basic Usage Overview:: Basic Usage Overview * Function Reference:: Toolkit functions * Copying:: Copying * Index:: Index @end menu @c ------------------------------------------------------------------------- @node Installing and loading @chapter Installing and loading @cindex Installing and loading The toolkit must be installed and then loaded to be used. It can be installed in @acronym{GNU} Octave directly from the website, or can be installed in an off-line mode via a downloaded tarball. The toolkit has a dependency on the netcdf library (@url{https://www.unidata.ucar.edu/software/netcdf/}), so it must be installed in order to successfully install the toolkit. The toolkit must be then be loaded once per each @acronym{GNU} Octave session in order to use its functionality. @section Online Direct install @cindex Online install With an internet connection available, the package can be installed from octave-forge using the following command within @acronym{GNU} Octave: @example pkg install -forge netcdf @end example The latest released version of the toolkit will be downloaded and installed. @section Off-line install @cindex Off-line install With the toolkit package already downloaded, and in the current directory when running @acronym{GNU} Octave, the package can be installed using the following command within @acronym{GNU} Octave: @example pkg install netcdf-@value{VERSION}.tar.gz @end example @section Loading @cindex Loading Regardless of the method of installing the toolkit, in order to use its functions, the toolkit must be loaded using the pkg load command: @example pkg load netcdf @end example The toolkit must be loaded on each @acronym{GNU} Octave session. @c ------------------------------------------------------------------------- @node Basic Usage Overview @chapter Basic Usage Overview @cindex Basic Usage Overview The toolkit provides high and level functionality for reading and writing NetCDF format files. @section High level functionality @cindex High level functionality The toolkit provides the following high level functions: @itemize @bullet @item nccreate @item ncdisp @item ncinfo @item ncreadatt @item ncread @item ncwriteatt @item ncwrite @item ncwriteschema @end itemize @section Low level functionality @cindex Low level functionality The package aims to implement the netcdf interface of MATLAB in GNU Octave, however @acronym{GNU} Octave does not support the import function. Functions can be used in netcdf_functionname format, or an emulated import can be done using the import_netcdf script so that functions can be used in netcdf.functionname format. @c ------------------------------------------------------------------------- @node Function Reference @chapter Function Reference @cindex Function Reference The functions currently available in the toolkit are described below; @include functions.texi @c ------------------------------------------------------------------------- @include gpl.texi @c ------------------------------------------------------------------------- @node Index @unnumbered Index @printindex cp @bye netcdf-1.0.17/doc/version.texi0000644000000000000000000000013414502076114014354 0ustar0000000000000000@c autogenerated from Makefile @set VERSION 1.0.17 @set PACKAGE netcdf @set DATE 2023-09-18 netcdf-1.0.17/inst/0000755000000000000000000000000014502076114012206 5ustar0000000000000000netcdf-1.0.17/inst/+netcdf/0000755000000000000000000000000014502076114013524 5ustar0000000000000000netcdf-1.0.17/inst/+netcdf/abort.m0000644000000000000000000000177214502076114015020 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.abort(@var{ncid}) ## Aborts all changes since the last time the dataset entered in define mode. ## @end deftypefn function varargout = abort(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_abort (varargin{:}); else netcdf_abort (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/close.m0000644000000000000000000000173514502076114015015 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.close(@var{ncid}) ## Close the NetCDF file with the id @var{ncid}. ## @end deftypefn function varargout = close(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_close (varargin{:}); else netcdf_close (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/copyAtt.m0000644000000000000000000000244414502076114015331 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) ## Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} ## to the variable @var{varid_out} in the data set @var{ncid_out}. ## To copy a global attribute use netcdf.getConstant("global") for @var{varid} or @var{varid_out}. ## @seealso{netcdf.getAtt,netcdf.getConstant} ## @end deftypefn function varargout = copyAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_copyAtt (varargin{:}); else netcdf_copyAtt (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/create.m0000644000000000000000000000315714502076114015153 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{ncid} =} netcdf.create(@var{filename},@var{mode}) ## Creates the file named @var{filename} in the mode @var{mode} which can have the ## following values: ## "clobber" (overwrite existing files), ## "noclobber" (prevent to overwrite existing files) ## "64bit_offset" (use the 64bit-offset format), ## "netcdf4" (use the NetCDF4, i.e. HDF5 format) or ## "share" (concurrent reading of the dataset). ## @var{mode} can also be the numeric value return by netcdf.getConstant. In the later-case it can be combined with a bitwise-or. ## @end deftypefn ## @subsubheading Example ## @example ## mode = bitor(netcdf.getConstant("classic_model"), ... ## netcdf.getConstant("netcdf4")); ## ncid = netcdf.create("test.nc",mode); ## @end example function varargout = create(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_create (varargin{:}); else netcdf_create (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defDim.m0000644000000000000000000000213414502076114015072 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{dimid} =} netcdf.defDim(@var{ncid},@var{name},@var{len}) ## Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned. ## @end deftypefn function varargout = defDim(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defDim (varargin{:}); else netcdf_defDim (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defGrp.m0000644000000000000000000000201214502076114015104 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{new_ncid} =} netcdf.defGrp(@var{ncid},@var{name}) ## Define a group in a NetCDF file. ## @seealso{netcdf.inqGrps} ## @end deftypefn function varargout = defGrp(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defGrp (varargin{:}); else netcdf_defGrp (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defVar.m0000644000000000000000000000255314502076114015116 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{varid} = } netcdf.defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) ## Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. ## @end deftypefn function varargout = defVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVar (varargin{:}); else netcdf_defVar (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defVarChunking.m0000644000000000000000000000240314502076114016577 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) ## Define the chunking settings of NetCDF variable @var{varid}. ## If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. ## If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. ## @end deftypefn function varargout = defVarChunking(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarChunking (varargin{:}); else netcdf_defVarChunking (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defVarDeflate.m0000644000000000000000000000236714502076114016406 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) ## Define the compression settings NetCDF variable @var{varid}. ## If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). ## @end deftypefn function varargout = defVarDeflate(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarDeflate (varargin{:}); else netcdf_defVarDeflate (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defVarFill.m0000644000000000000000000000233214502076114015720 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) ## Define the fill-value settings of the NetCDF variable @var{varid}. ## If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. ## @end deftypefn function varargout = defVarFill(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarFill (varargin{:}); else netcdf_defVarFill (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defVarFletcher32.m0000644000000000000000000000241214502076114016732 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) ## Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string "FLETCHER32", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is "NOCHECKSUM", then checksums will be disabled. ## @end deftypefn function varargout = defVarFletcher32(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVarFletcher32 (varargin{:}); else netcdf_defVarFletcher32 (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/defVlen.m0000644000000000000000000000251314502076114015266 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{varid} = } netcdf.defVlen(@var{ncid},@var{typename},@var{basetype}) ## Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be "byte", "ubyte", "short", "ushort", "int", "uint", "int64", "uint64", "float", "double", "char" or the corresponding number as returned by netcdf.getConstant. The new data type id is returned. ## @end deftypefn function varargout = defVlen(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_defVlen (varargin{:}); else netcdf_defVlen (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/delAtt.m0000644000000000000000000000225114502076114015117 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.delAtt(@var{ncid},@var{varid},@var{name}) ## Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. ## To delete a global attribute use netcdf.getConstant("global") for @var{varid}. ## @seealso{netcdf.defAtt,netcdf.getConstant} ## @end deftypefn function varargout = delAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_delAtt (varargin{:}); else netcdf_delAtt (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/endDef.m0000644000000000000000000000174214502076114015073 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.endDef (@var{ncid}) ## Leaves define-mode of NetCDF file @var{ncid}. ## @end deftypefn function varargout = endDef(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_endDef (varargin{:}); else netcdf_endDef (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/getAtt.m0000644000000000000000000000234614502076114015137 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{data} =} netcdf.getAtt (@var{ncid},@var{varid},@var{name}) ## Get the value of a NetCDF attribute. ## This function returns the value of the attribute called @var{name} of the variable ## @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.putAtt} ## @end deftypefn function varargout = getAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getAtt (varargin{:}); else netcdf_getAtt (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/getChunkCache.m0000644000000000000000000000205714502076114016402 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf.getChunkCache() ## Gets the default chunk cache settings in the HDF5 library. ## @end deftypefn function varargout = getChunkCache(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getChunkCache (varargin{:}); else netcdf_getChunkCache (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/getConstant.m0000644000000000000000000000206214502076114016173 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{value} =} netcdf.getConstant(@var{name}) ## Returns the value of a NetCDF constant called @var{name}. ## @seealso{netcdf.getConstantNames} ## @end deftypefn function varargout = getConstant(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getConstant (varargin{:}); else netcdf_getConstant (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/getConstantNames.m0000644000000000000000000000200414502076114017153 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{value} =} netcdf.getConstantNames() ## Returns a list of all constant names. ## @end deftypefn function varargout = getConstantNames(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getConstantNames (varargin{:}); else netcdf_getConstantNames (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/getVar.m0000644000000000000000000000315214502076114015133 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid}) ## @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start}) ## @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count}) ## @deftypefnx {} {@var{data} =} netcdf.getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) ## Get the data from a NetCDF variable. ## The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. ## @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), ## @var{count} is the number of elements of to be written along each dimension (default all elements) ## and @var{stride} is the sampling interval. ## @end deftypefn function varargout = getVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_getVar (varargin{:}); else netcdf_getVar (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inq.m0000644000000000000000000000250714502076114014475 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf.inq(@var{ncid}) ## Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). ## If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use ## the function netcdf.inqUnlimDims as multiple unlimite dimension exists. ## @end deftypefn function varargout = inq(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inq (varargin{:}); else netcdf_inq (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqAtt.m0000644000000000000000000000204114502076114015137 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{xtype},@var{len}] = } netcdf.inqAtt(@var{ncid},@var{varid},@var{name}) ## Get attribute type and length. ## @seealso{netcdf.inqAttName} ## @end deftypefn function varargout = inqAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqAtt (varargin{:}); else netcdf_inqAtt (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqAttID.m0000644000000000000000000000232114502076114015355 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{attnum} =} netcdf.inqAttID(@var{ncid},@var{varid},@var{attname}) ## Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. ## For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.inqAttName} ## @end deftypefn function varargout = inqAttID(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqAttID (varargin{:}); else netcdf_inqAttID (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqAttName.m0000644000000000000000000000240114502076114015740 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{name} =} netcdf.inqAttName (@var{ncid},@var{varid},@var{attnum}) ## Get the name of a NetCDF attribute. ## This function returns the name of the attribute with the id @var{attnum} of the variable ## @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.inqAttName} ## @end deftypefn function varargout = inqAttName(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqAttName (varargin{:}); else netcdf_inqAttName (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqDim.m0000644000000000000000000000205114502076114015121 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{name},@var{length}] =} netcdf.inqDim(@var{ncid},@var{dimid}) ## Returns the name and length of a NetCDF dimension. ## @seealso{netcdf.inqDimID} ## @end deftypefn function varargout = inqDim(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqDim (varargin{:}); else netcdf_inqDim (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqDimID.m0000644000000000000000000000202514502076114015337 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{dimid} =} netcdf.inqDimID(@var{ncid},@var{dimname}) ## Return the id of a NetCDF dimension. ## @seealso{netcdf.inqDim} ## @end deftypefn function varargout = inqDimID(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqDimID (varargin{:}); else netcdf_inqDimID (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqDimIDs.m0000644000000000000000000000241414502076114015524 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{dimids} =} netcdf.inqDimID(@var{ncid}) ## @deftypefnx {} {@var{dimids} =} netcdf.inqDimID(@var{ncid},@var{include_parents}) ## Return the dimension ids defined in a NetCDF file. ## If @var{include_parents} is 1, the dimension ids of the parent group are also returned. ## Per default this is not the case (@var{include_parents} is 0). ## @seealso{netcdf.inqDim} ## @end deftypefn function varargout = inqDimIDs(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqDimIDs (varargin{:}); else netcdf_inqDimIDs (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqFormat.m0000644000000000000000000000217514502076114015647 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{format} =} netcdf.inqFormat(@var{ncid}) ## Return the NetCDF format of the dataset @var{ncid}. ## Format might be one of the following ## "FORMAT_CLASSIC", "FORMAT_64BIT", "FORMAT_NETCDF4" or "FORMAT_NETCDF4_CLASSIC" ## @end deftypefn function varargout = inqFormat(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqFormat (varargin{:}); else netcdf_inqFormat (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqGrpFullNcid.m0000644000000000000000000000207614502076114016570 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{grp_ncid} =} netcdf.inqGrpFullNcid(@var{ncid},@var{name}) ## Return the group id based on the full group name. ## @seealso{netcdf.inqGrpName} ## @end deftypefn function varargout = inqGrpFullNcid(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpFullNcid (varargin{:}); else netcdf_inqGrpFullNcid (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqGrpName.m0000644000000000000000000000201614502076114015742 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{name} =} netcdf.inqGrpName(@var{ncid}) ## Return group name in a NetCDF file. ## @seealso{netcdf.inqGrps} ## @end deftypefn function varargout = inqGrpName(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpName (varargin{:}); else netcdf_inqGrpName (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqGrpNameFull.m0000644000000000000000000000204714502076114016571 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{name} =} netcdf.inqGrpNameFull(@var{ncid}) ## Return full name of group in NetCDF file. ## @seealso{netcdf.inqGrpName} ## @end deftypefn function varargout = inqGrpNameFull(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpNameFull (varargin{:}); else netcdf_inqGrpNameFull (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqGrpParent.m0000644000000000000000000000203214502076114016311 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{parent_ncid} =} netcdf.inqGrpParent(@var{ncid}) ## Return id of the parent group ## @seealso{netcdf.inqGrpName} ## @end deftypefn function varargout = inqGrpParent(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrpParent (varargin{:}); else netcdf_inqGrpParent (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqGrps.m0000644000000000000000000000200714502076114015324 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{ncids} =} netcdf.inqGrps(@var{ncid}) ## Return all groups ids in a NetCDF file. ## @seealso{netcdf.inqGrps} ## @end deftypefn function varargout = inqGrps(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqGrps (varargin{:}); else netcdf_inqGrps (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqLibVers.m0000644000000000000000000000176014502076114015764 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{vers} =} netcdf.inqLibVers() ## Returns the version of the NetCDF library. ## @end deftypefn function varargout = inqLibVers(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqLibVers (varargin{:}); else netcdf_inqLibVers (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqNcid.m0000644000000000000000000000202614502076114015267 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{grp_ncid} =} netcdf.inqNcid(@var{ncid},@var{name}) ## Return group id based on its name ## @seealso{netcdf.inqGrpFullNcid} ## @end deftypefn function varargout = inqNcid(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqNcid (varargin{:}); else netcdf_inqNcid (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqUnlimDims.m0000644000000000000000000000204714502076114016316 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{unlimdimids} =} netcdf.inqUnlimDims(@var{ncid}) ## Return the id of all unlimited dimensions of the NetCDF file @var{ncid}. ## @end deftypefn function varargout = inqUnlimDims(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqUnlimDims (varargin{:}); else netcdf_inqUnlimDims (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqUserType.m0000644000000000000000000000236514502076114016200 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf.inqUserType(@var{ncid},@var{typeid}) ## Provide information on a user defined type @var{typeid} in the dataset @var{ncid}. ## ## The function returns the typename, bytesize, base type id, number of fields and class identifier of the type. ## ## @end deftypefn function varargout = inqUserType(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqUserType (varargin{:}); else netcdf_inqUserType (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVar.m0000644000000000000000000000250514502076114015144 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf.inqVar (@var{ncid},@var{varid}) ## Inquires information about a NetCDF variable. ## This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids ## @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an ## integer corresponding NetCDF constants. ## @seealso{netcdf.inqVarID,netcdf.getConstant} ## @end deftypefn function varargout = inqVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVar (varargin{:}); else netcdf_inqVar (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVarChunking.m0000644000000000000000000000241314502076114016631 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{storage},@var{chunkSizes}] = } netcdf.inqVarChunking (@var{ncid},@var{varid}) ## Determines the chunking settings of NetCDF variable @var{varid}. ## If @var{storage} is the string "chunked", the variable is stored by chunk of the size @var{chunkSizes}. ## If @var{storage} is the string "contiguous", the variable is stored in a contiguous way. ## @end deftypefn function varargout = inqVarChunking(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarChunking (varargin{:}); else netcdf_inqVarChunking (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVarDeflate.m0000644000000000000000000000237714502076114016440 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf.inqVarDeflate (@var{ncid},@var{varid}) ## Determines the compression settings NetCDF variable @var{varid}. ## If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression). ## @end deftypefn function varargout = inqVarDeflate(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarDeflate (varargin{:}); else netcdf_inqVarDeflate (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVarFill.m0000644000000000000000000000234214502076114015752 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{no_fill},@var{fillvalue}] = } netcdf.inqVarFill(@var{ncid},@var{varid}) ## Determines the fill-value settings of the NetCDF variable @var{varid}. ## If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true. ## @end deftypefn function varargout = inqVarFill(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarFill (varargin{:}); else netcdf_inqVarFill (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVarFletcher32.m0000644000000000000000000000235614502076114016772 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{checksum} =} netcdf.inqVarFletcher32(@var{ncid},@var{varid}) ## Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string "FLETCHER32". Otherwise it is the string "NOCHECKSUM". ## @end deftypefn function varargout = inqVarFletcher32(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarFletcher32 (varargin{:}); else netcdf_inqVarFletcher32 (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVarID.m0000644000000000000000000000205714502076114015363 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{varid} = } netcdf.inqVarID (@var{ncid},@var{name}) ## Return the id of a variable based on its name. ## @seealso{netcdf.defVar,netcdf.inqVarIDs} ## @end deftypefn function varargout = inqVarID(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarID (varargin{:}); else netcdf_inqVarID (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVarIDs.m0000644000000000000000000000212014502076114015535 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{varids} = } netcdf.inqVarID (@var{ncid}) ## Return all variable ids. ## This functions returns all variable ids in a NetCDF file or NetCDF group. ## @seealso{netcdf.inqVarID} ## @end deftypefn function varargout = inqVarIDs(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVarIDs (varargin{:}); else netcdf_inqVarIDs (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/inqVlen.m0000644000000000000000000000224714502076114015323 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf.inqVlen(@var{ncid},@var{typeid}) ## Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}. ## ## The function returns the typename, bytesize, and base type id. ## ## @end deftypefn function varargout = inqVlen(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_inqVlen (varargin{:}); else netcdf_inqVlen (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/open.m0000644000000000000000000000200214502076114014635 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{ncid} =} netcdf.open(@var{filename},@var{mode}) ## Opens the file named @var{filename} in the mode @var{mode}. ## @end deftypefn function varargout = open(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_open (varargin{:}); else netcdf_open (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/putAtt.m0000644000000000000000000000240214502076114015161 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.putAtt (@var{ncid},@var{varid},@var{name},@var{data}) ## Defines a NetCDF attribute. ## This function defines the attribute called @var{name} of the variable ## @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. ## For global attributes @var{varid} can be ## netcdf.getConstant("global"). ## @seealso{netcdf.getAtt} ## @end deftypefn function varargout = putAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_putAtt (varargin{:}); else netcdf_putAtt (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/putVar.m0000644000000000000000000000313614502076114015166 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.putVar (@var{ncid},@var{varid},@var{data}) ## @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{data}) ## @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) ## @deftypefnx {} {} netcdf.putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) ## Put data in a NetCDF variable. ## The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. ## @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), ## @var{count} is the number of elements of to be written along each dimension (default all elements) ## and @var{stride} is the sampling interval. ## @end deftypefn function varargout = putVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_putVar (varargin{:}); else netcdf_putVar (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/reDef.m0000644000000000000000000000173514502076114014735 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.reDef (@var{ncid}) ## Enter define-mode of NetCDF file @var{ncid}. ## @end deftypefn function varargout = reDef(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_reDef (varargin{:}); else netcdf_reDef (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/renameAtt.m0000644000000000000000000000237514502076114015631 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) ## Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute. ## To rename a global attribute use netcdf.getConstant("global") for @var{varid}. ## @seealso{netcdf.copyAtt,netcdf.getConstant} ## @end deftypefn function varargout = renameAtt(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_renameAtt (varargin{:}); else netcdf_renameAtt (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/renameDim.m0000644000000000000000000000211514502076114015602 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.renameDim(@var{ncid},@var{dimid},@var{name}) ## Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension. ## @end deftypefn function varargout = renameDim(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_renameDim (varargin{:}); else netcdf_renameDim (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/renameVar.m0000644000000000000000000000211314502076114015617 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.renameVar(@var{ncid},@var{varid},@var{name}) ## Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable. ## @end deftypefn function varargout = renameVar(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_renameVar (varargin{:}); else netcdf_renameVar (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/setChunkCache.m0000644000000000000000000000216614502076114016417 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.setChunkCache(@var{size}, @var{nelems}, @var{preemption}) ## Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created. ## @end deftypefn function varargout = setChunkCache(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_setChunkCache (varargin{:}); else netcdf_setChunkCache (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/setDefaultFormat.m0000644000000000000000000000230414502076114017152 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{old_format} =} netcdf.setDefaultFormat(@var{format}) ## Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be ## "format_classic", "format_64bit", "format_netcdf4" or "format_netcdf4_classic". ## @end deftypefn function varargout = setDefaultFormat(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_setDefaultFormat (varargin{:}); else netcdf_setDefaultFormat (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/setFill.m0000644000000000000000000000217214502076114015306 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {@var{old_mode} =} netcdf.setFill(@var{ncid},@var{fillmode}) ## Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either "fill" or "nofill". ## @end deftypefn function varargout = setFill(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_setFill (varargin{:}); else netcdf_setFill (varargin{:}); endif endfunction netcdf-1.0.17/inst/+netcdf/sync.m0000644000000000000000000000174414502076114014664 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} netcdf.sync(@var{ncid}) ## Writes all changes to the disk and leaves the file open. ## @end deftypefn function varargout = sync(varargin) if nargout > 0 [varargout{1:nargout}] = netcdf_sync (varargin{:}); else netcdf_sync (varargin{:}); endif endfunction netcdf-1.0.17/inst/PKG_ADD0000644000000000000000000000071614502076114013226 0ustar0000000000000000# on package load, attempt to load docs try pkg_dir = fileparts (fullfile (mfilename ("fullpath"))); doc_file = fullfile (pkg_dir, "doc", "octave-netcdf.qch"); if exist(doc_file, "file") if exist("__event_manager_register_documentation__") __event_manager_register_documentation__ (doc_file); elseif exist("__event_manager_register_doc__") __event_manager_register_doc__ (doc_file); endif endif catch # do nothing end_try_catch netcdf-1.0.17/inst/PKG_DEL0000644000000000000000000000073214502076114013240 0ustar0000000000000000# on package unload, attempt to unload docs try pkg_dir = fileparts (fullfile (mfilename ("fullpath"))); doc_file = fullfile (pkg_dir, "doc", "octave-netcdf.qch"); if exist(doc_file, "file") if exist("__event_manager_unregister_documentation__") __event_manager_unregister_documentation__ (doc_file); elseif exist("__event_manager_unregister_doc__") __event_manager_unregister_doc__ (doc_file); endif endif catch # do nothing end_try_catch netcdf-1.0.17/inst/import_netcdf.m0000644000000000000000000000173614502076114015230 0ustar0000000000000000## Copyright (C) 2023 John Donoghue ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} import_fits ## Dummy function provided to provide compatibility with older versions of GNU Octave netcdf ## ## Function is deprecated. ## @end deftypefn function import_netcdf # doesnt do anything anymore as package files are provided in inst/+netcdf endfunction netcdf-1.0.17/inst/nccreate.m0000644000000000000000000001030714502076114014151 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} nccreate(@var{filename},@var{varname}) ## @deftypefnx {Function File} {} nccreate(@var{filename},@var{varname},"property",@var{value},...) ## ## Create the variable @var{varname} in the file @var{filename}. ## ## @subsubheading Properties ## The following properties can be used: ## @itemize ## @item "Dimensions": a cell array with the dimension names followed by their ## length or Inf if the dimension is unlimited. If the property is omitted, a ## scalar variable is created. ## @item "Datatype": a string with the Octave data type name ## (see @code{ncinfo} for the correspondence between Octave and NetCDF data ## types). The default data type is a "double". ## @item "Format": This can be "netcdf4_classic" (default), "classic", "64bit" ## or "netcdf4". ## @item "FillValue": the value used for undefined elements of the NetCDF ## variable. ## @item "ChunkSize": the size of the data chunks. If omitted, the variable is ## not chunked. ## @item "DeflateLevel": The deflate level for compression. It can be the string ## "disable" (default) for no compression or an integer between 0 (no ## compression) and 9 (maximum compression). ## @item "Shuffle": true for enabling the shuffle filter or false (default) for ## disabling it. ## @end itemize ## ## @subsubheading Example ## @example ## nccreate("test.nc","temp","Dimensions",@{"lon",10,"lat",20@},"Format","classic"); ## ncdisp("test.nc"); ## @end example ## @seealso{ncwrite} ## @end deftypefn function nccreate (filename, varname, varargin) dimensions = {}; datatype = 'double'; ncformat = 'netcdf4_classic'; FillValue = []; ChunkSize = []; DeflateLevel = 'disable'; Shuffle = false; for i = 1:2:length(varargin) if strcmp(varargin{i},'Dimensions') dimensions = varargin{i+1}; elseif strcmp(varargin{i},'Datatype') datatype = varargin{i+1}; elseif strcmp(varargin{i},'Format') ncformat = varargin{i+1}; elseif strcmp(varargin{i},'FillValue') FillValue = varargin{i+1}; elseif strcmp(varargin{i},'ChunkSize') ChunkSize = varargin{i+1}; elseif strcmp(varargin{i},'DeflateLevel') DeflateLevel = varargin{i+1}; elseif strcmp(varargin{i},'Shuffle') Shuffle = varargin{i+1}; else error(['unknown keyword ' varargin{i} '.']); endif endfor if ~isempty(stat(filename)) ncid = netcdf_open(filename,'NC_WRITE'); netcdf_reDef(ncid); else mode = format2mode(ncformat); ncid = netcdf_create(filename,mode); endif % create dimensions dimids = []; i = 1; while i <= length(dimensions) if i == length(dimensions) dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); i = i+1; elseif ischar(dimensions{i+1}) dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); i = i+1; else try if isinf(dimensions{i+1}) dimensions{i+1} = netcdf_getConstant('NC_UNLIMITED'); endif dimids(end+1) = netcdf_defDim(ncid,dimensions{i},dimensions{i+1}); catch dimids(end+1) = netcdf_inqDimID(ncid,dimensions{i}); end_try_catch i = i+2; endif endwhile varid = netcdf_defVar(ncid,varname,oct2nctype(datatype),dimids); if ~isempty(ChunkSize) netcdf_defVarChunking(ncid,varid,'chunked',ChunkSize); endif if ~isempty(FillValue) % value of nofill? netcdf_defVarFill(ncid,varid,false,FillValue); endif if isnumeric(DeflateLevel) netcdf_defVarDeflate(ncid,varid,Shuffle,true,DeflateLevel); endif netcdf_close(ncid); endfunction netcdf-1.0.17/inst/ncdisp.m0000644000000000000000000001060714502076114013650 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncdisp (@var{filename}) ## Display meta-data of the NetCDF file @var{filename} ## ## @subsubheading Example ## @example ## ncdisp("test.nc"); ## @end example ## @seealso{ncinfo} ## @end deftypefn function ncdisp (filename) info = ncinfo(filename); fprintf("Source:\n"); indent = repmat(" ",[1 11]); fprintf("%s%s\n",indent,fullfile(filename)); fprintf("Format:\n"); fprintf("%s%s\n",indent,info.Format); colors.var = "red"; colors.att = "cyan"; colors.dim = "blue"; group_color = "green"; printgroup("",info,colors); endfunction function s = fmtattr(val) if ischar(val) s = sprintf("""%s""",val); else s = num2str(val); endif endfunction function s = fmtsize(sz) s = sprintf("%gx",sz); s = s(1:end-1); endfunction function printgroup(indent1,info,colors) indent2 = [indent1 repmat(" ",[1 11])]; indent3 = [indent2 repmat(" ",[1 11])]; % attributes if ~isempty(info.Attributes) fprintf("%sGlobal Attributes:\n",indent1); printattr(indent2,info.Attributes,colors); endif % dimensions if ~isempty(info.Dimensions) % length of the longest attribute name dim = info.Dimensions; maxlen = max(cellfun(@length,{dim.Name})); fprintf("%sDimensions:\n",indent1); for i = 1:length(dim) space = repmat(" ",[maxlen-length(dim(i).Name) 1]); fprintf("%s",indent2); colormsg(sprintf("%s %s= %d",dim(i).Name,space,dim(i).Length),colors.dim); fprintf("\n"); endfor endif % variables if isfield(info,"Variables") if ~isempty(info.Variables) % length of the longest attribute name vars = info.Variables; fprintf("%sVariables:\n",indent1); for i = 1:length(vars) %fprintf("%s%s\n",indent2(1:end-7),vars(i).Name); colormsg(sprintf("%s%s\n",indent2(1:end-7),vars(i).Name),colors.var); if ~isempty(vars(i).Size) sz = fmtsize(vars(i).Size); dimname = sprintf("%s,",vars(i).Dimensions.Name); dimname = dimname(1:end-1); else sz = "1x1"; dimname = ""; endif fprintf("%sSize: %s\n",indent2,sz); fprintf("%sDimensions: %s\n",indent2,dimname); fprintf("%sDatatype: %s\n",indent2,vars(i).Datatype); if ~isempty(vars(i).Attributes); fprintf("%sAttributes:\n",indent2); printattr(indent3,vars(i).Attributes,colors); endif endfor endif endif % groups if ~isempty(info.Groups) % length of the longest attribute name grps = info.Groups; fprintf("%sGroups:\n",indent1); for i = 1:length(grps) fprintf("%s%s\n",indent2(1:end-7),grps(i).Name); printgroup(indent2,grps(i),colors); endfor endif endfunction function printattr(indent,attr,colors) % length of the longest attribute name maxlen = max(cellfun(@length,{attr.Name})); for i = 1:length(attr) space = repmat(" ",[maxlen-length(attr(i).Name) 1]); %fprintf("%s%s %s= %s\n",indent,attr(i).Name,space,fmtattr(attr(i).Value)); fprintf("%s",indent); colormsg(sprintf("%s %s= %s\n",attr(i).Name,space,fmtattr(attr(i).Value)),colors.att); endfor endfunction function colormsg (msg,color) if strcmp(getenv("TERM"),"xterm") esc = char(27); % ANSI escape codes colors.black = [esc, "[30m"]; colors.red = [esc, "[31m"]; colors.green = [esc, "[32m"]; colors.yellow = [esc, "[33m"]; colors.blue = [esc, "[34m"]; colors.magenta = [esc, "[35m"]; colors.cyan = [esc, "[36m"]; colors.white = [esc, "[37m"]; reset = [esc, "[0m"]; c = getfield(colors,color); fprintf('%s',[c, msg, reset]); else fprintf('%s',msg); endif endfunction netcdf-1.0.17/inst/ncinfo.m0000644000000000000000000002007114502076114013640 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{info} =} ncinfo (@var{filename}) ## @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{varname}) ## @deftypefnx {Function File} {@var{info} =} ncinfo (@var{filename}, @var{groupname}) ## Return information about an entire NetCDF file @var{filename} (i.e. the root ## group "/"), about the variable called @var{varname} or the group called ## @var{groupname}. ## ## The structure @var{info} has always the following fields: ## @itemize ## @item @var{Filename}: the name of the NetCDF file ## @item @var{Format}: one of the strings "CLASSIC", "64BIT", "NETCDF4" ## or "NETCDF4_CLASSIC" ## @end itemize ## ## The structure @var{info} has additional fields depending on whether a ## group of variable is queried. ## ## @subsubheading Groups ## ## Groups are returned as an array structure with the following fields: ## ## @itemize ## @item @var{Name}: the group name. The root group is named "/". ## @item @var{Dimensions}: a array structure with the dimensions. ## @item @var{Variables}: a array structure with the variables. ## @item @var{Attributes}: a array structure with global attributes. ## @item @var{Groups}: a array structure (one for each group) with the ## same fields as this structure. ## @end itemize ## ## @subsubheading Dimensions ## ## Dimensions are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the dimension ## @item @var{Length}: the length of the dimension ## @item @var{Unlimited}: true of the dimension has no fixed limited, false ## @end itemize ## ## @subsubheading Variables ## ## Variables are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the dimension ## @item @var{Dimensions}: array structure of all dimensions of this variable ## with the same structure as above. ## @item @var{Size}: array with the size of the variable ## @item @var{Datatype}: string with the corresponding octave data-type ## (see below) ## @item @var{Attributes}: a array structure of attributes ## @item @var{FillValue}: the NetCDF fill value of the variable. If the fill ## value is not defined, then this attribute is an empty array ([]). ## @item @var{DeflateLevel}: the NetCDF deflate level between 0 (no ## compression) and 9 (maximum compression). ## @item @var{Shuffle}: is true if the shuffle filter is activated to improve ## compression, otherwise false. ## @item @var{CheckSum}: is set to "fletcher32", if check-sums are used, ## otherwise this field is not defined. ## @end itemize ## ## @subsubheading Attributes ## ## Attributes are returned as an array structure with the following fields: ## @itemize ## @item @var{Name}: the name of the attribute ## @item @var{Value}: the value of the attribute (with the corresponding type) ## @item @var{Unlimited}: true of the dimension has no fixed limited, false ## @end itemize ## ## @subsubheading Data-types ## ## The following the the correspondence between the Octave and NetCDF ## data-types: ## ## @multitable @columnfractions .5 .5 ## @headitem Octave type @tab NetCDF type ## @item @code{int8} @tab @code{NC_BYTE} ## @item @code{uint8} @tab @code{NC_UBYTE} ## @item @code{int16} @tab @code{NC_SHORT} ## @item @code{uint16} @tab @code{NC_USHORT} ## @item @code{int32} @tab @code{NC_INT} ## @item @code{uint32} @tab @code{NC_UINT} ## @item @code{int64} @tab @code{NC_INT64} ## @item @code{uint64} @tab @code{NC_UINT64} ## @item @code{single} @tab @code{NC_FLOAT} ## @item @code{double} @tab @code{NC_DOUBLE} ## @item @code{char} @tab @code{NC_CHAR} ## @end multitable ## ## The output of @code{ncinfo} can be used to create a NetCDF file with the same ## meta-data using @code{ncwriteschema}. ## ## Note: If there are no attributes (or variable or groups), the corresponding ## field is an empty matrix and not an empty struct array for compatibility ## with matlab. ## ## @seealso{ncread,nccreate,ncwriteschema,ncdisp} ## ## @end deftypefn function info = ncinfo (filename, name) ncid = netcdf_open(filename,"NC_NOWRITE"); info.Filename = filename; if nargin == 1 name = "/"; endif [gid,varid] = ncloc(ncid,name); if isempty(varid) info = ncinfo_group(info,gid); else unlimdimIDs = netcdf_inqUnlimDims(gid); info = ncinfo_var(info,gid,varid,unlimdimIDs); endif # NetCDF format ncformat = netcdf_inqFormat(ncid); info.Format = lower(strrep(ncformat,'FORMAT_','')); netcdf_close(ncid); endfunction function dims = ncinfo_dim(ncid,dimids,unlimdimIDs) dims = []; for i=1:length(dimids) tmp = struct(); [tmp.Name, tmp.Length] = netcdf_inqDim(ncid,dimids(i)); tmp.Unlimited = any(unlimdimIDs == dimids(i)); if isempty(dims) dims = [tmp]; else dims(i) = tmp; endif endfor endfunction function vinfo = ncinfo_var(vinfo,ncid,varid,unlimdimIDs) [vinfo.Name,xtype,dimids,natts] = netcdf_inqVar(ncid,varid); % Information about dimension vinfo.Dimensions = ncinfo_dim(ncid,dimids,unlimdimIDs); if isempty(vinfo.Dimensions) vinfo.Size = []; else vinfo.Size = cat(2,vinfo.Dimensions.Length); endif % Data type if xtype >= netcdf_getConstant("NC_FIRSTUSERTYPEID") [utype_name, utype_bsize, utype_typeid, utype_nfields, utype_classid] = netcdf_inqUserType(ncid, xtype); vinfo.Datatype = nc2octtype(utype_typeid); if utype_classid == netcdf_getConstant("NC_VLEN") vinfo.Datatype = [vinfo.Datatype '*']; endif else vinfo.Datatype = nc2octtype(xtype); endif % Attributes vinfo.Attributes = []; for i = 0:natts-1 tmp = struct(); tmp.Name = netcdf_inqAttName(ncid,varid,i); tmp.Value = netcdf_getAtt(ncid,varid,tmp.Name); if isempty(vinfo.Attributes) vinfo.Attributes = [tmp]; else vinfo.Attributes(i+1) = tmp; endif endfor % chunking, fillvalue, compression [storage,vinfo.ChunkSize] = netcdf_inqVarChunking(ncid,varid); [nofill,vinfo.FillValue] = netcdf_inqVarFill(ncid,varid); if nofill vinfo.FillValue = []; endif [shuffle,deflate,vinfo.DeflateLevel] = ... netcdf_inqVarDeflate(ncid,varid); if ~deflate vinfo.DeflateLevel = []; endif vinfo.Shuffle = shuffle; # add checksum information if defined (unlike matlab) checksum = netcdf_inqVarFletcher32(ncid,varid); if ~strcmp(checksum,'nochecksum'); vinfo.Checksum = checksum; endif endfunction function info = ncinfo_group (info, ncid) info.Name = netcdf_inqGrpName(ncid); unlimdimIDs = netcdf_inqUnlimDims(ncid); [ndims,nvars,ngatts] = netcdf_inq(ncid); % dimensions dimids = netcdf_inqDimIDs(ncid); info.Dimensions = ncinfo_dim(ncid,dimids,unlimdimIDs); % variables for i=1:nvars info.Variables(i) = ncinfo_var(struct(),ncid,i-1,unlimdimIDs); endfor % global attributes info.Attributes = []; gid = netcdf_getConstant('NC_GLOBAL'); for i = 0:ngatts-1 tmp = struct(); tmp.Name = netcdf_inqAttName(ncid,gid,i); tmp.Value = netcdf_getAtt(ncid,gid,tmp.Name); if isempty(info.Attributes) info.Attributes = [tmp]; else info.Attributes(i+1) = tmp; endif endfor info.Groups = []; gids = netcdf_inqGrps(ncid); for i = 1:length(gids) tmp = ncinfo_group(struct(),gids(i)); if isempty(info.Groups) info.Groups = [tmp]; else info.Groups(i) = tmp; endif endfor endfunction netcdf-1.0.17/inst/ncread.m0000644000000000000000000001045014502076114013620 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{x} =} ncread (@var{filename}, @var{varname}) ## @deftypefnx {Function File} {@var{x} =} ncread (@var{filename}, @var{varname},@var{start},@var{count},@var{stride}) ## ## Read the variable @var{varname} from the NetCDF file @var{filename}. ## ## If @var{start},@var{count} and @var{stride} are present, a subset of the ## variable is loaded. The parameter @var{start} contains the starting indices ## (1-based), @var{count} is the number of elements and @var{stride} the ## increment between two successive elements. These parameters are vectors whose ## length is equal to the number of dimension of the variable. Elements of ## @var{count} might be Inf which means that as many values as possible are ## loaded. ## ## If the variable has the _FillValue attribute, then the corresponding values ## are replaced by NaN (except for characters). NetCDF attributes scale_factor ## (default 1) and add_offset (default 0) are use the transform the variable ## during the loading: ## ## x = scale_factor * x_in_file + add_offset ## ## The output data type matches the NetCDF datatype, except when the attributes ## _FillValue, add_offset or scale_factor are defined in which case the output ## is a array in double precision. ## ## Note that values equal to the attribute missing_value are not replaced by ## NaN (for compatibility). ## ## @subsubheading Example ## Read the data from variable 'mydata' in the file test.nc. ## @example ## data = ncread('test.nc','mydata'); ## @end example ## ## @seealso{ncwrite,ncinfo,ncdisp} ## ## @end deftypefn function x = ncread (filename, varname, start, count, stride) ncid = netcdf_open(filename,'NC_NOWRITE'); [gid,varid] = ncvarid(ncid,varname); [varname_,xtype,dimids,natts] = netcdf_inqVar(gid,varid); % number of dimenions nd = length(dimids); sz = zeros(1,nd); for i=1:length(dimids) [dimname, sz(i)] = netcdf_inqDim(gid,dimids(i)); endfor if nargin < 3 start = ones(1,nd); endif if nargin < 4 count = inf*ones(1,nd); endif if nargin < 5 stride = ones(1,nd); endif % replace inf in count i = count == inf; count(i) = (sz(i)-start(i))./stride(i) + 1; x = netcdf_getVar(gid,varid,start-1,count,stride); % apply attributes factor = []; offset = []; fv = []; for i = 0:natts-1 attname = netcdf_inqAttName(gid,varid,i); if strcmp(attname,'scale_factor') factor = netcdf_getAtt(gid,varid,'scale_factor'); elseif strcmp(attname,'add_offset') offset = netcdf_getAtt(gid,varid,'add_offset'); elseif strcmp(attname,'_FillValue') fv = netcdf_getAtt(gid,varid,'_FillValue'); endif endfor netcdf_close(ncid); # the scaling does not make sense of characters if xtype == netcdf_getConstant('char') || ... xtype == netcdf_getConstant('string') return; endif # special handling for vlen if iscell(x) if !isempty(fv) || !isempty(factor) || !isempty(offset) for k=1:length(x) v = x{k}; if !isa(x{k}, 'double') v = double(v); endif if !isempty(fv) v(v == fv) = NaN; endif if !isempty(factor) v = v * factor; endif if !isempty(offset) v = v + offset; endif x{k} = v; endfor endif else if !isempty(fv) || !isempty(factor) || !isempty(offset) if !isa(x, 'double') x = double(x); endif if !isempty(fv) x(x == fv) = NaN; endif if !isempty(factor) x = x * factor; endif if !isempty(offset) x = x + offset; endif endif endif endfunction netcdf-1.0.17/inst/ncreadatt.m0000644000000000000000000000325014502076114014331 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {@var{val} =} ncreadatt(@var{filename},@var{varname},@var{attname}) ## ## Return the attribute @var{attname} of the variable @var{varname} in the file ## @var{filename}. ## ## Global attributes can be accessed by using "/" or the group name as ## @var{varname}. The type of attribute is mapped to the Octave data types. ## (see @code{ncinfo}). ## ## @subsubheading Example ## Read global attribute 'creation_date' ## @example ## d = ncreadatt('test.nc','/','creation_date') ## @end example ## Read atribute 'myattr' assigned to variable mydata. ## @example ## d = ncreadattr('test.nc', 'mydata', 'myattr'); ## @end example ## @seealso{ncinfo,ncwriteatt} ## @end deftypefn function val = ncreadatt(filename,varname,attname) ncid = netcdf_open(filename,'NC_NOWRITE'); [gid,varid] = ncloc(ncid,varname); if isempty(varid) varid = netcdf_getConstant('NC_GLOBAL'); endif val = netcdf_getAtt(gid,varid,attname); netcdf_close(ncid); endfunction netcdf-1.0.17/inst/ncwrite.m0000644000000000000000000000621214502076114014040 0ustar0000000000000000## Copyright (C) 2013-2023 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}) ## @deftypefnx {Function File} {} ncwrite (@var{filename}, @var{varname}, @var{x}, @var{start}, @var{stride}) ## ## Write array @var{x} to the the variable @var{varname} in the NetCDF file ## @var{filename}. ## ## The variable with the name @var{varname} and the appropriate dimension must ## already exist in the NetCDF file. ## ## If @var{start} and @var{stride} are present, a subset of the ## variable is written. The parameter @var{start} contains the starting indices ## (1-based) and @var{stride} the ## increment between two successive elements. These parameters are vectors whose ## length is equal to the number of dimension of the variable. ## ## If the variable has the _FillValue attribute, then the values equal to NaN ## are replaced by corresponding fill value NetCDF attributes scale_factor ## (default 1) and add_oddset (default 0) are use the transform the variable ## during writing: ## ## x_in_file = (x - add_offset)/scale_factor ## ## @subsubheading Example ## Create a netcdf file with a variable of 'mydata' and then write ## data to that variable. ## @example ## nccreate('myfile.nc','mydata'); ## ncwrite('myfile.nc','mydata', 101); ## @end example ## ## @seealso{ncread,nccreate} ## ## @end deftypefn function ncwrite (filename, varname, x, start, stride) ncid = netcdf_open(filename,'NC_WRITE'); [gid,varid] = ncvarid(ncid,varname); [varname_,xtype,dimids,natts] = netcdf_inqVar(gid,varid); % number of dimenions nd = length(dimids); sz = zeros(1,nd); count = zeros(1,nd); for i=1:length(dimids) [dimname, sz(i)] = netcdf_inqDim(gid,dimids(i)); count(i) = size(x,i); endfor if nargin < 4 start = ones(1,nd); endif if nargin < 5 stride = ones(1,nd); endif % apply attributes factor = []; offset = []; fv = []; for i = 0:natts-1 attname = netcdf_inqAttName(gid,varid,i); if strcmp(attname,'scale_factor') factor = netcdf_getAtt(gid,varid,'scale_factor'); elseif strcmp(attname,'add_offset') offset = netcdf_getAtt(gid,varid,'add_offset'); elseif strcmp(attname,'_FillValue') fv = netcdf_getAtt(gid,varid,'_FillValue'); endif endfor if ~isempty(offset) x = x - offset; endif if ~isempty(factor) x = x / factor; endif if ~isempty(fv) x(isnan(x)) = fv; endif netcdf_putVar(gid,varid,start-1,count,stride,x); netcdf_close(ncid); endfunction netcdf-1.0.17/inst/ncwriteatt.m0000644000000000000000000000327014502076114014552 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwriteatt(@var{filename},@var{varname},@var{attname},@var{val}) ## ## Defines the attribute @var{attname} of the variable @var{varname} in the file ## @var{filename} with the value @var{val}. ## ## Global attributes can be defined by using "/" or the group name as ## @var{varname}. The type of value is mapped to the NetCDF data types. ## (see @code{ncinfo}). ## ## @subsubheading Example ## Create a netcdf4 format file with a variable mydata and assign an attribute "units" to it. ## @example ## nccreate("myfile.nc", "mydata", "Format", "netcdf4"); ## ncwriteatt("myfile.nc", "mydata", "Units", "K"); ## @end example ## ## @seealso{ncinfo} ## @end deftypefn function ncwriteatt (filename, varname, attname, val) ncid = netcdf_open(filename,'NC_WRITE'); netcdf_reDef(ncid); [gid,varid] = ncloc(ncid,varname); if isempty(varid) varid = netcdf_getConstant('NC_GLOBAL'); endif netcdf_putAtt(ncid,varid,attname,val); netcdf_close(ncid); endfunction netcdf-1.0.17/inst/ncwriteschema.m0000644000000000000000000001100514502076114015215 0ustar0000000000000000## Copyright (C) 2013-2022 Alexander Barth ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {Function File} {} ncwriteschema (@var{filename}, @var{schema}) ## ## Create a NetCDF called @var{filename} with the dimensions, attributes, ## variables and groups given by the structure @var{schema}. ## ## The variable @var{schema} has the same structure as the results of ## @code{ncinfo}. @code{ncinfo} and @code{ncwriteschema} can be used together to ## create a NetCDF using another file as a template: ## ## @subsubheading Example ## @example ## schema = ncinfo("template.nc"); ## # the new file should be named "new_file.nc" ## ncwriteschema("new_file.nc",schema); ## @end example ## ## Unused field in @var{schema} such as @var{ChunkSize}, @var{Shuffle}, ## @var{DeflateLevel}, @var{FillValue}, @var{Checksum} can be left-out if the ## corresponding feature is not used. ## ## Dimensions are considered as limited if the field @var{Unlimited} is missing, ## unless the dimension length is Inf. ## ## @seealso{ncinfo} ## ## @end deftypefn function ncwriteschema (filename, s) mode = format2mode(s.Format); ncid = netcdf_create(filename,mode); write_group(ncid,s) netcdf_close(ncid); endfunction function write_group(ncid,s) % normalize schema if ~isfield(s,'Dimensions') s.Dimensions = []; endif if isempty(s.Dimensions) s.Dimensions = struct('Name',{},'Length',{},'Unlimited',{}); endif if ~isfield(s,'Attributes') s.Attributes = struct('Name',{},'Value',{}); endif if ~isfield(s,'Variables') s.Variables = struct('Name',{},'Dimensions',{},'Datatype',{});; endif % dimension for i = 1:length(s.Dimensions) dim = s.Dimensions(i); if ~isfield(dim,'Unlimited') dim.Unlimited = false; endif len = dim.Length; if dim.Unlimited || isinf(len) len = netcdf_getConstant('NC_UNLIMITED'); endif s.Dimensions(i).id = netcdf_defDim(ncid,dim.Name,len); endfor % global attributes gid = netcdf_getConstant('NC_GLOBAL'); for j = 1:length(s.Attributes) netcdf_putAtt(ncid,gid,s.Attributes(j).Name,s.Attributes(j).Value); endfor % variables for i = 1:length(s.Variables) v = s.Variables(i); %v.Name % get dimension id dimids = zeros(length(v.Dimensions),1); for j = 1:length(v.Dimensions) dimids(j) = netcdf_inqDimID(ncid,v.Dimensions(j).Name); endfor % define variable dtype = oct2nctype(v.Datatype); varid = netcdf_defVar(ncid,v.Name,dtype,dimids); % define attributes for j = 1:length(v.Attributes) netcdf_putAtt(ncid,varid,v.Attributes(j).Name,v.Attributes(j).Value); endfor % define chunk size if isfield(v,'ChunkSize') if ~isempty(v.ChunkSize) netcdf_defVarChunking(ncid,varid,'chunked',v.ChunkSize); endif endif % define compression shuffle = false; deflatelevel = 0; if isfield(v,'Shuffle') if ~isempty(v.Shuffle) shuffle = v.Shuffle; endif endif if isfield(v,'DeflateLevel') if ~isempty(v.DeflateLevel) deflatelevel = v.DeflateLevel; endif endif if shuffle && defaltelevel != 0 deflate = defaltelevel != 0; netcdf_defVarDeflate(ncid,varid,shuffle,deflate,deflatelevel); endif % define fill value if isfield(v,'FillValue') if ~isempty(v.FillValue) % leave nofill setting unchanged [nofill,fillval] = netcdf_inqVarFill(ncid,varid); netcdf_defVarFill(ncid,varid,nofill,v.FillValue); endif endif % define checksum if isfield(v,'Checksum') if ~isempty(v.Checksum) netcdf_defVarFletcher32(ncid,varid,v.Checksum); endif endif endfor % groups if isfield(s,'Groups') if ~isempty(s.Groups) for i=1:length(s.Groups) g = s.Groups(i); gid = netcdf_defGrp(ncid,g.Name); write_group(gid,g); endfor endif endif endfunction netcdf-1.0.17/inst/private/0000755000000000000000000000000014502076114013660 5ustar0000000000000000netcdf-1.0.17/inst/private/bug_47014.m0000644000000000000000000000054214502076114015353 0ustar0000000000000000% test case for bug 47014 % https://savannah.gnu.org/bugs/?func=detailitem&item_id=47014 fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'var','Dimensions',{'x',10},... 'FillValue',-32767,'Datatype','int16') var = ones(10,1); var(1) = NaN; ncwrite(fname,'var',var); var2 = ncread(fname,'var'); assert(isequaln(var,var2)) delete(fname) netcdf-1.0.17/inst/private/format2mode.m0000644000000000000000000000236114502076114016257 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function mode = format2mode(format) mode = netcdf_getConstant("NC_NOCLOBBER"); switch lower(format) case "classic" % do nothing case "64bit" mode = bitor(mode,netcdf_getConstant("NC_64BIT_OFFSET")); case "netcdf4_classic" mode = bitor(bitor(mode,netcdf_getConstant("NC_NETCDF4")),... netcdf_getConstant("NC_CLASSIC_MODEL")); case "netcdf4" mode = bitor(mode,netcdf_getConstant("NC_NETCDF4")); otherwise error("netcdf:unknownFormat","unknown format %s",format); endswitch endfunction netcdf-1.0.17/inst/private/nc2octtype.m0000644000000000000000000000333214502076114016131 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function otype = nc2octtype(nctype) if nctype == netcdf_getConstant("NC_CHAR") otype = "char"; elseif nctype == netcdf_getConstant("NC_FLOAT") otype = "single"; elseif nctype == netcdf_getConstant("NC_DOUBLE") otype = "double"; elseif nctype == netcdf_getConstant("NC_BYTE") otype = "int8"; elseif nctype == netcdf_getConstant("NC_SHORT") otype = "int16"; elseif nctype == netcdf_getConstant("NC_INT") otype = "int32"; elseif nctype == netcdf_getConstant("NC_INT64") otype = "int64"; elseif nctype == netcdf_getConstant("NC_UBYTE") otype = "uint8"; elseif nctype == netcdf_getConstant("NC_USHORT") otype = "uint16"; elseif nctype == netcdf_getConstant("NC_UINT") otype = "uint32"; elseif nctype == netcdf_getConstant("NC_UINT64") otype = "uint64"; elseif nctype == netcdf_getConstant("NC_STRING") otype = "string"; elseif nctype >= netcdf_getConstant("NC_FIRSTUSERTYPEID") otype = "user"; else error("netcdf:unknownDataType","unknown data type %d",nctype) endif endfunction netcdf-1.0.17/inst/private/ncloc.m0000644000000000000000000000173714502076114015144 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . % resolves a location (variable or group) by name function [gid,varid] = ncloc(ncid,name) try # try if name is a group gid = netcdf_inqGrpFullNcid(ncid,name); varid = []; catch # assume that name is a variable [gid,varid] = ncvarid(ncid,name); end_try_catch endfunction netcdf-1.0.17/inst/private/ncvarid.m0000644000000000000000000000175614502076114015475 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function [gid,varid] = ncvarid(ncid,varname) if strcmp(varname(1), '/') i = find(varname == '/',1,'last'); groupname = varname(1:i-1); varname = varname(i+1:end); gid = netcdf_inqGrpFullNcid(ncid,groupname); else gid = ncid; endif varid = netcdf_inqVarID(gid, varname); endfunction netcdf-1.0.17/inst/private/oct2nctype.m0000644000000000000000000000317414502076114016135 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function nctype = oct2nctype(otype) typemap.int8 = 'byte'; typemap.uint8 = 'ubyte'; typemap.int16 = 'short'; typemap.uint16 = 'ushort'; typemap.int32 = 'int'; typemap.uint32 = 'uint'; typemap.int64 = 'int64'; typemap.uint64 = 'uint64'; typemap.single = 'float'; typemap.double = 'double'; typemap.char = 'char'; typemap.string = 'string'; if ischar(otype) otype = lower(otype); if isfield(typemap,otype) nctype = typemap.(otype); else error('netcdf:unkownType','unknown type %s',otype); endif else nctype = otype; endif %typemap.byte = 'int8'; %typemap.ubyte = 'uint8'; %typemap.short = 'int16'; %typemap.ushort = 'uint16'; %typemap.int = 'int32'; %typemap.uint = 'uint32'; %typemap.int64 = 'int64'; %typemap.uint64 = 'uint64'; %typemap.float = 'single'; %typemap.double = 'double'; %typemap.char = 'char'; %typemap.string = 'string'; endfunction netcdf-1.0.17/inst/private/test_netcdf_attributes.m0000644000000000000000000002337314502076114020616 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_attributes() import_netcdf % rename attributes fname = [tempname '-octave-netcdf-rename-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); name = netcdf.inqAttName(ncid,gid,0); assert(strcmp(name,'toto')); netcdf.renameAtt(ncid,gid,'toto','lala'); name = netcdf.inqAttName(ncid,gid,0); assert(strcmp(name,'lala')); netcdf.close(ncid); delete(fname) % delete attributes fname = [tempname '-octave-netcdf-delete-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); varid = netcdf.defVar(ncid,'double_var','double',[]); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 1); netcdf.delAtt(ncid,gid,'toto'); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 0); netcdf.close(ncid); delete(fname) % copy attributes fname = [tempname '-octave-netcdf-copy-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); varid = netcdf.defVar(ncid,'double_var','double',[]); netcdf.copyAtt(ncid,gid,'toto',ncid,varid); [ndims,nvars,natts] = netcdf.inq(ncid); assert(natts == 1); [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varid); val = netcdf.getAtt(ncid,varid,'toto'); assert(isequal(val,123)); netcdf.close(ncid); delete(fname) % attributes id fname = [tempname '-octave-netcdf-delete-attrib.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); gid = netcdf.getConstant('global'); netcdf.putAtt(ncid,gid,'toto',int8(123)); attnum = netcdf.inqAttID(ncid,gid,'toto'); name = netcdf.inqAttName(ncid,gid,attnum); assert(strcmp(name,'toto')) netcdf.close(ncid); delete(fname) % test one unlimited dimensions fname = [tempname '-octave-netcdf-unlimdim.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); dimID = netcdf.defDim(ncid,'time',netcdf.getConstant('NC_UNLIMITED')); unlimdimIDs = netcdf.inqUnlimDims(ncid); assert(dimID == unlimdimIDs); netcdf.close(ncid); delete(fname) % test netcdf_classic format fname = [tempname '-octave-netcdf-classic-model.nc']; mode = bitor(netcdf.getConstant('classic_model'),netcdf.getConstant('netcdf4')); ncid = netcdf.create(fname,mode); netcdf.close(ncid); info = ncinfo(fname); assert(strcmp(info.Format,'netcdf4_classic')); delete(fname); % test two unlimited dimensions fname = [tempname '-octave-netcdf-2unlimdim.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); dimID = netcdf.defDim(ncid,'time',netcdf.getConstant('NC_UNLIMITED')); dimID2 = netcdf.defDim(ncid,'time2',netcdf.getConstant('NC_UNLIMITED')); unlimdimIDs = netcdf.inqUnlimDims(ncid); assert(isequal(sort([dimID,dimID2]),sort(unlimdimIDs))); netcdf.close(ncid); delete(fname); % test fill mode fname = [tempname '-octave-netcdf-fill-mode.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); old_mode = netcdf.setFill(ncid,'nofill'); old_mode = netcdf.setFill(ncid,'nofill'); assert(old_mode == netcdf.getConstant('nofill')) netcdf.close(ncid); delete(fname); % deflate for 64bit_offset files fname = [tempname '-octave-netcdf-deflate.nc']; ncid = netcdf.create(fname,'64BIT_OFFSET'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); [shuffle,deflate,deflateLevel] = netcdf.inqVarDeflate(ncid,varid); assert(shuffle == 0) assert(deflate == 0) assert(deflateLevel == 0) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % deflate fname = [tempname '-octave-netcdf-deflate.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarDeflate(ncid,varid,true,true,9); [shuffle,deflate,deflateLevel] = netcdf.inqVarDeflate(ncid,varid); assert(shuffle) assert(deflate) assert(deflateLevel == 9) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % chunking - contiguous storage fname = [tempname '-octave-netcdf-chunking.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarChunking(ncid,varid,'contiguous'); [storage,chunksize] = netcdf.inqVarChunking(ncid,varid); assert(strcmp(storage,'contiguous')) assert(isempty(chunksize)) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % chunking - chunked storage fname = [tempname '-octave-netcdf-chunking.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarChunking(ncid,varid,'chunked',[3 4]); [storage,chunksize] = netcdf.inqVarChunking(ncid,varid); assert(strcmp(storage,'chunked')) assert(isequal(chunksize,[3 4])) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % checksum fname = [tempname '-octave-netcdf-checksum.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); checksum = netcdf.inqVarFletcher32(ncid,varid); assert(strcmp(checksum,'NOCHECKSUM')) netcdf.defVarFletcher32(ncid,varid,'fletcher32'); checksum = netcdf.inqVarFletcher32(ncid,varid); assert(strcmp(checksum,'FLETCHER32')) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); netcdf.defVarFill(ncid,varid,false,-99999.); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) assert(fillval == -99999.) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill single fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'single_var','float',dimids); netcdf.defVarFill(ncid,varid,false,single(-99999.)); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) assert(fillval == -99999.) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % variable fill char fname = [tempname '-octave-netcdf-fill-char.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','char',dimids); netcdf.defVarFill(ncid,varid,false,'X'); [fill,fillval] = netcdf.inqVarFill(ncid,varid); assert(~fill) assert(fillval == 'X') netcdf.close(ncid); delete(fname); % check default state of fill fname = [tempname '-octave-netcdf-fill.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','double',dimids); [nofill,fillval] = netcdf.inqVarFill(ncid,varid); assert(isequal(nofill,false)) netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % create groups fname = [tempname '-octave-netcdf-groups.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); id1 = netcdf.defGrp(ncid,'group1'); id2 = netcdf.defGrp(ncid,'group2'); id3 = netcdf.defGrp(id1,'subgroup'); ids = netcdf.inqGrps(ncid); assert(isequal(sort([id1,id2]),sort(ids))); id4 = netcdf.inqNcid(ncid,'group1'); assert(id1 == id4) name = netcdf.inqGrpName(id3); assert(strcmp(name,'subgroup')) name = netcdf.inqGrpNameFull(id3); assert(strcmp(name,'/group1/subgroup')) parentid = netcdf.inqGrpParent(id3); assert(id1 == parentid); if 0 id3bis = netcdf.inqGrpFullNcid(ncid,'/group1/subgroup'); assert(id3 == id3bis); endif netcdf.close(ncid); %system(['ncdump -h ' fname]) delete(fname); % check rename dimension fname = [tempname '-octave-rename-dim.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimid = netcdf.defDim(ncid,'x',123); [name,len] = netcdf.inqDim(ncid,dimid); assert(strcmp(name,'x')); netcdf.renameDim(ncid,dimid,'y'); [name,len] = netcdf.inqDim(ncid,dimid); assert(strcmp(name,'y')); netcdf.close(ncid); delete(fname); % rename variable fname = [tempname '-octave-netcdf-rename-var.nc']; ncid = netcdf.create(fname,'NC_NETCDF4'); dimids = [netcdf.defDim(ncid,'x',123) netcdf.defDim(ncid,'y',12)]; varid = netcdf.defVar(ncid,'double_var','char',dimids); [varname] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'double_var')); netcdf.renameVar(ncid,varid,'doublev'); [varname] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'doublev')); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.17/inst/private/test_netcdf_constant.m0000644000000000000000000000272614502076114020260 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . % test netcdf constants function test_netcdf_constant() import_netcdf names = netcdf.getConstantNames(); assert(any(strcmp(names,'NC_WRITE'))); assert(netcdf.getConstant('NC_NOWRITE') == 0) assert(netcdf.getConstant('NC_WRITE') == 1) assert(netcdf.getConstant('NC_64BIT_OFFSET') == ... netcdf.getConstant('64BIT_OFFSET')) assert(netcdf.getConstant('NC_64BIT_OFFSET') == ... netcdf.getConstant('64bit_offset')) assert(isa(netcdf.getConstant('fill_byte'),'int8')) assert(isa(netcdf.getConstant('fill_ubyte'),'uint8')) assert(isa(netcdf.getConstant('fill_float'),'single')) failed = 0; try % should trow exception netcdf.getConstant('not_found') % should never be reached failed = 1; catch end_try_catch assert(~failed); endfunction netcdf-1.0.17/inst/private/test_netcdf_create.m0000644000000000000000000000164614502076114017672 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_create import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC')); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.17/inst/private/test_netcdf_datatypes.m0000644000000000000000000000217414502076114020422 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_datatypes() test_netcdf_type('byte','int8'); test_netcdf_type('ubyte','uint8'); test_netcdf_type('short','int16'); test_netcdf_type('ushort','uint16'); test_netcdf_type('int','int32'); test_netcdf_type('uint','uint32'); test_netcdf_type('int64','int64'); test_netcdf_type('uint64','uint64'); test_netcdf_type('double','double'); test_netcdf_type('float','single'); test_netcdf_type('char','char'); endfunction netcdf-1.0.17/inst/private/test_netcdf_high_level_interface.m0000644000000000000000000000716514502076114022557 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . import_netcdf fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20}); nccreate(fname,'salt','Dimensions',{'lon',10,'lat',20}); nccreate(fname,'u','Dimensions',{'lon','lat'}); u = randn(10,20); ncwrite(fname,'u',u); % for octave prior to 3.8.0 if isempty(which('isequaln')) isequaln = @(x,y) isequalwithequalnans(x,y); endif u2 = ncread(fname,'u'); assert(isequaln(u,u2)); u2 = ncread(fname,'u',[10 5],[inf inf],[1 1]); assert(isequaln(u(10:end,5:end),u2)); ncwriteatt(fname,'temp','units','degree Celsius'); assert(strcmp(ncreadatt(fname,'temp','units'),'degree Celsius')); ncwriteatt(fname,'temp','range',[0 10]); assert(isequal(ncreadatt(fname,'temp','range'),[0 10])); ncwriteatt(fname,'temp','float_range',single([0 10])); assert(isequal(ncreadatt(fname,'temp','float_range'),[0 10])); ncwriteatt(fname,'temp','int_range',int32([0 10])); assert(isequal(ncreadatt(fname,'temp','int_range'),[0 10])); info = ncinfo(fname); assert(length(info.Variables) == 3) assert(strcmp(info.Variables(1).Name,'temp')); assert(isequal(info.Variables(1).Size,[10 20])); delete(fname); nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','64bit'); delete(fname); nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','classic'); info = ncinfo(fname); assert(strcmp(info.Format,'classic')); delete(fname); % netcdf4 nccreate(fname,'temp','Dimensions',{'lon',10,'lat',20},'Format','netcdf4'); ncwriteatt(fname,'temp','uint_range',uint32([0 10])); assert(isequal(ncreadatt(fname,'temp','uint_range'),[0 10])); info = ncinfo(fname); assert(strcmp(info.Format,'netcdf4')); delete(fname) % scalar variable nccreate(fname,'temp','Format','netcdf4','Datatype','double'); ncwrite(fname,'temp',123); assert(ncread(fname,'temp') == 123) delete(fname) % test unlimited dimension with nccreate fname = [tempname '-octave-netcdf.nc']; nccreate(fname,'temp','Dimensions',{'lon',10,'lat',inf}); %system(['ncdump -h ' fname]) info = ncinfo(fname); assert(~info.Dimensions(1).Unlimited) assert(info.Dimensions(2).Unlimited) delete(fname) % test double with _FillValue fname = [tempname '-octave-netcdf.nc']; fv = 99999.; nccreate(fname,'flag','Dimensions',{'lon',10,'lat',10},'Datatype','double',... 'FillValue',fv); %system(['ncdump -h ' fname]) data = zeros(10,10); data(1,2) = fv; ncid = netcdf.open(fname,'NC_WRITE'); varid = netcdf.inqVarID(ncid, 'flag'); netcdf.putVar(ncid,varid,data); netcdf.close(ncid) data2 = ncread(fname,'flag'); data(data == fv) = NaN; assert(isequaln(data,data2)) delete(fname) % test char with _FillValue fname = [tempname '-octave-netcdf.nc']; fv = '*'; nccreate(fname,'flag','Dimensions',{'lon',10,'lat',10},'Datatype','char',... 'FillValue',fv); data = repmat('.',[10 10]); data(1,2) = fv; ncid = netcdf.open(fname,'NC_WRITE'); varid = netcdf.inqVarID(ncid, 'flag'); netcdf.putVar(ncid,varid,data); netcdf.close(ncid) data2 = ncread(fname,'flag'); assert(isequal(data,data2)) delete(fname) netcdf-1.0.17/inst/private/test_netcdf_low_level_interface.m0000644000000000000000000001247314502076114022437 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_low_level_interface import_netcdf % 2 dimensions fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); assert(strcmp(netcdf.inqFormat(ncid),'FORMAT_CLASSIC')); n = 10; m = 5; dimid_lon = netcdf.defDim(ncid,'lon',m); dimid = netcdf.defDim(ncid,'time',n); varidd = netcdf.defVar(ncid,'double_var','double',[dimid_lon,dimid]); varid = netcdf.defVar(ncid,'byte_var','byte',[dimid]); varidf = netcdf.defVar(ncid,'float_var','float',[dimid]); varidi = netcdf.defVar(ncid,'int_var','int',[dimid]); varids = netcdf.defVar(ncid,'short_var','short',[dimid]); assert(varidd == netcdf.inqVarID(ncid,'double_var')) [numdims, numvars, numglobalatts, unlimdimID] = netcdf.inq(ncid); assert(numvars == 5) [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varidd); assert(strcmp(varname,'double_var')); [dimname,len] = netcdf.inqDim(ncid,dimid); assert(len == n); assert(strcmp(dimname,'time')); types = {'double','float','byte','short','int'}; for i=1:length(types) vid{i} = netcdf.defVar(ncid,[types{i} '_variable'],types{i},[dimid_lon,dimid]); end netcdf.endDef(ncid) z = randn(m,n); netcdf.putVar(ncid,varidd,z); varf = randn(n,1); netcdf.putVar(ncid,varidf,varf); vari = floor(randn(n,1)); netcdf.putVar(ncid,varidi,vari); netcdf.putVar(ncid,varids,[1:n]) z2 = netcdf.getVar(ncid,varidd); assert(all(all(abs(z2 - z) < 1e-5))) z2 = netcdf.getVar(ncid,varidd,[0 0]); assert(z2 == z(1,1)) z2 = netcdf.getVar(ncid,varidd,[2 2],[3 5]); assert(isequal(z2,z(3:5,3:7))) z2 = netcdf.getVar(ncid,varidd,[2 2],[3 4],[1 2]); assert(isequal(z2,z(3:5,3:2:9))) netcdf.putVar(ncid,varidd,[0 0],123.); z(1,1) = 123; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) netcdf.putVar(ncid,varidd,[2 2],[3 3],ones(3,3)); z(3:5,3:5) = 1; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) netcdf.putVar(ncid,varidd,[0 0],[3 5],[2 2],zeros(3,5)); z(1:2:5,1:2:9) = 0; z2 = netcdf.getVar(ncid,varidd); assert(isequal(z,z2)) z2 = netcdf.getVar(ncid,varidf); assert(all(z2 - varf < 1e-5)) vari2 = netcdf.getVar(ncid,varidi); assert(all(vari2 == vari)) netcdf.close(ncid); delete(fname); % test with different dimensions for i = 1:5 nc_test_ndims(i); endfor endfunction function nc_test_ndims(ndims) import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); sz = ones(1,ndims); dimids = ones(1,ndims); for i = 1:ndims sz(i) = 10+i; dimids(i) = netcdf.defDim(ncid,sprintf('dim%g',i),sz(i)); endfor varid = netcdf.defVar(ncid,'double_var','double',dimids); [varname,xtype,dimids,natts] = netcdf.inqVar(ncid,varid); assert(strcmp(varname,'double_var')); for i = 1:ndims [dimname,len] = netcdf.inqDim(ncid,dimids(i)); assert(len == sz(i)); assert(strcmp(dimname,sprintf('dim%g',i))); endfor netcdf.endDef(ncid) if ndims == 1 z = randn(sz,1); else z = randn(sz); endif netcdf.putVar(ncid,varid,z); z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) z2 = netcdf.getVar(ncid,varid,zeros(ndims,1)); assert(z2 == z(1)) start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); z2 = netcdf.getVar(ncid,varid,start,count); idx = scs(start,count); assert(isequal(z2,z(idx{:}))) start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); stride = 2 * ones(1,ndims); z2 = netcdf.getVar(ncid,varid,start,count,stride); idx = scs(start,count,stride); assert(isequal(z2,z(idx{:}))) % put with start start = zeros(1,ndims); netcdf.putVar(ncid,varid,start,123.); z(1) = 123; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) % put with start and count start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); if ndims == 1 data = ones(count,1); else data = ones(count); endif netcdf.putVar(ncid,varid,start,count,data); idx = scs(start,count); z(idx{:}) = 1; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) % put with start, count and stride start = 2 * ones(1,ndims); count = 5 * ones(1,ndims); stride = 2 * ones(1,ndims); if ndims == 1 data = zeros(count,1); else data = zeros(count); endif netcdf.putVar(ncid,varid,start,count,stride,data); idx = scs(start,count,stride); z (idx{:}) = 0; z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) netcdf.close(ncid); delete(fname); endfunction function idx = scs(start,count,stride) idx = cell(length(start),1); if nargin == 2 stride = ones(length(start),1); endif for i = 1:length(start) idx{i} = start(i) + 1 + stride(i) * [0:count(i)-1]; endfor endfunction netcdf-1.0.17/inst/private/test_netcdf_ncwriteschema.m0000644000000000000000000000255514502076114021263 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-unlim.nc']; clear s s.Name = '/'; s.Format = 'classic'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) delete(fname); netcdf-1.0.17/inst/private/test_netcdf_ncwriteschema_chunking.m0000644000000000000000000000272614502076114023151 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-chunk.nc']; clear s s.Name = '/'; s.Format = 'netcdf4'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; s.Variables(1).ChunkSize = [2 3]; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(isequal(info.Variables(1).ChunkSize,s.Variables(1).ChunkSize)); delete(fname); netcdf-1.0.17/inst/private/test_netcdf_ncwriteschema_group.m0000644000000000000000000000444414502076114022476 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-group.nc']; clear s s.Name = '/'; s.Format = 'netcdf4'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp_diff'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; s.Groups(1).Name = 'forecast'; s.Groups(1).Variables(1).Name = 'temp'; s.Groups(1).Variables(1).Dimensions = s.Dimensions; s.Groups(1).Variables(1).Datatype = 'double'; s.Groups(1).Variables(1).Attributes(1).Name = 'long_name'; s.Groups(1).Variables(1).Attributes(1).Value = 'temperature'; s.Groups(1).Attributes(1).Name = 'institution'; s.Groups(1).Attributes(1).Value = 'ULg'; s.Groups(2) = s.Groups(1); s.Groups(2).Name = 'analysis'; ncwriteschema(fname,s); %system(['ncdump -h ' fname]) info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(strcmp(s.Groups(1).Name,info.Groups(1).Name)) z = randn(20,10); ncwrite(fname,'/forecast/temp',z); z2 = ncread(fname,'/forecast/temp'); assert(isequal(z,z2)) ginfo = ncinfo(fname,'forecast'); assert(strcmp(ginfo.Name,'forecast')); % read global attribute of root group val = ncreadatt(fname,'/','institution'); assert(strcmp(val,'GHER, ULg')); % read global attribute of group forecast val = ncreadatt(fname,'/forecast','institution'); assert(strcmp(val,'ULg')); delete(fname); netcdf-1.0.17/inst/private/test_netcdf_ncwriteschema_unlim.m0000644000000000000000000000276514502076114022472 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . fname = [tempname '-octave-netcdf-scheme-unlim.nc']; clear s s.Name = '/'; s.Format = 'classic'; s.Dimensions(1).Name = 'lon'; s.Dimensions(1).Length = 20; s.Dimensions(2).Name = 'lat'; s.Dimensions(2).Length = 10; s.Dimensions(3).Name = 'time'; s.Dimensions(3).Length = Inf; %s.Dimensions(3).Unlimited = true; s.Attributes(1).Name = 'institution'; s.Attributes(1).Value = 'GHER, ULg'; s.Variables(1).Name = 'temp'; s.Variables(1).Dimensions = s.Dimensions; s.Variables(1).Datatype = 'double'; s.Variables(1).Attributes(1).Name = 'long_name'; s.Variables(1).Attributes(1).Value = 'temperature'; ncwriteschema(fname,s); info = ncinfo(fname); assert(strcmp(info.Attributes(1).Name,s.Attributes(1).Name)) assert(strcmp(info.Attributes(1).Value,s.Attributes(1).Value)) assert(info.Dimensions(3).Unlimited); delete(fname); netcdf-1.0.17/inst/private/test_netcdf_scalar_variable.m0000644000000000000000000000167014502076114021536 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_scalar_variable() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); varidd_scalar = netcdf.defVar(ncid,'double_scalar','double',[]); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.17/inst/private/test_netcdf_type.m0000644000000000000000000000433314502076114017404 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_type(nctype,octtype) import_netcdf m = 5; n = 10; fname = [tempname '-octave-netcdf- ' nctype '.nc']; mode = bitor(netcdf.getConstant('NC_CLOBBER'),... netcdf.getConstant('NC_NETCDF4')); ncid = netcdf.create(fname,mode); dimids = [netcdf.defDim(ncid,'lon',m) ... netcdf.defDim(ncid,'time',n)]; varid = netcdf.defVar(ncid,'variable',nctype,dimids); netcdf.endDef(ncid) if strcmp(octtype,'char') z = char(floor(26*rand(m,n)) + 65); testvals = 'a'; testvalv = 'this is a name'; else z = zeros(m,n,octtype); z(:) = randn(m,n); testvals = zeros(1,1,octtype); testvals(:) = rand(1,1); testvalv = zeros(1,5,octtype); testvalv(:) = rand(size(testvalv)); endif netcdf.putVar(ncid,varid,z); z2 = netcdf.getVar(ncid,varid); assert(isequal(z,z2)) netcdf.putAtt(ncid,varid,'scalar_attribute',testvals); val = netcdf.getAtt(ncid,varid,'scalar_attribute'); assert(isequal(val,testvals)); assert(strcmp(class(val),octtype)) [xtype,len] = netcdf.inqAtt(ncid,varid,'scalar_attribute'); assert(xtype == netcdf.getConstant(nctype)) assert(len == numel(testvals)); netcdf.putAtt(ncid,varid,'vector_attribute',testvalv); val = netcdf.getAtt(ncid,varid,'vector_attribute'); assert(isequal(val,testvalv)); assert(strcmp(class(val),octtype)) [xtype,len] = netcdf.inqAtt(ncid,varid,'vector_attribute'); assert(xtype == netcdf.getConstant(nctype)) assert(len == numel(testvalv)); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.17/inst/private/test_netcdf_unlim.m0000644000000000000000000000203114502076114017540 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . import_netcdf % 2 dimensions fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); dimid = netcdf.defDim(ncid,'time',0); varidd = netcdf.defVar(ncid,'time','double',[dimid]); netcdf.close(ncid) ncid = netcdf.open(fname,'NC_NOWRITE'); varid = netcdf.inqVarID(ncid, 'time'); x = netcdf.getVar(ncid,varid); netcdf.close(ncid) netcdf-1.0.17/inst/private/test_netcdf_user_types.m0000644000000000000000000000532014502076114020622 0ustar0000000000000000%% Copyright (C) 2022 John Donoghue %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_netcdf_user_types() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,netcdf.getConstant('NETCDF4')); my_dtype_id = netcdf.defVlen(ncid,"mytype_dtype", 'double'); [dtype_name, dtype_bsize, dtype_typeid] = netcdf.inqVlen(ncid, my_dtype_id); assert(dtype_name, 'mytype_dtype'); #assert(dtype_bsize, 16); assert(dtype_typeid, netcdf.getConstant("NC_DOUBLE")); [dtype_name, dtype_bsize, dtype_typeid, dtype_nfields, dtype_classid] = netcdf.inqUserType(ncid, my_dtype_id); assert(dtype_name, 'mytype_dtype'); #assert(dtype_bsize, 16); assert(dtype_typeid, netcdf.getConstant("NC_DOUBLE")); assert(dtype_nfields, 0); assert(dtype_classid, netcdf.getConstant("NC_VLEN")); my_stype_id = netcdf.defVlen(ncid,"mytype_stype", netcdf.getConstant("NC_USHORT")); [stype_name, stype_bsize, stype_typeid] = netcdf.inqVlen(ncid, my_stype_id); assert(stype_name, 'mytype_stype'); #assert(stype_bsize, 2); assert(stype_typeid, netcdf.getConstant("NC_USHORT")); # create a variable dimid = netcdf.defDim(ncid,'m',5); varid = netcdf.defVar(ncid,'myarray', my_dtype_id, dimid); netcdf.defVarFill(ncid, varid, false, -999); netcdf.putAtt(ncid, varid, "myattr", 1) netcdf.endDef(ncid); # get var info [varname vartype vardimid varattr] = netcdf.inqVar(ncid,varid); assert(varname, "myarray"); assert(vardimid, dimid); assert(vartype, my_dtype_id); netcdf.putVar(ncid, varid, {0, [0.1,0.2],[3,0,4.0,5.0,6.0]}); data = netcdf.getVar(ncid,varid); assert(iscell(data)); assert(length(data), 5); assert(data{1}, [0]); assert(data{2}, [0.1,0.2]); assert(data{3}, [3,0,4.0,5.0,6.0]); assert(data{4}, -999); netcdf.close(ncid); # ncinfo doesnt error a = ncinfo(fname); assert(a.Variables(1).Name, "myarray"); assert(a.Variables(1).Size, 5); assert(a.Variables(1).FillValue, -999); # attr 1 is the fill value, 2nd is my added one assert(a.Variables(1).Attributes(2).Name, "myattr"); assert(a.Variables(1).Attributes(2).Value, 1); delete(fname); endfunction netcdf-1.0.17/inst/private/test_scalar_variable.m0000644000000000000000000000166114502076114020213 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . function test_scalar_variable() import_netcdf fname = [tempname '-octave-netcdf.nc']; ncid = netcdf.create(fname,'NC_CLOBBER'); varidd_scalar = netcdf.defVar(ncid,'double_scalar','double',[]); netcdf.close(ncid); delete(fname); endfunction netcdf-1.0.17/inst/test_netcdf.m0000644000000000000000000000355414502076114014675 0ustar0000000000000000%% Copyright (C) 2013-2022 Alexander Barth %% %% This program is free software; you can redistribute it and/or modify %% it under the terms of the GNU General Public License as published by %% the Free Software Foundation; either version 3 of the License, or %% (at your option) any later version. %% %% This program is distributed in the hope that it will be useful, %% but WITHOUT ANY WARRANTY; without even the implied warranty of %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the %% GNU General Public License for more details. %% %% You should have received a copy of the GNU General Public License %% along with this program; If not, see . ## -*- texinfo -*- ## @deftypefn {} {} test_netcdf ## Function to do a basic test of the netcdf interface ## @end deftypefn function test_netcdf() import_netcdf tests = {'test_netcdf_constant',... 'test_netcdf_create'... 'test_netcdf_low_level_interface'... 'test_netcdf_unlim',... 'test_netcdf_datatypes',... 'test_netcdf_scalar_variable',... 'test_netcdf_attributes',... 'test_netcdf_high_level_interface',... 'test_netcdf_ncwriteschema',... 'test_netcdf_ncwriteschema_unlim',... 'test_netcdf_ncwriteschema_chunking',... 'test_netcdf_ncwriteschema_group',... 'test_netcdf_user_types',... 'bug_47014'... }; maxlen = max(cellfun(@(s) length(s),tests)); libver = netcdf.inqLibVers(); fprintf('Using NetCDF library version "%s"\n',libver) for iindex=1:length(tests); dots = repmat('.',1,maxlen - length(tests{iindex})); fprintf('run %s%s ',tests{iindex},dots); try eval(tests{iindex}); disp(' OK '); catch disp(' FAIL '); disp(lasterr) end_try_catch endfor endfunction %!test %! fprintf ("\n"); %! test_netcdf (); netcdf-1.0.17/octave-netcdf.metainfo.xml0000644000000000000000000000202514502076114016275 0ustar0000000000000000 octave-netcdf www.octave.org-octave.desktop NetCDF Toolkit Octave NetCDF toolkit

Toolkit for Network Common Form (NetCDF) File I/O.

NetCDF scientific http://octave.sourceforge.net/netcdf https://savannah.gnu.org/bugs/?func=additem&group=octave GPL-3.0+ Octave-Forge Community octave-maintainers@gnu.org FSFAP
netcdf-1.0.17/src/0000755000000000000000000000000014502076114012020 5ustar0000000000000000netcdf-1.0.17/src/Makefile.in0000644000000000000000000000175214502076114014072 0ustar0000000000000000 SHELL = @SHELL@ AWK = @AWK@ AWK ?= awk MKOCTFILE = @MKOCTFILE@ -v NC_CONFIG = @NC_CONFIG@ %.oct: %.cc ; $(MKOCTFILE) $< NCHEADER=$(shell $(NC_CONFIG) --includedir)/netcdf.h NETCDF_CPPFLAGS=@NETCDF_CPPFLAGS@ NETCDF_LIBS=@NETCDF_LIBS@ SRC = __netcdf__.cc all: __netcdf__.oct ../PKG_ADD netcdf_constants.h: $(info generating netcdf_constants.h) @if [ -f $(NCHEADER) ]; then \ $(AWK) -f netcdf_constants.awk $(NCHEADER) > netcdf_constants.h; \ elif [ -f /usr/include/netcdf.h ]; then \ $(AWK) -f netcdf_constants.awk /usr/include/netcdf.h > netcdf_constants.h; \ else \ echo >&2 "Couldnt find netcdf.h"; \ false; \ fi; clean: rm -f __netcdf__.o __netcdf__.oct netcdf_constants.h distclean: clean -rm -f oct-alt-includes.h -rm -f config.status config.log config.h -rm -f Makefile realclean: distclean rm -f ../PKG_ADD ../PKG_DEL __netcdf__.oct: $(SRC) netcdf_constants.h $(MKOCTFILE) $(NETCDF_CPPFLAGS) $(SRC) $(NETCDF_LIBS) ../PKG_ADD: $(SRC) $(shell sh ./PKG_ADD.sh) netcdf-1.0.17/src/PKG_ADD.sh0000644000000000000000000000254514502076114013453 0ustar0000000000000000#!/bin/sh # Copyright (C) 2013-2022 Alexander Barth # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; If not, see . if [ "x$AWK" = "x" ]; then AWK=awk fi netcdf_functions=$($AWK -F'[(,]' '/DEFUN_DLD/ { print $2 } ' __netcdf__.cc) outfile_add=../PKG_ADD outfile_del=../PKG_DEL rm -f $outfile_add $outfile_del echo '% File automatically generated by PKG_ADD.sh' > $outfile_add for i in $netcdf_functions; do #echo ${i#netcdf_} cat >> $outfile_add < $outfile_del for i in $netcdf_functions; do #echo ${i#netcdf_} cat >> $outfile_del < // // This program is free software; you can redistribute it and/or modify it under // the terms of the GNU General Public License as published by the Free Software // Foundation; either version 3 of the License, or (at your option) any later // version. // // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more // details. // // You should have received a copy of the GNU General Public License along with // this program; if not, see . #include #include #include #include #include #include #include #include #include #include "config.h" // Octave constructor to hold an array of ints #define NETCDF_INT_ARRAY int32NDArray std::map netcdf_constants; void init() { #include "netcdf_constants.h" } int check_err(int status) { if (status != NC_NOERR) error("%s", nc_strerror(status)); return status; } // convert name to upper-case and add "NC_" prefix if it is missing std::string normalize_ncname(std::string name) { std::string prefix = "NC_"; std::string ncname = name; // to upper case std::transform(ncname.begin(), ncname.end(),ncname.begin(), ::toupper); // add prefix if it is missing if (ncname.substr(0, prefix.size()) != prefix) { ncname = prefix + ncname; } return ncname; } octave_value netcdf_get_constant(octave_value ov) { if (netcdf_constants.empty()) { init(); } if (ov.is_scalar_type()) { return ov.scalar_value(); } std::string name = ov.string_value(); name = normalize_ncname(name); std::map::const_iterator cst = netcdf_constants.find(name); if (cst != netcdf_constants.end ()) { return cst->second; } else { error("unknown netcdf constant: %s",name.c_str()); return octave_value(); } } size_t to_size_t(octave_value ov) { size_t sz; sz = static_cast(ov.uint64_scalar_value()); return sz; } void to_size_t_vector(octave_value ov, int len, size_t *vec) { uint64NDArray tmp = ov.uint64_array_value(); for (int i=0; i(tmp(len-i-1)); } } void to_ptrdiff_t_vector(octave_value ov, int len, ptrdiff_t *vec) { int64NDArray tmp = ov.int64_array_value(); for (int i=0; i(tmp(len-i-1)); } } void start_count_stride(int ncid, int varid, octave_value_list args,int len, int ndims, size_t* start,size_t* count,ptrdiff_t* stride) { OCTAVE_LOCAL_BUFFER (int, dimids, ndims); check_err(nc_inq_vardimid (ncid, varid, dimids)); // default values for start, count and stride // i.e. all variable is loaded for (int i=0; i 2) { if (args(2).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "start"); } to_size_t_vector(args(2),ndims,start); // if start is specified, the default for count is 1 (how odd!) for (int i=0; i 3) { if (args(3).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "count"); } to_size_t_vector(args(3),ndims,count); } // stride argument if (len > 4) { if (args(4).numel() != ndims) { error("number of elements of argument %s should match the number " "of dimension of the netCDF variable", "stride"); } to_ptrdiff_t_vector(args(4),ndims,stride); } } DEFUN_DLD(netcdf_getConstant, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstant(@var{name}) \n\ Returns the value of a NetCDF constant called @var{name}.\n\ @seealso{netcdf_getConstantNames}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } return netcdf_get_constant(args(0)); } DEFUN_DLD(netcdf_getConstantNames, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{value} =} netcdf_getConstantNames() \n\ Returns a list of all constant names.\n\ @end deftypefn\n\ @seealso{netcdf_getConstant}\n") { if (args.length() != 0) { print_usage (); return octave_value(); } if (netcdf_constants.empty()) { init(); } Cell c = Cell (dim_vector(1,netcdf_constants.size())); int i = 0; for (std::map::const_iterator p = netcdf_constants.begin (); p != netcdf_constants.end (); p++) { c(i++) = octave_value(p->first); } return octave_value(c); } DEFUN_DLD(netcdf_inqLibVers, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{vers} =} netcdf_inqLibVers() \n\ Returns the version of the NetCDF library.\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 0) { print_usage (); return octave_value (); } return octave_value(std::string(nc_inq_libvers())); } DEFUN_DLD(netcdf_setDefaultFormat, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{old_format} =} netcdf_setDefaultFormat(@var{format}) \n\ Sets the default format of the NetCDF library and returns the previous default format (as a numeric value). @var{format} can be \n\ \"format_classic\", \"format_64bit\", \"format_netcdf4\" or \"format_netcdf4_classic\". \n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 1) { print_usage (); return octave_value (); } int format = netcdf_get_constant(args(0)).int_value(); int old_format; check_err(nc_set_default_format(format, &old_format)); return octave_value(old_format); } // int nc_set_chunk_cache(size_t size, size_t nelems, float preemption); DEFUN_DLD(netcdf_setChunkCache, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_setChunkCache(@var{size}, @var{nelems}, @var{preemption}) \n\ Sets the default chunk cache settings in the HDF5 library. The settings applies to all files which are subsequently opened or created.\n\ @end deftypefn\n\ @seealso{netcdf_getChunkCache}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } size_t size = to_size_t(args(0)); size_t nelems = to_size_t(args(1)); float preemption = args(2).scalar_value(); check_err(nc_set_chunk_cache(size, nelems, preemption)); return octave_value(); } // int nc_get_chunk_cache(size_t *sizep, size_t *nelemsp, float *preemptionp); DEFUN_DLD(netcdf_getChunkCache, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{size}, @var{nelems}, @var{preemption}] =} netcdf_getChunkCache() \n\ Gets the default chunk cache settings in the HDF5 library. \n\ @end deftypefn\n\ @seealso{netcdf_setChunkCache}\n") { if (args.length() != 0) { print_usage (); return octave_value (); } size_t size; size_t nelems; float preemption; check_err(nc_get_chunk_cache(&size, &nelems, &preemption)); octave_value_list retval; retval(0) = octave_value(size); retval(1) = octave_value(nelems); retval(2) = octave_value(preemption); return retval; } DEFUN_DLD(netcdf_create, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncid} =} netcdf_create(@var{filename},@var{mode}) \n\ Creates the file named @var{filename} in the mode @var{mode} which can have the \n\ following values: \n\ \"clobber\" (overwrite existing files), \n\ \"noclobber\" (prevent to overwrite existing files) \n\ \"64bit_offset\" (use the 64bit-offset format), \n\ \"netcdf4\" (use the NetCDF4, i.e. HDF5 format) or \n\ \"share\" (concurrent reading of the dataset). \n\ @var{mode} can also be the numeric value return by netcdf_getConstant. In the later-case it can be combined with a bitwise-or. \n\ @end deftypefn\n\ @subsubheading Example\n\ @example \n\ mode = bitor(netcdf.getConstant(\"classic_model\"), ...\n\ netcdf.getConstant(\"netcdf4\")); \n\ ncid = netcdf.create(\"test.nc\",mode); \n\ @end example \n\ @seealso{netcdf_close}\n") { if (args.length() != 2) { print_usage (); return octave_value (); } std::string filename = args(0).string_value(); int mode = netcdf_get_constant(args(1)).int_value(); int ncid; check_err(nc_create(filename.c_str(), mode, &ncid)); return octave_value(ncid); } DEFUN_DLD(netcdf_open, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncid} =} netcdf_open(@var{filename},@var{mode}) \n\ Opens the file named @var{filename} in the mode @var{mode}.\n\ @end deftypefn\n\ @seealso{netcdf_close}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } std::string filename = args(0).string_value(); int mode = netcdf_get_constant(args(1)).int_value(); int ncid; check_err(nc_open(filename.c_str(), mode, &ncid)); return octave_value(ncid); } DEFUN_DLD(netcdf_abort, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_abort(@var{ncid}) \n\ Aborts all changes since the last time the dataset entered in define mode.\n\ @end deftypefn\n\ @seealso{netcdf_reDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_abort(ncid)); return octave_value(); } DEFUN_DLD(netcdf_sync, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_sync(@var{ncid}) \n\ Writes all changes to the disk and leaves the file open.\n\ @end deftypefn\n\ @seealso{netcdf_close}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_sync(ncid)); return octave_value(); } DEFUN_DLD(netcdf_setFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{old_mode} =} netcdf_setFill(@var{ncid},@var{fillmode}) \n\ Change the fill mode (@var{fillmode}) of the data set @var{ncid}. The previous value of the fill mode is returned. @var{fillmode} can be either \"fill\" or \"nofill\".\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int fillmode = netcdf_get_constant(args(1)).int_value(); int old_mode; check_err (nc_set_fill (ncid, fillmode, &old_mode)); return octave_value(old_mode); } //int nc_inq (int ncid, int *ndimsp, int *nvarsp, int *ngattsp, // int *unlimdimidp); DEFUN_DLD(netcdf_inq, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{ndims},@var{nvars},@var{ngatts},@var{unlimdimid}] =} netcdf_inq(@var{ncid}) \n\ Return the number of dimension (@var{ndims}), the number of variables (@var{nvars}), the number of global attributes (@var{ngatts}) and the id of the unlimited dimension (@var{unlimdimid}). \n\ If no unlimited dimension is declared -1 is returned. For NetCDF4 files, one should use \n\ the function netcdf_inqUnlimDims as multiple unlimite dimension exists. \n\ @end deftypefn\n\ @seealso{netcdf_inqUnlimDims}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int ndims, nvars, ngatts, unlimdimid; octave_value_list retval; check_err(nc_inq(ncid,&ndims,&nvars,&ngatts,&unlimdimid)); retval(0) = octave_value(ndims); retval(1) = octave_value(nvars); retval(2) = octave_value(ngatts); retval(3) = octave_value(unlimdimid); return retval; } // int nc_inq_unlimdims(int ncid, int *nunlimdimsp, int *unlimdimidsp); DEFUN_DLD(netcdf_inqUnlimDims, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{unlimdimids} =} netcdf_inqUnlimDims(@var{ncid}) \n\ Return the id of all unlimited dimensions of the NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_inq}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int nunlimdims; check_err(nc_inq_unlimdims(ncid, &nunlimdims, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,nunlimdims); NETCDF_INT_ARRAY unlimdimids = NETCDF_INT_ARRAY(dim_vector(1,nunlimdims)); check_err(nc_inq_unlimdims(ncid, &nunlimdims, tmp)); for (int i=0; i < nunlimdims; i++) { unlimdimids(i) = tmp[i]; } return octave_value(unlimdimids); } // int nc_inq_format (int ncid, int *formatp); DEFUN_DLD(netcdf_inqFormat, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{format} =} netcdf_inqFormat(@var{ncid}) \n\ Return the NetCDF format of the dataset @var{ncid}.\n\ Format might be one of the following \n\ \"FORMAT_CLASSIC\", \"FORMAT_64BIT\", \"FORMAT_NETCDF4\" or \"FORMAT_NETCDF4_CLASSIC\" \n\ @end deftypefn\n\ @seealso{netcdf_inq}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int format; check_err(nc_inq_format(ncid, &format)); if (format == NC_FORMAT_CLASSIC) { return octave_value("FORMAT_CLASSIC"); } if (format == NC_FORMAT_64BIT) { return octave_value("FORMAT_64BIT"); } if (format == NC_FORMAT_NETCDF4) { return octave_value("FORMAT_NETCDF4"); } return octave_value("FORMAT_NETCDF4_CLASSIC"); } // int nc_def_dim (int ncid, const char *name, size_t len, int *dimidp); DEFUN_DLD(netcdf_defDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimid} =} netcdf_defDim(@var{ncid},@var{name},@var{len}) \n\ Define the dimension with the name @var{name} and the length @var{len} in the dataset @var{ncid}. The id of the dimension is returned.\n\ @end deftypefn\n\ @seealso{netcdf_defVar}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); size_t len = to_size_t(args(2)); int dimid; check_err(nc_def_dim (ncid, name.c_str(), len, &dimid)); return octave_value(dimid); } // int nc_rename_dim(int ncid, int dimid, const char* name); DEFUN_DLD(netcdf_renameDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameDim(@var{ncid},@var{dimid},@var{name}) \n\ Renames the dimension with the id @var{dimid} in the data set @var{ncid}. @var{name} is the new name of the dimension.\n\ @end deftypefn\n\ @seealso{netcdf_defDim}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int dimid = args(1).scalar_value(); std::string name = args(2).string_value(); check_err(nc_rename_dim (ncid, dimid, name.c_str())); return octave_value(); } // int nc_def_var (int ncid, const char *name, nc_type xtype, // int ndims, const int dimids[], int *varidp); DEFUN_DLD(netcdf_defVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVar(@var{ncid},@var{name},@var{xtype},@var{dimids}) \n\ Defines a variable with the name @var{name} in the dataset @var{ncid}. @var{xtype} can be \"byte\", \"ubyte\", \"short\", \"ushort\", \"int\", \"uint\", \"int64\", \"uint64\", \"float\", \"double\", \"char\" or the corresponding number as returned by netcdf_getConstant. The parameter @var{dimids} define the ids of the dimension. For scalar this parameter is the empty array ([]). The variable id is returned. \n\ @end deftypefn\n\ @seealso{netcdf_open,netcdf_defDim}\n") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value (); int xtype = netcdf_get_constant(args(2)).int_value();; Array tmp; if (!args(3).OV_ISEMPTY()) { tmp = args(3).vector_value (); } OCTAVE_LOCAL_BUFFER (int, dimids, tmp.numel()); for (int i = 0; i < tmp.numel(); i++) { dimids[i] = tmp(tmp.numel()-i-1); } int varid; check_err(nc_def_var (ncid, name.c_str(), xtype, tmp.numel(), dimids, &varid)); return octave_value(varid); } // int nc_rename_var(int ncid, int varid, const char* name); DEFUN_DLD(netcdf_renameVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameVar(@var{ncid},@var{varid},@var{name}) \n\ Renames the variable with the id @var{varid} in the data set @var{ncid}. @var{name} is the new name of the variable.\n\ @end deftypefn\n\ @seealso{netcdf_defVar}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); check_err(nc_rename_var (ncid, varid, name.c_str())); return octave_value(); } // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value); DEFUN_DLD(netcdf_defVarFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarFill(@var{ncid},@var{varid},@var{no_fill},@var{fillvalue}) \n\ Define the fill-value settings of the NetCDF variable @var{varid}.\n\ If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\ @end deftypefn\n\ @seealso{netcdf_inqVarFill}\n") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int no_fill = args(2).scalar_value(); // boolean octave_value fill_value = args(3); nc_type xtype, basetype; check_err(nc_inq_vartype (ncid, varid, &xtype)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); } } if (xtype >= NC_FIRSTUSERTYPEID) { switch (basetype) { #define OV_NETCDF_DEF_VARV_FILL(netcdf_type,c_type,method) \ case netcdf_type: \ { \ c_type val; \ memcpy(&val, fill_value.method().fortran_vec(), sizeof(val)); \ nc_vlen_t vlendata = {1,(void*)&val}; \ check_err(nc_def_var_fill(ncid, varid, no_fill, &vlendata)); \ break; \ } OV_NETCDF_DEF_VARV_FILL(NC_BYTE, signed char, int8_array_value) OV_NETCDF_DEF_VARV_FILL(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_DEF_VARV_FILL(NC_SHORT, short, int16_array_value) OV_NETCDF_DEF_VARV_FILL(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_DEF_VARV_FILL(NC_INT, int, int32_array_value) OV_NETCDF_DEF_VARV_FILL(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_DEF_VARV_FILL(NC_INT64, long long, int64_array_value) OV_NETCDF_DEF_VARV_FILL(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_DEF_VARV_FILL(NC_FLOAT, float, float_array_value) OV_NETCDF_DEF_VARV_FILL(NC_DOUBLE,double,array_value) OV_NETCDF_DEF_VARV_FILL(NC_CHAR, char, char_array_value) } } else { switch (xtype) { #define OV_NETCDF_DEF_VAR_FILL(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_def_var_fill(ncid, varid, no_fill, fill_value.method().fortran_vec())); \ break; \ } OV_NETCDF_DEF_VAR_FILL(NC_BYTE, signed char, int8_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_DEF_VAR_FILL(NC_SHORT, short, int16_array_value) OV_NETCDF_DEF_VAR_FILL(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_DEF_VAR_FILL(NC_INT, int, int32_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_DEF_VAR_FILL(NC_INT64, long long, int64_array_value) OV_NETCDF_DEF_VAR_FILL(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_DEF_VAR_FILL(NC_FLOAT, float, float_array_value) OV_NETCDF_DEF_VAR_FILL(NC_DOUBLE,double,array_value) OV_NETCDF_DEF_VAR_FILL(NC_CHAR, char, char_array_value) } } return octave_value(); } // int nc_def_var_fill(int ncid, int varid, int no_fill, void *fill_value); DEFUN_DLD(netcdf_inqVarFill, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{no_fill},@var{fillvalue}] = } netcdf_inqVarFill(@var{ncid},@var{varid}) \n\ Determines the fill-value settings of the NetCDF variable @var{varid}.\n\ If @var{no_fill} is false, then the values between no-contiguous writes are filled with the value @var{fill_value}. This is disabled by setting @var{no_fill} to true.\n\ @end deftypefn\n\ @seealso{netcdf_defVarFill}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int no_fill; nc_type xtype, basetype; octave_value_list retval; octave_value data; check_err(nc_inq_vartype (ncid, varid, &xtype)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); } } if (xtype >= NC_FIRSTUSERTYPEID) { switch (basetype) { #define OV_NETCDF_INQ_VARV_FILL(netcdf_type,c_type) \ case netcdf_type: \ { \ c_type val = 0; \ nc_vlen_t vlendata = {1,(void*)&val}; \ check_err(nc_inq_var_fill(ncid, varid, &no_fill,&vlendata)); \ Array< c_type > fill_value = Array< c_type >(dim_vector(1,1)); \ memcpy(fill_value.fortran_vec(), vlendata.p, sizeof(c_type)); \ data = octave_value(fill_value); \ break; \ } OV_NETCDF_INQ_VARV_FILL(NC_BYTE,octave_int8) OV_NETCDF_INQ_VARV_FILL(NC_UBYTE,octave_uint8) OV_NETCDF_INQ_VARV_FILL(NC_SHORT,octave_int16) OV_NETCDF_INQ_VARV_FILL(NC_USHORT,octave_uint16) OV_NETCDF_INQ_VARV_FILL(NC_INT,octave_int32) OV_NETCDF_INQ_VARV_FILL(NC_UINT,octave_uint32) OV_NETCDF_INQ_VARV_FILL(NC_INT64,octave_int64) OV_NETCDF_INQ_VARV_FILL(NC_UINT64,octave_uint64) OV_NETCDF_INQ_VARV_FILL(NC_FLOAT,float) OV_NETCDF_INQ_VARV_FILL(NC_DOUBLE,double) OV_NETCDF_INQ_VARV_FILL(NC_CHAR,char) } } else { switch (xtype) { #define OV_NETCDF_INQ_VAR_FILL(netcdf_type,c_type) \ case netcdf_type: \ { \ Array< c_type > fill_value = Array< c_type >(dim_vector(1,1)); \ check_err(nc_inq_var_fill(ncid, varid, &no_fill, \ fill_value.fortran_vec())); \ data = octave_value(fill_value); \ break; \ } OV_NETCDF_INQ_VAR_FILL(NC_BYTE,octave_int8) OV_NETCDF_INQ_VAR_FILL(NC_UBYTE,octave_uint8) OV_NETCDF_INQ_VAR_FILL(NC_SHORT,octave_int16) OV_NETCDF_INQ_VAR_FILL(NC_USHORT,octave_uint16) OV_NETCDF_INQ_VAR_FILL(NC_INT,octave_int32) OV_NETCDF_INQ_VAR_FILL(NC_UINT,octave_uint32) OV_NETCDF_INQ_VAR_FILL(NC_INT64,octave_int64) OV_NETCDF_INQ_VAR_FILL(NC_UINT64,octave_uint64) OV_NETCDF_INQ_VAR_FILL(NC_FLOAT,float) OV_NETCDF_INQ_VAR_FILL(NC_DOUBLE,double) OV_NETCDF_INQ_VAR_FILL(NC_CHAR,char) } } //cout << "xtype3 " << xtype << " " << NC_DOUBLE << std::endl; retval(0) = octave_value(no_fill); retval(1) = data; return retval; } //nc_def_var_deflate(int ncid, int varid, int shuffle, int deflate, // int deflate_level); DEFUN_DLD(netcdf_defVarDeflate, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarDeflate (@var{ncid},@var{varid},@var{shuffle},@var{deflate},@var{deflate_level}) \n\ Define the compression settings NetCDF variable @var{varid}.\n\ If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\ @end deftypefn\n\ @seealso{netcdf_inqVarDeflate}\n") { if (args.length() != 5) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int shuffle = args(2).scalar_value(); // boolean int deflate = args(3).scalar_value(); // boolean int deflate_level = args(4).scalar_value(); check_err(nc_def_var_deflate (ncid, varid, shuffle, deflate, deflate_level)); return octave_value(); } //nc_inq_var_deflate(int ncid, int varid, int *shufflep, // int *deflatep, int *deflate_levelp); DEFUN_DLD(netcdf_inqVarDeflate, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{shuffle},@var{deflate},@var{deflate_level}] = } netcdf_inqVarDeflate (@var{ncid},@var{varid}) \n\ Determines the compression settings NetCDF variable @var{varid}.\n\ If @var{deflate} is true, then the variable is compressed. The compression level @var{deflate_level} is an integer between 0 (no compression) and 9 (maximum compression).\n\ @end deftypefn\n\ @seealso{netcdf_defVarDeflate}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int shuffle, deflate, deflate_level; octave_value_list retval; int format; check_err(nc_inq_format(ncid, &format)); // nc_inq_var_deflate returns garbage for classic or 64bit files if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) { shuffle = 0; deflate = 0; deflate_level = 0; } else { check_err(nc_inq_var_deflate(ncid, varid, &shuffle,&deflate,&deflate_level)); } retval(0) = octave_value(shuffle); retval(1) = octave_value(deflate); retval(2) = octave_value(deflate_level); return retval; } //int nc_def_var_chunking(int ncid, int varid, int storage, size_t *chunksizesp); //chunksizes can be ommited if storage is \"CONTIGUOUS\" DEFUN_DLD(netcdf_defVarChunking, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarChunking (@var{ncid},@var{varid},@var{storage},@var{chunkSizes}) \n\ Define the chunking settings of NetCDF variable @var{varid}.\n\ If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\ If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\ @end deftypefn\n\ @seealso{netcdf_inqVarChunking}\n") { if (args.length() != 3 && args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string storagestr = args(2).string_value(); int storage; std::transform(storagestr.begin(), storagestr.end(),storagestr.begin(), ::toupper); if (storagestr == "CHUNKED") { storage = NC_CHUNKED; } else if (storagestr == "CONTIGUOUS") { storage = NC_CONTIGUOUS; } else { error("unknown storage %s",storagestr.c_str()); return octave_value(); } if (args.length() == 4) { OCTAVE_LOCAL_BUFFER (size_t, chunksizes, args(3).numel()); to_size_t_vector(args(3), args(3).numel(),chunksizes); check_err(nc_def_var_chunking(ncid, varid, storage, chunksizes)); } else { check_err(nc_def_var_chunking(ncid, varid, storage, NULL)); } return octave_value(); } //int nc_inq_var_chunking(int ncid, int varid, int *storagep, size_t *chunksizesp); DEFUN_DLD(netcdf_inqVarChunking, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{storage},@var{chunkSizes}] = } netcdf_inqVarChunking (@var{ncid},@var{varid}) \n\ Determines the chunking settings of NetCDF variable @var{varid}.\n\ If @var{storage} is the string \"chunked\", the variable is stored by chunk of the size @var{chunkSizes}.\n\ If @var{storage} is the string \"contiguous\", the variable is stored in a contiguous way.\n\ @end deftypefn\n\ @seealso{netcdf_defVarChunking}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int storage; int ndims; octave_value_list retval; check_err(nc_inq_varndims (ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (size_t, chunksizes, ndims); check_err(nc_inq_var_chunking(ncid, varid, &storage, chunksizes)); if (storage == NC_CHUNKED) { retval(0) = octave_value("chunked"); // should use uint32NDArray on 32-bit? uint64NDArray chunkSizes = uint64NDArray(dim_vector(1,ndims)); for (int i = 0; i < ndims; i++) { chunkSizes(ndims-i-1) = chunksizes[i]; } retval(1) = octave_value(chunkSizes); } else { retval(0) = octave_value("contiguous"); retval(1) = octave_value(Array()); } return retval; } // nc_def_var_fletcher32(int ncid, int varid, int checksum); DEFUN_DLD(netcdf_defVarFletcher32, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_defVarFletcher32(@var{ncid},@var{varid},@var{checksum}) \n\ Defines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If @var{checksum} is the string \"FLETCHER32\", then fletcher32 checksums will be turned on for this variable. If @var{checksum} is \"NOCHECKSUM\", then checksums will be disabled. \n\ @end deftypefn\n\ @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int checksum = netcdf_get_constant(args(2)).int_value(); check_err(nc_def_var_fletcher32(ncid, varid, checksum)); return octave_value(); } DEFUN_DLD(netcdf_inqVarFletcher32, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{checksum} =} netcdf_inqVarFletcher32(@var{ncid},@var{varid}) \n\ Determines the checksum settings of the variable with the id @var{varid} in the data set @var{ncid}. If fletcher32 checksums is turned on for this variable, then @var{checksum} is the string \"FLETCHER32\". Otherwise it is the string \"NOCHECKSUM\". \n\ @end deftypefn\n\ @seealso{netcdf_defVar,netcdf_inqVarFletcher32}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int checksum; check_err(nc_inq_var_fletcher32(ncid, varid, &checksum)); if (checksum == NC_FLETCHER32) { return octave_value("FLETCHER32"); } else { return octave_value("NOCHECKSUM"); } } DEFUN_DLD(netcdf_endDef, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_endDef (@var{ncid}) \n\ Leaves define-mode of NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_reDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_enddef (ncid)); return octave_value(); } DEFUN_DLD(netcdf_reDef, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_reDef (@var{ncid}) \n\ Enter define-mode of NetCDF file @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_endDef}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_redef (ncid)); return octave_value(); } // http://www.unidata.ucar.edu/software/netcdf/docs/netcdf-c/nc_005fput_005fvar_005f-type.html#nc_005fput_005fvar_005f-type DEFUN_DLD(netcdf_putVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{data}) \n\ @deftypefnx {Loadable Function} {} netcdf_putVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride},@var{data}) \n\ Put data in a NetCDF variable.\n\ The data @var{data} is stored in the variable @var{varid} of the NetCDF file @var{ncid}. \n\ @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\ @var{count} is the number of elements of to be written along each dimension (default all elements)\n\ and @var{stride} is the sampling interval.\n\ @end deftypefn\n\ @seealso{netcdf_endDef}\n") { if (args.length() < 3 || args.length() > 6) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value (); octave_value data = args(args.length()-1); int ndims; check_err(nc_inq_varndims (ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (size_t, start, ndims); OCTAVE_LOCAL_BUFFER (size_t, count, ndims); OCTAVE_LOCAL_BUFFER (ptrdiff_t, stride, ndims); nc_type xtype, basetype; check_err(nc_inq_vartype (ncid, varid, &xtype)); //int sliced_numel = tmp.numel(); if (xtype >= NC_FIRSTUSERTYPEID) { size_t datasz=0; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant write it", classid); return octave_value(); } if (!data.OV_ISCELL()) { error ("Expected data to be cell array"); return octave_value(); } } else { basetype = xtype; } start_count_stride(ncid, varid, args, args.length()-1, ndims, start, count, stride); // check if count matched size(data) if (xtype >= NC_FIRSTUSERTYPEID) { Cell ar = data.cell_value(); switch (basetype) { #define OV_NETCDF_PUT_VARA(netcdf_type,c_type,method) \ case netcdf_type: \ { \ for(octave_idx_type i=0;i v = ar(i).method(); \ nc_vlen_t ncl; \ ncl.len = v.numel(); \ ncl.p = (c_type*)v.fortran_vec(); \ count[0] = 1; \ check_err(nc_put_vars (ncid, varid, start, count, stride, &ncl)); \ start[0] = ++(start[0]); \ } \ break; \ } OV_NETCDF_PUT_VARA(NC_BYTE, octave_int8, int8_array_value) OV_NETCDF_PUT_VARA(NC_UBYTE, octave_uint8, uint8_array_value) OV_NETCDF_PUT_VARA(NC_SHORT, octave_int16, int16_array_value) OV_NETCDF_PUT_VARA(NC_USHORT, octave_uint16, uint16_array_value) OV_NETCDF_PUT_VARA(NC_INT, octave_int32, int32_array_value) OV_NETCDF_PUT_VARA(NC_UINT, octave_uint32, uint32_array_value) OV_NETCDF_PUT_VARA(NC_INT64, octave_int64, int64_array_value) OV_NETCDF_PUT_VARA(NC_UINT64, octave_uint64, uint64_array_value) OV_NETCDF_PUT_VARA(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_VARA(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_VARA(NC_CHAR, char, char_array_value) default: { error("unknown type %d" ,basetype); } } } else { switch (xtype) { #define OV_NETCDF_PUT_VAR(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_put_vars (ncid, varid, start, count, stride, (c_type*)data.method().fortran_vec())); \ break; \ } OV_NETCDF_PUT_VAR(NC_BYTE, signed char, int8_array_value) OV_NETCDF_PUT_VAR(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_PUT_VAR(NC_SHORT, short, int16_array_value) OV_NETCDF_PUT_VAR(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_PUT_VAR(NC_INT, int, int32_array_value) OV_NETCDF_PUT_VAR(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_PUT_VAR(NC_INT64, long long, int64_array_value) OV_NETCDF_PUT_VAR(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_PUT_VAR(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_VAR(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_VAR(NC_CHAR, char, char_array_value) default: { error("unknown type %d" ,xtype); } } } return octave_value(); } DEFUN_DLD(netcdf_getVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count}) \n\ @deftypefnx {Loadable Function} {@var{data} =} netcdf_getVar (@var{ncid},@var{varid},@var{start},@var{count},@var{stride}) \n\ Get the data from a NetCDF variable.\n\ The data @var{data} is loaded from the variable @var{varid} of the NetCDF file @var{ncid}. \n\ @var{start} is the start index of each dimension (0-based and defaults to a vector of zeros), \n\ @var{count} is the number of elements of to be written along each dimension (default all elements)\n\ and @var{stride} is the sampling interval.\n\ @end deftypefn\n\ @seealso{netcdf_putVar}\n") { if (args.length() < 2 || args.length() > 5) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value (); int ndims; octave_value data; nc_type xtype, basetype; check_err(nc_inq_vartype (ncid, varid, &xtype)); check_err(nc_inq_varndims (ncid, varid, &ndims)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); return octave_value(); } } //std::cout << "ndims " << ndims << std::endl; OCTAVE_LOCAL_BUFFER (size_t, start, ndims); OCTAVE_LOCAL_BUFFER (size_t, count, ndims); OCTAVE_LOCAL_BUFFER (ptrdiff_t, stride, ndims); int sz = 1; dim_vector sliced_dim_vector; if (ndims < 2) { sliced_dim_vector.resize(2); sliced_dim_vector(0) = 1; sliced_dim_vector(1) = 1; } else { sliced_dim_vector.resize(ndims); } start_count_stride(ncid, varid, args, args.length(), ndims, start, count, stride); // std::cout << "count " << count[0] << std::endl; // std::cout << "start " << start[0] << std::endl; // std::cout << "stide " << stride[0] << std::endl; // total size sz for (int i=0; i arr = Array < float >(sliced_dim_vector); // float* time; // time = (float*)malloc(10 * sizeof(float)); // check_err(nc_get_vars(ncid, varid, start, count, stride, time)); // data = octave_value(arr); // return data; // user type if (xtype >= NC_FIRSTUSERTYPEID) { switch (basetype) { #define OV_NETCDF_GET_VARA_CASE(netcdf_type,c_type) \ case netcdf_type: \ { \ Cell arr = Cell(sliced_dim_vector); \ /* necessary for netcdf 4.1.3 */ \ if (sz > 0) { \ OCTAVE_LOCAL_BUFFER (nc_vlen_t, vlendata, sz); \ check_err(nc_get_vars(ncid, varid, start, count, stride, vlendata)); \ dim_vector dv; \ dv.resize(2); \ for (int vi=0; vi a = Array < c_type >(dv); \ memcpy(a.fortran_vec(), vlendata[vi].p, vlendata[vi].len*sizeof(c_type)); \ arr(vi) = a; \ } \ nc_free_vlens(sz, vlendata); \ } else { \ warning_with_id("netcdf:variable-size-zero", "variable size 0 or currently too large to process"); \ } \ data = octave_value(arr); \ break; \ } OV_NETCDF_GET_VARA_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_VARA_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_VARA_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_VARA_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_VARA_CASE(NC_INT,octave_int32) OV_NETCDF_GET_VARA_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_VARA_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_VARA_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_VARA_CASE(NC_FLOAT,float) OV_NETCDF_GET_VARA_CASE(NC_DOUBLE,double) OV_NETCDF_GET_VARA_CASE(NC_CHAR, char) default: { error("unknown type %d" ,xtype); } } } else { switch (xtype) { #define OV_NETCDF_GET_VAR_CASE(netcdf_type,c_type) \ case netcdf_type: \ { \ Array < c_type > arr = Array < c_type >(sliced_dim_vector); \ /* necessary for netcdf 4.1.3 */ \ if (sz > 0) { \ check_err(nc_get_vars(ncid, varid, start, count, stride, arr.fortran_vec())); \ } else { \ warning_with_id("netcdf:variable-size-zero", "variable size 0 or currently too large to process"); \ } \ data = octave_value(arr); \ break; \ } OV_NETCDF_GET_VAR_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_VAR_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_VAR_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_VAR_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_VAR_CASE(NC_INT,octave_int32) OV_NETCDF_GET_VAR_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_VAR_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_VAR_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_VAR_CASE(NC_FLOAT,float) OV_NETCDF_GET_VAR_CASE(NC_DOUBLE,double) OV_NETCDF_GET_VAR_CASE(NC_CHAR, char) default: { error("unknown type %d" ,xtype); } } } return data; } DEFUN_DLD(netcdf_close, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_close(@var{ncid}) \n\ Close the NetCDF file with the id @var{ncid}.\n\ @end deftypefn\n\ @seealso{netcdf_open}\n") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); check_err(nc_close(ncid)); return octave_value (); } // int nc_inq_attname(int ncid, int varid, int attnum, char *name); DEFUN_DLD(netcdf_inqAttName, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqAttName (@var{ncid},@var{varid},@var{attnum}) \n\ Get the name of a NetCDF attribute.\n\ This function returns the name of the attribute with the id @var{attnum} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); int attnum = args(2).scalar_value(); char name[NC_MAX_NAME+1]; check_err(nc_inq_attname(ncid, varid, attnum, name)); return octave_value(std::string(name)); } DEFUN_DLD(netcdf_inqAttID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{attnum} =} netcdf_inqAttID(@var{ncid},@var{varid},@var{attname}) \n\ Return the attribute id @var{attnum} of the attribute named @var{attname} of the variable @var{varid} in the dataset @var{ncid}. \n\ For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); int attnum; check_err (nc_inq_attid (ncid, varid, attname.c_str(), &attnum)); return octave_value(attnum); } //int nc_inq_att (int ncid, int varid, const char *name, // nc_type *xtypep, size_t *lenp); DEFUN_DLD(netcdf_inqAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{xtype},@var{len}] = } netcdf_inqAtt(@var{ncid},@var{varid},@var{name}) \n\ Get attribute type and length.\n\ @seealso{netcdf_inqAttName}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); int xtype; size_t len; octave_value_list retval; check_err(nc_inq_att(ncid, varid, name.c_str(), &xtype, &len)); retval(0) = octave_value(xtype); retval(1) = octave_value(len); return retval; } DEFUN_DLD(netcdf_getAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{data} =} netcdf_getAtt (@var{ncid},@var{varid},@var{name}) \n\ Get the value of a NetCDF attribute.\n\ This function returns the value of the attribute called @var{name} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_putAtt}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); nc_type xtype, basetype; size_t len; octave_value data; check_err(nc_inq_att(ncid, varid, attname.c_str(), &xtype, &len)); if (xtype < NC_FIRSTUSERTYPEID) basetype = xtype; else { size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, xtype, NULL, &datasz, &basetype, &nfields, &classid)); if (classid != NC_VLEN) { warning ("Non vlen class user variable '%d' - cant read it", classid); } } #define OV_NETCDF_GET_ATT_CASE(netcdf_type,c_type) \ if (basetype == netcdf_type) \ { \ Array< c_type > arr = Array< c_type >(dim_vector(1,len)); \ check_err(nc_get_att(ncid, varid, attname.c_str(), arr.fortran_vec())); \ data = octave_value(arr); \ } #define OV_NETCDF_GETVLEN_ATT_CASE(netcdf_type,c_type) \ if(basetype == netcdf_type) \ { \ OCTAVE_LOCAL_BUFFER (nc_vlen_t, vlendata, len); \ Array< c_type > arr = Array< c_type >(dim_vector(1,len)); \ check_err(nc_get_att(ncid, varid, attname.c_str(), vlendata)); \ for (int vi=0; vi= NC_FIRSTUSERTYPEID) { OV_NETCDF_GETVLEN_ATT_CASE(NC_BYTE,octave_int8) OV_NETCDF_GETVLEN_ATT_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GETVLEN_ATT_CASE(NC_SHORT,octave_int16) OV_NETCDF_GETVLEN_ATT_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GETVLEN_ATT_CASE(NC_INT,octave_int32) OV_NETCDF_GETVLEN_ATT_CASE(NC_UINT,octave_uint32) OV_NETCDF_GETVLEN_ATT_CASE(NC_INT64,octave_int64) OV_NETCDF_GETVLEN_ATT_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GETVLEN_ATT_CASE(NC_FLOAT,float) OV_NETCDF_GETVLEN_ATT_CASE(NC_DOUBLE,double) OV_NETCDF_GETVLEN_ATT_CASE(NC_CHAR, char) } else { OV_NETCDF_GET_ATT_CASE(NC_BYTE,octave_int8) OV_NETCDF_GET_ATT_CASE(NC_UBYTE,octave_uint8) OV_NETCDF_GET_ATT_CASE(NC_SHORT,octave_int16) OV_NETCDF_GET_ATT_CASE(NC_USHORT,octave_uint16) OV_NETCDF_GET_ATT_CASE(NC_INT,octave_int32) OV_NETCDF_GET_ATT_CASE(NC_UINT,octave_uint32) OV_NETCDF_GET_ATT_CASE(NC_INT64,octave_int64) OV_NETCDF_GET_ATT_CASE(NC_UINT64,octave_uint64) OV_NETCDF_GET_ATT_CASE(NC_FLOAT,float) OV_NETCDF_GET_ATT_CASE(NC_DOUBLE,double) OV_NETCDF_GET_ATT_CASE(NC_CHAR, char) } return data; } DEFUN_DLD(netcdf_putAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_putAtt (@var{ncid},@var{varid},@var{name},@var{data}) \n\ Defines a NetCDF attribute.\n\ This function defines the attribute called @var{name} of the variable \n\ @var{varid} in the NetCDF file @var{ncid}. The value of the attribute will be @var{data}. \n\ For global attributes @var{varid} can be \n\ netcdf_getConstant(\"global\").\n\ @seealso{netcdf_getAtt}\n\ @end deftypefn") { if (args.length() != 4) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string attname = args(2).string_value(); octave_value data = args(3); nc_type xtype; // get matching netcdf type if (data.is_string()) xtype = NC_CHAR; else if (data.is_int8_type()) xtype = NC_BYTE; else if (data.is_uint8_type()) xtype = NC_UBYTE; else if (data.is_int16_type()) xtype = NC_SHORT; else if (data.is_uint16_type()) xtype = NC_USHORT; else if (data.is_int32_type()) xtype = NC_INT; else if (data.is_uint32_type()) xtype = NC_UINT; else if (data.is_int64_type()) xtype = NC_INT64; else if (data.is_uint64_type()) xtype = NC_UINT64; else if (data.is_single_type()) xtype = NC_FLOAT; else xtype = NC_DOUBLE; //cout << "xtype " << xtype << endl; size_t len = data.numel(); switch (xtype) { #define OV_NETCDF_PUT_ATT(netcdf_type,c_type,method) \ case netcdf_type: \ { \ check_err(nc_put_att (ncid, varid, attname.c_str(), xtype, len, data.method().fortran_vec())); \ break; \ } OV_NETCDF_PUT_ATT(NC_BYTE, signed char, int8_array_value) OV_NETCDF_PUT_ATT(NC_UBYTE, unsigned char, uint8_array_value) OV_NETCDF_PUT_ATT(NC_SHORT, short, int16_array_value) OV_NETCDF_PUT_ATT(NC_USHORT, unsigned short, uint16_array_value) OV_NETCDF_PUT_ATT(NC_INT, int, int32_array_value) OV_NETCDF_PUT_ATT(NC_UINT, unsigned int, uint32_array_value) OV_NETCDF_PUT_ATT(NC_INT64, long long, int64_array_value) OV_NETCDF_PUT_ATT(NC_UINT64, unsigned long long, uint64_array_value) OV_NETCDF_PUT_ATT(NC_FLOAT, float, float_array_value) OV_NETCDF_PUT_ATT(NC_DOUBLE,double,array_value) OV_NETCDF_PUT_ATT(NC_CHAR, char, char_array_value) } /* check_err(nc_put_att (int ncid, int varid, const char *name, nc_type xtype, size_t len, const void *op));*/ return octave_value(); } DEFUN_DLD(netcdf_copyAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_copyAtt (@var{ncid},@var{varid},@var{name},@var{ncid_out},@var{varid_out}) \n\ Copies the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid} \n\ to the variable @var{varid_out} in the data set @var{ncid_out}. \n\ To copy a global attribute use netcdf_getConstant(\"global\") for @var{varid} or @var{varid_out}.\n\ @seealso{netcdf_getAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 5) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); int ncid_out = args(3).scalar_value(); int varid_out = args(4).scalar_value(); check_err (nc_copy_att (ncid, varid, name.c_str(), ncid_out, varid_out)); return octave_value (); } DEFUN_DLD(netcdf_renameAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_renameAtt(@var{ncid},@var{varid},@var{old_name},@var{new_name}) \n\ Renames the attribute named @var{old_name} of the variable @var{varid} in the data set @var{ncid}. @var{new_name} is the new name of the attribute.\n\ To rename a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\ @seealso{netcdf_copyAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 4) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string old_name = args(2).string_value(); std::string new_name = args(3).string_value(); check_err(nc_rename_att (ncid, varid, old_name.c_str(), new_name.c_str())); return octave_value (); } DEFUN_DLD(netcdf_delAtt, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {} netcdf_delAtt(@var{ncid},@var{varid},@var{name}) \n\ Deletes the attribute named @var{name} of the variable @var{varid} in the data set @var{ncid}. \n\ To delete a global attribute use netcdf_getConstant(\"global\") for @var{varid}.\n\ @seealso{netcdf_defAtt,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 3) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); std::string name = args(2).string_value(); check_err(nc_del_att (ncid, varid, name.c_str())); return octave_value (); } DEFUN_DLD(netcdf_inqVarID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_inqVarID (@var{ncid},@var{name}) \n\ Return the id of a variable based on its name.\n\ @seealso{netcdf_defVar,netcdf_inqVarIDs}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string varname = args(1).string_value(); int varid; check_err(nc_inq_varid(ncid,varname.c_str(), &varid)); return octave_value(varid); } DEFUN_DLD(netcdf_inqVarIDs, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varids} = } netcdf_inqVarID (@var{ncid}) \n\ Return all variable ids.\n\ This functions returns all variable ids in a NetCDF file or NetCDF group.\n\ @seealso{netcdf_inqVarID}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value (); } int ncid = args(0).scalar_value(); int nvars; check_err(nc_inq_varids(ncid, &nvars, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,nvars); NETCDF_INT_ARRAY varids = NETCDF_INT_ARRAY(dim_vector(1,nvars)); check_err(nc_inq_varids(ncid, &nvars, tmp)); for (int i=0; i < nvars; i++) { varids(i) = tmp[i]; } return octave_value(varids); } DEFUN_DLD(netcdf_inqVar, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{name},@var{nctype},@var{dimids},@var{nattr}] = } netcdf_inqVar (@var{ncid},@var{varid}) \n\ Inquires information about a NetCDF variable.\n\ This functions returns the @var{name}, the NetCDF type @var{nctype}, an array of dimension ids \n\ @var{dimids} and the number of attributes @var{nattr} of the NetCDF variable. @var{nctype} in an \n\ integer corresponding NetCDF constants.\n\ @seealso{netcdf_inqVarID,netcdf_getConstant}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int varid = args(1).scalar_value(); char name[NC_MAX_NAME+1]; int ndims, natts; nc_type xtype; octave_value_list retval; check_err(nc_inq_varndims(ncid, varid, &ndims)); OCTAVE_LOCAL_BUFFER (int, dimids, ndims); check_err(nc_inq_var(ncid, varid, name, &xtype, &ndims, dimids, &natts)); retval(0) = octave_value(std::string(name)); retval(1) = octave_value(xtype); // copy output arguments Array dimids_ = Array(dim_vector(1,ndims)); for (int i = 0; i < ndims; i++) { dimids_(i) = dimids[ndims-i-1]; } retval(2) = octave_value(dimids_); retval(3) = octave_value(natts); return retval; } DEFUN_DLD(netcdf_inqDim, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{name},@var{length}] =} netcdf_inqDim(@var{ncid},@var{dimid}) \n\ Returns the name and length of a NetCDF dimension.\n\ @seealso{netcdf_inqDimID}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int dimid = args(1).scalar_value(); octave_value_list retval; char name[NC_MAX_NAME+1]; size_t length; check_err(nc_inq_dim(ncid, dimid, name, &length)); retval(0) = octave_value(std::string(name)); retval(1) = octave_value(length); return retval; } DEFUN_DLD(netcdf_inqDimID, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimid} =} netcdf_inqDimID(@var{ncid},@var{dimname}) \n\ Return the id of a NetCDF dimension.\n\ @seealso{netcdf_inqDim}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string dimname = args(1).string_value(); int id; octave_value_list retval; check_err(nc_inq_dimid(ncid, dimname.c_str(), &id)); retval(0) = octave_value(id); return retval; } // int nc_inq_dimids(int ncid, int *ndims, int *dimids, int include_parents); DEFUN_DLD(netcdf_inqDimIDs, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid}) \n\ @deftypefnx {Loadable Function} {@var{dimids} =} netcdf_inqDimID(@var{ncid},@var{include_parents}) \n\ Return the dimension ids defined in a NetCDF file.\n\ If @var{include_parents} is 1, the dimension ids of the parent group are also returned.\n\ Per default this is not the case (@var{include_parents} is 0).\n\ @seealso{netcdf_inqDim}\n\ @end deftypefn") { if (args.length() != 1 && args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int include_parents = 0; if (args.length() == 2) { include_parents = args(0).scalar_value(); } int ndims; check_err(nc_inq_ndims(ncid, &ndims)); OCTAVE_LOCAL_BUFFER(int,tmp,ndims); NETCDF_INT_ARRAY dimids = NETCDF_INT_ARRAY(dim_vector(1,ndims)); check_err(nc_inq_dimids(ncid, &ndims, tmp, include_parents)); for (int i=0; i < ndims; i++) { dimids(i) = tmp[i]; } return octave_value(dimids); } // groups //int nc_def_grp(int parent_ncid, const char *name, int *new_ncid); DEFUN_DLD(netcdf_defGrp, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{new_ncid} =} netcdf_defGrp(@var{ncid},@var{name}) \n\ Define a group in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int parent_ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int new_ncid; check_err(nc_def_grp(parent_ncid, name.c_str(), &new_ncid)); return octave_value(new_ncid); } // int nc_inq_grps(int ncid, int *numgrps, int *ncids); DEFUN_DLD(netcdf_inqGrps, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{ncids} =} netcdf_inqGrps(@var{ncid}) \n\ Return all groups ids in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int numgrps; check_err(nc_inq_grps(ncid, &numgrps, NULL)); OCTAVE_LOCAL_BUFFER(int,tmp,numgrps); NETCDF_INT_ARRAY ncids = NETCDF_INT_ARRAY(dim_vector(1,numgrps)); check_err(nc_inq_grps(ncid, NULL, tmp)); for (int i=0; i < numgrps; i++) { ncids(i) = tmp[i]; } return octave_value(ncids); } //int nc_inq_grpname(int ncid, char *name); DEFUN_DLD(netcdf_inqGrpName, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpName(@var{ncid}) \n\ Return group name in a NetCDF file.\n\ @seealso{netcdf_inqGrps}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); char name[NC_MAX_NAME+1]; check_err(nc_inq_grpname(ncid, name)); return octave_value(std::string(name)); } //int nc_inq_grpname_full(int ncid, size_t *lenp, char *full_name); DEFUN_DLD(netcdf_inqGrpNameFull, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{name} =} netcdf_inqGrpNameFull(@var{ncid}) \n\ Return full name of group in NetCDF file.\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); size_t len; check_err(nc_inq_grpname_len(ncid,&len)); OCTAVE_LOCAL_BUFFER(char, name, len+1); if (name == 0) { error ("netcdf: error allocating buffer for name\n"); return octave_value (); } octave_value retval; check_err(nc_inq_grpname_full(ncid, &len, name)); retval = octave_value(std::string(name)); return retval; } // int nc_inq_grp_parent(int ncid, int *parent_ncid); DEFUN_DLD(netcdf_inqGrpParent, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{parent_ncid} =} netcdf_inqGrpParent(@var{ncid}) \n\ Return id of the parent group\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 1) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); int parent_ncid; check_err(nc_inq_grp_parent(ncid, &parent_ncid)); return octave_value(parent_ncid); } // int nc_inq_grp_full_ncid(int ncid, char *full_name, int *grp_ncid); DEFUN_DLD(netcdf_inqGrpFullNcid, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqGrpFullNcid(@var{ncid},@var{name}) \n\ Return the group id based on the full group name.\n\ @seealso{netcdf_inqGrpName}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; int format; check_err(nc_inq_format(ncid, &format)); if (format == NC_FORMAT_CLASSIC || format == NC_FORMAT_64BIT) { if (name == "/") { return octave_value(ncid); } else { error("groups are not supported in this format"); return octave_value(); } } // nc_inq_grp_full_ncid makes a segmentation fault if // file is in non-HDF5 format check_err(nc_inq_grp_full_ncid(ncid, name.c_str(),&grp_ncid)); return octave_value(grp_ncid); } // int nc_inq_ncid(int ncid, const char *name, int *grp_ncid); DEFUN_DLD(netcdf_inqNcid, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{grp_ncid} =} netcdf_inqNcid(@var{ncid},@var{name}) \n\ Return group id based on its name\n\ @seealso{netcdf_inqGrpFullNcid}\n\ @end deftypefn") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value(); int grp_ncid; check_err(nc_inq_ncid(ncid, name.c_str(), &grp_ncid)); return octave_value(grp_ncid); } // int nc_def_vlen(int ncid, const char *name, nc_type base_typeid, nc_type *xtypep); DEFUN_DLD(netcdf_defVlen, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {@var{varid} = } netcdf_defVlen(@var{ncid},@var{typename},@var{basetype}) \n\ Defines a NC_VLEN variable length array type with the type name @var{typename} and a base datatype of @var{basetype} in the dataset @var{ncid}. @var{basetype} can be \"byte\", \"ubyte\", \"short\", \"ushort\", \"int\", \"uint\", \"int64\", \"uint64\", \"float\", \"double\", \"char\" or the corresponding number as returned by netcdf_getConstant. The new data type id is returned. \n\ @end deftypefn\n\ @seealso{netcdf_open,netcdf_defVar, netcdf_inqVlen}\n") { if (args.length() != 3) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); std::string name = args(1).string_value (); nc_type basetype = 0; if (args(2).is_string()) basetype = netcdf_get_constant(args(2)).int_value(); else basetype = args(2).int_value(); nc_type varid; check_err(nc_def_vlen (ncid, name.c_str(), basetype, &varid)); return octave_value(varid); } // int nc_inq_vlen(int ncid, nc_type xtype, char *name, size_t datasz, nc_type *basetypeid); DEFUN_DLD(netcdf_inqVlen, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}] = } netcdf_inqVlen(@var{ncid},@var{typeid}) \n\ Provide information on a NC_VLEN variable length array type @var{typeid} in the dataset @var{ncid}.\n\ \n \ The function returns the typename, bytesize, and base type id.\n \ \n \ @end deftypefn\n\ @seealso{netcdf_open, netcdf_defVlen}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); nc_type nctypeid = netcdf_get_constant(args(1)).int_value();; nc_type basetypeid; char name[NC_MAX_NAME+1]; size_t datasz; check_err(nc_inq_vlen (ncid, nctypeid, name, &datasz, &basetypeid)); octave_value_list retval; retval(0) = octave_value(name); retval(1) = octave_value(datasz); retval(2) = octave_value(basetypeid); return retval; } // int nc_inq_user_type(int ncid, nc_type xtype, char *name, size_t datasz, nc_type *basetypeid, size_t nfields, int *classp); DEFUN_DLD(netcdf_inqUserType, args,, "-*- texinfo -*-\n\ @deftypefn {Loadable Function} {[@var{typename}, @var{bytesize}, @var{basetypeid}, @var{numfields}, @var{classid}] = } netcdf_inqUserType(@var{ncid},@var{typeid}) \n\ Provide information on a user defined type @var{typeid} in the dataset @var{ncid}.\n\ \n \ The function returns the typename, bytesize, base type id, number of fields and class identifier of the type.\n \ \n \ @end deftypefn\n\ @seealso{netcdf_open, netcdf_defVlen, netcdf_inqVlen}\n") { if (args.length() != 2) { print_usage (); return octave_value(); } int ncid = args(0).scalar_value(); nc_type nctypeid = netcdf_get_constant(args(1)).int_value();; nc_type basetypeid; char name[NC_MAX_NAME+1]; size_t datasz; int classid; size_t nfields; check_err(nc_inq_user_type (ncid, nctypeid, name, &datasz, &basetypeid, &nfields, &classid)); octave_value_list retval; retval(0) = octave_value(name); retval(1) = octave_value(datasz); retval(2) = octave_value(basetypeid); retval(3) = octave_value(nfields); retval(4) = octave_value(classid); return retval; } netcdf-1.0.17/src/aclocal.m40000644000000000000000000000127314502076114013663 0ustar0000000000000000# generated automatically by aclocal 1.16.5 -*- Autoconf -*- # Copyright (C) 1996-2021 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_include([m4/octave-forge.m4]) netcdf-1.0.17/src/autogen.sh0000755000000000000000000000020414502076114014015 0ustar0000000000000000#! /bin/sh ## Generate ./configure and other build files aclocal autoconf autoheader -f #rm -f configure.ac rm -rf autom4te.cache netcdf-1.0.17/src/config.guess0000755000000000000000000012564714502076114014357 0ustar0000000000000000#!/usr/bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-10-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: netcdf-1.0.17/src/config.h.in0000644000000000000000000000132314502076114014042 0ustar0000000000000000/* config.h.in. Generated from configure.ac by autoheader. */ #include "undef-ah-octave.h" /* macro for alternative Octave symbols */ #undef OV_ISCELL /* macro for alternative Octave symbols */ #undef OV_ISEMPTY /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION #include "oct-alt-includes.h" netcdf-1.0.17/src/config.sub0000755000000000000000000010672614502076114014017 0ustar0000000000000000#!/usr/bin/sh # Configuration validation subroutine script. # Copyright 1992-2016 Free Software Foundation, Inc. timestamp='2016-09-05' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: netcdf-1.0.17/src/configure0000755000000000000000000037521314502076114013742 0ustar0000000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.71 for octave netcdf package 1.0.17. # # # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation, # Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="as_nop=: if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else \$as_nop case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ) then : else \$as_nop exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 blah=\$(echo \$(echo blah)) test x\"\$blah\" = xblah || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null then : as_have_required=yes else $as_nop as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null then : else $as_nop as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$as_shell as_have_required=yes if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null then : break 2 fi fi done;; esac as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop if { test -f "$SHELL" || test -f "$SHELL.exe"; } && as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null then : CONFIG_SHELL=$SHELL as_have_required=yes fi fi if test "x$CONFIG_SHELL" != x then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno then : printf "%s\n" "$0: This script requires a shell more modern than all" printf "%s\n" "$0: the shells that I found on your system." if test ${ZSH_VERSION+y} ; then printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." else printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_nop # --------- # Do nothing but, unlike ":", preserve the value of $?. as_fn_nop () { return $? } as_nop=as_fn_nop # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='octave netcdf package' PACKAGE_TARNAME='octave-netcdf-package' PACKAGE_VERSION='1.0.17' PACKAGE_STRING='octave netcdf package 1.0.17' PACKAGE_BUGREPORT='' PACKAGE_URL='' ac_subst_vars='LTLIBOBJS LIBOBJS NETCDF_CPPFLAGS NETCDF_LIBS NC_CONFIG MKOCTFILE OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX SED AWK target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir runstatedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -runstatedir | --runstatedir | --runstatedi | --runstated \ | --runstate | --runstat | --runsta | --runst | --runs \ | --run | --ru | --r) ac_prev=runstatedir ;; -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ | --run=* | --ru=* | --r=*) runstatedir=$ac_optarg ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: \`$ac_useropt'" ac_useropt_orig=$ac_useropt ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures octave netcdf package 1.0.17 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/octave-netcdf-package] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of octave netcdf package 1.0.17:";; esac cat <<\_ACEOF Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for configure.gnu first; this name is used for a wrapper for # Metaconfig's "Configure" on case-insensitive file systems. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF octave netcdf package configure 1.0.17 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest.beam if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext then : ac_retval=0 else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile ac_configure_args_raw= for ac_arg do case $ac_arg in *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append ac_configure_args_raw " '$ac_arg'" done case $ac_configure_args_raw in *$as_nl*) ac_safe_unquote= ;; *) ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. ac_unsafe_a="$ac_unsafe_z#~" ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; esac cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by octave netcdf package $as_me 1.0.17, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac printf "%s\n" "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Sanitize IFS. IFS=" "" $as_nl" # Save into config.log some information that might help in debugging. { echo printf "%s\n" "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo printf "%s\n" "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then printf "%s\n" "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac printf "%s\n" "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then printf "%s\n" "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && printf "%s\n" "$as_me: caught signal $ac_signal" printf "%s\n" "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h printf "%s\n" "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. if test -n "$CONFIG_SITE"; then ac_site_files="$CONFIG_SITE" elif test "x$prefix" != xNONE; then ac_site_files="$prefix/share/config.site $prefix/etc/config.site" else ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" fi for ac_site_file in $ac_site_files do case $ac_site_file in #( */*) : ;; #( *) : ac_site_file=./$ac_site_file ;; esac if test -f "$ac_site_file" && test -r "$ac_site_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 printf "%s\n" "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 printf "%s\n" "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Test code for whether the C++ compiler supports C++98 (global declarations) ac_cxx_conftest_cxx98_globals=' // Does the compiler advertise C++98 conformance? #if !defined __cplusplus || __cplusplus < 199711L # error "Compiler does not advertise C++98 conformance" #endif // These inclusions are to reject old compilers that // lack the unsuffixed header files. #include #include // and are *not* freestanding headers in C++98. extern void assert (int); namespace std { extern int strcmp (const char *, const char *); } // Namespaces, exceptions, and templates were all added after "C++ 2.0". using std::exception; using std::strcmp; namespace { void test_exception_syntax() { try { throw "test"; } catch (const char *s) { // Extra parentheses suppress a warning when building autoconf itself, // due to lint rules shared with more typical C programs. assert (!(strcmp) (s, "test")); } } template struct test_template { T const val; explicit test_template(T t) : val(t) {} template T add(U u) { return static_cast(u) + val; } }; } // anonymous namespace ' # Test code for whether the C++ compiler supports C++98 (body of main) ac_cxx_conftest_cxx98_main=' assert (argc); assert (! argv[0]); { test_exception_syntax (); test_template tt (2.0); assert (tt.add (4) == 6.0); assert (true && !false); } ' # Test code for whether the C++ compiler supports C++11 (global declarations) ac_cxx_conftest_cxx11_globals=' // Does the compiler advertise C++ 2011 conformance? #if !defined __cplusplus || __cplusplus < 201103L # error "Compiler does not advertise C++11 conformance" #endif namespace cxx11test { constexpr int get_val() { return 20; } struct testinit { int i; double d; }; class delegate { public: delegate(int n) : n(n) {} delegate(): delegate(2354) {} virtual int getval() { return this->n; }; protected: int n; }; class overridden : public delegate { public: overridden(int n): delegate(n) {} virtual int getval() override final { return this->n * 2; } }; class nocopy { public: nocopy(int i): i(i) {} nocopy() = default; nocopy(const nocopy&) = delete; nocopy & operator=(const nocopy&) = delete; private: int i; }; // for testing lambda expressions template Ret eval(Fn f, Ret v) { return f(v); } // for testing variadic templates and trailing return types template auto sum(V first) -> V { return first; } template auto sum(V first, Args... rest) -> V { return first + sum(rest...); } } ' # Test code for whether the C++ compiler supports C++11 (body of main) ac_cxx_conftest_cxx11_main=' { // Test auto and decltype auto a1 = 6538; auto a2 = 48573953.4; auto a3 = "String literal"; int total = 0; for (auto i = a3; *i; ++i) { total += *i; } decltype(a2) a4 = 34895.034; } { // Test constexpr short sa[cxx11test::get_val()] = { 0 }; } { // Test initializer lists cxx11test::testinit il = { 4323, 435234.23544 }; } { // Test range-based for int array[] = {9, 7, 13, 15, 4, 18, 12, 10, 5, 3, 14, 19, 17, 8, 6, 20, 16, 2, 11, 1}; for (auto &x : array) { x += 23; } } { // Test lambda expressions using cxx11test::eval; assert (eval ([](int x) { return x*2; }, 21) == 42); double d = 2.0; assert (eval ([&](double x) { return d += x; }, 3.0) == 5.0); assert (d == 5.0); assert (eval ([=](double x) mutable { return d += x; }, 4.0) == 9.0); assert (d == 5.0); } { // Test use of variadic templates using cxx11test::sum; auto a = sum(1); auto b = sum(1, 2); auto c = sum(1.0, 2.0, 3.0); } { // Test constructor delegation cxx11test::delegate d1; cxx11test::delegate d2(); cxx11test::delegate d3(45); } { // Test override and final cxx11test::overridden o1(55464); } { // Test nullptr char *c = nullptr; } { // Test template brackets test_template<::test_template> v(test_template(12)); } { // Unicode literals char const *utf8 = u8"UTF-8 string \u2500"; char16_t const *utf16 = u"UTF-8 string \u2500"; char32_t const *utf32 = U"UTF-32 string \u2500"; } ' # Test code for whether the C compiler supports C++11 (complete). ac_cxx_conftest_cxx11_program="${ac_cxx_conftest_cxx98_globals} ${ac_cxx_conftest_cxx11_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} ${ac_cxx_conftest_cxx11_main} return ok; } " # Test code for whether the C compiler supports C++98 (complete). ac_cxx_conftest_cxx98_program="${ac_cxx_conftest_cxx98_globals} int main (int argc, char **argv) { int ok = 0; ${ac_cxx_conftest_cxx98_main} return ok; } " # Auxiliary files required by this configure script. ac_aux_files="config.guess config.sub" # Locations in which to look for auxiliary files. ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.." # Search for a directory containing all of the required auxiliary files, # $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. # If we don't find one directory that contains all the files we need, # we report the set of missing files from the *first* directory in # $ac_aux_dir_candidates and give up. ac_missing_aux_files="" ac_first_candidate=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in $ac_aux_dir_candidates do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac as_found=: printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 ac_aux_dir_found=yes ac_install_sh= for ac_aux in $ac_aux_files do # As a special case, if "install-sh" is required, that requirement # can be satisfied by any of "install-sh", "install.sh", or "shtool", # and $ac_install_sh is set appropriately for whichever one is found. if test x"$ac_aux" = x"install-sh" then if test -f "${as_dir}install-sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 ac_install_sh="${as_dir}install-sh -c" elif test -f "${as_dir}install.sh"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 ac_install_sh="${as_dir}install.sh -c" elif test -f "${as_dir}shtool"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 ac_install_sh="${as_dir}shtool install -c" else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} install-sh" else break fi fi else if test -f "${as_dir}${ac_aux}"; then printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 else ac_aux_dir_found=no if $ac_first_candidate; then ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" else break fi fi fi done if test "$ac_aux_dir_found" = yes; then ac_aux_dir="$as_dir" break fi ac_first_candidate=false as_found=false done IFS=$as_save_IFS if $as_found then : else $as_nop as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. if test -f "${ac_aux_dir}config.guess"; then ac_config_guess="$SHELL ${ac_aux_dir}config.guess" fi if test -f "${ac_aux_dir}config.sub"; then ac_config_sub="$SHELL ${ac_aux_dir}config.sub" fi if test -f "$ac_aux_dir/configure"; then ac_configure="$SHELL ${ac_aux_dir}configure" fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_config_headers="$ac_config_headers config.h" # Avoid warnings for redefining AH-generated preprocessor symbols of # Octave. # Make sure we can run config.sub. $SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 printf %s "checking build system type... " >&6; } if test ${ac_cv_build+y} then : printf %s "(cached) " >&6 else $as_nop ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 printf "%s\n" "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 printf %s "checking host system type... " >&6; } if test ${ac_cv_host+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 printf "%s\n" "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 printf %s "checking target system type... " >&6; } if test ${ac_cv_target+y} then : printf %s "(cached) " >&6 else $as_nop if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "${ac_aux_dir}config.sub" $target_alias` || as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $target_alias failed" "$LINENO" 5 fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 printf "%s\n" "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_AWK+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 printf "%s\n" "$AWK" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$AWK" && break done { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 printf %s "checking for a sed that does not truncate output... " >&6; } if test ${ac_cv_path_SED+y} then : printf %s "(cached) " >&6 else $as_nop ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_prog in sed gsed do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 printf %s 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" printf "%s\n" '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 printf "%s\n" "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 printf "%s\n" "$CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC clang++ do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_CXX+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 printf "%s\n" "$ac_ct_CXX" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5 printf %s "checking whether the C++ compiler works... " >&6; } ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else $as_nop ac_file='' fi if test -z "$ac_file" then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C++ compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5 printf %s "checking for C++ compiler default output file name... " >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 printf "%s\n" "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 printf %s "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else $as_nop { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 printf "%s\n" "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 printf %s "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 printf "%s\n" "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 printf %s "checking for suffix of object files... " >&6; } if test ${ac_cv_objext+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" printf "%s\n" "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_nop printf "%s\n" "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 printf "%s\n" "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C++" >&5 printf %s "checking whether the compiler supports GNU C++... " >&6; } if test ${ac_cv_cxx_compiler_gnu+y} then : printf %s "(cached) " >&6 else $as_nop cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_compiler_gnu=yes else $as_nop ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 printf "%s\n" "$ac_cv_cxx_compiler_gnu" >&6; } ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+y} ac_save_CXXFLAGS=$CXXFLAGS { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 printf %s "checking whether $CXX accepts -g... " >&6; } if test ${ac_cv_prog_cxx_g+y} then : printf %s "(cached) " >&6 else $as_nop ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes else $as_nop CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : else $as_nop ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main (void) { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 printf "%s\n" "$ac_cv_prog_cxx_g" >&6; } if test $ac_test_CXXFLAGS; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_prog_cxx_stdcxx=no if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } if test ${ac_cv_prog_cxx_cxx11+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx11_program _ACEOF for ac_arg in '' -std=gnu++11 -std=gnu++0x -std=c++11 -std=c++0x -qlanglvl=extended0x -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx11=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx11" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx11" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx11" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx11" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx11" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx11" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx11 ac_prog_cxx_stdcxx=cxx11 fi fi if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } if test ${ac_cv_prog_cxx_cxx98+y} then : printf %s "(cached) " >&6 else $as_nop ac_cv_prog_cxx_cxx98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_cxx_conftest_cxx98_program _ACEOF for ac_arg in '' -std=gnu++98 -std=c++98 -qlanglvl=extended -AA do CXX="$ac_save_CXX $ac_arg" if ac_fn_cxx_try_compile "$LINENO" then : ac_cv_prog_cxx_cxx98=$ac_arg fi rm -f core conftest.err conftest.$ac_objext conftest.beam test "x$ac_cv_prog_cxx_cxx98" != "xno" && break done rm -f conftest.$ac_ext CXX=$ac_save_CXX fi if test "x$ac_cv_prog_cxx_cxx98" = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 printf "%s\n" "unsupported" >&6; } else $as_nop if test "x$ac_cv_prog_cxx_cxx98" = x then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 printf "%s\n" "none needed" >&6; } else $as_nop { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_cxx98" >&5 printf "%s\n" "$ac_cv_prog_cxx_cxx98" >&6; } CXX="$CXX $ac_cv_prog_cxx_cxx98" fi ac_cv_prog_cxx_stdcxx=$ac_cv_prog_cxx_cxx98 ac_prog_cxx_stdcxx=cxx98 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Extract the first word of "mkoctfile", so it can be a program name with args. set dummy mkoctfile; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_MKOCTFILE+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$MKOCTFILE"; then ac_cv_prog_MKOCTFILE="$MKOCTFILE" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_MKOCTFILE="mkoctfile" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MKOCTFILE=$ac_cv_prog_MKOCTFILE if test -n "$MKOCTFILE"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKOCTFILE" >&5 printf "%s\n" "$MKOCTFILE" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi test -z "$MKOCTFILE" && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: no mkoctfile found on path" >&5 printf "%s\n" "$as_me: WARNING: no mkoctfile found on path" >&2;} if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then case $host_os in mingw*) # try demangle spaces in escaped input strings MKOCTFILE=`echo $MKOCTFILE | $SED "s,\\\\\ ,?,g"` ;; *) ;; esac fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nc-config", so it can be a program name with args. set dummy ${ac_tool_prefix}nc-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_NC_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$NC_CONFIG"; then ac_cv_prog_NC_CONFIG="$NC_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_NC_CONFIG="${ac_tool_prefix}nc-config" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NC_CONFIG=$ac_cv_prog_NC_CONFIG if test -n "$NC_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NC_CONFIG" >&5 printf "%s\n" "$NC_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi fi if test -z "$ac_cv_prog_NC_CONFIG"; then ac_ct_NC_CONFIG=$NC_CONFIG # Extract the first word of "nc-config", so it can be a program name with args. set dummy nc-config; ac_word=$2 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 printf %s "checking for $ac_word... " >&6; } if test ${ac_cv_prog_ac_ct_NC_CONFIG+y} then : printf %s "(cached) " >&6 else $as_nop if test -n "$ac_ct_NC_CONFIG"; then ac_cv_prog_ac_ct_NC_CONFIG="$ac_ct_NC_CONFIG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NC_CONFIG="nc-config" printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NC_CONFIG=$ac_cv_prog_ac_ct_NC_CONFIG if test -n "$ac_ct_NC_CONFIG"; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NC_CONFIG" >&5 printf "%s\n" "$ac_ct_NC_CONFIG" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } fi if test "x$ac_ct_NC_CONFIG" = x; then NC_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NC_CONFIG=$ac_ct_NC_CONFIG fi else NC_CONFIG="$ac_cv_prog_NC_CONFIG" fi if test -z "$NC_CONFIG"; then as_fn_error 1 "nc-config not found" "$LINENO" 5; fi NETCDF_LIBS=`$NC_CONFIG --libs` NETCDF_CPPFLAGS=`$NC_CONFIG --cflags` { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for netcdf4 support" >&5 printf %s "checking for netcdf4 support... " >&6; } NETCDF_V4=`$NC_CONFIG --has-nc4` if test x$NETCDF_V4 == xyes; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 printf "%s\n" "yes" >&6; } else { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 printf "%s\n" "no" >&6; } as_fn_error $? "netcdf4 support missing. Did you disable netcdf4 features?" "$LINENO" 5 fi # Checks for octave depreciated symbols # Simple symbol alternatives of different Octave versions. save_altsyms_CXX="$CXX" save_altsyms_CXXFLAGS="$CXXFLAGS" save_altsyms_LDFLAGS="$LDFLAGS" save_altsyms_LIBS="$LIBS" OCTINCLUDEDIR="${OCTINCLUDEDIR:-`$MKOCTFILE -p OCTINCLUDEDIR`}/.." OCTLIBDIR=${OCTLIBDIR:-`$MKOCTFILE -p OCTLIBDIR`} if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then MSYSTEM="${MSYSTEM}" else MSYSTEM="none" fi case X$MSYSTEM in XMINGW64*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` ;; XMINGW32*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw32,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g -e "s,${OCTAVE_HOME},/mingw32,g"'` ;; *) ;; esac CXX=`${MKOCTFILE} -p CXX` CXXFLAGS="-I$OCTINCLUDEDIR $CXXFLAGS" LDFLAGS="-L$OCTLIBDIR $LDFLAGS" LIBS="-loctinterp $LIBS" echo '/* generated by configure */' > oct-alt-includes.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking is_cell or iscell" >&5 printf %s "checking is_cell or iscell... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { octave_value ().iscell (); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define OV_ISCELL iscell" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: iscell" >&5 printf "%s\n" "iscell" >&6; } echo ' ' >> oct-alt-includes.h else $as_nop printf "%s\n" "#define OV_ISCELL is_cell" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: is_cell" >&5 printf "%s\n" " is_cell" >&6; } echo '' >> oct-alt-includes.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking is_empty or isempty" >&5 printf %s "checking is_empty or isempty... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main (void) { octave_value ().isempty (); ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO" then : printf "%s\n" "#define OV_ISEMPTY isempty" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: isempty" >&5 printf "%s\n" "isempty" >&6; } echo ' ' >> oct-alt-includes.h else $as_nop printf "%s\n" "#define OV_ISEMPTY is_empty" >>confdefs.h { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: is_empty" >&5 printf "%s\n" " is_empty" >&6; } echo '' >> oct-alt-includes.h fi rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext CXX=$save_altsyms_CXX CXXFLAGS=$save_altsyms_CXXFLAGS LDFLAGS=$save_altsyms_LDFLAGS LIBS=$save_altsyms_LIBS ac_config_files="$ac_config_files Makefile" test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh as_nop=: if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else $as_nop case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi # Reset variables that may have inherited troublesome values from # the environment. # IFS needs to be set, to space, tab, and newline, in precisely that order. # (If _AS_PATH_WALK were called with IFS unset, it would have the # side effect of setting IFS to empty, thus disabling word splitting.) # Quoting is to prevent editors from complaining about space-tab. as_nl=' ' export as_nl IFS=" "" $as_nl" PS1='$ ' PS2='> ' PS4='+ ' # Ensure predictable behavior from utilities with locale-dependent output. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # We cannot yet rely on "unset" to work, but we need these variables # to be unset--not just set to an empty or harmless value--now, to # avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct # also avoids known problems related to "unset" and subshell syntax # in other old shells (e.g. bash 2.01 and pdksh 5.2.14). for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH do eval test \${$as_var+y} \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done # Ensure that fds 0, 1, and 2 are open. if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi if (exec 3>&2) ; then :; else exec 2>/dev/null; fi # The user is always right. if ${PATH_SEPARATOR+false} :; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS case $as_dir in #((( '') as_dir=./ ;; */) ;; *) as_dir=$as_dir/ ;; esac test -r "$as_dir$0" && as_myself=$as_dir$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi printf "%s\n" "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null then : eval 'as_fn_append () { eval $1+=\$2 }' else $as_nop as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null then : eval 'as_fn_arith () { as_val=$(( $* )) }' else $as_nop as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits # Determine whether it's possible to make 'echo' print without a newline. # These variables are no longer used directly by Autoconf, but are AC_SUBSTed # for compatibility with existing Makefiles. ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac # For backward compatibility with old third-party macros, we provide # the shell variables $as_echo and $as_echo_n. New code should use # AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. as_echo='printf %s\n' as_echo_n='printf %s' rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by octave netcdf package $as_me 1.0.17, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Report bugs to the package provider." _ACEOF ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ octave netcdf package config.status 1.0.17 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" Copyright (C) 2021 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) printf "%s\n" "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) printf "%s\n" "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) printf "%s\n" "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX printf "%s\n" "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 printf "%s\n" "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`printf "%s\n" "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || printf "%s\n" X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else printf "%s\n" "/* $configure_input */" >&1 \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: octave-forge is configured with mkoctfile: $MKOCTFILE nc-config: $NC_CONFIG netCDF compiler flags: $NETCDF_CPPFLAGS netCDF libraries: $NETCDF_LIBS " >&5 printf "%s\n" " octave-forge is configured with mkoctfile: $MKOCTFILE nc-config: $NC_CONFIG netCDF compiler flags: $NETCDF_CPPFLAGS netCDF libraries: $NETCDF_LIBS " >&6; } netcdf-1.0.17/src/configure.ac0000644000000000000000000001071414502076114014311 0ustar0000000000000000dnl The configure script is generated by autogen.sh from configure.base dnl and the various configure.add files in the source tree. Edit dnl configure.base and reprocess rather than modifying ./configure. ### Copyright (C) 2018-2023 John Donoghue ### ### This program is free software; you can redistribute it and/or ### modify it under the terms of the GNU General Public License as ### published by the Free Software Foundation; either version 3 of the ### License, or (at your option) any later version. ### ### This program is distributed in the hope that it will be useful, ### but WITHOUT ANY WARRANTY; without even the implied warranty of ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ### General Public License for more details. ### ### You should have received a copy of the GNU General Public License ### along with this program; if not, see ### . dnl autoconf 2.13 certainly doesn't work! What is the minimum requirement? AC_PREREQ(2.2) AC_INIT([octave netcdf package],[1.0.17]) AC_CONFIG_HEADERS([config.h]) # Avoid warnings for redefining AH-generated preprocessor symbols of # Octave. AH_TOP([#include "undef-ah-octave.h"]) AC_CONFIG_MACRO_DIRS([m4]) AC_CANONICAL_HOST AC_CANONICAL_TARGET dnl Kill caching --- this ought to be the default define([AC_CACHE_LOAD], )dnl define([AC_CACHE_SAVE], )dnl dnl uncomment to put support files in another directory dnl AC_CONFIG_AUX_DIR(admin) dnl if tools we need AC_PROG_AWK AC_PROG_SED AC_PROG_CXX AC_LANG(C++) dnl Check for mkoctfile and octave AC_CHECK_PROG([MKOCTFILE],mkoctfile,mkoctfile) test -z "$MKOCTFILE" && AC_MSG_WARN([no mkoctfile found on path]) if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then case $host_os in mingw*) # try demangle spaces in escaped input strings MKOCTFILE=`echo $MKOCTFILE | $SED "s,\\\\\ ,?,g"` ;; *) ;; esac fi dnl ********************************************************** dnl checking for nc-config dnl AC_CHECK_PROG(NC_CONFIG, nc-config, nc-config) AC_CHECK_TOOL(NC_CONFIG, nc-config, []) if test -z "$NC_CONFIG"; then AC_MSG_ERROR([nc-config not found], 1); fi NETCDF_LIBS=`$NC_CONFIG --libs` NETCDF_CPPFLAGS=`$NC_CONFIG --cflags` AC_SUBST(NETCDF_LIBS) AC_SUBST(NETCDF_CPPFLAGS) dnl The following will be either "yes" or "no" AC_MSG_CHECKING(for netcdf4 support) NETCDF_V4=`$NC_CONFIG --has-nc4` if test x$NETCDF_V4 == xyes; then AC_MSG_RESULT(yes) else AC_MSG_RESULT(no) AC_MSG_ERROR(netcdf4 support missing. Did you disable netcdf4 features?) fi dnl ********************************************************** # Checks for octave depreciated symbols # Simple symbol alternatives of different Octave versions. save_altsyms_CXX="$CXX" save_altsyms_CXXFLAGS="$CXXFLAGS" save_altsyms_LDFLAGS="$LDFLAGS" save_altsyms_LIBS="$LIBS" OCTINCLUDEDIR="${OCTINCLUDEDIR:-`$MKOCTFILE -p OCTINCLUDEDIR`}/.." OCTLIBDIR=${OCTLIBDIR:-`$MKOCTFILE -p OCTLIBDIR`} if test "X${IGNORE_MINGW_PATH_MODIFICATION}" == "X"; then MSYSTEM="${MSYSTEM}" else MSYSTEM="none" fi case X$MSYSTEM in XMINGW64*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw64,g"` ;; XMINGW32*) OCTAVE_HOME=`${MKOCTFILE} -p OCTAVE_HOME | $SED 's,\\\\,/,g'` # change \ to / and replace octave home part with mingw part OCTINCLUDEDIR=`echo $OCTINCLUDEDIR | $SED -e 's,\\\\,/,g' -e "s,${OCTAVE_HOME},/mingw32,g"` OCTLIBDIR=`echo $OCTLIBDIR | $SED -e 's,\\\\,/,g -e "s,${OCTAVE_HOME},/mingw32,g"'` ;; *) ;; esac CXX=`${MKOCTFILE} -p CXX` CXXFLAGS="-I$OCTINCLUDEDIR $CXXFLAGS" LDFLAGS="-L$OCTLIBDIR $LDFLAGS" LIBS="-loctinterp $LIBS" OF_OCTAVE_LIST_ALT_SYMS([ [dnl [is_cell], [iscell], [[octave_value ().iscell ();]], [OV_ISCELL], [], [] ], [dnl [is_empty], [isempty], [[octave_value ().isempty ();]], [OV_ISEMPTY], [], [] ] ],[oct-alt-includes.h]) CXX=$save_altsyms_CXX CXXFLAGS=$save_altsyms_CXXFLAGS LDFLAGS=$save_altsyms_LDFLAGS LIBS=$save_altsyms_LIBS dnl ********************************************************** AC_CONFIG_FILES([Makefile]) AC_OUTPUT AC_MSG_RESULT([ octave-forge is configured with mkoctfile: $MKOCTFILE nc-config: $NC_CONFIG netCDF compiler flags: $NETCDF_CPPFLAGS netCDF libraries: $NETCDF_LIBS ]) netcdf-1.0.17/src/m4/0000755000000000000000000000000014502076114012340 5ustar0000000000000000netcdf-1.0.17/src/m4/octave-forge.m40000644000000000000000000000576014502076114015173 0ustar0000000000000000# Copyright (C) 2017-2018 Olaf Till # Modifications to print what is searching for by JohnD # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # arguments of OF_OCTAVE_ALT_SYMS (see also description of # OF_OCTAVE_LIST_ALT_SYMS below): # # $1: symbol version 1 # $2: symbol version 2 # $3: test for symbol version 2 # $4: macro name to access alternative symbols # $5: include directives for symbol version 1 # $6: include directives for symbol version 2 # (a list of lists of args 1--6 is $1 of OF_OCTAVE_LIST_ALT_SYMS) # $7: name of generated include file with alternatives of Octave headers # (arg7 is $2 of OF_OCTAVE_LIST_ALT_SYMS) AC_DEFUN([OF_OCTAVE_ALT_SYMS], [ AC_MSG_CHECKING([$1 or $2]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[#include ] $6], [$3])], [AC_DEFINE($4, [[$2]], [macro for alternative Octave symbols]) AC_MSG_RESULT([$2]) echo '$6' >> $7], [AC_DEFINE($4, [[$1]], [macro for alternative Octave symbols]) AC_MSG_RESULT([$1]) echo '$5' >> $7] ) ]) # OF_OCTAVE_LIST_ALT_SYMS is called in the following way: # # OF_OCTAVE_LIST_ALT_SYMS([ # [dnl # [old_octave_symbol], # [new_octave_symbol], # [[compilation test] # [for new_octave_symbol]], # [NAME_OF_GENERATED_MACRO____WILL_EXPAND_TO_OLD_OR_NEW_SYMBOL], # [[include directives] # [except #include ] # [necessary to compile with old_octave_symbol]], # [[include directives] # [except #include ] # [nessary to compile with new_octave_symbol] # [and to compile the test]] # ], # # ... further such lists as the above # # ], # # [name-of-header-file-for-alternative-octave-iclude-directives.h]) # # # This file should be put into src/m4/, and the line # # AC_CONFIG_MACRO_DIRS([m4]) # # should be put into src/configure.ac. The package should use # autoheader to generate config.h.in (src/bootstrap should contain the # lines 'aclocal', 'autoconf', and 'autoheader -f'). Package code # should include config.h and use the generated macros to access the # alternative symbols of Octave. An example of a call to # OF_OCTAVE_LIST_ALT_SYMS in src/configure.ac is available together # with this file. AC_DEFUN([OF_OCTAVE_LIST_ALT_SYMS], [ echo '/* generated by configure */' > $2 m4_foreach([it], [$1], [m4_apply([OF_OCTAVE_ALT_SYMS], [it, $2])]) AH_BOTTOM([#include "$2"]) ]) netcdf-1.0.17/src/netcdf_constants.awk0000644000000000000000000000436014502076114016066 0ustar0000000000000000# Copyright (C) 2013-2022 Alexander Barth # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; If not, see . # Generate the list of NetCDF constants based on the header file netcdf.h BEGIN { print "// generated by netcdf_constants.awk"; } /#define[ \t]+NC_[0-9a-zA-Z_]*[ \t]+/ { constant=$2; ov = constant; # NC_INDEPENDENT and NC_COLLECTIVE are no longer defined # in netcdf 4.3.1 if ($0 ~ /.*internally.*/ || \ constant == "NC_TURN_OFF_LOGGING" || \ constant == "NC_INDEPENDENT" || \ constant == "NC_COLLECTIVE" \ ) { next; } if (constant ~ /NC_.*_BYTE/) { ov = "octave_int8(" constant ")"; } else if (constant ~ /NC_.*_UBYTE/) { ov = "octave_uint8(" constant ")"; } else if (constant ~ /NC_.*_SHORT/) { ov = "octave_int16(" constant ")"; } else if (constant ~ /NC_.*_USHORT/) { ov = "octave_uint16(" constant ")"; } else if (constant ~ /NC_.*_INT/) { ov = "octave_int32(" constant ")"; } else if (constant ~ /NC_.*_UINT/) { ov = "octave_uint32(" constant ")"; } else if (constant ~ /NC_.*_INT64/) { ov = "octave_int64(" constant ")"; } else if (constant ~ /NC_.*_UINT64/) { ov = "octave_uint64(" constant ")"; } else if (constant ~ /NC_.*_CHAR/) { ov = "(char)" constant; } else if (constant ~ /NC_.*_STRING/) { ov = "std::string(" constant ")"; } else if (constant ~ /NC_.*_FLOAT/) { ov = "(float)" constant; } else if (constant ~ /NC_.*_STRING/) { ov = "(double)" constant; } printf " netcdf_constants[\"%s\"] = octave_value(%s);\n",constant,ov; } netcdf-1.0.17/src/undef-ah-octave.h0000644000000000000000000000070614502076114015142 0ustar0000000000000000/* To be included at the top of config.h (by autoheader). Avoid warnings for redefining AH-generated preprocessor symbols of Octave. */ #ifdef PACKAGE_BUGREPORT #undef PACKAGE_BUGREPORT #endif #ifdef PACKAGE_NAME #undef PACKAGE_NAME #endif #ifdef PACKAGE_STRING #undef PACKAGE_STRING #endif #ifdef PACKAGE_TARNAME #undef PACKAGE_TARNAME #endif #ifdef PACKAGE_URL #undef PACKAGE_URL #endif #ifdef PACKAGE_VERSION #undef PACKAGE_VERSION #endif