Skip to content

Instantly share code, notes, and snippets.

@sanglee
Created June 8, 2016 13:34
Show Gist options
  • Save sanglee/97549d010d98ef8506fb4801edfba29e to your computer and use it in GitHub Desktop.
Save sanglee/97549d010d98ef8506fb4801edfba29e to your computer and use it in GitHub Desktop.
Exercise 05: PGD, AGD, and ADMM
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Large-Scale Optimization\n",
"===\n",
"\n",
"<br><br><br><br><br><br><br>\n",
"$\\newcommand{\\R}{\\mathbb{R}}\n",
"\\newcommand{\\E}{\\mathbb{E}}\n",
"\\DeclareMathOperator*{\\argmin}{arg\\,min}\n",
"\\DeclareMathOperator*{\\argmax}{arg\\,max}\n",
"\\newcommand{\\prox}{\\text{prox}}\n",
"$\n",
"\n",
"### U5. PGD, AGD, and ADMM\n",
"\n",
"** TU Dortmund University, Dr. Sangkyun Lee **"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Composite Objective\n",
"===\n",
"\n",
"Decomposition:\n",
"$$\n",
" \\min_{x\\in\\R^n} \\;\\; f(x) = \\underbrace{F(x)}_{\\text{convex, smooth}} + \\underbrace{\\Psi(x)}_{\\text{convex, nonsmooth, simple}}\n",
"$$\n",
"\n",
"Ex. Convex regularization problems\n",
" - LASSO: $f(x) = \\frac12 \\|y-Dx\\|^2 + \\lambda \\|x\\|_1$\n",
" - SVM: $f(x) = \\frac{1}{m} \\sum_{i=1}^m \\max\\{0, 1 - y_i(\\langle d_i, x \\rangle + x_0)\\} + \\lambda \\|x\\|^2$"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split",
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"PGD\n",
"===\n",
"\n",
"For $k=0,1,2,\\dots$:\n",
"\n",
"\\begin{align*}\n",
"x_{k+1} &= \\text{prox}_{\\alpha_k \\Psi} ( x_k - \\alpha_k \\nabla F(x_k)) \n",
"\\end{align*}\n",
"\n",
"Required Conditions:\n",
" - $\\alpha_k \\le \\frac{1}{L}$, \n",
" - $L$ is the Lipschitz constant of $\\nabla F$.\n",
"\n",
"Monotone convergence with rate:\n",
"$$\n",
"f(x_{k}) - f(x^*) \\le \\frac{\\|x_0 - x^*\\|^2}{2\\alpha k}\n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split",
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"AGD\n",
"===\n",
"\n",
"For $k=0,1,2,\\dots$:\n",
"\n",
"\\begin{align*}\n",
"y_k &= (1-\\theta_k) x_k + \\theta_k u_k \\\\\n",
"x_{k+1} &= \\text{prox}_{\\alpha_k \\Psi} ( y_k - \\alpha_k \\nabla F(y_k)) \\\\\n",
"u_{k+1} &= x_k + \\frac{1}{\\theta_k} (x_{k+1} - x_k)\n",
"\\end{align*}\n",
"\n",
"Required Conditions:\n",
" - $\\alpha_{k+1} \\le \\alpha_k \\le \\frac{1}{L}$\n",
" - $\\theta_0$ = 1, $\\frac{1-\\theta_{k+1}}{\\theta_{k+1}^2} \\le \\frac{1}{\\theta_k^2}$\n",
" - $u_0 = x_0$\n",
"\n",
"Non-monotone convergence with rate with $\\theta_k = 2/(k+2)$:\n",
"\n",
"$$\n",
"f(x_k) - f(x^*) \\le \\frac{2\\|x_0 - x^*\\|^2}{\\alpha (k+1)^2} \n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split",
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"AGD (Simple Ver)\n",
"===\n",
"\n",
"With $\\theta_k = \\frac{2}{k+2}$,\n",
"\n",
"\\begin{align*}\n",
"y_k &= x_k + \\frac{k-1}{k+2} (x_k - x_{k-1})\\\\\n",
"x_{k+1} &= \\text{prox}_{\\alpha_k \\Psi} ( y_k - \\alpha_k \\nabla F(y_k))\n",
"\\end{align*}\n",
"\n",
"$\\Leftrightarrow$\n",
"\n",
"\\begin{align*}\n",
"y_k &= (1-\\theta_k) x_k + \\theta_k u_k \\\\\n",
"x_{k+1} &= \\text{prox}_{\\alpha_k \\Psi} ( y_k - \\alpha_k \\nabla F(y_k)) \\\\\n",
"u_{k+1} &= x_k + \\frac{1}{\\theta_k} (x_{k+1} - x_k)\n",
"\\end{align*}\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split",
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Does this $\\theta_k$ satisfies $\\frac{1-\\theta_{k+1}}{\\theta_{k+1}^2} \\le \\frac{1}{\\theta_k^2}$ ?"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"cell_style": "split",
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"text/latex": [
"$$- \\frac{1}{4}$$"
],
"text/plain": [
"-1/4"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using SymPy\n",
"\n",
"@vars k\n",
"\n",
"θ = 2/(k+2)\n",
"θp = 2/(k+3)\n",
"\n",
"expr = (1-θp)/θp^2 - 1/θ^2\n",
"\n",
"simplify(expr)"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split",
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"AGD (FISTA)\n",
"===\n",
"\n",
"$y_1 = x_0 \\in \\R^n$, $t_1 = 1$\n",
"\n",
"For $k=1,2,\\dots$:\n",
"\n",
"\\begin{align*}\n",
" x_k &= \\prox_{\\alpha_k\\Psi} (y_k - \\alpha_k\\nabla F(y_k))\\\\\n",
" t_{k+1} &= \\frac{1+\\sqrt{1+4t_k^2}}{2}\\\\\n",
" y_{k+1} &= x_k + \\left( \\frac{t_k-1}{t_{k+1}} \\right) (x_k - x_{k-1})\n",
"\\end{align*}"
]
},
{
"cell_type": "markdown",
"metadata": {
"cell_style": "split",
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"Here, $\\theta_k = \\frac{t_{k+1}}{t_k - 1}$: does it satisfy $\\frac{1-\\theta_{k+1}}{\\theta_{k+1}^2} \\le \\frac{1}{\\theta_k^2}$ ?"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"cell_style": "center",
"collapsed": false,
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x31d214750>)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"1-element Array{Any,1}:\n",
" PyObject <matplotlib.lines.Line2D object at 0x31e9d2a90>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"tnext(t) = (1+sqrt(1+4t^2))/2\n",
"\n",
"tseq = function(n)\n",
" vals = zeros(n); vals[1] = 1\n",
" for i=2:n \n",
" vals[i] = tnext(vals[i-1]) \n",
" end\n",
" return vals\n",
"end\n",
"\n",
"using SymPy, PyPlot\n",
"\n",
"@vars t\n",
"tt = (1+sqrt(1+4t^2))/2\n",
"ttt = (1+sqrt(1+4tt^2))/2\n",
"θ = tt/(t-1)\n",
"θ2 = ttt/(tt-1)\n",
"\n",
"expr = (1-θ2)/θ2^2 - 1/θ^2\n",
"simplify(expr)\n",
"tvals = tseq(100)\n",
"expr_vals = map(expr, tvals)\n",
"plot(tvals, N(expr_vals))\n",
"# xlabel(\"t\")\n",
"# ylabel(\"expr\")\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"A: k=138, n=1000\n",
"\n",
"L = 1896.6593157280447\n",
"L = 1896.6593157280447\n",
"L = 1896.6593157280447\n",
"True signal: sparsity=10, dim=1000\n",
"Recovered signal: sparsity=10, mse=4.057473641809406e-5\n",
"[152,162,423,424,556,609,613,852,875,990][152,162,423,424,556,609,613,852,875,990]"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x31ffa3250>)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#\n",
"# Noisy Compressed sensing\n",
"#\n",
"using StatsBase, PyPlot\n",
"\n",
"include(\"../../julia/lasso.ISTA.jl\")\n",
"include(\"../../julia/lasso.FISTA.jl\")\n",
"\n",
"n=1000\n",
"s=10\n",
"x=zeros(n)\n",
"x[sample(1:n,s)] = rand([-1,1], s).*sqrt(log(n))\n",
"\n",
"k=round(Int, 3*s*log(n/s)) #3*s*log(n/s))\n",
"A=randn(k,n)\n",
"println(\"A: k=$k, n=$n\\n\")\n",
"\n",
"# noisy measurement\n",
"y=A*x + .1*randn(k)\n",
"\n",
"lam=10\n",
"maxiter=1000\n",
"eps = 1e-4\n",
"\n",
"# reconstruction\n",
"ista = lassoISTA(A, y, step=\"const\", lam=lam, maxit=maxiter, eps=eps, repf=true, repg=true);\n",
"simple = lassoFISTA(A, y, step=\"simple\", lam=lam, maxit=maxiter, eps=eps, repf=true, repg=true);\n",
"fista = lassoFISTA(A, y, step=\"const\", lam=lam, maxit=maxiter, eps=eps, repf=true, repg=true);\n",
"\n",
"z = ista[1]\n",
"println(\"True signal: sparsity=$(countnz(x)), dim=$n\")\n",
"println(\"Recovered signal: sparsity=$(countnz(z)), mse=$(vecnorm(x-z,2)^2/n)\")\n",
"sx=find(abs(x).>0)\n",
"sz=find(abs(z).>0)\n",
"print(sx)\n",
"print(sz)\n",
"\n",
"subplot(411); plot(1:n, x); ylabel(\"True signal\")\n",
"subplot(412); plot(1:n, ista[1]); ylabel(\"Recoverd (PGD)\")\n",
"subplot(413); plot(1:n, simple[1]); ylabel(\"Recoverd (AGD:simple)\")\n",
"subplot(414); plot(1:n, fista[1]); ylabel(\"Recoverd (AGD:fista)\")\n",
"PyPlot.subplots_adjust(hspace=.5)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA78AAAIvCAYAAAC88WxtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xd4VGXax/HvJJPMpAKhCAElEEBAKQIiuAgRFZGFWIDdDU1AFxbXFru+qxRREXVjRQUVUDQWlpJlBRUBUcClKbpKkd47BNInybx/HCYQk0zazJwk8/tcV64wp94TJifnPs/z3I/F6XQ6EREREREREanBAswOQERERERERMTblPyKiIiIiIhIjafkV0RERERERGo8Jb8iIiIiIiJS4yn5FRERERERkRpPya+IiIiIiIjUeEp+RUREREREpMZT8isiIiIiIiI1npJfERERERERqfH8JvkdM2YMjRo1IjIyktatW/Pee++ZHZKIiFfk5OQwevRomjZtSq1atejevTvff/+92WGJiHiN7vNEpCwsTqfTaXYQvrB582aaNWuG3W5n/fr1XHPNNWzevJmYmBizQxMR8aiMjAxeeuklRo0aRZMmTfjkk0+4++672b17N2FhYWaHJyLicbrPE5Gy8JuW3zZt2mC32wteR0ZGEh4ebmJEIiLeERoaypNPPkmTJk0A+POf/0xwcDDbtm0zOTIREe/QfZ6IlIXfJL8Ad911F6GhoVxzzTXMmDGDevXqmR2SiIjX/fbbb5w8eZIWLVqYHYqIiNfoPk9ESlMlk9/09HTGjx9P3759iYqKIiAggNmzZxe7bXZ2No8++ijR0dGEhobSrVs3li5dWuy206ZNIz09nU8//ZTRo0ezb98+b74NEZEy8dY1DyAzM5Nhw4bxxBNPEBER4a23ICJSZrrPExGzVMnk99ixYzz99NNs3bqVjh07AmCxWIrdduTIkSQlJTF8+HBeffVVAgMD6devH6tWrSp2e4vFwoABA7j66qtZuHCh196DiEhZeeua53A4GDx4MK1ateLJJ5/06nsQESkr3eeJiFmsZgdQnOjoaA4fPkyDBg3YsGEDV155ZbHbrV27lk8++YQXX3yRBx54AIDhw4dz+eWX88gjj5R4YQTjplCFX0SkKvDGNS8/P5/hw4cTGBhYYouKiIgZdJ8nImapki2/wcHBNGjQAAB3xajnzp2L1WplzJgxBctsNht33HEHa9as4cCBAwCcOXOGjz76iPT0dHJzc/nss8/4/vvvueGG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mzat0LKFCxeycuVKWrZsWeKYYJdRo0ZRu3ZtJk6cWGxV7Pz8/IJE+vfWrl2LzWajm+4eqq36YeeS34xzReHy8she+C9yLngI+MS3kBYM4TnGa0e+A0fe+S74dgfc9itQzHRfIiJVRYDN+DsdVcv4W37okJnRiIgvqOXXnYB8cnPBpmEgZbZixQp+++032rdvT5cuXUrc7o477mDy5MnMnDmTiRMnEhgYSO/evZk7dy633347o0ePZtKkSfTs2ZPo6GiysrI4ePAgS5cu5eTJk3To0IHatWsXOe6uXbsKijQ5HA6OHz/Ohg0b2LhxIxaLheHDh/PWW2+V+f10796d8PDwYufHff/995k+fTo9evSgefPm1KlThx07dvDvf/8bu93O/fffX+bzlKQi3bv79u3Lgw8+yOLFi2nfvj3bt29n3rx5hISE8N5775W6f1RUFHPnzuXWW2+lW7duXHfddbRt2xaLxcK+fftYs2YNp06dKvIQ4uzZs/z000/ExcVh0y9NteVq+T11bB/851VyLPlcf98rfHHD+W0eXg2PXwdhDrhjA/T7DTIfyywYI1w3A/71KTDqR+jb14R3ISJSOqvNmK0hOOAMAKdOmRmNiPiCkl83Hl13Si2/5fTOO+9gsVi488473W7XtGlTbrjhBpYuXcqiRYu4+eabAaOC8o4dO5g+fTqLFy/m888/5/Tp04SEhNCkSRMGDBjA4MGD6devX6Hjubr47t27l0mTJgHGFER16tShZcuWPPzwwwwdOpT27duX6/3Y7XYSEhKYMWMGO3fuLNSdd8iQIeTk5LB69Wo2bNhAZmYmTZo0YciQITz44IOFqj5bLJZixzG7G9tc0j6lrevWrRtPPfUUTz75JG+88QYA119/Pc8880yRSqIlHad379789NNPvPjii3zxxRd8++232Gw2oqOjuf766wvGal/oX//6F3l5eaZ09RbPCctxcuAlCHnnMdh/nL3dWtGC8628AF81h277ISwHGqbB1fuMrs+RNmNKLqfrI1XBsfkiIr4QaDemJczPPktEhJJfEX+g5NeNaw5mK/ktpzlz5jBnzpwybfvFF18UuzwqKorHHnuMxx57rMzn7dWrV6GK0J40btw4ZsyYwQcffMD48eMLlnft2pWuXbuW6Ri33357kcrXYLRUl8RVnKs4M2fOZObMmSWu79atG1999VWpcY0fP77Qe7pQ06ZNee2110o9hssHH3xA/fr1GTRoUJn3kSooLIy6GWA7exyAFt8bU1u1P1dH7Www9N1xfvN8C4Q64PgF434LUl4lvyJShQXZwgBwZJwlJgZ++cXceETE+zTm140Ap1PJr9CxY0cGDhzIG2+8UaHxxv5g/fr1LF++nH/84x8EBQWZHY5UhsXC6cjgIotv3WJ8f6k7bGx4fvlNv1kIdUBGzvnrfS+sAAAgAElEQVSpr9TyKyLVgTXEGPObk36Wzp1h82aTAxIRr1Py60aAEyW/AsCUKVNITU0t6EYshU2YMIEWLVowbtw4s0MRDzhTy17s8nF/hInXwvJmsNfo4UyL0w2xOmHJkjMF2zV3dR0sZqy8iEhVYQ0JIysQHNkZNGoEBw+aHZGIeJu6PbsRgFp+xRAbG0t2drbZYVRZixYtMjsE8aAztUOAM6y6GP6w7/xy19RG1nxItUPqtj04U+bDmPt5ftIpMvbAffcZDw4BPT0UkSrNelk7Qp6Ej2IbEr3fKFDvdIKbchwiUs0p+XVDLb9SncTFxXlt3LP4l/TaYZy0w/19Yd2M88tDzl0PrfmQGwDWOnWxhUcA0LPHGSZNgv/8B4IvMyFoEZFyCg40hnhk5mbSqBHk5MDJk1C3rsmBiYjXqNuzG4H5Sn5FpHp688036dSpE8HBwUycOLFc+17csjMnQ2B9tPH6tyjje1Ce8T3QlfwGWAk8N1XImNFZrF0Lu3efP86ePXD8eCXfiIiIlwQGBBIUEERWbhaNGhnLNNevSM2m5NcNtfyKSHUVHR3NxIkTGThwoNsptYrTLNNGi1OQ/w8HzqAgQh3G8sdWQc/dRstvnsVIfi3NY0nqBlnBAXTqBFu3wglj9hCGfnYzF10El18ON98Mq1d79j2KiFSW3WovlPxq3K9Izabk140VMRYcDrOjEBEpv5tvvpkBAwZQu3ZtnOWtuvzCC/Dhh1isVixBQYTmnk+e3/jP+W7PAZYAAttexgN9ITPCaAGuXRtcW3+UHMDbb8O118KuXdC7N6xY4Zn3JyLiCb9PftXyK1KzacyvG+OvhT5ZZkchIuJjDRvCkCHGv8eOpU5SUqHVf40HG4GkWSxYA4w/I468808KLedy7UuaWrizu/Hv7Gzo3x/69IGPP4bbbvP6uxARKVVIUAiZjkzsduPhnZJfkZpNLb/uWJycTVe/ZxHxrvT0dMaPH0/fvn2JiooiICCA2bNnF7ttdnY2jz76KNHR0YSGhtKtWzeWLl3qveD++c9CL2NPQcxpyLMZ8zkHBRjfHfkXJL8F/zjfYmyzwb//DfHxcPvtmk9TRKoGV8svQKNGSn5Fajolv6VITc8xOwQRqeGOHTvG008/zdatW+nYsSNAieN0R44cSVJSEsOHD+fVV18lMDCQfv36sWrVKu8F2KgRjsvbAkbF539+QUGLb2BAIBYs5Oaff1B4IALG9AeaNSt0GLsdZs2CSy6BW26BAwe8F7KISGkSExM5NP0QPy39CYAmTWDvXpODEqnhkpOTiY+PJzEx0ZTzK/ktRWqa5nYVEe+Kjo7m8OHD7Nq1ixdeeKHE7dauXcsnn3zClClTeP7557nzzjtZtmwZTZs25ZFHHilxv/IWvCrCaiVw3/7zL/PPJ79g/PvCbs+nQmFGF+Cii4ocKjwcFi6EzEwYMMCYWkRExAxJSUl8FhLErRbj4V1sLOzYYXJQIjVcQkICKSkpJP1uSJWvKPl1ZwkkTf0LycnJZkci4jfMfiJohuDgYBo0aADgtjjV3LlzsVqtjBkzpmCZzWbjjjvuYM2aNRy4oCk1Ly+PrKwscnNzcTgcZGVlVXweaKsVS25ewcvA/PPdnQGCAoMKtfyWpkULWLAA/vc/GDlSCbCImKfztjTq7zkGGNemnTuhvDUCRaT6UPLrTl/48+gZJCQkmB2JiN8w+4lgVfbDDz/QqlUrwsPDCy2/8sorAfjxxx8Llj399NOEhoby7rvv8swzzxAaGsqcOXPKf9L77zdKNV8w71u9DKO7s0tQQBDOjHTy9+8r82E7dYIPP4S5c2HoUMjLK30fERFPywkOJDDT6OUXGwvp6XDkiMlBiYjXKPktxdkMdXsW+O233wgODmbq1KlF1q1fv54bbriBevXqERAQwBVXXAEYYzMDAgLYW0UGEN19991ERUVx6tQps0ORCjp06BCNXPNxXMC17OAFE1ROmDCB/Pz8Ql8jRowo/0mPHy+yqNNhcKanGy/y82ly1sKVDyURcPElHDy1l6BcSP4M+O47t4cePBg+/RTmzTNybLW2iIivZduDCMw6n/yCuj6L1GRKft1xQlqm5jqqrGeeeYaAgAACAgLYtm1bqdufPHmSKVOmEBcXR4MGDbDZbERGRnL55ZczevRoFi1aVGSfFStWFJzD9RUWFkZ0dDS9evXikUceKdQqVl6PPvooderU4e677y60/MyZM/zxj39k/fr1DBkyhAkTJjBu3DjAGGdZmbGWcXFxBAR47lf0iSeeIDMzk6efftpjxxTfyszMxGazFVlut9sL1nucq8X3d12m220/a/wjNZX/PXuaP/xgJMm/rl9MoBP+8guwZ0+ph7/lFpg2DV5/HR58sOQEODcX0tLg6FGjITpbzyVFxAMc9iCCMo2xF82bG8u2bzcxIBHxKs3z68aGGfDZqM1AO7NDqbacTifvvPNOwesZM2a4LeiTkpLC7bffTmpqKs2aNaN///40atSInJwctm/fzoIFC5g1axaDBg3i008/LbJ/TEwMI0eOBCAnJ4djx46xYcMGXnzxRV588UWGDBnC22+/TVhYWJnfw8aNG1mwYAHjx48nNDS00Lq1a9dy7Ngxnn32WR577LFC65577jkef/xxoqOjy3yu36t0oaILREdHM3ToUKZNm8YjjzxCw4YNPXZs8Y2QkBCyi8n6srKyCtZXRmJiIrVq1Sq0LGHXLhIAmjcja/s26jwG44KvJqH/aGOD3/0upR/ZT0H+Wsam3LFjjeT27ruNccBt2xqzJP38M2zdakw98vtu0RaLUUy6XTvo18/Yf8UKo1LroUPG1Eq33gqDBkHnzuDB50gilZacnFyknkhqaqpJ0fg3hz0Ya5aR/IaFGdMdqeVXpOZS8luK3Mx0s0Oo1r788kv27NnDiBEjWLx4MbNnz+bZZ58lKCioyLZff/01AwcOJDg4mHfffZdRo0YV2SY7O5s5c+bw1VdfFXu+mJgYnnrqqSLLN23axIgRI/joo484efIkn3/+eZnfw5tvvgnA8OHDi6xzdTMtritqw4YNq1yCOWzYMN577z3ee+89nnjiCbPDkXJq1KhRoa7NLofOTUxZmQctYFQ+7dSpU+GFrgcwTS7GvnUbWUHwUOJnREecO1dwcMGmMzvC8WaROLeeW1COfsx//ztERBitwEuXgsNhJMEjRsDFFxvTJNntEBJifO3dC1u2wPr18Le/QWAgdO9u7HPddXDiBLzzDkydCvXqwZAhcM89xjRLrrflcBjH8uAzJpEySUhIKFJPZOPGjXTu3NmkiPxXnj2YoKyMgteq+CxSsyn5LUVeZkbpG0mJZsyYAcCYMWOIiori5ZdfZv78+fzpT38qtF1eXh7jxo0jLy+PV199tdjEF85XtnW17pZVhw4dWLp0KZdffjlLlixh4cKF3HzzzaXul5mZSXJyMl26dKG5qz8UsHv37kKvR40aVRDzrFmzGDFiBCNHjuT9999n9+7dXOK648Zo3X7llVf49ddfOXXqFHXr1qVly5b8+c9/Zty4cUWOfWHX5169erF8+XIAli9fTnJyMt999x0HDhzA4XAQGxvL4MGDefTRR4vtHhsXF0fDhg2V/FZTV1xxBStWrODs2bNEREQULP/vf/8LUDBHsDdYpk9n3L3GgLiCxPd3Um1wMvMkEa7G6TNnynWOESOMr/I6cgSsVqhbt/Dy116D77+Hf//bSIRffbXovs2bQ8+e0KaNUegmKAi6dYOWLeH9943W5ObNoX17I7Fu3dpoGXL9WubmGufPy4PQUOPLZjMS65wcY7ugIGOZiFQ9uXYbwannC/rFxhoP1kSkZlLyWwqHWn4r7MiRI6SkpNCqVSuuvvpqIiIiePnll5k+fXqR5HfFihVs376dSy65hNGjR5d67MDAwFK3+b369eszduxYJk+ezIcfflim5Hf16tVkZGTQo0ePQsvr1KnD+PHj+fHHH1m4cCG33HJLQeJxYQLy+27L06dP529/+xuNGjXi5ptvpl69ehw9epRNmzYxa9Ysxo0bV3DsWbNmsWfPHiZMmFCwf0xMTMG/p06dytatW7n66qsZMGAAWVlZfPfdd0yYMIEVK1awdOnSYscMd+/enfnz57Nz585CSbZUfYMGDeLFF19k+vTpPPjgg4DRG2LmzJl069aNxo0be/6k991nNKs2b87Kfm15qs2gEjdND4Yz2WdodeLcgl27PB9PMYqZThgwks5rrjG+nnrKSGRPnjQapJ1OIzFdt86oy7VggdEKnJkJp08b+4eHQ1wcrF1rJMKuKZnsduMGuXFj45hlmaopNtbofn3zzUZX7AsazEXERHs6NWf79mN0P/e6RQv4z39MDUlEvEjJbylyM7xQQMZPzJw5k9zc3IJW2nbt2nHFFVewfPlyduzYQayrrCKwatUqwGjZ9OQ419+Li4tj8uTJrFu3rkzbf3euWm3Xrl0LLa9Vq1ZBgupKfourpPv7OVvffvttbDYbmzZtol69eoXWnTx5stCxly9fzt69e4vtxg0wbdo0mjVrVmT5U089xeTJk5k7d26Rhwyu9zJ//nxWrlyp5LcKef311zl9+nRBt+aUlJSCSuH33nsvkZGRdO3alcGDB/P4449z9OhRYmNjmT17Nnv37mXmzJmVjsE15rdQl8yXXy5Y/8tdvxS73+EJD/PATy+wtDn0c1TNB4bh4dC/f9Hlv/+1dTrPjx0eONDYD4wW3l27jBahnTvh11+N188+a7QGBwVBRobxlZVlJLdBQcbxMjKM8cvff29M65SYCGPGwF13Ga3I4t9c43815tccP9/SnbfWb+Lhc69jY40i96mp8LsSCCJSAyj5LUWuN6qnFufQIeOrJHa70efOnV9/Ne66StKokc/utFyFrgIDAwslhaNGjeLee+9lxowZTJkypWD54cOHAUpsubqw9ROMFtX777+/SHGe0rjGRB47dqxM2+/cuROAJk2alOs87gQGBmK1Fv3Vi4qKKtdxikt8Ae6//34mT57Ml19+WWzy63ovu3zUKidl89JLL7HnXHVki8XC/PnzmTdvHhaLhREjRhAZGQnA+++/z5NPPskHH3zAqVOn6NChA4sWLSrSO6Eiih3zWwaBDz1M8otGIbv0Kpr8lpXFAtdeW3S51Wp0hW7ZsnLH37wZ3njDeKbw6qvwr3/B9ddX7phSvbkeNmnMrznsVjtZuefvnS6c7qgCl0MRqeKU/JYiP9tHye/bb8PEiSWvb9sWfim+1aXA4MFGAlyS8ePhd0mktyxbtoydO3fSt2/fQkV4hgwZwkMPPcSsWbOYPHlysUlgcSZNmoTFYinUkjpq1KhyJ7+u/cvauuxKksubmJZk2LBhPPjgg7Rt25a//OUv9OzZkz/84Q/Ur1+/3MdKT0/nlVdeYf78+Wzbto20tLRCP58DBw4Uu1/dcwMjjx49WrE3IV5R1ocRNpuNqVOnFjvntFnCgs9XfE7LSTu/omlTE6Kp2tq0MaZ1evppowjXTTfBJ5/AbbeZHZmIf1LyK+JflPyWwmfJ79ixEB9f8vpz83i69dlnpbf8+sj06dMBuP322wstj4qKon///sybN4+FCxcycOBAgIKqyCUlbPkXzDHao0cP1qxZU6G4XF1Ky5psupLk33dfrqjExETq1avHtGnTePXVV3n55ZexWCz06tWLF154ocxP/R0OB71792bdunW0a9eOhIQE6tevT1BQEE6nk4kTJxY7JQ6c/1l6s3u5+Be79fz1KT0nnYJPlpo0S1SnDqSkGAnwiBFGUtymjdlRififEGsIWblZOJ1OLBYLUVFGhfj//c9oUxCRmkXJrxuPXA/bjjQjP98Hc0R6oktyad2ifeTYsWMsWLAAKH46B5fp06cXJL+uLpvffPNNwR8gdyqajLoqJV911VVl2t41Ltc1HtcThg8fzvDhw0lNTWX16tXMnz+f9957jxtvvJEtW7YUGQtcnIULF7Ju3TpGjRrFu+++W2jdoUOHmOimF4HrvVSktVlqtmLH/JZBgCWA7k26c+DsAdJy0gh1/XrqAYtbQUEwcyZ07WoUwVq3zqgWLf5FY37NZbfaceIkJy8Hm9WGxQJXXQUbNpgdmYh4g5JfN76JtZGbFsKZM1C7ttnRVB+zZ8/G4XDQpUuXEqdeWbhwIUuXLmX37t3ExMQQFxdHixYt2L59OzNnzixTxefyOnr0KG+//TYWi4WhQ4eWaR9XQaj9+/d7PJ5atWpx0003cdNNN5Gfn897773HypUrue1c/0dXReviHgZs374doGDbC33zzTduz+tqXVexK/m9io75BVh9x2qW3P4HfjyzjUV1zi1U8luq8HCYOxe6dIEHHoC33jI7IvE1jfk1l6vnSlZuFjarMSdZq1aq+CxSU3m7PbNaswXawZrJqVNmR1K9zJgxA4vFwrRp05g+fXqxX2PHji0oigXGXLZvvfUWVquVe+65h1mzZhXbuutwOMjIKP/cy5s2beKGG27gxIkT9OvXj/7FlX0tRs+ePQFYu3Ztuc9ZHFfL8+8dOXIEgLCw82Mn69ati9PpLCiCdCFXsavfH2/nzp08+uijbmNwvZdevXqVPXCRMmi27Rgdf0tDKW/5tG1rFMB6+21ISjI7GhH/cmHy69KihVHVPTe3pL1EpLpSy68btkAb6UGZBXM+SulWrFjBb7/9Rvv27enSpUuJ291xxx1MnjyZmTNnMnHiRAIDA+nduzdz587l9ttvZ/To0UyaNImePXsSHR1NVlYWBw8eZOnSpZw8eZIOHTpQu5jm+F27dhVUhnY4HBw/fpwNGzawceNGLBYLw4cP561yNK10796d8PDwgimPKuvWW28lIiKCbt260bRpU5xOJ99++y3r16+nS5cuXH/BGMnrr7+euXPnctttt3HTTTcREhJCTEwMw4YNY8CAAbRo0YJ//vOf/Pzzz3Ts2JG9e/fyn//8h/79+/Pxxx8Xe36n08maNWuIjY0tNGewiCc4Q0OwH3OwpgnUeRROtWhhdkjVxpgxxs32Aw8Y06t4ofOLiBQjJCCYiCzIzDlfqb5Vq/PTm1W2wruIVC1Kft2wW+0QlKGW33J45513sFgs3HnnnW63a9q0KTfccANLly5l0aJF3HzzzQDEx8ezY8cOpk+fzuLFi/n88885ffo0ISEhNGnShAEDBjB48GD69etX6HiubsF79+5l0qRJANjtdurUqUPLli15+OGHGTp0KO3bty/X+7Hb7SQkJDBjxgx27txZpKuwxWIpcXxyceuef/55vvjiCzZu3Mjnn3+O3W4nJiaGqVOnMm7cuIKuzgB33nkne/bs4eOPP+aFF14gNzeXuLg4hg0bRmhoKMuWLeOxxx5jxYoVfPvtt8TGxvLUU0+RmJhYYvL7zTffcPjwYZ555ply/RzEP1R0zK9LbmAAcTvyyLfA6RDggs+zlO655+DUKSMRvuIK40tqPo35NVeTdVs5MwV+HbgNooy/8e3aGet+/lnJr0iN45QiNmzY4AScsY+2dNLvLudnn5Vvvw0bNng3QPGpH374wWmxWJwTJkwwO5RKGz16tNNutzsPHz5sWgxl/T3R75PveOpn/eMTdzid4Kz7ME4m6M9LRWRnO52XX+50Xnml05mfb3Y04ku65vnOhT/r/YuSnU5wrlk6q9A2DRo4nf/3fyYFKOIHzLrmacyvG6HBdiy2DDQdqn/r2LEjAwcO5I033qjQeOOq4sCBA3z44YfcddddXHTRRWaHIzVQq+v+BED96vtrYrrgYGMe4HXrYP58s6MRqfkiaxt/D8+eOlJo+XXXqeiVSE2k5NcNu9WOLTyTI0dK31ZqtilTppCamsobb7xhdigV9txzzxEWFsaTTz5pdihSQ9kbNgGgXgacfQZ47TVzA6qmevUypkgePx4umOJcRLwgtJYxvWBOWuFu5127wpYtkJdnRlQi4i1Kft1osz+La0/vVfIrxMbGkp2dzcMPP2x2KBX2+uuvc+LEiWILhYl4guVctfIQBwQ4UeZWCU89Bf/7HyxdanYkIjVbYFg4ALnpZwstb9MGsrJg714zohIRb1HBKzeu/+4QF2XBm6rZIiJSunr1eGJgHbbUO4XTAhQzXZmUTY8e0L49TJsGffqYHY1IzZSYmEgtu50EwJ5ZeLxG69bG982b4dzsgiLiAWYX+VPLrxt59mBC8nLU8isifiExMZH4+HiSk5MrdoCwMP4VV599tcEJSn4rwWKBu+6Cf/8b9u0zOxrxpuTkZOLj40lMTDQ7FL+TlJREyqefkgCQnl5o3cUXQ2io0fVZRDwnISGBlJQUkkya2F7JrxvO4GBC8nKV/IqIX0hKSiIlJaVC0xy5hFhDaHMUwh3AiROeC84PDR0KYWEwY4bZkYg3mX0j6PdCQwFw/q7lNyAALr3UaPkVkZpDya8b+cFB2PPylPyKiJSR3Wrn4jPnXvyuJUXKJzwc4uNh8WKzIxGpwYKC+OvfGvNrh+giq1q3VsuvSE2j5NcNp91OiCOP9HTdw4mIlIXNasOi3s4ec8018MMPkJZmdiQiNdfaDnU5WjuoyPJLL4WtW00ISES8RsmvO3YbNodRrVStvyIipatlq4XF7CBqkB49jKlW1q41OxKRmstutZPpyCyyvHVrOHYMTp40ISgR8Qolv25Y7CGEnEt+Dx82ORgRkWrgr53+er7ld8AAU2OpCdq0gTp14LvvzI5EpOayW+1k5WUVWe6q+KzWX5GaQ1MduWGx2QnMB3Cyf3/Z2zI2qzqCSIn0+1F1JSYmUqtWLRISEipc9KrdRe3Ot/y2aeOx2PxVQAD84Q9Kfmsys6f9kHPJb27R5LdlS+P7li3QvbuPgxIRr1Dy68aBfj2o0+IrwpKy2bfPXub9hg0b5sWoRES8IykpiU6dOlXqGNFpFu77/twLizpAe0KPHjB5MuTmglV/tWsc18OmjRs30rlzZ7PD8UslJb+hoRAdDTt3mhCUiHiF/oy6YQsyEt7GTTPZu7f05Ld169Zs2LDB22GJ1AitXf3JpEYJ3nuAPq4bRSW/HtGjh1Hw6qefoJLPJkSkGCHWEE5kFj81W7t2sHq1jwMSEa9R8uuG3WokvI2aZrBvX51Stw8NDa10q4mISLUWEQFAui2AsOBgk4OpGbp0AZsNVq1S8iviDSW1/AJcey08+yw4nXqeJ1ITqOCVG+8+9y58BFkZn7J3r9nRiPiH5ORk4uPjSUxMNDsUqYhzye/jd7UyKjVJpdlscOWVsHKl2ZGI1EwdfjlOpx+Kr2zaujWcOaPCpyI1hZJfNx6Y8AAMgc49r2PfPrOjEfEPCQkJpKSkkJSUZHYoUhHnkt+QrFyTA6lZeveGZcuMaY9ExLPivtzGn788VOw61widLVt8GJCIeI2SXzdc3Z6jLsrk6FHIKr5HjIiIuJxLfh9I3gP/938mB1Nz9OljzDW6caPZkYjUPM6QUIKyHcWua97cKDSn6Y5EagYlv264kt/a9TMA2L/fzGhERLwrMTGR+Ph4kpOTK36QoCDyAyxcdNphDJQTj+jaFSIj4csvzY5EPE1DPcxnCQnFll18b5WgIGOs/dy5Pg5KRLxCya8btkAbAJFRmQAa9ysiNVpSUhIpKSkVnuMXAIuFnOBAdtcyXn7+2+eeCc7PBQUZXZ+V/NY8GupRBURGEJqdj9PpLHb1nXfC119DerqP4xIRj1Py64Y9K4/5yXDx3h8A2LPH5IBERKqB03XDORli/PujR/9objA1SJ8+xpQrZ8+aHYlIzWKpXZtaWZCZm1ns+g4djO8a9ytS/Sn5dSMkyM4tW8F++ACNG8OOHWZHJCJS9U186y+81cX4tz0XzmYrW/OEPn0gNxdWrDA7EpGaJaB2HWpnwdmsM8Wub9PG+P7LLz4MSkS8QsmvG0FhRuGW3LQztGgB27ebHJCISDWRdW4W+ZMhcDzjuLnB1BCxsUbxHXV9FvEsa+26BOVDWuqxYtdHRMCll8LTT/s4MBHxOCW/7lit5AZAXno6LVqo5VdEpCwuXfkLb3wO9/aFBa3hVNYps0OqMfr0UfIr4mnW+g04HgIZJ4+UuM3NNxuNILt2+TAwEfE4Jb+lyAyykJ+RRmws/PYblFALQUREzsnJTCMiBzo+8QrOADidddrskGqMPn1g2zbYvdvsSERqDmffvtR/FE7VCi5xmyefhDp1YMYMHwYmIh6n5LcU2cEBODOMlt/UVGOeRRERKVl2jlE05pI6MQCkZqWaGE3Ncu21EBio1l8RT4qwGcPc3NUnCA+H226D+fN9FZWIeIOS31LkBAfizMigRQvjtcb9ioi4F+awkA80qt8cKLmCqpRf7dpw1VVKfkU8KSL4XPKb47443/XXGxWfDx3yRVQi4g1KfkuRY7MSkJlJbKzxWuN+RUTca2SJID0YGqbBkg/A/j/ND+JJffoYc47m5podiUjNEBYcBpRemT4uzviuiusi1ZeS31L8t2tjtl4cSmQk1K9vjLUSEamJEhMTiY+PJzk5uVLHua3JDVgja1PXXocbd4D1UMlFZKT8evWC06dh61azIxFPSE5OJj4+nsTERLND8VsBlgDCg8NLbflt2NCY9mjZMh8FJiIeZzU7gKpuwbDOHEk7wv1A27bw669mRyQi4h1JSUl06tSp0sexPTMF8vIgJASAvIz0Sh9Tzmvf3vj+009w2WXmxiKVl5CQQEJCAhs3bqRz585mh+O3Im2RnMkufp7fC910E3z8sQ8CEhGvUMtvKcKDwknLSQPg8ss1wbmISKn++ldo3BhsNgBys5T8elJUFDRpYiS/IuIZdUPqlmlO8quugoMHYcMGHwQlIh6n5LcU4cHhpDuMG7fLLjO6PefkmByUiEhV9uabsH9/QfKbn6mCV57Wvr2SXxFPahDWgGMZx0rd7rrrjO/PPuvlgETEK5T8liI8uHDLb26uxv2KiJSJ1UpuABZeQbcAACAASURBVFj0xNDjlPyKeNa9c/fTf87aUrerWxfGjzfG/TocPghMRDxKyW8pwoLDCpJf19gqdX0WESkbhzUAS7aSX09r395oXNfc8yKecfHRTJrtOFWmbQcONIrOTZzo5aBExOOU/JbiwpbfqCho1Aj+9z+TgxIRqSYcVotafr2gXTvju/4eiVTchRXuHRFhhGSU7VrVrp3RIDJ/vpcDFKmBzK5wr+S3FOHB4eTk5eDIM/q2XHaZWn5FRMpqSY+G7G4SYXYYNU6rVhAYqBkIRCojKSmJlJQUEhISyIuMICyj7P2Y77sPtmyBjAwvBihSAyUkJJCSkkJSUpIp51fyW4pwayjh2ZB+wbjfn382OSgRkWpixrA2rO9YHyZNgnnzzA6nxggOhpYtlfyKeIqzViThmXll3r5zZ8jP19h7kepGyW8pWn61kbPPQfppowJgp06wfTukppocmIhINRAcGIzDkW1UiBk40OxwahTNPS/iQbVqUSvTidPpLNPml10GVit8+62X4xIRj1LyWwprZG0AMk4dBYwnfQAbN5oVkYhI9REcGIztjDFd3M8NKPONpZROya+I51hqRxGRAxmZZ8q0vc0GHTvCI48YjSIiUj0o+S1FcK0oALJOnwDg0kshLAzWrzczKhGR6iE4MJjgc8nvPTfB2ZyzJkdUc7RtC4cOwamyFagVETesdYz7vbTjB8u8zwcfGN8XLPBGRCLiDUp+S2GrVReA7NPHAaPASKdOsGGDmVGJiFQPwYHB2M9mAnDaDqcylal5Stu2xvfNm82NQ6QmcLa+lJevgrTcslewat0arrsOVqzwXlwi4llKfkthj6oPQM65ll8wuj6r5VdEpHTBAcHs3vkDAKdC4GSmJqb1lFatICBAXZ9FPCG4/RUk3gQnbGUvegXQpw8sWwaZmV4KTEQ8SslvKUJqG8mv48z51oouXWDHDnU1E5Ga5cI5Lz0lKDCIRkaxfA6Fw+ms0x47tr8LCYHmzZX8Vndmz3kphobhDQE4knakXPsNGGAkvsuWeSMqEfE0q9kBVHWhdRoAkHf2fHnnK680vq9dCzfeaEZUIiKel5SURKdOnTx6zNyzqWytCw/2AYcVMnPVPOJJKnpV/SUkJJCQkMDGjRvp7KqqKT5XL7QeFiwcTjtcrv1at4bYWHjgAbjpJqM3hohUXfoVLUVgZC0Acs+cb61o2RLq1YNVq8yKSkSkerjrua9J/B7+ebXxOtOh5NeT2rbVmF8RT7AGWKkfVp8j6eVr+bVY4OGHYds2+PlnLwUnIh6j5Lc0VitDRtdic4fGBYssFujRA777zsS4RESqAUdAPkEXDKHLys0yL5gaqG1b2LsXzqqItkilNQxvWO6WX4ChQ42pj/7yF0hP90JgIuIxSn7LYH3HBuyPLLzsmmvg++8hJ8ecmEREqoPWO1K5ZSusGb2aiCzIzlSW5kmuis/q+ixSeQ3DG5a75RcgPBxefx22bIFvvvFCYCLiMUp+y6CWvRap2amFlvXoYRQ4+OEHk4ISEakGaqXlAtA0P5IzU+CiFSqV70mXXQZWq2YgEPGEi8IuqlDLL8CoUcZ0mHv3ejgoEfEoJb9lUMtWNPm94gqj0qa6PouIlC40vA4A+Zlln0NTSme3Q4cORgFGEamcZnmROA8erNC+gYHQtSu89x7k53s4MBHxmEolv/v37+ejjz7ilVdeYd++fQDk5eVx8uRJcnNzPRJgVVDLXovUrMLJb1AQdOsG335rUlAiItXAxhbhpAVdkPxmqeCVp111Ffz3v2ZHIVL9/fm1ZUz+f/buOzyqMu3j+HdqZtILCT0QMYGlBpAmqICCiAJKEZEiWGiLSFgBCx2xgBIBlRUUEMSIIiq4CCpN1oUXpRcpUgJISyC9l3n/OCSCSSBMZuZMuT/XlWuSmck5P3ZlOPd5nud+lv1p9e+/+Sb8+it8+60NQwkhbMqq4tdisRATE0NERAQDBgxg7NixHD9+HIC0tDRq1arF/PnzbRpUTaWN/AK0bw9btoAb1flCCGFTOz+bhd8rYPAyk6cFi4z82lyrVnD0qOw9L0RFFfh4451dcOs3luHee6FhQ5g5EwqsP4wQwo6sKn5nz57NvHnzGDduHD/++CMWi6X4tcDAQHr16sXq1attFlJtAV4lR34BOneGlBSZbiaEEGUZ3mIElqnKvxG5Bi2WbOn2bGutWimPv/6qbg4hXF2Brw/eORWrWh9/HHbtgrfftlEoIYRNWVX8Llq0iIEDB/L666/TpEmTEq83atSIo0ePVjicsyit4RVAixYQFAQ//KBCKCGEcDFS/NpHZCQEBsrUZyEqzM8X32zLDYM6t2vSJBg+XJkCnZdnw2xCCJvQW/NLZ8+epW3btmW+7uPjQ2pqqtWhnEVMTAwBAQHUrJrPg0lXSryu08EDD8CGDTB1quPzCeGO4uLiiIuLIyWl5A0n4dryDFo0OVL82ppWqzTakVlIQlSMxc8Pv1xlP3KzwWz1cQYPhn//W9kRpGVL2+UTQlScVSO/oaGhnLlJL/fdu3cTHh5udShnERsby5o1a3hGa2Tm9znkF5Zc3Nu5s3LBIWuthLCNfv36sWbNGmJjY9WOImwsz6BDk52jdgy3VNT0qgIDVkJ4PI2/P/45kJGbXqHjNG6sPL78sg1CCSFsyqrit1evXnz44YecOHECjUZzw2s//PADS5cupU+fPjYJ6Ay0QcEEZkNqTsnR7AcfVFra//ijCsGEEKIMCQkJPPzww/j6+lKvXj02bdqkdiTmDW/Kunurqh3DLbVsCQkJcPq02kmEcF0+wVUwFMKlKxXbrNdshq5dYdMm+TsphLOxqvidOnUqVatWJTo6mkGDBgEwa9Ys2rZtS5cuXWjcuDGvvPKKTYOqyRBUCXM+pKQmlHitZk1lj8VvvlEhmBBClOGf//wn1apVIzExkdmzZ/P444+TpPIUlRMNqhIfZlQ1g7sqanol636FsF5AaA0ALl34o8LH+uQT5fHuu2XfXyGciVXFb2BgINu3b2fChAmcO3cOk8nE1q1bSUlJYerUqWzbtg0fHx9bZ1WNMTgUgPSE0vd+69ULvvsOcmQ2nxDCCaSnp/Ptt98ybdo0TCYT3bp1o1GjRnyr8uaTBp2BvALpAGMPoaEQESHFrxAVYb6/C82HQqKx4ntYVqoEkyfDhQuwd68NwgkhbMKq4hfA29ubiRMnsm/fPjIzM8nKyuLgwYNMnjwZs9n6JgHOyFSpCgBZCRdKfb1nT0hLk6nPQgjncPz4cXx9falWrVrxc40aNeLQoUMqpgKjzkheoRS/9tKqlTS9EqIivMOqs7sapFls05jv1VfBZIKff7bJ4YQQNmB18etJvCspa9Syrlws9fX69aFuXXCjrY2FEA6UkZHBlClT6NKlC8HBwWi1Wj4pmjP3Nzk5OUyYMIFq1arh7e1N69at+emnn254T3p6Ov7+/jc85+/vT3p6xZq4VJRBayC3IFfVDO6sVSvYvVu2VxHCWjqtDm+DN+kVbHhVxGiEOnXgxAmbHE4IYQNWbXU0ZMiQEo2urmexWNBoNCxevNjqYM7EN0xZA5J75XKpr2s0ytTnf/9buegwGByZTgjh6hISEpgxYwa1atUiOjqaLVu2lPkZO3jwYL766itiYmKIjIxkyZIldO3alc2bNxdvQefr61tiu7mUlBT8/Pzs/me5GaPOKNOe7ahVK8jOhv37oXlztdMI4Zp8jb42K34BateWpldCOBOrit/NmzeXuDDLz8/nwoULFBYWUqlSJbda8+tVqTJJJsjOLHvv4l694PXXlc5+Dz7owHBCCJdXrVo1Ll68SFhYGLt27aJFixalvm/nzp2sXLmSt99+m7FjxwIwcOBAGjZsyPjx4/nll18AiIyMJD09nfPnzxdPfT5w4ABDhgxxzB+oDEUjvxaLhfTcdPy81C3G3U10NOj1yrpfKX6FsI6f0c+mxW9EBLz3Hpw6pXwvhFCXVdOeT58+zalTp274Onv2LJmZmcybNw8/Pz82btxo66zqCQqi7vRQ9jevUeZbmjZVpj6vWOHAXEIIt2A0GgkLCwOUmTNlWbVqFXq9nqFDhxY/5+XlxTPPPMP27ds5d+4coIz89ujRgylTppCdnc3atWs5ePAgPXr0sO8f5BaK1vwO/Hog/m/6U2iRFqi2ZDYruw9I0yshrOdr9CUtN81mx+vaVXmsUwdUbrgvhMDGa36NRiOjRo2ic+fOjBo1ypaHVl2AKYCUnJQyX9doYMAAZd1vRoYDgwkhPMaePXuIiorC19f3hueLRor37dtX/NwHH3zA+fPnCQkJYdy4cXzxxRcEBgY6NO/f3XHkEp+8eYzdG1fQ8SScOX9E1TzuSJpeCVExtp72/NBD8OuvYLHAwoU2O6wQwkp2aXjVpEkTfnaz1naBpkCSs5Nv+p4nn1QK3zVrHBRKCOFRLly4QNWqVUs8X/Tc+fPni5+rVKkS//nPf8jIyODIkSN07NjRYTnL0mztb7T+E35eAhuXwdWDUqXZWqtWcOQIJN/8nyshRBlsXfwC3HUXdO4MU6bA5dLbxwghHMQuxe9PP/2Et7e3PQ6tmkBTIEnZN5+vcscdymbmn37qoFBCCI+SlZWFl5dXiedNJlPx687MN0GZPfPO3crPmZfP3+TdwhqtWimPv/6qbg4hXFX3/yZQ97dTNj/u8uXK6G/v3jY/tBDiNljV8GratGmldiJNTk5m69at7NmzhwkTJlQ4nDMJMgXdsvgFZerz889DQgKEhjogmBDCY5jNZnJycko8n52dXfx6RcTExBAQEHDDc/369aNfv34VOm6R0CQl+5f14Y2NkJVY+t7pwnqRkRAYqKz77dRJ7TSiLHFxccTFxd3wXEpK2UurhOM8tDGe/dV0Nj9uWBhMnAiTJ8PJk8qAiRDC8awufksTFBREnTp1+Pe//81zzz1XoWDOJsgUxMmkk7d83+OPw+jRsHIluNmyZyGEyqpWrXrD1OYiFy4oRWRRZ2drxcbG0qxZswod42aCh74AEyfTt8u/YP47FCRdsdu5PJVWCy1bStMrZ1faTaXdu3fTXNp0qy7P24who+zdPSpi1Cil+N22TYpfIdRi1bTnwsLCUr+uXLnCzp07GTp06E33AXZFQebyjfyGhCjNDZYvd0AoIYRHadq0KceOHSMt7cZOpP93rdKJjo5WI1a56V+dBBYLM7u+TaYBSJaRLnsoKn5v0jhcCFGGQl9vvDJLzrCxhaAgZWeQ336zy+GFEOVglzW/7ijIFERSVvl61D/1lNJt8+BBO4cSQniU3r17U1BQwMLrWobm5OSwZMkSWrduTfXq1St0/JiYGLp3715iOqY9pJl16FLsM7ri6Vq2VJbeXNv5Sji5uLg4unfvTkxMjNpRBFDo54cpK89ux4+KUvb9lZtTQqijXNOez5w5Y9XBw8PDrfo9Z9Tyx8N8/EUSheML0Wpufs+gWzdlbceiRTB3roMCCiFc2nvvvUdycnLxtOY1a9YUf/aOHj0af39/WrZsSZ8+fXj55Ze5fPkyderU4ZNPPuHMmTMsWbKkwhnsPe35euneenSptttLU/yl6P/C3buhZk11s4hbK5oCLdOenYPGzw/v7EIKCgvQaW2/9vfBB2HtWvjzT6hRw+aHF0LcQrmK39q1a9/2gTUaDQUFBbf9e84qOL2ApqcgNSeVQNPN98o0GmHwYKX4ffNNqGAPGiGEB3jnnXeIj48HlM/Pr7/+mtWrV6PRaBg0aBD+/v4ALFu2jEmTJrF8+XKSkpJo0qQJ3333He3atVMz/m3L9DGiT5VN0e2hWjXlBuyuXdCjh9pphHAtWv8A/HKU670gc5DNj//YY/DCC/D99+Bm7XGEcAnlKn4XL15s7xxOzxASRmAOnM64csviF+DZZ2HWLPjqK6UDtBBC3MypU+XbWsPLy4tZs2Yxa9YsOyeyrykvNsfkF8S9agdxQxoNNG+ujPwKIW6PLjAI/xxIyUmxS/FbrRq0bg3r10vxK4QaylX8Dh482M4xnJ9XpcoApF46CyF1bvn+yEjo0EEZ/ZXiVwjhCoq2OrLl9kZlCgoiKd+59yV2Zc2agdy3dg1F2x7JVkfOQVujJuf8QZudbLdzdOoEU6fKtphCqEEaXpWTOVTZQiQ9ofwdRIYOhZ9/hsOH7ZVKCCFsJzY2ljVr1ti/8AV8jD5k5Mq0Z3tp3hwuXFC+hHPr168fa9asITY2Vu0oAsgfNIDmwyEl2343I/r0UR4feshupxBClMGqfX6L/Pe//2XPnj2kpKRQWFhY4vXJkydX5PBOxaey0pUg63LJPTbL8thjULmy0tXvgw/slUwIIVyPr8GX9Nx0tWO4reubXj38sLpZhHAlAV4BgDLt2V7q14d33oF//QtGj4Z58+x2KiHE31hV/F69epWuXbuyc+fOm77PnYpf38pKy8ycxIvl/h0vLxgxQln7O3Omsr+bEEIIZeQ3LVe6PdtLeDgEB0vxK8TNlLbUI8B0rfi148gvwJgxytK4jRvtehohnI7aSz2smvY8btw4Dhw4QFxcHCdPngRg/fr1HD16lBEjRtCkSZPi7TrchS6kEgB5iQm39XvDhkFenqy9EsKVbNu2jSFDhtC+fXuaNGlC48aNi78aNWpE48aN1Y7o8hqENuDE1RNcybyidhS3VNT0atcutZMI4bxKW+ph0psw6ox2HfkF0GqVrs+HD4OVO4oK4ZLUXuphVfG7bt06hg4dSt++ffH19QVAp9MRGRnJ+++/T+3atRkzZoxNg6rO358l9/hxLuT2BsurVIG+fZWpz26085MQbis2Npb77ruPL774gtTUVIKCgggODi7+CgkJISQkRO2YdhETE0P37t2Ji4uz+7kahDXAgoVzqeXvoyBuT7Nm0vHZFcTFxdG9e3diYmLUjiKuCfAKINmODa+KtGmjPE6aZPdTCSGusWrac3JyMg0bNgQoLn7T0/9au9W5c2deeeUVG8RzIlot8/rXoU2N29+0d/Ro+PRTZVPzRx+1QzYhhM3MmjWLtm3b8t133xEQEKB2HIeKjY2lWdFiUTur4luFJ/fD1e6dsOy4iEYr/RdtrVkzeOst6Sjr7Iqm3O7evZvmzZurHUegTH2297RngCZNoHdvWLYM5swBN72vKoRTsepqo2rVqly8qKx9NZlMhIaGsnfv3uLXz58/j0ajsU1CJxJkCiIpO+m2f69FC+XunjQ0EML5ZWRkMGDAAI8rfB2t0qV0VqyGDr8mcOD3rWrHcUtFdZSM/gpxewJNgXaf9lzkySeVx6IO0EII+7Kq+L333nv54Ycfin9+4oknmDVrFq+99hrTp08nNjaWDh062CykswgyB5GUdfvFLyjrOjZvhgMHbBxKCGFT7du354D8RbU7c56l+PvEkwdVTOK+7rgDAgKk+BXidgWaAq0a7LDGY48pW2Pu2gWlbJwihLAxq4rfsWPH0qNHD7KzswGYMmUKbdq0YfLkyUydOpW77rqL+fPn2zSoM7B25BegZ0+oXh1kGz8hnNt7773Hhg0bmD17NlevXlU7jtvS+PsD8EtNOFHNpHIa96TRQNOm0vRKiNu1YMYemn+/z2Hn69MHUlPhjz8cdkohPJZVa36Lup4WCQ4O5qeffiIpKQmdTof/tYsadxNoCrR65NdgUEZ/X30VZsxQCmEhhPMJDw9n2LBhjB8/npdeegmTyYT22npUjUaDxWJBo9GQmpqqclLbK23bD7upUoX1dWBCJ+iXJR2f7aV5c1i9Wu0U4mbU3vZDlGQu1FHncPm3tqyoRo2Ux0OHICrKYacVwiNZVfwePnyY+vXrl3g+yM03sq3IyC8o2x7NnAnvvguzZ9swmBDCZiZNmsTMmTOpUaMGzZs3L3Xtrzv2NADHNrzCYGDYqHDOpJyhe26GY87pgZo1g3fegaQk2WveWUnDK+eTUasqIacPFN/stLewMOXv55Yt0LKlDJAIYU9WFb8NGzakYcOG9O3bl759+3LnnXfaOpdTKlrza+2Hob8/jBgB77+vjAAHBtohpBCiQj788EMefvhhvv322+IRX2Ef8WPi6TrlToY/+2/YPgoqV1Y7ktspupexezfcf7+6WYRwGdWqUWX/PlJyUgg02f9irWiJwrx58NFHcPYsBAfb/bRCeCSrruwWLFhApUqVmDJlClFRUTRv3pxZs2YRHx9v63xOpVKhmVpXCsjIs36U4oUXIDcXFiywYTAhhM3k5ubyyCOPSOHrIL12ZVL9VCJ8953aUdxSVBT4+krTKyFuh75yNcIyIDEz0WHn/PJL+PxzyMyEX3912GmF8DhWXd0NGzaMTZs2ce7cOebNm4e3tzcvv/wyERERtGnThnfffZfz58/bOqvqGvywh2PzISnD+vVpVarAU0/B3LlwrV+YEMKJdO3alW3btqkdw2PoM3MA+P3AZpWTuCetFqKjpfgV4nZog0MIyIH0nDSHnTM4GHr1Ur7/4AOHnVYIj1OhoY0qVaowatQotm3bxpkzZ5gzZw4A//rXvwgPD7dJQGdirFQZnQVSEs9V6DgvvgiXL8Mnn9gomBDCZqZOncqhQ4cYMWIEu3btIiEhgatXr5b4ErbxXlQyAGd/36FyEvfVrJl0fBbidhgqhWEohMzkBIeeV6+Hxx9XtsbMzHToqYXwGDab11e1alXq169P/fr18fb2ptANNyszh1UDIP3S2QodJzISeveGN9+EvDxbJBNC2Eq9evXYt28fH374IS1atKBy5cpUqlTphq/Q0FC1Y9pFTEwM3bt3Jy4uzmHn3Ftdy6ba4JUuU2HspXlzOH5c2UpFOJ+4uDi6d+9OTEyM2lHENV4hYQDkJF5y+LnffBPS0pRlcjJIIoTtWdXwqkhhYSFbtmxh5cqVfP311yQmJhIcHEy/fv3o27evrTI6De9QpfjNulzxKd2TJkHjxsoH27PPVvhwQggbmTx58i3fI92ebeeHAT+Q9FlHKqdIZWYvRf+X7tkD992nbhZRknR7dj7GhtGM6wTV0v+gg4PPHREBHTsqja8++gg6dAA3nEwphGqsKn5//vlnvvjiC1atWsXly5cJCAjg0UcfpW/fvtx///0YDAZb53QKfpWVT5+chIrv/daokTK1ZcYMGDQIjMYKH1IIUUF5eXk89thjBAcHU7NmTbXjeIQOER34ctAAFh/+lrZqh3FT9eqBlxfs3SvFrxDl4RfVkLfbAjunE/PQNIef//33IS4Opk+HNm1gxw6Qf5KEsA2rpj23b9+eZcuWcf/99/PNN99w6dIllixZQpcuXdy28AVlDQhA3lXbrAGZMkVpZ79kiU0OJ4SoII1GQ/Pmzfn666/VjuJR8h55iMV3pnEl0/pmgqJser1yw3XfPrWTCOEaNBoNQSb1NsauVw+mTYP33oPz55Wp0EII27Cq+P3iiy+4fPkyK1asoHv37hg9Zdjy2sa8BVdt0/q+fn144gl47TXIybHJIYUQFaDX66lVqxY58hfSodrUaAPA5tPS8dleoqOVkV8hRPmMbTOWMJ8wVTP885/K390PPlCaYAkhKs6q4rd3796YTCZbZ3F+Oh1pJi0WG3Z6nTxZuav30Uc2O6QQogKef/55Fi5cyJUrMgrpKDX8awDQ58s+FFrcr1miM2jSBA4dUvaZF0Lcmr+XP2kO3OqoLEUTkTp2hAED5CaWEBVVoYZXnuiFl6MxhlflMRsdr1496N9fGf0dPBh8fGx0YCGEVQoKCvDy8uLOO++kV69eREREYDabS7xv7NixKqRzTwbdX8tl4pPjiQiKUDGNe4qOVgrfI0eUZotCiJtrtuEAh+dkkfZiGn5efqrlqF1bKXhffBE2bIDDh5Wty9y076IQdifF7226ElWD/MIsmx5z+nRYuRJiY2HiRJseWghxm8aNG1f8/eLFi8t8nxS/trU2ehanZ44noc8JKX7toKjg3btXil8hyqN2pTupkQJb/9jGfQ26qpqlSRP48UflOnHsWKUh1qhRqkYSwmVJ8XubgkxBHLtyzKbHrF1bWdcxaxYMGwZuuoWoEC7h5MmTakdQTUxMDAEBAcVbrzhSK0MEj/wKW8+ehPoOPbVH8PeHOnWk6ZUziouLIy4ujpSUFLWjiOt411RuwuVd/BMaqBzmmjFj4KWXYNs2KX6FsJYUv7cpyBREUnaSzY/7yivw8cfK9Oe5c21+eCFEOdWuXVvtCKpRY5/fIr6h1QHIvHpJlfN7giZNZL2gM5J9fp2TqXotAAovXFA5yV80GnjySfjpJ+VGVmQkeHurnUoI12JVwytPFmQOIjk72ebHrVQJJkyABQvAgweehHAa6enp/Oc//2HBggUsWLCAdevWkZGRoXYst2UKCAEgJ9V2DQXFjYo6PlssaicRwvmZQqsCUJDsXJ9J990H584pf5/r1IEZM2THECFuR4VGfg8fPszJkydJSkrCUsq/poMGDarI4VVX2hTAIFMQSVm2H/kFZTrLe+/BpEmwYoVdTiGE03OGKYDz5s1j4sSJpKen3/C8n58fr732Gs8//7xKydyXxk9pKFOYlqpyEvcVHQ1XryoXzjVrqp1GCOem9fMHnO8zadAg5e/yl1/C558ru4bUrQuPP652MiFcg1XF74kTJ+jfvz87d+686ftcvfgtbQpgkDmInIIcsvKyMBtKdoCtCG9vZVPzoUPhX/8ClWYfCqEqtacALlu2jDFjxtCmTRtGjx5NvXr1ADhy5Ajz58/nhRdeICAgwOU/35zOtVb3lr/dcBC2Ex2tPO7dK8WvELd07TMpP9X2s/0qQqtV/i5HRyujvt7e0LcvGI3w6KNqpxPC+VlV/A4bNoyDBw8yd+5c2rVrR1BQkK1zOa0gk/JnTcpOsnnxCzBkCMyZA+PGKWs6pJW9EI41Z84c7rnnHjZu3Ihe/9dHZJMmTejVqxcPPPAAc+bMkeLX1oqLX/X31XRXNWpAcLCyVrBbN7XTfzlB7gAAIABJREFUCOHkDAZy9Bqyki6rnaRMWq2yXO7VV5Xrx65dlSJYCFE2q9b8/vLLL4wfP57nn3+epk2bUrt27VK/3FHVP1OZtgmSr9qnAYJerxS/mzbBqlV2OYUQ4iaOHj3K448/fkPhW0Sv19O7d2+OHDmiQjI3p9ORp9NgybbtVnLiLxqNNL0S4nZ8NLAB/6utUzvGTQ0ZAuvXQ3Ky0gH64kW1Ewnh3KwqfkNCQggMDLR1FpcQcjmVyT9DxvnTdjvHQw9B9+7KXm4yA1AIx/L39+fUqVNlvh4fH4+/v78DE3mO3VF+XPGRPoz2VNT0Sghxaz93rc/v1Z1/KLVRI+jRAxYtgqpVoV07SLJPexohXJ5VVxkjRozg008/JT8/39Z5nJ5PaA0AMhL+tOt53n0XEhNh5ky7nkYI8TePPPII8+fPJy4u7obnLRYLn3/+OfPnz6ebzBm1i/Hjo9ncohKZeZlqR3Fb0dFw4gSkOlcPHyGckklvIjs/W+0Yt6TRwDffwPvvKz//8ouyxOGPP9TNJYQzsmrNb1RUFAUFBURHRzNkyBDCw8PR6UpOC+nZs2eFAzobvyrhAOQk2HdeSUSEspH5zJkweLDSyU8IYX9vvPEG27dvp3///rz44otERkYCcOzYMS5evMg//vEP3nzzTZVTuiejzsgXh77ghxM/kDRBhi3soajp1f79yuiQEKJsJp1rFL9FRo6ETp2gYUPIzYWXX1a6Qgsh/mJV8du3b9/i78eNG1fqezQaDQUFBdalcmJeoVUAyE28ZPdzjR8Pn3wC//wn/PijNL8SwhHCwsLYtWsXCxcuZN26dcTHxwPQqFEjXnrpJYYOHYrJZFI5pX2Utr2bI4VmwNDf4Kt/JJOcnUygyTOX19hTvXpKQ5y9e6X4dRbOsL2bKJ2rjPxeLzJS2ff3zTeVbtBZWWC2fX9WIVyWVcXvpk2bbJ3DdVxb65x/JcHupzKblS5+XbrAkiXw9NN2P6UQAjCbzbzwwgu88MILakdxqNK2d3OkWpdzeeM72BYOC35dwMv3vKxaFndlNCoF8MGDaicRRdTe3k2UzRWL3yKPPaaM/M6Zo3SDFkIorCp+27dvb+MYLsRgINNLiyXpqkNO9+CD8NRTSvOrLl2gWjWHnFYIIRzOL8cCQLoR/vxTOmrbS61a8Kd921YI4RZcufitWxcqV1aaYH34IcTFQdu2aqcSQn1WFb9FLBYLv//+e/G0wFq1alG/fn2bBHNm6T4GNEmO2/R8zhz4/ntl+vPq1TL9WQh7W79+PR9//DEnT54kKSkJi0UpyjQaDRaLBY1Gw8mTJ1VO6X4MmTkALPsGDJvXwhMqB3JTej1ku+b1vBAO5crFLygDJxMmKN+3aweXL0NoqLqZhFCb1cXvN998w9ixYzl9+vQNz0dERDBnzhx69OhR0WxO6/QdwSQa8hx2vuBgpYNfnz7K3r99+jjs1EJ4nNmzZzNhwgSqVKlCy5YtadSoUYn3aOQOlF3o05Uuz1fuqELDg/ZfWuKpdDpww5YcQthclfOp/ON0htoxrFY0a/Drr2HqVGUnEdlFRHg6q4rfdevW0bt3b2rVqsUbb7xBvXr1ADhy5AgLFy6kV69erF27loceesimYZ3FokkPs+/SPp5z4Dl79VLWb4waBe3by507Iexl7ty5dOzYke+//x6DwaB2HI9iyMgi3QBetepQaftFrmZdJdgcrHYstyPFrxDl0+rzbTTamQXvq53EOno9NG6sfJ04Aa+/Dj4+SlHspn0bhbglq/b5nTFjBo0aNWL//v1MmDCBHj160KNHDyZMmMD+/ftp1KgR06dPt3VWpxFsDuZqlmPW/BbRaOCDD5QLluHD4dosTCGEjSUlJdGnTx8pfFUwKu4EvnngX7kWgdmQkH5Z7UhuSYpfIcpHY/TCUAD5hflqR6mwt94Cg0FpfvXBB2qnEUI9VhW/+/fvZ/Dgwfj4+JR4zcfHh6eeeop9+/ZVOJyzUqP4BahSRWlasHo1LF/u8NML4RFatmzJ0aNH1Y7hkfY2Uqa0+FSugc4CGVftu5+6p5LiV4jyKSp+c/Jz1I5SYVWrwtWr0Lo1bN8ugyjCc1lV/Hp5eXHlypUyX09KSnLbfTBBKX6Ts5MpKHT81UOvXjBwoDL9+VqfMSGEDb3//vt89dVXrFixQu0oHqfm1r28u34qVavXBSAr4YLKidyTFL9ClI/WywtjAS7d9Op6vr5w991K/5jwcMjNVTuREI5nVfF7//33M2/ePP73v/+VeG3Hjh3MmzePBx54oMLhnFWwORgLFlJy1NmQfv58CAqCwYOhsFCVCEK4rb59+1JQUMDAgQMJCAigQYMGNG7cuPirUaNGNG7cWO2YbikkqBpjHpyCd4AyApyZWvZNVmE9KX6FKB+tlwlDofsUv6B0f546Fc6dU3YRketI4Wmsanj11ltvsW3bNtq1a0erVq2oW1e5S3/kyBF27txJ5cqVeeutt2wa1JkUNWBRqxlLQAAsXQodOyqd+8aOdXgEIdxWSEgIlSpV4s477yzzPdLt2b5M/kEA5KWpc4PR3UnxK27lwoULVK1aVe0YqtMZTRgLICM/S+0oNhMWBi++qBTAH30E/fop15NCeAqrit877riDffv28eabb7Ju3To+//xzNBoNtWrVYsyYMbz00kuEhYXZOqvTuL74VUuHDhATAy+/DJ06QSm7sQghrLBlyxa1I3g84z8a8uAAeLKqv9pR3JIUv+JWatasSYcOHRg4cCC9evUqtceLJ9B6KcXvFTca+QWl4/Nrr8HEifD991L8Cs9i1bRngMqVKxMbG8vRo0fJzs4mKyuLI0eOMGfOHLcufME5il9QWtZHRSl37bLc56akEMLDaQMC2VLXSJpJRtjtQYpfcSvTp0/n/PnzDB48mMqVK9O/f3++//57Cj1sjqzO1w9zHmTlud9F1quvwtNPK41U812/mbUQ5WZ18evJQs5d5eS7wG+/qZrDZILPP1f2bpOpz0IId2LWm8nKy+LQ5UOcSz2ndhy3IsWvuJVXXnmFQ4cOsWvXLoYPH86WLVt4+OGHqVatGmPGjOE3la9/HCVzYD9qjIUsN5r2fL1u3SAtDdavVzuJEI5TrmnPQ4YMQaPRsGjRInQ6XfHPt7J48eIKB3RGZv9gIpLhwMU/1Y5CgwbKut/hw5Xpzz17qp1ICOGqYmJiCAgIoF+/fvTr10/VLCa9iezcTBouaEiwOZgr46X5la3odDLS40zi4uKIi4sjJcX51rg3bdqUpk2bMmvWLDZv3syKFStYunQp8+fPJyoqigEDBjBw4EDCw8PVjmoX5sBKJHm758gvQI8eyufBRx/BI4+onUYIxyhX8bt582Y0Gg2FhYXodLrin8tisVjcuiGMJiQEgPzEBJWTKIYOhR9/hGeegbvuUtrXCyHE7YqNjaVZs2ZqxwDAbDATtWozZ5dDrRh1l5i4Gxn5dS5FN5t2795N8+bN1Y5TKq1WS7t27UhKSuL8+fP88MMPHD9+nGnTpjF58mQee+wx5s+f73ZNsswGM+C+I78ajdJDZscOZd9fN750F6JYuYrf06dP3/Rnj2M2k6PXYLmSqHYSQPmwWrQImjSBAQNg0ybQW9XKTAghnINJb6La7uOcDYBCWaBjU1L8ivKyWCzFI75fffUVqampNG7cmLfffpv+/fuj0+lYunQpr7/+OgMGDGDjxo1qR7Yps/5a8eumI78Ao0bBo4/C+fNQvbraaYSwP6suKc6cOUNmZmaZr2dmZnLmzBmrQzk9jYY0HwOapCS1kxQLCoLPPoNfflE6+Akhyqdp06asv27B07Jly+QGnxPw0nnhe/EKRyopP7vTPptqk+JX3MrevXsZN24cNWvW5IEHHmD9+vU899xz7Nu3j7179zJ27FgqV65MpUqVePHFF5k+fTr//e9/1Y5tcya9CXDfkV9QBk4AVq9WN4cQjmJV8Vu7dm2++eabMl9fs2YNERERVodyBRl+XuiTU9WOcYN27WDKFJgxA37+We00QriGAwcOkJj41yyOwYMH87///U/FRALAoDMQkJzDpWs7rKRkO996SFel10vxK26uWbNmfPDBB9x33318//33nD17ltmzZ9OojH0V69evz9133+3glPan0+rQaXTkFeSpHcVuatVSHjdsUDeHEI5il8lkeXl5br3mFyArwBtjSrraMUp49VW45x5l+6ME51iSLIRTCw8P58cffyRfOgA5lUd+TeGOZEjzgqqpkCbFr83IyK+4lY8//phLly6xYsUKHnzwQbTam18uduzYkc2bNzsonWMZdUZyC3LVjmE3Gg2MHw8HD6qdRAjHKHfxm5KSwpkzZ4iPjwcgMTGRM2fOlPjat28fK1eudLumB3+XF+CLKdX5psHodMr05/x8Zf2vXOAIcXMjRoxg+fLlmM1m/Pz8AHjmmWfw8/Mr8eXv71/8KOxr1BfKvzUPxxs5PweyEi+qnMh9SPErbuXMmTM3Xf5x6NAhpk+f7rhAKjLqjOQU5Kgdw64aN4b4eFiwQO0kQthfudsivfvuu0ybNq345zFjxjBmzJgy3z9jxoyKJXNyh7u1Yf3hNbRXO0gpqlVTCuBOneD112HSJLUTCeG8xo0bR5MmTdi0aROXL19m6dKltGzZ8qZLN9x9ZoszKNQq/xtnB/gAuWSmylZHtmI2Q0aGdHcVZZs2bRqRkZE0bNiw1NcPHDhQ3OnZraWl8e63OeRXjgf3m9Vd7NFHISwMVq2CESPUTiOEfZW7+O3UqRM+Psriq/Hjx9OvXz+aNm16w3s0Gg0+Pj7cdddd3HXXXbZN6mSu3n83y3PjWOyk2zrdfz9MnaqsAb77buVnIUTpOnfuTOfOnQFYunQpQ4cOpX///iqn8mxai/KYH+gPJJGdKtsd2UrNmpCZCcnJSrNEIW5XUlISBoNB7Rj2l5/P4B3ZrOxySe0kduXjAwMHwtq1aicRwv7KXfzefffdxc0M0tPT6dWrV5mNDzxBsDmYAksBablp+Hs55xTIV1+FbdvgySdh715w85noQthEYWGh2hEEkGPSc8E3h/jmd8KmePIz0tSO5DaK9oI/c0aKX/GXrVu3snXrViwW5c7T6tWr+eOPP0q8LykpiZUrV3rGNaCXl/KY4/7d5kNDpVeM8AxW7QY7depUG8dwPcHmYACuZl112uJXp4MVKyA6WmmA9dNPsv+vEOWVlpZGfHw8SUlJxReD17v33ntVSOU5cr30fFcTiFSmn0vxazvXF79F25wIsXnz5hvW8a5evZrVZex/U79+febPn++oaOopLn7de80vKNOek5IgNxeMRrXTCGE/VpVCEydO5LvvvmPv3r0lXrNYLDRr1owePXq4dZF8ffFbO7C2umFuIiwMPv8cOnZUpkDPnKl2IiGcW2JiIqNGjeKrr76ioIyuQBqNpszXhG0U6nXoC0HvqwxNFmQ6X3d9VxUWplzcXutfKQQAEyZMYNSoUQCEhYWxYMECevXqdcN7NBoN3t7emM1mNSI6nk5HnhY0Oe7b7blIWJjymJio9I4Rwl1ZVfyuWrWKRx99tNTXNBoNXbt25YsvvvCY4tfZ3XuvUvS+9JKyF/BDD6mdSAjnNXToUNauXcvo0aNp164dQTIvVBUWXVHxq3TgLshM5+yTD3Ooawu6DJiqbjgXp9Uq637PnFE7iXAmZrO5uKg9efIkYWFheHt7q5xKfXkGLZpszxj5Bbh0SYpf4d6sKn7PnDnDnXfeWebrtWvXvmmLfHfgSsUvwLhxyvrfAQOU9b81a6qdSAjn9MMPPzBmzBhmz56tdpQKWbBgAYsWLeLgwYO8+uqrTJkyRe1ItyXbx4tcHRhNysW44VIiNePWEZO/TopfGwgPl+JXlK127dpqR3AauQYtmlz3H/mNilJujO3ZA3/rZyuEW7Gq+PXx8blpcXv69GlMJpO1mVyCv5c/Oo3OZYpfrRY++QSaNYPHH4etW2VNhxClMZvNN93myFVUq1aNadOm8dlnnzllR/pbmTvtIRbtXsTSwEC6Dw+gR+0QAFJMkJGbgY/RR+WEri08HI4dUzuFcBYRERFoNBqOHj2KwWAo/rm0fgdFz2s0Gk6ePKlCWsfK02vResC054AAaNAAnnkGevVSfhbCHVlV/Hbo0IGFCxcyfPhwatSoccNrZ8+eZeHChXTo0MEmAZ2VxmKhy0Vfcs+cAhfZ1SkkBL74Au65R5kCPWeO2omEcD4DBw7k66+/ZuTIkWpHqZAePXoAsG7dulIvYJ1doUXpum0webM3yp8HtPkApBshITNBit8KCg9XmiAKAXDfffeh0WiKb5Tdd999t/wdV7ypZo2D/wjmUrCX2jEc4plnYMwY+PNPKX6F+7Kq+J0+fTqtWrWiYcOGPP3008WboB84cIDFixdjsViYMWOGTYM6HY2Grz9MYa1uF/RUO0z5tWoFs2crH2733AOPPaZ2IiGcS+/evdm6dSsPPvggQ4cOJTw8HJ1OV+J9zZo1UyGd5ygqfo06I0adkazkROBa8ZuR4NSNBl1BeDicPw95eeAJ27WKm1u6dOlNf/Zkc56/C61Gywi1gzhA0bhVuvQXFG7MquK3Xr16bNu2jeeff5533333htfuvfde5s2bR/369W0S0GlpNKT5GOCqa0x7vt7o0cr638GDoWFDiIxUO5EQzqNdu3bF3//444+lvqei3Z4zMjKYNWsW//d//8fOnTtJTk5myZIlPPXUUyXem5OTw+TJk1m+fDnJyck0btyY1157jQceeMDq87uCkAsp9DwMRo0eg85A3pUkADIMkJYr2x5VVHg4WCzKCI8s7xSuLjc3l+HDh7Nx40aSk5OpX78+sbGxtG7dusLHNuqMZOZl2iCl8/P1VR6l+BXuzOpdXxs3bszWrVtJSEgoXvNxxx13EBoaarNwzi7Dz4guOVXtGLdNo4HFi6FFC+jZE3bsAB+ZQSgEAIsXL7b7ORISEpgxYwa1atUiOjqaLVu2lDmFcPDgwXz11VfExMQQGRnJkiVL6Nq1K5s3b6Zt27YArFixguHDhwPKtO0PPvjA7n8Ge/vH3nO89QX88JoXRp0RS5pS8KYbIS1Hit+Kun6vXyl+xd/t2bOHI0eO0K9fv+Ln1q9fz8yZM8nNzaVfv36MGTNGxYQ3ys/PJyIigl9++YUaNWqwcuVKunXrxunTp/Gp4AWOUWckOTvZRkmdmxS/whNYXfwWCQ0N9aiC93qZ/t4YU1zzIszfH1avhpYtYdgwWL5cKYqF8HSDBw+2+zmqVavGxYsXCQsLY9euXbRo0aLU9+3cuZOVK1fy9ttvM3bsWEApbhs2bMj48eP55ZdfAOjfvz/9+/cv83yuuDbPkJtPlgGMei8MWkPx1Vi6EdJz5cqsooo6/kvHZ1GaCRMm4O3tXVz8njp1ip49exISEkLVqlUZO3YsZrOZYcOGqZxU4e3tzaRJk4p/7tu3L2PHjuXYsWM0rWDrYi+dF7kF7t/wCpRrQ4Bkz6j1hYeyuvjNz89nw4YNnDp1iqSkpFIbqkyePLlC4ZxdboAvptREtWNYrUED+OgjePJJaNMG/vlPtRMJ4RmMRiNh1zZVvFkzqlWrVqHX6xk6dGjxc15eXjzzzDO88sor/Pnnn1SvXr3U3y0oKCAvL4/8/Hzy8vLIzs7GaDSi1Wpt+4exE31OHln6v9b8XjTlcSwYLr4NP1f/DRqXXeyLW/PxUZogxsernUQ4o3379vHiiy8W/7xs2TK0Wi27d+8mNDSUvn378uGHHzpN8ft3x48f5+rVqzfdlrO8jDqjxxS/JhMEB8O5c2onEcJ+rCp+f/vtN3r27Mm5W/ztcPfityDQH59Lrv0J0a8fbN8OMTHQvDnYYHmMEC5lyJAhaDQaFi1ahE6nK/75VhwxPXrPnj1ERUXhWzQX7ZqikeK9e/eWWfzOmDGD6dOnF/88c+ZMli5dyqBBg+wX2IYMOddGfnVGDDoDG+7U8OXTcPltyE9LUTueW6hTB06cUDuFcEYpKSlUqlSp+Od169bRqVOn4pl+DzzwAOvWrbP6+Pbse5CVlcWAAQN45ZVX8PPzszpjEU8qfkFZEnH2rNophLAfq4rfkSNHkp2dzbfffku7du0ICgqydS6XYAkKwi8jv3i/O1f19tvw22/Quzfs3g3XBqSE8AibN29Go9FQWFiITqcr/rksjvz7fuHCBapWrVri+aLnzp8/X+bvTp06lalTp9ormt31XP07Wgtc0Rl55H+JbDFe5edrU/IKszyj+Yy9RUXB0aNqpxDOqEqVKhw+fBhQPod27dp1w5KQ9PT0Cs0isXXfgyJ5eXn06dOHqKioG6ZBV4RRZyQnP8cmx3IFNWvCunVQWAguMlFIiNtiVfG7f/9+XnvtNbp162brPC5FG1KJoEwLWflZeBu81Y5jNaMRvvwSmjVTRoI3bAB9hVeDC+EaTp8+fdOf1ZSVlYWXV8n9JU0mU/HrthQTE0PA3zZ37Nev3w1NbxxFe202uFFnZMC3p6BeLhuKth7NlOLXFurWhfXr1U7hmeLi4oiLi7vhuZQU55nR8OijjzJ//nxycnLYsWMHRqORx67bG3H//v3ccccdVh/f1n0PAAoLCxk4cCA6nY5PPvnE6mx/Z9abycq37WetM6tbF9auVXrBlDIQL4TLs6rEKWuanae59Gw/2vmv4vesqy5d/AJUrw6ffw4PPACTJsEbb6idSAhhNpvJySk54pCdnV38ui3FxsY6zf7FC4Y0ovDgAR7UGSnUaiG/gAId5GsBGxf9nioqChITlR37goPVTuNZSruptHv3bpo3b65SohvNmDGDhIQEli1bRlBQEJ988glVqlQBlCL9yy+/5J8VaBRiq74H586do0aNGgAMGzaMixcvsmHDBpv2Nuj+4Ra67v4TXrDZIZ3aW28pMwJjY6F9e6hVS+1EQtiWVZ8OEyZMYOHChU51l1INAZWqk+4FV7Ncb6/f0nTooBS9b74J336rdhohRNWqVUud2nzhwgVAGT1xV989UJNRDysjvxadFl2h8ny2QQPZUvzaQlSU8nj8uLo5hPPx8/NjxYoVJCcnc+rUKfr06XPDa+fOneO1116ze45b9T3Yt28fAPHx8Xz88cf8+uuvVKpUCT8/P/z8/G4YGbaW0aLBP8P6fd1djVYLs2bBvn3QpYvaaYSwPatGftPS0vDz8yMyMpK+ffsSHh6OTqcr8b6iKSruKtis3Cp3l+IXYNw4Zd/fQYOUdcCRkWonEsJzNW3alC1bthR/5hb5v//7PwCio6PVimZ3hRal2jVoDeTptOiuDQ7l67VYcnLJzMvkZNJJGoY1VDGlaytqhHvsGLRqpW4W4TwyMjKoWbMmL7/8MuPGjSvxularJTAw0CFZytv3oFatWhQWFtolg8bLjCHfPsd2Vi++qGx39PrrkJurLI8Twl1YVfxe/2H4/vvvl/k+KX5dj0YDS5ZAixbQq5fSCbqC+8MLIazUu3dv3n77bRYuXMi//vUvQOl8umTJElq3bm3zJShFa37VWud7vYJCZaTFqDOSq9OiLwStRku+QYclL4fHP3mEk3s2c2BeHjqdNCmwhq+vsuTl2DG1k3i2ovW/zjKbzsfHB71ej48T/OPv6L4HpdGaTHjlQ15BHgadwe7ncwYaDdx/v1L8bt0KLVvC39pBCOGyrLpiOHnypK1zuKRAk3Ln052KX1A+4FavVkYChg+HZcuUD0IhhO289957JCcnF49crFmzhjNnzgAwevRo/P39admyJX369OHll1/m8uXL1KlTh08++YQzZ86wZMkSm2dypjW/xSO/OgOFOh26QjDpTSx6sg5Xw0Px/mEjh7+EE2P3UqfOXSqndV1RUVL8qq3oZpMzrfnt3bs3q1atYsSIEaruZmHvvgflafKnNZkx5UNmXiYBOs+pAP/xD+Xar3Nn5ftrzb+FsIozNfmzqvitXbu2jWO4Jp1WR6Ap0O2KX4CGDWHRIujfH9q0gZEj1U4khHt55513iI+PB0Cj0fD111+zevVqNBoNgwYNwt9f2ddn2bJlTJo0ieXLl5OUlESTJk347rvvaNeunZrx7a6o+NVr9Vi0WobvAo2pgLUjw9FpdaQe0wEFJMcfBSl+rRYVBddm0QtR7IknnmDkyJG0b9+e5557joiIiFILTXvfLLN334Py3PDTmMzKyG9hXoXO5WqqVoX9+2HpUqX5lWx9JCrCmZr8yVyxCgo2B7tl8Qvw5JPK+t8xYyA6Gu6+W+1EQthfREQEc+fOpXv37qW+vnbtWl544YUKz4A5depUud7n5eXFrFmzmDVrVoXO52oWdVvEgt8WYNabyQhQLrq9LDqMOiNZ+VkkGZVp0emJZe91LG4tKkrZ0sRikRk+4i/t27cv/n7btm2lvkej0VBQYN9GUM7Q90BjMmHKh+SCXLufy9k0bKg0Q33nHZg+HVx463ghillV/EZERKDRaEq0py+aGmOxWNBoNB4xPdqdi19Q2t3v2QM9eyoNsK7tKCCE24qPjyc9Pb3M19PT051qL2BbcqY1v3WC6/B257cB+GhaD4YNmkehQY9BZyA1J5VsswHII/PqJVVzurqoKGXb5PPnlfW/wvGcbc0vwOLFi9WOADi+70FptCYzXgWQm19y+rUn6NQJataEadNg4kTQy7CZcHFW/Sd83333lXiuoKCA+Ph4fvnlFxo2bOg068bsLea7K1yutRe6qZ3EPoxG+OoruOsuePRR2LYNbLy1qBAu5bfffnNYp1NHc6Y1v9fTa/UYC6DAaMCgNZBTkEOiXpmCmJ+SpHI611a03dGxY1L8qsUZ1/wOHjzY7udwxr4HpUlr04zhj8A4Dxz5BeU68LXX4KmnYMIEZRRYCFdmVfG7dOnSMl/bt28fDz74IP3797c2k0tpfTCZg6nufTcwLEzZ97dtW3j2Wfj0U5keJ9zL3Llzeffdd4tnr4y64AvgAAAgAElEQVQZM4aJEyeWeF9ycjLJyck8+eSTjo7o0fRaPV4FYDEYMOqMVDt2gTXzldcsaanqhnNxERGg08HRo8r0RiEcxVX6HhTUjeKj5vCCh635vd6TTyqjvt9/L8WvcH02n7zQpEkThg0bxoQJE9i1a5etD+90cv18MKWmqR3D7po2VbZAeuIJaNIExo9XO5EQthMaGkqDBg0AOH36NDVq1CjRSEWj0eDj48Ndd93FSOkA51BFI7+WayO/BWmpBCnNXinMKHuKurg1gwHuuEM6PouSsrKy+Oqrr9izZw8pKSk37KNbtLytItOjXaXvgVGnbHKbV+C5xa9er6z5HTIEfv9d6f4shKuyy8z9sLAwDh06ZI9DO538QD/MFxLUjuEQffsqnf9eeklpgtC1q9qJhLCNJ598sng0t3379kycOJEHHnhA5VSiiF6rxysfCr0MGHQGcjP/uuFYkJWpYjL3INsdib+Lj4+nffv2xMfHExgYSHJyMiEhISQlJVFYWEhISAi+vr5qx3SIouI310OnPRd58EHlccYM+OwzdbMIURE2b1qemJjI4sWLqeEhnZEKAwPwSfecu4EzZsAjj0C/fsrdPyHczZYtWzy28I2JiaF79+4l9uJTm0FnwFgAGI1EnEqm6Sll2LfzANja1jP+rbEnKX7VFRcXR/fu3YmJiVE7SrFx48aRmprK9u3bOXbtP47PP/+c9PR03nrrLcxmMxs2bFA5pWNI8auoWhVatoRNm9ROIkTFWDXy26FDh1I3PU9KSuLIkSPk5eWxbNmyCodzBZrgEAIzC8nJz8FL76V2HLvTapU1v3ffDQ8/rGyFFBamdiohbO/QoUOcOnWKpKSkEp3tAQYNGqRCKvty5oZX/3wY/BpXY2jcThr+ojx/pJY3oT7qZnMHUVFw8iTk5SnToIVjOWPDq02bNjFixAhatWrFlStXip83mUyMGzeOw4cPM2bMGNatW6diSseQ4vcv48dD797w66/QooXaaYSwjlXFr8ViKXWbo4iICDp16sTTTz9NvXr1bBJQTeXZ9kMXUomgbEjKTqKKbxUHJ1SHvz/85z/QqpXSAXrTJjCZ1E4l3IXa236cOHGC/v37s3Pnzpu+zx2LX2el1+pZ2hSeiAgD3V/7+nr5+JPjoduP2FJUFBQUwKlTf3V/Fp4tMzOTiIgIAPz9/dFoNDd8Jrdp04YXX3xRrXg2U57rvKLiN6dAPmtatlQe774bcnOl+amwjtrXeeUqfvfv3094eHjx9h5btmyxZyanUZ5REGOlKgRlw6G0yx5T/ALUqgVr1kD79jB4sLL+Q2vzSfTCE6k9CjJs2DAOHjzI3LlzadeuHUFBQQ7PIG5099JNzNsHu6NNN2wy6eXtT3Z+torJ3MP12x1J8SsAatasyblz5wAwGAxUq1aN7du307NnTwB+//13TG5w17s813m+RmVtc0ZuhiMiObWaNWHWLGUEOC1NGQwR4napfZ1XrnIlOjr6hqktHTt2ZOPGjXYL5Ur0/2jAN3UhJfWy2lEcrmVLWL4cVq6EyZPVTiOEbfzyyy+MHz+e559/nqZNm1K7du1Sv4TjBP95hSYXwUvnhUWnA6AQ8DZL8WsL1auDt7es+xV/uf/++/nmm2+Kfx4yZAixsbE8++yzPP3007z33nt069ZNxYSO45OvpdMfkHvp/K3f7AFatVIe33xT3RxCWKtcI7/e3t5kZv7VUXPLli08++yzdgvlSswdO/NYP1hDltpRVNGrF7z1lrLx+Z13KqPAQriykJCQ4lkunqY8UwBVodOhLwST3oRFryfFC165H/xNAUrxu3Ej/PQTvPGG2kldkkYjTa/UpPYUwNJMmDCB3377jezsbEwmEy+//DLnz59n1apV6PV6+vfvz5w5c9SO6RC6q0n88Cl8c9cR6Kh2GvW1bg0hIfDxx8o+4c89p3YiIW5PuYrfxo0bM2fOHLRaLQEBAQD8+uuvt5zyUjQ9xp0FmZUpkVezrqqcRD3jxsHx4zB0KNSurUyFFsJVjRgxgk8//ZSRI0ei19tlNzin5awNr9Dr0VmUkV/0Oo5Ugg9aQk9TACkpKeRPGE/26T/wfn0mWo2sv7CGFL/qUXsKYGlq1apFrVq1in82m8189NFHfPTRRyqmUomX0sw0L1P2FAcwGuHLL2H4cOW6b/BgaZQnXEu5ruzmzp1Lnz59bhjtnTt3LnPnzi3zdzQaDQUFBRVP6OSMOiO+Rl+PLn41GvjgAzh9Gnr2hO3boW5dtVMJYZ2oqCgKCgqIjo5myJAhhIeHo7s21fZ6nnBzz1lodHr0hUrjK4te+R7Az+hHdn42JzMT2FE9lcaX9hNdJVrdsC4qMhL++1+1UwhnZLFYSEhIACA0NLTU3T7c2rXiN1+K32IdOijTnnv2VCbedOmidiIhyq9cxW+LFi04fvw4J06c4PLly7Rv355XXnnFY/fC/Ltgc7BHF7+g3PX78kto2xa6dlW2QAoNVTuVELevb9++xd+PGzeu1Pd4ys09p3Gt4NVpdcVToAHa/+8CQZcTMebmk+UNRxOPSvFrpchIOH8eMjLAR7aPEijbvU2ePJkNGzYUL33z8fGhc+fOTJs2jYYNG6qc0EGuzXLU5MpWR9fr0QP8/GDXLil+hWsp95w+g8FAvXr1qFevHoMGDeKRRx6hdevW9szmMqT4VQQGwnff/bUF0saNsgWScD2bNm1SO4L4G2NWLnUvwffZBewY3ZOYqG0AtPjvSWqmpmDMNZGlh/zMRJWTuq7ISOXx5Elo1EjdLEJ927Zto0uXLlgsFnr06EHktf9Ajh07xrfffsv69ev5/vvvuffee1VO6gBGZasjcmSro+tptRAdDRMnKtd9Mh4mXIVVC9qWLl1q4xiuLdgczNVsKX5BaX6wZo0yJUa2QBKuqL0sWnc6fmcvARByKY3C0HCyjKDT6LAYjRjyCtHn5JFpgPysKyondV133qk8/vGHFL9CaX4XFhbGzz//TM2aNW947ezZs9xzzz2MHTuW3377TaWEDqTRkKvXoM2Wkd+/W7QI6tWDTp3g3Dmlc7wQzk7KEhuQkd8btW4Nn34KX3wBY8eCxaJ2IiFuX05ODtu3b+fbb78tXu/m7mJiYujevTtxcXFqR7nB1UbXhiW9vJSpz4BBZ8BiNGDIL0Sfm0eWwbMbD1ZUaKgyhfH4cbWTeJ64uDi6d+9OTEyM2lGKHTp0iJEjR5YofEHZA3jkyJEcOnRIhWTqyDVoIVdGfv+ubl2l5wvAmDGwb5+6eYQoDyl+bSDYFExyhow4XK9XL3jvPZg7F2bPVjuNELdn7ty5VKlShbZt29KzZ08OHDgAQEJCAiEhIXz88ccqJ7SP2NhY1qxZ41zbHAHn2zUGQOPlhV6rTFjSaXQUGg0Y8ix45RSQpYeM3Aw1Y7o0jUYZ/f3jD7WTeJ5+/fqxZs0aYmNj1Y5SLDw8nNybrHHNzc0lPDzcgYnUlafXos2Rkd/SjBgBjz0Ga9fK9Z5wDVL82sDoNzcz4/3f1Y7hdEaOVNaCTJgAy5apnUaI8lmyZAkxMTE89NBDLF68GMt1UxdCQ0O5//77WblypYoJPdC1tXYWoxGdRkf9y9DoogWLlxFjfiGXAw0k+EB6nnRjrYjISCl+hWLy5MnMnTuXPXv2lHhtz549zJs3jylTpqiQTB1PzWrDt92i1I7htFavhm7d4NIltZMIcWuetYmlnWh8fPC+INNhSjN9Oly4AE8/rUyre+ghtRMJcXPvvPMO3bt357PPPiMxsWQDpWbNmjFv3jwVknmwayNQmmvTnqdsgdC8XAqbG/DKt/DY9CgiN+2j7u7T0EvVpC7tzjvhf/9TO4VwBjt27KBKlSrcddddtGnTprjh1fHjx9m+fTsNGjRgx44d7Nix44bfc9fPxlxfM1la6fB/M2FhsGoVHDggfQOEc5Pi1wYswUH4ZxRQUFhQvB5NKDQa+Pe/4fJl6N0bNm+Gli3VTiVE2f744w9Gjx5d5uvBwcFcuSLLHBxJUzTd0MsLnUaHVwHk6jVgMKIvtJCRl8GYHfw/e3ceHlV5/n/8fZbZshPCEnaYEURlc0FQQS2KS2tqBdQIuGFptdVvU4u4oGhp1R9aqVatuAEiTd3ArbUoijsqgiCiIkII+xJC9sx+fn+cJCQCIYSZnFnu13VxTXJmwnxASeae537uh8rtmyzNGe88HnNoTW0tuFxWpxFWeuyxxxo+/vTTT/n0J++KfPPNN3zzzTcHfF28Fb8FBQVkZmaSn5/f7HYPu2bHH5K25+b87nfm/t+vv5biVzSvsLCQwsJCysvLLXn+Vrc9l5eXc9999zF69GiGDBnCF198AUBpaSkPPfQQPyZR75Sa3Z52XijzllkdJSbpOvz73zBoEPz857BundWJhDi0zMzMZgdcfffdd3Tu3LkNE4n6tmfV4URXdRxBcw+eLyeLjVnmXt8qO9hrpQPnaDQ+7kgkt3A43Kpf8aalcw5smo1AONBGqeLTcceBwwErV1qdRMQ6q+cctKr43bp1K0OGDGH69Ols3bqV1atXU1Vl7rVq164ds2fPjrt3/46GLacT7Wpl0mhzUlLMM4A7djTPgisqsjqREAf385//nKeeeop9+/YdcN/atWt56qmnyMvLsyBZ8rLXdRu6XBl0+nwt528wV36/n3gB50+ESn8lVXaweeXF6dFofNyREI199913zJgxgxtuuIGHH36YiooKqyO1KVn5bZn0dHj3XatTCNG8VhW/U6ZMoaqqiq+++ooPP/ywyX2KonDxxRfzbhL93+/I6UxaAPaVy07/5mRnwzvvgNMJo0bBli1WJxLiQDNmzCAUCjFgwADuvPNOAObNm8f48eM56aST6NChA3fddZfFKZPLKXc8xlNLZnLpCZeRsWkHAEGb3jD5ucpfRcBlx1Erxe/R6NQJ0tLkuKNk9eijj9K3b98DZh288cYbDB48mOnTp/PEE09QUFDAkCFDDjoTIVFJ8dsyN95oHnd0991WJxHi0FpV/L799tvceOONHH/88Qe9v3fv3mzevPmogsUTVyfzVO/KXcnzZ26tLl3gvffMs39HjTKHYQkRS7p27cqXX37J+eefz7///W8A5s+fz5tvvskVV1zB559/TocOHSxOGR2xes6v7nDx61FT0FQNVbcBELZp2DRbw2PCqSm4fEGrIiYEOe7IGrFyzu/rr79Onz59yMnJabgWDAa57rrr0DSNOXPm8PXXX3P//fezefNm/vKXv1iYtm3ZVBuBkLy5djg33AA5OfCXv0BI5oOJGNWq4re2tpaOHTse8v7KyspWB4pHaZ3MQ+Brdm+zOEl86N7dLIBra80CePduqxMJ0VSnTp14+umnKS0tZefOnWzfvp3S0lKeffbZZr/3xbtYPee3CZtZ8Ppcdmzq/uKXtHRcvvjbcxhrpPhte1bvf6v37bffMnz48CbXli5dyp49eygoKOCqq67ihBNO4JZbbuHSSy/lrbfesihp25OV35bJyYG77jIL3xUrrE4jxMG1qvjt378/H3zwwSHvf+211xgyZEirQ8Ubx4AhXH65zo50q5PEj969zX0hZWUwYgQkUaOAiCOKotCxY0c6d+6Mpskk91ig2uwAVKXbG9qeAbT0DFJ8BqGwLDccDY9H2p6T1d69e+nevXuTa0uWLAHgV7/6VZPrp512GsXFxW2WzWoj3/mBif/bbnWMuDBhgnn79NPW5hDiUFp11FH9O4CDBg1i7NixAIRCIdavX88999zDp59+yiuvvBLRoLFMad+eD0/uwHFaLezZY771pShWx4p5ffvCRx/BuefCGWeY+4H79bM6lUg299xzD4qicMcdd6BpWsPnhyP7fq1hszsB+M8Znfi9ZuPMInhoMWw7N50KB7Sb+wz+d/5Hxr9eadF/R9GUx2POY/B6zfkMInl06tSJnTt3Nrn20UcfkZKSwuDBg5tct9vt2O32toxnKc/aHXg2JteQr9Zq1w7OPBM2bbI6iRAH16rid8KECRQXF3PHHXdw++23A3D++edjGAaapnHfffcd8C5host2ZZP16VdwVkc2PDUT93VTrI4UF9xuswAePdpcAX7zTTkHWLSte+65B4Bbb721ofhtCSl+raHXFb9Bhw1d1elYDSfuhHcu/xl57s/YuORVype+xfpvX2bc8eMsTht/jjnGnMlQVAT9+1udRrSlk08+mXnz5vH73/+ejIwM1q5dy/Lly8nLy0PXm75cXLduHd26dbMoqQVsNjTZxNpip50G990HwaB53KUQsaTV/0vecccdTJgwgYULF7J+/XrC4TAej4dLLrmEPn36RDJjXMh2ZZO98BMA3njlXv4gxW+Lde0KH3wAeXkwciQ8+yxccYXVqUSy+OnZlPF4VmUysdldANgNFZtqw1U34yq7vflCvHJ7EXtS4ds931oVMa41Pu5Iit/kMn36dE4++WT69u3L8ccfz5dffgnAbbfddsBjFy1axNlnn93WES1j2GzoQcPqGHGjfufj0qVmd58QseSo3o/p2bOn5dMJY0W2K5t2m/fw5jEw9fQa/mB1oDiT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GFx11VV49dVXG/YiE5FuMOcx5xE1Jsx5zHmhwKh1ABQ6hBAYO3YsDh8+jC+//BIrVqzw6jNmzBgsX74cI0eOxBNPPIFdu3bhtddeQ35+PtavXw+j0eg+1o4dO3D//fdj7NixGDNmDDp06AAAWLBgATp16oRBgwbBaDTi448/xvjx4+FwODB+/HgAwNy5c/H4448jKioKzzzzDAAgMTGxztiXLVuGkSNH4pprrsFLL72EwsJCzJ07F+vXr0d+fj5iYmLcfe12O/r164cePXpg9uzZ+PLLLzF79mykpKRg7NixAIAvv/wS999/P2655RY88sgjAIBt27bh+++/x4QJE3zwahOR1pjzmPOIGhPmPOa8kCCJGmjp0qVSCCG3bNkipZTy0UcflUIIr37ffvutFELIf/7znx7ta9askUII+c4777jbkpOTpRBCfvHFF17Hqaio8Grr37+/TElJ8WhLS0uTffv29eq7bt06KYSQ33zzjZRSyqqqKpmQkCCvuuoqWVlZ6e63atUqKYSQU6dOdbc9+OCDUgghn3/+eY9jZmRkyO7du7vvT5w4UTZp0kQ6HA6v309EwY05jzmPqDFhzmPOCyWc9kwB89577yEmJgY333wziouL3beMjAxERERg3bp1Hv3btWuHW2+91es4FovF/X1paSmKi4tx4403YteuXTh16tRFx7V582YUFRVh/PjxMJvN7vbbb78dHTt2xKpVq7x+xvXJn8v111+PXbt2ue83bdoUZWVl+OKLLy46HiIKDcx5RNSYMOdRMOC0ZwqYgoIClJaWIiEhodbHi4qKPO63bdu21n7r16/H1KlTsWHDBpw5c8bdLoRAaWkpoqKiLiquvXv3AoB7uk1NHTp0wPr16z3arFYrYmNjPdqaNm2KkpIS9/3x48fjX//6FwYMGICWLVvitttuw7333ot+/fpdVGxEFLyY85jziBoT5jzmvGDA4pcCxuFwICEhAe+8806tj8fHx3vct1qtXn3++OMP3HzzzbjyyisxZ84cXHbZZTCbzVi1ahXmzJnjtRiBL5y7WmDNhR3qEh8fj61bt2LNmjVYvXo1Vq9ejaVLl2L48OG1LstPRKGHOY85j6gxYc5jzgsGLH7J5+paWj4lJQVfffUVevXqhbCwsEs69ieffIKqqip8/PHHaNWqlbv9q6++uuA4zpWcnAwA2L59O/r06ePx2I4dO9yPXyyTyYQ777wTd955J6SUGD9+PBYuXIjnnnsO7dq1u6RjEpH+MOepmPOIGgfmPBVzXnDiNb/kcxEREQDU6zRqGjJkCOx2O3Jycrx+prq62qt/bQwGAwB4fPJXWlqKpUuXeiXBiIgIjykqdbn66quRkJCABQsWoKqqyt2+evVqbN++HXfccYdH/wtJtsePH/f6mc6dOwMAKisr6/15IgoezHnMeUSNCXMec14w48gv+Vz37t0BABMmTMBtt90Gg8GA++67DzfeeCPGjBmDF198EVu3bsWtt94Kk8mEgoICvP/++3j11Vfx5z//+bzH7tevH8xmMwYOHIjRo0ejrKwMb775JhITE1FYWOgVxxtvvIGZM2ciJSUFiYmJ7j3gajIajZg1axYeeugh9O7dG/fddx+OHDmCuXPnom3btsjOzvboL6Ws9zV4+OGHUVJSgptuugktW7bE3r17MW/ePKSnp+OKK66o9+eJKHgw5zHnETUmzHnMeUFNy6WmKTQsXbpUKoriXgLfbrfLCRMmyISEBKkoilQUxaP/4sWLZffu3WV4eLiMjo6WXbp0kU8//bQsLCx092nTpo0cOHBgrb/vk08+kV26dJFWq1W2a9dO/u1vf3PHsHfvXne/I0eOyDvvvFNGR0dLIYR7Ofx169ZJRVHcS+C7/Otf/5IZGRkyLCxMxsXFyWHDhslDhw559BkxYoSMioryimnatGkez/Pf//637Nevn0xMTJQWi0W2adNGjhs3Th45cuRCXlIi0jHmPOY8osaEOY85L5QIKS/g4w0iIiIiIiKiIMZrfomIiIiIiCjksfglIiIiIiKikMfil4iIiIiIiEIei18iIiIiIiIKeSx+iYiIiIiIKOSx+CUiIiIiIqKQx+KXiIiIiIiIQh6LXyIiIiIiIgp5LH6JiIiIiIgo5LH4JSIiIiIiopDH4peIiIiIiIhCHotfIiIiIiIiCnksfomIiIiIiCjk/X8POP7YhGmw2wAAAABJRU5ErkJggg==",
"text/plain": [
"PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x32252bd50>)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"subplot(131)\n",
"PyPlot.semilogy(1:maxiter, ista[2], color=\"blue\");\n",
"PyPlot.semilogy(1:maxiter, simple[2], color=\"green\");\n",
"PyPlot.semilogy(1:maxiter, fista[2], color=\"red\", linestyle=\"dashed\");\n",
"xlabel(\"Iterations\")\n",
"ylabel(\"Objective function value\")\n",
"ax = gca()\n",
"ax[:set_ylim]([100, 1000])\n",
"ax[:legend]((\"PGD\", \"AGD (simple)\", \"AGD (fista)\"), loc=1)\n",
"\n",
"subplot(132)\n",
"PyPlot.semilogy(1:maxiter, ista[3], color=\"blue\");\n",
"PyPlot.semilogy(1:maxiter, simple[3], color=\"green\");\n",
"PyPlot.semilogy(1:maxiter, fista[3], color=\"red\", linestyle=\"dashed\");\n",
"xlabel(\"Iterations\")\n",
"ylabel(\"Gradient inf norm\")\n",
"ax = gca()\n",
"ax[:set_ylim]([0, 100])\n",
"\n",
"subplot(133)\n",
"PyPlot.semilogy(1:maxiter, ista[4], color=\"blue\");\n",
"PyPlot.semilogy(1:maxiter, simple[4], color=\"green\");\n",
"PyPlot.semilogy(1:maxiter, fista[4], color=\"red\", linestyle=\"dashed\");\n",
"xlabel(\"Iterations\")\n",
"ylabel(\"Sparsity\")\n",
"ax = gca()\n",
"ax[:set_ylim]([0, n])\n",
"\n",
"PyPlot.subplots_adjust(right=1.2, wspace=.4)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Fused Lasso\n",
"===\n",
"\n",
"$$\n",
" \\min_{x\\in\\R^n} \\;\\; \\frac12 \\|y - x\\|^2 + \\lambda \\|Dx\\|_1\n",
"$$\n",
"\n",
"where $D \\in R^{|E|\\times |V|}$ is an **ordered incidence matrix** of a graph $G = (V,E)$,\n",
"\n",
"$$\n",
"D_{ev} = \\begin{cases} \n",
"+1 & \\text{if $v$ is the head of the edge $e$} \\\\\n",
"-1 & \\text{if $v$ is the tail of the edge $e$} \\\\\n",
"0 & \\text{otherwise}\n",
"\\end{cases}\n",
"$$\n",
"\n",
"We denote by $n=|V|$ and $m=|E|$."
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Fused Lasso by PGD\n",
"===\n",
"\n",
"PGD:\n",
"\n",
"$$\n",
" x_{k+1} = \\prox_{\\alpha_k \\lambda \\|D\\cdot\\|_1} (x_k + \\alpha_k (y-x))\n",
"$$\n",
"\n",
"Is this the same type of soft-thresholding operator we've seen for $\\|x\\|_1$?"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Fused Lasso by ADMM\n",
"===\n",
"\n",
"$$\n",
" \\min_{x\\in\\R^n} \\;\\; \\frac12 \\|y - x\\|^2 + \\lambda \\|Dx\\|_1\n",
"$$\n",
"\n",
"We like to re-use the prox operator for $\\|x\\|_1$. How would you change the formulation to do so?\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"Fused Lasso (ADMM)\n",
"===\n",
"\n",
"\\begin{align*}\n",
" \\min_{x\\in\\R^n, z \\in \\R^m} &\\;\\; \\frac12 \\|y - x\\|^2 + \\lambda \\|z\\|_1 \\\\\n",
" &\\;\\; Dx - z = 0\n",
"\\end{align*}\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"The augmented Lagrangian (with multipliers $\\alpha \\in \\R^m$),\n",
"\n",
"\\begin{align*}\n",
" L_\\rho(x,z; \\alpha) = \\frac12 \\|y - x\\|^2 + \\lambda \\|z\\|_1 + \\alpha^T(Dx-z) + \\frac{\\rho}{2} \\|Dx-z\\|^2\n",
"\\end{align*}"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"ADMM\n",
"===\n",
"\n",
"\\begin{align*}\n",
" L_\\rho(x,z; \\alpha) = \\frac12 \\|y - x\\|^2 + \\lambda \\|z\\|_1 + \\alpha^T(Dx-z) + \\frac{\\rho}{2} \\|Dx-z\\|^2\n",
"\\end{align*}\n",
"\n",
"$$\n",
"\\begin{cases}\n",
" x_{k+1} &= \\argmin_{x} \\; L_\\rho(x,z_k; \\alpha_k) = \\argmin_x \\;\\frac12 \\|y - x\\|^2 + \\alpha_k^T Dx + \\frac{\\rho}{2} \\|Dx-z_k\\|^2 \\\\\n",
" z_{k+1} &= \\argmin_{z} \\; L_\\rho(x_{k+1},z; \\alpha_k) = \\argmin_z \\; \\lambda \\|z\\|_1 - \\alpha_k^T z + \\frac{\\rho}{2} \\|z - Dx_{k+1}\\|^2 \\\\\n",
" \\alpha_{k+1} &= \\alpha_k + \\rho(Dx_{k+1} - z_{k+1})\n",
"\\end{cases}\n",
"$$\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"x-update\n",
"===\n",
"\n",
"$$\n",
" x_{k+1} = \\argmin_x \\;\\frac12 \\|y - x\\|^2 + \\alpha_k^T Dx + \\frac{\\rho}{2} \\|Dx-z_k\\|^2 \n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"\\begin{align*}\n",
" & -(y-x_{k+1}) + D^T\\alpha_k + \\rho D^T(Dx_{k+1}-z_k) = 0 \\\\\n",
" & \\Rightarrow (\\rho D^TD + I)x_{k+1} = y - D^T\\alpha_k + \\rho D^Tz_k\\\\\n",
" & \\Rightarrow x_{k+1} = (\\rho D^TD + I)^{-1}(y - D^T\\alpha_k + \\rho D^Tz_k)\n",
"\\end{align*}"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "slide"
}
},
"source": [
"z-update\n",
"===\n",
"\n",
"$$\n",
"z_{k+1} = \\argmin_z \\; \\lambda \\|z\\|_1 - \\alpha_k^T z + \\frac{\\rho}{2} \\|z - Dx_{k+1}\\|^2 \n",
"$$"
]
},
{
"cell_type": "markdown",
"metadata": {
"slideshow": {
"slide_type": "fragment"
}
},
"source": [
"\\begin{align*}\n",
" z_{k+1} &= \\argmin_z \\; - \\alpha_k^T z + \\frac{\\rho}{2} \\|z - Dx_{k+1}\\|^2 + \\lambda \\|z\\|_1 \\\\\n",
" &= \\argmin_z \\; \\frac{\\rho}{2} \\|z - Dx_{k+1} - \\frac{1}{\\rho}\\alpha_k\\|^2 + \\lambda \\|z\\|_1 \\\\\n",
" &= \\prox_{\\lambda/\\rho \\|\\cdot\\|_1} \\left( Dx_{k+1} + \\frac{1}{\\rho}\\alpha_k \\right)\n",
"\\end{align*}"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false,
"slideshow": {
"slide_type": "slide"
}
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"RGB Images.Image with:\n",
" data: 32x32 Array{ColorTypes.RGB{FixedPointNumbers.UFixed{UInt8,8}},2}\n",
" properties:\n",
" imagedescription: <suppressed>\n",
" spatialorder: x y\n",
" pixelspacing: 1 1"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"using Images, ImageView, Colors, PyPlot\n",
"pic = load(\"./tu32.tiff\");\n",
"pic"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"picture dim = (32, 32)\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"RGB Images.Image with:\n",
" data: 32x32 Array{ColorTypes.RGB{Float64},2}\n",
" properties:"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = separate(pic);\n",
"picx,picy = size(y)\n",
"y = y[:,:,1];\n",
"y = float(y[:]);\n",
"\n",
"# noise\n",
"r = .05\n",
"y[rand(picx*picy) .> 1-r/2] = 1; # salt\n",
"y[rand(picx*picy) .< r/2] = 0; # pepper\n",
"\n",
"print(\"picture dim = ($picx, $picy)\\n\")\n",
"\n",
"yim = reshape(y, picx, picy);\n",
"Image(map(RGB, yim, yim, yim)')"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"m,n = 1984, 1024, length img vec = 1024"
]
}
],
"source": [
"n = picx*picy\n",
"m = 2n - (picx + picy-2) - 2\n",
"\n",
"print(\"m,n = $m, $n, length img vec = $(length(y))\")"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"total added edges = 1984"
]
}
],
"source": [
"D = spzeros(m,n);\n",
"e=1;\n",
"\n",
"valid(coord) = (coord[1] >= 1 && coord[1] <= picx && coord[2] >= 1 && coord[2] <= picy)? true:false\n",
"c2i(coord) = (coord[2]-1)*picx + coord[1]\n",
"\n",
"for i=1:picx, j=1:picy\n",
"\n",
" coords = ( (i,j+1), (i+1,j) )\n",
" \n",
" for c in coords\n",
" if(valid(c)) \n",
" D[e, c2i((i,j))] = 1;\n",
" D[e, c2i(c)] = -1;\n",
" e=e+1;\n",
" end\n",
" end\n",
"end\n",
"\n",
"print(\"total added edges = $(e-1)\")"
]
},
{
"cell_type": "code",
"execution_count": 139,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0.044810 seconds (26 allocations: 40.085 MB, 19.31% gc time)\n"
]
}
],
"source": [
"# Soft-thresholding function\n",
"soft(v, lam) = (sign(v) .* max(abs(v) - lam, 0))\n",
"\n",
"DD = D'*D\n",
"\n",
"ρ = 1000; \n",
"δ = 0;\n",
"\n",
"\n",
"@time L = chol(ρ*DD + (1+δ)*eye(n), Val{:L});\n"
]
},
{
"cell_type": "code",
"execution_count": 140,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"iter primal infeas rho diff_x diff_z diff_alp pd_gap\n",
"1000: 4.227e+01 1.550e-05 1.200e+03 7.269e-05 4.433e-04 4.209e-03 1.720e+00\n",
"2000: 3.572e+01 3.630e-05 1.440e+03 3.931e-05 3.553e-04 1.163e-02 1.444e+00\n",
"3000: 3.277e+01 4.115e-06 1.728e+03 2.458e-05 3.025e-04 1.833e-03 1.242e+00\n",
"4000: 3.123e+01 1.928e-07 2.074e+03 1.614e-05 2.399e-04 1.701e-04 1.101e+00\n",
"5000: 3.038e+01 1.674e-08 2.488e+03 1.124e-05 1.927e-04 1.945e-05 9.982e-01\n",
"6000: 2.985e+01 4.686e-08 2.986e+03 8.318e-06 1.571e-04 8.193e-05 9.222e-01\n",
"7000: 2.950e+01 6.449e-09 3.583e+03 6.216e-06 1.286e-04 1.319e-05 8.639e-01\n",
"8000: 2.926e+01 1.834e-07 4.300e+03 4.810e-06 1.053e-04 1.600e-04 8.188e-01\n",
"9000: 2.908e+01 3.258e-07 5.160e+03 3.755e-06 8.461e-05 8.298e-04 7.837e-01\n",
"10000: 2.895e+01 2.240e-09 6.192e+03 2.951e-06 6.876e-05 6.836e-06 7.565e-01\n",
"11000: 2.885e+01 1.385e-09 7.430e+03 2.357e-06 5.595e-05 5.478e-06 7.346e-01\n",
"12000: 2.878e+01 5.527e-09 8.916e+03 1.818e-06 3.962e-05 3.765e-05 7.181e-01\n",
"13000: 2.874e+01 1.976e-08 1.070e+04 1.264e-06 2.665e-05 1.595e-04 7.072e-01\n",
"14000: 2.871e+01 3.789e-08 1.284e+04 1.006e-06 2.052e-05 3.615e-04 6.996e-01\n",
"15000: 2.870e+01 3.046e-10 1.541e+04 7.436e-07 1.551e-05 3.784e-06 6.939e-01\n",
"16000: 2.869e+01 1.448e-10 1.849e+04 5.931e-07 1.269e-05 2.497e-06 6.897e-01\n",
"17000: 2.868e+01 1.512e-09 2.219e+04 4.819e-07 9.704e-06 1.878e-05 6.864e-01\n",
"18000: 2.867e+01 1.288e-10 2.662e+04 3.816e-07 7.972e-06 2.805e-06 6.838e-01\n",
"19000: 2.866e+01 4.606e-09 3.195e+04 2.892e-07 5.334e-06 9.588e-05 6.819e-01\n",
"20000: 2.866e+01 6.141e-11 3.834e+04 2.311e-07 4.390e-06 2.046e-06 6.806e-01\n",
"21000: 2.866e+01 4.456e-11 4.601e+04 1.869e-07 3.622e-06 1.516e-06 6.795e-01\n",
"22000: 2.866e+01 3.180e-11 5.521e+04 1.421e-07 2.555e-06 1.434e-06 6.787e-01\n",
"23000: 2.866e+01 2.162e-11 6.625e+04 1.155e-07 2.112e-06 1.087e-06 6.782e-01\n",
"24000: 2.866e+01 1.419e-11 7.950e+04 9.441e-08 1.749e-06 8.322e-07 6.777e-01\n",
"25000: 2.865e+01 7.384e-12 9.540e+04 7.612e-08 1.432e-06 5.896e-07 6.773e-01\n"
]
}
],
"source": [
"maxiter = 25000\n",
"λ = .3\n",
"\n",
"x = y\n",
"z = D*x;\n",
"α = zeros(m)\n",
"Dalp = zeros(n)\n",
"\n",
"prevX, prevZ, prevAlp = x, z, α\n",
"\n",
"@printf \"iter primal infeas rho diff_x diff_z diff_alp pd_gap\\n\"\n",
"\n",
"for k=1:maxiter\n",
" \n",
" tmp = y - Dalp + ρ*(D'*z);\n",
" x = L'\\(L\\tmp);\n",
" Dx = D*x;\n",
" z = soft(Dx + (1/ρ)*α, λ/ρ)\n",
" r = Dx-z\n",
" α = α + ρ*r\n",
" Dalp = D'*α\n",
" \n",
" if(k%1000==0)\n",
" \n",
" primal = .5*vecnorm(y-x)^2 + λ*vecnorm(z,1)\n",
" pd_gap = (λ*vecnorm(Dx,1) + dot(Dalp,x))/max(1,primal)\n",
" infeas = vecnorm(r,Inf)\n",
"\n",
" reld_x = vecnorm(x-prevX)/max(1,vecnorm(x))\n",
" reld_z = vecnorm(z-prevZ)/max(1,vecnorm(z))\n",
" reld_alp = vecnorm(α-prevAlp)/max(1,vecnorm(α))\n",
" \n",
" ρ = ρ*1.2;\n",
" L = chol(ρ*DD + (1+δ)*eye(n), Val{:L});\n",
" \n",
" @printf \"%04d: %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e %8.3e\\n\" k primal infeas ρ reld_x reld_z reld_alp pd_gap\n",
" end\n",
" \n",
" prevX, prevZ, prevAlp = x, z, α\n",
" \n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 141,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAABRpJREFUeAHtXclKK0EUNTEaEY0iOICoKxdusvAH9Hf9FXduFBQX4kLdiAkKBuO07HsJXVyqu3KH81Y5XdM9w6suM3Zubm5+F2r+PTw81LTKm4bDoWjQysoK6d/tdgkGyFMAaubpZ340AmDewjwCCECefuZH91IMjo6OSJemzwRkcoDiCmAHKC65rgURAF1+FK8GASguua4Fk2cAXeWiGq7A5+cnucSfNyGNMwB2gBmiRLqEAERyewZXBGCGKJEuqT8D8Hvc6upqJH+SXKX3fD4hdgCuSDCMAAQznNNFALgiwTACEMxwThcB4IoEwwhAMMM5XQSAKxIMIwDBDOd0EQCuSDCMAAQznNNFALgiwXDx1wKm02mWxOPxmIwfDAYEA8gUwA4g08tdbwTAnaUyQgiATC93vREAd5bKCCEAMr3c9UYA3FkqI4QAyPRy17v38/NTlNRoNGp0vdR819fXZL3z83OCpaDf70uHqO6PHUC1Pe0XhwC0r7HqFRAA1fa0X1zn4uKi9juC2i/B1gpnZ2ek4KWlJYJLg8vLS7LkZDIhOAWwA6QUct6OADg3OEUPAUgp5LwdAXBucIoeApBSyHk7AuDc4BQ9BCClkPN2BMC5wSl6CEBKIeftCIBzg1P0EICUQs7bi38uwLqeHx8ftRSWl5dr27U1YgfQ5kjhehCAwoJrWw4B0OZI4Xp6JycnoiUfHx9F/Xnng4MDfmmu+P83k7LWt3bP52SxA3BFgmEEIJjhnC4CwBUJhnvr6+vBKINuVQHsAFU1Aj5GAAKaXqWMAFTVCPgYAQhoepUyAlBVI+BjBCCg6VXKCEBVjYCP1b8foNPpiGz5/cVHHSWCYQeQqOWwLwLg0FQJJQRAopbDvsXPAPz9BMfHx43Kyn9nsNHJ5zDZ9/d37aq5Zx7sALXy+m9EAPx7XMsQAaiVx39j8TNA0/d8bhH/LV1vZwLONxdjB8hV0Ph4BMC4gbnlIwC5ChofX/wMUFovfiYovb729bADaHeo5foQgJYF1j49AqDdoZbrc38GaFm/hdRz9W2vnzs/doBcBY2PRwCMG5hbPgKQq6Dx8eHPANLv+7+6uiKWn56eEmwNYAew5ljD9SIADQtqbToEwJpjDdcrPgNsbW2REl5fXwn2DnZ3d1VRzP3dR+wAquwsXwwCUF5zVSsiAKrsKF8MAlBec1UrIgCq7ChfDAJQXnNVKyIAquwoX4z4eYDyJepe8f39fa4F4nmAucpvf3HcAux7mMUAAciSz/5g8Rmg1xMPsa+SYgY4Ayg2x0JpuAVYcKnFGhGAFsW1MLX4hr62tkZ4jcdjglOfx7+7uyP9OTg8POSXanG/369tb7rx5eWFTLmxsUGwNYAdwJpjDdeLADQsqLXpEABrjjVcr/gMIP3uXmm9T09PZAh/3/729jZpz/07mN/DR6MRmT8Fbm9vSZfFxUWCmwa53wvI68EOwBUJhhGAYIZzuggAVyQYFp8B2tbn6+uLLMExafwH0+mUXJK+VrG/v0/GS88AZPA/KP19Ad2u7P8wP1PJRnO2wOYVQADMW5hHAAHI08/86OwzAL+H3t/ftyqK9B4vLWZzc5MMeXt7I1g72NnZEZWIHUAkl7/OCIA/T0WMEACRXP46J88Ak8lExHpvb4/0f35+Jlg74PdQ/v4GjrXzSdWHHSClkPN2BMC5wSl6CEBKIeftyTNALn/++njp58pz6/c+HjuAd4cT/BCAhEDemxEA7w4n+P0BhhObhso5QOgAAAAASUVORK5CYII=",
"text/plain": [
"RGB Images.Image with:\n",
" data: 32x32 Array{ColorTypes.RGB{Float64},2}\n",
" properties:"
]
},
"execution_count": 141,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"xim = reshape(x, picx, picy);\n",
"recovered = Image(map(RGB, xim, xim, xim)')\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"celltoolbar": "Slideshow",
"hide_input": false,
"kernelspec": {
"display_name": "Julia 0.4.5",
"language": "julia",
"name": "julia-0.4"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "0.4.5"
},
"latex_envs": {
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 0
},
"livereveal": {
"slideNumber": "true",
"start_slideshow_at": "selected",
"theme": "rb",
"transition": "fast"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment