From 6e7d561c7c7ed35b4b3d67c78770674f94652713 Mon Sep 17 00:00:00 2001 From: Batmaev Date: Fri, 4 Nov 2022 23:55:03 +0300 Subject: [PATCH] Task4 --- Task 3/Lecture 3.ipynb | 1244 +++++++++++++++++++++++ Task 4/Assignment_4_eng.pdf | Bin 0 -> 164779 bytes Task 4/Assignment_4_ru.pdf | Bin 0 -> 228930 bytes Task 4/Lecture 4.ipynb | 1641 +++++++++++++++++++++++++++++++ Task 4/tex/Assignment_4_eng.tex | 161 +++ Task 4/tex/Assignment_4_ru.tex | 162 +++ Task 4/tex/library.bib | 118 +++ 7 files changed, 3326 insertions(+) create mode 100644 Task 3/Lecture 3.ipynb create mode 100644 Task 4/Assignment_4_eng.pdf create mode 100644 Task 4/Assignment_4_ru.pdf create mode 100644 Task 4/Lecture 4.ipynb create mode 100644 Task 4/tex/Assignment_4_eng.tex create mode 100644 Task 4/tex/Assignment_4_ru.tex create mode 100644 Task 4/tex/library.bib diff --git a/Task 3/Lecture 3.ipynb b/Task 3/Lecture 3.ipynb new file mode 100644 index 0000000..aac17da --- /dev/null +++ b/Task 3/Lecture 3.ipynb @@ -0,0 +1,1244 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Lecture 3. Projectors. Least squares problem. QR factorization." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Projectors" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* A projector is a square matrix $P$ which satisfies\n", + "$$\n", + "P^2=P\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Lets inspect the geometric meaning of a projection\n", + "![](proj.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* For any vector $v$ in $\\mathrm{range}(P)$ one has $Pv=v$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* For $S_1 = \\mathrm{range}(P)$ and $S_2=\\mathrm{null}(P)$ it is said that $P$ projects onto $S_1$ along $S_2$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Orthogonal projectors\n", + "* For orthogonal projector: $S_1\\perp S_2$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* One can show (homework) that this is equivalent to $P = P^T$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- Lets inspect the geometric meaning of an orthogonal projection\n", + "![](projorth.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Projection with orthonormal basis\n", + "* Let us consider orthogonal projection onto certain $S_1$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Let dimension of $S_1$ be $n$; $q_1,q_2,...,q_n$ form an orthonormal basis for $S_1$ and $q_{n+1},...,q_m$ form an orthonormal basis for $S_2$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Consider \n", + "$$\n", + "Q = \\bigg[q_1\\bigg|q_2\\bigg|...\\bigg|q_n\\bigg|q_{n+1}\\bigg|...\\bigg|q_m\\bigg]\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Then:\n", + "$$\n", + "PQ = \\bigg[q_1\\bigg|q_2\\bigg|...\\bigg|q_n\\bigg|0\\bigg|...\\bigg|0\\bigg]\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + " * We thus have $Q^TPQ =\\mathrm{diag}(1,1,...,1,0,0,0)=\\Sigma$\n", + "which provides SVD decomposition ot $P$: \n", + "\n", + "$$P = Q\\Sigma Q^T$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* Reduced SVD of a projector $P$ reads:\n", + "$$\n", + "P = \\hat Q \\hat Q^T\n", + "$$\n", + "where $\\hat Q$ is not orthogonal matrix (as it is not square), but it has orthonormal columns." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Projection with an arbitrary basis \n", + "* Suppose that we want to project on a space spanned by columns of arbitrary $A$ (they are not necessarily orthonormal, but assumed to be linearly independent)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* In passing from $v$ to its orthogonal projection $y \\in \\mathrm{range}(A)$, the difference $y-v$ must be orthogonal to $\\mathrm{range}(A)$:\n", + "$A^T (Ax-v) = 0$, indeed:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](projorth2.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* If the columns of $A$ are linearly independent:\n", + "$$\n", + "x = (A^T A)^{-1}A^T v\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "* The projection is thus given by the operator\n", + "$$\n", + "P = A(A^T A)^{-1}A^T\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Linear systems\n", + "\n", + "- Linear systems appear as:\n", + "\n", + " - Linear regression problems\n", + " - Discretization of partial differential/integral equations\n", + " - At elementary steps of iterative optimization techniques" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Linear equations and matrices\n", + "A linear system of equations can be written in the form\n", + "\n", + "\\begin{align*}\n", + " &2 x + 3 y = 5\\quad &\\longrightarrow \\quad &2x + 3 y + 0 z = 5\\\\\n", + " &3 x + 2z = 4\\quad &\\longrightarrow\\quad &3 x + 0 y + 2 z = 4\\\\\n", + " &x + y = 2\\quad &\\longrightarrow\\quad & 1 x + 1 y + 0 z = 2\\\\\n", + "\\end{align*}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Matrix form\n", + "\n", + "$$\n", + "\\begin{pmatrix}\n", + "2 & 3 & 0 \\\\\n", + "3 & 0 & 2 \\\\\n", + "1 & 1 & 0 \\\\\n", + "\\end{pmatrix}\\begin{pmatrix}\n", + "x \\\\\n", + "y \\\\\n", + "z \n", + "\\end{pmatrix} = \n", + "\\begin{pmatrix}\n", + "5 \\\\\n", + "4 \\\\\n", + "2\n", + "\\end{pmatrix}\n", + "$$\n", + "\n", + "or simply\n", + "\n", + "$$ A u = b $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Over/under determined linear systems\n", + "\n", + "If the system $Ax = b$ has\n", + "\n", + "- more equations than unknowns, it is called overdetermined system (typically no solution)\n", + "\n", + "- less equations than unknowns, it is called underdetermined system (typically many solutions)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Overdetermined linear systems\n", + "\n", + "- The number of equations is > than the number of unknowns. \n", + "\n", + "- The simplest example is linear fitting, fitting a set of 2D points by a line.\n", + "\n", + "- Then, a typical way is to minimize the residual (least squares)\n", + "\n", + "$$\\Vert A x - b \\Vert_2 \\rightarrow \\min$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "## Underdetermined linear systems\n", + "\n", + "- The number of equations is > than the number of unknowns. \n", + "\n", + "- In this case, there could be infinitely many solutions $x$\n", + "\n", + "- Typical problem in Machine Learning: employ some kind of regularization. For example, one may find the solution to $Ax=b$ with a minimal norm \n", + "$$\\Vert x \\Vert_2\\to\\min$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Example of least squares\n", + "Consider a two-dimensional example. Suppose we have a linear model \n", + "\n", + "$$y = ax + b$$\n", + "\n", + "and noisy data $(x_1, y_1), \\dots (x_n, y_n)$. Then the linear system on coefficients will look as follows\n", + "\n", + "$$\n", + "\\begin{split}\n", + "a x_1 &+ b &= y_1 \\\\\n", + "&\\vdots \\\\\n", + "a x_n &+ b &= y_n \\\\\n", + "\\end{split}\n", + "$$\n", + "\n", + "or in a matrix form\n", + "\n", + "$$\n", + "\\begin{pmatrix}\n", + "x_1 & 1 \\\\\n", + "\\vdots & \\vdots \\\\\n", + "x_n & 1 \\\\\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "a \\\\\n", + "b\n", + "\\end{pmatrix} =\n", + "\\begin{pmatrix}\n", + "y_1 \\\\\n", + "\\vdots \\\\\n", + "y_n \\\\\n", + "\\end{pmatrix},\n", + "$$\n", + "\n", + "which represents overdetermined system." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Solving the least squares\n", + "- Suppose we need to solve\n", + "\n", + "$$ \\Vert A x - b \\Vert_2 \\rightarrow \\min_x, $$\n", + "\n", + "where $A$ is $m \\times n$, $m \\geq n$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](projorth3.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- The residual $r = A x - b$ should be orthogonal to $\\mathrm{range} A$, and\n", + "or equivalently:\n", + "$$\n", + "P b = A x,\n", + "$$\n", + "where $P$ is a projector onto the range of $A$, that is $P = A(A^T A)^{-1}A^T$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- If $A$ is of a full rank, then \n", + "$$\n", + "x = (A^T A)^{-1} A^T b\n", + "$$\n", + "- The matrix $(A^T A)^{-1} A^T$ is known as a pseudoinverse, denoted as $A^+$. Can be easily computed in numpy." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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JXDFNDi4x9UaODAdooJ/5IX6wIGTTz7ZL+fdsWMHCxcurPPXjhw5wuTJk+nZsye9evWiX79+fPvtt36pQ8Rpmjx24+edsOC3sGgCtOsMt3wIqQ+ERHiDVuB+dTTAf/e7353wa6+++iqFhYVs2rSJiIgI8vPza93B6WvWWqy11TcjiYSzo/vc9XahBHFroDv0u7ke27Zt47LLLuO8885jwIAB1TfqvPXWW1xwwQUkJSVx6aWX8uOPPwLwwQcf0KdPH/r06UNSUhJ79+5l2rRpfPTRR/Tp04e//vWvtc5fVFREhw4dqgM1ISGBdu1cF0qef/55zjnnHC6++GImTJjApEmTABg/fjyvv/569TmO/s1h3759pKam0rdvX3r16sWSJUsA1x8g3bp14/bbb6dv3758//33ZGZm0q9fP84991ymT58OwP79+xk+fDi9e/emZ8+eemqQhIW0pHg+njaYb2cNr/0ghaJN8EwqrLwPOg+EP6yDC24JufCGYFuBvzMNfsj17Tn/oxcMm+X22yZOnMhTTz3F2Wefzbp167j99ttZtWoVF110EWvXrsUYwzPPPMPDDz/MnDlzmD17Nk888QT9+/dn3759REdHM2vWLGbPns2yZctOOP/VV1/NRRddxEcffURqairjxo0jKSmJoqIipk+fTnZ2NqeccgqDBg0iKSmpwVqjo6N58803adu2Lbt37yYlJYWRI0cCkJeXx/PPP8+8efNYuXIl33zzDZ999hnWWkaOHMmHH35IcXExHTt25O233wZgz549bn9fIkEvRFoD3RFcAR4k9u3bxyeffMKYMWOqjx06dAiA/Px8rrnmGoqKiigvL6dz584A9O/fnylTpjB27FhGjx5NQkLDzf4JCQnk5eWxatUqVq1aRWpqKq+99hp79+7lkksuIS4uDoBrrrmGr7/+usFzWWu59957+fDDD4mIiKCgoKD6bwZnnXUWKSkpAKxcuZKVK1dW/4Gwb98+vvnmGwYMGMA999zD1KlTueKKKxgwILivvIu4LYRaA90RXAHuwUrZH44cOUJsbCwbN2484dfuuOMOpkyZwsiRI1mzZk31uNlp06YxfPhwli9fTkpKCu+9916jn9OqVSuGDRvGsGHDOOOMM1i8eDGpqamYelYELVq04MiRI4ArtMvLywHX8zyLi4vJzs4mKiqKxMTE6gdU1NxXt9aS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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "a0 = 1; b0 = 2; n = 10\n", + "\n", + "xi = np.arange(n)\n", + "yi = a0 * xi + b0 + np.random.random(n)\n", + "A = np.hstack([xi[:,None], np.ones(n)[:,None]])\n", + "coef = np.linalg.pinv(A) @ yi\n", + "\n", + "plt.plot(xi, yi, 'o', label='$(x_i, y_i)$')\n", + "plt.plot(xi, coef[0]*xi + coef[1], label='Least Squares')\n", + "plt.legend(loc='best')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## What happens inside pinv?\n", + "We dont know yet -- computing pseudoinverse might be tough. Let us inspect a computationally cheaper way." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Solving the linear least squares via $QR$ decomposition.\n", + "\n", + "- Any matrix can be factored into a product \n", + "$$ A = Q R$$\n", + "where $Q$ is unitary, and $R$ is upper triangular.\n", + "- Finding optimal $x$ is equivalent to solving\n", + "$$\n", + "A^T A x = A^T b\n", + "$$\n", + "If $A$ is of full rank, it is the same as\n", + "$$ Rx = Q^T b. $$\n", + "- Since $R$ is upper triangular, the solving of this linear system costs $\\mathcal{O}(n^2)$. \n", + "- It is more stable than solving the normal equations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$R^T Q^T Q R x = R^T Q^T b$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$R x = Q^T b$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# QR decomposition\n", + "\n", + "- The name implies that a matrix is represented as a product \n", + "$$\n", + " A = Q R, \n", + "$$\n", + "where $Q$ is a column orthonormal matrix and $R$ is upper triangular. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- The matrix sizes: $Q$ is $m \\times n$, $R$ is $n \\times n$ if $m\\geq n$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- QR decomposition is defined for any rectangular matrix." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- QR decomposition can be computed in a $O(mn^2)$ (for $m>n$) (via so called direct methods)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Full QR vs reduced QR\n", + "![](full.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## QR decomposition: applications\n", + "\n", + "This decomposition plays a crucial role in many problems:\n", + "- Computing orthonormal bases in a linear space" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- Solving overdetermined systems of linear equations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- QR-algorithm for the computation of eigenvectors and eigenvalues ([one of the 10 most important algorithms of the 20th century](https://archive.siam.org/pdf/news/637.pdf)) is based on the QR decomposition" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Existence of QR decomposition\n", + "Every rectangular $m \\times n$ matrix has a QR decomposition. \n", + "\n", + "\n", + "There are several ways to prove it and compute it:\n", + "\n", + "- Geometrical: using the Gram-Schmidt orthogonalization\n", + "- Practical: using Householder/Givens transformations " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Gram-Schmidt orthogonalization\n", + "\n", + "- QR decomposition is a mathematical way of writing down the Gram-Schmidt orthogonalization process. \n", + "- Given a sequence of vectors $a_1, \\ldots, a_m$ we want to find orthogonal basis $q_1, \\ldots, q_m$ such that every $a_i$ is a linear combination of such vectors. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Gram-Schmidt:\n", + "- $q_1 := a_1/\\Vert a_1\\Vert$\n", + "- $q_2 := a_2 - (a_2, q_1) q_1, \\quad q_2 := q_2/\\Vert q_2 \\Vert$\n", + "- $q_3 := a_3 - (a_3, q_1) q_1 - (a_3, q_2) q_2, \\quad q_3 := q_3/\\Vert q_3 \\Vert$\n", + "\n", + "And so on.\n", + "\n", + "Note that the transformation from $Q$ to $A$ has triangular structure, since from the $k$-th vector we subtract only the previous ones. It follows from the fact that the product of triangular matrices is a triangular matrix." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## QR decomposition: the practical way\n", + "\n", + "* Gram-Schmidt orthogonalization is not very practical as just described for numerical issues (will see later). One typically does it differently: Householder rotations (implemented in numpy)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## More on Pseudoinverse\n", + "Recall that we introduced pseudoinverse as\n", + "$$\n", + "A^+ = (A^T A)^{-1} A^T\n", + "$$\n", + "- Matrix $A^T A$ can be singular in general case.\n", + "- Therefore, we need to introduce the concept of pseudoinverse matrix $A^{\\dagger}$.\n", + "- The matrix $$A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^T A)^{-1} A^T$$ is called Moore-Penrose pseudoinverse of the matrix $A$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Pseudoinverse and linear systems\n", + "Consider a system of equations $Ax\\approx b$\n", + "- $\\forall x$, we have $\\left\\|Ax-b\\right\\|_{2}\\geq \\left\\|Az-b\\right\\|_{2}$, where \n", + "$z=A^{+}b$\n", + "- If $A x = b$ is satisfiable, the vector $z=A^{+}b$ is a solution, and satisfies $\\|z\\|_{2}\\leq \\|x\\|_{2}$ for all other solutions\n", + "\n", + "As a result, the solution to the linear least squares problem (including least norm solutions) can formally be written as\n", + "$$x = A^{\\dagger} b.$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Simple cases\n", + "\n", + "- If matrix $A$ is squared and non-singular we get standard inverse of $A$:\n", + "$$A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^T A)^{-1} A^T = (A^T A)^{-1} A^T = A^{-1} (A^{T})^{-1} A^T = A^{-1}$$\n", + "- If matrix $A$ has full column rank, then $A^T A$ is non-singular and we get \n", + "$$A^{\\dagger} = \\lim_{\\alpha \\rightarrow 0}(\\alpha I + A^T A)^{-1} A^T = (A^T A)^{-1} A^T. $$\n", + "- Pseudoinverse is uniquely defined in all other cases, too! " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Least squares via SVD \n", + "Lets inspect SVD approach to over- and under- determined problems." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider solving $Ax \\approx b$ for $A$ of arbitrary shape and possibly not of a full rank (the system cen be under- or overdetermined).\n", + "\n", + "Let $A = U \\Sigma V^T$ be SVD decomposition of $A$, then we need to solve" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "U\\Sigma V^T x \\approx b\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since $U$ and $V$ are orthogonal, we can just switch to new variables, $\\bar x = V^T x$ and $\\bar b = U^T b$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\Sigma \\bar x \\approx \\bar b\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Up to now, its not important if the system is under- or overdetermined. Here it becomes important. Lets consider underdetermined case." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{pmatrix}\n", + "\\sigma_1 & 0 & 0\\\\\n", + "0 & \\sigma_2 & 0 \\\\\n", + "0 & 0 & 0 \\\\\n", + "\\end{pmatrix}\n", + "\\begin{pmatrix}\n", + "\\bar x_1 \\\\\n", + "\\bar x_2 \\\\\n", + "\\bar x_3\n", + "\\end{pmatrix} \\approx\n", + "\\begin{pmatrix}\n", + "\\bar b_1 \\\\\n", + "\\bar b_2 \\\\\n", + "\\bar b_3\n", + "\\end{pmatrix},\n", + "$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\bar x_1 = \\bar b_1 / \\sigma_1, \\bar x_2 = \\bar b_2 / \\sigma_2, \\bar x_3 = 0\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Example: Signal recovery " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "with np.load('data.npz') as data:\n", + " A, C = data['A'], data[\"C\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(25, 60)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.imshow(A)\n", + "A.shape" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The image, stored in a matrix $A$ is obtained from a certain original $A_0$ via convolution with a filter $C$ addition of a noise. The filter $C$ 'blurs' the image, simultaneously changing the image size from $16\\times 51$ to $25\\times 60$." + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def mat2vec(A):\n", + " return np.reshape(np.flipud(A), np.prod(A.shape))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "def vec2mat(a, shape):\n", + " return np.flipud(np.reshape(a, shape))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Representing the images as vectors, we can write down the filtering as follows:\n", + "$$\n", + "a_0\\to a = C a_0 + \\epsilon,\n", + "$$\n", + "where $\\epsilon$ is a noise vector (consisting from iid normal variables)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Lets inspect how the filter $C$ acts on the images" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X = np.zeros((16,51))\n", + "X[5:15,15] = 1; X[5:15,30] = 1; X[5:15,40] = 1\n", + "X[5,10:20] = 1; X[5,30:41] = 1; X[15,30:41] = 1\n", + "plt.imshow(X);" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "x = mat2vec(X)\n", + "plt.imshow(vec2mat(C @ x, (25, 60)));" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "a = mat2vec(A)\n", + "a0 = np.linalg.pinv(C) @ a\n", + "A0 = vec2mat(a0, (16, 51))\n", + "plt.imshow(A0);" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "u, s, vh = np.linalg.svd(C, full_matrices=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "((1500, 816), (816,))" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "C.shape, s.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# equivalent to least squares\n", + "n = 816\n", + "s0 = np.zeros(816)\n", + "s0[:n] = s[:n]\n", + "C0 = np.dot(u, np.dot(np.diag(s0), vh))\n", + "A0_guess = vec2mat(np.linalg.pinv(C0) @ a, (16, 51))\n", + "plt.imshow(A0_guess)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(s0)\n", + "plt.yscale('log');" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "n = 10\n", + "s0 = np.zeros(816)\n", + "s0[:n] = s[:n]\n", + "C0 = np.dot(u, np.dot(np.diag(s0), vh))\n", + "A0_guess = vec2mat(np.linalg.pinv(C0) @ a, (16, 51))\n", + "plt.imshow(A0_guess)\n", + "plt.show()" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3.10.8 ('nummethods')", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + }, + "vscode": { + "interpreter": { + "hash": "8d489487a004dbbc79692a52da1077223bea5d5bb7772308e4a4df2310821984" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Task 4/Assignment_4_eng.pdf b/Task 4/Assignment_4_eng.pdf new file mode 100644 index 0000000000000000000000000000000000000000..bf72f790e05c4a12e261eebf3d2bc1cab8d843ad GIT binary patch literal 164779 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
-BPV^~7l1 zW-5jsZ=9@m4V~sTyJ$PHm{KrXU3`r$%nf_oq>+um1Kc|>{lsXH_JbF8bgfQychh+m#W+T0$+&*ve1W-Za3u(lB48#aKeO;F_VxZSjE@!=>$wQ@|4m^hw~xqc4Q z4zJ{f+Ej_;R0_y^_^zd-IE=COutKIzAKLTc?kc7)@9fvCP8y=5`Og@v*cKBlh}{<# znC%qbl1uZt;Y?McUT?}7G2WGQQ5>^n3h!w1nQDujPbtz3ZnNnz6^al#U#Qgg8RyFchJgIyh`Up8IpxosWy{iK>VrmCa0H2cav=icHJDrdR>()?_;#5G2j zz6Eoc{Je9ZGOFu2`+ecT_C_;i_o->l_oDXmTm`_o%f?uQa4lB6LVBy6B9RZ;Ts^bS zB9YPlAc5aXm$;*YKLeqPBKqrXM2*&dS2^M(QRgz_TJvPtuj;k>`aoTreedihWj$AD zt*~9UL#q$YS~&ZB*`965`;oQLqXl)H`!?vpb#vJF#Qjb0^A`N)uHw$VwPR$0danpL zvNdKhy&C4eAo2R`F3@7>jhc6Nh3{5-i23kgR1`r9vd;{82H^=*6}@id6eW}jvK9DQ z4DH1qI!}bcWbR>KPVag$@3W7oX($Z9=o0f2>kIH^T~pVDiB+&f!j38EPIRD~$drv; zcav8(KP>a-z24|#EQMX^r<6M1#=h{yGg4%t+QHV0j$o_UG`_+H&+w)HRk2{@_-D;R z!O7ml)!5XDl*YltOvO}#k(G&qg^7)W7J*sF)y2ZziH4S0#nQ#bltzc0n+x>e)?r~` zk$)>dBcrgen7$QGZ-vdjZW_L=nY|S{EF7Q@3yauW;qg}d?Kj)EHHWw2?+4K`E4vz5 znHsx*PA1}HYUlzwt&Ab)YDnEJL4t_|NLO)kGBu-RmNxZtw|6perU6~v-*&XLw-YsV zF(suDQ0cq}C3GE*8$FhNN!)IFO5poe6Z0fxx%_kG+u<0xSDJ=W6~(B?<5^ zIuaMhzsX3P|2+{l9n@w0lK#_?8p8biJgJ!CckzT0UolyGRg~aXo3iREX#4!@ffw}8zp*7 z>V2_$Ezrq}$;daadhht)Op{@o2KWNaaE%~qSjPW=Mx}o=+I$)AyeZ=1%DI$xqHF7I zo@VTw z{?0e}b>A+2e~J`32*4FPaVPsadDQ^Jg41@nYFpFz5EszG*2lCjn|ZS><_&Kjdzp7wh04bHO2XPGUN1= zed^`2;dl@}pHCvA{?xcu8Bw{+zq8fWU2ds%Hhk7T6uLx(+m%}%+sf3q$Z;`UvCG{? zx%cAI5*xUMwDT14m5l25aC$k%(~^H(1S(#fE6m-hN=zGA$&ZYzM~5A3U!$fwDP#T# z=YLL&|NDcZp=4@?z$|5FV(LMv%|gn`!J&)5tZeCJ`nHO|tWK)UO3F^k3i?vX-rfcD z_J;^?}xW7QBrMw9$_(Y7H)PHb`cIPF%c0VVNn(yHW3~k79L?PPGKQ# zAnAX;3+O!mkUl}LkNKs4xp`F#5qAz{5GnQn8s+zp_NotY&42GXzZ9 z0!qxv&IGBYe7kNP?59S{>J+2ojyudlbPDkBd zopx(Pv#1`9#?1YIkCzKsBr2ywF@Cu5#=?34!M{FX&Mt;dE*_xwF9ItU2P+2`0u_~* Iyg0)D0ql}hQvd(} literal 0 HcmV?d00001 diff --git a/Task 4/Assignment_4_ru.pdf b/Task 4/Assignment_4_ru.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1310f1f952f57a6eb4d024ab633101eb1d6a3007 GIT binary patch literal 228930 zcma&MQ*+}O60uAb?dnKe~wb)Tp2dp{5RoV`gE zM8s$r=~!V%=a)y;VVIZ!3;=s0D;ORg7W_{?UG09up2NJl3ok!i)#`G6a^7!;GI<|=Z^xJCS2cODYEgQ# zP7iM204LfARZ_w{L1#-&P@Yz&{Y#>S(;Y8baF( zYbER=d|)5Tl7b)zhhE*dw_-PM(nf6i`5ylIdfvkw!zMFY-Q!F2<_f+)F`8B5+JzOEVjZ_$>vQ-wTnmGSP&e{hRl8cKk;CJni zQd`_JzoTo8+JGpZje|JhBM-K=_t`ygVMSauage_RvL%cY8ZPTKeVq$PvzhPcAh4hp zG(d4D$klD*KCMRFka|xAfjFPhRK&UE!j6AU__nfs6Z_dJ=AE%-t~*GPa27Dqi@QVt zCvr$qz)kDK99yHZNhXaeUZ(&dl!?*;gN*bIh_lOc-=;j0ekg*)=D;zO3OdFlvwm5O zS(ntWcBif0XQnh{c(ez3Ve0@JNX>7NCZrx^uL>HKdWJKh3kVweMw4ZbD$W33$8TuO zgH21U7$cQ+EkWoaJx~Wl~`tm#bJ@;>nmi25or=96WtIZvOS}@ZMq^;T77F0gy^_SfZW-Z^p!`=l zACqHFsi+%71A*VGr(*$3g2IbxMe(WV6qY&siaCvRN@Z|>NBst<2dg~k9h}D_uEB){ z5S5OvpGd?7exD0ts2NGNSsa_KX+F@R^e-Z-Ty}vgdT}=YG&py&O&S5Uu;lj%>OeU< zyB_e^GrSpL&IvPvdmjBJEAHO5;UCcS_Uf2e;p zO{IHz#nR`?S`gNd|43=SqIj6rj*Yo5$(!>#ak8A{WQx|yK;h2huchRu3UrXR^=Y-} zdrfQCt-6RF(x3sFXVoo4~c7xWS#Z2p5daNAZ3Q z{e|_Ug#?_kg!w0%_Yc_DraB#Q7~styx~#%E`;RWQC|r|d^NI}tHjELvy1^NV_DKKP zcJzD@+gf=7ubfz{fzryl1&spqif)b|BGw%NHk{>f5V}Q7TKP%1cPR;HA4}6&+}?v& zj!rHR7$Xyiq-J>j%7ilaSi&3o99ia-4|juil{rlGP2=V)WPbuj*}mxk+22 zqLwk&aZlZ7on1tw9&U{MP3@>U#*YeCyTg(6>)R!o=Wrag?_LM^R%_ytVdlbEm{F>N z7ucAJh08NUCUrZX)S6t;D&Vo#V^)_#;0`q)>0$D1qK4jvrzpBLylPurBX1Vq_D#Lm z!T8$|ZEl&c|A=0wnzaRWu4-5Xnd%IN%ZcjrJ?U!Sk%ab?M8Pu}|8a}uwz1#7;@tqK zhuuUmD~ga$uBE8Z-2V-eU1?n;7ePPYeqO$^w}G}udmqae-KbGLr-N#gtxgA7w4B1; z_Cov%sz&!HyaCW@w()Ex(#7uH zEjP@?c6oERrrqgGq)#e~+52eoSv;w=vzRi}Z?F8I>2*@7s!ws7GrBAc=Puk(-JS?F zQxN#dyEIQZ<&l{n@{EX^LfYq5edvIh{!L+LUO6DI?sY=NH~JpXbYJmFg}W{=mVX7y zWj>|M3#UB-q6h@V1>tZ@|iRlcW9V7REIX7+yKrGoP9UK z2a*dtSu{p6=U?Mq9Qe$(=eZXtgp@bZAEzX5p#mWrx3xdb9A*OYzprI;6BrlvD=PDu zYugwC++Ga40{MFVUr)31`F%RQa!18Iy1txd)n}@^9-35>I>RiC<{o*bGPQ%Z$&R=Q zvwqfK7D+uB6jz>7S?-c>kvd%}`|J!`z>Y^Ty@~fVw?I!qR(+~Y zj_t=EG}?HEA~qn`3^3;fX=6NUw4PRA)_YMlJfg-sZt?po^wq=+#%L$spk@a3tKdfrmL%q3RG~x&A#SZb8UU6rLTH6rB4o z8kmA}aL3(<8A?aei^C9Vg>kvefO1}~W7zRw!gUY|yeV)Kr=oEnZNI?5y_tmBSIF8o z^z`E+)F96~LjEK**EwcQ@Q>*aIg-dwGSPOKktzAn=Vg~oH@2K-IUx2(9CfmX&Jm`u z1EHFz_nP)EfH~XB?5t@8=6u(BNtdpsU`4D7HM^d4HDFH$#`r$k?OE+8U&T9)Rb=uz z6L8S2qr0<`)hyXYE$(W8dUHYzuJp7ok2lD1Yvsdae}T7nM?)?ET8GQX!~*k28?sN6 zwI%kpzO(G{4H9aIS`x<8&g6eV&wot+6PQ@o{~K~*=3xInC8uj_>G%}UJHEby$6=es zrKjS~YJNDz3<_v=S48YRK*Xp>3J-dSvG#t!rubU9>hlu-T@) zUbo*P*8+w>#H4?{pH^6MJ;6=d7-Y4Bf1fc20pAaG@d8^v3h`iONEtUFi+i8QS+h`1 zF_}qXDL3%kcxP$#IMUpo;ee9R_9aIS;S;PUy(zYP49;4cN6A$D5Zt3({ocMarGkdj z=$|jph`3wY&W)%a_Y_~w8l{RAI!IZ)O2YkL4E%<~Gh#O=UvE62?^`64S_wn@YT^D& z1Vg)2;R=k4-z-NQrQr?Q<-#G~JTChdoS8pUOCC(N8M!QjTiH)j4<2hbia^ih=o9)Y zSzthnYy$>QKatH3Lf5q4Dj1L`axrNbn@jQu@-fQi`QRU?XH8}PE_S9LaB23UP&frp z1ipq3;3fHFKwjD-Ox$j+A*y6#F zw(|+w*uGiFP}w>PH59}ZYDT29DTJS$Jf9|2a%~)lSvpIJP(sFasJo^<>wDY@@$IPv zmIaD@13g*uq`M6xk2lqss80(huv#^%diBW67Q+Zpt}Y5JMCBHX;$dE_hZ8Whb1OCI zM}DUkX@GvWtZ%m>&5KJGv5_EE=&MsK&8U{5=uc7dR!&Ldq~K#83t>59dP1U7`7o8zF8HUn!u>X0xzC(Z8}kOb}#LRSS0#j1g zT=A|02*U!d1K5%Sr*+5@SyEL|SUH{r#NxCtL3tl=-i>Yr@DBB$3&0ll(FxOW4)hIG z@y{-Jw`$^BsVF`m$SlZ{`Nvf-tM*f?gt76LNFM#TR|p# zHWe;6Sc8XhjY(J*jtHN=ESxSUxO|Tc5rET7i<^!VTCLFG{eyF>S3E3m)zR9C{Ln)! z2txuW_Q{-WvLLjNNH)NWsIYXGcWUyD)Jb$mZ0Mir{ky-e=ZqtxT0}SGHLOy%qJz$< zd~->qlqN>cFmGaGIm}wCDA|f|yXYA5bdkNN6rMt(sMZakI0y_?ozy3 zga{kNorxXen=0U4Z=lL)3VlrtKOs0)`a7}7 z<;ko&Vry)^e9?q?c2%v)BiefQIR+fPsQBvbW9{Szqs$!QaU4PZTL9^7mc@}6W9J=Ow zFY)V2BlaDWpWmwzzLE5_Nd%Xrnu?g08>Lz35fSSLh;_2Jo+&D^GmfaiI6V|3qp+yD zY(_DO=^J)nG$SMnEgk4(yIJk^$WyyvPFh54)+uPp8v^`NuXr7^IC0k{)*xJ^ZJaMKP0&HCHbTIo_K&TqF-sW^DYb%{=_?$&X7e9#Oti z78ul_w3+W`U@bdSF?tH%)W`)mDU@h;=M$9^3}qJqAH1E{Hj*s_YO0Xn%YQG&!UHITWTI=$yV2c_}$*D9L3x{H5I~T_VU~ayw|8DU`(0m5O*id&Ht3u#i~zhSUI$&qFK= z)qt+OI52HJi^Sa+pgJA0uj0 zv_4b86z#e$r>~sao^!pR;B%bUke`9lY!<)^l3@w*sUG~zTdZ)7b*x7JK>FE2XjAZz{-l1ubH&x(0IK<#5g-q`+1t^0RYn*&-if=nTmdtLd^K zo?1#{>INAjo;26O4GQ9m%$mIJZU`-+o_BhjO0BkPc3x%X_@-GU)kxk;@IZ- zPm+LMC*XK5Hv2GTQ-tSu5}_RB#+FJkz5q``%I289hYm*wejVfO~-D{shP0fd;6E|whg(hLMV|bnl9UY zE2IfIGf3&7>^W8=7uew=q=WNcwoAfG?hXa@1piB$2>KhdG}9%%fzQ_D5_V$9QmF3w z3}c3b4!Ii|NBIvuvsLP`s;pOIGHHj6&Pv!>sdZ2)JxRB0lMF0N;&=yidE;%9#jOTD z&@3Lg)<`?*S`Ajk_pbqu<6{-y<*!@$&&~_~&;(NQe?>G_&i@9{*qK@WPZ4cKOWK~K z4Y~JH9WG&t;@^JK2+>B*s8J%2CTJl2#(23d-jS|k8f~nJWgyu5GaX-)Y$N9qb5iaR z!v%VFyb*67l~P@uy3_N{g#MhIUf-HiX$j_Wg_^lKb+I5ELk%ubOUKGa`pQ@fA20vs zXQWK=+xrJ^meUzTDq2POidZq`;=Fu;32UdW0yOkf;HDZ(j>GcBS<^DhKyJQ3Fb}x6 zJWGCaa(;7RKKSo1Wv$71G;_mj%Hu#+U>Q%H6XE`6vjwf_UDE0Mi1aR>5pHpE;|)|D_7B0p&<(2#=aH3b(t=E z@6xGwSufuww(0Jqk61kaq%YcQkVX-4#f*f7vtG>P{EZAyq)d5y5?PdBMAB%-0^Se*$$8;vR9WVhjqZB8OAHGKO)ZL} zQVmDIFqKayl(f}Eix_n#Wjtpc0~*>3+IUe==Ht@kNc)@hQRWfd^bb(gcw@m-rMN}- z@)ikt#`?`CnCG~9w}3@hqjb(}N5xCx`udHKH$L>&=t;UO5mNiq-u%%>aDsB#g8){cWNy{Z>Fwg;B0Vk2FV9-hmL!+0CR;s`tt5ernrp_3+6Cz4 zGKm6ye2t}MThKN5u_VMLgKL@rbMUswGKA;`?rKtyTM<}&QPfSwQ2?fT7OuyiBLi*0 zB;cY2nsF~%y?Of~dW@XcBhbM=3Gb-gc@4br@QW~um1eA!UwPrr@x0-he_$uA12d7S zU+bWWUH`S5=%cTR6u4D{_ZiX2_&m_EX<6<`w>nSd7?V1|`zy+J2Gpgj9@Q0#Jzz)F zdfz7o94lr<kf*cH7U!!6XG8Aq?P<_{H)1VTTGK#*Th1CI=MWhK-7p&*J{NyF0;v z79aQa(Lj$_P~#HjiBas_i2?)@CrNc9XBjmm_6u{&=u0~l1HMgL2hGKUhwmWRY!s5l zu%Ra@Z_hw*Y+z~GGPW^h_Pg(yStnOgNYWRZq7r2ymOX>T;H)BGNr?m0ND2Z(AJ~8y zEjlqx)kGSFaXw2G1Ot6h6Iusk)i7^b=h>3{LR)X}CH|H`3kWkCB}}@$3e*oTH$xhw z4;bP#a}y!T#sC@doK=bYkpu~0#ONM%OHZL=22sS4Stx^iWYN|Q1y#*VZ;leivVIDt zx_bgxDU(sq5kyu0^~)IYhRCaPB%rs)RG9=~Ox~g8;ijXC2Ved143Vm2d^(6@t{CLHQV~%jFHAF)#-C;f)UuffI8fHJJNXQDB8|P(0l2{qO|#wfE50 z9G~M5!4I_NZP%7fC|~b7%ctVhg+OG4Fli>03ZtQp&PjS%I*{UhQcvk{8|f;bw;0!1 zc5s?!Whu2ErEu!iq*N0W$o=ip2`v7Vj_sXSZ2-!#i%ee&LP^&_+O;g|`zq0uzi5E5iTv8oB zYdWxTbU+ePK;Q$e@wAu@o~|ET8x!^9rmBb&Y0X#@QDG~mUCHsMPS2ryAIqsRR?qeG z&$G($|IX~xe|g@;Y3kVYGEWB;IV7y@y72X3Od*Tl!eb~+cUeQ$2G^3gNBG=R%XSVN zudb2VBNhf&;Fnm(Ive{trJ*;Ha48WR?CQRsV{pLvdWd8n0~cv5vS>9Ijz=V#+E0}; zSZI0d+W3}=LVcLep4oqZxiN*~Hq8Wkb~=clT)ZZTQ^4IMSrAJ6|BM5eqw-dQtyp5c zttlq|e3AI;%xNv)V5nH$(&DF>q)T!!}QYFS{05Ou4^ZS;*-gu1q3-!f9jbTmzLn^$@O-*%3G#2g;qUQI9$(kr_2ki+eUvibty8bTvFPh( z)2^{y)zjT!9%PCZ9PODt&fj{^po!p4_P~ zANE-Vi3-%XL9E@Sv?_%>lLB;l;f!-6;x%?#kl_ygeCfOA z$_Gq_)Olt3u@zNTRaF!@mZb+Ts&9>HhrjKaO8S%=?h!hASPjUoCsB)V@M@oo4QkOk z67k9=EFF>a-g)0~s14CU)sdb8eDbj)Q+KVe7CiqLg1eJ9c}9 z!WPwkIU$Vv|9FVTW%~FJ0n})>&!igFg26eiZF!=-}b1z{#MK ztA9t)2+q8$i#|N$(#d0+Gx}z$5qYv-W#W1|#HfEdi`TSTkb`?=E4#_kRfe{zS1mo7 ztbDp*#}!4RCVQUbwzI7j`rr$KITFwl$RR>uGJKMDBXt6kS*+4xNcq_Ep} zH0P>6ksiE1FAWu4s_NHLXo~bH!su`~XhPWn)IYxDjv5kEdOR;4UmhoT*+UQ#zZ}sr4%GE-iS1K8m5kx#!b?D z&`=Z`K_K%n-q*RXI{>OOx8xn&Y+{W%LSO<__XT2@>Jvs#yb#q1w1}j5>z{##Jslij z#+^sBA*CqofYTi61;U~&rbz`H07Xg|#XvUvO+pwk&y!e&yb#Tx#>7Ha#Xc@N(T`yc z{`A~D?O18@sj`iVmZ^M^tY&DRba_E_wHou$Fd{c?jN?7!crbTNGQ7{*;e!f#InGl4 z^_h|f&%LlREpxPa`;Xw3i}p&PKKssQqCZMr_CFNI;;aOmB$*t~LE_;uR=g*Db50|!AKNO1c;%|TfK(1fOAWmA za4Y?>+#$Zr4;r@HksBRTT|0T(m48YvNr6{-`Ok-NUabCXsy)!MHIA({LOpPf_jFn3 z4W)jqwmQDh)m2wh;N21AsJt?knZpw3xFf%@9UsU3z^~W08vpfD{m1|I|GyVt1TeC) zGyi8jzyx4p*{~Q7AYz)l*r!TMAW=Iy?8x+=>Hh`C8il_*Eb=z6bt6WWs zhG}|>*KH9Bt5@tFQ7PM7V?y36P!wwm{h1K&l*Y2VrA0 zknZPt7y7*r@w$j`n6}kuVqGZ_WK46u`iI zw%qOW_~S33g1rZQez`V;4B1-wr~W#+?=uDn>h2IyJ@|99k#+mqxFL}UB&eszYe+x= zIf4sx_rLJ))6c)U1%819^3SxfzI}G~>jJg5nF@RrwkB*5@aVHAK!OE`vH`;U^~tdw_a%d_aKc_!J5CfD{B2fB-bpkaxfK09&Ldd7@t@wZM%* z;G(|A9@}MoPVX;d;LChyL(nhwG_o(XP9&g9ekt}-v?K6cKj7c|=bx$LU-=XM;xGNw zpFS+gPHxWcK}~;@AAXK;tc#=Xa7Sug_oHh}i+=lX;FmrX;_=&!m4J1Do!nmxRly*; zF+m8k(O zYqhjK!1(po*Q*pbCZ^q^^ZXlFC=dV)Hzj{jveg?^iG3Vz(9Qb8ogOmi`aj#4>|A`&}R4}=J6X0(ESm7`xW!+`RW^j z{=xWg=h^cw^an>p2ES_u?6KV#l)x{~j6ffKBa(pZIXb(${j_BL!vB=>8@PiVxG8=u z-q}9>aQ$vdAw^(-#jx{(LPm#kcEeeJs!==dCR-a{EqI^67sIj9?RtuIeYy)>skCNY zCB#QCXD%1w7mcujuPUD-KJoj!X5suL*3P?V*89-qm0QeRw;0LBDaZ6s?-X<=kD-4N>Syc*-`z{RDR}Bv#;NoNk?!Llv(5dtSxIh43_crz_n@#NvX?$toHXzesQ_MD zP@!Fva?co;PaLXG(_iw9d0*q_2N$Lx{3Z(=z45ZW3h97*#CQ!qowtT0zi2*0RZ#^B zt;K@@Pj=&IUJ5Tb|3k&35jGvO%iDwRk~qSbkKlghW?x38bYO)LE8HhFQAYB2a;(y; z6Lj-=!15ZG{+`GTRs^BJ?f3{3kfgRECd2({70nZL$47CJ%5(VJ!mtnhYFWRNtt0IX^+7 zp*{zIV{dZFLU&~cUH+}c)GjIH2AK=6Ry?14tWVUm*2Ml{AJLJrI$h-%apdRCkM~1g zs%V!C!qeqfXQixpH^?SRr{i?x=dgY334~Q5(qgSZXW(&V<&9YLn%&mIYSPvX9ovCe zv(0v?5t|*sU3^2H(NEmAgJSN5h6yH_TL7`7MO_4|GgHxla~4-L`PQs|KCgaW~YclNcr=o~9~BX2vO&pm~fVb|gseUf>(t*YYdocFPm z@@J*Zz^1j@!&l5|?tC9_!^eKy`uaa&@@UJ>?`i0E4P|BFBfEydr3|XG!AH<0Fs!L& zcm7$ZB8Ztq&l@|6v$&`}&efer6nR1uTqL7wf5mz?eW^G@6{YRjyjo*yedy&cEOpef z#~{B-X(Ev{I38vm~`U{)0MV;IMb%M-Q6{u_d z-p!jG1)ksv9VgNA732An*~9RKq1Cp3AMa@a=fyTXya!+&)%4ykG(62jrE%#-GLrvz zu~to#IBU!VSuu2zm!m@m)LSl z$Wl=~7<~@&@!#|`oC9m~VLd0+Y%~iC2CX_WY7E_8i47XRpYwWcGd0KbPQQ`!OYwHU zM!2DfI5`3{*eD-98%K9@AQB4Yf>0#8TY{ zBe~vI(ym%B3U9=>oaG6VUgzjovWHO2mHQG^(iZc((tuB&+QrRaIR9*V?D9aTXz=>m z-Cxv-+daoHx1PTnO8y}Eslk6A7rPM)dnb1xy4L$vW4?i4pl`KmzOWz*H4D2!uR6ZR zjl>IA@^xou3~f~Ql#Lf(c{$pdKD}K%-23GJv5@Rj zhSbYnEAc?`aR{H!~~7iJ@9D?dl)M2iT1 z#OVunfNNt~^YN9TkY-pVnx1qcKVaI9){&)PKAvnTS3ey?u3SpOG-b6rPe{ESNO?84 z__sEuC5neR$Ze9(vW&?EZmqfFR%t^ThUVd@mCBng`$}?+o%b3`Wt^&T26WD9EP};0 zEP5m1|CT|C{#5s{Pp1x2?L$FtzofX4SX+!s%a*C>py#?-gyDMiXNtH!!me20n4bPd z0Q7DfDqlP~;kV)`raK~YDqyCnc~fLdbW7 zB21kZl101w<~zrEEe43~5FKGcw`DJBcTes!DG^?b&nJg$?HAxqD?TFRM`v76lvBz; zNMm{RnAxpVg0Gf88$1EPSpGa-GR$2U`opfhYX$l@9`o3p>$=Q2(1aTGjuH+ZA+dgC zpgJjbcHBR>gS;}^{uRAQcwHaY@t7FhdS&Egp>E|MaLdu+s$V_j%hP;QWtJE z|29|5+M!v6!`lR5a;W4CeQev@v-4rNRmh8#ddc`k+4QO9JRUooJFAhNR!Dk0uDwTJ zSU&d6o8A%Jx7cWx$3TP-t*?*S+R0QA**kW z{WsDZ>FBH9J~q=v&&lXv2{_xYK<89#Glke#@ee=m2KHAeOIO_hjrmuM!gA-ZFIgZy zFmAO5{d-_BpGteiAe>X+tU9qwgd`0UZ_!6)=;^A{jb&PnjHew{bg<|^@su=cAjLGw zrZ9NsKk*S)VseAQ^LZX`XBO3miUf;JOPAUa2S;mdl?we> zw4FO{N~S2xlCg#Zx5CqH%%FH%gPgP<=pDE@t~Kn=H1S-37r$d$v-@6j29jccDD2W3 z{KeI9c65D(9x!q*MLw2;c$7~ViHxG${{6PZrJ&|knzuMty&8y9xHpV-CONfh@z?ad zX`$6s*0eaVcXJ3@Z#+4H*4*hP5sAervIQaHO|XqCNWObAk>^tuvq?&%IXj~lwQqr(%7h- zhQWegLDlt%i29coom#aHLpsl)iBLgCSq+AV1VX82vI~7@v=)tOOk;eku znt!d-CE+h+4-{_{;%oymmbBgCF_77{Z#SZxY&nv4n*@_K8&?RW#KQ9_&C5P=%J)I5 z>|I%o&oH#{N^<1Moae6PwkWUqy3|h@=Bm4>0*cmHyn2`=@e$FsK5R>ztG<1NT;hij zMoY+!`x~iTHVxp4OcE5^aCdq}CkA;pU(p5?vB^7F`^xszO*N@8z5$4%3 zU7t9T`rm$@u={D*J%z;CE55ts7^)n}%hqBN5A=oDbS22|^N0gACE%yHCpjr#bYGpcz8v0by<3}of;PyOeJ5f-VfsThnc%JjKj?*!GeRBNy%H_z zVQAczM)H$)%DZUcq%c-?HbBVnN}11xO04onmj||b%oUYh23TdCXw#+Qgxi=r4{O6_ zfTgf#y6Am4MZd{r@F@hOydw6nbSJO)xls>Et`W)E1=A{>c{#G|u zSWk&t9oK>CVZFwDUQB+0i3)Z%`NFY(j_nDNQ~Gdd%VluM%AwIrl?53~mFVZE;YOe! ztt%g>NIW9=VX;W2=*E;Ov!(fVtI!C`OU15-B8X6XLc?P%(`!K>P=RZ1QO#V+p1(59 ziB-g`h2xL$ok>ij#Pq%cXuaT@oMgJfp)PjvbDg8KE~1vmP#mfmXz58C){tasq$h!a zab>z`T673 z>bucjV+3*K5vJ!0Cgg_TU8|-$BA-%KO=X;^)FVlvhN>Now0@Jlfmx}a7q%{IS47s$99{Zv-{8x@O=DmvHl$zU=6i!4j4gDhj}JjXQD@1*6PbkVhxw4 zK=R37?Y$zaiv*}mMKa`ll0Wc}jUQ-XrOz1$_L&qcXssDWV$~@Va3|09`!kNs80@kB zknYimtnDWb6gT|wT$|x)S&W}Rblwqlr(+b;Z5lly9p(eUwl<1TU#Z>dc;AY%2N~+W zT+5gy=%%4E%a1TtQFnbUJS0$TwGTkhGd=SXKSHL-@I%UuyL6R`y5(qs>kXLsKtg7U zxdYU}8A&gcNh5-%wkUltvA1W4FD;J=NV0x&)ODfQR$8e$7DkD zPK^yNM-n-?s5UA0aM7IUT6mA(Nz92X)k>}f3Td;5@s;UYrd#*pV~^eU#^l9}p9V9g zX49cgtMJ|DZqGP!S=fEH3kR6#d1bv<-&)qt{#$}Wh31!{<)67NY^vh-cZH-F=fB-U zK6f@E;FVd7yIW{i`*xNt&_W`xJ8W_HgyO2QyRnBZ@ytTBzYM~G|0VT1^eS#xcTMpGUVg(Oy<@kJb}inH6i%H$Q1*GxcNmxgd@G$Dm2 z<@&Bf6z-$`*Zw4*N+aVKg*jq#Roch3rEKF@o`I2b-yAJnt}#$ytE0DHIu}x)O^4FP zm&TJIkk&PL}x+e3T_7`@UmW5t!OFz~3iXv^8{ z0I$7R<-#r%2!vfM7gX`8h=TK#}@;_6JuDyVA_sfgabIi ze?VQ*!?<>jsqSc6B(Fm#v7Q8|S|=a8UVA5=QWcKO4xN{8lLV{jE$effNC@XWbYw*t za@4G(-T-1*DmJZGCPyGetRSRJ8}D~s2s-sLhjgd34&d<^T!E(Nt^CIJOj02KF4dQ- z(3teZ8=+;ad*8>v!QXE^s;V`+io8?=$*uYoNXylN3Eh{2SJdP>dPhX(7N!T{%!P52 zwYSvjVc*Be{k`*z-P_606v29Ie{wl!4H)JyjSC0EpVy;Vcwtt_E-C*snPG_gf>QlD ztKiOhxAL+HZo0@!J*0A$35)7tJ%cgxtNkQg%$*GL!b&z!f$N}HQR%W*s>1mFZVVV3 zUyl^BCJ+3(S+vzQO^94yJGGIRm}(yjSV;p1`o;I*akQogFsh>90Ib9Dqwic z>YfzI*((h*BomYV4&7WJN9{S%LjEIynMfph=2ibWCE3nwCtGOBKF;$9nPc=h)KpwA zaeVe85#>2snl?*TXU>q|9t^rASjkwr`yOae9uY+*h28_g@{9_zuDBj@8*TSGz5cnt zuji9#KE|&(|2j@;n|lL{jwLgE^}e^!PIsF-BYH|Kv4^*Jl5^^x53q>sQuti;KUaFE zIh}SAx9(0sUhlET=6dqrc=V49SPFNVwVvJT3Zz5EGyYW$AQ+h_UYkGIOe9!ayhEky zc1SPmLTWZT{P8Gme4N>@%n9*&vv72|Z~+kQsyVo9X1vJ2nl+l>ERmdi9FvhY&vG`0 z0%BR=3IQyFe<{s$?sYi%7tUo(on1NOX;ZH~#v+Ck?CRsbE!x3XK!s#A^0s4|2%@>B z(zvp%;b12rygpYSpffn!@AC@eE_ujcNL7o2?K|2)=J1oBMEaHR8FNSulwv{PiJS@A zlYUdHIGGy>$>?D!fw|nVJA#eidiS|fE+CY-laT7HU`<=Wqcj$FyHNtp3K&j%J$)7b z+Oe|#<65_;7^y99^7na);!8p;wP7w*L;jK(q%%@?{ZLLNL_5$P94-m{eh*)XACI@& z{5o~0KIOlGL8E;nFL1I=X+!a;E1- zonkT(LE{dCw*JQBn_KMX5TnA?jK17Ed4F^?YbkHgXgyK|72kuej+%YTCBpybjqpT{ z%G!etzGz`n;_~9JE5;J}-#c%U5cY9bxm-d1zMeM2F|gfcs>uZ{zg;R#7a0@)4=FxomU!Qv8vK!?WA&_kN_Y60eCd$T%Yw>@24+loym8yLdXhe15 z#A(SLtA?bOguad&d$=tsI_pIXvr7K+8+dQFQ4y+f+?IcvW5261@3jdS&!(iXI&Uws|o2P0&r6BW5U zOGJCYwk44#!%wvaPu*P8YarnIkea&={}u^ixg#_F0z617vS+t_TpIPNBI8$p^9mDY zDL5`YmARy;8+b2ur`KQS?`fOza{b)Ht;un$e#r1X1itfTp&V za^(ok0u~)?uZ4gRE|)gu^o4DdeEM{s>?o}+%-3-)I%)%bW4bm4Fon;6hL&Rg#3R!k zn3G2>78bkfIhYSRVkKhii%O!BpX!Ro&bEfEp?Z)E4B}F?V+j!>)?ec@f?Z9a)^K+f z0PntN9X;=@4M($J$@j{5z8n{D4!rw%$5vZA%A1}z<85S@)Ieao10)l2uTJNGbe%wd zM{5$ZKDJqoTRp{#pNg>LYA~-SZ)?lSgm_EORC1)g=07ge5i>sL7e$3Pe2gZCZ_mJU z60ajP=BVK~x{~I4(1$+Xz8lKdq|hhIpXm|v=$B9wO^b%n5RZMHJ2s$%O+|b_%v=gT zTC&>yp872*sd&P#E&9;u8tUrT_Pz+x|H<}hh4+tkT3-xo%6FN%3fVF#HMLVaTtQ%= zkyLPN5yX5)HVq32XdvuJn9I#2KC-PQqIHpZ3=U^J3vu7Cf}hahfgt+zk|p;x$t%&X z(!D?5#-bMe9PnOg?j^Wa2p(wUJfW1ijfH){Z!N9FWy`?B_Abjj~>=i^ilFCcu1I^D;Ac~3=1iI@iiz%`F7LUsp8k{9WDNB& zLQ$+jYG^1CQEo|XA`cHV&eizd-QGFqiMe6gHa30-<-#xItiU|Ve`AXOYkd13rkIWO z{}IAW01nRo*Bk$TO)(<_1Ka-{>HhC4h1fQ5m6S_twwRETlqdjz7-W%I*ge>#{0ImX zj*+=v!oAH!LW+0?ZxJMjWib~-3I@uj{gu!A*7?W3_Ex(I{ZY?-cg|V&7W*u}+Ujp) zHnB`06BI`j{4~NJAPFkUi9kUhq=;lZu!H{M^0kmco5J6Q!v$+$JX}Ml_WnL161)PW zl0r~HO`)qR&J0OA0AdghLbT&Y z9a@Z#8Wn~T2#kxHyGi&8cLNzAjYy^j$Q*MLrU1b;go{IP2Dnchf`(J5yV74$GkoyiWwo?=k8VTx;`QL+l;F^Fw1V|t= z$Y0%?`m5bggFF5tLNhZcZW6E?m|$%X8iQ7afT$QE?n&?wn1KEne@G!4JY@HGByy-} zbR#c}yRkE*fS7h{Ag8u{{ZGy;&i(`naX0ad>s!3QzNu}zCYEiTKZfRzp~blOeskpD z&H-6Fxn0zE^;0c@#5wynzk=ut?Hwbxtkb)IKrM%iZ=8ypWqn5X|EY`96i@?jhR3ER z#^3`sK?~^2)cSYfS#%TU`E&MmPrC4Ub`qgT`VZ{jE6Aroyk0|3Z=f85Kok({3-WG$ z-M-idL4$!$7?@G}QLUhZ55JYaXW?4jPr;Q-q$B`3KsPoyxIkQ2M3^c|9Cxq-0@VQuIf2|QmG-^ z1c3Z7K6!6<1i#JA%KIex-_nILfPQslupGs8DFW^Z%5VbO1+1?GBe?6Gazwr$(CZF`=vwa0sG z+qP|+dC#dzDpkpc{D%J2z3z22nv=vfM+FZSCDF|g(C@Ay-dX;JT5#6j&f0gK1_F3{ zN(krHL;QlRA-(&b)qMAiVz?=A>slC*Os#LJY=LX-UT_Q85D_(``1;+tj857=X92z* z)GUqdK5?8oPLB#0L-+E|6$11R9N{}r7rm#6;n_q}0aXbh*^od^j)83l+j>8E2M}!` zx2DzzZto%6K!iNFK^-!{Th~|6^@5yx-#wQ2_CShXt>=hClb}GT5p9t9E)Yl|ic?s{jI zui`=mxBGvIB0EKX5q}QRAj3KYr|){?iKf6ntE)h?{naB?xEt-@V2$v|f0vF8ac0;C zgq|f6u^0Kse>4Aa`d#(t%c&erxQ&RDG}=j-VDq{8xH}Nf zeCI^FM^^w}cgq(Iu>^rc;Ipb-I36JAD!EMJ!+R4a0MztYoMzw>V9Y#^L3L6$xv60m zQO7IZntN+1i?QWC**Mx1#th7BH@cqH^D2$$T0FfMiFyS6yy1QZtJzL~Z( zcE%kJdG!87i)z>BOGm?Y>iY0!-)Wc!E$;9rdn{@o4!=zKL<2IA1JtPqv}y>hvG^@w zZ}*y+qgo?@0$e%^$c1JEk|o{8Cf4Ct@+YCn`YUcxqIf)(Zlr_8-RaY7l{d#AA*tJD zzwD?e683Lq-ew z12kufdfgHME}GoP5w?&%Q{xtq!%riWz%D_fIz!#Vdr$Vc6=NxMIOIb86xX)p(zzoN z0I4`4veIVcr|3sp!M9>Rz6jV3NuYm7dwz+KR7s9b;05GzTApd=HriJvy({(l;K;CR zEpk%{j7t+e|1D-CZ$nq4swlDK>8;veSCWu?}|4?GUT(GhqJ_KD9c}=G@-(L z9@IZ#*p*)AI%+HP^U0%-m&`k`l(n;Ui(v}<&L@hkxR#bSWqT7!WKbc?^dRoNPX@Dc*0lG)CO&b2-`0peYSZ+((}+1g(RD z@)7*zTJ3Nu5|A^SS?sEa)#Pzmw@VkihJe0(IeUC)beaZBaiI28fZZz*`uUgI?H$=$qM2*D=@1K}jv&jK0!Z&s>>`dAKBCi$1Ao5 zM@jzTr4QncRKw19yj=p!c-Lm45jZ}z(-v2q&>RXi%s-Pi0SRHf*|Hkt!@lN@#yV%F ztpCL}Y3FSyekPGKEFi9CQ^4jh3SQJ{?(_Uhtl=b*dhI*rcCb8QPpeQV1&g`yrYx&Q zgbw{RME$i@+pMD}iSjydvtApAD z7mx{K$3Fm0a1_aI`TLhYIi+3yn&Xc*geiD2yMA)V?r?!M#YyNkX6K)b_MM9P22GzDN`z#f5h_WwW19Iz zN_qJ14(}BYXX!vDX`M>LmPV`C2oK_i%S8scp$bQOmgT{4g%Ch(JHLSeA;C_$%sh5k z@X@F0dx=YxQ`ZS9p+a5x6~=-O+XcdpmrWU+gi=udpygG8=qC#*n&r*mVeg%g7enOW z92|re*CBTg8h^>pRpP?c5x0iD+0d7g`o2wRME`iKe#PV9M!B>PS5Ea*^R|)vR^AoC z!`oxNs_DXmptiLnRG~M|EpIWCXEY}-+LsXI$Of9};55>ji%1_x9ztEe;#^XksIBB} z+;vc-%T>`$?ObKGzNr{PSqzHRrHDel8y0(q>W1o~#4MK0wr$DMlAKcTvR^3AN;~}a zIs4n?1geE@>EUZTy|R3I<*7r>aHfhJ?P%~azpDB^^N9mA!iRbV-&_%NqG*zK1g6f2;*6j4omKT+k-Ia*YHPBcl#;^dGvuO!ZU@$fNCAh)iYf5|3cDJ=+N_%o zH)`?bg@4a&%)E3Zr;HvbCHSVk^@Q^C;HbT>N@t;VcXw+qF6c1R>Eghjpd8jg{BYJl z=fTuxIq6pMUGQV(@X+%6I`ZZ|<7S~NL4Vi&9;J4lP7-GOd)Ie6er*;(a96lZD_DGt z&tqC^U5zeki&<#_EiFSfmha;nt6(|ZcZP0hjnGK|_hmx}DIkYBZp9Q1bXA-D4Q0Lz z?%Gb^ojckB<5kP@gUXIDNbAGY{!s*dJdM9ZY7yOe3ibmXb>K|8#5Ctn_K8j)dLr`h zN+5OlFQaiYPJOpOzR*3bi9!#oLVDDM&^2vGx^~$Vc3luI4nC z&T%*(_ETdFRyruuYQ>h$gjq~&K4YUNh+-nyEE`+eBBg$C9I}xZI+V1VvXHlC@$snPznz~lHI?E{{ zZ(eTS`+dhNp`XvYGHD!*8IsTTFQeT1Ig06x*-Dc~u`mBc$QKALRP_F!og zst9Hs?}(g>Nc820MH?5ib?Z{zcyH~k5y;BMj`r2n@r=oH%%G83Nax-=c2iBFe{kC3 z%9HNAbJP|OhG$iKz?VW%r)}z*=F~RgB(+Opvdmvi=X#p7e7sp@1s?fkuTHF>q~?+6 zIo9v85Ff{yhs>+Is404o&hJ4&RuEsCF)tAU5k}W$v)gdN_QRe9j;;|}&OX65bt8l7 z+il`Llqpp+OA+*$P+>CmbJJoR?VqE7C?bbbeoWEQsr&s=J@@S;{;}@`!v!bM@ZC3S zj6OgPfoepwm&j9n`AT&I*Ovdk0iC5%=wV209bM8-72paXh7%2QHoo*ZW{pw0_Odq@ z+5QvbqobMJzRQhrka$B6zj!j`EwC;U0WM|-*)oxk2V9m;p5?8pXbKYtqIVw{i#zM> zU^tJ|v&$yhq?+__LYLZb>z!W7ZCc!TabYWCKHD;-)!BKu`mTD4-dD(Wo>SxN_{4Se zvg{r~8CRX#jk0z-G?ic6%2a}M!RF3q{Z;Ynv*Xd}VAa?Cz}`Tib%AkuGZoxwRi$g} zHem$4g$STMlZ?-yDA_YX@f4-#wU!SJL_-q?lAo?YD1&_jeR7$M3??_zPj^KdH+#xw|xeqh4+SU}cv z={F0g$@=&i&fjBe#YVan;c04wPE^Ot-nP;NQsLm7TmOPCz*4c7Bc@Yc12H*eVfn%FsA<>5tvBpvl4-! zi81kwLMA#st*PT7Y9YG64t>gY=Ymi4?6Y-bDqy~E9xbsE>sfquU8oYnEiW?M1aLjb zH|*3cS?gvER0?*X`wyA%qhF{ltlkfc$IEm+vVRcf@!Kc7<~mpRAy&C}(nd%>z8i7fuwb;9zf+N@gjDGymw-DL*;f>Pi>jWN5V0xGQ zTPc%L*SV4-u9j>WRhLhnuASbc2x1wW!?mnj83IDl{y3SGGzyIwskr{Wy$zO?N|2Xu zSgcOAE&`hYZ3etC;TiW;g$vxntk6jG_r;CxmL$6i^HOP{(wkvP47CHQ6k+1_TMI}% zsP?WL{vqa{F$F?6ag0Zs>i4&2>fi|RZ$ULgxJ6ovu5N|7 zKHXhC-x@R$zS)xZ9N-u}GqqjE3L_OD7Yj?dXAJno+>1{{|6Q*4<<2qxJ(PLAh#(Z3 zMO^R($%r!cRW3U7c$sv4K_#H83F4q(*4>1Sr_@PzOlPWovmjJA0$Ig|{)*Khsk zO%I*#Z~P-gx4W-V@$nq|`wS1QU1I5ca{N`m`Rw^k&f!y7ESPOXP+CAMp=D^3R$=EO zm$pu_@QlN{-1V4ps+g10uE&nbX$|p)x`tswjhgz0Bf!oDe9O_Gqn8CcK@xAq8}shP zg<)i)mA6OZiL`KRKV8A6`&n85Yy^dVe>Kgjxo;|@7>6T`)V&o`BAr(Xv19{-fwR}zB<7MnzIrGxXSf1gt1~*bZ|MPG`PzJ0O z654OX)q4$gx_ic8JFp~0Biw1;8DqHb(#v;>nZ=*B8Im`G6ekX5d#;6m@##7$QM5K{_+okNV~RW7Z{%x~^d=}zrV0sery}P| zl&K@~Mh8kJLrNyzNq)lr=9W;26^&KPe*`#>A zQ_XD*CdQ1~=JJZ*N@X?H;vv;k0#N8MMS@Xg1NLyl$O(}6y=9GyE=rwbNUG}{X{i1F z{T0m2noyi}#?3l36dVnbDHp&4cFh!aZYjL3xv=VH`1d+mX(rAw?hJ&Q8*>O4vATbL zc_u8%Oo|6n#Xu~1oUyfoksaQ%rX3XtzFu;Y$oZ%e0}8A}X*3AzZJ%vmQqrY?pP?`EjvnT(*!swb)Y>c>G})t>L6nlQN?R z59tUimQy;%5LntbIfZWOq+w@3XI3yCW^JJ7JG#%bS1^TVq`DP&FpVQ{SwK!hHh#d8 zz?70wEV%>Y3OKsypSOnALXQN`tZnd-E@|=psC%rynP#M3zS~MM|-|zU=EY> z%zH5|G#M_y=fyo~#PWog-05L3^-fAmU-v|GpiAKmJIlc-1!{K$$)J%mE#dE-16Y&~LQ*eB zpMet_u`!xEQ~aA|b=dM(i^(}(0*rip^UxJ`zGZ=B-%2>Dx(lf`T$=wY1>9tCcG16&f*;|ktHJm#+|3O5lX4_Dxa!wRbFG}kv#LNTbFEV zT;&r->%7o|{aR;b0`xPVj#EDdzmbd!O#j!j^-+>VnEqigWSSB%(d7o4qIl0tHP_~A^e=x!ZUFpH`BH>O{*MbIZ9S;Nx88J0r zV8bH}$1wvd+?UNO=Dn*cq}YHof$p_slic-Tp0~F6?}e3JeR6N*>~Drx+O#E}mrX~% zEcsPX^nca_P7G+$OQ7u~B8@da4~!KDS8>`?(CESJ?jqx2S6bnnfV45qRaR9G;k~=?wPK!UW=r^==YLc!5B4G(~*kj^Vl1Z>i3oh zjMG7S-QlmF!j97K)l~AbNA;v)zj|}2>@5{vA)xSPz&)>ArVMmU9uEM=CQ*#c6^bRfbBQ{0 zB&28l@l9eQUc{A-&#sJQCpF{y=$H@J+;#y_D@YAqTV)umLR4452eJ2q7L7OfNvGKl zc>#09pj3GzhU&!PES{%r37prprAAD#hl~gYr%{;RXBWo^&1PEycCWF2F1_!TMP*qo z{KuoF55<&Hay51K5%(A`TpG9>Uc${vLBGa7Bmz z=#4UGj^J(1NnTR+CR07aulRp^i1Tbh`0V3ECGhkBYckP^z{}R~vE-ZJsZ*1Q`9t!M8&^B9L%j}I4jHIn*89Lq! zi_L^{Yf{z8og%MA0&u78se(k>oY2~Yd??&6Bv9|#mB}(&ZUF=}|BM$(Db>oks2)oN z?@-SY2NPGr?sZTwkb7m*>cTRk@fM@9xd)x*RL@u|Hx!lVpj^kk8s&`yjIv7gWx*z9 z*kj%pf80OClZ#@5p;+$y>JqMj?u~9Mf-u6kCr!A^=|ziF^(U&$=8$LNs&0qvSJ*?N zvsV9A0-~m_KKo5@7>Q)$=|4v=31&ZZVw3~Kdk8O4NLVJ7XvqVWv^}7xHQpQ;WTZVA z%{_dn4Qc>3m>NgaHDJ$rFD;ByDm~NfUZx#hw9o%avqD+7J{4I)8oOKe&l$#ZaaoCs zK>lJ+y3Z0A*Axxck#B%HJQ~=>ug2#1qT{7@@7h)beyUfDI$N-deLo4SwV>Mwc?^+) zX5iQHM)jWVJ)E*BgJ`e9plz5%p!02(?fYMdrv2ITR| zN-*CL7=;hpT)HT2w6fT^m*tu>5=LHk#md~~O&67^kh>RR0N1-u(^Rz2U^_=g zQE(#!(kCR>VqkGybr6}_)RpY%cYCl3-66+h_PfNmb$Ux`TLC-qr*CNdt3G8Ddy40kjUh+ZI^$Ir4S1L5CMzNeGkc#r0+hp&aX2D&=OFoxFRueP)hAmR}#I|I|+VDVw< zUsRm@JOxz99l=m}RATwCRfxk2C?fd{b34}F71f!Z$rn8b9e#fjdA)Lv^?(9mTbtj% zoEUBB+>dU?De5Wwkr)uyC*$TR=r`$-%1NZ{AX9*KM%cVl?LsS-(v_j^9o31mh!b6Y zB#l%;!h1z{j#Svi|9cP!R2@DQL7~WdPf(k~(Cs4bF>Ju|`xm?Ul|n!UL_^~)os6V+ zLBKlV&XR^`;9jXxFSj4UpIPwEqJ}v}-L`vL88T|+i%#}l_F@xw1nCmlB|SA%T7>Gy zwV(7d{dQ@`nCNxLmoR(i$f7BkN;PWI{)NWBybM*^!WuqeLQ|&bB$JlmB@U{(SO1$c zGR;cekDER-w1Gx=LUlvOna9F#AGJmzv;47F{AkOd;!o@Qd6u(%sp>i;w+uM-vgyh( zgVSoq7L+oQ6Pe*=HlZJlm#9?}UuogNJSk(=2aI+a%cZpcilPMdb4dhv6&iszdTLKm*Lu^_v#F38>4*JZ$D zjcP&ZWwZOV@`+$V-JYqCW))w;G7u#wXwAs<`W(a^bisAY^(jsbRayBcFEoEz(a*5$2@~ zj(^=9xH=>^SDFzPIGFdRjQ28d1#2q}F_ac*)VOG@O6n|M(OltWKjBP71RKm45JaHj zXJN|1rRsvuH2h=d;`@?XCq~ib_e_z~P35z7t*@Cuaz-qK>=w3fMDMPHL@KDp9K2C&s9q`K*LK!Hw0b+g$z3 zD@Ia-|32%Vz>FqN-D{SWIJgCwartGR7Mzx~xa2o+-h`W*Z09K3eaI?bM<$=bA>E@Y z6DCWV+SB;8B{(_?2t%gl2WUo^YOQ45D}EOy?3kG`5Ur!NA31Le1N^L&y|nkr3*5)@ z#_5-vJU4r(PyZ1L9$isNFrX>~LI#i%26{Vu-kUZ{QJ{&um=RbtJ6Rlo9>lZFJ80=# zxnDATHk_@(QFtf!@{vQmdI-buF^^Ljer#~W06;;K6Tm__l}JGG%a8s(yII0R(3&f{ z?2-(pqqDtvtjcq=W=D5i( zMxi2bMovvy*UDUG%iGvIFy#H-%k!VLty6s?zYe?|%?;Z4a;_=xSrupA?qc!B$*46= zSy+l-*hKzZGO&-|-%Zc=rt%~|j1f+O-n}~KbM^7+80nB%3rZ^81Z~(VnRcU#x`4*` z2o!%K&r-jC$A`a+l*Kwx?`>L|kNNs^^{&MnXX}9O=lsxXZd5K_U#Y#4<8)%G5!az4 z=kaLxn|s3lpk1`usA?vivSw#odJ=2iVZ2gJa@PupIr&s?WN-HzSY!sm)q(Qji}_0` z&>&Qi{%i;6)ylQTr3zbpg1(iZ+#Y+&?m&e|in6`rzB%ep*WXXSp!Vxar+*8>Ym_*e z9DeLW0LnA-VBD2yya_zG-uE~y7l-c#5v~m>T!$xQ$H;!L;0wuu$#|l#)7cm|xb2FT zrN#m%zdUbF!o82LqWuRP(&j^k=5hGwmZ0)5L1B8K za*jQ8yCUFwS$SbIfi=){q9TPBW96a7S7SaTwD~7CmW3d~*;ORMbAkk2l10+*6P!>nPajk+#r;K;y1p6siDP5R_qNV*{&w)~3?KTFt3&LkE~ z&;kg9M31u-$NlY{O`3r4*A)P}=?TZ{T<>gs{^%r(DDmEjHB`qxe`pccu?MTZ=8K!$ zqAo}4`;%@hW<_A|pH-8NbQQKvK9gl>VZ}Q}Z9M)2KDX1@Fr$T!ua<|D z-}GoA0{Ir@k4kOxnvUg)l4Ry&BD44~a%Ai;)EJ-wBTl^T<#^)mW;LnO@Y;I-L+-9Y zdXR}~fr$m~QOIvgI@XB4dOu9#07uyBE7=Bn^b9#+2Lpx(P6RRuP6#I)`Dx${lA>wq zzKd&TyBO6ilxdQBx#<{tEyq;7D7KR0%3tS#O0qwHA!gyDUo~|Dgq1Pi0YwnuU3vl( z(6JD?Y9E$8HuEF?R*+-$M? zvvD)d3<@OZuUm0R@*BM=5UQ0RXMpPYAXpR!%va)-zvlM+rm6)>F8hvT1gPm z_(;Uk(OQI1)4isgHXp{Mq7HdqU^CjcgkYUwbb)gOj>aI^ZG>;{?sY4KH8qmtD+#ma91y3 z-IiN%>Z*AkWq1rc*`o;K_*N{R^&0VSxnUeTh%K5svV{u8!OkirE1wXGLE4&O>H*?8 zWAuY6oJIkV_mUnC8CP^i&thC|=BuOW-{iC#{BquA9V;C92mhQ8=Yd^JTYj>VgQ(~W z{>w=gT({*A`1-TXquDJ)lG<~`HKp?}7z4A1*ZEPvD~H7Xg_^@*${*W5v#!fxv;FM& zh=$ep4`*wa4ro^kTQvB?p%ix>M`f8LZ z;1zpj5#bMs@??T9hu9<#4c^^HnCGRmZj$P#hk$qFE5=XKL=zdg*yQ)+TFsAgS@`!p zKJhCOAcuy}xHbCw$TU@*JXun6S}ZHpM+bIMbrKn7J~ z__kKvrY!&-3(QiH@5l8ra1B?ss|3v(+RXS~;S+ z6aliN{r$$%_?~Y_$xv{$Z}F$`Cu_)#W(1_28`n-Gelc@^c!Z3yIM*MSu}%*eQ41Wb zU1Q1?ENrKz?bD>cF70JndQ@v4Cfu;-N#Yx?SJkqWGuicBORc!$iYkZqAS6yc*^}+a z%=ro=eBe=Xq-Yob+xCUS^l+*@qACvs?yTmBuPia9{M4AMDTJ&UmCd(0S<9nGD0?$F zn==F(rV+Tu?HJZQ)%dH}##)$W<+X;EH)Sx{;gZuY+|s>0++qCJoiuyBwyQ3aWp2WN z=2UTfXPY(3AHnOYt#^H!?Pm+jP3lW_w{NabP9B0xHGUTY`0(_AiSl1iPWPB(|G*d4{}uK9?-?Hl8xzz2Gx(wk$(m!+icXANRCdN3t8c+rBzD`~ zY8lc`$&xW&{EFT!dJ87>hg39Xrx*npOey$`?}n7?H{j;|R_}6$&BpKXx;wvnw|n=S zmjI0rLc~-jODdnnMse zDzNY_vm{AAkKPeShxH^Qpc_P!ZXL*wsBko=cM&)_o)M#s3>8>0tjNwNJ_CiW5CO=p zgbX+Q`2@!*xbLc;-9zXq!mk#3Rt*6C(b@PBPdkzK{O+97hppKNK2YZpru^HNCCq%0U-H4 z0}oIjmyrKI<1+}`i`*Sol#wYZMnT<&mRJL--bY{z?8t%P*Z`e|4kWJj2QEaQBqb-f z_^%8Uq+<-+%@qN5PR;_NH1F#j5z*@C%blaNN8Q?AjpXf}Ftpb~HzJF3bqyt&qx>@X z9`DmLOwX`+J$i4{@&Q}G+y4d_!Aodr{bCPHEJsOT0DHKHQB8b-_qW~szO47n0YORL zG365y0G+@EdTDMvd{NgOo`Zejf&Dt0kl)?A3v&ZkGl}&1?yWFR5%h4tTtI*p=;<2q z@BH%JDZmoIL1^~V%>%(^z~ct}dbq{nn17Fs(C&iY0DHm=I3mIUeSds^PJ@Xs(2x%F zKRUeKem_{!oKaq0IDTcm?J`kOl|c4o#{dZWhGBt$`wSVO?l2z@9%q@c72gc(0)J-I zL^Vl(F~4rznO>jj(zkz%fi4X$3_-sdGq90GbT9*-9nx_^2nl7TK)-%ZK5kQg;|_W& zzYJ)9XTy(l@o@bkv;szdB``0bJnp_=1C45Eu#17zNW~!|e?u<@e=5|`%)vd}zGf?k zv7?oONe3VX&FL8hI3j-&2;!4NeEOL1#;dGSHDZyAUQ$Gf<*fR{B#+$22RhaAnoyjxJD*eM`=Q&*t%;vIXx+Kq$)ffA>H%T{m*At2tnUO7hci-*mx(Zcjv zdiso7e;4q@`QEGDg@}G$!}PaC6-k*S!_KU|lSOMOYmeGxBc-kFCKXWq+I`{0%`^IS zrp8jR>*^`4W9IgC`TCr{dR1Aek5(_I=b*P~8xn4LU!%GSM=N&tT0?Sr1iKlMPyB^O z8N~KO6N?H-MJV)6=K~7`al}@gB=%;DrPHEcv85-2vPC?P-^%Ty(nQnNbau<7nbe3@ zp-(*wHif&|PZ!m~2vnNR>3Aj~J>obLC6%Qtlrb$i`xI>&NwhCduQMs`3oR1hlZw9(~fk zT0h9l+!6V=E_Gn4VUboPxth!<*rjww%{uA6N6&-eE?$3r8^b%4*t;mvPVDl^?jP;_ z8BJzk0Ky949C%9xr4P@`6B0=$hH-M$fyiPkECw`)CT$rzUUD;j5RAn-wBZQbA70C% zVd7HGuCGu%J(sChdIq}Yr1IwFuVz*&+}%SFKFDzY-}bn+Ll)Sr1}SH@42YUgXOz4= zvljLGg4mh@#r2h8CI8x#)zvN6wEz5hT7i`Dw5AjD(ekBmz^K=yMT#3aL9#p$0w$`;d+Cy`@DQPt^>z?O6Lfx+(XS@@^T!UOk?Iip42lUkZt3=S-pOu z2f~?&cG$JgFE=lGpiNZGk1T>V`X*j2hU0AQ^d@?gQcI`L(|I};5a5|p1<{k@#GGPl ziRj8qcPDdzy|-kwTA9A`W>>Pl+#7t~CR}9D+38IKOoXUn2aKDd<7sY?$%03|2g(h@ zVYD#Hj=m+7#gd+;q^SuH$UjZ_@m~BXorEQ^ZsWijT%oh|mwnV%<%-l$mVmoD zJ_cgpFtWNDJAV>mZ}qc)jPLvDm~rMZn*lgC@Awk^|q6hUe za&HZ-ZhV3*N1MI97GsPWpCKZ}=4J)sAeTAanqbu?&uvqK+^Xi)mCvqqMH#aE)L6H( zsGOfIUwr#MnL78vh^aKJbWS>mP~Uog@4E@>9lg@FXSSNd$fdWN2#)hck=8|@`h zbhYt!GL-MNV5tt8*od7NT+U>7IQMQv&N6-)iumxtO1Ce47Lg9JwMtP!&~@`j5C_Ag z-#EKc`^dvV79}Bgy*j5+p&+MdF({!)IeC=3L>lhfeEPv!*%@a?J||f0;aUIXT!7Pp zgUOT1Ux?D*IU87Jy@H9C5_M8uSS67R>ZKjJ+jj1W+^}28^@nJFYQ3|@^pg$w_K+VH zfaETpSKR0lDN|0Ic{mWtf}SM-m4#C2E^v_^S2}+)2;I(jDXpDpfl!)F?G$ctt?W+0 zUN<9B$s+ALRpk%nKV98oMyg<7BAc+Rbap^&g7j@@LT<4~cGc$0?CCrY6YG~HMzysU z^E=e0`r>(P*|k*!i3q@SuxYU!&vh=mX+IU(L0de7^>(;q-UU+kpw=T;zA+4%+Ll0()nvLSTq>Tykjd-R>NgtO9x z>>!(TK-St9f7V;#IeoROo89Iuu5m=NG&sRfMXwVr#!WL3$bpbfBCX!@5ZFkKf#C5O zW)*S$72=auA-fJ{YlEc=n>6)RyQn58TTa8@GvX1KvYj(Yh(PgggSmVflh~zi50Vr) z+jl|JEw{j8)NeV%Dk*D>GwCYELmhu|h2Dd`^0_z!DHJ&Mh@7O~V|f_V6=<)%sxJh# zUpOO6eJK8{+IwPn)21r#_scYZ((rGKl@@Tsw1tijucft*Pw++xU#|{0;YRH?$A-*f z?DSUeq>%r(;Yqba>4|4AeZ*#Y?r8Qz38Vc)P*KAV!uu$)a(F~+mVJZCq4%v7dMCUK zDMSlTeee66BO`QfoWXf=@C#LEuWyffbJwF$dn45w-`Z2<#SQCus2W!s(J)JT!BAs? z^ZcZU$U;s;1L;LrQL=6(@67^qHI?HCN&&9xaho(zTow(70QxvN-> zP;~fMhkrU%2v(I*kaRlgqTfHttG7eXnqhX0ZY#t+|FVp7lcmnTa3{k$68N|F$5-NH z`y*xxcsnms@XZ2M4()mMuZoyHQx@pWY$#0cBdDnssF>w^15Js{8b74VH|dZ=g1d_3 zECF~4{9hGHscd_2>}H=rgycngadsm1-%YCDVPHF;6ZKnc`p?t+HIUU$IH(h^>s6;! zXL$ytY~+OkPuc#1*+d(g=6?zy|Eatl?hXh~uIlf#>Zb6hLQ`WQkMhZ6_=Nt};ug`O zqT$MP@<_4ww%%q$S#bU|Sp0D!AYAn!9wD1ipPkcjt`d@D_z&FSM5+ljY7)D4`y z7}Rb$k!opLHet<^QpnJfbkV2ABbZT7*-2mPbZ4*f+R9EVI5w7$^6EAJ+PIp1&UU6F zj%(aU=+N%|L>|*`ZshK}$YFLRucek_)&H+l?P-2Vkn@sEJ)V4*#HUy}n8#{ApN0ML z&Bj@L-&`0`;w*y?c0lPHAsOZSukY3V&$yo<{L= z++qhckcRmg%8?X6jid-d5Wq zDmSH^M)nXB(R*bZ#E8CGl0L=hgR3ztva*`5Q%5q5kBT0;-a7ov_Gwec5JzVmCY|_{FlIQ53$U5U?3Rq3N760 z)F3W;x%gPQR22rh6*dp{iRMwmX z6u4%2)5m1vU+2H>8zTmpByN)CN~TPA`X&j|Xgr`ya2+3Y2o`#Cbl8?^yJ5sC_EBrV z#OvtFf%7Fh&%!uEtAWE!6UxQd1k- z!bQjr!^tEX=^lgeW*8jmcJ=U=mTermpD?O_w=Cm|VtO&O5Sgp=rd}Z@SM$7$jbv=6 zVkUL3&fn2Zm6(aDa$r4_-^P``^9^Ec%5v)BrQ4dHM47nf6}pI55l}_*63AGV@1sR} z*Wz5{=!`yLHp#ms1wawEZT2+qDGk%#PcD9~g59wgu(FkT795jIlh#&zxOq%N|GMpx z?2wMp<>|3Pm(g6)&ZA9t-K%AN27?zGV2U=^QJBm60|$frt7wEC)FGkr@RjAI2i}RWfnhC>heO1JRtDc%` zH!(;#Jd`?G#q=p)Vwo{CT*?4Zs_%3)PrhU)sc-!S4NkI%`$e#G*bLw#vD3IxV@68K z__oTL#o&c&$Ha zH>aH9>;HrOy7iVdR!%{|BbB`zJW4rRv*Mi&N`itcm9XLOQT$hq$NHUP{UUn1Fo7h7 z3zDd6toaaNpl#q08NV)r%2J3LH$6>;_HEyrekiTJHt^$}Ff!0(Yz4djd$0RPbVa#o z^hxT`F7~g=h@?lk4dDdoU-fK(kn;2_U-p$|HEf6Cm%x0I3-u>IJCcA?0{IgH8Y)`hv{Mc`>c+YRkgrkx~4J_q$zfHVbXIcimbysP- zr+2r^VSVOJW1FiEb8O~z0%eyswN-{or@f6;o8%zJ7bK~7{qk@ z*1MJAK#vRx&$-=~B&l|qtY+D)T9B@#N-2uaXeyep!q`vadzh~Bv(9EVkoCI2baA2c z_$R&>r^em$Hn+s2`wouLDac>s!X)`t7T`E|(fom7>icD17!<(B@uPILE?uGM2N=b2yKR>5o=_|JWo@+Qd0+EnYL%|g+q_oa)%yR7=vnoQH+>BL2#tQ9_Jfsg1nlPCr%8o0-3XB< z8m}RfCr8u8o0~jGp?SFTcvx1#Os2wAfhO&e$T_@_asIbNyg*c}T_l?8eh-rRM7E=j zV9exJN>6LLX+m_{c@bJWl`#6Ia)=K;czT;Y`S7$N#$JoB_OMB$KFFpspL=VubWA@S z2vUOGk<5V!XU@Tb4aqQY>Qy2;yP@S|T%1A{`6sq-jLG;xFYIL&_A*SWVAJ3-t9r9s zm$O{Gy8bNP_yzJ5OCQqVn!8uvSW-kU8if!>W_;&U{55Z!G_mZjsK)i~y>wz8c-KU1 zho-zI{?7x;5HX^O4f83tZ<)aXlrdQ*^A!UvFI_dQoOr~rEBBtvTP06<{3*|6d zSI%|2ldxJlKBBoy{Q%*QyfCpq;N{hWHYCw1%O5b)aZ{EHCw$ZI5Z*k%GDMf$1B!=S zO6C`E;*&*(N}IRqH*kD*p=d40@pGtH*Y2=s+t*@>-bljv2zBDmSL)~BsS8Gm=KkA? z*cvb15J<_z=xCnQJpoCuYYzfUDPK%Gqf-9BHIqVvPcxGaEcreZqReW*pCMzl>hvGC z7f>75s6ha|qgJWvZVp`7-*IK3#?@=Tcz3iPYe#EK{>&3tJ!Xq9%Z`TP&xi9UWmMPc z)zHT%?_^ppo(%~yz|3LExX1ODy2572TAn~P+2QWr9TIE`>^SQ((m=lKk|2*}WuA=A zWQcpw8nS)jY~A50b8ENyb=hVo0q6NJ!Y#jAPUwNSC2TW-Sm|BPYHlJ%(#ZLNuNpzFXt2PM2XE=8{rE`5E{z7Z|D;;1-vPB-h09Jchm@))!b^N`5@b z7iKSI+gz!wA@8U?>N@($E8Ufo0KQEnf&FbpUNjZcw?iuMcgSbF%{}6EfWh887tTmY z>XoT7KGNEPN-;wq1EiMUXrMyJ=3nsx=mcZ|R~$^hle`zbHNvV0dk-K}kBiAhh?}@6 ztxOj9e2@kOo<3q6qQ<6nF*WIZRshAE+;@7yVv_t)9z?@YI*oUSC>_zihM#Itgcep4 zuf+iipRpEC74e*Iouec+owHf2gbcRvHm!PDOxiNKoC30YKCv|MewClGHkv!29a=ME zTyLDJ5}`J^wvroL;%8%%f-J}6&JC(=JSD#B=x2HsP*RMI z+I=hXx#x$u{&By14c@gCuMr>;c~BGtM#fE2a4B~qOr>=%g~JQ$u$z~;H- zfr!dTA&|(q=dGA3sg@G>iD$?@>$lGk3ioKxnc!^Pm~U3xYC&bmGsx-8^{YSBK<|K+ z57vEEHpPzNqr?|zsez~s5}1G=!L-Ph>1i0foJVi9QPq^sL^_%4p;;uf9Vk>RSp+BQ z-9<9{Cfw0vP+x1?Jy}Mo@MwKFW+s$!s)o1@`7K1CdhE~hBygh}VVZwUtW_~Tk#_vS zeHf-#H=^?9QOs5`=Ge{X{9Yq`eH6YeyBmpw((?5F{?l(ku!mQtibQiyafw3@p*)23 zzKvab4%U?$qpE(I(4l`)ORwRMestN@zHJoSX{x2>qR1_4pqw!wdEs0q6jHSiQ`6_c zc_qcWqu`s9I_$wyt!RQDS&wiZ|IU2t+=DdnUzK^liJT1W+uMSk2S^lE=n0<8GkXpf zBocNXm5AJJoxYFSw8RKk_xADX-Xy^`5hF~L3oXDNOawgC?SD-5YLjZC7eN7L$FiL!QJpnvi zmbb~XSvOkLva>gfca)_QRq<~Oi4y;=$wlmK+sx}neunmq@sR1aUr>z233eVpdaVKN z9p8G`9<8d?u+=**ZZnWCi+c4WHlYs+O&*qhP`lJfLaLa`Ft|niD$eKf=4(g46rPr5 z1&+5B8RZVz0BX(NBOe)fyXt_K)BuM?RxnIA#J{}6$fnWKD9=1ioloUx7l}%Dwzilb zCW*XYHEo4CH_m213)fv{Pc?Z(wQe)kLt#TXV=kPlWK4l>1#+ok6FrGR>$90vYjT-O z!*p@Zv5=ySjsi`^iX20af}v}O?pk~>WRSu2@$b7qYBJVt2Ld#b|C(o1{X zYifQPE|Nt?f>xVfz?p-KxAIRYy$giO6n$&VEsemvpN|0NeT`NwT$DIvh4ZxZg-!Cv z<2Bn0Ipxz^an8E%nW`!FENCjm1y$8E_K#dMFpLE-1Tf#og-W5;y$CTH86 zkK@T(NMM(A{2q?waV_=B$>^T5Y`{RRliiuQKz+Jg?Z(>`Kj?O7{cUUx5q|Q0Pr8n$ zdwk1MYs{e$|DT8C}}cCH6mdRL~K zyrROPFc#b}MSp7kl+ES3lu6#6ElM_a%@w~@Mwh0*iW6ZH*;r2sR5y=Vc0eF4%e=4PWLme*YfR|XAcmJHf>Z*w#=*u$6&8JtW zJ%hC1<|Va_k8WZ^!}xZ=`Db98@uHN}&Ah}4e|E^tTe$lnK3eLX2il&f@LAyyX}&O} z1C#!XzJu#uK1=vN_G(_<|Kzv-17%_2_|L>l$i&FT!Tg``f5*8@OzbRN|3Awu5#3Gv6&vda8V?tL5{1 zT77j^zN--EN;@&4Lt2u_6jz|(jP?!9Fu^1%EuHH@*Va2U*Vnm}EUj9EkRbPV8Daj= z&o9Ftfnfj;L8&wfz>mj)w933+$|lXLa<48r7Ve*;;; zA||j2hN2gofkAW@&P#J~`E>oZy(X+116-o_8;(HjAtCLVd@ueY+=p@n*U}0Erp7?x zDLA~0RL4L7qNAWeLOS>|Ai@f{CPcCjVrN%SP*8`J;83T~&`}aM52S!HhMWiM1lHpV zTnQ9_fvC{t1o^3oK@Y_!u!D5|gk5!R4D!@&2LY}N1RaNga`$<5gwz4m1Fj1PZAME0 zww@KdGZ>u=z-9#fzJU)6PCfi*?|AtpL4pF5H-)CACKoq>ui=8Vg0BVQ1p={YnW;x$ zhF}{4w|)=J4-U+nFYgWxfgBkcy<6W|oL~THLBj`**aQWnpPC=TIES@2bOzylQzl-= zGuG*)0qe+cadCqTAaSG!JS0POfc(+lyqS4fHQf!$3hHb0vs>(AetF9Vf(u}PB-!gTspRfy#DFq< z3qKmY;=NL@LyY^esQNj7_!+wsC<5$Ce)mC7bnM{>O97~W`)=p_@GC>u9-DrRML9j(fzaye z(RC~7hXbhZfqc32J^tdHJyS#i+twITj90_%weSW6#wOED5}=~*f!1pQfWN4mx|L(# z-y9NO5hq5z+$ev9Jvo7G+2wC)fA$9u4L>F3?k9QK@A|~-fq^zJmtP4kGy+Zomg+`l z>sArhfGt7aA&=j1zoNN+!aDSgAU)cCphjW;efBd+#~zVObCBpUt(1&slxl zX)H~QShtJKrPe1~8f%nFx^KJuh7u|VtTCe08^gE4@>4n3a-rQS1UX7Khs2ncC|!hC_}O7|r^S)(+x;5Z7u z4Z|nm+n>1SiGQuD;8C$N$REvexf^DO_JclF^J@Skdb_I&n*MVm5EiAXmb409(8Zk51OOayO1jc7zJB=cjuQS=m^#N_|!TxZg387e(MwFKZ~{rmy;z@ z7z8_CQihqi*3o+kGP8C|?2URm9G+ZiNU3!DQEY!U!OT%k47?d^_!@QGZn6dUy0%xA zPDl;+qix&Ix{~N96WGXjD{`}w8lG82^V-I_qw#q&r&CETE@0AEJW*f6N_@~|Ov_-p zqpCqh9`^OwLmkvusdSkHdM8JApeST_G=a(3t+1~Z_tPH!(lAss}@1-nTW73XZiN%!fZ8b!qVw?^9QF5jnA=#hSOQY^59?v zC6|cX9vY9K|Kdr4L`zw)sHMha-tV0zx7c)eGmR8bBxQ|K?ZjTKInaj<4?t(SVGJzO zO2&v@;1a~&^*Z``GFyI?>!WhPM4)O!;0SHp!KeKK6Qe26^o%(e+$jSp&DVL z6qCe8(`#cO5GKCmK)W#9zQ4JT8_Lvr$4)w$!fIV0a$V=rQJ~h!i-*oT)mCElS7R8E z#~C!~GO4VnKs^C|9@IL*yDIgUv|<>f`;04Zfq#9>tPXa!sOB=VLH`tzbaPu?#x@QX zJuy!Ar3!zmFel-<6VKmZc<)&X?cg#Wrxzm>xIHSwV44r{T+G7x(o5aqdg<^lzmyaj z2wu3iIVM79Lsj|a*a;8-oj52$2M<+nekdK->t^K|8TD{ zj#ytE@71rM+^P0uGGri-y1P5pBLQ&Q_^!eSI(;25XULC;kvhYEGRgQX2u8YTMcx@E zG$dyV+DlHX5=&1iD${qthvrQCL;~|^NAeeCtHkB=3_-lTA9YhC9k{`o24oo{W*YA!fEPK36$otKrEcA`V4Q*8MoSLJEwDq zp7-vW@0IU{0$|Z-p<#tOFhqp)J8mcH4U?=_pMYYJftYN`G7TJEH7&{&t?_B zirnXIm-;NH;b6#RbhmkU#Y((ioG%d^XEUOzNEoV|^g0WT48CCjpN4t< z5o^iW-D%V2F59`s^WxR?Lzy&^wKM}2WR=scB)VY%gTX4~sdR~b?%BtLs^>ggL6d^p zymg3(X<~1Jp=hAb*wit*|1O)JgQ{D^vjY#MW$s|dln%QTB;_Z=RAJ9vsaD~yY_M1< z<7U04P42)t%&+D+l-admB-p}`I9+p!sJlePKkM!sEm>u&V^LGP96I-eDbR@5 z#~m}w@C%rjfg&d~{F=P!Q+A_@QU}>TaU(;0B9;2`aKlF3Piuil6BM29C?BXEDbHGa zi+u~Vqib~fsyDN{(5msVn{-4K()Vx_3o#cr`RG*A1p7+Yz~NG}+_+#^#V_P~rR*m< zL7bh79xkj6a-Tqqow#{BjWlXFkwxeomTVJ@-CP%Cal!@Br#F6QbA$b-H6+ee;%&NM zC~o%)GvFHEO|yF*GtwZdV0_l$h7^N(uT6<1gw(Kf+`m1)fSEaMjT4tEEH=`pYN#@+ z3(nAafA5=33deVo2-);UX2Q_IEKkx4P)zDsoNWPoaaHPZaP9;R474_~*!*>FB(@K2 zbgHu@H#1**TV3n{Z-apRhc*M+tL_hrwl^}lmn7N?&OYxtZbeL#;$6|oq_K82($}g8uX6Q?iNebViv7)emPxN=ypwi>xfZmF%dL#eC8Yl6 zMpzTt>r>IMS&&X&__yOY2{D(W+X7L%ecR2fp-*j^zY(0YgOe{$N-aq|pCso@4b31&$##ttvmU3kw+ZXv+&Z>7 ztMm872^b(MI!+~U6x5AG>G-9Zf*0jdr6fpOKXl^*7k2u)C*nc&wFD6+z5T>WJiQ&6 z(IN6LwKWWC1Z>D zX!&N^#)y*U?DriMbq%SYS60tGanMQ_s$4oHLO@*b zxoNoJIwSQxH0iq)OVFINQL;vUfE-BZZ?W)+sp> zw46h)mQbAgQD=n*L&ZnKon^n>MdyzRXej4zxwC9p73Q8)M{aq0g)3!9f~8+sR`NY6 zIXH8vcfBNRz*Fe}JL;Aq22PP;?`;RO208V$sOg?5W42x*33z|jmA54^;?GuF?2_03 z{5Fd!nDz$tDGeq>x`_Frwh-T7)fG9>@lnGG#Bs_^*(|(y zamq^N(kIoVI&H14<{$J!&MmOMNPz*iwYsSezne{!3X);Bmo7iCLa!T~s=8aZ{#gcc zeMjyy$&tpEl@5-FuTkwac8|f=9N}N=w4)`@uM;+(GgTmJOWPfiUTLXON>k9pVi8zE=WcbvbR10T z2}8+a1ECq{^_GH*J;+EZ;wU#v9Cv#!#p_7LJ0w&VQe;&Y2KUDbS3R0?xPoa1aPU(P zsM}j|lgYLgEk$$Q(qLk^llqf(ZC}9mFMD7+QogHC2ow-X&z~fNAtqbR*`Bg3k&afQ zJeb4@VZhP>cmXlQz4zjLAiWQ1eDJ<8YFZtHJHq zqVF!z`c7cHis%Wl`y2dL%;EBSeshXUGCjJ$W~eXkb;&HEu0$4lI?NkFgg-5TI;iss zQi=J6{H*or7K&->BpjhF`s5&+T?^hu=oqzoHG=5a)9a6zYGjy>i-Kb_s~Hx!Jw?-(D>Nipp}a^)8IE(WE%sGW4?xm^|mBHC^w=F?HqipeeE zq}s(5G659QsF_njsiT*=tb!IH)X&+FGry`>h}Z!F!P>Toi@W-P@?PkY54iXXt1JCP zgRbaUg?a@(yR52x`_L5-@bq%!Zjeg2cL79B8Lk4y|Ld3Fwu-z64WS&aZMv)TC>bB5eOiVpe~uJQ9}R{#Z!#BbcA2R<$T3h_|(3b0v%Lwef zw!F}~(KU)5UjCn|$**_%7U#c(5)t&JQQDp!Og$eU8RM2L4P=+eMmzJnglTP+hTvqi zWD4oT0Fd2}eK3SG;IM-+=-DKABDS5SFZI!7A1fsyq4VqQPAX6Sk&tXVvCLaHhwWmoEl(+<@Aal$fFYqHj6sjs>)uC_Qgn^fu^WD;Ph%T#BEu?9MRp;Ji*wm8F7n zF7401{?hL+i&$*$m?Z;$Jz<(YKd=gW#b{b=((^%MAhk-pSbBbo%&P2ta7hmZy~rvB zpI##@?+j#Fu;rNAa_{nWSMGVd>X$k7NNRNej^d0D9gY`fh8NF&3BETQGbcX_Isb&E$|9+h?b=%C>8%4eoo7#R|@zFd2EB4QQeG4%U zw;0F8StLKh^O^P#Oe~K5w9P`PMU)x!T7;;yc3@p`i9}MrAgGOQ;Xa`DZy&PAJb>vU z1GSr-h-RRG*aX1&d9PMXcxO0$9SIRE-Hu1e2~@SLlWj9M?(Ka^3XP}7OvgoZG%Ysb%2A?xnjL|^xhgD#h&DT{dB-X-=l2WT`2mVg_7lA zH){oPXEjA6>zOA%D5risc`QqobC%{1<~2Zu;r&F^*=t49)srWaZnq^BUV*C@yg3%q zqtV&Mv_mbI_~*i?&Gy#6saBPits#~ z-J=gRoaiN(MxdxaTQ6>-TJDxb?}&`cXzC^J&CcE_En1H?5W`ND4I|cyf1RH=Id}J1 zY708RR7n1TeANQdwa^y%pKsGaK(&X5@|#D%d$W&Y9@gYkwGJPj$qpCq9OEbR7XV`$ zvu9Fhx_;@D`D78vJ;w5o{)Z`)CHetuTkzXqO@+)wDbULf+AiHodS_xXUZ{<^!90FH zjbG((?A1YFZ-(Cr?u%Nfr5V~n+uF_me#*T_I8KLhMacd+v%Q(G{#VOdl!9wr>P)62 z>dolifIEFFS{j0IFV9UF7DJ!MLAtUztA*5YJ>q=+taK)iMEeb{n<6;ZstG`ii!b)w zN$cHExD)?hlF@&e5384>F}tjbR45q1a&Mh$NEst8#gSBL+t0<0T^HrqD-SUES2ZI0 zdub+WJuZVlzCX)8E!z1M9(uVULOnj9=nCt$%)7e1WF&m2!BS8^RJ0Q^z`8F)T%4nW zu%Y}d?EF%GDZUJY^h(S&@e*x$%MM3B9*54@4z%WVNhTz9vXWuTWQ3y27+X=`+#$}s z>lV}uy2kA|#UeA){eJsy@;DE6MQ$BOM$fuyAHt#F+SrF_^7a;fV#;r@M26_Vq1`@c z?Ht?SMfGGv>>4}t`D(gNRl8W!;N$_q0K^}7HQuch-2$MTo&C%Npol8fErx{pXoe(( zcu};2$~WXc4S1`#VE`kLV_U9rWf9{`E6H69r1$wW?3Mwz+HmK>$%w;6Q>TP&?RykJ zC$Qf@3nhExpZNVf^TYX(%`Y8bGo(5a+s0BDaFZ%zBi1x`h;-`~-Gow-6*fivHL2#q zH9_jKtOtKX{J>mkFKmf!w#E6ipk;w_l;DOqb@)$L-ki-tPZKgxBdsAE4@w=&{#{n} zx6+YFfX|yv{x4A(ohL0ngO7B5^~dk1iqhSV!Ed?toQ4s5JqHY;_SnrbDfP|)dZS3U z?=E(@;z|qv7_1lP+Tu?nHru3PixPx`F3d;O1;#QEn>;GM=IJ7vpUdbnw^fX?03w&a zKl|H=NuD4fu3_5#GBzemb@DZ)NZn6itpKyEJf4UJMzRL*at1M-t;f6glaiz2>J`Uy z!I^AgzYe&20HBiFgnHNOU))QdE0*8;DD+CVE{nUC82bCp=D8(_NIY|x(my6aB6n~a zQekwGMJMOXh&SD8z|F?zVz8{rtecWYG~It`a9W*%f;El&9+6VI-q{yATNT|O=P;3x z#|&{3Xb6^oqwfys2Y`Q^sZE!2COklx-H1K5azGDVyBM<0LZ>>5k6cuuReZYw|2PpJ zl{q@Kdp|)V$#C~44g)$E|CR}W6h?IYf`{sdjnY*+_t!J^7i#L9C`lB)-n2BD|NJ;+ z%f5iXc`Z4)d6BRG^gL8Go3=js%J~u|X(+6gE=rSeXQAFtm~YKSBW>jf36c}$#``bs zTH5R?pH_;;uIs!P|I5j=O0!CR29!Y*kr^Ev!5RwT_icOQWoAwjhN< zMjhw<`GB%k$2`~eK}?RQxK$#v->xm|QDFaWMd=r=w0cil zmWpQL`B@_R&pm(+yxvbBXR6G;J9)YF%KxT*FbSsX5lX{Z7qZ1pE#XRj0-kuqHL$EN zl%3_W3T4Z3X9saNyp|0}bhwGfQ-eHtRbhDf)W+oUkq=1}3c?qJM3a{Ushue1?lsIe z3ecxZmO*xFnlS9n^#0sm)6(5}Gu$BL&;A7iiR=?~uKp#Fx>2j&`K`9$f z1?!ToNS#uK7j8~CPF%mkV1N5XS0>)WFGF&0n{-=*Qt|6KZ4GX@53=^0Nhb;o=?4MC zOwr0_U5zVe_FxJEr8#5Z)_>OaJlF@Dm=_VYPTz`P#Ga7vcyWlD#(_EC_Wd25+0(EN zgM>)^U>Xik@MOSbM*2VxBwSH*aV>iQ?- zhL-I#&hV4T0XdiY>Di`({)7C*3oBDZR-r6QsuCY`F<`Zzj&0_$=WY9M{g>T4DL+DM zyl{hbZD@`^ceLb)^=KQhkW&X}|K#Y=;y^N>E(HkFGVmezA4`%-c=`-gcu{*Nt}1RD)3V6_f(ZJe-Uc zs#XKNaNqxoJvs&}?-V;g4af^Q8g;xneDj-=_kQGwigTEmDT5N$YhuyyVU~7Gqk=Ih zNbkO9R;zKhp~jQa_3OB!`DfBWehv2*zMOj5GxG`iiho&c>du4T(0IgLG9_3gW$R5a zss>WuT}(`<;jsaIc2-fChTsI0I<^ia6Ypc&7Q$Pr7nf)A(*uE4Gj;Mtl6 zN@YnOd{XqE*}?T(9@dOS#w?gYF(uWbLI6?1mkrZUeH*M<{PiQMo&05Q1@YGCL{(Po z2ZxbINVE#fL5sUx4pHd`LsH8j*@wqFygL4w%bVANV&MSl07S!?BdKF|(TWa$~lu(YhN* zllLw@{hxhXT^GktqOyT?Rzno5O{E+DbcOWfQTRD%6DCx415|c;P$({QF_fg^9*Vbv z^7D#%+RFVr`wy43cV*H$$~MTXpi%vrbuQaool-)dr%KL`oI^;iOibCjU0DZUoru!r z!oc#SY$77e^e5bv1F+ks-*UhH=p?_lT|&5E!Z;_<^pXaqup7s}FQw$qnePF|}oW|TlRb-V1w*>+zlM614G%u$9= zTfD{DWAFx0q{S&@=l(RSjG(TmOPa|amyA0Ju~y`dFdRv|F5Hr@X{aFpCZ# z1)Y`i`$%`SzIsh{xV#zp8wqK^+Q-l3BewYKhP~QS1*1%M;&J(S`0~op6p#e7Z2kcf zf@3DxzHWb2XW`jKxD@F}`-if$&PDy-_FE{VzfpN6x5=B|?je|`gritQ+{o)iP6WQo zXY+2+n8Q?HwS310lp$E{sT+rW_98Fy-$Gx0MG70XuS9CV0(L^o8@_4X0?l7bNv;J= zc_&9HUHm4VT@_7z6RnnC`HL1CxwDk9=Tzj|O90_(SzPYo{%=t+=w(m&+YG#!pzPoJ ziNSVm^{9PC&}zhO1@U1HD`o0)vdxT^`<~csb$EQ{;;SNs?Hrq(aj<>VMzp$lj*pQC zSx&`)e7P3RNwPX zB)NxM6A9a|zw#3KmVfV4WLfJVbxrft@iN@2TaRcphcIeu!Ep9w5@YS;nF`IV4SiPBz*nN3V6R z`Y^dlr(_sjr*ihuB)nAj(GE^Z8hJ#xV;gf%2R;0E93MWd|OpU>}5TZ-j&HeRTY5qMhnI}K$T z66?z@Wv5i{8nWM;SwNUF`7gZA9EnGg-dvm3PlhR|bK*m8<$~}P{u)tn7EO*;#~Ann zV@~Y`_^-)5?NV;m`S)#LB~v}44RmX>NVDLl)Rc(c-~aCL;LyS?1PqHHvBSO=6rL}x zqfQ#zHQkf@wB5*?SPW?GcrOKhA(dwRI9tenKDweIT;&A3l*4B`M7>(YOFVS9rO?uI z-JT>wLY}wpER{XXfupWPgNNW&%r88ai^NdK8x3kI9eR9nIr^(W+%bvfCKoG6y}%Rs zg4ttI6-gWt-M1%qzG-Y@)zhRNJ-%-F_f-lHQ7MyzuQQZ;O4Gn`(B^8AlkSe-t~{!E zm81s97;sBXAcm=D)8h*4s<3v9)AMMxV---C^P~RJZw-r*WG9V{Sx!Itj`ya_sZp%A(v%};l zvAHmUzXL+n^uA!JaYR}MOC^b@N3*mi!1L-2E!_8OlC&~eYhfBtb*5c953SK;=}KrV zc}JV}z08|E`Y`hG347caq598Y zXd71{HS8s08T8@@gH-8Tk`~>D+!+mHbs1s`mL|v({uuCw7f5ZHTqiDw*Py;8n6241 z8qf9BCMlig%8@3wDjcm6q2;3+1j8~b!cj)mNo_Gl0}AOhAw-A{Um3|#QHP!aW|L|v zVcsu~pOdBL;C_`&OA}N<%)@W8#GWH~X4?GgB+SpYw6U61lyapt38FfMFp zAS#!|eHD}Vp5At0ksfPSk4-b62%qb;zf!Es5BmC5Gtu*;S{>7b?(A104oN^&=Z|o4 z3E+KLs=q7(AV2*$X+bnNRlI1qHc#nU)66kNqlFxTY{ zmb@t!0aEmDY-K#+YZ3Hn`hWSj8Y!-fwt2Zr|)JQjlDxERkr`wn1dG6MHy z3vf@20~1=J?&f4={*6et&7yFlh(@{9keiO*|7lo$7XO58Ft_TRo7QyU%|ND4I$j!b z%I!?XV{q2QgOq) zbq6FYrmyny@V0!*UI%tev6$8y_Rg0sHmHcLUCR&G>df8JA_X6s(HO~41u{ac2eH32 zJ{k!<`Fn@$ndh>djHiP_P1&|L{Vs+^uZB?v<;D$wy4dSdC>lp<$srTE`Ke-=%z~a% zOBwGQZn|tfsh)B2r=k}-^k|^7C4XWZa+A@hx#EbQfsQ+R7gQRH?MVc9_t1oCbk}04 zrD#fSx3!HQMSZoU2~#j$+Gr~jI<~$rnll0-O!VUw9k+c3ZfNnC|4LgMSQAz>F2l*y zuZ3NltjwI1+8z#K*%w6I!wI#7qTXejT4_@11>1CScI={r-}l?h=jY4HKXqa%`U-97 zb8&#}hfVJ6#DONa(g=H{JoA)9L=|0l*PQkiF+3o9P*@hivdY8^j!+?)K&68nk9|go zq5kflq{53HF2n&H8cgI@WDz!(+3t{f#IOuE&;?e}SVuq+N~NZ!xvkE~d+CU;HV1rz z+!4AW^8GKeGHi}VOFl)Qqr##ahOqKPRn% zktGdT_9Gu=yQ6oMUZMN8RaulP~dwg0>9UhFlOKIin$+}%M2a~6WONRC=E+|R+ z-@c6NR@WJRtCI-=Oadq+!_BBjwUT8o2ws)`w)KqV<3zQR*ix4Vtwc=a&{|3aiR!!c zi~{mJe0Sw@DLHdl&92%h6^1mr$(c&8s~!v7b7_5+L{YO#&QHMa(l?Z!@*1(=PIGZA z(5dZmQ7jGNx-8yg{71jhWi}n2Jg!RK68&X022-#x?p3VT+4UQbjrU&*QIXadIg-rx zL;iMu8qINz5JDTk2$$M~Af3NV404+DVz-mDk~NKGzA*`wwpAOwREpKK4m>W;B@h5? zzlGlK;>o&ODzB*BZxFO|tg;-p7f;wZ8q?O-gob2c__RepNO5hZv zqalcQdN~ZLR(npJEq`hYB*nJE-i%rpl*Nb%==U~@*u)c!SxuweeWmZ#~vfVP$1B#L90rV zSMKa(mCvBk_es>(BqA7P*j-rx3urdYCrp*`9GUh8!6zK$AS@lqg#pVrPRj`0fCjBd zoN~_EK*RosYUGr4==Cn?^V`9Ko z`gu2UCNooWJby#UgvZq(ocqXiib$lJU(hmB6<=2Dj-VG8P-8Go9dnsX-=Bsk{C-b& zkapSC$34U%NdnuSRhe)!hct*ZMZece*H6r+~3$BFJ^Md0v$aR~&CFC!*)`L=T}oFhvb*~g&; zJFW580LW#Y-84F;xKb0ngl}?uV17*+FF4a^2EOp{Zz^iw$Vfcff>u#Mm>)Ox$rv%m zUu0#ah>=c-(7vXoB?SV&0xFh!Acsjm+=Dn6ned*cON>3YU;xEQ(P)Vl;P#+5PL#5ZDhZkilf%_LkEY!ht=fZLL~5W z^Tp!SN)F|Jy>Zq&EMTU;@7d{t;Sg8E?WJg94r0iEn8*!pCZ}zc1jLk%pN-PqlLO#l1)GR{CAm86-?I0>&9^`~C`TpB6ZH%v5k z*B3df8XS??<9(D5_&#MpLFMO~K*#hH;83OX_sd_75)sd2?-K$emGX72{dt5Dt;@*C z6(VN>r38$b%7D1oKbY045im5OSZE%Lre%93f`w-3J^9ap-*zmw>JFgC>hq^5ak42| zQxenw1crhLG)2zV=BJ`aJNGn!CnLH=lQX~I%yB?z#ZS)Uncfs49@g?^+n?8!pvtlA zM(I2gGxqMy=xfTiz%G7*HZY!}@Ge(y)g_%*b}}+TI;inLSHxe$gt4xbuJDYE)BV%) zbPIaKxeJoidJ7A5+fYyu3tt4!y|3T5pMExeyIC#%F0+qUJ##x20-ua5mKTmwngg_g zFpQK*xZ^_<2nlM77~psJ(06zD_lGPjm%kH{<_Xa9wFtl@0*w^!e@3PTg-#^V$SvYT zGb;xQfY2?VfGB~0V4^|AhTq?S0KUG)KTIJ5Bf!ol^oBHnIEaGa5a2|2nPx_DH;(nO zbSQ3<0ck+&GVVZ%va%tUZ9Iabz+jL%St7vJCz3h|pckStE>MDy=FkvC+dt^PuN&x4 z&M9Z7E-x-7O>P4Bf(GpJ>Ro_!2PAa@*`a`ccLmk}^-Y3TWb*|2V~z&T!OgdTlYIAc zGuo6?bK!vr0wdLvK}892af2GTU`bU-SgELAjziPNa$#AYANA3v)67^9ZeW63RO*|;lXk`S0LPd%0{Y)w#z(Hyi*>C5* zdgxpiGHO(u=C`n6S(|-TgV9(>=<`voO<#lAiKV<{piyvNJTtm1(YLv(Vy9ZVXmk4?(2DiY$1P614cJh9*-(C?2pujYP z=n{co6X3C;eiU5M;2OW1B;4>3+(EG(3PT{l?*4(hdYHwnreGjK+kZ^HyE?iXqZ(mw zymR_szq7qR&`u!kjxdlQ93NrtfdhSseSwgd20wR|SZ4+T%m!ZL>zJ2tAdo(jX)n^g zlk2ApwkeT99~DiH5}bWZy8z8x;U(T{(K?tW$^2CzZi zXBxkXeh^o-fZ?2eq9x9ku_G6Hap2g1=YQD!5I$IHtqE!Bn}!0KCM8{#;Kl{*2m=g= zu?m6QLA9)YC#JOqlsrJLezF-NF`|_~iv$MnQ3BZ$66^*zRa7=MOYq@9rQips5H8IF zJ|(>>$fhq=UGHI`L8tc}T|9hMqm_7w0x6K#!qf@dc3~jy9t4dfQ(%GA@;Lf&AjW={ z6^sZ2F^`U7I^EC!xX5UrcSZPBeXkYCUWv8!0iH@gb&ycskZ&6FX|s-;)+hls;HhT; zFMVV9V9uag2XnFmv}F35YCZPc)d_`8$2(X_cosXJ-)Xs^+BHikTrK_n{H7{r4B;V=ClQ;X_4$RAXuAa?XoeSCe ztMd9E-!B=@XMd=twd7}uM6d=XgRBVQz<(H?JY!r?ph0qRz=A2Alivn@3NDGkg=l*SdqV% zQY7?n?DGtrG2Bo{Myt`D{qNxEw7Y`^OxX(#wNVmMT7H*9Vqb?unaOUCsCJ0p6%Q~Fa^r%ILWnxz z($Mra>N>PyXyxBc5xh+Z@Vybbv#;u43c5bFWY<@Sd?3Y-#Qx5SbFR!%UBdWb8;L28 z^@>HhPO37PE1{`IOe+!pN~BILoyk10K8};A(JU1Xs2T$YXSuIFU`bjfth+>tCEam~ z{t9%y*h^zb=i&MAB>SF&(m0g8xa1BNrTC3Y&{Un;0xk~rhi`PmQFAbgHU;bLgFNk@ z^&qn?41Io0&>{kGDFQhIbSX3t6$#kD>U?lYt6K*LIC_nK`8 zsz`Dxw#J~Xp7INs(kMEHxZ>mfS9imZ3`G#(nO7EWxqMgs>4|No<{x(yWV=O^_IO#F zTTasIC6>apD89EX4(k~L_4L0#B1cc8Pl@@PdH5UZ5=|l^s*eqs+dNbJpE%?e_uRJE z#t)hOjP(GG9*Bd{i7TRm>9H=kY61!`S^Y-U-dxzC*dV%v2%@|r^rmosi~g0@bS6}o$H&twUSNdjZT8ra zv^}5Qc31YmeG#Ph&1z>Hrrr4YRA$Ydc9zhHzaE`#d@S+iExEb5KU0x%b!|h+>omQ)UyNYnJP{eL z;CgsOG9yPBExyUpl@+nhyVB^7*C_y0EMQl=jkP#YJG%~k8jHt=$Tt{7TUoc4NCc9R zj|ZYc0<`<0>iR=+WM?3|@&iOaEp$B3(Y@x=wi^?PdyaqOf%#nbn>HPIS96@Wp@u-| zT)5atVLpYFn=o)?_$-mW7I5npiBQhFXO--e@U*-B*{-UM3ACT;XyY2I?xQ9Yh)T6}6gO;^|T{x-?P^yk^v z4nc(I>_VF5Zjsh3%{H?rf9Z%P^YJ9Y2eH1-(SNK>OxS92b&`M1$+x>)l@j|u`6*z> zA8IAmKbYq0It}|-`w*n7)VtDbXd&LxOQ=m?j7GhMiU4>b$6Ti)G*aQV-fq=DMGZ<2 zoVgpJ^47>yYE%Mv|1w&EsP`_qxkjeIvPwk}-ChkB#!F_B@H(4#e;UOv;y5?oU|`DR z_E0V8(|1V2FCqI2y8xB9D;7h)0720+++**ekRK!TN+P7p7+mF-Q*2s|9hSfJEN&Y{ zwWB+y(Xe$GrfTa9cC~_XDdpMiHyhw#ZV^>j8k2OzZ~F4%3lx*x+Rj|PSVhkSA!Gjf zI@e=|ZC{k3u(ohLEJPvW&d$q}XRYFuNUV9wVZN7s#-_uDp?NCnDVUf@j}!p(*{nBt zDaH6Q^F1$59A94xptHrV3f!8Rht6~|UffGCrQBewEv~~@Nr@4dV>UU2k!{phn6g|i zVkRWN$vwHyy-u&6W2w~pLflYu#=<#1-8fD^_ekzXL_uJR{0_L#tfojH^Ww&yKS*sd zmVTwxG0GJpa&^mFjhW*rHO3-NPahp-HmhKq*O9BzUbED8uaDp6VS$;ilJfP@!|kPc)s!Jm}a=x`CGn zXmys7c%MCA?v!UHhpc`HHHApb_mm+}2HsxUG!V(pw$9&h2z%oeBT|1DvqsAW3l}ms zIl3HqsbMr0(*!$1GvK$@j*|(q!esP)b3gF4xW%tx`=z&3{mSoFf&{)t{TVqEy=ak2 z0~fx+zh}mN=v+Ws31M-C;&4G*M;vG=WvxIM9t@k!)PV_6ot&An)>S5%`h)^go_FMq zms%Wi1?F?QQ+}fs&lyb<6)4?Rb+Sv#Uo8%d!Y-Vw;tz)B;JWK)FJxdeU5hToY-a&K z5_#j%{7kVUm_{Z8hdnYakrNSh>*y7xswSmxQni(gxX0o9tzSE!QY&NHn$ArGSpO^2h*uSwsM>T;TzTo~jKj|qM6XLc1Gh3zOzgVcx&=OOZwk}gI(LSSn zzy3tx5k(K17F?4UeF(Fy)i6KyV7f?UZ6=(ggKvTT{Qa3<1il+jTw2$t;8EW>L@={Idr}uQ3I>$ zvR1e|#%%8dqkAmh=xMzt@Ek)4McQ6Z=zh}{`gWR+9Xwd)|5@f2S6M5a810>SRH5a= z_Dg)V*XAdTlK6a}23_eEKHC6*gSl5m^NF&dDq6vX`k+!x(xR#B!$;;+K+X)3R@4dg zB+%(WGTJCO=QO^D0`6Je)-HhtmHWcb1S=OQZ+{(VPqvEzSDv5UpyjLQ@Ti!Yda*`i zL_N(~{xWd*Vnv>9mnn)C2}n26{rkKJ{+aq-L;%RA5wR;;Vi5Nnl2UOB$!Mc?t zhHm#Lz$Bybkt#0b!JLSq^UJR!X4Uc zJh0EEiS}rA$K1)vY%~y6u~2V{8#bb4YZ)t#(mdtOPvS#GY^9!DU1Q%EZwbX3)cOswIC$ECL+J(V=&JAkF?P=2 zq6O=g-L{RhZQHhO+qP}nwr$(C&bDo<&+GnP_X}>&K?Rjnu!2=J{y7IRNhTCy`4n#_ zYd$OnUJGRNMgI~q_NmU}Brnz)p6x0NNr|?;N565VrX(ggq;&5SKDJ`Es8)bu9w@dQb74VB}HRL{o zT<+yH7qf%z`gKjme45%uVJzCuFhCB` zOwI=kImr+WM)J154l`MJr~*AjL;J}Rc*rzMiazN5Gnj5(`5qkS06C056`|6SC6D;6UD(nf``1Qd3tu|X zHY6*LfLE>?-r(yWVrKrky+pm|@w?(Y1V#{3&oO2H<}+zybrb_#1XNOb=0^9xE-MX> z=klA%Av;mlTVR%|~K&uIFt{FUyR@yANvZvuQ!y;Bk8>iB@1cJ`@?MaGQDu`dgYK zBo|whJ{YNVhj)Vc~)fF+^3W#jS-Z+>ZoqwXSxpAm7V^RBKQxeh+aIV$P&G`bq%{sCx_+W z5>$Ih{;Gd+Xt1@j<`IR}Q)*HSb-iB$_{PTLL^!vK@!wTCFb+KXt z;P+o~pqA%LX56dBHV%K+@D}v_9m|JFrBY{R*F!FgVs)(=lh75D8LdP?xz!lnzABgt z5x-0)DeTT+y7jR)oqdI!gQjN26)lh0vMo4~=Eqt$Cp7Ag4@&C}Mm)YoTW6!*eed>S zO5*gCGvAKw%9v2>cXG;ed2j`E)NzhLCu6ngzkj#87+pAeRsh{L$CWF@U+rQlJXIX( zw*7L>9x0x|W-AtL7rp$NJgkv$>V}O}ouI%Fhmt6O(fD%9Xy=B3KzMw>rZkR`Z-iFm z9@5Ze^CA%;w!EQ&F8&(b?_kTz%b*4V_vl%dut`e5P(3HpEm&CEk3%zN#ljoDTXlpb z-UEDb1k9WPg6H+1f5(x4g+)8>2mrTLon#%-sRjj#ta^}4r@RnxhtqiAB`uEa|s zGPi2n_KqPC4*b&_n~f?7>t(eMxzeh#^m&?ujLFCMlOf`Khpr*?Fn!%k5Rt7{sw6vf zjwZ2MOTgQ{ByJ_fsXCjzv(6Fd%JXTjOi*^?SwSs4NE%g$@*=2aY85uD{R=-lQ}Ok} z+YGbo)k0pP20V1tdcUIX^4SEeiu!q$vLa;qmI%0ECIE4EYPKisv)$l*)(GiMqLtDd z{b*VeY>-qn&F+b2wwUHM%?y0k%y&KsIgCX!MAin`XqSodFue-=&Ihnu ziiP=wS7$PaPvl3ogU&XL*4tiI)3QhAI!_h9i-u4*JL3azbGln_H(z{vPe*aJG2`JF z0_3P!+++$NB*%&Dw&}PuE+k{_nu4sf*`0KBui{y}ol=kgjcfSki8M!DCwV;elj3v0 z5qOM_pR^aODBCBFl-I1Z>f|4SI78!%pMG@0Hs3%qD0{CMUX2R!rHda}<-NBGi2qc^ zr|eAur1N51D$ltNIq%w^Vhw>kfgEs87AKolpSbw;B~7|WWs?0mYvISvlkcv?G@9gaoc&}B`ALA<~$T{{B##MD`oU(Nx^YDf674V<8_xP5KFegx}8sy3jRXWmI zYiRe8=06^LIGvGDj0Oi5R>4=-16jLYF{L!mh=ilghB>Qr^A@PDK748N`t`S-GCsAs zKa?!Dixg7MlRL{@Xb)rHP*Lywyg(V76O!$VorAPn_ePa z)KutZoIh-f89#J>X`t=!b6pkBcedqIm{rQAYyTJebG+w9Xme0?1RcWf5`G@2%K9fW zxOlfa%YdPHQ9|q8vYg}j3@tWQ_5I@x1@iCrz4cV9f|?Hm4szvWl^DSx2Ss}3hx~Bv z6vJ2DmQbCc4Z@qaLZVKVyxt=dWu7853E5%B8dg11NrV{!=`zU(WvL@T0<#;}FDBj~ zaO^SGCjgik*zG|nDjgl>woWDE>A9m4dJvkIv=pSM2hCfB{g!Ek8U22OQ|t&?|H`E# z%z=gZkL{1{q=hgA5?LQeOXbZ3`4HA<+36F-$SW}nhEVfj3U z#zQkBH%Z>R>##UCNzx3Ol(*(Y%!=KrwtW^>uW;poF+yt<*V{Y{U=9<4mK(?FARFkW z=<^ztvIfuf>xI!o%-Fzyl>+ zAJ{3ej63J63ta;u8nV3F)*@mobHSJDbmjx1GD zp9mD2b^-o8-damF?q(hRfm_0lmloXBHP2phq_gknV4Uh%Z`RG1!>Chz0X4`7rO;nM z*FQqh{{e=w{U;d8!ocz0_>&Qzjh^xUdX4@k3}vTh`9IB9`2Qc(SMK1-Nm@&^ivpf0 zxbbjEkx#lM$eiK+1i@HH_ys{vlsM-Qflq|^I+=m~fzIcFi(OBIia+J2U#DEVJyzRY zjj9hfX1N(WO{W<-)%Nv)Ft-$&gx2|%5bPJZ@&5TJ{2F8P+TsZK2XRa{q54=_~E+-@9zEd)HjxT0eA?>{EG0D5r)0XPK6 zsh2O@)yk{R-&2iWyK4&OafD=pk+Z!657bs7naY9N+{ZU@*ZP9lo7r8OMJIN58xP zcHSvu@Hf8Y7vT-i4+oB4od3-4e>2f|qOUe43?PB__P~AKSbH!393mK~d8H*ZevhIz zK>hY>Izo(4;r#D`TzxT&bugK?98Qe<(sFo!BC4+{UgF{H1=J7}e$GMP6^JiXFrVp4 zdo7dTC}@;eL8PBaxse4ND1p2#_`A9j&LKoy`@TLk*I0Y4Epl~S3$cP9izH!ENwJhd~sLpux|A^$w8K~()PT41byvMCWi zgb#v&TzP=W?SK2%yimV7h>&1_)>s6TelW{h2(m9SPOQ+)Z;hhQ+nY1kdIaGqISBl> z%jZ71RP&I3H%9tAzq39q7-eO^3@Xg~ZV@J9cu4K>?{sM1eD;6 zt>D+L+ED8n>Y^1$cbKx!IHabH0FSwgR8*FcQl4E8i4 z94JA2Y@aPgb6WnM-^RQUn1kppp?EX1UsnDZ=ErMqr9H&p%UV5TR3u>k&5b^upmW^< zm4bgBf+wX-!A{=@3;8Kdb)hFTk)La4YNY8Ex#Ug5 zbKf^=tzom5xjDb_^J@uo4(j=fTC}Rj{NkdA72_Ek@tdL|*~tZKK|_1Wh+N9F64J&6 z)DB^LT74cgy*Ccs`K`=lvV#Tvx~f0kTDKErqH&zTXT{dGYl8$u&yuYR@c8#RCr9Ss zKbg+1B(auS(MvzkJ(h^-x@@elOaN`QMmM5ne-sowO>1K~wlJbziIs;fZH{K&58JDW z2@Ix`HPVH5+tMTr@iCe%{d3N*N~9_M6LW)*iUUffE}G96?Em%K9+|`$gl!vyS}&juEGDQ62^Y@$*1p4QPmw23L7Ko)XpsbjEIfdib%tjJTV&hJV=7} zkX#!LSWPaG!#&;@`Htq(;ImzyVp6J(@`Q-;UFAS)xBh-WR{9*;aUYFtBjVb=)~>kR zxqwA4TmMXE{f008SRahkM~#6jv`aqqswj$~@f_H+8Jl^#(aF2Qit|H&)X0|D)q`|x z*)*TucKX)1DJ=%d$3M=5OGDA9U4%SHei|Z;WQ0^E;7!QK2a974hL9TsrT=q<1*xY0 zpxML>x`lQnmt{15NsHTlljq7btJGUz0%G~{E;w5sDY#7R>lrBA>kXWF9^rGRAnd&A z>(|(0YjH7}k5sr6h;8EgYc-)D%;XW^F*sZX#1wzg`;v0k*kV6*U75-l>{*FdfKc;_ zfwMA3Q#;EF&-tqga{qoFQb7xyB#?U1G<2{%of_;geVCU$m&&A1ZOO(Q2h=jb0Q)Cc zm!ax-^ACy|Ecl(sV0g+L4d94~lg{5agXmmW%bj+p%6;zi+4S*$BY*78c9D%A8G)O9G;KVL-3j zjwrWfNR#(lqjZj6Uukl(Pr&_zRhA|6)yuI&kaky+VBLcZ%8i{Bh8AioiOx8e)f0o` zEDaA?zLoOG!a5(>r&)hYv=sy;lmOb=>ZqW9D!5OhH;* zeNF`~R)Qcw6Tm^_nl}eM`dJ3^!0wdp+=;$+A(5YU8%5T-V2o)DNk{}p0 zAHIwN`LYaJ%O<)+469~MQoR>4VE*d@T`Y{v!Xac8SuF|*o*wogJ|r207r(N5g7w~K z;=|dv?Gl~iaHRIg{#3)XWPqOONuuIK|Eh8S$ktAVc5yvU+C#$Jpkj>6Zq>aSR4RgL zM6xD(Pdm06`SvDFP5IR4tY>3$*BUBR(y0H@A|3sY2ZG@9InZ?`)5)o{E|P;c8+DY1 z>ffBEsM3P-n0vACRfH;v7t-1Fl_DW2M@V(cK}qDs5GLv?9C`EQxEP!zJYlVPOtM|DezJg_V~zBoeNP9SB{brwTvlFWI?Au~HbqTtBTktbiy7l#+_|L!JR4&w znYzb^%Z&IV5w>dNX2O=c_|uJ!yj!EM0gc?)V&Qzwz2i|XMXWaR)VBHK0L=rvtILEg zOFtQ>Mqb?)+vhQaTD6lmE3%<>!3_Q|JOHslZ~o&MvZ3qebj`xF!22ukbmzP1 z=1Jl(eLT4lK`?(8XqwTUMfY`xZVNy_eIck{kk0Q>WNiz!_d8t}(4?CZ~Eu z#4TzbDPAt_c|th31)z}sQi0VTX76t%EHNe#h*xjgB-@5Q=uoRfvof|PTLhcu+r)xB;HZZRB&ORydM(h)>F#B-gz zSvs%lEvSW>di9V!&r77goDggndnIn5k9+@SS^*RPI$dK@pWy7-QtGc%BF(f}c4l8K z;bf*V1S{6=JFock$+-?t2T-_&yLapE)}8_@@D|w|Zflr(`&zSVSJRXxh3g&VCa(#O z2s7VcNLPHPZ9mnxo&53cKN(Z;^}`>O2A7}S_9)|OVKt1KMSm-)br^M%?)o%H_mgU# zq&eC7d=>YjhN`^jWF4L7W9~NRRlL%Qt{#r7{Hzye+pcbZs6N)=f?8GJD)vpW3ot;r ziutohp$`Qv^0?aPFF1u1c^%0`-<@qnbW5LC1$`fWm`2LpI1=N08&VI=D5D3yrskYA z&gH5oFZ_vHBlYz1=7u)0vBUn3VKM^h#+KgxR8vB?*pcGhsCH8(#VNU&<@-r`nOaOI zds(TF{2+*b$8#}}Rh%0Qk&Og`d~4fjY+d(x7d*P;9jw%HU%N_C(x&u-4G84>cfg4k zyC8F74P1B|Yl9y3n&&%Aop8V`Cg00`*kQ|nD{VU5<5NxhtOti+k3+&b*WI4FuJUZ# zd22jKP}n;&uf(zA&nHVNRzMxkr8vs1)G&6m!=JMBxmRaDuv<7ZSXBZz5+u*&?x*Y1 zLv1JbkZN)XK@d`-!d!S4n>8ehEMY#5AA2W{8$oGMV0c6=NBL`rdQ?7HYnmqClHH?m z4Dr5$kC$e$+zvc=_>5?Z3nG2AO#cyf*0;!0{g{S+azFHHcFXl-Yu!8Z086+fh5cI$6AGix+UrXf$DI)vn~cmuCEbfEQPx1z7= z#eZpxp;S7mJ~)UsR$4S;+6teFT?vMq=5*}-xKM4;R_8n%acYRxh+v)E0$wQ1ckB&T9L%W;BAG0Kr1eQ zaYWl4)`zNR@Dzynb9T-t!7o6UPnASl8@9_rg!l}_(jsLsz_$9S6=@VeNFw#IoRuRv zO*$sG{z{?(y)#eDIf2C6k_@hF&Hef~SkX#~ipoKy_-V_xqv7`3p?ESX`4Ver0XkyX zwRO4w4XBt}XNN9&%eFT{FNQ`M>y7RS+Sv7&k^d0xw^&amcjevz8+IS!We_2<_{B9h zwi~{QW$8D%fa?b4na88wH(>-pwTXoWF>Z(1`F*aTL~)(A57#mdbhArN`ubQ6Wk$EfyV_~aywtBp5FEN+nM`1SlF+hUqIbTN) zQbfSeV}Q-1pt{TMM|;1K;YtW8HhRh}wibl(1!GrL-rOUW-|hyFT%x7-#0y3Gm07)^ zp)kal7^Zrf&0N1wuYWztZ3DK$kB1Z%m6bt1pfPEMI=7rQ>;kFKkFV3|G_motpm%a9 zFK6(f0sct-Z3{axvntK8%LE~zB3~r^gN#R;hEptEdT(0)Z+y-L+%&>>>uLf@t-LaVtK2T?n^nT;xno<&l7ZR zp2jp0x?U-Zx|VCc$WhiOXCo(PgXY#wP08q1=qmG(u5v;%r9oy11r9vcHXJ3=^}9_f|fSP~b#wcB6C zo~+JxW&0baG_Q^ihOufr4qy#Pt1Mn8IQe+w_m!^Wbz7Z^z&gjl@AKS?H6G~Yv+AB) zG^6YvsTb&%wMONqUBObvqc&?)VSH}mRKnvY3t}zgXk?5(-JF0I(c4cMSt1>aldW{< zO!mB;U9C$i5DFYR#}x@nNiL!Sg9*~*%m12T&7>yd7I)eo^wsXO4|Gq}n~W3C@0Mll z+q8|*S^lmrcnGb_ql;dxUQTSNZ~K*gxu^)E7b$!aG|o;z9POtG2U&YDX*t$_s<&iEO2NfGcM!>edHxJ)`U{qy`X3b?I*IV9GtE8>6`Foiii!$y#?yj zJUL}{PEHp<_H?MZo&4BSz!V>B& zqPn(H0pJmEGmnVmf+yOn;Ca&8y5NFa&SZQXpGDJ!kIRt^r=0)M{E25QNh&3LHI{%O zo9buKN*sk$GL#?-WCV_G5t0w^~XIOA4lugeWd)#^$yU{$$)JcyTGD@U1j!T;!;uCP8WaA z!WO~O3tv9jyRYBaBELGeF0uRH;P=HfNs_yC4g(|c<%+RJ-Q0)e?}A|wegQn)&j~& zi^R4?KrduW}kqt4!v}bD+*OZzh#edC#7%IHL z()Iyz8|DgXra(6J&Bv z3eD`1$fO?Dt3Zj^0b6*;=H)d~6K(~$GGqr>SeLK@o)X!?DLT~u<=%*x0_DomWk*L% zZZU#OS8)pI{h3vkP7;#bCNa`}@RW3u6~s2UWDd(FL?nnxCYtP?;`fVZjXYqKYAH!Q zQbMiUUeg&EnQM+oxw~xOj&`x|fQv5f+VtOcQgB-5xcwQe#^O@rlsW|<(UXY79|N3TRK|=Kn($k2NfS1!P z*(P!!$g@|YekG&F;wjN;`%wLCU$7R(hummf-}n8&PP~^(+`@b3vrs9E!%VK``=PTt zR@0Cfsx@uQ1xKZx$}qzEnFFGhRilNvsx`=1bQ)yQZ`g{_dZhPg_MPI!`nfbFL_e^bGGF`3hS-iPYAEs(GQ2c2e zAZz8~4Bo5FN@75hYem=ALXCCf(wA#InZNZB_~<71q2Kk+5hh?KF6ep;<@=4Kb^_CP zMo)@m*gR#axi-1MUzcT0r~Hnx_X*qA)UV_>$wOJ=vwe@eB4dry_iQhmycss!?Y@f+La)wJ=Kdqej1|{{CxCD)-lw`k7ki_zB)PA7U(2ry-GBqO>g8vY~$ zTuO}?hE7nrl{IF7nKth3=XZt1@rkf6)auxRYguH*}mgp`e1s9H_OhPBdhy>-^NlHPghCJby|gjl5#`z=^& zq0Y8cj!SqZialy)ezu)nc(G}J=Vy^ZsF~F*M|z-}2djTAn9nIRlik$D4FsDzf@!&6 zlE~cq&fGG-6fUmg!lBYiYjU=+w^m!kqMwXkx1JG1(YVtE2PpC4!smgL)o0 z%QHbpOtaGN(@d0nPgT-F@n^SZFW)W%e`Z`Z{v72r2VI|UMlNot^!i5PHd>jxsV`a6 z&(qh?4_aR#dAHtSm8LW$z1Yu#lJp5-0|^F&d>wSRc2t=?`au?%k9=}N zEHA_>ja&8@(#Yv__ov0X%d94UZ9RicTNn}yDDK)x!eLdEbG<0{j6}?jtOUUKS_xbx zdK(07J!)N|*S%4#Etx9CSbYvR#}~cjyFQC{S781hMmM!cv$OSnASL#QcYOB1)V}yt z!m;qlNx@)a@V4O$GX;#o3GY5pvX$fug>cEuODIA7Gs^AR4aUqen43YC-zVC~!dhL$ zmjh6>Y4>a($&>!3>aoq%u@ug&V3$9rnD7?<5r&dFw%DcMiulN)4*et!cDL^ANWwuc zAGv|i&)B+reLM%ba49`=^jg&9dOrLOL%!{D=Bf;G!MDY_BJCTM<|R}H(QczORO7X| zc1KhL_=t~Cow6I$JgcK7iHgN*En0P(5}HxZ;oewh#3p|iKCx6;x+a(D@!uy+a#p79RUR9*N{CA(k8sgiR%snn4}-y}FW_>?)MF4^CuiUis8g=9aTCML`_};YG3gnLJjqGd`@@o=)so$>+S31W;~hXQoH41zng4hJC;rl$egXthk(f zoRusij(K9L#4WHr(14`e$TTYH9Yo2_)QL-iork2I;vorBz-ay`1d9@2@dzD=@KHAl zY?O!M+5M;hNzYrv=$aTBpO%~Kpqx>0F9Y$T3|=Y&g4}917T8=c7e0&`LC5Wv zi>v_1Ga#m=;_X?ST?~B|vpbT!K@X?pF}xjmEwi&6uBYOaSK8SLy~Wj7A`QqQEM zy$qHHlv1*lUsku~oeO;#Dz}VrMl9>Elp9>{ouN)6f1*=*mdwc33#njNOBn|I3v-W0C zsGSzz5l|b+{cL@1B-P!^pR{@VaxqIzf%i?5*%?)mzN`4L&8G1KYOT$v9h_{_7~b~` zUw1!>t=SZGtI}TjnuDRcs1?hW-ovmAvD%;?tSYQy;-HQ$y!GD0c-4fSWV~yO@MQSI zlkU%B7OBI~92{h&g4>TFJE9boYgw_+VYQGI7(7bc1z~edcn#5B=x)UIXoveuUDs^+ z(w8BFfN1@Z!aH-gRp}tUXjaiTnP8IHB~k&_Qo-&EQFfB#*lf-ir~Dv{{pqLOR20a2 zqaaU+T|vIUof|Q#G@>AC6g)rpU3j?bRAB8NfABbkFZjjE{PX`n{5k#;@n>RV_)bc93!-`lCU{L}6`U(JSZ4^kS(QnYe?K6lN)JQRj-+CY_FhG$*Mwaq_ za?9dG0bTy)1pJHYB1&i=QfSa)kVAn@eMNGDM*NYVd;o?a&}Y z*+f46bTbGO9=P^}1$1*mWfdaW{)@P2=||xX@n5h%09exBgqUQ+#2PHdCljt@YOdKnmS*x)bXPwy|+-5e^vFbIU$pnX3$ zgcmW?UEYN|hQX^@OrJN*A~XcxVG9`$$nVG3=L8rX9XrV9?I$YhikgbjLf^C5 zf!~<2^1Lp;9svWrytt?!5IG?s4PbI&BH+hwQ#1j}dmHSXpJR)Ht9kx(p6&hEQ(Y|2 z50w9H9miY1Z?y|}j2aEl_$yw5RuD-){a4!fZ`-n8+1D=0Pu1kF)Y0#Dd}vqG<1PK} z?b|P6XeWM7&o9zlq087lY<}G67QpkaGW0Os(go3;xLew9tmR?8I}v%&)x9Aa5+ZoO z$nTzbHP|9FAe-=kKAa!%BRJcq35yvqltK6?pIoreCM-^krhAjkeLo_aT}Ul@Y> z=a-Y73knSE?=h1Cqy#=nP=F_JzdJ|7!R?kBh@Ck5;ALB4z#u*fR+t>%f!P!IW&wl0 z-Wn7bR2RO&&AJ}>9$t#U4F=4PK_969?u*{#uB#}1Hv)bC69^V5`pFw*^?kWw#)#6{ z7Qp!_-ONHnYK{UDd+vl;FPvu@6N}ik^3Bjx?Q039Y)?2w#+?!3Iy=@=qwNe_uGETW zB$52Bw)_Ut=rl`YEm}QFcDqqp zt%+(t9sdw;<*N$n_OMBg8LQxi)GKX0`&*itiUSM!cxN{yo2CM%L3QJ=0!gDkOAW6; z#Jq>!SJrZ_YG#@1vbnZiA;uaYG{`w|a9*-{ifqW=MbErhYwiX06j z$eOY^tGru^cas5T67PL`4n9EdW4ay>Tu-XwP&!p8CdeH#j(K0!yjYq!vDhfKhKiDd z*@2~u^7GvoNUryezwtW|=T3Lrg>rv#a_viu+m?0Z& z|4Ep3J@>0m*2k!kJmr-)GnZQyhaa!D_|+1guiHK2G{&k=?_IX+%O-mN$r>x#x`O+n z9n@FuPD{kKiy8iYt&1P+&YE-4=Mkcmzipef`&?MAAL2yIjck@~m3R#f)?<1^eoPc; zIn5oCgWq`Y(joyMvrP zvQW!a%^3J=1;&^eby2l5(}xld6DTw*3FvwXrPoV4`#pVY)tGfv`l#f2-8QJ;)ix@N zc~fly^srs_h;WBfVnLry4=Rkw;nB^LAyn2abo;m4737{4x=x4TI765WH&J}e5kWA8 zYbUuUGQaz_4^vB+$R+U$YOmYak&RJQ4_F!k{2^%LsP+BY+eB67ZK-y7ywXN2f@p>n zkCy2Guh6%&ESQB*d7Q9(1~6vHsLpEGSPsrFp8@qapDyU>*qgTrD-M)p!0rGGvz+^m z0%3iVTpBV;la4UYD`<`Fx4P%G$1C&8twG@Y!&SjPsi~W(?TDT(Ts$9+jq}M;msY7B86&+YXIHE=;sV zCvX)sll{ebbF99!+ zraFT7+egfwbIsDSSU_hCs!-}q60g0?&^BCBy^(Znu4(4&V;GzCVhSExAiB~gro1im z<+CmC!N-+NjzP~(_5LfJh*@`{EM(qs zTuiZwa!BA5NY8#C62B4v0+VG4pMrO}aU(I7SUCom+V|r2`iaQFm1J zo_&i{kkAW#BOT6$N-44~2`kZ-3JoUs>ruGHNbG}RA{U^eG9NN8On-(0^}*=Ua7YkE{U>xR1wPjQ+OW% zE6eE>u^mn2$Wn8`vjwMA>1jePE@1FJIU zF7m4XV2P@Fw?ZKO@4NDvjL&erpl1N~bnD$9U)iJBomuaNp46@jQZG|wV~E^LVFQAephJO(*8PZN0&*q7mZmzbO;AkfL``|*5!bXW5nm^kfUyZ@}*UVMJBAAmp;F~$7^68OCLg=F9JP6R!XZAtc z;w0LiAWBtQW{PW*$jc4PO~u9iQ~o`aVz)lf^8-@c(P3uak$Wh6-MRud6M0Zeu5JEf z&tUL6MT!)Pq*jUG0veQotzsmJHvg8_h4$>sx^L{9*1-UMG*|g*#Rty}Xs?^1!uE8&_y$^ZWu{saUqDMQ8 zE=CvDYn=M8=Yn}z$1Q!w{GSx{6eE;mY&n4>erdn^i8B8E>f2}ibX6%u(*ZybRKbt- zfbqi4Eca4sK7cAHtQq-AW-g2BMYqE1U;E39@0-(c;IRu5FCrk7Kuxve73t#VQ^Pz- zE#`gsoZ;|pjYqZ7ghs^oER@k!57Rfk?nmAuTg;H!69=0Iuia+ySe5bm4`0>B8sLJx zj|^5qzSyu(oRM)wq#IxfwD#)5#9wgKVllaEBLrBF;W=Fi^B1 zmY!OayRK254r$b4l55P8_t1UUPf~nALcJmm3at{$I%Jq@HqUBpu zE;QCf#5|I%$qjmG>13fwA$qNAuP7yJ^%!2yq1c=hHsupw-t!~|J>bdH3(!K+VsT{h zSPDm#Z%>ZrB0ctxYs^s+O?v##*?_&vIki`Qs%$!GyH}6wJv9#~EG=Oa52pYKqSTm^ zNj*7JZ;t8LwHT~hT~l`Ae)>yoif{OrG9JhmQp;?k*mH+suXGLGxmQ=z8%Fdh4mh8H z2(Y3?JuxN3>C5F}FD|gfa+4iv&oy|?Gd0YFt(qD^_~#AeV_{l**e%W*YFTkZD2z~~apTcx=*JX1 zV%T{f4(`s#7@PM?wr3;}OF`1iX7qTO4=OQd~ z-0kaFXyKd~uLL4WQF$$*G+`MvJ}`cw{_!pa65cKpWdw4g$YTXD8H&y-Zd`ue-_$RU z%GH#w1&lH0AWxbhHEx;JIGbBnsi$5Yh?Bu3gH?z%=@3f@;}Sxl?B4`5mpr1fM-v@k zC6h5-j>vpB>?iKdoC#B*S+vtns0g~B69`0B#@mN%LJbJd3)IThg?w`m9uskdhPq^w zb^!_F4 zF0(pZUl^cO0(j9vx{jo}j`}(gQWAJVY~Ny4QowFJ;A}K4k5y;G)`&x7~~}QRCp@P&ruJYx34aK6>>|J1i_0nRL#h$czal$ zmHsk*A0pJnx3|9aDPhb1iqvE zu>n6_I8tU7N_PQZ`l1oVF50?_q3E#El74f(Q(y=-E0B=JN|qfi+DXyez|eO=G)4k} z@b2B?%qQfyA;IzPN9{QG6|8M`wTwg4Jon{2&*GgjvE`6?Vk zH~Vozgl&4{|5&D9!umzj8Bm`d z{xZ4TLdP*V4Vc_HEa4_DjSvJ@Mc+wAfB;zXv@);wEnd9}9rYPYOS8RxE+#J$r37S3kFLy1i zH>|^76^7v;o4w_w{I?5N0>duzy)t`#uJQgR*@%ERsM}`i0hkiF z=4LV;^kn#pE&hfesl>3VPQhwglDrJb{l_T=XC#&h%^~n4dE$@8r%hv#aESRu%vK6| z2A}rHK!zMh zv_|fl^VKx3vjn_J_YG6-{LaIMRQ^5~{Faf@EM=BXCqg;$>!q3de{F)X@$hRofjK~D zQX5Gj9O9~DNwKsM!X1tAV z;)zS($tYG8^xZ>q>dcn=sAXvQWwr$(CZQFL;vTfV8 zZM&-P>&|=Wm+quH*~v-v=lNJCCu7Yq9lf+m*HtBf)p$D-^LrV@=uO(~CaJq?^Oe-v zbUV$3rb}l6+IvFCA%{tFM2xtW?EsGihg{@Zr^K-cr)WSjIt~#8$X4CC{1tnnyz= z+Pt3i=AQC?^0sHtLXETR8BA3a!uN=*U(9!K}=VI!MF8N;1c_zIp)QO@3z zS#-7SVQMcwqJXjjkLh7uWihxf?BOz3Rq--G&tJV;Y&6RJY5dh9-}XH5dJ2=-etLzw zMUMlKyBK|zUL7N$+l2eubG?12B^vBz#=SRGg3!II=~FOvnTR$O)yI+aH_F4c<*Z~> zG9qN)S<^YkeH+=045D|z%X(ER@y~6}*}8TGfuw69r2NsH-H~Z|GLUu!d%QwuBr<&r zHsY~d$eY(LZ*!Xt=k3hX<0jF6t}UnxT}9wX&ero)9EV-Z)qp z{nQg_`Gw&6lvPW?&gSPrbs8n?jYx@xXGp9Ey(F>IpM={I;H{LR;91o_A5mPB1?a@U zOR9D=l(#dvtSZ%l2{vjLbCw^~iDbjmNo%4TNT|NV;O$V7WxX0{Wot__nk4LsQ2o(dPDBvKo!}zy4CpJ$X^wB3Tvw?rxoC}GyB`xHHSwkt;ZNhr*B+G`NYCK{ z1&y22#H^zaCXU^OdJV)l9yq8bb6UD|CwhHVxtJ{MZx6u(G~!n8GM`Icv4FQhEBp02 z*$Oj2+JyTQh26fEZ}BP-$Q>kP)v=?yA-%p`EU=0Q%${Xd)N?wnO2M^{Omcf)um&L* z>3VayKaH{{D_fR7W^9cbRY(c-;lD&ha zoDe+)0_T`0x~du9aSSEE>2 z5w|H?WA>b@eyHu`zh^PoblYoo2TbtWkQF#kN8iS8>D+JZ(ni8kas9tdyP6pp3*X18 zgc)7gE^n#wD;e;7UDOk1O^H>~Nuj%wmqs&1>`daF_}y;SclPQW&~(M;&hsUWwZ5f^ zeiRkL*+$6ReQ^70PVjoi7#@uYBGCRC4-F)a%OKblmUjETNZ!JxLGis-W4&;!*4WI8R!s zQRgKLQK94<`>HeOm1q||6eu7S<`~Z}k@tQrLrW8(miJR2IvD%0iXc?^JUZ6-N&i@4 zpDjQVV&w$f831c=z&Gp8rO|L<5O|$JyoN?&kXv7H0NP2#Av&%Jdnx^wVaFm4rBXki zCC)XEVo&+ZATvt*Ek<-=slSsvm+Fi$2;x8vk?Y;6!F%8#;cz|xG1{3 zD22r%ihyQAGHXX6M$!`x8G1nIXPlZu@upg9OnWvWP9FF&zsmK>wb0(_^w!ak(HIBV z(nYN9vE;P3q5Z}0eBBRuRl=;~x;fiw;Z|jO+MFWT<_e1oMD0)qI*R3WVp%YLd9~C} zV`*K)EZ2N7>#_$sYKLXf*pj>*=Q%*u`!fZc@vb6NrCeybgf5L+fzvhl>C5%z2O!ub z^zwgVGX{Ew{|h%`V`TeJQ1;In%)t0x4&ncX&Da=O|9`E)Hclq;*%oy!fm|REsQ5zm z5cD8!Ztyqsg8)HO_)KkD_7Jp)_-&n?o#2oHz>skLIa%A?ovl3;wL5&YM<~3HadT==o5fLi#lbs{Sln zpnG?6KmdaVs&l=}?T$Y*04HD$0$+%x*FbI{f5*?o$F2Te0vs8)IU56{(o^|Y9OSv8 z52(DsV*!DAd^K-d0UY#>^*{7NJn22@Ee{{&g(HV$Vd;Z{5&__c!=i)^KL4}J(_69o z|KhDdoj=)~$KkK?eE?AVaT|lG3sn8qCBVU5q{bouM8Ry$Lq_#HJE`mLwN%7f4T(*62jNJ32V`HJ^j|FA=Rfd_U>2=U;nX37uYO;*$3{HQ;( z)xf`>`ut!%$-U+&`19Rbf`)Op|J?TRO@8sjPL7GIDhY&s_cFb8QiB5zR_D`W`LiCx z6{XUu{sQ`?vCtI!Zq4;7{&Z6Sy#5|rrb3|o1@A*2dtXfe`2F~ak^YS%p@Dt9J8^#$ zh3M-aoQB^+-9rR`xQBTE;dAU4M?-^vxo^GpbA4y~{mjNkfQLXgbAW?Gg{+sVhNpT+ z`ef9Ip5f)NEtupT{dV@P`W}13Xj)yF@P72a5Duf9#ECN{L?CWy>8)^9e4Su~3w(7l zX3nJDa*n;AjO$q&sr7yrrTXlk+`2-LiCaLdigiV~$4dCIVGvKUNoIRov~6#23Rq(T zy)lm(IH7eeOnD2*U`hw7q+oIgod?D>4(g6JUtncEMId%)?g@XOrE-V84Nq9uVl5+| zvv|x=a9s|_iH4Mn`%ycAJA9bk+N+cow8+}ESL5H*z5uT=x9Vn_RbD;4CC$s;ovFeg zCpGRvQGB=XH@!L-Wum@EcWM;5lALYirjEPen8b!OK9$pCQ9zcGUIvWhjg(4;otJEF z@q+yXr|qH!?h)TtgLR@Pj>?=Dm`{D-{6pGbsyM@`WB%M_6p#IZfpj6M<5tuMEC<-URJq z96S}zi9NTeMGf3JtImrc%7peq?e^n%a?)^Dc4NylJVvf-Yh;$e08g6ATu-A0PUWHs zq6AS;RY#~tpGC$&eo~@XfH-JYY&5L6jES1HPH69rzPx!dg{< zyn;ofZ*idu0O)9E$G#=9SWKM^_Gf1u1C291gcV3CvN-bz;H*1OMk11^2#ocU4$C>ig}F+DFU z(V~-iH%hTWdFUsV`RQ$CB&DE#nIcWycF=~=QzLmY%1+4zokgP-J5m1C+DcFO<#Fr_ z$$RN}Z+hqbenRwwm)?+}{3okmW-?%gZU1(2`Wgbz!-}XJc>cjYr_RZ3)i%0I!Vnj= z<9>%T(~=CSqw*GrpN0{vbao|~8FSLvOyIs;Sj7>fYC*gjKn~LEm6f{%#boc84$^OH zNdJ5N_6#Ov-ejAyIBa7-^r{he*$7lHgmDV?uZ&dzFiCN12F(_#0M0aNqJmtR^(^so zy`68jIU*IOC^pJb`)*?%k3vK=!3Dc7#Z+)WwuKwSk7fI1fRmau$P!BYO(`PxItzW{ z0g{m;L&qG%hTCo1#r@CzM*#6I-1E}>7HcGzW+u5XzDUPzaLB(`-iupD9&UFNAIRhQ z@&YKlAOmp4@fnZ`F@*MP6or0I|0qVJ(P8-g)ocWB|~0;TW> zp6SeZBivt<_PDKyNuJuzbD_7~uNAXLDmu9#UernE=AminSz30GnBoCY=jLoZc4^SD zYPwNYYq3e?)SZQde)g#9s}}|^lw;TO7SvPYhT(tvO8zqC`}VCR3J+?aK0`lDjXj5%?u4KaC^tn_ZSXW&S+fWq7TEXgEjfuetre;Xc$=7D zP}E(SnVLWhj=k697eht4o=a$|rndBcyC)c>EEL6{VYr^MJV~x&Gvpe#4ffmtZ*VT5WItK*CI##1WgVA14zzGd@UEODPSXR+AL$^2*#r6o6#RY(CPm zaO{+w@sm-1*iLdlvI;@~!6y-)>CY-Cs~!B!PYRqQ=VR#kE_;<25C-!i;8 z4Yv?*aW(#kEqcHuuU(8DP0#1RVW}u_zZn;fjuO4(c3d^EX4*&r=2fH)>cD>#qh0t? z$LVW~u{h!IW~5vXeG(I~vue;233=0s!ywe9_yEM{8XbD#y77NoD8LcWD=#t)(?< z%6tTj4oEYr*EDmZCgtW#*mg*&=Dm8Zr?fbS3ZN_|L$?z5HQ7u1ihnTu(KA#Z(V!Vm z|8Q%m|9Tw}k-LfnpgKevd-n`iuc`RgP%I7?>zVXm^0#%iYxm?@hSe00gSc$Ref)Zf z@a=&&%-fb^BRK6T+fdGKrvhp<`)LCbO{>2?m$HT}Gm}oF@_C)IyLqQJbd&DPhM{)9 zOtexj4xABcen6MM>kp*IUd;u4dfSc|^9gzc8f^c|RfUU}We{OB$m{UlTh!=~OYxpF~MQn0gx!sf8=`E`S zX6p<8xlk{cQIYToNrJZDBhW-e3DdZ7bvPI84*-YYwgvQAk!HOdLszy<76QF&i(a>I z#QccQZsX`lgleOXd&@;$TrhrfBC`MuKeMt3Mt^L5c#7j@T(xZYPAPhL%YM%k{GGwOy+|D5bvm!LFVwh+h3f*Wt$G zg83)=-$M^E-hv9EsrIf(?c^KWXu_Q2!e@!Ja)JQ8xMB9(I}hu>#C=XGPw2YZv^*XK z1_rHcUHB^Jekn#AljI^F2jnX!kDRj3Q?(_-AE$0xR761bL==#xCze*$lfybyqB1-N zGoU;1CfSmAi6bRmlRhI3jjt8dHRPm^2eR`6PkLYA;3sZGc zSJwV)Lhe0y+_Et8rMWex50m_0HW0q6_+lDl)Z4Af>4WyC>X_0AWhJSFL$AZQ8t-(` z@qeofC|;>%6}K{t=ncmG?979mQAvQE3F(Yy$$31=tUU`T=AoAKJe~z@dRa7gvLUkX zMs}8z36PJx8bdHJl~Y9zzh{7w_4|U+EieWW1jL8RYA+m#J6)&du)lZHRXw<$=C!3- zpl%+*FdW4syY{ibgKIc7l!~n(s}dbn)wh8vY~vB>WqNhNinGlYBUw;XDpqXuz|L$K zqRw=oerX7*=8U#@*MAz+gerpBEU_NEA%BMTSGklrMvLFoMvUoZ`v=3S$-5-QGUeKq zzBo1jx36i3ULQirM)jl=Ko&)kh}s~Gx_II^5P;SDUEUB&Fyy^$%Oas&)Eg-l#IdGn zBrI9%G^+49-L}Q5QHBN%Zid29MTDByi(!k(6geDhrG5lBn?JD;Qa)GRY}t6ld1O!n zCUNPR5eX(}u-XKwk~*F&mW(l{VBcZ!QPcozX;$bblw;-PwI1P^&2Hx4T1{1wm4BSe zPC3FhU8sV3xH;++WHWG|)A`RX=NSPT?rL}U|NB`C3Hf7=a?(7|Uk3jI0Cmji@R4ea z#PrTCS!1;g9Ip4P_0n%tlppt;56IjjZxkBA@L1&da7$%qH5oqT=psl)Eb{*4$yY0F zHiKjSs-<#Kg!~PofM#(gkT$UaR@9I(2d(^9jE!T)9mSz}$Lqc|Y4CoNtR4=9EGU~% zwuW=J5~Db>!rS{Rrehp8;<2;)Ezzm$9VBVp2yBOx;kGIgTqCQp9F8?2fKC@LM(bkp z^iwH1u`Ia`@cP?qMWuK7o&P|a%gsI{el^$w=A1ThbuiQDndg>rxiXyt_gTpug7A@Q zl}^kRxq=!xyLK8Jjq!ORSA8uKc{dD-rheiQ}P46xC??$M?a`<8vSa0cAiX%{y0w^|BM+z-U z$VzKgX?Gz3<9EAz<)4(`hTih1k-3SFUGbYPX!JA|+;u{q?#$LCxjTB*5=cM@?z*24-e*m@eiZAi7*r*4aZa=w?gD*;$dchRGf&Av?hAXv zb1Bi041lf3plN<^L~_(=lA%>4=>sUwb+xs3ZnjAQBWuW^qX_e61?cmZ-oinM6r|%9 z(MB`D0*;*8#+O7P)KfBMA}=5SGI@`5hu-;@T}~h2cg~LF?A(=CA7|I~ZkQ*@AzEao z-zS#S0AbEbx2=G&JY36OUS*;`U#@*90giP*KFD;sHrknee^-ZUX+ztiW-l@jiQ_!w=rh0EvXWzDE1CRTSi&8g=TPYatTOvRgL8=kcmko z^je@%B_*Hj0Gz{B+hngm}0(hp4AmiiJ29kv~(11 zfj7Gxl4i8)AV5RO>!{X<%UH3TCS53j~tLKj}GXYRX}C#|<_PdfjaExM}^ zMrYV3(!!|Y6bVjkHh42R=In5}&(_oDs>^c~iGY!UbdVY9KxntzRhidiQ9w!kj?MvdHHG1`_wUQ zcJQgwp`Al+?tENm3D0kGoL#Kho$3R4uhQqi;hxwo3_|D2@@FGsyNG; zDxqoTV!Z+5n*2(AL)%yNe;!4|hf~n$9Nxxpujaftv!_vY7_BbEUFfukte-`R*iCP8 zWEoETc*r_07wwQ^u$^!b$2V+~QS3Cv5QPTSEpH5Xh!J#9u9hWXK>XPeJv9As=YsQix!tdJk zfAKVI{O-v2iHa(n9Cl^VQ+h4~6xu}|xc+e!o<2JqAQ(PXawKznx<;Mirw4oVtYAy{ z97C|WH4m}R5izi52^^wZnyxMAN%P7sJE2yVb4ePDXxxc<6GUr{u=#RK#JXNSDzAYC zEpatCHlkF6c|sEHZsk|c`)O=?o4O1dnke{nbxkX97NN4S#$ysORwYIMC?fJ5PklA` zODFZ`baPM+gHz97nXziYI+YxTz|yt?8NLKFX%1TZx?l^9h8lcvVL(3`n#;Pt^WkKT zy;F@T?O*7aE~tP5JuZNTdmgBtaD0A@iu0=~Rd^1_*U=KD1beE;?$aH?ihmhfs6-{l z_}O-&$M`KIO4qI)Q<9OSh@G`Zve(aH23r`09{$-RjtmWWF(8^hJk*5aFEZzBL`!@! z5j#D{>L5#1^h>MvPFHNY_rbOM#^!fCd=e2dQmj*6JeHTHHtWzNqj8*VdcH-hsu961 zmI0f?cXv`hd-yTPNKs0IdSh~^IFQXS3HS-kMkgB zd<56PrVk}oaqR(mbIX?qvN4;6ZG9n+^d2V8Q7?}L_Z0BOF;P=~mbh>~D?i;A%TaL? z+JSPGwv4{QYPi%j!X8BwQ8Y!U4y$&5L+RajIh)hJ72(N6#(<`kuONb|WYKw;Hi`<0 z9C9R^-`oO&o5R6_VSlz2rK~R1aB_*vu$7{Fvjx|#ZlnS?JV_!w0gttYM+7S4(M1=2 z;A#!G`!E`$W4*ZQp|V38oYBmu2CDAmM3DmY;NhCKYEqLF$Fgs%0ZH5&g{a7IJ1-~I z2xk!h0YT)B2$yI0MUE6#oY2MR_jetw4%I)s!hLLt(_`IAxYTUE0Yq<{%^3uqh^zNL zF-8qpeRH70F!;U&D>o8T*b_*{ULo5L+@*R1EP0e^r%vD1Eki)NrQt4`Fl+Rppnf?}V=9PT#Mg@9 z-)3}btAk;E*-9#xVaB_75v%*L@s@*?&r&}6VsZ>;ecMeIVe+4FF3aPdZ~L~t-$%l7q5 zy)R@1M<}Ur9b*i7J9mw0Z z_VmzTU~t|^SGTc@e#08UHKV!Sg6iA60l-AO;2=mBmFy)>Ja$G^_lZpYZ!CGiqo2nq zoy*vjBxYOCElz)s`YQ;xQLc0UV>Dxl!oc~sMG>LlR$Ntc%FgI#A)tt{oqhA?(wq!`!qXLhBYy7c)Y}2#$|cuZ#lz|v2#9* zTLsEr3H9INJbxxeIn$#mc-zgkXW+aWXCqQ}eML_LXUo)ynI_QLdh96|F$`1Qe>Ku6 z>fw%(g`pKbrj3{s_^( zz;zx+DE~Kj^^Zs4+ZkFyadZDCuVTReZ}5tNgOTaKSl0heuNXMkIQ|#D`hRO)t=o;_ zO}86ZG+8?*b=)UfY&QSraa;e7hs$pFYwK(TvV+n0cm{{*(HMi1$&hvwy57*rh{X8z zOnPo+ZfGoUJ~?5&=q$e&cz%&VFaas5GyRGiV{0?wf*a!rz+X%(K$MtkfF~G#Kl~^9 zApij_E;n!|B_=X}41)LG9DqMmK15DdPT>BL)hX3c?FAVAlf%Oyv%~WlBmEg+CwVfF zBO?H0Oh*0@?I{fW@~W~r+M+1@q?AQ42rMlOu5+zGV;orO8CXEYQ?M~M*fHaPq%Cj& zmA}*gp)IVUC%*?r;*WMfth6I=vcCvS4t337;?Pw0QDYP2fWe>^DIkC!tfBxE^?ogz z>>Q3?L9DFI_Md7l$^d1*^;J*5ql|BOmwttCw!ih}`e)~Wq9>uU0Ki5{PFUz0e&?jN zMuyP(?{S-B>o>gxeh?f#gYf(>aiK>5L`F$|b2F-{j2|l_0E_}!R$OLeM&SNU)d}@M zu>5^16A<`UC&t!B#@0`IO+C%+DWAV|KfeS+IZwayLAxVQc%bJ$hm3A03~o%UiA-)E zVvfi@m43w^t$NFEe5a4K!oTa^a+H01rO}BM9-K&jSTE(GV-=c1EFvt+E zGA-E6Rt4pRD5b(d41t+|5H`MumU8cOB>Qc^TpPR zz9c>8kMZh5Www3)yj7s`)Q^q+#hOeqV5O2z>u{g zEh;LAC;#g7Ps@h;W#!2rYU(C^As+~u2a5UnH&k<2drazaO`xT@LJ@Pn+2dmz*9@%X z;4P|%9%iVz%H!SHRfCt30P19Z^PInAvZP1Yt00c-_7mU7kE3cBcj1nNpVIRCUky)M z%ebx$VLM>^(oXRq7er2+B0zIc!0@_~(x}wb`pWd7Htx<8bmDOVOeydIFq|(-U_4To zkS0PT9u0jzJiFEKi{2r)Zwg+eXGYF|mkIbG7&cS6u0?Vsv<^o|0mZ6&uzF$a$YbNH zn3d3fR3-}pYp8W1!h@!K`R480h^q|eK}XX3Rk_7Fykrqo53QY0{x^Tpa8CKjCl2o@ z8_E213)4beT5Ba|9>ffecbCYRgs;5<7i^Q1X@;l4deo7CX16H{M_t8B0DlvulaiIq z;-4YYA-*#>ZM4lRqOUgi23AGF@{)NXZ6(-lj0NNXXd^bp$23dV6wiawQZh zUWAH3*p?IUp~L&mD~u`D=>UOt01WzF1HKPob9W+CJYOVuDYR|(l8;*v?o6KBs7K9p zm8L<4Q{GsG&khvph#WDh;`fgpK$_!*iv4^n(^wxz3j8ZAK%ztZy{AS9x4&_X9Oa(# zQa`b!FcvmTC5Ep^*LKMFKM%Ct@ss)CF#d%o*k+@gGs;9t*(}^4=T4%t1ESRkct|qEy#PuIVD|P%c{hylkfTL1K8@j zBE4dm+S4c4va7D;h-3N>y}H`|EMCfeY2H5&8^n0V^0ciu;nEClu>?+<^fbNiVdMLP zOQ${HwsK_mUdTRR$y=DfQR!R}u?b#fnB|0hl~A(8s|&g>HWN1=UTOzC1%*DZhTYGc z&FO@AUW~UAY!)8;Yq5>jfMOHz4c=^29PQ7Qp=1hL0+UmcI@g81XLgJxG`ZJPOjFc( zRcLZeEmr-Nb)5n2@rw~y5@^k>t2P%_a;VZ~&nZ8Fk*ZO74!;HBjndKLo81`@)Y|Vx zp#}Q$89ie+O4VzThr_0|cRp6HJ$brG4$NjhXz6K@+u zowPg|9flE=+i8ez{N%`6AVM}KuUcl}g}JQhK=~jOa*8@UK7#YW#GJF%ig>%S-Hd){ zjwgAvKGp)`8x;M643=Xy{Wrpr+e1@n6PYNgSQ5m5JuAE4EX=dm5s`)OeJmum(`wz! z9*B^huuo+$K}bSdNodk5QHM;Yx_^f(A~-Q=Z0g)JJ>oXYVTpRUF^b=6=@|H_I(Is6 zJn010OKVU>x`d6-ca&E9G+w7-bKOVVZd^WSOZlI6Xw4TUmE){-G#J{tjSrzz*mm(0 z(Tin_H_%Sc3oZKFq|94YBgttZZCo0wu#igx2T|80pt(~>)5E0J)o+z0VO|vkLwCy* zL=fjt7!exGkbuYm+i?zvY8Wy3!*WW#Hh9p;Q{~Nr!lrENYG(T zDtE3yblSuH0A_Gq0IsMaLmDy475p&=UW)PdECOI9GU)PnfoQoYwGF!5> z_Ve9MTrdZr?IFBkpj+Az#)G$fKFO=`rQYfg{JJBXS(3*(hy@5U3_p-P4-)uoI)mhg zL9lREBD$eiOY9Z`WPNFc{mJU&y&4n85Zd}_fNq8v_-K}PK?FBf!0_APGK1OWNCQ;& z#a$17hDC3*NkJyD@(C*1L$6io0Hm7zCbM`c^i9aR5Yyt;O0^>M&t>&80R!YDzb)%_ z-AdSaHVD9^4!wGV!Zy~=>YGg~Zjeh~Ue>_bZAn#}1ty6p|Lv_{<18#GhXw-F1b3Jl zFHP5t2S(#oVs@8YjjgNC6V`#r{|Lkqc z+tR~Vl83iZEp|A9<8Fnve?x& zV`nivuZ~dc{YucjQ0SSw(C424jG=U?4D(irKu?0{l0!#&8p0@beYI`4`J!s}2CF65J8Z6M-#Sl6^vX0#~ypXd4jSj(VR>D6J19EM3Iogvnl86u=tEA68 zl)VMynHtHRoI|cp5-s5spdZp8*1-KSeeOKsG3kgPz;N*n4)o%1x=M&6>zh}sUH_n; z5d702?WN0A1;Nge0>v`VONg#~xFwV;-D4;~Ng+Qm(V~#&b5Z>+w{~nkoBWl?RZ4f8 z)M(iHeD)$<74$7m6}V2z+#!6i(8~pa+sX#sGM2afM}zvm@FW3K!%AX|HT_Ll9!ELR zWV3`z!*vf2x7O(8Se03T0VF>#5PBS;haiw~vpnG;&s-Fe3?Tn_{Gs|Pu(zPlXUrSF zPa5r_HY`Kt+$_RuV;Tb+gDm<&HA`NgXIWSVj>J0aa13O6m8>_*$GfI&#=f)+aVYS> zo(BED_T&6jE@~~>yK)8v+-j$&Ub+?mxi~xvZ{pdU#|8cr-E6Ya*gNHKT}Sh0{6Z+< zt0X}$Ly;6&I9Zn615@z?Q>p<>n8Hbh?EYb^!*(dl1MN5iEF9bsHxAEKW(M=DriRPo zMfp*~H%~8Gk>gRVMf=G6zDl@Tu>@8RR%-4;w}+GY0NKsEbEo@}gHflVnjATpT&r_NIq1A=ehkoj^z0rcQZWC65<^!TjmM2@uI*&|8wU7zc!GowZC5i%Z~ovSB}}o z4r9-suDZbnTwhqym zmZDSgVxMf>l6`~{Y_ z4V*vzC{yLAMASmrh#BRCFh9U0<6peZ*X?wb2?r8Nv}|xX`^u9SD zao_b4d9@tOXWj=om|tK_4pNEz339I3bdxLexTQ`qRxvS6%byTKN$Ur2%xb$;iEjtD zLF!1gVYsm4>HN+fd@{r7s@YU$F>)b6fQ$10!Q4TDiPnatpx-UN{K&T4g;OjJW30%6 zSRGp-)FW>2VS{xPhLIg5SxHjyHyfjhddr_WJ~v=BbuJ3|0XUA&`5@hq>3fE5 z(}5eiBs{I{xKD?A1zYJmp7~;C_+^RKS9hz1S}%hyY$5bo180p7@9K5j&sJ6|*oYo& z1a|t1GnT7a9*HiVVLh2s(zZZM8%LeLVWbB5rYv-&C@3f|BZ+=C zY%UN>#bnhmilG;7ikdQU1c-)uxJqxI*{tEhQ6J7c zN4Yj4K(^1U1VU;;*c(hD4g^LNcM`^f-8+mEIR#rO`St@AaM2hBKdpauI;pYwq`8+e zPe^<`kPCqq(^Su=DgDyi^#ySt=@<6m&1vO6J#NWd@BRmgY$@vgLe<`K#jTaJA5!d$ z2hWWwwtb8=?|4@`tsfj)r!OW8%abV+H$ln?!_xr+`~gn>eWm7F>YCPF^s2<4isBJJ z8h-24qWz^QYB;9k;bc6Lo}if zE|hTxn)@P#Qu7cy#WOj_>N(Xbe0@}z_0GjjYrf{6^Tl0CHff&ek&Vh&Ysp6XEwr6o z;a^jw9^py3fMy=&QbVZRC*xe1PVo{2d#qh}HGs`M+s8nGw{?N_$_C@lmsX#C9Fj+y zGM^=)mT&v0W2GHNjv(V3|D?InNqls2!e5caW<@xSQyRqstLEx9^`OWJwx&; zm)J+GJ5baYG!Wq~KbOssyMGQe8KwL)U|l^OGozzA!>{=7`C>WX?BWN8#8Ab@%#?h6 z5*6PEfeWG~HTJK%P%+YB4o40pd?5bR{w&6rRQHIZk{rcH^P^w~j1)0X5FNlgkeIFT zM`!V_If^xHBVLTMd>7i3yy zbm5U`VbXlPhS7TDMB_Gm{ZW8u#!qsH8%BJ)0j(q0%)i%BbVi}3VyqDouR?fv)J_(; zf7i<+o4SvNj-1Zq2JSSl+#j%&1U)gsp++$i5qq$L9xuXg%t|zwk-;uuayz-Fl`^4y zB`aa(;p|zY+{+sx=rzF}lkRTZG-#bK*PWG33LIBg!Q;~TehafraBmk6LmumW{=nsF z%2e@1n&s~-AKE+@vvBRa-^6|h!v$h_i2HRVU$~4Ufyta65fP@KS!|w{zEH|#Y%GZ{ zSoQjxs>CT%ESM*hq}1g~`crP_uK<6?x}(n<-#EGDh<`X0^XkfEgq-nXfNkd)Qog_4 zH!pH3)%RMN7Kj@dotT#cGW!bbJNBYwSO@v0g_hHKXhMMC^>tFSzk4U1=z;uAoEQj&BVQ+r@cRXHhK|I;u!Fk5)dDP z0wQQXdovMQA_HrU8jB=4^vrySeotps-IG^87!XKf%h50Tk~jD8RxF}|^KD~d*N z5cH(b##xgIjNDqRIu7ZS;p7bt5=E^(Ul-Pc076WO^V~|4g$I?Y*deF3P5O;N4<0hU z?##R8d!>ajj`L-_xTkk~a&o^oSS>E*6IIGkDddjrBS8&}H(gV((j~!OB%$@A8vKy$ z1&$#h$PVVY+G$a&o#5tBT!Vyi^zQ)9pnQ!6*lkUj6f6RH@UHk2AJJ{u5iRH!3=;}b zDu?n%rl~N14Ow5O0sf@AUR|g=EHW!QrJO1pUXKbX&kU06CU88V#q7PJqbF!c07sjh z>=cN**lU2OhCT%ZNz;>@T~Mq2_ElDk|9P^_&4jsLaI&$qTc$}4Sh4W9jwqf_yI2jp z?I6)AOf(})>uzVg%hfRs|5Mm2u!3C@KrYjxNF`W7^~)_E;HiLZsZ@e7bD0VwPse$} zn8Ou$RftY6=Z$ep7}++iYTwo%o{_udixZY)Cu z77ws4nCkXd_3YartsZ_q31V3dfZ4O@?T1_gNgu^h_I*>qeE$ANL+JaNk$wAecKT9< zN1Q@um_ba5muXJPG>oovp=wxvNjByM3y?b~JT5OZWQmLBE_dk4%`j_pVLhVEqc3;) z79_{z=Op%T7Vfz$%cQ0m?Io+4;?nyE5z5wzP{VlbS9blkp-Bfnz=RATYa{*8UM9xw zp=2YYOHRq?{9lj`T?(=Cpzd?s?g^`do_Q1FCxU>xl{ldUsERF60#w$0ML^VceFnhO z9=&Bnr*p*My`X+jDV_SzD`?5+nG5$|Wzo7LZjABGeB-pn3S6fLkmbu9j%nICPY)T( z*hK2N)CO-4Y9n-k5Yuc8WaeF@7B5=sZCVRIz&MJj>KD^=u$?(J(b23IiA2<_`8I@X z^+ldnY7=}WkpV{9PTF(N-E)O%WP=r)olW5Wu~*+_alLD$~284^ZzQC>VzuT)`*FUedO}WI}>>H3z$0 z3risiV|DhEBJEb-xl~An1HGNnA438XqZwNt*LE2JeSG|Irtlw7^|p>s?vZ}Py^`J{ z#K~{lVVDdTV2%2q; zT1$psOjCPvVMs@vRWS;;IAeyInlva1k?5I&cQ}zk=AO=HgyI%r83%L&up4s`u7tu9 z-a}ZzJ2XM3nBLKXo-(`A;51r(%#RvJ^|H=sQ;o(}I9}2a@hOT8PIwp=OPsGTOshfF zC@u()DtS(tG@K}ps=AjdjuT%akYli*tj#vDI(I2O2IK8s7X?4I4Jzf>MiPo-Kw7KDckj;si4Rr0q zDod|Rd;?8*7AM-!{<-F^*|o*w1vI9^Fi)6ctmm-=M_NeVVm^iQkjVOTNVV>)aM8Sq z=U8T=Ue&U_5I0>|42&JvP*((?v!Y6`#^|7Ujw~R~4taaKdRVy?YW8~gqBl)#g1L8< zkaA_9f5Icy6=EMiV5g1vxOGe#d$lZ;&d0vP!n47)veDa=fG9;6154k?C>;I!BJ+*-X+!o#^UPNeMr>rNuxyF83h>kZb^K#{IHOF$s-N=C^g=|5UVc5gJMbP@ zoKqhy?ZZ%n%OSrmZFDhDO2S-<<80DMr!cccH&79S5Om=%$Z&;_%$xcZ?Z4h9Ntx`~ z`r~n8OFlff!EiKBug&!FV2IdEO9NtkYnofC2~{)Bk^r+gaE|>5GqEReibahOse}|d z4CZH=mU@s}g{W51qxbxY9c8t~D~IlLC>|mq5nt1F;nRuQQEWi9*$5nH*8e970sT*- zE@9yADj9T~uaqdS)zfMvWSR+SfwK28-PVfZ-D~V+=j6oRn62!fmgOs1?^gO|7181g zKo%V>Dq=1d7Z2UK+eCRtJP!hW%V-8SZ<}DRR!IRiC*ndlYG(?k8HPDGh{h@`TEy?? zhhwZyux_VI)OHgCDkWFeNd6d}i}F=$Ln+*@tGi9Q5;F(m&|)B+z=4o%>uVO<45FXo zho$k2YJO;GT&7clhf%qHXZcI4(j?+?o?RK7`BrLpuqwv_U;@>AsU6V=d*4t6ST8re zi05lSmq!dOy0YnLnyT!!28UZmkeQq=N3MnbzDV!&^Ea$pi%7%$h*zC*kuuT`&N(j9 z9Pq%VH&@P(NHP9A^*GQY3wDs%;WoyAXzR_P{gF?CfIR34EXeLZ~SQc#Rz+dAW&4ns?ASoS!C|tZqX_=gRx}!;S3(xd3S~a_-h= zuMvyE?~L^}=E}g?#v_LEPp$jZI=oqdHvb2UqMbaW#hrJf3`)Sq`c$#UwsBQ6-g+yt_u>w0P$dF;Nj`>kH z`kL1aSY>FQGmdp~)&;Sf!U|!J|5p0+YG=b7cTpzg%34COJYKx*4OP1|g^e&Ya+G>Da$I&~ zohqRq4c8ih%Kv#pHK3SIZ}9aA`3wWt08r5N;FBn?j)0Y>fUlL$7}+U>Tc++%M?O+_ zz!lDzemk!&eP7gdKM||9@K=euIRcGJKe%o9K8fqHO!~c}9`@R95dyi^ec3mQZz%gS z_aN$(*NQsgRe4PnoGO~N;S$yj2>i9Y9NJBT6TD7JE{F}g@57wY9-?`e#*ae*{P;6n z`ve<%tjd}wKxW-=!?i}N(|C)`xj-tlHYy!BEp2cf*OS=6?=v~GofY(UH1yb@#@`Z(cNcg>6ONsL#>`SdpH?V_$afxWT`(}0PXYL38AB>$tkSM^K ztlPG2+qP}nw!2T`v~AnAZQHhOd(M3k^I{gWm}PBhRTUMLng5s9`MC;ZOK~yqP}SE3 zsDCBq8>a8LyI5dLDe$oMP4(iu;l5&`1fu;eDwVs++b&4GGBHgqxe-59GPIxbroYWh zLNv-l`n_ynqlE~NM*aczWf$OyJA^S8*|&!_G$FL&oj_tT>Cb81u#K?bX7q==5_zVZ z4KIWL1#A3)?WXT|v~=mXlHdju1J(>OpN!C?gdK3NB`=zJ38l9W*`xpr%c4O=*ocXQ z=pq;XjN5DajABh(gq`(?&=U*_@cYt_YzJ>UlHsJF7WWiQUZ4V#;6-fvXVDo(ZS0=8 z*2@O6QtNh-Ascy81y`y6GWOhgpbjffw&-^BTmD>AgK^5nB3U47Klh;s5qh+6bGikD zRRkjk50+b-)4c`cFDIe-H0&}~()0KkB*6t>0a$_Q5&1vU9qQBc_`9t#-(smnx$1S^ zi0suQ1m(6K>?zzZ-cN&X@OHA`2Z1`{xO)(l7ML2gd04F!^WO5mJg!`}7ep+g5ofb| z#;FgX;3HHy;Lf6COFH%1Kf3if*F0GL5R|$4M2jbyf8F>6jXjyG_f@?7$cFh$WKZk; z+P_njil{!Ynp5g^$X-VRNo@g>I7?4PF}y#z2nY1$bJyOKnND9Ab(bAmo$&E!<5c#a z(X8y|AB`RhwS_#*00gF+?n<84FA_C9-I{D*NN9>EKz<#8MK1^o<62qw+sr^c z2Uu*5T&dz4%Yxx_#>S)SYCxDio+nDrER2VU9Ad_AHAhT#i=UE7+^Y`9JSI2jzt;0V zUPwnv>^&QY@Ia=>1))hfwb%!4Mc6Ai#_MeW%uW zw^^H@5Rq+IMrgR^VR=o^I+>C9h z5vkRl!6&K5dQdzMY~zCjwMu*waW{4Y^xi?85{hoFtn zlg?kXlM2>wmH`#awRor*W{yzpL$J^iCU9D~1H#jz@^CwRH|n#^g!Raav7r&*Tzvc5 zJ8u_+`3sS==f8fY<*{L&PzfZx!rDZ=>(jtcivKj6xGGkE%?cG95 zL;hkNPO)A~Z~MSr=w$d0WT6 zOnZRiFYf_)iB7C1KNRbv_Is-T=l5NyE+EL(fGCr*stDD{qD{srhAE>#<5`z48(kph!VN1)NqljXWP8M-4MK-Jb_g=O+D#SG<(cAmki2(K?x_M#f;TwNq2a}d+CFTn{RP|ge`7oJK!8f3XlVD-MDA*~q1)zU&Q(Iu2kQCN($ zS60hazGh!D5U;1CXZqx=5!=&*9c3B?JebShh$HKo{%&-pHB^>VRI1)qBV4|F<_61& z9#{T~i^zIVMj!5s9N^cf+sgelZ%KqqwNl{1)mBiS5 zj23^UYSq`ejHn6DlG36TN(~`Y?yF?D1_7+kkT6T|1gN(G?A+ZZ^^gPuFwTb+$PA-! z)$xX>nT%1%nkMC!!pozTLt015*OMx)_`x^$S_dot8TkdC0RPmV4gJQ}VvxU-C@^$S z_hlTknNt56Zia(I;}<1*^d>Wv5Z+-h!07l{)l5TDtbbaXKoPSYB1rROz zIW@vUc!4DOB!|dhEd4-nvC-TA?}&6UB(_MHm3%YUD#7Dw2ZfrGHTWV3nP;b-L-qI54(MtOU!MhN?{E z9p9ank4xc;Jl9NsWTAPVM`1_aC$K>mpWY^YwtXR-B=9$6`I1yS!3p$fkZ)VXwBqx= z$J5UlLT>b_V~}ieWpc82qVNX{iVuXYL5-nHiw~T%|J~5P7WC^M3CjvAS@2!md$SvX zSZO$~j2HJCdK>5yeX2L<^aB8Jh##Lw6T&IGosqFTJG@Pk(>I6J)T{S4+;Qkfq^Ry%GKlCy-3#BOK(tow>8fRKaf%IBOx?{8w2oa;)Ta!x3Y? z|0u#Sf9>4$$pe8y3&YIs>P1D%5vV2F` zew(~J-ZXEucsstai0KvCL?$2YXSd&6uWmEb!;Z`NHFLjesRVW&w5I&v*LS5h0;BmU zDg$c@Q<@u%Z4Q&S4ta_2cX(L@xs<>2=?EC>D2+AA!*0TU}nqw2t^P zu!CsGD9&Du)_!S%+vjA>0Nb&EK;F0;Ew#q?x-s_;Y}9sZ8*dKAIek8UFg`nO#Q;kV z5@d{U{KSZsWNLVW2ITePW~_cXZ*ZHb!?0HdaMl47DGMDh4-`L&kQh^B*ilB zOknVRCG*bK&Ga`J-0nCQPGMz+g-*1XNwOQ56x~F~14)%mLoBY(sWeJgPRn@gDZ3tu zH*O?Oi|6UyUHQ+x*hjxau?SK(>6H@7Pps0`#nyC!*gsCDT$vnSsW9SM-k%*UKKv>=&^H-vVq& z8*>Sanmh0p*hBy}M5T9?IUe{>_os!ia2LM3%xcbkKc0my9c&sLG!qXScn6K4GcvFC z`|Dh#WaT(9Z?~`WNrXn%8O_elJ$@Ci^%`1Z?sGjH(T{?0V9^&>ZPy^ns?Af%+$)}d zHb(-2mYa*TK8`M*a7*rJm&-7PoPcVdS5D-M;}KKxe1uXTq|2R?Gf`E+iEAw6+jifc1$SQPS&Mh}2%`Q7`pa#rqnioeFW2HF!^ zA&3%%{wTE68tUsQdDw+-o=r3o`)DG(EA{eIDqPMGtu0HnQ$#EM2LO+%v6!WBnm4;>neSfi0bIyC)ZXoeJ_hJn3lAE#>=KB3S*N zYN~aTlbk^^B)Y5;@Bu2LnBB-P=*f zkSdIx%tF%%LoCKXB#Dlvo>|I0fW7*?h?zU?V5X+p8O)yGXRLaijB=hQlmexBmxO#a z^dR?pXj8-O(kOu^X$4b}E5i6BWIayLT#VOvAJ<@}=#TtJGQK)3H=WDkpLPP$@?W#% z{l8_8O8*om$ip1@of6l4${M48#ffcbbM20lU3=EfT4NUn-Y>wMip*khL35K8J``sB zAeB46mLUdnU4oULXl{b51}`FgK!@gjYB-)@dC^>RwpfRug?N;2wlux6iV=8ol-ESN zdez|l2=r$KPSatIRw!hL1aR#Ug16Qky_oAkB||gj0wRcnz!6u816&Jzy^UfFf`?sW zPgO572`QU+?V%r*dB{FSfUJ01!0}L(xvNTYG;R*+Zgre3)$=%;p^-!32naBWEpdK- zx@qO8Xt6DVTs>qnPDV6aHoR@;eXedR`iv76^fcX3rDgDwa}{jd1jx4mYiVN2sCyPf z+1>2~>=pCv>o+D2I&PcLzWWSnf{^$HzW~vb6yq`3GCm9wE_Og@lT#P63-&0emPiqn zb9MugEVKk25+kmBV)VQaNb@;^nG$2&yDMYvl#um3Vcd(01UT{3HW}OHxiZxk(uq$J z|H=u+>0Dqq{w<#YssxiRf2 zkI*x8H5X+%S``o`N0~#lV9VHP=gNW*< zxsTI}S9O!I$$wS>87Y-bhhA`U2em#(9jm-H}(Wni5xgJNo3s~-BREzvm>>5#J zJlFpIQPLk}v|0T8m(!{;`vsWge$12_sror8WH8~DFEH%{NEUqj$PSoX_hDy9>pBQ0 z`O5E^XPr^=CKUyLVEP%ZTqi&8-6vcaE?OEdWM6O$$d= z?V29dew~pg0wZ&3TzQ`^0p@A{^?V` z^!HNrsv9%ixSV&SuvEvqZg&)nq-UV}%$P$`$vU7wVA{|`Y+hG!Zs4M;UzUTnF{zfm z9da|QdTw2gddl$R^G()ikOx-TD~yYu$6inP^U^o(P2!!!_S&FZm_Suva(z=g3K21R zvJTM*(@e>Ze7a4Xx3p&koId3)V-A=zX<~S|c-qZ22FU;z(+4^I`f!%npXVK05oiI@ z)EiF-%1K^r>XwE4d4HaQ+dmnT$i6`dLC@=5cCoztOv2>&oFXfaeq_o~9TIvOjIJOv zL|Bsxi(n`w(ao!zD@KM5oxBdCVDiUX*2X=TqDYrXd!;!Vfy$3_1>ZpSy23`p?Lv{c zgOi;Is(aM>i&s?>p!4`ey)SUYTnxJS{aFU?cme$`@wCS=vcsXqx-A~ANAO)!shfah zP3lBQ!ivvf6-)09QceW3vxzHD62~1aQrFk8-l1nPCh6Wx1bFIm@`m~%4NhH%k7Wo&S&=rCxe|JIT&53O*CK-W>`AdRPUF_ zZUQsf5(2q`XA;l)`+ z8}qgd?YI84!j0JQb9RN7tfTDpm=+N$dq@@J1@X=ZC#PKR^}@z^%o_!krDq+gVtTp} zX|Ly!-+R2>theK0d(>4sV@-%-MLkfp579jjhXY&prXSxw97fCPk{XeFI+fgTy~S5! z%RN_758w+pBhf6NM|)1nF`^V;wM2i~WX&*D@nBG4>MjniGbr<=;Kw*ftH1DAdX~*D zmtkn~fuc8APd_hs$zZnKNMI4_dW^3yWF-W;v`Y{N%J#IAM8kd~L2opZ!4MzFwDRFl zVWQ9vXV2uizm8P*c2zEm_hb+_LaZE%`x!mj?SomQXx_-NxysKmKxg!>vD`A9t-bWm zOCu1WyEgR3-y2`D&n_D(YHX4X17)j&Ni2Fznmv|%Yk4jtDAg50X|lZCsXckUh=6s- zGq@czct97(rgwR%(m^|6lajR6sZpig6<-c3`(Od^t+cL3@s(f5F2Mdc%DSFa*6U*+ z?uWnU+;;4uwP~A~r17EKkL2&+7C@gpiOtZp)`5^diC?B+ zEut_m-WhhL2jPXvDU#Ni#;V(A5m2gyTZA-56D+=k6|SuJheY``jjc0G?AMCeg5f;h zr6~ZS5sa#o(&1k9=|MP+9bd-owypS@=?^WipYT8uk=F7F3qQ6~)9!s>hS?{6V!+Zg z@La-a80kfULVDWks>Ub~2|~EUo%ruHx`?lO!lZ(nL%|vc_!_~URM$KLy9{Dv_fDAJ zN2) zF>qC1o+WqcvZ{gu1~_3TgUK=47KiT?drL*;1>z;CbA@CmX-8;GtR1);a-4A!^s4%* z++{Q`qLW7(J0p(#vr?4`Ec=rSB8P6qp3@y4c)-d@=%QrJX&Z75R_h&&$!MOQeK9DJ zvT9;D0#@K&{lewOA|jCO6_F}shT2LeQ!~KP-jS`5<}Di{Jd<0Wc}+qbT%+C1>-S4f zTP^W#8>4lFpxc$KKI!lOYO;Cc=d+@$J>m35>-}vMVW|xMQo;-3iNaY&4^?3{u&JGE zYZ-P{QWqWs*&$Svy-QxOgXj;i!Q<6pBLao>3TGcXH#}kOKc=>r&0$75wThNpHzS~{ z4{AbrbC|WarFCyn6BUJ-ZuBw3936`FS)amBZVN{+U5XOfqeQ)PdwP=7`HEK#L<>BLlDl=*0 z!UYQ=>}xFNBl`eHo8G=Opy8`@35&?Z4_&NK*QA4UqaP;hOH&Bg@(h$ zp8z{pn{np!j$wPT+}mnG>j~=#Tfof_F1jN0hOSb%u8;k2>ZqT7m=kdYq4M{r{R%GO zZP0LPSpPZFlT-^1@_+zj3SJi0%}zaeUa*+uzfbwQ2uvNJ%t5P85%ixm(? zBJjqV1AKX8&rU+XQN2tda#4&YQ%@q;gX9gIDnCCeKzZMKfc>81N~LxWUSvh@veb-d z$LbD~@yLfrx!3Kz;|6=I5Ifnx$;Zh(UN$WCY*DE)}Oq?6C-Id<6>*`p7cJx7Z|L4p3wTBBnL|# zcC+&d#h*&~&%P&vg#(S9S2$eQ71xCqdXZ&@FdH{u@++jlCm>*)0nTa>D!kL##ncqS zor3WaAx-zLYVCe3wiz~QXCZ}|CrB7K>(u;5#Nk_ODtxiu@_`GYSgJa#)C0IG8n`v< zY4&i6VGEnhf+Xbjv9*sM3m4QhU|&(T zo>0>Jo&hWn%m`OB8*u&3Z8%5t_?)tHJZ=qAp|GqY|EjZ;4ws!Z$Tn8F23RA5cVd6!MAx;U z^px>}M(_}8rU(&&5C%B~8=D8LE4uQV5J~DF&*5P*!8d=Bpp+NMVfqqG9p&5CTKnPk zfi<1)b2@}NAc*B~FvmEImh?yxytSL91A6&E`%6UwI_0~6Wn6}OyF?>#z;lkblO|p^ zvn%CO%H4eqRFDSkSEFm0a%~$fr$kC2)&`)uaSWlL_J$^pHnm2Iu=qTF`9g&OGPkvG zKRuFNW~}gZOVF$BzoBn^+5=s%3@laN#wT4Eq|koah)1HQ)GS?vRktaDZgl`YXg+8k z+yZ~B$tDMV@GH#hIMRUJ9An}EK$~t*&zQE7;|HA2J7gPt%*ux!=B$e&5HfxF@eMzM z2!=?sL$nt@Vekxnqo98z0jXSM(>&Qx&5nT7Yh1W0b@6;%h;f9q(yCy^U6vuFkf=fr zP+nk3=2b{01!ub1qbpsPRyvhbI{68jTp4J9CytY;Y;(KB}ksnR<*iP>B@dbqwv5f9Nn9vwx ztJN`qMUP}&T+o=PeB88_n^}X_s+&I#M@^;yERLK4PzeH4WWar<(_5VD>mh$7NTXi= zO$d|O;uR=6E+8@COwqJjiTz$S7NcEhi!cdl4EO$%wY$D6%hs(ZQ3~oPJ0>o)L$zG- zJ)Z#v3FbQzcR;_H7%|RV<>7tJgmcNLoJ&S}5CH8nLj73k+vT`{XMfa>z|!N?L`(gnyUoaa}sCC0+3ubfjAi9H^3=a)E4ZweT0%B*vR z+1MK}0$&iOF{OZAx~0eGZd*zZGR%D3h@i3RtK!x5*kP*%ISD57Rru<7s#&1RP< z1_y^Ihfke@wOM5R8pe})ALmES)p=v9JM38@BsB85jn!c0G4%xM9*Ak;k);b8J#TX{ z>Gv@cW|o3dUtoC^G|ze_Bv?7`kGpvvv?0F zJl)q02GJ!!AuF67`~r)i(@$aZUk=rFinzmUjcu}FTS~MsTH3fnNmX!=#9|viNKX;% z=aZybnrUYo#VgcfJ8jY=5yychOsL}p$y14lx~iBKPrYCW8RQa`ndgXpgfzNgm^k8S z2EJS1xEOu~tBphx+0}&riRJI-phphAc>@FTEHIwOzFq_FRgNnpbB}C3Fas*FT^oPi z-I&AzruqkB;n1WtfA=^^xcn&HsN9p{K<1wx>9%`c38C>k+Pf? zLyFzka(7AGv~jgBesq{NU$X4#r} ztX)SchgR3r2nF$#NDQCEC;4QktiI6t-ti}&j{fL##3c0%0SLXEob%(ScLe{<;^V}+ z>ihV(VDVkE#xIOHj0@pFk0`+Fjx+22R`*rW#|J)a-QR@^7Qg(OgSUA~^-+?q$mJ(8 z#vzojoHjwoCdzN;;FKa+xvt}>{@Sl1ZH*LV1}X06qo(GS>d%`fMuyJW2bt(MAxB&3 zugPJh^cXO*nU;j_p7UmrMLQyQ%r@f;s*LEWh* zVi)jc0e!4MJPJLT+Q+YD80pl*A^^==y4t_I0}}T&*>sz~NEC2!`>K^HA@;!uhjp@TXyC`0Zf4X&TvnG_r|4xC%(8w(R?S-=!tS<7k0Oy&d zsuyBg@|r9N5H#1G2(nqAZY*n1&Y5fUq{JaRU2pC~tN1{{UI95sj@$FAZm`JWGgMUU z{FuvpvUW@ujHO5hg}Y|_J;mtz*!{c>CgD8*&(e$z3MVC{i9 zd}-r87NcIaPP7xK`wpwB-UsSvWg{__Q9#{niYe9eK6yl%8eE1jD;J(_5kjkjLJ2fcaK)PAJGv^1pD&r$GfetW!hFIi|l+<;C6C*8KI0JOzvQ$^MI z6^|g4{;WPJMo{ZDup@_5#UY}1rj6#TAkrdg1NN7`v88wBi>@_mWJSQYCdH{%krw)x z)G7O)B{#J?TcQ8AI~IiR;gmUlg#t`*VOLqWq0+=}x^v-5l zArTEx6K6&3+`qFt9WLd<0mptK9CFsY_e@!P6oN_KK~Sn&JFDOV1!e2;#(Hzt&<*jA zgUvk!lsLQn(T)8@n%i{L^L%bU@kdLD4}mpBbV4*QP+_DEnuc;K1J37#Ace_DiY8)z2>tcq0QtpIKiG%=r1-fP~{VWbFS0C+{Y z^(&K%#@eVswwm<(SatvYTEcx2RcFZ@pB6A3TqvmriAQnpI*v?HaG0{cEp!1 zF1yM3KW-zooSE>$33Xbf(k&R3DE!}i)>YdOFtQTZE z@T#+;)qeVU+a%Cq*%HZc$AUp5wovPsL= zC!M8`Bt=S0c}F9S z9oJAM%uGfTVd*-!3)bvRvAzhX-OrvXDa%MM&5LNqEZzH@IN|l`F12Qk>$=V4sXxkg zaf#`F@C|jAxh3Z9Kb0VB_pYT~6$0MQc$C0*!>d|mnEo1MR7^cLF2#EOJ1cd`BD z%xjc+@WPjmB%3w^_2)29r=5HQ!PpAg#%lYazFa+qlZT$0SgIPovP_FU;n>}uHr4@G zGw0!01;~JG?W~9+Q+IE)Z&Did#5BM4i-^p8qnuF!N4s%HO}J8@!4rgIuUtf^o}Fv} zlW=H0eB3m4XecN9JZH}hyaH->Qta@=KA#_+%+SKDC4;u7zzInhB2|ac(;1V(}3)7lgaw*-I83>l*W}F~* z{f;E{705f>z|EDym{b_U3Ls>B0GYoQ%4*Rp>HP`{lYm!Cki;O4;8M%z!;np7y$VIT zZA(F2Gxd6kfzpZKzTX7s?cVKLC+~OrwlxF_MiL%8w|#YU=G;VS?G%tD&LZJJr|s#| ztzJ(2jAT5o?)Nw}@32W?A|-yhB!OMd=2NHY=!jQ#%pIk0G{b#g-QW!A*z$(uwaDOdP>ExW1YcuDlMRnKELcrlx&0x+wT8t zTY9dM$Fsof{c~=inA(K0^=ddxG~!S zioZN7`!EAHFbw3L^^IZ?8FHIuKfYJ@JFvUn#O6Z*8K$5>R1?&@3R`oGp-9X&Cz`!2 zBznNSDzs)cBEdDg;E%kWVZH-DS%Bk0Y}PAknQ0j}?lmq`@L0@}`#P7bJ`KpnfbeYN z3uYNS*Nlo`#y#<{u@%(&cUy3p`k6ch8b_u6o|ZR7?7HLdYV*b}!ne@Hwy@ zFR&3lAf4Aat3B{o3^W)EI($dr-`?*W-p0WfDRT4E7=sHsn1MP zY74=ZGd?&V``Zit!dw$dWs7T|(}odpFPG%i)Yc4-!~(bU82NY#MSkH?mv1_01J|+D;xY>V8{FNsUzO;jrPO2Ogrk+6Ldvq0i< zbO!(|4*vnVu{r=b0WbNF0GQ_C{td_Mn;IJf5r;#lZ+3QPU}tp(QovOF#Re(U#Kg$d z&g2GIvZ=Pwor<0U=%S;e3!sacd4ikydiq771or<2bR*~++Jb^Wh*zJBOG*S#kQ^%q zBKgZE01iz3H=r>;xgAkpWDCOL5TXbyZH)_{>gNz3%EmTo`geFd{%04&M(6MU=ednV zltYA1PL=} zi5C+NX<%b_1i}E4k+Ipw_$AFQiH)oc@abn@Y~J|``z<_nkM9dm;m1-0h5;=5Gw#;X zkic9A22>_uQ+=J4{TB{EQ`8*79x0<1jt<~xGxB5Ld>bD4b zJ?*EE2p5@}m-y1p!CBnVnLV#QpnZ{lgPW5B_!qbm_}4kt#DC;uX608C_$`+2cgxUN z8=Ly|cl{-|Gb_f+{O2DW1hM8^N<9}c|LUi#5y|0a^s*j%1Sj`joP85^2|Fx1yI0&{3$ zbpO(~h|R#k31FA{UH-~b|6cz7srf6wo`<+~kx-2&A17+%EYTjTvA+u?k`j3rqxkU;=@vJp?MVFy z&xW+bl~jhAp%2l=n_+d-Yt|2{9s)$)S!s~(>CX+Zdc@&n273JC2A-es?ux!q-10@K zvEo`fM#uAU3Vph}m(m;iZ2MSb@eYrsysTy}H)oKmiZJN1=P9oR#4Ve}`H*DaGML}@3L1s?>Gn1dzk{TG1h!Ng6=3sM=2HVzJtb)+TKUs? zIiy{i6~zTIDAdtE)!UT4Ew`Jn0Myu6F&7dPG)d=A<~2P4;raA$n+Y9OPoR(4h_X1E zUx5Esh$YCRl~orCr%dAXTLvkc9OBjRC>;2HE%SrP15eLQKAI4$jr zKG|h|4wb>G2-J?i3K>k7-dH;RbF+9yKmY}#uL%?FBbQaDlu9fZWin!qqS?w`cJaRs z1>|%Y43P{(53Z_tFWukP8Mm!!(-v~j_elVe13>y@BJ;Bo$hZHn+An)AoHLT zu-iNw(P{JkQn110Bcv?;I}Ywu(&}FhPdjQu2K4Qz3W{oN46UBYL21xBn4M-zUlUf> zg?2b@?)AC6Exqd1v~$=^!m3;Y;TLx?Eex~|S{#hAiPiiIjsbLBF-DZX)Xi?5Lz7{c z^|K@eeoYxvr>e91>d$EANAfhP2LB2r+-b8t*#Rzl!f3jt{Yqy!zvd%W@cem(QFO_x z5c$F_i_lx$Y_n-Ba{SX-Sm#EAnpICvLE0ntb3Uftg-o;tk;kC zrPGovypS>CeTFRWjz6-nsul#bG=-Y1#G&9JLW?A>okeu0U?B+}aF+uk;^9GG%J(mWBJI$&#UvN=+xH>_ zNSoumn(0Srk|J%@GW4f}lM{gJdlv67TuZrmWzKpErqSwGA6J2*(V_%j#v)1lDMwFL z_nIR$c}|aiz>Cw2kEYr_OPAb?%Vz&BaFH~1s$#a$-Y@^=9sASYGDEI=JP>BWL4e5W zxWdMo+%R^Eg+QCzu1}Iz3>yM$wYvufz-LU!??YDZDlB*NN6pO*|JB$RtUoV};Ztc7 z07=UN?I2PxUBtuYhk!S)#*W{XT<(H7H3|bjBm6 zOzQpL+x86o1@?4phxYLo>OW7b=1Oj9j6?&4|J;n=B#PGFs<`df3PrN<%56=16(L?L zeQH5X*}&v~yhYX=REhVzE}h!|xe6)+Cmpf#adqbb$G9!EF%E;z7MU!ST-FvZ^|IO< z7-?3pJ)J}HmV)b_l>QEQNOKHcF5WtDM5(eby$S6AsyLW}rexBc*uS9hbtFZ)=TzrB ztxmAw?n2&G=)o*8E404Lj=iRjMqjGzgFEsjY{83o+!%u4rtPUZm)QIJyiB=B46-TD z3_&Xi-Bl|7=n3Ud?{#R8;FavtfPu5C!78n8F9*06Xq#$QQQF!>o+CcxT|U1zSr05r zNRNUee)al5Fdc=|tYr(EV}fOoDI%?Gqwyv^Ik&{MvzNm9)Oo&wR%Kp(|3t%n!Fqng z{?`>hKrYW}FGtV({5##2f8+jBVFMxi--~%?Ps=thh}|Tcb%5paJT&mN#AC7EX1l$?s387bP0ZJ3BvHryO}Im^$VFB-qMGUuiBqt+G8*-zlc=&d!<+Lw*`Km7033WcjIu<#!S*fH4U#`H$n8<=6L?0z$Ls8~ay@)~c3t{KGeBvZr`(b&4&7iQm@4>ljd z+3_zk_7x(-lSSnI!192*^Vh|GVK$7` z);-(hS)li$S8eZ$<7Z|} z7kPd)1w6kDPL%u>ncZFj;st8BFOO__^JJ?Z{q03$T!tf5w8>)il9MeNYm zT&9jD)E}<>bU>9HrhrbgLPEACf*E`EoVF^J4LPbxw?oq6lTOi@ z#yY^Pr-WOG1J!Jzccn&rf&@>xdo7?M^W1d0Jz=K&vqzFELd5;Yz>(yR;ByBi87$WB zo-`FDFcM`dWgJoxjIELN;&9n+11#8f>l@R2tHz%-dK3ji;dM$T=3_If5?Gp`b(VIH z)*aAa$UxhglkJOLjh%OM=0ogeGf7p$a|3$z$D&08wYkI@+PzH;s1fbcHGr|-!PoL$ zU7N0Q$mQXU3@0@qB=FwSg$OW0&; zNojgj;~Ms+b3mWxZ)cE&9Or8GfjiXR?kOXsJyBo)BiV;?&4&Uv>gFsYX8@oJjQKF429hSC=PR^6C z!r^|IpfZCwx~3E(-wEPAsTSnUk;1b+v`Ibrz+9ONuxqmFGQCr$c%26?UtlVMMxm?1 zTZ|WWF2iKpx;cB_2>q7`aHRk#hyJ##=6?o-8?2ZrSP5|0WQV9Dv?H`z0qfegtaiUh zN$I$64|TT;8XM!3nIgUWs1z$*>dvaB(Yua}SZ%#w|GKLvC$xwAH+L441#h%*PT zm;)F>ejnkkgBq+Kl?`?MQKsZUt5M5sM-wU_q?;cWp<_rYK5|*F-aSe&l*qdvHhub_ z_jB0^K)4RPzxWqyh(s(b{dYCg^ejHA5#rm?raqsh)h>Ma71Vp!`l|>8xFnuSCP7b; zk#uM$>Pp_J+S>xWYPzE6mp9&HoZL)HAe%j%o|mX~Mset}j+7?07>S>cT|Jv?62@zN zAt@EP7Ck%F_kw#Ne=OACO$-M8Yc4FO`5$Dyr`Oz&2*=W*mQ5S9ib1u0!DFeo(_bI@ zz^5#7gci|BZFP}AzK#_dFCP9ToMLwmj^usoE|eB5ecJ;MBVtx+l-xBj6`aahBfYU; zo0VhPnGqD`?8XVIB_&7TXzbw_{aNP?{!;>`lO%&H`V zer4mcsTC^%JnvST-*I|I5E9pX!h!TdF=Di{X!b`)Ju`$5jOLuKgK@cv;(Wb)+(;JU z1W1t9JhBK7f2Xz6(ekf>XI-*F&9``YdAMrRw!(mfV#O!XqR(P5p6UDl5EqiTIXo`n z{N=qBKCVAk31+CwbFe35_8(T<-k?u8f6ucck(WCc zMJdU)!yZz03yz#SUx%I~ej9s(;9+y~A3^R%SYo{PkgWy>lMOBtY@q`((^Fi9+yu$B z821}q>^dKVEJKA5o?TmP1co%nrb^G74&+1{(+t}=%ibh$X}_sBWs@48Z^^_zQIhab z&W#k3_rk~(@Umai_Y-adpTNvH3Ll8#@gkmzG1up%Y>}h^AE{5y9S-;J>?E2XG(GFT z@1OvDcoht1Nyha){S-S^tUnue9u={bq&<{M;ze^18{zKPtMbY8{anqtm}}4-LLt+o zc5=PfKRv`}8u$Gx*HM`NhM9u#rjwg)y513 zhdL*bB5+yu1j~y%2gYdR6VaR(-Dla^I6`k%ek)7Y9Tzfzr@cn`(A&A1y& z#62S(FVFu+D7=sc8h`qbDPXgVOmp4?-{muiPs-J!jGXK-vC)KD>~RfLzPY7L=mUrA z*t(d^>~Ud_(Puu6$W%eSA?#MHepe&d3G_pq4;lfd@2T}FT+`zh)_FC?g&d@mcAXF& zj8qrRc}!+yF8wpJC6q$}@|5-~I5jzBkZ9quDEa4`xj=2nuW=Ba5)0M})F*khpQQmX z>G|i^(@LBYlIt6Cqi$r+t>&B#<*a?G9W%P@oO%Ui5=}uJ;cNNN;@`$-`fu@c0XgePZ_s3CSfm}O8TM305U@I~3|h4)RgHxUfznVz$~xI)9>blss~VDP24cIsjHSs_?PEC&H8H3fCwL2gWP6tRo~k34;aCd>cFGO&-Y9)Q%N-}f22=`LhdVwC6ya)^u_R3G zw!&N)`fv5@`?%V}9$m?C=Eqg4G#3b{0*bQ;_Bs3Xkfn@tDYI`NtS{B& zH8~Bk3UEO?8A14Qi`f5*v3m#-EZ7n-T()i7wr$&XRhMnswv8^^wr$(?^ekS)EZ$<4 zHzHSemyzdue?e>G?oqA0S=W$6-UE^<_exD0c}03N%hPSt=r_D3x~L#mjumtso_3NvN7u57 z*p%KPEZAz(!nEZ>GnhWYVy`7yGh|itP}Tk5+elv~witQWD49UM9ggMHIhcGFCO*ZA z#%CJaDN1B=y0Ef5$!ex6Bt2-2yh>@4lD+wI*EHl(!lx^*z75V)eLE#eo}dAjnM&TB zUFiamEIU9hoZf&U?kF%dmRR&Y(6zt>3*4p-++d020d>^Z1BDc(y%t)lTCI)$D05J$ zP|z*cRcr8F&G36R1QIf*ycG;aVa~kx1@WyV%M?0MF#2`iI86HprBt%xdA#kkbYVbC zxmY}%V=Nzg7dc@nlke6(1!%D^?`>xPY{RCSz}Z#ZkWUqIam}L=x;xKC9w(QPw52+2 z=`#aJE*@z?BlHh$Av0ile2TQ&V6DERI5$(V`JCCCj)>mpU_a5i?v@;VQLyhx*3Dye z5lH4DgVh&6agi9@ivPnE;}E}z!pEBNpHhkYgs{BqAGrqgLR|2B3dhSyIa*Op1ElYn zFo`lY3F&K7qCm-ERMyq%TvP?v?e4cB?&5HMo-Rprx zaXc+FX}=GW3oIMlbw2(jOc?l%$DVS92G2Y+Q}EOXmH zVfzw$=-VPxYLUFSGxrt8;v1F!p@PX(YTW#~B)&ie<#A?@tY}T91Svn0eTX$p7BGdr z@z9+-QM-ROa!3oq_nfbkKulWTMmjxK!WOGNJkX??zzCx)+OMk{;)lluh?u|O)c2Z# z<^X8s`;c!y@g)Xen$NTjDrOT8@lx^C2`%nkK)d4B01B3L0V2acKTQ6C2)vXYk=lJ`vDe`He&v@bTM_FOml5cg`L?`RoTy;rQ`C>{vd<#@IA-WIbT499adX+`R zni9rAwC_Nc<3XxJjkRZTL$O-CX52Ij zAO*Qn{d#j46GDGtakn|FqjwWWj?#0C0YJkDxJ7#B(4&a5?iIAmv=co$^*NC_a|GvY zt94`c?8FdPzK4Fx3QV~e21f6ZZr4X$xr(A;B0mt=v^52}$qWo?lKpe9Y##(B5@swu zmK}$)jS!k>b2KQd_`Pdgko>^epL_@;EBvkmZEz|r;2;fa4C#iEbGBd zjF(d_V?I}A+^=I=CjFL3*vvYo5nARvlV-<2u)2hG_q zs^_^vmqo&6NK72gA&4M>hIlaSz{!U$9s^mPp~l$~c3_AIXXBiu>aMlbF*w zR;Rn=wc1NUomTnH;L2=e8KKR(S2Na#hL!aW&dT0oF=RsFU@sM z5(WP<25#7a2?Mk5CAy|%=qG}i2M;>LulT8Ja?|B~=b-NP@J6R}l}`Hd?qqc{GTQ0* zPWPsFCN$-GZnzU@l9jlLId(^iRO%T|JsCHpFj07NGSLFFt}i6BZpJL0sO8$r0dqHw zc*;Z!y>E-h!jzHf*aIlRd|(&Ij2F1ixC8Mz+q#Ju!av)5;(cRSdr=%N(2mb7<)m!C1E{}h zzuz=53cWf1!X%fVzXjs5v%IXimMTx^^1zAv3vGRrT%wvSa$J?l68<4^m*@%1HD>IC z(#ZY0un?3Ve0MG>f2`lqai~_AbtniN*+n72A3*uzv`( zkuzaox#o)=I%|0oeCHw;zH%|keAylhj#n(ypur)RSs6>%@XMykCazC5y^0S zyA^z|^Kb*2FjIoiOjV8Om1ATZ7T1gnfr$?G_DDHnLsgGQRJWdA+d62 z8&wnQT-Svh$1*)zs&weN!GGic1afWgLCzd1NtqE`g9UjY)b3~h6x`CjrFW5XON`-u z4eb8b1=WvJm2_D?AxQB3l_~xzE*a(usJ(4&`3%jdGjXn2Rgf`P!hpLqp#;-pzHR__ zMSY%Mr-hkS62#_)mZHw!n*uByey-f6WGk}usfRzed%{e_)78>+8v}|ZB*0(LeDhCW zoE#=dPGZcoMndk-0&5_Ry`)ZHpUi++I|lCpeJ>f-+C5LDe3m82dC0zFMCf z?`Z+Hp7QW%F|a&jh7tt2sJ7!!bPmqs+LXloNsoS0={DjorLbpLP#;7lKgzomMz>W0 z)kH9qi-+fO$6KrW&Y&Z3XDbsSZo$uoVGDIfk;gXF{-gh_+eS>x1UF2 zGOC_tGPT!7B*|mN@B!@Sl=U1lFH)~{j%*P&Rt7E|wf@IbQ(GtYkR9B+8!Rx@tFJN0jJv4hedW9!x7I`E z-W?6y-Il}ldYhZjsP;dBcpe@Mmfu+E7M;sW4Fpzqtq+980%vBv>>v~_gWVm?Y>!_G^|%~?2|6$L1$yDq60NxPwqJVp5TdjnMg)M zmsI!O(mYK5&SkAWcY`_5l9z)BQF(JymD$^e2C!X{*Gkx4E(5qNUvoBmSMJJ{pqhoD zSo3cAcGT4qp5@T3;^D!w=2R|b%wyV|@4?{jp&c%JGqM2daK;HSwDib+-PV@rt-;dLkbv}TlF?|f+ zb|}WWYNNie1)9as#!Ogr^)}n`fs6@;{X7G` zb>Qjvwl<3hS?Ps3Oc1!VC}a70k1}7rd9e*=@Eab$<016OiCw;0kgY~i_DB3#pRio4XuTm6=xGLNDQ-xZO_?#_hqZMPp!;RG9OG%ioZ%~V5- zya0ixf~lgV`x+&v%G<}2)>}s0zfQhOMn!fPtLEWSdie?9GR@74AjrmoeygG)u_M#ndze%8 z+8&4qc^VFYoSd#V2IC#JE}!o`unHM9?mx)%kN#$0nu!?h(IsY zL>xWOU30|bw&<%r&>+>a+&g0bTze6hBJM!;9FS%)2X4CZu3NoC4OW(_zaR_+ir|M- z@1?yuv;C%ol1K6|v_dMF_;?S>-Q@+cgc7v@PL5`bs7F#O19W4804l_Tm14Hharx(A z5^`+yTaD3U>73_h)MAk{<6tzDm2zX=v?Io0_*D)f1_=i06OlQwT-@-KuQ0L1UCVUO zml^}=1qSj(XifwP-df|oU*KaR_tk9jQtE85C)Ym|b*k9`+D?$!R^r5>1$=7$z@Y82 zuubcmz~>jZ-DNc?*kJ^`U&JHiO%q0>kAXggznRI!R7mOvj#5E8PPsR$<}{(XpUCu; z`Sx^>dJ$6##t*fCy1vZGm1R-GyJ!M$ok(04z&4$2K@s>Up`3&wWM?1LtDot~R3lP^ zuMl)_wSBDi3ZIG4^*)xQ4wNgK2#96vD{kZ62ICh`kJU6h6YxY&m}zl61gA=_$X_() zUm(J1I~bo0HTNA;mJ{x7(8Sdor%sR8a-YrcjkZT=+M#ZtZpCiY4qrKJh31T&YU0(! zf=9TeaN?5DVl5D}Fu^v{c4WpG8}Y=f1u=xFw4DzBLJ23tl_>QuvZaB5z+9Cb%Z-xRQwUgGX*L6hjF6rA30Ew|=Si4vF zVdd#zFcUgc19M@rw9;P!oW<@}GyZ_EOIxe`nJjA3|B87emD^V_8K5SMsXQUx@m+rBs=K(o)hWUvzpC!)+3z!U%AvPa?#ZqDt67#x0~kLh zsa-u>0!+wdA$WQc4qRr%zhkD^)NCt}?4pBD@zLrxCt#?g*N^7+TB!;}r0N+!>seDX`v0mD4lk*A@l3uaG-ok!J{ z$2>d|!NiSO8fviOUWJ9`%11&L)A)n3swI$6Ig3ROOAe^^wd)?+ahBYC_*G&P{q{JD z583)kki2pklvxLL-L?kyQa`+9gozE@W5%H}EMqkIU5jF!)D+nDn!sFRfOw z3R}*v^QBEKQ!~Z19Bo+6xxoExV4OS}^^65hic9{&LtTr0&GaSq{9oSj+$5nsz$`~c zc=azp0tm5JY;!3m1y@cvd&*gyyY|%lr-NU=M_oS&B;aQnmJHUb==6abb5NDRdrUQX ztAE~81ktShWZKwc*iVJmqH0SEdlR4#( z4{C%!KaCtB{THSmeRic5WfDPydG{q6UxJze6nW_i2t~=wKj3Ab343GXRwLq8B@&}4 zjV&VY@&+Y=%uMErQJ|-=TYFguoW8&$k?he@vngwk;UfuuC}t#NL-em}dr1<%Y+`a* za8SKrW?Wdi5sc{=$A#SF`>5002Kq*9S}3>IDb&&)bT#neX#?jRj^c^NHnbn|e98eH z6PBShHrOqfb`lLI4<2TzB%B*?N+#SWr}?B}yowe5X3dcFiHsyBT!^eB%Vw{!7bAZ3 zsU+Dq>+Lnr$nqZcpW7`vH~f7sJR{)wI7=H-O0sKm*F|Y#jdzo<{rp{wMCJ0Ajs-Ei zb_xJh-0A6gy-V8_I;1G7%v_Ub4$RjE2jMje%S-hhq;FlvmDWtK&MOD zW~p_L8Halb2h#=8o~Onc@O0-^Z!bOms91tt97DK&HgOA^yOoQm2 zxvUWpCLt}P_&tZfMAQ5%qPFaV<=C;)Q^mEMw&ZRR8*0}ekXJc@ls0K01WO)tW|lfx zh!_;I?Pw~jh~;tw{1vST8Jb!{??Jt!!lzS!1^NlR^^OQTE?YO0R_}q)Vug_c#7-9P z-HnIRCb4+x76wsL}1tzoaHO7)yf-7l_ zds;hl!${m)GdEu+Khj*d*|t8d$}iS$gsb0vyBPw^GRx5Q$DnrL(;WdFhRfd@id5ra zYaL@+w+-t%J*wCUgtjt2f3`AYpqE0avI@Fk!}S}O`lao($k$q5!t)Pbw<3YK!>8B# z#q4aB@5SZt9kKKdUZGLNlHDxdUX^!>$GolxN8 zQORq+dtKMxGePaF`E^PCIba^l!CT-qXGfb zJPkI}y%AQliq=3C{LYa{WuNNROgokpMciThWWqM{^VqC8 zmN@c8lWbuq+%QjbVG5r645KMGF3A{N6mif;LSc{iKOktC+5cs0l9)dCrw6Td?BQ*S|lDtURcW#2)uc5ov`Vk3k+ zZJ{^uhRumZOTuT@v&}=NyXz8+N_q>x`3)+~z!mF@LM6TFizyA*GPFMGuK7>)5|=UD zJG|x(w6dMyYN@=oL#sAC;kS5>TfW}X$79BigTikbC3m+)MNo#?!Tv(A=4!|p4F9;S z`mcnzLQCVL^_bCJRuT6yBznkKVNP{q+dN>b6AP<|o(k}5BD_lb+{%K^KbF)TO|KpX zaxne^!QHS0Xk5YT@&9&{5ke-2>9xf*?E5$90rNr=UvZ8FsTDx&$U03<$AqOn98Me+ zb6pEr<}Ko_sC{FEOd0fZN0RGMqsrQi>6+QYUu0zn?oi1Dd_-K;J&G2%@|Q1k=U{}` zZ)wpBgtEV`b5(3zNnOuf=*vx#gvLc)`W@px00Fgp21OQ`*!8QP(R!iG;LoEzO}P2KJjHv2t0O5kWxJ$u<+)%)&U6Xv`Xw z;XDP)o#YV6Lz0GlcJkN(wK;WC8yN$(lp$*pd*vR8&q3^d^@JKSm2MR?)(q$l@KvyO z$3X8zilx!hHlEyBnS zk6-OQr)sciMOnu-{NQLz<{=X>t*a7Ziw52zffg832zA-iAO1z5_Ho~dBxr3?-hdFB zrn-)tdL`z1ZNJB3&b0zIdWg7tC^{&G7M2y|0nHoO&kLM4jbP7ln_byQLJH^vqry$2 z7~s-Kr=CTfJ;UkaaOTZaTKohYC_;!=R&WO!g7r)>MJO zwIi9Rl(Ms`Cy#}YXcNW8Kt0(bPS6o$%+54fH>zxY)cnw<;Ksq*grEBFK8fyAlwfo* z5p;~c8eX=!m4}DZ@-+rw_JcBM?Um&H0gRL+`K+ED{)608iEsUW1pF6>)cJ!UiKnyF zBIPM4ugqKBT*7APaBHC5`Av{02zy28_S zL0Dda-%{gQy83IIF?t#(eiKZB-E+M_`hcas#4i4!3oVKD$jE6~C29@5J zTtdE9U*j~8AV}JpIUlHSh+^Ld^b>`s-%g;z1KMpEC*y81Gm;qB2%T) zal|bxndl~UO!#Lb!{M0fEY&{W!73Lc^3wS(W{k`;W5M-ReqK(AAM`UvvQ@|x(ArJ@ z!k1sr4L`W5%e86b`7F9&AT15_g04OVZg{h=#62@QC%r??-+KyZcPHk>;O)%2E$d|+ zo8+f!WK&Tx_GyVYiJ18iUvwe~!vTW9#N@S4=E#@RmR%n#+9ms-(~~bN3n9#^sg2Hz zPFt9U{bkQ*z~vr-hhg7fs?>Rgk)DM9*{^19>WE04DheKKAoniEYew4lQ(N50@qeqb ze*lVYBB`Etfrx3Rb2^Ju_^gWb{V6vY?d!mCgu%Sd{#Jjg6Qc>|^IAWuWlVAOU&5!l z%WZ|DD!hT7TN`)!qVu>63AF$bde(BtYRy>7;zE4&&12I5b3(EC_t)XO`{_;ddOwIa z<)GFP>v_aQg+VJ$^6{on%F^JF62tlM&6V8X&SoKgP3Am^k`u*YCs4`Zs7kUhb(_+TTO`aZd60NB|wg*{d@GF6j_qd(-9qS}dWM z$?la+O<5p_7m7RT;-DS< zK=z7ReAUzG(sfE@7JO!vIgN2f4?<2WpIvUq?lM5T!ps9#8ri~AX^afDF~~LIZRo`H zD<~$ML<=0yVh%hd~+mx1NJs%nwNG2x>t^u|`&Qv~YYFo_ET9OW^c2hXKk! zAq|h0gewutn!5N~6G`+(+fHRa-mtc+7*c5Oz$P7Gn}G$&Yuu<&7U4AjM=1P)3MNJXUG$OW1 zZEX*@M@yZL>n!*n4r0@LHXYI*H&aC;%B}ho9>{AwRf^soCm)p}>#&SGUc#k}5Mqy{m_6R3eM3Mp!rh^3=i+X{k71j<$^u{$paw9mskMBH)zMOdCy*!!+c1v$XdV<9>Fy`%GMx7<$=r*b$(1+ zg>I$~^!pM=YT>@684fNgX8QKwO4>OnF!=tB96GuNgO{LZZDl}Si zh01}Lc}{1xVu$D?WoDa?-R2BRw?MEoc^|cChRG1$P|!O7)|t6D)4yZy87#gIZ5l~p z+gRH-)MIR6$bhRDG8Y-5MF-=43<*(2f?az;i+@;$N17XJtL_k?S`)HuyC4cKGVd0m@W`a+RS}n%KiZb(rD7p?4e#Hf+{cPFvZ`sW#0=-X2KIWd znudEMME8Sw_dAHiR=11i5;{%$mxX)|)=thZMEO1fjQ3n5_4vN6VM2VwO%XO@9&MDL zcVLR-#oMwRG6D3fKQW*q$6bnHU!u?};_Il@rf5M+wn}BGc_mcD1DHAO2$$0Rr5uH= zW0;Uc#QRA2bUjFc$LRY9d4mGeKIK;dfpQ#w$KxpGcwpidIJO;?xyYZ$zA^u$kVa32 ze#r>3md#idew!Xnxbw8l@7kD!4vE4~?L;8&AkR;(#6rc*nAQ~zq}+|TQ1FLBvSyhv zKBs+C(?u3gbcqPfe}tcvHN5*_IHVv!6I;2^Q4T;_aGl4?DbvA$?Ht8uY!vP8i)l~b z_55-w6*o!#WfSC4m!`dV0QU2Y`FRO=2T`>l|wBIM}U^g z(9t8Jda9=0QtTWb3iDMx$_OEXeO%kPs`-V~Y2(g^QN3a1@~*4Ct8ln4kB*qpC!ec&(VlMFk9pQ;G)|;^NdgwUZFyt*eR$?ukl}j~ znEE=67y78E`JsyQ%-gi_c6C@9yp7Ix74ljza3phD_A}{(&5^ca(axs_ZIB$|isXZH(D_5LiLWtcrvvw9;4ANau8)$pKhwmSMfAg>v zEPquFVO-}B%$L-oD~@>M;9dSfnLN`?5K%q_^(>Hn06jq$;-YB zKYen8Hu}@mYrw}44DbwQj#Z0UR_Iz^){~W_9Luzkk_j}=;TVSaYzzJjk4i@`EUDu5 zuq>OoKGzqGslx*NQQ{1u0@uZkn5$a_pUHB@^#i z>gBLmz0y!U^s_k>nIgp}ONHIU$LyuNK(n@R(Bc)%7DNC)WQt9alkU!2c7$SNgk>s@z3O#B*azUl9u?A2-p8zu~&K zzvv=>b}$C@D7EpQSa<&}A9$Nqps5T0U zbJmfmT>#X$P}9lL!6k{zBF(^XEA5Lq~Lky9heYD$_XtgZmOCUNe{NXu>?i1?rC1IBm{mrcR~q;mzjD(I`^w0 z_>$={SP~wqF|~;(UEW@ zRX|iGBbS8ns(?@SgGsQY8l<|S1LHimhCWJfOP&2(27icIGn%veos?{Tc_VJkgKgjm zNDUw1*yowNzhtPnwvR^*jI;I^P)tWgpbM>yiMMd)SIRUK#LaLNeZYZpknbPmK1p)n zC{J(?*Wzh+MSj~W<<}=qTy6XJ_)4~@i>ou5!Qhe_NW;wj5LlFMs zzzEOtWqynep;PX=r+09HAqfq{X(mW^_>&ZCl@j7MH}cAw+YM15*7YM7pMi*0v>YXX zV;y8N3l}V%{;F1wzWp*lu%O&{+@~~gU4jXXy_)%@)jV9;{iJ~6p-tZbf!#AVp5T+` zm7#th3t-lrMA3*6nsfVp=QY4lKO*D%;evS&C&XA~j2z8J(;9?rPZt`i$p)VCgo9*{oqPmw3xQWfD7S&FD3)*xXlHdafe zlun&z6Y6;_3flCc9Z1ZhochIyX&kMw$VEAZt^a@ z=T=0Y{l_|$^zqVwZy^hAsr|6noe-0jgBmbXHA+y<*Qku$ZqJwrhfV{b z{UL0^D<(6R5JIZ3T5T&uIv=8VVdTM+kp{)l=&?YdsZ3hKlZA`vnMV-(k#1!%K4);V z-y~z*pO+ZGYKk ze^7;dTeZuZwil9doaV4Z_O+z{Z8_n-?@j8;rE0$gouJP((-Jcf72LhI?`YL2NN~jH z?h?b2(~bj$M+5ej_Jrr#J2ZvVt9d4VH&~g^E6I5ijZ~X8p=Sht0(Dc9{BB0{zJhe86b+4kNCR;BgyTI%^aQ%)ZNsn&rU~|&S42+XH5Mkv*BSCD# z#Hc8=wp|CNeIwUdFq zhRNpAw<}X6K6ZrY-U(iz-p?!E?UCph&{A650KwDib0>%bjV-SOci#OGdy(l!5*X{3k7EcBIPGd7m znZFop%#&T9QH}k@etq%zx=p6#m=OxagxXB4q^@$Eo6vf8zo;OQ>FqvC{sY1 zrwRYPCwf5Wf^Qmgs6|y#?#tOJbi2^bdFxS$Gv1^uy==r7enj1^J{(NsD}kih8G_># zL$F)`6jjpzK#AbI@^0>)m2A>&249~hiJG<6!3B2-1{RCHnd<5W8>4&R3E>wu3tzWj2n9SQdPJiCLCLT9 zMUY~i$aD+yNpI}LVfw9=cXV&dLnxYCY-e$#sv7>^k_(m!M0!Bj;wVt6a3w=8n0CjLh5i>fXQ`mrd zaL-v|1N}&-I6b2UX-!ZYeDAUHkhIR5p=I+-*ud#<_bdjiKwRpa#BqyGFlJRY=qCBu zmUo5T-u>>Er$0HHz6oZ zym{~nl^glJz(og}XW3c@uWP7RCvP6rIq8PwbcCQ)V4l|3yT*Fn@U!XISg-MJEj${u z@_W6$ML<-AeC)Idb*;)E7)0)&6j)+F69j=I!7ioC^wb-#Ie?6Y>vBYGq`ZtppU=7d z3Bj??{P|Nh_|#qd134!;2%fLYQ;`#Z!TU_=re-^n^I-Eyx1gYI19XJZuY14Ml&DXHBbIc| zfKj2KnSRfVv-_o{DL8L&S{EkYm7b+}7}?X>i-|wG{?KyE{EjyvGMh78pG_lv7 z`d!65Ez7bWw-?TeX0c%}KTZ214PWI}`CH_fg3v^}u{h<0liM^mdIJs8tplVCcU*=Kh7k{Z;7+YrUk}4; zC|$o-J^GKCYbl|=GStYj#^k^8+hq2zqWAyTykoAo$CL?u0P^LJ;2n-~^uiQ7&EkQc679EI&m7%7 z!E^nP8@X&4V}Ib4$H1SV?c71k^^PiQrb?MG@81mv_+NVj-6|IN8RVP_c45$N+;N`t zVuWc_BrwL}^7vjU8Srv=pmexH&O}H_8Ypx`2**~*eGr__ngFjF{w&$}QD4Pw#BfPP zek69hi~124!yzuvIk%P->vF+K+b>MG6oRDl)8w;|#Me{g*Ij9ZMX9ya*h{(LS8(=5~%Lx3@AY56Nf1Vd{SbI#K zRr8%8TyGTBOC0ntEx{Jwbi@*DdO3}%^H*PEWd3bTXTGj*^{m38Jq31uC6WS%{rM_7 zUdWZiwXqiLPH zEOA#G$J>)m$J&Om?Jwp5$ad1#G)+7Hr7j^|xi{uwo zB06HJ*&Shb<*v(5&GGa9_VI#Sc%*r69+_TIIT-*0Tboc0!|!?6Ru2qZ zwj~{dWmF8=*H_ScH^0+3QVF8)d)QK{M0~ho&)D_GYKI~7U|c=uYK60UWEDA~pjNWg*rqE$>Tcs$;2O8KDg-unkO8d63K)LLVSU_f&!h&ttFjRvv;0O zPhnIP%y!g&X`BH)bXX}0lut+ku`TRlXQEeI0XUkz*fUMQF#~Wv(JUeauXJ!;=y(=( z1$_sJV9x^6o1?iDTIzc|;TM_((Rt6fayzWl6khqzWL!zg-Ncz45AG2hOQ-{}ZS`C+ zSrdHhb%xjpMSHezf>zcu#kzAejzSKRS-GmWO?|#B@=F`2Ad*+II;^rkqe$PchX(1o zsnQ%6U)kRkjheULF8g$_O)Tq&hr_vYYcn@U2wZ0|k#$NmY^Qk?vb+7rUz;!N$@u(V z=CO2DhlDu!H zwlcI^FRH%F>N{R8mUWxiF%!~rY8oTMx+#fiiE)9^1vF(OQxgIL0Q&?+VT8rVt}Lw1 zY%I;Gjm~T)Ko!_o0V%RJfH5)vWME*T8B72SxxL`UrJbP70ZJH`dxHR2t%Z@Lv8BcR zGjp1As!HlX{YRIVRr{95LuTef;%@SYOqG@W8$&4jrWQ6(2x#i^DJjX}@=?;1LBq2) zGP$s{fKha!t7&5ZnNmkeTjWYr0GPSO{h$4C{OfaSB941GIOo5!{A;QziXQogrf{xp z02&IZ0*xLVsQ?rWJy8w)3u+(*#18Ttwav+E{pLzXV%dH#V!`(QA&eV$eyQ`n)xV~= z+rP&1{R~V%GBhzcfMTU5sVxjozYDSpD^qZNFL{3>qQ3ooN@D>uxsjE{wfz%wVhXPP6hqlkSMYv&+kS)Mo!P#`!3DJ+ z{gRE}};(){?C>FwDIo?=`|(9Bt#W{{ci#Ooffq=G^$d*GECi+L$I1ef~`EGFdvjIlDdsn-X56#4eai(x5lT*<|;kqk0ZzUuZ z=Ds!CABqL<_2GIqU~1Sl#&Te{5%nOfg)rU$>Ok>)Hy3U7?~-}cu*!t#Um;BLvV^(_j^1MH8&G#|{rnPJs; zjcj|J7ThwWev46`9Ah7cMQ|2}KYSx4ms*ldlWr`jb1lxY9Ff~c-`V>1e)T+Ssz4#x z5=A^=&3i5*U29t@#YTWsaOopHQy=bBLNeX`Ha>`I3#8f;d-{oF{oTD2xJ!-gM@K#Z zw5%ykRuEK{$tK}jv0ueVlbF4A3`zW9t!Yh8AnU#|Qu*qqGlL+AuqqUm{{W1J7?bK; zTBV`O)8#nTM*6-#(+yR#$yE%jQ~l)dTDe|#SL;+pA-^Qpg&qC}Gb6-S+#X$7a7EF2 zVxVTDYFqxrUn2h`zQG+YFiT)rr)whPkC1wXtnRntR~Nhn=yu% zp2>YI1D!iO{-fD$LI8TRF(L}rCV@_yGn2RDQ(%6}E{H0W;B6#|?I%3W|KdEXdtnl~qh6-pbge<|X!I*c09;hnCgxp(ktLSBX542&lManF%q0pwiHIofuv z{$#u>d<`ATEXVt0CHgaaN@d6f<(JI}?Ik~;XNuaKH-W}8D!|S|kG%@)rz2XC!lR}r zSiAl*zy^$vjQk85IErJ83gj}35dUkoV9Z7}hHctNi6+}U5dAAV0+2O|O{)m}A!q@G zpHy4qP6>CizzC8I)U$ZG!WF=Tx=>Mr5TkSIP_CLPN-09f6zmxdp5t-sxOLbYV9`q< z@Hfw=0)5A?P0KYhfz6^bJJp zX)4S$4Pf9G_A=R33SAXpF9>K#!O)`@V>s-IA~P-LrYK4sO>{dx;B9Vs76xiLwVsTo zvYN;w3IWwNHeWKkR9$OS$XbZ zlgN|eT^#`BNMZF|<#}oAFuALcRkPDkrr=B3`#q5hJ><9*gusA_5kk`fD@%wtD><3d z6mRt$H&A#t2mX<7r$XN1ic^~4YQZy(klCP&N0L75{q&)b#a3+5$y;`;D9WHW+s1WJ zYl`Jbz(&V5+tGIGMatP{w*YbvETGx}@NxyOCd&pzTf=xj7H+FVeE>eksP=)L+e-(b#M|Tnq13h#$)S zUYy4C@FEbAMrK3HV(lgnUI*Yn4Du*k06qc!dh;QO##r}nx$i{6u0D|g9f!3 z?mZCL(7kj9sUVpbC>!-rBX`5WS8-&;S(QaLHg@!d;Tm47Xs5Zkdeg+Bl?F{>+%JK( z_vMML#<$sS0*}RKdD8H**n1xYE0;#N`&S?7w2(2^ z*N4=PbL1a2SH4>606Q@8leaFh>P$>bG8Qd~bB`5I-1W~PwathktWsVd@yro(MulgI zNKaY>Oq$3cKsS7$z~83&jGP(jOuX(w8_Yw8PxdGS;jLgBASrXTn}dxIU=7 zS4*n+VjOSxKQL^rGdjVcu|M1q6;FdK?IB@dz~Z8btw?H;1IkH)9Ga+(9h*NS@h638 zg0xL87$4~5fI8#Ny61q8vXHXyeF@f-hNu_)6GT{&&-^ zQro%xiG>-t+v})0-b?v?3yE3&;q}|aUcs9M5#Vys7^IRua56pg@)-X8xk+8x;8gw+ zsR+vK=tLuUg(2C2u@LUYgB}_pkUF2nb&DlczLAJ#6z$KwX@}C~WrAjlfUw32>8{k* z%Dq0czz0-;4=oJw*RM;ykiP_|VJ@GXGzLe|9+zO})=__F!FM64Nt0LEMV0kqX^J-Z z0PI6GN-v&_29>zY(qBZ29X#7>3RsB<%Skb?s_QPwAZp=y-=yk@T=k*{f;APVVN34s zRn(+8A_wN%5kp@1+wMhpKQ)`A^_rW+8$;5#5R04s4-mIjh9-CAq67u_zxL!=;##&v zvjt=p^~4Bav7+PHNCx|j?os7;T3B{~Wbfn?>N732>_!D%sD-i*$!zLINdK^P)=cMK z$-8-7i3M=DRCSRt`cb|2TN4?H4F@efCZwlTANCp7u}S?6Nqbu(#Ie`ebANm&)Ks_8 zBtdMVoH-?iA)RKMZ9--245L;JVAWasohq`YY=pfqdIkg~iRm7tKFBW;&lqb4HrD-m z0o)PNfHt|px+g0mMgSCOjLO8|hnfjOal0i1ipeC_9Q%~P#qWj@nOGK4cmy?yLByX2 zwL2!>`Ye#OeUcm?hdj%_uNki zofRR!=+o_(`-plWH4=H@=Rmnrr9;QFhJ~FI>cO+n%XNdGfg~h#!IJ6Ea7Q+EP#V3Q zhFn$uXm7^AsgW&K$NPP5UShuGErl_kq)q56;(9dGW^rFhyj(43qX5`(6H*nOFO$B5 z9h9X;kPBFC+Ie{1G+#h$xoEL{#n7ohv2Pk4``U_c^JI-q691t%t1O}@MARDmTX`54 z4&Y=|MtiGmfN^0C@|UUXvbRdi?TYU^^+ot#hPpLS>G-j~#)1>m#MQyBT=3ZliyZ@L zPGc@}IJ|4>VkKI=8_g^O3&l0{l0am(a}p0e#e2$d>AlHsps>m}hMyc2ft?ym!)gF) z3PM_2|I=-z=yYv8OY8WNyWW~jRBz@>A+aOI!Az=XI_i^pe!@k^67??XO;=0<6`N6r z*Po|B&_}*q`Ps`-^Gg^}Pen|?0_Q?usEBcu@jQkZc}o6#^Hz`HZ>VT39rrCtyrFjE z$szP!?ckQu0Z>X74E`iV^iN?op#fS~9FQ_xb64EK$M0WpHd$J}k#5mbIe(7#Y?~4%X4J45w zITJnux1w(-J=K(cMd&~TjkbdJimrBuV(KpSHv@dQ%oU{*A4YMnJ5NPh@)OpYj~kC$ z$KNpF_uYx`s|jj#my_^Xoj{ur$~EqRz!EFfrZ=?H`N|h}36jCQqd16M%ZZ@4fSO8!4QuLILd0MGq+DV z4d-1e!dhwwi}Qy)Y(uNJ39ZWsa@mUypvrkpU*2p@e(6e1OJi_tQFtoP_xnaYbx_T} zXmO1Ay{s%=xv1xjri#B@lGpH*2A55h?`0ifw}>SH6=vVP8W)dt!3?CxaFtM69GHlj&oCE2QNr=WcxAZ8 z<&Iu^1Bq+slSp%x1^-Il4mr7q7C>nhD51LG@Xn&gAX}lG8;wR4&@?tSW*p3AxnDhv zZ&^xkCXxBl`T0Qry?hbE!7F)!-k=+P_hNtt&J0VLhM6zB^joJrLtbqq$J+g)jFmha z9Hi{j-5#f4`Ta*8lj6YQ_f4$~iKY;ose4f!Vy!>d(o*0S7o#D%n2HksOOTr%qHn&-nJA z{Jovd*n??xO;1(n=Zn*|hwAC=P|r}_y>Y?pmgt4uw7C? z2|9&#f7FmR^V&jcA{!WnPNmyTiFLX5fMcd_$FtYOaVS@uV!2s77iq7eyAO`HB2sy4pHCPi-6)RKHPH&k;+H+FyHW8G0A7ZW4V~VA3xyH zL-6%C%A9~j-bYBzuaH?xKl?mK+hJ1jVjSDb)-#1Gtf)v^G9&&tXnG(O6`=MkELaue zTgfgq*oCWhSlJ2M@|u6-N1>}29S34bA^qDTOfAPGkm8A}?OUtazLJv5!NGIHM4=(h z79dkZ|H??R6pxW@C-mEd9mN@{@~$`9d|}F2b*LQe^JajG2_&=#%ZL0Oi#K2}6RsAP zO7a)2HX7cdO;zhRACT=NC9NPE3pF1i3UbQ)m3(bQ2JF+XrZK~KGd1QiKEG@|dLstz zSL$okMjONqSezi_7k#H?rBO9b?g*ui*6vR$fiSnp`_E>)Gi?!ngzfiyyttm~F^`gO zQX+(D=j2mEG{$mJ4hz(NYm7_(zETWLaCnlU&S;aFLu{P*JWNlZ<|lq?MCM*&IzU~x z{7Q!VP^0l_dt{V(p=LRsC`V^5it( zTuv(NEShE+D72xCFJh63Vn&qHr7pFfC1ZUar0)d9B^ z>kv*|-S9#UoB3eSI5fCA=t3!f3Ly6J=413KjI5c^inYGv@Ov?G3vjDcQvF1w|9t)zmwRnC?hsMgqW3S>lq-zPsmB8>(pF_*CZhi zA+$I~ocLAvOrhZ+Dx4>Vqt$E~;W|R!9AJP*$k|A;zK&0jlo$=oR%uv%rTGI@bjk+& z@{!G@jv2{`GZ^J^3R=3xz=nb%L_Q2@ zXJS4@0yKS6#1JbI>>!d2&a3h!n%%6AJ)>aUm-~;wU~rOW@J)P8mIP-`JR$xgT`}6? zj^_zHWiwO*^u65Jas~BV)?Q9iYH9=V_Cval84hqSU#|pA!eP4uVwfeoS*l z3Lp~e@(sdW)@C*ecBj2LrA9bG602|pys14fw=KspOMKG%HqUAS(;vgPOAud<1iZmPWn?=hp4(2HXG8Lk~0*hJ8bo$A6^<&xMy zK$0)}JF;)Ch6wT9LTWMyl{Di?qC=YJ>!ohZk&}ZcL=E~h*uLN$VxafZ0y4eX>BKMx z!ibMI*DFTJxMQ-F7!w8k^ZAE~Jl!!j4VRWK)=2e4FtoOd4H(oY;1Ky}bj@US>OayMaZBmc!&PwOP9-+sTXEYff+676E#@;MaSga%9Q#7sAT-2bW zx+*f(&gP0IbCMdv3Dp=7BzohKcD-x-+DZduR~v?YmkMIO#XO&BoqREhErnu)_+Ex& z|c zd`}`mOx;PdULzZo{p;8tQQ0IUIg_)I87bK(B5rX{dwI-TlNLlr@ra)q-v^h_w`okC zJ?(e4@hYHmsW!|H^M}NIlsrG+9Rcq8-KA)+6?$3TaE31FJBGE#&a}hyn2fMk#0yyA zIem;g{zSek@15~96N!=fQMYek5}MF3qceSkdj`k5MEj5T(!LcvJTVJ$y>F9{S1SVZ z-HM&16_=n{ETK_N;>=5`Z#vFZL2Ix~DZ}01ueB-?hj2_xskyA|#0LV^%xYi_y%JW= zH7+0!-*ENHsN;oOlqUe=5o|K5&i3e5T`fK9X^RdGi`a?!@yUlP`R>ic+xLzE?m6?c z4=;`9z;gE{nZyXwiK(x**%GutuMvdKu5~9~-#ky@btKjj6DP=)<#y&f7?B~BNh6H0 z`)m?=kA0Q(HGiChQCOx#^u?``GAb}>8zpkl*XDM0^c93kZsM2?xc4>%<^1@m^H^@l z^T?a0X^31dr}GDrU;>su+g)WB8lIh+kQ%3r%z3UHT^eytfuRf~&6Ym~mlxMU=u zgzPW%0AvfN_8Rp_@`OnEu}>TQ*jou~jfS>wp`xN3io2Wm(K(Mr18$}sMoQ*sTPhM& z+iV8@r0=jQlHAfPFz?!`+z*UrbJF`42X`3J_j=xh8&n6=D3 ztc6uid>xE4?$V`mFDV3_Hmco6fgoiSU*CwYDIO+ofn%cFBW9yb66Ral-t@=TWg-nn z=GE^%A`1)ie$qAV(M4I8;&cVey=jXVZKL$gnY~Fbz1@h2O?h>G4KF6ZROWZdU0wsJ zlR>CKOkCjH+o#|qr9+@2?*-}poGc#n`>k)od~?ZNpB;Os0;UB(LXA~O=WSPFG%4;M z9O}w1qfd$zL7Q88+XVeu+Iif{Q4OlY#2WgF&Tde+iMKEsuwzx&{=8cOg?^<5VVduF z1A_D#Gk!0~G{f_~`BBd0dnh5lN9+HJ0XK0m>|Y+;?kp6hL(2A~_79ePk_8*P)1pQV z?OTBao|b5TKMS^vq^Hkn}oBDD*qXgXM}sA zFjoKi9eOPWVI}*hAM=}tmU0qtHNwMy?kI({&5FjCi#(`js+3$+ZUdZrvnLiRp{?Th z?d-rv@8)c7*$etM2BkHsj^z`fafEh8%P)0NK9n6Eax*y5#k}**&Yv>$ZC9pf88bZ2 zi~)`;dZ{2_gJ>$rDWZnY!BJvkK`n=(fTV|dSpRGL_Yq=Qd5WGb9wn?=6vA(0&2FI1 zj1~zUS=gJvzB{RX z&Q?v3-opJ#MM5(4o(<6Z+&HF%&4w8OHR_TUq4Dn8uR6=efaQv=`K%#npdnzq*v{fa zx_?+^mzw~RD~zkizIo4#_pISM=u>W9IV74gRJysqW3nqA{!&>Bsparpe1s<@%>G){ zx)KJ2E;*KNcbCh)zlE*ObjZdIX3Df?r2=R%zQLQ}JSh055>!%ar~EDk3obPhh$f$= z#$%S!Dl1OZ6BfH!~0_NfZQW-yD zt{%_qY8YDVP%owh5+ZmoA4!WXmjX9VM+gSlHG`50m_`KCSKgw-wIcp-Lv0>$pxUZE zLQ^}KAmFt*)BNuh9W$H^ftU24ZHhI#Bf}eulOOT5JVRtog!KLj2A`i1JgXtSnqB=k z@4nl;^awug-s3=s+($nSr;UsYL|?W~NJEQ@;~|O%$zCu|Ba^h!gFpnC@_z1WTcq=o zgp#Hm*GoGo5mvH|O=LeIx2~q{v&W*k8Z#WJv92{}gjga)PzFL)8FS(L(cLiPZ;%g1 zaP}r~Vunb=S>0BtRf|84?}0F;VWJ7t+pALG{u-DA;8^NHyiqI;<;n19qCgZHfCeat zSgAW4P_AU1Z|am+^!5Q2s=#3X<{D?0!70_w_r?aW-Ik|&=gS?V1MOmn>NYT}l;l(! zPJl9$JO-5jDALr(Fc$V9Nh8iD2UH1$O~I8M_+!-Py~W*v?k(I?pKGXu|gWoRrgCcT{rW#N^! zzy=~zL_IzD@k+ z0kNnpH|lgUT5EoZAIXCwRh8!_c>(a(eHb2 z!I$_+uLF(5%nWL*(dTX=X(Soye*k@3+%A*v`G))TlYg?5B`S45o0s)$?gYnWEQhI) zCdPk3ra|&K`Z<_T&LJFoo(d^rC3bRE`^SasTzHkx&@gvD;(9!z za-Tb#CcF4f);4PqI)JoLwZnVYpWu%1f`zW?V~mw%_tu=Gc>RlM+rFCO=~wHheGJBu z^lg7XlDSJOQs7SdGC{iBc&I9R>h!}rQMBTc2_IVgvGdi?kgQnNe#wFj=D14T+ z5`g3}YnvXTkTW~mlx9IaY186kRJ$ii<7^ijDC$s~rKyAlw+lYQ#UYYKQ!LJ)&`hV%os&rzS7na=Ap zj39RVSieLm|LACk1vBvk8#~1)_yIMd)U|OJQ*U>r7=N-yPdQm!c8s6m6rB5R*_%z! zP?JLi(Y0ca!ahQo>fBo7E7@wA$_%w^-fs%rEPB$a+WEfm1d8^rXKwu@7FRBXV8p?a zXr+$iH8skmsN}phtkyp(5Q<7OFkn0NRKtttXEqAX*2>;?HNF-M_QhhQIAw?Pp&tSc zJk)z)HL6_AK~SbIM}uNV&8Pg zy&rTFRlHTej1W4_Kpe_O15Qi%ghbyR1V!G_gF0cZS#(jax}dxre~%<%b7_S!VGllB zbxRK7^GnQZoe&+W*xD{j|vu@by^o$)Rn)Ny)4@#TtKGZ zt+zjGI8oH05Y2+e5d$N!Ym(47`gxQ7z&m5j-Mjd^_nK;hYzQj!P^QLW_RbQ>E=YL~ zQHGbN2?!F27$;xE0PIC4nHPykXf?Oiq@XBx=*vG6g(*f0%MTxM!N^9<3ufV}u*F>dSGi0CgTVeZ!RxS^$70yS6l0PkLuqji7r|C$`hh0Pkpf8Hn_<2@!Ss&h(BI(R$s%p=vKOBIQRan-?s}ra=^@Z3bc$+p+Z~ zjlvsF(()&0j4GQOk|U#2dgLCwe3xAtlqK)*=|lCtl)K_0nL|r33=F$}%4}7oXhQva zpWtAG@yYp#=Mv_g4Ju!)M1(MJ?%)^EzznocYu&JcM$w{Tzciw)(ltQ_b}@{oNgU&c zJY0br8QIJaK96=7$z<^Mw6R1s*1cj_{D7@SExxWL-Fgnt}y zk+{`f3S~b6EZ^2I@}P1Zz4cbDlyM%|j3R0|6>fzh-g!gQG_36m7ICgj4Q7oL=Lp)y z0X+O6eolN}L^PJia#vW&v+YZ)lUd+d#ui%g7xdplI0vl*y_Y-C?eH7cRF~rw^c(mK zeH{FpoRU<*rgm!aJ6OeT4;xE@j!Kx1@uG7~^Kx)McjX*@6AiYzRp-sbjD9Vq&f{Q; zU-3@??UgIf_ioIrq1APSyNEhNr`~(8F^P3-x2;0ycA|#3P2ZNOW>cY`k}ibUQt7=1 ziOCIuZ0wOUK0I@xn20GW*n~`>%!PhOhPdPpjc!Bxu-1vypl^>^y@3WrJggne;qk*q zW4R+`wamIQ=c@UE$W9QF>+I^G{4inkoGACwZL{f>P5b!$@Oudz zb&w2{tL}wH!SeMeC4G7OPNO_Qt%qat#BiMxPHoJM9Wll0jAQ~PX$=1JZSt4fKVMO@0>rfcrT=;4xej>X3ZW2Q)jvNsv1Yd94=R z)&;{XmTqp?L792rTCe2FNusfP=8Wq;R@%Vm8 zk}KFgf)4Sy_HnWG-lcIZi}bldm0Kj)e#i{Z;f6+}v z887XNs4f&@)W-%_{D9x%Jxxe|fY^f#X@Mlo1p1<=8ERETpSide zxkJ!BrUqb)6FECm}B7gY&$#^Uk<^e0IM?ur%cH9(jnU)nQ?~D1P#>7PO1Y{D2_5- zG+>vSkzBwdk`;Q*4jn8=32RKRhG+gm}|focEI2}<(CQ&SkMCqpAfb};N(3dbajzpMA)*AKhiEyJQ(8(JLy%3tdrI(2 zImk{8a8-QUdY^WuKg>|!Aq-wQjgYzs6L|r-tBu~X>RoDjqqG_`x`Um|0B~Y7>m?F{ zLrTs8a%c!X;ciS9BBU#_etS9mAZU=F5Y|U$oiWH6UbIE+^Lk!hK z8f3tP*j^HDS!~%4jTLRf!N5oQ&ma18?6DQ-Q&=D_Rrt(a!EiV=6zabxNLSe(UzZ}J z8mww3iT7N}5Nc~ies6e?syci2PPiDD^rz`6;(Y0^MzHd~@&Ay8$L%y3YvuNu>|2X* znY(%20KJr$x0L>r3e$+!8T!NUk32t9vu`tj%lPaaCGT{-8EKJHekTN&g=+rbUndOc zc?eRFn`=B%fxAo=^QeL9f_ZTq{zIEdmirT-GxW>ONAVZ}iO{=~aMA^z0gs zuk@_5yB!4Qrle@v-F4yEm^BesWidgy;hOnogc_XYS+ukf`Gl~;<~0V)_aOG9dtqK4R&J*|&7&DvpnLMwG4AhNe5fL?~N$qRn!0D2eW zff)UCNw6E1d+g!8{ap318H?T61DT-0$+IR)S82X5EmOiS7N=SLc_(cfTW6tr9@H%p zuUVm$4%W>bsFBf@oSlR$1X+~<3py zBO$CW96I-fi5ZJ^_~y#3b{;oC_ldgbc3|&M9ywt9`ivyB_`>k1IsJ7*J?zkBe%&>= zJicv8T3cVHCAp@I2OnAsFO~GQ=|2$fa zp~hxTZ~jJdP*=@&-Z<8)H;)zw)WdQ3bfiB2jk1y$=peGTTfcitSGEpbw59JyL`>Ph z(N5Nbb}g*w4HL9V%n_^S>5c#VIH@^8WJouT2rDMTozm8*VKfUOuzOO%i&drs!rP?y zZ9oO@mK}HWHb-CR@v7x@d)9_0Dt3&gh3UjB0MxW%}o)usMl~c7G|=0 znrtAKKHCs)ok0?Pl3Lz%Jf(W!(|_~aFywOCoTJ=|((^Pwy-BZ{jdVn8hjir#Mg*R2 z`4fr4lJ*$v#DWz}S0F$H!Ywwraa`UUz4e)8vh2-%v(rmJDV^W#Y(ufOiH#CUV*=?= zM`Hs(@_diESq;`YLT24FV{WbjhvmOlC>2r?5$j94Y=EEi=KY;+y-?I{XPm^o?kZq< z2~PZXszjgAd}cMtoe5MK!3l)p9o)PIoz4vhNJ;WPyG z*Z9DBp_zGDE_Zj=-$WVmt`TKMSA(XI9q>r69xl}SAJ4qgYZ33Dv!X&x#-X z4$TEVg(fuBLQNKgI5ZHu6z#wJ9F2Txe&4|VJ(c?UTz#eOk>P;-601-0urD2ga`!Hz42CiurjApjWUofmJj!4051whH+ zaR;JRK?^Hi0z>A%vWhrX!sOuAVcFQ(mjrlmgJ323L}Msq7lP)fv5ufak<_wF8ihq9*Y2NC(Y!rQBoIIy42!(Gt-Eaa8? zn}z5^V85pT{egYPeUZUNV37AU1W^_3*i=6K30HX{VR~9A;ZfMsmli-_lp>NC6X0qF zqHO*IVkR){vlnbD*^6?ytfvW18BhL=h$hjv#F;SXB+2HiCa^O7wUcg>UG3V6-_oUW zo0q;e+vt5ECMjeOx5A-d^oS8#$<$=4zV=5901ZLi;yGo9*iJ90E`RVI`3JJ}_e7`Z z<%LjxPqekVk=Mo4iUr&^n1@l%pmp!7`Mf2`TvYQZI2(1VMIC!Pgn-+(2^D)I z>5sFF@-G8&1EgrRRAVxXzL0DD$BhbSgLi7UF%_q>8$}mmw8T>NS~@y0-VFS!K*v%O z;!-wcjrQ>AG_cb!?4psA7}nT#!i{TtriM4ZamSfokPpn<>rY?`VjHQaoHv6bVgXAC z0%V$xlKeq#^y*r7^bzpnVHVFt-ni)Wgb~DDS6xi%yuJP^$W)T`xTZSF%~FQ(vTAgYJNI7Gr0h~!0mD)eg;p9r#6iO;y;tq)%Z@kL)p;#bcOoH z!3QF0mnbQ{6%~W3&s5kU@Rm?v$2B2WwT!4{hF%|Zt;*UJphb}=%`USQrp?u5e)$

=@5s1uYfJ*RMql}uR65m-mo^qN$%&0^hNvvgLJ{Va zc6>X=YD*M=wQe*rjQHTBX1jh4eH+J|C_#kT&*<4~)bEJ~4<$I``77sSS?_zU zL*fW!ExZ6d@o;3f>G&;+-?X?s~o=p{mOgT(4Q(aUVYzVP9o*NvSE~|1YSd|rqlqB0m093tE z*QD?;{>VLo9&Tv>ffjc)gXc)GZ-wa21_BfEu{acba;l3VDaS!8-cn1Fj|R12_!R=- zFKrl?GJqcfpF?D07>yR@TphX&*Sl+jXqzquy^LZT8hnSYz1Li$w0RX%@Sq-8I}ng= z){5QF2!RL8-(cB;zw|*Xf>6xU@wS9VrOWTdnm2TN>&}1jdg#M?9k%n$1Y^)CuZp!7 zD$Hk?8F4R1sykZLmXjoL1W9C-kxE{#9y3eCT|dqYSp?rmI+7p{zOLmV!9xwWM;?Zd z8NFKF{~A&>rwesq7nhvss?kpj!H-d^#qQOVL|Nj3sRlrD!N$E3zrlvxW>#!8boLJ- z(?*vS|A3(9`u~c`1sNE^SLO*f1|85x08eI!wSCD~RSB-~3T$0m`qZTOi^O;h*UTqI zlnnp@VWy(((HgDfa%FpbrX#4DU_yfYp`s%rCVh@L1l6yLi;-@pT-H$;24UOzoC8~F zsGJ(ZM7B#8rttF|>c{Vvr_rF6SRZt&u*9#bNA7Sv4r;a8do56HkV;z&8tXZy^J-tZ zh#=PwNJtm*97-%9#JoL7Ji0#>yf#Ne{=;vi9YBg1D4G_C>Uq5E9^l8?ji9gR67^dZ zi)%Yn^~M!sh+zy>zpY5(RH<>%iW`B-c&^#IE7PQNCq`|8l?ztJnXSRsKPnC(IOg1sr7jctEq zKZoKCsDNUuIHWGDvbx;;ZH4x+b{?|`-sLv);K{x73bQ2n{IsW#-NxtnaTn@$8q?zY z_+i;jYjP&eZJ8%u=EpVcBIahoHQ+d zuXhq5d2v^QgylRZ#1c4Xs=KA7w5{#A2~5(#iKew5NJfrJZS617%AK6gA?N9SL2JQF zX4gWu2J0n6epr3zdX>^S-W3ulR*2L?G;}b67~mVFYAF6j4ML24j|Vr>Z?-lUjdh4A z@sNI_J1lx(FM;R5K#5gouvm1bXszEXPq-0&hc%i3D5lne-hVwVkP?Bnzq_K#4(yj@ z(Mi-z4wTi{9hS!cKM~Xhh9l7f!`L^fh&zM$(NsS9%B6S0c|HFg5$lVh8T(zTTl|Hk zF@ty-(dUha4sr<$_>6GQ@{nY5g8$cAnn_y- zqj8XEwl40k=}+8lj&<7O4Dgy5yg^|+Pin$|ofDTbg)3GdFcC%`r1L4_d*L7Y`hln5 zZmvu6z8zq*t6F}NoSFYGYXy}0ja=uFAfN+f77U(ZW7i1oX0^+jhhH}KkVPBO&cGkY zNA!`;p%IJN1v;y#3aC8gHPBK!OsqawycN%K^dL~B>bJ64DwGNs<33B<4=}z_JPe3o zj)(>QNes`u*PHy~k87pi$X1cEU1W+|A{pgPHYy)4N6pSb!fUJ&d62Dy8l^%w&;$db)Mp4Z3?S(wz z!s3Mg(M6VjA!u*7=m-1$#n-cV<|A38xB@6MHut3)%?%TJamR^3+WYdbrQAX&9^Kr# zD;vRpCHF~Im@160RC?zcVPyE}f8uKzQd+;o zQV9(jJghj71xd5IZXSZCREJsE-8LGkRiX-tRlejQ37L~xHnZL)RVTL35n z=i-NuqVqg%y$L}GjBR(s zl!`BWa-y)G(T~{W?7rW6VM30|eZt0nwYE0cC!;M*3_=+oY>>K*y&a6mVDA@z<@zUsbJv(`7nk^N%^7a zwK z{TQ$%%9S#Rg;=)cl{EG%>F$Eh;E0%g#2! z0yWNt1li%Zf4YOr&u$*+l|!O%@^L-Fe#>IB$O;g2W){eS0ljs5)>1LBMIMAR=Yt|p z-kKzDh!)pF)BAyfOR8q>3btd1 z!9FeaXt{@Py5V@PT=f1LTph`y|L&=pOv;=8CbviP0L}R6pu`lFC`Xkt-EEBL#LYRV z2o_zV)A9WGsVmHPPMO`Lv;zoFfBLp);(5Zc8*IR-E-Ay)$_4_G(RV&+h3A4#eFwNs zATYcjx%YxDW+vNHL$cU3@#E}NJqNm&*M^MuFoTxgvm9vyI+JUP$Q&Ca%!DFvRr>s$ zeURwj2V+L-f(Art4R}p|hlV;xjNhQrm)ST=Y|MOLLlbP<8za@OVFfhBIT^z(u25Ca zkEiiliPVr~d`W5&#LrH=d2ex{_5_a0`EoM-{q(7f3tiD+|Vh9{X8)n%tV z?uwraEWe>$G7s+{^V5FckYnk(zCy8);DY7v&q4FeFP_Q~IZC0wzw6v* zJ4mW!nt0M*&vcKv-m0d4E0Iqv1#SNf^^rBrgiGC8*@R=6lc(d(R8l76Yf6SRpwyv+_f7F?(NwzMVf9pr@ z*&X*=0J0D&0B<2OGa)lEF)|A#A;kZ}XP}v#&4r|lEB#R+mup~UX>4e4 zAeXPJuXSjnry)Icb#*~?b9Bydb>Gf^F_i!TAabSwLrT$B0E7@hMQJHLA%&zMJz0ey z18Do^=Q0)MhsQPs(iK()Fbpn1@`+eloJpF0+=VP`%&m>?`LnanentCMQ1{Nh;2D+0 zxv_;f8C3}#K|NK47!ko#5ru@ck%ctJ{YPwba@v0dfunJ4f6TeHgie3OR>FQ`qJOZz z+b++3ZvWtAMnudF4XkC%K^T}BLQmiEcS^2jZXh=PcG(;l{pPLkhh+cki%Y!6g{g#) z0WA8@(XFgJgs}k#Ng;A$d!w5N5Eo?UK=#e2Dy+|p%)Rha2xCKA$NiGu{1Oyr!~V_- zj;&nbA7lLLHaZ}+Ie@2AXmR`!w^S57^CNv%)dIe~{v899q0zDV;e~$_kMp-%8k$+z zIQ+$VpT+v+iWd}-)X)@-KIsK}Q`eqaS(_OeScz5`e#fVU#g+Zh{y}>+>7o_e(FOu{N_E6&sP16dxO!kq{q|k`faim9l>N zEB;^n45Gp17k&Tl`Z51|Z!`!%J8*QtYU*{gXAte8me8c{FqAoUpQTwD?2<)lMu2*0 zr@c!&4cN5o6MS9$t!l&LmchLlQ1qJ{y?gOZRs`%JK>a9k(m(o4Z(4(XlqA)Zk9F%# z%ERu(;B#&NQiDzOalakWO*Zq&DiCS~xn|Q(_NoMT@&lnHgD7@#%WEL9-Dn*h&xVx3 zcd5Y4(oY!Z)uIaVOlCNW4mM=>O-*3PG3fQcPQ2lH7J4%H8h)51Z@prx(=|=&{I*mg zS?C;Lu(Nl-^IG8qNq89{!l2UkJv=)bYl*0vXqbC)z9%Y-O&4B)7vMt<7L_s%tT+$* zWChQ#0B9n3wPUTh+qOBmIn{1}PD(@pX4041zhH^MJ0@j4`zD}i4^#4uzK?wjZc3Y- zxBYb%j8A_k^9DQY(Y(6AR% z--GKty^BOQdFO`FvBVchy^t6c-sNi+{9#uVii@%DQv!LUAF^lAcOC{%Fl3D zo@XM-%Cs-FUfD`WIZ}itM14sQqzz*At7y3Wr0EchKs=ro-6RDs{ zYxI~QQr@va2;qS?sgc{vg$2haR5JByS>4N+a7u8Ehhjd?4(v=;{`cZ?6F;Tuo{d8- zAJo%%lpaz<)lz=L5OxY@kk?$GKrQBwXUdNK z0V9AcW2)9#F9LQJGfDgUyjc!h9-`Juba;iKV?Wjd=^HxH*8QO|Y=-#af9Xz~!d37j z@M}Owmkv*3lVpxGehQtt>vd3($X;CfK{WeYCI>Srv^mxO=v!7+*K8DHX38YjoDpi` zcdoZ35sFiA?M#HiOo^BSn3<4DmqOC-hJu^N$1{%H`@fTtIWnG29`|4a;mUn2O(OPR zWYBxcl#Y6wO_M56{-COZ(jmc9au+O9LPX9l*(`~(6rS%lgKH(1`qzzv`u|RsMF-IC zCHdSClv5!Gv5kMYZEld^Z{-mHAOik#t2`pO>!DG@MVAN9DjGALhLHXg%7r1A@=EY> z5kI+CPOq$axw=7Py%1#_PeM8Pm+vNC<$OaHu{R$p9D*yv@38-3f`F9wKa*TBa_hu< zaH@?0L!+y9{jW8*P-rmMh!Qm!=L_#`g^_9A00x4`b*R4u%A=)sWuvSmxotQSu>_e9 zi6rKe=dePqJ=W@#W}PWKMO+cAymK;E=yCwaN0UKOQW0o%Do^$b!jD^%e(DUz3KQ4i zTs9Jx?C+&(M8VxRn|nXaJoJoMPm~x9_t-j3+Y8RTD@6|zPC)%m|1iG}O*2UL@5+gcNOqEq20}lC7@hJtRZX%Lm z>Y8mOX8S|CDm!&DyT)sXf$l^Fo#`8Oap}?wWm=tz1O{fMM)T-`%cU0UFZt@ZSluQZY{XJDlT7@a4Mugi}{zV{(n?o2CB=#60E z(QP;(cLG)#2eQ3uqqY1--zndvToQ`2?j>O*^==evHh99TG!M>2=clmRcdXAjE7PFn z%}v8q_FbsEKyW-=G)`5Uq!HB-xQmFo$CEh`rU;8U6;|;gS2A`+Sco`$8PF*hC-#H& z7OBXr!0;m5Oj;AI{Uxt3C{DhsI~)6Z2TzmAv6KM6;?#$^`;zoX3qOlhpD66ZkN#jE zw5a9d$!<^QT-*uhN^G5v8_%+e6C;)A5q=u89=mSe@>Gg)&K7553lhckp-+02iv@@{ zvk1sHF2}d)Asm=OkBEUBcaMNab8h)3yuHx~RugI$v}7Q8HG`xH6KT`O1X1?%u0KfR zwn`(J#Z#10pcjE)5*aCm9V;AzY$lF+n82}^Y=8Uh5aGx%>d={|^(zzPwI{SK#(v9k zzZkBpWns~A;^V!8$U2rrC!jZlMQ5z83Xd^SjLC1Z8oY+vZonPLFk?I%<4S51q`ViM z&#@A}0Sln*yheO;kk}{K1qTd6ypdW^2T}#~o)0#~i7i&RM4+HkmdMBAK$x!f%{t$k z6vivWWvzRxnw!j;sSB$N1n48%5xjBZinnH0lX)X$gmKQL#hK%L zQwzCPyUD7Zr=y_VRFkp#cD27uuJkq=r0;j-m{LWzuF-f}f3N)>w^W`8{mjv6G5_SM zM8Dh?E9AYbbH8P&W@?Wb+3X@Men>c0wvyvtawGKm`2J4_jZ~FTd}#h;y*o(nLU!cr z?TtXu1d{a~nf}>qq_?Ls|B6RsA{=(dda%^f=>E`dxk6}|7RZ$lo5<;H#n>pyB69M{ z*bPxt#RzztbLxbk2iv93?Od@>%5ZDj;2LgYnbiW_r=get0FBwwlrh7iI@5_%im~wz zUEhG+GVgrm*}cBSD!Jv{h*5X$Q}MxT^JCnF^~UXl1a9~wh(ZdkS&=y%!Of&C_=|uo zD5kQdNv*j#eC|Y|ADp52J8$iEkf~uaW^t4tYI%Xt@5DUv6M8rVI%R$m1=5jZnZ1#! zswL3B@c?`sB5H(xMiL{)I^jU^)v_|OifkcD7OgXaG`)Mt1p@hHYxu^FJOj9LM0eyo z^H&GMag>h~=a{t#q5t-(ErlkWl>Cx$6!p^o%Y|N6C0j8s8BPfk>7gKdv;p`ehe#2^ z+e>G~|0}_n?*W%Y^aO+on_W;?{(PtBbauQGHKQmZF-z8pV-GTk(F?115fbj~CfVzdFxL(|fBfRPwV0uZ6N`URD0#^R?o`X(1$92K#$ zJ@@Y#pQ;cih{Q27;(L%f=0*865x18FDC0u7d_kd|VIu8#HUVBwyjs&mDsk^?9jS93 zVXdMr7>#@L*1jP(Y&>n_bcJlIlU7cyZWHtW7CJ$&Y!Gvqb)Pz1$tAlUnp9C|c6YkKz=h;R zz>yhK?JMl=w2;&8F&46VgC$XS_!blhR=Hy@K~#(1DMxe6V0KJ`miz4%Ik=sevdQKx zO95)t9m&2GnlgV9-vOMYg0yGSE>EY77>Y!~!xGp2=%sRm7MKIeGUHD}r4?`7P26=E zs~vVjD~^5xKn_Rz`qN^rb*%&Ft8baFOJumM4pk|YOMJHv-D^m*@~u?*a4QpobAI*_ ziDFZ?%@-5#i`(~+of69*eopOi{d1Ex3^F1$r3xy&FMbfRu(c|Efg@n1#`St6IL@k_ zB|JUr!%*uwn~D+N4(}ra_>2l0ot1|woT3s2?G8-(Kp)@sH9_3ePb(4wMW^V^Lu|5p zWsuX)T0=vzEj4h4GgZpx{2Kf2TPkb;jG6wNDGtFYAS7L$;`n~>WBUDV3%D?^vU#fm zghm_sjO9VkcjrJCkQTb|Y?K&_bCRH$skj2FBWbw4W#NQf=QQVy)Nmmf#n}M?qNwuo zRt0q_RI-oT2~5)JZ2c@5_iiqX#4ASDyol=N$r8aTUW z_bzl_B>kS6bTT)5+uKfOUwGes9Wm`vjFXWf^`*x`H7gCY3Bp+V=s80h{Jr}~#2K$I z<}}2%V`F)0%YbqC3|it!mn}$wRgO^o`>gHa6qtGaVdLGi`WxDM#7)uIsJO=LItlfERGGN0_dCzH0Ihb?LHwgN@A?XqJv zn8622gM_NzkP_~l-bRl44rcxh|Mrk~56?{)LznfL;Ve2J2XTtSX~?hl+Gwcq00e8Y8t&sk0g>>srRt|FI`T83F9Uv2|;_xTYaAOH9^Bf1PG` zU=@uq|D*3sldb8xsqH;b@sc{N0Xb}*NGLN|u{xkAde?$H;6ic%o-F4l)d~(6Uuux> z?oVDBVBekY=P3?C$Bth2%=^N11W!yPtMp4%^-lKL{MfVGNiooe%yhHxc!hJ1Ni|%} zDzfv`_H!dORNtxGpNorjLAiM?xNj|Le1yGYCgVY27H)yV5GH7!!?`EH%#461?T4jS z9=7Gkh+)>aKz3pD!fD}VNVo%xhz=Cs8#_RaMLHZ z@Lot|$>-yN=nx7D%h-4(#zKTfEN;?!n-~c>r868^q9E77N?raw`yB#Ew+L7(e#H8M1z*7j{h{;H^&RTlF#owqP-j|(A`);^)S|E@eP5(#cr+f3nJ?F zw}Wz85m|I?w{=RAJpfl;p>Tmfy#hkc5y^+LvBmP~;+^rh+sGQr@voBOl=-MBL`nP7 zPukxUCLVsz`$KU+gI2wAbzcs6OLm(9Uf1=og{Vq z#~|t&))MF<6d9!}WBazKKQm5{8<$|*GPd)nMiEUcRhK+=$x?~g=;bT60yf9aCE0G= ziRvC?{0~IM7qn@o;jk#f`Sys$ew{Y^gm_6M!OOysutWOE`(f7{pN!?JJ{G;1&_dP} z(``?P_AhTGAye784R2dQ)nS|x7RcW|-p%Oy6S_0-kloVG>L#j`yK6N46aSdUlr5)_>#;YpCs#SUc@nVvpU0W-p_0StYl4p zhm05-ImD@q7=w#gpb~3ArBXT!ASm@n5LwL7H#h_3p5u!s6q>eEoK0-8TD=fkyNtAX z;K0UFt-Fg)W{nyGjUS0vZ>4!XYwV$&oHh|Qc-0N&o(4NB$tx)SCY(=T8n!|-JB&EW zrqpePbd}gwU-YKrV|bksUJp_3XBmsowiViJ@A&|6ml4p6cTunIeu?U=8t}~Sa8F}0 z-q&}#)A244h>DXzS6?6p61j`jC&5YcpwzBXA^Fk)ypne@8>y{NA!K+;J)8oWSTpr< zvfLyPvFa#KHh%yx{VNi1yrx|f94b7lGAmUhk?YX)oc*}q_OZTxzG^I^nA8YMDVFI6 zXvgL4*4!|w%G+tmNx`s9wX`}sU{suw$|A7rB-d5g-Kj<(EZ(#)q)E3>ENqdzp_0j9 zWZBrEax}=DtbMN2%Gl_KG_laHEKZ@;;F?2;tA-u#PM#4z@p&SA!=h~XoZlZ6V!`Q; zzw?@ws$V$RL~kXCK8X$2NS?pkxsB9spfvXLJ`zZD5NLeM*Ya{evs0wmwQiQv?N(kH z{5q-Wtry1TB}0@;&km`y(WTcPcwVHA@8+m6xteVvJlq>7swBi}%?vL@r38+p^ljfS30FHgFyAjYw@b|#ql$}?&AXgW{WTJ~)=V+sh ziDeF#?fLef^Q$VG1d|Cn5ggf9&oc$IEisrrD)d>)*H4CQ9PsF2P*d?kd`_*^y2>h` zH}&lAkzb<4w=;7;ETf*n2%(Eb&W`he`ZIbAF2|zt^F`yS-8uKI2JdKNCGMt3uCM3= zZ1K)`miV75oSl9*d7jI3POM08UuYP4?oq~)ndxf_I3H=iFO+?N==-%IcG?1#ej$-^ zC9}ghj28A|J=d(9S)3)6*!-x-BZgNR(2*w2sb%YSN`wX7{$0r0iOZBKg`-us9;c>B z-lt@|^B?QJhxFaQ>>pRyP)BRE>LNPoDztw@_%E?m#-zIv0DhY%B&D+0EBsB7P?>C0 zd+GkU`WkOouyslYF%eV1nd87lHt=2IdMOrQH~Y--=dCU+BsOo}hF?anor+%WaJs$< z%LM4MR~#wiyfGkafuG{PuTxBYQv4+}qVlHHoGpG z1uwn1*sn>JIKbb_)qvy^O868rVdWQA-f(egTmos(jh6>XtcY!tZw(E{h7dJQrH(@n zJ4Lzm&7YhnN=v3sV3&?{=T+GI%CplF=w%!V0{<-G;cMs9B$w=`|0{t-_r|B|HWIgI z4Igav9)IGLUPyMi#KZ|C$XEw7LOOCFpw?;d#V(jA^e@Zgm+vz^xZn)P(c(No9-N9qA#~%>4OhH+^yU;28g5{!f-WNS_1#4U5&}C-JQ#?H@ zzaL$43Ha4@7~v~F>4jx zk-V>3Wk`^j9(E$Cb#O|1kl(qO-U4OOnpfpuQLrZ_PGq=EF-A>^e#x8@cR6#Nqn z9@@gO)vpMa3PC6>4?2a0jG{#g6B`Xz(ZxxTE zVUs=OuUC5%p$rU!+xh{<`8$Y1TqR_2QuC?UxdA$;7QHNp+L3T9dc`)Q*lWDSADc+X z23{(YgChDONvzW~O60`E!$FH;tvW29f%r$}MTRvpQz6fNdlaGdLVNgs1?M_cH9jNN z*cp(8J7+wJuqtpqLypIzUv9#((#jk#N*ZrI+P-MbwSufi%)oyoz)^1VuRHIL(6%@) z8>zbmj`hGE$_mQ$<|?B@_6|n!m2)bh1&GXXwO(*%f3vEkO1`&sPlS&bf zmRv1t^Det+jWxFRtYw3wVd&YZz`!qw>9rAs~BE zWmXjwQ&`R~q!<2;wN(m&adADO5d$L`;>4Q+rUyb~S3OB3v!{9$YAFqo@{Y^0!#K1i zh7!4X3-Wn+`O&L)j*6({$`!z_pDRvDmF5~tOi?I(y;e77M$FOB{6V#@etTR4N9I2&$44gMs)RvPe;?)<{umR0dgG?b$nA2ZZs{rde zQ)nVw_%K(lI2X!epe_FvgJZn??uS*Z_6>-%go$snE5_sCOkjLrR=!Cl5}nsKF>+7g z-RX6I0uyIDy8PNBF|OY&rq}y(j$U+=kqCDwKz(G9ZOQUmlCz< zG(T631o=ZbGB>q^($}Rik4~_jz!lX{JR)`+I|1BETvkEY=>2(&&WGL*M{h#Jz z@s#0GkzfBKfcwo@L+kWXZ3S4sw3lTwJFxXQUGT>p?bCFT7=KVuT}-K?kyB(OqZRpG zBnar;_+!*t{Y--aW7@x@BQBB(KKo`>uPYnhqpLAc*0u}w^F4ZR=UHKfTZm**6idsgc85Y|j61$W^ zmvtH?F!7;_s>iPxm(DlDJ~RP_$DD#y@}Pvkm#wIYzrwdGx!X61D0-c(imSs483XYv zrWy{1wB1>{n-vPE`Xmlbxdv2epF?Z2)xJZYup^ zAjHSpxjld7CSUonousUa%X%IP)krm1W9Y@HTdR0i2xXhx0eJwyU!|iU*BZ$S-ItAY+bqc=Z@#fm=V*vQ-d zT%e;Y6%s&n-?d)z$1!be32auE{ze>O{8vI5FJBHG4&^T`n=SG9uarVc_Vy_Zi#}W&(0fcI#Xe;Y} z)3b(NU}?m^5WvB!xgltOiqfRd+|MZWo*<@c2D=j#;^M{7wA7lnFzt-Z7R*PJYCk9l zTRn$9rKjM?r=oUq_*Xveqn0aZ{y4~eIH_Y(qdm6zOYNCo1zRMm12|o9jdX^wLbR{_}CkbPNau8t=$lKM+?{>0X5+SH!hcsgt(%CCL zQXERAmvUL8k1%yZdqaJVP)NN73GwD{TiIZ+p|yoi^XIwvwK}s)jKH$|KD-fOA_e^o zCR5eaJ|~%uhpiBq^A=AnK)N@2-jGn%_(jm?aVhkFGs>9Po#0@_^URk zLFF&lQ>hgppyP%4yWXnmAla5K?6!t?meJNOJ77mtcZj%`V6RFL2Ic?eXBDkUR@7#Q zC)`eKYJp6=mo27~PJj|j6T{!9C&$&5bBio7v9w&@s+QcTL<8yL8;B5M*u2Bw8hurredVKc%p1C zt4b{Ec(FJPIb)6!mtm6OK9IcoM2-Ilg4G)7&z%6GuUkaCzaWxiX(qibbwzU~J`cpT z%B`TfT7i`56`Kuiua(Q5I2*~dQ5c}02!)bb`s+GHpT1v#*9u5GrMyl6UK){f6;t-m zFi4th&HcQ5Er+!V*Lrm)?`K$Gm0`A`;tjigN5eNpP9V|<8{-Q$dkT(`ri&4iOI}Z$ z?Rw`e`J!?p_)ti4-w9c$i%NIO_s2{5_3F_Sq+m|AN>6OF5({U=j+a+<^?`nf-W^P5jg2fdC8@Yy@sx%pbAKV;%%FB! zDRRKo2g2O9d}@>^dq?9B-_U^av03bsIlszC<;&Y2UC^qT7(pa(1>^Z@htn~DX_XVJ z4MdzahV6}15F4HH`q3BFeUZqc7>UI*_Tp#F_e)BIAl_ifU#yQ{;IOVggj4_aqY?7E(-KBi2U{ctmZY z_Srh_5jxaYLp{%EM+CY_Y|=HBx@x-A?U-Va)x;2^B6AH+3c1EhU~N1#ix_2MFp zEAm3GhWM9cY?fMk{J*1(_Y%A$Tj!Qr2Tgz||LSYxzT>x?TJ4rGh$pTf)=TmZRO%*RZ#K2hRV>H=9nH&+}3c6 z$`{gb8rb~Sqwih9z07(7mSEg1o)TE|N4V7-GCeGvsA3r+L4IFO&X_i^8;z-x+CLs_ zoD(E+>1!A0EC@3RxG!HkFl4x}5j5b%>8>Y6i*s@K?Cv^d9{(+-^O?E@HT4jubdbMU zg(D{8?P(!S==})HYe}7|GIHLxtI1 zC9Tc^LZLFljFxO|c)qdc?Qp~rs~el1v%M%7#UQRXG_0p-GQww(lK{eTJf5CP70rlN z=mj+!A($@d6PP+A4129Qwx@M zb@inuyffW`SO|Mb0ay-hvR;9}G-?)w9 z(A6pQZx<)_@&se;EoOi2g8tIM!G=KIRYGm=WVyu`FnvQjqu~cS29+YFZfr+xn((>3 z6enu6tv-q2`^Kv3UOKy{bD_b<{Q5c%mWUHnS1PJpuymy%ki)!;e}(~hj*AbuU?NL~ z^AXkIL5gZdIf?GmmBk)c^}vIurc=U&=0$Af>Jb-+OQ=x^E0EV!s+8)cZJe;Kp7o&% zc&&E@p$2&O1Vvxw^(R2^zBg+Iq{Zj)cQ^gw6T^q*U~6&JNo*0Wyemah}6j2 zebtr`yBpkmM6Csmh50qFyNksgg@%pl;j|VZ7kH6tE-~GBmzG!=4L7+2 zV>;Cdg660p+8Yq#qp8XAcNCDdV;zcFp))I|YufvgK=il#@df~>zkLdV<8~Y<^=75w zY^ejm4t9}PoMVTcQp_Rj99nhxq;$)hEP{aUZGVH0qH{)d&wM0|*?k+hzV*3C-?!6% zP=P&6T33YXJ3@u?j+%f_JITrC>`$)Z#?AbA64`Q=u*lLAi!%`ku~ctBKXuH&nH4m# zho7Amrdx<*2Jyg7W+?~pl8I5fAxoJ4#tRt(b^zkX72_HFD}h+rElHA_?JgpVld-ER z`ARN%?4e8e+n2YKJ&O3vm{w8E&6Je_ZkhZwET69@AIs}_7{m)E&BN53^Tayk1^lWZUz0-Z1D-_^PcYFexB4RUDp&<)dTJ#QL18e?t zxF1^kQUPX{vxN2Oq8owhy$L#2+XgD8h-{;;cKNY7CoxC zE$xuWUk>@hOlq;oQ*VGM|ZMO2PvNlGwjIFaJzD( zgQy|0VX}HN>Su?Gu?EXN9d%)Wwn~$uO&=Z{Yz6#N*7Q_oLs#RL4|qs_nT9iTVfOLE zkFZImovS?>cryZ5frUpvR^BrO+)g`)p~>@Ol+fyMnzt$%+e3Y^n^G>c-50*7o3HMV zzA_Yz<_@f$k|rQFdsG6b>+!z|P~C^X75Vf9cyoy!QT#@G#w5aGs5*A3*xg1^E(v=x zX$jxNi7sB7k8x?XNGk(3+N#MmZf2#u$1H1dE%}?vLz2OM=NwgmhtV=+mX(fzUg%N+h?G&69YBNu9fug2 z;dnx6&nm=evaDY9DfY_O+L)BwtL#pqUz%m|Tuf-0x62sbTyKf-TEKJA)KPR`w$+-C?vt{E9_az^C+05CF^ zZM#DQk5-_u8cV}cjUf!&W}KIkjvhe8HjtmK*o(c6gor?Y{CoQ+=(_E2(3R!a%uhwj zKQKfz&2NzE2-OdJ9Pun#9F1^ypST{FwyGa7#%XJ9ipt?nOj>-Io|X-b6zjVShiYc& z{UoS)I?(%w2v@iQU;$UJ;@D0bO;FUVD*gD`B2Kxi*V_Ag-0s%f*MCHaWl8^JrGe<0 z|50xJJsQ2@aj#=0@z+O*64f0VCIpL9qnioM?J7QZ(`X0;o!D~w?GsHFc(~*uEihk< zj2?^KhYauQcZ=?c5-yO4v4cH6Z6bgm2)P+?FV!XvveCjTj9DE&JXeMiXA@nEZPW?U zt(7JXI<_aSDsc6+v`WHJ3B;v-D%y~_&@5f_3HJH~^B*Rz{UoChHw7?FhRY^&*R6h5-h;F(l+oljila8N6U^e_AO~!QF zOJm`f(YTc@OjE<(faPL+%^U}s8~$2;1|16f`e)`QwjZc9W3{OZ=cMNmxhjGO>H|+% zbbk~LnVttvn_IoQ5o%h3g`c-y_mtZ8#Xv#ubccD?i*U@B>Z09#3yb#r{vQ+g zNP?{L)3RYPNZJJeWK?H}FslV9FNeUkyiog@Vy_6+>-QuvfW!`E?HDl za7uP;LrC4nCjDulC+_M=wYpS3n(ZK3sLP&{25uoFMwY9#d~?(R39j});8OKWA3W=w z)}LeS_7ylh3jN6tM!>-QH!Zl4m>iWqhWaF@?h~Ku(x#wgv^LH}RF4+*nfW(WGyj>; z5e?PY)6~wyl-d)F{R>v`R*h3-LW?C~o+^rr>$3YCgs+ckN7w z`*331S`zh6r?)#B9Yux{z(xP587SfWy?~-VDiwvB?BnBY*D_1^1F`!l?BjVuh$S#8 zYIPy+0nIx!qUCQiHVW|O!TnuIbq!m_^G&gyIoaXa`nxG!NER|g@wyYqXpZZ8-~4{ zhCs=Ahkf z?Qj}_vWbAzv5H^leAuaobzGh=YI=tc1R`~5Fxl5&l3i`~qRT2Z^~Y3- zvZiNspc!DuKc02jUVZNrC&Htuj<^Ua$)<~|h;T@N#1RjJ<6|~WiWWN~&WJA*?Zkk; z#bh6ac!?H&BYGZC_3f#TuB_#z5=tD3kH$akO8po6;2E&LrcX6EFNC1BJxz{|JbP|S z-K?71;h2DpK3UKLqh67foBlfATQn(^Xwr|0QRbGYZCIFqfhjsmgtx0i< zRoBouPvbTmXTD-?3Iu#L!G|AYk}TOrVE5>$B4ND4Od6~I8`9f5i@LiGRx5iklv%yw zn3-S?KSVZ9012bEd?4oz?e1#0I9x#faJ`2fjHYzs%Ta8DT=ZchO)dCwG{Z9nhWwP| z{#K_pEI3<8YMreI;vR%qyFEX1O}Xv`-itMkioEfT3>VXPkwZj2JbD)?W#Mh_4X+Y4 z)xog$VZ42Q@q#wB3b(zWCr%{sFV;?*_C$1Z`6 zBVxw7ZTn0)H21xbd(Zy)ry;-io};}P#f*OY5hIQ%A&cI({(>xz9k8Hz_Hh5&=RTlF z;~bD$VFQ`iFbfIwVXT_MG9_rjCXh`g3dIgYJimN*U!V-(tD_XGX!ap-%=l1vkFfJJ z?=Y^}U19l7m2}Te5hwOt4r^p_xi9aA+?RR$BiPI2XbEPHqS;$+yodBhuge~4h5(Av zcU>FCfnS%0(*xq>Ka8D2a4uZ1wPPnIwrx8n<{R6#ZQHhO+qP}nPEL&bRsD5mckoy3 z!QR6?>Q&vn)^mb$7FaCx;Y!Z2ipAAsyxaz_n7l*RDFL&hV$p+F&&_cOQ@ePgnOl0jEZE`4q9d8GUG6&SGYa7 zpTfpKIIp}wSU?&GWf2P=M$6P+L?tI9e|`e-YkG#C&S$E9;q^v#%G+|uRxp@7d@`01 zYm4<^T`ByPJ}#w*>4xImHG;Q}I7}=lLE7Ai;xZQETU5neGo(2s&`wW7*M?*GcSEcq zjkvtF;fel+6JxwwLa{UufdSd0ECZMF_gq{xQ3Z11FuUKv*&yAG`^pm0C>p$2Q~YB7 zc+xS!5CVp3DdFrCDuZ5WFfY-hAo_CS4~F|L<;^n(QOX+8nW>4|b?BpIdWsYs* z?2$Z9DU<<4k(G_;(z0U7zK69HBriZ>h-q0Q8}cG$9!LjQ_hEG|+-pbz2|Wj72|;5mf6z%hpTy@;P)Wi+md0<;RQZ(&JmwzFTujTHga z(*ysO?(Z(gdZ5hse?06#5k|}B1VzwsRj?gwdWZ_k3Y!HV=V8@Wpjtg*K2%ULN%(`)#d7)8?Q)B5Fk7CR*Uzvn8b zuGud#zk)J=9=0sv1b|8Dbi&~)4SHxfR&RCAn9k>#8GRm z_iohP7+M5tn~Im6j%0>0*;wzsS$cFLxAl<@w1d|Z#F47sZVQTrdn~(Tdqs25{rAU! z4Ed1pCpCaw)V;0_Qcrbj^IdY6M^MpFEjtO@Mu_97WWcRvYb{iqn~d|qfUtWK+8`Dt zR%S<0s~2~_mhBl;UEz@{VX0=vE$xYP;(aP5`Kn?;N4hN2dde$R5K#yl&m58Fh+FK{ zf9U4jEN4TvIgwqnfp=w#U;2No*_Dx-ATy!P2{*#J6xYI2U6!fAMkefq><0JO)~L=U zpr&)SYe=X3M?o#dj<3q@mVNiHUyOUoKWkT5$i@x{U6S}{I7OE_5RX0x0#rKjNc{(S z_`G<8tg>aMC|x1?T+wl3bG0XOgL1*6jD0PyHs7QOu?slwIV$+uq5(Jmh@XA#k>U@; zg&dD$aL^cQgEL(#XOJNW3VINZc)H4xnN&I4&!8wr7y*!D^>S?Gj>K$i*?l!~{G60K zZR)RVWB%L88qBE*f;^Y zi7{%=S6aDAT&3t|jS|TK2x9vgey{L)yj08*+n%A#b5qTC;-=d&bk-mpYioP`G80g) zXPS<-s7UO@unyWz&8G00vp{?sTf!h>n78(7?3s7phDQPWMoMZ<%ioT8MT)n~ve6IV z+f1PCRhv7muGaXjLxstkX0ibvl+Z^L=Y0cm@ANEvHf2=RpUhRlA6f@r*lKZJR40>& zA!BnxHCbe7nGq?G7_<_JTzH1b-n-R}mm;%s2_4p_xYN$-#?I4}J~dLxAR|CC&f+Of zxyr?KKX!rsPxD(7Li~6n5;W3u@!u)ZSm!`n@QTwzbmA173!~jSigm|bRkrb`PH!5p zvN4a?a6{6a z`;T2I-QlL5K3~$Wd3_eZ6Fm5$MNzv+`9BW+|DtUff%WdB6u@Z9rXkZJGF3-o8W^j8}c4}VBazl89j*BZnU+M)Ii z>XZNqkkt0fa}K6!{IMvkd$QzAZLP8Du1L84(S8BK+vp8%_nzAff8P}pg^{*o)0(r4 zGnq`#!{qkZv`PzW)i`v5Oaxfwiy`*Ao3`^KbrWXBrFZD(zW<@X!vr3Vk6*Ze;=` zSFgUpJ8aT9s!ja0od+x=kj>xq`l%TluB9I4C&}PgX9MV=(4{a{V2jnT{tU~B*hKK( zWdJaqY3^+TO?REpq#xGb+*B$AaQ5BClpTj*3q){Ctjq@W3a_%AGh9_*;THGT!D-gn zZFdN*Um@=p`r#_AI0bj3jyik+ zlXJWq$M8lxpVLH>Ty#S@|v=1>d+o^0K z@p|$C8-@OP7Z~*9^NULGLUG#Ur!AH0?gbH4oS=uQSIwR>_OJ9(4-$E943*~W&ygnI zCugEXqInWx-aOJ{0|7$E5+Z8|%wP0>Vm~{1DlBDfXj~LCE2o-ZutE^M#}F?s2}FYk zIHQxWwwDy)%!tehhf%zzE}r&i2O`o`K8z%?jiVreBNu6EO~QDl7%9aLb1$^SA|#&q zT7$9mCrdSI*siqh*h zI=_?!R5K4&QS}RLFg|$^!h{p{((DShf#Sll1bt_27<$wTD7( zao@o!-SjJtyL9s5(0NhTx(D0?ep1d&qB=o#3sJ(Y5HVKQtdTPZW7yA(xdkU1B+}R6 z8X#)zrwzcDQ&r)^JujcUERTb)i*(DGmpc4Wu6voc z_N``dJD}Bx?pd<`7IfWIi&uZ^@Z_9U^&Zj{Gm2vW^mbr0)1)E-6QaGupM5dXFR`SU z`qm2e zL|(2Pm{7hTDVule@1Yze1bxwy3yY+F$_WSthU9D?v;P5X&dAr$M%806__1NY#ZYIv#&fth% zLPitN(HR*6Gm2Zt zKwjME<5n|}Hlxb^d6jyvXa}&Z^rgDYVJA(XhPFD1;loiGXSkpFs){5(o3S2#r^|CF zl?J!GaAq(2;~=NfjFu|0No+;0O?Uj3}j#!L~PzH+ET3EmPFVO@afPz)LcKdOVe@N+!jaQ#6 zkG^^7C&O$i^?5PueGD9*??m?-j2Sd;`yAj*;jSq^KG!;Z%;t=;e=csSTJ-MC1>kTs zdnU4pycj%WkBAq#Fk1?RZv8J2W#_$;Q0}Bj`Ny+g>~Zuz7w>o|+<$fXs&}W0ZAZ>Q zvU9?TzEy>2UuFHex!Jk~5miHm=fzZeZ6aq3sD{bh3$ZS$XDML0fU`a@EOfeAzkD1Q zGkvJx?MldSW4zdiPeu=BeVJg#3Xyu(Ubl%J4(DyJ&U-UHq{eAaxv16U{wKI|ZqW5` zHjtcKTO*&1F>#p-+L5mnSiHlUevNihM{t@bcWa`dwfpBB$6Kl@(9Ti%P73fnX1Le{ zo>F4gtA&ufA6LW6Wo)?{Q5UvM6jpWUZGc`nv|1WsFrF^?W;I=zE1-+= zt>;jAiP4&?%9JXq1}UWArJZe*88x0Va^3})I_t3Up3_X%QHo=q2U43q6qcb$@Z0Mu zT3)a=+#FMh?bC3NsH!XUijy$5n>tLP`=KC)6>bnrFrCldiQ*f~!NW)sjRoM(uDJq8 zi@rdBxs$E!^9J(RN{(03@^+PMBIX7%6ux`K8si`WLJ+d$o6nOmwEagTuycrVE*JdJ zjhLNy2Z!?ZF2GYO?UdmWyPw+WW|YA{`8aJKTB}&v7*$vFV^KpQ0n7L^Ac$0m-oaZLZnS@C5L z5a}j2#H0ywYrZI8QJwzN`BhJ(+^Db+1<4Wbg6YOncpQQAUkaU|B;MSX z`ihQ;-yMKDD*%T$6j&9Gp5H2i{`VE+GnmB|3PgTSt_7d6sqDpcg?%HqGKBTa1v%9z zFPrm>3zu_+=WW+eA6qQ%8tgsv-?uc?79(q=4Fr@pWz{&h`xeBkmbpph+L06-{heVj zps51!?Ak{iYESP5x;r%DR}cz(<^k!G87_~mEPrz)u9(jH$SX=dQA9~1Q^cKx=v3Ab zh#=dmYENEN)WC10?l}T|73OW+av($V!(A)NKl0rU-9cY8jX!UKWs=36LX!D+A8w)b z3e+ArPg|yM&4wMXVLCE~79&#mXDM1s_H>-ry*?!m-I%K09t}@e_V}a-(fCe6 zjs26_yGEI!HxyptmyOz<7f^jo9J|q(HS}uxk(Y}^m83$m$I(`5z z*R>Rg>BEDq>m7(O=qfKb|HKlMortZB@YkJ;ak_Try8E)qh{7uZmJbLOjH@KE{Y34cVUX#G6O@RpeiBk&9j}~g^CD;qFA!RWke(2gIl9rIqTzW4!Tg-OQhebxUi&BT*h>-F zz?rIkWPAX(Mp%(wn(+D58dWcir_uK79EY^DYBwrp_pzP4$mzt7#&gBu6j*v0PW!y> zY>l9L2pX2O%=}@!(?v5s>)ayS>%kT;-hb?{prxcKzR3{fM;W1m0OLq0Hp|hKTB?Ir zA&t``i{USa0(HyTR<-JzB#lu#kx^~hvCOG&i)KOCi|FmZXQ1)y4!3YmKkC$&)?K4l z`7abQZ~dKLrpLk6X4)$ig-)mEnb1CTxvREdF?~t0Qd#3rj(()2J~#Ei1;UR`I)G4Bazq~11o6G=w+Q&E z>5|^DP9XYW?kN=}JH`Q0!bf_`6R|DV?fwZUeTeM;>%zJ@Y;aJimgauuB?gK3)W9*k zO5mIM;^nsS3B61fSgGhb)wwAi9KVA+Y=TG2G9k>)`_UC!Ux1D=wGCKN?-ntcV6pD; zdgGhB@*E4Oc4B3#$Oy_Rf&<&wd%+oJtMkb}vfKHzh*75yEbq*3;w4UT-euac$sLqX1Q3-q=$#U?zccxj);7EZGrv6!3j;mMjbzb&>j z7OY0PTY?s^OTuEqXv9BjTnKfL-zGTok;f&zqaedvEJ!n^4}^yaSf-J0gAhymx@P82 zDtONFrujBeMS2goOk`hZUD;n@c5zk zyV2ct*>0Lj!Z}{frV@+uz0TpV*}@+kMB%qiOy{Qys*twYRQ@zBQD?0f)6*w-dUx>l zO%f0n!cPUP7eiPFVNKRUB5>hH6|oj4dYnCh+`p;qyI&0x61%t{`f(i4G-K&-M@8Jw9Q&DgG_r(z`KAbZCHFbD4!Jme~A^`VVI>4Cz#yKx*o06ksz3oC%aC zfluh)MLCi6{Fd!OB)@irjG-$Bb&aU0P}E6kmcP$rDD6Q04a^gzc2PS{VQ3l(_LLs; zt}hXv$?p|qKeJ>1HJd;d;_Yj|J(x-8J6ul8x0ws2HC+2?d2jLHoj7eoHWLEEq8e@T z=+%knJ*SaF>0a3!1CLKxo9UyeZOzf>q5(bSSP9Ejb)D4L9gT^XH9Ea_3Xu%6@VE(> zEeY9PrHDf>$W$oX1)Sh3v zx=LM@Kdk^25cwXStt?0G+`YVBl;7619#im}aB_>&;>hf?uYy1SD(*%f_57Jx!oNfx z2jo&`j)AkI>3s2?rRJYYiw#XCbf3n9{Mz&;ZPUYtbOfA`C>M}4>UeQZ zt6`$;!U%dy5E{>kJUmqFYcm4)P4@b7uyJ_pueP(d6^WX;sSnvoLY4v<#%QJUsO$4~ z!w#;u+d}Czwd=H42Pl#&)R9a;IZs>H+Jg)KjS<@sDX;NAjGE}2BrrC@qE9CI28g$7 z=IR4;W@if^D`J?^7kg4MteVg&wj9CF(BXR(7u(d)uunK0`wAy#HGJQ?Dy*IC`qUo< zEYwD5OV#dd61az!2T<8It)=o14C0U1wd-p!<14J&D^nE<(pX*YN(}8szH(d9VghYW zrM8zc{YzU2ji#5kN-8-AH%k8J_X#WJgF18gMKp91G=&KMEMqX zUjqM|yVu5Xs}SY9SAksT5>I2|I(I+UCYTQb_f@8} z1)2EZ)y~*5qAjcSe|G70X<3Cte(Ri57iw~|b!RI9N76cfI%KOFZm!8_BhjrlIV`J4 zrV^+uL!8ZGP?u7=Ss$f{!uWqaw>nl0nW%n0U@r&%iVmm-&IxjTXpa3iVwI2T>o`1o z1`UBxBc^$xsiMyp|d0n1patg{HBJWb0Z1+?Zcj z$o5G1irkYlc^N_>=aJu0m+(3KIv5I-<2D6dwX68tBo9dzw)cW(Exzm;qx%+; zn@%Kdp|gn1!M5&|Gm!ALeOXq6@7?xlwD>vw+zpeP8kjj=Sh2Zvu#Ybq{q8-?2@!xpa>Q&C=!P6}L_T1z zBO{#EGeOjR3B6>jM{E!5DWANh_Zmv%-T(yQ_|`S$~=wb)&42Sg(<$HGp->0 zj9vnU$zk#H@gLW=6K6@4Lg<#~_|O}W$2$08H7U&4Vk2SBe@Nhgl!;jtLzZ99iMnw)}CK)@qx+RA?LDYi<78L;S~Nfb0{_Z0h$p1YKRraQ;Es0k_A8J`Y#rz z4b>d{{2?tBgPkUt?J-NOd?)!RhwZ{}nC)fJlWp_<);NalIgRcQ%%@7q)79e9HrN2P z+yheY5rS^p}@Bc7F(w0mpWql#h&S%myTIWJv?|KP286=w}vdQ?e6!1iJD7hK{oAVV>{#~yu4ViKPJodODzx=ngxiX6U2^2M{Ej`21XU*P+u zLp?rpT)f+?GYo$kNT9xP!iRq+U(NH`vZ0Stt9E@HD12k6E<6lD*}R>PEP{b?i_@og zt)2gOI>x7`*Q2=POVEv;N6_|U`LeEiC`(t~I->37_k1cW_w#3B_9u*3vp7EYl$PE8 zQ??hA;siW$XvFqM!UM-^{6uA^i^p|UEju7X23=bEkr0?C2X2d!VWlO(tQ`}oe`PIA zBrZRz2!6@@o4g&(MJPvejj__NpkwGM6-SFa7y7n|io7eH`srjT!td!VUR}^@&&4Mr zz`m4!Q|c$*ELb@iHz&g>qpc#CMn;a)EFYwL>Red_Jj>N{&~5Y)gk$e5=ll)hBQ4a` z)5WR z(XUD&En6%2H{ZOw+x_^`?Zf@t*LGj3xiH^HB2>eYy^4jKF6xd98CI@E3y0hlQw+G` zEheXy(Tx`-HV-t^GMC4JjN~CJl|aM^%02+OIauPkC2U*)e*{-@Ox8dX)~2+Wp}V18F0w@4gi{qYuX;nOuc zRlvk-wNP$-4O$9L=Xn%aKb1iqu&lvC1NSX*6vveXjYNsQJhqs4*B;7<_GN22dteq* z8YHLUj||CZOsbPL96PQgz4iv;>p`(L{uP~tFLg8Wb0vEbuLj>T9ZHtsirVNKBc)*I zPdox_(&3FgBo6J!UJ5K7s_J>R^W_3X09fJSk9OxSs)1B*{qoex7^Ur`* zV%)xDspMT@j4@e58%dR?yQcaIHQ~)0x!mHJF zZ2QmKB7>fUGLE2sTkQV5T5xI#F7!brB2Xg*rtnieV^Nb65jgNk1|wWHPMO$=!i<#$ zx6b3zFdZuuPW*b>7isJGth)U&gTz@h`iAPZ1;u3;4wB~ON~{k(w@7ttXBO?S-L~&S zhqZ=KBp|ucRCjM(v}^kt1K|ImKBn|SAsD`Y=w@5XVZh7_dxI6^7cni9P^X_Wxi($1gt)Iz*s4@c~+G^=MxJq^E}+egaN zUSy20MRhr46o)9&;JYGN`Q-=0E*g6W`W+F4j)9+)wXC~SIhGLyUfBnIaxnz__N|l` zEKUD1kn(>%9))L9K!dtS zvT;ND?;6RCT!k`gZrQ%ZF7~q8b1qemI3)=z>Y1oXQg!Dvqb)U4-c-uU!nDt1cgj1V zn$c4#r$E%H>qR=#e}XT(htkyc8*%%#-1zVy;{>&z(x2Tk7Zgo4ayeQU0o>bxxr{P? zMhhC#;0RkQ41c)ZWaG=RDoDH=OQB1QL}VDK>>Gp}EU@;E_TBkLl$-^OtiMDgTY6dg zvigGkL90zZKPDr4rTRz$cPN%b)_yEIH^$H>3T`wA$+cHi>hPO`USh{KJD0&NFO8ja z?RUi8J?~38R0>W+#~y>H+>3w#gmqP8n@5P^{Brt>iLBT>kS}qn?4K=^&Xt+p*YZ5j z=BPI0%&I8rW)`wHRR}|rwxA}eK#LgrvZ$LI+W74aeEP-5jOzB(Gj;_&;A%~`TQ&bX zXIPFvpk%vDw;7;P|E*SPG5=1mS;#(UQiDpU*+#yu*yxxeWmWc`odY$Sm@30+Za|r& z0IjqGQZ}*kQ|-&9*d>3x7PqL91j2XCBC^qf;KF-9fW<94$~lGPOYsVsyCQ~^z7Pl0-1AO#0py4NLD{(dFQWN zJtOW#C!J1&9H_?0P&GMtpB$fv72E=kG z;2}hW1BO(KBrJ#KYONvWTKBa}+KaSZzbtv)s9)hl%WYgiMtAl?C16YBZVu|zu0+Um zxkq%hzF!2;j?C*|F3FuJ^B<{INIQi!d3N(=vy4I$oTXS*7~wA|A5UP%Hu06R8m3iZ zxoOgzaIZ0&6+i8RypG$4}A%v|R-}F7@5hPJmeo0!0+i_1~ZuzS)NnnT+E`882*7?@x=?P)Qv$ zqdDCsnDfd>6$oC?nmvQH$g8bi2Xr2qSWbKypwCR5Pq98E1iNsI+{47I6HHOpn;sW( zQa5JSt=h@(m_j9iB@~soh6CF&-n+6Hq(0Bczu){rYh`aZZ25LcehED%!fX9dKWT$6 zG4=1{bIu+z=r6&S1rOBtl$1s9qasBs7^QxNUE8y@cp^Ci`sY%sQ&A?VB z_?C=A8EQ0q4y9^!zt7w9>OrHnqOSZIJ^R^w9vTY&-5<%6FP8P-kNe?2sZ})*s0keX z+Z&s0Ed#!RxR3=HL^t|?a!R_7kiI^=$Eu5*2o4O87Gs@T%tQ8&TQy>wdoQ}3!V5gJ zRB+I)BSA`zzFQy9!{);?GDK@ewaT)l4tA}{m*V;HgP!)u)x*lKORs2akd2g|;{2-c zx5<@MMke!?u%;NYwlVE8A-1uNIHV`bN>JzgcdSAh1d|SPZ6Ob0 z-ai=ET_`HjsI3W&n`tvF%oyLLU_q9ePrFY1w7qV{&rQ(BA25!Qstl^P63(Sa8>CuY ze6|zZ2Se~IC)k|*S{P}lcK}W&QrAdjgwMx6h1<(7;!oCacjLJqCEz7~xn=nyW_e?J6 zTvZ_RRuGrXN*a-?Bkz#TDEPNo=jFXtVN(f+o)sr*(aZa1Y{NLpY#=8GGo<`o>UC1f z=5_1)k7Q-EGV&r^^#G985@Uy)pJnLL>;Soel`nJQgn>Iq2ee@pgW8q>eedJh!H?ert#zSV7_gb>`4LWcm9)<}1dfyITwLs~ zu(g}xzK2y@s?Ki2QqgVkaL{fBa(1#BU=i__j;yxvU%AoQl`0*Jjh5ck7^f8Fq4sVB zy1Bt&w;y*GhlAJ9!Y2rXb4Yd47@BPm$1~UPv!$(NWFlK$r-Zc#FQN%y@+??MR4tm*!u0Ua? zaNmy#4by|Xza=Mm`}c^57ouEque5$&i+xtCfa2e0d)Uei%j-rXq>qw+)sd{qp6Puu zIUr60Ck$Qz))^v5WJGbqJf4Wi0d(Fgj9uQIUQxbfF>^0fhc3(NgK@r;hLJR!Y36dl z>6W@R$p-7lOeENZ7=5=??K(XLt+=V-)KD;G@#a*-o?tfn6we~*fpSU%R-N=}GsSok zoAHxSL?OjYC$B4A*`o(~gCo2GN`SkoVn%gjz>2O?4_dnQt>8uj1)_87(cDXK>RHGE z;Y9oRoCR8&c2j@LuIcD#b@wwNGZPPjF3ME46bg>Gwq}LIkv7|e%Y09j#I9r$eIxvp z`=k-KWR~K;Nc{RHN@85tNBp_aaN@P{a=NhkXlSj=CRnRQhxug~-#yOS%I2g%j(N)q9YJ-F9>8sZCpq5&y+^cr;BZ+*W1g963G^nX&I*#8&%#7xM<#>U9@zfTrI#{az%GO;sqa{hl(plmvg z>}_`%*>TNAWL29T$NnQh{lDYdXt>pSbL{o9d$&<0yQ20acZ6-^theK&yjBf}W-zom zDn7O~la`Z_6CMMWM^!*BD=R7jonK%SLP3G$#=PRm*xH1;;K6bNQjUoMiX3$X@`L~a z#lz!eWfGWQo!uGOUY>>)FqQbRBM}&p+#BEC+y>4!v@*Fev^9s=cXV(#aB^@ib+A7z zcsENZY+&l2n8wsMv^9Z4Oioe4NJ9dTkC>zc6^XHl#(S;-a-4-wJq-n-auPPe5jS%5 zkEj9dzvPGMpI;pv|I%aPTKwVx!oe_tEb{|laj0*BkbtFmh#H@y1P%tbNC5->U>5_T zYVb?l;^cDt3Swt>X8u)kRR${il~n!sO@aHN`Chx)e<6r~$jrspH?}95(9!hIkDci!EXD8A(%8!AGWy(fQT!?NQYH^XETB9|&Tzr~OIAAMaD z>+3V?h@LhZtMM%3#4TjS+v4r^tsvQsu9|Wgjv4swCY5JmC==e}(-N=uFju3a_We!& zR~I{YQdS0gjF(VMrM2q(?Y&z@pQ#0+OJIsGN3`tityZM-qna_&2iUtuY3X`yOCdtOF;(hV!LRPa zmdm!TSNojxNW0*aizi*R=6G5@78}yNE3=&8)tFvp@w+!D-+FocJQjF*4+%T0xQNST zY>?~E06ib=zwnDYo(;N^q8turWGD0Ww$Rkrv;^`Yg(6Le#&kc@p_#F>;`vUz(1S-m z^04KEwB^!8+i_CANrndNG3e^84!Y z*Gxr2TXuo5Oz?=)={tnrm2VBjcqQ$1kA=;-71n#Z+5?e?=9Ld_V3WGOxvrjhmR9Hv zbUit}tp)3QZ(_6)tM@`Y9qK~$805wR-)DAla6VKDUi_Qg-0SuJnEiR)kq-QG1EbfH z6`3_T{aJ!7V{-qQuXg%*bb|>s!QCCZ1={$w!vA zL_rcQ>z2#bgnMll5qLo&0L-bDA#y|>o_os4l~}bW$66XJ8Ii8{mM= zk~Sv;)_%nOz5+R>-Pbe*>pkO8_J-Aw{*=n7o>ac!!Y{rCl_1K9!a}kCENK-0uj~IE zo~_+mal!5&J%SXl7-&fO{mrwHZPaiSa8 zT7A(-pA=Qf8r4Z-^}XiZIaFc3&xIl-17UvmM4*R+nZcIe&J8#>`{kfIRfmdbvw`O- zXq3v_t{N@+&wi>i3Gy<2w!@L_JU*Bllbg1`dCu8)B|chMt$K|lIWXBIpP`sU8GW|g z7Brm*He<0deRw3DmkD zH|Ww)GhNlR-gy>-ECnK*hi`xKrRVbXA{nP`La7^URe0G3QT<3gInr6`v&tdOx_O?B z7&twbiwR?tp{~^f7K+4td@VtWoG1FQWGy)H!K2ClUO;c6%{asr?>M!^|6MBWA_8BV zpb=#ydh8#@=4T57Ln+z?fnQA7Zh+^@Hi|TU<>)5&Mj>B{3Qle z>w*=Vnni8Cjfhql?8M!=L!l`YRQRU5`^l3VRDt{h1rpCjBp5*;Z$@j8HZWSca}i4e zkPfZG%V#{z0*&6>oiSw&TAhWD?9=TXrLI4P$26C-VLKz}B@(jG#>@PXNv8lM9A~D= zu>%2V2;>26Ih)r(3buDB;2He$iHT7>922zH(-Ot+F!ZU>ATB$oj^>|yTIBEdpmh6Lp z%|9ET&H2)nWENSv_^CvhU7TPuo(Od-%0_|%tlXFBtKAA%ux-$i`D%uu>Jl6Ia{E6H zAz|%4Vj;pVfm=M9ckx^^xkmV^T1Dhat0_ME&kSQCgQ0(YmZSUtt#0X8K8-FQsXqNG zM>S&H1%C5d`1>u;1{YHdXcm@eW2#0EcfJuw<$bY|Ni`xgyE&8b1d<86{RFc1(?p2P2MXGKZ_YRduhtK zgxW`nbsMH-B|p;%fsI*p5JAgkynW!G-pU6QbjVw)e03)fOew^Zuqx>}4!@`yq2zwL|M=ikGtN{yv)7}O z@{SHvK%(KlM#{h0@Z<9C+yS>lP@T(J0wWQm*r7b~+>!Qft0?_Booo0}ErMs0TO5V) zvk$#%Qz}A?@9grq>X1k&Hc8YM`D8M9D}c{uGgcPBQgSv!0k_0d^b`7Oa~wBj@ueWM zQLTR8wuQ1NC)3!<7)t!KJ_sb+n1%?3X3YeUdGB4~h^WDp+?oJYzZx{AIUQGd+Hv<0 zI$=5^?=8i7+rjv+s~8k~`yc*@4uP0)0(uOMGWBJfhKj^?*sSgjiN-M3FD zCM1(^Z;eB%T8d4_bI)l&f+)IzIYOfMu^sC<#Ayop;Z8uLNCi1G=z+Lir6lWIB5~5r zSM-z)6PuU~*L*^B+%DHkLPI&fFjd7*ssKH(GF*2>qN?_0Dn$vx7Ii&vi=I8>N;W#I znPs`LzvN}IU%+@}uHsxTGkQ#fjUiT;bsMdJ_o$ObYyUaK+Vc`4 zzM*{OO~777X#FNrU|(u(C&u+W62_~+Y&sNWLy+-(7=bSY4|mC-8HiJBO|pb!OhGW5id}^z^5OLo znURwY_WW}`f$n>3e$aDIJ3e+a`LXX|j&NMbQWm!dnzh?dnD+<^z2U(OsFF7y;awpc zrl24MxqXOODSMGP7>=_uM6jy3@@*7C9h~KJ-H_8J?=}2C`>}YRN+XT;700305~_jK z^;@IeOtQcJVzBE;sk+nvOx-W-h04U5GZto!7RZG#bhya<+pq~n9pyC9Svu4}!{7OS zC40Vfy#(KCKr8dse;(0jPOd~5$1#u%eiU+bQj2ElPq!}szC^q=GyeuExsB;1E5%{< zdY_GKkSMkoE=oE}01P_44j^RAa;2PrvrX{+%G*yc9-*zL2a|AXFRfc&a_}}IPkiMI zx*$E5_e95M=m=wMIZ=pmanS-NGgik07Z~#7JD<|n8H}zSDe@+ai@6?zpuy0ciyzuwnwqiMLSZq+5$7L~yDLSR#&AQk&liw!*V*Xp?YGI!sdO z*k4U!_bviTk^Sir)0txG5^mIlCx3Qa&sk5K==IHygR`bTQmSZrNq>Gzy6*lk!l}^n z@dMu!U%}-%qyg7GGs>Y_@-7wTLZ9Ln?k<-}QhTF4i&6b_VfZkZ>0NC|4D-jdkwJd< zS>+Kj}FIZ8lqW|2@>v7upGm=s0yH11o^dT~vTiPE4t{4w_7H zzFk~=#EOwdv`Ri^3J-*|ZEfej86H<8?BA)q6cV0}s5C;=c(V*Z)LN7Z-jtxJu9AQ& zU;rOuL;>Ubf+j=i?@PvrNS+Ra?LCoHL<4H&M^CvqBiDm}0A45KsFSI~IQ?nYF6Q5# zq;$S^i8TB@I@w{1Na+0Ccw^Q9k4}x<|85?-S=TL0^Mzic%#+QdL%2DVO3v(_&;ikD zW1R81`}X>|J6i>t@=%1?IXmtE(*^yH!859WV6$t6mGy)Cac7o)vTxKPdK?e0FZAOw z$^&on>Uk94J48j(WP3LNLWViEWi0klHr)k`li%UHDBf}pkECkRRYsTOOVsc&l@>oV zc|2v7dj={gI)z);AMcew?fA*xGtptr85YM<|yFc8DS{nWEoSwu|d zx5cdhCJKX2$5AN6ZscvkqO^pOc)?^jB(!tjyC1KynEJ+a=00LO>&m)VuK)wHFf1kt zwl|N~9XaYo>OQOK7$L!XGC63f&QJPc-h<6eC3GI3htXTRIADD{NXa~p8$|{!N#1U) zm*1fgWiA;W#Y|@)t+Q$Qk9CW@k*}nsg8Dpxj53?>2W<-Tg_|==bo-RXCs1? zmU*_rXD;eH>`Fa9RE_h9sfXGE-1)-Efo_xrwm!mwJY()3mk7ixCi0(^z51=`Z&0Zk z28=Kx6ZLO4rMd6EeaD;s3aHbN>@uRvrDggGNwJE%G%@3sM_~OqO(?|Muok*m*`a0& z*RPluIMyx?4y1#U6Dy#uGWh2|jM$)~2Pa%2ig-$xA>E!M3kc-!sLK9auLZlm8 z?TJ?OA#28i&LwXOqLpKGT^(yihoo}JgK8-jSFG%FIkNNZkblOs@%NRTK2oRMFEh)M zP=Bk7!r2~a13j^p&q&gwes8=<9u8C#i6Ihk7>@}^(iSU?0Fu?OEkA5_K33{S`Z zFm?_>q6JZ+Y}>YN+qP}nwr#$)ZQHhO+j{NpdH+WY7PFYmji_BMPt-k`Sx%)-l(R@k zVlo#ANN7axUP!_%L4Y2bQ~X;@nK)yOKH-d1eLKPK?%X@n5|aeTm${qG+rV|=Rf=V8 z{jq$`OK#4VNWG)YPAT8#Ninbb9MkYd4x`LHuQ{+G%`Tg&zp!|+D0QUZLW9Tqky#ea zXN#V-Vn-ZV{rKg_Aj81DUeS z?(})I+0`Iop&OZ6McXRwOpus6*bvK<(5FOScPPm6dz zFt&`31byWIll%xsi^|kB^+91Np|QW3P;FU)xZdfd53Gn_W%t}vxP9#B-RyTVv$2rj z85&-hybzGd61)$g_`$dB#bk$lw6bFu9xp{%r2V3%*zB$nwJC`bFkxZD zH{HX%-PRN+wi?#OqX$6Is9n)5e-KE=1p;#G-M`R(X(Dl_(+Hd1Npm zJ#y?Fg;|o;Kw9FzAW4oM4vf_wu#Y;G*3jcF6zIY+1_hbuo3|iUohZG_GK4sK+Vq^; z#8TL|hhJO)KDVt%jQpm?u#N486kxb3;VY+36bl;k+3cvDM`qO59kSto!h$Kte(x_< zs0T-$$54oLRK3OhA@V(K1s1UR!S@Gw@`|T*ncC0I3ps1GZWVXvwy}LU*}|o7{)rGL z!oyGXB~H+_5YWHOiZkm>-bY-DP18{&>YOynz&yklNKYLh2^|A>Iwg{kT5t@)Xht%h zdsg0dnC)@*%T{`$jPab*iH(eJK=!coa?V=Y)VDO-9or{^kAYiN&!;puZC~>dUny4v z8^DagE?3IkwGVa#o9R}h&Ba()Wm5ReI^F!}SzIzvukK({SlSPTi?1d3h3TPg;W)*~ z*!Z4crXJtSICvOPiUC*L>0df}^0jOaiKbrQSNQ%ciA5>dNgJ!#*u3!>0ggWvxXo-c zc8{2H!Oh^=5XzXOyG>#M_;?MK$0%z^G;wVpWf6K;jLf7Ce2B4l8b6B7SWDO&?*a2~ zk6kY#OL&#+20~A2^d$8eI-FOL(-j72lMX+|N@2X=O~}d|TOaD#Ua-o#M|lU#x2UJ#y9Q9X4<6%o`JYf^ycSm!)8n^*%WI}5kTLH#2^GDR42 z@Dz`AKiphb=Zyxi2vpla9=`r>%eC)HQh2t}o!6LLVH_>-0?#g~h&(DfRO^4lSKFzY z2zS}Ot^w4Z;dP;`uF?bJgf?+ENXT~JeSI3IOFRqF%A$sUWO_&~S*tuXOeai$E87xUD|!F&`1+)6D=R58TBEJxo|1s!PN3-6!O0nPN@t!h%V=}v z6Ejgztcl60P=&L<(*lo(@>@By_~ckwGG%5}CGs2jA7-w4ga#p)dK7A>T6Lv5??tPi2mUou4ikRUaT za|#!OT)!I93O5jzpYX#JA$+eNirA#o3)ZBV@VX(_toQtg&7t?(^$U_=zs-39Cw}$K zH#0lil>8OKk?!QB1KdUorj@ehQj5`@n;#_V=*!En?@Yn8zJNQkI<2s%OnYu=$N%C{ zlN-k)#Ck+WR{6eG3jb0XNWqDyD1IA+Q)`BIf1ZGX zqmGtC9Y5s#av4<1m*<5b<57O79mOG0i}K=nvZLr+%-{#}DK3eb^yIx743+lnNI{Vj znfhKkUWfJbVEt0o=JNu~s>vzxhI z_ckQFgu!2&jkdzm&b(Wqdm@MDX{B)i1%wJtsXh4?_VUSszG?HBdzwI=Px`DGWRYx0 zUl#?s^{declKQ9N8dJYF8>pV{g?OiW|HRvt6ht&$m7L0I>vp9XIF}~<(YX6#C*5m| zFvKn?GY3kN6(ljW;iaIBvW%J`2fC&G<^u5 zEOzns?n#g8`W?797hET`Ar3z|Z1hJGagn#aHzZj9ILeU~8b!6EDvGYR%oAUzy}=ct zLiVii5-jAEKQroTXH=H}lILS3qw!}C{7Sl7NQ;D`CtQkBhmthw4c7%}M|khgO|XHy z{!ySQ{mbmdcX2&QW&(9cmVjX&Chdtxu zIweJPK_gLrYePO0fwou$e9))u+I3Kxp-!qOvPaO`;YE*F@(!uxU*R}lxa{!$9NT6U zg?jH(u+WH2yT|=adve6pbRdjt;2S{rQ>0Z(I@;EkbPPTEC<)%+_wLZ!=)%hR^W3pc z;1Ixn2vn&NNqdguL;RpbBkbs>jl8x+?0}~yfBcsHw?>*a<A`Za$$h7T4EfKvJv|JHh47AJIQ`LPm$RD4r4 zx8sQsl}ufi<7SQ$;0z9Q*i8@n3;Lg|tMc4QI<`7(H=8Hbqg(9C=E};}0IZ(n#KQR4 z06ysvi+A)CqvAxvhH1PmKCP&CH5Ir)b7H9~K!5-otSR1oO#86S(xJdb(gtvqgnW5I z4AY9_@5DFEcNF@Jaq!q^%}cnp`d;p*C%J$Uh{$L}Q>3=^; zpmM~FIFFRB!hPy8`2hC!c*YvUUU+kN`8dSRZ)&N8LbioPF%fgpP6^dxmqUFcP_sf( zG4dQ%b&9}f28VDwof$tw;fq?H6y~;?e$~xGkO1 zTOF;lY*gn?njkhujQaXH-`J~C)T8-=Ig*dXO<&1Rn6OqL9w^e@iALo~)a8NN2Pc~;By#2ozaGiy)#$KWO;hCxOsEKavYd-n?~-HFm|B}sUJ+*wK3QNOYTjMu9>IXZo&yot^#Z;|T=|mx)q#6v4p!u%zYo~=* zfr;7gsd-Nrsg%1aIjV*zH#cp#>xxmuU)0R4JCTRuOcp+Fht0%Lb=M5I25r9&aXSo< zJ{1GI>MZ>!ikrDW$DPJ6=$5f$i%tFuE;bE_C%6WdWutQD^zR=RIiJglLy;!34i-Qp zlmOThIJYzA^@AM|xN_FonS8gWS7U zy{hZY!$^=Pl)gcKmVisARH)4Q;4n`~x9Y#qA3E1aqfcN*E}s;~P8RxX;8CXE@Wqc4_GxnX$bJ#w8^7q#FJNrV1bjeX9M9J&{jU| z+kwZ1QM#`ae_Vx58AV9MLDmjOkqj;%F0JFYla5}eoAvDFdn{GFXr~J{&U3LnM~AU{ zts%zt6fvM2tNfWxG1BVpv7EJL*}TP*CdD|+#hhN&F!&FN0}aQUnE@jQ-fx-4x2mon zQrw_rRMlgj^{jbd+FoUpoV#WLd3$WmE~P--%%sYGX{#cU%zl6-wk$#FymURIDGCe8PMB=IbwZe=jB%MvL{*@SUv z#1YU>lV-uxXQZc9q^r7YOiWnX9c>Y-WcJdQFg!)PrlgQITvS6{K&CRK zOaWdzNW7$iYKT}%4yQsEJW0xkZ z9CjginY)yTYFo5O?HjC34NJckL~1iO#H!TyYuNfAPYy0|;pd8tL3>q4xp5x~j=4H0 zFm8dJ^9?CnXraTginai!19FH+%JfzlMzdtx3A+2Hu#|s^b(}bjT9Z4{N_+~PeVy8` zc3B%fN_x{0Zw8P>5Wir+-ki9B`t_kPt*EzvNa5fN%WUvMIW|Ys-?scmZ;6!6y!b^m zyRz}ezk<=_^#J0>y)kEOzi38r3Ax!8jFKQ4hV3OX%15omDAz(;JUX<$8?!kE{+VWK z`f5pZdHm&vYgHk17k?}=+bbknob(OFsha#{kCZz1c;CdIO${j&8ev;6Yj81YQrJ(< zvc+6}hS?9qpE7P&0s2~d4hDb4CS(l?CfIaX?y?ppJD zY>~EN0;E2ve+U|_HUHAw41?G9XIg*P120#HZa%Z8@Q@kHx@#oQwO7A|}qzVES z1i{*kD=9<8Um^~ys#Xrou9kY1%^&nl*KhUJ$OS_PlY?b25*)$`-tL>scBd4ug*~{m zvF~<dM7ZO&M;%<*_>!}&DM`Z-B(nc!P?;wY>%2k{cs-Isip*4ALu(^ZfVJa#BZZx zak~q?CpyC1XbF{pyY0#le8tifk3?A^Gm^PCy9_22EOhAc#U$vkyQSiso&Q1wLKQ4a z=c-`CPlV&^-;tR(3!m@-qz#F1>V`la1IYKoa6{3>DNI`e9kkURck)}cm+O6Kd$WFg z5+R0$g!g!q_ghgmx=t=r$QWvj8qB$Yu_8U@TNp8){rBRwqd@Lnm?k-2(zt$W9)@$l z{C1<+5q!^$pk$th{rF8mqy<-~KMEsq-X*~_38g=VME|U90DD4VG)0HJ$dS;6jM%AD zadIN28O!2D)K;`Ye$zlN0G>+dUisXyWXn%6Mu^vUq75z~bDf&7o*XfUD%cn81?p3q zNDl{tvSr#5Hn!UoBLJ5^H#~H3l=#2P1M+Ru7MvDv8S;9tKNd&>kFadaCZTgdj(Znj z8pkGP#_g z9deA);1zgSA>2nMRgwA}8E|ZMjOm5USo0hKY$@hLLB=hAHBRQtl+Z+tP8@k7SPi*P zzz^m&IiZG;dRoRjmtl>yt-IyiA&ivCo28hWSFZ{DPXWW*Xpt|3oJ*QQglpxX0HGDe z+oOv^P%b1ksJ%S!@j@JHLi-3w%uI%h=tZ#ARYQU)aIV9|YKIHu235ygNacpJK#=Px z^q3B}Ffb5tA!)yKe!GPXR_^on(JvzRc*#nS9%|kV#W4mRN;;RO=52Ms6D0`B>Q8!O zx|8mZ&T&OKNRHi!q!fz)!L*pC5TJlZP+;2G-w4frGm=*C2DFa+lI`Cs2HI=G72QAb z@FO>!i9OJYxCp>~j5i1@l^Gnqg7E!QwiYZ`U^*2o?TN%zx?BmCCDnu}E(cclR9(gM zWw^O&PPOrL+J{03nrOV*i-->=asHsfc@*$&2V>~=B1><#c#12`#3n*tiM2B3hn3O& z8E1}nZ09&1-tM-z{QB$=W#m;DI#tN~Ck8mX%r3MPHKv`Uz_e?3SrGiUa7oJzyUUn; z)9UbRi=cjB<%3jmv)MxW?sC*@l7vIDT__)7K^#iDPq#kbUKA4MAoZ85QwnGmoLo+8 z*OsZQi?xG!GL{q$Tp-Y}D3oJX9#2T#VrR7Zh(0qc2`H=bF#tB~Ik}Sz+Chi)SJKBW6;6?nK3i4BH*f7q3HyCqVcQqi-<^>kLCu??}|2*b#433Z>Bxx29*Y z<;8&eW^r$niJ6)4xbIu)ysBPUtnDQh9|xURTQ_$q7Uro(Ux^RPt^wI{%S0$F|Dk7hV zhob45v4fdS99D~6qwO@|X76VW(cqti7w?ivbTs4xcD+?ZSl`&o=fcC;q(-fmGkZhO zjuKChq~vjmKIThVT#k_ney@?8kVG$IrHMlqV3)q2U>Wp+mI4 zff;SOt8_#AY2%u zqhV_;QXdWui+lZj@YEp@ZR?VNbg_e0b}uIIhW1t*ireiT~$|G%?-3( zgiyr6eVFfk?`4;$2+19`6}Tu0xP}~B>5D2${*HWY!=%23A&?e7A^H@#N?5{r25?f*O-tk7r^}8yv5ukbG$_8ak34~dwKPK~@XG^ZSdj7-Cz$X6 zur|G0<9H9Ib_%7mGtO6(jNG*#CNsK*G`YbLl}Dq>h1z9=bswf><~O*1pnc$&&i*zz zLy}s%<6R<4(yoA^v3=o`^g*M+3%tiB@|P?(_d6OXPB;at(_2c}K9IS?^Ht}vg_MXr-ryr_pYtry z3zz8{>dS9?MtI%byYO`VDXwD1P4GdO^qT0iFA9)@oDAVvQzHdtyvgx3$W%@e@a_h~ z4|usC+^NuG-|jwRf2=xSE@67PV58G!-_x;ztG$sf@NaOd1=C$2sm_VwGQLZ{GQcs5~P`Kod?rjAkA0$b3 zgjFI@2irv|xNr7u^Uic@J6u8O4p@(9v~2!*)aUCz<<6D_j2O>~7^*&$2Bl#%ws4Sn zJ^tpFD>gG+*R=BVOZ9_2phiuHcJQo8(tjDd(Wr|Yr@CQk`KAJ6n7#avc+Gw2ED7t! z-(CuwZBNx^Nq^=Tf>plY!Wge5KjS<&a?F!{kt3h6#J0i<|!Cop)Vw7rw4lc0> zdqzY|!6TVJkzcc7k34`yWVLKL?S;}ykfBiOT5pKDkyMnlpif%0A+>2ZSOHKML|Ys^ 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 TNbKy8L^^IHYHBH^*GT^b?a5y{ literal 0 HcmV?d00001 diff --git a/Task 4/Lecture 4.ipynb b/Task 4/Lecture 4.ipynb new file mode 100644 index 0000000..eeca9db --- /dev/null +++ b/Task 4/Lecture 4.ipynb @@ -0,0 +1,1641 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from IPython.display import display, HTML\n", + "display(HTML(\"\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Lecture 4: Conditioning. Floating point arithmetic and stability. Systems of linear equations. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "## Introductory example\n", + "Consider solving a linear systems of equations $$Ax = f$$ with\n", + "\n", + "$$A_{ij} = \\frac{1}{i + j + 1}, \\quad i,j = 0, \\ldots, n-1.$$\n", + "\n", + "For example, at $n=5$:\n", + "\n", + "$$\n", + "A=\\begin{bmatrix}1&{\\frac {1}{2}}&{\\frac {1}{3}}&{\\frac {1}{4}}&{\\frac {1}{5}}\\\\{\\frac {1}{2}}&{\\frac {1}{3}}&{\\frac {1}{4}}&{\\frac {1}{5}}&{\\frac {1}{6}}\\\\{\\frac {1}{3}}&{\\frac {1}{4}}&{\\frac {1}{5}}&{\\frac {1}{6}}&{\\frac {1}{7}}\\\\{\\frac {1}{4}}&{\\frac {1}{5}}&{\\frac {1}{6}}&{\\frac {1}{7}}&{\\frac {1}{8}}\\\\{\\frac {1}{5}}&{\\frac {1}{6}}&{\\frac {1}{7}}&{\\frac {1}{8}}&{\\frac {1}{9}}\\end{bmatrix}.\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def hilbert_fl(n):\n", + " return np.array([[1.0/(i + j + 1) for i in range(n)] for j in range(n)])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lets try to solve a small system numerically" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "n = 3\n", + "A = hilbert_fl(n)\n", + "f = np.random.randn(n)\n", + "x = np.linalg.solve(A, f) # we have not discussed yet what this function is doing but apparently it solves a system of equations" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.7277615519878704e-15\n" + ] + } + ], + "source": [ + "err = np.linalg.norm(A @ x - f) / np.linalg.norm(f)\n", + "print(err)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### So far so good, what about a larger system?" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [], + "source": [ + "n = 15\n", + "A = hilbert_fl(n)\n", + "f = np.random.randint(-3,3,n)\n", + "x = np.linalg.solve(A, f)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.5838742081211422\n" + ] + } + ], + "source": [ + "err = np.linalg.norm(A @ x - f) / np.linalg.norm(f)\n", + "print(err)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The error grows with increase of $n$, and we have to find out why. It is not a problem with the algorithm!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lets solve the system exactly symbolically " + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "from sympy import Rational\n", + "from sympy.matrices import Matrix\n", + "def hilbert_sym(n):\n", + " return Matrix([[Rational(1, i+j+1) for i in range(n)] for j in range(n)])" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1. , 0.5 ],\n", + " [0.5 , 0.33333333]])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hilbert_fl(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}1 & \\frac{1}{2}\\\\\\frac{1}{2} & \\frac{1}{3}\\end{matrix}\\right]$" + ], + "text/plain": [ + "Matrix([\n", + "[ 1, 1/2],\n", + "[1/2, 1/3]])" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "hilbert_sym(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "n = 12" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [], + "source": [ + "A_sym = hilbert_sym(n)\n", + "A_sym_inv = A_sym.inv(method=\"LU\")" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{array}{cccccccccccc}144 & -10296 & 240240 & -2702700 & 17297280 & -68612544 & 176432256 & -299304720 & 332560800 & -232792560 & 93117024 & -16224936\\\\-10296 & 981552 & -25765740 & 309188880 & -2061259200 & 8409937536 & -22076086032 & 38044955520 & -42800574960 & 30263032800 & -12206089896 & 2141691552\\\\240240 & -25765740 & 721440720 & -9018009000 & 61837776000 & -257554337040 & 686811565440 & -1198416098880 & 1361836476000 & -970938969000 & 394350596640 & -69604975440\\\\-2702700 & 309188880 & -9018009000 & 115945830000 & -811620810000 & 3434057827200 & -9271956133440 & 16342037712000 & -18725251545000 & 13443770340000 & -5492740453200 & 974469656160\\\\17297280 & -2061259200 & 61837776000 & -811620810000 & 5771525760000 & -24725216355840 & 67432408243200 & -119841609888000 & 138278780640000 & -99868008240000 & 41012462050560 & -7308522421200\\\\-68612544 & 8409937536 & -257554337040 & 3434057827200 & -24725216355840 & 106992754412544 & -294230074634496 & 526565596677120 & -611192210428800 & 443680271274240 & -183018111900624 & 32742180446976\\\\176432256 & -22076086032 & 686811565440 & -9271956133440 & 67432408243200 & -294230074634496 & 814790975910912 & -1466861305029120 & 1711338189200640 & -1247850762958800 & 516757021837056 & -92769511266432\\\\-299304720 & 38044955520 & -1198416098880 & 16342037712000 & -119841609888000 & 526565596677120 & -1466861305029120 & 2654320456719360 & -3110531785218000 & 2276990587872000 & -946216088737920 & 170392979877120\\\\332560800 & -42800574960 & 1361836476000 & -18725251545000 & 138278780640000 & -611192210428800 & 1711338189200640 & -3110531785218000 & 3659449159080000 & -2688113888460000 & 1120519052452800 & -202341663604080\\\\-232792560 & 30263032800 & -970938969000 & 13443770340000 & -99868008240000 & 443680271274240 & -1247850762958800 & 2276990587872000 & -2688113888460000 & 1980715496760000 & -827939077645680 & 149882713780800\\\\93117024 & -12206089896 & 394350596640 & -5492740453200 & 41012462050560 & -183018111900624 & 516757021837056 & -946216088737920 & 1120519052452800 & -827939077645680 & 346945899203904 & -62950739787936\\\\-16224936 & 2141691552 & -69604975440 & 974469656160 & -7308522421200 & 32742180446976 & -92769511266432 & 170392979877120 & -202341663604080 & 149882713780800 & -62950739787936 & 11445589052352\\end{array}\\right]$" + ], + "text/plain": [ + "Matrix([\n", + "[ 144, -10296, 240240, -2702700, 17297280, -68612544, 176432256, -299304720, 332560800, -232792560, 93117024, -16224936],\n", + "[ -10296, 981552, -25765740, 309188880, -2061259200, 8409937536, -22076086032, 38044955520, -42800574960, 30263032800, -12206089896, 2141691552],\n", + "[ 240240, -25765740, 721440720, -9018009000, 61837776000, -257554337040, 686811565440, -1198416098880, 1361836476000, -970938969000, 394350596640, -69604975440],\n", + "[ -2702700, 309188880, -9018009000, 115945830000, -811620810000, 3434057827200, -9271956133440, 16342037712000, -18725251545000, 13443770340000, -5492740453200, 974469656160],\n", + "[ 17297280, -2061259200, 61837776000, -811620810000, 5771525760000, -24725216355840, 67432408243200, -119841609888000, 138278780640000, -99868008240000, 41012462050560, -7308522421200],\n", + "[ -68612544, 8409937536, -257554337040, 3434057827200, -24725216355840, 106992754412544, -294230074634496, 526565596677120, -611192210428800, 443680271274240, -183018111900624, 32742180446976],\n", + "[ 176432256, -22076086032, 686811565440, -9271956133440, 67432408243200, -294230074634496, 814790975910912, -1466861305029120, 1711338189200640, -1247850762958800, 516757021837056, -92769511266432],\n", + "[-299304720, 38044955520, -1198416098880, 16342037712000, -119841609888000, 526565596677120, -1466861305029120, 2654320456719360, -3110531785218000, 2276990587872000, -946216088737920, 170392979877120],\n", + "[ 332560800, -42800574960, 1361836476000, -18725251545000, 138278780640000, -611192210428800, 1711338189200640, -3110531785218000, 3659449159080000, -2688113888460000, 1120519052452800, -202341663604080],\n", + "[-232792560, 30263032800, -970938969000, 13443770340000, -99868008240000, 443680271274240, -1247850762958800, 2276990587872000, -2688113888460000, 1980715496760000, -827939077645680, 149882713780800],\n", + "[ 93117024, -12206089896, 394350596640, -5492740453200, 41012462050560, -183018111900624, 516757021837056, -946216088737920, 1120519052452800, -827939077645680, 346945899203904, -62950739787936],\n", + "[ -16224936, 2141691552, -69604975440, 974469656160, -7308522421200, 32742180446976, -92769511266432, 170392979877120, -202341663604080, 149882713780800, -62950739787936, 11445589052352]])" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_sym_inv" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{matrix}225 & -25200 & 928200\\\\-25200 & 3763200 & -155937600\\\\928200 & -155937600 & 6892441920\\end{matrix}\\right]$" + ], + "text/plain": [ + "Matrix([\n", + "[ 225, -25200, 928200],\n", + "[-25200, 3763200, -155937600],\n", + "[928200, -155937600, 6892441920]])" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_sym_inv[:3,:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "x_sym = A_sym_inv @ f" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([178587533700, -36343113031680, 1840126802426640], dtype=object)" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_sym[:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, -2, -1, 2, 2, -2, 1, -2, -1, -2, 0, -2, -2, -1, -2],\n", + " dtype=object)" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_sym @ x_sym" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 2, -2, -1, 2, 2, -2, 1, -2, -1, -2, 0, -2, -2, -1, -2])" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thats cool: we found an exact solution. How does it relate to the one we found numerically above?" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1.68481673e+09, -2.49810169e+11, 9.23256364e+12, -1.47865831e+14,\n", + " 1.26548177e+15, -6.35346650e+15, 1.90893727e+16, -3.10903988e+16,\n", + " 8.47002490e+15, 7.74591773e+16, -1.83635048e+17, 2.14030465e+17,\n", + " -1.44209897e+17, 5.37157771e+16, -8.60260839e+15])" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([178587533700, -36343113031680, 1840126802426640,\n", + " -40763720391095520, 494478649301036400, -3692652241725326880,\n", + " 18178212566190156480, -61465382245798399440, 146065938596015157720,\n", + " -246060765797279312880, 292261743908214880800,\n", + " -239289867888435655200, 128509153948247763600,\n", + " -40739658302071890000, 5777758685388081600], dtype=object)" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x_sym" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1494.0414789748738" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linalg.norm(x - x_sym.astype(np.float64))/np.linalg.norm(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So we have two errors: error on the solution, $|x-x_0|/|x_0|$ and error on the residual, $|A x-f|/|f|$. Note that we can easily estimate the second type of error but estimating the first one is tricky: you may think you have to know the true solution $x_0$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Lets try to further increase the system size $n$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whats going on? Why dows np.linalg.solve fail so miserably?" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/latex": [ + "$\\displaystyle \\left[\\begin{array}{ccccccccccccccc}1 & \\frac{1}{2} & \\frac{1}{3} & \\frac{1}{4} & \\frac{1}{5} & \\frac{1}{6} & \\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15}\\\\\\frac{1}{2} & \\frac{1}{3} & \\frac{1}{4} & \\frac{1}{5} & \\frac{1}{6} & \\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16}\\\\\\frac{1}{3} & \\frac{1}{4} & \\frac{1}{5} & \\frac{1}{6} & \\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17}\\\\\\frac{1}{4} & \\frac{1}{5} & \\frac{1}{6} & \\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18}\\\\\\frac{1}{5} & \\frac{1}{6} & \\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19}\\\\\\frac{1}{6} & \\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20}\\\\\\frac{1}{7} & \\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21}\\\\\\frac{1}{8} & \\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22}\\\\\\frac{1}{9} & \\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23}\\\\\\frac{1}{10} & \\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23} & \\frac{1}{24}\\\\\\frac{1}{11} & \\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23} & \\frac{1}{24} & \\frac{1}{25}\\\\\\frac{1}{12} & \\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23} & \\frac{1}{24} & \\frac{1}{25} & \\frac{1}{26}\\\\\\frac{1}{13} & \\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23} & \\frac{1}{24} & \\frac{1}{25} & \\frac{1}{26} & \\frac{1}{27}\\\\\\frac{1}{14} & \\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23} & \\frac{1}{24} & \\frac{1}{25} & \\frac{1}{26} & \\frac{1}{27} & \\frac{1}{28}\\\\\\frac{1}{15} & \\frac{1}{16} & \\frac{1}{17} & \\frac{1}{18} & \\frac{1}{19} & \\frac{1}{20} & \\frac{1}{21} & \\frac{1}{22} & \\frac{1}{23} & \\frac{1}{24} & \\frac{1}{25} & \\frac{1}{26} & \\frac{1}{27} & \\frac{1}{28} & \\frac{1}{29}\\end{array}\\right]$" + ], + "text/plain": [ + "Matrix([\n", + "[ 1, 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15],\n", + "[ 1/2, 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16],\n", + "[ 1/3, 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17],\n", + "[ 1/4, 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18],\n", + "[ 1/5, 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19],\n", + "[ 1/6, 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20],\n", + "[ 1/7, 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21],\n", + "[ 1/8, 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22],\n", + "[ 1/9, 1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23],\n", + "[1/10, 1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24],\n", + "[1/11, 1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24, 1/25],\n", + "[1/12, 1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24, 1/25, 1/26],\n", + "[1/13, 1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24, 1/25, 1/26, 1/27],\n", + "[1/14, 1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24, 1/25, 1/26, 1/27, 1/28],\n", + "[1/15, 1/16, 1/17, 1/18, 1/19, 1/20, 1/21, 1/22, 1/23, 1/24, 1/25, 1/26, 1/27, 1/28, 1/29]])" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A_sym" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1. , 0.5 , 0.33333333, 0.25 , 0.2 ,\n", + " 0.16666667, 0.14285714, 0.125 , 0.11111111, 0.1 ,\n", + " 0.09090909, 0.08333333, 0.07692308, 0.07142857, 0.06666667],\n", + " [0.5 , 0.33333333, 0.25 , 0.2 , 0.16666667,\n", + " 0.14285714, 0.125 , 0.11111111, 0.1 , 0.09090909,\n", + " 0.08333333, 0.07692308, 0.07142857, 0.06666667, 0.0625 ],\n", + " [0.33333333, 0.25 , 0.2 , 0.16666667, 0.14285714,\n", + " 0.125 , 0.11111111, 0.1 , 0.09090909, 0.08333333,\n", + " 0.07692308, 0.07142857, 0.06666667, 0.0625 , 0.05882353],\n", + " [0.25 , 0.2 , 0.16666667, 0.14285714, 0.125 ,\n", + " 0.11111111, 0.1 , 0.09090909, 0.08333333, 0.07692308,\n", + " 0.07142857, 0.06666667, 0.0625 , 0.05882353, 0.05555556],\n", + " [0.2 , 0.16666667, 0.14285714, 0.125 , 0.11111111,\n", + " 0.1 , 0.09090909, 0.08333333, 0.07692308, 0.07142857,\n", + " 0.06666667, 0.0625 , 0.05882353, 0.05555556, 0.05263158],\n", + " [0.16666667, 0.14285714, 0.125 , 0.11111111, 0.1 ,\n", + " 0.09090909, 0.08333333, 0.07692308, 0.07142857, 0.06666667,\n", + " 0.0625 , 0.05882353, 0.05555556, 0.05263158, 0.05 ],\n", + " [0.14285714, 0.125 , 0.11111111, 0.1 , 0.09090909,\n", + " 0.08333333, 0.07692308, 0.07142857, 0.06666667, 0.0625 ,\n", + " 0.05882353, 0.05555556, 0.05263158, 0.05 , 0.04761905],\n", + " [0.125 , 0.11111111, 0.1 , 0.09090909, 0.08333333,\n", + " 0.07692308, 0.07142857, 0.06666667, 0.0625 , 0.05882353,\n", + " 0.05555556, 0.05263158, 0.05 , 0.04761905, 0.04545455],\n", + " [0.11111111, 0.1 , 0.09090909, 0.08333333, 0.07692308,\n", + " 0.07142857, 0.06666667, 0.0625 , 0.05882353, 0.05555556,\n", + " 0.05263158, 0.05 , 0.04761905, 0.04545455, 0.04347826],\n", + " [0.1 , 0.09090909, 0.08333333, 0.07692308, 0.07142857,\n", + " 0.06666667, 0.0625 , 0.05882353, 0.05555556, 0.05263158,\n", + " 0.05 , 0.04761905, 0.04545455, 0.04347826, 0.04166667],\n", + " [0.09090909, 0.08333333, 0.07692308, 0.07142857, 0.06666667,\n", + " 0.0625 , 0.05882353, 0.05555556, 0.05263158, 0.05 ,\n", + " 0.04761905, 0.04545455, 0.04347826, 0.04166667, 0.04 ],\n", + " [0.08333333, 0.07692308, 0.07142857, 0.06666667, 0.0625 ,\n", + " 0.05882353, 0.05555556, 0.05263158, 0.05 , 0.04761905,\n", + " 0.04545455, 0.04347826, 0.04166667, 0.04 , 0.03846154],\n", + " [0.07692308, 0.07142857, 0.06666667, 0.0625 , 0.05882353,\n", + " 0.05555556, 0.05263158, 0.05 , 0.04761905, 0.04545455,\n", + " 0.04347826, 0.04166667, 0.04 , 0.03846154, 0.03703704],\n", + " [0.07142857, 0.06666667, 0.0625 , 0.05882353, 0.05555556,\n", + " 0.05263158, 0.05 , 0.04761905, 0.04545455, 0.04347826,\n", + " 0.04166667, 0.04 , 0.03846154, 0.03703704, 0.03571429],\n", + " [0.06666667, 0.0625 , 0.05882353, 0.05555556, 0.05263158,\n", + " 0.05 , 0.04761905, 0.04545455, 0.04347826, 0.04166667,\n", + " 0.04 , 0.03846154, 0.03703704, 0.03571429, 0.03448276]])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Condition number of a problem" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Conditioning of a problem" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- Conditioning of a problem is defined without reference to any particular algorithm." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- A well-conditioned problem $f(x)$: all small perturbations of $x$ lead to small changes in $f(x)$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- An ill-conditioned problem $f(x)$: some small perturbation of $x$ leads to large changes in $f(x)$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "The absolute condition number of a problem $f(x)$ is:\n", + "\n", + "$$\\kappa = \\lim _{\\varepsilon \\rightarrow 0}\\,\\sup _{\\|\\delta x\\|\\,\\leq \\,\\varepsilon }{\\frac {\\|\\delta f(x)\\|}{\\|\\delta x\\|}}$$\n", + "\n", + "and the relative condition number is:\n", + "\n", + "$$\\kappa = \\lim _{\\varepsilon \\rightarrow 0}\\,\\sup _{\\|\\delta x\\|\\,\\leq \\,\\varepsilon }{\\frac {\\|\\delta f(x)\\|/\\|f(x)\\|}{\\|\\delta x\\|/\\|x\\|}}.$$\n", + "\n", + "Relative $\\kappa$ is normally more important (its at least dimensionless)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "If the function $f(x)$ is differentiable:\n", + "$$\n", + "\\kappa = \\frac{\\Vert J(x) \\Vert}{\\Vert f(x)\\Vert / \\Vert x \\Vert},\n", + "$$\n", + "where $J$ is Jacobian matrix: $J _{ij}={\\frac {\\partial f_{i}}{\\partial x_{j}}}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Well- and ill-conditioned problems" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- A problem is well-conditioned if $\\kappa$ is small ($\\lesssim 10^2$) and ill-conditioned if $\\kappa$ is large ($\\gtrsim 10^{6}$)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Consider a problem of computing $f(x)=\\sqrt{x}$:\n", + "$$\\kappa = \\frac{\\Vert J(x) \\Vert}{\\Vert f(x)\\Vert / \\Vert x \\Vert} = \\frac{1/(2\\sqrt{x})}{\\sqrt{x}/x}=\\frac12.$$\n", + "This problem is well-conditioned by any standard." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Consider computing $f(x)=\\tan x$ for $x=10^{100}$. \n", + "The problem is ill-conditioned. Why?\n", + "\n", + "[Surely You're Joking, Mr. Feynman](https://edisciplinas.usp.br/pluginfile.php/4420924/mod_resource/content/1/LuckyNumbers_Feynman.pdf)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Condition numbers in linear algebra computations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "- In matrix computations, the basic operations are computing $f(x) = A x$ and computing $g(x) = A^{-1}x$ (that is, solving a linear system)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- They have the condition numbers\n", + "$\\kappa_f(x) = \\Vert A \\Vert \\frac{\\Vert x \\Vert}{\\Vert A x \\Vert}$ and $\\kappa_g(x)=\\Vert A^{-1} \\Vert \\frac{\\Vert A x \\Vert}{\\Vert x \\Vert}$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- The worst-case bounds (independent on $x$):\n", + "$$\n", + "\\kappa_{f,g}(x) \\leq \\kappa(A),\n", + "$$\n", + "where the right-hand-side is known as a condition number of a matrix $A$: \n", + "$$\\kappa(A) = \\Vert A \\Vert \\Vert A^{-1} \\Vert.$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Note, that the condition number is different for different norms. Which are worst-case vectors $x$ for $f(x)$ and $g(x)$ and $L_2$ norm?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Condition number of a linear system\n", + "Now consider the perturbation of a system of linear equations:\n", + "from\n", + "$$ A x = f$$\n", + "to\n", + "$$ (A + \\Delta A) (x + \\Delta x) = f + \\Delta f.$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "Perturbation to the solution:\n", + "\n", + "$$\n", + "\\frac{\\Vert \\Delta x \\Vert}{\\Vert x \\Vert} \\leq \\frac{\\mathrm{cond}(A)}{1 - \\mathrm{cond}(A)\\frac{\\|\\Delta A\\|}{\\|A\\|}} \\Big(\\frac{\\Vert\\Delta A\\Vert}{\\Vert A \\Vert} + \\frac{\\Vert \\Delta f \\Vert}{ \\Vert f \\Vert}\\Big)\n", + "$$\n", + "\n", + "The crucial role is played by the condition number $\\kappa(A) = \\Vert A \\Vert \\Vert A^{-1} \\Vert$." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "The larger the condition number, the less number of digits we can recover." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Note, that if $\\Delta A = 0$, then\n", + "\n", + "$$ \\frac{\\Vert \\Delta x \\Vert}{\\Vert x \\Vert} \\leq \\mathrm{cond}(A) \\frac{\\|\\Delta f\\|}{\\|f\\|} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "The condition number in spectral norm is equal to the ratio of the largest singular value and the smallest singular value.\n", + "\n", + "$$ \\mathrm{cond}_2 (A) = \\|A\\|_2 \\|A^{-1}\\|_2 = \\frac{\\sigma_{\\max}}{\\sigma_{\\min}} $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Hilbert matrix (again)" + ] + }, + { + "cell_type": "code", + "execution_count": 87, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "2.495951750009794e+17" + ] + }, + "execution_count": 87, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "n = 15\n", + "A = hilbert_fl(n)\n", + "np.linalg.cond(A)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "The Hilbert matrix is very poorly conditioned, indeed. This implies that solution of the equation $Ax = b$ for x is very sensitive to the small changes in $A$ and $b$. Here it is time to recall how exactly are real numbers represented in a CPU." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Floating point\n", + "The numbers in computer memory are typically represented as floating point numbers \n", + "\n", + "A floating point number is represented as \n", + "\n", + "$$\\textrm{number} = \\textrm{significand} \\times \\textrm{base}^{\\textrm{exponent}},$$\n", + "\n", + "where *significand* is integer, *base* is positive integer and *exponent* is integer (can be negative), i.e.\n", + "\n", + "$$ 1.2 = 12 \\cdot 10^{-1}.$$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## IEEE 754\n", + "In modern computers, the floating point representation is controlled by [IEEE 754 standard](https://en.wikipedia.org/wiki/IEEE_floating_point) which was published in 1985. Before that point different computers behaved differently with floating point numbers. \n", + "\n", + "IEEE 754 has:\n", + "- Floating point representation (as described above), $(-1)^s \\times c \\times b^q$.\n", + "- Two infinities, $+\\infty$ and $-\\infty$\n", + "- Rules for assigning kinds of NaN\n", + "- Rules for rounding\n", + "- Rules for $\\frac{0}{0}, \\frac{1}{-0}, \\ldots$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## The two most common format, single & double\n", + "\n", + "The two most common formats, called binary32 and binary64 (called also single and double formats). Recently, the format binary16 plays important role in learning deep neural networks.\n", + "\n", + "| Name | Common Name | Base | Digits | Emin | Emax |\n", + "|------|----------|----------|-------|------|------|\n", + "|binary16| half precision | 2 | 11 | -14 | + 15 |\n", + "|binary32| single precision | 2 | 24 | -126 | + 127 | \n", + "|binary64| double precision | 2 | 53 | -1022 | +1023 | \n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "For all real $x$ (in an admissible range, such as $[1.1\\cdot 10^{-38}, 3.4\\cdot 10^{38}]$ for single precision) there exists floating point number $\\tilde x$ such that $|x-\\tilde x| \\leq |x|\\epsilon_{machine}$\n", + "- For single precision: $$\\epsilon_{machine} = 2^{-24}\\approx 5.96\\cdot 10^{-8}$$\n", + "- For double precision: $$\\epsilon_{machine} = 2^{-53}\\approx 1.11\\cdot 10^{-16}$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For single precision, we have $8388608$ numbers in $(1,2)$ which is quite dense. But we still have the same $8388608$ numbers in $(2^{126}, 2^{127})$ -- much larger interval! At each arithmetic operation, the result will typically not fit into the grid and will be replaced by some proxy from the grid. This can be disastrous for the final result if accumulates as a result of careless programming." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Accuracy and memory\n", + "\n", + "The relative accuracy of single precision is $10^{-7}-10^{-8}$, while for double precision is $10^{-14}-10^{-16}$.\n", + "\n", + "- A float16 takes 2 bytes, float32 takes 4 bytes, float64, or double precision, takes 8 bytes\n", + "\n", + "- These are the only two floating point-types supported in hardware (float32 and float64).\n", + "\n", + "- Normally, double precision is for Scientific Computing and float is for GPU/Data Science." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Accuracy demos" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.5 0.6 0.7 0.8]\n", + "0.7999999999999999\n" + ] + } + ], + "source": [ + "z = np.arange(0.5, 0.9, 0.1)\n", + "print(z)\n", + "print(z[-1])" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.3670121385730454e-07\n" + ] + } + ], + "source": [ + "a = np.float32(6.0)\n", + "b = np.sqrt(a)\n", + "print(b ** 2 - a)" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n" + ] + } + ], + "source": [ + "a = np.array(0.4147369269524216, dtype=np.float32)\n", + "b = np.exp(a)\n", + "print(np.log(b) - a)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Loss of significance\n", + "\n", + "- Many operations lead to the [loss of significance](https://en.wikipedia.org/wiki/Loss_of_significance)\n", + "- For example, it is a bad idea to subtract two big numbers that are close, the difference will have fewer correct digits\n", + "- This is related to algorithms and their properties (stability)" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.0\n", + "0.0\n", + "2.0\n" + ] + } + ], + "source": [ + "import math\n", + "test_list = [1, 1e20, 1, -1e20]\n", + "print(np.sum(test_list))\n", + "print(1 + 1e20 + 1 - 1e20)\n", + "print(math.fsum(test_list))" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.0\n" + ] + } + ], + "source": [ + "print(1e20 - 1e20 + 1 + 1)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Some disasters attibuted to bad numerical computing\n", + "- [Vancouver Stock Exchange Index computation error](https://www5.in.tum.de/~huckle/Vancouv.pdf): in January 1982 the index was initialized at 1000 and subsequently updated and truncated to three decimal places on each trade. Such a thing was done about 3000 times each day. The accumulated truncations led to an erroneous loss of around 25 points per month. On 25 Nov 1983, the error was corrected, raising the value of the index from its Friday closing figure of 524 to 1098.\n", + "- [The Patriot Missile failure](https://www-users.cse.umn.edu/~arnold/disasters/patriot.html), happened In Dharan, Saudi Arabia, on February 25, 1991, resulted in 28 deaths, is ultimately attributable to poor handling of rounding errors.\n", + "- [The explosion of the Ariane 5 rocket](https://www-users.cse.umn.edu/~arnold/disasters/ariane.html) just after lift-off on its maiden voyage off French Guiana, on June 4, 1996, was ultimately the consequence of a simple overflow.\n", + "- [The sinking of the Sleipner A offshore platform](https://www-users.cse.umn.edu/~arnold/disasters/sleipner.html) in Gandsfjorden near Stavanger, Norway, on August 23, 1991, resulted in a loss of nearly one billion dollars. It was found to be the result of inaccurate finite element analysis. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Stability of algorithms\n", + "\n", + "- Let $x$ be an object (for example, a vector) \n", + "- Let $f(x)$ be the function (functional) you want to evaluate \n", + "- You have a numerical algorithm working in finite precision arithmetics will deliver an approximation $alg(x)$ to the correct result $f(x)$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "The algorithm is called forward stable, if $$\\Vert alg(x) - f(x) \\Vert \\leq \\varepsilon $$ \n", + "\n", + "The algorithm is called backward stable, if for any $x$ there is a close vector $x + \\delta x$ such that\n", + "\n", + "$$alg(x) = f(x + \\delta x)$$\n", + "\n", + "and $\\Vert \\delta x \\Vert$ is small.\n", + "\n", + "The algorithm is called stable if it gives approximately correct answers for approximately correct problems: for each $x$ there exists $\\tilde x$ such that $\\Vert x-\\tilde x\\Vert = \\mathcal{O}(\\epsilon_{machine})$ such that\n", + "$$\n", + "\\Vert alg(x) - f(\\tilde x) \\Vert = \\mathcal{O}(\\epsilon_{machine}) \n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The best algorithms usually compute exact answers for slightly perturbed data. If the output is not too sentitive to input data (characterized by the condition number), then this is sufficient in practice." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Examples of instability - 1\n", + "\n", + "How to compute the following function in numerically stable manner?\n", + "\n", + "$$\\log(1 - \\tanh^2(u))$$" + ] + }, + { + "cell_type": "code", + "execution_count": 107, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Original function: -inf\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Zenon\\AppData\\Local\\Temp\\ipykernel_21092\\1730504921.py:2: RuntimeWarning: divide by zero encountered in log\n", + " print(\"Original function:\", np.log(1 - np.tanh(u)**2))\n" + ] + } + ], + "source": [ + "u = 30\n", + "print(\"Original function:\", np.log(1 - np.tanh(u)**2))" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Use more numerically stable form: -58.61370563888011\n" + ] + } + ], + "source": [ + "print(\"Use more numerically stable form:\", np.log(4) - 2 * np.log(np.exp(-u) + np.exp(u)))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Examples of instability - 2\n", + "How to compute the following function in numerically stable manner?\n", + "$$SoftMax(x)_j = \\dfrac{e^{x_j}}{\\sum\\limits_{i=1}^n e^{x_i}}$$" + ] + }, + { + "cell_type": "code", + "execution_count": 118, + "metadata": {}, + "outputs": [], + "source": [ + "n = 5\n", + "x = np.random.randn(n)\n", + "x[0] = 10" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9.99869717e-01 4.25877087e-05 1.71219662e-05 4.14169156e-05\n", + " 2.91559416e-05]\n" + ] + } + ], + "source": [ + "print(np.exp(x) / np.sum(np.exp(x)))" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([10. , -0.06381458, -0.97501805, -0.09169088, -0.44272154])" + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[9.99869717e-01 4.25877087e-05 1.71219662e-05 4.14169156e-05\n", + " 2.91559416e-05]\n" + ] + } + ], + "source": [ + "print(np.exp(x - np.max(x)) / np.sum(np.exp(x - np.max(x))))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Linear systems " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "## Scales of linear systems\n", + "\n", + "In different applications, the typical size of the linear systems can be different. \n", + "\n", + "- Small: $n \\leq 10^4$ (full matrix can be stored in memory, dense matrix)\n", + "- Medium: $n = 10^4 - 10^6$ (typically, sparse or structured matrix)\n", + "- Large: $n = 10^8 - 10^9$ (typically sparse matrix + parallel computations)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will talk only about approaches to small systems today." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Main questions about linear systems\n", + "\n", + "1. What is the accuracy we get from the solution (due to rounding errors)?\n", + "2. How we compute the solution? (using the Cramer's rule with dets is good only for $2 \\times 2$ matrices)\n", + "3. What is the complexity of the solution of linear systems?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Solving $Ax=b$ via QR factorization\n", + "- Factor $A$ into $QR$: $A = QR$\n", + "- $Ax=b$ is equivalent to $QRx=b$ that is $Rx = y$ where $y = Q^*b$\n", + "- Solve triangular system $Rx=y$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "- The algorithm is stable. It means that the solution $\\tilde x$ computed by this algorithm satisfies:\n", + "$$\n", + "\\frac{\\Vert\\tilde x - x\\Vert}{\\Vert x\\Vert} = \\mathcal{O}(\\kappa(A)\\epsilon_{machine})\n", + "$$\n", + "- Solving linear system with this method takes $2n^3$ flops [dominated by complexity of QR]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Solving $Ax=b$ via Gaussian elimination\n", + "- Gaussian elimination proceeds via the computation of one of the most important matrix decompositions: LU-decomposition.\n", + "\n", + "- LU-decomposition of the square matrix $A$ is the representation\n", + "\n", + "$$A = LU,$$\n", + "\n", + "where \n", + "- $L$ is lower triangular (elements strictly above the diagonal are zero)\n", + "- $U$ is upper triangular matrix (elements strictly below the diagonal are zero)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "fragment" + } + }, + "source": [ + "$$\n", + "\\begin{bmatrix}a_{11}&a_{12}&a_{13}\\\\a_{21}&a_{22}&a_{23}\\\\a_{31}&a_{32}&a_{33}\\end{bmatrix}=\\begin{bmatrix}\\ell _{11}&0&0\\\\\\ell _{21}&\\ell _{22}&0\\\\\\ell _{31}&\\ell _{32}&\\ell _{33}\\end{bmatrix}\\begin{bmatrix}u_{11}&u_{12}&u_{13}\\\\0&u_{22}&u_{23}\\\\0&0&u_{33}\\end{bmatrix}\n", + "$$\n", + "\n", + "This factorization is non-unique, so it is typical to require that the matrix $L$ has ones on the diagonal." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "LU decomposition is useful to solve a linear system since\n", + "\n", + "$$ A^{-1} f = (L U)^{-1} f = U^{-1} L^{-1} f, $$\n", + "\n", + "and this reduces to the solution of two linear systems forward step\n", + "\n", + "$$ L y = f, $$\n", + "\n", + "and backward step\n", + "\n", + "$$ U x = y. $$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Complexity of the Gaussian elimination/LU decomposition\n", + "\n", + "- The complexity is dominated by LU decomposition, which takes $\\frac23 n^3$: several times faster than QR \n", + "- In many cases, when solution with multiple right hand sides is required, computing LU-decomposition once is a good idea\n", + "- Once the decomposition is found then solving linear systems with $L$ and $U$ costs only $\\mathcal{O}(n^2)$ operations." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Computing LU decomposition\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## When LU fails\n", + "\n", + "- What happens, if pivots in the Gaussian elimination are really small or zero?. \n", + "\n", + "- There is classical $2 \\times 2$ example of a matrix with a bad LU decomposition. \n", + "\n", + "- The matrix we look at is \n", + "\n", + "$$\n", + " A = \\begin{pmatrix}\n", + " \\varepsilon & 1 \\\\\n", + " 1 & 1 \n", + " \\end{pmatrix}\n", + "$$\n", + "\n", + "- If $\\varepsilon$ is sufficiently small, we might fail." + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "L:\n", + " [[1.e+00 0.e+00]\n", + " [1.e+18 1.e+00]]\n", + "U:\n", + " [[ 1.e-18 1.e+00]\n", + " [ 0.e+00 -1.e+18]]\n", + "A:\n", + " [[1.e-18 1.e+00]\n", + " [1.e+00 1.e+00]]\n", + "L * U - A:\n", + " [[ 0.00000000e+00 0.00000000e+00]\n", + " [-1.11022302e-16 -1.00000000e+00]]\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "eps = 1e-18\n", + "A = np.array([[eps, 1],[1.0, 1]])\n", + "A0 = A.copy()\n", + "n = A.shape[0]\n", + "L = np.zeros((n, n))\n", + "U = np.zeros((n, n))\n", + "for k in range(n): \n", + " L[k, k] = 1\n", + " for i in range(k+1, n):\n", + " L[i, k] = A[i, k] / A[k, k]\n", + " for j in range(k+1, n):\n", + " A[i, j] = A[i, j] - L[i, k] * A[k, j]\n", + " for j in range(k, n):\n", + " U[k, j] = A[k, j]\n", + "print('L:\\n', L)\n", + "print('U:\\n', U)\n", + "print('A:\\n', A0)\n", + "print('L * U - A:\\n', np.dot(L, U) - A0)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## The concept of pivoting\n", + "\n", + "- We can do pivoting, i.e. permute rows and columns to maximize $A_{kk}$ that we divide over. \n", + "\n", + "- The simplest but effective strategy is the row pivoting: at each step, select the index that is maximal in modulus, and put it onto the diagonal. \n", + "\n", + "- It gives us the decomposition \n", + "\n", + "$$A = P L U,$$\n", + "\n", + "where $P$ is a permutation matrix.\n", + "\n", + "Pivoting ensures $| L_{ij}|<1,$ but the elements of $U$ can grow, up to $2^n$. Theoretically, gaussian elimination is unstable, though (in practice, this is almost never encountered)." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Linear equations: Summary\n", + "- Linear systems can be solved by Gaussian elimination, complexity is $\\mathcal{O}(n^3)$.\n", + "- Linear systems can be solved by LU-decomposition, complexity is $\\mathcal{O}(n^3)$ for the decomposition, $\\mathcal{O}(n^2)$ for each solve\n", + "- Linear least squares can be solved by normal equations (bad)\n", + "- Linear least squares can be solved by QR-decomposition (good)\n", + "- Without structure, we can solve up to $10^4$ linear systems on a laptop (memory restrictions)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We will discuss iterative methods for linear systems in what follows." + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3.10.8 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.8" + }, + "vscode": { + "interpreter": { + "hash": "b0fa6594d8f4cbf19f97940f81e996739fb7646882a419484c72d19e05852a7e" + } + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Task 4/tex/Assignment_4_eng.tex b/Task 4/tex/Assignment_4_eng.tex new file mode 100644 index 0000000..2859126 --- /dev/null +++ b/Task 4/tex/Assignment_4_eng.tex @@ -0,0 +1,161 @@ +\documentclass{article} +\usepackage[utf8]{inputenc} +\usepackage{biblatex} +\addbibresource{library.bib} +\usepackage{listings} +\usepackage{amssymb} +\usepackage{comment} +\usepackage{graphicx,amsmath} +\newcommand{\norm}[1]{\left\lVert#1\right\rVert} +\usepackage{hyperref} +\hypersetup{ + colorlinks=true, + linkcolor=blue, + filecolor=magenta, + urlcolor=cyan, + pdftitle={Overleaf Example}, + pdfpagemode=FullScreen, + } + +\title{Numerical Methods: Lecture 4. Conditioning. Floating point arithmetic and stability. Systems of linear equations.} +\author{Konstantin Tikhonov} + +\begin{document} + +\maketitle + +\section{Suggested Reading} + +\begin{itemize} +\item Lectures 12-19, 20-23 of \cite{trefethen1997numerical} +\item Lectures 6-7 of \cite{tyrtyshnikov2012brief} +\end{itemize} + +\section{Exercises} + +Deadline: 18 Nov + +\begin{enumerate} + +\item (3) Propose a numerically stable way to compute the function $f(x,a)=\sqrt{x+a}-\sqrt{x}$ for positive $x,\;a$. + +\item (2) Consider numerical evaluation $\mathcal{C}=\tan(10^{100})$ with the help of arbitrary-precision arithmetic module \lstinline{mpmath}, which can be called as follows: +\lstset{language=Python} +\lstset{frame=lines} +% \lstset{label={lst:code_direct}} +\lstset{basicstyle=\ttfamily} +\begin{lstlisting} +from mpmath import * +mp.dps = 64 # precision (in decimal places) +mp.pretty = True ++pi +\end{lstlisting} +What is the relative condition number of evaluating $\mathcal{C}$ w.r.t the input number $10^{100}$? How many digits do you need to keep at intermediate steps to evaluate $\mathcal{C}$ with 7-digit accuracy? +\begin{comment} +\item (3) Check, that the following function +\lstset{language=Python} +\lstset{frame=lines} +\lstset{label={lst:code_direct}} +\lstset{basicstyle=\ttfamily} +\begin{lstlisting} +import math +def round_to_n(x, n): + if x == 0: + return x + else: + return round(x, -int(math.floor(math.log10(abs(x)))) + (n - 1)) +\end{lstlisting} +rounds $x$ to $n$ significant digits. +A sample program to compute $\sum_{k=1}^{3000}k^{-2}\approx 1.6446$ via consequent summation with rounding of intermediate results to 4 digits looks as follows: +\lstset{language=Python} +\lstset{frame=lines} +\lstset{label={lst:code_direct}} +\lstset{basicstyle=\ttfamily} +\begin{lstlisting} +res = 0 +for k in range(1,3001): + res = round_to_n(res+1/k**2, 4) +\end{lstlisting} +Despite the absence of subtractions (and related precision loss), this code allows to get only two significant digits. Explain, why this happens and propose a more accurate way to compute this sum (maintaining the restriction of keeping only 4 digits of intermediate result). +\end{comment} +\item (4) Implement the function \lstinline{solve_quad(b, c)}, receiving coefficients $b$ and $c$ of a quadratic polynomial $x^2 + b x + c$, and returning a pair of equation roots. Your function should always return two roots, even for a degenerate case (for example, a call \lstinline{solve_quad(-2, 1)} should result into \lstinline{(1, 1)}). Additionally, your function is expected to return complex roots. + +After checking ensuring that your algorithm sort of works, try it on the following 5 tests. Make sure that all of them pass. +\lstset{language=Python} +\lstset{frame=lines} +\lstset{label={lst:code_direct}} +\lstset{basicstyle=\ttfamily} +\begin{lstlisting} +tests = [{'b': 4.0, 'c': 3.0}, + {'b': 2.0, 'c': 1.0}, + {'b': 0.5, 'c': 4.0}, + {'b': 1e10, 'c': 3.0}, + {'b': -1e10, 'c': 4.0}] +\end{lstlisting} + +\item (5) Consider the polynomial $$ +w(x)=\Pi_{r=1}^{20}(x-r)=\sum_{i=0}^{20} a_i x^i +$$ and investigate the condition number of roots of this polynomial w.r.t the coefficients $a_i$. Perform the following experiment, using \texttt{numpy} root-finding algorithm. Randomly perturb $w(x)$ by replacing the coefficients $a_i\to n_i a_i$, where $n_i$ is drawn from a normal distribution of mean $1$ and variance $\exp(-10)$. Show the results of $100$ such experiments in a single plot, along with the +roots of the unperturbed polynomial $w(x)$. Using one of the experiments, estimate the relative and absolute condition number of the problem of finding the roots of $w(x)$ w.r.t. polynomial coefficients. + +\item (10) +Consider the least squares problem $Ax\approx b$ at +$$ +A = \begin{bmatrix} +1 & 1\\ +1 & 1.00001\\ +1 & 1.00001 +\end{bmatrix},\quad b = \begin{bmatrix} +2 \\ +0.00001 \\ +4.00001 +\end{bmatrix}. +$$ + +\begin{itemize} + \item +Formally, solution is given by +\begin{equation} +\label{ex} +x = ( A^T A )^{-1} A^T b. +\end{equation} + Using this equation, compute the solution analytically. +\item Implement Eq. (\ref{ex}) in \lstinline{numpy} in single and double precision; compare the results to the analytical one. +\item Instead of Eq. (\ref{ex}), implement SVD-based solution to least squares. Which approach is numerically more stable? +\item Use \lstinline{np.linalg.lstsq} to solve the same equation. Which method does this function use? +\item +What are the four condition numbers of this problem, mentioned in Theorem 18.1 of Ref. \cite{trefethen1997numerical}? Give examples of perturbations $\delta b$ and $\delta A$ that approximately attain those condition numbers? +\end{itemize} +\item (7) +Let $$A = \begin{bmatrix} + \epsilon & 1 & 0\\ +1 & 1 & 1\\ +0 & 1 & 1 +\end{bmatrix}$$ +\begin{itemize} + \item Find analytically LU decomposition with and without pivoting for the matrix $A$. + \item Explain, why can the LU decomposition fail to approximate factors $L$ and $U$ for $|\epsilon|\ll 1$ in finite-precision arithmetic? +\end{itemize} + +\item (6) Consider computing the function $f(n, \alpha)$ defined by $f(0,\alpha)=\ln(1+1/\alpha)$ and recurrent relation +\begin{equation} + f(n,\alpha)=\frac{1}{n}-\alpha f(n-1,\alpha). +\end{equation} +Compute $f(20, 0.1)$ and $f(20, 10)$ in standard (double) precision. Now, do the same exercise in arbitrary +precision arithmetic: +\lstset{language=Python} +\lstset{frame=lines} +\lstset{label={lst:code_direct}} +\lstset{basicstyle=\ttfamily} +\begin{lstlisting} +from mpmath import mp, mpf +mp.dps = 64 # precision (in decimal places) +f = mp.zeros(1, n) +f[0] = mp.log(1+1/mpf(alpha)) +for i in range(1, n): + f[i] = 1/mpf(i) - mpf(alpha)*f[i-1] +\end{lstlisting} +\end{enumerate} +Plot the relative difference between exact and approximate results, in units of machine epsilon \texttt{np.finfo(float).eps} for $\alpha=0.1$ and $\alpha=10$ as function of $n$. How would you evaluate $f(30, 10)$ without relying on the arbitrary precision arithmetic? +\printbibliography +\end{document} diff --git a/Task 4/tex/Assignment_4_ru.tex b/Task 4/tex/Assignment_4_ru.tex new file mode 100644 index 0000000..4d1cdd3 --- /dev/null +++ b/Task 4/tex/Assignment_4_ru.tex @@ -0,0 +1,162 @@ +\documentclass[prb, notitlepage, aps, 11pt]{revtex4-2}% +\usepackage[utf8]{inputenc} +\usepackage[T2A]{fontenc} +\usepackage[english, russian]{babel} +\usepackage{amsmath} +\usepackage{enumitem} +\usepackage{amsmath} +\usepackage{delimset} +\usepackage[pdftitle = a]{hyperref} +\usepackage{datetime} +\usepackage{minted} +\usemintedstyle{friendly} +\usepackage[a]{esvect} +\hypersetup{ + colorlinks=true, + linkcolor=blue, + filecolor=magenta, + urlcolor=cyan, + pdfpagemode=FullScreen, +} +\usepackage{microtype} + +\newcommand{\framesep}{0.6em} +\BeforeBeginEnvironment{minted}{\vspace{-1.6em}} +\AfterEndEnvironment{minted}{\vspace{-0.5em}} + +\begin{document} + +\begin{center} + версия от \today \quad \currenttime +\end{center} + +\title{\texorpdfstring{ + Численные методы, осень 2022\\ + Задание 4 [Число обусловленности. Числа с плавающей точкой и вычислительная устойчивость] \\ + Всего баллов: 37 \ Срок сдачи: 18 ноября + }{} +} + +\maketitle + +\section*{Рекомендованная литература} + +\begin{itemize} +\item Лекции 12--19, 20--23 из \cite{trefethen1997numerical} +\item Лекции 6--7 из \cite{tyrtyshnikov2012brief} +\end{itemize} + +\section*{Упражнения} + +\begin{enumerate} + +\item (3) Предложите вычислительно устойчивый способ вычислить функцию +$f(x,a)=\sqrt{x+a}-\sqrt{x}$ +при положительных $x$ и $a$. + +\item (2) Вычислите $\mathcal{C}=\tan(10^{100})$ с помощью модуля \mintinline{python}{mpmath}, предназначенного для арифметики произвольной точности. Пример использования: +% +\begin{minted}[frame = lines, framesep = \framesep]{python} + from mpmath import * + mp.dps = 64 # точность (число десятичных цифр) + mp.pretty = True + +pi # pi — переменная из mpmath +\end{minted} +% +Чему равно относительное число обусловленности при вычислении $\mathcal{C} = \mathcal{C}(10^{100})$? Сколько цифр нужно хранить в памяти при промежуточных вычислениях, чтобы получить $\mathcal{C}$ с~точностью в 7 значащих цифр? + +\item (4) Реализуйте функцию \mintinline{python}{solve_quad(b, c)}, возвращающую корни приведённого квадратного уравнения $x^2 + b x + c = 0$. Корни могут повторяться или быть комплексными. + +Когда вам покажется, что функция работает, запустите её на следующих пяти тестах. Добейтесь того, чтобы она правильно работала на каждом из них. +% +\begin{minted}[frame = lines, framesep = \framesep]{python} + tests = [{'b': 4.0, 'c': 3.0}, + {'b': 2.0, 'c': 1.0}, + {'b': 0.5, 'c': 4.0}, + {'b': 1e10, 'c': 3.0}, + {'b': -1e10, 'c': 4.0}] +\end{minted} + +\item (5) Рассмотрите многочлен +$$ +w(x) = \prod_{r=1}^{20} (x-r) = \sum_{i=0}^{20} a_i x^i +$$ +и исследуйте число обусловленности его корней, выступающих в роли функций от коэффициентов $a_i$. Проведите эксперимент: случайным образом измените коэффициенты и найдите новые корни с помощью алгоритма из \texttt{numpy}. +Коэффициенты изменяйте по правилу $a_i \to n_i a_i$, где $n_i$ подчиняются нормальному распределению с математическим ожиданием, равным 1, и дисперсией, равной $\exp(-10)$. Проведите 100 таких экспериментов и изобразите результаты на одном графике вместе с корнями исходного многочлена. + +Оцените по одному из экспериментов абсолютное и относительное число обусловленности корней многочлена как функций его коэффициентов. + +\item (10) +Рассмотрим задачу наименьших квадратов --- $Ax\approx b$: +$$ +A = \begin{bmatrix} +1 & 1\\ +1 & 1.00001\\ +1 & 1.00001 +\end{bmatrix},\quad b = \begin{bmatrix} +2 \\ +0.00001 \\ +4.00001 +\end{bmatrix} +$$ + +\begin{itemize} + \item Формально решение можно найти как + % + \begin{equation} + \label{ex} + x = ( A^T A )^{-1} A^T b. + \end{equation} + % + Вычислите его по этой формуле аналитически. + + \item Вычислите (\ref{ex}) с помощью + \mintinline{python}{numpy}, используя числа одинарной и двойной точности; сравните результат c аналитическим. + + \item Помимо формулы (\ref{ex}), реализуйте решение, основанное на сингулярном разложении. Какой способ вычислительно более стабильный? + + \item Решите эту же задачу с помощью \mintinline{python}{np.linalg.lstsq}. Какой алгоритм использует эта функция? + + \item Какие четыре числа обусловленности, относящиеся к этой задаче, упоминаются в теореме 18.1 из~\cite{trefethen1997numerical}? (Возможно, их требуется вычислить --- прим. пер.). + Приведите примеры таких $\delta b$ и $\delta A$, при которых приблизительно достигаются оценки на $\norm{\delta x}$, даваемые числами обусловленности. +\end{itemize} + +\item (7) +Пусть +$$ +A = \begin{bmatrix} + \epsilon & 1 & 0\\ +1 & 1 & 1\\ +0 & 1 & 1 +\end{bmatrix} +$$ +\begin{itemize} + \item Аналитически найдите LU-разложение матрицы $A$ с применением выбора главного элемента и без него. + \item Объясните, почему при $|\epsilon|\ll 1$ мы можем неправильно оценить множители $L$ и $U$ в арифметике конечной точности. +\end{itemize} + +\item (6) Пусть функция $f(n, \alpha)$ определена следующим образом: +% +\begin{align*} + f(n,\alpha) &= \frac{1}{n} - \alpha f(n-1,\alpha) \\ + f(0,\alpha) &= \ln(1+1/\alpha) +\end{align*} +% +Вычислите $f(20, 0.1)$ и $f(20, 10)$ с помощью арифметики обычной (двойной) точности. Теперь сделайте то же самое в арифметике произвольной точности: +% +\begin{minted}[frame = lines, framesep = \framesep]{python} + from mpmath import mp, mpf + mp.dps = 64 # precision (in decimal places) + f = mp.zeros(1, n) + f[0] = mp.log(1 + 1/mpf(alpha)) + for i in range(1, n): + f[i] = 1/mpf(i) - mpf(alpha) * f[i-1] +\end{minted} +% +Постройте в единицах машинного эпсилон график относительной разности между точными и приближёнными результатами как функции от $n$. Сделайте это при $\alpha=0.1$ и при $\alpha=10$. Машинный эпсилон можно получить как \mintinline{python}{np.finfo(float).eps}. \\ +Как бы вы стали вычислять $f(30, 10)$ без арифметики произвольной точности? + +\end{enumerate} + +\bibliography{library.bib} +\end{document} diff --git a/Task 4/tex/library.bib b/Task 4/tex/library.bib new file mode 100644 index 0000000..38f6d94 --- /dev/null +++ b/Task 4/tex/library.bib @@ -0,0 +1,118 @@ +@book{trefethen1997numerical, + title={Numerical linear algebra}, + author={Trefethen, Lloyd N and Bau III, David}, + volume={50}, + year={1997}, + publisher={Siam} +} +@book{robert2013monte, + title={Monte Carlo statistical methods}, + author={Robert, Christian and Casella, George}, + year={2013}, + publisher={Springer Science \& Business Media} +} +@book{murphy2012machine, + title={Machine learning: a probabilistic perspective}, + author={Murphy, Kevin P}, + year={2012}, + publisher={MIT press} +} +@book{boyd2004convex, + title={Convex optimization}, + author={Boyd, Stephen and Boyd, Stephen P and Vandenberghe, Lieven}, + year={2004}, + publisher={Cambridge university press} +} +@book{trefethen2019approximation, + title={Approximation Theory and Approximation Practice, Extended Edition}, + author={Trefethen, Lloyd N}, + year={2019}, + publisher={SIAM} +} +@book{devroye:1986, + author = {Devroye, Luc}, + date = {1986)}, + description = {Non-Uniform Random Variate Generation}, + keywords = {algorithms generation random simulation}, + location = {New York}, + publisher = {Springer-Verlag}, + title = {Non-Uniform Random Variate Generation(originally published with}, + year = 1986 +} +@book{williams2006gaussian, + title={Gaussian processes for machine learning}, + author={Williams, Christopher K and Rasmussen, Carl Edward}, + volume={2}, + number={3}, + year={2006}, + publisher={MIT press Cambridge, MA} +} +@book{hairer1993solving, + title={Solving ordinary differential equations. 1, Nonstiff problems}, + author={Hairer, Ernst and N{\o}rsett, Syvert P and Wanner, Gerhard}, + year={1993}, + publisher={Springer-Vlg} +} +@book{hairer1993solving2, + title={Solving ordinary differential equations. 2, Stiff and differential-algebraic problems}, + author={Hairer, Ernst and N{\o}rsett, Syvert P and Wanner, Gerhard}, + year={1993}, + publisher={Springer-Vlg} +} +@book{tyrtyshnikov2012brief, + title={A brief introduction to numerical analysis}, + author={Tyrtyshnikov, Eugene E}, + year={2012}, + publisher={Springer Science \& Business Media} +} +@book{amosov2003, + title={Numerical Methods for Engineers}, + author={Amosov, AA and Dubinskiy YuA and Kopchenova, NV}, + year={2003}, + publisher={Izdatelstvo MEI} +} +@article{arbenz2012lecture, + title={Lecture notes on solving large scale eigenvalue problems}, + author={Arbenz, Peter and Kressner, Daniel and Z{\"u}rich, DME}, + journal={D-MATH, EHT Zurich}, + volume={2}, + year={2012} +} +@article{trefethen1996finite, + title={Finite difference and spectral methods for ordinary and partial differential equations}, + author={Trefethen, Lloyd Nicholas}, + year={1996}, + publisher={Cornell University-Department of Computer Science and Center for Applied~…} +} +@book{boyd2018introduction, + title={Introduction to applied linear algebra: vectors, matrices, and least squares}, + author={Boyd, Stephen and Vandenberghe, Lieven}, + year={2018}, + publisher={Cambridge university press} +} +@article{halko2011finding, + title={Finding structure with randomness: Probabilistic algorithms for constructing approximate matrix decompositions}, + author={Halko, Nathan and Martinsson, Per-Gunnar and Tropp, Joel A}, + journal={SIAM review}, + volume={53}, + number={2}, + pages={217--288}, + year={2011}, + publisher={SIAM} +} +@book{demmel1997applied, + title={Applied numerical linear algebra}, + author={Demmel, James W}, + year={1997}, + publisher={SIAM} +} +@article{dahlquist198533, + title={33 years of numerical instability, Part I}, + author={Dahlquist, Germund}, + journal={BIT Numerical Mathematics}, + volume={25}, + number={1}, + pages={188--204}, + year={1985}, + publisher={Springer} +}