From e6f6333f7b39377867fd3dcbee778c40f50355f0 Mon Sep 17 00:00:00 2001 From: Felix Date: Tue, 21 Jan 2025 11:10:23 +0100 Subject: [PATCH 1/5] Step 2: Added Assertions --- diffusion2d.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/diffusion2d.py b/diffusion2d.py index 51a07f2d..606c3e5b 100644 --- a/diffusion2d.py +++ b/diffusion2d.py @@ -38,6 +38,9 @@ def __init__(self): self.dt = None def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): + # Assert all parameters are floats + assert all(isinstance(param, float) for param in [w, h, dx, dy]), "All parameters must be floats" + self.w = w self.h = h self.dx = dx @@ -45,7 +48,10 @@ def initialize_domain(self, w=10., h=10., dx=0.1, dy=0.1): self.nx = int(w / dx) self.ny = int(h / dy) - def initialize_physical_parameters(self, d=4., T_cold=300, T_hot=700): + def initialize_physical_parameters(self, d=4., T_cold=300., T_hot=700.): + # Assert all parameters are floats + assert all(isinstance(param, float) for param in [d, T_cold, T_hot]), "All parameters must be floats" + self.D = d self.T_cold = T_cold self.T_hot = T_hot From e8cfec51b616622c942fe6d8def5f849905a1061 Mon Sep 17 00:00:00 2001 From: Felix Date: Tue, 21 Jan 2025 11:32:20 +0100 Subject: [PATCH 2/5] Step 4: Added Unit Tests --- tests/unit/test_diffusion2d_functions.py | 69 ++++++++++++++++++------ 1 file changed, 54 insertions(+), 15 deletions(-) diff --git a/tests/unit/test_diffusion2d_functions.py b/tests/unit/test_diffusion2d_functions.py index c4277ffd..5406f467 100644 --- a/tests/unit/test_diffusion2d_functions.py +++ b/tests/unit/test_diffusion2d_functions.py @@ -2,25 +2,64 @@ Tests for functions in class SolveDiffusion2D """ +import unittest +import numpy as np from diffusion2d import SolveDiffusion2D +class TestDiffusion2DFunctions(unittest.TestCase): -def test_initialize_domain(): - """ - Check function SolveDiffusion2D.initialize_domain - """ - solver = SolveDiffusion2D() + def test_initialize_domain(self): + """ + Check function SolveDiffusion2D.initialize_domain + """ + solver = SolveDiffusion2D() + nx, ny = 25., 30. + solver.initialize_domain(5., 6., 0.2, 0.2) -def test_initialize_physical_parameters(): - """ - Checks function SolveDiffusion2D.initialize_domain - """ - solver = SolveDiffusion2D() + assert solver.nx == nx, f"Returned nx is incorrect: is {solver.nx}, should be {nx}" + assert solver.ny == ny, f"Returned ny is incorrect: is {solver.ny}, should be {ny}" -def test_set_initial_condition(): - """ - Checks function SolveDiffusion2D.get_initial_function - """ - solver = SolveDiffusion2D() + def test_initialize_physical_parameters(self): + """ + Checks function SolveDiffusion2D.initialize_domain + """ + solver = SolveDiffusion2D() + + dt = 0.0019 + solver.dx, solver.dy = 0.125, 0.75 + solver.initialize_physical_parameters(4., 300., 700.) + self.assertAlmostEqual(solver.dt, dt, places=4, + msg=f"Returned dt is incorrect: is {solver.dt}, should be {dt}") + + + def test_set_initial_condition(self): + """ + Checks function SolveDiffusion2D.get_initial_function + """ + solver = SolveDiffusion2D() + + solver.dx = solver.dy = 0.01 + solver.nx = solver.ny = 75 + solver.T_cold, solver.T_hot = 300., 700. + + solver_u = solver.set_initial_condition() + + r, cx, cy = 2, 5, 5 + r2 = r ** 2 + + u = solver.T_cold * np.ones((solver.nx, solver.ny)) + + for i in range(solver.nx): + for j in range(solver.ny): + p2 = (i * solver.dx - cx) ** 2 + (j * solver.dy - cy) ** 2 + if p2 < r2: + u[i, j] = solver.T_hot + + # print(solver_u, u) + + for i in range(solver.nx): + for j in range(solver.ny): + self.assertAlmostEqual(solver_u[i, j], u[i, j], places=4, + msg=f"Returned u is incorrect: is {solver_u[i, j]}, should be {u[i, j]}") From 899d1619339eeb9033abede080fff5146408109c Mon Sep 17 00:00:00 2001 From: Felix Date: Tue, 21 Jan 2025 11:48:47 +0100 Subject: [PATCH 3/5] Step 5: Added Integration Tests --- tests/integration/test_diffusion2d.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/integration/test_diffusion2d.py b/tests/integration/test_diffusion2d.py index fd026b40..996a1b64 100644 --- a/tests/integration/test_diffusion2d.py +++ b/tests/integration/test_diffusion2d.py @@ -2,18 +2,37 @@ Tests for functionality checks in class SolveDiffusion2D """ +import pytest +import numpy as np from diffusion2d import SolveDiffusion2D def test_initialize_physical_parameters(): """ - Checks function SolveDiffusion2D.initialize_domain + Checks function SolveDiffusion2D.initialize_physical_parameters """ solver = SolveDiffusion2D() + w, h, dx, dy = 5., 6., 0.2, 0.2 + d, T_cold, T_hot = 2., 300., 700. + expected_dt = 0.0050 # (dx ** 2 * dy ** 2) / (2 * d * (dx ** 2 + dy ** 2)) + + solver.initialize_domain(w, h, dx, dy) + solver.initialize_physical_parameters(d, T_cold, T_hot) + + assert pytest.approx(expected_dt, abs=0.0001) == solver.dt, f"Returned dt is incorrect: is {solver.dt}, should be {expected_dt}" + def test_set_initial_condition(): """ - Checks function SolveDiffusion2D.get_initial_function + Checks function SolveDiffusion2D.set_initial_condition """ solver = SolveDiffusion2D() + + u = np.full((5, 5), 300.) + + solver.initialize_domain(1., 1., 0.2, 0.2) + solver.initialize_physical_parameters(2., 300., 700.) + solver_u = solver.set_initial_condition() + + assert np.allclose(solver_u, u), f"Returned initial condition is incorrect: is {solver_u}, should be {u}" From 97d6f7b9089fb2f4c007f6f177cf7e37f757270a Mon Sep 17 00:00:00 2001 From: Felix Date: Tue, 21 Jan 2025 12:20:04 +0100 Subject: [PATCH 4/5] Step 6: Added coverage - also a few fixes to get 100% coverage in the test --- README.md | 345 +++++++++++++++++++++++ coverage-report.pdf | Bin 0 -> 98226 bytes tests/integration/test_diffusion2d.py | 3 +- tests/unit/test_diffusion2d_functions.py | 2 +- 4 files changed, 347 insertions(+), 3 deletions(-) create mode 100644 coverage-report.pdf diff --git a/README.md b/README.md index da66993c..d0c158a4 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,354 @@ Please follow the instructions in [python_testing_exercise.md](https://github.co ## Test logs (for submission) ### pytest log +```bash +python -m pytest +========================================================================== test session starts ========================================================================== +platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0 +rootdir: C:\Users\Felix\Development\testing-python-exercise-wt2425 +collected 5 items + +tests\integration\test_diffusion2d.py FF [ 40%] +tests\unit\test_diffusion2d_functions.py FFF [100%] + +=============================================================================== FAILURES ================================================================================ +__________________________________________________________________ test_initialize_physical_parameters __________________________________________________________________ + + def test_initialize_physical_parameters(): + """ + Checks function SolveDiffusion2D.initialize_physical_parameters + """ + solver = SolveDiffusion2D() + + w, h, dx, dy = 5., 6., 0.2, 0.2 + d, T_cold, T_hot = 2., 300., 700. + expected_dt = 0.0050 # (dx ** 2 * dy ** 2) / (2 * d * (dx ** 2 + dy ** 2)) + + solver.initialize_domain(w, h, dx, dy) + solver.initialize_physical_parameters(d, T_cold, T_hot) + +> assert np.close(expected_dt, solver.dt), f"Returned dt is incorrect: is {solver.dt}, should be {expected_dt}" + +tests\integration\test_diffusion2d.py:22: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +attr = 'close' + + def __getattr__(attr): + # Warn for expired attributes + import warnings + + if attr == "linalg": + import numpy.linalg as linalg + return linalg + elif attr == "fft": + import numpy.fft as fft + return fft + elif attr == "dtypes": + import numpy.dtypes as dtypes + return dtypes + elif attr == "random": + import numpy.random as random + return random + elif attr == "polynomial": + import numpy.polynomial as polynomial + return polynomial + elif attr == "ma": + import numpy.ma as ma + return ma + elif attr == "ctypeslib": + import numpy.ctypeslib as ctypeslib + return ctypeslib + elif attr == "exceptions": + import numpy.exceptions as exceptions + return exceptions + elif attr == "testing": + import numpy.testing as testing + return testing + elif attr == "matlib": + import numpy.matlib as matlib + return matlib + elif attr == "f2py": + import numpy.f2py as f2py + return f2py + elif attr == "typing": + import numpy.typing as typing + return typing + elif attr == "rec": + import numpy.rec as rec + return rec + elif attr == "char": + import numpy.char as char + return char + elif attr == "array_api": + raise AttributeError("`numpy.array_api` is not available from " + "numpy 2.0 onwards", name=None) + elif attr == "core": + import numpy.core as core + return core + elif attr == "strings": + import numpy.strings as strings + return strings + elif attr == "distutils": + if 'distutils' in __numpy_submodules__: + import numpy.distutils as distutils + return distutils + else: + raise AttributeError("`numpy.distutils` is not available from " + "Python 3.12 onwards", name=None) + + if attr in __future_scalars__: + # And future warnings for those that will change, but also give + # the AttributeError + warnings.warn( + f"In the future `np.{attr}` will be defined as the " + "corresponding NumPy scalar.", FutureWarning, stacklevel=2) + + if attr in __former_attrs__: + raise AttributeError(__former_attrs__[attr], name=None) + + if attr in __expired_attributes__: + raise AttributeError( + f"`np.{attr}` was removed in the NumPy 2.0 release. " + f"{__expired_attributes__[attr]}", + name=None + ) + + if attr == "chararray": + warnings.warn( + "`np.chararray` is deprecated and will be removed from " + "the main namespace in the future. Use an array with a string " + "or bytes dtype instead.", DeprecationWarning, stacklevel=2) + import numpy.char as char + return char.chararray + +> raise AttributeError("module {!r} has no attribute " + "{!r}".format(__name__, attr)) +E AttributeError: module 'numpy' has no attribute 'close'. Did you mean: 'choose'? + +..\..\AppData\Roaming\Python\Python313\site-packages\numpy\__init__.py:427: AttributeError +------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------- +dt = 2.5000000000000005e-05 +______________________________________________________________________ test_set_initial_condition _______________________________________________________________________ + + def test_set_initial_condition(): + """ + Checks function SolveDiffusion2D.set_initial_condition + """ + solver = SolveDiffusion2D() + + u = np.full((5, 5), 300.) + + solver.initialize_domain(1., 1., 0.2, 0.2) + solver.initialize_physical_parameters(2., 300., 700.) +> solver_u = solver.set_initial_condition() + +tests\integration\test_diffusion2d.py:35: +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ +diffusion2d.py:66: in set_initial_condition + u = self.T_cold * np.ones((self.nx, self.ny)) +_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ + +shape = (0.6150622062000001, 0.6150622062000001), dtype = None, order = 'C' + + @finalize_array_function_like + @set_module('numpy') + def ones(shape, dtype=None, order='C', *, device=None, like=None): + """ + Return a new array of given shape and type, filled with ones. + + Parameters + ---------- + shape : int or sequence of ints + Shape of the new array, e.g., ``(2, 3)`` or ``2``. + dtype : data-type, optional + The desired data-type for the array, e.g., `numpy.int8`. Default is + `numpy.float64`. + order : {'C', 'F'}, optional, default: C + Whether to store multi-dimensional data in row-major + (C-style) or column-major (Fortran-style) order in + memory. + device : str, optional + The device on which to place the created array. Default: None. + For Array-API interoperability only, so must be ``"cpu"`` if passed. + + .. versionadded:: 2.0.0 + ${ARRAY_FUNCTION_LIKE} + + .. versionadded:: 1.20.0 + + Returns + ------- + out : ndarray + Array of ones with the given shape, dtype, and order. + + See Also + -------- + ones_like : Return an array of ones with shape and type of input. + empty : Return a new uninitialized array. + zeros : Return a new array setting values to zero. + full : Return a new array of given shape filled with value. + + Examples + -------- + >>> import numpy as np + >>> np.ones(5) + array([1., 1., 1., 1., 1.]) + + >>> np.ones((5,), dtype=int) + array([1, 1, 1, 1, 1]) + + >>> np.ones((2, 1)) + array([[1.], + [1.]]) + + >>> s = (2,2) + >>> np.ones(s) + array([[1., 1.], + [1., 1.]]) + + """ + if like is not None: + return _ones_with_like( + like, shape, dtype=dtype, order=order, device=device + ) + +> a = empty(shape, dtype, order, device=device) +E TypeError: 'float' object cannot be interpreted as an integer + +..\..\AppData\Roaming\Python\Python313\site-packages\numpy\_core\numeric.py:199: TypeError +------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------- +dt = 2.5000000000000005e-05 +____________________________________________________________ TestDiffusion2DFunctions.test_initialize_domain ____________________________________________________________ + +self = + + def test_initialize_domain(self): + """ + Check function SolveDiffusion2D.initialize_domain + """ + solver = SolveDiffusion2D() + + nx, ny = 25., 30. + solver.initialize_domain(5., 6., 0.2, 0.2) + +> assert solver.nx == nx, f"Returned nx is incorrect: is {solver.nx}, should be {nx}" +E AssertionError: Returned nx is incorrect: is 3.075311031, should be 25.0 +E assert 3.075311031 == 25.0 +E + where 3.075311031 = .nx + +tests\unit\test_diffusion2d_functions.py:20: AssertionError +_____________________________________________________ TestDiffusion2DFunctions.test_initialize_physical_parameters ______________________________________________________ + +self = + + def test_initialize_physical_parameters(self): + """ + Checks function SolveDiffusion2D.initialize_domain + """ + solver = SolveDiffusion2D() + + dt = 0.0019 + solver.dx, solver.dy = 0.125, 0.75 + solver.initialize_physical_parameters(4., 300., 700.) +> self.assertAlmostEqual(solver.dt, dt, places=4, + msg=f"Returned dt is incorrect: is {solver.dt}, should be {dt}") +E AssertionError: 9.501689189189189e-06 != 0.0019 within 4 places (0.001890498310810811 difference) : Returned dt is incorrect: is 9.501689189189189e-06, should be 0.0019 + +tests\unit\test_diffusion2d_functions.py:33: AssertionError +------------------------------------------------------------------------- Captured stdout call -------------------------------------------------------------------------- +dt = 9.501689189189189e-06 +__________________________________________________________ TestDiffusion2DFunctions.test_set_initial_condition __________________________________________________________ + +self = + + def test_set_initial_condition(self): + """ + Checks function SolveDiffusion2D.get_initial_function + """ + solver = SolveDiffusion2D() + + solver.dx = solver.dy = 0.01 + solver.nx = solver.ny = 75 + solver.T_cold, solver.T_hot = 300., 700. + + solver_u = solver.set_initial_condition() + + r, cx, cy = 2, 5, 5 + r2 = r ** 2 + + u = solver.T_cold * np.ones((solver.nx, solver.ny)) + + for i in range(solver.nx): + for j in range(solver.ny): + p2 = (i * solver.dx - cx) ** 2 + (j * solver.dy - cy) ** 2 + if p2 < r2: + u[i, j] = solver.T_hot + + # print(solver_u, u) + + for i in range(solver.nx): + for j in range(solver.ny): +> self.assertAlmostEqual(solver_u[i, j], u[i, j], places=4, + msg=f"Returned u is incorrect: is {solver_u[i, j]}, should be {u[i, j]}") +E AssertionError: np.float64(700.0) != np.float64(300.0) within 4 places (np.float64(400.0) difference) : Returned u is incorrect: is 700.0, should be 300.0 + +tests\unit\test_diffusion2d_functions.py:64: AssertionError +======================================================================== short test summary info ======================================================================== +FAILED tests/integration/test_diffusion2d.py::test_initialize_physical_parameters - AttributeError: module 'numpy' has no attribute 'close'. Did you mean: 'choose'? +FAILED tests/integration/test_diffusion2d.py::test_set_initial_condition - TypeError: 'float' object cannot be interpreted as an integer +FAILED tests/unit/test_diffusion2d_functions.py::TestDiffusion2DFunctions::test_initialize_domain - AssertionError: Returned nx is incorrect: is 3.075311031, should be 25.0 +FAILED tests/unit/test_diffusion2d_functions.py::TestDiffusion2DFunctions::test_initialize_physical_parameters - AssertionError: 9.501689189189189e-06 != 0.0019 within 4 places (0.001890498310810811 difference) : Returned dt is incorrect: is 9.501689189189189e-06, should be 0.0019 +FAILED tests/unit/test_diffusion2d_functions.py::TestDiffusion2DFunctions::test_set_initial_condition - AssertionError: np.float64(700.0) != np.float64(300.0) within 4 places (np.float64(400.0) difference) : Returned u is incorrect: is 700.0, should be 300.0 +=========================================================================== 5 failed in 0.41s =========================================================================== +``` ### unittest log +```bash +python -m unittest tests\unit\test_diffusion2d_functions.py +Fdt = 9.501689189189189e-06 +FF +====================================================================== +FAIL: test_initialize_domain (tests.unit.test_diffusion2d_functions.TestDiffusion2DFunctions.test_initialize_domain) +Check function SolveDiffusion2D.initialize_domain +---------------------------------------------------------------------- +Traceback (most recent call last): + File "C:\Users\Felix\Development\testing-python-exercise-wt2425\tests\unit\test_diffusion2d_functions.py", line 20, in test_initialize_domain + assert solver.nx == nx, f"Returned nx is incorrect: is {solver.nx}, should be {nx}" + ^^^^^^^^^^^^^^^ +AssertionError: Returned nx is incorrect: is 3.075311031, should be 25.0 + +====================================================================== +FAIL: test_initialize_physical_parameters (tests.unit.test_diffusion2d_functions.TestDiffusion2DFunctions.test_initialize_physical_parameters) +Checks function SolveDiffusion2D.initialize_domain +---------------------------------------------------------------------- +Traceback (most recent call last): + File "C:\Users\Felix\Development\testing-python-exercise-wt2425\tests\unit\test_diffusion2d_functions.py", line 33, in test_initialize_physical_parameters + self.assertAlmostEqual(solver.dt, dt, places=4, + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^ + msg=f"Returned dt is incorrect: is {solver.dt}, should be {dt}") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError: 9.501689189189189e-06 != 0.0019 within 4 places (0.001890498310810811 difference) : Returned dt is incorrect: is 9.501689189189189e-06, should be 0.0019 + +====================================================================== +FAIL: test_set_initial_condition (tests.unit.test_diffusion2d_functions.TestDiffusion2DFunctions.test_set_initial_condition) +Checks function SolveDiffusion2D.get_initial_function +---------------------------------------------------------------------- +Traceback (most recent call last): + File "C:\Users\Felix\Development\testing-python-exercise-wt2425\tests\unit\test_diffusion2d_functions.py", line 64, in test_set_initial_condition + self.assertAlmostEqual(solver_u[i, j], u[i, j], places=4, + ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + msg=f"Returned u is incorrect: is {solver_u[i, j]}, should be {u[i, j]}") + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError: np.float64(700.0) != np.float64(300.0) within 4 places (np.float64(400.0) difference) : Returned u is incorrect: is 700.0, should be 300.0 + +---------------------------------------------------------------------- +Ran 3 tests in 0.004s + +FAILED (failures=3) +``` + ## Citing The code used in this exercise is based on [Chapter 7 of the book "Learning Scientific Programming with Python"](https://scipython.com/book/chapter-7-matplotlib/examples/the-two-dimensional-diffusion-equation/). diff --git a/coverage-report.pdf b/coverage-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..055e4b172e624443f50ef6404feb0c27e1d97b2e GIT binary patch literal 98226 zcmc${2Urx_vIdG|P(VP*$N(Za%#cBH&RH@@7;+p2keqXtpdd(=Bnk*BARv+j$skIS zAd<6+NO(O1-i>>EJ;!(MJ8wRi(7n1=RjsOjt*)x>W>A-wWe0Qc;4%!YEY0A8L0lkb zb35GY*EzLq;SNv`la#Xu6lP`(1;L;$&M-JLE~gX>Y6f?PftXaBy=@&F%s6>DxIjis zy0%W1&Yo@{Rc#QMi-SuT1Z?2r5eD7j<1u0eNw~N;Ky{(!O15xLUT%I4Za&};C3$TX zWj2t5tvwVZ2eq(w1{zA)z?>bSoM3JU2S5d&tYv0p2D3dq2L3p{q5HRo(;1Xoz;$j5;fOaa*mcMTzDvApQgaP!x z{g*y0%s^mVPDvFIr>Zl|(ahnmMm&Etl9E6)I%%pb1>(ZxR8~a3>w+La$I2icTuvoQ`MTvs`so9O8*|q;R6& zzbG1dkMlzawj?7KjRcjD((SYx4EJZY=jMDTHmEwOQRf+ygXKMi-CL@@w~u0>O3-y= zg;^@SG{5gXjeERTRV}h>#j%Ma{l4luDEwtm_O?_{ND7TbW5O%!R;`}>s&SMpRI2Zk z*T-)14_6*j3uMP`OnjbP^={T7s0gGNQcj=cZqJubFm!TZGS4f{wE<~V3+9KtlGbc) zEr^qZDJJ8(mku*&v@1_tgRFBO!oa3sCVgpl4(=y?`DWqy&UMj-k^E!OgbliBUxjtc z5$meaq9c=>6CKh$rduG?`3@9i~ab+XFkdgoIGDS`+ znE_Ac)B;@60;;X>-<{}&ZlIGDM){cHKbXXF?B zkLBm*;@}1G2tqgn5kn3F^8)JN;yVry z{HcHPgAv}y!+pv>2+YF|;^8@!?cb2*|IRlpZLO@_-2m^0Sem+c{mwUe&S(JgpWEh% z2Ef1v5}+UgNMnWYofzwXRR`Xt<`4@ruoVwj0Bpur;gYAIj6=*89w6<+l`yPXxPE% z7SVarm?#}MT)08#YmNR=*MFip<*~+*Lo}vOp@mJR>C!RuC?1~+GN!yEKK224Qr9M zn$y{`<$5PWrGrzVk6v@Irca~{Mnga9&cKx#Tp{Vm1VUqNLM`@%+``<7 z*DO(7u{^h4u@u)pFMMe&eP~#_L3Fpu3Ci0IRT4AyFbmr%Lut95ul>XZPV7MiMK~|H!Uhk*K`sdk3c`j+Pu_u zbkq#d!6WE5W9Pr3C)MCtwJ$ZO)8q8Ps4TT4&52k4BkDC`p2PKMuKlcnwGXP#rgF+2 zV$~5r^~bc+;Jhf$vE-G`ciod+3$CVDMj4plpG`87T=w8ZY^wuDZ629bj za>w2;yZ1J`Dj&eezuGdV8QE!%fKy*{j3?W9Ny$czx+`niu@A(=m!L@qe;;R-2!C&G zSv_8yMnpfxYkFbEDr@X!;>?Y9-aeFg zX%NoxOgqMFF2YCq2}bj##lFcC6Xk=u8l^c>q05!|C2tB<#v~_L?-Cld+w>(qT|iGv zlDcf`Hr(Q76tR+aDAetHL-x6kj=H*#(i+eA(yp7IN+&<`m2M}0Dx;B%y)hlC_XuBD z#_zLvXW#m}td7Z`95&DtKwR7g=Soysg(=wYy4=dk!Pebud((f9dB2LXZc&64?K zS|b97mdNel&=l^5DOnYIvW|v_)dJRgqL_2NbJ!yGid`ZaL8DJ)HifKnGTrWFWc%;V z_{%HUnYYh9@z++)co<{2JaskN?Nw^|C=6{e+)XcRY`Od*Ot`p^Ls>s4+9$84AtQy7 zjxw%Ov;m?ic$m1G8T@6c)%FiQY25REX+7)5&kqM*Nc1W8O;d9^SGX(Ih(q zO8t}^isDx%@EEm##(HK z8j8jaImjC&^8USTYvY`|lsOs?=yblhs^)0y*3G90$6vXF|1Rh1v-Xkw^a`k4T>HLF zPL*P)j*P#V#b-mJ%khM-Um03-t{8baOB7m0|w} zZkvjb_Q-cvs#fe*rc%k?jPcg9Pt}MRkF#@0-n?7s1C_J?I*h-v-gq}?vPf9JKHF1M z4f{jEHV1}paNTBloe{XDv>THpH`x_TrbAP`zIIdP^Es)~K2@|Fg~7vy_fFW0St>J4 zhb?NyPlvnJ3Hk{p`7>`7XV2Zw8l2Za+wZrE!3oTNGWKZFD786gf=1I_u#zL>+_x{- z?=P~x&#L3$@gcdNiQ;>i_LEVJSW4xGirn@O6wrst;W8F78fK*J3pZ_7RXV=IBEp42 zK9#78Xz&%F`NibLSXgu=X0(`hwUJOrDIDgoYUpPyYe4ohY8I{z1vb{H>=cY;)!~kQ zkn5TcotdvvjI#_~EbiHRb%DNKIV+Idc}|H%rw)admtjZsz8|(BY~PC%uwZ&13o;0#jmrdwK7 zG?*9bWG0HM#o^|!Y4d9r@%oY%=7nIHedXX3;h#3&sQoCEuQt}UUJZ^XDviuCcn*70 zqEZT}$$u%1!~1wI-`MeChXY0rp;T0>b!Np{WYndn#QB%8Cbpj&iorNSCGuZWm@^l3 z)fDGyat*R%yPx;>v7pX7Ki1`%`o-X)XJ~bEVAyN?f@np?S*=bTMQm+PnDVfXGi}u9 zm~N!R5(W2yz!oU6CA5q*0sZsM$Xi!kB-0GpNN_|($Kq|5+_EM&XfHO|2sDodGl+(Y z1X5_aw)N2N&R&xz@0?K};(zLO`+9=plL9Q5dR;rdBC&{U;VL-y!P9MH|AAQblJQyf zq47%nquy{HOuyK-5N1c&^Dn+t-&f2wYa^<6wtPu*!!tkLGH$&PgNDBBt=?v!=;RFF znwOK-)f(VbO5qZ#S8yfcHPupw?>HvnrTb5aNf{P4KWE}DMERc+nkn>;x6wzzOE=U@ z3%c;q-so8n)e3#SW-bTrC9>4l4qK5a=Q>Bzy|0nJ^lrI@P052kc1h!=7RwVT$L$i- z5z^L|h1w6U2*{u+Kr5J*c7})UYIg@I)LbW7eOW+py{&*kAU#sKw3$8G?j!TH!Vc~I zF`^c8Iitm*%4CIikKEfltTeqHFjZ8^HPUO2RE=7=h4`*p%ux{Ojc7LLk5tXHmZsGN z>99XWEu%PUN!KZt$GA~LM`1G(eHeA4oDIXEW{}Kg*I44I`w?7Cdlx?c=JtV>#eWZym`X+;* z$M#wKHP!kMKIiuhB(_6Nuis>N?1U?u@E*QRx)%7UOQ~7Ajsx>;K}ozZqh|2@vDk+A zq;SOxYx$_~-4!&IM{-48cbD8;mhmFVzK**Dg}NAG$jIy6{yLVX-}_l5UT0JkdVcLA-?%-n?O6z=OnwdlU1J{Of=pe0U+6Hk~m z6ikuTW*R+N-E(~;`c$hq{1c_64c(^(Z@h;2cZ52VOK zIB`%!6a$jB0|br_f)6&Z51ctr{08#&SsNCp6=%_!{ZnT-?}>T`%#MtU`5x@tncmoZ zO!V@2O=6 zPqH(O-YF99^Q=hfl-|Ezt+cw>(fci}053`z$F1>p@q$NL?WBzpf5v#+f=8jg&j-aP z(Y+Zuuu+HG$qP@ernUs|r0ndc7tZaX;D5x~M0v%Splnj5S9@c!P~MU1d*;;plDQts zKJb-Iu-T*j@mDyBA~V#a+1|`TVjEXrs%+kpHS84(@4hz{O`&sl;f!8mNhcw*pi8%=WF>u+%I-V#SY$&7Bls-{7Cz^9y$bpkyB2bUmGn#V8S+``GgB_<|g&UmHL0EuaKyGDw%k%kwgP>8DX!7xr~?x6HfoOlWiL zsdizFs^Pc@&0EtO>V4?1d?+&MSw3mDm^#1k(l%!_K!FeK8~4E;wk|JaJ&j=3&em0) zAl7qwHdSZ79c$uc!kOR55m2~CD9ExFG$>ng8SQ1cwpX|3)|*D3*Ulc!G}=C0=U-Z; zFoDmzK@$7z14EWb=F)bALBQNq%OnJ`EW?eyVey4zQi>(Ldi>r*0KGm!A*8_W5 zO04{1gqi%&UG+?2?=^`ti>kAH=0jicTEiHNVtjydfV$a=bDt@H!JD}Ab2!dBL3+go ziTqOO+i+`tx2$(!mn9@W$BI?^wg>I(8#u>YEm{vJO}N-oTU?BQ3dqWpJ;0(Vj0yT@5cnSv7IkD$ zTNCQ$><+Vlx*>wMKvu>=3krmLkqH@2ZRjmHh!Yw8mOTBGI{j1t;wdt>;Bs1UM4ART zRE`^jh)!tYa?0_55V;h@H$D&|6QT)3Fn&bU5l!`gm^(7;j@%*Z48&@It+GHc`Q$KJ zeh?yH4G@qO03m|5h;M=*MEDZ%4GaMS??1kCgTSZV%7S@-sMn9}yg)qf$9Eu5dCCTY z5f!MVt(m0rt&<4101uc$5G*Jt0OA$o`72U{2*0@jQEwz4K&%@<3Is-S078ZyHGw<; zaw7!E3ZM-sKn@`6>;^(cX#hsg2BX~&=_743b2kvD7Lfcp2~b0j+@1;VoJm2QgaHvl zi&1a?olmT`bOB17=1&Q2#=fUZH1Q;n)ygHE-m1Ty3{ z{)-&rP~tul{yNdm-zdr2 zTD!x5M2&<49LOu$ID2y1*jhqC_E0Z#XET^3$jt`GeOkD~-4F>#5cjG0KPdvtceX=B zi{G*SlVZ7%1_2BbpiZPso~87U2=Cum|B2EWU7Rp^mJ-6O|9zfL9pYyh&yxE`YUp>2 z0r_5}5B@|Ba+chg%;ztMNZQr|srysD5V}GR{8<|RaD(5mbXHeLj|ZJFd6wWG`3Lu} z{Db!lIi5fAk6)5IYh*lsWMn+2M)uPP2%P2aUs>8ost+*#U&)DNMiYQv0FY0{Pfb!0 zz%n2u3OWHpVDwIbLsax^xBtpFe=_i2_APjp+#gvv&o8YUe3st7vZ>!|<;1XnIqO$y z`I{bpQVUYh-+8M%8Rmj@~TFExV{<$p7nKXS?+{r#{#B+7!%&RWP8zhhnfZ;C$A29V7} zDCLY!k%00$LOwitSynkfuyuUQ|v(AHT@jD5$ z%W?depUlu z%190nRT~nZ|Bof-<@!nTKk^0MzX1+%+#qMs4%y=0Hvoj>CtmPhk(}?$nDhOs+3F`} z<3r56z-;sr3P8>R7_!A5Nsi>;zcl6oXC?om36t+vYgNcu{6n_*Gs%(u|6j58lZuWX ze*Ui{*G3F6i1$=vgms=E=!wgNPV66aVho@Y&74KkKUz=mp01}5y`1RdFF@k^BS7N& zB_N$W6GFE5-4OklUHOpf4WwTqdC>gT?0Rzk`Ij^NwC+Gs_+3}p(g+>%oz5kI^e629 z!W!g(8Xcfm3uO2+ZUY+s8R!443E+%!{|NK=eu;T!SLMhSeP%{ei*!rzcAQH1Z>X;+GiwHno#|9fMHSUdlxh$Qewh$QeUMB+ZX;zqXkBZ-k5{M(51e<1N6A(Ft~h8H;_bDv#l zBU}8L#D9cH|2YN={1GAv{0fn{&#thME&fd6KS3m}{~Ut_{%F}I@T+AT_t}*-vc;cC zjKq$A&yW8vFc=9Tzvb}n7<__mpc9t{o!B|(Wbi>J8aac(f`0@Pg1>}`v+H1Fi{G+~ zT$}>6_Q6VB$XqM!`RV3Bg~&#M#9u zvc;cC{6{eHp97=dAHf80wZlI{58P)Lr^pt6Ch?!Z#Qy;>3jWbr3P_3mLgKTFQ)G)j zlNjmJ|2<$tLdb79L;|D0si+8~L82Gv#HB$eb`Clje9(zT&Hy9wxZjcg>HOwQsNn?K z&QL<``yHjz5G)WD`4zmL#7a(2=RqecO3;Z^K=S%*KZv7$*UwKJ{|IgadO2bK3?(qv zA7Lbz>sKHNK07U(H2EEKKi1}8uD{MEPWbqBgye6k`e}6z=0afD?|S=575~%aPq9bv zS&%`a2ctY zlQoD5>V!;?0~Zwin1D~Rtf$6@xUvqh=S&x1t{?M<;b~KD@Mi1ls@R!IWDAu z{G93n@tjaO%`u(iYJl#Mlj9GqfljjRpdV2}q-}ss6B#EVeW17l!7%6~*bCx2IsP=Z z#&@#sBsc=%KiLOd>xeku^wjUmSL@++$DjzE|VQ5$nYBvaKUqI84`};K|EfT-lM>VmQD*bkMnHL|6TgBq;&9+MlKrzh07^z>*nHM<^?$S$xQ%$5dR+^KO@B1tDsLVB?klL zPTT_j;%a3<0Wfe8-(T08uleBIN|6~|H`FnG{7&fmXhD-|veiCI4SLhV+JpupnANDvDP>SwKy zEHd$pjnBP@8(E*ym)Et5mS4D+E@zf%r9Ku0p|GK=2ikITKcQ&6_2sI#1&X%rCABT( zCdUEYm(QEU=htdt>@ya5G6*h;1-^dYZ7|Hpw^5J5WrVeOr^nf#;#N?ibvbm}mucxs^|^i8yWI2R=oyF*SOUry#~VOD6sh zWtf3CW~Dv*?jgUpK3YGqO57WEU#4{w`A3QT>}B@eIfwm>;_dw6HrKGpV!7yvgn9|j znNbq>5!H_2qA{_#%z2BG(q!OJGm%-&hJ^Og$fI-3XWfscJFn^>u%#69P>|KjGA?M! zpt9w-H#2hLacq|?^R3N82`QPzqQfUEY7PQ5FHz?%pgi!WU;@cqM7w5hk#mzM(1lDQ zw}Y#vLz3qvxq$!{*9G_KJKw%fH}z6pwy^IMTD&BB)4+B|0HWQ75EZany-f(dddcojtHIgojuKK20y0vpQU)s{*V&UvD<9AVtP#}YCYbS}dXO`DoU@8a zeRvloBiIzf3zho@x>vLd8}9anHWy5kyqy~-6SW;!^FEA4AaiR@9vKc zvuPzN?ri3|(1ER-^ij6@CPRjLgzMq^5+*5XlAD4Q>LE~dFqu}x#TvbES)P2toq=H5 zPdSaw$4uImT_&)cJgU#dA>JklEYbauP@CJ;nC#79{E%o=9`ugNi|5r7NO-X1M%X^N zkuP(p(Y4%6%T_3EF=CUV=7@;4t%_h^+E`hU9KOjwQAx$FJ`gC&mdLHC5hKfER!HTS z!&&2u*^-2JxwlahfAFI~E89JFg3HP3Aq<*w>>POJoZ|G$g*A+3f(r^U7z+#zmFm5P zGjbi=rthU>Xi3aDC@dXcvRe0nbBe$MS~_2@EqjzHkOwfzB?aP*g{mH) zZ85bsJSTcKhq(x*JboF+Bt;HqYG1pWz8n3vj^+*Pvqm_s!>BjoZv(526noTag%79HRYzZPejTpxR?#b~3 z5z8E+rZ(d-IVWxr9DWW-R=&z<3-Wa<9o(7odr{o<6>~6$kYMI9*}9VRr1#&6(Ilb6 z7+41z-q6fa1mIt|p`ClhGe0Jlj=02Fx2tH=F;WWiM$To=Tx!ZnLjUVAo(je5Ovh+q z(b5GLkQ=$gk8eA9><{x6?VKa048O^CEuS!;EoMxDYTmh8gS51Ju-3h4UYIb1@NQVl zCL?@SYMZwq!$d{5k~9V9#l;!DIMeg?b6%^A3Rjbr=`X{v9SgozLb>Ru>A6sMDlYQR zs=kP9XqDj`RIketDY*W~w}{52E+RsTfN{NfV~d|imMBs&qw8@e$F?YYp4+0xE=s+z zm$uiWIvOiSv-w19#};oCokiyb7`TK{_cmqc<1S-M%6Ag@1E>b7oP~0FB8IQ;>)@tJ zLLUr1G%Bk%@k~DIx9wZ{q}t@MZ-2k-amNLtDEm$O1Cp<~#P=$wH$G6Www%kOr@fjP zN}M{@#RkKu4K`A7x<+tYt~0+Nc@-qwd2SmlDBDOkt)Z?iqVm8aLs6?Fgd_jX(D+gV zTzFE|vtMoL8Qc9r2q|S7Ed35|RpBb;)A(`=wW>qK+f~Lhb!^6I>-dx2lk{~R?g4M9 zM-g@k47x!r%N`=?E1nUWFU=h~wE+V6(blU1`UBAt9-N zsz4{DaHTe}2jtdCSC#S*)I|3-slKZPwi-a&m*_ap4hszq*C?af;S!1_8MK8{G=z>0 z6vC++;yeb8chR{kE|N5xzf6iyz_(o!BC7oOE_=g>-WJ*sFw z+pi$PxJ7X+`FWTXYt*jJJ`02kYiI0|Ytw^-MBZJNK?SVk8;c!7Tb3;GEUMnZenF3l zI+kwng{9n1*OQh*uU@i9=|GuhF?7-M3LhQNeV444OTeHzM8B_IP3+npe7!H6mE#L! z3i>@#!V9JTGItbX#8UPcoJjJ%&NlqY*t>?k^M;C#UL{wfa|Ku%DH&O^cwOMn$+S#z zCd10t8i=C$BKoMUaMzKl{i9yUbduL=)QMmR7=!35nk7GnNT(?OV$rl0(xfb+6e>az zsd8;zYM4Y1Vw&9xq9@D6B&VBU4!S*K-A50vOFbKEs$hPtVN71qVQv(*Qkh~Jk}8z2 zEu@bk%aZtD_k)K~SJfq9rw$f2DF#R-A@Jec%? z!Xlex^n!HNI{4y#=0`Yo>t(N$9@8YMZ1eUUfw?T2rr-=XYujR9els zG+jv-W>KkH&3(fOxT4(Yzwc_lZ)dEy_HcNu<-!r86TQ{&4yJMo_pPxUskr8_mS|a% z4q2lhA%k{9y~(Ap=hV;gG>`nMsQ71Pp(U{LZT8XGx6jeOe(=8@+fgC0?w3T=I_*p= zJ6Ed<`Lg2_;4O0`D2b*kk;^b_xlg*p$Mr77@3C-?gD7diffAfmTw1=fN&cC}QjsBJ zwVtHZu}qyxw8MKfPfNYATF_+QaQRA+A?MiQ=4L?B`o)Ifa&-5VK)slcMu|tCmheZq z%`o7Up=qJT#cmSe*+s%VAa^WTt4jvAEzEl{vYw^;8$@%-x1F23mJ1a(ngBX#V=AJ$ zTcdBIK}>{bpb=mY&GU7Lnyz|`nE3edlIjzKK8!3+dU(d{H z3p0_ax~HdGnDo-|4xB*gqLnOYS3fN6_3hhk5(;8!o*q@VdLqRapWv|XC@P(@K*243 zmprK7`i=opl3bi>rYzZwj!R8P)>_-|5@ z!Kz0%5`=>mUMahM${{SPIQRMx^xV|zgKBPL=`z zVv8Ka6DValA$d~+S&@SG3t}TF?g+dxxX8;;@=}Pt6jIq^KwKkG(q1RoME6BNphNtYXHlD^HKEvsM}#5UzCMX$r*nR} zqP%ZV7>x{*WEAD)$WI*?gA+l=c&{$XPEcRoTIUiAc+AZf+l#xi(>H&s<=`N>w_m*r zUat}o9zXm_UhnpszIx%oOnR9k?P!a67s|>ukvD3X+Kvw+yPuLtNgcLM>YL#Z;NWnz zS8$2B*5|Xbq2a9uNy)vx@GaaH(+V4p4lnmyVA-pj@X&sJ;9p&+`{rddNN7apqBZ$L zbEa?sFht7yb!R5}TkY;Uk8YO2R0Kc5YVqqH7^Kx1b=--rV~#N9Al)X&E(NwO(8N>R z(@*uWv*n12r4Z(`TaBD4z}4Zn69ddSt5;Bz<%kU`@#|(J9#9ImmXzzw9 z{YXMqq7WH8%@!Gzx=qG|gS*1gd!*o3PcE(~v+3`Bi^w7*ye+tu;=+FgFqd$6bNpOu zEc%_5=PTc}Kf*p5H1^cYHbiiz>_f7Nz6nyE~(kh{QXuoPb@y{v-SprQ7e zL`xe&_nEM(RmMo_ac%hXv>Rsn+sRxVGTh77=sFd}kELq-d8}ERb%*+mDS-$$a6g0eeMDuue zdp#3($fmNTD19`2o!|C>(~#(pM)J99_e#2k?F?uhE`wc@-&xUtFvB3p_eI{+hfsvy zs3^nP6>2aar5uE-kFtJc%@{1-W!iW8SS*=a{2ISdPUDi;v23_ZTc6tVxi%v0OO>0K zo{$C8-N_!TKe!|&#*UUf`-ySVs`4nMq&;e=&8z>}LK;W+WjR%Urz5jFu~%p5&AX}! zAJHgvsWDq+U2#J7N}P}3y)42aoF-!>_h@N#Rr{#c@4IJZ^iI8}L@Ph@Rk??xus7ez z3PGzKZ`%d!a|rg)u84I!Ijp|_siTMmK4>gd`Od99HsxEVMv(7br1<@eYi^zf4hNms zSt`#=o~acn53LPRkAUwzQg~ZBClrQa^?DH1jGmE<&-{s8oDsobT>k7#a5VK|P_W6f zD1i@GK=cuC%7XD=jTW*C5fDvgO)Hk2R1z8IXr7GN2NjF*T4Z;V zLiIjl=0&{Yxs{bfrZr+iq@qRd6Jl@a>=L&sf=Q3I;A&VUmvEh>G3nr3jPG3hsx@Il zb!2w-YFv(K-JB)%h!Qbbq2mKt72ow$oz>T=9fgI<-B7Hg?Cbym*y>nkrNzhS@Q;O* zuO53lwYq4t)9ZApH7oC4dqA-DWMB=?+iMsK{rsNs%l90c{tnqk{#?#xM{RfJFO$SK zUA-pbDp~;_d@hEUao4nAby(G`CFp>Ry0rfMmSt3hSx~gPf1Pts`0iZX;VmgKlj#Kh zopt;Ow*rN`4mmA?RlG@oq2cK`QkiY@(OfHY581B1x*e@eL^5K(R&4TJE*;IsbGO^@?r<3BHQn@|oM7pbx%}jHkqW!Zr%#7;o(In> zEnu>7J-rm*>u!3ob@q#i%^{h#Xw)ShBWaMA8JQ_}FVc`w5>sEcjlw24j|aXNi`k%R zmI7*M1?L)!WR7Ia!j&^pXkW)u=(vsUmKBc6CkyDsL9>u*POG`4z zV-Sp1s+N|kBnxUERJ2>L9kRZq7@fT4;VfGx8*NAJ#w&nZgMBA7N8TfUDTXIxRo0lv zD&*eq(_N=&gC-2OGUMDGsvSEP5sI>{Xi++2gBSUFF~=X9LpNf`mkhL%K7}6*S}w3E z=oLrj^?8PrPKvb*nc9&Kuc&m&_sPGtc^_&wjsC{?iHD}F_mXnWVE({}NrLPRAMQaN zFfq97<-sx)L*4`Lq|$V%uz2t3yk!aTf3%4bSSpJSnQQ|>$w7Z&- zaWhWz&Guz<)=`CN%^`Ue&d0Sz@B4GjqsXFp8tzKmXG?f3-_)Z<9e*umx#*Se-Sq+a zI8P%hN!hwd4l3W|>9|_*C699Va7OhTVE$U_b>%y{`6H5pldMr$3|Gq=ZZ|HB;QPpW z7afc!J+y*Ec_A`9f~$LT)RcVIoua{-=c>ty59A!G2YsA{kOI zJqR9*Ctab0L`VA_772!0@q+?e#S9aUWiS5_SD-(sVVsOYZ_PmOHy+>B9OggC$*`vT zO|uCoJ7%t|Ztp#LZH>n{+@aXb+oqt@ZT;PM;fZA-v>Bff>j{O9RBgv265G2U2lO)9 z2M=EO#O~cn=Jl+VlYcE@O=6bAqIdoLU8?y8lgGLbdt-NT;&Dbqr_m#XnswL8wsuBq z@keGi9rFT;0>1L5YJcUR65FU_*1uOVTBcvR()BzR9+9}`yYv3#;A@c#;o3O)YekFK z9`n8V=x*a?j9=fP_34egGi8LjkC(fKtT&~M*}ag5=>rSb?5%pgI8>o5XTa2i8LErx z`p5YaAEwW|D?oM9SCT0&zJ#H3NnKH~`}*22(^l8L3GuQNmMY0K`$P1q-Z4Wt^_8L^ zA*CGpqSa2kXoDuA#OFQ(xORu_;>PwUA_9?od85vRw>iFzDd3`&;8hn-%<+AC-cj38 zzhfh+;zXZUD$*hHC>JB%s&iq>|~TG($a zZofHfEww2ojNt32e8pi^q$6q(qGE8_9``xjB+Bt>YIKe*9H>Z5QOxNC=O z-CQuA&e&3QZNG6AeXC?NrP?frE0I}Wv92@z@n=!6IKij_h()U5%mq`7$dsg176rtm{ zd8KOQvP`u;U2N7NUJ<$J2bTTVv&c1+Py6nZ+aAyCNJ=%%@&Sd;kRWe^TU94qwY=+N zaS1Vh{kK_jUDD^U;>JMt(5Lf65tD{mMFTvxN^K?k%nP`hE5u*hOYQDFP>R`=`8HfB zszzGMHv6fh=JE(fgmFzVvG&q(hGm2?nOPN+SBG^0R^S7kbHi}k?X_W&`uC+5Y^UFL zdgimD@F|vW6XmLGgpth~-g&_8Zp-5z8x8?`Y4RD~Kfhny_3Bn#b=OGg0>{o+vW&e> z{>Nqu`hNc^n~aH-3UO`<&bg-RD68a4j<%L>c8`)OG-FuU>jm`br(&OOk6_TU8NaY$ z!F<_ndrXJz%02z-@rqIR+MZ3Pt$lg2_vN1DXk{_25{W%(+iMp6)#sg*okcy^^KHp! z6|U#TB9nra&BB6w)xALpirsdXYX#ZL>Ot{sW>_(3GQ=@xxqY<37sp)0V#3^-`{-HT2ug=}qia+Q^exT=hF)36PUtZ(bvY*zh_{Qv zH-vU`7ez$;>(HT|j8EtrTY_y{g3;_Q{-G-lMIr){J~>4q)e-CY-xp2lND1Ktkfkg0 zLn3#jzTP|}_vfArp@$P(fD=rjo%d5S+P-?(SJaOnrBQA=By1fsw|>bCE6L+y$7Jng;0r$uoU-}EJY z)+O&{H%{l)IeaC(P$Zl?khRT!P1r0~ICn7XuBvBV#=11|B#ubw5(m$Ku}xupMg01! zLpUibYX@LThrTQAf_DpDfLwxiarXWA=BR8tD_QA@AUOze5Z7jmXullH5pHhrLxC^^bbf-myvjgrec*(o= z){LP{?ArY=xl)e)-p|H)EsM)*VyZ=@47%l4LJDf)t4&l49@CcB7JMceT&63(F_kIhsP5B5cCn&N(}i{RvUJ`=v+~ zxi#vh&hBWY$Q+M(E#Vs)!eo3}!cViAUG-sFJ`oudD2xvxuh&@E_~%@AFuGyUi~&D? zV}Sj6s#CLQ9R@CBi9~ydeN6RPAZ@Ud#1Z*Bsyd8G`1$zEX16*F@74Sg&~u$Z?2KsT zjA-ACXhELKWi~AF{o0EkUElrR=|QFvlXyN+#`?)KF2_GekcO7}-^CRh1y$3693 zVR$-$VwYm`WPopCzxvJPn-K=A4pI-RwB({qX|tYcJhA$?r_dlg=@QXwao38>u@h22 zxr%wuERgoyMT=O7LF`Psdj2~bp5?gcBnq?Gt(_~+l&-^K2fB~D3B}Cl)vr3|1`oar zc&2V%@EpZ}hqbVf`@BNQsBz3-ZK;RvgBGTeHN)iQ%=XY+;s<=c0`z)1%SX|WOn9og2o-?8lyyk)?v+&sg zlAd_Y)%IF)E3@>6_Ze7em!9EKF@d*OG8i5Rnye+f%ebLAk(PE1>{>p?0ydm8z>w`u zzF1aM@SMGkh4w1W4V=o`S8+=AuG}UMofyNa)%eod`IXEbg?Mx*24{u&i+8}TeTJKs zac;MaP`i&kYn#PGJ2?g8n*0KT`lYIUbXR)aal3}*PlmnAwKbpV9+wQgh_5p*AJusH zH16@iIoHCA37(gp8A{`e$6dgDH$} zH*fj88tF2|?WD(c^{P>q%OzQ0O38~2jzy)_1j)?I>O<92Tt46OfsuM$WvT*Bj^yQN zjo7>I-J#F5G;{qhIRU(?UerQsxo!p4WdyL*8a*O= zV}DQ(w^Du{hk0vfUHl_3UA`C4=+dK6AO09El+28MefqdN#4BkGqkMM>e^!;2-R28~ zy|6mdPNVQ+bA+U^9%o;)6{ivVn^u_&A9wVKH5jdW_+7V+BB)p5`S*DYcd-oWKG?1E zDwqaMk=G;QJ&42g0qi;QuqSo{Tr2s0+Jc;)ANt{3Dm#o`G&KbX>< zZ`srBl)ZM0OApQrh|;(n-;RC6084z+)JhgRZ+i1#!5mj~K+x9h1#_Nb)FyHKV^lA) zmL_r0_H7Fn3o5a2)YwlQ>XAnN7i2m=X6KVNeaOy7_d0M>78ezZj&j+_zZ;6`e<@j` zGhr50K}n-EVOH`IurV0t0Q-TW5FYV2LgkLD{^;CX=>g#o1?ySVBl6c8uL&$j9&EN0 zC+^ZIe~g%E<~d@1akp2j%|ZE7ge%x;Q%xf({Xk1QH!~nw>1tMp{y}!JEXFaToeSYH zY9Zg5m z5FKl^6GR=e%tiEvdL7WS$xt6-cUJ@kgjy*Ws`rVt!r10%W+7~|G_x?^?Is4tN1B@q zBs&C~N^CPUA8-{OOVb~t=;lTR1eR5%(6q8B7!LFh%u-ZuhU{HVbK45Qzq9q#HLIY^ zRZuK&r81c2C7xav!A(5>E`krTM$KPaB3QrqPlT53oqO1(<16OWJ_5Wovoz8?o26)^ zS#iPJXnwrKIu$bR!oJb$>_R;qG0t$veq+b)IU4__-yZeo=9P&kUSFE^S8>2wc)~`T z$n&U;wg$cKud`ooPemB+nLO+$_vKvg5NaePxJf-7g0*Geh($2N*N7GH(s}R7_1N)m zK6~{3-JWx5&qFra>G!CocK+AQr6AD`m>rK6YA;WPw0&nj^O=AHAE28*_^11S4G zXdIE;Z?iaHKhPO`b1Snc%;_M#DXeJ*=ZNGezG?GW1qS6F$91f@jaNH1bI!9E3Z~M+ z0mR4RSkqB=`nx>MS?|vaZ$bFBvu{}tuEk(Dlw5vAaWt))(V90Hf0B;P3RL(oPE*Ca7bvH4lK0f}Sq|o%r=KxC8 zapefo*lq&6HJdbEo;IhMjwW85G2Ej5vQsX=yu|#X&-9fo)jVg=9NN)ffcgHhxbpGA z^z{eFJB%H>2?19h1o)aLi|x{b5A%1-_anq;AJDAEEOqxrFKrylD+idi?|$uzS;DeZ z7VGDHK$8eQ42)gE+Hc!E{M5F4g?z}zQhDPWf9%r6fmrmC@GL)|Q3wl2U!ZGfAE0lyKY ziXcu2wb12th7h4hTOt53mJ60I>;p)(mh@Fdi;G zL?Is3@di+Z${`>qz{3qx!%3OBoId=6AI!(W4cus55V)xYQ154JA>m{VJZgvQq;pB+ z9md%C_;@&Yfkz|=fY`YqJixOB_<`D02vD5~6cTa^p6mk3;SuZtH*|*rcQ*T<8>9WG z8Aaaf?5FxdMC+4d{t_8D@U$ix@cwzf#*E%LV$atoZZ2PD7b|{ARJ&m zexQUFD6|D`rNzy`1t<_9-Cs=sok{D0_<7Gh-UE3fxKl;_?(X;ye#AXW07*`skz<_H zXV(h4*uEj!M&(HmbM5LRN2s_fWoK@HO&!5a_-))cLJNGa?|Bal7bRvoe5XJ4$b0!X z#(fc=o@5i=<+91A;@DZfDw&YacePu>cF8mPS!O6h%ComlhSycg$*nYXP6!sas|iF4L6IAp33QkFwy(+QUAHnb~Ji-JX|cvZ!r~*%_VaNJnSx0JU;ZO`+s##Vsb=?J>iw?HRj*q0LWNyZ+Y;-02T-C^(y~x!&K8v^Ev%s@D|i?+85R9!G&k*~bSsOAyr`PocTFh^>4w`RA)OvCZ=mCU25=iMYGeSbv#e|EONP~`s)_5E8*e~Ad9`TtpU zGER^RMSqFp-`Zk@*w6gk*DTE-x`!wcLKFl3_Vj}!_M@|wligocjUbx-7jXSgPW2zq z{=Yd@K3?wsA5IklL<9ay($9Q-{WN7(-#jM;1X>vw?B+^~r;7`MvYYHkP|&rB8D;YE z6?--iel%d^!-t|o?!Ze_*hn73D>~49j z*a&+4BHrxzD5G3G%hNUzw2g4N3?7K-Sc*iyfLYOm(mWqu)FX%^dbnfB-{SnuZKXZe ztL?Ro7#TLfX@8!SaYAua55?$%DX;1rZ|t7o`i5=-yEp{Z+UhN<30@vNEQPTo3hJq% z+OP&gTcQMYO%SlQIh;Qnlm~fh;<&7Hrnez^~ONuw){ByrQQ152Z?e8s^cb; zEfcV}xitk{j2m=meexU@1M)IN`R2N~)n+PtLeT}PhnJs1Kr_RN-RCHUo(7Qrki=ah*KuU@8t=Jlt~8r{1Ay|6#}?O2KAVq=B3-* zAh>#!Z*U4&{h_2~A12^_5}0|_NjD3L=IWx~BL@?N{t`uQ`!dcs3`be32URS!M>b1V{{8`ydpmy& z+X$%qGuh(tydyZywnI(eX@Yrk0?J6^NH$r0+wsXYp+KRC<{HS@VY6!h7uM+B|2nr4 zh%H_q}F2g;o+IH2p*P)`cb5AnE=qOu+Ctg%bT7q`? zi((*ip3s%sOvsLIQIVLqWC-WJ7o&>6CSPwEO-nzDXNRQr%hV0k&~18up#kT0Hoo!> z911EhMt9g_gv|?`*#cuUI854Wg!A)d#@da9}I) z9}IZg_Tr2W(fJ*;rcZJ8xO)M}Zf2tCbf-nqnhox#;aZh7J*B=)?c44M6cZW8%Hkfl zkk0`a6ol|^X2w|sh|?%Xc~n3=*b}zEw(%EbZ);ayF8~Z{dU$I`W0b+JI~lIu0RzwN zwH{j!jMCv_X_X(-J-U4>+zr4 z0zM}7=*6)$0@tmk{KmDIGO+1O%yd83u_WHLpQ^a-SNI_`JOn~JQrUD{QhJODjyZmo z+UexlURl*%1R)VF3$JZE3+5WINJQn&ekFf^{%IC;zxKz6b`N&&=+y zB<~A$=XBO966WJHMPeN3BaKg=VnP9?ADGbfn_@ywOcxmO5C6Cf`3rOaxJWFY{c(=s zTLd)N7u=@@2}9zKA_(FoTR@h*xeE@gFtE@Mq-p2G1nNgt6g8!8Dv!z z^ORXX8S*g7Jk|N=>C(mMDTMTdKQP4Xwxo=G^ z%sAPDv)! z0bgf+6v%NP9L~`Y#_0RNEfA_EYzxPhMW}}e`Vj7NB$5w4v;>jMvIfXuS_lWIiph~3 zA04I#A-#~|0;0%!;nS5cfu8A-n85p%Z{(695!gy4d1g47Ae;1YAf8eg;!F^uNF*vC zguMUbcyV4Kc0H(!#T-pYC)7geK*F~^nUZFuQmuZ*eSuoqp@+=tn*hUB^%Flr*9=vIVb_DirtfFs8^Qinl8F8k zl`bUyn0z}PkK|6hWMGl?*e_s_svf~dHm9B(u+e(7*o@~D;=0V%fd0DjmIUH?!NoT3 zy5d&PSxZ7!h}cd*8=_}^@_CP-u=xG9N>!OJg!9ShihJt~0XwdTbx$|D@R1if?~)5k zZ}oP1g?5EKT{8Nk-dn)>qvn7Lop+!ymMm!eaRUeGAL+^a=^qhZgD1e~&+h_@oVTg^ zK_p&;fJZ^{9(+g`*ad%a_`P-HWa|}uE=v$Wa)sGOl2!Zte9*!xvn%{cw}xe74m%UkzfOU=Ldm?6&wEumWITc19m<|S_|t;+OX|%6 zc5{NwBK93R43ohpuuMlVCJ5E*o$nE<7y1(jbvf<@4Bru-0J`ylMT7)gin+rpe9?lb zT}QtUp5~YsvpHUf5g?V0n5iR`j)g;U!Gg+*(ZWHWP)e{u;yywBpX?j-Tpxc%9j%`l&954q~q^Y{z;mi?=sEif7( zhoI#cr-EY*Lydn%6eoiP7cBrpNrp;qN!`HaKPNcP`zF_ED_E5)zpbFgMgE-JDrCGx zJl}pp_Zj)N=gc9_!0@ofT1p$Ji1~^jm1M&gNRxN2gK}sdv}rqC2TMUq7%L01%#oN1 zXI#V!w8wmvwfO5rxOwMG4=1XJ&fLUQCtqY?Np@;8TI2b@IDGfHOw))v2pri$3K{vq zMfWF5iT(fs_b{(iH|hC1`Ll9q@%Y9ws|d_#Lm^_IA#bMgF99H0{R&#A1TV=7R$5;w zIJ+ofX#AjfyzOIAqg+sqHd<^95q*rFv%+PwF3U8@?RXu1%iQU?vEVDrB@-juYvU?H^+8j~I~PYiTSrQx&le8{ z87c9(&vQ7>b9lV8KNEzAi2OBZ&`y1eXs6E8r}pMvKGXr2=C+6B>n$m2k>nWIATWgYMX$e-0 ze&pmp-FB=wneV9ESFRijIl)n+ zd;m&aF&0x;BvWW;;11zF$0QILqZ@en9wWi^4_$;Dzi>a$m$a)7xJG(@@R=Zj-Sv-f zgpj~`56}Z6Z~rq%gn@uxQeUX05vkMmXP$^keuu+L1dK6$(q1!?i1+**nSCXs#sffZ z40{36iGsME-01VkFb zoW6Ih?~R~qp*4Tl3f{IpBEiC=1Ev`sgk+6>_yJOIg+@vR$kRI=gR(TQFgbS)u{}6R z@4o@DK$}Bdf{N&27PK8l*`v}Mo=}zVdG`@grTRgsl~ z%l_}&H^FR`aFHb z&wlyWz~sxd3_U~B-TGGVg3G3HC68u1dv?sqwk0~sl%4JnU- zR75Jury1@TnVQp8${!@D^enY&=X)%~xK<24EOELeCkMW(#Ffe?F!IJUTltwI z{THpQA8g&3KXh2X&zCqNe~D0avk5D0#J+vxEv#{%Ic{{6HkzR?&ue^Hrf+CSe0A*S z>fa|nb^YF!9b$NwKc=z6iQm3QoksY%V4A0cf=ICfD9I{-30G~&f<*LTGCU_G5zE1n zg9wIXyco?Une*e@v-j5&iQo*h!4*pm`s5z0f^P+s(wmI4*+5ZqYU|~wuY_haoHKpl z0{u`hT!3u{bMf1$+pQ?*JY3iSYJ_19TwHowTy1PzY3c|!nasJL-HzgczDK48pKJZ| zKaJ^}wFVfNba$%8Ph?pPiOB=-G|uD)k#HIk41H{s| zFz*<=ZodVy7`l(JOFxxlSLGwVUX1pJ9rwyGoe>Ti@HA_yivV?$>T1V^tBei!3iY|> zwd})JNA%g>B0o9G88z~@c>J=yN&p3`3DhZ?isLggsN@=ot;>W{eHg{23&EnJi%fzl zEXGn#N?@#`{6H%m70E~iyeZ-)PRNZ6zOk|c{3Lv9-)_+`WZg6Jd%~kJzv3<)W(p{Y@k+hWCpOwE=NTN zY$oH1P{RYI8OVE?S%ylkf2iojTe4$+11}>L#m9PO9F%)o-}Ze_gU-zuO@vrBuZR68JCG-KThAOqmJ{n&S+f zY%X-hoTw%6{CHcz81tF#%AUtxD04y2e4CTqbQtHpD3KiS55?4=40h}uuTt>1XN*tb?1a$F`3q<-aj z+w=p};B`f4K~>EL2zJG%nzd)y`1gEu$NRr_n{yomF95~|w%+c8 z)%wfwIzW5oKIldTPfGWR;1qY=*bjQ?5tVhso;y>d?eO>DhMB<8|Mhs2vx3k4tzT8L zG%KebQNQOd9Ia0H?&lKEjPb-}jB0=#W!_!`Q1XNFS&y}?iE z*V8yNl1ztb>@#lMkty z+4X9e$5*C$;h_4H#nU?cy~xCo+9_}4fCDEn_?HR}e6Zin;`;Ynt@_5QQQ3(diX)wl zOsn;o%pioap+irvkgxI*Ngw9QiDxSs!K;sKp<~pURk;eBD!4Z(KmCcbdB~l=)9>49 z)lVw7`khTtdtV;?$f)*oY1`aVZY;mR zkR<<;WNu+WwwshV&5?;ctujpwG5X|OnQ7l$>Ps|wMPdDm)(k#tCFiQwXsH}7{;l^~ z=h>Ir`23;6T}d5#p}{534CU{yqeP|h5~5zPZAu3p0!uP@Z1Dr_3F^>jNU>S8q}t&K ztKc6plcNj_jFiAkwv!A~n)MS4&SvdVE$Wzd~v9-6*-@!HX=%=4LiqO=o1HjHIq(QmH zrMA~QW_no3y!;`Jd(GTUAf}rtE^2z1=PY*M00YFCSf!OxTvr z!Ic0tQ|9W{u}Te>vPt=fUryuu2uM~GA;R7z8< zEO$ZTt%LGy3!ACPn1;wkAIVEsupi&kDHmA&# zvOhdy_qlMLeMdILUBjCCoSKJm=Jq4IifXZOw!EncJZokcDAzoyR-HODaazQKZv6)P zj@FZl9gq)I;z%za-XYNDU?R)ef^Q{Z6a&#BwkmbQRAl3ucPP8T{!Hr6cy3JA;iX1&R8VkBkJ{j^1 z8@a`$U+_dGtdoK6SW>OpV#F%=@>9K}lqP!|(bCxj^-DwbB|mti&Y8UJQ$Fu3LgG%;L^ zP;RTGazHbHtK2@KuCgm)bMVTBk_}eIH>b<3v68eRbB<56G8(L9kf=kG#Zi&>dVw!1 z?K0JPp+~Li?=z#tA?g{Os?je+{@zGzW}R2XG#&*h#_a8T25xxIVq}l~y`&*QkKBPs z@7vaQxtgD6<#Twfoo!CP}7=NAKvY%^})78~o<19Z&O%Zd%EC+#$6DSb~S4U--w2$wGI4|Ss zxUv%VCGnJ-h-SMgMm&}E3$|Xx=e!GipH|=2oBnJDtr)Eubqny&gmo+Aq8w*Jr>a8p zD37;OjA613_ZW}2cS+%uf=(4o^on+??0C~Kk9jQlvSq4$e^5om zld;Z%KZeZ@267ZQVzq+aYT?R?&u*tsQZNHDw9O_*`8_>JXgX~y2ctFMSksa1S&5hH z$h_hgSqi;&ZQth_q1WrZit?KSUPJzNndg_NgRFtIr|N~=KXVjsk9!q^F<$kTy$mfLnB6RfKD+M}wQIUuM@AoaHQjTD?DIOEcgGAUyg^oGSI6(!jl6f?r8UY>eGcg8J}!8F?3|@D^Y%P8IHjweOd}j<+no;4$n3kykuuQ9szb1Ba+XXX_;F(N59T7ZucDz z_f+Slp^TfhY7SY>w=chR4U2??z)MTrkc(M?&3;4x-0OjOq4~zsJgW5s4Fr>S`#?0J zRZG1({>G71?jq3YHw(;Vc;8s^P0K`k-3jw8@?mOpXsu2!6UKgv@7|AKsOOR;*b#je z5_Mfd3C$vLuQzIpUTZbL!4z<#wRml30;cPQc5ZUqGdL=L=NZem~-VdvnOi zt;;E`?|+~8NAZdWau@RHz{#S>tCSzX$iwMb`zS+_2M+!1UQa#W3tN{!0DpjRSAC)k z2sfxjyBR}v9OV$T&4AkDYr2dC2Pg-@Rk5G)1CA-aC4K8SZJJfRAr1S&5J)wv$~8_@ zw%g{_l;YyuOReD0|f|>S2ZiF~*K++?~-g zhM!jKwn#6b%;ppuf|0{02JAF&2wa~iBe7thFZYUgLC>^|cdajb^Fj%uXQz3>SIzx` zf*91NSy8nNlHxGXaDV(tMC;D`i_DFls}-qCaYPtvzOBp4VZ0L8B)@~9QKwyTY}yvC zKWU20@E&xS^uS3=uO2&(1aY346KH2~1^G?V8gPU>dF1ChTaC@`+`YWm3(X&}k zp+Mr;MHhp|))!iae4LG0M3UX5stK*ZsfygkX_SLESs%4*`c`0XBXH!F8n9Y_8cf7y zj_ob&DIJPNK2C-m0`oI$9?H5jT90Flr`p=w+VOxqaYCt}YPxPhehBHyD><+lVIDyX z9bumQh>Zv|AVa{5g}>CwNET{JU4y%dj!i4iF*{-7@UwefyOkw8UUQD%7DLW_ciy( z`bgytbyslmBpyyQ0+~deyIONo2wjP${^h`29!^JHyZZ6zsiDtWA7)h>ut2Ukxq-$- zC4$_?zFz2iECdJi^Cu1_FTqaZ^i@95y)bk8X7n@rw*7EK)zj%;@my$t&x}l3TqOW|hSZM@-+(Y~WVK zH$$KqHw`6t8n-(CzU6%cHR=~3F9khfaxBl^Z;KTYObh{$UjH-WmiuNS2f*me2hEOVce@cLE# z^nK=xPJUX{8KNNF55vsPbit!+5R;F(HlSjm;pZ%TI*QaiQz@X?q4g2bwMF>-I&MC* z605{Yqd7J_&)Jk=4yM%1UBWjG#NmYu5Xnq^?}jPS6>=89SQG<{KrOw6S z-8{ttYsTKWKad4PbaM~i7b*dB3*E>?eZa5iB;+PqIX|;@R@|13aVrO8DwnpNJQ;3m zI}(cJomvtj4*Q}Ns0%k_@mkpvtfXSk_iJVcT9WQ&1apk1A$oL3-a5XB)aBwltJ$>c z6r#3^-Wwgo3QR1IWtof{;ph9suamJk_?ncK=tEQv2|A49eJH5zVeoA@pg`tnU&~sh zn%8o9&$3^7pO$*(!-WUZ*1EZAKwoJ4Ok93lvWsv%tCD*im&(1y7_u2%KZuDw9p$7I zY1kaX>O5Zo5o??Si_iCBiiAi;s;j4Ph8U#f5URV6_Qsk`UO`W9ezr^XEQnRm!%7?E z>1IPMwG`Ljk=m8&LA$~QYLy}x{L=g|CR;NU{naV}v5mDU&suMlc0|(W3sL+Y=@rPY zS>{hfhtb^KG+x4i%eBwJ(I|m7Wh%_>lG2*xo8PT`P{8Dt#ds`*l zauyURBSXChCYKnX#jgJTfgZa$ZHxhT>M# zcY)LvysoxWH_2Yp(p;~p58ezR37fH;PbE6I}YhdVjqM938$yQ+`IYkn>%I=qQdyH|gHKYIci3hfsQe5+aB4QzWV zh*+mRM8cMLdQRTm8n}-<+46C{v1b=)ynT0?A$=Lef1TL#Z!Bw}Mkuvnqk?YT; zTCqx)nZpJ!+sN*r@VViyIh%v+50E`$1MsY4rp_i4b6{u)2wQ&-hw&yp%=a|lrKg74 zuUH5%Kk$^%RfHa1KW~t`wc+*Tz4tgdo%%k)Uk+)K>y_`?)U2P}7Q868#Y^YVj7-$*rq?>+AVunA}Tb6hdodzk?GF6{; z9B}7&mpaT1f%wcwgg$<7u$jHuwful67n$?T<9iAmvxZ%x(6rYFe@U_}R|}i6Jri8y z!{}tcH44Fp&d?3FwB_Yb4yA}P?R&CR=jb*^PuPHvNLf?>aTJ+!;>WNkkfplTD2FD| z)KAz`|6*|Pcon!RUcL>c5Q`mqf*KpOKVDu!*7_hw^!=#^nr?x`)D{to$#JxMu!;^G z{+D5Edyf1HC9f}eTzIB={WP~80ZlfMeHlbMdP!tA#HGC4XiO7GsVNxDc#j0prw?r2 z_`i^Az@n1Y6p13Q4{ljM+wadhqEVyeCM&KJ(mgG18(9h73O+m7U2Ix4_9VJZ303~O zU0iLyZaA`^MA?6u6PBtto+20NZZiQs*3|@*Y(j@19+ch_Yw*}DdskaLaiW%kzttKN zhzr)B<*{DJ(Ti*_@vk6HTh6Xo)*G{XN`pOq6Y~}gG8XvnY%g}>FUpq zt3DJZ<0N*&mPaqU=Y<7^H$bImnqBR|Vf|@9)JyNn=H)hklZXa)W|YjHAWDXwZKklk zRx00|Z+V1WV}HTJJYi;6$;&r3S6f1%dQnW&OerRNdjW37uXt>J(Rx$V3Ti=%R@Xyh*s*d2asZnWj zkh7;Of6>F;Wvcfzb1t)bgeg{H)w7UDOUX%(r?!qarN~P2#-xH%h>w_fIIF7WJ}Fd~ z36vlh7=1c+z(Ilw`6M%nZO9}ECnoki1&zq{Lo45o4XX&2w&KlCQf&g~4JAWCnZ=bT zlU`NLowcgK&ovwLgQ}!WIxUD%L~odEvUT|X2>=5ARY>TX(>RK{5RSbV%90Z263q6fv~lIBY+UxmWP8)fRFdDS%2fUJX~xL2J~Mu{(;+a zaIgUcc(@?;oc}X!%frXX#>c}2v1DcChCsXkE=~wH3aRcZz{c?xY6{>K;Ai9Ff}p(r zjk*1or|Lg3!~gJU{U4aye;Kv@lYac~4e)PH^8Yq-%K<6r1mTwdVvqkqXa9m{x!43a zdHDE^AT^Z@_yLfX;DI=N8vRw*(|{8KGxG`X@Q6Y`U#=#3Q9)&pf{&Oj$ zprrvX0Fpxp9{m@b$wA4@&(8*FW=`*dUc=#c(F=S7F9U&Jt9~(qVkhj7OA+WgsypWojTwMR&>AzRz zhA5K*a;$&17B@c^8$aZ@IF0^BjsFX1{14yU{~c(|#mVv2MdzU|xWE zr05sk7s-8fJ2JY;A1o3JKUkOvexQ7jG&73-g0mD~MreN`_N06x&weRRRo8yDUM+<7 z%_146PhmXILN@9P4lHT%nT6N$qtH^Fn03kdW(fL~Q~yI%G60`^X-L_rT0f5h6R-U4 zKgXwkB;#)@+`qf(zdPQ40LuTpi~b)2%Kvf#{%?TtzbyR!Idc5NpZMQ^GB*bRGPwQk zq{7F+&HGQSocTcbWUaQl`nyd9H^-zVJ53D`MnU9hN(%mmkasYS*o-|I(aAx!ikh~q z9*p^3tQv5ryN=Qc{JV~XgG4r#1f*#3g73aVW6NOg(YvZkoWn4?9tl=`hl}<(5IWqZ z*t&l*d^oe|JTbZmSn@Tn_jHDWHl+)KTj!t6GVrmCg2vK-`ndU#6loG=vy(_Z9nJRc zqiT5tffJ4(EG^9T!Lc6K-cx^_(AUX;-_zcHFQH6Q(ap+G!e+le--K3#`|tx1BBQD~ z&8|F1+1U;{=W>%y~`!fWs zqvb1}r4TjSR3}vhfuQBj_Usn4ChLw2pv(qk9<($ooPI8O@KM0XBS3k7T1d$hoqG9% zLn(rQWN=c(GoDZLnM53A#qR~2`M5=X(m)J?5k)El#0!8e zi&tfNEB!2R;@M6 zy<}ybH#q&v6lyS9uXY671dfvoG1StVOgFqV?G5B>%5>$%1?ICS_am+|6!%8msm7)6 ztL5NZx5Ey~#}AciOy255hYB}!vDv@-#OT<|)AmEZq*;u9ag?AAf{V4*Vm*TH`T9AQ zzP6BB7FE7KpO95jc8QR+F?r_q*M7q4eIL0(1Y8bu9>OrH7G$3Ec!Vy+Qb}27u(+sC zb8=E^cC71UM%2iUUNA*$0OO0z@URSqYa%KU^n3yF8~`0XJ^U&inn=cvV9~9rH+K0^ zgwg_v-h$KQCkC!s43TYQ_2zHKoG{|h)?y-r0CZXOK{LTmpGhp&BYoygnVC7VG&#cy zQ0f8bTo0qk0Ce0InN#lcaG&u(u%i7)n!}U?d4iqaJR-T1+&lUr^2TofLap@CFCQ&5 zlsp(q3sU7=IjpJ2MdBZ|zUt4rn9#qa-NhbWeFI>9A&eNwHW(;!DM?TlnKREF_4}TY z9{=gwS$MShYMo>spr5ZALUDWECP7jh7Q^coj!X;9h6_@INc|{X1Z+~n%L9>huaCo zg>wW?+bcQM2lHM8^SuLD*g?MV@LMRJ55@?o<~P}?9t=d0n2+&x@?|zaaYP^dqv8Cm zB3QxM3&?Nsk0PAk6uRZ)hQVlpJu*|2xH(5e!yw7-kQfUa%bAO9S)E6+wr%1^vR~72 z0Wmc#sR1$e(>Vb#PHG^&7JTwY^tK|z7X*|JFt_ku(`MiUgZ z3C43xR8^(I^anA4C80&4HZNzAhviIsaQxNeRSScPFqh_j&JetSmRc}gj+Pkvp?qML zEGR|31~8T~OjFQ-;hq@_h5%3@AQ!ZLbTEH3M>@G2Abi?_u}94ZEkx}@0uTYMXo!Ol z+6PbSGmS`e0b`MzdNekeG29GJBp7P+2pdffUL=?V5KS&Yu(}a!Uqz@6XSuBB7K+SWYD-X51AZ9m2jV>yL9GgfScodVdLPks0c^}KV)V+{!@ z7V9&74i5;Y7nb+5ASW-*0|p37ds>K+m$uhICCqMkL3Nkp6%r-PsMcY{9F^&Y4jr*Q zBdAUrd10x}8hIfpg4l#(>D(E}do&?o-~y!bjITPEJTpv3m_=>`IQJ#~X20t`FZnh+Ho=v#)tSX=|d$(Cg0esgXB_;`X zF^ySAY=0Et_3i`|@dt5n4)cn5vn1gL#QR z)O&1T*T{L^Y5qbM3)TzIHS(eWnwrMWT3sVT>yBui*7U`I} zg7y2b)kl9?N^(hcH;w)W$@d7sVNkRUn!-ZNpTOW!01~d?{R#566(8A}fKWyWXZ-R@ z7Kj)#x64s|?jjyQ4xoSEC3--DYmvB=1g-6V#}bF{W!Lw^*)y@n&iDU?0wx!VU;8Q5F5mE=h@vjLNw z$nwotVtOv?K`PTHP(~jUMJt4Q9^H-?O=hdD4%T7^LCiWU?g%2Lk;lCK?hIKrN6 z(NzqO&LO)E?d|=w$#Gs()41cND|c%3rnSGeQBS)TRQw}xL^!9mB|v3kL2+K^U?sLf+++ zJUXe~62^{-C(F>okqG$~;Fay5--xnTzVT>f@=IoM|4Oti*zm|AD)kh-`*)agsb&Ns2Su%TzK zsxUEjMx#CH6JWE(H2bjkj68So^zyir*BY35k1*@<2A`DnB)PJwW4wuHZc@j5Br#GU z0P|jOhbi!@jAGR)TEtAKS+M4=A?a)}j&I?HtqCcoK5K180hc}ObOs?|BQ!U5oE`}! zwvTm5)IG!VM%*eCRR+dEeux0b6hrXfxXRj5Jk53%!JRC2HE1$RVQ?@<>3X2NLl~UU zMtJ6Pz__<)Fxa-6OM+F9AG+=~z=_nVjGNXDYy!B{YAY7I z|Kd-{Wzz%C?tBwnNNVG^tlP{I$I(z;6^BtYk%T#*m$N+?W6>DFZnGzXFO2L#rY@n9HY7{Ow(|%|E<d0_+|?@8H%z_=8r!}Pyb49ogYPH`-yYNfeZ4N<)}@ae%U_vB1;uiJU~_aNjXMJzcP2Fz{UfVLH5{sr+Zbq`IFBM_Ls;I+cJ$i-m|>z;(y$5|VB-gRH(x9`CK0U7NLBewiu6Z=%aT$7RE-N;F$sLxy6qVh}| zwsCTjsf;a;5;*^jxCs;IR1nn^3#a<_bj&?TVk~=}lc90k+)-09H20bzv+*lj)ERA@ zI*EMCM?~H{PnJjL@rm1C&+m)vg|F^9o}W9`xq&=Z(i_gHY~R;0Bc5{xW@;MQjsIx( z9*orE>ajAw>>xym=v{!bY)D2NzOKs-vqTZnxF>AcawnT5jjKgY&jsLfm~(!Dt;dm< z#IPX2mF{8Fk9FW3_<>GnW~Bmc9W|mrt@sTYdZu!ZsY&=}(%3Q2$f4%ouW9CJPLI>& zy3iH{as}nFu?wkwbjQZ2#*JIfL_vD_@Q>!-Ka=CI@sIw*1mng-RZ=Afu%D1w{vf3a zb1Brx9*)D^W2VCxVVH@%l z*zCJV*=SufsBd_+L?}` zfzpBvz3Dp!$_6F7?{jkeUl7wv<|w`71>u9U3CRz6DGcoz9$k$YirAb=Wy6cj_jlMb zUfvWCj63=y5w`U>p{szo;=QRQ;-~uTG`7Obj;V5>XN6rc~~br|Da2FTSVnc%g;qKpnnJ* zkMf9{IXCX!R|vVDPe#}up$q=_p`^eq3;$qlb!Q0X$O{puS zlI*DKYGLncK=Pxhi#DH$1O=mirmc18H!V-p(T5xaE1n}c6dj~!F-a61OOGp=NY8#{ITd#L>BWI?M_n$;(t6X`R>e^$d*rWO$VP?;lQ6NhX9+@Wbt1Xlf?^0GvGEIO zd}wi46~w9OvB{8Pr6W!vF-i!Y0nWEI4<(%uVE2N|28pxs+ zRFJEuDF|6{Qs!b%V6y(1?1j=!;PL)cf4QXAt-x@(d|D60*g!!4P9NnqY*n%jE6mFK zowPEujNO1ZPew|i`<^(DDpOpfYinj@O2y+ZKo7noIa;}QG&4&i*2f>S!I42IJmt3F zbkk4>g5*89KneHBZogwI6tAR+n2n6+BZ*M>yrHb{Iv`Yo$20WU9rI(rGBH1-=xYDa znQcjl!4giRufq3ZrgD~pWG-rH0}TSI@T9g1BtT0HjWhw7j%?(l5ve9Nl|NB)esK+_ zBuY9S#o>)hmrzAz&bwmB2tbi>XCb5~CG_|d&;&@b1%V>qLF~rxjysf6=;{-cNQRX_V0VSSR0}@(;r20TQpa6xek6a9Mu21jGgI0*ioBKqDX-&=EKRj04{H zUW6}2EQKwFZ(;mIZVorW>?U7(rf)X*k#fbX=NsZV_HJj{AT@a-=@t#(^4gWCrNp zJUs&5WrEb1Fcoy83F@%iJ{znlUJ)6cM*BlK#MhCSztBQ;%hC+KWD(p}FF$sBb?RKf zkVnn1n;y}L7UfBvm0aQK;?+B_T~J852^|G)-I-$M4jk^GQ$O3D2iyg!Ut(Rj|l zdLubyS*P7?7PS36Ee#O>d?vX=I@47r(@|#q1cW{KQh3!Mn|_8#ZF<50`wE z@YYI&=eR&nYM3r_QRK#BVt1$LEHBqzn-X8%LJ)I__u5}Bcj@p%_%a({*WF;U%6^u1 z_okK=vvf&FUUUOeWE^T-#p?)_Ae_ga|F}an-Y2|1p4SoB8%P=1=|x=fqi+nn{Z2n1 zg5%Dd`vdgE=ig$VjJ?J|YBCRTeXxBWA~1;j`tl3E!alz|8JTz)nV3lAJwv_`x%wV> z`C9s>oG*E_m)dI+c-o|8uasMa*Gsk0urA~#Wn0$k<4n*ON&Hlt{zR)zd5INq%!rbz z^l>hRSu44H+3~y9+$Apb&uH4RF~{Vaj)K$llnV8av}qMgRz3KCP$et09}0#)YmNWP zbuX7k;ory68r3Laxu346U9A=dxf(PJvQI=vu8=oMsZZ~_R!F8YTcWEEuxO1F>(fPO z+3QUY(DU0wM*pI0r*=2_I#yoz`<-hABW6X;PM;d6EY=WxdXXYsAe-C3KG;Mb_9YB*{~zw&I;fH+U)P1kt+B@4-Q62^cWc~f+}+*X-QC^Y-QA^; zZeSsep4H!(y=Ugk?0xn>H{#wKL1Yv~l2m1_f@0 zJ7Ji4s(35f^;9mGlcPbLrk1gbvUNtP-r?o)44nv!*f~-eQ7Z?)8u=6xmz|Cq-mK+0(F$NSMJsv(T+8;j;-po4RqZK9 zB4DCSTkF#&4iv`Frh#W#38Q((#<%6bvX~ZETtca~x>;i_Z`D%T#H*ond9+h0r1#}sss^#gI8Lg$I!2B!>F6m@-DS&H5CfKj<(%gV;w-DH$h;f*m@8Wa zkBcpD!>E zyCz)T-9FtNvRAdJfs+7a{3~d}ih0^8DY=6&$v8#Du)ega(yJ_f@ga!}-;lLv={T0P zS*|F{DA2ELWF*!8PMsjpB92#8r%Ph2$f%B?T#+D@T*S$yn)ezCo?n?fpL`qYw)$(}-E4h`dJw5d24GEo#k{N=b=lFSq6g)zC_$99z zYOLMZL)lD0URA;b3K|I~QR-MT?Rtfd=2WbITq7Tk(4z`^qY(pTDkHL4Rh96Jxy47` z%KHo2PTO4hjOLe$tIR9Kw{6{Z{PtEU>fbiy&?5yZdr?=!Eh|VT6Uld}1(>P7?VY4) zYA~A@C-I?c79ymmxs8lF8;^mHOYxAqrJE5fA%SUxGs#(ZH7if? zW9P2uhsSR+uPJ_eN~}ptz4I(l>K`Jf5{Q}wqavb!ZQKUEUeDiMVHUs1xUvh_edYS8 zAs8}6QL1%oHoI!S&g>Mz*dN6Ri%HR0e~#ae_rPQqyc~w)BlYIU}NL@M;c(-!yQNipnp8}JT{cBXOJVD-wJIg zWnAY==QZVjx6G&A_6uSwhJYO_pp7672+$W4spodV9X7!nu?K+Ci{h2g6PA^QMRbP2 z#n2WM6he3Rwli4dM{)Z2w4VQfc%9{j z`icS)c9(G?*UEmx3-t>QB%xjZeL$4euM$LQ;0UfJt7i{vx}g^I-t?;*Dmd@b95Fhz zlmYnNv@vcF0!}^%6siLw`rcKBD$>z>UMVPd#`!B6q2IH=rb|);wFeAg~^d zN%NaN5qm zbMc{ZEuC?KKKPk}6VB`aR8GOc8=5&D@eoCX0_abQtW=*}R^u`6!Eh-8wp`DUq(6y5 z-N8>n+F7H4sQqeyqyevjhyzD;!z3ie`As>X&uYMJY6x00L`>VSG%r$KH5{n(W$e~; zYUma27|wl6h_*{{1|EEGc}%LonPk z><|gjhI+uUXCQ9y@3feD%otkuQDR`-_LL9{aQ(h!NN8#Rs0$1GWL$^@fiZ=AtZA65 ziSfXI|64t5Oq~8U9uc|lh)La$AKj4OR3BMHWei!5@Q|D~q9z*wdC-oFJ~Yf@YCxvR z5E*@9$%!`UN+;mlT(E^0OxxqrjQfX~93bF8>r+Fd&1rXA{AED)O^}uhisiUrK6*xu zy%1dpY_opXTQ?aF-p2ezfJMLl6Ls$DKPc1E5G?>~Q|g$(Xb?H%DPB7PBS; z|4=v#^sIijq5fq)Cx`nPmDpH2she?Q2GkBhO{A(9yerVv$EsS|FQ~eWZeuqh)Z=&6 zhj`P&f~$e|QUlKML(Dgv4-VWB1M87fV~qWGX%|$RPjxs9`eb7IpMHEHpycn9g*GG! z_|P;OhA`4gW!gMmZi8LTgIU!#QE5?nKsH|2Y466PvFBMaV7VrSVnT_W3#dL#rrKT$ zT~CXQHy@zA90t?yKTaz=^GlcZPX{jh(=go$_+ zB$6#4S3pw1h~vnp#8%0Jn0u&MHE5}`U;A-XH=XlqWs}`=pn1}I#wwNTbC*RU1uby( zO+Kx&&s4t6t7kfg(JW`0%WUUf{Xx5F4Lg<5v4xG^V1(96X8@p9>F9CsgXWnFeWRw_ z4w(7Isblg%dQ8ZeV6Y|=;$Ij_@Zkci;{Hkcjweh*{9TIMYSP8{L`2K;lU3;RcMJU8 zRB`v%4|CI&S>L7fy*mzaiWhE+)ZK@O&8xd!4#vS%g<1C>v3B^13&T$?C^1OAiFa8% zmG`f=X#;oL$TN2XHZzC5yVt+G?Sk%{7HaUs9qx?DVo1Uz`9FAEI)ARw&oovB-feC7 zyK`@#<;ZzFl_#oY{(RVUYxm_|IpNu%cgrDDB?bA6kK)##d(~deN7kN*|8S9Uh}VNP zeKh0J(zlOyRes(hCzR6_bC>n@^!g$6_j3M^I~Sfp7pHs2hKF+c#NpNtRa2Q&<(Dm+-AT{mo?Ry?jKdcX zuG94g%u{!3cVl0uXms~m0m!0BYSa}9vfnl~sJ!1Rn{u2h-DW2)!cRMn1I&I?yL-Mb zSloQxZBiX-bV0kR(iG*bR7akTt^}X$ReS4-$ZU?_j667iJ3N3rpbb2T+Trx}$s%Wv zOUD^K9U|hf(ICc>3F(uF2uFlel8Dgvi}_*%O(iz%>r)$N2t5}s1Wy#4CIQ<&C;}OX zbnKEtj_8O?H{UO@BmxGeh=K;6CcH#Ahs+j&#Af-v$S=IaDYo9Zlh=nT^Mm3z&wgw2O2O+(zz=##8qRc6;lpH4?inRoH*&-&X(}lu=^?2F zybd2I^`zxPnkafG>V{NIDdtj1WL_{*mfg`J4NG|?^*Rw`Y-JXdsa-i4a^I>_Z~52~ zN?Z)>aENe(5>`p@H9Jy3`>UXS^OhbvluXjH#12@9 z7>Y}p<;Fo3E{ngtAT90Oa%7@SnjgTgC~c+Vqa!o{&nTMu+NOj~`-60%uS%`}VaoCc zsg|n=g`)VG9fe{iP2nQXxc&&;=P6j%1VeVI5;&6%M&>Gvv4Y_blR426ciywBH$?pw z=^G_Y*+Jj$j+r6tjV(Q0VoIy45}VfqnlcL#Hg#XDbKf$Z(Tt_4M6yOl$6Wz z^S9@|N_XZb*MH{TK;Q!aa1HhIPWAobbApk{J(zeo8<6bTH5lRmSc#L4)I5sN&dChQdm5MjNY%Ok}LeITSp zy^tio5t;eUvw* zRPV4pP*%tUZUWFw(#PZr&ZjIbRfv%CfHi@hQ~pKrwYQ&9W!_dHX7Y@q>?_+FWHP3l zJh2}#fV4tESpI-Hs)#}{S`h#qVg%3Uk6czvp#T&Q0_zgRV~xK2IJb`yBjJl-!jz6J zL_a*UUozn33-JIyXJRE3iOokwJzK?$3V5&5^-T{@VJaOa^8IPpy$a6)RM0*y~#X|Fb+-I^9BlV~7z}{Zi5UhsP7R|xbDfO4@z(%BB+!(FS$hazV@Fm4G#=(h zVHjY&!AIKT@dc1+$i=>%cDew;sml5QpNQf%f1d~|V=p>2AUOnId0yJ~nPYxXBZdvY zSTm~Sfk|V>@&-;bFDB5Bpdl~NAKe!06QH{GRR9=botL{uz9l6vf^A(yU_@tAN^odu zT|khJ;0n|pe!c>bRE=f>gtr1Z&qCMyI?qGf(C`4l)*?`EAg%kcKw)8w=NZ&mkmorR zFcx_ps4koacyEQjoWHceAG#4B@;HANLply00+W=bddB zzQsQe_+O)YBB!5l_<~+;Ts@!>_Y{H60TZw>!10FiO}Rn0F8#U3uqL?MuXdSddsyq1 z&=Vbc^95*C7pCyWiOoyw3GOwb@P>;$uy{ttA7lXll~)B&^|HX!NO=z=o;gv(1AAWa z-62%BoStxsn@`@T@&+8i24){b6{@Rp68&vf!+X+oZ(5J-w>>Jj-yU`1Zekr zhU}=z?TI=4#qEtZdx-GN{Vnb$lJhIj;Er2VYk;^@P`gjoC9601txNdPh~V@5n;X{8 zg*P{dpTI4&pNs1C1OyA}HyKfSqv8P7F8|nb8cx4K09seLJa8+F1h^GEdp7BYle?ID z^SLLF;Si~(h~ZEdxA^53eow*6FaDmAmtUYU^WINLqi5f|f>50p_(vo=FmlJ980F?u ze^K=SeTdLKK(S+bl)$J(2bA6(6tFoE?|>4&LER3l{e`+6?Yj@Z9bJ0^w;gT7%pc?S$|544JIFv9!XMf=B++RXlV*<5VImWr?gGl#_`;H{h1M<@9*}{`NtrAq zGUw|H`btfiuRxu5nV*ET#)gpR_pSQ6GFSZ<#@Q)DaXmv>o&r_=kNMh!dltN~`7%#| zK}_>BpJb_E=;!U{WQ;TQ^1QQo+a=4Fv(;NEe9IQ9dr_VjItAfkHNkD+@_fGly3zp2 zRrTJO^Hp=!u)N)JJ+Nf4ZBL6lgH}4&mMm=3?wH_w3_yTX+t*$@s^|~pUgiP;cClS? z->5wFJQKOaZ%6IBpXipf5SsXsQXqopN(Hm}{dR^v=_{0>&7C`i5e^r#K0x5Ha??5S z0qeEO)*Q5kGG)#XcsoJV%+bQa!v(?LR+A|v5ERLD^e!nq{IR;5NmEa6QR?cEQXxctcq(L@v;V9f=`jFL?|)g4#H zWToG_i7c2QZE*?bqH(#hBh8nICx*G^pk^E?c_vHiVo=>|zHi5gB)IXX%V!Ndc1{mU zC>h2E9#)*&mq_3sb9!dW{pU`^0Zyq4YZzH|T!;IY`B`;+LpJ*d`?cSzYVlYsjibW#*=4CT1s}k7K6s6VkB_Z|{30#1S&3JOVs z#f7Y+jjIuC0(&`0srWDuvFL8fOMdF0&=zJH0zo1&qGi5<>WAA4eUn}L(kbFhGZxl zQUS$3QLH!i5A<#X^GsTJ=9r}&RGNZjftmC}h4l5Z)|H4E-EyhY>>Xko+8A3Ui)w8& zC04?k>2X+VCCjR9G)_@O=i6{C$lg@(JX!pVZa7fRGHNBp1}Bhfwk=0`7%6QkuEmqb z6B9{>v(nratIu$vakM!(->i!;n1qznBr3v?4`|1CNe!~w=o%}(dzZp24&Zx7b{1PG zDI8=9X{K-Xl|pLa6bEH&zzBxRBh=}&sT%LsBq77)V49aCn6J@<9u z(glWj2aD%mI-5wlv9q|lpl+J#x2(0;baXA>->&G;mtv;rj{8^_V8$`3MbxGt!8dh) zonn01+>$LAD*eX0dYpiZ&t6|m*C%6bNi{nWl}5|OdwONYwhurGm#&U`jdlnW;B-eh_Q&~yBt}@1WzzY5so2W00t2pkdG+*!-thNb$ zZV^mOR5_>zZ*Ej<8LDcxRhK8$q@AG4UblSr@ZJpgs*wcL8aXeNu5uMu+!Kv|u^|g= zWEM@aRlR3ZvfdU!&!MhwrgG3oYS$f>OXXT(DS1#jFwd5(fR&_L)yzD1Q!6Q|h3?2Q zMC19!eO_)@YD{fvLM?@fbIF>oIirciCTR{Wm6fOpOCSY&Dh=ZvJO3ex>2kd++MZt} zlNz}^*C8iRVq(%!gy!52O=pX{;gS|A7^m$QYG5w5M6AT7Uj~GD5*V0KRFQ`#NeqoVg(Zi172Q1; zh7UcE$6}hpi8o#hd>7RNp{wrg;gFPIYbSe)of&g$9G-T0s_-fjmH)9sttKs}Zafqg zXRLo(Z_G(wSS2&AiTs5O<+DUtB9Gx$Ym@$zA-iHP_@FF|2A=bMJ2IY!07E|nd$C3C zqo|?>(e{TI7O!FM(k2J*GG{xrlA~EWV45)m3e4p40%nv)`5IO=aB;=1CAsJJ8^c4? zZ`+?MtPlD0b2O6?o^ZWPl&bC?0Fkpv-Wj;@ACW_YojgR_?{+HR2?TW& zZaMC&bO^d;+z~u$?I?GFp{W-wzsEO1VEVJkzv^saZp|Rq5bNM?qzJ97K)6Qu>76)4 zO{PU5VfkY#DHCkXlpo*BWc%m`)1n!N$Z)u#jPW`n#^$vrM*foFVBJx zwYS!*2v_+9fVq=k69@;8?-CxUboIRCts>!t8YI ziO<^qwpRmzIPJ2~M-*D_iq_sncginyv~@Hk#XceT5xnRIQ$KgjC>5cRlsz^{*MQCG z`e9w8uRwJ=Eq@@FnFzUYbuMY@sMN8|&p3|TR7#;qt2mIw8nb#~x$`cuhR)nvA!u>^E|n~ZY$kiq^*dO!xQlThE=ifcMgMTp z*=hiSisWQjhkUxW+rZ&HW#xpZ`Zw68o+;x*t6ynV11nVllKxJD+IM>?P#<+AXEP1O zo9HtFH|IO?YzV=Q*WH$H-rs)q(b#OY)mIz8Iy+mmxA#!&d_V@#LO#(&Tq*QjucG2- zg&%SX2D>FCU*%@~oSbw<7FDDsszuR#?6#Sid#m_m@w6jrCdOi0FaIVq>=Gscz?ljU z?;^RresUw*%{RfBX5iUxe45(n(m`2I?~>QfQY}}(;!Ku4rlvlQkm7nj31-RohRb8O zWfaN&)6(s>{^ecA>g1aYf9K4a?aAWou7h4PBNcC{kJD-0YwwQ7^o;lkTWwpH>7t1= zfw#G)`JfgOe6e^iQN(AL(w`i|uD`lcwyspLWgs0xSNbn0>3IxpL=UDh#v!4v-z~r* ztl4dS3=BY7 zXefGm(ZxdjX{Fh&HF*UUIt(ad6s*U?Pa>MGoxEVobUqj6&id@MpezsKCEjrvm37d7 zYN|IB)g+PUp4^&b79ZP5*iS6ikSMsG)!FMGc_c(d@x+`0{=k2Pl@Rt12X-L?snAIcD_7@)GnH1GwWcj#! zirrTqL97kVW5@(jQu-xf{wM{v{`4YG-sA>j-Z)Z66(ecmA<`;#7n_c|la6oQP*P4{ z^M+=bGXo#(G60M?LjUd}$^LoErID_fZ=O^;K`$j$8s00bGl{_g=cx?l6I@UP#3Z4} zA>o%Bj>>56tq!HjkSoh{E~`NR5PO-nJj(Ol%FRsmW_{P<8qaH(mTpKf}73<+z0?-`Uz&fw*(D?JgXQis^wo) zCOEBTLA~PxkHNP3%5SB)eAMq#u9ZF8iyBTQ`f{xjBHtO0BLw88B?$P9)WEb)k7*}TCa8a(>Ru^bGXCK0Nk<$ZQO-~KS7yVEpN7?QQsSGDn>4&_V*VWDgwr7 ztWY8^Kw^BBvT09mL6Y?MS`BA&5QB zk{v{Qb56E?*Ddkdu5IElj&v*UL|DuEuHPl0W}h|B((8|-q-qsyRLhpT?A9MNX$M*Lx>KOk6Xt5a+1ZIfeXr^M+ynp}F?OZgR=;SzSdzw<+tDKYl7#llB2wXY_snMVTG7W^)7a@x}< z@rl!xN>8NgXxtgmI=zqPOIBXY#pzO_`z$o4>vwA#ADb#N9tMFJZ3HCjYdQ1^a6(W? zpTb3R_6_|XRNZ41S%>$`R}pZqHFafSk0Tq_w3=&5ca5b}Iyxqg>50+p4}Gs)R=GY; z)H!xiqB`*FcSD10a8^*3Us}tXNyL91%;xY};FvF&X}Qz9BaSRU{+nnlCgwkWf&ZZy zL-?P}7%cNsv zmM{UaLkUrfe-*6jbkK$gJ@v{(S0AwWF_E6{iW=lj){Yw<4;^5Aq&td z@>iF??*n!Q_V^ch#^1gJ=*IxcGuT*x<_j+7zeplh7IvT=gAF+Sf8Wc>$xhGtm!txS zo%~1NztJWvY{1OCKPHR+`~vXx$HE3YR8B_LKPCbeW}rHS^>2d%eIHD$tia3s7mV`X z_$+_}{^!g1zmpWOFtPk2m7tq2Z8^vY@AuOOmS9u3{%#XpC{G$=%s_zl0<5Sd0SkSU z^P0$3fY=%DQh(4)awXJSk?nLOqi?t~R|U@hal{hw≷J2@TRn^NZtml{VCC%S&8T zRY#jtuD-Q3A4Adp_9wsoseT48$Av|-7MU)0gq<~iTYA+_lY(xpM+B0!J~A5VntZbY zkMk`nj!zgGEmo{+`U4G}Dpz_VK%K?t81j0VaOJd8EEiyzW34Td27cM2KdfxmMCMB`fqx)??kD5VEf*U4x=R17szSI$m zT1R$t{M`OO28&fhv86n+e`QwwEmZa=NYT&<7_LXi@Gl07|Kj%fpNcG)|I*$3ALzXSavvuX5tBbreXtDwyAL4;Bj-O6OVb`OZeLVa z9y}{69wv$f=yUX99za zpAR`BA=<#5v)cOnA|lGl$_UHakVHkr6&(aBI|fT`Z+vHYKkn28oUhwYvtD)_XZcRm zig^e@+& zwZ}ByJfOqSK%6~aqE1>EzIoqpepUNKnE;`-vj!JO1){WZ%Fx69i}R7PZyHQuv@5uJ z8p~Jug`%$tnC|y_V#Tv&iy-Gm3W9{rI-85kL4Qi+cMmqSS#LLQh~1~;mo)JlQ)%Xe zyR!WYCNCSxuGY^l7~Nw?NSJCW&WHs9%3zedtj|yU^9Wd#a4U9}A%X{Xo{{lXZaZ|| zwnqyhZ1$AB0pj#aCx}{j#l|i|ZdR1_$eh zA*S9mm}g%+e;c+V#dj}MuvfyK@eGl*wq@}7rAMhwGD4yaGG)aWkoaWvip8RWBQ5P| zE%*088ZOwFV1gdGhJGHG%-f(97n^}(yrl&>=%a?V-$Me|hd@M!x15W@N()}s2qSAt zQTiI+Ox@t#rj;^(h~Z2BaJzTkagQreL)nmmd8G}>`HWvb+nBzCvL^<0RHbOZ|3=>$$>k3*c#EVkUh3)Vj zqg>F5#KMSA5*LiD5oJ0xXx(J^$#l<>R>`mzI7h!3%5|CZu+=9eh74|#WLM~EbDB6M=74@#4s_>`XHSTfthWRQ`z>!<} zb(iqD*)XfX;wSIv;fELAu%dPU%aP>3tBC7g zEXu4tnwTL9wo0gKs6A@HTF_psV^vq*16lAyWf!`%Jzj=Ao|>q0WfG>~{IvSUW<6}H z5nsz5#}T2J0n>)vhdX04)C(ij9TV(yT6FhXM6!l|d&P7eBUN2pUak?E=^N(b$D1>a zmOX~Y^9o=)jJ?SK#zw!#KO9tMOBX=Hnh)v7h*8Me_;UM;Kc~;5s$cbeghc!*CP-bc zkq4!wxBt519rDy){W2zqOd7cRH=c|5KvyuZ*@AFc-Gbow#;1S7X5SK|>3Cob!(ukN zj$+z0+HTrZ+ivOS82{EmUFxZsyr}ywuLSdnrMwSa2{Z)X`z%thV0Ksbl_ykHbR!AA zoo@GhI=m?cydCePwKTj3QNFI=BZy=3RA67~*YC`PMDOjUQCr`g!<*l`xJl)?W% zizlVgkYjwOJp)bentUfT`~x9W*1FnIEFZTM* z&1?2b)lI;6LjTsgApp5mU@Q!=Camgb-g*W6ySPWlr}R1^s&Q9G3JRB+mBX!OE4f1q42{3rs) z1}_pjE)sh$f|yeFhNF>@m4crbZ!`17sH?y|kAi&INKPsSIbj+vU7Q6g359<+cOkxk zESTjEy-?1Uv4TyDWU@SpFp5bwJFd#~Fmc+N%QMKtHq?lIj9nZP{_rMCD(T(ww)!Wl>sdG6fTjt20=+)?~99Jff{IfD8)8H%DoS zFQ~;W9rl72CWaCdsp+!eL`#yt5fUbqslIv8DUB7pe-misBLOlfkQrpQggVuf=&q>F z`Ys&vP^KKNsNJOGo%*S>AWyTxwhT{c_tDebxxp^ZKD4RQWk|xwKe($rGJy zpz#ctH`OUZaCldNpFK99x`hxJ=lC%Vip&gz;Q1mk)6NkY14{+`LWAEy;Hm(g8pz_k z;#ES2dwIKqA#NU!F2US;MP^8`paA$RiM(9{5R`LQJECx(P;k=4pK;LsK9Qtt=dBVW zU!Uo~i{^X>tLOYBia$c2EC9O_g4}N$O7Vidg4mGrwsA2s&j`$f3$;wp-=5i+<7In8 z!f-vXzx@qDiMBpkTpUw0r-xjujSCfeM!QuM=@kNvI9JDvLU|^G-7nNDfEGSWr4*xj zLm`8`H^6-RB&;CT+ozDU$e<7b>j68cASs^@zYO>?ft**mC+_DH1G_Xgs~Elya8$`p z@rkjF%F8A4iwCeQ<;D1f>|=@w2-Arzev9hU*ocfTEA1{52D=)jWSvXIj281iF`5&R zH>4d|Oe`A(_dr2NlMoOk2>>WZ35WSakjoV0>hqE>$}@s0pHZZRSpZPM(Xa=co|(w= z(|w}GVY36&o{>umqJ4ra(gXztoTiE>kVa@dgnZB!QOy<2X-?))%?EX!iA?qR-;h}9 z{d_2UqZbk9V?IBFnjTU=gP!bJ0vki*H;_9!1aE@7`k^UyLZMZWPX$y-wgU05e4&g74vQw~XeTNhdNHz(+e+d*<0Dm%nPn1`Ms#NAO0R zv`6KOK+}+pJrJuZ6t73&SR~O1mh%Ab9e@NjBXj_0HDJCZhE-iWe!py6a!+LQn#k@j z_mXPoUhE2jocO=fq5+`1$bSiG1YYR_|B z9BL2cBaL_{_Zrg^OmCfUyHEd`(-XX_PvZ^u5iBsrVb5`0XluywF0nhrw8V+VYi5$fY2LOZ;04EtY=vKVVh^zj`~deKKjdis9%^53t(=zFK3`Yeb3qC z6I4zq!=YsGJL=2%|^zjL$8(C(L)B?V0%D zz`29q#V+i6)X^>Qdh`w$j5!MD7TM$X=9byxhk^Et0*uAnGwG7f9Rh&POweVPuaQM6}%xkbJw5Itanv^&Sg>2G_E?-gWwZsQfj z;>5w<{|IbU&m^;oXA9KxbNv_0Zn%g5npwm_{DBP6(z*Squx}A|0IV!>>Sxv-a%^Bj zr1i}DF6#ua@R9}qsJz7C0aRH;V$WZCD9E3`_z;?I1U3eh@|`JDlA&*a^%47Gn9f<$ z0IoFdC#l&~EYX&3SE;Mysv$XJlq-*r#kwD)ZkBti7QPlM3K#BOurc>UES8ygCGHCZ z*7Aqi&Y6QG2h>7Nk-sG$=#j^1nKxmZANOK#C91)3>1ajs2E?`-zE0ArKt;>JWd{%x zE`nM%OO+(<{FGFVY4wy!_ zE4@yFFMwnVA_fN7vSAy0MJqDIhPB?PNBE`(XXJ5U86=>JeP>Ar$(FNX?gMGVO`#d) zcx#w|FI)$2?8?Uu<$|2UaWYN3R4iZto(u!31U@-GWLHfF3^sv4T%-YFrxI_`tLIMk6i6kDjN6ijhkL;p)a5e*PsZI}q> zEX9-KGKe|{%L1`wL#&&`KaL#uYxd~ZbZ_j&VT@2vb^O?3^n)5+Jxz0q6MkSdvRdj zvJyK%HXOqK#om^@e z!k=^;Ox)+voj;*$5(kkmzgVA*IT<#aOcTWg%WjWG6zJKoDr%T%6Y*}9p1 zoNPF2)nPFk0;d{RWhj7wvrjB1@q=0t)m|u#?sq0x6-JAvCpU-FojFY82)n%YT~gi< zduT(~W`7CfMrKh^$FrnhxGch$YnyIdYo`{`?Fo#(Oa7uV-NnWrO6HI96plAyckP#` zx-4?i%kr69sg8<0E!SA-1~rIPNYY5kbl&BJ^NvSdYcoQh7D87Zo>ka|l#sn(tyY;o zL`aJI8NA!4tNkCew)%3#U1VIREwbYy$loVUo>n>F7A8`-;sW^7)ed~&Qf*2bp5mlm zI=!4 zYY9)aWsS1GY%*%@9AbrG)MjD0aa%ZmUphh%}G6F$1LZ%Lj10+K5F%aS=w{sb9+gFj2LmIkl zT6KgkI^WF4Z##;U5&9+czD8O>y>b~!7!EX)l+yo z|K75=(SXp4LGe9q`=02L5wH!|M3K}+*}h(@AiOXvz&$iHkz??1%U5v-oA}B_t`xF1 z?irNIhr%FLQK27O$x8YQ9Y!tTIN4IP-7-z(-DH-ZI5#`&kW7ghxsz7BN+gLS+c`;s z^g-tq+JDB5wUb^)4FEc~@_uKP*ru{Wg4Js;dP%1i+ckiZL_+7GRJtZb3sk*e z{^m_Fl%pn{q-n1R2oM5ce{CKgVqO>`!F9iQu1Zu(luPca%5jlSkL$ZBFf*H zFJ?CI^sc%T0_vD5Hji=62%B%l+ijBly1ax{R>J}UO{J^L31`Whs+dFciZ;m)WytH>8&d5LsPz?>EkRu)=+~jvzL|Eg{WzM!J znz2?MRtt+9f2J%t`f#c-hQo;U%x2TT6VL$*R@~G}0@Ru^Ee(c|my+Fu#)5bM5?{9x zgp9V5V(LK@3N@2cd0f?$pGZ&JhF~W&c^2HK9_4f(ePA^Nn2CCv~`{ zrP!J5)+Vp3tF^0(LjZfK-(;$IK8lVob;L1xq-d2lZ^2xXzPQClNl|umZR#kZWd;vU zY9QyK+S|4ydNRGOq}ei#Os#6>D)vmlVByH4b6EYP@iPp9?1XKP^N%sQOrFiq^yZ_) zMh+Yq(L{8*PV!P?DHAEvt0u0yJLH>eZ>4Zc{#)06AoodIZ-rDI;5+@R8xN%(uwGA~w}!a9CD9iOu}M>I|r>9AtZ~_Ed*A_#MKw2!$FrpGO0` zYKngH9nHb2roGc*A(x%*`@{?`GCfT#RaQp@eSHzA{uz(=xD)cL2=JldojoA znAP(r-3o9k1NAQ5OR4i&Yc95-t}PXJl7)rHtA~JB=8~t=#VoE~y6BmaW>5B(Ewv1t zo_Z$0#rZKiVk&z9zXs+RCQV6fR_8UMaw$Li2?1DUWa+l2s{3VLMAiXN`*9525x>g6 z%SNx=#`FEx9#*UTCNnK7D-%PPh1OYZrn)Rm6bHj1HigTTrUGj*Go7c(-P8&^BlIEz zR^|`3wY`+e#dT`ZMC0!DjbY-_*4O3oZuj+>!8tL!9su+&-wwa ze9n9chtu~?>C*8DoH(0wUfM}*#r^vfd#$&qo0%V8rjP3fQ`SClWonKDroSf}8$;nC z6i-~sJq!YGi1-Q?zj0Df5uTp#av=7%@MC9}`+l++eIzMF^&>=7&>Q4p`ULZi+0&4Q zx5nm$nQOMfDSGtfOHwKZfcwZWJko%*ilQZoPK7z_C0)+mU#nWt3U)%HIO%w#rbo<( z(Qfiud&YuI$N9U~;Mu+~%e`akHszz0F^Y~)p3*Z!D5Zl;4o-2#r$GVx% z+e^xHBrati%fdfpA>m{{u;c3<7$?uENJ>{AcIIG;`NJ>Wz$Da)uCCY8N@E`zgDhPm z#6je(P82^j(_4k)W-N+X;Us?YJji9y+qD4V`l0BC=4*F*;a9`PaU2n zVTOvfj$L`jnhDn^3iMrCENUxz z32$ve+hu^apoO-vrjmJx#=+fKV@}g-yap6HN}IaMb{=1Znk7$NXJ|5!#Bra;jA~Dq z!pp;L-+)8If~*wt21D{2*J)1O3SM)7e4Zh&sy#jmo%dl95GWN1Po=mjU>vTCCtSyq zA;3^4f=_3uAHeRhO`Nf0Z_w7PR-3dFIu0Az3Nqx`GklJ;ZO(;K0UoKvR>%uglLT%~df87LA6=-sO1J2Te8YlFcL)S=Vj( z{vAs#YK~f(GgBv*L&GtD9YsU@>6ImxM&>mm<@KX`gA`TcX1N+W6KHn`!1%X zD7ATdE-S(VQ7><6`{@8ICw|mWR)S52 zlWBLSPKx$brEPg_QFNx;Q!za~qLxN#IZSjU+gX<|CQm=$a3QY}pb~yE9KlY)tvd|V zt!8;Mw6A=ND`v}B&YWr)Dwqd?2N2{|Z&)L^lZicG$h~rQ$F~FkjMhRc8v#>bN!Bi9G4WbKc-o!&zAwNADtX%qE)V&38980z>DrRP8#uhU(Gc$w5 z%*@Qp%*?jM%uJRnW=j@YU|IU@bMBq-+&6FHMf~_L;wxIIs>-U0&dQyw=(X2gi!)yq z{X=`zPemcIAAwKT54^Q8YIm#Jgv~;VijTOsssq?O_p@HP9p7OW#{m9`BbnEDdVZe@ zmJj+s9TzRh{@1)D3+unt*8gW}|8H8s-_9TZo1Em|1|a|c;5YoG@Be2C^nW8J@W1dI z{xSjh{|mptfCOlOq4(RhgNqYL0{MTzN&vD3SULXb>G9_tH;`k(1N3OBq z7X3dZs9CxH)s*88MU7mbqQ*CViYZlD^NCnNbuQxF{&k5OmO*o%qK5IJ`Z-t`n-lX8 zAyclanF7e$74?c~&{yqC=K=>qQhjGYhCS=NWH?{BL43ZMKIe%?Hh4n(CADS-$SXKB z8+2d)l8lm;KFixNhmRSwSI@Y|h?lSH6~0s(C`2vY{5l(x(Qi)<82*XXcu9PD?N#iJ zx9ul=0?`aFvF$3EgKxayKoUcXDhw$d%|%ZGeT3#aAG5UkCyZTuEOuB{*#Er z_B){di-+~!Tm@E+zf6YyQz&q8v9kP0Xu0(B_fwNtefP95IIbWSk(Mit z3h(GR!*|3iE;kO5K-(0J6^3U7>qXs`Ag!vJY6)rRy6TDTnY8!bz_*9pyu^S>zI^ z3sI1#{F~F`I5l-3I0b(2kJzb-7u%{OXExywklU%N8a1O0r(KpJ1C)8CTx~X+^B`k z!yG~Op`Fw$EW(*9jKrCQA$om}mU}iTuG)}|?ZDimD%3NdedTjX@P8@^cS0AP*w%cw@M2~Fm9Ds6o35&QRvWre0(D15Ne2UiA}5<;-rJ*RR&1!3k+uoi9rC&4L)IdQ|0M-Upb_<=|g6b zGeY&8ZVV)U7?rXLFpJ}oox6+ly+?B~8p1}-*Yh?>fgL3Sv2VZ$26KTT94Koi$GGoK z(;|;stla1E1wRq8eFZRo`S=`zij%8E6p19c&1xVNG#p9sB|4gYw5l}OCmc>yG!&m9`dyMO82o zz^!CKVcML=3!cXAwHUeM2D2;zYb`Pjivu81GB!H|BfBccXIF*B&{mC7bdzCPR7oNpk8ebp zRx{F{h6X6_S=*G8%FK$@wLqmSvp@*Sr<$eh%>q1dYE)=j1t8c|nAos%Gsh*;^{3K| z^5(>|kukfg1|j5=SLao_ed3FqYli4GEYh;Gf?2!2PD$Bh@N*8bqAw{kwN{oi9AzO$ zL{BTGf8$a(<`VnSm=pykKLU|`=`yi$9miy*VbhrITMEa)D0MUD4iiY|S2c*ST*6h< zcPr4td@VL6ArvMH_PC#x=tVa4^cBbM3lsDwg1&YoVb?x6?_s9|z>(m* zfzV&WRS(jy2XT$t44Y8mHRCywV?BF8J({u*MG%?YaAFnVjLee~$I4*$;?X{#NydjwwR^bg*_LU9k2qb;m*Pb56IEV`DWe+l}h1L02r>#c;A!bzwL)ZGg(dr_Kp-&Lz&Xl+z5HW^F_tK zrfOc4xK;CJUO9XXOE`^P=t2w}vh@?~Eqz@2d8Xf?gFEcHfOK~qHqQBVSY$E1ED6;d z;Zmmdtkn)GPFmFHUV^8l2}Eg+@f)>bONQja<+r)XsY&D)2kcyLzSF(_r6=+?navdL zk`&!rk_`!@C4SxlK?UUIk;&M}pHRfpUEpdrG=`&|6cGp{5{DkDGFOzysnp}DE%Dz- z#%z!ni#-?B>QWS}8tJ=b8(3wlH3CX~r8|`aUrT=O_c2|4dLmRhLN11R+y^Gxc7VDk zlH?r+Vt!HJ+~RH&DQ)DJQL=UB?A?)DVpr6ODJK(fw`4jB9!Z3UC_EywNsi;l7#QkG z2i56Ri{iGWY^Mx8S%PAnOP6lYzw!z!ni-OLbOJLb`0H{MtdLvBHV*6%`KsJBI_UK? zYvfiK7Z}&-=Reo^ih1f1TX@aG9IW02_Re1nzQuNNzwf8SB4TUZg`S2nox-s(jEkfC zU7N64n!y_O%lZkINE4jN`Xn>Bz|)c)OqjFgPg5bM?4(#6Lh?LnP51yuPgO}{t!JCz zdZqAlNuM_)p~!O{jyGRWv9PT6jL9bfSDPZ%GGCjSGb`QX*oSkzbh+xd=KD$q{5j+(TqT zx?-sdz^rW;$J1E)iGYnIauZkwRN_K_EcOeLKk@`lq6=r9CAb@8w$gX7EOm0Y3Da@qO#W;#Epf1erzdlsBCQ6o3t@tsUB9} zii`y03kC7;cHRnRLr9MHH?W(rTv=4dV8*gwvnj`5)JYJml134560o5_!#j|sPFORH zurds(SqFt|REbJ$Mc8;D*FI3PN6GYfl!1+b9Bs#r;7q;8l>4Do+)yV^=UxN)utn+{gKsM#bD&-3zd*gB-MXfqi1AtxJgor>F z4n(KMNPZpD-3o=%oxac>8KGksB}<$1^1JsEf{t60%bNS=YQPm z@i#QMj6364S*lR%c6HG>DvQQMAMJL;XX`N^uIFj^R+r1hwg`O)P< z%uR&~hcpM9ttAFKFZJQ&ZvE8aiIV>SGy=riIOZ zfEjgjwu~Dj5j(c~q@=Q^Xj$eK4P?|x@KHi|v&L1-Eg`VR=~8NjhTHltj`ov_pi_C} zs~mN>7**?;2_{A@e61eYylr3qm^l1vU0!j~^mYr`=q%nUIHZeCgB?6LQsc6l>@nT2 zc9%#=-$m6WMe;KAQ?N+R)Z=*4VcDRHZM9zM9lt~T^c@9twJD{kM)8BjI$YQYpU%qW zx{G~!@PuJujXR<>O@W#H>E_DHcxC)`GS18~zmc{m1Fk0GB;N-YQWZ!Ske|@!$Wwu-RqOc=eWm?!~#}WU; zbdj@E{cuj%5k;!B6pLv-;qiW0_AzAHvX-SuOXZUF-i^_ZHn+#kx(S)uqx=xXoP~wk1WxxWW##OK z?fPlGwDq;oU-Hrk~(@;>cZpBAy2th-9t zM;d57K5s1_iG((f6SknZCt2Pi!8$92t-KI>z}+sDWMT+;z$>ZAc^Ym5tJnNj?n}Vx zn#9!z+M3MmNKl;98=JTZoUFB<)DbBiYI7=0+Vspk;x|J54nS^hhCei*bzY}+G20I& z(QbW$!y#T3AWD?_HhWkm(joFy*f>dn5aSxkPvol5SWTfrnA|_K7qyD^+VCs4NUwv* zC(cvUM9W*vl>0-9+-nH1qX*+3Xr0F~jnt|#Q+lThlH3BE_907_?cMbJ6EY8HQ7su> zcPXjov@RF+<^d|7W2cEZR=2IemY*rFpk%EJxYpEm@~4?yxN3srbgP@-O0BC(f<;xe zzd001MkhMDfd-su0N>bD2*jf0Cp&T)_{F3d47kIjVErN*cskO=3szkboq3#=XR%ZK zL2L5K5UM>L>URe6e9{`|8DOTIY*GKL0YM9ErsC#7JPQxFcL9?m(nJ?)p8Dh?G((?p zOmeek)wPd*Bt2qMMvN=I{>s=v5*}p0k~D^{d-}Q{)L?wC{aC|bp6WFrK%~?_qGEF= zyQNhi)&hw356E32lmHJ0&KPMPD)>HmgHvrusifVe*B855?R?Hr&as*W{@jY1a);U# z-NXS)C6XejSbf1$sop|yzf3z+Dzak`mfy{K|`Sp@(3_qepuvZkk*sq4}q z@#{~0Fl1Um!`RUT{Kk`ATV#8hr}v1~sSOUA9qiE2iCSvkK8sn1suA3#wcDm1w9^t< z!4Fff5-2NlxH*SZPR)jnjMbif3*`vRRx0&Sa3t2XTypzilG7*et^{MD?56@foUWG5 z%p(KzT$0H>{$wkiTa%2|sZr|DOfVy)`rxD9sI?-U{KYn2i^CxKOO4{a4O6bta(r^} zLma^cR_zZ+$?kf*VUyT31WE_@lEy)*m|ChIzBE5g6DG?yOw#nk{78)9t%pl#e~6rm z7uK8+8&D+@EwP>1wKlF>t90R`wXSzJcVd9n&gS`8Zv^uN;bj4nYqe zbusE}SXt59i98Ik91Qx%8^;zcG?fv5!)vd(Qih~@RQzM)OC1@kn8Z|Savla)M>Bj; zMe9_jSnhcpu~pN%b@F#xD;T@9(#cpD`$LN;kzRKX`yRE@W^i_l*pbxz=38G8M`F5^ z%2wounw;8o`*`fn8u1xneVn4dB4ZkEGLf~b@Z-}Ti~>NlQ&Z0`&ELl9=}oG!)U^G4 zKS}aWJW$@bkm;m&Er`2?hV$q!n-329aGZYB3HcVGk-$Bb@K8scqobs}+B&c?vpDY4 zk=b1L|GGHNKVZ~x##iBA` z9q2G%HET0iHP6fCHK`j7&RR6D_nSKF`sg!s>`eqTki^<+(~Q(isHs{kVcTXTq|Rt` zdW*VvsYo9qBMvNzHT7~uOn-J2Ymriw9$i=aB`Vpbu${G(?LLaMii^Qf#|HBYy972E za;{l%UYlCE0$ER=!BWFh>iiZ_9@HcaHEn2+i*<3n!{1gB;^-d3)VSDaK9v+%pu5K4 z=kgKH&?#wMS!7c%5m;&DDXC8q(Xjp|gNtHrvO;e2Ys!{zZgW280fv1<0q2sXPY_Yj z&$9sWC4cGSpGgXjCj8rxN16ACZp4ZU{(yOZH)8pFGv{RL?)lcUv7&pk7Z!OpW|(cc zN3xs%2vMOD;+y#U(1^C+>UdS>iZIMrfx6+*$n>n)YLSr}R7pa!#sZRIGKProP z4k&rBwg?&~1aIJB0g8EJa?0#9j?b_rOc`l#00PhPe5LlCPyK zW%o+$h%zv^;rr`N*1NT)eP84%_lxX}hR{C6>ggsO2+5P~!7Xwe5a${a-w}oLN9TQ+ z)7Um+;I9{-6gRm-fMB3wSwZed?3hdcKAHldzLmvzvYSoZrIPobo9 zRY+I)Zu;MyG=+J;_u>c(|N28C<6ccJs~UR05$N{aLe&6nstzMEQ#8O*ZPh~i&mG)bnwRdrV7 zzA~dzy}+}u9AjrYqHha11Z6w&LynP2kIB}coGPN<04+>je}$fJ`6|CaH=ixeVNkyZ zHujW?peVP9B-|k+(_zq~2Nq$$4ZVf=d2~r(U7BlenUcRUw`dGB2PQ-!MQTaBY+l@a zNj$DHI!g}SIfhDmdRR)C9-}APA;nXue);^|k~KH4g48ZK zTbw!x6_!7^qS)06gyk~+GPLY+^ZRDNyMbQYgpC++X{`8JMPlSpNkr>5gUGFV=mCeE zBK0ja1q}oiD+-cnWH^Fwz1?Hv2F+nSU@6mtv>Nf4C4(f|!HGg=HQA$NO?OJ?4s{CF zH7TV%y3{-9D4h}QC5T)) zgG2iY+qC{j@XmND-}0;qhUcmZk!~2%p4KC-9f5_p=`fdCTfbd|T<60C=Z?t)Lh(zi z;0H$k=|-JA()LX6xbjLJsCG&S%$Ci?!28oSl4>_f+zgzp2vp#=!0HH!&=q4AH@0DX zUOclnDlHcFOS5EyQ0&KGk{+QgZ3MC)+Lp;hW!w>$40h`cRQb`L86+z|@07ZRKJ1GQyoaTqJjU;DHx(*noc=-uTj%%pDG+ z?{EJY^7?YMO-ZFGQ9ryqTBBv!u?~NGap@6#_H7I+dSh{e8K9dHmNf(U`~YhSOKM<} zfx>o1M`{)jRu)DIuS)`NP9YgEoF$gkF_Xz+pL-`jbP_0w*{w*elfFkwkJ;J$sUrlg zvA(~S@l!3UqJDDigGIshFUCkuQJwOnUbq>v+VQnXyJuT}$+NjGxp2Or45P%w5HwH! z>RPfs(xG$}_VyS@h;b@w$PA z0amO-P2#f#F0!>$ExeRkYjbh=f-m@v4~HI{E9Mgdc_#56g#z-yTELPO6R|9&RyH?X z%ISHid8E29q_y~*8(F`_d=whO>r1GE`6%C^U;mjAd$uRLoefn>Ii1*NZ58-4Q&*o$ zi$=6RyJYyCri;aFQg==>+ zF|UK9vCAG@tx&*uS~?J7W4IgE*{y7>Cu@LEjnqY6LW7e7{=d{l>!oc&nmY27sE3~I z(cPzL&m4nM`f?^-h1h&NRoIhl!k8D^(}eKgHmKvvL&->ya%4B5oll@yv7~c8Ycu9x zN;@7L{$N5Y9T861icvN=sHzh~KWbvaKC?KQWf>he-idSnoH14Elb58_#Y!eUhEp6y zqWI{2DCy^TxF4+>fNDP z-1*GFc=r1PBQp?(LnD)-!?V-5KGBH7?5^m*@Z99lK2a>F>&B$`;8z5F=@YA@P=o-e z?(svbq)7QU%3Ei)cQnZHeIrwpmS-D;h}gnWl*8*KoEZH8yder^aU!93y`(uMGj6CG zwJwcYRGeug6N-pyHJU-?H^>-D;&78!__U&=!eMKK6KWR8+b>S^LaOV(r-MY zrW8WaUsQ&Lq-Z5?=2(y@UtPCIpS|La3kPCZUfG_U@ZS;8fenVm^|g{pLi4Md`mVdD+G1lt!$@wOYSSSH6?anMK0WJW6 z4G>K%R)6STby#RjRr5sM1)us%ofSUuN@IDT7=YmlNGBfI&KgbJCz|*!!66j$Q+X(H zKS2IO3ZUg8Wc!TDAH*8~fow{J9hmwlmUz^WvM^HT6@_TfE&vAE3`r>Lxht1=5NvA* znJmcnS%hKOAJ{qI|4KqM@(b7u=?9?1UV{iljopAaj-q=daUICKMsOW?J~0XfjikI2 z-93Ra3=F-3yahdf!c{U66bdTW?ngGp1@jXs7!~a$p4&z3B@Rq`)!`p~G~>a#`Q?R_ zc=ziGo#^D}HGjeG&uc6GiN`(WC&Hab?53>1xW4^IKjyaxNERqY*Y>?|z~mGdus(V+qmRZQ^{;(JOh~pewK$y?Yg_8z_7xs!M+* zeuCc#B{AIfosa6f70{-B{-8bZXe?lO`0<9N&!lph!8{&zpFw`i>=hfl#; z&klBjvc2%{A)}sq3d?taX03;g#li3Rz`8icK|bx7+$P8mUg%#(bianxKS4VVazc2c ze-$Hl9Q2s*G$wQ$RIEEu@FH%!L%s$zJo#P<`#!WY*4G@|muRp)?rGY2=z9&d6OG&) z{e4*K3415{b4p+w*R$fcAaQcdZOV=8tB zUv6N(9(-{|;Cu4rW_pJGcKCfy?bBT69-Ci(=br0?Qc1Mq5cc{==RStVT|GDBbLRR` z=RShqq23Lq;J)5X`{B;6*&9>uh#;^T3IH}^0lkn`&Owd?JnVOjPoU7xSb3SRU`ThK zPN-5(e7oF}J2v%aYef}-&-9IFg}=r)eho7(-=hmvpN$0;R}lY{QFuQTsydU>wS9@J zwSCz$syd6bP!M`e%?XfRy%*D3z87n$AWq@hYgftEr?u{Erlo@G9qz+R8*bfGOBl*sTSaMvtG;j zc_B(TU!5xR>Lg5W;Cdd`)rE8OffCqHi*$2CIKnL1zQ|GO<#w^!{rmbJ5sic4#%ka( zYD~=!nX6ky*e!z&T;Ql{zC`cw=2DG@HC^>fvTJ!h#h#A2|Fucp-Uxo139fgBr)IRZ z+*jFEz6w0!h1}mbGG;D~tyP=y4~pG11f0TuZw>)!xZ$Hdf4zHhEHh2}Y6#-? z_x2YRLrs{h#z+1){Az@E`1LP1r2i%>&i03$$3N5J|DGuGmkx*sy@-pAiJgKvkV0c; zV&zH#6!Q2l0T3Pl2NUaWg$X$3-#4&ua03cV05v06*a1M>2sJkgdrcB{4km6MZgw`H zY{(z-A1s_qYyhB01swC=>LMZzR(2L7fWKKf|0Vvx2~_;x-~f^+NEq2z*_pTiTmUu_ zRsaA%!UAC9`MV34ZU0Si0jAC^SV>s^O0NG)w*3!Ni+>LG?`!@!WZ;FrAIiTt!u-#n z|ARH~e_QW^jYN-?i;IbyjTHbSz_4*~lIZbp^DuF-a{_q&i(A6Q0r-Oo#P)~M%YUL2 z0L3@{WE2=A&Ha|h7zIjX5CSDK4p=)vS=?xY34TOc_=AjTvWk)8kMSH{N^LC;Afdtd z7e1XGxcfRxSnU?lt|PG_6zC7~Fieo$bNiU4L!8+6DwThk5Ffqxu~qLnT3t>GCZ(M%G!#|q3h{^6 z5|N2YEuBxED;^dsQD5TBl4EocdZ z;BL~EPX94M4de`_pJ}?$psVWLnIEKxIc&~IndSXv@m?`9QijABb;GwaJ zRskA0S2z86Az;ZZ|K^v;BM8jTS?$M1diQsbD5DFzSZE>@{5Fp^7D~AD&7%Dluovb^M$jv!fS|cp7Y5(2c93ViPsxa zK01kB4N7*ye>h@NpER(>9nNW1Wm`IUL&0w$&63N!el40tNr(?^38P_0oD4I?K$>KY zFupIEE;b%7svAN9NmU8<&WhFba>AwqzylM77TQ7jWu)jw<06o($-fBY#*i5T@w#yn zh@WB4K8*`Q-R_D&wd@6B>j<5>^4qcy%Qb_nWQEf)gn)nPI~WS~n;!F3+T8~1ZGhs za{gE{F{VGg^3=U&wMU`{uM!NY9Rim|j_4)Pc)%)yP>n=M(oLNP?dO@no$!=juuSYm z81ogie_8lYHF9%Ds9juf_YH&?kHk}3*yE$%Gwn6H()n;TB~toE3>@?}mICvAnPQ$M zTGCdrVe!t{eHj*}t+w?lh$nQH@8ErqnPqyZjEzgYy(-${D zI~`{D&<_%X`)e^G%n0?!(yAUne}%7lSY-_$&cjDtyo?vfh+yii9X|48=gFZ;KT}Zt2hygU=G#C#&Au z`nJ;Ou_{VF{}e{~b~%Ml4h%6I7SyO%2&iz40f{8f2unaC@AUGE2vcQ8^4tkyMQaRk z)J|3dm1DD16!)67o?=%HrhjLdecqJ^98p05R)Og~zBdM3NEz^|yoaw|HP4^&QQ87g zjiYMdNFIh(Uoms3aQ7bDM?FhSPfa~**X>0hD8_8l5n2x!GabeTuN*U}x1P>$h($Ul ze=?!Dy$*b=3DKWBBE4&R@C<+-n!b))B<`_~quZo|zad&^#&S6#LogDlEnnEmf8NjH zfu`sIMYsB9kF}ZD?iK%|G~tIDY-=l?odq*!Rp_K`vuI5y-F7$@LFUJhlWAx664W_k zdRu4xSUXC+#Kb1}nXZudMenUdgVTP}4cOqSU>_v<`^S!E} z?RyddQQ{Vj7P)}5*-{BGg)zHNBOl$d+D;9u7c^SRZ{6xw!&j*V=#;GZoD8iN=876s zsCk@Wa@#S%KbC!b!Vsi%i!o#4{IHf0T&pOs z+%g!X8Rrr&-WrANLraN)!a9VhN)AEy z-M&5l&J39fvZ-X32m_cQ3jEqDE_*FNJUGiR)jbDs&0J?GwIZ1v@$MNCR%Gp>T4|mu z#OL$t*`VP zRekJ%`6`g12+RBI!7W64dg*kI<|aC?r(pTEs{A6xK!|;BNl*B}`df z!>PMSB&Wn}Xow;Dy{||k9B&g-2yxT=_qet|BkCPy>z%Kvy^X0qIL3YXw*4GwFCQlI z9nMkOD$|!U{N7@Uwi%!OJefa#qD}dZc29iN)|wZ9FA;40;wi!myW{@CCDMm_-?-2w zHvhv&>gLk$#U0~w*UYpLfy|fb`$0|Qz~X`qpHm|U0p`;}NP$ku0wFC$y@2v-#+!Tk z@Hg5#PWYFj3h6gFkzBHBe=|Hs>^7G8P2F2>J^FTs)5H1@PJX>fF1N)9sOOE!?bi)e zpH*rh@>62S`oPVZHP6K*2U{DDy9_@cTLXx|Nzn_k(+Nwiz?Qt6-04pn3JR9G^w#l3 zk|MQQ+0V8jwbS?TBJ_{~CQQ3Z@}*;t9Q=~>8Ebc#AsK6G{$#&Gi+X5usZLcy6(V7>4y?G^K-e$DUDf$Spt)rv{xouKR8$!i~T*zRpO07U3BUFeo7AP1& z6_Uo~kMYm2WfL@aYlA_pdt5%c|+>@?6T zc@;?q)?}NYk5%JNL>6ULpjTw^P(-+j$#i#@De+LO5iTF%2uNwRP^N|;aZPFENk5Yi z-Z|xyIFP1{x|~x+dv~#C;9$)1Lxg8dPHNSg(Y^=5y)}YA8D*FhbIsB%&}rS&lbo9D z)CypO61IM`H1R8^Apf;nT_8_W>7)2yKAe?r*}3$sE@h!J3GGD?v;L*3k(qfu9?a`> zM(OJa7a5pXQq;n@nS1exBlI_E5ph}Qmc3P7dbcR)2_<2MmgG3QLo)o4@zKxYl9VmY z5F6U@c5P5M_9A|sD1ib|eW7;Z8ON@EF?RYAoMnqhVFhCw$EW<5qxXIZ@PHC*N$K)u zP5B_y02~!W@{GZ#c0dWCq+KMcukr8#$(vvt4D-wyxgbm&9GEvCL{?+B?N~AL>%3LO z;w!|kSft84DKf8o5K_RYG9qDyXk`0*u|Sj~^1g4#)9bf=_jz*xGzvoln$s8P*j^V!I{ zm-cLS0vKn$EOc3RO3S7bUkA9Bza&h!o+uXZSE|_GGyd>m<y4TJtxF1dmn&!nJ}c%cj2rIOu9h~Oz!05Gmjka1iq?`ijAh^2{CdLwrc0hD0j=^Kx#U|TlXyV$V zr8z~1Q*WkV;0el~@vX19?gFWK%;;wVU+D$3zD{Rx*NZn^3+38-7mpr4PFnj+w?Nq zw^iQN2cEdtKA$`)2sP2Xx6W(Twg0j@VtJK|8@BINiLz;p;KJ{a=s5c}lVC6QMZdns zDGuDe_<_^P(eSc1KpY;b=PvB^se+9LVk2lMb>Diy70kkhBRd^yzKN7XvR^gPdM=dHEvdF%e0PW=7xpG zv9#4N&5wq=!M!1=My^{Ef9x|aqgBo3?DTi0VSTxGosFT7EC`)XDdxYLNbP-GTW{0K z8C7kEa>hM=C5X$0F(!voi!@V5bUYa+y3nFecDsh!MTahUvS8QdzP*+5?8VUGVPlgg&F!ydf@8{>nct0XF8?r>pVfzecB8@paTJAodc=T)! zU^qY>vV6klJ$%~l)+3AFV$Fp2!e2$9rfQ{Fe~>kr6LB?+il-OgT4cPxqaNX|pB~AZ zxzD}8R+KeabM<=s{5kP1Z613y9XO%1uX5u3;cjt{-3M{j_{AUO?%O0fsX7wZ3s9{H z1bG*D`4`Nk+o&j1N+xXPlwXj3SYK!{*{Ipdpr0QdSu|1PKa577E1L0aM&nJM56I&c zq~_z_<&$gG*!o!x)o{$&p*ZsQzTHMQOkEH=Zj%jnyOsn_9Y&N-;b|^2+9x5kb8xhG z3UqrMY|k3ddw95C>NiiF@wXhsyILg*dZx{I**)KmWpMB#?KY}9+#3Bm6y^_!*MGt= z|3vHlM(_TvZrcl!rS$;!h70Ah_S{|Tn#0M?IjvTy-aav9mUfQaQ^1!P?R(B5SM z0F`k$e&6JOV3mI7i#2(Ho?^5TtiS&>6uaAZq z9X6?L3b|-NypH5nS5>!Pvo@@wTG-r%R&lTd(Z1N?LwT2@JA?&TLlpe^DK}f(ooj|( z*1{kImZ!41xVS!uh;TDwx;de^L@PQqxh`H(4o1b1gC;554v)xvGT+GbIAPfje zK{x0E-DZtGJqSR#Qo2SaT>LIlr=ON2)p+xlbvgL9#*HxLARj=LRosWbo_|c8TY`MH z4SpJ6!?Tm!ks> z;{nl}LEK&@>7WciYWfOt=v~~+0U21Gb?@(_5Oi%K=6?W2Hxv&-ul|g9_W{o`@XHsN zVPwcMJ3thGjEEM1GJwFr1-b`0{)CBuVjK+p2r>wLqeg18xLM>}Gkb>sg;U5!2s$09 zG%I+Mz*A!LjRy=*qSIxxICOBQfdiW;c&Liy&8zG>@%+T&r1WcQtJ1b(!mw5_X+tCw z=sdr4c$JD8=>U8`1UZCsl`xE}aw4R-ZTsxBwdb09f>6ma*()Y5jyt`ZH;Aja(1=17 zDFwc}XoyM@gbd2CwVl=IdUOi{E~a+T7Xn(d=+P4h5h%4w(GZ959Q!hGr#G#}+JI}H zyH9IK52pS-jXuI$F!XbJU*4g`_Qzi{*W$zmgy`whOjRCxm|4#Cd)J|{!2!lCn**u@ zBD7(hq)Y;N^8urTFF9_wLanDcB>#^r4gRH*w~Dx54D zk>#^}3NKD7Y%k8iR_EbSQXX&3%9YDDUagofN}p*ydHKX$MWF9Vl{p)q&!%OZY4!)% zIrd~tyZLOl6d8sg@$MxMBuAU(E#&C$X0H}xUfdXmnMxG+4<`{Ex7lX4F|e}Tu1V*& z3F~^eG_=LxE<477ZBjd=vKos~5#46sA$o+ORL;%A!+u`O&YGPz6@5t;q0mMP6E_eo z#IQvFdHTYSwOr1~nv1T6MvPpcJq>H4P0>m~1vqAZ>=`??VUFTWSv!i9g7s2kogun| zx%0YfKlZuHKZc&3%Q~pw327SBZ>Pf6_nl#fTr*^|*PTW2m|>T9<&EsVZwLU7(Al~w zZU~4l8Hzla(A)-ue$B|q$mG-C!rCC4*=l-)#4@#E?!CV#5m;-&Cf8eQxb_W2oC|YMF$YU72t(Y<_w3aKRPu;J{pmWz z4yIc?`sH?!ews~c0ZI!J&}!vRxJ^vRWD1VDM9X^nR~c$9s$pqq?04HGl?Ji+k>!L#!G`%oYBkl~-tG#ywm+43;sXA%c*JP-?1mPy;>uG-V@W_$l|WP@!)NMFR*F zKKJs4RZ4&y>`AoRG&~BCTY0rFWXx-9GfNui9|}0;u5gRBQ&o%~X~bOC+t=h>FAQ2% z&haw1rtN21yX&gGyE9?(%O52)>-8s?zI=R~-7=x#${pLn;XlPSCC9) z!_3bM5AiK6A$X*S!M#DT4a-Zf>{l(CD*UQ)t($RssnI}Ga`d7JfS-gAOiU4hXkP!- z);*-$cz8#9;n9x`KiX5^U;%KNr5{?GEtL^@Qo$U6Cx;J-qP?AZ=E@kBFw^~s?`_e!MJ#ikr`%QMWJ0l8 zp==ryn-cNUIKQx?)@l>3T?N+&zqHJx>hv#tnO_FSz1cD@72b^S&1ZE3zV#D!%{lw~ z=<+_H3ly@v=vl^#u|MQnxkU+>uTaXZn!rOsA7t9_eJD2>&Y~w&ZA-=mTHv5Dkr)V+ z*ZZ1`iuKn!=T)qk+c2rHbKno)9>PsY;iwNa00rM7`%0oJ0Yb0nv0erHj;Kd21+`D! zTVb@pmZMk5xBTJov3fXkU2RZ(!S%}810<=Xar7{u`$ z{ji(v*0_-5mA^BNPhVoPyHo`{{zN$!8tM8*q!(rGRwKh24Bjg@(eve8^wW~YAfKQ6 zrzNckK7EyjMKREy(D>)V2O(@fd~h7&LYPEL7uT!2m%55nRJ!sLua)={m*QufZ3C#% zu%Ek|x8~x}E3OS2$bnKz6S zM=~-gcFzsQyDJRIgy!~)B%(M7$&{O^JhTfU+zsU!kD>qQo{?z;6W9#FykLdn$mDks zNGwOwD~smifD*e8!V?qrOQ$V@V(iKC2ARf{fYS_Ep9dkERe_gZt3fvmYb*z=;K*I# z#NR9@uw)5eUYEvgI%7^&A)2Wu+T%pR*$#QhmvGAWuPjHfzJ~RR@POSTQjtmT6oIAM z2vM29U5>3}$^N`S*BASVI&X}!wzvj#NA!=U#mkGKdx2Y0RxsMbTb|eI!eX-~rejI{ zQ9Y;BhP=d~9j?=cyppBhyK=&|8H<}G<-1bpxEZUjZ(c6Ac) zkM8aY?j7bwTs@F{QT6{(&g@L+P_dnrsAt24$I%7Sx!|Cm_{9d>p`Wnr;^)qdLK{3+ zaddD0%oDADupYY?J=P+27h>!wJkTfGn)<5$a~ry+Da)ledVnOK6ZT*mxX_5|X7ER6 z;>&)~Eu}BbFpo<}TcOa_d{-l(ZG^Em0Q<4IrZ_<7GQG# z`+|UM4Cx;M-5eq~BIcDMI5OlFBRInPnkP6y?iC?8;KDCgxU2FSA~;~?l^{59@I+}p zg#LtSKLq!h)3GO0S7z@8*H@f)!(LFCc;ot-AvntB6)ZT~>J{9vkNqTIKjQiXZa>0& zBefZ0RGck1*vQd^R(neR3RQbX&Y!r_2H7_f+Xnd_nrRJhC=72u@O@sC7+9Y!M!b)# zEl0ec_ylhcHMV2Jmc!8n$Gl`&CrNKVTG*5z*k5=9=O2W9L+2lq3AEM@!uq6`+XUq} zPgOUf*9IFn;IkRlXA1r~v2V}bhd6L;cWPbwdnqRVnLyo;?>&*>z)xVavio6O{QJJU zU4`cjlwg_X4OPedM=yBd1#NEh&7-ohd%Mdof#IkH}t>hmL56ZMs^xK-^O`2 z9bT;S>hTh&;l)FQh`j+<=m^y(|K-D*jUOF7sUI)jXbAm@kp8etg;)8RyTR`X-jnAW zu)7Aq`l1hv4_O;c?>7X#qU3L5@Fek%3)OGAW0tDn@Q&gO$z5Z|L!8hucWwVYP4vQ6 zY_oJ%L^q)&wE`GgvBX`b#CD&O!7S?$+9NboqFa8?j$B1tHl7*W&*Q=@*N_5Hgpg&Q zv&Rf%=wLGFzuzs3J_0ecYw|YVrF~{tyZp5IEwS;JYrRe4ZeaoVZ^FJ*G6BH)-7;O? zFuUt-jUalLpEnJqavBeVH!B$#|MfQk!+mY^x^^eS+Ce9l{aaROeQ&b64J-67lS5L3 zLx$yZ{YD-zu6}e$Sydqrm7qgr>r_s0%AII&9)XB+8oNR#TEE*5C;bSkCAwBM_tda< z)KfuaFco`9-yy$(X2k($L~wHCA@n`=hOY(o&66Fk%c^qy)5L^+mWj!$7O_8$-4zft zV8$LM>tlIdB=7SeUneboqOcj+9b?2f+{m2if9(wC4Y1;Idx%XWhffp=1%d*n+nv;* z6&KD5l*Uz=3crFMe##8jX#b?Rq|EQnQGJ9-;!=w2I~knXL~3HNnTf{Awn~NIelRd_;RO3*gGWYQ{XE^%i$?{=RVGHiX?c?5O~-z(r(hfRn7ChYuV$Denk9X~nfW+AulzR7b{jofWU9d6 zUPo@SH9hqHa%MeL61$>|?UUvNRb2_*-V)5F6$m64-k!6b{4{zud&`Bob}-Y;MS3Yx z<>qcX)u+I^mJ-~g)Cz z2*51H3IdUkFq@J_zhR2*W;j*$7fi}9#m&cWs1b4tXsA2i{jU3f9m~AbTV5I zXrOL@Y=5z=9D8Sy-=6r+Lgq~v6rg*SCMGY9O_~Y1-l)Z&Q5}(>%g7njC%??w>4}J- zR)|p_IJi+}tfHIaka_B{`C15C|6RC9V}OLBQ@m<5HIm+=K=jzLyPvVjTJC*30XqRg zFFNe*+z$f~U(g9FJ|YR9v$|%Hre7RRHfJp21gnz6La6&mQ1pZErOtDdvn_mC>~gzF zeRuWRe3dojt>nRO7+OX0@*0A)k~;wsD2q@@Fr02TRBh)yXi@IMWYu-hLEyk_zdA&F zzAYmjurWqP4DzIL&cr=SzI&QyUgJIP3iP7(o16k)28C;nAySv7cnz7T&~FKx8rX*t zZ$I8XXv|;oXsIluf`OCn_s*FWoFsY%q7+i;&^0 z)?-x2f$|0ABz`Ve+8Rk_|7wzjD;r>>{GhrqmMUGL%XOA&N%KD3yuvT0QWMmm0#>if z6IH#gdkdqiEdE}tPX$SR)w7Q)Xk>E&M@0ou<4!TaqjB%~@1pk@Jk z>oZHmirpave$l-NiBi=fyv3X0N;U_9SMQDEJ?S=7&uHmaB?&r!nLl}C{Uo}Hf0516 zV%Rwi;owm>H%!wv@J(@p30l|0fBU$cFCFlvY;JNRLDH7-NhdTWcDrRs3!QN0CDr5Z(K$de8KLc^av9U0aK6%*~pt(rCT- zB*y%okF1`Wr>w4+YH4jVd$3x5jLf$^#W3;rAYdw$sX%I!-eG2)ynUji$Y`mt%> zzvkfl?n73^tgCU?!j<@@X;2h>oT>S~a$v3XjjC0jNzd%$B&iCAM_pR+GLksv)8U-i z>(0?5bNr=Tx)fVQ$%gHXXnEFyv{W&(q-1bvSFzQ?Zcf-ow{m)pCn|Na;|(hg5{w-; zJR&@44l;T0Ow1i69fj5kMmm+V@0BVRsR#A1_7LunWAS=M=vbJW26%2`n53{Sy{T{= zx?{WJ?75S&_cfal|LNq2!A=&SPrk0WBu0Ye0+ksKk{6oM->6IUGN&mE{hWB3_=5Bx z7qNQJ+O^7PJjc0is#|qsLt3P(F+n--KV8eGcFx|N2gRRpW4&T`gjp-9geAjES!2 z8W}jO>Wq0rT1m}=KUQC;zf_KNE7(Vur_>n1ny%0D70#fjv$&h}rvnuVq*L4ETUGAt8n&R8>0PMSofQW*fMGr$lVc!j3So z7v_X(Z54XJn@%YI#(4g{f6#*@@Iy-{g9_|`zO)ttkY;A+p6qy=?-F)mu4T%{^E`2v zT6W#tiupU0?>k`xtefGLk`FPrWJ=58=WO<0CxhizbANqf!5?@zb%9G6!g%qAckR%> zG4}oEW&5A+q{RPmC#7m?Zf~kC%^_lMV}g1m^*@Eq1mYlGBIn_--|nP9AkIq$!vB6J z1&46LVZfae9S1iQ#0enjK|tJ0BoGGjGEn6IHEbsIF9y56z0c?V8(ZCf`u&GHslRCM z{(dL*M=kvOZsPy{m6Q$-;D~T}9|hK;gZI1|FyfJ{B(Y6#T*LPn#{ zBL+SwM0m%_Hcx$c()miwRXQ1iqZ5-LTywF4L{*&Wpiqi>MvUWADrw`e@JCl{8jQ){ z{-5^=?lduf{dze0Y$Ys3h><>K%#F21ks`#Jom3C{AZa4et1tLN?8nD;RTmD5V!aA& zlen1vb;lSFyccoV7wp3RFfiQzt7i!h^fw;_S54UncD}sCb=LA1&8PGes)NaMEy(kf zN~DU~IBaX+j*6ea^Xs8v{iGi{C+L$K#Tufg&IG@|+dYasJo6GOOwB9RUX|foYNV;i zepjliE@EYOsuC+wYwP2amrz^a^RU$SCDg|jcbZyffrxAS*Zn84Jvh4@ zeo{&bPp7demz$6^`zAEk_Cu1%lT zMtR~EC9-FlR>r(p!}af~U7D0+h*R?-SPCvz^$yr(*vEgKlT>T8PH6gI#`3uWv#A-{ zyYxIY>d>#teqnRb?^)29yR^`9p#pCywVIqGq$Y7?N_+^PFOB@vuXR^x6ChWpY4&kZ zX{*%M6Q6;Y#t|;NvD-cuQ;*E?Gm1^hym=xZ@};qAQ^pqZx!`Cen`f|11g)6^j%FpT zQgRJ9RV?ds(EJva;B}_cFE6pvwZk=6^m98Wo^NFra#ofmI$ciXtt{Pac04rjqm|&Fjw36>?z63Pb64f zK7qsXSkT6KJ|_n8!HH%i^5zpwwmfX_bzzoh$Ah{ljKs8PlG3Q02ytYi*?T@#GzS|D z@^8^618JV^*BX^~W4S5h5|y-BUX(qMd85Oqu_v!G0BXbkW<%lZt8DA$>l0r|xo*W$ z%Hy5j9fW&>couKxhH{68XmxNdgb2=zCh78_Aa&M@DSWGsa?*E(-ZdkW@!Lsg!%fNo zxsj}jMqwxxB%&X*L(Br)#+;pdypv0E93hfoA}!h)l+29H6C!?#Omkvb8;_JR2ryq> zEY3Sxk9>c}^m)?}6K?d;dK2y0`oW;&Tc1qj3L1hmVne-Wf>J8G^}oDjqyq6wKbGb8 zF|6r_5O;Lpa_mDtY;R5R4bCO?K)fE-1tS=I){eYr zT$JO%;?r%$3;|F^| zrOV|hU>W6ewdnIC1KC3Hf}(M$)lP^S+l8%@nyK4pc{o*0-ez%> zpCrelGr76=9v(R=6Na~7neo5qA%}!gSF_%jPgO$Jnt9hj>Mi)zOJ0P7KMLHY$arN{ zQNO(08;*RP*DU;WuetBtPV&O~JznFB>Tl~#9MXl9B~LAj`NEvMA`*BW#|sjvg5QPr z7xMx$b+aho)n+C6W7>cNK^40b_L-7Ud&EG|R;TT98!Z_=+V@iKgL{?&i=!A6I1;0W&7bVTWpigN-@_guKb~oy^wlP8} zkeLn{IwFt!2Fy$XN4^o0XGR@7hZPu_4yu6!6pd1#I{Ciq8VaVRP%J2M*21 z&8+KB1m0*WZq@C&;N#PU-t?#K<^q{|XIP5yaK}+tz*%&u%kX}M?TY_+Yqs)cjTXI- zpH{Qbyi=g4jGos9d>xbo0f>jDJG(ObfCp@`7ez| zY{;!ovcpemYYX0-W=Au9--$&F+eo&AL&Ag%DbiP=2@333HKG_TQnV!>A++Q#c=IH? z#IUDtIk<|BNORt(gf^x1@WY}lQ$lUcI)ss8A_a#k6^`p^R?e$2`M?F~c{Dpk>Dm@4 zWt|DfGCVkS!3X#Gd#(I7tcTE2*qc4ph1j=WW~`{b7k5c2Q27d2ZS`^(7CsaF9DH%d z>683`SVmY=>(HGvGUtUzWh2vsyT-Z4 z?IbGap5E}c`QECq+(lLXbobCW9QIvusDEgSK}FNJ^vuQPT;X1VHqEFJdalU)z3q-* z>zuoSWgP?$flMhEZLArX%_Q(?Z>{r>^)Cz&KG;^mDZ_)lzY_C?C|1e zDr^EF>AC=In!8EcnAE=TIPvG>whN8x`=h=;4&oXQ8L{Z0p6ey0+p*OK0l4t5(wU$7 zokc?qI`tL#8pn4}dVUht3V4U^oCxlE6!NkuD)DkooLdQcgk;^MYe3&6QfLh2U6!2> zP2}Pq&|a<4!(3Eyc|143x$2Y9GT-Kq%0}d1ZAU-L?zR8`=6~czkhY z^2FU*WsaEn?CRoZFsQq~f5teUQ0|bFGI>3M>h{RU0a~2XbBB+rPv(c*uFGt>hAG?k-6QU1$h$5QS&D?a9BD%;4e9v!lNs7$j5=JjMukeR zne8%LS)A{sk2Jg)THKRR^nipF|3D8~eW~9%y?!3gp-}PW=jU;DOBw1fPkr6h=R4QD zOZN$6xjP#nP002Ztk1$<%nT}zJf7FPpE;ba9}V_f*z;X9eDswmTdj0wbnR~+wlRtv zTV`DuuB_G~3M1Gpl~bYJ>ra*Ltq$#0a)#7vQZ_3haei55$Qaq+3gqQ%w-sUcWuCqA z>F^lD@})Wr*}?NXdz7_YPZrR%f8ZMA==1!-X{xr`e$35VhY@3&2G9)pIEMiwbw0A1 z43F8L^M^#P1*g+fVN0?lEV#e4wMcbMu4-la&LX<)btjjb@;PlJq5kG6 zce36D)Y98ae}J~E*!0F$Mg=m$tX0d3^XNCxU8aI=?p>TGNLd z?I>2gtrZC$3Sg_w+KATEKA81*@6C*!d#Z4DUoD5bdMY0NI&LMfB+1&zVaU2feS z8ep~rA=$jsOLSi?TW9H-(XfS0<}8FrXn}=)Ta2;&A?QH0>qp-5EislT_v#{_H<2E@ z%)~j^gSpFDYFe;f;!T&&Le}vrjz%Etp3bDFHh$IYl!k10=G`TPn>Kp=8hM%mTD+zh zuf=j$v~OA*-jM$`;BrlW_F<5xYV97vj9``!zm7H6{k|_2j?{OGot#DT$`;Uo|Lw;Y z1Vla0OY!+!(HyV)_g5=Qs+iDw^k=InxOgYro`I+ar!v&Kz(z^x2qXFuRq3>jv(AEI zNSfJLda9GrjJDFZOu*gud7TB+J$VORFr_hEUmnGnV%ygw*`%*T6v##mO*`|7Y;wGr z)fw6Yorb#7g*`-Mdd1r_EeuV_Mz_?mD#z&4oJpm;(1MnfSGbaMaH;i zf|&Z=!u!l!djvMiOJ4O`7{wKQ7MR$~ZV}9W(UutEZCxyfepC2n)Hzys-#ttLdKHol zD$j^j6K2!SF};kOr;o>N_+6l{{L!CYG|g*XOnjut__n%4B~{M#T_!)>ArvBULA|WtK73%D2rY z(ij`X?_Of$ji1cF8dMvWNUvWONIvWS8vYZF(&DtIt>VI4%wT7(7hX@5+)7TLl7GVT zb(M_!dx#9z&mmv7B9=NGHIkDvnxWGMZ0GZ{anC!W>-#5dM#ogyQ?wNPo$%JJHMXB& ziZw0YZ77X zesfcQDr{QU3hCYIcA}oznN!!y9t2M+M$xbS=-C)dsnz_ULw4?ac9z%?{=gw~|77b~ zLMM*%pSH2Tz4rQV+ZcrBw?H7a5%Lkfbhln#zG9NfBBJ{&psLDw_-lscCE&HoCdhYB z5YHf7>W=oZ-$&wWMaqa@bj2#Ov9|}6*a`S=rdNjgrgX{g1qUTCjhfLEMl0pJ`fz7z z6H>gN4a8#1j{aG&mdR=~X(0(3BlB`jqW^Mt46dbxpn1{Gq&w_2OuxO1nZ92?w1u-D z=#q5i4d=qP@(_1=&;OYfOi0V_W9&*s)@OF|lz?+QWDV}6V999t0v1+zgEgzl$Zu;- ziAOG}_WoB}NCWwMw*iCl#OAgQnSpLGx_zwi4`QX+H?2)s&q^#81(F`p?pb;uteadL zT?g$S|8hIos+6!HX!=Z`j}=+@CuRQ4m*T%E6U+_a{yXs8^pR}DF#>1ySIXP1U3p}bvRJfQhr2sWd<&?R*#M^ zv)g8?sq<^$)pkTZ;01s;pgyP1cBHM(wNJjjG!Twz*qNtZD3K@`A5(I5Zl@8FPwE_x z?}_B-B?|_g)5wU5&E+`-+KV44@m7zyC|m6Jxu}{XJ+Y5AsUGR0ZS(mw{6s>^G4=Lq z1yXCI&X*N6>YNV*a>(}0MT+1dDea{d2d~@~_nYdO9NTUhJD-I*&9n@IG966lHSjSV zHF$if8D4YHWv_QSD3U(9&om2~n)7_skgCA*acC%sDYK>(f<3HjR7-^=OWH=$Qi$l# zD51pn^S|}|#(H%J{h=nQVtH+syvfF^ayEbMlmK-^@!_qA*450XlUv7AwjrF?@UO@ zbYY^put$%_XOb%;YLoCPa(mJ9+g4adBcTcl<%WBDH65RZz%JtW3Dsm#*oqaHdW{$K z{*3}PiQ@(vPI$+DFkiMD%8i#;F>?5ZPJ^bB*VP}OED*3@2Od5oQRtL)i#tl3&thZq-<*j)7t z8^j9pbF-0b3_R97J0-cZ!X75do3qQMCc#)<=j3|ht*Y@7%k6|pwY>2#rkB}9_JF0X1mfdMWKI>|J>za&eG>g(yQu@jOD_?8{g27f!uLApLq&yV zth*b2MX>OHc4X6`9p$tMfg%sZKtr0V*ps~(B^IeE=T^H}>D;S1ECoPDR4(X!;pmECivjC5QlNfeel;vw+_7q-aqMp*%J zYpX)XM_%UZ-D)*q4Kru=P*u6oV9p9~yP2|U=~_+Jvt#eCj5DU1KQ^$+<_V)sp!_vQ zA0PF+qM43NxSODF-Cd$(KTV-xB|2^`ND`4!v&YR8BKw-SEBWz?8r}>-YpUW!@V-7JLCco;I~0PQqp)9sG`#mZ-+il+#HyJ|0Actk4bodalv>OAApiEE2VysT zFZn6;iel%~gTdqX#LTktX#k(JhALyJ%xKHkXNtt`yeNGBS4mNr$ zRhnl{l;KUwY!(G(B^xEL)dCZ5}9&a*>{t7b}Z2b^R)`xV$nltoB8Ql-$KLog8y^ud^ z9z9NJ61e#JgFv>-CE-sC`~T=W21fGyb_HRpAzid8fj`@%x`H9*Kr?Va6{7!cugUfX zV*@MIJUI8Rv;>I3>d7fqXAOf$*qbhC z3zzQ2lTDP3Dp#Ev_|OTKpCUq+#8P*UO_uHLW}5h*@@}B(9d9JV`S2qr)pj+Soj1}%F~Mu>!}%~`=)(EUU|o^ zs^M#e^!RXanX%iF5Xv7oTk<(Zommb(Y#TJy=Vq=S)n9i~HF_HTE16_=EQuGXDCDev?FMpOJkvF3GrQY?GTEgPkLG2a~p;&9m55acd@o zkE$}}@`dT_7(u%b@Xe<}C|7!cDb2-cAYWbR}j& zQsS2DQeq<(+(uMb5p>qqAjP>JpT6OfvA=sn|7j;IhuU=DL>FvyJOo|SA^kMT@ut0$ z^oQrNcLtR(O9ovnj+(bU?<=iRTUIt9vZsp18dW+N(hng-PC_5>~yz*;a4DDf>7;7$bM0`BiTA=FqFnA#lB@P=n zV&^DseVlTb1|IOb4ykkNPM7vLX3j@63GB$nT~BlcZ5V#LMPSN$e?EzU-SKO@<2A=y zr7U#4DTBdEp0;8RvhXDOAI~}77cf5Vqjl0E~1+>JS~MgCWR&oY`8Mb zYr$*#UFLPInYkBv|LYT$M}apql`FV541RhKU5J%!?jz`Q8&^kUIKDU~MomXe;wB#p zFF-I4t+}>YxOZ{-@cNGx9fz7SV!A=ny~+8)KU`8L8Z7J-_n&>zzSXvq*vXlV7D09{ zn$+(5eIty=4N)$|-w>A8Tl`@RtuyDzT8WcWQGy#`zxjtHKOMeJp@NsM=hkmf)o{%P z9t8<%3Z}?0*5n&L^u>qO1O#Sld5VMC%I3UtxC?yX(M$t;+wt$I3P<5xH+T3yE$sKV z!`I3!`!W=~hKi|h*h6^f6yM+@kkCEtXHeOtq^~(&jwCb&rjtgX2MCpTAT|wM$-N4?#KZHh3q%~iN5fNpKGo4D9wuZZ!g)$&errM;hnjB7 z7V3oSa)U~yYyd$o3M*{5A>En}5sutey4NV|Xmuj-3jMn1yl-7M^l96V>F3`}aHpdv zEwNuqEW(9r2Go>fT||1I>T35ZUeOd?OPsLE-YFj*3#oLCq5?g1{8h33BbA~7Z|j4i z=r{GLINvu+6;t!aoX@hWU2BrqI;0^)A;d7U`zC`n!3$L_emsMHVnN_Jd0}>sJzD3E zlB4kk%;(;_g$_*? zEA>&QRq=X<%wMYyTu6-0lZ`t`gV=Nvs}%bbg87pVb~%3i&}o0AAbE3SuXX3iyM4D< z4=eKZUHb%4qS&STaXI--+(tg0uk7Gt&ziRPmUoXkH#hDt?A3WqQy&W|4A2Bd?n`(} zAFjy<#Js+sn@I4mkJg9k%{MGEmz+qn+9y3<|FEyq4S)US>0Yhiwd46yfTeh?^8B1L zE=MLUI%tWwwyS4*UC(O43BBpF;V%I>_EX!0mi%u`6~#0sUb~gbRTW#Ga15aZpyJs& zk#99Ie%_N`>gN}%KGSaAKN7|wmV3CzvoTo6T>D`1sUab9df#_HJsR`=eP$iifM zU^U^>e1nG}DSMKm9#k(Tw*^%7%c0M5Vn4eZRxRA0UC4XE@LiNc0BQ3z&IbK!%xS7& z^booTU35pI^tN|U(dfL}V$8Aru_>F<WPY@^XA+}Ep-=9-rc;t(T_9peGK0qT!v)D^;L;F+WU`3m>3Ynebwm1 zmFhQyls7^>iMQr0Kp&M}vA1rUU5pv+W?O_-sANjst!A~cgvmaBG?Y7xm>b;;xyiGGbrd9;RuvdkA!L`@q z<&sQ_$a(i(8WlvCHJT>z*Zl}Gd0Vz4&b!MTaMF2C;9{^~JZ6S%_(0M-g@tT;wd%*U z_ZHSde^Sri@M-^5J+R+if$P2PwQHpVa7PCuWpbo<7Tmh|CUZL-j8{kyiN*6 z7YyKzdOpc#ao+5=81U^ib#=C@@9mmb1#y^eCsqY?fEY#HGv+;RlW3cNdcB~GZL*e#-%B~#qIGUYt-D_5F>j^Vrx2qUG2}4^;8xK0>zbGeI{(*#31^m`sj4kN66zrXB4Q>7* z)G)O)w{W532K|%N_P-HUT;ag|4*><38wvdvLj{-{fc$An{i9eg;8p)`RN>zMdw+ZH z@pru5Z`diI#7p{8c|#W`OLsaQfZ+lJgjfauZjj4YP#`*vtCCCN3QH$v7f}mCr%R4r zIm3T`h5&3Cmqq=Puop@PMP7mnfl$aCU>FPnp$XuNb|2Uz)&DDnEUbWN++D2Q(090Pvm)=ry1Xa|H1D5{7m887K_Q{TGeMaCH^1y&K8D1B1XQ<$=KnB#K@@@Jm4WZ*2jC08jyn42D3F0hL@G zUoZ%HNjv|0dB7fgwI5)BPzqJXjl4Q%z`y|kRR+K0=($n{56apEhC)%>2LYqlByj40 zU$tj2;8%bm1IXo3+6;Iepvri7P}&SZT@SzzBnYJ+5Y)9DSWYj`6TkNt3PK$>ZeRht znvR&HoIxNw2*gz#0KqGGu8t9)y+6oM?FEWJovTm;9AzEi2Ksx| zb^%jEu>)=%7|NJ)^8gFmmA=8ac`lE3zx5Z!jYQciE)Q>4>xIEkZH)(*A6M;)2UriT z<^@3gDE0CH;Rdei6b=EQ*b5xk7OsvF9LS227f6PZ?lQp0mHxuvfKpLpz<^wpAyDf@ zaQ}4x{!M>?mleu>3D5zev;_eJ!>`thfN=vZRlko10`b?u{P#MLfN@+&hXkR{b0lCI zDCq#*qsX{X&tXVzD9_*Y=i+1t1V(Yf0Ujb$EjkhU|k hrvs)LoeJ Date: Tue, 21 Jan 2025 12:25:17 +0100 Subject: [PATCH 5/5] Step 7: Added tox.toml and requirements.txt --- requirements.txt | 3 +++ tox.toml | 10 ++++++++++ 2 files changed, 13 insertions(+) create mode 100644 requirements.txt create mode 100644 tox.toml diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 00000000..8a033ca5 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +pytest +numpy +matplotlib \ No newline at end of file diff --git a/tox.toml b/tox.toml new file mode 100644 index 00000000..9c2f96ee --- /dev/null +++ b/tox.toml @@ -0,0 +1,10 @@ +requires = ["tox>=4"] +env_list = ["testing"] + +[env.testing] +desciption = "Run pytest and unittest" +deps = ["-r requirements.txt"] +commands = [ + ["python", "-m", "pytest"], + ["python", "-m", "unittest", "discover", "-s", "tests/unit"] +] \ No newline at end of file