From 60aec3e5abe9a58db2f7256e979e2f4a888a0296 Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 2 Jul 2024 17:35:45 +0200 Subject: [PATCH 01/13] Use special unit conversion for derived variables (#2471) --- esmvalcore/preprocessor/_derive/__init__.py | 17 +++++++++-------- .../preprocessor/_derive/test_interface.py | 6 ++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/esmvalcore/preprocessor/_derive/__init__.py b/esmvalcore/preprocessor/_derive/__init__.py index 27bffa38d7..42eac77aa3 100644 --- a/esmvalcore/preprocessor/_derive/__init__.py +++ b/esmvalcore/preprocessor/_derive/__init__.py @@ -7,6 +7,8 @@ import iris +from esmvalcore.preprocessor._units import convert_units + logger = logging.getLogger(__name__) @@ -18,7 +20,6 @@ def _get_all_derived_variables(): dict All derived variables with `short_name` (keys) and the associated python classes (values). - """ derivers = {} for path in Path(__file__).parent.glob('[a-z]*.py'): @@ -50,7 +51,6 @@ def get_required(short_name, project): ------- list List of dictionaries (including at least the key `short_name`). - """ if short_name.lower() not in ALL_DERIVED_VARIABLES: raise NotImplementedError( @@ -82,7 +82,6 @@ def derive(cubes, short_name, long_name, units, standard_name=None): ------- iris.cube.Cube The new derived variable. - """ if short_name == cubes[0].var_name: return cubes[0] @@ -116,11 +115,13 @@ def derive(cubes, short_name, long_name, units, standard_name=None): "'%s', automatically setting them to '%s'. This might lead to " "incorrect data", short_name, cube.units, units) cube.units = units - elif cube.units.is_convertible(units): - cube.convert_units(units) else: - raise ValueError( - f"Units '{cube.units}' after executing derivation script of " - f"'{short_name}' cannot be converted to target units '{units}'") + try: + convert_units(cube, units) + except ValueError as exc: + raise ValueError( + f"Units '{cube.units}' after executing derivation script of " + f"'{short_name}' cannot be converted to target units '{units}'" + ) from exc return cube diff --git a/tests/integration/preprocessor/_derive/test_interface.py b/tests/integration/preprocessor/_derive/test_interface.py index 14ea1d6c9a..5a466f6028 100644 --- a/tests/integration/preprocessor/_derive/test_interface.py +++ b/tests/integration/preprocessor/_derive/test_interface.py @@ -27,10 +27,12 @@ def patched_derive(mocker): mocker.patch.object(_derive, 'logger', autospec=True) -def mock_all_derived_variables(returned_units): +def mock_all_derived_variables(returned_units, fail_unit_conversion=False): """Mock the :obj:`dict` containing all derived variables accordingly.""" cube = mock.create_autospec(Cube, instance=True) cube.units = returned_units + if fail_unit_conversion: + cube.convert_units.side_effect = [ValueError] calculate_function = mock.Mock(return_value=cube) derived_var = mock.Mock(name='DerivedVariable') derived_var.return_value.calculate = calculate_function @@ -127,7 +129,7 @@ def test_check_units_convertible(mock_cubes): @pytest.mark.usefixtures("patched_derive") def test_check_units_fail(mock_cubes): """Test units after derivation if derivation scripts returns None.""" - mock_all_derived_variables(Unit('kg')) + mock_all_derived_variables(Unit('kg'), fail_unit_conversion=True) with pytest.raises(ValueError) as err: derive(mock_cubes, SHORT_NAME, mock.sentinel.long_name, 'm', standard_name=mock.sentinel.standard_name) From 597daf7d09a6798ee3a56438ab55658fa0c8b9a2 Mon Sep 17 00:00:00 2001 From: Lisa Bock Date: Wed, 3 Jul 2024 14:24:34 +0200 Subject: [PATCH 02/13] New custom variable for tos uncertainty (#2470) --- .../cmor/tables/custom/CMOR_tosStderr.dat | 26 +++++++++++++++++++ tests/integration/cmor/test_table.py | 11 +++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 esmvalcore/cmor/tables/custom/CMOR_tosStderr.dat diff --git a/esmvalcore/cmor/tables/custom/CMOR_tosStderr.dat b/esmvalcore/cmor/tables/custom/CMOR_tosStderr.dat new file mode 100644 index 0000000000..31756d4cde --- /dev/null +++ b/esmvalcore/cmor/tables/custom/CMOR_tosStderr.dat @@ -0,0 +1,26 @@ +SOURCE: CMIP5 +!============ +variable_entry: tosStderr +!============ +modeling_realm: ocean +!---------------------------------- +! Variable attributes: +!---------------------------------- +standard_name: +units: K +cell_methods: time: mean +cell_measures: area: areacello +long_name: Sea Surface Temperature Error +comment: +!---------------------------------- +! Additional variable information: +!---------------------------------- +dimensions: longitude latitude time +out_name: tosStderr +type: real +valid_min: 0 +valid_max: +ok_min_mean_abs: 0 +ok_max_mean_abs: +!---------------------------------- +! diff --git a/tests/integration/cmor/test_table.py b/tests/integration/cmor/test_table.py index 385869bc5f..680e5b4c01 100644 --- a/tests/integration/cmor/test_table.py +++ b/tests/integration/cmor/test_table.py @@ -477,7 +477,7 @@ def test_get_variable_tasaga(self): self.assertEqual(var.units, 'K') def test_get_variable_ch4s(self): - """Get tas variable.""" + """Get ch4s variable.""" CustomInfo() var = self.variables_info.get_variable('Amon', 'ch4s') self.assertEqual(var.short_name, 'ch4s') @@ -485,6 +485,15 @@ def test_get_variable_ch4s(self): 'Atmosphere CH4 surface') self.assertEqual(var.units, '1e-09') + def test_get_variable_tosStderr(self): + """Get tosStderr variable.""" + CustomInfo() + var = self.variables_info.get_variable('Omon', 'tosStderr') + self.assertEqual(var.short_name, 'tosStderr') + self.assertEqual(var.long_name, + 'Sea Surface Temperature Error') + self.assertEqual(var.units, 'K') + @pytest.mark.parametrize( 'project,mip,short_name,frequency', From f9e6f46beab21b6cafd5c452792929ec853809e3 Mon Sep 17 00:00:00 2001 From: Emma Hogan Date: Wed, 3 Jul 2024 14:19:55 +0100 Subject: [PATCH 03/13] Update the release date and version number for v2.11.0 (#2474) --- CITATION.cff | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index c226e7a27c..dbe365840a 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -210,11 +210,11 @@ authors: given-names: Diego cff-version: 1.2.0 -date-released: 2024-06-20 +date-released: 2024-07-03 doi: "10.5281/zenodo.3387139" license: "Apache-2.0" message: "If you use this software, please cite it using these metadata." repository-code: "https://github.com/ESMValGroup/ESMValCore/" title: ESMValCore -version: "v2.11.0rc2" +version: "v2.11.0" ... From 80a8ee9f9a8ee265a4ea8ad00e0d2c4368fd853f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 4 Jul 2024 12:06:54 +0100 Subject: [PATCH 04/13] [Condalock] Update Linux condalock file (#2467) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 149 +++++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 72 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index 6a2af7b0f2..249f2fdbf3 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -9,17 +9,17 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed3 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda#cbbe59391138ea5ad3658c76912e147f https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda#b80f2f396ca2c28b8c14c437a4ed1e74 -https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.85.0-ha770c72_1.conda#012455a6eddcbf487ef0ddd1715f0b80 -https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.2-ha770c72_0.conda#8c924f0b7f3e064b1c954a08e7c32fba +https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.85.0-ha770c72_2.conda#a685407e4876ad2327fcfc0024b5e204 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.2.1-ha770c72_0.conda#b39b12d3809e4042f832b76192e0e7e8 https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda#dccc2d142812964fcc6abdc97b672dff https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgomp-13.2.0-h77fa898_11.conda#8c462ced2af33648195dc9459f331f31 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda#ae061a5ed5f05818acdf9adab72c146d https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-13.2.0-h77fa898_11.conda#0b3b218a596bb4c3854cc9ee799f94e5 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.19-h4ab18f5_0.conda#c6dedd5eab2236f4abb59ade9fb7fd44 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda#ca0fad6a41ddaef54a153b78eccb5037 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.23-h4ab18f5_0.conda#94d61ae2b2b701008a9d52ce6bbead27 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.28.1-hd590300_0.conda#dcde58ff9a1f30b0037a2315d1846d1f https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 @@ -31,12 +31,12 @@ https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-13.2.0-h3d2ce59_11.conda#c485da4fdb454539f852a90ae06e9bb7 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda#6456c2620c990cd8dde2428a27ba0bc5 https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda#ea25936bb4080d843790b586850f82b8 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.18-h36c2ea0_1.tar.bz2#c3788462a6fbddafdb413a9f9053e58d -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-13.2.0-hc0a3c3a_11.conda#eaa8ea74083fb4a78ae19e431e556003 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda#1cb187a157136398ddbaae90713e2498 https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.8.0-h166bdaf_0.tar.bz2#ede4266dc02e875fe1ea77b25dd43747 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda#b26e8aa824079e1be0294e7152ca4559 @@ -44,7 +44,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.cond https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda#57d7dc60e9325e3de37ff8dffd18e814 https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda#fcea371545eda051b6deafb24889fc69 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_0.conda#a41fa0e391cc9e0d6b78ac69ca047a6c +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda#b1e9d076f14e8d776213fd5047b4c3d9 https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/tzcode-2024a-h3f72095_0.conda#32146e34aaec3745a08b6f49af3f41b0 https://conda.anaconda.org/conda-forge/linux-64/xorg-inputproto-2.3.2-h7f98852_1002.tar.bz2#bcd1b3396ec6960cbc1d2855a9e60b2b @@ -58,10 +58,10 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007 https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae -https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.15-h88a6e22_0.conda#50eabf107100f8f929bc3246ea63fa08 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-h83b837d_6.conda#3e572eacd0ce99a59e1bb9c260ad5b20 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.16-h83b837d_2.conda#f40c698b4ea90f7fedd187c6639c818b -https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-h83b837d_6.conda#7995cb937bdac5913c8904fed6b3729d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.15-h816f305_1.conda#8ddd866d43ed25da840bc0a87a05abc1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-he027950_7.conda#11e5cb0b426772974f6416545baee0ce +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.16-he027950_3.conda#adbf0c44ca88a3cded175cd809a106b6 +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-he027950_7.conda#95611b325a9728ed68b8f7eef2dd3feb https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.1-h59595ed_0.conda#8c0f4f71f5a59ceb0c6fa9f51501066d @@ -77,17 +77,17 @@ https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.co https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-13.2.0-h69a702a_11.conda#4c3e460d6acf8e43e4ce8bf405187eb7 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda#f4ca84fbd6d06b0a052fb2d5b96dde41 https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda#18aa975d2094c34aef978060ae7da7d8 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe https://conda.anaconda.org/conda-forge/linux-64/libudunits2-2.2.28-h40f5838_3.conda#4bdace082e911a3e1f1f0b721bed5b56 -https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.15-h0b41bf4_0.conda#33277193f5b92bad9fdd230eb700929c +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda#151cba22b85a989c2d6ef9633ffee1e4 https://conda.anaconda.org/conda-forge/linux-64/libzip-1.10.1-h2629f0a_3.conda#ac79812548e7e8cf61f7b0abdef01d3b https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318b08df404f9c9be5712aaa5a6f0bb0 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 -https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.43-hcad00b1_0.conda#8292dea9e022d9610a11fce5e0896ed8 +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda#3914f7ac1761dce57102c72ca7c35d01 https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.16-he19d79f_0.conda#de1cf82e46578faf7de8c23efe5d7be4 @@ -98,13 +98,13 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_100 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.9-h2d549f9_2.conda#5a828631479163d88e419fd6841139c4 -https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.5-hc2324a3_1.conda#11d76bee958b1989bd1ac6ee7372ea6d +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.9-hd3d3696_3.conda#0498758c57870fbce948bab48c97ea0e +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-hef167b5_0.conda#54fe76ab3d0189acaef95156874db7f9 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca -https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.2-h659d440_0.conda#cd95826dbd331ed1be26bdf401432844 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.2-hf974151_0.conda#72724f6a78ecb15559396966226d5838 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.2-h8a4344b_1.conda#9c406bb3d4dac2b358873e6462496d09 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda#3eb5f16bcc8a02892199aa63555c731f https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_h413a1c8_0.conda#a356024784da6dfd4683dc5ecf45b155 https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 @@ -119,14 +119,14 @@ https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.13.0-hd2e6256_0.conda#18f9348f064632785d54dbd1db9344bb https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.46.0-h6d4b2fc_0.conda#77ea8dff5cf8550cc8f5629a6af56323 https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda#6bb8deb138f87c9d48320ac21b87e7a1 -https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-h8ee46fc_0.conda#077b6e8ad6a3ddb741fce2496dd01bec +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda#4a6d410296d7e39f00bacdee7df046e9 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda#def531a3ac77b7fb8c21d17bb5d0badb https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.11.1-pyhd8ed1ab_0.tar.bz2#15109c4977d39ad7aa3423f57243e286 https://conda.anaconda.org/conda-forge/linux-64/astroid-3.2.2-py312h7900ff3_0.conda#2acaebd0ea2aeaf38e996bda79545c0b https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa -https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h0cbf018_13.conda#15351eccac4eda2b5fd38bbbdae78bdf -https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-h360477d_2.conda#a820cb648906f7f30076c66dd46b1790 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-hb72ac1a_14.conda#64676cc50610171ec66083b82be93e52 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-h75ac8c9_3.conda#73e326edecae77a595af47ff7261f499 https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda#f27a24d46e3ea7b70a1f98e50c62508f https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda#45801a89533d3336a365284d93298e36 https://conda.anaconda.org/conda-forge/noarch/certifi-2024.6.2-pyhd8ed1ab_0.conda#8821ec1c8fcdc9e1d291d7b9f6e9968a @@ -147,15 +147,17 @@ https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.b https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.3-pyhd8ed1ab_0.conda#eae681f708bd52d9d172bd5c9af23898 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda#0e7e4388e9d5283e22b35a9443bdbcc9 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.0.5-pyhd8ed1ab_0.conda#8f325f63020af6f7acbe2c4cb4c920db https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h743c826_0.conda#12e6988845706b2cfbc3bc35c9a61a95 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.0-pyhff2d567_0.conda#ad6af3f92e71b1579ac2362b6cf29105 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.6.1-pyhff2d567_0.conda#996bf792cdb8c0ac38ff54b9fde56841 https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda#201db6c2d9a3c5e46573ac4cb2e92f4f https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.0-pyhd8ed1ab_0.tar.bz2#6b1f32359fc5d2ab7b491d0029bfffeb https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe +https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyhd8ed1ab_6.conda#2ed1fe4b9079da97c44cfe9c2e5078fd +https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda#c0cc1420498b17414d8617d0b9f506ca https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 @@ -164,7 +166,7 @@ https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py312h8572e83_1 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda#51bb7010fc86f70eee639b4bb7a894f5 https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.4-hfca40fe_0.conda#32ddb97f897740641d8d46a829ce1704 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda#1a2a0cd3153464fee6646f3dd6dad9b8 -https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_0.conda#f21c27f076a07907e70c49bb57bd0f20 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda#b8afb3e3cb3423cc445cf611ab95fdb0 https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.4.0-h2c329e2_0.conda#80030debaa84cfc31755d53742df3ca6 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 @@ -187,7 +189,7 @@ https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-py_1003.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_1.conda#405678b942f2481cecdb3e010f4925d9 https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.2.2-pyhd8ed1ab_0.conda#6f6cf28bf8e021933869bae3f84b8fc9 https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda#d3483c8fc2dc2cc3f5cf43e26d60cabf -https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.8-py312h98912ed_0.conda#3facaca6cc0f7988df3250efccd32da3 +https://conda.anaconda.org/conda-forge/linux-64/psutil-6.0.0-py312h9a8786e_0.conda#1aeffa86c55972ca4e88ac843eccedf2 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd3deb0d_0.tar.bz2#359eeb6536da0e687af562ed265ec263 https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.2-pyhd8ed1ab_0.tar.bz2#6784285c7e55cb7212efabc79e4c2883 https://conda.anaconda.org/conda-forge/noarch/pycodestyle-2.12.0-pyhd8ed1ab_0.conda#b9cc97b824a995fb231c377f61881bf8 @@ -204,7 +206,7 @@ https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda#3ee https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py312h98912ed_1.conda#e3fd78d8d490af1d84763b9fe3f2e552 https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda#8f70e36268dea8eb666ef14c29bd3cda https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.18.1-py312h4413252_0.conda#73da42918aaeb87d5618f82e2ac18d1f -https://conda.anaconda.org/conda-forge/noarch/setuptools-70.1.0-pyhd8ed1ab_0.conda#258e66f95f814d51ada2a1fe9274039b +https://conda.anaconda.org/conda-forge/noarch/setuptools-70.1.1-pyhd8ed1ab_0.conda#985e9e86e1b0fc75a74a9bfab9309ef7 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d @@ -235,26 +237,27 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30 https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda#49808e59df5535116f6878b2a820d6f4 https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda#1bb1ef9806a9a20872434f58b3e7fc1a https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-h9137712_5.conda#ea86de440f848596543ff58030e5272d -https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hf85b563_6.conda#845ddce9934691f5c34ad13d7313ba29 -https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.11.1-h91d86a7_1.conda#2dbab1d281b7e1da05eee544cbdc8af6 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-hf36ad8f_6.conda#8b0f1ad4238c94d032dcbfa4b84bcf5b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hb0abfc5_7.conda#b49afe12555befb53150e401d03264b3 +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.12.0-h830ed8b_0.conda#320d066f9cad598854f4af32c7c82931 https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 https://conda.anaconda.org/conda-forge/noarch/bleach-6.1.0-pyhd8ed1ab_0.conda#0ed9d7c0e9afa7c025807a9a8136ea3e -https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-h3faef2a_0.conda#f907bb958910dc404647326ca80c263e +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda#b6d90276c5aee9b4407dd94eb0cd40a8 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py312hf06ca03_0.conda#56b0ca764ce23cc54f3f7e2a7b970f6d -https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.4.0-hbdc6101_1.conda#0ba5a427a51923dcdfe1121115ac8293 +https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.4.1-hf8ad068_0.conda#1b7a01fd02d11efe0eb5a676842a7b7d https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 -https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.3-py312h9a8786e_0.conda#f01930d0afe8ac5f8062c98e6b8d1fd0 +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.4-py312h9a8786e_0.conda#b40224324679d1966a9fafbd602b28f3 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py312h98912ed_0.conda#a4fbffb84a54767266c69e3699078a00 https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/fire-0.6.0-pyhd8ed1ab_0.conda#e9ed10aa8fa1dd6782940b95c942a6ae https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.0-pyhd8ed1ab_0.conda#2bae9d19ae945a79d8bb32d3cab9109b https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.0-py312h9a8786e_0.conda#8490346e9d5efd7a6869582aa0c95b25 https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_1.conda#358c17429c97883b2cb9ab5f64bc161b +https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda#7e1729554e209627636a0f6fabcdd115 -https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-7.2.0-pyha770c72_0.conda#e1d9f6dc77209defc283bdf61588e968 +https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.0.0-pyha770c72_0.conda#3286556cdd99048d198f72c3f6f69103 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda#c5d3907ad8bd7bf557521a1833cf7e6d https://conda.anaconda.org/conda-forge/noarch/isodate-0.6.1-pyhd8ed1ab_0.tar.bz2#4a62c93c1b5c0b920508ae3fd285eaf5 https://conda.anaconda.org/conda-forge/noarch/isort-5.13.2-pyhd8ed1ab_0.conda#1d25ed2b95b92b026aaa795eabec8d91 @@ -265,17 +268,17 @@ https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1 https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2#8d67904973263afd2985ba56aa2d6bb4 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda#4b31699e0ec5de64d5896e580389c9a1 https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h119a65a_9.conda#cfebc557e54905dadc355c0e9f003004 -https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.0-hac7e632_1003.conda#50c389a09b6b7babaef531eb7cb5e0ca +https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.0-ha6d2627_1004.conda#df069bea331c8486ac21814969301c1f https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda#8dabe607748cb3d7002ad73cd06f1325 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda#b083767b6c877e24ee597d93b87ab838 https://conda.anaconda.org/conda-forge/linux-64/lxml-5.2.2-py312hb90d8a5_0.conda#da3e0a20f8eb75072ad036198c37be61 https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_0.conda#779345c95648be40d22aaa89de7d4254 -https://conda.anaconda.org/conda-forge/linux-64/mypy-1.10.0-py312h9a8786e_0.conda#644f1c538810d1f250ef0fc844f3822d +https://conda.anaconda.org/conda-forge/linux-64/mypy-1.10.1-py312h9a8786e_0.conda#35504aad41d76808fa379bee8cd6882e https://conda.anaconda.org/conda-forge/noarch/nested-lookup-0.2.25-pyhd8ed1ab_1.tar.bz2#2f59daeb14581d41b1e2dda0895933b2 https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda#dfe0528d0f1c16c1f7c528ea5536ab30 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 -https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312hdcec9eb_0.conda#425bb325f970e57a047ac57c4586489d +https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda#b1325cda3f250f9f842180607054e6ed https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda#f586ac1e56c8638b64f9c8122a7b8a67 https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.3-h8e811e2_0.conda#e4d52462da124ed3792472f95a36fc2a https://conda.anaconda.org/conda-forge/linux-64/proj-9.4.1-hb784bbd_0.conda#c38c5246d064ef16eba065d93c46f1c6 @@ -288,21 +291,20 @@ https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.co https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.3.0-pyhd8ed1ab_0.conda#8662629d9a05f9cff364e31ca106c1ac https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_0.conda#52d648bd608f5737b123f510bb5514b5 https://conda.anaconda.org/conda-forge/noarch/url-normalize-1.4.3-pyhd8ed1ab_0.tar.bz2#7c4076e494f0efe76705154ac9302ba6 -https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda#92cdb6fe54b78739ad70637e4f0deb07 -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.2-pyhd8ed1ab_0.conda#7d36e7a485ea2f5829408813bdbbfb38 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.26.3-pyhd8ed1ab_0.conda#284008712816c64c85bf2b7fa9f3b264 https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.5-hac6953d_0.conda#63b80ca78d29380fe69e69412dcbe4ac https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h7f98852_0.tar.bz2#e77615e5141cad5a2acaa043d1cf0ca5 https://conda.anaconda.org/conda-forge/noarch/yamale-5.2.1-pyhca7485f_0.conda#c089f90a086b6214c5606368d0d3bad0 https://conda.anaconda.org/conda-forge/noarch/yamllint-1.35.1-pyhd8ed1ab_0.conda#a1240b99a7ccd953879dc63111823986 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.5.10-h679ed35_3.conda#8cb40f80d08389f6aaf68cf86581ed02 -https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.6.0-hf1915f5_1.conda#fd11ea65ceb397f9587b1d88a4329d73 -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.5.0-h94269e2_4.conda#f364272cb4c2f4ce2341067107b82865 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.5.10-h44b787d_4.conda#64de9622ebca15f36787602bdb8b31f3 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hdb0d106_1.conda#a297ffb4b505f51d0f58352c5c13971b +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.6.0-he3f277c_1.conda#8a10bb068b138dd473300b5fe34a1865 https://conda.anaconda.org/conda-forge/noarch/cattrs-23.2.3-pyhd8ed1ab_0.conda#91fc4700dcce4a46d439900a132fe4e5 https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py312hbcc2302_0.conda#d6cbf583b33e9473ca9129ad21936507 -https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-hac7e632_2.conda#6e553df297f6e64668efb54302e0f139 +https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda#84ec3f5b46f3076be49f2cf3f1cfbf02 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.3-hf7fa9e8_1.conda#8ff4fa3ab0b63dc5b214a68839499e41 https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda#f5126317dd0ce0ba26945e411ecc6960 -https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-7.2.0-hd8ed1ab_0.conda#3de0087b2b86443cfae650dea6ecec6f +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.0.0-hd8ed1ab_0.conda#5f8c8ebbe6413a7838cf6ecf14d5d31b https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda#a0e4efb5f35786a05af4809a2fb1f855 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.3-hee9dde6_1.conda#c5b7b29e2b66107553d0366538257a51 https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.25.0-h2736e30_0.conda#1bbc13a65b92eafde06dbdf0ef3658cd @@ -311,7 +313,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h6fbd9c4_7.c https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f https://conda.anaconda.org/conda-forge/linux-64/poppler-24.04.0-hb6cd0d7_0.conda#d19eed746748f1d44b575662f2bcfe95 https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba -https://conda.anaconda.org/conda-forge/noarch/pylint-3.2.3-pyhd8ed1ab_0.conda#206e71eea41f956fd1bb606d6b0c87fd +https://conda.anaconda.org/conda-forge/noarch/pylint-3.2.5-pyhd8ed1ab_0.conda#40754d4950fb1567f358d635de8a5f19 https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py312h5d05ceb_7.conda#b53ddc25da04839cc62b0b158a7ecb38 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda#c54c0107057d67ddf077751339ec2c63 https://conda.anaconda.org/conda-forge/noarch/pytest-env-1.1.3-pyhd8ed1ab_0.conda#1dbdf019d740419852c4a7803fff49d9 @@ -320,18 +322,17 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-mock-3.14.0-pyhd8ed1ab_0.co https://conda.anaconda.org/conda-forge/noarch/pytest-mypy-0.10.3-pyhd8ed1ab_0.conda#37fd5d5468805e017650a395ca779f38 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda#b39568655c127a9c4a44d178ac99b6d0 https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda#44d14ef95495b3d4438f28998e0296a9 -https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af -https://conda.anaconda.org/conda-forge/noarch/types-requests-2.32.0.20240602-pyhd8ed1ab_0.conda#de4dfa59fdd7513b1d69c2b2d9f1acc8 https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h8572e83_4.conda#52c9e25ee0a32485a102eeecdb7eef52 https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 -https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.26.12-h8bc9c4d_0.conda#ec9824a9e18425707af48d21820970f1 -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.10.0-h00ab1b0_1.conda#1e63d3866554a4d2e3d1cba5f21a2841 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py312h5b18bf6_1.conda#27fe79bbc4dd3767be554fb171df362c +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.26.12-he940a02_1.conda#e77a416fb3b4952f4a7aa899e2c9111a +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.11.0-ha67cba7_1.conda#f03bba57b85a5b3ac443a871787fc429 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312h085067d_0.conda#864d9e92f012bcc49650428d5343c98a https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py312h8572e83_0.conda#12c6a831ef734f0b2dd4caff514cbb7f https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.6.2-pyhd8ed1ab_0.conda#048ca0ec2cd1f3995d2d36dec0efd99a https://conda.anaconda.org/conda-forge/noarch/identify-2.5.36-pyhd8ed1ab_0.conda#ba68cb5105760379432cebc82b45af40 -https://conda.anaconda.org/conda-forge/noarch/ipython-8.25.0-pyh707e725_0.conda#98466a37c08f3bdbb500786271859517 +https://conda.anaconda.org/conda-forge/noarch/ipython-8.26.0-pyh707e725_0.conda#f64d3520d5d00321c10f4dabb5b903f3 https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda#9518ab7016cf4564778aef08b6bd8792 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.22.0-pyhd8ed1ab_0.conda#b9661a4b1200d6bc7d8a4cdafdc91468 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda#3cdbb2fa84490e5fd44c9f9806c0d292 @@ -339,17 +340,17 @@ https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.25.0-h https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.1-nompi_h228c76a_104.conda#91bc3ac73308181d55a09d9e4aeb4496 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py312hfb8ada1_0.conda#d0745ae74c2b26571b692ddde112eebb https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h84a9a3c_0.conda#7c51e110b2f059c0843269d3324e4b22 -https://conda.anaconda.org/conda-forge/noarch/pooch-1.8.2-pyhd8ed1ab_0.conda#8dab97d8a9616e07d779782995710aed https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e https://conda.anaconda.org/conda-forge/noarch/pytest-html-4.1.1-pyhd8ed1ab_0.conda#4d2040212307d18392a2687772b3a96d -https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda#c6089540fed51a9a829aa19590fa925b -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.13.1-py312hc2bc53b_0.conda#864b2399a9c998e17d1a9a4e0c601285 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py312hc2bc53b_0.conda#d526782bc49958ab75fe6fb505647b54 https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.4-py312ha5b4d35_1.conda#1248b799f811d8ea215de88f53ae7ffc -https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-hf74b5d1_5.conda#3d82493d6b434cc47fc9302f3cc11a09 -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.1-pyhd8ed1ab_0.conda#0f8e0831bbf38d83973438ce9af9af9a +https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda#e804c43f58255e977093a2298e442bb8 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-h0f5bab0_6.conda#52029b9a8f71290c8c82ce9f4da336a7 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.10.0-h29b5301_1.conda#bb35c23b178fc17b9e4458766f91da7f +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.2-pyhd8ed1ab_0.conda#e704d0474c0155db9632bd740b6c9d17 https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py312h085067d_5.conda#b40cdf87aee69ccf162022579cb99afb https://conda.anaconda.org/conda-forge/noarch/distributed-2024.6.2-pyhd8ed1ab_0.conda#eecb4c188864376d2b45a5afc4bcb2fa -https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.35.0-he84ddb8_0.conda#2d01dfbe537478e7a1a495b9639edd45 +https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.36.0-h762793a_0.conda#6d8c86d0368625b6503d696db70ea041 https://conda.anaconda.org/conda-forge/linux-64/esmf-8.6.1-nompi_h0a5817f_2.conda#e23c62f75f67166cf4ca137fc8bcdce7 https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.1-hadf69e7_0.conda#73fc255d740d23da4f554b58dc4909fd @@ -359,42 +360,46 @@ https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.1-nompi_py312h1ef7fb6_101.conda#c67cc8e3a34c5cb8920c79918112e96f https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.7.1-pyha770c72_0.conda#724bc4489c1174fc8e3233b0624fa51f https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py312h085067d_2.conda#1e88f5023d2af511e48e4489b45b9f9b +https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 +https://conda.anaconda.org/conda-forge/noarch/types-requests-2.32.0.20240622-pyhd8ed1ab_0.conda#41d54e5cce704c1854afdd37f3ee7036 https://conda.anaconda.org/conda-forge/noarch/xarray-2024.6.0-pyhd8ed1ab_1.conda#a6775bba72ade3fd777ccac04902202c https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.23.0-py312h1d6d2e6_1.conda#6392d3ce615ab0f32bc39b07f8f4c300 -https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.1-pyhd8ed1ab_0.conda#9b1ddfcc35856fbd69e193b945b7d7f2 +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.2-pyhd8ed1ab_0.conda#395b23e1e49b582952a9f2f65a8d6f70 https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.5-pyhd8ed1ab_0.conda#abfb434fb6654f83d740428863ec85a8 -https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a https://conda.anaconda.org/conda-forge/noarch/esmpy-8.6.1-pyhc1e730c_0.conda#25a9661177fd68bfdb4314fd658e5c3b https://conda.anaconda.org/conda-forge/linux-64/graphviz-11.0.0-hc68bbd7_0.conda#52a531ef95358086a56086c45d97ab75 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-16.1.0-h9102155_9_cpu.conda#b0b7ce228075d1411a2ccb7e21f1b122 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-16.1.0-h4a673ee_10_cpu.conda#c737ba625b762cc4cbe7c68d27e8d2e1 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369 -https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-1.7.0-py312h085067d_2.conda#158bdc63daac04bcc2991f6e4a5fec5e -https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.24.1-h73c5a7c_0.conda#edd614d10aede2a6e8643784992943e1 +https://conda.anaconda.org/conda-forge/noarch/pooch-1.8.2-pyhd8ed1ab_0.conda#8dab97d8a9616e07d779782995710aed +https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-1.7.1-py312h085067d_0.conda#5f96475aa30552797f8099ccee24feaa +https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda#c6089540fed51a9a829aa19590fa925b +https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.24.1-h2aae180_1.conda#85c4bf16889383d577898538edd85bff +https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a https://conda.anaconda.org/conda-forge/noarch/iris-3.9.0-pyha770c72_0.conda#efaf150eb009f04efa58f1401c767192 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-16.1.0-hac33072_9_cpu.conda#e5c246be982ab7cc133b93870b264a25 -https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.9.0-h471f4ab_7.conda#cc5204b282d79894ac8e441e2a82ebbd -https://conda.anaconda.org/conda-forge/linux-64/libparquet-16.1.0-h6a7eafb_9_cpu.conda#4b42538e4ec9092564866d22d1120bf4 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-16.1.0-hac33072_10_cpu.conda#1283e2eecd89d1e06c33d004451a4a9e +https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.9.1-he176cbe_2.conda#6609176ac1581c84c79115cb18f899a6 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-16.1.0-h6a7eafb_10_cpu.conda#a65776bbdae47c8b725f77dbed54c5d2 https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda#e2d2abb421c13456a9a9f80272fdf543 -https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.7.1-pyhd8ed1ab_0.conda#447d61cb83a9c3a3916fba1bc3cff0bf -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-16.1.0-py312h70856f0_3_cpu.conda#7f93c5a99083e2a26a301db64f44acb8 +https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.8.0-pyhd8ed1ab_0.conda#fba377622e74ee0bbeb8ccae9fa593d3 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-16.1.0-py312h70856f0_4_cpu.conda#6971b04df592bd625eebd5bfb1d9fc93 https://conda.anaconda.org/conda-forge/linux-64/pydot-2.0.0-py312h7900ff3_0.conda#a3628f9a0ca8573314dc6f94f40a0419 -https://conda.anaconda.org/conda-forge/linux-64/gdal-3.9.0-py312h86af8fa_7.conda#0ccfa8db498a5983d6081a454811e497 +https://conda.anaconda.org/conda-forge/linux-64/gdal-3.9.1-py312h86af8fa_2.conda#91aa4b01577a1fd9f1bd99b817b1d967 https://conda.anaconda.org/conda-forge/noarch/iris-grib-0.19.0-pyhd8ed1ab_0.conda#6582121c3b731b3715cd021f6a42665e -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-16.1.0-hac33072_9_cpu.conda#45960fd843ea7b95d907e8aa1f49337d +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-16.1.0-hac33072_10_cpu.conda#49d2f8911e30844309aaf1fe221f0d66 https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.4-hd8ed1ab_1.conda#37cec2cf68f4c09563d8bc833791096b https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.6-py312h32ad294_3.conda#6da62c5c06a6416e0130220e4f418bb0 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-16.1.0-h7e0c224_9_cpu.conda#b1cebbb3160bbafc6cbf7eb79354f32a +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-16.1.0-h7e0c224_10_cpu.conda#d3aa33ea25ffdc1147134b202c84158d https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.4-hd8ed1ab_1.conda#ab83e3b9ca2b111d8f332e9dc8b2170f -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-16.1.0-py312h9cebb41_3.conda#185d19647c3f7ddbdad8331911042763 -https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.5-pyhd8ed1ab_0.conda#9181acab26040bf904cf2c6440ca2d19 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-16.1.0-py312h9cebb41_4.conda#2097b6ae7186e10c9aab1228636b804f +https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.6-pyhd8ed1ab_0.conda#77ed2262e85230e5b870f505ed4922c8 https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda https://conda.anaconda.org/conda-forge/noarch/dask-2024.6.2-pyhd8ed1ab_0.conda#0af43d16240caf6aedefd7a4041ae64c https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.10.0-pyhd8ed1ab_0.conda#a5ccce1a87da81d6c690cd11ae0687a2 https://conda.anaconda.org/conda-forge/noarch/autodocsumm-0.2.6-pyhd8ed1ab_0.tar.bz2#4409dd7e06a62c3b2aa9e96782c49c6d https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.4-pyhd8ed1ab_0.conda#9dc80eaeff56fb67dbf4f871b81bc13a -https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.3-pyhd8ed1ab_0.conda#55e445f4fcb07f2471fb0e1102d36488 +https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda#c7c50dd5192caa58a05e6a4248a27acb https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda#611a35a27914fac3aa37611a6fe40bb5 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda#d7e4954df0d3aea2eacc7835ad12671d https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda#7e1e7437273682ada2ed5e9e9714b140 From 495176a7a14e9cb284e0a76d0c9dac22213615e4 Mon Sep 17 00:00:00 2001 From: Valeriu Predoi Date: Mon, 8 Jul 2024 13:55:49 +0100 Subject: [PATCH 05/13] [Merge after v2.11.0 Release] Remove support for Python 3.9 (#2447) Co-authored-by: Bouwe Andela --- .github/workflows/install-from-conda.yml | 4 ++-- .github/workflows/install-from-condalock-file.yml | 2 +- .github/workflows/install-from-pypi.yml | 4 ++-- .github/workflows/install-from-source.yml | 4 ++-- .github/workflows/run-tests-monitor.yml | 4 ++-- .github/workflows/run-tests.yml | 4 ++-- doc/quickstart/install.rst | 2 +- environment.yml | 3 +-- setup.cfg | 2 +- setup.py | 3 +-- .../preprocessor/_regrid_esmpy/test_regrid_esmpy.py | 10 ---------- 11 files changed, 15 insertions(+), 27 deletions(-) diff --git a/.github/workflows/install-from-conda.yml b/.github/workflows/install-from-conda.yml index 951a91328a..88e78619ea 100644 --- a/.github/workflows/install-from-conda.yml +++ b/.github/workflows/install-from-conda.yml @@ -39,7 +39,7 @@ jobs: runs-on: "ubuntu-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] # fail-fast set to False allows all other tests # in the workflow to run regardless of any fail fail-fast: false @@ -75,7 +75,7 @@ jobs: runs-on: "macos-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] architecture: ["x64"] # need to force Intel, arm64 builds have issues fail-fast: false name: OSX Python ${{ matrix.python-version }} diff --git a/.github/workflows/install-from-condalock-file.yml b/.github/workflows/install-from-condalock-file.yml index 3838387fa8..fbc4a71903 100644 --- a/.github/workflows/install-from-condalock-file.yml +++ b/.github/workflows/install-from-condalock-file.yml @@ -29,7 +29,7 @@ jobs: runs-on: "ubuntu-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] fail-fast: false name: Linux Python ${{ matrix.python-version }} steps: diff --git a/.github/workflows/install-from-pypi.yml b/.github/workflows/install-from-pypi.yml index cd49eed089..1e326c89eb 100644 --- a/.github/workflows/install-from-pypi.yml +++ b/.github/workflows/install-from-pypi.yml @@ -39,7 +39,7 @@ jobs: runs-on: "ubuntu-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] # fail-fast set to False allows all other tests # in the workflow to run regardless of any fail fail-fast: false @@ -77,7 +77,7 @@ jobs: runs-on: "macos-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] architecture: ["x64"] # need to force Intel, arm64 builds have issues fail-fast: false name: OSX Python ${{ matrix.python-version }} diff --git a/.github/workflows/install-from-source.yml b/.github/workflows/install-from-source.yml index a4aa9b8e01..7cb8c7d629 100644 --- a/.github/workflows/install-from-source.yml +++ b/.github/workflows/install-from-source.yml @@ -37,7 +37,7 @@ jobs: runs-on: "ubuntu-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] fail-fast: false name: Linux Python ${{ matrix.python-version }} steps: @@ -74,7 +74,7 @@ jobs: runs-on: "macos-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] architecture: ["x64"] # need to force Intel, arm64 builds have issues fail-fast: false name: OSX Python ${{ matrix.python-version }} diff --git a/.github/workflows/run-tests-monitor.yml b/.github/workflows/run-tests-monitor.yml index 561516a3e2..160bdd2850 100644 --- a/.github/workflows/run-tests-monitor.yml +++ b/.github/workflows/run-tests-monitor.yml @@ -22,7 +22,7 @@ jobs: runs-on: "ubuntu-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] fail-fast: false name: Linux Python ${{ matrix.python-version }} steps: @@ -55,7 +55,7 @@ jobs: runs-on: "macos-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] architecture: ["x64"] # need to force Intel, arm64 builds have issues fail-fast: false name: OSX Python ${{ matrix.python-version }} diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 9cf1d6308b..ac294e9f44 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -39,7 +39,7 @@ jobs: runs-on: "ubuntu-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] fail-fast: false name: Linux Python ${{ matrix.python-version }} steps: @@ -73,7 +73,7 @@ jobs: runs-on: "macos-latest" strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] architecture: ["x64"] # need to force Intel, arm64 builds have issues fail-fast: false name: OSX Python ${{ matrix.python-version }} diff --git a/doc/quickstart/install.rst b/doc/quickstart/install.rst index 4c9305dec7..7ef5015fe3 100644 --- a/doc/quickstart/install.rst +++ b/doc/quickstart/install.rst @@ -22,7 +22,7 @@ and install ESMValCore into it with a single command: .. code-block:: bash - conda create --name esmvalcore -c conda-forge esmvalcore 'python=3.10' + conda create --name esmvalcore -c conda-forge esmvalcore Don't forget to activate the newly created environment after the installation: diff --git a/environment.yml b/environment.yml index 8796a8fa4e..6ccab6b155 100644 --- a/environment.yml +++ b/environment.yml @@ -18,7 +18,6 @@ dependencies: - fire - geopy - humanfriendly - - importlib_metadata # required for Python < 3.10 - iris >=3.9.0 - iris-esmf-regrid >=0.10.0 # github.com/SciTools-incubator/iris-esmf-regrid/pull/342 - iris-grib @@ -37,7 +36,7 @@ dependencies: - psutil - py-cordex - pybtex - - python >=3.9 + - python >=3.10 - python-stratify >=0.3 - pyyaml - requests diff --git a/setup.cfg b/setup.cfg index 3bf09d26f9..e558e6860e 100644 --- a/setup.cfg +++ b/setup.cfg @@ -36,7 +36,7 @@ include_trailing_comma = true [mypy] # see mypy.readthedocs.io/en/stable/command_line.html -python_version = 3.9 +python_version = 3.12 ignore_missing_imports = True files = esmvalcore, tests diff --git a/setup.py b/setup.py index d1d6e49b55..1964fad345 100755 --- a/setup.py +++ b/setup.py @@ -39,7 +39,6 @@ 'fire', 'geopy', 'humanfriendly', - "importlib_metadata;python_version<'3.10'", 'iris-grib', 'isodate', 'jinja2', @@ -218,9 +217,9 @@ def read_description(filename): 'Natural Language :: English', 'Operating System :: POSIX :: Linux', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', 'Topic :: Scientific/Engineering', 'Topic :: Scientific/Engineering :: Atmospheric Science', 'Topic :: Scientific/Engineering :: GIS', diff --git a/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py b/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py index 371ab49684..44f138d68a 100644 --- a/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py +++ b/tests/unit/preprocessor/_regrid_esmpy/test_regrid_esmpy.py @@ -1,5 +1,4 @@ """Unit tests for the esmvalcore.preprocessor._regrid_esmpy module.""" -import sys from unittest import mock import cf_units @@ -381,9 +380,6 @@ def test_coords_iris_to_esmpy_2d_non_circular(self): self.assert_array_equal(esmpy_lon_corners, self.expected_esmpy_lon_corners) - @pytest.mark.skipif(sys.version_info.major == 3 - and sys.version_info.minor == 9, - reason="bug in mock.py for Python 3.9.0 and 3.9.1") def test_get_grid_circular(self): """Test building of ESMF grid from iris cube circular longitude.""" expected_get_coords_calls = [ @@ -405,9 +401,6 @@ def test_get_grid_circular(self): mg.add_item.assert_called_once_with(mock.sentinel.gi_mask, mock.sentinel.sl_center) - @pytest.mark.skipif(sys.version_info.major == 3 - and sys.version_info.minor == 9, - reason="bug in mock.py for Python 3.9.0 and 3.9.1") def test_get_grid_non_circular(self): """Test building of ESMF grid from iris cube non circular longitude.""" expected_get_coords_calls = [ @@ -465,9 +458,6 @@ def test_is_lon_circular_2d_aux_coords_non_circ(self): @mock.patch('esmvalcore.preprocessor._regrid_esmpy.esmpy.Grid', MockGrid) @mock.patch('esmvalcore.preprocessor._regrid_esmpy.esmpy.Field') - @pytest.mark.skipif(sys.version_info.major == 3 - and sys.version_info.minor == 9, - reason="bug in mock.py for Python 3.9.0 and 3.9.1") def test_cube_to_empty_field(self, mock_field): """Test building of empty field from iris cube.""" field = cube_to_empty_field(self.cube) From 6b4e3fb729b561fd7333391049cd57120c20e5fe Mon Sep 17 00:00:00 2001 From: rhaegar325 <65888230+rhaegar325@users.noreply.github.com> Date: Tue, 9 Jul 2024 11:19:04 +1000 Subject: [PATCH 06/13] on-the-fly cmoriser for ACCESS native data (#2430) Co-authored-by: Yousong Zeng Co-authored-by: Romain Beucher Co-authored-by: Manuel Schlund <32543114+schlunma@users.noreply.github.com> --- .zenodo.json | 5 + CITATION.cff | 5 + doc/quickstart/find_data.rst | 58 +++ esmvalcore/cmor/_fixes/access/__init__.py | 0 esmvalcore/cmor/_fixes/access/_base_fix.py | 29 ++ .../cmor/_fixes/access/access_esm1_5.py | 127 ++++++ esmvalcore/config-developer.yml | 11 + .../config/extra_facets/access-mappings.yml | 68 +++ .../cmor/_fixes/access/__init__.py | 0 .../cmor/_fixes/access/test_access_esm1_5.py | 412 ++++++++++++++++++ .../cmor/_fixes/test_data/access_native.nc | Bin 0 -> 253617 bytes 11 files changed, 715 insertions(+) create mode 100644 esmvalcore/cmor/_fixes/access/__init__.py create mode 100644 esmvalcore/cmor/_fixes/access/_base_fix.py create mode 100644 esmvalcore/cmor/_fixes/access/access_esm1_5.py create mode 100644 esmvalcore/config/extra_facets/access-mappings.yml create mode 100644 tests/integration/cmor/_fixes/access/__init__.py create mode 100644 tests/integration/cmor/_fixes/access/test_access_esm1_5.py create mode 100644 tests/integration/cmor/_fixes/test_data/access_native.nc diff --git a/.zenodo.json b/.zenodo.json index bb00d5471d..f0997c6467 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -204,6 +204,11 @@ { "affiliation": "DLR, Germany", "name": "Cammarano, Diego" + }, + { + "affiliation": "ACCESS-NRI, Australia", + "name": "Yousong, Zeng", + "orcid": "0000-0002-8385-5367" } ], "description": "ESMValCore: A community tool for pre-processing data from Earth system models in CMIP and running analysis scripts.", diff --git a/CITATION.cff b/CITATION.cff index dbe365840a..218c816439 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -209,6 +209,11 @@ authors: family-names: Cammarano given-names: Diego + affiliation: "ACCESS-NRI, Australia" + family-names: Yousong + given-names: Zeng + orcid: "https://orcid.org/0000-0002-8385-5367" + cff-version: 1.2.0 date-released: 2024-07-03 doi: "10.5281/zenodo.3387139" diff --git a/doc/quickstart/find_data.rst b/doc/quickstart/find_data.rst index 5692a9f0b1..cc2c87dfeb 100644 --- a/doc/quickstart/find_data.rst +++ b/doc/quickstart/find_data.rst @@ -564,6 +564,64 @@ explained in :ref:`extra_facets`, and which content is :download:`available here `. These multi-variable files must also undergo some data selection. +.. _read_access-esm: + +ACCESS-ESM +^^^^^^^^^^ + +ESMValTool can read native `ACCESS-ESM `__ +model output. + +.. warning:: + + This is the first version of ACCESS-ESM CMORizer for ESMValCore. Currently, + Supported variables: ``pr``, ``ps``, ``psl``, ``rlds``, ``tas``, ``ta``, ``va``, + ``ua``, ``zg``, ``hus``, ``clt``, ``rsus``, ``rlus``. + +The default naming conventions for input directories and files for ACCESS output are + +* input directories: ``{institute}/{sub_dataset}/{exp}/{modeling_realm}/netCDF`` +* input files: ``{sub_dataset}.{special_attr}-*.nc`` + +.. hint:: + + We only provide one default `input_dir` since this is how ACCESS-ESM native data was + stored on NCI. Users can modify this path in the :ref:`config-developer` to match their local file structure. + + +Thus, example dataset entries could look like this: + +.. code-block:: yaml + + dataset: + - {project: ACCESS, mip: Amon, dataset:ACCESS_ESM1_5, sub_dataset: HI-CN-05, + exp: history, modeling_realm: atm, special_attr: pa, start_year: 1986, end_year: 1986} + + +Similar to any other fix, the ACCESS-ESM fix allows the use of :ref:`extra +facets`. +By default, the file :download:`access-mappings.yml +` is used for that +purpose. +For some variables, extra facets are necessary; otherwise ESMValCore cannot +read them properly. +Supported keys for extra facets are: + +==================== ====================================== ================================= +Key Description Default value if not specified +==================== ====================================== ================================= +``raw_name`` Variable name of the variable in the CMOR variable name of the + raw input file corresponding variable +``modeling_realm`` Realm attribute include `atm`, `ice` No default (needs to be + and `oce` specified in extra facets or + recipe if default DRS is used) +```special_attr`` A special attribute in the filename No default + `ACCESS-ESM` raw data, it's related to + frquency of raw data +``sub_dataset`` Part of the ACCESS-ESM raw dataset No default + root, need to specify if you want to + use the cmoriser +==================== ====================================== ================================= .. _data-retrieval: diff --git a/esmvalcore/cmor/_fixes/access/__init__.py b/esmvalcore/cmor/_fixes/access/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/esmvalcore/cmor/_fixes/access/_base_fix.py b/esmvalcore/cmor/_fixes/access/_base_fix.py new file mode 100644 index 0000000000..659fffd364 --- /dev/null +++ b/esmvalcore/cmor/_fixes/access/_base_fix.py @@ -0,0 +1,29 @@ +"""Fix base classes for ACCESS-ESM on-the-fly CMORizer.""" + +import logging + +from iris.cube import CubeList + +from esmvalcore.cmor._fixes.native_datasets import NativeDatasetFix + +logger = logging.getLogger(__name__) + + +class AccessFix(NativeDatasetFix): + """Fixes functions.""" + + def fix_coord_system(self, cube): + """Delete coord_system to make CubeList able to merge.""" + for dim in cube.dim_coords: + if dim.coord_system is not None: + cube.coord(dim.standard_name).coord_system = None + + def get_cubes_from_multivar(self, cubes): + """Get cube before calculate from multiple variables.""" + name_list = self.extra_facets.get('raw_name', + self.vardef.short_name) + + data_list = [] + for name in name_list: + data_list.append(self.get_cube(cubes, name)) + return CubeList(data_list) diff --git a/esmvalcore/cmor/_fixes/access/access_esm1_5.py b/esmvalcore/cmor/_fixes/access/access_esm1_5.py new file mode 100644 index 0000000000..6b8bc662e7 --- /dev/null +++ b/esmvalcore/cmor/_fixes/access/access_esm1_5.py @@ -0,0 +1,127 @@ +"""On-the-fly CMORizer for ACCESS-ESM.""" +import logging + +from iris.cube import CubeList + +from ._base_fix import AccessFix + +logger = logging.getLogger(__name__) + + +class AllVars(AccessFix): + """Fixes for all variables.""" + + def fix_metadata(self, cubes): + """Fix metadata. + + Parameters + ---------- + cubes : iris.cube.CubeList + Input cubes. + + Returns + ------- + iris.cube.CubeList + """ + if len(cubes) == 1: + cube = cubes[0] + else: + cube = self.get_cube(cubes) + + # Fix coordinates + self.fix_scalar_coords(cube) + self.fix_var_metadata(cube) + self.fix_lon_metadata(cube) + self.fix_lat_metadata(cube) + + # Fix coordinate 'height' + if 'height_0' in [var.var_name for var in cube.coords()]: + self.fix_height_metadata(cube) + # Fix coordinate 'pressure' + if 'pressure' in [var.var_name for var in cube.coords()]: + self.fix_plev_metadata(cube, coord='pressure') + + # Fix coord system + self.fix_coord_system(cube) + + return CubeList([cube]) + + +class Rlus(AccessFix): + """Fixes for Rlus.""" + + def fix_rlus_data(self, cubes): + """Fix rlus data.""" + return cubes[0] - cubes[1] + cubes[2] - cubes[3] + + def fix_metadata(self, cubes): + """Fix metadata. + + Parameters + ---------- + cubes : iris.cube.CubeList + Input cubes. + + Returns + ------- + iris.cube.CubeList + """ + cubes = self.get_cubes_from_multivar(cubes) + + cube = self.fix_rlus_data(cubes) + + return CubeList([cube]) + + +class Rsus(AccessFix): + """Fixes for Rsus.""" + + def fix_rsus_data(self, cubes): + """Fix rsus data.""" + return cubes[0] - cubes[1] + + def fix_metadata(self, cubes): + """Fix metadata. + + Parameters + ---------- + cubes : iris.cube.CubeList + Input cubes. + + Returns + ------- + iris.cube.CubeList + """ + cubes = self.get_cubes_from_multivar(cubes) + + cube = self.fix_rsus_data(cubes) + + return CubeList([cube]) + + +class Tas(AccessFix): + """Fixes for Rsus.""" + + def fix_metadata(self, cubes): + """Fix metadata. + + Parameters + ---------- + cubes : iris.cube.CubeList + Input cubes. + + Returns + ------- + iris.cube.CubeList + """ + cube = self.get_cube(cubes) + + self.fix_height_metadata(cube) + self.fix_height_value(cube) + + return CubeList([cube]) + + def fix_height_value(self, cube): + """Fix height value to make it comparable to other dataset.""" + if cube.coord('height').points[0] != 2: + cube.coord('height').points = [2] diff --git a/esmvalcore/config-developer.yml b/esmvalcore/config-developer.yml index 9d5f1bc62f..c81324142a 100644 --- a/esmvalcore/config-developer.yml +++ b/esmvalcore/config-developer.yml @@ -194,3 +194,14 @@ CESM: output_file: '{project}_{dataset}_{case}_{gcomp}_{scomp}_{type}_{mip}_{short_name}' cmor_type: 'CMIP6' cmor_default_table_prefix: 'CMIP6_' + +ACCESS: + cmor_strict: false + input_dir: + default: + - '{dataset}/{sub_dataset}/{exp}/{modeling_realm}/netCDF' + input_file: + default: '{sub_dataset}.{special_attr}-*.nc' + output_file: '{project}_{dataset}_{mip}_{exp}_{institute}_{sub_dataset}_{special_attr}_{short_name}' + cmor_type: 'CMIP6' + cmor_default_table_prefix: 'CMIP6_' diff --git a/esmvalcore/config/extra_facets/access-mappings.yml b/esmvalcore/config/extra_facets/access-mappings.yml new file mode 100644 index 0000000000..acb5dd1568 --- /dev/null +++ b/esmvalcore/config/extra_facets/access-mappings.yml @@ -0,0 +1,68 @@ +# Extra facets for native ACCESS model output + +# A complete list of supported keys is given in the documentation (see +# ESMValCore/doc/quickstart/find_data.rst). +--- + +ACCESS_ESM: + + '*': + + tas: + raw_name: fld_s03i236 + modeling_realm: atm + + pr: + raw_name: fld_s05i216 + modeling_realm: atm + + ps: + raw_name: fld_s00i409 + modeling_realm: atm + + clt: + raw_name: fld_s02i204 + modeling_realm: atm + + psl: + raw_name: fld_s16i222 + modeling_realm: atm + + hus: + raw_name: fld_s30i205 + modeling_realm: atm + + zg: + raw_name: fld_s30i207 + modeling_realm: atm + + va: + raw_name: fld_s30i202 + modeling_realm: atm + + ua: + raw_name: fld_s30i201 + modeling_realm: atm + + ta: + raw_name: fld_s30i204 + modeling_realm: atm + + rlus: + raw_name: + - fld_s02i207 + - fld_s02i201 + - fld_s03i332 + - fld_s02i205 + modeling_realm: atm + + rlds: + raw_name: fld_s02i207 + modeling_realm: atm + + rsus: + raw_name: + - fld_s01i235 + - fld_s01i201 + modeling_realm: atm + diff --git a/tests/integration/cmor/_fixes/access/__init__.py b/tests/integration/cmor/_fixes/access/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/integration/cmor/_fixes/access/test_access_esm1_5.py b/tests/integration/cmor/_fixes/access/test_access_esm1_5.py new file mode 100644 index 0000000000..ef124e7129 --- /dev/null +++ b/tests/integration/cmor/_fixes/access/test_access_esm1_5.py @@ -0,0 +1,412 @@ +"""Tests for the ACCESS-ESM on-the-fly CMORizer.""" + +import dask.array as da +import iris +import numpy as np +import pytest +from cf_units import Unit +from iris.coords import DimCoord +from iris.cube import Cube, CubeList + +import esmvalcore.cmor._fixes.access.access_esm1_5 +from esmvalcore.cmor._fixes.fix import GenericFix +from esmvalcore.cmor.fix import Fix +from esmvalcore.cmor.table import CoordinateInfo, get_var_info +from esmvalcore.config._config import get_extra_facets +from esmvalcore.dataset import Dataset + +time_coord = DimCoord( + [15, 45], + standard_name='time', + var_name='time', + units=Unit('days since 1851-01-01', calendar='noleap'), + attributes={ + 'test': 1, + 'time_origin': 'will_be_removed' + }, +) +lat_coord = DimCoord( + [0, 10], + standard_name='latitude', + var_name='lat', + units='degrees', +) +lon_coord = DimCoord( + [-180, 0], + standard_name='longitude', + var_name='lon', + units='degrees', +) +coord_spec_3d = [ + (time_coord, 0), + (lat_coord, 1), + (lon_coord, 2), +] + + +@pytest.fixture +def cubes_2d(test_data_path): + """2D sample cubes.""" + nc_path = test_data_path / 'access_native.nc' + return iris.load(str(nc_path)) + + +def _get_fix(mip, frequency, short_name, fix_name): + """Load a fix from :mod:`esmvalcore.cmor._fixes.access.access_esm1_5`.""" + dataset = Dataset( + project='ACCESS', + dataset='ACCESS_ESM', + mip=mip, + short_name=short_name, + ) + extra_facets = get_extra_facets(dataset, ()) + extra_facets['frequency'] = frequency + extra_facets['exp'] = 'amip' + vardef = get_var_info(project='ACCESS', mip=mip, short_name=short_name) + cls = getattr(esmvalcore.cmor._fixes.access.access_esm1_5, fix_name) + fix = cls(vardef, extra_facets=extra_facets, session={}, frequency='') + return fix + + +def get_fix(mip, frequency, short_name): + """Load a variable fix from esmvalcore.cmor._fixes.access.access_esm1_5.""" + fix_name = short_name[0].upper() + short_name[1:] + return _get_fix(mip, frequency, short_name, fix_name) + + +def get_fix_allvar(mip, frequency, short_name): + """Load a AllVar fix from esmvalcore.cmor._fixes.access.access_esm1_5.""" + return _get_fix(mip, frequency, short_name, 'AllVars') + + +def fix_metadata(cubes, mip, frequency, short_name): + """Fix metadata of cubes.""" + fix = get_fix(mip, frequency, short_name) + cubes = fix.fix_metadata(cubes) + return cubes + + +def check_tas_metadata(cubes): + """Check tas metadata.""" + assert len(cubes) == 1 + cube = cubes[0] + assert cube.var_name == 'tas' + assert cube.standard_name == 'air_temperature' + assert cube.long_name == 'Near-Surface Air Temperature' + assert cube.units == 'K' + assert 'positive' not in cube.attributes + return cube + + +def check_hus_metadata(cubes): + """Check hus metadata.""" + assert len(cubes) == 1 + cube = cubes[0] + assert cube.var_name == 'hus' + assert cube.standard_name == 'precipitation_flux' + assert cube.long_name == 'Precipitation' + assert cube.units == 'kg m-2 s-1' + assert 'positive' not in cube.attributes + return cube + + +def check_time(cube): + """Check time coordinate of cube.""" + assert cube.coords('time', dim_coords=True) + time = cube.coord('time', dim_coords=True) + assert time.var_name == 'time' + assert time.standard_name == 'time' + assert time.bounds.shape == (1, 2) + assert time.attributes == {} + + +def check_lat(cube): + """Check latitude coordinate of cube.""" + assert cube.coords('latitude', dim_coords=True) + lat = cube.coord('latitude', dim_coords=True) + assert lat.var_name == 'lat' + assert lat.standard_name == 'latitude' + assert lat.units == 'degrees_north' + assert lat.attributes == {} + + +def check_lon(cube): + """Check longitude coordinate of cube.""" + assert cube.coords('longitude', dim_coords=True) + lon = cube.coord('longitude', dim_coords=True) + assert lon.var_name == 'lon' + assert lon.standard_name == 'longitude' + assert lon.units == 'degrees_east' + assert lon.attributes == {} + + +def check_heightxm(cube, height_value): + """Check scalar heightxm coordinate of cube.""" + assert cube.coords('height') + height = cube.coord('height') + assert height.var_name == 'height' + assert height.standard_name == 'height' + assert height.units == 'm' + assert height.attributes == {'positive': 'up'} + np.testing.assert_allclose(height.points, [height_value]) + assert height.bounds is None + + +def assert_plev_metadata(cube): + """Assert plev metadata is correct.""" + assert cube.coord('air_pressure').standard_name == 'air_pressure' + assert cube.coord('air_pressure').var_name == 'plev' + assert cube.coord('air_pressure').units == 'Pa' + assert cube.coord('air_pressure').attributes == {'positive': 'down'} + + +def test_only_time(monkeypatch, cubes_2d): + """Test fix.""" + fix = get_fix_allvar('Amon', 'mon', 'tas') + + coord_info = CoordinateInfo('time') + coord_info.standard_name = 'time' + monkeypatch.setattr(fix.vardef, 'coordinates', {'time': coord_info}) + + cubes = cubes_2d + fixed_cubes = fix.fix_metadata(cubes) + + # Check cube metadata + cube = check_tas_metadata(fixed_cubes) + + # Check cube data + assert cube.shape == (1, 145, 192) + + # Check time metadata + assert cube.coords('time') + new_time_coord = cube.coord('time', dim_coords=True) + assert new_time_coord.var_name == 'time' + assert new_time_coord.standard_name == 'time' + + +def test_only_latitude(monkeypatch, cubes_2d): + """Test fix.""" + fix = get_fix_allvar('Amon', 'mon', 'tas') + + coord_info = CoordinateInfo('latitude') + coord_info.standard_name = 'latitude' + monkeypatch.setattr(fix.vardef, 'coordinates', {'latitude': coord_info}) + + cubes = cubes_2d + fixed_cubes = fix.fix_metadata(cubes) + + # Check cube metadata + cube = check_tas_metadata(fixed_cubes) + + # Check cube data + assert cube.shape == (1, 145, 192) + + # Check latitude metadata + assert cube.coords('latitude', dim_coords=True) + new_lat_coord = cube.coord('latitude') + assert new_lat_coord.var_name == 'lat' + assert new_lat_coord.standard_name == 'latitude' + assert new_lat_coord.units == 'degrees_north' + + +def test_only_longitude(monkeypatch, cubes_2d): + """Test fix.""" + fix = get_fix_allvar('Amon', 'mon', 'tas') + + coord_info = CoordinateInfo('longitude') + coord_info.standard_name = 'longitude' + monkeypatch.setattr(fix.vardef, 'coordinates', {'longitude': coord_info}) + + cubes = cubes_2d + fixed_cubes = fix.fix_metadata(cubes) + + # Check cube metadata + cube = check_tas_metadata(fixed_cubes) + + # Check cube data + assert cube.shape == (1, 145, 192) + + # Check longitude metadata + assert cube.coords('longitude', dim_coords=True) + new_lon_coord = cube.coord('longitude') + assert new_lon_coord.var_name == 'lon' + assert new_lon_coord.standard_name == 'longitude' + assert new_lon_coord.units == 'degrees_east' + + +def test_get_tas_fix(): + """Test getting of fix 'tas'.""" + fix = Fix.get_fixes('ACCESS', 'ACCESS_ESM1_5', 'Amon', 'tas') + assert fix == [ + esmvalcore.cmor._fixes.access.access_esm1_5.Tas(vardef={}, + extra_facets={}, + session={}, + frequency=''), + esmvalcore.cmor._fixes.access.access_esm1_5.AllVars(vardef={}, + extra_facets={}, + session={}, + frequency=''), + GenericFix(None), + ] + + +def test_tas_fix(cubes_2d): + """Test fix 'tas'.""" + fix_tas = get_fix('Amon', 'mon', 'tas') + fix_allvar = get_fix_allvar('Amon', 'mon', 'tas') + fixed_cubes = fix_tas.fix_metadata(cubes_2d) + fixed_cubes = fix_allvar.fix_metadata(fixed_cubes) + fixed_cube = check_tas_metadata(fixed_cubes) + + check_time(fixed_cube) + check_lat(fixed_cube) + check_lon(fixed_cube) + check_heightxm(fixed_cube, 2) + + assert fixed_cube.shape == (1, 145, 192) + + +def test_hus_fix(): + """Test fix 'hus'.""" + time_coord = DimCoord( + [15, 45], + standard_name='time', + var_name='time', + units=Unit('days since 1851-01-01', calendar='noleap'), + attributes={ + 'test': 1, + 'time_origin': 'will_be_removed' + }, + ) + plev_coord_rev = DimCoord( + [250, 500, 850], + var_name='pressure', + units='Pa', + ) + lat_coord_rev = DimCoord( + [10, -10], + standard_name='latitude', + var_name='lat', + units='degrees', + ) + lon_coord = DimCoord( + [-180, 0], + standard_name='longitude', + var_name='lon', + units='degrees', + ) + coord_spec_4d = [ + (time_coord, 0), + (plev_coord_rev, 1), + (lat_coord_rev, 2), + (lon_coord, 3), + ] + cube_4d = Cube( + da.arange(2 * 3 * 2 * 2, dtype=np.float32).reshape(2, 3, 2, 2), + standard_name='specific_humidity', + long_name='Specific Humidity', + var_name='fld_s30i205', + units='1', + dim_coords_and_dims=coord_spec_4d, + attributes={}, + ) + cubes_4d = CubeList([cube_4d]) + + fix = get_fix_allvar('Amon', 'mon', 'hus') + fixed_cubes = fix.fix_metadata(cubes_4d) + fixed_cube = fixed_cubes[0] + assert_plev_metadata(fixed_cube) + + assert fixed_cube.shape == (2, 3, 2, 2) + + +def test_rsus_fix(): + """Test fix 'rsus'.""" + time_coord = DimCoord( + [15, 45], + standard_name='time', + var_name='time', + units=Unit('days since 1851-01-01', calendar='noleap'), + attributes={ + 'test': 1, + 'time_origin': 'will_be_removed' + }, + ) + lat_coord = DimCoord( + [0, 10], + standard_name='latitude', + var_name='lat', + units='degrees', + ) + lon_coord = DimCoord( + [-180, 0], + standard_name='longitude', + var_name='lon', + units='degrees', + ) + coord_spec_3d = [ + (time_coord, 0), + (lat_coord, 1), + (lon_coord, 2), + ] + cube_3d_1 = Cube( + da.arange(2 * 2 * 2, dtype=np.float32).reshape(2, 2, 2), + var_name='fld_s01i235', + units='W m-2', + dim_coords_and_dims=coord_spec_3d, + attributes={}, + ) + cube_3d_2 = Cube( + da.arange(2 * 2 * 2, dtype=np.float32).reshape(2, 2, 2), + var_name='fld_s01i201', + units='W m-2', + dim_coords_and_dims=coord_spec_3d, + attributes={}, + ) + cubes_3d = CubeList([cube_3d_1, cube_3d_2]) + + cube_result = cubes_3d[0] - cubes_3d[1] + + fix = get_fix('Amon', 'mon', 'rsus') + fixed_cubes = fix.fix_metadata(cubes_3d) + np.testing.assert_allclose(fixed_cubes[0].data, cube_result.data) + + +def test_rlus_fix(): + """Test fix 'rlus'.""" + cube_3d_1 = Cube( + da.arange(2 * 2 * 2, dtype=np.float32).reshape(2, 2, 2), + var_name='fld_s02i207', + units='W m-2', + dim_coords_and_dims=coord_spec_3d, + attributes={}, + ) + cube_3d_2 = Cube( + da.arange(2 * 2 * 2, dtype=np.float32).reshape(2, 2, 2), + var_name='fld_s02i201', + units='W m-2', + dim_coords_and_dims=coord_spec_3d, + attributes={}, + ) + cube_3d_3 = Cube( + da.arange(2 * 2 * 2, dtype=np.float32).reshape(2, 2, 2), + var_name='fld_s03i332', + units='W m-2', + dim_coords_and_dims=coord_spec_3d, + attributes={}, + ) + cube_3d_4 = Cube( + da.arange(2 * 2 * 2, dtype=np.float32).reshape(2, 2, 2), + var_name='fld_s02i205', + units='W m-2', + dim_coords_and_dims=coord_spec_3d, + attributes={}, + ) + + cubes_3d = CubeList([cube_3d_1, cube_3d_2, cube_3d_3, cube_3d_4]) + + cube_result = cubes_3d[0] - cubes_3d[1] + cubes_3d[2] - cubes_3d[3] + + fix = get_fix('Amon', 'mon', 'rlus') + fixed_cubes = fix.fix_metadata(cubes_3d) + np.testing.assert_allclose(fixed_cubes[0].data, cube_result.data) diff --git a/tests/integration/cmor/_fixes/test_data/access_native.nc b/tests/integration/cmor/_fixes/test_data/access_native.nc new file mode 100644 index 0000000000000000000000000000000000000000..7c0849db63b4f65898bb26fbae418a2da3dd1e66 GIT binary patch literal 253617 zcmeFa2V51&y06_xkR%`iA}TBu1Qbb9@7pLUIVeej5d|bGk}(HV1jU4c0ZfRfm~&1j zm~+mGIV+|y>({-y%2D^6*)#XdKHvG>Yt6{B{*}6N*Q%=SHQw9ZvyQrvdM#B|j+w92 zti7%%x3Z-U+Md0g0=(UWYH4n$)l_b$Scf`!_(~tX(pb#YB&}YHQxHGtH{z58C@OO- z@}H^cA^KC~v^Z7KYq-B#U|MoYOj<@lOgdLja1yUrOZYb+CM`W7IjNn!RZ>hwRCH`R z2Wv-bd#m{9SklhU+Rnk+R!2wh#*NJo|8iWaJORRoy)UP_$&+74R!hM_bgHGOpuk+G ziWY*YkpJbRWDB2vwpY{>o$AU=bN?Klk!qxIU4c^N`w#uY!WSLdAkm)D&x2M`+_x z9m{^GbHOQ#)hMew$=~noU-4V5G9QeZj$%?2IbEs!$E77ihxd<6Nl8eG3r~vdA0zJr zVtWx2k{FqhkdYZ36P}oy6es_r87kJXBG-u16aM4A*@q{`hNq+@^p6SeA0tGW5Sb*j z-44PvMB~gkXmAc+g}SOGbOhS=#4P?`G(E+ODspwCsAD42GUCJ2BBK*B)BjFf&iDPg zx!k+6#6>FCISL9wI{)~}tdIR`I+eAgKKA=yHP4InGfl2Pt?aLqhc%^)uv&?dQ7wVv z^u)Zf8enlszL}T5K+TqavwvxtNY(hKaf`A3c`y1YxMoAvE`M@hQq$}&cc3pFN7i@- zd%JVoY1$lEt6*f2Dsh3_AkIRNlFLjwwh4)m8^)}2CV`$o-huL_SBsMm(UK2V{+DUg z!9qWm8`gOkskJ)gzk?9$TSzHt3n7hTz;TP&j2R_EAN zv`4Qi`PtXtuF|#DIC`7o&YTD<{n=NrSSW(|J+82TskU-oYT^~eduOyoa0|Jo?|kJ) z4twqy9PGh0q|I1Cr~_*u0LML7`lSE!WeVgsPEJS)OH7`J5C8LJ3cRGt{O&7$XJvh< zitEec{=G?3DFqPz{#?aFXtxrYliV(0DPlV8m#|+kh6QDfX*yfBEdo!9AgW zLi7*!L@`SFz@;S*_ro8DSC!sBH_gHQB`?1>%{_x2PLr2rARUtxga*}4EX`|*OMBJ| zaP#h@*+aVDDNC91ck%O(=gC>{BqksvJ|SHu{2wV3W{Ga@p0a4+9+)If9A$knGh|80 z8NWLXh)hd}?2{N{En~)>dvq$I{kKXp6(ZzniT6nHgJ4*t{jC4qjf>ruf@ShZzm19P zhW00u1$m!W6mH0x;@zIrg(Uz%%QtO!TspmlFwGc8 z2U~GK5Dl|mWGiWQe`EH{zxYi?G|ZmGFP{s2XV2o%m;3(Re}Ru=QUAZNH~h(-U00Zr z%gxW%rK8EW^swvF_VCS~U6)3~o&1B&&D?(RR|)(ofnO!?s|0?Pz^@YcRRX_C;8zL! zDuG`m@T&xVmB9bD5)jvt*g6bbFk|15#ibEN?rv)-&BZL~UD$_zo;xR=x&G&iGo3cM>jS{1)H0c%``5>NJb_ zzv3UKXmBv||LJhvZutsen6v_@Ev%aft0%uNV*2_7hj0x9@8TMaxK1M0=N~PB$@5Eh zu*G$s@3k1_Z>@L={<(^IVNL(}q=`#R-zQDJv~)aX`d_OSws`iRsg|)RV!lO_(7&UQ zP=~2DJ4BVW`GB*W`z3O_DYLp%i1wT}wJ4P+U+?CA zFt0mEQps7O7Ns6#14?6wSxu-mrMfxQmQ=T-+FGKsEw#6kSYc1y9jH5@?m*pb$6of?WubQN@t1Hlvys4mbpr-pp0;nH0Lg{gwokV($$n%o|2Y%NvxoZ@Rl^^ zBe8_ixuc}3DYH6BTIMUUf-=HS(wx7<5=!R)Nmo-k2TD4hvYOJivt*w|d6H5VB-y7> zR#55$OZE|zYbd!8$v%*>gtCUxIaG4br>v&5?IPJ{QF6b`uM+rG0{@8;a1HVG6y{u0 z#klRIy;9$DnGP3DEyTIZ!9g}boR;{>O4^H4E6yLo$xnc^lqPI3n(Yg?N-;_ZRFaBaX3iFypG(e+QBK;5-cpm;}9HoBz*WGE=lx}DD7xQ6-<4| z83>y55&v*p)UlHfAE+GHlhm)j|3nGM>tF4MV*a7-e`py$R`K`M`$O~ip`L%J(jOYl z54EpVd-=3~B0s<4_!G4jRmsJSdSEp7stKVZ%3ZN1+ldFN zIBr|n2N`!%^xIGx4RUw7BG*;45C#y@W7Yi`PTVf>lesh+$j6-fq7NZ%WdZj077pe{ zixwtQ`obrS%HtM@7D60~0_20xI57^OTkzr_WFY2cqI6`);Pun(Qd4&kECnNuD7_tx z<=2sHe*OLLmcaKT3N7Xzs``gY{GkGWXd>MAmCyZ9t>3p3?)!H3LuD7)40-+E&C9Rw zf4>BzgILAiot~3VE`*2}|K7nXcEC!5Go|NT*436$b&--S3HFmo_T!W!a=PMRz!nOb z?f<}uVIiGAkDxR~-|!zeFl_o)4-B7K=c*vplBt4%5K2g`u;RvQho$^y{r75()yWtq zDa$(I6i+a$Hvgl?<-}?i?+DUyxz553Lo|IQ{JoVzF)IJ@cHRE@mBRW$%wp{9kei|K zQQOXbnEXn@4NFE|&&*czOhR_`7+8%a=<*s3IM~cXVV%WO_`-@9U=Dj!kl^ zqPx@$Wb)-yu{cD-*hoXt@)QUkI|-A2(J<}U=|`<|=T^++H?H2E-tMm7j_%97ti7l` z|8E^`WS3wRWBD5gUKNFskw10x?HH*zJrG-MhHz?Bi0Ln#d6h0oV~QM<>@wkf1lxbIe#D4H!}wg1-~O`tViw;DEHfz~LrR}8w~_~s zjvSmWOHW9OijmnlqHQZ%JK=wst!*1y+iy>7rDsGYMMtJZ|NgX!*jQNZ6ooHj^4v#7 zCdP>VU1Cq-dkmB*IZKV0Y|>G9#|$(dn*AEAD~e_HI{JSZmi ztG~Ko#)^|sKD^cuk}DXoG``p363X{lU(kPR;MAnq{_YIBcn$Gup;$ukF$r<;8R53V z$6x0Ez7k;jg5A1Q$TP>NN;Tt_P|2M!o@z!zsu>T4Nd6fIQO#&UHRDCPkH|QVYDS)F z#s@)C{EV}xX7r|-@m*)hKVv!7jNPbaRHd46OCZfZW&BSxq?$25K=RL6<1cB(K&lzn z_(|@JI#e^J_)6}KCp$@+(Uxk){Em`4V~vlb83U;O!1=Er#$H?X+~SB z8S_0Pcg7lbNizmg&A7%*a%a?`nlZ&ya%Vj0B56ijsu}a0C3nVZx(~}(Lib}CBic#+ z8D(^zma)2x)C~3wBo`$ECp`;nB2@OwK;y}YwMzp5kDP{IFJY}^l4NvK8BWcD8 zD@ijtx1jEn73S2P(%FoQ0%}P}1LMKs94sswp`&Nq^&)-JIMo-l6&% zJ4o(#D8KwfHD}44GOMnnztMnd#)ec=I?E)@SkY9{jLv4%owCB5x>Gv0pzf3vR@9x+ z*@n7PR@+LNQD!e`#)#IEW-M`#G-EZP;VETE!&64^G(2UABMnbkP4~eWWll6aWkfp~ zp0b4Qk26-&eR9TpXURXKt&5}?Pg2d8;wrf_>bOaoaShdsfplM;v4(2Kd=Du+qphc; z8BbEpnBqmRPpRWguTQz=CkFaR?u<25Gv;@c+!<{+7Mm|{b z&p3{1#*0)lT7*dc83$3#c#vvF!%)dTV?5Q2Tc~DK?IQVS>_#=Ca6WlI%=iZc|$~;SrM~z9Tv8gjDwT5pETWTk?BMYZaPRY}|^VDA@EP+~1uQ3%W4@}Z!_TCSq7*TLTL zp`gV2f|9r=$zCC%pv3xwni#Wuzmn}CDk!lYp(;c#cj{!%62!WLs&Eat6Dtn|CDt`m z+4BBiafB6&f)eW{v?NG^y&e2tv@s{Ie|G#tp5didciEA@iSeHtSZJS?&&9;_ej5oyA()@D!}7Oc z_A}PdRe#2KXURWfHy24Wdb>)Rk$00cqlLSq84W!o&8X@rX~uU{Gd}Q=+!-%=OPcYZ zkE9v5bd)q>c_&FT&Z4XEjN|+ycg8{fl4gvjtL%(cbQPVkjB3V4ou%-Mg;Xn^!7PNbSqsfXmwIE-q>*Hkkm_LTfH-l3W?EKG7|JWDmBZ!gK6v5IO&r{0n~ z;|8i3t->XD#xklIwIU>U#*S1o=1|SJmuki@R5P}Tl;UF?KsDn!su`bA&Df%k6rM4b zYQ|Ek8Lv~#XcQ%dXY4{X<20%nk5kR49xa7u^rV_`G}Vl|sAl{?H6z4G@iC@R&A5tc z#z#~$HjkCUGxnjHaURu-m#Jnnh?BxI22ss8nQF$vR5Pl?OW_$^sb(BOHRCp_8Goai z(LOgA#${A9-lLkaXYQjPc@@%KPfz;Kh=zRR5R|Unz2@*6rQm? z)r>=^X52(I<4dX;t@}&yG4`dJaWU15x2R?`PLjei_Mn<^2GxwGsbIFM?_=~OeWr<(B;)r`-nW~`GcU7xWf)r>w=GsaQP zIF@S0g;X={p_=gq)r_C1W^9-yrH9dxYR0ZqGiFlFSU@%7TB;dOP|f(1YDSH8>H3V8 zR5N-}%@{*9;~1(L7f{W(n`*{uR5O00nz2EKlpaQ;nlY4W#&oI~r&7(hnrg;lR5L!N zno%uNx;~>h)r=lgGe%L(IEre<`BXFRq?+*x)r{|{W~@IzN)IEUnlYGa##E{~X4oks zEh(NX1Bslm#EPcWzPUtp3W&3oG&|kH-crF%?_`1G&Q9q#w~;hEg~QQ#H#=R!-a^4n z&s4Zd{@Ljm_SOk@`h~r1f}L_Mn*y$AZRta|cguP9Ioi1T-kzl7s*xMu6 z=@9nT2zL5|y)A;B?qF|;V5c|O+aU}?rF^irLa@^p>}?S5x=8LRbe{QuGJ?)4FH#25 zdE`M#XF5;ZLTO9qh2@koIuD#hsYB;|<0v^g&l^NpLm5x!ch!_ubbc03Sw>k+*@(`+ zx=|KVo}|?5BjwMVGMlo3@)IRb=TRAyYbc*kTF`k>G-V0pRZ2rT?+KyIr#wojO6N81 zlv$KJDBn>!(D_RWV`(7K$Zj=Kk3n|x8o}_$6sY&l!EhxPyV=1#KODQWTuTy@a zG@|z#p0W#N2IVx$HI&CGpHQmP`-KIiCuKC{Xvz}GU6fZTKTsOdaULi`DAOqODOXV* zrF=xGO2_%;l%8AD9RG02D_1ks?f=O#|KF79Z|8@U z#8lN1{{0`G59%l7N>##Nc^bNr==BeFz7zy&F(LgmEyZWK{$$Tfh5D3sZ8c?LxNlE* zrX;5)WF!ob9&i)m6aQtV$bVr;`1F&hd}W66y-;>IP44c|#ZC3UwHGQc(7*nZH{Z4} zzdZpgR*M*kuxBkViNElpH_|o#s|SF){pnsP-5LKUHxI?+h=%dGB)@643s0^8s6}Yf z;A}56CNe$aPnv}q^)5a)`9HQ7%Ch%!cGzAhb7$H7#s76BAb&r>A!*D}l^z2Xe!eLq zIc+dkPe|+v;h$KGo(YLDGMhLX@g)T|DcIU3GA$}z7-(#gl9O7w`S}FexVX7_1P8bB z2==pUMQm)meOkHsx3VQRG&Y;ajQ%##??HWYvrdU@Wp8WS+SVbwzt9O2`wWP3Y!#a@ zC?;AKm7FB}*l33EX<$M|yezZ7z4VKt;R$I8>DDQOWdrQ3ZDo-eGJ9KlyHnjn(f6jf9vw!J@VU>=Ehyfg)BBLxxdUWCPNkw8=D|JT_2j15St)e&@VYU zCQ-AQI7}-FKSjo#AEv*3DlZj98V_2x))a2}N`goF2(6o#?xYOix2~k8_}OUf=Gn^5 z8oTUwTqxaqR{xLu3@ST@wRVt@VA0SYIb{b~RsZXQtUjXmzjYfB3q>@H;%9bS(fb*@F8xO8w-A5hNpj6Zc8>0!c%EFGl!!IO-d)o8Cv7a~ghpGvw(OV- zzyAFyga23CfLXUy@XBl@EYDpI>%Wx4&N)lqUBF_v)v*k6V@siOSqX5aB@nf59@M=& z2O9004eG;YL*e5h7-cjIp4XlMrwpgV#nM8!Q#lQ?uTO=WgY&_?*%atyH5tqwOoYXs zCqSP|d2s*KI2hO{7s~780LjXR)}dp-pBoKR4`zXW(MXv0csP7oH5A4U91QjH20}*i z0O**J2{j`!;8Vv8=-MP5!aUQVO@2Bo=#&Ac7Nvvlq73LVJsp$_)1jGtIt;s<4m+1* zK(Ec2P=03s)NeBgdgly=&aH<+FaHrR=5QA5+A<2PkB^3zqp~40bu2hd&jH)X;~*ty zJTxsF4@ILVfR)PxXnc4A*oIDo6}N@-zncJIkrN>VCxBUg9(2u_02}H}0R2znVSU5| z7;t_P)LSqawyEU9)SxMl9y$dMX5>Se;xwpLQveA8(_yCj3>f)%CQKVx1U37LVcel2 z_@q`0Lyi@J{)HmA-n1Cp=N7?2li8p$c@D&v&Vi~kvmwK8E}S=?2ie=_gR}nvIKRFW zj(k`M8xEI&t;!N;omCE(yDx`nUspj{;TkwLXB`aXHiEwIW>})R72ddRgL(lwK<&gX zi1n!ey;BvCaefb+(X52%NtF=uvJ$E*tKirvh?1z-b`(fdNeemE+6};V41zxu*;quA7uzTwsIP6dXv1B)l z^V@X+qXmUvu&`)V=EY%Zh`U5Hp7E28=y|kdU)Zx4mxVBg@DtmA;oATJQ%Vb zF4S5Jt;k9UHCzU|J(j@ff`#ztw-Q*|bRIl=R}AgX&xCERgoNf${4n9(TA42He3o)HNB*bVh+nmkF>rXC}O`T?lLPSAdJtW~i;Y8zPrhg6qZuU_IzC z>}h-)G)5i=Ogs*=7aj+1tus(|;5-D*xeP@<*Ff{pb(j}d4bj{!;63j`^!)pf9Qqi# z_IL(M&%FTm+i#%V#&@9i@gqE$@D=>KDWHv`BCgr3gt~>wxT~8AX6&eq1q)Sie}F1p zomU${sWvXFQN{+RmC*FIB8Hx+g#jBCu>Bf+KqQm_3{f?9+pG9jKyFYQ3jb+CD7Vn zHq?4o2stiOpk2gxP~4Rb+hRvT=F$PMWkC`Qdmjg_Vj^L8K~LCQ&=pp=1w+Imf9Pk? z3D!>cgvZvdu%}0Rc%RW0&UR@7T~4-vw#}X3P4o8P*V!3f?RSC7N>^|`;h4jUExYAcX+(h16C0)XsG24 zbL#uREC(OZjr4};37(*+#9MC)0;r_v%7c zfHrh}tqJz))xffsDm-eh4r(@9kY`a3UTtmw#utsj(a#J9hgrg9XLFGCXa@7fHiE!V zeOP|E4onPFf#UQpq(`6kWUl^O0fz4bJh z)VTwj#{LG;d5RdubOl+pakSJ>70HyC%}8QjQz1baT-g8?dcz11obi@j|jTUJIy)CqEkCtei$@GO;Ok>1U2EldQ07 znJu<(Y>h3Cx5h7t_GmoN7VWfcup-U|Z%nnt_9m^dcYT6cF9<5tBiPE+9@h-8#%#VN zE*Ih`3^c`aXPcnnZWGkmZ;W#XG{S7lhRAb9_{P@|O9Krscx^p2v(~}6OVshjDP>&L zfx{WvZ{b1O6X-YUCM;@v0bH6NgQ`dSpk2`p*nfQ^w7jw!hAdbKJA;=&-s2@u=v*$0 zZ+Q?lJr|V53tgM$zy?_^yq=H^WBQGOgdxMB+lh4O^spa1Zyg2ajl07I z5(p*M9bx7W4=Aa0fik=Ha4pmcio@E##`g%Yjlc#|2e@Ei4-QZ4;NurtXs>Pu$1-f8 z|0)}Z7-|ipGFpMzhL)hc%M$9}GKUn0=5VOk6h^dY27~%Fg{9C8BJ|9_E!Z3ums&#c zTr22NV*?!qwuXg65gHY=1>MCR;MQ|j*rw|NQ#N|SJufd<9pMQZzzxhJI>2v>9pUMI z2N-n97MA;4fzYVIF0>h(@NEROjr5>navfN>M-8sKszUJ!6{tNz1^PZ#g1vQ>q5u8b z5ZzA=lKU&ekt_ws&wWSi^6rs6_0N&;p$Eu_bGyj6v)jm-x!XvI&3@t#dWz(nx=8lA zJ|u(sE5Oh?dT@G^1!P@o3#Z)u;Mw^o&~GvrLI;cmEn$9WwPQ9|ommNYgn7w@PM5&A z`71C#t%4`?^stGnDe}VdLdxoPc;IPdgW zoYyi3zYfes<8h<#lIsvW_c0Am3;xTM!q6x_5Szz)V*&4qzin!VnpSO5|2IdRc-0X% zG(zlp+74$oZ;2O7O)=@H36}UbMD5%9xcam%zO~fG&bPGDx2HCi*3-qdi|V0)haO&< ztA|tW>0_^1^)Y-#LoC}T!?Q8ws9wh!UvwteeN20FzvF?yOMLNG(_oAa>4DZ)BeB(( z1Uxw>74M%MfQ^R_!q_DPu=-;vKE9WTJsjfjcAp4ryQK$Oc!yxWF@AV$n-{9gcgD>- z+u#S810FbUg=J}`_|~fts`l5z!Wd0-&r-&>TA!h3;tL3xJ2R~un<8)yeY!U9AAtpsI=463z51a(SA&&4m*dDSR?ZBeGEd)$&1$#X0g?U{| zI6A@x#;3P{e!`e}v)UY*HEaO~I1A|0S!k>4%%It3Q?Osw6h6i@11p_oFynd?n3QA! zt=t;J#~Te{Z3`m^tTu!sxkxAGK0^C&0xu56KK?+5j@vw0EM9jpix&JZdU4nTa_LRU#}<3CG^0l zi4OR0QicP4K9HKVPso)Ow@9Jg6=F8;EU7xapG2+RNMeU9B!w?#l3PxbNtEX}GQ?vH zxqNjD$*~X)tJhjeUMlP%4|iQA*L!>>=36wNYF8uhU)dTmb-O`q*KCMAQv#cs?u711 zXFx&w0aRXB!PS)wa7@QmI5N2%b~5lsr>aPtV><)~1m$7wuxaRhvj~H$N^skR1$Y=r zapZv#+%R%B=1iQ9s5J@e`Q%{Fz9Z2!C==6j6YxV^7{*-;#Ir{{aNCm($n|W89nQDM zy)&FK)y)-WwsS>&TX$To}7)`Wmf3l$qMri zSfSI%me}&NH6F19oIIjEwyp3&!>66`R7o#PI@TAvzZ;BN$~hSIb|Q9cKMgk?F2v7+ z3-QFMX&9B7kJn~Q!omr8Xq}mjgMx-(_pM22bT0yP%Y*Rq3=e$dpJ6DtU7jBb*j~|fdWiQEV zO9k+^Qv=1#b)eCOx)8KlA5^>O!v-5YXrW&h-YlvEZmrc}cAxU2~22sXQQCYrP;15Bx@2uX|4xP5nTc zje1A2!e5ix#DtgN$}TpLzFM$g<%5*=5Qa-~udsyvI7^eQFKbGDIy z!W(4NbQSQOV+=--?O^J$KG6GY4s@D6ALgp=0H;Z3p{L?g7#yLDDQgUHl4~=x{YtR# zsw)O*`Ju_=Uif}b0$#s21e;#W#-~T~aPR0zIL&7gURgQ;3rfe}D}{7SweF4Q2DigW zUiw&f(Iap^w+9y1EeBcN3|L&02QKwS!zHz0u*h*BwC*<&RL14O;=wau4=Dnz4-4SI z!FAxcZxcA}tb)Aoi(r}m2##uS_~lR?oMdN=Z@0C;`3(p@AK-)!g50q|PDk9T-5EzW z=!UPc7hX+`z=zpgu&!bN4&CI9S4nzH1QQ!I#qN8xad9sWpDefyH{*_g zy~k#l?zR}h3}=Gx+&p;fI0AN$>kEqOy2HoO9icF%9i%L_hZkQggzv9SK!2toWJYMg zv2i=expu3Gecocych3S+x@#UO+*V9p3@9SU!e)~s^9AHh*JWh8(Pm=T>?nEaa+mC> zc})h5|4NpQRfMdzwP4B14@9YZ4RPLdkAzOXMrKYqLliaklS?bMkV(-i$aA~-B;Tlj z^vW7XyvJmbmqvrge(!-qqsIW!^-Bh^IG#aN#-x+f=BZ?PyJS)xl0_J z(Dj>%?}m+}L6;3A`{6p0S-zg+C~qR!HJiwtybWY>$U0(JzJ?sCTt)UiT1nm*t|T^f z%Sm}qDe+HTNJ6R>kzvi3l7s2X$lOOuNqgHeGJWnGk`gk5Ja4&>Y;fF9ikrV6jTUOa z&VEgx_(FRaJtrLW1INL!9c6Gj<`8sz^#&%*GQgKwE%1#$!2?weSiR8>xnx^>+!gTA z3Ol^I+7e&L>Y@A0mvBnw91NUx0KP8Y4_E7)g%?e3!|2m@;C{!;VD;%38135$%3asN zq1EMJu)GAOeVGBeuO~u+ZXUQ!nFPl-&4RlQWw6Y09Zb5j10L(_g;^^qVcW%{uukP5 z$hbW)uy7Bw>v#|bz-8ca9>Emt50L-yi!jqv#y(}5*p@fMdu>fIqOUD($^yI;jkxEr z4K~zmft;=h_EOTr$a5NKtfz@FOZCxlwF%0CWTXuuU>4SRj7L4K0`#3S8`m$NhbwL7VsD>fR3=6EE`AoS*PVqLwzIH9 z=?t7*U4W;Jr(kk}@z}>`B!*4xgC4V-aj!;Gyx2qyvz=ao>W8zS+ifQd`n&|3{AYoK zu)b*IBP?{-1;WEH1X*x1n4hW#)3nrJ-|4T!cIGRRsr-;648B29h8`n>+V>(p%es*3 z9wFrZs9@4oC7ATO5lrHygpdQ4y-Cc@zGV8ck>qmgNu=?hIpov4+}k`%ZeAoCXPASHL!kz`y-a=OhY>#_^TH9nj4Io6*P*6vC)Ke&>D9G(nJ=1Jr2 zZsgX?0CJ&m57K>HEKzkCNbJ{+Az3GL$a~FPGFdj3Tv|DrY}%bg9C~Mws7a$qFQZ)Y z{P;w2Hm{IWSrn7Y8FNWnEFn9t%_qal=8>6j+VX!Z4A}qhK38MWTK~rM`4Ebt@Teb>w;>>n9^ks7laZp0Lkc+Tl+b%F$w*pqx zTLyzPS3>5@ba2Nsllfu#E?*xFr9XmhGKK}8iCJW@l2p_+K-iv~8a(!l*! zHSoewJse=w80{}K!SlTv<1%YKTrpV#Q?6^^U9JuuQmBXfF6f~bS08(Z)Wa?%>Nvtf z6;F*(!*{l7sM|*eccnDO-G^IZr9ykWZ{&v);=@o&qYs{F*av^R5r$X&I^z%n7d-Q! z6+S*A!(Lf>I61c-rmfNy+ORS9ifMq)KWSs&9$nmXrU^E7wZ*Na?eJcpAIA0z$GsM* zSaoqUY88z}?@ObxX2xi|KYJ+7eVB^6EmJUTOFH(NGZ-%~%)(V|a`F9|N%(l{RD9BX zDjHpyiWW~MVE+c`*z|xe?jF_(U6<6u8lO*~KK}x&+PDeKW);D1>oMTfDH^uSa)XI4 z&ETlL4)o?f6T5~tiRtrwbY_~QfCW?@keXU8el$OLI zuNB!p&7P<_5Hi`%k+|RWA*-9kkb{%6NYcB>WJayIA z^NPhJ@>D6gadi$k+pmCd7jjAJqLHNKqi$sV5D#Lw-<~)Owj`@fTaszAHl$BvAXy`f z_02cuk-|fB$f-VMWaz;KM8&MiV!ufyCo^BI%BCWW>H0 z64oY;^nM*j0#y=8^UNgTZka~z+)O1J{ga8aUIJ;+CY(5F1(D42KBTIx3%Rx%$%|k+ zvZ7sU(lC=Jt&QBtxIIB6BDX6!R}f6JvcrgTU@AFNFPBWXQcBi0K1Gt;6~X+9ISjnm z1zOe16ZRmML3xjJ;MheG-K-m8PC|3cif)9i0~N4v(RGNsaTX>&y8_#Het{_#y0|8{ z8Qz-XgcSvyksH(t9Y6HN4q1b+I(9t1Yc~qV&dS4gi{fxVQ9Q<`rr_A#japJY17&;~!^OlUq`c9Kk z^>_g;A3YVTRddm`%}AWIZ3OCG9*ymM#-iGWJiL@O35W7RyT?K_N)!B^nvCWLv+=Sl z9`n|Bz(*wwvC8oijOcs@HZIr%r)Bft;*fFBRkJ^|yzK(pD;q-CLnTmK^Mu^aI!Brt z?jNv&sl z$XUT}CS3 zuOxQ48%gIAJ4w)!!{n;x4HC+KBx{G%f$Iv!VAa8bx=G%)JwlEaZ6xa_E+j3kPAAcrN0JOjk(mcGNv98q#LzOHd^Ct5y|%=XSMU0f z0~eD?{f8;U!zYc*G)X0z%Kgdgdc8?M2QMN_2S{&oTXLt16$#2RCogX|CyPc|kseCz zNb1@^vWWB~-PGHWQOE0(uTSd`>v4v}>SUN9yk(1){nz$o%8T^>q&TV z!%XbZX$j`IyI;l##Xc=lER4tNlb11pB0QA$3Vc3FmP zYVE_tMwhW*Qw?5SpvZ6URfm6>rpKo*G2r{2FyL3}8Srl+>hedERrwN)5BN~+7IuK6 zI5uuOUVXI!XGN?+*P0bLTV)P~=v+&ZC1(>yI1*RU_ zh8jn=;Px-eQQK|_=AB)Pg(js~x@QiKzBwDmoG-#SVI3e$bqd~19gC%yh%a|_#HXgs zaLQM8yu0KTq}v{X>H~}5P1*$btzSA^ZxRRdNA-k#T8LF){3Qo_y5ZODwOhC$_F@$#I=sWW(gMdaa}3cHsOR9j2T zFB~G(8*h`PMej+PVQskQstse)jbWFi4cu?$0CS$%!`n1VSpTpwoHfw}&DXWzYUUTB zbnhvt>~xK|^gT*;nd~C1wyh_brK?EgfaRol>T>etzzV`&TSF}GZX%OUZy|ntw~*** z8_1^cm8AWFg``d2A~ING0@?i}gY-}dC1Xi@Vz8+-@!ae{sy+ibbFnSCGsKn5TkJ{h zul6JM0U@N|Y$#c~yFKYT#*7?3*pMtg-GYpH8%oAIPbEtmRFNCu%JAw_FDU-H91g@> z2D=D#Y;xBSpMGqPqs9Z)TkMG&9{OO9ye@daF$1Rv-+Qmd%*3|(b8x!jTr9R&g!%iI z;Ji`0aD4X_xTnJ=EMBr1J3U#CbMI}!KQ@DNt*If#+kJ27tZ zE|zew(nh{}O!HY6&{=8gAFnVV*mY#xKhIlUp#1z zV_)lINh?*nTly9TO+E*BVJ|evDuxg5#)68$aM+=f1+6}&L*`ZoFnIlvtUI-aIBVyV zP>&(RdTc1EKg^W`x!RGFl`_)$VGNmZJ&Y6?b|#h|I+BqIPGsb57t*=B3u#$9op|Mr zCWamINW;OC$)e81WUTsHlHzoRY&gL|>rRbft-mvOIP!lCOmWar|iM8QxIl4|P1DdGq#bGw6DhiK^5yA2%DRD?lScanZlWn`jE z_?|uW9#I@>2*K-Z!RspzXBxW0B|leaX66iKCmiAZJ8RharYV?quMcAt>p-13N^s=J zN1~bjg0w2SNA|~EBi6~6NZ(dh$?4~}NLI`vqU-#Ur6WJKVF3Re{rSvee*EWKop_s@-u#emUOYEHfZsH^6JM~+n|IA~=UcpT=2!IU zz}p>j;g?$Z@L|0J`Po;z`Dt)OM@Jeky=;Aw^eflV_mX%?D(}{Rx^;~?Vc?cW( zoWtTbJ2B_-66{)DjvlHdxXW@0-Zq(zakb{))?0n0 zfi>3};>~PByk)G9Uxuh-+tZ)m!ny~bboCHCPTUPoJFf-38B?LrZ9iBxT>~@}&ywc# zgn5waA~L$DfaK+lC0~sOkj)ciU=(2l?b2$2d)9f<^S2#j;=m(hVC-{J)}#(hzuyGz z7uZ475U#|28y*}}=d=E8og3ur3MYe#Mg?8X}6JVJM4_{3QtZrcmo4Ym!hxPj4X08p5meq!q zV>#$w^pdo|n`CzMQSwG@6OlD8Bdxp7B0LmPa!2IxX*t1sw7h1Kz{IN0UeIpND+n1n| za~1A1xr-e%-(Yd$*EsyvLzKZobe((?b50(`(7YQs@=+Cbe!T-VQ@7x}_|3SZ-)=mW zunyxYm!ek3#W+4{9r9skalTIjKBlG~pSq(lukf%1-z~g7Up}fQ-|Sr{{>vhcw~!2iN1vwyE*U zUa0ZWjnw%yEj0OiEgJB>mRRzQ(w%tIB6q%HtS4{O*ppvV=)tdV_n;-AeiYJ@`e+5_Lh@06spkh46%qhSyr)B7qy#OPc zO+%Za$+&iOF>d-e3AcLY-~+dbnEN~f(?`Ujx=AqFYq!H;>rAmnn}*ovsvds+TnBIO z)x>el)v-ss3f^39fQ#Pi;1YEeoH(i)I_n>SyItqN!Oo%ZMMoXBcX>iK+T9@5ns>;S zLIvb$F06}~1U+_4gHvq^!RpyGI1(@!skIuYo0*I;<_p${0xAUN0pR>mDH2ue>C& zn{*)QnGtjgFn}dDn}N;*7wFeD2CQGqg*wGo;IZ&sQ~Pul8dVmf!n(cKa`qQ&dP9dV zs?g!b-qz$toK)w>wov9>BvN~vG)OXs@6*l*4!HM8Y=G-%Ji`Yn)G8|uf)UitE-!uajAF@(?D z+LLdvt}EYmZx8-a-%x&0Y5+g_vJ2mHqb)zNUUUB14FkSIV^zN3)K~O4`~peYEqrG7 z3{7sm#JZX4e61Eu_>{+lH@l1cjMHuT*IMoQK4u+w?`#*|*4KyMdDf3VdDfSo=i|-q z1b2SYvOxZ8eotOwMn8Vzl}Mg{(t-CKq|FaYs>IVr3-C);3f4bA9}Sxn;~2|ncw_An z?A~Q6=Cw&gjW1EyAUzdtSNFz724T1)PuTx@=Y-ePEpW%hhB(8Z0X8tw#OUG5=-5UP zk9YeFTZ4ps4Xlk5JP2lXFvmM3EwL}Di;uL=LTbt|2(oJdFEX0Ij0*@CJNJOH#d#3A z`6>+Aa~8r5U4}JLr{Jsgb_fWpf<>S1Lkl%sG`P|pvC$xmikyW7M(eQkrM*~p%6?2S z+=`t`=i|n(T%6^dhRsqgW^G_C<7W< zcLVN;BUD<4!phZi;HBFwxHwE3ACwqj2VsqFbCo(CeWHPiCGL3hLjdkj@x`MjWvDRj zGj!;A9(?MafISiCVf2zK&~x``-~zY9*jc5}_Q7=F`{i_De4htvVGUScs(`!|hhSLR zQK&g`7%tp60PAuO!{XbAVTRISn0e#`H2ZiS&K^GnH7s2sknNxf_48^2Utb5Vo^1x}pLYb`RfFNaVF6ruvKWeQEP|Sr zb0H(7941=qgzQHbU}ff8Xyay%UlUSshfWbD&fbCf(J!$k-jMJ1su^GMqA5ROU?bje zpAmnM)8{W%sPZRnDe~*)eZ_dc=h(2rJv?o48DCGmfE&i1#W{Xwar>*2Xg8hXH6w&R z^5QD4-*^L6Zr#8}=Wk-!{+GBVqb_e7q0P@7tjagltH&>FqRmI_(c%lQ*5wyf)#tyq zYQ|^Z2i|6~Ex(~(OTNI#f*;$wDc`KhkT*Bc;?svI@Lye?;-R%SF|S_@+8*Y3(+8^j zlX1HI)v|hgNToiXq0@kW?$m%^*0C|Kp52@;k8Z_(4724os<-C*rrGl?({1>w7wz~v zHqQJ`;rqk>55c_Joc4TiV}0JW6n0oG{uqJU4!eVd2#pfQv-a|(` zzS|c&cuvH*uLj~)qu!Wn7>`edvnCg2jmLQn7omD=6%KEI4BN~&ig$xg;nM{>@X_=Y zIP>f}EL?UH;|9IJsSP9nfS+ z683sqj;nX=z=!I4ao@8oSb4VslXMmM<1a1wE*3oRwcVC)l48zx^ltY5adh5+SiWx? zxA)$A@4e5%%HDg=tfFKTB}zro(oSi9744;@B5BYR8rn-cq$EnD^j`1pFaJCqp8LM9 z^E!{uah%tKtI^uf&ey}^g^H-xQ~>`5X`C7rL3S-KvTjY%n94ZK`uv65H;G|M9uMSJ zaY8WmHzmml85mDSt5P(TNKYn=&WAwK)v>j!T^nxEo zv;WX+uOIZ?d6+^qz7t>H7)?y$gsq7vZk9=*{j4Hnyfq-zu8#w{hFB?S3eA)_d^+lb zAu9v?uy{$rtJl-)jiD60Gl5E9RFcQ3!?dFAI(5IkLe(L)bT4%?IaO_E&Wi3Ue~1?e`Vw)CYBnz2rn|m2>D~aTS@*Y@))-yVTk6 zkOKR!)25ZjNL6|Zn;Bk119j^trED#2xU`f!7Nt=PpEG^)RiR`Jeu_`}WB0t}x7|H4 zZc6PIp}YWw3wTrIQ7rh7Gsw6CM-bL%KpiL~F?^|3#%Wej)5Z1?- zfdSs?Dx*A85gR>aP<2TXuhu9au0RSu$AwTm$c=AnIpFeqlsp`slg7zs^mye29np}& zi~((&5tPNjsr=Z{BZwUeyqFWs2bV1pP%{vRdz}Q{Z4k#b6J89ta-i$K-?Y1j3j()f zP(QAM0viKtsFnupAECAL@6$E@XLRgV7sZ4=BvtD-6#96Ct|bfLk(?+F_)8&WNEv&r zwUM*W5YrEPLg&qFh_7FY0fSi>@Y8^!TnE{U*U}s3YU=1eOXH@G$#%;t+PUNn(>8ah zIk$^C7T%}d>>jn;dq+KSKd7Z>gmmV8Cyo1`>8o-NZN1b%%FzwHyv||yCl$X-1iA~hB?KrjRb&zh! z7s}QYg=eoSWY6ls;incZHOOM?G$A-H6UH_vF`!xy+0CP5Rq}*3hF_!wp}T3qmerjV z3#e&o0pr;vbe(0ko*Fe$`hnNf^LmKpgb2blS`F8t?J@j=_0%4-uz4T{6q%2hn0)Zh z%f%FdA_QgTUF z8aLeH#84a|hZS#muV= z*_S_)?L|%~Z`Z}vXLf*-C>-m*Q2VnN)bsZpIWRt@YWbPAT>42_2|SpSA&Pu)aojSJ z#9)jpBG##4bFD5+o|+?STNrZu*J7;aAiM@Q!sBEl1f(@#ah?|o)rU#o!UR3q|BuAx zP0(A3@6^Ngm(G+Cnl$0S`BEV)oGFF--O5N=s)ZUMHFU?wq5Yyb%+)#J**ZWMete~+ z#c!Ek(m`iqj*ymGB|S@CPOYEH$VhuBo%+0-toSNOZqIotkv&T|dV%}`?~v&9yL4Vi z9=b(B(A46>NW}zQojyW(A2?8dRuI1W<0P9mLMxs=rC^gT+P?f6*)6(3pLuRm9nT%& zzjuQ+>D;09FYnUzN4E(R{j^4LoIKxhW9CxH)KH;YFKP(1jkR(_)m=ogEgP2im#7Mca4(WZy_99sE0+Ww$T1) zh;IVA(A03k29DXNah-+uQWw~lO@ZjwM66Fp#pkC1kh3R@B-!DVpDkWU>4QH~3P!|@ z+p0Vmy~d47K1;l|0B+1w!mDNj*k0CyST3<=)EU~QKIl3cjLtVx5#2cx?>=QAHf;uE z1E#{rFANdVf$&O-$9?{IY#WGz){&39RlMgwsgyFiMAFo&PLQRGn74g=nkZjDZgq(Yvt$>1kW=P1g?|AspDP*TuZw8+87^2jm_1 zfg=A5P>I|dwg|GFO@XKG(XoZ?RKfal zqsQ0iUCt$H7ONv(mpaPZeu8f9YoL958t7m`GbMcaNBsx?lD9iAT5DwSDM=RILw~4w zArH1LlE*g_e(0YThC>)1gxIyTGUG*fr4T&UDPU=(C^AQc;j-i(-A?~Z>BU?auDV0X z8Q1B>q1)6j=K`6mzD5J?9jw2(Pu83IsEKQs_`@b?_ZJa-{lc!}N7nBO`r^*TBz)Li zgk0M~WH}Y%Dt|hfvLdijFCW&D1=!6o3lXe0P*|#mq4h%8tH}e-cnRZ2!=RAaH`86 zQcr@xn-dR(^avEU`@pa!7DaDnA?L^pJkw9cm{tt#I%Q+vS{_`i((r6r8pf5AQL;W5 z=FhE=q@#h^-AV{NEDSH!8!xQZfhwmVo?kbB$66DdaI}U`w#Az$Tb}HZa$C|@Py3`f0ze)g10jSsoRqvwmlJX)`3_j z=Z1YVP0^&OiqMBrn8*}F{X#C3E*qy^Qe)&WWsHQCKhTzKZ|UaH2*u18B?(0#T(}?& zDK%+q>leg#J5fyYlg6NwGPv{=;o~Kacqw75n<0Q{(t_Buh6kIhCTW3JA8iX5A*(&y zc$%gNS9>LR^>U%6mj@hHVi49gftQ^tLbjN~^0@^c9VOcn z^|Z|S9GjnMpyZe5Xrps0saISj*B5PcnY)wRtRGQ$^J8*k_1pdJbrR@1PXz^a^iHUb zKFaT>Thq_5ywMGU!ZT_e?j-|Z9w_tk;F=02rm<(c?I91|-{68UHy6a>|Iu;XaXS2T zghsu8(ke54T-_!Le;!%nFXBf$TN@smMNz~riW25!WX|Hokp&ZERwjz#$O+mZ|CY{~ zexl{3Pe{h|K9y!Zr12@QXd<|mCKvpq*p83XIqNIUDdd8NjVy9l@1f$Z1uk1_46C>x zcD)BaXWC<5umxgetdS{f3E_Gb+?XYVbj@*!J@uaa{(hp0h28Y_-aU%3eM$|yV&lDf+tq?_?Q1yz&-6F>Mc1_1S*EH<#rs7Ow1Uxl- zu=$oQa?eP?k*!P3%e>gUL;)KbG;p&=8-F5naJNqrx;Dz-E0e>X)e6YzRL2?%J(%t@ zg_;TQ*1-`)4pSi3;(>3W-dH~x3E7GmEZO9R+_@gmcXvdYkPFs4_QOzEG&aQt;cJ^K z#0xBN?~De1c8amyi5vOlzeu3u2RZo-P(asvy7=!EbsK&rT~8i-TKt7pH*hj-Ee10K zNtAa>ASGS_(MHB>E$hLNO9cTBWYAZliWe0o_}6HOMQ3#&^-=|qjWP&(pn~cWLn!Ys zgtmt+K5*+|Ce-BR8f44WDlL8j+!eJY;%+T@!lX4oTt0T8Yx-s3@tx& zguZS(N)vu}>FVC!G+rSNLn{SrZW2I28$ax~3c;vN1a1j}*z3UyvooByJ7zS4|mfyJfLOjPsum)D}5~ZNvWDLuvn&wTU!;eepm`~mdYT}Ukp?B3uCb> zKYTT~;k%Fz(;yGQyD~6)APJdnDQr*|N0>Vw-erzc!@ZAWbn6SvT=tC=-9~An11}y4 z%fhfy1-TMhP~E|Ltm%eOI&O%BN+UG?(8uOF6Rccmg{FD-NZsU!h~G|l|Hu`y9lbCy z=73Elwz!dC1mOUCEMMq^x;GZMoWN@MxDg&zI%85M5&RJ$%*RQB`kZV8cxEI2STtry z*&uP3B)o*h;B;RVRd)?>*-{^h`?bOAsDag6w9qh54~eFF$l9iZ^{TqK_sayIq;0TR zfpAFJ4u|g8ApErrp!v=GLfNjD?P}0ytrMNL#If0B6V8c&qNKLT* zhgS!?BxSKK0uN@D$7QAq3;!P-BP z%!^e+^;=DJWNG55fgJiy=^*yK1AIgR@#CovioLub-)Rpyc`sp7$bO|5ps7p zW79Jqv@3;SPQN2wi&)|6D{ts^M?yj~2#E{q@!*#bY8M@+e+o^Y~n-={XpnVG5=sYS5C8nYB**y(At`37H4eaSqgjl`;CJN;7^PV&`4{D*Q z-wY5j#z>JFMq8LR+M|r&a%F_)OR>Kr0?!H|xVsC%_bor9L%G3K$Azi&LKwL&j%jNZ z@op#U!PV_>Zi*-F9ruCj4mW(fY=aRuK(f&uY3BjY1Mb)(1L(5;|7)=iN+}E>thbmL z_s6Q2Zm4+VhDCkOXnD!j!aXlsR!oM1>k?#MUw|VYXF=g-0-8UDV;$2hPj5S8Pqiy} z#Jpiw2_!4p;&e**$7`l1kco!Ieo>pHt=lkGoq92?xtsp<5gJ4ZSc_I*6bDdGgKHvDD z3f79MW7|AI*w82y6)}$bX@tVB@qkoxV}yhM=(k2hB%l$5Q3ksEFO$2->C#3b^IAUD6CQ0PT;A+}8Mi$kIx7$_ z<$a(l>V}_(oiMi;xP8(RMNh4e>}rj{1&)|;!wadegV4mwYLIg{@^6ITaJ4_W-g-k< zFdWiqiP-Qk0oTN{;O;mN=`XTzJZUO0FBlC9epnskhNWiiSd%T6rb4PH`^1Wc$5$mA&H!=TCnoc zK=uI*JPuGpVyi4tcF1C?fGlKpD`0%NCbZM_QIV~Ss1$WHX(=M|C#wfWg3vKh!qNgm zG)=R_I~fP;TkM1nx7j`?Yk@-tOd(tg{1@Pey^EZ&B-{bPMXcYfn})50OR;ut5k%PY z9a)os0wY5J!# z5qf7jF89pD0sAzZ_-c*KnQBl`SHUbnWAqey!D6~C+tZlVJjRDl%LE|nzzvUO_o?GV zCly)Tp+S+G)bZyYwN&4uY+EMHZV*M$?r5!*~!@;B(4$$h%4_kq?YapOvZI=l*faQ9XS#0nhYXX46y30qjG z7$Iq!2K1SBd-X;Nu6rb*@kSnZg5@CFB*0jG)=>_!8=X$yg_Nu;=I@tE+3v z?J!*I3X?{r|E7815?tZ<#Q_m&fVHaw3VWP!on^H0W1=9OG8MhWVFV8Px85Ab!fY`3)f)-%iLhBU6_tY#;Ba=u zgL*5x*<*&GSZ!RNX@Em){l1qo#OpC*+#Xec)tD%_Sif2QeVi;#$e_hu9&=_ZV2oE1 zr7cpJ>7aztd@U@$VTxDI7BFTJ)`=kle5_DKJ(m<3H%j4#v?{b1L-W$L19#OFte@kI zuviDEe|3aUzYV4j+v10WGb#q{(Q(cm%5%f;$Ey(BhnM5E>Kr7crsLUgGU`TRu|(P( zr;oW~Is1IVw*Ck<^8xSS5PXe_!C8<72=Fg3bteg;e@IyL}Ll>4b1Vx zK^JQC6_H~p2gSvD@X9m+*A5`;q8ko>@Ib=@7mOwX=Wm;1b`0w~51Qbpg8?*^EFk&G z6c6)F*&g7)K8rUx6(jM$JOaP#qj06%AE%_<5FpL8U8+4?JnV3neOBHWdF_Wy5njj?4aRiqS@@_Ege|;280+=N&l4eV_~VZmRbD8Ma>ABfE|6?> zfq=Ffq7r>D>%9~9vTJ@&#|fOD95GMH4Q9*SAua%n4_M;sJ2QxHu?CN@Ic`TyL5xQL z9-WBA4xJ1b^yeelDks%C)g*<8a5B)h38hP=`&kB5cakAo))L^J}HBN~(mG4*|Evd_+4{(LG)EuP z?B8F6U~{lD#Nw2&zmOYeckrX`i8^%FOF>GI>Cs+J>`!L7Ywv#A9`JL>ox+D-MD|Z0Go5SFw9gITuyp=u*fY5zEJbM!btItuGb;%!^y{?$E+!gukK0dq& zNQjxk%fl0L!jUj`jKtS@DOl8+1FyrgaDOr$$G3){f7AmK>m8YnVf#QgSZ%anT+$NX zf~|4>f-5{()@n0r@{h9It+FT;hh76r@nsC^s48?Wm?2t{-Nz)RcQ*KA zYC$ODR5>`SG!4$~*|6Q0i!zpf8{X@UgYVr?&5i|YnQsKeAY-JwV$ZUHCKgt?n9ah8XF?U)E#NU$uJo=L-Rf{oF9_MG+uS+&E&@0JriV7#SI%>F_eV!;B>$w?QLT^ zvbKp_SMR6VzqPbJ;w0U;afALF`$`=0oOu6)8!lfaX?^eq68<$nZ`vnm$9-Yk_K?Ci zMRgorYYnY)zL-4X5AIMGysnsnw+mSP`fdhAZEH;F(TB!iZ9J;d!?WM!NI3!+J)eTw zOeYk0*aaq2@AtunEi3VG$k8sYO}%zA$z=3b-|{3cg&q| z$7Ow2Bz%DAdh|_tiYiJW+^ak4g}-bs0V- zmqY*f62$i8qM~*V*5=K`Q^{FyR?Na>p)~Y7XFXb_E9xqMNA}w27E{Cwmb0wAERVZS z4Ph$l51F)3)ISPEOm`HLZ$v>rCJkMzPk6sN7&lqA(x%oJg3YSv8x@Dyt6@5BK1`0Y z-q04er=-08I{itwOE06CkF-}5Rpvuf#(b#!9USN^<;Fy@JgSzcK<2yw6u;SlXH6hh z+4(}g$sPyZn<1*f2m>>0@#~Qlo>-bgZmS{uH0_|^!|utcIMfM5VRo<&Ooi?7nBD)0 z_9XOV&%m1cbZnd#hU24*&2#{B)&PfFT=8n}6xJKM!(Ph|98UR|7%juB))X8t@kQE; z3}{}9f;g*D?V2;utCxspAHASC%=q!UU|dym#57$!jK9=|>3e022dE?EnK9J*lF;;O z6a1?3;q_1fG4>p|_WmB-?RrZb{9mZ`RxhnyGeo}0%!_y}4EbHs`0$W17UrFPsT(Dm z107Vj>pbPebWzuak8~EpWE(n30zzEqRN+N!xd@Km6^3?;5G(@((Wfg9`&2W0Tg>+9 z+g5mY(E@qiHfYr*$lSC-?IRt$5M)~TmKJsv8$-;=4%=$qorbZy+U zSHQ{FBG}j{g@$HXbZDwTAYB`Qo(727Zin@OJ`gXDg$V1VwKLXpeQ>L0Dt=nb!I`K<_@rKl2Yrk2)^iE^^p>Iha?+T$Hx=J@M52?=2M62j@ybOLe_v~|eozyhRp!X}5CT2DSg0?I!>zzz zaIf=5gQE}lN*r*$(i9%A?6K{GDUQET!7oQ4oYmz(i_8ESw~o+(@@KT!>N5FO9;Md8 z({$Q(g0^!CV6)>8r7vN=)e}x^?3Kd#1FpP>u<;`TAGEYaswpi2^hC(_j1nUigvB)g~T%HM7dMpi^JgLxn z<%esRTrg*!6V`YUj?DEzqGkwOyJ8T~G7}%QqH)$O2p;9Zu)i3HvAGG@5IhZ9O|#Mb zy%>^uv$06bg|Q=dTnuJe(hN0hy(I}7O96<=^J0971mqvvAbWBfe1+$s{VB^XJnEx* z&pYIN@+}P}pQ4HGZPYnlMb$P8rI;!rkYzFT0nl4!xivy;jm4>!CL?e`!yz z80=jnkX0*++GC>NW3|X`QXUWYi{sfm0n|A2p{`j3qqiAXT%m~t&zZkxpa6DqB>0v& zp?}C7fvL94&(&aa3-Va*tcsEsHrQ|-hzm7_u7e)>wT&U_@%VM0pSO9UEOw9Z^9m4^MxRVkFJaC4w zfiofu0+E<&jj_k3=&ohajpcTTxnqsbDz?aDtYT!q1zppf*?!`LH&ujw#`ZX^eBsp> z0dJc$gip-E&b=8pGnk3&vK*|vlLPrg#_>O-!d@W(;ahP>F z7|j+wK<5<1jXGkY#|ptwM#%Hh#JL_b)LipIXAhf&V!F6dEC6i|&UpF59*3EZdaI{~ ztpC)IJF18YaXolAvgcv;Z!+36MDi;h<*{N9Ror8<( z=A+9x2h(+uuq8YiJZqydy(k3Pi^3pNnS{${(h$_2f&STPSlAkZ^MYlFG54l($Hf?roGvGPx%hA z&vK!K)|oWCXC3hhY$COxU1ZC0Y<~?uPbC3Y#`c7 z%%|5z&`CiAJ?Dhm`=9js%@^wOW86Me1_u_%!1{p{4mryp=aw2?1REmB-Wn+f^q@AO zg7dbljwkA&%H0O9PuRg)#Q=9iSgn~Y3qh7ckIYxbh9hc-`fGqW&zy1NZXi6|!qAfG z58-Yf%$^d08M;BZ;O>XAb?zu?_J*5mGQ53eA-#q@7jF!){h=k!tqsFW<7D`C7U1oF z%kbpi0xUMqz~I?T+&P_(f5uC(_i_bFvKv0IOndA_wkFD)aFj0uAsb^b zuqhJ0b3-xuCm6+^K}ee)fJNH_pmmk$qC)|YSn7dt_Bm3|MBwS+aOB7av7X-^2ER=4 zH^Tyr71|JIn#X;cHWc*inU9!?7PVaLbWMk_M+zhwqu9)p8&2%D!WPD7?;bG5$<_K0 z{h^2}Ng4M zuVj$;p33}x(Iw_B7xRzMz5P5W+9V6>Fhg80bHqKy62e^)m_Jp(e5z$gQCI@qS99>= zKq`!`BtnLhFEp6Ro)_I-^H80TfpKmBiObP1?nP+p(3kF-fpz+ffJC`cs zBlB>>r~IP7gM)P2o@KDT6`^-r27KFP5FpQw-s5}-Nsz(u5-l9rsgB7sRb1Sp1hGSR9F>$SFZ?zfhD--xB^Fel5t5t41d?Sp=g}2aiIjRbV#zinmG8nH4qSIfi>MW z=&rHCOhGH0-0F;k@Am9?Ob1A^p5yab7l_$e<0T*S1YTOpnBdN4 zb3AXf!u(ezsJAnN#13=(sxn3f%hN!{6+%tENO%#Ap^HvPV;*^-EzB8mbah(pGzfZ1-l2~3U2+g!t}X&1ZvJi z!bZj!jejk$U)TqMfkCid5QnT6<yCj}54|uR$@qZfh ziiQDd@0j8HRXv>I)rRCTJ^Ye0#w(UR`|&9e=f6kd`%Y)<7i1Y+#wTfs3sT!{P}TY#au6H8n_yXp4fd|`WSK)Y zU;WV=_aB(SIMx<+BlgfwVs$#l0G-(yFxjSz?R$;!;hPc;J1L>PT^s6K^w2V3h=-mU zI4GtD{q-v7KdFt9qsE9ABrLUHpUEWvg*9RD%rHX)%O^Pc*uYeoEaPQ{@q4x? z+U5l&HgKSwdB5*Mac0I8s2mPL|FvkQtsJqgQ4e8lrdYGf9RDe}VqG8ehggy7@Q!XKWn+u{k&y@a|UZEPtwWEn{vG;-Tv zMFwM>&kb-a+#2H)f~l8MFg%!q;hS-o!LDEDWF}j}!R+4qLCDe#i_f_s?zk)R^nF?8 z-w)@O`r>B>%PcV+rY`M;o~sE6I3JChDG7LCm5!r2DQy008a!qPf-`~nE*^o1<;z9o zqI788oeKA^*^o0@g@LM7hz^^JRMuZjPn`+xq-4zGipK?^Shxnpp?V|+I!p8s@lFye zbo7`PRDu=1THvT&3E5AlN&bv938X1d(RN-M)SFA?Y6{dB@!2k6lMZ$3xzL?Y8T2J| z70tBYMa~b;QOj#d#`VOIkd}^I`IB&Ks>GwsiTGV*i7s1JJWCeA?dZRxqQwg(mPd{4%` zxr|e8_QIDt7P$QlSmtJj8r48d9tg$X&EbeWUy6^G%b+Pzgx=k0h`AAln4Nw|DU3uT zW05N>BCzR`5$5b=S(OL8X!-Do(qC{O?Fq~5DN4dEQx-vty(Y@&Vc9NA_+Mwds@4cs z!&IR2O9bCEh0r4_1Z#-F$WtD^b|H;ZLppCbi}MmbE2mc!gx zve;y#&hquvsDAH<^z}Zd3HQbdFCDc1GJtE65>g!{F-?;f)!L$1U!Vq43pWJSvEGhx z9V4qSB*whn;L=pJLhAblM`bvc4+np!_V_UFzE5ey}dyw>kYzw zjcgpfl7|Ma#V9+H3DdLDc=#+Gk*u%Vt`Nw46-TssI3b$H9HCOK*wz<`(;bm0)lNj@ zyCm$epNY7;=_tE39l}0yke!x`FQq9^?DfQd$6T?0fis@zdSlEg6&|_MP%EDX9-Bnm zXj_d+pB0!@SPoI+d<0yXj$bCxs9BuK@)FTdOJ-a+ISJZbkql+cz9OX=(&KdlfHCg)Zs3R|&~D(;>owQmzt z=j4F)%Pcc^i+PZG&G`Fs8xGtpf%VPln8=MpS{K`Ii{fy8V-y??h9WL#D|U%)Leat` zC^L`gNt+KW|9Rr^6+4vvr;Moea(J;z3R7h^E=?|V|#R;VI1g_I?E(j zVEI93ywG++`5fjcjuE1qgE8@#`L4mb2v}-}J=;xiX_h05mHps4=m_UY!t)w7?`123 zs@+ofF{p_@B~F;uIt6Mh2a?ss*h*Rj4xeEBu{i)P%rkpe7Y^^!ZkX7uhp0zUNX^xT zNG(5xSw?kp#%Fr_ub+6! zGv84z-&e{m@6@sIAyOhwJ6AoQjQV#(w# z(y(YHZvFeDa<7jrU*vRkJyE4wgass{@n0nurc! zd&hGhWOGNsW@9w6tW$A;=`0s1#*x-(Aos5xls%ZQ!8n$Y|5Qk~PDP;*%V{$XG3UxA z7zA#C_odaiye$RixWGJAcZ{D1ZBOAF?X+4)FMr6D%gm?Za&);5TNLvVl| z$a&z9Vl{FOZAHqx1&A(8K!vC~EC(HMsmT?mrpIBQQXVRNs$hBQIJ_tYyn9XY%t#-l z30m+wEdz~*a!~da#7z$_m^~7LgQpz0a!l}_g9X$Ko$zDS3};yWp*+k2yy0OmU2c#0 zeSm&SJo2y2!{4evd{|`*sm&(%$ohdi5j*Tq0t5rt+;+Gc^8U!7V5%@$wsB!c7R&8C zHG%t2#z}s-;}18}hdvef{-hY322oi4ZWW%M^=C6M8fZPJh+uZ6#*$^zz!5ACVc~JI ze>*_wSskRcsh8fK=YrA{J}iqDfU^zr550epjch-KzkER}*4(7-Zk89Ze@_RxxESY@ zM-R&s|B&~>_meD>_Sgc=5gOoopn!oyb{5Wc0W9(1gPf``-uEk@lkI&Ap7`Kvjz3CM znE&P`0B*+Rx4(Q#4%_cimi-&j6&z;gOZHQh`6ylG5`p(i4a^HNz}$Eh801>uS8)<_ zPKH6yF$(LAZWB4=K2b$9 zlR_-R;b4!u<`(#PO%o0+>bTgehMzhnj4zwRH7yK0Q5m?qJO!V>{lBKmVhp<)hM5&; zlUx9y^gwV0`QS0*O`Qtm$}kM|hoM0{1eu4@(0@4_)wacuI^2k_T7~$?xcK)=nkW~R!}?u{ zaKFKah)V-ByS0P5^6pcB!v|V^fDeK}^7y_^4+qN(AlN34Mej^do}L27@9gUqLY?5p zGB6+fLs<^X4%g;sVkYG9?I;h^?IM_QmJhF@dfA!TV>GgMkRFPBrsKy(soY!@eiQ0! zj!FX@Gu`3boq?&NC3vc!ZOcAvYw1T zgy1^MP;5MD0#}w7bZ>talvN&`44HupB92c17*23(fX(s+H3Zh)F=B%{3}Q75Dk&}IShuEoph^EkIF469g= znzptaw|`cnplK_9?%fGHqZ8Oudjo5~o|)4|J`f$w|$F?J{s5yzI}eC}=- zl$JtFV<8M|BJsR07^ft?(09ih&ls1s=d#43oh%Fdn-2n!e`&Nu5dN+f@LQ>cmD!_| zv2Zh9@Ka(<2aYG@i;_&NmR3(TDa9 zsNAlGB_iDLTG3Bt0xzj(-a{Iw=pgs{4!V4|i&{nA(&@~r^kvFfn(Kdt)Rg!U2^lP9 zx%*R#Wl&JSxc%+)|9PVE%(pt5A&X-x{!nA~5anL`PDMt-I6O}TtsT+qObsdUth!9` z1E;9P?J)&-G8VXCF9rQ%XX&N=q4fQ|^yc0*;+w~2ET6oiLuG$RaiJ=VW;&quhb;nb z7@#;&6RY(_aj>?Jc!FQkV>X*zS=UX2j<0BD>3j0`9Hp%vdr9NPGm5%;f$s0T%gz=% zNqG_nsqyn6+N-~Y_64n@wVNtv#C|jVnfo8*SRSLiMc3$O3>TUTb+O^HDr!CCz%$CS zvoZqkWcfNdTTZ0D#r9?$e+^={}Lgo9ZzPFvWon`;a+G}(x_X}CGerLgDGpOx$g&gzNH^ys2aE2m^ z+JsQ!C{fh8@ z>U`A8ltb@K0U9~VSk5UHE2Dj(%B_zYV^+Qx?{KmgWY^^n8M=w!be{~emWDBZQUx7{ zG*K4xlf)xR;kV@qymsxOQubX1H+ouZyLWE0TS`&1*q4{4FI1&qeR~?cGIJ!j*j@42)Dj|wf zFB}lLdy)>Ta^ix%2)HWMu4NPLDW;9ks{iBYyu)(t-#1>Vw5N(F zrHpp!zTf9{iztbVP?7A6$Sg!gL_o8d3Ea(__oV>byg} zN)^^NUBGVXoA@-~62hbkvGV*Sf>^*UC&l;dwoFH}}ZlbYuMI#nY_nIgV>=<_>0JBP!Utmx2=#Wd-& z8TZzx+y2*G#x9mCHVsj=+}w) zWbeO%o^P<{-@-N2U^9ZK@Hu{_Wnhf>O&r%O!YW73Nl1Hyi`QRZ>!W7m?)eI>ZGZ7$ zm^Nt)P@;Fwb*bQoGj#@7&>cSiq>ulNq}qR2Q{RbGeyy0?(2FY@q^aQ302-X|50x*K z$RuhEJ+9^cx(J@d)Z9WJM{cF1gV&K{haU|P`qHG?yXd#YcDk@~7u}n;m2Ud(r_+6_ zNnl`3)m_|EoMcO8CspY$-}MFgU(gYyNHgw@pvi`V$>xa$X?p0=DLGmGeodxa%`3Ej zSt6d@y3U^X?PLRFU7sG-wm|259i_=i|-Pr7(w}Eh5KsBf4l|LY~|C?Tc%6mZ!AH z(N&pz_DYi6D0QA~GNkVV_%oxWLOndU+#8@sT~E1|`Cgm)1Lx9!$a}c!@D$Fk|3Tv- z*PFNo5YD|6mMUhncj8>q@VBQY{SH*!=S0bTH|gTHl;MN^!`&TMVR7s_v<8*){l=J{ zMa-hHjUw`z;z%!#>(Htw?vrkjA!Yt2r$LVVy_D$-*Gd1V@Ea`mfApyesdLd^nEjTZ zq1v)E*jk3$ISJ`VqeQ2Gs3G?8? zJK6pnG~pdR!!RXqJbd;#;@X#KsQBlKn|mU$VO|V6(@OCCzsHz-tPRcPotV14lxI4> z;=u$7njK+CWm7`v@YF42zEPGsD^zK|1i$rgZ_PHC%@ZbxOHrOOrmCQjF;zWNf_8**Sd}zd(&% zhVvKpKx^(#<98413G{i>e0o0Hmg4gEl4?sBEf^I{H&PFiRdyuF_ROQ}b9Ygbtsf0< z+d+r*_EX0TH;T9yKtf#+i8{S$Cimv0)oDma(kvpihC{=k^Or+Qomxu8AMa)_W7+eNaYaU+e68|e+}Ji0@v-0xwl@Ol53Qy z=i*>;e0j^D?RxJ%*I$ z4g7o2inx=C+y^8_iMdkLswzW+(-g^MycP|dY{b1E<4A|+qlS*2O689&=sDN4=`UxS z+VBi&uL9ZETT}SyiL`M(&y;@RnY`Wn9du8PQu#fpz+faL?;b$2>-pblAWwc-f1uf9 zOzxJ0D7!|1t{zvTF&_F<{6Ly^FZ_*XYwD46{SJiuu5Y|)8hP+tB{oKmOg&#Q`WSm9v#OyC*|tD-v$IVtpeY#-7j$H4hZN5vwR6Us zcr8UIl~bYdEjoJc2BmBIQqZBti0yidtr5x;sqqPq%t~<0>=Meea&W;d3||-KAyhdN z4K+;&v0IMc1xFxIjDi=dz`sgG3gbSb^Pm4=l+kyT?b0L5Ckv^7`!a%87}FaWW%}B! zOq`!@hv`inxXFu(}%ri3M=aahqT*|uUL_PLWbkC9J^0<%l-Bo!$JL_}C$8S{6 z9Y7nGO3> z{ri2WYBWIcQ#ZP2@_EFV`)bUK5!RWDGj{2i_cs-LKVQ{|)M0@*q_PU@%oEW+A{}q%xI*?t05)$LM&o%-#PAc(Bp>U94A<*opoj+#>3q>c8uPM{Ogan6_Cy*zS*cCVM+VTErpE|7odvN04`Dbj zAGXq2SS!%O&Qt{t2Q@C_;t>v07O=VtCv&cdFwBtA#d&GnVUL@`Oi%q4S^BmWXK+MmXm z-JX~@!x8CPA@J|x3(@fzb40rp1Sbj6BSLWH$ z0wbQ!A4q2VUU8OO9ZIAd5##Y1qc{G+TqPN@IQ9;n#R9u;rxV3a@VvaSJyXKGp-gp zpC{wY_!=C({t(lwE@08JLg6iysQ(MO9|M5E3b}gp#+YX$E!hQ0a zw73UGnWphvdDHm$IM0cV0GhkHz54w=GaSr-<_~bew01Mns1@J+C)-*o<+Vd{i&FHbAE;YgwCALNamX3 zfl-ZEz1fta4!hCuj``%>zJpFYwxa3<$Dwt85_*H(ATewqlDg-i#V-J=b;prUK2Y+V z2LIihH+c0drX2S}K$$Lft+a>bzzNvscMzMew!?CO7b@4^#Cr`Ln)R4xvh-A`UPFe$ z21Jq6s4nt<%xGflb!e7#;^uR8ip^G_#Lma)zc`u(hkd}3{mrQDSEF#J_n3ZY5v@&+ zr;-N;sPlsZZC#~FX^m1ezU?PUR?5*%zUTCC-+A^42a>q5kZ$o@nB2b^^s#Uu$v=sq zdAS=YGF6Q>C%?r0aXgcM^Edup;5q!bBVdU^5RM9kL)lc+jrquyUK`F?rt1;8ZZ`jS zZVTHn{!j{6gu;0(q-Sa4Tg4dIpXK+ttvsWoAAo}C9qi4hN37}TIp(Igoux!Nuu~68 zSl$+Z#B(;XEG_d; zC8<!UH6EdLzvxki$F;lAN=UWZrNu(P(k{Y5E&89&x{<$tZFS znoMUcC(|MRJ4st{?*aFkJhWG%BuNJfST%~mXZ*x)y^A=xBNVS>oiR_x1MVuX*qYW! zSUX@KJ^b0tj!Zp-Ux)f&|5}b3>Yswl>QU|b6v@}#V#LLxWFiV7Rojy!@$m$?Z#qKJ z7sBZKdndZ2E2PsyJZXD_J6*^LB;QDXQgsTW8LwiiDTkuWpA>V@@+Uy&cZ)zikL`eUD(S+q4~2qm0v&N%fu?EnTlf zujD%M>7^X4(KtqXFK;2r-$`#y>>|-6M_Q3%MYqgN=x#)*14YB}g_fqiwCMc6n_K&@Y^sbXuzmHEr`7ugs}W(e5~PoFNYL*WFJ9q z282?pN+jJKluHHMr9@}!vPnsM5bfQZgI2N2ctUk(D|v&`&|Xx#a86@=9!BMs;PdCF zP%o9C6|wg*^YvGpij}0nXGTyH6!`q4DNZW{_Uue+@JAIO_=6PT457jXoM|(YZX3eh@ zIy)1PeSar>NBH8{{P%om4L?8Y$3(& z0utL3OFC!I(sa=oO5T}DMxPJS+?}pG`@=l~!y@QxM;e7yUEmzRP^!rap_;sOa#FiS zJ%_ea5C3+EG(bNm&7dbb^C@58Ovy9b@v}va`>@8*&muFb(DESp>*^HwQj!+^?uSau zdw90bK~~pD4BkVq`=N%2$?|wtCxtO0Nl0E-#>Z1pFk5d6sj6HSJ2HZGOle{TOS~|~ zCYrNE3lW(jPnOSRDfNatr9ChsH3b_=Tc|=SQu`q7W5j*1*Jy~b5BJS+jzhi)O=#gc zrDq8X?6Q*G)gDx7(m<|SxQ?z{^~ay$vOf6^2#e+VnNuP{PP z5Bp^X;zaLHwjx^svn`ugZZ2ci-$Gd8stVnEeaGHVgJ{4Bw#>AP@u(`kgCyMWdu zC0M1OgO!GUhq%JW`<0J%gzx#(=cL{z5lJiB7B=LnAxv=()#2y3=J& z8;4G$>P?GDeTN-=@(iVfpaKf{8A-q9Ra43GJ_=NsNQVYaqWICrX@J)ydUqy`49_2< z=OaVulOgvvc=?g|HXpKg-%Z9ozSI(BO&3SmQ1A>7TF8BI=ehQuIAS7wc{YkBa{a0G zxgG7UHKhwYR~^9b;$^-@RQ9R^gSOt{y?XH&HY5*OnbYAqZWLY}-Gg7Rud**WFPO{r zbVM86!iv3C6v)3<;ac1mc{P?+Jm{dYPg^K*r#rnLWJ9$(c9T-EDw%{0;r@qXWLA2W zdopiRc78S~pG=|f?n^W=`VhUk6iAL2r&3+&TRVLNLQyk=#(|5)?R z&&>mgwY@){Nnlx&= z5jB3Phr{b4%#s78ud1U7R;KheZ5SD^UP5aE*U-43_lY+skcVL#tvxhElwQ(Asnh$Y zH?Ep?Cu|`PUlrPSu?~fUDxrU`4z9(HG=9NrQjs`7m+!9QS+OJ3EEh(NgN1ZkatMk3 z4WzLW^=SPajbt4!47p=X>SMBD{!J0Hqubf}HI>ZhRRde_{ROKsIKv*v`?JK^>zQbq zBinqnhQ0hC4{DRby$Mb1{oW8}vnGgnE>&g^ZC(k(J#vLE9}f$kJnaxF4pwGfSH##- ztu)~*F*V^zNhTb%YCH3roC?2hhoK&O4I64L$?{eVz0u1fAIY=ydu}JzdwbJQH5t)@ zzds4*gGl8~HHO>m$DgxDaDZoFVuCX<-R1$5RPzu%;skCthCpDG3*#%C_qBQ?C2V|; zn5^%3Ceo(WUYr$es6%%-oAi4o-{+Eej@KiWYC}^4$i5dZHq6{vZrUMPhl-pWb%6*pI`So^Gx~Aku*^XbbUGJ)F?UA z?^@1k3DBdeJTrP*GL*E7htgu6;a4?A;#_-TeXWSexQ>zYGO=}ABu;NvL{RV( zmNDipd)_aGx4)mW;HA%4`qx|*>Ux14T@%jM%nN7tJBIwNgOP2S2ByyRKf{q?uq7kwSnGbvilXS zl^!BWIXyyTA2?5>qogBp_|r>%>YjA=YXsMYW|PVy?(_fE#hL&8sNb(ba<6#5$iFhG z3>i(Y#Efa!Y;8*4-;242pQ49qQFFfuv-h3F^OJGNy&J@DI}Nbw+k_o=8rl6pzu2~E z-Hc9sW@n#wu#KH@%tb4oS>5`}EK{em4)bVcd+Q?0b5Vl%gAXjb`aRqH{T7p%UCa#T zpJ)273Yol4ID268S-AAv65(>eeqlqhyfEm)1wrwg2J`=% z=*Jn(dQA&zo{kb(iP8$6Vy>&b#=t zD<6~ks&RaE8E5`KLPy3wyd8QS=4}@-VM!Y z8Y=jY#pk3Ugex6TkAM@%7<7mdtt4t8ca< za`FjWI!p5)!;rpd$n3UcwOftTJxY_kk-TDmPwL@syJ`HkcZ-Req3g)YQMs{2l zM73#nKSq+&OX`{qyq>!*6Jk{xPVFj6{p! zVl4Z<58AJuKr!kpkt- zmV%KPvcfc@#cW8q8#bHqUL5g9Sf>?2%kS=_%JxaLzM0>}Gi2$)dIQBD*ldx1V? zTGJyt6?!LTN?+cWAuIYA4(cVKe};9QAgoK5dX6Zu|z){bWvIrq$YO)ut+a-exzw$i>lbGk8cApJ3Wh|Miu zQM-lfLPnMNEZ>2VFFJ9JYxb8ns}f6Mw05}~IouH^&8C;|RegoAt3F_~qzz=Ux#luN0gs&XJg&ZpwN-B_BMz8(D|Hr^Mum4Gdr8!u0$mj3v;YzdNo8*u&q4U2kwk!hW( zXD5>@S!Y`%%RTpuU2f=Riwcf2onsd4qWEm#i*w}yFVAw}2mfrAF0lp^Jrj{|&j>~H z3NRoc58!v86*rFHJpT=ob>ngVQ55bZA4B2E+x!MRkZyN91ml{`>~7AOdeT9i6DNuM zg)2pJ1DdJX5`LU3klx_dG+gbn_atnB77}%odu+*|5ix z9%1l>EFAwHjnoGl(H6WOu~p;ndW|idzVAY4z#j}u$;GJHMHsIn3l~W}u9tpeFC#9p zn!H17Yd|V{J+XjY&9{ZiYYAM4dBKh!na*_dU6{!2DN7xxiCxRaAo`OL-hWvR?&U*S zzXfgcMtffnR zPIfe~YY)Y^+@z&16h+fFG;(Hh0vRdKpo@>{@wW6ldTyqny)z!NMyF8ppa2_2rQ+1j zNYpNykKO5G@THLV#jmo(9oB^}5;JJo^Ke>kxqu$=ykU>;1X{81Aa$8;r>k{~DI|*L zV2Uy+U|t?){sz;Fp{d;0Q$db*?osLdMjCYSE}fQ-qpb&gNK<(}g>CG>C;g{*HH>qs zoR?Cl4`*Ji8bd+7-=Mg)7z?(wW9)<52)I)VlSAcDxD}5>o^{YMy@Lwgagyto1wmB~ zJcnMwn|1qP^DY)^kGy6p;$JfNnc?hdmmNzgbceAz%vP*;?BC5HNVr@;7NEi!OB#CtQ!>HX&j+M<$3A5QM3HIX3g1Eu&c^*B@;bC5ED zGfA!mQEKuJoNCU*_vAy!c*Wj3p z9%D<%LEiCYNkZ>(G7S4b$16Wml}Q`vj{Z(oQAbGT=MM5u_2a(BF;tn!c@~E9WbWS8)CkEd|L(Lmw* zk!eDi3#VC4U@J@NX=L(y2IKfBDO}QD0J@`uzRUN84Vjw+3kO~o7-%jR%#AZ-?e#s( z_gOWb?ocPc;mhdb#xOeNDo-Ix#VBw|2yL2LO_j?OMgM*5qxd16l>IA*YB-0qPWmrq z&bSZCe~6!WhLwe-2yZNh{E9Fn9NLedmkv0kCWLVPHb~xWz>Z%L#HwrQXsEcTZpQ;k zc1fhz4IwnIY6r#Jts_0ImkRG6rX_!BsDD`*ne2E&rZv~7)u)!?erJ*O8$L_)UZ&#A zFe-Ex(cMX$FPwCj>uycx)ix)sqJ=cx!;18;bt9X5?EEtl;d!eP4X(xLxONrUC9yDB zmWt}24%B>(z!aD5yeH2adw)jbR{RWj^iD+mn$PU}j?3(6a5C#H7qAtlyjh^F8ovoO zvkHku=J9Wwpp)-zM>zv^zTPPc)Ba9H9X&MRo&{M~HDDUQd#?`9Cd>T^q{Tb+<_u|o zR9g~$o<0Me^C@^(nu~{D^Gg+<-g-i@bO*A&-oW0pMmRh_N4@%~B;|jamfNqTUE7i=`dSX<@C^K& zH&OJ$$d(#PzazVkdvqn$X{3ccIV~&0cKO2yUw;ucQX}bH=1Yj@=VROa;}9+00?nOk z@F!1!-*X>fzCG`MF4v+w(=50=n*_?0#KjTAu#0z1>SsB!VNSYCb<%NR@8crjwc}=R zYF9vSzyYDRQivew!&bqJ-(`ZWMRI?Eh%p+7}BmP%nz1kEnB-;yYxC}RThEY}ptaomZr#(CwRAndl%m}VUwIR_f{Hm@54J>8hi?S zS9oH+q$|dZI0QFyPdJ@ihL1O*@No5Y6k4X?@CY|_PMr?Jne#BLTn~B?)okFeKK9ol zjx|(;vI&|y*pk)OOiXbm8+lp_FItbWlI@bL#{Y_S66Z|@dhVk6Pm^eR*L%8^olj-P zKTynBv=|Bn?KKO&T}ww?qvAijfU}*GgvkM87|MUp)Z^2klK|8W7SkR z;0l)f>&KF(^J$Sk&tplhL-eopNIE$Kw@mDDbj3L=SRc)OT{Cgv)N*`Tst&741#EO4 z42c36_)C0cPhCE-l(k*#j&%nMROw^`+uE4e4_h(Er zET5&_ie&d&gIS*H3HH8gpzy$K6E;&y0r&FHvVD1%g*u`q)~*Tp)(SSqteuUnTTgzH zCde9^!d!+vV`4X(*sCltte?`x9^LwFt?&KWs#)%mwVl^ht3R`j2y*Hxgx^094r*P& z%R{qB#o!Q$sR!_Ez9}hhgOestS!H=UYOMBcMM(pFWT zAKf#E43oxDY@{zmckibwnZ=Z(_?WbgmD9^@w?Tt7kLY+n9Y$7^^P|W-DX_Y{6q<9?jd8dFJ=FO16BEIWwyw}NG3?8$uo_E;TRlivJvo?0q zKbI9p7Yh~ktP(8Aud~io{33KMwPlIM!MhIlf7>L#1OFq z6E)qDIo=X+p-xz?UxWjX3lU#zMPA8!X@^5N?akaxn^*iq1lNck4ol^{)F=x5VniP9 zDs;b&Ge4Fa(wFgS^w;MiyjpXy>C-c0tA(J!`#fIjOHft}=baXv$3WhPYy72_R*RQW z+(K*Gx|n;e;he+NBr?berKp?XrN{-RzNr4o3b0z201(VLbBuf1dL_QH`=v9cE=qEc) zQk;d|ilB~m&S7pr_{lTq-+vu)t2Sd<%{;g( z=%Am?#lb1gP<*usU4QLx=)MPT`+6cc^&b;;zF`|O2)|zHVdX_>)ZQ&)1HWalwwVi= zW8QMMdj2l9?7=3s*~|<=WjBa67qQ2=0@nNWf>ng_L94|46Ied^1~oWWlV^je$S+r$ zmXz{-6NM)1{AQ26$2=f+U@#fIPDkNRPuPDrf;rr0sleYI_JxDVbLt(uACiN=4?{3o zEfeE{K0|Z74lNYi#Sh0R7-TXBmR_4Mc7rK4*y|zY>m-D{83zqRcQ|aZ<6a(hT@>YKr55E)4)_s&a(;f9xPs8R@gfuQ>c@6UwB>fAaBC0 z6H5I|v|hJQNw6ccUJ$Tamep*(!vJ8P6ub@Xc8SCZ(ch>j?zwYm)ze z>*#Ke2mQThP78KwP?_^z?1>Q<&D2gH<#J7u+ayj3rUqo=BSt$zKERUq-i%zwSu(di zqxz%-4f{`@Yx#@Gv+fMZbV!Tzq=$+^s%z-kD9-rveSzBEEKI1nh2LeD;pgjtTidL# z#$OSsvNi0aSw8!u$mxjR?=atcXINa28e10PF8tH6TDb6=Br~;77LJq)6XyGkU#DCl?tO)R1DmQryT)g-c5szAqsM$n3- zLr5dP4ZlKqQMR%WgC(4?y3PR3i6eNgofd{JpMpzwR-+>|818Bw=uKL{c|8U&$TGp< z8fk1Z8j9H7URJd@i&gaBVQF*oSmTpW_KCP|Qku&0cE_?9adA}NcR-uiKX%;1g$4AE zVbU`;3S78ZAKUN10b3QXc%|Kj#{U2L6TO3DnKe7QXrL3u^hOLaMV2?5?*#)5- zTn*J>b1t5}jr0>5P1X@~K8zRU4&5z0@npJin0mj}T!kH0LyFz z*Tq6e2Cl$nnhzbTEBF(61u2(`;e5@I)_&u@1f9inZMesr6Jnnc9ryp zt|wj21Xq%hr`caQ5BZEa#m1}CqbUkBC0Lby`>m%q*%11%w}PzV8tKTSTQq5cC;fOZ zh|XzsV|~UEJWx--q2fe@SuDUh4*@jm1(2Ggg_}|pEa=E37FLqXc8xyEE~}nl(#PHj z{f6HZ?#%rzEWZ*cbg;Bz=O^2+O>d2bV_KFn&#H75YWj|~hS#&&^J7`Sby?wUx@ehm zLCM0uxn1Dku|eSFoGLV37|A|FI3bpMl0Q4xP+na##awm}ZTmJ>)a>?$>dUUv(A;(s zGjFGutC4hTHSesjE{5ZjU6^eWgq`CvAiTtH(RTvjZMh6~MIlIOE5;$YQk)!o0X2&g zF?L}&>{s7|=C)s0&$H>R2U5uG)IFNEEtRsAxlioN1I=tqFr0^sU|pvBCA%@ z!Wm=e`CLzhy+-Ny<(#qKMm~vW z=x;FBt!k#Bpn*X}-WGCtb5PBu<6@l}TAPPp3kVQ^R5M%@!m0{4*w732H8#%*$0A6?UC$P_HCh zq&r#2*Cv*@vw}Swm(O;LOJ>e<@327GIF@mV&p3iI7ExHi9Cg}Q(NkMk*jq!<;2YCw zX=K`e*qnv#{?N8_OZ2A z-&ul3Fm(NSSHSn%sGK^MlHaF7dCo`Ng$eie7b9Fh7W;P|hNTw9ohw~@}s+F=8& z&6fCTq6_m3A#8t}U}Cldj-^b*`4v;ZTr?rz-nP35-IUjYZU)X4+gA z{qx}iyKY-8NH?D?G@ZU%aJv5@lY)V;_iUOVcHIQ)vA%;X-7kDL|5s~bG5vbFb@4DQ{=x2qB}iP>CgCjYKt8rnjlmc zMeoidqmh}Ep5RL>c((L}jSi(%{egZ)2cGMy(jPINrRAPm7v+g`v`34Kcn3nZtU7udO|V-;WvzEnFT5a-AaBHT5!~lJR&}kg3J|GA!BF7;#}>dY{z`n@~Z7 zjIZ#kZliFt;RW_<#yNI5v5YOQD~Hs0M!qf6c&}s}nOH!S+#f7*J~Bh(RM1CLnu2I{ zm@lO+-bS$tR@2p=J83Cr=p0 zR|S(wyvyc}}LIb(__*Qtn=e#h<<4TpF9cIY0BhjUs!j`sgSVZSsfyw)al zzN^2=a>4{X0mM?Iv1NudtUAOI8Ki(K--e>VZ#18Ur$Ty@Gv-fohSettRjyAKx*v`bHfKu< zRa^!NkDPH7qz-ZrteB!F7?gX>TH@kStE%Zw1%bx4Y~P2~s7ks6bMX_1%De_6&!c!+ z_8S{MI?&=byf1OjVk&UUq0!YEqK0u!BA0VNXqe9n+8_9ve!ag>?ygdB`_&~(nHaQZ7nUQSaMHk<(pu@dP zZnz3`f5{_Zp2Gj0wO0>bunEV$FsbvsYf6PEbzzlpf zi%0y%A{e~yWM8h{7S4G1l*ZrAr{tlMq6sGoXrJs#YJRUn-mA)Co1_WSSjIU1z&hs+o?GJG7FAp(|}FKA&nsqqTqzc3y=X_m$p=GKcLc9cWknV1vc^p7B@; zL)I#x;-(r7Y|+3=^$D2gJ`pc{CL!$_L#O{xls9X_+Cv)mk9M-`k_YVbsa96~rkL%G z4P|ErZ(?HaLRfXQfGzO|5h^eF#%x11*th^y;oj(2!R2>xf`?bn3;x|cX+31bB*E#1 z9Kohu7s2aa6NHgdehK5N53x11Ic(65`|NLFI6lsO4O`A)X3jyx#;m7P*Ot)cOOm29 z^9)4GrwHeX_XI)g8E+z_|)KA58pHPQl4Cn4`qA80fkh7rzz2ls=FK1mS_u*E0 z*z87DDen-? zRhG9dj>&Yzv51ugOwM@%yJ9hfU7yu0{2xNUp|8}Uco`^)D^-MFIn70#mwKT~7>p_ZX<^IRA6|{U@6kSl36g>zN zine%}iWcmZ6{+|Bq=!9Sv^pq?3z`GxxF6+{vBO@q%j4Qc#yU~gLD`_d$yc2m2 z_l4VLGB%h^mR^SBwl{>D4aG!W&RNtH8bT6#!f8~G51p~LAo0H6NWJm{rG2iHAiPCB zLz~FnXuilP>WpYvrG=>MQW5?9&yq&nzC;}v!$p#d#)$j_w~59$_=y$|zC^p)9wR09 z01T>UqIMUlyEO&1bUxn<9D6}2HhEgLK`W343oku|1V6h zO9m#7Mj|xF3c1Fb_~OWSzinbzmT!XbyVs%9-2-!uM#8}<7#-EJT(@dQv%E-@v$KO_ z^M{IBH!6$Xi}J|BZ6@t3(4Yq^3h^Z00w3n&v3Q?ltYO7@hKkqhT!uQ3Fd3(>>#?^- zwGls6f^&TxXoIU0`WG1C$Go@f;nRog^yxdSRjz`W&2MA>-B*Io5hJwR9*(syhjNCx z5gc_#oqbguz=pnm zDb(sz!|>N@S*EUnu+Y0)@MTwwp#QwA;H3I5t6!0N)^(FF3I6%L5cCbt5EjkK5Nc0r z5}JLj5CRBUh{mVcaJ^%IPo_{?MTbS2;I$x0A@`;3Uz};gdzbUFAfjp9YI+ z{Y0WW9?M0alV^xFBs9|H0kPQv@eALoXo*$6tq`GQbJre5}Fbb&+ZMkNvpc$F`2v0&8n$6K;HBcH{Q4 zf}oXb)aRMZ>Hd3RRW$P3uEEoDNLr*=$w{|9EWOA#fx zS?pljeLSd(hlNcNS!-S--GU+-eCs2PxzbPGCIdvL{Uk-TV*M1i;XMV^d?()>Pbeoo zmE80SsQVnh&%D}1H)Ib`Pwig%@F$A)_QcS{rUI%Bxk!h(XY_nr5}yNWX!9Or(b>MA zbj~M=9tKaQ)5g5>Lu5fFoSk%IzXYA1Fo^=3u2IUJ`(!@v7Waori*9=z5IMdcBT9~F zpvyY0bp3TD%{wkBk}XpZX-OX!1ux4G`Cf#mNBc50-B76y*H} ze=g^89YF$lmnxWS<~WS1orIWNbI6!X!2{jl@LDFt(q0&%LhuN8Ise}DoCNoKjfJbx zC&q#$k&vo_jpK%+%~B7}D-5tFNgtm+D_~*UFx=}j=h+q^x;_ubz$03C=B0}{<2%?h z>soep)y@B-=)51f{N6BbZ^{T|%c?}-Irn`+l0vBn2`TNRgd%N4iL62y5e<}v@gXCU zh|G$JL`qXgr4;3RzCZW_czfQ@Irn{CuNP_G9Z4bz0?D?Ui-@b~Y$BRxPxL+r5x(?? z-2R3p5^y+^v~(`v4x9?%KF{02-MsMH6LgVB4Au2LK!<${soX4c8lb+C zhK%P^{{PNU`;U}fkL^U=>3K*<8cIA(#w4HPcyTNa1^f@7+xT)kd`F(S0sg|tZ<44j z#E-d8hatC{_1ZN)L*vQ@$e5N35hW_xKt=UPzr$y&p_!vSFp@Q@Qv*t z^lu`0b-#!Vy8DoCo{?nqv?IA*ElrmGQX%b|pON4|O&EOa1-?i6A^fjC-mQ2KO7H%G z<)>nNclQnkeEEc>bLHs7B2Ahe!%tWIxsPE7pWxn@77YD=ZtKHG+>-yDF?ah>UF;y|<902ZH70=-C6 z0B=z`|w;9qJr19ZnNyy2y2EQXyU^*Es^&_`z9SK|%B{`p`lY)L%lIvznYD!IEAj}xflsxC|Ms#wEU&|1cy!GU_ zN)R~`H=8UIuqI7~H_86}Rix6tf~fdCA$75TiPJt6_&8nyuE!)Wy8x$NiLe;2Jv{+n-Yx*Pb#)uwmsFJ5uR(7;f?FfA+U`@j^`*F>|4$L@R ziH2vIQP$`kHaD8l)VTTdQ=|m7IZ=m3kA>L_*sFZDXdYdxu1uXKw_}ZFF}ilvVPq6Py)$k~?X!1KJ8Mt+Tu*_HOAMop z(Ibo-`VT{*bMVOr4o6dD@vh@!oVETNfKolEW@f`DTQ4xrb!OSdEl|DP7WSR?fsGzP zkhy#{Ok9oy|9P+B#68Bf2_qQDx_ha->+r^DXB@2Ug0Fq<^y*X_`lmpI1{~=@P1*a1 zT?43;lZvh958-^nC9G>8gwMMrkmw8JYSs-0oe%JA@_i7Ne**hDo-r3{9*BkZa@cM| zBsPwbjETpPINJ?Grg($C@GiLF;|+HXhd|$04EX)?fy`!eIP}^8*6J#Pw~Zm}GE|1H zEJX;=kcU@s(%>W`4&NrdB2#3GNx5htDb5Tee?Nqgpf$eanutAFaL9>h26qzar6%z0 zXa;;;)B;*ld08 z>FGJs=`q_btSK!;t+~qd_D&LmCPMcU*pb`br!v!#4eG0>+Wax;^30kCnhMsz8LPKV#)6BDP z@!gV96x=RAlaZHJpBTjA-;y*SRf29=FGDX~G^8$0_OwQBC*|u}M6-t#XfXQvvku{$QG@bBcOuh12kg82a7yH0|j_s_r09MO9^}rPn07 z&UOm@r7TCo7S5o*)|k-^vz@8uMNc}1e=qG+tgVfvDoP}yNU8vK1B zdlsx|SEnhBYqY0f(~YUixqqxndJ_|QuA|VGi+D#i6$7Jg;wuLBT(GGCv$q6bUz8S3 z8SMm(jYZ(!{RsB26vA&qMp$vp22a>7#%<*bP|bY@Ui}b<2iSXhrc^a*h;*QabT=N; zEx}{1aX46f@U+0;TDJClljm%}mc8uP^^F2pv*781JahDTe) z@s}k(ekQ-+L!3IxKK6hC+i4b(&%{!4!X(UFlyu4{!SbJ9;o*uLSaU5OT!${hPsZ%i zX76?X4>Q2{og@Thi^BD-LO>=YpgVmM_+6J^XCo>2QXmMkCmxg8b;%?;K8KKm9CBsz zMRFo2lz2V~Bh^OnL_1Cel(q(e9hVFTHZ$hvCM8szUkMHKSHTwd)sVBQ1JuSkAZGCs zu;@@h?`1z>g+>M3-}Mv%rguRa69b3aU;hut%n7-x~u4U(A{oI+f zbi)do_jv(b!LLH)MwZh6vmG?JYa_jW!<^m;5vE5<+VJFXFAmrqq?)QlH0JspD*vAc zjkqb)HB5556%Y8T*! z+e27;Cjv$aj>E6ETsU*w1Z@s6C&Y&181{TFa|Nu#FU`}j-~2SLNjZ*hl(%EP*BU(I zor>y()9DItTYC17Dg6;3K}(DzsgsZt-D&*lP%7lMj+(XarF*3g(B2Xq>Yk@SqtaFA*5!KiTE8{@BesRcT=b_+uY>57{fDWW z^>KO)cT*?gPfaGd(Az4e^kJ1b9Tc{uEnV)^(bt2%d%S_x&)-ZBMen1UA^!Bl@r~5Y z)sJeuj-k8aFVL4SGwH7%an%0LVY+SW5xU#uD2>~-gPO}Y(SxA@l)u1+z7&~8ZBI?3 zsf%>!v#(mTq-G|yS)oPOe3PL6{cJ^Vsk7)`>4@W%mbhog73Y2kMfs6Z3=)0DTza4J z@Rx2}srVo2y#5dW9KC~GWA(VR;0Y#Y*W(QTLEJlEmhMTILm!y?)18esv59X2J;sMo zvA+V<`3iAI)>TY;9*?%?_u`GFb<7tNj3E+-QFN&*UM!SD9(!GUIE^`lVqEdFV>wJW zKL=a2dEt*$2`3sPNe(~Chc8|NIG^PON?AuJZ9E(--Y*A%G+78aD-3lP`5}F;0@!4# zfVi9_Y+a=Yf2Aa#@7-IX>2#S~;%*c7ks9*1@e%pHteUvbzf3Bs9+8_bHQ?Fe8W>W$ z3{Tg_!;fD(@rxtlN+9FhHwmIs?gR)Q-GQeASL60I$FXK-I^KxL#Ca+6@u8G3KCqC) zGhduB$Jq;SKaxWKax>gvu#0iYPUBIz%Zx=?fhh{&)K!R&R_O53mvg4l>NiX2zA+ct zyvdF_pVOxTvjmv*=q*k}j-q(qBHH{shrW3bP3z_pT9&em4h;MA`0=u}a&Si!1u|8I*LriFctKtu|jn zjqxy?BN&eQ0vB+ywrdp*N=-Tu4v~{*Ul{~kRzFp=|)3_kIZHFPf zWF}3$R_W1y#`EYxvn5pM&}!=SY6YH0kMxvWNTyPOpL zcu$cUKGmf?#g_En3bT|t{V0?~ zr|e0jylNRVHY$Ot9y(4h+uPAS7bx}VaG=hWPIN-RlRmI;qa$x9-8o`NBkuE1$te$U zoaJ-trzNnx1>;~nVEx2@m6($82zC9NZ~^~+=r(v8%~xE(uQTIut6wg@?`pvC&IdS; z-7zvBHsIHxJow4#melN70Y% zNfgg|dYg$ zGA$&3#Y_>QP13xQ-Jfw$sPD12`ba|bX!-c|u@pMC~kINw8~<^&vid<)ZZg3$29 z1;)8eLU;dcqh^K+0>S%7Dz1);DkKL);GJikPFTx7fsyE>L) zC+}(I1HX#Zv;aM?SEGVEFHH=XP2-dn(><51sQ*bTYLTr#?Y-6M6+UfB@2XI@{zG)v zl)aSil^SJEM!IsFAAKL?NY9)yrG57ou=}$x<=XR6FnB)>?wx}~M<4(B>*BX6WfTkK z$D~I(*yP-b3#zX%Ui$;=m+QpT@<(h|AB7{v%>Oj3h3k1%-~}FclwG_J^SVwTpVdhW zO^L&~XWruekY8xCvI84D{~%9jH*WZhbmNIA>L{y3C0l1uzYkjU%uWGX6>CWc*jZyi z%?g@+?I4}<^$4v($qmIs?7eM`AetJARBSo)iR8yR3xb0 zHw}9ByCz-R{|(n~NyehyWo&l3hjm=eW8dx++#Y=a`!3x?y>DXFz1EUWo3)khow}at zE?q}2Dr~2_2i<6H(@H8o;zZwx1ke{s!8EY;ES(6*qFzy%bpFi{dT+M}z0kIhYKk~f ztKdC!mBW5IO?fSCtJbGuyJV?MLl=HYPQpz#2hg-O2%i=mL0Rw9s9qI`14SX&`u-@6 z@H6Z0;xrj%GLRjHZKAMvK0-q+_z{KmRXj*j%RUQYkUh7`eDRn``-4}7?vd5Tq{y&Vg z*oJS_>@Zx-3QM#Fu<>06@Kuk%*nY;`rR3q$i~v-!Q9?SS9^m(72>9#+DI4t} z@0lgI)hR>Ow131ipo@gJd?qXJ+#_+1?vv|39+8EfPe_GyDD*Zx1iv>Dc!uvXR{31R zjFMCwxxE|ZjIwdbw1+5X{Sv!7{^6#Tk1*S>o$;)4F($Bw`9=FtVu+7U%7|x~M@h7v zm%zFOY4G)69GhDzqk66|n~jU&xj0>%y@+`WPTQicf)ExjoQZXp&S70*8#)K7(y(3) z`X`5@HhPpUotR3!HT0>c!%|urZB3Wn-AS|5*U^?JQ)5`(Y)c(T~T3_o- z$EI4-b@}SFY3p|kHF$(;RZB3q{5# z@&3!W#3=;L_~Mc0M>5`1w8pnz7NElwOH8`uiH#|ls9W+5(+VeWL7O^lKS*d|O9Y)% zc#vKxlct^P|6tnBAuQ{lw5m**8d(d|R&Pt1sBKRL1{|oQ=r$@mc$})o?4>`#*3!$i z26WTmDb&vGFP;->$0yCTDEKY|*N3;QHQ&mX;QfzjXyV!-ae>6hb>z0 z*4}G)Ga!ojsQ2Q=4;%1~?Fk&Tk4LvBu_(fG8edOh9o!R{c=T5V?rCbo*D^(T#qc4z zy%(d&(Nk%&!9qGLuSyGCM{#^hD<0VU85ghmh;c98qFn(WEm`;ri^KTnQTnC<-zspYtk6jPu`Y(Bg2>4 zNsFNn%x;|wGP8a{#7T41>0rCrtiPBS_yem~HKPB943sb{z=y(lD1ERGUuKQqnB4&0 z_3TI9sde}@{w=P!CP5YZKA@A~E$q{rg}%H?;o2TUXfyu?uV?cx=h#WcIb`=z+cmJg zOCJIs$^yTT1}slW0wK$dIBv`G|C6TD{dd^x!byhqt`?%-U(~a?$q)|Yn9}fFrqtHh zj_QE}t-9b$+bhHdR z)%Df*tZERmsXo>8b*0hGku>~XJH4Q(L%a8|^I6qwD(g6nmQ?do&oN=zRU=OS&S*#T zUGntR_bIgXs~+7i&g##`O7yFzIL-PZO@*CBXx;c{HaY$pk~AbtfDO6haj_1$5l4f>+#hF(ds4oYP2R9IOZ6@=y;? zA9P@x6IqlB$%p$%$KmqvB)Irk2IYLu;PH}LR5$*H_(+VNGn+x53Ul;%@M4;qjq`0q(G{`y^jLoPYE$EOuFGd`fP+*|x+)rd24 ztI(1shjGSgaP>qPR!iHeiukHvXzvKn3Y9#Jo8XR6%JI6?NQAA#MlF9W|w)ehPGG;58m@yN#mLZO~hw z6XYKF!H&9lkfbgShWx^yykdyBKNJChncm76r{Zp@l^Dj(C7BO-sqg+y)b6{3 zi!$%x&cJ8*F}WSjPyUCmU%kL*XPa@q_&cQQ1nD8OADHbUNxyv@L7pS&?049R6>MfT zN$3lSGCTxa{8!lclLNC-S=dJl$>sS*#CF1m?2(NoQ}0d?Mca19aP`92${PF~_Y%KH zpTpaFh-(H^uppnJ$<;6nepQ9O=Xq&1^z~s&8W25;+B7`I zz0=asEz^#sTLb~&ws z6F1{PdioWZEguAG3OvB~QXkY;T!d4D%%gk20`5r&!cegy+=@~Fw~iqAd!YwHCX3); zwF}mF#-qiT3>+wJ#D%A%X!2b}y6zkwyTc38Fi8m-Si?`PW!^FtcriX2zKAM?sqF0c zANrW)qYvMAv`P@67yX2&K=LTM{dNf)59rdqT$UY3gXn9#C2JLvEXVQT5e?qJxCe^vPD((x|5 z#CsVtm}|z?_clg$_M^5QFV&pQo|Bg{G*0U+(mQ$hS%sHotqY*>)lu|C`d0S&Y^9g{ z9I1XKM^#hVcg(vkT%LOseOcDPV)6^v_5bcvjVB~nSb}DrK4|~dg8h)FRbmL=kDJcXBPCg^UhIdHd0u$0;t4>mnDw8cn zlpG}Cq-wwcjvV_0fssmhWT+M1vD})+X&q2w-L0anF%ab$2TQXXApO!#TtB^>akT~M z#$Y*WZ|_XyU#z4ztIerGjV^tuDob|=3(}W@-FV_s8}c@M#XXX|bgA_edL_(^^4F)J z_Wk3y%~gOJKif$S5-!sivxT(z;wRj@$PU+8B?fiuN3Wdeu)<*C7@CKcGT0^ip#Dp#A;)0Dtm8RfQ-x9bxb7U;N;Q958GMI4s@(qO8-Qm)1wNov0+{v!p?4qX2CGR6}}P zB3aC&oLueOOL!jLCV_s_po3b1Y*q;H`pRL?F<;EQk&p9d72`vV>r7^N0-Ma7Fwvf3 zrnVKXtDvYEIfXe=lP1!g^V$5U!ec*}v0eiE0YOA2}Dw0i^i=FAu-urs{C zMoB7S$Id*l;%_p2I zCrU|-2X)ljNY517(SKQ0RQ{Qi()9?3~HR~Hj_Rhi=krzmKj~OXj zF-)w?O-bflfAU9ZF7XY2&z+klMj~pINXb+$QgOY3Wc<~JFE3}q!-=`zY;}cn=Oqz| z$0=lTrW?`PGsOM321&fLE{q9ffaZxWApdX$wxtGR*J(@J{2^rSEJ$>n1&2ysl6|UeQjpO`mUi7E{%d`nw9t2~gJ(E%;YjkWQ~LF9(x zP^YBkpLu1~I;COHTWy z5bZWT&|ux^IlijUz#|S*hZ@P4Y#fo3F(Y?=?dE>wo#SGiK5%L?4ar62#l+1S$kr-% zQnX(Mc%!0$|F|kPsvp2F+oSN}^(b84d53YyKH$DoDZ1hMWGb}$FD~`_fa`3N(fw~V z- ziT%TL_M9I(T!0?m&tQV~60~kN!byyQmdQT~D<*vg>Dud{z9ttg(mcrDb{&Ex(qQk7 z>yY%S8jN`Eg7CqsP#}~7zuSXBXY(=e{BWE(&O;z2Aq~nrqadqhACRV1u+!Zgyu5Va zGRxg4-VcHY?`*-#&H#F^8!+~RG;A1@fT*d`ps`9Dgp+50n;-?dmG6j-O(sd6_kbK) zna#RwP2|#GD#?AtI*4255u;s%)J4xC(;sgo#alukGQ1lsczQu$pclT&@?p~yK0I;r z9jr2FfGs9JnU6vnm6*S{TW}#hy?qoPwOq#i?FA@qo{Q-*`MA3GKYU-&jpcoV=o9k- ztKOI3BDWIc<`>`ucN>_&E_+stO z^(Z&ygFe?f(fPOxT{USEP1rb@<}Wp%kCT_slV9B_?Bl3UtTO$T_y;p9>oL9I92(ng z#tbJL^xR^I2^RCQM8Oi<-&ru8J4MNTp7`eSQk?eZ0B$;wjh3>n@xiSRsJ|-?w@+Dx zT18=aTr&y9ZlvO0+gzhd&byovkq?kZUj?MMFn8z3)^n}UGaGS+QE_&HA(NXiKL+Om?gtC|rx z9ZeDu%J$F!9_0MuAkuqTfboV@Ntn0~aXeF$<5z2jcBD zF*sFHguc<>ryFf~sUyD-)%ou!KGAIhimJ*BOl?%Tmek>VYy6+Zy;j#4qkWvgUUtBfod@d|6J-oWV9P}MLt5< zv|f06dJr13e!}Mka=1@No^ePNv7(0Y+?mftdqXeGQ7nPm1`mNR>mJyS6hlpD1*nIn z!{9O2346`B;k~y(aY+>L^F)E8VkrE)unXQ8nL&In;~M11z+xj2Q2k^80}EJ`N5BsJ zDqh1T<}Eh6vk8~FxTD&{T7+c*X!dUzp55$^f%V~7&YOTzORi&^^exnxT!CMCI?-?0 z3p_A1!a6!5`1bpIZ1(TOf$q0hnc0C^S32>I(sLBv-Gn!eKEjVISapbT*=kR@;MO)f zJRG4!*RZ?)=&VwF<(iIG%|B50+gr?hUXDAOqVa-{7g{&$K((d_oW!_qUgA3#+vXOi zJA8vzE`OoZ`z!2d~2i<8|n0 zfCF7H(~k-aZKgVTE2u}#eCiypPg9%aXzylT8nKGqr9VEw>yFpa^V>Dt{_H%?5Ee$e zZ00VrUW0t65^=3oGB(=oL=81Jy!tW%X><^}w1qI&XE@{8pGW5#+4%2iAzqBC#%tOy z@j*lxj=Z~$@zsFN*>(`2-8 zj4`+0k4U3KvR;OT&t~BYZZd|&%VCnR2C8pktXk&& zl~?)=Vrrw%Z}}54Vq3vOk>$B}F;}0&UvSR+2yxSxvxMbV&E?te(Zr8GSwHu=hcp&T z%b+8>ColN;8U(!rv2?{`T)v$bT?L-Ooao0e_wX|)OK5^S$11=e?;cyOcF(fNJ@W5w2B zeepBY>F>kYpMKz+PkkuT-iBExJ27VIPjsI=f}_q8=vmKZI8`lpcUvJ^`jz386IE#V zs{p^wxQ;5CIe6$rD9*Q8ienS%YzNBR+UoDo%qobsc;;YEMi4qAbuiC;AFA1X#PQ9C zG5mlAep2Gc&6>-xDT*ImBd)-zBMC%oi4TP9*}(T38zFnS3M9MEg)#duh<_9Un_nbC zvPV1^9F1cB%lmNGa5kG&2V!qo4jT9IQuq5RbUk+hGxD-v@6j90k56C_$hMjt0P|YU} z!ER;Ty=P)vz}f@` zWq;%yBvE8`Ldkt~%!*&>h~(GEJSJXV%0V*{v{sp&T4F-$9FJ zD?GDl1fHu6V69vL3N@MV&pCv-%T~jIW&%zMCeSVE1BrJxgIRSd>^820KL>>I0Ix3F zBOJqxB3Za>uo=${wO~f%Yt};%rmyx-Fn9DzJTT`4YMVVmA>|b8dvyg@eYuX3JL9k{ zXD41BH^CuQIW*lg2%b8xSr+;Ys3i8lyd$dEHR6gz*VM6u?-P7Tx(`leQlK6A0i`N4 zs0z!t-v4NVeoIbb_nQp-;wnMSXT_o5)A#VJq8%jXXTl!;Q4;%sAr;FC$dd0u$`4vzhs$_hQoWJJuuXRsY;?i7m!j5S%X!yDg>oksm^=B5c< zfoeZjpm)kK9BMj?>jk~=1f;{pecBKqHN<^1vgZ66=5RZ@cah^QailM}m^{u91^K|g zWZ9`K5}Un^tn%MM%I4USjk8t}VICgRxArZ!c=AQ==2>~7d(fF24s;(X(+ZSf19EV&nf7tV6 zFWfzF2F{3Q!nDi_AoKeM%+#(2amLOT3OEOYE{X7NQWo^6WJ8Tn8fcm4z`BjsVA;P^ z*t+;GByFt$lTCFn?N$!BExZJu43prNZW6qgOM(SmDNyyZ6r38$;GWY}ura#;veP19 zf!!V`3bKUS4=S+SR~Pbr&49$;4se#&7yhg{3=hW(VU6u19IafAw#IQ-_&ghVXfyf^nZ6fqChh(Zl0emx4!1xm2F?G!0_rAIR6Odtw7uk6KG@Mu&39FO@;BT)0$x*LB+eAu5R*KU^XIb2~a}g$WS+G5@I$Fdr zH{g!r0CWB$8rrN=x3iRJZjB^U+<75PrHagye8fK6%Os~XhExi=kcf|4NR!PWQWND* zZdX_k$&)k5y>eaR^TviW^*WNzMm9vH=sb}T&L#V6Z9%VtaW>plu+=CM=ahJ&zji9f zI9cNEpBwPys13$^UxaHGYN6_7ZS?wPj9;qfAsg9Xn~*+6)fut9?>a25vS3-Cm8hg{ zhUWYA@j?0$^!OEp(VwHy=;~(NB4&ku+--4D_F6p8-Vr+^pJBt;DBj+67MIL=4aO4A z@VjR}X{gQMEJMRh()_lQr_L_KL1`O#vOk}gpQt0G%9rfTkRoZv|8dKUv`KWhBvJKi z;0*fGIUd^-?(?yqoM@N`sr+e2PDj=eueo~M!b=7uHdvTQy*W&tSojbDfo-I$Yz9%5 z6(!-b0PY!Oq=5 zpz3oDq)&uG^8S;MS9%pz2UkMm<0|-}mjywuuENZzhrzpXKD^=mPImK%f%1u;BuPvH z3Vp^&+CCBJe5?b1HT*$mc?HCS5gx5&zO2LzSoHTeIw%FB?DUoR&qy5adjx=}{4a9# zSR7e1o!)AkDoG(Fz^RK z%joGiX^{#}Y?y-UukfQx(05p8^a57i9)#c`WppdkzyapgT2-xuFSnXu%J1!%b7%!d zyDDJKPXm1Jx(9=%9>erg|KUcpc6`3_EXur9!KB0kaJTUxd91d9C1huFHyA9xBHVy< zKUF1pt(%C2Vlc^igCv~Ib|y<{6W>M|qO6?93G7ef0`nudxg!mnn6o>{l@KF+LD8J~ z1|^e9+3DO0D(_OeslI+D>y~b|G3f1n&d(CU6Tuww!!Nv0kU}29@6mg zA{i0AOY|r8ktL(2A)xUrgnrJ4u{XECUs)VIhI`=DT1nPtVa$ob&u}>(S}ZEYtuFd3V8XFUv;XxeGglGvHKQ7+l?R5yT>*VfW$?n7Shb^2biV_?%s= zhiMO&t}KNBCoAaaw}3CxXMvo!HXL!bhkx~s;Amh4)BR?^ri|H;)nW>~5;8z}bYN?Y z3Ous^O-2t$gL;cFxNYKvh*hH`bk7RdC*lG!FDTp<*Z>;0n7^-n8@yfQ1yf2a;m=42 z{85R9IV-{-BrgHho{fds|8{`s>1kl_Z-~f0ttU^i%gGFhhooU{6R|%wMugn{lGiU3 z!K^I?KKL;{?21b8VdrTd&oK}d(Z!?F)bN)67-abdgWJqM!}!&7pC@tT^JW)YVJ#-HrkM#Q2wl7CV= z$k~6cWWUv764N+`9DO{A?0PVRT>GiV_8!6{Smrq=x#u`HUGNz<)K9YJgkGAem~%2ya;Z1tA~G0r{R^=)3A^6{r4K#F zxk-K%T<~Bi7Z`nm+idn9$G6}MC$d(9=<1&*#4wqRs(ms+#-otDs>;Qfba0zTQn^n> zDO`m_GB-Nx&*^<%!@0sQuCYLc+j(t1Fxt^kh{XX5=Eh~+W9pYK3WLH&z(U)dp%_7xIpQZKsfd06r}u@ z0M~31z{a8uE}Z%VB?%&UG@W@C8Q-_syBzqArb2`8HHc)nlO>gb@SoT!C{Nq~<+UDg zN_QCq4wyoP*-WtMWu5H$nILa51t!L%An}&~?5g}ue9S(R*P*@Sl@K3@)pwGel8?#S zlagS&RS^#Db^tkbwhNvS0O$Gr;m?)B@O54ww2^f%!@&{er>};eun{WN*219gJ}C4( z#rUR&VY{O@bcrLB-5ezozZ1!dT}fo=`dqRj`W?}dC?{XP{Um2y{J}~6DnyIjhSl2n z;400|RC7zAtgaq<4}OKot0aZ*2_mTjfdScxAKxZ5KQcJOey>%J6Z%9l3Pp4CmT6VzPF?ndrDr zhs%*<#~zF{>^wJ$=&|b%9VRJbL$;Hb1$0zKFfLReNNs!n&2c#4s(^6lgYjV*Em<#LN3Dn6X(A53gB{VghO}ZDH`_NzgnH1ir@^(_Q2=q`x{32EmzN$Da-6 zq#Sk*R)VPGGtiq^3F~j)g?~%p!E(tNSbshQmfD_xqLQu9vSTfj7rH~$q-Ee$VhGcR zStr|F4qE3+F*X6?$EJ!w{OBKY=FMxOkk?5ZyT-|6Cw?&aCJH|0+K^_t5H1+6gZjKk zIC(DwwoVF#!IF5`6}1xtzS%*DnHxyf%mR9386@7G3wPFN0`H(2JTXy&o9|}B#aUCq zFj5fqNtP3--!WwGiC|)?b&jN7OCnEm*j(EwCXe$FK17PquGj?-aXL(8EWayaV~F>(1wSSXV`-gK3ml)OqT z!!wDc_gPZ8;23et2q95AQRL-=jik~moIK52ONN$slIr)HiG-#-`Sxy%`y$Fm1mF|5 zL|cty)yNZd9R+gCnwM1E-%69UCyVgh}$JQv2H<$G7v4Ay~PQj+>2ci8c^MgKF3)jZeNzu(N zli|8XlQrgATaqBnOY5z#avDKR0WbF%~Fik^a3xk)gxiE$-;Eur-{2X{}*g6Rbu zTq>Omv8M#!nv(%MeIy5B+ZV#q!1*wpu}$L_Z3n&4BXH~84#;Et%;_EJu+TXbRwrbD z`HK{=2`vHT9}nSla}G4Ey#-AJxsYIZ1I&(GhA&C%XH7O-W-i?4u|e=Tc|BOzy>GlR(q`B>Ctv z5;tWB5f@xbWV@4yzfmhO{$d4t+e0B&i?M8mrGW3tGorC4i@a}4CQ;x|>h>)s5}E#_ z;o%XYQO85v_Gyz3n>t8!p%+m;aDg0n^@@z0jwT*zYl%~uCponCDfg_ng7aFYLu|fz zlgu_lA}cqCZ1`?Zy4X%=bxS#^xcZnBoc~OC7e62svu=``2d|Px=kJg&XEI6cyFjw^ zOO!T85#BjIWVSgH5%qm!xx!L*em+dx+)c=-OLAoVYbRHt zJB94}J&&X{9^_&ctT!ooFlw^v++&k~1~riWeUUU;M=;KTmC2%2M~oLsoi~ZuON%i@UBGe1R`}lDOeEjT;ZC01YNB{X%y_cH zQDZK8n0s(yk!8Qum>ED9EG96NT{803nnjo0d@W#Ai;nS zM@~&;9e#P7ls^VBi+Gs}vKM?iUcuOY<`}nn4jYzKfmCT7%w1Fni+|=o0?Q&y8;pQP z({0e#Yy>v`6xP@g_!n&kfeB9FdT$-@JokdZ;BByq#{;;9>)@`j17yH*nEcNT{=4E0 zyrTAuZ$?1g#TIH;QRv>K1+8c0VW%J;lnhi7BkxPZ+v_x$ITS%Qt*|DFGeU^A`*D)& z5k@>$*OUJ9li+>R6%v*1P2S6ekb@Zui1g)2B>LD(E;9BFckr+lNj1Mfa_kuXiqiz? zCII!%LNK-@frNaQ0%5HH(y+;mD0M3nw|ZR?Up$X|TxL%y9o@*6N2|!U*u!M$)NFF) zfiQ$O$gmlS9^7}<2PHZma#(jOzNeWSjBO*a4m~8@;2M!~2_)jj{7J}qPjXpwGYRf3 zAjVdMYg zf(}gwYq$l4!kqATj&o06&Q0^(Y_dyufyt#pIg{&}JB=5$DH`8w(l)m9)iN^KHD-RF*#Ws}~R2Si5gCb!Qr)?|yJqRC>ne&eSVg2v+?ZW{}jedR*T|B$8Q zyJ2SeT#|nyiSsG{OU~4ebG6BjP4d#ZiOT0bQobaWXqB!cKR}uUjL#;Sw%X)N>mlyf z<;C2(x>=mvv7_98^Z{b!e3?8yCT_C3P7^Lw9w#NQb;+e#MKWC4%bA}rCF(VEh}ULu za&7MyuBY=P7yU(yJomoJdD-4Ks`_z|*srK0-U1`!&W!=?YWzd4sv(Xv@fwhZa8)wN zEsXFxFz(-`r!fD&x6m0i4%$z%pv&Zc6rFcCmH!*ZkrAm78CfN%B%E`e`@T;RLR4fH zO36%vNJ7J2*?UWaBH0R2q*7^Ud=>4|(x5$5`aQotT$exm;kwRqKF|HR-|zS99fz)$ zR^j{~(%4=56rxLy!)E&`*s!k?HdTq@>c4{cO=1RCKaoH)<5?)V%L5@j9_J6_;UtS= z=&-p1Gxv$odc|2}Bsh=0XlT%lQCT|guR>027C*J>HxAu-h?>%(bgyv^0n1~a+jk9z z0?%W}e>ZS5%XSIoJV)&V_wl>xMLeN>0Ik<0`MzEzK@OOYrcoZx_l573xlBkO>k@CTJV#Ng59p} z5NnbM{l8nm-Qg>w)ktBBrvl#pH4mFENMN(}G`u9Mg4>^SalYV8tobkrr;f?sl3SM{ z78BuAumi-j%m>+9+hDN#CCpkAhE3cWH2rmg<(|}_?%^c7<~{_mG21~;?h+GYCI{NS z_K-E2z^MA`Fza@%;w>&2;of^Sm+89{#dH1I!&{fH#)Gtn+-ol$aP0)5xrwUCT_&@c zyYQqIuVvQ_o^#!6=2zte9LWt})Gu6Tz6Ue#?UFp>VBXHXyXzX~vz9L>J3pVZWVbB$ z23LjK?tF>S^n1uWXlQ~7wR)J+JO}R?1+#pXE!bh}3Nv2SFw>sQ2E9@pv6$%>i@{1e@IZee{#YJ? zUrn~5!-mb6IF^HfoJ!p4*oeQ`zFeDa)yTp~Fkx*AE(tw}H;Qxd<*O3(D=0+uxkXqX zor&5r642l|n=5*lf-=`**^_=f7EE1?kALzpylw&ROkaqC%o?_b#S`PbBT@Tz0J_B3 zqQ@gXo-Lk<<7_v>QrFk8EBg$*iM|8Fzgpn$_%Xri zX=w7Y9-dAp0aFupwpo(~8Zy~%X7CD#^WVeT&tstSiKdg_-oo3w zDXBc>=}TeYzJ1D_y561JC>Fp;`!JQWyJ8+k{$LWv_dh|Nc!@krY%c^^*D{FTaSu`` z9_?SV8s&*Y=rE*$wo#d|R=1C*;1&(hT6-YR(ghy;W%rzXO{P85gL$~(3BxN*V0vzs z!1jH7W?a;h*Hm_&jq2-S`o=&|T2;bCtX0D4&o@J8bR=Bd=?$NRr$SaoJDe$;#?xkw z>A4x1a`Zp%XJT5SKyZ97=-fyIo0dOJq1=8@w@HEp+m6AW+ZVyAK^I*N*5Vn_*El97 zOlp>*r17#5TaMJ=BgYPm5_dzz`b4~1eH>pu^Tw6cD>1ay6`g%7P|@5EdusOM8=(+9 z8eN6~<;O9U?XeS2j>Dd>CfJ!_gHGMEQT@##RAAAFZYf&0Oj`qA9aYB5I%ce&Z8aL{ z2BF&1RMc}|_52m~SpBX6^`BqBo=o=n_f5m4(+aU8r53+;>}MG^ad`ey74|tEM8n~1 z)Mwj8Z!Gi0(fAc;Y-ovc9~k_4nuqhwv2m1yrKovl0{*BSg|YlUuyf=wcx2v#^Fznr zpZZ~tp4kNJ^fEy4>S5>&+Xa_3P1x>B6}Y>G3rw**gk_q-GtGTqv}zb`UQUJWYCqvb zfdy3ME@R^EhA<dG4&QARaDcBsy0^qAZs&chDyc^ASHZaU$a++beGgA|vHTo%M_cmu6hyGv*S=+a zuwSbVTGA@O1sXwxdl@c?bin*CY4F9^7#_&TLtpwFP#oF_j!Lm0hPxnNFbs6r*{DA3 z8vOXT72afuL!;(j#@}lp)Rjp+Tu7bXbz7zQEM_I=zNT)xx$m@ zDLCl}hl6Z^rYyi*9h!n5Dd{kGL`CoOfZZHuqz6 z6vsJJkW(@8(OPc1ybk;e5QSUsQ{ZlBCz#5|f_H8!&noNK!ZJs1?oyMrjJInyeE9Q(^+}wC z;-NA|_p&~`t4f2jnN^@S_c`1j--z(*D023sp=taqn)O(bZpdE4xz?9)$fg{(`B|d% z88@79FAC2NX5vs?1xf^6#3>sxvHrXx+r<-%gHpROd0iz=A8%*hB{^8CpM(n!o8h{8 zYwS&P#3OZnxa8grd~dTA$4+cQq1kcxrqT;nuiAu$W)Zm0D;m|=`Jqs%31gcIF>I^` z*G$gG^`DbiA94;3tZKj&Lc7p$<_286(H?*L>SHgfZ^kMdX76z6C~`dxe=CII)~;w& z4Bmsi**oyj?e(}hg@ZcI6Ht(UA8cH2fqlV6_}+65H6VA%5HuVlU}M}9=E-e!7@yn=@4`;Nz_&?QWm*h@E?<~L_3!9-P@fJC^I1Zu zD(lr$p##hm8o6DDu{Q&80=rL)+#ijnCN9GZ{XBeYat%bKpF!bmDN45Elc^4pNs|GY zRf&-K-!#n8E5#tz_w)6`N?c^AgvpuWtPgA)Ix_!&rqwf;z3LnUMwP>M=?1th6%OGC z^1ymL8~l{Ff{d>s6nRR*VT*-ueWok$?*zf|D+{3aWfPRea9ECg10!!;!d&8?VeaTm zhqEsb_I;IxO@fsS=eaL)?Cea&ZjBiup`yWLSxPcnKfmOejQa7uu+P74#X)9O{dDGU zs0u?~`+;#L%(}Xg^>Y!Xcz=VN#dASI%ZllZn8lpdG-u*Tj_LZG%`7sn0LKSkm@e-# z+&@ywq2laTW;ntDgnsP+tJf`X?qw`vG{v3AU4p=H#V#o4zkr*j z=b73a`*@FbJ8`#e+R3}C2HuOw&A&} zr}0pqB&~3Er9EF(P=~H4n*kG~sN;`tN7^1-E4Ugt&ZTH}w+=UCw_~Qd4t-dpNhkaI zuyt28equRC!Ih&Z?|BikzOdh!;~6--APQ&u?8D3Df!JIXiLt*Tu{9zD1G`*N*vJ-3 z0#+cyHN|a*Z1HNcH_BCQ!l<==SmYayCK)-HlEm)d?-yf(Z8x4x@5Cbg3LGomhCI7@ zYyf1V<88iZIs_7k|a zrx&7+pMkF|qgBx`9ujQXj=$7kFiZ-Bys7RmZPykU3ReR`ff}YwxQR*QzGvDhuE4CB zMzE~nJ?#I~59(}|b#to=-K#fbJ9_FdBee|As86BoDnew`cmYk~Z(*0=M=bf*ffa{O zVb}fpC^OX+ud;jIH>YFpLHHmlS}RfD>&0Z8sYng}^C>(+nckF6pbyno@ZD@vd@uDE zmcA9jz{=Tw`ygMOC4i0&s#HHeu9jb*eTut<*U54ho-}p>EdY7DT;T81#u=OfZu8l zXq>tX?mGxV|3EOKHSEfa)*oP^kL-uWCTqrUb}diJ%92^#bdw3Y-2%oeA6>~@8te+> zL9Of%^XJb5X4Cc*p74i*Jk1a@CU&zblbRU?p~XkoS*VLwIQEaLIpECMce0L2?s7rv z$6XlTa{!lXC*vEXXp~d-!@afAFfCmM_nU2k{e_ZnP0od9*U-w<^S5ShUo?fyU$>*i ztwgk3;DdjC_3&%nDLi2O04vmg;45V!7bR7C5hzZFZ3;-)wT;b_$FmtcEfST#gO}T+ zX=vG9e6KQ*oTa4b>dg<>wdE~3i?Y2cj+XT8s4v~VHIuZ)g~>cahEC79f*B8j@sgxD z*1gxjXY9(nnq?;IZBWC)8*IFkECBgZHD^UC@bA3=SPc{n-^*D;I@X{&pBq;)pX2SYgWVxp+}q31b$y z;PY}5tYbT5mbOkr_wO>S7Ca9>$xlbsfeGk-KnTByUV@sz3fLi+0@CWaVCWMH*KEQ- zu44-{AJc{A_ZIN9M+0uItYvhr6frp3%v7rufz(G^h}$aw#!FfKh_R>JJELjuTqUv< zXL~w?voKKZJRWucn!5EjdJkT~eRvI>Z)wn%UUeGklcMS~4VbZ)?SjtBz?!E)XxjS) zJ*VHncOm_F&QFQH@^~clbP7EQeu*!aHR1YHf86y_4>f(}VYr1M(!O`F|IS@7eAoou zL#JWsf*8=R3AfO`M!kd*8JTUR?nlcO)(ShyPuRb^r4-ALx-^=w9U zZwkZRn#w4+hA{_h!8EG&MbXm!1QO?FfNDl8S~&QW~<;<=A^V8 zqt37h~T!T^BMkwcH!k^at(5$xu0);d{1`fdt zCp$)cK|a%z_?P)+)Wn!=I{{T?UeJFii!tEXGf^QGylp?G9k|x)=D;#-07!6wJJtM8S2BspnQRMXe~H z(EMfe`?mspdz!&AX8)0Zhx_NIHd`lBLE z=vE=NT8NG-O`->>b13k>Gc~Z8fAh7T*r_6mzZg~23>C-p{HZwU;T*h}%*8t$78vHH zfW;gU{O_A2t~OA>>MmtG``G~B-Lt^_+NC(5X$>w4H^f(eTv1;#4$q9|APe}wn3ehX zBDDz@PpL-fB{^(1G#M4WGcj?)emorSkKy(vxbU7XcCOb!oo5qJZl63VL~7wko-8^} z`T+J5Dj@4+H|*OM1>F(xz?m5bO|4;|`fWLz)zg3_n{_~EzzUA9F#%PBE+*r9Jo9Ji z6p-Tn2bJ;@;c6B!kM>33eamio=(>)!Z>+=CqH3%-{|bltM)0i%%cBx`j#q^AY3a@7 zl;F688q5V~sYwsc z`y=S0`X4S^bq$r7Zj5I2Q{~y_m|r7=vopVdlif)eJ6{A=U$TMgw;J-2+55Pa8?-*N zfV=~d(AJy`%k(T^yL=jOM-)JFsGqmtl{izAVaupb+rmEcMvRuKI#V96%9xbvGa4>D z=Hh$`OyV<1=B@BFX6G7BM*M>-vne*1S>%(>{5_DxOn;Wl ztUP>>NgesfR1TRy-<=h3Y5M_~mnw-LWyP_2A-fmP+6-5>h{McOE7)*yEz4C7g_1QE z&^fdK4k;EepH3w3zL%fiW+sjDHgArGtLddsmsSbJqx)e)xG045C-I`i-Fe;zWO(WA zWgu(8&XG~ws5bHhU&jj3So&*p+M9$eQ=(9f?T0Md^&USvb>SB8?Kq3=P+a`49C9)R zU|(q;?%u_tCv(L}C37tem*1fSmRkJZ!^k&^p2?3A7v>kPK237ZTi2341$O!S!xp+2Sd9H?yy}~Gd;s@OJd%fz&A8;kecZ5Kj15v@J=Zc{9()um$p^0{h8Cv^#HaQ*sgu;8+&X=qAu&T%l z1!GKck%<&`+~=WXlR%NsRK=7lC^@Z7HL<~7bUhM)&^gIyTgxRxVj6HjQ#`h zg=O&BARB5~tx4==B}`q@2s13-z)K@B?37l`b$(dpkh{IYvF%MsVc zaNU8Oauu|t6XDy+eXzGT4q`w1fUBkrOl@2YDTa1XP!|mXwkhX*7+t4hfN(?SmM>Mz-sb?O|5!gF`j-aK$Gd zN*`CjRonew9k~`RezOF{h-DC6TMZL3bHLQ;B4~>zf}D;tSa%)bO-i4{vxsQoN*&MQ zzFL;e-Q1bWRpq5~yN%v(T=KVYBwJEAN`)z$84n{l=(d3KZg>snT(Ah&oSV+|IwsHi z5Wa->CwD(@WbY*A)?XjSf}6-x3LIg6eEY|^DSTz-v-jmpT~T-wVaMc84@68*ZEzG#Sh=6^+_d%hI2h4B0 z&X^?e7}Thboj0m1j|za~$I2Hs#wVisPy(~oVQMU<=kl-%;A_=R#4 z`R5`E>BX}P_)ahg#Pg_!W$+~)C>j+yhv_J#0uH#qWd_3Q8} zYHrhMXJvk$h$er-?Rk98B13+_{swCP*i7526Da>g3`Oo;N8ck?(9@-xsYcG2rvJ#N zwK;ssuQQ_ik6z&Gg~O;eJ0F$K72wmY+UUN<99_#Np^0}Qg!+ZU0;f$-IA{j9o@PMC z`djd|Mi6}j#PNrH7g$@IXZ3V(cIKDBWm+?F)MYjfHyPlrM{DqYuQLkeS+YLSwdktv zkNyiCuyThNF1Q?o+hk9m>e3QaDab~(xtlO6j)xo8Dd5NCH8|2f0|zYUVvo^3D4RS8 zs#4|9Ww8%jGDD!UIuyRJUS)%^9U%0{3yOKEutDt#6up|qG@N_OQ7&j@s_(@?v3C>} ze42zchvTrSW(Ga74j@x!cZ$56L>+I+$Uh^QPTdQjSFR3JDpx?lhB>6*#^#7Thz@kK zcV*?7)SQq=24zyzQ1TKtk6y&rRTAX6$e3yibZA%9G`g5hv}b%7EwAmMNpla8bn9wb z)+a%!!$Ne^_bz)6Yr;q2^0dIo9WVCUv*&;qHh*k{?!D=t@ht;1-{b1A~BR)8S0ATEwsyLt+w&sxnqow1*JzJ4`h|GI!lTDuk==$FIu;%P9bU<2d(7lBTq z9zIT33|GFt;qJZL#a*QC&Ko_}%b0F@1s)~=xb2rKM!m@gjb}%}Y^^t#yq3U(S97rB zY&_=r)?=3a9I`#GMvl)Xk?9Z-_fa@q(O*Mm!k%aGuG-Enn;LRrfYXxtj1GW!ZW-6}#b`yS8ora9wTafzk zCNR26_$+!RE=`id%c;tk@LLQ24m+U2WL<1B4nVC*-|@h)1Nd~yZoGIf0(VXb$L_pF z^zi6Kb={MAAe)bAzCOs+aKT5fR^#el@~9f3i`TQp*&TQ|x2loQ^Lq~j+UzNr$n;6!%8((OzU~^wz;7nL4M7iey=Sd#SJDCW}=Y+%REOuSt=~Qpv4sO!pG^TMm6AC)@vkq2pCh9Ne=sbOAAl5(KJbIZAn;g-d8%&%OAoAq z&vOZ8B#SV$JAH8?``I0y=!Pr4r{J`tT71j%!TA{~SaGiir2_^rSaBw8{W6!#S&w$3 z*dy$SUWs9U*)#CnW>WYq!v9FWDKaIK-tP=z&!|dbZbYzbv`kX@>_-=4S-yGfEE<@& zg@PjD=*hGz^gZ_)jqhn93F{h)92MmsJjvz%J|x2*f2YO&FGGRfw(1P^HMh}siAG{( zHB(Yw32A*0qJAfBl4)N@p)SMJ6McdWDuho6tG!FsE!z^-gK z8&*j%aTlI~T;LgO9!|wQ_nJ^}lRJ%ntfz6~Zo0~{6&FsGE;)MP}<*}kXZ=M|I}+(r?-Hq@CMM7+FX^mAJsb?UcJ&$~!++ZaH(oSjrx zvXA5+$Iv7Dak{(WIu*YxA{n;t>CIjny7O3q-go_n8}Rt#=ZYJ+@+om^L1t zCXIVnwnLmvBh-v#LxxNe^twl}JE3^EoUsF>AH~Cqcka-C;TX)kqKdAMMQ0KY~i}fNAmhpb9r(nzHkRzj&a>ap74e) zKV^nlKfO@lVMd|l6K_%JS)Rt{8O(w?rC^0RHvgXKJRDGZE9Xn0qR1%v9H2 zCVkT~xScWxqI2@W?j@UHcUc5m->JaSwiH-tuZ9KB?O?CV3+94>Ba><9gvyiBahG&A z>Nu)WrTzlq^Q&=ITQLq=3X$kHMJn6oKz}nPvS)cd>$N|G3QGlPsm~&MeYcH%F72lt zm1fdy^rG6(UV7VDPx0G}sL?EdM{`un$v|V-+jj4%saF^_yT4N;jN`FYBVvts<9U-@ShpC`Hk%rYzQm9lE>5Cp< za}Ez^>XkmqDR@gg?Md`NcOqTQZAFQfAFyAc2+M2-@kN^u{X5u%hT?X}ZZKYlxG7 zPQhO5GvI#U7$iK%2E}d7pnA9o_Po}>j_r3D;cLEJ^6xz0H0#|%i8TP*0$s~F0=a)GkK zPLbtjdp2jnGKL+4DS_>5ZBetObLmmE<%S}SU$&*S6RoLJu9QBCq>%fY2C~bwrSeaj z)H!VtUDNg;qft|OINXbUvwKjjR)SW`G~v08hj6!r9mf9IJx~q< zojV|B=?172jEAPHo8a_iS8xwG4uuWMSaTXPBK>4mZquK<{TKlinK4Y+Y3hBmdICkLwH-rqNKEHU{0dT_F3x1Q_X& zz*VA$q2qjj{4Fw* zcuv2M3-FtRPgCQ*%QP6BOcUgi$YoU)o$}p6l2X+qeCszAx{32YJUvg7Ub#^wiP5x# zpQtrA9^XpE;oTFtSYERUWt6P(W{C!VkDY;jk!pB^KO0}l5*}sL(0bSqO=hn{jnF6* zoSTOW{?;I8NiCj@sK))jKj9;GR!()9LTXDs;p0u=bn}cKy;yJyC!e^2aXFvR-zJ=N zSw4%h&~psQ*@aFPei(Gf5zhsiV*Y$9^zu~3u-8WD{*d*Q>7NFp{#rOSwGU{+bLcnc zvih9d$bdfE4~{mJ}sna%3DcVD21H=93>UKvoz7?2`SX)kZWft z{c<=+B_mBFIg&!ZF76`V^&6?q!j7U|w9vF^EECH*pE6UX)00&)B-7_gg9~|NxWs`Z zT|($aXfTOPi=)j$5)><;Nn!%=^gNh7SKckAHJ)6G=;70iHCi-Uc?T!^XprLW<+Q$6 zkV=D|MTUL5&x8ddMG z{J_8%s!159(Izd@&QhhGQ~q>l@k3P8uEJ@ueR$-fHZ`z!Ti!EMT6M;SR%<3vQu9Rm zs{S08e|4hwr#)%4I%b!jl@7V^#(;BVGPFC@jzyNi8bUCt1M=q|*XS;1J} zzaM)p_M)NZD6Uv7Km$(}(RhFX%UJd%o!T6FeXoTiUbWDzj5?Zpy^2()=hDkr2_&;M ziz+tfQL(~v$`HRye(|HUOt76!UCbe^2g&q7M3>Bq&f&EARrohK9_@1W;j|BN`0~96 zK6hV(#@FodvnR`~mo~+#H+g8?u?nvo--yE>OYvT659{@3_e$X%xWVWlW_knZoJQKJ zI)=YTr_jE9AF>aeO<&KwL&d!}aD$lu$!^W0x_h1^*IIxNsQ?8$e6hmC8f`=u;l*wV z{JT>Q8PIj-~pp17vis zjI@$26JH^m#;+sY-(^EN{c$v_BA@PNAEbpT4U|>N`d=>_Qb)f9WwEo*FO7+$F|QXZ zPFa!EPXl)LG$(D>^~7`dg;ru+SRr`^uY1N&bDt1RUC@Hua8r~^*F@3oZ*cr>C-lgb zLe0VB;GT366q=(!FeeWD^31^}LQpAw6gRFn`1Jli`Wu~+UFsrnJp-DgjL|)wh znWQohOMJ`tOHG4Go%=w$q#FdHDk1u?Kk#hkK;esJV06P56rI?8MlV9kZa*-epA7Zu zPD9G<%kZqN3+n85!k-3TsP1F^CNa90@LxTyY$(C&+t;Iw&MvIgVslV?%%_bF-8FX!{5lu>TrY3nKx+4}s z_2oA7`pPPrw%dmU*m+TO=4N(yZNym%-k|!hH2IBhp+D>6No}zL?Y<4lcX*WzKX z_+zH^MhjzUx*Wz5Pr=_cd(b+^4M$odai$_4Z+Y?Yg5P6Q?D>N`w&_#vBnOgWyZ2`N zJwn-5$EeHYD0#`H(Yw}U`dgn!2iHZDgIf{p&dsMrpKIi6Da{XZA0gYaJj%VEMm#Ay zs-LJ#9lLt*ciaJ7m5_!%n-b7}b2J{UWoP;_ciiq3fIR*xtlqN{Z$zcx)=7u);oVy} z_Wco7H(qDi+5LD|e;V2UEktUn_P596w5!Z3HW68C-sA8;(<*5=FoPHg)%6x&F3Y#gUGGPzxdAX5neyyV2KO(5=ls-MRktBPwg_L(^DdikBp;t-H zv?gmY#Z;%$?SMnnw4#Xu7hR?+-`-NB(`0@~=Lf3%noH*Oximk&h)&;TJ4Ey@(K(5^ z^kBaReUP6@PY!aaJS3b1Bdlm$WgX6++<+Gu4eF6)^_A`B)Hy|f-qvMf>8X!+W%C?* zIC(CGKa;1no_w4md>99w1>u_q4(O}nfcN(+qS|>iRK4F1PQDQk`k@fQ*qzYWRvUbC zcM~pin2D0E2Vj)-K`CViU^SabU9WlxCU~&j$Fpicnd1t+E8F1NvNnKVv(<#-O*E?chGaX6%lHvN<+OIMZ<+)X$~k_2%=Fpj-7wmgw zGU-?w(hBZR3}ZD&v+_mgySEVTeO?N3Dsv$C@*&1E(Vq2n?}3{Jet7 zcp()7X6vlb?oSUIs*2Dt0UgrjFQ@CQ9z4xHnWi6(p?!PeX;*qI`3#1VYMejWi*Ki; zFWH`m6(O`OJD+rmYDuiTot*0rQG0bLzUvwV zDCD*RS=s^#K9(XgeJ!e;p+e{X*ptyf6w9(NVfinT^iHr29j~)`Nr^t{JDZ~E4Qbq6 z{|oG0*5e_5J^mTB#MUeKK@m#@npmw_7# zpHZUF{|w2+?=vdV5DK!LDn2TF`l!fykW!~o`tqZw&|iozT9eS=UmNQ+)J5NOtI^p| z4}+{G;&@><+_QKG$;OjWYG?+!iu&@9GoyM4hQApaih*woF<@- zW34vWkwCbuNQs?`h49ZgHp{%O9MUKUHtiQcwMP+<{xTDE_s>VC7r(*(UIg#$MhtytW7_ zDo27;hAb$#){(Xi+tRHC%V=<82)($<_Q#6)l9F-?{ZW#lPw!vjfnFub$h?Cm2G8NE z%5V5_el|*;X4wX_gs^!OvG$P&&5j(y)qY-R)~$|=a6Jrquo^{sD|5z49yYQ$`yKK( znYrxud8UFtdReIATKyid<;8)V?R<=8_psLr>QHaR4OG}CO&_f%)9i~A$-Bsr-du{L zf|wlA6;7uF#WGUsT3=P?C%%(5@@V_-b(9Z2P+P}JhXPqviaLrBBW`5%@FBy6oIfLZY<>|xx zfB5L?7;0L`)4+ZuYRguj@8d$m-SQPrf1E>>94+d~o=aLHNa0*{`lY>{4s<4yrker1 zc~5jtZ4giLGf*oo5DogL<1j}8-=?@U#P)hLoup>-V(R>NmJIdZ(yQ~sY$x{!UDB%~FD9Dm40lk&!9uc(xK4d7MdUQI zkPfZhMy11($tQ3S&t7oHy>*c|a_S;JF`rANjiPk)gcQj>_{=gLtMG(8hj?)dXeHYT zxwEf}?Le=_*N>0mwdflt!DjZG)aT=gP&u5D#%8ek4AC-xWy+ZpqnBPG&bph1+A4)O z-&GY03mCNC>V#e<87S-Pj@kOjcs?>7Z|iTxKV`<~rEwpWBQJsL`!}F&X@;?<+ThEn zN$4S8hr+v)@nB6HW^dSoHUX))SFRLwR>xzF(hKB7R^!5{Y&WG>6{e2sQsMh8^u%ro z{agGF%S@Ch`tS#QF`H%lnRenmemBNMbfer36S{3n9em9s3eAtfHW2hgM0CG0b8u0nS^h(eBA)2j)K$zb|yvVSST_NaWtWtlT+LEsV^ zP%~ubWHtJHYzB!e+(>0AVRSNHjVc6KZDRNpF00N!fuWUH0tUFGECS0mt-y7I$1!Ag zC@S;!Aopz?TBU49r3IrX_IDc1EfXid3=z7pUWY`tX_5OV+tYE$fTk>ZiEWpJsNGec zCvB&~+Cxdfo!mJ;$6TckiI{*~ciG<%AyI z*g{9Y^wUr2v!oZ2P6M|(X!q~C^uD8=emI1aVV4-4t`VgB4Y%>AcO}ZsnM@BCOAy@+ zr-JY5RJ@`bjac@KjRBAHb@j;EHX8rUO27xP4cI$Yf{tzvaovd$)M`n`lBVy)0~m9J_2pF{e&~`%FRv%?`Cca^1&+bOg%;SWD2bnHr{ml5b@-=l9SYBt zNA^OBe$nTUyKWexeow^m@n^_kJx(6&?f7cxmBrC_V=l?a~&$kcZ?fG~du57{SPgc?RQDgdP zBS!u=Wtutvo<7qim0mUMx*r6h^C~ z-Do7&ki>_OlIAU@-AN`iGs%b?trk-1Iztj;8M_b9Ev8^44jnkEPZe@Y*uJ>M#67G} zb2Nea8fVa@&m!b)s!gK{OeyQaES6m)Px42lNw9S}>78|?_`W6dbB8GLNsgwoJ*E-? zh3x()3tbNEz#Xh`0+?5lXOK%5%ult}5pN^;Lvpe5IX zC?F(^DkN=anYSYqPST;~l}qSlttZV$Q=uz#3ESFQF=XWhocLXy7OpytpS6DAu1~Xw z_s@%t|Bxg1ouc$UQj?BLgws5|BAV!4NE!BL$oO3q?fr9{<_!ELRsK&J{E6G%l_fPT*Yj-?O&VW6891l=6ffSoQV#5ACzEs6%|+$wgkUkQo@3iFg!Rv6SvA4 zV9Op)9CvEK-x;ehH)AL6w5r5xP60l%5+JpHEfVUVLpy>G;&TyYs(iGFjK`;w=H7pJ z^5ZNzetjC5H{ZkMe%ds?emdPWo<@gKexmHmMPwIiPowhTc;i|kI*%{I2XPMAnZ)Ki zIwYw+KO2P?CgRkfFL_ z*AGBdkPwQBh@z}_J7_B&2VwgPmenqc+Ryf4z`-{B-F*P#FGDh9i`_rJSzG7gL{YEZyt&A%49TS(3h@VTV**k|Rrm_0Km6ONO$}f)1*wo`J+KP<< z-Do@KA1)2Kj|HLgY0sqkLq$- zuar)>E1I_2x01_4DgG6W77|;LO+sN?s3gUacK9zP%Rxu-t;?mVCKHzHk2Fn3iw?4% zNodrEpvuhST7!aXGQm67nak5nup?C^=vfrF&V?J!U=2Yn3MM zp(OMqp+;xoI`XexCZCoYM>KMOA6WkVT?Hb09+t2}96=?b!8 z@0qgC`Q)6TL*Ca_NO8Lujm?sx-x;jWQX!Jn$b;ylKA#?q^XRwpQcB_|(VajKGI3i% zZAXGI$xZ-QdZe=%c^60udj;~5CAi^TI~JOkuxa?8__W!8d~4QH>zsw;-!X+0WyPpf zNrC9{O_X3~K_8oFJg%RDheBRK;iVr;aJm85^Q2*)-xw1a*vPySsbLnUN;6Y7Y~Zbs zisWhklweM79bzuJ7enh~A)Hb*1Jz&cLcLpn&u)E!Fee%Ok>iA%*Qr=mS%Vr9-_g2x z5X;7|VYo&;&aBVHK&vUV^5P1bTDy@Z?@Of2#9Y$kWz)cqSc+ATpw1hS^yFG719bips0rgytj1pAEH zTM*5WF<`YJW7;F;L4~6m$#$+g1-H49n6M3n{zr){lOk+rfUGo9KDcD!Rii z0m^r1Q|di4D(hH4hR*Xz$!8XMJef%q?2fWL+LrqCl&Q484gc8d?o2vqW!$7I z3a%vb)RHm-ZRq1{Yl>RGkgD87Xw_MEhJGVTn`5MDZ6TlHv`vT(e#G_Xr0K*M%ik7O zrbSNr6f`f4s@VO><+m{;KPXP;`D{0gW&?Iy6QDS`t2j;MC_4E~XL-LOB(YDOuGRLV zhlwOr4@RT=ISUfldzu#hJxX^RV(FK@6ZO1UM~*us$n@Z2RPvM{Y0ayc^POefDJ-Hk zkzM2#y^*%vwkCIxAbQy9NF6UVDe%TYydcd%7vt+tXy5~S6QbdQt_CIvieZ}FA&eA@ z#QXYBkl}A6-(5?|xI~fNF?>L?>5s5!t}4X^K12gn0}zH$oUpbIC88zK>gq$t^w|%> zJ1sz~=shE5e2gjE8_Nu)tzp)@Gh{UPA7henA}oEh3%;=3f7|t^BbDf)Qepy%ElkHr zzw^*cBp83jx1oXZA&mX`3?<`5C_bkFM@$EBkLhz9U#ZV(ZM$ge%2c+UI)+a5#nWQ@ z03ug^x|Hrq>)2<%qcoJdv*PGKqhPxCBZ-tgvmKgV1%&14WNEpdqQg>2d{qkV2~DD9 zqN!whC!RE7LaFPI8(mFaNdsj@H1oC&eIC@O+53&Dq<$s&T=Su2r+nFY*^4f^y09KR zSF+P_rn!&(Ng{14IWIAwhzC4!s+mVldP}IsNS{K6rbdoh>`vfj>$?h+QW-a_5 zN9P^a^V@~-(o(dSw2-un!uP&TB_k*w3cQXVG_OL@+ZIgF|AnkcAF$)jUtUkkkW$)G?iyJ@i5&{fQ4kU(3(tdbFR9(7A2lD zrO=CW=<);ulG&q48-(S^wNi;Zx9QRPP~rt@9fdvM`1ZSzx4uzm;6$qp4Gqg(oP;Qml5 z;d?Rc> z;95NjI;c#Jv&PWVUAm36ESh)146Gc#dyC_-JDA9s@EvWk= zNp5;ouqeKUM4NwTbjn6?QY`03v}14HL^}FTiEIWckR19Pfh`@-4dDRAf1C^3u1SUa z9m#FmTMXm=g}Y*JR-Qn)^_E_Y8XsUcs;W33gc5Aue8>f}$pp zP{A^)WMfFh*qpBMzEb|`c5IA$fpLrPV?;tD=0A}n>p8n=K^XVo#Z97^eo$`wB07=4 zeazlRDNKDmm42K@=j#O|d2%9A_bj^8YCytc6zTguIcjPcL9IK-khii4ITkz6vWBIU z^>q(zd=*UoYs2Y^_)W5Uz+Kkk57OchE9j8WVG@~CM0tuebej8QJDN|>8lN##d1o{w z%em0}tax&MageHueJSv-Hz_DCp|Rs8kb0yk`6rH~rdUO~=~$1e3n`0bA1?#&qZ9Glj=p z%wtR>n)>DG3h$ANRVO04EC<0)D=>R`Hqy_eVNb+OG-{OL>8cy>`|FMTyFMtPv4}np z$XcAP3GOdADDVwfD-ibGEf}3qC#cw>!4``eFp(9U1+anVjN^q-xyul%t$8*~`UE^T z9fixpb?|!}h-By6II*!Gx8*EJS#K@vc3McgyO+?yJ*ITr&XtbdkE9`MlW6Yicp6e0 zN}(Z}=xXycS~bLtRR8+W{tufeM8TarG!Bq>#8DDb4y32zTWOEVBHCSJMPK}3k{lRii)oA;9Nd`Eg`GJ}+w?MXP!i}!!r=||!Mn$t6dk`9a~ zIi<-YE^13Z#P!I-T!L~k zG%34IhYZvwQw;ANGR~pZ74L$n_)uDYsut(&cENjeB8(K@BgUB5(aX69H+u%{lTqeO z`_D+T{s6CpLB6Y_Pf0l{^e3M0Jmi(5?(aG{D~MsZt`STeBA|J&2HH90aIL$5cWssU zqaeZ^1N@mB)`<(gJy>IHLAgQOXw~=t@|t2mKcA~n`t%;8R5oDUtXk;Dm0`Z58a4j1 zq@snMWa7S?iu8r3^F%jNM>vqa=SixH2%<(>NV>}{>BG#46m2I-t+hjFQ73n5?vtc^ zn>K8<|AMZ&vLs$Gj>d}Yp}m}C?L2oZjo@b>`xi@S#Ef0EcXkjtNkr0(x7Voi%oR%8 zUO}II8o2lSB@Kq`rT6O$=x>G%-4zL@@wfP{>nd~Z_#8(I;!H@{jequODkRTy9FK;s zq1z=x>G_ENP5>v-6DPCN9&zm5{6*NK7>{<(09+eB1+KEfFj{e$^%+QG=Sh83E>Oj~ zJ4$#TJqm4S#rQtnP%OL_%3i6?V_u&ovrjdS%p}Hw4efX)cra%Z(~xOrO5fhIZea(o z$bCqZIe^4nm!P@)8s2zUz+*{0es+FFgziwXF;%333{~22M2plsi46a_(-FpVy;@fE zW4IC3bkFC`%gv-T-ivyYT}Y*M4&{p&(`?ZNbcpwLBkgw3-PK#jY0qKWzaoGHuY732 z-}w|2t4)cTyawcKmE5~S=(Z<+Pe%7+knhOuvYkO&IWR|Q<6a8)+e^RO-Ra?gCvE!S zM^*g1AjxMc4*S5elhy6PnT|W^ZCGA0nM19PV2UOgN4ojRG>o-e^$a&I2I4KaDPTn z3Uc_I{hT82KLv{OubqpO2cal4JA;u{6KGh2Pl)c%0G;A(!D~$$KF8EQZtgSwb{LWgI2P+fhZtQj%GuMshL5 zcvVn=b>6+uXzRnuTNd=2&)U|^a-h(FU>cDvPUq~JA@@Xqe*JfpPTNOOT%{LPep^bf z&ze*83+~F5?n1pA=Xd+5(c*(Tq&QTY!Yma?@0AXXGjk?oUJsYnE6~N|s&sU_4ox02 zn$rGpf1L0<@;Som`BjhUoNN{Slle)voV85vG!HdhmUEe=pRgu%1wLEZt3iA7cz+?l zk}T4_NVawXmH#(}-mK+4sP&dKM|dGw^-rRXhVkSzay;EXt4rR&hO}YCBubsSoFaTj zkVVKHe9m-0U~~f8E2Yks%-znk=Z(YeL{VGR;JT#5Co z^N`^B7CS#kQa~-=dE{ro3m#+XY?}gINz&w*i%Fz^WIAPTF{Sg36X@Cj&M)Y+qMh@X z@_g)||7JUE3^D@EvHPaEg_G@#S07JOk82S0W}%it?4IBQ$1+>rij zwV?_8@15npp7;GW&>62aO)-GTqDQqq%4}2cbj%aJzs|Wz-okX0yY}vG zYlXqc?Ex(a^MCJS-X=(av; zDlDSiM>kRYa|7}XQK!TA?P-YC77}(@PZ=_E>GbW%wENUT3aj$u-ZKMo^d3pMN)FV# zZ~^5nTSb*^9<=g?1zB*n$?$#0P-r6q#d0BZPx{QZ$$VlDYZNf1p_J`Q>|(m{QiwR~ zf=fSxu&Uf2${AHi8&i(!7c=lW=_n#Yq>wb?JKMaVnq~OgafaGjXxH#_k9HyJA2ERP zhDHo84M(=fd7PY|kHzo*!m{Nv_wxLJuwxb;%@U^tiE{Kn=^ZX>)!=|o0vt{yAVxL` z_x4snb(}DzYn_AM-plytcNtekyg}2z4^$QZMYP;!3{m=tFMM9BBcettip;4H=A<@$ zBC$i$sjY7nEv|MT`#W>#^;!uEl$WRX-J_``x(oilsxitrAE}}*`KWcKuPB-9nn1aI<0-RQhmP`RebqXSf}76B`1lwS@O)Qrdp&eq?%_r)uTf82L5S%c ztXlL8?f?D6)#*kw;BQX_9!}Iy&FkK1?mO27U1~L=t-F;-u$52%@igbW676r4C#UEM zq~_{MUVlc=t=LF-MQuk^y$O~@?ZTB?6S2D40?X3d*{Rub7+x+7y9gb)F4~Jnx9-3= zy#n_tsvvJ$hzH+OA#$%6apIyR)nG#DQ)hBV)hyaId^T;KzMibtuAyJr3#qqQm!z)> z$n4&DG8@PFsV_c3+_M7`YQuOxU4EgDs|@MX%o*HjNUSZ#+OW_I({DQ9im0k)BNb# zvQSF#38vJ{v*bH5mArPP5vw>wqM^&V$C*E;wB)Gvjx5RajG_6`rWEVFnDz$Fr&ABL zxF1=QWFn?e?ANKZBys}vbj_w4D_4*OchK`I8C9?LLLtK)mtriDe^Ug@G8?kjL29xOTb&(i4v{hM+hTR!S3w{nErz|ZpQsc9`^Me?>xf!bh8zFm< zyMbSEwj$5)Z=Br(*`Ob=2vDIWUbkL#kfBt*)4!bWgNGfHq6|k78shXDQ*?Xb{;wO# z8{5!$u>`e3+4vEC4d0})QPA)i>s!QmeXc}@T)2DN%YgE)8&gy2R8kwJO=UvTwC=($ z917~hx{(sJOK~JQMlGi66VKAT@#Q4Nv)h)|YBYcfROZ~otiC6BY;qTFQy)Ohs*m5@$b)jJTR4@UMF2r9y^)pM{)=G z{SkE9U6Q5@jweC)GCCcvMXgD{kS_KO`8{1YP}vR3u1+ZB{Dks%HL|=Q%jfLk6xTGA z<{osT*zVyp+tiktTRkakeE==|Z!hgu_MijJD`&Qn^fsc5 z1Cztz8Yy7FIgTsy_-1-}g@Gt4OQBwiC zeIL042O{}@d|hYiU~*p{YmaiC$}M$yrI zQgkwP2#p5!nSLk$h2F-m9G)w)7ouJL!>F-k6a_dBA~CEMqnB4g^h+78={|+<`BI#X zs=_{zYIHQc!8prWEcy8q5A3hOQ#&0N!i8vkRS$<_pZL4$J5DJLqs*~d)CYY!BBn|| z3x?2x$KTLi)4}~a;-mph@{RDOVCh`S_DkZu(Yd6cUx|A660~{0$98rZreX>-;HXU1 zqGI&<(nG8pNQcw$mxvp22kX@?!*k#a1gjTd>-wp{zNuJZvK4EJcVU9N7n-k}082cE zRJ$aIjlYTSp;wXiJPk9)J;j>8yf5m?y>lJ07;Ui!E29|lub;w#MrHcD*_q0v!{~Ts zJT0@hOiOpgQ|mHNskaop33$y}`|q$-u95Rr3!#7g3jU}h!&~<>#G~%xr(F+r4VaUs zI)9gC8`0`sG19zbOpm?q zleMH+nYC12tW0U;d=b%Kp0=y5p^CL2$Dby2?2G}uf1yKOujIMoR+@x(1}eF5G-V2N z29De$dRn4Mtv$*l9iT+o)zfL7@mLyESV4jZhiTc#Kw?GRD9(? zVJTJ*3}Ve8De7G;MWQkCyl*YV_o41#YV$Qz@Okmljo;B6B}Oqf)M?hcS>$nK8yz|2 zN^6V8P{B)KBD)5}-m1nd%^HXqe#eL9efaQ3m}clmP@i=@YPuS+vHL2D@8)9kze4QM zyN*d$Eq$3od3`EuY}5EPmxPG)9Jufv<+x4}I+3ix9dEjH zde}&Qwh$u&zYds>?#4<7G45bAq`lM3$3fj0ctq4bwzCt%O4wq)x;Q+rtg&v;d{r(_$-Ecwnz+t!) zAA?Ix62w47)AJ7K_!n?5({&VS-^0jBe^6|! zLgO2>C^u~pRr+tDm&W{z=ORqu&%dMZbP@jBnggNRcM&m4p56+{QQ2ELD!r;sM}-tA z;er&^@|@tzd>guBKAl9r>QcG34%rv=;~MujAL!AcWdn1lXWlpTe&J`tJYBM#XGp<~ zsw6CFLnGT%Nzq+|)Q^esER+J3O&d+e#70q*!(v*bu$C5P1kwHbv*^diLZ}a3hFWPn za%?l;rdW#nHyM~as|53JHRD!X9X@=xj%OW5;B+Mv-!87i_*Fx3e5(TDyreN|8Rw_f z4~O|?BLtK>K=*hMd}ky<==}?b#y6ttw>a&rk)St6ROqGqSk7~kq5SRtAYUv?8w|8b z#Y>L9^@`9?Au~F2Z#YR=rgMf!Ht@R?%a=Fud-*;(FFnJDV};z|Sd0fH&yeZQpV0?6 z&%4MSC6}EcoOc(cf28Q(U7qba)DAU^N}PC-1SQUuJHI{#E)5CLtGbAHD(CQcyUD{SHh*i!rbw z3ui=c<5T@zU{M1O8;ziCulUYH@;~SmeuVbiGMvuOM~;6CZ1PUvjSc6+uL(nIQVf2i zUO)>!Bjz?g;B{&_>NixvM6C!nb|fNcb13!{oyC}NzI*X=9lpLY!keKp5cP8(a^%iq zdwUr+MT*d1>vS6DeS~7SMN#-*C`rfpkbc{84%>7jX)`Mdn&M46r>`avQGIGt)F#!X zV@W^Hn6zhW(u@>)+H@n2cDehK{zPleI~YgK!-T2maT5xC-(&PvVM^qT`F)`p^yGj7 z9a=ez7VYA`=q|obB;Svt_a;zt^8kkY_Xkhkd_!eRIV1!A!Qgx!tTI2N`q~f*|HRL< z;=SnRzuzlAhR|f5H?ffzLWO%<&}s7-dZ9njBgFe7Y18S-g(cMZ+=^V3Hjqq~0=?#a zwL|O9A?j;Bif86>_UlC$Rh@-!Q55uQF2Qa`5$wBiVIFM`#cnIazcoRfvN^JHg%PAA z4SO{iY`m_GXOG4}=d2x^)_X(p?`hQZ=0W!6Ymh`gP6h~*v;A0_`$a%apGH#r+%|km ztbl4#B@U~<#e|zbVW&QoZt)tp;$=Pp4nD|rDM-i9=lC=1h-b3*iJ@(?;)CqknpO3>_}0sKgA$NfEb za6N(ZrY+(y>*a9-PThlp3%0?fXdb+to1tr|8WcP_m_?#H%HPGoe_|3M+maFMeH|*} zb0OWC4M+YndpLZ?zi)i+XOlX4TgcLpXCo-{3xCE97?J(w2wtnW(9zX;)Uft4qL1w1 zpV+&Y_dH+Ur3FDq85S-v z&{T`UxBfGDClU|KfGDg?ipEO5gOYmgCW?#mu;|!TEc%`d(8H^y?ei-wWS1!2E6VZeiTK)esK7`3y;6=hxLmsP>A%#@tG%J!n375XU*|Q z#SX%qTk-LfJJQa2AgpZV%<;=S2AhUn#n1WSkl}pJ+tRw2Tds+-4pVUc z_Y_?DBn#CSzgdk>BD30P2$6ku$XtILQGZ_HR9GDvHa|ql`WJZh_7z;l*27QpIch#W z$AEtthE$!y$AUoQT;76?nAtEj(S@}+xHaQG9<6$gkGxO5nD0b?nW0DLQcUQ0fidqvtfbKuJL&PRAiCzao0NGbCt}Al z=tOP7_egnkb}B>d&rDR!kbzGbcl+qs;-Q%__HTB9h2t$Ke5invdj~$b^x=$S5w6D{ z$ENv*aqX4|hIe~$hui_U$~Yh)%mfLoI>^m1fcYd_>>ITk7l)j}dCO~HGtWaW;RKqt zN2B*a80;ROfCtYTnLjSZ(!&zeDQ-)S0c1GOr2hQ-9fUU{#2@AOsn~vJjP9x@`L#``L>$(ULRv-V>WU=Uq|PX zIJoXUhC2frpisUK{mw@*?qD%0s{i8V)RCmuIEvzQe#5-44}N(HbacHOt-7mCX-0fj zT{?oM3TseGts`w|nnKpef04K76pCwHu`TTo_SJYpIVK0K>z?4OYXwGseu8JNb!hrB zme%Xolb?$<6`mSJpO0{+{^!>i^hiO-+c>y6+1w!sEPCE8cI3o(ta=%VwZc(Qv|G-dTC1?Q`5082 zk7MEV`3W0iuYRo>9Imctk;ab)dT2zgUkR0scN5gI?4^GOw)O|D_5RC`!x!v>V(#i6e_ z6)qRtT$wr^>*iWQsoxCx2IkOh*FbB83TlUl;O*ufwlY8%L%u0Mp>82g$@pQI zaU@ zV#B$MNPHZN$g9T?$2lKg8dDK{;|cESw_%U`M_fs5hW^M7=w;SJzrO|pPs?EHRRG&n z1$g_q2$Gf0ATL=5yW16TYlJJ|BnbY}ashw0lX z!dqnw?2`>pDLRTfiWIrW=r?PK{lw0_R>94T4pv*o8NQtFvce^gjpx3_m<}y$KG?>` z&!1V)sebk&^eq#J-D97=+-3LsZ!tyjC#>)CCH71=guOa=jUCLn#-=@qXM$ZGjNU}C zH>G*ZXu&Z4?Btx^W_y$l*#^nRn;6!rN3&;~rZkrhYN>cj-TPmX&;Ac|M5gh zYtNF}$=$SwXaDVH9Y(T`Cg!hGh50Kd{IL$kj$^(!%y|$y&#Oai=Nvd|PR58OFIcf= zGP4XZ!h<)vuD-tn5HE%h5leILa0p{!zteSAv#me;0NcE)%ca;pk4!p zc{E{}3uoi(`+#$fym#?52WHKQyqBMdolY0A+Asrofp<{->j`318!_nJjva-Kc+&q7 zP3hk;c3eN6Px+3*r*Ggka?3pW7U&4$2K zBc8?Wo5wB>yk-f~BGCO(4f44hPMcuR#RMh^S&=&I!!l z=P)}_;>F~r%w$_qP1)HbD|RMxKHHOL$4;!@$~r%6VYhd>Gs`(kS@Ai07S`j%%1nfgN z6Z&VEWOpvhbiBoGblzdJpD%AecX zrBzsP_AD|YwCM7cjr2sFXDUv2WBu(cXk}bS=IdsB&gw+1vON8rH=5jBm1&c&6sa%i zg@OX-!LF01kMHEkT~dk4^rb1m<2k;yJVC0IkHJ!TKZJz1S8A>`T1PI&nbiTPo&Jc|5B<mVfmc)6Y%{_Nzc3ojq1? z*i}dHpZ_VrGiPCr`?4ZEX(wYTtc61A_d0rIMZY~t`HZ%$LEPW;DNj6}; z$A+`mG$nQ*X9QbVqQbuQfJqoSv$FGMtbWfjR-m(-Ie&~|r~F^B1&=jx=+-i5TCL-L z)RV{`b`!VKRcTcIV$NjDbCTHBvv*lacqczoiNN%V z3XWxJ>K@2#htyA1LJV$NG=YT zzJf-?XK1=KV?q8Cbd?w2b$ba+7rleprlGXo@Gk;-UP1d=DO9&-Vd>^;*pYP(1{-2w zo*s|Bt?R=b~9M^kfrQqLiD6r`?HW(wN}1kPe2>{y=?Q>>W4`d=(yZq}2Ti^_Jke*IeJ z`Y?h?JC?J!!mq65(^O=oEP(y~BXG+O!1pg--+dezof%3KT6i|CX%lu_ zoQNk@a=7@(3>EUhs2cGUy&)%%mwN$w9LkV7vj7KY7a`sD3Y52PLVLzC+&eS_hu0b- zXQ>&Sj~+(6<547}Y{ZT#D-1Uqho9mSIOg2Ks`T>Ne_ChQ==Z^FdR{RLc%I8jI8)1E zau#dp$za#Zs@WL7pX|aKepYzS{f_zLuXkp_W5!`eY!GyzN zXjL1AslHb5EIEyf(OI~D_af)~Y=_?>GmPh~sNHkxF|>0Oy~)%jsppz>l4mdHH_ahG z6%%sH<+EMy3!D?b9Va~^;ciq0dz)+wv%8J3M?7=2_Ab^BOF98>&No^4HwW(|pQ29pA4ECZPGoxvyeAf-w7n2bonJtiWmswW3{zLs zaQ^js4E3zVLE|dCZz_SRJZJoFPDKvSAnugRgzo+u$QgMZSBtJg!-3DfBa-ptZyah` zPa@R&7#5D@`}G6IkS7^~msXcxvEweh)|bKJ+*5eoYsRk^-DsL#kI4%wp(yx>(rsU1 z)=>?o|L$`)KoZ<{h2ien2)tPkf_0icXj-ufu0z-HK4}tUitfX?hdZ&kXQHCW6_SIx zh@V`~+{PVa2TC2;$iAg)?{_`caj=342p;F$M&{ab==&Ap zzQa|#`Vx$2pLN#TCv5a@A-U-2SOWNICO%olH5R944`Q4OqGowKWy!ck%` zP9uHIXqebUs*rW3_yGfQFViQtU#Yy87lQpf-{?CS%zfu~G4~ta-P;|Ayaxd|Y8-&Y zjln3jJ%bl5$*7jNi+HI71W8=Pg;hl`86iP)Zi~{Qor$A0fnF574#Ahtu55LErt-MYRuE6kP*Rk*86?Bij45RB8aQ=BT+I2&) z_}p>C6a>S0AQ&0J!T2O~9K)sgzjdKd9dic16E5S7Y6gDp&V*z5P58Yo!KbiS5c~WI zS(ocDg1>7{aE9*W%3BEIj<1cUlF=TQh|M0{&Hnuu<|iD*uiGau_stGWHC&Az&IvGm zei6U;9!MT-z|25xI4JkA*|n|A^l=iq@?|l*bZH?Io6#dkQ8#7F)ow8v&tdFm-z&k! z5qAY+8@Wr$B3)2c8!fny7$>-x;3=^6P!RNnSqNs8`3TY0~ zquIK5lbEQrI$PR1iuGNX%`O=#G20eRw$8|mx%2Ngf6X3tcJmq*J3fj@s1!1Pmm!#S zW;V8Z%*LX(PRM(C7>`FBz(QwpxU7(Y)jsafl~6^QzA0SlW??_ScQ5U*#=pBl0xgRWf+*{^4?gG2^ESTL*3T8!Or`X(!S?s3K zZ)RsZ8r5p%`0`>AZtPx%ljH4h>99UBGe*Nc-WZhvGsqp*#hN8rXsqWv3a^d0c>t2Ki8+OsXAjeu|WyS_-kz z5!k6HKz^Yb%pXj~9NPibux2LgI}`Ew+GRXgSAa8p`B*4(59!Zt!rSUPrWjtukh%A; z??5(Ea<8I3@DcL2l;dpT1FY~$!RZOt@lx#^rae552EJdKS9ld~Jul#+`FUh1rQ_=J ztNdJ*4z&empgt`G)=pbd;cJP@b`wzQqE-= z^hRP|Ac}lWfLcRvYakS1Cla9PmkOuKD_HVh3JkRas*%dum7OnM3@K-liFvFeip3OQXFz(C{C?;eH#_vuQEHpbHNIc1X2zDe; zNSY}qnx7=dHGL@vJ^x#<0E z=I*J>VlQlBPI3vXTB?Oj<{qxppb1#&Fav|T)<8&hD@=b|#QA7bT&^VCFvrfi9yt)B-b9G2m+>u)GXHFu7&o%=sTQElQ5onJ$s+5f3r!RvU)5hTWF@2o; z;)JLdJ?N174>!1*n2ij?-l;Qj*IyWt|2UV>^B=qFTE$-f)qzbJ_ZRZ~0n>~^^WyVR zsZM~;=vZ8P8;OA1;doUWi6y6b{StixcS0KBk#Yx-d`4&@IESYlv2cnCgT_jplS&9g zTBk2szaBu3iyy>aa)~n9sbQ`+C5?oqTD4Vzn{4; zU(Bo zp+LL5M6k^>Q*fqtC*QwcDDYprN#MCDRaiFMwY#SRJW zVoP&^*z(T9tjc&f%YM#%39@GFQq?pzwatt5-HT$%uG!2`tesVT?qdlb#nCPzjS3}Y zOwy1=O^iJ1#5HiiTn0hP(wOTh0YAlINLye9gEgCRa8Wq?wNtVAT|9Ta#^QzDX~>L= z!Zz6h@R+t8TmSCChaaAJmA@MQe3xNq@@(vu(7~2=Ej)QT3jOH{*f3=%LhAe3U8Np2 z^3_Kcap)6k`q;yg*9#-$;%Bz1zKoSPJ!I=nHnOdGAJ~YjUM9Dk`!gDpai%~C_R{_A z_p(=DID-`#)^=zmYI5|HTaN|6*DH#1XGm$xa#+v+o&8S#26$i5wp*d>;TI22Uw%-})#qV*->>Xy;+Qa1NIy6r7!@g2`+!XT1 zpSipzf259mX-i>ucpomj@C$qMQ5joaPr@k`dp!NM49SQ=JDy1S}V==1B zd7jGg2C_FKU~8i{tQ%M0sOwTlH7|g&wKeMa^`|>)2|9UC*tdW|=anYUB`ae42}LY> zJ{+oJdsuu!9ee2fjLojEW#6JcFxR>|_BQtkcf!74j*AA^-w&!-tze3G$E?tLMHh#* z3ga>FUGB(Virb~$_!An2otga1qZ^1%l?P$t9D+GN{7_I}k9w0eu*l#NwCkYNHA*fx}fmf1wqQWs{+@JuLT1w z!pvx>I(t8R7CR}smJQ#to0$#qXD@^!SjWQCEXOaLS-1GIVB-xezjiANynT$FvQA`1 z#+j^g&UH3%XciNGQ@|YNd}70`2U%U*Pz2QoVfNzpEF`v$jmi_oE^R%|f40DJ=T%t$ z(uZeaH(}C(Em(MZ9@=*TIYMT57H9_kXT=ryDVQ+Bob#nDpuJUqSx*gdjL$4=Yh)3m zIRyXuzA|+qVQlsqhPADzIaZi!%DUI#PR(_2{UT5q<^B$T~9^pKT2sA6X}*Rr@w&Z5z+X1{LNvZZdq zu$=RjY5%Hb2Fl57xP1cCEH7hcU%X&C$<^$2O$&>57>A5Mey|t141<#oF?IvzYkK8l zU1bj>IlEzuo-o~?{SKqto}gs&18B^P!G!G*kXjss8A?GoH)=DUom_%_q5jB|$j5e{ zHvD*S6_b1-5T)vYQ^i&mlPXvJ8@A_CkKQ9gOt!uryv7#m%Bf{i%sO|EZ7= zT7-?)HX`&6cQpqm<tHhk)Hf%NKB!D9O@f~vTU0vC~^g3m_-1QycA z1ghyVf@Lr734U`9T}G`8Ta#wSjEc50&)re%>il!8|3oHhnwZN}7G$z_#zid8*SoSYFv1c3P^P*@(8Y;d5TH zsJGSZzIqpPs2F5-jFphsqK%Ra4dmX`fPIc4q?$UJqO1r4c^!N4{U7!&tDBh)>tqLR zcd)$;;)rySM1?~?b6NG9^%}ot0h}*(W?>n#{N2nx#SE}Z-~X@&<9;&Tf=^6)(Ob4y z>lItRv4S;kDQ3T>@;Sit^K5s|arU2BDBIx3dqY}5EH3^Ki~8ikR7zJd`K3? zjz7pI*Ii=fsrOlENiLh{@PTbM>SHUb4a37Um$bJ0a8NpRc zV=*o01QuVo2%X+U%ryzb@9+Wy3<}dpwRL(<}UN<69V#k}{CHVJp-fJTW-h8;kcZ!~_LC zC-2hd`v!V^7OjiO7Y6t_YZCNdj>45CYG_th!JF0}tSY*QP0+o@%yy--{Iqd8E|7tgdJY>lc{86s&1E+Wt=RK`6>RZePc~0wqJHY zpweCXKlZ-*t%@#c+g9urTd}}ERL;HaS~fN&!U?*&%?ArXkdib(x+GLWMGPbqECfUa zQ30_K?EKbyy?@5{{;;o^Idf*_%swmbd+oLNk{nP3N%ru1y3Lc9OALbNNSgYNmDDbt zD(Tv4Bx!0NCK-I-qC_?4o}@EANv7NMKy>45@Fabl(hNpUU=Y$)oj}*@Bshf>qU`Kj ze9Uama}U}IL(zm$)5}opTL9;rn>Y|t0;jK!;duQu%s(_@=d4Dyk*_g%N+Y6{G-6ZQ zUs$YdFIMhsBRWs+C_J*;i(k`vilHifMBjboqc{B{eui>_G zDb7SyV`5DM&NRM-o_Q_Ke=kL|#zW||2y_xH#twDw~3Fp#NEPu1H2( zhf7FO%7MRg9rndd7BLx4LibOsu(q!f6%YT3#~0epT;8)%w9CjB1%&}(x%zf7ajQ&B z^avDjW{KjR{X?h8ll}#YX9l~(*N6X!szO7t{_QTYX19@8_DdqZWOfm~ zBrTX+*MtuPKVXDXBg)R*gXZ579QP{3{mxII?fnFi?GmtAIKftLD?E5?)V}R(%ym(N z*`_hj@}G!3+H;Ym*ocro2SjTe#iQ;#Pd*|B_aCOC&*DO~e^Ldniyv{*puK3G+D-Th zB_YlDf-Q9q;l3yzSoH`4&Dx4>9R>@{o*H6N`gG1cA1jtrbQ6VB+lV$nt!P>H1HYHI z6O(qe6T&vfsUhrPj9nlW|Bq;%R zB{$T3B&S<i9m0^b)dN2^uZ82T zd3a|DXlW^9a+}d;XRCqDTjn71z6JJn3`efdL%cKXEcOiRE{@p!g5KFygx>p$$D7~d z`P3@xkln?@ysP+qHxwE>w?iX(29|0nf&iILcKIi~wcBz*P$K_1e_tB9@i@{@ z&ap5Q#W*?rHtzc8;oYcQ?BV!lfl2{-?7EL-k}7=pSp&5NjaZ)b5?9)(8%d+;@AC3Nr3#Oj}17wfwt zI?g--i&fz`RGa}-_X}_v$aQ&4S~22d8U7tP54~f4n6YU$7Oi!Le4-Url$dkfGItbx zXCIvA=STa8#Wj zjJt!^4RsKkHT}iPnnV#edLiScIYK*nmAKbdTV&r|DVCUMa;?@uBD%4&7|nHLf9~%m z>hCCvo;ni+myBbKq${STn+TT*Ytd?ACc1Q6$n&+Pi6vsHcqthp8b+#!$eRF@^@;LC-F?v1TRLZkzB39S+u^>$dke z!ZA5Nt9ndzy9cxSECgr7;MdGVOe!wG4%ER5jnG~G3j2RP=lVa-(f!wbG&$bD|^gzI;SCa5UnUcB} z5t8};0=Sk=sHAK61WC{2tCHVyswHK|I)ToPhPC%Jq~)GP|F|(AhDtjEccr_V-ghgyL1=aV#AW3}3b#M>WnPrRp|b^{c_n)o(Dz zwxdwL#5oT0l!f#7(W3Xz@xs4(yeK(5P7Etm5%V_=7Y)9HM8!PLH&C4_f{$`u-v|St ze#KNcKiVjoP7DP= z58#gD8Pw`sfV$^X{2bazRQmT3hqb$kyWSlI&H084cJGkf<|{gE`;PB_?&15cc(}da z54COv_|jJgODs(A>#REx=N!d^yO9Xqor3{i3-IPg8?Ki*Kq%D>73~XNpuHyR`Nq>Q z>a`2Q&TYoJ*9&p-_k3*sFa~B<+F?liUy1vWZipH)7c)YJJlSuDYj17PzTq&+H-@9wJpm5gGVp#=9+K4V;QG#oIHy&C zhR)R(JDFwS!fSYSti`7d&oSyw9foMWz?H#IuzTY@IB~4R#PmEa%#FjyYw2)1RDza< zr?|c3DVA=k!wRKOSiAfk!goA@(U&T0^lgUDj_%^awJstg_Z&JZoM2V91M1yPabk%L z)_56W?zAm18>5c7U%KP+-A|I@@wX*izZ6RzSw55K>iv;?$?byXeSNX(>PUSg^=7uHVVN-JSkL1hK?qnI46TC^P$%3Np{N*UCj35c6koIkij5&(kztUBj{PH$wBi6B zMLMCP>OZs$^}=?80E|19f&sG%urs3ttG@8sGX@f&=BqAzOV!2X5#xl4UVo9G+d-T@ z^OfsF{6OmQ7Q|V+!!@H@(7t>O5$~2^zv?I)eb)siZjXj`%XB2(SpltC``}_9g}gU+ z5#YybJ*D>*FBnVBEV>K(FG;Y|bb(f1Rj!xyTcTF`TGIQ(cgekNPbJ^JH%pczwMD1* zy>azFb*x%$glT&zqC;U6yQKW3> zCn{%f{RH*4Vr)x2QXC(_=F1(FZ!bk*pWEm-;Th;oIhOu=0N?UTOz8Ol=|{@&tLZ+f zx#pK%{6B=AY(>Djr?9ff$J`r9Tu&wj5$Dg~-nazle&u(*5`(ge7*wjn;>Cb;^go`D z#9KvJI=l=I{;Pz2uNRyj@B)s5pJ8LCDx98D4xg`&5N!Sc$=>(SC#@70E|y|~#&xW_ zn2j+i320I|2gl8EPOvejU5S9I2CSa{0bLvaLRs_|6OAVc z^_ktp^0`;gx;X@8mEO?1br_v49e}->9lj>5;c+kxj3^llpV~f{d!Pr-=L|r3(FnNC zACE-yDVV7_3vGulhWFW3c)xTT>U7O9(tH;-_#Hsi@S||n3x&5<4Bk&n$JNMeI0tf# z+N^8Xn3IRP9=Vw8l!>O}8JOggh5W-;@pWSn)IB(M9#?_QCASbClZi|Vu5T+YVe#&0 z*xQETUqdM76&}ZU-a7mY$LyWq=x%)+bL!cTw8mji%MI-Q)K2u^JR;lYJa?^ry-5E( zPn>EqSX8h1&Fk`2V_dHy$WIp{@@g%{`ZOc>U>ETyahzE7d!e{kt1WhLzTmfy+G2_4 zGBGV|hPZ4tT(m6jCW`j`!f3UZxDs9jN0ADvz$j$v`a^T;A*_nnf(*6y61hW$B&@xQ zq*nW=#B6G=B(k6_`i-6j%TH!lvi&H=rys`GDg#&^)xvom1NWak97(&{;fvY}NzT;A zk_x9r$;y{?k^w>AB^wrZMhCkAc>Z)eR;sN*z~3W~8(qQrn%@Wu9V%v!s_^+USXAEb zDH^sm!AHLUYL=-O+7yb8%Z|at`WOzZiGW#EI2tF#Am#RB^nCRV%M$yDgHwixZe99` zxoVmC_TM?w&rCu00Yzwh^BV5of8mkCcMQ;Zfr)x$$T^dbs}^~9qn-_w1DVV#wCs)#0^YGo1qsmtWO#o+@tWt?G${rhoba{KTJ0rgVh;7?7S6(pK);re_D(w zHEl#$=UyCd87_i4bH2~*{vzM>9eS8w#^CgD9G~Tbu9ipOUVjksFOJxJPKLZbo3V4p z8Z<>M#ZH=qE~6&n_hEHBHg?mmico&8a`{~)TCI$`f>7q~3ghh2XAQP{&1_l_TfPm?!3em#l>^#RbK zI20E1*ujB%RP<36G1oPP{^mL2fjVg`#TAK5!l1JH#V?=@F>ZE`y3g zJ1nyJBXLa9gXzdZ$%k%Ul7@x*BqurrNRG~nlnfh@Bk4xZB$KwcN=Bg*7HsW-_j7w- zs&a1_oau?=(MlM)^Q&aefLh6lX-_1HXC6!Tek_$FJbWyf(y>X>Q@ImF#&BdmUw}i? z++e8_glO}IBtmEDaaaX-;^~INaGU3cip#;6J?{eM zS`?srXf=9WX~3h;?~$GJ0|QPC5`zq?VVrpb9y&Rg{NWaQBs@e^MJ>+izro*a^*GY? zIl9%Ap*XGxlasIGz=dm=ZgUO4i;B_t^iAZZKS1ZVP1vd3iaVO^#9SWRdf0ZT=+#Ri zq&kZ^4}BizM@hu?PMYFC!8D;hOHHiWIbK{^JVJ~y8YHZ(`wP!~eZ}9*-XcY-hdAon zRb0{PAVT(khU)kiXqZ`vSoQ-;S5@GF`F$*HR{-hKQaEpUjG6;a(Ie#}PD5N-VU6tkeZ1D4 z4??bnpt?2^GYwMlur(W%b8ceFihD5NvFuJOU!mgfJ7k^zh^zaW@Y(Sh%y!+we(vkf z6<3j8lMB^uS25g$eS&s6^md10M+Xla=wOF4B_1f*<&BvYUg+n$2d>)AXpP2h?hEgse)u)g7g_y|B5ZUB&h1FR1J``K^r}Mdt3Oa!)=xZ{IY|uMxlq_R zuMo$+F5$Yu%S0OIL3~k{igjmwDc34gE&^~*xpyXdC^&@RD4E$ zeHF~~b7Ar-2v4OR*i~Qz!-+HSBCAI7%Pc?=GVQ#i((ktZFm-bbJ}^gohwn~rk$3R} z65@ZMmtIG)d161Im^+qpLZ^u!jb)-^{U(m1D#QG~G4-aN;!txvGQrW#u99^*v$ zQy4Zj0$rN$anLK2Y<-H-zz10OUm+wDuH&;q4nCBoW5w7Mtm~18m4_3MGc+DWTVpUJ z_#A4J&tYqQ9P*weA(O|WW}QvNT(wjTX-GzFza&hLh=%2!Qy4uz9Jb6CThjxukK=N; z7aYTw&OVrveiV=G{a_Orii6vuuz5o&)E8%?qTm|VS=~m!kWxI#djvbzr;x3xL3^v$ zD9~sCEvkdd&}!`QdWgp1cR2^T5Xs|jV&W#oh?jFPlH&zR9Ri^&-H-B)cI+daAlLp6 z?c41^W4=J`wdpBZ_WZ;6wXYCra{={#PNH#LFsAPC27PpeeYFmx9M4{rI}DN) zJCBeLHqAOW7|CxUMa`i`BiwNQi+7Em3Vro z3O+R~j|I=M=0_dcb!=a)swmI=4;MIyjzwm6`~^M;xy3UjtQqhyRxTKaPhg&tyjTzg?L;xDXk zaGvJl7FcuKrlR>hw!UwIdrci`9#+HsRw)X2UhNjv?+?bgFmunufj4m|F^s~@{U=aW z8i4LMeX-xy7s*Y&aH|Qzore)PH18Y&kHsVCT`H<;F2Q0+9!}l4g{{%W@V{Dyg=_Ak z9mhA4{+2>zBjZ5zQsy&vakEPa#Geu<$K1ifB(5(#;UP4fDloC45_%7wV!@0WjCJ6c zQ(!foCOpRYDfcnq)g7ojE`m<*Exh}E4R0sppyX91B=NCW<`RNli#)MI%Z+Wn74~M? zVE7Ct9Np-GL!K@;oU;e3)DK|bXD{T82*BHM$MNr1C}YELbln$6eN=<>&EhO*Tfht-xK*8%j8&DGrry6Y~Arh5GeP zV&erZ(e!ee=(lR2IPX7G1j(n0kZ%*XUf)P@`hG9*Joq=xetHEhze;$rET}%Xhq{SZ z&}l|2w)P9fs#89w+T?|m37+WtKijYV=vn27gr%pjW<54g>5!u%h@$hvb`u0yo^Uf5^ z4^4*t?qsa=OhV+vWN6GzM(25HxWo5JNWTE%8CiHR@Ctf-zkvyFi}Byza#a5J62&3k z&~1Mw5iEL%5m5t${PIZQ9;7B_T$m;-EFr$n7NSoY=c;anQ1+T3#tqaEk4nagh^-^J zX0Ng^ywFEHQ0gYS_vtLUMt2l@&bAddy?^6z;a3=IeL~{Nw=nj8jkVjJV2ZfontBBjSLUMUf*efvkd5kzS8?&y6*#`n!<#B7dl$^NzBy6$bcPHlS;b&1E)7XE>k^e2p)z9ZJX6?c=GaqjXvj7fWivGq?e z(ex1xdfdV3;Wsg9Wgb3PWutq^MdZ)SKw__S3^{rpUA^LQI`k}Vd_0Z;6OZ7^z2%80Nm^8{AYt(k*&AS5_-^B-a0)p7ShN0Jj6Ue@B0+(7&pu^4xEL(gE zolc!V!Mku|O^Dzc3E`OF8jgTTk+|#^i4zkO&@DI)O`{``bT$MXjvd4Om_vA~u^-zP z?1y!KA5?O^v~(VKsHpgW7s=g4%(T&B#fB-O_qVCy#ER*n;iIPb+Fw(s@Z82SH&r1% zjTZfQKL5nLv6^+%mR&k^BR6Bmr!z~j)k$vVw(&9glN(Q?!evz8u%-DN-Q zc^!mRZeds%dJ2yIaj0yYj=%C;%+x8w&++A0H1!o0lz%}G*E7{0!(){D`-?ZDcphmV z6*0$Xf=IqMNnEL)C}xbBB!aRhihoh6Vx7krQ6w8FCQKhH0>=*!i-z+gB(}Z^aYM4{!;83tP8$Sa|&n?(}&JiTn+|_p8U@pa!V* zY5+2t@afwdOt)x2B+kn>HjriU88ZIAS!RAOUwhn%ZzY{A_KkGhB z)QS=AoR4F9myq1+Jc{SWVA-kDcv%<@lLEHQ&Aiz0pD<*FgrO-j1e;s};o{+oKCiry z$2s)j76;%G=YgQ!2cS6S0SesDJZ?WGr5;8pV|lZY{xBOAjGoJbF>*~P{zdVAuM-%W z5{~_?5jfTq4t2i&glECHcP$)C--bc9CJav&hC`-t0y@XTP^=ve4dn>*G!De^p*}cz z*%R)*9*EU-#%Z|$vch&izvm8w-P#VLh5D#CYRvQaP4QX94L5dqa=NfT8f;JEY(pX< z-8oLRGY?8@3NhrveN4%!z>$MBxY*FjIg8)nSMv=`!+zk4(ib@G`otLTJx0{NfuGY0 z;Cl~BoY&+NUxG7N3PBO2s4ssE4^(2?sVC@q^)((kHsZ^=cj$NPEqX_N zMBz@(M_T_CS1)on}0 zn3Hi>7;+93hG%f#bOa**3&rW%!3a9%kI|!ipbz`)(YBvgr{F{N#(#8-ie=84lg#NN7BXgYK2{_{@E({qQQP4LSDl z`!0sfF2|U^Pe7`**cSX6ejDFm`pA#izN;BU7n?CUqZuD3d_;K2C)g%@!a9!af1LLb zKKq+-J>dh=Yd*km%qLtd`GEeN-{XnddrZIm0g}|WNZ~QmE1U;*^T-=muKWOxq<09J z^9o-X!@bLSf}!S>C^vkBn&2{o_b*p{br+#&^k z+!N7ldjkILj|1Mvp}B7y{Oiv_*(VASXSoJzXe7LgBT+di3d%>L@N;AwK1_&*rgk#^ zy-S9omd6I?C8PVTWE`+bhId{nCU#GSTWd0UzfQ)V?I~z)m;_r1bMvG)9Df>vXA5Gm zt~?4==b})icNUt@Pr)VaG*&8~;(R&w2PvUQ2?#;k_Mzwz9EvAL!!R-@43D3ML8VJ5 z92vW}^b3Ug{G+Hi=857o4;($S2NRoYF@KOTOnMuk{J9A{S6g9_lO1weoNy{}H&zed zk7vqv`ky}Rw2$HVj6i&;3B;Ut!D!xk9CjiEr+{sJoGkf@|40=8y%wd0B`s$wkA_JkYkwkj%=4mq`|;@tn0a^||=xejPu* z6vA~;39#}!mPDuG;I|aqi%&+$a?V5aPQ}8Tsj%IB9vxnCpKnb;fOj%FoJ+!w{}S+i zXB;lN$3mwu7Mq60plR|sgw{pkyW%WH_BxH~W8tU@31wXmLvl?BZmtW#*plP;(lrRW z+XIkc?~m*u$B>)vgJwTZWjahT?tq}EfG_nBttbU6_FKbD7}9HwEPm5=U>D- zVSI8vF6Lar!#_7*Zhjk==NG|kO%a0nar`Q>1on()#yNUW?jGs8C zVno|p2%mEsv$qt&n&V=lD@(Ah^F0ha&-uS!t_ zB_7r7;xVQJ%kH0eeDFxb(Z*y9&rgADbP`5%N=C;w33yi!i-8kjkoP?XKaF{Oaa z2p$*RnFJNishOskgwx9tVawyBeti>hZ&f_fy?H)oLmcd8N8{t@7<95dhpRg0&}Qjr zBq&Z}73=DR*psN&3&-G#VF69ZF^u!Yr?7ZMt%=Iibc;nv{Z>+q06!jd(=yv27W<>cT)jR+> zZ31A@E)b(;1fkSE5Is$Kenc|cthOQW%?QC3oiLmhVHjK=4v+RHurc~1`c<6f`FLkx z?ZExsBNF3BM`0PqaTYqqV(y3pT!309WNn}b$V1%COmR8Iqr~-g;i-NX_E@y!^zk(FA0bG zCSlNtL_E@rNB?1QSbs1Uc3oq!I5Zk(lA?J(292+xukQJjoY=A_DziKvZAfL2%b zqs&j2UyAs@_J4iw|E&xJkI|$5YyZ~=|G&z>#N%>$dQ?th56bE4E;;!)$SKE6PR0s3 z>FCJGbc38qwB+=H^jJ+!y~fHZf2f?K{pEC~o1C)S@%2Atw5ml$VQ*wq zQ7faL6*78LCL@R2GK#+)Lk_pprY zxcxmOBM;u1@@F@_WpvVq?|V!}9Rp<)9W0|?p)&dqA)~`*WR!lE&qvB=9p85)H$84= zqh+Ma?N5}9Hu1UFyuHF(ecsw~Gvd}UMn-GpCO)=N&Wl;tEFE~m!Pa)PRydQ6p*WQLsdxSxje z{y*-k)Nyj!uOg>oBjxm++s6^yhkX2$`*7-bIfYG@(~`Mz3gCWDl=1bBe9ZsJn@Bm8 z=Ey0ol>7EMU;j}~)qmvF+Cf2UyD2E5w}MpqD`;F_1=)00P+eCAS+!Hp`hRko|DAus zXE`-A$mwW}oc2ADllenA`96|UeYu==R`GrL^N(-jRLS2P&{jbje4oIv3gQ{_)Ve}J zzoZIscT|vpr-HtoP>?vUpwrhCH0ptZ&ekfZ-&+NB`>Y_7p9XPj#L2se_U} zb?T~5=3Vqj@bT$3`sDRTLG!*VDEgy{b+DXo7drCxWW zl$;}_;y5XF4wF*c5h5FyE0Pc->q#Sr-y}dqR9%H8^rzk zS3&8f`jk_qPlgf$$~VMFbs_&W7X=O8N(lMjL5Hsra(2RyDo0HE*b2{g1PO2s5 zw6BW=wOwXG;}2QTkYWo;Y-33)=30`}){-{HTGGk}OIkF>iZr%cQRHE6kyhk-$%;B( zx1!Y-t!QAF6_K44L0Hk2MoW6+X-S?VEa_sh1-+SVL1z4n+1t(OR=pYN+MCh9-=_5K zs44v(Z%Vf>o6wnUCN%7)F`bArra=m0x<1aBI{h^wy9Ohg|JsNiwi;1=Ut?-nY)n3T zj43YPnEH1%q1CHR=#H-m4Jk39{(ntq%LG&MSYk?lx0sUlHdC6eWlA5WnNm@AQ?h?* zLQSVks6xktxK1po-8QCFzSp$b#x(Vt5jABSQOG_cN?mP4yN4Rlhxdkr>xPsUVn{`{ z+*TRVp>c+Ex2++adTu~#FB{OLFasLv#BGBCX-_er6G{f;SFcZ#Z|YOb8GRbCN1rC> z>QkGU`jj=0b@Qu&8Xqa>L8gM5SjT3&uhde3!>8*M%}V&+9N zNW7G+!db?>q%_}MN>9wB^k%D+DwayApQe;fjFwVHFDZ>`Bc&-VdNjFFk2<{4BOPuj zZ}q6-cRd={LrP&2r8I!`5jl@HrWeU96Y3^(Ey0AQsF)J@a{Fvbcek5SM4=fiUt~^`ubWfM1`Ar- zYC(_ASdwh56%GAqMGvB^$y?io-nX@-UO~3hXNVmchTDEH%O+U?;;pAsCY_KqWs`0Yru#yC;RHYd{eaU#78C%RDPMDuH$sK*;8Dt_xk z+iRU@?F}bV3v#01^-iSp-H{f0InvCIj&$A3f!1c*leEc>R(7zX@4aowdbAAr4>u>{9|;+}|U#P04wH zDNTH6LRY;_C~ct$IW@E1o-n3{CB{_r#)$mAjA)ap5&dM{v6ULq>fZ*mhV|s%Yy+BK zt525>vTd8BPxciGN;<5dXMNcZG6wlEmaz)k-^1Qgx+;@W>Pjgoua;8nb}7L@N|nc@ z|eOxd~GG!@l4f>%fR) zDOIIP=?=Hg{8<_Mhg>d{Tsg;SlSWHgR{?;5`5 zAnV6{DP>NUkt<`Un7@p_Sl92cf9#^ApthG4q&iif-kj5?g5d_#IoyB_k2Iv4v4(U* z-H3jr8qrR+i?Tz;WKeEQdXr3O@P8&0`OSn(E|^kDH*<1+U_ldntjL{Z>%5ySb;z-! z-4*s^Qtd#J^Nw_4wG%zR>O@awI8$bPokrT**71TW>c~+u=sF;chgo)QvKKxY723?qof|odT!1(+zH8c|WR;JI#6TMn&0f zG|0h?ehhS@_&8Tm8|g~d_PWrBd}mtT=tO(Iuzr1Zpu_yzE+*R1EeBirHqVBt2U*k0 z-AQquke~)Sl&VW4S4*uuK}RF{4js%xFOybDC#sPRCo! zshcNXH^GwrE3>2?j#kvIyEP?*Skr;NHq_bGhAtM`(2<_D6uiuqjIC`c(ZiPd?X#si z8(X@z(Uz1Z*ixqk8yX#AL;o$Xp~9EewDpKJJzza`ziUN8pZ(h#)+0Sjx|?S~$^9(I zQD#ostbeghrqp4&DXrgQLNo6gQ}Y;O>gr)cuNw`?dZQtY&NCo`u?7^eU!V58V4Kf& zzvEfPF;f^nv&_W>N$I^Q%aXQ~W}M?s{kpwTJ{I`oQlB8jnGajyI&VfaTq87we^^lvc10IOHg$ zfFn|RbyiB2=~5cRzTyUN2cMSGsoheV$2uIxx}oDIrIUPZ57ysV5mNebQA%F?PJ1Au z&&)e~*ryHM!n&F#rzBOznSl!0$2h2szCP_Q(WhVY4d_X}0d>_iq&pf$^oTJ)`=utd zkW9%i*Nkp6W~o_VMYdn8X~P9uIxn}U;u{Y1`==xAk98uALC)0K(U}$wcVYkFLY-#2 z(sNf=I_Kp|M~=HvaEL3#2Ds9V!>*LC>q_Hhxl&P2SMqz}Ld(v$&{Z85s+;6OPQRRK zLzOcvE_No(OlNB6=S=Dr&a`B!GY!^pCPkz(6;?Xauy4+^afl0@nd(B9=DASSG8fWb z=t8$PxUf#R(3of!T6Nill#^WOG9N2-bfH%poT<#(i6WOf(%E4SjCbtF{+=yG#MzLh zxiu|aVnv-;Cnl7ellMzA`m@Z8GP*F1n_@<(X=Y?2HK(bAEU5IE1!*Q)Qj>`lZ5nA! zstwkpklWC_GpzI8cnMJsmH#qk>ngFO4?TJ;s_Y=~>aS$Lwzu?0=q{ zQii<=88S9)`_+(MGk%@YgJpk}K1t3fsGHWfj!f2_W_|jPan|cL26UsEIZmiP-P6)1W#&Md zeE*5_S$?YJG>C2fZGAa?v0;DjEkzDNa=1i>thJ}qr;4Km=nN7O79r!_X%LTAIrXpeMaBs z{Jrl|(&uZoHcDxBij;Qlk&-Iw^Q<|%?JuS2AM{94rAN)RdNidyMgphXU}Vu%C1cwtYvd+llAKRfaWV%xpJ zjy?-J+P>V5%$!)Rs_f{*PJ0@w?m({?Po=GOq~YD2vl6E5K6Y6Dv`>upEj*>>cpXHNru*wcD`@83#}^xKX5rO=UPmphVu zvLiiO?MSBC4ix;yo>V&6(~nwPiuSM}+aA_5g!z(A8w)B6H={x3ru2z<%?0KdQF%u6 zagY(kdl*v5Ujqs|Xh5r#nb)Q1)3Ad^w0DUSS@HRnFNQSkr6JvVZAeXj45`;tBkH5i z=l3wzW6rnH(})t>j3{&x%Rqu5{ny5jYM6J-U$0Nu#}ssMfP(HmV9w2UUYYTb%KHE1 z$a^}nyjQWk<=9URV;(b(%V;wPz1K!g(V841k+Oeq!*YWJ4Q!u#FvTLw=iWNbigdc@JhA z8E;FE2iZ}Yy&a`S+tIZQJ5mj^BL|rsbyl+@%Tac;cbgrBJg}q5tL(}Bp*?+aa-cYV zZZXUGznf09V5c)}uXm==b6jZ4e=an{mvzsO{g1W_?P7n@XS@sf@D{Ev^yHHZZ64=J zhvv9amYOTkI~UUDYi3t4PV4DRBP32#D|e)}Y=`UnI#6jA>!7baH9FXnjGw>kr5!y@ zv!k~8c9f86N9&&2(Q@WCN9WqpP2S!#vZJs;wp4W0n)Y}wKJ>CA*Y=il{;LJ8oWfin z!II?6-w$b7Q}bLK8aLCHOeWdUnICr4waA{ftaYIMnGUqPfpy}k16_%6px%oeXw7BT zm7(^eF1I6pe_QfRv!Uz~YwFTqMaG@2Xpy=l8R=S3i?=z2oM)f)*p%FqOv!JR2|W)t zrt&XF)b_A3IhYxf)@EZG!(9BIG9S0&|F(@W)vFuR79C@fI2h9%xiOuaZ%hljaSR~Y zh&qlmq7LSUR1j=H?PAyu#3|?%%l&W0_5FTJ$zIA>gk?`BQI9@G>(Pz-dQ{t!<2m|L znp?-%#X?5jEMKi5avC^YK~d~?Y)9);!*+erlQIvTrcYYW*_Svf=nlvH!uH82qlx*l zri}g>bKECMk4}EorF+i0`C_7*|xOunhnL>v!;h`*7W1EHH~_2Lo;97((Ph9>gi!m+gX+eu#G?Xk+1t@ zPY!SG>FX_f8WmwrS_$?va=rsCQ+K2(M$CJC8TU9bHd@GX`^uFPbls@9*o_K%xl{OO zH*$IFM!c9Iefa1`FUs7gZ-g85S>#45!d$7Yhbtk&h3pQx(Ax#BR2=R~e;JR>T<%Jp zf4I=Q0v9^D$Az|z;qSyaldQip&DiTiRjrPc6z@nkcRJFTKu79P;z*;K9O*wpM^a|_ zv}f7mg_LRWKnHTJ=l5oOv$vZa)y}q|w=DaI+F6nf<90-vlPmLO?|0@T-D^SZrdv|* zGfNs3U`5a7SkqO;{<&Vv83x)?A@dVu?xPS5JGy?tJEj*R8DG(*XTy4|p%qT`m-ZNCNGJj~DYH=}h?ret@E|2K}=rG7Oc zH52}i?a`szUv((7tu6&^W?5uDySzk3 z8|yj#%<;p zgo8UM*m4K0(Aq&0rtF|^3wDt2?j5w5&t(tSr2sQs>VHX>bbjd4OwuFU1MCB?>d`}v z52^jrqqnVkXOG!U5Z|;OScB;(*D*RwEzAN8kVzz z{$}r>Js)<^zAL&kT7zS*8|4%~&VU{SU)@R?P*Wv+t`!w z8Mfv3ZRtUb4fS-erf2?EWD;dX*S)RjWQ`4_x7yMa_Wic}-PWIWiRxcUv45hl9IINRT8Dh>#Gs8_#vabr)xGcXxMPoWd8&CcI-y0O^womWl@SD|0tP@T%=L7-VTn|=0VYVR4iHp%uyP3Gg7+;M{4fd2o2d8 zp$35w8oMoAapl5Qv~ig7Cx_}5xqtqa6ZJkhL@i9gdJ#E6b9)7;Vdp>H@rx{{>tyBSi1=lN;2SsGQ$Jly6Fi=H&@d_oKl&09T|x57Es$VX_kE z%u^y2KOst<^`iBAQncE(iI&&$C_PP%RFR|M>XH_!`oE*Sz68m9KR~@|_$ws;cx@qf zYtqe6Q-a1S^^UKuwDVB|__oX1(c020b``!Z;jL$^J@lcz(x~7FxuQH(_@swUFCM1g)x#8W-9t-H zv5#7h_ps4g)7eLXyL>fx!x+7-GFCrX+3+q+?720DS{k+BhGR5~<4x-Msx@`qved2| zF{8B|z2r%L+=G1mU*b#u_nsO&&{Jt8J(UaYj}G(Hp2MDUm-EsFPcIFC+mqq=V?oqJ zYkH{&_~kz_DsuC1Z5T0JN4gBxejj3oakxSfhO1}y;i~k?Lmn;RpoVifR)1cOQ{}nwx?0|#TC)raNH?fQR)c;R4eA?`pn2~T zb^c9~#{NpygZ0U3P$o(J1~Bu0;pN2|h(Xx*ab z)TmF4mN;TG(h{T4@-Zp}zN!|B(!LK7np-478Ha?c|Bf(yn;)h&>0xR+FieJNp*n^h zDN-jy_tE$5W>3(|>J#+-OprF(f)v^&NO|FjfZNnTF9k{^@QEEkD*s}F3P*&f)R9m% zn;xMl$D$N_H%8|>#Htkat^2EERAO9=T2R+I@-{}hH^pk%)>!2!8mk4#v08d3R__kS z%C~c@PBP|}7owH$G)gCCMe5g=aJ348i+m<%^6&tq<@Hw&@`E61+I7eItLU?_3LfmM zMt}L}0rl@K@8RPY-Z}`bSJd>?&o^L@Sl^r4>SXl)lW)M@e9YwopX$?c(FEhe6-F- zjna^ykxHgs^<$xzd`fxg&I3=qc;~5iRlRh(ua{O2_R@*Vpw1Jsh8)g{u-Y{GS9}=$xo}rINJjNs^8~O4iHFsk;0kRm+`e+IBWg z*`B1SK(%xw2c~Ol_H-q5NmIb$RGmGSqCSt3SX)d|IKD8TP$GIIL32JDH2DvM%BC6g z$9{t<;}cs38kD)OK|%fo4UaJ>Q!|6&8B6f#IL)jQr)KwJHNR|}Zu`Zlet4Xc>cwea ze5}4NijfvYD`iWR*1U_ zHs@vi4&QkC&R4ynd{u6akLHi})~4_}o&6N79!)}2^n0+1v<%j)PeD5D4wSoTfG)otuVnK$UHCXwvm1|5FO!eT*Ys9E zxzQTcjCFo=dV$>J6|7bGPZ=Qtx$(AV=>DF(<1^J$uUmQQXM(3%4rHxtIBOgodB@_# zNKNm-nmP5UjMS}akcazqp>{=n5*gpY@-1p-&YjvECCB-STD^8DZ#3}Ewc=i5ikY#A19yUmlDJn@@eUp^bFiABp zC2EsjqJBHVyv+WdKs&~IDZ(v_}&<& zwE1x=u`o`nJMH5?VE5hDD{h;D<|j#>+$=S1Zvjf0QK<-P~ivuI?~2p={?3%%NVEe zC&tQ7-Ke6kuj+O6(Tosp*6qDj?SYSc+m6+ae&f|+6l;Ndg0$m7kPKBOY7yL#ZDF_$ z-VRr@lhl7#Pt>#Q!MYU@s2@Z9wfovQm0~U3W?(JKbBvA*|G$s@o7qQa(#S>fd21+Z zd%-V8Q8OH+**$pof_1yp(jyi8kasX%Qg5y6t!q&}itFO557fmfP4rclzP{SZ8hhfu zK011d9AvwXy1RXJ^*0|~p-$Yd+Gqu`Zsv*@DRU#%HZpnZ`B5K@phgx%E;Uu-RkTZ> zG94nvZ5yhNb}XSXA6z0y~C&{SB}($z_2`OGPtO>&w2?lezUL4OX8 z(?6@o-FruAM*k?i`6o&hcf}~3T)j!dSe1LuUmbw^*^h~p?c-H9DPFUe#;g7Ec;4-b z*Q?lgeOg8gxEHSz_|}ub2CX=0P}9UXRm&TxDi7)Ve5^Vwj+5fz)F?-sa{jkAm?v5d zMn~%9>~M|W7^{L_v6>YdqkqGqwbT%$OZy_#J~2{PVk7l@O{Dx;BY7Oan&f@fOscUS z`8`U%dPT{_y3WiU5z1OSLdo9Y%2tCsEpVcqHw)IUrGcuEpLbiX`YHN6x_%~grO2_` zl5eawr&3G3KSuTDk5w7FpSEoruNy5npS&>QMv#U$Spy7@kjF%7bUCARtZ0PxP)F%l ziQMu~fcyuu_VUC}-AnmtSM*qw;ysna!^Y^)5nuh?z!%NwBg=K(0lCF{ONGg+|JtZZ*}yhfUsu7T2X#$4RL`VcqfB}pYf?M2Ne5ge?Qxrw#c9$lqe<}wlYAzc zw8h_~tbRoccB8%>O4qO?;zrYSeLzs%}B48a6LY$F1q=JUU%VIOotN{IsA^neFMyzdc>I9;Ivfgmm@g zyqtNtrh2OU(^E9$bKIZq%l_m z^@Tb_$=d;{+Au)5dirbMrEx0zc&whS@s%HOB4TFWUz9x>F zw0w?9UG|yO`-Vv^Uzl|Nt4W_Sn-!A9tgD&KI`GXT@0TWpT{Efm5qw~qNkx_t8)lod z!(>v*1djJM=|>%tO6M}E)f1z}T{CLfZKG!2G^);hV#qVb@Z6|RAB-B4)ueu$H>!w9 z);uP~{ce(l@woA=89pXC=&x~AGt_LB%pBs%E`JE$)vtv?Xfgl|*%|o1~s| z;ETG+@>`HBk0Z&dF(X;UnkB2&k|bTsm!v6hN*r-!l?OgHB~dlViFO<|$V6;9y&z6q zj>l=$!FYXMXi(lPNh<#>S)=!*sKmrnt=^EL-NfMiH&PTj6digcNpr8I@UB#<*3V2; z#mZ@l-Iu0AerdW(ZZ@el@eTXEdyu4+E0a_$C`ozdC22rMgXRo~SDPBKs`n&H9)<{A z4G+^OYT?^iUk~aVs$HycH=Gxt)z2f9x;0W)Ge&6Jm{9#~4$-fm5H0eLR62T3`0QWv zW3;_|w8owzk7*dDQy)W=0S%V53Tu(uCdlV!kY3~r($KpBYJJ9Eg>(87Yk4Q9H}Rqi z^@WSUYPEc#>YfhONA5c?G+c|4!u765xJIrFqjp7IoqL;ELw!0pM8yjR>nnP!Ly;gY ze;%lhM}oAJe62M#`cJ%vR)xBG0`&9Vcg;hIU1>^2~*JN9W1DSp9p& zp!S0dinPaT-;+3beT|drC7M4|l1ki8Qumq3y4Wd29W$mphS*I$PW%|vmf$hwC)YGhb{mi;j&#ZtK>8igs zUHnf6?dk}=3Z$qlnyAS3Bo)n(q)!6SnYcdqb^-y^}#Pz?Tq9>KUs61PM*FvQr%ep_h2ot zP}6W_M(17GnXF9Fsmi`FN!k0wsmIhfEuR^yzsZqK&Wu)uk6g>T=0tO(GN0s~f=UrO zxP$c}>d|Fb?|)4Vavkr`<5Z+myjmy3E8zEdHJ(Y%N1Y+x z(-@7e8Kc0Z1y>bT}8Z&s(Hw$r0?XjwM|+z(4-z#ld^9%sopu0Tww7y*t=TVtXp-=TGYlYTVJ!f zjxj4S7F^oR+WUuDgI1WCN3&*ZG;2DaCoM3mt;?*}iDm_dne`;ltbF6mn(J%U$3u9-PmB3i#{`MrO$0<{mwRt??c$G-)~m4 zD`x%nj4^yPtL7`Sq7R$(F2Jlq>x?RvKV7fUQ649fRIg`}I;SU6*Gy2BQwcI;Ptuqh zNorm^Sqn<0Xt*g=_Wo&_v@}f-d(zN6)V~&{>FDe3Z@! zUA?cP$5y8+aAdk}zfDu^3u$`uCQZ%IaARMmsqmj^n%y-`=PRViuWFjEc1~0Gjz$H6 z*T%%zoy5L^#K70!y73*OjuQXIkYkO^%iI%trwwQR(@Yw+(xh#~-3vyODiQ0(`5uXR=Gbt4P+WaH&FE&+wQoBAmB2oLE8T1cYYazK`l}stxSTR{G z2PBbqCF)0MgNo0J(O__DJ(Q>m2U3)p1K&QCrj-X%b%Pp7!H5L?Q8Gc#vn43elAyGy z@p4{?S9qd9s~zNFY(Jm}-PAdzg7L}djcDqO%~K89a56#e6^Sa|KS>>4C27}@Bqf9< zYS-xmRa}`Mk&D*;l&I!M6BWjJqw6MWX=;M<&*XY)3|B80)Q%W^calM`b|z@a$3)F2 zm!vz#6165WQCTl1D%B@R*U`D2XqxcHDN4MPstYUAbfif-?**spS5c#Eb&R^yg6$}y z@=h_T`X2b@i%|h!epD|sO{z(=Hkfn=?Q-L-N&B;dFEBr?p;_PBn|Wv0Ob*Asa5L`| z@ZDHz1te&UM`tzz;wQrl{OUru6tO7^PDze9{zjm5cW*6u1xih%^ z0!~fG%sO(=tciQgN@w5XGiEivL(KSUR#+j6ZdbFgK4j6Xb{4hiVbRK77S-=<(U0yH zW$t28-VPRh>uk{=KG*7L(H%Y?s$)@k{Gkm#8&KECy9RJHdG=;wk`^;>^*orXv?O`u zP1g4v$;#G;{Qq>S9F}yoCjTiBM~-4QD#2#du4JQDjx}msKch;c4afF3s{LqcUmUAC z%cys5qnZX8^=cs3v^DBSE9zn7{C7uCGYB(kzQL%i0Y=sHG-^v<#=@~5^-TKJ)TEVt zOiCXMeiKak8;q~8o78uzN&n6>DTa9ans~d4c)OGMca&K706VO~4jpJ7&CELAgqYXV ztg(&JomI{1TiC41ugJ}~{!$Z@Y+sE!F@jjwE>+d5r6?{bRYOmvsZXCYRjZb&-VIY! zk2>AZf09%sGx08Wih80MFO(%G`!ijGU#9DG8Ka8sO4B>)ffswH>l*y9jpy9nC0*}6 zr)pYlVJ_9FVN~ z)K0b!Ptm?dDXKLgRSol{>Ga=l*RFIG?~R?{mu7d#4>Ozej{LQ4X_M~K!m5Dp`tW-X zlQNN~)<%~PK4enBQSk#EmHB0inBHwFSG_SrzaV;#$ z+R37Sx>|HX7IkfFQEPCVKER^70TwMxv1sv3i>9oy=RFijKh1jdGwl_8XN-?(>t}Cy2R9rp9F=_o$KsZh$L(dxPz$3lw{ARIazo?<1r7 zeKzVI`)p6~7kJ$71^Iq9a{m%0%`awBNBSsViR;OED#7XN7n$^CnMpm@kz0`;b%xht zPhguXCat|^Qo%RW6SA6hupF@sjDP6E9FIU#`kPfE)T{{jr%9MuQ^yetN5LoFW<4Eg z)^*M)+uy8>Tr)YBSr3CvI@Xo^s35Td9kphWQ8(roH5s2CjvwEF6WbBP&L2$IzZcT= zzPM4_IJRxKQOm&So_~z$%rn+IZB*amMzx}@_wbZa=N=oCei8mW51)D&^(UNhuaQxP zRHF{grarir8p=&A_AJq4=)68$r zIJ53r&FV3mxnBaGtODa}ImUJt-}^2w%Zu%)O~e3jzYy(F;uD--%%ZkndQTgR=5(}Z zBwU=`!=gUE7JUr`)2ZO!4M)!g&r2+Ny}_bP2Q2D-%A(_EEi#?4D9>^5e8Qq%=h*kR zMIE17RQQ)gp@ppax2#o5Dq6LHHoA&c)9P6Duo3%ceSfoROLeQF%Ucyt!m920tg7?T zqTerB^lqI+4W?Ms?!H-BhM^_qq^ruJG&NbBs%5=WRW~kGo6+N$Jkk{QG+mxIjVfEq zq*Cxh-k~OK9zwkfyY1>t-rd2Z#lM@h`#19KdL|VoZq5VKHSv@0)W$-)n6!^`&w0Vy z@cNWElUg`TDm;tY*<7%{knc-O8ut=TBEAk`yY+=hOWtFb3}$W41AoBb{qWbvjm$a? z2R$9jTpP%5jAm^?OWwgQ1LvF7j^+&qt(*?`%rYxw9 ztdcV8kDn%a<%ZYjKZ1Mpy@Ow@qz2()oC}CI;H3UXlbj{doaAfY^O;rgG8$~RNdtF+ z9dtoO+S!fN8FrX-ag|Ad^G)i87Q5?>9veYE=ZimwfjOS{JG%MoCu-!}uT2A>$gH#B%wchp+W(-2{*iSi?2&=GdjdLf1AKl5 zZn>BTz0!hO5v$Hs zvT8*=t4cPvs(%YBH7ToFHnHkEm>$CRRV%BC^|h+<7%T57Sk)lXs=aLU7_16Pv+~Y? zm7Ioa?N&vYt+E@fdYWWa<|wOj1X$J7!>aw=t?Jd&ssr?Oa*IVF=%WPi)H4)3Rxs*0 z>m3`Zr&gk_>Q|LK6dqX*e^kJh4?;}x!yY}bae2-!9Ehz)qb=~GQuu`im{fwcrLRf< z3D5`@f9sI zr=wZR$*nSaqBSR&wJZf&g7J#P+MRHY_a5@BLuTzbZdUu#X01I(K6cft@%Z;&uhETP z%xZAa}tVW4$rQ zENc()N#bPD3&hCV@H%{62fcUXok?BUZb>!EZ#~b(Gwr^|_<8Q#^!Xjlk-NG@#TuXo zxL>ti7A+ZS(N8b1O?%JhYJ)BEAB3);dGfv4NVaH@)G$6zfUDv1gJ_h3%`Ga@*rFCK zEZE7SeG}0v(=7S|pD#aRQLD=qJ$ztM&d(OPvs$$g?jBvvs)co}%Gw4z_O`0Fr&X!r ztoj;mRd%p^+yt)E+0x#nfNxqTZ6*7c&9Lh3604SOw5rE;tB&on%J(Rof6l5VH>@gh z&#JbMt%`qcmB&k~%+L7#(5jiYt-5&uKig|nnPpb3ooS_>Z)I)Os=7I>{H>Kmx3Xh1 z^k3l$)L7w_W9XcKp73ETwN-d=;Z*8TlZd5G_!%DWX+fh9SDQrQ5BS9*{A29|>bXJq z0sirX>+;M%U%rM5iLsCJnDvr4I~-nnUz}}e^m+xe>JBmM;~;8P1K>dPN*-{u)Qh~w z4=w^%UlPEK*{sDg%qqQt*b3%HVEB_jR#h; zXmBQr>cD}4&&>+Gg+@5an6~1Rj3o-5oDU|Og0VI5;Q{!t9R62{?>qRM4eZ{**A8d1 zXm}}$1~dc<-M|Us^5DJ)OlX41=zzr*8Hvvc@KTHI7L8}?T8kF`%c2P@EehJin08wf zfhNd_HdxEKe{gK|9DF4dT$ivYa2qzn2Wt^uN;QM)>%h&~E&7vZ`e?N%k$yU$m7DLi zsMkS@Dxo)KU1YxgW(>54*DT6+3qPT)ziv@++Hm%lpl!TiQ5475UZ5|u%C}|A*>rS; zopHG>vM#h}!+wj(-Lt6kSFVHC+Z6`C=#$oPx_=L=N{q0oT%c9AcLH`K3}w|8~c1t;48=B^pjS#zXFyYST*4z{GHXNLWOMFRobRs zRcyLm*QO=SY+BvUrj|Wyy3*ICsRL~4I>^S~?b@_bHhI^w>8~s{^~X=j(r>l(R{kEx zs@%ketMEegShI3=gj2L&HRMsm{O!}pEvFD` z?dSu1qBS&os&crUcB_-s{pt3J9A&K%m&q9=W+55QFq z;i2g%;AoabMK@TKA1*3D?5%diqNUg|;wIPKwZp4H@B!NK2@leMcoQw-;D4j;}}waT0{wI5X|3<+HfD|M6|Z(9OD^{|4r=! zwug}O(N8#jc;!D|Gn1eF3HCNxQ~^Af<=(%((N}J(-js$9D_a#<)2dyx*R`xVgT8Im z2pbW%yL7SYS68bVgQ*&|;X`!pl1gBwomGC`oO6dHe`==Ik;V;-x58SfDKI5z-3=U%noSQ9#>@>HuFV7=f8uD@kf>^rMk zF0Ut>L+_B6KXTT^h%b_!U1QPC#9vNk<0W1}{1Q(Z9b3%=vPc8lRQH6P1$ zK{hGMrrL=%y|UY6m~KcSEgeZX(}?uS&pOt%;x6eo}8OgGMT5)=lDht=4Gi7iikE#0m6pKHEpAbY|8i9sMKz9oO%rYbbSE-nTfsmESgpv%z?2+U@V}iMc3ibSH2d#h_>h@V=h0D$3_Funt8#47h1C*vA6;@`_K0O@_Awd ztKOG|o8D7jgLj)wr7n?XQAq>w0N<+X1c<;&<{=d|)=5>BI-%(VXlH_#3U9$EGxJlDnEs(cotzmI7}gVyp7AO{N{?^Zj}7 z_cZv@NFR)IINGJV@Y81W(bB53eXY9TZ>4TvRd2>TkufiUR}j5hg$>3>^- zS1?%K8!iUFpCfF_6mQd+WSjD**|gn&Uw~<^Fg}O#ERi<7jI$}sW>dboHh#~-rfe&0 zDhkG{?y_m?5u2J_un}|dnb-9D!=?@S>>63x&hH7?wXnKfJ82Co+4ZP|T~(gh6wbAC zxmN%_^kt+?2}5i;(7`4v{&xH|ys*})Ht@q6xaS1EUL6h@y##JV|1GU)(We7&G~80B zELer-FPx<2zL&fbpD4SDd<+f$cPL!_pLRhv4_U){1z3N3(yV69WZCM@sv?8YWw#e5L{J@;SAwT2GvUZp#Co(q%k%%|$gW^E1-yQL z5B7hcQ!|5`EHn<{3v z$?=7H%M*MPznOy1d;s6ir!WTi{o5RPW+lFH0B*-0f82#*IQJ8{&ja5U<9^wrZCWwS zCfibcbFEEBH^akVI42m6W8AJQjO(IJm(Q^8v`t0M!S(0i^uKL#{=+l9f!jaYbn1&u zZ!_7|Ew5cCOWL&>e9v!gSF6r;z8ufR$8t$Ho|5(bh53GM2Wl;wB zv;o{XeyBxP=`SaEKL)pVh1)w%wrB@h^ZI6ZcnkO4h$aD3C2!IPc=solYSIA=_pxfh zaBw;v{D7%PU_2@voKIr@!SuLgR$1`r9vi8Z?SNOYktZ?l)^T`=XMB0jsz2VqX`hMP z=*xF-WF6w-y0hd;@LmUR`fdeRSE3e?6HI<5-y^<+qM=USrrv=D*vsdO%+0VD#EoYb zWqZvSGh4NuIrDGMJqB~XD7bwFF=vBSRSw~I=d7}EpXcCw>QA(9J{#}a*i^5kO&=S; z;Vo<`(AlPUU?(#ib*mrRmhYZ$RWmp=^F(Yl$)=gRZJPYTrW5enXxZgG!LBn7yF6yv zwaISR1-@_XVpm8xyBdHWAFx$y6ZZjw)7GO0R^by1Y#QzcU#T{k3^v^d2YX zN}jawds;TtU<}*7@?070I*`MzS_SP2hp#JDwkrob{g%&j%i5Kl@0r2r5AdB_*RGAt z?E2cquJjIe-R^1EjG=ZF8PE4vySkh0a!#|W&|h}l*=bkp^L9P|Xjjkj4wdWW;N2&O zwvBM;b0deAy|wGtKD#c?w`()k1qIu+x4T_6x#tY#aUOojqL=1%LW5PXX>SIb8eWBO z))PC4ZzVfh^&%U&IGosT7V8l3^82!xVjqD}dnvpyo+{J?V_C**2x+SZx zm0XtE0eHH#lo$`DI_x4|!=X#Tb^^F=aSQDLmYc$td*2hA!S*=p)gmWcgY7yMflDgd zw52f^>IxPHgQrn8jigQRf-n2QKb6764Xd0h(A&g|zF}6K9%t1-_}kz^Jp*32?`74{ zk<=DE;J{&4{RY3!8D-UBwC`@NS&t8XT4zsRf-MxdSd z?Ct!m3EPKuU44g*-@uP|*>@ByEwk%jJpKSrHZNt@n(TJgr|gyXdFEflifQ;N z&oG!VFWe8m(%*4#oxKUzZfjRgFkHGT;~8L=eUx2Z0d@@zfwL#twUX^`w2`5973X^! zw*E18El%RI(XN>;y8`EMEzfgvo1MQqdz?9@l>O6g@+)&h2|B^E8<8B>DMO1+s6 z{5hdG--*iy=UUYaKD$yHjqnORbP>(66CM5+>(1c!&3d?z-0lb1y_(yqQ)SS&ocj~} zR(wir;S4$$eD^DkF2#@XW+KLLtXKi7Iv2Dm9j!1h4?3WvRm zdFNA0gFpK}=6vwHhDh+360n6Li zc7BDH!N;Dyv1$=g1b6OI9d20c~)6pl3Y&r=a zXFg!l($na8=6>p3o8~;TDdaV|A^1yuf@a`zHZa-_A0c)l2% z3XV#0Y-UUP^04!FxQr3}PP3!Sop3s1{=UGj$s6tDfM^+fw9jEXIjdc7_Hf^wcK%KT zKiO{ASoV2>^9!f!`h3-{!;jH+pW*JTJX=wRu2gsM+oujq>BKYpITX9up|osH8K*k5 z^%DNJ&aT!w9D4lBq4Wg~J@jyB74tKul0%U{?P_`3uH9R>Pa4{&J-(8|u3Pwf7<@&WJ8^DJv_^Tjc%D^v5;zvZ`LSpWG>e1y@;TVb@6(Wfz@JyyR}p=@e=Rx5G5iSZ zl>%4)ac39seB9T@Z`{E*6TxhxO*0y#1Mb+f6oQblYU+x;^lBpC#ypb!bZNy&Qa3xlUXK-#yR*55aZ^ z?o*kZEoT|xI`?k_#@-U^d$zL6&<1?9gAY5~`5O!NgV7^@pnVU4J+S`do?W@&uxwx9 zuEGvQ{N~Wdt_}r^#_s+Ol?Mw~eH}XI4JY;kEBHfUFf$npnZZ}b&0G)GVowkc&e%1H z?J;oH3oO=W8_az?_Mr`S*wuBdT^8`#e}d)U8XKJ15fZFiP>9a>{KpFRH58t9Bg->sUS(WWEdv`}H23Ks-> zAMg`&$?b(!HJtVTe6tn2SR@-bg)g&k{QM_$3mT;+d^#H*t(1ZI3GW^(3P;wW4|upC z8o}Rg)7j;4C>%ZIEXS^*8Q{$FG>>aGRlkA81l!Hw%p31){0$mfE}LD&i1W|D*k_*Y zDlvEvv937JS~Y~{jmMUW*xW!H2UiRP1D%++Ms}UTH(Gy03*15@lPlfACmwUpg!|}N z`Y)ORo99GJ6yzS9o248!u4Y%o>UL$Q0Lhq4Ww0_4MvvQ)d{Q)xPX1$*wwC>L$8}-zitj4>+6tvm_rr7dd(CE zbBi69JG5{U`?fd~zY*=b*uneP4%J@h(1S#%+spfupzr4&L2% z$jEtH%Q*Be$Lhe()i{4Y=bvul(DaTD(St zIy=;-w?mHxJ5<0E-@vc^Cph#y-l4%@J^LJoIxcc3b-hEk4uj=a4r(V(O`PtOX}wcJ z&^#Y6+I9Q~&;7)y?30~J&gIm!Z4SjeVT}JcG~DLkT~>!izX$W1?8=yG*C=A*%CW>P ze|Rwh`zG@}8k_dB>jbvG29IqeU#<<;twTcuPO@nv-K_^Meh0(gxDdGN)Eay=1H0^hOk3R)jCa6y8E=>;y3iZ^`PunB4s_!T{T#%rXW}iVqc?`aKigaNb=o*1MNO-s9nJ6S&0Yy|8)Nt>EOKLr1UT4{seR zNX-9{pSWMrsq~6YEh^^J^e@Eu3{EBdBo^Fu@UE3Z74eg{7KaAGgYj%P^SuUsQg($y zR{C8{zcyO%T8A<&b?CyM4t4nh49y0^U~ct1vd@{uhla*F)Y5<- zz^yy+$tB$5Gxx~u#E+&pRDwQg!pldNFz!|O(`K-}&!H@g>m2#!oa9g& z{C4XcW)0`jJD8Kl7RAzSYsG#$f-}Wv6z1aOfRz$#WL- zn1B!caB9G7r|Nq<)h?4$ub3OJd`{)uMJ&O$dgXN}C-JEmvFhwzY6aNFa-7%;Hu_?V z64<8FZM%Hd5NqMd!2Z}C%x!CcO~GF>cpKi4oW2d*1#cFqYL^Pxb^k5edhh@Bz_#f& z?M4qwB#vx^U(dBdbJgZrV$H(uHnq$C|2n{<=8PMj9MhY+EnHm87aYWcUHI@ASi8Lk z&AS^6@%cSi`!5!+Cf;6xKQGb}rrVXc1U!Rr`!QnpDR9VheL7%Q@2j+Lc14$VXm4W& zzl(wYw{Ylfarp3uT}=zZTUF2waLrome&i%PbOp|0o|<8o#~}{2_i-o}ytOL;tw|j1 z?%~iA@wpy)yBhq<^=IJ7k#OMAQVxCM^E&oT=h%)KY&oz0@9-VhjP8pj^@9KC@B1it zbcjRWhQUwVe?u_b3U;Dbf=Bpm(sgj~h4B=3YG@^=npJnIZZojm+o^BF`)d(SHB5FY zWR6pNb~)8ywNv}~zA?zDrQ@9Z#1t)(~2o7pEHKL_ck^P)%In=4J{!WcU zBRuE?PH6MnIu+iW;|-j8Q_rd8oIkXxQ^hMdSzmBckKmfDPIU!;3tpo&p5iZ$@gv&5 zk9e+!V48OO1-y=b-T{+aKRI-kXYl>$(7lXKMc}hOU^gHA%zML}(#J8bU2)H$J@oV9 z8}ki+uj2fjoIfeIQ@x8a-qKDzuf{b^otn&Z;#9>^PLxvC*YY4&DoJD111& z3tL?xPBzTtP_4)C)>*sOowRGwCA8?@_yX9<&AugYXH)R!k%%@0ztifVH>-f%7Iyje zw5u>}(tY^x7Bz=6@F;wE5S}cy+O8?(haU$PT|=AdZ%XSF65)C()FB zH#s!x5BQn>{3bJhv?=&YshJ$ZkA7Q-u2@3chsVaR<^DT}=ljvLr_cwN9Lj``&BhjQ z;KH_t>FcaRMIWFSu=%jEPCaVul!iIg+zwV&I{8}yr>-t`s`EOhS{!mJ;{~S{Tz9G< z_CH$KrEeWws@}+@qu;syhEs;qPMzH2RMss{`QsaLC&9pbr*;%~sZkS`zO-fJ1ZE@EqW;~(-?%_lKz|U_SGQf=kv7oKR=ZgZ;MLZ^B#=P__?#nDc^#m@Wd zICY|+Q}LOcssUax+sm1vhZ188+V~ zml_Ok@wwcX;LBs8_)GKTw1%wrBSb48vos;Vs~8X zx80@gQ(ejx=hDp4^n)KQ;hIqVl^-GIx_{LHNYo|R%@n6jJBTln z@rl_^Ip;c+nf3Zsg;KL1xaUFP$-cJ2B#7XUudGE)V zIy0Bps0!x{!KS0KU<-U_CUI@yb8rKGT3m;3Pm|BDf>*(Cg`p08=tRx6heOu`9m-=P zAH#Phr=Yq1!$Lu)%4CC+KB6byk%MJsUJDaj%Q@8#3`SOUYEXSAzw-|kn=?1RIa%*> zY7NIqf}_}c%sXQ+y>O@}xP3!kCE-f(40+&^25?PKC#UYTg0tZhb8Dw2@N8SVIF$+9 z)}%E7W8NdM3-fg?j?c{h!7WY|gEQm5I2E1WrI%%0+FZt^(s^83`N^q&?>coK4k@{v z{=j7*_WGFS)WcNbsTC|w0@H5zhi&Xsr}AURJ5J`3edYO{k9$;}gPvf!_)n)&!Ng5C z>^bMO;+lSZPQmXo9btToq9BGcAdkPb6iSX=F+XLEp-`zOm*wdJhvLe zy0xdLo4*ftYs(Lpe%x}&cejiG`{Gj3NiOX)xKwMRi@y~GUn983K&e}TnU z#GPko9Pm8y5p(q4mhY8bI^_$$zhnM$;@64v)dGL4MnBcCOBr~fMuJOqH{-XAcfW^A zi{O|+htbzj#NgU4HB519=mfV?7Q57hnCB|uQbugt@GTtnff)1-%ya(|%y&`lH=TQ} zWZ!DWapD}YW)JpV4u8!ehGD1W*nA;8SlA!Dd1E&Zat!d5T*RqoFUf%(q9vYiZ!nqy zUVnn$jWxjl_}#h!Y+(C4;GvTlZm>Ib8B8>we=FRuj`nynetFob?qIFX0gkOipMsfH zHYa}vK#hxSZ!mW>3ali+JK(S#{Z>0fTn9Hxn7e0S)&C*)eGmSb_is5|a^`d?lDQj? zZN|`QFbB)AOIz&bUB{)y9bFne7#qQVf1(*Pk8`P#k4wkk-L7q2+EN$WR&XhAG3F85 zouI$PS-}E*7sMWo_&$dIAJe{OV&1t&7w&N!3~a*26EnNinPWAu;be|q&W?X&;2OqI zp5vdmzETO7uEN(Zo4d5Ur%SiN-LGZbJH;h~r&}@W-5Qq6wwPP-Mcn+RvReawcWX*3 zx4w6E>+xu}I!CzGZvsAW5#QWEoB-op!T7W(Zsj}b*2rsajk@Pn^CFY@jj~BP@xv|8 z<8JxRa_elATmRx4RqMMoyRcgoe!27x{qXtC?YZUm}DH)$%k=LzQxS{u6e0w?1IM1cl zQy3q99|{)6anINFTzXc{r4ogCZtV92-+XkNSagkgD?YN4dlra;*T#YAL~2do)pH#_ z2A9PjgWq<;tsBv?zhjq%#NJ9S{VYjdQre}t;OcK;cn$15W+-C|h9B%M%_1J}x4QI+ zIr8D03*hA-__>#t=j7T|W$@*iE}594EdB6lFgq;)`|x~=xz@DErB}OX%uD)BmnvR& zsl{1z;C`NU8}qsb8?ENqu;(8;@sC4r+(DNn?{mq{_obV#<67)TKS9h#SCdN@lU<4c zi`&y&YD;tSxe)ut#WQzN*ddg0G5$ZtyHptaCVDc*Bf$`M_X=bjLG+L9Pczoq0WSWI z#iie9TP83Ek?0u4za^FN@C*wX+l&h?6@Q2psqE6G7u=)RBz-PCNk8VmXJER}OgF!$ z@5V>K_d2&~9dz@X6>cqmB$bSxq$JBEEi_J2 zh0&8VyZ$5%%{EDakKJ0m+pRc!!5;6{JbdmVeihx^%{!FD2z;)3cKZ8;Uw&~Z5Nyo_ zd%N#4pO<*{llbXjo{u@Kyd59jfX$f0$;`DGoEn+m=d`wqH1h7`Fl&taNG8BIacl^Ew;OnaO^(Vf0bp8}=#hR{P9uO(niHf^Xd9 ziW@wrdwIdX>s;zPW|FFZaqBPqyYEo9&Yf^;M9E1iP;`<)-?;T^tDE0}bL+tfw;K0w zYhy#6v5;G4{Anck8OQUyz#bml|3wmb#Ks4(p}~uB_Q8&|(T~|&%AeV#6<~X4TX5O~ zJ_VNM_p6C+wZ*<$;JV*7xwYBp z)*SYi;`#Q13^p$AR_OxVFOOTv*_hiOjQgWY zR$8I2*n&C#^%oom!#=r6mcK?s0vkZ&s>!P?~BNi66 zB8puIih;s5u)DFa6)bEJ887HBJtjeoG+?KuU|G%9@yk3@#6X>n>>uL$?~Z- z2^fiu{A~QUnT`J`ut_!i(zuyTnl`pcbuV%$#+#8}Ew5&i(fFj8Gvf!F!_e7@`1n>O zcw5mXYkA!Y8-D<=AF|r`-R#8@@*3OTUo2j?;Q1r89d1Q3_Ki+9S%n`;vEL8uo&J^B z%=R8Xyee*!9bIhF9Dkl@$iBsF;y-wiTpUF|p;08iD?@HS4ILk&NCE6tzJ?;V-LVbx z4UAFb)HH0>T9K6%6nT=)*q)Iuq929e!vo@_1%_tAm*^JEwI=vt%p({_b*}FU{>p*F zsB3Wg0G!@Hyn-Xs(b2~EekHztm4v1rCFcO=3)rvK1e>fFWFy{T*S0oU7-f?$r{Ugx zV)9FHm`#yobrq@GSCRHJ(Ir!nL+Dj9{7rUIr1~qH6gY3=H^ppHhjE^Ki2dK=pER3v z{z9FD-~5<|o=K5DITbj}G2mim37&(KX}nkFD_Zu1IDgJ2?f2NkT+8uGY|;#V44VP> zgKV;Hv`vEW^@1VTd?>!ez8;Kw?qHk5`NN6+g zz@_W8Y?8kY7-D-?kG$O5CUe-=z8SV(dp@LL+#sjDJCMl1X$7Meauk()CVnI5W0p(ToJIEbcS zQN;JSP1@|TNxoiSewxbfNvra?jVirrsxmIODi>cX)NhK+g$I!f6zS4m;kyCE88=0| zu-(+(HtCMN23$iMPr$+5Hp#rrCh=^^J8V*9i%s@#waF-6-`I;7A+oS>huF00}#Tb}Jt)|!lpU?KdcHp5P`+Z=ZD*Q^oA1|?21U6lVj)nOsa=f!5 zc?T&{Wv(JEwki^fKW4s#qxn>Rn_ZRD#Z)Qv6|Fk1h%8rR#w@n!iZl&Yqz-;>6bKFm zD{`50EEuXtKC~>2_w1%B5+0&RF#Fa98}+9!Z+}G&c2s0rW8!}$MQRWSFXm9>OBy-E zJsY}>Kj20v97{jO+%6F}FJo^oSeN(bpJwif*glqh@%5(lHYv?~K7xaM>umBi#wKG| z+4wFO^X0u5a4|dMvz<2aJV4CBmc`<2vXkQ-!BP%5*p96U&kO9MzU7)e*!(KjzqABC zEwpj(418p6y`CxZ9sIT^txEOPiacDZkdrHND)%(-efs8S*gd&3v+ZP-&oE3j8z?6{&0wyUSe z9Bh?JY*>+3k)gR18RV$Q!s5gnw54%rMc#m!U1iW6YKqQ0pUGoIULWJLvphPGYn0`< zmw({O8=E|S0XA;iBpjR8#GYNi@yHeE#B!Syg|Ej?+2rdDn^Zo_>!UVli_LyxvuW7T z6&v2-^Sqox{e~t#x3LxpH=@biVirp+J9e|XZ2w?4);&2 zw8LH0KevPbF9Vq0rw`<>r5?yjiYFy+x|zX|KxPysDi1q{!~)9CwLx9RSg@)NdJ z_`7mtMWWeuv$dO#B$y*UIe}3y-DEmCH{Hk z$r$m2&r_R(C7@BtVu__s)11Cb*6WM-eJN^$F2rq5o5(=47#&;QUFA1sRf!6L2k40} zHXHF94SfywQ}8)BOghRuz=$1liDquT!xbsgT9K2r7zbndV6Vt_wkZX9A1u76L>#HY zm>8SoiWafi^E}RjG5aZU2YvQI+uvcUg&~S;2KR%pZ&t45{D@;-fc>vr_r1b;B6j;o z94eto4o#I4uT=3WpmDzspT$gA&2Sr$8{)2fGXbOY`Ajdwhz{IFd)SqMrOfjpe>>v2?|530@la z$ZB$Hqbd(-t1_mgDvo1Reh)&GgOMt~-vqu5RSNG@rPd+*x>psoye1oKXnfCGldo@y z2^UrIKCH^@ZK|Xa559$|l0Z!G?W;dtPl&Ux(T;b-Q*3xJmnz{-Xcati;v8r2!F_nOi)|J*zlE>9p=&PKdKh+Xw?*N* zCLFhr*ggY{PvCsx$uw5xd zuEK%xEWvs@3l3~+X*fap_!rf&2R&gq0;;tnx`F)zhFnYM#ra+9AY6bb#KNCW14gMD6tmA+u(6Z35K2Hw9Q z?@LysDE9dbrw-uvyVx`z7z<3MR`^Q|fu8gxAFH~8`k1=#FPIvoBe(;-^W~a)J0;<$SyNi_NSh(-nOcfswVy!9;>|KX%u}2=>J0Arm;MbnX?1$bi#*g1xsM5VA9D@(5 znRm-iiVOhTk29&##u-iNqspq;9NQkgY#^^Zj^CJL0JiClK3*t<7Gt+kXPGB@cWwmx zFz@qu(KTOmU@CDJjcG;Q^_bc&;uZSkt;vVy=>JJgoJ8aIuNcc0Y+X{5D0fX}w9({O zA22^klVzcr{9Ua{@)nKn@@V`Qq$Vf)H7V6glP;|_nZ^EfN@;Qud*#D^2d^=vcyPH& zm3fQs%@p_^K)f8FN<=SkJ4lsc8C0= zdEPBumG3{mz&m2`T~+cXlGDP6b(|vz?Rv^NEA;+XkM!~dBMnq}0#IlU~HS!!5|E7;`kWP73wKZS?izPViq*mptK`Jh#`R89C84 zS4~=aYLePPlh@rf$v#?>(X%x1pQ}knxDvqjjpud2LY4`d=xE`q9-1_5r^&?TnjCGU z@jH{6Xtgw%Nsi#e`9^>xtqAALr^#Bb^W8y{s=v`$uvP|p)Y*$IHjqPskvQi2x05PW z@KafQb^-r{ftB_Dfupmk6vh8TuQT6*_`U#KD-2h_e{1|Vw+pcipFYh-OdzLl@Fqrd zB)4wQBRN6%ChCjL)E3*RCA$zmi7(Nw!Bj0>%2m*1=?Qo+Sd-wc8o1QNYo;dGE&LeE z<1tOnKGfvT2Tl4v(&XMzO*|9PjyO#YY{o8zCNXn(e~2ay&A>oajsJ7PM$EJC9W(_@ zhaOU8KfYgp1_a={7jPr(IKE9myTG$gR!v@(fIsy#`ruq|kS3kbDFYu28;0iiY4mZh zU1#3o8d2DH3OQJJ`0?;1`oVRwVw<P&B;JCZ_u!=fTNrUe#g;3;&H8Eo zYL*F*)R_G2^MM@bts=MFSQDWS|2>ZNuhaC8satDRB#&x?UZbxQ zH_{tEL*HOEoNb5>n3{~=p-Jh5n(Rg+k^{m1a82%Z(YOzR&)~%nH1zN{^cCGKb&mWa ziG2Db@shFo^Jqs5y$7GF--0jbYZ~0o^b`I6gza9b;&GMU!xL39$EtEiL!;ry(lO+U zf$*C7v;;GEbC8>$d8?mO8xj|%lS>syvq>y{FlTD%;rO6XKV5!!>+*iSCJBtO^dj(# z#ueO;-d)h-(j86ueL?eogW+_I|8gU~eMcw1YLYiqlZM2Qv6nU3bwZPh;6&rtj^q=4 zR80aE@&k18Bm6lSj5dzZ+%zP3{(iTRaDr%unxytgXS@ECsErbrAJ-vs9W z5aWxHBL@`W+!Npz+R%f1%Fc;;h&d*V)unt{UHorp(%=yIJ)_B++nRiOugT(^x_B1U zWqTc+oKBZZ&bnAmx>PHw%W!*L_F{|EH^Jr+O~Te_avqIv0JFE@(P+kevzR7*b7-=J z7`hs)9%nA`X!s)DJIiOYJ$WDf2mtF3Be?EbP3E3vo+;E9jG^Eqbmg2T58zz!gW!F) zCU=%<@?(Z3n@4KWx}PQ~T&p(cc;*8qu-zN)CN-@l$% zOHSoOKGhammfk?DLi?LxzY1uC_XF~4#{BFsdU8yY@;vw70mc?ob zrwa3T21AT{WLZrb6E|-1=m5v}H`ZjIFIa1V-@P<>gtjcoOTL+v+%p+pqAS7c;d&(T zZ6WgwhP!Ct*;n-FmXQ0S172z5H0WyyYNU#a*@J6*0f)#V%-`UQ-9$)Zcb z4}A2EnD>dfzF{u-us{C1c>w-z(&XJr=7SB+P9~Q0&?H+k>;O)F7DXd6YhuCc5y#mQ z@!Li8J`Y^$rO7-v<;JlmLb26EO*|@V|JR&>p5%Jqxpz-he)7CsL3;A!PM;o9H^7O- z=vw=_suXWTJr;v4(4EV13-~z} z|4nAD9$++p_Zs+P@9D%_<}@lE-rUe+61Ll098NVRCh@OKjd)CC93F1E6vij^d{!!l zE={nj19lAsSAF(sQVveM*h!pPhvr6UvSAMKmspe+Ui@fIyl$$=zy_K$;qk9K^-g(S zXV+u_aVPyYIR^H&LrdFjrXB>x&xsF?*ew9N)ow-Yz`9o_@b5(Kc$K{KA~{kaxKYuK zyq{cSMrm@73gmt0c-Ry4032;8q_h5~(-%QI%77l)pNya*jBnb(jiag3|EE(5^8 zqKUc`U80Nk9$l&*)n(8rT|OVvW-o4@2i&NYkf7TR)*Za8n(_1cAx6p`>M;=UOL}>)MZ`-<6WW4BcakgqJj-^7GH z^U$(ze67H7#$FXI-}(#1@ZRX%aFB z?LbR=I%{&qo;>&qIDbqnfvvnw5m%R>3qy#p5>B;>|(6#h_|kX z$tB~68(?%T9R7iJ^xuWP^H?36?7~h{4q!iC=Rhkegc48jds%p#tss2(sLJ(w{)_)OMGTqdVu*hYLzD`J)ZzK@YKFwR8IqUR9UKg4^h=kXw{_{Cr1P6!x-17T z>(SEibzBoaI?mH&jz75aC0B6QrE_`m4E*E z>0kXq3#w=`ye^zWLvC%>B!cUe`=d!CbY~*mo>b6~W?=3*m{YIlawwA_OPmZzs%^-X zPS|0XAx{Gh)`ksn9?AT>8*&I+^vz~SINaF7Ifg~+vL;BEX`OVjtD#HPbaJPMa26hH zX0Erdp;ut@#0&7530z={`e1p{3|+FvfQfxz{<VRWeTaLZN;F#1l)Ry3D|A`VicZ`|>B7C1>$#7LxH|kK zIt%WK9iWDTFOi+;#l?dEaC-FAJeR(p&&_nHgrBCPqh-O>7PPVvIGi;J9mPh2(Z>0u zsJj?z>tAq&*tef85xe<(Li50gO01|1m!1(*l9_`JM_Mjo9`JXMFMTG)y(km8!CP{< zGvq)^sVQ2hGN~lb$!$|N=#m*(glC7G07QVo0bipU4$nb=GB59X=}xKG4Ya&%rx$O9L12w~24?J|jO|relLd zVgf#Nbk_M_6P@2q#eR%6c$*VS=4DrMVdEi@v9@w~z!FK@-Sx^_-yBhL_ zv9-yEuQJ2SRATde=7R40$2m@7haQ$LEwS@wVsNN0=dG)Y#&wJ2)1`7YY@epdQ}|dK z9;{wXoli{i8A5J=mTn=R*bOe$p{Mh}@4(meB*+t2ouIz^ie{Er#DAFc9n4AGpG8mQ zZcggL>Y8+Op%0u+jW(D5%QJE!>fzd)qk9hG6!WdK8g4#V!9 zOey}KAv?kKa2qzq?+xDIJ7WBw4cL2^A@{Zza(9&>KQ@7R&5*QULt;i4lF}Z&v@)bK zzUt^{NNROMoC+9{^W#4~Ykin{ViWog_ZNidvZ5z(-dh(hS7HY9i*?cE0&_kGPI{ml z9j=l4+@&terOVh>x{REFuA1Z&aO$(2DK~nXQay_)BUYosa4=vzJcJh({0no^WlCY} zG@JexxzL#>^ak2fzjxN9%z1Kp<`j1X`xCRKqS<%BT%E~=T-FVlkF6Sm`2un1{RKm= zrh>u3rc|hE%JJqVeKAu~%A2zBv%z;&4DK5;Bo{U~1Q(CgG9(-P*##z#?gsa8by~14 z6{a%J={)E0;uP{==D&ftTsZ_b-s%zwcbb9s7T7WK3`6FsoM(w4rP*rXhbs#WsW{J& zZD>%(AVa#b-(TiBtr`1OG2~Za_yTusy#V7E$-~gtlJKAh*IwzbODE>t)r;H;`wk~B zD~twQCjUIL6J14T0>M$m0q~#+wOLK-1oELf;CE(G>W~g-ZgKF6es$!&;|=-vUNZOK z2Gdi^*gt_|XR}X84S4m8J{NJfW-4oqS5^5#&e9d$dCt~lDA-?B(2&){N;^34;i@hv z#DmIUu_JLTn0>m#g)c)GXD@0gd_KsBx{Gl)0UJ?;(Kp8Jb{VbQ!!vYrTZ$UGv`Hf0ngh<@XzSnP zjgJhecghew){xwv3>mo5kQ4MD23&+=gE;QKAx*ENi)!Mw+{n#{19cms>0MaYAV&=9fu4LpgGY0poEP6S z%*}n+^gRcVe=OlV9W8q1*f<8>Ox{Z$W&|}beF!^p5l_zh3(noRPi+MjR%GCT9Ha?& zTk=@v_Zf*{hje+nO_zL2srMI?JA;D(U}7BC-O-Y|s6P29Sg1tp=t8ZK7Ek|BC2t)E zPsx8=-KixjYutMXKYp@KSd7oeq1$?(mphcCL`famrD4C!U++~=*y_9C2r zB=s!%Kkk_!o4;Bh}DZdOkn~vRo8&WKdyockq zT{XnzxFIEXgTGbyZ$7!f81e!9`=pT}k1G<_ix~WO26;AI=nenJB$4wTBcDwq#>AtA zTdC(Fcs_zhG$5cqencAz-=Ge+Go%Pw=d{$2@%v19G}DsmEiFmRWJ&ukrr1hb^7ObV zRR)?;mhqfMhjZ6rj;HCnkwZ>gqDwSd+5{Z!X52p+e>}RLx1}leFW@kE-{ojZ5|4X* zOxZBll!DVunZ4N*ZkiRxBc{whXo?HZeP)`nq=zY|JUBM1DLcXG*=_$cIzKuw$=BdN z4GpPTi#gW?-*6%?bwXvHzs8Pz(CwyhrCS&=6#eM>(2)JvO&L|tl<_X6D9)z15^n-) znqs+`Qpnwu)wNBz1n0gKFh%=9j&_6E1g`2D_JsouZ48-HhwBz47JfxblFqA_apvjYs*pB$ylH796 zdd4fPiS^=lvX1b*y3X8ZHJWwvGURaNN2kEZTYtE~cG#YLVg|KAIeJO;;Q{&eNHF$< zI5ir(9KbFuvBy3z=gC-yz>RTeL*rQLe&SYHuJ;XH?CD2c)0%n@J#1GJo=_KrB!g}6 zpRv{w#Pxr5M#Gy?BQ`+m;cW@Vo^3t6CSNK(7+&Qx`5k#f7NMO^*xZLWbg8x>TT-aU zy~wZPsHLgR#uKl5d^TiiIa7Lgn^JVON&niE-`J`I`QdN)AB%4e)G?(C`}lk_hSaJz~kBZYu!W45U@UW zfw^BJcPSY}>?D@PfPcFzto4xpZlRVevkuILbN>^0a#ncIZ#w;FlYR;H!Pvs&Zp4nn ziyX5Hz1Yt^@BFqvhxL44)`R;`(DrHts9mWmu0N%>w2WMPKRMJf`U>PfIcm{EqE5a< zENFWdoZ^pSZQ*WrgYRDB&-%myVpe`MF^=&rKnr)SL65wp5!S#i<^>2Ec3odU-u=PTnu*L#t1O%JIa(=#IRt-S^>=W z2X8S8z&DtlzY_i@Gq*or-qDgy#Ff(pEwRgQ$=9rw~_yJN@&c$@n@IXdH?;b_Vr^nGJHQ?imj8e*)y(AgG^l?#PYmZziZvw2Fl2EMnD1!FLbR=B zKH>^`@&ir1vWvVCEop=Pw{A!NRhKm$^7*Iudnx?}ix^PtfF^Se(O97?74O6 z)dgR~p+ULH_*baU|SltZk`b@^&C5dXP850cUi1KoWJ+YHH?CYNfvP(>js= zgXJBS&|Wwj_=Y z`3@X7pC7Hwh3>qDWALCj^;r5zO`NBaQ;`?CjHB1UF;j^93yAmL=S_)V4ATO+u0Qn$ zxc62}+051ne?4CZ54PhM8+ilAv_zx&`kS(HfGOp>5wqKya@2?C;4G+^DevJ!-&E@A zbJ%i=A?f6=e@CNX=)qNQ?17ydS2E-sTMswYJxe;eTJo0n80 zVAvD=R=tT0Xh0dZ_H`Ja3$;U8Q|_0?KHxo>_g4@zHgoMA(@Z(Nj7N0F`I0G{n9rYw z*!>Ybh!j&Y^ZNBY^aKqm&)A%zO}QCj(ib-Q?iqDQ5mR10#~z2Nv0}(2LWu*|>Q7TN ztORxRcXH{Q_!$hhCim+cOg%o7+87S>a3}91p9lr#(OIcW^V3%YV_$?m+A#7?;%@a! zhC~mfp9i;wpCxbUf?j;$o_u~sWO>oW(sUR1rlbF7suCM~bh&jI4n&c!P-9GnQ~Alu zyRpukJd^s1^@Ae~;n+*?Pb{1{hhEDhLjwKKXM9|}EVaygYUGpTNa+8I8Pwb4z|#i7 zKk#?1I_s`~>D#@bf1Au&5cyWm&6*6Rb~&HOIv#OsDSUoJ%$W0m;};up2Hgp>!{-6$ zDmh@$)4KelG7EUTjJquiT6lL-bGt-$1zIA?zQBh z!59`YE^t2`%vAtq2j77IoR;LPVabA4#Fjv6i)og`kGACOK#SgwCI7*JYQ&xA>^Jr~ zbM!T38ah1&4X`s!$sa*(g-##EPA8{OKcE*QM#4k35b~It*tHS%dCYYeVY8->;M#9+ zZ*NJogT?oS8E60e2LFeTn9^bkbv`x?9cA)6OyolFN+E`=xlZ2;pB*En zI-w=2I+Itp8{*-JjZ^XUIs6L;KBB9u6xL$U)-8doOOjjH>;o?bqVtofu~xEncbDgA zagQFvXY#mP*nDjq=gMVDhqJ61)BkzLZ+-0R&i9U~!Dt4?Rl_O3tk2o-X3Ju6y+!Qkujp%Gi z@&VrGxHa|2<>0|jV$3gcjO~f!7{s{#6Inyq$>Su})TwnML&y!m+nHI- zuGA*&ZyPccP3;fnr+q*xGg~tJ3;F9ae2XvJ^4Xai#Pq9ZSQ4=V-Te z+M(UGs3{AhgFiS|iXpYnP`e#6jZe`ZO+yisy{e3Xo; zW64j(>AxColG`6-j$7D@RJ3GVQ;YkKEinQtDIILd`ni@YjHIR*Ms3~IlKCx&1@OZx zYe{TTi=H03yp~#-xu>Ani?7g+I!}Jc+!GIxtDqI<;76ZCQ}&%AR${kKPstfM?i052 zEzJ3yEs5gV(>dqC5|+%ZZt;7kmJ}*t$v`+z5DiLYt{bpr@ETLL&4WLE;eI{zCqL)J zHf^z!2k~@b1o`0vdUpNE85V8AC@ z-)Qdu`YU;<_ZR3g+o127g?lx?=F!gdcF4cpk>^)3$c3qolBZD*cBPk99&O{;q#NY> zdsrjkTqV{~r);Gc2qy=^1MiOX{!633nU*WO?7e} zFjQkS*vBVP=toxSo^8>r!Bf*rWlYx&qxo0B{3c>!2iA`2GIn%f3;KVv0^Hq(PAsQK zi@oDMnX=x;l0M`M4Jr_$3ex-gist{o*E!H$FrcDa7qVEgG8dZ3d%@Yj*H2T@-;$?; ziF@P}{n4&`|Utq9hd# z)F~3hcW*K5NP%ZYROHk??kdjNuJ%4S|FeR{g&LUXA%!`vK`|28!$SxIO}~? z*^j)lJDRyqW&MV}nKL@`fcX3uZOVrau2Und?3wxHstF;^u04R&_Qx>uJzZ6_o&N*qsXh^m5O->a<9=xLrKE{Uz`W1#&C6}}0C3w08w&pllG7>zv zrsE^@t2Vyth~7qP6u-9+C0_#J0lChxUhv?PC8Hkl zS(+t}az@Foy_Sq%yk8jqP+v>7w#QDLEtxz74o|cs$85F;ORoH9NkRtx$$?sjaQt{; z05PG=SW80sSrXd8lJ7#ELY+|B(~{%rt@ zW81*Nw&YVBUxr-kBj>u^3l6m-o-vlR)|T|;{hGv@&)6|JjauryDZQ{|pqbu z^wT-l>`L^7YEcU}B`=^RFzT|-4aYoQa6Pnr*>-A{W%ThZax}KjZ1dLBGpa~$f%ye2 zL-)~AFLHw&1uf|@&*FXo{0r76Q7;@8?qeoy6iH`2kGeVIyD#OpQcu8%6Ba!yC+a0~ z#By-fvA8My(630&(+f@V0_T5-?PKqezvKrCu4o?q?vDT7;nS|X-h;0WG__;`S{jJ2 zpTdP+>^m6!`kqXmlpNp>TMKf7^@mJ3yPf4wy^l<(o zPtZ-djpn(*W&e-l!UZfTMSdUZkA`ZNtc&ORN5JzzYTJ{H=`$E>5+#pyunr#zm5P$K zymuf4t-fkW5W3)7m2-fz*F(u=I8RL;)p3?AGdRa$OOEpRCY*c(yf2(!$+jt$IPlm4 zE=;n4<%O117(rYZXo(*&<9Ii6cX)K4x%cMW1;PB%VwR*%pPV#|D`_RQiavHGi#A^rgr4+P2Z%)qR zOnh!c?KaAkH`uyRpR61GAcy+OnglVTN+xotx%7NvsU6ecbX)py zH_!y^)*%L4V#n+p?@R0mre0W0&J<1l^lUQg#`Rbet-$?8e%w1mZge++dqCUJ7lVhl z(3=XisQ-$S`+)1o=-M9g(s<@n4BgF(PaT?D@(i8o1P4mu_dRUWc`p(@bcQo_70@lT zD~^20BIotGO%C-M9*{d7hFkR>n-Xvl8y|xc+rT_Lm_dB-Gl>!F>4)z%%41!rf*fQ<-rce^FE62Vh4&-YXFUSWI9=hVU5dq?pby-_lb&*~jUPuaKg zdh(4-)VOWYhw)%_I(SBp-@t)-qtNN8Xn&X`v%vnLS>T;~rzO023jQDPdUt>&FGBEb zs3l1=;Q{*>!^Y`7m^Ze_>H|hOp9h$ITn%nwo3dzn1F-Hp(vnq^!9CY}&-e?&pA7%J z=i06NgB3sa;XIyj!NzA{@a-u3?SvzCocoX`v85idnD{z7FLOW(I$oy+BPaS5ZA!ZZ z#8l$JiCOfJcpNqiE}*|NVo)xq;+Tv&l`@QD>YaE~DAA z&?q?%hB-cH59_OZcj9;n){Mzj8&x4bk7NC12E8WgwE^@n9{opN44w}XEAA%{lfca} zu<(}oU*de_8nZsaXRB6I%Z1XbQixA?s4d8?eln&BXtpgIbz&BH_>J{b;#XhJ`-j@& z-XeG##Qi74j&L}(sx|k6_|jW$K@4dF|NL0zya10s^SUP2UQCWy7(JVhZ}(a9Lq~7E zljl_+R*~yZt*6U#a-KwbUira$UuyG=`{4GmZk)hc^5#6$9mKMUXzu|q|Cu=?xRc+L z169SRSHQL5!MvJT@(E4T(6rz#mTYfJ4TlDH>|{x0d_IExZq-2l3vjF*xyf(znS;~>J58C$wvHUfo)}R%g&xm4;skhgaO66*xen*=hvp`O zM-wbJI!nGyj^Al7vF1pHiseyeEm9I!PTo^b5qu@?WU2EV!X zATX2)24BO6f#7-WXf(Gc8~}@J0;mDTQ9JOsp7%F_*J5zOiDUEeeh8Y~v^#Zi8%u_? zMIXSa!sgu)K7so~d>#+43UTaAuDK%!n@mJ6crSJkoZ=d-Ies~|>xM0-W6PU7AH(%K zaGf}gKL-Biv)yLP%Dyd{TT-zqmlgQ z2y7Y1dfiy+sHx<{5&!xUOTg=2;%eQOthu3imElw+bg8MUB~3~bSAFT-b3eqmC_|=q z2K(pH>812)(DRN3=y$`3tNE!#;Fr??IG3UQ;NnGg?Ei)Oj#W#n;f9A1T+@FQcCZZopHd|8n5cbLN1>;;qeid+p8k@Sm968jcrSwRN3C`38 zmsawflvdz4TPvS&HV!9)_Kv8f@?0CU;5W5ByWZeo}uf*OphzX~#dD?yIjl0YR z+`D{2GqU_!ZwmfH9tKx-;_nmhiOt?!L38v2jx8#wM7V^i2}GKUM;HMSJ^%tPF4_ka*x{39*%Y6`2N&sV0PSi_|lu+Uq{wF z$ycZRCa&Pm-}v(q*!KWS$5Y|ebhyF(LF8hS(d~q~#C67YY6bo^=z9c{|N2vNv;uo> zoTC^$kgS}WYo`+v?xes0;>H;sn>?hBc}b4+mAWB=H}snGUZ5XB>^%que#X+{j>I11 z9(D)*#f)I`pwgbyKICgH>k|`P=)K>jmKZ?ovX*tg=G;g9ko$wlslGVk#~Sz_ovBm@ z9fJp3Irk2>{SC;Go1$a*d^5grz-PaS-}AwV3qA|wz1!fT6I*xU;3$r*U7PdNq%NpH z>~MxNY-5UYK5TvnKaRxS=XpGyn>?52ODb}FC1Ooka(0e+?QTg8=5iLleIWPUxrqGz z9^<=D{rQgm=PPvaJ-U7xy}bm#_L9d;=K8aV6H~b!c+1W>2i{@LlvvyeA8esVVc!!U zj%Qy#IP1?C8Go&Y;2bTl#(OuxcmT((GFd0I=KZ@&s=Qy@B@O&RUe*>H0Jb!}? z3Uj`d>^CTa^DL$}#Tfjjkwc;TIoWzopuZo;_}RB4=N}H%`>`qDz8Add3MU4^p?1W9 zB;ISpXJ6R{vhBw10j~6jid#~puqA)dl8z;@aT)ThqV&7ah0OP=NecWY6v zbH1ZCG?6)8#|G*6V#F5kbevv?1`asi6>9q}XQ(aU&NgbEt!y7|QI9Mmj=+OE)YfOS zbDvN+_d>Cj_K2QS!VT6Vv8`VgVr?Nb6dP9ulW!{1BX`HvEx`%+j|S_F@S{6e2m}|$ z1E>S>Z^9Tf6<@wW8_#rrlRoILfXABD2AsniT*ooq!uYWX=N(*^_N;gokt5@-sMN0!rZb2 zGlvlRoKw(nu-ut#+a&nPV^1*MYMdn(XM!KbS$rASjwTLSBe=@iaI>z2JaWZzc1IG!F$KqwztD3Ef^;;=|T zu1(#HW*jO>Un-|1DQLSr`A8i3k&YI3d&!z5oBIpaFCU?xSHS(AJtTlm`)%(c5!SQqQ zt77CeqbHiux;@7@kYka91V82esGZaRW66`Qu*L&dQin9o49|y1dG0tw>!_|v(3?_DrqBjDs3l=4pY>h4jfs<8e$R0EV9lFgJ z61?D5ckWSB;MF#Aybx;7n)J2kK~>7ieIhFN1i5mr9cy`$xVLC&0`~-Q-i$a{iE}%A zr{9o`o+jGzv;?>!9;9I-?;hw4SZN3@YLCNb;3sJUKAJ~tpGAJ3frl~R7*1ZqxBc;B z3$T{G8f#P4>5YQxiukMndb6+@`4AZY;YAG!x88EzPw=XYGu)sCutlJ2%qe;Y*Nmff z<$0S^-~UDcE9ab4#A^{9^+&q#o-EwRyyT`{8sS{7{swFz>bJ_*ONTJK7Qhh7*dC7v;c5 zV0$e1GT8pGeE{ zn}OLUGpQGd89l-Mxj$%r7UG>fKFiL0cpb>t#ynvkbp661FuTQ+JW+59&di2~emuTd z%yo$`I~-WwWd6T;lJnq$G_Z2aVjUB#Ht9(ZwlBvr{suK7|CmfHW4{*TlIece+EAkQpz~u8L#PIHDAs8(H2Finb zKm5EApPM?ELZhqBp`M#TE;$KZBR2d(+w$Yjd9`>Szs&~k5!gB&9K7by15S+q7tPT` zH_o>@7rglk@3F%W&N+~C-7e zwej$NCF>&IlUbWw$lU7FcOw2r_5rVqYsYwUtm2FX-}Pnx^32Pft#W7T7x3Rfz$jyF z-j4lveV{8E+yR_1-ci^gBQLB1hyMewTbV}+bNt3J!8~U4TKDn!aOUjpO8!#;K9{CO z0h?FAV42ro;0=AsFXR{B=#hLt-%^S9;KJ)Wa|aIzdC-b7aJwSc#BO=q>3wnDCR}?0 z=icUNNn@_xpREngcUOYHCCR&r5Tn6#MeJBV3)}+dS@7X}uCX5u?B}{SIKO`Zva`4Q7Alqn+tF*V-{QK-e_{}qGNF4piCd27D`WVOA51Xj z2JoN=_Sr^$^nz=@$Io7Ci3RI9ZWlEVoXdHeIDu`(v_K2FZtme|LkKwOfv?EXst@{C zn@j}15735}aODQR|I7LQ`@_98ySe8$GwZ`SSWBZnI(h`(H>TGb-I4l+W3F(Wb?obX zk@x{0*5S9$_|FwQB!Yo)V0s_h+5v0<*qCeASiqx#jz@wYFj+B}b*4aG4`N>6dt_5E z>J5+DqBY>DMmu=ahCG1tO$C$nM&PedatnN7=YlW5MP2OL3Eh3ujouGFj4KazH-fi! z+y|rMn>EBi@EX4pe=ekN!+A5bv>EShot(|>uGKTG3=i)G8M}KsfvA=5w z?y=!=Fq_f4`w5Pog0UKI^e>&5YeD#4f^!xlR$;>=v?>eO*_V~PAKy9Wp+-d;!t$|B z!e>RWQ}K+?(HuAY`1K=s_cQYFtLP_s7EE4hg`q3>s3H736!9;o{v5X7u8!nuz4u5%GzBU|mhi^5}QC=6~{fqeNa!JNi2+iZT z?*;fQH}+#Z-Qb%-Y{&x69QgbV^P9$FGmc+L9Es{djvdeU?g!IfBDQ^46ebaElM|HW}(EvYp*_ET3dKM+5RCWe7~Cv5Q{ z8~w#_`YdD6P0qO)Kh?xGz2U~nQQ)6=u=+Bw9e(<7okJQJu)xSPY6yIvj88La--p~?28u?PJ8w+I`~C7zF?Cpmz9(ZP2vtc#as z+^(!$@%SYN$I#QLev=*r{f*_{S<@*@eo==UVko!)M>D}d0%K7gqR(J(>_>DEeOL&d zJAjq@pSUjtJSBqjH~FZ!ut6E-mdyOq;qF^_It-h>VvcrvzK9r613MSwvy6JID?WW( z1@6A%w+?h_!qTj51(K(O%~6@irF5FlAnD51Qqu%Fx1)=-+{udlsbB7p;y$Xbr`&jgDv3)+S zosf#1!C)`Ww}UZn!?rE4<=xDT0o?Qln@m|T_5;K_-Gs6okQPuJ+*f*J;ljr;&Ke(@ux}@M+)_bnAeo4OZXa#GX^ti9mBafla z-G?6c1NwhwtALduvc;&a8xWTv*7~i5eG%b-0J{Eq=JtN?%(+}baHv7o- z8oZeH)O7f0Dg3Ac?#qIc+B_<3-72C3*rgU*YsS4aMVH^)SF`&Q_ftM6zsKLbvGqo< zbonekK!-bQ08enc81|S7*V4*I$?7z4z3*Q<2t7=G56-Rq^t88gANMkFwUB&>#}T|A zaGU$P8K(kvrgQFV_+vkDEe+hLjPdR_^!+7u^aJVuIDh0F^I{&~z}EOm= z?BvdQxhA$9;0h<1SAMoXEf6nFA zkX}kd%4dK?4R69TwjH*FToDrf4D|&fX{QW z)x+}D3??phW4xWvj?UydJ?V3F=RQ!L@90I(gy(+Ve9y>@ z8mlq)qPo(b$efW^v$k`W^-R_^8&ac%oie2TBYIXvi4Sn<*D!Q6gdXN>xCh?~!G&Us z@%=IG6*)oeh(5FcuQ~BepRdFfY}V`#diNWj;roN&;3`;6N4K(qqhK^t#TK)jsV~sR z!Zq>LYV5I}d-PB8eM!~<_JgHxjy-|Sgb)kzfq_5RBganW!udVBqEmdfocnLn4$=c* z?ls|Ojm_kHYv{vbv({iJ^B8!_B^8qMMO>1fb*&g`1Z>M;Ca-8pu@!a(Q@d3TvAJ4kZ8FCyjw;G#f)ULN5!=X!X zXCLR-0RGsHpc}?sv~LR-23xJbYc?=2dKob~hWGGM*aF@M+f(sdJ#;C)A!|vVtljdw zRU2|HK64M}yqs?<=SpV`Q3uIKPV;#R<9p*Xa_n)E@3wDD^ zFmxO2{D&T=qj%pKi&Q7hHz1a`CiiI1{V8C4YfmuV7i@y@Ti_+5=W;dZUv7}ME&gLG z4j)u}{0?mW!AC=ip;fJ@ae5MGv0DWG`iZ}s&@`tl^p}>9M=_od^kzbC@_KAEEt=Q> zhsJKkrtmF3l{L&q#FneXs;cBY%&VbEoxdIYox&b>>0RLO(QK(;U}qXSh}PWChYoZ6 zB<3_38}GyBYtfjJ*nfLb>SyNZ1V3!dGpq|a&=^Z5nrKra=88_mgUy}rqeB$&4GrjB z3l6%%4SaNgZ4>x>3|@MI-KorZ^GxEF1=JCew!j_Yf$`$$R`<2Tsl_5C7oNn(y2r1Ag?sSJM&pLbhH`$J#1Z}2zX%K zD2#h%oVX_@Jq(_sZ$rj`g^R=lFmrP@8X3phhY}?}@su6KoNd@D!2<_!pB9b(^~c_U5yzp7kMo^sL%x>8?^s>scQXp$ms!+n*lh$Fb`iaK zKs@h&ZNE*x#^}%k7w`fGPr$b`)IO6o@Y^=y$%*svoe}P(Oys;d;Zv|Xc4ypTPo9{lagx)k_M zWDYSCun+H*$8HmcV^2Q2fIc{|{lRtyeosNm8gh37hX+t`BRbUyod z1pQ&##{O--lL5D1vaX|e0GDK5N!PcZK;pF=JEP4+w*GZ2^h(^SNne?oda}TUDt(c z+qP|cmg!g9Ox>oo+a#9Jk_G{$W3e_N*5VM?+zYbkxy)ccV61n0xhtnZJC; zYxu?TYc1=rSK}jx$ld+SWjoG%iQ&(vJ(K5*N<_@df<5vv2EkQ^D@9E-R6p$JMzev# z!PsdWzK}NsW9Qs!C$O;#Y>eqn?nu8y&cH``PnAEkEewC@>sN_+@bwC6E|-Z*@Lx%6 z+M+7<;y3Fgryu(A8wv0k+V>JWl%NgS@PQep7+1n>fg7lMr17h21Y^82853Cd-+q0c z4zN!FTo}5R@68BiiqZBM)Sk-GpTv~@eTezf;KpF;0B~`a>Ewp=RVMuE;0m-YeSQBa zZ2?mQuxHmU#H`=g23)n}cfY2EbKs=v>8S4{M+;?zzv#ETMh0swwnEGU7bAz5@RHzz^d6E#Z$=Ex|Web!=IZ zYgQv{N$mbon))pKpNM<8MO-()(mt@ClzZHcopOS6<0$>MpV+Vip69x=8U6;V%~r!( ztKjY>@cevgm2g>)8H~~R;f4kHz%uFv>&cPf_MBX4!Ea1Bz8B9=ENnQH&ki7Nw_xsO9W)SEre<(gApMTLZ_Gi1Md5q*$u+=AGkhQ~{Zuh7evlMi zp|1*Hw{+m=LQ&!?9Fqs^cjvjS`Iu|L-wVM(ayaDT|Ii#A&>BOi2TVY}W5aMBM^+Y*M*_|D+dk8#(ZTF!kM-!v#)@N)5 zY}Cla7$2Al<0?QuSEapW1F5~dp)dQQx0{d?V6{>Xc*0KYoj zAclaqdGJ*kxZ+v#-wwa_yZkzfJ%X5Hy^1}&TC-OF18WruH!zI=b_n&Gu-$4yu_A5=%?KHF#rFFf0PP9PxmJ`1RE6}axZYow+848)31K?&phJ7 z&adzw{Jj#MJVIY~iAg)~ljp(kG3(iT`O!Rlu54BMl>WQQbqpWMJrPaDYxVK_`S@=5 zP4xdu_-qoIX&be~-P9(Up-bVoSX|L{*~4{dCtNZN%tw#4WvPLW;U@?4^Zj7|J3e}Z zdujF(4!@0WgZrXK(Q@E@Grs(0F1iB_K5S6G424tR<@4id^C)mi3>`F-cEdAEyMb@| z(9xFst`*$g8J-?Up2GXejHExJxd^-L=Q(d5?z1O32UuS=2K~?LAA6%m`CJEKpFC); zzpO(-pC;s50-yd5n-8wRZw%o+;IQI*!NXZNn*RPkY>HkVGw>0$m(SQf3Go(N*P_2O zfSu^^&|~;O2sVyU6PsX*lh|e)_H|*4hTyE-1hix~Y<-G&T@$_!+(fEHD~O(l)v$xvCOUMe1kcnVE-*RX?2X6;#$_?%wW!P2y@gXGgo;MbLaS; zU4F)tmog^@ETvw@{7vR}=EOf9QunP&+_+T~?(7b)VDpOjcl7$V!uVX8AN)St)AMZCL2-)Hx$Zfw@QJ|KSWKr49AU)oGVqC! z*wcTQF}*$D><}Dyl6;!yuY&2htlwHZ7(If2UvB|Nqh)KPXG|F%H;1B&7NJi+Q@nC~vKi5QQ)uEvD#D)3(TFK=P;J^Us&*EIS*JUh?jz<;vh>tLc=a^eu2pYRL0 z-gC4edZhzAw-a3DT1SqwfEvFStvHt2?_e+tR=s@K1HPN* z@_%z2+9ib-Qo->#(bU)>3fwya{;N69Z3MSeCtn~Q)NjiL?sx4a$K~(neUFY_z*k0) z8xb=O5+lri@CPuua`|knwGgp6F zP1e$c%NeVKzfl=(M9*ees?m^&Yh#AhS0Sq}X-m-IAk@nidD+*_>KXjynH z1GtDA&#zBtpLmn~Du3Fq5{xI683EF-B8o!+JBNfLHsn}B@Rq=;k z#z?=G^LYpRg+z{GjUe1VqYv-v!?=DZ>&I%d_vtqF!wX;>7~8kYNPncKCdhorpWr`j z3&v4vu&%Q_e$b9FZQ8WD4Etm7cb=~F74yTZ?`C}*_NY*axv3N2EAC@O3%{;6N0;72 z=Wa*a65|pPGt(Ld2i=`=(XR(Q1roio^J~$E`EzH{0Kfi;BWNruV--h zUEI%Dm%9KJR0EJ_OF`#~P<*><@;G)0U!6N5AYH#-17Q&3Sm{C4Tgw99V6FK8cPe z`bR0 zg5JPgV5mBH--U*#POfqN0Amej{Pd?^xynbf_ApYF-}^Z~+^?9deHx2@#M;4n?=F$b zb}^E<2$3pQFjC>sIK+Po^WIC@Bb6!%pZ(|FdvPQ&jbkpRy{OykRQ+U5T_(rMsiicWzkR+y+$RS9-OPI1)r=bv<5RAIH+Y=67+f!6jX95p;ku3BdnNo>V<79D zdXrD~0slSmm6mX3W!4!MUT!;MSIXWNz?wW@9NW1FMj>&NKFMjvj4fcDu$U5MS^m`cC zAH*8Qj?DKFYwq(hhMk7L|FGW(`1lB3_Pu2Peb&2Q`_9^P)-&#AO=K^8VqI0n`uY+-ZhD&W)i7|SN-btl`C_ka%YItdGNo1zt^7iYh0LL3Cj4j zJBeSTrunrpMI>i{L~7Z+NS(_%i}_lSy57yNu65vk{NOk|TYEqI<^)7CRujqk9>xve z?-}*cW!b64D|y{MyL>l-D}5wWNV{v)>hp{Qt0x z8X_?!a2b3ypB!c$To?|o!N+i@m@4cyIlAZKF~Zd`Qa~k_!WDL!RPPc!cTDiYOoM{4jkZNzT-qVegvEc z#(#96c~r7XBCSAv*gRnmZ9%t1590KPbP7m~{$G z`hmDcEI3+@du1tqkC^x;*tc0XAH7d|>HX|Gb(lSN zPO$$Dy!rS%Yp(F=y7>4`uyeRM+5sO6$EL+9qPY@A>MGoMGghSL-SW%z*so$}mSn{K znOng-JfE{GF`wOATNX z`2oCNb08eMK2lxDg;QdK$!M3a+YgW`%KE`c0qjf?l<=GfHQK!i>cxE58xx#3ibhHKbtnJ z&&$?;{h%sw#uV%H+7)E4gFNi1lNavK&prqh*^|Bx>-Ttn`%m};J~R&Oj3S2gnZ!Oy zTw^S9=ga8Stkj%o*JEtZk9gPqJ+&+B*#9NIfmW=Yh8iRL#%!F%SQa*^3--UDgJ!0r z_C+3J(#CCH*thC48ji;eFUfPs$vZqIZs7}gx1h)1{sF`JE&SV4BSOmxv34E|m4e?} zv8PF@L+nGfn*E;f;ZlNahmvPs-jCl^={a4UOVA`woHq%=E+2(cy}*mOYkOGjTN`_NvIBsALyndQ{Jkhj%_jwZ0Ixh+4reZ9y(hS8u!7prA3tY`N6MdfmIjQ9)RZHU?4L&- z056AKK!+rzR$7_*#$@VBugT4tG4{uOw}an?ZGz`lk_RurzveQ2$~AK)Icx}ZT0UPb zh`D6o{ci`xWt$Tt;Pv5^@X<2(NOADaeYGW5{ZRzp$V)9EJNZv0v_x9ICn>xim%0}* z%J+@h%v;u^K8542;pb;qCj}1{*o+@9g6D147)-{W>BnAOSi_CRZ3o|X%0U0dV2tHC zyaE61+y%!IPrcYRAF*^_4>V3q_GHS!K1?yOGkaIRyu#T;>|;Ia2z!#Vw_wSmoSVd2 zjVJ8q@il2UYh~Eum(O3k!G2MH*)NJX63XxNM}Kr0hNd7UOu*K&iD{iTlOqkGZC|-> zxUNw=#(uYxbFnv4@IGq(a8qmSaUXy0nUA_F?f;$*Kd1fw!zVKF=tui)!3ODQe;n{% zaua!A1bdp$)++({KiI#Vl9+_+$3J@WPi1J?6(Y#hW2CcsjlFu8+hr29^&x< z_?h9yAF#QJAhy{$#HEoH$`GDW7z%Rf-Ir_N~kEc3P({1fnfhlOB3aqK1 z@86J{CkDSUuh51>^c!}4S&p#`aGj6)kKUIw`Ya1a7=Fy(KZDsfYYcnoEn(l?V`#cJ z>`jq`7*7ma*PEIPF{Ubc#$0l(p=aRO(To+>M_ZFy@8CV@+~i6B@cGrueVxk~R%NtZ zXr$^GkqRCZsdnV<<-lFH#?z6UDSKfv%mLIdtXm&46Gk;QyU4! zmqOuclUkaWdK0!hJ)YO#w<2h-Elu&m28?A8hjy3do(d2b=0uERf3ob<8 z41@Cy6BD05pzd{@eu3x5p>^sWC*MEH+%#~%01hm$0zEt*PK5i5ghXgRd>GLKE@(m< zt1zDiF8Kw&CI0f?o@}4C5-;Jx%p=%)sXew6_|FGV#z7-I;_Sp@?Dx%h%qNR68TRam z$6m*myK){@AbT_SXV2~+_S@(A{c}0D;P|Qi4nw(tmLpwy?%wlfAJnL1_0jUEM~kW z4E+YzpYO>y>NoglBQg8|a~*gbLf?5~QY$9bP2fEZE8s)*{jBNoYuYbj;0v_oK6rt) zO#nyF?on4c!5j)7^9s;#VeoxxemliIavL;e%XsAJqljrv_#_w|OI%1hi#!=ym&Mk* zUG&{F_P|D)MiS2g_Tdwch;#SB#d7Mg`TW!+{G8d1ZUd)B=!cDB9H<~UCpp6Bap=8~ z_*O6aW4B*5o>60do{f%mQ!Bc%0REmr zO%i^;)}I*B277cNCiJ4NI2bK7oE#g!>)(y~T07<<2B3SYp>fKhX~2GQIKFBsv=^Aq z2)EaGiKeCfS?J&B8ctR0l?jXwCswtbO-&n&2f^`vG)5@?J1rFLF@bnFmhlm6*nc2< zJE42>G$KcZOG@SAJHY-AaMATH`#0^TUN9HkI|_Z%l)1M>(L2e|$!|IP<^mm#lDM-J6#54B_R;*idaKXfG)q5*$m!_!L{V|auP zXogmVOI~2ZLus%tKJY6CF)=aqT=+lYGHu>Q?FLK~7{b2qwK*dy4Y>!uJq#T8@T2A6 z$u@4*la1xvH}30mOU@-I&;Fj7$S-5zC!hb@o2^e0G<7j_AanBj8F0c^Y|{n}1LlJo zFjjGuH8;cypZ-3sl^JG!`<}Jr z^kBeq2EJKHY-10+hWK>>+7}3yrC7sWke4{aVqt`?MZ(eWf8!E|9cLX#pXNr z$K^YI;Dg})20oeZ1an`|G7A<&sCNWyHyGELLalE&d0ua{O*`t?V7pj-^8ISmDXDiX ztWNEM|8L^|d3bzMmNB0q>`R!9_k;cHaq*?UtT);Q*5QpYaKJe_yUDq(r+w%57+~AE$8}8=G-bUU#>Gb47%YKInB_T)JY1nwmt=WcYa_`+sm9oiLOg}hO_#f zvY&GX_Nr}8OxR9-4}N~4cl-1ERX#F4Myx4+5gx`bqt>Be=-WCMuysSQiEkIi#)s;l zAzxBQ;Q1SH{6qZU6n39K1g)5wz5!27lfv`($VT`tVk)?SA78_B%WiRoMr(Ki-dNF$ z_bz2Wcd)!0?(esX+68`7e*~QN7@tVR|F^I&u9MmX*#9~ZPNS{g_wxB8?6C@VW}(Xl zreF`Y*z8eG&XQvmV;6>BnZWD3U*u9Y`%SEoy-vM)}dG}zf@Cg`wNZkn>hkPO~W3S9S=b)dwx0z2& zpWjc!+>dOG1LS0^3a*GvKN?{E;4Q|NPSU@7*dq=9E-(k12IG?h;0kiO^UcX^;gu2P z*l)Qgk2$a%wrrRX&5O<$L!8|5iZ-L`>%65V49{QrL_cyZ=J`F3iK%zsd9FKPqSOR5 zB6(B7TI@Sde?Nrx135S10egDyAI*6SP1%>J0D3)%9RiF>1ut)m22y`MED@h1@hIV4lTQ6~l&sPU8AHJYz z;HU!Z2j>%e!-rAp%0eAsGckG>=Wk@DeGSmU#04A9TRn*H-3`93($A;DbsQf^PJb?G z0l#5~^wekeQI8M*!g$;j<|aphYySW81Gr8L$Dd;^&N?(PxM@J!GBPF;J=f#tZQ8qm zJeR&`MjY*ZC0vJcQ6H*E+xvpoK=O+6Q7?w&82W1_myQdSgd-$+u9Y!1J&we$@W6|uL z(xT<#($=5c>r-mI+|$F;)NKxNb|hGuK;9F*m;6=>&FwZ^4iqs*NKTw zmyst$P~+kCnt^D70QPpxi)JML_c;}&_3-{-c>gDQr+hy4=;I8=Wb8LPb(2ra;Q8Z2 zd~yeHu4{gu;>Gi6&3ju7KHDnIIj@y#`Si^4=?EGr8)vXgZ^}I!g>#9^O^(`fkFqst zrLCH9Y#X$#4OceUfbVvM_u$gHchT*);cnt_@ubY52LC&V0X^Z9?yFjO6$%#J@2oA$5| zVHVB}OMQ}@W=EKMtYZH)_8{ywmh)$N^ZXEE0b1_nLeB7bPQTHg0ms?1AD(=gmH89@ zBd(5vx9GEkIr%+)a|Ajv8Q=T0G5((${8Jlvf^83=vxZbckCPv*;&-~eX8+H^*gi*kC`}+>t$t;gi_4;S%h83A@(F zLrsh;XA$CiMKE5Iu|#72$M*DpSN0x*ckU8jTY-l`y#Gu>`r5Q z&4$&&BK5qX(P++lQWl3$Mdvi{Yo%d6?t;2n`M=#c2p;n{&4JIL@mN_K{b@6>#~> zVw|tN4x6Te)A9Wv;?4H>=uKkI8g$p2am3~1#POuW`na3{*p?VvlGuL|{B5Nk1*g4l z#eQ*t)Iiay9lc@NH;5WUeQ*d*)kiM{@ja>Eg()BfxjoMxS`8P>LQiJ^-{dW+m~V3K zEqQq#=6v5{oei;f>te>eCNS5h4`W%$$vZDGww91b{QEIE+(POaAL#SfoTHWv4IEjQ zbC~$ORD-E=(7y@M$#=Vj=|x4(*#S?ric^QFM!o4aF_+k1`~`dZ?&JR6b5=+h`k*O1 z)SG>_iBr!OhRXs2Vb{3V%fv=_GWj;nVO{}ehl9syFMiIy=V(~eOgtXGwU<>6#BtdfpfMF zuCg`P1NJA{+V15n#tpW9ezjFSk~5EE6PNJM189LG;kLpGS(=sC)+f$;E<>zo)SVo3 zIX^)@s0u#(#-}@If_r^9XR|8jTfZR}Y(&oI0jp@n zS>P%V+kQyGxyWf~XDiOI^l_H_T4EzujRkJ!{2~ub!x?Fr;G?wo40v1tKBxWRoK$Qw zfomXG34Ti)rVlo9Mph7fHJBJZ8Jq_3ozuB$Hz0pw@5l<3IFqm}`n6bed=1kT`mtHH zFl}niV|Q#1$0dm1e71Ro!R>__~9GmAMhD7)9E zLp|Vhc>75zpQ>`M?hrV?*DSak`y6O(D{X+S&-H8#?`G@K8C&lz_&6UJef@)TSGJNL zhgd4o*&^S!)e|2o!rtEpzr(rd!?iRYK2i#f3m`_;#oytt7=Q7P)nF7($$gc4<^ksq z5=SO{p}qgOzl`je!)F>0Uko_?bbIReeb5*asB^mc9`sIt305bQYYrtQcB7`*nK~!@ zGr0nQIZ`2*3FC0Iv7ZQ%hq=m&C&McIj;MbVxOs1v2+ z3=hr-d`ul<1bx43NSJKS4zF0-)RqT^#vL-0q^GIdaV@2YvQ$0?eMmpw-i>eEvQ-B^ zX)(xVJ*TZE)B=x8BVPnpGsvMY|=FUp=oV{Gwh$$Fn=tmfSF zRq)IT+OXEAH*4_4r9NF*?qd&P;xPSKgLBC9b2f8dd~r2>J%-;NSQidz!}%qAe`OzhK!XSP=Fr=6U;9@3Vpw5>$BY|TnRJV<7% zXm(-%@7Xm0zt6xKTz`DZQ{I+xSc*Dn$*}_MU*D&RS()4GqMdWm7K>@?MmTXd904~D zA5WVfU=MtuQ8C62mZCeS!GDM0x7J~L2nO5p{zP!drhC}$CAq{`_yJCD20yyX6Ax;U zUvdqoOx|09T(A&$#m}l0XD%6!{$#ABdCJ-FTj-~8;Jpr9pAnw<=F{d|KBYL%x$|dy znuUFnlg}g%g$wA%_%}I23|$nL_?oi^c|b4X6~8mD37Ui7-F=zbS8y2f-S{rvmzEfs z`aM3B9DZKPYuLWA6TFjGyq?8bWVE#;+27tF8vxOd&ujkRaD_#w1Z>i8NOP`h+imd3-zY!jN*yPo*^@iec z-uTC~mdr>?#pv&#srEBjjo&91dHJn%@kxy@ZKDCGej$(pcaM>CDd_=zw ztLalEGW*hK=+WK4D;n_`*j=!X^J&5Jerk*Pu=80k8@P)a`);4Eaei|%UW>(Z<7fDk zb%0L^v4guPypn->OA;UF!_q&oeYzQ+bC=U_)*Dw9xcXxz&Pgc@kJa(XYE3L3 z^U3+mHhlMTFrE_M*!YrK4jgxh#|t;8@xXaoX8W{l823U>+a^8#e?soM%hqCa&PF(2 zscfBkX(_`UONTF7%6Qe%x!0Du8a_>ct25B2JMe{HUreQnW$9ufIBT=bS+qdloA9&Y#O0b{ z3Qff$?Qe91v$L1^bbF>xxu;++u$G%Xdz6{;g9{MLs0A!0PJSs(jWItujF@zY-#Z7s zM>Qi)EFY%6+-p1HXDxW>FFx~^cJ^z_7$UWVGd!jjn1zE@=A_Nwd{iCIIqpFI4Hum( zO8YkY)Ro^noCsYu3jaPr{2*5C8E$hv3g_C>&)etPnnx_H#=WPDi=X4$GqKq+V#<## z*z+bDgnY?8hB?60TxOAXW<}1slS}`F(m76CH8QR+SUB(xKtPh+%Ex5Hqmt-F!Zc1=Gj4>g4h% zGPzHs;`y{EAwH1Oryq%Ynu4}oeACvEO}0`-@*9?o#^C4y&S}$vcv>@vQ=}R9D(S_3Doep-<@dvIz#YZ^!{?{ znxU!jn}@dQZnd@7ZL3u$?4HGDE~2Gpb1c>4Y>F}wmJ%$ms7qS9X`*kg(}(!g%WIYv z3^Y|JHqU!3ttoEHTxe@Iws3{hW;d~E1Uk7ln3{-xd*BZ4BQ>1+eF7LiO`Zi;=RzY) zy-54<$*3r>dCjL&a9<&~wSEe;Uop;MEW_D${M*r#`c)wMV+8yd3JzxA7jSLc#k`NW zoQ>~{yg_bzCQNgAuFe3?v8%y*Gm!hDdD;-8-_0U!;rny`=i^K^Y)>EL{$?v`j?G+f za@)jJuN!U!V_!0`!oq(%d-+5olM*EQah#}V$HCW=bot- z6~IAy^6QppLv&(vewXqn`2lze$9MmS4P%n~Yy$he8{qHYH?pl;yQ+pNUjJZapB$_$ zF+vnKAVjT?h3G>9hxYDu==fBJt^_(%Gt{XENxWK`*V56h7IiCAYkrz?!1u?&z`^I1 z4i>ZY{F^sqIv7kF>adAAL~e<8G2TH;RvTPy!s z`rijjJ3dy{Bhx~+qNz&x8>zNbEA3oXu3oH;V^Z zdda zeu6fb4=(=V7x`<2X;MS@9e%x!p8SJ;YBLA@jRtuU&NvgkvcC#A&d7O@-{2yAYyMjN z9zPsb#iz9K!SoGmaLDEyKU?dt$p~z;x&kqlIN1O{Z^r#6=e4)oTO#nc=`JxEoCl7F z$87A`i}4X~>nd++_I+C=yZY3zu1_jwbAGO^Vy3NR?WmujE%FVuw4#fxKz!gh)&JaNd~ z*R8chO?eAh%C^H)iLIt8(vKbB-nHOsTun>M51M-L$I!%IhRU=vHLthDdNzx-%C;I$ zvQ>5$IpI+-1m0R=#|L9M&!oD|IobFKczOz+N0qU)1$*SLVyiii4|r`udRs65SUU6G z(wm2tmeTg*XDw~mZRz9^&cq706x(en?RZO*x%y1DR08|uCfEGf(NeWOmPSml)Bx^v zt+ABrqNP>DuHVEi1Mc|U5)FtCE}LrWEPdEzi>)}^pZgd#B)`c|pG6X9>*0IDxUYv< zZGCxTah4z&u$`qbDY*wYItk{7WQ zK>Q3|OfB@Fr5~C34cfL4EoDBkwD$;pbe%Sowe=?pT5%P;S&(@cT!Yv7G`SJ_w={Wp zZl4C_A#RoODN}96;OOVgqv2|Jdo!Oov=i(dM^5l3! zs6BGsK(nkVM7&5qo#HjM6!?D<_&@0IsVDsZJ`SHh06)PQpW(BfweelF+~Rwdo)*PE zjnQ<(|5UFm4MpFnJ~e{LK6T;q<%s*!;E&9?iP7n(k-fHLZ8Y(wA-wvM&plO>K^y_9*>FM8qAGZESoo(Y0{Qb61 zD@PKy(c@)fm|8m7t6_Oe%_$Fu5To*7<2w;99oiMF)N7{8pCd#wI)tj05vmsBLpjem zR4bo_sLV9tK;lsKIT|W6yF&pp912b5Qn@BxYO|(V*EJQK)YA4}mIjZ83-jB|g|&3) zk*SQFOBk=eq34l?O0F<<>x!v#hfMt)W9cDrA{BUBHk^16LCu`UfV{Q}{kD{ySn`e6 z`+=*BU~}nbi~VRU_GLv|^ZW<+^2au?F_*{bmj1xAvpZRekDUfoLsyir6O&rIbcUIoRlG$TDa1plonOY`83toTXA71XsZS*k$HsG5R!Ti9lg9I)Qe zX3a4D3I|>601q`{Y>Rdt`a$kQyC6zMgR0aOw&3EX^H9+i2I-+LkIO9SFk)|u1`a&pil6NxH0*SkJSH&8C!UC{pB$|+*py^wG}#|Ke**S3XDTz zxqPfA!YBCr@WuGe613Mzo+BqsNe!SZ8vHaIS`*H$!tWH`;8PIq?TmhS4gNcU|DJHc zi*dHHH;LA*mXg+kTj9K-Cr#DQZRv3-`kOvKid|m3wbY21{pYH!Z_RDa;zW1efpfN4 zvQ3NH4YdF`>n)G*2U}_q2)FgJ6bg=pIN-KW`tO>hZG)&UWJL?s^r<0rgK`!4om{5+ z5>E@ji}wS#x8dZF*dy#7uUE45oO}9r+@rK1ZaqKd)wC0q4#l)p^{7XV4m$>S!4AGpCA+1${)D67x6vN(9Bwf%2zk^~A?@$^}zpY;eu* z4CnizXiuX%=quuOTiO-pmZ7OXyh?G&t55w5SrttcM<*sNPkbT(S2~(*zC3*PlEfmnd(#$O;OO)@&Hr4;+wkGfgF)OnKRqc z&Jwn|WuZQ}mwu0g=i!{CJuJN*VCevO-&T`)ShVkOeZ(d~EiKM5!RByD{3Gb?w&(yf zWCT20paI%;gP~eI4QiUEs=Tmt#0!6t-<|1-hQJ?U#J1V9)l{4PUd9?dI{C(n+G*(YbIh2sCC!N}EO=<%o2eX^MPlH1UNe_m}q<5iMH=%BrZ znhrO#vb3S;zrA`s%FsD@qI4N>cF$7X&tL?+g~5TH&<-=e)fu>O>vZ_TY3XMOd_M)P zFq|Bti^bj<#5_K`0xpmD+tkA+Z!z;|};jDHm*2Y|B@7q=A~ja43>Se@8Vt88BFF6h5fMx6Vf&&zN8+`#pm_HBGfZ8#IAOpYFld z`)z&LVrvRIr15-k9&W2O`F%patw~_C%5qy@*Wer5$UV5q??9IyBZl3zbp@^5ky!B% z|9O!borI3c-JW_^59&JTs?h}*cS?o+PfDFPCpD@fXf1NKL-^LDN#sv(|NWe{2BHDS zlXvxluRqc5q4;g?rWQH5sWi2S2@_3qrEM*T;RAEP34J@fCw;&^r6ArA96jglev_wG~npn zRx~j@nKU)N@`K;Rx10-2JwpQ>9qFRRhn{~QqURe!m3=%pZAYgDWOOS2!BBlMg4KF$ zuyWN5(eD+ZYWmBe7gL?AUv+B!E{8_;c4|p2x5i!Z=nojK7GbDR22(p|;{bHXZv6Wx zw#b{w(nxr2A9baj6}=kM+0Y>3K(e-m9%M1p{E$~$gTO%_ul9U3bf6ElllkaqFTCE} zQf+X3D2Ju**mF}UOT&nD^|{`FwfQA1`QhrO=#A|$(Ddk z4r(e!BWf)*!B;tO4lk|GYU(cc8!scz&l@%+P84(97###PCVe@YCwV4({V_Wm7|9(`Vp5=L0(K_o<7}U7N_uFWKr$Oqs`L z_qMi`0ex78d+?!WF5m-Zet0?B7x;TKT=?bo!en>mZl;1N3RB-^2+kT3GwKI z{lx#wv<=_LewW{SXX(`tbYeQj0?>fXh*v*OQD=DQRgb|=HAdSsz8A2lF3V zntEOl+!sPKfa?e8;GguSwx`4=;=#%I+4QFdm^PSWVX&_ZSUPPe{J5d*7syo}81RLm ze&jVHbC~Le-$XIaw|pdd3wXY;(o`dUbHz(jKkH|`s>v>;z_ZeXv{X2B8icwiAV7_;hX1(rR1I2 z;@jGv3%ueNzwn1X=LhminhkA?eqM^N&qt4C-b=k~ByB?DUHOP!Bmb{K8+YJ` zIq;`GfiC?EfXCN6wUF;^d&AV9hUBBf)c*LAy#r11&m-R_x0;@CE68xON1aP2PdGL4 zn2T{0k5YZ{lJ9_}LWU*>7FnoCfSCvoCdG_D+A_x!gWn&dbA(k>VDa)1XaB% zNB;$(0lFUYaMlQVjNBwDK6%74L!(BU8brU|83lL3+uNeCT*=gl+Qj@;XcuDtf+40V z5gR`bMeCql{({e-05o@I^gg)xebQhrK7)QS^a*TNzG~>+bwgRt80=qXsNpK^b(W#O z9(3bmd|)uo_u<}oEI-arV$;wO_~-t1Lo3c1O8U-F^#o{iVnj+XdY+iv2aQr-9`}HD z$<9E&Q7yN5{3+iD}#JVbmx)mip-t_27GyL81szb0>KPq@QKhCYhtK4ed(yMRu z$(R&qGJI}N3H&ZDJU~o!R^r~W8ahJ^ZQ7rHy64d$!=n~wJ*r4Nb%x-_6kRYfXgPp3u*!4)J_H`mLLxpbKb)b+l)Qq08wF zUG3sk#pl7v<>K5*mx6kF^gEZKZ`{Lad~pP|sLkXlueiqv zW#L#bGOUglF7@dBKR4@sy(&fDyqJlGX$ObKHZ+_2t~bc5v5mYs^~$S*8@*aU-6vfJ zuik;{2@gCf%kMmG?9t!49?f~>QK_jO&XvN)l6zPK=TQLu{Oct?4sMDZ0f#dTr5bCf z&J;uYBl*2G2DNiT^TBr%{G2KVn1?Sq#e^?EQCot$PjgT6&{)-58misVP?NskcMSYa z%q#(>CxaIaBVKhdsDB%JQ^-&i?3^TSG>*I~n1J!^H26zV;#pnZOZ$fRBPL8E#?Chs z^DueKN3fb5eUCON)WFmM{4#xgVgbII8vls)yP)NUV)K3RM|;^%(4)}(9yLh_@0aze z&jpV0kbC~Mf_5E*^SR#};J(FuuTJdoQbX|SK~AqOo|T|?zZW&fM!&pjPk(jb^29Wh+3nR5?3w+9p;*}FF1b_j2yDTaY=fKz zXWpVQE25=RlZWJCtgtzGOJ(%i6Ir_XFGt{pixd z=We;FWe%kOS5lh@C)Y{}kIjc)ml(w5orW$FyI*qt?Wc)8*ZY-@~oh>B$?8@c&kBxZACyo82my z!lN?r;KyZNeF*T%%;9B!3;cfox|cY27{4l>$I#9u@OW={9bC2t-|e~A15FL3;kBc8 zxt9%I#oghRflpp0M*St4&!I|VH&VD?FE_-Th)SB+I}{eTZHcvG1M`w zSC8I#bmx*s8$Ws!`H(nAz0KL#qtp4}@W0f~%6XKYevDn-tCiTWby`DR3meKyA2guN zCB}QHX?gYg24nAFf7mXMa~*uZ6JwUIJsJwmV(jzkz;UnA#xj(H`^>t5 zoD5!AU!BppUGh9w4_U>SAsDaY zgYQRKdeWKas^LG`$;(nxe<1&yoF9!<9DT#zd)wmsesCJ)Q5&a6_lW6nXj?9FyG(G{ zN#fcubp6rh#O~*Y;?NiO(0A@Xh7Rs#EVZvkquY8I+r~E2(8qJ>W8!tfErz`4f;p+c z-4#=pW|=w_&rphM9^FVlY=FCh_>Nq(Z|fZDb@;NISax=+EyrY=9Fp89pRIVq7)vUP zrXwDer9Khd$j}dB$+cH*4ME@dOQWl}-#G2T>KPCDgjcD#PqT)p!rW($Rro9SGm99# z)k{tSF2dob`&YecaRAH~Cq~cnsCOQZt{!x2`)9ZM!S!R3@;!|_Iyl~~{^wi@KjqT9 ze=e2JszhkGB*RR&CGkf=0(8Yre74JQuabp(6}A;FyWwRYC$Ea8WL{J`+T9Ipgl=j; z?&U66T0(ZQsuoS#b2CK`!D)FztN{?E`#m7I;&WzNZ8+f$5JGs_2 z;$JkM;rEI8omJr2HG{cTa6k^)(FINz{g?O=Xi6U3T&2} z7_tI9+(A#aCKl7)`Sf4Yn1%|{&r|&P)HXQGN&elOID^kd;S2kzyW|~#ehIbI5pJ*T zrJe}Z7f^ez(2Ck5eiBlN@d)(!0P?Y>Z%tJt|7x@cjk=2Xw}JZpF;lNkkOz^&G_3Ab zA}8^Ej7RyN?H*0To*UqiS+j}l@Xq~G*owR+ECypz**z+n6m0+o2Ss|c zq>fkPN*emZeGB_Od5j*fYiisa>e}enpu=8moJ+sKy_Js`3M9X~Fqez`=i3@f1*W6R zOll>Csf$oEy^5}PuEaNnk{czbesq%ju>*CD*Tj-8)Yjm=bnsQNP;5BRqv`P0viaoK z@$o-m(WlSg>91EuG8lS~-f0C#K4tz-9_)Mz-s*0W!_r6J%YgUAZj}pkt718~ZVV!> zjG)d@-=kYo+&XpAr6Aadre;)5e z+Z<><{Acejud3We+hK#9#FP#d(M1gnE$Kw=Fcr<}HrS(q`WF4u{Fq1EX?I?H_jY^k z^QK$X+q+p$BNa#k2jUwC=6F=UA#LL` zxng;=Il`@DH?Zw!w_dzMzaDXE%~KcW2hlcuZ*VyFIEdb~@vW^M^`IR-u-B_I_fH>% zkaH~@NNl=gsPhas8B90H!FWb>ODD)(U)P4?OQ3DiSPJ|?E#o2D;uJXFL5*Pv^#pWP z@gT-i+L&70lDgIa>N;qf8@bT?BhU=F;d(=$Fv>#5W zG95f+_Nqv2j}k@q!3K0;MUT$Lrf<0S6x?&B{)SeEkYg@1lx+>%gMF945xvfORqHjH zW4ghnruW7+HjPy zTlA2heB~jr{yz7#AS2xM7CWc+>fu#z>ju9Q(CVYGWebn8l<=_LA0OxMeQ-|NeI8Xd zJgN-_J2~A7%k9=XIK9&fm%Nu;k5a?KzK3q=>G&1c z%8(e&Duusv@vx6H^IqwXhVb^Rgv7Ue=+CxG92;~a-#I|639d{&SC1M;Pjchq=+2dl zle9$#$*YccJ-S)aqrGd~D*W56J)PXTde*Iwu5QKQJ8u4V5tC^D7?%=fbm?0T#$yJ; z9lKo0KwK#4b8FT@w;n!oYi3K2sulF8+-c$kI&^FSYDk5>8cuB3RmfDLMQEh^rV_@c zZk~d1mqd&yJ~0(@FPypp{Y!1u1IGV{&VEOp)1@#qdUQaCe+K)}pd|`0mjhk=G&wmC zT5vwT^$(s-UIdIT_bBNe`X$Vzy4Rfg5}P@ci(Fcq+O2Bb-v_uM2#s*!J~05z(0Z6# zYc>$~Poe8JqkE|jFNS|VB{p=vJl}bj82*C`o^j5jwuY{Xvy_t_FH$?nK`a9I5xW^z z4X5rG$5gI0j6-ZDc2uT*$9-kvzOGEdkI0v55?h+`xj8k7j~mhJFFhK+hWmhzN^B-} zU3TkB4!4FDqwnIorRgq>Y~@nmHJ2K-cB?cTw5lxq1O6U^_dX#my&msUnbs~1dgIic zpH98qBp}Sj;cy3z@x4Lt!L`O6p3^$u@UEIN#;1jo|r1mI#J@mC{Q8PcN=*%wI2rFGaj}G#`TXd3 zG(a=_ZV;Hv{=`KtOdiyVdLH^@|1@+Xwl3AgtLrnV^P%UGV~&F9v_ z#OTxKE+re`Qo9x|#g$|kH8u(}KR>Cz-O$mliqMW+-!mJ%~Oya2&fZ=6`md zTUDmw2dUf|^_tIcAGd3|^{<9U3Bgj4)F%7SP`d?3OBwH&2QN+qN0s>d1huU+2AYo;bhQooeJ^#B%lK(+a83@{=>+|^ z53WJ;+-O1U&E{3$UUIbI9!>q?rv3*{_i^j@CG0%NrA^>@#wwSl6mscYS*O02bL!Yr zr($(=DXI~^fc+mVcXE!pQ~q5}_NjB}T4|TQ)4msQ_|*$e-HrBv-7du};?lUePJO-# z{_pVk)}ebT9s2S!l=^n4vbJ-`wINjP7<22miN`0QYE{9Z*c%+$*VL({!=2hZ#i@_e zu%VB6+J~I_gH03T2P^Bjv~HM7sUuywyq;Kc)}S>g z&LQ}3Xnyz@eKHg6Iq`~HZI+`M{)a!pli#K=M=LY;c+aWl*z?dur#kL&>JsyC3;oZj z+Vsh=ygX)hsx9L+xrnW!5->&sC&YZ|(hqRo_7!#Ox7hFo@${3EIqEKz2t$kZ_b6uo zx}2QgW=_WMs-kr|QllJ&b_k_@>0u0-x=q|}jJuRF*^|T2n*DGxTI6#NYHA(87B#gs z)Ks32Hq>r_p*++@x?+<6;?9VgU<+-qV<-7wMK^my!BgO;7#bk{3YW&fQI*EJm9w*3 zudx3fbn|iYzSWo9N&qImydYk~C4pth%SuuwBW6;q(w<@X!X~%_J^F>XFseJhi4L7Z zEKUt4&2YjmXv*M=;M8uwKuhRy&=l(!!;A;QLEAhw9aGXiGtCjP1w4$Hr5Ks`ha(N8X`oO`OVrKg=lT zQf)ZeF@*P3!Z*%<+YBz+NwAyqyG|9^D0Gcx;Ob4dG;>)yu%#w@@K^KW^i5- zkGi?2v9&^v5GT7vx>bR3!`k#=3AB}ajfZn0s1Y6Y=qq|@a}>2rwB}krzn{*nPT;<2 zf0ufJ<%0*XqX#~j?o@SbkiWT8P18A*Ee5&}9!b2_q2vb~%(HfA3Trg7&<_L4xit2) zQ)9ovH|?Ez)54+7Z5>)X)1fZ2oa&qs-_M5DI7f`acdry6x1*l=n0nv&?2N@x(`kUl zFN?-_gT9Fy3(ZfS-_)S4g#OqF|CY)^?W-^~oDz&}=B2KPPN};V-48#cpXt$$yL>;` zZ#xt{+LT&fVYhn4a;xq`my%*{cU-tOpYIozZR9<78|x>uymNB%cp z6B@TUIo?<1F4HfO_4p0?CKvv;nEM*q+@%4;r*Js8$UU^kuTcE~cR}#Rqzq1_xf!ar zM?$stU#Q|%aj5z}hhofgDCAG5X2*AMmWo3cXFJvXqf@Qm`6La96JZX`yy?&yG=2Ro zPHhCcpACmj=VmB0x6N-&C7k}R>hP!W5%$Q6D1TMz9lyDpT)Xp@^Vt%u zcR~0i@qS`3<00t25ku%tyrSaAVl>c)P6vwuXsA$-TulQOfgLO7ht+Ecc@CDmN)Gm? z0t-Hcbc;0^+i6S3z>qv6LON0{r1~j{ad$|ubA>g4`6|1PQ&YjGDEjhCcEiVlwpzTZyDe5Q9})nql^(KbB4Wq3De+=Ae3 zwpffA-Ngq1e}6q;eET~54PKEKPIo;Gu}^;Q0b3o3V>DnBd}dU%wu7(rQbucip=iB{ zidIYkY8%gUmWpPM3o#GR-o)#>sR^Mj@NKluj3?20l#IGt8UL$MjA~YoVZTW<{93f= zq!`6U&qsg7U*`ATk;ehJRMR|o4|pUWYsF|8f5!o1vXVdZQpKpm5q{erty}Qm`)$d` zCVW5jCr?>;a^;AOHNY2e{tIis$`lHz%=(bBrVML4+$7Dgpf2YKYDaV8lGr@hD5T_! zBlk|m`)>tRyg*2)SubYF&io4M$Na6#nd`)wnV}&);qO5s!ph6{AFWHjO%5ttC#Z^5 zgPPEqM=<}&-$51r8ql8ML5%_XC-a>HGlf(hjj-TDNVV^Uv?Ck1MIAUF4$D6m&buef z8so51qpL2YrS9ZGqmT>z;6$;hW!H!y@4xT@-m`#MYOp@6$gD8?tCOSi;7(h@{}*HJ z$?;}zg0giY>hvcj4pW=aJn7&dnJ40BU5M7k*u;HNyrB+gQ-6%c?ut?W-*{0e@iG#O z(U-=w^&NP~#IQEEMzb^x%eODA3&r65@U4Y!hy!wG2b`m08NB=w_@TKN%gs-{$VQyp zj+Unw_&ACACcoe)U`hSn;5OVZx^!4YVuLM3L)vE!=_DAQzI8|&Uc(!=1+|uWT-_!G zmA7+{IU7OcYRQ@nUMuupP+gA&Rgm=?Pg%#5v|vcHz>~9F|EUsiqj}UAICsE+KD&ob zs!v{C!;?u2pV`3}=0ZF|JkyM27*EK|3^~`ey}voSK)qEjfT^GM5;f zof{A50ot3m+E2Uvw*gF`p1#SA{s8NnBxekW=W9z4`{D>UhEo%A(jOW6<3aw2)`20> zO5=^zgoEho&-_NU7)8j5i?na4L--x`Xf<$fF66%FFkTHS(MR1YgW zGNe>s{Ns8d<*N}=ixojNVNK-NSV3w?P>t`??)gK?^&zMR+k@(}l6iDnm{a#Ys2a`? z`>3;SvN>48k*0r0oya2#{TKIhNE@jiGfD@QVP8OHP6zZZ4RxhxP_q*T)tB`)Z3EOD z`mDj*pfc5@PAsRc_Xz1w>X6nC;y2015`E!Tlc@#E!+Nw69){kifxobbIB)fg7{@z( z!L{UsA1y^69z-*w84B+N_vV)k>u}Mq29_ijxz=~YSj;r?{t9^%AOEBx`hH|Y8#jU3 z|3wt81y+SQ;6qucoq3AW&fOTR0k?a@PlwXy&)VUW;l*_A0#=iswR`ZpaJ`-6TbB!A z)x(=g_8RY&{u!MBzy2GT_aRyhsl%(OGmWZ&f5c(zsd&V2m+R#At5Wd#r(FLvG}5k+ zy3^igpZHlX8C1g4r9?*g+K~0?) z)J6KN4|*#XT=m@GuvTP`C_CD0LV4z4z|Bm5&MzuPpY{;HVEW4OW0^z7_{PsMs;~;K z2Zx^CA8yeUPK{=t-5m|n8U6=1PeR@-gy)aIlinQzhwMySb-@3&QuDy_$8euSVEZZR z>Z2bK{di7|{)r~bL5$KiMZQKf`Zc`t2{q{vdXvZ9zre4*s2c(k%;>Xa;PwUDpZt18 zJ-&x_j=@{li-&rO_Rn0B-(MQ7`s9`IPrW4%{&3EboL3s&KZ^W*w+L;unzmmOtuE7e zZ~JJK=6uF(B=-BEapBT`b!4vF5n_J{oRa!lC0$4(=Lgla1vPYJQ0a-yN5t@-`E#>3 z1Z9G+{O-lNnW5nL^q}T_45~7@^DRzD?{kNAv_3V0xz^3_HWPF~S1b=I-;IDab_}R| z;(+pI3TWYHzfR8g>%;v3eC)P z98SzSiM6p|%?8sPi^6INu5SW68-T-W(1Y8!o`)rPUm~=_^AP*IaCeUgJb}mFE4aQ# z)D`g6Glq4Y=lDEzBvmbH2=TmbUqs8|<6YE?)(20t;v9%p(O>`bP98boD{HB%wEeGH zc#BoYM?8X^=$vnR!zy1eqIsz!D!iMyQz80o1AQ@`n5Y!3av6!YZ1{a2@pPv}lod@f z@jIG+Wmu`Ig|+%gNDW4ZRHAf9&M#c|R@%EzP)Qp3^=f25{mur|fjNwG1_$&YcR=6% z@oU~_zdBj{YCgfQZMXgEbCUV%B?HPeH=w!$sRi`csHl)WT@J~+F|63|y&c5YM{qjM ziD-RF9ixO`=$h}$iNSLmkDmNii1BRnWPQe@uH<6O5D&}~cZ{+phIhmLj`QAyH)7QF zMYMK;t4oQmyEBO~uI&u*{<;GApAK%1t~#28{QewKp|jLC>S3?F5iMDYH!>3)jxRNg z9JqfvqIYu`*O-DnpH7}Ej%dXJG+SE6x;fA7LAr?!U}!wzdmE#d`^aGZST-Z{*@w5bj7 zto#MQ&xF(lcvEN@Jj%d%R}blG2I>)7yX^F!X8D48$hEwquDIfaHG#U)>K&QL=U*MQa@Gg5rxUT_Y8L=bkcoZ*~`m`_;eCKFLC*bohY3KASgRE%| zs+T38%F9@jk;1RMk9^#Z%CB7){Hpntwb~2(cu;;_PUF{(WW;?+zfQ59BX=pky2tYC zXdb^l4GZW|8~TqnOh+wmUzIwEE}4BXqK3ri=qbd_A6x}XpTL(NMU7FA_)o=ncl$fc zUm49DuB^u7FpSi}sGyC89>?wrlnA7twNg z2SjvbZA9&;6R+S&J^x`$X=}6w%|$OPh}M*~(JH$IjqL`b!1MCN{cmz??kv79Cu4<8 z;Wl8`xL%CEQHK^K;~c-^4IHJ9LU>O(6Gbd z9-TvqUl~mRr%VLrsX0C<*O(v}L=3Su?Bwf!wx!|`KJyB0Uz=Pow}r<~3aZ15poXAv zduI&l?2&*lbQQmLKvh|Ld8oHfeUAH-`GZeE)*vU36HxYJ0q*}B)WH$-*+%kcA^y;9 zbjP=VF3bw3^aOH=`Pr>shS-Y?+(Z}L&Pohs3@dY7Y5{AMJ8yc!lLVa=iaJ48n`YEMKp;XzAlFlTcD zT=6>b{~az5{>C<(6ze2t_h(?=;%jINu&#V1 zYArcdnVMy*gO=s<%i(xOI)OD{#WmKS=1tBxNb7)F)%L0DJ+BTW@Ns`!pNe<$Y27lP zDi-(SIs3IRuU~^6_>|zNPya0NDQPpGdLHnq$ylG#&A+Rrh(<9@pMd2BRY=HoEe@qfS8|p0xw`oMCCFu z{?9qQ$sf^{ws_ZT@ZRvH%MOjO_Xh1u_+6HE z9oC&1(-Q7jI$FKZ7J1G`^qRUM3;AWh^IZmZUFWy>?o4o;jb^+|zCTG0ygxM75x7F- zk?@0JXh~w{!QGIyftAHgA)RkPf8>RK=7+nNhtq?@@#vqy++ z@tDCJ)Ffg)7jgS73SXyQP`)lf{R8%tY8uq0Qv44*yP2LGA?DgmrGJM6^!cWr^&~!h zclcCorcW6!`B*dK*Tx@y{X3iW$N#Y|jnAh-BPaS8P#<{il79or96zLlg+e+bFnwZ3 z8PUm!I39EEnel0x-weutUVn4|PV5e-1hr*-j(`qjgKrfIC>8bR2056N_}I6CbK%_c zG4|#Q!Mot@z2GBVM-eAGBTDg|KC6i*fe!ev60T!rJZ%noVqQqg>WA3>HK-3f-lOfN zpv^D5L;G&WkA;gSNFA+g2kBSpL7GnBf7}T3HmOak9i~7{W;MMpU zUe<_ub+fHc!%F&9u1!D_z>UAblKJ%AQrgSjETkp$YtuX-RoxI$>28dboQGS4!FT+W z{CVK^_=wT3@DR~AL)YVXjl<9E$sDf|F)D&5%e-5%h2DuI_xmIRgD8)UzK z;)vL`z(@LSqWz8sRc!tL;(s7Dx*hL5b%*%B9Mn$!4tdZ36Y(FYxBnao>KBI>{$6M? zfAjy(eE!$Wp#Dt-w^gvF6C9Vqd7?F>qanUyF|V72M}nE7oE< zmj$$PTR>4Mz;P>HEPXn>E3wxssKLSmDUUuO=JWmx=-M%A44(vE3x3GNlG$iJe=C< zi0JZL>S8Xm4A;FP7XDOneDxOS9el?u6~e5e3@cF=V&D)SJJ_?@O8Zk!wwz^*wkzJ_ zIlM}|fih?CjvL_h!sYj*BtJ9wWd`p9HZNmaUYYWH)g`@`bwOS|&h2G=znAsAUR~Sk z)vWnm)tTj0k!4=Z<1uSPuP#;Ne{;S19?z%#S$)cO)2D6^{W?H9|0)4~WW%Sc0+%d= z9|X_LNqb$G98`bsFCHIVKxU;J3OO`~<_O7fvT`ldggiwzI*KnBJ@;NI8HpkcO0 zYY9B$&|b!D_y2E>OQUYlDoovL9S2RnkeCNMeAnUj-xwp>4i~1q&ZG<}9r`N~`H;LS znvC(LZBy|o&~DAfhqZiCSX0Q8ifE|6!IB>#+Hx+j8V~&MAHnA!u0P{v{~OU$@-6OV z>c+G`wH9pwwoi^r?mP}_@N4`H#y%cB3+uoW;(Tpb!6wu`aL2M5U#E9S6ElKcFY#km z2lYOhzJSjg+67g=0vMhts0Cnenpd>lr-1s?W;^=?^_KS~7#CFR*+Es=8q}@#qnibFo_E`?@*8+^vgw4i5`;+vj{3h5Q?(VbX*d^ezhp@5!) z$-P*QJnE-km6pOu#sqYwZ$RJ7PcJt6bv{1$otnK`&hS_{sATZ0L)4jV@z5f7 z*ry^8&@BZN`o$W~W`4!*>Qm=&UJXd()yM}P)?Ik?puJb+Pk43lf>*nbc$K%6PjMId zbb5$iS@-+(_<>)pfdTz{A*c%WkiOD4y*c)d4y!MJX9o*5=4X$vk@!{{gEH=;p1tK< z`iJD(k6wq*Y@~j~h2xxQfqn*q7XA*a*g?jyc>VWous0w4p0>=lHlTmV&+=P{(~3Sd zC-!$Q_G)Z%uaaf(>cYPs4ZP@K-(rup%=hTz4v)V5?bYFYUY$wh)#RdHIof&IPs6Jg z7O(!T0QUFt>g^b>rl0h3j~Jg8p_w~0qCL^f>)x@C0rfXy+@P}7!ygLy^$0yRsC7`) z&)|a*Pb-fT%XnN-_=e~HBj?exYvFxa@mBJne_FVid)*J*ZH=yJAFZ*SnK#guylD`v zWd)f7M(lS($DT)1UXMZl!#m~-3&{_s>skyR)*UW-Bgi~k^!-|V!fauUD;d_m3BoFy zh`Pz+{`Bx!c3-MDT9UW_k?RwxXo$^$Rz4cGYwRwYDtHn&vC=A$ritIB@C$kZom3X@~b%i8+*d1`iFeVTgaz|J;B6p z9&Ow0(azBxEpO`4sFEJ->Fv?o7ak4W;?ct?{6CdXtrq(5IM|*2|bhwyDNvC^cp6gMgB_4g>=+Vbb9&JkM)yElLmD%FePCt6V>Q%#lm%Z5F zLG10ZbUnEp6A&8+sCs>LR|B8oZKZxZ_9$%%ALDKC%(m=@kdCpyENJ~j`1k0`@=fqs z&@G=Pz&%#sQNph?;E7G01J5D;I;}^~9D%cN7*@i5-t!H|9h*jH*yNKc86jXci?KG#K8l?jp~j4K^~ z2R~`S*wQ|7;Ts$?K6wB~+6{L~UXZ*^isrb9_h1R@7xnDRbM|Q%2bTwfP4LS!{N@9A zpu1Z@ufWG!x7h3IgkR75vgbp8zqXI`>xauv9q?=RR=*NV_RF)>ul$Sr>ddj|6MfY< zppz2=DhN*lVad)P0|FM5Fa~ur~{Fy=yx$dYsq(@@wKZ zpXM&{|DP}NUwuFK-0;Z-e@cW-G*R>CqXk>}Jo>QJqn}GXs$%x2LvxQxKXr3IMUNV{ z@#y#$w+cLQ>uM~oyuZNDAwJ!~GpSY@FR?n_;c9-ThhIe-f(5k#8s0vj?n?toaV?-? z@Q4vDf+`1p7)P64x))IDl=xuP;EiDE^k~E(E7PNpVi+52y^GJnV}|T!t$Q!9D_%h9sCNnP;SIb+KRx#8(SDy6 zpqrY*0cOL!E5H}NW%sF9FP}=!A%=*fRY!cfdc&t0aOMGFzvf=@D@l63YcTk@4&2~+ zP7@C|D+P6fnv%8yT*?k7SQk{6??J|JsC7r#M{YKADjdWF{2^s4-cRi0I2q7i^vR`y z@bqhbeZ#ZP6g$8^%i#GnpC%F4-}3pC4=q zCQ$p^dX)#x(CD6t<)S`lj=0 z`6sU$5R>*Ae)YwN%GBAfH+}pXvdpg1hf;JbYG?>aLu2-psT@w5A2y_Ya5V* z_m~p~lp#ex$$Fw|ZU%Im+`bMko6ru=>b_qEh_hTf$+Sa&x3d zEvQqj@g8Lv<QVev9_GEGA@GN?z%754puO6-*{{l}djp(0Q_-bD@7yXE?PXs~ zpIV}`a+m_zOJCk*yt4a)psEd^-=+pt={CCWB)D7z-}ziXo!L9;DAzwET~G;!hIE?x zo-K@L{xzgE>%)o#-%bH0$Eh7r!R8S~@O1py(HP{+pK-gQ>GAgx!Xe?W6T#3XdxJWC z4NiOs-i?MlNPXShAJ1<=P?vc9G3R0iPxH43X*?cBjfElI-^4h{e&(g^Wp5rh{prCW zJ^IOfnmX_bJjOw>s5fAG0)g#^eHw*tumNt+J+4o8x#l&~yt*9a)yWGUnW(qzmV4A> znumFNUUabK^Vj`FHT#H(iayoz-5sSPn04?NjC2(R)mJ~Lxj*~$d8qG>=gJOQo) zUlHA~4X-CnKiaP?S~nX!`4;1o+o{2LE%T@$=>V{Zv4IRXk(8Lzm>d*^6BMwIDLPwmSytl*+{Prp7!WeKaZMK_9*d3 zw~9Y;vF6atel{K@3zG}?T{3NSsnG!!V}34;kLOaHVlE9k=u#x3N6UJU13i2y@-M%I zc4&bf2-^G_KHjgFYiYv+cqzU7dUxKZ-(P*&{TREnj>lAoSrS)j~I{ZJW56{}G;dQ;NVe;rb9A{o_kK%F;Pr&u1vEceI-AZ%Z z&HeP;>~TPj=5g!oHkUe1aH&Fnmy8wMs%LYn5J%41Ze>gE)+dWgTa8Y2+vL)e4=ycT z?B-s;Zbg6g=;bhi$;P&_Fm*sJ@|0CiXIgm=F#NL9v!LcQH8Kaw|~>F``t?2 z&8>Tz+*+K|qZ(s9nnqpSas_?X(T9KI(-``ETx_%^oMjc<S}4U*ii zrq`)M&3ufT;KK~{>RvOiT6RXOg5mkrfE63Ox;n{={`IO{IdY-~^~%D&lJM^jwa5=% zA9xNfGR&(R@SH5C&?M0wt*Qlwr>)Cga_iJax0({S6FL8zMz`F5yH%HS>qqXU8t+os zO5|@W7whD>o(e9lc;(XD1oY24mo`jw>GE`^`qp*oWJ8yBU3BT6ihKvTb$&hlU&5>0 z$I;N&TzYlPp($pYVkX(t@`6KWkMTVgx6kB7HiuNfLpLSp&tQR-dIpgu81bOdkbk8jiESXgB)GanD{>oC69 z8Z+a314Ft_ZA_mapjy<<*Co*AEf|wQdnQ1q%z_gfUpKSX@d*2BP{vJbslvIwtckeB-*lW%x?-HUp4WUN=k-S~m2 z@jLE&m_O>#EAVnBF_W+**Hpl*?6+KcVRLEuSEro&>`L>|q9Z>os_@7n(|U{knPgFp zuU564<50K6F3rE}(vl%=_N{m84K-vixLks3ys(>dpdB+D;P+b+_cuIR65~;|A|BOQ zh^9E?Vb3J5ru_$&z^k7&f`9XwhabI4e%UKCd7F5)S4W$0B*4di<(*rYU~pPD_p@+m@oJYg8eE!N%cbjaTx#A43@_)B zE9g>_4lc#7;bPBD7xx8lC`(!gm}yt9GA{0iL4Dic)(g&aI9#dCK98b3E=BtsN`J?y zU;V9`IohV}*X>$F?s!cueNE?9kv?uU+3D7!${w{wW2A;7&5L+c9KBqwm{&brUcKDq zRlL^J$^?Er-Q?GQr30FNFreTl`~ozdu~b+GhcY(>Uj8ZwPshuw>%@;?zE#m*A?Y#x zniD>d9^W@P%*xNGn9 zaFBR-4~*4JKSjTj4^O>54SnKMVdA~A*RL}1@e~XB74I@yV;g=0dcsr-4)q$H@zkgD zD}87+pDs~XrjEn!?&{Ss;%WSOkA{KEAIgAR)TUJAY&g@)n`ZRE9=uMX_qulEA7Ok1eqn!NK4J$R}Ul(g?Tw4F!rIqmTSObZZgy73W z4|~PZ*64`8sYyq2dv*H(+#HX|3dYBR&%bMq4lnG{W@^>G)E=Epf;K0v4xZqrJgheOe^Tt{wpGWCacyu%+btH{L-d$GpK4Ou*qeV43 zSh&A{Rr{yf8K-b+KpXlVUf46PTVD9oBKrREcb8(ay47w42R!+U!K)eI-qI63_Ft#w zS0q;Pv#*^GYG^2=AsO(Di-&cOI`F$1K4v}qOUAqZAumd#V~!d6`7(awnDxw=EWmha zdAPs|zmlSz1RqE?4S)7H93H+LyI4R)@nGICucO#i<_k<9hN!K_;Nz$9?-FkE${Hje zJHd%-c{Q4tY(K-J0*PqrU2e5UAAL{h*771Ql}X@ItpA+)=b=--E;E61#H~xR6{VdQBs!@W(H>}yVSHVm_ofAU&F0}@anDL%h?(T3rsLUd%KF%*CXK65VUDfHoGd{wd=@+Ns6KxPGvB-#;#8PU6bMD8^E=+={~#1JvwoVZCp)2*U*JSdJM{op(u+}so1trh9rS`E$@ z0Iy50gOBsQN4+k50vGFzTnZ591Jb#e|LN4-3r@}3?Ud(lrxKsAsm4u*-p_DoK|h;5 zdhP1g#Gy_X9r|^~shflG-!JCP7iLsCEjL}cRA4jh?$9L^f4R3q{^L@QR zvB{6NPG_tP4=rVWJd&$;3GRTJp=GzE!;36{hF^$JhJL#C)1#^fJ<5wukf8)I0}m)w zm|99b@3G6pTuPS?t)afB=Gu)eC8hszrKBHkIk@+cL!-YrxEGH@Z=N}{#p6)M4R+PY zWY_4=HhFK`RoLQCoc9iWmQx>NoT_-$snSVYdPnW;!gsekP2B|-R^X$hndsJYa4ju5 z!T`^V70auI#PjshUfn9_RXuWY2{q%<3%3ry1+vyhYgO^Geht117anB6&xQ*pNegbG zJMt%V>vvw4UIyW`y`0=z*rD#5Y~4Xk+NR-MRa)!hFq z3g@?~cn_;KwX$maD~nE^w#YouqV&})x_RBK?qkhb)Yz;nWzE{rk32YLW*#}8TWHm^ zXI7;yW7CBrHYKTRSJWB13{eivi+1SfFNeMlM`ONovhN)_a}qTNo*e+Qll64VA9SnO zY`5;CLB0~>-+Q|?q@i0&s8REB67TStdtm9sCoXsrTt0(~JxyGC*xjZ5)oI5ZaC7+0 zn)6O=3ORML7Wnkjq0WySjB7Z!@2f-Y=)WHHTZ)yO&oR5s_-eePL`g zKVv+?uW4gX zO_x&Vq-{q!_42YqYkD{|W1T}6!1B{cowCOv|5w;mb)j8*;EP+Gv{MSFhEg|o5bujd za=;I(f_?3uI+Q5QpV)J11b$h?h*L$5In{wWoFt1&HClp8F6zPtmy-W-={fB@je48( zm0N47!X3MMSmWc71^j9Kf!KgcS`Wc%rrRnOaTpX%3_BqFfrX z%b_wa?HW?iu8#(rc3ie9S#_%#ezEAkTNaHzXVG#ntl9H0)>21;Adf-}D zi|!dM8aJBfaGe4cixM@ms8ME%#(pwu$Q`rR$F^uuZa&}LqNebq=C!F8@2tx0vuV_C zn>-cl`fH?JuP@qFy{SWOjytrG_PYu0c3@r82+dvauOYdbaJ z*jN0Tmo62BFNIdRbY?2K46nG?#HGE|(Ywo?YKr!>(55%Y@5gbS+%Ex4q7Rnk;o7&^ zSzl*Yzr}W?^4T>E9n<5vT`h0gRXp0N`}3{Z^S4cLYuL2Am`&x2+H}33O?A856pjt| z8|6?n`p5*=9XyBgiy?MP+qp-ZRcq#$6|P`Xc~?eT5!0+S|T4IyJDS2n_L(9BKojy85C{==*-A?^$IW{j*f zzURk)9`c@5_=G9oN2~E1{W+NPgf@RkZLNey_7OcAT;)-%lz2KtJxXD4ss@;GWfIu^ z!LG+G?Xo7ftK9>e;(fL0T}K-=&!(jtZ2HlTc8crJv_arYVTV#h9NI$BXU22&k+PQNVW^(=012t4Xs$f;i4oHFfq%111uX^mD`Ph0YTmrAm`vR>64qi)!#}^MCg_f(0?pV76Tw85dy4yCLY-`i}lU6Mr zX4QpCR#i=7RpVGzRe;w#hu5TfXwlhg79BWYQT-hj<%;lF*P?BCE!tcJZj-^H@mVce zoz%j<4i;tM82QDl-zUwge$=cZ@6DQB)}nli(Z!kQ?}=75c~3oQYLjb%O>=JAbhA15 zif{DwfL-a|f~!>=IzIuu5C<+Y3~qGSsjXVdQewKDNK z+G&?l7pj3F)Z6#-9okI2O<%{MVXy2O;NW_%+4Q@fP5H9gWK3_`%J0*`99|V_jeV z_048eJ=*MEW}7<6racjxA}?*aTg$GDL+zTj47^F{(CqrecV5~n5k5jPhtgzls4%(F zx{O2DYC3d16YbH#p-jCT8oZhJesFN#L8qpyr-q;{uC#&=n5gB%^E$AnA~+F_xOAL4 zv7fpbY=-Wx1cxk%o`PH6E9_FQJx;ya>(B?{;lv}m9_+B|a2mUY!*wphV;+>Zs(dah zb3?3p^V6dBzb%^emsM$r11p?oNN%ePDXiLg)1oinewS<(8Sk34eY08Pw-e*1&B}Ar ztkRdwI=;cIA~9wqwZMIB9P`X-_^(;hLKe-9ZBX6&1&#cI5fq zdRE2zi#(}m)AIY^xyh;nv#n~d*ro~8t3i_;S~81Te~nuH(XJ*r=-<^=wItUwoHwb{ zA*1$gG-%P|(fX^}Xcb63n!R;L>t|DgI@U6(!9|m_$fE2`Y+A9vuJLHDXYn2SNshKC zXII{t#aa$jF^>rHjq#Sc|CkC`V1@p1+gq{^A?up@Cj42+#Gk;lw zu_U-k^B?%@XdM@tCucRc`s07iF5uC)DIQI_<?IMBI+c=2ScCc(-ME6PMAb&!~?#oVvb`exKr0wXsf>oa{+&sf|^^ldTSIPvg+)7IsysW7BQ=|B}_J1*4;K{<`9_KBi<}qVT)FFvuMW{ix%@e@vd9+_YaGH6t}8cJFD9NV^!yy zRwYI!zncM%{$XPu6uV|w>^h2%l&dAVklCrLtDLF}N8fSBp-PMF+Gn?G0oP=u9WxBD zD-NHXOnU)E8H_#?aiStcX#X--vjIkxO_q53W!m4!F;eti*MBdpnt(;BO zx?ANwYt>)GN780!vMl(9_$hTZf_(!#%2$uE`AN)GWM1~&f_@EUoXqL>%gDIlb9@i` zO0Rt2elqmKwEJM)4>ZjJ_+Ku@XZqRotDZys$=k2^4e5xBCwL9n%DeEE!OdQ9icU^~igX?$yv9m|GU6&5obnXD2 z$u=8%50DRFTf{?uj6g#Tv*}uUo6=XYX&rSna~qp{18izdt~@43nw-TG8DiHGYD!)B zaZh}bO!#i|yP+3OFsAYwJcA>DLNnikFBgH!d;uq7pLgiM3u?<7hw7odHyi^`Ry)|! z&Y{ZiiF&u}Dow7nPHI;ha}dNRea)DVdYf`hSnzTEgK@Uwvm0W99)rvOO2;foJ z97;A9Pj|dk`Ln@^65#{Qu`*U=)uDb|d%&zGRZQxU(5L~=Mk~daQBti@>@zY_{w*Wa zbNC2_zmL%47bA7M!)SDiLH!q-lpgFz_{O5oi>ykN)~31CnLi%#`ITnPoCeOI$DZRy zY#wD-3&tF7!9hHr``rWSnm+hLf9GoJ?JXQD`K2+s{O*6=aGT=^= zfi~srgr7*Q>}uMY^P6vDPXoK&zzyrbi)ZuQ z*YO-0j<;)G*sgIA>clL&+McwthmS+qIsdcpr%&*wnsA(Z6&-4o9UckyeY2hG4A`|Z z3cf@AX}tq3>*ai!<7X7Y?;#J~#4~=$O*}oXBKG~|L)P~kQt?E~w`~VY= z$DK`*|(J7-ATsP|6XQN7FHfeH0lalyNs&v$(bZN<>zGm*r!4coWTsn*P&#-9I8H*l2 zv*rF4S+Lf@V7`(JK{bM<7Q~$zt_AIw6EBtsD ze#-=E+Dy2^_lQ+gxY;032_eZsA z#4@YqU4YkSvT4yEwAd<}x;{d?79@s=xBV9Q7aStW;84jL#1(bp&`tCzK0@8;con=} zhCKMy9W4OA+>ejf0Dt&GZQ?&2V?LkYwfDgb>gTZ2HcjMl+(w&DuRs^03-+1qn$*^= z6LV}@JI$(|W5^3Qe>7b8(mTEv-dlI9Lj#EEL2%*i)WiDJgjVqODR}YE5`gJk+nGPF zb%2xd{~s>9K9L)9-F9^*7YFvYYejdwd}9B<*mzRsZ2AoUjX#9zZ3H(X7vCneY2!<) zUY?^}!2cSw%L4q*3oiW6URJ%WO zk=3jVc%H6w;Q1|+q86I8rMF3;TqaexZB+l6M*TC~s1eDyxkbf0G0w2oqR!yu`*HA) z|EwyD?uz>_9O{%+1y)$Kw1ripiP?_ut@imWDwx=!^V!k3aGadfD0>-;HdLm*mBQzt zu9ZEE&gYsG*QE95@NEtoRVKDcyMB(=@FFI?$zfF9X(mMm8nq!FdC&^X-wBUtiq1c5 z*1m)m&ESZghcOY3{N!8azsR?H=$|)cnZSt&11zcr?`uw8^?qlOhu=(tE;_`yEQW)n zaKRs6m{swGMRUl5;Cy&xGYjhxsK5KItfR514RJDnc*+SU&Ev4@(|W5OpJz;g7|%mH zs;nd=2x?KW$*uHsZcf1^O_dRj%jc{}*yTuT>xLufI~~M_i)MfAKxVZ5rPN z?3im)>@POfUBf%C*tP40UH?{dXf9f63wU3doGZ?lW|yM)n~5FjwcD;2?Rj4TyH5SI zX()Nr8SY<*#}7x*c1PekyTJJ6HeDwEqBc{Tk5i{7+tiPG^qLqvLQQJb1g=xsuDg|q zWnwm_I$m>8yV@tlZ+O6W?!%`fPctvGX*zXd-(EZ%VmdwfR6mwoBmT0hHXNsX9C+_{ zo6fxA^^5RI@Nhrvwx_pE?W)?el{RwIUMqEmIO>|;#Y*uz}_Ri#((vejn2;ur|- zH@e1{#0RrdpEYZB68zgnW<~HSi;p*JKiq99IrfwsSy#iX{_r--U1Br6S-xZ@ohW70 z)M$hH-ZAKF7o)0^&!#g5=D-?tf%m^EZ`Pz{W=))LQqOs2)oaJ|2WAbbVNoG`;s!oE zWIrCV%c3hW7JY1O(L`#G0o{GOtyv3ym^AN%Nmo*vm55wezLax$M>{?>X-Rjpc9Z*? z$&(=y$gTSp)&nwd$Nto~bokFHX$vspF1c7RjYS#x z-?VBLU1-X0ccXSu({@hheY?q3@^T(raTERDK4Rq_!B%k-Rz=5yGo-h%rv|Z|)23qN zVIH2(Nl7dxwkb976pQCm(h!$9Y#Lb#?OWca-o*ABa5e#)CT=^pPAi*AH^)b=MQm0h z9?RNvv4V}Ylr}9OE^{@;H|@@E47RBe7+tLwwV@+*gPd%{>o#iIHu!E|UN6nDtq*)= zkWEKN*(8@uWrLgt9H3mprhmtxtBCm_Ja^k|isrrHW;Sgp$9H9fKa=m3pMd$tt?IhQ zs*4`0s<#AVz=cGgEodW)*3P7j23s_u3Ot8)EJweL2k*zNH!Ih4vxd6OsxXN0u9ox< zeEv={vsOMdso+MF(%Ma0P~W8A>ESkSjmmY@sL2bBTIn;Y=?J5acQooqb)!1xHEJ5Z z;NkZM6~H4eecPbWb%P$=go{5hXxB%B3@Q0MIkBU+Q8%a)L!Xm7)lB+sGb!~}lPVG; z1yhg{6^IeILseoq`wZ~&AG6ZVCZ6ElXripc+CcVyL)_n4$9M@5iKA6yxwnsZ1v2&hikayIJc~j8t0ElRS(qN`xc?4kJoV9MM47S*KQH@Rz8{+;+a z|Cn{j4DQnx`OBHPH=0?;UYV5qph?N5n$)1TNf*kS)B?V{7}e~BLA5R$v}6yy;8MKuDa3%opgVmGs@L40>{am)OBpn-oI#1|7?icU z0S#wR{!Ipzcx2Ey@?vEbBkSIcdQL30n`2bH-RRe+M)l1BZ)!%|4MTU3i)Y|cNB=SD zKJyULz+1i&s~@hI^n;obCZ@OCgS&r3i=?E!ph3bp%{uv?NzpfWeWgk7gC@P;+KSiY z?>r{<0LAZlU{ulj;6GYs!aHhM65h|XCnVnY3^u9QR-@+k#S7(nOOwZE&oK^+7I?7D zpbxQ)?3uzfB{a&%dm3{MpS?yrPjt~)qb~ks(vu!0_ER>g{dbe5dkbMR?UOAZ7?Y%8ma}?QtXXM8L7q5vB-(vcn{Qfwc@qk zNzD3>>+C~6{wwMbys%+=YGNNV_tgVSz>&Yek^AIG>&<4(IYynt@9Xo97>JKv$!yV@ z5*9Qc@!!!R*GTFywXO1Ui(VbVBcx7^`f1Szc&TsrR>k6Yu-2-KE3Jw_r`qA_U-04H z!PkEeWsIgPb&KC%Ctl_T;pM;`bEL7do*C}R`8+>B?#{;FH(NBQ13Ws4v8h}Z-Qao_ zfN_N`;{&1x4{*)9$AG0H&5EJD4_3q5rwGONpb`sOliy~U*X6HU}Ap4WrtWHM>c zYjEw5QP;r5-e#kI!1G5{H0nhba37p6_0XVSCk^zKLCatW#jLk9MI zG^k~DgLV@0!-}IJ3mY_)$2%1bs*aXS$9u*yrZkp3c`z9+vdW+z`wgu3GwAmxgGMAX zs!ATCT32A+K?5WAtv7O?6gZaEsG4JpIsooA+h^3FE8y!BqulR}?5hXn62EC*qD5{R z*^8R7E8Y`#3*WWKsF8dwVle7^ck->NQH!hcnOyLn#N-{nS@$V*iaZ{8obx*+`u<%KVMmLCze=4M(hMQh)Tx z#a`%>Q6?4jm{ctW?M+`3W-E7e*=G;fE;X9Tx|CrjIkNG&+oqWC@e6blm z2Hde2d~o77wB&U-`*yQpQA=C6z;Lc*a0|00S3zH*HJfI@*N=6_XJQm@=oh&=hx2N69&SdQ z7XiyVgW<2p!TIyh0#gjKMyP4zW?-a2Ny*daT@6~>&Y&Ev401O!s5VFUmIfstkE?Yv zsKF3&-D1$kpg}|C7*ur)zs2|NykcO#c7xJzJtJwS%2DKNM|c+;=`s13yRMOaIjD8$ zs6u^=x;)CL(*dKp{A1Ma6+G_4!@9~N+_Q5c6Z0BOT3L=7*2JW#swnt9ART9h21Ml6WJ+s5CUfz~TX4n%cFCk-G@Mu3Yp z_!+!v+j#WUH0r}#d=R)-skQhc@P-Wss4FLU{UWd3!7F)URx{?xT!>{+okZ}c6pV)x zpQSSr*VGkrR=8IdJPsZUaGXQW_|oDF!^0~jv#2ef$rqbEBAz$ArcOOH>*FP``>h<#5%lXiknj+C??IZ*B^x|KY5 zeA}p==fSf>Ms3<=)bKS%bq9Y_O~>~fOOE)^l;HB-;YOwJNBng)s#sevx-opeHawp` zA6(I>fu)I4;&XIio)e#K^79@rzBh5Y0$=8EcH%UPQFDp!o@vOdWaJ!ib1%M8r^t)O z#PF-%_>km@4tK$LawN-RgTA9(=J5ZkJf0$-bMUzM0XfV2*Ye&3 z99cQyb2Q@fL-^kyzBBg+@|$zX`5(UxCS)WBbEY-2ev9iSXZ>aI%BTh#pPXUvzmNcnrC6gYalUh@oZxHv>+tE*8mXCV<3{E&0{*;*tUn3e(Jpoo@|5vn~buIfQt+=D$W3-wu6W9dh^(W+~@|M;nBdc5B?I1$F4n% zN=CjpdH=M*;48JM=P>FL-ywsMd&3%a)sALy8x=#2rVbfdU&6V^@R?{M_n!b;Il4^Z zJK-pYIIpTR;99ecsssK$=cvH*O&onV?^N^9JPYuE7g2K-b8budEXR!HM%lsY;j75y zHAdxIXHy318w>Lj{nyN|9_2v{}0Wk Bsek|g literal 0 HcmV?d00001 From 1134787f03da8c9797a8411eea010f38d45d4544 Mon Sep 17 00:00:00 2001 From: Romain Beucher Date: Tue, 9 Jul 2024 11:35:53 +1000 Subject: [PATCH 07/13] Fix CFF file (#2476) --- CITATION.cff | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CITATION.cff b/CITATION.cff index 218c816439..51f53cfb36 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -208,7 +208,7 @@ authors: affiliation: "DLR, Germany" family-names: Cammarano given-names: Diego - + - affiliation: "ACCESS-NRI, Australia" family-names: Yousong given-names: Zeng From 268dee4ff4add51ef6f47804a27b1c1c64d99b42 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 11 Jul 2024 13:51:16 +0100 Subject: [PATCH 08/13] [Condalock] Update Linux condalock file (#2477) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 94 ++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 47 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index 249f2fdbf3..abfc7351fe 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -1,15 +1,14 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 33a7c92d8f54623244df62c65f8f69624e2d04349df5330379294383caba5271 +# input_hash: c195f9ab0e28f8ad6df204cf57ee02857a494fa81bb83c21ef04726616f06a9e @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.6.2-hbcca054_0.conda#847c3c2905cc467cea52c24f9cfa8080 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda#23ab7665c5f63cfb9f1f6195256daac6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda#cbbe59391138ea5ad3658c76912e147f https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda#b80f2f396ca2c28b8c14c437a4ed1e74 -https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.85.0-ha770c72_2.conda#a685407e4876ad2327fcfc0024b5e204 https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.2.1-ha770c72_0.conda#b39b12d3809e4042f832b76192e0e7e8 https://conda.anaconda.org/conda-forge/noarch/poppler-data-0.4.12-hd8ed1ab_0.conda#d8d7293c5b37f39b2ac32940621c6592 https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda#dccc2d142812964fcc6abdc97b672dff @@ -58,13 +57,13 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007 https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae -https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.6.15-h816f305_1.conda#8ddd866d43ed25da840bc0a87a05abc1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.0-h816f305_0.conda#9024f0647bfac11e986bba79a2e5daaa https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-he027950_7.conda#11e5cb0b426772974f6416545baee0ce https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.16-he027950_3.conda#adbf0c44ca88a3cded175cd809a106b6 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-he027950_7.conda#95611b325a9728ed68b8f7eef2dd3feb https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 https://conda.anaconda.org/conda-forge/linux-64/fmt-10.2.1-h00ab1b0_0.conda#35ef8bc24bd34074ebae3c943d551728 -https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.1-h59595ed_0.conda#8c0f4f71f5a59ceb0c6fa9f51501066d +https://conda.anaconda.org/conda-forge/linux-64/geos-3.12.2-hac33072_0.conda#621d814955342209dc8e7f87c41f1ba0 https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-he1b5a44_1004.tar.bz2#cddaf2c63ea4a5901cf09524c490ecdc https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda#bd77f8da987968ec3927990495dc22e4 @@ -89,32 +88,33 @@ https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda#3914f7ac1761dce57102c72ca7c35d01 https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_3.conda#9f0934861973a17e96b1e609dbb0d1cd https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 -https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.16-he19d79f_0.conda#de1cf82e46578faf7de8c23efe5d7be4 -https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.0-hdb0a2a9_1.conda#843bbb8ace1d64ac50d64639ff38b014 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.17-he19d79f_0.conda#e25ac9bf10f8e6aa67727b1cdbe762ef +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda#6b7dcc7349efd123d493d2dbe85a045f https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda#d71d3a66528853c0a1ac2c02d79a0284 https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_1002.tar.bz2#65ad6e1eb4aed2b0611855aff05e04f6 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.9-hd3d3696_3.conda#0498758c57870fbce948bab48c97ea0e +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.9-h37d6bf3_5.conda#2a651c0ba059f3da2449b4e03fddf9fb https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-hef167b5_0.conda#54fe76ab3d0189acaef95156874db7f9 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.2-h8a4344b_1.conda#9c406bb3d4dac2b358873e6462496d09 -https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-h01aab08_1018.conda#3eb5f16bcc8a02892199aa63555c731f -https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_h413a1c8_0.conda#a356024784da6dfd4683dc5ecf45b155 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-hbbc8833_1019.conda#d0c709fb86b5836c7c26d4c4b984402f +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda#ae05ece66d3924ac3d48b4aa3fa96cec https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda#41c69fba59d495e8cf5ffda48a607e35 -https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h8917695_15.conda#20c3c14bc491f30daecaa6f73e2223ae +https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hc670b87_16.conda#3d9f3a2e5d7213c34997e4464d2f938c https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda#8cdb7d41faa0260875ba92414c487e2d https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda#340278ded8b0dc3a73f3660bbb0adbc6 https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.7-h401b404_0.conda#4474532a312b2245c5c77f1176989b46 -https://conda.anaconda.org/conda-forge/linux-64/nss-3.101-h593d115_0.conda#b24ab6abea1bdc28d646336a03d15392 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.102-h593d115_0.conda#40e5e48c55a45621c4399ca9236406b7 https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda#d73490214f536cccb5819e9873048c92 https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.13.0-hd2e6256_0.conda#18f9348f064632785d54dbd1db9344bb https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.46.0-h6d4b2fc_0.conda#77ea8dff5cf8550cc8f5629a6af56323 @@ -126,10 +126,10 @@ https://conda.anaconda.org/conda-forge/linux-64/astroid-3.2.2-py312h7900ff3_0.co https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-hb72ac1a_14.conda#64676cc50610171ec66083b82be93e52 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-h75ac8c9_3.conda#73e326edecae77a595af47ff7261f499 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-had8cc17_4.conda#ccf5df89d5ac0e7812c1bd0023356248 https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda#f27a24d46e3ea7b70a1f98e50c62508f https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda#45801a89533d3336a365284d93298e36 -https://conda.anaconda.org/conda-forge/noarch/certifi-2024.6.2-pyhd8ed1ab_0.conda#8821ec1c8fcdc9e1d291d7b9f6e9968a +https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2#ebb5f5f7dc4f1a3780ef7ea7738db08c https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a https://conda.anaconda.org/conda-forge/noarch/click-8.1.7-unix_pyh707e725_0.conda#f3ad426304898027fc619827ff428eca @@ -205,8 +205,8 @@ https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.4.1-py312h98912e https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda#3eeeeb9e4827ace8c0c1419c85d590ad https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py312h98912ed_1.conda#e3fd78d8d490af1d84763b9fe3f2e552 https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda#8f70e36268dea8eb666ef14c29bd3cda -https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.18.1-py312h4413252_0.conda#73da42918aaeb87d5618f82e2ac18d1f -https://conda.anaconda.org/conda-forge/noarch/setuptools-70.1.1-pyhd8ed1ab_0.conda#985e9e86e1b0fc75a74a9bfab9309ef7 +https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.19.0-py312hf008fa9_0.conda#66ebbe714bafd06ba298a0c6bc2f04ad +https://conda.anaconda.org/conda-forge/noarch/setuptools-70.2.0-pyhd8ed1ab_0.conda#10170a48c48cfe65eab923f76f982087 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d @@ -216,7 +216,7 @@ https://conda.anaconda.org/conda-forge/noarch/tblib-3.0.0-pyhd8ed1ab_0.conda#04e https://conda.anaconda.org/conda-forge/noarch/termcolor-2.4.0-pyhd8ed1ab_0.conda#a5033708ad9283907c3b1bc1f90d0d0d https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.12.5-pyha770c72_0.conda#e5dde5caf905e9d95895e05f94967e14 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.0-pyha770c72_0.conda#810ba6f354ddef812d0ddc4669cc8de6 https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.1-pyhd8ed1ab_0.conda#2fcb582444635e2c402e8569bb94e039 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.1-py312h9a8786e_0.conda#fd9c83fde763b494f07acee1404c280e https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_0.conda#3df84416a021220d8b5700c613af2dc5 @@ -237,7 +237,7 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30 https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda#49808e59df5535116f6878b2a820d6f4 https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda#1bb1ef9806a9a20872434f58b3e7fc1a https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-hf36ad8f_6.conda#8b0f1ad4238c94d032dcbfa4b84bcf5b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-heee8711_7.conda#4f4ea05eaaaf001cad56fc4723caf208 https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hb0abfc5_7.conda#b49afe12555befb53150e401d03264b3 https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.12.0-h830ed8b_0.conda#320d066f9cad598854f4af32c7c82931 https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e @@ -253,7 +253,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py312h98912ed_0.c https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/fire-0.6.0-pyhd8ed1ab_0.conda#e9ed10aa8fa1dd6782940b95c942a6ae https://conda.anaconda.org/conda-forge/noarch/flake8-7.1.0-pyhd8ed1ab_0.conda#2bae9d19ae945a79d8bb32d3cab9109b -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.0-py312h9a8786e_0.conda#8490346e9d5efd7a6869582aa0c95b25 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py312h41a817b_0.conda#da921c56bcf69a8b97216ecec0cc4015 https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_1.conda#358c17429c97883b2cb9ab5f64bc161b https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.3-nompi_hdf9ad27_105.conda#7e1729554e209627636a0f6fabcdd115 @@ -278,7 +278,7 @@ https://conda.anaconda.org/conda-forge/noarch/nested-lookup-0.2.25-pyhd8ed1ab_1. https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda#dfe0528d0f1c16c1f7c528ea5536ab30 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_0.conda#629f3203c99b32e0988910c93e77f3b6 -https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda#b1325cda3f250f9f842180607054e6ed +https://conda.anaconda.org/conda-forge/linux-64/pillow-10.4.0-py312h287a98d_0.conda#59ea71eed98aee0bebbbdd3b118167c7 https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda#f586ac1e56c8638b64f9c8122a7b8a67 https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.3-h8e811e2_0.conda#e4d52462da124ed3792472f95a36fc2a https://conda.anaconda.org/conda-forge/linux-64/proj-9.4.1-hb784bbd_0.conda#c38c5246d064ef16eba065d93c46f1c6 @@ -296,7 +296,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.5-hac6953d_0.conda# https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h7f98852_0.tar.bz2#e77615e5141cad5a2acaa043d1cf0ca5 https://conda.anaconda.org/conda-forge/noarch/yamale-5.2.1-pyhca7485f_0.conda#c089f90a086b6214c5606368d0d3bad0 https://conda.anaconda.org/conda-forge/noarch/yamllint-1.35.1-pyhd8ed1ab_0.conda#a1240b99a7ccd953879dc63111823986 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.5.10-h44b787d_4.conda#64de9622ebca15f36787602bdb8b31f3 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.0-h1f67ec3_0.conda#3db1e3d14496117a12851350eafe7c82 https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hdb0d106_1.conda#a297ffb4b505f51d0f58352c5c13971b https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.6.0-he3f277c_1.conda#8a10bb068b138dd473300b5fe34a1865 https://conda.anaconda.org/conda-forge/noarch/cattrs-23.2.3-pyhd8ed1ab_0.conda#91fc4700dcce4a46d439900a132fe4e5 @@ -307,11 +307,11 @@ https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda# https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.0.0-hd8ed1ab_0.conda#5f8c8ebbe6413a7838cf6ecf14d5d31b https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda#a0e4efb5f35786a05af4809a2fb1f855 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.3-hee9dde6_1.conda#c5b7b29e2b66107553d0366538257a51 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.25.0-h2736e30_0.conda#1bbc13a65b92eafde06dbdf0ef3658cd +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.26.0-h26d7fe4_0.conda#7b9d4c93870fb2d644168071d4d76afb https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h135f659_114.conda#a908e463c710bd6b10a9eaa89fdf003c -https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h6fbd9c4_7.conda#e39bdbe437c74e43b534e21290ca3897 +https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-h15fa968_8.conda#48502f34f5ba86c1ce192cb30f959dc9 https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f -https://conda.anaconda.org/conda-forge/linux-64/poppler-24.04.0-hb6cd0d7_0.conda#d19eed746748f1d44b575662f2bcfe95 +https://conda.anaconda.org/conda-forge/linux-64/poppler-24.07.0-hb0d391f_0.conda#561842bc59112340fa1f5f1ed06ae4a2 https://conda.anaconda.org/conda-forge/noarch/pybtex-0.24.0-pyhd8ed1ab_2.tar.bz2#2099b86a7399c44c0c61cdb6de6915ba https://conda.anaconda.org/conda-forge/noarch/pylint-3.2.5-pyhd8ed1ab_0.conda#40754d4950fb1567f358d635de8a5f19 https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.6.1-py312h5d05ceb_7.conda#b53ddc25da04839cc62b0b158a7ecb38 @@ -326,35 +326,35 @@ https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h8572e83_4.conda#52c9e25ee0a32485a102eeecdb7eef52 https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py312h5b18bf6_1.conda#27fe79bbc4dd3767be554fb171df362c -https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.26.12-he940a02_1.conda#e77a416fb3b4952f4a7aa899e2c9111a +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.2-heffe44f_0.conda#6ee0af31304bca1d7406e41d30721db8 https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.11.0-ha67cba7_1.conda#f03bba57b85a5b3ac443a871787fc429 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312h085067d_0.conda#864d9e92f012bcc49650428d5343c98a https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py312h8572e83_0.conda#12c6a831ef734f0b2dd4caff514cbb7f -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.6.2-pyhd8ed1ab_0.conda#048ca0ec2cd1f3995d2d36dec0efd99a -https://conda.anaconda.org/conda-forge/noarch/identify-2.5.36-pyhd8ed1ab_0.conda#ba68cb5105760379432cebc82b45af40 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda#755e47653ae38f5c50f1435af756e844 +https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda#f80cc5989f445f23b1622d6c455896d9 https://conda.anaconda.org/conda-forge/noarch/ipython-8.26.0-pyh707e725_0.conda#f64d3520d5d00321c10f4dabb5b903f3 https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda#9518ab7016cf4564778aef08b6bd8792 -https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.22.0-pyhd8ed1ab_0.conda#b9661a4b1200d6bc7d8a4cdafdc91468 +https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda#da304c192ad59975202859b367d0f6a2 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda#3cdbb2fa84490e5fd44c9f9806c0d292 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.25.0-h3d9a0c8_0.conda#5e3f7cfcfd74065847da8f8598ff81d3 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.26.0-ha262f82_0.conda#89b53708fd67762b26c38c8ecc5d323d https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.1-nompi_h228c76a_104.conda#91bc3ac73308181d55a09d9e4aeb4496 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py312hfb8ada1_0.conda#d0745ae74c2b26571b692ddde112eebb https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h84a9a3c_0.conda#7c51e110b2f059c0843269d3324e4b22 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e https://conda.anaconda.org/conda-forge/noarch/pytest-html-4.1.1-pyhd8ed1ab_0.conda#4d2040212307d18392a2687772b3a96d -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py312hc2bc53b_0.conda#d526782bc49958ab75fe6fb505647b54 -https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.4-py312ha5b4d35_1.conda#1248b799f811d8ea215de88f53ae7ffc +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py312hc2bc53b_1.conda#eae80145f63aa04a02dda456d4883b46 +https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.4-py312h8413631_2.conda#d5e52d9b72a86920926ca5fd8fec7394 https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda#e804c43f58255e977093a2298e442bb8 -https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-h0f5bab0_6.conda#52029b9a8f71290c8c82ce9f4da336a7 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-habc23cd_8.conda#9d709ffcc4cfaa5ae35a740084188c5e https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.10.0-h29b5301_1.conda#bb35c23b178fc17b9e4458766f91da7f -https://conda.anaconda.org/conda-forge/noarch/bokeh-3.4.2-pyhd8ed1ab_0.conda#e704d0474c0155db9632bd740b6c9d17 +https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.0-pyhd8ed1ab_0.conda#e49dc1da9805d8953e1326e58127c7bf https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py312h085067d_5.conda#b40cdf87aee69ccf162022579cb99afb -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.6.2-pyhd8ed1ab_0.conda#eecb4c188864376d2b45a5afc4bcb2fa +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda#2ae917b0098f286f63f69ec9365fb0b1 https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.36.0-h762793a_0.conda#6d8c86d0368625b6503d696db70ea041 https://conda.anaconda.org/conda-forge/linux-64/esmf-8.6.1-nompi_h0a5817f_2.conda#e23c62f75f67166cf4ca137fc8bcdce7 https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.1-hadf69e7_0.conda#73fc255d740d23da4f554b58dc4909fd -https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.8.4-py312h20ab3a6_2.conda#fbfe798f83f0d66410903ad8f40d5283 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py312h9201f00_0.conda#e1dc3a7d999666f5c58cbb391940e235 https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.1.1-pyhd8ed1ab_0.conda#bcdbeb2b693eba886583a907840c6421 https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda#0b57b5368ab7fc7cdc9e3511fa867214 https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.1-nompi_py312h1ef7fb6_101.conda#c67cc8e3a34c5cb8920c79918112e96f @@ -364,38 +364,38 @@ https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/types-requests-2.32.0.20240622-pyhd8ed1ab_0.conda#41d54e5cce704c1854afdd37f3ee7036 https://conda.anaconda.org/conda-forge/noarch/xarray-2024.6.0-pyhd8ed1ab_1.conda#a6775bba72ade3fd777ccac04902202c https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.23.0-py312h1d6d2e6_1.conda#6392d3ce615ab0f32bc39b07f8f4c300 -https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.2-pyhd8ed1ab_0.conda#395b23e1e49b582952a9f2f65a8d6f70 +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.3-pyhd8ed1ab_0.conda#054936470636849427f181fc52903474 https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.5-pyhd8ed1ab_0.conda#abfb434fb6654f83d740428863ec85a8 https://conda.anaconda.org/conda-forge/noarch/esmpy-8.6.1-pyhc1e730c_0.conda#25a9661177fd68bfdb4314fd658e5c3b https://conda.anaconda.org/conda-forge/linux-64/graphviz-11.0.0-hc68bbd7_0.conda#52a531ef95358086a56086c45d97ab75 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-16.1.0-h4a673ee_10_cpu.conda#c737ba625b762cc4cbe7c68d27e8d2e1 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-16.1.0-h56e7afd_13_cpu.conda#f946bff9ab0922a79e5cd53a26546e89 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369 https://conda.anaconda.org/conda-forge/noarch/pooch-1.8.2-pyhd8ed1ab_0.conda#8dab97d8a9616e07d779782995710aed https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-1.7.1-py312h085067d_0.conda#5f96475aa30552797f8099ccee24feaa https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda#c6089540fed51a9a829aa19590fa925b -https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.24.1-h2aae180_1.conda#85c4bf16889383d577898538edd85bff +https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.24.2-h9260d03_1.conda#4b55dfbdc38db6488f3496f7175f8f10 https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a https://conda.anaconda.org/conda-forge/noarch/iris-3.9.0-pyha770c72_0.conda#efaf150eb009f04efa58f1401c767192 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-16.1.0-hac33072_10_cpu.conda#1283e2eecd89d1e06c33d004451a4a9e -https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.9.1-he176cbe_2.conda#6609176ac1581c84c79115cb18f899a6 -https://conda.anaconda.org/conda-forge/linux-64/libparquet-16.1.0-h6a7eafb_10_cpu.conda#a65776bbdae47c8b725f77dbed54c5d2 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-16.1.0-he02047a_13_cpu.conda#af6fe29b2ff224505239ce660d13753c +https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.9.1-ha654e03_5.conda#d1b70328bd7ff0d7b6da052ca33cfe60 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-16.1.0-h9e5060d_13_cpu.conda#b7a3b2128388bda1338c6ff525e84726 https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda#e2d2abb421c13456a9a9f80272fdf543 https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.8.0-pyhd8ed1ab_0.conda#fba377622e74ee0bbeb8ccae9fa593d3 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-16.1.0-py312h70856f0_4_cpu.conda#6971b04df592bd625eebd5bfb1d9fc93 https://conda.anaconda.org/conda-forge/linux-64/pydot-2.0.0-py312h7900ff3_0.conda#a3628f9a0ca8573314dc6f94f40a0419 -https://conda.anaconda.org/conda-forge/linux-64/gdal-3.9.1-py312h86af8fa_2.conda#91aa4b01577a1fd9f1bd99b817b1d967 +https://conda.anaconda.org/conda-forge/linux-64/gdal-3.9.1-py312h86af8fa_5.conda#c39ce48769813bd85174fcdfd4e5f806 https://conda.anaconda.org/conda-forge/noarch/iris-grib-0.19.0-pyhd8ed1ab_0.conda#6582121c3b731b3715cd021f6a42665e -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-16.1.0-hac33072_10_cpu.conda#49d2f8911e30844309aaf1fe221f0d66 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-16.1.0-he02047a_13_cpu.conda#79ff4667979272cc344c6bb16e64d354 https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.4-hd8ed1ab_1.conda#37cec2cf68f4c09563d8bc833791096b https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.6-py312h32ad294_3.conda#6da62c5c06a6416e0130220e4f418bb0 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-16.1.0-h7e0c224_10_cpu.conda#d3aa33ea25ffdc1147134b202c84158d +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-16.1.0-hc9a23c6_13_cpu.conda#4c29416218bcb470fad0b0b28ca932d5 https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.4-hd8ed1ab_1.conda#ab83e3b9ca2b111d8f332e9dc8b2170f https://conda.anaconda.org/conda-forge/linux-64/pyarrow-16.1.0-py312h9cebb41_4.conda#2097b6ae7186e10c9aab1228636b804f -https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.6-pyhd8ed1ab_0.conda#77ed2262e85230e5b870f505ed4922c8 +https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda#412b700b5a88f167078cd7b839881086 https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda -https://conda.anaconda.org/conda-forge/noarch/dask-2024.6.2-pyhd8ed1ab_0.conda#0af43d16240caf6aedefd7a4041ae64c +https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda#f0647685bcd2c8d78b6e8177d6735edb https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.10.0-pyhd8ed1ab_0.conda#a5ccce1a87da81d6c690cd11ae0687a2 https://conda.anaconda.org/conda-forge/noarch/autodocsumm-0.2.6-pyhd8ed1ab_0.tar.bz2#4409dd7e06a62c3b2aa9e96782c49c6d https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.4-pyhd8ed1ab_0.conda#9dc80eaeff56fb67dbf4f871b81bc13a From 7291433f6a12288876082854b17dc6b95164d40a Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 16 Jul 2024 15:02:49 +0200 Subject: [PATCH 09/13] Ignore autosummary warning in documentation build (#2480) --- doc/conf.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index 3f443ced03..b417b69640 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -81,6 +81,11 @@ # Show type hints in function signature AND docstring autodoc_typehints = 'both' +# See https://github.com/sphinx-doc/sphinx/issues/12589 +suppress_warnings = [ + 'autosummary.import_cycle', +] + # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] From 15dc3a06bd5686b44e87761d97ec98a7d5fa8ffc Mon Sep 17 00:00:00 2001 From: Bouwe Andela Date: Tue, 16 Jul 2024 16:11:57 +0200 Subject: [PATCH 10/13] Run a nightly test with the development version of dependencies (#2478) --- .circleci/config.yml | 69 ++++++++++++++++++++++++++++++++------------ 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 975a1ae50a..c4c9208cd2 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,8 +2,8 @@ version: 2.1 orbs: - coverage-reporter: codacy/coverage-reporter@13.16.5 - codecov: codecov/codecov@3.2.5 + coverage-reporter: codacy/coverage-reporter@14.0.0 + codecov: codecov/codecov@4.1.0 commands: check_changes: @@ -48,8 +48,15 @@ commands: test_installation_from_source: parameters: extra: + description: pip "extra"s to install type: string + default: "test" flags: + description: pip install flags + type: string + default: "" + upstream_packages: + description: List of packages that will be installed with pip. type: string default: "" steps: @@ -74,20 +81,25 @@ commands: - r-yaml - ncl " >> environment.yml + # Installation of development version of packages requires compilers + if [[ "<< parameters.upstream_packages >>" ]]; then + echo " - compilers" >> environment.yml + fi # Install . /opt/conda/etc/profile.d/conda.sh mkdir /logs - mamba env create >> /logs/conda.txt 2>&1 + mamba env create |& tee /logs/conda.txt + git stash # Restore repository state to get clean version number. conda activate esmvaltool - pip install << parameters.flags >> ".[<>]"> /logs/install.txt 2>&1 + pip install << parameters.flags >> ".[<>]" << parameters.upstream_packages >> |& tee /logs/install.txt - run: name: Log versions command: | . /opt/conda/etc/profile.d/conda.sh conda activate esmvaltool - dpkg -l > /logs/versions.txt - conda env export > /logs/environment.yml - pip freeze > /logs/requirements.txt + dpkg -l | tee /logs/versions.txt + conda env export | tee /logs/environment.yml + pip freeze | tee /logs/requirements.txt - test_and_report - save_cache: key: install-<< parameters.extra >>-{{ .Branch }}-{{ checksum "cache_key.txt" }} @@ -116,7 +128,7 @@ jobs: . /opt/conda/etc/profile.d/conda.sh mkdir /logs conda activate esmvaltool - pip install .[test] > /logs/install.txt 2>&1 + pip install .[test] |& tee -a /logs/install.txt - test_and_report - save_cache: key: test-{{ .Branch }}-{{ checksum "cache_key.txt" }} @@ -141,8 +153,7 @@ jobs: - image: condaforge/mambaforge resource_class: large steps: - - test_installation_from_source: - extra: test + - test_installation_from_source test_installation_from_source_develop_mode: # Test development installation @@ -154,6 +165,25 @@ jobs: extra: develop flags: "--editable" + test_with_upstream_developments: + # Test with development versions of upstream packages + docker: + - image: condaforge/mambaforge + resource_class: large + steps: + - test_installation_from_source: + upstream_packages: >- + git+https://github.com/esgf/esgf-pyclient + git+https://github.com/euro-cordex/py-cordex + git+https://github.com/SciTools/cartopy + git+https://github.com/SciTools/cf-units + git+https://github.com/SciTools/iris + git+https://github.com/SciTools/iris-grib + git+https://github.com/SciTools/nc-time-axis + git+https://github.com/SciTools-incubator/iris-esmf-regrid + git+https://github.com/SciTools-incubator/python-stratify + git+https://github.com/Toblerity/Fiona + test_installation_from_conda: # Test conda package installation working_directory: /esmvaltool @@ -167,14 +197,13 @@ jobs: set -x # Install prerequisites mkdir /logs - # conda update -y conda > /logs/conda.txt 2>&1 # Create and activate conda environment mamba create -y --name esmvaltool 'python=3.11' set +x; conda activate esmvaltool; set -x # Install mamba install -y esmvalcore # Log versions - conda env export > /logs/environment.yml + conda env export | tee /logs/environment.yml # Test installation esmvaltool version @@ -194,9 +223,9 @@ jobs: conda activate esmvaltool pip install .[doc] # Log versions - dpkg -l > /logs/versions.txt - conda env export > /logs/environment.yml - pip freeze > /logs/requirements.txt + dpkg -l | tee /logs/versions.txt + conda env export | tee /logs/environment.yml + pip freeze | tee /logs/requirements.txt # Test building documentation MPLBACKEND=Agg sphinx-build -W doc doc/build - store_artifacts: @@ -206,8 +235,9 @@ workflows: commit: jobs: - run_tests - - test_installation_from_source_test_mode - test_installation_from_source_develop_mode + - test_installation_from_source_test_mode + - test_with_upstream_developments nightly: triggers: @@ -218,8 +248,9 @@ workflows: only: - main jobs: - - run_tests - - test_installation_from_source_test_mode - build_documentation - - test_installation_from_source_develop_mode + - run_tests - test_installation_from_conda + - test_installation_from_source_develop_mode + - test_installation_from_source_test_mode + - test_with_upstream_developments From 1716cb87fa14dd95f7e272316b2de78735d08001 Mon Sep 17 00:00:00 2001 From: Eneko Martin-Martinez <61285767+enekomartinmartinez@users.noreply.github.com> Date: Wed, 17 Jul 2024 18:26:57 +0200 Subject: [PATCH 11/13] Write settings.yml parameters in original order (#2352) Co-authored-by: Eneko Martin --- esmvalcore/_task.py | 2 +- tests/integration/test_task.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/esmvalcore/_task.py b/esmvalcore/_task.py index 2b785bc8d6..d8d074c47c 100644 --- a/esmvalcore/_task.py +++ b/esmvalcore/_task.py @@ -422,7 +422,7 @@ def write_settings(self): settings_copy.pop(sett, None) filename = run_dir / 'settings.yml' - filename.write_text(yaml.safe_dump(settings_copy)) + filename.write_text(yaml.safe_dump(settings_copy, sort_keys=False)) # If running an NCL script: if Path(self.script).suffix.lower() == '.ncl': diff --git a/tests/integration/test_task.py b/tests/integration/test_task.py index 7ea9964585..f96cdb534d 100644 --- a/tests/integration/test_task.py +++ b/tests/integration/test_task.py @@ -6,6 +6,7 @@ from multiprocessing.pool import ThreadPool import pytest +import yaml import esmvalcore from esmvalcore._task import ( @@ -245,6 +246,23 @@ def test_py_diagnostic_task_constructor(tmp_path): assert task.output_dir == tmp_path / 'mydiag' +def test_py_diagnostic_task_write_settings(tmp_path): + """Test DiagnosticTask writtes settings in the user's order.""" + diag_script = tmp_path / 'diag_cow.py' + task = _get_single_diagnostic_task(tmp_path, diag_script) + my_arg_dict = { + 'b': [1], + 'a': 3., + 'c': False + } + task.settings.update(my_arg_dict) + settings = task.write_settings() + with open(settings, 'r') as stream: + settings_data = yaml.safe_load(stream) + + assert list(settings_data) == ['run_dir', 'b', 'a', 'c'] + + def test_diagnostic_diag_script_none(tmp_path): """Test case when diagnostic script doesn't exist.""" diag_script = tmp_path / 'diag_cow.py' From 0a58be1eb76dc3fa503910260e236e3affe51e6f Mon Sep 17 00:00:00 2001 From: rhaegar325 <65888230+rhaegar325@users.noreply.github.com> Date: Thu, 18 Jul 2024 12:18:07 +1000 Subject: [PATCH 12/13] fix `access-mapping.yml` extra_facets title (#2485) --- .../config/extra_facets/access-mappings.yml | 2 +- .../cmor/_fixes/access/test_access_esm1_5.py | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/esmvalcore/config/extra_facets/access-mappings.yml b/esmvalcore/config/extra_facets/access-mappings.yml index acb5dd1568..9d4eb0621b 100644 --- a/esmvalcore/config/extra_facets/access-mappings.yml +++ b/esmvalcore/config/extra_facets/access-mappings.yml @@ -4,7 +4,7 @@ # ESMValCore/doc/quickstart/find_data.rst). --- -ACCESS_ESM: +ACCESS-ESM1-5: '*': diff --git a/tests/integration/cmor/_fixes/access/test_access_esm1_5.py b/tests/integration/cmor/_fixes/access/test_access_esm1_5.py index ef124e7129..01fb0e0529 100644 --- a/tests/integration/cmor/_fixes/access/test_access_esm1_5.py +++ b/tests/integration/cmor/_fixes/access/test_access_esm1_5.py @@ -55,7 +55,7 @@ def _get_fix(mip, frequency, short_name, fix_name): """Load a fix from :mod:`esmvalcore.cmor._fixes.access.access_esm1_5`.""" dataset = Dataset( project='ACCESS', - dataset='ACCESS_ESM', + dataset='ACCESS-ESM1-5', mip=mip, short_name=short_name, ) @@ -98,11 +98,11 @@ def check_tas_metadata(cubes): return cube -def check_hus_metadata(cubes): - """Check hus metadata.""" +def check_pr_metadata(cubes): + """Check pr metadata.""" assert len(cubes) == 1 cube = cubes[0] - assert cube.var_name == 'hus' + assert cube.var_name == 'pr' assert cube.standard_name == 'precipitation_flux' assert cube.long_name == 'Precipitation' assert cube.units == 'kg m-2 s-1' @@ -162,7 +162,7 @@ def assert_plev_metadata(cube): def test_only_time(monkeypatch, cubes_2d): """Test fix.""" - fix = get_fix_allvar('Amon', 'mon', 'tas') + fix = get_fix_allvar('Amon', 'mon', 'pr') coord_info = CoordinateInfo('time') coord_info.standard_name = 'time' @@ -172,7 +172,7 @@ def test_only_time(monkeypatch, cubes_2d): fixed_cubes = fix.fix_metadata(cubes) # Check cube metadata - cube = check_tas_metadata(fixed_cubes) + cube = check_pr_metadata(fixed_cubes) # Check cube data assert cube.shape == (1, 145, 192) @@ -186,7 +186,7 @@ def test_only_time(monkeypatch, cubes_2d): def test_only_latitude(monkeypatch, cubes_2d): """Test fix.""" - fix = get_fix_allvar('Amon', 'mon', 'tas') + fix = get_fix_allvar('Amon', 'mon', 'pr') coord_info = CoordinateInfo('latitude') coord_info.standard_name = 'latitude' @@ -196,7 +196,7 @@ def test_only_latitude(monkeypatch, cubes_2d): fixed_cubes = fix.fix_metadata(cubes) # Check cube metadata - cube = check_tas_metadata(fixed_cubes) + cube = check_pr_metadata(fixed_cubes) # Check cube data assert cube.shape == (1, 145, 192) @@ -211,7 +211,7 @@ def test_only_latitude(monkeypatch, cubes_2d): def test_only_longitude(monkeypatch, cubes_2d): """Test fix.""" - fix = get_fix_allvar('Amon', 'mon', 'tas') + fix = get_fix_allvar('Amon', 'mon', 'pr') coord_info = CoordinateInfo('longitude') coord_info.standard_name = 'longitude' @@ -221,7 +221,7 @@ def test_only_longitude(monkeypatch, cubes_2d): fixed_cubes = fix.fix_metadata(cubes) # Check cube metadata - cube = check_tas_metadata(fixed_cubes) + cube = check_pr_metadata(fixed_cubes) # Check cube data assert cube.shape == (1, 145, 192) From 546937f6bb3648b39eb33d4fe501594bc608e949 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 13:15:39 +0100 Subject: [PATCH 13/13] [Condalock] Update Linux condalock file (#2486) Co-authored-by: valeriupredoi --- conda-linux-64.lock | 107 +++++++++++++++++++++++++------------------- 1 file changed, 60 insertions(+), 47 deletions(-) diff --git a/conda-linux-64.lock b/conda-linux-64.lock index abfc7351fe..af632daa07 100644 --- a/conda-linux-64.lock +++ b/conda-linux-64.lock @@ -19,11 +19,11 @@ https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda#ca0fad6a41ddaef54a153b78eccb5037 https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.9.23-h4ab18f5_0.conda#94d61ae2b2b701008a9d52ce6bbead27 -https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hd590300_5.conda#69b8b6202a07720f448be700e300ccf4 -https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.28.1-hd590300_0.conda#dcde58ff9a1f30b0037a2315d1846d1f +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda#8024af1ee7078e37fa3101c0a0296af2 https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 -https://conda.anaconda.org/conda-forge/linux-64/json-c-0.17-h7ab15ed_0.conda#9961b1f100c3b6852bd97c9233d06979 +https://conda.anaconda.org/conda-forge/linux-64/json-c-0.17-h1220068_1.conda#f8f0f0c4338bad5c34a4e9e11460481d https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 @@ -43,7 +43,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.cond https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda#57d7dc60e9325e3de37ff8dffd18e814 https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda#ec7398d21e2651e0dcb0044d03b9a339 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda#fcea371545eda051b6deafb24889fc69 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4ab18f5_1.conda#b1e9d076f14e8d776213fd5047b4c3d9 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda#e1b454497f9f7c1147fdde4b53f1b512 https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/tzcode-2024a-h3f72095_0.conda#32146e34aaec3745a08b6f49af3f41b0 https://conda.anaconda.org/conda-forge/linux-64/xorg-inputproto-2.3.2-h7f98852_1002.tar.bz2#bcd1b3396ec6960cbc1d2855a9e60b2b @@ -57,7 +57,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007 https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda#f08fb5c89edfc4aadee1c81d4cfb1fa1 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae -https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.0-h816f305_0.conda#9024f0647bfac11e986bba79a2e5daaa +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.1-h87b94db_1.conda#2d76d2cfdcfe2d5c3883d33d8be919e7 https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-he027950_7.conda#11e5cb0b426772974f6416545baee0ce https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.16-he027950_3.conda#adbf0c44ca88a3cded175cd809a106b6 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-he027950_7.conda#95611b325a9728ed68b8f7eef2dd3feb @@ -69,7 +69,7 @@ https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.c https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda#bd77f8da987968ec3927990495dc22e4 https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda#cc47e1facc155f91abd89b11e48e72ff https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f -https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_h59595ed_0.conda#682bdbe046a68f749769b492f3625c5c +https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240116.2-cxx17_he02047a_1.conda#c48fc56ec03229f294176923c3265c05 https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda#5e97e271911b8b2001a8b71860c32faa https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hd590300_1.conda#f07002e225d7a60a694d42a7bf5ff53f https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hd590300_1.conda#5fc11c6020d421960607d821310fcd4d @@ -88,7 +88,7 @@ https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda#318 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.35-h27087fc_0.conda#da0ec11a6454ae19bff5b02ed881a2b1 https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda#3914f7ac1761dce57102c72ca7c35d01 https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 -https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_3.conda#9f0934861973a17e96b1e609dbb0d1cd +https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.17-he19d79f_0.conda#e25ac9bf10f8e6aa67727b1cdbe762ef https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda#6b7dcc7349efd123d493d2dbe85a045f @@ -98,21 +98,21 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-fixesproto-5.0-h7f98852_100 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.9-h37d6bf3_5.conda#2a651c0ba059f3da2449b4e03fddf9fb +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.10-h826b7d6_1.conda#6961646dded770513a781de4cd5c1fe1 https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-hef167b5_0.conda#54fe76ab3d0189acaef95156874db7f9 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc -https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-hbbc8833_1019.conda#d0c709fb86b5836c7c26d4c4b984402f +https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-hbbc8833_1020.conda#6d76c5822cb38bc1ab5a06565c6cf626 https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda#ae05ece66d3924ac3d48b4aa3fa96cec https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda#41c69fba59d495e8cf5ffda48a607e35 https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-hc670b87_16.conda#3d9f3a2e5d7213c34997e4464d2f938c https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda#8cdb7d41faa0260875ba92414c487e2d https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 -https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda#340278ded8b0dc3a73f3660bbb0adbc6 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda#0ac9aff6010a7751961c8e4b863a40e7 https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.7-h401b404_0.conda#4474532a312b2245c5c77f1176989b46 https://conda.anaconda.org/conda-forge/linux-64/nss-3.102-h593d115_0.conda#40e5e48c55a45621c4399ca9236406b7 https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda#d73490214f536cccb5819e9873048c92 @@ -122,11 +122,11 @@ https://conda.anaconda.org/conda-forge/linux-64/udunits2-2.2.28-h40f5838_3.conda https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda#4a6d410296d7e39f00bacdee7df046e9 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.16-pyhd8ed1ab_0.conda#def531a3ac77b7fb8c21d17bb5d0badb https://conda.anaconda.org/conda-forge/noarch/antlr-python-runtime-4.11.1-pyhd8ed1ab_0.tar.bz2#15109c4977d39ad7aa3423f57243e286 -https://conda.anaconda.org/conda-forge/linux-64/astroid-3.2.2-py312h7900ff3_0.conda#2acaebd0ea2aeaf38e996bda79545c0b +https://conda.anaconda.org/conda-forge/linux-64/astroid-3.2.4-py312h7900ff3_0.conda#06f82f9dc65aa8ebd14bf3cf2b34dad2 https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda#f730d54ba9cd543666d7220c9f7ed563 https://conda.anaconda.org/conda-forge/noarch/attrs-23.2.0-pyh71513ae_0.conda#5e4c0743c70186509d1412e03c2d8dfa -https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-hb72ac1a_14.conda#64676cc50610171ec66083b82be93e52 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-had8cc17_4.conda#ccf5df89d5ac0e7812c1bd0023356248 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h7671281_15.conda#3b45b0da170f515de8be68155e14955a +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-he17ee6b_6.conda#4e3d1bb2ade85619ac2163e695c2cc1b https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda#f27a24d46e3ea7b70a1f98e50c62508f https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h30efb56_1.conda#45801a89533d3336a365284d93298e36 https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 @@ -144,7 +144,7 @@ https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda#7874 https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.8-pyhd8ed1ab_0.conda#db16c66b759a64dc5183d69cc3745a52 https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda#e8cd5d629f65bdf0f3bb312cde14659e https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_0.tar.bz2#3cf04868fee0a029769bd41f4b2fbf2d -https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.0-pyhd8ed1ab_2.conda#8d652ea2ee8eaee02ed8dc820bc794aa +https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 https://conda.anaconda.org/conda-forge/noarch/executing-2.0.1-pyhd8ed1ab_0.conda#e16be50e378d8a4533b989035b196ab8 https://conda.anaconda.org/conda-forge/noarch/filelock-3.15.4-pyhd8ed1ab_0.conda#0e7e4388e9d5283e22b35a9443bdbcc9 @@ -206,7 +206,7 @@ https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda#3ee https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py312h98912ed_1.conda#e3fd78d8d490af1d84763b9fe3f2e552 https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda#8f70e36268dea8eb666ef14c29bd3cda https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.19.0-py312hf008fa9_0.conda#66ebbe714bafd06ba298a0c6bc2f04ad -https://conda.anaconda.org/conda-forge/noarch/setuptools-70.2.0-pyhd8ed1ab_0.conda#10170a48c48cfe65eab923f76f982087 +https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda#ee78ac9c720d0d02fcfd420866b82ab1 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_0.tar.bz2#6d6552722448103793743dabfbda532d @@ -237,8 +237,8 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_0.conda#cf30 https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda#49808e59df5535116f6878b2a820d6f4 https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_0.conda#1bb1ef9806a9a20872434f58b3e7fc1a https://conda.anaconda.org/conda-forge/noarch/asttokens-2.4.1-pyhd8ed1ab_0.conda#5f25798dcefd8252ce5f9dc494d5f571 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-heee8711_7.conda#4f4ea05eaaaf001cad56fc4723caf208 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hb0abfc5_7.conda#b49afe12555befb53150e401d03264b3 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-hbd3ac97_10.conda#7ca4abcc98c7521c02f4e8809bbe40df +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hcd6a914_8.conda#b81c45867558446640306507498b2c6b https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.12.0-h830ed8b_0.conda#320d066f9cad598854f4af32c7c82931 https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0.conda#332493000404d8411859539a5a630865 @@ -248,7 +248,7 @@ https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py312hf06ca03_0.cond https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.4.1-hf8ad068_0.conda#1b7a01fd02d11efe0eb5a676842a7b7d https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1-py_0.tar.bz2#4fd2c6b53934bd7d96d1f3fdaf99b79f https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_1.tar.bz2#a29b7c141d6b2de4bb67788a5f107734 -https://conda.anaconda.org/conda-forge/linux-64/coverage-7.5.4-py312h9a8786e_0.conda#b40224324679d1966a9fafbd602b28f3 +https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.0-py312h41a817b_0.conda#66c68c204a3eaabc3b4221f1c4bcebbe https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py312h98912ed_0.conda#a4fbffb84a54767266c69e3699078a00 https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.5-pyhd8ed1ab_0.conda#3a941b6083e945aa87e739a9b85c82e9 https://conda.anaconda.org/conda-forge/noarch/fire-0.6.0-pyhd8ed1ab_0.conda#e9ed10aa8fa1dd6782940b95c942a6ae @@ -284,7 +284,7 @@ https://conda.anaconda.org/conda-forge/linux-64/postgresql-16.3-h8e811e2_0.conda https://conda.anaconda.org/conda-forge/linux-64/proj-9.4.1-hb784bbd_0.conda#c38c5246d064ef16eba065d93c46f1c6 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.47-pyha770c72_0.conda#1247c861065d227781231950e14fe817 https://conda.anaconda.org/conda-forge/noarch/pydocstyle-6.3.0-pyhd8ed1ab_0.conda#7e23a61a7fbaedfef6eb0e1ac775c8e5 -https://conda.anaconda.org/conda-forge/noarch/pytest-8.2.2-pyhd8ed1ab_0.conda#0f3f49c22c7ef3a1195fa61dad3c43be +https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.1-pyhd8ed1ab_0.conda#b6a3ab8559a42070c6b6c3063faea1ed https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.0.3-py312h8fd38d8_0.conda#27efa6d21e98bcab4585a6b913df7625 https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_0.conda#0fc8b52192a8898627c3efae1003e9f6 @@ -296,14 +296,14 @@ https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.2.5-hac6953d_0.conda# https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.7.10-h7f98852_0.tar.bz2#e77615e5141cad5a2acaa043d1cf0ca5 https://conda.anaconda.org/conda-forge/noarch/yamale-5.2.1-pyhca7485f_0.conda#c089f90a086b6214c5606368d0d3bad0 https://conda.anaconda.org/conda-forge/noarch/yamllint-1.35.1-pyhd8ed1ab_0.conda#a1240b99a7ccd953879dc63111823986 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.0-h1f67ec3_0.conda#3db1e3d14496117a12851350eafe7c82 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.0-h365ddd8_2.conda#22339cf124753bafda336167f80e7860 https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hdb0d106_1.conda#a297ffb4b505f51d0f58352c5c13971b https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.6.0-he3f277c_1.conda#8a10bb068b138dd473300b5fe34a1865 https://conda.anaconda.org/conda-forge/noarch/cattrs-23.2.3-pyhd8ed1ab_0.conda#91fc4700dcce4a46d439900a132fe4e5 https://conda.anaconda.org/conda-forge/linux-64/cryptography-42.0.8-py312hbcc2302_0.conda#d6cbf583b33e9473ca9129ad21936507 https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda#84ec3f5b46f3076be49f2cf3f1cfbf02 https://conda.anaconda.org/conda-forge/linux-64/geotiff-1.7.3-hf7fa9e8_1.conda#8ff4fa3ab0b63dc5b214a68839499e41 -https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-8.5.0-hfac3d4d_0.conda#f5126317dd0ce0ba26945e411ecc6960 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hfac3d4d_0.conda#c7b47c64af53e8ecee01d101eeab2342 https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-8.0.0-hd8ed1ab_0.conda#5f8c8ebbe6413a7838cf6ecf14d5d31b https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2023.12.1-pyhd8ed1ab_0.conda#a0e4efb5f35786a05af4809a2fb1f855 https://conda.anaconda.org/conda-forge/linux-64/kealib-1.5.3-hee9dde6_1.conda#c5b7b29e2b66107553d0366538257a51 @@ -325,35 +325,46 @@ https://conda.anaconda.org/conda-forge/noarch/rdflib-7.0.0-pyhd8ed1ab_0.conda#44 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.2-pyhd8ed1ab_0.conda#e7df0fdd404616638df5ece6e69ba7af https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h8572e83_4.conda#52c9e25ee0a32485a102eeecdb7eef52 https://conda.anaconda.org/conda-forge/noarch/yapf-0.40.1-pyhd8ed1ab_0.conda#f269942e802d5e148632143d4c37acc9 -https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.22.0-py312h5b18bf6_1.conda#27fe79bbc4dd3767be554fb171df362c -https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.2-heffe44f_0.conda#6ee0af31304bca1d7406e41d30721db8 +https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312h3483029_0.conda#eab52e88c858d87cf5a069f79d10bb50 +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.3-hda66527_2.conda#734875312c8196feecc91f89856da612 https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.11.0-ha67cba7_1.conda#f03bba57b85a5b3ac443a871787fc429 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.4-py312h085067d_0.conda#864d9e92f012bcc49650428d5343c98a https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py312h8572e83_0.conda#12c6a831ef734f0b2dd4caff514cbb7f -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.0-pyhd8ed1ab_0.conda#755e47653ae38f5c50f1435af756e844 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda#80f7ce024289c333fdc5ad54a194fc86 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.0-pyhd8ed1ab_0.conda#f80cc5989f445f23b1622d6c455896d9 https://conda.anaconda.org/conda-forge/noarch/ipython-8.26.0-pyh707e725_0.conda#f64d3520d5d00321c10f4dabb5b903f3 https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.4-h536e39c_0.conda#9518ab7016cf4564778aef08b6bd8792 https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_0.conda#da304c192ad59975202859b367d0f6a2 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.2-pyhd8ed1ab_0.conda#3cdbb2fa84490e5fd44c9f9806c0d292 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.9.1-h1d1841c_7.conda#85fcff96b59d3e3a812601d713931d4f https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.26.0-ha262f82_0.conda#89b53708fd67762b26c38c8ecc5d323d https://conda.anaconda.org/conda-forge/linux-64/netcdf-fortran-4.6.1-nompi_h228c76a_104.conda#91bc3ac73308181d55a09d9e4aeb4496 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.1.4-py312hfb8ada1_0.conda#d0745ae74c2b26571b692ddde112eebb -https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h84a9a3c_0.conda#7c51e110b2f059c0843269d3324e4b22 -https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.0.0-pyhd8ed1ab_0.conda#b50aec2c744a5c493c09cce9e2e7533e +https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda#7df02e445367703cd87a574046e3a6f0 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-24.2.1-pyhd8ed1ab_0.conda#3af1942211bc9c25d0160a8975203254 https://conda.anaconda.org/conda-forge/noarch/pytest-html-4.1.1-pyhd8ed1ab_0.conda#4d2040212307d18392a2687772b3a96d https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py312hc2bc53b_1.conda#eae80145f63aa04a02dda456d4883b46 -https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.4-py312h8413631_2.conda#d5e52d9b72a86920926ca5fd8fec7394 +https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.5-py312h8413631_0.conda#3e67354b24c7ee057ddee367f310ad3e https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda#e804c43f58255e977093a2298e442bb8 -https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-habc23cd_8.conda#9d709ffcc4cfaa5ae35a740084188c5e +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-h46c3b66_9.conda#c840f07ec58dc0b06041e7f36550a539 https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.10.0-h29b5301_1.conda#bb35c23b178fc17b9e4458766f91da7f https://conda.anaconda.org/conda-forge/noarch/bokeh-3.5.0-pyhd8ed1ab_0.conda#e49dc1da9805d8953e1326e58127c7bf https://conda.anaconda.org/conda-forge/linux-64/cf-units-3.2.0-py312h085067d_5.conda#b40cdf87aee69ccf162022579cb99afb -https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.0-pyhd8ed1ab_0.conda#2ae917b0098f286f63f69ec9365fb0b1 +https://conda.anaconda.org/conda-forge/noarch/distributed-2024.7.1-pyhd8ed1ab_0.conda#0a8e18bb76f2dd6ce7e9b1fb9dbba78a https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.36.0-h762793a_0.conda#6d8c86d0368625b6503d696db70ea041 https://conda.anaconda.org/conda-forge/linux-64/esmf-8.6.1-nompi_h0a5817f_2.conda#e23c62f75f67166cf4ca137fc8bcdce7 -https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h280cfa0_4.conda#410f86e58e880dcc7b0e910a8e89c05c -https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.1-hadf69e7_0.conda#73fc255d740d23da4f554b58dc4909fd +https://conda.anaconda.org/conda-forge/linux-64/gdal-3.9.1-py312h3d1e6dc_7.conda#2a6b88dad299a75916628cc8ffef5019 +https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda#1483ba046164be27df7f6eddbcec3a12 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-fits-3.9.1-hdd6600c_7.conda#114cd0cf835b0b396ff90a7e428ec832 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-grib-3.9.1-h5f34788_7.conda#7a40a828cc1a4a24050b0ad76c603c21 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.9.1-ha39a594_7.conda#1e84b86bbbcc9ba7bf978cd941fc96f1 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.9.1-ha2ed5f0_7.conda#ffd276b53ef7fb95e0f391b1e21b7918 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-jp2openjpeg-3.9.1-h2ebfdf0_7.conda#59a91c96e5036c64413da8bacbd7537a +https://conda.anaconda.org/conda-forge/linux-64/libgdal-pdf-3.9.1-h562c687_7.conda#75b565ed397359019a106a51e6ad909e +https://conda.anaconda.org/conda-forge/linux-64/libgdal-pg-3.9.1-he047751_7.conda#1cd7a1b13dabf9cc8a6911679938345f +https://conda.anaconda.org/conda-forge/linux-64/libgdal-postgisraster-3.9.1-he047751_7.conda#8e7addc813d9499ed2b554925bcb655a +https://conda.anaconda.org/conda-forge/linux-64/libgdal-xls-3.9.1-h062f1c4_7.conda#443029b63038425649158dfa3678b54d +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.2-h9564881_1.conda#c6a47e6f551890e82e92e4c1b84be353 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py312h9201f00_0.conda#e1dc3a7d999666f5c58cbb391940e235 https://conda.anaconda.org/conda-forge/noarch/myproxyclient-2.1.1-pyhd8ed1ab_0.conda#bcdbeb2b693eba886583a907840c6421 https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_0.conda#0b57b5368ab7fc7cdc9e3511fa867214 @@ -361,50 +372,52 @@ https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.1-nompi_py312h1ef7fb https://conda.anaconda.org/conda-forge/noarch/pre-commit-3.7.1-pyha770c72_0.conda#724bc4489c1174fc8e3233b0624fa51f https://conda.anaconda.org/conda-forge/linux-64/python-stratify-0.3.0-py312h085067d_2.conda#1e88f5023d2af511e48e4489b45b9f9b https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 -https://conda.anaconda.org/conda-forge/noarch/types-requests-2.32.0.20240622-pyhd8ed1ab_0.conda#41d54e5cce704c1854afdd37f3ee7036 +https://conda.anaconda.org/conda-forge/noarch/types-requests-2.32.0.20240712-pyhd8ed1ab_1.conda#a0493fcf860b2ca37d1c1d0f2952d63b https://conda.anaconda.org/conda-forge/noarch/xarray-2024.6.0-pyhd8ed1ab_1.conda#a6775bba72ade3fd777ccac04902202c https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.23.0-py312h1d6d2e6_1.conda#6392d3ce615ab0f32bc39b07f8f4c300 -https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.3-pyhd8ed1ab_0.conda#054936470636849427f181fc52903474 +https://conda.anaconda.org/conda-forge/noarch/cf_xarray-0.9.4-pyhd8ed1ab_0.conda#c8b6a3126f659e311d3b5c61be254d95 https://conda.anaconda.org/conda-forge/noarch/dask-jobqueue-0.8.5-pyhd8ed1ab_0.conda#abfb434fb6654f83d740428863ec85a8 https://conda.anaconda.org/conda-forge/noarch/esmpy-8.6.1-pyhc1e730c_0.conda#25a9661177fd68bfdb4314fd658e5c3b https://conda.anaconda.org/conda-forge/linux-64/graphviz-11.0.0-hc68bbd7_0.conda#52a531ef95358086a56086c45d97ab75 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-16.1.0-h56e7afd_13_cpu.conda#f946bff9ab0922a79e5cd53a26546e89 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-16.1.0-h34456a7_14_cpu.conda#9f76c33cbcbacc87a9555da65713681c +https://conda.anaconda.org/conda-forge/linux-64/libgdal-kea-3.9.1-h2b45729_7.conda#ee8bf923231d382e59270912fe27c719 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.9.1-h94e7027_7.conda#1cfe8f3c7942f8054995b9071d8508b5 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.0-pyhd8ed1ab_0.conda#15b51397e0fe8ea7d7da60d83eb76ebc https://conda.anaconda.org/conda-forge/noarch/nc-time-axis-1.4.1-pyhd8ed1ab_0.tar.bz2#281b58948bf60a2582de9e548bcc5369 https://conda.anaconda.org/conda-forge/noarch/pooch-1.8.2-pyhd8ed1ab_0.conda#8dab97d8a9616e07d779782995710aed https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-1.7.1-py312h085067d_0.conda#5f96475aa30552797f8099ccee24feaa https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.2.1-pyhd8ed1ab_0.conda#c6089540fed51a9a829aa19590fa925b -https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.24.2-h9260d03_1.conda#4b55dfbdc38db6488f3496f7175f8f10 +https://conda.anaconda.org/conda-forge/linux-64/tiledb-2.24.2-hc55ee95_2.conda#bc6b3a6693d53e33dea28c89e02745dd https://conda.anaconda.org/conda-forge/noarch/esgf-pyclient-0.3.1-pyhca7485f_3.conda#1d43833138d38ad8324700ce45a7099a https://conda.anaconda.org/conda-forge/noarch/iris-3.9.0-pyha770c72_0.conda#efaf150eb009f04efa58f1401c767192 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-16.1.0-he02047a_13_cpu.conda#af6fe29b2ff224505239ce660d13753c -https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.9.1-ha654e03_5.conda#d1b70328bd7ff0d7b6da052ca33cfe60 -https://conda.anaconda.org/conda-forge/linux-64/libparquet-16.1.0-h9e5060d_13_cpu.conda#b7a3b2128388bda1338c6ff525e84726 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-16.1.0-he02047a_14_cpu.conda#491c2677e91ada55bfe283dbd14d1aac +https://conda.anaconda.org/conda-forge/linux-64/libgdal-tiledb-3.9.1-hfcb00c0_7.conda#d8f858536ce539f884b7eeff249a13b2 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-16.1.0-h9e5060d_14_cpu.conda#9fc891cd8f6bd24ba3db2c12fd1528e9 https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.4-pyhd8ed1ab_1.conda#e2d2abb421c13456a9a9f80272fdf543 https://conda.anaconda.org/conda-forge/noarch/py-cordex-0.8.0-pyhd8ed1ab_0.conda#fba377622e74ee0bbeb8ccae9fa593d3 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-16.1.0-py312h70856f0_4_cpu.conda#6971b04df592bd625eebd5bfb1d9fc93 -https://conda.anaconda.org/conda-forge/linux-64/pydot-2.0.0-py312h7900ff3_0.conda#a3628f9a0ca8573314dc6f94f40a0419 -https://conda.anaconda.org/conda-forge/linux-64/gdal-3.9.1-py312h86af8fa_5.conda#c39ce48769813bd85174fcdfd4e5f806 +https://conda.anaconda.org/conda-forge/linux-64/pydot-3.0.1-py312h7900ff3_0.conda#d09da44e1f00d5f99adadd5aa6244c2f https://conda.anaconda.org/conda-forge/noarch/iris-grib-0.19.0-pyhd8ed1ab_0.conda#6582121c3b731b3715cd021f6a42665e -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-16.1.0-he02047a_13_cpu.conda#79ff4667979272cc344c6bb16e64d354 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-16.1.0-he02047a_14_cpu.conda#4381fff40c7bcf7ca0142ed4b0120dbc +https://conda.anaconda.org/conda-forge/linux-64/libgdal-3.9.1-ha770c72_7.conda#d077b243089f0bf40ce8d81981349cda https://conda.anaconda.org/conda-forge/noarch/nbconvert-pandoc-7.16.4-hd8ed1ab_1.conda#37cec2cf68f4c09563d8bc833791096b https://conda.anaconda.org/conda-forge/noarch/prov-2.0.0-pyhd3deb0d_0.tar.bz2#aa9b3ad140f6c0668c646f32e20ccf82 https://conda.anaconda.org/conda-forge/linux-64/fiona-1.9.6-py312h32ad294_3.conda#6da62c5c06a6416e0130220e4f418bb0 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-16.1.0-hc9a23c6_13_cpu.conda#4c29416218bcb470fad0b0b28ca932d5 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-16.1.0-hc9a23c6_14_cpu.conda#c35b4b76394d7414888fd4d66d7ae96a https://conda.anaconda.org/conda-forge/noarch/nbconvert-7.16.4-hd8ed1ab_1.conda#ab83e3b9ca2b111d8f332e9dc8b2170f https://conda.anaconda.org/conda-forge/linux-64/pyarrow-16.1.0-py312h9cebb41_4.conda#2097b6ae7186e10c9aab1228636b804f -https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.7-pyhd8ed1ab_0.conda#412b700b5a88f167078cd7b839881086 +https://conda.anaconda.org/conda-forge/noarch/dask-expr-1.1.9-pyhd8ed1ab_0.conda#1fdd81b57dd1e4a38b6e57f1138f4e61 https://conda.anaconda.org/conda-forge/noarch/pyarrow-hotfix-0.6-pyhd8ed1ab_0.conda#ccc06e6ef2064ae129fab3286299abda -https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.0-pyhd8ed1ab_0.conda#f0647685bcd2c8d78b6e8177d6735edb +https://conda.anaconda.org/conda-forge/noarch/dask-2024.7.1-pyhd8ed1ab_0.conda#fa1908a0e13396792ff849a34171d90e https://conda.anaconda.org/conda-forge/noarch/iris-esmf-regrid-0.10.0-pyhd8ed1ab_0.conda#a5ccce1a87da81d6c690cd11ae0687a2 https://conda.anaconda.org/conda-forge/noarch/autodocsumm-0.2.6-pyhd8ed1ab_0.tar.bz2#4409dd7e06a62c3b2aa9e96782c49c6d https://conda.anaconda.org/conda-forge/noarch/nbsphinx-0.9.4-pyhd8ed1ab_0.conda#9dc80eaeff56fb67dbf4f871b81bc13a https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda#c7c50dd5192caa58a05e6a4248a27acb https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.8-pyhd8ed1ab_0.conda#611a35a27914fac3aa37611a6fe40bb5 https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.6-pyhd8ed1ab_0.conda#d7e4954df0d3aea2eacc7835ad12671d -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.5-pyhd8ed1ab_0.conda#7e1e7437273682ada2ed5e9e9714b140 -https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.7-pyhd8ed1ab_0.conda#26acae54b06f178681bfb551760f5dd1 -https://conda.anaconda.org/conda-forge/noarch/sphinx-7.3.7-pyhd8ed1ab_0.conda#7b1465205e28d75d2c0e1a868ee00a67 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.6-pyhd8ed1ab_0.conda#d6f4b617daa8c677f60c06a3a61e2743 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.8-pyhd8ed1ab_0.conda#179912c661d6aa9fe794e81c854f8d9f +https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda#c568e260463da2528ecfd7c5a0b41bbd https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda#e507335cb4ca9cff4c3d0fa9cdab255e # pip antlr4-python3-runtime @ https://files.pythonhosted.org/packages/29/14/8ac135ec7cc9db3f768e2d032776718c6b23f74e63543f0974b4873500b2/antlr4-python3-runtime-4.7.2.tar.gz#sha256=168cdcec8fb9152e84a87ca6fd261b3d54c8f6358f42ab3b813b14a7193bb50b # pip scitools-iris @ https://files.pythonhosted.org/packages/2a/4f/9929f74388dbc6334c3342ff5f45a862322ad1789e32d6ab292d99d81f51/scitools_iris-3.9.0-py3-none-any.whl#sha256=1a9acfb872b50554de269d403a79e01e169c9973d4ec30a46b824c8ec710a818