{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Online Convolutional Dictionary Learning with Spatial Mask\n", "==========================================================\n", "\n", "This example demonstrates the use of [dictlrn.onlinecdl.OnlineConvBPDNMaskDictLearn](http://sporco.rtfd.org/en/latest/modules/sporco.dictlrn.onlinecdl.html#sporco.dictlrn.onlinecdl.OnlineConvBPDNMaskDictLearn) for learning a convolutional dictionary from a set of training images. The dictionary is learned using the online dictionary learning algorithm proposed in [[33]](http://sporco.rtfd.org/en/latest/zreferences.html#id33)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import print_function\n", "from builtins import input\n", "\n", "import pyfftw # See https://github.com/pyFFTW/pyFFTW/issues/40\n", "import numpy as np\n", "\n", "from sporco.dictlrn import onlinecdl\n", "from sporco import util\n", "from sporco import signal\n", "from sporco import cuda\n", "from sporco import plot\n", "plot.config_notebook_plotting()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Load training images." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "exim = util.ExampleImages(scaled=True, zoom=0.5, gray=True)\n", "S1 = exim.image('barbara.png', idxexp=np.s_[10:522, 100:612])\n", "S2 = exim.image('kodim23.png', idxexp=np.s_[:, 60:572])\n", "S3 = exim.image('monarch.png', idxexp=np.s_[:, 160:672])\n", "S4 = exim.image('sail.png', idxexp=np.s_[:, 210:722])\n", "S5 = exim.image('tulips.png', idxexp=np.s_[:, 30:542])\n", "S = np.dstack((S1, S2, S3, S4, S5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Highpass filter training images." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "npd = 16\n", "fltlmbd = 5\n", "sl, sh = signal.tikhonov_filter(S, fltlmbd, npd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create random mask and apply to highpass filtered training image set." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "np.random.seed(12345)\n", "frc = 0.25\n", "W = signal.rndmask(S.shape, frc, dtype=np.float32)\n", "shw = W * sh" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Construct initial dictionary." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [], "source": [ "D0 = np.random.randn(8, 8, 32)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Set regularization parameter and options for dictionary learning solver." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "lmbda = 0.1\n", "opt = onlinecdl.OnlineConvBPDNMaskDictLearn.Options({\n", " 'Verbose': True, 'ZeroMean': False, 'eta_a': 10.0,\n", " 'eta_b': 20.0, 'DataType': np.float32,\n", " 'CBPDN': {'rho': 3.0, 'AutoRho': {'Enabled': False},\n", " 'RelaxParam': 1.8, 'RelStopTol': 1e-4, 'MaxMainIter': 100,\n", " 'FastSolve': False, 'DataType': np.float32}})\n", "if cuda.device_count() > 0:\n", " opt['CUDA_CBPDN'] = True" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create solver object and solve." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Itn X r X s X ρ D cnstr D dlt D η \n", "----------------------------------------------------------------\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 0 0.00e+00 0.00e+00 0.00e+00 3.58e+01 2.12e+00 5.00e-01\n", " 1 0.00e+00 0.00e+00 0.00e+00 2.82e+01 1.48e+00 4.76e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 2 0.00e+00 0.00e+00 0.00e+00 2.52e+01 9.82e-01 4.55e-01\n", " 3 0.00e+00 0.00e+00 0.00e+00 2.39e+01 6.81e-01 4.35e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 4 0.00e+00 0.00e+00 0.00e+00 1.10e+01 7.68e-01 4.17e-01\n", " 5 0.00e+00 0.00e+00 0.00e+00 2.45e+01 9.28e-01 4.00e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 6 0.00e+00 0.00e+00 0.00e+00 2.29e+01 1.44e+00 3.85e-01\n", " 7 0.00e+00 0.00e+00 0.00e+00 9.67e+00 6.27e-01 3.70e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 8 0.00e+00 0.00e+00 0.00e+00 1.95e+01 5.49e-01 3.57e-01\n", " 9 0.00e+00 0.00e+00 0.00e+00 1.89e+01 3.76e-01 3.45e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 10 0.00e+00 0.00e+00 0.00e+00 8.65e+00 4.74e-01 3.33e-01\n", " 11 0.00e+00 0.00e+00 0.00e+00 1.97e+01 7.32e-01 3.23e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 12 0.00e+00 0.00e+00 0.00e+00 1.70e+01 4.52e-01 3.12e-01\n", " 13 0.00e+00 0.00e+00 0.00e+00 2.02e+01 7.10e-01 3.03e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 14 0.00e+00 0.00e+00 0.00e+00 1.94e+01 4.86e-01 2.94e-01\n", " 15 0.00e+00 0.00e+00 0.00e+00 1.89e+01 3.88e-01 2.86e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 16 0.00e+00 0.00e+00 0.00e+00 1.84e+01 3.19e-01 2.78e-01\n", " 17 0.00e+00 0.00e+00 0.00e+00 1.44e+01 6.04e-01 2.70e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 18 0.00e+00 0.00e+00 0.00e+00 1.54e+01 6.15e-01 2.63e-01\n", " 19 0.00e+00 0.00e+00 0.00e+00 1.49e+01 1.00e+00 2.56e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 20 0.00e+00 0.00e+00 0.00e+00 1.68e+01 5.41e-01 2.50e-01\n", " 21 0.00e+00 0.00e+00 0.00e+00 1.44e+01 5.49e-01 2.44e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 22 0.00e+00 0.00e+00 0.00e+00 1.40e+01 3.85e-01 2.38e-01\n", " 23 0.00e+00 0.00e+00 0.00e+00 1.37e+01 3.21e-01 2.33e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 24 0.00e+00 0.00e+00 0.00e+00 5.79e+00 4.06e-01 2.27e-01\n", " 25 0.00e+00 0.00e+00 0.00e+00 1.17e+01 4.26e-01 2.22e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 26 0.00e+00 0.00e+00 0.00e+00 1.45e+01 4.68e-01 2.17e-01\n", " 27 0.00e+00 0.00e+00 0.00e+00 1.20e+01 8.06e-01 2.13e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 28 0.00e+00 0.00e+00 0.00e+00 1.10e+01 3.56e-01 2.08e-01\n", " 29 0.00e+00 0.00e+00 0.00e+00 1.12e+01 5.25e-01 2.04e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 30 0.00e+00 0.00e+00 0.00e+00 1.06e+01 3.13e-01 2.00e-01\n", " 31 0.00e+00 0.00e+00 0.00e+00 4.95e+00 3.17e-01 1.96e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 32 0.00e+00 0.00e+00 0.00e+00 1.14e+01 4.91e-01 1.92e-01\n", " 33 0.00e+00 0.00e+00 0.00e+00 4.83e+00 2.83e-01 1.89e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 34 0.00e+00 0.00e+00 0.00e+00 4.76e+00 2.34e-01 1.85e-01\n", " 35 0.00e+00 0.00e+00 0.00e+00 1.00e+01 4.77e-01 1.82e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 36 0.00e+00 0.00e+00 0.00e+00 4.61e+00 2.16e-01 1.79e-01\n", " 37 0.00e+00 0.00e+00 0.00e+00 4.55e+00 1.90e-01 1.75e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 38 0.00e+00 0.00e+00 0.00e+00 1.03e+01 4.70e-01 1.72e-01\n", " 39 0.00e+00 0.00e+00 0.00e+00 4.44e+00 2.09e-01 1.69e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 40 0.00e+00 0.00e+00 0.00e+00 9.97e+00 3.55e-01 1.67e-01\n", " 41 0.00e+00 0.00e+00 0.00e+00 1.09e+01 3.94e-01 1.64e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 42 0.00e+00 0.00e+00 0.00e+00 8.92e+00 4.62e-01 1.61e-01\n", " 43 0.00e+00 0.00e+00 0.00e+00 1.06e+01 3.34e-01 1.59e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 44 0.00e+00 0.00e+00 0.00e+00 1.04e+01 2.74e-01 1.56e-01\n", " 45 0.00e+00 0.00e+00 0.00e+00 9.12e+00 4.01e-01 1.54e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 46 0.00e+00 0.00e+00 0.00e+00 7.94e+00 3.17e-01 1.52e-01\n", " 47 0.00e+00 0.00e+00 0.00e+00 7.89e+00 2.45e-01 1.49e-01\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ " 48 0.00e+00 0.00e+00 0.00e+00 8.73e+00 3.32e-01 1.47e-01\n", " 49 0.00e+00 0.00e+00 0.00e+00 7.68e+00 2.40e-01 1.45e-01\n", "----------------------------------------------------------------\n", "OnlineConvBPDNMaskDictLearn solve time: 12.34s\n" ] } ], "source": [ "d = onlinecdl.OnlineConvBPDNMaskDictLearn(D0, lmbda, opt)\n", "\n", "iter = 50\n", "d.display_start()\n", "for it in range(iter):\n", " img_index = np.random.randint(0, sh.shape[-1])\n", " d.solve(shw[..., [img_index]], W[..., [img_index]])\n", "\n", "d.display_end()\n", "D1 = d.getdict()\n", "print(\"OnlineConvBPDNMaskDictLearn solve time: %.2fs\" %\n", " d.timer.elapsed('solve'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Display initial and final dictionaries." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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AAAAoBA8fAAAAAAoBA8fAAAAAArBwwcAAACAQvDwAQAAAKAQuapvWrRoET/5yU+S/KOPPkqyyy67TL7GcccdJ/O1a9fKfMyYMUm2bt06Oev+hL1r79h7772T7Pe//72cdc1OnTt3lrlqsLj99tvlrGvpci0dSsOGDWWuGpwiInbbbTeZv/POO0n2wQcfyNmrr75a5g8++KDMXcOPMmHCBJm7doxu3bol2dNPPy1nb7nlFpmrxqyjjz5azrZo0ULmjmpz6927t5x1zWVO06ZNk2zo0KFy9qCDDpL5rrvuWumf5/bvvHnzZO5aRFRr3e677y5nzz33XJmfdtppMh82bFiSHX/88XLWNZSoVquIiFatWiWZa1B55JFHZO6ug+patWjRoiSrXr26/O+x5Xz4wQ9+kOTz589Psrffflu+xtKlS2WuXiNCNye5fZR336ltWb58uZzdY489ZO7uX3//+9+TzDWpHX744TJ3rUfKKaecInPVnhPhW6PUOeGaKt99912Zr1y5Uubq+4VrnnLtna7VS+XuOrPffvvJXDWUufZF1+TnqDa3yZMny1n3HUJ9r4qIePHFF5PMnU/umpzH9OnTZe4an9y2qOa7Sy+9VM5+5zvfkfn//M//yPw/0QB61FFHyVy9T/X9LiKivLxc5u57jjovVYufOw8i+M0HAAAAgILw8AEAAACgEDx8AAAAACgEDx8AAAAACsHDBwAAAIBC5Gq7WrlypWyRUa1MN954o3yN5s2by9w1VamGBNeyMG7cOJm7tivVpPX9739fzrqmpiFDhshcNT5ceOGFcta1cagGJ8e999GjR8t88ODBMlctMaeeeqqcfemll2Rer169XNuiuLaL8ePHy3zHHdND+aqrrpKzs2bNknmTJk0q/fM+//xzmfft21fmXbt2TTK1zRER9913n8xdU9U999yTZO78GzFihMz33HNPmSuukco16txxxx0yV60tc+bMkbMrVqyQuWtFq127tsyVBg0ayNw17ajztXv37nLWtVpVrVpV5o8//niSXXTRRUnmmk8QsX79etnQoxoBXYNTlSpVZO6aqtTPW7hwoZx1TVqOuve413D3EtdYtNdeeyXZtddeK2dff/11mau2S8ddfz799FOZqwYdx7VgusYn951jw4YNlf6Zjrs/qFYvN+vauNR9wLUmue9KTocOHZJs1apVcva1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k+Qff/xxkrlFx27RWllZmcwfeuihJDvxxBPlbOvWrWXutG/fPsmeeeYZOesW7D333HMynzp1apLVr19fzo4ZM0bmbgGdsnr1aplPnDhR5osWLZK5WmCk3kuE/7xfeOEFmasFSS1btpSzbgHd448/LvNDDjkkye6++245qwoSIiJq1KiRZCeccIKcfe2112TujBgxIsk6duwoZ/fbbz+Zf/DBBzI/7LDDksztM3WuRvjjRHGL8N0C+iVLlsh8+fLlSfaDH/xAzs6aNUvmblG4Otaco48+Wuavv/66zHfbbbckU4tAIyKaNm0qc3du77BD+r8HqYX8rngBWxZPquvH1VdfnWQ33HCDfA1XDuIWparFnW7RcZ4FzRERDRs2TLLmzZvL2Z133lnm7nqv7mtukam7f7nFqsqzzz4rc7f4271PtXDWLU53C87dvceVRChuwbn7vM8999wkO/vss+Wsu/eo48EVUORdcK6OY3c8qPtlhC+iqVevXpK5Befq3hARMX78eJmrAh234Nxdk91xrL7nuGNq3rx5Mnfbkmcxf57yhQj9/bZt27Zy1m2fOy/Von31mbhCmAh+8wEAAACgIDx8AAAAACgEDx8AAAAACsHDBwAAAIBC8PABAAAAoBC52q4qKirizTffTHLVFuOaMVwLlmueWLt2bZK5ZgfXiOO88cYbSeYaBZ5//nmZT5s2TeaqaaC8vLzyGxcRhx56aKVnKyoqZO7aLo488kiZ33777Ul21FFHydnhw4fLPE9T1f777y9nVctZRMR3vvMdmd97771Jdtppp8nZPK1Rw4YNk7P9+/eXufOTn/wkyVxDmWvaca1R/fr1S7K//OUvclY1pUREnH766TJXXJOUa9JaunSpzFVznmszefHFF2Xepk0bmbvGFcW123zjG9+Qebdu3ZLs7bfflrN33nmnzL/3ve/JfNKkSUmmrqXquogtSqWSbO1RjYpuv7nGOXfOKqq5LMI3yziqnce17bgWPte8pdqGXAOPa+lSn7XjXsP9THecq2vkwoUL5azbD2PHjpW5ej/uXqxafyL8PXPfffdNsldeeUXOjhw5Uubu+4+SpzEzQjdbqZaqCL/PXIOVascaPHiwnF22bJnMd999d5krrn2xSZMmMnffWVXjk/u+5Y5v1wzm2qSUXr16VXrWcfdidw67pjN1/cnT+BfBbz4AAAAAFISHDwAAAACF4OEDAAAAQCF4+AAAAABQCB4+AAAAABQiV+1G48aN49vf/naSd+zYMcn+/Oc/y9do27atzGfMmCHz7t27J5lbQa9mt0Y1aRxwwAFydv78+TJ3TTlTpkxJsjVr1shZ10jxxBNPyHyPPfZIss6dO8vZrl27yty1NZx55plJ5lpBXPuSawBxTWKKa3x6+umnZT5o0KAkW7BggZx1LUaTJ09OMrffVetbRESnTp1krtq4Bg4cKGddG447NtVx8te//lXOutYWd2yqn+kaynr27CnzxYsXy1y1ornmlyuvvFLmGzZskPk11xKEuFwAACAASURBVFwjc8U1erjmktmzZyfZ9OnT5axrZ1u+fLnMVXPghAkTksw1zWBLu1G1atWSXN033H5zx7J63QjdKphndmtU849rgXLHrGt8Ug017jXceZKnvcs1IeVtwVLtQe5zdY1Cbt41iSnuvd9yyy0yV9e3xx57TM6670pq37u20LwNoOqYdZ+Ta4dy13v1Pt3x4Boz/xPHmjsv8zTZ1axZU+buHHHnn/uupLj94O6BqhXNnWduO9z7UduiztWttXnxmw8AAAAAheDhAwAAAEAhvvThI8uyc7MsK8+yrHzFihVFbBMAAJX2xfsUf4ARAL7avvTho1Qq3VsqlcpKpVKZ+zd+AABsK1+8T7l/jw0A+Grgn10BAAAAKESutqssy2TbwFtvvZVkTZs2la/xj3/8Q+a/+c1vZK5ahdzq/gsuuEDmqsUoQjcTqfcSETF16lSZ9+nTR+Y9evRIMtVaEqFbCSIimjRpInPFvfbo0aNl7lpEli5dmmSuXey0006T+cKFC3PlSq9evWTutvuZZ56p9KxrzFDtIq7RK8++iYgYMGBAkr377rty9thjj5W525eq+eXFF1+Us26fXXbZZTJXXCNVo0aNZD5p0iSZf/bZZ0nmmlJuu+02me+zzz4yP/LII2Wu9O/fX+Y33HCDzFVD0vnnny9nXbNKgwYNZD506NAkU9fSrbWIQDcWqfPENfDNmzdP5m5etcW4fe+up46ad/dA16rjGpzcNirueuoacRTXQOQ+E/czVUtXvXr1cr22+5cc7rNV3H1XtYJG6PtU8+bN5azbN9WrV0+yuXPnytm8vwVUn5VrWXLXateopO6Z7jrojqm6devKXFHn+9Ze230vcN/PFHdddsdUnuu4a0jM8zPVsRPh36PL1euon6fO03/hNx8AAAAACsHDBwAAAIBC8PABAAAAoBA8fAAAAAAoRJZnsVhZWVmpvLz8v7g5AIAvU1ZWFuXl5XoV8XaO+xQAbHtbu0/xmw8AAAAAheDhAwAAAEAhePgAAAAAUAgePgAAAAAUgocPAAAAAIXQf0/emD9/flx//fVJrv7UekVFhXyNnXbaSW9Ijj9t36RJEznbrVs3me++++4y/93vfpdkBxxwgJz96KOPZL5o0SKZ16tXL8nUn5+PiHj//fdl3rBhQ5nfcsstSfazn/1MztapU0fm1apVk3n//v2T7NZbb5Wzp59+usxr164t8+HDhyeZ2+6nn35a5m7fP/bYY0m2du1aOVtWVibzmTNnJlnLli3lbIcOHWR+3HHHyfzKK69MsoEDB8rZZ599Vubt2rWTeZs2bZLMHVNVqlSRudrvERG9e/dOsnvuuUfOPv744zLv3r27zH/wgx8k2axZs+SsO4dnzJgh8+nTpyeZO17VdSDC74czzjgjyT7++GM527dvX5m796nO12bNmiXZ8uXL5X+PiDlz5sSll16a5J9//nmlsgh/faxZs2alt0PdF7f22ldddZXML7jggiRz91d3XXLn4KpVqyqVRURs3rxZ5hs3bpT5JZdckmS33367nHX3UXcv2XnnnZPsqaeekrNdu3aVubpuRkRMmzYtyW666SY5q46zCH+vX7JkSZLVr19fzq5fv17mO+yQ/m/GmzZtkrPNmzeX+Y033ijzwYMHJ5n7DuHur+6cmjdvXqVn99lnH5mvXr1a5mo/nHfeeXLW3QPdOVK3bt0kc/vGfSbueFDn1OWXXy5n77jjDpm7z+Szzz5LMvf921HfiSIi2rdvn2TqOrBw4UL72vzmAwAAAEAhePgAAAAAUAgePgAAAAAUgocPAAAAAIXg4QMAAABAIXK1XdWvXz+OOuqoJF+zZk2SPfroo/I1XEvAQQcdJHO1kn/SpElytlQqydw15ai2C9d8c+CBB8r8kEMOkXnnzp2TzDVMnH/++TJ3bVfK8ccfL3PXJjF58mSZf/DBB0nmWkEefvhhmV999dUyz+O3v/2tzN22qOak5557Ts66pqAxY8YkmWvjUm1mW6Oab2bPni1nXWuba5UZNWpUkrmWmCOPPDLXayuuDadXr14yd5+Varj58MMP5ezo0aNlfthhh8l82LBhSebarjp27Cjzu+++W+Zq/7jrhmsLcY1rtWrVSrKhQ4cmmWs4wZb7gGqRUZlrvsmyTOauVUjl7n7kfmYebvs++eQTmXfq1EnmqjnJvbZrpMxz7XDtN+p+GRHx9ttvy7xq1apJtv/++8vZl156SeauBcu9T2XFihUyd8dJjRo1kkw1em5tO9Tn7VrY3LXaUZ+rO47VbETE4sWLZa4a2lyDmjsepkyZInPFbbf7TuS+Vx599NFJppqktkadZxH++7CS9/3MmTMnyVxbqNsOdy1Q+z7P/o3gNx8AAAAACsLDBwAAAIBC8PABAAAAoBA8fAAAAAAoBA8fAAAAAAqRq+1q1apV8c477yR5eXl5kjVt2lS+xqxZs2TeqlUrmasWGdeq0759e5k7qg1g4MCBctY1lLz66qsyV80JZ5xxhpx94403ZO5aI6644ooke+qpp+Rs7969Zd6zZ0+Z//GPf0yys846S8661qhnnnlG5t/+9rdlrpx55pkydy1ON9xwQ5J9+umncva2226r9GuPGzdOzroGp7333lvmqjHDbZ9qj9vatqhWlHnz5slZ1/Ayfvx4mXfv3j3JXOOYOx5cw9abb76ZZO4ccc1qbruPOeYYmSuuieTxxx+X+c0335xkrVu3lrOu3WflypUyV60jderUSTK3zdhCNcPkaZZxXHuLOgfdrGunycPdj9xx5VqPVPuSa1lyDU552qHmzp0rc3WMR0QcfvjhMr/11luTzN27zznnHJk/8cQTMlfXasc1ELmWoDzc562ardx25KVe222HO58WLFggc/Xdb6+99pKzGzZskLm7NypuH7jPSrU1Rej71L777itnly1bJnN3LchzTXLn8NSpU2W+5557JplrKHPtp126dJF5gwYNkkztX3fsRPCbDwAAAAAF4eEDAAAAQCG+9OEjy7Jzsywrz7KsPO8frAEA4L/ti/eptWvXbuvNAQBsxZc+fJRKpXtLpVJZqVQqc/8uEwCAbeWL9yn3154BAF8NuRacr1+/PqZNm5bkbdu2TbKGDRvK1zj99NNlrhawROiFMN26dZOzajF8RESfPn1krhYNuwUybqF83bp1Zb7ffvsl2ZAhQ+TsscceK/M8C+jdQuJ169bJ/N1335V5p06dKv0ze/ToIXO3GFstRP/xj38sZ5cuXSpz91l99tlnSdaiRQs5O2LECJlXr149yfbYYw85m2eRZUTEW2+9VenXdgv2ysrKZD5hwoQkU8dfhF9w5s4dZfTo0TI/7LDDZP7888/LXJVMuHPELTx1C85doYJSq1YtmbuFier64xb4T5w4UebHH3+8zNVntWLFiiTb2kK+7V2pVJILVtX+dJ+jy9U1IiJi48aNSeYWvLrSDEdtd97XXr16tczd9SAP95koboGxK9Nw7+eQQw5JMnddGjx4sMzdvCrQcaUr1apVk7m77yrq2Nnaa6vCAnc/cgu3HXWcuP3rFn+7bVH/o8DBBx8sZ933rTxFG66UwXHvc/bs2Uk2cuRIOXvQQQfJfMmSJTLPcx13n7e6P0To72HuOvDee+/JfNCgQTIfPnx4kqnjeGtFCKz5AAAAAFAIHj4AAAAAFIKHDwAAAACF4OEDAAAAQCF4+AAAAABQiFyVPfXq1YtDDz00yadMmZJkqn0owv+J+DFjxsi8c+fOSTZs2DA5e/PNN8vc6dChQ5KpVqKIiJ133lnmrtnhySefTLIBAwbI2ccee0zmHTt2lPk555yTZBUVFXJ26tSpMl+8eLHMVXuXa5h64403ZO6af1xbk/Lpp5/KfOzYsTLv1atXkjVq1EjO/vWvf5V53759k+yjjz6Ss/Xr15e5o5q33LHz7LPPylydexG6Ocntg/Xr18s8z75xzXQvvPCCzI855phKb0vTpk3lrGvjcs13b7/9dpKpa0lExO233y5z10Ry0kknJdn06dPlrKt9ddewPffcM8leeeWVJMvTprO9KZVKsnlFZe4cdG1S/4mWsbz7Ls/PdO1V6h4d4ZsgFfeZuLYmxX3e7v7qvheo1izXHviHP/xB5u56MGfOHJkr7nqap33K7TPXFKRytw/ytpmp7d68ebOcVa1bERErV66UeZMmTSr92i7Pc+7kacaK8OeZakN032/d94V99tlH5qpJy3E/01FtafPnz5ez7rvmokWLZK6+b6rvlFu7NvCbDwAAAACF4OEDAAAAQCF4+AAAAABQCB4+AAAAABSChw8AAAAAhcjVdlWjRo1Kt0+55olRo0bJ3LU1qYafXXbZRc66lqCePXvKfNy4cUnmmnxc+1KeJgjXPHX11VfL/K677pK5olqqIiKOOOIImTdv3lzmCxcuTLJJkybJ2fHjx8u8R48eMq9Tp47MlSFDhsjctQepVoUPPvhAzn7jG9+QuZpfunSpnP3hD38oc2fChAlJtuuuu8rZK6+8UubuM1EtXZ06dZKz7v24VgvFtcS43LW5qWYVd26rxpEI39rm3qfi2tzatm0rc3W9c60y7rVdq55qKTvllFOSTB1P2KJhw4aykezxxx9PsuXLl8vXaNy4scxVW1GE3v+qbSbCtwQ57h6juIYk15STp93IydPG5e6j7rxv1aqVzFXTomuTdA1E7pri7o2K+7zdZ6gamKpUqZLrNdRxtXbtWjmbt+0qT0OUu5+7RtPDDjus0j/vP9Hm5xrHXAOT2xbVaObO7Q8//FDm7j7l7g+KOx5Ua2uE3g/uu5xru3z//fdlrq4nqs3M7YMIfvMBAAAAoCA8fAAAAAAoBA8fAAAAAArBwwcAAACAQuRacL569Wq5AOWCCy5IMreA9c4775R5r169ZK4WgLuFN40aNZK5c9RRRyXZ008/LWfVoqMIv2h47733TjK1wD0iYvTo0TLv1q2bzBW3ENstRHMLch999NEkUwvFIvziwdNPP13mF198cZK98MILctYdJ+3atZP5nDlzkmzgwIFy9oknnpD5QQcdlGRqYWPE1hdSKd/73veS7M9//rOcdYsvGzZsKPOhQ4cmmVsY6xZRn3/++TLPwy04d9cClXft2lXOunNn5cqVMh85cmSSXX755XL2gQcekPkJJ5wgc3Wdeeqpp+Ssu665Bc1jx45NMnX+Va9eXf732HLsz507N8lVScTEiRPla9x9990yd8d4lmVJ5hYSu0XKjnodt8jbvbZbTLtmzZpKz+ZdGK24a9jkyZNl3qVLF5nXq1cvyWbMmCFn9913X5m7fZ+nrOI/sY/d51ejRg2Zq2u7+3nue4ujyhDc4mp3j3Hbre497rPOU+TjuM/E3bvdz1SL9t35576HTZ8+XebqPtWvXz856/Zly5YtZa4+W/fee/fuLXNXbLJ69eoka9asWZJtrcCA33wAAAAAKAQPHwAAAAAKwcMHAAAAgELw8AEAAACgEDx8AAAAAChErsqeKlWqRO3atZNctQepP78e4ZuTXCtTeXl5kqlGpoiIo48+WuaOajRxjVmLFy+W+bp162S+5557JlmnTp3krGoJiIi46aabZH7MMcck2cEHHyxnVXtOhG8PuuKKK5LspZdekrOuReQf//iHzPM09LiGjUmTJsm8bt26lZ498cQTZT5q1Kgk22uvveTskCFDZN6/f3+ZP/PMM0m28847y9mFCxfK3DV9qFavMWPGyFl3nFRUVMhcqV+/vsxd+8mSJUtkvt9++yXZc889J2dPOeUUmbumuDZt2shcOfXUU2XumsHU+zn55JPlrDu3y8rKZN6zZ88kU40j7nqJLa01q1atSvIRI0Ykmds/ru3KtZpNmTIlydw55dppHNW2464F7rrpWnjUseUa2lQzVkS+tqsmTZrIfNasWTJ3jVQ9evRIsvfee0/Ouvaljh07ytw1bynqvhMRMX/+/ErPu0Ygt4/zNKu5ViYnz7Hm2pf69u0rc3WOuONSvce83H53x2uez8rtM9UCFRFRq1Ytmc+cObPSP9N9X1D7LCJi3rx5SZb3+627p6vWLLUvabsCAAAAsM3x8AEAAACgEF/68JFl2blZlpVnWVa+YsWKIrYJAIBK++J9Sv2TKwDAV8eXPnyUSqV7S6VSWalUKnP/1hsAgG3li/epOnXqbOvNAQBsBf/sCgAAAEAhslKpVOnhsrKykmqfAgAUp6ysLMrLy//3lTBfQ9ynAGDb29p9it98AAAAACgEDx8AAAAACsHDBwAAAIBC8PABAAAAoBA8fAAAAAAoxI55hpcuXRqPPfZYkq9evTp94R31S0+YMEHmu+22m8xnzJiRZIcffricffzxx2V+5513yvxXv/pVkjVr1kzOtmzZUua77LKLzNetW5dkEydOlLOLFi2SeZbpMpsf//jHSXbhhRfK2TPOOEPm7777rsybN2+eZLVq1ZKza9askXmPHj1krj6Tnj17ytnrrrtO5u4PiK1fvz7JOnbsKGeXL18u8969eyeZ2zc77bSTzA8++GCZDxkyJMlmz54tZ2vWrCnzXXfdVebq3FE/L0Lv34iIzz//XOaXX355kp133nly9vzzz5f5rbfeKvOzzz47ySZNmiRn3Xt3263OtUsvvVTODho0SObus6pWrVqSuWuSOi4jIp544gmZL126NMlOOeWUJOMP6Xnz5s2La665plKzmzZtkrm6VkVE1K1bV+Zr166t3MZFRJUqVWR+ww03yPz2229PsqpVq+Z67R120P87o7rHrFy5Us7OmjVL5ps3b5a5Ou/dOejurxs3bpS5uoa7feP2ZcOGDWWuzsFf/OIXcvbiiy+W+YIFC2Su9tsxxxxT6e2I0J+Je49u37hrnsqnTp0qZ8vKymTevn17mas/Up3nfh7hj2O13T//+c/lrLp+R/h9pn5m69at5WyNGjVk7vaP+kzcdeDMM8+Uufsuov4u3yeffCJn+/btK/MPP/xQ5ur9q302f/58+d9H8JsPAAAAAAXh4QMAAABAIXj4AAAAAFAIHj4AAAAAFCLXgvP58+fLxTA333xzkk2ZMkW+hltI5BYvzZ07N8ncgmG32NdRi+LV4vkIv7jaLSQaNmxYkrlFiW7x0rPPPitzteD8m9/8ppx1C7R23313md92221J1qJFCzlbUVEh8379+sn8pptuSrIHH3xQzh544IEynz59uszHjx+fZG6xXZs2bWSuuEWWeY/Bpk2bViqLiHjllVdkfsABB8hcFS2cdNJJcvbGG2+Uebdu3WSuuEWjQ4cOlfmoUaNkrhZpt2rVSs6+8847MnfHvSsKUNwiQVf4UCqVkswtlP/HP/5R6e2I0Avo99hjjyRzpQTYct6r67jaz+6a7Pa9u6aohd5u1uWOWmDsFparYzPCl4aoz2ThwoVy1t273aLwPNvhFh67a+S4ceOSzJWXuIXErlDC3esVtx/UYt8I/X3Gfa5uYbT6vF3Bz4YNG2TuqOuKW5jvFkbfe++9MlfbWL16dTnrzj9331Xca6tF3hERzzzzjMx/9rOfJZkrJpozZ47MXTFKnnNn5513lvnMmTNlXqdOnSRr1KiRnHXf191idlWWo75DuOMygt98AAAAACgIDx8AAAAACsHDBwAAAIBC8PABAAAAoBA8fAAAAAAoRK62q2bNmsX555+f5KrBokGDBvI1Dj30UJm/+eabMldtJO+++66cHT58uMxPPPFEmdeuXTvJevXqJWfLy8tl7lqCVIPFqaeeKmfvuusumV922WUyV1xbgWtI+tOf/iTzDh06JNlxxx0nZ11zybJly2Sep+Xl6aeflrlrF2vXrl2SffTRR3L27LPPlrlqKHOtYK4hyVHtHXvuuaecde/9oYcekvmgQYOSzLUhnXfeeTL/7LPPZK68+uqrMp82bZrMf/nLX8p86tSpSeYaSkaPHi1z10yjmrQcd3y7bVHn5XXXXSdn3Xn2wx/+UOZ/+9vfkkyd2+48QETVqlVlg6C6l7h97BqIXBviypUrk8xdI1yLkVO1atVKZRG+fcm1B6njyH0mrmlI3Ucd95nMmzdP5u4eo96na7VyDXruepXn2u7aJF270ZIlS5JMXQcj/HcLtc9cy1ne64RqF3ONTO4ae99998n8lltuSTL33l1bofu8lcWLF8v8448/lvlBBx0k8y5duiTZhx9+KGdVC1SEbp7aWq641jF3LVDfqb/zne/IWdVyGhFxzjnnyFy106kWsU2bNsn/PoLffAAAAAAoCA8fAAAAAArBwwcAAACAQvDwAQAAAKAQPHwAAAAAKESutqt169bF5MmTk1y1BLh2qOnTp8u8rKxM5qqpwrVruKYP58ADD0yyESNGyNkZM2bI3DVjqNaIpUuXylnXSLFw4UKZK6+99prMx40bJ/PGjRvL/IQTTkiys846S85+73vfk7lrKHHNUcrxxx8v8xtuuEHmqi2lbt26ctYdg0ceeWSSjRw5Us7uscceMndUY1H37t3lrGoci/ANKr/97W+TrEePHnJWta1E+CYNxbWIqWM+wjdS9enTJ8ncOewaPVxzUJ5GIdee17ZtW5mr7XZtfa5dTDWrRejz8s4770wy1waDLa16FRUVSb7TTjslmWsJcrmj2q7mzp0rZ9157Oy4Y3qbdueJawNy70edJ64NSG1HRL734+51jRo1krn7DHv37p1kL774opx17YaPP/64zN13EaVNmzYyd81g6jrrGp/Ue3TcPnAtZ45qeXPNpR07dpS5a9688MILk8x9h1DNdBH52q5cg6PbPtdY+M477ySZ27/uvHTnjvuupIwdO1bm7nuEagB9//335axrwXrllVdkrlph1bm6YcMG+d9H8JsPAAAAAAXh4QMAAABAIb704SPLsnOzLCvPsqzc/SoMAIBt5Yv3KfeHAAEAXw1f+vBRKpXuLZVKZaVSqcz91WQAALaVL96n8vzFbQBA8fhnVwAAAAAKkavtqmnTpnHuuecm+dChQ5PMrcDfZZddZO6aoFSDjmuyydvscP/99yeZazE65phjZP7000/LXLWtuOYO164xadIkmSv77LOPzF3D1EsvvSRz1fZ1zTXXyFnXuKOapyIiBgwYIHNFtcdEROy7774yV41KqpEhwrdJvfHGG0k2a9YsOetaOpxly5Yl2YQJE+TsggULZK7aeiJ0w4bbN+6Yuvrqq2WuuCa7K6+8Uub169eXuWqZcg1vmzZtkvkpp5wic9Xqsd9++8nZFi1ayNx93qpBrm/fvnL2k08+kXnXrl1lrlprLrrooiQbM2aM/O8RsXHjxli8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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "D1 = D1.squeeze()\n", "fig = plot.figure(figsize=(14, 7))\n", "plot.subplot(1, 2, 1)\n", "plot.imview(util.tiledict(D0), title='D0', fig=fig)\n", "plot.subplot(1, 2, 2)\n", "plot.imview(util.tiledict(D1), title='D1', fig=fig)\n", "fig.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Get iterations statistics from solver object and plot functional value." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbIAAAGpCAYAAADoYrNEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXxbV5028OdotyWvkp04drxl35qlaZoF2qSUblMG6MwwLWvZytYCw1CgvDMwMMMM8wIdaAuUvFBatpalFFqmG9C9SdqkbdomaRZvSezEm7zLlrWd94+rayu2ZG1XlnT1fD+ffBpLV9J1KX58zvmd3xFSShAREeUrQ7ZvgIiIKB0MMiIiymsMMiIiymsMMiIiymsMMiIiymumbN9ANC6XSzY2Nmb7NoiIKEe89NJL/VLKqmjP5WSQNTY24sCBA9m+DSIiyhFCiJOxnuPUIhER5TUGGRER5TUGGRER5bWcXCMjItIrv9+Pzs5OeL3ebN9KTrLZbKirq4PZbE74NQwyIqJ51NnZiZKSEjQ2NkIIke3bySlSSrjdbnR2dqKpqSnh13FqkYhoHnm9XjidToZYFEIIOJ3OpEerDDIionnGEIstlX83DDIiIsprDDIiogJjNBqxYcMGrFmzBuvXr8ett96KUCg052s6Ojqwdu1aAMDBgwfx8MMPJ/WZHR0dKCoqwsaNG7Fq1Sps2bIF99xzT8rfQyQWexARFZiioiIcPHgQANDb24t3v/vdGB4exte+9rWEXn/w4EEcOHAAV111VVKfu2TJErzyyisAgLa2NlxzzTUIhUL44Ac/mNw3MANHZEREBay6uhq7d+/GHXfcASklgsEgbr75ZlxwwQU477zz8KMf/eic630+H77yla/g17/+NTZs2IBf//rXePHFF7F9+3Zs3LgR27dvx7Fjx+J+bnNzM2699VbcdtttaX8PHJEREWXJ1x46jCNnRjR9z9WLSvHVt61J6jXNzc0IhULo7e3FH//4R5SVlWH//v2YnJzEjh07cNlll00VYVgsFnz961/HgQMHcMcddwAARkZG8Mwzz8BkMuEvf/kLvvzlL+P++++P+7mbNm3C0aNHk/8mZ2CQERERpJQAgMcffxyvvfYafve73wEAhoeHceLECSxfvjzma4eHh/GBD3wAJ06cgBACfr8/qc9MF4OMiChLkh05ZUpbWxuMRiOqq6shpcTtt9+Oyy+//JxrOjo6Yr7+X//1X7Fr1y488MAD6OjowM6dOxP63FdeeQWrVq1K484VulwjGx7341DXMEIhbdKeiEiv+vr68PGPfxw33ngjhBC4/PLL8cMf/nBqVHX8+HF4PJ5zXlNSUoLR0dGpr4eHh1FbWwsAuPvuuxP63I6ODnz+85/HTTfdlPb3oMsg+/0rnbj69ucwPJHY8JaIqJBMTExMld9feumluOyyy/DVr34VAPCRj3wEq1evxqZNm7B27Vp87GMfQyAQOOf1u3btwpEjR6aKPb7whS/glltuwY4dOxAMBmN+bmtr61T5/bve9S7cdNNNaVcsAoDQao5SS5s3b5bpHKx5/0ud+OffvoqnPr8TjS67hndGRJSeN954Q5PpND2L9u9ICPGSlHJztOt1OSIrK1K6Jo94OSIjItI7fQZZsRJknFokItI/XQZZqY1BRkRUKHQZZFNTixOBOFcSEVG+03WQcURGRKR/ugwym9kAs1Gw2IOIqADoMsiEECgrMnNERkQUhXqMi/rnm9/8JgDgu9/9LsbHx7N8d8nTbYuqUgYZEVFUkce4RPrud7+L9773vSguLs7CXaVOlyMyQKlcHGGQEREl5LbbbsOZM2ewa9cu7Nq1CwDwiU98Aps3b8aaNWumOn/kIt2OyMqKzBga92X7NoiIYnvkS0D369q+58J1wJXfnPMStUWV6pZbbsGnP/1p3HrrrXjyySfhcrkAAN/4xjdQWVmJYDCIt7zlLXjttddw3nnnaXu/GtBtkJUWmXHS7Yl/IRFRgYk1tTjTb37zG+zevRuBQABnz57FkSNHGGTzqazIhBEv95ERUQ6LM3LKpvb2dnz729/G/v37UVFRgeuvvx5erzfbtxWVbtfI1KrFXGyKTESUiyKPZxkZGYHdbkdZWRl6enrwyCOPZPnuYtPtiKzUZkYwJOHxBeGw6vbbJCJK2sw1siuuuALf/OY3ccMNN+DKK69ETU0NnnzySWzcuBFr1qxBc3MzduzYkcU7nptuf8JPt6nyM8iIiCLEOjPspptuOuegy0QPycw2XU8tAmxTRUSkd3GDTAixWAjxpBDiDSHEYSHEZ6JcI4QQtwkhWoQQrwkhNkU8d4UQ4lj4uS9p/Q3EUsogIyIqCImMyAIA/llKuQrAVgCfEkKsnnHNlQCWhf/cAOCHACCEMAL4fvj51QCui/LajIicWiQiyiUsQostlX83cYNMSnlWSvly+O+jAN4AUDvjsrcD+JlU7ANQLoSoAbAFQIuUsk1K6QNwX/jajOPUIhHlIpvNBrfbzTCLQkoJt9sNm82W1OuSqoIQQjQC2AjghRlP1QI4HfF1Z/ixaI9fGOO9b4AymkN9fX0ytxUVD9ckolxUV1eHzs5O9PX1ZftWcpLNZkNdXV1Sr0k4yIQQDgD3A/islHJk5tNRXiLneHz2g1LuBrAbADZv3pz2ryolNhOEADdFE1FOMZvNaGpqyvZt6EpCQSaEMEMJsV9KKX8f5ZJOAIsjvq4DcAaAJcbjGWcwCJRYTVwjIyLSuUSqFgWAnwB4Q0p5a4zLHgTw/nD14lYAw1LKswD2A1gmhGgSQlgAXBu+dl7wKBciIv1LZES2A8D7ALwuhFC7TH4ZQD0ASCnvBPAwgKsAtAAYB/DB8HMBIcSNAB4DYARwl5TysKbfwRzKiniUCxGR3sUNMinlc4i+1hV5jQTwqRjPPQwl6OYdT4kmItI/3Xb2AJTKRQYZEZG+6TrIyorMGPEyyIiI9EzfQVbMERkRkd7pOshKbSZ4/SFMBqJ3eiYiovyn6yCb7rfITdFERHql6yBjB3wiIv1jkBERUV7TdZBNTS2ycpGISLcKI8g4IiMi0i1dBxmPciEi0j9dBxlHZERE+qfrILOYDCgyGzkiIyLSMV0HGQCUFpkYZEREOqb7IFOOcuGGaCIivSqIIOOIjIhIv3QfZDzKhYhI33QfZDzKhYhI33QfZKWcWiQi0rWCCLJRbwDBkMz2rRARUQboPsjUTdFjXlYuEhHpke6DrNRmAsA2VUREeqX7ICvjUS5ERLpWMEHGykUiIn3SfZDxcE0iIn3TfZBxapGISN8KJsh4lAsRkT7pPsiKLUYYDYIjMiIindJ9kAkh2DiYiEjHdB9kgNpvkRuiiYj0qCCCrNTGwzWJiPSqMIKsyMxiDyIinSqIICtjkBER6VZBBBmPciEi0q+CCDL1cE0peZQLEZHeFEyQ+YMSE/5gtm+FiIg0FjfIhBB3CSF6hRCHYjx/sxDiYPjPISFEUAhRGX6uQwjxevi5A1rffKJKbWxTRUSkV4mMyO4GcEWsJ6WU35JSbpBSbgBwC4CnpZQDEZfsCj+/Ob1bTd10myruJSMi0pu4QSalfAbAQLzrwq4DcG9ad5QBbBxMRKRfmq2RCSGKoYzc7o94WAJ4XAjxkhDihjivv0EIcUAIcaCvr0+r2wIAlBbxlGgiIr3SstjjbQCenzGtuENKuQnAlQA+JYS4KNaLpZS7pZSbpZSbq6qqNLwtdsAnItIzLYPsWsyYVpRSngn/sxfAAwC2aPh5CePUIhGRfmkSZEKIMgAXA/hjxGN2IUSJ+ncAlwGIWvmYaSWsWiQi0i1TvAuEEPcC2AnAJYToBPBVAGYAkFLeGb7snQAel1J6Il66AMADQgj1c34lpXxUu1tPnNEgUGI1YcTLICMi0pu4QSalvC6Ba+6GUqYf+VgbgPWp3pjW2KaKiEifCqKzB8AO+EREelUwQVZWZOKGaCIiHSqgIOPUIhGRHhVMkJXaGGRERHpUMEGmHuVCRET6UlBBNu4Lwh8MZftWiIhIQwUTZKXs7kFEpEsFE2Tst0hEpE8FF2QckRER6UvBBBmPciEi0qeCCbKpqUUvN0UTEelJwQQZiz2IiPSpcILMxmIPIiI9Kpggs5mNsJoMDDIiIp0pmCADeJQLEZEeFVSQsXEwEZH+FFyQsd8iEZG+FFSQldpMHJEREelMQQUZpxaJiPSn4IKMp0QTEelLQQVZaXiNLBSS2b4VIiLSSEEFWVmRGVICo5MclRER6UVBBVkpj3IhItKdwgoyG/stEhHpTUEFGQ/XJCLSn8IMMm6KJiLSjYIKMh6uSUSkPwUVZGU8k4yISHcKKsgcVhMMAtwUTUSkIwUVZEIIHuVCRKQzBRVkAPstEhHpTUEGGasWiYj0o+CCrNTGERkRkZ4UXJBxapGISF8KLshKeZQLEZGuxA0yIcRdQoheIcShGM/vFEIMCyEOhv98JeK5K4QQx4QQLUKIL2l546kqLTJhZMIPKXmUCxGRHiQyIrsbwBVxrnlWSrkh/OfrACCEMAL4PoArAawGcJ0QYnU6N6uFsiIzfMEQJgOhbN8KERFpIG6QSSmfATCQwntvAdAipWyTUvoA3Afg7Sm8j6bY3YOISF+0WiPbJoR4VQjxiBBiTfixWgCnI67pDD8WlRDiBiHEASHEgb6+Po1uazYe5UJEpC9aBNnLABqklOsB3A7gD+HHRZRrYy5MSSl3Syk3Syk3V1VVaXBb0fEoFyIifUk7yKSUI1LKsfDfHwZgFkK4oIzAFkdcWgfgTLqfly5OLRIR6UvaQSaEWCiEEOG/bwm/pxvAfgDLhBBNQggLgGsBPJju56WrvFgJsgGPL8t3QkREWjDFu0AIcS+AnQBcQohOAF8FYAYAKeWdAP4ewCeEEAEAEwCulUpte0AIcSOAxwAYAdwlpTycke8iCU6HFQCDjIhIL+IGmZTyujjP3wHgjhjPPQzg4dRuLTPsFiMsJgODjIhIJwqus4cQAk67BW4GGRGRLhRckAFApd3CERkRkU4UbJBxREZEpA8FGWROuwXuscls38aU9n4Pz0gjIkpRYQaZw5pTU4v/cOce3PlUa7Zvg4goLxVkkFXaLRj3BeH1B7N9K/D6g+gf86E/h0aIRET5pCCDzGm3AEBOrJOpI0PPZPZDlYgoHxVkkFWGg2xgLHeCbGySh30SEaWiIIPM6VBHZNmfzpsekTHIiIhSUZBBVmlX2lS5OSIjIsp7BRlk6ogsFyoX3QwyIqK0FGSQlVhNMBtFjhR7KNObnFokIkpNQQaZECLcpioX1siUjdCsWiQiSk1BBhmgrJPlwtSiGqa+YAi+QCjLd0NElH8KNshypQN+ZJhyepGIKHkFG2SVdktOVS0CLPggIkpFwQaZ05EbR7kMeHxwhasoPT4GGRFRsgo3yOwWjE0GMBnIXpFFMCQxNOFHXUUxAE4tEhGlomCDTN0Unc1R2dC4D1IC9ZVKkI2xcpGIKGkFHGThNlVZXCdTQ1QNMo7IiIiSV7BBlgvdPdSqycWVRQBY7EFElIqCDbKpEVkWN0UPTAUZR2RERKkq2CBz5UDj4KkgY7EHEVHKCjbISotMMBlEVqcW1c9eUGqDxWhgsQcRUQoKNsiEEKiwZ3cv2YDHhxKrCRaTAXarkSMyIqIUFGyQAdlvUzXg8aEyXHRit5oYZEREKSjoIKvMgRGZWnTisJpYtUhElIKCDzL3WPaqFt0eH5z2iBEZW1QRESWtoIPM5bBmeWpxEhXF00HGYg8iouQVdJBV2i0Y9Qaycg6YlBKDHv/UGpmDxR5ERCkp+CADgMHx+R+VjU0G4AuGpqcWLSz2ICJKRUEHmTOL/RbVIpNzpxYZZEREySroIFNHZNmoXFQ/0+mYrlr0TAYgpZz3eyEiymcFHWRqiGSj36IaZOpxMnarCSEJeP3zv15HRJTP4gaZEOIuIUSvEOJQjOffI4R4LfxnjxBifcRzHUKI14UQB4UQB7S8cS04s9hvUa2WdNqniz0AdsAnIkpWIiOyuwFcMcfz7QAullKeB+DfAeye8fwuKeUGKeXm1G4xc8qKzDBmqd/i1BpZxD4ygI2DiYiSZYp3gZTyGSFE4xzP74n4ch+AuvRva34YDAIVxeas7CUb9PiUHosWZSSmBhlHZEREydF6jezDAB6J+FoCeFwI8ZIQ4gaNP0sTSpuq+V8jU7t6CCEAKMUeAEdkRETJijsiS5QQYheUIHtTxMM7pJRnhBDVAP4shDgqpXwmxutvAHADANTX12t1W3Flq9/igMc3VXoPREwtsk0VEVFSNBmRCSHOA/BjAG+XUrrVx6WUZ8L/7AXwAIAtsd5DSrlbSrlZSrm5qqpKi9tKiNNuzdo+MrVqEogs9mCbKiKiZKQdZEKIegC/B/A+KeXxiMftQogS9e8ALgMQtfIxm5yO7BzlEtn5HmCxBxFRquJOLQoh7gWwE4BLCNEJ4KsAzAAgpbwTwFcAOAH8ILzeEwhXKC4A8ED4MROAX0kpH83A95CWSrsFwxN++IMhmI3zt62OQUZEpI1Eqhavi/P8RwB8JMrjbQDWz35FbnFG9FusLrHNy2dOBoIYmwygMnKNzMKqRSKiVBR0Zw9gurPGfBZ8DHr8ymdHrJEZDQJFZnbAJyJKFoNM7bc4jwUfakssZ8TUIsAzyYiIUlHwQaZWDvbP44hsZud7Fc8kIyJKHoNsakQ2f5uiZ3a+V9mtPJOMiChZBR9k5cUWCDG/a2QzO9+reCYZEVHyCj7IjAaBiuL53Us24PHBIJSmxZEcVhM7exARJanggwyY/zZVbo8P5cUWGA3inMeVqUUWexARJYNBBiXI5nNENjhjM7TKYTVyapGIKEkMMigFH+55LPZwxwgyu4XFHkREyWKQQakenO9ij8riKEFmNWHcF0QoJOftXoiI8h2DDEr14NCEH8F5CpBBj++crh4qB49yISJKGoMMytSilEq/xUwLhSQGx32zunoAkY2DWfBBRJQoBhki2lTNw/Ti0IQfITm7qwcA2KfOJOOIjIgoUQwyTHf3mI8DNgfUPotzTS0yyIiIEsYgw3QXerWZbyYNqJ3v55xaZJARESWKQQbAOY9Huagjsuj7yHgmGRFRshhkACqKlVZR8zG16J7qsxh7RMYgIyJKHIMMgMloQHmxeV5GZINzBplS7MGpRSKixDHIwuar36Lb44PDaoLVZJz13PTUIsvviYgSxSALc9ot81Ts4UOF3Rz1uSKzEQbBERkRUTIYZGGVdss8ld/7Zp1DphJC8EwyIqIkMcjCnA7rPFUtRu/qoXLwlGgioqQwyMKcdgsGx30Zb9g7EKPzvcrOwzWJiJLCIAurtFsQkkoLqUyRUsY8wkWlTC2y2IOIKFEMsrDpfouZK/gY9wXhC4TmDDKH1cipRSKiJDDIwtTuHpks+BiYYw+ZiodrEhElh0EWpoaLO4MFH1NdPaJ0vlc5WLVIRJQUBlmYy5H5IJvqsxil873KzqpFIqKkMMjCKtQ1soxOLSqFJHOV3ytBxmIPIqJEMcjCzEYDSm2mjBZ7zNX5XuWwGuELhuALhDJ2H0REesIgi+B0WDO+RmY2iqmeitHwTDIiouQwyCJkunHwYHgPmRAi5jU8yoWIKDkMsgiZ7rc4V59FlTpaY3cPIqLEMMgiuByWjE8tVsbofK/i1CIRUXIYZBEqM9xvMbERmXJOGdtUERElJm6QCSHuEkL0CiEOxXheCCFuE0K0CCFeE0JsinjuCiHEsfBzX9LyxjOh0m5FMCQx4s1Mv8V4ne8BjsiIiJKVyIjsbgBXzPH8lQCWhf/cAOCHACCEMAL4fvj51QCuE0KsTudmM82Zwe4evkAIo94AKubo6gEoLaoAFnsQESUqbpBJKZ8BMDDHJW8H8DOp2AegXAhRA2ALgBYpZZuU0gfgvvC1OWuqTVUGCj4Gx8Ptqebo6gFEFHswyDLu53s78JPn2rN9G0SUJi3WyGoBnI74ujP8WKzHoxJC3CCEOCCEONDX16fBbSUvkx3w1bJ+Ti3mjt8c6MRvD5yOfyER5TQtgizapig5x+NRSSl3Syk3Syk3V1VVaXBbyXM5wh3wMzC1mEjnewCwmAywGA0s9pgH3SNe9I9lrpMLEc2P2C0mEtcJYHHE13UAzgCwxHg8Z1WES+Mz0W/RnWCQAYCdZ5JlnD8YQv/YJASAYEjCaIi9SZ2IcpsWI7IHAbw/XL24FcCwlPIsgP0AlgkhmoQQFgDXhq/NWVaTESU2U0Z+Sx8Yi99nUcUO+JnXOzoJKYGQREa7uRBR5sUdkQkh7gWwE4BLCNEJ4KsAzAAgpbwTwMMArgLQAmAcwAfDzwWEEDcCeAyAEcBdUsrDGfgeNFVbXoTTgxOav+/AuB9CAOVFc2+IBngm2XzoHvZO/b1/bBJVJXPv7yOi3BU3yKSU18V5XgL4VIznHoYSdHmjwVmMlt4xzd93wDOJsiIzTMb4g2C71cQWVRnWM3JukBFR/mJnjxkanHacHpzQvLvHQLhhcCLsVhOLPTLs7DCDjEgvGGQzNDiL4QuE0B3xG7sWEunqoXKw2CPjeka8UOs7+ke5RkaUzxhkMzRU2gEAJ93jmr5vUiMyC4s9Mq172Iu6imJYjAb0Z/AwVSLKPAbZDA3OYgDAqQGPpu+b/NQigyyTuke8WFhmg8th4YiMKM8xyGaoKbPBZBCajshCIYnBcX/CQeYIl98rdTSUCd3DXiwstcFVYuUaGVGeY5DNYDIaUFdRpGmQjXj9CIZk3CNcVHarCSEJeP0hze6Bpkkpp0ZkTruFQUaU5xhkUdQ77Tip4dTidFeP+HvIgMgzyTi9mAlD4374AiEsKLXB5eCIjCjfMciiaKgsxkn3uGZTe0fOjAAAmlyOhK5n4+DMUitSa8qUqUX3WOYOUyWizGOQRdHgLMaoN4ChcW0O2NzT6kaJzYS1i0oTul4NMo7IMkPt6qGOyAIhieGJzBymSkSZxyCLosEZLsEf0GadbG9rPy5scibU1QPgmWSZpo7I1KpFgJuiifIZgywKtQT/pDv9dbKuoQl0uMexfYkz4ddMTS2yTVVGdA97IQRQXWJFVfjonj4GGVHeYpBFUV8Z3kumQeXi3lY3AGBbEkE2XezBNlWZ0DPihcthhdlogCvcLDgTp4IT0fxgkEVhMxuxoNSqydTintZ+VNotWLGgJOHXsNgjs7pHlD1kwPRhqpxaJMpfDLIYGirtaY/IpJTY2+rGtmYnDEkc3Mggy6zuYS8WhIOsvMgMo0EwyIjyGIMshnpnMTrSXCPrcI/j7LA3qWlFQOm1CLBqMVOUzdDKSMxgEMqmaLapIspbDLIYGiqL0Ts6iQlf6utUe1r7ASCpQg8AMBoEiszsgJ8JXn8QQ+N+1JQVTT3m5KZoorzGIIuhfqp5cOrTi3ta3VhYakOTy570a3kmWWaoB2qqU4sAlMbBDDKivMUgi6FR3UuW4vRiKCSxr9WN7UucECLx9TEVzyTLDPVAzYURQVblsKKfVYtEeYtBFkNDmiOy472jcHt8Sa+PqexWnkmWCT1Tm6GnGzi7SqzoG5vkaQNEeYpBFkN5sQWlNlPKXfD3tCS/fywSzyTLDLU91cKINTKXwwJfIIRR/vsmyksMsjk0OO0p7yXb0+pGg7MYdRXFKb3eYTWxs0cGdI944bCaptqAARF7yUa5TkaUjxhkc6h3FuNUCmtkgWAIL7S5k65WjKRMLbLYQ2vKHrJzz4VTg0w9boeI8guDbA4NlcXoHJxAIJjcAZeHz4xgdDKAbUtcKX+2w2rEqJcjMq2pB2pG4oiMKL8xyObQ4CxGICRxZsib1Ov2qP0Vm9MYkVlY7JEJPcNeLCwtOucxVwk74BPlMwbZHKaPc0luenFvmxvLFzhQVWKNf3EMdqsJE/4ggjzwUTOhkETv6OQ5FYsAUFlsgRBAH0vwifISg2wO08e5JF7w4QuEsL99ANvTmFYEIs4kY8GHZvo9kwiE5Dl7yADAZDSgspiboonyFYNsDgtKbLCYDEntJXu1cwgT/mDKZfcqNg7WXuTJ0DM5HRaukRHlKQbZHAwGgfrK4qS6e+xpcUMIYGtTukGmnEnGINOOGmSRfRZVLh33W+wfm4Rbp98bEcAgi6uhsjipqcU9rf1Yu6gMZcXmtD63xKZ2wGcJvlam+iyWzV67dOm4TdVn7zuIm3/3WrZvgyhjGGRx1DuLcWpgPKH2RRO+IF45NZTW/jGVepQLR2Ta6R7xwmQQcNljBZk+Ry0nekdT7hlKlA8YZHE0VBZj3BdM6Lf1l04OwhcMpb0+BkyvkbFNlXbODntRXWKNesipq8SCcV8Q4zorrpkMBNE7Oqnb0SYRwCCLSy3BP5VACf6e1n6YDAIXNFam/bkOFntorifKZmjVVHcPnf3APzvkhZTA8IQfkwFOU5M+McjiUEvwO/rjr5PtaXVjw+LyqdFUOli1qL3u4dhBVhUOsj6dTS92DU1M/V1vIU2kYpDFUVdRDINA3ObBI14/XuvUZn0MmB6RsdhDOz0jk1FL7wH9tqnqGpwOsj6dfW9EKgZZHBaTATVlRXGbB7/YNoCQRFr9FSPZzAYYBEdkWhn1+jE2GZi1GVo13aZKX6OWzogRmV6LWYgSCjIhxBVCiGNCiBYhxJeiPH+zEOJg+M8hIURQCFEZfq5DCPF6+LkDWn8D86HBWRx3RHbf/tMoLzZjY325Jp8phOCZZBqaPlAzepA5w5WMevth3zU4AbNRKW7R2/dGpIobZEIII4DvA7gSwGoA1wkhVkdeI6X8lpRyg5RyA4BbADwtpRyIuGRX+PnNGt77vGlwFuPUHHvJjnWP4i9v9OD67Y2wmY2afa6Dp0RrpntY+SEea0RmMRlQajPp7od95+A4Vi4sBcCpRdKvREZkWwC0SCnbpJQ+APcBePsc118H4F4tbi5X1Ffa4fb4Yo6OfvhUC4otRly/vVHTz7XzcE3NdMcZkQGAq0R/e8m6hibQXGUPh7S+pk2JVIkEWS2A0xFfd4Yfm0UIUQzgCgD3RzwsATwuhHhJCHFDrA8RQtwghDgghDjQ19eXwG3Nn+nmwbPXyU4PjOOh187i3VvqUV5s0fRzlalFFntooXtYWSuKVfl2Y9AAACAASURBVOwBhDdFj+rnh30wJNE97EVteRFcJVaOyEi3Egmy2btHlXCK5m0Anp8xrbhDSrkJytTkp4QQF0V7oZRyt5Rys5Ryc1VVVQK3NX/qK5Ugiza9+KNnWmEUAh95c7Pmn+uwGjm1qJHuES/Ki81zTv1WOazo9+jnh33PiBeBkERtRRGqHFbdbS0gUiUSZJ0AFkd8XQfgTIxrr8WMaUUp5ZnwP3sBPABlqjKvTI3IZhR89I568ZsDnfi782vnnLJKVbYO1zwzNKG7lkbdw5Mx18dULp11wO8Ml97XVRQr06Y6+t6IIiUSZPsBLBNCNAkhLFDC6sGZFwkhygBcDOCPEY/ZhRAl6t8BXAbgkBY3Pp9KbGY47ZZZzYN/8lw7AsEQPnbRkox8riNLVYtffuB13PirV+b9czNprq4eKpfDihFvQDcdMLqGlP9ea8s5IiN9i9uCQkoZEELcCOAxAEYAd0kpDwshPh5+/s7wpe8E8LiUMvJX+QUAHhBCqJ/1Kynlo1p+A/Ol3nnucS7DE378ct8pXLWuBo0ue0Y+056lqsU3zo5geMKPUEhG7UuYj7pHvFizqHTOa1wl022qFpXPPuol36iboWvLi1BVYsWoNwCvP6hpZS1RLkiol5KU8mEAD8947M4ZX98N4O4Zj7UBWJ/WHeaIhspi7O8YnPr653s7MDYZwCd3Ls3YZypBNr+jgxGvHz0jym/uPaPeqGd35Rt/MIT+sdhdPVRT3T3GJvURZEMTcNotKLIY4XKoG74nUVdRnOU7I9IWO3skqN5px9nhCfgCIUz4grjr+Q7sWlGF1XF+y0+Hw2qELxiCLxDK2GfM1No7NvX39r7k1slCIYmHXj2DQHD+7jcRvaOTkBKoiTu1OP3DXg86BydQV6EEclV4tMnKRdIjBlmCGiqLEZLKBtP79p/CgMeHT+7K3GgMyE7j4JaIIGvrTy7IXmgfwE33voLHDvdofVtpUU+GXpDAGhkA3ZTgdw1OoDYcZNOjTX18b0SRGGQJUisXW/s8+H/PtOGCxgpNjmuZSzbOJGvt88BsFLCZDehIMshO9I4CAI6cHc7EraVsqj1VglOLeiiKkFKia2gCteUckZH+pX/eSIGoDwfZHU+cwJlhL75xzbqMf+bUmWTz2N2jpXcMjU47jAaB9iSDTB3NvXF2NBO3lrKzw4kFWZHFCLvFqIupxf4xHyYDoakg02svSSKAQZawKocVxRYjXu0cxuqaUuxcnvlN29mYWmztG8PKhSUQAjiaZCBNB9lIJm4tZT0jXlhNBpQXm+Neq7Spyv/pt85BpfReLeywhL9/jshIjzi1mCAhxFSHj0/sXILwloKMcliVMun5alM1GQjipNuDpdUONDrtODUwnlThRkvvGAxCGQENenInDNQDNRP538zlsMKtg1GLeqCmukYGhFtw6eB7I5qJQZaENYvKsLTagavW1czL5833iKyjfxwhCSytdqDJZUcgJKe6Q8Qz4vWjd3QS28PnseXSqKx7xBu39F7lclh08cN+ag9ZRJBVOdhvkfSJQZaEb7xzLR745HYY52mTsN0yv8Ue6tTgkioHmquUTd7tCbaqUl979XlKyB/JpSAb9sZdH1Mpo5bcGU2mqmtoAiU2E0pt09OpeuzuTwQwyJJiMxtRYou/zqIVxzyPyFr7poOs0RkOsgT3kqlBdmGzE1Ul1pwp+JBSonvEG3cPmcrlsGJw3Jdze+GSpewhO3fjc5VOQppoJgZZDpvvqcWW3jHUlhehyGJEpd2CUpsp4crF1r4xWIwGLK4owqqa0pyZWhwa98MXCCU+tVhihZTAQA6t8aWia3C69F7lKrFgbDKACZ8+ekkSqRhkOcxiMsBiNMxbsUdL7xiWVjsAKMUtTS47OhKcWmztHUOjqxgmowGrakrQ0jsGfw6MahI5UDNSVbi7Rz7vJVP3kNVVnBtkVQ6W4JM+MchynH2eziQLhSTa+qeDDACaXHa0JTG1qL52dU0pfMHQ1FRlNk119UhijQzI7w4YIxMBjE0GoozIlO+tlwUfpDMMshw3Xx3wu4Ym4PWHZgSZA2eGJ+D1zz0i9PqDODUwjqVVymtX1Sj9J3NhelEdkSWzRgYgr8/u6hxS95BxREaFgUGW4+brTDK1WCMyyBpdxZASODUw+2TsSB1uD0ISWBJ+bbPLDovJkBMFH93DXggx3aIpHqcOGgd3Rim9B9imivSLQZbj7FbTvLSomgqyqukga3Ypf483vTgzBE1GA5YvcODImeyPyHpGvHA5rDAbE/tP3WE1wWoywJ3HxR6R55BFqrRbIER+hzRRNAyyHGe3mjDo8Wf8c1r7xlBpt6DCbpl6rNGllG/Hq1xs6R2DEErZvmp1uHJRSpmZG05Q90jie8gApcjF5bDm9dRi19AEbGYDKiP+twQAs9GAimILR2SkOwyyHHdhUyWOnB3By6cG41+chpbesXNGYwBQYjPD5bDG7YLf0juGuoqic04eXlVTCrfHl/Ufmmp7qmS4Sqx5XbXYFd5DFq0lVxXbVJEOMchy3PXbG+FyWPCtR49lbHQjpURL39jUGlekZpc9oRHZzBBUCz6y0eFDSomOfg/uffEUTg2MJzUiA5QS/HyuWuwcGp81rahylXBERvrD7vc5zm414VO7luJrDx3Bcy39ePMy7bvuuz0+DI37zyn0UDW57Pjr0d6Yrw2GJNr6PXjzMtc5j69aqFYujmLnimptbziKzsFx7G11Y2+bG3tb3VNHt1SVWHHJquQ+3+Ww4tXO3DpTLRldgxM4r6486nNVDitePjU0z3dElFkMsjzw7gvr8eNn2/Gtx47hTUtdmnfej1axqGp02dE/NolRrz9qe67OwXH4AqFZry0rNqO2vCjjJfi9I15c+//2TRWkVNot2NpciU8ucWFbsxNLquxJ//tyOawY8PgQCkkY5qmvplbGfQEMjvtjj8jYOJh0iEGWB6wmIz576TLc/LvX8Oihblypcff9uYKsyaX0XOzoH8e6urJZz6ubnqO9dlVNScaD7KWTg2jr8+DTlyzFletqsGJBSdrh43JYEAxJDI774HQkVrafK9SKxZl7yFSuEism/EF4JgNTLdCI8h3XyPLENZvqsLTagW8/fkzzhratfWMothhRE2UtSQ2ytv7oXToiO+bPtKqmFG39nrgbqtOhdue/4eIlWFVTqskISu2AkY/rZJ1xgkzdFM1RGekJgyxPGA0Cn79sOVr7PPj9K12avndL7xiaq+xRQ6DBWQwhlBFZrNe6HBaUF1tmPbeqphTBkMSJnsy1quro98DlsE6dFKAFVx53wOhUD9QsL476/HRI59/3RhQLgyyPXL5mIdbXleG7fz6u6SinNUrVocpmNmJRWRHa5xiRRRuNAZGVi5krnOjoH0eTK/oP7VS58ri7R9fgBMxGgeoYnUw4IiM9YpDlESEEvnDFSpwZ9uKXL5zS5D09kwGcGfZGXeNSNcUowZdSntMseKaGymIUW4wZbVXV7vZMnZ2mlXxuHNw1NIFF5UUxp1hdJfkb0kSxMMjyzI6lLuxY6sT3n2zRpAfjXMUaKjXIZu5j6xubxIg3EPO1BoPAyoUlGdtLNur1o290Eo0ubYOsrMgMs1Hk5Q/7zsHYe8gAwGm3wiA4IiN9YZDloZsvX4kBjw8/ebY97feaq2JR1eSyY8QbmHXYZCKvXZXBVlUn3eNT96clIQSc9vxsUxXtQM1IRoNApd2CvjwcbRLFwiDLQxsWl+PyNQvw/55tS/sk49a+MZgMAg1zTM+pQTFzerE1wSAb9QbQFS5C0JJ6P1oHGaBMweXbiGwyEETv6OSsrvczudiminSGQZanPn/ZCoz7AvjhUy1pvU9L7xjqncVzdoePFWQtvWNwWE1ztoCaPptM+3UytQek1mtkgPrDPvovCWOTganRaC45O6R0M6mrmLv4paqEm6JJX7gjMk8tW1CCd26swz17T+LTb1kWtetGIqL1SZyprqIIJoOYHWR9Y3E7Z6xcWAIhlEM237p6QUr3GEu724OFpTYUWYzxL06Sy2HFse5RjHr9OHxmBIe6hvF6+I+yXgjc+9Gt2LbEqflnp6ozxvEtM1U5rHH7ZxLlE47I8tg7N9bCFwil3DvPHwzhpHt8zqlBQDlfrL6yOOqILFqj4Uh2qwkNlcUZ6fDR0e+ZOmpGay6HFWeHvTjva4/j2t378B//+wZeaBtAs8uBz7xlGUwGgWdO9GXks1PVFeNk6Jlc4RFZto/YIdIKR2R5bGN9OYwGgf3tA7h4efLNhE+6PQiEZNwgA2aX4I96/egZmYy5hyySWvChtQ73OC5fo+0oT/U362pwZmgCy6odWFtbhrW1ZeecMv3siX7sbXVn5LNT1TU4AYNA3GNrqhxWTAZCGJsMpDySJ8olDLI8ZreasHZRKV7sGEjp9YlUHaqaXHY839o/1Ui3NdykN5HXrqopxSOHujE2GdCsA8fwhB8DHl9G1scAYF1dGW67bmPM57c2V+LOp9s0/Z7S1Tk0gYWltrinYat7yfpGJxlkpAucWsxzW5oqcfD0ECYDyXf6mKtP4kyNLju8/hC6R7znvDbRIAOAY93ajcqmCj0yULGYiG3NLgRDEvtT/CUiE7oGJ+JWLAJAlUMZscXb8H3KPY6/veM5nB3WvuKUSEsMsjx3QWMlfIEQXkvh/KzWPg9qymwJdUFvnuqCrwRIS+8YzEaBhsr4a1SrakoAAEc0rFzMZOl9Is5vqIDZKLCvLXemFzvj7CFTRY7I5vLY4W681jmM5070a3J/RJmSUJAJIa4QQhwTQrQIIb4U5fmdQohhIcTB8J+vJPpaSs8FjZUAgBfbkx8ZzNVeaqbGqS7400HW6LTDFGcaC1Cq6EptJk3Xydr7PRACqE8gSDOhyGLEhsXl2NeWGyOyQFAZLSc2IkuscfAL4f+mDp+Z/1O+iZIR96eQEMII4PsArgSwGsB1QojVUS59Vkq5Ifzn60m+llJUYbdgWbUj6SmuUEiitS92w9+ZFpbaYDMbpkZCrX2Jh6AQQvOCjw63B4vKimAza196n6itzU4c6hrGqNeftXtQ9YxOIhiScfeQAUBFsQVGg5hzRBaKmDY91JW/p2VTYUhkRLYFQIuUsk1K6QNwH4C3J/j+6bw2db1HgT99DvDkzrRPJm1pqsRLHYMIhhIvpz474sW4L5hwGBkMAo1OOzr6PZgMBHHS7Un4tYCyTnasexShJO5xLh39nqxNK6q2NTsRDEkc6BjM6n0A0wdqJjK1aDAIOO1zdy452j2K4Qk/XA4rjpwdSeq/LaL5lkiQ1QI4HfF1Z/ixmbYJIV4VQjwihFiT5GshhLhBCHFACHGgry/N/Tmn9gIv3Q3cvhHY90MgmP3fmDNpS1MlRicDSY14kinWUKkl+B394wjJ5F67uqYU474gTg5EP9csGVJKtGdwD1miNjVUwGI0YG8OrJN1Dir/XhOZWgSUfXJzjchebFe+p/dtbcC4L8gN1JTTEgmyaG0bZv569jKABinlegC3A/hDEq9VHpRyt5Rys5Ryc1VV8nuizrH5g8AnngcWbQIe/RLww+3Aib+k9545TF0nS2Z6MdUgOzUwjqPh6sNEpyWByFZV6U8vDo77MeINZKz0PlE2sxEb6stzouAjmREZoGyKnmtE9kL7AGrLi3BZeJ/e4TPaTS/+fN9JXHrr05qNzokSCbJOAIsjvq4DcCbyAinliJRyLPz3hwGYhRCuRF6bMdWrgPc9AFx3HxAKAL/8O+CX7wL60+tNmIsWlRehtrwoqSBr7RtDWZEZTvvsk51jaXLZEQhJPH2sD0IkF2TLFjhgNAi8cir9abhsVyxGUtfJRrK8TtY1NAGXw5rwmmHVHCMyKSVebB/Ahc2VWFrtgMVk0HSd7NFDZ9HSO6bJ6JwISCzI9gNYJoRoEkJYAFwL4MHIC4QQC0W44Z4QYkv4fd2JvDajhABWXAl8ch/w1n8HTu4BfnAh8Nj/AcZzo9pMK1uaKvFi+0DCbYfUisW5+iTOpAbHE8d6UVtelFSPQ5vZiEtWVuP+l7vSPt0623vIIm1trkRIAvtTqBrVUtdQYnvIVEp3f1/U/15a+8bg9vhwYVMlzEYDVi0swaEubQp1/MEQXgm3VHtd4yKSF9rcOHg6tXZtlN/iBpmUMgDgRgCPAXgDwG+klIeFEB8XQnw8fNnfAzgkhHgVwG0ArpWKqK/NxDcyJ5MV2PFp4NMvAxveDez9PvC9DcAz3wImc6+LeSq2NFWif8yX0FpGMCRxomc0brPgmdQgGxr3JzUaU31gWyMGPD48/PrZpF8bqb3fA6NBYHECFXqZtqm+AhaTIevtqjoHJ1CX4LQioIzIfMEQRiZmH86qbim4sElpiLymtgyHzgxr0pvxyJkRjPuUX2S0roa85YHX8e9/OqLpewLKfU740vvlizIroX1kUsqHpZTLpZRLpJTfCD92p5TyzvDf75BSrpFSrpdSbpVS7pnrtVnjqAb+9nbg488BjTuAJ/4DuG0DsO9OIJDfx1oks072xNFeDI77cfGK5NYiK+0WlNqUzdPJrK2pdix1ornKjnv2nkz6tZHa3R7UVRTBYsr+fn6b2YiNi8uxrz17QXZ2eCLhrh4qtW9kX5R1shfbB7Cg1IoGp/KLwtpFZRj1BnB6IP0OH+p/n7XlRXg9hU38sXj9QXT0e9DSO6ZpM+ThcT/e8f3n8bO9HZq9J2kv+z8JsmHhWuC6e4EP/xmoWgk8+kXg9vOBl38OBGf/hpoPllTZ4bRbpjaxzuWePR2oKbPhsiSPVRFCTI3KUgkyIQQ+sK0Rr54eSmsKqKPfk/VCj0jbljhx+MwIhifmf52sZ8SL63bvg9VkwDs3Ri0IjkrdFD1znUxKiRfa3djS5Jyadl5bqxTqHNKg4GN/xwDqK4tx8YoqzUZ5ANDW50FIKj043WkeNnvO+/aPIRCSONqt/Xl6sYx4/bhu9z52VElCYQaZavEW4AMPAe/7A2CvAh68UVlDe+23eRdoQghsbqyIOyJr6R3Fcy39eO/WhoS6csyUTpABwDWbamG3GFP+DVdKmRN7yCJtbXZCytS6q6SjNxxifaOTuPtDW6YqQxPhKone3eOkexw9I5O4sKly6rHlC0pgMoi0pwKlVPbcXdBYiXW1yijvpFubgo/jPdNBo+Whp5ENAObLrY8fx942N36+r2PePjPfFXaQAUpByJJdwEefAP7xl4DBDPz+I8Adm5W9aHk05bilyYnTAxPoHvbGvObne0/CYjTgHy9YHPOauSxbUAKDQNLra6oSmxl/d34d/vTaWbjjtEiKpm9sEh5fEI3O7K+PqTYsLofVZJjXMvy+0Um8+8cvoHvEi7s/tAXnN1Qk9fpYbarUMI4MMpvZiGULSnAozVZVbf0euD0+XNBYgXW1ZQC0K/g4FhFkWobOVJBpPGUZy6GuYfxsbwfsFiOePt6HcV9+/UKdLQwylRDAqquBT+wB/vEXgK0MeOgzSlHI3h8AvtzfELpF7bsYY1Q26vXjdy914urzauByWKNeE8/7tzXgvhu2oSKJsv1o7+ELhPDrA6fjXzxDR7/yG3wuVCyqbGYjNtVXzFvBh3tsEu/58T50DU7gp9dfMLU+moyyIjNMUdpU7Wt3o9JumTXiXruoFIe70psKVCs7L2iqxPIFJbAYDZpMVwJQipeqHSi2GDMyIvP4glMnP2RKKCTxL384hEq7Bd9513p4/SE8fSy3Dm/NVQyymQwGYNXbgBueAt77e6CyGXjsFuC765Qqx4ncLe9dVVMCu8U41ZVhpt+/3AWPL4gPbG9M+TNKbGZsaUr+B2ekpdUl2LHUiV/uO4VAMJTUaztyaA9ZpG1LnHijewRD49qtz0Qz6PHhPT9+AacGxvGT6zfjwmZnSu9jMAi4HLM3Rb/YPoAtjZWztmWsrS2D2+NL64f5/o5BOO0WNLvssJgMWLGwRLPKxWM9o1ixsATNVfaps/K00N7vQUn4dAgtAzKa3xw4jYOnh3DLlatw6aoFqCg245FD3Rn9TL1gkMUiBLD0LcAH/xf40GNA7flKleP/rAEe+SIw0JbtO5zFZDRgU0MF9rfP3nQcCkncs7cD6xeXY/3i8vm/uRnev60RXUMT+OvR3qRe1+72wGQQCXewmC/qOlkixTapGhpXQqy934Mfv/8CbF/iSuv9XCWWc0ZkXUMT6BycwIXNs39RUQs+Dqexn2x/xwA2N1acU0RyqGsk7Sm7cZ9SUbliQQmWVjnQqlHgqK3Q1Operd43mgGPD9989Ci2NFbimk21MBkNuGz1QjxxtDelswYLDYMsEfVbgff8FvjYM8DKq4H9PwFu2wTc+26g/VlgHubOE3VhUyWO9YzOGhk839qPtj4Prt/ekKU7O9dbVlajtrwo6aKP9j4P6p3FKRWqZNL6xWUZXSdr6R3D+37yIlp6x7D7/ZvxpmXphRigrJNFHq75Qvjeo424V9WUQojUKxd7Rrw4NTB+zjTo2toyDE/40y7rP9GjBMzyBSVYUuVA19CEJmtLvaOTGPcFsaWpEiU2k6YjvZn+76NHMeoN4N/fsXYq6K9YuxBjkwE838LqxXhy66dBrqtZD1zzI+CzrwMXfR44vQ+452rgR28GDv4qJwpD1B8UMzuy37PnJJx2C65aV5ON25rFZDTgPVvr8XyLGy29iZc2d7g9aMqh0nuV1WTE5kbt18kOdQ3jk798CW/9n6fR0juGO9+3CRcvT7MXadjMxsEvtg+g1GbCyoWzqx+LLSYsqXKk3OFDraaNDDKtCj7UisXlCxxTa3ttGoROZCu0pdWOjE0tvnxqEPftP40Pv6kJKxaWTD2+fakTJVYTHuX0YlwMslSU1gCX/AvwT4eBt92mlOr/4RPKtONf/g0Y7Mjara1fXA6L0XBOwcfpgXH89WgPrttSD6spe+d3zfSPmxfDYjTgZwlukA6FJDrcnpwq9Ii0tcmJo92jGNRgH9P+jgFc/9MXcfXtz+HZ4/345M4lePaLu3DJyuT2/s2lqsQKt2dyqnnvC+0D2NJUCaMhetuytYtKU24efKBjEMUWI9Ysmg7JFQtLYDYKTYLMYjKgwWmfCjItQicyyJZUOTJSgh8IhvAvDxzCwlIbPvOWZec8ZzUZccmqavz5SE/Sa8mFhkGWDnMRcP4HgE/uVfai1V0APP89pdLx59cAb/xp3vej2cxGnFdXds6epl/sOwmDEHjP1vp5vZd4nA4rrl5fg/tf6kzocMqeUS+8/lDOBtm2JUrhRarrZFJKPH28D+/60V78w5178XrnMG6+fAWev+US3Hz5ypQrTWNxOazwByWGJ/zoHfGivd8zZyHP2toynB32xj1ZOpoX2wewsb78nClhq8mI5QvSL/g41jOGpVVKU+oGpx1Gg9AkdNr7PbCYDFhUVoSl1Q70jk5q3hz6F/tO4sjZEXzlbathDxeVRLpy7UIMjvvnfY9ivmGQaUHdi3bdvcBnDwE7vwT0vgH8+j3Ad9cCT3wDGEq+1DxVFzRV4lDXMMZ9AUz4grhv/2lcvmYBaspyq0ACUPovenxB/P7lrrjXTv2GnINTiwBwXl05iszGlNfJ7ny6DR+460WcHhjHV9+2Gs998RJ8atdSlNrMGt+poipiU/QL7ef2V4xmzSJlKvBwkvvJRrx+HO0eibpNYF1tGV5Ps6z/RLhiEYAyMqss1mxE1ugshsEgpnqLalnw0TvixXceP46LllfhyrULo15z0fIq2MwGTaoX1WYCesQg01pZrRJkn30duPZeYMFapWz/e+cpo7TXfwf40+9ZN5ctTZUIhCQOnhrCg692YXjCjw9sa8zoZ6ZKraK8Z29H3B9m03vIcmczdCSLyYDNjRUpBdnYZAB3Pt2KnSuq8PTNu/DBHU1JnS6QCldEm6oX2t2wz5j6m2l1+LlkR1AvnxxESCJqkKkFH52Dqf1/YnjCj7PDXixbML3vrVmjacD2iA4yS6qUf2q5TvafD7+ByUAIX/vbNTFPoSi2mLBzeTUeO9yd9vlt//v6Wez89lPYo8PiEQZZphhNwMqrgPf+DvjMq8Cb/xnoPw7c/2Hg28uBBz8NnNqXkYrH8xsqIIQyxXXPnpNYubAk7b1fmfSBbQ1o6/Pg+Za5A6DDPT3Vk6u2NivrZMl2LfnFvpMYnvDjc29dPm/NkCMbB7/YPoDzGyvnrAYtKzKjwVmc9DrZgY5BGA0CG+tnb/tQCz5SnV5UC4VWLJguklha7UB7vyetdaVgSOKk24MmlxKQ9ZXFMBuFZpWLfzzYhT8cPIOP71wSd0/kFWsXond0Eq+cTu8sv4deVY6C/O5fT6T1PrmIQTYfKhqU4pDPvKb0dlz5N8DrvwXuuhy4fRPw9Lc0LRAptZmxamEpfvXiKRw5O4L3b2tM6tyx+XbVuho47Rb8+Lm59+ZFTvXkqq3hDcrJrGlM+IL48bNtuGh5Fc6rm789fmqbquM9ozjeM3ZOW6pY1i4qS7py8cWOAaxdVIpiy+w1oBULlT6OqRZ8HOueLr1XLamywx+UOJXGwZ1dgxPwByWawyFjMhrQ6LRrMiL71Qun8NlfH8SFTZX45M4lca+/ZFU1zEaRVvXiuC+Ap4/3obrEihfbB3LiVHMtMcjmk8EANF0EvPNO4PPHgbf/ACitBZ78D+B764EfXwrs+yEwkt55XYAyvdg3OolSmwnv2LhIg5vPHJvZiI9e1IynjvXhyTk2SLfnWNf7aM6rK0N5sRl3Pd+e8FTQfftPoX/Mh5suWZrhuztXaZEJFqMBj7yu/IBMJMhWLyrFqYFxDI8nVvQwGQji1dNDMdtoqX0cUw2y4z2jKLYYz9kgr1YupjN6anfPPrx1abUDbWlOWe5+phVffuB17FpRjXs+tCWhE71LbWbsWOrCI4e6U15LfOpYH7z+EP77789DVYkVt+lsVMYgyxZrCbDxPcD1f1JGapf+DFrIxwAAIABJREFUGxDwAo9+Cbh1FXD31cCBn6Z8krU6lfiuzYuj/iacaz60owlLquz4t4cORz1BOhiSOOUez7nWVDOZjQZ8+cpV2N8xiHv3n4p7/WQgiN3PtGFLU2VKPRPTIYSAy2FBW78HVpMB6+rK4r5mbXgq8PDZxILnUNcwJgMhbJ7je1tXW4pDKRZ8HO8ZVRpZR4zSl2hQgt8eDqzI/96WVDlwcmAcvkDyU5ZSSnzn8WP4z4eP4urzanDne89PKMRUV65diM7BiaQLbVSPHOpGpd2CNy914WMXNWNPqzuhswvzBYMsF1Q0AG/6J+XAz0/tBy7+IjB6FvjTZ4FvLwN+8XfAS/cAY4k3EN25ogrv29qAGy5qzuCNa8diMuDrb1+Lk+5x/Ojp2VOMZ4Ym4Avmbul9pH/YXIdtzU588+Gj6InTm/D3L3fh7LB33kdjKvU4l031FQntMVSLQRJtVbU/vDH/gsbY3fnX1ZZhcNyPrqHkCz6O94xi+YwGx6U2M6pLrGkVfKg9Fl2O6ebYS6sdU2tnyQiFJL720BHc/kQLrr1gMb537cak10EvXbUABoGUphe9/iCeeKMHl61eoDQiuLABLodFV6MyBlmuqVoO7LoFuPEA8LFngW2fAtwtwEOfBr6zHPjp3ygnWg93zvk2xRYT/v0da1FdapunG0/fjqUuXH1eDX7wVAtOzTinqkOd6snxqUVAGen85zXrMBkM4at/PBzzukAwhB881YL1i8vxpqXpt5xKhbpOFq2/YjQuhxU1ZbaEW1Xtbx9QDn2dYw/c2hQLPtxjk+gf853TDUOVbieOtn5l433k2vJUCX4SARkIhvCF+1/D3Xs68JE3NeG/rlkXc8P5XJwOKy5scuLRw8kH2fMt/fD4grgiXOJfZDHio29uxrMn+vHKqfQKSHIFgyxXCQHUnAe89evApw8qo7WLbgYmBpQTrf9nDbB7F/Dsd4CeIznV7zEd//I3q2EyCHztoXMDIFe73sfS5LLjs5cuw6OHu2P+Fv3gq2dwemACN+5amrViHLUEP5mq1jWLyhIKnVBI4sDJwbhTpqtqSmE0iKSLSI73zC70UKmdOFJdU+pwzz68tTnJEvzJQBA33fsKfvdSJ/7p0uX4P3+zKq3/na9YuxAtvWNJtXQDlGnFEpvpnCbT793agIpiM25/oiXl+8klDLJ8IASwcB2w68tKF5EbX1LW1IQA/vp14IfblH1qD98MtPwlJ3o+pmphmQ2fvXQ5/nq0F38+0jP1eHv/OIrMRiwo1ba7RSZ99M3NWFVTiq/88dCsjhChkMT3n2zByoUleMvK6izdoVLMUGI1YVN94gdzrq0tRVu/B57JubvWnOgdw/CEP26Q2cxGLKt2JF3wcaJX7bEYfUQ26g3MOm8tEZOBIDoHJ2YFmd1qwqIyW8JFJLf/tQWPHOrGv169Gp+5dFnav6xcvkYZUSUzvegPhvDnIz24dNWCc6Yz7VYTPvLmZjxxtBevd2pzlE42McjykWupsqb20SeAz70BvO17ysbrl3+urKf9dxNw33uUrzWogJxv1+9oxPIFDvzbg4cx4VMKPzrcHjQ4i3N6G8FMZqMB37xmHfrHJvHfjxw957lHD3ejtc+DGy9ZmtXtBB96UyP+8s8XJ1V4sHZRGaQE3jg79wgqWqPgWNbVliVd8HGsexSlNlPUX27UacBUphdPucch5fQI7Jz3TWLK8vEj3dix1IkPv6kp6XuIZmGZDRvry5Pq8rGvzY3hCf/UtGKk929rQKnNhNueyP+1MgZZvitdBJx/vdIe64vtwLt/C6y/FjhzEHjwRuDWlcAPtgOP/wvQ+mRejNbMRqXwo2toAj94Spn66Oj3RP3BkuvWLy7HB3c04ZcvnJr6wS6lxO1PtKC5yo4r12b3NAKryYgFSa6jJrqmtb9jAAtKrVhcGX8D+7o65eDOs8OJH9x5vGcUyxeURP3lZroEP/kgU1uhRVuPTXTK8szQBI73jGHncm1H21euXYjDZ0ZwOsE9co8c6kaxxRj1xIQSmxkfflMz/nykJ+Vm0LmCQaYn5iJg+WXA1bcC/3QI+Pjzyhqb3Qm88CPg5+8A/rsR+OU/KAUjfcdydm1ta7MT79xYix893YaW3lGcGhjPi0KPaD731uWoLS/Cl+5/DZOBIJ481os3zo7gkzuXprTwn20LSq1wOSw4FKcUfH/7ADZHOW06GrWPY6LTi1JKHO8Zw/IohR7qPTqsppRGZFNBFmU9dkm1A+O+YNyTsp8+rlQYq4dyauWKNcovPolMLwZDEo8f7sauFdUxR9zX72hEidWEO9JYKwuFJPxZ7s7PINMrIYCFa4Edn1G6iXyhHbju18DG9wLuVqVg5PtbgO+sBO7/KPDKL+a1sXEibrlqJawmA2781SsIhGRelN5HY7ea8I13rkVrnwfff7IVt/21BXUVRXj7htzeqB6LEAJrFpXNuaepa2gCZ4a92JLg3rjVNaUwiMQrF3tHJzE84T+nNdXMe1xSZU9pU3R7vwcuhwVlRbObNS9NcMry6WN9WFRmw7IZWwPSVe8sxnl1Zfjp8+1xO/G/dHIQ/WO+qNOKqrIiM67f0YhHDnXjWHdyRSSq/3rkDbzlO09n9SRrBlmhsDqAFVcAV30L+PTLSiXk274HNGwHWp8A/vgppVP/9zYAD31GaW48mt0D/apLbPjcZctxNPx/sHypWIxm54pqvGPDItz+xAkcPD2Ej1+8BOYcO+U6GWtrS3GiZzTq5nVAGY0BwOY59o9FKrIYsaw68Q4f6mGakc2CZ0pmPStS2xwdZJZUK4/P1QXfHwzh+ZZ+XLyiKiNrul/72zXoGZ3Evz0Ye2sHADxy6CwsJgN2xSkm+tCOJtgtRtyewlpZ3+gkfrb3JE4NjOPBg2eSfr1W8vf/SZSeyiZlbe0ffgrc3AJ8Yg9w+X8BVSuB1+9Xmht/ZwVw2ybgjzcCr94HDMXvVKG1921twMrw9FG+Ti2q/vXq1SgvMmNBqRV/f35dtm8nLWsXlSEQklOBEgiG0DvqxRtnR/DciX489OoZlFijnzYd8z2TKPhQRw+xRmSAsp7VPeLFWJzqypk6+meX3quqHFaU2ExomWPt7ZVTQxidDGh2kvdMG+sr8KmdS/D7l7vw6KHoxVxSSjx2qBsXLauCI8o5Z5Eq7Ba8f3sj/vf1s0mX9v/0+Xb4gyHUlhfhx8+2p3UcTzpyv3cRZZ4QwII1yp9tn1QOA+1+FTi5B+h4HnjjQeCVnyvXltUro7j6C4HFW5XgM2Tu9yGT0YDbrtuIv7zRc06XhXzkdFjx249vByCTqhLMRWrBx0fuOYBASGJw3DdrufXKtQuTWgNcV1uK+1/uRM/IJBaWzV2AcrxnFE67Zc6N1lMFH71jWL84sWbMY5MB9I5OoilGYZEQAkurHWjtjT1l+dSxXpgMAtszuMn9xkuW4YljvfjyA4dwfkPl1EkGqlc7h3Fm2IvPXbYioff7yJua8LM9Hfi/jx7D7vdvTug1I14/fr73JK5cV4Ody6tw8+9ewzMn/n97dx5fVXnncfzzu9mTm4WEJEA2dhERQVBEXGrrgnVrnapVa53W1qqtbe20ajtTp9ppq2MXO622RetLZ1xaN7Q6CjJWBbEqoILsW1jCkoUA2SAhyW/+eM7NvUkuNzeQ7Ybf+/U6r3POc2+Oh0de+fKc8yxVvRbgkViQmc7i4qFgmttOvxVaW6FiNWxd7LZNb8CKv7jvJmVC0SlQNMNtBdPcY8weND4/PexYoVg0toffmfSXwiEpXDOjmOq6JnL8iQz1uw4gOf4khvqTyPEnUpzdvXXjAnM9frJjfxRBVtfl34nQLvjRBllg4P3oCI+xx+T62zpzhPP2+kpOLhnSawuigpvS7ddXTuHi373DD19YwcNfnt7uMeZrK3cR7xPOOz4/quvl+JO45Zyx3D9/He9uqmo3ePpwnnhvK7WNzdx89hjG5fv5z/nreGTRZgsyM0D5fK7jyLBJMOMbrqfj3lLY9j5s97Y3fw4oSBzkTYTC6W4rmA5Dx/dqq830PRHh558/sUevOXF4Jj5xQXbexMP/AlZVNpTXcsX0oojXK8lJJd4n3eqCvzlCj8WAsXl+nltWxv4Dhzp1CKmoPciqnTX84ILoWkJHY3x+OrdfcBz/8b9reHZZGVd69aGqzFu5m5ljcshMjT5MbzhjFE+9v42fvrKGV249I2Jr+uChFh59p5Szxue2tc7/+fSR3D9/HWt21XD88OgfKfcE++1iuk8EskfDlKvhkgfcbCN3bIFrn4czvwdpQ2HlC64DyUMz4L4S+O/L4I2fwtpXY3KQtul9KYlxjM3zd9lzcce+A9Q3tUTs6AFuPGJJTmq3OnxsiTCGLCDQ0gu3pMvC9W715b5qlXx11ihmjMrmnpdXt40tW7u7lq17Gro9RjE5IY47LpzAml01PLcscg/mZ5eVUVXX1G49tWtnFJOSEMfDiyKvK9gbrEVmekZKFow7123gHkfu2QBlS2HHUihbAu/8BtTr5eYfBgUnw4ipwS2tfybONQPHpBGZLNpYFfE7gQ4mkTp6BHR38uDSqnoKslIivsMcG7JMzNQOU3u9vb6Sof4kJvZRi8TnE355xUlc+NtFfP/Z5Tz99dN4beVufALnnxDdY8VQl0wezmOLS7l//noumjwibEeR5pZW5izcxNTirHZr2GWlJnLl9EKe+mAbd8ye0O2B9kfDgsz0Dp8Pco9z29RrXVlTA+z+BHZ+FNzWvQZ4vQQyCt1EycMmw/CT3HFGgWsBmmPCpIJMXvhoB7v2H2B4ZvgZQQKTBY+LIsjG5Pp5Y00Fh1paoxru4Ga9j/xur2hICglx0mmMWkursmhDJZ+ZkN+n044VZady1yUTuf25FTy6uJR5K3dxysjstgmhu0NEuOuSE/jcg4t56M2N3D57QqfvvLJiF9urD3DXxSd0Gl7w1TNG8T/vbeWxd7dwR5if7S0WZKbvJKa63o7FM4JljbWwawXs/BB2LXfHoeGWkh0Mt2Enup6VQ8dDXO+9SDf9Z9bYocT5hH+du5KHvzw97Hua9btrGZaRHHbAckdj8/w0e2uIjc2LHHyqSmllHZd2MVA9Ps7HyJy0Ti295WX72NdwqMdn84jGFdMKeX1VOffNW8uhFuUnl0w84mtNKcric1NG8Mg7pVx9ajFFIZ12WluVP7y1ifH5/rCTXZfkpHHBCcN48r2tfOucsaR10fW/p1iQmf6VlA4jZ7ktoKkeyle5YNu9woXb+3+Elib3uS/BdfsfNskbNuDt03Kt9RbjjhuWzk8uPYEfv7iSX7y6hn+7uPMv5HXltYedmqqj4GPAroNsb8Mhag42M2po1z1Lx+b5O82E8fa6SnwCZ/bD2nIiwi8uP5HZDyxkT30TF0SYzSMat8+ewLxVu7lv3lp+f83JbeV/X1vBuvJafnPVSYdtdX7tzNG8tnI3zyzdzldm9cyEyV2xIDMDT2IaFJ3qtoCWQ26B0d0rodzbNr0Jy58Ofic1x/WYzDve2ya6wEuJruu1GRiuO62ETRV1PPJOKWPy/Fx9anHbZy2tysaKOmaOzonqWqO7sRhmaZX7zqguHi2Ce2T5+upymppb25ZHeXt9JScVZTEkrX/GO+amJ/HQtSezvGzfYR/LRmtEVgo3njWG/3pjA1+ZVc20kmxUlYfe2khBVgoXTz58q3VayRCmlQzh0cWlXHdaCfF9MINNVEEmIrOB3wJxwCOqem+Hz68F7vBO64CbVXW599kWoBZoAZpVNbrRdsaEiksIBhRXBMvrq1yoVayFilVQsQY+fgqaQn5xpY8Ivq/LPc6FW+4ESI1+MUnTt/7touMprarnxy+upCQ7tW1w8bbqBhqbW6NukfmT4hmemRxxSqmAzZWBxVuja5G1eI8sx+Wns7e+ieVl+/jOZ8ZFdV+9ZcboHGZEGfJduens0fx1yTbueXk1c2+ZxZIt1Xy4bR/3XHZCl+8bv37mKG564kPmryrnosm9v8JDl0EmInHAg8B5QBmwRET+pqqrQ75WCpytqntF5EJgDhDyIoRzVDVyVyRjjkTaUBj9KbcFqML+7S7UyldB1XqoXOvWZzsU8oI+LReGHgdDx3nbeLfPLAJfbM+8Eevi43z87pqpfOEP73LTE8t48ZuzGJ3rb+ux2J0B8mNy/RGnlArYsqeeeJ9QOKTr1kzoYOtx+eks3FCJat91u+8LqYnx/OCCCXz/2eW8tHwHL360k6H+xLbxapGcN3EYJTmpPLxoM589cVivryMYTYvsVGCjqm4GEJG/AJcBbUGmqu+GfP89ILYnkjOxTQSyit02/oJgeWsr1JRBpRdslWugagOsfhEO7A1+Lz4ZcsaG2cZYK64PZSQn8OfrT+GyBxdzw+NLmXvL6az33kt1Z1b5sXl+nl26HVWN+Au1tKqe4uzUqHo3BtbGCzyyfHt9JUNSE5hcOLgeY18+tYDH393C3S+vZl/DIX5wwXFRTa8W5xNuOGMUd720imVb9zI9ylUQjlQ0QVYAhI6OK6N9a6ujG4DXQs4VeF1EFPiTqs4J90MiciNwI0BxcXG4rxhzdHy+YMAFxrsF1O9xLbe2bYPrbLLm5eDYN4CUIcFgyx7tbaPcPiW6md5N9IqyU5lz3TSuefh9bn7iQzJTEijKTulWb7gxuWnUe2uIRXp3tLmyPuqlgtKS4hmRmcymynpaW5WF66s4c1xuTK4vF4nPJ/z44olc+ad/4E+K50unlUT9s1+YVsivXl/PnIWbB0SQhfs/E3aKYxE5BxdkZ4QUz1LVnSKSBywQkbWqurDTBV3AzQGYPn36wFzt0QxeaTmQNhNKZrYvb25ys/7v2RjcqjdB6cL2HU3ABVn2aBgyyoXbkFEwZKQ79g+zabqO0PSR2dz3hRO57a/LAcJ2+45kTMgA5sMFWWursmVPPbO60eMwsEzM6l01VNU1DqrHiqFOHZXNtz8zjhGZ0Q15CEhNjOdLpxXz0FubKI2wokBPiCbIyoDQh6KFQKeFZ0RkMvAIcKGq7gmUq+pOb18hInNxjyo7BZkxA1J8Igwd67aODh2AvVugenP7bfsHsOoF0JBVc+OSYEiJF24lkFXi7YvdsfWsjOjzUwvZVFHP79/cGNVA6FChs+CfOS582JTXHuTgodZu/bIdk+vnmaXbeWtdBQBnDdIgA7fK+ZG4fuZIWlohPbl3O8hHc/UlwDgRGQXsAL4IXBP6BREpBl4ArlPV9SHlaYBPVWu94/OBe3rq5o3pVwkpIT0pO2huch1O9m5xEyzv3eKF3ha3PE5Th3WfkjNdoAUefWYVu04nWcWQVQTJWcf8GLnvnTee/IykLheK7CiaNcRK23osdiPI8vw0NLXwzNIyJhVkdFpKxUBeRjJ3Xtj7M3x0GWSq2iwi3wLm47rfP6qqq0TkJu/zPwJ3ATnAQ97L1EA3+3xgrlcWDzylqvN65U9izEASn+g6h+SM6fyZqutcsm+re2y5d2vwuGqDW7H7UEP7n0lMd4GWWQSZhd4Wcpw+3C2/M4j5fMJ1M0d2++eiWUMsMOt9d4JsrNdzcVt1A988J8z/Z9Nnovqbr6qvAq92KPtjyPHXgK+F+bnNwElHeY/GDC4irvdjarabLLkjVWiohv3bXLjt2+5ad/u2wf4yNwHzgeoO1/S593CZBW5+yoyC4HFmIWSMAH/+MTusYEyunwWry9lUWdfWdT5UaVU9yQk+hnVjotsxecHQO3t891qJpmcN7n/CGROLRLzOJznhgw7cNF77y1zA7S/zth1ueEH5Slg/H5oPdLiuF3YZw12wpY9w+4wRrkWXPhzSh/X4wqgDwVWnFLFgdTkXPrCIWz89lm+cPaZtRg5wy7eMzEnr1mS/gUeWKEwttnec/cmCzJhYlJgWnKkknMDjy5odXsDtgNpdULPTbZXrYfPb0FjT+WeTMlygpQ9zYZee7wIwPd+FnT/ffZbYe73QetopI7NZ8L2zuPvl1fxqwXpeWbGLX/zTiZzsLcNSWlXPcVHOFhIgIpw1LpfM1ISoxp6Z3iOqA6+n+/Tp03Xp0qX9fRvGDH6NtW6h09pdULsband6+11e+W6o2x2csDlUYnow5Px5LuD8eS7kAudpeW72lQH0SPP/Vpfz45dWsrvmINfPHMlt541n2k8XcONZo8MuW2IGBhFZdrgpDq1FZsyxLCkdctMhN0L36kDrLhBqteUu6OrK3VZb7gaP15W3n+MyQHxuQmd/vpsWzJ8P/lx3nJbnlQXOc3t9iZ5zJ+YzY3Q2v5y/jsf/sYWXl++kuVV7dZyT6V0WZMaYyEI7p+R3sc5VYx3UV7hwqyuH+kqoq2h/XL3J7ZsPhr9GclYw1NKGept3nprjzlO98pTsI+qtmZ6cwN2XTeLSKQXc+fwK9tQ3MWFY36zqbHqePVo0xvQ9Vdd6q6+Eukq3r69wqxnUVUBDlTuur3T7hj0cZkIhL/hCwi012wVeao4razv2wjgpo92YvKbmVtburhl08yQONvZo0RgzsIi4x5pJ6W5ar660trghCfWVwZBr2OPtQ86rN7vhCQ17oLU5/LV88a4l54VbYsoQJqfmwNpsN81YirdPzQ4epwxxYwPNgGRBZowZ+Hxx7j2aP8ppoFRdj8yGPS4AA6F3oNqdH/DKGvaGhF81tB46/DUT/cFQ67RlBY+Ts4JlyVmud+cxPitLb7MgM8YMPiJu2q/kzOhafOA97qxvH3YH9nrH+9zxgb3B8orV7rOD+w7f+gPwJbj7CARb6HGKdx4ob/vMK0vKGPQztvQEqyFjjAHvcaffbVndWEoq8L4vEHYHA6EXcn5wvzsPfLa31Dvf336ZoHAS/cGQC2xJGd5xRsh54NgrD5QlpA76FqEFmTHGHI3Q931ZXa+e3E6gFdgu7PZ75zXe8f5gWWONG9DeuNYrq+k6CCUuGGyBcEtK9869+277PL3zZ4Hj+KQBG4gWZMYY019CW4GZhd3/+UAQNtYEg68xdF8TZl8bDMPGWlcW6d1ggC8+GG6JgZDze+cd9kl+7zve+YipvToTjAWZMcbEqtAgzBhxZNdQheZGF3SNtWE2LwQb69x5U12wvKHard4QKA83IB7glvfCL3fUQyzIjDHmWCYCCclu8x/lLP6trcFAa6xz6+411rq19nqRBZkxxpie4fN5nU76dpYUm7LZGGNMTLMgM8YYE9MsyIwxxsQ0CzJjjDExzYLMGGNMTLMgM8YYE9MsyIwxxsQ0CzJjjDExzYLMGGNMTLMgM8YYE9MsyIwxxsQ0CzJjjDExzYLMGGNMTLMgM8YYE9MsyIwxxsQ0UdX+vodORKQS2HqUlxkKVPXA7QxmVkeRWf10zeooMqufrkVbRyWqmhvugwEZZD1BRJaq6vT+vo+BzOooMqufrlkdRWb107WeqCN7tGiMMSamWZAZY4yJaYM5yOb09w3EAKujyKx+umZ1FJnVT9eOuo4G7TsyY4wxx4bB3CIzxhhzDLAgM8YYE9MGZZCJyGwRWSciG0Xkzv6+n4FARB4VkQoRWRlSli0iC0Rkg7cf0p/32J9EpEhE3hSRNSKySkS+45VbHQEikiwiH4jIcq9+7vbKrX5CiEiciHwkIq9451Y/IURki4h8IiIfi8hSr+yo62jQBZmIxAEPAhcCE4GrRWRi/97VgPAYMLtD2Z3AG6o6DnjDOz9WNQP/oqrHA6cB3/T+3lgdOY3Ap1X1JGAKMFtETsPqp6PvAGtCzq1+OjtHVaeEjB076joadEEGnApsVNXNqtoE/AW4rJ/vqd+p6kKgukPxZcDj3vHjwOf69KYGEFXdpaofese1uF9GBVgdAaBOnXea4G2K1U8bESkELgIeCSm2+unaUdfRYAyyAmB7yHmZV2Y6y1fVXeB+kQN5/Xw/A4KIjASmAu9jddTGe2z2MVABLFBVq5/2HgBuB1pDyqx+2lPgdRFZJiI3emVHXUfxPXiDA4WEKbMxBiYqIuIHnge+q6o1IuH+Oh2bVLUFmCIiWcBcEZnU3/c0UIjIxUCFqi4TkU/19/0MYLNUdaeI5AELRGRtT1x0MLbIyoCikPNCYGc/3ctAVy4iwwG8fUU/30+/EpEEXIg9qaoveMVWRx2o6j7gLdw7V6sfZxZwqYhswb3O+LSIPIHVTzuqutPbVwBzca+CjrqOBmOQLQHGicgoEUkEvgj8rZ/vaaD6G3C9d3w98FI/3ku/Etf0+jOwRlV/HfKR1REgIrleSwwRSQHOBdZi9QOAqv5QVQtVdSTud87fVfVLWP20EZE0EUkPHAPnAyvpgToalDN7iMhncc+r44BHVfVn/XxL/U5EngY+hVsyoRz4d+BF4BmgGNgGXKGqHTuEHBNE5AxgEfAJwXccP8K9Jzvm60hEJuNexMfh/gH8jKreIyI5WP204z1a/L6qXmz1EyQio3GtMHCvtZ5S1Z/1RB0NyiAzxhhz7BiMjxaNMcYcQyzIjDHGxDQLMmOMMTHNgswYY0xMsyAzxhgT0yzIjDlKIlLn7UeKyDU9fO0fdTh/tyevb8xgYEFmTM8ZCXQryLzVGiJpF2Sqeno378mYQc+CzJiecy9wprfW0m3eJLv3i8gSEVkhIt8AN2DWW/vsKdwAbETkRW8i1VWByVRF5F4gxbvek15ZoPUn3rVXeus7XRVy7bdE5DkRWSsiT3qzliAi94rIau9eftnntWNMLxmMkwYb01/uxJvRAcALpP2qeoqIJAGLReR177unApNUtdQ7/6qqVnvTPy0RkedV9U4R+ZaqTgnz37octy7YSbjZWpaIyELvs6nACbg5RhcDs0RkNfB5YIKqamC6KWMGA2uRGdN7zge+7C198j6QA4zzPvsgJMQAvi0iy4H3cJNejyOyM4CnVbVFVcuBt4FTQq5dpqqtwMe4R541wEHgERG5HGg46j+dMQOEBZkxvUeAW73VcKeo6ihVDbTI6tt9NoJkAAAA+klEQVS+5ObmOxeY6a3A/BGQHMW1D6cx5LgFiFfVZlwr8HncwoXzuvUnMWYAsyAzpufUAukh5/OBm73lYRCR8d6s3x1lAntVtUFEJgCnhXx2KPDzHSwErvLew+UCZwEfHO7GvHXWMlX1VeC7uMeSxgwK9o7MmJ6zAmj2HhE+BvwW91jvQ6/DRSXhl3GfB9wkIiuAdbjHiwFzgBUi8qGqXhtSPheYCSzHLRx7u6ru9oIwnHTgJRFJxrXmbjuyP6IxA4/Nfm+MMSam2aNFY4wxMc2CzBhjTEyzIDPGGBPTLMiMMcbENAsyY4wxMc2CzBhjTEyzIDPGGBPT/h9vpb1llh6SfAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "its = d.getitstat()\n", "fig = plot.figure(figsize=(7, 7))\n", "plot.plot(np.vstack((its.DeltaD, its.Eta)).T, xlbl='Iterations',\n", " lgnd=('Delta D', 'Eta'), fig=fig)\n", "fig.show()" ] } ], "metadata": { "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }