{ "cells": [ { "cell_type": "code", "execution_count": 77, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "lecture = 13\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#Lecture 13: Numerical Methods for Partial Differential Equations\n", "\n", "## Topics\n", "\n", "* I. More on the stability of FDM for Black-Scholes\n", "* II. Multi spatial variables: ADI method\n", "* III. Numerical examples" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# I. More on the stability of FDM for Black-Scholes:\n", "\n", "* When $r \\neq 0$:\n", "\n", "\\begin{aligned}\n", "e^{a\\triangle t} & = \\left\\{ \\frac{1}{2}\\sigma^2 x_j^2 \\frac{\\triangle t}{\\triangle x^2} - r x_j \\frac{\\triangle t}{2\\triangle x} \\right\\} e^{-il_m\\triangle x}\n", "\\\\\n", "& + \\left\\{ 1 - \\sigma^2 x_j^2 \\frac{\\triangle t}{\\triangle x^2} -r \\triangle t \\right\\}\n", "\\\\\n", "& + \\left\\{ \\frac{1}{2}\\sigma^2 x_j^2 \\frac{\\triangle t}{\\triangle x^2} + r x_j \\frac{\\triangle t}{2\\triangle x} \\right\\} e^{il_m\\triangle x}\n", "\\end{aligned}\n", "\n", "* which is\n", "\n", "$$\n", "e^{a\\triangle t} = 1 - r\\triangle t + \\sigma^2 x_j^2 \\frac{\\triangle t}{\\triangle x^2} \\cdot 2\\sin^2(l_m\\triangle x/2) + i\\; r x_j \\frac{\\triangle t}{\\triangle x} \\sin(l_m\\triangle x)\n", "$$\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "* To satisfy $ |e^{a\\triangle t}| < 1 $, we require\n", "\n", "\\begin{aligned}\n", "\\renewcommand{PDut}{\\frac{\\partial u}{\\partial t}}\n", "\\renewcommand{PDux}{\\frac{\\partial u}{\\partial x}}\n", "\\renewcommand{PDutt}{\\frac{\\partial ^2u}{\\partial t^2}}\n", "\\renewcommand{PDuxx}{\\frac{\\partial ^2u}{\\partial x^2}}\n", "\\renewcommand{FDut}{\\frac{u_{i,k+1}-u_{i,k}}{\\triangle t}}\n", "\\renewcommand{FDutb}{\\frac{u_{i,k}-u_{i,k-1}}{\\triangle t}}\n", "\\renewcommand{FDutc}{\\frac{u_{i,k+1}-u_{i,k-1}}{2\\triangle t}}\n", "\\renewcommand{FDutt}{\\frac{u_{i,k+1}-2u_{i,k}+u_{i,k-1}}{\\triangle t^2}}\n", "\\renewcommand{FDux}{\\frac{u_{i+1,k}-u_{i,k}}{\\triangle x}}\n", "\\renewcommand{FDuxb}{\\frac{u_{i,k}-u_{i-1,k}}{\\triangle x}}\n", "\\renewcommand{FDuxc}{\\frac{u_{i+1,k}-u_{i-1,k}}{2\\triangle x}}\n", "\\renewcommand{FDuxx}{\\frac{u_{i+1,k}-2u_{i,k}+u_{i-1,k}}{\\triangle x^2}}\n", "& r >0,\n", "\\\\\n", "& \\triangle t < \\frac{\\triangle x^2}{ \\sigma^2 x_{max}^2 },\n", "\\\\\n", "& \\triangle t < \\frac{ \\sigma^2 }{r^2 }.\n", "\\end{aligned}\n", "\n", "\n", "* The first condition is trivial (until the FED decrees all rates to be negative!)\n", "\n", "* The last condition does not have much impact in practice unless the volatility is very small.\n", "\n", "* So the important one is the second condition, which is what we went through last lecture.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# II. The Case of more than one spatial variables\n", "\n", "\n", "* Most numerical methods, FDM included, suffer the \"dimentionality\" curse, i.e. the size, complexity of the problem grow exponentially with the dimension.\n", "\n", "\n", "* Usually, Monte Carlo method is the only practical option in dimension $\\geq 3$.\n", "\n", "\n", "* But for two dimensional problems, it is worthwhile to explore the FDM further.\n", "\n", "\n", "* Finance examples that you will need many spatial variables: stochastic vol model, convertible bonds, credit risky bonds, variable annuities, etc.\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Heston Stochastic Volatility Model\n", "\n", "* ** Heston Stochastic Vol Model **\n", "\n", "\n", "\\begin{aligned}\n", "& dS_t = rS_t dt + \\sqrt{\\nu_t}S_t dW_t^1\n", "\\\\\n", "& d\\nu_t = \\kappa(\\theta - \\nu_t) + \\xi\\sqrt{\\nu_t} dW_t^2\n", "\\\\\n", "& \\hspace{0.2in} \\left< dW_t^1, dW_t^2 \\right> = \\rho dt\n", "\\end{aligned}\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### PDE for Heston Stochastic Vol Model:\n", "\n", "\n", "\\begin{aligned}\n", "\\renewcommand{PDuS}{\\frac{\\partial u}{\\partial S}}\n", "\\renewcommand{PDuSS}{\\frac{\\partial ^2u}{\\partial S^2}}\n", "\\PDut &+ rS\\PDuS+ (\\kappa(\\theta - \\nu)-\\lambda \\nu )\\frac{\\partial u}{\\partial \\nu} \n", "\\\\\n", "& + \\frac{1}{2}\\nu S^2\\PDuSS + \\rho\\xi\\nu S\\frac{\\partial^2 u}{\\partial S\\partial \\nu} + \\frac{1}{2}\\xi^2\\nu\\frac{\\partial^2 u}{\\partial \\nu^2} - ru = 0\n", "\\end{aligned}\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Alternating Direction Implicit Method\n", "\n", "* Write the Crank-Nicolson method as\n", "\n", "\\begin{aligned}\n", "\\small\n", "\\renewcommand{fD}{\\mathfrak{D}}\n", "\\FDut = & \\frac{1}{4} \\sigma^2 x_i^2 \\left\\{ \\FDuxx + \\frac{u_{i+1,k+1}-2u_{i,k+1}+u_{i-1,k+1}}{\\triangle x^2} \\right\\}\n", "\\\\ \n", " & + \\frac{1}{2} r x_i \\left\\{ \\FDuxc + \\frac{u_{i+1,k+1}-u_{i-1,k+1}}{2\\triangle x} \\right\\} \n", "\\\\\n", " & - \\frac{1}{2} r \\left\\{ u_{i,k} + u_{i,k+1} \\right\\} \n", "\\\\\n", " = & - \\frac{1}{2} \\mathfrak{D}\\cdot ( u_{i,k} + u_{i,k+1} )\n", "\\end{aligned}\n", "\n", "\n", "where $ \\mathfrak{D}\\cdot u_{i,k} $ can be considered as the Crank-Nicolson finite difference operator on $u_{i,k}$.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Crank-Nicolson in operator format\n", "\n", "\n", "* The Crank-Nicolson scheme can be denoted as\n", "\n", "$$\n", "(1 + \\frac{1}{2}\\triangle t\\fD)\\cdot u_{i,k+1} = (1 - \\frac{1}{2}\\triangle t\\fD)\\cdot u_{i,k}\n", "$$\n", "\n", "* This is also applicable when the spatial variable $x_i$ is a vector.\n", "\n", "* For the one spatial variable case, the operator $\\fD$ involves three points in one time slice.\n", "\n", "* For two dimension case (the Heston model above), the operator will involve five points in one time slice.\n", "\n", "* So instead of solving a tridiagonal system, now the linear system has five nonzero diagonals, which is much more costly to solve.\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Operator split \n", "\n", "\n", "* For the general $n$ spatial variables case, the way to ease the linear system solving (still can't get rid of the problem of the number of discretization points exploded!) is **splitting** the operator $\\fD$:\n", "\n", "\\begin{aligned}\n", "(1 + \\frac{1}{2}\\triangle t\\fD^1)\\cdot \\tilde{u}^1_{i,k+1} &= (1-\\frac{1}{2}\\triangle t\\fD^1)\\cdot u_{i,k}\n", "\\\\\n", "(1 + \\frac{1}{2}\\triangle t\\fD^2)\\cdot \\tilde{u}^2_{i,k+1} &= (1-\\frac{1}{2}\\triangle t\\fD^2)\\cdot \\tilde{u}^1_{i,k}\n", "\\\\\n", "\\vdots\n", "\\\\\n", "(1 + \\frac{1}{2}\\triangle t\\fD^n)\\cdot \\tilde{u}^n_{i,k+1} &= (1-\\frac{1}{2}\\triangle t\\fD^n)\\cdot \\tilde{u}^{n-1}_{i,k}\n", "\\end{aligned}\n", "\n", "and set\n", "\n", "$$\n", "u_{i+1,k} = \\tilde{u}^n_{i,k}\n", "$$\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "\n", "\n", "* Essentially, this says trying to solve the problem in a multistep approach: each step is equivalent to the one dimensional Crank-Nicolson method.\n", "\n", "\n", "* This is merely the basic form, the strategy can be customized to further improve the efficiency (not all steps are implicit) or accuracy (high order)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# III. Numerical Examples \n", "\n", "* Black Scholes formulae and FDM methods for vanilla European call and up-and-out Barrier Call.\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Vanilla European Option:\n", "* Strike = 100\n", "* Risk Free Rate = 5%\n", "* Constant Volatility = 35%\n", "* Option Maturity = 1 year\n", "* Option Type = Call" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from scipy.stats import norm\n", "import time \n", "\n", "#Black and Scholes\n", "def BlackScholesFormula(type, S0, K, r, sigma, T):\n", " dtmp1 = np.log(S0 / K)\n", " dtmp2 = 1.0/(sigma * np.sqrt(T))\n", " sigsq = 0.5 * sigma * sigma\n", " d1 = dtmp2 * (dtmp1 + T * (r + sigsq))\n", " d2 = dtmp2 * (dtmp1 + T * (r - sigsq))\n", " if type==\"C\":\n", " return S0 * norm.cdf(d1) - K * np.exp(-r * T) * norm.cdf(d2)\n", " else:\n", " return K * np.exp(-r * T) * stats.cdf(-d2) - S0 * norm.cdf(-d1)\n", "\n", "K = 100.0\n", "r = 0.05\n", "sigma = 0.35\n", "T = 1\n", "putCall ='C'\n", "\n", "Smin = 0.0\n", "Smax = 200.0\n", "ns = 201\n", "Ss = np.linspace(Smin, Smax, ns, endpoint=True)\n", "Ss = Ss[1:-1]\n", "#print Ss\n", "\n", "t=time.time()\n", "px = BlackScholesFormula(putCall, Ss, K, r, sigma, T)\n", "elapsed=time.time()-t\n", "#print(px)\n", "#print(\"Elapsed Time:\", elapsed)\n", "#idx = 200-1\n", "#print Ss[idx]\n", "#print px[idx]\n", "\n", "payoff = clip(Ss-K, 0.0, 1e600)\n", "#print \"payoff = \", payoff\n", "\n", "figure(figsize=[10, 4])\n", "subplot(1, 2, 1)\n", "plot(Ss, payoff)\n", "xlabel('Stock', fontsize=14);\n", "title('Payoff' , fontsize=16);\n", "\n", "subplot(1, 2, 2)\n", "plot(Ss, px)\n", "xlabel('Stock', fontsize=14);\n", "title('Analytical Solution' , fontsize=16);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Discretization parameters and results for the forward scheme" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Smin = 0.0\n", "Smax = 200.0\n", "ns = 201\n", "dx = 1.0\n", "sigma = 0.35\n", "by CFL, dt < 0.0002\n", "which requires in time domain the number of steps ~= 4900\n" ] } ], "source": [ "from scipy import sparse\n", "import scipy.sparse.linalg.dsolve as linsolve\n", "\n", "class BS_FDM_explicit:\n", " def __init__(self, \n", " r, \n", " sigma, \n", " maturity, \n", " Smin, \n", " Smax, \n", " Fl, \n", " Fu, \n", " payoff, \n", " nt, \n", " ns):\n", " self.r = r \n", " self.sigma = sigma \n", " self.maturity = maturity\n", "\n", " self.Smin = Smin \n", " self.Smax = Smax\n", " self.Fl = Fl \n", " self.Fu = Fu\n", "\n", " self.nt = nt\n", " self.ns = ns\n", " \n", " self.dt = float(maturity)/nt\n", " self.dx = float(Smax-Smin)/(ns+1)\n", " self.xs = Smin/self.dx\n", "\n", " self.u = empty((nt + 1, ns))\n", " self.u[0,:] = payoff\n", "\n", " ## Building Coefficient matrix: \n", " A = sparse.lil_matrix((self.ns, self.ns))\n", "\n", " for j in range(0, self.ns):\n", " xd = j + 1 + self.xs\n", " sx = self.sigma * xd\n", " sxsq = sx * sx\n", " \n", " dtmp1 = self.dt * sxsq\n", " dtmp2 = self.dt * self.r\n", " A[j,j] = 1.0 - dtmp1 - dtmp2\n", " dtmp1 = 0.5 * dtmp1\n", " dtmp2 = 0.5 * dtmp2 * xd\n", " if j > 0:\n", " A[j,j-1] = dtmp1 - dtmp2\n", " if j < self.ns - 1:\n", " A[j,j+1] = dtmp1 + dtmp2\n", "\n", " self.A = A.tocsr()\n", "\n", " ### Building bc_coef:\n", " nxl = 1 + self.xs\n", " sxl = self.sigma * nxl\n", " nxu = self.ns + self.xs\n", " sxu = self.sigma * nxu\n", " \n", " self.blcoef = 0.5 * self.dt * (sxl * sxl - self.r * nxl)\n", " self.bucoef = 0.5 * self.dt * (sxu * sxu + self.r * nxu)\n", " \n", " def solve(self):\n", " for i in range(0, m):\n", " self.u[i+1,:] = self.A * self.u[i,:]\n", " self.u[i+1,0] += self.blcoef * self.Fl[i]\n", " self.u[i+1,self.ns-1] += self.bucoef * self.Fu[i]\n", "\n", " return self.u\n", "\n", "dx = (Smax - Smin)/(ns-1)\n", "print(\"Smin = \", Smin)\n", "print(\"Smax = \", Smax)\n", "print(\"ns =\", ns)\n", "print(\"dx =\", dx)\n", "print(\"sigma =\", sigma)\n", "dt_max = dx*dx/(sigma*sigma*Smax*Smax)\n", "print(\"by CFL, dt <\", \"%.4f\"%dt_max)\n", "mt_min = int(T/dt_max)+1\n", "print(\"which requires in time domain the number of steps ~= \", mt_min)\n", "\n" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time1: 0.11624479293823242\n", "Elapsed Time2: 0.10227036476135254\n", "Elapsed Time3: 0.08592414855957031\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "n = ns-2\n", "X = linspace(0.0, Smax, n+2)\n", "X = X[1:-1]\n", "\n", "payoff = clip(X-K, 0.0, 1e600)\n", "#print \"payoff = \", payoff\n", " \n", "m = 4555 \n", "Fl = zeros((m+1,))\n", "Fu = Smax - K*exp(-r * linspace(0.0, T, m+1))\n", " \n", "t = time.time()\n", "bs1 = BS_FDM_explicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs1.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time1:\", elapsed)\n", "\n", "##print px_fd_mat.shape\n", "nrow = len(px_fd_mat[:,1])\n", "#print(px_fd_mat[nrow-1,:])\n", "\n", "figure(figsize=[15, 4]);\n", "subplot(1, 3, 1)\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 4560\n", "Fl = zeros((m+1,))\n", "Fu = Smax - K*exp(-r * linspace(0.0, T, m+1))\n", "\n", "t = time.time()\n", "bs2 = BS_FDM_explicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs2.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time2:\", elapsed)\n", "\n", "subplot(1, 3, 2)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 4565\n", "Fl = zeros((m+1,))\n", "Fu = Smax - K*exp(-r * linspace(0.0, T, m+1))\n", " \n", "t = time.time()\n", "bs3 = BS_FDM_explicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs3.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time3:\", elapsed)\n", "\n", "subplot(1, 3, 3)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f' % m, fontsize=16);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Similar results for the up-and-out Barrier Option: with barrier set at S = 120" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time1: 0.08881139755249023\n", "Elapsed Time2: 0.08301854133605957\n", "Elapsed Time3: 0.09055495262145996\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Smax = 120\n", "n = ns-2\n", "X = linspace(0.0, Smax, n+2)\n", "X = X[1:-1]\n", "\n", "payoff = clip(X-K, 0.0, 1e600)\n", "#print \"payoff = \", payoff\n", " \n", "m = 4570\n", "Fl = zeros((m+1,))\n", "Fu = zeros((m+1,))\n", " \n", "t = time.time()\n", "bs1 = BS_FDM_explicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs1.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time1:\", elapsed)\n", "\n", "##print px_fd_mat.shape\n", "nrow = len(px_fd_mat[:,1])\n", "#print(px_fd_mat[nrow-1,:])\n", "\n", "figure(figsize=[15, 4]);\n", "subplot(1, 3, 1)\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 4573\n", "Fl = zeros((m+1,))\n", "Fu = zeros((m+1,))\n", "\n", "t = time.time()\n", "bs2 = BS_FDM_explicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs2.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time2:\", elapsed)\n", "\n", "subplot(1, 3, 2)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 4580\n", "Fl = zeros((m+1,))\n", "Fu = zeros((m+1,))\n", " \n", "t = time.time()\n", "bs3 = BS_FDM_explicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs3.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time3:\", elapsed)\n", "\n", "subplot(1, 3, 3)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f' % m, fontsize=16);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "## Now look at the behavior of the implicit scheme" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from scipy import sparse\n", "import scipy.sparse.linalg.dsolve as linsolve\n", "\n", "class BS_FDM_implicit:\n", " def __init__(self, \n", " r, \n", " sigma, \n", " maturity, \n", " Smin, \n", " Smax, \n", " Fl, \n", " Fu, \n", " payoff, \n", " nt, \n", " ns):\n", " self.r = r \n", " self.sigma = sigma \n", " self.maturity = maturity\n", "\n", " self.Smin = Smin \n", " self.Smax = Smax\n", " self.Fl = Fl \n", " self.Fu = Fu\n", "\n", " self.nt = nt\n", " self.ns = ns\n", " \n", " self.dt = float(maturity)/nt\n", " self.dx = float(Smax-Smin)/(ns+1)\n", " self.xs = Smin/self.dx\n", "\n", " self.u = empty((nt + 1, ns))\n", " self.u[0,:] = payoff\n", "\n", " ## Building Coefficient matrix: \n", " A = sparse.lil_matrix((self.ns, self.ns))\n", "\n", " for j in range(0, self.ns):\n", " xd = j + 1 + self.xs\n", " sx = self.sigma * xd\n", " sxsq = sx * sx\n", " \n", " dtmp1 = self.dt * sxsq\n", " dtmp2 = self.dt * self.r\n", " A[j,j] = 1.0 + dtmp1 + dtmp2\n", " \n", " dtmp1 = -0.5 * dtmp1\n", " dtmp2 = -0.5 * dtmp2 * xd\n", " if j > 0:\n", " A[j,j-1] = dtmp1 - dtmp2\n", " if j < self.ns - 1:\n", " A[j,j+1] = dtmp1 + dtmp2\n", "\n", " self.A = linsolve.splu(A)\n", " self.rhs = empty((self.ns, ))\n", " \n", " ### Building bc_coef:\n", " nxl = 1 + self.xs\n", " sxl = self.sigma * nxl\n", " nxu = self.ns + self.xs\n", " sxu = self.sigma * nxu\n", " \n", " self.blcoef = 0.5 * self.dt * (- sxl * sxl + self.r * nxl)\n", " self.bucoef = 0.5 * self.dt * (- sxu * sxu - self.r * nxu) \n", " \n", " def solve(self):\n", " for i in range(0, m):\n", " self.rhs[:] = self.u[i,:]\n", " self.rhs[0] -= self.blcoef * self.Fl[i]\n", " self.rhs[self.ns-1] -= self.bucoef * self.Fu[i]\n", " self.u[i+1,:] = self.A.solve(self.rhs)\n", "\n", " return self.u\n", "\n" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time1: 0.13419318199157715\n", "Elapsed Time2: 0.03331756591796875\n", "Elapsed Time3: 0.009321451187133789\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAAEcCAYAAACGQ1bfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xd8lFXaxvHfISENSCBA6CX03qXYFRUUFHvvBcuuZXXtFBXrrnVdX9cuKisiIkVQwN4Q6SkkhBoIhJAAaaRnzvvHDBHZgDHteTK5vp/PbJLJyeRi0dvnnucUY61FRERERERE3K+B0wFERERERESkYtTAiYiIiIiI1BFq4EREREREROoINXAiIiIiIiJ1hBo4ERERERGROkINnIiIiIiISB2hBq4eM8YMMsY8YoyJdDjHg8YYa4z5sZzvbfN97/DHuYeN+/YI4+46bNy7Rxj3Yk3/OUWkYpysTcaYJ40xS4wxe3214dqjjL3JGJNojCk0xmwwxtxyhHHnGmPWGGMKjDHJxphJxpiAcsYdb4z52RiTb4zZbYx53hgTWo1/PBGpAfW1Zolz1MDVb4OAqYBjDZwxpgvwMLDnKMMWA6MOe3xXzriYcsbNLGdcejnjXqjcn0BEaoCTtel2IBT47GiDjDE3Aa8BnwBjgY+B/zPG3HrYuDG+MSuAM4GXgEnAk4eNGwAsxVsLx/vGXAe8W9U/kIjUuHpXs8RZgU4HkHrvVWAG0JMj//OYYa39pQKvlVPBcUUVHCci9U+EtdZjjOkGXF3eAGNMIPAE8L619mHf098YY9oC04wxb1pri33PPw38aK2deMi4xsAkY8wL1trdvucfBVKAiw7+rDGmCJhujHnGWru62v+kIuIPnKpZ4iDdgfNDvtv41hjT3Riz0BiT67sFPsUY08A35lrgHd+PbDxkKmHnWsx5OTAEeLC2fqeIOKcu1CZrracCw0YBLYEPDnv+faA5cDyAMaYD3nfmyxvXEO+72xhjGuJ9R3zWIRdRALOAImDCn/tTiEh1UM363biymiXOUwPn3z4FvgbOBebifYf3Gt/3FgKP+z6/iN+mEqYe6cWMMQ2MMYEVeJg/CmaMaYZ32uJ91tp9fzD8bGNMnm/O9i/msPVvhxhsjMkyxhQbY2KMMTccYVyUMSbDGFNijEkyxtyvud0itcq1tamC+vo+xh32fLzvY5+jjbPWbgXyDhnXFQgpZ1wBsPmQcSLiDNWs39cscZgaOP/2nLX2OWvtl9baO/H+C3kZgLU2He+FAcBaa+0vvkfhUV7vbaC4Ao9rjvQCh/gnkMQfr+9YgHd+9xjgCqAA+NQYc+Vh474H7gLOAS4ENgJvGmMmHTZuLXAPcLFv7HfAU3jnhYtI7XBzbaqIg+tc9h/2/L7Dvn+kcQefq8i4fTi4TllEANWsg8+pFrmE1sD5t4WHfR0HDK7C6z0C/LsC47Ye7ZvGmBPwztMeYq21Rxtrrb39sJ/9FPgFb9P1wSHjphz2o/N8Yx82xrxorc31jTt8t8lFxphc4C7fOpONR8sjItXClbXpTzj4rvhR69cfjDOVGCcizlDNUi1yFTVw/u3wqYmFeKfpVNZ2vIvs/0jpH3z/NeAtIMUY09T3XCAQ4Ps6/0jvXFlrS40xHwPPGGPaWGuPOEUB+BDvdIf+wLI/GHcXMAzvnTsRqVlurU0Vdei71ofWoMjDvn/4u9uHalrBcc34bZqTiDhDNev3NUscpimU8mdU1y3/3sAteG/HH3wcB4z0fX7rkX8UqJ53kiozTkTcqbanIx1sqPoe9vzB9SHrjzbOt7lB2CHjNuO9IDx8XAjQ5ZBxIuIf6nrNEofpDlz9dvAuV0UPin2E6rnlf0o5z70IBOBd77bpSD/o2wr3ImB7BbayvRzIB2IrMM7iPfNERJznVG2qqGVABt51uV8e8vyVeN+h/gnAWrvdGLPON+7Nw8YVA5/7xhUZY74ALjbGPGKtLfGNuxAIBuZXU24RqRn1qmaJ89TA1W8H30n5izFmOt5/OWOstUXlDbbWbgO2VfWXWmu/Pfw5Y0wmEHjo94wxl+HdPnsRsANoBfwFGIpv8bBv3AnAA8AcX74IvO9anQM8YK094BvXCe9WuDPxNonBwHnAtcBr1tqDi5BFxFmO1CYAY8xJeLfbbu17aphvnSzW2tm+j8XGmMl4D8HdifeC6FTgeuD2w3I+BHxmjHkN73TtwXgPxX3psDehHsF7kTXLGPMK0BnvZk+zrbWrquPPJiI1pj7WLHGStVYPP3vgvRCweBuiQ59/F9h22HNTgZ1451lboLNDmb/Fe3Dkoc+NxLttbxreYpiFt+iMOWxcN7zvCu3E+y5YLvAzcNlh4yLxbv+bjHc3y3xgNfBXoIHTf2966OHvj7pQm3y1yJb3KGfszXh30y3Eu372tiO85vnAOt+47cAUIKCccSfibeIKfHXvRSDM6b83PfSorw/VrKPXLD2cexjfX5SIiIiIiIi4nDYxERERERERqSPUwImIiIiIiNQRauBERERERETqCDVwIiIiIiIidYQrjhFo0aKF7dy5s9MxRKQarVq1KsNa29LpHFWh2iTin1SfRMSNKlqbXNHAde7cmZUrVzodQ0SqkTEm2ekMVaXaJOKfVJ9ExI0qWps0hVJERERERKSOUAMnIiIiIiJSR6iBExERERERqSPUwImIiIiIiNQRauBERERERETqCDVwIiIiIiIidYQaOBERERERkTpCDZyIVMii2FRmr0rBWut0FBGRMjkFxTwyP569uYVORxER+Z23ftzKT5syqv111cCJyB/Kyitmyrw4ZixPRv2biLjJ80uTmL5sGzsz852OIiJSZsPuHJ5clMBnMbuq/bUDq/0VRcTvPLtkA/sOFDH9+uE0aGCcjiMiAkD8riym/7yNK0Z0ZED7pk7HEREBwFrLpLmxhIcEct+YXtX++roDJyJHFZOSyQfLk7l6VGf6to1wOo6ICAAej2XS3DiahQVx7xnVf4EkIlJZn6zeyYpt+3ngzF40axRU7a+vBk5EjqjUY5k8N44WjYO5+4weTscRESnz8aodrNmeyUNn9SYirKHTcUREAMjMK+KpRQkM6diUi4Z2qJHf8YcNnDHmbWPMHmNM3CHPRRpjlhpjNvo+NvM9b4wx/zLGbDLGxBhjhtRIahGpFR/+up11KVlMGteb8BD3XSCpPonUT/sOFPHU54kM7xzJ+UPaOR3nf6g2idRf/1y8gf15RTx+bv8aW3ZSkTtw7wJjD3vuAeAra2134Cvf1wBnAt19j4nAq9UTU0RqW0ZuIf/4IpFjuzbnnIFtnY5zJO+i+iRS7/zji0RyC0qYdm4/jHHlutx3UW0SqXfW7cjkv79u59pjo+nTNrzGfs8fNnDW2u+BfYc9PQGY7vt8OnDuIc+/Z71+AZoaY9pUV1gRqT1PLUokv7iUxya49gJJ9UmkHlqVvJ+ZK3Zww/HR9GzdxOk45VJtEql/Sn3rcls2DuZvp3ev0d9V2TVwray1qQC+j1G+59sBOw4Zl+J7TkTqkOVb9vLJ6hRuOqEL3aIaOx3nz1J9EvFTJaUeJs2No01ECHeMrtkLpBqg2iTix/67PJnYnVlMHt+HJjW87KS6NzEp7236ck+NMsZMNMasNMasTE9Pr+YYIlJZxaUeJs+Lo13TUG4/tc5dIB1NheqTapOIe723LJmE1GymjO9Do2C/OQlJ104idVx6TiH/WLyB47u1YPyAmr+BXtkGLu3g7X3fxz2+51OAQ7dbaQ+Ue3qdtfZ1a+0wa+2wli1bVjKGiFS3d37aSlJaLo+c05fQoACn41RGleqTapOIO6VlF/D80iRO6tGSsf1aOx2nMnTtJOKnnlqUQEFxKY9O6Fsry04q28DNB67xfX4NMO+Q56/27ag0Esg6OF1ARNwvNSufF7/cyGm9ozi9Tyun41SW6pOIH3p8YQJFpR4ePad2LpBqgGqTiB/6Zcte5qzZyc0ndqVry9pZdvKH8w+MMR8CJwMtjDEpwFTgaWCWMeYGYDtwkW/4IuAsYBOQB1xXA5lFpIZM+2w9HmuZenZfp6NUiOqTSP3w06YMFqzbxV2ndadzi0ZOx/lDqk0i9UNRiYfJc+No3yyUv5zSrdZ+7x82cNbay47wrdHljLXAX6oaSkRq37cb9rAodjd/P6MHHSLDnI5TIapPIv6vsKSUyfPi6NQ8jFtO6up0nApRbRKpH97+aSsb9+Ty1jXDanXZid+sABaRyisoLmXq/Hi6tGjETSd2cTqOiEiZN3/Yypb0A7x73TGENKyT63JFxA/tzMznpS83cnqfVozuXbvLTtTAiQj/+W4zyXvz+OCGEQQH6gJJRNxhx748/vXVRs7s15qTe0b98Q+IiNSSxxbEY7FMPbtPrf/u6j5GQETqmG0ZB/i/bzdz9sC2HN+9hdNxRETKPLognoAGhsnja/8CSUTkSL5J3MPi+DTuGN2d9s1qf9mJGjiResxay9T58QQFNGDSuN5OxxERKbN0fRpfJuzhrtO607ZpqNNxRESA35addG3ZiBuPd2bZiRo4kXpscfxuvktK52+n96BVeIjTcUREAMgvKuWR+fH0aNWY646LdjqOiEiZ//t2M9v35TFtQj+CAp1ppbQGTqSeOlBYwqML1tOrdROuGdXJ6TgiImX+/c1GdmbmM+vmUTQM0HvNIuIOWzMO8J9vNzNhUFuO7ebcshM1cCL11L++2khqVgH/vnwwgbpAEhGX2LQnl9e/38IFQ9ozPDrS6TgiIoB32cmUeXEEBzbg4bOcXXaiqzaRemjD7hze+nErlwzrwNBOukASEXc4eIEU2jCAB8/q5XQcEZEyi2J388PGDO45owdRDi87UQMnUs9Ya5k8N47GIYHcf6YukETEPeav28XPm/dy79hetGgc7HQcEREAcgtLeOyzePq2DefKkc4vO1EDJ1LPzFm9k1+37eP+sb2IbBTkdBwREQCyC4p5fGECA9pHcPnwjk7HEREp8+LSJPbkFPL4uf1csexEa+BE6pGsvGKeXJTAoA5NuWRYB6fjiIiUeX5JEhm5hbx1zTACGhin44iIAJCQms07P2/j0mM6MrhjM6fjAGrgROqVZ5dsYH9eEdOvH04DXSCJiEvE7czivWXbuHJEJwa0b+p0HBERADwe77KT8JBA7hvT0+k4ZZy/BygitSImJZMPlidz9ajO9GsX4XQcERHAe4E0aW4ckY2C+PsZ7rlAEhH5ZHUKK5P38+CZvWnmomUnauBE6oFS3wVSi8bB3H1GD6fjiIiUmbVyB2t3ZPLQWb2JCGvodBwREQAy84p46vNEhnZqxoVD2zsd53fUwInUA//9dTsxKVlMGteb8BBdIImIO+w7UMTTXyQyPDqS8wa3czqOiEiZfyzeQFZ+MY+f2891y07UwIn4ufScQv7xRSKjujTnnIFtnY4jIlLmmc8TyS0oYdqEfhjjrgskEam/1mzfz4e/bufaYzvTu02403H+hxo4ET/31OcJFBSXMu3cvrpAEhHXWJW8j49W7uCG46Pp2bqJ03FERIDflp1ENQnmrtO6Ox2nXGrgRPzY8i17mbN6Jzed0IVuUbpAEhF3KCn18PCncbSJCOGO0e68QBKR+umDX5KJ35XN5PF9aOLSZSdq4ET8VHGph8nz4mjXNJTbT9UFkoi4x/RlySTuzmHq2X1oFKwTjUTEHfbkFPDs4g0c360F4/q3cTrOEalqivipt37cSlJaLm9cPYzQoACn44iIAJCWXcALS5M4uWdLxvRt7XQcEZEyTy5MoLDEw2MT3L3sRHfgRPxQyv48XvpyI6f1bsXpfVo5HUdEpMy0z9ZTVOrh0XPcfYEkIvXLz5szmLt2Fzef1IUuLRs7Heeo1MCJ+KFH5q/3fjynj8NJRER+831SOp/FpPKXk7vRqXkjp+OIiABQWFLKpLlxdIgM5S+ndHM6zh9SAyfiZ5auT+PLhDTuPK077ZuFOR1HRASAguJSJs+LI7pFI245uYvTcUREyrzx/Ra2pB/gsQn9CGno/mUnWgMn4kfyikp4ZH48PVo15objo52OIyJS5v++3Uzy3jw+uGEEwYHuv0ASkfph+948Xv56E2f1b80pPaOcjlMhauBE/MhLX21kZ2Y+s24eRcMA3WAXEXfYkp7Lf77dzDkD23J89xZOxxERAcBay+R5cQQ2MEwZ39fpOBWmKzwRP7Fhdw5v/bCVi4a2Z3h0pNNxREQA7wXSlHnxBDdswKTxvZ2OIyJS5vO43XyXlM7dZ/SkdUSI03EqTA2ciB/weCyT5sbSOCSQB8/SBZKIuMf8dbv4cVMG947pSVSTunOBJCL+LbewhMcWrKdPm3CuGdXJ6Th/iho4ET8we3UKK7bt58EzexHZKMjpOCIiAGTlF/P4wgQGtI/gihF16wJJRPzbC0uTSMsp4Inz+hFYx5adaA2cSB23/0ARTy1KYGinZlw0tIPTcUREyjy3ZAN7cwt5+5pjCGigM99ExB3id2Xxzk9buWx4RwZ3bOZ0nD+tbrWbIvI/nvkikeyCEh4/tx8NdIEkIi4Rk5LJ+78kc/WozvRvH+F0HNcwxvzNGBNvjIkzxnxojAkxxkQbY5YbYzYaYz4yxmgqhUgN8XgsD38aR7OwIO4f08vpOJVSpQZORUjEWSu37WPmih3ccHw0vduEOx3HVVSfRJxT6rtAatE4mLvP6OF0HNcwxrQD7gCGWWv7AQHApcAzwAvW2u7AfuAG51KK+LcPV2xn7Y5MHh7Xm4iwhk7HqZRKN3AqQiLOKi71MGluHG0jQrhzdHen47iK6pOIsz74JZnYnVlMGd+H8JC6eYFUgwKBUGNMIBAGpAKnArN9358OnOtQNhG/lpFbyDOfJzKySyTnDW7ndJxKq+oUShUhEYe8+9M2EnfnMOXsvjQK1nLWcqg+iThgT3YBzy7ewAndWzB+QBun47iKtXYn8CywHW9NygJWAZnW2hLfsBSg7l5ZirjYkwsTyC8u5fFz+2NM3V12UukGrqpFyBgz0Riz0hizMj09vbIxROqlXZn5vPBlEqN7RTGmbyun47hOVeqTapNI1UxbmEBhqYfHJvSr0xdINcEY0wyYAEQDbYFGwJnlDLVH+HnVJ5FK+nlzBnPW7OTmE7vSLaqx03GqpCpTKKtUhKy1r1trh1lrh7Vs2bKyMUTqpUcXxOOxlkfO6asLpHJUpT6pNolU3g8b01mwbhe3ndyV6BaNnI7jRqcBW6216dbaYmAOcCzQ1DdbAKA9sKu8H1Z9EqmcohIPk+fG0SEylL+e2s3pOFVWlSmUVSpCIlI5XyWksTg+jdtP7U6HyDCn47iV6pNILSsoLmXy3DiiWzTilpO6Oh3HrbYDI40xYcb77ttoYD3wDXChb8w1wDyH8on4pTd+2MLm9AM8dk4/QhoGOB2nyqrSwKkIidSy/KJSps6Pp1tUY246oYvTcdxM9Umklr367Wa27c1j2gT/uECqCdba5XjX4a4GYvFeh70O3A/cbYzZBDQH3nIspIif2b43j399tZEz+7XmlF5RTsepFpXe+cBau9wYc7AIlQBr8BahhcBMY8zjvudUhESqyctfbyRlfz4zJ44kKFDHOB6J6pNI7dqacYBXv93MOQPbcnz3Fk7HcTVr7VRg6mFPbwGGOxBHxK9Za5k6P47ABoYpZ/dxOk61qdLWdSpCIrVnY1oOb/ywhfOHtGNkl+ZOx3E91SeR2mGtZfLcOIIDGzBpfG+n44iIlFkcv5tvNqQzaVxv2kSEOh2n2ugtfJE6wFrLpLlxhAUF8tBZukASEfdYEJPKj5syuHdsT6KahDgdR0QEgNzCEh6Zv57ebcK59tjOTsepVmrgROqAOat3snzrPu4f24sWjYOdjiMiAkB2QTHTPlvPgPYRXDGik9NxRETKvLg0ibScAp44rx+BAf7V8uj0XxGXy8wr4slFCQzu2JRLj+ngdBwRkTLPLd5ARm4hb10zjIAGOtJERNxh/a5s3vl5G5cN78iQjs2cjlPt1MCJuNwzX2wgM7+Y98/tTwNdIImIS8SkZPLeL8lcPbITA9o3dTqOiAgAHo/l4bmxNA1tyP1jejkdp0b41/1EET+zevt+Pvx1O9ce25k+bcOdjiMiAkCpx/Lwp3G0aBzMPWN6Oh1HRKTMzBU7WLM9k4fH9SYirKHTcWqEGjgRlyop9fDwp3G0Dg/hb6f3cDqOiEiZD35JJnZnFpPH9yE8xD8vkESk7snILeSZLxIZ2SWS8wa3czpOjVEDJ+JS7/68jYTUbKae3YfGwZrtLCLusCe7gGcXb+D4bi04e0Abp+OIiJR5alEieUUlPH5uP4zx32UnauBEXGhXZj4vLE3i5J4tGduvtdNxRETKTFuYQGGph2l+foEkInXLL1v28snqFCae2IVuUU2cjlOj1MCJuNAj8+MptZZpE3SBJCLu8cPGdBas28WtJ3UlukUjp+OIiABQVOJh0tw4OkSG8tdTujsdp8apgRNxmcXxu1myPo07R/egQ2SY03FERAAoKC5l8tw4OjcP49aTuzodR0SkzBs/bGHTnlweO6cfoUEBTsepcVpYI+IiuYUlPDI/np6tmnDjCdFOxxERKfPKN5vYtjePGTeOIKSh/18giUjdsC3jAC99tZFx/dtwSq8op+PUCjVwIi7ywtIkUrMK+PflQ2gYoBvkIuIOG9Ny+M93mzl/cDuO69bC6TgiIgBYa5k0N47ggAZMObuP03Fqja4QRVwibmcW7/y0lStGdGRop2ZOxxERAbyH4j70aSyNggN5eFxvp+OIiJSZt3YXP27K4L6xPWkVHuJ0nFqjBk7EBUo9lgfnxBLZKJj7xvZyOo6ISJlZK3ewYtt+HjqzN80bBzsdR0QEgMy8IqZ9tp5BHZpyxYhOTsepVZpCKeIC7y3bRuzOLF6+bDARoToUV0TcIT2nkCcXJTA8OpKLhrV3Oo6ISJmnP08kM7+YD87vT4MG9WvHbt2BE3FYalY+zy7ewEk9WjJeh+KKiIs8sXA9+cWlPHlefx1pIiKu8evWfcxcsYMbT4imd5twp+PUOjVwIg47eObb4zoUV0Rc5IeN6cxdu4tbT+5Gt6jGTscREQGgsKSUhz6NpX2zUO4c7f9nvpVHDZyIg5bE72ZxfBp3jO6uM99ExDUKikuZNDeO6BaNuE1nvomIi7z+nffMt2nn9iMsqH6uBquff2oRFzhwyJlvN53Qxek4IiJlXv56I8l78/ivznwTERfZmnGAl7/ZxLgBbTilZ/048608auBEHPLC0iR2ZRXwyeWDdeabiLhGUloOr323hfOHtONYnfkmIi7hPfMtluDABkwdX3/OfCuPrhpFHBC3M4u3f9rK5SM6MrRTpNNxREQA35lvc2JpEhLIpHH1+wJJRNxl7tqd/LRpL/eP7UVUPTrzrTxq4ERqWanvUNzIRsHcP0ZnvomIe3y0cgcrk/fz0Fm9iWwU5HQcEREA9h8oYtpnCQzu2JTLh3d0Oo7j1MCJ1LL3l20jJiWLKWf3ISJMZ76JiDuk5xTy1KIERkRHcuFQnfkmIu7x1OcJZOcX81Q9PPOtPGrgRGpRalY+zy5J4sQeLTlbZ76JiIs8vnA9BcUentCZbyLiIr9s2cuslSnceEIXerWuf2e+lUcNnEgtenT+eopLPTw+QWe+iYh7fJeUzry1u7j15K46801EXKOwpJSHP42lQ2T9PfOtPGrgRGrJ0vVpfBG/mztP607H5jrzTUTcIb+olElzY+nSohG36sw3EXGR177bwub0A0yb0I/QIB1pcpCOERCpBQcKS5g6L44erRrrzDcRcZWXv97Ijn35fHjTSJ35JiKusSU9l39/s4mzB7bl5Hp85lt51MCJ1ILnlnjPfJt92Sid+SYirrFhdw6vf7+FC4e2Z1TX5k7HEREBDp75FkdwYAMmj+/tdBzX0ZWkSA1btyOTd3/eypUjOzKss858ExF38PiONGkSEshDZ+kCSUTcY87qnfy8eS8PnNmLqCb1+8y38lSpgTPGNDXGzDbGJBpjEowxo4wxkcaYpcaYjb6PzaorrEhdU1zq4f5PYmjZJJj7xurMt9qk+iRydDN+3c6q5P08PK6PznyrRapNIke3N7eQxxeuZ2inZlx2jM58K09V78C9BHxhre0FDAQSgAeAr6y13YGvfF+L1Etv/LCFxN05PDahH+EhOvOtlqk+iRxBalY+z3yeyPHdWnDBkHZOx6lvVJtEjmLaZ+vJLSzhaZ35dkSVbuCMMeHAicBbANbaImttJjABmO4bNh04t6ohReqirRkHePHLjYzt25oxfVs7HadeUX0SOTJrLZPnxlPi8fCkznyrVapNIkf3zYY9zF27i9tO7kb3Vk2cjuNaVbkD1wVIB94xxqwxxrxpjGkEtLLWpgL4Ppa7bYwxZqIxZqUxZmV6enoVYoi4j7WWh+bEEhzYgEcn9HU6Tn1U6fqk2iT+7vO43XyZkMbdp/fQkSa1T9dOIkdwoLCESZ/G0S2qMbedoiNNjqYqDVwgMAR41Vo7GDjAn7jlb6193Vo7zFo7rGXLllWIIeI+H69MYdmWvTx4Zm9ahWvxrQMqXZ9Um8SfZeUVM2VePP3ahXP9cdFOx6mPdO0kcgTPLUliZ2Y+T5/fn+BAHWlyNFVp4FKAFGvtct/Xs/EWpTRjTBsA38c9VYsoUrek5xTyxKIEhneO5NJjOjgdp75SfRIpx5OLEtifV8TT5w8gUEeaOEG1SaQca3dk8s7PW7lqZCft2F0Bla7e1trdwA5jTE/fU6OB9cB84Brfc9cA86qUUKSOeXRBPPlFpTypxbeOUX0S+V8/b87go5U7uPGEaPq1i3A6Tr2k2iTyv4pLPTzwSQytmoRw39ief/wDUuWDvG8HZhhjgoAtwHV4m8JZxpgbgO3ARVX8HSJ1xlcJaXwWk8rdp/egW1Rjp+PUd6pPIj4FxaU8NCeWjpFh3DW6h9Nx6jvVJpFDvP69d8fuN64eRhPt2F0hVWrgrLVrgWHlfGt0VV5XpC7KLSxh0tw4erRqzC0nafGt01SfRH7z0lcb2bY3jxk3jiA0SGtLnKTaJPKbLem5vPTVRsb1b8PpfVo5HafO0AR4kWry7OIN7M4u4Kk8jozeAAAgAElEQVTzBxAUqH+1RMQd1u/K5vXvt3Dh0PYc162F03FERADweCwPzoklJLABU8/p43ScOkVXmSLVYPX2/Uxfto2rR3ZiaKdmTscREQGg1GN5YE4MzcIa8vBZvZ2OIyJS5qOVO1i+dR8Pj+tNVBPt2P1nqIETqaKiEg8PfhJL6/AQ7h3by+k4IiJl3vlpKzEpWUw9uy/NGgU5HUdEBIA92QU8uSiBkV0iuXiYduz+s6q6iYlIvffad5vZkJbDm1cPo3Gw/pUSEXfYsS+P55YkcWqvKMYPaON0HBGRMlPnx1NY4uGp8wdgjHbs/rN0B06kCjan5/Ly15sY178Np2nxrYi4hLWWhz6NpYGBaef20wWSiLjG4vjdfB63m7tO6050i0ZOx6mT1MCJVJLHY3ngkxhCGmrxrYi4y9y1O/lhYwb3je1Fu6ahTscREQEgu6CYKfPi6N0mnJtO6OJ0nDpLDZxIJb3/SzIrtu1n8vg+WnwrIq6xN7eQxxasZ3DHplw5spPTcUREyjzzeSLpOYU8fX5/GgaoDaks/T8nUgk79uXxzBeJnNijJRcObe90HBGRMo8sWE9uYQlPnz+AgAaaOiki7rBs815mLN/O9cdFM7BDU6fj1Glq4ET+JGu955YY4Knz+2ttiYi4xuL43SxYt4vbT+1Oz9ZNnI4jIgJAXlEJ938SQ6fmYdxzRk+n49R5auBE/qSPV6bw46YMHjirt9aWiIhrZOUVM2mud23JrSd3dTqOiEiZ55YksX1fHs9cMIDQoACn49R52vNc5E9Iyy5g2sL1DI+O5IrhHZ2OIyJSZtrC9ew7UMQ71x6jtSUi4hqrkvfz9k9buWpkJ0Z2ae50HL+gCi9SQdZaHv40jqISD89cMIAGWlsiIi7x7YY9zF6Vwq0ndaVfuwin44iIAFBQXMp9s9fRNiKU+8/s5XQcv6EGTqSCFsSk8mVCGn8/o6fOLRER18gpKOahObF0i2rM7aO7OR1HRKTMv77ayOb0Azx1fn8aB2viX3XR/5MiFbA3t5BH5sczsENTrj8+2uk4IiJlnv48kd3ZBXxy67EEB2ptiYi4Q2xKFq99v4WLhrbnxB4tnY7jV3QHTqQCHlmwnpyCYv55obblFhH3+HlzBjOWb+eG46MZ3LGZ03FERAAoKvFw7+x1NG8UxKRxfZyO43fUwIn8gSWHbMvdo5W25RYRd8grKuGBT2Lp3DyMu0/Xttwi4h6vfruZxN05PHFefyLCGjodx+9oCqXIUWTle7fl7tW6ibblFhFXeXaxd1vujyaO1LbcIuIaibuz+fc3GzlnYFtO79PK6Th+SQ2cyFE8sXA9ew8U8dY12pZbRNxjVfI+3vl5K1eP6sQIbcstIi5RUurhvtkxhIc05JFz+jodx2/pilTkCH7YmM6slSlMPLEL/dtrW24RcYeC4lLunR1D24hQ7hurbblFxD3e/HErMSlZPDqhL5GNgpyO47d0B06kHNkFxdw/O4YuLRtx5+juTscRESnz0lcb2ZJ+gPdvGK5tuUXENTan5/L80iTG9G3FuP5tnI7j11T5Rcrx+Gfry7blDmmotSUi4g7rdmTy+vdbuGRYB07orm25RcQdSj2W+2bHENowgGkT+mGMduyuSZpCKXKYbxL3MGtlCrec1FXbcouIaxQUl3LPx+uIahLMQ+N6Ox1HRKTMWz9uYVXyfqae3Yeo8BCn4/g93YETOURWXjEPzImhZ6sm3Hmapk6KiHs8vzSJTXtyee/64USEaltuEXGHjWk5PLskidP7tOK8we2cjlMvqIETOcSjC+LZm+vddTI4UFMnRcQdVm7bxxs/bOHyER05sYemToqIO5SUerjn43U0CgrgyfP6a+pkLdEUShGfJfG7mbNmJ385pRv92mnXSRFxh7yiEu75eB3tm4Xy0FmaOiki7vHqt5uJScni8XP707JJsNNx6g3dgRMB9h0o4qFPY+nTJpy/nNLN6TgiImWe+TyR5L15zJw4UrtOiohrxO/K4l9fb2T8gDaMG6BdJ2uT/ksgAkyZF0dWfjEf3DiCoEDdmBYRd/hpUwbTlyVz/XHRjNSB3SLiEkUlHu6ZtY6I0CCmTejndJx6R1eqUu8tjEnls5hU7jqtB71ahzsdR0QEgJyCYu6bHUOXFo24b2xPp+OIiJT511cbSdydw9Pn96eZDuyudboDJ/Vaek4hk+bGMrB9BDef2MXpOCIiZZ5YmEBqVj6zdR6liLjI2h2ZvPrdZi4Y0p7T+rRyOk69VOU7cMaYAGPMGmPMZ76vo40xy40xG40xHxlj1JaLK1lrmTQ3lgNFpTx38UACA3RD2p+oNkld9k3iHmau2MHNJ3VliM6j9DuqT1JXFRSXcs+stbRsHMyUs/s4Hafeqo4r1juBhEO+fgZ4wVrbHdgP3FANv0Ok2s1du5PF8Wn8/YwedItq4nQcqX6qTVInZeYVcf8n3vMo79J5lP5K9UnqpOeWbGBz+gH+ceEAnUfpoCo1cMaY9sA44E3f1wY4FZjtGzIdOLcqv0OkJuzMzGfKvHiGdWrGDcdr6qS/UW2SuuyR+fHsO1DEcxcP1HmUfkj1SeqqFdv28eaPW3UepQtU9Q7ci8B9gMf3dXMg01pb4vs6BSj3SHZjzERjzEpjzMr09PQqxhCpOI/Hcs+stXg8lhcuGURAAx066YdUm6ROWhSbyty1u3QepX9TfZI6J7ewhHtmraNdU51H6QaVbuCMMeOBPdbaVYc+Xc5QW97PW2tft9YOs9YOa9lSXbzUnrd+3MovW/Yx9Zy+dIgMczqOVDPVJqmrdmcV8NCn3k2V/nqqzqP0R6pPUlc9tiCelP15PH/xIJ1H6QJV+Rs4DjjHGHMWEAKE431XqakxJtD3TlJ7YFfVY4pUj4TUbP65eANj+rbioqHtnY4jNUO1Seocj8dy7+x1FBZ7eOGSQTTUpkr+SvVJ6pwv4lKZtTKF207uyvDoSKfjCFW4A2etfdBa295a2xm4FPjaWnsF8A1woW/YNcC8KqcUqQaFJaX87aO1hIc25Mnz+uNddiD+RrVJ6qJ3f97GDxszmDy+D11aNnY6jtQQ1Sepa/ZkF/DgnFj6tQvnrtN6OB1HfGriLb77gbuNMZvwzut+qwZ+h8if9tySJBJ35/DPCwfQvHGw03Gk9qk2iSslpeXw9BeJjO4VxWXDOzgdR5yh+iSuY63l77NjyC8u5cVLBhMUqJkBblEtk1ittd8C3/o+3wIMr47XFakuyzbv5Y0ftnDlyI6c0ivK6ThSS1SbxO0KS0q5c+ZawkMCeebCAZoZUI+oPonbvbcsme+T0nlsQl+6RWlmgJtoFaL4veyCYu6ZtZbOzRtp5yQRcZXnlySRkJrNW9cMo4VmBoiIS2zak8OTixI4qUdLrhrZyek4chg1cOL3ps6LJy2nkE9uPZawIP0jLyLusGzzXl7/YQuXj+jI6N6tnI4jIgJAUYmHO2euJSwogH9qZoAraTKr+LX563bx6Zqd3H5qNwZ1aOp0HBERALLyf5sZMGmcZgaIiHu88GUS8buyeer8AUSFhzgdR8qh2xHit7bvzePhObEM7dSMv56iM5VExB2stUyZF0daTiFzNDNARFxk+Za9/Oe7zVwyrANj+7V2Oo4cge7AiV8qLvVwx8w1YOClSwcRqDOVRMQlPlm9k3lrd3HX6O4M1MwAEXGJzLwi/vbRWjpGhjH57D5Ox5Gj0Nt+4pdeWJrE2h2ZvHL5ENo3C3M6jogIAJvTc5kyL46RXSK5TTMDRMQlrLXcNzuG9FzvngGNg9UiuJluS4jf+WlTBq9+t5nLhndg3IA2TscREQG8Rwbc/t81BAc24MVLBhPQQBsDiIg7fPBLMkvWp3HfmF4MaK+ZAW6n9lr8yt7cQv720Vq6tmzMlPF9nY4jIlLmqUWJrE/N5s2rh9E6QhsDiIg7rN+VzbSF3iMDbjg+2uk4UgG6Ayd+w1rLvbNjyMwv5l+XDiY0KMDpSCIiACxdn8a7P2/juuM6c1ofHRkgIu6QV1TC7R+uJiK0Ic9dPJAGmhlQJ6iBE7/x7s/b+DpxDw+f1Zs+bcOdjiMiAkBqVj73zl5H37bhPHBmL6fjiIiUeXT+erZkHODFSwbRonGw03GkgtTAiV+I35XFU4sSOa13FFeP6uR0HBERAEo9ljtnrqWoxMPLlw0mOFAzA0TEHRas28VHK3dw60ldOa5bC6fjyJ+gNXBS5x0oLOH2D9fQrFFD/nHhQIzR7X8RcYeXv97Ir1v38dxFA+nSsrHTcUREAO9ZuQ/NiWVIx6b87fQeTseRP0kNnNRp1loe+jSWbRkH+ODGEUQ2CnI6kogI4D0Q919fbeS8we24YGh7p+OIiADes3JvLzsrdzANdVZunaO/ManTZizfzry1u7j79B4c21W3/0XEHTJyC7lj5ho6RoYx7dx+TscRESnzzOeJrNuRyTMXDKBDpM7KrYvUwEmdFbczi8cWrOekHi257WQdiCsi7lDqsdzx4Roy84p55YohOhBXRFzj89hU3vxxK9eM6sRZ/XVWbl2l/6pInZSVX8ytM1bRvHEQL1wySNveiohrvLA0iZ837+UfFwygb9sIp+OIiACwNeMA986OYVCHpjw8ro/TcaQK1MBJnWOt5d6P15GaWcBHN4/SujcRcY2vE9P49zebuGhoey4+poPTcUREAMgvKuXWD1bRMMDwyhVDCArUJLy6TH97Uue89eNWlqxP44EzezG0UzOn44iIAJCyP4+/fbSOXq2baN2biLiGtZbJ8+LYkJbDC5cMol3TUKcjSRWpgZM6ZVXyPp7+PJExfVtxw/HRTscREQGgsKSU22asxuOx/OfKoYQ01HlvIuIOs1buYPaqFG4/tTsn94xyOo5UA02hlDpjT3YBt36wmrZNQ3Xem4i4yuOfJRCTksV/rhxK5xaNnI4jIgJA/K4sJs+L54TuLbhzdHen40g10R04qROKSjzcOmM1OQUlvH71UCJCGzodSUQEgDmrU3j/l2RuOiGasf1aOx1HRASAzLwibv1gNZFhQbx4ySACtOGb39AdOKkTHl0Qz6rk/fz78sH0ah3udBwREQBiUjJ5YE4sI6IjuW9sL6fjiIgAUFLq4fYP17A7q4APJ46keeNgpyNJNVIDJ64389ftzFi+nZtP6sL4AW2djiMiAkB6TiE3v7+Klo2D+b8rhtAwQJNaRMQdnvkikR82ZvDMBf214ZsfUgMnrrZ6+36m+OZu3zdG726LiDsUlXi4bcYq9ucVMfuWY/Xutoi4xtw1O3njh61cPaoTlxzT0ek4UgPUwIlr7cku4Jb3V9EqIpiXLxusudsi4hqPLohnxbb9vHTpIPq102HdIuIOsSlZ3P9JDCOiI5k8Xod1+yvN9xBX8r677du05KphNA3TYd0i4g7/Xf7btO4Jg9o5HUdEBICM3EJufn8lLTSt2+/pDpy4jrWWSXNjWZm8n5cvG0zvNtq0RETcYeW2fUydH8dJPVpqWreIuEZRiYfbPljNPk3rrhfUwInrvP79FmatTOGOU7tx9kBtWiIi7pCyP49bPlhNu6ah/OtSTesWEXew1jJ1fjy/btunad31hBo4cZUl8bt5+otExg1ow12n9XA6jogIANkFxdzw7koKS0qZOXEEEWE6i1JE3OHNH7by4a/bue3krprWXU9UenKsMaaDMeYbY0yCMSbeGHOn7/lIY8xSY8xG30ftXSoVErcziztnrmVA+6Y8d9FAGujdbakk1SepTiWlHv763zVsTs/lP1cOpVtUE6cjSR2l2iTVbXH8bp78PIFx/dvw9zN6Oh1HaklVVjeWAPdYa3sDI4G/GGP6AA8AX1lruwNf+b4WOaq07AJunL6SZmENeePqoYQ0DHA6ktRtqk9SLQ5OTfo+KZ0nzuvHcd1aOB1J6jbVJqk2sSlZ3DlzDQPbN+W5i/XGd31S6QbOWptqrV3t+zwHSADaAROA6b5h04FzqxpS/NuBwhJunL6S7IJi3rzmGKKahDgdSeo41SepLm/9uJUZy7dzy0lddZ6SVJlqk1SXXZn53DB9Bc0bBfPG1cP0xnc9Uy37ixpjOgODgeVAK2ttKngLFRB1hJ+ZaIxZaYxZmZ6eXh0xpA4qLvVw64zVrE/N5t+XD6ZPW+04KdXrz9Yn1SY5aHH8bp5YlMBZ/Vtz3xhNTZLqpWsnqaycgmKuf3cF+UWlvHPdMbRsoh0n65sqN3DGmMbAJ8Bd1trsiv6ctfZ1a+0wa+2wli1bVjWG1EHWWh74JNY7Nencfpzaq5XTkcTPVKY+qTYJwK9b93HHh76pSRcN0tQkqVa6dpLKKiwpZeJ7q9i0J5dXrhhCj1Zak1sfVamBM8Y0xFuAZlhr5/ieTjPGtPF9vw2wp2oRxV89u2QDn6xO4W+n9eDS4ZqaJNVL9Ukqa8PuHG6cvoJ2zUJ5+9pjCA3S1CSpPqpNUlmlHsvfPlrLsi17+edFAzixh5r4+qoqu1Aa4C0gwVr7/CHfmg9c4/v8GmBe5eOJv3p/2TZe+WYzlw3vwB2juzkdR/yM6pNUVsr+PK5+ezmhQQG8d/1wIhsFOR1J/Ihqk1SWtZZHF8SzKHY3k8b15rzB7Z2OJA6qyjlwxwFXAbHGmLW+5x4CngZmGWNuALYDF1UtovibRbGpTJkfz+heUUyb0A/vf89EqpXqk/xp+w4UcfXbv5JXVMrHt4yifbMwpyOJ/1Ftkkp55ZtNvLcsmZtP7MKNJ3RxOo44rNINnLX2R+BIV96jK/u64t++SdzDHR+uYUjHZrx8+WACA6plHx2R31F9kj8rt7CE699dQcr+fD64YQS9WmtDJal+qk1SGR/+up1nlyRx/uB23D+2l9NxxAV09Sy15ufNGdzywSp6tWnCO9cdQ1hQVW4Ai4hUj/yiUq5/dwWxO7N4+bLBDI+OdDqSiAgAc1an8NCnsZzSsyXPXDhAGyoJoAZOasnq7fu5cfpKOkaG8d71IwgPaeh0JBERCopLmfj+SlZu28cLlwxiTN/WTkcSEQHgs5hd/P3jdRzbtTmvXjmUhpq1JD66BSI1Ln5XFte+/SstmwQz48YR2hRARFyhqMTDbTNW88PGDJ69aCDnDGzrdCQREcB7DuWdM9cyrFOkDuqW/6FWXmpU/K4srnxzOY2DA5lx4wiiwkOcjiQiQnGph9s/XM3XiXt48rz+XDhUO7qJiDt8k7iHv/53NQPaR/C2lpxIOdTASY2JScnk8jeWE9IwgP/eNFI7uomIKxSVeLhz5hoWx6cx9ew+XD5C51CKiDt8k7iHmz9YRc/WTXj3uuE0DlbzJv9L/1RIjVi9fT/XvPUrEWEN+fCmkXSIVPMmIs4rKC7lthneO2+Tx/fhuuOinY4kIgLA57Gp3DFzDT1bN+H960cQEar9AqR8auCk2q3Yto/r3llB88ZB/PemkbRrGup0JBERDhSWcNN7K1m2ZS9Pntdfd95ExDXmrE7h7x+vY3DHZrxz3THa7E2OSg2cVKufNmVw03sraR0Rwn9vHEnrCK15ExHnZRcUc907K1izfT/PXzyQ8wZrzZuIuMOM5clMmhvHqC7NeePqYTTStEn5A/onRKrNvLU7+fvH6+jasjHv3TCcqCZq3kTEeek5hVz37q9s2J3DK5cP4cz+bZyOJCKCtZY3ftjCk4sSOaVnS169cqh2m5QKUQMn1eKN77fwxKIERnaJ5LWrhmnetoi4wub0XK5951fScwp5/aphnNIryulIIiKUeiyPLYhn+rJkxvVvwwuXDCIoUHsLSsWogZMq8XgsTyxK4K0ftzJuQBuev3ggwYF690hEnPfr1n3c9N5KGgYYPpo4ioEdmjodSUSEvKIS7vhwLV8mpHHTCdE8eGZvGjQwTseSOkQNnFRaflEpf5+9joUxqVx3XGcmj+ujAiQirrBg3S7umbWO9pGhTL9uuHbCFRFXSM8p5MbpK4jdmcWj5/TlmmM7Ox1J6iA1cFIpqVn5THxvFXG7snjwzF5MPLELxqh5ExFnWWv5v28388/FGxjeOZLXrx5K07Agp2OJiLBhdw43vreC9JxCXrtqGKf3aeV0JKmj1MDJn7YqeT83v7+K/KIS3rhqGKepAImICxwoLOHvH6/j87jdTBjUlmcuGKANAUTEFRbGpHLv7HU0Cg5k5sRRDNKUbqkCNXBSYdZaZizfzmML1nuPCbhpBD1aNXE6logI2zIOMPH9lWzak8vDZ/XmxhOiNStARBxX6rE8u2QDr367mSEdm/LqlUNpFa5duqVq1MBJheQWlvDQnFjmr9vFiT1a8tIlg2jWSNOSRMR5i2JTuf+TGAIaGN67fgTHd2/hdCQREdKyC7h71lp+2rSXy0d0ZOrZfbTRm1QLNXDyhxJSs/nLjNVs23uAe8f05NaTumqzEhFxXH5RKY99tp4Pf93OoA5NefmywdqsRERc4ZvEPdzz8Tryi0r5xwUDuPiYDk5HEj+iBk6OqNTjPWDy+SVJRIQ1ZMaNIxnVtbnTsUREWL8rm7s+WkNSWi63nNSVe87oQcMAnaEkIs4qKC7ln4s38NaPW+nVugn/vnww3aK03ESqlxo4KVfy3gPcM2sdK5P3M7Zva544rx/NGwc7HUtE6rmiEg+vfLOJV77ZRNOwIN67fjgn9mjpdCwREVYl7+Pej2PYknGAq0d14qGzemsjJakRauDkd4pLPbzz01ZeWLqRwADDC5cM5NxB7bQZgIg4Lm5nFvfOjiEhNZvzBrdjyvg+WosrIo7LLyrluSUbeOunrbSNCOWDG7QWV2qWGjgpsyp5Pw9/Gkvi7hxO6x3FYxP60bZpqNOxRKSey8or5rmlG/jgl2SaNw7mjat1fpKIOM9ayxdxu5n22Xp2ZRVw5ciOPHBmbxoH6/Jaapb+CRNSs/J5dnESn6xOoU1ECK9dNZQxfVs7HUtE6rlSj+WTVSk880Ui+/OKuGpkJ+4+vScRYQ2djiYi9dymPTk8umA9P2zMoFfrJrx46WCGR0c6HUvqCTVw9Vh2QTH/+XYzb/24FWvh5hO7cPvo7nrnSEQcZa1l6fo0nl2ygaS0XIZ1asZ7E4bTt22E09FEpJ7bmZnPS18mMXtVCo2CA3n0nL5cMaIjgdpESWqRrtTroay8Yt79eRtv/7SVrPxiJgxqy9/P6Kntt0XEUdZavt+YwYtfJrFmeyZdWjTi35cPZlz/NlqHKyKOSs3K5/XvtzDjl+1g4Lrjornt5K7a4E0coQauHknNyue9Zcm8vyyZ3MISTuvdijtHd6d/e72rLSLOKS71sDAmlde+30JCajatw0N4+vz+XDi0vd7VFhFHbdidw2vfb2b+2l1Y4MIh7bnztO7aI0AcpQbOz1lrWbZlL+8vS2bJ+jQ81nJW/zb85eRu9Gkb7nQ8EanHdmXmM2vlDj5asYPUrAK6RTXmHxcOYMKgtgQHauttEXFGYUkpS+LTmLliOz9t2ktowwCuGtWJ64+L1mwlcQU1cH5qS3ouc9fuYv7anWzbm0fTsIbceHw0V4zoRMfmKj4i4ozcwhK+Skhj7pqdfJeUjgWO79aCaRP6cWqvKBo00FRJEal9Ho9lzY5MFsakMnftTvYdKKJd01DuHdOTy4d31JEl4ipq4PyEx2OJ3ZnFV4l7+Cohjfhd2RgDx3Ztzl9P7c74AW10mKSIOGJPTgE/JGWwOH433yalU1TioVV4MLed3I1Ljumgd7RFxBEFxaWs3LafrxP38HlcKqlZBQQFNGB07yguHd6RE7q10JtK4kpq4Oooj8eStCeHFVv3sXzrPn7ZspeM3CIaGBjcsRmTxvXm7IFtaRUe4nRUEaln9uQUsGZ7JquS9/N9UjqJu3MAiGoSzOXDOzJuQBuGdmymCyMRqVUFxaXEpGSxevt+lm3ey/Kteyko9hAU0IATe7Tg3jE9Oa1PK8JDdFSJuFuNNHDGmLHAS0AA8Ka19uma+D31gbWWjNwikvceIGF3Domp2SSkZrNhdw4HikoBaB0ewrFdW3BKr5ac1COKSN3mFzki1afqU1hSypb0AySl5bAxLZektBzWp2aTsj8fgKCABgzt1Iz7x/bihO4t6NMmXE2byBGoNlUfj8eyMzOfjXtySPLVpqS0HBJTcyjxWAC6tGzEpcd05MQeLRgR3ZxGOkJJ6pBq/6fVGBMAvAKcDqQAK4wx862166v7d9Ul1lqKSy0FJaUUFJVSUOyhoKSU3MISMvOK2HegmP0Hitif532kZhWwY18eOzPzKSj2lL1Ok5BAercJ58Kh7enfvikjoiNp3yxUW2yLVIDqU/lKPZbCklIKiz0UlnjILy4lO7+YzPxisg4+8orIyC0iNSuf1KwCdmUWkJFbWPYaAQ0MnZuHMbB9U649tjODOzajb9twTd0WqQDVpvJ5PJbCEo+3PpV4KCz2kFNYTFaety4drFH784rYnVVAamYBOzPzScsuKGvUwHv3v0erJkw8sQuDOzZjcMemtND2/1KH1cTbDcOBTdbaLQDGmJnABKDKRej9X5KZ/vM2rLWU/WtpKfvcWnvwKXyfYrG/ff7bv8t/PJZDf8aWfX7o7/r9GI6Yy2MtBcWlHFJLjiiwgaFpWBCtI4LpHtWEU3pG0SEyjA6RofRsHU7biBA1ayKVVyP1KSu/mAte/fl3deXQT8qrUd6vD37f/v7rw2pFhX/ud98/0vd+e63iEm/DVlKR4gQ0CgqgTdNQ2jYNpU+bcNpEhBLdshE9WjUmukUj7RwpUnk1du007bP13g2DDrtGOeTDEa+JoPy6VJGadPj3jnQtVd7reDzeN7yLSytWm4ICGtAqIpg2EaEMj46kTUQIHSLD6B7VmO5RTYgI05RI8S810cC1A3Yc8nUKMOLwQcaYicBEgI4dO1bohVs0CqJnqya+F4CDbYwx5pDPy75d1uiYsv8Bg/ndmIM/c/AVjPntNTj0uSONPSQDh4w59HcZIKRhACENG+UrvGMAAAm5SURBVPg+eh+hDQMICwqgWaP/b+9eQy076zuOf3+ZyxkTY8YxpoxJsBOJYCBVp0MJNtFU8DKBmhppCXh7ofimQaUVGTsUBl9YGi8vSr00aiBeMFSiNIhaNVpKC8ZozNWQizohY0JSqfVCSbz9fbHWJHvGc+bsfc7e2Xs9+/uBh73PWmvv/fz3s86P8+y1ztrb2XXydnaeso1TV7Y6QZNmZ9182kg2bTkpx2TTyM2xOQSr5M+x60ezavXt11i/Tm6t9phtW05iZWuXSytbu/sr/f2n7djGzpO3cdpTtnFaf+sETZqZmf3ttPu0HWv+7dQv6n9+fJOxcmm8TFo/x1bLxITHc+mJfOpuT1nZys6Tn8innU/Zzo5tJ/m3k5bKLCZwq/0G/d5HKFV1FXAVwL59+8b6iGX/+bvZf/7uzfVO0jJbN582kk1PXdnKB1+7d/O9k7SsZva305svOmdzPZO0cE6awXMeAc4e+fks4MEZvI4kTcp8krSIzCZJY5vFBO4m4Nwke5JsBy4Hrp/B60jSpMwnSYvIbJI0tqmfQllVv05yBfDvdJfCvbqq7pz260jSpMwnSYvIbJI0iZl86UVVfRH44iyeW5I2w3yStIjMJknjmsUplJIkSZKkGXACJ0mSJEkD4QROkiRJkgbCCZwkSZIkDUSqxvoeyNl2Ivkf4P4xNj0d+PGMuzNvrdfYen3Qfo3j1vfsqnrmrDszSxNkEzjuLWi9xtbrA/NpNa2Pe+v1gTW2YKrZtBATuHEl+XZV7Zt3P2ap9Rpbrw/ar7H1+jaq9fel9fqg/Rpbrw+Wo8ZJtf6etF4fWGMLpl2fp1BKkiRJ0kA4gZMkSZKkgRjaBO6qeXfgSdB6ja3XB+3X2Hp9G9X6+9J6fdB+ja3XB8tR46Raf09arw+ssQVTrW9Q/wMnSZIkSctsaEfgJEmSJGlpOYGTJEmSpIEYzAQuySuT3J3kviQH5t2faUhyOMntSW5J8u1+2a4kX01yb3/79Hn3cxJJrk7ySJI7RpatWlM6/9SP6W1J9s6v5+NZo75DSX7Uj+MtSS4ZWfeuvr67k7xiPr2eTJKzk3wjyV1J7kzytn55M+M4TS1mE7SXT61nE7SfT2bTZMym4Wg9n8ymGYxhVS18A7YA3wfOAbYDtwLnzbtfU6jrMHD6ccuuBA709w8A/zjvfk5Y04uBvcAd69UEXAJ8CQhwAXDjvPu/wfoOAe9YZdvz+n11BdjT78Nb5l3DGDXuBvb2908F7ulraWYcp/heNZlNfW1N5VPr2XSCGpvJJ7NpovfKbFqAvk5QU9P5ZDZNfwyHcgTuT4D7quoHVfVL4Frg0jn3aVYuBa7p718D/MUc+zKxqvpP4H+PW7xWTZcCn6jON4GdSXY/OT3dmDXqW8ulwLVV9VhV/RC4j25fXmhV9VBV3dzf/zlwF3AmDY3jFC1TNsGA86n1bIL288lsmojZNCCt55PZBEx5DIcygTsTeGDk5yP9sqEr4CtJvpPkLf2yP6iqh6DbIYAz5ta76VmrppbG9Yr+MPjVI6duDL6+JH8IvBC4keUYx0m1XPsy5NOy7NPN5ZPZtK6Wa1+GbILl2K/Nps7ENQ5lApdVlrXw/Qd/WlV7gf3AXyd58bw79CRrZVw/DDwHeAHwEPD+fvmg60vyVOA64O1V9bMTbbrKssHUuUkt177M+dTSuDaXT2bTWFqufZmzCdoZW7PpWBPVOJQJ3BHg7JGfzwIenFNfpqaqHuxvHwE+T3eI+OGjh1H720fm18OpWaumJsa1qh6uqt9U1W+Bj/LEof7B1pdkG10IfbqqPtcvbnocN6jZ2pckn5rfp1vLJ7NpbM3WviTZBI3v12bT5mocygTuJuDcJHuSbAcuB66fc582JckpSU49eh94OXAHXV1v7Dd7I/Bv8+nhVK1V0/XAG/qr8VwA/PTooeYhOe685VfTjSN09V2eZCXJHuBc4FtPdv8mlSTAx4G7quoDI6uaHscNai6bYKnyqfl9uqV8MpsmYjYNX9P7tdm0yTGc9Kon82p0V2y5h+5qNAfn3Z8p1HMO3VV2bgXuPFoT8AzgBuDe/nbXvPs6YV2foTsU/iu6TxjetFZNdIeQP9iP6e3Avnn3f4P1fbLv/239L+Xuke0P9vXdDeyfd//HrPFCukP5twG39O2SlsZxyu9XU9nU19RcPrWeTSeosZl8Mpsmfr/MpoG01vPJbJr+GKZ/IkmSJEnSghvKKZSSJEmStPScwEmSJEnSQDiBkyRJkqSBcAInSZIkSQPhBE6SJEmSBsIJnBZakouTVJLT590XSTrKbJK0qMyn9jmB09iSPDPJh5IcTvJYkoeT3JDkZf36w0neMe9+SlouZpOkRWU+aRa2zrsDGpTrgJPpvoDxPuAM4CV0X1QoSfNiNklaVOaTps4jcBpLkp3ARcCBqrqhqu6vqpuq6n1VdW2S/wCeDby3P2xfI4+9LMnt/SdPDyQ5mCQj67cneU+S+/ttfpDkrWv0YyXJ55PcnOSMGZctacGZTZIWlfmkWXECp3H9om+vSrJjlfWXAUeAdwO7+0aSPwY+C3wOOB84ALwLuGLksdcAbwD+Bnge3adU/3f8CyR5GvBlYBdwcVU9Mo3CJA2a2SRpUZlPmolU1fpbSUCS1wAfpTsV4LvAfwOfraob+/WHgX+uqveNPObTwO6qeunIskPAm6vqrCTnAvcA+6vqy6u85sXAN4DzgE8BPwL+qqoenUWNkobHbJK0qMwnzYJH4DS2qroOeBbw58CXgBcB30zydyd42PPowmrUfwFn9p8KvRD4LV3QnMhX6D6luswAkjTKbJK0qMwnzYITOE2kqh6tqq9W1bur6kXAx4FDSbav8ZAAax3mrX79OL4AXEh3KoEkHcNskrSozCdNmxM4bdb36K5mugP4JbBllfUXHrfsQuBIVf0cuJluP/yzdV7n74GPAF9L8oLNdlpS88wmSYvKfNKmOIHTWJI8I8nXk7wuyR8l2ZPkL4F3AjdU1c+Aw8BFSc7ME18e+X7gJUkOJXluktcCfwtcCVBV9wL/CnwsyWv6570oyeuP70NVHQT+hS6Inj/zoiUtPLNJ0qIynzQzVWWzrduAFeA9wE3AT4D/B+4FPgDs6re5ALgVeLTbtR5/7GXA7XSfMj0AHKS/gM7Ic19J90+2jwHfB67o111Md7rA6SPb/wPwY+D5835fbDbbfJvZZLPZFrWZT7ZZNa9CKUmSJEkD4SmUkiRJkjQQTuAkSZIkaSCcwEmSJEnSQDiBkyRJkqSBcAInSZIkSQPhBE6SJEmSBsIJnCRJkiQNhBM4SZIkSRqI3wEwUWM09KOJvwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Smax = 200\n", "n = ns-2\n", "X = linspace(0.0, Smax, n+2)\n", "X = X[1:-1]\n", "\n", "payoff = clip(X-K, 0.0, 1e600)\n", " \n", "m = 4555 \n", "Fl = zeros((m+1,))\n", "Fu = Smax - K*exp(-r * linspace(0.0, T, m+1))\n", " \n", "t = time.time()\n", "bs1 = BS_FDM_implicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs1.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time1:\", elapsed)\n", "\n", "#print px_fd_mat.shape\n", "\n", "figure(figsize=[15, 4]);\n", "subplot(1, 3, 1)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 1000\n", "Fl = zeros((m+1,))\n", "Fu = Smax - K*exp(-r * linspace(0.0, T, m+1))\n", "\n", "t = time.time()\n", "bs2 = BS_FDM_implicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs2.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time2:\", elapsed)\n", "\n", "subplot(1, 3, 2)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 100\n", "Fl = zeros((m+1,))\n", "Fu = Smax - K*exp(-r * linspace(0.0, T, m+1))\n", " \n", "t = time.time()\n", "bs3 = BS_FDM_implicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs3.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time3:\", elapsed)\n", "\n", "subplot(1, 3, 3)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "\n", "#print(px_fd_mat[nrow-1,:])\n" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Elapsed Time1: 0.1549983024597168\n", "Elapsed Time2: 0.041253089904785156\n", "Elapsed Time3: 0.0\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAEcCAYAAACPqPalAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xl821eZL/7PI3nfLW9xHO927Dh74jhJk7bZ2qR7CxRaCtMyDKUzdIBhfnMpF25h4JZh4LLM/G5h2mHKXkoX2oY2bRanSRvSLM4eb4njeF/kfbdlSef+IbnjGieRY8nfr776vF8vv2p/dSQ9JuTkex495zmilAIRERERERH5H5PWARAREREREdH14YKOiIiIiIjIT3FBR0RERERE5Ke4oCMiIiIiIvJTXNARERERERH5KS7oiIiIiIiI/BQXdAQAEJEVIvItEbFoHMfXRESJyKFpHqtzPzb1694p4w5cYdyXp4z75RXG/cTXvycReU7L+UlEvisie0Skyz0/PHKVsZ8TkSoRGRORahF57Arj7hWRUyIyKiL1IvINETFPM26jiBwWkRERaRORH4lIuBd/PSLyskCdr0hbXNDRhBUAvglAswWdiOQA+DoA61WG7QawfsrXwWnGnZ1m3AvTjOuYZtyPr+83ICIf0XJ++nsA4QDeuNogEfkcgGcAvAJgB4CXAPxURP52yrjt7jHHAdwG4N8AfAPAd6eMWwZgL1zz4Z3uMZ8B8MvZ/kJE5FMBN1+R9oK0DoBokp8B+B2AAlz5/5udSqkjHrzWgIfjbB6OI6LAFKuUcopIHoC/mm6AiAQBeArAb5RSX3dffkdE5gP4joj8XCk17r7+PQCHlFKPThoXBeAbIvJjpVSb+/o/A2gCcP/Ec0XEBuBXIvKvSqmTXv9NicjfaTVfkcb4CZ3BuT/2VyKSLyJvisig+yPzJ0XE5B7zCIBfuJ9ycVLpYdYcxvlJAKsAfG2u3pOItOUP85NSyunBsPUAkgD8dsr13wBIALARAEQkHa7s/XTjguHKgENEguHKmr846cYKAF4EYANwz8x+CyKaLc5XHxr3wXxF+sAFXeB4FcB+APcCeA2u7O/D7sfeBPC/3d/fj/8uPWy90ouJiElEgjz4kmsFJiLxcJU5/g+lVPc1ht8lIsPumu8jMmX/3CQrRaRPRMZF5KyIfPYK45JFpFNE7CJyQUS+ytpwojmn2/nJQ4vd/z0/5Xq5+79FVxunlLoMYHjSuFwAYdOMGwVwadI4Ipp7nK8+PF+RDnBBFzh+qJT6oVJqn1LqS3D9BX0QAJRSHXDdJADAaaXUEffX2FVe7zkA4x58PXylF5jkBwAu4Np7Q/4EV334dgAPARgF8KqIfGrKuHcBfBnA3QA+BuAigJ+LyDemjDsN4B8BfNw99iCAf4GrrpyI5o6e5ydPTOyV6ZlyvXvK41caN3HNk3Hd0HCvMxFxvsKH5yvSAe6hCxxvTvn5PICVs3i9bwH4vx6Mu3y1B0XkRrjqvFcppdTVxiql/n7Kc18FcASuRdhvJ417cspTX3eP/bqI/EQpNegeN7Wb5S4RGQTwZfcelYtXi4eIvEaX89MMTGTOrzqHXWOcXMc4Ipp7nK84D+kOF3SBY2op4xhcJT3XqwGuDfvX4rjG488A+C8ATSIS574WBMDs/nnkSpktpZRDRF4C8K8ikqqUumJJA4Dfw1UesRTA+9cY92UAxXB9skdEvqfX+clTkzPbk+chy5THp2bAJ4vzcFw8/rs0iojmHuerD89XpAMsuaTr5a0SgUUAHoPr4/uJrw0A1rm//9srPxWAdzJN1zOOiPRrrkuYJhZYi6dcn9hjUnG1ce6GCRGTxl2C6yZx6rgwADmTxhGR//P3+Yp0gJ/Q0YSJT8E8PbT2W/BOicDmaa79BIAZrv1yNVd6orv17v0AGjxonftJACMAznkwTsF15goR6YNW85On3gfQCdfe3n2Trn8Kriz2nwFAKdUgImfc434+Zdw4gLfc42wi8jaAj4vIt5RSdve4jwEIBbDTS3ETkfcF1HxF+sAFHU2YyLR8QUR+Bddf1rNKKdt0g5VSdQDqZvumSqkDU6+JSC+AoMmPiciDcLXq3gWgEUAKgC8AWA33ZmT3uBsBPAHgj+74YuHKat0N4Aml1JB7XCZcrXdfgGvRGArgPgCPAHhGKTWxqZmItKfJ/AQAInIzXC2+57kvFbv32kIp9bL7v+Mi8r/gOpi3Ga6bpC0A/hrA30+J838CeENEnoGrxHslXAf1/tuUxNS34LrxelFEngaQBVcDqZeVUie88bsRkU8E4nxFWlNK8cvAX3DdFCi4FkiTr/8SQN2Ua98E0AxXnbYCkKVRzAfgOshy8rV1cLUJbodrcuyDaxLaPmVcHlxZo2a4smSDAA4DeHDKOAtc7Ybr4eqWOQLgJIDHAZi0/nPjF78C4csf5if3fKSm+5pm7Ofh6tg7Btce3L+7wmt+BMAZ97gGAE8CME8z7ia4FnWj7rnvJwAitP5z4xe/AvGL89XV5yt+afsl7j8sIiIiIiIi8jNsikJEREREROSnuKAjIiIi8jIR2SEi1SJSIyJPXGXcx0REiUjxpGtfcz+vWkS2z03EROSv2BSFiIiIyItExAzgaQC3wHXG2HER2amUqpgyLhrAFwEcnXStCMADcLWLnw9gn4gsVEp56xwyIjIYfkJHRERE5F0lAGqUUrXK1TXwBbg6NU/1HQDfh6vxzYR7ALyglBpTSl2GqxNzia8DJiL/pbtP6BITE1VWVpbWYRCRl504caJTKZWkdRyzwfmJyHh8NDelwXXEzoQmAGsnDxCRlQDSlVJviMj/N+W5R6Y8N23qG4jIowAeBYDIyMjVhYWFXgqdiPRgJnOT7hZ0WVlZKCsr0zoMIvIyEanXOobZ4vxEZDw+mptkmmsftBUXEROAH8N19umMnvvBBaWeBfAsABQXFyvOTUTGMpO5SXcLOiIiIiI/1wQgfdLPCwC0TPo5GsASAAdEBHAdBL1TRO724LlERB/CPXRERERE3nUcQL6IZItICFxNTnZOPKiU6lNKJSqlspRSWXCVWN6tlCpzj3tAREJFJBtAPoBjc/8rEJG/4Cd0RERERF6klLKLyOMAdgMwA3hOKVUuIt8GUKaU2nmV55aLyIsAKgDYAXyBHS6J6Gq4oCMiIiLyMqXULgC7plx78gpjN035+SkAT/ksOCIyFJZcEhERERER+Sku6IiIiIiIiPwUF3RERERERER+invoiDxU3zWEE/U9aO0bBQCkxoahONOCjIQIjSMjokA2bLOjrK4HF9oHMDTmQEx4EArnxWB1ZjxCgpi3JSLt9I2M40htFy51DGJ03AlLRDAWp8ViRXocgs2cn7yFCzqiq3A6FXaXt+E/3q3FmcbeaccsT4/DYzflYMeSeXCfJ0RE5HPNvSN4+p0avHaqGcO2v2yCGBMWhAdKMvDoTTlIjArVIEIiClQ11gH8e2kNdp1rhd2p/uLxhMgQPLQ2A5+7KQfRYcEaRGgsXNARXUFj9zD+6eUzOFLbjZykSHzjjkW4aWESMiyuT+Tqu4bx7oUOPH+sAX/7u5O4ITcBP7h/OdLiwjWOnIiMzOlUeO7Pl/GD3dVQCrh35XzcuWw+lqTFIjY8GN1DNpxu7MXrp5vx8/dq8cKxBnzjziLcv3oBk05E5FPjDid+su8C/uNgLcKDzfj0+kzctiQVi+fHICLEjI7BMZyo68ErJ5vx7/tr8PyxBnzvI8uwrShF69D9mij1l6tmLRUXF6uysjKtw6AA9+eaTvzd707C6VR44vZCPLAmA2bT9DdCDqfC74814HtvVcFsEvz0oVXYkJc4xxHrn4icUEoVax3HbHB+Iq0N2+z44u9PY19lO7YtSsE/37P4qkmkGusgvv7qORy93I37Vy/AU/ctZRnmFJybiLyjf3Qcn/tVGY5e7sbHVi/A124rRMJVqgPONvXiq6+cQ2VrP76wORf/eEsBTFe41wpEM5mbOKsTTXGg2orP/PI45sWE4Y0vbsRDazOvuJgDALNJ8Kl1mXjj7zciJSYUj/ziGN4+3zqHERNRIBi22fHIL45jf1U7vnlXEf7zr1ZfsyIgLzkKz39uHb64JQ8vnWjC3/y6DGN2nlFNRN7VOTiGB589ghP1PfjxJ5bj/9y//KqLOQBYtiAOr33hBjxYko6n37mEb7x+Hnr7oMlfcEFHNMmBaise/c0J5CdH4Q+fX4fMhEiPn5uVGImXHrsBS9Ni8cXfn8bhmk4fRkpEgWTYZsdnfnEcZXXd+MkDK/GZDdkel0+aTYKv3FqA731kKd690IF/+MNpOKbZ00JEdD36hsfxwLNHcKljEP/5cDHuW7nA4+eGBpnx3fuW4m835eL5ow146s1KLuquAxd0RG6Vrf147Leuxdzv/mYt4iJCZvwaseHBeO6RNchMiMCjvzmB8819PoiUiAKJ06nw5RdO43hdN378iRW4e/n863qdB0oy8I07FmHXuTZ8cycz4UQ0e+MOJ77w/EnUdw3hF4+UYHNB8oxfQ0TwP7YX4JEbsvDzQ5fxs4OXfBCpsXFBRwSgd9iGz//mBGLDg/HLz5Rc12JuQlxECH792RLEhAXhb35Vhp4hmxcjJaJA87ODl7Cnoh1fv6MI96xIm9Vr/c2NOfj8zTn47ZEG/PZog5ciJKJA9Z03KnCophPfvW8p1ucmXPfriAievLMIdy+fj/+zu5pVTjPEBR0FPKdT4ct/OI3WvhH87FOrkRQ9+/beqbHhePavitE1NIZ/evksM+FEdF3eu9iBH+6pxl3L5+OvN2R55TW/ur0QNy1MwnfeqEBVW79XXpOIAs/rp5vx6/fr8ehNObi/OH3Wr2cyCf7lI0uRkxSFL75wGtb+US9EGRi4oKOA9+v363CgugNP3lmEVRnxXnvdJWmx+OqOQuyrbMev36/32usSUWDoHbbhH/5wBvnJ0fjXjy712pEDJpPgh/cvR0xYMB5//hSGbXavvC4RBY72/lE8+Xo5VmbE4X9sL/Da60aGBuGnD63C0JgdX/7DaTi539cjXNBRQGvsHsb3d1fj5oVJ+NS6TK+//mc3ZmNzQRKe2lWJ2o5Br78+ERnXd96oRO+wDT/6xHJEhHj32Nik6FD85BMrcKljED/YXe3V1yYiY1NK4YlXzmLM7sAP71+OILN3lxMLU6Lx5F1FOHypCy+daPTqaxsVF3QUsJRS+Nofz0EAfPcj3st+TyYi+NePLUNokAlPvl7O0ksi8sjBCx145WQTHrs5F4vnx/rkPTbmJ+KhtRn41eE6NnAiIo+9fKIJ71R34IkdhchJivLJezywJh0l2RY89WYlOgbGfPIeRsIFHQWsV04241BNJ564fdE1z3KajeToMPzT9gIcqunEn87yfDoiuroRmwP/84/nkJsUice35Pn0vf5peyEskSH4+qvneJQBEV1T/+g4/vXtKqzOjMdfrc/y2fuICL5731KMjjvxnTcqfPY+RuHRgk5EdohItYjUiMgT0zz+mIicE5HTInJIRIrc17NEZMR9/bSI/Ie3fwGi6zFss+P7b1dhRXocHirJ8Pn7PbQ2E8sWxOI7b1Sgf3Tc5+8XKDg3kRH9/L1aNPeO4Lv3LUVYsNmn7xUbHoxv3FGEM019eP4Yu14S0dX9/6UX0TVkw7fuWgyTyfuVTZPlJUfh7zbnYueZFhyp7fLpe/m7ay7oRMQM4GkAtwEoAvDgxE3RJM8rpZYqpVYA+D6AH0167JJSaoX76zFvBU40G88crIV1YAz/685FPp+QANfBvv/73iXoGBjDzw7wfBVv4NxERmQdGMXPDl7C9sUpWJtz/S3AZ+KeFfOxPicBP9pTjQEmnLyGCScymksdg/jFn+vw8dXpWLrAN6XgUz12cy5SY8PwL29VcdvKVXjyCV0JgBqlVK1SygbgBQD3TB6glJrc9zgSAP8XJ91q6xvFM+9ewh3LUrE60zJn77tsQRzuWTEfv/jzZbSzFa83cG4iw/nx3guw2Z144rZFc/aeIoKv3V6InuFx/Od7l+fsfY2MCScyon/ZVYnwYDP+aYf3ulpeS1iwGV+5ZSHONPZi17m2OXtff+PJgi4NwOQWM03uax8iIl8QkUtwTUpfnPRQtoicEpGDInLjdG8gIo+KSJmIlHV0dMwgfKKZ+9HeajidwBM7Cuf8vb9yy0LYHQr/Xnpxzt/bgHw+N7mfz/mJ5sSF9gH84XgjPr0+E9mJkXP63ssWxOGOpan4+Xu1bEDgHUw4kaGcbuzFvkorHtuUi8So2Z/XOxMfWbUABSnR+MHuKow7nHP63v7CkwXddPVofzHpKKWeVkrlAvgqgG+4L7cCyFBKrQTwFQDPi0jMNM99VilVrJQqTkpK8jx6ohmq7xrCKyeb8dC6DKRbIub8/TMTIvHJtRl44XgjLncOzfn7G4zP5yb38zk/0Zz4t9KLCA8244tb8jV5/3+8dSHG7E48/U6NJu9vMEyGk6H8aO8FWCJD8PANWXP+3maT4Ku3FaCuaxgvlvEYg+l4sqBrAjD5+PcFAFquMv4FAPcCgFJqTCnV5f7+BIBLABZeX6hEs/fTdy7BbBI8dnOuZjE8viUPIWYTP6WbPc5NZBgX2wew61wrHr4hC/GRIZrEkJMUhY8XL8DvjtajtW9EkxgMhMlwMoyyum68e6EDn78pB1Gh3j0T01ObC5KxIj0OPztwiZ/STcOTBd1xAPkiki0iIQAeALBz8gARmZxOvAPARff1JHcdOUQkB0A+gFpvBE40U43dw3jlZBM+WZKBlJgwzeJIjg7DQ2szsPNMCxq7hzWLwwA4N5Fh/N93ahAebMbf3JijaRx/tykPTgX8nHvpZosJJzKMH++7gMSoEHx6faZmMYgIHt+ch6aeEfzpzNX+KgWmay7olFJ2AI8D2A2gEsCLSqlyEfm2iNztHva4iJSLyGm4skkPu6/fBOCsiJwB8DKAx5RS3V7/LYg88NMDl2ASwedv1vaGCQA+e2M2TAI8+y7XENeLcxMZxaWOQfzpTAs+vT4TFo0+nZuQbonA3cvn4/fHGtAzZNM0Fj/HhBMZwunGXvy5pgufvykXESHafDo3YUthMgrnReOnBy7ByXMzP8SjPxml1C4Au6Zce3LS91+6wvNeAfDKbAIk8gZr/yhePtGIT6xJR2qs7w4R91RqbDg+snIBXixrxBe35iMpem43GBsF5yYygmcOXkJIkAmf0/jTuQl/uykXr55qxi8P1+EfbuEHQ9dDKWUXkYmEkxnAcxMJJwBlSqmdcCWctgEYB9CDDyecvi0idgAOMOFEGnr23UuIDgvCg2t9f2bvtZhMgr/bnIcv/v4U9lS0YceSVK1D0g2PDhYn8ne/fr8edqfSzQ0TAHz+5hzYHE4892eWNhEFqo6BMbx2qgX3r06f885xV7IwJRq3FKXgl4frMDRm1zocv6WU2qWUWqiUylVKPeW+9qR7MQel1JeUUovdRxNsVkqVu6+/4r6+XCm1Sin1Jy1/Dwpc9V1DePt8Gz61LlOzvXNT3bE0FVkJEfiPg/zQejIu6MjwRmwO/PZoPW5ZlILMhLltBX41OUlRuG3JPPz2SD2GbbxpIgpEvzlSD5vDic9syNI6lA/520256BsZxysnm7QOhYg08l+HLsNsEjyiQWfLKzGbBJ/ZkI3Tjb041dCjdTi6wQUdGd4fTzWhd3hc82YD0/nMhmwMjNrx6qlmrUMhojk2Ou7A747UY9uiZOQkRWkdzoesyojH8gWx+NXhOijFvSpEgaZnyIYXyxpx74o0TRvJTeejqxcgKjQIvzpcp3UousEFHRma06nwX4cuY2laLNZkxWsdzl8ozoxHUWoMb5qIAtDrp5vRNWTDX2/M1jqUaT18QxYudQzhUE2n1qEQ0Rz7Q1kjRsedukyGR4UG4f7iBXjzXCus/aNah6MLXNCRob17sQO1HUP47MZsiEx3LJC2RFylDBfaB/F+bZfW4RDRHFFK4blDdViUGoP1OQlahzOtO5alIjEqhFlwogDjcCr89kg91uVYUDAvWutwpvXw+izYnQq/O9qgdSi6wAUdGdrvjjYgITIEty/Vbyeku1fMR3xEMG+aiALIifoeVLcP4JEbMnWZbAKA0CAzHizJQGmVFQ1dPDOTKFAcvGBFU88IPr0uS+tQrigrMRKbC5Lxu6MNPGgcXNCRgbX2jaC0sh0fX5OOkCD9/l89LNiMT6zJwN6KdrT0jmgdDhHNgd8dbUB0aBDuWj5f61Cu6qG1mTCL4HdH67UOhYjmyG/er0dSdChuXZyidShX9al1GegcHENppVXrUDSn37tcoll64VgjFIAH12h/dsq1fLIkA04FvHyCHeWIjK5nyIY3z7XivlVpmh/Uey3zYsOwdVEyXjnZxCw4UQBo6BrGgQsdeLAkA8FmfS8TbspPwryYMLxwnGWX+v6TIrpOdocTLxxvwE35SchIiNA6nGvKSIjAhrwEvFjWCKeTzVGIjOyVk02w2Z34pA4O6vXEJ9ako3PQxiw4UQD4/fEGmETwYEm61qFcU5DZhI8XL8DBCx0BX+HEBR0ZUmmVFe39Y/jUukytQ/HYx4vT0dQzgsOX2ByFyKiUUnj+aAOKM+NROC9G63A8MpEF/wOz4ESG5nAq/PFkEzYXJCE1NlzrcDxyf7Fr4fliWaPGkWiLCzoypJfKGpEcHYrNBUlah+Kx7YvnITY8mKUDRAZ2vK4HtZ1DeKDEPz6dA1xZ8PuZBScyvHcvdqC9fwwfW71A61A8lm6JwMa8RLxU1gRHAFc4cUFHhtM5OIYD1R24b1UagnRe/z1ZWLAZ961Mw57ydvQM2bQOh4h84JUTTYgIMeO2JfO0DmVG7l+dzn2+RAb38okmxEcEY0uhvpuhTPXAmgw0947g8KXAPTPTf+52iTz0+ukW2J0KH13lPxmmCZ9Ykw6bw4nXTzdrHQoRednouANvnmvFbUtSERmq72YoU2UkROCG3AS8dKIRSgVuFpzIqHqHbdhb3o57VqTpujP4dLYuSkZ0WBBePRm4907+9SdG5IFXTjRhaVosFqbo8zDMq1mUGoNFqTF49XSL1qEQkZftLm/D4JgdH12dpnUo1+UjqxagsXsEJxt6tA6FiLzsT2daYHM4cX+x/yXDw4LNuHNZKt4ub8Owza51OJrggo4MpbK1HxWt/fjoKv+8YQKAj6xMw5nGXtR2DGodChF50Ssnm5EWF4512Qlah3JddiyZh7BgE149FbhZcCKjeulEExalxmDx/FitQ7ku965Iw7DNgT3l7VqHogku6MhQ/niyCcFmwd0r/HdBd/eK+RABXuOndESG0d4/ikMXO3DfyjSYTKJ1ONclKjQItxbNwxtnW2Gz80w6IqOobhvA2aY+3O9HzVCmWpNlQVpcOP4YoAknLujIMOwOJ1491YLNBcmwRIZoHc51S4kJw4bcRLx2qpl7VYgM4rVTzXAq4CN+XD0AAPetTEPv8DgOXujQOhQi8pKXTzQiyCS4Z8V8rUO5biaT4L6VaTh0sQPW/lGtw5lzHi3oRGSHiFSLSI2IPDHN44+JyDkROS0ih0SkaNJjX3M/r1pEtnszeKLJ3rvYic7BMXzUjzNME+5dmYaG7mHuVbkGzk3kD5RSeOVkE1ZlxCEnKUrrcGZlY34iEiJD8OopdrskMoKJZPiWwmQkRIVqHc6s3LsyDU4F7DwTeBVO11zQiYgZwNMAbgNQBODByTdFbs8rpZYqpVYA+D6AH7mfWwTgAQCLAewA8FP36xF53csnXe12Nxckax3KrHGvyrVxbiJ/cb65HxfaBw2RbAo2m3DX8vnYV2lF/+i41uHoGhNO5A+OXu5G5+AY7lvp39UDAJCXHIVFqTHYda5V61DmnCef0JUAqFFK1SqlbABeAHDP5AFKqf5JP0YCmKgTuwfAC0qpMaXUZQA17tcj8qrBMTv2VbTjruXz/a7d7nSiQoOwtTAFb59vD+iDMq+BcxP5hddONyPEbMKdS/23nGmyu5anwmZ3orQyMJsPeIIJJ/IXO0+3ICo0CJsL/T8ZDgB3LJ2Hkw29aOkd0TqUOeXJnW8agMZJPze5r32IiHxBRC7BNSl9cYbPfVREykSkrKODdfk0c6WV7RizO3HXcmPcMAHA7UtT0Tk4hmOXu7UORa98Pje5n8/5ia6b06nw5tlW3LQwCbERwVqH4xUr0+MxLyYMb55t0zoUPWPCiXTPZnfirfOtuLUoBWHBxsgZ3L40FQDw1vnAmp88WdBN147rLz4yUEo9rZTKBfBVAN+Y4XOfVUoVK6WKk5KSPAiJ6MP+dKYV82LCsDojXutQvGZzYRLCgk0BWTrgIZ/PTe7nc36i63aioQdt/aO4a3mq1qF4jckkuG3pPLx7sQMDLLu8EibDSffeu9iB/lG7oZLhOUlRKJwXHXD3Tp4s6JoApE/6eQGAq+02fAHAvdf5XKIZ6xsZx7sXOnD70lS/bQc+nYiQIGwpTMZb59tYdjk9zk2ke2+caUFokAlbF6VoHYpX3bF0ouzSqnUoesVkOOnen860IC4iGBvyErUOxavuWJqKE/U9aO0LnLJLTxZ0xwHki0i2iITAVde9c/IAEcmf9OMdAC66v98J4AERCRWRbAD5AI7NPmyi/7a3oh02hxN3GigDPmGi7PJ4Hcsup8G5iXTN4VTYdb4NmwuSERUapHU4XrUqw1V2GWhZ8Blgwol0bcTmwN6Kdty2ZJ4heg9Mdvsyd9nlucApu7zmn6BSyg7gcQC7AVQCeFEpVS4i3xaRu93DHheRchE5DeArAB52P7ccwIsAKgC8DeALSimHD34PCmBvnG1BWlw4VqbHaR2K120uSGbZ5RVwbiK9O3q5Cx0DY4ZMNplMgh1L5uHAhQ4Mjtm1DkePmHAiXdtfZcWQzYG7lhmn3HJCbgCWXXqUMlRK7QKwa8q1Jyd9/6WrPPcpAE9db4BEV9MzZMOhi5347MZsiBin3HJCZGgQNi10lV1+667Fhiop9QbOTaRnb5xtRXiwGVsM0j1uqjuWpeKXh+tQWtmOe1b4f8tzb1JK2UVkIuFkBvDcRMIJQJlSaidcCadtAMYB9GBSwklEJhJOdjDhRD7wpzMtSIyIbEDnAAAgAElEQVQKxdqcBK1D8Yk7lqbih3svoK1vFPNiw7QOx+eM9RkrBZzd5W2wOxXuNGCGacLty1LRMTCGsnoeMk7kL+wOJ94+34ati5IREWKscssJqzPikRITGlBZ8JlQSu1SSi1USuW6E0hQSj3pXsxBKfUlpdRipdQKpdRmd+XAxHOfcj+vQCn1lla/AxnTwOg49ldbceeyVJgNmij+oOzyfGDMT1zQkV9781wrMhMisCQtRutQfGZrYTJCg1h2SeRP3q/tQveQzdDJJpNJcNuSVByo7sAQyy6J/EZppRU2u9NQ3XenCrSySy7oyG91DY7h8KUu3Lks1ZDllhMiQ4OwqSAJu861wslul0R+4Y0zrYhy/901stuXpmLM7kRpFbtdEvmLt8+3ITk6FCvTjXPU03S2L56HsvoedA2OaR2Kz3FBR35rT0U7HE71wSGSRnbbklRYB8ZwtrlP61CI6BrsDid2V7Rh26JkwxzWeyXFmfFIjArB3op2rUMhIg+M2Bw4cMGK7YvnGX5f/i1FKVDK1QDG6LigI7+1u7wN6ZZwFKUat9xywuaCZJhNgr0VgdOCl8hfHavrRu/wOHYsmad1KD5nMgm2FCbjQLWrhIuI9O3ghQ6MjjsDYn5aPD8GqbFh2Fdp/IQTF3TklwZGx3G4pgvbi+YZutxyQmxEMEqyLNhXYfwsE5G/21PejtAgE25aaOxyywm3FM3DwKid52US+YE95W2IiwhGSbZF61B8TkSwbVEK3r3QidFxYzeK5YKO/NKB6g7YHE5sD4AM04RtRSmobh9AQ9ew1qEQ0RUopbCnvA035icZtrvlVBvzEhEaZGLZJZHO2exO7Ktsx9bCFASbA2MJsK0oBSPjDhy+1Kl1KD4VGH+aZDi7y9uQEBmCVRnG3tA72bZFrrOsAqF0gMhfnWvuQ0vfKLYvTtE6lDkTHmLGjfmJ2FvRDqXYuIlIr47UdqF/1B4Q5ZYT1uVYEBlixl6DVzhxQUd+Z8zuwIHqDtxSlGLY81Omk5kQiYUpUVzQEenYnvJ2mATYtihwFnSA6/dt7h1BVduA1qEQ0RW8Xd6GCHcCJlCEBplxc0ESSivbDd0pnAs68juHa7owOGbH9sWBk2GasG1RCo5e7kbf8LjWoRDRNHaXt6Ek24L4yBCtQ5lTWxYlQwTYx7JLIl1yOBX2lLdjc4Hxu+9OtW1RCqwDYzhn4E7hXNCR39lT0Yao0CDckJegdShzbltRChxOhQMXjF06QOSPajsGcdE6GJDJpuToMKxIj2MFAZFOnWroQefgWED1HpiwuSAZJjH2lhUu6MivOJwKeyvasakgCaFBgZVhAoAVC+J45hORTu0ud/29vDUAF3SAKwt+pqkP7f2jWodCRFO8fb4NIWYTNhcERvfdyeIjQ1CcZTH0vRMXdORXTjb0oHPQFrA3TCaTYGthCg5Wd/DMJyKd2V3ehqVpsUiLC9c6FE3cUuTaN1hayQoCIj1RSmF3RRs25CUgOixY63A0ccuiFFS1DaCx25idwrmgI7+yO4AzTBO2FaVgYMyOo5e7tA6FiNza+0dxurEXtxYFVjOUyfKTo5BhicDeijatQyGiSSpa+9HYPRJQ3S2n2uLuFH6g2pgJJy7oyG9MZJhuCOAME+A68ykkyIT9VcaclIj80R53KU8g7k+ZICLYUpiMw5e6DH+IL5E/2X2+LSC7706WkxiJdEs4DlR3aB2KT3BBR37D9VH5SEA2HJgsPMSMdTkJOGjQSYnIH+0pb0N2YiTyk6O0DkVTmwqSMGZ34kgtKwiI9GJ3eTvWZFmQEBWqdSiaERFsWmjchBMXdOQ3dpe3QQI8wzRh08Ik1HYOoaHLmLXgRP6kb3gc71/qwq2LUyASOGdjTmddTgJCg0yGzYIT+ZvG7mFUtw98sMc1kG0qSMLIuANldT1ah+J1Hi3oRGSHiFSLSI2IPDHN418RkQoROSsipSKSOekxh4icdn/t9GbwFFj2lLdjdUY8kqIDN8M0YZN7D2GgH1/AuYn04J1qK+xOhVuLArt6AADCgs1Yn5uAgxe4oCPSg4ntGVuZDMf63ASEmE2G3Ed3zQWdiJgBPA3gNgBFAB4UkaIpw04BKFZKLQPwMoDvT3psRCm1wv11t5fipgDT2jeCitZ+bGOGCQCQnRiJDEtEQGfBOTeRXpRWWZEQGYKV6XFah6ILmxYm4XLnEOq7hrQORVNMOJEelFZZkZMYiezESK1D0VxESBDW5lhwwIAJJ08+oSsBUKOUqlVK2QC8AOCeyQOUUu8opSZqv44AWODdMCnQvVPl+su3tTBZ40j0QUSwqSAJhy91GrIW3EOcm0hzdocTB6ut2FyYDJMpsMstJ2wqmOgmZ7ybJk8x4UR6MDRmx5FLXdjCe6cP3LwwCTXWQTT1GGvLiicLujQAjZN+bnJfu5LPAnhr0s9hIlImIkdE5N7pniAij7rHlHV0BO4/AHRl+6vakW4JR16ANxyYbFNBEkbHnTh2uVvrULTi87kJ4PxEV3eivgf9o3YmmybJSoxEVkKEIcuaZoAJJ9LcoZpO2BxOlltOMrFlxWhl4Z4s6KZLOappB4p8CkAxgB9MupyhlCoG8EkAPxGR3L94MaWeVUoVK6WKk5IC93wxmt7ouAOHajqxpSA54BsOTLY+x3V8QQBnwX0+NwGcn+jq9ldZEWwWbMxP1DoUXdlUkIz3a43ZTc5DTIaT5kor2xEdFoTirHitQ9GN3KQopMUZ7/gCTxZ0TQDSJ/28AEDL1EEisg3A1wHcrZQam7iulGpx/7cWwAEAK2cRLwWg9y91YXTciS3MMH3IxPEFAdwYhXMTaa60yoq12YF9NuZ0bnZXEBwN3AoCJsNJU06nwv6qDty8MAnBZja1n/DBlpWaTtjsTq3D8RpP/oSPA8gXkWwRCQHwAIAPbdAVkZUAnoHrhsk66Xq8iIS6v08EsAFAhbeCp8BQWtWOiBAz1mZbtA5FdzYtTEJtxxAau41VC+4hzk2kqfquIdRYB7k/ZRrrPzi+gAknNyacaE6da+5D5+AYti7i/DTVpoJkDNkcKKs3TsLpmgs6pZQdwOMAdgOoBPCiUqpcRL4tIhMbdX8AIArAS1M6Mi0CUCYiZwC8A+B7SineNJHHlFLYX2nFxrxEhAWbtQ5Hdz44viAAb5o4N5HW/rsdOG+YpgoLdlUQHDRYWdMMMOFEmiqtbIdJgE0LOT9NtT43AcFmMdT8FOTJIKXULgC7plx7ctL3267wvMMAls4mQAps1e0DaOkbxZe25Wsdii5NPr7g0+uztA5nznFuIi3tr7IiJykSmQlsBz6dTQVJ+Oc/VaChaxgZCRFahzOnlFJ2EZlIOJkBPDeRcAJQppTaiQ8nnACgwd3RchGAZ0TECVfinQknmrHSKitWZ8YjPjJE61B0Jyo0CMWZFrx7sRNf0zoYL/FoQUekldJKV9JycwEzTNMREdy0MBF/PNmMcYeTdfJEc2RwzI6jtd14+IbMaw8OUDctdFUQvFfTgYcSAu9/JyacSCttfaMob+nHV3cUah2Kbm3MT8QPdlejY2AMSdGhWocza7z7I13bX2XFsgWxSI4J0zoU3dqYl4RhmwOnGnq1DoUoYBy66GoHvqWQzZquJCcxEvNjw3DoYqfWoRAFFJaDX9vGPFdn4sOXjDE/cUFHutU9ZMPJhh5+OncN63MTYBLg0EXj1IIT6d3+KrYDvxYR13EOhy91weGctsEjEflAaaXr7N58nt17RUvSYhEbHmyYhBMXdKRbB6qtUIoZpmuJDQ/GsgVxOFRjjEmJSO/YDtxzG/IS0TcyjvPNfVqHQhQQRmyus3u3Fqbw7N6rMJsEG/IScKimE0r5f8KJ/xKRbpVWWZEUHYol82O1DkX3bsxPxJmmPvSPjmsdCpHhsR245za4y5qYcCKaG+/XdmLM7uRxKh7YmJeE1r5RXOoY0jqUWeOCjnRp3OHEuxc6sKUgGSYTM0zXsiEvEQ6nwpFLXVqHQmR4pVVWmAS4me3ArykxKhSLUmMMU9ZEpHf7Kq2IDDFjbQ7P7r2WG/PdCScDbFnhgo50qayuBwOjdmxhBtwjqzLiER5sZhacaA7sr2rHqox4WNgO3CM35ifiRH0PRmwOrUMhMrSJs3tvzE9CaBDP7r2WdEsEMiwROFTj/8lwLuhIl/ZXtSPEbPqgCxFdXUiQCWtzLFzQEflYe/8ozjf3M9k0AxvyEmFzOHGsrlvrUIgMraK1H239o5yfZmBjfiKO1HZh3OHUOpRZ4YKOdKm0yoq1ORZEhvKoRE9tzEtEbccQWnpHtA6FyLDecbcD5/4Uz5VkWRBiNuHPTDgR+dT+SitEeHbvTNyYl4jBMTvONPr30U9c0JHuXO4cQm3HELbyhmlGNuaz+QCRr5VWWZEWF46ClGitQ/Eb4SFmrM6Mx3vcR0fkU/uqrFi+IM4QB2XPlRtyE2ES+P38xAUd6c7+DzLgPLB3JgpSopEYFcrmA0Q+MjruwKGLndhSmMx24DO0MT8Rla396BgY0zoUIkPqGBjDmcZeJsNnKDYiGEsNcPQTF3SkO/ur2pGfHIWMhAitQ/ErIoKNeQn4c00nnDzEl8jrjtR2YWTcwf0p12Gim9zhS/5900SkV+9Uu5PhnJ9m7Ma8RJxu7MWAHx/9xAUd6crA6DiOXe7mhHSdNuYnoWvIhqq2Aa1DITKc/VVWhAebsT4nQetQ/M7i+bGIDQ9mBQGRj5RWtiM1NgxFqTFah+J3bshNgMOpUFbXo3Uo140LOtKVQxc7Me5Q2Mpyy+uy8YNDfP3/TBUiPVFKobTSig15iQgLZjvwmTKbBBvcFQRKsYKAyJvG7A68x3Lw67YqMx4hZhPer/Xf4wu4oCNdKa2yIjY8GKsy4rQOxS/Niw1DXnKUIc5UIdKTC+2DaO4dwVZWD1y3DXmJaOkbRW3nkNahEBnK0dpuDNscnJ+uU1iwGSsz4vy6JJwLOtINp1PhnSorbl6YhCAz/695vTbmJeLY5S6MjvMQXyJvmWjWxHbg1+/GvCQA4PEFRF62v8qKsGATbsjl2b3X64bcRJS39KNv2D/30fGumXTjTFMvuoZszDDN0sa8RIyOO3Gy3n9rwYn0Zn9VOxbPj8G82DCtQ/FbGQkRSLeE+317cCI9UUphX2U7NrIcfFbW5yZAKeDoZf+scPJoQSciO0SkWkRqROSJaR7/iohUiMhZESkVkcxJjz0sIhfdXw97M3gylv1VVpgEuHlhktah+LW1ORaYTeLXteCe4txEc6FnyIYT9T1sB+4FG3ITcbS2Cw524iXyiovWQTT1jPCop1lanh6LsGATDl/yz3unay7oRMQM4GkAtwEoAvCgiBRNGXYKQLFSahmAlwF83/1cC4BvAlgLoATAN0Uk3nvhk5Hsr7KiONOCuIgQrUPxa9FhwViSFov3/XRS8hTnJporBy90wKmALYt4wzRb63MT0D9qR2Vrv9ah+BwTTjQXSisnzu5lwmk2QoPMKM604IifJsM9+YSuBECNUqpWKWUD8AKAeyYPUEq9o5Qadv94BMAC9/fbAexVSnUrpXoA7AWwwzuhk5G09Y2ivKWfxxV4yfqcBJxp6sWwza51KL7EuYnmRGmVFYlRIViWFqt1KH5vnfvIByacADDhRF5QWslycG9Zn5uAqrYBdA2OaR3KjHmyoEsD0Djp5yb3tSv5LIC3ZvJcEXlURMpEpKyjg+3WA9FEwwGWNHnH+twEjDv8+0wVD/h8bgI4PwW6cYcTB6ut2FyQDJOJ7cBnKyUmDDmJkYFQEs6EE/lc95ANJxt6sJXVA16xPteVcDpS261xJDPnyYJuun/Bpi1+F5FPASgG8IOZPFcp9axSqlgpVZyUxP1TgWh/VTvSLeHIS47SOhRDKM6MR5Dx99H5fG4COD8FuhP1PegftbNZkxety03AscvdsDucWofiS0yGk88dvGCFUzEZ7i1L02IRGWLG+7X+17jJkwVdE4D0ST8vANAydZCIbAPwdQB3K6XGZvJcCmyj4w4cqunElgIeiOktkaFBWLbA8PvoODeRz71TZUWwWbAxn4t5b1mfk4DBMTvOtxh6Hx2T4eRzpZVWJEWHYinLwb0i2GxCSbbFL++dPFnQHQeQLyLZIhIC4AEAOycPEJGVAJ6B64bJOumh3QBuFZF4d/33re5rRB94/1IXRsedbDjgZetzE3CuuQ+DY4bdR8e5iXyutMqKdTkJiAoN0joUwwiQfXRMOJFPjTucOHihA5sLklgO7kXrcxNwqWMI1v5RrUOZkWsu6JRSdgCPw3WzUwngRaVUuYh8W0Tudg/7AYAoAC+JyGkR2el+bjeA78B143UcwLfd14g+UFrVjogQM9ZmW7QOxVDW5yTC4VQ4ftmYf+U4N5Gv1XcNocY6yO5xXpYUHYr85Ci/7SbnISacyKeOX+7GwKid++e8bH2O63B2f9uy4lHKUSm1C8CuKdeenPT9tqs89zkAz11vgGRsSinsr7TyQEwfWJ0Zj2Czax/dZoPekHJuIl9iO3DfWZ+bgJdPNGHc4USw2aMjcf2KUsouIhMJJzOA5yYSTgDKlFI78eGEEwA0KKXuVkp1i8hEwglgwommUVplRUiQCRvzErUOxVCK5scgJiwI71/qwj0rrrbtVV9YQ0KaqmobQEvfKL60LV/rUAwnPMSMlenxRs+CE/nM/ior8pKjkJkQqXUohrMuJwG/fr8eZ5v6sDrTmB35mXAiX1FKobSyHetzEhDJcnCvMpsEa3MS/O4TOuOlxcivTBxXsLmAGXBfWJebgPPNfegfHdc6FCK/MjA6jqOXu9g9zkcm9tEx4UQ0c5c6hlDXNYxt7L7rE+tzElDfNYzm3hGtQ/EYF3SkqdLKdixbEIvkGB6I6QvrcxLgVMAxPzxThUhLhy52YtyhWG7pI5bIEBTOizZ6YxQinyitbAcANpPzkYnz6PxpfuKCjjTTNTiGU429vGHyoZUZcQgJMvld6QCR1kqrrIgJCzJsOaAerMtJQFl9N8bsDq1DIfIrpVVWLEqNQVpcuNahGFJBSjQskSF+VUHABR1p5kB1B5QCthYyw+QrYcFmrM6I96ssE5HWnE6Fd6qs2FSQjCADNuzQi/W5CRgdd+JMY5/WoRD5jd5hG07U97Ac3IdMJsGarHgc86Mu4fyXijSzv8qK5OhQLJ4fo3UohrY+NwGVbf3oHbZpHQqRXzjT1IuuIRu2cn+KT63NtkDEv8qaiLR2oLoDDqfi/ORjJdkJaOgeRmuff+yj44KONGGzO/HuhQ5sKUzmgZg+tj43AUoBR7iPjsgj+6usMAlw88IkrUMxtLiIECyaF4P3azu1DoXIb+yrbEdiVCiWL4jTOhRDmzgb2V8+peOCjjRRVteNgTE798/NgeUL4hAWbPKrWnAiLZVWWlGcaUFcRIjWoRje+twEnGzoxeg499ERXcu4w4mDFzqwpTCJyXAfW5Qag+jQIBzlgo7oyiYOxNzAAzF9LiTIhOJMC8uaiDzQ2jeCitZ+bGE505xYn5MAm92JUw29WodCpHvH67oxMGrHVna39DmzSVDsR/vouKAjTeyvsvJAzDm0LseC6vYB9AxxHx3R1UycjcmGA3NjjXsfnb/cNBFpqbTSihCzCRuZDJ8TJdkJqLEOonNwTOtQrokLOppztR2DuNw5xA29c6gk23WmyvE63jQRXc3+SivSLeHIS47SOpSAEBsejEXzYnCsjhUERFejlEJpZTvW5zIZPldK3Pvoyvzg3okLOppzExnwzQVc0M2VZQtiERJkYhac6CpGbA4cqunE1sIUiHB/ylwpybbgRH0PbHan1qEQ6VZt5xDquoaxjcnwObM0LRbhwWa/aCrHBR3NudJKKwpSopFuidA6lIARFmzGyvQ4v9ncS6SF92s7MWZ3slnTHFubbcHouBPnmnkeHdGVlFa2AwC2cP/cnAkJMmFVZpxfJMO5oKM51TcyjuN13Ww4oIG12RaUt/RhYHRc61CIdKm00oqIEDPW5li0DiWgrPGz9uBEWthXaUXhvGikxYVrHUpAKclyneXbN6Lveycu6GhOvXexA3anYsMBDZRkJ8CpgBP1PVqHQqQ7Sinsr7LixvxEhAaZtQ4noCRGhSIvOQrHLnMfHdF0eodtOFHfg238dG7OlWRboBRwol7fCScu6GhO7atoR3xEMFZmxGsdSsBZlRmHIJMwC040jfKWfrT2jWJrIW+YtFCSbUFZXQ8cTqV1KES6c6C6Aw6nYjM5DazMiEOI2YSjOt9HxwUdzZlxhxOlVVZsXZQCMw/EnHMRIUFYuiCW++iIprGnoh0mAW+YNLI224KBMTsqW/u1DoVId/ZVtiMxKgTLF8RpHUrACQs2Y3m6/u+dPFrQicgOEakWkRoReWKax28SkZMiYheRj015zCEip91fO70VOPmfo7WuAzFvLWIGXCsl2RacberFiM2hdShewbmJvGVvRTuKMy1IiArVOpSANNEeXO83TURzbczuwIHqDmxblAITk+GaKMm24HxzH4bG7FqHckXXXNCJiBnA0wBuA1AE4EERKZoyrAHAIwCen+YlRpRSK9xfd88yXvJjeyvaEBZswo35SVqHErDWZlsw7lA41ej/++g4N5G3NHYPo7K1H7cuZrJJK6mx4ciwRBhqHx0TTuQNhy91YXDMju2L52kdSsAqyU6A3alwqqFX61CuyJNP6EoA1CilapVSNgAvALhn8gClVJ1S6iwAHiJD01JKYW9FO27MT0J4CBsOaKU4ywIR6L4W3EOcm8gr9lS42oHfwuoBTZVkW3DscjeU8v99dEw4kbfsKW9DZIgZN+QlaB1KwFqdGQ+zSXBUxwknTxZ0aQAaJ/3c5L7mqTARKRORIyJy73QDRORR95iyjo6OGbw0+Yvyln609I2y3FJjMWHBKEqNMUpjFJ/PTQDnp0Cwp7wNBSnRyEyI1DqUgFaSbUHP8DguWge1DsUbmHCiWXM4XcnwTYXJ7L6roajQICyZH6PrknBPFnTTFezOJH2WoZQqBvBJAD8Rkdy/eDGlnlVKFSulipOSWI5nRHvK29wNB7ig01pJtgUnG3pgs/v9PYTP5yaA85PR9QzZcLyum+WWOrDWWPvomAynWTvZ0IPOQRvLLXWgJNuC0429GB3XZw8CTxZ0TQDSJ/28AECLp2+glGpx/7cWwAEAK2cQHxnEnop2FGdZYIkM0TqUgLc224IxuxPnmvVbC+4hzk00a6VVVjgVcGsRb5i0lmGJwLyYMKNUEDAZTrO2p7wNIWYTNhfwz1drJdkJsNmdONvUp3Uo0/JkQXccQL6IZItICIAHAHi0QVdE4kUk1P19IoANACquN1jyTw1dw6hqG2C5pU6syXJlwY/4/z46zk00a3vK25AaG4YlaTFahxLwRMS9j67LCPvomHCiWVFKYXd5O27IS0B0WLDW4QS8kg96EOhzH901F3RKKTuAxwHsBlAJ4EWlVLmIfFtE7gYAEVkjIk0A7gfwjIiUu5++CECZiJwB8A6A7ymleNMUYPZUtAFgBlwvEqJCkZ8c5fdZcM5NNFsjNgfevdiBW4pSIMJ24HpQkm1Be/8Y6ruGtQ5ltphwolmpahtAQ/cw7510IjYiGAUp0ThWp897pyBPBimldgHYNeXak5O+Pw5X9mnq8w4DWDrLGMnP7aloR+G8aGQkRGgdCrmVZFvw+ukW2B1OBJk9Oo5Slzg30WwcqunE6LiTN0w6MrGP7tjlbmQl+m+TGqWUXUQmEk5mAM9NJJwAlCmldorIGgCvAogHcJeI/LNSajFcCadnRMQJV+KdCacAtLu8DSLsvqsna7MteOlEE8YdTgTr7N5JX9GQ4XQP2VBW181yS50pybZgcMyOytYBrUMh0sye8jZEhwVhbY5F61DILS85CpbIEEM0RlFK7VJKLVRK5SqlnnJfe1IptdP9/XGl1AKlVKRSKsG9mINS6rBSaqlSarn7v/+l5e9B2thd3o7VGfFIig7VOhRyK8lOwLDNgfPN+ttHxwUd+VRpZbur4QA7NOnK2mzXeTZ6PlOFyJfsDif2VbZjS2Gy7jKtgUxEUJJlwbE6zk0UuBq7h1HZ2s/uljqzJiseAHCivkfjSP4S/xUjn9pb0Y75sWFYPJ8NB/RkXmwYMhMiDJEFJ7oeJ+p70DM8znJLHSrJtqCxewQtvSNah0Kkid3l7t4DPE5FV5JjXPdOx3W4j44LOvKZYZudDQd0rCTLguN13XA6/b6bHNGM7aloR4jZhJvZDlx3Jkpg/b1xE9H12lPu6j2QmeC/+0iNqjjTgrK6Ht114uWCjnzmnaoOjI47sWNJqtah0DRKsi3oHR7HBSv30VFgcToV3jrXihvzExEV6lFvMJpDhfNiEB0WxAoCCkidg2Moq+/mVhWdWpMVj64hGy53DmkdyodwQUc+s+tcKxKjQlGSzYYDerQux7WPjllwCjSnm3rR0jeK25cy2aRHZpNgTZaFe3wpIL19vg1OBezggk6Xit1n+eqt7JILOvKJEZsD+6us2LEkBWYTyy31aEF8OObFhHFBRwFn19lWBJsF29h9V7fWZFlQ2zGErsExrUMhmlNvnm1FTlIkFqVGax0KTSM3KRKWyBAcr9NXYxQu6MgnDlRbMTLuwO0st9QtEUFxVjyO13XrrhacyFeUUnjrfBtuzE9CbHiw1uHQFZRku7rJlemwmxyRr1gHRnH0chfuXDafvQd0SkRQnBmPMn5CR4HgzXOtSIgMYbmlzpVkW9DeP4amHnaTo8BwurEXzb0jLLfUuSVpsQgJMuE4KwgogEyUW965jPOTnq3JsqCuaxjWgVGtQ/kAF3TkdaPjrnLL7UvmIYjnO+lacaY+a8GJfGXXOVe55S2LWG6pZ6FBZqxIj8NxfkJHAeSNs63IT47CwhSWW+pZ8cR5dDoqu+TdNnndgWorhm0O3MEMuO4VzItGdFiQ7mrBiYIOOgoAACAASURBVHxBKYVd59qwIS8RsREst9S7NVnxKG/uw7DNrnUoRD7X3j+K43XduIOfzune4vmxCAs26ereiQs68ro3z7XBEhmCtSy31D2zSbA6M56f0FFAONvUx3JLP1KcZYHdqXC6oVfrUIh8bte5ViiWW/qFkCATVqTHoaxeP/dOXNCRV42OO7C/sh3bF6ew3NJPrMmyoMY6iO4hm9ahEPnUrnOtCDIJbmV3S7+wOjMeItBVFpzIV94824rCedHIS2a5pT9Yk2VBeUs/hsb0UUHAO27yqgPVHRiyOZgB9yNr3Geq6K1jE5E3KaXw5rlWbMhLRFxEiNbhkAdiwoJROC+GFQRkeK19Iyir7+FWFT9SnGWBw6lwSicVBFzQkVftPNOMhMgQrHcfWk36t2xBLELMJrYHJ0M72dCLpp4RljP5mZKseJxs6IHd4dQ6FCKfefNsKwBw/5wfWZURB5Pop6kcF3TkNf2j49hXacVdy+ez3NKPhAWbsWxBrG4mJSJfeO1UM0KDTNixZJ7WodAMFGdZMGxzoKK1X+tQiHzm9dMtWDw/BjlJUVqHQh6KdlcQ6GUfHe+6yWvePt8Gm92Je1bM1zoUmqHiLAvONfVhxObQOhQirxt3OPHmuVZsK0pBdBi7W/qTiZJw7qMjo6qxDuBccx/uW5mmdSg0QyXZFpxq6MW4DioIPFrQicgOEakWkRoReWKax28SkZMiYheRj0157GERuej+ethbgZP+vH66GZkJEViRHqd1KDRDJdnxrm5yjfqoBfcU5ybyxHsXO9A9ZMO9K3jD5G/mxYYh3RLOPb5kWH882QyTAHczGe53irPiMWxzoFIHFQTXXNCJiBnA0wBuA1AE4EERKZoyrAHAIwCen/JcC4BvAlgLoATAN0UkfvZhk96094/i8KUu3LMiDSKidTg0Q6sz/O+Acc5N5KlXT7UgLiIYNy9M0joUug5rMi04XtcNpZTWocwIE050LU6nwuunW3BjfhKSo8O0DodmqDhTPxUEnnxCVwKgRilVq5SyAXgBwD2TByil6pRSZwFM/cxxO4C9SqlupVQPgL0AdnghbtKZnadboBRwLzNMfik2IhgFKdF+taAD5ybywOCYHXsr2nDH0lSEBHGXgT9ak21B56ANdV3DWofiMSacyBNHL3ejuXcEH1nF6gF/pKcKAk/+dUsD0Djp5yb3NU/M5rnkR1473YzlC2K5odePrcmOx8l6v+omx7mJrmlPeRtGx524l/tT/NaaLNda5vhl7W+aZoAJJ7qmV081ITLEjFuL2KzJX7kqCHo0ryDwZEE3Xf2cp1F79FwReVREykSkrKOjw8OXJr2osQ6gvKUf93B/il9bk2XBkM2BqrYBrUPxlM/nJoDzk7977XQLFsSHY3UGP+DwV7lJUYiPCPa3CgKfJ5w4N/m30XEH3jrXhtuWpiI8xKx1OHSdirMs6Bwc07yCwJMFXROA9Ek/LwDQ4uHre/RcpdSzSqlipVRxUhL3OPib1061wCTAnct5foo/++9ucn5z0+TzuQng/OTPrAOjOHSxA/esmA+TiXt7/ZWI4P+1d+/xcdV1/sdfnyRN2iZpkml6TS/T0nJpS69JKQguKgio0B8Xl3JRVt2He/G27q6ryP52lV1dXfkJq4sCIoL+/FGsFKwsyF3EIm3SC1BaWtImzaX3Jk3SpLnO9/fHnJQQkmaSZuacybyfj8c8MjPnzMx7TiafnO93vud7isOhZDtXZtw7nFSbktuz2w/S1NbJNRo9kNROjiDwed8plgZdKTDXzGaZWSawClgX4/M/DXzYzAq88d8f9u6TEaIr4nhsSy0X6oDepDc1fwxF+WN8L0qDoNokp7Ru6z4iDs1uOQKUhAuoONLMoaZWv6PEKiEdTpK8HttSy5S80ayYPd7vKHIazpiQQ/7YUb4fRzdgg8451wl8nujOzg7gV865N83sdjO7CsDMSsysBvg4cK+Zvek9tg74N6I7XqXA7d59MkKsLz9C7bET/HnxNL+jyDAoCRcEYix4LFSb5FScc6wurWbJjHzmTsr1O46cpu4RBJsCMJtcjNThJP062NjKS7sOs3JxkUYPJLm0NKN4ZgFlPtemjFhWcs49CTzZ675/6XG9lGgPUl+PfQB44DQySoA9UlpNwdhRXDpvkt9RZBgUh0M8vnUfe4+2EC7M9jvOgFSbpD+bq+opP3Sc7157rt9RZBjMn5rH6FFpbKys44pzgz+83znXaWbdHU7pwAPdHU5AmXNunZmVAI8BBcCVZvZN59x851ydmXV3OIE6nEacNWXVdEUc15dMH3hlCbyScIjndhziyPE2CnOyfMkQU4NOpC9Hj7fxzPYDfPL8MFkZOqB3JOh5HF0yNOhE+rN6YzXZmel8bKFOpTISZGaksWS6/73gg6EOJ+lLJOJ4eGM1F5wxnln6PzsiFHv7TmWV9Vy+wJ8ZS3VSHhmyx7bU0tGlHqaRZO7EHPLGjEqqnSaR3ppaO3ji9f1cuWgq2VnqtxwpSsIFvLmvgeNtnX5HERmyl71DVW5YPsPvKDJMFhSNIysjzdfj6NSgkyFxzvFIaTVLZ+Rzpo5PGTG6x4In0cQoIu/x29f2c6KjS51NI0zJrBARB1uq1OEkyevhDVWEsjP58HwdqjJSZGWks2h6PqU+zsSrBp0MyeaqY7x96DirStTDNNKUzAqx50gzR463+R1FZEgeKa3irEm5LJ6e73cUGUZLZhSQZlCqEQSSpA41tvLcjoNct2yaDlUZYUrCBbxZ20BLuz8jCNSgkyF5pLSK7Mx0Prow+Aeny+B0n1PF7yl4RYZi+75GXqtp4PqS6Zhp9riRJCcrg3lTx1FaodokyWnNpho6I45VGj0w4hSHQ3RGHFurjvny+mrQyaDp+JSRbUFRHlkZaeoFl6T0q7JqMtPTuFon6x2RSsIhtlTX09EV8TuKyKBEIo7VpVWsmB1i9oQcv+PIMFs6owDzcQSBGnQyaGs319LS3sUqHdA7InWPBdc3dJJsmts6eXRTDZcvmExBdqbfcSQOSsIhWjsibKtt8DuKyKC8XH6E6roT3HjeTL+jSBzkjRnFWZNyKdvrz76TGnQyKJGI46E/VbJoer6OTxnBSsIFbNvXSLNmk5MksnZLLU1tndxyQdjvKBInxSeHhGsEgSSXB9dXUJiTyWWaDGXEKgmH2Ly3nk4fRhCoQSeD8nL5EfYcbuZT2mEa0UrCIboijq3V/owFFxks5xwPvVLJuUV5LJ2hzqaRamLuaMLjx2omXkkquw8f58Wdh7l5xUxNhjKCFYcLaG7v4q0DTQl/bTXoZFAeeqWSwpwsPnKuJkMZyZbOjI4F36jJByRJrC8/Svmh4/zFBWFNhjLCFYdDlO2txznndxSRmDy4vpLM9DRu0nDLEa3EO8G4Hx1OatBJzCqPNPPizkPceN4MMjP00RnJxo0exTmTx/k2FlxksB58pZLx2Zl8bJE6m0a65eEQdc3t7D7c7HcUkQE1tHTw6001XLV4KhNys/yOI3E0NX8MRfljKPPhfHTaK5eYPfhKJRlpxk3naTKUVFASLmDz3mOaTU4Cr+JIM8+/dZAbls/QcKYU0H0cnYZdSjJYXVrFiY4uPvW+sN9RJAGWzSygrLIu4SMI1KCTmNQ1t7O6tIqVi4uYNG6033EkAYrDIU50dLF9X6PfUURO6b4/7GFUepomQ0kRswqzKczJVINOAq+ts4sH1ldw/uzxzJ+a53ccSYCScAEHG9uoqT+R0NdVg05i8vM/VdLaEeGv3j/b7yiSIH6OBReJ1aGmVh7dXMN1y6ZpOFOKMDOKZ4Y006UE3trNtRxsbONzH5jjdxRJkGJv3ynRh6yoQScDamnv5KFXKrnknInMnZTrdxxJkMl5o5keGqMGnQTag+sr6eiK8NmL1NmUSkpmhaiqa+FgY6vfUUT61NkV4Z6XdrNwWh7vmzPe7ziSIGdOyiU3KyPhJxhXg04GtKashvqWDv76z87wO4okWEk42guu2eQkiJpaO/jFq3u5YsFkwoXZfseRBCrRcXQScE9uO8Deoy387cVzNPNuCklPM5Z6x9Elkhp0ckptnV3c89Juls0sOPk1sqSOknCIo83t7Dmi2eQkeH7+p700tXaqsykFzZsyjrGZ6ZTq1CoSQJGI40cvljNnYg4fnqcTiaeaknABuw4ep6GlI2GvqQadnNIjpdXsb2jly5ec6XcU8UH3cXSJ7mkSGUhjawf3/WEPHzp7Igun6UTiqSYjPY2lMwrYqOPoJID+5439vHWgiS98cA5pafp2LtUsmxndd9pUlbh9p5gadGZ2uZntNLNyM/taH8uzzOwRb/kGMwt794fN7ISZbfUu9wxvfImn1o4u7n6xnOXhkMZ/p6gzJmRTMHZUwseCx0q1KXX97I+VNJzo4MuXqrMpVRWHC9h5oJHG1sT1gg+G6lNq6uyKcOezuzhrUi5XLpzqdxzxweLp+WSkWUL3nTIGWsHM0oG7gUuBGqDUzNY557b3WO0zQL1zbo6ZrQK+C1zvLdvtnFs8zLklAR7eWMXBxjbuvH6xxn+nKDOjOBwK5HEqqk2pq6Glg/v/uIfL5k9iQZGmAk9Vy8MhIg42763n4rMm+h3nXVSfUtfazbXsOdLMvZ9Ypm/nUtSYzHQWFOWxKYENuli+oVsOlDvn9jjn2oHVwMpe66wEHvKu/xr4kKkFkNSa2zq5+8XdrJgd4oIzCv2OIz5aHg6x92gLh4I3m5xqU4q69w+7aWrt5O80FDylLZ6RT3qaBfX0BapPKaits4v/ev5tFk3L07FzKa54ZgFba47R1tmVkNeLpUFXBFT3uF3j3dfnOs65TqAB6B6jN8vMtpjZS2Z2UV8vYGafNbMyMys7fPjwoN6AxMe9L+3myPE2/unys/2OIj4rPjmbXOB2muJem0D1KWhqj53gp3+sYOXiqZwzZZzfccRHYzMzWDB1XCBHEKB9p5T0s/WV1B47wVcuO1sjm1JccThEe2eEbbUNCXm9WBp0fX0ie89h3t86+4EZzrklwN8D/8/M3vMf2Dl3n3Ou2DlXPGHChBgiSTztbzjBfS/v4WMLp7B0RoHfccRnC4ryGD0qLYg7TXGvTaD6FDTf+91bAOpsEiC607S1OnG94IOgfacUc6iplR8+/zaXnDORC+dqZFOq6+4MT9QIglgadDXA9B63pwH7+lvHzDKAPKDOOdfmnDsK4JzbBOwGNEYm4L739E4iDr6qHSYBRqWnsWR6QRAbdKpNKea16mM8vnUff3nRLIryx/gdRwKgJByirTPCttpGv6P0pvqUYu54eiftXRFu++g8v6NIABTmZDGrMDtho5tiadCVAnPNbJaZZQKrgHW91lkH3OJdvw54wTnnzGyCd2AwZjYbmAvsGZ7oEg9bq4+xdnMtn37fLKaHxvodRwKiZFaIHfsbaQrWbHKqTSkkEnHc/sR2CnMy+ZuL5/gdRwLinV7wwHU4qT6lkDdqGlizqYa/uCDMrMJsv+NIQBTPLGDT3jqc6/3l/PAbsEHnjev+PPA0sAP4lXPuTTO73cyu8lb7KTDezMqJDg/onp73/cDrZvYa0QN+/9o5F7iqK1GdXRFuXfsGk8Zl8bkP6ES98o6ScAERB1uqjvkd5STVptSyurSaTXvr+erlZ5OTNeAEzZIiCnOymJ3AXvBYqT6ljs6uCF9b+zqFOVl84UNz/Y4jAVISDlHf0sHuw81xf62Y/is6554Enux137/0uN4KfLyPxz0KPHqaGSVBfra+kh37G7nn5qXkjh7ldxwJkCUzCkgzKK2s4/1nBudYDdWm1HCoqZX/eGoHK2aHuG7ZNL/jSMAUhwt4ZvtBIhEXqGniVZ9Sw/1/rODNfY38+KaljNO+k/SwrMcIgjkTc+L6WjGdWFxGvpr6Fr7/7C4uOWcil82f7HccCZicrAzmT80L4nF0kgL+7YkdtHVE+NbV52rmOHmPknCIYy0d7D583O8okmIqjjRz57O7uGz+JK44d4rfcSRgZhdmE8rOTMgIAjXohEjE8ZU1r2MG31y5QDtM0qficAFbqo7R3hnxO4qkkCff2M9vX9vH5z4whzMmxLeHU5JTSTgEBPLUKjKCdXZF+Mqa18hMT+P2lQv8jiMBZGYnj6OLNzXohJ+8vIc/7TnKN66cr5njpF/Lu2eT25eYc6qI7G84wa1r32DRtDz+Vsf1Sj9mjh9LYU6WRhBIQv3whXLK9tbz71cvYNK40X7HkYAqDhdQebSFw01tcX0dNehS3LbaBu54ZidXLJjMx4t1bIr0r9jrBQ/gbHIyAkUijn9c8xrtnRHuWrWEUen6dyV9MzNKwoE8tYqMUBsr6vjhC29zzdIiVi7ufb54kXd07zvF+1s6/YdMYQ0nOvjCw1sIZWfybR2bIgOYkBs9p8rGCg1rkvj74QvlrC8/yr9eOU/TgMuASsIhaupPsL/hhN9RZIQ71NTKFx/ewozQWA21lAEtmJpHVkZa3IeEq0GXoroiji+t3kJNfQt337iUguxMvyNJEugeCx6JxP+cKpK6nnnzAHc+t4trlhRxfcn0gR8gKU/H0UkitHZ08Ve/2ETDiQ7uvmmpTqEiA8rMSGPR9Py4j25Sgy5F3fHMTn6/8zDfuGr+ya+DRQbyzjlVNJucxMeug018+ZGtLJyWx7ev0cgBic05U3LJzkzXkHCJG+ccX1/7BluqjnHn9YuYPzXP70iSJErCBby5r5GW9s64vYYadCnooVcq+fHvd3PjeTO46byZfseRJFIyS73gEj819S3c8sBGxmRmcO8nljF6VLrfkSRJZKSnsXRmgWqTxIVzju889RZrt9Ty95eeyeULdIoCiV1xOERnxLG1+ljcXkMNuhTz2JYa/nXdm1w6bxK3XzXf7ziSZMLjx1KYk6nJB2TYHW5q4+b7N3C8rZOff3o5U/I0464MTvHMEG8daKThRIffUWSE+cHz5dz7hz18YsVMvvDBOX7HkSSzdEYBZlAWxw4nNehSyG+21vKPa17ngjPG88MblpChWeNkkKKzyYXUoJNhdbCxlZvv38DBxjYe/FQJ86aO8zuSJKGScAHOweYqfUsnw8M5x13P7eLO53Zx3bJpfPOq+RoGLoOWN2YUZ03KpWyvGnRymn62voIvrd5KSbiA+z5ZrKFMMmTFmk1OhlHFkWau/fEr1NS38NNbilk2U8f0ytAsnpFPRprpODoZFp1dEb7+2Dbueu5trl06je9eu5C0NDXmZGiWzSxg8956uuI0qZwadCNcR1eE23+7nW/+djuXzZ/Eg59arlmZ5LQs12xyMkxe2X2E6378Cifau3j4syu4YE6h35EkiY3NzGB+UZ5qk5y2+uZ2/vLnZTy8sYrPfeAM7vj4QtLVmJPTUBIOcbytk7cONMbl+dWgG8EONLRyw32v8sD6Cv7igjA/ukmTDMjpO2dKLmM1m5ychkjEcfeL5dx8/wbyx45izV+fz8Jp+X7HkhGgZGYBW6uP0dbZ5XcUSVKb9tbz0R+8zCvlR/nW1Qv4ymVna5ilnLbicAEQ/XzFg76qGYGcc6wpq+FbT+6goyvCD25YwlWLpvodS0aIjPQ0ls4oYGOFGnQyeOWHjvP1tW+wsbKOKxdN5TvXnEu2Rg3IMCkOh7j/jxVsq23Q8F0ZlOa2Tr7/7C5+tr6CooIxPPo3F3DuNJ2aQIZHUf4YJo8bTWllPZ88Pzzsz6//oiPMa9XH+I+ndvDqnjqWh0N859pzmT0hx+9YMsKUhEPc9fwuGk50kDdmlN9xJAk0nOjgvj/s5id/qGBMZjr/ed1CPr5smnq+ZVh194KXVtarQScx6Yo4Ht9Sy/ef3UXtsRPceN4Mvnr52frfJsPKzCgOF8RtdJMadCOAc47NVce496XdPLP9IAVjR/GtqxdwQ8kMHcArcVESLiA0NpOqoy3qwZRTOnK8jYc3VPGTl/fQ2NrJysVT+eePzmNCbpbf0WQEKszJ4uzJudQ1t/sdRQKutaOLda/t496XdrP7cDPzp47jrlWLKQmrI0Di47xZId4+eJzG1g7GjR7eDgM16JLYocZWntp2gF+VVfPmvkZyszL48iVn8ukLw+QO8wdFpKcVs8dT9s+X6NsV6VNbZxfry4/wm637eOqNA7R3Rfjg2RP5hw+fyfyp6gCQ+HryixepM1P6FIk4NlXV8z+v7+fxrbUca+ng7Mm53HPzUi6bP1n/0ySubl4xk0/EYbglxNigM7PLgf8C0oH7nXPf6bU8C/g5sAw4ClzvnKv0lt0KfAboAr7onHt62NKnmGMt7ZRV1rOxso4NFXW8XnMM5+Dsybn8+/9awNVLinQsiiREUHaWVJuCoaMrwvZ9jWysqGNjZR2v7jlKU2snuaMzuPG8Gdy8YiZzJmrotySG6pN06+iK8PbB45RW1rGxoo4NFUc5crydzIw0Lj1nEp84fybnzQqpIScJEc/P2YB7/2aWDtwNXArUAKVmts45t73Hap8B6p1zc8xsFfBd4HozmwesAuYDU4HnzOxM55ymn/J0RRwt7Z2caO+iub2L5rZO6prbOdTUxuGmNmqPtbD7UDO7Dx/nUFMbAJnpaSyclsfffehMPnLuZOZOyvX5XYgknmpTfDnnaOuM0NzWSUt7Fy3tXTSc6OBwUxuHmlo50NhKxeFm9hxpZu/RZjq6oufWCY8fy0cWTOHyBZN535xCMjM0mbKkHtWn+IlEHCc6uqKX9i6a2zs50tTOkePR/abDx9uoOtpC+eHjVB5pptM779fUvNFcOKeQD5w9kQ+dM0mncJIRJZZP83Kg3Dm3B8DMVgMrgZ5FaSXwDe/6r4H/tmgzdCWw2jnXBlSYWbn3fH863eCHGlu58f4NOBf9Qz15mj73zvWey7yrOG/pyds9zu8X0/rvekxfy96dx7n33td9pSMSobUjcsr3OW50BmdMzOH9Z07gjAk5LJ2Rz6Lp+Tr9gEhAaxPAPz/+Bq/uqcM5956/+/7qRPS2G7A29bs+vR/X1zL33ufo+dzefREX3WE61flPR6UbM8dnc8aEbC6dN4l5U8Zx3qwQE8eN7v9BIqkjkPVpw56j3Pb4tpj3naK3u1d5Z5/H9aoNfe779LGP1PN2fzXqPc/T4772zghtnafeb8rKSKOoYAxzJuRw6bxJnDUpl+JwAdMKxp7ycSLJLJYGXRFQ3eN2DXBef+s45zrNrAEY793/aq/HFvV+ATP7LPBZgBkzZsQUfFR6Gmd1fzNl7/qBmfW4/s6y7q86T37heXKZvWu9dz+ux7IeD4xp/R556GO9jHRjbGY62ZkZjMlMJzsrnTGjMhifk8nE3CwKc7I0hFKkf3GvTTC0+lSUP5azJnV4T/DeWhCtRycXv2dZz9qEt25ftebksl5F7d1171TP9e7hH9Fl0Ro2NjM9WpcyM6J1KiuD3NEZTMjNYmLuaPLHjArM0DaRAArkvlN2Vsag9526l/W8jb27prx73e7bfe8/9X5MXzWqr9eGaGNtTGY6Y0aln/w5NjODwpxMCnOzmJCbRW5WhoZQSsqJpbXQ119F737b/taJ5bE45+4D7gMoLi4+RZ/wOwqyM7n7pqWxrCoiI1PcaxMMrT79zcVnxLKaiIxcgdx3WlCUp30nkREoloMbaoDpPW5PA/b1t46ZZQB5QF2MjxURGQrVJhEJKtUnEUmYWBp0pcBcM5tlZplED9Rd12uddcAt3vXrgBdcdNDzOmCVmWWZ2SxgLrBxeKKLSIpTbRKRoFJ9EpGEGXDIpTeu+/PA00Sn3n3AOfemmd0OlDnn1gE/BX7hHbhbR7Rw4a33K6IHAXcCn9MsTSIyHFSbRCSoVJ9EJJHM9Z6qyGfFxcWurKzM7xgiMszMbJNzrtjvHKdD9Ulk5FFtEpEgGkxt0gmCREREREREkpQadCIiIiIiIklKDToREREREZEkpQadiIiIiIhIkgrcpChmdhjYG+PqhcCROMYZiiBmAuUajCBmguTPNdM5NyHeYeJpEPUp2X9XiRTETKBcgxHETKDa1Jdk/10lWhBzBTETKNdgDHttClyDbjDMrCxoM1MFMRMo12AEMRMoVzIJ6jYJYq4gZgLlGowgZoLg5vJTULeJcsUuiJlAuQYjHpk05FJERERERCRJqUEnIiIiIiKSpJK9QXef3wH6EMRMoFyDEcRMoFzJJKjbJIi5gpgJlGswgpgJgpvLT0HdJsoVuyBmAuUajGHPlNTH0ImIiIiIiKSyZP+GTkREREREJGWpQSciIiIiIpKkkrJBZ2aXm9lOMys3s6/5mGO6mb1oZjvM7E0z+5J3f8jMnjWzt72fBT5kSzezLWb2hHd7lplt8DI9YmaZPmTKN7Nfm9lb3jY7PyDb6sve72+bmT1sZqP92F5m9oCZHTKzbT3u63P7WNQPvL+B181saQIzfc/7Hb5uZo+ZWX6PZbd6mXaa2WXxyBRkqk0xZVNtij2XatPgc6k+9SMI9SnItcnLofoUWybVpsHnimttSroGnZmlA3cDVwDzgBvMbJ5PcTqBf3DOnQOsAD7nZfka8Lxzbi7wvHc70b4E7Ohx+7vAnV6meuAzPmT6L+B3zrmzgUVePl+3lZkVAV8Eip1zC4B0YBX+bK8Hgct73dff9rkCmOtdPgv8OIGZngUWOOcWAruAWwG8z/4qYL73mB95f68pQbUpZqpNMVBtGnIu1ac+BKg+Bbk2gerTgFSbhpwrvrXJOZdUF+B84Oket28FbvU7l5flN8ClwE5ginffFGBngnNMI/oh/iDwBGBEz0if0dc2TFCmcUAF3kQ8Pe73e1sVAdVACMjwttdlfm0vIAxsG2j7APcCN/S1Xrwz9Vp2NfBL7/q7/haBp4HzE/n79POi2hRTDtWm2HOpNg0hV69lqk/vvN9A1qeg1CbvdVWfYsuk2jSEXL2WDXttSrpv6Hjng9StxrvPV2YWBpYAG4BJzrn9AN7PiQmOcxfwsaXkuwAABjRJREFUT0DEuz0eOOac6/Ru+7HNZgOHgZ95wxnuN7NsfN5Wzrla4A6gCtgPNACb8H97detv+wTl7+DTwFPe9aBk8ksg379q04BUm4Ym6LUJVJ96Ctz7D1htAtWnmKg2DYthr03J2KCzPu7z9dwLZpYDPAr8nXOu0ecsHwMOOec29by7j1UTvc0ygKXAj51zS4Bm/BtScZI3tnolMAuYCmQT/Vq+t6Cd38P336mZ3UZ0+Mwvu+/qY7Wgbbd4Ctz7V22KiWrT8ArC71T16b0C9f6DVJu8PKpPMVJtOs0QcapNydigqwGm97g9DdjnUxbMbBTRovRL59xa7+6DZjbFWz4FOJTASO8DrjKzSmA10aEDdwH5ZpbhrePHNqsBapxzG7zbvyZapPzcVgCXABXOucPOuQ5gLXAB/m+vbv1tH1//DszsFuBjwE3OGyPgd6YACNT7V22KmWrT0ASyNnl5VJ/eKzDvP4C1CVSfBkO1aYjiWZuSsUFXCsz1ZtPJJHog4To/gpiZAT8Fdjjnvt9j0TrgFu/6LUTHiCeEc+5W59w051yY6LZ5wTl3E/AicJ0fmbxcB4BqMzvLu+tDwHZ83FaeKmCFmY31fp/duXzdXj30t33WAZ/0Zm1aATR0DzGINzO7HPgqcJVzrqVX1lVmlmVms4geeLwxEZkCQrXpFFSbBk21aQhUn/oViPoUxNoEqk+DpNo0BHGvTfE6GDCeF+AjRGeI2Q3c5mOOC4l+Lfo6sNW7fITouOvngbe9nyGf8l0MPOFdn+19QMqBNUCWD3kWA2Xe9nocKAjCtgK+CbwFbAN+AWT5sb2Ah4mOR+8g2mPzmf62D9Gv6O/2/gbeIDrbVKIylRMd7939mb+nx/q3eZl2Alck+nfp90W1KeZ8qk2x5VJtGnwu1af+t5fv9SnotcnLqPo0cCbVpsHnimttMu+JREREREREJMkk45BLERERERERQQ06ERERERGRpKUGnYiIiIiISJJSg05ERERERCRJqUEnIiIiIiKSpNSgk6RhZhebmTOzQr+ziIj0pPokIkGk2pQa1KCTITGzCWb2IzOrNLM2MztoZs+b2aXe8koz+0e/c4pI6lF9EpEgUm2SeMnwO4AkrUeBsbxzssSJwJ8RPaGjiIifVJ9EJIhUmyQu9A2dDJqZ5QMXAV9zzj3vnNvrnCt1zt3hnFttZr8HZgLf877mdz0ee42ZveH1TFWb2W1mZj2WZ5rZt81sr7fOHjP7Yj85sszsMTPbbGYT4/y2RSQJqD6JSBCpNkk8qUEnQ3Hcu1xlZqP7WH4NUAPcDkzxLpjZMmANsBY4F/gacCvw+R6PfQj4JPD3wDlEe7GO9X4BMxsH/A4IARc75w4NxxsTkaSn+iQiQaTaJHFjzrmB1xLpxcyuBX5CdOjAFmA9sMY5t8FbXgn8t3Pujh6P+SUwxTn3wR73fQP4S+fcNDObC+wCrnDO/a6P17wYeBGYB/xfoBb4c+dcazzeo4gkJ9UnEQki1SaJF31DJ0PinHsUmApcCTwFXAC8amZfP8XDziFavHr6I1Dk9RotASJEC8+pPEO0F+saFSQR6U31SUSCSLVJ4kUNOhky51yrc+5Z59ztzrkLgJ8C3zCzzH4eYkB/Xwk7b3ksngAuJDr0QETkPVSfRCSIVJskHtSgk+G0nejMqaOBdiC9j+UX9rrvQqDGOdcEbCb6mfzAAK/zv4F7gOfMbPHphhaRlKD6JCJBpNokp00NOhk0MxtvZi+Y2c1mttDMZpnZx4F/Ap53zjUClcBFZlZk75zM8v8Af2Zm3zCzM83sJuAfgP8EcM69DfwKuN/MrvWe9yIz+0TvDM6524B7iRamRXF/0yKSFFSfRCSIVJskrpxzuugyqAuQBXwbKAXqgRbgbeD7QMhbZwXwGtAa/ZidfOw1wBtEe6GqgdvwJufp8dz/SfSg3TZgN/B5b9nFRIcXFPZY/z+AI8Aiv7eLLrro4v9F9UkXXXQJ4kW1SZd4XjTLpYiIiIiISJLSkEsREREREZEkpQadiIiIiIhIklKDTkREREREJEmpQSciIiIiIpKk1KATERERERFJUmrQiYiIiIiIJCk16ERERERERJKUGnQiIiIiIiJJ6v8D4AjQHsjk6UAAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Smax = 120\n", "\n", "n = ns-2\n", "X = linspace(0.0, Smax, n+2)\n", "X = X[1:-1]\n", "\n", "payoff = clip(X-K, 0.0, 1e600)\n", " \n", "m = 4555 \n", "Fl = zeros((m+1,))\n", "Fu = zeros((m+1,))\n", " \n", "t = time.time()\n", "bs1 = BS_FDM_implicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs1.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time1:\", elapsed)\n", "\n", "#print px_fd_mat.shape\n", "\n", "figure(figsize=[15, 4]);\n", "subplot(1, 3, 1)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 1000\n", "Fl = zeros((m+1,))\n", "Fu = zeros((m+1,))\n", "\n", "t = time.time()\n", "bs2 = BS_FDM_implicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs2.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time2:\", elapsed)\n", "\n", "subplot(1, 3, 2)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "m = 100\n", "Fl = zeros((m+1,))\n", "Fu = zeros((m+1,))\n", " \n", "t = time.time()\n", "bs3 = BS_FDM_implicit(r, sigma, T, Smin, Smax, Fl, Fu, payoff, m, n)\n", "px_fd_mat = bs3.solve()\n", "elapsed=time.time()-t\n", "print(\"Elapsed Time3:\", elapsed)\n", "\n", "subplot(1, 3, 3)\n", "nrow = len(px_fd_mat[:,1])\n", "plot(X, px_fd_mat[nrow-1,:])\n", "xlabel('Stock', fontsize=14);\n", "title('nt = %.f'%m, fontsize=16);\n", "\n", "\n", "#print(px_fd_mat[nrow-1,:])\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Homework \n", "\n", "* Implement the FDM for Black-Scholes PDE using the Crank-Nicolson Scheme and test your code using the same example here for both the vanilla European Call and the Up-and-out Barrier Call.\n", "\n", "\n", "\n" ] } ], "metadata": { "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 1 }