From 58738885f669480535556d6c309d9af09487246b Mon Sep 17 00:00:00 2001 From: Frank Malatino <142349306+fmalatino@users.noreply.github.com> Date: Thu, 3 Apr 2025 09:52:59 -0400 Subject: [PATCH 1/2] For release `2025.03.00` (#127) * updating 4d handling * debug 4d test data * more iter * moving ser_to_nc here * updating datatype in translate test * typing works * fix dict, lint * remove empty line * change from 4d to Nd * Expose `k_start` and `k_end` automatically for any FrozenStencil * Fix k_start + utest * lint * Fix for 2d stencils * Add threshold overrides to the multimodal metric * Always report results, add summary with one liners * Remove "mmr" from the keys * README in testing * Better Latex (?) * Better Latex (?) * fixing a typo that breaks bools in translate tests (#80) * Fix summary filename * Fix report, filename * Fix choosing right absolute difference for F32 * Make robust for NaN value * Detect when array have different dimensions, if only one dimension, collapse Clean up type infer and log work * Lint * Add rank 0 to the data * Check data exists for rank, skip & print if not * Fix bad logic on skip test for parallel * Verbose exported names * Make boilerplate calls more nimble * New option: `which_savepoint` Better error on bad output data Fix missing integer type check * QOL for mypy/flak8 type hints * Add SECONDS_PER_DAY as a constants following mixed precision standards * Lint * Cleanups in dace orchestration Readability improvements in dace orchestration including - early returns - spelling out variable names - fixing typos * Rename program -> dace_program * Make sure all constants adhere to the floating point precision set by the system * Move `is_float` to `dsl.typing` * Move Quantity to sub-directory + breakout the subcomponent * Fix tests * Lint * Remove `cp.ndarray` since cupy is optional * Restore workaround for optional cupy * "GFS" -> "UFS" * Cupy trick for metadata * Add comments for constant explanation * Describe 64/32-bit FloatFields * Make sure the `make_storage_data` respects the array dtype. * Fix logic for MultiModal metric and verbose it * Added an MPI all_reduce for quantities based on SUM operation to communicator.py * linted * Add initial skeleton of pytest test for all reduce * Added assertion tests for 1, 2 and 3D quantities passed through mpi_allreduce_sum * Linted * Added pytest.mark to skip test if mpi4py isn't available * lint changes * Addressed PR comments and added additional CPU backends to unit test * Added setters for various Quantity properties to enable setting of Quantity metadata and data properties. * Added function in QuantityMetadata class that allows copying of Metadata properties from one class to another. Subsequent Quantity setters that performed the copying of QuantityMetadata properties were removed * Expose all SG metric terms in grid_data * Add `Allreduce` and all MPI OP * Update utest * Fix `local_comm` * Fix utest * Enforce `comm_abc.Comm` into Communicator * Fix `comm` object in serial utest * Lint + `MPIComm` on testing architecture * Make sure the correct allocator backend is used for Quantities * Add in_place option for Allreduce * Cleanup ndsl/dsl/dace/utils.py (#96) * Fix typos * DaCeProgress: avoid double assignment of prefix * Add type hints/simplify kernel_theoretical_timing Adding type hints allowed to simplify `kernel_theoretical_timing`. * Fix merge * Hotfix for grid generation use of mpi operators * Merge examples/mpi/.gitignore into top-level .gitignore * Remove hard-coded __version__ numbers Removes hard-coded version numbers from `__init__` files. * Fixing a bunch of typos * hotfix netcdf version for dockerfiles * Updated version number in setup.py to reflect new release, 2025.01.00 * Adding in exception for compute domains with sizes less than or equal to halo size (#103) * Adding in exception for compute domains with less than 4 points to vector_halo_update method * Updated exception in communicator to compare halo size to compute domain size * linting * Moved domain size checker to SubtileGridSizer class method from_tile_params * Fix passing down ak/bk for pressure coefficients when they are available from an outside source (online model case) (#107) * [QOL] Logging, Type Hints and Quantity helpers (#108) * Log on rank 0 Docstrings & typi hints on logger Stencil Config has a `verbose` option On verbose: FrozenStencil log when run (in GT backends) * Update `config` in orchestrate call to solve type hint inconcistencies * Quantity helper `to_netcdf` with multi rank support * Automatic Int precision and stencil regeneration change (#104) * Added feature to enable automatic detection of integer precision. Should remove the need for i32/i64 declaration (although their functionality is still retained) and replace both with the regular Int type * change default rebuild state to false for get_factories * Merged Float and Int precision detection functions into one common path * Re-added old function to fulfil a PACE dependency * updated docstring * Added ability to declare 32 or 64 bit IntFields, overrulling the system precision * Added one dimensional bool fields * Fix error message in typing.py Co-authored-by: Florian Deconinck * output type for global_set_precision --------- Co-authored-by: Florian Deconinck * Bump DaCe to v1.0.1 (#109) Our current DaCe version is some commit from September 2024. Meanwhile DaCe matured to v1 and recently release v1.0.1. This brings the DaCe submodule to the latest stable release version. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Streamline linting workflow (#110) Linting should give fast feedback. The current workflow takes ~3mins where most of the time is spent installing (unnecessary) python packages. To run `pre-commit`, we only need the source files and `pre-commit` itself, which can be installed standalone. This brings runtime of the linting stage down to ~30 seconds. Other changes - update checkout action to v4 - update python setup action to v5 - change python version from 3.11.7 to 3.11 (any patch number will do) This is a follow-up of PR https://github.com/NOAA-GFDL/PyFV3/pull/40 in PyFV3. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * [FIX] Type hint for precision dependant Float, Int (#111) * Fix the type hint of Float, Int * Attempt using TypeAlias * Feature: Adding documentation (#97) * Added doc files * Adding image files to docs * Linting * Updated docs to reflect changes requested in PR 97 * Linting --------- Co-authored-by: Florian Deconinck * [Translate test] Save better reports & netCDF for multiple ranks on failure (#106) * Save reports & netCDF for multiple ranks on failure Fix multi modal threshold for parallel tests * Order field by name in NetCDF * Print all indices in logs. Sort by descernding ULP * Allow sorting by metrics and index with `--sort_report` option * Remove the `rank` froom SavepointCase. Access is done via `grid` * Some docstrings * Adds some quick capacities used in the post-radiation phase of the physics, including the Stefan-Boltzmann constant (#116) * add namelist option * add stephan boltzmann constant * lint * Apply suggestions from code review Change comments to docstring style Co-authored-by: Florian Deconinck --------- Co-authored-by: Florian Deconinck * Adding temperature of h2o triple point (#115) * add ttp * Update ndsl/constants.py Co-authored-by: Florian Deconinck * switch comments to docstrings for autodocs * lint --------- Co-authored-by: Florian Deconinck * [Feature] Porting workflow: enhancing errors readability (#114) * Save all fields (pass and fail) and organize them by field * Option `--no_report` to bypass logging & netcdf save Move logs per variable into a `details` subfolder * Order variable name in serialbox-to-netcdf * `extra_data_load` function to load savepoint data saved outside the canonical savepoint * Docs / Type Hint * Fixed typo in error statment --------- Co-authored-by: Charles Kropiewnicki * Feature: NetCDF output precision configurable (#117) * Removed hard-code of np.float32 from NetCDFMonitor transfer_type, replaced with Float type * Added multiple options for NetCDF precision * Added checking for use of 32 precision and float64 output * Using NumPy type instead of string in NetCDFMonitor precision variable * Added warning to netcdf_monitor.py for mismatch in precision settings * Forgot f-string in warn message of netcdf_monitor * Mixed Precision fixes and QOL (#118) * Ignore `.next` caches * CNST_OP20 is a true 64-bit * Translate: Fix reading parameters with the right precision * Multimodal metric: Skip reporting on expected values * Bad commit * Add license (Apache 2.0) (#105) Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Change deprecated `np.product()` to `np.prod()` (#120) Starting with numpy v1.25.0, `np.product()` is deprecated and `np.prod()` should be used instead. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Update GT4Py and DaCe to bring in refactored GT4Py/DaCe bridge that exposes control flow (#119) * Update DaCe to v1.0.2 DaCe v1.0.2 brings two fixes for DaCe transformations: one for DeadDataflowElimination and one for StateFusion. * Bump gt4py to include refactored gt4py/dace bridge * Test with modified pace pipeline - added this to re-trigger the new pace pipeline after limiting zarr to not install v3 (for now) because of breaking API changes. - added this note to re-trigger after fixing the pace pipeline to not pull requirements from `develop`. - added this note to ret-trigger after fixing the repo name * Revert "Test with modified pace pipeline" This reverts commit cd6560ea6129663d3445fafb36d02f03cb661b4d. --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Grid Mixed Precision and Coriolis force load (+ QOL) (#121) * Pass `dtype` down in allocator utils (gt4py_utils) * Allow coriolis forces to be read in * Edge factors are always 64-bit * Quantity QOL * Make sure to pass `dtype` to load the grid cleanly * Translate grid: load coriolis forces, area 64 is 64-bit * Bad merge * Typo * GEOS version of dz_min (#122) * Doc enhancment (#123) **Description** Port and adaptation of the initial commit of the documentation. Fixes issue https://github.com/NOAA-GFDL/NDSL/issues/113 **Checklist:** - [X] I have performed a self-review of my own code - [X] I have made corresponding changes to the documentation - [X] My changes generate no new warnings * Fix saving NetCDF for parallel translate test (#125) * Release candidate 2025.03.00 (#124) Co-authored-by: Florian Deconinck * Fix for bad merge of 7fdfa5 (#129) --------- Co-authored-by: Oliver Elbert Co-authored-by: Florian Deconinck Co-authored-by: Florian Deconinck Co-authored-by: Oliver Elbert Co-authored-by: Roman Cattaneo <> Co-authored-by: Christopher Kung Co-authored-by: Roman Cattaneo Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki <79879064+CharlesKrop@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki Co-authored-by: Tobias Wicky-Pfund --- .github/workflows/lint.yaml | 23 +-- .gitignore | 2 +- LICENSE.txt | 190 +++++++++++++++++++ README.md | 27 ++- docs/dev/dace.md | 5 + docs/dev/gt4py.md | 5 + docs/dev/index.md | 107 +++++++++++ docs/images/dev/ndsl_flow.png | Bin 0 -> 214666 bytes docs/images/dev/ndsl_orchestration.png | Bin 0 -> 221105 bytes docs/images/translate/image1.png | Bin 0 -> 78928 bytes docs/images/translate/image2.png | Bin 0 -> 289226 bytes docs/images/translate/image3.png | Bin 0 -> 373604 bytes docs/images/translate/image4.png | Bin 0 -> 101421 bytes docs/images/translate/image5.png | Bin 0 -> 58769 bytes docs/includes/glossary.md | 24 +++ docs/index.md | 116 +++++++++++ docs/porting/index.md | 87 +++++++++ docs/porting/translate/index.md | 60 ++++++ docs/user/index.md | 3 + external/dace | 2 +- external/gt4py | 2 +- mkdocs.yml | 53 ++++++ ndsl/boilerplate.py | 2 +- ndsl/comm/mpi.py | 25 --- ndsl/constants.py | 169 +++++++++++------ ndsl/dsl/dace/dace_config.py | 4 +- ndsl/dsl/dace/orchestration.py | 5 +- ndsl/dsl/gt4py_utils.py | 50 ++++- ndsl/dsl/stencil.py | 3 + ndsl/dsl/stencil_config.py | 1 + ndsl/dsl/typing.py | 49 +++-- ndsl/grid/generation.py | 14 +- ndsl/grid/helper.py | 22 ++- ndsl/initialization/sizer.py | 11 ++ ndsl/logging.py | 36 +++- ndsl/monitor/netcdf_monitor.py | 16 +- ndsl/namelist.py | 2 + ndsl/quantity/quantity.py | 17 +- ndsl/stencils/testing/conftest.py | 25 ++- ndsl/stencils/testing/grid.py | 11 +- ndsl/stencils/testing/parallel_translate.py | 3 + ndsl/stencils/testing/savepoint.py | 34 +++- ndsl/stencils/testing/serialbox_to_netcdf.py | 3 +- ndsl/stencils/testing/test_translate.py | 104 +++++++--- ndsl/stencils/testing/translate.py | 64 +++++-- ndsl/testing/comparison.py | 100 +++++++--- setup.cfg | 5 + setup.py | 22 ++- tests/quantity/test_deepcopy.py | 4 +- 49 files changed, 1263 insertions(+), 244 deletions(-) create mode 100644 LICENSE.txt create mode 100644 docs/dev/dace.md create mode 100644 docs/dev/gt4py.md create mode 100644 docs/dev/index.md create mode 100644 docs/images/dev/ndsl_flow.png create mode 100644 docs/images/dev/ndsl_orchestration.png create mode 100644 docs/images/translate/image1.png create mode 100644 docs/images/translate/image2.png create mode 100644 docs/images/translate/image3.png create mode 100644 docs/images/translate/image4.png create mode 100644 docs/images/translate/image5.png create mode 100644 docs/includes/glossary.md create mode 100644 docs/index.md create mode 100644 docs/porting/index.md create mode 100644 docs/porting/translate/index.md create mode 100644 docs/user/index.md create mode 100644 mkdocs.yml diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index a450ac1b..ba5863f3 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -12,20 +12,17 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v3.5.2 + uses: actions/checkout@v4 with: submodules: 'recursive' - - name: Step Python - uses: actions/setup-python@v4.6.0 + + - name: Setup Python 3.11 + uses: actions/setup-python@v5 with: - python-version: '3.11.7' - - name: Install OpenMPI for gt4py - run: | - sudo apt-get install libopenmpi-dev - - name: Install Python packages - run: | - python -m pip install --upgrade pip setuptools wheel - pip install .[develop] + python-version: '3.11' + + - name: Install pre-commit + run: pip install pre-commit + - name: Run lint via pre-commit - run: | - pre-commit run --all-files + run: pre-commit run --all-files diff --git a/.gitignore b/.gitignore index 35923df0..86441c02 100644 --- a/.gitignore +++ b/.gitignore @@ -153,6 +153,7 @@ dmypy.json # GT4Py **/.gt_cache*/ +**/.gt4py_cache/ # Tests .my_cache_path/* @@ -169,7 +170,6 @@ RESTART/ _dacegraphs **/testing/output/* -*.png *.nc # VSCode diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 00000000..03d48f39 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,190 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2022 Allen Institute for Artificial Intelligence (AI2) + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 3554660c..3ea17add 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,9 @@ NDSL submodules `gt4py` and `dace` to point to vetted versions, use `git clone - NDSL is __NOT__ available on `pypi`. Installation of the package has to be local, via `pip install ./NDSL` (`-e` supported). The packages has a few options: - `ndsl[test]`: installs the test packages (based on `pytest`) -- `ndsl[develop]`: installs tools for development and tests. +- `ndsl[demos]`: installs extra requirements to run [NDSL exmpales](./examples/NDSL/) +- `ndsl[docs]`: installs extra requirements to build the docs +- `ndsl[develop]`: installs tools for development, docs, and tests. Tests are available via: @@ -45,11 +47,28 @@ For GPU backends (the above plus): ## Development -TBD: Code/contribution guideline +### Code/contribution guidelines -TBD: Documentation +TBD -Point of Contacts: +### Documentation + +We are using [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/), which allows us to write the docs in Markdown files and optionally serve it as a static site. + +To view the documentation, install NDSL with the `docs` or `develop` extras. Then just run + +```bash +mkdocs serve +``` + +Contributing to the documentation is straight forward: + +1. Add and/or change files in the [docs/](./docs/) folder as necessary. +2. [Optional] If you have changes to the navigation, modify [mkdocs.yml](mkdocs.yml). +3. [Optional] Start the development server and look how your changes are rendered. +4. Submit a pull request with your changes. + +## Point of Contacts - NOAA: Rusty Benson: rusty.benson -at- noaa.gov - NASA: Florian Deconinck florian.g.deconinck -at- nasa.gov diff --git a/docs/dev/dace.md b/docs/dev/dace.md new file mode 100644 index 00000000..6c44cad2 --- /dev/null +++ b/docs/dev/dace.md @@ -0,0 +1,5 @@ +# DaCe + +[DaCe](https://spcldace.readthedocs.io/en/latest/index.htm) is is the full-program optimization framework used in NDSL. DaCe is short for Data-Centric Parallel Programming and developed at ETH's scalable parallel computing lab (SPCL). + +In NDSL, DaCe powers the [performance backends](https://geos-esm.github.io/SMT-Nebulae/technical/backend/dace-bridge/) of [GT4Py](./gt4py.md). In particular, in NDSL's orchestration feature we will encode [macro-level optimizations](https://geos-esm.github.io/SMT-Nebulae/technical/backend/ADRs/stree/) like loop re-ordering and stencil fusing using DaCe. diff --git a/docs/dev/gt4py.md b/docs/dev/gt4py.md new file mode 100644 index 00000000..b334831f --- /dev/null +++ b/docs/dev/gt4py.md @@ -0,0 +1,5 @@ +# GT4Py + +!!! warning + + TODO: Add some docs on GT4Py here diff --git a/docs/dev/index.md b/docs/dev/index.md new file mode 100644 index 00000000..91b7ca70 --- /dev/null +++ b/docs/dev/index.md @@ -0,0 +1,107 @@ +# Under the hood + +This is the technical part of the documentation, geared towards developers contributing to NDSL. + +## Introduction + +Recently, Python has became the dominant programming language in the machine learning and data sciences communities since it is easy to learn and program. However, the performance of Python is still a major concern in scientific computing and HPC community. In the scientific computing and HPC community, the most widely used programming languages are C/C++ and Fortran, Python is often used as script language for pre- and post-processing. + +The major performance issue in Python programming language, especially in computation-intensive applications, are loops, which are often the performance bottlenecks of an application in other programming languages too, such as C++ and Fortran. However, Python programs are often observed to be 10x to 100x slower than C, C++ and Fortran programs. In order to achieve peak hardware performance, the scientific computing communities have tried different programming models, such as OpenMP, Cilk+, and Thread Building Blocks (TBB), as well as Linux p-threads for multi/many-core processors and GPUs, Kokkos, RAJA, OpenMP offload, and OpenACC for highest performance on CPU/GPUs heterogeneous system. All of these programming models are only available for C, C++ and Fortran. Only a few work that target to high performance for Python programming language. + +The Python based NDSL programming model described in this developer’s guide provides an alternative solution to reach peak hardware performance with relatively little programming effort by using the stencil semantics. A stencil is similar to parallel for kernels that are used in Kokkos and RAJA, to update array elements according to a fixed access pattern. With the stencil semantics in mind, NDSL, for example, can be used to write matrix multiplication kernels that match the performance of cuBLAS/hipBLAS that many GPU programmers can’t do in Cuda/HiP using only about 30 lines of code. It greatly reduces the programmer’s effort, and NDSL has already been successfully used in the Pace global climate model, which achieves up to 4x speedup, more efficient than the original Fortran implementations. + +## Programming model + +The programming model of NDSL is composed of backend execution spaces, performance optimization pass and transformations, and memory spaces, memory layout. These abstraction semantics allow the formulation of generic algorithms and data structures which can then be mapped to different types of hardware architectures. Effectively, they allow for compile time transformation of algorithms to allow for adaptions of varying degrees of hardware parallelism as well as of the memory hierarchy. Figure 1 shows the high level architecture of NDSL (without orchestration option), From Fig. 1, it is shown that NDSL uses hierarchy levels intermediate representation (IR) to abstract the structure of computational program, which reduces the complexity of application code, and maintenance cost, while the code portability and scalability are increased. This method also avoids raising the information from lower level representations by means of static analysis, and memory leaking, where feasible, and performing optimizations at the high possible level of abstraction. The methods primarily leverages structural information readily available in the source code, it enables to apply the optimization, such as loop fusion, tiling and vectorization without the need for complicated analysis and heuristics. + +![NDSL flow](../images/dev/ndsl_flow.png) + +In NDSL, the python frontend code takes the user defined stencils to python AST using builtin ast module. In an AST, each node is an object defined in python AST grammar class (for more details, please refer: https://docs.python.org/3/library/ast.html). the AST node visitor (the NDSL/external/gt4py/src/gt4py/cartesian/frontend/gtscript_frontend.py) IRMaker class traverses the AST of a python function decorated by @gtscript.function and/or stencil objects, the Python AST of the program is then lowing to the Definition IR. The definition IR is high level IR, and is composed of high level program, domain-specific information, and the structure of computational operations which are independent of low level hardware platform. The definition of high level IR allows transformation of the IRs without loosing the performance of numerical libraries. However, the high level IR doesn’t contains detailed information that required for performance on specific low level runtime hardware. Specifically, the definition IR only preserves the necessary information to lower operations to runtime platform hardware instructions implementing coarse-grained vector operations, or to numerical libraries — such as cuBLAS/hipBLAS and Intel MKL. + +The definition IR is then transformed to GTIR (gt4py/src/gt4py/cartesian/frontend/defir_to_gtir.py), the GTIR stencils is defined as in NDSL + +```python +class Stencil(LocNode, eve.ValidatedSymbolTableTrait): + name: str + api_signature: List[Argument] + params: List[Decl] + vertical_loops: List[VerticalLoop] + externals: Dict[str, Literal] + sources: Dict[str, str] + docstring: str + + @property + def param_names(self) -> List[str]: + return [p.name for p in self.params] + + _validate_lvalue_dims = common.validate_lvalue_dims(VerticalLoop, FieldDecl) +``` + +GTIR is also a high level IR, it contains vertical_loops loop statement, in the climate applications, the vertical loops usually need special treatment as the numerical unstanbility is a reason. The vertical_loops in GTIR as separate code block and help the following performance pass and transformation implementation. The program analysis pass/transformation is applied on the GTIR to remove the redundant nodes, and pruning the unused parameters, and data type and shape propagations of the symbols, and loop extensions. + +The GTIR is then further lowered to optimization IR (OIR), which is defined as + +```python +class Stencil(LocNode, eve.ValidatedSymbolTableTrait): + name: str + # TODO: fix to be List[Union[ScalarDecl, FieldDecl]] + params: List[Decl] + vertical_loops: List[VerticalLoop] + declarations: List[Temporary] + + _validate_dtype_is_set = common.validate_dtype_is_set() + _validate_lvalue_dims = common.validate_lvalue_dims(VerticalLoop, FieldDecl) +``` + +The OIR is particularly designed for performance optimization, the performance optimization algorithm are carried out on OIR by developing pass/transformations. Currently, the vertical loop merging, and horizontal execution loop merging, and loop unrolling and vectorization, statement fusion and pruning optimizations are available and activated by the environmental variable in the oir_pipeline module. + +After the optimization pipeline finished, the OIR is then converted to different backend IR, for example, DACE IR (SDFG). The DACE SDFG can be further optimized by its embedded pass/transformations algorithm, but in PACE application, we didn’t activate this optimization step. It should be pointed out that, during the OIR to SDFG process, the horizontal execution node is serialized to SDFG library node, within which the loop expansion information is encrypted. + +When using GT backend, the OIR is then directly used by the gt4py code generator to generate the C++ GridTools stencils (computation code), and the python binding code. In this backend, each horizontal execution node will be passed to and generate a separate GridTools stencil. + +NDSL also supports the whole program optimization model, this is called orchestration model in NDSL, currently it only supports DaCe backend. Whole program optimization with DaCe is the process of turning all Python and GT4Py code in generated C++. Only _orchestrate_ the runtime code of the model is applied, e.g. everything in the __call__ method of the module and all code in __init__ is executed like a normal GT backend. + +At the highest level in Pace, to turn on orchestration you need to flip the FV3_DACEMODE to an orchestrated options _and_ run a dace:* backend (it will error out if run anything else). Option for FV3_DACEMODE are: + +- _Python_: default, turns orchestration off. +- _Build_: build the SDFG then exit without running. See Build for limitation of build strategy. +- _BuildAndRun_: as above, but distribute the build and run. +- _Run_: tries to execute, errors out if the cache don’t exists. + +Code is orchestrated two ways: + +- functions are orchestrated via orchestrate_function decorator, +- methods are orchestrate via the orchestrate function (e.g. pace.driver.Driver._critical_path_step_all) + +The later is the way we orchestrate in our model. orchestrate is often called as the first function in the __init__. It patches _in place_ the methods and replace them with a wrapper that will deal with turning it all into executable SDFG when call time comes. + +The orchestration has two parameters: config (will expand later) and dace_compiletime_args. + +DaCe needs to be described all memory so it can interface it in the C code that will be executed. Some memory is automatically parsed (e.g. numpy, cupy, scalars) and others need description. In our case Quantity and others need to be flag as dace.compiletime which tells DaCe to not try to AOT the memory and wait for JIT time. The dace_compiletime_args helps with tagging those without having to change the type hint. + +Figure 2 shows the hierarchy levels of intermediate representations (IR) and the lowing process when orchestration option is activated. + +![NDSL orchestration](../images/dev/ndsl_orchestration.png) + +When the orchestrated option is turned on, the call method object is patched in place, replacing the original Callable with a wrapper that will trigger orchestration at call time. If the model configuration doesn’t demand orchestration, this won’t do anything. The orchestrated call methods and the computational stencils (lazy computational stencils) which are cached in a container, will be parsed to python AST by the frontend code during the runtime, then the python AST code will be converted to DaCe SDFG. The analysis and optimization will be applied before the C++ code is generated by the codegen, this process is called Just In Time (JIT) build, compared with the non-orchestration model, which is eagerly compiled and build. The JIT build caches the build information of computational stencils, and orchestrated methods, and it is more convenient to apply the analysis and optimization pass to the overall code, such as the merging of neighbor stencils made easy. Therefore, more optimized code can be generated, and better performance can be achieved during runtime. + +## Analysis and Optimization + +One of the major features of NDSL is that users can develop a new pass/transformation for the backend with new hardware, the passes and/or transformations are the key integrates in order to have good performance on the new hardware. In different abstract level, the passes and/or transformations perform different levels of optimization. For example, the loop level of optimization is independent of hardware, and can be applied to any backend, while the optimization of device placement, and memory and caches optimizations are dependent on different backend and hardware. In this section, we only focused on the optimizations that are independent of the backend hardware. + +The general procedure of code optimization has two steps, in the first step, a filter function is called to find the pattern that need to apply the pass and/or transformation, then apply the pass and/or transformation to the filtered pattern to insert or delete or replace the existing node with the optimized node. In NDSL, the following passes and/transformations are provided. + +```python +def prune_unused_parameters(node: gtir.Stencil) -> gtir.Stencil: + assert isinstance(node, gtir.Stencil) + used_variables = ( + node.walk_values() + .if_isinstance(gtir.FieldAccess, gtir.ScalarAccess) + .getattr("name") + .to_list() + ) + used_params = list(filter(lambda param: param.name in used_variables, node.params)) + return node.copy(update={"params": used_params}) +``` + +## Code generators diff --git a/docs/images/dev/ndsl_flow.png b/docs/images/dev/ndsl_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..37a8d4353b6a1b553a3172b85207455839980cce GIT binary patch literal 214666 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ŋ$vR7&j6i2U%_*pcwoK<89a2VO*vI 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 YesRZ;%;M@11pK)#qj<02u0g>60sM0$QUCw| literal 0 HcmV?d00001 diff --git a/docs/images/dev/ndsl_orchestration.png b/docs/images/dev/ndsl_orchestration.png new file mode 100644 index 0000000000000000000000000000000000000000..507e618d57922ec3b6b3df2c50d72695b67c92d6 GIT binary patch literal 221105 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%0D9<#n3pTgASZ(9IIckuq(deiLqe{h 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 SNl_I1cj>~F^EvYRzW)#HlwcVE literal 0 HcmV?d00001 diff --git a/docs/images/translate/image1.png b/docs/images/translate/image1.png new file mode 100644 index 0000000000000000000000000000000000000000..529d55eacb8b053e0bf9053254065f2f6fbf1418 GIT binary patch literal 78928 zcmXtf1yEbv^EOb5ySo*K;u55|yIXO0cP;L2#jO-~cXtTx?p6ry^5y+~^Uq8sH<`UB zJNN8ad!CI{QjkPOAV7eCfIya(5>tVIfV2U>b>LvYzpNPgI)Xo-T|}hS;J`0mIMWF5 zcYIfIEmu_sb5{=|XEO*3dj~tS?=B|JW@h#-mJY6;%phCLPZx)<`*9H}ImnZdS`1N}5B%xQcph=(_!!~&eydnc zljkRog;0zIA;TaBjRw6N4-Y8@dA2+K7vg(9>V0o*Vjq{n#QMM*rP5XE3aU*DjyGU=G5Mn2-^mKMm-`n&6U5upN-OiE}+ zs33}C@80A_fvfdBJ{o`4)@2?sKR@Yb{iiTwj}Y|kxf#hg5@9;=mgW7GI+Mw%sYEk; zoo(66m$!Tf^@v9O?tm-7F#{qd{3H2i+?|`{_XzJ0bP2rO36$>?8{K|ci;LErR0?pb)YK~10*Sp9D?Ed6i>=FnD|d)X$wzS;II(My?SWpqo+ znxsEzu$&d&PrDpXR0=Qe#rxVz(6t}&pQU@K2WkRe|9@NZ&a zr#vBuJ`9Dn{VtW_vu%we_K#xv9qacW?o;6eCSGT3mEdrSKo8Yt5U_A7D zxNk96X2MDi3uV%=O--ErEQ5H#E|<}l%NAifRA+miUy3=4v-UPuY9!G~7`*~MtWzaz zt|2q?{`&_Ts2>6X3YmZJyni$}eh5 zf%M)4RGe_&Gwzn;2~4z;{Y$VC-(^}>DgWk+k| zvs=61dIwM=L8Uyjulo@0cE8cSmAL^;4K@@1+o^A!&eu=af?SIf=SY>W3zS%s+s*ZAtfKgtR%eL+2f91PSQI902;?GU4J1OZoB;P)p{o zz6r8rukmmJ?fvY2vmYFySrn3)V|^@3Vl z8T+&|ph)^df>LDB5@b(Btpd9f))eV7!R`|3_xLvS$ zdNmE|7NubNlu)9;`#R1}qq2}Ac4*cWvRXTC>yn+1Vbu6{`@EsOV?aMC0R|x)Rd1QX zGCkR0OQCKQTb~1ETwH|irg9UNoB4m|X#kG8!Hn zOQu{Gw9iUx;AGYBV) zwI{~1gsyFA&?d|*ue?-%1)u^r;Xz-Jp@rh~on;&53_zu_>?lt252)VCZmh16A&6vS zR{v}EJf9nBL~}KC%n*-8i!g+q*-7aa(NEEoDQj2i#o`MIs+Gie_|L9s;nHx@SGKmy zy__>Rz*>FD%Ba$4jULwLpTazbiV z=o<94w)QN_W!Hm|CY_(NUR&+{iM`Nr9K%vjqTxvJA{6JP#c4t?>Pt5FFpJl$_RU4$|ciy0Q!RO!B#r<{rlF~`g$F>U9dCoQZe<_G- z=ic46M2uC9iyU>(zDj4J$&T9#7Ny@?X`FSwy}7)N%}={LCnIL}xQANg@sDiWF`jp! zd_Fbg{bJ4LbIEiN{KR0Ac5FiUTn~5`>>~LYEYDsW$1W@Bb@MM-PHs9sXXetiwV`RK zgKu3*!tRA@ z0`axKqQ*a3(;y(H=Y75B5O_vBhz%+AKMUd^NwWT8!yZDr?6Hx`aW^}CZc1t-I4VRZ zR8B5&vR^BK{!?~DyIw|&sx*mbqyzMk`&_+0mRu4s@b28c6T?KUAGsH~+Zx50coiELt;`nL+Sw+VItg%pYbOC8S`y?y++QxJNL6Uhu3MzRCY^}+JCS?{ z-x_BDK3e|&`fWs#DJbFIIYhG{5KqX&%HmdgF=$ zFF%-b0aJCM;#<1EEh?6elAHK^U2kFZ&H-FM0^~~@0-=8<8?i&br=c&<&F;u!h z7eJW^iT*Ndz>5BA$D&h&-hM%>qT+2z`R5OBQ3<=dnoI{qE$*XM*8_UACbP4xZBmH> z<86(;Zz^z!iQ$5{93=*>3};R$_#QEbRRC`xN>nTm)4sB@w!K*)>CYC!0n7Wxm4!iR z{Of;;n}y-@>c}Sj4KaE;eJjVdtolK29XktSf;1(8c}%43?itAv+aJ-N&|wBmt^uoM zrz9NVf`A^2@kK$kYQYJomrQ1UicPGd-Zfnnp#+OI7Drs11Dhl8OR%wtU+n6sbllV= z%Mq4Ed`^DPy19i7Vr9aeF_8!X!P4lHpG|6BjqVNadl^34*NO{b<03C(=d^40{<#AV zll^^Lw{_DD@gi1U2&^TY(PM6p#w{9oMDefghX&v7N5Q%~qC)Q!8y^#;%7p6Igx5dJ zQg#-W$K04!Ij4tHN=GFB)@ce`%A}M=AqjCt_`b#5k^bk7O_tjwU$hc{we~9hlU(8Z zg}$7j2tp0^In0myd+e_%kji4T<>Lut5iYiN_Oq*-hvD1LOxwsJNmY9Ouj|`0_AT&k zqasbxoJdmbKlV7t5ky{eW)<1l&KKz_e*Ubqx4+&zHaOy&?wVWza^>l^51zg7QUpEh z@{1{lCe!5YJVlyqd7poOaDQZx_@;oe5J^p zUUfhDu6_NkL7=enr*1?cy1FI3s8Usaf5Kt0iS2p_UzL3Qr0i5|>3C{9Q|;R24%>u# zOLVoyZ#m>?X8yip8ig6K@3(PDmS`C3-=px++WOh^m3H`C{;0%4tIahuwhE_A*){2R zSmcU$BAI2en%b86!z$vJ8`&hH*C3Sgy+su%0R0qXZfa1Tj&j{l7%*Ns4I5HBx zvI(!aOpSggWYRqT4@w(@?6xS?4c?ow47xf+3Y+c4zuLvqokj^XC@c$wT;s~EeCD_@ zOv#hBn5i5MuS~F0U!_sFT{vZzzT!CisVppuq;?gdkMqwTt<^fL zZBu3vD#$_OEucrB5-EoPMg;9IjG2IUZDVz#mu@JVz0>uG4ktbCW_#-yS#yshkydWj zp;KY?kSSug-?wY*H+*Zuya=BWTc|~P-0fMz^liY~L%QyHOI_$4<4bShVdQG+yo=*8 z#eXUN71ao>^0A4i5_GR8a~zw%8>_qU;jnN`uzTBi{ud<#6Qn>CsTWpwGM&W89XuVm zlzyw4hBTqs38JJ5qA12q9ef2+J#*o_y^BYGMLzl8C=_v1Bn9j8V=t>@k5U;`)8DW{ zl?kXE&94E>L_B>RJwD;~HQ^+P8G1UD*yJu>)Z=Tn=S^G{=o94UeXJLYUtK5M_udK{x#)25>?6p8 zjjfSl9?{3i5y@nAdbd56B^y(D;ku=?MZ%BjR=&II zGgTwe2DS#$mY1=hivg$xtzu}&)dYU-*xG<*@sNHYye>fJ9m7oti^@&Q|e9Kkjq5ee~ zrVf842jV3$ipTU>4G9yTUcu=KV+8iggsJA!lS>du=PL3|ctFYQM(V%}&j(o}G{vjH zj<&l7sQHJpaKNGt8`dw(NWQ}PoZMjD+N2_Vr$i0-d-Ho5Z_uUZmW1nJ0QgGl*W)1> z2J|_>{l-hW8!h>(l)vUyxUKT(UoFdZ2l-dTjdx@U*!8QJ%GmwUIxl-&2Ua5PZ`Oic ze2J1e5~kaqFe=_rhE4s4G1g5Kv!Z6SJa5;GrAu@XO%yOnQ9^W3*N8bMJFQjuo7QCCmES*mGx!5u`*?$S$wVYEW zcWv}Zm_l`=kB#1}r4$2NC`6Fo7h(ULi>z&NXF0ccn{2l|I%xTJ4B;L0fN($Ty{awz$PNBv`4LX*-aM|_Q7oJM;8Vs z$LFJeCW_BW)L`mRr{Ls1zi#io5y@8l%!r8_+>K`@qs&C@E zQUEJ+ezQCjt5Qjlhx5v(4jr6Mcv4S*3~2A-qCippGUli?+I}2c?TeiTJN9mUqTZ~2 zas)Ykivrwh_=smEUWOxSl6E+W~kx`69wxbB3kHk#-P4bJ7nLg)TDxFDi3re z;o(rIA!Kx^+3+NL6xD*!{2uXvc1u-a1$S}Mjf9n|1N-{40s$oEzaG;cT?yL`6keBD zeSEe!@ADCs*(ccxLwPoyx{p@xy&2;qhZ6za&*9MC9JyF@AV!W&H>c_#Pgd+RXr10cz-p+z2g;LsYV|0S#0YeOD{J*Vx} z?xU|kfRs_hQr;S30of`b2Qed-DMzF?rqXl-dc>qq!ue+pd9d9H`Fy(e6+WQX(7Pi@ zq>ELB;h0_sIa}PQ@RGJehxKtL6-@gYIG^ew;~?jNFruIhQC)s;4n&8N8g${Pz*o>x zQCf*4nccBF?jg@0)P(WS4sEB)-fo}06`;lx=#&||8tnjoTXLP;V>I*O9A8#FG2reL zEcD1ccLH>53_3-9ML3Rce0GfTsJ==NHZFxryx|-(0;#;#JtScScQ|B*H% zE9`WCe$>DtEy{$Rp5iYpFH0x=>2$ahKls{RJ^0Q7r;rWUg;!;mi;j@w|!gK6b<^pxsbL)D_hA5GYB;A-;%3p_I+PV=sb6z6~ zT}&jyug+%!e{-vqOp}Xo3{R_B@br8YQgX}wYR%EMCIMX)f~O}FsS_dv&0si$0d3R< zx0dZ3^AtJ+=;Ip$&?{itfYwRcvmwGM)l(&n+R3dr&;*$kY#N_*((5qToSoBs6Foz0 z_Ho;>OgKzpd22eK7$wtjA_^1qEz(oZ(>))Hu$z6J+Azp_3vR_7ck~X-F5fc;-*k>E z9E=cuXJqWgF6$c^cg9hO%Z_g>aB$mi?K*s}E8a9efQB!-eI7up{VWFuW68SRzW6k8 ztE<{NRXAPt>AiT&O@fBzSW(tZ;|mLv=jZ3IQd$i1O)6&I-kH`-GFAEmJR@ss^n`?2 zs6V!K7|!kq8eCkUse9LA0Me~~=MQ?{zC))4(dPI7))$S`3t)85;rZm*&ErU@2(ql^$rOHI z0X$>BK9pf7q0!18^hWmr=Ns7~*bIr+paI#6D5Y3#vtmz#l{UoCnOMwy_(ZAM3oKFk z80_fct}3$Dz4RBDO30gj&lgg4M$0>|$$y}g;ehC&1PpscT-bQva2HA|D(Dtc=p0FG zoK7wiLG+uWC}^0rc4-zX*lnvKP)9yn#+%cnsXfei|U5nTGvgXSA=Ket)kG|h7SWb#8js{h{c0r>5*w|b zOdoxPVRx_X>WW>;^zWH|dEuR(pU;yW2u93mFe>nV3OahpC-~!=_gE3OcVCiQi2G={ zP$8#gqub+_Rd;Ij_e_54;|ld|Uckr@(AGM5o#ADkxqr7t%(U4GoSJfTAKI(U2DA@e zms#2SzQOaoGhxP3J9OW`fb?5O7jran**HrMblaIIEyE3HMQG$gv2*$T!cL#HrA+Mg z+xlU%vh;a1qe}8TgESR$_l8rktMz{FmRaN(IeSMT;xgatUf2L^ylyuTiL4ZAZ)U%) ztvUO8WfY$QK-HT&0lJ?N@D%_7)~PyGnzChUQ>V#LMAG`Umgp1u!Y@GnYv^gxjN?66 z(0o%AjY5ujJx`xt_a_&($4@i2XK?ehrso<)A%yhvX#};CBxt&T0>H)fvyqE?X7A9; zu7lshJ5Hi2X&sdfDu<1aD`=w?iAx$? zx=ehhUcg0G_MaQCZkzuX%n&V}jV~Y7>l*nQRjizxLvL^V;O*_~lq**0!y5nsQF3&@ zJJUKFV_mn+&`=L6BXDuINX;);)J)z_C{r0bJ113W*36x{!xbe^N}oKwKIWL3l zO#&yA{?b)cQ~;dXWXtG_Pr&|QZ;xV0N2lsLH8r&rR~CeBkAIGTjbhR4RgL+VE3vNb zW`&N;hsbq$Y;y|>>7)?aD4F`rjg9=}a}zs_@<{J4k_eio(^ISVO{NQX!e8J8Cnu5a zy^)Kt-u>lD=8gPJx)|dh<%2b3693W(qp=7GwoKzFbSq zc@${TF8nG*?WPDRHc!^f^MZNcl`DMOLS$B|!*589NLR=krVW*0FXS*XF$2ZBWO(eql}u-0Su$W}q-0lfBW04gU%ILh-QK@vFY!A3hwpB`X}CdK$XHoRp!0!OH8p}yv&L{PMbK~eD-J!jTGHNL z$ojHo>0kKcw6v!_!tF4C*=F%m)lY+QZMK#(73>MeP|ynRI!>x}FTM+^FR z@DsZLBb4J@{bdsc=)LLOQ0{qAJWphheXx(}KXNw3(0TO_KUYhiat2@LjX?>eh*3hj zlWinTB?w+523{ycq6>IRqu_M0hVah#ZK}9M)WNS{BaYAnt{>u<$SQO0!d+Wi+sMKq z+`eUEu|o6o-utk@Q7{57Rw5W2E1H{i0LPXb1kl1tGTA_$$_9=s`5?0VSxcpgN(?Rn_@FR#7f#V9Rsm zrNxpKH0o%Yy7<|mWnfUEU!hvD__iv>5@-YlY-poa*47FatyA|gJL|f1s*;M!6y=G+ zh(LZXpr15@88_rE8OX|E$aj3RqUjmi^^GgR)9X8idc#x_msKJ%-CMxd7VPZ|m-Q zR*lEG`#N9q)10~CjEt0uqn~au{amgw8q^f%@w;c6?zw_OyoX_^;>569-P}9^j=ODn zp3xDkIX;ZCemsCa(JeTHO{H>RTDF94C;!F-HwDgH{0B(wYaA~Rajk~*9InJ#H@D0gPMv-I<48Y`(sgyU zjr^@5H~+|r6HSu{0uv+QKR|gOUw))JxxC|i?uHBQtR7Z70AFwl;3M}<^U8O|4;eb&fqa$K)hO}*W}Zn#Yl;J4We~^BXsP7n6=yD}Y#l(# zk@U1ghz;nHxYloP2L4lr=M`$!kkkl($2&UvjaKQJJmoTt$U?YAk?ese3imL3TlDiG zIU8at0(LIGk--BbkgsFL!d}aPOgiTe*!OLRyBnC^7@6Y!g9GTQ3!EyA=wup2@*tY# zeu!tZN4qASqV4!qaL2~nJPhne)0y;`q67a}jf2BWbaZr#Vob6rJlH+md84LPiud9T ztY{^(z*%w;Xq~f2u(PuVvxeQ@->Y1l;*yigV>Y+^gccTRSufVFNFIcj&V<_X)E9mD zZchB;rfNh(S(*HW_PyoS}MeHeHHd?WBn|BaIn>j_j z{qfMk<9!FGljTg5UZcBPWzaKZZW9g8ro7|JIU~N9jiFUK<1uPz8{75$6$4TLS(U49 z#_LSvroZoID{*H&k4aZY7>0Fn*>AN5{%D`f^E;ORc&^&^ZW1x91@6h{)vkdu_Ckb+ zWDKqB)0F!9Cpk8y$lvi)t5`UHgf8XV?S89VIc;onwFzx*e*5RqBitB9#%--GV#{gj zRx)J1QM4WL6cF&rtVIP~usgVikuLZgqChb3grB%nx!pFExT@WMMek=58AE>hu%e^4 ze>U!hfz;#s%KZ=8b9zK~Waa$vX=pmYAH=gIxGSnT9bb%LSr0IG@{dc`_sx~X1bvrc&j3t7m?DL6Ls$}?{b@kknSfHQUfo)MSnoc&Xa++pZIho7*GYpjBwhYqc7 zKJz{z2^jf2K1WDCIRX`gKfQ``Z)6TWZ(n>8-uc8kHO28HXp2wXeAFt`=~EGWeC)Ds zhj%(abGwS2AplO!v4aCjZimf5Jo$!I$~a899ndZroQz7B?=u@XzWm^uT3Nx{w0{&5 zjvp{zmF<|HXK!35*3hs|FvB0l1LpqtdGcI ze~)6xdhx2IN|~Bvla4Dd@gCq~7=u#?Efif=R+iFgf|Q>7|F{6-Q(4?DZef~Mzk4?x z4Iz7qq3aoMxzn%zW*GDBw*);mf9~#=kiyH*@#diPJPk3!i5jR>oD?+0`S;|>Zagym zB^yta5vfFu#0ZHI)An8?Pr}%#&pHfTtxM8l}tpSJK9^HW2}NG#}%X;`LEh zjpO+P0;#WSB!^9Y3fd7T2jM*eBBCtE9vs7u6r5_^HaQHM2wMNgSC8ibNm3L&P5HkR zdmM_xhl~+s*48m#=W+w&>-jbY9e!<{p<8#Hg<0ya9i7P$vvbX?xo+~zo@ ziV(5GU^|GcI9H%?*J*ps=m)*9rKMN$5=+fKe+WJi2@x&9Z`!9bPN1N-6ojV#vwVDv|X4Im`F$`nB`(Bb?Gt9jKmZPFZGLa^VT;Le+A(uS-I+ht)L4Ec~h#k&j*njR5uuqS=3S+uMW80DVh4xjdc?#I8uLz`Cw3`Ihx5>1N56 z_4{VRsIK6Y=f!(QSy0gRTH$)FV--Hl6`d?(Jg#16eLm9m$UA%vbFkmtJEll ze4;){$fk*YQ6{yOG+p2XEU?-2BWcAa8H+Dm!zS9h2sroz@agDSnLN5Z^7!lY4~!cD z;vx$p%w3R7mM(o1{k8xn+wanj5UrQwe1DFRRtas z(hV_;@?-xJDy9bh>0VxE^+|Y*hN~h=3q4OAR5DPt8(ZvT-(oM_!d!9^g+5lZ+!KVL zN6y_fQgFi9Kw)qQH^nuG)R3y$#jrNCN}1Wl9I{(v2ztjvw(*oV@fJjC2{cd69;)hU z>m7Ebp1-}kg?B#OR7@%;V2U>tL|=AhWjp6XGl(2@f^M4DTTUbQ7rD1hPfu9mvH^Y3 zH9aUsA*uvbU(|9tIbB4Qs?bBw6|gdd_MpQH@fV%mk%9|Imf!|=h$6WD=(w2pM4wG^ zObfn3$u`{b`@KjPUehsESI@AvVVMswj(k@ZR*@G2)g8cm0 z{;Wam+&}=4aBo=}Vi5`Yr;xs%7&O#72QMyi4iA_7&M+{wwdL;-fvh<1ux;4|BjG0g zM!BKI-+Ui^wvQ)OrwbX}7$MUVViM%UwTNFHjYkJx2P}Ydcs5seZ5CiE$L&AYb~u8| zhVypZBub--Ch?Yaahs{5BXcWLq7bU>*9XPql*L89jkbpI;bE8y_pGkXAMPIRk^8^> zd*b2LY}ET{#pu8u$kf_9D)t_kHwS1a&_qvl)Tj63N);yroXrr#@?v6Qg58|c;W)N; zm;b4uQpFNPL}BR$KK7YdF?Om#|GPu^n6XT+K+7D#e8q)^#$nt__>Ye zZ;82;g6p>JnjoulXIB;zLQye(iY?h_^!l&ojp z!Wc9ux&+s^gtw=6m;1K!K_m$h1>%@HrJ4-?sQcH3ag6d$!pU2H@-fCt*QRR$YpUy7 zI%KJ$055m!*~Ze5 zN^UJ3{lDqpLfB5IXb25372o~%C70hVEc992T;coeM`*NZp;XnEqSMPpug9)Oud}ve zfY%v(<`k>{TXbGS{br#BRH1b$sPlt&I*&)Tc*}J6ltz1d)5yZ3MUE2UiD(Z29FqE8 zhIvVSuloEzSwhd{587!#7&y2`+WG>0VDNI9|CVT4;E}=tC?Idm*@&kJUr~oS(u`7=$ELdTM#Fe6yn_#*OaEvvhQ{+ER<&cU%(OM zo=zKOU-1}NSX)Y&sP>z{}F0TK*qqerUzaL6fHQCm#X=P(=0~GLq9KtN{>)?eV zbV?ofLq|}Ha;t|Ez&Jk2iuDI6gh!jka(?&cHt$GBPlp7Cpw@_X*dLOc_jh+l*!b0S zBxx)OBz2X{K#E!QBtSudaq03(Q=GO1oZ4u4)5-%$a-gv0`Q1EL5fM!2EM$l2AK)C4 zh!{~>6D0+-5o@Eg-P z3N?!f+MTRQ^{4TG%x$g!Cv}gDAPC>0bmpXLC&olc!^ISCg93wURfg#0jgglQjaJ4bEo7WN*uE8fIcAZ88|^|>`(=0|M=ts} z)c1Pc`+o3+3rRZ3Q0~`KCLnG#uj+8?@lDMBbvqG7a2?OJ3OuER&|^HV2tT|Yh?peG5Wc(QjF2IlId08ctEnz$^@f=wo+ysieuz}wY)4AL7%lKf%rc< z;d*GZn}mP5HCa}%>`~3Pkg&j~1Nk81u5HQ2<=Y;|8;)e<5LSeu_iEu33JE7KpXBq3 z7U}F7on%w|aV%}AsJm*YwFK*-YT8Pz?3-utY=TNL4QP5uzP*!Htct5Za$q7AP*T8p z6k&jtZ2W1vtiKC|El}^Gh@ZV!X*i{Qs9sFGd-L+qCq-gJxWdbE;ffP4WD1c$8O7qO zT<{?L)~?|WPcTBQ<;&g=Be?~!f)fj%?5rnUI~Lo5Qmt<;jL@LN@jDwnieDaRVe6-%xpd)mu0IyDyc=*YNyVLSnx(S!i(FX=Cod7?gWB@wzwa~H;57nzaY zDXJ;GQ$aA<4TE(Z$G#-lc@7v*D0r7LLqm}8I}>q|r^i=+3ji`oT4v5S*Qm_^;p~Kj z^MT+QAN~|n$=q-Dql8f8%%(da&z#RDb0IzbvoY>Xd&B&Ro499dfERJjE^_#ju9E;^ z&az$f1l5>IKk-W&1$QpI_|2@}qT8U4>r-Xm2dvC>cSt&57IJPRL?Rv1} zGF5MO_7VSLD+^4D8m$>VM4Kt*o!ee+$d)$A4ssFG$;~Ma&5y($}AaD^Wl(woO=!-`} z+dF#219L&*zhVf>*_cNkPlEFc1%J@7=5o8l$K#$b-f-oFnynP>!%VUu8gbwkIMDz% z2RHN*j|y}M*2eciOZun+y`dhOD=+^cL(Q97)bj{z*)}KEA(Pn)L#BY2d z9oSdkj^0JTK{C$ri$+Z2@16|U@286$7b{l%e1+AHzQ*xlIUEMcvfyqa?j-Zj(0W^KU%&j0G~q2N^z18S>pM{^k!Au^HId z;P0}}Q}94LdOfkj#-p}}iB6|K;LQ3opuK+)y^Q>-Uh0eZvz?GFL6YsT^N#={XC#eh z*EF6F-h-_0kOiz;f7=qcVgCa?&W_zd1X)?)P1h-WV*r2n zEEWiCh!V7H0n?@f7@=Rcad^j>xwTOrrz5{1d@E!rl*Qdig!c(>!x>}fs7P8FkM$OI zwN^?Ha-O562{U>ZWSbefz`PQ3W*Z-v7e739#o}p1_t~a$@x&~b-D{f$g#$sUr0ukN z{2N_!S7Z*ci{WnQM}<{(IT6mgty2Q0VOx!Q z?|oShEI`V2qT(@%NYSA^h8gcK>*{{}|R!(@8XO{TR7XT1s znVCAzPDFG_FfPD!)_dyay8N!4Zb3Wb1e*k<-S$L>fE`_+l_JOVL$j0+@aYBlD}EsE2NtKr6tM zQy=2Wf2Rw07yz;VV4s-we?YXizdYn*z?SgECebYSivq%xcIpZl{UZueX&aZsrnCHR z()0@y@TpkKb#&b09be@hBsyvSTr&^M`BaK{WL(jwYy}_SA+d>=tC{> z^ztoY|2HBolTyVZz~hq02(Px@`CS%NZ!zSf^3;hMgd=~6?6|#0bWCtnFb_;6?jAVCh~YH=IA9|^NU|mvd#__tAMt4 zPwye+(MJ93s&g;Yu3#n$mLfzUB88fB{87})qBZJiQ-~VMD-ILu?rXj7P5g}7AQ&ye z5V<~<;_z}83LrVmH~w0JC0#cC;G$H@M1n1YEllZnbcgBt*o0fk`OUjapa9+XPYLQ9 zoTC`iz!65b#&ai*I=wjQTByqO1yRJ|ScBr#fZ#LE-pk#Kj~I220^B0)!Oxn`!KW3x z&$sA+e%c9HW`U{4ZQs<-kK~pW+kl3m6N#riw2e+L%qmWBO$Qzd0r#A>wA+B+&ap@c z|7`5xj>SK8pc89EP8Y2-lfLA@C9-Az#v7q#mFCRHQFpYG;J$S7u|ZU?!mt+K#5*F` zm*dO?oUhn}>KETpJdglhQWK&@_TNS6Z&y@V%OL?a5p70jE zv7O@FTPBXSP_zw&Ld=W%ZVreR^~ZCTsAD*PS8)n6Fxgh^Wf!B1L8lTd){6YrO5!jn zSuP4^Mn2+H5y*Rb>*rSpNli@+Z%uo}_xF0nBK7yowOJP2tNDDX5oUu9k9Tu|9!GCW ziCo1GlKC2445kI^8I0i26<@a7!ItBMvIwyDsVWLiF$X-$HlAON%T61Hp^VqZc=*3^ z{lRzgN%vMS+9YxCKQLK3x2(lefEvHaueUF=zoGm_T9TH?5}^s^oL&TH&HrD zeUZ9g2t5}<{lV@$-Hn3TL?7_u7vvfBj--Qc_{SE>a{G6BYD0V5Aij0N#;rB7`KUUU zgN$#I02f<)+*ig>lo21&yprWr@wt>Tnb_mF@9gB6PMBz6kRXGONzjsgLv+z!>nh-j$2n5x8}jcATPV0WE`R8aHH}>_8k4^c7RZqyOI| zhlg7Kw%-$u45FHWb6?L2u72}NcV?<2@KD5!G^AWx$3DCe95efd48m`F?NZ_39Kltf6En^$2Mh9eWqMTW9rjldLK}^?B`aPn zM4DA+2julyVx(VR4=F~pvmzJsbTM@_fI3yprV0ahs8y{kE_RR4c=MnyhTk7Q?H<&5remm5idwPa$#BKK%fwWO`xKWoKXuVyaFzGYx|nAhh5_~Yos5v$-- zI}@Ew6wR`~_dr6c6LR+N`P8aICnt*E$II*Q7J{?1=MI%ZXL$q+&`zvE6L|{rvyG~I7l6#FP zwm4Q88o>65VQynX`}n;HI~)6B;`8w{p_MWH1|{WPMSm&giVqsrHN}iZzLa;s;O)F; zN5Uq!g*mr`ke2Q63!Q#$j}+ES*ByL-`w{-pFm-EPLlo^v32Wk6fKomAi0&LWFd)y%{%*nya5Os#7y=fX|wmF2LiO8#S)^dqnf zSd`eL*&F@%h^Brd%zQG>6OJ?T?+y==m0`IW?a`<5(W7;%^lEN`Srs1X2V3{!JILkX zAHMYzjMbiMz+dTp#ef@jFkUArIEI#=2SAG*WaXN;x;EM>`N`0077}P|Y#dXP>lH@& zc|h~8xg*~un9u?|J@PGxal*1?-Arfr@X!p5TK;QV*VlZZO}fVoQJnAbW3qn60XS{7 zXv0G4r56N8Ce=I(Jgg7t^b+U^M*S2?!d3GsyR19TJ|Ckt@ z;};bCWLoETxShMP>i%4CftE=uX4Mcy8Z`X}7-^@J!m7`4gM+%j-WJWJ*l{}>(D_o- z`6^zdvmbt}Pc6fEJRKl~CJvAuYovA);rKE3sP7Z(@?zF+9t@C|Vw1(Os)ULm#~ymw zVyfU<|3?LHiZ8=pn-7;t?%Lhn7)8+@Sv(IiQc^2K%NDm%bOl3cb#=nUI{U&iPj3@@ z&ZI-Wlfj)-)g1X0BKcUUGb{qLJAxl2pHeiTlv~BKrFG5C3V0!E6ayVS0eOPipAlp? zUum(RfU~CuJZX9|UHT^6IE}1ZXqBC>MN8y6Ge8W>kp;2fo|lTAgA0%C{or`!#8aKi zllMb^5{V~o3fhf3Tl0xCEUV0d+YQVsPc_2$sQ#*}{O_mT@yeHJ8e$J)AMs9}4oHpE zPQYX6F==t_KETPHx9#29+ffc`YhByWAA|@h6Nd8!d_01C-V&U6$F?S5Q!FRF#QfPK z9D_Q+6m|P1?0N6eSIisR@Fm*3)ai@mcHH&{AscCI3xr9n5|#!<3S6Ke59OL%Dk@~8 zdz~CxyL5=)IC@HnVuUF7x4Sj;v@R?T4JMhceVN=GLb*cE^3KbAhhKq>M*V z4RuXYqF)e0U$I^z0kR&Nnr3F|UC&2ZpjUn~si8gvh~Jx=eZ(hCWRxbNQ~yOSC)9)Q7HQBl#D z_*iy9!D$6Mn!`NK`1|)0`cAzwjidKySgrG}AZUD$IL;@qnN=je82S_t7kXUO2|2nVReup^{QMwjD{vdz%yY6fKeJns?;1L ze7gG$uF|wqP24(o3=o1y2khsy0J5X~PH9(@meIKSH^~3_Ja*jXcaD=aZYTkhu!tZs z#(^#GXknExI}pA?jBmP$J1F{Pk_fQ#`?YZh%=k^EciJfmhKLqp5HHl#J8HNW=4rWW6aqW0CtBXat|d?4KP8(+-Fj`KTFCtSYxFTeU&y!sedM39r4Pw> z#$^J|kHfjIK*sF7p)atfa03b*(!RI!xtmni&^_%w!6mugNu>V!>mf#iOF3rM6K?ba zMG-GJDxRG;Yc?^8Q{QGgF=)3wPQGywB8S}QVdwm$77t?3?OTO2$?;0*9(gM8dRvt~ zf`wi*aREn)lFhyTR9VKVnxd-1sd&LX@I+##`@>f>h0N3bXVeoZ)KEiX-)v2N&#!!1 zhX*bet6loLH&y50u{UV)%-xfLZPGC1VTrS>`kxPvE7r39Z^?P{rOR6D<=4Px1|l8L zFb5I=$dG?aS-!s41hYDrW{lLuev7LR+22WjD#1Vk~`U3rxT}X+VTJl`(_YIqGq%n+4Ag$Zm{jNzwpb zGz$ao%_uo_fC7o}%S-8#ZHh5lYYb|Zg})jMLpHyA(jh~|f)3vxy@<}D>_4Q?e`!9* z(#_eLH@h%X_PDo423gW^L*2Ihq4lq1aLCOdnx4>v3s%-6ch{KSwN~ow1RT@GDB_Je;4N(We z#5j2_l&j(_Tw5Uw$_kW`NYi0ts6?ey#o^j92B>?RCn5&tO?GG~(g;mPC8R z*2VRA8XY=ulFka!SbHCRd_nNSFv4Qp%%8WZH*BYT?$B$U{ zp%EtRv^y9ji3A9#@FghYdfk_bvXle{GLa)AU{^p*$8<1kn3$T0u`;Dr5|9`}C((FH zA%&!Aol1MX(?+!0;47M0iMA1FDY(74hOa#6G_gP|Y#!GSlbF~-par3Al0?#ZtpbEn z2$SkbS|=cTcWLPnXFDm^iWD?kO*)+>h{VO2F~n#L9zuF(1fjO*w#Kwu2x1q8u_X{5 z7Ln$BcgarE8Y0I(Za@gdZZl-J89J^JVbG$9wjoH5Fwy8%#8#t;=YbUgNFO64+A6G2 zbobszA731t44xG|aoeu~1kfb``r~1(MfpAnpff^HDO2($*(KypIhJGLynH1jM%bL7 zALBv-MnGsST0o=SLW~Szj3L$rg`}e`vFGCAags1PGK8>}u+w3vI>0keJl9}aYw38BH{X4SYfE>qSYlGTeW@_k72CT|ilh9DadCKI(u@aE)fWs(2(0H+X*w1> z;fjMY9_*|T$KrClwRL6PCaV(FIu9{qJqSK#pJ0w?p1d& z(+Z2U9=33v))uc*hOE_2=hEcHz58)i<(LgbNH0Ba*ON9KK(gG)uk0h!$5$HOgG}Am z?WWAi(KFq|B5Z+yuE!wk>A<4L)iogLGM7k=LB7*;CX+jamLScaZq;_tN~Md7!U?om z@S+GU1hGuL-s0C?12UG3ZnjI-&WsmY&>d++_j8wFQ{Z&Y&pR{5kQwDX^8YEv$}TT7 z56G^NdA3e*Q8@GFO@1Qup6h-noL@Gec0VXAKo^cJGI0i(Z7KShAbosk@b)D(dSvhD zi$&&9+RyO8$>~ZVeMq~|g_kye==VqWq0fE8G({~)CJb#^WbKCr6_O7kD{XK|9 zX8&vTN!w=whD{IJHOO5diPfJjEzk> zvjOWBjgig&mD!*oMECy(G${9~i^ja@QPX>=UD&5+__`q#D{QVCxwqT*dbPa+!~Pu5 znZQFH_wIop_pA%=-QRo8_OI`|#eMY*h0RBwduC04q}NjP*n5YUPu_0tp^Mk+K0a3A zvrkqJx_>+V^im7{6p$P1ZoKic_Nn*ybH$1e`)Q6=)Y5y1pxJZCJ#Rkhp^NhrvFH8b ze)ik08>vZ^pp{cPkV8573V*Ro?|?yoqc>c@T8P@o`<#8l{y!smcBN~7Zjb*RZ? zVtsoHv`gkQj?iRw@?X z&mVfao}jR2P6x8TwOdkloT_y+R!_r&w*ez$m!C|reLwoRtl zXwu^q10e!>V&1m+Ptj2CIsXjO-fIAJ;om)al;pvH!fYWwxSOYB+h<9Hf^K{7H$Y}a zbuY5(l+7oc_9OW#lm5;7v+%few{zD}Sa*H2a1wjj49D73?pH{h6q-p3r`!%qK4{on z@AH1f8ZvwDS|QVu%C5aFT=35@Q?`#!0WS|O{^lEfIw>0^+jvj=S)5s{HDeM}g)AgHpc z%0fF#;s4x_;*3Z3e^xb!bsCC+aaE34mPocBntgBIbH*)n`o{ev!oBB`Q(QY^1lqV{ zH-#IVOyLeOh0GUeL78rTb0Q#td|}eV7K~W8eJ-O#q~4=V2eICMDSC*cgOg{Rfic1z zOQ(IOgsZ$%>Ef*0s~beKluQArEcTA;I|0N(5IQ zcoqVo5NY9!F_zd^YV9_`KotXw_$5p`B(a7{P{K2oSO{84jFu8rCW3Q1d7mrE^#Bb73iwx>u^V^CF!vL6td7@ZPM#a57{qQxaE zs37vGe8*~<){sbx2UHLQ(q&j^qft_Vlyrn8HX38J6UG&!p5VR9V*>D%V$ir_dDf5! zXkchsjg=5sgO4SUZZI)O5^d4xHL(H$sVD;`(Vzrn;UST1MjaAs2$aWw@DMry-*d%A z#t;do&1uuT^1UW3pH;+;M_a`)Bb6#fYiFpfrDY)!79%AkA*cwKOP^?sQPLTCDcP_w zNs>?!9%WymbwZ4XR0JSQNzOao#}@;yS{)#YBH}m(3e(BYtU~Ma zHTI(L8~Ai{H49M^qmAX6r=RBR!b!%BqGclfWPjm9nVgCKiUokr~!?D9h=oriY{NMkJ#2TtX^5TgnnVp%X zR4KDrt8;1b7Pr<{sp%M`yeB41>g`($N(#;_oZ#EfzQDV;uHscIjEsyRYYl$)+uyO2 z!~{YzQLXUw6DOFOnIS4GI=c-PFJ9)_`YJ6fR!ZikW_ab)Gn73aUnuS@F7n$8=ZS5M z(3&HM5AocIQ+QHw<=RzdW@ni`c!14LlOO-&pGi#WSyRmT$c&=<9ryvyo;}Nx6SGYF zWxO~+4OaQ(h4*>;@lIf@NDbds>Sy2gh$udx$_BxK6<`#&Lp zC-JQ2^x?xi`}ETY&m)Oq?yj!!&ZR5tnuJIRj?EwBm8YI&*eZVW``&!0HOH&37B<8$v&7Xh<#^GuHn@}uAWo@*`p7X(9XdjJ zaG2e&&1R#lhes}HjV-?Y^ch-> zU24rbvq6RLzW6fD#x8Ha`!*}9D=du9aAbC#%Xb$^tR;>j+DmJ^cIGUBr&wQGXKQAT)BFgk1u^pr4%qbJ4?M@r`~C!rN|2Bd#;a6FNMJJ)bIqS z4jkm%)l0m8;Ukt-mwENr0=nMd_RbE&r4lbMEHF7d%m*KR!0#@9$atl~bF&9o*;uC$ zcQ6u2V%C?IxPIjdJF9EFwD2U2MuYWc9kd~8v@o?@o;&pvLThf^yur?Hozl<%SFT@8 zuZ#=k+w7tsyCY3{A8l@KvUcqT8`o}9)dp=1=dN6&7PSea;FXD4P8~nOAFiC|+U?s! zQNnl6zR3E@DqCR-nXoa^A3DhI&b>?0X>)4+0B25};>PtW zeE89M!bXGB$Bq*l&F0QFakd75x#tm)0;JJQRjd4`*IuW#yv)1rz01z}I!_!qh8F~^ zZEexA361qNlC2%Sd-{2jFyhk6U2GUp+uGs!`ZBTBY_D%{e6Y&V;UOAf!tI+k8SxZ% zx3;P8HaI&v$~T^VnkzSMaQ^%Ubaoqj|M}->wRXANs*&h~sM*BZ+2yID$7yuhT)%dm za=Fav>KdDy8w^y+eCzD9gd1D@=B?jyXK9H})S(%6XoVe@=Pm@&^O>8UV{CMc8#ivS zv$IVcCw)Wx1;O)60gYx8q~OruBV50JgZgd*m8xGqOp<>#70NxM^mQ19RH|is<-3de zSzpyGmC1Zk)jq>jb1EP7>lI#_9x;7;7}vx)9Oy=m-^Hb9IFz ziP_xRB-RlV)8lxxO>`XNSy)?Jh+o)Ibn$cw~(C zuUuklV-4M^(^88}o}Oa3RARYVL$)Kvf+|l<&k+m^V8euQ=`lGlfZebp!V;kg!w%rq zMwZrAP+^l>^-Z@3>B&?V*XGy9rdj7%){4avClSqBhoOTh2C!353=> z{lszVJ3Fi|E@F&FqaHJKY#7Tsw0{-ycyO>fyyHjJM zonYdGClAa+r_I$ni!|bh?RJ~Br8^v+nZzz#LrCa^9l}O~l9Fs}ZL+w&OwGg?4KZNj zgzZLy>9KL9r>3~Ow#M3>yVOmBRtl@!GaYq0yz|aG+`4_6mE{!@{W(0-ecTsbtyZVm zYN3?#EaN0WNCoLs?_toJvLy2Nf*`cmwH8iS2v21iGco}?XzSP2+`LJ(O^Bn*iX zghqpQOH*1{2K<0Pz;=CySQuiVsBLdiQVJ;rCY_1s*wHj?Z*9?uLYhg)R=bT1e3X(@ zgMed44^ufX0RwJO6w2r3;vyy#+U?a608(> zo?>F4%1bXk&qDGPk&c-XCFTdlQOXUAQIKz6IRw%h=gTzw+2=ad5}ox7=zZDt<`m!VH@p1bE8I6ln@9;N=GG>O5-ioW@T_BI?8G5|c>jG)%^cv=si!#m+;gmL ztnr7-AG6e`6Q=7mNNBcNG;iPTapHOwfInyStf_s?;4LgX!QsP40QWq+_~MIPzkZ!t zw{AZ4PWGy>WGIzOblNQdq*R|tgS!XCdH(j{s~Ec;+unUy7cMXsp$*D7W305LWFbhu zhCnK+ z%BO8CgXOAAp-Klz0BbZRP9QNzq3{Eb7*NvDl!iug;rcbsEng!FBuY!HP;56_#3sQi zMIuvgwQ$l>3Z#L+3qVTn6f*ErGAK(dEQx|hK?g%4?r{F{Rj#Zrvl|G4NHb{^cT7Zr z;rPT9e%a?2H!iZ>Zc{dbjx<;)T;B@Z0;`TeSZCy=i})tiV2qoEdA{d#8Pm{5o?<90 zo&aB429UgX>S^L;i}yahK$KR6OADS8ohNrfjZ13`%}j)|=%!C;wfDleh*a}5MC%k{@V?MZWk)sC= z^78Y~b6|Ro^-hO&6k&zL2`ITm@ph+;K)5R6FE9z=>u97i$Y1~ZH@y4KyS)3(IRx;* z2On@}aq-bP4$`T$5KgmDN=c{PA&O&^lK8&=$@_Q&WFiDzE;xJta^h|iQ%h|NKR_B= zm)25}l8PUsDSU>q^4)7~@P(w=ZnILaF*iHUcfR>Lr%s&Y+SRM9tgWGqrrGJx_5`w0 z2I*4L5+JmOSW03kS+4J}-D+{-*aG8~A*QOs965TN)vYadc6af7ACqYOAV_5!1m#lM zF~LcRk%D#Ypj7% zKoa;Q0=C;tR@)8yN*NtS*k%WeB~+3|?6eN0l=#YHusVPQCMPFR0~JI$a2{ED_{zWl zUJxLaauuRNr1`?&mrDpG3tnpGL3Pv5D$3)TqYG60fb$=INSGv)N+klRu*UWC&7Do; zz#t=)Aw;NAR^XM(AQffdpiV6xLgrmkahEOLgZmm-u9AsvC22Us^#wHjV z8Dn*0lTLaZtK2A&2HB82paEF@CU zi6ZCq%R(Nu5D34FR*ql26UVf*#z;wIG?(r!Q5m1$@ccmn3!{|*#%AZav$0K-7;FN{ zO4^+WV+EdcLc&p^>BKQcN~Gsgs#X~o9mT6uX>>wb?GD2uqeO}BYOxy2nKNhjo4@%R zjvPKhxl}?5`Gs;@W$R#HM|dVqXmvuQlq7MCNfN9{%L5*=Q>?XE?JlTNs%P{Id>^ed zzJ|}Xmu(?^${FfU9(B9H0NWMa6(EdDahji+VPSTjX|K%q*ceZqIKj~FF7I6W7>mTO zl%P_k9mj<27VW4>xl&QX7b4=dFu2T z5^FKBVXfI zUR|MM4eu`A;aSrfQ?p@@cLCcVa(LPAg2z^FkBr*d1YP<6Fyj5W-V+Z zv=a=zxwXOg)HEkgKFNHi&1ktwJJ#G>StSG#sfeP8z*A%)>uyGb!CJxgPL20Jy1?<- zL(Gj#Bavt?;MXg+*l?&zf>HrWc^o`2$Kd2N zLjz-+ibJk%ud!L*Cb5Q&Fm*Wwl?WkG!Z0y5&cgBI zEZ(}s_U0xgQ_lH<@OAdA#WQDLvnDMNn4OuWzPn4i)k0hSNVYXIe7&g$;BHBBX5a!b{Ka!F#tqQP%68-KMBkt1K)maO>7B8jamTX?t%edzL4frTE*FP$~1^ zly&*H)1za|j*L+?0*NJ#BX*7E*77p3u?!}fgViBMW@ix666lZvbF)a_<45P-W;=?Q z92iFWKFeEMXaQ9jaAItRwXngh#ug)qWkh<63=T0+9Y6@d?rw|KdYzgwSShInWfmr< z87)^a#7xFi2T?bgW^qw#C-g zHV7v);rSjjlatJps+6pyfo64Qo1Nw^##lTdC?}d~P-1j!oKm?$6ou4ww%F~oX-k1G z1hZpf%nXfzg&522txeXNyLpk4rxc^*DiedlE(aSyyV+o)u}j-%m#?1|7)?%1F*Y{F z%E}6@RtufzFEn+pKr8gMgLwMPt2XBgP8aB`?dlvp@(%Brqx|v4dhZ_pSYz${pkDSn zfin=wx=OqtHP%8{A|X&-0Ey<<_%uTX7Pr>vBq6?uI5;uEH(z?0e|Y=1EQM`itUFgD zUCNVzL8Is>OH*1Z##NkoRv@j5jV4H9DF{VsWUU}D#>FCqD{!$wkSG`0@B!aiq|sn? zT8^v;g{7n1BBj)p0p+{$>U2@o0!Bz;T!msu$9TdL3D2-UZc!en=GB_Qy6~4yt2Gk=u}tY=wI;CO$Hqz32}vTQt8&Egg)6P87*{3O7M3Vg zO82Y_18HILwI#5mg(mJz?C07*na zROze+1d)(vAqY&$Po7U)Z920M1s)E8PV@R@p#VpwlhZ5%MWhB)0Md4aG9V)%bBaKP z>ItM3d2vuTjN=w?vjhQ~hNiL^j&V)OIoQ6AhVpShPkKfehLnQR9~G^*Zw3ab!OUV@ zX{DBYnAE_+zCSCz;ClxEL6Y92iGWz891p@hoXWUZ=hVa$FP}KYo9EtUr&YsOhEpd` z(uyMDC;=;I>6j$a43!74NM{sqydA21JoW#c&TVpaM z8kgxIgmOwR!a8H>`Pd|3xH`luPo3twPdtr^H6ksLk)B)l{FnFM;f;?!B2h9=@pD6& zA`%j*gc~RkV?aiTF{$msAe zXV0GD%#%-1mQHX%ShoOLi#puh+Tfpl_ET5FuDX3;>2i?h^r~v1hyW9KWUP*P$vA?@ zx){4ojh@NMztgn^w?BdQB%yH?d{}3UT}i&=%$c*ia{L4fqU16_Qh77w`&_?ygMa(z z9EA;D}DwPoFMx6lHg@(-vZnspdgPG=ETR32|imxU0B7pZgENZZUw&G=}@VZ(-gt< zmQBlrKm7P2UTiq=^ixDOM#zM_w-;HweuLdk2NQUBo{z6eSlfL79Jx~0$Rq_XDtph$ z?1AjIFl&JXr=ysDuIYxJ5|Me|!U@<4NjnTVfAJz~m#*Wb)q&Xz%2>-<9J;tQZU6rEfXOJ_VkbIG{aND?4#*9Cuw+1nb=UW`FNuDB_4`h}o ziuv$^^K4zc$sDd0L2HvL`BxsW;M!%*-MCC_WBjrriDKd? zCh`o4oU%%gD*X!rOwKYHpRNtaE76_8~9V!Cbiw2Oj~+~Z+odrbsv>JE3? z_0-d~h0G9_V&=I(PxlC-Yf7@ox3M-Sm~!u>RfU-W6Ga0g@~o1)fA`!%J@H+Uvil)0 zNkXT#jWo`{Dlog~CSnvnOntd9-_RKc>8Hn&AH5&t{CCa*K*ftvX9- zIHG4;0ZKY?472aK7y7%8J{|%0uTuFM+)v$75yANQI9eNOwHjS1-b~NXK?9Kz)HCim zC22*mi}(3~<4{QBwfFa$L~dlE*QjL=ypjrG!8pIS;7N*Z4sy>P9i))C@c==hP3q~U z3h3B0FE;&7$}(sRjSysl1X(QAX0z_J&&XW*ea>ue|L*fTH-;&rTWTeZaIAqcOQXzE z2}#2(xmTW#755zH)0)BFc0Cwbh^J`D?>AUr_a7Yk_;e`Vc3;PE%>9kE<*^Hcd@{Nd z&4+^RdZX1!l`xEQL)}gI?WX+el;$)h|HyfK#-=gG)W{dS-}@fA__t^%Ea)Ubm@e;i zerM+KlHS;T{$IYC$a7<5+7O$bZ)$rVSP9lO%vlJi`=IPqgUJtFSbfUdmdyY}9$iZ} zHfSNR!lehg&_lYYl{xN$efzM;t(~26Zp80x)g0g_&OTs zBD%6(U!hF%oP@o&q_S57YyWR{|GOu--o21wkM3V)=+fY2F^9z2CzV#R_3r3qEF`*+V}|2EqEr|5+{b6W_*WS(>0>lPs# z|Ay-)gK_nKPGBI3({%ug6)N}KMLru5*(vVZzWlfk@!l7K`(E#_j^ESAR|wwR>|9aCAcRc`^|RxooF7)CX^rHe62~(l(83YKJ1xI7ERqdC_YHGp-f>ZYD&?D260J3! zR4(<+8b~Qa5sm{UNfM+|snK?Z+gBdG^qHNWW_o&>P$(9cSJ_-yzi$k>k3Rb7!aH#A z0NdN!bUGc9L}N^v^kl_jzc`X-D_D!LE`!3#uI61&T=$P)>$)ed{6}tgUu2%MaLjmG zxWqX>Thp=@?O2rYeGi+&Byo%oGB5gZdC?MMEZSI>d&l@!+FO#&Hl4kX%L>q@s(RJj^?x-#k}&;%bYlNjP0ErcC{tcnvIn; zmtVY3hds`>Ur~Z>zt8&Um)GQZ*oo zV-SulE{-~At?`wIr#zIlC<)p`Na?$H`+hMY>r(piY?N#Ovew-r!ukDH$TZ|)kg1-R zwFy>eO63xVj~rujYn#>0Ek;I0c>UE^`1hawjLTQA(6j>M1sIzEUS0%JY{ugZ3-_ev z_0h-Y39nwSlO#zYqk--M)nj-wX0d4?4S*CQrfCU>P+#mgBhrP*M>Nv+TgbCgV3oqk zkneu)TReC2G!tW!EH2*RjbHzUTX*k*(I^kjo_(5^U-$;qN|oi+Mc#h*UG6Te(25fL zKruNz#w#zq#1lss@P(wdz0JS=?5C`)?qJM5OJo)tyMrx%9=3$v8y_2IeSL#!wMrO<#BoBB=$v=p z@kIJKr*Tq|mS}fB`+|`!&}NK-BO}8YW2x0@xk1jV4SN^yx_`5=G0P_oN*>?)i*GYO zJH;D6eS`YWE=P_Wqf#vs1PX0po_+2NXHTEx&0qhL+V(c5pFPQ+edksF`Jexd-Q^9G z=kuM{U!_tC`1}9w?~n)%&L3cUdX&|bbsW?2ey5{w872nb6TJBHiwuoa`Mdx6{}4rn ziK%gfG%n16VQ6@O*T4NuR#%t#x1arl@rhCX>aV`fJMX^D;+?w)0kd;6)EjlqKK~pG zC!Zh`k{gS6`Q2OZ&}ql8C)*-hM|j*l>^}PVWAU&)p4aZQnVOnJDaY&EY__<2cL{AC zjdkyfhNCzY_sDo<3y=G4|GBm&jRy-MSXg+1iHQknwOZbXQ5dm!XOZQlWmln?e{XL) zT@-3`Y?x!m4)A||{J*(*WeJRAeRC79R3=FxszW8_56|-chv&F-Ggp!Pm3^P42#D^C@;`~4Th_RU& z{^Jk-6Wg1+od4iLo~Lb1Hn=^;H(wupdbYBxtP}A0KCKZl0Z;8oQ0%$I`QQ zfexLw&1j22VuW#G1O?;W!@Bncj67N=DCP0-#}}EMo8!>IgZa_HvC9=zb!;K!PLP#u zyL7p!$qA&e+_`%jAv~0)oba$U=p;gj64h#jD2_?6pd`(9i&m>e5CpELtmXH=e}|`^ zKE=!5c$H2ZQmbwA!MV4IYi?0?|MF{tv>GccNt|%u!;8H1!Wo`__BoUcSl?Xb!;e2; zV||w}ik)(ePUysKq!MVY2}%K-PKNJ-vooCk;38UQ zLcT@zxzF)p_0h*y3|_O@1i%{0_Vx}34;-Xgt+LzL{gRt@e;BfKG>J`2YMgudsXr?` z%Kof%2D{OWxq0IzcNXsyKC>>RP40~oi=ICgw_Vt70~SxIF5d=*Fznb&{uwZy~w{q{MgrVcVOIm!9+zsK_f zjM1#FuA);V6o5F4h@zMvC}E7H6qMbfoiPZrUm|56eSE#)W!|T;hQYxBs?{oS96K6G zqrc?lJqR{W;}GzP{M+5w@uM5_`&A!yH%L8W+toTul9)J-@Bf{B+mc=jW2x`du^LXE zc#;p_y^OVn!1sx@qt~=X&}xNDOibeY0Xj|?92&#-E9~qv5Gb_4NkO&R7!CDiiz`=e z@Z6baC{+fCb_IEYG^Bae7KsL7F~Z_20Z4>NXw(~AsMQd@<(sd+Lb+5T^kW*07MCtv z=DUCX8qYoZ0$~{Pi=Y2HS1#Wn3M)uuxqjmo-}%N080kFEdM7>sLVswgu>L42%o7`T!OQ#c| zl%iJKVQXW9p}}DWt3xa;t?JdhI4}zkQB4Gz6-I zREk6=D9>{$F;Y+|m9aV@Ok#8r5w%;44ptc%873Bj8@F!p(T5+=YKBOukiJJJY%w%g zVQ6TK!NDPp9Y4(M>>-wyw&CRq?i9LdT z=(>+S0K7X(cY6vt9K@IItbQf&@Kx{k{eBdNcv69|#8JZKkFRm{;;p=b(4Y`PVzdjn zEZ$n?&aD+7OLG%gtK8xtmb;6~EHBLzVl~4U}|E5ovkgD zl+h%^Tao;f*5Mh@(L`am93=IzR((}(FY{Js=I@42g96x#-9lLnB5*`?VQUa+w z!Z=1r&y`}D?s;W>ke^Tg9_*u!9QWt5?&AwZ(Li;nlVpKNDK%#4f}o2Sq{0HC8)(WF z47+TB9=%JiBISz~Y;JDy#v5;-JcX1J<#||RFgiqQO|9O*XoyP2 z@|_iKO)c_+|L{Yqm0@;vwz<1>o!|WG_pGmMpzvIX!wQl}qi|lewQf+#W&~LW?3v^B z(MKQL*I4&sAYTTG%cYs0nae=g-cO4jXp+5cyPtFk_1p)0R}KV{B-Ye+b{+q+wHTva z3|crwW@AN{-A`l$U(Q&IRAoj8NxRwMH*fxyw|?^$)<}es7}FsL$_Oi+8hIwtK&o<| zwPPPvgT8_8qmO&x-Je1o`Ud+8hNXvd`jdKpuTd`=a8dZ3d)fdt6)7;Oux+8>Q%P4$ zWb!=cLes429>c0MRS_owY$ZzgY4xE34N{cRu}n$&Wp1Ez&$(!@AEl4_=;Lb&uebEs zJ~*Gak1rH?bl@Q_Ne}T+>J5u*p%^I2ZDpQy7AwgZO6@)e+*0J*^bkfr|R$d(WVcKKj@TFPj^G^=$Osw1GcC|Ew5`z7Nv6p!`)Ph1g?qZGqz( z3Nd1d$hBYg9C*($GBp=b6!Gn8UqMJV3%^)btRzxeF_Q}JHYUklvXBgAZa?iK0 zU`7#bQ%we((k=X?4j!=KH|3vi+$EQW380J#?AmDOm4xQLAI&%mpiJ# zIxAZZ}EY>mTdG6R)kV0|b zzyZ#jeFkmYc%H`d1V@iO!GHU^A9L;MP24=9xY+#_xBjN zFAm=L#5i~F-leuv!}C1%@IA(oUKz45NT$Lr3ZCG7HT^!77x3^mu8;z&ZEj2-Wvs|k z>r&ANr!DDtGNdYFtsyZQp#@50l&~6XdV?S^b^Hn@KM1~+bA z$BGW6l4jwF1tunDSYBQxP7;)-(y^r&cIq4K44>9Z?&D7fUf2m)TU!Gh^Pbb#+cO1z zEK&3wY`)6oIIX{&7D?e!Qs~>PZr*SzWoqh4`02wDS$B!T9)o;AY^Upue*x0D!h3Mmvkj43w@{m$8FgTE_jyuCGu*Q7iGi0p6 zN{b34KlqD3eZ^JlNJxOkmk{pt-49GK=i z-}^S@YLN3@zxL|OOiqpR=377Km%o04t=c*#o_qooD2zzklMD5BNvqN(5CpZ|h&61wJkcGHn;EGq8tpN6R^U=Seu4Uy5q?3@G$k=I-c)B6V*zY?VU|(^)0sAb#C3d zjAs)PDtMmH$mlRLbJP6j$3JGLw#9C9ho?^;=k%G=tgZaP4M1s{pzkS;9y!Y5?YqRG zNf#sgvClsG_#}8cJ3HLGbqlOzXJ?0riE-xUW?8&*`>U9I{pG=eHU@#^(7{7I`|Ptl z;iP7>#e46)N3C9SnHBd5Xj^OWe8u5I2MK)1+R9ym@+3AgC{N*+eB!uGxm8|PN+Nx$L770oaBuMClM(R8% zj*1BPZ!bLJh(tmX1d~L(w8O-S6T-tI{PoX2d24x=h56fDpT5XiO)%PEg1~#_C|?Rp z8BLVLl*+v*6Q(YD4keBqV>=id-N7HLkCS{O|7cX-4>eY4w@sf3%_RH??mK4?!t`-C!Vq>&>|}YlN~N-nOMKpR z|DSGkSC*{mUbz1rIdXix5DX3udIO_C5CoKpCF-?$+skW9LuEnG>9_WlC(G9g)gj_F zn@yU{rvIhGXSJ;lPK}{=Oo(kKt@(uoKrt~f$?T$|5yzOom%j>>!6usZwJHPs!x$5y zl%ZHE5f+N9SL+Cx!1!!;3-b#sR4QD#=;-h5<;amEoILpfQ6n{gA}!_^+ zE)CCd2}47D?B2DT^XI0iRhxkF1&?({-w0jLbYt(ZAuuRMj;95|(9jU$W8=h0%*eJ8 zDl022E-e9Bz{3`1Y{{fByenH8$@t|&VQxY$;*%nIUu1knyE_Wzc0yAql&D8FZrr%d zwd=F|n}72k_~Xe>S*k3vXWuSv-r)Oz2B0f5GhVT6FJ2aaC>(zCRKD!^pFmr1j zMTm&vfBoP77tWnO%Y{o985rni@9zD~EiO~5H3)P8a4ip%j0{CmV4Ab zILG-5pVB`Ra`2gFSX`>4UN4$3H0<2Dlhda^=G=v8oM_foYSh*RV+Js3WbD}X?UajU zZd{*59B8Fe-}1I$@qYg4Ibr8`T4DN!#{PDE$2cR~MrcM&u3Wi7qfu))2zY!R!tT%y z_}I74UDivfbm^=VLBTLQw2jr3RiZfRqUeV)THULx*Q1~-gLH>PeRru^fr3J*NE|1K zz~zgVh?|x}M~|_0?>^SnR=ITkGOLvpw9>4uS6QnyIP}aBCMT!3apMMmeDfqLl`2{a zG#fFs`Wkz8@8N|LCm0(W=kn#N{Q8aG6GsVJWvu6=XOs_F7o}T)F4bz4W)v|wwTpw# z9AtdwD3>l>;)4%Qv9{7cMA3-r^z;@v^6X)bop_Oh2M_b&i!U)cGRExfd7?&xKpP67 z=H`uAW@nasuuOW5jG*r(QE$Xu_u9g8MUEVw7wX8dZ%ZcG_@b}Sj*ol9NW3mMvJ7iJ zLM=?mIzpQ&FTeaOr#`$&)O@(&yjf68xwp*z1N*slh6IA7_-L7`Bfp2Q@8Qi5|aNJ1DE z5oOSXxFi9I2#g{~-BO&=G$bvGYa3mC@o#i0Ew}Qpj4qX;kNGkA^LQqVX>?K z9^yPXa(tB#kk$Z^)VZpa`DcrZDbmujrevsm~o!n1D8fzI>CpI zr;?~BA+dtOpp`}|Up!b7A}*CX6@WqO5{OHUn#xBUYK^m&vC%P}d;VFWSZk(H7xe_eK}cFyXyl`}h+qtS@CJu^q4SV&h?o~*Ul5Dr(jtQ)l1N&?I0_Mo^IT3VGfociaDLUiY zay${FWSV(BxDJ6hlRvw)%z$i0hMlf(bo>TN1QC@ce1iIVopQOHYOGV~T-wC|v{GoL zTk9C_2cBxoR0yK5v49Fd0-}acFg*l1K)K9kU+xrDy9Daiy6(ZcDSs_5`)}!iH|r?R;D+RcUlf(VfJ7=XBdv7kE8*sbD3m}eSp-3FtJ6icvymdKI=Xgj2oin^38>H!64f13m zsXo~gcH1C%O%WL; zCuUW|NRO#7)yGP;0<(RY6r6bneWs5u@~;q*^b8c&Aw-D9lR}~huYGSidpvUvqfzD5 zZ9BIlOMDJ)y8qX?U2?y-)ghgni=9j&etV0}3?pBIg+_^N;Ly$1E|j`rBM?t66}tu2 z(6^PD88=JX*wCNI;^{kC!FNpbX{qr3RKnNk+Yr_=LAzOx#4Eq$U`adD!O@C~m=?$j?)I=kY{euqYz4lK#_8>8V~ zgdgG*V4N>bC{ey>{X<^CfyaP#O3ATN(y=*utYs`O zF*w}hGDnY)|CWESduIm;chUe-TQ6IqDGbv)w@2}EPgI}_a=aOlu+!}tIMId@DX!r_ z2#X~&I^3h6jn&fE+?%<@#z|GbxcS9q8Vu1yTB@^VdbvNBsy8lG**=-Krl)7z0R+{d zt?o~%s;WS>w<>L_1*bJPoo*|)yvr%)%flr^ThHWqgk6RZI99UnJN0PHP0NL2er%Mo zC%VaP`As^M)w2!FenLh(q!$wl0&cT2I~dxQfU3Wr%92!`t(lAZ3$x}=q4v+`r=1IG zIr{nMqw$;n*5dlXK)rRZ@Xg35)4!^ZlS7c9qhkVK8o6CA%ayJLu|^IL6ZstSZ3@## zn0lrk<_L_%`M(N0Kg+`7KnR(-ZVAIsE=|phLR%o7u%U3vP5$<&XF%Wn^$VfUJMep- zz>^h3xvy+U$hXWj&dJpl;YqL|X!^c)(B2OUj@AeGH&I;6?uLP7i%d>83&=n}K9`-Y zxkGjC+slIrBQDSL89FW4)Xdxr?W*jvZT)1~yG7jA*TA*iB=Vsou`K~Kc3)rL(r5A> znLk6Xh|L!bE)Yw@aL{5+yT8+*3IuEL5vxSRFnl+7uaftptxA)EK`;+$92j^^a1f^n&0Xiy?WiWAS)@*xVFkb6>+|7$pf(^}`kP}j4DkjXEXG+9@iLgcWA%k7ad z4cvY!7TDc6bQMU_|nEaCbCSaZ%#EA+7A`!}iF|6Yy!?#)dZb2_AL zArmXt_=$q%2{Gd9mNse>5&MHNnLZDho5qKa+_;Q-hIW3T`(T)ph&ylyJ9mVZj=|sx zyzLiSFy+Yp_vkCv?+@pzeE~r)PXkQv3EZ>}XOGIj;QWUD@ej4@VDRo6@rc5K%hAhr z&gG_taQxqdT}LwbzWD8YBXxE4R&}>)Yy^X`UQynzQl{ZdVVaPIjE7DCxY=Sw_fnDa z2Eb@qgA{2HY<%>d+F9Sx?qI-ry|gQax{Ak8k)(Zs{<;Iqe-#74ojAs5k2XG>ZazQ* zxrVvf@g~P$1a2%FYjup`h7iE7$@<*uy)J+1{JsW5>l}5KleL!~1n0RA-u3ynEwl0V z_yt%-u2^v3H1jbghyufe!ouMZtWH3_a%qDtfcha~=eK7qgP;RQz(+q7tj%g)Cl_)wicflyDhGLcYVohH2?VXw&6L*2U7`6;Sl@fWXfV zf`Vw6w-})kR`Xsb`T5~HR80T|@9iF2kO%wvCig8`qsuW`mDn#l(L2F)!OlS;Ei)G| zR8wZng%0L56dfM_8ci5v7T0Q<0CX2RjjHRB(V^uIYpw|FloWMt_j`U>EF-jPTaVzc zhXlX0eq`0DEiN8k5?qIP*MW7_xiva%6gG|qJ*s>;#RT(xe6L6@2Y02Wgr)#eAy7EE zezm*4R+vM@5Bm9np^swHelfpjc$UMXHbmxsV-0B$Nj^B4C(zC59L)WAW%9gSpH*A5 zK3i%@dKxhOT_s;v+d9$$T#;Unc;NY9fL_LB;E7IZ=x4M{t=)Tl=>NoK$29JIKVmAo z|D}+8RZ}Z{XoV`^qNOl~Kxc7Ns5=5vsadn8Hk8)%>iwL8_Uy#hpS)uU6=6@N>X@GD`5x%^ zRtEdvzWcD4cGN%aiTyTkcK8r6V;ZkhDMQPIXZW4HK{l{%P3*-VTdTh=xX>%ss_o4Y zZWm@t0D=GUUmXgyzQ9iZES;rmTFJMD+l~OlDO%x(9-1DRz-HJLVI|O`OW7AqIE6y^ zqluf;1XUa)(}*N0GK4`3B~dIXEIC*Rea%-(NrctVmnmK*M(*VVUoZ*LWfVvRm^0OzjX*iEB;WT zPpxhH#J&Tl>5O{3ahOpJUo6eKMDg-wKr%4}y7a6ZJOdZ&m|23pkzg=K`Q6F`cdW{` zY7kz3BvWG4XLeqAky-?DgN6OSj!ciTESBsfQ~AAPaFcy`v!F}~HbHtU8wbc}qurE` z`TUIDbBDyPmO|`=`8Ss=*#;`pkOC!8t?eqO*UO7fz~^1IEy@V8Sd2>jj_61qWnFOV zl4gzNcAyLPc5q9JCxA_gU+jD$Di7+Xy1m6p%jq2H?Iisf%53p*5hlUtGe)i-e?*r-mP~GKjmF9+=?4o$uT%GgJ%o=f=6h9 z8sR@bEtYt~I6GZZ!^vbajyCx(xcyFylut*&8Ju5r?=cJ0nMh!qv-UJ(_;gj~~$jCwH~Ekt!5 zjwEoV^=G#*WP49mt?ZMRI!pG#JlAuQ*~%6Dic$c4LAy58)n2p*a??_*A?5yTdF0Z9 zCo~MN^eWjo8T7eRU~^E( zXUfFq33E5Z^?Un^R^b$!2Kj71r}zcWH+4&%-50B)4Tq&l?p-!GZR2t|_`px*47?2N zd20W0Bg+;KAgyryc50J}CDeo0g~N2g|8`?^y3!vlxdO_tut5z|z#L;?34#0GB% zqdu2#Rcvj{eNx4WEG!&7|9dt`>jq+1;ScW`Iqfy`1r7{IRO+=!qCxAXclOroP67<( zz7wl<3FK%?dHc&>(c9Z(#9h)LNcF;RuXQPBiJND0gEl1!(ZXdx&geSeN0F9oqfcv$ zW3o4rFT@Wk(oDBd8=z&P^lt&&is1K7eMDYq-;xlo!ezwE3$@}RrQ-?yh5>I-ylQUi4V;c(MQYYM&H@g@_d;k>!kpgcMJKpo|3( z+ML~fkPA3Wq-XhqR>IV&uotADt<~J(Tq&_Mb&TPed%A@%7b#H>oc9TY9yi>XZ+D;z zxOa9{a~(~eX#-6iO2$Sv`3H}-@E9ARCAi;)i+!$-VRYFfwT5zhP1l@nP?G~sK9b->T-#tX^J5sSKUyrcF*`5ssyQ{K>0`#MlRJz-{yTW9j^~y|D$`mFRXO&6zi)5po_{@sQ2AWERdb>)ws6zfCDKaSOTg9HzLi}^5_~T+&Gr) zFOn%33J5#iC;=s@$zoyAHbv1EsjCR0t`LCd_|w@bB&(s;}xpX(%toP+Lc$^I(D}9B}6nm zv*}=|!ice>MmG)T3i*Y&<0wOr&qc9 zy*iGug%HIFp?o`T@9rCG|Ah<`2*tq<7^BmP`c{lc5&Mm-X~%R>=j=AvcMhIa=(OKu zZnAiLBbdwMG9e-sV=3!Cd?%&-y&(N~e!01Kf364oclnvR?s?g6oL_IM-qQ)9qJa3A z<|V5pJzO3U#EEGzm>nZZom9Q2VwLT6@#Fg8_C7?jZKB&yX!G@;NlQ~#+&XCC0>xF; zeU)>wQ%eYtXk5hsytsAxMhRER;>qm;YISq7aALoK+e@dD5+Z=e1sWd`JhPH2*A}!| z>SG3_hRGgh48Z_du2iiTuWxM!BgBab#mLkZ9LO?vD*tC5-!XYhd}_onFkUo2xFHZz z!v6A;b(yPOmwV)9j#qB!FwyHiVCCk%-b%e1d^~m4uV#75eWjQP&`egxD+Iw(+7Mn1 zn;$+M?JDBoEf40t4l6!RG<6MpyrF)C*Y%!^;M37z#}fPFut(bwo2)jnZ1_JsfRKy~ zflF0OCr(qZqR!XnKYQQPRoxCRFn9!!Y~xV7-?atC423RJV*D_K#fje*URFX89uFu1 zfHo3#b$t5{ZgI8=E(#z@|CJ_z(Hd);y%epghHsQefr8mRe|%bAPPpG-?;G|Y*ec!d zZCYq*@>w?fZr;`A%gv1(A-6+#CReJ%0t*jI>;eo9j{1L}=tBG8?pc~zrSUW(GSQ>H ze*F<0`}=*7=oqHgrbQPcKbrEj&@bQ4i_&RT6AhVS%9E&Q{O*oHfhGP1A=smW;J&flBHS zzZa)eEFU_SoW%X*YTQ=R^5obUGaFly?5cs=O(*Za;B##n1wOF{zG+U7U2yS4=Z0X0 zBk)G>?K__shvEc=P&>QAB$MNtgX_#ER1L~hD>!*>hGF!*_F?=UJBVKni!mmAy%Iu} zDcLtHnm)EjQ69i0vd|PrcmMMjQNzi@lnGXgJ3KP*zsGP|U{;$?3c|vAO|2M#3#*F9 z%nun=s^$?IM6Bh}g8P+4)tZ8N4L>%Zq;AZEh`hpT(vO4{k`eUE{M!vtpCtIw$6WTKCQ*q@$ zs(y=sO#AF2{;4S1Pzuh1<&qk0EvhNOrg~{}6f`AX;VBDKG`RVB*A4$msOM)d5Ec{} zF8YxC$-Hag5(Y;GR>MJ|DzUR?t1ucC%kS>FIYxcoV{CkDdtlmk)lGD`pRLohE?q3s z{3;1XKjc$_Smn8mlw{>N?;VLxmHf1{S!xE$ruhAwD!ur7ZO^a!BO#T#!d0-I5C)@G zrBtH+z2;ixd$GUwz?}Uc;Ij91;^n{o*!iDP;ZGoJIS8 zZsg(#G*zB**=#w71H8IUzZRO55;I@{qFf05opKPe&wdpcH;X0#91iBE;H2Ppq~eH;=pbO1i+cJ>Ou^X+^d6?)t8uWqhh z;5Y85R~=FemqDm6=1xpJzA8!^FL zb{k`PY2-t*!G^mQ$}X6L>O%`i5&j-FZp7E!`M2lEMcMDG@t)Fa-yrb4K&s=Z>SJ=# zB--vN0&0uhku6`pY?e2DrUE-v2tqQU4DX$msdupMF8IsJDodaZ<*~PKRIdHzo(51d zlxW9FI_FU!*E`L?6A>w}vf-I%uxcp3ZX+7>>Si!gT6i`mmdkr%q{J{SC*bpRSB3t) zl6bejwzgFkV+czQa*t~1`j~QFAn}KG-udeW9t}6#op$d~@#OW@P;OrGU>d;RD_t$P z-|tm>aGr?Z9U{+9lFeat!6rVseft?V-(NQjO)`=c2+dEcMfcB26Dy+bxKVfao#d}g zK3Sl%XrhaFdE}*3M=AB!dTPV-vaGUC5ag0_m1wevjz4{6d|v>FfZxQG=M@&JjqB~x zqIOfR3?Eq~nEv?6Fvwf8Ro*g+r8A?EspL7&{8T!=sDoO9{PiyOP$9N0FAXszk)M*~W}E-0%W!`jQyhn##YlNz#qlv8 z&>VzTz|1rJ@Y9>iMGdONkJj3G9f}*5iszQ!`K~`db2n9P=-Yw*or8hqKj*lI&P#0H zhyC3i{D!Mxm&Z06r|e0zdItwP|^!NiB1e+KhsTxzwm4MV-ghvKFf z3M?$#H~jCS`6csKcyCE03bTApfg%LptMA)HA=V^@ZEn+r-P(;%mFd zb;oV^-y!wbF!Ad8`u?%=Z_xSLdWTy*L4f=SOtm76T8GV04}~=`7;f+HHj%{|!mqj> zf96TxK^0T7b?v%6cw#l06!48tVI1QY8Wk-_c` zze&giVH|GH%8FIly`Fi(VtIAh$aM(t&gQm6LcqGI*}KD}4wm07jvu?E%*`6ID!TqO zp@DXm(?D+-hx8`oA_@*2;Xlu8m( z@OkkH#+l?!$_tVgShgwg`&xc*>kCUgHM$y{k-bxCTdA;*x3lO-!fsh`H|`)!m6!7>s_X`UJ|=` zq+B8I>~rAqXQCmucOCJDa369`uWG(p1T*Jd^~DxGnGOz`wTQO#;a12a!@qVwuDBA0 z=ampW)YVA;P2IDO2;%l1_sIWEK3uDAri%mks{I~ zI&=GT5++h%S`}UyKhj8g&ZhRvIPsP$Mx}(CR1N>Dc!1TB+G~%S?@q_ zISY~dJcc#oPH}TSGI49$mPz_>M7tz47l_Pzj$xvM6|% zSI$Q$o_^esXkmZP+rkhRu*(uFVL zTpXSYIJ*o{hE7h2B=8OsEd2aqF$9ZRnrVt-!G<3*louk4Z?Yz}lHrDEIm-=U`T<-UUP(XMW$8qVJ&ymO!@|L}TxA-NGK$cFKH;Aa zD-z<6%3xH{vV0D>v7P=89Unk>H-oMa(1 zQlxYi^=k4O)aSAyTl#rJFxh8auOG^m^-*u)=&?UE^;C(s-gW_FSJi*jf-^ni z1;(-UzvBiP*Yw|6FER%h4aE}u0LW=&KY=u^=TXx7{P^YfAOrGSEvYI_3v+a=%5V9L z3wQ`f0d>%1z>bV27Ss9i(DLL&!dzK7S0*>1F}pTheS>u3zxRD-lEC>K`Y0n|F+z2E zqb#(Yp9GTab|Ok!!P=%Fm|?LFwDhc1WLV5fjCKA#aK#F_gArnM%sZgS-~Wjw7X+Ze zeKu|{sS4;upoE}ZdG;p!m!dU|}GKzwvtz(>RmHDc0 za(9gq(67u0u+~TgTT$NIwv~h&IgoDqQd4{31*L7BEU*p_j zy`R+L5RHAGxgReC*!`GW=49^@-rIp9d5@X z_$ng)5km@b?)Qr(pw700RJQP{U*n9y=!--+)V|81poBm~v)3tX6*2c%XN_YegRU6B zfbKa5HfI2Sc_5}&vRS$A!DEj(PqjBOrvkV0J_fN~$KO9NQBzSy4^y8e6)((e9-wQu z8TH!#4p=Xi_PhReJKw4Dd&K;mv4!|qD#thU$qT&M?w`oURm`G|$vtXeKwQ=Fh!M0J zTFO-A^ww*tu-O?fiywWkPcG&8c68(OZse5{H{HV1bd_0hcF7}BY)urNEIhvXj6NQWs7o!smF zL)QRu46riu%+mF`FH|>EqN<1?ia8Zc)=RQAGay&4*W7!m3b*Y3h_+MyuqUiE5!EiA zNy5EjhTKmkyPIs-U~FU?GBDs7OT^pHce4mO`cI6HirageFsgxrP}BhL-+AFAP?G1l z%Vp2J1i;q|rNZ$!1lxUsLK~2vC1NjDholuziG3ag)%*TVF~0@*jx8>>IG*zQKlr~B zzdmi7AlVS_FB1EA13ByYZn`=>43?$U$w~iPOf$gu*)um^;%E)B@AyZ?RdyK}>Z0ei6+4V+6%Z#LWmRD637t-LG z^{Z2unTKb%zaJX#lPg5A{&)J|g%>`$yd2_@t6TmAT_`X2;j)RD_6eO-!MN(nl)I#O zE6SlMM6D?*Pi1LtT*SJ{x?y7ahjE6nR@}*)%@1P+4gyT_xkRebaatKeVY)An9t33E zx-@nzJp`5oLq> zgGP>1G&4RTfbj`~D`L?>bgF?QmG+hwx zzX`reph&%UJd-P8_wlCVC-BL6oWXl}c^#e30~yqUWKrvwaJk{tx~utJ==g`V~9S5cU;lkYhMPxDp5}0G=_5V=lwhaV;%(|8GAd?N_<-pJnX3 zY0Y^N^%|wY5#*X>v$>jx%7F8Xc$mc7piRV(k%$uCpGdJWw5qjs$wsO?dYMUNY%0GDCzyN{wXV?8)1!p{0*JIz+L#j4 zP~ck(^!oc8JXx9o(2kLBr+81r2w70!>QNlgz&ySYgR#X6xAW=g#y@zFX*ie+BjE3h ziD;w+6RCAf$(+1=Ua$xU<`43G5=4eT^+@fCSnhm%`!AnG_TV!S1`$6aX7;mx4V7bS zO2c2C=z)Su(=#AdLA1`#`(lhmC+XbKI^w-p?0I;AJ;6BPXl?n8Ahg*yz#2@6Xq50K zW^y|asc#NCjYo?S*-bWPh}Cjsp=GzByJJ2>@=c&VC4tw{)h(!6lZ!(*u8Evh5hCw^ zn#+_Y%X-Ld6pcefkig9NWc$VVv>KEQ3XK%7kz*f+AU5F~@VLIybKx8=aq&nv1})wL zs}q~g3r*h$h`lWo;~CJOGRTJ(2@n3(F}*Sf*Jv8PEa9D6TaT@Ez6n2{D0H}ace|am za>@KRmtUt|>TmCA8WJ?g-}iX0{48gx!2d#s+2(#V_;SgrT4f9q%}Q|xo0Oz#L+}kq zGn()XYU!8$cdg>&U(>HS`Drpbnyt|UZWb(2uHL_Z!E?I)B96y+U+sQK5yPGD?f`Uv zCddm1vB26AF%k0jYZE%2jF{qNq9ar1amX}`+}p0=Eq4&;fY1oWH_TDUsJ2dKFdDcA zIWwY>?M*iOv1F}*SlV)%J8=x?_c!YQiKUHq$?0hsWD4|eA>U!2VYPG(ZZILvgiCcm zu4p$8`^D|t=;a8n>*W#alo1#za}k!iOuqaCRabWowqj&(%H#%;VLd)Q_)E8FisB-k ztu#c5O$rR9e?4reVOGR+7-=K!{MY;S^|n}uGS(P~wNEQ^0P%Q2ozK6E?T_qVUY?In z&rN-8V^*8Yh4*?ObYM?!8!El^%<{Ua_9al|M*D=cfe?A$YPd~rm(Q(W?)VxNN(}1O zRA}?^FC)wJfPC9q)LYEFW*)x2m1kavXn-&9wDa3S8*qw%G>d%n*|}*=pB}%lU`x zX3zb!;{rai9V3%TL&1U#GZ&YXq5*N??k-xWkI(iOjTBr9kkUkr|D~Xtg2IgW5fG!~ zu&ULsAWM{_p_Kqd>b1GmIQzh{{Of6%irWK1R?Y9?NpAzmLw6Xk=#=h6P}Chx6k#H6fzgLOP&<fxoaN|n*=HT#o1#t{-0 zmYBu!9lt1iqX%q-Xfnn}ByWX)CHkn`Uf9sk#~W@)HRJtEDasUC^ITaUjwt?!vA9wv zhh^^0jXQ{RkbvPd{(xs1z#p)-F~bcS2H<}Qka3PFQ4glrd7)R=ngGp@2&WC#;*?lg zZ24;(H@Kc4Z6@aYJkX~pJvF@-bP@a*Zv;+-yE3FpAc3YnicY+Gh@GOoe(n8?dsds;g>U3yJU9zvDHS+gFoga-V9Oyme1a;mYSv ztmt(4lR&e57tM6wXRN5191x6B`r5{C0+|RrYE8-|b;j7n{tP|TBL$s|3Z%L0q!1Os zdFv?upIqO9a=Qz-WvCNSb|5c)wbm|oqoHpUw$)oNqqc@K3X~xyOAiwr-@B*UW%z*H z^OXm>i>GhV#f{J!}6j$EpBsy}{7@jDrv zt&}KaGVu`Fv^{b_ZrXCm>)`V&ON5P0qsx1|pQVH&Ehn0rY}TI+15P80`SCmg1U|8{ zm2tC&G>kh*Y!`Fcg#`q@Igs={f2#(4<@|zMPvj6)e%S@z8K;w(afl6XKtmj$m7GSn zX;np+upM~Oe|a#w-ErNU;KAx$T7oaLp67dQoe%9R3R2^pT+y<3tlN79n2eBpMvgd@ zN3t)G!af`3P|zV?BH$&r-%`MXG=~DFyg!NE+i(z>iGnM%6Pt==WgA;mt%_$u9a3MG zeU?AS^RKsPD@c$+uq?poK|nM_G7d3OqEEd?P1KJDra-#C<{z1ba8>4vg=Gv zi=(l0Ka24X*g z=OX9Ylk(Fg(!Vb$F86e{#&-MtDHrF)Ke59vUsibT>a)HD z6`HpD_Zv|i*C(5)HcvKmxA1AG>kt^6?OlTd>xWFI5{o5fuC;)4MRvp>Uy$hvs>o-Q z3I^XdnB>-nC~rl}r+n=L$~rr;#c=olP_IjO)8Em68T~)^n*(9SbTcFm_j)pm-!5%* z4jX?AB>apy4ktZH!Ed_|01tzEAvz6Km>~DF&5eaS-=O*p8KL8>bw=*BeEj3~I2+@V z`P19vQM{}C_XQcLcq~*jnA0iR`=X=ZKm?_URjhia@P}!e^>hpaiNB&&qet<9lyan^QLDwd4j=rf>0`Y?8wJDF557P;#|6ngSB{cQ$~U*6hG@4fTcJjM<;67D0n zNeNeUd{?#pl6BOLNjerI%R1U;Zv{1cE;Qg?uUs2C#c)pykP5N1+ZF3oS}BJcif9jUcNksm z*(_V=Lne(F(w{|HhZ~$*Dw!>xmr`2uDLdVy`?S0*TUSHmgRIq>Jmt^qN?xBGI%e6zQBySdPlwRQN`dZz zFXQl~L<3eLHW>u4vV&+AVzay_5tNRBprrc(rV)}76d9er{Anx3BHp4w^{{5Lnv$Nx zbxJmCsG_NRIH+U?dd5#VE;bB3GD3jYqZ~-5cU@`pU5JuLD=am zQQ92??cc@8@+l$MMn1kCUZ!ldZAVxJ{bE3&Y#i+lg`3+vj5ayB3ZK&Tl!|>(8Cm{Lw>AdhKog^rJwA97|pMRQ7D5ee?xzyP)ocII(W$nQ+w-xrBl+l;6GL;u=OC{P`T z8%rdWigkDQ(@x&t;7yLpauBh<=yJAWC_)zdP1~|DE|!d}yu1?VdHF_2xOXs~xdcb$ zldl9~Wo8!6*EBr1M|vA$Ri<)y~G$ z@VB>j#=YGdP>M1~R|-<=+4K4bLbB8wEs`Vc94^+SVB{k^RvV2k_PN8LeE8twQJa7B zQ{?Bf;h|sD;pV^+*7D(nzt~}fvkDLBSw17^pP;Cg>Yx>6u9oN#=W1KMpe(AaAxe%c zg{r4>GO6|n8rEL&UjyyvLaGKGj(7MjRlW-MYzhNd1{Cx6qcV)dT@BCa~a)$ zQo*sGgRvUg1PtL56*^5ohs)X0@mG0(t@7@Fzi}oLOFnt?((JA4Iq!>$$n`mJ%lD3B zmQ7&Y`D`qfomIfXlp|3&aauMUnbTw8D>M0bhg$-*~c6E4lh&)IV9n2 zh$Sx*Y$)!FK~lfWun|8Ef0q6)+dvylD;<6N`*(DqkEaKBt?%u|DKjuK^78V^6+f5P zmVTM|V$u|i{@m=yVWim)t~%2zW>Lsw0wm3VWx-SmljyIVeC(cB87(Xs+7+QHiDq?o zErUl*pEpKMXb15I2ZxUP9W{;wmQO>)`U4vJ9eaUA@E&3or-x7IP5olSJIU|3;j z+ymk7Zt_tzRe>kHQ3_zMwMH>L0T8OnB$#uY?VGxreX1Q zpe6+KNAifSzQKWcQzg1q&)Q$mkU|a#EjTg0g)8@P$6gUX_>~(=az+G z*YRZe@LTD^BPwy{(8;@9(+AioWO2g>$^=R1?O0K0$T!(TA6mV-VcFPz7j{Im2wBrC z6PJm-Bv~|aWn87VUnxYjcoI0XUtdCK+?AG&>uqQ=RzFIl>@ng{3$cp@T2)CxE zwLPo2X~G)Kb2nm{JdOs69{&e9m|LUBXI*P`45^=`xE48~noTP7sc%NOJwtvF>yiFR zYYLQ|5H?j|0q$ooB;2fUcw=KDKe<<`Pg@QzG&&}B`q;&S{R9rP1fgU;w0fbotxYcD zH=YTK5`l!;weq3c(-DBvHZwPG@w}k|8nNj?rSU2SY%vQN)6>d>l0)G-2r*_!DwM_+ z&60#eYaMMrQcR;`V%S(%6j+4syt41^?(9z1fy*Cgd9}>IkU%%WnknI0+Ss6yS53YK zJmvaT#-DYEp2?%8Rt>!c}wN1Cq)gxuj(3s3I%~vCxfz32M<2)hEOxp_?{${4+bC_rKSQUf~Ko z`X)~(NwTRh9`bYP8ni~3vu_GGrz}q96gD*W{6bTj!QZr?N**HaxS}H855H@Z3zobo zJT%xU!X-%xrijtfZjl?n(@)FXec1HDOt+*8lPVR5d{?B`?JY?)@QS$f|8N&t^mX0~ z9$dkai)>igcSPR`69lUqUAxnvnjk}zt_I6+xjlVSbO5+pUB{ptQ`TYsl_eGph8W#N zJi<_J(`>MsX1fY>jwnc`Zg%_HoJ&)0T|!A@nKlug6e~UAihq1hT6)DUkusxZTShW$ zsM+g{Rty}kWECtQFDfJskCjn1irQII(*qQwpDScGW7ah`rW9j!ZnCZOxo7+aGQ zV}mEPXwYd1E2D@tp+^fvpH-a&DH<{KKQ&lXL?or{?_=9-cFLE{8@susfDlOyJYxYK zq#z5>-ZDS`^W?=9xV>KSOEHBQNmrXgTd*Iw@V4an@%~!G6(LqWa}vaDz|Cd+`X|#@4#Fx5U%*_TMypH<2Hrzn&DU#w zV!~U>Mpz@{Ol!Jw#*N<{4Fm5BR897J)V60V7%+A|iOCh2O-tIk1s!#L*{573h{G-| zk;U1Uj~DOX-R;)*_SwumEZ@1SvIR$1?cdryw2YqO8aNF9i58)z(IRwq^2?zk_V4!wdpLI&aWzwC9QL<+%LXni5X3U?cu=+aUeAiEA+8&(aG zmvC5WVkxF)mzMw(;q~c8xBZc@udnixTiH5qpcUVruEgmYW&TMMJG<|jHvj=5OUOS* z7BYj}0iqR~|HHw#z_qlzoIiU!W!36d04i9wnziDPnGL>+xvQkFS=f0I1Y3oe)eT=< zFb*EADXq9Ahy9JIF%mA^0Jg7KczH)w0QMU}=KA}>AC6?FZ;TZ+^(#P04T@HZEAq)E zyT=8GGh2cRMpRGQf(;JWAaJRy-@ifjicX|gk9SehauKiVn zHrraAjC25vK%QJ~O6CX89}G>r8_~`>hpgk{Z=Z_bl1z5jI{o;BawRlJN7nh$N-h0v zpPL>B+ET-(Ey@sLcFWo}zC9rhYRj3iv6^17dbs_Hj0|nrMh}IOOYBdZGBLJEPQ;$5 zP!g6xY}7%n+|c@E(9_j+YmN3f{j!h&x>Fp6G_%dS9Kzz=!1^&{?-zg;DovxHIO(uE zQhauV^1|7dnh2h6BP1ZE{^xt*i8ENV{L9%lX7Yk@TJkE%-A_hOg#HHmbKWWuP=8m! zFSivmt@tbbmGLn^YQd6)gQG{TN^o-CnpnlYzS?l62;zy$~M zG0;kqSN#9804jS4jeM{FVp4fLU(+&+AmSj2!r6l%{|{%oN=kSmG!^m&iIrYoMH7|@ zVR|eTP!ZPHgaWHt*>%!n<-c=#17YhJYTa=~)u|Av?gPeZQRzSu5*dt)aU7ts1ep4P zmCfPW-kX#6Zzx~4IaydHuCG}M2nYa%4=tEATcM5aj1J6dVq#)rYX=nXl_t{xkp?!v zuUlE6wanPR?0f5Qq6H($(z>}nIML=$^glum#SuxJem|`8i6DMl>+lYHdlOJmIl1#q zzWxMX7!PupliYfNCk@}FSoGjf#$sXR?;Ua%?8OuN%~q5Q+@nY#{T4BYG&|h++7+y9 zY~wKmT$W9%c)RU-pA!40rTY5B9y=$2hSO|?;#2UoeDLCng>p`>rY}fwXf{B-Za~Mr z17^#oaGkoAz7W$L#UWaXzqTbnK2d9W9Z|IR+d6$hO;%3&emdsR(|~zuOQT0-4Pf*d z_y)yd70D(>tm%l;1aq5R4ceEz*(;{8hG*w=5%#oYroyLf|t=&B9Pr z1KkT&R`nC6qU?Pj46~u{ytP=+nOn7WDNXj)+S_XZRrW(rnFsmRtg%`~B^L$I#4r}q z(+PLnJ0Hl(%A(pIri=TvkQp$2Gzik2N`YFUp;Gs5w4mTsId^H*m|Ic5rw!`Y=Z-j< zXdF?Ra<#KL)nuBW8IKu5ZP$?=Zk6Bg3Gon?92FPd3`rd}LG5h_F4Oe{#GSbpAPTwc z1k=xZu#!ywX5w4uP#Q7$^(#%=7M>Iucu1+y{dD;a9NA+rCBK`}UB)B;<(C}2%+Q8* zb`#1(%Hl1$Kt?yQ2&hOcXfX5j&1RQdUf#%8Dc#y<^!sP1h-S@@bI60-GEX6c5lE7! zOPf>_v73>7iV;9;7-M9=h@cTsRPsfGR)U_MkUG``NSXm1xMxc&_%V`x0*vO*6BDtc zZLyU9phostUtV7H3Qa0F=OA%2?5?4EKCW9i3?hZoMYApPSRv7|v5psOZ1jwbEsdS& zwfI&3I8KzU6pAJZXcZj5xr|-D)o=F=O)tP{Nvvq962|gG*4PvtgHF0$!g}>?Ifj0& zH@ta$`}u&^JHQb1kJ(6gR2$#&hm`CekqA|4g_&at-RE1xLj%wBT^)kC#S64k=zKzd z&Hf{V>CykA>8yg{YPKjG+=Ij5?(UMoeF*OE?iL_eaCZsr8r&hcySuwP1h+f?!+oQM zs;NG6`t;eodhPWI1Q)n~)=DQo$`tjpOtIz8Wv&H~CmI)a23+{;9UeoRRK={4+86-KB zUo@~BHC|jO1MUbq?096ZtzDz8XLFJt0O&!I|5&X%v$w1qFsxA~w+o8x2gs#x(}rVN zee{gI9MDO!;i9%UZ24jH+q^!IL@f^TH@Y$*6MQ`o zt~Dv({hi+k%{a=)&ZJTSs{Ipj@zH0uMGRcF`1n9=J<=tEz$&_7Wzm8)pNKgVI2rB! z-VLab=a!;E`H**+xP8t=jk_3AWo1-JhTO-jM;3fOD3z2CUzx=tRm?S*z8=`8NPrJ% zXk|4bkdqB=pkVf6Q7KFcQrd5M(Vcnp$pN>>9u^ny0u|6D$-LUU!0QM&5*N%!qB@zI zjK+qylb#DQub1iAbaa(#6fKzHMN4{=3vhi?lx~|lxorc{Ma=-^D1D45?}61e-%qwk zAKMy(e_N6nubT(;|0FI$J0C=N#ZVR!_JDwtAuOT9c$f=vv`n>-w9w2QzoVISvNrc$ znUNWM!zfU{+5HFUGNf>QmgV;GzDoYNb86;$RkXybMr5KYF?ld$uBlVgQ3detC+Cn0 zIJkX5Tm|@oVbn&v>!{2}ei1-j;o1n#~RaOSE z(aNM@+CTcjl-NWCGD-ObSh8*3RHcTVAD(erSUD#iaVC|jq8&X=q9qe@8zu20B@+-O z%9JJOrC6{y<;k$*vwm-nHkOS_@>-v6&!XfeS^0dT9DE*MGX-A>XOX5COY%TYe=7({ z2A`Q%y<%J2*eH=+YG!+@od_|9 z5HfT!G;ILH#FsCxlT#BMTmljR$s`bZVqzjZ-CxMhZh)XiSPp%u->t>xN>^%DmI$3h zk+PAu?YNU9*zJ3)2u!2r;ROT@gInXx-P~|1yM}87*AYK+a|ZH0DFcK(zemN+fiRnX zJOc1ZXi&UU7MIe9vkI+{bL=YX>zgBI@TR){u@5O^nVUGoDpYNemZH?w)d#YrXc&0J z>)4dP9S*83^4l#oH+!DUd-hr<>zvv2^Y>_8AV=mqjMl&gGmzjAOf2r|QA^SAdVK(q zhGJ^Fnui(}%=q~!uDv_K+-UE!U8JC7L>DmjM_L8^MYYe)GaM;?FYhFdH{*DR#U*$` zJ`u7S)o4g!6&yjgVUMTY*B_y}-ZxZ}+5COdcBv$vL(MI%ZE|aO2!Ub$#a4Shr`?G! z(5v8Po4Gi|f)|HjayD#_)@wnx7fv0WHSedLP}EiwdyHrmTzf$Qu8EU5n$)a}gH~`i z`dg%f<45n9=^{8XfXIe3OFq&@quS|w-gEP5^2+gW-SYw8j=AHL&B@rZ!8nP;2yJ8H zK^v+79dw=ZG2qvGR^2fej5LLz_Geu14)Tblb99KrPqKU=Z_~1_vvJ@pJP|x@Yz#Zk z$62^_?NxCdmd6E%OH5B4z)5ImD0mLQKrC2KC_%~GURxv?W1xk8z;2;}KPH>Q%aR|e zBrh`b_Rf5M_8c4<0(bd=qkt1AZ~C~-)+-h0j>5s+_Y=LnkWPg4wY57yhM)md??ZEo zGF1lEQEb2Z8s0Vwqh} z=35)%NRU`#w^FOBJCCU}i!@@RU#mMlAW3xp_CU3##t4hx_|_8hE1-Ez{l>ViaGUwH z@qTVQ7x0?kh4rjF8?NNQvo3zyX-2whVEHY4)@GJYq^n zNemOO_O066KWC?$Lpl<29U!l$r(Pm100NIZ;m-t1R$<1a=@hd${8!dX^g#Yc&y&Jn z+ruvYcLQR)pvc?#)dgxMUHi!GG)U&{!wmADUA*n0NMF`X(h0hV1$4i?!@ySD*HZT) zT(jg4__dbx>#ff4tid-2F+(?=e4{=C;XFE9=Ed-eE$y`^c(+mIL#Th7c$;W!_ufTL zEW%JOgR>)dwL>CP7<`*9@kZaC7qs^nK7ZA~IFU|;qvbXVpS6rl=&ZZY6akmr*7iPM>$x@) zv#y&p5_^C@VLK8kJsZ{^>B@w~R!0Fffj+Bk5j#kxw?_Q1=Os)oN z?|udf{XGR~PC$uR5Cg6sC5dRSl%n%4rZbI}8w< zv5(j|f7=N8j2PJNxW1u?Y9NK!>kS%fRRnMEU7#>mvyjX;KwBbt5T`k+O73*&?mI9y z9NH5MSggs)yJ@;(KGS!SqI~@qO%aq{^lB$WvF4V=9{}a!Ej#yW8H2ih)#FpU;nUg5 z;!8GPH;#AVq4_h~`0!KrYDeT}@#p52LaOgvJ9{THuTj>Np#W%q`}S&PyC&7i&NtD) zw9Amu5SkO)m0d19}DlGv&C%^kvFZk@fNE;R8IW9(kS%XM|QC zaWxbINMGB1p7MQsFsd#_0)}%MA+l{fNMH9|Y6*SXAyq*OTsY_Fm)`aTV{<`$5g@+> z0x%^f4qB=8NL!7O6_Uj60>WP>C?9tSw_pLYGkLwIlmt`TRD}0!rM=e9X)+AfnR=*%% zpH4~J9BwrBF;v9uu_1V4>)0pezCak>;r}Guf2Pd0DP-_vu|&-vz(5i!$a{Qzzs(TY*csKX~?0d+!cad^uEL0mx|sDl>C<= zL=J__+WkAY*`V45ES^}4ae;Gz}bg)m|V)O`NC+R7je(?54W4cuu>v6Q0L4kuE(&axI7 z0SluELc?DW+0xRE_O2j$Ny!lKs6KVges#(NTLrvENnb>xUw0dF_PvCs@awYAyWRtPnW4kiAg(L+CvT=g}+kwD4)Z{SOCQ+L>4Gzql-5O`aU04b!f|GEDn zBs3!Wmqfu?$O|h>VE2`#^#}_2dJVzB+B!j*&e+p4&Ai@U`7xy*A3PfH?|T+pu}BXV zyb_D)lAT*w>Kt?RP*}UaKmqBl&5JEc)k0G-xt14Gs7kRcxs{9oj2ap6qA z9Tc4;BKn3Cd;gW{D3s^?!~ovix%Vkb;@ek^@Q*^!e}nvzgF88;O~;<-7JR26tL2yW z-Osa*!YhbWkldoa0q&76bLqLf*Pqezam6Bz$N@YiUc_uwjJw9*WIw)m%9nq0a8`eU zbD4wgm#7L+bEl4KQXOMJ=*msC%JyvjApISOZBFJlVLX|FA`d7Ms*TQPV^J{1_4d+{yH~OT#_iIdC z5QgW&!Lowl4BI{?F=!g7;28S;yNXzx;O4a+X}d>e!4dm0Wl;E9e@~1rjL}fldWSH` zGpEV9prr9J>;|fpX`LBfH_KIuMU%DI>pU@T?pZj-u^Z%+o7*ki2A-QkNJ>fC7{Q{e z4iZ1>wt!mWtfXKSdE;kTz|fw}h7D>|qsM69vVOm*5(nB^#tD1njX<@rQ5*{t7f%H3G->pl88ghKyaM?(Gge@`BkLvP}ABfli3f)yE}wn#T2iY`OPWeWCk4!2Nw~xHKe(` z?x{ROUa*E9-CNuxUj=|SuJADma!$rZ{y81*Bx#uda2hv9kdio!-15fO(d8*(+XW8M zSrD&iuFDQ%EQ2Qn}E)I%LicyxE*|PQutugevm%jkA#a3 zy~Q6*mfCyA1WNxd6e)akn>?k>`=KJ+#B|q%4N8S^E+h5jdunCru))-|25md}Ox~XTeQ{#aJ9sbe(w(X}G;qC1FT?vyU_!TXbTNx6 z1+48)?lP%gZsx7nvYtu2ot#8||ARKg&x6P!+sf-61)?ISFyj2j$Hg(Qd5F)D!JtYJ zE9CbjkW>`3_^akTBj|fT4Qy7wN6UO*c6E)Wx6O65q$Y|w#dKJ^cqL{ptPuwz z-XJ<7EpjIptqnSW5jI-#3DF2S+X*YQJ3n~9l&)-KnSAGHN$~LY){fmM43Z=mra(lP z6egR?GI0kYzA;ESftpPl5VerYQ8;;BAp##cv8GT&g_FXH$OcYsBaKP)w%SR37m@Ub z@XY{ogf>eP&C+yggF*Acz2|1IuZVPAUh{i^@I>x=5fwl0< zD3d7aTLEvzi47wA^>%sL041=5oQNo9VH29?*%$V2c_ySES2f_*jdD1u#+7nq@=c|P zIo-qyb2GPw7KpRn!eIN}B0Dd+skOE><{!3-SOH};4u;skW7cC>FylnrBD<~s__T7X zMK}Z#V_K4HkO+Qsi3%k~GVUu=!>PC?WkQ{@v_iZo9k&c#nd*NcDc!N*j1{6Zzf-S% z!nRcnIYktGs`#F)ziI>-Rvw9x0zWO1vd%*y_kyyttVL3gF)jGSr5{m*Bm6{DmYlHF z1gxKiAHhHy^@DxU;B{P2dr%MTNmR?t_9RBkX+| zyTBBd`^Rrg4J`0BX0&jHy%+?t*2)!EGf``r3XX@%Z0bU56oc&CY+x+y!NE6Ie!Eh> z$|X%PbFM%8cPopCCP*AnWLmQ!Jo=v4>|+jsPrv?J?P-lM;O1Bqa`#X9eYgP0z^VEF zrdqvTak4<&%h#+Rg3S)+GzE>{C(^Qf*Piy5ye#9{hV8l(Ts!B5}Pp#nRBT3NNjjYE}R_k}!EponRT zG(8STjd?sLmz!S{5W=a=s-y5nV$V`6CvIPj#D>GhK3@pM1n=AL=3 z_&TSe0v1p{gGyC*Sw3%BWD9kx25~4 z^uk?E&7xr=HFt`@0@)b*AP5^s*XnhL)AhK{uzoFy-+-qEaa4TN;(f=jZ9%(5@eeD} zq~NWKn8I2;J`AycXb$sv=M+4Wv>2Xl5(`OfNGFl;#ijIG*20jTZ zDd5*{1K%`{>K+yrKj{R@sMu(ef-iVpN%6pM0#l-z2Q*jhedeoq?Cjrl4mT+w8{9rl z2DSOKV%l~f)dWxo^6r5ARoCu1H55ekN7|39}v_nH2u`ijV z^NW$zc}s}pLQvP1jGbULAU2ALn*jwIO^I1X%c!(-n%Ved4dXT>q-MCMfYZnKQWF40 z!!?xZ^)x7J*;IE)43(0^w1Hr;TLmBQ5cjHM?EZyY89pWbwE;4G5swQUtuO?g#nAO< z#94-W%iqSRhHX4nWkZ4B`H=f)6yKM*ocw5NnZ$KWbJEiP3fh1r>t?G)on!2Y@V%il zp&wCM8v?5riyDjJ<0`4n{Xa{3CMLKZfYRU6qkj@5k%~ClxkMjc65}4ls2EHFBI&*B ze4y+Y)p&u2*_6a`&Xn7z_ zCFi*D%P1#!MZAa?A4%o-g!l$frv%1!7h#v|^(@9%Ze}%6!d=LsM$N>F#Mi97twtzK zF_adAcGRXXG*}Lusy(uSHD(-(r6lAu%Q&q+xaERkGj;A zR;`aQq^UZ!t-X!097ivcGe4tD>V2RK17rGJ9E>#W zudmr^K~@7fg&0)3Efb_#+D)NIOf942|0;(VDVhLbSH2>3H*<=?W4~ogNqYm%&Ar(z zsbM z29#Nv2O-7ZRFbkgx*dGg;@f?y#av%s*>$$~-Q)@>Bw|=d83hv87p9`; zaCzg6{HCM3p-F+gtv0q^dbMj2ay6AjJ>Y0{LtQ*P_*;q(pG=q*H+%27A)1;yMDh7a zatANR*)AzdGBPjEh`y05=*XlpAq@+q+}!rp$xE2rI*Li$g2%7M`$p~H80F{Ad* zbW&i$4)~D!<0FK8SlUC2)+l>5bkgt^424KL6{C05~8s+gnzgE zdxYFVAzHPeBGT}jRGLv*Ttg>iG5Df#@v*g|O^y{f{<5paP8UBIpo|9nbij^8qrlD& z6fM#oV36>3K7(D$!hsBD5qQ}9YL$8YR=f9Rz4w*LND;o`*SO}Ya6Z;3(r^VScZzyK zf{etu=X%AJlQI3?KF5^uMuxGmX;79VfuAJ+I~lDA!wbLn~Z09nQJtTy+ zsq>)$z{b*@-`3u)wykX~+QV!8Z{z5l7b$f37=d++<76oO*$=+QD&eQtx4vsA)E-c+#>- z$M)(1V~DL%K4ashGXs7%wd36f10qi~Y9Qt1Loo7ntzpfsg1f@j4ns#Q->{>0YIKl4 zd3oBFv!$(LWMjgO6KCtrk|(_|>#Hb19ixepNpvi(Lmfdgx-=yu9i>c4ZDZ?1qs`JX z_yA758rRs+6#U4P!0du!uXN(!LWB(tc_L*uZvYZa-G>7Zw#-pXWkKTGy*=orp8BXH z@QrTkRcQSH3gG&7iNENK&j=r44ZNV3#=-}9=OI)kmTZVp?IO6hVwj}jl3NBN<9 zTWgE7ISReOyXy-iEQ~35EJzAUqRhc7GWZH7d?DAnI9KnSd3JZ=n=jpahV$I2v8Q~WJqOA&Y(SuG4gmdo%8 zug?E_0SFXlDbNu&a1pnPnkyoIyg4WTgazODYJ7dN(l+u|=^#Ia@2>@tWXI5wy#9au zfst^bE>n0mM6oE#Kv4zFvp-$Z;Y~3PII{>sHKr290%sl<-FMG>Tdxqx@V*}z2KCj6 z%m#K}%CLwa_}z=@aoFjGosEtN{FCh=*%l9Q=`vxXe=*|vA>hzKEB``ksy-Ikc|4z- zyEVHU*`+0=0H1D^WkBlPm__H?vX6{x(qr!Ywz)_iR7jJX zqbuU0puGaHqP83p1->r7XC8)@ zT_R+0X8`(!x_ArY5i8=foHd-KIGep%MrYT@RaXX*a2Vs65)vH?r0L#+(IzQHqD5cN zsuv^3yKNSOkDk*dFuT~3`etf&p}+(Saxds6F~geG23fay>FGqSgg?DiU=b)>Q@v$2WQ?Vz2;&HABtrf={9Xor|-4Ojt6dEADY`nYv2ZJX@GW4FHrA4 zjxgam&%-s>u$Oa|sOC2^HlMcc*3fGpfo0OR0ZFIAd6AtR*%7vZ658Vsu(aDFyV#5k zO_xY7v``7J{pQTmx?i3IU50>FTf@VN1{+-yx}-kYf&!^i=W`#okvI==(_|$&L9#L0 z?HtsfRpqU_u8umHq3!Thjsbrd+P_)_1xM#THEFmgk-nrn>3uq^eS65I_WBib$-N+y z10NCaHI(y}VzBh760FRS!Os;neD(d5KtPYjwd0*{enT?bNX6cp+Zt1E+hAI9RTXs1 zqG5JvJ{g(YWI^j=GBi=c z^B%7Sp#!|*mkr$VqyT%2luK22A+03_=o$Ac1OJTEFHmnLJNHNlUi!0Aun3}i9w(%a zlGCL4q|J9%?@}wO-l$29I1IYiajXJ;HZyP(c9$1(Qwz8Zq2%MIB1c!B<nY|VX%l{oO)Z3;xoPY;nA(L-8#c@ zLOvtzq*q}JqD*YFIv64NjfLDnOdIFW-1B|q2)?TUDUSCk$kh{o)JvK?fEaz$H|>Z= z_R4owkX#eb=#^W44quR_Y~364A3&#{^8&BMku%AcN!~qU&H$ zBWnganGL1!A{`k0VY;@hqeotMX7dowIF+r|ssCa|i||T`GUD5Cbp}1}7=dYwY4;>J?1` zzi~+v8UT}46&|RDEsQ#BNK5p5XIRU6_s4fR`q4o&?K5aHSUa-%=>!bAZcNysp85o3 zzzoPF>MDL;_m2Y;Jx5ZZaEA9u)$KOG<{B+1yVsnKd<;HWif#-|Iz9WY>%kEda+TCy zxP{$V9blZb3qzdOh%7Upk53VlYpVOBi&vvMct*7b>=V`ubjVFF`kpMCl$4Q4h)o*r zWA&uV`|^H5o=f`d0unc|J%p}EYREtd2_0+Te0u@6f(hNc9FHz}&`6qzC8kg13YQAcwG(H&rhlhNWurD*C& zA}lOaMYC;8d#$VGz92H_wi`?(UzPVLA^(E@ zlgv&<6<+hU>E7A5-V2=QAo9H{ch}rlDG2O&#GWD)>KUj%N+ZgkwE5xjxEI^v{Yotf zYM4QOCgU){1bXd44=FIAWkkv5=pBwW+Vp3|6fi)0EGoxiutYs=W>h=x&RczieqI>l zGX|+E-e7ILUOs}24it7xEiXGm-Zei$%~uDD*|t0nNL40-{ZIXkv*>PA2U>KCV85R$sl|ddjOg&|5}Ni9=dC$3m~((n&t= z!6s%Y66c$Kr$fn*k=?JB6Q)I@kw=p%;iA3|i{S9rE588NkUVRciXQkSYeQrc{cbRL z&9Fj!uln<_8Xc^t;@v}i+>yMa7jf<#3B4mMZTaQ=me1T@UZ%~PiAoXuBYNE%u422P zw^RM`=r?e$Ah>hh>ogc*t;vYkmjezQPBiM?`fTeuNPJ|eW#x$`g^53yiI$gMuoly_ zp-Yx6g)3BO^jy_8VU$VVg%kAMcG}&Sp)RI=?(%zcc+UAa`iyrT*qd!hsHhZQ*lgeJS5oBbyAeWI7Z=5|!Sd!$vF$i1Vf8l7s)5Mrbu z8a$#u*X}|eI=*k!A0e0pnC-qhoN5O7HH=If#`eCjdC+Mi*O0L%X$VyYpW{~3sl?b~ zd1|Q0QBc6=YtR9PjZL|wP0RJV1lUJEvAT+{EC3=_AiQa1y#(S%Q%8x$5PciGzP^S? z`~;he#>N;ZWxTi4sv2P{BcH1Mqw7)y(4p~$-5T@9}z!i$rc^iY466*2{o?P$!(g^wOw8ZQS7VNsp4yz zS|``b_U3!zAuHgCOiHFGasH%QR;pz3>a@%Vx?vIg48{rLZYPwawyrLK1m1r0??`WLeUOoOLSy(IwJ2VY#SC>{T>L3F zeDptPnbjR|$kYDhE&FSbB->@30bX3}2lJyU{wic1Ed$>Bzw}-K_N9O6-?@Ek!}!;G3EMLm7G z36ETLeogLs0;@JXSzXj~IGw(ZW^N+h?mH}3C0-+IK2v;CkbZX|33~H4TWU5tp>FB0 zTGQ;0ZObVw#bmx#!P8IQsm4*_JIKOY)kf(RJ$T;=NSA z5?akOrA4ABF`375ESUV`R0}ZTl{xwC(zE+9LsBqIdt2yF;eQjW)8j|Of>rV_(q%CK z3Lg1<_VjFR3n)GOUE06^<$eDi!ZNC~i zD>FW(D@ofPuHV(fSw)BTazHA;gNzW2yn}A8O@AqxnJN}jkxeQ?C$vy$>1!W6^`hN( z;O`ZXIlNz}6;7aJwIu&q{OgYX%)$C!DT&s3X(8TuH`%7!_9LrYqZ%UMY^fUT;BxBz zwtcrfrYr8}IDjiTMSyI>B$Jst7sV+fosdc?BR!YIIdSbn!q}i=*RUw{poZw5lpvo% zn%vKW2Ix6orleM^Saes4M-`1T$7g`n@oF>8&gTR|gYtumD3E!6@LYq)?)pqrZ^9Z# zhu5FIDXya!P~yx(VykrXHczfEG`0+RX~}{pXF@K15}`xeo}W9uAIep2XzlhDt?BA? z%0|HCv3eq^76E_%#TH{Y$*t@G$#BS94d5m2si>MsQ+k`zm`}F~Iqz`TRhW5r1d+U5 zqw@ZEdlJY#CMO}GGFx(*lJocyaNmfMz-v^>9h4AZ-3m&#jQUX+j*-G?RZtI2g%SXr zMWtzSQ&@=gT&_}++X&7Onw1aX91Z@^32R5h2pm~OMpeTjBBF}n(!>RerkVzu zhSnZQpE(^oueFS0ldrxuR~+kPhf$df458`eZRKDhuZ}<%d4{n{p;piW$QObT z(x;s1f_G!2>kI=kq#9F%8u1y*nL_c13Ht~E)g_?CL1sJ~syqMDdBNlI52{(*DNuaasLN{rN`Y zCsIZs2yR2F4~@Nb@4RbndD`&=U8M>AOzq63E>+scH9)!a%Z$VJTO9XS&|!P`JCe^2JTm|_?KK0VsDO@;3{HGp(=vnxAwb6#%&Ht`<}{MIK`aM9Ib zJw>feH!?#q!qot*J`);aD6dHt7FJ^?!$-QvzOA}>zS!WesoEYNEbv!^FiT zl=7smnP+#kQB8Y8i@W)UW@{~&#RH7Z@`xJyU0v&X%xbl`v#_+e|BlN1Yagp9MDe?t zl%-&_qN&X+7cjl49LcF!a5ZpovDUG=Zvcwpx zs+3x*u!n@nP1^+OCZ0ZxB?C>u$|a)Cc#+yPnc|VPLDa0jl^SN6RM|am zT=|49YzPW@T`)B@y#Q+6DE8#cvJ?AtRleWUke9VBM6sD_g}7XDTvEL4d$p~gDWu}1 zy}eFeLyBQyICTD?k${YCgrn?5)~`4R@Iw*ji>e&hOc*MAIpw zMkByQ=*O*;khz5ou1aM2Kne#%0;>V#28bqTwCFD4dSmu79bKeYbn z0tb@vWIcwAx8YB@VT{7xd8dE`%>2T>43uuq7DcW{II8WQ8oQVzUQDcWS!7Va4JnyknK^xI1Fpb1U5TLB;1vXH(NjuvueuUHOQ?a$2&(p7vM< zoYnM+xIu*JH_%9*TkqK|ac!tu_Z7XiPp{6>hiE(WaExr@LVMeo{V0e-zsEli_Et;R zQ)utD`-l*{Vq!k(S=UC>kIQI6r&x>cF4#WNx@)XAS4@C2?f~?dK|_DKEro= zhTi4jtd85ilV9&zIpM~}rUB`J{d=uLL^poZR7kR%n@20AFp+M1y;FAasb zR}-B^LciYZ$l3PBQ-rquxZvOX{n(Bd4H30DTCgnyyXCcYb=gvUe$5iM#q=)5Hd8Lu}S?ri3`FS$cPB%B6yX8=OG#B{{{kXHSVX8 zkR&g54LX~>b|R@x#!k5(r2qUF)LbeLpeyzWiYpCAO_13R7p@wyR5RYPi+{1W}K98k-8OMcIp zDxY4{q|`BwlJ$~?O#OE$iPsc+N+rgEPkM~o z+c%HPJtsNXzns1$DVu+$R>55G?|?h)Naxx5&8v}6cN;Y#n0Wxb@d1Kc*nTnX9Z{9^ zyBCnQH5$FsDp^FJ7QP?f8F$DsOc#6{&Xp*_0Rx^heUYZ-<~SLYs+&9XQfeuxW_WEV zLRUK*#P)Ku@Ct<6@50ryNEi{(aT{e~`MZ^)?1r}i=G8BG2%)H+6{S-RNiadHA z`BuG$H6PWnP=R1F&=ku%6C<8ij9ki88?`s?W)?YvW?g2(8`Zn@bh^a*+2dK|U?-fw z`mf5#wj5zeKxr80{k(GYG`eTOm*&30g!HjM@(!UhILAXaZ^B8fcIDhi0oN-zv7I3n zKE#-KHS**(n3wyrZrLJgK_Mu@)xg*zf{s|7(%|D32|1FiZwF0WQ%BFt#su@~k5BeQ zNvKc!g4av>P-qC|zhbFZ{T-iRikj{fN{J5n(iokvyo8s5pME{%D6?8>TI_^hpA*3h zhY4= z8W#z$P9aU4n3HtO`2?+b77<3Mvxx<^ra37@Xho3A9&^d?0N4bcwod3gT|K9V{7@Q7 zn)qoP1$$>jwbXAHk6R`O9jKls{Z{gVPB>RY%kTQ{0(nkr4iAGxm+LDu&R%CWLMOJI z$qawwipG6n9U|xi;V1)pz@f|@u|1Ax{8JSJYS_vQ_I}hYs3vmf^W_nPnxQb49p#fj zh_Ip75QDo5I~`&*(0)82BvBH^c&Xy}GyQ=}q@WCHgl)X&kR(A%`jk#ljKCZ0a4tZ# zCPnHWQ%|FK+-%>399uh9d~6Rkxn0Jah`Veer?=;}YS@YHadPJKE&M>GSgsUgg@asH z$VJ$_bD%M@CH7N+Tq!;J60rbseBv)}ff3WdNxK}g}&l@boj zsqs$`cDSB*4mS1Emi=cQl)~>)($19H`w5RLt`~rH5|OOhh&#!*5ku9Q_IBxJvlb7t zXt7X*Ij&Ix620xpUZ+14-h2J%A8)hxxtURzQFWVP zyMV|8Q$5trZTC;4lq{oSjy}w-cVZpM=kn&w?JNddF=K^f129H-zjg)YYx1ZL!P2w4 z!#gDQaMsbvCAoso9dbsXUbbHP(S(LUk=rh3NeuDctk>0z#*#X~Fjd6!avU!k_yGt< z-~7B5tFpCoY~|^WWZ$EoWFp!vv*;3KaHwtlJ9_gY1KWufRCT?6Yt-p^N+^|(xsJct z>fz7B?A!m7%h*)3svv`kaMbxQi`4;RbX@UIpDOcoVMJUpokHd}FcnQ;DAw;5v&x|D zNAvGC&-=;p4iD5Y&ILxfmhmN>g^-?Vgv{?^q$)s2RwN`B09g}Mpu4?a(+P*LG)9bU z?d4_3Lt$gMN+{fw{+efik*(*Dl8NW@I^WwV;$5F!=iRspvcvjz;SJEsGFv>UsQ=Ct z&b(qMY*vP;#C(-8_9vwTNi~eVRA~yhH!uqJU#P(R5G=lbKfK?AlwW_F-@A&dMTWu0 zKFwRG(3@D5-e2hn?=0;;0-;a7>bGY<%GS=F9ZFRFQu^>mLfJK-*Euvhqh&IM@AX-i zq*QWGBX)L{f$893VfyWcMfTA*aG1`E6iKr9D#w5 zhrY&40x9nlWqEbwYkA|J-nNJxN9hzZ;7xyG`@dNY&+~ngyt|tw9++4014!va34`Y+Y__R)y4;OAd5bj|cMGasL5dX#b3r9};y zDAu(L@(#gRBEH^%$E}hQYUhjmv1CudE5`F8_q2EWpSM)ZDi5`_CsXIXe z$*@qmNfexNj>OuYA&=RdGGIQpg`1t-uC-jpDqV340VToN8L5bvLWc#oi^INo%yIg& zw}nLXx*wE_7M&H)^Az>nL!e%Ub$T!t!xu=FXHg+ytOhF0i*b6Aj!ABChD|oknoWSV zNb2Q-tt#wRvJAfaS{(uswaQ60WQ-i;h_GAAOQVMN18FGbSz5~sBuLRKQy_$EMuiml zRc{S>NsyalO(}yYRAnsP9cbtRM@160p(}7JP!E12_ZqvWIAr^zXfSt85s-9*mV-L) z{%P=LvBY@|M3i7jpjeW70IgDf5#&|%QfjG4U1s*ZqRIWJ3VTHOWs2Q_%+qHNN(5qyP|%ur7u?Jk%9tHCUR}QyPn5 zN2BYeun%LTBz%>E>n$TU>VbKe!hFt;mScr4<1vl?r|~3%&5q5^VrnhD5NBz5-i;)a zZd6bBJ%WcXd0!O~5J@(Wzm3#SnW+iv&6hp#7&D~YU}BH6uh?2jhe5=MRD8(5(SMjDD(C6DVyAE zy1YF(b>2)kfT@096K~F5a*lC?6w*lAoCUZ8J9oq0<#u02-Jzncwll`%tBpg6^LsfA zL?#zYaaonx`_S&lq zN25>*__^KzQ%v#j!=8Qe`G0ca#7SDMHdn7+<;IQGux$QRYOHT1>vfpb8=JTa#l+)mVZ~Bsj{oetzs@(F{|fW7bJ&>;z$^$l#6 zAz8-S>Ke04i|lyEJJ+tFt(;!VaA|XmVKw6N+I38x@xpUo=IHWaE?m6GU%mMTH+nsM zlCV1*vf1nNw_*T=4?1IG%#xzzjJV@M5*6WSeKV&q7{WL+h-3m%n8u1_<<=Lm7<@)$a5lUV3Zs+;3Isf%Yf(ee zGgHXLkYU)eFtDLM-g?D)PpU#9f)|62ze}K$AWepu(8+`t!>%vJov;0*l-m?je9@3J z)nzD&3EgkuzlU>a+SF3thS=xc5$d&5EN)OjmIPC$b!WMuk_3-KyizEPOoEkQ#6p}p zG!cm?s)10oFrnRhRL6EjFJ@P=|+v>KPO-iZ@Za&={Nx6(RT#R}O9JCX(VC#E15D zqhnUTics1o2wr@w9giNp0jE%tQ5ykcf>Fc>-Wp2p@fu161LsH_qiVB{xYDVa&pgEx zcS3TItKsv2h>2<;cT<5Pjlmx4`N_n)^)~PJSZaO4=n|?!@R3Th0%HOvk=OmSp;|Y( zD~J#3-V%g|alvp(?2_{_q-4AcWpQETcnRFq!RQ6q^m>(3C*A5+Xpu;rsvc~ZEHJ@S zhM;9A6P7U&pQ0M})9`7_Sc`Bx4=Fy(L1Uf5`uL*3uDxzGao-18w41NVf$Ol(RM)Gv zdMuv0t8*-lFtJtLU)pytX1#y1J~(yPE3donkg9_-x7yO(fB#Pv#Pj_5JXl<nG;8Opa*{3=stOmjlZMRLJHy24X-vd-`qdB)Eqr-eBcjg zMfqvrp;VRn6+xmxSmrk8SSN0+&kDEl(LU}Qli4N-l3Q}C2W1ks_fp!e1Zy4r{$A6) z=Ob;Xi$Mm8S8kn-7mC5RFq;<5Dv|R%c=eP6;^xHMf{r$D5p7c~~1l zH1h`AUKQ|#HUowv)Ai~a~h`#)&2Z4&Fb!;s*=XWh2~6+ zjj?Zza(p2B?o=P|u?emcp*DVvLAB>_iF~03W_@!1_8w=NtjiS-9uPL?X zi`L5u+ABh;W7YL~S{s*JN{l+y)iR;eG0|XTD>L@? zn~;nus)6rYRmU;%{TCA>#M<%T`5U!JxIOpX6*}=93lmhY4shUuh_S&jv|UOva&;K> zOh(yly@D_XUk%8T1ffH}H)3zE*W4~P9&`O%)Y1kqb<3p5m3W=U9=4kpdD5)Xnu$J6 zD#Vr5q(Z%j#AES+1HCcUb&g?tR%-dV#xJk)6-^TU-i+@jagL`^kWUXu@Swt#78CCe zCcLB1WEkV6{oU@-Yv{5JHrh0vPeaU)-W1Z2iT~d`1Vy!CtYkQbsUN!A-HGw;HX@{n zCCyT7Vi57frgTICAHP*NG*VIrxf+HE?50qP;uC2^XBEXskQ}QGpVi=F?+f&3y-e5I z(H_4Mhnv(q)Pzuq5Dc>w$kifALeGXWIy0dVKMs$Ly<#Hgw$?^hplm$m7#<={rV?bd z@G-FB$LFFp*wJ@I6xwm}_3?f*2P%H*;|nG%c;ZcorFe1`=1V1W9-|ejnX;4ADf2LC zYCKO>9mO!P+)AK7ph(+6nm0*FJcw7E87pmm-1;w!Rau106IUWI+k>~goC`y?2r$nSMx zyn9afq^irP>JloUQGc#y`p?E--vC(cN*=T-Wvu>YRYZtk;yTu3}!#SahFFdST$6YYSV&V~c=Rr(! zyiNG@K7KYR~vqcLG>Z z5`h%YXwVCjV{1O-Cww?&RSCbn3&vd(^<~JJhqf-nfO7@-KoFK1!D$^ww_r@;r}Kaf z_UDR;V+kupf0LgiB2mrB#{va&d!wf`pZm0|*}bydG`$A(#B&FOT^sb|iE~f!^_O4f z=<#E0Y;5w&U%tYduf4X<3!36%puy8ml7v>PMNyVysU@-DL9Z236mWR{?A4z$pSCzc z&f`x#feuGdIZSHk4@b0Gtq3s=_O)njw z<9_cQk1eNXyS@m7m(o_uWlKM&<4@9b<*qKuqFt%PK+ z)=~Dl>Sk>4CnCHZ#2O_PhM_%@5ev>7klL z3Ac&TM;RNAhsi_!ILyw?((QCvU0cOffri+Kq1|rN>2}!M*rY7W=JTO3%m+mz5sZN} z&8Vsh=fZthUoRh>2#Mjl`&THs6_jpwhJL>n_Yu38juj^bWm| z(7~utJ$zJ>iUig{Le+-{GOx&cP8X@YY~ zl3Hq=%Q|mcpYweudh%+hU~EDsZ}V$keSss3GicR|lWm~WO{~Rx$MKUV_@DmqKjy~O zOW=l_J#~yjzjKsxXTHLJ|3Cf@WJ$?aoJEz#|^*xp(X z52=B3XHK!Uxx@Nq5AQ2P3>HOQL0Jq@UxnlGkQ$ipcA3j^hI<3%=a#6fus!Orv9rrf z7x$*bXYl?Kue@;LG>@kVM~sl1Jk6D2$oZ``R?33XD4BTX65-Us0^Qj;I>z$e`gLxU zBStDDNyhTx636G~*}Z;)eCU{)pT%}lE^lnG-s|C<(y}Sbi}TFR%wh!AZ`@#16gcO} zBzS&{^Ybjs&e1ZK(O{2WG2p`HCRmH8$Ce{z65-h5VchHtL+99C-(+`p4@q(mB~j0r z*+q`F=NO4$Wi;T@-Zmp2lcj*G9Hy)Yy{N%xJMmN!;`f>NJag;>hw=_?ug9UhjaDI% zr+7+Nkx0Va{5;P+_YBvsUFE{X52?!P77w9Lc(WnV>$E}fj-SqA+ciwmbq=yW;^hXcy8B+oPQyv5GWYBbh> zSJE`4)9K*VQ;Z6#s*1+b1`jkz==b{}uVri`q*JQOHJLbuz&j0OWsaOvIR`e)#hlY)BD}%hqzIJl~n;>DeV(8a&Qf2QPOPIB7B*8uJ56s*Xey zW5W&WfRThUyyaG#FC9C{S5BS50}DyYw~s!?*`-4y68&|llaV(+m#Q!n<*nW(SKW}l z7M$N%=X`IAO<&@Hyz*ptd@;XGlvfI+~H%04-e3bryl3=Lrav2XHfN-@1%VF@l$kF*)A&5R-2Q@ zkE7~hwL>U-JM;J{(pFAVlze%1k+X|Sq&^tZWt;HpM~`#*$YDk@BFlTcaQYBm>dw;j zJ~j>ocO>%;QHP4hQ=u5}8H+>D_fDVV+|gt7Mtxk@(p{LL91X+wox>OlqMSK*hVTFO z_xak_zlJrpVW6A{I{-1RZs`^9XRlx6{MwMR3Ifcko?n9rEbZ;`+xoqe*Uw+ zIPb{woIGzaJ3GhT-X7HiXVIZUhge!#3I^JF=H}*DSeTFN z*I>xI-EQEVi4R4)-6qTOus8kWy|UgrT6v3htBrG>UT=>iNy)P8u1>kCQWOQt%gdxm zN}lH&IdYhGyG@d$bh;h7Gc$nDZns%pUM9SPir*vV-YAs&s3I!i}H-w-( zW5Y5k7g%hySi5?KYa45>tEPurM%RS`Zuu)g^TuazQP+}mZN7&0nHT-n{^ z(qNYzUj_A>%3}>=ndQQzi(I&VjW;fyXSvnpMAktn0L%8q4zjw*+0G2xJDXg*dWp@A z4Mt_qnw$}3IZN5QdX=>+SJ}9>!tTXO9AB8nv{Fo-(VgkAlnCqRKV;>ji+uFn`@H`8 z>%qIwP%YwJ$=ccqA6>r0+O_Mr8*9wlAja#RW2x2Rscx5RS1$49<@3CH{!KR5uJA-V zrB#hk?-~Lr!Gkzd9BLHQlbMvKmk#ml(h{$|{u=LJyTa>NE^vK)jZUkDx}ZQ`FLSS6 zyUI_0_Sd}s{(DWV^B``D!XbDyls;kCwHZnWRf}Np&c~&C;7RXhj*Tnt@$FW$D>?b^!Pak!hwkfGnz3D_vCKPV>usu*{@QSlEBk8mmq=unY3ghwC z;c$2ns>p0NG@c?+`qhvEMeFJgQM`DDR9xL&XIo2F%RV;-JIrPo?J|h(dZB4&ccKS= z>LwaPszOVH@g5jMX)KjZsj@bu2;0Lx*ZX_yx{6Ab(O^I~&*^q%5fa*2hg4ut4taOC z&sCf7lZ)qB-`hg`h^|#;TM6n5mXeGmEOW*(*Xod@ZAP}mN2{9*20Q%P^H1~ZCr)s@ z-66AS@M7b%*KVh5ZLd>mQ0W{kH-c67O9YOo5OQCmXZyvSV36v2}3NYwV^2}mL`fZT)BFcfBXCYj#pm& zB~^8+5XjBfKRCD+)f`KXXohNvNE!@wofwtS^wZ7SJbmI6rcj0>gY_vhX-F^|6sw-Z zD9?TAIsW`7Kd00b@qs|hAWg;1*f2lj#`ypypG#E@IWuEuw_0p(ZBtdTHa=Ez7%_ob z*N4!-U@)ZJYBiJo&Cq7s@AwF@~ZjNYga@ zdsM{YgaT_VWmzI3v|4#6`?Z$j`t|D}#%BW`@o+e#+wDF=ndG`LdYnA?tUc^{Z`Rr< zUsb`VAQhn`Ry+{AgWze?G?Jj6ZkA()Rjlx?6Ay|yN4M3&#%38O8cCvj>{}0e-BCk)FHrv+In#i|XBJq}VA&aJ~^#b88{ z(3!-@6^JnyG1$BfNkUOoArV?tc-2t4CkDmGgivTd52e%NXCox8#vzB=Tp9vPS}Kac zVZ0+XfL39f&Qcbh!%Ih4Txg@N#F(H+w6VR1$K!p41)h2OX*M_3S>N2`#E}KO$rucW zVLOc@{pcC$2Jw~`5vr=9D2k9f)5x`RAW`b0gr4`FvMfWw-r9!Z8EERWy+2@xrCxj} zHkSN_5EXar%o$_J^A=SVLN?Y~T6qg081K8WoyHidsw7QQiXsSwWLXvyl)+eg@2M(B znr3u5O0u-HM7z^wI2@6;a@y@SyF0sgd6qwaXx-u#3ypQ$2KL#FfiQ%ss^Sf1=_D!b zN^w<4irI+=Dfdc8g~SA}*9;5Pd4|r>%CZ=5Q(73Z($jLDRu*D$;pU8`K_cV4LX+u^ zf5u5m2uTV_Q*y85MTtpM`l^&R!K+0~MkSUCp>#^2%5E{B5JxGYnxeGIUNrNdTEPFMu;u=pn$j5));OL`QA**x1K!1E7vbG zbfMIuF0(>xSo*U6QVs?K(z!(}LaL#OW`1^#fhYr4;l+@6XnUBAT9RS{ag~aIHEfRt zXnus$DVZvjb2#r9`taM@Bzk*>EYErJiL3FhDlHk=kSMBFjzZ0UDI~)!XBV>6-8n@Gm9)6Py{TLKQ$;?cSbB=z0L|K+}I-PJ# zu0p+!zm;CEM{?@aDV|{4qPqY96Fo^pK~#PAS*~5X&ey;Gb#`}mxpeu`1Fl7!I8q?6 z8y$?R-QT`K6-d~`=T!+J08Qc|cn2LXoRpj`Df!abC&)CzXozW5)=+q*R3R&cGszrD zR4o9`5UphL*vPj9iz+=X9eN-^A7LkMs zWy>pDJA0g-S;qI)DOE^k+pJUt=LZ9%vOIqHF&@hjwm0_}R2j$eF2-~bn+0!K1l0sI zX_DJU5>SJQpbf6vc=< zZ=paj8qw``84UUqMG>8s@L6jNY3zGwx7$sPc3m=Ot)@$d&wlzdzWtr= zFf%jD+UhEQ@CSdu=Eg>IP!B#DV$qs^LT}A!@$r~6%i(6#x`FvVv*5Kib0& zy`d-^W#Rb7*IuUb6<4oa=KUKt7`DSh8uqbF=8Bt6baJLv6|k zrRU+Jl^ZNB9OvnCPtu*8<zHF0|Jx>k<oqK{ofpBNNGtxOsJO^8svaZL_ejz{31Ov&vjsTf>-0RS^3^4jno~Syl{( z!^YDc8_`fY*J`y$(@^HO-@xA9e(Vc@x$(J9l7!)Ka90j)?FiR#={liZ8|%rH!eB6< zC<{J=v%9y8Q+HoW!l#~k3hzB1e)vHX)4CV0B(zrxCyyRwE^h_0eiSbbBc4XE-jobULlc1a zs0WN8!84Ovz*3Z+N<9w6si&nL1C+*4#beGjsFoKJ45uiO3`r@B!A0XLc${~rC@DdS zz2==$ago;5G;DNMBd>|pj3D4`XlO8i)e0oYlcA9K(0cC>oFpW8GG7KGg~4hS_hB2- zE73rAn^GZa0TVwXlwwG=3}GovP(mIcrW6@?!|t%)`szjq9SMP#JZ28Z-HVeG`#4rS z=~*}AXm|`&I0gmh9f+lJLLv_Fj+suE|Mh?SU-%dQ`u{>C=l}b|e~-;NsH@1u5%fyK z`40QB6as~YcKK$SmV-~vqvKWI3dWeb4o?^(I2S4`RLAY<_c3D$C2uY;SKh z)ft}@b)5X(zZWiCUCmN&D~xsgx#Zx|E=}(~qj_J@nnZF^IN<(osk#4lPZoQT<>Kn@2e&J|xxzPk8f9u3Cl43)<<>ODubMd}^sgu^v*d%%&NK7LQ=P zl6l2w6f-cwUO8fCZ;zp`DDhMlw#!K4I(ajRVOTd6iNtPIVHnkI#-D>qZoV%~Cr z;srWz@2SMrmhkj86tRsFY{<0bmWk{p%3kw#sGwp|(&niXiLKN|Nb@#TRpM=iq-{K* zY9ute0AeYKU3wED8*$AWlBTy!j6Gs*^(}BO-P85tI%%lGHll%^T#Fl_mF2WrEw;CX zzzX>Q#(TftyG3~IR!0BUvR>nL{R2krS?k2q@d*sI2$6Fw5ZX*KPkqMsYV*K^U~9NJ zqz=)*{%Ix3b?tk7JZP_i6T{Wjb%xGk@`O?4@QESyfm-#jNjQ_w(snRc1yS9?2)$HT zkv`YVi1nf%usfUBJjCs%{@M=d#2CH_n;S!mNQ!p7qnh*of;OTqk@uE#dN@JYkgrehDtrxuH8o{dIJlSs6-|7b$e`i_s!qiwM7$xE##{e$1piQf{gVI3mc-r0`4ArE4- ze4^8RH)BW+hB`irtg;wGmRd&TZMwof?)x(N(1fh&z9j@97H}^YL85_ZwOSNK87e#O zqYQArcYmh=96awd6%ZAk8@*jt`@0MY8DT+5g0u`H;L2c^)k{56AoE1eIvDI>43`WO zp&~TQgq-BvjOT7o+FgF`o}UD59=v-SPk@-)U$61f_|~tFX}<;ySfPygxvevccU;$xxFRgw@wthq!U6(o~4 z+-H+H4m%u;im2Khy>0G(DWV#(xiy>C%*@O!yqtS;uj@KX=R8GGg!<0A45>5|UW|Q( zmSsU~9a_1Iq=OP0M1sNSs|%5$$ayiD z>#x1R&EnD1Yxkh==rsK8hdle`Z#H93)0DC-#@WdSeuD@?5@V88q!QGo`r=+@yV|=} z)mXg(WwF1O@?NeZ`ZO9Vd+t%Xuiy{!Zj9k=b?5u+U*YY z^H7iHQT6_&`1FueRYj|n{ovo6N9PBt!Fx||M$ttj`kbm2k8_|@vDgBo8SB1{d17ZAz({5-?qke!{K$b%5yk*OCm#lwMH z-G|eAbBZq-lF=wAn%4|=kF@aS6u%OP)Ef;ZIRD4*Pcg+849T@?*RaM$BLAtOp5o!a z?NTRGLp{Y86^S(#iTY(`8l!%s@JX-M)bLF)#iN6SD23B7k2RP+%8vr>w~XykO42<_ zW1V7(PYX$%NxXFkWNNUd_={#L_}*IFWvX~`W1;|s!>W1<+VEgmW^%RmE3&{d6Imo zj;$vuq#g!Fai%ut_5O9=NS*BeZoOX2P&xlUI<2VG3 z-w86qok+yY6J? zV`rwjPn8#^dp|^@A_##km}#c_^w6hHpSRw6XZqA+GWy>Za#A-o*Ph_&#wIdbP*n>a zjK|y^?yxhT(ufh==_lo!Dle>E;Mu1(_~h#^nbcEGJZ$ z+T)7TPeRf5|MI!VdH?cNKDzZ4+j|F?fGIR|S%DKh*Xgu2Aa*N5ia3yHBw!-BubjNj zZr|~Xa62uTb!v~kg*V>1@nK5F^kB-$$_j(QGNaMx*g7E(N4h^&B>%UQBI3Mr=?X7z zUgFNqJt{HQpIqmajZOCMZ}V$CBhg9-QP^+hYz=qWo=vE|o5~sRv<1TsMT!kTAd{MB{(ORcaz*F6Idv?B=82448#K$dS(=mD`SfgaXcy(K`bHSm^iLZ z3Xt3o6$nD!wCq?wR9cV&vCNbUghG^n8MIa5;_52zJ^v!3 z(TGtn*4NJS%*AzPlQGl9A_o)CV^Ek;xD!45z!Yl9{*umbc$Od}180)l&dHy(ZRc%Y zybU6?LZextm^Kx6N4xwmeZY)FX#I-_B@HDB!3pGQ&e^3Iexo>rHw4dPyKGMBPLNKz z$@jtWJ5alzsHb3kYLB+X$#}xn))oj1_l8_~?lObHV~oe6e^w>tKjxk4P*#b0Jms5P zH>uqi+_}vM*WTpa*Iwu5XP;85&|pmKhN_-3WS>SARi&%TuI{a_D$HBzSEdXaiEiC& zZ&{%ut=gQW0KwWIQ#cfMJf+U>ajDO5)dF>+Z;6BvO<0R1Wq*nD7cOw~-Y?AR8aE>* zr&ra8K!}0lmf5r_MU&{69JVdWJ_UjO*^Icd43hst(Q{~~GgektNhy&87RitzlA4-Q z1EoQ19Bt;PS^GnwfGRz4&WC~@Z-39X2Yaj$c>CIQZoGP(kH7eweQPKQgp{+Fj*->^ zb;#kZL@67m)=riD_(CKA0000gO1W00004b3#c}2nYxW zdZgXgFbngSdJ^%m!Ep$a#bVG7w zVRUJ4ZXi@?ZDjyWZ*CwmG$2N0VjwawGBqGDG&(dgIyEsMP)#61MO67Ls!#v`AOJ~3 zK~#90?7dl#Wyg8v_sh(4&Ry!(UR~Au-e_!%?#9v$fFu?YAh-Y|C{hwFakNlY*jC7X zup?$h9>;_pMqx>w2ixPA3CogYYKHQdk|=RT5(ttaL4Y6{JGvXaq4(;lUaD)ayPb0~ z^YcTVd#f57K`AB}HtR#&M%Ase^rK%B%h8V%;==E<^@Bu?n-?_+dylvcAvquHR{YEy62dHmClbK>L)&Ye4l z(FQLbfGCRCwQCp7IkGInd(Xnc0`v3pSZfgxlv4Ee_R`ZWnp1~rNsqW?G}Rr14NPG%GJww=NMVD24f8K^Ye@h zk1#qm#?;gl)6>^kvt|v`(=)W&ZECeDqobqD&CO$sVPs^4IF517arNp|8jU*EIz)sh zGW7P=7#6`uqE-R;#qq zHuDP$r0q7&c|eM>(L_pPV;CD7qqnCk)|0lvok0ZH{X0S=gyxa&vW{E`xqJ;q*N}mw7A6l{2XbTGB!3wv)N>N zdWIxPD3{A@*suZTENPlDKR-{a)kZ1R)k&=tJ9q73XlRHxkG@HxQD@DXHO$S;(Q37c zj0S;nxkP{e01NZ;IBQW#QLEJ$7#Jjq3^Ow`3=R%)?%X+shlgpkTg=YQQ7)Gm9UEn- z(ZE{Ez`y{LlathHHTrt{$ZgL2{5(b*@;oCl5hKIHEG#VG@|-No&{`L5HEi6tk=fZ< zTCFA{BO|O?GfK1BB+F77^*RfSi)`Guk^a6uPM$i&nvoIu`ul0r862HGnC3@`uhf`)q1ebu`s_# zqtV1U*X>VZ4E_E6VJsIH5%J*}=Vloi8fI>8hI*sU=$cVR){JoB{DtBj8>FwlALks+ zW|O7GI`w)3tp)ELN*f{*QLR=O9v&fzA{G`FSX^Ahxu925*QZ!oTp~#l1_uY2otvZG zYBM-A$iTn=Mw>!Eu4ApkM5Y+a(DvcsG5Y&^vCc9zHPxLn`g;2q92`Vx#niQHR4P@n zETdjuBFl1i?%K)q>(|NioN}p5xm=>BRwHev%+AiDv|?~zkjcqOKoQ3Y`}XZ4&n<@! zANf(!W+8$q-qjyD(XPs>tjbTh=$~{0R^_Ky)CVF2#s5W$h0Xf_;GIWnO%%mwtx3}q ztqob05yvq~3BEX|lq6j+??tHgRM@t48xs?kn4g~~iXw!9c%aZ)`nDEDFJBg+f?ZSfEzx!I+3VcZgC% zaZH|P-TNrOc?U{BDYQ1US}o!@LTiIoAYO3JA_6E0ePj$uMTkJF)gVa{j4`11WZnsI27!i*Y zpp+{Jj>1_`TA>w~$b_*Lk9g1p!4afr zpHQpSxc~n9dGXL8W@ly*5qf%h@Gi$W3!+ilptVAj!Z}x5Pf$P{CwMP7=Wx!UjmA4q z6vrTf6Bqgq@Zw351o48_ia3gbZe$r*mZOx$XoVCyX!9JUR9F8Y=u%`NP++vC-l!8t z5k^tym?w^7L;{I$&ZCsVn22(zOsm~4#xv+umgPiA2@#L?9_Ji!908D&5}eJ8wuP~d zlcadZG~xyEo=)?ubr@st-VqgjUoMxh*3xdb(Hi0;roOa<2vjPS@IFYm_DV9}TkEBr zwZa%E9q#WOX_|HCi;j*s?@@sFo;=T}Rx5ZBk|d$sYU8}4lq95SRy>w! z^1er??!WJKZ`D0j-u@i#xDFs{#g(M<)!$oIN!zOYWM!2QtjbSL%*fb=-~Letb>>&+ zJz9kc*hB%Kc?pZU%RLH>%`I^p2!c_Dq*S6~%5y#dN9zJenVz0ysouco0<;%o03~?w zcmiOhSO90Qs>w*^3r&`Oc#IZ3I6b)jwE`v9Z_ya>Jko7RSB6%j8Vsv0^VB?3D2uQY4G9@d~tsdXsq)nZE!AtVXZaQTCE^GLbaz>=&Pq(t^f+96-t41 zF6bFyd=Wtv1S&j>F7!U=ep0TGyFhH4tpM!fBr5(YC=J?#an?GJmn2CF9fLGYgRVOX z{jL?-L@1>TvS*5O4N4gVxq%=X6BT5eE@{!a08=V>2q?T+ab$=ijo^q(L{GJs$V52n zFh-LkQ6Rc#ob{B;WsEk&QH)YL=%9pgmV!}rNRBZEV*+Vux7$=J)#AOdlu9MM4+L5f z`k-@8xm*qeTq$%hR$;yf1fN1rRRJgi(Q$~_@V(OHxx=W?KOn?O)b*wrqr1ifV@x1h zQB0|nU`&J;p|7`(dcDrV!XnL9t9#!MDsKmy?*@xI1oX$lwBbrh!u+WaG`;}yp^u=W zk1Iv5XvNB(m&rvj>)h}cMIadO1)ddt#d#~w6%=m8_rCZDN;HZ>my2tlJmBB8r*vl? z#B{F#5nkzHE|VX#4_Ef(s;tUSN>=r6Reo~vfjk87I7z7hIK+W~Mx$LZnRkJ^4!}w| zEEZi@@s(Dn!n&ta0Nvi%f@lQmoG6FrV9j;ThkGa;yaog^;GHWh{{cXFFGMN|)?^*7 zqqXi@3kw5g08(0a7bx)trD9B!;amfe6zH_AjQ3%IHIYFCthFSi5~;Ox!C+?zQsLPm zrLoQxUJmHku$1xzAd~LmTXoYqg_prPv;@E>qR^^iAqVh< z8B`O;3AwdEuy$%~=(NmxM~6%R2)-Z{8dZ2=0*V50zQ7Ive5t~FqFf&OOB9L-trNT` zJPwa70H?+|M{qcJL`fJg@A2MsJr0qHP+~AzgX93@xeMce-8?NPjK~#g% z7IRPMy{7P_rFcp4-VjF>APL}DDMaNc9p;wcK?y_)0@*_-yq4j;@CBg>#IKmk)Q?`i z-_KtDqX@x|0}WP^0Y#3&hJGSKhyW8{xN<96quyp=?^q{0fI0y7-G2P!ximX^%ShiPexWf1gr9slONB-RYV(-8 z6K!`P?SuyzZa@YdVt^Dz)&jUFSw2nyO1dFP+yFq-ayvWUtXRFJgU3Z7Di9FF7jQFJ z55c3nfEYvt%WMZih0v!!0Ho-LPJ4B6-%dC~7rS>XrNxgOEBMk`mz(xTSsSKrZywZ4Arl5rd!B7QZ(g+%@qvG13ZNY=ov6zPM1HNAg zbeDC@7vt=uco#y_&59#*K?oGCqn|~;JMS@tH8gxBh4-a6rmH|Yj6nfto%leKq~pa| z(MM8@%ZhiQ`(rWC%kOYUXI4O0(TIf5B_-yDs|4bq0uU=aRcb|yhLV-fz2f`g9qEdM zXHtspdlkN1CQ>VpU3u>EkIS>j@;lFp??RYfhfIX`vO_$4=)MjSMhdGz$4jXS0;amR z>a?@toqR_-SI7$9gMW`>K8Sn}VA^^9V0Z6W*`q?Ag3f8t-T5czfk5G1T6v9kzw=6c zUnWjB+Tc6a5uhL)B0vNZ0dXMz%60XYVh#>tu8Q;2vYM{AF1)?3J6@3pMS_rHR0}XD zNl=o5*y8jLO0B|t^bZL+T9s8L3Bp&cxWIFix!>^ zghf`wf_Gx?)w1o30{C_*lB`@jyHC<>t5PdG7+p)V##&FBHHjiqSmrzZNwE5<0#2$@ zcfk+O+p+Wo+y6V)vt@!5$dGhn)NcT7y7LgBj|Ei_rO+3hxa|NaEr{tnQNU8g7hr{9Rt>Bh4>ZZu>;rN4K;UkIq0znh*v-W?Lmnw zN(wzKLc>IKm`{|W^lqI z+d~#Qmd4JVl2U}hQc|8sEF}d!aS7uL+9e@`RhD7@J8#5$|LuKbCD<(NTwMX=loDc~Z7eWkT6p`1Iq8Ozt#)SLlSyqIGWJD&xT7~x+ zD8c&#qa#GmQSN(*$3NfC&YLyHbp-#k@P|3m@n6B20{Te-Ge>oSfwlzXHT+OO`K? zlrm5abd=+LO1s@C^eqAsz`Xkl_zw{EUe}WqpC2h5U}}I8h#^f=LYhQI6ot?h?+g7` z9ZJ%fH|PTV_xr%|xOUnd#SxWC8Dn%eG*N5)pBR)1g2kwum=q%oVj4uURQzrc-=b6w z`B!5PH|ls#0b>+OSp*9>oJ(=m;++Ox!r74cFE{vE z0$CFrq8cdLXtluYw>m!e#CB@Q48}K#xH7*Y>HWu_t5;=JR%KOwTI9#}5ZnN4gkUw6 z5aYjV$1Zm7-p$z97)g@w%=ez*__-6^#j=y|7reL%E#ZS`M0sS{2HOoiT5&ggh}S4? zyNnLre$IP3@(U7DsaDCe6eW({szRiW&$3X-rCFz94BC{*a*va@Eh9xJPq%d|t)dDv z9)lFAbIZM^Z&-m{ajr*8sDPuC3KqSNB~=7*o;=H`_4e}XU;fY8yMGsv5?(xXg0Fn# zZ^-j@(WGD-42z!cKIe_>sR)qKnrfv7FM?4eoJb%e;tOlrjV^PeKt~3xVw`Q0Bo0Wa z^~TieO^hkwoFXYFwAvP}itw9mV&RIe1GMsJv8sn=5?Gs5EHHLBHlzVyoW0r0UY4NSh7g3*0X7{k zn#X8`7P$51TlxGKo@8if5buS*{_CgtyKn#93O!$mh84?@N*7lyZmAq`L@0-9^CEO@ z1pyUB#{;%J(1k}25IjjNl#?85r_dU-=^=>{A{}FW7*$<(54vw)V9zV;$}30z?FpVM zJs>OJuFf;Av|4v!(cgal^4y^0o!1C?BnHIbT!UIqOr9@LE|tlxr&KP792n=Zc^0mv zI`q8bXVds%oL45u7CtdL9y*1PXE{C9Dp{V=%31{xh(iLk_#*tS6I;KMOswpoWqs?6 z#`2LXjR?W0(Xp6o6k06W=S0fmY)Yk+;FKedDr6QGvldXM6qkcXM1mz>$+8x!POLu^ z)_R9l6y7+GSL$sZu8wq)dR_5+6w2r@ku3IwA@1dpSfBuLt#T-HTWe2f=G z+Rm^pc%DT$ya*y)pDmrFVz4e_y$J%S=s8qyu-bU`4r zGAK`o6&Hi?id^L(kywR=#)v8IvuscIz7uEN`F%y0hmvl46w6EL4bP#1o4VO-uy@bx zJn@M~7#_-q%rypj%3Qy44Ja{neUWc{=Lej=u!y+Q3fd8_-mS0$g-d!ljyo1hNqgE7 zmd7ZLklbMegd#~%1*^1H8c}gkF{p?OFYcuYar;qZ$Qn)l@DKlhsMO~3pZ*w?@&;Uy z)Ql38_&`CFU4BkNB9 zZm@0pTE6(jCuua6Xf`}qZn$`Hiq~FyldRq9#+;+v4Y02>Y({xv-Db;hna_UmA=Zrz z;3LCAy}{YDlRW+1L)>=fJv{iK2l&_j>VG54ThuB&G@BVJwrt)oz;FC_U*cc<&i~5P z<(&Q@#}iL{gsq!K`Mv+~E3{iT5$P&PrNo0Dy_ExZ?VxOOMtb{*O~jSi8A{b&UVrr% zfBmgP%+)Psh3CmBQ-m_*#j})(r*MTgBu7h5u3|8y5FzCpS{$Z$4+0Tz!Ro2Xh(sXZ zwM9tjTGz#+#G^#<=8>bEdFvF;r~Kw`{wC$v5K`z_zCWFiBB4VuAi@z93GEi696gno zwQI+?bZL@S)}bN_IB2eBHq|Oxv48lAhhH4Vw(gwA%Vbi8fT)K3LW-Be`s-jFPf+1f9 z&E3%?m=Szjcxyn5?UIL(GZYt|RFB5tl*g)~S`>mIL%Sw1Id|>Z#jpM9FVSkZXf$)C zr|X=ayw1yqk8^!`wp#|(yJbSDx^eso3WZS)@i`+ygA5GzaPIs$GKru_+zy5yU$oa2 z1iE7cFh#p9x9!=+fqU*?0bWBUwoe@e{L=JAKcFOe=tWT z9_t+z6+DuPZf=u;ZusV^^I%n0WmSIK-3dr%a(KaI{CMU+LsIVTlh_%B@59k=Jh1{k@DnWEyENTVN z5Q~XC;w?%=D4md7hvbS@GbLYY&=cn%c@dYc3-7!Gam10um?D=z#VBG@=TJ^4B^nc1 z?!R{%S(a0;Uu3?KgNj4NAyfdV6WL+IZh0 zj#H{7&6j`q3miXwjOU(tma)NJvX-zopQ9+V=k|Uc_|RJZ;E%q`!rTB+R3%Dc@;v3) zXJ6sS>u*qwG*5i=F2+WB_`|RLN1C~!QBSG2IQrx1C6q)s+afkSXi9i#fNFzk zqH&aTs9|r#peZ4)jbRa_f=~(d@|7(@BqGF@P&Owr4rMIP*YVyGN0owv#dz;&Hk!nV zP+wXEacEsszmbkxE#yBS0Z1DKiB`0wm$olsRF1eN>(_1KtFvfE?-^3`GRyx z9I9}sCQ&SS7h`QG(TXplbp;VaIgXjRa)m$p#?!R(5?il3u;#Y=?E zGU7-Pi6>4BX}cZZu?qV%D4mdJma;L3Z=y}u-$De$c&zuJib_k8vSDRRE(7G_0h!5|RBm~l1X3g*pjvt%gufF~* zh6idq`RPyc@I&|W)OVgE&lKKfxNL@(et4emKYNHc>1WU09X$BJ9_mXCjvhIW%QE7U zA+_`rfXHLGs#7sYpW))NF!H6e9v3bW< z8qFqC*ROTwrS}VST$NQ>l~ws^kPqk~=-46+E_dwOw1b;=?WUBJnV1;o+@*8OG^fdx zpo}3;n`q}T-7V8pr|GHm zaPZ!}Y}_=6(skypUgh+W6P&r)AWlk@%L#Yv-AS1SCSJ#;ExU=5l$TyQ#F;Z^$TCf- zRHARFkGt>Q$C}YWvV5M2iHp4Y+A;FnL9FmnrWEy4RSA*zpe#-ds02X~8^!J&+qmQQ z4b*CeTt&Qf`VvPEpGK^von>s^xPeC=+0TYe3D$c02OeT(N%O|*r?@h44XrfJltVr`#2o-5Xv|9#EOrvR7Txc+UwaI)Nlr~gL z6@~_TdHmB4({43*>7^GL8rj0mUAF-l-}tMiX)XyPYx=nD_FGuDp+>D7bA93(&%Jtr znI^bgGt}S9{+q{WwyX3GY-Pue9n8*O;+5B)X7W;o^A#$wV)LdA?Ad!0J++)>dxpys zbq*i7K)Y>-Oh}COu8lE@JkJ7Hr`U{3EK23veDfozgi!zhAOJ~3K~yeoz2znb2m7ec zU+2`}mpF8EhD?uA?a|zO-vMslvxW8R%Y5!nHg4$W?z{IgJUqbM!Xn3xo#XWBX|g;8XBil%@!=0Y z%$lKo<`xoq^&lk z1a985gWGSrm2#=Xv18|X_2mnNXC?+Rv{Yy;dX^Tzi$SD;m$3gxq8!?#+W@sG`J@^p4HQ_J6{w+3a+`^vyHxnfh&mVe$@pGs7<$v@A z`pUw(VfggN@8X_&_j2moEYCjsR#B8dc=Cx)vVOG2;UkBbnqFf6T^}JTS6=O zp|4ismYa8T^X^?Fv0-lZ8gIOQl&e=}LvjUC%IFn;MWeSKB#*mDP)Hm<|@C8nn4c>UG4SX^+V zEz8JYAD{T-18m%6=zmJ|;jqg133@sJml(2TV!rgb@$M;@1!SwVZT9+V#JRjoaH!6H+f16vk&9G2U zXlE4=g%Qo#HEZ~p&wh@H%M*O#KYSzPyRCA8Rauo)S(Oi%R4gI(*oa~8t$X>{1CLOj zuXAN`lEHxiHgDP(Dh;7gUSlvJRH(CQ5(=$M*mMd_+DMtXa-FHm*N8COdHY>#TE7`o zs4v|Um-zTc9;8>7nHj$hx#E^v?x3f42x}5jF&wygANTLx&-m$ajvqZmsnkPX?*MTW zEY$CooY+ki?0%!5TLI?Aqj>5_+uYoc&LVT8A%dx>+Y?5@yW+18_jpV^)0SUUf|&e@1w6)!sRJ0 zYw*RNeVFZA`#5#{WlkSI&FJ7Jc5J>Ga)Xvm9dU>x!$=keg%oHKnH*?=w3xbbjn`f| z%;Lfv_ujLQTX%0kT${dXiG}HFJpa9CnYp|`b3WzumyYo2%WpC>y@0olc551~=J=Ig z`ZOEXCXAnZl{G_#|N1w6mBGFtaGFw5BGM*UGNpvZaCzb^S-QyWx9&oVpal#bUBo9Z zZ*a669&zH#RSw*9kVo#{$=aGlHy6m825-yE&&^@82J1)r86B!JGj$2_7Q?kFJ2!4- z;`|lF<@EG4*tljb7f)TI(acaL0v#ht9xCo^bCy_cPSri%}68 z6T*$W4e{V)=pxrd7r80oGnAyv&0Oa7S6)T(HlKRzUiRF+nWW@!xo7g?70#SIjcw-~ zJA8uYzV{->j-E$s6|G8WgtcRReBsGY;@V9nE?i*W?YHo=Pd zjewQ}irV}dLmX=k9K3_iKKUr^_B@v^Tx8EJH}T}-A0vqs;k+Yq9^YZ4B&xLcBN$Z}yx9p;QJJ)%89#fS z6GzUFX!wo)@>dub=qbV%ExB!zW-UZ{5(9m)!R3}T3wbzNAQ6WVTZH5ZF0*9qoLZ%i zSSO_EA_wo;$A*zHsyZQ2hTHDg&DI?oX}0Pi4@xPVQsm;9SzI7(wYY89b{b2IL~)E$ zVIPK`Y7gadnMSiov(>`BTVaJ&S(Q~;m7hZSz&Qj;6g`zHk3RG$Fa7W(-gx~Dys=0~ z2EY^(awi^DD}zRN$%OX~>jdQ$b2GEF=Ub#YdnlM{B{-MV2bb62LgcJVUa=S+@YB-Iul`R-1y@07QZfso}I-0si~ z%~-B50#j4hv34_~BZGY7sizpfG=ZkVwJTF3M$=fDlOB`#WSmElE{QPGgptq;W zTq~tsuVd2|hhKS~XTJLq5)W|V_!4_=-^IvqKka%06UD4s+sn7U{WOPPe;uUCk=Ne> zq7X{ZsRV<@;JOKi%cWc)iX7)J9O2^GkVA0p(gi;CsS4Y-Z{XzdGbj-ni*+X2^DNFa z@xH<3OH)iWVwRR#R1!m^b3Xpqhlxy+|L6byBU&wZ`Q?m%{7?QFTQ+Uw#L3g7trYJ% zWjPIqrM@&zeQA#VzAD{R(@vfIBH?32#Xy{j`M>`3X}<9IBRu}Z$9Vj6pW=tF9N}-j z_Zm~vbEJ(rK5w&TWPn(NnW-yi9F-(uYJvjCCh8 zxX6VJDZzqCLbzM2ol+@BOk6roU(aLUGM@V8cd67yIdJfH@-(HKR7l%%y!!GaA{yh` z*!ip6eD9;(4e-)-lL*IaFCF5|!^er^h|?#J@ySo$$%eIKOiVP{wsn+&0mHGsd6846 zE|aD3{12W-D1q-q>rO+9*z9iHc^J}NlZ%iH|<*Z!Pl!-Hv|O$C<^Q?0}tIIxG2ksAN}fBs)EzMm*rV(3>s!$S{z zgs=X|Us0EITme$0lZbqI;v(Yqvt`o`UOMy?FTZk{yYIV)V{e`Wv83rdufO&z)pCVerOM2; zi~QUdeu>TNH*joz2E3zWQZ8LQ%?m$#nJi5?rr+f8`}Q$BRO51^QREO629d%uk+mF+ zr8c!{LfUNN(k8FH@+xr>l5*Rv1s?wBz2Gg?auu7knY=W|wk^Hbjh;&vFEiDMh)caF zDO0V)EG^D+?9HR})+#9A@ZmXr_x|5w*RHM1%^k3%TekAli?5+n zjFSjOgz*YR4yuXK!r)*Zqr;<|JbD)I9M`U2BZ)Oz*N-xBb(VIk&As>C$I+uFQ3^_x zGU$-&}R9bW`o||8cV4v@*qN~N$VVGp7ZLfuX6Cf0oJbF!iBR_ zOiau$GqZqo9#I-GZ+`{_QUPBA4N1~w*Y+{)-g`f_o?%M81B{Fe^2*CU#QG)?Jt)eE z&u|WuifOeR&X%ZF`iYdMT7iQH_c1$tmW>(BAr_nu?#?j78@Zx8?Uzxe`x^v7T0=$jKP%`H%?^)NO# z#N^~8gZ*o$R1$h>6|P>H3CV?#qf)6*DutwMI!$|@;Wow~DiFpfib9D)?MbtY6DLkE zJ3CAJYK!0g=l_bVT}DMM28R_7f9xaFde+ht$Bgxrn5RaiTtTUn$QT5{=3&FS@P8>b zuoDy!Zyve8*)x~;_$T(WbN6~q9>2`^g*MhEw6n0YvSLNzd@;mGp^FGTJw4oU$9`_v zy^~T@rfhNs2MyNF5fnEgw>fzZ-iOWFwDNc#p;Ur4ZH%_8Su?=p$qU?c)6IlE2f$j- z_8r?fIdzIW&w~-5*aN~8yM!wROG`^cQN;B047pvT+LNPnivtJl;?kvSTpGWM&8yUU zHKS|$Id|?nc?MCGASwnap|r-jHlt(xOio@5;UiK5Nm*K|vwr`!Yg zPk-~ev?Ad-=wGXqGC$wo$lNtlZb;i<)32q)6rqh?k$io_z756P zRw|c3K~GPWk>L&O+y5a(*Y;AY^-wM=;>1x(`eV%h+|( z2x~?*ux0BQvvYG?96w7dZPC2i=G5u4Y~MW0t4A|N*Nsu@ALR!x{3&^sVZFloc6SdP z=N-lvO64-v+9G_^;UtuGP+Aq?c%4lEJC(myWmQ&XRepNq0}_Hz<}OMioH(q{@!I3? zEVrczBq7ckSosYj1M;(pz8^pZ?GjIOP!m=Y>|5@zmda zhjpVH85>#8zWsagk>>eBhge!#!sa>0Po7}v>NR@%`x#p^!k#;B<<*miIezv8nf0K< zBKZDXpeWg>Oi{O`C>5$CBs>bCB&I|-2>~1;2JbYgAP)B&yo)>T*v-HH_h04W#R+z7 z9OPGi;fVlx@{Cd`B1HbGqE{4Nl@S&80}w!|gr}Z*fz4aS*}iQDd+)r1`#;>vx4->; zj-NaYIxaShS`K}IVuxkr5K*id8{x4}-pv~?o#TZcehU>RJo?y!7~@ddhdl>~(Fz

hVudtqNcN^Y1WweTsYU+Ra@LeVQl=B`UpwOmwJdg2QNo6@~Q? z4ui*{Ob>tZZ@=zgHgH@@**u3RZRQ=MI}VVPJHNS6}Wwrv|9{_uzS z_R~*s__gDV4wd-%&)tjGIibpn!HWwdU4^96Fuu0fbT3DgB`!s*+pvy%@860@f=2Vo z>nE6=4aub{GFTOoF;P;KxALGOgaj{TM9PR5L}Ik6 zAj+YX&{N&OO}k5MT-T4%9<6hZ9h;=y1SbxMA$Kt^9XiDKpL>nmS20mcqv5Ic)Iwsu z(s&}g#Ap@a#D-8p??8myMr66hilLQxLK<(V%7Y}Ja~wHN#dsaOrIrj&ijiW=Ko#;L zd{La(VerKq0HO5m{yX=w=Z?*M^KYK#napVrf z#Q4ru=3V_J7!yQOt!iq$F>`ZED5H7cp}QFzs`2N4{xz;o&2sDQ8+qj8`_WO36G4f_ zO9;WqoW(0&fOlQ&Wg_g@v4bZ+_w)SeSHHrE6DP@Ro8SHYf5~#GScfr!jx+}j-pRW4 z8+huk|0CD0FQH1qVM9tWILhp}X(#1@O*rScdi65LjvwXPHA|cf({z?IXD;%I`*tzZ zpK##5yE%9M3RBmY5W@Z)N-3fktaX%=5ngie8kdVRaPZ*=eKjh%%(2$*@@Q zi0%t}|LO?q9a@#}u9vq?UE}my6ZG{Ne)(5_k-P4>mE&){NoNON!Qm7*Rn)UrX&?kd z)Ove~l9v9oO1G|HcS{o9D^ zCn*`M%L%FBF6<vWS7}bFr6pRfDS&Xs9p~|9rKf>X|FL8Nt zHh_JT5SL0Mu?|37DN-Ubz~NA;AOupv3FO{lbVOi?mtLm=UcLF2`a3?@O+$2$=sGZt+8QI;_o`;Ev@bYTE zJHp{{^t;Coj_^a)A~Q6$A31a|@;_WiE4Wac@aAI{0DychR^ z0L29m^G_D4ZdK;Vv*hwE|L^-|=4W~P-6QrfC*adN!nuxm_ANDLV}ls5~a`* zFCnd{H9{gOVqnjnz4UsPH{LjhHJh->1)QtWAqVfQv5v2O^~>CG=N|s=6(7U?7nvouf6^%cig_0ZF{z}a6DwO@y>J4 zo%gbN{bnwly2xOD!0z3<8C>e2b2(#W!qn6xk9_e#PMtZ$yYC%i?bIacM2q7W&r^7h zu}LjjpelQR<+!{6CI#uBjD?2}Y4B!v0EaW4Jk99!`Xrg5DEf59JIpQgNUU=9+<89# z*u(6;eFrm_FY(zgKFr!pI~kvB;r&T4V|bus8ufzsl0*zy)(+kWKgTWGr}*BJ-{A0} zm$-20EYs8D+`fGyzdrhFQf3&K5d7>ZIeg+c2exi!&t21qvApxnySUQRFJP`a;DLwl z<`+NzHFxc~g98WeTh=fb5K_U*rmTX(O+v?dtz;oWym;pp@1b3fsM z2mU4B`=c-N^2@K2rU`f6wV%KK!4L4JkJt^g$CT~2tY^?`bMHO-*uVcie*NpGIeGFt zB5Mhmz6}yH3MoZYNI)qtiSl3mSAWc_hhO6GYp;+YJbK^(l6717)i3`J>>@LBm)W%C zb2#AgT*2IeW#hI<-h1ywO23Hr9g5QP+vm^lr+@Y+8#e!lg~4eC17*-pNt0<*9bzo1 zFh3};3xe}iOoNZ9MxiJji@iQuw(el0xyo)YH#<%+AlU|KL6jzxopJ(5J9w$$pV%N@F z*|c^GfAu#%B%PQfZQn-P8Drztl(n=uaPaf&x#Ko|^fy1C*A=WCrz|b+ow&fGj~(R6 zZ-0kZ55LKUi*tA^h|=x%`G1DK(Ftu-)2oD_iEMhX&Z<+)%hu1#e{Khxg zamzH%KmTjGg9Wzk+Qrt^6mP$G2JgFgF%*)rIOt;%0m*_gZ2E}xxH3n|7BjO0j$dBn z;m1BltJC7pD{ltxk@OG>j3mJ$DCfE7{ubvJQeJ#}6QxPweI5oy&U|ly_C$xd#d*4e z-tc+#L2D6IS=6BM6f|hi;O2&1yJ_qHAf}=zto*9DnMQ=8$Br<)cAC5Hxr3dz-a=Uv z96NH9#f3#e6XEXI>krtza|ieB+sE4V8+iBVQBIvcjj@Kpm)vppog94dAoGj!9Dd_9 z)G9OcbIi@mVU6Y1UAJ=I-S@EnzI~Ks$x~1Lilax5Vy%$p1Jah^jyv}7!2W$~-M)pB z=g;uwi6dN^pRE=6is7ZQ^36IFFtY63b0^!j@8Bmt{g0$sJB-zaf;<1?zy9ypv~44I z-+MoM@3@CI-h7>lmoH+Ilul=iGiS~*IW@(T-+Ge!_ua?KFCXUJBc~agSi_-L53^>? z8g9F74}*d5?vZ0SS28v>#-`0%c=MfixOC|PdERC7#&taU=)*kp@WX7~vYp@j=2?FJ zi(k+$3Y>t)fe5qnecBV#+_(RJwrt+W`EzGjT%1D{&Yqj$kw-tr_y4o+*t(0c^0LlKj`w>>u+%Hz4!8!uRg)v zyY}+x;a53+@;wk`!-fsqd+(;nKKcLvAOJ~3K~z4z@Wn5)fBylpti^x)*+22Z3on!B zib!zb2a=c#r;xgs<4nC}SX|rEH3|e8*EG<$yK5l0JHg!>2$JB^xVt;S-QAtwuEByk z0YY$xaC@Kk?DO6Ej~_fe*Qz;3)v6jbYKsyQtr|<_m)3c{I^o{){Ppg9>yr`v+n-v$ zep~x&n4~(l4Qb)GM>@#aEtTN?3sH28z2$kfzQ_5#s*&e`V32{z?c`(*wKa|R*_!d; z&m%uMwp)>jPDe37?nzZj0x>`uFbRKr%s{a?sW zLRcIS27aGI_|E(Fak7`4`;`V)rcXk*#2Y!K%WP2Or>?G=+7!BXxLSY~rud`kQ_IU4 z-2QZ=EF1Y{w?9sxU1bTm|30{+>lqw~^G-cJzJ1w7eEa@mrb{-uJ5FqNd=4zrcK+Av zaX{pW%55ELBEef*c6Nc*aL=92t!Igzo53_br{D0sPq(OwiuU{a<<3A4u~Z8euXoc~ z`~%PopvQ~Cr#k25>MUWOfX2@=l+;;59~6#5MtUAVpS*7;6l-;%N5%MPvi*AB?)%-@ zTKoOxtM?tMvH4p-kU@{&#MawJoX2ZSA%xbEl^R3mm*M_hw*b_&alKrGi5%=hNtfFs z6MD#8jm}vgU2~rQbV50Ed&q9TSEfmlHmpS=%UmPdz=fA0Urmmgaj3A-SXb(?Q`K_4Rww4-4B2p8x3 z$CSO_KF2rJ8J~4qqn_7d>m8!Ub2b$*zZ<1F-j6(Us>q7H?t5hu#i&}pS2Jo`P+#QW=f1T)Cle9OhW?+YXI z2&c<=Kv`=!+ihNsZK$gYcjte*^}DWxmLP(vw(0`HNPV-M@$vZlj&bBN;)_xz(kzdg z=pO&xzXcn%ZjMicVK_cb>JAS>H7!Q5uL`zzWXSS!ne4kBSzmo~-71Iv`XKT-{~<1& z&N6rMWI+_ZroZ2G7cqwXc6@qG%zb-d$nia-vHXlb)_{S}HtjSqZAknu2`hZP4V&X} z$giB!HCa6Ij@2kVMt3PWD$O!ITYp<%>y_DVq3R(!mYz@X*CS~+;KHkYpNWn9DQf1<{nrLHmb!B26nKXfHV48n_V&{EI2LnlL1gP0$8vD<6LOT z+*Xi{|r=&qeb*?h(#N$Ag<^*&D*#l~*45O!1F+FNP1Ow0T;06dO(<3>a zL!*2mC>qyu!%jzCPWB67WtC;JgFXG*9GdsK3dSyD0eq^FuD>SYg;;;C_L$gFU-cYn=7`@!m z;5Z=7YS=Tmun+7uBD-bKT|!2nYwqyn0g5Q7U77iVXeOZgFO8r}C=A6uK6;3^h18is z|7B*9Lu48K<<$)}le$Q*Y+7j4nYNVn_#P1{k_i`eCAy<}(4n28aL7h++J~AKRAx+B^M? zFu7`@A2(KuX{dw+1s^_WFqH4z5%I8|B5trjDg{w6hgk3ej!dkMgPzF(`B&4;sr+Jc zS_--O*|-979_vYZ;KP}!O^+ubf5acm5N=d0;q!4mR6I=yT|8>Jz!RNGjrtzZ9w5*wG-*S7Eu;VF3iR;UaqE3e{1nfoGh2DSMS!(pGh{8rdb{F*VI&gMqn)5>es|XS-hFUysRq2Rst~E#*l|zwQHH%1x@|7 zK4D;WH@dC@x5X@3yhZjbZ(xE8g!Qv-nE)*5IRdsq<)T;}FoZHO{)m6cJbBtw5tWKy znt@VSqbMa0s|-I2GbFPM(UvpOJd0b-(V{Q!26Eode}JCthSjvl)ZOz=FWl`yS=Ov1 zjWLDQf0^16&=~IToM3H7S#BsnIM)6%i`h1RpPXh|Aev2#_;jgyuLnvDKTYj^xv=*e zHZiHEl^6}2R}4qyq>aKiP`OyJMGK}IthG|9iq;t~AhKbRRS|p+DucI{*Y%vQBDsr7 zeRc2&W9)kr4dCdfVcz-ck5fTNbX7n-rPnqub?IR=qM_6HD*7F5yBM+?D~LGbOCdA^ zWCbH9h1ii%YBM-&Yy(iG5!^0M4$ad_mcl0U4Rp4^8rywWwrb1+zovy}4`$IMfvE~6 z=S3ELyHLSl-|miBazo$rrv{uxgo;~HF1rL_f@_$aGUmPP&+o5+`&LrpZW$C2Pi zW~Kj;TZX_I7BGh;SVnpX1p`H#-FWb-ref0_Ke<@97-$5Gc}P5M?i!+p2&ehD?_~yS9eS~>;?v;v9pPdst*D|u8!ls z>FHOJLHZ`hha8pN)s?%B9KHZ(#lQ0$Tx6jg8N3c6$>)wFmi#dN zI>F6o3n-W+b5TS!l1s#>0C3j~I2cO&>WY_&>KSZT%fdXiRluDudZ)wru7DPZlGMgJ zM_8HA`8m9=LLRsvSc3-J0(U7$AJhOAl8+ef9Wc?)WAMoRbpT?&5qq`Ql{)JlD{xg@WmX8iBQ6;wN4{>g5~35faIdwp2ZcF(vcA3S%{DJQE-HO`obTg zITO>#SyZiqiu-AD)$-(DV$q+q>I&2?A~?fK!i&r!WQy?*jnGcOmW>efD0=a>546;v z_YL^BUOB#Om`$DO(_AY}LKfe^Xl0Hnorq!AG!n8p1{b0LP^6e#YRpb^k;rJFe=UV* zk4t!y3K>051-}s!<`?2PTBJ})wt`)%rUr(FFDSS2y`L|7aF--@u8Lu;5N|J^hPalj z1IARxg6O1hRcU6T__jDbo2*jY8ET3zzihOGP{}A?K=W&Pgxz!q0i^T@kvoH4Ldv8< zk!||ex}rsha1rRk6?xI($39(03W~xiB-LU;0CeH*`0jg=vP#tuMhh`yYfN?V>GTU2 zln-j^LbBkc)DsVqU_7FVp(Xf+NJ?@XE6Uq*nNRSTJ^nlId=^UO)5~m7H83AVN$WV6 zkR?3ftA0?Pw!AsC+Z|q>W~y0c?gzw5OdOSmJ}y-U8FX*zO>db0fgVM z)6S-zykaD$$B$&Dry0?B63w<9isf(x2A~uXYNjNdMFwKuB*d%Twd=%-~@*3m|?mTq9k8bp3?Wed=Vv+9YZd) zN_}OFV-i?GBj#7jm?(i|WYJdQI&NMp$Q&Rp^s1QG7NY+-j|`zA?pk;qb5yiprPPUU zll^brWJoC7E0ci;P6~CzJuwkFe!g*l=fMTxbv6MRaQFmJg;hH-ZLqfh-UP+faL$pMzxe|pHy#%_j zHFt78^qVH}K?d`1@cp!?-D~WQesBIn(f)l+q@m*uF3^zwo;z zad_y9xh-w4BxzHZOSd{P23 zbI=;l5hByn@s6y>5!Uo#{0!*a*T;WOIND%`%dLt3=t%e z*O0dZ8fd?9jBY-)ZBxRgo0r+y3Z)Ea_6n?swTej5Zp2B|P99{m-x_67F+MdFV6rkx zNwd^-cFd7!66c_;DJ<9>@KNSQ>fRMa?e8wk=sfX`l@~h`B)+x(hV$_RYg+Sp=sBFb}tA9>r*DM~n9NtLGNCFKV=pMQXBN>+2QR{L?2*;XO+O_SmWl?9FL z49;`!x)~X1QcZOxouNY;9=-C(D>CLRjlS%t z_PNi+&v2Kr7aC@d3mLZWDxnqLSen>%ku~CI0G@wqrT1OaNhN@)cdfYEEtf51 zDN*K<6m#Sk@H>wF@!Fp*9>xQu)NN8CiV=b}LL|D?n@UzRkG8H{%i-q_t}Ddo=Ytc{ zOulV5?|!s8+j?pxtgfDy!teI~aPB8Rndum_EgLSs-KgtV{@$0g&2o@x9X>>_I> zp(i_VsNL~q#-9%h{G%qN5cXQ`I97}7I%NIW!Kx%8*ssR)(hP1gmXaij5jWE`ktUtX z-__h|T{_=+mVd2G{&w*EtKqB$|J)g~yq7Uj`*$3xZmmO{k^FUeZewNj?v+PbtYfqA zHyw|kIJ>I5K6&HP8c~n!R}b2;?mQ_y{|OGJbTlc-+UhqEmtD+~wsu%Ov*iOq!Kdv0 zT0#Exih1|KI=`aR<2&_&Zs)_h8>T8rw-$_if7(wx8w(|)YYXRzfHZ<}C>Fo3@R&IO zI;0|SDY`>FYLgMja0}#j%25jjOq7t<5N(~R6Rf`0c+(aBJ;og{_(+ArG&*d#8?;I* z#O^G3_490U%Dn5<6SWAj0jo@o!wN#J#cJQB=5!)%r(ve`VZN~gr%sWtdl#Y5wR&od zM39FLFUW!ZTB?mK$4+t+L zCmlT3&=)NRAD;FW)C|r09e{*E#vdY+GzG=0g$$eDme+bQJ7&&141Ln%83;U@YgCY6 z7Hw}EG<=ry605F`+ClK6In@522O zs7X&Ky5hlqr~Xu4te9K!&*L47zO@C*ruVhdpmcut0bbSWL&458b*OUbfT8>5Ky~XT z;Cp?cjK}Nk@~=C})<-a;EL=1}=T7hiYntE4N7#E%)&INLazE zYbws~3fy(A0GGwo&UR66i?>mcEw7VOyj9H`C!x_qi97BjT4}*B4)#9F#B{pgdVXm2 zd*l*dN*dK%7JWmWtSXMwG~_eHapnZVWQ4uQt1Oz*rZ5WT{lO*Dtmy z?PWXKb-I2iRn988L9p0C>PyqSEKE3HZ9)zdBU!J%S8lOin?{}K_E%!w*rfE}2)`+_ zI_+XrxNHW?c4Nuvu_P*I_U%%(J5vZ_UqHIjL1!wB>m%3%Ch5F$AiO7`)gOCh96%3c zvwqI72Z8(z>oAwtrEP@|8vTqD&xnN9Xrs#S6-s$RZKjV%JEQFVj>P`H_&uSr=Ge;6 zz-XMjyx+#HZ`c4cJ9tE>=0vs#dp~b38# z#9`XB#`Uc#ePg`qa63E>Nsvh8zHbk7AKnvBaIvwV+w^F8&+-`gZfuz!$wSWs;rh00 zDtsKPnA8X40JCAfPy*jJQu*m-F#QXr9Cdz=zm`WLRI8 zyHC|@(ac-k+NmoT(apl*p3oMrtT@SarQMYdS`OZONZ11cK}--c@?R)}VNb+{auV&K zj^na!r~^0)3>~vavuwG;Iuff)vS3;&T>9#K(Yoevg_vpJo?vo*zfCXmL+R(-eEqxc zUbJf@RdQp92*Mm?xTKJMs21o>x$$eHw_QLUVMskBCgQ#VtPyxPA42%5<>7=RZb@ft ziqK-W)|X_wHU0MJ_d+yHN+#h#493G+DvaI?V_zAlTeFT_+>SrT!wkTr>RxA_zS;bH@_C6T##E8^rKh=qtSrHu)x+JEnhaqL#HwsBni*}#2(Ki3lcj*(>e`GL@RX` zsA-?F%ziwfH?6U-&P;Rqc>qMX;xd9GTy1q)J>L5m&o3u(jeOef@R4LTa$fqnKANiU zR_D50?ShZr{yN=BFv;d{x$a@fW(eRu{P_8JpoKNScJWkRhr94A?p2?^7ViX!yYj4l z*1<+Air%sGxEYQu{37?ba^$WpGKLJL43ct>liDcw0o|N=m*&6B_Sdhh z^P0ZPmAB_7oxD~KEGjxeQBFYsvUjPfp<3~?0rA3Ybnw!?>1xCCGFI`(X4UUvh8!7J zV}k`Z;EHGucAiOhYdZhzUwo5DPqi3X)wfb0ss!N5((Lp=i^`_=09F=*BA&&=JAJ#o zMQ!7Q^>*hn^*^g#n4NCtmLo0tvNT{Pr@(K0Xfm;6rgo-yOmf`n%Pi`uRcQw=UI9#S zzg-^ex0huyqM0{XsO?*!6hWsS0Jj?bku|zls&_IG@oULt*fKpal%=z2BPoy|x`RR_pjWN%Wy_k+&772^YKT1|!BG;NvaF+6 zrG_Hytch$;_-HgFQipOwc#xcdZxZntW>$~AY9S=v)>>2gnp~k5^O9}CH)`Njlr-?E zr%m^sOpnjfQ4 z-*BoBaxGf94}aS`5Qe!uIj1SyOU8(6UhD~&=x(e$d-Hv5Z`n#UR#;xu3j!>o1SD*n z-S5!OZkhU8trELg#%&?pg8>ufpc#bMAIj2ZvLb(0SO7*H zc6|SQ)8T`6)DiwZnou$?rRkUX9`huNS#)vdtc7F#L<`GWof&~`9GA04sPpIPy{p9Q z&(qh3r}j>FzjeDjq3K=rJNey#un)uZGXz2PsYbOj8O@`b3@VoR_zV*`m9uX0hZLHi z$;qVDNP=YMn`gx@tD+RMWH-mtEbN;$92~sL3@Rvm=mmFqxj$@NM~8>$qfL9ZMj}iS zgXcXAyhpXI6;73(7L8yvmG4w;eZMYRlX%fk0b7Y}K13*(%mLr~|+#z!0f zmlW+}Vbr(saW&C3D2Ei0t=l2ouD0mLXTBn@|2%X3KOas1Sl;3NUZ^HgY9S>Jh>Fj3 z|06kx!sT^NKR&SJ`!_gkgiKvN5wFzT*WJ>rZ2kd=ZQx)Dw3MR?gb1oxyvO+@7myTB zwKWLLa>er@k??XA@=uEF=uY-}_APs1qeQdj!ikDbfmB7nmN|MEd&uu{C@o}OkTQi% z>fn$iBUWN@Wk`PtFbilwDb}tMPt_Ym9WM}-l;9;^+#%M;Hek8X919>$fj@sQuXKFC zaKx7SWvc~u%`-ugOuL;Wmmv22kf&>ivg~35_Mig5utP5WD)VI$PRD zKJ0Mvn}K!8cz+Y|PoK`f{;FKd*(S=j-C|K(MykECuy&9Bi z-eo02P8o^^iDY_zC)mcu{fv<&plZT1_*l@y2jmG=1JZ3%Uu?VboQQt0l(S4pA6Z8o z2(H0`h6wq=+ID&N1H58&+FjUP@Bt#~G-4|Fg76ID6A}|ly1=K?@#I4q=zVA~^-hfW zVY|}gD`Z<*k`6kZ9oK^v-D#2K6606kZJCEb(ae4b_Awk7U_5qO8Js@z_wiK+)$T{% zHrrxZI!i#gye`)W$-oqjWQ?5P_#-0~j>|?d>oQpMRI?(ZT1gUXqYpEc|9nLdu9vm# z2*OtgmuyDDwFQR5(azhVSbA~2oP-$HyU&p3cwfmi!8hmpz*pXJgmMVEOz9rZ6lNOi zo$ODJ&vNk(*C(TAfZSg^~w~9Kg3j| z8|l71&N=&)W&v2|e`!+rD&>GA>~!<)D94mX7n7I|5|1w6PQFL7TFtxVd$k7SYV5jt ziOS-41rXd=r6Cj`Xwn?wY(z;>h8T(*lUVe&{HFx`{0e&wzAuRl zJ|oK0*+L5LvsCww>{?>fq^+sCV?^jTM5>A06z)>tGG%wFF+)FG_!LqWy=3Del;O{X zLfrYtNo=`VEHl3O#x*e4A*t&Qzf7XlFn`O+D56J=G|E*jjlq^kEQa>H#y0OIg^a=HJDTH8q2myhihjD>yg-kQ# zR~#Ii66;kQ{Ho&bbD{mv>1IfC4$o)HAWTfl2-t@IT+tM9ldPeUw<-k{{9w=e{5${4 zfawA)28A#t5?LT46~4#|8=A*oTD?DD_G;}1N$&q*P51II%f1*?-;F z2pmj0i(QEj8prWqB?7M0_NcU9tZvw@Ao;G`&)!`lxi8m2U5*db zGeSa9%M4xi`D&pl1|?X`n%RUQd9d6leWkE5;!vb2#NvLSb{v4lt1>i$+PGXonz|xV z*kG)Xd0bG^prRzXnRt8+(lmdTyM$P-?9Qd8iGv27mK$Rn{8C-qXHT=pwY%S@&`A5bQ=Q+}S46w7-r(V} z%i#>a?<}1DG0wSwpcmJi$~`rDou!o#`dER$huO$Y5cL5s31vwy3%QTVUO$T)&kVQd7J8il&F`r-WTLy^YEWA zJ@Dl~c~c;1w@VJu|G_g9mAnPpB7lJz>=l6^u3h3xlc8aWL~6cUzN11>;_AuEjnRgA zR36bjfSu7#e6R$Wio*TdV|@{P~N9`WsGXTJe850;Aozt z8FhUHmBM>?v8iz0#q)cyl%gk$(I`QB*^ehjR^FyWwS-*=mjZ?I3Z^@g9!3Iw48!k& zNn%FTh6=O_mIluyB{KDjRW!xAX=YHXAMqz#OK2k#j{0)xcR zDK9JoaZi&S`0|G%>oX7@*?DEwb`5{IL`*9nDZ=oYMfmU>$PQ;9w zVh#Uug@6xmH4+q{;;egSR(Sv2I`+Dm36qGfA&!+nEliFV4GovPh zubfxDn<#x-vw2g)esyRWnw4R>&eeNf+KGh@@j5520nwkbD+Gj#Q4K{u>~_Y9Z!xf= zw8jI1yK#6x%@1W*$rc2GIn{l-QBi9lZEz&2o~bvCJ)zblu6(^>`6x!9_bIIEWR6Nd z3A+u)p3_!XH)CRjvYyS_ZXJwCNQEbll<)+*cJE`fe*7m#2W|gAcGScSK%;3nK_DYK z?>r;{F~T<+(NmC=%zbxHi`3P4Wi322arK<##NF{xMZPbwQJ3y-7)F!Qoa|TG3AcU+ z6e-|l2>0|vy>4p2>arbDO$~})l$ngb02j!J!GMF{l8YEnrKZ30uby#q-D?#5O-a&; z$}r-L;(4X;)DI2x{5oA!GR^$6g_og{K@-+ax3~X%8L!b1Y}!s&_MZsgA2zn-2#;DQ zQIL3C*2z5-|w(To?d=pA+v z3fR%}!3vZ(B$cpaSwgwrbf#9c1>(&uR?;doi+w_BPgqPcEqSZ>;TmjW4DHHdgsz>=?NSv1-`mSKJfZiy|;@_1sm z9ciuT|1Q`$Q%!r`_ZX|G#Z@ov{x~BtbuwzeA;y&$RvB0+h+HG?qgix3bt<)7K_b>K zX}Ls)zv~`GLN4LHy)!k2oudt3LSCNxjAxHsAUAU|$9JAk)uO`9AE&oABQJc?tO|c^ z;h+C^`ZDo9n55=ohE_)Pla+ke6G&Sm6+gk-9ygB56PMne#|2s z{~MM9&^O6?KcMuTJYcb`NbIcd`9y@z%fBCnO7{&f%_{%H%BxRvw)Pb*-)7nOz@sdFWNmx;%9=Kz1VXm7QCUOmvl#N$j4=e`P3v53wZ|>ZLC{SDX zXYknm^t(TUlAU0|>Q!?5e>VyK;hmnO%rk{x3&tuseGjP^;W))KTj}!PI$et9n8R!0 zn%?X@m(D(lS>7UNlgF_I(dc&T0s~UKKYk$pP~Artoq6DG_fJp`K(|wddcIq7OB^*8 zj$rwLCBi@JotdBi9*bNa+S<<^E7qA_^L9iTIgq^j&ocEWe{dro>wa;CPtd16&Jwn_yad#JX?t z_g%WPCY9RO4bR)rt#^P?8;>@3*2h|{<32g=S4;d}?+E&u`GM2Dtt>X3H)a_hg~0lk=e zL#5IbI;;OI8VFcxp){Ik!bL5JSul(;S06x6)jl&I8MGx}yoZmvI*mi^*Io3!j zj6l4yeopZB{w;Nf{4IC?+2j#D()*X*-uT4n>4IY+P8Bb-)b~}ew(Axpk@lt|$J<1V z&S84?9xxy6+xw{%D!8EYf;&S_#y*$R52}N*zexb9-_vw_2u#>Vv7uu6I-PDL+0!68 z<(y&K`f2|J9q_h$*8lSlfL`sk!;kQ}@RHhN*wi~~_jLW<58j?bLG;6ft6&z|5~zx0 zV|K*tS8gVT>Qdv6?5Sc#^JlnSUcZ^uiQIOk_&&3-k{|OW*?v%i#No3?AZQY&*1N8O zG7UyH7xv9OVR*8r^zCkyQPh#)n9Og+>7SweT57qA&FTuY zvXc>=*{c8D{=S${B4r8~(Zct6w1rwHqQ&IQVivH*o3ctFZ8j(Unq2A3BI#%dw)KEG zhn-!@Ue6PDFbhSa3NR2GM?evD%G@3eO9}Ah|bLj12#^5ULZYvq+GC=su_+#ugLbo@eedW zkSa;gxMtm#@QLns+FEjdFXkZB|NU@>Vg%ZHItr}9!BR&Z8=N$C$yzc~@H+00Vz=JG zW+ifOM}KZ$#kQb-{+jkvcjClJsC*Pub2+~)0zF(yO zKaltbv@aaDp~;ahKnE5KPV@r`4}oE7mk%?R3i>9X+5?xE7Q$^q8gbDm$rvX!XjT@3 zEY^f`BZQP}!!QM^&=lh&&|=0IsfUmZyweKe%)|MmZq(;Bv)W7qc|M~Od|um1q-KzY zKU%MQo8Txw^AXGm`2XERJUg9`?cuNmm-p=---$4C6)<^lxje``nAfaWF1THQ2CGlJ zsD`)46QNyIj?kQ1M-*zb>+1LUC-}vY(E5L)6RTMmJF}4Oq*e>#m{1q=&Lzj}DT8kU z4BpV7AB$q<`a&1i@XVy3@}ly81|am#aQHzF&onj($AdDxc)2syqnUSkbpmiYu$5DB z`2}S=P%6x?Y&mMQTV77_gP?;=V;CtlDHlBRf+!+iZjCTR2)-Mr>Wc-@7z+&to0+4X zJ#hd`f0~B}mQkXy!z~p7dr(AcR`2UIF3ZT2!v7a9hy@+A?EnMi33PHSkkI>@&yz%5 z7I{z4mwP{xh#|8NtiST0zTvcQV2FG>*eicyfe|ARO&*JIj4a4oJ~NZN7!b9zIb+xr zs%|kudw9$3{@~TH*K_qE{Lhfo&IKc#in>~OWGr%7hxZI>K&c3pg!vnndl$Z8E^J>% zz88~c`-@ED5scoI9E=gj`W(r|AIE#hf||mHjrE`uuq^;a3=0PJSiTkW1CXBvtSXUKAR(ghi*Q4h8a#EzdG|IDnGEoWW ztztyPu{L*A&p}VH03-kHqB18e%=Cb(^*FHIV2$`>9M;l-15~R>fCj-lR+3?L#Tq^B0yB`ziTYpVao!^Zlt>4#oa)H{C-{# zPZFiOx8tI<_kDe^qFDUv3O(&iL*C*Xk%a^keFerPAlEXB?+$iKD@xuR3w^lPCLZ?| zF1y-?e4b!;R7R8hFF=<^x{yif#sh zN9U8DL}PY#D3+>p2ihBtWPi|ZGD+ORW+*67t44>b)Gm%Tps^QOOV=K;4?~AwhOnLB zCGwSITI7))5qm&;(2-Svs&U{%>OL>14#9f+{2klBZ?WC>pIM@Kj6n_Q|90{*hzTByl(!Sd$2!3=W%qg zCV2l_`)55EQRMaK4CFrho@43a#Jv|v9{w|gr`-3+_bP63ip?Ym{uVk3ai!N!WXA6d zVK_|sVf$NWAq#5L9Ijeb%INk@Q`FFMM^|&GlTddt9+Kff2=Y8-~7B(&w zg{2A<1C?RUe&t!|_7Py~zESdhDI~j^izpPl-KU^ku03cr?vco0s@BRh?zuz-MA!K| zD;xP7;0g;nCJNp!*tm*@7Xn079jHL29+Eg8ct2-_PxAQIVQ< zm)m%8`rW=!=bHmm65TT0rORg~gIv6VqmPZb4k!CERyoeQzYx(h-}5Rf&)c~>wvP}7 zbd9XmI~u(`5<#iA$w{RmrYA25+>zEt{LWDdO{**mr7o)qlT%9Xhd8YNj0L=6{>}$< z-EU$a9^ymZUfr#knN0;DmnMRNbPd>n3?+0-n;u>FWuaBl5Blc(TDM(OOET$jML$!&@m)L89Zuzep z8?!{b60}Mu!bU`BKLn}|Rbnlln6nOqON?H!N?>_|xW5n2sp>7)6ncbT9qC41nsjXs z?KwVlh2e1)aG$AGYdTC*&^A%05JjSCy(-Xi!T)bVh3jbqfx@}paN8IJE{4cK%;G6J zODY_;?cQ#ow|i8-e|D$l_u*yI+Ule=@U@CIE=qJub>UdYss@>0fB7X#jW?7B@}9#j z+iCz_mT~YQQsNOo$KoP9g?3}EslS8c#j#lo7Chq+$EfmU&ei=! z@h_r0X7Be*V68`QF7RIi=tQ+ju>2fB%p3^>1v%gQ*Kw9>40adKy-C2imew78ry|b` zXIg1C&9R`U+dxgS)fk&}b7r$B;Uc(c)3Lf$ni9Eas(HKuLo@w8{!g82C29(FL-(43 z^g8cbl8y*iZMoRFNBd+*O|4wgTeo~NE0=3SfBVZ?-=rn~cX>xXZ&I|8scL39b7zvY z*bzcC2ziKw?l81#a%eA+H*)5!TO$&&;Y}fs;JE~Bjg*Z}cjvvtj-%}w(^O82lU2&$s)Muptv!9?XF^2M)rl0_BM*}q(vzSd2pJ``b1#OO zvY)B8D^Q72*~cmJ_}lS3!N0GEp`E2z!eJT0&fo2VAu&8u>D=|2^Z9fMxy7E$oVKg_7|FuW@XxW@RB&01)sMRkSBtu``p#OieQ<=v;y z2=(b)L5bEMLyM9Hg_T|GTU{m9h+8H?8VW0IU#g(2;mg_7@OgXcMF{zzb6qiep+x zf`gqErNUEoKiDGirxS8(?tdRiBlCq`s6`bGxovWXBV2W_muzhU5V48d(?|7O z#ml7L7feX4*d7};hCXO75I=~Otlh*v9BrWh2X{KApayjx5TkKI5|0!JKbDe;C5`VnxQ#nZ95^n zH^u&#jWHbjMO1`pHaFK_e(MEO9~T(|rZVusN1}%w?Jk(LIRC6-n_JdDx?Trdx0HB< zaU__|<|HifzXwT6X+W4V#M!+TUp*~2xtunY6is11%cp-O++34BOz9_ROUR^AVXF0O zu_ns`equY@@fqa`_x4?c`;fDAp15{76x+x2UoZPe*;dO14@UtpdU!Q6tWroE)8lZvA!U^}Gj?=EXOpRVRpFUE%*MR@428Z}VWva?P+BOHI z%F=(=JDO0;j*$ujj#?(cUbGDF8D+#rz*#%37ZZS(fj?q>5yE|(qrx1g+1h|&<^X!) z2O4)#f%*j^M`|i29&TvQF^1rj#bTruzzZQCF@v)nxG;MCSP<$eTOM?ow|0h_=O~ka zT3#L~#{Y&tN8f$Uu)ebt9QIz4SF^rhi!01nBnemrXdwp&s$;qQeT6Ek)v3=eS`1gY zAf5=I5Jr1MnW#iF%F}DzfzX80D^`cLFBf^5eh7MNqcKf~B67yF-mb!AyRBgOk8F9T zR>qFv9ToQ-UoZ@V1XFu59R-43YUtg*I7puKE711AYB@`ie3R^h#pfaJMcm9_P;65YVe8)Nyn3qAs8vc1)?1i5M!Y?cy@kGAr1?#!aM9&0ckLJy zmysP$_*j;*IiHR5M<0R=$1<5~&nv)S55K@NGhj3Xk?(V_e-QC?`aCe80;O?#gg1b8e zcXxsX8{9S6?Q_oke!=w9Q&qidueH}(#}ebz>qrix8Tf*NYOY2;WYx&zWA|eUW3P&U z!1A9hK@navZr2RUGO2By(4r#l*^S3lMMh!SdIbCp!KLGPKPDSpqDoP{>kqX1U%EJE z=<7BxHA5mvs>vx8V*?%7Mz(~KcfK|(Pea!ie|kUN56*p}XJZVK{>3Daw!jQSfgPQ| zAD^+4(EU1v^ZbtTo>txn{tQ2IB(SXW|0`j+3r?V1NS87Fd7!I=PQYcq`nx9p#qAZ? z20YH+zeZ)`^-R~BN$cw9n3$V~)F+yLA@?b3Ohi z00d_K-9M(ynb8%lk1Qn-8k}a_ivf&jfzP$?oJ!%($EV@#-X1X9%r#Q0b*7NYLeG@o z>HNLbIWw=W;R@nfxz-gk7n?*uKjNL$gU74?bk-vZ;ZTr}kzK4Gi688Br4Na;YYYws zBjYo&vj=bo2409QUEh2g7|iV5W4wSMPhu(sLArUAEDYUR~7s@ zzquYu&Jhkw{DOVWz>m2VxL&|Ij4GWL4ExX!c**2!DB<>gru>ogwQ#g2q~4u?t9maH z5=E_cMO+I!2^~koA35W8A|5R8(G1R9Wsymu6nI-)IP={ht1-$yIGRiLHs<@kk{k%2 zXf{8xbkx?qq9@585QW-PDbutg6nKJ*C-Kc`MIkwS3Lo)yo`I~=XPtLj`!taebg=f68zTs&VCwpdbZVq z=Yj``H9_+6PLDJax98Lw=47y!-~9>^Id-j^t=0HrWY<1+V{r%D2UhdoHI)7JXyk*W z(G8%)DCrzq?8)dypRKm#Y4<)0fR%~%U_UPN-JUmSAB3Bt3-nTD7&f)iSGK*QfuSqs zhYc(MyCS?FF8ri#X=#ayMowT#xuKQK%QX-=B>XWxir*{=!1=?$+@H?cQ+X~Ok#0t;b-xvE_gORMn z&(5@N>?=O!_bX3*DBoln=k^EoMtHxy^0+lN7Q{&?s9GDzh5!HEc)@6#h4f?NuJz-U z`(W-45wOoR=`p^)Uj{04wo9}&OLVr6=H>qJKK)0(rDZ2l?24|=83-g^!n%qu-42>>xVh-OWaHx- zU(BTS?cO5dgZ`3;X~tHF8~4pW$N`qvY9#HxtTReZDWvp|&D_y1nPO=z&EaquUax;< zc>y=5$#x@8`y0?*GrD>?-~lsf9d5M&4{V-?zp(#dTTzb?oBP-G{}#zL%%*wH?tQmA ztT6=dF51A@aeg5Z`29@shSW78K@7&SqT^9r1bat{AnE2|NV0DEF&VWDsxXRb_7`na z$ff*EL<2&(+P?*4A>uIo#R9@`<1c-S6Q3c#k?wFzDG3D<_rEpd0W8#Wb7yNVP8f zrVOTRHea*8-`aB>F@9SzW@Tmlp=&YwUIESJ9pk-ASqM%oZ?pnD_Y}8aCW@`SdY$cq zzI%9B5}rP(1$*OdPN#S5+A|F1(6*|188y65+Fo~(r@DYCy2o~=>vWM)BFMbC%C+I! z{rdmi{rt0Drpb=@AzPDRZ9ckT%#NOy*pM$d0wcmhMmQkuGBH^K!A3F%v>07J2}8y`T6EaFQQn zN!}?#L&U=G*QV6miy5mbd)G7%$$kUduTwL+w)sg6c zo3p$99&aB%p72+!2+HVkwUP_^Tx^%{g&qs098IqfP3sK5UTekZ4C=XpQPp|$iiK7F z*Ce>HbKd5K${(_o{&~r_Kwx);Z+TEbr{`XCT_GVW5nvrLwBT@< z?Z8p9vxk39=&wPQnv*x^E;C9s99^)-$W#+vQ>=7s5eIDK2FEuZ>G&S`#!iWqW);@E zn~3opOTBaK;qP9=r8}HQe}-@*d!(ZJw0(};#j*7wvqC{75IoH?P|?*e)whi~8Cl@I zXWpKN{^)|xavt()a~~xd#mHoY<{xBi#zR(Q^d^(zns~&-hmkaSCV*WwnMOH@a;(-! zAGw;hniW{eKs0*hvm_tlg8eFwXv$#3L^)-et;P4XP)WT_u4>1y$d!an{An*ya#v<= z^#XY@BP3_}VmW0BLI~B+WFU>$od006r~tP;nYMj!RW6rO7U&?WDx=dh`4QVwjn)sM zW<|mjbqn+B4u-8n7l4#V-Q;Q)iiJ4FL+x&J1pG49!8JF=AKV{|`d$WqPd3m*SYhTl zC}sp@)hJ{uylZ(-P?;(sRI0VSU&m-{TGsu&U&U|uU7G%{I&>UJA0}%vMDD9iWo(1R zHDd`4(?`$^f5ZneY*?n2{~%N^x?Qg`*l{}+v3bOa0}L@BJt`}fN=+Z2bP1Nvr_u?k zld-chk|h7(Q=%BuN@yETL{Ywejb^^tZ#4cpI2O+mX*zOYNceIDsE3@4baIsRsN~Pk~jmIhtVn(~7dLl9C3-Z}OG32ITZveOoT=a5zfw>#mZZ0T@<&eCW zX$!#po*4k^Sr1Sdu=Qro51aUH>hnpBeRh7pdcQw||3f9S0>W4uLp47)<3_TSh;c`k zX@=WO0<-d))RZ-*@cEg#3TywaK1(U*N++8V2b`g1x5Tl#@8U|Wdn-DtQIrPJNJXmX zQ&33N?^B!lmJbXaL+8C5wm$C!qa2mQop+M#Z-h<|3cj;qW$)w!vAQqh6cq3QC`0PU z1YYIFwZTrL>$n3OOj|Ad;ff@`1A60Ug#RR;ES9S`{c-TT*ce;Q^0>PptcSTbsWvtJ z_9HWs7pTc4ismRMh&GMnTK^zct5;J+QS`i>I|1z2|8S^EtV(RSvhybbjQ;;l`V()+ zUw<5kr2Imp@DI&MA1QfU)K|e#XX5UjdMlvEqN~4@;)9%?$So{9++}Ow*j;8JWpt}t z`4*2is8fdIjs`B;mz=&$z-q4~w#(y*Wpk2DH8gVSkIu=yL9Wy6LWI;v{kJ`>FGANy zcxb)eF9EKyGMpgG`l+yU6lc?pzTI8&Kdp`js|VPz0w8zq@1a`5#hKXC%RYO#6!u%~ zsgUu)eZ$qAnS5S9*4icUr&7Mr2e9&{GaG|0x8Bayo3r~0Oo3FRkO?+Am&vX0hb!2? zCqXX9j9+@y&R07^%TTujZLk>P9YYF!sK(_R z{z6}2-Tc!0S5Uxa6Ov)hNurL*2ruPaR<;*wX@k_6CYXO5hW3)UYSCwx30s@$6 zhMkvfR3+d$1`akZA#Nd4Tv6%t{7qUicp3u*>3WtTzQJ_j3mbFS+ZLKD&Nq~bzPapd zV{?D|m|B5*sAK}Jo3TZ_8-daV+v~dp<(u6VW0RK_2e@&wc%ktUMS{%STr(gA%CU9e z_ixg8!H2J%UY8{c$2UbJZyA8lvmo!*lmLtT<%{#%KMsD+vz>Nuo|U_M$}J94Qpxc+ zzV1Y;(YMU#bf(*hR)E~tEZ?poI|i2FrRmy_7Il15SG$oUM5yz7?a(z&aLY{?ymLj7bkskq<=mRv#4u}6fc!FKWYz1q`lQgd!bJ_W ze&brVW@{v8*h(I`Ta{@ITQ^rkC`X!!XWd5`J@?7lx9Tn0LhiSJuKsQ=5^vNKA$!7u zN9jdxx3SVKok%sqcG67O&0%;U0wp@{Ub)1HI|!fZ9yi$U!96)D63eL?UUPT!j}UyK zv5UW{gqWJbaLS@mnQT&CHtQ}o!;kJ#CgJWsSa$r=CR|qvuS^p!5eBiGf)g99K&x{8 zwAd6i8*yL?HJGjdMjVQOW|0n_$szghODU=(8q-Yw8|lt%O8p#JQ(39Z!dAr>d9kdL zMcZcQOIlL2D8^-RF+X+9ie_IOnoFBz{s`7ZTh5MdV!P#9mfl=r`<;9$CvBW*Nbc2R&$@1)D8Yg!#|W%RF6?FT5NaaAEVg9sHuPA@t(v2 z#X-*acW*{PgOc@wsTmAj?(>*f(YGpR zykJ{sEP{svaq0YxQcBsFEES%!Zt12VOb02=Pyw&+WD{yJv2}?<7Q8mgkPNCEF}Grk zsX-bx9#EICkqU^E15&J;MsXk(P??6b^H!10Z|>>T16aB z9B@o(RBCpKTo5e}GjQ=oKv~W3#%E=00MRLAEv%VgL8f3#%F*w?%7j%gmTNapRhyy^ zhISxwIV59D-}a%pISy9CNs5&7{(XPCzIeT0s8f1hjw2;(|a5G7hYAPud-K^ z&nyPHn$`g-%Y?(7Sq)jdTI^0xTt%X=(7XAPA!LSuBv&fb&7_W6Z!4TUA~wj720um- z(z=<2Mx78dPLaoe^RI#7QBu5|vtxgvewW6;i_taR-;OeFZYuel9KsB#>(_=gMjQ38@ws@ZN%OYCp#A!j~Tr zpSzneT$qs^4euY*M1RceU^^ncDQ--dF*Kt7SMlww-bnu6l~RnV6Fh##p!R4T;Kf)Ho>7zI-VRem%=#+l22OkE85xuJmg zkTs-6JizTmih|>@AggaLJ$H_Pd_^*`^HB(QQjN#+4P4pM9HXnrU9Y!GQ8ii~r63vT zlNM{9sJT-5glxSH-*(F%*gO|NW89g{m<@XC?i^!CXOU2hvZF&+l5tG7IU-rvJhGC{ zbolRef2{j&k0;#s1D5Sl@`$Rg_iPp$P<~x}{%#tgQ@Z#A^Psa`PZ{UcGhX$Iac{eTH|09CpW8bmWEJZPc9M_3wH{ zY$=!(u&*?}cVpB^1%*sX6cks~^IU3GgQpy?WBI#rMzsG|Te@2L_XtV^X6weCjNiC@ zPj&A67S`v=y&mjm`VjJVPXi~-)xWxfRA$UN7sKk#x7nZZIAk|Rhc|mZh}X(ysDCAcILG3RCRW@`e6lL|C!$`czh?2jDePz1-M5N<@{fa!aqIA1L*LbT3|!_OWLi z4Y_?u4+k z9U4j(BBn_Z(5`F!LC}DYW)#JT3TB}mt(FiZCoYQXAuN>{ui^{WWTQYMhnjOmdYRd4guK0_s89pIkD+WV7LFl4^9N>TkbZBe|O&3G^pPNF< zp#Rj`!K0T;_~Cl&2jFSCD3{$`ZhYh4hl|&x%0KDduC1r75qFtCF-!=<0y{2+pMFIT zF|l<_ntML*xU0-zYn0oyf@{s<#J&vJUSVVlY)Mc)@Wxrzx-PS>@4h1FQ8fCWIK0n2 z4ye#N@4buqt46I+d|T5g-7aQct%0=Wgb)Q7@s|5S(t{zRwAdcR_r!LEV$vjZaANh< zee&qQDJs*g!h_UNm3w(Pu%mMSBo^%SUBP2bC=iYL`URSs}Y&^CS+BwpnkJG;{~3VcJ3%M+0HaE@vEQ$#Y-qbk$5TXq+F+*6rk zJsx&%M(Dfiv+T6m?_bn6W8|0I2xdYb(d^dEEq9li zOxM2}^X-IGmF=HG8xHHCVoISd5!c>0dzb=W79rr5I}ZG2pH-CqE@8lEfd^#=&Ef^e zpH_K3p5i|;1&qg>{qNVntL+XHr_!)(zR&1RJ@@iVM#ehrPLu|@I_eC(sAi*Rgi7RH zdJ+uQ#5p8pqdA43F-}a-7LfjaN&b2c%a1oo-p8PiLhL zW*Lq+-pj`smjn0tuio8~C9(ReRJS%|gZCxNpbkMn7MA2KD|z4Nm0hEOulbtds{cJ) zZnAgf!Kin8K~hdh->aZtoj!*A>OVAJ&b`pkUAtz)p_acVP|)q`qS!GkQId19aIyV| zCcWv&jd>V_sPuzwx%4No3z;u5gAWOkfL*zSST&c3zU`f!;z^&8H&ur ztxEJ-M~aD=)zK3PFsf2y$*;nak_wAt*l(Lng$qv1(dwKsem(dYSpPh*5HCDz(jDZ+ zo9hUBDrQ;-ILY2Fm?UenH6LnK@U&RGJl#<`#W>XY0ov~E#Pq-rsT@{lW`-zcS1 z%KlvW&n1*YMcO$+^QxewkMx(1mbnpBA9>!v*Je&bE+^fY`%1&Cp-(JkLD%%_PI&lX zzciCVMsb0<-zep4r1RIBbU>L>(S$kiaK@v6)Laa$Q6eVu;w__y!f0S9QmZBpz1``e z@gh!^XzDb~@r8kbky&8aV0S%jbB^GFEgj4trl3HJC)^lWuFl3KBrI8XblJ_N==!!x zC)jKPJ6AQ3Re*3`K*nU;EtR6vz<`1WBX&m|BBw?bMcx3kiQLG^Br0!-Aw7oVLM9m7 zOT1mHswuv>3RGZ8NY{0Q#JXxAmQLxo;;_*)+on$5TXR|YT=fz0Y>RUCXFw%J00@F~ zlz2kRl`z$wf0OJ;8VoxuT%sK2Z~|AxZ>JwYW7lMs_;}5>)1wKd1$NJ^9~U#a8BS~} zv7|FB_++?zHesuLN_(^Sa!A0R#z(h>mb~X5XG_ecia&Sksk*)UV=SXa58E(Rt8!vT zBzI_-ydYk44t}z9aDM28?gXZ61@^c}<(N6~|GWVF8uX?{p~*;>sT+PAZ2K@BHcHiM z#hW&)EMM>DV`OaieR#gu2}G4H*{jyBT!K1$|M!{48A$*4ktt+hzBzr=s|`BP?9`3J zMQ^$v=Fz}3^G7rF)Y$tP;&4msN3u0hF!JRp@O`Y;!rl7&vlLDCf zC$x@3Z_OK{WUcjIRKY*vJl6*@zhN$cs>vc#J?-F=!IMg@pOMdnq9Jt9A}A&%?>OHt zE|t`45;XyPycC8l>Wnmn8`aQ7}LAW5%P#iQyyJP zz^N#4EDipAV+4E6yR^F7NSsLfOG)VNQDHY^qjb;(UCXeq6Lra>M&4oedZzbL(dcE( zMd)cq;xDR9g1a|P1L}8g>DHxTd~r<4f+Nlu)?u|;9hiz>k;KFZP=gVHf6OB`D_-K5 zOZz}EZK|9?-a~(gNk1V%@NPp2Wuyw}#Qe9?HT|vhfYN1r$St&yFmQfASYKa+ao0OG z;;o{mVwJ^X+W8`rm9WGY`Ri%*4W<3utp<}Skb|`a zJp@|YGz2js@op4_hr_H~Vl~{r{_jwb8xG+%B?6-z`~9Gnvk%HWEqEsHaDRj(2^_?E z-(y`hdgD!=kCu#X7u7+Cf%rt2%F;?UAHz-(@LRa+nyLL1b;u-qnY|YkrYG`FgkOhY z(=m<}4IMhXznpxRMM%;=YNw8RAcK%5F9(-~MW>b(8}Hl4W8Uu7wfyVrk!F{=-jozs zFTx+y%ipDNcrejA%B`D&5W1bQ9mLBB^|*t6Y_RRYw&rzurgcdsO_Ge|1=BE@nTL|p z>Ug-gpD1On_ggHM{^zVT<}tPn-{FqL3N9jGVjB$8;FLZ;?b;UvhT9hRcK{^j8e`bslaom4Ooo(Gg4E@W z7OsMO1HlG*u2tDOGbY{rV~tjA?$7u}$kW9M9=ffTNsI(stSy!?mW_R(h~Uh;%wb+> zbMh9)&B+HMeI0v)l7(qr&tJ$xP`lrf0raRAJAoJItt!u6XbCy=ZYDoBlutKrkLHFZUQTjtv)lxOgxBFDpf(Od}1`Ahu62gFd z#Qe$mQ?b(aQRcXhq!uKQeSgi^=e*74FhJ!C*7L-fSF%walZdaaAjwIj2An*FVek75uL_qT(;tkQx`Uvf(i`Jg$<>p|WeDqTJGh+6x zt5oSVp7y+^Zi#C2db<@Sm=nmKrsEfrcSzvrTp$i9Nt)PaKTnGGg~*A^abvWywr4y~ z&=2s}@5jGiq4*pZrvvU)L|ID8;luc~1@Q$2-mxt^A zmEP&AE4WRgbO5x_;wv9Bf zzyQ7&*84Ei3KzF*&oCjjoGw^g-2cAP_@Fr52xRW=uGx1|?evS3D(bo?%neOlU7e8c zj`W2%@0ZYGVfr+XKL8jjHRzhM6l;vS#Yz_nk|;UwkxQ&Bfu9zwICO)d4|57Qw|ThS zkjP=G^BeeD+w+9AjG~XuR@GkwOLA~Mg2E~!G<|l)@Tb-3uRe1iG&ucJL=uzVWBm0i z;!F7wk?t1o6cNpKD^Nb!^?=SXo!|Sr`E+>&geSSvCd^QuiyIoxvifayS81y zfEP!TYNCN)>(t5w%EHtX#>_R(|Af@8Iwnv4Hz`vVRZMQB{ykEBqm(gk2q;Svyi?l{}-46PODN*?9>-6GpGMAG|@G09wW zqxcT;zxvpP_{9fOUquP;qt5f~X+eSaB2H+xEFn7w$0XoC0px@Da!U9m+gPI+=*(zb zOR!~THpzg`OlBjv{^Up&x+$p4>?i1XJUQI^v^n2-cN8!`|IIp>dqZ*kx2vfJCC>7& z<#WneGuevU!_~JCFZ6qG^^+SrV;DW_4AF)p`oLrF2SrsI=}bMmO;!+{5|Nu*BLgRR zt;-^%pzr!%AxU#n@B6`DqY0V-*wdh|%ea=7R=lqJkjv8g)>@&)UH7c=KK-D|@Co0a zah6t*dzUkN>xj5^xRug`8;_r)x1OnF(UTWp);gU?sy(xT@T&!TuKE_aH2m4mg{y4r z`~zxsKO7%vfrY~3d$vc41))-`C%f8ch0@5*PAKRaqSe^fT&ex^;MFrgqn_`4JddSU zjje7a^mnW@&)mfMdw%Z&Uy)gnz{Alu%s!uyb~muk^$<<@($*)W)8!g~5Y8qj=qCQx zxoB=@FcJd^=}SXfok|l&$NfL}f|lPI85MZH4-kPNj2I)Xsc7ba*vqaPHWDKK0Rkst z3)_y!>MwN}o;*tqS66xGlU_A$yL-vzx?vS+is&M1JoRzD=-0{luS8R!yu(r>Pt)|Z zbykmDUwYrr$XSP_?&fn);)pE@d{Q;ipZC->Y^1dnt1@b}{CMYB;I)-+FYzTLp*YK8kU4p;65^yJLV_EZ=|KSYve z^ps?>FeyT5AQ4ArmFWb=`-iEMP6Uc8&uBGHjfFygvBxWEaADLg0b846*M`ab?#$ub zD-!7W08FYqiE_n3vE+nl8y2fPrqEPY|y3e0Cq;kns)*fu$8!3xgV>k6bi3 zx78}*udi<`$bG{lxV1HQ8hraipm#of?~2ht5t$-^=nEX^O8|9J{gdx>7m5k z@fR-XyG~%kEI7wCQ&(4W=A&M=DLuT!;b1aT9tj1Rm7RU!ZjvxJxk1(Grd0S1nwIMJ z)`RAgC0E80W!ql>jt>{dYX`zIhg=-qtz-gZ_ybON5X%8OzN=~Up zH4FdB?_0T)em3<5cBC&==1Wls9}hFVzf>PpDkgy>fMGbCx?Cd%yWixAK4_h|WFnCa z%MuufKhlUJ6WS_f;eVY%XXX9CvNsS`*oH(=Er+wTs=eMlC2@Vdqr!J%g$x!Hc)n}J zHEK<>EId9p9sC60dZsrud|%oAG-u%{)D@phLSzYg#TQH4C_5OGX>!U7BE|fw@>Ar; z4DKTX8LE81wA=FtDagPxfuYOm`ev+f&0ggTv>b2^J^uUw5o7AsRyH!JJuvAKf26$}4f6 z*OUVRTr1`a$qU3EuQMsT;AQ*+pRe2Clhq6iie^zC;=D@?N&FBAf<2iqV^ddK{A1dX z6rIoGj}e8~%ULNZwk6b7N0*m0QCTun1|lsgIwu_Z>M_a&zYArXFDtjyudxrHvI7qqg zmrE?mEW9?jy`Djh(qC@hF5i)rh3}Ey|Bx6-LEy)S!I%G{wJYKg#mmKkrPucJHZkXH z)=PKehSaOhkWa4-0-ME<)gw>{hSZ9DzmZc=oIww>=%9mXl6E5wxxY?{M@68j&Q_Ld z*Qjr^=ZA>Agw;8PC@*e;%NJ-{qt~1rAEAq{!<@CBM)M|4!Y0kk$_LL6sTz47do<;Z zWKk=gQ&fYNc0R%8`9wv|$-k}y{=+$`#`Yt5gD7htfLBI``E1%8BwEn?8=d0HASOs@ zeiS#lC5cy^yde+qwe^?K8`FU`rZlAHf{5f=WQZVunlM+ZO=J}s6)rWrMC%}^k@4;%IGIiXof@_IVTZ|EgeU^ zS7bJ#({4+p9Pmc#>-W;;{7&9;nQSdygoQ!14v#G>1`_clhLbN^GqJVITG{druCK(A zjZtDp_Muc&Si7}`&(~d3l!r=T@$OKVkwI3a$K=1=|5rFJvc`b)8%y=!$Z=IA<(?m@hI5i%WT|;+F)i z=)QJ_HkLou?wSJ6ij3XS`Ni%PKTbwo9=R-ehplFRU5FZj1M)&6yG*eTH(P%qg*2+z ztThK~hiv->v{+H{AhcNY_d0_<9r^CH-;V+KQ!s+f=;{j?DdPnb_soE_uYv$+X=SBi z^j(8kZ1_nO%9Z%w2UbN9T$+>)kJmp!eeQFRw>8y)T4rRVy0t?c`9v=i?gZp12^1NR z=POU%C1XYumk0L*TnZ+70TilPjKnyCY~dWA6x>9!R;nEmTBPi3T7#^LSYa%=62owi zLZ#Bkut`Erw==vQW8mwXlR?y+ZEX89Om&)6X$`>E4nde(Yi^9Pt;V4h94|(9V~4r> zL}AD6cJYd(msknOqFuY7S&0_*`8F22`fFinYc|W*g683jRkW}s%di9pw2(nKbTV4) zaf43x%=dRT8J!X(=xr7Rx+ta?yp+3A!{ML`p3_X>sWYF{K zF*8%D#}|FK{-{}B<5Y~`?G;E3eshuk{QFq&W`|3}Un!+GQn-~>fW`Tr)uJseZPQF{ zYbdB;*S(m{*rb>sMA;$>LSCN+opbas?yaGkQh9KsTUoX7F?n0hhzoR0l@|N@oUU3_ zX?&$p5esr=Qa@d;9e9M8&gZ{0_y;W9{~ocZj~rxeG>Huo2N%qcL zzp%0L4uv5TWYlv12LZP(Dg6Qd9S~6EX97tFcXWJe7n5;8IVVrHOb1L$D55zH&{$?QB#-9>9Gq7$2W&*VY-~$ z*#Lg1(E~)QdTLYPp%+hYbNIc&e7i%hpt>PRyF=v&h^M*d zbBCD@kOBM5D`9IR7a}bWC80$gL#h;A^}|Fcs+~(vemlyvk&|&(zk!$$4^uRE`BDX;_aUAF=;^-p+rUz#_Pj@EF;G$fC$>MAN^s@! zE6yY9f}151H(fv=6{#K)G71|PU-(?U5~xsVgd~y1J^UgMe|T__0J-q1m`_y8*N&z? zDtQENj!m>vY#MZ-A*LeDdZzbT%~eL-X@Y(ab(T|lam0e-#|upN7PukSdm#%Fb`R&< zGeyR)==54OyC+Mkz!1jO>vs$qjl8`A1RwyfDjX^R>&cl=Lk^x8K9rL3!yH z77h*t;QjJ@ot1P}rrYhQa}Y58y0dNq*&1$E8E_8n#S2gWyQk>-cz=wR$NdBV%X1nKg-0OeQh~L71W5aTCt(@!ZVYJEQ&Cr=+xWPFAdO zsZg!D!3lsFI|XK}`R3xhzgnG4VQaztgZcMl9QY)xetH6$T1SI{SpnF-x-qG^l*0%S z1dILON#VQ!$0<+1Ap^i{m4-g(dcuVpUt-g5brAQ7dff6$w`^R?B63pG!i3-)O`D08W`MQcd5c7=$68ynw*?w z7vh~tb3nOW#mP6{?^86u%iY;MP~C-MAO=XZzjuH~VhvFVF^%2yBL;kt+hj_>U@Di8 zqOuckCJ7Gab-x@PpZ{GPOCFS!Xk0P}%zge~{=kX6%@??S1iR(9Iy*2x!ZZc>2T66y z7V8zQ$z27r0kCP4+r#PD~g_x@P%y|KJQNKgLVB@qWD?@v;8nxm;~H0<>gtd%2Xfki-ZER#$lj zDp%_KW{9<_3?vD4rKC$E&2R~_fA-eKzr|lz&1`LQ;4>QeUo$U)%?>RIkg5%a7L)^0 z6$wa8Uc~iR8~vDTdmp%dLEpL)s+VhI+E5GJ{kA36T^S(R;vKWzEP=jhc#$Okwg2}V zr4i%|4LE@ZlX5BM|wV7l~KR5P|ooi0?pkWFuz3d2Rg4QS)342kr?(X!iA)*y7pP~sTSJEtwDB%31HJCMM`tV)02Q>i0Di))igm} z)(lC75TKGlKd0L}6nd~3CN@(`FMu**(6ZEf_v~$INs-Gm$vjL`im5XZi|sKGHn<+X462-Aozgo`F9F6C$QuBv z=Oj|ND}mbFDVkslUDM&mH;x6><&&z7wf?4@OuGz`1WI_d@h?GhVJYajhfV2nf zpKTd+5~p)R(T*XqONQ?f`ysPP-8=O0#6^N!ToBgP=G~x5`mV0<^WL(ZZcn%0^CnhG z3=?elEYa4CDO z8_kJ^IruSsmZ7@!0aY7{><6*@!Wwxp6-lCWw0BtiiZl zz1OCo`4g25kRG{D<&JfxOT$%h_lhvC1W}Zi5<$ZjYHa95^wvdnG9mQ*ijBM@>@VC6 zHow6nTW$U2wBp88GJj~VQ-Ck)`@+Xfenx&a7%cq4yS|yh)G~6^FXxQ1D|Msm(vGkp zILbl)$7(YUB42ugn@QXu@P2WLyxWd%`!;_%m>0u8=jk*^nO}dkCz0%S={3JwkD?%e6r?q zJ1RsvX6NU=tT|vjh<9(HYI>VD`yTLd-?mkM%mEW0bjuYb|I@G zF~xugGP1rUm~<14sk?kC6)z}9;Q-^KNr5k z?+aq2BrxyruLI)2;m=?gEXmGOq#1`kTELQ?Em<9|S)_XqYLZ-We>jPM2F6=I-+!t@ z2xuYs4epRnY}a4=GO%T<>ZMBbh90=`pXirbnqOg}IX%&G)6GFy3F8**eKsPsGjqWU zVg#Ks8S>h?i5T%Q8gMvqnWsPb9nh5+IC!pw2qG2ua}g8@4_=oY^dly26Lyy_f$nlAfM>CW}+Io zb}9esHp|6`#hK2=njn|Y-IO{>8eb`mVex;U$b@_cE<;@QTjSU2rM&J>Ut=vp`rNd_ zvPFKKPle1Yt#JO3jKDR|NlH8OCSD~aVMWF5O!yb!&Jb%&q6jAq*v^8v$WXu6Cv_F| zAHPa+oeckUk?eP8%JaO)g}*;;PHO^lf>e#(no{S*^|@DjM#UNoFu(q{Xotv0yWmYPI9p=m z--^wo|Bl7d)R8Ua7Bp9>2n+?Sg(o0~TmQ8Fv+lX!ieJ|dKTGytm zE>EyT9v>N{b}Z3P$mHVPo;goOYih76hXTIUy!~pSUzaJh+Ma^q-tk0F*cPR9n z^_q-yq7~?0m|`ueNONn%h$xPr)=tL`JfyK4l58bM{7+UT*B32DPg25K&e3MkI?bH? zYY2At&Ma~KPrpN(&V$o0o;K>cHQR*D-$pM=hGzO6bP%#gv)V17PC-6ZnoUp|6T|@x z(~AblX|Jo z?$7TFx}-HPjw$8fgRd_+bPwrocWHz4Z#Zv!=H*kw$gC85u+uNfI&U;@y%D(goYOi6 zZ*cq1JvVORyedXU)s>sH8hrJjzGDb6sQ9sL(mWyKX1MV?X*8s=rH6|K*}U*vO;E>u zJv*mfQs0qIf-6C(#RRUzXlH;xG3W9u~7FS5ryN(~XkHuoply4d!J z=wX976gV{KGknpBJ1DHx7C65@M??v}K}l@=(Z*?>uOpuC=CQ zz#+zl>C<|Pb5`|uZK5FuH@4kIdI`V0*l#gL?z%E&L}8CtI~+X1`4|-k=0{HjF{T~_ zw>MhHh@ruf#@JSV?FCi+ikSA%n!mY(UaV{oKh;iE`S>Nmw|kqdbDQ+jU>t*WcJol9 z-?1;m{?q$W*=ZaK5QqESEo5bB8JVn`V(_^z?v4hv5TYe&+B{gfn$y7?y0nfQhdP}S zSsqkR?e*8iX|cHYiw`~d{rRpV0)qqEEYp*s!OB(k{f?#B?LD8%*2P9|r{Y-kIyhmpxzW8FV`}}^QR~3SOGMPh36W9YfHlgqdE@r6 zoS=u`*m62j-v=IKUwTBG|M@X3|23`oXC%Sk!2fRj5RVWS^kOE}RB_0vNU05=H%P&d zX1g4|Z}62XW*DDWd^T{tI$w&_jlLXz`wb!Af3E%1rutC!-*%VE&)=o-erc!-#aHah zAkHHR((dniPMNhNt0N@)XhQz2pUI&N=#(7`bw4OgZxzH>{Is?`vmK@J0_4GCuQlm9 zja^0jttZ>v`(@0d$el9!OzYVZ2KV-jzH0KVztn@KT`!qi>kUgb+tqwrN^$gw(k|Uf z+>KE0>(34+h)&}yCI8oU1D?ZhKu{L02BTvBl4&4TnYL^`hFmFMQ2yXvHZR~1&vMx4 z|1tFyKygLOwm~yk7@PpXU4px7a1ZY8?(XgyTqlI!?(Px@5Hz^E1owBi_q|`gih?TS z4Cn0Gy}MVhwR-0XLK%jq+^QNe_YLkr2BMlvc$qA^D_za>1NT(ts%^#hxUh@pm9I$x zK8;@jo5>P~yVQO3A_oeM(-q3H&7OYeq6^%V1ZA#y=-B6avMfx0=S?@H|L;dMDskFF zO}9v~`z(tgwx`x|JZqfV`k{Y)-=DgLD1|}cs{fRln0GFYlW0Lt*GnW^y9I$F#GxXd zK^oo1*_-EW0&N^RJBw9=PyT`#Mva=T_u?_aRGCc37rsQ1#j`fbM~8)aRZUWX9olIj zS>Y?Ik;4w6kmpZ1XM+`Y3&u4ef)TnYq^u|n&BjglHlI!Ma7+Vq&45Ai8J>O59l6k} zOC)KuQt*~f!~FaD$#axNtYvfNe@7t*od?ahO=k=B1h5OC&vqES-e+1^|2*NB-|E`O7tzAoLh* zpOW08$`8jIixy&pg@tju*kR}F^SND*XRtnvbv+^dl882|i`?_{BoH>E0gGUIb_=3J zwCy!3{TDHK+vlh2ousg&I7{M(U3BLuB9dU`jrW~MECb#omq8zP$msa$S9|7HRYx?UltEr2p>y$q%=vB*QAP+THm! zAwrv_goFz>;AF3~F=JLx*gv1!Ijz>VHqZ5*_Xxr0L-Bdtb4Q-P9Rs2B_|tGe1345d z&wqYP{T4*E5cIEneV(Ar!u;R=c^SXi9uz24%nXYs6Y~W}nq8yjA3d)-!Fufcs(~G) z7-C>!fNKrx-ele$(dz|~pHcalg8S}>zXKT?f5 zZ#x(rPmihJ>z86Q(Z+GDPit!-0i7D)gJ({|I#F2fTe{5K{SR@XmV%8dDzui*4 zxB&>#&+xU^Q(X~zhDaPV{H%G#>cMx|5I%AiRNB*WQHNVvES&#tfVYV5@VWskv@%Ty zoHc-DT>P`P|2O!TeRmhj&!Acj8oo&h@5?*fik_%Yv32Jl`PwZBGVR&`#hU&!%4gjb zBa-iJtd-G|^>=OiT*=KnZnt>YX+3q81MD>h!QLIHzza0v)cm<@dy5WsM8Ntw6s8PJ zlQYZlG3KwT;yy5`CFABGs-4^gJSkb)YCk;_BnHV|O?E=AK_uWyGb*Qy!vI6uvVj7n2Il#&)=8ny9cNhYu; zY*3qz?4WWaO*-a26wMO3Sr7ZM&asH&k{h7`LV*_vO)ES7^qRj7*I{a0M+1nj97V_i z8J-T=)AHmIWSMhjI=^bZLZi6;Awj@cFm&W|xtK;MG1SJgVO_FyBEO+Y>u24(6Zb3> zdIC!%lV(54<&kCTRrp(&Qz8+e@OOoLF32^F#B3rXY~seW@7$=Rb<_%OR^5xx+-aGX zc+nN?FLf-}p1Ed?~KPO|T1!Bo-P>kqvA!(n%uI%7OYlzq~ zrhOFLm}t$%ZxjVAkse1rEG~-3tMXKNQ>9U|$P~?JIB^mhe&$UZrpXj5A+$x0mU{H) zvbs)_;n7L}b`DvD0@c0U(ro{dEnckC7XK}8qrrqth({HIk>~=&3qA^qIDm_~U>DEP;CY>>CEl%WK z3CWFNp58G_^Qo>dB&TcbM^_Uc>a+>`;teT< zSKf|B)YV|kT&wAY*To`c+SuT0D=g}HO|*nrC2J0UTUIDF1pF<|Sc-=EX5y#fvVc*D z1vj0Y*{nF^!V%k=eF--Ovt<|JfrSkOR5eHaowa%(_yPSm)#;7^h>0+N;3h(I_lKz$ zdawvdsE~B5qPk{7>%cl9Dg?II%}_QV2~qGjas{@>hE&33Ksus2z1C@?vs_j`eG`2s zuch#JQ;bh*;+a2hPDNnQl<|sT%Y{6X%Rfm0J=0z-dnufsZAfkVjJCiKCSfobR(R;_ z7D(-cn$LrzX?R225(RnE&~aBDZfck9=Xju#5LWGYTPz;iR)(^K0x;1bs;eBFEjVI_ zKAT$W14B(M!>cd4pun0iVh};(h_;*c$x-&oBG(bycbf~>#|5zMC%)p#NQJFN$N35V zCW4REY?>X7VioR)##M%L$>f$0wJHV_$P_c2>MYuVl)?AVwH5GQk$gpfucXm(yQ;X|`th^YIBR z3_Z`70xnI$1L4VVLgI@y zD8nGs)z}+{I3!=IqSp7(Ewh5s5!1Nb@tV`dI}7>w`MF%TE$rgrLN#A^@b=Jc>AWWX z{DL?{h(_Gq9rbUc?bb#(k=aVCYltDxC~^6l^eqnP$HEGC|NL5p`%!ZUI8T%?p=@h^ z-#0lsrcT1;p1~NzNR90LVjFVjkmg*W^LJ^KN~{AnA1!rWjR~@zVW+5C7;DtI0dTi1 zxs^DZwjAG%VTI}S;q38pLo#68NVr@bSZ6+oE`AZD#ms4|zr<H!%U z8LZ)O|J~hCC4X{!G4qM}Pi4zTlfOBy7{U_p|we;1nNfN6K0T8ZIv zcn}|;u>}jltaW&90ccOl&i-3VZYAQkVBIqRK$r#H@-6r z5uyu3gC?U;8rl@`rigS{%Q~1&I^_(GhLI%4)lURPKzQ@8h#?M){U1hfl{tZDtmQ=mn!usnpVQkF=8E-#tBT>i9D+JIifZ=*Aqj?!pDxOb%BpW!Y@u(cf; z&t&z1tk&TS|I^;!(sZMl7BQr_tu5;dk#EXNryrGKLxy3T>~H1V%@L|Ra!`=Yx98?& z6`WZ4ipL@D_!RWD+Y7$<`+HAHDk{(Yf^fi?Ote!EF{3TH-!W#-vs}9=?Gvxt=A(cT zCPO_mZt&a^+K3C3qBL5XG&cfG`q)7u{AAmsUdEViE?XztD>@Z(?pY!^g4B|o^{*k; zhR8oyG#yoT@H;dyb1~)k8%XiKfq^~3@A%e+v}EX_zU5??TFlaRo`(*Bg5G(yRm%3# z5XMZ|taav4<@zM$<`NbsxwyKbg%zmajU2^iqD5+lrl3z=CP*jtGcWDSaysSg?5jD{ zIY;YUY$ow*Fvnxbl`~0x-3-Nfm0dH)u=m}vRCB%EMA*a2l*F;H2@x}Y*11~yWm^TL z4|jYUoslFKMHREk(vYQ=5A^poZI5;g_ocA?z1(5n4a}%xV!;#SWo|m?c1+Od|@a6F)R0~_ZAVF8%D&Tttp=t zda0UQY2R?llZNqSbKnoGi?OwrObG(A&}gde)*5*+?{>bU&Uq}=`p4XcuU=8=Yo7QQ zJ>C`si`^Ot*tRGu!7w%}ojE|q=NXdDI=S2iO~aS+?;=&9f@Ne&|EJULIP=TDQG`qe zq79_-8#K=Al_n%#QtYae^RYPzR=^cY@bywq$)4?>H;|VEb$_wu3}+FI$4s*QOW1qs zt5sn}$m+D`H(xq=QyZidZsmujDm~3|^5E3_^`?z^uw{TAUA`ieTngYPoA~%ZL&%Tj ztEjdBhE7b)fhX*aQwDVu;5v=U<#k1t`HM1D+BC4LO-BT3qZ~GjJdPO~FaYt~jHL3o z{KeVqae;1#%fy+!JpE$@5muh8qyD;wG<0-iYvL2Hr$b-x(>9ghfL3x9hE>aR%M?UP zy(zD4@EhB%nWYB76!4zUabMdw-{@n@LnN?A^!15=CfDZjV%^gYqyLC5gl|%m%4=jkKrYzX{wi!ZqFHk9`uAw+@oGnwVEZ|A ztQnb{^{*iBJ2OX`oWCm(LMFxxA<}u?2tl}kr1Z16dANI%{$9yl&x31@R=>C_#7N)>8}tkYWGka0b|n36Bd>Y+vkX0e>eg8w>6CEFDpe zX=+L9siHRP1+*0B{A}0^7@ozQcevwvZ#6MMwcGACHiw+iVM>UM6(TzV)P&Swf#3ghVmQ;mnsiOpn zYyE;bYF)T?h@ICL7(E`RtxvFkUAi*3U=o>;J`}4US@kz&=)hX&;_Ml1dHU&-J=MTv zsK;1CKDZ6#Edm0T5omVz3$dzx>xS7Gq?1BOxxmtEkTpW~s}NanH<5fN4f2^JqfgJk z$h77mt;K_a?Tjzs^YZex>}P&1Q`=M@y@N2hGwxp@bg7WffiozTW0lHeYfOzfzr+y~ zuKufTgy#_ZUin^{7NG0q?k&?iJUlEkSmP-0Ut@Nj`2>!oIvt+bBLoFlHAt(g<0$j^ zUoasvYt2}&NumR)28|=OzmDjvyu9HJX+W$K0*6tQH;j+V?)_`4*)_gxTeRRN-F{CV zDNI9@gX<#*o2__6lc!uN0!~pJ?Yo63R@K-N!-Dvv{G&-POBwsB+Ul#W&N;_ZQF;ca zany*?hhCv3*02;>!ndgbgPu&NAkB#N-IkDU(<6F(QiV3vl1)ppfI8GP0u}Q|8rG%rN4P}*$Annks5^WiiF3gS<{X3T>o|{Nn9tS5akQJ@d^Nt#ira#OuWjSS`XQ>{i+H2qK2Z$TX z#v>z@Rv)+YBfgtmggE!%Ew)FpqgGPI8G98gcvk1tjqsJcT;bgu0+cV{t@YS>L+;#x zr501Z^ZFwAqM&XjjK9fc_DJT9yHK5*iv@#ge3xbKhrv6)j@tG7$(_P56%4YpZ1{Y+ zup0jDW7g(0#1dT%P5QhTZo@Ds1dC4ne1Op}(WyliqFm6_lm$?Zopwe|H@OT4qOgwF zy5e=)+%Ewpd&owCA&2c!|7a@R-9^0r_=rjg-~`HdyL?%$)eyD1swbb#*Td-d60K7W z3JN&Qwd;I+KC82ur8P7AZpoH8?9$POonhx#KsSBTed+6W9!%tLvc!%T3s0w3ZU8W# z)%83>Q3dXZ-37gOyIBD?K5=OAl#RoFpJ=<^IWa_e_~H8KEz)P?=Dy{+I_(~bUL6yF zF3aO~#ocpfRvmcPvX{-DFW?Xw1DDgP7+hGu?Rq>p`^`G@32&kCyFb)NNmo*UJ7f6z z^4#w@4ovd8o2~L2xY!z+K`BuET<1M+N4WF?R+diU+E}^++#PxPGiJ=G)kl49+twgj z6)bFQ{Y_oZwwqkL0N-JIlCh)S!o_Aa*K}y^v*0cK!+Vc^BUFH`dbbuJY$4$G`PQ`R zheShRtzNa0we~=%tE)>5d9{&U6ldV;R;Q``*<7eG zZofISmQ_$-<>DF+gn6GGU=Ku>I;S1!)z@_xzz^0Ipb7$s9?+Cj?|S$e78d?Pt!(_) zuZsuks>`V_L}+0oqJTbUYtj7R=m>6oCtYuM9sfPf6>ptYi(SdbF0oz8J(frMP%bG& zZNbFP|7&5N`kk_r+u7;>@O%|>ML;9>mwQ|u=fpEJGao07 zR$3d5SK87$R|P^a*$z=Y5b_O&UhW+n9&UQCJreTs^8=0bT>lr(Lh8){9R2P7(qwWi zl?pY@7AFb?z6-I>3;G>Ssp)!tk-!21c29qaRwsb_e3L){H-x1i_{NxvIbKt3dmn+AFccs&t(HTS#CT65SQCaI4Te$Y5Fw27=4D_QJ-WX+2D z#!LjH4$j)tXi_^p=1wH?uVLS10?_CBWt8_f@N&^Gq9j6KW0@U$=dQ^QW78Z_t7G2s5(_zU3qpZV_Y?Jjg0zt~@hI)~37w7x+(&o7i=6C&V#gtH&9wsaJRT=cT5brK3+Fvul?=aEzZ_rlqhcJVcf=b+6?jS*JTT_- zT(<sl%mM0ykO#nvGX5Rk z>yz`fnVWCEc9Q~+^hACh!vnM$fF`F?7*m`Yve0hH+ID-qyASX}+3>_FKx>!W zF8fS?IBV{Z|VA5}Ndz&0!#uq*+qO#7sac=O}ZtweuUWDovP0m(3_%6p;pPq08 zOJ=Pg2kbcCTgDlPOV4f>>&#mmHlU@F&VgTLa*s?@E{w&vYP4DDt%;9w-2Y8doN|SF zrBXFNB>{Z8pNjYEA07rx^4}8pKg{HD`M&_O!Bjk}9pT;E>MJmFpsF|<#z7tykD@NF z?iX2WPib}L6V--&@S~|LoqH1i(U$vVqw56*a9lG0T=JeafpFp188?NeKoi9D=9CT8 zgfYSI_4ock##+i$I`sDXPzA&!gKTYoA|n0!^k)I zv*7C!5WP+OI_2HnaXRolhOom<`$8_Vh%)E-^DD@-sHUqUKop z!(kaRD(cMNzhh5Ne1Q58*Z9qn8*tYqiPExJZVsfja=Ms?Gk0x-4n>{TEU3!v8a8lc z=bzR5z7_D@a>H_u5E8{^JU^(>atlaw=UCnBkY^&m(&(@PBE5g@J7BJP z&dATu6#yh#0SpV6wGgxwnhfs$(eM29ZiA(y8D|){S>fN<7Pan8a7kPelAiNHZ737= z8XL=MnZLf{mvB+a29wkknoOWBPg`)@?=LVz=OnOc*DG%*uj@H!QL(v*fQQ(M)Og`c z<|18mSctC3rNBxdRCZ)zBe4lqCBfa3lgSjH$E}F=#Z*euG=a7Xu#1e1jG!yn0T!y+ z>x*w`UVA*4!xiJ=TSo3i!@Qm-?a0+Q8!Ia-?pDYGxs=ZDa#eswxa$jsrcI><4&IGW z!OrdsR`YjU&b#yqevlKDTuV#-Nl}`E-KeDTUlU4Yvv!tzAz(lqTB*~~3kcLZ&sdq6 zg-ca?6<~CG5>uWZZ}-#^*{$ccx3=#Iue|`XXr;YIBeoLxT%(m?p87d*DIkm4=y^}L z4N2DrxTR&lrB?kOZGmpd+0@DkaIk5#>2rb`x46E~T5)g4Tl=g{s-)l<0|&OOynLh6XBjn5U02j^SX#mn&!Pmx{qer=bAEt3XWocglMPh{n0x zj&Zdc?F{?EVhIG@2#lAX-7k8@0mtYFxWTGefL(YFLsY8s`=+zw(c@qz{Vntmf6L8u zf>oBRRlFyc&sMC!Na7Nf4o$I5np-sg>t@q+z-0nkwP)j}_pG0j zq|s@QU2eKq~Ma zm2i6+B6Hvjcu$QvTy*SXtdEu zZyW-^?|dODL=lJZVa%Vu%#u0Re3Anj%I+WLJ0;3yH=hnzbpUr45$!^9sH3O8P=`zv z1y2vl7b|N9c;Rfs41eh9Duw3V|>bVx>s3K6czba=g{~z=8hGX ziwGO%kdf4vTIt_`Bcl(Oad`0Q;G8G7cWs~x!kxAy3*iuhc0)>c8-iZX7Pc_1kmsV8~)2IHJKWaI1-2JOl_LX^V zTT_>B5`vW?;YT(os$nc zo|a~1A1=o6v>3j?*D~w-pfc#Q$)1nWRWY%$_I3I`zUg^qSZAId=DT+P?To?ttw))D zoKb6MWO4s!OdU!ADBDL-{qIBpkbr4Ukv7%iY~_{!>bjlJSl&FqgX-Ym?5IS`*-oUT zs?8y_CDzrLI+c71fil*3$`Z_FnOEnL`gh`Bmie{zE|?fu(Nc}70tGKPhLmro#>fKh zErS4#l`SBhhlP6ofq)oU#6)^@6v83`I=uFDf3C4*A%SHQu{S`R*3JkG``;E>f=|g_sx_k>(MLfaJ5edWMH1+VuMpzPRy?uf0C6 z8OKCNJARi>-;>V=Nt5`|m>4+)k)KMlvSV4j0w>Ng&#AXaLJN#f=01IHDBzVb;rOr# zH?D18>-X%{+5D=cl`hfZw5y|KHjj=NiH^SU7$UNXe_m_Ds7$QFP=pOlldo2)I1Qeh zt!Xaj7Gr*Wp6?RD`@(j}BVnurZ=xT|O&?fuWff?itsRpt4I|o!4BG>UB#`4d_`x*~A;N%cM9l zb;RN%riWgqAs;O1b8GIfnXpX@Omv=i_#9fcbd(ul3MQ9xQaFC}E239^2t>0DEN3N) z2w+=xHEiScc35FlBR*#?OlMWEtnn=?P_-`H-Bm0M6Eac`y6t&9yUg*wJp(XB>d#*u z@jmOdf73Q#DUjJcz+ff$<(u|NB&z|QWJUlf%c_-OaGx!qrtz4a213KO#bq`-nraDl z`m}bdTyZx2)r_}>n39Bo2Koy;3r+@5$WGZbaQSS59Fv%Md1Z>Gx-UC)z6IUze`ZyK z@#x$OAw$Bzz<9dh>@q!G(y+VE$jBH$NCrDOUJ@v8X6QFI_U9r^No6ykAWG|UhxoS@x`eZ`JH{{bmYPAat9GCcm1;NX{` zxDA?tx=DetwdeJ-ySGH~c)7gpd|NYQxu#*xQ!s{E%(0*Mti4a$zGL8cIlB#&PaJc= z!WfiN_oR7TNbqv1#f2m%QZ$v{)@E%O9-4JK$0GxU9m8>tYtjlwh55JLeqNs_Yw~_T z!)n)+7P;1&L<*fgZDYgG%ggJoDeoyu1sMdK*nw=-K0sW4Nyxux|_kq-OIvWQNpx1H+xsEA33{ zR~72p%v^Tg3$UD>XM}rxyXDT!*m54U^JY6aJxDW+ zE`&uxr-@2wjwHY72>1!D_%>>l%!rVb#r{9DR&|69Um!B7E3KTYEG(@5v|rX(bA)kME5}+4#y-OxmO_l zeRzD#NlFWl*58qkxoCBW?fW<4{GlAo9a`4aMFhcgw{3|I?16$73|yfw#6BbO*I#Z=W?)jF zN)-9DbY9E(V%Mx?A>pY-xt@ae{zh>3rwo$eLTXL&&LjKYI}zF~-dC-zb8n8F_X!lg z*v=6!pYgveG;Z0^!aS=UxlSt&%ld|vsaGaYex`NVSzEf?-MG34Fe_(5cYtw0*#h2^9*_$<^CDPK6@$ydpOL+%DgtCjl>{ z2%{~bNRpDKthyIDXhZo)S`0D zf+V?dhKktz47Ru#S&BX%P5QLepV6s0eu}}Jxz#X2f$xdQ3^GwOzv@8aLkyn&m?uK4 zEc$0|_>cHS3}y-^a<%)KUg3r?2g-+w-{yk9{vGqp?0x>Nqftz*Yac#_^BEY4&<70D zN@$)nGP8=h4}~+z;ZdTYqqdGFzeJAuvYlqjuuNA34v^WmE~}An+BxK#nWqRR;s(qd za1uq(noyR$|4?MEHhf0{S9e(llq`kHk>P}15kUP7B~RxM%rij#U}pe)v9JY#J=bh1 z9<+LqGOhUWnm;43X>15qB9fv?08f#{7VbDeQ${cZn5KmE#S`ovln8!l`_#6nJk>{e&mewz9jEuD`qLeYR7V_e^iO`6u%& z_p0)LwpKp!xE{on&*2#;2oApkdW%wE*td*zd~)&)Sp6=S_11JU1OxG7I2cu67^pUJ zCiK^P2cl(VWzT_e3%eQbsG2gI0L}X}+XWl7Oo!SYfPDjqc%JRwrYQ?HkBb2u=F-99 zrQ2yRU-c_gd4sH8X0cLL+aoFKOY|*VW&U5YY%-|Fn-gObj}Wyoxb8;Vzjr%hUB!zw zE~d7Wj0#S#&$pL_tIV=;qpa{Y7P9x{^t9kf(t5+&dSlv-L!Lz{}Yg|T(KQil@|`6~-( z>&wd8?9Qs|8CrQQsaVioIs-m_zF}2<*T9qb#mdb+5}8Z|3bLcx+a2a}T?-lKF=v!Q zS0Agb?k}k*7*!LI60RrSo8siLsiEO9xDG87?{J>hbxCE-hMr&on4U&l~-D- zRz}arczL%KKV#Dnk^Buu{|QcNGkXR{-zRa1$UA1G&3$HVO#wFy@C{(Ie`xZ&G`o51 zq>A_7Wd#N&T-^M%-3PmWRUEL!QK{&r?(bT!J4Hog5N3^^T5CArD({b)$copw=Wlh*BSd@9#Bft) zmubvqRr5>_FtW7e&M?6Aon3LiGSf#pOgK-*j^mj3KfxgZwnN3&@U-$$KV7ja_4h_Y zqhV($m5e~;`LlK^WwW46gzFZ#-OBN5F6W%XWj@N;`ps`Ax5oyChqPnqB^FhGxcr}B zXZ9Esr_)e`L!{ZAXJ-DSt5u(bs5OlKn>|uB-`iJ#!Yak3PStGT7#qFjwisfwc3sMa zv4f(4(Q=G#xu^I*Na=FQBdrpfKcRfvVQ%}uWn(3;^UB0j(&F(QSZdV9^A;jmpc*t80}ZpW5(H1BIl8OECfKgchd^Bpk+segvfG=s(u3Az+~40bD?V zfOqSpf^%*2>R<+_W}(yE{^FP+^^gJE;w};+o8P(d5z`Fq34fVt^otCjMX=z&e|LXI z*FYXtw>ga-E0KKP!Y!Z6)iWTI{2wLh@dOOF9&VQ`F7OUPrtna$!dKKmRQ^~0mQagQef&f%?W?*jt zo@KETeJ5>;0JF>K`N5S6Z=IJYkJmj;CjIk{Zgenl{--w&y0-xwK*MTtQ(2EZSIMF{ z$!8M-b;_#I^ZA<7X-QXJj>atiX*1Pw3W-EROUua6F>q(c6dM}{Pyn;-P3DxW#PPCG z!(MyEmd#fx-wrYJ@_wn%5~Y;_5N%V>(9}c32CG0ZKt)`%`a`8mt%b!kbf!dscjrgfS7-dd zfcP#Bwgr3EeT}9uHvnu)WjpxZ@YKzlTXJYC<_ns-G_Vh^In`GJjW2Fij}*5^urK+xhf zn{#x}ZB{kuv{Du5NbuN_>$>M}82APa0k^Z``@WZnTnatzlOQ1G1g;NUBwN2k)BOnO z83CSp%})0$z|(P`$bbV0;VzB1a@eDIKGk^x|1*z$C$o4`N@5|h8YvT~z>#OndVWXb zCGz$ZVX@CXEGs)a{+Q-aSDy$g!WY$-g$(g7oz}&H5rk+ z!6XN{N7vmJsIguXPR<2-zAVf+7OfqPDQT!Hszs4*x@9T198Y%&mBXU2!Dt!aF~m&$ zi46-Bc=#G(TLL<=AaG0)($8p7%MpBd$f_;`$PM(&=ki{h~ z3LuvwnOz`E(dYA{d2=+UZ-G511bi+LZzp1f8a@SJd=k3$Jje+g zjJu34n~b=4grs&qr4*flp0C*II~1772J_T(Q>_J}SqLq4I|=k_8oWBxg`6 zWA%_qSIoS#f=Y>eGEtU#<;Z$wJOz0v-RW|@C5D#uCKsigO4ZBEMsnM(Dg{t1`ab*i z*CeyMUT*zhMnXaYPMFqSD{IM3a`ic>8O$QNTyf^PX4??7UuMBQJv~0{FwZc5@UL|O zskg?gi_k>Qt6swW2LQSHefZfc8Nm4jEEYuchh?Uw&|P+af9ZrUCMYPEkYd6LtHTm? z`R)HPWvSiO(mKjcUIR|&mU(4N*H#!LDfFSZL$cJZwvx=w7lF)JGd=q3VuVy_I0*D% zgO(q|HR=_>qhZ!+Yv{%qrP8~gE;=_!DKB5(5{2j#s8#KJOt%T$=gL1SKZ6@6v{5?v z$$NeV;rWHMR8gbHF1h>UKi~7WB0~vNi8fV9TDd~acSZF(=ALCdz#$}^W^;{__sf$m z&CZ;ipHH8!HSrZXyyh|7r}m%IV0`zRyYjg1ZGg~`{wvRyJnuLe9LA*nnz9z+cl2RL zPfh+WD3uePJ#~T}!Oi^09I$KFx`GhW__!V@2%9B9+9o~ad0)(`CxhT%j)EFEN#gy|e!aDY3nwTtTERd?F zS$LRx1H)0Pttai!ttDffVbEm@3>FzYN)x!y)Jvj@Qa06rIk77C?H^jDJc*%{cK%#Y zzK(U>BkT*4`&t|!LsmKi&VfG3pCi}Pf3ZV)UI(T?2U05gt~exFpgy-#bvwiTr~T7e zr@^%Aw*mYW&BPkIfBl;f4w&gb;uvUA-lr|$fL)5i!_~)WwvqU&Pf8KvW_!yy*fL4| zU>;*e>vM>--9&X*c>>!Jb{5u#nKYAz(+-h3(_!;juXzRd?sS}klQ`N+B%|J<4XE>* zj}}{|wOD@(CX|sOkO15ZVh0xr`xtZaHp?W^P?wJtOrv%0w5-$A(|A8s`EHaCh=&(Z z7tY#U4C32wkIHF&3Wjq}zRwJ_S*0E~%=}Iq!fF>fQcBNpCSYB&^d3trAcdB*m9@i% zgcv#4C$C0*Yl`x~M}8?=TD4+MaT*JxZHN#I&ap~Q1sjw*yQQV4jkKbg?-k5iJ>HK` z7&jT_NqLzaiU%V4JV!?#zaG6_=vO(y*2XL`>OH~PcU)r&uajHpa=?AZNEa)p3@4-XH}5OPUx5N>uk$Les#7&E}er-jJ|WnnQprTyl5{kvuGkr7k|k9 zLOwY&^p6k*p9A#83?OfI-X2B+Mu~-Mm$vsNJYq`QY%;!177^naoJpVs%GPj*56eDF zPO}bs0i<8;o*`1v1o3w{g<}s$Yu*h6(nncZo<)epNMS*AY#btYBK%WI$>3&EmEvfL z&B7*9ki~vT?BB+Oxy)fNq*!O3hjQZTFrnt~TDlZhTAn4mdggsL3RNhQprix?hSGqr zYVuDr;6UL>OsP#hwTHWe$GCxyv!#tH3plT0DPwIqZzdm@h|Bfe?;_;%{bI-5R6Q+1>Q2uzCiQ zQHx23(ou7KfBb;f`%Wsi!J#_TQM!aJfptZ&n_qUIz&*qf2#jki8LlRjNfckVr8jB*Ute!^7=Y_Qa?8^VHcy8 zseX8OrUEVp(>HBa&D76%{D`PnXnV?1*-BYiG|KkGG$SDPG zFSj@Y^ScR+82|uOF_aA-CB+F73kQO;iakP_n1fJ{U4Eg;z!HjfOEUj)o?&}sQ1Xk~ z^f&npL)@^I;MszmmBSSZ9|rM&UxT5JVJLCvDLGU$tl?~J{^EX`%1_T>-n3k(-!Ulk z)3s_RzO#sS$n?mr^RQOkJM4WadB29TRmZSsu8!kqruxxALcc z+rJa6Jqb*|#%*iSi~Krz!@V}YoB3m>hN&#utZS-CB8*V$YHz_6W1WtR%?`!{$yp_% z(bdTyLGkeS=lm!(t@41J3%Bg2Ly1{B5ixsbCR&W!jeB5{1+@koDR8q zt?C0bg#Pk^B@pX_Y6GDd610BLrAbR|cwh4LjS3#|nyGPM23`$p%72({;}nREhua|c zehOy3rtG>x`$4ZPH8GDh2fiE5{8fwF3m)#Kd8L-3WoePVeYTO*y@_x&iy9}O^N&Np zPR93?&!P6NM>q;D6|gpLMJDG_G9emCgY%{xQ*Cy1nMl8WbZK`JwnFA9n#F9SqsG;I z`BwXakRu@xXP3{)P7kXFJ8`efaL)D_0an?-H$@AICo+dDV^%uhps9^M7fHZOX`9|D zTNkcOZ*_g*BWmamr%o(kLe0ken#B(*!(2;hIOT73kHDJ2TkN&F%}J$?V9ZS=+HBO7g?VZ>L+-WAadao~u;jE7)f=yt*3?7;FtV3x*x7b#$Pr@MEta;+ETj943bG0{Tg)%#g=34sMD^)YT?MSIOSCHWRYV|;kWcXyIo zmgJgZBF&&mS4RhPho8M7e@KWH`PvdbCQpEWS#gPN%vi_7(&Jj`s#F)EomsKy_y%1q zYpJZywUU|z-i$JAHz1R`yRjI{fFl3-I3Y|((cy~Fa-Jel{^LPwpUqLe?46u_pZaRe z(}hI6O-Q}%pysQ;H>6V^!Fn%w(1KDHEi)fu$o`(z8Cq=bW#35~5g@BgidVW)iDZ1F zt#lKW-XOrA`o14$zNe4S^YdSr2zc2%#&0Ya{q&nS=cfah+NoBg$u|2jdX+2TjTK(u z!lR{$UDmd0fe*~*$GO^7qRy0f=ZON{Z-FdsV5pa5*l@myd3EM`=8Hjv`b44#x)g#k zxTKU-4Z@j_eZ7UO45g%IV#z=$XQ?g2jT{000QiEFNSOBT{)j*8d}2+rj$S+km9tWb z8l)tI6E??RFl5yP8XYdNPw2M`6|Fji25~czJ8KP-jY{*d;~1lihTbp_Iu6xE_?Boi zwnn>=dpXTpV{A$A-Q6wH4bt6>bUef7`+L^n57u&l_j2bwGv}PW zU%ND%8mC0AV)45$KfJG{H~gtLJ3dmbqR#c0XpU@x6Y8kK#9v|$8z>5T#rv^`egP;T zjmy?9xyxRz%~7|JS?LkH=ZU_F@l_n&fTs@bj(P(J@QoaxRMNord^+SzPEB)Q`6X3e z^|tghR4<$)gq(~_nD6>F2ik`i5k{e?H`S)Sud3loCPpagsMZ((zlHWS)h3l@%d8$f zwk{3D1dpiHPy#)^tKN$>q312JiQJb9l+_n%bU`YJDdQylQc15%r7hjrH zuUe+>K5}hIzSc4*Z$1UBajd78SsP(x8!RmX8Y$_)x~D^viGAmipiR#C>AOG zlok3#ne;g;oT3hv;unpA-m>&I4H>K%j1Q`Rf2HBKI0*~v1Z;x%9-IcEJQe0H-rr$- zh97)HAKd(nO9Cc9s{~SOTo>J+0@Spt@iG4T&=QR2k}Iv^g>rp@Eg#;%Vo^2oVpXK@ zt`ksEldCjSwK4S@QRNoE=TYnLrF^E&gYSVjM*2r?hqmk7B0D%_OLGcMOd$m$$Ha*k zyvZT?OP)qFy*p;VF9^p%vd)4fFWi}>I6$bK7#`j?GiUjP6&`rDcy%dYVj|8yW-+ne zjWs1&4p!oNi7<@(mBiOAn8gHCjYZ|ND-bMXNN>3@e#DwLPVmTpcCi_S`{& z8NwF4(0*wRvY0W3$G%kaxufOb!?UT`{8sDfLE)32T5BSDfe&39d+zfZ+fDcIEqPgY zXWJb9e2mLL#OC(Zb2qb42-=Ysitxk}^Uj8o<9dz^w*2M>>~dK_0KoFWcPX%Wgt6@u zg*O$~5H=uB0CB#}@S|q`$2}r~%oTI{oedaj2%ag^ET)=HQ(4Fe2-mhHphMZ zz>Ki6vGKRV*r$P+WZYWjSJitS;}dcZu&bOszC*N{?<^pE!nEVvsdzqk0W;@?CI`3- z_j|LylHDljPb4ijC)?|9P%u8e^}3vUi4ZePZxW9@V_o7MpCUW_Ajb6qU7R1?&3 z>sz(+if(qfuLv3=cn+!s>KZ!PiXo=TUw0~GtN)c-DM5+;VH3R~%~UZYnO&~>NygyScxC++@@Ceu^2VQFlJ z%)`V^oDothok{9Nrx~1lBoF|$4~=6O=ddeRNi|s&oK;ntDvMn?&wrO0m90zzPdBH# zj|;4pEA6Qt7VGVHHsTrb3J4)WK z9FbMIvKb@~2(6P$3tv3Zy(H>wc9Q-yml=ct@6!FW&_ll-L4J;HNK&GE*oCcY@H97a zJwsu1FUP2FCkiw=>|p^E?bl~yKM&tMUI2sB`jPs{UoI)Hys*v~4m`g0e}vB?iJlpg zk1Q1gPt=Rq2&-II)b(&A3V4QAz9bY_fod93{naGwh`E6wRU)$&(@!WDV;#@3$g3|9 zD5ncO9gjJuXF<9TusJz7&@=!j8rI8o!cng3jSWQ)qry|Lp03@3v&7UZ&G-~kws^Xe z;qj1Re`PW@B~a<}-`Uzxel$`sSczPpXuHKof zW=*c5K!Hio?a9l7HkkNje80sA3%3Ej9IvkWmWHVa!%4Pv(EocC@q#sNdwZr2NI+Z; z*L2}-%j{NDDIk{R^6GtiCoRY+@_JsmnRi*`2T?haupEf!{v>s7X{VkyEzmS;uT$t( zi8n}60a^s_yzTAQ^fj^26!uY6n+8Kigjt%nke}HIQZW2E*{GzS|NQ>y%x5*AQEFv) z#o|*u5mAw?6yF6olCEudv``m(X`)-8tZVlV9s8!j&LFQyzLzTOA7^!4Zc#r(9eKVL zB3T~)eO+EN*B5Gdsvt<=A7>^n{~DM^XewGC9XJqGZbt>4u=C`-B_%ho)xs;O5$1A) z448OeO5Wziik303RgIwkV9BPV*Wj#_%8`Wc@%E7lFm4m`${T(L(MmNr;<$gAey`~f z!58TN(|jncyd92XXs!0WIUWGZZyIz=-mi~s5C&B~Y zu`qJMW%V$zaZvhgVprROG~^!vVZILL0_hd4!J!Nd{il+~_K=gJ-x)3jGbZE)X)oJf zW>){Eo;Bb%7~MFw^&YpmmG6qfx;O@|C9E=jgIyWPb2(hKldiZ@?w-Y|l{KRuo?12k zs-c!urL}!5{XUt($G*28>CF-=^XQ$b?&i`$gM{$lev=U)kE8dou&`E3y^!Uv?l87d zVtJj=mAYS5I3=!!Bf6|l2dN&H6CX_z-lV%;s!j*wVKqc6%9p6T_3JEp`nHNen(_YF z9eS9N!G326rd%gu^Jsx}c!Y5xOKYNT5d31jaxnM_ys=iKR35H%~s`|AJP{&;Nc>Aa2(1S4Ow(Psa0LhV5zF z&Bdz%V3#6{^iMnj$Wuj(mkI!*7f5-UL^HNjItF?Se-iL;J#xb@6 zCUcdm@0_kzT0n}sK5jA>ry;69Jn~iQj|=oqhxHqC4~S#4rZO*Ojl`^ zHn#EbUA?zlAok5*DnGcjrJ^nYjAZQ(w%-1=OC^`|*sO?XImDKRQ6UZ&Lg?BXN6omq z+O$laAKuz}o3LAeLzkGOZA$iVZ~G~M9sO8c0(-x~JnS^C3@VN}PN~x*{dcERCPXuBPs8_aNu(_N7ftF8f^K?yb%9))!o&5BlcjDYE!MxC8{fxpH<=#Sj+y zMtKLk1yXaF5fHRcnAS%cjnUA8zt6^D|LFTmVi2~zcpB#y6qeD|wATLYEYbOg7`A6|zY3m`A;ZXg)eL#-1tjBB(v@pY+@&aUH=eSNpVxM#AH=mw{m1w|cLCzyc8YL;T zryLwsS({4>sNC{zv5+98&0Zby@rY3=D+bu8-2bvUKK>2b}5N)jneLp274$fbQNf)&E^7Yxsh{vQ?Pyty8spsu5E0CVn z%xEpz{ezuv|G_&nG(^DTfs=>)}Z)O(U@qE~kzij;` z!XBf5S%G@Pgt7JWFY;e}KSDstKuo?!9y&Pl!RoDXHJMttH+N7 zW)#Q8YXM|7)n>OWK`1us4v`;r1_XHeKNkrtOZY=muy^-+U;V>?{42G4RpgBwNFT3H z=w&NFk9B^;s7s25TIekgvs7b+asG%IbbXqm&VZ3f3YCSs+URpp&q`n`pEn%9eK8YravTJI351BO8+J5*T5vTgYPP8=P*~e38 zS!96TGILzb+*C?JvCQl+j$9F%|LF+9fL)0D?TBJtGeD5wr`8{nrvZ90Dz8w9W{(ZHcy~s-E~Pflt25I;(EcfO4KjG6u&CDNoU#IpMC!RW4m?=Tes|?)@iCIvinLZjpUhAJl1c z`fo-*6Obe2|9Vl@BC;4*${F}P(^;gyIQ3Sm{gWF| zLqpP*1Rp5ip^9hXU0V5HZ`uD{wNa2kndGbwX;{da3LWq5Oz^cKX7HXRe3s>1=#aXO7=WvRska^P- zjjz&aB+2Hoq%f0>*-D3@q2YBP3gB|#V@9@@p0}6B4z9`pQX==+gtbLjPO^k#O1>-G zqG=DvBYgAp1Po1K=1zS@cX6a~O66UNsA?8_r-!=^Up@iZ`}5CdsQ`Cy`vqFMUe~Sm zmPYqB*y1TxR)4|HLz`AXf`PapBXe5iQues)S9vg-ySsSD3G} z^=hp$^mx(@ay!L*4OWl?5suGk5TLRt1QC%#E8iXZHuup;ozZVD_P3 zHo}U=DKy*GxNPkJyyq$^#UcvSFPb?ExnPoEl;_0q5sDEv1Tt&?uw*=9u^h#_E-cKN zH0+OSNljP{-@NWR?H9iOqiG|Z@8_zuo2ax8OlHG+6dTbG^$sr);jNETCQ0oc;m?W! z3NNq{SEZP0y`HP2WC2$+*Vx0q4Sx&Kt?eEkLk$e#4IkLVX zq0w7fB(H~%vt!5BGykowZ2W!OtNn}1HKZ>O3;9%_SE{VPdjoxk(p>4&)i`KjT#fg@ zg{BMJYW_y3A{RteoQU~y;^r+Zj4`a;++7;npu(q^BPK0E8F0H?8l1`h4B+N|1RKo`UmxspFI%paXz^)ia$uVu6o8dMFYZ5s{1D z69lOk=8_|7b@($Oc4-8{!kN{kz#nd@#d58KT8i&qZ!8;L`QY5t7lDyH=|m9S(~r{w zBv0T1KpH{{Fg3WixcbI!e~sW)1hL6kCsRi#=PIx_!={4pGXoZ zD{S@aMVB}%=b8SjeCYAm>7plazf?x0JzC}q+aua}{DXchf?D`99TB|(t4e$ZjO#kruiJSB&URGd@zh%gC0P0!KF(!itr z@T5U37aCBC&3(V9iA29bs@YtDYdY=nYrQI&Q!Afk=GdE%e?16Z8rtULNm%4E zDx4m>PUFR0tV-iJ8){hHnp0&!L$V>3W1rckDRUm~O=y|-9Ant}Or)xs&{$vXE0~>^ zt&hYpktD)e@4)M~X$X#(WQ(~cF7iK8{jfpmXbGX04idScz3+Tb5lFBkW6(uk!+5!z z?lF&@7w?c1nV6YJH@ZoII&HfgD5pQM_x-tG0rfVJ;1$!-zKU8WCc+8$zDI#q9>MPt zmq$^c+EmFj22{5o1axE1VGOOo5IAK&zIAs#-MH8y4;Nd$;bV#z-6Ff|79Z4})02!L z*J`!(X>-51SbKvqJ~ubeRI{7Z=J|mxEYfNNfAtntiW=A%=bN2q9UL5bt3o%VsTb^S zkO`lza;UH>fmEK7!)6Bn9LVi9Oh1c#)z-mrmtc9G?oJg8x`tiRO+{7q;wcDSIRAaFe@8g9uln_Rw1G%bRKwJMZo31-4!2`jjVht|d&y{GI>Ahw4-3Diujt-0=;q7@_QG1? z%y;I83m+{sB?q_E*BC8+I$F3y)vP}?C`ukL9N3$--@Xu4F=ytz=Id=kAtJ^KVKo_L z5M+}y0LTACrZ&^n2r~##Ip)vNXJuUd=4)fjF*l$Aqzk6kH zpITo~9|-Sr$CgaGqZpu&vm!0)D-Dw0z@2W+YpP0apl}vdf{&YAvb+1ych32Aujjo} zO6d27hM2}KA(~46ZqhPA1IbdsihDg3Cfs))8F4Th_vGm0c*qEupfou01j67AWzE@C zq!dX|RY=1f4+OFAeZ9G4nWYQ@oG9~MLY7_vRAUYibu7|`Of*&xCh-pAbRKUmPpfD5 zv|X$pcUicH!!}pU>!{i}h;=UAAS}7b{o}kY(xz6_+iW)I&Bwz7^Flja9Tz_lOA&~uoWKi~I$1~G} zN1X4x=|GM1g(xMlE(l18wJd$cDHX*J2ZMtqk!<#U9I5h>55e%-kku2=K4S3U?0;=g z3Z(qI;RC7=4lOWPBpy}{h*xD8u1CekAi(FMlM$S)wD%A&Ggh&2noBdPMUc}=}MS5w~%jm@+8TubM7@jM)AY*&0Y3qjHe*pFB=N{J4J0V70& z^d)VV(RP&|BA4BGYel0p7{!}uG>}Q)w@1r>QUTg` zS`FGK^ikah?GG<>`K}KZS~8StzHmgvOC?Si{Nwj;^-O%3cPB&S+M-AyU0V*Vz9Np$BwT9K#jdWB5yZ?1h^>jarc7Q)Ygtwu=3QL*k zGJdHTe$gx~)wV#C%#x@RRZEnl^6W^j5zPJnT7daG&Z@uoU(K2wTSvWVg8Hw_orQp(;KWueG);)UAG zWfV={R!bfEO=zJ0Ubn@~y`M*=|QS!hUR_%sof^&HPfzr5oQ*Hi{ z=VF2H-PUv}UCS=gbGfCzck6ll*SZ4_@hH=d5Bo0(Ugdk!KOYN3Qax5nY7AAr??PnE zWXLlLi&-yc6drewS ztu80NDcHBB6U^3givbwF?9`#jv_3&(W6ZQC>qcRy&W3h(yz^R1OUh4>3x{eHT4923 zjNZ%DQ`TEVs$Xoq3T&#IRnRFFm8deNTVQVgTEn(}6Kz#v5 zkYy{;be+Fh0ZFK!-}lCvr=|5Tp_^LhYH!_1)As8PjW=r-^|8M({9_}PCr?how_YNj zN>n^)OmWGUW^K^ZI<(!ljF*kej`Mkq0^_JK(JOHA zmXQTjE~9WQMPp}i_fHx=!;tehMI>mY>Nnzsz-FSB3u@ssr^AWjO^FXs|1K2nJC~ZB zhF-en2vs>0H)62HDqk^Z8&*y{XJq-PQ#w-n6o~rs#?k$ghleehPpIboi91is>q6cP z0r$z&%5GA6{}r6^?ihskGo0PHhgtg^8Ehw~MNBx5u%Xonod~(M==mx_qEy*pGNhJS zpJ$WponV6fQM-sqSeQ-qCH+MW<-hk4kqDf@b>bm=p1@iww4n~PFUlNQ|tOLxa+xqZFdPm~E@MHGmt!=`e&8eH{NN=N$h+!Ph#IWoyxf~N9 zEd47b*GJ8+J2XG8_V^&Bi$a95bfgsGa^DHZ6!>59ga~S<`t@3`xVokZi#FlRA4o>n zBco&sE9y*>%}|Q_m?3eHC0`wXk;aos(cvq~Y6@A3%B`bunPk#;QI^B?z^ao_)7Dm+ zre-Vo*Dk|uz!~Y4xvu>@Ir4`21%~Q} zRqLX#*E*=+sXarzYReMXg?+#Z+zM$R_&o#vGrX@ZpKJk7Rlu8 zJ7!ZnytKcXXiwPHYiE`S_|B#f!`ow#YY_(xyG}<9`jJpGA zqLDRK_=Z0>xeDGd2z^tB5hOHAP>dp{7K}1txM2Co@GRykZr7>dL_gNk?p-T7#n` z=Vift)RkS$@D;!cdhIBePhPkDz>6wD4N!Rk_c;OvV=JG4G1cz=%Ix`q@dce?rX>X* zi|YD#aUe@L2#kr|1Neo5$=F5guIC13WH65K%vT8*s^BFv^hnGis zppw0s$}n-<6#KJXeQ2X+9Zs7OPA&Vj-ez_5wb%pGyWt7Y&nG0z*C;~|Bq=k-z=FQB z!~B43A+vHjf*F>PIaFjXI~f;(gNqAvzJR&-7Aku0|t_3 z#+9Tlrah-}{|I30;YlWVj=40>+VM;iM!8k~jJ-cm%T1IT`88I`yaLRHKR1&=XVFDY zCdfL0Hyc~#`iUK8?OB5pJ14w^1nq;cvQ)4fFD}tp9SQcgDDGTzD|Vh4t&BFgk{MFO zo>tEO$jHYe6R#_}jOVKYpj+kCI9zmqwf` zDMhrRB6>)*JR&jftS=Qil~o}$2^P{DE7?8-C|dX^(@ZRQb4a>)3RT*e{oj@H=+n8P z?+S#7h@)Wd!}aK>YCuwFQ{&(}RmO{*4P~8lzM<0T={M^HZwygaxQ3Bz55rt?*d=37 z2bd*eqH^E*oZ?u9iCUN}UEkcCyLa5UzcvX;OYF{+0{ObBpf&JgdU5IDP58cfz3U<7 zbgY{lZRCVCWYe%n8A*8YC?HV>9>xjNOsAB{L5(4>6kH#U8z$QI)s1^O@sI$2a8^U( z*jY91N#y{pbcA#+5P(kr;En6YJsW^LwBGHc($Ud@j8=(BHqQI39F1>bf;6H818RmB z@bz&gDe_YKk4brP;7@%1s@4XkX->|{IK?}c81nPWeMFvk6L>^@9CUxkZP3e-4VFSv z`?#4x8O$p0XK?J#>v_DpczfQq8kpRPyR(Kk!-N>E7(*HCz~RS~@i099@<+A38|(_d za@O2czQMYS6%2;B=3%;GOCTic8ZK~CPxenaC0%jj7-o{#G1coqJ)}5krj!P42MB$jj@hhUDaQeK+$I!+}V&k8dSo z90|VUMNRTv1e7W`ufngFCm)5u3VKKRDz${Iq_??$zrXzQCjEX3=|>T{k3F&hj=$>@ zH1;IUM0wJ7x&uPvLh}B8e&<7GVgARD@`oF-0Cp%Ea!@qYTEXXxoglv6 zO*_y!>0cWa^ruY9$k^=;c&AjNOgBWT2R-hXw$jcIS|L9NHp$W7TCcW`0H-6E*yV^v z0)RaSNDv%%3d4d@LEb2_fv%~T}ms;z-$N@;0sliR=IlBK@+Dib)d&b4m$_m7_U?5j{W zH_b@|H-7`O^jq|)f{+RG>&mdGDMH_c(iJGmEGz4)1)+S%Z>UI&h~TPH3)|Vjju`}q ztyT%1G%-^UKrLfq!zkPm2;KwWy4gNlTd^e5B`8y%!rKB~Vay=8m6a76JA3qqag*yM z`8L>-kyrNZV#5jnPoZ|z)a`-sVY`=}*aOEjPM|s-Bh0(*bfW-vU1|?ynwV!{ytW#$t|F1f!k8tm7+FN z&RrAVPguCuKp{5{Fv;v)E*R>Mfmp>EnTSUOh_;cca57xaSxa+Ozk{i%niPGO86F@3 zUtc=|U@2Iglyz|%_u+@&*Us1b;W90>Tk&pgZnoadrpASUv;lE5bMuYKZE39z=QM3$ zKj5;yyg#gX&<_})A9=OyhrVY3z2~1NZb%K^r0c=g){W-X_2`NhV9-Lz@EvBK1Ujh^ z|8aC`h}F{StMY1)3kVE^wbZ1TE#D1$|LnDNdC62g(UgLZhZ%=jO+ggtM#n_IF<4WyI9$xf-Msb#7usyrAJNtmd91kWB2J49(oDbghV0I^Ov z;@o%hhBC6td1_QFfHqswqQ1Mv#Za&n5VI%l>VGWPT&q^1DN zIKyK-7Emk!qt3@HE^0IUjNM!-u= zRYC`T)9unO|G>os3$P|0;r;CcoQC9dIl$8bW3jDEFx%pj%#vSQ>+%C0epWudVKB4@ zW7n`qqTHIA*!_Kfn|06o{erA_e^a* z5=O=jmV#IF7FHHeL}S6vGsh;aU&PbCrl60G%2A%m8K`qiNW|@?dx4kk%);%OXix>L zGQ{9jf=5B?)HhR$CVFUx>*6;WI_q2T^fp^$!39{r!NQu_*nqt&w0+<}a0|@dc9Tug zvx0kIfNlT9rxzd0LYk0q?k&IXcw0Dk(tFc%i4%5X=wWTAF%k;&QFKkvXe*~H{m zi%Y>zF*3(~-efs)4@Pa8_-yc7z{Xs$a);$`>7euni$L7(Q2>h@pb@ak0+Dh|rS4e$_BDAUfl1Rf^7G{z?R+D1KE1r=wZMfBO`>g}Frf2+Ek*$$;E%WYa% z>JI++Wny+l($f=r5e?I>uo*`ucDfY?o=$u7Ld$o1n#GHaPmVuz2mkc(*DquvSzy7gKxjxQ!@s+fB!Y*GpIc=7F(mf85BXVv+T0Ey({nn15cG8P2jqPb|NE_35Q6xn5{;0e$wPnihV&x zUx2exlRA3B(3sij1`6o#5m}Ez%~b<^{jTu5_txKkb_!M}$-M4XXz)Nwyb;*@-H$?k zBt}C0jWLlD?pb#c_{+ZDl83s^!BMt4if_}}b#PEz@o1U?y!NC;N+JFIVxI$yfnW(@ zu^v1+U^iqv(J1n|h|P!^F%A~XiPNT#nsY)3fGSc-v2W^LI^qK#iI~(l`y2gYoZ~TI zCvJ2);3xO75)u?&7ZM#~fus!WXA2xy z3BgV_?)yFF(&7=?)rZq>HR^#br#k?bP+MPL)7t85C@s~8K3B0UPrPi`=y}|XM>Hfj z<#-R0TpDZyye>JtddwNb`7;KX5V0aKnX2f5l+2UCSEkuT@E1Nm{Un+j;bKy6spw+P zB)(o)dT4>$XB4!Qe%Ttxyrd=#5{myQU=_#P0;=*s|s zWK$yO!=ei+)0GG9h7ttCb+GDqq#CgvkX_>dtJLHNide^aSg8c z1>iYe$qbCM$&$cOt2h$_&p#;GLPCT(93=LF-57bN99AP zh;g#;mtVOK#=IC)UrQ6D=@KqV%gZOHX61ybgj|_Lzmz7|ON7aj3mKA2v7sxt=anmn zZX^KwRn{ zK$#pL?*!{IbdVg#;fviWBVCj{AqsIUmzk)r5%vNF>9EPrgDYEGhu6wU{%o`OeD;p` z4rfgDGrqy&Oliz~eZc9RU?*n^c00gVEUug?oJD zYiC$+O|INjB+%jE;Xt^`!p~n$rHhXbSTSrI90rRVfWNE9BtaUj2M#<5u2O^h<)zU3 zzi*!{9Wal%v|cJS~@8@2#h^E!s_ceHqN>F41yDO zjGYovGe5PuCtca6Y)@BbEars7SG1gnZPF0`3X2a!GMac|)8J{Xz`*iuCs= z#e{-PRm}TDwf*<0w`NThW?1!|$LUe((a}*p=Vb51C$c1=&6dPbmUtZ@47@VqpC{#z z&i<)|2$GV1OWo)Jr3NX~>KqYqTns<2Q#59vo1vGB-V8_d&SKUT-4sR~Vnr!tHwEXR z!!TLCx8#+enV}K58~oDfVB-7S&L6>d0iUHe{^jq#()>OHJK2qFLtcKrNH}9;B5omu zL^1;8oVS9c(S<%DV^XKg8EY&b%$mpI$d+)-_qmetgKeove$-}dFS#lbP*GtYw(Lf-Oh%Di4CL_9qFU@_8mRT4}D{U&bY=JJy74xHCoQ*1HP(nX+KUMLgOXZ%4)jHG zmFVsaeFU1>ZA;&-vyy6ec*brkrJSS_zNTW@>V*aK#y%b#HxyRrX@Akze0fPJ*H57o z_7nE^B@qbZj~%S6t=*z5;r%|tz~`nrR3FvImJ8LL#k8%6yI76t0}+_NDFG+jY^i`C z+j1m!D>d~g-Y@Td0KQb4BffjL=pyxJD&}zqhGKcwA4MrBABdcXn;K9m3cTEnxo*2x zpj!MqU+QohRnBkY!~HO1M9lIgf9yc1f`?35p!B`$)FJxHhm62^HW|7hjZ234dPSAQ zgoNLv-?V6y@+zfd>u&Dr4u84cBc6Z%_1)yx%p(oB1L_P|t`KQfQ@nm%xKj|(2COyc z7ox!vG)N@bc9zbo=>p+N79$mdAs_6YmX_Jc0*U0f+mvJfGy_FCHF92K17MLY|4 zO9+N@vcXdCeDS6{ixZR(nS8Y^6rSQ-)iNrct-2DTun$g-nAg4pOe0dy>$QBoek36D zJyoM*W0pLQIM26g+&`Q)V3t3kY11)c!heZ-eY89T=Hnhrxe(2nRYhoIdh%t(Nhh{c zA`FQ+8f6!k8Bbx0E+?p=V$8C!ibW!I<}*0oXCbY|?y3Aci#6yN=vcVeBs4Yg_v5kr zH>pt=tcp-+5QV13e-P6>c7F>=pX?HpFH`cydlR~?v3#1yr-}0TiGx^niV8c_!k`C+ zrvBw*xdm)g>{msEoi$dezK7hVpgccfne@)KMZ$sYi@}4dfWTU#)g~;|l`8;exX_%F z1ob2``C9U^=OUj{&N*B!e1DD71@V-XrPt%(z zjs(k43YU_Isk*#RmcbsVTCQ?h2xj}j92WvJRQ)56mgu*8q9b{r^;)A9JK~!urf81x z0?AqRg}Hz92W?Dm0uKt1FcBj%gig6M2+YuyM{UMG{$_G_~1Y7rk zxlS9cjx5?fao$C#GOe=IHcLwWCYHjqHU)d^AnIvYiK|)}da%eid)my*FBSyM5Knrf z#d>Bx%5D3;8wq$>R8&ZWKB&7HKEOVFElp=rZKx} zc>Y`0)7o{e**=cHu@SbA1Y6tud=2%3WOou1mC@KZ8SrH@@ga}ykyN}H94!a(^RnVu zP13U!%jM~?o4%`0IGGELqn)lr_e9!)x;)u30o1-cn|9^e9p$ZWBMjJLB6`fN<4;bk z^YimT?WRYOX3U&S4sL3oyO8dAZzi?+MA)1)wLBx*F0W@`;A_bdYNgJ8B{dcF4oALG%_xYixbQ7=V26l`5*=umf1(i1{=EGfu#uchf`eG?_2Nky z4KFyAtEQw>)L^r^1MD0U)J=AquxV*&;2Wn)%BC6R4ycny5Y16F%tM*tfdf~1>%WNNLXa1OkC{ z1Eul|N|%OY#qFPh&$gGd^bte?qpv0%5EMWem^C#&FJSXwdyS8Z)7X+F!#3T9tynfqa!U#T;SI8bv zMY3rRFgfbt!UuK3#|3pVA+EZEnwT~jtG|DMDGZ{b{o1@NqT6lvkGK@S8~w`bErR~e zY0Gesr8aA6cN5Oe^4$RB00|D$1beu*+2rct!0$7{i108n)W@U87Ohli`6v!kJl1!Y zTP4b3Vkou;^KUhBkiZ#Q6Q|w<+fbO)Tck9RtM>?y?kGgrq@cQkfXhXN&egMABvv2T zICw;i$d~%$YQW2pCI9og_%Fpgz*2lK!9ZzdZBB}bpg@PYe{upAn>ZJ!Z2-e>Sds>{)f<>B~kMV%xbc(IXaUUIMz1F9Tz9OCy z8XHlJfE17D&r~=YjL$b6Yr|i^RJn{1^6>C*v3Vw)zu5#mv7Wj;9xg@Z;@-tgzPqhh zzKh>vGGAl?Sj^+auJqkDxYbThb_0PaP$0J(tOaN;1?t$b>`Q_RE;LX-~CfWcM;Raq8%AT_})Q0W+6amD)FBW7q*Z z0H4zb9Jtq!B?$Mx9C)R_%>g(Z8D8kb#6*`gV_Pq1eayF*ppZS>uyS$^{Q2_-uQOw4 z8(gfnz;gx)BZ17QG1_M7(@zWXB&fv73QS`(mg)%>^e(oRSfkrmNG%yc>pq&YQvlwv z3sON|S(c#kXuk`$S)2c}xdypjqFOPzurRn8DKPr^1)^z&U@F**ZpZ+jjgAHWQSlB^uTmRwY`jVZA8fAmkVs1{O}vAS+D*oKK&nr2)M>Bgb6%EsXH%4AyF~ z{v1#tL03tJUssPZnmA3)5C?W3;?tk^&sXnW8$95CjT{zXzp?cebZ2wzxtDNW^71H( zl|wf{0?1xYWc4o{%IKu)&^W7E+Lf9VL5zVa*NdyzrL^Xu$EDWQr+BG&A(AgH4F>yv zn+)MxPFJ?C%QQiK8#DNgD*g{90?f%$)5xBW0)T;ztgWG5UOH$so~3_@rePB_rg+`3 zH$O%=oQ(_0u>JK`LA^z7|@UB=o=LdM@7cVW-2(l&82u8}=Zm4B}|ypOvb z@mzB`A4W+oeSssK{o8@V6k^jo5w;IG208I1O14yQE1~eP$Q7sH z4`8#+_0^D@*xr0QLQtkI;^BbzQK);nfC`@iO-hoWQj^q$%7v`Fk7`fc{OcpO zjfoEp#X$G@f+U^SjE%XufxZ2tQ6CzAWSc$?v>yp79*|>aYHrbhXPH{HvNQw*Pnkjs zt9+9S*_cU!B;z9vq5%%C{;57)1_+UenrPCYGa)Kt4k=&-SPeO6Xu5h6 z415q?R9V3#fe#c?Dv5WuM*_F_1S5sIV(2i4z^s1M3NYq`Rm6G}%EadpWc^8&RyQE6 zysSRw2w+>rp98vZA%#cCI6wB|GcvLbM$1{PEF65gCN(m%G+==OzH{BLtQ#8+V->LvwrZuT4_Nk!Mbs;UL}Sob4T27V^W-MM_u__?Yh_( zl#Fxh&Uo_`{+BGj*ZiT?AW<>w@`{vzi(8ngPFNi@QzLox}JrO4uo1cyRw4= z4BJvASr*@$h`4!)VhNcnw770rroiG8MJ^4RtpP`91x@Xa+_wblYw(OdYV-(-g(z3| zmB^6^0~Wj*^egl3*jZWcf={Y%m+;@w{}``zwozRnj~tx@i2yf~PDn%5%x@rz8N{29 zxz_sI9y*K4bw3ns%!q!dR0t~Mrt$y$o+o8`Imu?=2HAD6C8Zo>#K^X?Mp&EI^-6Ol zv!>}#GP7>hJbr)MPDmSDjG;aBeqN^avbDZqAD0oOdxZ6@zl+grhwv-PNMa%4!{1fQT%F_xq3s-xUYfw|2*w(M8i!L%>!q!Lz0XC(|a z&PXngvn&X%b1tjLNPksye~zSz8+Yb5H6=$sk>QAWH>`Swf=o>#f?Ek{=zlAAY2iEn zc0RdzjU(W@Pk+#V=nqEu%kOiBu`bZ4cxHPX+acMxr>#QcT!~j+VH5iGre=boH$iC4 z%jkSf$_Lh-*1$u0_RnnCcX%*VJZ>z9qsAP`Zn&a(h^fAIofU+eRYHZ;S}T)4loeN| zRZ$@>S}Q!(`C@KbNZ?x?sQXT^IirYZ#3r>Fyf_pY`0iNIv|+wyf5<$sON zXpln1COSDE3pr?o+eOMt4h|Z})T%5!Xlp5LwE{$mXRTHFP0L=EVDu*QRM3m9A{-Y> z%xFpx)<633B>0)Znpv8YqE0?N!~PT@<(kyzi9X{rQoqT73X0%mxk-HRaf#f1Yrgb& zn5=p*wune&4ZSrdFEgv2B|DW1sy%R4+F$O-67jX`u5^B~s%TQ0jktkp^&jVWgI9h* z)0Xw9=R`KE)l-+hNLX0Lt9$8Pa)r~<3;U-Gy~KQ`4I_2glK#gD>;Ys7DyB4r#-c`W zp8LofGuv=0nv}N4bM{tUQf+hr>7Fa%_q15l~6rHiv8!0n;$jE z;;LuRPW33-x~FUZ_?`2?{Y%e}Ola*ex_6;PnQX6vO$+Z>RYUrLBhc#?VuGr1`Epb1 z%VQ(>H2C)i)~WzO^r5HCU;cIyDqfUj_MSpHzZnc;U;%X z6Lr6zz|{p#VoH(zcOV(x);@h5d;rS`8(R14gb~sM6EP zrO(d%M$3g6=7{qs`d>!LC@c&Nc0?=qo59UV2O|ki->ZKCS{|pO0DChuSD>H6-FYy~ zP6xjetM7K*brvk6%r_^2ga~&(<2K!n3RUP?kCWBH>;1sv&a|&L3o?ftD~*x|WkVI^ z7o)tVs0e`oFz7kOHb<((sggXFPuvvz@Z zn^TuD6duOY-FHnzTVz}2x{|N;Cg#8wPe+h(E`u1e_$u=(s44lSS@oh2`3Ld7=ME%> zZN^xS%A^9Khy*ah)_+x~lr6-ulg(^p3XFK-^`*BEUOwm_cvuq7b{ZU8u{-PuJD}Fi zivyE2qD7tba!`1O2-D_Rziv6oEVsiw7bGTcDW=v-Cf_gPquJ^WQnQ>vB-l=unXgDb-FQ3|XuB+`cXQ5Ge0J%C+z=jiVjK$k z#;)phI+k4>Jm0kDw5?U&{0T{Ss#wLTaA2_r)tMW}5ZGMFVJmPXS@e{ZybXEvNgqev z6Cvzx{i@7>NEt)oRu0*T=HFijvmA7VA7YXBLolklJPw}rJJwdwTjR(-L$@=3UZpjd zc{hS@7)4HjHt*=f*`>}1GhZ{ylCBon?fO-I!?Zo%2ZBS)M!_QU3N-QK0IB2B7xGW_;6L~+4#lKnF&+w$9trM^Z@Qs8GCt$E4|e<%G6UV3*S-8i~bAM zFb~--xWotd9940L_9E1$+1?VXl-{oH8hV)T!pEovejKQxuAvUzy<&uKq zHjx{XCtK#{*d?|~Cvz^aX@!Kfg#1^XuyEMACDz}1Q_fV0vfthqZT0oMZT3Ta)zx7H z#Z24f8Qj&XlA&zc8goB-> z*59i5qo(IEULDQ5;LO^mXnq)M2@xaHW$2h2y#Gbw>-1CBqa5*1$iW(=gtZu=lT#znozfn zmoz(P{;k%nbP5kCIytQ2qWgUmoil;DXN4_gpTJ%?oO;VtxpI@zg3uPXO+tspd|ZIT zWxQ0X;Ah|EJHbKM>|FKFLrRBUouthQztAgNigKft9Y`hjA+yNhSY9XJ58yIrSJVe$uA>Z%kMWPLvXhp z!y_{Cl|P)hto&|ZOv#(J`$6#S^2eL=E^)f~_nCak=t!ZoTZoAaR7fc;U&P9^joL7{ ztrGg%)m#)|{#KW$F^-zYTGmGtm050deTFa7(sgoXEui&fuuX!5dWl|9=!D?sBB4Z6 zpmldOl$odZBEdY?cbD?Q1ifu3E|`h&A8@9ady-#ayGga0C8|wBulA9jIjr2Ke|I$( zn?Xl;a~OHQb||#A#ZDK8YiZL!zZc@X+weoDh82pmxBbEY-sFz!e9`4_=J&l|!gELX z8_7i}ObRX1ue7s_gmdiW2Izf`HSk8!E1s^o1Z0&u(xl&Mr84*cfv7nRx$OULxQRb5HOpl|VOqR*#l ze=_`T`ZG+4sU3@2Pp+ruNmcprU*O|nw+aM4xk)4cPsAZ{5DE-OR`fNBg5bA!DUM+o zuAYoekBtAw{U=r^4SIfP)&JDOUYF9K`lQuRto%>=Nr!4Ej#S+H{WT=i+O+Jt;^B?L z*g*+G{kmH{9vHwBH%lzuyNQ#dHU3VO9j8-Wc4fpCo8#z|2rwwmI_?HY`vcuyhhKy) zOuFhbdBGXNT6F4cP$Bp#1NnAO$JSi$_w25t;sIs^+(w+%H^hsIi)Lv*eE3E)OA7}j z!oNC%(|Jh+6(TZIdVWw=hPhWdo5yx%4a2-MB42m#3l!JGL%qD zN{|wpg{_*>i27W(X*cO#)=6O}Gd%Nymdem$1pWq8P^?hYvzFPGGaGx8lCQq7x%R0^ z&gpjEhuSW1h^1df)My_XC+06y$NV3vy{y-pAUM33QAj zP}UssW>I!iD$E5pH@uOzA(v5C5x*s5x^_r0)&lf9i3R0y+%mc(8qcmnkQb?iaqyAl z#~$r`&+PWXxc!5CpZ^d%j&wf0AD|3gq*}l&-m`yH(h-AW3Sa-m-+hqjzqpV_e)5TDH6Gci+1O@gTJ#Ed(;c z70$MW;ez@hzPb>TL+_Tl24Cf3+-aAD48DScc$h~YYru>F@hKAUB7n`t2ONfm`nE!D z%pvBxz{N$U-6M(5^@MiuWGW)NDZ}4d!+hz2W6_p zIMGHMlbE2BbUUwBf%jS3sBZUbUEb#nMIj>37^KTszEWaG1Z|VDpmQ9+~NH^p9nLz6DBjF6o`l&(O)B5L?*W$d}Ev z(*vt2hyA})vBUQzcVuXl<02l%H8U!f#C-Af4*D~$+Pc1O_3zqX);<_oT+jQQ(5!Cg z_*#2cAP+dWy(*7E3?10C3k&-<+4GF9J?(ZH*_+3LG_}{DDiB>U!4V}>C<<1;EbW)* zLidv~OJ898XiTp zkYeCUugr+OZw?`?&r}{?r%y?;G?BMK7*A+e_*N&l?~&g>$h$pgX0iCYZ2j%ZSK9xq ztQZU$zb?a_qgp4z*HsdwSF&*n4Wzt`_>vK#Tr6LVW4sT3{MFzQyi!w&EAc%cCd>F` z&?lga6wt!jp8E;P3#K$|MH&-Kq%{_WJ?Oxl%CeKzp)>o{W$+!gzt zejdEhovXGPV7YI6Zn5gC-5cQ?4pIC{>I@KK@N<31(P!N6wo@#uth!j`N@wDIJ9uYB z#PSR4!J0-vj@@q?dsv%KT|m6T6gOTO??XZCo~fTbrBp}kz&GpP!c!FgeqM2zSN@xK zyUq<#c z39dBo!840RWRrF8lMawR8Jy>Ic%;1C$%fwk&B@$?Jg>NK2QnC@O;Fpz%lMrY~OC#BSgCe?a=YD0E_fFqAdmTn7-u{A6%#JMIsExc*iW z!Rj6y_GnD)pV9L?OxGl#| zuyAmI#8NP2(Y?+(F7(2m!mPJ(owfA3bzOEEpPZQJ1$!V_#>US}rhdxi0bXQ^9kIK| zjjOMOSU~JsXz(U@jlq2lN==i4732ODd~ByzL;fT`U*@Abp1c)Y?;Z@{&k1v0(M&JO z-5(}mS@F3^{OGH5Ai7ylhDqP9l$9eTcQI4tQx7{Cr2bCqHllvG(f*eWx1jMb#)x;JYPDl zj(zi#t5ef7C3r=CQ)7OlONsP@*2@lc_F`z9faz8`Og$bGlfT*j9*nA5*6^T*=(^&x zHrX<~nGsG8bI?C+^#g3D#pJ&(VZRlFThf+H44tT9^37~NCD7*edCP7mG~sN*f9_vi zL_suAHCSoE3s~mDr2jgFluMza?*hcQTA_$(E2o@F)n?S&Ud~8f&?J*ZHW*e`1&b41 z$JTld7<`v1C-bYSVicb~$_=d3l+oYuebQHOa5W6bdAWp* zyx@bE;9zW(qb=W@$1YWl)`PyOG*s0e99O4gzArMU0MCpsAoz6 zg+tKhuDScn2t(5Q1?yzX!Uzf?uwn(2aZcNEPG_*7J$HS%gG_gHR{DfmMtZW0Ypypn z8-$!Rg4NU%zx$3f@CdwP;HW|gqn_aO-$~SD3N-BnE`+Xkoi9~F+uhrgkW59T`jaw! z+aZ!4uUHM89#Z`TOpyiH{Mrfw7W0=;E~up%@F-Xl%u9SsGj`z&Eh2y?n+H#HpJ5y* z-{#D@G*eXXcdD)F!c9jW-DXej*?a@z};j zZn;^kTElSQ`WR*moEol!rnNlLV!z=hh#??*l%UKK?8Qb$j~JEBhspQ++3Y6Ie}~&i zDM$JOPT0yy7H)`0?&q)6Z1U6@XP+Q}U8L;-?Hn8&z|l)Xh8b|0V;cggsaAAXV4$hf zgOZc6C%%%$ktXR$z%dSpd`JZ^txAPjNg|fZPZP}!^%Yhqc=>!~=8LtC`!!bQz*3W$ zja^Q_?a55#(F1%u zE6e~uH{l@!h_INeYoo6<2mbbNe`v7XR;Dwle|hM9@$7s8wh*8gO|Hz;&wA*uA=F$G zLWzL?f*%gnW0GL=Y{=VnMKE`_k>ec)=!~zVd=5_T$*HNH3hl-NLu~^{cKcQh9;l%E z$NOZn6T;+d@~-NQ5hPWrK!E{XW^`70d;)xPYs7Gc*lZSkNR{K3Z;009^CvOotf>1NHVg>Ig_c&?6<%va?Mc946reT9{)|IJh~hfe9wz zK(59sbzGX6X?>m^=2eK|@BdbanI{c!Yk$2_Hf%P~PA@|HX0%S#q{p6QPlN>f$!Q1a zwTl3$8vt~2)-^LU?3PDT^(GAeZ|~p)eBIBqm_VpU4VEhrhQ9hFpdA81@Sp#;0q#eF z9Wtq1Zt>P$FdzyAtXO@05|CWieCH0x*YLpsQraIseiQ{lhnFjoXaDK*8ledpgc*1k zC@H%A{o~x`k~AqwQQj<5OOJHR>WHGly^uf8?GKtd8kDoBJsg4MuN3t$gD++9?0%I5 zs-<5zauYEX{eLzRYbOVzvAS(u&Cw;x{PSm6$G%L6*I<-*5f+NG|Br4e-Ewnli?Ug# zlFN0)x4q=h-B953%Iv;H3!V2ceY@Vem};PawSAtb9D-1n{9^|K%$sC&%N4DDV^S0u^b2@(6&Fo#l(Gs&atdpdeWp6nbhJnxyW{ z{)-F|BHg)}MN5XNoK5;ks4&-WAZnF%-9EOjPt$g#O`I#`W;Y=*K6zFREH5lbBd9N$D%qsIG~prZHlX_kUBTfyksZcMDtlt zi9o-8HF1P0Z<01JFc2nCq&~ZRr`h2mq;u9%G;3*QK^$bJC!46yf6++Ip=nM8)GqWG z*NKJv?`%NeLn!El3j;R%wV4X}`>-Jss6_=~|L!a3&DJtEf{Wpr?4Jd!7b2Z}i>DwJ z*4u)QrvKSNj-Ff(6vr#}@|c`)Ftq-^7Dh;?;~XyOe`*+;`72WS@VV>ynzLdEOGY-$ zZ;n87(TUl=fOC*#;O531y*crBdGwlSNmC;g&`2+FIN*!QX89K)|)35xIvT3bVpmt0we zxFt(esd14eXIKBkQAi?$QXDO`hZglyqY&~4^R|mxy5k{ykBYe%q>!9+36!E7?(n8a z95zW-F2R@oiTK!FD0&qr3r~~V*cdvcn0+o{tZl^rv_Z>RnZ4k;a!~;}5#(nEz42)A z1Qc-+hBS^eXMB0{O#VCEO(P?qlxeVG2l|Pp{QOK`2o$`CwiQ8)&@*m6#Y1=>zPYWf zfw>#*lB0%}9yR8BjL3f6mCl^WCpfU?&IcS1V6!&IO%A^YOF=?`v5ldriJ68F8U(q++OHk3!6qb$(uuhL^$Ca5=(o$1}F#>>L5I#PBlgD<%VVu%< zDM8Cx2dIFr)e}21NR;eP=BFM&9062}3vTlP2T+PGudiQeRLuI#-AAK@4MuA{iMf8Y zn_6Xw8J^?WE1&@d@2v|`{Ol|?FYhAYU3JxzdYw42B*;-qQx>s}y#a+`{AFmj+2f8L zkjUDB=jde`d*v79{F3Up70+)8S~5Ve%LWCjtGfd9MQBLD=9admH>a#+cl0^b0&C+#$v7DP}LI}-(1&(CBQcVA`W;UOOS-`0xT7s*m&bl zN#_hoF)=Y1F|L1CR>W0|Fb1MYXw1`>+Z>>ms`n2Mw@1_10l5O4{1U(dQHQ>|EtA|l z{Z$MCbb3WaCoOMuCFh)-b@MeCzv9BSenSSDc{+SUHu6b$5Ieiq(%=2a-;!His{dHa z0!W3z^bFwZ4oDYIf%{Jx52%uCHFhMeA)yGcftOd;=#hOIW4qOik%lF`U4d|TBqTIrJZyxXe#g2J5wksIIOoug#1#Lm!`L za}H5Z*rO?ulGwkpcK#9u3aQ4*HQ_~cfuH#n2Tm*S|D<@Fx6mT`&|l7La{!MntPfvD zw$X49mw>?R;hM;6lVI&DFvJ5B<@3?_b0Y8^@VU(Aev{h7-Zk-$S>nTYhy4v8d~FhT zl4S@s3~#fNCKO=p2YMX4_9rfpDPwD|?~=ryhF3}~hAaCVDP)w#qsj^J2V#iw$*{pS zK2rA?qD`>^jv=6~)DdZ=r!NTAE%Jh{U{j7c}w9W~liB z5(nsP4s?C8ES+*@Z3)3!41Q?dcUm=WKKr16v*<(<=BpZ<=>YKKj3(QXt|2|0Tp<# z0h3rj{qsk~4Oyo-=(t|A+R|awCuyjU1HEr7cm+9kbUysfdAZAB=i=JYKB1wZ`Q*HZ z3bIH6nQ&@pDbfJ<@jRuI5bOCmfNv!@aGq~tUQ&bp({gxRBD_6sK63L#+AJl?ngDpoY|T3bw1T2tq(BW!3@j2s zT_O$o0aSDs`i}wT9Itvi5$?>ci$mOyF7Sv8tgLuJk|5Phsm>KqA^^J|u8xcEz2vB6 zX9u$#Blc!tik{&>be2w&{acn|32~n0;X1xF7^o>E+ILzQn6mHI_|`R>Rn24M)#nsI zuj9UXMdI*uk9-dY%LDWr-~vFu28h4F8xSbo&mNt|FE&YDQV{`Cn_g6tXa%M6;dE<% ziqaIl?df_6p6r#12=3*&(DSixL48GVh(_Ywou*7*9syfn;(syTbYEe4Sh-{@EyB5d zE@1(f7PtwbZuXS0cXrdVGHCQ^UynQujej6f3pjq>-`~4k&a+Wd)0C*uGmf&vj_lwr z2#NBxj~*{IYUt_~Y7Dk!Q)B^gXXzI(YzY7pgtPubJ3uNs{dNmPsjq_fo6Z++FoD5` z_IRx$>XVwo4w=^6)=qq=Kkuf(`kKU3UTzG?(%5lQsRFGxU>AW*I6#&%LasZ}UYEF) z5_$m#VGsu=?diO;$?g_18%`(EGJoe37bkZ*GVk*r%%8_U+Dupdtm9uHLGCD>61l8>rRr=_x?^iJl zoJn#Y+3RQ-zEegN&?-}kqw5Hx_lgFPURP9eOe`HXc6vfSnLYFDuHLjv%D)X`(){Sd zn78%~B5<=@`7?q}B9=MwuGR2R`V)Vl)3c zWAX9-AUHpusCS0|{BIFWC7O@*nklQJcwy)~hv1VODzYv=)T zYZzQQ4(%DAs+PE9Lc4MloZK>ZVSiZbQ6ci*_h?kJqXAQ zjrRW*PM31VQ&LBe13jid9<8X=*ckWP=yBs3pptZm5fa=^f%%cd=ay_`Wd#^qe>+(o znwUU+%_-iS%rDn%P44Ir%zl2JN-UB^LSbHK&$+{jCj1m2XN>JWbgi&xFH}g`u{&kW z@rpx$@c=NObAvf09{C~$>Yp%w|21YT>!pBWu*_t5ais8tHl`-}!OTWtjd+6BH#PJY*V zyYR$o194YZ$LWzxJ_TY@B|7>1#JqQ!Zu;;kg|h0X0}=cCA4TD*`v*RGdj!d6*yeuT z%hj_YFU(u8{`iUW-ESbe=|;PBcFpke)5`iFbQ{|=xfOC)WoB#~6h0(fz;&y~$aO!e zxw)X(Y1?ifQBCGd24f&Ne)_kNP~aQk9EK|Wl-J`KoY&5z26%H z?tU@G>D|Y>3s6BYU_^>O49mf@yxwG>T7U#)5fe1mf!|>Bc3RCfnrNix@K>+C>{YP~xP8k&y z;1gRqLk}P!%H-%T7Qr$|KA$S)CM>yXwaC7nyC*Yhik29E#f#qjoSr^RDs<YsL}va#EZS;7*di!^>PODe)?S1)dnY*`CRmKFcdh z1B>-muc0nK=MI`GM+OJ+h<$DiuvxUM&558%P`TU_j?(B$PWe+ly;EVs_x>9;>3VlxVBHk3_HDtWD$d0A(clt>Hm zo*DoRsNe4UKQY!AS5&C_I;{)Ndk7^Ma3gtx9dLf8lbTr zYq>hSUB4J-XZsYrdw1lv>GC|p{fuBWSFwG%E@qCIppwwkA=a*Ba@qZEn2 z3_Owks630+S4O;PP1aC#$%!CNU}pF~CFp?I>d4)pZK$c;8Q#iWr;(y4ubtW)gZ;lI zKRAO$(Wo$V1_tUs8P;n>ot?48QyN-ZXJVCMLm`OHdr(S`^6|Mk`dktk;J!}AwjJ&m zfsr_l=UWz}!h5I{NSV`EUzODaCZGnYn|ZbJT>_}9<7VC@kiczjVkC}CJwA255FmYE zc^%&K^sLt1i9c2lQT%oy@)|FkDG&UTStujjOktd7!FA{+5`ZC_s9=zhoQ5B2THDpT z6?7KOAQn$rnC6>7{D>YLt}Fg&=A zcGB@++j0G&1LO_24FOMIi)jM44zuyy*bf)*C1gss-JCMj6jB?hUZ@+={-S7n2+{dc zQnWZf@chc|w2|;EDKK~LhnY!iJ~C%iZSp82=Qzq&>Qv$Z*13i9&u=i5hhslbIa$$b zyXdLj25JlVKDRBAjISO(S+hLR$c%n>YfC)%Q07-|Ahg-45Vm2rn1 zC&i{q!IlZ=a#i zT+^t5Jx$k7x_e5ZD^bS9EpF+Q=Pdx=|HMT9`Fe(iiz}C}XSQ9M#D6_+)Yf4H_nLqL z@bJf{DsP)VX5}t?EilPsG7Qu-)U?=$q@&){;rl%t=PTy3X96EeMxDOMZ19j}6H)Ak z%oT|pNeRx<5hMjd2p*qO03{}U%#HNJi{pl&biXT>k1_|MA5k&U&lK)InB&zqa?+<4a|KK1?`fH6QW z?dpH`9v(=H(n~Pj8QKZsyTS!WIy-dl*P-5zU%&_OkC{f24w{H?L4TSgYBY3|`E@0q z$T40Ae5`q-f6kTyxOvk=B4IG~zyANEgY1PV$gcGAYi^p`VvNo^l)?{KVHac7bD2Do z)y$dLC@+d=(;>|;9kNsY<31rNWLt+L@0;Aaz|tI_ft>uRuj9y)xizd$EH}D#{S(X1a{by zys)`P_eXh2;V?kbDBE*7m*XUGmO zlX8&-7hy!O54tAwXT<^Hfg-;#a?3bg?F3@!)otX-V;#GLMA*nw3aaRQPp#gyh4 z@kqh$#)bz}mXz1K@UXCwjj*71(9pD1znuj(a739)d~9<9Z6U?S4%r7#LS_9==R=%< z|L7^dG!a$UE8+E0_xv;BzqSzh`F9#~N`=aH@t6P583Hy7{+1+5d(dohmA+V^R(_}N z+hT=G^0774*}xyFK+9)@Ew)qy4#*P_&H+WHQ!t&(w>-_Mpy|&s|Gv9uB|(Ks&*KgY zprupSdbDZ5e{yZS8}%~?*ok|CWK7ci{oiE@3dFl>si;xrau$}**|x32CP?AR2ILK8 zpyGD8kP#Bji5)oab6tHP9Qft57k$u!FOrwIevR=5$>?3y$Jhc*=$(27okL?)U{npc8rSmhINy?#z?|^U_i*^T-JNfPkO)(VO3OGvMZtK-Y&BYdkZWp< zyAAxI!jwxm0=>6D`@VJ33ISGVh#+=*etsUQ=`;S{4*PY{e&U30(&^3u9zKc41YEC4 zaXRChgOe234+`QlVUP#vJKoXBFGqQk)~GFH(T4!u97E>zijXPnZgw(5fLi<5GGFU* zsf`MQgv_)K#B>rR^P=78)YSc&4c2s#*i2h{lRcTAJo_=(@{wI+9yki~$B?Q;{eh5h z)$3wx)Ga=|083oTBBI8k@KlG}=t|n!pVT5PE%D2LQ(-HNMAIH*SU`&f<_VpQ$IKec zcOrh)^%}fwi9FHGuU9|KPGTk3?`+H@+hbLgMlb)7jjg}IM*G$H(1L4f!#tTtLWVx+ zy_i@JEft73S-U|9d}9+iao1r-E=M%1;E~f$RVjs@fBLj1InM53Fg?xpYuLSAPf}(m zt(Kx(yD|D^)icyoGF8B;QH`ha_l$6ys%zcS!)p`G*1B;Ud3LX&OZ@>J+DA*(Fq zi9_FZ3`|eMXi-sq{CH!)K)@F*YN3K8UxHhKG0J*W;C@o>{`G#<#b&WOKDksYKkh#V z=n`_!tOz_@A8*W`_3%VX#{Y+RDV;y6G5225Z#VEzD?$;7?Sm5$WMqN*xi3M{ClZKO zF~rd-2|iaz_E%G3nor?qEkSvvZR9kp9!ZAKYv)VXcyd34=ZX@wYV0(d>20Qwv~|18 zG41AfZIaZuEMfbcUfzsdVE9Ei#PVp7*O1%4ufQP0K_O}xtP*SpTQ3w>$oxt1A4_Ff z_$Iw*uavF`TX15?z7+M}^44#Ei$AG=i#2MoPMzQ#uri!OGQcbPJLuM;mn&b;s6*!j zyzBJ5uf8}T7uxGW&qx~^&LYvp$(SCAXI(Iuzy*9W{$v8}R9^eehX26`XJG#99%a?z z(5AtrJu8&NBNdDsq63*OgmeE9{FTSAwHr_}{yUuoyJ&;fXToLE66`T#;PFx9Pc7u> zIDTQ#+fz^<3>YYAHAy$=Iwd;n@Rg#x+}#N@3NTxsU$7|#=} z$=@{pi%4Dpo#z<8&?bAk0i6!D*P-{!XkekqfdU+1XJ-iDDMJVVA*pg?MUjC2B94}$ z_hRt|8->x>%`J5^`H2=DN?Fg0PQGuQ;}duAR6(9|>2&?wZLRn?8eU%x>wb|0<~TX{(Sm&gd2^@2zHxWLl|-? zG7|o${IJ-Jq|)fK6}qyn>Np+2afL?WGScm8ulyabt*TR&ODc-}n5$J$bJ(uC>^;6h zTgYSo?@jjZ>%I#&qz!y(CW*j!NQUhOa5a>q?*l1Anr&`u1B!%TXpLjpLaQEppT2$J zZaGuR232?FD5=!@0O=g>k0K~(|6*k57yt%544Ahx3Yp+Cz#^+ZihFgC$aT4E2!jSt z%Rp}fX7v8b8&}Yxf?p2snx1odZX24L|78&9FB~0}wo3_fr;}YIfAB>H4fd@8a~*7w zJpVCa6+3n69YzQlu!4noYu=NNwIeEwDk%@hFiG$Mu~dP9nS8F%&~PZmXtkHBeQ!tz zlKzhiP{~Z}vxNqb);kCYP@2pSmDUY0{gcWZkx-zEtgacML)65; z?r%*~LXJIR0H?&^V47}&X9FNs+u&vEpQ!(gJjZ#&FB-djEtRGrhFlPj?ZKWhY`A#9 zTUj{!Wr26|LD0e2{w5&-1GM6-K(dY5SFYa~?eFjZooiabgJThQlqfNyBRCWI5db-L z9{^0_ICRRUtY;d{K@1j`fhJ85XyQ9rc0QR zijfNmY2-{Sh7ipLuT)S?KXQH&UxWHkm`+Po8`fkGljIn@uN)30XEr_Nb=bG~DO1IN z$bx!;Yu*1uOL18rZO#ut^C)C%q)SCOL`Ww_d|sSRjJ24tFxZivjsSqN8Sq90&H&x4 z#!vTGZ}66Br+^`~6rVoe z1a%9Tw)9=_gEP{BFc7-3uw4G8&9FKQmHgp&N1IEfY?d}(nY1-NpkBF65*k5pWRdDi-Azq9 z*+Mew<|DsR-lkjFH#?4zHoceb*-(}N9!qin^@aFI`VFX`^xo*BUwt~;MUyHovEIIW&pIo@?R!4C(7~kWuFHk@Jirc!9LuO4DzqxFzbB1 zIa#q@s0r4#TM@PJNC&HbaHd?R!i&|*FprM;38zl94cni8t+EgxYxY8Ev?gQe{*8wH z0mX62rV+fvg8}cL{l0?o`}81Wcyn?SzJVRLk}3q&m>4u{cS{Y9r<*ZuRs)A}Nu{)f z?9h<--OP~g-OnxS=ScplI^$H)M%c_cgTU&^K{w@t;H@7Zdzno_lLZ;z@jAVRgq?37 zvH+@^ywrk+Nc}9e9MdA&k7?Z$`ipJH1zH;|r}M2LIRh+FRzX1pz=;RQE}&Ip@I>%9 zUgCniWB!aKe#|dbS~~Xp8S4-PAJjM9%pK`tjn<}5Ems`)$gln=kt`j9pok3aBI_0% zwq({0bpit3#jYfR)2GD3=&@gQ(PD%&4Zm~z{Q%+zcsUCOn!4{!>Q%=-*D zTtpk4k0~z!iPUd7;YG83pC$QEe+NG1uiXzwCD~se;XU{G-U>Clt&;}^Mq1R9Z~UiR z#%-;TVl;;fU@Vh3H3dl_V?LRNRZF>zpC!6KD$aC&DB1n<5LBWBUXdiPq~fHthxWBy zklu8()EJYUy|V0eA))7c>;hBdQHhFj=k<2{0w~H+<~SvKE}hdzK!_@M1xWQ@20G<2 z#pM*_FaE~(8V1OBi)cb$fRSlOo%jLE=jO&IhJE+Xc`t_V(B9rVsPWCpR>&4Gr6rtM z#1)f8^xB^D%^Dz9@wym)2{;R9!;iveP)9j$)^E>X9c6R8CxjDxj?Lm*Yxq7^^h>jZ zW6Y}R_#Y@xJJ+oZP6mdVDf)K^psVP=IOjN&y`B7UbGpD%wbi??6irx4s*1AU=hXoR zuG?85w{A4kpaX(YKf3JhJNNJkb$i{(>K9?9xi4FD05$*s97l2Gve(%3TqM-f9ba+; zZN3+RS{7-e-8gBUegy$0D0uv=S!Uyc4~(wM)mimcvw#|bCwO}b{pWk8!P$?JbU}WO zQ2>a+_r$)E@)pYW;ozaVc)S=l3&x&`bK3hSvN~TK2oi6? z)XIi}BXJg*FI@1I5UB_~yh8PaHZJt%QKW-OI_%;5;`MplZwV#G@A{n^dI2# zjrt<6`js$ufVt?apUf*yb7VQYDjchNr)bGKrI4(JBWQo=^eYBa(Sq}cmf*d8BG3KZ zA}Yu=`%ejk&2D|CuatmsN=j?ddiaF_HBDDy!h9q_Zf*GEZ^%Nwt9KryD191Mk7$ps z>uMiUhV8o0)9#C0iI&JMF}})MjCZ-a>kCk92Dqe!NL^22Er0s(eg69C=wL)!#-n3ho{*59He1-MkG+EyXVkA~FtUaP| z?Mz-{BaRUK&pCqr5wcNJnm20~rvixj$`KOz(eV+aNMU*NZk8+G9I#3-v+Y<9I}R8B z*!6@VdHVfH)CZ#`NZ*qFKDUU7)EaozO(`u3*m+9R{Jg(vxGkxGsj3HnSBqOB|#X>37;`vE5mBB<#u0@=>pv0}!f&gMGW4^am)R zKsye6m%N|ixFOef+(WzP4gV4-qcIMyc!BpJthiM?rPmI7r)U`#AiUb)R<*M}Lcrlg zg>@wn`1^wm8r|G?xRM&FphI^&PlLCYF9%riXGa!Y#3tie zl;PWhc4EzPA4~gww=&Df97MqaMmD8G=DPPL59qE_J)nTc3d20WWCop>KJ#_TVW=KgA4p2%PIw4yBmuDn*r{|~IK>vxf zFi)>cg%(>$8N@XHmp=&%%Am&oOj;I-0y?-#p|s*W|&D;Wa zlnT>GiCSs>H7G)|Q?DHDMr(tagD+k$4~k|ND`){;f|8hxHHLAfdVaf}3%ADy^sFB1 z{09GAF|nK&dxySP(?*n|n;(>$AM)4}hDzj%xGH{VX8p1HGoN#-J657rf%l)*wN~Y! z>G;xUKK8#2jj%$cF!mpGqO=8;|5{AjRkYA<-$qFwu5rUA?c$a0fKTv!fx@^78(n6* z=qks7H?YLJMaa#Oq;@aJ?!HQgzn@qXXPElK!zEtlB}6IhJbPn~Lq-TKR6WN<5MC0n zx-ui5*;}WDti#fOW!a>FCW51@`y{8BVqR}aiiAX;GP23j{kZCY@aU&iZ;R=%N-F4kWJKjo#d->39TSOhc=hy$&j8dVH&_2PYm1P)SjX5&{i4jRlUL)(rpKHx2-Oc_~s*E5xq zDOo&B;_ACU2mh#747wSue1Cg+G(r0kZXFLtnx+e`J^&>XJTBzCtYs38t-A-BYd&gQ ze@Nv-nvAATchRI^ML3B*v>zaHotRr1$nm`xzmx2|in+bk_XbTTWUJ$W_@DOL{fI27 z_S{y&c1k6R2+jJkj#TXk7TY1jdNMDHk8@rYC)~fYNlT*$kz~$^ZtJ34t3Dnec;~~4 zdInyO0UA`vHC-Ozbv3Dq{*YGcWeWyV85`DI8EG+u{ZEwA#;jA}T@mzjX96)E`37y1 zf33?!n61}>xDeHcZ4EK$0;`? zKk4tP;Rx&Q%pza;Ie}@Sn>8b>8jnWsG{>L=cpVS%tu6C40cm<}IfIp;c@}-mRf(RB zM`dJ_$wU;h-d@+Bs%o@|L=rZX4vFR2Oz1|ls92UG9ofUfBWyD$I1={fm$FP=_hC#w zv|}iV1*lK@^Z)1z0j=^&ncCUe00}!MCug9NsFh7p8b3e)H@e_R01B8-$TJb$0!A(4 z$R8G~qt|1vJoBFN+b?EM{>~S&QQ$;B_0HduwTR#NMc`DsP`9}>G|%+=vrC9Us(T-r z@vw7g6P(EJ5agU4u+lOHQ4e_9k}`G~l;I_Rn1ZC$T#&O$DRjW17B^pt?T*WT8tpiu z^-c#R=$Awh0trLmQorA= z)}5gSVI(lU4sy(L7`VtIN|vnjh44MBp3fFr{Wsoags!=&1j+G&DVLtm2o7M8HX9ak z45Y(<79X#4aFC}h>#ePE5Z@6F&~`NIpwwBmS~Fs@MR~jd98Kk_xubbi&6A!i@BsF6 zTJiXvc){|Oa^o+%%&lbdI|Q6x)&+-zS@ZKoXB?aFJF(+>Bm^dmZ?ioFTV;~W!bfce z@hHG|$Esl}F{=-5pR1N}63*2pxypC^SBo|Ill!dQk4HhuaPv)k_;4OH6x@0fZH7+9 zI2H)jC<1$q)okJxPmjH0&X?T_cP%AEIwL;FyUNr3{bQOGhDG{8L8uhgQD_ut@^CG- z%0mnovcDfK{Ri#0`?EIxg`v*LM->ptyho=KLCgr;A)Ct7BOD1Z%GB#`V&7z@3ITU$ zBzJh%DWs4t+~Ged)GdqpMc7{y{B_^LjWRwn6DD%(#>x2EI}nnrd${>XRcicLwMGph z3(-*cw->8cHax$@Bf=`IzvlA&yIjEFx~F)nga(aN{QUcI>Z(GuDm2*seNsYbHk*1a z_V-Xl(byFneU*kqC>9lG0&BSA9VuAU<#UIoDEHKPu_9ZfWdWHVTj&ZIqbv!|(<`y| z)3YVs{beKE>9!WI#aZF_!)~EDUl&3dVJ|SwQyWC8KS)tX9tZWvFPnnhY_jR-b2{po z$xoEKOiUU&(fQ_0Ty(+4^mga7rCOj9_{JmUP?$3Ph55 zsLbZM$~mHvdm7{>@iwN^2&0sV7E7NCF)+~yqaYr$PE@h<)mRd28To31Ka<#MG<<~| z&?$INZ}EGqR#s|LTTePt{GZ=(5V+JOOCh1u&-?^}bD><-N>UhFNebtHLl0Uexh-My zx>zZzpr%i(dqR};n5WU=jMGj$>$wEmbSeH4)o zA4EF%uJ@y%rAPdK)XNPn3>XOsx7nJi0&Ba|gYeOBxFhMF#x{|Jo^Oq02@Z`TzDg*D zvf-aJ?-E~wh|EwDA0B9GRl1alk9oCWBKIDG^YMxCI?O4-f2QD-Xn@6GIQNlaNXsAo z7{cyJyd%-Q1{!(zI2&ip#7c_BqSn?(POG^Z!#hWS3yy4U88&#VKbKy=+ z(;wMd7Pu@I7ZLGd3zy9dBhmjDLpS7(qD-c)`mfkYGS`^zuQ4g?b<2M9u}eWBPo+`| zA%Uj7?q=}u@v(TId`taMm%=c9f@qx%$NO1J&Q6wN;%eHOXE!(!OW!rYGTD7cITei(DE-lycc{=Ah|3KHbkDfQ~`*rVd zdUiP!x(qlKG)hR&CmY&fybr8UGY;~g>2)vHAHBK6ushVXb51{O;)y%L5*@ahLLO9&1ebEL63V-Q0-h(|XK3Vg-ZX~*SVax!&H``0(6 z%8wylVbVFD7tk-frm{A=Ht3Yre-y}F%`omUx$*pP^V?pWemi*nrgzf;K~JTM6YO%x zUq!HT3dzap_3U5XYVU7r74;b}m0?ip>7T%GixVy`(v;z^GB!Mzx4)C;BtTKmx41LZiD? zb5;R9Zzl(ytc@F7W_?qIYaU7_1M zdgp%veM;ju9mCsFgQ6>gp}s~iuF5*)fq#a+%J0Kv;FY;=geEItmFwQ-IasDm4^Wre zvI*|?DUyo(7f5J&hnSnnG9xZWi=>e4NitrM5IJ@j)W{AeT-5x3kwckx>4m$EF{mqt-R|cYBDksISY`PscY~f!($@)N?aXSSNYHfRs~IpJ_v15j zxPh2V0_;Csz}y=WLg8IN#zL=3hG#t=rL>R&^BYH0C^MP&ZFCE#e*BG_a(~s6wrLar zE2dN|M|P}~&H@E4dmB^_feHV;`?M@4{kEHHg0z^x$0Ra1hhxv&BlT(uM3+V!B#>Df zjzRz==h^SBEzp&|JN|wP5_c?1W6D3ocr^7MDOD|ag4dV}%;tq5rX%g&Zslc;BF;Ze z)L=8~nA3$U_{_B_xlwqzv#7eRNU$;%u8ueivd_G0@4XYpqr?+*&w(QJGc}^J>U_Jc z_P5pX;r<|7mH1RnB-JXYUWi7*yb&MKx2VDi4&y=Z)>QWTdfcC3 zJEg;7^4Tn;%nLM-IfjH5jtOv9e!S}g{-<%Z_s zyvBhLO-Tl9 zb#C0`I~jzIHEq%IZN4}rgw_RQnXEfKx+@kI=Qzqd&lxfCT-Rj|In7v!Wc4aIj(Wp( zTECMLPDAtu>}!Ot!kNt|9SSsPZJTe*!Om z;?ygLT)PS5@+RDLuq27O)y)%eHbMk9&Ju|NomIi=wt0-H?j51URhHgusyZyU%X7K( zofR){F3btHsliHNO=`23=H5yi#8af8QIt*&S`#652Kn#TroE4PD{yDlH^079Xb^R) z!U$KA8eBM4dcCmANTga=ZG_k}7OYtRv65npGEPztab*|&McSxVP|eArrXKU<#&cnh zZh21emb8@4*L*=<3+j!fkH$%mc(`QR@l<1bCC3@Lq@$B_PECz{iA<_s@awN^?8NRY(Kvu!=2{k2Q&}yNDpjgF_~F$ z*76|u4&Pt`C)lc+kt~reT_33vV|9v$+}9{2G8Z$q_B3-^WlNPsZA2%nfX2NpLt+aO z=l4~8y5+;nF|wPa&#aHw6t}B9>zdZ&c)uzEM=fu2OeRY@iTplS?zCC+Q=CzF9)FkZ z{H5)&gweICCVTu|(MtZ0;YaYaHID?~ibbV-&*yd%Z;kZUf5;G^57}I%J zoX#7ycgMY8AuMC=zk2A3cQw6PKE53L6eJ*Q{&(Ik)TyhurkT?Gws2u7L^3#>{VE!{ zN204>ZPwo-r7K^??#hBOEygR)Gi`?d6J`Ie9 z=jX=B7oHtd@~3iLvzq2HAF+jxm+Pl=!9&j$L=Ko6Cg-yU7IqH3r60nVPgG?xvz1f7ACVeU*dvN&go| zDg0tqE7L(&UvsmgILHU~ZGP(Zi$nkVa#tRdb&0Ue>;Wm*bHui?t28h_VU1-8-L;_M zIygvOxYRvL-i^X!I>L5h4ojAbUwo^9E#_AAZU*P=fdr>PL;d#b?BvCkK0QSpE8(vs zoo^Bgl>QEr%(ykl{{GyHoKF`Gs|0c+kEIY&m)Z)}(YOcfk-9rhQHCXx6|6OM?*idQ zq=-z)DSXP#6`uu;!1~xfd0rnZ1|0TzB_BFya}hOG{^l2Y*dlwPHllfiI?5Z@Dl8xE z%r}kW_-Rw)Vpwf|VT?>j@(xqe3B@G2{K1=16bgU=ebunRor=khc8LQMcN>W+iQc&u z&Es|YI@4WT1JsEGi*X}M`KEDbEBUSxK40r>ClYanjU`LuRk1eG$(k4>@|*3IhioRhkRMZgQ>t-lXBRrWVnPUX`6?ql_~V zAPG%HG8 zs2ZnmpS5!D+PM74_g>n^XadVjS+VaZ+p`Mbl-?hia zWC$bSaacor^j{Juujoycou$PAgnQ~kkiGa7)L`EB+feC1>e^&EdgoZ-;O-Chkl zCM4iwrj(*uA%*Z4Jz5+n9DuBc3UKd)@^0V z{pZ&4|5|_%o7&DmIkFQfVQ-YAxMi!AH1f~-3Zy*6IFUNXgI~LuBFFBzvtNh5F8+=($ChyRp+%_}6JyM%kb3jy&BXzK! z8|J&BagsLvuA_s3RooJnJAb<)pV8}acjW5_OVU0qdwEQ3rqD;kcahN$0$3ABiBPXi z+0Wf!##G_|G)^@-l&wC}AAS0fk@-G>X5++cVk+3k=~>getFl_5!_+bY$Ss{7|2P$y zr{sDtXnvx(ls{HfX4&VJD3-2a`dSNFn995@NvC&tkMlL$XJ8+PntgxLphVrK9%Q+- zx8E-{-3BA7Cs7>o#04XK)o)7z=-2wAT#vCk<@h$K7sbs4gNz%Pikc@ilMUrP!aqDK>-i9r!NN^FI7><5wy0Z*6%1YL}ayGq)AkM zbA5z?j-$ROO+7x#C_|GlOqxSVwZnoYQ=YP2IQLzo=^~m5d2Y)aL~NZ(-E8?!#c=30 zL3%6_P11>fsnLqGN`rAb7N3`AA{PfA6Ngo_La}9s_T0K`KxrQ+?9+@Yc=#<2mO7M! ziOjyWC0X!Q$y+5gve41Bq(Dr+-HGar?~+A`^5$A z$(|XbK!qO&#$%wG7onDIvQ3p!`8G=Fi2GGD>8#X1XZ(Pbm&u~x&MV`OlT+;)HBNV|CYDB@~HprM0owCu$mW3ZsoXj zP^KEEj8tZ+a$#C*n(1Mnz_zau=gl3n1K^YlFSi2LhyN8aL?d*G+-EbSMVs0e_T%% zkFEUqJadTFjL9mXYhnMc_iT}tEor!d87N2*_4MAXwrmD&)0q5M(n}v}PsGdjUski? zl9i~GfD%t^peyO@@`3K6gUjJ$E3+B8p&k538uk{W0v?*bS$ouD9ESM~u>#|QVRAmo zFa;C1&N+=Jx>Lw#XtTO_xWon#%l?bkebTYb8j~9$ga7Ut1Rqo`yMna_vXaK)BpP{t z{QP!Jg^7H1-u*)OlJoK};7Jmw3}PtW42l+hA`5v&kKbsC3|;qoEZ^@ECG8?eCqPG~ zwr*Z;^ZNU+Pb?_dZC+0A(&jA9bQD!{1NYvVhy90*v;2@X3#=nlJeQR+L;S3z{IuXy zDCAA7HyVBI1o4%J+N*_vT4n`xNBOrm0Z13o5}z`!5^qu#rZMAikOZUOKYtHk3YKk^ ztL8t=P*oX0K8{)WJ;VviFRKK^*uqRjR^L(S35=4L)drZpRm);k5J z+wYdsBtXrG4U%h=D}e8+LbYnSZSR<|kzRw5UY`I@<5yW8!W&Cb`3!2Wd?G8O3gg1h zj(9rr9EwLm~_-?ck6I)_hoDbO3u$Rh8}CGyo#BBDb-q$q_yxCrs{x zxOfJQh$1T1l6&tCttRJp{lW-{IV+QO`(1D88`oa{6q{0Cd`=H z#+B$9_f7hRm48-(vn9`Y(9F^@qoM-U2n!NM9GL=?iDF97u)dpsL-FfDAa47^AaknB zGP;aP5)hdM5fPQT=H@ZX&a3sg>4BfuS2w&r1rKf|2o$rdu9&w;kx7RAjRxbT?F3b- zBZYx&@6QuUCi-P+byc=*$&6Nv7fAnVphO+;NZNFz6cs=ELx{i>S)L}9Mv2Tx@8_>y zsOn$w`mXW3eLA#Q*o2Cwiv$^;}-U zU_XAZ4cIl-H4Q*>PR%H{xfrEvD6@dT(CN;}Is|+KW{e~5t1I_e%RVV=-0=CPI+x{F z{Ta@5f|T^cWkgbhT9wB6nJ5ZrYGKP)^{Vec@r}ppk64Ytzuvjle9e)@peHlOGBN@5 zwA`L&M5!|GDooXd=dN{m(&y($zxzLV6ZrozdfwT5lD=90*mdT06VRFu#KraQC)x`& zTC%0uM$0p1uYYp#S`!E~U(M_9QSeJ@TjD4E{<;8}4#A?^xnDluu(%&D{p>=y`F%H_ z!qwuj2{uZ;ccTV-!6*Vmh*0362jRzNn_YgsSBZg8K*#@T%DuoC1v|zRnc3HndjQ2# zuI1G1^2LtlyQeBw$TR)jBc8+WgSqJTDh&m}&c6W!^$i=K2ffDqs7Jm&?;C!%dI~vQ z;M@K5XNd|CV4+TgWYBKubS**Y2rdSrFyx!_uFP|P_rH(JoqbMX83?Zi$>ncGP_YtF zi*7(G`ic`V%S(GeH2vJ57@cHgToHRv6} zCz-@PILUZ?i_?uxI-RZ-LWX+^puG{Fi zaU+j_r9QH4H{n4GZ#tJ+hPI&nsao3~k5+CSQb9dFgq+}9x>Y0&1AMn2%KnJ@8w912{zBT@5*Xzk~4RwEKkt@Nmg0)m!&B9yDA0@zJ)?UKJ^T z*TeeF@N+1_$IE05_p<@qQ(z4-8J=Rwe;Ts@4=4Gn+mixlk`N{1<9@X=)Hr_-0erM6 zEK*)Gk{L^1LBrWHoh9cZOz;!H#}Q-m-+&-{*q2xqudd!Fl(l}KO_mcIyrxQ}`Tnm5 zfK$AqjO)T*WiT6Ee0L&4ez%+AP0fiH@#t{ZcF{DD7*H~P1pC1B$NJga#X71@SgsA}Q zNM))tPM7kWF0=BS%+BT^K%%_r0~BnaQtnds}S00L^rAhQxWP`cU+-2Wj>A}a(h&Z~9{7)_kF`rrWT4#er{ zb+|h{UFUC=0hu@mz5#lsaG%r8c#%Rd$$Y)AufkCP^Z76cce@@yn9X5l?CYDur4Y0I z1uBRwdqbJJAAmGA??H%YP%a z0ijP19_M{%lgS98&j&A8f~>|vU=2l z=&X1;+W%(MVrFeeA#)`bm6u0@%|K9fi`{lvwgaFv=Mjyyt$80&_+O0BT2^Z{T7KsD zalZsVP96*ME;rzYcdgzEZGSTMtyN*ea;tZ?XVth(pr}Cpeg{Zo1Qpljef8!RxOrRP z_~^NX0#=e`p!NFKC5tX@yXlYHvQ`iNNn~KMbi}i4!g&P7C>5%mS0C!;UDYYDTbQRY z8b~m-pj40<+%*}PI6Fs`=iNK(T#9#{{rlK@`s~Bye*8inRY|ca8mum0DF_wL6(`%U z+;@x4>wXNLn9Z#P`j!inm){PFqfal#ofZlDi(dP8y!&CC9`OZGdCntHmI|K?*&7=*t34tONZ^L(WIe!Yi{gA`hT zP|D`dpy=U1+0Z0ye)u8qOo%GP-O;Yph&4ozkf)7=ww|Qh+e*+Vbo~YIH)<&JtO~*- z? z5mBZ?UvBh5tL?nO+27<=1gf!D>k7yR1in8|+9#@Q$rJO^D24qL%fJh|O0ce5%iw7I zgB?3~aWQ2kAu0LAzB4rP94;(8{1xrfrb{3xvqe>=Ud7D9*R!^US98R|&fb56&+AxX zf*52Y70oh3^+SewgXH#)^R);%1_%pBbDXkLGrL{NINa$75OpfGG zCqrgzC06|hHsTccgW{C%7?zlWmC$WN-hzdHIU+HOZHkK1W#KQUwO!8Fqd^TaJ3rt5 ze}S~J7c6PAK67N!sNj)b0vvpRaNEDw9n~dhkJ-+GAG!9X4^9C_k~okPn4<3L?zYuN z(A%paWn0)HMzP2g7BjL4@&YSC0%9KD@Y*9?oGVwrGrs%ZrT&2FO=1OO!uM} z$#~QdV(BC%9*z+JUjxn`3oe$z4a+IZIqKAr)|zPb6`>J4N}uM1QJTgX8tC%Rs}9}x zo40pAQT&C_L&cQ(z&%msY0Vp~RI6&e+l%G9UAxr9X%9JS{eHKX{Yp3lhJ%rQg#8b3 z+`1_xB^WnVVbujLSXk=;JYmyNr{1VSOn{AtJMw$T72@I2LDRb+KJ-&UJ1R zi5lFj_oDSU?#eYLo~#U1&}9U~(`+)G!9smjI=*Y~U@mn;B)z=_9gnH``RHvf+of-T z<2v?xgfH<9tgd&cPNo+hpU1oJaMt~12+ZvGPtjz$2e(}VFF;>npr8jNHz zD_5c5Ppx^Po%$w=HTW@c$S&Y0W6=?; zxcxks-TyZb@QB-Z{?7O#o`I=PBUH*|U3}vOndEw1oEdtw!i~BN0LKf3#Uq6_&E%TY zV!t|IA$Y0vYRdXe8lEU}(a-45Jo+v{8Rt;yhbN!T+9kE@P8Pe(nQy${U9w=|r=eL} zm=L9iA58F#ttay5RMq1h;?hat8YL;R8}$96l+r;msHmlY&iK3b`LLGjTYw-TaJ=5_ zPznye9@1z4u?LdQVS^CulbZ}+laGEktL1hH*HTx*stv84ewVk6b}Jq6*`lTM@MIF0%D0@TaJKd!sj)t$^N%SSj;>;)}-=@yA7P5%FP=h^G82~5lh=9B^6VB zhrx}icCf*?0w^q2fWrgu1zVudCiY&!BghAb^v;f$xex<``nfM*HCw4OXgm}I@+ED+ zHE4mU@4r~xX{Lg&=f)HVe51~PZ8`Yy3rn8*6JK@SX)nW~!4v!94T@HAvGR?xC~+wh z;Y;Ua^j+DMR%3CIbJXB@_oX)w>fzr-dRHHz|A`Gq zW{~yWJ_?8@Wp4c8luQ;WgrJ)_IQ&t|lH;5|U3Ws5;)Bbj%U1$NsxbbYKcuSLX$_La z;)Vmt`y21Ep82V+M^S5aRIZ@Nc+13~7awOYz9-#!_F~u=iTlTjnZ9JZfdL73z%vUB z=FUu!r#grC%jDdYfy!Mh3+%5IonuB51!!TZI!!|Wffp&1YHE-8K?Rj}nn;yOer|ph zC9+h)FK!`8sVo!3RFJ?30ZwC+FwrLF4p>B!2zB~k;limzqho2U;F%yUWlg#^HHO)v zmDH)ZRR35iM^Th7%3k;ZMV;W-2n_IgHEStyt%^Q&q|pKZGhtthb@-oA71A zJZy}lN(FH8vWmLZjVyLQy8)O)8X8fE(tlfAB=nDEt3_{?pl8q}immXAlt<`93YrF* zWc)!dIZTkS?cB;e%Et;mjWvj-07W29_T(r!#li@Y+x2Mb}r2m$lH12KqUu^d_`16 z?V3%B>;#7vd0uIv9)2mm6PdkzytO*b@n6n703#sepMKum-8*ppzfLV@)%!K8BaP7l zhl}`Vgl)tdmf5!Vxca1x`Gc$aLu(pJRf~3Fk_muQi77j0?S@9}7$ag9M;UvH3ndswiu7{4zKuUi7g22;FV9N7f4-W0b^w_8#n7@lm`)5&S(5tmyX~SuCm%{m{BPEoA(aP|`_M4s%Dp$(=<_ zv-W=VXQN!K?hv-sqxHW~4G&)}amav!l9`e73zQ(>kc|zThx*!W#gEHj&j!gK z)nExlCqCBrk}{eS^~z_;+cyubms2RNVAa`D?0gI{vJ9Cy9F`sGCcG+<+slcXWwJ%7_U;HH-qD=`4A#*lts&_oklt*bZ_g%0S} zx}LXuf?gNQ&j%eZeJK7{eguAxgM1gclC5WdL-S2kOQx8tGR%7-02_jDlB}!-TUXSw z7>gb@Rt=VwD(gCUh1(H0CzUExsnFrmb}J+t6j9=AHZ0uD)8b^_A1&0F057F^L*mcy z9;(LMg`G#de4jrqk02+3*+#wAsv4O-vL^#!pK*GX^~b62?(M%J$-loHy6wY3(J}j7?$MJuiD1D1>{SuffRir5s54yF8}Q?gmm9KmC(1Qxem{U?pEa7HsaC#9 zc54ZCrOu=lXteLfEC@`&91Ae5TweX1-@HHTPGD)0k{09fxq=a+I>=k?t4Dl(8l60o`ST5=N781| z^S9X>VPtClM)$8CE22bJ<>hwc!D$Ud;~190x`;Zd*cQqA1$K$CWJ;E~Ga=xc3O*44 zZNgrvOc^)kGMaYcs>(CHA{p^EZtS-dVJTnA1!O0YB>czwlPw=$&n)-6+<~*-Xbt3w z%*@IG4R3*}NM~IHg&3?#lc!UmOzDhtzzfYnjb8NWzLOpbHJ%CViiiA5V4FfQh>0DeLYCjy+P}mX)8rP1JUL?x7ne8|;dA zFI*!|A`4$YmBcbZd=jXlsvU~@IwTm}NTL(e=-m0Vyk}F5PWoVYf%}p8-+Uy6v@zyK zOt0NkjV0$%OacGN!N_7PVsc7F@Dintf`RCCdi+Jj<~=&f+RJ}n?ACusGPub#v9x4a z)(2+@9PgkDLdN6!47{q`eqkOH-Js00Fm(-i^%TDsd?IRaX~?AfL><}~Vl}&8XD1$)XTrpU0vMlwW{S`W z?-Hbhy`~6Ms2Z={oE$HAa7Ob)M#rImDHdJ)wS@pli&Xm(-%shOrmn^i%N6pCU-?1n?Z7O15R*%T*jtrU zIqNlV4}I4Ka0-lIGV-<>t~dg~3J4yC6~D||{}*B;1-esVh$hbr1qd&3+23GhXFPri zLFcNem<3@ND>^X?uc_8S3EJa^&nS3YQWlb&lmL|-h01_}1m-e|-$2>`Ap6Ur!%bWy z{l6BVe{6jGVkcRVg`eHd&_PDYfz9*0KYgjwhqGnP839zzc-$8(9~p8c_vFG-WHt?q zFl4ZB+WTGyp~wV0LwoYsk;cjYy1soI0>donq%#oFemNzYzk3_-a@)}NkMQ~IJt$MR zz49V?s9&iKa_9#w-9pv++e>vC05gH;gy;15&*{~ltI>6VvA4gkByD_wuA8iwQWKwY zFqDW~b5xwd%%eBRF43H_5P=3p!dqKGk@nKzQnae>OHCwiXrw>U5Gyf*Z45yDDZ}+E zM`~9~fCad;G5nEL|8G*se`CQY7iYaFXfSXx8ksp+#_R3b8TocNBc^tU-CR+2P6Ek; zhR)V}m{rky_e&;tJgy1y*_!2Mq&u0Vy96GRu@S;Q!d}Nxp4$gnv zaRT7;PckllrrtEK)o0E_J)y&UbzST-vhuO?0FlMW(h^l?CqEvSBQVSJh~W)_PhVKA z?r-2Qb#KPb%*@-n`Eu%M1czXx0lxDL5^r0_3Z zcHjYG4>9T+8mqf_l^4Jq@%PjbTi%e+=d)fi?m3;{qHC zl9Hj3kn@%p;59I*RA$FglsZQOX2h%|+nJxB3C7`Hjyobi;$Xvx9XtBl#vo$@s0~kk zeyw?u4bz7HMuB&CcXWlCM~xYC7k8A7jxm7+I{p1)Iq%48^C3ACwQS+U`IBHC61wjN zoklB|Kgr6+CqkTGu3l>qI@ieIMxb0QEHlVNXeDoukDagGsZhKD_OukiwipQSWOnP- zvOw7v4amcQM_jS$FI`$*J~+2w$pM5wmLx<2m(Y+pzd_6t<>vKH-@^^X^QTk4`0YVO zh`5B&@!!8-R*p8v3=UEdI%5&qgqnRzQd$Bg)-@9hjSISM&Y|K6vpV{=iiQ_T_0Y~8 zl2=zZ_1@RkU@Qi3-(b4~N_H4|Z7_wzU2ypCO#^F#ZmZ`{q4XrO;5@i&!PgP|2k18q z4Go|UK@0uhKT!_;cHUotA}(XVLj1`dJTR4?VYodI3mp1@Z+CEbSfu&K(9|<1&tDjf zMn_6NJNK7&ESfnR$9Z=~9<_sGyg0?!+&fOpC`I$YcqwjZfF}-$jpEdJdjJWn+CW~9 z^j1c;eLLLdEq1$artSo#G&*>VzUuQ!VNp?(GbDb&cHWSeQv|mA0m>K=iSY6zFvAmu zIPZ>Nz`&?0(P3s}WsxCfQ>A|M9=DDPB?%RYTweA9qbb-R$l$pXelnwS^Yoj^J(8GM zg(+K($mERYXMOeBzmh{~Mu6^#O@Ljdu2Z5(H?_PhT$nLG zkiX2G83o4IYN*`???Bds`qaLv&?{|8DBd#(zg_9MQs3!KPxXz*xZ53#5||R2zJW{4!gZetrrD0!w5{OZB{L=%w*`{VyL>R^vH(#ML7%~`2Dj7Q9+UcA zs4sz8XAiZDB6=8CjSU(ODc>UA9}yWDU{TCt9_F*X2irn$6_?C`+WKUPE_M;x=OlZsi_O~jv5<`2h7sSg#pr&hpy{BnINJ@ z__&|;<(_v}IB?j_M4|87Y9u@LNnzj0l-Bc4>SX+K%`3?`M32vxco$@ztlXA^Euw^8 zs1~gS*VwO_9NTo{O(##;eCNlz)r&) zoJ`N44jw8N$OpN4&n!=U@OYrg3m7nQL$ot}(U0^LerrgyIs9s8;1-m`3hi^U-S-rk zxNT^WOX~Bqbtzj)R~nOlw@I(Vago@8a@O*4=P*T6_wL;IdA<8Vko$SX3G^wFV|*?6 zdpdu>EVi{K{3t663maKLoh|ssk0}6$q5e9fm z<+iN7(2`>nY61*|@@SLfDTGfnn2{!ENODN`TyYhP*62~<&=83a%CL{Raa4%Hu-PxD z+dc%+BoQX^tQlf5fu~5nxZuU0s>x}l=Wvm>sETH$jgq|aQ3fv)d-}u9Vw#JM2*;c#Guu zm(x^9ePSXeyb|UJXOMreg;P8vN^g`ceHX>y2~((Z_I6#wWC~M=qV|W=8P9pUFNuU9 z=e?(0p$afl+8@FaVCyidb0VG_1r##;Y&#zIt)X5mvU zXT1lDYGs4(X~$+MhZ4JVzW;;-3fs7Ou=x~|7Zi7Xf4|p%x)xUTHnTVqrOKJw)xv=L zdY#hwPQC~=Ipw5nz|l#2cGhVHnIX5nJcG<6@V{y>i}0OnLL^_7q{ovn-Eaab1ODVs zmPN!tB6WrslH%3sy)OL8(KeZu&;_5g<_a{aGJ~wzcje|5RY>Z^taDF}PE@}vf8I3g zR&*g~RF|SoQ2ynG9EaW~GW%t5>HC5C^L6(#juCpZrZ%dHro4jU<(0~$d6Nax_x@0Iej1P7Plg z#jMFb_v(Q1a^_C{p-Y!4FVbbV2-yF3y@HRYLK)gnCyagRY_SxLve(FNQf7zn z(4z>*S&boy-GeRJCdTK@Z0bv}fGgQ13Kc~UL6;R5+SE@}dP$?n-NPI3h4%%1^Ga6c&Z zw`SrkX?OF7AkY(FD%@)f(Kq3h=gOoZI6|Gy_}JMz?5_xJ{v|g^lA@L?s+P_fpP`9m zv3;?RG^bnZ)uk=v{)b0RFPad3)QT-ejzRs-2@4`lQBTwPo=P_R4m^WBro7z5}Xjk1uwm|v{gAPW@HjmD!wjfpanx( z<%&SeYAJcB#+h$p^e@&a(cM$$Vy50no^IUwP>YjradACRUN(lLCS4pBLVrI2;_Oj= zF#Y9HHXU%_Q3t;3$;)bH!-vVeFe;?+sZXw1Sx8A@&9rT&2W#a- z33HXE#@ndyGjxjaY#9=GhqKkH?jyG|03Z9c-I55GWMa!nB8!Z@h|evT`Q6G8=i1P0 zBSc=;f39;wWwxgYhMsr640fg*9!Xrpup&WBV|+`}s1{!DtXOYPo1l2qOjz!z54d2jVn%0wr13nwIHOdpZ_-$9?$2$%@-7;(6y zPs-RKnG9M9Pbn|yM&C5|homIoWmu6OgQ&Se!#&rezOtfkQHgP51)u+m(_6G^WM)^L zeoKsR^N)hcjD+KDq{(9G%-i1?&6aF+GEBSrDSCooZ)kF7-PH{6tuRlkv;GOD!>;So zKRykGeu-@JR6NNvB4p#ic--DO)(;u=(z+3B=}iZ zE_?gB8-@w|lMPYYJuH4TZr|X)vMk**+tot5O5B1#FDh~?i$L3Tl@bY|cF}T}p@%cr zCO@VVw67vrBA{DFHbX3)!^t4Oj<1~YVslMEdUW$OARyp6^ z^nOLl>uXzyn>!&fUWyFH&D>D(Lh7RS;KEq_tVZ)XV`-C%d=Y<9>D;XM-wTH(1=`x9VchI`v#d4UtZ~?kfY>-}ls;`f* zsxChu%J7vqAuhAIN)EQy+SL1N^*GNeZo`9qQa1D^2o$*iFX#x6W*U&AB5v!s0yH(hnaadNiompI02Ojd?9a$UCd%X}Cy8~CIiZX%72 zHiH*YJ~Y_W^F{r%dW zgQP-7!kj0d(NdgKnNmuw>AaV2S$BiS3%`&{rgmy04f0R?wL5^v0 zvIAtzV@uZT;&jJCF!3;lV`1&?niK{>qEYGSE{is8Ws^7r6hu;3&?QYM_B+JG$h91rKjsbE z4)^Iu3e}p2%VfGNgV#;{`_U(ewBbJ=Btc7!7BFI{#2azP?kbOb9<+I-WcnXzQk8F{?$Ks#}9j#Qsw`4-#XA$L$vdiI55NI%=z@`B?k ziHBs-drmN1Dl-X=Z0DlQ=7{rDYf&M#ubJjdVN_FyahLO;ew)X)3shPH8tJu44YyUc zMeX3E8YGJ(k$PM5Z6bs1-X^w4yGg>qA)eR+_U+aX`VB4S6CHE6U*bq}b9cTMZHeb* zwq5%`n!$o`q|VL9T(>8;+Yp;b8DftEoQVlZABux3Tk8Oe4hx;rRmS@FHA7K9K<^nS zUXs1aZb>1y_CE6^?azelGu00o&l3XZ=r85`MqZgw*8Y@fUySTt(r9{Ttnp+h|B#W` zsv=!UWU&xQqZ7~e8RYtR`O#ufZ4Zup&+d8VxI|^N+MQ9)v{8;9Bf^ps{4{O5#iLtX4|{DCqRxdse;1?n=o}o(CFmbA z$Fdg%PFMMFg&`!NeWSY(+kHKaS85KaMwjU=CDjJX56VJmltyKR6X?lT6W8AB6q6t6 z*UC>ePSzL8B6L-3HC-!^8s-f3k>8Ktp>fW|LgVM=ex|mCh0`$jcEw$-z`C9M)J<2} z;L5O^x;|5E_2f`HZ#v@8q~35%l5^B7$bP)4v*bQ_)XAXHQhD9kIH^dRVS|*nul>c) zhckmVl+8t!+Dxmv=JvVzsPDqd(9G*+|4mRFr!vntsoBDl5f+H0Occ>H=hr!&sUMRj zhA1mnsM;n9t87xFdz|T}6T#N!)Thz%`DF~HTvs8c+BDI29IyPS#Z?@);f{-;T5YyD zmLZBMRxn4j<@6PE@0}}8iDLd7^I#q+T=1JF*i>A7=VJm!@GmHtLnZm{ms0-naV$$g zrbY-Ao=-%e7)hfEx@}4*Oa(b^*w}Y2Om~z2=DB)=c)$I2rIuS#e__Oo0 zXy}{NI0ewHRJgi+iYJkvpwQIRWP*>q9xJy~NH8pf3~&Nef2*Axi%g09f3~uJ<~47k zgQ$e51BDzX2v>CYnXAxzyQj?}JZCIl7A1=L_`rLSmyoKb)rz&+~{B$Y>u9pcfsA-{X&l>KOl%fP$Q}pJ>egc*yp%n|6m2-QI z=T#n3l^N~rqSctc?q8JB{)eV>@XPc4!~WK?y=+^{SayBGGFB~X*;;PdZh5WlY%SX@ zyOz1^p0nTcJpaI5uM6k(!EqdKi!267+uwnOL-N1&GQManT=P}^U8IXhrYB{lGbpv) zm!4XFlPvLb$^rL!n?ozKO*ym2If((t)@W#G6zmkN{UJ4?VnnPe*!Famy3Wm9Qw#Qq zX(uNJ1wm|)Hrt!Cf|~X4+I!CTHw|FrOdfjxH7K8 z$EsR88;=dO&+qKwiWT%$w8r77+)#LR;@au(--5tWn9YF)?eQ9Sp)M~f0}zVuzx{0I z%5BZMH~~{^LI>$uoSXzV$f_>=SfH)IM}A2`>SJzVS5*Oe2}Zh@7_fl^i*>r6FjJ|( z$4O#L<-qJ~Smnov#a{R%s)DG^tzE~&2uUzf20V!n2-7joTd(UAb|)$89W(PL$8E%3 z<4N2ePA8gtWIMldpO*rN(BdqLrQbp_Mp?~=4E$-^92IU4pTX6{6a8ANYzri7%zgKT zQ>>YY*a8z~Wk~>)9S5T0x&U znMCv>rpbRSm|0RJOk5P<8R#FHyiWU7#4s&?hG0a|89O+15O22W`PZ9FEW)l(`ZE`wIbxXz! z?nsJW_zH&RJgW;-^}#*0AA$<@H4D`Vw*o&NQdqplnVaMnld}O)e9&}8?sJ8>xLIEk zqIL6U`WB}-q*r6e7wm!>%jL1TIAJWqQ)Dup|Lk$oye}=F)4lkJw*{AbBwsW^J=~Iq z!wok8A_@8*_vE`84ywb>Q@>C>@dg^T(z+SsQj*^u!NI4|&JpqSBvQp;` zoh9$K(A;i1GB<_VWK^*_V$fF^%8zor7Pf4Imb49wB6IP`TekhPY=1t&RwaC+Qu-<+ zK3!64TVcW3k$mZ7Re+Q*Vr`91<$zrN{g5}v$O84``d^J);9)aZ(}YDwqmuYNI)I_M zF1O6Vr^I;Z01bpGMVu=_8;-P-r7lZGQ^aX{pc%8o;#sMU267IXz{JLAWo&3{MCxyB zR4L<>{&W$dcvc#aT8Iz@@aIyM(>j=~7r3x+Z0lO<^^?z%>4zUS6?wMQb9E+f&P+5D zU_uq5Xm`BJ@%2wjv-CX+JPnjHqMm<}X89L=(1S+`f7t0t6-}wQ*<2`~#6+1w%sx%K z;4h<&EBz^Lk~KK+P_C9+K@n_41ribx0KDP;fX{4KUrO(D|6JS@uijLkXe}}hbedy& zk1d}bVyerh~x6RLK4B%gis|diymcymTlx zv3mRoo$0l?Q1ov=v6jXOU}O7J|MgkS*-`a7*x(gZKU-btw@|DK3!5o7V9-`MV^5!M z(Q(%)_e?z$^wpt5QT?2+jLEGFh}Z7!ur%4$om$bsD&?gNn3#>#KY#vQnj}zQqrsft zBlR20sjuLJu(Nfixzy+fw@@5;BgxfJP-^}zGUk5s9-<$MVb;JAYK;f0F|JrvF?%j; z6|NCZPiJ=V2CN1h&V|Lqa{v2?q?j5cgUuf?xhTrtzM#&mAlduYCrNP0ZnZZSkzc_Dr57ascc zjK2<9&=3R3}fZXY{IKglep82*pKiAOd#;9AfuKUbvI|+ z?yS8KUm$&m*hU0mP-FH`XKW+9iRtNHeK%5&d7tp-7rXYAp0Sszwp#wEQ~L0BczzE7 zwJrH0x5;?saI!5(f-{Zyk#R%hDdB zPe?K<#W~GVkO&ukSR+)rBEHil8gtLlAEyq-%IK#6$(7n%fNhvF{5FCN zUZx~=n$IjR2ljlSd?I~7JX3`j4HcE5kPEhxBarEdK8sY0a5s2LO2zqTnG+p9qoX;FU!e8HOcE#HcsNS&ljP`JryMCoX)*M(cMc z_5l_}U~J*BE(`u2nc6(lXcHu>MQi>3LM^6OmJi5rzAHn|RYjynW-d>gmVc0xvy8G+ z#HP*U_lW@S+kZ^SOt$WgJ@}ZC?4f9+eHT6q#KiU4(kzs7j$g0(!0La7Hmo0)EyAaprF-KJ*i`MmxvO&T~cMZpkZUPxVsu|Vc46IG7`QEWUF;$#&{xCvs^ zr*o2W-Ht0kJ(b*rpQ3s22jn`0_SuP0`_1lCl#}UHpR)Df@Po_t^(Coy**LkyYPglv zT6(5F4=5^#a*A;FuK8|>fSeQu;*=uXM%7K3fKwSFiuj@pMb;F7`AT0TIoYwSHkqLw zsFJx6I?O(6i!}p~Nq9EvRc@XoYWYQUlb1%G3aQi-D(|kjxvlVpIG8HyFv*0GwaNzk$ZFHfr z$qNhwlj{Ar;C^D{MHR1k?m6NvCg#Fn_c+w{bXz34E5=Lw=)79KROpjGbk;(B2JeG$ zaO^j++^~-vjb_Z-s=>X%40SrAxNX*w1aE+t0SK-I=en~4&5WpgezWI>N9*-r7$yhVq=v%}~4=FoOn{Ve{T~aF^ z2dVmHGhfI_7A1NV>TFWPIZ8UfCa0z~@gc%VX9CUIJ>hE-`;4$tFjp*T!!c(w1Xi}s zJEZ>8Z$%uBZXGEzybpn7hh7$B@xyl}4RL@4qD!sA?b6*Dfs%bZK+{O^vE!n&*mZ(s`$S1x&_ehkm7Iey`Mw zw4KY6hF2vHFr1RZSZkns?LQIFYV-VH(Rh0zIhMsYy0?czwxO2O8j~%S-7ubQwiRuA z=?pP5bB&YE@lLnG+iWIj6Vi89N8IBrP#>92Q~z%?m5RdvN3%Kcf={r&(}jv}O?=J- z(_01#fNu?1s;v)Q>usCE!Dqp-2}-kE;rt}n$a}6kJ5HN!jZS2UW7|SKZ*W)8^?0%O z`RPHl8-Pf*9eWLE>5}CHAJ0zDkDSJxPO{v>jMb>`O8w5@fD1P{1?_i`#D*+yt)GZM zy?vqH{%2?JO#7FV(@7bwDvd^tztO}?^L1VV`oJT>Joaxk!`|T>q6SaBe{y7cda`n~ zP@T*ZEvWnb)X_mk5+Fw&WUcHLWz4ekHYNjwQ8cN@ z*kQ%*XjK4HJ^2Dm#(>epl9F#w0o+!Hb89_7qU!i}00X2q-mE^zf@c<_If%)1{(iZ6 zNx4cMV$zwMn;z~AbaMc=V(;JxNUdvt`8M(5Jqy|7ZT5Id`=cr19dO`gm+aH83SV*C zw>m6;^jEmig^mixfFI`mEAy72D3$e9o?CM>CLoL13vkc?8)4+_O);!?=dt-9%(K=S z=ksv#<@1jm)Ks7nuaf}PS2)YqBf3G{7<=_w;QBxKg zEtEe!*9AVwXMr0vCLEyDS|?n)&A{~~j$+imUTeyEdUyqwgiaSLsW2p2aFypAR_X&-aHwwX7W^3f!sC(hOE|fP#LxI{vRo7 zC1@16SC+^7QIB_kYjo%Aj4pe3OGoBAcDxw*_^OW=LU*h*$(=MmKZEz*lNfZ{<&Kd* zyy3Xebp!$pc3V?-7lPM4TV=-te>W-~Nm#KBi*Q4Dqr0<(8XSf{0z-?*+G^XMg1^0* zYwJ@3(5i@z+5M0PJF}}_pUQLv29B1Q)*ffwRPMa{0&9I9P&FzJcJ_;N%&M9Pib-#g zzazcvHxQD-78RZw?C8*W_bwL7J5;A;?9T|78s{`!;k@f1H!2bDKnAVy`RtN?jl&i! zciBs0?}8Ob-=*yCE;~5gK2|H1!CtQQ6{70}s#TdT*rv?CPH4-+AN^Qa+ir=FkUlu} zqH3U&ZFLQ>RfPfNDI;mi6L+@HKkD+xXu!F1y*^&;KN^9u&muIo^Nh<8z9Q1S@Vf08 zvl|y06r2dFRW*oMyI2`y=_a<>kS9Uq>+I$cpix1IIYM(SzKIP-kULPFo7~< z?eDV{xP4ak?HOi$iu3`PjQ*1+DiNO(m|8GZyZJZS)==Ye49hRT@3F^;rfMHVBy`Uy z)h|^t_sd4>!@#PK8$huSt~ZO4++F)^Ki>UA{#6(s20Z2do+i;EPc`+pyZD@3zt#<9kVIb;U2%F{|6)2H+ZTyUSvc(Z4-ZfUpfawC(Yy zwrJ7@Q<5Ag2md17Axo(<2Xe=Nw!Hm1umWTWW)@wo#nC|%U?#Ai1 zFs1S9hOsVYvqy2aH0tZ$t^|1;zK73iU3D|n!E6)Z;3z-&{n9Y7izN7Pq+Bv@%>4gCk?p zgJni1tNesyXqy9kodyJpfb<#sIIxJz8n|!3*!_NTeGT>i5lUfO9^iK2;o}4N%4_fp zFjoA2Xh8!C=57E5-gZm_T58|(gq%0&YtP55uPD8c5Ecgz7~*)jHw+j`2A=zpuRrN} z+8*e2`t)TdSn>NVjw2t)9O?kZR1%*{c5u`HdHDB2p5;e?Tz~)nl0LW&T$(+bzY4*v z-9&zyf#u<%G5=N~yS{FLPO($uQrhS<=W5`0g;(+0A>QZVn)#pW@ArVo_m1@CR!Hz- zgflV{8Sq~rHfvRZ<~d%;X$$yzbK5? zNuS`yFB$<)>b6Jd<_u!*^PMdMT@@IefWB4uR`baza=?KqywrpczTBI$PuQ<`z z(JBH!M*yvlLH71C5Dk+nvT3=}2w~Ch za-h0!y6}F1TQgsREV-Wrz}q5ZO#Ri%Q*{SeYXhkZUWGNMDO%IH}A#kXi_6euMg5?>2v)kOrU531r# z|9w839YscI8{VHT*3zonxS-mOO$Oi%uzhgfDJj;<%%MglY<*rFzwPN48B3CX-{ifG znGO8k?1KxOyA}~)C4;ig@xYMP+w%wloWI^~=ddp?jrv^_`VAt5#&BrpeqopSZ;@)2 zh3la8`oJNg7mD;{PkR6Gu-iot3pbf8Y4iHH;e4zFi)l;=xH0W>c*n$Z9yp|9i1LfD z9PgmsS?*!QOX8G$q*Jac79G&CDU=y7w-8{UcgBk_mc{zjFbcaYU4nUgtwT6p*hA|cO; z7)#FXymbYKkWds6iP@ZOLzUB9d5$%D!D=mdp}<$Rt4cG*Vdv7)34D#kc_13C|8_F) z@d>wk!V~BqcqGI|{bR&73yw&qnIiI-lJ42vy-25D_gCCNHPq8X$2V74s%q4%@oHDf z5qze)dV*`(x)yN%OZtM*f7Q7|{VKZ;mBu3^1yj*3&6o93yeLK`bE+(T;xb(~EWa1D z7*0O+!N*4m+BNS4A22l?nl!;z?@sovKee>RqC-(#f8eu<;@^(u02VR{{`l-wl6PvA zvMWt`(I8m_0MhVRJs)hrX95(Q1+oKOajzP?T*ef>>jU;_^8_qlEb-TGSnE^vyPsyF zGy1`8OIt#dFCUqgY6X$fG=HC!rT+@!#G+jtIRE6YF$ODdpFlDOS%$xmpL`ZQj3UO< z>g_m~5q$bHt=Gh%kcSC6b!15CVLj2ZR^^XiEz?wsLJ*>2^7UA!{chBrLy!Zi0~qsH zR`j(Edcf%icTM^uKR-|>U)Io&m2ZvGhTD?*$r`*s#>U>j`Z7JO_QL9AkNagVZq@CX zW8AR;z$lWTs@}msLBnIND{;3BYBcB+EFM>R_F+XMETLhU@DY*xj?Q^J@xbrDHEN9% zG8)yg8nmlp9#-Y?qD6>>o`eqbVgA#;s&nEyHaOxjAh^5AfGrbykW619ELFvFkWH;@ zmJPx^{a#{#5fj*)L7qpjclP-d1*pD@OV!0ZEJQFpUK0I_l4XFRV0ht;n8@F=+-`6%vFJBT)GTa*Y8C_=mnM z;gE+dNAG&N`kI(@46N7yCb+Z1=XlFjs5;5v;KFT{pyLcn7@(`IPn|Qa#)PepHso1&Is~RR7-UT zj#NtqIy%U7=)vLM=#~a%ZFQ6cNO{M(6xAgC>|(ISGc!-khc$qjU)*R z2dmAJ!mhKVS48%Cyi@$PUAjb_0$I#^+aFmHuN&8D|;nxIXg!?^XUW&TAGq69N9 z#4E=!2d*Qru+TbZHJbMNawp$&Aio1W8c)CdBp_x?ZSJCI3=ZvHT-q;%M406L43D71 zL`X_9bqs)$;(KhR&`76~g>N~RvBg(&yvyv3sHZrf$i*N`L=NNnql+N71Y=-L*nU$8 z0D;pHm|c|?;x9TF?(1IPKGGoubVx7@Lg=@lHqB7RtA@(TXKrtYP->^>u*3hez=r&k zji*EGr3e%cWMXAiGhk5zO;Np0^qr_V;VERPfsdbm2uvBY4YW6Uu=@GjPKai#a1el$ zmg3QWFwFy#SvFC0z@KfR=Oa2Uyr68pwzzdLD~zmd)a)XGer}XIT|T?iymuR-d#SJNIk2^dyUz(gL1ONE73MaPvlHh@>0$QuWLTZp^+bc$1 zN_NoX6dDqmmYG?ABb}TiPM@5TvQN54YwF4&g;fd@+WHC2+yKblgSUcwn1n7M>;SujB^b3W%^f1=Y_V!OqA*xkY z{xs(x4(P^-TBM}Vr)HsJr#LnXKBb|=T1c|wNaF);{03kdgK*I> zPV=!dz~FT_UBx?XbBop)m13~@`TO{v!oNpi3)7pj^80f11qU6=F18<~ErbyD9S0cE z%$@?-VeYU^WIAi8#zB)@9DvR|7O2MxA_p(A_H*aZK}2CwA|?b|ZF-uCh1n4p(9Cvr z7cS=Q^2`G3W|9(b-$xcL{LKIKZTAk|(NR(TQ0H%Na*%aNGB2nJ}36JG>}cXTuw92m&TDV2?F5@kwijcTX?*&W7)R)8g{_ z@+*LAD+#$o6rN+A`ke^_X6R0s^VgFG@|1GkoGK5T6@4M~(&Xyt1mK4*n8a;^PsqB~i(w!k1SXVgux)#@k6rwvY!C6WggbJUiL6w%_cFh>EG;*#JG9 zk&zK!$Rgc>RI(}`&Q@e!3QuVfVDdIWHq!2Vm5JcPvJ-H2ULDRgdEaqFc?wMfzMutn z2C&YB(?$;Nd;&6f*7jQpuzr6{?(;9IXyEzoDQnYfG2G8ev~Ax!yKwMFs^trbEt{PA zh%|>uVLUPlDpX}7n{tVk1by%F5nwr0IrS@#uj6U;XhP-NYwA&SHE0_hR9dM6S3%2eb~J3Z@im zJlp@_niI?63tT3P`H+)E2gYTn1ozq5*gk>*PQ~wMe%97As5d@7Z6M}Rvjiz01*rY? z@Khn{c)$Hfv*_$r8bzzryPWtm4z~;}ukM{A=cFU*zsL(K)+2voZ7f*riDDOx`**n{ z$sCPSh50u^ACH`!UR*3)0;UI&$~J=WK{u!!jzQEyvPQdDr!=pYMs#B2t|y=tNBJEZ zjwf$4Di!wvH|Dn_-n?MNpv10WY%Kal3Qx+51uzefLTLg#+IW}Cp5KNZtuE76ZwHtr=_hcNhsb9(m|gh zzb~fNi_O|_m&_d6thHwWejc!hn%tb^efmb~-Xmu+umM9|`*Z2nsMw~Lh9z3SJQkC@ zIF+b1+VO4)Ew%2$TeL9t#Y!_rrv8xhIq5QNVa1^Ee-;}E;!S!xa3Z(DLz1>{K!qVEHJ{k|Iv8NVG&{Iet-=J5kH~l1PEsaX~dIg|mj`PH))a zrF6LObQz4Q$y_;@g4l79HD_QHWNS}O$}fd_c$^>xGJE`kB(yoCl{?^e{W?J$gps3X zKzqA^Yt+%kQOhm|dfmrAfOpWdEt)&ss?fO9(Zbg-3Lyc&Nowin zR3kHuRaP<8B>y_!V$^g8B;4Ee$I#bsfL+iD8g0XkZ#ovVDM$aom zI5ZNf2ounii^-Y)JQ$H@3I3tZgn26}wI31SO>Upy73{;4Pe+q7zU6^AUSlH%3O4Y; zk^kxc10dMz>OO#Q5cn>pgSyGVSn5SW5T0Y?;1I_f{YtN2T6^XO8OpEW0##8`pZ_Di z=-_=v6`XSg-2b3!_uX~#4Fxe$=fSby9Els>t+vog_ce;F8m!4nkor^gUlU)3fv$DN zPx~9z&VvIvsp)hnab0Es-#V+Lg9Cz5oh;inA3f}HtPnU@{Dr23I}d9ayV>{q zo9P7VU^XJ?w1cmqsR@pIbC4zh<_4fXO-s)P%|j0`IlG;%Zi5gz3F}eLaY1o(Xzdx- z7DlA=CZakk6gGThB{|&-X}rE>ASqYbV+Hbac)Kj8bSfpueq>;4|agh{s&?0`OyAc z-_^cbkpEzQkC^S3^*u=W3@zOy=>j@fExYMc=T_O(?xq{r=? z?P0l#b|$$veJ_#I(oQw^wG7XKL)*kT2kGTPTncLwY&@sSy(Qr=&1vpU zo#gc`n1YK`+516*E^-U^;%}bg13Qj|mn%x}>xy8A4m0aVRMDSL#$b~Kc8LX?Z}O?k zKyv~fvxq`WIqNRHG0z8m5hVqMubY2mJs&&~F8Dx}B|fpx(2TVveX`uG=*LXnKw2w| z9kKfcTc9#ZCv16+Jo@vPJtM_7{A zTH-7n#5TT8E;TKqP>TWhkx~0&soy$=Le1lftsNpiP9*nqsyWCEv(2zUo8R-egflSgJ7jl*faBm0xT z5BbccLtRUN(i{QP91&cGqVqZrw6qKtheKnlgyevXXyFtm*w2ad{i<4h8BKTE<@zmB zpj3gFVL`Bgiy86(tO<5WpYmUlUe7!|3;OSc=9Xl;yYB(?++=?edP*}$yu_Q~ND81DOU`ojGR<9=9s5k^8nO2ecJb{^q~2S=AWc+{Ou4eMcU9=HYpB2E!|ztcff)ix zlinD?XvfeH;?_++GjkoMf1>KKAQb%^j)Z)LCPNbV_mcGyGj^wJxU!(^lD^bdg+!dH z(P4xCwY>bBjpo8^I&TELAgK}2j)4~940ycRLQ)L82US_#NlQyxauFyfD&-~RHES4w zDvCEkOIKf#u@{WILEQL6m3ZM~#3gO8g%L92_Up!}O{k5DX{1JvrDnIPAEdtEa{R45 z>bTK2Tv{aF7gXHWNT7QC_?(=uSVI#G|0z)arkW1gHV`=8-QCTV4uYi->#U+?l0J3( z(36m51S>abM#;Twfl&cDat%;$^Q^fi{C!7)877;U^Hkrg%xWDv8=4@>+!*d>!Ss6_T9J( zA=i^-0M91Xo)6F8SD%vR`_%ldt+2n?*n)( zGepTKrkYP?y(sVrTgJ=vDFt7;kP=gdK`i9N(po6)d}S*;bW`m1IfpWl-?x<(w~Nr1 ze=T_V`WOUg1^qYA7k(Stng+QOGouGXh(>s9d>=X?OFS4c_ffbo+!p`&FDieGiSPUmDib_SvljSh>*35A$7lcQCGY_DfN+?3?y zJ%p3xrqQl0!Kn+|d7VRr$r|-=*JYvce3goeNomr5U_XAoUEvLqjKmBLNx^hqukj2i z65adj^E=Ond-sjP_smRYb1WyTE&bA@`n8e^-m*|sn3!+j#Un-WC9!!Rd|w2);eFwt`{(C{ zqDlR}ne<2Jt9JpN0JC%>t)&z*>JiCCVTz%dr9+%lH%%QX8rsEVZ%o)$nAEgquV%7l zYF5VfM6P(W!@%xl;rGOpA$Vx;p1+3of(1TEgOZkx;o!1BYUyX89}M}rgh;{ zF{DC6U`WU3yvKH@mtEm^Y@L{rf=@`8uTkN2+#DqV@^kDRuMTkT@9*d9AvuGCvYWhP zk)BH|gmDR|WAV?g`M!(RhNj?D0%_)W(2?Ly=f?;Som~%os#PYc@G}p319Dxn|2=F0 z%d+A2P88wgl`AJNn?;hz{sw~XhEN2>$#U~(fX~C-P^lqEX?3{RQ3Qzg~U8{QAKHjwnRYBsHR8m48 zgbsod0QaqXl#r(^U}JGvb}IH+z^B5@+-#2_36F$ebE^0I50uxQbXZcs0mgew-uEUMlO+yng67gomCaG{~DnO%IfT0hr4rAjX4H96L;`7@Oqq6fpG$8 zVnCe<8ay^(VI?Bk$fL#HvkCOB4lpG7dc5djW@g4N7f|mN2#wez7>Y_t5seiR8iJpL zcRE2>&-KFW;rtJ_A?6Y5fgOdT5Gj1Ol@}olSHKmun$1wM^rc=j7=Q>8rw;dKgynnZ z43lN(!8icV#D+c9u-e)4v#OT=18iKb;q>Gb9kEJDd1dW?MKckAFZ#y{1%z#ZDQ5SD zU?O{>=B$=>>Be?MZSDH|lnSSZRjTlR>>Lsq{&jMJ!M&fz-aui(B&bbu5khRAsi=ACGh@Y)$ZB;O}jpCIB40O}Fn|RI4M??^^1oB*`ETp&*++4F6HOs47o4>u+ zK|2BwH&Ieapt?6jM!G=aN@thaQK9&eMl~`rIvGg;x=L9hP7pft_b>F7=O}KYW2$y{ zpH{455?DM&WVU$v+NzC278=E%KAxLs{+eQ|iwpqN>b z8YlV0VH~m!JlT8h7c`CCx6u7Qw)kTK=24M3PT5z`@yG& zn@JrtCR}D|UpQah4}FD!F7V`Fs`(LKG*=4@Zozwt0%l6usX4R}TO$Gn+PXEte^z|} zEVo1ux{isdX{`KMr&{%Nyl%HoK$jVR3>PpQ?Ejj=v^I-35KInKz-AWisTn->6hVry zquY+af(e>kZCzcH-nMDWqAu`MfBuk(H;oBP#csf=V zc31nz@NfjM7w7mH9@W<*7NuIITU<8x=xaqN7CYB{5>6G0Q_+?5H z5jwAHG_Vf_q={<5ZEsT2@inIBLl48um z^TF{5qr1-r<~Ug!!y?N61Y>e@$!j%0e6C>F}T$E=c_v)?wG}(4%n>EFa9(UYHy#u(y=Uj#!Tc+nLLXUpGZ*sy--y4I~sb4?+kU@B9L@e?H<45{S{76;*4;=VLufG9@kfCn~8 z_N6{y?FT^tY{v0X`G=g+qW$b)c)Zo7tiVvTe-{mYb}={9!QKHNIRAI&=;7Qe-B>m+ zi^B{l27#Wru}5p08seBybzyTJUCVxJ=~u8esPLAJ*vUt~f%g_J_R~5}HSw1QCa!9I zhCRT;ab2p(_u10qhU<)m&m7%Lp^Uow%a#19N}%6ZMyt44P`>Sl~7;tMAt>1 zXS?jmPhyLk_-A}Fd$%#j@xg~*xwqM?0Ot6OZY0$xAjBMRdz%BefxxJG-3!Qucnx3f=kAJM z9z=Sb&xm32d(iTw4V_zAVbE4emQV7B2h-O^6XT%@4CTzO*cQOELc zp4y`IO5gLI%)x2u^va45ck{GL4Ve)4=%6l-lG5GyV$OCzQ;YeM3gXj>&6)$ueB>DN zunTPDp*G}0fIa@hRKVE#^T(~1W73P01vigF2&tJ{lfLotM$ z9{AX7$gs9J(&wHKx!+lbSuXYobiHW_w0Bd(6<&X-^3z4tw^#d8AT(EiPU zIuXoh?J!QYM(TE69(P|db@V8IHJm;D$ZDlo)SSt&NLn=ibAmDLzyTk`O&3S-9n%Ce zh|MC)c?4ZN<8y^A8VZzC2jz?V{K(ZJ z-caNI9C)}DEmzY;@EcE@C8t=O>3r$;6TsdO!=}F}H~c;3_XN_-bxPxYQmHXa!=rRT zh~%n#z69B~-(~#m@;~)C6)}y_|J7)jABRSl>`GFm4C_0P?|iw?H$FQ#vGCq@?Cywl zkpRvz>gsCl;LF!8h$vdL-(m_pQBq-Ws>}7#{dJm)oa+PsH$CD0{b}WkuJ0iEn7#Mg z=mz_|!*9=Hf|qAEzZ7sSzZSi4**~3y{yF>r289j>f9MZT2qkBw8rE>8i#S#kCiVMS zD>`L{X%eLlxfA}dvw=Np#_zifTLJ~QUgN5s`FXsxrxQ1A9R^Asywwx&dbk2V`TTcT zh@RIE62xtAEFy&I3-DJqlIB{cZs)zhf{rU*w|9I)4d^`TNV zgX4bJ7e~HXKK8;@yI_s9SdBw|n|WRujsEd~+L3ym^sF)!C1)-shb>-RQl404q5gBE z{DspE`Bg994*q0SCjR$~52#2n6AM5wV(T7`eJG@uoiA~0)4+v5fxJQcP%T07E7J5V9^2+j(78a^h%-mmGQ+)haJ-+!!9fk zrR90ne_jcu1X(4#hulC^OV9;a6Q>xaM|q^oxZlUsAwW;nR@ItiSXXYaKHx2A zZLqMmEFgoymc;ajiwF0e7eZhZ26P#!PgaW9y1Yt^5%3p$MaAX=@6TW7 zQIRAmtO;_PkB|E7Y_%I>%Se%ws#%KNVDgu0Q*>{oy9+LOZtZWD6}TrgGVif=lemcu zB1RH2px|bwV-c8i<6;f!W$SQ!gE5*RY(*!dI_ay51d0|q z^Ov)iy5U{Y8*%Fa14d_Wv*^>DZP;?SPO^|ZnoD{iGyphPV_CJ5jLUAScd8eZC2b>~ zNNL+5YJ66<$uuSLVI!nNE3ivTNBUi~JRujZSB3u1IlL{zE3ItX{lQ2Ld(MA?;{?#P zLZ5P6RtevC%1oMvsCQ1lmsDQn>=Tf&6)DEhapX_i%F*c4PI=67i%dtcUddG0ze`Ku zyfPr%D*ubQFy|E`F#fPPls_^&PC-}^H)gtz$wk^I;%e|&q3DmG4U4THr|G+DKH}BD zuSua3&r)mnYe1g)2DTo9L^>VYGd@vDCb)^@x>Z^Y|}D*N+VU zPfZ(K9#RD2qYIFZ_{j-GkgZnN`t< zsyqK%Z49-?#n;Z^sm%2u{;wePI?e0-Y@Mxq{a*~zVX|8a`K7DsyWew9leIWCF5#`m z2}=i=qhwmYbqdZP=P9tbyr(%%_Qj|F6k`G#fuantA zZEmY7%s`^Azsha94v)uemThC?<{=mT5i4eHq`j1s{e+>kAk+4u<^D+{a+G-;-!Z^- zncVv4WmOOaA)SlgNI=z|AWDlBjUoGxC+ZLGa;xDY&BuceR)@>`@WSrio`Kvl3bi8m zGFysh^()a$TN0%E!Tyc3&NKeR0jTd*$Fd??8a5JKj$wzmMT)$w30v!MQm9Pun8_0 zaRn-Fzvrjg&CW`*S&-DTnC7Ta8%~%ZEPjm-zPIu1=1Mq;3wdFcGqfLkuLKku%y&s) z*ihpsdlKZqg%q}RIyoMY>KP_Vs`!B_{f=Uvq!u z$PnYZHBP?=;u#L;arI1#@hj9&#wn6E+yTI8^$mZ zWvCS;?VODJ+*eoa-AJ}DsMqJ_&$W`y@k~~{^n&%Z-kSthF z+IO`-_z?Tm^!}5B+d}Z}&dmqRr$_98Sh{eJhn1VORJ}Kp@LfbY_%gW)?qSF+M;3g+ zyT+`ZS^cvXZ?j`&+21l_lT;}!FO2bG5b{u3tCsoY!R<<3dvG50@mE+9dVlmBkG7uQ z`(|2-iAqzz(>2adoJs6AkUc}sxM&d_MY46d)xY;XUZZX7|L}Bvzemzj4jovMJ-D1cM2x zSF9?g8|BMyFLx=3BH|KW@?v15Jv^?0mZMV;qpyZG&b;`G{n&rxEczT^S2qt%m8pp4 z`P^xI1cu0MJj>Chq^+Q&+=(!ak!zoC{6Z>0M?*`>V1Ds1Vfp8(`RO>VbxX?Ph+GLe zr#f3oG;R54;f9w098jS71_5f>w>8kqcWn|K`3d7CWla+<=(>oa1-y3+c<^e3l>ygQ z)IcDH2Qb_J0hH=M@oI0qlgan3G0zFeU-0H9gzt}Sw1J!5U53(+L#oPcfedHQgM2bReE?#^)@geX_Plb=W!>Tf>Rg z=%Tc*qMtxFV^8LtUR+^q2Y+A9jjVm^n_A*colg;(3T6o;31@7{(lf z;7RG?B!#VFZQ~HMgkckn2a=%GG;B18hXB?9KDU?NTHO1n-pSbCvuJF)kGgNlC^(M1 z1z%*#z*)MoWnlZ%C$T*6ri8A%giJ9|Y~p;&wu!*rsUkYrwN3IUKoxrDp{ImYBo!Kc ztT(aP2!DpUUe{eN(6O@>k+}d9`*dg2NbI-$kq~+5H_B94)?<{xKof37YRIw|5?s|) z9ZAy!ZM9F7)kg6Z*P_Vc0R-YepQBMZC?h5H)|y*W(SmzH^_h|Ve#Wua%-J>8MzCzS zc!~&DdK9xqRG7AS_$t<`FE$y4%5)>v#S-6QMt1r>n>dO3Rnxhpf_JGQ896j^jDxx5N$_S?1iSyUZ z@6(s$>9;$rkC!-wR2Hithx&Vr$>Sz~y(2@_oP$NG3N`-9 z2?v7RVnH=X1}%K91LZP&Nk+q%4+b`odC}YI^pYpB+VXd*=BL1Gb)9~>{U@@PlKgL?(ll& zM>HYk#`_zRx~?wJQ%Te8O#KS2g@lKuUv)*s6QPI_zb_FE)n_qAnU;(IM3^!ICG+Dk z%hjnXm7hbud1uDw2W0QZZ$c~dVPby-9>=M3B8K#1#z`fh z`=>j1a)$Yy*f`En{ZgLYrFO@CJ+fe9g0S2AEFI1J#a}GmE({?CI?fpKcE&9uGtwf0%{CMM0~4=&76dZd+6FQQ2Sf; zGGU5Jp=0Z(fIY%AW;lEQWXvLHp13WWRrv%%OUK-1%>hM^6v29&YM*UV*=iCVDyE^Y z7?NUw>fA~tUt1ZStE9;>SP061&D8wrW!6PP6u)Z)m zi)OKD7uVCu!UkX@W*?9!!%OaXfhpn$g1fL%!-p3^Px+T2Fw2g>M8JDzIs{XYA)v3M z?G_WNMv7LNbiN28lfl%hKDYzHRKe<2cjs$zovJ3@*3k{q^F`1okWGo0SPwStiA-1= zZ`>%V7O9HU)-8Y(0UiNC!EPSV<(Sdp8DOFg*Q?y<)YlWjGYzTkEhKCMeZ7BOKHn=H zaUZ&(JeLi1kJ^%F{q`NXq(UoK6UxFQ%+P!8eZD2sM_M=j6^4#Dz^wZ`MG*mzd&es} zJZJl_SCxzOlZ58_6n=i5tx+(<9aq7DB$Lj}rw8ipc3qd`?^{T3{!(f5iEvIW)4A;} zjzhgr1m4pQHaqZSF<~W?yq-6dKKt+C6_`pP|?I<@{Q!{*9y!3#zP zzC&YOUC+P(xTY1*AXXUbafTXY3DPL;Dg3L@4y*JC`HM9tvyj`I9(|MCEcY20U<{fIZ6s1vC?%Rvv+|7CvJY52*QzlOJ zeY57Qyd);mMSB?W<;#*B9xBzp!!#7E2XCQkHRB)ekz;02$UL8{9u`JbDQQ!}=x%fL zp|v_$^QJCuj+9RSH3ymEGJSUq>Mh(nU4Ypi|0?>_&gJn!d4C?m)Hy3iHCR6rWWCxI zM3CDqOoMWBdwbFM^Y!%fL_j$4^3jA|w_B{)WS9h+w6^;Keu=?H_p;_X3kX_AqmGkrG7;zoI#Q3Y_3_7sIhcVmT;*QEi7of0!{KE^L@y=ZjLbBOwI-f$2R@(|8kj4S% z0gF)k7=MI;0bUwwo7@m^D3a9&Y)r?H&t<@p1L%>jxpSZhe$-e2uMQ?2-roFArK*~0 z$E|+2Y#xumGogNec%yN6Ly@7yXAgayC(EDG=!&gx%K=r}puni7m z+Uoz*1|&RL!auD`j)Nm?p0IJCKj(eZbq@d{NRnrx<2KC9&C`KerPrrZ{J(#8;`k>A zqX+ z9{&_zGGFfUfdYDdd2csnRW&t)!JCfJ2+!TNj0IZVdWek3@3X7U(B6Ob;Ng<6>Yd0V9a}Ta#^xh!>iw9=} z7D4wE@YM=ZhOWJ%S)hTeyuQmFIY5Zr4+M*)0ZuMUN7RjLPVZgDDV}S1-cDZc#|4J# zt8oSvCZ^t2r-Sl^3U|Tj@+FVU!EYYcQ%3sWEI`gjn{$L_XRJc#@ZITFikdFu7ygId zdqAZ_2(%xG^QNxtfLzfMz@+;v*Y6`Jq-NuHu0R5?iUouLAGso>T59;qUt+$XWJ0+G z%dMouFvTUyH7f8e$uh9NT{ColZlxl15DGSKG=2-qdG6WB4lxl9BYH9mM)BR&yfrto z8`Ts1f0BfH1n4^c+(vCQWIESVTw{Z-NJ(}E+?xZkwY4?M5> z+THj4@8vQ)GbtXeC^WQp-a(#UYJV7_{pBo#WeoOIF1E>UDMu^EfK>LIZ}8oBDQW8T zQ!MQ5!Yq;QSDUV`vC;OILpnSb7bepFhNj-RAsH%&F?>U@2}Cs;nZ1NmUww3WT!PJV zxqF`p)&Rv%<*A?b_kN*%KnIPW7fM>4e);`=nO9NY_KqHu(>e06%R_?@g31Jgq6wqA zUuK?4fyvvH*KTxg9vN@gl|^_dUPvCrVsv_@G@t46_HZipuhT0{v^qcmHWBjK&2FbB zw=;SpFMm;-a-TQX>lir!;~zoZfD~>@IqQkG3Zk_Tt{5(_V>}R8;hog)5?YJ8; z$K$b2HnyjNF-~Jna!4QgKyK=58Cmkkb;s9|Q(&_SbbvJ>Mk!t6;IE$4x&+Y&Kh$S} zKXIn60X>4?7bhvWrV6Rk^KpmUMW6L<`;2F!`=2T&!2*Z{mAG7WLGN$Bx&|i((Cjn6O!GFkd`JEy?jeq;OVatU$N5s=J6ib1lm&ge~-fSjRsn|4;s_n+4>6*B>qj3m9qMh)dAfXQLZPHT3t-D=JuNEXHMm56%6_ZJ+>FV&ri{)IJ2CrvC zK*Nw>r5X|ZgP3X$7I)1py!-N4?QaHXd->c4m(w-*Jf~lJQd-Gok?5kwrufK|ntfok zUpv;$_c|+CQs<-Q4@_7<&Qm|Y*ZTs917a3KfnLnm6*CYZMg}Oq)wL>@3thbKE`U)X znGoKbH8VP9ZD*zVG?D4q*`yPD@{)kt?6=1WhSD4hAe6!(B)bP~P(TClU~)g;F_pPHUmXtnMt`vt z0>|?>{~vFk_a3YQu2Q86Ry+SkI^$qFD0i&pNL?U6S^zlt8v(2b3!g6_AsN{d^gUbh1uXiu z0DpzR0^(o25tJVY^vZC$`YR9cxnJG@Egv8(9*9nz8XIFaNGHh~2Vnmh85spL=Jr71 znD|kBUEPmD^gpUe2YFt(2YT)StG__@fb!zW^BLNE13zh*bsNxEepmsv`@*!J9#Db0 zzjEc`k1L)yGz!^^o1?N;uX}(G5c44*1V%jVHg^~scpwbEc|oP?ri20LmV8-#vS7u* zUH0<_lHj0hSleCC4G(H^q-CXnY6;MGRw|RNXYB4-^Kx5NNRV|ODWmj{Yx?3lWHakM zls74-)zE5eEszJ=W$^blq_vcK3mi9#M7AbteD{zlOEBfuuSFz?`T>_k&NHvJJ0i{j z>U^iar!XsTrru37$>nW;GeY;>EZBym*@M7tW<&kD^9Uw7n2%=o6^%pFoqBU}jjYWH zqGQ0!-ZSw)*Ea+7wiNd%-~h&3?}EbbMNC>&{hvdlu93by)S3?2bf9TxEc6wrLQ=Vk zk*{s2`kl~nn5dH7!V&!*76C!gZ{9H3%%)7>Q)b08r(xC0s}*l5knd;8B><%iGI>~7 zTrzfI@aXd#?ms908o{1zOKGBSv#Tnbi_H$nk(Un2sXxO?zL=Jz2#WVMSE@bSJ8^Kn z4xqT6uMEb~|1+?zmn}3@9LnDt^w?hDf;B*lD9~ob#rFvWZkLI)CFn1CXi)cz99+Fn z-)ifXb@$FYVcP3)rrnd%mJaU>v73o1n!`skzP7=7e8wVf?!6~1%j53N$x>^*c;hNm z{Z`7}Z};lfJ-I&Y>a;h>S*;m#?k)YV{31n7Z|nUj?L8F$+w`>fR-~|Pt43Ycf5%4r1?t6cIf3XTan8Dkn z8ufp=;b~5R*f(e5We**QhvO|)#63PLVq+PuwpvPGl-VvZS;zEA%+lf2*3)hFK$=Z; zNWx4@B4*45pDIEb{+EY&5O+RxF;<`CejC2={ufDu3Y=97p%~q~+PVw6g}6zvRL1CV zX!hPGG%W0Kj{jBZe1pKuz#swWb6x@L0U#;Wbc;QOnnja^lXK)x7KaBwpx|`eg%*VN z^lYosAD0h+0F*?fomx`c z3>dlCAOy$!0P1V$IT@q4P@e^mAG}X$eWKvHfA@qP@PiXkrKLUI+4*E4P3h@dpYmx^ zoda4dqXXIfebdKDH{ZB~wf51yD~;{jv13@dTy7CSKpkTm1Q`ASE7t=MB6!KeKS-o$ z#F=wk+E4iqc-|i>GehrpyQ{VUrRCF3)@}G#lKQQ04Dvnd@TN;0-%I94ASp_qBA-E4 zuD*#ure*(Z_QHuv;sE(N_8HHfI(+>ghSp+^GR%k<1myD*r;8~;!9fDW)OmodXP>RT zx|zLlK9Ft*%W%Oogz*L&=+D`JA51Ed-7wR15BKJGx89@?d(v_J!h2wBsA`Ci8W+nQnHHhDL}Nm^O62csaiC)?%W^)#<_eDMoGN za8ii{V`Dvr6|G_L&!331PVNU1RU!+EF5gfRNqf^UZUdM2wx#HGw1>j?4rjuC|9-#* z^kvB+qqA429EpbDXnFdp|8g^W)3X;A*sgm00jAaT304LCAL!HE)k!gYu7Q>_rD95_ zIW5Y@o<&Rd;luFJR?vraM=jS*52%QT_oa|ItPSz?0vy@ z!+chBupcrwj&=7Sz=i_wYRCYdP0y~XDaB+vG9S8NxDo9s5mAGsXcA6bLEvOD$30Y)f^4u9cOQf1QadoR+B>upbouUFO`pAy7BP z&UC3YlB@g3p!|mKksEeEmim$NDoosGe>zoAA zI7Q3m$O(3{zk9{ny2Su~aHq>{5x`I~2xz&-$H$9frhkb;=j&ISFk&i4nG2$2P6waE z%3ucGL&Q*oEi$jU-G6-Mqtxrw; zP-n-k>-N_Th8NH6$On?g0`-I{Clp+(B_s)6I=pHd9U!zgJn>2v;4@HBQ-xe(f_^wf zt0-Eb9Ed|RouC<^gtW+vIE6_@NQPr5i-%^yU!f9-bRtdG4Ka@3+2!yI3L)`}(|9F8 z0TNM*J=ir{yQb$M%nE9xfQmv$)hDtLi!E!YG9qfZLc}V=hF~-PCv+Ck$1IR<*!l`F z5o%_d$zYhM=VjT+Y5e_6BvCb5*9?{1FfAYWadJx-b+ zGQ}i$OerRg5IID~pv2VNv^Kcx(;9hfoZ=;;(D5NCvt8BfU#ddl>fR$z0Z%pQ3C-T$z5x5$4A=HQfG_NE{k~f)v$Povz_@TM$(x*1c8x9K z7AlNlmfLan)MPPEczGN1RYdmQ`3>nB#dS7nBw-w?5we z>i(mTJmCl|-Z6y2Ji{kM&v?$lX3C|ty;O#5e&TBHu(@oEl{*>f95A&Xax3gy zQfH)9QN+vgE{SPV8=2ABOJ~1!(g`r*_&&|0ad|(0(QE(4#2v@+KvzzgO>@wd<_v(5 zF&A`8BZu#OP7#zIL$1^#a+9=J1=!@H47$Y&lAjP9HC42A4Y}FVwev|e;|&-oBRrY& zNL+hfpIaPWRvDc3wm*BdoRzLgGLjEVV&zi7tT#E7Lb&=z%2$9T1=hPGpt8qplL?UZ zg9*Z9CT$8r%Y($HC0Sz2Df;CtBRE9t$-f%tuY@-V{+4to$3A`;BHtPqo#O#Qa8EN= zhyKN$bv*P*(bl?N@)a#MqdAgAGlKI4pF2;^sR>PK!LIfi7~SN2l5d=t9z*@Wl)fyG zX)3|2ND!gOixoz4ie(_BpErr4+OOfx4`YbD%c;z+ZEVpR?|P^^fyRhgh$$=w^CTmpd^R1+^IZnlg)Gt z-_#pXGeGZgxwg)03SXD+4HiHkR0(Vm5?la$I{@w8-3RzzBGslUYrDp*YP&+6YEoOU zu}q*VM!p|^c02Sz>xud7dfC9)7GiPZxfM!-?muVvRcSR$2X-mJ-a z5U50#0E1l=Nd!HWmH-k&uPkt_g}rR;=!pJw=9(p27IZH#W``NLFZraWprc!I7PXR) z$rMShF~n*U5(WyhL9(j++)b2-)?c-npdqjFF*$Wzr2yxBZ<|fiYQN$)KWDgs>g zo1Yk7AIK^?AaV@|@cF#cC+E>WJUBEo<4p~VZ9Z%TANM~$!^Z&6l;M66PMKC)eX$=x z#`kz6m%slk?NaJ~S0q+nWjN>$RV%0f53CM+vfZEY?m%mUGe$^_4Q*pBt`fg+?cYwd zc&?WP=yTmebiQlyT+Yu`!P7q9pB?Oe|0bbDr_CNC4eF^E)Np6SW2EDO>52p=8GGp? zz9-<3JY(#h-MK1hw9d*Yb=E=6Ycx4wAHXQiAgKp3>Q^SO`aXS)8@}kPEc1Aq z%iFpv8dldnV)2Uq)-r$&ww2;(9WFTh_k@rQpG=vrSkei zPzYL(WfH)AVRO!jPud(PgoMN{26g(%b}#LXK;2*M(@?eFpY3HBO)>Mbh<(oxO$v0X ztn@y)o#T0)iMu>qfvtTzb;0NKjtA<0Kmebaww5N@5*d?tp4;c~Z^7o!s8 zHD!TH6=f8SPm3#jp7${{gIG=&$kFZj*W2{~lS0;zB&Z;_N{oCM!W5$pJ6_Dba=I8wkF30DZj75>{^^9lgYTfUm+2QfXvjiZ? z;b&hT&#^mg^NOGl4IyI<+XgQyzfl!o5RNi?M%Y&ysq1i*n&-#)y>OYD{h9?934A`K zsXgTETRl*SK(T@fphE@Ue|UoGnmW)?XR-Q~ts<*Zzyy@0Eq~dUScyA?&`KRSmjXhR zSz;Cz7Qjl=06aQQvA~)(v6Si~V;)#$0j`$o)5a-)LHGimkNA^o;phS=k~jfA1f^6m zV5!rLHTUwu1FX%q9_73P3uyr#ArxQ|CmCm6Ib-+8Z3GNWiKHK#55OhDcbzfyK_vaa zeJ%d&^6JC~(EM9tDKsBD!(n_ccxbS1ZB{zT`9FcjyEmF4^reawF=g?GW?vjoJO{d2 z@s(-^N6y^Y{C=^3r6+kauinHpwR+}de?~0Maeu<%snb_qP=!)zs;^n(-0uo`IF@&^ zuh~jkM$QSq;uFZ?M}xKpg80Ja2#5!*A(L}fzlB0(l&5ONG%o(fqgR4x*Gw|3fKcS zvqO)}>3#@`KpWw4!i-Ny0UcP=hXIAEETH-`ZTrh(E94s|(208$$g}-5+&JYMou=y< z0jzp~m1|J1Keg8*fHVdSI7O=`GbgSVzgC%QLmV%+$pGBk82{rRzrL$0>H`LC_^o)D zR$1lXAb^8g`?^xg!tpD~@3r>*9@FZiQ(B0i`eU2`@vk^16M@JTLV=uiX7Ju!lij1< zzl^?T7v&gL)z$T0!?;s?ujq3ub3kp*$~rG=Z~h2kQB@LENgo^lNDd^)`6dIbQQQH`uO}!uk?Uf70Ukc7?7SDfx2Ehe9noNFjB$# z?`*zXGy?*a z4D;CjX$E8|ZS@USauR%&rKe|LVQbF`!{-{?f+7HHiEtg)cUTRqBr=MCf2NXVoacIL znA2(BCbrunRGXy^E5bn_3;E1}%^tNC_J3M{uIwLFL|dwyK_Ndgs-~CnRedsd=7oUyJwc`8wpfP8ao<>9;3b~Fjdvu{`S7bmh;`kLd4^q zXbypRJBRX{(&RUDF^K`Hr)T;JkXGyn2 z96r%h`=n+zF<8j!{(2-VmZ{l>hGHsjFX#FIOaL`1Gu|tI0uG)T|J z0S1&8Nay>}w);sAi@2eYVXNhSSVXtW3HvPVPW#5It_==BSgfpBBt@=!V38QXPC*zx zVgZTSFZ=xoEcp)sh2G*z zkqLbEvFP=>CV(LW@M-~esOthGpKyS9i3s8aH2mZ_vH-VPP6-1-L}B{K8Nljt3}Jq7 zLqCwr^YhA`VmbhEkWQ=RB80&^0QmdSvHM8r_|r0dkY7WW@bV6t0q}4gXXsJG}EG>=P2h->%eqrS`f%H?g(- z22i$lE{F4gAWt}2dfK5&g;X_FWE8&Fqbd9M-sg;N?kQm1G6Ka_^=2YwBdWBJ`QpR z+87?@yJKpZumw=Fa4z`aaNii>O|Yi;-+9FFy~8;+Jfi^eENBLFOBtE?eBK_n@&392 z^+81g<^{*QoW@>kI%--G_!1{+Iho4|mZ^&zJHIfegDIoqx@5&H13WIr;9mWnD2BIm zU%wxTRe8?mw!&C#cuywKEKlPyNt8nO%%lATp5(cmd|kor$|Qw92vW%SUUo@3uC7EP zU%pi;F9Vb-58aPlc4e_23Vc9ws!qG>R_6{dLAVipR+_UTB#pzSE=16;PavWMk4|kG zV3Lto*AZEX6(nj z_N}_F*}C34L6@^q{6FyoX{daYD#Ar(G)Y>FFf|(&EN9MKGk|K*(n*2|)(|FeQy<=X z?#@IPH_%Kq&rnMXN`gp-Yp8%XY4?G4PFwhaw6L1Fu>k`1a zDSc*L>1(d|g(#?=EwzxcCQABdge30buqf{8w$?AFd7*i^s~oGme=a)1@GC@^p>g`ihh>s$Y zVv$s7BTgUK7NMlJP}SH(;3N=q$2Pjuy{v)vhYzCRDS3*YX-vF}@Gt%SIXh}HA2G2h zMoj(4OZ*qHVf~Q4cEl1YMI?&}PcUBOCi)ezv2imyr);Uj*!&GE6w>3o)L%* zo{6&0R!1y(G2ySBk35JK$B~~Cj0nj9Ndl=YPOIt}W=D3jpp-0WO8YY`6($s6n}^+! zRuaXL1pOE*8N$ZOim?2L#%cjhN3d^g`Y+fKQZ|;q@q{GB5`92nB+7dSXG0%gg^@}u zH+oUL+NOCk{(xpbFmKvQodFk+F$lazT-cPa2zH>1B2LE#tEPp^uo5|j?@gJjWr8FL zpgObbC_M$>vC?=vYBNyvE)uyR!KaU6i2~quDkm>NZt|) z-(qAN+aE@-*%R;usA5C`(_RcG@rK_8A;HV05A>$XNEO!sFs*=tI<93eav~;V2jS05@E$FQ__oWdqF z*fzIGgwH^wll(?X5G{1G<;Yg*#}Mw5^UE(n6bu#A1^;%4rPC!4t^;yuj6u~_os@04?rR(SBy|zNHP!q zs#iJqv$z_D7*Y*#pU^)Hok8#?VqE?@`1C0qMjc9cC1>lxkW|-)}uF>uHHkS)iI^me1;h!BH6rFjJ@+~w=2XMeL_0cJbYRJHP}4V zC3%H>#U>dT43qzW#iv4GM$k&y{5^jA=kWtM3Uo zBqU^EGO@U&{c$}dAfEyg`Xs{3W5sUlje#^oRU-P+PaYBC)SON?(8+euVyDBzWK|R{W$@mQUKJ50Gn|+IU{7s ze5R(0gvN+gYX4H(a)_A`WOW=t!C1})_TSZ!0VIKsuoo(Ro%bIS9)j0HF&AYL zi%;$Z8G{ZKJCP3MfN2%Iq5n}2A5c-NmY%@OtFx`N^#dzDm=Gs zNC)N7Z0Q*C&x)B;UHkO{OvyPxvd}P6f7_DC$!(O{W%Xf8T(-NUVP!Hgmsa>BNtGh< z6uJ(@N7m>`tr)8LCP-DGB&?ct_T)5wOyw+c#@tj4=`^bw>#STGBkxbnlgahDr4=GN zx%tJ|J;`Z|9D#lz5nFn2(Xgr^()}GuDv+v&S(|S0)TDg>Y6~&hh@xCsbFaX#6iUvj z?YqRGS+KRU*ccI0CX1*>mpB8t+X|5j7RChGw=hjv2dbxPS&%BkYQZXoo;AQoT2j52 z;v%N{Mh)p z8Luuq{!{K~t4h!WDT4neH9EpnZ2lP-fI&jRc^7|^mWwBCknz7S>L#opnijp4FV2Qz zDI3X|1cTjB(p!pA{|We6^2&CtAQn_{R~lTQ6gp*o_qo|4#fb>lA+fkwLem6aeTjqF zCZ%;5*s#otwlWd|cLdC9UwOSNx%1SFuuvULWJCV%B^5AKm|2CS?UPT(k&4Kev^ZOa z55Cu|9S2V)%g}Zd@(}j-*fMN9zfn<71jaG93c)^Gw!=r9!Fa$_1hsrN_+g`{C;=vx zp6s8R$y`684DK(yHxIYf^A+q88nGb!mP271GoTS#I6gM|^Kzt(i!O@M5t3uPx!Eb4 zaK3YFE=%$XaaoL|p#N>YNJIt6IBNMP7ZWG~OZ<}fKug|Zk{y&4<|i#OH&r9CPaXLw z_sncboXqKbEk9?Gf&clTQbP18neesdJtncD zp#|Usu&?NDtYBBRsi_#^g)y()O3FuI>V!>@xkEBTzA(te$rQI9j?F2+Pv#rZeqi4^H8CwkE}@Z5uZ>&XlBh)m!+wXD!O z;4~_YwucHXtctGe7Hit&l4u7(25lnbZ~GzA=>c9D=S-pc*J!RR&sGp+;AG8ICb>p2 z`IAPZLN45lpJzp&N1NeWRI9yqQ^Ce5tNr3)X|G_N)n@sF5-^a9t%*f^9CA1*4b!Hr zP_Ll1?}01wOJ(gOOjMpSMs8Lgme?o|3nHIbr6Et9{pdo$f$=jkhqA%gS1d520_?3` zY`o|gCiP2F^l<8sAVIBirhM|x(t7;jq?we;(ZTa_6=cm7(c;A_$CB(c(!4A~q&5BI zF_RKPmDpjF}%RC8?;?-{a7t^glnK29ysfh@L3&E=eWLM1Tyv zl=Lj*3V&);B`sa_Qaxx|;txZB%|NcgW6QVhw}}4x8Z^&%j(J5wl6O*5o7c)WqAPdRg|c8ui9k2vX|fh>>nx+RS~uge zvr(%RcfvQ!z8*~#RQfMiiFBu4_k-0GYI%7Rja6|j&*ev#xBpqRCf&-a?)sY>J zb6ooH8d>I#!FCB8gRHGsA1M*m%Rb`)a#qoMOd)$O=acb5W)0-Xe=L3`xvUP(D>~VF z#B2mTt>6q;xu^%M6e!&BIdJbny_zhH!*BMmmf4tisOPe+ zS__J;iXun%zERj7rrG8Oc^AU*Hf{EIy9E)!#4q+_{Kc%o#hij7cGMnE)ScV0)kCZu z{!w)#;hLki4LcqTp|c-5Z6m>76BRAKWJ(+A7cbh$l0w)~(H=@w-|79#my(?CDH#NWasa#n-`XP?eDs3TciR z64h2n60tM16ph&3-Ohf)T&0Mxo#n&z<{V-!+Pc2dX8UfHsUv{C$eP|~sbO_1My2zY zF`_N$U?h0`{pR{l1dL3%1X`$m5-Bkzya`N%#Dxjc?;g-=W9{Yp>zI;VO}7m4n>(nFHD;A;{9>^~c3b&*KxkG|^8R|3j_C`DOZysBOj`Ho*wVfX z&bu!jCGMj;jZFvF8m9h6uMyBqq+2T=aiK2ac=VZDz^U%~uz;I5Z-+l*(Tbq7wdPq!-J7PCc9HUY3@D#yZ@NVNW zbpQ%?y;@azJ`=5tEpsCAo^tIoa)Qfy_4{kPNZ;CDpTz}x>7JF3Rl)rypkpJWuoE60 z;S$|cXA0#9=>L1O>|T>=Unk3!yE>&Z5s`~HB|DPK(Tz|H&PCVAosFKj*f2i&`M~=> zs=4=sAIC@nlL^2e#xi8?$RbLBdT6)vXmO6cm=Hspo^*_+vL_$TpkJ@bS6s*9sdb~_$$)VNT3mCe%sX9hfb7deaNpC*RR%2*5+52g5H|aX>e?J!X?3Z^_?tGY_@tL z(}=;@Mg2W0<5ooepA%P};~hlqd3rwm(=zLFZ>lkzkro=QAsG5spK}+P3I2&iyYm52 zj(@f!2LVV)>|pa3XwnH$`YY|UtbSap>;c72?euDAHv#`ItG;;2iEzQIsTw%$bAoTi zCp$dB|Ee9(H;H&U+q8t?Mz`_ zNc5X7@$j3f$*c?J4%6rMyR*I7Su0wX6xwl0^yp*qxrC2HdxB<7Rj<4>yg1IS{TOD? z9<2ZSfeZw|NoGyA$&SJ5Te@wqs(5yObp>Vb1tI+#uB7nmS<%M^>4;002CmauoqGk7 zFN)pM+w2Pa6ft!NOg)t*A#ao;y6CWLt$Y40-T2y;V%D|vO(~j-yuSw`YsP$?Q|M8& z$v5xcQSR)1`$=E5&F;*zZ7JXCfNr~O>C?lVkA3M&!z>=J)JBPeZ!JjOE$ZC(zANwf z0^bPw29n9ywx|gq+eM_eVzHG44OFkacNhjw3iU8b1Eqd~rOcadzl>;gx1K|v)VPOV z=0a@t^H2t?*_zSB?zFU1z_|*c&@H45zS;I9t#KW#^2yHiE_1cRjOB#G61now@K^Xc z>G{`_xQVA%>@A*?qT$;K4WqHWVjW7G3Hmh*vYa%a$NFwrtA zTbf>c;H?+k+ZusiSOa6S2@Yd9wMXt8&=fn*q3wt1TspEPFvu#JG1om&*>NT9m0>B? zsvdE%vwc+nnQR?~t|rF5zCz5j|Mde^D0D@?v{H3isoBh02^=rN%UKy({Jm< zuE+uZorh}<7_7ZQ*awj*^F#CR7VHV_ocSt_mjiriU*yOjuidR*HK6rn49Sg|Aa8}9|CM^2k!}w>C$X-CM77T4nlC9a z8sKyx$qp7^G@nI$eqahMII{Lkx-w$QDhuU`9cWNaaIqO-JLioIxAnamhTo7`)xv6= zs{Ing#`@)Jqu!aF0iIMpOj>A!elt=gWC!dNW(OB0Q>F@S&W-8cC_I zEpMnOGC>gT(oE2HEr|`9<*=p2U2k2}3AIX6L@o*ayyQfktcn)9J&(r53k^4p6{Xb4 z7~-=tZ&`O8gY7QAA{V1n)y~D+SX9B?`4iVtwsmkG&b8U@0Z!(!8vhvgx7fQ;x}{pI z2&*dJ1!=saFi!&Y1FofN7J;E-?J04rNfiyyV&+iJpW%ZIgq82x)-?a-H-yWV7?q#@ zicZMU+UbO?*PE&MXz1ZQ4XXH*Yl7fF$4s3wm>WCu*&szIOnLT55^^K2J5l8vI|JA? zuN)64_yE-XuHnMOe8p{EObKyJ{pP3<>OcY3qG=3WCE>)U={C1EdPadsIElpgW^Q*f zV8gQfPisZwEc)Aez2Tde;t&ln z`PAk2D5t`kG(zNTtOfh_UpOl%^5?O`v{K8X7Wcv|Epk1QJTniz$ zI`AvIiTxP2M?hfOuPX`An0qiP&r09Y{y8M$6U}D|t`bKy1dj^iG#1t{FcP0&uAjK2 ztFb`Q07i_7zyL1UgVpK*4iKxNfvbzt6xalt^B2?wPc!E9kD zp{yoozy2KI?db{bq?w)8btE17PZ!?XGWe1V)G4*>8l}?o;pB45$;n@IR&xmHr5(1R zE*$2P7;e_d?9!gv?(eC5h+#{SSd?z`R9mA!%#;=Yy)Y?9DdJe8xuug5|% zpQ4+{`zK7Y-EHZhoW1Tz9acK@Gf~hQ9jg5UhJSkHZIu{b24OeGqoY zG$1ojgS)e1I5b`|U&VUT*($T6+nT^NNk}lY$qr2OGJgBHokKiin24Ta+SEX6?Rt57 z$!VWI38jxLTV&tO1ZK}gz=Bf-|McZT-=1`Pq$EaCun^zg{nA(#<$y{%VpOpX!>BJ{ zYrG+KOc_TRg1DxV&&?IL0^-JZd_?;;M>rp&3obLafmTSdl{hXlk7&8d|AsS$1?g5a zE;>4>f?YSa!5Qc!D7Ga+pH-lqyJs2Egyj*N6&~*hU}MS>F+%fwUe(N8)Hf0GGKw&? zgtQdKb{YRV*M{%HQ)78u&8QR4jAJomWB^5? zCmmI;q#>PR3Fb{gf?_mVxmt%>#Szo44t#mUh6&1 z_<)h%QVU7Gkt|-dW>avUg=eM4FPZn|>F)+P;N-TL(LF(!v#bbt**Gzx3-K+LqHsZ? zSv2@eRqq$so<7mesmznf!OX*6KZ@-6q+LZMW|1%Y3wAvODi#I6-q<|R+DLymobhPz(3l z3tkmes_M~A0+?EA)X9W@)>PdmT)J4pNB{YCTjSL|N0$W;q5ho^WiSn2t80`5iPZa2 z2rt*m@VizEzxY1g|Iu`oL0Pt48zm*>p}R|(n-D>|TT;5ak(BQ4PU({F?(PNwk!}&` zuJ81n`Tpq)FwD($ow4_^*Sf@O_u4@~@wyHEprPRzmkh&cxkfYrWmrdGjBZ^k9WaW? z8IF8qRj(5GzSo8h0*517cpZ{OogxNLPh3xJ68vt^*w31IJcBKXn<3o94!e9NA!s1b zEwq1YXXq$OF~cxUqWqYtuQpjzR>%k1>(s^kAPuT`bg^2$=kQt{;=x!LCEN17x4SWg zZ(8yr>`u;c};*tIuiY zilJFrO*_SHLDYoLfUeYNf5%UyZU=Gm@P1tq470bOgfYNl6ZY7Fjy{%lDfEpl)eGTc zwHnR2-GRzu;E-AT{$R>I6<{Q1(30guwJ${28y7vzjw!_P+ae+})RaJs@#sjAY6cEQ z#<+IK1%tCLBEsM;HG>JI2?IX7L!NFriuGFN3=5So?-2rzZEaH7?&lN69_Ga@yuCE# z*u#;0RF~X0eOxz3ya>{CKSwJ+goI1MLjCv^^$wyu2eqX< z`4(&G_ZJ;&TG{92sL0vGZT)emNYPpXf{v!Vg9jCYy3Jli{X5;;lgf0H2T{! z5e~!=_V{LF#Oo1$hM5iSTH-rDCiKqR$9>$p1O4^M12RnmE>BqdUbhxsT+-$C#OGD> z`}$W-ax#+(rlZJhWW+8KUuA6)u!1qbo6z_7or=NHSqzTXTbQ(309hdVa-Q%c7x6mM-8 zMLWM$Lm6(Sg%X95CHsj(S<7)QE<+V9E#>E({QQ;1C@ueo0z)kSs(ZC?uvRFiybaE~X$VZDLP`g!A)L(y;8_p`Wf>kRCYXqYbu7B4@2P5$`b#>ng zEmeF7lo-yt@A?>&&*P3y=KIVS&uvf!y%6OWNBBJiy0Va6en>GYI(KfdCm$v(P&lU1 zkma2;@*CChJlx0{pYr}Ln1uHu>?x9D-cewv;u6^IbMEi&p?-G+h^;uleKKPDmrh%> za{?pkWoa+sN^#2u=k`$s(eRDmQCybm&Hr2X1S#&sgS;+LX_G(E7E`;NQraBG(pd>^ zrn2SzuXh{IC<(5ajdi<%Pmiye^Y-2RR|*$nk~!`nvA%!QYtYtP9mDNkHa)-beiewi z4cjl<5}wsiDTe8fqV?cZLQ#oTAXcCvr9qHaWHQ1`;4Bh6oIk#no=YO!Q?k^Pn?!Uw zFzVbE!4;-1P29I!fTA!wMZV0Zc3rG_%~x&yDGD>s=m%e`ks^J#<4nl9IJ*R)55Gn- zQ%|l|YgAA73m|}*@X)uZfTf~^{51OB;GL|gH;6baxoAxK!}u53aT%(hs&*#V&yPQK z-<-l@L=L!qCX~Y16D4~J#0Y4spCd559BY5mq{#w~R3 z;QNUNbVq;bCLebRHJ31SrpBAVZv%vL13ysJ7FqpUk*)a~X8&7VvUqA4@HCD=YTSf7_UT{f%!2b%C6rODBFW&j(}!>xmgA&p#`A$6b{-1(4yg%#ewozLCae8N$ZrdXD-( z>-Cwyr2?K=`UuKD4vQbFxau^NW?TM~V1&6AM7UIoRw{Td(;77ux$l?fzDUsG_vN3zP}VjJF=Pd=L<28)gnoPu{FHPjzUx;fX!xAx-a zqon8-iZx>DwhSl!mo7(>#Q9w1%sec&?Bg#P^&yW;k3jl}0BUKA#-B;11YFl_e(O(} z)JWjAaB%;{NET{SIX!j2dOW|7Np_C27equ%-A=8OIs6)%s`aw_2=!iO90*q@-wB-md+q-jL!=UdK=^i3$HH3kV;xfglWas?)I_ghz5pkG#0zC@ zHjc_p$Gd3+d@Lw~1PxA7MN>_7eAM6lRp2Cn{YQ&vA|xbm9e)de8Fs7z>6f+R4(8eC zHN;ePhl_YzC=?&=;`bF>1FG*4+t~5 zhXAU4m0qh%^J;WdBxu6j9ZCw0oj$Lho;Ox|N59MQN?2U{ynk>&KbBvm?;`YrJa%k> z22%V(gVgs))N6ON#O?mh0mvvEa0)~@f5g%;$z%PqXkRYR4!d11F40ANQ!5|D6S#Hv zd2II0+_;No1(G(h-mtBULB=gbi97Yz@$UT96UT=I%K=39Yy{ewfpfLWoX;Oa*+h(B zjSDHcfw1+fhOWkT>${w7kWHPsFIN|$wxEDdQB!w&Zd}rAZyLDFc}5lVxpb-0X(dd5 zMNGCvXCIS}98r`lOokNn#s#ZnPJ7*`-yOVe=bUHRd*c=MEWe*?nEYv#)0)+OSN)p# zn(}q3OSE~lD7i6i1U5t!J|C(? zGjtE0RAc7vA=97Xy0v)s_{H@MusqlFoJph&CNk#K#Myr23$?H9{~K^EEy>xI6!h>1 ze!%0KHQMD*^UfsmO26y#jIbHZ`XVUaGdgRj-;n{9UW@Aqr~Yd>R>kh>s5}C-WZ8gs zZB1UW`DIcu!I~YAB3QcqSr*pY;#+zt~iVlFS#ujJm6LYVWb8XO5DV`JiaDyFwES+C4BSp5*;s0avxy_m@ zKcZDpsve9Hy13B%dG}+%soQ@c^s_ZYMc87Iu8HTvc1M}K;IZU~ptSe(^XO`*AJQc> zMNx}`-v6*_E?Deo$ICrPc@GEk{lnEGkBZ7zQ|Y%#$MgkiVMk?M6Y^Sk?Pfx=rgzvS zYQ0nIlUyC;*wpY5-}~L(&I7BU0=iJEoqF9A6kP8QjZNrd6BnM1 zDvQ?a{^jP*cZR`PIJ)1M?j@} zLLm?&DPcbybU!e5okw@mj?Y0{F@E{~kW-|QmRFX|F!KW;*?&LdZVs<&K;QSWng_(s zNxjY>-8aYGWA{#}z;c6aFrvj=$At3xPhIYsoj=_=&lo$@zJU*1DfH}StSUniZ7;!e z`aPpubII8~`7a`xxyAMRpSq@|mhmT*pAKaizQBu4PtBYz@*%#!MHpBpGy?zT5UsSg zEj|`m;Q*a!>(G=g2lxYX)Y}SNAH_QDIp+A@g{rrlcENgW!aj~7z(!#_JhPY*q$xxp z5v(I&wn1@kb>IEAud&~-12mj_LBFVhi2?WJFIU$xM~-83>DUb6j?1hSjSX4^;yhuY zwRua&^J7|tr8V~YWAO;hl)Jf~H&9E~6d~I?T^46k@w{Zy-B8X9!ZMA6g(u|jIoTP| zNxcT(wa;HVmBgY1U9wXDl&_@W1~Pt}Y*+1TJ&4dh2r-XG5z48#OlPzQGi0b?UXM{e8L>Qi9P}k_&8=xaT;< z#SUHDO)AOnL~y9MAktmA^LF)42gI+Zua{)pUtcgmR%~A-=K&7k^p*VeX5)Dk3R0On zl_$Z#5;nI-7e|XU)sA>28|DOoBOw1n<`7+MiJ68O^7sQ0-TIF?m$cFcn}S;b_SG3( z?HyiV@e~9JOrQm#lAYITmnb4B-N!+N*DkwuKPsTFz9qG0woHMq3}bMw{!eEcC1-WI ziJ9K_s+qOs7jIA^SGIuKn!G~EWL&h?`pSyt+(;1D#)rlyoM;O(oNrEz=*J^l{W=}! z4TB8+M-8(PKwA@BfdkheodCh#EmVTS-;Y)PD4G4=@9lcd^7K%vZ!n_x)OQlhII;YW zL!3{-3`-}I5c$umo}Db>#QhXiq*wt^n89y9>%U)mP)y^jFs}D0d%I;|LY=V;Er`u$ zV4(pcR;&>oPajBIwsgFe?{}h`^mXH-sDbJVd-Citj>RmM6a4&kue%fndFY&wHHs-) zPhz6H=K}86X83L>Oza)LAzsYjQYPc#wY+5Nq^VglRE<%mh!H*wf7cZD`QJ0r9AJX& zvh(x9Z@RZ`|uuf2yLGJJWu~ z>YhLPve^@(mDK_kl%GEd(S=4QCQ$3^>rFHzvJXJ0N-+ic*Wcw@5+j1LvF&Z;1w@UM z)Rglw6U{O3b)9yxrAPFjMc2G)YH3-jN3EhlGRJA`<3k#bVltiG2>>^Bb#)>Mg@A0H z%xN2MN)J#I;-CKsqZQ{)--2Tnr~FEjtu}MCzDA2g^J-+|j|JtWW3^-k)1xm_iN(xw z4LC(Y${d1Xc0K@K(XdMLZ_$(E>7FSe*iytud+47&HVehF(@wY}goj{{GQ zZV@{Nmczu9ouP+E2DS9z+XrwLkoa0DJ4n7}v;Ub+jLYHM!tCe#hCbSqbXyLa)!M*( zx*AJlS~2c9#6qhQ`OfV0?}fbc^Be$WvuOMiWd8Luhr$fa%tC-G9!$w^*TWivLB#f( zKf53mFZ@y9Z=o*ik4?pDt-1!c=z8-FGk1sJ!9i1>TVN>|CVNE(^100!|NkyZ6}%$^ zAL|8oLIs~FpaAoSV~&%GwV$Hq>jvrmev?ug>A{q)$?FTh%?6j`QBqFl%Nz8u2n1>cNiRqj6OL9i0T}~W^l-s1G$Ui}*Xuc)>U*Mo4*-Pz-A|F-|5GhZdIjQ>M z?&EJ=uKPwp3F|4|V`!&v;GURGAPp~F2ASr&60$>>o0i|;TLPGXH%_Zf%oB17^|p^_ zKYpa7cY9>peHCiv-Hexvg$VjaTSuaxdy}ia`u<(#8>u_4x_tW9-u1lK_4!BFX;G() z>1awV&B~imuJ8U95K=@A4hS0?+dPKoypZ!WS$6iJL4K%R2EJJaDOaHQJpL+siiwGI zN=0RvYJyBzr%dwWgI?Ej)xiYW!Fr}) zb!30C9iN1(*gkilmiIp@g_oaxW5NR4Y|7 z58f63p8pysY|_M(MwSl|MMVQ!?9f(S@iXy(V(#+yt%Bjd#4Q)`u#tl$0H3^hc%a_} zO2#k#5LAaXKB|I#)iP7L{@huMnz}lf_O&5SIR7QHgP6*z4zzonU>Q?C$W?lJR^Hl? z>7$T9s=2dskTQMjP8xU2=#6cr`*rdu$9sP9#-G!>yJ$A!6o?{b=79E=p^*}4N&u8H zzP^Ibu&a=SD5=gaiTafx^Z@d+QJf260k1fqP8}KsoZAk)p6x!Erac2f1LVQEZQ{%N zdL1wvR5S?h^HAawL9+U;^~=jY-_>&Q=*0zlXH_hWOc5V|p)oPBV0dCI$^^govuC-+ z%D6!FhaEMnPE0aE;j*V({g-rjT&_H_hm@ZtQ2@RZQ&~D97{=S%TM9>IBo#3r4hV|y z@e5aMOdsV-RgG4gP7W)AfLf2TaS^x46sr`G!l+Y0T_!5}lR*ZHZnbD-6Zm+b^QI@Z z@+is{*@L}UM$eipD&C)WLWv>{Apjj@LdU}#&VK69Apv}$;xfU)iTxDK*|VQxt6Zy& zgp72pMxj=v*}=(49ewi))8q&m8k*Uosz(gGp`WP+cZ_V2a^8wXeo&V^u{f}80E}Sx zPMUIS6b^U};g#{@PVdQD)LByd9U6>*2DMW!bzvA+x^0@B8FhZj>IvqcQiAhST-5T0!K43g z^pWLx_KaGiT0^!aQiF~^RNGT+Pr*xhIHHVoX}X8xVn_B>*p`~LJqKgk?2WEO+C5>$PHr|)b^;0}TDwWPKkOVV?J__# z#qa;14~`zyXzinYH!M~pMStq(>_yZ?pO&37%>Fhh>ce;WI0ChmJcNOG6BFko@5kGt z;58e{pj=>50|&}&vHQaTFyu;y?P4<0Wcl@D$JLxHe(~s5Ki~+CgYikQXb9W7;B4Fi zj@7{)aCZWUBe1~6kO_XOUM-kEQ7l#cqMHg>U2MD@kr24YTe3n`hI24VOG|*9C`sy` zRFdP9;o3e9_-R0+bangIUXn07sSS+6i-Y-OYoF?0OtLF4J zhrpqqZ3Rh|o;H5IMH~tS22xqJ${`xV6zfUz9g~HVK1#f>naws^>yLj$p{^eY7rPiz zOe;m-iDABbWaJ_*%2i}K+YJ0q`J}wAu0up1rvxC>{{G?#fNX}p%idf#Qt7z)U2e19 z5v;>9494z&NssU5Zs%zw=b0cfGEy^%+w=13n;g}TH)0N9QB*QTfOmqT)9n-f{P^{3 zjFC$+=FjluYRBc2rb)$OUJ@sw7g>5mxxYU{XzZVZ7~Y%nK9mix>@co2{V7(YyBzO+ z8b^c%T((~h!z3ET+f(f~=evoo;VSmu;OQ|2b}wgDS{o8M-GqRbLh z*88-Kwy9;e90YpQV_}@y!HmJme3l zC8{i6hDkyRNJxrR7edyRZKDM}f3H?F^2t#^lBrcm`O9VfVlmkXcwuQcf9U7+DB{zm z$yoJI&On;!VoKE>-FCMWlq*xhx6y~yn5ri(vdp`OwK_-51s@&OeI8)|E0bL^_9Rc4 z{`~2yzS;C&Z?8Yb!|pG^_PHjhFI|+%*JsaY-rh9i`Q6=e-nPk~O8WPi`@eBJAS92W zD-kD5YkuRoytw;BVUw z;>jnX@w#xTyD5Ev;l|@rW5neq7c8>JURLd9dHSHa~%9G`P>i%_5FU675p<^|D&28Xgrb#^IFz zD;u|tIJ!zHHn;b~TYxqFoHS>$1a5`zG%71=8Z=6D{sQwT2^fvfuot*)K$GD{6MRaK z<(S!sB^!|Y6tlT6r{}dL9sq$co!?lRuF6_HJSN*52*(2V$|uQe_XqcUh=_r)Ho)_o z7%WwFE~f+<4uLIGMZr6AaPMWn9s&mK>%v~q6)#l%*YYWjtX%bNse0{mH zo40hkjyl~Q>3e(bF(mvw!I!5sz8iL~CqIXl0O0LopA9eY>|(?aw=08YV_YQ5%nI)isc2)See_PjCc9DN^Qf8Um~eK`>S1FOOC5G-8|s zsu=|HK_{zU9q;Ej2lFFO@SoOCeUkO6Wm|Q24`)Teb|CODi}iHu`|Nu*Hm51qFEcU? z5nvlDi1i7ua`E%16sI;eGc$Mp+j^RBGzbm_f-hLFh}BEt-fbg!y_OW_ZXDLsWL5U$*185Mz`XW=*2ZY29#2XSC zhR@kY*_q>e;6(>;ga|fn z!;L3T%T*aNV4K=9t~$Yo29^!;!&NEbzyEDPp* z=Z;)4L?AO83IeH;d0&V_m0JhEX#)(Qi;2FZC(*ENLBUH-8ClW^5?C-VN;_7{i&j( zyorrbI#*26pR$`;tU-Of_6cQt4$TVoTK9yElbJIQI65YJ2U9t{!DR*!^mn@~-mJ37 z-!u{=F@rI7Bw{iOkPPCZ&I6$g(=$HANnCMNpuuz7#efNDu(!DHM5}NT$xpUTA0UcW zesMa`{mRzr&Ipzn&TEe>e}Ca@w{4^p!=&5oA`S-y*r z0@SzBkoWJSdvX=&9CwDW@mTc+nr#1ezxseDeR6x7T?u=enfMtYjG z^mJnnj}Yb3C|ll+r;A(Zg2Rjva|jpL)ZaBvHz09N%g8nYPY~9y0)(wLys_~Ok?FAA zlJjqM(=x24y<8*@6J>XqcmpevwP9)JsV3bZ2wRXey4da|JdlFgcV2UK9XMSrEBz~P zFP1L>qC{HpU^vz-nbx-4|7QU>0Q4FFW#ENaawLK6qhLanh=b902iHK6A%&;u6$&=F zj5eLffB>M6+j3OCJs=#|{A~C=E=lGQW>!A>HQPN!uX>pOcD?^^XZsQf6os9#{z{l( z)DHe|?FuJb@9r-3w7?@1;3n^0@?6}*fVvo64A7TeeJ)Rup#fv@W4pU%KCidFIY4@j zFAn%el|oeSVA*EEq9aAYgbl-79%H7xrSK` zs0jyO9KZ@RwbP9W#uO1jB@V_<&6C+49Sh?4&dayItOFP5u=9UYd!gP8v& zQo{^SHOTfrh~D+jx7~s8cCdAvI{m)V=H}_WE0(;zL>9)E_$Q;@n$LN_7rdU&F?Dc= zY2Ij?$TVlIY5NJaWrPeneu7zsqvyK=jMM6O1MdXJ_-}vpswh132+tI#-MT$rmE#K$ z!~X$fS~8DarJ>=FbHe#By1qJ8Bfd5@NnW^-w{@}7K8kddI2eNz3}{O1lrmp>=m1Rs z5nR=`W4kU8CMNXEho_JPZd(=D_&Xy%Om|2Zyq`Riigzp>po;Yh%4+9w0__1}N%S|? zOcVMAD>`N-g=EtlrPVAP+zlj4jrjO<^=)-x_#ryJubBMy!Fo$QoNr0JuP8o!Ysmzd z0W1l&@yKy6(2_3JiY6c)y9E4F>W~o(Sy&TN|6Kc?y}Z!B`&Xr@ZlE($D;GNLbMww^ z(|-p{ETT&$)Z2H(7*3rPu|7A;$zNZlZrro%&5;9^2BK+xl00@SX8EL)&Nf|N4V>ZO zjs~rA$W@!|6d*?sDdC;1GKoZi#Yjyrq2??X&U{S7AIP{bTi#Ctk# ziTAp8Lb-4MTAG=w(IrPaCo}&=6k-X7mGJ}?b7wy=OEh| z2Le%!`S(qBBwHoE`|tjp`+{3dgGM+w_@}R~T!1MW;lID4GXKqEjw}mFCqiy`9`~&Q zgF_PzH@R$Z8iX>&tN3@ADkqFGaEmdFwILsP2V1{x47o79?4@>3tn>4>`0TN>|Airu z6J^{MHw;^{o;|6kwKPiO{#^?ZoP;H7P0Y)ql#O)JSu(o)D{W?OH)F$z#jPgBUdnYe7V(seVgt3mnJ2p)4wM>uey4ymiNYBh0@=p46d*2?rvCt z9ijn{6|ZS~d%zS8{~=X!{tr!PEV0RWiu}_<^(!Nx^?T%dVxUlvChrIbpAZOM{Q;U@J! z^Z?HIz!||w^j2#US9$2z{QHbzla4?tog%^RrF)sT_k(~8IJ%GEA^)2aZ)gaz%!pdW z^?rV4Vz$m!0b7$!DS-F@z&N;^fgYlKt&UM;Z3;Ks!#5eK+Z1E0q1gwgjfC?JHv!Z3 zTy*D7Qeo_b@dKnl$fFK@@X1HiXw-QNPL0Y%uqys>)kVIC@u@CpwQLdvB63hfo4%}J zitOqVIGK?q;Ugg=>~mR@i!0Eo1pOhk-`3UxbD|95<@2;D2|5)2n38LDc;Wd6o^1*Y zI1dkx=~-DtOUD#Jn}D3tz)SLjFxtlc)pHO15K+%hjqOXCCeuZULZ!oW71B2g=wY}# zrlb*v^WSvSogHG@d*QFhYd5~%nG?})VD#zsGpwC?`D0FbCmP4q)2bC_Ph8F_kwa7{ zPurqm-p;4B$9&c{W>@d6d_Vf%!__LY3DKc_q;+|mwd*7ts{ zY12tpx1%9bqwyKXz;M*xCs7-mrgTLEF1ivD5^kqYo)r}po1Owq#`6|jm`CGb{Ow|+m~bdum1ewY4wk`-pT7Ha@&$5ry!*>pQyJA3qT@_nL=$~r6x_n^X(1%B+5sl zkLdg8j2hK;h91jd?OtO&*QXyQ9yy#J@)HmeV|wf=PvIR4=Fs><-$W;IW_65M(5Nl8HgY4+Hi z=u3L3R-DWxkHm#b6ofCxq97?YNg`nHI&23`#(fv%jc`3ue(3T3oq6{KBRRDU9N*>D z?cI8$xsV7pvd0?f!L+`St84mVGM@YW-ja)q+L7q{7)qTFVzc6%GzGNtHyS&49v%K@Py7AQA zdh^1U3+VgfsVq(>5ARV?)l%@j{Ng=(=1NiOZD4A$$=cj~CNs2gPScqha6n1A#f*bjhEK$%=L2)$LoFgW zsoW)wZQk%AtyX!5XvCuH7P#|Hz~5T?DnAagu##ujJefXU&Ccr-DELrNjUEDBJflOi z>d*s06eSyX4BJK|u(pUIr&On}^PJ|2+3<{dc_9u?=wZk4{+xQBP8jSJp4W@1&YIJI z%*7@L3h%OjiCXX^2!t~j8e;yjti0G4T(Xhl-`scju_?N*Ghgw#mS#COB@_@FH~*NX2!;7suT)JD-O=&09`)r#~b22)hUh{ zeWQH|vH@s@oAWm7ibb;{&Qy#$CT6*vM{A9c95{~mv0!}5IPREw&k|-ilU(L;P#z$or#W#Y8g8mB zUyRyuIBu=iDpx9BLh3u)pSBa$F52~~-Qrg%SgT`VNJa*cfpm_z3mN2K81T<44}P7c z!8)dlN?Jo=W9UIgq>W2dGa9goN429 z+DKX1imHlSfDlN8TOtO`aio6q=}UIDWX}4_uh3XOmwm{UYf0f?{pANB>Sm&PUbYzu z-XuT^Z~yOaUW+?I=S-n89VQR$Y4b55Cbe84I$TJ;`C`)36KAAVab|+qp*gDqB%vQ_Erq>Ic5P2i!OY7DUlF*4+;l<)YO~z{>*dfeFg7 z4(D?;Oye?hCILhr)=QL2O~zPKOifY7U5Op}1InG}+g zE`-RWP#V5u7BWZ??akC7*BoWiplmcSf%6vc*OP5LpL0AU(as}KwT~uJ!Iq_Y(mD|x zR+f=wsh)RMs;FmzTGPW@a^YI%e4JY*C&@^NnoBAEtn&PTZBB+L{z}f+ic^$Hn}%L|P1|fKD&fu47U}mWP%>dMhR3Bcbt1irOs3 zp^^I$Yl((@DG7OHzM%o($1x%}ipxuS_gZ49p_heojRhS~1-$k_gkbJO)%z$^_UobTk=pjg-Dy z-U0UfRa+I7R(#5#%hjhF`&Zl;>$4RyZ|r$&I!gn5LbBiYq_VQ(ZhAuau0q##w5#;V zSJq+5AM+2|xX9_%ksDUudSt(VEie@Q0rDOd%b)xZUQ9rz6*9PoqJ9_IeMkHHXX%9= z)R!b%&)XHY-SgBgYnX{wrLm2A*x`$m{q@uxK$q+M?tpYFQ~wpW`&xUWpqh1h`uW$i zF=DVWZ7}G8+lcfMK7sk(M19K3u^3DtyUxe9+|KHfN!!PDCn*hD_`kh zXY#p;6zos2rFyz~y?>lwo^afFmgMo-fE{o^l!j)L4~R}|%%18NgDh|o5FeTk-!MOo zvA!xBx$UCo5B%{;1h>bM`Y22-_bR>W+PV%u<%E?L9-ZL<7nFh8Y!#nP;|%E>ljIfD zZT!C-mx!@^57J#Pjqi9~{}MRfr|Ca0>WdD3jGQ@k#b7XUHi1&$SD4`Ae6_>%m^--W5BOf!3kpw- zDly;AU#cO(k`+>3fzL*KH0_%)Rg%9c4TJJqf>(Ti}676)Domov?jZHpl za!xyy^itKOe9g{4>mg&&D*p8-=jj&QXtbZ&eQ)g#uQQ(dSf7Xumtl=mi7CT`;M2^a zOr=osAa9Wvs8j1L8%2UBFeqU}3NQSHUiqPweo^TY!%=AJXf43m6pc<5Tbg(dwmO}j zWr8rmmksZ)7s0Gg#&8Mt{MYhbuNU-Lx)PBw%OaPbAS6j=D=Iur7i29>D)+a@o#(^54l#%3rbgg?$v8k0^**_k3MkuV{;?N@4f@ zYn{WKm^r(DEcVCb_2FCZh(XHi1K@d($Wt^hGo$T<2S2H3Z*OAX0V}yzFF|-@&+&>+ z0U>dlyWK9rU}m_g$3?eL`6K$i`|joagdSt+IO>1@)wi{c`NJZBi%ohzHk@!%%xl%p z|Kcdn5s8Dw@`B`TxEqWjn^{6_*1D3by-r{dTnC8P^i7L+#IU0`4bYLo6s7X)%*&qw zZAAQ$$l+6Pp|9Y>N);iYJ3p4yRhU2)pma|<1eb|kC`-D;5-MC6(cp`5*O;K6| zRzy}^CRxY?`J+XC6A^tO1q4f!g%d8uR7Ejh#2J!AdG!qEicwuMi+y!{dwjSv7NOTt zg(O1M1Dg3dEU99iZ;9teY3nW1oZCr4BqbV}zSJFthJ=(Z9k*0v5?IwtB`NT)sJ2Sc zvoHFq$~34ln4(C&c2TEjtq7IlA6cjEPf9eIY96DAR3utAsFwU|Xt?b}f2gAq|6NgN zC0@f;=4h=l!2YAHJDlx5ts!}$eWVycrMFP=;!pDekAAxv8S&EVDl%{9XDmNgzHB}U z)Xtq+6WrKl%V0?wQ!%5$HwEM=2YdeQ$ef*JlUs$$%L-vsXK}juqfJEIx2gk?<^{=8 zH8u6aay6hy5~B+~aQ}IPcMNC3yi)w58~6A$Bj*0k1nN?iUVoDOq(w+c(F|P7?4d45mve~sx+~qN)rzwX=+Qx zj}1~LX1;52FphvEedF;?QQ&)m(r&gj{XK-q!7<;$W33yYR$*;~VrY=@Gd_w+xWn+z z+x03LNp}IbO2l&6Em9${i^7wtH+(p^I7?90)TgWVE^0n z6sKke(Ergy{pT_@OC%U3?L-3G@xEJc=UNEfs`FU~n)kDK%vx=1^R&*^P$P?j2J~l2 z)T@^jn;*3{rG}oPP3DMs;waR)Hssq`U)T4B7T)?i4GT^OU(VaC3JhIcVS{)aB~R8I zg(Sm&r5=bFd5AOYwQN{eRL&ns);*4iPntqS47GWZ*oD#t82p>5FILP%)@2Mci!Et| zt{V3J#Tar%Cyk?`qt7aVrUar&XX&(ef&K0ivAIb@AO9`s-jgRsMP;KBgG4E{9m`H8 zD)~G%A{7hGW{B4Cui41>d6V!2?3;bDD z9#dg1ntLdCEZ`cG0zcL8bk@cYn}j)ESAzdSzT$ND)Co zQZ>3nUR7m$#ae^Hyiob+BfiMyN3^a}r=vLXXtkreR>^)zE4R0tXyrA{z)Y_OU24_P8yS5AVli;AWIz3o)liD&B_k%^X-CC#B`F~Rl95Kv&QX92 zTHDeh)x0_xl_$~_7w-&?AL2~Fma2e8{44&P! zcX0F*Cq^lRo-_-!4a7DQZ7K-2%3uo$bUM1oh>#Mv35VXkz1h-KXm ziZ*Y(=9^G zgCFAaS7(Y6m8Qwmkk>+_p1o!QhMnDl)8pztRXTO%3q${cuf%;dsNcRNTEq?`=0$c` zvhpY2H!Ai~r=W{RnAMLjFH<)yN){;Xj8^*u>aoI@T1t|$DLdX%rtBEBqBR*~++p-3 zO|VWHF4GRmKsQ^~nom=_33)Su7lB_KoJ7kmLG))#43SxoIXSvdf&tdBMaqV_S*qx# zLaFLLR?Z#%q*?0Mjn1&+l<(?0tF%W%_{D1&_-daH7T)5OG8Hz28N2J zvT>S0c@R{*;AmxBWdgs^r+g!y);`@^+wETys~WR#B0mWO3N{6sl^tlCGw6_;w3q?7 zg=3yWs^}Q7<+J2ecV1=t1v>Qz(_q<0C$9dq(W7Gzt1^D(+bBpBGMAe#RHQRlb;Z5n zKn(<^bdOFwwLk2WFm{}-^N0Muhz*Fz$c9H-|8<5fI5As)trm4tRKmvV!4^SuPe#-k za6CFm2aVXuZ$TYoXJ-dLq<4GUNVzbUNhSaGklhf!3PDyLYqgdmDM$!`(W&*DgdTNW zb+Ti6`iiD^4mF*rCT`ZJgQgY2>02b&O3X#8rWzZRc~1K>S?6PoXWJ$+DN{OA1V$r8 zWZ1x_l9A7hUJp*8%Un=t(3BfAf238vr4YTcj*>{V8SK%zhACJ;e|s zZPd#AsfChmB3X==O28($%v*~UEUz9U_g?M$*EY)v5(?ChS)`HW);1d*(aiVAsaCRA zDXC|B9{wp+mKgYEluK!Zg_M^*$#d(CJKWgF@Ie&p{qJL_{#k0{sX|+Krg#%_2LCBo z-QOz^4}u@inc7}|T30&)n7594$wUD8L@o=_wX?t6BXda) zfy?80!_;+Zm;t6GbZfeB|s5k^?%Damwuc{6HVs zC0R0W=;IUPbTCy5PL5y&iT^@s1%?Y*BC$>7k5vD*rF@xlGUBf*?ADJpDfAWK{V<-* z?+G$Ep-6#o+!1yWLnV$D-><{QD^~&`5uh`D>TtFx44!moP~)<;e!K2|a1#ArT2%4K zZ?(cn^f!446)u?%23RIqe@fr*heO}_M;pVUO392igTNOs>HKfR3P8D{^|3>w7vO(1 z`f}aj!@x--AYl>%h_>h7)_0|)x!k@l{9qO*#iD=_r~yE3spEX;7#w7xQ2)acXNw-v zx{2yKeTP3^c$i};jQ;MEe|Unsz(u?ykMpKLVbX$?HQ#k57_#xsw);RGaSZ-b;=bvh z__U0bLlY&^H?uRg7^&0Z7Nc=b{Lw89fwUvD*Wbryw^m_inbl!`0zM(bR3l{&h>_jT z{1Lu<3+v6pAbnmq;PD~*$FkksF1iG#=d+*I=HREsIvixZ)2y7vk|acf=KOpM3+dl5N7^8Q_(GtW(6)6F*~>3N$saTeqbsHL~<;10Jm0i~ zSW`lOXe^tHal}74sz&i-`>CFRjZJ_gsWk`l79?{}3 zaP9h(w=gXRpK1F4S%A$m+@D!r!?)Qv>aCaU;8!bWtcK;L7x0NTdU@^jhfsiyW-HxX ze{(BTaA^6?utN{HLM+wPGv%V}w~Tf?j7-G-U4z2UF?@cPbcLOY>vXy%pLXB9iS|fz z<=rGw;2$4NyuFwgbiyW(C6tc^=3flM3In=9Q8Mp1Nda%NKv83_^GLyIeXmCzaOCEn zY-D3LDLhaW(BC@fzS`JyZ;Sf|L47%leGR)^Zy!0X?jAKK^NnJCx=KBC2V3y^!Bsj6 zDw;iQ!V>5HQsvwwb#j*g@*eU#g_s$^n(%I~8*wi|P?YP7IvF3lx>8Oktk#)~+7;6Gz*S|ujv zw^*1hNfGd>)sc;J9&aeDz-&YV4=8(NMv`b?@8rlWwz!=E+Af@2|D)so~+$sMeI_qJ?M;#x+Y9Qgkt_d18j<8;tUA%a(&AK zkZ~a3^76Nnl;!<#%=mP_ls%_|Q6Pn#2`4pp=hP|u5=R-T%42k75h}rx zi|iMTj=S1qzqchxN~`~+RJF`&e?Diw%X9O333HF}=rY=#Z_-@wmWuCXW!gZShj0?j ze7Y;zP$Mlwx>gZrLi&>;+?iI%&-g(I4ftXI3krt7HA?uK>uc<7`8xaA@_y9m!lpDv zutD*cL(3)m#UfL$b;OgHUCBQ^UstXSb_;g?XVf2UTYT+VyL55!MjzxqZM&0}mzQ68 zbY>F68scNiil?Zj9J%YM%}mV3-j5#f-=$Gf9xqmqlRG^063Bt~1Oa|$VeRpJwQ@Fg_Jl=i zsbloYiVBOC`r|nb?QwRs(rBP8srR4+UQZCZ_))0^&9-L;s{2`QALhbUk1_Zpvw$k^FA39?{Kw`ce(Lg;SQ&ggW@GofAj2Q=~<4`})x(eO84f7Ql* z-O!{&WJ-e6hy~@f?N)rG>c`=-T@Oa)T~Nbq;bJ`$hlf+UVE1*xNu{M7LJEij^Msjv zOWp0o(eL^jzT?WOM$*WP5%q@%93+uo z-^I`&1sfhHhDd*iIWv)Ba;7m+mq1NN&!8R8>!2U1iLq{`!;wXFj$n;2ZZSP?ZwlP` zm@$#4>Wx+aiL}y=5$%ebR@TUJl~iAsL(cWfowZS9NyZQ{`Ha~QDO^2a=iwRcyj>qp z=Kw7wEu>$)Gd-P8yk_@7HujD1 z|Iu`oL2)(R7RLPz?vUW_9^74m1b26L3m)9vog}!sJA)J4T?TjOo_tleYJTv8Vu0yB z-Fxq~o)!Q7*^LN((T%+>L9MMNYQbQ^?~6Do(8W?L2d2{F`JXdA;wL%RQH&_y+484D zb|~($ZX>fiL=5i1??({xCshxr3y}&=wnMuyt)$#Suck z&}mn4i7bg38K*P7LBo1?GIcU(TQ70_QjY?L5XFD*_^-XvL?u z3V;3FrK8)2L=mGmY}B@^1m%fu{3j+>J(j{IEBh)O1rgBmARxPsv@eSeN(@O*DqkM} zIz{xTqE@4lIy1J9;nkX=Lq}jX4@3|4v zKI2lx3JS4ql>fblAs5!XOpDyfqw$%ammRBVLStDe8|6>y+WVf)G* zm&khNE@o2x-%rKnpGNp0MoBX>h$xW=VznlR>VhwiW&g7O`fsK>!&tClO;l)3$i%vE z>zfw(INYx2=O9RppZ|PU=!-UPTjvTxbYi%CL!dQ*gM&Z1;|FedqIi2ZpGurlR%DTX z8_UZnSK$rR{siv~QO5sH;~iIBogi7(D^dctKRQXTmn8PT6C1k@eRxu= zCu1hsUsOl;E8<3g^`mU{22nI(w*}CA0{!7X+f1@-JWEn|;ti_;w#d)Vprz7aG_(+4 z1tU*^XKzH2o{*eugOGly11ShUuIPRDQS2f{=iceC5p?lt_l0qEqpezn^rLo=06gwd8S#2yT=eutP=%0z&DBEz_4 zGEN2hg#RRuWZX+YF<=HYJf;g$s}}7Zi&bu_5n6NUvt4>>*0TP;NJmQn{F zA7Q$0<+}UQx?j72n>rIddjy5z5R)EizAJ)Ys|OOSVlHVQOj!`r@s1jzy&j#wz0B2y zDU)2tG=)c{dx>T_H?78>5zU0D_Sd7s&la2S05h zKq`wlZsHfUU*ZKU7*8j~m${R9_TfEcHX?!X@xRiJr%p|)Ba@!0%FV$~q)9IPqg_aP zMI`%4GOdb1xO93qhUr${O@nDrjtFg?57+sYejJf>zwjyTHo|>7VmB`myIdTM+7wi= zH?`OY6#Q?m?r6!k%c|q;@-4WuP$aRt(Wr(xI4(CgJ>HEzpgQ0nC5t5cN5RnJMusUp z9FQzCDf%UYRJ5##&SS@hzuVy7E9p6{@JZx^gu=ziHbPC`SbzUSt80!oHBk?aCmMdJja?9xHc#lwQeVT1N z_HBoZxGgcNBm?lLx}8s(Z0Pd}KPu~BGrS%MvmsOXe^*`8vn%W}kY7SKaj^Zz&D;~y zUHk3|mRubQJ!$&{NHce<+RxjLne{Z1JOSn7SGN;2^=!sS6%(q?+%-!vyO#Gh|Jxyn zTq|h1qv7$#mvSzj->7+5sBNrBKfp`tnO5!peK`{ol8ah%BBZADu@FlHVFRig3P8a; z9TqPwBJO<-C^wZ<$}2HoNR^2we_L_!P&X6t6J}@XP|Y(=^$gwU5dN(dm$AD=iY{(D zYzrk}VV8PrdTX?=toYE?;r-$peRrH(k?_|`mhW4Zl}g0kW#_&=xHEa3T1Uc|oP(@g z!5E8x=J)&nM=jeK3t!d`GN&f-I>kFT)nTDk<3tY~q5Ru3E`qb;$E3Rn$)AGj%{#6v z7{Sbh?R$k}t-sai$l1YPtjNC-de;h4->%IKrF;u>N8*|kGo$J>HW$JrylcknO76%( zXP(WZe||}BZ1R7)dy_GunoZ}vLoy9xe*Ri7LBSe->l?Q}Pr24H8Yg&V^-q9!{sG#^ z5;}Iu_Q=f}ulVzDglw4)$#G7YFMgRSE>rvoT-Ta=HR(xZ&P8P8;Q5j822Jz=vLA>g z;=_!^^P)DU8sbZ&^x4=toku-&r{g_S{7oAVC!L`*?dj;C29Xlrb0`Ca|f$*7~3i|NQv53B!!H zu!&As%a=11LtD4{&&|(2%Dv1M@mzUWT zSpxhVTS!24y{Fz{hx+TB+}{K|zhlT9zy;I0QdnA#5i(ZeW=T>*Vpq1}dBAw6IzSD)c~W^RQZD^=JXQ z5V~~S?Xb2E>#r5#NEJi?S`Y&$oNRDu>5;^v_;xFAwxjvoydyU&>%X$i%=Zm2f$M7$ zp3PAO!;>LcgoJV7vT`RhQ5o_4!u*EjaN@0uKzUj)*$y9&&W=T^K>Z>l_%_i}ID zog>Y~^Drs81sil7@GHguDS95*DT#86Hz0GQ1{6B%094VMq$ znZkAVZzvteL8j@8(?a!OKX5DvT)-f+&A^|ZedD3wKTTW5#Fq-#ueAU;_pZ^CKXNKt z$nB5&wK!^ihHCa5o~^Q;jBRs?R5E={qcS)L2gmnq*h2jAsF_>sKZQlmzxx~!w;yik z(q?mgQI5bgE6pq*H#8J-$wWU%9pF=Lto|-43lTyJ+fp0Wrekd}^{!v!9Eu7# zGhG%#bILrcBOa3M+P)rmdq4`Ufk3A?mpp0xlP5xMG5dO0;I&GU9O_<+J+wq5I6t`n8)qltRY?a_Uq?yzY^WB+V)ut zY!3u@4BR2SwT2>od<_9bT6E2V2hsSxMZ6RAqYCwJv$0_qd`JgD_@DMAl=H7ClD>L& zd5&AI(7fTX5Ja45Z}76&mv@vlkEcHkjZ|{~)!yjcRHB>}ROm5ZNT#%JYWEm8Ty!G9Y*)0-HHv5= zL^cIJhCb)Iq2k%;1?Gpr4qSRv1@HSe06_rl8fR)ozHZHVkjxQoSU

s~1#gAr_x< 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�nYhlOjQ6li7UAg5&*oD@n#Wz{3!KI3b* zI4$#A+}}fiIL%CO9P}*$-QwCb6;me3HvQIR zpp>XX^aNvjt5}x{-R-p}e4IA?=2TuhbX7~x>DgC%UEZIyi6vcI*Yo&Q6XV8aA=nt? z`J2Z8MmB0(R=r)%eqw!R!C2NDLsA=&yGoA|d^@T-9ES^3IIps(F(lRvc=*I3$DbB0 z%(ag2>?>WhWL+2%JWOh7%#PhOp2pu$9nTJkrn;`ULStB^k(gnA^I8;#N*hw*k)nyB zSKrbesK@6-4>Ifz(&KvB9Pr9XCP^k@SGG1agddq7DdrWXIqlxtnd9KnbkIkLlNE+P zl~8)G3$8PiXke{rYZuRf3(%rtq7&S`UFV{+TwIpaqjDDzN*o8fC}d@TD7jXzT{v83 zgTlEp;|3}fq!L}K0-!pHEHrc)Eg>RKGPL}EEr5W_0SZup`~Qc~umH4aS$$k^Oc;TH znza_EejRM2=eJ~f;DOuL7P*iKr0M{yi^Cnr4)dkK%DT>LK= z>R5yfpbq@Ir{>Ew0K+`LR<030$tKs=Q6O6Z@a|c7S!MWl5AV#90jCj4kA0)IZkumJ zNeN{ggN2h*1W=(+qlI5CIMfg#Y_BCXn7g^9WMtsaa=`vU+8)9K0((U>&5EtYLXmNS zI1~&=|2yf3FC>)NKZHX=z9CN@pU`B=bgk`L~Tjg1{dOLFcZ3de)_&jiErKXYi zvT)x?J*Xg%g4T|J=bE3!*@ln*CnolYIZvOu;N3>NXqmtuX~blNt_MK`<)&#eXM5O% zeAieud}WG}P;q1#dxkMQ0$F3XFWb;*F>a7iY}P7x5*W?3gJcpLQp1>dIdk7&f5R0K zm~v6g`f0mki$_z^m3M?0s@O58(@+pls-S*@8L+E}Ng%t@(&YGageidzi?LgT(!gq& zMIIt4eW<};8*-JQJIhg$z`-K9Tkl=$e)M`jzjzO%=f-8N+g`y?~-h7DL5Pfx=3xB@_RkL6vepeq#~_k`YO}7 zsVHJ{5)CP$w=O`+l%~F3FBPJmo}n4Gp}p?{F(ksiv6L(R5dqy_b^o(%KkhE=^L*5f zIMhpirniYor%clz+$bN1{1<*?iKAL5^M(_O#$rvN;OD*xTzFPC55 z-+mYxITh?>2!A^Y;)#6f!|m>g*rk5l*z}JhTy!8w5k=zU33Kj6L3w$jw;dRI*xWAv z@3_+($D4WTndjTqFtw{EFys7!{0uXM<||6MABb5DMRwjj6pRYn2irzKo3K$iQi#Tb zi%Jeb$?`|$yc)S>2uTjWC@Z_Ds%XL_BE$?>_fX)`POC$px8mTDvMiY8){;p^DH|yC z1Vh@yy zo0hc?c2E{eTT<`{A8po*qz;3UArxH`UG)*)X<3ItT{HUfm=V^LqZ3CT62q#ukT{^> zGIaBWZaD7q&ajYACNej!?mZRy2?P&>1_JU%5Lpm~AxOENEPw(@;Of{=;F8_G61%4k zOFSlgoX65UdN2|J*|bT8*wRjzXB$peR?7yqQ=XimIEM)?BFn#fe`&0?pE^|ZNaRwR zYNytwevHTNYjECt&!3x0j|Ui|eA~GnRc_w`LZ-yE@NwaK8ydf-oMOO;Wn7i|x_6!j zIOvSX2A`?KddJ(A2WZ+bwtHM`qkdeXX5{9&yBxlpK?O1b>9WmUFK6`)+Glsc@d9}b z7anM6a9~n3Q3V0Cr*+HDLc@iHAzI&qY88nKsf*#y(%?SWJYsJISJ zTm%a-QGCX7K-?*WbGA&}ReR$p6c$x5r$lT7!S{vo+l@fYN}!cp!$s+(69E*xcyR?CSui9jv_Ok(@NSRsd>Sz%a()=GyR}~dklx%_E z?(XjH?rv$^J!o)(ySqbh4{pKTT|V|#e1D*-7+f_otgy~suJ~`-!^`B_)H(pHpgYgR1J@eV7Vj6pomwV zC-i0E*fT4y=cw+kKxir%@aUL7zcoS*ab{5QAn-d4&nfc2@iM{XuJ*s%tbqx2>rxWUxZt->Cg(a`N$_nhCzq+R!|iT&Vl-K%v~sI52uNvcw$j_l^H!s_J|{=@6UaeQ?A zB8rDjX)uT2M6u;3h+)SwrDSa9N^vP>35b8Ao%#ssR&0nF-ys~t5(FM<8!f$Ip;%2i zl(9QPY-K*SUp^MeQy7W21@NN6x8V6292KgO;zh3jhp+ zP>NacvJ^BZOSj?kvLavNU;f3&tGOkHQm4g0#0E2l-*tNcdj3z#ld6F{3}y%|moCp) z*rT04GBb+ewovd@=jN8bJD>{k#Bte9Hk8 z7E5Ust_LcVClmJLlaS3J3~3Lt)oBOS=Mz-wp6cKmaT$Z)%U5vvspQ_&BovgbMVQAK zpQ+J&13NxmyE`+|;+dd`&4+4{X9PD6;`v_#H~pK`e)fzCs?f z*L&3<=ND)*dKd(=_@{o5sE$`A3x#m zC>_lFAAc$0V`!IzdEPc+W}^Orj8o6z$IK2{FZUS!;IE(+OF_=THm?95w7RF#7rPhdEtc-7M83Z>zo-k9GtSMtZ*$NA^HZ{Ci^!N`+ zv+(LkgK)#84&CJgw543|-~b^&rpy9SD}({L5KB+&i#kWaF>t!8h}AYJ#= zJp!HD%oGk!zw#=9HYxirFR#5~3;JDEQ^zoL^~?2UMS5K2gVEJYtNP5?ZJ7Hun!?!X-^X;{2x-GEG{CrrA+I;$OS1o4REV^v{ ziy;d`BC;X4qWEi%>JD2=8}+d0_+ep}$sb$W&$4DuL9wE{qdp-1|*$bVQ(%KhHsxv_NYirQvuo?o2F=%t_Fpd;| z;xxdJPQDUmP6DO-PIgVO->yN@L`sHL_URz*{3V5#NTDVcb&u+%2lo8B`o@%}<&MlC zR0K0*eE4N(Z?5~i7ToI7LMu95rV}{Z0!07k`+UXYpBwZk@0`vf&vem`Py=EtgiGs- z{dM*5gzkN+*En^zI6+g#Rr9jt8?`lXe^SGSVevj3UH#ITC80R>V!uNwU8FZKZLa1s ztr@Wirx~UDNihYImBp4rJKfQ^+Zfw=8A?2~B9sYnR}hY_k@y=YO_*t6g4h7dwU6ac z`wwE3Qo787bUV@LsjUImHjjPYPDc3tf`hj8%(Nwyq6D_SCmIfjOI&UT!b0<%E-haRBIAg@)&NHczGHcu|7iHoR^4tdXdX;UcuPpDGo?pLy z-L8NATW@#T?h>IJSv+s`g}mZ>Tzc;_{Iu+kqx+XJ?LZ{MQEmn!78C}SJ*+*y*UPyk zU|kOMGq&D<^;|%>8+fjx9SUQIOdBk18@>|7Jb=RR>mz!FF3QbBn(yDdHSf$CT`AdM z#fw5$AwQking5>qNGSk+qD!!Y)4A7zdN3uJZz+}?%mE*Z`&@{F6jP2uioCarp0Z4I_iH`tii$tRB^xWS5yNx5iTOI=T8(++*#=lgwM(In zLt{pJlPW|(@CT90%zWo*wo=F#PI=kZvJ<;e5_{^YT0;vsb7i@c(qXx?Q!--pp2#qy zlmP+jGirHtYH=vQ`br)`fD$YuGfeQfBR$-Mko4U_iBkq_%p_pBxicKy&iC4L_x2`a z=JPCQ>x+=ntlpc@k}nTWiMFOk+WCeat>FD~>L#x@VAePb{#As&`Fr8Hc>1&%a>P7bXf*AkQiB7!^xupi7gEL!PMn258ZbuI`U<36q4nI z_EY*nj^Ql?QZGCS=UambF)-aFzB56cAW7C-sy_0oO8h#^lC8rav@C6(+X4DqwgaiQBI z^#j$h_u=bPbnQqvNv^`YW)f%6Z0~fF+Y8|rH00}>37xOJ2(Sv-)GPGLL9$UM@Xe(s zsB{J$X-Quz^XqFe*AE*lEe37d3g-TB)X>X zVj5UC>b>8c-MS?WWsWSAaK>`g`>LZ3adsCA)t`ALEx8^oGNlfpu=E^X$?UzMQ7sUi zInDZQRs2(^px<}y=x6zlPNlr#MHHLb)oyPtAQ|;N7+sOrf>VPQIvib>F}m$v9aMm4 zlTY2mGsP_2T2V^|kkk6_R0yAtboT*VU~T3S?9-E|TE0O-s6+dqxLdT09NDAm*sliJ zngztLt2lkRH`d{N36+YKY8DX&kWr}8yv|#|PSJa;FRo7V7=|T2XdwA$H&_NqsNytA zF1?4OK#}s=Mcw$t`!?L_s!B8kXlqP>Y8+>ar6at=a}j_r#;Hh0y-GRj=`1=VAl0JJ z!sLfe8(~+=F`CBr0>$rjuGCLiHmnCEibGi^u}XEs!Antd+F|^nT@bc2D1kjt7`r zH1ic^C6`$U+_DgHe(ZFAgx7eU0a6U@AVKo4$!pN3LMJPngO59cJfHhpD{K;*VC{!Q z?aPv(YLw=a$JS`0aE-aqi=#^=m<=>-Ftcdv>IQ;N)LW*8dnK5&hrfpxLKX+(p%g~n zku1!DdQs)#$Ys?pLj+T*!mGl^z5n9=&5IMQ{E=0bjSu?~8GZ&Ld#6H@#%=slq}_oo z6_vY?Obh1jFAxW+5jEB3PA*Nt2NRJhO@(yw zI)?#c?ooWkbVY=ADRYtoOX-i!zKjrF@}h`yfs=D{d0Y^dXMJQcMT~4^%mv_Fruxug zLAJ6|{p$3-*uAg(G1q2RX7aMMVJW#nO3Ib{&EZFY5@qAL zW(6{->G0|S@~)i!Os0STFt5}VQxf&g{{t#5L|ls%9mCtF!982v9P#Y~YuXY}?K9Pu z4aEzJ47^Mk$m(Sr9%y^Y{?I6Y`dW|!5Jv#W&IOw)oq7s+)Kb%43nGP^L89f3)S6_J z&>`PurMn3$r7q5{79iU_5fBqoa}g+{q-m5*UFXr+N&>_dDlWa1YGDee76Tv~p%kQR z{ZSuF$GkMnJq1-EC5hU$m)CizsCiH@v*6edb;^#jfv~!fux~*36#cnXj`bJM==`z{ z*sbr$7L{~;Y<(R$lP%Zc_~7>WeifWmU}FB#$>VqC8IZ{Z)&n=NoG_F21dzMTdDY-8o1DR2zug68-u{XJ5=z7&Z6c!a&oc z>DETgMpg58i>ZSdVb^E;-)#<52^O=t{;`=Rep#cg9||-us}{eK09o#bREZ6?Q=eE( zIsp&;Oz*pAZ;*xe^X1rTi%XJOU{0;j-E~=g0M_xg*z?$1s821MCkiGpe?!3-=@Y%; z;QhS{&;~$rHMLbP*=aK31iZzXSpGgxd2V}q+*)Ziqbhj3r>oGee!lB_AR48ky&v66 zbbEak>h`0Y{4Y5n6~W0Obk6(8;1oX5-MyC941bZf}*0YT%f1pK+Kp|>(zN7?VDNOyIVLOYzo^!i> zbmo{>p$r?|38_woW1%LDmPhH`pummc2jQ35`pT7Jx0Zg}Aer^f|SqJ{J_B!`IEP{Ig z*Z?6**+)(cdIF&&BycJouDHi zA}Z)VUIJXW-n^U%yi;LZ zM9gF}ItcW;3!Hc0Jvu(Ouyu*vddS<_Is8!q=n#OwP_MsoY8-C9unaVJo4#y;7mH$r zfrSNcS9ovX04>rPsDwbG_1lryiyW`h+O$sZBMy)eGTkKR&1)mryt@-g_R0N)p3YbR z2zM|YkvR|Kc=^nuZNa0xr-NZ4A`fG6am6=z~^qji&}bPuTGoE?<$q7yuNQ1pkoiTFlDw| zZ>dK7&Gwu%p`0O>x(zs6?aGNZu$Z3VbH@GWxYggeL$N6kh#?Wt&nf1c^V6w&^uf*P zyV(Z%9hvCxZ}6t99LH^Mz`yg=iC2Joc`zn+Fg(S^#mPOMKmsK1+#=ehunTbw%$fLS z?R4&5bva%01wP&7in`^OWsJlW!U5un?%PKNM`OQCm7G@R*NrKDMr2e}Drn{P?pdPx zp23JB9zaTRy>b2`!j|uq+z}3wR<~eBQ$s*(zIB#o*x^OWVrFTBB8Ns&yz1z7^p~f* zp4ZDH)gs$>&vR8?N5i?-&`1IIeX~!Fd|5dLqZIRl-`Tll zSNT-k&ZcwXYKTn7mTIR}wnhyShre6j;gX8}Ltm~-yqr!fDEXpx~>iV?aVXW@F%-qoXQ7KQ#XKO@z#UAEPc& zg`I;}wV>)J*=L>55ciTDEDxzgKH`f%|auh+G3ix15C?{sc8t&#AO-8>Ldy{ei zRnI&3iv)ULXTU~3;C>h@HxMigLUi2d1Y*;`UicLA7Da9!;$$V0V`3!l;2N*A_KX!NJ&^@X)ML z7r);QMjnr*)t+bm_y-PZP3Ip(Lfm$e!4M#FudufmxaLxT* zjR2y@uPVSby^E0X5_EB-7WhsIx!%W8yLwg&B*YX1zvuF(Xk=t$wtHP-0z9d`NVVrA zGLZ+WO|Lx^K*UHoz7RL(|LS(K+LQ^-_f2S<>zM%>CIPQGiA~`b+F9R&gHHnff4LJy zujte5!plZz9OJjlXST`T%Tx+25U0`VusIk{#0NBZHDr2o03W2o>ylEZ&TvGJh*sc^ zU*J|X{8fE4@}>c(WC1zmEm9Z3iR-@uWS~_$uq0CchFR~ahvyAtfK_`3_iuz-n}$0@ zM}{Kr)T>9E1xYgrO7Gg6r84l{HAl)(O6QU!ck_l@^()qhg_de%Y*aS*R-3HQ6wwcn z@hQ_UQ?2vO{OlkhncLQWJw7?hb6Pjhen3%OKDz%p4HB;W6!SkWK&Q12SUwf{$gHSi zIH}IGc8(-Ll1Bd+@$}ccG7n9VZOHvp?Olq-G4Zs1-WnN=&vETk zfvBEo9vD_DD5HeYS1QH*WiC@g(}d&(l&zQqs^M%=bGB76;SduCcDEx=l2n)4pJvzN zf`9EF^>VqndnDv#7@@VtNfA2b+9C4mjk;#9{t)>c1n*JbruDrXHBIYqvtZ>bv9_j3 z7Nc9%F`cA$h)OG|^caJ~@r(->9bEu!pyN9J-T)japkT0Kz6cgiE&GyK1%v#%i5~KF`7g@&_f$T2?!K`W(d&ggac#6yF9Ve;~1Y9f4tIc zV6d%yRI$kB)dfeAou7RiP~6Rlyb%LGOj-B|;DQJ8tq~#A8JiQL_V{fyUH?WcAy#7N zsix?R7cJT~0(o7{OMsZ8)o~TH@PsJ%17LFDlabL)aegZ=2MiGCY_l^)kg{MmBrUvw z2<>PPHrll}X-KW0Ys_{EtKxDESLs0-AsJW>#`nd>O zfmc>?GKS!(YM~L~)buIAztgR;>>{3NHfDBi;oM>(Ue55Jepml+YNsYT|cOWo>);P zh*}$$#kE?zoZsgVJ&|;M@Ya4=&xQb2OEC|3!57owf|X){V3eDqHzc8WUI(3!iF?$* zoP}dEsZumUB~Bt)U+ym`X&_ymBB}&mE82}{NWHUdskpSCF+LHe5_s7vDWj$ONfV|z zdZ{s^yPT_om~d?lJA?N;RW0~ijvQiLLD!gUh&xS(t5cM&=*83u0Gvp$;I+_Nw85df zCxI9i7V7)Y)$5!W7njbKjRn)1#oSE(JMZUne07YRCnjZ;xp^CEemZAWcbREW_-!GE zWYWix3W_*|MyTvTcHLy;<()6~qy>V~-N6sxw%s%MdVC?`#ahy(D9K@5cy*2Issr8! zTLNSWWuT%Tc0Y~n*gL;`)h}%acsI(4CKk44q-@8`))8(x^;c)NMD8$uV8KH0PL+al zr@w#ZdR>E0R(tc{5=p-ukpKtAu**A7Ad~Y1hG_l_p4^ea<+#(tU#ba3d)i# zUuHCQDahP)nX-Ut-`vJ1+e(>Nh#5W<6aka@W7-d0lt~N!AOueuw9_M96k8J%Vr|qe zrf1Q(v~RkIIp(7JfRMff2#012_$D}q{!9fgXw8GV;lRv_mESG)4AJKd?2pdR%YPmL z=>v*0!AqUeFEmb~I@fjcsQWX^z{LjK^KMPRXc}!1?M6Y6;2!4j1t!s?N-}J%CnOvl zm^smbb8K$sTJ@{$=I#zl#_Y=JvK^q^;z)HjqxwCEAep?1#)MpJymo_JO;(aS>#o&{ z4grcKljUpyo(zUwb_OAg^$sA!0#v&|P}?w3`KIZ{xFEowJf!Z}{01&4V`BIGD+_H) z*#4XkQI*O)0hbfp7$HaIA131a4-i~=FHlp9EZU`W&!B@i+dn0>gWkWbL#9$(0cM0_ z|E4v>b+Ni2#yxDRi%5|HU|d~pnsEY>KcA_jTYUvv3DJj`T;hc)9Dct3(N|v;XKc)6c z{bQ=Jn>Y5DHXW(~#RjS|8bl0*edMf=!Te+843(0h{Own`R977L%!N%7#{y9p($9pv zB(Fb>tnEi$MK;ZV>M|hj$ILN4euc})z|iyD+XL3ZulWg3#Bwb-7>?9(@0$vwa%3gC zyw!adnO~ynni+$F&Fs2q4bNC%!fHnV7TU?Cj7i4DLc9__9lK>*3z%QPGw&CWs90ft z?o4I7Kr5x?w!3w_`E?rpd&Ja@==8~`8f6AnO zhZ64tW(JFafcKS_@+Vib5iwNfaQNd>93H&X+}f5JgRYD@zk?>AdydT&^gyJ+0cgG! zrp|@B46_2?xy$scVHv+(|FN(3s~2W<7jW=mJ69xPhe%NcfyPTU`JIlAk3SSH+F7`k zQ!?PdPwv<7mv6$1mB}^@tgN5_!o#U9@Rrrv>r3~;l7XddD`xD-|LMpOWC1sw(1G2n0eA*nk=*R~(WxQ(I+RRGwSB;%se(e)fF4A7an?j`v{MKLd@+ocUG>-|jYB6OvHU&zPbkX9c z)$4UC8I^u>W6+l_z*8?Fb+?sfQA<&U$t(=+^xHSr@6?WU!qY)VAbVmVH(t0+3=eg?~%G3=# z|HrrFW=J(`xl#oSF&XWm>=))s`8FP>`?` z4?7jTIWi_R8_R1)VNx1elh~qW$csIkT?c#djdDWIB=%N6ph6HWwF zan||X5l*i=eBLLGW9*|B!&qX-%}M!xy?!9j&j#R4Kb`TU$eBg!OCO4d{dFQ9!?)+? zh^Wk5FpDcPt_R}PMAm)Jd)|Lt>)qa1_C^f%rz#+yAGdjgrKUMdlXF^-`$#&~04+9- z!_xMUbkxQ0FPx&H`q|Ew%2HPd*xYF|F?G|3s*DIELBLoejj@lav|+)BNp(TbFs?j0 zp`+$HH{iR{W6h@&8#_Ha8{y$i)+zgtt&RRTDa{hNk?*Fr5{0|?q`t@(m#9`)s_!Bi z`)OhQgjgZF0f>=_*$cWsKlbgGpyf?PmVD`a2VhLcFM<&UPl|7Yt?~h|V zK0dvxC17fHoQRKbs?9a}R3;YF-`(t{2UqqJdNPC>% zJcP7BfC)EhliSae-+kc>7Wk{}$vscJKa>RzD`dK;y!L?ERiqhbaV5Miz9H~VG(#xl z^KZ|~v-BJrBe@tv{Sk2?bsmR`G~3!E)w{6DN``-DtFb)!-?Wrj4MrUe%`5ssY?vGD zeZ_>9?O}(JBftD2`1(_swf_VJ(Hj!w=47((83^7J_Hq!iwX>nkM_SHo93>CmU;0Iz z3aD&4)B+<`|IlXAjw$%_AX8n1qlzE6VQD|+O5v@4ot{?^#J6y^!Q_D$1Ynx!nORqx zb6&wIH{==u^Sk_>n$)7;E9`9s$i=i?<7AYLy9 z9Rq+eJ^bw}wX184ga!{-egn7)xtjo+p`v9fq{r-iW3mN%9j7!0rup8dsxuZd0&A~&nz(H zM52)$Or|rH_1I<8YTB2atae2L8M`ik=+SYrTg%uQ$Oq3A3(RK=xJ1eoaC_euirf(+ z-(>q;Xq7Z7mtndc&i4S(j_Fi#sBXaF0-`^_z=SkkLrd3j-upDKuTiPF((Xb90f@vP zbq}^XL6!SeD2ly(EgAC1poT}lqQUuazKFBP3!LYvm|67t8n9GvG6$^Q=JnkG02Cl! ze$CJSw&)OH`3pv*A3(RgfXebUE8oo7Gzic5-WDC?J8?73-Q?y5tP(KZBPWN4rR9yK z54Y3P286_N1>O|xNe(j9-5D*j3d?L2vE|nBy9VUM9_jTNfQZS}R)3)(si8x9$|HAR zdHC)YBYZVpQe)JWvAU`U{6mNPCFXLS36%;c4xo~lg>m6Ff7o%8H^m{NgvJr{dB=O$|IO{JGUCv1O?d^b?FWB%Iw-7 zKZZ<9*dF|ZptX0A?%FW(`O7;RaWv*NHhn69o0+lN?#=ZbWbIfva|QZPYhiaQk+AuO zzNje1g~V{%Vo;IjXl>U!@H`06&`ZN+%|o@v*xMb`?8;QD)7iPU2KkfpF&LCAY!gZV z?f+Vib-Rx*?lCv{l7?IEK6o$kK)a1J-fFn9>Ck2A+A;npssP$m3-F z4I^9j>WawvYnBn^gfJHpOR-{j*&i8N>jQjzLbIQ=x zNAz`rKDVOT2N$$T^a6EJ6q)6HNJrA zV=AIe|LK#p0%xckWf-DVJ9AuJJm8TdGS}^uUHO2TTmw^;t}ecg z8^IGXDNbfyIQum*%`SX6Ax~tEw4fM>-Dm2 z%Wn}JC%I2tOEr2!+u0I8B;aa~FCSq4V`gri@}+zx;s*+`uvb!exHkY=&U^}e2!HT< z{IY%SwAvjG1dT=(74bCxCTU)Zi;HV$Ku?LJRsc@frVV ze(+kTxP`vH{_gX`H2@XBzIwjqad2^|bZszvmb13DCLquo18&ycp7KSzruO#nrP|*s zt)Gc>>W%*lhI{H68t(r)`P{q!$YxUc6ZHB5M3j`2gzrw8EJuO0h*Do*8IOg91x{3QYkkelmS!MvNczoU>~kaoe5FFURM$^gx$KE(1=@02J)v&E z`UwR%sXz?|D(Qfr&ea`VIW45F*mu%%5kPayZ7_3T1T5Bp*jaaXkwwLHAbHm1?@cA= zDxp5tFtE)fD8Q#nFh>sw4}U1MA5R~U44YMG(f>34gG%`2*Uut*$u=%3Kno1$=v;mO z@jCTB;Eo`FMYDRYa+?27|Eq@TvfXPTz)JsZB|=+Fy2D-;jty79=S^Z$luIGw^_UkY zL@Z$R}AYBE|7#G%=GST!=@HMSa%W0u1t=e&~yE@WrJEs8=&GKj#!c#ZY&fG zP>LT3|D6;5DUrLoLYpfvyZRE@$#p+nq!~_=iJ?QWO;|Q2|dp%OoVbcin91OT@e%^J^goa|b^paUtX-*a@Ozku>7=u~sjl-r%zmEO! zEutKdSctEq!`f9dN;Umsd&g6yL%BI4speS?RYRjOYNGA^P7Xiu)@nR&1>O;JlFI&u z2h&u*GgNz&TZJNEp#9leA)Oj03}FP?xTlTu6gs^kWMa@* zq3mL|XfMham1O$ihLTKN8=MFj;d#B>7F-|XIPJJL*0t1?ez-k2?{Uwb=lB~Vm<}qn zRqQdQoBE#OSr7ORvIyp}#W0}OmViu>z8%FJ^_6`Yh5IX?{RuFR%atP)m^FF*W3u1~ zS5&(Yqi9Gm12z7uN{G1u*vN9Dm@i907*G@IWu%8r0#FR?6jZ&@q$|s!9gYdI-xLqp zNWX;rXK%j|@YaVM=bVd!T`=j8jYFsgG5JsQZE`=*X+nrU{92c`)z=jS z6^qc5Q26H|E7|!K`rr4fp}AU4h`&J;Je}Z0%`mg&-Xm0q3KJevtSl1}BfwbG0Rc~k z|0vz_l_fsV>2}M44hB`xB(cU2ZHXl()g{q6HS^LTjw`*;RrfzkXdX`Ks!?NSxs}rJ zk;ZwH0-1Y>>6qQ)U0e@kXQBUw5#)Pda9+u*)uG&L?pMadWa(_Vcm#q$*>I%o1$H#w z8k>nrrzOn|3n$Z3tBSB=Q~C-fAgeS*WMIHQWUeS^6ssU|!>NC_!l7A14`h%Fj+veput7`VIVb^dUf7)bn$25jzF zHYi><6p6N%J9a>6Sca|00POhQ^MMFD3%wT>gkLX4{a{*{TbKuFOtRVpn{5OD6=l6viK2nXNV4Wobi@W71xA?$*_R*6KqL#)G*JgSZa#HiWJ zN7Ux{?hjI<*A#(g;+HJjq(GA}RlNx?Ej|JFASWNt2Jc&{{WyN1^Q?ad+U=f|%y}s8 z`y>4l7ZlnSjIfK1SO;hP?qfL;jj-8B6Oj zB`sKlLlh0b^*K`r^WMp2LI)c{Qsg#-KE!JvEyE6ndeGrlr`>bbQ&vo$I+E-ZaRb;dLpKm4_qFtTQfdz$fCNg1MwODRe2C{-xAan^8<^^P6b0Lb5TCcU@CP_A*k#QKtQ)V!JRt z7z8_`_#P)ql6McvPc}J}QPb?VLw)r5k%^L#%ex!auaKN5f*Q1ma7ax8`2H;4zp(j7 z^Mrl?Xl-0vTtgaSJ}H2cOp)e&jD~=J!%0^N+Eow*Hk)84b zQl~Pz{?$uH)M@l+TlkrGE9;(Ni**^hw3aJ#nwF8TMe;FsK@{n;P5IOBcu=IB3CJz& zlVEL?*~DDAVPFo-lZ>l*7!R<`Nxi?Vh%684JLf|CgGwj7`QknM6)U(kItFSO2zpnNxy%8&uL&94jaZGaXKpdAJ#r z!d;|&j1*LD!>5sJ8$5S9K++$;;>DKquTT5v+johoHKi7PhZ zDmB7Ajf(E2M~%m{I+Bmg4qxP&=#`k1uUZbU0U5|>%BW+^1y6DHz0xk^g%z}Z(qAjqr9RTnN|A%VULE$F3-GeJsjvFJ#t{0=#{WZQa|;j-&Zq1t zcK*chPsp92-wV$$FG)U=?1QO{UL%V+vy@u zu*;Nv;n#M9=OVyzkg0hy)^#KJ%SQ;sjg2;QJn8u^UE(O>xF_NUh2R^gKOfR7x(5-R z^XZBP@lKJFO*{qQvC-ua?L+fErO?{oq<85NpBY_4LNmRJMeXXGsh#8Kp2#?d9fj=V z8|g~OK_%jeM9ZCTU0G={YQ=Hr+II$?_iiJS)0YkF_YHcKuMF*;|H*cRFwuPTed_}M znF4!*6+QFr9z~gEU!EX;a@w+I?7CH0-fz;|NWdhLhNOSf?rip8Nr7ab=`5uFaSDGU z+E+6Qt`php>bk#WIx2nO{o~t3$?$h3_Uc^4o@Fy!4;}DjIg?phVMSqHCcfz;#aY(B ze9`P=y)_KnSy!mx0Bq(G21OS2@qp;T3z1xn6!+38=vLi5xF(hPRG2r70tV5-$YucX zb)pwFB!PMhXuCwSuMz%UeD%k#ff*Zwr6pO`ip1@zYVYEPA)>`A<9&VA!`4@9ryDeu z4=r`TH?ltH0u$F4n(+}8jw!WWe1ctIt`A~)r{@fN9_BPGDMTLb_uOS7ICMv_1Xss(|1XWj!&HE0boq$N#thNhn?}VAh}E?J`vT znSocHmieTKH-$#%{Jv1keBK~+2RA1V9mQ~L#(BXwq+iMAOr^uoey2>VUM3-)Buw21 zss4GMBPmmEI+|QtOq2SpbZzq3-d3I4gHzAK6VIRtAvkZE)@^G8q!A3yJGS}S6U62m zlLD)SB(d*w1g9|dkj@@R5F=}0$jvl48cw-0aF^c6bml$FW_%L#jL*G>M{HHZH#TU7 zc>9rV;4^t>?NOt^76@{HH`%Klu&B7Etg0iS5H$^R99v$t5 z7)$Q#&oW4q6kJU0FFTu#ctZnCzs0haY1$d~^E}W&WCxO|p1u z$Aj#$pbtmtF3Rozb68TbqCu)uaRpM{@h`}mG$}V|#pw}077@30srh4Y3o#nvYoh6S zUfhxfAq*^#!;Z^qULSLx-eT2XNGN2`k6|g;tjc;TB;N)l9kX0wU7?)#6E=GgNbfyq z8G4lbOiVYg=S+BgR#^J7>G{m9ZoALd<)Xk{j%OR@d69^iu4}Lo)%dQZXh0a zUwqZRZTGCT?)dUj7kC=W_Ei5=tf$Ytf7Ur%A}FKs2- z*q639HpE+rV8%MTiPb@c@K02w<1+Q%l`tlA1j4J49vbOsl<-JusrBtss3~HKlkn3t z5*dyt^zDo3r-}MgyZS88o0ig-KYyIb0Hss@VdrUUJ5IWuj4h>|GdA>|-q`QNCcy&& zHwuvoS73gf>(suH%O;=0?{t9+;Y{&%bOoT1uOc^-55sC7X0*mb?>ptWC)8f@USiNU z=1_{LXncOUcaE`i&KbE-TXFu(!S=fHkux5DSS0!V{wixmeMcghDCnJv$?7gVpAGhF z4BW%Aq5r416QU$&h4UF|j_)rU1A?JFWxv61Eukq%#tDHb@HFZAuC~#SIFnJwmO{ zpHFa4nQusICI+7-4d-+1c|uXiYj~)kSx-VP9vVuDCGq+L3gaw;X1eGw6J@>d+8?~F z^87{;<`oz)S^o%63gp7y6zC#yo^x#Oq%#M{U_+B1hla+?kg*B-of4Up9|-dt3wZy5 zV#^m(N?GkLK1|vy>5kOSiI=kPcngMGZSsdxWK`|Fr7fS$M@b{s)!PY7gl{Iz6e>Av)mTbhetoh|L4AgZNZ5xfz#bXE zgmOjwvjM-OT-ER2HMafRWn0fzB)S#>(R*?8_OlgZ{m5P^I&wV;tm&r%-dVj#iK%c@ zI;WEGVR1?XM}hB=ZgpwHU(H#Am{pbas``|kpCF?Hm$G9}he>KvyG&o5Q19MC4)ceK zpYD4_qKcijs&U#ilsuLtUO3?%287Q4gBtC`qb;Ukp>3GSdOrK1OWp^rsX5)}7wq;y z6NE6+ML?sU8AWiBG~*3#Vp+^nLKq&A=!XTj8pCrQiz_nT>YrJWv1bqeaAZko&Xi9@ z-Hs}yO2LhnX(t!0TQpB|KiTX}e@Y}S)@R7I$0p4y{}8UbvD-7^Ep@=m!e*m1gBcP& zN;&i)JMe8WvC%&db#ZOIPJ>B~nmO6ohHYL{Qb;CjxGM?yWV0i0AXxMQH&~A9hp6mt z#=+$YX=F;tn1(uK`fSdXR67HR0QH3J=_8U&gA0O9I?cSI3M4u@p(5 zQ251xdAUpcbf;GI=f1!00JGWLK=#t&7JMk8jpP~;poPSHI>yap$~JL8MmC*9^m z#?bP8QkeKg**7V}q!84kE4m-MTat2wVT3f2HB2m>|4ekl=>eU70J%9yNxCe8Ld_n; zcNux)Qe=c-zy=RM9f2NqfALKcebt}?wqh8E^l8Nch;_oVX4!V$glGlRA=hd=yfU2s z0I5e)b)#q)=E0Ldm5%wu4()WqSfkHwtHe0t=FrgZxbR9L$_tVJbTNgLFdz=CYiPaMsitna!kX^J&E20TX(N4$RtzYjqbIQ zN5GL7n#o^7J~Szm0siJGU0RuI83}-)>~j_Y_k`Ga6Yi)-3)7}ak~_JP3v_0bBvNqk z-6?g{I>%@SxgjevTgwtX4e;8X0-t{4+lM4}f;y(+Pa!|1H4`wn{Z@Gk*lziK%qR*J zG{I9;MW(bgcmj@2mk$7LE|4kQ-Kw3UNL-}!!%CXtq_Uy$c?T^}o_I{NdXdv5S)>__ z0w&$A?B=F^(e4~F;QTerr+{u!a#y-=p91<;U&Q^-6F$(n73mHMMH*?O8|m&6_%7a=@3%9KBR5x_$FbIg=6T*lv0yYO z*&@mf%D$@qsr6Au;wG zCZ8vg#bs6gqBxvu(M;;{->l**i#amBMdtqLflg$+VVR zQg51H8&SOe@A@h|2M#~_;jO#y;XlM^ME3xFqnB@Ho!(fB98O8^B~B&LM;6N_N@U4s zzy8|Ld+rzW=O%Zwu_F0-rX*evpdLk!rd?Hje&%4%wf70u7suXVmJR4F_KR&lbN%jj z$aaeKv^RRv4Z0!2Me(@>oge=zrRMZ7_dFjy=ORR}onw|~Sm!eby(5X2m}@@503c|U zZou&OMGpJ|MutEhHdacQ{K0&C7Qh{%rCGPjI~bA;DGW_nf4Dka>H~3eZEc;u>!D5j z=luj>3N#==57O$Cm)^19pHlbn$-jQOyuAEb3sR!*y8%reHXqnL6MDRX(U&v>RC+t( zyR;OHGk>X8b$NLS8ekGosre$?qNn`9WFE25@4*kO-{GL{<21Ac&>4`&@H?$xsaxv=K6FW-8fvc^9x1)5-Xz zRZu#$2#)i}A9nr5a}BZ{&wt)<9qPW(cOCEXyHQjNd;B-HMWRs5k?m=T`AlORxzIO1 z{;f_3F*S3_UEuwk0Aa&Mb(xGwK_M1wP5<@sx>ilw;yP~W0{{NBxciNx%N}FhWD|sl zz@)nBO(-HdEe6BiRaBLnwZD5}ID?69=D z_s1h6uM-f8DMEXbmAsvWIa10i-&;293Eg)aD-$yp{1xz88y~`&(2VmVnHz)`x-s{?VZOL zLM>198Eo$8Lr0v;>yp~NoT^hn!g$+pxvN=*H#mZKVSK_Z(c8I?lrr(8G|2;4eWyN| zxDETS)@Q9g+t@(}2%eF5<;+!%kFn>VSuz27*0<-|pe`!Q(BgKE57KwQ%;&PwdXz+8-?S-;>y?!`{u<*!C=arj$2~M3$U5rW$Cy#(UabK3e z;q_eEVJC@)ff{4#&3@;j4Z!PWWm0Aht23qop^?!3{_FD4&El1QP+qxNf72KLA`hNdL1Ck=sy1BRyw{T(EZgVjp z74ba1a9mx5o1SL8$vxhZswetIGu$NTX;eS_P4>MjQTv4-S^tO_<2ctAx9&DO8x=EsSP;%pM!Y z@*({UYYCjZXLXN?hQzchMq{?+J*EWXbOAh}j0VC{s7LNa^<9k+8m- z@TdK!0##z;`#2PveZZC=7vDNsESM{c$Xrmf^ktqnA26e)l7Q2detC2G)^K%Xm_w(j z9}%1C7pz+i`DTD#st=~I)*nllE94TA8fxW#zUQ^hW@^>a71=o#7^h>}PJ9{5p|#v1 zs=_KU^|iK@ua7tPULg3zyTwZ0G5qQ2vc(FPq9Oqs&`|DlAvozb^U>2_B;oM!i7MIG zVkd}K?B$?ts{44a?0-A01poGz>L{||{hnbGItuGNlXyAu?SM*WU&R9WosK9_#Q0F^ z^ssIgf@8|ed>0l~>xqo?kJ*Cu+VOmv1T;}2Vp;qvdglDXy|#}?mURq^zd-++&+&oV zM~O=eibL+w5VQpu%>^Vv8gBW|Fg%PqORBBJNHLW5_?WB&EfG6FGH$)Y4XKS=Sr}I zN`ZCs^n1}hmM`PDdA=Yr#Q=hE6n=$wY<8Yhq`)8RP?n+x`juaeXc5fn{IIjGp8Y8z zZN|$_AMZx0ta?UjPG0@gQM6T^prWIo<7V8z<+ee)O5GVSZ}zbuG(JNnqAI8Dr+1wd zkAN?wGWsBH#o@ZQj?DB4ac;Eyni4nM9N6bxQ1jj?%GeqP`&AT)Q7#s9u=w zG|bZIKNYc}#yG75#G)E;n3AIK$w^4h^*c6D<4qRl8OU78goN>_s#XiLkBVVM&9(MPGO z7sjs5U+%a0TrxTlpT|Gl#LKD_;6{$S7d170?o7z>efR`I@u~(aAoJC~v@`?)n z>-WgNUsy^^V4qU3yGQp>?(gr16eRz%)P)2 zm>6DvowHr1Im@%7%SX4-5AFc4H|NLUbGex#;+i;ixuS;a=vve@l<*=xaoL|Y-F(K7 z+S=M|b1TOE{gkkM8yAX#WYgW;hFX0o845e;Z*92#WLB<}BD8~I} zE`QIx!2UnF-0rixyDKIyR|A!`dB>5#{KuN*gYO<#5nFc(qeYN}H86g@Tp|@w7%-fX z(;`1%=ey2VFI8I_vn3!gcQeiq7dCQr{p8%DXlo*~kQOQWg)L>sj3a}1xc|%RJ}ARU zx%m2vFsMTPKoIuLp-@P`k0FzW{DimF*ixTnjok2UI80rncrx+DvWpjTu0GNsuqXAa zX_!bjH2x=_bc&vPyml)*-F=Wlyx|g0ycTMhv)wx^Xj(_`xYzQfUtU6mLID-zoe^K7 z>NFr5nxBNYo~2fN^3^=qnbY7Ja{0IVQluEW*Z1(kz46em|4_wtcl45DQI`_=42qgN zCW~FCIa<>U(O9u$Z|@isdDwb$z!+QOrx2-e@6M@NcCy~n1m#4JIbPd@cL&Lt29ky-_xQ=5wYyQdrJvli%sYr?}xoOq!Zv%{u zj`ZWmM5I+z5*y@0)k`Jo=AJcN;+3KenlyRC6j*?8{alQs$n)3^pxJ%58WwEJ$i^5(j+pCV+yY&nu8}P@+tbQXfv(4xNM3#R~8FlENxBPsc*b3&kqyuou&-g z_?}mF$dz-iJS|^C%gUWV1n^5tSwVj^0r{k}Fli+|gWoUdh06Muwfo5dI(O0iN%)eexkC%=n!JF-}d* z`1)R|7pXvPJWGkemwFtTwuceKy;#~bX8b^QY;}ICaXx!vVBAD1sgVx6tm*Ea{xwU9 z^Tx@8kt2!^L9Vx5Iasel6c0%h;{a@??vS_4OyO6+m1fhM(Jx$uB{McR%lwF3X_I6@^?-ZS)5h90dnOA{wgsn>Y?SpXx zavc{X7Ns+LpeTM;X7~^l8|zl?rk*R$hmxMe>U?;|Tb#qJzVY#VEpwKEVcaQ(J4~lR zUZo}ikMhIl+<`Px1l7!BzAAII%eFGgEqqnyX;|`8J-i*47OUab%_$6I;0+5jD-wq{ zJvU-`t+@5CSIWuqVX@n{^aVTnhg4B|JU=gW9E)6#xQ)!@70&#~NNnoI0e+-cy05yK zbwrKWIM$6IrvAt6Pb_t;KJ5KeH)o%^zb^cQmjY@Ke!5|S%Yx-)Qs7~_9gp|#w)RQ| zxLi|?()k1%gDv3&ORnl^x!B&*&w6620~j zP&fiOptgsrh0@~EW03yk{Qs>}_~ti1!bei9$f)>9t3K)O&p(YmVi;%HzE6W1xV9dY zm6`c|#EK2aATouQDkh>w)E1F=_g+@$OOD-4O>LxVn%>8^y;Z?lbjh)a6Gb|)pIW}l zRuDL?PgxmwpGt*=dC%1}kx8bSH%C#TQbw~!ipOKo*DySMEw@2%KfGgcS3WZBTV=71 zWi-57+*X^$lEN?WhU(cEwFMk5$UwE1RttVnA$aBaKCx|0+xaqxNm$a%9R04d+t%C~ z8lvA+GpJCn;ub~0-_o3|^NY#YeBG#MyY}Nqj`1==eWV(jw^Vg4^jxH`8AII&M&5;0 z7;%CvR0AWU>M=;$KAQN(4LLfbN+0IWj7#Bqc7FV>cJO8TJZk0D2qdZlBiRoRJp!Q-_iy@$KJFnK>n`2AjRH`#{9O!hp=vUGZr-mox$A?M9K% z@jHOvqzUy6g!bV@OZ`Y1-Ht5!Bt1z0w0d>f0=I0sO?GDX?r}xnzO6^NrGHvkluaNZ zoNi%i8uBI2J2N+z)PA{j;P-FlP;pW##1`MUf&z-ql}gw>*kvDCf(F{CLM3i0=G-qkhle!%t%?dDRVgsdWrtd=*X$TbH}dW$*cV%Tu30ff{;|#J zu^#?dT>f}1v|BT#8C!1@YvylEx-wdAaZC!LVZW%To`v@ra|DI-lu?wRVLo_s!#77h zG`j=oizlJW8{!la`aLm$V>EyO=i=fLN9bxK0`ByGo%uh1t}I9?)?;Lg-EB>R@leF%Dp(M|Q+Q)$zUsKMt&88?2KP*C;x!03HI? zhY*gLy|sutdOB&?9)m6CVXSMhKaKP8UgU`-JdU)$qdG4*JpQbIuC6>~D20j0c1ps2 zDR*;fmor=70l8?SC}k!+vfkX-DZ`vox*+@XEwg;HY?C!_JA66!Vs6L4O}D%7_3ZYu zt)r^rjPZ+d-q!l2cA6$LYV;(;_-4J%aQk9c1`2H+S_*yLc*NI#tDq550QaJ!x;$lO zmZK#)d{n6S?_bhEn-AvZ>1@)~9R_QOlXQHyI~&NGrw`jtu|L;deM?*&S;qliuWbl2 zwbCScu^hEH^ZX@e8k^>h@ysgn7YyR9lL86V-{)DphTB)`LINkH4)05=%9DmR`MhtC z`;>|4l7~1t+q$hwf-dn`m}A*Y+YQY2Z}|E!$&6i1LoRhvL#+{Q(8P&+OJ^G_c+2)* zZ)v9Ia28NYqnH$F?2c~G#XT1snX1|jJddn6sb*XJUSj6(J%4xnZfAHv$GQ#*3n??x z{hQ9dn=Mr*QQ2qqRaE;TtEO&d_0T>6yRPHYNVs-6j*`@LWz10}EfIw8<>Fs6J$3qS*xxm`-u+vjO z*AW;Pr;_3K{)dR9 z9OG>Btw`U_EWOC%sY?H*epN7_`WMm{z7DgJUM;1|TL+$|6nTlZ%jpI1?4~(XW}7oR z2*`2FKnSu5)*z6{eo=x4HjLeyb!Z)EIJqA$508F)Jm;D``4SMn;l0pfLA-=GDfQ-Q z7wbMgSDAUvy{N2_F(w`h-_k@X6c>|Zbt2TO@I-{SlufuJlr07-_ZL}^|3@PUe_6=i#SW%n}^tk%5ydjq)G322DJed|mK{u9}Vf@sL~UD(Zp^7Wgt zCrV4QW{ufO$(D#Rs0yny#57pi=x=KiQ6=Ts*(MPC#HJ83QP#iGXc?8IM_XM$R)uDiSW(5`A>*lgM;3g>h6wFn zB>9R$g4ys_T6@jV=PEaIjoDdzb8f4nlBM-i8E3JQOO7*Gdp>LRTAzy0h&H$@z zB~)O*yhSdx(wa7dE-?RfQ*n=0k0AZn0D07w z-^!w8M8^jwfssyB3f}dA*Fu9*JtgRKq+=!?%_KStJ zgx&?~K#|EMLujTfpJcrt5ST2S3(rW$ji5v)v2 zlGETw+fofr!!aNvK#1Eoobv|RhOL>k2V9R~fwJNfcJiIxI>906#;44lR!o`}dV9t9 zRb8b_1QgX1hw%yUWKj09y{lBV-| zcCK%Bc6JrWu`M^6Plw8w${lRUi^&b?$t86?RuZ`Om(UPS0>m1lZJjVaHDKB7qhai4 z-ZY57>Y1uZNl1)+eT7Jhq^K|0!NnLrZPpm1z7y5sQ6_#=G88ZMd0Qg4uG87Mr}m}b*o*Yx;Q^dPmc92YilK|ecwbptZ@AWr$`>mq#{dhnbN}^SvfjCV z_$p>spU2k;DVI)-F@MAVctmvqi=`Sml=}t3N#_G=lV#!0THsw2%rrG;Y6wMJDL>eZ zO%q_^U};j=1-!=Y?JX@fqcfT0DHhn(K72yN&%vYX^VC-Q$nZkF`5+jPB1bG`NSEgu zOEu{P;Y`CDi+|GMg`ounTyDGA3YY}CDSzluYg8e4Ns{q~s}b+uizAY-8JJOQIH42( zHjR8*&KZQRoHo%Slk4)eTr{)$$FJACRN~B7umSCUNaDZ4T7*`+Xu{zCOc+#kRtMWy zXm4$qm(I&;Jf)3_yCI0;1@%M~7W#o@HTE4i@u(r9*Sn&ipnlg+i{W{*#H^6+tl z>#%)V+RFFctS0-@oeWMz`@CWUhkPNagyFNvyoUo)iykw`@;8pnV|NOJ8f@5w-kG?0%=H7WnJl5+!haTa`4g?VO zeZ47eNT$8}(uGU8pGw`3=Y{lkBECgV72hI^**E_2_l214_)FY*^ljlYcLh<%t5>8A zN++iqwn(y*C7}9-)O6RFgU4u{ax9LG7>6}_;}O0_YRWWnJ-Dsl!_;fCI@!WKAoeDp zWbwM*Bi8z2?sUhWG|Y+sui7n;1%bukZ1_*~oapz8CDq`lM28^!rQB+?D~C-;2 z1Sc=y$>}YbRBM`qQuG>yDk@1?jJ34Bl2eCfl6L;})Y(OI-mgUv7(lUv>zK3coaRA$ zhoDKHX@&obAX_uwNB*ls<@aQft_w0oh?4Lz5#xvK^}&1YlcH}**I2OOT`2>p9p!ls zWiJKO-@16Xhw1T%GDs2kO<8mEeB-wGRNJD?`<-q@=3zGgF~-yJt>L(VGNyO@wZY91 z`d?l9#paQDoeVvm@Seihf^l1Q)^ywtOt%FVbw3IP?nqo~bMWvZOHyxGrh{tJVnVS3 zu`5-69xM`{N2Aj3?uc|X+osbc1szeJ*(d#(dgmaSCX!Y=SYdFK@(nKk z*nNygpj_ek;WcxwI5E*6Q&~#QfYZ{y5%Zw!_CCH;w02B;jFod|j{28XsXPih{`d9C zoepqi=-}Q#varwhF2qq;EUt zjJu(<-dwDDjG(#t9{b^(esuM72jHvGz>&JdBA;(MYSVgXfSSLNNWLK-W!cTfw)B?A?yITrcs5LFa zjWutv4lUheB-tLa|D(XmI)dK6IBJr-^Vo}Z{avJp9yU_66zA)4^cY?da_#pN+(oeK zbNuk*q4)AQIBr)G)v`toUA%Rs%T$<$lNi6;sfCUr(rn^CWqJ5bSkbJMQAM*w3>mKg z)zh`9MChWctbjG`yzs_5`dIqo%n+YdDr!dHPCa+c9{Jr&@#w?2xQrxTtZjnT~3$%!b{=aNJuA!AxP z>03=w^{=C*=zjh8?v<2IvGv61()ob$$lW_#8<|Hz^v#iLky&D&&VJ~&Ly7M0>>`;v zs;digxtMlfI3-6VMXF+4pvzd2tT1+5bqQ9NLK8)ZEQ-Wy`ENc~Vy;3S8%x<`!?4!K zk4I&+wLrc& zk<*n&YUAYoP^A$>3cVkNb+V7ScaR^1(PwzHsp)Qo2)%^ma>*IHH1A~-5k4Heqf1q) z!l!I!P2i)OhL&50+x+jvn%9*iXcP~}zYWV%9bEL|sNRGo75)nIs(NK5Xz*P`W%bei zJ7&;zZxR_>QiupkXfZ)cVV@%HdG4s+YAhW=|7Z3#ZRp)Sg!wof*)u@y0^6}Fi;|7r zI8ihClDc({5*eQI5TzNoo6t@tpSQd`9NpTUKR+|BbLuQQtH~$nc_JAzzeFDY?AhYdm1H_BKpjn@)L)2} z&n*x$a4+0tU0n%XqF%~bxHyQn`ahpHuvwIzPc8PmeNf@4M;O=|px|>c!42N5m`L z=6xrB2~Fl3jIT$^WT)%dd7Ok(hb*JGLQV!0<(~&jbb*x;C#B(TlGbPwgxN~40W*%j z?*?{m=$p2+tgM2`X~*>fi)R8F?P?>Lnp3*yx~1yhz0i~kfwvJygQxQK6=x%)@|Cfx z!IzNvHcv>MmTQtom+Kj{D>&J9b(aMeTMzNan}Olq&}g~6|3aL2X#%Bef)h|eByw3Gjmaj$6=92i zPcpS3_InXsompOsc6oWyUn;Y^OO{XCo85VW&->*IyCq&`;hQ?MedL$%#Klz~Q_3_Z z|6N_4Te;_JSK-_U=l16(6S*Z>h+@$pg;Fcyxh7;?B28PDM`BxIkj?jXwEF;#;>VEb zS4%YP&8F7Zb1BNJ(}d;2QSaPaVL4W$*dnA57zTTsp?-49*XGb)ZEF&7@*rhhi0?|2wb#Jrc z9Jg&o@~i}Fv#uHymRq{a7lfyK)p(x~kiEPeKlcI6bitu>sb*-xPnaO!eUf;=v&^#j zK8%5%>4&17l-=b?EI4SLayR=gtW=^|AlBz|C<@O?MpW?Lhc+ zWXM4Mtel*Nc04^Cuk4rBTe0u@w(fW`_RO=t*NS+2>1jJ~r)*}2E7L=(O$f^oV!h6j z7|3>4Z)4`+o{!~bkdj3Xd>=)Q`wWW&_?s8-<`x#uI7Fr)rht7Xb~e8L-AT+kk7MDZ z#g<W9_y#vz1!yP%HU5do+`LT%_CRqom-+Jvo z8?+29m}4@S@y273rXwF=IN{<}AY(`y^+3E>o61zxG4h9ZMcis5#5RYsoNhqx;PAP;kJMWB9oP~DD zbcEIS&3z`g#6&v*hGh^3BtNXF&d87j4Y$#flv0T?d+66>ekK1k(j)II)--$GIfpDR zU0iWhW_$+xXiP4=g>&jqmxz@2$8!eT7J_|GiFG8Dk(s(l1|-x9?1|Uh0+FAGuHs8% z4BSTuB4euAOV8JrUEY&!@?Ta>#%FH~^Is$!;WPoc#M3$#NJ{6*H*jF_=`mOOUtSrci#!d)t)dsEnt97i$ z`=|SlMGc=jt3)k-nHo~FHq%8Uk2FDE^wPeAE9bm3lVm1DE>fFL8hsg3@Dmc9H&m;+ z@?KjUdURL~(hK~I)4c&STxl`Pw0rCX<&o^Pl5@24jG2`2Z*^sf3S#9c_t?cfC5;se zb_&f1Xcn{S-waH56_wEZ3JzkS=~;Oqds38y3k=s3?*EVBXB`FA1Ha~0y4Q9WdZtco zJy$5VTpyrYwEw39)gh`w9(S%S?_Di8jjU0V#M5=9jg}UWkq?1RO3q?YaCGwk1g=)| z-3THj5tc%ps=O~XqG5q#vUK~a3mhgXW)=gywW4w3*Qu|vYmAu1ty9X26fxvPQy?!j zWr&xx)-zn_ZbY8$qf?03YwSznax@}q!P?>{X6r`zi!mal+fr-K#x$abpIbYJVhj%b zRRK4ICelO+LuwitGA@}*u5QAqVN6oONQIDl$tDd82_KQqWQVYLa(-i9(6P{h!ELPF zy@MX67_xk#r=`NXl|8@NoosWtMbVm0uO`SdmsZ2goVAubs3qYUKx;rvYH-u9)2+bo z$ODrINZ3tBeBQt+gItk;N1STrWsQ}VWgusEu`5z377(Y>JWDt+O7Os}O;Rmo48%#x zLEfy=2bjTiSimE(u)5?2hR~EGHZ(Zia3|vLTkg~9RWll};d8y~Bl;+u$~(VtM_5Ac zwyAdeRYkYdd8#u;JdXg$%;!W)w#0qYqk9AS#JlZ}cNX6o7{##oB&K4qXb`9Qs5tu( z?2jZVQJLpoiCbj8ock{@Kf|>XBPhVSA#=iF`C5R9rzKL2m~I9;6@MX!vpQHWV4QZ> zk(GP^f2ry}YAmaljw|Q5FZ?*8u}tBw4wipiTyOy`?H4FLNUY&2(Dsv44FFHb&i?*} z&&oY1c&%2{&+9rD;^+X$p9?&nh>cJ5F-Ppv`r-CDzdPmXcj|9zonR9&9u8xfwf*W;DL zV_0Y?qW@WPUNHeO#bU#c9-T#@KD)j%k>J*8sW%^ccLWgf;C;tvYH~c&CGp^YUH!!I zyA^7fok&0LAENz)1>??TySPM(iLs;klG#0sQZ~fIoK^-c*d5YALOT0v8+Q6r?81aV zzkfoD5C&uab>WMcfzHP!+HvKMnpR?rqv(S%?zvocRuS{Fjctt&P9QQRFe$cg?Y@C4_bp8DpM z%~W!}6NzU|GjP{kIgd7#wW3Bpj4iyz%6H4FD>$v z@|}bPR~EaA$95?%nkHjyMgX9gk`D`XM0j5JGX5FE=^@0c*HNy^KUieQSwgF$^e1EFGM76)J;=M^>O2G^-u}E8Z=r>cl zqLF`H@S3{C^*1<;4q4>M?6L$JWilyc*ysD~_?RK$I#Rl4n$(QK6q&L_mR4b@qm8~~ zFItERR*LX>pydwLQ{`$+gjR@B`*n3=eV&!F%xhbF9K3|wGYHDagoEmDkf^vTEnHtV zh#?mTl%LU~#1|fG*!{8Efsp9#;TO917Pb#c%E(v{&yb1AOM$^6z)~TIg^~BGGvkjr zbt}B>h)|D;9C&qhD>O8u5Mtcl-K`md2STLJqUV$(u*Im;<6)^+YZ`2f3QDG+*Ur8I^Ee>XA$ufviF%#URB z8g8ij20=nX!ZZj?#|G#v{+K!^hdEEzg52};^fUwlAxDPaixtqSY|AnrN>xvhr;#s7 zTEMgcp}CL>{I@_b6h5MmMOiG=Q>ib=fFDI)0t^_xM}`Hy$PxkS4WNaY4b9@mus_py zu8;JAkjqO-_m z5^)EFX7_2v_A8!mD)wVy<2W2mv$sFqz?b#X?KkmV?@*zkU)HoWOIqcJq`-k`2d%w* z0=ke6MBOTuXLNBsq-n1e`}z&M@b#Fmx6gSBli5G>{EaepKid!lX3Bv|UxB2WJC|3Kbd^ zb|;+E3*8cOSou0ePsi)|LxQsfhH617EKS7-qwa1DZ~*g&a7!Wh(ISzB;?7m48<23; zGBh`@k;5Y>{{zA15dO4TX2=&BiPvx^5V~xq*POO_Sn8F@^J~Y5%+ULSdgfRYYG6o< z3+eT+-Oh>D(r)&DX?Tl<`4_S~q^3$5+z!XGCaX6zRGH;ETMiDl2Fj%K!*^#&zPb_% zXsMcEn=2#al1RH2)r29b$OTx_QjZPJ+F^x>#789S1Ntv#BM2*3#|iO&38cTVX!%e^ zUSeYS#Ai5L_wu6^90%!_MwPR=UG3#ow_v{H_xQ-yjzc{`>`>Ii&}`L%+1AwHP#pfv zIxq$GmI=#Xs&YP^b}Ju;u36J7)=tg;eigWp+LvhV=os+@)X-vM8Rx+@Tj2M>0a~Zu zWh&P!#+TIl|u?)l(t&9i&BUt~~KXHZ)0(x)854uUJOxR^OcmW~mj zJ&1*DCSSR_A78w@S;O=ftjJI99My)UPbGWxa>j52zzijwB!vxEXHPc{ zmcEArC?ZM^ywCOFrdH?O>tSi!K%>4967VPS;M%b4=QFVRoKywr<-#^iX@%iQ6_Md- zJ6*6^3Y~W2f(L)_-{G~L1F}YY)FZimDZaw-)0w3<8eqjNgt`0(hW>vRU`9bgR<0vq z`-18V0TBtz&o74@8LZ)koi{eqGc)=;l*t8vsdTu|lsx*T*>x9(oJ|_HkG*62{I7-z zyMTavNv$+bR?oSw|G(oWHQaM42was`o0QBPfyD!9_vvC=PAuIF0am^yEI-ez-}E6%Wk5NkXEnA2&X zW#RD=A_TW1j*!j`r|M4r+vBa$=r>oR!*KMSfpi>eFmFYCL;XFxZ0rVZp+%7#ERQn| zA9L(Ba1|?l2mDrJj&Zsb&)GBjU8$kl;`P89%eP+D=^YZ2S747e4FUU)=jHr|%;}A> zaVlaEdfcD+^7YR?NVummX`Q^2V$Fgza~)W|AQWHQ0ZB5dn6rO~$z=allb}E30K(*WzNM7uoO33PT0$)^ z3icfH#(|$5I4s7^UN)Hxs#rbj@<^80xM37vuN@NQ*{TV5XRqTKR`hy}W8lo1zVXcG znSuHHtzqo5DA6YObi+$v7*p6n4DJujyj>_3n(TjF(@gVVPrP36rrgSKQCaix^1nHg z%B=X5E1vvxc96{c_A$aEovJwLMtkVC6u|Vf>E2RGk0?DO=*(NYdRsRSn<_UxoE;Dz zu5CVfW~9RkDQ@l;wm>>g%~G zwq&Xvl5TJLIevIreR^Cr@INJUs3zt{E)lcvCF~mKY4eU9&0G4}HIMRkr8!0|sRFP- z=Q^`?=ZKh>RW>b|s_RD!LU3wZYrB>%vEqo$ysRRL&RxpGjk{hP(}y=vUWy3v1U00A z#Vv{)`3BfVn;|26tv5 zFxZh!!3HD*WNp)cU7>y&LF~s&=cC&*;2qHMwbv?|me(_Y{{s*>S32%=rNhF( z3&C?zr5hAA@EqD6kwE<-CNAde&Bxm}wktKk9<2J5)9f=4TS+ON>XiSM@Rf*Q7iXZUjYWd7Ipoxc%Duhy^7i)jyxaZ4@AMC$)BjXzo$s@r0nB=j@VP^Fw5b2N((sEx)wp%T ze-TBWb_G3DbBFkbfB#mk(9Gx*RM82uV*#{b+Poo`lQFSpTSHeDyc!+|3kpm>li{8r zrVdY64nVdeG)k2cvzO}O5%cIliuhDM zY^IS7DkbHReFk+09qSKLmVVi}id{sSQBQg8y!VY8%_Bk|u@f^aT5-1`yG7xNe-coO zsdCY1C&{TLZPx0frH6m`&~AMhtktyg?Fm)nJ%CK=m)(~tSf{=>(DYEKwT$9a5-p~V zfq76d`vr)SfwH3uW3d`wTL z5Jy_lShjDgHl2{cSqddDz_Mb)gX)!;c=kocAtM%yxlcJqS}yoKoM4l^xc2a-&H4MX zjrz1ZOBOXX1aZm|s*gL_HabUdU_a!slJ5HHbNI~sTa>cRyXk8Ui0oci8^<1gcd#&S z>G^v>+zvHqCD9pTITET*mA&4{BJ^prUz-m-*UQr{RwskGcSr&3>(lZ(#o^zHW(1R{ zEbf0y)X}x7l(2_{8N_OQR}S4%`HKkG**Q@ZW z!_7QH|JbrRRAkCbg?G}{R59^!$-~TEMj1|i#)(t!OR*9NuqOVr#Y>8kBQ!ZIj5MmAE?;~|OD*~1fIF(U31*-s zqiL_U@O4NfUd1?OYVdzc5GALEKG6QNQPVm<8l&1VeLtWcRVjd3m z_F{i`N*wu$jPFPE+m8OhK@@T1&laDfiI7!WR2W1_>H`FJo`K0-#NOzPU)0g z-3&sf3$XjELjdz1G^|pPSDqBgFf*~mTrA$e@XeAG3 zA4|iNVy05hNi6Z}b+_NxsZnv<{ipr7;IT}N71sH<#~u^gZ<#RvAG)bF*)Y8ykx2-- z60F|Q`)*LjG@q?2=N%TjSpg0L)GpgOwnt7`Con~94Gq}_xmW>1DIftWV~T{EycXeG z&`^#z9&mho>Y%)^bNK2nRC49du_T+-UgtYhg# zQ21h}l$;QO(hmkBf27<~5oz=|Y~(`?zR7Y(eMaxKE>=oVhp|~w3`mNazt%yncLXMJ zC@?ZB#`8HocZrSBn(qOW5_69T79rO%I4 z{0IO2W5y)uh!(l;I_7lqi)&i;%R|**Qno{W`__h;0*3}KRdrn9^)!m>S3Y*H#M|Z} zn9uR*?aSPJm+RoR>otC5gYVtW6GesJY**UCw{wX%BX+Tgl-_;AzFFGeaH1Xq~cXkM9Z9Z`qwIWX4W}gGQmy8soQO?p+!LrftQ*V z^J;l9ER|iBN|~SSUrRG~M*TGpm&aol=GiJ0E9;9)_R^f7kz`_sW*q2gKVOK6iBqfi zaGUpZSH(WBTKXP5#x+;(995w#`f<+B4EM{{**Yrq2Gy6`^Rn&M?v&0j0R`2`_0wjj z8uucBp%;wO)vtAk!cxQ?~zw z;UOV2YbRmJ268tGyx`G7W{2cZBp@Kj7A-;935~zg6QEgR%7!*%4rJh;NBiYIEgrk9 z{nmC@i79fEwrN3cMB$MnZ*SYow}^QSEhSDJ)bY0Jm3`lbgk8Fey-LGw7d4*b?vgkz z;q$5}z<;qXDn`CSI@2lz>wO4?+*((vSI5&HW<=e84C3kp6TG!we+6(`j^`@`cL#hB zz6(tb{h*#;DbW{p;aB*r3OVo;Mv3)*G@WHo9?cSkaSH?|xVyUtcMI#Hk7yIeT~_CxuJk2=2Dn>>0(J1ZB;& zZIrxFEBvxF+>^AXP(YzQBpl`nB^0X&u51==N+K;4)7bS@xSJ0Pqo}b>MIj~xPYkM> z@hY)AgNSwmiz#IG%VLG)T8;0Q>F2S7M9A-* z7U;I#BUe6rYctyL%;NMK)U^Ieb8t`ikj&ryO0tz+_uN2?94l!9dH2D<8xLkg|>1NCh0qWu%_1 zPxEL`)U^v4z{FvO9hz7kt&YAxz1*{(40i2$cbi>4J#9&>QF~{uj4OOcKpDaM7S}2R z42$NvsV(xt8uXZqq=M0!Ai`a9ROT~)eT*at2_#QBpuUki2rV3FV!w;vscO1mvIaQ{ z!_l=LR`^TN0KOe<8{eA=KJPQ9oPt#+T4@01^C1m&=6x!otfu+FHY?zWgrQo(jEE|N zHT|YvJy;wrZ>iB47zaRL$R*Q>NCDL&yq_DaDh;jhi;G;8h zq7%n8K{7%i^%39Zh)Huf9Yc?et{%+u3HSkYVy{ye&f3~dMWwOS@tUkLVZfDXue8Y+ zna0tAz)$ZG=uSBe-k%m(267uI5k);a2sI6y8*CKw>B2m{t)ZeLShcx zjr_Ti{>FDKF;uR92B1gr;|zjK6Ft_Qr;|n}ux>#boGG4=O%t1SX- zqGgd)iXyjzX$v>d8`L3sTg?v6 zDjPJ^xgRI^18J zV%U_u0y?xN7vIetm;W{MJs+uS!mP>;wV&QX$19YKRlrY zs4lYn4rm}5;dL{2=%1O+T=u)Lo6v8TW3Y}h)2m|_*KvPB&oQ*}4LPY_gr_A*zC68Q z6UKm&LY=Z^ygb&a4(P6YGSsz&ZcqtA3n9>HQbHz6DX|E9_DN7Q5)n6Mhm)4HSQ?h_njRrQZ2$2ceVki z7SohE^^jh-1G$9JwB`Nn+2d~60su0;yl%XL@SHRY5e{A2Ow&JNakMK301ndN@cqW1 zWzN|5tfZ2J2<@VMOZ4>Hi6qErVU%3{sc6zvDD6r$>1`+*(ADVCY)OmlB%wkK@A5E^ z+cY;S&3ZFa!G#OJMGT0g(LQL}EP{f_&4<_j{<)m-yHjOy*&CY`{aNpL22kL5+B${K zU`jUQ4}I7&(x35{CT*Keja=_|jj&M$9k$?-bajw@3BV>AB=E*#Kzz%7gWw;bJJ%C@ z@V#;68r4{iY4h6A#E77O#kJH$y2Wh#Vd)AN9@1F;E4YteBF`ewcqSL%CKJLRgcP#VLxM}Kv4x!@ z02e{1Q~gpdz31^m(S1xQGD#JBoLYk;A`uE?22iVF4v-0U-=5D7p8mPeCL;h0K5zF+ zQSEW8+xGp7zy1s!37>R14W=u09Xw4EtR}V0}FO# zWEX6?{+V&K1ADdY>hF(9-$9?IZ1q7OgxzXeYW%bkAnlT_PqM3)OeltA{qHS9b&s=zaa3L%sw#fURJwP>JqPI`J{d9 z%87}K5C467lKbjG^kus15f`*a@$`!I>2K7Swsm9J@R77YyJI-nVD|1?^Qfa!_|7@L zg|RU@kY2Car~q*@`?*eASYv>BX1;<$$zKT}iWnWD5~J(>=$n$&cXP9%!Ao?iAITOV z-K}XV!kun{rh1QSZY7RwI)hg-1yI*m*}Z}hx+pF?oLY2u04o-|X)8p&1h)B&mu-c= zExO5foa#g~oaghU!7hBi&_p8LA^}!mF1t2dNQkIP6L?SoF@{L%wg`|+L#h}6`*~x~ zB=+kVP~sA03w|r+Frvu+tG|_;YOsH?_1yBl?gghhRHjnmaeazzNg_4;aB++w5xnO1 zU_|J-ZKa&(0PH~fEBNX12rHVDJxP)bOs9EXjora_wVBq&fb z#&uEhtG_R(44x2JZR@>O)oI(%?>08}=Z@;Lx_YG#mkyp&Szm%1fE=pQ9 z@#(fW2ivfXss@w)nme?SE)tNzzn>B@F1)JCgoqR&(>m*W*&Wj&^t@p?^EyP`KlsAq za%>?dU#VE84xb_O# zg=4UU7i@D(mz9mYL8TvnfA@a!A#A=z$??3QPL>g)it%{v$f+?#l945kd33nCqLBD) zdyofoy1ks@?*;h>=TBw@G$4E9QROhE*)mjlDe_3Ygb)IV3p?sWW?~7L2!!B7%9t0# zrJ+;4wz-i7n{KRk;CG%2=)d$tj(J&4eUOVj62UIR9Xg-ptFHz!?SBAS<-n~20==SQ zW3K@SQk~bm-N4`=e1L!T>u?T08H5HJrILkK1EWk`y%vJcT5mVs-jftc{s2)j5vE)1 zK#ztz%v>vEVa4XYZ7m4MHJY+y|8U01rC0&eX^;Y*4G4Gs>Iw~LI{wE128h;t?>mNvaS!96pLWEr4?-SZgsynz!VA*m#LOpnsB=x zqG*l+(VC`{*s!W<4W3A11@5T*9*UTz&+o0=R$dMz&oNM+ z&VAm!0ADE8!^@|fK?smts^80?U*X0%S)plJ%h>yK$GOA5vJ&^*X-O?DEhA6!4B#N+ zoSl27A+}9U0@o{?M4%DcZ>d4gG|JkPGZ8V;;X%S|!vM&D{Ps^&qc9&~K7IP+{d!^` z2^|5<*Dj9fs;{R0AlG_an?;r%oJTi*^an?y80`m2!oL0hi3m`ost*D5Yk zXNZ;v)NUMD8ls-pb`f&8di5;W%x&&@X)(h4Z3Kz#CV0{8Cv$aN^?6P>3qJICGH6(CP9$|1yO_Zw`#VFkO0TX!z#Nro`u$kpg^ULUBYI3=#U#r zxUEr25s3xhoG2{gt6TlnP|PDP?Ylu2Z~Prv?QhE3u=KLcy4n25y#6UEQikO{34oi6E1n1hbTR zck?T(`^zEv%fb6AUW2-4_Mq(#mk`OC-w_n_yo~Z~s-)o!I17|wdF0agX`dj)*G{HO z=kas?egpb^GOCrcvaE#&(yVSOe^yPy90p^ z@v}nEa5Sarziyts63rt`siJTe5W;iLQ%D0)Wt@~SyYKi`6o@Q8%X|5Fd1EjlnipX! zm4t=5HvX(2lH_TZ6DL!gxqXEeGK?x9&_aCm?Y$%5lbS`eftL6*!~MrHk|n^pa-cXI zJ|zW9dNz$YfqDm)T8;fWAS zoj!a_?H3Sqrxo7v+$$OhK-1x?ARh8&Tfen9MzCpmv2wVsK=?w8 zfgL+K`VKHNPbkJowhm^7t6e~YMolgiu_@|z^1Hx~1`>v=?S1RPuF|KacyhZ`zq-(b zgMO)C2V>hF-g*K$ocUidwDVTz)LifX{x+p1FCbK^kN#Z!Rlp{l1J({u{si71C!L;l zX#hY~4lJgZy?HMMdu&WpoH>mHeqxapD*P8^-VDs%@<&t46aQ9408kf49pNp^w3Y0v zTU$jxt}Bl!C;>3wdv+V8C-?4qAdkrP3uII)@C$tf_sWbU+W4afhQfCKmCy_{*D@4( z4gM_mP%NK^Q}w@k@%1NHkeX>{295gBd@-zt+a{-k6Ro2s8&;-O3ij;KA8XRKNlGBM zl4(??LE9@z>VNK*PPOK$LMhD(pfZbB{a32R_=Q|nrGfLtQ}4j?VLm>eTf1xU;Sk&J z&BAYBZ4F-#@D^z5>r=u74yCH8tt&q9~FSq(68W22Xj2C)>pYXWQ-gr2(I!K0}`gayb`G zj+j=bH2O53ugxE^{3cpFGVDn+8KXq98XYCPXT+g3T&O?_UP+(~-By|pCxftR{fEEl zrv)i`8p#~b2<^DbM0BPCf9}z=^mKBC6?RuZLl~aUh3(LSU8#tka32H1q1z{SaVpuaS1R&YmM2nQ;ia-~}gbHW1_FD>XTWT{# zLLbp3dk3^vG2Y51Ofe*J zW7?9U5h}#WrE=)-;mj$BviLO0hAehogsq}bG%!eMLh&>Q_)>{R6|%;`;G05l3FPKL z44rW2kMNAcMCMs`GY5yVQvS>$8mVEw2jqA3jn^}`7ROrzZ5!Y-^YIUm_ewLMnNbW^ z*WSi5P*Yb2jE;fTR0_?JDeteQ=BkIe$&46r8sX-jT9MQ;6V(Xa<=e<+SV^IPMs$&v zl>0r>D+BU3w`+Ip>gk?a1b?lkg9AKDm2n*>wpA8{;#%J98Af>Fy!AYfATM3FVO3a? ziuB0zD!uHhj{~uQbk=8|bxs?4AlHYc%IajllK=k2$@_q)OSF2m2&nUJkJW$^{Bo@c z?11Jm**rw)frrLf1jFB|0$v1~+65lMDzth$Ng1AC4iX`Y40hQ_3t{-wNM&_*)&UFv zlcG=4e41Ur6twyDkDlWjEM2M4+pZz3*_YHx9E~ap4 zVriJk>I2HX;K6NfMs-3*I(4!du}**8rbUWs+S9Yd=e3jDT1}0;CCwRj8g+K+Y>QO; z6h3ed129tuIn^?EnXJNTY??EL&a0wE*ScXNA?%P3kf&XfP6Jo<8%VHfuirn5mQvLFrn~()~v*oQLBY&UOiK$fE`T2X2(ex^TQ*ZLaShh zOU#p(GWgSPQ%~Q3rl=q?M~ZL10m7zRgW6uSV#!{$|FNdZAX0;hk{G^3VY=$Sv=A=? zaF3lLBk{eqNeaWJdHZFC`%-vQt8@>JcY&kA-;dA^g(BQ1xWv9CFj*<=koJe|NMOn& zoC_CmqSn8s-3=#gu15g-MQtRQk3ypPG}^ff-UhXKq}lG5v-FgQ>XJKb&+A5+eHS7fk_?FSOn@%FFdGquAyT$ zlzi{+3MQTn2`&;R^xJj-TtA}Kizddilt3cMARyTqo~f{mrDLb^5nGXF(>D3KcQ`P4 zpL@P&mk9Z%Zua+E=N?%S@7Q~-KBGG|{C9#;8hz0XoUe*6XpAd9K6ku-^{c_&|Jc%( zPgJ;NzdR2AtO|8;yja#eP&Bm~u@Jb%*+1B4)~>gjr3Bcf9($oovzF}Kj=OMfYYw4_ zt2egj5DDa4$r}25|CZ}jX(x<`iTHZm0x@>q*~-t92*a^N^5-@Qm)1^djHgo9Yw7qb zv~5brRdK8PUq=Q(wZ#1yPl#L%y+7M)r5ys_7}MLnI)W$feMZ5g99-@^(uEK}* zjb>w+!^MdI2GPTS&NW$py}t$l)=0kgiRTRz{ zi%LqMPAt>>fQErtE`F#++!D1dQc;+2Ebtiw49p;$!6AWkT_J6_?_zOwFsv2Us4}Cr zd`&gBKtT&*x-etS!xVE>DOW3S0)7o{=G*lICZWVi0uKoHo-Q z6+H|j1bgd`+zL1Rite&8O)atJLYG}~Dy!w=6}o(m>>m!oYQW4xfF`A*S8jHeGZ_c_uDPWS z7lmj0IW*~K3(QQ|P=KoR=p*{8UqI4wJa6iy^5p>rzP3&Cl5k~!k=-m{|Nl~!KW zhgKAFa`WId%y7|T9DxnVsef5G(-E!U#yDN|asaLfx!_e^GEj8qQbed8A(qPuX~H6h;NB2;CvN@-qzdw^*8UgD*5Z z6Tve_2SS9wPAXUtEBz~Hp=e$}Ixd1--+@_?As!tR5hS`t>9IPyY_ONdF@9l0kB&B6 zNf%?#&88lrD+E0bntcE6%0I@Z;~!by^2g9tP6;!>@-WnORL{gB_*qlR>)hl18SE=J zJK?hb{Fg5lLXO?uu7+GeHjNE(JYB(1NyKsg6*as1MXZrGd;%uR>dW!15E~?v_9sOW z2`FNbD@(G4pC+(B2$(sj&tLWv3xwgmY%vLK9B*Qyk-*I53Lm7ZgTs*Qy5yQE#14Z{ zhG^J$n%x%BdBNzf_3<@*-A}3PQ7ogn_OM9Q<$cw6e*|TYcmC;W-t5jeC1?$7e}>)# zhXy1`t9eygpDyfJvqudj-~gERr|HLPNZ^Fw#ccnQR?iu$P^ImF5=b|4f}C2bayhvF z>ak<4<(GBk;^L*ZF6dF08@oG~CL(CyP8-5Ne347_@(44B=9V&F4zXYm#COVz`WH{k z7&yuDMGf#>nfcQM!S+MLz7Mcy!v4N;3#U_FJUQucfmh;AA?+H>-{KscCPQt8e+2Kk)cg+m>e;~VZgc$K9RW=H@AML7dR>x4tKXumjhNJ7E>q5G0mm~PWQ%?7?*4F?@K_RPI4(k^g`!*ujElpi^>n1 zXPhnkfU5*~1!b1UgR8A8cscCCasHdhGFIP2d?Bq<;!ZeeC&`}AhJIU6VOa^gO5ATn z*-T}#ZtVDUKC0@5;@hhfdVNG!D{XJBS33Eq^xshF9Yw z1$ZqY1MnDsC{1PQ8#xW09%KkWL(f~=?r892bxKBh^DnIQf=2v_mH$tT9*I!pJ)+sVlbKqU=|=^SSc}+Kb=e zgWlUAH?f{H;NJJ|6Gbm8h7EiREmGtXiR!uEu7qn-UfJ}8y8+)zZY&(Q0G zJg~0R#a4R4G@+Iuxt9i&mH={ac-LGj{!tgxzfUP=+vBEm?uao6+F zU=`iDFz9CB(Rwpy#LF%}Fm^7JF6J#hT`0+YE`neC_Mn~y(YY%lZ?+vkUo4=*{iR6D zr7*gYV0_aW8j*2=NG|dS2*0?m$-i%qyxW!{@%ZNj{l1t`r%9k`--&zXg!YlE&bSCYKl;HZ;fRF(aRc+rS!f#q9t!7i88 z#IO2;@Sb4Pz1BhODG7YfMLRP^>cwm2=0aq?wc=Zvs6P{VkZFO!jowb19bO9u>L-WP739y`MHA#>RdXAD_aDG+xolg18V2N zYF@~olLHPNgsv|pBDjTQ;14@m$)B_CBJx|z?|M*kNtDOo|TCf65#Bl91@eHLJq`)z$idSWwjtghjjF>c}QyWj3f#>tyy3VWHbZW&D zNf#%~--MEAWYYFMy^u);M`DnDi}lj(97%3&Gm^@qZ?O7663-O<&!M^*`Od(a5uSC3 znktBzg6(E@HyaQn2NXhRwgmNA$$9M09lDU;KMv|`LJS-%)E%}o0?!&#`I@siQ19!m zBT61M|M<_OzGuz8EyO4{X(q(>^k`zkoEsn7#}g?fRohGnmRI5vcTLk?Of{qbIbXSN(YkFA8@{~wzuUjx4-@!Z|F6e$QGy{92I;^@Th#F1M+ju{>VZl!-34+ zh$)`Ja=up%?NOM$nXycNUVnUqIyFxdDJaCq8eQcGV?-|Q1s8NXy-g`0{N7o4kZ>@F z%CqUZc+vu1*8LWh6yY9=m#s@9Ye6%a=-57-LLiMBTAgMBg2{b=i@;1H@O|h8z0;YN7PJ&z zG|Y$h!D1q73-Bt~%&9Iw4(~Z+ls_dk>FwZShu2j7&|wS>SHsTpVT@Q6M5$9Wr`2_T z=Z9BvRt2vxbFhDPM-TMM$!Fs*oUGDI(9yQg%X0 zm<=tC&VBEX5!~J9I6JGMRgx*Y9?7F?HxplgIngp(Bf!kqB`AJ2Re?^(l$ANtrD1ZD z)k;~^rqR1QUo1P-Xh-d`iEHt%;JYRLT5o5- z3#RjR-yZPV`kmg@y1|Xi4xMk;+YJ{??Uj#8bDVimnWSC6!)~rnsL__RoTKk!WOQ3I zm0LL+pF$MU9X2uxhRUH4w!aIg&RATnkcZbo$5Z!0Fvb#-i5bSJKTD5Kru4dtXX-i( zG=9?(6$z_Nm}-`$rV|enIiW0=8>G7CJMotx%p0L16J^9c?u?hRiMM3cWv#8#LVf*K zL?#-nP8J7uLJQ4jiyJP6zJw_1FHU+19|;A89W*bH15PA}#VAN33$(3uJ6MNLy?$SG zzq(zH(7i`-{)ByGgcX(!pU$|H2!uWBOk8-usNBPhN)>Z)Um(4do`WbXA;-aK#tfZP zj>ae;Q}g^9Ek65=b%XIB4jz@8m?{X?+3Z0l-=T(Adk`fTcZf>azckBh4;>e@K+@=pino{K|RX~)Q4B}7;!drenY!>TQSN*`jB2b#JB zac?+zAcLb^jc08fnO6*w#vqhHQG0u7o_k9B8X(~SQ{Ksc|Nc$=_Sl#^afu=PIs$~Q zeqqwrrK@g^VIvNrp0fZmm@AiP`|Fw<@fwjZhAu9C_Od%sOYsdVl?V6tS@yxE?`CPF zFi{e5m499*?Nf*IYz0%c_#`~4hj#=(@vb~l*YTZI~GBaYl45s0R_D(s(>aF+e z_CM(HsaUF`XPl6n^mzuf-SXg=iPW6pEY-ICSq9RD?Mf~DQLIoL-VmZcq7w-Y;qxt` z7%+L|v0IV$b1Bk@SzqhnFnf8B<;Ue zke&|An_NCLTMJ8r6C~8@lD>qr?S4QAN3ja?Ka^d>hZnPhVw=bYD}BuFl0URjV7Ac8 zP?oley=YpZ`*}V>$K=9hVuA|Xz*~uAcwPleoMkh}$yr4p<1xf~d7#QTu~B(^>*Pa8 zy=SbUaAs&xAjrsPtVuI-Z82>`ML>o{{bBeMpGeX3ipY~g90M*C=Vbjax&>>jrqMIN zf=L?SC7Q+76tQd453<{aOiiER@HP`%*yw3O;DRaZeAqD&5yV3z@`H(c72$I;`~8V) zuuT22;z+c#HBDVze^#(fK*BZ!4o}U11DS4)k#y?j>DlcAg1*nJ5`#j24xp)-SM<;U zwq=DxZX7A8IO$XxeUUc&V+Wa}rAsRi3?8cofvX8FZu<+F<N6=;cjpq0eC1CCMN3AtWM$_|mAT@b7I!wdhyxm%K!L=yH?>x{# zg&7tp*dAt!_q?ggJ92anhj1gX;UVeR65)mB^1CGy*>aJj`o0i2BEZC#HBOiCE2%%g zk0uyJOThhkSb}S`j&>C^p_slwmlr%kmlhRA;1mb9Qj`=UIo+d7R}`SNXAwzALsU{i z!KouAt|dty4}((05L1$>pCw7eYB2IHj6q4UYYSA4@a%x$G|5+{IJ-|j?PotukfOTr zg0O-@kH)Ptwp#v>lV$o_$tdR?E@ALtoR98|JrV_qsUYPlmFG25Bx6dPsMRHV%=D>g zg-y*Jqtce6h=6Grc%J{%Zz+|jI*GLfxE*yjIjnk< zdrH*>k{LZT^ciV#0ut%(vDOSGvJ^Xa+G8?4QTHOk7=Wrhe^!>j9o6o3NK=nnNAt_& zIBPT_g)$7(Pf|pPUyZoHS|W~P&m8Tu5^2=#!Imx1FHtX_jx|wNS6}m?mgHh6ETe>@ zwd9k+XzB&uikE=2Wd-D7N*E-;rhqD}XsU5^sv!~6pg^k)B z?pOiD-P*EU8cP zzW;4a1`_EDrVVF{sB>2p^OGnCsOn7k%HF7@p(@8OgKQ(8jeWClw zT+0CA?TepHb!6;UA+80|B=R^TC2vMI&cLBh6iFI!>ec#{SCKcguuf?K$%6KQJLz(X zi{#)n1Bg73#qC|I+msrfWMV#K7KW$#kM+taQuBnHt42_#X9fCtp?S_z-pNq1xKz7z z&iUza$LCJTy1+$2L80EtIG}PT zvu0H9?b+=e9`AwLRiJT~=`!CvK?SDudVT)ljq0XEQ}^d3L)#KR?c?41 zs~+R{plZ;5nIv-k-ljmEoQmjW{VdUs<2CUaxgCUbX$Z7qR$*!8f%uG|9~_^x0U4zC z88UXYdW(XS(3S7}Zfx$j*6I{-T~l_|Uvd4RJ+@$}%_{%19s%iO1$oSRUs?lxRK813N1}9jmwcf8#S<$Sn(X%= z>DSj-uHk+=zbG{m1+WEj4&F9--e&!tHkR7WK7BaZ(zCOT7pwHZblW(A7?D*#4Px)T zg9jkvw}+{gT5SQ-pc5brQ>j!3(o%rb9~(Fty>$r|xsVNn0nJ|GO@O<$S35|!vs;!3 zoM{Fm2c>3{&i&54fcLH@1xWJ(g%bHd1?4JN&K%ux`))&hVax*dhwGQ?$?5Y!;HB?a z-wb54Sn}Hhldw_17o3>eWw%PW`cS9XZwTlLQw;--#E%oYbOMISvS#)3t_E^p5_R<( zS_sKU^nIJ_squC3IG~jHFt(YL%A5ikIBwT}*wGRN&1c905B_c&K3_DTDb4YVQS$P(V1+N<2BPz8I|O`J zShDbeWTS@rNBPY z^Fj)l%L&m*!P8~I*=qEmHXxzEyNg^N93|=IgDx+?>H5Qo|2UlL=cLIWMk@^-dft-w zeAb%SwBZ>Tylj;pKOVMXUN{}3De((6_N#YVatn?A`!YOh*+Za7=tBn;(a!4o4QC}e znG&-x($6XC6WTf4t3IIvl%T@gXGYc-@go7!QxbWRnIn}?6hP2=*7K%b=TkBh+j^M$ z`=I^xQ7Cea%l9C2r_ZZ7#@|msa{5_2CD$c94fe=>Z@uT2`C-R7X&NtNZ zQUjW5KRmC{&UMqw28&tVE|w*iI$h8gGkucAEx8UnPHu@3a+O&3A}80zJKTsiZ^qOH zAY{c0u|XGiI@MRbvu?HRYg@M(2HP9Hryh2zwc*2i9%n0EkXGwL^LG{&9}I^#J>x?q5%X8l{tyl7r~9k&*4gize7+8 z#PUZhZ399-3yPIOijV<>PdUp8-6#K+U>tTD*t6!qf^Yo8nfC3&{i9#t3*yFgI8jT% zXejvH&UQbRJK$!wu=b4bEa)i_xTQH0d;zoXye-!GeeXYo@M(sI2Q$k@H=oqMHehU4 zjrH_N92&tEvC%Vn_{d73{ra=tQ)Bh?$-VntqXvMRd66BU8qm_!CY=qby>wU?@XZ2b zn|1c*0s^nkIp%<`wCpU2sklF5sOlEAk6d=Rp;%zXaR14LF^dlXKk7V2c0D+8+AsG8 zI~|m&*#IE0i>DL&sj~(^|7nr!lhXE?z}Vb;Aka&^dT}qB%XbX$+6&g041U)4JLM3# zyqN`(EF9DfcBhNa_S& zu0V)DYNSTh#a6P-p=zQ_inLf129^~Xv z|BT~mzbxbBS&X5kL)B}p$G()b@S>OeEnK-S%-CFO0I1ji^PN9%SG32?^LkC9da%a< zi6k4_B6!d3G7kM$2?^_(iss}ztIDF;vmd7`92M|Kx6j$;sE7${f5N=({`MSBRI1tp z=ruBOpb{rW0&?_R3=NB7X>EptZZ1 zHS%wpo0F@xm2F!TgC+WcHZztj>o)e2L_s4ZT)S~x*rDdn1eV0bFOQ}jy?@-!cY0eA z#~3DR_yv*8@sq@Kqzz=zNX4=eipvU);A*gy(`Qn@7HbrjhLHSBa!&XxBh5>X4(rpv zf$wqUkTH%0c)tsC`rx3QoEGEt7n}hc6uDJzf8>|&#I$7B%;90_57+i3`e3BxJql)k zktTJr2yJj93{9aOx8eX>;AV{O|PTT=ss#uHw^ZM{cW>!`a>=5jY-yKaG6L%oKr3MeS zOip|ArzaPPBB`06<_!ygyAmAiQ5g4;;8L__rZFc27r?v;gw%~qPCC84cz~s(q_}T~ zQ*r;;1Ou`<7|ZHPb=x^-G6V&+PXg497pIpDw6(V{w*IUE-->piaV7UnKK|h}I=1!h z*~dA>C>lrg=I(%gk$lL;tl1lxlXLd z`&WTgeQFau$ugc4Bs&pbhK1uZb;tYQe%_4;$Cwbd{^|i!Zk@3d;7>Qlktif)mr8&{bAis6-s=WFpLO2@a>2(RKjk1;`!f8; zXjSzoa7(aFnEP5K{V0k(te2@$SGTqI=J!j ziDC)LYy0xb4am0CDUMre4Hu<9Ggi%Fe_KwWnA+;VMph^qV-ur?Y#G`*ACk;%grp$Y zA_5~?!YJ=R%Yw}O0?npPrY4lF%3FG#`*8?B&*Z%P2FNB~wjl;%2uubiK#(=M4Qu6( z*gMbj(WCm+lg09x&9?V;Z;S5_MAHLtKj!g%mtXvZOJ=v8H{JyfCbB7_^7DN}M)G6X&Y6?;q^|uA!n^S%x`B-e`03LB z=)j)HD;_?lc8&_ybyGzZ4U^wNCx2yh zuut#4bMST-HRr&=dK0``|2JB7!h8Qb-gqY<&ru5T>8sEUlyn?%KUN`}jH-#`Rq}U( zXV2Z3!{NzcsdYR3>kL6*g)IK1@I<47CmFY)#aarPd1j04fP+8O7(XWL7WBPNojQ3AxDE=5S$Ie(wq>)}9Uv%Cah3C{x+8Nr z-%3e2RsD}VMD4TAN<4PgKh;&CLP}hDFrqC_TAg7VqApSv~ zR4lC!VEq}6(JGLpn-BLC^^S;VX-b9jqWj~x?91UJmlAH;%un0885eFOq&2ji3rdPvnEW_P>M?6-6qmd-EAfer z?a_o3>|8Nt__;iNZoebmFHG`mD-GU9)3A?$)jq*o6YmrhSb6a7B7PK+mH~#ML6nsI zXG^Uh!N(54yfS&*pkwyP@<>2k^o{%ZjmMD&phQ`ies>1piovg&sZorw0>X@EeH(ZQ z^^`pl$=qLHs#K#-nfy_BNTI*B;_1rup?kclsl|^_L>ehnlK(VHPwCp1qA7|~0L8Fz zpEQ?XSq0TOu9>WwIB~VWf}RGTF!=*`oFBdcE9v~(w?ua3h;}$>z$hy(RUz)*ryZr5 zY|^kGQSPa(q0#JoNjeE=+DmDHS$t7Z5sFnrJgQ*aryq34wk~=TEt$VrKGrWF-roed zt>;Z!{+IOd!3h7LmY4xLfOX%RF-x3DoqO8Sb22%*<&ooK>o6JBzdfPT0VE;V#$l6~ zAuv59gqS3_vB)i>JJCZLcd1j`1)BfJq|`)H3wLFfAhXOGO}R!4%H=ax_E zEOR!4bYQV*0~+=>UU$d|vm^wd%E%i6#x9|#gT2-RGM~p6usi6T#f83h*u{dpTt<%Obhh8$GP_6{8PI0?yd?Gao$EOIw8aRRx}Ffe@jE2=xSg4}x`wEi z10*RdMqT&VI{Ib@laS|g!JeML&}R1|v>ly+7pB`j4o;W}sBPup}$2%@C zSsXQAAh_T!VZWwq`Lglz9RY?ojwx+t!UNp8M<0}lP!zmgthh*}GrCL@Zf4&#P^3l4 zqp)Cz6ApRuFLbM*=U}2EGE?kxiv@NE?^=;$BX7l2x-qk{jSd~c0c2xxPWb82G*QJ< zov(=k`^sS=#`H{`7o;CU5deVCzcim;fOo#_G0mJ*Ih?)HwL4w<;3M&NP^fE>eWA8ZV<^ab7ZRo42AT>6CMN`m zSx+-Gz#b$$o21_a)9xvV0EcQ<)5kr=$uC#w}5RZkUqER7{dXV4;23}qu zs@tz<2hTfVfk?(+N?*d62I&O$p=qtgHzt67!b$79 zM~cJa)gCYJmd}ue`!mSxuKj9el*?ys4MEh)=)a|Y7qI5DUHhogAe%R?lpM@qxzkttq$&SC>wEQX1ab)!l{&8j*O}gUOz2Uq0prEl z>$qb0a60Z9TRbu(*#*6VSv_-K2OMb~Q)oka<0SP}R)KY~1Sk`{_V+gzv9Id<`nuNRi(}Y?)N&i-%gE#VheNoXogJV`P)eZ)X8~AfBI=%=9@6P< zIJO+=8Cm4EK`SpBjC$saXJ6^7DiRJT+V1}C%{*&dPOxyWNa)`T)p59{)!{I3@2do-#v4Q=UN27XDk(XMp6lPX|p{#ph7+!lEgQZud zY4qO}f`^rf3TK{T{!6&fZ&YQLO?=~Ec6l744YbjS6ne%n7A`Igu34FcARwQVl~W)l ze{6glF!bR4TJBr(k62TX|0`TRKTr-7F^qG4Tpqn z!ZHaDM=Mp69tvXJl5?rii3&j6<>r+wzr8-E=VSu#yr1mSfWzYZY9|tkj7DASZ;A51 z`vcKqu|!i_+t}8Y;~!s_Q1#+YOr_3nT~uQuM?`+^yfq642arNkOpO5S3h6mH z28&kQTtwXaoK=c6O!$=+dymu z33DkU8`Os&zEJenF7be($O%JSI-yw8ghd@J_L?HMG~{y*m{o$9d>y=WhOuJsObc~C zN(BqCwoUOYyOe;8M$p*+W!$_Xct4=Y4P0oUXXYG|IxZafH8edCq*R6>#*%7GoQDHd zLSn_^{FQT894MwJM?KkR(_Bb1Le!jp3VU!GRVR)@uC3WKxP z*S;G%sq_&%gW(0Sp*lh`vI0|&5IVgvK7ZG8Jt}C8``MMLyk?m!OtQwGdDGpRIh(k@ z=|<3mfzD2n84K|aN!7QfWXD6QQQj}OA+HnBrMn@JMYlg*`w=PyVdqK>zK<@7W1hYBZ5)JHjsLz%do2>C?ww zQE!xxguHJ&zMxnp78ub87DaXPVM(rQHR_1XFY1JVRMvgULMQ|) zMHi)FjD}b7Io z-F(~o`QEi${8O3P`?}6JO5@`=|J^5``rW8E!v@sRstQL0(V>b)s(qRgor%wft>OS7 zWXtfacjh;0s_cG36(cs)icT$&KBB=Z^(|dPC>BN6cgQM0FDIdrL=6(1 z#)^QtV6S#m@U`t}{y;8VwnBAeB6OKYWQFlhhXn||AuaI=F4jVBuMd0fr_I^%JKR#` zlWXG$%oq1mx-s!LH3C?=jj|bn#Qj-?7B4MMwkr+w4s6VKE-Kmnq3*!DM%w7l%qVD| z@meqA`=`6h_FI04W)^sVrOF9wv*lFcL-$_Lh?Dr@XP~itetCNWl#cY*P*G!)$dUgmIyYc^?-X_pCq>rw^ee6c|y+h&a~GvVB0t4-^Ve zKob9HS5C#aAPZJq0uS!a;m?e56Hf@@GvV$} zz0K)qU7LzLX;efpv~VdH{I*d|IS+3+I&v{DlG4g@L_|3@8xnE1(;~qgv$t!xE>w`Z z`yXCF>cxQ89a__TQ(PaR81z@l%g4{V}Z-_ zIY*ByAA^Usm7%0q(}&(o5QVE4N%E?ZH_0h%AUj8#2W0&q8WM2m*7b`S!m3t3Opb*q zMx#JH*dj(3v3wU}c`gdHc)0^OdKijm!dOJo)6|pcYla3w=Zq$}zhHaa+7jJPLX1)= zOtBCT!(r3>6@~`*vY?W3skT7pR7eoi@aR;_M(4yLG=xGA0(5x69JJ)gruqY%Af&64 zFVf(MFenz38b&=qO9+X~kELO7o{t(WPi%_MR)sXHs?;W8gk{(+D8Tx2)cAUdw8w39 z^C5@ztY0zDBMBN2MTP%y6(1WR3I-&=$O}ctV z$namHRwCua(+G<2UNP(|7}O|?j~IE-esO-P@t^coN_f60uB6;>HnAET<`^Wn{4>v){9T+b+zCmfl)u z`>g```}C7q7CeP9iQ*WnOW};j{-;NB>&wM;PZ7imjc)rfWR_mIjRt0T+qr?ZDet+g zlk`T=ee0S{owRyz1QrS(Z@WArEGn<+(uQ{Gz9=eb{aL+zfk(^6RUB3O4P6 z?3;w;)#n(^+^)Qw4YhhbmmvA!+A{~_-nn&%KJUx`VwF{5Z%`Nv1caih@bOH=o09h4 zBiT7~KxdPi&d!r?ulQJW#?5Z48BCO&j$rIilw`y9^$Q|1m6z&6=GrUCm~lZ{3&fEpBDT5Gsw0)8DYpQr(9@2Yg`TBSP z`C{r~PedE}ll2#D*h}c&s*bk8;XM2M$J@#g&dEnTfB3S6r~(vgOsQ9f!VA-?n@6h^ zx8Jf4JL}KZ%Wuh%ns7`-9a&Q;?2{-;q}6f(`cb`u{%2L*gdky;_H^yP;(6;^s?!f( zwatYeDRr;xu&b>z?1U&wA8ha$U5}pO_e;sxcRBxDW+?IZ42RcvX*$d z3!UC@OYv0UYAq{_YO2ZVs&b~kBiEJB|F8rYOn>HW_&Q}y*?paPJi}m_oB)7@A6VmSeL3pz6!^1@?-F1J9NA?Sc z{dJz^k&yRZ(_1#nm8JdUhRmCQ@f!q!2K>J!+`q)H^Rl`S+Vm#&0iS(MGJ$s{`7-7U7rm)>aIxSPWgV5^PUPv(TjP`$h1q*55cDN{em#2=kP~?5l~}y>ha*}CaK;x={@KoNj+V6xB(i_k zeoKis>#wbP^Ie{k=cM$0VeDcy`2O#`1)deh0JHEpu6Woxm=zBt0$J7w^~)OCsL#5e zrM?7-KKt3aebN6Wd3d8Bqd;i~JMK#Is~;yvC$k#l;p z%Sc5kkeP-8*2=ecRjXG$Dp^79R8m$7dH`DD`_(KyQsrn!n%J~4<1XSo4FXPASiE`S zqj|w9%2KlO*hawIvLq(bj8wx$nl{_U&Zjd+iyRS$ac_d<*4V6I_HGya0PE6JkY=#s zwB0ClKlYg84``(uOmuIbTH0**I>k9?GIu-t>QuNWgjyryj z_ElMgI((_luwQ25M1b)2=;+n2*6W;PvmRt*U%5<;js7fXq_JY@KvjgU01-^U8M4y&Ni@<3&h-i< zZA;3YqPY6L=BEXJ$+-NZ2~yI}Mps7CYT2kGbPp0NibaERc4-ku;4A%>Cy8#g99q^F zG$m|KMj6BTiX>=3b?6}aTe+}`#($qzu2O(p0P{fkfOLf)O(V!=~MU@cknbZbTiy#Fpy;D>ED zFmjFxOVPmdLu*>&RzFX&>1`YrSbaTdPPo0N$+H-e5qyKw^{k4dF0hamr&1#F+J=#c zU5)kVIbf^0Vq)s}n(R)INjC17<-U(9$A9}lvjPn}#k0+4m%h{Mfl}3zADKv?KOr_l ze~)m>Iy-IC_x|inOSOGN@O6D4qm@hc@0X?B<5XoL?gz{#WP;v3{#CapKEc<%5pzSd z&mgPs4~r>8d#A0)^2Sze=OcSVe2HJmEcTO-u|i8DZ{~wV88$yu!Ilx_#XQ}f?d6aU z%nJyF?^34x(c2EbTivjn%rWA}C^!#wCEA*}@RS@7Z+5t$74&$a)IAwB${3(XR)MCY zihC%$s_UI(@#iUmBCnv@3jbM2;zH@EMQ;3UsGa&MOYtY@>z~99Vu2sp5!E5Bv8#Q+ z+AVdlA-Z}}VHXD*z%tOSGF2*d+xzD_ZdJZzxcL}KL znS9R^J;(FS&?;`X3&a4=yb3l?2&Ot@?d?TyeZ31B_-z1N+QCSsw!w$HKY_nHUwV8; zHpnG@Wc<)y%Y1UX-v|ZhRJ);X_ae5V%kWl9?x&q^K3T6*e~*`&6C!b#E~jLeE@rjt zAZFYVHNYv)61V|Boh}b79}@uXHrryasmbs|)LhrTDkcU0yZmfF{X4z1htljq!huYZ zBPv8~ckpiy#JfgM4n-FE8B3sPjC7*kwxG5{|qL` zoy(24OI9_Gu1KIj!^bz+r(181#R*V_%}TWU3IhTAzQk^BC8pVv)%icR8s*c3Z8MJKs=a`Oiskd~Td-SS4nZC=gPE zJ_=(?g6puMB`Y?vT4NlYM=*IC0U|4vC)i{C}!TB zE{w4O>@PW=M+{(R)-Qr0*bCUe_r&^M8mX$O%CG-3J=^<}y(b3@Q`|ml4gfRkLz{2V z4#3HkkN}py+0WYp&(C{;Tld~~4u{hv6X`-p;(71M2n4*sl;pBEXXbQw0RElPTxI66 z(;5HEBqD8}uzQ}rrO<|~5z@chp1Z6SueYbQ0nL%d&KH~0_B&l&w~Y_V{0Umr+z-7{ zj5=+-|B3)Ip+GNiRDewzV9NvbUn6^Q8=o6s`Zx(DDn*{H2PoRT_XcFEM_1TWFe`D9Q|p` z41t%AGPRucm3_m{tbo^oRCJF#^X$I8{T+qi<3XqW%M^I5A7uADGQxM$$K+)COux{L zmF5H6^Ra@#29&+ty-Z+M`3Eqh<|5zbA26nM<|RZ|s5!-x>5y5NkH8So{k~A|4W}i6 z?sFaK^p%O0;bfwNd2EtA6ohXPcjJ-aaSgM_^wsI{n6Ds^_~lyd+10lty@9=MlrW0Y zCT7_oEIeOIiBx4nym|EKl>Sp~Cdv3`53o*`I$dyy!m3WjUi1S#^HguRQLLTgU6yy7 z`^`tDQJq3b#7}2!U2NlCsUk{C+^#NZMC-EW8Abi^phz@Q(pd||frZ9zwLcN=G6^;= zp9y?@Uy)dgjK!o%DD|IOoY9`e*Xlm%x$TqwOW1fiag~e@+Vg$jE6U>O1JDUM3VhH%98<)0#H^~Gb zwIn5BRkrzlUaA$V_Ov&y>-?6Z&66l`ULuWCU*r`PyIdl&h7mO2A29JbANQSJAE<%TG%h6C*-WB z11Er9Lk?fn0e~;D#GO*#D3mW530XJ(cWs4$eov4zMU(W)V}9rdAvSz_S3etXqGK%l zBW0;Y@XY!~ALtd@rNNxk?X<+x>6sWN zuCV*!c+J%(So3HUdA>a?jQfZ$eIoClVokQ5cC4@UE7XrRF#Vp4qwD4WbjCNx39#gB zDh3LiQto%^W$2}7qFdV8yH^RH7T&HgQ?dF9!4i%3-<>gCh@|po$0Ok_()`L=xI!xj z#WoJGKfL=E6r3xe`WV+tz`Gy9F?k_i9lxHw2bkoL=FEEHjZuZg?Qx4KO!MPJvHt^) z+&%El2#eOdFiLnXkj-z|9W{-G$Wm2OlzgeW=zij2G1&IXLvO%YJ+X&_VdG?IR~EK<>d$y zIT_#MzEOtPGeyyO#x6kZGqth7GD2MSjHk$%u{IDj=ST~aWX7}JFX!js8J?cT1Tf%Y zwRo_>9`LwZJ)*ytjWyUTY3S&fI9RYa|N5S#JDax_$pwN^Ig84nWd2`+iORVJ4Bi5P zmVSCDjl|7*L>CUZJVRidEluYfcD`Hb%acTrJA6qd z3~mRRobEfv7A;nU9`1i`QZ+79KlD-&%-6@Ry>v^Nt_A7ov`X$`>hWNY>ug`|I8kU( z$JzE9rn1O})Kh_fp?8%~-^Fx$Ugmz8>i@#I&fF89pD4bsA#xhnOA~Ia1P`mBo4oyJ zlE`8%)A{|syS?LT%`5aDzyk?0#{ss&b4Qc5^@D~V$o8}a4czrf5tyftUl2Sr8fE2Jl|zJGL8au0+mpoTmuhD zrjUBdjGD32)Ia#U%w_%m$1(vaU`_k}+G=7gOYb6`bGh_m6ct|ET&hLz;;W&3+D25~ zS4EHJqRIL0XX&n;GD2$)IJHWhpESJcTjm_}nJO}eJm6@fHhyW&JNjD!yAJQ*)|eH! zz<}gkb#@B32(mmH{;jQq?J)%!C2i^=dVWr9)uw7q`})7@Q=@oD7x~fg%UYM+kaf4S zZqWvCqRzDCxC|8w{vKjE-QgH=3}R#k&u$ZlrondNP8+ajw^`~CDCX1coe>0#Jd3g_%PAKdX&mufcq=Qy zRgWinIAns&4GChiG5lTLm^((joJPKZ=mlgmCML(t4JK9x6J(ixatAKoSAOho*#$G^ zmw$2Ou6j#~nxBX$#~ot;(Kue-{VcXJHUuWwvyA?Ga<$GR_OYOIoTp54KaPghuu`4*?`sC9AFtMjUhR!5 zq?VrC!v8Y>?+%UxuoC%gZVA9Ga;gBx+u&}y`$tkZpCARYMqCMb`&-S%YkoCJ))z;k z{R^D~6x0hqpa(E684bi#x7GDV<8z*u0(W~-{fx@DW#0fgfNTzoA`Lcc{QzO7gWhT@ z2U1AD?-)eL>skZQ#4B~1u_@W1SXkdDJ%6V9T1IUX#20e4w`TN~3FmfQJ;3FB&s@6R zwsp*V23U-$VBY5mz8a|}rvMJ;|MHjSbX+e^ThBtwBSTgZIV;!Jj~85 z`2a;r2;iv>xU&DtT-qK=0JJA->%%j2V0_srabN&z>%KXf10q_q-OiwZJ_F9bHO;je zkcNl`^-^ua^mKuGasuH1wfWY+=H%e6=yOE6730d`LAijcKxQ`W8=luZ_0)-LpNQAx z{aE@G@mUxvkT@Vne!qQjqMYFKC~Ja|0W+`e7x8m zor+)P*68lE6}w1zs|Sq*aMuPrjotoMd2XT*$idL<1aB)pk9c zPH%R;`sC!?LP>^gr4)s>EsE z&D4>jtwTt6_x(K0NEsbq44#vMW1!kcVtH`Ox|*F`REN;8kehB|>@IZxl&hV`W`$Pz-k^a)y{KW=_7Pq z?rL^A3!nuw7XKpkwA($BfZ1p2k`;(mJR(?V-Q+OQaCG-bgFr~0Qd67#U9$kTx9xJ% zA4$(3fQ-J{=?E+^JY!QAG_ZGf4KW%?hEny^x1XDx+FoXtj5Ua|GEvWe0(Nl^mnJpz zJ?fEa<3N$T`V`4^1BjIXnq!x{$w)7Zn1w#@#bT6x6zbaiwUy>y)>&~@}!7kdUh;Byx~K(=yzApwsi zp(u*EpHtI|L(~$=sn;nEu_IDOov-_Tt1o-&il8iPz@s>3{GNv9r&3C(LQbstmDe=f8U2FzR4Z0#xHr{c$@VR-alnl0cv0NvNa^@~dtd1e__6S@B8hg;V$7 z(b3IRqaXrcK{PHN?UOet3X}0^s9CqGb)wD2(h?s4$4i;d1vk8Cab~FApPGiEpW8!BVW`{;OT~!7v;)-p z@N(=a1G*xqExTqHk)r5sSpyo zFyH@Sjg*f~O}enCoSY7CDMT4JBuuDy+iA}i5b?8rT7jl_I+&+DB(-9jt5n}c5kp&u z%j24n$YUQZ>*b<$bbO4Bg}V!ICH!+Z{PD`^DvTvjLw65DIU6a-m>ST^=+8ITAZDGJ zkCxC{#LJ5Z=Fmqh{-C+kr=XHTA22z3Y5`&qfemALbY?|#TyKPUjv~qipA>rTJ28JJ zMyeNBEmkQ8aXe?wl?lnO-rh@76bN_ZeE}*UOQB2S#Fv*P zn7GHV1JteAaX+2{`ap#RYjB`ZHwbSGwjBtp{PHnA=c3vHh=az$#>Uxny83(%L-Y^U z=rc|9z3&BZOFI;iz;zDc#--?0XQAF)RKAyY$}?JE9{VRqQfZ6Kd4Np2jz;nkZME{N z<(an*hoVYJv4ac285aB!qPQrn@L5?YXEnX$&H-aY?%K|+NTteV2Ms+FQeq86UEmf)jN1euvlMbE)sJ9}Vd0LDY|(1;b!b8s4(;^M@MJ7d7+BS>Hj_-2?GC`ZRfuGkMwF4GP-PUQ zQM2TrtF+(d!hAxoswL90ff5U(_=GSUUU4R4c*0|pugNJD-@ko&=m?h1d_+sjrN3Xj z>zvaQEbq+z4>BEp^bgXohBT^}I@N#5!p9Lg>; zsGcgE+s2tootz-_D#=qz*2B;xhmwJQ`@uFVkVGearHwm}=y6}60OnlMq=5Sf5MBmG zX>r7zsG|qlXH1UmVdVm`GWU`@h<`PT`2`tEj4+Gop6Npu5U#7?gF>MUU!yvBHKF`9 zh@_DP`mO~1s(HAKD7@THS@+J|*-t;ZBs!%_GI01ePjOFb4!%aTWwnPE0*$|_K}u)!ZlY$sT3~slVzg26!@M*GSw2gn8UKnsFz#M zcR=9B@xZ4?K744+wJtr3n%7mI>y?16hxA!;7$@JJ8?THXFaIGxd!TQvOaIhIwe1uP+95UE4wB#&6_cxzbtohYjiMU{x7!^_s z!5OZ3hj}JE9tf7r^`b*{%)M(BXqWuui+Wxd^9xi8FJnR?+3qcAPPXlZ7!%EWPD?Bd z-yhd6=#o}N+fT%H2`{h&W;(o=a_N06!MezHl zn(s?J(rB08%TfC(tK6435W>SV9?UA-!)jG@6ZTia9K8FC9H#R!pWxVde@_m#Y#)qb zC!6BAebaGj)?Z!g!U|$yM@M*gaR1(?Jv88(V)IARTfB(0dP(_NzO-nWXfGPeN((PA zY#75(fT^q&M#qplrx4qY64~|R-|d66(z|AH3~(j z8X8js4&6oY*>h6(1XVei$l(t9)D-~-WMMCjk#14A9r#c ziLPz9h~{ZeqZ8vWklLV4iP|PkL3#s%Cpvolgfa4u3F@*R? zM{~N=%c2vse1q^!YP*$hlH3sbzo>L`ilLr$(fvV1uQtjk6ci}mBL;RxFbn`|I`8{B)39^cpQF-3tiS&kB3 z*SE4M_!weFSP;=|NZJ(R6VJqu2T&fm zDg^Ls=VGIlF8(*8-~!)Z6B25?o68ru)jJQ1=^}iiKvP}Vm%d(`9=gg1*y1vb*r&a7 z7RYz`h-&}1hhZziS3C9zbrzw@tw~K^J$J0KtsrCL(6F3^uQU+>;CgkV&m&MOI4%#Q z<6WK=3DR(cPk}@h5Y$-7-d@KvgY@ulsZ09Et6BtHc{$38QjAKY8Yi*ooa_NqzN-zv z)nFf#+1_2<8Fd8rcm42yJS4FaG3%Jsnd&>EWHp%T8joE4Q^of{GPoNDKEz-1!(k-^ z%RYY3s0C^&6rVkgKZL^yYcu`+Z3_y%sOu7~_5Z-*Rv3wlzZ45H`lTz$_w`32Y#c>M z>K|GiB^B+`(SdZqQz(P0ABS1FE&5pP@<|Tc< z79N_ah1pP`BA@NC6)^vV|7e6+h~SB)g6i~;EKqqo1Za)3{-0o5jJsj zYnvR{cU02 zrE8W->XFCQQyE%4e4(XPP|^IzkN&7wH4I-GOFXWiBO*xL#?(34<)9*UTG)w97c?I5 zx+ioq`cHQbB%{E%M;~ww0#*V!Z&B_iRRvvPey%ZOOqQ|FK&-v{c^6!u!}!=%NtMyo zw(58tiUJWi>`hWa&vYMjc{Ru?u4Pz_*?2fNf5zHz?c(XaNAOwX`{|-a$~+;s92TkI z<>{{W?YF;=#)&Xkl6+k3d?Az$!RZvB%4f%mQ zNIU#dquQ?~pqj8ZDBF_Pq`(KM7W)>WqO9tt5)ba7(238NVHU(TSDAGf+u%Mc+CsBcK_QWmv|TehJP z!Wt3^GA-)^z^tl{TUs_wTV@`-VV_$Q_6Qd2JpvPr2}^{#HQ%_~u+93=Qhb7iLUQDx znvGY_szfo|wj$ln3al5H7ZK4Y(J$!4@On92`|d~WPS5+6Myu|Q1x^#w{7hsTYmpvlV;iCdpG^EaFNJ|U=wC}34 zH-Ip~{G}5yXq&(s>goPFKs7o9?9z^oLbVtd{#!6HD0{UUu0ZJHE3rtQ+2YI>0#r)aq{~~ zEfQ*i(3IkuRLYHiQpUlu{)$29?Jk~tT4p8P%WiU1K$)Iw$#6A1Xe%-MZ;?)p$M4AuXwX8&R&0wbGr!z#1|+kLV_g75ZZdUpN_pl z%$l;Fkn>3rr(jTEEWQ(M9{W$J3zO6r{)q>3Bb(WJ4VoK3R7&g_BFpQ-;`U`32d7g- z@)5<~{*Av!s2E?pn*WtJ-jY`>hX2~Z%uH8kmwj_!U z(kKm^^A9ft-xDs?FaUp^GM3EnP@k*XQhXfjw$ekn9<$CR zO5#FzLNQ|bhQH_uCQr~aj5?ewVuhT3Q>ai~==2p_d)!rXApDh|3*>+%#Sb)J;o#zC ze=!FUfYwtnBs8>ix0jn;4+!~&EBX1A=}cai)}GZc<4Sho~`G}O0oI=zwXY;gVi%MuUPTGK<3Zzq>L<1E=X z10z##(=!YWERZ7MwcL-*t$+o)Ql0fu|Mnn_2&XLzYpr-Onf!a`cF+BVze8O;vCIN2 z!xIxKR7GmVZltvECF2M&h{zM1Zi%Hh_Iro!m)$*R@8iQH=Rs;;RybSXCxo{m;#PG| z2zWf=PfiHA7%?L$#RsUHd0C}pWY`8`iSj(}zOV9Lar7C6n|0nmsZxzI={*uJ6XJ^G zJgmK53r;lWW&UdErmK2pQ#)gf{}N?QMzC{LU&SXf*P)9oBjCh_GZYSALSCl`UlO<2 zJ*irr73D9F5REM!%Wb#hT;F(gzCk`cH&@$I(|c0QVmm&nSdu&;4M|~KIy!XQ-e*a} z#|IwyM&ntVtQ4KJ@K1`u+@DYrXwtnE%Xst^_KDpy0oWrsEK~b5U$meMWRy|$KS})* zuB+qF{oz4~9EfVn%DD2>!fk&};@#d3V=&m=&8H{{tg`^Op3QB5sO5f1K~7HIc6(^W z_x60{eCN!@$2a;9v>3kpIL>#42so&S=A{DM7c;>(T>Xpz62!qK+{ML3w+$_(xG~d* z^T*JpN|~vI>H{onvz;VWs;~((?{;q>bR%kZR@JeYU~iRwU}6FlNHph)>Ct=H(W`cv z`&N@me{yny87cO$kL>Nl?zP`q5&m_5?F9|csqY>yumKW7heO~=H`F^GY*GS+>IMw& z_DH9m*;4jT1)rqFL&I&uY3iL2un2(#i_;Fe!zMN5pdWrb99XVN@cVz;6Zry_FGHC z3&Pzn#+m&@6&M%@<6k2Bk0S9fWrB@^GqiL03E$ZkHn*b@;Hoq zCV9|aG)v!J(p&}(bu6pZQq0O*%0o3(Qoy@-@jBEXiGe>hqvKc#ci(Yd>C&(#CMNt8 zhiQrqe+W_fo52f7OF6~jS`Nv+KGm@slA2rDc0sV6Mr3FzsxivXpgB^HuP{zv2@}i; z9d&nANW&m&e%;vb_1rfVzSprkJf6(C-#xdQZy2>k^wrav5bt8|HrsFTA!(!+1arS0 zq`VD2pfJ|f)mVxb8MymorA}(`IbOpPo-Cziq*BYvtEmknjo?&=xt$(RbAR7|SJi&Q zq4bxHfY&RLMxK6@DJQ7!@DOjVO2^17()fN??Dc3|Z+GfOVL0iBxN@+ymH9^NniuvQ zo&CWvQ$J9%3pGfS1`+_0Am>IwSCWpH{k5-Dkx@{%CygjJhuKiWh(!Eq9SF1>mA(qzKXy^2^r=W;( zbG;{&>*|!Zj>F_fww9skceIfy?YHxfDNJqSe{5XfRW|-iqvt?j-E(zs9SjidK2T?` zFKgLdY}}CEo~``pT5WH8xK(NUEv|*^PA!s|nYU`0yJ|tQwf*HI6xKU5eix+YnMvv& z1h^ZA6SA||y9dXI#*QZ8((4A$-V8QgXU%)f9w#4N?N$uOV+i>cTeGW|Txk~8$%-Sv zq4w>K=;zRP`CwKUz)(r_PFssM zxb}xnXv3`P>+$$o)ZZextAFIr@$|y=wdY+<0Ldi@{)fd>u=B6*U*F!avhn~-f7+}) z7Dv~huN*x9KDDp4O`z>XG(x3&3`!Qa#2{j`60XlQO8 z1|Y6CRI_QG;r=6%r86I6w&d63$FIf(#{t=8Rr@VoqwPwrwp>_{*ed>MG= zn_XB)<#RJt1!P%f@Z4Y)C_)xeHMHk;j+<-C>8s*~Oz(%}e7XULAbct+>Nv$s9>xc+ ztV({J=ZnrKBZ0Q>(I~5cDE|Cld1Ywg95vZwa;k&odX`qp-CZ9GT&J#t#bzhf6@Py*rjpQ$dq5^4zEQeD-srqH!%(v*L2zC|03F z+3l?T?$@@sO}wY9l`PfPW$4<=fG{*KJwgJdFQ-rWm*v9kKK_VCBG zSb4bZ@sREvKv@fWXm&qcZZ}FR(eV99CUB7HF(NP}&}U4QC3!M#*wcE~apm9}Z+4z+ zvyg0KnynGME~N0>+242fWP-}kiRP8;HUFmg{j7=8Say@Mwo*pPJ9&^!Q9G0JqqKHA zUnnNBih^7*fpW2ZU96a21)KUX`#G5jT0A&Sys0w3nslVT49D$l3N@3TXe{!I1nlC% z-O|u_In4CRYxI}xUfMv6GKSbQVIOc8|B`kY;@2 z+FM-71NwVpHEQb5L3qJ|6KKho&2F!J)5nb)8hwIO-G=FRyw@QhTaP$c?=XVPVM)pboYJuIBewgJ&m%$K|8YCZ;yz->v@c{ zFeEfi+NoV}$8)@MFlJZ0uuUaMRb84i4;4RnvWj`EL|BqmCA)D|a71_)cFld8BBej1 zSxeopQu*h$XOM8NXfBb%_yRt!W`hl&qebiQ?{5OaFq0gEt>!8(PV9WstvNzXwC0ne z_dFA2Om0tCMgUBC6d;qcF*5^AwWvZ+uvk8#buWBp-+4Nii3G&QHF!M=u6ns`gx7a5 zNqT*K!N+;ZGN7#>QHEX2Lu~ZM6i*zc?4~jFGRy$n1C^olBA`E3Ao3L{mdIBs+gr^C z!UPzWgqcWPKJcY5>KVG3|LE!xD%HgjJYQ(EBX0JJ`IqCq+~J*`w1cIorM1xLN-QEG zqD-gKBk3&HBN7m)CXFFZy7oBR2+9WS0nti}*Uh4R@lgEhFX9q?_Yce%GO(=HVLp+tURZj)WbY&X*6t!v26?0v>*P zRGGR=m-9IHlS3HL%%?QMjlUIXrOI9Qu4z6oJh3jAp`(_Ysc`r@9pye+kBv5pe#*m) znpLI+^4R&tt9t_Zo<_G|S_Zd!X}NjKB2&&Xzf%h6XhUL7FE%jf0l>( z*oXBoSd5D53>~5A`xA$|1euMLgamIicW9_*>wK#x9Hh)4ouHu+Ub{?M9s%-=P*K{N zE;P)V-X?GqRTQN2-sbO$u7vz&X4W&MM32PuiLI#&(TZ{Dq6sBLOD#dYTjW`>{w2Ggh*38@;ATniY zpk1mNYlvSQOml=kVauZIiEsu6v`VYX} z0=_`-p9tN6wv}Xe7CsQw;mJuO!Hy8(_rReSD0vK~>;I^b#nlXIX0Bn7J{ zi&{#7f-HLMpi2H~*5(-jv_x$oF^EH<6{!Ks>1&6x|2Gx&iIWwm2R1fK z>RLJg{2l{jvsd1c!}pvK2ffcaLkoFddGy1NQowY;0ccedr6~c!iwSd|2f0pgJ8dex zjg1YM1MCQ#iQL zW>L*qk6Q2LUV;!)Z3HK|?&JcNOZc7Eu#gf%5(A!kl0HvwgbzFCXnVUP6 zW8AYtqPyvOozcd?BNP~2aBDP_aEFaqn<}mPx1_B{3e_3<`AHZRrES-mWvkUiC5No4 z+D$>>^vwn_NIR91VPP(bFW0z@&|$10(9I%h1#^{1JYa)6!Y(0W-Mb3|N2)Mr{* z5@p6D_@tl8f5_0533N;h3xyRdSci+yAKW_RFwNwnjSSKdg56M`8Qv3VkUsZZq$`ce{BKZU2y+V@e6f-DGzZmLO`qz4{1hzrs`$x|p3 zjffE!B3%GDo>Ptnkr)quHCp0$c!Wj1AvBb`vdy1xIMsDDyF^wCWkMtQfh_&JGU1+v zuVr3t_p_)z7)Or3r)srxuzLy-h6roTsIY06{{15B*h=jj6I(UdZk9JBUxi*M&ILY* zDr!&bbFipBLijIwTJut2rAf3LN_j=p{`Wy)gvS2<84p?6tgIFlxcK;6R(fxEo-Hjv z1ggQ=YCAmxLp2c7Ny$K)^wH&k$9kau&Kr2Lo9xbCohn%IkVE{%3!&QF2(w2^#Ppb*xY@7 z&MY$`gBckNwhmVgiiq;@r!<1F8!Vb8{2q+bE7C-P1X$KfQ*EUcYW_c(&N3>?=Ii20 zNtb}6bcb|@bfE+x#f@BZ&73)B@86d0b@Q=- z8r*aV?Sx%o;zsH*jB)%eLlM`3;wjhWlo~o9+5Y(_x)*xhJyD#rU)1nX;mD){LsE%q z>DBEuXy*`cVEl3dv4uY`zQI|XLIxVffMcMOs=HpBZb*uNr4B;|Ut|8$Qxg@Gl@CMfk`Xf$qM5n~9UF@@s01W`OBcXz!G z9bAgcM`9ao@$C5SdVJ@7MY{OnJL30Fm&>VX;s=O|D(IpR^tBR05iFHr>QZolb;2~j z8l2FPsDb)D^Z@$i_E&XjOG0%IM54*Y?BEV1umnZX9?*J}&zUTQaael*b%i81uh zd0$&fyI+QBCI#(hMS96aXOe2QA_Fsai&{-uP6ytI?9hBTnAnQMKM&kef#_hX6xK`ga$lC{^8DGkow>t|*+h;%M{Ho91|Sd0D1JnFLYz z{kTCdd46{TeV#Qz5{(Hyl>{+$5-s8};W~)k?6_=BuI{b6CPS_@(NNd;@uBq@0_hs* z>GXPyiG$~zkOEy|75xvX0x4{|s;VjpY^dY4wk*Kxb$D<_RikLHv1VRC#NqHqTW|^y zdLN(Nj^fF?MhXj&OV!yxFrI47AYGztXkrq`h=_yxF;{^qHy3t{!!MMaJjFVZ==_3@ zkQlm^F!{cUPWiYlNU{6+h+`i7d~ik?a#1waSf_b1h|}zgPb%9`@sVPtz#Jye{!*u@ z`SWLRhc@YpSRo_gTYLOqFkoo?do}f{KD@YqL)GUwio(cndk!rWI^nsv0Ti=F`wd9B zOwZV^U=)CT|Lt%I0}4mxxtNoDRK}s$ZAUI#TwD;yw0nK0S-%M{jv)r+htmB36@znj zcnJRv21e#H1(fcLG#fI_4!op5ip@gZnfV^@`@HsRjtF%*{7gLMR#0RY|JPMDoLBvP z&c)hwhYm>?Ahu64Lhr)svPmUa-#>px#p!Xt{+BPOn2I<}x1}``LJ6a%XWx<|clwivJqm`cW1!!J+_l-bGg+Jl(AB8G-XeiROx9VU+BQY8jj*m|IJ}{V# zW)vKYQ^{|s@a5Z((x>&KRIxBDgv%<20csZ>ixqkEAZ`P@b5dgE{KRDBmIQOI9{~~% zSJjlE=S*I_ah>^n904XaNzthY|fLftXKkkh|TC??PHpzjP4c;dd=$NR%ZOwn1x zA-nzgj$v=P4lDobbo*h22g5Up@*_d}C8iOrG#zBa4hS|pyPSC+b+MfzPQ_4O)lwb- zO;E+^m{z4NlC3yt=xGqc=k&v~{FYd?8UFnbgyEmj3PLKMv8l^og`cVDgb%SFr3+>t zAS9iP-it@!=luSiGL*!?#Lph26h?(;QCw-JukQ8<|{M8cLv5YxLM-(8QB_ar_-_qJhuzE&e{xy>3!QUcR=bMhF$= z>7gJAcrBk0TJJ~fn7NsyoSayAT#wfYeeRT zP+62{=K?gI`A76g`pS--h$|@>)6SA*ui=Yw{_DOv$n8$V; z@wxsof{=SpU_yq4QmK^U&jNSAO?Q?2cu<0p1mrX5i8Ca1m41Wr%TlETJL7N9%-%vV z{H2_nR=?duQwmB7!S?xmZ1G6^jaS0`@B+&fBBDKLeS>2}=97CKLXO*Zj5z1TKHQ?_ z65uu#XqH!$ve|)##zLZ(;7P3s&SJh49lOu{mxaD+MDnbK@Rd_RYoV-EnrppKlMvS6 zU#&u#zF~N}_0hiVmo!iY39~0QVEL14&2?X0p?_dl)i1}-j;5xnQJ^BiA6Q-W#?|7X zif8*VM2_FLx!(Rp92sddIBd7UbWITm z@h@aRnlQ1VL?MOPxX?I@eKJAQA1VyK#3Tffm_ns%90I(89OAxAuV>bVIwsFs214W& zVsvD8yv4-^r{`HRT{6_k!t&ptQrW+m8s1D&oI_Gj6!vc)9h?fZHxM)>XXu$4TP9di zDbANA46butA@a)%-4LYneZ^XaIgK1syb=m<4*y=pd{|7POG!;mb6y?TTUuuD8(GH- z@_1ot#IN=F>iV`ula85Bk0{P+eg9&sj&=6S+_cot>Bru}U8;mqDs3pNl<*;rOpnMG zz7`_-W6$?ZkH}lI9L(HIFiMO}e9{=7|M_**otlF({ zB_|a^%MIvsw8`xkSNSHhmPY6NMy}TdH^BP7OxLv=Z z!w;1I#xeZ?9UpH@k4LM#9~L~R&}M`8d)HL86f;qpoMg&0ya4)IRu*wY_6wpXYNB5` zZ0M0G(zWq&bW=mapvPHjaM@3^*%lVO<%t<3kZl8Xd8f#dc*4e7r$p` zS660U)^MAp@bGYKw^*B^O|{7ybxrNf!}`(#KA?zDLMvzcZ&I`V1_=qN+2d4)-|ZhH zVY=DWO zO|yJ*VP;^xL(uiBD|3~P@6C-X$Tk&<6kVmd_{`ktbohp#pA7ed zJS!GG^y95dTrGaZG7g18m`pl>3Lz${XD6%(Tp&8$&@`?eIz*kn25m%ORCx>baZWUM zSkyvi5)O$$)hT*J0V%03bU>#V0s=i98JbX_v2sXvRgp+1w8gwGzId)nNFHWrdK5Yl z9YO)|pJ_-G_1rz0k8z$BR?-C8zux!PIBhp_`&~Fw_WAz zWI`e{eo_n#0Hb@F7EeP~%@5M32yP*k!)VLwnE_zpA2`i=q_ z4Q-yiykz8LLGx_J5_74>eRCUd1E!~*ivB$c;HVhP^)wvcHAl{|D!xfP8p+=M=g~)L zXnQ}>W#8vQl`tq)EDfJ4VbJ%pO9=Lfh$v}f^M2Kznsw_rNHM?!$B%o?VJq{yi*&#r zW1A^wYXgiPBON>B*16d1u2791@u~;O=$@W6t#F8zEYc7)P=k5(Xmn0S*qF&g46xs? zzDdjF8@DD*mSCr0-afve9*PMYcHpe|5te%mv)}lO=%OTHvaY^ia(=pddt2nt-VTsM z1@8O>K!L8e0s1_JxduxY?pkqAq5l#kr_PG{*PC!4rG?XeqY0f4vy9nqcEi0~`n>p1 zCrKANXn2c|fF(T3E2B02XvBT>~`EgLbM|uiWl~&a6-jF`T^!x(F-|Pj=zi zXN0cwJdsI%{Z-*ow=Y=U>D2FR(oN~dCy9l8qYDREU7F+Q`x1Vn?m31;C~_s5mtjj8 z7288fji+p&swT;SLwtPu6W|0k_+86h^q1lE=z_|&*nVqO`QfZ z*~I3{w67V%=CE34@01iHcmqsA#EmfPBDQ`+sTH9$O8ol7eoTJfJOEEw>3VxLzB1JX zM!}#Un`f#WSza!)c&a8o9gVsDd z$jWaHX(ZW78?aIJfy@tjx#?qJeUG-ZfjQ%e0Y)m9?rVU=b1saDdqlcc|0e%@o0 zC>i$6-Gi7lwiS2jg`0Bf@`CxmZJbB2luDwCrx=A3ja6_%hZ04R?5a#5RT#;Qv$Orx zyrScRHa7~}zw@cAr+6?h{^+ymFq$QhbqHg<)DS@x2DY|BCQefUbRk<#Xi>*ia;tyT z%0HhXOZ4SimzGvPW6#1r&UOm* z4xYCJNsJoL?K`0&Gs~(2i1K zfo3g1+C`|t&4}wI$olfP?!5{tD=V|VIo2>WHHH2DrqAK@(Uv#-5o1(XJHfLS`>)w2rXdn_k%KIl`bgu`8qe&Qol=g9s@2#I?IZ1$!z5)K#wXgmP zWaF(_ZTX_-UoQ>4YBWOY;kq|V@N_!wQS*&h`keJXS8b@Xe>I=_x^-!}5);Nwe@2r7 zcjhkqCNWx_3Ni&P5sq=w7c|oq!ozFV9o7^6JU|36&O|BD3Kd8a$p_szIL+PHGR6I# zt**`ZY=J&TKAMqtEk3r^vLw?bWxbQUKzCf|+rNrcxYtG(lW8A6oTa;xPT&&3~JD%iVXFR$Y}OZboH2fHMJxIKQ# zCr_1Xtd#Uh< zs=ifhj*2VIiQQ9)d&~__A3wnP15rrbTu~GrX;CWcTh=hdnDEgVS+389dnIG?sHVaF)Jl| zC`mN43MVeV2+CNd?;0cCn)M?sGx%-3Ni+K;aB{clRT$0(%8=EI=hnyAG+pA`vj_f% z@rW&{QRMO|LEC=vd_gnW>#mxQ<7s|5_6b>rryn`_i7hMe*!iZNR~qm;{u7ABF6=Q7 zp@wq&Eod^Z+dZJLm>pUBUdI{D|1^BnQ}L&`1l8Q3Eek1nbK-rHJZat=>EQW9#%E|) zA;CqXY$G#0%LsCjurxV`%TObSwedNfu@PE1(|>HO<`1da6t(VW+RH4TdT~MwI6|i3 zByOnLI0uCe8(lQ5QwVY52n zunXVIDyIcSMiKX(MMI%;kE+*v)bDnG%3uD3j+L0aU@BZ7oHiKP@l3f&b+9L6RPU}M zeW^)S=f_luEe;z_O^dyhph7(w^?_o?(*q_SM)8qB@&QGn^KX?-}RLG z8#~dWa@fy9_k3!x*IPeAgvVByXcg{>rm)2bRjh6BZzju3)r9pG^qbU*IdH;D?z;jX ztc1uY(dhOOr}i>xW7%2N&E7jXqmjSfj_|vSTa1rVyObwzzl&;O+b3h!WqYi0MRU<# z*4M4NURphIia)g!{F3(ir{e^MMnBA7)em|{-_b7Kb8K`^uvH42CuX$%lDxTFyYlij za=l)?7{Z3sv!Z}(T~(%;8gEz6cR6P5t)qdBhao1-4?|2adzg;=l?UCx?iYX+gw#{| zaJ)J-ToM;GH8COid(-J*n2VyfS5fnQE-HMod%ZIv-fD(NC- zUMGhgdCFB8t1o$!ETpWjg#&@n(&FKML#x+OZ4DTY?)N)M)L00<5X3PO-?OEPh4QzE z=y-I8jD3&HvK&$+7yM?cHyoXc=rY=pW4}n@_ZiGFbgk*pC1kVTJwe@sRH2n@=XeBS&Fy~kZSe{MrcQY%`@kN)Jfx$S83$HS$hus3KCi* z*^_p_M4mcLVX*m%DVRJ!UmTE~o*!zRPYyaSd2Ltz^psY%N?`|q>tc?&zP&xj6Lb&y z^XD7H+FqZ)3sY%nX9x{=XGqgGYU+8D?^rONd$43lIe#$&}_q1@#!iFU- zRw7*~N!Y5|=~sbip5m>Srw~&D4U3LxT>G4F!AT_2hvWDz>Lem{FOzF<^Di%G>z~Eg zE%Z+RB{3yfLWvdi7%JN2*7%%MAL45j)# z(#3}_%BGkr2z}Voc0lF_=rL3^xJD2m&Rq=e{@C59G@5Rn#a81-dOu0`r?*{ErmNJ! zG@SN>+PiQw>HP3n-|_W8zk%#N2=Uf4e+)t#XK!blBk$7kHz^azJ_(V5GXdcx5+?Y{ z3#M|Ro4(?OJ&3gg!tY8&jCaNTF~S(t^GfLZzP4T?Cdp@+I2$HDB%Ub$%+w&yL0#Oe zejnxZx7)z`;nrtpemFdbUq#IBv(aLi6_zbz!|FM%M%mV)r2wv(_tsA#inxM96$?AN zz0f#$``uxjS@=L_^fM&n4$gcyHC(NaD`(7XY$KbU5Nsm^x5$QGgt>)MxmFPVsnp!APuPkWO#J+Q6$3Yvn6**E z%?KSppXT!q<=23dfjsAQX<@?*kafKjADtL(~he-m?u0oWQ;_U2An`e%@K)|+*2-V z%(2j;Kb(=ms8B$3s=vTq%fdn=iq0(%?MR}N7wpue*?qzu~2@d12 z6t5SE@2T$)qPgAlJRk3TKg0S>?+ThP1PRG^qbLO!Tq|(5Pr@%H7E=iwkR-;7&~%e@ z#==1tEZAlX#}8*$g$5X$pbeUNSP}4LEVHU8p9)RY@|>OChM1z9n^%4j-fc z@)whvG@4rkl_(*YKH**mHlPl*0y?qFvKnepP&Q8SQx63K0=7HZw4o-CUFdypD70@ z;7Uv3UUESc6svm0PjW_DWs~Dg-8uM|N&H?D2qjN;$Keq>NXce}4GbhwhSy3B3!Wvm z!2FE2!KI}sa-kh)&WhCu5fC^Dkqax`{&L!~P1opn!RKkh@~c@2l{y6aESJjI#U(Jb zgjy9rl*Hz{R9#p?7Bn?dDa=p<(D;fdiu~4Q-jeI4Wlss|PN^e!7utTyhu@b|or5-1 zvw(Wfzy2|Mvpy_d>i#ki<5hZ)LI+Yn3Of?6!y7QZe=fyHG#qg0Yfz`TnDcp_3ovLD zER%tCdeLY|5DKQ5fv-5499I|{zPbt;lqnZZsiCnjS^s?D`d*QZ*1$UqG6-lp3Y5S{ zo*|^y>5e5L7z9ij4{yf9bUVCJEmx(+Krk=2*Crh=s3+MnE&isGPfm>y79c3$rNftC zY0`Be7W13mn53p?;d25_035PX4y#S%1SSJqpp~On@qG1%kVk!2iv(Fb0_Xw~$gWri z&QBxibOtF$pV6(@sXWIhX=|VaeQlQh3sQ4+O;pqKU|R`PqOnns*M1VYqelyfQz}fw zN;FB~&+)*`QX#Td)~uOuW{*kdG`uX&^!C9}-2ur@a}>yukt{Hnl^sGgi=Wb2y9 zi1<0Uk=^;&JkRRu2ZMDMK9<4bD@4KUe$Fa0p!Bv4nwe1{Mctles#o7Uy`qtl7J4fc zIQ<)o3nNBNY!R10)Etw?r&CBGiM-(cpZ7Jzq^n{IJKfs~=CHv?f{FUPj1?Oj@H_%c zwh(?;=5sxEi1H%Qgq6PI{w|^~)n}7Z?KHKxDD?F!$GvuBf=OJ@l^0zz1^)5~_irA5 z26k#N;GuiP#i^6vC3cLKu%5kISncf0?oO!!rGS3z?cw3yngOt%*58Uyo`?fZb?aEXG(JpJUfh-146~O`Z$!j zTG^N!cG^3O*FzF>Vw_x4611#R!Rm?9dUk|MOG^=7XvpsW@NOAxX}7py5*t?hBx};1 z5=mb-qZ=|@YxQ!jJ0n7b3=1ULkqRU_m;GWR^UGZ?2hmV`o-=f5aS>?V$dlN#Zxe0e zhD`5gq(2!*|5#ns<>uy2PRjzJZ;2J73}AQ)bSCSwCtB*0xkXLEI!&${oXE7av;dsN z)bb{;fBoU>@w}j!*#{*lQ!~?ZUg3;TYO0veI_y?NvllMQ%acNTrz@;%Y-mBm;1!dR zl~<(0nuy`LWm!PvYvHS_s{^UKmX2X1B_&tQYqJdzD;Z7IHdAM{jg9?xcWys#(yln5 z1W|<>l^46yIL`%9vkemrh8oWBDowP&CJR==wac}{kReFI%Gn?WuXs_>yRl1bJiM+3 z>+eKhVhu(|D1`3GKq+2zOmA1rNY?7}{l3z!cyC-dxbeIL`irarnjos71{QE5TtjxsApamX>MJ%S5hRm`3L!nlauwCc}{&nrj$v95^;O| zIuIioj%BV4%Zz}5M8DrNC70KYPLQ3fJ{Q&!5Yg^mn0A2gMUB2}@B^F{^S5ocVuGe>=&@j-i)? zoSxcdx^2Q?C1PDP`@Uqf7+>O4=(ZwCP0UXA0}O5iJPF97Tv(eMJJo4&yDaAb+P)h6ylzO3<7LVJS=H||)Cwv@^q0m0L@z$1%h2I*l4`3r0`Es(-yJvEf zqzy%BriSj};n5BJqRE*lChjJInJ*uiae|c`pfOb~Y;1QADm@8GpaK(2ZjkZwoxW05 zw!E+h)~i@kbGq%nLAt(1L|HL)wTQ^{`-qIs+rIYPH3lo3Wm7(aFTgC}vnH3CdUUsn z(mE!kaq)0)tD!?n9GDM0FhB=xPY`OO)$H;>&}&v$wStHqN=hCKgTln=mJIe5;GKDg zjQCmyfq9EyY4Sp^olRBe`6uq0Ldu4cFuMjZ!gCDA z`PKz@)yVYhH~HKJ)6orop-I?3IWci?h(RFKZf}qs$ANmw^Y!F)Hvlw0v_Q0X$RF2% zz+$=8iE>nm)^p7a{0lxlZ-0-p!{= zDFCS33o?N+5|A=cO8F$wubu*6<6#5vZYg15NZ@$@!Oq?FR%&26E-&l_DcmItHm8Zn zN&I&Ru`e&)sP-V-t4>p)Bz{73*P;Do zn$_g{nRneR&gF4C`FN~+=IRYLC+aJoxv=ots~)pE3Xh(Ej2lrgMqJto;o0l4(es*S zPM|r^NQ?L4?k#{M!%o#&DN7A;F3<^XJM1i~sH%GPeo%EgE-5m%bp&$NP50ECjU)9P z3S?)2&R{}aqh^J%r)6A`)P9s|>yE2_g2bXz$ESU?$g8h^Up&l;;W=(RpeW_>%^Yll zYWGI{W&^l4*Ea-LxxEs#3qw7pTr=+l@W+;<}!WJ3czyc(_i(7*sh85C41q7hXJy zV9U2N?I`$xL6iLQwgAjF zYHD5)fELALKtC@qHj;A`E*C*;0#kW7H9y^7Qk1njSWueIbIYIvtEriKus`47an|yq zt{mGxv)$YB4{5+>SjpZIdvp6}%lbhecon0FGtkn)8=)Ve#ut?eMLx@-MKkLxhz4Zr zu?bd1j^p&<6&jn%$LC_x6Hnw%I5Gej4qolUgx`EhVW;jZu~Lw20u@OZ36NfKdh8+s!8+K#ywCj!tMa_wwVrLc^8;)d`5%l8 zQ|17{_NbTVsQvqY3m&zfxGEk;FE5)oNE}ND0?Vt;5F~wR-&Dj}E5=XPcs=z0y-MG5 zuVx+dk`ox=9UUed_x>wFwOwJ!hhfdG+_o;{9fF@Mna7 zPF)(RzyE(N02cB1;vA#Kk4Xb9k~#XAzx0Z^BBAyEYuLGK2Eoa=s+y^v~&g+3RIx0QvhtuG_`%~d4Mn=}| z?PJ7HWl3fOVprDuV19y}c+)B$*qw^^#qe8O90v*U3+|1MHes|*PGkXOu-L@t$!!k) zL^jnPuV14J04!5dh;l-^hh7KyZ5AWT^_|$S`sM~B& zP0_I!9~j7$%a~jAYw%&iWq53K(vtO!bb5DdW4nSX8TyXa>;tx7C1(&7aL>9 zBAYmeX@#w1^?U^Ug@v1+2HOm45UmItVspxcd8Dz;+3gnFuZCqSWFw5~cDt%+Wj>7p zXP#;&QM*RvAuC9yrj5K**)E>>84y!AA!E^l1A@S-t@6@~FnaJTB;m##1X zDKRxG+CM2FfpC~4v0Dimu;Mtp{s@StVYOJL0ihQTKrtenXm$0WXG9c_buV9*zEiMV z)dXzT&0dEX4){~*+WESrF@+1U+_?$sWnC6N{_1Vsd`S$txtPDkHK(ju;rydP*$M_! zA)NpYR&L->-O<+iRM{;#y!Lz^{2Owq;MvZmFZ=ZHa~VWW45|3t&Lt33hlj(zGJeN>&HY_ywZQ{+JI+0GRy;C?&AC+A8Ot6Xyvc)L zMPt&s$>Zf}f3VZ__ECcJ#=yY94}`AHB9-T9mVO(=(%roVtlMS)^aKmU`)P~t*AZcu zHB_{j*%PTMb;2C?yoXvN&FlLo|JG`h_>C$9`l+FESt@zsh*jyvrMnfw$81rF1vDsP zgKP`-57q3X9~Q?V=>3Z^q#=zoqcx#KF<^|#VZ!1WS^4Wvpd4U~=z1-xf>3|J#82sC zM8Zl#3kQaW$gtwzmSTRVc)w@C@9xJW<#_#mt$Q%!s}#)KHIXTN6(Z6xiRk+@Uq;+^ z^$uLW<~WOD;W8x=#fY9j3X52!N--d@AlW3{#;AwZnb-{sbdM!7b#o(#=%E0v%Pn!x zJnMD{pG<9CeY;6ki23X9*h3~9avNC^p?~rUOF3YL{QY54?%S;mju1)Q<kZn!Xr(@UgENwmb4blY7ge`fXtN^(R})-+NPk2W6c!$qI5SGJPhz^? zo^mtacq+H5Rsw5jqw5JSSm{vsK$QpL4*=!i9(>H$^~BNBwcbCrO9X_c2|};nlcise z$0e|$_b;(xrV^|2o&Q*8UqhW}P>Uov>qu*&SXjIJXJ_QF7?P?YPl&Vi z3X>!QyAup1jKz*D8C``)4JUXc8jXT^Ok$!M5Juw+y%b2@v(c;+Bw{?lSb*sRgfV{k8&uMy>e7tJeEs@Rb$tR zg%v(x6lon+Im9KkL3*B?N5eU+D#S;pnbd?JAc5xc2ST&sUzJSW8!{5z8F47@%QQWs zatl1mH~#)dU{FA5v}LrM-ndb~nxO_`$%=cjtAQcscllG%0Na&X&Sm}J6T#m3E7SUH z>?QnlPX>Fs^?a2di0Gh>YM=#Z_HjXm6&evmXz=>meh9@%`5~lKyPokuuW#5`Ms78~ zt<6XBrW32Tb?7+&vuz~M;E-z%yEW_uP!1lPQ<81ATPm%nu)!e+c z>J<719Ex{>s8udUs^1>JxnD+bNKST_Mq&0^+wMP}Zrop}^&2{Khe|Jno(DeZHq06a zRaZ0FM}m8wn0RGQ0@$LG$z;uY=&|sAu%^j2gj*B;6j^R|j|1P(V7=1W9TD1WpG@xc zW-%kH$@J%hd5zPaoT+Ky{rPe*KDS$l|2yPdNLh5sGOb^ct*!jJPwV8VBZXr$u9$~E z&sgE%smvg^f>fN4#CF8#rqkl#8_Yp@#ny4~ zo<;q7FWqu-=Fa*C5?xh@OPDwz-{}4f4%Qy6O@v*gOl(fw`r^ax0|_*R z#B>CPyM5a>EcR*N9=KT*X3YlCL&LH=+de4-DWdT(mLiaxGRaG`-}75z_e0^`vlffa zvdLH*TkkfCV^?=KRFuFAr&dF_{mvlO(yuf9sa@G{d6_pa8+PFa;Dw0d^A3-Rp$DGv zfd*5a_K^Wez>n$+-HOV|7tNb6w6}-sopwK(=82x+^tiws<9AONM!6%|XleSIkX{fThGfRYK~^|iJNX@+zM>dj`8(cI z$X|(<7AaPx$=3*z77Tt%F}6=t0F8iA&?nj9LwNMKv@c{x2z(H-&Iv$Zjh z@c~C#Sw#lRGR30Z>X>5Gm$^Q|!FK%(}Kd)dGjWB}g@M1T^wp(>(>L zYWFEqxh(#b4E#gv1zPOIxymTV&2EPpx`GL7`};u?06!)MWn@Z91~H=0?(Xh=xGuug9Bek2zc5&SvbbsbZ8*Ez|}yb?{ySi?*U1 zNPn2s03u&-BpY5mxY$RouD0H|9bI!GI z27*_wS}bSIZt=nA-Ulm;tw%>=4@MUTz1H2BkAniMY8N>niV&@o_x)nb(~EYPor6O) z_Kvu~x|f$6_D6gY<Q5tTP&;aQUYr}Y#mFo6HJ(1uDiV23Hx#iF;EhHN)C3=74yI|$H#n<2MWu^Rg!ipdnP+w)UWD4`n zvf1H~FZ_@ao*sqYKKV=07&BMX=R+v7_YWRF@mJg8zMN$k{Ym(u?ij3ZZtn|{IB;~` zZm^r!D~bf%g1bjK>hfm%TdUk>D`v`Yq^2CehEVUc$6E5&rii?v}o&3a{B8~b8w+4zL z70cDQydEGK^l*w&aKB4jc5-BHtwW;JxDT--6L|Yt<;|J*FwNe{m2jG~ryVc-N-E0y zmI@qOafLX00=)9I6Xtjew4c~4j+WP&ndI!`Bla?Rdh^5y^D9-&te;@sbC``AB!K(R zq;X_lq`+V`WtP6Ve)L-F6a3z%sJMJ0^z(85$CR|JEq|vEikd8pob4~qk8V2&YLc-5 zbdro3y%jn-Y0zwal#rvn=3M0SOs`@l+L2kqta6H`5+>i-evLXWPp0ejRTkKXMKB z_nY?i^;xjvf~!xpLzkEwzCec`Qg4MyT+jUlJ(TI@UNkLeFJ1{O1P= zp8FQQfOqc}5P{RvYv7AK-@rocUUGV~Bz|AM#bD_B zKCZvxXfIg;3ze!t;~;tsoAK+r{J8lS15p=F1HYW~)#~G5>_qW_vTwRpQ29 zq#74meFl&U>#R9nGK2g{N3c*sOVmj0;bs~1!^I>&3D(Q8NS4gd7!Q!7#urY9e%W_| zA(*w0#Ei(P=ake-j#eU8Jt}6Dr=s?&7-tshqJqGiQbQA}m57Vxn#tmU@;-s$)Se|{ zgv(KnpUn?2{u#6%5{4ag0%d_drKI9abTtF{GAD2klgFX?beq*0=>Sh4QoO8x$m)JA zS6Ym5gzFoH@lH^}l1_KK>#~GEw8&sYt@SVFH;;$Ai>Mbg2cc|MIeh~Mzt&b<$r=eZ zrEZ6ydU&{Ruz4SqXrX9`L-!PCLQK)~TtZxlH(5giC3r}dy3u@*ncRg-a*4Hx7mDjU zw^wvBoUn~bRB0MnubZEircpxff+VB_6UkdS=eaQ6(u91rnxrE~#2;j}2qRG;j&TW5 z;Zz|Vp);gcvB*h?=8mYJ%#njiRR}iL_^!0gMvWwbAO=weMTHsNO<(u@vqd*ocTa%g zXWAiD0ykWxp&Yn1@EQ4oIRJ^d z6A|qdx0s3Pu5&Gk(NReK3!^prO-fcd^bIjAtCU6SZOfTrsp|bv+r1TtyV0~zuAso6 zWJ>5a8xCiy)1*JF|MQj6A2nTTvWjMiIhRrB9d3Ep5o&|L($dsXpVoNzAJVP+d4$Ms zs4%TjLDl=(q12M-@v2aQZR>^m8VxMJXmL zJH26Mqvz=JV_^U^Tj~2d-OXkUWx9fdPmA@5nk_*CGEF@8igkEF#IxKos>bP#)T6dt zZPq|{; z@*iw9Kaw9iGk)e#BiO>R6w{V$fC*tGn`&yTAyuG6EbSz&?70#&@+0s^kkt`K+1}&Y zKmNA6`%i8s*K^z>3$6K$S$o!@=;Zu5Ws-yAQbCGxX4j?;Japc)pKf)R!q>)Re?F%V z{~rGCOf80$zO-}JO4v_>tklGcnzXc`Sn!>y=V_B~?yHD+^?ymI|gbrRGK)sG0tNj7#j$%2=sex~U{#9j0{M+~2Tn;~`u&VTrmP zT^uU_3q|`j1+&fx%J6O!WMl!57@3;wu)foltEXYOrI(W}#%>sOPvBTaZUYHYYZn7& z`1PNC1MH1{(h7|rb5Z$%!P6BFY+UU=fXi8yGd6ZdbF9bR=_RPsOi99LYu%r0oc{2R z2QoJ#4nt%o!i6uQB;@c1ay5)hYOeDtCf3|3FYTMz`(-)XeQ0hX+xn1BUoe-42@c|h z(Q0+{+%xV2PEJS4&W*A+f*(=m`1x&Hgd$i_Es@M?=26W>i|h9U&0xx*(jH4iH%ygF zqA94kVI?Q&iWb*1Xfel6*AMYyKRl(<^@Iu%2WZBS!Nm6#VwoX&d_CE-8si(1{`XfP zrJ2hQHo389exJ>9rhSf2UC&29R?SC@WRmE!NJtY) zOLGj?4BED62ClY=U`F<``RV2R*H!o6+f|>jFV^v!%fD;!`M$9hT{*)$p<&}{1~UcG zNw*x^@T<*O))O44(j9Ui;eTNQ8K5VJMQ>2oAzJPup2MBkm%&(F=Bl_>l^+xYteCv|Xxx0rFua}+{@M#19!@$wdH!h0Wk5MynznYMmzPYn?XiHVVOyhHIa^x31<)6QCYWj}I6`B|E|i)TB~SyB>GEc-;)@J*FkHaI z5cSs+o2H}Qh+TsewdD-%D0eKGsFiRwB;w|Qmb*>J2Q=6}qbp~RU}UwN+}N=*l;m|1 zdc;4PglanjWqz^u+DhqFcS7#4Q#~1s_*tB2#l+*UF+(jKXj)oON|@1=Fxp`3{d!8f#-^u zu7E@&>sdFy6XcHd%YHOhIwoScID{|w-|Trj zK6rRKa~~2XMsuujZz0L=Aidk7%P7@t-wlcw&2!A|lG;-z0gYBsHSC4vK!T-)%Ll7U zhv$du(-i13jyLH=I#g&%ao@y+>1OlYw3g;RL2Xu6JN5*qR~8r(_t0LMQ}5y_GpLoo zLsr<^GN~lHBNAIP~N#G!R*&|Oi}CrSgfOf zacTiwgi%})KdRvflkPo;%cBG`CXz7Lfo9^xQErXsH%Yg3=a;sgE8?iG z1)W@xm#ojPs`FU)%oL=GZ|w4aH@5d66jd{bDX;MSIKeMCQvY+`T3T=EF^s&FXhRo1 zoYCZ3W4Gq5+WC0aGWHI^>^CT!L8O_9+q3-=>gmD3MpE08N>deP*nZVtotBHe{d96z zuZfZY84sK=xB8OPY7ARTR46DY)R;L&W6->7_`jOIG9aq&`J0yR?r!N=y1S8Bx?8%t zyOflc?h=;n6lsv|7Lb;bdamF9@8QM1Wbd9c_sp4@PdEy_ySuoMUS+~f;IXh+YInP3 zmQdXbo$9X5@ixYVB{;%r-3_S8Gw{tQbBr#nfJP4g3Um(4~asCXkYWS{wVj2PqI~_xS(qc z3_Qcs=Le*d@H_c19Ci}bT5u4ckETriXo%}u5kKXe~*~yJ(_LO(Je)4!N zklV;OH-iYd6Ug;FGV**8rq;6!f9my~ZlAorh>JFU5_T3*-DV9P|5e|AxD({Z5-0wy zS#$8=C$&48QZ7P?Z7%Y4^x52RC?njeyFt-l7XpkU*72CIPx_EJ9YJ=dTV^gt8l^a2 z7EP65EH?qQF|?x=PK`FJDvR}2lkwK{IE2Um(M;n&tp43qMFHbjo2<{fhU6RCWP&5_ z-PZyGjb7IjStcRD9R{*>jB_evLcL$sk|bo#5xqZ%mN+E;2=&4|Mt1?Jd@xB5tGA zIDXolUL&mn&<3$`a$2mu-IwjwOp&V-8u{wJS<%w2tiDze#m8$sChei(E`g<4)G!4g z6jme0&-9wwIT|==6_l6GGw1BjvCbMHy*PQ_pNxpgjY2c%h|s*F?`xVVI<_*EFpn%M zw5rZ-o21c@0Moma0}+OEmWZx_HfQhG;nwGtp((4CJi4PO?_J1L{6;#p()<&}TPEV` z)1B(*Bq@k^_{Au>P#}$T=)bej2gbub8of9uA2vvY?4w=iSN2UbD;1}KBcVgVMEI>x4Kjy*1w+1LwgCDnV_bA|x@8JX*^fonv+4jW-(d`hV_;uImfBm-1uFk6zk zK?;TJd93rJIF6SxHKEAYfp|%E24-C;40vLHZ;d)xhKk?koCvCxnGj?YnflfSYG2^f zkGm{lFJ^w;mWiteW_ z(JfIOP#-S*fO#Of%;PEoL(gHq!se-|uj()I&Z*c6FKKMij?c~eH|Kl29Xj(2&NpK> zze8?%0}|xU2Nca*g8$T=OoGqE2<*jn}06w+Llt`<_vHh88pSwK>-mWHPnlJKHUJzT%$5 z*#S;wojpzeb$ERxjxpD1q|?}$A;dBXllb!O6M)b9_E~E-PmXp%^(Vb}nsJ)m_PHoV zmkq-=c8Y*T2>cia;iud|_Ar{h$8SH^f1RBN1hBi)JLVLvQ9Ur;Y*LxmK0h%es!g`F z4IjI$$4hOyjZU$cW_4xIZ$a+p3)pQJXJi^rBlhCAF08$T?6o4*C^wQMggB2zYrFWx zC3Z~AdtOUp|34PsORywClgln#CP8p!6g6ueY%p49lf`gYyOQE2akzn|yb@fo`V&57?RV+Ky8<;vFid!g;ZID6O&LR@zpLjNft1W|t-P$2$NVD7;n z*zS*Gr^YpLO8P0{>Uf2NV{;QsE8$Vz$GO_h&L!Vpuj?moACs%r@Qq2v4?gstJa*Qh z&Kx0mS8xL_5&(UO;oV@eY8UwCbzYBNii#dDAE7h&+}is{Wp+lr^*rUo49Q_!xI}Yk z0HJ=;h=~aDz?Id0y*S9}oOUb?+_39Bn)a1aXROeUG;3Q2dwZnSXVitXxG#(RSxc%$ zQOeCXI8yEq)%D15Vp(qv?w$11^L+YE^+{=;Z6gE!nyuJw;|{VGDCOA$j|eS#w_WLx z*NdkIv+&xAb7gRET1gpOaxQ9%4Wrjl~%^2HImif5i`Mhg`c6SjFC71NE1beuGa!_8mEE~+5oSG)N zdOaSuPG>v*!HZ8qNTMCR*k7eRe4GoGCHvVV2E_nmKCX6no?t@dY#h~jKwQ0Es3}hX zDSuks9P57;wt#={SNP$XEetm$hlN29XsrG>$wn=ea-ncR#80H_W7>Lb)nEIbcm+Mx z8ystaaX<4x#f9xA;6!rEIHM{qU}e?|9nAdYuP^7DQ*2A{BCI}*tqnEUj79Rb^{Lt7 zxLi~v)NSduczns#D7e#kUoT|gmF3@;07W6ozoTM6<5vv}7Zx_D4p**i_M~W?k>Ge) zX!Xycs7(H5{2Bz^>0@jM%GG~SjJMNqqSNta0CDaUk+{BmV>ST(%fC4ck=Y~xUcCy4 zw2W-NNnn`Tea4=Z3tX#?hN^e+ojTGB6J+O}IW8y0TFKOQ0Ks;^x%Y7-t(NZ5ZK~2` z>*-FW*`n(}|Mmk~kXf2y;osT(@9`Gd6r;C$wlCeXns0Y%A*S#)WZmh^Q>@rBc$)Cw z_!iR)#_WKU#o?p=GjL_G(^O&49z%OE?wd$Ee(Rd98OG-A>-lX*P{-2o>k9w^{Yv z>WZ#YMQMY?Qg1Vq+=-{GtYtqPXoh@|zC{}P_4-gA8pUDd;zf`k@ke7A#a8HTfXnfF{A@fI zgggQo;$t0breaHStI0kB95TfjP4nfm#lY4n+<@y-bE|06Teg9u(!BKly?^ZJz_#aW z*ft*xA)-jATQ&OT1x8C5@(lELLt;VIkLw{HjP#(l+9AMoiQs%6ih#6r`p0rl&ei`d z3$}^jzo;%0Dync>jRm@TfPFSu@WVh*(9`(6fVZ7c<@@GwA>1#jT^>w{<_fU~$Srbq zNdfC^Ic3lXHNjmE!c#WhExR|M*Z)FWWA|MB4p`^?KzKxPI@Fq+9kJK)x5P}7?4w}< z_Eb!ZVM=f_x2;W|UM@GNl}Adwjj*Q``b*v9H{!;^A-OORCF}&U!F^5UgOA4diIV^W zht`7hI{!_+>Eo`XuO8_Cz41c?7!HC`4Vn^1*GpnKa!o#a;^Iu>`}??W({C>YSvlu& zm1eBQ!?KuZP3^H%j^P~Z5H*mWkl$iz~_zjtJt26Qc+e~u{ z6(P8Wi3e{onqnaxhJp^V&m`$7JGm0;`1m$>p;bq58C4?NbOcp(rNsNZVQWH6@ zNcTXU!n^&Ddy@rs{6*a{Rk|aOQtyPS=I4do<0;)GV0ZWMF{BAy!2p}juz-I& z@UWMe3ntu|Z_h=0#rbCCCFEOuYT}44s>LPQZyWV~(Gr1O9d+KJbsXU+ms1w`W1kL& zx}DyY{V%}Hzj`2^6Tv4lz&C;jsHMectOQo>{Dq>r3_ibo0KrUk2pdrL1W_i}IZ%G* zrc}fQHH@ENc0E^?(+W7v*He~r9`K!ILggtZecELZr=cb+b{j=cgRwxR?x@CEaJ)OY zc1Zuwr??KCS7!nUT(}?N7FB`XQR9C`bwE>X)jcjp9BY!Hl0?%5FtZ4j?G`f|Li8hI(2Qbn`ZanOb^rk zE>4^NCGWH@bc7hT_Vj&9{~Ie!l7+IhXgc?!aM6nG*EH&Jt~nkl=~??>pij6%bA^6{ z%_S6@%Jj+i6M{T481TjvJHRsdL}&^9lSeSOcrz61jX<-BritvYct81#*~<%H2hEgT*L^d;&7Uay6d`B_MGtd0;_a$pTj~o_^|N=d zOAH8xl=nz)w5sC0OM9G((?}B?l)x4J%g(u&P_wFKV-d7Ffr*wIB(l)aYdN%k|XJ6&@GN^fM}CZ!^bj_H-{)bc}02$Q(MS z)#-3Kb#xix%&%h@B>O|iYqx=o&K>C`TtxUDV)2pmcrezqW-xZR1J@%8nN*c4moOKc z3)(68VYMNTAFS#677BTjomBh<_jEQ9{#)^ zr?72!k9X1bJ>@{z0h|DO>LyayMRvJlnJF4|+81JcBt?RSj z7`@UNj1f&CJaoezuyM0BB=;&K>F4n7S1p;<_y~i~tApH1`x&;P%I=dFct{T}bvpjG z_@aZ!2S0bE8I1-DE%tUCZ`f|yFCD`T$0qUp z`jM$p>c6*YH$IX#hpKH@tM|kHgQ`d2nmohiDQr&+LHx~ga5dasP5DdA4VE^YujRrg zdZH;oW<@Fx*HMH1Q!%qy3*mE;iHQe?9CD+m?H7> zZW_;p)zTFsAV7~EDZHWjD^If4S{Ffh2xGd9rZ_O%DFdI*DB?uq&spZloKkut1X!+< zypZd^gOkXQMY<+c&gaEs4ONW&L%YOov~ysRZ}riSEUOwPN|IjmTv$X1{zqd2D7qgL zpqu0#5y4P-|JDqnq(#KbX+_l#%UrT#RI$c)P4O)sVhsBl)|9V!n2Q+!ZI*U*OOWLH zxC?X96PQS=0O-1w=v8-D^-=GBS4LRGLckOEB;8rpIJIPd?m#bQG|9m~#dgy{SJdqq z43p_%LD-#^#VyfG&xV|?zKcD<9$U@_X+h-02Ly|cr|(IGqKhyU}3=%hRB z7w#!`E-z!Ke(jILNs{l%6PK4zc8k|UFr*{IHBIdwn*R*^we9g%d>7?MWNacAjaB3a zh+@)K*+%jIL}V6iRj*!JY4*j@p!=$m{EMVwFKyaVz%?R0rqDC|_cA2!C(kh%D!8>V zs*V=4ahan}TSFA~oujLefPwS22XPi(DatbnkR!xDBpIqjO%+IJ1h0(=Dg@>2(Naxv z1=q6vs*60lrgz(HyO`3!+alUp01}Ep)i7kA1a%J1&fF2j0?y_gBB9x}pR%)zM!h5^ zauJVwgnPPh&i^F@#ek~@Yi>9PJQzo|MwlXw-On#iM8_nS01D#01xPF?ueILLGQcaY zYOyB1N|@(c-iH6(46q?T|KQrN8Gq&VN=KE?9aBKr#Jo-*lBoHbOEaKRzo1uNT~mFJ z{RiWl|BJQe7-2!KI7>Q#QwQDe>vWi`cNk>5S%CYftBI6wK#16)@ztcbw+zfVs8SIvZ<2(!KF2Ej8s3V7*umj0lfJ0yx0p)qAV;aV8Rjo zkIF}267U%yyfgrCmHePXJAe{7_ALPb_!&QLup}fV@3EqyqF&cJ2c~|Wq10Rzn{{nSbFb&e{nd*K(R*=^oLvjij;)kaX-sOb!Lg;bD4_MI_c38`%BbV&JAPf zuT!%9NN3UMo)?3MwcZyJK1X6eDn;ZYx!$zN>(QHJ@vO81C}`IeolH=?R1*Lk<)a+c zU!M!vd?_#z$1>;gxm{@G7-2!%Xlsmd_ic$~%QAG}90`Fu1kHtEYwx#bT)}15xws~| ztZ1_Co95}1v<8%gu+w`Dfr!CeS{zXo$f2uoUp0yv7q=@7STcDt|10gWP2m33u#!hS zRF158bTt>1H$UsbyIu}+x_r;@{{DS;e0nk3V(!PH&AfQ^kPk~rM831&t>$hKlo8%} z=kjNUivGwZ%OtlyZcx9_ploFRGwx?RzXsBCGV`|?sHa5?vjJk04bM-U3+8@7QLNko z@C+9=4WvdM1ptQh=DhRbI=wz9QYxAPe9d>tIwc4|1bv>)S_J^rxg0*n-FIRS(14*` z$;wBskJSgVgy=ReUa!x-z#0t!kqbmDB_g0!P4Ex)*zOj|7}o|UhqL!SbIs3l+txm$ zioN3G`<*bozEZq~vT_4(;&6)B%joCrC$a5WKyP?szWni6E%=9b?~{?WwG9?li}Tvl zUb5H}`|AP0KlGws?bPL^OFkLXFPYsY^twS~H`Ok)DjxJi1+-#a8wtNQKTl+n>yz6n z2)cluhgdR&&=7m@mGkN=gaX>{0FVm=tVvAY@-iWN&mZi` zLmo5QuFFI*AU4%5_b6V}h7gp2GqyGO3FDdK?dWX^U?)!;DD8FmU2pk3U(qm@HY|R# zIO0np7x@7^FrbudSY&)!Uhhmc0?J*m)KSOg@bg3{<((2Jb21h$L6~CQdBaPocT6?# zji$srSlV~&NyaM`X!GQUDB^|iC>#UMJZ3?m7z}LO=|hpHY17(0?aZbjGFm?2M*foM z6g8K>U~?V;e3u=oU`lrvbTd(!rQeadMDpjAVz@d-~|vM3^wwSNfdi7)AE z4w41;2gAHv>)93;NDM~;A<<^v^DUCK+^D)fr{5uL3!1a3+!iMPp>+dD63;Y`2FGNV z@Ze*eazAy{Rt-2+ChI0nGTJ@Pq#J3Ye!o|xh;>u~dDZx7 z%<+9xu}3Waw6Y@b5AzmAxesW50{EH5j;49-u#!cu$t)Af8>6FTkL7=N zw)^~u;d8&??Ut=E5RT#4zYJH)&2{9$X8M%mNO}$o&ZV`gp#uYXcP+6baNx9S(E4u8 z&tMk)Fop?ap5(o)ahM@7-A@z}OlGDPnY2k*j`B@#nWNJvRm!@L^%PCKJO&MI%jP~W zluM(cmZs{<5Pw*)M+$cHkBR`TXG~a1$^hhH%d(&^uI3ECS4B844iDTmRIRfa9c_ov zj71*t7plru(y51*D$g0u`;zvk66C2Ga}?To?2Fj#3luJZ1#0khS%S-*$;Z-z4m z?zJhkb{cV6E8l>6u)K43w7?U>WEov5ei1d?@LZYY|7u?Xlmdrn)3H4PcEKJao~ykI zc#n3tB6u!VwnX2@eHP(H2a05oOH4LopO=^WFJ#^F`d5m4gW=)7N!BN3@&N~wqIW8_ z_0dh4?400Qi#bA#xCy-)Y#0VDna{|C@ReX%WTcYlELy7gDnrQoAz~QRB3@M{6Sx{7 zy)e}wJml~t!6ml+_Z4`<)~-XY%D6J}iq7V#nLF^;3rxIpV!Bul?F4|`sZ^zAQuAQu6N{@MDZM`Sf%pwX@HwGfJCw5 zAtto=7Y(x#AqZ@SZGB=dziou?miGdl*0yAsCLI8d=vw(Ey&WV@<55!Iqb_5QAl4iC zIv=yj!cx#?jkih=^Y1%EeD;S$ip+pD( z;tuj)WIPBELCRot7e{mOJbyrxxvgg$Z|%K#&-W2L3TSx^0HwU0SB#^9T*V?RF$#Xn zs>8ao<2}#Y`{G&Uc0a2GG9fvT|2Yo^`HDobz}P}{rp6C5!wLT0M-{)PlU&goeD|h# z@rmsYVhDMn8}X^82PGvF0b7u~1!viU*3cDPEq#O;1_680HQ;2FZPdwk^Uw2))je0> zM%1~$uYh(6FEdwnDW#6RjQ#HJL?yD&=%+m;v<~uhE-cf}v@V=xO@Cnlh7MpsvkQf#s14Lp5L>ham>uUe7`?3@j;lyOfJwZgGsl7=@`pyWw@#Syubs zU}CuMXo?C+mfT!Rh)@b}rpn`Ru~9q80mDd7K*Y`I0Z<#lcN>jc<+2gWn&OavrF_O2*0~sE~`7RYM9Ki*0Z@fouT$V zU5H)(Zjiy%o*luAh@;f9b;OcPJw$gD-ZEJuWg`6*#!&L#CVjF+Uk|vkA;+{?*J0phywiriEeZ+3W(ICk-Ymb37DYD!)dF{ z5^Pn?SZdL~SJAnmkJyXgG)!j)2npq4opn9gnWg<7F|1hT`?9$y=Oi`Ce*hN)`7Rs->Q6z763A z<|VKkW(Aj-X<3hjlK$sU`O|?D=4bN5T4|nJl&BmdGiM%^3-*ScUWtG}?=|4WG2MZp zsW@U$kGx+qh&Tx7oIu4CegBYLQ(7`=kQuS{)Lg-6R>6RVNcJ3#ct~S*f5qsISu_g4;>x;@d`bdXPb5+cx_B1x zlxJiggepO3o>!t@`=NG$C~=o7)Q!*pDvr_K?fU1qmV=Pi0P*60Wr}GHeU+?qdQ63; zOzfwFbgKbH`E2?M(_w=3Lc@EF%E^?!5o%=!FIdGseXZ=>vfUa7hvfw@Dkq7^i+DqO z(1>z`kr5h+0DK)YLcLOlLnaBCPP07=&XJHAF{yR~3hG_3g0zHIjpooEXXK(*(I-lE zM6&>xN*r>Lpb4Q1!{SY_WF^#2SrC-lA{8bFcRr3)bf1uL&b7{77z`CM2fPjf`1t-S ztB|34Fh)UuKHS@F=N5KlMG1j`)>rxXgjbi44E(|$suQ1$ICV*2n8-{qsf&!o6h1!< zDI&(YmdYQ0d^HV)#|Hx+J$?_-%8151X_!AtimXZN`PJO6(s`v*3TsMd4Xtf?)bykG zb!ZZ{&(AHUg52{cjCvIFt(Q5r^@wj)_M!?4(Cxf{u+WjfgHQ6s0YEvlx-}L|wxMRY?rc$>hw2Sn6wB&mE3HZ;3a6 zEc5m2)5ZLmSG)fOn=A#9PP%B@w?zhM%^yVUCVdIkaH4(h3T&0bA3;g&?nmep0hiF7 zLY=|^4=zEkX}hUvqGpbci5J~(A^_}JQ6a_tBzOCyY8Wr-uyM0M4R+@NK4p!mXReEK^{@ z4i4}H^UxRd=d|1|&dKY0{t`ndSW{`?^Sm+>6Acm=XnNXS;4gZ-6YXnNDWytMY%Rb- z!TB%UqWIyOALcueL7tYBOI%i>Dk(_a#>v&Xo7PV|G_u81O1E^#c`iQ7JBvpJZZCg% zr*eI>fXitH9#1BTR<(ANonlk_z~8^8;8UM72!DfL`n!8?!qW(j1o1v#9h`%nv`13e z#w;b9+7&xR%$@5aX<)R*v{{<2ve4`JP2H!$7UZpLnn-0!2;o&N!MfWutU@v^${b|@ zkZX46EH-%*G_PH}(&nYvgOEG$ro;Y={>pZYpFdG_=hts{mJ3R)q>4fJca6+RF( zd5`?w|Gl8hkMDXPAz|oWT{7-$zxUyK#3#J4mgOW!e9w~Y_ryDK0DvdrJ3g5)ks+E(3%kVx?#_q-jzIR zk$--XY4~O?dlu@O*{32z$T2^DasPxGE!E=WJbUJq?1_7KcSo2!3I#9>oHo0FqfJdd zB@I|{Ot@TO-?;LpCy!3DxGqx;(oYAz0x>8rK?P2&@oYS)V_$TthYt@4JUYl+&<`k4 z1r7bUC6W4H{MEk8e^=Je9wqwy^X0BRWL5YLG#1!ruVXg5&e{f-z6%Ur=mQBIIkG#RNh~46mB@B9wANj&zDF4 zd7_Ck6Xnu;WcHgONK5CguRU#2dT<^E{&Y3KU@>58EM$)uoABcSREUB#PL4q7Ad0Q*uo^d?GPX7t4mK+G@{{6#T{cm6OL3xD zob{X>Mal~9ew2&=egazkGWEb|_lgcS)B=*FB-LWCd+l>%o(?&10^(<^t}&^i0y1m{ zAA^F#Klgqq3mYWyss;SHEbV?Y4N8@S|N7nzrL+T2UFH5g0LO$gqTO^9y`CJy%yP{W?6ll8uAk_dQT1?!qr z7sD1%7Df@@{e2~lhdTgo$^r)sCZK^$L?)fm=9Dd*d~VbCALRdlD}S&RFP2NOoL6T< zj;kh@T7H@ecK^ejH*cR?n&xl|+ou>cai7O%QVoR)GSCbd`WOUNrUIiYIzsi`=kyHW z?XU9%<&X$*dgfzt!7GMAD|NGgN+GSRmP?VQvD62@B@f%p3%m<+qa?CSdrib68=hQv zv*a3yi3*u{OL2KLTNoQXA+j5GvARaTbF`qV0+NsGbD%)f>qg7xuOO r_+{JBV0xd=(FEOb@c0i$BX6)eDa;AyobYZ?z@LJQs&t*CY1sb*zo#cf literal 0 HcmV?d00001 diff --git a/docs/images/translate/image3.png b/docs/images/translate/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..784aa36da739756b852aad81b951c73cfc21ba36 GIT binary patch literal 373604 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ð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�VJL+i8 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%0D+gN` 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%0ANA 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 literal 0 HcmV?d00001 diff --git a/docs/images/translate/image5.png b/docs/images/translate/image5.png new file mode 100644 index 0000000000000000000000000000000000000000..0b4b90d93045d788a908c6948212e0269061fd1b GIT binary patch literal 58769 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 z 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 Ef=V<*^Z)<= literal 0 HcmV?d00001 diff --git a/docs/includes/glossary.md b/docs/includes/glossary.md new file mode 100644 index 00000000..c40936cc --- /dev/null +++ b/docs/includes/glossary.md @@ -0,0 +1,24 @@ + + +*[CSCS]: Swiss National Supercomputing Center +*[ETH]: Swiss Federal Institute of Technology +*[GFDL]: Geophysical Fluid Dynamics Laboratory +*[NASA]: National Aeronautics and Space Administration +*[NOAA]: National Oceanic and Atmospheric Administration +*[SPCL]: Scalable Parallel Computing Laboratory (ETH Zurich) + + + + +*[DSL]: Domain specific language +*[FORTRAN]: Old programming language +*[IR]: Intermedite Representation: An abstraction between source code and machine code, designed to simplify analysis and optimization during program compilation. +*[NDSL]: NOAA/NASA Domain Specific Language middleware +*[SDFG]: Stateful Dataflow multiGraphs - the IR of DaCe + + +*[FMS]: Flexible Modeling System - see https://github.com/NOAA-GFDL/FMS +*[FV3]: GFDL Finite­-Volume Cubed-Sphere Dynamical Core + + +*[ULP]: Unit in the last place: The smallest allowed difference between two floating-point numbers. diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..24053f27 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,116 @@ +# NDSL Documentation + +NDSL allows atmospheric scientists to write focus on what matters in model development and hides away the complexities of coding for a super computer. + +## Quick Start + +Python `3.11.x` is required for NDSL and all its third party dependencies for installation. + +NDSL submodules `gt4py` and `dace` to point to vetted versions, use `git clone --recurse-submodule` to update the git submodules. + +NDSL is **NOT** available on `pypi`. Installation of the package has to be local, via `pip install ./NDSL` (`-e` supported). The packages have a few options: + +- `ndsl[test]`: installs the test packages (based on `pytest`) +- `ndsl[develop]`: installs tools for development and tests. + +NDSL uses pytest for its unit tests, the tests are available via: + +- `pytest -x test`: running CPU serial tests (GPU as well if `cupy` is installed) +- `mpirun -np 6 pytest -x test/mpi`: running CPU parallel tests (GPU as well if `cupy` is installed) + +## Requirements & supported compilers + +For CPU backends: + +- 3.11.x >= Python < 3.12.x +- Compilers: + - GNU 11.2+ +- Libraries: + - Boost headers 1.76+ (no lib installed, just headers) + +For GPU backends (the above plus): + +- CUDA 11.2+ +- Python package: + - `cupy` (latest with proper driver support [see install notes](https://docs.cupy.dev/en/stable/install.html)) +- Libraries: + - MPI compiled with cuda support + +## NDSL installation and testing + +NDSL is not available at `pypi`, it uses + +```bash +pip install NDSL +``` + +to install NDSL locally. + +NDSL has a few options: + +- `ndsl[test]`: installs the test packages (based on `pytest`) +- `ndsl[develop]`: installs tools for development and tests. + +Tests are available via: + +- `pytest -x test`: running CPU serial tests (GPU as well if `cupy` is installed) +- `mpirun -np 6 pytest -x test/mpi`: running CPU parallel tests (GPU as well if `cupy` is installed) + +## Configurations for Pace + +Configurations for Pace to use NDSL with different backend: + +- FV3_DACEMODE=Python[Build|BuildAndRun|Run] controls the full program optimizer behavior + + - Python: default, use stencil only, no full program optimization + + - Build: will build the program then exit. This _build no matter what_. (backend must be `dace:gpu` or `dace:cpu`) + + - BuildAndRun: same as above but after build the program will keep executing (backend must be `dace:gpu` or `dace:cpu`) + + - Run: load pre-compiled program and execute, fail if the .so is not present (_no hash check!_) (backend must be `dace:gpu` or `dace:cpu`) + +- PACE_FLOAT_PRECISION=64 control the floating point precision throughout the program. + +Install Pace with different NDSL backend: + +- Shell scripts to install Pace using NDSL backend on specific machines such as Gaea can be found in `examples/build_scripts/`. +- When cloning Pace you will need to update the repository's submodules as well: + +```bash +git clone --recursive https://github.com/ai2cm/pace.git +``` + + or if you have already cloned the repository: + +```bash +git submodule update --init --recursive +``` + +- Pace requires GCC > 9.2, MPI, and Python 3.8 on your system, and CUDA is required to run with a GPU backend. +You will also need the headers of the boost libraries in your `$PATH` (boost itself does not need to be installed). +If installed outside the standard header locations, gt4py requires that `$BOOST_ROOT` be set: + +```bash +cd BOOST/ROOT +wget https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.gz +tar -xzf boost_1_79_0.tar.gz +mkdir -p boost_1_79_0/include +mv boost_1_79_0/boost boost_1_79_0/include/ +export BOOST_ROOT=BOOST/ROOT/boost_1_79_0 +``` + +- We recommend creating a python `venv` or conda environment specifically for Pace. + +```bash +python3 -m venv venv_name +source venv_name/bin/activate +``` + +- Inside of your pace `venv` or conda environment pip install the Python requirements, GT4Py, and Pace: + +```bash +pip3 install -r requirements_dev.txt -c constraints.txt +``` + +- There are also separate requirements files which can be installed for linting (`requirements_lint.txt`) and building documentation (`requirements_docs.txt`). diff --git a/docs/porting/index.md b/docs/porting/index.md new file mode 100644 index 00000000..51459663 --- /dev/null +++ b/docs/porting/index.md @@ -0,0 +1,87 @@ +# Notes on porting FORTRAN code + +This part of the documentation includes notes about porting FORTRAN code to NDSL. + +## General Concepts + +Since we are not trying to do model developing but rather replicate an existing model, the main philosophy is to replicate model behavior as precisely as possible. +Since weather and climate models can take diverging paths based on very small input differences, as described in [\[1\]][1], a bitwise reproducible code is impossible to achieve. +There were attempts at solving this problem like shown in [\[2\]][2] or [\[3\]][3] but all of those require heavy modification to the original code. +In our case, the switch from the original FORTRAN environment to a C++ environment can already contribute to these small errors showing up and therefore a 1:1 validation on a large scale is impossible. +This effect gets further enhanced by computation on GPUs. +Lastly the mixing of precisions found in various models is often done slightly unmethodical and can further complicate the understand of what precision is required where. + +Since large scale validation is therefore close to impossible, we are trying to get reproducible results (within a margin) on smaller sub-components of the model. +When porting code, we therefore try to break down larger components into logical, numerically coherent substructures that can be tested and validated individually. +This breakdown serves two main purposes: + +1. Give us confidence, that the ported code behaves as intended. +2. Allow us to monitor if or how performance optimization down the road changes the numerical results of our model components. + +## Porting Guidelines + +Since GT4Py has certain restrictions on what can be in the same stencil and what needs to be in separate stencils, there is no absolute 1:1 mapping that can or should be applied. + +The best practices we found are: + +1. A numerically self-contained module should always live in a single class. +2. If possible, try to isolate individual numerical motifs into functions. + +### Example + +To illustrate best practices, we show a stripped version of the the nonhydrostatic vertical solver on the C-grid (Also know as the Riemann Solver): + +#### Main definition + +```python +class NonhydrostaticVerticalSolverCGrid: + def __init__(self, ...): + # Definition of the (potentially multiple) stencils to call + self._precompute_stencil = stencil_factory.from_origin_domain( + precompute, + origin=origin, + domain=domain, + ) + self._compute_sim1_solve = stencil_factory.from_origin_domain( + sim1_solver, + origin=origin, + domain=domain, + ) + # Definition of temporary variables share across two stencils + # that are not used outside the module + self._pfac = FloatFieldIJ() + ... + def __call__(self, cappa: FloatField, delpc: FloatField): + self._precompute_stencil(cappa, _pfac) + self._compute_sim1_solve(_pfac, delpc) +``` + +#### Stencil Definitions + +```python +#constants definition +c1 = Float(-2.0) / Float(14.0) +c2 = Float(11.0) / Float(14.0) +c3 = Float(5.0) / Float(14.0) + +#function for numerical standalone motif +@gtscript.function +def vol_conserv_cubic_interp_func_y(v): + return c1 * v[0, -2, 0] + c2 * v[0, -1, 0] + c3 * v + +def precompute(cappa: FloatField, _pfac: FloatFieldIJ): + # small computation directly in the stencil + with computation(PARALLEL), interval(...): + # a variable used only in one stencil can be defined here + tmpvar = cappa[1,0,0] + 1 + with computation(PARALLEL), interval(0, 1): + _pfac = tmpvar[0,0,1] + +def sim1_solver(cappa: FloatField, _pfac: FloatFieldIJ): + with computation(PARALLEL), interval(...): + cappa = vol_conserv_cubic_interp_func_y(cappa) + _pfac +``` + +[1]: "Chaos in climate models" +[2]: "Reproducible Climate Simulations" +[3]: "Bit reproducible HPC applications" diff --git a/docs/porting/translate/index.md b/docs/porting/translate/index.md new file mode 100644 index 00000000..1aa083bd --- /dev/null +++ b/docs/porting/translate/index.md @@ -0,0 +1,60 @@ +# Translate tests + +We call tests that validate subsets of computation against serialized data "translate tests". These should provide a baseline with which we can validate ported code and ensure the pipeline generates expected results. + +## The Translate infrastructure + +The infrastructure is set up in a way that for basic cases, all the default implementations are enough: + +The `TranslateFortranData2Py` base class will be evaluated through the function `test_sequential_savepoint`. +The general structure is: + +1. Extract tolerances for errors - either the defaults or the overwritten ones: + - Maximal absolute error + - Maximal relative error + - Allowed ULP difference +2. Extract input data from `{savepoint_name}-In.nc` +3. Run the `compute` function, returning the outputs. +4. Extract reference output data from `{savepoint_name}-Out.nc` +5. Compare the data in `out_vars` to the reference data. + +For these steps to work, the name of the translate test needs to match the name of the data. +In case of special handling required, almost everything can be overwritten: + +### Overwriting thresholds + +You can create an overwrite file to manually set the threshold in you data directory: + +![image1.png](../../images/translate/image1.png) + +### Overwriting Arguments to your compute function + +The compute_func will be called automatically in the test. If your names in the netcdf are matching the `kwargs` of your function directly, no further action required: + +![image2.png](../../images/translate/image2.png) + +If you need to rename it from the netcdf, you can use ["serialname"]: + +![image3.png](../../images/translate/image3.png) + +The same applies for scalar inputs with parameters: + +![image4.png](../../images/translate/image4.png) + +### Modifying output variables + +This can be required either if not all output is serialized, the naming is different or we need the same data as the input: + +![image4.png](../../images/translate/image4.png) + +### Modifying the `compute` function + +Normally, compute has the three steps: + +1. setup input +2. call `compute_func` +3. slice outputs + +Slight adaptations to every step are possible: + +![image5.png](../../images/translate/image5.png) diff --git a/docs/user/index.md b/docs/user/index.md new file mode 100644 index 00000000..292d3953 --- /dev/null +++ b/docs/user/index.md @@ -0,0 +1,3 @@ +# Usage documentation + +This part of the documentation is geared towards users of NDSL. diff --git a/external/dace b/external/dace index da644fe8..13402cbf 160000 --- a/external/dace +++ b/external/dace @@ -1 +1 @@ -Subproject commit da644fe8c179022fe8e730fb3f47f6399f1db4ce +Subproject commit 13402cbfeeb6969cbd3915acfb7a30bdb543071b diff --git a/external/gt4py b/external/gt4py index 0ddddd37..1ba0a972 160000 --- a/external/gt4py +++ b/external/gt4py @@ -1 +1 @@ -Subproject commit 0ddddd37d3056ad6518f33908eb02f3b1f992878 +Subproject commit 1ba0a97282037a6756f5da23d207a362383e5743 diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 00000000..09916f21 --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1,53 @@ +site_name: NDSL Documentation + +theme: + name: material + features: + - search.suggest + - search.highlight + - search.share + +nav: + - Home: index.md + - User documentation: user/index.md + - Porting: + - General Concepts: porting/index.md + - Testing Infrastructure: porting/translate/index.md + - Under the hood: + - Technical Documentation: dev/index.md + - DaCe: dev/dace.md + - GT4Py: dev/gt4py.md + + +markdown_extensions: + # simple glossary file + - abbr + # support for colored notes / warnings / tips / examples + - admonition + # support for footnotes + - footnotes + # support for syntax highlighting + - pymdownx.highlight: + anchor_linenums: true + line_spans: __span + pygments_lang_class: true + - pymdownx.inlinehilite + - pymdownx.snippets: + auto_append: + # hover tooltips for abbreviations (simple glossary) + - docs/includes/glossary.md + - pymdownx.superfences: + custom_fences: + # support for mermaid graphs + - name: mermaid + class: mermaid + format: python/name:pymdownx.superfences.fence_code_format + # image inclusion + +plugins: + # add search box to the header, configuration in theme + - search + +watch: + # reload when the glossary file is updated + - docs/includes diff --git a/ndsl/boilerplate.py b/ndsl/boilerplate.py index a777cd82..41b34820 100644 --- a/ndsl/boilerplate.py +++ b/ndsl/boilerplate.py @@ -44,7 +44,7 @@ def _get_factories( compilation_config = CompilationConfig( backend=backend, - rebuild=True, + rebuild=False, validate_args=True, format_source=False, device_sync=False, diff --git a/ndsl/comm/mpi.py b/ndsl/comm/mpi.py index 6b3ff17f..3c466950 100644 --- a/ndsl/comm/mpi.py +++ b/ndsl/comm/mpi.py @@ -6,7 +6,6 @@ from typing import Dict, List, Optional, TypeVar, cast from ndsl.comm.comm_abc import Comm, ReductionOperator, Request -from ndsl.logging import ndsl_log T = TypeVar("T") @@ -43,70 +42,46 @@ def Get_size(self) -> int: return self._comm.Get_size() def bcast(self, value: Optional[T], root=0) -> T: - ndsl_log.debug("bcast from root %s on rank %s", root, self._comm.Get_rank()) return self._comm.bcast(value, root=root) def barrier(self): - ndsl_log.debug("barrier on rank %s", self._comm.Get_rank()) self._comm.barrier() def Barrier(self): pass def Scatter(self, sendbuf, recvbuf, root=0, **kwargs): - ndsl_log.debug("Scatter on rank %s with root %s", self._comm.Get_rank(), root) self._comm.Scatter(sendbuf, recvbuf, root=root, **kwargs) def Gather(self, sendbuf, recvbuf, root=0, **kwargs): - ndsl_log.debug("Gather on rank %s with root %s", self._comm.Get_rank(), root) self._comm.Gather(sendbuf, recvbuf, root=root, **kwargs) def allgather(self, sendobj: T) -> List[T]: - ndsl_log.debug("allgather on rank %s", self._comm.Get_rank()) return self._comm.allgather(sendobj) def Send(self, sendbuf, dest, tag: int = 0, **kwargs): - ndsl_log.debug("Send on rank %s with dest %s", self._comm.Get_rank(), dest) self._comm.Send(sendbuf, dest, tag=tag, **kwargs) def sendrecv(self, sendbuf, dest, **kwargs): - ndsl_log.debug("sendrecv on rank %s with dest %s", self._comm.Get_rank(), dest) return self._comm.sendrecv(sendbuf, dest, **kwargs) def Isend(self, sendbuf, dest, tag: int = 0, **kwargs) -> Request: - ndsl_log.debug("Isend on rank %s with dest %s", self._comm.Get_rank(), dest) return self._comm.Isend(sendbuf, dest, tag=tag, **kwargs) def Recv(self, recvbuf, source, tag: int = 0, **kwargs): - ndsl_log.debug("Recv on rank %s with source %s", self._comm.Get_rank(), source) self._comm.Recv(recvbuf, source, tag=tag, **kwargs) def Irecv(self, recvbuf, source, tag: int = 0, **kwargs) -> Request: - ndsl_log.debug("Irecv on rank %s with source %s", self._comm.Get_rank(), source) return self._comm.Irecv(recvbuf, source, tag=tag, **kwargs) def Split(self, color, key) -> "Comm": - ndsl_log.debug( - "Split on rank %s with color %s, key %s", self._comm.Get_rank(), color, key - ) return self._comm.Split(color, key) def allreduce(self, sendobj: T, op: Optional[ReductionOperator] = None) -> T: - ndsl_log.debug( - "allreduce on rank %s with operator %s", self._comm.Get_rank(), op - ) return self._comm.allreduce(sendobj, self._op_mapping[op]) def Allreduce(self, sendobj_or_inplace: T, recvobj: T, op: ReductionOperator) -> T: - ndsl_log.debug( - "Allreduce on rank %s with operator %s", self._comm.Get_rank(), op - ) return self._comm.Allreduce(sendobj_or_inplace, recvobj, self._op_mapping[op]) def Allreduce_inplace(self, recvobj: T, op: ReductionOperator) -> T: - ndsl_log.debug( - "Allreduce (in place) on rank %s with operator %s", - self._comm.Get_rank(), - op, - ) return self._comm.Allreduce(mpi4py.MPI.IN_PLACE, recvobj, self._op_mapping[op]) diff --git a/ndsl/constants.py b/ndsl/constants.py index b7e91b18..eb89bd17 100644 --- a/ndsl/constants.py +++ b/ndsl/constants.py @@ -78,86 +78,133 @@ class ConstantVersions(Enum): # Physical constants ##################### if CONST_VERSION == ConstantVersions.GEOS: - RADIUS = Float(6.371e6) # Radius of the Earth [m] + RADIUS = Float(6.371e6) + """Radius of the Earth [m]""" PI_8 = np.float64(3.14159265358979323846) PI = Float(PI_8) - OMEGA = Float(2.0) * PI / Float(86164.0) # Rotation of the earth - GRAV = Float(9.80665) # Acceleration due to gravity [m/s^2].04 - RGRAV = Float(1.0) / GRAV # Inverse of gravitational acceleration - RDGAS = Float(8314.47) / Float( - 28.965 - ) # Gas constant for dry air [J/kg/deg] ~287.04 - RVGAS = Float(8314.47) / Float(18.015) # Gas constant for water vapor [J/kg/deg] - HLV = Float(2.4665e6) # Latent heat of evaporation [J/kg] - HLF = Float(3.3370e5) # Latent heat of fusion [J/kg] ~3.34e5 - KAPPA = RDGAS / (Float(3.5) * RDGAS) # Specific heat capacity of dry air at + OMEGA = Float(2.0) * PI / Float(86164.0) + """Rotation of the earth""" + GRAV = Float(9.80665) + """Acceleration due to gravity [m/s^2].04""" + RGRAV = Float(1.0) / GRAV + """Inverse of gravitational acceleration""" + RDGAS = Float(8314.47) / Float(28.965) + """Gas constant for dry air [J/kg/deg] ~287.04""" + RVGAS = Float(8314.47) / Float(18.015) + """Gas constant for water vapor [J/kg/deg]""" + HLV = Float(2.4665e6) + """Latent heat of evaporation [J/kg]""" + HLF = Float(3.3370e5) + """Latent heat of fusion [J/kg] ~3.34e5""" + KAPPA = RDGAS / (Float(3.5) * RDGAS) + """Specific heat capacity of dry air at""" CP_AIR = RDGAS / KAPPA - TFREEZE = Float(273.16) # Freezing temperature of fresh water [K] + TFREEZE = Float(273.16) + """Freezing temperature of fresh water [K]""" SAT_ADJUST_THRESHOLD = Float(1.0e-6) + DZ_MIN = Float(6.0) elif CONST_VERSION == ConstantVersions.UFS: - RADIUS = Float(6.3712e6) # Radius of the Earth [m] + RADIUS = Float(6.3712e6) + """Radius of the Earth [m]""" PI = Float(3.1415926535897931) - OMEGA = Float(7.2921e-5) # Rotation of the earth - GRAV = Float(9.80665) # Acceleration due to gravity [m/s^2].04 - RGRAV = Float(1.0 / GRAV) # Inverse of gravitational acceleration - RDGAS = Float(287.05) # Gas constant for dry air [J/kg/deg] ~287.04 - RVGAS = Float(461.50) # Gas constant for water vapor [J/kg/deg] - HLV = Float(2.5e6) # Latent heat of evaporation [J/kg] - HLF = Float(3.3358e5) # Latent heat of fusion [J/kg] ~3.34e5 + OMEGA = Float(7.2921e-5) + """Rotation of the earth""" + GRAV = Float(9.80665) + """Acceleration due to gravity [m/s^2].04""" + RGRAV = Float(1.0 / GRAV) + """Inverse of gravitational acceleration""" + RDGAS = Float(287.05) + """Gas constant for dry air [J/kg/deg] ~287.04""" + RVGAS = Float(461.50) + """Gas constant for water vapor [J/kg/deg]""" + HLV = Float(2.5e6) + """Latent heat of evaporation [J/kg]""" + HLF = Float(3.3358e5) + """Latent heat of fusion [J/kg] ~3.34e5""" CP_AIR = Float(1004.6) - KAPPA = RDGAS / CP_AIR # Specific heat capacity of dry air at - TFREEZE = Float(273.15) # Freezing temperature of fresh water [K] + KAPPA = RDGAS / CP_AIR + """Specific heat capacity of dry air at""" + TFREEZE = Float(273.15) + """Freezing temperature of fresh water [K]""" SAT_ADJUST_THRESHOLD = Float(1.0e-8) + DZ_MIN = Float(2.0) elif CONST_VERSION == ConstantVersions.GFDL: - RADIUS = Float(6371.0e3) # Radius of the Earth [m] #6371.0e3 - PI = Float(3.14159265358979323846) # 3.14159265358979323846 - OMEGA = Float(7.292e-5) # Rotation of the earth # 7.292e-5 - GRAV = Float(9.80) # Acceleration due to gravity [m/s^2].04 - RGRAV = Float(1.0) / GRAV # Inverse of gravitational acceleration - RDGAS = Float(287.04) # Gas constant for dry air [J/kg/deg] ~287.04 - RVGAS = Float(461.50) # Gas constant for water vapor [J/kg/deg] - HLV = Float(2.500e6) # Latent heat of evaporation [J/kg] - HLF = Float(3.34e5) # Latent heat of fusion [J/kg] ~3.34e5 + RADIUS = Float(6371.0e3) + """Radius of the Earth [m] #6371.0e3""" + PI = Float(3.14159265358979323846) + """3.14159265358979323846""" + OMEGA = Float(7.292e-5) + """Rotation of the earth # 7.292e-5""" + GRAV = Float(9.80) + """Acceleration due to gravity [m/s^2].04""" + RGRAV = Float(1.0) / GRAV + """Inverse of gravitational acceleration""" + RDGAS = Float(287.04) + """Gas constant for dry air [J/kg/deg] ~287.04""" + RVGAS = Float(461.50) + """Gas constant for water vapor [J/kg/deg]""" + HLV = Float(2.500e6) + """Latent heat of evaporation [J/kg]""" + HLF = Float(3.34e5) + """Latent heat of fusion [J/kg] ~3.34e5""" KAPPA = Float(2.0) / Float(7.0) - CP_AIR = RDGAS / KAPPA # Specific heat capacity of dry air at - TFREEZE = Float(273.16) # Freezing temperature of fresh water [K] + CP_AIR = RDGAS / KAPPA + """Specific heat capacity of dry air at""" + TFREEZE = Float(273.16) + """Freezing temperature of fresh water [K]""" SAT_ADJUST_THRESHOLD = Float(1.0e-8) + DZ_MIN = Float(2.0) else: raise RuntimeError("Constant selector failed, bad code.") SECONDS_PER_DAY = Float(86400.0) -DZ_MIN = Float(2.0) -CV_AIR = CP_AIR - RDGAS # Heat capacity of dry air at constant volume +SBC = 5.670400e-8 +"""Stefan-Boltzmann constant (W/m^2/K^4)""" +CV_AIR = CP_AIR - RDGAS +"""Heat capacity of dry air at constant volume""" RDG = -RDGAS / GRAV -CNST_0P20 = Float(0.2) K1K = RDGAS / CV_AIR -CNST_0P20 = Float(0.2) -CV_VAP = Float(3.0) * RVGAS # Heat capacity of water vapor at constant volume -ZVIR = RVGAS / RDGAS - Float(1) # con_fvirt in Fortran physics -C_ICE = Float(1972.0) # Heat capacity of ice at -15 degrees Celsius -C_ICE_0 = Float(2106.0) # Heat capacity of ice at 0 degrees Celsius -C_LIQ = Float(4.1855e3) # Heat capacity of water at 15 degrees Celsius -CP_VAP = Float(4.0) * RVGAS # Heat capacity of water vapor at constant pressure -TICE = Float(273.16) # Freezing temperature -DC_ICE = C_LIQ - C_ICE # Isobaric heating / cooling -DC_VAP = CP_VAP - C_LIQ # Isobaric heating / cooling -D2ICE = DC_VAP + DC_ICE # Isobaric heating / cooling +CNST_0P20 = np.float64(0.2) +CV_VAP = Float(3.0) * RVGAS +"""Heat capacity of water vapor at constant volume""" +ZVIR = RVGAS / RDGAS - Float(1) +"""con_fvirt in Fortran physics""" +C_ICE = Float(1972.0) +"""Heat capacity of ice at -15 degrees Celsius""" +C_ICE_0 = Float(2106.0) +"""Heat capacity of ice at 0 degrees Celsius""" +C_LIQ = Float(4.1855e3) +"""Heat capacity of water at 15 degrees Celsius""" +CP_VAP = Float(4.0) * RVGAS +"""Heat capacity of water vapor at constant pressure""" +TICE = Float(273.16) +"""Freezing temperature""" +DC_ICE = C_LIQ - C_ICE +"""Isobaric heating / cooling""" +DC_VAP = CP_VAP - C_LIQ +"""Isobaric heating / cooling""" +D2ICE = DC_VAP + DC_ICE +"""Isobaric heating / cooling""" LI0 = HLF - DC_ICE * TICE EPS = RDGAS / RVGAS EPSM1 = EPS - Float(1.0) -LV0 = ( - HLV - DC_VAP * TICE -) # 3.13905782e6, evaporation latent heat coefficient at 0 degrees Kelvin -LI00 = ( - HLF - DC_ICE * TICE -) # -2.7105966e5, fusion latent heat coefficient at 0 degrees Kelvin -LI2 = ( - LV0 + LI00 -) # 2.86799816e6, sublimation latent heat coefficient at 0 degrees Kelvin -E00 = Float(611.21) # Saturation vapor pressure at 0 degrees Celsius (Pa) -PSAT = Float(610.78) # Saturation vapor pressure at H2O 3pt (Pa) -T_WFR = TICE - Float(40.0) # homogeneous freezing temperature +LV0 = HLV - DC_VAP * TICE +"""3.13905782e6, evaporation latent heat coefficient at 0 degrees Kelvin""" +LI00 = HLF - DC_ICE * TICE +"""-2.7105966e5, fusion latent heat coefficient at 0 degrees Kelvin""" +LI2 = LV0 + LI00 +"""2.86799816e6, sublimation latent heat coefficient at 0 degrees Kelvin""" +E00 = Float(611.21) +"""Saturation vapor pressure at 0 degrees Celsius (Pa)""" +PSAT = Float(610.78) +"""Saturation vapor pressure at H2O 3pt (Pa)""" +T_WFR = TICE - Float(40.0) +"""homogeneous freezing temperature""" TICE0 = TICE - Float(0.01) -T_MIN = Float(178.0) # Minimum temperature to freeze-dry all water vapor +T_MIN = Float(178.0) +"""Minimum temperature to freeze-dry all water vapor""" T_SAT_MIN = TICE - Float(160.0) -LAT2 = np.power((HLV + HLF), 2, dtype=Float) # used in bigg mechanism +LAT2 = np.power((HLV + HLF), 2, dtype=Float) +"""Used in bigg mechanism""" +TTP = 2.7316e2 +"""Temperature of H2O triple point""" diff --git a/ndsl/dsl/dace/dace_config.py b/ndsl/dsl/dace/dace_config.py index 5129dac8..27f17375 100644 --- a/ndsl/dsl/dace/dace_config.py +++ b/ndsl/dsl/dace/dace_config.py @@ -11,7 +11,7 @@ from ndsl.dsl.caches.cache_location import identify_code_path from ndsl.dsl.caches.codepath import FV3CodePath from ndsl.dsl.gt4py_utils import is_gpu_backend -from ndsl.dsl.typing import floating_point_precision +from ndsl.dsl.typing import get_precision from ndsl.optional_imports import cupy as cp @@ -264,7 +264,7 @@ def __init__( "compiler", "cuda", "syncdebug", value=dace_debug_env_var ) - if floating_point_precision() == 32: + if get_precision() == 32: # When using 32-bit float, we flip the default dtypes to be all # C, e.g. 32 bit. dace.Config.set( diff --git a/ndsl/dsl/dace/orchestration.py b/ndsl/dsl/dace/orchestration.py index 767610c3..c09b69cc 100644 --- a/ndsl/dsl/dace/orchestration.py +++ b/ndsl/dsl/dace/orchestration.py @@ -438,7 +438,7 @@ def __get__(self, obj, objtype=None) -> SDFGEnabledCallable: def orchestrate( *, obj: object, - config: DaceConfig, + config: Optional[DaceConfig], method_to_orchestrate: str = "__call__", dace_compiletime_args: Optional[Sequence[str]] = None, ): @@ -455,6 +455,9 @@ def orchestrate( dace_compiletime_args: list of names of arguments to be flagged has dace.compiletime for orchestration to behave """ + if config is None: + raise ValueError("DaCe config cannot be None") + if dace_compiletime_args is None: dace_compiletime_args = [] diff --git a/ndsl/dsl/gt4py_utils.py b/ndsl/dsl/gt4py_utils.py index 31c60ca7..6c0254e9 100644 --- a/ndsl/dsl/gt4py_utils.py +++ b/ndsl/dsl/gt4py_utils.py @@ -140,9 +140,7 @@ def make_storage_data( default_mask = (True, True, False) shape = (1, shape[axis]) else: - default_mask = tuple( - [i == axis for i in range(max_dim)] - ) # type: ignore + default_mask = tuple([i == axis for i in range(max_dim)]) # type: ignore elif dummy or axis != 2: default_mask = (True, True, True) else: @@ -151,16 +149,44 @@ def make_storage_data( if n_dims == 1: data = _make_storage_data_1d( - data, shape, start, dummy, axis, read_only, backend=backend + data, + shape, + start, + dummy, + axis, + read_only, + dtype=dtype, + backend=backend, ) elif n_dims == 2: data = _make_storage_data_2d( - data, shape, start, dummy, axis, read_only, backend=backend + data, + shape, + start, + dummy, + axis, + read_only, + dtype=dtype, + backend=backend, + ) + elif n_dims >= 4: + data = _make_storage_data_Nd( + data, + shape, + start, + dtype=dtype, + backend=backend, ) elif n_dims >= 4: data = _make_storage_data_Nd(data, shape, start, backend=backend) else: - data = _make_storage_data_3d(data, shape, start, backend=backend) + data = _make_storage_data_3d( + data, + shape, + start, + dtype=dtype, + backend=backend, + ) storage = gt4py.storage.from_array( data, @@ -180,11 +206,12 @@ def _make_storage_data_1d( axis: int = 2, read_only: bool = True, *, + dtype: DTypes = Float, backend: str, ) -> Field: # axis refers to a repeated axis, dummy refers to a singleton axis axis = min(axis, len(shape) - 1) - buffer = zeros(shape[axis], backend=backend) + buffer = zeros(shape[axis], dtype=dtype, backend=backend) if dummy: axis = list(set((0, 1, 2)).difference(dummy))[0] @@ -216,6 +243,7 @@ def _make_storage_data_2d( axis: int = 2, read_only: bool = True, *, + dtype: DTypes = Float, backend: str, ) -> Field: # axis refers to which axis should be repeated (when making a full 3d data), @@ -229,7 +257,7 @@ def _make_storage_data_2d( start1, start2 = start[0:2] size1, size2 = data.shape - buffer = zeros(shape2d, backend=backend) + buffer = zeros(shape2d, dtype=dtype, backend=backend) buffer[start1 : start1 + size1, start2 : start2 + size2] = asarray( data, type(buffer) ) @@ -249,11 +277,12 @@ def _make_storage_data_3d( shape: Tuple[int, ...], start: Tuple[int, ...] = (0, 0, 0), *, + dtype: DTypes = Float, backend: str, ) -> Field: istart, jstart, kstart = start isize, jsize, ksize = data.shape - buffer = zeros(shape, backend=backend) + buffer = zeros(shape, dtype=dtype, backend=backend) buffer[ istart : istart + isize, jstart : jstart + jsize, @@ -267,11 +296,12 @@ def _make_storage_data_Nd( shape: Tuple[int, ...], start: Tuple[int, ...] = None, *, + dtype: DTypes = Float, backend: str, ) -> Field: if start is None: start = tuple([0] * data.ndim) - buffer = zeros(shape, backend=backend) + buffer = zeros(shape, dtype=dtype, backend=backend) idx = tuple([slice(start[i], start[i] + data.shape[i]) for i in range(len(start))]) buffer[idx] = asarray(data, type(buffer)) return buffer diff --git a/ndsl/dsl/stencil.py b/ndsl/dsl/stencil.py index 5e917e66..daf78091 100644 --- a/ndsl/dsl/stencil.py +++ b/ndsl/dsl/stencil.py @@ -31,6 +31,7 @@ from ndsl.dsl.stencil_config import CompilationConfig, RunMode, StencilConfig from ndsl.dsl.typing import Float, Index3D, cast_to_index3d from ndsl.initialization.sizer import GridSizer, SubtileGridSizer +from ndsl.logging import ndsl_log from ndsl.quantity import Quantity from ndsl.testing.comparison import LegacyMetric @@ -374,6 +375,8 @@ def nothing_function(*args, **kwargs): setattr(self, "__call__", nothing_function) def __call__(self, *args, **kwargs) -> None: + if self.stencil_config.verbose: + ndsl_log.debug(f"Running {self._func_name}") args_list = list(args) _convert_quantities_to_storage(args_list, kwargs) args = tuple(args_list) diff --git a/ndsl/dsl/stencil_config.py b/ndsl/dsl/stencil_config.py index 6b8f75eb..4d3eafab 100644 --- a/ndsl/dsl/stencil_config.py +++ b/ndsl/dsl/stencil_config.py @@ -169,6 +169,7 @@ class StencilConfig(Hashable): compare_to_numpy: bool = False compilation_config: CompilationConfig = CompilationConfig() dace_config: Optional[DaceConfig] = None + verbose: bool = False def __post_init__(self): self.backend_opts = { diff --git a/ndsl/dsl/typing.py b/ndsl/dsl/typing.py index b3fa72d8..1cae1063 100644 --- a/ndsl/dsl/typing.py +++ b/ndsl/dsl/typing.py @@ -1,5 +1,5 @@ import os -from typing import Tuple, Union, cast +from typing import Tuple, TypeAlias, Union, cast import gt4py.cartesian.gtscript as gtscript import numpy as np @@ -22,35 +22,41 @@ DTypes = Union[bool, np.bool_, int, np.int32, np.int64, float, np.float32, np.float64] +# Depreciated version of get_precision, but retained for a PACE dependency def floating_point_precision() -> int: return int(os.getenv("PACE_FLOAT_PRECISION", "64")) +def get_precision() -> int: + return int(os.getenv("PACE_FLOAT_PRECISION", "64")) + + # We redefine the type as a way to distinguish # the model definition of a float to other usage of the # common numpy type in the rest of the code. -NDSL_32BIT_FLOAT_TYPE = np.float32 -NDSL_64BIT_FLOAT_TYPE = np.float64 +NDSL_32BIT_FLOAT_TYPE: TypeAlias = np.float32 +NDSL_64BIT_FLOAT_TYPE: TypeAlias = np.float64 +NDSL_32BIT_INT_TYPE: TypeAlias = np.int32 +NDSL_64BIT_INT_TYPE: TypeAlias = np.int64 -def global_set_floating_point_precision(): - """Set the global floating point precision for all reference - to Float in the codebase. Defaults to 64 bit.""" - global Float - precision_in_bit = floating_point_precision() +def global_set_precision() -> Tuple[TypeAlias, TypeAlias]: + """Set the global precision for all references of + Float and Int in the codebase. Defaults to 64 bit.""" + global Float, Int + precision_in_bit = get_precision() if precision_in_bit == 64: - return NDSL_64BIT_FLOAT_TYPE + return NDSL_64BIT_FLOAT_TYPE, NDSL_64BIT_INT_TYPE elif precision_in_bit == 32: - return NDSL_32BIT_FLOAT_TYPE + return NDSL_32BIT_FLOAT_TYPE, NDSL_32BIT_INT_TYPE else: - NotImplementedError( + raise NotImplementedError( f"{precision_in_bit} bit precision not implemented or tested" ) # Default float and int types -Float = global_set_floating_point_precision() -Int = np.int_ +Float, Int = global_set_precision() Bool = np.bool_ FloatField = Field[gtscript.IJK, Float] @@ -68,10 +74,27 @@ def global_set_floating_point_precision(): FloatFieldK = Field[gtscript.K, Float] FloatFieldK64 = Field[gtscript.K, np.float64] FloatFieldK32 = Field[gtscript.K, np.float32] + IntField = Field[gtscript.IJK, Int] +IntField64 = Field[gtscript.IJK, np.int64] +IntField32 = Field[gtscript.IJK, np.int32] +IntFieldI = Field[gtscript.I, Int] +IntFieldI64 = Field[gtscript.I, np.int64] +IntFieldI32 = Field[gtscript.I, np.int32] +IntFieldJ = Field[gtscript.J, Int] +IntFieldJ64 = Field[gtscript.J, np.int64] +IntFieldJ32 = Field[gtscript.J, np.int32] IntFieldIJ = Field[gtscript.IJ, Int] +IntFieldIJ64 = Field[gtscript.IJ, np.int64] +IntFieldIJ32 = Field[gtscript.IJ, np.int32] IntFieldK = Field[gtscript.K, Int] +IntFieldK64 = Field[gtscript.K, np.int64] +IntFieldK32 = Field[gtscript.K, np.int32] + BoolField = Field[gtscript.IJK, Bool] +BoolFieldI = Field[gtscript.I, Bool] +BoolFieldJ = Field[gtscript.J, Bool] +BoolFieldK = Field[gtscript.K, Bool] BoolFieldIJ = Field[gtscript.IJ, Bool] Index3D = Tuple[int, int, int] diff --git a/ndsl/grid/generation.py b/ndsl/grid/generation.py index f77e2cd2..c32ceb3f 100644 --- a/ndsl/grid/generation.py +++ b/ndsl/grid/generation.py @@ -298,7 +298,7 @@ def __init__( self._dy_center = None self._area = None self._area_c = None - if eta_file is not None: + if eta_file is not None or ak is not None or bk is not None: ( self._ks, self._ptop, @@ -3331,12 +3331,12 @@ def _calculate_edge_factors(self): self._np, ) - edge_w = quantity_cast_to_model_float(self.quantity_factory, edge_w_64) - edge_e = quantity_cast_to_model_float(self.quantity_factory, edge_e_64) - edge_s = quantity_cast_to_model_float(self.quantity_factory, edge_s_64) - edge_n = quantity_cast_to_model_float(self.quantity_factory, edge_n_64) - - return edge_w, edge_e, edge_s, edge_n + return ( + edge_w_64, + edge_e_64, + edge_s_64, + edge_n_64, + ) def _calculate_edge_a2c_vect_factors(self): edge_vect_s_64 = self.quantity_factory.zeros( diff --git a/ndsl/grid/helper.py b/ndsl/grid/helper.py index 6cb6a374..1a82d053 100644 --- a/ndsl/grid/helper.py +++ b/ndsl/grid/helper.py @@ -332,13 +332,21 @@ def __init__( vertical_data: VerticalGridData, contravariant_data: ContravariantGridData, angle_data: AngleGridData, + fc=None, + fc_agrid=None, ): self._horizontal_data = horizontal_data self._vertical_data = vertical_data self._contravariant_data = contravariant_data self._angle_data = angle_data - self._fC = None - self._fC_agrid = None + if fc is not None: + self._fC = GridData._fC_from_data(fc, horizontal_data.lat) + else: + self._fC = None + if fc_agrid is not None: + self._fC_agrid = GridData._fC_from_data(fc_agrid, horizontal_data.lat) + else: + self._fC_agrid = None @classmethod def new_from_metric_terms(cls, metric_terms: MetricTerms): @@ -369,9 +377,7 @@ def lat_agrid(self) -> Quantity: return self._horizontal_data.lat_agrid @staticmethod - def _fC_from_lat(lat: Quantity) -> Quantity: - np = lat.np - data = 2.0 * constants.OMEGA * np.sin(lat.data) + def _fC_from_data(data, lat: Quantity) -> Quantity: return Quantity( data, units="1/s", @@ -381,6 +387,12 @@ def _fC_from_lat(lat: Quantity) -> Quantity: gt4py_backend=lat.gt4py_backend, ) + @staticmethod + def _fC_from_lat(lat: Quantity) -> Quantity: + np = lat.np + data = Float(2.0) * constants.OMEGA * np.sin(lat.data, dtype=Float) + return GridData._fC_from_data(data, lat) + @property def fC(self): """Coriolis parameter at cell corners""" diff --git a/ndsl/initialization/sizer.py b/ndsl/initialization/sizer.py index d42acf77..8ad3d196 100644 --- a/ndsl/initialization/sizer.py +++ b/ndsl/initialization/sizer.py @@ -66,6 +66,17 @@ def from_tile_params( ) nx = x_slice.stop - x_slice.start ny = y_slice.stop - y_slice.start + + # TODO: Remove after vector halo update issue resolved + if nx <= n_halo: + raise Exception( + "SubtileGridSizer::from_tile_params: Compute domain extent must be greater than halo size" + ) + if ny <= n_halo: + raise Exception( + "SubtileGridSizer::from_tile_params: Compute domain extent must be greater than halo size" + ) + return cls(nx, ny, nz, n_halo, extra_dim_lengths) @classmethod diff --git a/ndsl/logging.py b/ndsl/logging.py index 44cdb690..73b7979c 100644 --- a/ndsl/logging.py +++ b/ndsl/logging.py @@ -1,6 +1,9 @@ +from __future__ import annotations + import logging import os import sys +from typing import Annotated from mpi4py import MPI @@ -18,7 +21,7 @@ } -def _ndsl_logger(): +def _ndsl_logger() -> logging.Logger: name_log = logging.getLogger(__name__) name_log.setLevel(LOGLEVEL) @@ -36,4 +39,33 @@ def _ndsl_logger(): return name_log -ndsl_log = _ndsl_logger() +def _ndsl_logger_on_rank_0() -> logging.Logger: + name_log = logging.getLogger(f"{__name__}_on_rank_0") + name_log.setLevel(LOGLEVEL) + + rank = MPI.COMM_WORLD.Get_rank() + + if rank == 0: + handler = logging.StreamHandler(sys.stdout) + handler.setLevel(LOGLEVEL) + formatter = logging.Formatter( + fmt=( + f"%(asctime)s|%(levelname)s|rank {MPI.COMM_WORLD.Get_rank()}|" + "%(name)s:%(message)s" + ), + datefmt="%Y-%m-%d %H:%M:%S", + ) + handler.setFormatter(formatter) + name_log.addHandler(handler) + else: + name_log.disabled = True + return name_log + + +ndsl_log: Annotated[ + logging.Logger, "NDSL Python logger, logs on all rank" +] = _ndsl_logger() + +ndsl_log_on_rank_0: Annotated[ + logging.Logger, "NDSL Python logger, logs on rank 0 only" +] = _ndsl_logger_on_rank_0() diff --git a/ndsl/monitor/netcdf_monitor.py b/ndsl/monitor/netcdf_monitor.py index 8a0b96fd..204d7b94 100644 --- a/ndsl/monitor/netcdf_monitor.py +++ b/ndsl/monitor/netcdf_monitor.py @@ -1,11 +1,13 @@ import os from pathlib import Path from typing import Any, Dict, List, Optional, Set +from warnings import warn import fsspec import numpy as np from ndsl.comm.communicator import Communicator +from ndsl.dsl.typing import Float, get_precision from ndsl.filesystem import get_fs from ndsl.logging import ndsl_log from ndsl.monitor.convert import to_numpy @@ -114,6 +116,7 @@ def __init__( path: str, communicator: Communicator, time_chunk_size: int = 1, + precision=Float, ): """Create a NetCDFMonitor. @@ -130,6 +133,11 @@ def __init__( self._time_chunk_size = time_chunk_size self.__writer: Optional[_ChunkedNetCDFWriter] = None self._expected_vars: Optional[Set[str]] = None + self._transfer_type = precision + if self._transfer_type == np.float32 and get_precision() > 32: + warn( + f"NetCDF save: requested 32-bit float but precision of NDSL is {get_precision()}, cast will occur with possible loss of precision" + ) @property def _writer(self): @@ -164,12 +172,16 @@ def store(self, state: dict) -> None: set(state.keys()), self._expected_vars ) ) - state = self._communicator.tile.gather_state(state, transfer_type=np.float32) + state = self._communicator.tile.gather_state( + state, transfer_type=self._transfer_type + ) if state is not None: # we are on root rank self._writer.append(state) def store_constant(self, state: Dict[str, Quantity]) -> None: - state = self._communicator.gather_state(state, transfer_type=np.float32) + state = self._communicator.gather_state( + state, transfer_type=self._transfer_type + ) if state is not None: # we are on root rank constants_filename = str( Path(self._path) / NetCDFMonitor._CONSTANT_FILENAME diff --git a/ndsl/namelist.py b/ndsl/namelist.py index 304d9160..8df5c207 100644 --- a/ndsl/namelist.py +++ b/ndsl/namelist.py @@ -490,6 +490,8 @@ class Namelist: nf_omega: int = NamelistDefaults.nf_omega fv_sg_adj: int = NamelistDefaults.fv_sg_adj n_sponge: int = NamelistDefaults.n_sponge + daily_mean: bool = False + """Flag to replace cosz with daily mean value in physics""" @classmethod def from_f90nml(cls, namelist: f90nml.Namelist): diff --git a/ndsl/quantity/quantity.py b/ndsl/quantity/quantity.py index c88ba140..4f80fff1 100644 --- a/ndsl/quantity/quantity.py +++ b/ndsl/quantity/quantity.py @@ -3,6 +3,7 @@ import matplotlib.pyplot as plt import numpy as np +from mpi4py import MPI import ndsl.constants as constants from ndsl.dsl.typing import Float, is_float @@ -152,6 +153,10 @@ def from_data_array( gt4py_backend=gt4py_backend, ) + def to_netcdf(self, path: str, name="var", rank: int = -1) -> None: + if rank < 0 or MPI.COMM_WORLD.Get_rank() == rank: + self.data_array.to_dataset(name=name).to_netcdf(f"{path}__r{rank}.nc4") + def halo_spec(self, n_halo: int) -> QuantityHaloSpec: return QuantityHaloSpec( n_halo, @@ -255,8 +260,16 @@ def extent(self) -> Tuple[int, ...]: return self.metadata.extent @property - def data_array(self) -> xr.DataArray: - return xr.DataArray(self.view[:], dims=self.dims, attrs=self.attrs) + def data_array(self, full_data=False) -> xr.DataArray: + """Returns an Xarray.DataArray of the view (domain) + + Args: + full_data: Return the entire data (halo included) instead of the view + """ + if full_data: + return xr.DataArray(self.data[:], dims=self.dims, attrs=self.attrs) + else: + return xr.DataArray(self.view[:], dims=self.dims, attrs=self.attrs) @property def np(self) -> NumpyModule: diff --git a/ndsl/stencils/testing/conftest.py b/ndsl/stencils/testing/conftest.py index 2ed22fee..6da880fd 100644 --- a/ndsl/stencils/testing/conftest.py +++ b/ndsl/stencils/testing/conftest.py @@ -91,6 +91,18 @@ def pytest_addoption(parser): default=False, help="Use the multi-modal float metric. Default to False.", ) + parser.addoption( + "--sort_report", + action="store", + default="ulp", + help='Sort the report by "index" (ascending) or along the metric: "ulp", "absolute", "relative" (descending). Default to "ulp"', + ) + parser.addoption( + "--no_report", + action="store_true", + default=False, + help="Do not generate logging report or NetCDF in .translate-errors", + ) def pytest_configure(config): @@ -237,6 +249,8 @@ def sequential_savepoint_cases(metafunc, data_path, namelist_filename, *, backen savepoint_to_replay = get_savepoint_restriction(metafunc) grid_mode = metafunc.config.getoption("grid") topology_mode = metafunc.config.getoption("topology") + sort_report = metafunc.config.getoption("sort_report") + no_report = metafunc.config.getoption("no_report") return _savepoint_cases( savepoint_names, ranks, @@ -247,6 +261,8 @@ def sequential_savepoint_cases(metafunc, data_path, namelist_filename, *, backen data_path, grid_mode, topology_mode, + sort_report=sort_report, + no_report=no_report, ) @@ -260,6 +276,8 @@ def _savepoint_cases( data_path: str, grid_mode: str, topology_mode: bool, + sort_report: str, + no_report: bool, ): return_list = [] for rank in ranks: @@ -309,10 +327,11 @@ def _savepoint_cases( SavepointCase( savepoint_name=test_name, data_dir=data_path, - rank=rank, i_call=i_call, testobj=testobj, grid=grid, + sort_report=sort_report, + no_report=no_report, ) ) return return_list @@ -333,6 +352,8 @@ def parallel_savepoint_cases( ): namelist = get_namelist(namelist_filename) topology_mode = metafunc.config.getoption("topology") + sort_report = metafunc.config.getoption("sort_report") + no_report = metafunc.config.getoption("no_report") communicator = get_communicator(comm, namelist.layout, topology_mode) stencil_config = get_config(backend, communicator) savepoint_names = get_parallel_savepoint_names(metafunc, data_path) @@ -348,6 +369,8 @@ def parallel_savepoint_cases( data_path, grid_mode, topology_mode, + sort_report=sort_report, + no_report=no_report, ) diff --git a/ndsl/stencils/testing/grid.py b/ndsl/stencils/testing/grid.py index fbee10a5..6d4b4b38 100644 --- a/ndsl/stencils/testing/grid.py +++ b/ndsl/stencils/testing/grid.py @@ -7,7 +7,6 @@ from ndsl.constants import N_HALO_DEFAULT, X_DIM, Y_DIM, Z_DIM from ndsl.dsl import gt4py_utils as utils from ndsl.dsl.stencil import GridIndexing -from ndsl.dsl.typing import Float from ndsl.grid.generation import GridDefinitions from ndsl.grid.helper import ( AngleGridData, @@ -505,7 +504,12 @@ def grid_data(self) -> "GridData": data = getattr(self, name) assert data is not None - quantity = self.quantity_factory.zeros(dims=dims, units=units, dtype=Float) + quantity = self.quantity_factory.zeros( + dims=dims, + units=units, + dtype=data.dtype, + allow_mismatch_float_precision=True, + ) if len(quantity.shape) == 3: quantity.data[:] = data[:, :, : quantity.shape[2]] elif len(quantity.shape) == 2: @@ -549,6 +553,7 @@ def grid_data(self) -> "GridData": data=self.area_64, dims=GridDefinitions.area.dims, units=GridDefinitions.area.units, + allow_mismatch_float_precision=True, ), rarea=self.quantity_factory.from_array( data=self.rarea, @@ -810,6 +815,8 @@ def grid_data(self) -> "GridData": vertical_data=vertical, contravariant_data=contravariant, angle_data=angle, + fc=self.fC, + fc_agrid=self.f0, ) return self._grid_data diff --git a/ndsl/stencils/testing/parallel_translate.py b/ndsl/stencils/testing/parallel_translate.py index e0669994..7df16a17 100644 --- a/ndsl/stencils/testing/parallel_translate.py +++ b/ndsl/stencils/testing/parallel_translate.py @@ -17,6 +17,9 @@ class ParallelTranslate: max_error = TranslateFortranData2Py.max_error near_zero = TranslateFortranData2Py.near_zero + mmr_absolute_eps = TranslateFortranData2Py.mmr_absolute_eps + mmr_relative_fraction = TranslateFortranData2Py.mmr_relative_fraction + mmr_ulp = TranslateFortranData2Py.mmr_ulp compute_grid_option = False tests_grid = False inputs: Dict[str, Any] = {} diff --git a/ndsl/stencils/testing/savepoint.py b/ndsl/stencils/testing/savepoint.py index 7571befb..2708011e 100644 --- a/ndsl/stencils/testing/savepoint.py +++ b/ndsl/stencils/testing/savepoint.py @@ -16,11 +16,29 @@ def dataset_to_dict(ds: xr.Dataset) -> Dict[str, Union[np.ndarray, float, int]]: def _process_if_scalar(value: np.ndarray) -> Union[np.ndarray, float, int]: if len(value.shape) == 0: - return value.item() + return value.max() # trick to make sure we get the right type back else: return value +class DataLoader: + def __init__(self, rank: int, data_path: str): + self._data_path = data_path + self._rank = rank + + def load( + self, + name: str, + postfix: str = "", + i_call: int = 0, + ) -> Dict[str, Union[np.ndarray, float, int]]: + return dataset_to_dict( + xr.open_dataset(os.path.join(self._data_path, f"{name}{postfix}.nc")) + .isel(rank=self._rank) + .isel(savepoint=i_call) + ) + + class Translate(Protocol): def collect_input_data(self, ds: xr.Dataset) -> dict: ... @@ -28,6 +46,9 @@ def collect_input_data(self, ds: xr.Dataset) -> dict: def compute(self, data: dict): ... + def extra_data_load(self, data_loader: DataLoader): + ... + @dataclasses.dataclass class SavepointCase: @@ -37,13 +58,14 @@ class SavepointCase: savepoint_name: str data_dir: str - rank: int i_call: int testobj: Translate grid: Grid + sort_report: str + no_report: bool def __str__(self): - return f"{self.savepoint_name}-rank={self.rank}-call={self.i_call}" + return f"{self.savepoint_name}-rank={self.grid.rank}-call={self.i_call}" @property def exists(self) -> bool: @@ -51,14 +73,14 @@ def exists(self) -> bool: xr.open_dataset( os.path.join(self.data_dir, f"{self.savepoint_name}-In.nc") ).sizes["rank"] - > self.rank + > self.grid.rank ) @property def ds_in(self) -> xr.Dataset: return ( xr.open_dataset(os.path.join(self.data_dir, f"{self.savepoint_name}-In.nc")) - .isel(rank=self.rank) + .isel(rank=self.grid.rank) .isel(savepoint=self.i_call) ) @@ -68,6 +90,6 @@ def ds_out(self) -> xr.Dataset: xr.open_dataset( os.path.join(self.data_dir, f"{self.savepoint_name}-Out.nc") ) - .isel(rank=self.rank) + .isel(rank=self.grid.rank) .isel(savepoint=self.i_call) ) diff --git a/ndsl/stencils/testing/serialbox_to_netcdf.py b/ndsl/stencils/testing/serialbox_to_netcdf.py index 46996dbe..f514ae0c 100644 --- a/ndsl/stencils/testing/serialbox_to_netcdf.py +++ b/ndsl/stencils/testing/serialbox_to_netcdf.py @@ -140,7 +140,8 @@ def main( data_vars = {} if n_savepoints > 0: encoding = {} - for varname in set(names_list).difference(["rank"]): + names_indices = np.sort(list(set(names_list).difference(["rank"]))) + for varname in names_indices: # Check that all ranks have the same size. If not, aggregate and # feedback on one rank collapse_all_ranks = False diff --git a/ndsl/stencils/testing/test_translate.py b/ndsl/stencils/testing/test_translate.py index 70480c16..5b9bc773 100644 --- a/ndsl/stencils/testing/test_translate.py +++ b/ndsl/stencils/testing/test_translate.py @@ -14,7 +14,7 @@ from ndsl.dsl.stencil import CompilationConfig, StencilConfig from ndsl.quantity import Quantity from ndsl.restart._legacy_restart import RESTART_PROPERTIES -from ndsl.stencils.testing.savepoint import SavepointCase, dataset_to_dict +from ndsl.stencils.testing.savepoint import DataLoader, SavepointCase, dataset_to_dict from ndsl.testing.comparison import BaseMetric, LegacyMetric, MultiModalFloatMetric from ndsl.testing.perturbation import perturb @@ -178,7 +178,7 @@ def test_sequential_savepoint( if case.testobj.skip_test: return if not case.exists: - pytest.skip(f"Data at rank {case.rank} does not exists") + pytest.skip(f"Data at rank {case.grid.rank} does not exists") input_data = dataset_to_dict(case.ds_in) input_names = ( case.testobj.serialnames(case.testobj.in_vars["data_vars"]) @@ -191,6 +191,9 @@ def test_sequential_savepoint( f"Variable {e} was described in the translate test but cannot be found in the NetCDF" ) original_input_data = copy.deepcopy(input_data) + # give the user a chance to load data from other savepoints to allow + # for gathering required data from multiple sources (constants, etc.) + case.testobj.extra_data_load(DataLoader(case.grid.rank, case.data_dir)) # run python version of functionality output = case.testobj.compute(input_data) failing_names: List[str] = [] @@ -205,7 +208,7 @@ def test_sequential_savepoint( try: ref_data = all_ref_data[varname] except KeyError: - raise KeyError(f'Output "{varname}" couldn\'t be found in output data') + raise KeyError(f"Output {varname} couldn't be found in output data") if hasattr(case.testobj, "subset_output"): ref_data = case.testobj.subset_output(varname, ref_data) with subtests.test(varname=varname): @@ -218,6 +221,7 @@ def test_sequential_savepoint( absolute_eps_override=case.testobj.mmr_absolute_eps, relative_fraction_override=case.testobj.mmr_relative_fraction, ulp_override=case.testobj.mmr_ulp, + sort_report=case.sort_report, ) else: metric = LegacyMetric( @@ -234,8 +238,9 @@ def test_sequential_savepoint( ref_data_out[varname] = [ref_data] # Reporting & data save - _report_results(case.savepoint_name, results) - if len(failing_names) > 0: + if not case.no_report: + _report_results(case.savepoint_name, case.grid.rank, results) + if len(failing_names) > 0 and not case.no_report: get_thresholds(case.testobj, input_data=original_input_data) os.makedirs(OUTDIR, exist_ok=True) nc_filename = os.path.join(OUTDIR, f"translate-{case.savepoint_name}.nc") @@ -248,6 +253,7 @@ def test_sequential_savepoint( [output], ref_data_out, failing_names, + passing_names, nc_filename, ) if failing_names != []: @@ -341,7 +347,7 @@ def test_parallel_savepoint( if (grid == "compute") and not case.testobj.compute_grid_option: pytest.xfail(f"Grid compute option not used for test {case.savepoint_name}") if not case.exists: - pytest.skip(f"Data at rank {case.rank} does not exists") + pytest.skip(f"Data at rank {case.grid.rank} does not exists") input_data = dataset_to_dict(case.ds_in) # run python version of functionality output = case.testobj.compute_parallel(input_data, communicator) @@ -368,9 +374,12 @@ def test_parallel_savepoint( metric = MultiModalFloatMetric( reference_values=ref_data[varname][0], computed_values=output_data, - eps=case.testobj.max_error, + absolute_eps_override=case.testobj.mmr_absolute_eps, + relative_fraction_override=case.testobj.mmr_relative_fraction, + ulp_override=case.testobj.mmr_ulp, ignore_near_zero_errors=ignore_near_zero, near_zero=case.testobj.near_zero, + sort_report=case.sort_report, ) else: metric = LegacyMetric( @@ -386,7 +395,7 @@ def test_parallel_savepoint( passing_names.append(failing_names.pop()) # Reporting & data save - _report_results(case.savepoint_name, results) + _report_results(case.savepoint_name, case.grid.rank, results) if len(failing_names) > 0: os.makedirs(OUTDIR, exist_ok=True) nct_filename = os.path.join( @@ -398,14 +407,15 @@ def test_parallel_savepoint( input_data_on_host[key] = gt_utils.asarray(_input) save_netcdf( case.testobj, - [input_data_on_host], - [output], - ref_data, - failing_names, - nct_filename, + inputs_list=[input_data_on_host], + output_list=[output], + ref_data=ref_data, + failing_names=failing_names, + passing_names=passing_names, + out_filename=nct_filename, ) except Exception as error: - print(f"TestParallel SaveNetCDF Error: {error}") + print(f"TestParallel SaveNetCDF Error at rank {case.grid.rank}: {error}") if failing_names != []: pytest.fail( f"Only the following variables passed: {passing_names}", pytrace=False @@ -414,36 +424,47 @@ def test_parallel_savepoint( pytest.fail("No tests passed") -def _report_results(savepoint_name: str, results: Dict[str, BaseMetric]) -> None: - os.makedirs(OUTDIR, exist_ok=True) +def _report_results( + savepoint_name: str, + rank: int, + results: Dict[str, BaseMetric], +) -> None: + detail_dir = f"{OUTDIR}/details" + os.makedirs(detail_dir, exist_ok=True) # Summary - with open(f"{OUTDIR}/summary-{savepoint_name}.log", "w") as f: + with open(f"{OUTDIR}/summary-{savepoint_name}-{rank}.log", "w") as f: for varname, metric in results.items(): f.write(f"{varname}: {metric.one_line_report()}\n") # Detailed log for varname, metric in results.items(): - log_filename = os.path.join(OUTDIR, f"details-{savepoint_name}-{varname}.log") + log_filename = os.path.join( + detail_dir, f"{savepoint_name}-{varname}-{rank}.log" + ) metric.report(log_filename) -def save_netcdf( +def _save_datatree( testobj, # first list over rank, second list over savepoint inputs_list: List[Dict[str, List[np.ndarray]]], output_list: List[Dict[str, List[np.ndarray]]], ref_data: Dict[str, List[np.ndarray]], - failing_names, - out_filename, + names: List[str], ): import xarray as xr - data_vars = {} - for i, varname in enumerate(failing_names): + datasets = {} + indices = np.argsort(names) + for index in indices: + data_vars = {} + varname = names[index] # Read in dimensions and attributes - if hasattr(testobj, "outputs"): - dims = [dim_name + f"_{i}" for dim_name in testobj.outputs[varname]["dims"]] + if hasattr(testobj, "outputs") and testobj.outputs != {}: + dims = [ + dim_name + f"_{index}" for dim_name in testobj.outputs[varname]["dims"] + ] attrs = {"units": testobj.outputs[varname]["units"]} else: dims = [ @@ -477,6 +498,37 @@ def save_netcdf( ) data_vars[f"{varname}_absolute_error"] = absolute_errors data_vars[f"{varname}_absolute_error"].attrs = attrs + datasets[varname] = xr.Dataset(data_vars=data_vars) + + return xr.DataTree.from_dict(datasets) + +def save_netcdf( + testobj, + # first list over rank, second list over savepoint + inputs_list: List[Dict[str, List[np.ndarray]]], + output_list: List[Dict[str, List[np.ndarray]]], + ref_data: Dict[str, List[np.ndarray]], + failing_names: List[str], + passing_names: List[str], + out_filename, +): + import xarray as xr + + datasets = {} + datasets["Fail"] = _save_datatree( + testobj=testobj, + inputs_list=inputs_list, + output_list=output_list, + ref_data=ref_data, + names=failing_names, + ) + datasets["Pass"] = _save_datatree( + testobj=testobj, + inputs_list=inputs_list, + output_list=output_list, + ref_data=ref_data, + names=passing_names, + ) + xr.DataTree.from_dict(datasets).to_netcdf(out_filename) print(f"File saved to {out_filename}") - xr.Dataset(data_vars=data_vars).to_netcdf(out_filename) diff --git a/ndsl/stencils/testing/translate.py b/ndsl/stencils/testing/translate.py index e3fc8845..8132d290 100644 --- a/ndsl/stencils/testing/translate.py +++ b/ndsl/stencils/testing/translate.py @@ -8,6 +8,7 @@ from ndsl.dsl.typing import Field, Float, Int # noqa: F401 from ndsl.quantity import Quantity from ndsl.stencils.testing.grid import Grid # type: ignore +from ndsl.stencils.testing.savepoint import DataLoader try: @@ -51,6 +52,12 @@ def _convert(value: Union[Quantity, np.ndarray]) -> np.ndarray: class TranslateFortranData2Py: + """Translate test main class + + The translate test will will test a set of inputs and outputs, after having processed + the inputs via the user provided `compute_func`. + """ + max_error = 1e-14 near_zero = 1e-18 mmr_absolute_eps = -1 @@ -69,18 +76,36 @@ def __init__(self, grid, stencil_factory: StencilFactory, origin=utils.origin): self.ignore_near_zero_errors: Dict[str, Any] = {} self.skip_test: bool = False - def setup(self, inputs): + def extra_data_load(self, data_loader: DataLoader): + pass + + def setup(self, inputs) -> None: + """Transform inputs to gt4py.storages specification (correct device, layout)""" self.make_storage_data_input_vars(inputs) - def compute_func(self, **inputs): + def compute_func(self, **inputs) -> Optional[dict[str, Any]]: + """Compute function to transform the dictionary of `inputs`. + Must return a dictionnary of updated variables""" raise NotImplementedError("Implement a child class compute method") - def compute(self, inputs): + def compute(self, inputs) -> dict[str, Any]: + """Transform inputs from NetCDF to gt4py.storagers, run compute_func then slice + the outputs based on specifications. + + Return: Dictonnary of storages reshaped for comparison + """ self.setup(inputs) return self.slice_output(self.compute_from_storage(inputs)) # assume inputs already has been turned into gt4py storages (or Quantities) - def compute_from_storage(self, inputs): + def compute_from_storage(self, inputs) -> dict[str, Any]: + """Run `compute_func` and return an updated `inputs` dictionary with + the returned results of `compute_func`. + + Hypothesis: `inputs` are `gt4py.storages` + + Return: Outputs in the form of a Dict[str, gt4py.storages] + """ outputs = self.compute_func(**inputs) if outputs is not None: inputs.update(outputs) @@ -108,7 +133,13 @@ def make_storage_data( names_4d: Optional[List[str]] = None, read_only: bool = False, full_shape: bool = False, - ) -> Dict[str, "Field"]: + ) -> "Field": + """Copy input data into a gt4py.storage with given shape. + + `array` is copied. Takes care of the device upload if necessary. + + Return: Array in the form of a Dict[str, gt4py.storages] + """ use_shape = list(self.maxshape) if dummy_axes: for axis in dummy_axes: @@ -167,18 +198,20 @@ def collect_start_indices(self, datashape, varinfo): kstart = self.get_index_from_info(varinfo, "kstart", 0) return istart, jstart, kstart - def make_storage_data_input_vars(self, inputs, storage_vars=None, dict_4d=True): + def make_storage_data_input_vars( + self, inputs, storage_vars=None, dict_4d=True + ) -> None: + """From a set of raw inputs (straight from NetCDF), use the `in_vars` dictionnary to update inputs to + their configured shape. + + Return: None + """ inputs_in = {**inputs} inputs_out = {} if storage_vars is None: storage_vars = self.storage_vars() for p in self.in_vars["parameters"]: - if type(inputs_in[p]) in [int, np.int64, np.int32]: - inputs_out[p] = int(inputs_in[p]) - elif type(inputs_in[p]) is bool: - inputs_out[p] = inputs_in[p] - else: - inputs_out[p] = Float(inputs_in[p]) + inputs_out[p] = inputs_in[p] for d, info in storage_vars.items(): serialname = info["serialname"] if "serialname" in info else d self.update_info(info, inputs_in) @@ -214,7 +247,7 @@ def make_storage_data_input_vars(self, inputs, storage_vars=None, dict_4d=True): inputs.clear() inputs.update(inputs_out) - def slice_output(self, inputs, out_data=None): + def slice_output(self, inputs, out_data=None) -> dict[str, Any]: utils.device_sync(backend=self.stencil_factory.backend) if out_data is None: out_data = inputs @@ -351,6 +384,7 @@ def _edge_vector_storage(self, varname, axis, max_shape): shape=buffer.shape, backend=self.backend, mask=mask, + dtype=self.data[varname].dtype, ) def _make_composite_vvar_storage(self, varname, data3d, shape): @@ -364,6 +398,7 @@ def _make_composite_vvar_storage(self, varname, data3d, shape): shape=buffer.shape, origin=(1, 1, 0), backend=self.backend, + dtype=self.data[varname].dtype, ) def make_grid_storage(self, pygrid): @@ -385,6 +420,7 @@ def make_grid_storage(self, pygrid): (shape[0], shape[1], 3), origin=(0, 0, 0), backend=self.backend, + dtype=self.data[key].dtype, ) for key, axis in TranslateGrid.edge_var_axis.items(): if key in self.data: @@ -395,6 +431,7 @@ def make_grid_storage(self, pygrid): axis=axis, read_only=True, backend=self.backend, + dtype=self.data[key].dtype, ) for key, axis in TranslateGrid.edge_vect_axis.items(): if key in self.data: @@ -418,6 +455,7 @@ def make_grid_storage(self, pygrid): start=origin, read_only=True, backend=self.backend, + dtype=value.dtype, ) def python_grid(self): diff --git a/ndsl/testing/comparison.py b/ndsl/testing/comparison.py index 5bce02dd..7862904d 100644 --- a/ndsl/testing/comparison.py +++ b/ndsl/testing/comparison.py @@ -1,9 +1,25 @@ -from typing import List, Optional, Union +from typing import Any, List, Optional, Union import numpy as np import numpy.typing as npt +def _fixed_width_float_16e(value: np.floating[Any]) -> str: + """Account for extra '-' character""" + if value > 0: + return f" {value:.16e}" + else: + return f"{value:.16e}" + + +def _fixed_width_float_2e(value: np.floating[Any]) -> str: + """Account for extra '-' character""" + if value > 0: + return f" {value:.2e}" + else: + return f"{value:.2e}" + + class BaseMetric: def __init__( self, @@ -210,6 +226,7 @@ def __init__( absolute_eps_override: float = -1, relative_fraction_override: float = -1, ulp_override: float = -1, + sort_report: str = "ulp", **kwargs, ): super().__init__(reference_values, computed_values) @@ -235,6 +252,7 @@ def __init__( self.success = self._compute_all_metrics() self.check = np.all(self.success) + self.sort_report = sort_report def _compute_all_metrics( self, @@ -290,9 +308,9 @@ def _has_override(self) -> bool: ) def one_line_report(self) -> str: - metric_thresholds = f"{'🔶 ' if not self.absolute_eps.is_default else '' }Absolute E(<{self.absolute_eps.value:.2e}) " - metric_thresholds += f"{'🔶 ' if not self.relative_fraction.is_default else '' }Relative E(<{self.relative_fraction.value * 100:.2e}%) " - metric_thresholds += f"{'🔶 ' if not self.ulp_threshold.is_default else '' }ULP E(<{self.ulp_threshold.value})" + metric_thresholds = f"{'🔶 ' if not self.absolute_eps.is_default else ''}Absolute E(<{self.absolute_eps.value:.2e}) " + metric_thresholds += f"{'🔶 ' if not self.relative_fraction.is_default else ''}Relative E(<{self.relative_fraction.value * 100:.2e}%) " + metric_thresholds += f"{'🔶 ' if not self.ulp_threshold.is_default else ''}ULP E(<{self.ulp_threshold.value})" if self.check and self._has_override(): return f"🔶 No numerical differences with threshold override - metric: {metric_thresholds}" elif self.check: @@ -305,33 +323,53 @@ def one_line_report(self) -> str: def report(self, file_path: Optional[str] = None) -> List[str]: report = [] report.append(self.one_line_report()) - if not self.check: - found_indices = np.logical_not(self.success).nonzero() - # List all errors to terminal and file - bad_indices_count = len(found_indices[0]) - full_count = len(self.references.flatten()) - failures_pct = round(100.0 * (bad_indices_count / full_count), 2) - report = [ - f"All failures ({bad_indices_count}/{full_count}) ({failures_pct}%),\n", - f"Index Computed Reference " - f"{'🔶 ' if not self.absolute_eps.is_default else '' }Absolute E(<{self.absolute_eps.value:.2e}) " - f"{'🔶 ' if not self.relative_fraction.is_default else '' }Relative E(<{self.relative_fraction.value * 100:.2e}%) " - f"{'🔶 ' if not self.ulp_threshold.is_default else '' }ULP E(<{self.ulp_threshold.value})", - ] - # Summary and worst result - for iBad in range(bad_indices_count): - fi = tuple([f[iBad] for f in found_indices]) - ulp_dist = ( - self.ulp_distance[fi] - if np.isnan(self.ulp_distance[fi]) - else int(self.ulp_distance[fi]) - ) - report.append( - f"{str(fi)} {self.computed[fi]:.16e} {self.references[fi]:.16e} " - f"{self.absolute_distance[fi]:.2e} {'✅' if self.absolute_distance_metric[fi] else '❌'} " - f"{self.relative_distance[fi] * 100:.2e} {'✅' if self.relative_distance_metric[fi] else '❌'} " - f"{ulp_dist:02} {'✅' if self.ulp_distance_metric[fi] else '❌'} " - ) + failed_indices = np.logical_not(self.success).nonzero() + # List all errors to terminal and file + bad_indices_count = len(failed_indices[0]) + full_count = len(self.references.flatten()) + failures_pct = round(100.0 * (bad_indices_count / full_count), 2) + report = [ + f"All failures ({bad_indices_count}/{full_count}) ({failures_pct}%),\n", + f"Index Computed Reference " + f"{'🔶 ' if not self.absolute_eps.is_default else ''}Absolute E(<{self.absolute_eps.value:.2e}) " + f"{'🔶 ' if not self.relative_fraction.is_default else ''}Relative E(<{self.relative_fraction.value * 100:.2e}%) " + f"{'🔶 ' if not self.ulp_threshold.is_default else ''}ULP E(<{self.ulp_threshold.value})", + ] + # Summary and worst result + if self.sort_report == "ulp": + indices_flatten = np.argsort(self.ulp_distance.flatten()) + elif self.sort_report == "absolute": + indices_flatten = np.argsort(self.absolute_distance.flatten()) + elif self.sort_report == "relative": + indices_flatten = np.argsort(self.relative_distance.flatten()) + elif self.sort_report == "index": + indices_flatten = list(range(self.ulp_distance.size - 1, -1, -1)) + else: + RuntimeError( + f"[Translate test] Unknown {self.sort_report} report sorting option." + ) + for iFlat in indices_flatten[::-1]: + fi = np.unravel_index(iFlat, shape=self.ulp_distance.shape) + if np.isnan(self.computed[fi]) and np.isnan(self.references[fi]): + continue + ulp_dist = ( + self.ulp_distance[fi] + if np.isnan(self.ulp_distance[fi]) + else int(self.ulp_distance[fi]) + ) + index_as_string = "(" + for i in fi: + index_as_string += f"{i:02}," + index_as_string = index_as_string[:-1] + index_as_string += ")" + report.append( + f"{index_as_string} " + f"{_fixed_width_float_16e(self.computed[fi])} " + f"{_fixed_width_float_16e(self.references[fi])} " + f"{_fixed_width_float_2e(self.absolute_distance[fi])} {'✅' if self.absolute_distance_metric[fi] else '❌'} " + f"{_fixed_width_float_2e(self.relative_distance[fi] * 100)} {'✅' if self.relative_distance_metric[fi] else '❌'} " + f"{ulp_dist:02} {'✅' if self.ulp_distance_metric[fi] else '❌'} " + ) if file_path: with open(file_path, "w") as fd: diff --git a/setup.cfg b/setup.cfg index 1a142931..ce80d954 100644 --- a/setup.cfg +++ b/setup.cfg @@ -34,3 +34,8 @@ omit = external/* __init__.py source_pkgs = ndsl + +[metadata] +# Include the license file in the generated wheel, see +# https://wheel.readthedocs.io/en/stable/user_guide.html#including-license-files-in-the-generated-wheel-file +license_files = LICENSE.txt diff --git a/setup.py b/setup.py index 0b19d38e..e9f1c2e6 100644 --- a/setup.py +++ b/setup.py @@ -11,14 +11,17 @@ def local_pkg(name: str, relative_path: str) -> str: return path -test_requirements = ["pytest", "pytest-subtests", "coverage"] -develop_requirements = test_requirements + ["pre-commit"] +docs_requirements = ["mkdocs-material"] demos_requirements = ["ipython", "ipykernel"] +test_requirements = ["pytest", "pytest-subtests", "coverage"] + +develop_requirements = test_requirements + docs_requirements + ["pre-commit"] extras_requires = { - "test": test_requirements, - "develop": develop_requirements, "demos": demos_requirements, + "develop": develop_requirements, + "docs": docs_requirements, + "test": test_requirements, } requirements: List[str] = [ @@ -26,7 +29,7 @@ def local_pkg(name: str, relative_path: str) -> str: local_pkg("dace", "external/dace"), "mpi4py==3.1.5", "cftime", - "xarray", + "xarray>=2025.01.2", # datatree + fixes "f90nml>=1.1.0", "fsspec", "netcdf4==1.7.1", @@ -44,20 +47,19 @@ def local_pkg(name: str, relative_path: str) -> str: classifiers=[ "Development Status :: 2 - Pre-Alpha", "Intended Audience :: Developers", - "License :: OSI Approved :: BSD License", + "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.11", ], install_requires=requirements, extras_require=extras_requires, name="ndsl", - license="BSD license", + license="Apache 2.0 license", packages=find_namespace_packages(include=["ndsl", "ndsl.*"]), include_package_data=True, url="https://github.com/NOAA-GFDL/NDSL", - version="2025.01.00", + version="2025.03.00", zip_safe=False, entry_points={ "console_scripts": [ diff --git a/tests/quantity/test_deepcopy.py b/tests/quantity/test_deepcopy.py index a7b1564c..d6b5c7cb 100644 --- a/tests/quantity/test_deepcopy.py +++ b/tests/quantity/test_deepcopy.py @@ -17,9 +17,7 @@ def test_deepcopy_copy_is_editable_by_view(): ) quantity_copy = copy.deepcopy(quantity) # assertion below is only valid if we're overwriting the entire data through view - assert np.product(quantity_copy.view[:].shape) == np.product( - quantity_copy.data.shape - ) + assert np.prod(quantity_copy.view[:].shape) == np.prod(quantity_copy.data.shape) quantity_copy.view[:] = 1.0 np.testing.assert_array_equal(quantity.data, 0.0) np.testing.assert_array_equal(quantity_copy.data, 1.0) From 4898e5513e6aff2cac53e6d049fa5c1f95cb8d5b Mon Sep 17 00:00:00 2001 From: Florian Deconinck Date: Thu, 27 Nov 2025 08:11:14 -0500 Subject: [PATCH 2/2] NDSL 2025.11.00 (#333) * Check gt4py-backend options in config (#291) * For release `2025.03.00` (#127) * updating 4d handling * debug 4d test data * more iter * moving ser_to_nc here * updating datatype in translate test * typing works * fix dict, lint * remove empty line * change from 4d to Nd * Expose `k_start` and `k_end` automatically for any FrozenStencil * Fix k_start + utest * lint * Fix for 2d stencils * Add threshold overrides to the multimodal metric * Always report results, add summary with one liners * Remove "mmr" from the keys * README in testing * Better Latex (?) * Better Latex (?) * fixing a typo that breaks bools in translate tests (#80) * Fix summary filename * Fix report, filename * Fix choosing right absolute difference for F32 * Make robust for NaN value * Detect when array have different dimensions, if only one dimension, collapse Clean up type infer and log work * Lint * Add rank 0 to the data * Check data exists for rank, skip & print if not * Fix bad logic on skip test for parallel * Verbose exported names * Make boilerplate calls more nimble * New option: `which_savepoint` Better error on bad output data Fix missing integer type check * QOL for mypy/flak8 type hints * Add SECONDS_PER_DAY as a constants following mixed precision standards * Lint * Cleanups in dace orchestration Readability improvements in dace orchestration including - early returns - spelling out variable names - fixing typos * Rename program -> dace_program * Make sure all constants adhere to the floating point precision set by the system * Move `is_float` to `dsl.typing` * Move Quantity to sub-directory + breakout the subcomponent * Fix tests * Lint * Remove `cp.ndarray` since cupy is optional * Restore workaround for optional cupy * "GFS" -> "UFS" * Cupy trick for metadata * Add comments for constant explanation * Describe 64/32-bit FloatFields * Make sure the `make_storage_data` respects the array dtype. * Fix logic for MultiModal metric and verbose it * Added an MPI all_reduce for quantities based on SUM operation to communicator.py * linted * Add initial skeleton of pytest test for all reduce * Added assertion tests for 1, 2 and 3D quantities passed through mpi_allreduce_sum * Linted * Added pytest.mark to skip test if mpi4py isn't available * lint changes * Addressed PR comments and added additional CPU backends to unit test * Added setters for various Quantity properties to enable setting of Quantity metadata and data properties. * Added function in QuantityMetadata class that allows copying of Metadata properties from one class to another. Subsequent Quantity setters that performed the copying of QuantityMetadata properties were removed * Expose all SG metric terms in grid_data * Add `Allreduce` and all MPI OP * Update utest * Fix `local_comm` * Fix utest * Enforce `comm_abc.Comm` into Communicator * Fix `comm` object in serial utest * Lint + `MPIComm` on testing architecture * Make sure the correct allocator backend is used for Quantities * Add in_place option for Allreduce * Cleanup ndsl/dsl/dace/utils.py (#96) * Fix typos * DaCeProgress: avoid double assignment of prefix * Add type hints/simplify kernel_theoretical_timing Adding type hints allowed to simplify `kernel_theoretical_timing`. * Fix merge * Hotfix for grid generation use of mpi operators * Merge examples/mpi/.gitignore into top-level .gitignore * Remove hard-coded __version__ numbers Removes hard-coded version numbers from `__init__` files. * Fixing a bunch of typos * hotfix netcdf version for dockerfiles * Updated version number in setup.py to reflect new release, 2025.01.00 * Adding in exception for compute domains with sizes less than or equal to halo size (#103) * Adding in exception for compute domains with less than 4 points to vector_halo_update method * Updated exception in communicator to compare halo size to compute domain size * linting * Moved domain size checker to SubtileGridSizer class method from_tile_params * Fix passing down ak/bk for pressure coefficients when they are available from an outside source (online model case) (#107) * [QOL] Logging, Type Hints and Quantity helpers (#108) * Log on rank 0 Docstrings & typi hints on logger Stencil Config has a `verbose` option On verbose: FrozenStencil log when run (in GT backends) * Update `config` in orchestrate call to solve type hint inconcistencies * Quantity helper `to_netcdf` with multi rank support * Automatic Int precision and stencil regeneration change (#104) * Added feature to enable automatic detection of integer precision. Should remove the need for i32/i64 declaration (although their functionality is still retained) and replace both with the regular Int type * change default rebuild state to false for get_factories * Merged Float and Int precision detection functions into one common path * Re-added old function to fulfil a PACE dependency * updated docstring * Added ability to declare 32 or 64 bit IntFields, overrulling the system precision * Added one dimensional bool fields * Fix error message in typing.py Co-authored-by: Florian Deconinck * output type for global_set_precision --------- Co-authored-by: Florian Deconinck * Bump DaCe to v1.0.1 (#109) Our current DaCe version is some commit from September 2024. Meanwhile DaCe matured to v1 and recently release v1.0.1. This brings the DaCe submodule to the latest stable release version. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Streamline linting workflow (#110) Linting should give fast feedback. The current workflow takes ~3mins where most of the time is spent installing (unnecessary) python packages. To run `pre-commit`, we only need the source files and `pre-commit` itself, which can be installed standalone. This brings runtime of the linting stage down to ~30 seconds. Other changes - update checkout action to v4 - update python setup action to v5 - change python version from 3.11.7 to 3.11 (any patch number will do) This is a follow-up of PR https://github.com/NOAA-GFDL/PyFV3/pull/40 in PyFV3. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * [FIX] Type hint for precision dependant Float, Int (#111) * Fix the type hint of Float, Int * Attempt using TypeAlias * Feature: Adding documentation (#97) * Added doc files * Adding image files to docs * Linting * Updated docs to reflect changes requested in PR 97 * Linting --------- Co-authored-by: Florian Deconinck * [Translate test] Save better reports & netCDF for multiple ranks on failure (#106) * Save reports & netCDF for multiple ranks on failure Fix multi modal threshold for parallel tests * Order field by name in NetCDF * Print all indices in logs. Sort by descernding ULP * Allow sorting by metrics and index with `--sort_report` option * Remove the `rank` froom SavepointCase. Access is done via `grid` * Some docstrings * Adds some quick capacities used in the post-radiation phase of the physics, including the Stefan-Boltzmann constant (#116) * add namelist option * add stephan boltzmann constant * lint * Apply suggestions from code review Change comments to docstring style Co-authored-by: Florian Deconinck --------- Co-authored-by: Florian Deconinck * Adding temperature of h2o triple point (#115) * add ttp * Update ndsl/constants.py Co-authored-by: Florian Deconinck * switch comments to docstrings for autodocs * lint --------- Co-authored-by: Florian Deconinck * [Feature] Porting workflow: enhancing errors readability (#114) * Save all fields (pass and fail) and organize them by field * Option `--no_report` to bypass logging & netcdf save Move logs per variable into a `details` subfolder * Order variable name in serialbox-to-netcdf * `extra_data_load` function to load savepoint data saved outside the canonical savepoint * Docs / Type Hint * Fixed typo in error statment --------- Co-authored-by: Charles Kropiewnicki * Feature: NetCDF output precision configurable (#117) * Removed hard-code of np.float32 from NetCDFMonitor transfer_type, replaced with Float type * Added multiple options for NetCDF precision * Added checking for use of 32 precision and float64 output * Using NumPy type instead of string in NetCDFMonitor precision variable * Added warning to netcdf_monitor.py for mismatch in precision settings * Forgot f-string in warn message of netcdf_monitor * Mixed Precision fixes and QOL (#118) * Ignore `.next` caches * CNST_OP20 is a true 64-bit * Translate: Fix reading parameters with the right precision * Multimodal metric: Skip reporting on expected values * Bad commit * Add license (Apache 2.0) (#105) Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Change deprecated `np.product()` to `np.prod()` (#120) Starting with numpy v1.25.0, `np.product()` is deprecated and `np.prod()` should be used instead. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Update GT4Py and DaCe to bring in refactored GT4Py/DaCe bridge that exposes control flow (#119) * Update DaCe to v1.0.2 DaCe v1.0.2 brings two fixes for DaCe transformations: one for DeadDataflowElimination and one for StateFusion. * Bump gt4py to include refactored gt4py/dace bridge * Test with modified pace pipeline - added this to re-trigger the new pace pipeline after limiting zarr to not install v3 (for now) because of breaking API changes. - added this note to re-trigger after fixing the pace pipeline to not pull requirements from `develop`. - added this note to ret-trigger after fixing the repo name * Revert "Test with modified pace pipeline" This reverts commit cd6560ea6129663d3445fafb36d02f03cb661b4d. --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Grid Mixed Precision and Coriolis force load (+ QOL) (#121) * Pass `dtype` down in allocator utils (gt4py_utils) * Allow coriolis forces to be read in * Edge factors are always 64-bit * Quantity QOL * Make sure to pass `dtype` to load the grid cleanly * Translate grid: load coriolis forces, area 64 is 64-bit * Bad merge * Typo * GEOS version of dz_min (#122) * Doc enhancment (#123) **Description** Port and adaptation of the initial commit of the documentation. Fixes issue https://github.com/NOAA-GFDL/NDSL/issues/113 **Checklist:** - [X] I have performed a self-review of my own code - [X] I have made corresponding changes to the documentation - [X] My changes generate no new warnings * Fix saving NetCDF for parallel translate test (#125) * Release candidate 2025.03.00 (#124) Co-authored-by: Florian Deconinck * Fix for bad merge of 7fdfa5 (#129) --------- Co-authored-by: Oliver Elbert Co-authored-by: Florian Deconinck Co-authored-by: Florian Deconinck Co-authored-by: Oliver Elbert Co-authored-by: Roman Cattaneo <> Co-authored-by: Christopher Kung Co-authored-by: Roman Cattaneo Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki <79879064+CharlesKrop@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki Co-authored-by: Tobias Wicky-Pfund * check for backend existence in config * pc * update stale backend name --------- Co-authored-by: Frank Malatino <142349306+fmalatino@users.noreply.github.com> Co-authored-by: Oliver Elbert Co-authored-by: Florian Deconinck Co-authored-by: Florian Deconinck Co-authored-by: Oliver Elbert Co-authored-by: Christopher Kung Co-authored-by: Roman Cattaneo Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki <79879064+CharlesKrop@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki Co-authored-by: Frank Malatino * fix: allow any Comm object in ZarrMonitor (#292) This PR is fallout from adding types in PR #257 and #258. The `ZarrMonitor` provides a `DummyComm` which is instantiated in case no `Comm` object is given. The type of the `Comm` object in `ZarrMonitor` was wrongly limited to that `DummyComm`, which only broke when we attempted to update the submodule in `pace`. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Patch domain checks to only happen once (#293) * For release `2025.03.00` (#127) * updating 4d handling * debug 4d test data * more iter * moving ser_to_nc here * updating datatype in translate test * typing works * fix dict, lint * remove empty line * change from 4d to Nd * Expose `k_start` and `k_end` automatically for any FrozenStencil * Fix k_start + utest * lint * Fix for 2d stencils * Add threshold overrides to the multimodal metric * Always report results, add summary with one liners * Remove "mmr" from the keys * README in testing * Better Latex (?) * Better Latex (?) * fixing a typo that breaks bools in translate tests (#80) * Fix summary filename * Fix report, filename * Fix choosing right absolute difference for F32 * Make robust for NaN value * Detect when array have different dimensions, if only one dimension, collapse Clean up type infer and log work * Lint * Add rank 0 to the data * Check data exists for rank, skip & print if not * Fix bad logic on skip test for parallel * Verbose exported names * Make boilerplate calls more nimble * New option: `which_savepoint` Better error on bad output data Fix missing integer type check * QOL for mypy/flak8 type hints * Add SECONDS_PER_DAY as a constants following mixed precision standards * Lint * Cleanups in dace orchestration Readability improvements in dace orchestration including - early returns - spelling out variable names - fixing typos * Rename program -> dace_program * Make sure all constants adhere to the floating point precision set by the system * Move `is_float` to `dsl.typing` * Move Quantity to sub-directory + breakout the subcomponent * Fix tests * Lint * Remove `cp.ndarray` since cupy is optional * Restore workaround for optional cupy * "GFS" -> "UFS" * Cupy trick for metadata * Add comments for constant explanation * Describe 64/32-bit FloatFields * Make sure the `make_storage_data` respects the array dtype. * Fix logic for MultiModal metric and verbose it * Added an MPI all_reduce for quantities based on SUM operation to communicator.py * linted * Add initial skeleton of pytest test for all reduce * Added assertion tests for 1, 2 and 3D quantities passed through mpi_allreduce_sum * Linted * Added pytest.mark to skip test if mpi4py isn't available * lint changes * Addressed PR comments and added additional CPU backends to unit test * Added setters for various Quantity properties to enable setting of Quantity metadata and data properties. * Added function in QuantityMetadata class that allows copying of Metadata properties from one class to another. Subsequent Quantity setters that performed the copying of QuantityMetadata properties were removed * Expose all SG metric terms in grid_data * Add `Allreduce` and all MPI OP * Update utest * Fix `local_comm` * Fix utest * Enforce `comm_abc.Comm` into Communicator * Fix `comm` object in serial utest * Lint + `MPIComm` on testing architecture * Make sure the correct allocator backend is used for Quantities * Add in_place option for Allreduce * Cleanup ndsl/dsl/dace/utils.py (#96) * Fix typos * DaCeProgress: avoid double assignment of prefix * Add type hints/simplify kernel_theoretical_timing Adding type hints allowed to simplify `kernel_theoretical_timing`. * Fix merge * Hotfix for grid generation use of mpi operators * Merge examples/mpi/.gitignore into top-level .gitignore * Remove hard-coded __version__ numbers Removes hard-coded version numbers from `__init__` files. * Fixing a bunch of typos * hotfix netcdf version for dockerfiles * Updated version number in setup.py to reflect new release, 2025.01.00 * Adding in exception for compute domains with sizes less than or equal to halo size (#103) * Adding in exception for compute domains with less than 4 points to vector_halo_update method * Updated exception in communicator to compare halo size to compute domain size * linting * Moved domain size checker to SubtileGridSizer class method from_tile_params * Fix passing down ak/bk for pressure coefficients when they are available from an outside source (online model case) (#107) * [QOL] Logging, Type Hints and Quantity helpers (#108) * Log on rank 0 Docstrings & typi hints on logger Stencil Config has a `verbose` option On verbose: FrozenStencil log when run (in GT backends) * Update `config` in orchestrate call to solve type hint inconcistencies * Quantity helper `to_netcdf` with multi rank support * Automatic Int precision and stencil regeneration change (#104) * Added feature to enable automatic detection of integer precision. Should remove the need for i32/i64 declaration (although their functionality is still retained) and replace both with the regular Int type * change default rebuild state to false for get_factories * Merged Float and Int precision detection functions into one common path * Re-added old function to fulfil a PACE dependency * updated docstring * Added ability to declare 32 or 64 bit IntFields, overrulling the system precision * Added one dimensional bool fields * Fix error message in typing.py Co-authored-by: Florian Deconinck * output type for global_set_precision --------- Co-authored-by: Florian Deconinck * Bump DaCe to v1.0.1 (#109) Our current DaCe version is some commit from September 2024. Meanwhile DaCe matured to v1 and recently release v1.0.1. This brings the DaCe submodule to the latest stable release version. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Streamline linting workflow (#110) Linting should give fast feedback. The current workflow takes ~3mins where most of the time is spent installing (unnecessary) python packages. To run `pre-commit`, we only need the source files and `pre-commit` itself, which can be installed standalone. This brings runtime of the linting stage down to ~30 seconds. Other changes - update checkout action to v4 - update python setup action to v5 - change python version from 3.11.7 to 3.11 (any patch number will do) This is a follow-up of PR https://github.com/NOAA-GFDL/PyFV3/pull/40 in PyFV3. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * [FIX] Type hint for precision dependant Float, Int (#111) * Fix the type hint of Float, Int * Attempt using TypeAlias * Feature: Adding documentation (#97) * Added doc files * Adding image files to docs * Linting * Updated docs to reflect changes requested in PR 97 * Linting --------- Co-authored-by: Florian Deconinck * [Translate test] Save better reports & netCDF for multiple ranks on failure (#106) * Save reports & netCDF for multiple ranks on failure Fix multi modal threshold for parallel tests * Order field by name in NetCDF * Print all indices in logs. Sort by descernding ULP * Allow sorting by metrics and index with `--sort_report` option * Remove the `rank` froom SavepointCase. Access is done via `grid` * Some docstrings * Adds some quick capacities used in the post-radiation phase of the physics, including the Stefan-Boltzmann constant (#116) * add namelist option * add stephan boltzmann constant * lint * Apply suggestions from code review Change comments to docstring style Co-authored-by: Florian Deconinck --------- Co-authored-by: Florian Deconinck * Adding temperature of h2o triple point (#115) * add ttp * Update ndsl/constants.py Co-authored-by: Florian Deconinck * switch comments to docstrings for autodocs * lint --------- Co-authored-by: Florian Deconinck * [Feature] Porting workflow: enhancing errors readability (#114) * Save all fields (pass and fail) and organize them by field * Option `--no_report` to bypass logging & netcdf save Move logs per variable into a `details` subfolder * Order variable name in serialbox-to-netcdf * `extra_data_load` function to load savepoint data saved outside the canonical savepoint * Docs / Type Hint * Fixed typo in error statment --------- Co-authored-by: Charles Kropiewnicki * Feature: NetCDF output precision configurable (#117) * Removed hard-code of np.float32 from NetCDFMonitor transfer_type, replaced with Float type * Added multiple options for NetCDF precision * Added checking for use of 32 precision and float64 output * Using NumPy type instead of string in NetCDFMonitor precision variable * Added warning to netcdf_monitor.py for mismatch in precision settings * Forgot f-string in warn message of netcdf_monitor * Mixed Precision fixes and QOL (#118) * Ignore `.next` caches * CNST_OP20 is a true 64-bit * Translate: Fix reading parameters with the right precision * Multimodal metric: Skip reporting on expected values * Bad commit * Add license (Apache 2.0) (#105) Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Change deprecated `np.product()` to `np.prod()` (#120) Starting with numpy v1.25.0, `np.product()` is deprecated and `np.prod()` should be used instead. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Update GT4Py and DaCe to bring in refactored GT4Py/DaCe bridge that exposes control flow (#119) * Update DaCe to v1.0.2 DaCe v1.0.2 brings two fixes for DaCe transformations: one for DeadDataflowElimination and one for StateFusion. * Bump gt4py to include refactored gt4py/dace bridge * Test with modified pace pipeline - added this to re-trigger the new pace pipeline after limiting zarr to not install v3 (for now) because of breaking API changes. - added this note to re-trigger after fixing the pace pipeline to not pull requirements from `develop`. - added this note to ret-trigger after fixing the repo name * Revert "Test with modified pace pipeline" This reverts commit cd6560ea6129663d3445fafb36d02f03cb661b4d. --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Grid Mixed Precision and Coriolis force load (+ QOL) (#121) * Pass `dtype` down in allocator utils (gt4py_utils) * Allow coriolis forces to be read in * Edge factors are always 64-bit * Quantity QOL * Make sure to pass `dtype` to load the grid cleanly * Translate grid: load coriolis forces, area 64 is 64-bit * Bad merge * Typo * GEOS version of dz_min (#122) * Doc enhancment (#123) **Description** Port and adaptation of the initial commit of the documentation. Fixes issue https://github.com/NOAA-GFDL/NDSL/issues/113 **Checklist:** - [X] I have performed a self-review of my own code - [X] I have made corresponding changes to the documentation - [X] My changes generate no new warnings * Fix saving NetCDF for parallel translate test (#125) * Release candidate 2025.03.00 (#124) Co-authored-by: Florian Deconinck * Fix for bad merge of 7fdfa5 (#129) --------- Co-authored-by: Oliver Elbert Co-authored-by: Florian Deconinck Co-authored-by: Florian Deconinck Co-authored-by: Oliver Elbert Co-authored-by: Roman Cattaneo <> Co-authored-by: Christopher Kung Co-authored-by: Roman Cattaneo Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki <79879064+CharlesKrop@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki Co-authored-by: Tobias Wicky-Pfund * check domain size args only once * review & test --------- Co-authored-by: Frank Malatino <142349306+fmalatino@users.noreply.github.com> Co-authored-by: Oliver Elbert Co-authored-by: Florian Deconinck Co-authored-by: Florian Deconinck Co-authored-by: Oliver Elbert Co-authored-by: Christopher Kung Co-authored-by: Roman Cattaneo Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki <79879064+CharlesKrop@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki Co-authored-by: Frank Malatino * BREAKING CHANGE: change constructor of `QuantityFactory` (#228) * Breaking change: QuantityFactory from GridSizer and backend name Change `QuantityFactory` to initialize from a `GridSizer` (as previously) and a backend name (new). This effectively hides the previous `numpy` argument, which is effectively an internal allocator that users shouldn't need to know about. It's basically what `from_backend()` was doing before (which is now obsolete and was thus removed). This is a BREAKING CHANGE and users will need to update their codes if they instantiated QuantityFactories themselves. For users relying on the `boilerplate` module, no changes need to happen. * Keep QuantityFactory.from_backend() with a deprecation warning * Extended docstings This is mainly to force a new run of the pyshild workflow now that pyshield tests are exclusively using `QuantityFactory.from_backend()` which is compatible with changes proposed in this PR. * More updates to docstrings * fixup after rebase * Unrelated: tests are supposed to return `None` * fixup: move method back to current place --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * BREAKING CHANGE: remove ndsl/exceptions (#281) * BREAKING CHANGE: remove ndsl/exceptions The module has been deprecated last release and will be removed with this release. * fixup: documentation --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * BREAKING CHANGE: remove deprecated environment variables (#282) Those environment variable were deprecated in the last release and will be removed with this release. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * ci: specialize concurrency group per repo (#287) * ci: per repo concurrency group Note: using `${{ github.repository }}` sounds like a good idea. In practice, that doesn't play nice when the workflow is called from another repository because in that case, `github.repository` resolves to the calling repository. * fix file ending of called workflows --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Remove ndsl.Namelist (#297) * Removing ndsl.Namelist * Removing use_legacy_namelist flag functionality while keeping the flag itself. * - Removing ndsl.Namelist - Removing use_legacy_namelist flag functionality (while keeping the flag itself for now) * linting * Removing namelist.md and test_namelist.py * [feature] Common data types for orchestration via `compiletime` (#296) * `Quantity`, `Local` & `State` default to `dace.compiletime` auto-magically in orchestration * Fix type check, remove `Local` * Unit tests * Fix for type annotations that aren't type * BREAKING CHANGE: remove deprecated ndsl/units.py (#283) The module has been deprecated in the last release and is now removed in this release cycle. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * BREAKING CHANGE: removal of extra_dim_lengths (#295) `extra_dim_lengths` on the `GridSizer` was replaced by `data_dimensions` in the `2025.10.00` release. Now that the release is out, let's clean up and remove the deprecated API. This also includes `set_extra_dim_lengths()` in the `QuantityFactory`. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * BREAKING CHANGE: remove deprecated ndsl/filesystem.py (#284) The module was deprecated in the last release and will now be remove in this release cycle. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * docs: release checklist and documentation (#299) * release checklist and documentation * Add template for patch release * review --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * gt4py update: fix absolute indexin in debug backend (#302) Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * column min/max stencil - value and index (#301) * column min/max and a unit test * working unit test, pre-commit changes * alternative type ignore method * reverted previous change * using boilerplate code * reverting previous change * build: gt4py udpdate (fix upcasting, abs k test coverage) (#303) This PR updates GT4Py to bring the following up from GT4Py - fix upcasting such that users can have variable k-offsets with expressions consisting of different types. - increase test coverage for absolute k indexing Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * restore default PR template (#305) Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * BREAKING CHANGE: last 2025.10.00 deprecations (`CopyCorners`, `Quantity.values()`, `extra_dim_lengths` on `SubtileGridSizer` (#300) * Remove deprecated extra_dim_lengths of SubtileGridSizer This is a follow-up from https://github.com/NOAA-GFDL/NDSL/pull/295. * Remove deprecated CopyCorners * Remove deprecated `Quantity.values()` --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: remove leftover debug print statements (#308) This PR just removes a bunch of leftover debug print statements from `ndsl/` and `tests/`. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: make GridSizer an abstract base class (#306) `GridSizer` is de-facto already a base class with abstract methods `get_origin()`, `get_extent()`, and `get_shape()`. This PR just formalizes that intent. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: directly use gt_storage in QuantityFactory (#307) In the past, `QuantityFactory` would allow not only allocating with gt4py storage objects, but also directly from `numpy` or `cupy`. This ability was removed in PR https://github.com/NOAA-GFDL/NDSL/pull/228. With that removal comes the opportunity to streamline allocation in `QuantityFactory`, removing the need for a `Allocator` class in the middle. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * [Feature] Schedule Tree: refine transient (#304) * Fix axis merge * Remove debug print * Refine transients + utests * Lint * Revert to deactivating the experimental stree work * Use context manager for `_INTERNAL__SCHEDULE_TREE_OPTIMIZATION` * Typo * Clean refine transients code * Derive common strides layout from backend Refactor code to make re-sizing more compact in main algorithm Fix bad recursion Add todo list and verbose state of optimization * Lint * Remove `transient` to `State` lifetime - keep PR on target * Lint * build: gt4py update (upcasting in cast operations) (#310) This PR updates GT4Py to bring the fix for upcasting inside cast operations from GT4py to NDSL. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * build: gt4py update (precision of global constants) (#313) This PR updates GT4Py in NDSL to bring up a PR that fixes the precision of global constants. So far, we'd discard any type annotation on global constants and just use the default literal precision instead. With this change, we respect potential type annotations on global constants. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: Quantity constructor: `gt4py_backend` -> `backend` (#312) * refactor: force kwargs in ctor of Quantity/Local Force keyword arguments for optional arguments to those constructors. This will facilitate the `gt4py_backen` -> `backend` transition. * refactor: prefer `backend` over `gt4py_backend` in Quantity --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: prepare `ZarrMonitor` for upcomming `Comm` changes (#315) * refactor: ZarrMonitor: you'll have to bring your own comm objects * ci: run unit tests with optional zarr dependency --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Introduce a `single_code_path` flag in the DaCeConfig that forces a single cache to be built. (#311) * refactor: Deprecate optional backend argument to Quantity/Local (#314) Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: remove DummyComm as alias to LocalComm (#319) There's no need for this alias. We thus replace all occurrences for the alias with the underlying `LocalComm` directly. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * Deprecate `CopyCornersXY` (#317) `CopyCornersXY` are replaced with `CopyCornersX` and `CopyCornersY` in PyFV3. The class is currently unused and will be removed after the next release of NDSL. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: Deprecate `NullComm` in favor of `MPIComm` and `LocalComm` (#318) * unrelated: fix typo in warning message * refactor: change NullComm -> MPIComm in boilerplate This adds a test that the MPI communicator only has one rank if a single-tile setup is requested. * refactor: deprecate NullComm `NullComm` can be replaced with either `LocalComm` or `MPIComm`. --------- Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * build: gt4py update (self-assignment in serial vertical loops) (#316) This updates the gt4py dependency to bring up the fix that allows self-assignment with offset reads in K for serial (e.g. FORWARD/BACKWARD) vertical loops. See https://github.com/GridTools/gt4py/pull/2388 (in particular the test cases for details on what is allowed and what not). Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * refactor: specify backend when allocating a Quantity (#320) This PR is a follow-up from https://github.com/NOAA-GFDL/NDSL/pull/314 and adds the soon to be required `backend` parameter to constructor calls of `Quantity`. I missed a couple ones because PRs were merged in parallel, e.g. re-enabling the `ZarrMonitor` tests. Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> * [Translate test] Compute the percentage of changing grid points that error (#322) * Add `inputs` to MultiModalFloat metric Compute the percentage of changing grid points that errored * Lint * Removing --no_legacy_namelist flag (#323) * Added new functions: column_min_ddim & column_max_ddim and cooresponding test (#324) Functionality is the same as column_min/max, but separate functions are needed to handle cases with off grid data dimensions * [Optimization/Experimental] Better `AxisMerge` for column physics (#325) * Add `CleanUpScheduleTree` pass to prep for merge * Decluter axis merge logs, expose new pass * Verbose Pipeline passes (with temporary stree saves) * Deactivaete IF_SCOPE push, remove attempt to keep merging if next nodes not a MapScope * Docs of TODO * Draft of more extended testing * Fix `CartesianRefineTransients` for non-array * Some lint * Clean up the Tree of ForScope.loop_range * Utest: group test under a single orchestrated class, add missing feature and expected failures * [Feature/Experimental] Stree Refine Transient optimization pass: data dimensions and proper unit tests (#327) * Rename test for axis merge * Properly refine fields with data dimensions Fix indexing in memlets properly * utest: coverage of all implemented tests * Clean up timing print of orchestration * Lint * Fix bad reference to in/out memlets, remopve dead code, better code * Share test infrastructure, rename stencils * Lint * Better naming in utest stencils * [Update] GT4Py & DaCe updated to 2025.11.25 state of `main` (#330) * DaCe update: fix networkx dependency breaking with 3.6 * GT4Py: Runtime interval bounds in `debug` * [Tool] Best Guess Netcdfs diff (#177) * Best guess netcdfs compare * Add FieldBundle to debugger * lint * Move executable to `pyproject` * Lint * Update `gt4py` to capture improvement to user error (#331) * [Rework/Experimental] Refine Transient v2: `Ranges` for all! (#328) * Rework the `RefineTransient` to use `Range` - simpler, cleaner and more robust. Also props us for a better refine * Remove unused code --------- Co-authored-by: Tobias Wicky-Pfund * [Fix] [Translate] Update API for parallel test when using `MultiModalMetric` (#332) * Remove old options for `MultiModalFloatMetric` * Defensive programming: bail out if we can't measure the ref vs input diff --------- Co-authored-by: Tobias Wicky-Pfund Co-authored-by: Frank Malatino <142349306+fmalatino@users.noreply.github.com> Co-authored-by: Oliver Elbert Co-authored-by: Florian Deconinck Co-authored-by: Oliver Elbert Co-authored-by: Christopher Kung Co-authored-by: Roman Cattaneo Co-authored-by: Roman Cattaneo <1116746+romanc@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki <79879064+CharlesKrop@users.noreply.github.com> Co-authored-by: Charles Kropiewnicki Co-authored-by: Frank Malatino Co-authored-by: Janice Kim --- .github/PULL_REQUEST_TEMPLATE/README.md | 9 + .../PULL_REQUEST_TEMPLATE/release-patch.md | 32 + .github/PULL_REQUEST_TEMPLATE/release.md | 26 + ...T_TEMPLATE.md => pull_request_template.md} | 0 .github/workflows/create-cache.yaml | 6 +- .github/workflows/docs_build.yaml | 2 +- .github/workflows/docs_deploy.yaml | 2 +- .github/workflows/unit_tests.yaml | 2 +- docs/docstrings/testing/dummy_comm.md | 3 - docs/docstrings/top/exceptions.md | 3 - docs/docstrings/top/filesystem.md | 3 - docs/docstrings/top/namelist.md | 3 - docs/docstrings/top/units.md | 3 - docs/internal/README.md | 3 + docs/internal/release.md | 24 + docs/user/index.md | 4 +- external/dace | 2 +- external/gt4py | 2 +- mkdocs.yml | 7 +- ndsl/__init__.py | 6 - ndsl/boilerplate.py | 13 +- ndsl/comm/__init__.py | 3 +- ndsl/comm/communicator.py | 11 +- ndsl/comm/null_comm.py | 7 + ndsl/constants.py | 9 +- ndsl/debug/debugger.py | 3 + ndsl/dsl/__init__.py | 13 +- ndsl/dsl/caches/cache_location.py | 13 + ndsl/dsl/dace/dace_config.py | 27 +- ndsl/dsl/dace/orchestration.py | 49 +- ndsl/dsl/dace/stree/optimizations/__init__.py | 9 +- .../dace/stree/optimizations/axis_merge.py | 47 +- .../dace/stree/optimizations/clean_tree.py | 69 ++ .../stree/optimizations/refine_transients.py | 242 +++++++ ndsl/dsl/dace/stree/pipeline.py | 9 +- ndsl/dsl/dace/utils.py | 2 +- ndsl/dsl/ndsl_runtime.py | 3 +- ndsl/dsl/stencil.py | 15 +- ndsl/dsl/stencil_config.py | 2 + ndsl/exceptions.py | 16 - ndsl/filesystem.py | 37 - ndsl/grid/generation.py | 26 +- ndsl/grid/helper.py | 12 +- ndsl/initialization/allocator.py | 129 ++-- ndsl/initialization/grid_sizer.py | 25 +- ndsl/initialization/subtile_grid_sizer.py | 10 - ndsl/logging.py | 9 +- ndsl/monitor/netcdf_monitor.py | 2 + ndsl/monitor/zarr_monitor.py | 57 +- ndsl/namelist.py | 647 ------------------ ndsl/quantity/field_bundle.py | 1 + ndsl/quantity/local.py | 31 +- ndsl/quantity/metadata.py | 5 +- ndsl/quantity/quantity.py | 156 +++-- ndsl/stencils/__init__.py | 8 +- ndsl/stencils/column_operations.py | 103 +++ ndsl/stencils/corners.py | 187 +---- ndsl/stencils/testing/best_guess_diff.py | 194 ++++++ ndsl/stencils/testing/conftest.py | 24 - ndsl/stencils/testing/grid.py | 4 +- ndsl/stencils/testing/parallel_translate.py | 9 - ndsl/stencils/testing/test_translate.py | 13 +- ndsl/testing/comparison.py | 24 +- ndsl/testing/dummy_comm.py | 1 - ndsl/units.py | 33 - pyproject.toml | 4 +- setup.py | 1 - tests/dsl/orchestration/test_call.py | 44 +- tests/dsl/test_compilation_config.py | 10 +- tests/dsl/test_stencil.py | 35 +- tests/dsl/test_stencil_config.py | 4 +- tests/dsl/test_stencil_wrapper.py | 32 +- tests/grid/test_eta.py | 68 +- tests/initialization/test_allocator.py | 17 +- tests/mpi/__init__.py | 6 + tests/mpi/mpi_comm.py | 6 - tests/mpi/test_decomposition.py | 18 + tests/mpi/test_eta.py | 68 ++ tests/mpi/test_mpi_all_reduce_sum.py | 14 +- tests/mpi/test_mpi_halo_update.py | 17 +- tests/mpi/test_mpi_mock.py | 28 +- tests/quantity/test_boundary.py | 3 + tests/quantity/test_deepcopy.py | 3 + tests/quantity/test_local.py | 54 ++ tests/quantity/test_quantity.py | 144 +++- tests/quantity/test_storage.py | 12 +- tests/quantity/test_transpose.py | 16 +- tests/quantity/test_view.py | 34 + tests/stencils/test_stencils.py | 174 +++++ tests/stree_optimizer/__init__.py | 0 tests/stree_optimizer/sdfg_stree_tools.py | 36 + tests/stree_optimizer/test_merge.py | 174 +++++ tests/stree_optimizer/test_optimization.py | 69 -- .../stree_optimizer/test_transient_refine.py | 144 ++++ tests/test_basic_operations.py | 10 + tests/test_boilerplate.py | 4 +- tests/test_buffer.py | 1 - tests/test_caching_comm.py | 33 +- tests/test_cube_scatter_gather.py | 5 +- tests/test_decomposition.py | 20 +- tests/test_dimension_sizer.py | 54 +- tests/test_exceptions.py | 8 - tests/test_filesystem.py | 19 - tests/test_g2g_communication.py | 7 +- tests/test_halo_data_transformer.py | 6 +- tests/test_halo_update.py | 30 +- tests/test_halo_update_ranks.py | 5 +- tests/test_legacy_restart.py | 8 +- tests/test_namelist.py | 8 - tests/test_netcdf_monitor.py | 8 +- tests/test_null_comm.py | 14 +- tests/test_partitioner.py | 4 +- tests/test_sync_shared_boundary.py | 8 +- tests/test_tile_scatter.py | 12 +- tests/test_tile_scatter_gather.py | 5 +- tests/test_utils.py | 18 - tests/test_zarr_monitor.py | 86 ++- 117 files changed, 2354 insertions(+), 1705 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE/README.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/release-patch.md create mode 100644 .github/PULL_REQUEST_TEMPLATE/release.md rename .github/{PULL_REQUEST_TEMPLATE.md => pull_request_template.md} (100%) delete mode 100644 docs/docstrings/testing/dummy_comm.md delete mode 100644 docs/docstrings/top/exceptions.md delete mode 100644 docs/docstrings/top/filesystem.md delete mode 100644 docs/docstrings/top/namelist.md delete mode 100644 docs/docstrings/top/units.md create mode 100644 docs/internal/README.md create mode 100644 docs/internal/release.md create mode 100644 ndsl/dsl/dace/stree/optimizations/clean_tree.py create mode 100644 ndsl/dsl/dace/stree/optimizations/refine_transients.py delete mode 100644 ndsl/exceptions.py delete mode 100644 ndsl/filesystem.py delete mode 100644 ndsl/namelist.py create mode 100644 ndsl/stencils/column_operations.py create mode 100644 ndsl/stencils/testing/best_guess_diff.py delete mode 100644 ndsl/testing/dummy_comm.py delete mode 100644 ndsl/units.py delete mode 100644 tests/mpi/mpi_comm.py create mode 100644 tests/mpi/test_decomposition.py create mode 100644 tests/mpi/test_eta.py create mode 100644 tests/quantity/test_local.py create mode 100644 tests/stencils/test_stencils.py create mode 100644 tests/stree_optimizer/__init__.py create mode 100644 tests/stree_optimizer/sdfg_stree_tools.py create mode 100644 tests/stree_optimizer/test_merge.py delete mode 100644 tests/stree_optimizer/test_optimization.py create mode 100644 tests/stree_optimizer/test_transient_refine.py delete mode 100644 tests/test_exceptions.py delete mode 100644 tests/test_filesystem.py delete mode 100644 tests/test_namelist.py delete mode 100644 tests/test_utils.py diff --git a/.github/PULL_REQUEST_TEMPLATE/README.md b/.github/PULL_REQUEST_TEMPLATE/README.md new file mode 100644 index 00000000..e5980e53 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/README.md @@ -0,0 +1,9 @@ +# Pull request templates + +- `../pull_request_template.md`: The default pull request template. Used for PRs. +- `release.md`: Special template used for releasing a new version of NDSL. +- `release-patch.md`: Special template used for patch releases. + +Note: GitHub has limited support for multiple pull request templates. Most notably, templates can only be [selected by an URL query parameter](https://github.com/orgs/community/discussions/4620) and there's currently [no way to set a title](https://github.com/orgs/community/discussions/63965). + +Note: GitHub does not support having the default pull request template in this folder. All templates in this folder can only be used with the `template=` URL parameter (see note above). diff --git a/.github/PULL_REQUEST_TEMPLATE/release-patch.md b/.github/PULL_REQUEST_TEMPLATE/release-patch.md new file mode 100644 index 00000000..c588dd8f --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/release-patch.md @@ -0,0 +1,32 @@ +# Release NDSL version `YYYY.MM.PP` + +This PR patches release `YYYY.MM.PP` because + +1. reason +2. reason +3. ... + +## Pre-release checklist + +Things to do before the patch release. Helps to keep the fallout from this release as minimal as possible. + +- [ ] setup a draft PR in [NOAA-GFDL/pace](https://github.com/NOAA-GFDL/pace) with updated submodules for `NDSL`, `pyFV3`, and `pySHiELD`. + Don't merge yet - just let CI run and fix potential issues before the release. To be merged afterwards, see post-release checklist. + +## Release checklist + +What to do to actually release: + +- [x] create this PR to merge changes from `my-patches` into `main` + - use "squash merge" +- [ ] once merged, create a GitHub release and tag the new version + - version format is `[year].[month].[patch]`. Increase the patch version, e.g. `2025.10.01` if this is patching the `2025.10.00` release. + - let GitHub auto-generate release notes from the last tagged version +- [ ] send an announcement on Mattermost + +## Post-release checklist + +What to do after a release: + +- [ ] update the pace PR from the pre-commit checklist to include the released version of NDSL and merge it. +- [ ] in NDSL, merge `main` back into `develop` (potentially adding a commit to fix the issue "properly") diff --git a/.github/PULL_REQUEST_TEMPLATE/release.md b/.github/PULL_REQUEST_TEMPLATE/release.md new file mode 100644 index 00000000..00aa3403 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/release.md @@ -0,0 +1,26 @@ +# Release NDSL version `YYYY.MM.00` + +## Pre-release checklist + +Things to do before the release. Helps to keep the fallout from this release as minimal as possible. + +- [ ] setup a draft PR in [NOAA-GFDL/pace](https://github.com/NOAA-GFDL/pace) with updated submodules for `NDSL`, `pyFV3`, and `pySHiELD`. + Don't merge yet - just let CI run and fix potential issues before the release. To be merged afterwards, see post-release checklist. + +## Release checklist + +What to do to actually release: + +- [x] create this PR to merge changes from `develop` into `main` + - merge as "Merge commit" +- [ ] once merged, create a GitHub release and tag the new version + - version format is `[year].[month].[patch]`, e.g. `2025.10.00` + - let GitHub auto-generate release notes from the last tagged version +- [ ] send an announcement on Mattermost + +## Post-release checklist + +What to do after a release: + +- [ ] update the pace PR from the pre-commit checklist to include the released version of NDSL and merge it. +- [ ] merge breaking changes in NDSL (e.g. search for deprecation warnings) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/pull_request_template.md similarity index 100% rename from .github/PULL_REQUEST_TEMPLATE.md rename to .github/pull_request_template.md diff --git a/.github/workflows/create-cache.yaml b/.github/workflows/create-cache.yaml index 6d823662..f5e38a6b 100644 --- a/.github/workflows/create-cache.yaml +++ b/.github/workflows/create-cache.yaml @@ -14,7 +14,7 @@ on: # Cancel running jobs if there's a newer push concurrency: - group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }} + group: ndsl-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: @@ -45,8 +45,8 @@ jobs: # GitHub Actions cache of pyFV3 test data pyFV3_test_data: - uses: NOAA-GFDL/pyFV3/.github/workflows/create_cache.yml@develop + uses: NOAA-GFDL/pyFV3/.github/workflows/create_cache.yaml@develop # GitHub Actions cache of pySHiELD test data pySHiELD_test_data: - uses: NOAA-GFDL/pySHiELD/.github/workflows/create_cache.yml@develop + uses: NOAA-GFDL/pySHiELD/.github/workflows/create_cache.yaml@develop diff --git a/.github/workflows/docs_build.yaml b/.github/workflows/docs_build.yaml index 3b0f1ed1..4b59ed78 100644 --- a/.github/workflows/docs_build.yaml +++ b/.github/workflows/docs_build.yaml @@ -28,7 +28,7 @@ jobs: python-version: '3.11' - name: Install mkdocs - run: pip install mkdocs-material mkdocstrings[python] + run: pip install mkdocs-material mkdocstrings[python] mkdocs-exclude - name: Build docs run: mkdocs build diff --git a/.github/workflows/docs_deploy.yaml b/.github/workflows/docs_deploy.yaml index 1e6659d3..cbbb381c 100644 --- a/.github/workflows/docs_deploy.yaml +++ b/.github/workflows/docs_deploy.yaml @@ -29,7 +29,7 @@ jobs: python-version: 3.11 - name: Install dependencies - run: pip install mkdocs-material mkdocstrings[python] + run: pip install mkdocs-material mkdocstrings[python] mkdocs-exclude - name: Deploy docs to GitHub Pages run: mkdocs gh-deploy --force diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index bd90f66c..ef9fdcea 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -32,7 +32,7 @@ jobs: run: pip3 install mpich - name: Install Python packages - run: pip3 install .[test] + run: pip3 install .[test,zarr] - name: Run serial-cpu tests run: coverage run --rcfile=pyproject.toml -m pytest tests diff --git a/docs/docstrings/testing/dummy_comm.md b/docs/docstrings/testing/dummy_comm.md deleted file mode 100644 index 538c01d2..00000000 --- a/docs/docstrings/testing/dummy_comm.md +++ /dev/null @@ -1,3 +0,0 @@ -# dummy_comm - -::: testing.dummy_comm diff --git a/docs/docstrings/top/exceptions.md b/docs/docstrings/top/exceptions.md deleted file mode 100644 index 8803fee0..00000000 --- a/docs/docstrings/top/exceptions.md +++ /dev/null @@ -1,3 +0,0 @@ -# exceptions - -::: exceptions diff --git a/docs/docstrings/top/filesystem.md b/docs/docstrings/top/filesystem.md deleted file mode 100644 index 9f05cc3a..00000000 --- a/docs/docstrings/top/filesystem.md +++ /dev/null @@ -1,3 +0,0 @@ -# filesystem - -::: filesystem diff --git a/docs/docstrings/top/namelist.md b/docs/docstrings/top/namelist.md deleted file mode 100644 index c129312a..00000000 --- a/docs/docstrings/top/namelist.md +++ /dev/null @@ -1,3 +0,0 @@ -# namelist - -::: namelist diff --git a/docs/docstrings/top/units.md b/docs/docstrings/top/units.md deleted file mode 100644 index 5d2efcf8..00000000 --- a/docs/docstrings/top/units.md +++ /dev/null @@ -1,3 +0,0 @@ -# units - -::: units diff --git a/docs/internal/README.md b/docs/internal/README.md new file mode 100644 index 00000000..d8eea9dc --- /dev/null +++ b/docs/internal/README.md @@ -0,0 +1,3 @@ +# Internal documentation + +This folder contains internal / developer documentation and processes, e.g. how to build a release. This folder is thus ignored when building the public facing documentation from the `docs/` folder. diff --git a/docs/internal/release.md b/docs/internal/release.md new file mode 100644 index 00000000..7b804a82 --- /dev/null +++ b/docs/internal/release.md @@ -0,0 +1,24 @@ +# Release a new version + +This internal documentation guides you through the process of releasing a new version of NDSL. It is very simple: + +1. Click [create a release](https://github.com/NOAA-GFDL/NDSL/compare/main...develop?expand=1&template=release.md) and follow the steps in the release checklist. + +## Patch release + +Every now and then, we'll need to patch the currently released version of NDSL. To do so, follow these steps: + +1. Create a branch from `main`. +2. Commit your changes on that branch. +3. Use the following URL and follow the steps in the patch release checklist. + +As an example, you'd go and create branch `my-patches` from `main` + +```bash +git checkout main +git switch -c my-patches +# do changes ... +git push +``` + +and in that case, the URL with the patch release template is: . diff --git a/docs/user/index.md b/docs/user/index.md index 46ddc3eb..106ec159 100644 --- a/docs/user/index.md +++ b/docs/user/index.md @@ -12,13 +12,13 @@ NDSL tries to have sensible defaults. In cases you want tweak something, here ar ### Literal precision (float/int) -Unspecified integer and floating point literals (e.g. `42` and `3.1415`) default to 64-bit precision. This can be changed with the environment variable `PACE_FLOAT_PRECISION`. +Unspecified integer and floating point literals (e.g. `42` and `3.1415`) default to 64-bit precision. This can be changed with the environment variable `NDSL_LITERAL_PRECISION`. For mixed precision code, you can specify the "hard coded" precision with type hints and casts, e.g. ```python with computation(PARALLEL), interval(...): - # Either 32-bit or 64-bit depending on `PACE_FLOAT_PRECISION` + # Either 32-bit or 64-bit depending on `NDSL_LITERAL_PRECISION` my_int = 42 my_float = 3.1415 diff --git a/external/dace b/external/dace index 1033dfcf..4a9f4602 160000 --- a/external/dace +++ b/external/dace @@ -1 +1 @@ -Subproject commit 1033dfcf9d118856d82c6ee8d6f6cfacec662335 +Subproject commit 4a9f46027147a52e2b0ac9eedeb101c3ab27d0bf diff --git a/external/gt4py b/external/gt4py index e140f707..a7429094 160000 --- a/external/gt4py +++ b/external/gt4py @@ -1 +1 @@ -Subproject commit e140f70731b723c519239e027237fb6281f4733b +Subproject commit a7429094d7dd9418a2e3c1e57b2e9c783d79250d diff --git a/mkdocs.yml b/mkdocs.yml index 1ca8682c..24aa01e0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -24,15 +24,12 @@ nav: - "boilerplate": docstrings/top/boilerplate.md - "buffer": docstrings/top/buffer.md - "constants": docstrings/top/constants.md - - "exceptions": docstrings/top/exceptions.md - - "filesystem": docstrings/top/filesystem.md - "io": docstrings/top/io.md - "logging": docstrings/top/logging.md - "namelist": docstrings/top/namelist.md - "optional_imports": docstrings/top/optional_imports.md - "types": docstrings/top/types.md - "typing": docstrings/top/typing.md - - "units": docstrings/top/units.md - "utils": docstrings/top/utils.md - checkpointer: - "base": docstrings/checkpointer/base.md @@ -106,7 +103,6 @@ nav: - "tridiag": docstrings/stencils/tridiag.md - testing: - "comparison": docstrings/testing/comparison.md - - "dummy_comm": docstrings/testing/dummy_comm.md - "perturbation": docstrings/testing/perturbation.md - viz: - "cube_sphere": docstrings/viz/cube_sphere.md @@ -149,6 +145,9 @@ plugins: paths: [./ndsl] # Adjust this path to where your Python modules are options: show_source: false + - exclude: + glob: + - internal/* watch: # reload when the glossary file is updated diff --git a/ndsl/__init__.py b/ndsl/__init__.py index c7730282..3c2a018c 100644 --- a/ndsl/__init__.py +++ b/ndsl/__init__.py @@ -19,18 +19,15 @@ from .dsl.ndsl_runtime import NDSLRuntime from .dsl.stencil import FrozenStencil, GridIndexing, StencilFactory, TimingCollector from .dsl.stencil_config import CompilationConfig, RunMode, StencilConfig -from .exceptions import OutOfBoundsError from .halo.data_transformer import HaloExchangeSpec from .halo.updater import HaloUpdater, HaloUpdateRequest, VectorInterfaceHaloUpdater from .initialization import GridSizer, QuantityFactory, SubtileGridSizer from .monitor.netcdf_monitor import NetCDFMonitor -from .namelist import Namelist from .performance.collector import NullPerformanceCollector, PerformanceCollector from .performance.profiler import NullProfiler, Profiler from .performance.report import Experiment, Report, TimeReport from .quantity import Local, Quantity, State from .quantity.field_bundle import FieldBundle, FieldBundleType # Break circular import -from .testing.dummy_comm import DummyComm from .types import Allocator from .utils import MetaEnumStr @@ -62,7 +59,6 @@ "CompilationConfig", "RunMode", "StencilConfig", - "OutOfBoundsError", "HaloExchangeSpec", "HaloUpdater", "HaloUpdateRequest", @@ -72,7 +68,6 @@ "SubtileGridSizer", "ndsl_log", "NetCDFMonitor", - "Namelist", "NullPerformanceCollector", "PerformanceCollector", "NullProfiler", @@ -83,7 +78,6 @@ "Quantity", "FieldBundle", "FieldBundleType", - "DummyComm", "Allocator", "MetaEnumStr", "State", diff --git a/ndsl/boilerplate.py b/ndsl/boilerplate.py index d17d6349..c6fb82f8 100644 --- a/ndsl/boilerplate.py +++ b/ndsl/boilerplate.py @@ -3,7 +3,7 @@ DaceConfig, DaCeOrchestration, GridIndexing, - NullComm, + MPIComm, QuantityFactory, RunMode, StencilConfig, @@ -54,6 +54,13 @@ def _get_factories( ) if topology == "tile": + mpi_comm = MPIComm() + if mpi_comm.Get_size() != 1: + raise ValueError( + "Single tile topology requested with an MPI communicator of size " + f"{mpi_comm.Get_size()} > 1. Re-configure MPI to run on only one rank." + ) + partitioner = TilePartitioner((1, 1)) sizer = SubtileGridSizer.from_tile_params( nx_tile=nx, @@ -63,13 +70,13 @@ def _get_factories( layout=partitioner.layout, tile_partitioner=partitioner, ) - comm = TileCommunicator(comm=NullComm(0, 1, 42), partitioner=partitioner) + comm = TileCommunicator(comm=mpi_comm, partitioner=partitioner) else: raise NotImplementedError(f"Topology {topology} is not implemented.") grid_indexing = GridIndexing.from_sizer_and_communicator(sizer, comm) stencil_factory = StencilFactory(config=stencil_config, grid_indexing=grid_indexing) - quantity_factory = QuantityFactory.from_backend(sizer, backend) + quantity_factory = QuantityFactory(sizer, backend=backend) return stencil_factory, quantity_factory diff --git a/ndsl/comm/__init__.py b/ndsl/comm/__init__.py index 580f881a..ec886bae 100644 --- a/ndsl/comm/__init__.py +++ b/ndsl/comm/__init__.py @@ -5,7 +5,7 @@ CachingRequestReader, CachingRequestWriter, ) -from .comm_abc import Comm, Request +from .comm_abc import Comm, ReductionOperator, Request __all__ = [ @@ -15,5 +15,6 @@ "CachingRequestReader", "CachingRequestWriter", "Comm", + "ReductionOperator", "Request", ] diff --git a/ndsl/comm/communicator.py b/ndsl/comm/communicator.py index 6eee4514..983a35b2 100644 --- a/ndsl/comm/communicator.py +++ b/ndsl/comm/communicator.py @@ -108,7 +108,7 @@ def _create_all_reduce_quantity( units=input_metadata.units, origin=input_metadata.origin, extent=input_metadata.extent, - gt4py_backend=input_metadata.gt4py_backend, + backend=input_metadata.backend, allow_mismatch_float_precision=False, ) return all_reduce_quantity @@ -228,7 +228,7 @@ def _get_gather_recv_quantity( units=send_metadata.units, origin=tuple([0 for dim in send_metadata.dims]), extent=global_extent, - gt4py_backend=send_metadata.gt4py_backend, + backend=send_metadata.backend, allow_mismatch_float_precision=True, ) return recv_quantity @@ -241,7 +241,7 @@ def _get_scatter_recv_quantity( send_metadata.np.zeros(shape, dtype=send_metadata.dtype), # type: ignore dims=send_metadata.dims, units=send_metadata.units, - gt4py_backend=send_metadata.gt4py_backend, + backend=send_metadata.backend, allow_mismatch_float_precision=True, ) return recv_quantity @@ -326,6 +326,7 @@ def gather_state(self, send_state=None, recv_state=None, transfer_type=None): # dims=quantity.dims, units=quantity.units, allow_mismatch_float_precision=True, + backend=quantity.backend, ) if recv_state is not None and name in recv_state: tile_quantity = self.gather( @@ -841,7 +842,7 @@ def _get_gather_recv_quantity( units=metadata.units, origin=(0,) + tuple([0 for dim in metadata.dims]), extent=global_extent, - gt4py_backend=metadata.gt4py_backend, + backend=metadata.backend, allow_mismatch_float_precision=True, ) return recv_quantity @@ -861,7 +862,7 @@ def _get_scatter_recv_quantity( metadata.np.zeros(shape, dtype=metadata.dtype), # type: ignore dims=metadata.dims[1:], units=metadata.units, - gt4py_backend=metadata.gt4py_backend, + backend=metadata.backend, allow_mismatch_float_precision=True, ) return recv_quantity diff --git a/ndsl/comm/null_comm.py b/ndsl/comm/null_comm.py index 2d67c78f..bee499ce 100644 --- a/ndsl/comm/null_comm.py +++ b/ndsl/comm/null_comm.py @@ -1,4 +1,5 @@ import copy +import warnings from collections.abc import Mapping from typing import Any, TypeVar, cast @@ -33,6 +34,12 @@ def __init__(self, rank: int, total_ranks: int, fill_value: T = default_fill_val fill_value: fill halos with this value when performing halo updates. """ + warnings.warn( + "NullComm is deprecated and will be removed with the next version of NDSL. " + "Use MPIComm or LocalComm instead.", + DeprecationWarning, + stacklevel=2, + ) self.rank = rank self.total_ranks = total_ranks self._fill_value = fill_value diff --git a/ndsl/constants.py b/ndsl/constants.py index 82d16d30..a02f70f6 100644 --- a/ndsl/constants.py +++ b/ndsl/constants.py @@ -20,14 +20,7 @@ class ConstantVersions(Enum): def _get_constant_version( default: Literal["GFDL", "UFS", "GEOS"] = "UFS", ) -> Literal["GFDL", "UFS", "GEOS"]: - if os.getenv("PACE_CONSTANTS", ""): - ndsl_log.warning("PACE_CONSTANTS is deprecated. Use NDSL_CONSTANTS instead.") - if os.getenv("NDSL_CONSTANTS", ""): - ndsl_log.warning( - "PACE_CONSTANTS and NDSL_CONSTANTS were both specified. NDSL_CONSTANTS will take precedence." - ) - - constants_as_str = os.getenv("NDSL_CONSTANTS", os.getenv("PACE_CONSTANTS", default)) + constants_as_str = os.getenv("NDSL_CONSTANTS", default) expected: list[Literal["GFDL", "UFS", "GEOS"]] = ["GFDL", "UFS", "GEOS"] if constants_as_str not in expected: diff --git a/ndsl/debug/debugger.py b/ndsl/debug/debugger.py index b9de8631..14037428 100644 --- a/ndsl/debug/debugger.py +++ b/ndsl/debug/debugger.py @@ -9,6 +9,7 @@ from ndsl.logging import ndsl_log from ndsl.quantity import Quantity +from ndsl.quantity.field_bundle import FieldBundle @dataclasses.dataclass @@ -87,6 +88,8 @@ def save_as_dataset(self, data_as_dict: dict, savename: str, is_in: bool) -> Non data_arrays[f"{name}.{field.name}"] = self._to_xarray( getattr(data, field.name), field.name ) + elif isinstance(data, FieldBundle): + data_arrays[name] = data.quantity.field_as_xarray else: data_arrays[name] = self._to_xarray(data, name) diff --git a/ndsl/dsl/__init__.py b/ndsl/dsl/__init__.py index 5fa508d2..f931129b 100644 --- a/ndsl/dsl/__init__.py +++ b/ndsl/dsl/__init__.py @@ -17,18 +17,7 @@ def _get_literal_precision(default: Literal["32", "64"] = "64") -> Literal["32", "64"]: - if os.getenv("PACE_FLOAT_PRECISION", ""): - ndsl_log.warning( - "PACE_FLOAT_PRECISION is deprecated. Use NDSL_LITERAL_PRECISION instead." - ) - if os.getenv("NDSL_LITERAL_PRECISION", ""): - ndsl_log.warning( - "PACE_FLOAT_PRECISION and NDSL_LOGLEVEL were both specified. NDSL_LITERAL_PRECISION will take precedence." - ) - - precision = os.getenv( - "NDSL_LITERAL_PRECISION", os.getenv("PACE_FLOAT_PRECISION", default) - ) + precision = os.getenv("NDSL_LITERAL_PRECISION", default) expected: list[Literal["32", "64"]] = ["32", "64"] if precision in expected: diff --git a/ndsl/dsl/caches/cache_location.py b/ndsl/dsl/caches/cache_location.py index 1c1e7ec8..87d608dd 100644 --- a/ndsl/dsl/caches/cache_location.py +++ b/ndsl/dsl/caches/cache_location.py @@ -5,7 +5,20 @@ def identify_code_path( rank: int, partitioner: Partitioner, + single_code_path: bool, ) -> FV3CodePath: + """Determine which code path your rank will hit. + + If single_code_path is True, single_code_path is True, + only one code path exists (case of doubly periodic grid). + If single_code_path is False, we are in the case of the + cube-sphere and we will look at our position on the tile.""" + + # Doubly-periodic or single tile grid + if single_code_path: + return FV3CodePath.All + + # Cube-sphere if partitioner.layout == (1, 1): return FV3CodePath.All elif partitioner.layout[0] == 1 or partitioner.layout[1] == 1: diff --git a/ndsl/dsl/dace/dace_config.py b/ndsl/dsl/dace/dace_config.py index d76e10da..600a12c3 100644 --- a/ndsl/dsl/dace/dace_config.py +++ b/ndsl/dsl/dace/dace_config.py @@ -8,14 +8,13 @@ from dace.frontend.python.parser import DaceProgram from gt4py.cartesian.config import GT4PY_COMPILE_OPT_LEVEL +from ndsl import LocalComm from ndsl.comm.communicator import Communicator -from ndsl.comm.null_comm import NullComm from ndsl.comm.partitioner import Partitioner from ndsl.dsl.caches.cache_location import identify_code_path from ndsl.dsl.caches.codepath import FV3CodePath from ndsl.dsl.gt4py_utils import is_gpu_backend from ndsl.dsl.typing import get_precision -from ndsl.logging import ndsl_log from ndsl.optional_imports import cupy as cp from ndsl.performance.collector import NullPerformanceCollector, PerformanceCollector @@ -31,14 +30,7 @@ def _debug_dace_orchestration() -> bool: Debugging Dace orchestration deeper can be done by turning on `syncdebug`. We control this Dace configuration below with our own override. """ - if os.getenv("PACE_DACE_DEBUG", ""): - ndsl_log.warning("PACE_DACE_DEBUG is deprecated. Use NDSL_DACE_DEBUG instead.") - if os.getenv("NDSL_DACE_DEBUG", ""): - ndsl_log.warning( - "PACE_DACE_DEBUG and NDSL_DACE_DEBUG were both specified. NDSL_DACE_DEBUG will take precedence." - ) - - return os.getenv("NDSL_DACE_DEBUG", os.getenv("PACE_DACE_DEBUG", "False")) == "True" + return os.getenv("NDSL_DACE_DEBUG", "False") == "True" def _is_corner(rank: int, partitioner: Partitioner) -> bool: @@ -110,6 +102,9 @@ def _determine_compiling_ranks( 15 -> 8 """ + if config._single_code_path: + return config.my_rank == 0 + # Tile 0 compiles if partitioner.tile_index(config.my_rank) != 0: return False @@ -155,6 +150,7 @@ def __init__( tile_nz: int = 0, orchestration: DaCeOrchestration | None = None, time: bool = False, + single_code_path: bool = False, ): """Specialize the DaCe configuration for NDSL use. @@ -171,8 +167,11 @@ def __init__( orchestration: orchestration mode from DaCeOrchestration time: trigger performance collection, available to user with `performance_collector` + single_codepath: code is expected to be the same on every rank (case + of column-physics) and therefore can be compiled once """ + self._single_code_path = single_code_path # Recording SDFG loaded for fast re-access # ToDo: DaceConfig becomes a bit more than a read-only config # with this. Should be refactored into a DaceExecutor carrying a config @@ -181,7 +180,7 @@ def __init__( PerformanceCollector( "InternalOrchestrationTimer", comm=( - communicator.comm if communicator is not None else NullComm(0, 6, 0) + LocalComm(0, 6, {}) if communicator is None else communicator.comm ), ) if time @@ -339,7 +338,11 @@ def __init__( if communicator: self.my_rank = communicator.rank self.rank_size = communicator.comm.Get_size() - self.code_path = identify_code_path(self.my_rank, communicator.partitioner) + self.code_path = identify_code_path( + self.my_rank, + communicator.partitioner, + self._single_code_path, + ) self.layout = communicator.partitioner.layout self.do_compile = ( DEACTIVATE_DISTRIBUTED_DACE_COMPILE diff --git a/ndsl/dsl/dace/orchestration.py b/ndsl/dsl/dace/orchestration.py index 43b6c4f3..049a1095 100644 --- a/ndsl/dsl/dace/orchestration.py +++ b/ndsl/dsl/dace/orchestration.py @@ -16,6 +16,7 @@ from dace.frontend.python.common import SDFGConvertible from dace.frontend.python.parser import DaceProgram from dace.transformation.auto.auto_optimize import make_transients_persistent +from dace.transformation.dataflow import MapExpansion from dace.transformation.helpers import get_parent_map from dace.transformation.passes.simplify import SimplifyPass from gt4py import storage @@ -34,7 +35,12 @@ sdfg_nan_checker, ) from ndsl.dsl.dace.stree import CPUPipeline, GPUPipeline -from ndsl.dsl.dace.stree.optimizations import AxisIterator, CartesianAxisMerge +from ndsl.dsl.dace.stree.optimizations import ( + AxisIterator, + CartesianAxisMerge, + CartesianRefineTransients, + CleanUpScheduleTree, +) from ndsl.dsl.dace.utils import ( DaCeProgress, memory_static_analysis, @@ -42,14 +48,12 @@ ) from ndsl.logging import ndsl_log from ndsl.optional_imports import cupy as cp +from ndsl.quantity import Quantity, State _INTERNAL__SCHEDULE_TREE_OPTIMIZATION: bool = False """INTERNAL: Developer flag to turn the untested schedule tree roundtrip optimizer.""" -_INTERNAL__SCHEDULE_TREE_PASSES = [CartesianAxisMerge(AxisIterator._K)] -"""INTERNAL: Default schedule passes for CPU. To be replaced with proper configuration.""" - def dace_inhibitor(func: Callable) -> Callable: """Triggers callback generation wrapping `func` while doing DaCe parsing.""" @@ -125,7 +129,7 @@ def _simplify( # We disable ScalarToSymbolPromotion because it might push symbols onto edges # that DaCe itself can't parse anymore later, e.g. casts, inlined function # calls or (complicated) field accesses. - skip=["ScalarToSymbolPromotion"], + skip={"ScalarToSymbolPromotion"}, ).apply_pass(sdfg, {}) @@ -156,14 +160,39 @@ def _build_sdfg( _simplify(sdfg) if _INTERNAL__SCHEDULE_TREE_OPTIMIZATION: + # Here be 🐉 - but tests exists in test_optimization.py with DaCeProgress(config, "Schedule Tree: generate from SDFG"): + # Break all loops into uni-dimensional loops to simplify optimizations + sdfg.apply_transformations_repeated(MapExpansion, validate=True) stree = sdfg.as_schedule_tree() with DaCeProgress(config, "Schedule Tree: optimization"): if config.is_gpu_backend(): GPUPipeline().run(stree) else: - CPUPipeline(passes=_INTERNAL__SCHEDULE_TREE_PASSES).run(stree) + passes = [] + + if config.get_backend() == "dace:cpu_kfirst": + passes.extend( + [ + CleanUpScheduleTree(), + CartesianAxisMerge(AxisIterator._I), + CartesianAxisMerge(AxisIterator._J), + CartesianAxisMerge(AxisIterator._K), + CartesianRefineTransients(config.get_backend()), + ] + ) + else: + passes.extend( + [ + CleanUpScheduleTree(), + CartesianAxisMerge(AxisIterator._K), + CartesianAxisMerge(AxisIterator._I), + CartesianAxisMerge(AxisIterator._J), + CartesianRefineTransients(config.get_backend()), + ] + ) + CPUPipeline(passes=passes).run(stree) with DaCeProgress(config, "Schedule Tree: go back to SDFG"): sdfg = stree.as_sdfg(skip={"ScalarToSymbolPromotion"}) @@ -543,12 +572,18 @@ def orchestrate( if dace_compiletime_args is None: dace_compiletime_args = [] - func = type.__getattribute__(type(obj), method_to_orchestrate) + func: Callable = type.__getattribute__(type(obj), method_to_orchestrate) # Flag argument as dace.constant for argument in dace_compiletime_args: func.__annotations__[argument] = DaceCompiletime + for arg_name, annotation in func.__annotations__.items(): + if annotation in [Quantity, State] or ( + isinstance(annotation, type) and issubclass(annotation, State) + ): + func.__annotations__[arg_name] = DaceCompiletime + # Build DaCe orchestrated wrapper # This is a JIT object, e.g. DaCe compilation will happen on call wrapped = _LazyComputepathMethod(func, config).__get__(obj) diff --git a/ndsl/dsl/dace/stree/optimizations/__init__.py b/ndsl/dsl/dace/stree/optimizations/__init__.py index 47c764b3..73497f93 100644 --- a/ndsl/dsl/dace/stree/optimizations/__init__.py +++ b/ndsl/dsl/dace/stree/optimizations/__init__.py @@ -1,4 +1,11 @@ from .axis_merge import AxisIterator, CartesianAxisMerge +from .clean_tree import CleanUpScheduleTree +from .refine_transients import CartesianRefineTransients -__all__ = ["AxisIterator", "CartesianAxisMerge"] +__all__ = [ + "AxisIterator", + "CartesianAxisMerge", + "CartesianRefineTransients", + "CleanUpScheduleTree", +] diff --git a/ndsl/dsl/dace/stree/optimizations/axis_merge.py b/ndsl/dsl/dace/stree/optimizations/axis_merge.py index 262a6021..1ee2ff70 100644 --- a/ndsl/dsl/dace/stree/optimizations/axis_merge.py +++ b/ndsl/dsl/dace/stree/optimizations/axis_merge.py @@ -20,6 +20,10 @@ ) +# Buggy passes that should work +PUSH_IFSCOPE_DOWNWARD = False + + def _is_axis_map(node: stree.MapScope, axis: AxisIterator) -> bool: """Returns true if node is a map over the given axis.""" map_parameter = node.node.params @@ -171,7 +175,7 @@ def __init__( self.eager = eager def __str__(self) -> str: - return f"CartesianAxisMerge({self.axis.name})" + return f"CartesianAxisMerge_{self.axis.name}" def _merge_node( self, @@ -187,7 +191,7 @@ def _merge_node( if isinstance(node, stree.MapScope): return self._map_overcompute_merge(node, nodes) - elif isinstance(node, stree.IfScope): + elif PUSH_IFSCOPE_DOWNWARD and isinstance(node, stree.IfScope): return self._push_ifelse_down(node, nodes) elif isinstance(node, stree.TaskletNode): return self._push_tasklet_down(node, nodes) @@ -221,7 +225,7 @@ def _push_tasklet_down( return 0 # Tasklet is a callback next_index = list_index(nodes, the_tasklet) - if next_index == len(nodes): + if next_index == len(nodes) - 1: return 0 # Last node - done next_node = nodes[next_index + 1] @@ -231,7 +235,6 @@ def _push_tasklet_down( merged = self._merge_node(next_node, nodes) # Attempt to push the tasklet in the next map - ndsl_log.debug(" Push tasklet down into next map") next_node = nodes[next_index + 1] if isinstance(next_node, stree.MapScope): next_node.children.insert(0, the_tasklet) @@ -292,7 +295,6 @@ def _push_ifelse_down( return merged # We are good to go - swap it all - ndsl_log.debug(f" Push IF {the_if.condition.as_string} down") inner_if_map = the_if.children[0] # Swap IF & maps @@ -322,18 +324,20 @@ def _map_overcompute_merge( the_map: stree.MapScope, nodes: list[stree.ScheduleTreeNode], ) -> int: - if _last_node(nodes, the_map): - return 0 + # End of nodes OR + # Not the right axis + # --> recurse + if _last_node(nodes, the_map) or not _is_axis_map(the_map, self.axis): + merged = 0 + for child in the_map.children: + merged += self._merge_node(child, the_map.children) + return merged next_node = _get_next_node(nodes, the_map) - # If the next node is not a MapScope - recurse + # Next node is not a MapScope - no merge if not isinstance(next_node, stree.MapScope): - merged = self._merge_node(next_node, nodes) - new_next_node = _get_next_node(nodes, the_map) - if new_next_node == next_node: - return merged - return merged + self._merge_node(the_map, nodes) + return 0 # Attempt to merge consecutive maps if not _can_merge_axis_maps(the_map, next_node, self.axis): @@ -354,10 +358,6 @@ def _map_overcompute_merge( ] ) - ndsl_log.debug( - f" Merge {self.axis.name} map: {first_range} ⋃ {second_range} -> {merged_range}" - ) - # push IfScope down if children are just maps axis_as_str = the_map.node.params[0] first_map = InsertOvercomputationGuard( @@ -418,11 +418,17 @@ def visit_ScheduleTreeRoot(self, node: stree.ScheduleTreeRoot) -> None: # in the tasklet... # NormalizeAxisSymbol(self.axis).visit(node) + # TODO: we are meging single axis, we could prefix those runs by moving + # if scope down inside the map if it has the proper axis, preparing + # for a better merging scope. If we can't nerge, we can revert this + # orep step + overall_merged = 0 + passes_apply = 0 i = 0 while True: i += 1 - ndsl_log.debug(f"🔥 Merge attempt #{i}") + # ndsl_log.debug(f"🔥 Merge attempt #{i}") previous_children = copy.deepcopy(node.children) try: merged = self._merge(node) @@ -435,10 +441,11 @@ def visit_ScheduleTreeRoot(self, node: stree.ScheduleTreeRoot) -> None: # If we didn't merge, we revert the children # to the previous state if merged == 0: - ndsl_log.debug("🥹 No merges, revert!") + # ndsl_log.debug("🥹 No merges, revert!") node.children = previous_children break + passes_apply += 1 ndsl_log.debug( - f"🚀 Cartesian Axis Merge ({self.axis.name}): {overall_merged} map merged" + f"🚀 Cartesian Axis Merge ({self.axis.name}): {overall_merged} map merged in {passes_apply} passes" ) diff --git a/ndsl/dsl/dace/stree/optimizations/clean_tree.py b/ndsl/dsl/dace/stree/optimizations/clean_tree.py new file mode 100644 index 00000000..41056ec4 --- /dev/null +++ b/ndsl/dsl/dace/stree/optimizations/clean_tree.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +import dace.sdfg.analysis.schedule_tree.treenodes as stree + +from ndsl import ndsl_log + + +class CleanUpScheduleTree(stree.ScheduleNodeTransformer): + """Clean up unused nodes, or nodes barrying further optimizations.""" + + def __init__(self) -> None: + self.cleaned_state_boundaries = 0 + + def __str__(self) -> str: + return "CleanUpScheduleTree" + + def _remove_state_boundaries_from_my_childs( + self, node: stree.ScheduleTreeScope + ) -> None: + to_remove = [ + child + for child in node.children + if isinstance(child, stree.StateBoundaryNode) + ] + for to_remove_child in to_remove: + self.cleaned_state_boundaries += 1 + node.children.remove(to_remove_child) + + def visit_WhileScope(self, node: stree.WhileScope) -> stree.WhileScope: + self._remove_state_boundaries_from_my_childs(node) + for child in node.children: + self.visit(child) + + return node + + def visit_ForScope(self, node: stree.ForScope) -> stree.ForScope: + self._remove_state_boundaries_from_my_childs(node) + + # We might have inherited a proper `loop_range` from the SDFG + # but the data (sdfg) it relies on is no longer valid. + node.header.loop_range = lambda: None + + for child in node.children: + self.visit(child) + + return node + + def visit_MapScope(self, node: stree.MapScope) -> stree.MapScope: + self._remove_state_boundaries_from_my_childs(node) + for child in node.children: + self.visit(child) + + return node + + def visit_IfScope(self, node: stree.IfScope) -> stree.IfScope: + self._remove_state_boundaries_from_my_childs(node) + for child in node.children: + self.visit(child) + + return node + + def visit_ScheduleTreeRoot(self, node: stree.ScheduleTreeRoot) -> None: + self._remove_state_boundaries_from_my_childs(node) + for child in node.children: + self.visit(child) + + ndsl_log.debug( + f"Clean up StateBoundary : {self.cleaned_state_boundaries} nodes" + ) diff --git a/ndsl/dsl/dace/stree/optimizations/refine_transients.py b/ndsl/dsl/dace/stree/optimizations/refine_transients.py new file mode 100644 index 00000000..e24788bc --- /dev/null +++ b/ndsl/dsl/dace/stree/optimizations/refine_transients.py @@ -0,0 +1,242 @@ +from __future__ import annotations + +import warnings + +import dace.data +import dace.sdfg.analysis.schedule_tree.treenodes as stree + +from ndsl import ndsl_log +from ndsl.dsl.dace.stree.optimizations.memlet_helpers import AxisIterator + + +def _change_index_of_tuple( + old_tuple: tuple[int, ...], index: int, value: int = 1 +) -> tuple[int, ...]: + """Return a copy of the given tuple with `old_tuple[index]` being replaced by `value`. + + Args: + old_tuple: to be copied + index: at which index to replace a value + value: to replace `old_tuple[index]` + """ + new_list = list(old_tuple) + new_list[index] = value + return tuple(new_list) + + +def _reduce_cartesian_axis_size_to_1( + axis: AxisIterator, + transient_map_reads: dace.subsets.Range | None, + transient_map_writes: dace.subsets.Range | None, + transient_data: dace.data.Data, + ijk_order: tuple[int, int, int], +) -> bool: + """Reduce dimension size of transient to 1 if all access (reads and writes) + are atomic""" + + # Dev Note: Better dataflow analysis would look at exactly + # what's goin on here! + + # Assume 3D cartesian! + if len(transient_data.shape) < 3: + warnings.warn( + f"Potential non-3D array: {transient_data}, skipping.", + UserWarning, + stacklevel=2, + ) + return False + + read_write_range: dace.subsets.Range = dace.subsets.union( + transient_map_reads, transient_map_writes + ) + + if read_write_range is None: + return False + + if read_write_range.size()[axis.as_cartesian_index()] != 1: + return False + + # This transient read and write access is done on exactly one element + # therefore this dimension can be removed. BUT we are not truly + # removing it, we are reducing it to 1 to not have to deal + # with different slicing. + transient_data.shape = _change_index_of_tuple( + transient_data.shape, + axis.as_cartesian_index(), + value=1, + ) + + if len(transient_data.shape) == 3: + layout = [*ijk_order] + else: + data_dim_count = len(transient_data.shape) - 3 + layout = [dim + data_dim_count for dim in ijk_order] + [ + i - 1 for i in range(data_dim_count, 0, -1) + ] + + transient_data.set_strides_from_layout(*layout) + transient_data.lifetime = dace.dtypes.AllocationLifetime.State + return True + + +class CollectTransientRangeAccess(stree.ScheduleNodeVisitor): + """Unionize all transient arrays access into a single Range.""" + + def __init__(self) -> None: + # Map access is a `list` instead of a `set` because we want to double count + # access that are in/out as two access on the axis. + self.transients_range_writes: dict[str, dace.subsets.Range | None] = {} + self.transients_range_reads: dict[str, dace.subsets.Range | None] = {} + + def __str__(self) -> str: + return "CartesianCollectMaps" + + def _record_access( + self, + memlets: stree.MemletSet, + recording_set: dict[str, dace.subsets.Range | None], + ) -> None: + for memlet in memlets: + data = self.containers[memlet.data] + if data.transient and isinstance(data, dace.data.Array): + if not isinstance(memlet.subset, dace.subsets.Range): + raise NotImplementedError( + "Memlet refining only works with Range subsets" + ) + recording_set[memlet.data] = dace.subsets.union( + recording_set[memlet.data], memlet.subset + ) + + def visit_TaskletNode(self, node: stree.TaskletNode) -> None: + self._record_access(node.input_memlets(), self.transients_range_writes) + self._record_access(node.output_memlets(), self.transients_range_reads) + + def visit_ScheduleTreeRoot(self, node: stree.ScheduleTreeRoot) -> None: + self.containers = node.containers + for name, data in self.containers.items(): + if data.transient and isinstance(data, dace.data.Array): + self.transients_range_writes[name] = None + self.transients_range_reads[name] = None + + for child in node.children: + self.visit(child) + + +class RebuildMemletsFromContainers(stree.ScheduleNodeVisitor): + """Rebuild memlets from containers to ensure they are scope to the right size.""" + + def __init__(self, refined_arrays: set[str]) -> None: + self._refined_arrays = refined_arrays + + def __str__(self) -> str: + return "RefineTransientAxis" + + def visit_TaskletNode(self, node: stree.TaskletNode) -> None: + for memlet in [*node.output_memlets(), *node.input_memlets()]: + if memlet.data not in self._refined_arrays: + continue + array = self.containers[memlet.data] + if array.transient: + if not isinstance(memlet.subset, dace.subsets.Range): + raise NotImplementedError( + "Memlet refining only works with Range subsets" + ) + + # Reduce "refined" dimension to a single element, effectively + # eliminating it. + for index, _ in enumerate(memlet.subset.ranges): + if array.shape[index] == 1: + memlet.subset.ranges[index] = (0, 0, 1) + + def visit_ScheduleTreeRoot(self, node: stree.ScheduleTreeRoot) -> None: + self.containers = node.containers + for child in node.children: + self.visit(child) + + +class CartesianRefineTransients(stree.ScheduleNodeTransformer): + """Refine (reduce dimensionality) of transients based on their true use in + the cartesian dimensions. + + + It can do: + - Looking at usage of a transient in a cartesian axis (e.g. loop over a + cartesian axis) it will reduce that axis to 1 if all access are atomic + (exactly _one_ element of the array is ever worked on) + + It should but cannot do/will bug if: + - If the transient is _written_ before being _read_ this won't catch it (not its job), but we could + - With better dataflow analysis, we can reduce the dimensions to the correct lowest + size needed on the axis (e.g. transient[K] and transient[K+1], requires a 2-element + buffer), instead of the defensive _no refine_ strategy used now. We have _most_ of the + info in the `Range` + - Current action when detecting a valid candidate is to reduce the size of the dimension + to 1, rather than removing it. This will effectively, if generic compilers do their job, reduce + the cache access significantly. This also has been implemented to _not_ deal with offset/slicing + downstream impact of removing an axis. Nevertheless the xis should be removed if it's not + used. + - It only knows how to deal with 3D cartesian and 3D cartesian + data dimensions. Anything else will + fail `_reduce_cartesian_axes_size_to_1` calculation + + More tests: + - Test for dataflow with offset + - Test for I/J refine but not in K + - Test for J refine but not in I or K + - Test with dataflow: if/else, while, etc. + - Test with ForScope (FORWARD/BACKWARD) instead of Map + + Coding traps: + - We reduce the "refined" dimensions to 1 which is functionally eliminating it. This is solid. In the + case of the one we can't eliminate we don't do anything. We could find the "smallest buffer size" needed + and reduce the local dimension to it. BUT if we do this, we have to take into account the offset into + memory (e.g. halo) for the `RebuildMemletsFromContainers`! + """ + + def __init__(self, backend: str) -> None: + warnings.warn( + "CartesianRefineTransients is a WIP. It's usage is *severely* limited " + "and will most likely lead to bad numerics. Check the docs, check utest.", + UserWarning, + stacklevel=2, + ) + + if backend in ["dace:cpu_kfirst"]: + self.ijk_order = (2, 1, 0) + elif backend in ["dace:cpu", "dace:gpu"]: + self.ijk_order = (1, 0, 2) + else: + raise NotImplementedError( + "[Schedule Tree Opt] CartesianRefineTransient not implemented for " + f"backend {backend}" + ) + + self.refined_array: set[str] = set() + + def __str__(self) -> str: + return "CartesianRefineTransients" + + def visit_ScheduleTreeRoot(self, node: stree.ScheduleTreeRoot) -> None: + collect_map = CollectTransientRangeAccess() + collect_map.visit(node) + + # Remove Axis + refined_transient = 0 + for name, data in node.containers.items(): + if not (data.transient and isinstance(data, dace.data.Array)): + continue + refined = False + for axis in AxisIterator: + refined |= _reduce_cartesian_axis_size_to_1( + axis, + collect_map.transients_range_reads[name], + collect_map.transients_range_writes[name], + data, + self.ijk_order, + ) + + refined_transient += 1 if refined else 0 + self.refined_array.add(name) + + RebuildMemletsFromContainers(self.refined_array).visit(node) + + ndsl_log.debug(f"🚀 {refined_transient} Transient refined") diff --git a/ndsl/dsl/dace/stree/pipeline.py b/ndsl/dsl/dace/stree/pipeline.py index 10fb77cd..702af7fe 100644 --- a/ndsl/dsl/dace/stree/pipeline.py +++ b/ndsl/dsl/dace/stree/pipeline.py @@ -3,6 +3,7 @@ import dace.sdfg.analysis.schedule_tree.treenodes as stree from ndsl.dsl.dace.stree.optimizations import AxisIterator, CartesianAxisMerge +from ndsl.logging import ndsl_log_on_rank_0 class StreePipeline(ABC): @@ -42,10 +43,14 @@ def run( stree: stree.ScheduleTreeRoot, verbose: bool = False, ) -> stree.ScheduleTreeRoot: - for p in self.passes: + for i, p in enumerate(self.passes): if verbose: - print(f"[Stree OPT] {p}") + path = f"pass{i}_{p}.txt" + ndsl_log_on_rank_0.info(f"[Stree OPT] {p} (saving {path} after)") p.visit(stree) + if verbose: + with open(path, "w") as f: + f.write(stree.as_string()) return stree diff --git a/ndsl/dsl/dace/utils.py b/ndsl/dsl/dace/utils.py index cb35503e..ae6b1d80 100644 --- a/ndsl/dsl/dace/utils.py +++ b/ndsl/dsl/dace/utils.py @@ -32,7 +32,7 @@ def __enter__(self) -> None: def __exit__(self, _type, _val, _traceback) -> None: # type: ignore elapsed = time.time() - self.start - ndsl_log.debug(f"{self.prefix} {self.label}...{elapsed}s.") + ndsl_log.debug(f"{self.prefix} {self.label}...{elapsed:.2f}s.") def _is_ref(sd: dace.sdfg.SDFG, aname: str) -> bool: diff --git a/ndsl/dsl/ndsl_runtime.py b/ndsl/dsl/ndsl_runtime.py index 721ae38b..c798ded4 100644 --- a/ndsl/dsl/ndsl_runtime.py +++ b/ndsl/dsl/ndsl_runtime.py @@ -75,7 +75,6 @@ def check_for_quantity(object_: object) -> None: obj=self, config=self._dace_config, ) - print(type(self)) def __getattribute__(self, name: str) -> Any: attr = super().__getattribute__(name) @@ -124,6 +123,6 @@ def make_local( units=quantity.units, origin=quantity.origin, extent=quantity.extent, - gt4py_backend=quantity.gt4py_backend, + backend=quantity.backend, allow_mismatch_float_precision=allow_mismatch_float_precision, ) diff --git a/ndsl/dsl/stencil.py b/ndsl/dsl/stencil.py index f557c3b3..990c685a 100644 --- a/ndsl/dsl/stencil.py +++ b/ndsl/dsl/stencil.py @@ -240,7 +240,6 @@ def compare_ranks(comm: Comm, data: dict) -> Mapping[str, int]: other = comm.sendrecv(array, pair_rank) arr_diffs = np.sum(np.logical_and(~np.isnan(array), array != other)) if arr_diffs > 0: - print(name, rank, pair_rank, array, other) differences[name] = arr_diffs return differences @@ -290,6 +289,8 @@ def __init__( else: self._timing_collector = timing_collector + self._arguments_already_checked = False + if externals is None: externals = {} self.externals = externals @@ -406,7 +407,11 @@ def __call__(self, *args: Any, **kwargs: Any) -> None: if self.stencil_config.verbose: ndsl_log.debug(f"Running {self._func_name}") - self._validate_quantity_sizes(*args, **kwargs) + if ( + not self._arguments_already_checked + and self.stencil_config.compilation_config.validate_args + ): + self._validate_quantity_sizes(*args, **kwargs) # Marshal arguments args_list = list(args) @@ -430,7 +435,10 @@ def __call__(self, *args: Any, **kwargs: Any) -> None: ndsl_debugger.track_data(all_args, self._func_qualname, is_in=True) # Execute stencil - if self.stencil_config.compilation_config.validate_args: + if ( + not self._arguments_already_checked + and self.stencil_config.compilation_config.validate_args + ): if __debug__ and "origin" in kwargs: raise TypeError("origin cannot be passed to FrozenStencil call") if __debug__ and "domain" in kwargs: @@ -443,6 +451,7 @@ def __call__(self, *args: Any, **kwargs: Any) -> None: validate_args=True, exec_info=self._timing_collector.exec_info, ) + self._arguments_already_checked = True else: self.stencil_object.run( **args_as_kwargs, diff --git a/ndsl/dsl/stencil_config.py b/ndsl/dsl/stencil_config.py index b4b57183..f90db27a 100644 --- a/ndsl/dsl/stencil_config.py +++ b/ndsl/dsl/stencil_config.py @@ -6,6 +6,7 @@ from collections.abc import Callable, Hashable, Iterable, Sequence from typing import Any, Self +from gt4py.cartesian.backend import from_name as check_backend_existence from gt4py.cartesian.gtc.passes.oir_pipeline import DefaultPipeline, OirPipeline from ndsl.comm.communicator import Communicator @@ -43,6 +44,7 @@ def __init__( if "gpu" not in backend and device_sync is True: raise RuntimeError("Device sync is true on a CPU based backend") # GT4Py backend args + check_backend_existence(backend) self.backend = backend self.rebuild = rebuild self.validate_args = validate_args diff --git a/ndsl/exceptions.py b/ndsl/exceptions.py deleted file mode 100644 index 4511ea69..00000000 --- a/ndsl/exceptions.py +++ /dev/null @@ -1,16 +0,0 @@ -# flake8: noqa -import warnings - -from ndsl.comm.local_comm import ConcurrencyError -from ndsl.units import UnitsError - - -class OutOfBoundsError(ValueError): - def __init__(self, *args) -> None: - warnings.warn( - "Usage of `OutOfBoundsError` is discouraged. The class will be " - "removed in the next version in favor of using the built-in `IndexError`.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args) diff --git a/ndsl/filesystem.py b/ndsl/filesystem.py deleted file mode 100644 index df2e709f..00000000 --- a/ndsl/filesystem.py +++ /dev/null @@ -1,37 +0,0 @@ -import warnings - -import fsspec - - -def get_fs(path: str) -> fsspec.AbstractFileSystem: - """Return the fsspec filesystem required to handle a given path.""" - warnings.warn( - "Usage of `get_fs()` is discouraged if favor `os.path` and `pathlib` " - "modules. The function will be removed in the next version of NDSL.", - DeprecationWarning, - stacklevel=2, - ) - fs, _, _ = fsspec.get_fs_token_paths(path) - return fs - - -def is_file(filename): - warnings.warn( - "Usage of `is_file()` is discouraged if favor of plain `os.path.isfile()`. " - "The function will be removed in the next version of NDSL.", - DeprecationWarning, - stacklevel=2, - ) - return get_fs(filename).isfile(filename) - - -def open(filename, *args, **kwargs): - warnings.warn( - "Usage of `open()` is discouraged if favor the python built-in file " - "open context manager. The function will be removed in the next version " - "of NDSL.", - DeprecationWarning, - stacklevel=2, - ) - fs = get_fs(filename) - return fs.open(filename, *args, **kwargs) diff --git a/ndsl/grid/generation.py b/ndsl/grid/generation.py index 1bc37bc5..7296fa76 100644 --- a/ndsl/grid/generation.py +++ b/ndsl/grid/generation.py @@ -502,7 +502,7 @@ def from_tile_sizing( n_halo=N_HALO_DEFAULT, layout=communicator.partitioner.tile.layout, ) - quantity_factory = QuantityFactory.from_backend(sizer, backend=backend) + quantity_factory = QuantityFactory(sizer, backend=backend) return cls( quantity_factory=quantity_factory, communicator=communicator, @@ -551,7 +551,7 @@ def lon(self): origin=self.grid.origin[:2], extent=self.grid.extent[:2], units=self.grid.units, - gt4py_backend=self.grid.gt4py_backend, + backend=self.grid.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -563,7 +563,7 @@ def lat(self) -> Quantity: origin=self.grid.origin[:2], extent=self.grid.extent[:2], units=self.grid.units, - gt4py_backend=self.grid.gt4py_backend, + backend=self.grid.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -575,7 +575,7 @@ def lon_agrid(self) -> Quantity: origin=self.agrid.origin[:2], extent=self.agrid.extent[:2], units=self.agrid.units, - gt4py_backend=self.agrid.gt4py_backend, + backend=self.agrid.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -587,7 +587,7 @@ def lat_agrid(self) -> Quantity: origin=self.agrid.origin[:2], extent=self.agrid.extent[:2], units=self.agrid.units, - gt4py_backend=self.agrid.gt4py_backend, + backend=self.agrid.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1551,7 +1551,7 @@ def rarea(self) -> Quantity: origin=self.area.origin, extent=self.area.extent, units="m^-2", - gt4py_backend=self.area.gt4py_backend, + backend=self.area.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1566,7 +1566,7 @@ def rarea_c(self) -> Quantity: origin=self.area_c.origin, extent=self.area_c.extent, units="m^-2", - gt4py_backend=self.area_c.gt4py_backend, + backend=self.area_c.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1582,7 +1582,7 @@ def rdx(self) -> Quantity: origin=self.dx.origin, extent=self.dx.extent, units="m^-1", - gt4py_backend=self.dx.gt4py_backend, + backend=self.dx.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1598,7 +1598,7 @@ def rdy(self) -> Quantity: origin=self.dy.origin, extent=self.dy.extent, units="m^-1", - gt4py_backend=self.dy.gt4py_backend, + backend=self.dy.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1614,7 +1614,7 @@ def rdxa(self) -> Quantity: origin=self.dxa.origin, extent=self.dxa.extent, units="m^-1", - gt4py_backend=self.dxa.gt4py_backend, + backend=self.dxa.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1630,7 +1630,7 @@ def rdya(self) -> Quantity: origin=self.dya.origin, extent=self.dya.extent, units="m^-1", - gt4py_backend=self.dya.gt4py_backend, + backend=self.dya.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1646,7 +1646,7 @@ def rdxc(self) -> Quantity: origin=self.dxc.origin, extent=self.dxc.extent, units="m^-1", - gt4py_backend=self.dxc.gt4py_backend, + backend=self.dxc.backend, number_of_halo_points=N_HALO_DEFAULT, ) @@ -1662,7 +1662,7 @@ def rdyc(self) -> Quantity: origin=self.dyc.origin, extent=self.dyc.extent, units="m^-1", - gt4py_backend=self.dyc.gt4py_backend, + backend=self.dyc.backend, number_of_halo_points=N_HALO_DEFAULT, ) diff --git a/ndsl/grid/helper.py b/ndsl/grid/helper.py index dd612b22..d907e49a 100644 --- a/ndsl/grid/helper.py +++ b/ndsl/grid/helper.py @@ -186,7 +186,7 @@ def p_interface(self) -> Quantity: p_interface_data, dims=[Z_INTERFACE_DIM], units="Pa", - gt4py_backend=self.ak.gt4py_backend, + backend=self.ak.backend, number_of_halo_points=self.ak.metadata.n_halo, ) return self._p_interface @@ -203,7 +203,7 @@ def p(self) -> Quantity: p_data, dims=[Z_DIM], units="Pa", - gt4py_backend=self.p_interface.gt4py_backend, + backend=self.p_interface.backend, number_of_halo_points=self.p_interface.metadata.n_halo, ) return self._p @@ -220,7 +220,7 @@ def dp(self) -> Quantity: dp_ref_data, dims=[Z_DIM], units="Pa", - gt4py_backend=self.ak.gt4py_backend, + backend=self.ak.backend, number_of_halo_points=self.ak.metadata.n_halo, ) return self._dp_ref @@ -230,7 +230,7 @@ def ptop(self) -> Float: """Top of atmosphere pressure (Pa)""" if self.bk.view[0] != 0: raise ValueError("ptop is not well-defined when top-of-atmosphere bk != 0") - if self.ak.gt4py_backend is not None and is_gpu_backend(self.ak.gt4py_backend): + if self.ak.backend is not None and is_gpu_backend(self.ak.backend): return Float(self.ak.view[0].get()) else: return Float(self.ak.view[0]) @@ -382,7 +382,7 @@ def _fC_from_data(data, lat: Quantity) -> Quantity: dims=lat.dims, origin=lat.origin, extent=lat.extent, - gt4py_backend=lat.gt4py_backend, + backend=lat.backend, number_of_halo_points=lat.metadata.n_halo, ) @@ -824,7 +824,7 @@ def split_quantity_along_last_dim(quantity: Quantity) -> list[Quantity]: units=quantity.units, origin=quantity.origin[:-1], extent=quantity.extent[:-1], - gt4py_backend=quantity.gt4py_backend, + backend=quantity.backend, number_of_halo_points=quantity.metadata.n_halo, ) ) diff --git a/ndsl/initialization/allocator.py b/ndsl/initialization/allocator.py index e9d8857e..f36cd02e 100644 --- a/ndsl/initialization/allocator.py +++ b/ndsl/initialization/allocator.py @@ -13,53 +13,18 @@ from ndsl.quantity import Quantity, QuantityHaloSpec -class StorageNumpy: - def __init__(self, backend: str) -> None: - """Initialize an object which behaves like the numpy module, but uses - gt4py storage objects for zeros, ones, and empty. +class QuantityFactory: + def __init__(self, sizer: GridSizer, *, backend: str) -> None: + """ + Initialize a QuantityFactory from a GridSizer and a GT4Py backend name. Args: - backend: gt4py backend + sizer: GridSizer object that determines the array sizes. + backend: GT4Py backend name used for performance-optimized allocation. """ + self.sizer = sizer self.backend = backend - def empty(self, *args: Any, **kwargs: Any) -> np.ndarray: - return gt_storage.empty(*args, backend=self.backend, **kwargs) - - def ones(self, *args: Any, **kwargs: Any) -> np.ndarray: - return gt_storage.ones(*args, backend=self.backend, **kwargs) - - def zeros(self, *args: Any, **kwargs: Any) -> np.ndarray: - return gt_storage.zeros(*args, backend=self.backend, **kwargs) - - -class QuantityFactory: - def __init__( # type: ignore - self, sizer: GridSizer, numpy, *, silence_deprecation_warning: bool = False - ) -> None: - if not silence_deprecation_warning: - warnings.warn( - "Usage of QuantityFactory(sizer, numpy) is discouraged and will change " - "in the next release. Use QuantityFactory.from_backend(sizer, backend) " - "instead for a stable experience across the release.", - DeprecationWarning, - 2, - ) - self.sizer: GridSizer = sizer - self._numpy = numpy - - def set_extra_dim_lengths(self, **kwargs: Any) -> None: - """ - Set the length of extra (non-x/y/z) dimensions. - """ - warnings.warn( - "`QuantityFactory.set_extra_dim_lengths` is deprecated. " - "Use `add_data_dimensions` or `update_data_dimensions`.", - DeprecationWarning, - 2, - ) - self.sizer.data_dimensions.update(kwargs) - def update_data_dimensions( self, data_dimension_descriptions: dict[str, int], @@ -95,21 +60,22 @@ def add_data_dimensions( @classmethod def from_backend(cls, sizer: GridSizer, backend: str) -> QuantityFactory: - """Initialize a QuantityFactory to use a specific gt4py backend. + """Initialize a QuantityFactory to use a specific GT4Py backend. + + Note: This method is deprecated. Please change your code to use the + constructor instead. Args: - sizer: object which determines array sizes - backend: gt4py backend + sizer: GridSizer object that determines the array sizes. + backend: GT4Py backend name used for performance-optimized allocation. """ - numpy = StorageNumpy(backend) - # Don't print the deprecation warning in this case - return cls(sizer, numpy, silence_deprecation_warning=True) - - def _backend(self) -> str | None: - if isinstance(self._numpy, StorageNumpy): - return self._numpy.backend - - return None + warnings.warn( + "QuantityFactory.from_backend(sizer, backend) is deprecated. Use " + "QuantityFactory(sizer, backend=backend) instead.", + DeprecationWarning, + stacklevel=2, + ) + return cls(sizer, backend=backend) def empty( self, @@ -119,15 +85,11 @@ def empty( *, allow_mismatch_float_precision: bool = False, ) -> Quantity: - """Allocate a Quantity - values are random. + """Allocate a Quantity and fill it with uninitialized (undefined) values. Equivalent to `numpy.empty`""" return self._allocate( - self._numpy.empty, - dims, - units, - dtype, - allow_mismatch_float_precision, + gt_storage.empty, dims, units, dtype, allow_mismatch_float_precision ) def zeros( @@ -142,11 +104,7 @@ def zeros( Equivalent to `numpy.zeros`""" return self._allocate( - self._numpy.zeros, - dims, - units, - dtype, - allow_mismatch_float_precision, + gt_storage.zeros, dims, units, dtype, allow_mismatch_float_precision ) def ones( @@ -161,11 +119,7 @@ def ones( Equivalent to `numpy.ones`""" return self._allocate( - self._numpy.ones, - dims, - units, - dtype, - allow_mismatch_float_precision, + gt_storage.ones, dims, units, dtype, allow_mismatch_float_precision ) def full( @@ -177,11 +131,11 @@ def full( *, allow_mismatch_float_precision: bool = False, ) -> Quantity: - """Allocate a Quantity and fill it with the value. + """Allocate a Quantity and fill it with the given value. Equivalent to `numpy.full`""" quantity = self._allocate( - self._numpy.empty, + gt_storage.empty, dims, units, dtype, @@ -199,10 +153,10 @@ def from_array( allow_mismatch_float_precision: bool = False, ) -> Quantity: """ - Create a Quantity from a numpy array. + Create a Quantity from values in the `data` array. - That numpy array must correspond to the correct shape and extent - for the given dims. + This copies the values of `data` into the resulting Quantity. The data + array thus must correspond to the correct shape and extent for the given dims. """ base = self.zeros( dims=dims, @@ -222,10 +176,12 @@ def from_compute_array( allow_mismatch_float_precision: bool = False, ) -> Quantity: """ - Create a Quantity from a numpy array. + Create a Quantity from values of the compute domain. - That numpy array must correspond to the correct shape and extent - of the compute domain for the given dims. + This function will allocate the full Quantity (including potential + halo points) to zero. The values of `data` are then copied into + the compute domain. That numpy array must correspond to the correct + shape and extent of the compute domain for the given dims. """ base = self.zeros( dims=dims, @@ -257,19 +213,22 @@ def _allocate( zip(dims, ("I", "J", "K", *([None] * (len(dims) - 3)))) ) ] - try: - data = allocator( - shape, dtype=dtype, aligned_index=origin, dimensions=dimensions - ) - except TypeError: - data = allocator(shape, dtype=dtype) + + data = allocator( + shape, + dtype=dtype, + aligned_index=origin, + dimensions=dimensions, + backend=self.backend, + ) + return Quantity( data, dims=dims, units=units, origin=origin, extent=extent, - gt4py_backend=self._backend(), + backend=self.backend, allow_mismatch_float_precision=allow_mismatch_float_precision, number_of_halo_points=self.sizer.n_halo, ) diff --git a/ndsl/initialization/grid_sizer.py b/ndsl/initialization/grid_sizer.py index 961ab793..684fa5ab 100644 --- a/ndsl/initialization/grid_sizer.py +++ b/ndsl/initialization/grid_sizer.py @@ -1,10 +1,10 @@ -import warnings +from abc import ABC, abstractmethod from collections.abc import Sequence from dataclasses import dataclass @dataclass -class GridSizer: +class GridSizer(ABC): nx: int """Length of the x compute dimension for produced arrays.""" ny: int @@ -16,20 +16,11 @@ class GridSizer: data_dimensions: dict[str, int] """Name/Lengths pair of any non-x/y/z dimensions, such as land or radiation dimensions.""" - @property - def extra_dim_lengths(self) -> dict[str, int]: - warnings.warn( - "`GridSizer.extra_dim_lengths` is a deprecated API, use `GridSizer.data_dimensions`.", - DeprecationWarning, - 2, - ) - return self.data_dimensions + @abstractmethod + def get_origin(self, dims: Sequence[str]) -> tuple[int, ...]: ... - def get_origin(self, dims: Sequence[str]) -> tuple[int, ...]: - raise NotImplementedError() + @abstractmethod + def get_extent(self, dims: Sequence[str]) -> tuple[int, ...]: ... - def get_extent(self, dims: Sequence[str]) -> tuple[int, ...]: - raise NotImplementedError() - - def get_shape(self, dims: Sequence[str]) -> tuple[int, ...]: - raise NotImplementedError() + @abstractmethod + def get_shape(self, dims: Sequence[str]) -> tuple[int, ...]: ... diff --git a/ndsl/initialization/subtile_grid_sizer.py b/ndsl/initialization/subtile_grid_sizer.py index ff31a1c3..c86bbd44 100644 --- a/ndsl/initialization/subtile_grid_sizer.py +++ b/ndsl/initialization/subtile_grid_sizer.py @@ -1,4 +1,3 @@ -import warnings from collections.abc import Iterable from typing import Self @@ -21,7 +20,6 @@ def from_tile_params( data_dimensions: dict[str, int] | None = None, tile_partitioner: TilePartitioner | None = None, tile_rank: int = 0, - extra_dim_lengths: dict[str, int] | None = None, ) -> Self: """Create a SubtileGridSizer from parameters about the full tile. @@ -36,18 +34,10 @@ def from_tile_params( tile_partitioner (optional): partitioner object for the tile. By default, a TilePartitioner is created with the given layout tile_rank (optional): rank of this subtile. - extra_dim_lengths: DEPRECATED API - use `data_dimensions` """ if data_dimensions is None: data_dimensions = {} - if extra_dim_lengths is not None: - warnings.warn( - "`extra_dim_lengths` is a deprecated name, please use `data_dimensions` instead.", - DeprecationWarning, - 2, - ) - data_dimensions = extra_dim_lengths if tile_partitioner is None: tile_partitioner = TilePartitioner(layout) y_slice, x_slice = tile_partitioner.subtile_slice( diff --git a/ndsl/logging.py b/ndsl/logging.py index 183054b6..7892a647 100644 --- a/ndsl/logging.py +++ b/ndsl/logging.py @@ -20,14 +20,7 @@ def _get_log_level(default: str = "info") -> str: - if os.getenv("PACE_LOGLEVEL", ""): - logging.warning("PACE_LOGLEVEL is deprecated. Use NDSL_LOGLEVEL instead.") - if os.getenv("NDSL_LOGLEVEL", ""): - logging.warning( - "PACE_LOGLEVEL and NDSL_LOGLEVEL were both specified. NDSL_LOGLEVEL will take precedence." - ) - - loglevel = os.getenv("NDSL_LOGLEVEL", os.getenv("PACE_LOGLEVEL", default)).lower() + loglevel = os.getenv("NDSL_LOGLEVEL", default).lower() if loglevel in AVAILABLE_LOG_LEVELS.keys(): return loglevel diff --git a/ndsl/monitor/netcdf_monitor.py b/ndsl/monitor/netcdf_monitor.py index e2cb417f..a95c532e 100644 --- a/ndsl/monitor/netcdf_monitor.py +++ b/ndsl/monitor/netcdf_monitor.py @@ -21,6 +21,7 @@ def __init__(self, initial: Quantity, time_chunk_size: int): self._dims = initial.dims self._units = initial.units self._i_time = 1 + self._backend = initial.backend def append(self, quantity: Quantity) -> None: # Allow mismatch precision here since this is I/O @@ -37,6 +38,7 @@ def data(self) -> Quantity: dims=("time",) + tuple(self._dims), units=self._units, allow_mismatch_float_precision=True, + backend=self._backend, ) diff --git a/ndsl/monitor/zarr_monitor.py b/ndsl/monitor/zarr_monitor.py index 99deec2b..8d2469ba 100644 --- a/ndsl/monitor/zarr_monitor.py +++ b/ndsl/monitor/zarr_monitor.py @@ -1,5 +1,6 @@ from __future__ import annotations +import warnings from datetime import datetime, timedelta from typing import TypeVar @@ -7,6 +8,7 @@ import xarray as xr import ndsl.constants as constants +from ndsl.comm import Comm, ReductionOperator, Request from ndsl.comm.partitioner import Partitioner, subtile_slice from ndsl.logging import ndsl_log from ndsl.monitor.convert import to_numpy @@ -19,14 +21,16 @@ T = TypeVar("T") -class DummyComm: +class DummyComm(Comm[T]): + """Dummy comm object that works in single-core mode.""" + def Get_rank(self) -> int: return 0 def Get_size(self) -> int: return 1 - def bcast(self, value: T, root: int = 0) -> T: + def bcast(self, value: T | None, root: int = 0) -> T | None: assert root == 0, ( "DummyComm should only be used on a single core, " "so root should only ever be 0" @@ -36,6 +40,47 @@ def bcast(self, value: T, root: int = 0) -> T: def barrier(self) -> None: return + def Barrier(self) -> None: + raise NotImplementedError("DummyComm.Barrier") + + def Scatter(self, sendbuf, recvbuf, root: int = 0, **kwargs: dict): # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Scatter") + + def Gather(self, sendbuf, recvbuf, root: int = 0, **kwargs: dict): # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Gather") + + def allgather(self, sendobj: T) -> list[T]: + raise NotImplementedError("DummyComm.allgather") + + def Send(self, sendbuf, dest, tag: int = 0, **kwargs: dict): # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Send") + + def sendrecv(self, sendbuf, dest, **kwargs: dict): # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.sendrcv") + + def Isend(self, sendbuf, dest, tag: int = 0, **kwargs: dict) -> Request: # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Isend") + + def Recv(self, recvbuf, source, tag: int = 0, **kwargs: dict): # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Recv") + + def Irecv(self, recvbuf, source, tag: int = 0, **kwargs: dict) -> Request: # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Irecv") + + def Split(self, color, key) -> DummyComm: # type: ignore[no-untyped-def] + raise NotImplementedError("DummyComm.Split") + + def allreduce( + self, sendobj: T, op: ReductionOperator = ReductionOperator.NO_OP + ) -> T: + raise NotImplementedError("DummyComm.allreduce") + + def Allreduce(self, sendobj: T, recvobj: T, op: ReductionOperator) -> T: + raise NotImplementedError("DummyComm.Allreduce") + + def Allreduce_inplace(self, obj: T, op: ReductionOperator) -> T: + raise NotImplementedError("DummyComm.Allreduce_inplace") + class ZarrMonitor: """ @@ -46,8 +91,9 @@ def __init__( self, store: str | zarr.storage.MutableMapping, partitioner: Partitioner, + *, mode: str = "w", - mpi_comm: DummyComm | None = None, + mpi_comm: Comm | None = None, ) -> None: """Create a ZarrMonitor. @@ -59,6 +105,11 @@ def __init__( use a dummy comm object that works in single-core mode. """ if mpi_comm is None: + warnings.warn( + "`mpi_comm` will be a required argument starting with the next version of NDSL.", + DeprecationWarning, + stacklevel=2, + ) mpi_comm = DummyComm() if mpi_comm.Get_rank() == 0: diff --git a/ndsl/namelist.py b/ndsl/namelist.py deleted file mode 100644 index 00180ace..00000000 --- a/ndsl/namelist.py +++ /dev/null @@ -1,647 +0,0 @@ -import dataclasses -import warnings -from typing import Any, Self - -import f90nml - - -DEFAULT_INT = 0 -DEFAULT_STR = "" -DEFAULT_FLOAT = 0.0 -DEFAULT_BOOL = False - - -# Global set of namelist defaults, attached to class for namespacing and static typing -class NamelistDefaults: - layout = (1, 1) - grid_type = 0 - dx_const = 1000.0 - dy_const = 1000.0 - deglat = 15.0 - u_max = 350.0 - do_f3d = False - inline_q = False - do_skeb = False - """Save dissipation estimate""" - use_logp = False - moist_phys = True - check_negative = False - # gfdl_cloud_microphys.F90 - tau_r2g = 900.0 - """rain freezing during fast_sat""" - tau_smlt = 900.0 - """snow melting""" - tau_g2r = 600.0 - """graupel melting to rain""" - tau_imlt = 600.0 - """cloud ice melting""" - tau_i2s = 1000.0 - """cloud ice to snow auto - conversion""" - tau_l2r = 900.0 - """cloud water to rain auto - conversion""" - tau_g2v = 1200.0 - """graupel sublimation""" - tau_v2g = 21600.0 - """graupel deposition -- make it a slow process""" - sat_adj0 = 0.90 - """adjustment factor (0: no, 1: full) during fast_sat_adj""" - ql_gen = 1.0e-3 - """max new cloud water during remapping step if fast_sat_adj = .t.""" - ql_mlt = 2.0e-3 - """max value of cloud water allowed from melted cloud ice""" - qs_mlt = 1.0e-6 - """max cloud water due to snow melt""" - ql0_max = 2.0e-3 - """max cloud water value (auto converted to rain)""" - t_sub = 184.0 - """min temp for sublimation of cloud ice""" - qi_gen = 1.82e-6 - """max cloud ice generation during remapping step""" - qi_lim = 1.0 - """cloud ice limiter to prevent large ice build up""" - qi0_max = 1.0e-4 - """max cloud ice value (by other sources)""" - rad_snow = True - """consider snow in cloud fraction calculation""" - rad_rain = True - """consider rain in cloud fraction calculation""" - rad_graupel = True - """consider graupel in cloud fraction calculation""" - tintqs = False - """use temperature in the saturation mixing in PDF""" - dw_ocean = 0.10 - """base value for ocean""" - dw_land = 0.15 - """base value for subgrid deviation / variability over land""" - # cloud scheme 0 - ? - # 1: old fvgfs gfdl) mp implementation - # 2: binary cloud scheme (0 / 1) - icloud_f = 0 - cld_min = 0.05 - """minimum cloud fraction""" - tau_l2v = 300.0 - """cloud water to water vapor (evaporation)""" - tau_v2l = 90.0 - """water vapor to cloud water (condensation)""" - c2l_ord = 4 - regional = False - m_split = 0 - convert_ke = False - breed_vortex_inline = False - use_old_omega = True - use_logp = False - rf_fast = False - p_ref = 1e5 - """Surface pressure used to construct a horizontally-uniform reference""" - adiabatic = False - nf_omega = 1 - fv_sg_adj = -1 - n_sponge = 1 - fast_sat_adj = True - qc_crt = 5.0e-8 - """Minimum condensate mixing ratio to allow partial cloudiness""" - c_cracw = 0.8 - """Rain accretion efficiency""" - c_paut = 0.5 - """Autoconversion cloud water to rain (use 0.5 to reduce autoconversion)""" - c_pgacs = 0.01 - """Snow to graupel "accretion" eff. (was 0.1 in zetac)""" - c_psaci = 0.05 - """Accretion: cloud ice to snow (was 0.1 in zetac)""" - ccn_l = 300.0 - """CCN over land (cm^-3)""" - ccn_o = 100.0 - """CCN over ocean (cm^-3)""" - const_vg = False - """Fall velocity tuning constant of graupel""" - const_vi = False - """Fall velocity tuning constant of ice""" - const_vr = False - """Fall velocity tuning constant of rain water""" - const_vs = False - """Fall velocity tuning constant of snow""" - vi_fac = 1.0 - """if const_vi: 1/3""" - vs_fac = 1.0 - """if const_vs: 1.""" - vg_fac = 1.0 - """if const_vg: 2.""" - vr_fac = 1.0 - """if const_vr: 4.""" - de_ice = False - """To prevent excessive build-up of cloud ice from external sources""" - do_qa = True - """Do inline cloud fraction""" - do_sedi_heat = False - """Transport of heat in sedimentation""" - do_sedi_w = True - """Transport of vertical motion in sedimentation""" - fix_negative = True - """Fix negative water species""" - irain_f = 0 - """Cloud water to rain auto conversion scheme""" - mono_prof = False - """Perform terminal fall with mono ppm scheme""" - mp_time = 225.0 - """Maximum microphysics timestep (sec)""" - prog_ccn = False - """Do prognostic ccn (yi ming's method)""" - qi0_crt = 8e-05 - """Cloud ice to snow autoconversion threshold""" - qs0_crt = 0.003 - """Snow to graupel density threshold (0.6e-3 in purdue lin scheme)""" - rh_inc = 0.2 - """RH increment for complete evaporation of cloud water and cloud ice""" - rh_inr = 0.3 - """RH increment for minimum evaporation of rain""" - rthresh = 1e-05 - """Critical cloud drop radius (micrometers)""" - sedi_transport = True - """Transport of momentum in sedimentation""" - use_ppm = False - """Use ppm fall scheme""" - vg_max = 16.0 - """Maximum fall speed for graupel""" - vi_max = 1.0 - """Maximum fall speed for ice""" - vr_max = 16.0 - """Maximum fall speed for rain""" - vs_max = 2.0 - """Maximum fall speed for snow""" - z_slope_ice = True - """Use linear mono slope for autoconversions""" - z_slope_liq = True - """Use linear mono slope for autoconversions""" - tice = 273.16 - """set tice = 165. to turn off ice - phase phys (kessler emulator)""" - alin = 842.0 - """value for 'a' in lin1983""" - clin = 4.8 - """"c" in lin 1983, 4.8 -- > 6. (to enhance ql -- > qs)""" - mom4ice = False - lsm = 1 - redrag = False - isatmedmf = 0 - """which version of satmedmfvdif to use""" - dspheat = False - """flag for tke dissipative heating""" - xkzm_h = 1.0 - """background vertical diffusion for heat q over ocean""" - xkzm_m = 1.0 - """background vertical diffusion for momentum over ocean""" - xkzm_hl = 1.0 - """background vertical diffusion for heat q over land""" - xkzm_ml = 1.0 - """background vertical diffusion for momentum over land""" - xkzm_hi = 1.0 - """background vertical diffusion for heat q over ice""" - xkzm_mi = 1.0 - """background vertical diffusion for momentum over ice""" - xkzm_ho = 1.0 - """background vertical diffusion for heat q over ocean""" - xkzm_mo = 1.0 - """background vertical diffusion for momentum over ocean""" - xkzm_s = 1.0 - """sigma threshold for background mom. diffusion""" - xkzm_lim = 0.01 - """background vertical diffusion limit""" - xkzminv = 0.15 - """diffusivity in inversion layers""" - xkgdx = 25.0e3 - """background vertical diffusion threshold""" - rlmn = 30.0 - """lower-limiter on asymtotic mixing length in satmedmfdiff""" - rlmx = 300.0 - """upper-limiter on asymtotic mixing length in satmedmfdiff""" - do_dk_hb19 = False - """flag for using hb19 background diff formula in satmedmfdiff""" - cap_k0_land = True - """flag for applying limter on background diff in inversion layer over land in satmedmfdiff""" - ncld = 1 - """choice of cloud scheme""" - c0s_shal = 0.002 - """c_e for shallow convection (Han and Pan, 2011, eq(6))""" - c1_shal = 5.0e-4 - """conversion parameter of detrainment from liquid water into convetive precipitaiton""" - clam_shal = 0.3 - """conversion parameter of detrainment from liquid water into grid-scale cloud water""" - pgcon_shal = 0.55 - """control the reduction in momentum transport""" - asolfac_shal = 0.89 - """aerosol-aware parameter based on Lim & Hong (2012): asolfac= cx / c0s(=.002), cx = min([-0.7 ln(Nccn) + 24]*1.e-4, c0s), Nccn: CCN number concentration in cm^(-3), Until a realistic Nccn is provided, typical Nccns are assumed, as Nccn=100 for sea and Nccn=7000 for land""" - lsoil = 4 - """Number of soil levels in land surface model""" - sw_dynamics = False - """flag for turning on shallow water conditions in dyn core""" - - @classmethod - def as_dict(cls) -> dict: - return { - name: default - for name, default in cls.__dict__.items() - if not name.startswith("_") - } - - -@dataclasses.dataclass -class Namelist: - # data_set: Any - # date_out_of_range: str - # do_sst_pert: bool - # interp_oi_sst: bool - # no_anom_sst: bool - # sst_pert: float - # sst_pert_type: str - # use_daily: bool - # use_ncep_ice: bool - # use_ncep_sst: bool - # blocksize: int - # chksum_debug: bool - """ - note: dycore_only may not be used in this model - the same way it is in the Fortran version, watch for - consequences of these inconsistencies, or more closely - parallel the Fortran structure - """ - dycore_only: bool = DEFAULT_BOOL - # fdiag: float - # knob_ugwp_azdir: tuple[int, int, int, int] - # knob_ugwp_doaxyz: int - # knob_ugwp_doheat: int - # knob_ugwp_dokdis: int - # knob_ugwp_effac: tuple[int, int, int, int] - # knob_ugwp_ndx4lh: int - # knob_ugwp_solver: int - # knob_ugwp_source: tuple[int, int, int, int] - # knob_ugwp_stoch: tuple[int, int, int, int] - # knob_ugwp_version: int - # knob_ugwp_wvspec: tuple[int, int, int, int] - # launch_level: int - # reiflag: int - # reimax: float - # reimin: float - # rewmax: float - # rewmin: float - # atmos_nthreads: int - # calendar: Any - # current_date: Any - days: int = 0 - dt_atmos: int = DEFAULT_INT - # dt_ocean: Any - hours: int = 0 - # memuse_verbose: Any - minutes: int = 0 - # months: Any - # ncores_per_node: Any - seconds: int = 0 - # use_hyper_thread: Any - # max_axes: Any - # max_files: Any - # max_num_axis_sets: Any - # prepend_date: Any - # checker_tr: Any - # filtered_terrain: Any - # gfs_dwinds: Any - # levp: Any - # nt_checker: Any - # checksum_required: Any - # max_files_r: Any - # max_files_w: Any - # clock_grain: Any - # domains_stack_size: Any - # print_memory_usage: Any - a_imp: float = DEFAULT_FLOAT - # adjust_dry_mass: Any - beta: float = DEFAULT_FLOAT - # consv_am: Any - consv_te: float = DEFAULT_FLOAT - d2_bg: float = DEFAULT_FLOAT - d2_bg_k1: float = DEFAULT_FLOAT - d2_bg_k2: float = DEFAULT_FLOAT - d4_bg: float = DEFAULT_FLOAT - d_con: float = DEFAULT_FLOAT - d_ext: float = DEFAULT_FLOAT - dddmp: float = DEFAULT_FLOAT - delt_max: float = DEFAULT_FLOAT - # dnats: int - do_sat_adj: bool = DEFAULT_BOOL - do_vort_damp: bool = DEFAULT_BOOL - # dwind_2d: Any - # external_ic: Any - fill: bool = DEFAULT_BOOL - # fill_dp: bool - # fv_debug: Any - # gfs_phil: Any - hord_dp: int = DEFAULT_INT - hord_mt: int = DEFAULT_INT - hord_tm: int = DEFAULT_INT - hord_tr: int = DEFAULT_INT - hord_vt: int = DEFAULT_INT - hydrostatic: bool = DEFAULT_BOOL - # io_layout: Any - k_split: int = DEFAULT_INT - ke_bg: float = DEFAULT_FLOAT - kord_mt: int = DEFAULT_INT - kord_tm: int = DEFAULT_INT - kord_tr: int = DEFAULT_INT - kord_wz: int = DEFAULT_INT - layout: tuple[int, int] = (1, 1) - # make_nh: bool - # mountain: bool - n_split: int = DEFAULT_INT - # na_init: Any - # ncep_ic: Any - # nggps_ic: Any - nord: int = DEFAULT_INT - npx: int = DEFAULT_INT - npy: int = DEFAULT_INT - npz: int = DEFAULT_INT - ntiles: int = DEFAULT_INT - # nudge: Any - # nudge_qv: Any - nwat: int = DEFAULT_INT - p_fac: float = DEFAULT_FLOAT - # phys_hydrostatic: Any - # print_freq: Any - # range_warn: Any - # reset_eta: Any - rf_cutoff: float = DEFAULT_FLOAT - tau: float = DEFAULT_FLOAT - # tau_h2o: Any - # use_hydro_pressure: Any - vtdm4: float = DEFAULT_FLOAT - # warm_start: bool - z_tracer: bool = DEFAULT_BOOL - c_cracw: float = NamelistDefaults.c_cracw - c_paut: float = NamelistDefaults.c_paut - c_pgacs: float = NamelistDefaults.c_pgacs - c_psaci: float = NamelistDefaults.c_psaci - ccn_l: float = NamelistDefaults.ccn_l - ccn_o: float = NamelistDefaults.ccn_o - const_vg: bool = NamelistDefaults.const_vg - const_vi: bool = NamelistDefaults.const_vi - const_vr: bool = NamelistDefaults.const_vr - const_vs: bool = NamelistDefaults.const_vs - qc_crt: float = NamelistDefaults.qc_crt - vs_fac: float = NamelistDefaults.vs_fac - vg_fac: float = NamelistDefaults.vg_fac - vi_fac: float = NamelistDefaults.vi_fac - vr_fac: float = NamelistDefaults.vr_fac - de_ice: bool = NamelistDefaults.de_ice - do_qa: bool = NamelistDefaults.do_qa - do_sedi_heat: bool = NamelistDefaults.do_sedi_heat - do_sedi_w: bool = NamelistDefaults.do_sedi_w - fast_sat_adj: bool = NamelistDefaults.fast_sat_adj - fix_negative: bool = NamelistDefaults.fix_negative - irain_f: int = NamelistDefaults.irain_f - mono_prof: bool = NamelistDefaults.mono_prof - mp_time: float = NamelistDefaults.mp_time - prog_ccn: bool = NamelistDefaults.prog_ccn - qi0_crt: float = NamelistDefaults.qi0_crt - qs0_crt: float = NamelistDefaults.qs0_crt - rh_inc: float = NamelistDefaults.rh_inc - rh_inr: float = NamelistDefaults.rh_inr - # rh_ins: Any - rthresh: float = NamelistDefaults.rthresh - sedi_transport: bool = NamelistDefaults.sedi_transport - # use_ccn: Any - use_ppm: bool = NamelistDefaults.use_ppm - vg_max: float = NamelistDefaults.vg_max - vi_max: float = NamelistDefaults.vi_max - vr_max: float = NamelistDefaults.vr_max - vs_max: float = NamelistDefaults.vs_max - z_slope_ice: bool = NamelistDefaults.z_slope_ice - z_slope_liq: bool = NamelistDefaults.z_slope_liq - tice: float = NamelistDefaults.tice - alin: float = NamelistDefaults.alin - clin: float = NamelistDefaults.clin - mom4ice: bool = NamelistDefaults.mom4ice - lsm: int = NamelistDefaults.lsm - redrag: bool = NamelistDefaults.redrag - isatmedmf: int = NamelistDefaults.isatmedmf - dspheat: bool = NamelistDefaults.dspheat - xkzm_h: float = NamelistDefaults.xkzm_h - xkzm_m: float = NamelistDefaults.xkzm_m - xkzm_hl: float = NamelistDefaults.xkzm_hl - xkzm_ml: float = NamelistDefaults.xkzm_ml - xkzm_hi: float = NamelistDefaults.xkzm_hi - xkzm_mi: float = NamelistDefaults.xkzm_mi - xkzm_ho: float = NamelistDefaults.xkzm_ho - xkzm_mo: float = NamelistDefaults.xkzm_mo - xkzm_s: float = NamelistDefaults.xkzm_s - xkzm_lim: float = NamelistDefaults.xkzm_lim - xkzminv: float = NamelistDefaults.xkzminv - xkgdx: float = NamelistDefaults.xkgdx - rlmn: float = NamelistDefaults.rlmn - rlmx: float = NamelistDefaults.rlmx - do_dk_hb19: bool = NamelistDefaults.do_dk_hb19 - cap_k0_land: bool = NamelistDefaults.cap_k0_land - c0s_shal: float = NamelistDefaults.c0s_shal - c1_shal: float = NamelistDefaults.c1_shal - clam_shal: float = NamelistDefaults.clam_shal - pgcon_shal: float = NamelistDefaults.pgcon_shal - asolfac_shal: float = NamelistDefaults.asolfac_shal - ncld: int = NamelistDefaults.ncld - # cal_pre: Any - # cdmbgwd: Any - # cnvcld: Any - # cnvgwd: Any - # debug: Any - # do_deep: Any - # dspheat: Any - # fhcyc: Any - # fhlwr: Any - # fhswr: Any - # fhzero: Any - # hybedmf: Any - # iaer: Any - # ialb: Any - # ico2: Any - # iems: Any - # imfdeepcnv: Any - # imfshalcnv: Any - # imp_physics: Any - # isol: Any - # isot: Any - # isubc_lw: Any - # isubc_sw: Any - # ivegsrc: Any - # ldiag3d: Any - # lwhtr: Any - # nst_anl: Any - # pdfcld: Any - # pre_rad: Any - # prslrd0: Any - # random_clds: Any - # redrag: Any - # satmedmf: Any - # shal_cnv: Any - # swhtr: Any - # trans_trac: Any - # use_ufo: Any - # xkzm_h: Any - # xkzm_m: Any - # xkzminv: Any - # interp_method: Any - # lat_s: Any - # lon_s: Any - # ntrunc: Any - # fabsl: Any - # faisl: Any - # faiss: Any - # fnabsc: Any - # fnacna: Any - # fnaisc: Any - # fnalbc: Any - # fnalbc2: Any - # fnglac: Any - # fnmskh: Any - # fnmxic: Any - # fnslpc: Any - # fnsmcc: Any - # fnsnoa: Any - # fnsnoc: Any - # fnsotc: Any - # fntg3c: Any - # fntsfa: Any - # fntsfc: Any - # fnvegc: Any - # fnvetc: Any - # fnvmnc: Any - # fnvmxc: Any - # fnzorc: Any - # fsicl: Any - # fsics: Any - # fslpl: Any - # fsmcl: Any - # fsnol: Any - # fsnos: Any - # fsotl: Any - # ftsfl: Any - # ftsfs: Any - # fvetl: Any - # fvmnl: Any - # fvmxl: Any - # ldebug: Any - grid_type: int = NamelistDefaults.grid_type - dx_const: float = NamelistDefaults.dx_const - dy_const: float = NamelistDefaults.dy_const - deglat: float = NamelistDefaults.deglat - u_max: float = NamelistDefaults.u_max - do_f3d: bool = NamelistDefaults.do_f3d - inline_q: bool = NamelistDefaults.inline_q - do_skeb: bool = NamelistDefaults.do_skeb - """save dissipation estimate""" - use_logp: bool = NamelistDefaults.use_logp - moist_phys: bool = NamelistDefaults.moist_phys - check_negative: bool = NamelistDefaults.check_negative - # gfdl_cloud_microphys.F90 - tau_r2g: float = NamelistDefaults.tau_r2g - """rain freezing during fast_sat""" - tau_smlt: float = NamelistDefaults.tau_smlt - """snow melting""" - tau_g2r: float = NamelistDefaults.tau_g2r - """graupel melting to rain""" - tau_imlt: float = NamelistDefaults.tau_imlt - """cloud ice melting""" - tau_i2s: float = NamelistDefaults.tau_i2s - """cloud ice to snow auto - conversion""" - tau_l2r: float = NamelistDefaults.tau_l2r - """cloud water to rain auto - conversion""" - tau_g2v: float = NamelistDefaults.tau_g2v - """graupel sublimation""" - tau_v2g: float = NamelistDefaults.tau_v2g - """graupel deposition -- make it a slow process""" - sat_adj0: float = NamelistDefaults.sat_adj0 - """adjustment factor (0: no 1: full) during fast_sat_adj""" - ql_gen: float = 1.0e-3 - """max new cloud water during remapping step if fast_sat_adj = .t.""" - ql_mlt: float = NamelistDefaults.ql_mlt - """max value of cloud water allowed from melted cloud ice""" - qs_mlt: float = NamelistDefaults.qs_mlt - """max cloud water due to snow melt""" - ql0_max: float = NamelistDefaults.ql0_max - """max cloud water value (auto converted to rain)""" - t_sub: float = NamelistDefaults.t_sub - """min temp for sublimation of cloud ice""" - qi_gen: float = NamelistDefaults.qi_gen - """max cloud ice generation during remapping step""" - qi_lim: float = NamelistDefaults.qi_lim - """cloud ice limiter to prevent large ice build up""" - qi0_max: float = NamelistDefaults.qi0_max - """max cloud ice value (by other sources)""" - rad_snow: bool = NamelistDefaults.rad_snow - """consider snow in cloud fraction calculation""" - rad_rain: bool = NamelistDefaults.rad_rain - """consider rain in cloud fraction calculation""" - rad_graupel: bool = NamelistDefaults.rad_graupel - """consider graupel in cloud fraction calculation""" - tintqs: bool = NamelistDefaults.tintqs - """use temperature in the saturation mixing in PDF""" - dw_ocean: float = NamelistDefaults.dw_ocean - """base value for ocean""" - dw_land: float = NamelistDefaults.dw_land - """base value for subgrid deviation / variability over land""" - # cloud scheme 0 - ? - # 1: old fvgfs gfdl) mp implementation - # 2: binary cloud scheme (0 / 1) - icloud_f: int = NamelistDefaults.icloud_f - cld_min: float = NamelistDefaults.cld_min - """minimum cloud fraction""" - tau_l2v: float = NamelistDefaults.tau_l2v - """cloud water to water vapor (evaporation)""" - tau_v2l: float = NamelistDefaults.tau_v2l - """water vapor to cloud water (condensation)""" - c2l_ord: int = NamelistDefaults.c2l_ord - regional: bool = NamelistDefaults.regional - m_split: int = NamelistDefaults.m_split - convert_ke: bool = NamelistDefaults.convert_ke - breed_vortex_inline: bool = NamelistDefaults.breed_vortex_inline - use_old_omega: bool = NamelistDefaults.use_old_omega - rf_fast: bool = NamelistDefaults.rf_fast - adiabatic: bool = NamelistDefaults.adiabatic - nf_omega: int = NamelistDefaults.nf_omega - fv_sg_adj: int = NamelistDefaults.fv_sg_adj - n_sponge: int = NamelistDefaults.n_sponge - lsoil: int = NamelistDefaults.lsoil - daily_mean: bool = False - sw_dynamics: bool = NamelistDefaults.sw_dynamics - """Flag to replace cosz with daily mean value in physics""" - - @classmethod - def from_f90nml(cls, namelist: f90nml.Namelist) -> Self: - namelist_dict = namelist_to_flatish_dict(namelist.items()) - namelist_dict = { - key: value - for key, value in namelist_dict.items() - if key in cls.__dataclass_fields__ - } - return cls(**namelist_dict) - - def __post_init__(self) -> None: - warnings.warn( - "Usage of `ndsl.Namelist` is discouraged. The class will be " - "removed in the next version together with `NamelistDefaults`, see " - "https://github.com/NOAA-GFDL/NDSL/issues/64.", - DeprecationWarning, - stacklevel=2, - ) - - -def namelist_to_flatish_dict(nml_input: Any) -> dict: - nml = dict(nml_input) - for name, value in nml.items(): - if isinstance(value, f90nml.Namelist): - nml[name] = namelist_to_flatish_dict(value) - flatter_namelist = {} - for key, value in nml.items(): - if isinstance(value, dict): - for subkey, subvalue in value.items(): - if subkey in flatter_namelist: - raise ValueError( - "Cannot flatten this namelist, duplicate keys: " + subkey - ) - flatter_namelist[subkey] = subvalue - else: - flatter_namelist[key] = value - return flatter_namelist diff --git a/ndsl/quantity/field_bundle.py b/ndsl/quantity/field_bundle.py index f33ae8a6..c66b338f 100644 --- a/ndsl/quantity/field_bundle.py +++ b/ndsl/quantity/field_bundle.py @@ -95,6 +95,7 @@ def __getattr__(self, name: str) -> Quantity: units=self._quantity.units, origin=self._quantity.origin[:-1], extent=self._quantity.extent[:-1], + backend=self._quantity.backend, ) return self._per_name_view[name] diff --git a/ndsl/quantity/local.py b/ndsl/quantity/local.py index 910999ab..438def1b 100644 --- a/ndsl/quantity/local.py +++ b/ndsl/quantity/local.py @@ -1,4 +1,6 @@ -from typing import Any, Sequence +import warnings +from collections.abc import Sequence +from typing import Any import dace import numpy as np @@ -20,21 +22,38 @@ def __init__( data: np.ndarray | cupy.ndarray, dims: Sequence[str], units: str, + *, + backend: str | None = None, origin: Sequence[int] | None = None, extent: Sequence[int] | None = None, gt4py_backend: str | None = None, allow_mismatch_float_precision: bool = False, ): + if gt4py_backend is not None: + warnings.warn( + "gt4py_backend is deprecated. Use `backend` instead.", + DeprecationWarning, + stacklevel=2, + ) + if backend is None: + backend = gt4py_backend + + if backend is None: + warnings.warn( + "`backend` will be a required argument starting with the next version of NDSL.", + DeprecationWarning, + stacklevel=2, + ) + super().__init__( data, dims, units, - origin, - extent, - gt4py_backend, - allow_mismatch_float_precision, + origin=origin, + extent=extent, + allow_mismatch_float_precision=allow_mismatch_float_precision, + backend=backend, ) - self._transient = True def __descriptor__(self) -> Any: """Locals uses `Quantity.__descriptor__` and flag itself as transient.""" diff --git a/ndsl/quantity/metadata.py b/ndsl/quantity/metadata.py index 7e7b4f16..45a14445 100644 --- a/ndsl/quantity/metadata.py +++ b/ndsl/quantity/metadata.py @@ -30,7 +30,9 @@ class QuantityMetadata: dtype: type "dtype of the data in the ndarray-like object" gt4py_backend: str | None = None - "backend to use for gt4py storages" + "Deprecated. Use backend instead." + backend: str | None = None + "GT4Py backend name. Used for performance optimal data allocation." @property def dim_lengths(self) -> dict[str, int]: @@ -57,6 +59,7 @@ def duplicate_metadata(self, metadata_copy: QuantityMetadata) -> None: metadata_copy.data_type = self.data_type metadata_copy.dtype = self.dtype metadata_copy.gt4py_backend = self.gt4py_backend + metadata_copy.backend = self.backend @dataclasses.dataclass diff --git a/ndsl/quantity/quantity.py b/ndsl/quantity/quantity.py index 45312d2f..5890fcfe 100644 --- a/ndsl/quantity/quantity.py +++ b/ndsl/quantity/quantity.py @@ -32,6 +32,8 @@ def __init__( data: np.ndarray | cupy.ndarray, dims: Sequence[str], units: str, + *, + backend: str | None = None, origin: Sequence[int] | None = None, extent: Sequence[int] | None = None, gt4py_backend: str | None = None, @@ -41,24 +43,40 @@ def __init__( """Initialize a Quantity. Args: - data (_type_): ndarray-like object containing the underlying data - dims (Sequence[str]): dimension names for each axis - units (str): units of the quantity - origin (Sequence[int] | None, optional): first point in data within the - computational domain. Defaults to None. - extent (Sequence[int] | None, optional): number of points along each axis + data: ndarray-like object containing the underlying data + dims: dimension names for each axis + units: units of the quantity + backend: GT4Py backend name. We ensure that the data is allocated in a + performance optimal way for that backend and copy if necessary. + origin: first point in data within the + computational domain. Defaults to None. + extent: number of points along each axis within the computational domain. Defaults to None. - gt4py_backend (str | None, optional): backend to use for gt4py storages, - if not given this will be derived from a Storage - if given as the data argument. Defaults to None. - allow_mismatch_float_precision (bool, optional): allow for precision that is + gt4py_backend: deprecated, use `backend` instead. + allow_mismatch_float_precision: allow for precision that is not the simulation-wide default configuration. Defaults to False. - number_of_halo_points (int, optional): Number of halo points used. Defaults to 0. + number_of_halo_points: Number of halo points used. Defaults to 0. Raises: ValueError: Data-type mismatch between configuration and input-data TypeError: Typing of the data that does not fit """ + if gt4py_backend is not None: + warnings.warn( + "gt4py_backend is deprecated. Use `backend` instead.", + DeprecationWarning, + stacklevel=2, + ) + if backend is None: + backend = gt4py_backend + + if backend is None: + warnings.warn( + "`backend` will be a required argument starting with the next version of NDSL.", + DeprecationWarning, + stacklevel=2, + ) + if ( not allow_mismatch_float_precision and is_float(data.dtype) @@ -80,6 +98,11 @@ def __init__( if isinstance(data, (int, float, list)): # If converting basic data, use a numpy ndarray. + warnings.warn( + "Usage of basic data in Quantities is deprecated. Please use it with a numpy or cuppy ndarray instead.", + DeprecationWarning, + stacklevel=2, + ) data = np.asarray(data) if not isinstance(data, (np.ndarray, cupy.ndarray)): @@ -87,8 +110,10 @@ def __init__( f"Only supports numpy.ndarray and cupy.ndarray, got {type(data)}" ) - if gt4py_backend is not None: - gt4py_backend_cls = gt_backend.from_name(gt4py_backend) + _validate_quantity_property_lengths(data.shape, dims, origin, extent) + + if backend is not None: + gt4py_backend_cls = gt_backend.from_name(backend) is_optimal_layout = gt4py_backend_cls.storage_info["is_optimal_layout"] dimensions: tuple[str | int, ...] = tuple( @@ -104,21 +129,25 @@ def __init__( ] ) - self._data = ( - data - if is_optimal_layout(data, dimensions) - else self._initialize_data( + if is_optimal_layout(data, dimensions): + self._data = data + else: + warnings.warn( + f"Suboptimal data layout found. Copying data to optimally align for backend '{backend}'.", + UserWarning, + stacklevel=2, + ) + self._data = gt_storage.from_array( data, - origin=origin, - gt4py_backend=gt4py_backend, + data.dtype, + backend=backend, + aligned_index=origin, dimensions=dimensions, ) - ) else: - # We have no info about the gt4py_backend, so just assign it. + # We have no info about the gt4py backend, so just assign it. self._data = data - _validate_quantity_property_lengths(data.shape, dims, origin, extent) self._metadata = QuantityMetadata( origin=_ensure_int_tuple(origin, "origin"), extent=_ensure_int_tuple(extent, "extent"), @@ -127,7 +156,8 @@ def __init__( units=units, data_type=type(self._data), dtype=data.dtype, - gt4py_backend=gt4py_backend, + backend=backend, + gt4py_backend=backend, ) self._attrs = {} # type: ignore[var-annotated] self._compute_domain_view = BoundedArrayView( @@ -138,10 +168,12 @@ def __init__( def from_data_array( cls, data_array: xr.DataArray, + *, origin: Sequence[int] | None = None, extent: Sequence[int] | None = None, gt4py_backend: str | None = None, number_of_halo_points: int = 0, + backend: str | None = None, ) -> Quantity: """ Initialize a Quantity from an xarray.DataArray. @@ -150,12 +182,26 @@ def from_data_array( data_array origin: first point in data within the computational domain extent: number of points along each axis within the computational domain - gt4py_backend: backend to use for gt4py storages, if not given this will - be derived from a Storage if given as the data argument, otherwise the - storage attribute is disabled and will raise an exception + gt4py_backend: deprecated, use `backend` instead. + allow_mismatch_float_precision: allow for precision that is + not the simulation-wide default configuration. Defaults to False. + number_of_halo_points: Number of halo points used. Defaults to 0. + backend: GT4Py backend name. If given, we allocate data in a performance + optimal way for this backend. Overrides any potentially saved `backend` + in `data.attrs["backend"]`. """ if "units" not in data_array.attrs: raise ValueError("need units attribute to create Quantity from DataArray") + + if gt4py_backend is not None: + warnings.warn( + "gt4py_backend is deprecated. Use `backend` instead.", + DeprecationWarning, + stacklevel=2, + ) + if backend is None: + backend = gt4py_backend + return cls( data_array.values, cast(tuple[str], data_array.dims), @@ -163,13 +209,15 @@ def from_data_array( origin=origin, extent=extent, number_of_halo_points=number_of_halo_points, - gt4py_backend=gt4py_backend, + backend=_resolve_backend(data_array, backend), ) def to_netcdf( self, path: str, name: str = "var", rank: int = -1, all_data: bool = False ) -> None: if rank < 0 or MPI.COMM_WORLD.Get_rank() == rank: + if rank < 0: + rank = MPI.COMM_WORLD.Get_rank() if all_data: self.data_as_xarray.to_dataset(name=name).to_netcdf( f"{path}__r{rank}.nc4" @@ -221,17 +269,6 @@ def sel(self, **kwargs: slice | int) -> np.ndarray: """ return self.view[tuple(kwargs.get(dim, slice(None, None)) for dim in self.dims)] - def _initialize_data(self, data, origin, gt4py_backend: str, dimensions: tuple): # type: ignore - """Allocates an ndarray with optimal memory layout, and copies the data over.""" - storage = gt_storage.from_array( - data, - data.dtype, - backend=gt4py_backend, - aligned_index=origin, - dimensions=dimensions, - ) - return storage - @property def metadata(self) -> QuantityMetadata: return self._metadata @@ -243,29 +280,26 @@ def units(self) -> str: @property def gt4py_backend(self) -> str | None: + warnings.warn( + "gt4py_backend is deprecated. Use `backend` instead.", + DeprecationWarning, + stacklevel=2, + ) return self.metadata.gt4py_backend + @property + def backend(self) -> str | None: + return self.metadata.backend + @property def attrs(self) -> dict: - return dict(**self._attrs, units=self._metadata.units) + return dict(**self._attrs, units=self.units, backend=self.backend) @property def dims(self) -> tuple[str, ...]: """Names of each dimension""" return self.metadata.dims - @property - def values(self) -> np.ndarray: - warnings.warn( - "values exists only for backwards-compatibility with " - "DataArray and will be removed, use .view[:] instead", - DeprecationWarning, - stacklevel=2, - ) - return_array = np.asarray(self.view[:]) - return_array.flags.writeable = False - return return_array - @property def view(self) -> BoundedArrayView: """A view into the computational domain of the underlying data""" @@ -397,19 +431,14 @@ def transpose( units=self.units, origin=_transpose_sequence(self.origin, transpose_order), extent=_transpose_sequence(self.extent, transpose_order), - gt4py_backend=self.gt4py_backend, allow_mismatch_float_precision=allow_mismatch_float_precision, + backend=self.backend, ) transposed._attrs = self._attrs return transposed def plot_k_level(self, k_index: int = 0) -> None: field = self.data - print( - "Min and max values:", - field[:, :, k_index].min(), - field[:, :, k_index].max(), - ) plt.xlabel("I") plt.ylabel("J") @@ -476,3 +505,16 @@ def _ensure_int_tuple(arg: Sequence, arg_name: str) -> tuple: f"unexpected type {type(item)}" ) return tuple(return_list) + + +def _resolve_backend(data: xr.DataArray, backend: str | None) -> str: + if backend is not None: + # Forced backend name takes precedence + return backend + + # If backend name was serialized with data, take this one + if "backend" in data.attrs: + return data.attrs["backend"] + + # else, fall back to assume python-based layout. + return "debug" diff --git a/ndsl/stencils/__init__.py b/ndsl/stencils/__init__.py index 8a635187..08c24561 100644 --- a/ndsl/stencils/__init__.py +++ b/ndsl/stencils/__init__.py @@ -1,8 +1,4 @@ -from .corners import CopyCorners, CopyCornersXY, FillCornersBGrid +from .corners import CopyCornersXY, FillCornersBGrid -__all__ = [ - "CopyCorners", - "CopyCornersXY", - "FillCornersBGrid", -] +__all__ = ["CopyCornersXY", "FillCornersBGrid"] diff --git a/ndsl/stencils/column_operations.py b/ndsl/stencils/column_operations.py new file mode 100644 index 00000000..25ede5de --- /dev/null +++ b/ndsl/stencils/column_operations.py @@ -0,0 +1,103 @@ +import typing + +from ndsl.dsl.gt4py import function + + +@typing.no_type_check +@function +def column_max(field, start_index, end_index): + """ + Find the maximum value for a full or slice of a column. + + Args: + field: data to be analyzed + start_index: "bottom" index of slice, must be less than end_index + end_index: "top" index of slice, must be greater than start_index + + Returns: [max value, index of max value] + """ + max_index = 0 + level = start_index + while level <= end_index: + new = field.at(K=level) + old = field.at(K=max_index) + if new > old: + max_index = level + level += 1 + + return field.at(K=max_index), max_index + + +@typing.no_type_check +@function +def column_max_ddim(field, ddim, start_index, end_index): + """ + Find the maximum value for a full or slice of a column. + + Args: + field: data to be analyzed + start_index: "bottom" index of slice, must be less than end_index + end_index: "top" index of slice, must be greater than start_index + + Returns: [max value, index of max value] + """ + max_index = 0 + level = start_index + while level <= end_index: + new = field.at(K=level, ddim=[ddim]) + old = field.at(K=max_index, ddim=[ddim]) + if new > old: + max_index = level + level += 1 + + return field.at(K=max_index, ddim=[ddim]), max_index + + +@typing.no_type_check +@function +def column_min(field, start_index, end_index): + """ + Find the minimum value for a full or slice of a column. + + Args: + field: data to be analyzed + start_index: "bottom" index of slice, must be less than end_index + end_index: "top" index of slice, must be greater than start_index + + Returns: [min value, index of min value] + """ + min_index = 0 + level = start_index + while level <= end_index: + new = field.at(K=level) + old = field.at(K=min_index) + if new < old: + min_index = level + level += 1 + + return field.at(K=min_index), min_index + + +@typing.no_type_check +@function +def column_min_ddim(field, ddim, start_index, end_index): + """ + Find the minimum value for a full or slice of a column. + + Args: + field: data to be analyzed + start_index: "bottom" index of slice, must be less than end_index + end_index: "top" index of slice, must be greater than start_index + + Returns: [min value, index of min value] + """ + min_index = 0 + level = start_index + while level <= end_index: + new = field.at(K=level, ddim=[ddim]) + old = field.at(K=min_index, ddim=[ddim]) + if new < old: + min_index = level + level += 1 + + return field.at(K=min_index, ddim=[ddim]), min_index diff --git a/ndsl/stencils/corners.py b/ndsl/stencils/corners.py index 021a439b..d3fd2c0d 100644 --- a/ndsl/stencils/corners.py +++ b/ndsl/stencils/corners.py @@ -5,69 +5,11 @@ from gt4py.cartesian.gtscript import PARALLEL, computation, horizontal, interval, region from ndsl import StencilFactory -from ndsl.constants import ( - X_DIM, - X_INTERFACE_DIM, - Y_DIM, - Y_INTERFACE_DIM, - Z_INTERFACE_DIM, -) +from ndsl.constants import X_INTERFACE_DIM, Y_INTERFACE_DIM, Z_INTERFACE_DIM from ndsl.dsl.stencil import GridIndexing from ndsl.dsl.typing import FloatField -class CopyCorners: - """ - Helper-class to copy corners corresponding to the fortran functions - copy_corners_x or copy_corners_y respectively - """ - - def __init__(self, direction: str, stencil_factory: StencilFactory) -> None: - """The grid for this stencil""" - warnings.warn( - "Usage of the GT4Py implementation of CopyCorners is discouraged and will" - "be removed in the next release. Use `CopyCornersX` or `CopyCornersY` in PyFV3" - "for a more future-proof implementation of the same code.", - DeprecationWarning, - 2, - ) - grid_indexing = stencil_factory.grid_indexing - - n_halo = grid_indexing.n_halo - origin, domain = grid_indexing.get_origin_domain( - dims=[X_DIM, Y_DIM, Z_INTERFACE_DIM], halos=(n_halo, n_halo) - ) - - ax_offsets = grid_indexing.axis_offsets(origin, domain) - if direction == "x": - self._copy_corners = stencil_factory.from_origin_domain( - func=copy_corners_x_stencil_defn, - origin=origin, - domain=domain, - externals={ - **ax_offsets, - }, - ) - elif direction == "y": - self._copy_corners = stencil_factory.from_origin_domain( - func=copy_corners_y_stencil_defn, - origin=origin, - domain=domain, - externals={ - **ax_offsets, - }, - ) - else: - raise ValueError("Direction must be either 'x' or 'y'") - - def __call__(self, field: FloatField): - """ - Fills cell quantity field using corners from itself and multipliers - in the direction specified initialization of the instance of this class. - """ - self._copy_corners(field, field) - - class CopyCornersXY: """ Helper-class to copy corners corresponding to the Fortran functions @@ -87,6 +29,13 @@ def __init__( y_field: 3D gt4py storage to use for y-differenceable field (x-differenceable field uses same memory as base field) """ + warnings.warn( + "Usage of CopyCornersXY is deprecated and will be removed in the next release. " + "Use `CopyCornersX` and `CopyCornersY` in PyFV3 for a more future-proof " + "implementation of the corner code.", + DeprecationWarning, + stacklevel=2, + ) grid_indexing = stencil_factory.grid_indexing origin, domain = grid_indexing.get_origin_domain( dims=dims, halos=(grid_indexing.n_halo, grid_indexing.n_halo) @@ -313,126 +262,6 @@ def fill_corners_3cells_mult_y( return q -def copy_corners_x_stencil_defn(q_in: FloatField, q_out: FloatField): - from __externals__ import i_end, i_start, j_end, j_start - - with computation(PARALLEL), interval(...): - with horizontal( - region[i_start - 3, j_start - 3], region[i_end + 3, j_start - 3] - ): - q_out = q_in[0, 5, 0] - with horizontal( - region[i_start - 2, j_start - 3], region[i_end + 3, j_start - 2] - ): - q_out = q_in[-1, 4, 0] - with horizontal( - region[i_start - 1, j_start - 3], region[i_end + 3, j_start - 1] - ): - q_out = q_in[-2, 3, 0] - with horizontal( - region[i_start - 3, j_start - 2], region[i_end + 2, j_start - 3] - ): - q_out = q_in[1, 4, 0] - with horizontal( - region[i_start - 2, j_start - 2], region[i_end + 2, j_start - 2] - ): - q_out = q_in[0, 3, 0] - with horizontal( - region[i_start - 1, j_start - 2], region[i_end + 2, j_start - 1] - ): - q_out = q_in[-1, 2, 0] - with horizontal( - region[i_start - 3, j_start - 1], region[i_end + 1, j_start - 3] - ): - q_out = q_in[2, 3, 0] - with horizontal( - region[i_start - 2, j_start - 1], region[i_end + 1, j_start - 2] - ): - q_out = q_in[1, 2, 0] - with horizontal( - region[i_start - 1, j_start - 1], region[i_end + 1, j_start - 1] - ): - q_out = q_in[0, 1, 0] - with horizontal(region[i_start - 3, j_end + 1], region[i_end + 1, j_end + 3]): - q_out = q_in[2, -3, 0] - with horizontal(region[i_start - 2, j_end + 1], region[i_end + 1, j_end + 2]): - q_out = q_in[1, -2, 0] - with horizontal(region[i_start - 1, j_end + 1], region[i_end + 1, j_end + 1]): - q_out = q_in[0, -1, 0] - with horizontal(region[i_start - 3, j_end + 2], region[i_end + 2, j_end + 3]): - q_out = q_in[1, -4, 0] - with horizontal(region[i_start - 2, j_end + 2], region[i_end + 2, j_end + 2]): - q_out = q_in[0, -3, 0] - with horizontal(region[i_start - 1, j_end + 2], region[i_end + 2, j_end + 1]): - q_out = q_in[-1, -2, 0] - with horizontal(region[i_start - 3, j_end + 3], region[i_end + 3, j_end + 3]): - q_out = q_in[0, -5, 0] - with horizontal(region[i_start - 2, j_end + 3], region[i_end + 3, j_end + 2]): - q_out = q_in[-1, -4, 0] - with horizontal(region[i_start - 1, j_end + 3], region[i_end + 3, j_end + 1]): - q_out = q_in[-2, -3, 0] - - -def copy_corners_y_stencil_defn(q_in: FloatField, q_out: FloatField): - from __externals__ import i_end, i_start, j_end, j_start - - with computation(PARALLEL), interval(...): - with horizontal( - region[i_start - 3, j_start - 3], region[i_start - 3, j_end + 3] - ): - q_out = q_in[5, 0, 0] - with horizontal( - region[i_start - 2, j_start - 3], region[i_start - 3, j_end + 2] - ): - q_out = q_in[4, 1, 0] - with horizontal( - region[i_start - 1, j_start - 3], region[i_start - 3, j_end + 1] - ): - q_out = q_in[3, 2, 0] - with horizontal( - region[i_start - 3, j_start - 2], region[i_start - 2, j_end + 3] - ): - q_out = q_in[4, -1, 0] - with horizontal( - region[i_start - 2, j_start - 2], region[i_start - 2, j_end + 2] - ): - q_out = q_in[3, 0, 0] - with horizontal( - region[i_start - 1, j_start - 2], region[i_start - 2, j_end + 1] - ): - q_out = q_in[2, 1, 0] - with horizontal( - region[i_start - 3, j_start - 1], region[i_start - 1, j_end + 3] - ): - q_out = q_in[3, -2, 0] - with horizontal( - region[i_start - 2, j_start - 1], region[i_start - 1, j_end + 2] - ): - q_out = q_in[2, -1, 0] - with horizontal( - region[i_start - 1, j_start - 1], region[i_start - 1, j_end + 1] - ): - q_out = q_in[1, 0, 0] - with horizontal(region[i_end + 1, j_start - 3], region[i_end + 3, j_end + 1]): - q_out = q_in[-3, 2, 0] - with horizontal(region[i_end + 2, j_start - 3], region[i_end + 3, j_end + 2]): - q_out = q_in[-4, 1, 0] - with horizontal(region[i_end + 3, j_start - 3], region[i_end + 3, j_end + 3]): - q_out = q_in[-5, 0, 0] - with horizontal(region[i_end + 1, j_start - 2], region[i_end + 2, j_end + 1]): - q_out = q_in[-2, 1, 0] - with horizontal(region[i_end + 2, j_start - 2], region[i_end + 2, j_end + 2]): - q_out = q_in[-3, 0, 0] - with horizontal(region[i_end + 3, j_start - 2], region[i_end + 2, j_end + 3]): - q_out = q_in[-4, -1, 0] - with horizontal(region[i_end + 1, j_start - 1], region[i_end + 1, j_end + 1]): - q_out = q_in[-1, 0, 0] - with horizontal(region[i_end + 2, j_start - 1], region[i_end + 1, j_end + 2]): - q_out = q_in[-2, -1, 0] - with horizontal(region[i_end + 3, j_start - 1], region[i_end + 1, j_end + 3]): - q_out = q_in[-3, -2, 0] - - def copy_corners_xy_stencil_defn( q_in: FloatField, q_out_x: FloatField, q_out_y: FloatField ): diff --git a/ndsl/stencils/testing/best_guess_diff.py b/ndsl/stencils/testing/best_guess_diff.py new file mode 100644 index 00000000..7bb0ca82 --- /dev/null +++ b/ndsl/stencils/testing/best_guess_diff.py @@ -0,0 +1,194 @@ +import argparse +import pathlib + +import numpy as np +import xarray as xr +import yaml + + +def get_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + "Attempt to diff two NetCDFs with similar data." + "Differences that can be reconciled are strict domain vs halo, variable name mapping." + "The program will report on assumptions taken." + ) + parser.add_argument( + "netcdf_A", + type=str, + help="path of first NetCDFs, named A in the logs.", + ) + parser.add_argument( + "netcdf_B", + type=str, + help="path of second NetCDFs, named B in the logs.", + ) + parser.add_argument( + "-nm", + "--name_mapping", + type=str, + help="[Optional] Yaml file describing the mapping of the names.", + ) + parser.add_argument( + "-ha", + "--halo", + type=int, + default=3, + help="[Optional] Halo size if any, default to 3.", + ) + return parser + + +def main( + netcdf_A: str, + netcdf_B: str, + name_mapping: str | None = None, + halo: int = 3, +) -> None: + A = xr.open_dataset(netcdf_A) + B = xr.open_dataset(netcdf_B) + name_map = {} + if name_mapping is not None: + with open(name_mapping) as f: + name_map = yaml.safe_load(f) + + dataset = {} + for name_A, data_A in A.items(): + print(f"Best guess for {name_A} from A:") + # Resolve name + resolved_name_B = None + if name_A not in B.keys(): + if name_A not in name_map.keys(): + print(" [Failed] name can't be found in B nor in name mapping") + else: + resolved_name_B = name_map[name_A] + else: + resolved_name_B = name_A + + if resolved_name_B is None: + continue + print(f" [Hyp] use {resolved_name_B} for B") + + # Resolve domain size + data_B = B[resolved_name_B] + if len(data_A.shape) >= 5: + print( + " [Hyp] A data dims are >= 5, assuming savepoints/rank are the firt two and going A[0, 0, ::]" + ) + data_A = data_A[0, 0, ::] + if len(data_B.shape) >= 5: + print( + " [Hyp] B data dims are >= 5, assuming savepoints/rank are the firt two and going B[0, 0, ::]" + ) + data_B = data_B[0, 0, ::] + + if len(data_A.shape) != len(data_B.shape): + print( + f" [Failed] A is shape {len(data_A.shape)}, B is shape {len(data_B.shape)}: can't reconcile." + ) + continue + + # - Assume we have 0 == I, 1 == J now + resolved_I = None + A_uses_halo = False + B_uses_halo = False + if data_A.shape[0] != data_B.shape[0]: + if data_A.shape[0] < data_B.shape[0]: + if data_B.shape[0] - 2 * halo != data_A.shape[0]: + print( + f" [Failed] B in dim I is too big, even with halo substracted {data_B.shape[0]} (halo: {halo})" + ) + else: + B_uses_halo = True + resolved_I = data_A.shape[0] + else: + if data_A.shape[0] - 2 * halo != data_B.shape[0]: + print( + f" [Failed] A in dim I is too big, even with halo substracted {data_A.shape[0]} (halo: {halo})" + ) + else: + A_uses_halo = True + resolved_I = data_B.shape[0] + else: + resolved_I = data_A.shape[0] + + if resolved_I is None: + continue + + print(f" [Hyp] Using {resolved_I} as I dim size") + + resolved_J = None + if data_A.shape[1] != data_B.shape[1]: + if data_A.shape[1] < data_B.shape[1]: + if data_B.shape[1] - 2 * halo != data_A.shape[1]: + print( + f" [Failed] B in dim J is too big, even with halo substracted {data_B.shape[1]} (halo: {halo})" + ) + else: + resolved_J = data_A.shape[1] + else: + if data_A.shape[1] - 2 * halo != data_B.shape[1]: + print( + f" [Failed] A in dim J is too big, even with halo substracted {data_A.shape[1]} (halo: {halo})" + ) + else: + resolved_J = data_B.shape[1] + else: + resolved_J = data_A.shape[1] + + if resolved_J is None: + continue + + print(f" [Hyp] Using {resolved_J} as J dim size") + + # - Assume 2 == K + if data_A.shape[2] != data_B.shape[2]: + print( + f" [Failed] Can't reconcile K dim: A ({data_A.shape[2]}) != B ({data_B.shape[2]})" + ) + continue + resolved_K = data_A.shape[2] + + print(f" [Hyp] Using {resolved_K} as K dim size") + + # We should now be ready to diff + if A_uses_halo: + data_A = data_A[halo:-halo, halo:-halo, ::] + if B_uses_halo: + data_B = data_B[halo:-halo, halo:-halo, ::] + + dims = [f"D{i}_{s}" for i, s in enumerate(data_A.shape)] + absolute_diff = data_A.data - data_B.data + dataset[name_A] = xr.DataArray( + absolute_diff, + dims=dims, + ) + + # ULP diffs + max_values = np.maximum( + np.absolute(data_A.data.flatten()), np.absolute(data_B.data.flatten()) + ) + ulp_diff = np.divide(np.abs(absolute_diff.flatten()), np.spacing(max_values)) + ulp_diff = np.sort(ulp_diff) + dataset[f"ulp_{name_A}"] = xr.DataArray( + ulp_diff, + dims=[f"GP_{ulp_diff.shape[0]}"], + ) + + print(" [Success]") + + xr.Dataset(dataset).to_netcdf(f"best_guest_diff_{pathlib.Path(netcdf_A).stem}.nc4") + + +def entry_point() -> None: + parser = get_parser() + args = parser.parse_args() + main( + netcdf_A=args.netcdf_A, + netcdf_B=args.netcdf_B, + name_mapping=args.name_mapping, + halo=args.halo, + ) + + +if __name__ == "__main__": + entry_point() diff --git a/ndsl/stencils/testing/conftest.py b/ndsl/stencils/testing/conftest.py index 4e0bb428..1e5f41f7 100644 --- a/ndsl/stencils/testing/conftest.py +++ b/ndsl/stencils/testing/conftest.py @@ -18,9 +18,6 @@ from ndsl.comm.mpi import MPI, MPIComm from ndsl.comm.partitioner import CubedSpherePartitioner, TilePartitioner from ndsl.dsl.dace.dace_config import DaceConfig - -# TODO: Remove NdslNamelist import after Issue#64 is resolved. -from ndsl.namelist import Namelist as NdslNamelist from ndsl.stencils.testing.grid import Grid # type: ignore from ndsl.stencils.testing.parallel_translate import ParallelTranslate from ndsl.stencils.testing.savepoint import SavepointCase, Translate, dataset_to_dict @@ -78,12 +75,6 @@ def pytest_addoption(parser: pytest.Parser) -> None: default=1, help="How many indices of failures to print from worst to best. Default to 1.", ) - parser.addoption( - "--no_legacy_namelist", - action="store_true", - default=False, - help="Removes support for `ndsl.Namelist` in translate tests (which we are trying to get rid off, see NDSL issue #64). Defaults to False.", - ) parser.addoption( "--grid", action="store", @@ -268,9 +259,6 @@ def sequential_savepoint_cases( sort_report = metafunc.config.getoption("sort_report") no_report = metafunc.config.getoption("no_report") - # Temporary flag (Issue#64): TODO Remove once ndsl.Namelist is gone. - use_legacy_namelist = not metafunc.config.getoption("no_legacy_namelist") - return _savepoint_cases( savepoint_names, ranks, @@ -283,7 +271,6 @@ def sequential_savepoint_cases( topology_mode, sort_report=sort_report, no_report=no_report, - use_legacy_namelist=use_legacy_namelist, # Issue#64: tmp flag ) @@ -299,7 +286,6 @@ def _savepoint_cases( topology_mode: str, sort_report: str, no_report: bool, - use_legacy_namelist: bool, # Issue#64: tmp flag ) -> list[SavepointCase]: grid_params = grid_params_from_f90nml(namelist) return_list = [] @@ -335,12 +321,6 @@ def _savepoint_cases( grid_indexing=grid.grid_indexing, ) for test_name in sorted(list(savepoint_names)): - # Temporary check (Issue#64): TODO Remove check and conversion from - # f90nml.Namelist to ndsl.Namelist after ndsl.Namelist is removed - if use_legacy_namelist and not isinstance(namelist, NdslNamelist): - assert isinstance(namelist, Namelist) - namelist = NdslNamelist.from_f90nml(namelist) - testobj = get_test_class_instance( test_name, grid, namelist, stencil_factory ) @@ -402,9 +382,6 @@ def parallel_savepoint_cases( grid_mode = metafunc.config.getoption("grid") savepoint_to_replay = get_savepoint_restriction(metafunc) - # Temporary flag (Issue#64): TODO Remove once ndsl.Namelist is gone. - use_legacy_namelist = not metafunc.config.getoption("no_legacy_namelist") - return _savepoint_cases( savepoint_names, [mpi_rank], @@ -417,7 +394,6 @@ def parallel_savepoint_cases( topology_mode, sort_report=sort_report, no_report=no_report, - use_legacy_namelist=use_legacy_namelist, # Issue#64: tmp flag ) diff --git a/ndsl/stencils/testing/grid.py b/ndsl/stencils/testing/grid.py index 41c7d356..6437f561 100644 --- a/ndsl/stencils/testing/grid.py +++ b/ndsl/stencils/testing/grid.py @@ -159,9 +159,7 @@ def sizer(self): @property def quantity_factory(self) -> QuantityFactory: if self._quantity_factory is None: - self._quantity_factory = QuantityFactory.from_backend( - self.sizer, backend=self.backend - ) + self._quantity_factory = QuantityFactory(self.sizer, backend=self.backend) return self._quantity_factory def make_quantity( diff --git a/ndsl/stencils/testing/parallel_translate.py b/ndsl/stencils/testing/parallel_translate.py index 85b87020..d23d5459 100644 --- a/ndsl/stencils/testing/parallel_translate.py +++ b/ndsl/stencils/testing/parallel_translate.py @@ -7,9 +7,6 @@ from ndsl.constants import HORIZONTAL_DIMS, N_HALO_DEFAULT, X_DIMS, Y_DIMS from ndsl.dsl import gt4py_utils as utils - -# TODO: Remove once ndsl.Namelist is gone (Issue#64) -from ndsl.namelist import Namelist as NdslNamelist from ndsl.quantity import Quantity from ndsl.stencils.testing.translate import ( TranslateFortranData2Py, @@ -133,12 +130,6 @@ def rank_grids(self): @property def layout(self): - # TODO: Once ndsl.namelist.Namelist is gone (Issue#64), - # remove this check in favor of f90nml.namelist.Namelist - if isinstance(self.namelist, NdslNamelist): - return self.namelist.layout - - # Assumption: namelist is f90nml.namelist.Namelist grid_params = grid_params_from_f90nml(self.namelist) return grid_params["layout"] diff --git a/ndsl/stencils/testing/test_translate.py b/ndsl/stencils/testing/test_translate.py index a350e76f..8ba789cb 100644 --- a/ndsl/stencils/testing/test_translate.py +++ b/ndsl/stencils/testing/test_translate.py @@ -258,6 +258,11 @@ def test_sequential_savepoint( output_data = gt_utils.asarray(output[varname]) if multimodal_metric: metric = MultiModalFloatMetric( + input_values=( + original_input_data[varname] + if varname in original_input_data.keys() + else None + ), reference_values=ref_data, computed_values=output_data, absolute_eps_override=case.testobj.mmr_absolute_eps, @@ -391,6 +396,7 @@ def test_parallel_savepoint( if not case.exists: pytest.skip(f"Data at rank {case.grid.rank} does not exists") input_data = dataset_to_dict(case.ds_in) + original_input_data = copy.deepcopy(input_data) # run python version of functionality output = case.testobj.compute_parallel(input_data, communicator) out_vars = set(case.testobj.outputs.keys()) @@ -414,13 +420,16 @@ def test_parallel_savepoint( output_data = gt_utils.asarray(output[varname]) if multimodal_metric: metric = MultiModalFloatMetric( + input_values=( + original_input_data[varname] + if varname in original_input_data.keys() + else None + ), reference_values=ref_data[varname][0], computed_values=output_data, absolute_eps_override=case.testobj.mmr_absolute_eps, relative_fraction_override=case.testobj.mmr_relative_fraction, ulp_override=case.testobj.mmr_ulp, - ignore_near_zero_errors=ignore_near_zero, - near_zero=case.testobj.near_zero, sort_report=case.sort_report, ) else: diff --git a/ndsl/testing/comparison.py b/ndsl/testing/comparison.py index 44b4077b..c1a5b1ef 100644 --- a/ndsl/testing/comparison.py +++ b/ndsl/testing/comparison.py @@ -224,6 +224,7 @@ class MultiModalFloatMetric(BaseMetric): def __init__( self, + input_values: np.ndarray | None, reference_values: np.ndarray, computed_values: np.ndarray, absolute_eps_override: float = -1, @@ -256,6 +257,15 @@ def __init__( self.check = np.all(self.success) self.sort_report = sort_report + # We might have sliced outputs in the translate test. Rather than funnel the slicing + # all the way down, we bail out if we can measure input vs reference + if input_values is not None and input_values.shape == reference_values.shape: + self.number_changing_values = ( + (input_values != reference_values).flatten().shape[0] + ) + else: + self.number_changing_values = None + def _compute_all_metrics( self, ) -> npt.NDArray[np.bool_]: @@ -329,9 +339,19 @@ def report(self, file_path: str | None = None) -> list[str]: # List all errors to terminal and file bad_indices_count = len(failed_indices[0]) full_count = len(self.references.flatten()) - failures_pct = round(100.0 * (bad_indices_count / full_count), 2) + failures_of_all_grid_points_pct = round( + 100.0 * (bad_indices_count / full_count), 2 + ) + if self.number_changing_values is not None: + failures_of_changing_gridpoint_pct = round( + 100.0 * (bad_indices_count / self.number_changing_values), 2 + ) + report_local_failures = f"Failures (changing grid points) ({bad_indices_count}/{self.number_changing_values}) ({failures_of_changing_gridpoint_pct}%)\n" + else: + report_local_failures = "" report = [ - f"All failures ({bad_indices_count}/{full_count}) ({failures_pct}%),\n", + f"{report_local_failures}" + f"Failures (all grid points) ({bad_indices_count}/{full_count}) ({failures_of_all_grid_points_pct}%)\n", f"Index Computed Reference " f"{'🔶 ' if not self.absolute_eps.is_default else ''}Absolute E(<{self.absolute_eps.value:.2e}) " f"{'🔶 ' if not self.relative_fraction.is_default else ''}Relative E(<{self.relative_fraction.value * 100:.2e}%) " diff --git a/ndsl/testing/dummy_comm.py b/ndsl/testing/dummy_comm.py deleted file mode 100644 index f3e93817..00000000 --- a/ndsl/testing/dummy_comm.py +++ /dev/null @@ -1 +0,0 @@ -from ndsl.comm.local_comm import LocalComm as DummyComm # noqa diff --git a/ndsl/units.py b/ndsl/units.py deleted file mode 100644 index 7fb441b1..00000000 --- a/ndsl/units.py +++ /dev/null @@ -1,33 +0,0 @@ -import warnings - - -def ensure_equal_units(units1: str, units2: str) -> None: - warnings.warn( - "`ensure_equal_units` is unused and usage is discouraged. The function " - "will be removed in the next version of NDSL.", - DeprecationWarning, - stacklevel=2, - ) - if not units_are_equal(units1, units2): - raise UnitsError(f"incompatible units {units1} and {units2}") - - -def units_are_equal(units1: str, units2: str) -> bool: - warnings.warn( - "`units_are_equal` is unused and usage is discouraged. The function will " - "be removed in the next version of NDSL.", - DeprecationWarning, - stacklevel=2, - ) - return units1.strip() == units2.strip() - - -class UnitsError(Exception): - def __init__(self, *args) -> None: - warnings.warn( - "`UnitsError` is unused and usage is discouraged. The class will be " - "removed in the next version of NDSL.", - DeprecationWarning, - stacklevel=2, - ) - super().__init__(*args) diff --git a/pyproject.toml b/pyproject.toml index cf8e0a69..8bf3ab7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,11 +23,13 @@ requires-python = ">=3.11,<3.12" [project.optional-dependencies] demos = ["ipython", "ipykernel"] dev = ["ndsl[docs]", "ndsl[demos]", "ndsl[test]", "pre-commit", "flake8-pyproject", "build"] -docs = ["mkdocs-material", "mkdocstrings[python]"] +docs = ["mkdocs-material", "mkdocstrings[python]", "mkdocs-exclude"] extras = ["ndsl[docs]", "ndsl[demos]", "ndsl[test]", "ndsl[dev]"] test = ["pytest", "coverage"] +zarr = ["zarr<3"] [project.scripts] +best_guess_diff = "ndsl.stencils.testing.best_guess_diff:entry_point" ndsl-serialbox_to_netcdf = "ndsl.stencils.testing.serialbox_to_netcdf:entry_point" [project.urls] diff --git a/setup.py b/setup.py index 1719226f..6d109c36 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,6 @@ def local_pkg(name: str, relative_path: str) -> str: "cftime", "xarray>=2025.01.2", # datatree + fixes "f90nml>=1.1.0", - "fsspec", "netcdf4==1.7.2", "scipy", # restart capacities only "h5netcdf", # for xarray diff --git a/tests/dsl/orchestration/test_call.py b/tests/dsl/orchestration/test_call.py index d0c9f1b0..2ff2c16a 100644 --- a/tests/dsl/orchestration/test_call.py +++ b/tests/dsl/orchestration/test_call.py @@ -1,8 +1,11 @@ -from ndsl import QuantityFactory, StencilFactory +import dataclasses + +from ndsl import NDSLRuntime, QuantityFactory, StencilFactory from ndsl.boilerplate import get_factories_single_tile_orchestrated -from ndsl.constants import X_DIM, Y_DIM, Z_DIM +from ndsl.constants import X_DIM, Y_DIM, Z_DIM, Float from ndsl.dsl.dace.orchestration import orchestrate from ndsl.dsl.gt4py import PARALLEL, Field, computation, interval +from ndsl.quantity import Quantity, State def _stencil(out: Field[float]): @@ -40,3 +43,40 @@ def test_memory_reallocation(): code(qty_B) assert (qty_A.field[0, 0, :] == 3).all() assert (qty_B.field[0, 0, :] == 2).all() + + +@dataclasses.dataclass +class AState(State): + the_quantity: Quantity = dataclasses.field( + metadata={ + "name": "A", + "dims": [X_DIM, Y_DIM, Z_DIM], + "units": "kg kg-1", + "intent": "?", + "dtype": Float, + } + ) + + +class DefaultTypeProgram(NDSLRuntime): + def __init__( + self, + stencil_factory: StencilFactory, + quantity_factory: QuantityFactory, + ): + super().__init__(stencil_factory.config.dace_config) + self.stencil = stencil_factory.from_dims_halo(_stencil, [X_DIM, Y_DIM, Z_DIM]) + + def __call__(self, a_quantity: Quantity, a_state: AState): + self.stencil(a_quantity) + self.stencil(a_state.the_quantity) + + +def test_default_types_are_compiletime(): + stencil_factory, quantity_factory = get_factories_single_tile_orchestrated( + 5, 5, 2, 0 + ) + qty_A = quantity_factory.ones([X_DIM, Y_DIM, Z_DIM], "A") + state_A = AState.zeros(quantity_factory) + code = DefaultTypeProgram(stencil_factory, quantity_factory) + code(qty_A, state_A) diff --git a/tests/dsl/test_compilation_config.py b/tests/dsl/test_compilation_config.py index 326eb222..9f9c165c 100644 --- a/tests/dsl/test_compilation_config.py +++ b/tests/dsl/test_compilation_config.py @@ -7,7 +7,7 @@ CompilationConfig, CubedSphereCommunicator, CubedSpherePartitioner, - NullComm, + LocalComm, RunMode, TilePartitioner, ) @@ -34,7 +34,7 @@ def test_check_communicator_valid( partitioner = CubedSpherePartitioner( TilePartitioner((int(sqrt(size / 6)), int((sqrt(size / 6))))) ) - comm = NullComm(rank=0, total_ranks=size) + comm = LocalComm(rank=0, total_ranks=size, buffer_dict={}) cubed_sphere_comm = CubedSphereCommunicator(comm, partitioner) config = CompilationConfig( run_mode=run_mode, use_minimal_caching=use_minimal_caching @@ -52,7 +52,7 @@ def test_check_communicator_invalid( nx: int, ny: int, use_minimal_caching: bool, run_mode: RunMode ) -> None: partitioner = CubedSpherePartitioner(TilePartitioner((nx, ny))) - comm = NullComm(rank=0, total_ranks=nx * ny * 6) + comm = LocalComm(rank=0, total_ranks=nx * ny * 6, buffer_dict={}) cubed_sphere_comm = CubedSphereCommunicator(comm, partitioner) config = CompilationConfig( run_mode=run_mode, use_minimal_caching=use_minimal_caching @@ -90,7 +90,7 @@ def test_get_decomposition_info_from_comm( partitioner = CubedSpherePartitioner( TilePartitioner((int(sqrt(size / 6)), int(sqrt(size / 6)))) ) - comm = NullComm(rank=rank, total_ranks=size) + comm = LocalComm(rank=rank, total_ranks=size, buffer_dict={}) cubed_sphere_comm = CubedSphereCommunicator(comm, partitioner) config = CompilationConfig(use_minimal_caching=True, run_mode=RunMode.Run) ( @@ -130,7 +130,7 @@ def test_determine_compiling_equivalent( TilePartitioner((sqrt(size / 6), sqrt(size / 6))) ) comm = unittest.mock.MagicMock() - comm = NullComm(rank=rank, total_ranks=size) + comm = LocalComm(rank=rank, total_ranks=size, buffer_dict={}) cubed_sphere_comm = CubedSphereCommunicator(comm, partitioner) assert ( config.determine_compiling_equivalent(rank, cubed_sphere_comm.partitioner) diff --git a/tests/dsl/test_stencil.py b/tests/dsl/test_stencil.py index 7130853e..1f7f3836 100644 --- a/tests/dsl/test_stencil.py +++ b/tests/dsl/test_stencil.py @@ -108,7 +108,9 @@ def test_domain_size_comparison( domain: tuple[int], call_count: int, ): - quantity = Quantity(np.zeros(extent), dimensions, "n/a", extent=extent) + quantity = Quantity( + np.zeros(extent), dimensions, "n/a", extent=extent, backend="debug" + ) stencil = FrozenStencil( copy_stencil, origin=(0, 0, 0), @@ -147,7 +149,9 @@ def two_dim_temporaries_stencil(q_out: FloatField) -> None: def test_stencil_2D_temporaries() -> None: domain = (2, 2, 5) - quantity = Quantity(np.zeros(domain), ["x", "y", "z"], "n/a", extent=domain) + quantity = Quantity( + np.zeros(domain), ["x", "y", "z"], "n/a", extent=domain, backend="debug" + ) stencil = FrozenStencil( two_dim_temporaries_stencil, origin=(0, 0, 0), @@ -156,3 +160,30 @@ def test_stencil_2D_temporaries() -> None: ) stencil(quantity) assert (quantity.data[1, 1, :] == 21.0).all() + + +@pytest.mark.parametrize( + "iterations", + [2, 1], +) +def test_validation_call_count(iterations: tuple[int]): + domain = (2, 2, 5) + quantity = Quantity( + np.zeros(domain), ["x", "y", "z"], "n/a", extent=domain, backend="debug" + ) + stencil_config = StencilConfig( + compilation_config=CompilationConfig(backend="numpy", rebuild=True) + ) + stencil = FrozenStencil( + copy_stencil, + origin=(0, 0, 0), + domain=domain, + stencil_config=stencil_config, + ) + # with expectation: + counting_mock = MagicMock() + with patch.object(FrozenStencil, "_validate_quantity_sizes", counting_mock): + for _i in range(iterations): + stencil(quantity, quantity) + + assert counting_mock.call_count == 1 diff --git a/tests/dsl/test_stencil_config.py b/tests/dsl/test_stencil_config.py index 89498695..5cdf79dc 100644 --- a/tests/dsl/test_stencil_config.py +++ b/tests/dsl/test_stencil_config.py @@ -7,7 +7,7 @@ @pytest.mark.parametrize("rebuild", [True, False]) @pytest.mark.parametrize("format_source", [True, False]) @pytest.mark.parametrize("compare_to_numpy", [True, False]) -@pytest.mark.parametrize("backend", ["numpy", "gt_gpu"]) +@pytest.mark.parametrize("backend", ["numpy", "gt:gpu"]) def test_same_config_equal( backend: str, rebuild: bool, @@ -71,7 +71,7 @@ def test_different_backend_not_equal( different_config = StencilConfig( compilation_config=CompilationConfig( - backend="fake_backend", + backend="debug", rebuild=rebuild, validate_args=validate_args, format_source=format_source, diff --git a/tests/dsl/test_stencil_wrapper.py b/tests/dsl/test_stencil_wrapper.py index 0458389e..49b7b2a9 100644 --- a/tests/dsl/test_stencil_wrapper.py +++ b/tests/dsl/test_stencil_wrapper.py @@ -313,24 +313,38 @@ def test_frozen_field_after_parameter() -> None: ) +@pytest.mark.parametrize("backend", ("numpy", "gt:gpu")) def test_backend_options( + backend: str, rebuild: bool = True, validate_args: bool = True, ) -> None: - backend = "numpy" expected_options = { - "backend": "numpy", - "rebuild": True, - "format_source": False, - "name": "tests.dsl.test_stencil_wrapper.copy_stencil", + "numpy": { + "backend": "numpy", + "rebuild": True, + "format_source": False, + "name": "tests.dsl.test_stencil_wrapper.copy_stencil", + }, + "gt:gpu": { + "backend": "gt:gpu", + "rebuild": True, + "device_sync": False, + "format_source": False, + "name": "tests.dsl.test_stencil_wrapper.copy_stencil", + }, } actual = get_stencil_config( - backend=backend, - rebuild=rebuild, - validate_args=validate_args, + backend=backend, rebuild=rebuild, validate_args=validate_args ).stencil_kwargs(func=copy_stencil) - assert actual == expected_options + expected = expected_options[backend] + assert actual == expected + + +def test_illegal_backend_options(): + with pytest.raises(ValueError): + get_stencil_config(backend="illegal") def get_mock_quantity(): diff --git a/tests/grid/test_eta.py b/tests/grid/test_eta.py index 4090b3b5..c4fab0eb 100755 --- a/tests/grid/test_eta.py +++ b/tests/grid/test_eta.py @@ -1,13 +1,11 @@ from pathlib import Path -import numpy as np import pytest -import xarray as xr from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - NullComm, + LocalComm, QuantityFactory, SubtileGridSizer, TilePartitioner, @@ -23,58 +21,6 @@ """ -@pytest.mark.parametrize("levels", [79, 91]) -def test_set_hybrid_pressure_coefficients_correct(levels): - """ - This test checks to see that the ak and bk arrays are read-in correctly and are - stored as expected. Both values of km=79 and km=91 are tested and both tests are - expected to pass with the stored ak and bk values agreeing with the values read-in - directly from the NetCDF file. - """ - - eta_file = Path.cwd() / "tests" / "data" / "eta" / f"eta{levels}.nc" - eta_data = xr.open_dataset(eta_file) - - backend = "numpy" - - layout = (1, 1) - - nz = levels - ny = 48 - nx = 48 - nhalo = 3 - - partitioner = CubedSpherePartitioner(TilePartitioner(layout)) - - communicator = CubedSphereCommunicator(NullComm(rank=0, total_ranks=6), partitioner) - - sizer = SubtileGridSizer.from_tile_params( - nx_tile=nx, - ny_tile=ny, - nz=nz, - n_halo=nhalo, - layout=layout, - tile_partitioner=partitioner.tile, - tile_rank=communicator.tile.rank, - ) - - quantity_factory = QuantityFactory.from_backend(sizer=sizer, backend=backend) - - metric_terms = MetricTerms( - quantity_factory=quantity_factory, communicator=communicator, eta_file=eta_file - ) - - ak_results = metric_terms.ak.data - bk_results = metric_terms.bk.data - ak_answers, bk_answers = eta_data["ak"].values, eta_data["bk"].values - - assert ak_answers.size == ak_results.size, "Unexpected size of bk" - assert bk_answers.size == bk_results.size, "Unexpected size of ak" - - assert np.array_equal(ak_answers, ak_results), "Unexpected value of ak" - assert np.array_equal(bk_answers, bk_results), "Unexpected value of bk" - - def test_set_hybrid_pressure_coefficients_nofile(): """ This test checks to see that the program fails when the eta_file is not specified @@ -94,7 +40,9 @@ def test_set_hybrid_pressure_coefficients_nofile(): partitioner = CubedSpherePartitioner(TilePartitioner(layout)) - communicator = CubedSphereCommunicator(NullComm(rank=0, total_ranks=6), partitioner) + communicator = CubedSphereCommunicator( + LocalComm(rank=0, total_ranks=6, buffer_dict={}), partitioner + ) sizer = SubtileGridSizer.from_tile_params( nx_tile=nx, @@ -106,7 +54,7 @@ def test_set_hybrid_pressure_coefficients_nofile(): tile_rank=communicator.tile.rank, ) - quantity_factory = QuantityFactory.from_backend(sizer=sizer, backend=backend) + quantity_factory = QuantityFactory(sizer, backend=backend) with pytest.raises(ValueError, match=f"eta file {eta_file} does not exist"): MetricTerms( @@ -137,7 +85,9 @@ def test_set_hybrid_pressure_coefficients_not_mono(): partitioner = CubedSpherePartitioner(TilePartitioner(layout)) - communicator = CubedSphereCommunicator(NullComm(rank=0, total_ranks=6), partitioner) + communicator = CubedSphereCommunicator( + LocalComm(rank=0, total_ranks=6, buffer_dict={}), partitioner + ) sizer = SubtileGridSizer.from_tile_params( nx_tile=nx, @@ -149,7 +99,7 @@ def test_set_hybrid_pressure_coefficients_not_mono(): tile_rank=communicator.tile.rank, ) - quantity_factory = QuantityFactory.from_backend(sizer=sizer, backend=backend) + quantity_factory = QuantityFactory(sizer, backend=backend) with pytest.raises(ValueError, match="ETA values are not monotonically increasing"): MetricTerms( diff --git a/tests/initialization/test_allocator.py b/tests/initialization/test_allocator.py index 3ee01e43..dad8d407 100644 --- a/tests/initialization/test_allocator.py +++ b/tests/initialization/test_allocator.py @@ -1,19 +1,8 @@ -import warnings - -import numpy as np import pytest from ndsl import QuantityFactory -def test_QuantityFactory_constructor_warns() -> None: - with pytest.warns( - DeprecationWarning, - match="Usage of QuantityFactory.* is discouraged and will change", - ): - QuantityFactory(None, np) - - # Make sure no warnings are emitted if users use `QuantityFactory.from_backend()` - with warnings.catch_warnings(): - warnings.simplefilter("error") - QuantityFactory.from_backend(None, "numpy") +def test_QuantityFactory_from_backend_warns() -> None: + with pytest.deprecated_call(): + QuantityFactory.from_backend(None, backend="numpy") diff --git a/tests/mpi/__init__.py b/tests/mpi/__init__.py index e69de29b..ad92926d 100644 --- a/tests/mpi/__init__.py +++ b/tests/mpi/__init__.py @@ -0,0 +1,6 @@ +from ndsl.comm.mpi import MPI + + +if MPI.COMM_WORLD.Get_size() == 1: + # not run as a parallel test, disable MPI tests + MPI = None diff --git a/tests/mpi/mpi_comm.py b/tests/mpi/mpi_comm.py deleted file mode 100644 index ad92926d..00000000 --- a/tests/mpi/mpi_comm.py +++ /dev/null @@ -1,6 +0,0 @@ -from ndsl.comm.mpi import MPI - - -if MPI.COMM_WORLD.Get_size() == 1: - # not run as a parallel test, disable MPI tests - MPI = None diff --git a/tests/mpi/test_decomposition.py b/tests/mpi/test_decomposition.py new file mode 100644 index 00000000..94fee856 --- /dev/null +++ b/tests/mpi/test_decomposition.py @@ -0,0 +1,18 @@ +from unittest.mock import MagicMock + +import pytest + +from ndsl import MPIComm +from ndsl.comm.decomposition import block_waiting_for_compilation, unblock_waiting_tiles +from tests.mpi import MPI + + +@pytest.mark.skipif(MPI is None, reason="pytest is not run in parallel") +def test_unblock_waiting_tiles(): + comm = MPIComm() + compilation_config = MagicMock(compiling_equivalent=0) + + if comm.Get_rank() == 0: + unblock_waiting_tiles(comm._comm) + else: + block_waiting_for_compilation(comm._comm, compilation_config) diff --git a/tests/mpi/test_eta.py b/tests/mpi/test_eta.py new file mode 100644 index 00000000..5c09cbf1 --- /dev/null +++ b/tests/mpi/test_eta.py @@ -0,0 +1,68 @@ +from pathlib import Path + +import numpy as np +import pytest +import xarray as xr + +from ndsl import ( + CubedSphereCommunicator, + CubedSpherePartitioner, + MPIComm, + QuantityFactory, + SubtileGridSizer, + TilePartitioner, +) +from ndsl.grid import MetricTerms +from tests.mpi import MPI + + +@pytest.mark.skipif(MPI is None, reason="pytest is not run in parallel") +@pytest.mark.parametrize("levels", [79, 91]) +def test_set_hybrid_pressure_coefficients_correct(levels): + """ + This test checks to see that the ak and bk arrays are read-in correctly and are + stored as expected. Both values of km=79 and km=91 are tested and both tests are + expected to pass with the stored ak and bk values agreeing with the values read-in + directly from the NetCDF file. + """ + + eta_file = Path.cwd() / "tests" / "data" / "eta" / f"eta{levels}.nc" + eta_data = xr.open_dataset(eta_file) + + backend = "numpy" + + layout = (1, 1) + + nz = levels + ny = 48 + nx = 48 + nhalo = 3 + + partitioner = CubedSpherePartitioner(TilePartitioner(layout)) + communicator = CubedSphereCommunicator(MPIComm(), partitioner) + + sizer = SubtileGridSizer.from_tile_params( + nx_tile=nx, + ny_tile=ny, + nz=nz, + n_halo=nhalo, + layout=layout, + tile_partitioner=partitioner.tile, + tile_rank=communicator.tile.rank, + ) + + quantity_factory = QuantityFactory(sizer, backend=backend) + + metric_terms = MetricTerms( + quantity_factory=quantity_factory, communicator=communicator, eta_file=eta_file + ) + + ak_results = metric_terms.ak.data + bk_results = metric_terms.bk.data + ak_answers, bk_answers = eta_data["ak"].values, eta_data["bk"].values + + assert ak_answers.size == ak_results.size, "Unexpected size of bk" + assert bk_answers.size == bk_results.size, "Unexpected size of ak" + + assert np.array_equal(ak_answers, ak_results), "Unexpected value of ak" + assert np.array_equal(bk_answers, bk_results), "Unexpected value of bk" diff --git a/tests/mpi/test_mpi_all_reduce_sum.py b/tests/mpi/test_mpi_all_reduce_sum.py index 6cab1023..34a3b0dd 100644 --- a/tests/mpi/test_mpi_all_reduce_sum.py +++ b/tests/mpi/test_mpi_all_reduce_sum.py @@ -10,7 +10,7 @@ from ndsl.comm.comm_abc import ReductionOperator from ndsl.comm.mpi import MPIComm from ndsl.dsl.typing import Float -from tests.mpi.mpi_comm import MPI +from tests.mpi import MPI @pytest.fixture @@ -58,7 +58,7 @@ def test_all_reduce(communicator): data=base_array, dims=["K"], units="Some 1D unit", - gt4py_backend=backend, + backend=backend, ) base_array = np.array([i for i in range(5 * 5)], dtype=Float) @@ -68,7 +68,7 @@ def test_all_reduce(communicator): data=base_array, dims=["I", "J"], units="Some 2D unit", - gt4py_backend=backend, + backend=backend, ) base_array = np.array([i for i in range(5 * 5 * 5)], dtype=Float) @@ -78,7 +78,7 @@ def test_all_reduce(communicator): data=base_array, dims=["I", "J", "K"], units="Some 3D unit", - gt4py_backend=backend, + backend=backend, ) global_sum_q = communicator.all_reduce(testQuantity_1D, ReductionOperator.SUM) @@ -98,7 +98,7 @@ def test_all_reduce(communicator): data=base_array, dims=["K"], units="New 1D unit", - gt4py_backend=backend, + backend=backend, origin=(8,), extent=(7,), ) @@ -110,7 +110,7 @@ def test_all_reduce(communicator): data=base_array, dims=["I", "J"], units="Some 2D unit", - gt4py_backend=backend, + backend=backend, ) base_array = np.array([i for i in range(5 * 5 * 5)], dtype=Float) @@ -120,7 +120,7 @@ def test_all_reduce(communicator): data=base_array, dims=["I", "J", "K"], units="Some 3D unit", - gt4py_backend=backend, + backend=backend, ) communicator.all_reduce( testQuantity_1D, ReductionOperator.SUM, testQuantity_1D_out diff --git a/tests/mpi/test_mpi_halo_update.py b/tests/mpi/test_mpi_halo_update.py index 76aca71e..45278cc5 100644 --- a/tests/mpi/test_mpi_halo_update.py +++ b/tests/mpi/test_mpi_halo_update.py @@ -27,7 +27,7 @@ Z_DIM, Z_INTERFACE_DIM, ) -from tests.mpi.mpi_comm import MPI +from tests.mpi import MPI @pytest.fixture @@ -271,14 +271,9 @@ def depth_quantity( data[tuple(pos)] = numpy.nan pos[i] = origin[i] + extent[i] + n_outside - 1 data[tuple(pos)] = numpy.nan - quantity = Quantity( - data, - dims=dims, - units=units, - origin=origin, - extent=extent, + return Quantity( + data, dims=dims, units=units, origin=origin, extent=extent, backend="debug" ) - return quantity @pytest.mark.skipif(MPI is None, reason="pytest is not run in parallel") @@ -320,11 +315,7 @@ def zeros_quantity(dims, units, origin, extent, shape, numpy, dtype): outside of it.""" data = numpy.ones(shape, dtype=dtype) quantity = Quantity( - data, - dims=dims, - units=units, - origin=origin, - extent=extent, + data, dims=dims, units=units, origin=origin, extent=extent, backend="debug" ) quantity.view[:] = 0.0 return quantity diff --git a/tests/mpi/test_mpi_mock.py b/tests/mpi/test_mpi_mock.py index 0da2f21b..7007d5d5 100644 --- a/tests/mpi/test_mpi_mock.py +++ b/tests/mpi/test_mpi_mock.py @@ -1,10 +1,10 @@ import numpy as np import pytest -from ndsl import DummyComm +from ndsl import LocalComm from ndsl.buffer import recv_buffer -from ndsl.exceptions import ConcurrencyError -from tests.mpi.mpi_comm import MPI +from ndsl.comm.local_comm import ConcurrencyError +from tests.mpi import MPI worker_function_list = [] @@ -33,11 +33,11 @@ def send_recv(comm, numpy): data = numpy.asarray([rank], dtype=numpy.int32) if rank < size - 1: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"sending data from {rank} to {rank + 1}") comm.Send(data, dest=rank + 1) if rank > 0: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"receiving data from {rank - 1} to {rank}") comm.Recv(data, source=rank - 1) return data @@ -50,11 +50,11 @@ def send_recv_big_data(comm, numpy): data = numpy.ones([5, 3, 96], dtype=numpy.float64) * rank if rank < size - 1: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"sending data from {rank} to {rank + 1}") comm.Send(data, dest=rank + 1) if rank > 0: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"receiving data from {rank - 1} to {rank}") comm.Recv(data, source=rank - 1) return data @@ -96,11 +96,11 @@ def send_f_contiguous_buffer(comm, numpy): data = numpy.random.uniform(size=[2, 3]).T if rank < size - 1: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"sending data from {rank} to {rank + 1}") comm.Send(data, dest=rank + 1) if rank > 0: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"receiving data from {rank - 1} to {rank}") comm.Recv(data, source=rank - 1) return data @@ -115,7 +115,7 @@ def send_non_contiguous_buffer(comm, numpy): recv_buffer = numpy.zeros([4, 2, 3]) if rank < size - 1: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"sending data from {rank} to {rank + 1}") comm.Send(data, dest=rank + 1) if rank > 0: @@ -132,7 +132,7 @@ def send_subarray(comm, numpy): recv_buffer = numpy.zeros([2, 2, 2]) if rank < size - 1: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"sending data from {rank} to {rank + 1}") comm.Send(data[1:-1, 1:-1, 1:-1], dest=rank + 1) if rank > 0: @@ -151,11 +151,11 @@ def recv_to_subarray(comm, numpy): return_value = recv_buffer if rank < size - 1: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"sending data from {rank} to {rank + 1}") comm.Send(data, dest=rank + 1) if rank > 0: - if isinstance(comm, DummyComm): + if isinstance(comm, LocalComm): print(f"receiving data from {rank - 1} to {rank}") try: comm.Recv(recv_buffer[1:-1, 1:-1, 1:-1], source=rank - 1) @@ -255,7 +255,7 @@ def dummy_list(total_ranks): return_list = [] for rank in range(total_ranks): return_list.append( - DummyComm(rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer) + LocalComm(rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer) ) return return_list diff --git a/tests/quantity/test_boundary.py b/tests/quantity/test_boundary.py index a4f8e812..7ba2eddb 100644 --- a/tests/quantity/test_boundary.py +++ b/tests/quantity/test_boundary.py @@ -36,6 +36,7 @@ def test_boundary_data_1_by_1_array_1_halo(): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ) for side in ( WEST, @@ -71,6 +72,7 @@ def test_boundary_data_3d_array_1_halo_z_offset_origin(numpy): units="m", origin=(1, 1, 1), extent=(1, 1, 1), + backend="debug", ) for side in ( WEST, @@ -109,6 +111,7 @@ def test_boundary_data_2_by_2_array_2_halo(): units="m", origin=(2, 2), extent=(2, 2), + backend="debug", ) for side in ( WEST, diff --git a/tests/quantity/test_deepcopy.py b/tests/quantity/test_deepcopy.py index d6b5c7cb..f0c7bb13 100644 --- a/tests/quantity/test_deepcopy.py +++ b/tests/quantity/test_deepcopy.py @@ -14,6 +14,7 @@ def test_deepcopy_copy_is_editable_by_view(): extent=(nx, ny, nz), dims=["x", "y", "z"], units="", + backend="debug", ) quantity_copy = copy.deepcopy(quantity) # assertion below is only valid if we're overwriting the entire data through view @@ -31,6 +32,7 @@ def test_deepcopy_copy_is_editable_by_data(): extent=(nx, ny, nz), dims=["x", "y", "z"], units="", + backend="debug", ) quantity_copy = copy.deepcopy(quantity) quantity_copy.data[:] = 1.0 @@ -46,6 +48,7 @@ def test_deepcopy_of_dataclass_is_editable_by_data(): extent=(nx, ny, nz), dims=["x", "y", "z"], units="", + backend="debug", ) quantity_copy = copy.deepcopy(quantity) quantity_copy.data[:] = 1.0 diff --git a/tests/quantity/test_local.py b/tests/quantity/test_local.py new file mode 100644 index 00000000..bb6027f5 --- /dev/null +++ b/tests/quantity/test_local.py @@ -0,0 +1,54 @@ +import numpy as np +import pytest + +from ndsl import Local + + +def test_dace_data_descriptor_is_transient() -> None: + nx = 5 + shape = (nx,) + local = Local( + data=np.empty(shape), + origin=(0,), + extent=(nx,), + dims=("dim_X",), + units="n/a", + backend="debug", + ) + array = local.__descriptor__() + assert array.transient + + +def test_gt4py_backend_is_deprecated() -> None: + nx = 5 + shape = (nx,) + backend = "debug" + with pytest.deprecated_call(match="gt4py_backend is deprecated"): + local = Local( + data=np.empty(shape), + origin=(0,), + extent=(nx,), + dims=("dim_X",), + units="n/a", + gt4py_backend=backend, + ) + + # make sure we assign backend + assert local.backend == backend + + # make sure we are backwards compatible (for now) + with pytest.deprecated_call(match="gt4py_backend is deprecated"): + assert local.gt4py_backend == backend + + +def test_backend_will_be_required() -> None: + nx = 5 + shape = (nx,) + with pytest.deprecated_call(match="`backend` will be a required argument"): + local = Local( + data=np.empty(shape), + origin=(0,), + extent=(nx,), + dims=("dim_X",), + units="n/a", + ) diff --git a/tests/quantity/test_quantity.py b/tests/quantity/test_quantity.py index dccfa94f..ef94b45e 100644 --- a/tests/quantity/test_quantity.py +++ b/tests/quantity/test_quantity.py @@ -1,5 +1,6 @@ import numpy as np import pytest +import xarray as xr from ndsl import Quantity from ndsl.quantity.bounds import _shift_slice @@ -61,7 +62,9 @@ def data(n_halo, extent_1d, n_dims, numpy, dtype): @pytest.fixture def quantity(data, origin, extent, dims, units): - return Quantity(data, origin=origin, extent=extent, dims=dims, units=units) + return Quantity( + data, origin=origin, extent=extent, dims=dims, units=units, backend="debug" + ) def test_smaller_data_raises(data, origin, extent, dims, units): @@ -71,25 +74,55 @@ def test_smaller_data_raises(data, origin, extent, dims, units): except IndexError: pass else: - with pytest.raises(ValueError): + with pytest.raises( + ValueError, match="received .* dimension names for .* dimensions: .*" + ): Quantity( - small_data, origin=origin, extent=extent, dims=dims, units=units + small_data, + origin=origin, + extent=extent, + dims=dims, + units=units, + backend="debug", ) def test_smaller_dims_raises(data, origin, extent, dims, units): - with pytest.raises(ValueError): - Quantity(data, origin=origin, extent=extent, dims=dims[:-1], units=units) + with pytest.raises( + ValueError, match="received .* dimension names for .* dimensions: .*" + ): + Quantity( + data, + origin=origin, + extent=extent, + dims=dims[:-1], + units=units, + backend="debug", + ) def test_smaller_origin_raises(data, origin, extent, dims, units): - with pytest.raises(ValueError): - Quantity(data, origin=origin[:-1], extent=extent, dims=dims, units=units) + with pytest.raises(ValueError, match="received .* origins for .* dimensions: .*"): + Quantity( + data, + origin=origin[:-1], + extent=extent, + dims=dims, + units=units, + backend="debug", + ) def test_smaller_extent_raises(data, origin, extent, dims, units): - with pytest.raises(ValueError): - Quantity(data, origin=origin, extent=extent[:-1], dims=dims, units=units) + with pytest.raises(ValueError, match="received .* extents for .* dimensions: .*"): + Quantity( + data, + origin=origin, + extent=extent[:-1], + dims=dims, + units=units, + backend="debug", + ) def test_data_change_affects_quantity(data, quantity, numpy): @@ -228,20 +261,15 @@ def test_shift_slice(slice_in, shift, extent, slice_out): @pytest.mark.parametrize( "quantity", [ + Quantity(np.array(5), dims=[], units="", backend="debug"), Quantity( - np.array(5), - dims=[], - units="", - ), - Quantity( - np.array([1, 2, 3]), - dims=["dimension"], - units="degK", + np.array([1, 2, 3]), dims=["dimension"], units="degK", backend="debug" ), Quantity( np.random.randn(3, 2, 4), dims=["dim1", "dim_2", "dimension_3"], units="m", + backend="debug", ), Quantity( np.random.randn(8, 6, 6), @@ -249,6 +277,7 @@ def test_shift_slice(slice_in, shift, extent, slice_out): units="km", origin=(2, 2, 2), extent=(4, 2, 2), + backend="debug", ), ], ) @@ -264,7 +293,7 @@ def test_to_data_array(quantity): def test_data_setter(): - quantity = Quantity(np.ones((5,)), dims=["dim1"], units="") + quantity = Quantity(np.ones((5,)), dims=["dim1"], units="", backend="debug") # After allocation - field and data are the same (origin is 0) assert quantity.data.shape == quantity.field.shape @@ -289,3 +318,82 @@ def test_data_setter(): # Expected fail: new array is not even an array with pytest.raises(TypeError, match="Quantity.data buffer swap failed.*"): quantity.data = "meh" + + +def test_constructor_with_gt4py_backend_is_deprecated() -> None: + nx = 5 + shape = (nx,) + backend = "debug" + with pytest.deprecated_call(match="gt4py_backend is deprecated"): + quantity = Quantity( + data=np.empty(shape), + origin=(0,), + extent=(nx,), + dims=("dim_X",), + units="n/a", + gt4py_backend=backend, + ) + + # make sure we assign backend + assert quantity.backend == backend + + # make sure we are backwards compatible (on the QuantityMetadata) + with pytest.deprecated_call(match="gt4py_backend is deprecated"): + assert quantity.gt4py_backend == backend + + +def test_from_data_array_with_gt4py_backend_is_deprecated() -> None: + nx = 5 + shape = (nx,) + backend = "debug" + with pytest.deprecated_call(match="gt4py_backend is deprecated"): + np_data = np.empty(shape) + data_array = xr.DataArray(data=np_data, attrs={"units": "n/a"}) + quantity = Quantity.from_data_array( + data_array, + origin=(0,), + extent=(nx,), + number_of_halo_points=0, + gt4py_backend=backend, + ) + + # make sure we assign backend + assert quantity.backend == backend + + # make sure we don't assign gt4py_backend anymore (on the QuantityMetadata) + with pytest.deprecated_call(match="gt4py_backend is deprecated"): + assert quantity.gt4py_backend == backend + + +def test_assign_basic_data_is_deprecated() -> None: + nx = 5 + backend = "debug" + with pytest.deprecated_call( + match="Usage of basic data in Quantities is deprecated" + ): + quantity = Quantity( + data=[0, 1, 2, 3, 4], + origin=(0,), + extent=(nx,), + dims=("dim_X",), + units="n/a", + backend=backend, + allow_mismatch_float_precision=True, + ) + + # make sure we can still use it (for now) + for i in range(5): + assert quantity.data[i] == i + + +def test_constructor_backend_will_be_required() -> None: + nx = 5 + shape = (nx,) + with pytest.deprecated_call(match="`backend` will be a required argument"): + local = Quantity( + data=np.empty(shape), + origin=(0,), + extent=(nx,), + dims=("dim_X",), + units="n/a", + ) diff --git a/tests/quantity/test_storage.py b/tests/quantity/test_storage.py index bc39f61f..6d8dc4a4 100644 --- a/tests/quantity/test_storage.py +++ b/tests/quantity/test_storage.py @@ -53,7 +53,9 @@ def data(n_halo, extent_1d, n_dims, numpy, dtype): @pytest.fixture def quantity(data, origin, extent, dims, units): - return Quantity(data, origin=origin, extent=extent, dims=dims, units=units) + return Quantity( + data, origin=origin, extent=extent, dims=dims, units=units, backend="debug" + ) def test_numpy(quantity, backend): @@ -72,7 +74,7 @@ def test_modifying_numpy_data_modifies_view_and_field(): extent=shape, dims=["dim1", "dim2"], units="units", - gt4py_backend="numpy", + backend="numpy", ) assert np.all(quantity.data == 0) quantity.data[0, 0] = 1 @@ -99,7 +101,7 @@ def test_data_and_field_access_right_full_array_and_compute_domain(): extent=(5, 5), dims=["dim1", "dim2"], units="units", - gt4py_backend="numpy", + backend="numpy", ) assert np.all(quantity.data == 0) # Write compute domain - test data is written with the offset @@ -139,7 +141,7 @@ def test_accessing_data_does_not_break_view( extent=extent, dims=dims, units=units, - gt4py_backend=gt4py_backend, + backend=gt4py_backend, ) quantity.data[origin] = -1.0 assert quantity.data[origin] == quantity.view[tuple(0 for _ in origin)] @@ -158,6 +160,6 @@ def test_numpy_data_becomes_cupy_with_gpu_backend( extent=extent, dims=dims, units=units, - gt4py_backend=gt4py_backend, + backend=gt4py_backend, ) assert isinstance(quantity.data, cp.ndarray) diff --git a/tests/quantity/test_transpose.py b/tests/quantity/test_transpose.py index 5e527279..b7ceb0f8 100644 --- a/tests/quantity/test_transpose.py +++ b/tests/quantity/test_transpose.py @@ -35,7 +35,6 @@ def quantity_data_input(initial_data, numpy, backend): array[:] = initial_data else: array = initial_data - print(type(array)) return array @@ -87,6 +86,7 @@ def quantity(quantity_data_input, initial_dims, initial_origin, initial_extent): units="unit_string", origin=initial_origin, extent=initial_extent, + backend="debug", ) @@ -166,7 +166,13 @@ def param_product(*param_lists): ) @pytest.mark.parametrize("backend", ["numpy", "cupy"], indirect=True) def test_transpose( - quantity, target_dims, final_data, final_dims, final_origin, final_extent, numpy + quantity: Quantity, + target_dims, + final_data, + final_dims, + final_origin, + final_extent, + numpy, ): result = quantity.transpose(target_dims) numpy.testing.assert_array_equal(result.data, final_data) @@ -174,7 +180,7 @@ def test_transpose( assert result.origin == final_origin assert result.extent == final_extent assert result.units == quantity.units - assert result.gt4py_backend == quantity.gt4py_backend + assert result.backend == quantity.backend @pytest.mark.parametrize( @@ -213,7 +219,9 @@ def test_transpose_invalid_cases( def test_transpose_retains_attrs(numpy): - quantity = Quantity(numpy.random.randn(3, 4), dims=["x", "y"], units="unit_string") + quantity = Quantity( + numpy.random.randn(3, 4), dims=["x", "y"], units="unit_string", backend="debug" + ) quantity._attrs = {"long_name": "500 mb height"} transposed = quantity.transpose(["y", "x"]) assert transposed.attrs == quantity.attrs diff --git a/tests/quantity/test_view.py b/tests/quantity/test_view.py index 73245093..0ce44cfe 100644 --- a/tests/quantity/test_view.py +++ b/tests/quantity/test_view.py @@ -183,6 +183,7 @@ def quantity(request): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ) ], ) @@ -216,6 +217,7 @@ def test_many_indices_raises(quantity, view_name): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ) ], ) @@ -742,6 +744,7 @@ def test_many_slices_raises(quantity, view_name): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (0, 0), 4, @@ -754,6 +757,7 @@ def test_many_slices_raises(quantity, view_name): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, -1), 0, @@ -766,6 +770,7 @@ def test_many_slices_raises(quantity, view_name): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (slice(-1, 0), slice(-1, 0)), np.array([[0]]), @@ -778,6 +783,7 @@ def test_many_slices_raises(quantity, view_name): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, 0), 1, @@ -798,6 +804,7 @@ def test_many_slices_raises(quantity, view_name): units="m", origin=(2, 2), extent=(1, 1), + backend="debug", ), (slice(-2, 0), slice(-1, 2)), np.array([[1, 2, 3], [6, 7, 8]]), @@ -816,6 +823,7 @@ def test_southwest(quantity, view_slice, reference): units=quantity.units, origin=quantity.origin[::-1], extent=quantity.extent[::-1], + backend=quantity.backend, ) transposed_result = transposed_quantity.view.southwest[view_slice[::-1]] if isinstance(reference, quantity.np.ndarray): @@ -834,6 +842,7 @@ def test_southwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, 0), 4, @@ -846,6 +855,7 @@ def test_southwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (0, -1), 6, @@ -858,6 +868,7 @@ def test_southwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (slice(0, 1), slice(-1, 0)), np.array([[6]]), @@ -870,6 +881,7 @@ def test_southwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, -1), 3, @@ -890,6 +902,7 @@ def test_southwest(quantity, view_slice, reference): units="m", origin=(2, 2), extent=(1, 1), + backend="debug", ), (slice(-2, 0), slice(-1, 2)), np.array([[6, 7, 8], [11, 12, 13]]), @@ -908,6 +921,7 @@ def test_southeast(quantity, view_slice, reference): units=quantity.units, origin=quantity.origin[::-1], extent=quantity.extent[::-1], + backend=quantity.backend, ) transposed_result = transposed_quantity.view.southeast[view_slice[::-1]] if isinstance(reference, quantity.np.ndarray): @@ -926,6 +940,7 @@ def test_southeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, 0), 4, @@ -938,6 +953,7 @@ def test_southeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (0, -1), 6, @@ -950,6 +966,7 @@ def test_southeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (slice(0, 1), slice(-1, 0)), np.array([[6]]), @@ -962,6 +979,7 @@ def test_southeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, 0), 4, @@ -974,6 +992,7 @@ def test_southeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, -1), 3, @@ -994,6 +1013,7 @@ def test_southeast(quantity, view_slice, reference): units="m", origin=(2, 2), extent=(1, 1), + backend="debug", ), (slice(-2, 0), slice(-1, 2)), np.array([[6, 7, 8], [11, 12, 13]]), @@ -1012,6 +1032,7 @@ def test_northwest(quantity, view_slice, reference): units=quantity.units, origin=quantity.origin[::-1], extent=quantity.extent[::-1], + backend=quantity.backend, ) transposed_result = transposed_quantity.view.northwest[view_slice[::-1]] if isinstance(reference, quantity.np.ndarray): @@ -1030,6 +1051,7 @@ def test_northwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, -1), 4, @@ -1042,6 +1064,7 @@ def test_northwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (0, 0), 8, @@ -1054,6 +1077,7 @@ def test_northwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (slice(0, 1), slice(0, 1)), np.array([[8]]), @@ -1066,6 +1090,7 @@ def test_northwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, -1), 4, @@ -1078,6 +1103,7 @@ def test_northwest(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (-1, 0), 5, @@ -1098,6 +1124,7 @@ def test_northwest(quantity, view_slice, reference): units="m", origin=(2, 2), extent=(1, 1), + backend="debug", ), (slice(-2, 0), slice(-1, 2)), np.array([[7, 8, 9], [12, 13, 14]]), @@ -1116,6 +1143,7 @@ def test_northeast(quantity, view_slice, reference): units=quantity.units, origin=quantity.origin[::-1], extent=quantity.extent[::-1], + backend=quantity.backend, ) transposed_result = transposed_quantity.view.northeast[view_slice[::-1]] if isinstance(reference, quantity.np.ndarray): @@ -1134,6 +1162,7 @@ def test_northeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (0, 0), 4, @@ -1146,6 +1175,7 @@ def test_northeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (slice(0, 0), slice(0, 0)), 4, @@ -1158,6 +1188,7 @@ def test_northeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ), (slice(-1, 1), slice(-1, 1)), np.array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]), @@ -1178,6 +1209,7 @@ def test_northeast(quantity, view_slice, reference): units="m", origin=(2, 2), extent=(1, 1), + backend="debug", ), (slice(-2, 0), slice(0, 1)), np.array([[2, 3], [7, 8], [12, 13]]), @@ -1198,6 +1230,7 @@ def test_northeast(quantity, view_slice, reference): units="m", origin=(1, 1), extent=(3, 3), + backend="debug", ), (0,), np.array([6, 7, 8]), @@ -1216,6 +1249,7 @@ def test_interior(quantity, view_slice, reference): units=quantity.units, origin=quantity.origin[::-1], extent=quantity.extent[::-1], + backend=quantity.backend, ) if len(view_slice) == len(quantity.dims): # skip if not transposed_result = transposed_quantity.view.interior[view_slice[::-1]] diff --git a/tests/stencils/test_stencils.py b/tests/stencils/test_stencils.py new file mode 100644 index 00000000..48d2232a --- /dev/null +++ b/tests/stencils/test_stencils.py @@ -0,0 +1,174 @@ +import numpy as np +import pytest + +from ndsl import QuantityFactory, StencilFactory +from ndsl.boilerplate import get_factories_single_tile +from ndsl.constants import X_DIM, Y_DIM, Z_DIM +from ndsl.dsl.gt4py import FORWARD, computation, interval +from ndsl.dsl.typing import Float, FloatField, FloatFieldIJ, set_4d_field_size +from ndsl.stencils import CopyCornersXY +from ndsl.stencils.column_operations import ( + column_max, + column_max_ddim, + column_min, + column_min_ddim, +) + + +FloatField_ddim = set_4d_field_size(2, Float) + + +@pytest.fixture +def boilerplate() -> tuple[StencilFactory, QuantityFactory]: + return get_factories_single_tile(nx=1, ny=1, nz=10, nhalo=0, backend="dace:cpu") + + +class ColumnOperations: + def __init__(self, stencil_factory: StencilFactory): + + def column_max_stencil( + data: FloatField, max_value: FloatFieldIJ, max_index: FloatFieldIJ + ): + from __externals__ import k_end + + with computation(FORWARD), interval(0, 1): + max_value, max_index = column_max(data, 0, k_end) + + def column_max_ddim_stencil( + data: FloatField_ddim, max_value: FloatFieldIJ, max_index: FloatFieldIJ + ): + from __externals__ import k_end + + with computation(FORWARD), interval(0, 1): + max_value, max_index = column_max_ddim(data, 1, 0, k_end) + + def column_min_stencil( + data: FloatField, min_value: FloatFieldIJ, min_index: FloatFieldIJ + ): + from __externals__ import k_end + + with computation(FORWARD), interval(0, 1): + min_value, min_index = column_min(data, 5, k_end) + + def column_min_ddim_stencil( + data: FloatField_ddim, min_value: FloatFieldIJ, min_index: FloatFieldIJ + ): + from __externals__ import k_end + + with computation(FORWARD), interval(0, 1): + min_value, min_index = column_min_ddim(data, 1, 5, k_end) + + self._column_max_stencil = stencil_factory.from_dims_halo( + func=column_max_stencil, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self._column_max_ddim_stencil = stencil_factory.from_dims_halo( + func=column_max_ddim_stencil, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self._column_min_stencil = stencil_factory.from_dims_halo( + func=column_min_stencil, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self._column_min_ddim_stencil = stencil_factory.from_dims_halo( + func=column_min_ddim_stencil, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + + def __call__( + self, + data: FloatField, + max_value: FloatFieldIJ, + max_index: FloatFieldIJ, + min_value: FloatFieldIJ, + min_index: FloatFieldIJ, + data_ddim: FloatField_ddim, + max_value_ddim: FloatFieldIJ, + max_index_ddim: FloatFieldIJ, + min_value_ddim: FloatFieldIJ, + min_index_ddim: FloatFieldIJ, + ): + self._column_max_stencil(data, max_value, max_index) + self._column_max_ddim_stencil(data_ddim, max_value_ddim, max_index_ddim) + self._column_min_stencil(data, min_value, min_index) + self._column_min_ddim_stencil(data_ddim, min_value_ddim, min_index_ddim) + + +def test_column_operations(boilerplate): + stencil_factory, quantity_factory = boilerplate + quantity_factory.add_data_dimensions({"ddim": 2}) + data = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], "n/a") + data.field[:] = [ + 47.3821, + 2.9157, + 88.6034, + 71.9275, + 53.1412, + 19.4783, + 94.2258, + 36.8099, + 64.0175, + 7.3504, + ] + + data_ddim = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM, "ddim"], "n/a") + data_ddim.field[:] = [ + [ + [ + [47.3821, 27.4825], + [2.9157, 93.1242], + [88.6034, 14.6347], + [71.9275, 58.2094], + [53.1412, 6.2369], + [19.4783, 71.5457], + [94.2258, 42.3091], + [36.8099, 89.7718], + [64.0175, 63.1910], + [7.3504, 3.4991], + ] + ] + ] + + max_value = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + max_index = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + min_value = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + min_index = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + max_value_ddim = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + max_index_ddim = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + min_value_ddim = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + min_index_ddim = quantity_factory.zeros([X_DIM, Y_DIM], "n/a") + + code = ColumnOperations(stencil_factory) + code( + data, + max_value, + max_index, + min_value, + min_index, + data_ddim, + max_value_ddim, + max_index_ddim, + min_value_ddim, + min_index_ddim, + ) + + # 3d field tests + assert max_value.field[:] == np.max(data.field[:], axis=2) + assert max_index.field[:] == np.argmax(data.field[:], axis=2) + assert min_value.field[:] == np.min(data.field[:, :, 5:], axis=2) + assert min_index.field[:] == 5 + np.argmin(data.field[:, :, 5:], axis=2) + + # 4d field tests + assert max_value_ddim.field[:] == np.max(data_ddim.field[:, :, :, 1], axis=2) + assert max_index_ddim.field[:] == np.argmax(data_ddim.field[:, :, :, 1], axis=2) + assert min_value_ddim.field[:] == np.min(data_ddim.field[:, :, 5:, 1], axis=2) + assert min_index_ddim.field[:] == 5 + np.argmin( + data_ddim.field[:, :, 5:, 1], axis=2 + ) + + +def test_CopyCornersXY_deprecation(boilerplate) -> None: + stencil_factory, _ = boilerplate + + with pytest.deprecated_call(match="Usage of CopyCornersXY is deprecated"): + CopyCornersXY(stencil_factory, [X_DIM, Y_DIM, Z_DIM], None) diff --git a/tests/stree_optimizer/__init__.py b/tests/stree_optimizer/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/stree_optimizer/sdfg_stree_tools.py b/tests/stree_optimizer/sdfg_stree_tools.py new file mode 100644 index 00000000..d5a07154 --- /dev/null +++ b/tests/stree_optimizer/sdfg_stree_tools.py @@ -0,0 +1,36 @@ +from types import TracebackType + +import dace + +import ndsl.dsl.dace.orchestration as orch +from ndsl import StencilFactory + + +def get_SDFG_and_purge(stencil_factory: StencilFactory) -> dace.CompiledSDFG: + """Get the Precompiled SDFG from the dace config dict where they are cached post + compilation and flush the cache in order for next build to re-use the function.""" + sdfg_repo = stencil_factory.config.dace_config.loaded_precompiled_SDFG + + if len(sdfg_repo.values()) != 1: + raise RuntimeError("Failure to compile SDFG") + sdfg = list(sdfg_repo.values())[0] + + sdfg_repo.clear() + + return sdfg + + +class StreeOptimization: + def __init__(self) -> None: + pass + + def __enter__(self) -> None: + orch._INTERNAL__SCHEDULE_TREE_OPTIMIZATION = True + + def __exit__( + self, + exc_type: type[BaseException] | None, + exc_val: BaseException | None, + exc_tb: TracebackType | None, + ) -> None: + orch._INTERNAL__SCHEDULE_TREE_OPTIMIZATION = False diff --git a/tests/stree_optimizer/test_merge.py b/tests/stree_optimizer/test_merge.py new file mode 100644 index 00000000..8fff866d --- /dev/null +++ b/tests/stree_optimizer/test_merge.py @@ -0,0 +1,174 @@ +import dace + +from ndsl import QuantityFactory, StencilFactory, orchestrate +from ndsl.boilerplate import get_factories_single_tile_orchestrated +from ndsl.constants import X_DIM, Y_DIM, Z_DIM +from ndsl.dsl.gt4py import FORWARD, PARALLEL, K, computation, interval +from ndsl.dsl.typing import FloatField + +from .sdfg_stree_tools import StreeOptimization, get_SDFG_and_purge + + +def stencil(in_field: FloatField, out_field: FloatField) -> None: + with computation(PARALLEL), interval(...): + out_field = in_field + 1 + + +def stencil_with_self_assign(in_field: FloatField, out_field: FloatField) -> None: + with computation(PARALLEL), interval(...): + out_field = out_field + in_field + 2 + + +def stencil_with_forward_K(in_field: FloatField, out_field: FloatField) -> None: + with computation(FORWARD), interval(...): + out_field = in_field + 3 + + +def stencil_with_different_intervals( + in_field: FloatField, + out_field: FloatField, +) -> None: + with computation(PARALLEL), interval(1, None): + out_field = in_field + 5 + + +def stencil_with_buffer_read_offset_in_K( + in_field: FloatField, out_field: FloatField, buffer: FloatField +) -> None: + with computation(PARALLEL), interval(1, None): + buffer = in_field + 6 + + with computation(PARALLEL), interval(1, None): + out_field = buffer[K - 1] + 7 + + +class OrchestratedCode: + def __init__( + self, + stencil_factory: StencilFactory, + quantity_factory: QuantityFactory, + ) -> None: + orchestratable_methods = [ + "trivial_merge", + "missing_merge_of_forscope_and_map", + "overcompute_merge", + "block_merge_when_depandencies_is_found", + ] + for method in orchestratable_methods: + orchestrate( + obj=self, + config=stencil_factory.config.dace_config, + method_to_orchestrate=method, + ) + + self.stencil = stencil_factory.from_dims_halo( + func=stencil, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.stencil_with_forward_K = stencil_factory.from_dims_halo( + func=stencil_with_forward_K, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.stencil_with_buffer_read_offset_in_K = stencil_factory.from_dims_halo( + func=stencil_with_buffer_read_offset_in_K, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.stencil_with_different_intervals = stencil_factory.from_dims_halo( + func=stencil_with_different_intervals, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + + self._buffer = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], units="") + + def trivial_merge( + self, + in_field: FloatField, + out_field: FloatField, + ) -> None: + self.stencil(in_field, out_field) + self.stencil(in_field, out_field) + + def missing_merge_of_forscope_and_map( + self, + in_field: FloatField, + out_field: FloatField, + ) -> None: + self.stencil(in_field, out_field) + self.stencil_with_forward_K(in_field, out_field) + self.stencil(in_field, out_field) + + def block_merge_when_depandencies_is_found( + self, + in_field: FloatField, + out_field: FloatField, + ) -> None: + self.stencil(in_field, out_field) + self.stencil_with_buffer_read_offset_in_K(in_field, out_field, self._buffer) + + def overcompute_merge( + self, + in_field: FloatField, + out_field: FloatField, + ) -> None: + self.stencil(in_field, out_field) + self.stencil_with_different_intervals(in_field, out_field) + + +def test_stree_merge_maps() -> None: + domain = (3, 3, 4) + stencil_factory, quantity_factory = get_factories_single_tile_orchestrated( + domain[0], domain[1], domain[2], 0, backend="dace:cpu_kfirst" + ) + + code = OrchestratedCode(stencil_factory, quantity_factory) + in_qty = quantity_factory.ones([X_DIM, Y_DIM, Z_DIM], "") + out_qty = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], "") + + with StreeOptimization(): + # Trivial merge + code.trivial_merge(in_qty, out_qty) + precompiled_sdfg = get_SDFG_and_purge(stencil_factory) + all_maps = [ + (me, state) + for me, state in precompiled_sdfg.sdfg.all_nodes_recursive() + if isinstance(me, dace.nodes.MapEntry) + ] + + assert len(all_maps) == 3 + assert (out_qty.field[:] == 2).all() + + # Merge IJ - but do not merge K map & for (missing feature) + code.missing_merge_of_forscope_and_map(in_qty, out_qty) + sdfg = get_SDFG_and_purge(stencil_factory).sdfg + all_maps = [ + (me, state) + for me, state in sdfg.all_nodes_recursive() + if isinstance(me, dace.nodes.MapEntry) + ] + assert len(all_maps) == 4 # 2 IJ + 2 Ks + all_loop_guard_state = [ + (me, state) + for me, state in sdfg.all_nodes_recursive() + if isinstance(me, dace.SDFGState) and me.name.startswith("loop_guard") + ] + assert len(all_loop_guard_state) == 1 # 1 For loop + + # Overcompute merge in K - we merge and introduce an If guard + code.overcompute_merge(in_qty, out_qty) + sdfg = get_SDFG_and_purge(stencil_factory).sdfg + all_maps = [ + (me, state) + for me, state in sdfg.all_nodes_recursive() + if isinstance(me, dace.nodes.MapEntry) + ] + assert len(all_maps) == 3 + + # Forbid merging when data dependancy is detected + code.block_merge_when_depandencies_is_found(in_qty, out_qty) + sdfg = get_SDFG_and_purge(stencil_factory).sdfg + all_maps = [ + (me, state) + for me, state in sdfg.all_nodes_recursive() + if isinstance(me, dace.nodes.MapEntry) + ] + assert len(all_maps) == 4 # 2 IJ + 2 Ks (un-merged) diff --git a/tests/stree_optimizer/test_optimization.py b/tests/stree_optimizer/test_optimization.py deleted file mode 100644 index fb32a35d..00000000 --- a/tests/stree_optimizer/test_optimization.py +++ /dev/null @@ -1,69 +0,0 @@ -from ndsl import StencilFactory, orchestrate -from ndsl.boilerplate import get_factories_single_tile_orchestrated -from ndsl.constants import X_DIM, Y_DIM, Z_DIM -from ndsl.dsl.dace.stree.optimizations import AxisIterator, CartesianAxisMerge -from ndsl.dsl.gt4py import PARALLEL, computation, interval -from ndsl.dsl.typing import FloatField - - -def stencil_A(in_field: FloatField, out_field: FloatField): - with computation(PARALLEL), interval(...): - out_field = in_field - - -def stencil_B(in_field: FloatField, out_field: FloatField): - with computation(PARALLEL), interval(...): - out_field = out_field + in_field * 3 - - -class TriviallyMergeableCode: - def __init__(self, stencil_factory: StencilFactory): - orchestrate(obj=self, config=stencil_factory.config.dace_config) - self.stencil_A = stencil_factory.from_dims_halo( - func=stencil_A, - compute_dims=[X_DIM, Y_DIM, Z_DIM], - ) - self.stencil_B = stencil_factory.from_dims_halo( - func=stencil_B, - compute_dims=[X_DIM, Y_DIM, Z_DIM], - ) - - def __call__(self, in_field: FloatField, out_field: FloatField): - self.stencil_A(in_field, out_field) - self.stencil_B(in_field, out_field) - - -def test_stree_roundtrip_no_opt(): - """Dev Note: - - The below code sucessfully merges top level K loop (2 loops) - How do we test it?! Running doesn't test merging and the compilation - is a near-black box. We could reach in the `dace_config.compiled_sdfg` - cache but it's keyed on the dace.program and if we can reach the program - well we can reach the SDFG and turn it into an stree for verification - Should we run orchestration "by hand"? - Can we intercept the `stree` ? After all we just want to check that! - - Test is deactivated for now""" - - return True - domain = (3, 3, 4) - stencil_factory, quantity_factory = get_factories_single_tile_orchestrated( - domain[0], domain[1], domain[2], 0, backend="dace:cpu" - ) - - code = TriviallyMergeableCode(stencil_factory) - in_qty = quantity_factory.ones([X_DIM, Y_DIM, Z_DIM], "") - out_qty = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], "") - - # Temporarily flip the internal switch - import ndsl.dsl.dace.orchestration as orch - - orch._INTERNAL__SCHEDULE_TREE_OPTIMIZATION = True - orch._INTERNAL__SCHEDULE_TREE_PASSES = [CartesianAxisMerge(AxisIterator._K)] - - code(in_qty, out_qty) - - assert (out_qty.field[:] == 4).all() - - orch._INTERNAL__SCHEDULE_TREE_OPTIMIZATION = False diff --git a/tests/stree_optimizer/test_transient_refine.py b/tests/stree_optimizer/test_transient_refine.py new file mode 100644 index 00000000..16314b8d --- /dev/null +++ b/tests/stree_optimizer/test_transient_refine.py @@ -0,0 +1,144 @@ +from ndsl import NDSLRuntime, Quantity, QuantityFactory, StencilFactory, orchestrate +from ndsl.boilerplate import get_factories_single_tile_orchestrated +from ndsl.constants import X_DIM, Y_DIM, Z_DIM +from ndsl.dsl.gt4py import IJK, PARALLEL, Field, J, K, computation, interval +from ndsl.dsl.typing import Float, FloatField + +from .sdfg_stree_tools import StreeOptimization, get_SDFG_and_purge + + +DATADIM_SIZE = 8 +DDIM_NAME = "DDIM" +DDIM_TYPE = Field[IJK, (Float, (DATADIM_SIZE))] + + +def stencil(in_field: FloatField, out_field: FloatField) -> None: + with computation(PARALLEL), interval(...): + out_field = in_field + 1 + + +def stencil_with_K_offset(in_field: FloatField, out_field: FloatField) -> None: + with computation(PARALLEL), interval(0, -1): + out_field = in_field[K + 1] + 2 + + +def stencil_with_JK_offset(in_field: FloatField, out_field: FloatField) -> None: + with computation(PARALLEL), interval(...): + out_field = in_field[J + 1, K + 1] + 3 + + +def stencil_with_ddim(in_field: DDIM_TYPE, out_field: DDIM_TYPE) -> None: + with computation(PARALLEL), interval(...): + n = 0 + while n < DATADIM_SIZE: + out_field[0, 0, 0][n] = in_field[0, 0, 0][n] + 4 + n = n + 1 + + +class TransientRefineableCode(NDSLRuntime): + def __init__( + self, stencil_factory: StencilFactory, quantity_factory: QuantityFactory + ) -> None: + super().__init__(stencil_factory.config.dace_config) + orchestratable_methods = [ + "refine_to_scalar", + "refine_to_K_buffer", + "refine_to_JK_buffer", + "do_not_refine_datadims", + ] + for method in orchestratable_methods: + orchestrate( + obj=self, + config=stencil_factory.config.dace_config, + method_to_orchestrate=method, + ) + self.stencil = stencil_factory.from_dims_halo( + func=stencil, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.stencil_with_K_offset = stencil_factory.from_dims_halo( + func=stencil_with_K_offset, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.stencil_with_JK_offset = stencil_factory.from_dims_halo( + func=stencil_with_JK_offset, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.stencil_with_ddim = stencil_factory.from_dims_halo( + func=stencil_with_ddim, + compute_dims=[X_DIM, Y_DIM, Z_DIM], + ) + self.tmp = self.make_local(quantity_factory, [X_DIM, Y_DIM, Z_DIM]) + self.tmp_ddim = self.make_local( + quantity_factory, [X_DIM, Y_DIM, Z_DIM, DDIM_NAME] + ) + + def refine_to_scalar(self, in_field: Quantity, out_field: Quantity) -> None: + self.stencil(in_field, self.tmp) + self.stencil(self.tmp, out_field) + + def refine_to_K_buffer(self, in_field: Quantity, out_field: Quantity) -> None: + self.stencil(in_field, self.tmp) + self.stencil_with_K_offset(self.tmp, out_field) + + def refine_to_JK_buffer(self, in_field: Quantity, out_field: Quantity) -> None: + self.stencil(in_field, self.tmp) + self.stencil_with_JK_offset(self.tmp, out_field) + + def do_not_refine_datadims(self, in_field: Quantity, out_field: Quantity) -> None: + self.stencil_with_ddim(in_field, self.tmp_ddim) + self.stencil_with_ddim(self.tmp_ddim, out_field) + + +def test_stree_roundtrip_transient_is_refined() -> None: + domain = (3, 3, 4) + stencil_factory, quantity_factory = get_factories_single_tile_orchestrated( + domain[0], domain[1], domain[2], 0, backend="dace:cpu_kfirst" + ) + + in_qty = quantity_factory.ones([X_DIM, Y_DIM, Z_DIM], "") + out_qty = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM], "") + + quantity_factory.add_data_dimensions({DDIM_NAME: DATADIM_SIZE}) + in_qty_ddim = quantity_factory.ones([X_DIM, Y_DIM, Z_DIM, DDIM_NAME], "") + out_qty_ddim = quantity_factory.zeros([X_DIM, Y_DIM, Z_DIM, DDIM_NAME], "") + + code = TransientRefineableCode(stencil_factory, quantity_factory) + + with StreeOptimization(): + # Refine to scalar + code.refine_to_scalar(in_qty, out_qty) + precompiled_sdfg = get_SDFG_and_purge(stencil_factory) + for array in precompiled_sdfg.sdfg.arrays.values(): + if array.transient: + assert array.shape == (1, 1, 1) + + # Refine cartesian axis to buffers + # IJ merges - K is a buffer + code.refine_to_K_buffer(in_qty, out_qty) + precompiled_sdfg = get_SDFG_and_purge(stencil_factory) + for array in precompiled_sdfg.sdfg.arrays.values(): + if array.transient: + assert array.shape == ( + 1, + 1, + domain[2] + 1, # Quantity are domain size + 1 + ) + + # I merges - JK buffer + code.refine_to_JK_buffer(in_qty, out_qty) + precompiled_sdfg = get_SDFG_and_purge(stencil_factory) + for array in precompiled_sdfg.sdfg.arrays.values(): + if array.transient: + assert array.shape == ( + 1, + domain[1] + 1, # Quantity are domain size + 1 + domain[2] + 1, + ) + + # Refine to remaining data dimensions + code.do_not_refine_datadims(in_qty_ddim, out_qty_ddim) + precompiled_sdfg = get_SDFG_and_purge(stencil_factory) + for array in precompiled_sdfg.sdfg.arrays.values(): + if array.transient: + assert array.shape == (1, 1, 1, DATADIM_SIZE) or len(array.shape) == 1 diff --git a/tests/test_basic_operations.py b/tests/test_basic_operations.py index 0d707240..74916015 100644 --- a/tests/test_basic_operations.py +++ b/tests/test_basic_operations.py @@ -128,12 +128,14 @@ def test_copy(): data=np.zeros([20, 20, 79]), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) outfield = Quantity( data=np.ones([20, 20, 79]), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) copy(f_in=infield.data, f_out=outfield.data) @@ -148,18 +150,21 @@ def test_adjustmentfactor(): data=np.full(shape=[20, 20], fill_value=2.0), dims=[X_DIM, Y_DIM], units="m", + backend=backend, ) outfield = Quantity( data=np.full(shape=[20, 20, 79], fill_value=2.0), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) testfield = Quantity( data=np.full(shape=[20, 20, 79], fill_value=4.0), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) adfact(factor=factorfield.data, f_out=outfield.data) @@ -173,12 +178,14 @@ def test_setvalue(): data=np.zeros(shape=[20, 20, 79]), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) testfield = Quantity( data=np.full(shape=[20, 20, 79], fill_value=2.0), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) setvalue(f_out=outfield.data, value=2.0) @@ -193,18 +200,21 @@ def test_adjustdivide(): data=np.full(shape=[20, 20, 79], fill_value=2.0), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) outfield = Quantity( data=np.full(shape=[20, 20, 79], fill_value=2.0), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) testfield = Quantity( data=np.full(shape=[20, 20, 79], fill_value=1.0), dims=[X_DIM, Y_DIM, Z_DIM], units="m", + backend=backend, ) addiv(factor=factorfield.data, f_out=outfield.data) diff --git a/tests/test_boilerplate.py b/tests/test_boilerplate.py index b531453d..0e00d459 100644 --- a/tests/test_boilerplate.py +++ b/tests/test_boilerplate.py @@ -45,7 +45,7 @@ def test_boilerplate_import_numpy(): # Ensure backend is propagated to StencilFactory and QuantityFactory assert stencil_factory.backend == "numpy" - assert quantity_factory._backend() == "numpy" + assert quantity_factory.backend == "numpy" _copy_ops(stencil_factory, quantity_factory) @@ -64,7 +64,7 @@ def test_boilerplate_import_orchestrated_cpu(): # Ensure backend is propagated to StencilFactory and QuantityFactory assert stencil_factory.backend == "dace:cpu" - assert quantity_factory._backend() == "dace:cpu" + assert quantity_factory.backend == "dace:cpu" _copy_ops(stencil_factory, quantity_factory) diff --git a/tests/test_buffer.py b/tests/test_buffer.py index 1498402d..de7723ce 100644 --- a/tests/test_buffer.py +++ b/tests/test_buffer.py @@ -187,6 +187,5 @@ def test_new_args_gives_different_buffer(allocator, backend, first_args, second_ @pytest.mark.parametrize("allocator, backend", [["ones", "cupy"]], indirect=True) def test_mpi_unsafe_allocator_exception(backend, allocator): BUFFER_CACHE.clear() - print(allocator) with pytest.raises(RuntimeError): Buffer.pop_from_cache(allocator, shape=(10, 10, 10), dtype=float) diff --git a/tests/test_caching_comm.py b/tests/test_caching_comm.py index d2d7f64e..bdbab4cd 100644 --- a/tests/test_caching_comm.py +++ b/tests/test_caching_comm.py @@ -8,7 +8,6 @@ CubedSphereCommunicator, CubedSpherePartitioner, LocalComm, - NullComm, Quantity, TilePartitioner, ) @@ -30,6 +29,7 @@ def test_halo_update_integration(): units="", origin=origin, extent=extent, + backend="debug", ) for _ in range(n_ranks) ] @@ -75,29 +75,38 @@ def perform_serial_halo_updates( def test_Recv_inserts_data(): - comm = CachingCommWriter(comm=NullComm(rank=0, total_ranks=6)) + comm = CachingCommWriter(comm=LocalComm(rank=0, total_ranks=6, buffer_dict={})) shape = (12, 12) recvbuf = np.random.randn(*shape) assert len(comm._data.received_buffers) == 0 - comm.Recv(recvbuf, source=0) - assert len(comm._data.received_buffers) == 1 - assert comm._data.received_buffers[0].shape == shape + + if comm.Get_rank() == 0: + comm.bcast(np.random.randn(*shape)) + else: + comm.Recv(recvbuf, source=0) + assert len(comm._data.received_buffers) == 1 + assert comm._data.received_buffers[0].shape == shape def test_Irecv_inserts_data(): - comm = CachingCommWriter(comm=NullComm(rank=0, total_ranks=6)) + comm = CachingCommWriter(comm=LocalComm(rank=0, total_ranks=6, buffer_dict={})) shape = (12, 12) recvbuf = np.random.randn(*shape) assert len(comm._data.received_buffers) == 0 - req = comm.Irecv(recvbuf, source=0) - assert len(comm._data.received_buffers) == 0 - req.wait() - assert len(comm._data.received_buffers) == 1 - assert comm._data.received_buffers[0].shape == shape + + if comm.Get_rank() == 0: + comm.Isend(np.random.randn(*shape), dest=2) + + if comm.Get_rank() == 2: + req = comm.Irecv(recvbuf, source=0) + assert len(comm._data.received_buffers) == 0 + req.wait() + assert len(comm._data.received_buffers) == 1 + assert comm._data.received_buffers[0].shape == shape def test_bcast_inserts_data(): - comm = CachingCommWriter(comm=NullComm(rank=0, total_ranks=6)) + comm = CachingCommWriter(comm=LocalComm(rank=0, total_ranks=6, buffer_dict={})) shape = (12, 12) recvbuf = np.random.randn(*shape) assert len(comm._data.bcast_objects) == 0 diff --git a/tests/test_cube_scatter_gather.py b/tests/test_cube_scatter_gather.py index 236e1eb9..5fe4f5b9 100644 --- a/tests/test_cube_scatter_gather.py +++ b/tests/test_cube_scatter_gather.py @@ -6,7 +6,7 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, + LocalComm, Quantity, TilePartitioner, ) @@ -100,7 +100,7 @@ def communicator_list(layout): for rank in range(total_ranks): return_list.append( CubedSphereCommunicator( - DummyComm(rank, total_ranks, shared_buffer), + LocalComm(rank, total_ranks, shared_buffer), CubedSpherePartitioner(TilePartitioner(layout)), timer=Timer(), ) @@ -169,6 +169,7 @@ def get_quantity(dims, units, extent, n_halo, numpy): units, origin=tuple(origin), extent=tuple(extent), + backend="numpy", ) diff --git a/tests/test_decomposition.py b/tests/test_decomposition.py index 2160e23e..2077a609 100644 --- a/tests/test_decomposition.py +++ b/tests/test_decomposition.py @@ -6,13 +6,10 @@ from ndsl import CubedSpherePartitioner, TilePartitioner from ndsl.comm.decomposition import ( - block_waiting_for_compilation, build_cache_path, check_cached_path_exists, determine_rank_is_compiling, - unblock_waiting_tiles, ) -from tests.mpi.mpi_comm import MPI @pytest.mark.parametrize( @@ -35,7 +32,7 @@ def test_determine_rank_is_compiling( def test_check_cached_path_exists(): with pytest.raises(RuntimeError): - check_cached_path_exists("notarealpath") + check_cached_path_exists("not/a/real/path") def test_check_cached_path_exists_working(): @@ -67,18 +64,3 @@ def test_build_cache_path( ) _, rank_str = build_cache_path(compilation_config) assert rank_str == target_rank_str - - -@pytest.mark.skipif( - MPI is None, - reason="pytest is not run in parallel", -) -def test_unblock_waiting_tiles(): - comm = MPI.COMM_WORLD - compilation_config = unittest.mock.MagicMock(compiling_equivalent=0) - rank = comm.Get_rank() - size = comm.Get_size() - if rank != 0: - block_waiting_for_compilation(comm, compilation_config) - if rank == 0: - unblock_waiting_tiles(comm) diff --git a/tests/test_dimension_sizer.py b/tests/test_dimension_sizer.py index ebad25ef..9d78a4e0 100644 --- a/tests/test_dimension_sizer.py +++ b/tests/test_dimension_sizer.py @@ -2,7 +2,7 @@ import pytest -from ndsl import QuantityFactory, SubtileGridSizer +from ndsl import GridSizer, QuantityFactory, SubtileGridSizer from ndsl.constants import ( N_HALO_DEFAULT, X_DIM, @@ -55,7 +55,7 @@ def extra_dimension_lengths(): @pytest.fixture def namelist(nx_tile, ny_tile, nz, layout): - namelist = { + return { "fv_core_nml": { "npx": nx_tile + 1, "npy": ny_tile + 1, @@ -63,13 +63,14 @@ def namelist(nx_tile, ny_tile, nz, layout): "layout": layout, } } - return namelist @pytest.fixture(params=["from_namelist", "from_tile_params"]) -def sizer(request, nx_tile, ny_tile, nz, layout, namelist, extra_dimension_lengths): +def sizer( + request, nx_tile, ny_tile, nz, layout, namelist, extra_dimension_lengths +) -> GridSizer: if request.param == "from_tile_params": - sizer = SubtileGridSizer.from_tile_params( + return SubtileGridSizer.from_tile_params( nx_tile=nx_tile, ny_tile=ny_tile, nz=nz, @@ -77,11 +78,11 @@ def sizer(request, nx_tile, ny_tile, nz, layout, namelist, extra_dimension_lengt layout=layout, data_dimensions=extra_dimension_lengths, ) - elif request.param == "from_namelist": - sizer = SubtileGridSizer.from_namelist(namelist) - else: - raise NotImplementedError() - return sizer + + if request.param == "from_namelist": + return SubtileGridSizer.from_namelist(namelist) + + raise NotImplementedError() @pytest.fixture @@ -109,7 +110,7 @@ def dtype(request): "z_y_x", ] ) -def dim_case(request, nx, ny, nz): +def dim_case(request, nx, ny, nz) -> DimCase: if request.param == "x_only": return DimCase( (X_DIM,), @@ -117,32 +118,38 @@ def dim_case(request, nx, ny, nz): (nx,), (2 * N_HALO_DEFAULT + nx + 1,), ) - elif request.param == "x_interface_only": + + if request.param == "x_interface_only": return DimCase( (X_INTERFACE_DIM,), (N_HALO_DEFAULT,), (nx + 1,), (2 * N_HALO_DEFAULT + nx + 1,), ) - elif request.param == "y_only": + + if request.param == "y_only": return DimCase( (Y_DIM,), (N_HALO_DEFAULT,), (ny,), (2 * N_HALO_DEFAULT + ny + 1,), ) - elif request.param == "y_interface_only": + + if request.param == "y_interface_only": return DimCase( (Y_INTERFACE_DIM,), (N_HALO_DEFAULT,), (ny + 1,), (2 * N_HALO_DEFAULT + ny + 1,), ) - elif request.param == "z_only": + + if request.param == "z_only": return DimCase((Z_DIM,), (0,), (nz,), (nz + 1,)) - elif request.param == "z_interface_only": + + if request.param == "z_interface_only": return DimCase((Z_INTERFACE_DIM,), (0,), (nz + 1,), (nz + 1,)) - elif request.param == "x_y": + + if request.param == "x_y": return DimCase( ( X_DIM, @@ -155,7 +162,8 @@ def dim_case(request, nx, ny, nz): 2 * N_HALO_DEFAULT + ny + 1, ), ) - elif request.param == "z_y_x": + + if request.param == "z_y_x": return DimCase( ( Z_DIM, @@ -171,6 +179,8 @@ def dim_case(request, nx, ny, nz): ), ) + raise NotImplementedError() + @pytest.mark.cpu_only def test_subtile_dimension_sizer_origin(sizer, dim_case): @@ -191,7 +201,7 @@ def test_subtile_dimension_sizer_shape(sizer, dim_case): def test_allocator_zeros(numpy, sizer, dim_case, units, dtype): - allocator = QuantityFactory.from_backend(sizer, "numpy") + allocator = QuantityFactory(sizer, backend="numpy") quantity = allocator.zeros(dim_case.dims, units, dtype=dtype) assert quantity.units == units assert quantity.dims == dim_case.dims @@ -202,7 +212,7 @@ def test_allocator_zeros(numpy, sizer, dim_case, units, dtype): def test_allocator_ones(numpy, sizer, dim_case, units, dtype): - allocator = QuantityFactory.from_backend(sizer, "numpy") + allocator = QuantityFactory(sizer, backend="numpy") quantity = allocator.ones(dim_case.dims, units, dtype=dtype) assert quantity.units == units assert quantity.dims == dim_case.dims @@ -213,7 +223,7 @@ def test_allocator_ones(numpy, sizer, dim_case, units, dtype): def test_allocator_empty(sizer, dim_case, units, dtype): - allocator = QuantityFactory.from_backend(sizer, "numpy") + allocator = QuantityFactory(sizer, backend="numpy") quantity = allocator.empty(dim_case.dims, units, dtype=dtype) assert quantity.units == units assert quantity.dims == dim_case.dims @@ -223,7 +233,7 @@ def test_allocator_empty(sizer, dim_case, units, dtype): def test_allocator_data_dimensions_operations(sizer): - quantity_factory = QuantityFactory.from_backend(sizer, "numpy") + quantity_factory = QuantityFactory(sizer, backend="numpy") quantity_factory.add_data_dimensions({"D0": 11}) assert "D0" in quantity_factory.sizer.data_dimensions.keys() assert quantity_factory.sizer.data_dimensions["D0"] == 11 diff --git a/tests/test_exceptions.py b/tests/test_exceptions.py deleted file mode 100644 index f5d66eb7..00000000 --- a/tests/test_exceptions.py +++ /dev/null @@ -1,8 +0,0 @@ -import pytest - -from ndsl import OutOfBoundsError - - -def test_OutOfBoundsError_is_deprecation() -> None: - with pytest.deprecated_call(): - OutOfBoundsError("This should trigger a deprecation warning.") diff --git a/tests/test_filesystem.py b/tests/test_filesystem.py deleted file mode 100644 index 5f05af82..00000000 --- a/tests/test_filesystem.py +++ /dev/null @@ -1,19 +0,0 @@ -import pytest - -import ndsl.filesystem as fs - - -def test_is_file_is_deprecated() -> None: - with pytest.deprecated_call(): - fs.is_file("path/to/my_file.txt") - - -def test_open_is_deprecated() -> None: - with pytest.deprecated_call(): - with fs.open("README.md", "r"): - pass - - -def test_get_fs_is_deprecated() -> None: - with pytest.deprecated_call(): - fs.get_fs("path/to/my/file.txt") diff --git a/tests/test_g2g_communication.py b/tests/test_g2g_communication.py index dab27cb3..b7af3e12 100644 --- a/tests/test_g2g_communication.py +++ b/tests/test_g2g_communication.py @@ -12,7 +12,7 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, + LocalComm, Quantity, TilePartitioner, ) @@ -56,7 +56,7 @@ def cpu_communicators(cube_partitioner): for rank in range(cube_partitioner.total_ranks): return_list.append( CubedSphereCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), force_cpu=True, @@ -74,7 +74,7 @@ def gpu_communicators(cube_partitioner): for rank in range(cube_partitioner.total_ranks): return_list.append( CubedSphereCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), partitioner=cube_partitioner, @@ -137,7 +137,6 @@ def test_halo_update_only_communicate_on_gpu(backend, gpu_communicators): # We expect no np calls and several cp calls global N_ZEROS_CALLS # noqa: F824 global ... is unused - print(f"Results {N_ZEROS_CALLS}") assert N_ZEROS_CALLS[cp.zeros] > 0 assert N_ZEROS_CALLS[np.zeros] == 0 diff --git a/tests/test_halo_data_transformer.py b/tests/test_halo_data_transformer.py index 7e3385e7..2d34567a 100644 --- a/tests/test_halo_data_transformer.py +++ b/tests/test_halo_data_transformer.py @@ -165,20 +165,18 @@ def quantity(dims, units, origin, extent, shape, dtype, gt4py_backend): """A list of quantities whose values are 42.42 in the computational domain and 1 outside of it.""" sz = _shape_length(shape) - print(f"{shape} {sz}") data = np.arange(0, sz, dtype=dtype).reshape(shape) if "gtc" not in gt4py_backend: # should also test code if gt4py_backend is unset gt4py_backend = None - quantity = Quantity( + return Quantity( data, dims=dims, units=units, origin=origin, extent=extent, - gt4py_backend=gt4py_backend, + backend=gt4py_backend, ) - return quantity @pytest.fixture(params=[-0, -1, -2, -3]) diff --git a/tests/test_halo_update.py b/tests/test_halo_update.py index ca76ab8b..e4ca02df 100644 --- a/tests/test_halo_update.py +++ b/tests/test_halo_update.py @@ -6,8 +6,8 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, HaloUpdater, + LocalComm, Quantity, TileCommunicator, TilePartitioner, @@ -204,7 +204,7 @@ def communicator_list(cube_partitioner: CubedSpherePartitioner): for rank in range(total_ranks): return_list.append( CubedSphereCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), partitioner=cube_partitioner, @@ -222,7 +222,7 @@ def tile_communicator_list(tile_partitioner): for rank in range(total_ranks): return_list.append( TileCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), partitioner=tile_partitioner, @@ -319,11 +319,7 @@ def depth_quantity_list( pos[i] = origin[i] + extent[i] + n_outside - 1 data[tuple(pos)] = numpy.nan quantity = Quantity( - data, - dims=dims, - units=units, - origin=origin, - extent=extent, + data, dims=dims, units=units, origin=origin, extent=extent, backend="debug" ) return_list.append(quantity) return return_list @@ -356,11 +352,7 @@ def tile_depth_quantity_list( pos[i] = origin[i] + extent[i] + n_outside - 1 data[tuple(pos)] = numpy.nan quantity = Quantity( - data, - dims=dims, - units=units, - origin=origin, - extent=extent, + data, dims=dims, units=units, origin=origin, extent=extent, backend="debug" ) return_list.append(quantity) return return_list @@ -500,11 +492,7 @@ def zeros_quantity_list(total_ranks, dims, units, origin, extent, shape, numpy, for _rank in range(total_ranks): data = numpy.ones(shape, dtype=dtype) quantity = Quantity( - data, - dims=dims, - units=units, - origin=origin, - extent=extent, + data, dims=dims, units=units, origin=origin, extent=extent, backend="debug" ) quantity.view[:] = 0.0 return_list.append(quantity) @@ -521,11 +509,7 @@ def zeros_quantity_tile_list( for _rank in range(single_tile_ranks): data = numpy.ones(shape, dtype=dtype) quantity = Quantity( - data, - dims=dims, - units=units, - origin=origin, - extent=extent, + data, dims=dims, units=units, origin=origin, extent=extent, backend="debug" ) quantity.view[:] = 0.0 return_list.append(quantity) diff --git a/tests/test_halo_update_ranks.py b/tests/test_halo_update_ranks.py index 6ceb4886..4a101f37 100644 --- a/tests/test_halo_update_ranks.py +++ b/tests/test_halo_update_ranks.py @@ -3,7 +3,7 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, + LocalComm, Quantity, TilePartitioner, ) @@ -103,7 +103,7 @@ def communicator_list(cube_partitioner, total_ranks): for rank in range(cube_partitioner.total_ranks): return_list.append( CubedSphereCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), partitioner=cube_partitioner, @@ -126,6 +126,7 @@ def rank_quantity_list(total_ranks, numpy, dtype): units="m", origin=(1, 1), extent=(1, 1), + backend="debug", ) quantity_list.append(quantity) return quantity_list diff --git a/tests/test_legacy_restart.py b/tests/test_legacy_restart.py index 65514747..3e4ecd03 100644 --- a/tests/test_legacy_restart.py +++ b/tests/test_legacy_restart.py @@ -10,7 +10,7 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, + LocalComm, Quantity, TilePartitioner, ) @@ -38,7 +38,7 @@ def get_c12_restart_state_list(layout, only_names, tracer_properties): communicator_list = [] for rank in range(total_ranks): communicator = CubedSphereCommunicator( - DummyComm(rank, total_ranks, shared_buffer), + LocalComm(rank, total_ranks, shared_buffer), CubedSpherePartitioner(TilePartitioner(layout)), ) communicator_list.append(communicator) @@ -148,7 +148,7 @@ def test_open_c12_restart_empty_to_state_without_crashing(layout): communicator_list = [] for rank in range(total_ranks): communicator = CubedSphereCommunicator( - DummyComm(rank, total_ranks, shared_buffer), + LocalComm(rank, total_ranks, shared_buffer), CubedSpherePartitioner(TilePartitioner(layout)), ) communicator_list.append(communicator) @@ -190,7 +190,7 @@ def test_open_c12_restart_to_allocated_state_without_crashing(layout): communicator_list = [] for rank in range(total_ranks): communicator = CubedSphereCommunicator( - DummyComm(rank, total_ranks, shared_buffer), + LocalComm(rank, total_ranks, shared_buffer), CubedSpherePartitioner(TilePartitioner(layout)), ) communicator_list.append(communicator) diff --git a/tests/test_namelist.py b/tests/test_namelist.py deleted file mode 100644 index a32919e7..00000000 --- a/tests/test_namelist.py +++ /dev/null @@ -1,8 +0,0 @@ -import pytest - -from ndsl import Namelist - - -def test_ndsl_namelist_deprecation() -> None: - with pytest.deprecated_call(): - my_namelist = Namelist() diff --git a/tests/test_netcdf_monitor.py b/tests/test_netcdf_monitor.py index 19614486..c4cbe575 100644 --- a/tests/test_netcdf_monitor.py +++ b/tests/test_netcdf_monitor.py @@ -10,7 +10,7 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, + LocalComm, NetCDFMonitor, Quantity, TilePartitioner, @@ -39,6 +39,7 @@ def test_monitor_store_multi_rank_state( layout, nt, time_chunk_size, tmpdir, shape, ny_rank_add, nx_rank_add, dims, numpy ): units = "m" + backend = "debug" nz, ny, nx = shape ny_rank = int(ny / layout[0] + ny_rank_add) nx_rank = int(nx / layout[1] + nx_rank_add) @@ -53,7 +54,7 @@ def test_monitor_store_multi_rank_state( for rank in range(total_ranks): communicator = CubedSphereCommunicator( partitioner=partitioner, - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), ) @@ -74,6 +75,7 @@ def test_monitor_store_multi_rank_state( numpy.ones([nz, ny_rank, nx_rank]), dims=dims, units=units, + backend=backend, ), } monitor_list[rank].store_constant(state) @@ -87,6 +89,7 @@ def test_monitor_store_multi_rank_state( numpy.ones([nz, ny_rank, nx_rank]), dims=dims, units=units, + backend=backend, ), } monitor_list[rank].store(state) @@ -100,6 +103,7 @@ def test_monitor_store_multi_rank_state( numpy.ones([nz, ny_rank, nx_rank]), dims=dims, units=units, + backend=backend, ), } monitor_list[rank].store_constant(state) diff --git a/tests/test_null_comm.py b/tests/test_null_comm.py index 74065f67..9ed19d9c 100644 --- a/tests/test_null_comm.py +++ b/tests/test_null_comm.py @@ -1,3 +1,5 @@ +import pytest + from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, @@ -7,10 +9,8 @@ def test_can_create_cube_communicator(): - rank = 2 - total_ranks = 24 - mpi_comm = NullComm(rank, total_ranks) - layout = (2, 2) - partitioner = CubedSpherePartitioner(TilePartitioner(layout)) - communicator = CubedSphereCommunicator(mpi_comm, partitioner) - communicator.tile.partitioner + with pytest.deprecated_call(match="NullComm is deprecated"): + mpi_comm = NullComm(rank=2, total_ranks=24) + partitioner = CubedSpherePartitioner(TilePartitioner(layout=(2, 2))) + communicator = CubedSphereCommunicator(mpi_comm, partitioner) + assert communicator.tile.partitioner diff --git a/tests/test_partitioner.py b/tests/test_partitioner.py index cc0a105e..5b8836ac 100644 --- a/tests/test_partitioner.py +++ b/tests/test_partitioner.py @@ -993,7 +993,9 @@ def test_subtile_extent_with_tile_dimensions( cubedsphere_expected, ): data_array = np.zeros((tile_extent)) - quantity = Quantity(data_array, array_dims, "dimensionless", [0, 0, 0, 0]) + quantity = Quantity( + data_array, array_dims, "dimensionless", origin=[0, 0, 0, 0], backend="debug" + ) tile_partitioner = TilePartitioner(layout, edge_interior_ratio) cubedsphere_partitioner = CubedSpherePartitioner(tile_partitioner) diff --git a/tests/test_sync_shared_boundary.py b/tests/test_sync_shared_boundary.py index 7db5a621..27db0048 100644 --- a/tests/test_sync_shared_boundary.py +++ b/tests/test_sync_shared_boundary.py @@ -3,7 +3,7 @@ from ndsl import ( CubedSphereCommunicator, CubedSpherePartitioner, - DummyComm, + LocalComm, Quantity, TilePartitioner, ) @@ -56,7 +56,7 @@ def communicator_list(cube_partitioner, total_ranks): for rank in range(cube_partitioner.total_ranks): return_list.append( CubedSphereCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), partitioner=cube_partitioner, @@ -81,6 +81,7 @@ def rank_quantity_list(total_ranks, numpy, dtype, units=units): units=units, origin=(0, 0), extent=(3, 2), + backend="debug", ) y_data = numpy.empty((2, 3), dtype=dtype) y_data[:] = rank @@ -90,6 +91,7 @@ def rank_quantity_list(total_ranks, numpy, dtype, units=units): units=units, origin=(0, 0), extent=(2, 3), + backend="debug", ) quantity_list.append((x_quantity, y_quantity)) return quantity_list @@ -147,6 +149,7 @@ def counting_quantity_list(total_ranks, numpy, dtype, units=units): units=units, origin=(0, 0), extent=(3, 2), + backend="debug", ) y_data = 6 * total_ranks + numpy.array([[0, 1, 2], [3, 4, 5]]) + 6 * rank y_quantity = Quantity( @@ -155,6 +158,7 @@ def counting_quantity_list(total_ranks, numpy, dtype, units=units): units=units, origin=(0, 0), extent=(2, 3), + backend="debug", ) quantity_list.append((x_quantity, y_quantity)) return quantity_list diff --git a/tests/test_tile_scatter.py b/tests/test_tile_scatter.py index d768bb15..9ab00eba 100644 --- a/tests/test_tile_scatter.py +++ b/tests/test_tile_scatter.py @@ -1,6 +1,6 @@ import pytest -from ndsl import DummyComm, Quantity, TileCommunicator, TilePartitioner +from ndsl import LocalComm, Quantity, TileCommunicator, TilePartitioner from ndsl.constants import X_DIM, X_INTERFACE_DIM, Y_DIM, Y_INTERFACE_DIM @@ -20,7 +20,7 @@ def get_tile_communicator_list(partitioner): for rank in range(total_ranks): tile_communicator_list.append( TileCommunicator( - comm=DummyComm( + comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), partitioner=partitioner, @@ -36,11 +36,13 @@ def test_interface_state_two_by_two_per_rank_scatter_tile(layout, numpy): numpy.empty([layout[0] + 1, layout[1] + 1]), dims=[Y_INTERFACE_DIM, X_INTERFACE_DIM], units="dimensionless", + backend="debug", ), "pos_i": Quantity( numpy.empty([layout[0] + 1, layout[1] + 1], dtype=numpy.int32), dims=[Y_INTERFACE_DIM, X_INTERFACE_DIM], units="dimensionless", + backend="debug", ), } @@ -80,16 +82,19 @@ def test_centered_state_one_item_per_rank_scatter_tile(layout, numpy): numpy.empty([layout[0], layout[1]]), dims=[Y_DIM, X_DIM], units="dimensionless", + backend="debug", ), "rank_pos_j": Quantity( numpy.empty([layout[0], layout[1]]), dims=[Y_DIM, X_DIM], units="dimensionless", + backend="debug", ), "rank_pos_i": Quantity( numpy.empty([layout[0], layout[1]]), dims=[Y_DIM, X_DIM], units="dimensionless", + backend="debug", ), } @@ -137,6 +142,7 @@ def test_centered_state_one_item_per_rank_with_halo_scatter_tile(layout, n_halo, units="dimensionless", origin=(n_halo, n_halo), extent=extent, + backend="debug", ), "rank_pos_j": Quantity( numpy.empty([layout[0] + 2 * n_halo, layout[1] + 2 * n_halo]), @@ -144,6 +150,7 @@ def test_centered_state_one_item_per_rank_with_halo_scatter_tile(layout, n_halo, units="dimensionless", origin=(n_halo, n_halo), extent=extent, + backend="debug", ), "rank_pos_i": Quantity( numpy.empty([layout[0] + 2 * n_halo, layout[1] + 2 * n_halo]), @@ -151,6 +158,7 @@ def test_centered_state_one_item_per_rank_with_halo_scatter_tile(layout, n_halo, units="dimensionless", origin=(n_halo, n_halo), extent=extent, + backend="debug", ), } diff --git a/tests/test_tile_scatter_gather.py b/tests/test_tile_scatter_gather.py index 60ef583a..4e87eb65 100644 --- a/tests/test_tile_scatter_gather.py +++ b/tests/test_tile_scatter_gather.py @@ -3,7 +3,7 @@ import pytest -from ndsl import DummyComm, Quantity, TileCommunicator, TilePartitioner +from ndsl import LocalComm, Quantity, TileCommunicator, TilePartitioner from ndsl.constants import ( HORIZONTAL_DIMS, X_DIM, @@ -84,7 +84,7 @@ def communicator_list(layout): for rank in range(total_ranks): return_list.append( TileCommunicator( - DummyComm(rank, total_ranks, shared_buffer), + LocalComm(rank, total_ranks, shared_buffer), TilePartitioner(layout), ) ) @@ -150,6 +150,7 @@ def get_quantity(dims, units, extent, n_halo, numpy): units, origin=tuple(origin), extent=tuple(extent), + backend="debug", ) diff --git a/tests/test_utils.py b/tests/test_utils.py deleted file mode 100644 index 70dd9739..00000000 --- a/tests/test_utils.py +++ /dev/null @@ -1,18 +0,0 @@ -import pytest - -from ndsl.units import UnitsError, ensure_equal_units, units_are_equal - - -def test_UnitsError_is_deprecated() -> None: - with pytest.deprecated_call(): - UnitsError() - - -def test_units_are_equal_is_deprecated() -> None: - with pytest.deprecated_call(): - units_are_equal("asdf", "asdf") - - -def test_ensure_equal_units_is_deprecated() -> None: - with pytest.deprecated_call(): - ensure_equal_units("asdf", "asdf") diff --git a/tests/test_zarr_monitor.py b/tests/test_zarr_monitor.py index b3847ee4..b0943ffb 100644 --- a/tests/test_zarr_monitor.py +++ b/tests/test_zarr_monitor.py @@ -7,7 +7,7 @@ import pytest import xarray as xr -from ndsl import CubedSpherePartitioner, DummyComm, Quantity, TilePartitioner +from ndsl import CubedSpherePartitioner, LocalComm, MPIComm, Quantity, TilePartitioner from ndsl.constants import ( X_DIM, X_DIMS, @@ -91,40 +91,41 @@ def cube_partitioner(tile_partitioner): @pytest.fixture(params=["empty", "one_var_2d", "one_var_3d", "two_vars"]) -def base_state(request, nz, ny, nx, numpy): +def base_state(request, nz, ny, nx, numpy) -> dict: if request.param == "empty": return {} - elif request.param == "one_var_2d": + + if request.param == "one_var_2d": return { "var1": Quantity( - numpy.ones([ny, nx]), - dims=("y", "x"), - units="m", + numpy.ones([ny, nx]), dims=("y", "x"), units="m", backend="debug" ) } - elif request.param == "one_var_3d": + + if request.param == "one_var_3d": return { "var1": Quantity( numpy.ones([nz, ny, nx]), dims=("z", "y", "x"), units="m", + backend="debug", ) } - elif request.param == "two_vars": + + if request.param == "two_vars": return { "var1": Quantity( - numpy.ones([ny, nx]), - dims=("y", "x"), - units="m", + numpy.ones([ny, nx]), dims=("y", "x"), units="m", backend="debug" ), "var2": Quantity( numpy.ones([nz, ny, nx]), dims=("z", "y", "x"), units="degK", + backend="debug", ), } - else: - raise NotImplementedError() + + raise NotImplementedError() @pytest.fixture @@ -139,10 +140,17 @@ def state_list(base_state, n_times, start_time, time_step, numpy): return state_list +@requires_zarr +def test_mpi_comm_will_be_required(cube_partitioner): + with tempfile.TemporaryDirectory(suffix=".zarr") as tempdir: + with pytest.deprecated_call(match="`mpi_comm` will be a required argument"): + ZarrMonitor(tempdir, cube_partitioner) + + @requires_zarr def test_monitor_file_store(state_list, cube_partitioner, numpy, start_time): with tempfile.TemporaryDirectory(suffix=".zarr") as tempdir: - monitor = ZarrMonitor(tempdir, cube_partitioner) + monitor = ZarrMonitor(tempdir, cube_partitioner, mpi_comm=MPIComm()) for state in state_list: monitor.store(state) validate_store(state_list, tempdir, numpy, start_time) @@ -152,7 +160,7 @@ def test_monitor_file_store(state_list, cube_partitioner, numpy, start_time): @requires_zarr def validate_xarray_can_open(dirname): # just checking there are no crashes, validate_group checks data - xr.open_zarr(dirname) + xr.open_zarr(dirname, consolidated=False) @requires_zarr @@ -239,8 +247,8 @@ def test_monitor_file_store_multi_rank_state( ZarrMonitor( store, partitioner, - "w", - mpi_comm=DummyComm( + mode="w", + mpi_comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), ) @@ -253,6 +261,7 @@ def test_monitor_file_store_multi_rank_state( numpy.ones([nz, ny_rank, nx_rank]), dims=dims, units=units, + backend="debug", ), } monitor_list[rank].store(state) @@ -337,14 +346,19 @@ def _assert_no_nulls(dataset: xr.Dataset): @requires_zarr def test_open_zarr_without_nans(cube_partitioner, numpy, backend, mask_and_scale): store = {} + buffer = {} # initialize store - monitor = ZarrMonitor(store, cube_partitioner) - zero_quantity = Quantity(numpy.zeros([10, 10]), dims=("y", "x"), units="m") + monitor = ZarrMonitor(store, cube_partitioner, mpi_comm=LocalComm(0, 1, buffer)) + zero_quantity = Quantity( + numpy.zeros([10, 10]), dims=("y", "x"), units="m", backend="debug" + ) monitor.store({"var": zero_quantity}) # open w/o dask using chunks=None - dataset = xr.open_zarr(store, chunks=None, mask_and_scale=mask_and_scale) + dataset = xr.open_zarr( + store, chunks=None, mask_and_scale=mask_and_scale, consolidated=False + ) _assert_no_nulls(dataset.sel(tile=0)) @@ -354,14 +368,17 @@ def test_values_preserved(cube_partitioner, numpy): units = "m" store = {} + buffer = {} # initialize store - monitor = ZarrMonitor(store, cube_partitioner) - quantity = Quantity(numpy.random.uniform(size=(10, 10)), dims=dims, units=units) + monitor = ZarrMonitor(store, cube_partitioner, mpi_comm=LocalComm(0, 1, buffer)) + quantity = Quantity( + numpy.random.uniform(size=(10, 10)), dims=dims, units=units, backend="debug" + ) monitor.store({"var": quantity}) # open w/o dask using chunks=None - dataset = xr.open_zarr(store, chunks=None) + dataset = xr.open_zarr(store, chunks=None, consolidated=False) numpy.testing.assert_array_almost_equal( dataset["var"][0, 0, :, :].values, quantity.data ) @@ -388,7 +405,7 @@ def test_monitor_file_store_inconsistent_calendars( state_list_with_inconsistent_calendars, cube_partitioner, numpy ): with tempfile.TemporaryDirectory(suffix=".zarr") as tempdir: - monitor = ZarrMonitor(tempdir, cube_partitioner) + monitor = ZarrMonitor(tempdir, cube_partitioner, mpi_comm=MPIComm()) initial_state, final_state = state_list_with_inconsistent_calendars monitor.store(initial_state) with pytest.raises(ValueError, match="Calendar type"): @@ -406,29 +423,31 @@ def test_monitor_file_store_inconsistent_calendars( ) def diag(request, numpy): dims = request.param - diag = Quantity( - numpy.ones([size + 2 for size in range(len(dims))]), dims=dims, units="m" + return Quantity( + numpy.ones([size + 2 for size in range(len(dims))]), + dims=dims, + units="m", + backend="debug", ) - return diag def _transpose(quantity, dims_2d, dims_3d): if len(quantity.dims) == 2: return quantity.transpose(dims_2d) - elif len(quantity.dims) == 3: + + if len(quantity.dims) == 3: return quantity.transpose(dims_3d) @pytest.fixture(scope="function") def zarr_store(tmpdir_factory): tmpdir = tmpdir_factory.mktemp("diags.zarr") - store = zarr.storage.DirectoryStore(tmpdir) - return store + return zarr.storage.DirectoryStore(tmpdir) @pytest.fixture(scope="function") def zarr_monitor_single_rank(zarr_store, cube_partitioner): - return ZarrMonitor(zarr_store, cube_partitioner) + return ZarrMonitor(zarr_store, cube_partitioner, mpi_comm=MPIComm()) @requires_zarr @@ -440,7 +459,7 @@ def test_transposed_diags_write_across_ranks(diag, cube_partitioner, zarr_store) monitor = ZarrMonitor( zarr_store, cube_partitioner, - mpi_comm=DummyComm( + mpi_comm=LocalComm( rank=rank, total_ranks=total_ranks, buffer_dict=shared_buffer ), ) @@ -482,6 +501,7 @@ def test_diags_fail_different_dim_set(diag, numpy, zarr_monitor_single_rank): numpy.ones([size + 2 for size in range(len(diag.dims))]), dims=new_dims, units="m", + backend="debug", ) with pytest.raises(ValueError) as excinfo: zarr_monitor_single_rank.store({"time": time_2, "a": diag_2}) @@ -497,6 +517,6 @@ def test_diags_only_consistent_units_attrs_required(diag, zarr_monitor_single_ra diag_2 = copy.deepcopy(diag) diag_2._attrs.update({"some_non_units_attrs": 9.0}) zarr_monitor_single_rank.store({"time": time_2, "a": diag_2}) - diag_3 = Quantity(data=diag.values, dims=diag.dims, units="not_m") + diag_3 = Quantity(data=diag.view[:], dims=diag.dims, units="not_m", backend="debug") with pytest.raises(ValueError): zarr_monitor_single_rank.store({"time": time_3, "a": diag_3})