Skip to content

Instantly share code, notes, and snippets.

@sachinruk
Last active March 20, 2017 04:35
Show Gist options
  • Save sachinruk/caebbda2175d68179500213e076fc598 to your computer and use it in GitHub Desktop.
Save sachinruk/caebbda2175d68179500213e076fc598 to your computer and use it in GitHub Desktop.
pymc3 multivariate normal random walk
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"import pymc3 as pm\n",
"from pymc3.distributions import Continuous\n",
"\n",
"from scipy.linalg import cholesky\n",
"import theano\n",
"import theano.tensor as T\n",
"import theano.tensor.slinalg as sla\n",
"from sklearn.preprocessing import StandardScaler, MinMaxScaler\n",
"\n",
"%matplotlib inline\n",
"np.random.seed(1)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Generate the data\n",
"Sigma = np.random.randn(3,5)\n",
"Sigma = Sigma.dot(Sigma.T)\n",
"L = cholesky(Sigma, lower=True)\n",
"\n",
"y = L.dot(np.random.randn(3,10000))\n",
"y = np.cumsum(y,1)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\nt6nRbTowWwgAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1191dac50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(12,5))\n",
"for i in range(3):\n",
" plt.plot(y[i,:])\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# multivariate random walk using cholesky\n",
"class mvNormalRandomWalk(Continuous):\n",
" def __init__(self, mu=0., cov=1., *args, **kwargs):\n",
" super(mvNormalRandomWalk, self).__init__(*args, **kwargs)\n",
" self.cov = cov\n",
" self.mu = mu\n",
"\n",
" def logp(self, x):\n",
" mu = self.mu\n",
"\n",
" x_im1 = x[:-1]\n",
" x_i = x[1:]\n",
" \n",
" L = sla.cholesky(self.cov)\n",
" log_det = T.log(L.diagonal()).sum()\n",
" delta = x_i - (x_im1+mu)\n",
"\n",
" solve_lower_triangular = sla.Solve(A_structure='lower_triangular', lower=True)\n",
" Linv_delta = solve_lower_triangular(L,delta.T)\n",
" \n",
" k = L.shape[0]\n",
" innov_like = -(0.5*k*T.log(2*np.pi) + log_det + 0.5*T.sum(Linv_delta*Linv_delta,axis=0))\n",
" return T.sum(innov_like)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/sampling.py:163: UserWarning: Instantiated step methods cannot be automatically initialized. init argument ignored.\n",
" warnings.warn('Instantiated step methods cannot be automatically initialized. init argument ignored.')\n",
"100%|██████████| 5000/5000 [00:38<00:00, 130.46it/s]\n"
]
}
],
"source": [
"n_samples = 5000\n",
"with pm.Model() as model:\n",
" mu = pm.MvNormal('mu',mu=np.zeros(3), cov=np.eye(3),shape=3)\n",
" likelihood = mvNormalRandomWalk('y',mu=mu,cov=Sigma,observed=y.T)\n",
" step = pm.NUTS()\n",
" trace = pm.sample(n_samples, step)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/sampling.py:163: UserWarning: Instantiated step methods cannot be automatically initialized. init argument ignored.\n",
" warnings.warn('Instantiated step methods cannot be automatically initialized. init argument ignored.')\n",
"100%|██████████| 1000/1000 [00:08<00:00, 121.98it/s]\n"
]
}
],
"source": [
"n_samples = 1000\n",
"with model:\n",
" step = pm.NUTS()\n",
" trace_ = pm.sample(n_samples, step)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAACICAYAAAD6SUoaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXeYXGd59/95ps/2XfVeLMm2XIWFwRBjYzAY/LpgbHBI\nAgSIISRAIBDKSwshv9BJaD8gdAjYDgJckItsS7YlW1avK622aXuf3s7MOed5/zgzs1N3Z6Vdrcrz\nua69dvfMKfc5c2bO/X3u8ggpJQqFQqFQKBQKhUKhOH1ss22AQqFQKBQKhUKhUJwvKIGlUCgUCoVC\noVAoFNOEElgKhUKhUCgUCoVCMU0ogaVQKBQKhUKhUCgU04QSWAqFQqFQKBQKhUIxTSiBpVAoFAqF\nQqFQKBTThBJYCoVCoVAoFAqFQjFNKIGlUCgUCoVCoVAoFNOEElgKhUKhUCgUCoVCMU0ogaVQzDBC\niJNCiE8IIQ4JIaJCiJ8KIRYIIR4TQoSFEE8JIRqFEDcKIXpLbPv62bJdoVAoFIoM6nmmUFSGElgK\nxZnhrcDNwDrgNuAx4DPAPKzP4YdnzzSFQqFQKCpGPc8UiklQAkuhODN8V0o5JKXsA54HXpJS7pdS\nJoA/Ahtm1zyFQqFQKCpCPc8UiklQAkuhODMM5fwdL/F/zZk1R6FQKBSKU0I9zxSKSVACS6E4e4gC\nVZl/hBB2rJQLhUKhUCjOJdTzTHFBowSWQnH2cALwCCFuFUI4gc8C7lm2SaFQKBSKqaKeZ4oLGiWw\nFIqzBCllEPgg8BOgD2sEsHfCjRQKhUKhOMtQzzPFhY6QUs62DQqFQqFQKBQKhUJxXqAiWAqFQqFQ\nKBQKhUIxTSiBpVAoFAqFQqFQKBTThBJYCoVCoVAoFAqFQjFNKIGlUCgUCoVCoVAoFNOEY7YNqIS5\nc+fKlStXzrYZCoVCoThF9u7dOyqlvKDnwVHPMoVCoTi3qfRZNmMCSwjhAZ7DmvfAAfxeSvkFIcQq\n4H5gDrAX+BspZXKifa1cuZI9e/bMlKkKhUKhmGGEEF2zbcNso55lCoVCcW5T6bNsJlMENeAmKeVV\nwNXALUKIVwJfBb4tpVwD+IH3zqANCoVCoVAoFAqFQnHGmDGBJS0i6X+d6R8J3AT8Pr38l8CdM2WD\nQqE4fQxT4o8mSermbJuiUCgUCoXiNNEMjaQxYfKY4jSZ0RosIYQdKw1wDfB9oB0ISCn19Cq9wJIy\n294H3AewfPnymTRToVAUkNRNnjo2xO/39rKzY4xY0sAm4LqL5vChm9byytVzZttEhUKhUJztpBJg\npsBdO9uWKHJ4uutpAN68+s2zbMn5y4wKLCmlAVwthGgA/ghcMoVtfwz8GGDjxo1yZixUKBS5xJMG\nv93VzY+ebWc4rLGwzsPd1yxl5ZxqRiIaD+3v494f7+RDN63hYzevQwgx2yYrFAqF4mzl+KPW7yvu\nnl07FIozzBnpIiilDAghtgLXAQ1CCEc6irUU6DsTNigUivKYpuQP+/v42uPHGQ5rXLd6Dl9965W8\nZt087LZxEfXhm9by+YeO8N1n2jBMyb/cUvGYiUKhUCgUCsUFwUx2EZwHpNLiygvcjNXgYitwN1Yn\nwXcBD82UDQqFYnL2dvn44sPNHO4LcvWyBr77lxt4RZkUQK/LztfuvhKH3cYPtrWzbkEtd24omeWr\nUCgUCoVCcUEykxGsRcAv03VYNuBBKeWjQohm4H4hxJeB/cBPZ9AGhUJRhkTK4OtPtPCzHZ0sqPXw\nn2+/mtuvWozNNnHanxCCL91xGW3DYT73pyNcu6qJxQ3eM2S1QqFQKBTnDrqpE9Nj1LnqZtsUxRlk\nJrsIHpJSbpBSXimlvFxK+aX08g4p5bVSyjVSynuklNpM2aBQKErTORrltu9u56fbO/nrV6zg6X++\ngTs3LJlUXGVw2m18456r0E3JJzcdQkpVJqlQKMpgGhAemvJmCT1BUAvOgEHnB0+cfIK9Q3tn2wzF\nJOwd2sv23u3qOXmBMZPzYCkUirOQrceHuf172xmNaPzqPdfyb3deTrV76sHsFXOq+cybL+H51lEe\n2N0zA5YqFIrzgr59cPJ5SExNLG3t2cqOvh0zYtLmjs0cGjk0I/s+UximwVB06sJVcWbxJXwASJTA\nmggpJb3h3vNGiCqBpVBcIEgp+eGz7bznl7tZ1ljFw//4F7xm3bzT2udfvWIF165q4quPHycQU3Nq\nKBSKEiTD1m9Dn3i9Ako5WqFkiFgqNh1W0RvunZb9KBQTIVDddidjb5eP508e49DIIbrD3bNtzrSg\nBJZCcQFgmJLPPXSErzx2nFuvWMSmv38Vy5qqTnu/NpvgX2+/jFBC55tPnpgGSxUKhaI823u3s61n\n22ybcd6jGRopI0VQC7JzYCeGacy2STOKZmjZSJPizNPrj3Ns0Lr+mnF+VA4pgaVQnOckUgZ//5u9\n/GZnN++/YTXfuXcDXpd92vZ/6aI6/uaVK/ifl7o40qfqJRQzgxDCK4S4eAb2e4sQokUI0SaE+FSJ\n191CiAfSr78khFiZXr5SCBEXQhxI//xwum07bzhPUn7OFsbiY0W1abqps3NgJ5FkZFqO8XTX02zp\n2kLz6BF8A/sJnofiYzQ+mk2x3N67nZ39O2fZogsT07S+HzKRPpUiqFAoznoims47f7qLLceG+MJt\n6/n0my6tuJHFVPjozetorHLxhYePnjdfjoqzByHEbcAB4PH0/1cLIR6ehv3age8DbwLWA38phFhf\nsNp7Ab+Ucg3wbazpRjK0SymvTv984HTtudBJGSk2d2ymP9I/26ac1bw08FJebVosqbOvtwdf3Me+\n4X3TeiwZ7IXwIIy1Y5gGzWPNpMxU3jq7BnYxEBmY1uOeCXYN7Mo2CTkboiaxVIzNHZvxJ/yzbcoZ\nJesxnGeZlEpgKRTnKRFN590/28Xebj//de8G/vbVq2bsWPVeJ5+85RL2dvn54341d7hi2vkicC0Q\nAJBSHgCm44a+FmhLd7dNYs3PeEfBOncAv0z//XvgdUKI88wVmGEqvFwx3aqt6gx2zqQ1ZxVSSkxp\nntY+Xur00T6skQyPYNOnWShkB8wkvZFeTgZP0uZvy1tlND7K/uH97B7cPenuTGkSTUXZ3LF5RkRZ\nUjeJavm1fnE9flbcU5MNPo7ERwDoi1T+DG0PtNM81nxadpVk4CAc/n3ZlyPJCMfGjk3LoSLp9ysb\nwTpPmoEogaVQnIdousF7frGb/T0BvnPvBm6/avGMH/Pua5Zy1bIG/uOx44QTqck3UCgqJyWlLMw/\nnY6n8BIgtwVmb3pZyXWklDoQBDIzca8SQuwXQjwrhLi+1AGEEPcJIfYIIfaMjIxMg8mnx56TPh46\nUN6BM01Jj296mkhkUVHtshwePczjnY+f1j4yKVaMtUFfZW3bh6JDFTrImfSttEBIRTFbt4AWLlpz\nJDZSFN3KkggBsHNgJ8/2PAswI80MtrYM89Sx/M6K+4b2cWzsGBEtevoZFrpmTTtwCjxx8omK1ptK\nU4wWXwsngydPyZ4JGW0tWnR09Cgn/Fat9e7B3XQGO0+74UxPqIcunxWxE2lJcr5kwSiBpVCcZ0gp\n+dSmw+zq9PGtt13FrVcuOiPHtdkEX7r9MkYjGt95uvjLWaE4DY4KId4B2IUQa4UQ3wVemGWbBoDl\nUsoNwMeA3wohimYSlVL+WEq5UUq5cd680+vaCdYIfdahzi6MQSpR0fZ9gfiEr7cOR9jX7afXP+44\ndQQ7JmwA0BfpYzA6SETTOT4YKrmOWc5pat8KY+3g77LauXN6I9jBeKr4+swACT1Be6B9wnWOjB6Z\ntHHCaXUyDA9AoJtM1reUVDzssHdobzaqY5qSRGpy0WATNoiMWu9PeLDkOmWd49YnAQgkApUZOAU6\nR6ME45awS6QMnMkgdD4HphUZ1E0rQrL5SD/7uitPvzOlydGxoySNnA65xx6B1i1Tss8wTVJpWwqj\nlQORAULJ0p+Zs42uUBdtzZugd2/Fn9GUkSobodWjoxxuvp+9Q89jShObmQLTyO7blGY2mhfX4/SE\n86eDSegJjo6dvWUJSmApFOcZ39/axh/39/HxN6zjjqsLB+NnlquWNfD2jcv4+Y6TtA4Vj3AqFKfI\nh4DLAA34HRAC/mka9tsHLMv5f2l6Wcl1hBAOoB4Yk1JqUsoxACnlXqAdWDcNNk3IY0cG2NE+mr+w\nZTMcf7Si7RNGlJFE+XnrUoblDGn6uFN0fOz4hA0ADg4fZN/QPl7qGKNlMEw8me+sj0WT7Ov2E9Ys\nJ7hrLMrmwwMk9AQnfSegfz/07oagJTYKGzWUctAGo4Mk9HxRGUvqbGsZ5kh/+WY7SSNZPsoyBfYP\n76fF10I4Wf57rjvUPS2NE0xT0jIYxigUjoFuCA9QG7IGtDKvJo1k9jwrqS3a0+XniaOlBdP4XkVO\nChcgJX2RvmxEo5CR2AhxPc5m32FCemXiP2N7i69lSk7zod4A21qGSRpJDvq3Eht5hs3dT6OlG1hk\nMnolkl5/8QDDnsE92b9H4+OfraHoEF3BruIUvDKNRBIpg/aR4tea+0Mc7CktLPcP72d773bLvjLn\nPFlN1mhE48+HBk5ZaLT4WioXeXoC/KXTLQOJAI93Pp53z23p2lJyMuzOYCcvHH8QtAhSC9IbO878\nkRegb0/2PNoD7RwcPkh/pJ9dA7s4PHI477N7ePQwXcGuvPfsbEIJLIXiPGJvl49vbTnBnVcv5h9e\nu2ZWbPjEGy+mymXni4+cvSNLinMLKWVMSvl/pZQvT0eD/q+UsnKvrTy7gbVCiFVCCBdwL1DYPONh\n4F3pv+8GnpFSSiHEvHSTDIQQq4G1QMc02FSWTJShZaydFl/LKe2jNbyX/njbpOudykdXz3QDK8hw\n8qXnyDvSN8zTnU+yq2uQlGGyf+gAzbF+wkYCvx5jR8iyq1BQtfqLI+L7hvaxa3AXkWQk+z2TMqzf\nY9HxiEOh8/VU11Ns7d469ZMD66Kk4ulz1UvaOr7q5Bcwrk8cTczQORbl+GCopPMO4DTiecd8qusp\nnup6im0923i662kA+iP9dIW6Sm4/ECxtRyxlZPVVqbS1g8MHi+qxJJKEnmD34O7sdd4eKp3RUCoK\n0jzWTHugnaHY1CdQDmiWiOlNWdv6tMqiZcOxYVKGyZ4uHyd9YxPaNxF7u/wc6QsSykmRf7F9DM0Y\n34+UEiklR/qCRQMRGfoCcR460IdpSgajg7zY/yI9ofKDIt2+GLppciqBW93UaQ+0lx8ImMIXQWeo\nE1Oa+OL5UduRWHFq9LGxY0TSwlsCweQImS4XGRGViRwmjWTRQIGmGxjm6dUuzjRKYCkU5wlRTeej\nDxxkSaOXL7/lCmarDn9OjZuPv/FidrSN8fiRcqOiCkXlCCG2CiGeKfw53f2ma6r+EXgCOAY8KKU8\nKoT4khDi9vRqPwXmCCHasFIBM63cXwMcEkIcwGp+8QEp5Yz2ss6MvvfH2yZNT9MNk6RuMhIbwR+P\ncLQ/yMGeAKa0nLppHfyIByAVLeuL2dKO03D7nxk5sQ2fZnUJTJmWA2VKSVdirPTG0iQ5cMiqfSkg\nkozwXO9ztAYsB15kU+UsQ7pD3exqfoD+Q78lfuhPbD/Sjm5K4qkkw+FT0OcDB+H4n0HXiiNDhm7V\nPxmVR8e6Q+M1SOUaPgQSAbb1PkHK1NDTjrovlswTW0JYy6WU1jXwWTo/oiWy1+LA8AGOjh6d0J6x\naBzdsO6PsJaiuT/IQCgKQNRIX6/MY2XwEGjl0kFLO77+aJJ4QSqipht5aauZbUvdn0EtyNPdT5Mq\nc437SkSnAIKxFHu6fFnBFNF0QolUNloLEE2Lnf6AdZ65UaNcoZUyTHTDZDRSfD8m0/uLJmNZ+wvv\nsy3Hhnjs8AA7e46xt6t05KV7LIYhdToCXdlobiRVpv1+IoDDiDEY78hPZZwM08hLx5uKmBxNRUhE\nAjT3jmXP+XSaljgLUv/6/W1w+PeI9LmXsu3xI4O0DJ7dWTKOSlYSQlwhpTw808YoFIpT5//bfIwe\nf4wH7ruOGndFH+0Z4x3XLue3L3Xzb482c+PF86d13i3FBcnHc/72AG8F9DLrTgkp5WZgc8Gyz+f8\nnQDuKbHdJmDTdNhQKYUzLJjStOpiMuhJcLjQDZM/H7acHWfdQdqGo6zwvCp/YyMFpg6u8QnHU0aK\nnkgHutlgLTiyCeZWkPU4akXTtPr8Yxz3HWcoOsSq5HgkQZ/qMHtsFKJBBk5u47Cj9KCRP+FH0w38\n6chVxjeP6TGIDJPw2hiKJjHlcQJzk/iiSUKJFLUeJyOxEercdbjt7qL9mqYkpIVo8NZbCzJ1R7pW\n7MyOtYGvE+wuWHhF3kspw+SJo4Ncu7KJ+XWe7PLcQbD9w/tZVFNcL3sydBIBhFN+YC4AHWlxJYUl\nKnOjS1IC0RH0hlUc7gsyr8YDF+VczgmaEnx/1yYualrIX131erSU5Tj3hII4olFsdZ1c1rQagF7N\nT52oIhI8Sc2aV1spY0YK5q7DyHHaC9m7fzdHU0E2rmjKLtvd6WcsqjHnsoV4nPZs9OKE/0T+9Tj6\nR06YMbTqRnwJHwuqFxTtv1xqqD+Wyrk48HS6CcbxcJgrlljvbeYKJvQEg9FB9g3to95dn95M0hvu\nZWntUg72WvdyH6O8es1c5tZY900iZRCKpwgkh9nWswcjtopXrlhdZEssmSKc8tEfb6MqYtJQn/+6\nKSVJw+RI4HnsNQ047dbnO5LQ2dI8xA3r5uFy5HzmR1qoDUYZsnk5OlrFxkXXZF+KJCOMxkdZWb+y\n+KL07wNpcrDwnksEwVmd/TeUDDEYG2Jd4/j3wOFoHyP9x3CmHAwFEzR4aor3n4uRtAYnFl4JQmCY\nkmA8RebUXbJArMb84GhEREfAbiu6nzLi1RdLEtYjVEs/N1x0+vWt002lEawfCCF2CSE+KISon3x1\nhUJxJjk+GOJ3u7p596tWcu2qpsk3mGEcdhtfuuNy+oMJfrBt8nQkhWIipJR7c352SCk/Btw423bN\nKlLyeOdjBek3luNxuGDC75RpIMwU1X2PYEtHjeSJx6FlM1JK2vxt6KbO4dHDdEfaORrckd5OJzp4\nKH04ydPHhhgMjo/Ia7rBthYrvSq3PihlmPQF4nQEOoimonkpg3pObZfUx0XKZCPozeGubFpeBl8s\niZlOufrT0QM8295KIDk8aepQRuRJaXVDe7H/RXzRJDvaRvPSu361Zx8/3P1nBqNpYZU9kYltDWrB\nPFvDCR3dMGkpqEstlXaXmQtsc8fmdERKIARITBJGPK9JRDxVfowhcw1yz8cXS/KDlx5mW8+24g2k\niTc+xEB4OG+xno5QxJImY1GN5oEQCd3gz30tDIc1un0xentOQtxPLGWw6fgT7BvKn4vLbbMG/Nxa\nfpQylooRS1rnkBHFxwZ9RLQU0ZQVOesLxBmLpDv3ha1BAyEEUkoOjRwimoyWvQYkgpCK4w20Ww0U\ngFGtj4P+rZjSRNPHo2mZd2Ig3pW1P6SFrXs5PMDP9mxjf39+BnBuY5DnW61oVNwI0zocJm5EOVpC\n8EkpMaR1zr5YnBM594RElo3CHRsMEUvqtA6Xj9pousHh3mC2yctzvc/RPNacTUUdCiXY1+1nLKLR\nMRJGNyTDsfH3O2WkiB3/M5x8nqAex5SSF/peoM3flhdR9Mc1wpqB3dRK1rQVZc/077e6EqZrLA/1\nBmgdDpNIfxdo6euYM0yQ/t9aYpomJuOf6f89/gitoT2EUz580STPdu8qeT0M08h+dpO6Of3dUSeh\nomFuKeX1Qoi1wHuAvUKIXcDPpZRTa6WiUChmhK8+dpwat4OPvG7tbJuS5dpVTdx59WJ+9FwHd1+z\nlBVzqiffSKEogRAid9TABlwDXHCDfUIIHKkwDj0Gva3grmO4fiVN0sSQJq6YD5yeojQsaZq09t9P\nXTJAQ0LH13Q1Uk+AsGUbFSTNJEkzmWm8xkhYYzDUSciIQ90r0E3JjsEtRJKv5o6rrCnI+vxxgvEU\n/YE4Cxu82RHbZ45bTptZZeB22JFSEpeWmIokDYRMO/29lmN0KNpLXzRMncdJyjDp8ccYm6/R54+z\nxCXQpUEs0MvRkJc1CxuoctqJaDodIxHm1Xg4Eu/IpioBmCIKLMpPMxMCwzQYDmnEUhmn3no9lorx\nfKslVLceH+ZNl89j/1Azw4lukoaZdfYzLuBLHWN0RiKsnFvN/qFmblx+3fixpcmOvh00eBqyy7Z0\nP0ZLIMyN1W/MWy/bSCQZgbjljPdGetM2GRzp8yPc1jEH4u2khrsYTI1HHEvJvELfNvcadI5GkabB\nicMvsXbdpQj3eNNLR7gVb3wAV3IQeEfRfiUym+6Wm9I3HE7QlE5dbE4LijnVbmJJAyHAC2imTp8W\nAObn7TOhJwgkhqmyNXHcd4L1cy5iJJxEC0Z42fJGwJpWAOB2m8SUkpGwRrzJoCPZQW+4Ny2wllvn\nnnfewNBR8Pdij49QpTugHgbjlkjKpMoapsRuy3Xtx69Xx2iUsWic9YvrQcLJrta8jji5xJI6NkOb\nUuqtECJPAAOkTDP7ORqNaCyq96b3b1Dvtd7DrrEYuim55bKFedu2DEWY44gwr9bNwvrxSOmBbh+L\n6xs4kG60kTExkTLIxJ4Eguf6nkMLtlDX46fD1sM1cxcjqy8CIfIafYxFxgdGhiJhHmreiW438Dpz\nMlUS6U6Ojkz3REmkYxcDixvoTgsd3TCJJHTCmgEl3IOMwCpspFKqU+lIWGN/t5/XXboAQ6bQTZ2O\nYAfdoW5W1K9gT9cADbZLqa9yUudxFh9sBqg4j0hK2SqE+CywB/gOsCE92eJnpJR/mCkDFQrFxLzQ\nPsrWlhE+/aZLaKhyzbY5eXz6zZeypXmIf3u0mZ+86+WzbY7i3GUvlj8psFIDO4H3zqpFs4AAFgw9\nR512gjGPkyZpORovhNoJGwnqDp3kL+rXQNWNedvVj+5HMySFVSMjkQSDIcvZMaWJQGRH9YfDCZxG\nHCmt5jkZBuKd9EVc1LvG9a0hIRRLUtdo0B09xuKqNbhsHjTdxO2w05LspyU5xgK7tc2Y1s/Sqouz\n23cGQ4QSVnv1k/0hdNNke9soA6E4i+ZIBpJWQwC7PsRQ0MOqudXZUfqRSHEtVdwYr90YCCaYLzXm\nUkWX1kXM1phdr9AVllIyluzjK89bzRk8iRGaYn2QWI9pSrp9cRa6DMbiCcaiSTxOO32BdgaHG1ks\nu3i5XedEXxCjQeZFmkbD1pX3x5IMBOPUV0kebH6coSDMrZUsDB5FCPAHuwhqlkhpHQpjr42wfJEJ\niHTUo8Bly84BXOzUi0AX0JB3jgJwaz4cehSGjsHyV2RfOxo9QEa6GabBybH8yJBETqnxSfOAdR4b\n02ohkqlZk1gpY3brWdUWOsSqmit4ofsE4dQocSOMrUAlSinZOdxHazhEVzLKVq2f+XPTjSwSPqJ6\nHdWOcUGLEHSORbm6przBelrwH+oNsnpedcmoZygUpCnYjJi3EY82TG18ECiaiQEAd7QfRp/FXm/l\nYwoEpjSROZEXcyp99LGErNdlp8E7/lw3TIlBfn1X5n2JaDpzHDkiMe4Hdw29wQTDoQCOVJgFQ8/h\nc76s5PE0XSOeMqiSBqGETkCPpfcl8hqk5EZee2MtJMJRXHYbVy5toC8Qx2MEWOjtteomU1bE7XH/\nEWyBWjTbuDjq88eZ78q/7lLmCOVQL9Q0gdO6M3v9MUbmlO6KeaQvQDxlEB1q54V4KyaSeVVW2mBX\nsIuReIiGajjNOb2nREUpgkKIK4UQ38YqAr4JuE1KeWn672/PoH0KhWICTFPylceOs6TBy7tetXK2\nzSliQZ2HD79uLU8dG+aZ41PvCqVQAEgpV0kpV6d/r5VSvkFKuX227ZpNgokUsZTO8cEwgzFLUISM\n4nSdsJYq6dJJoGssxtGTfSUd9IxI8UXza42EgD+3vMjjHfmd+MKaQWfkMMHUCMeCLxI3IpwYCrOn\ny8dwuljdKPBuJGBImR3F98VS6AWObqYDW7ZZeNr7GgyVb1IRSlqC8KXe48RTBv2BBPGkjk0bLrvN\nUOIkhwLb6IuNd7yrilkd++XICbadGKZjuJNfde8hYUTzrs2J8B5eGjnC0f4QoxGN/T3+vMhEKqeL\n3K5OH2OxEOGEjmbE6AvEGY0kMKTkdy/+lna/VfCffUvK+OOehBVxiycNhpJjRHQfKWNcBIXHLNvN\nZBwGj+Rsaa0wGIxzYjiMZmgc9I+/l1Ja9WDjx7GumVGBumryHbDWD/ZaIi6H3qTVNKIq3m+ljOXU\nsGXmSOvw5Td9GEkL07FkP3uDvYTMOEKaGOnokyklwYROV7R084624TDxlE40OZ5KKZBUR3s5Gd6f\nPi+T1uEwHaPR3MuDlBJXunZQxAPYzKRVk2fGs9HYzCXxJ/wcCTxDmz5IIH4ye6zW8G6OBJ7PCobj\nA2EcySCeePGzMCOsM6NImZTGTGMTT3yIJb1/RuS0KRdC5E2nkBE+TruNZ472khg8DqPj0Z+qqBUd\n7ev835LXCyRJ3czam2kC0h+ME0sZ+ELhIuGdwZRWCupAMM723j2MaiEe7N/PWM+JbPqwzyxOb8wc\nw65HLFFKjgjVk8S692e3HwwleLFwioo0vbFWPPFB7H17MIPd6QEBaaWWDjdjS6dJVnIfTxeVRrC+\nC/wEK1qV/QaXUvano1oKhWIWePTwAId6g3zznqvwOM/ORhJ/++pVPLCnhy890syr18zF7Tg77VSc\nfQgh7pro9Qs9e8I0YSQYxwxrrE43tokVNF/oHovl5VLqjmo8iVE03WoSMGd0N7iroH6F5aClvasT\nod1cI6w6H5uZwpUMknDPJakb+GMJBkMJnIn8GpOIPt557URod/bvaCrdbrmgL0kwliI8yZxUrUMR\nrvBAIqVDTkOHwtSqXJKGiT7WQbTNmou62xilOzxKva0qbz2hx8FdC9FhgtERsJX+bhoKJ9iubaEp\n1YtdQCw5TJPvAHrDRcRttdn1evRR/JoNXB4GgwlMCQ3e/HSkhBElaeY3BdANSSJpYEbHONofZG6N\nOys0O8cvwDgSAAAgAElEQVSieQIBwGW34dAj+BJJUqaky9VO0uVDiyap98YZiyQJJlI0xQ5YG4zU\nQ0FaVFw3CcVT/Hr3fupCJ7CnI0y6KdncfDw/3w5yaspKNxrJCBRvfABCVdSGNfyNl6ejmDY0M4Vp\nJHCmQoDdarCSjmIljAimTdLty3feX0g706YcP3+35qNPnGARTXT7YoxGNByiIOUr7UQnUiZH+0OW\nE58OJ7i0MdyatV+teikAdkPDrY0Q81r/B+Ipunt7qY8PMl4dJEiakhO6JYCXSJNEKsmWjn348mrL\nxh34hJFf8xNL6czzv4DDjEDdYsuepB/Meja3bSMaXkBY05lnjtIQOEq49iIyuXNV0V4Q1dj1OLpr\n/HxLTRzeOhQhmkgxGk7gSUoi9T0s9K5ClFDrw+EEUc1gbo0Xh4wzFk0y12Fd71Z/gMWLJf2BOIPB\nBA1jaeFd4hbQTTPbfAWgOdTDcLrTYkRLYUhwC0dRJmBEs66wXY8TNuPkfkI13WQwpGGMRvE4M/Gg\n0gIpqocJaAF6pR+cOnu7/NQ6BVq0m5rIIC4Gof4NHOjxc9MlxQ1SZoJKBdatQFxKa9hACGEDPOm5\nSX49Y9YpFIqyaLrB1584zqWL6rhzw5mdUHgquBw2vnjbZbzzZ7v4yfOdszY/l+Kc5LYJXpPABSWw\nJOOj/YXEUwYehx1N6kXL63I3kSZVsV4O97lxWNN4EQv7iWi6lW6Xs25nerS6IZATIXCfunMSMvOd\nwbGoRkxO0tZcwEg4QSRp4GUQWDnh6g49is1I8tTe3024nkvzYxsagkXrwddJfVAj3ng5nsQoVbFe\nAg2XZ9ftD8TBOy6kQnErXcqpjeUt7zN8JHQHuBYTSqQIJVI47bZsJ7jDY1swhZ3uIx5yfOQilzEQ\nGMOjJwimRojGNXxaMm9Ft8OORJBKj+w7UpFstAWs6GYuwWSCMbP8vePQx4XAROP7ldQXCSnpGI0i\nsMRDXyTO6rmWWz2ojzdkiSUNmvutSOOo1othJvFooyTc85E5DrwpTSJ6gMKqGV9UK9kqfTK88eFs\nY3IAm6lRHzwGgCcxik9cDWI8Qgjj7ddP6uMR0MOBZzkcyOxzEFfBRL0pczzCmom4ZchcRbseoybS\nRXwoSWtyAYu9C9BNk2CsEw/WvXxyNEKdx8GAPspqZ748CRXM85UZfBgOJxACkoZEi6fwe3oxpU6m\nkDUjaoBsPdRYRKPJbwnydt1qDKHpJsfSqZ7l7p1MNLeQw8PjU7RkArhNOYMRxUhGzBArciRW5pjB\neJIyU7WNH8PUOZnowGWM4nZatX7hlI/coonjwZ00xhdyE2eXwHoKeD2QkadVwJPAq8puoVAoZpTf\n7OymxxfnV++5Iq9I92zkNevm8cbLFvC9Z9p4y4YlLG7wzrZJinMAKeXfzrYNZxt+c3yUeCSiEXb2\nUQsMBBPMq3HzYqidhkyZiJQ0+Q6Q6247ctIIB40AJ/VhjICboS4fY+n5qZDgKZFOZzO1vCKGgXhH\ncfSgAhx6lDGtn0QJcdXkO4Cv8cq8ZblpULmd30pRl57UttcxcQWEw4gxEE3gdflx5Djq7rRj7UmM\np3HZCroXGtJKo0rqkxd0pAzTiqBIk4bAEXS7l1D9xcQLGwDmfIXXpSdc7vYcY457cXa5KeFIX5CU\nFqMmZx4uW46oLmxwArAz0kGvNg+b3UWhhDJKpk1mEtXGCcZTtA8cpKpgTTFBUUtNxBKigXiSeo+L\nEX0Me9ppDsXH33uJpCo+iCcxjBR2NPccYkkDJ5aQsZkpGgr2ndQNhNSRIteNzbd5yAzQZMuPFtqN\nxHgcVUJD4FhJ2yUCI10/1e2PT1hP442Pi4mqWD+aew4jWm/BcTWEzGlhLyU+rZ86oGckAPUL8Ccz\n99z4e9QQbMYqM7RxINnJIq4HYHHvYxwO5qfLeWP9pBzzMB3VRJPW+yqkgZAmutSBgght+nIJqdPo\nH08j1XPqxuIpE1cyiGH3UBYJdlPDsLtx6DGcqRAJ06B44gPQzSQOmyV7nHpxymDXWIzV9fDk2DEC\nkeIumePXqDS+aJJFpcvkkIl+YoFDYL6ybLR6OqlUYHmklNlvdSllRAhR+DlTKBRniGA8xfeeaeX6\ntXN5zbqzb/6HUnz21vW8vuVZ/n3zMb7/jtJFtgpFOYQQtwKXYc2DBYCU8kuzZ9GZx0pUynciTXPc\n0dZ0k5HRKBtCDxCYdw0DiW7KzVATk1rOiLwcF1eARxulKtZftI0nMUKTsQ9/rdVLbThhOdCZkfGq\nWB+xqsmj6XWhVnrt1TSViZc4jBi2HAGRymkBb4x1pjsdLp3wGIkS4qfUMNRYVKMqoeMShe7Q+DEd\negQhx0ffzcRAoas6IXZhy6a5OUrUySV0kyqj9LUIpcbTzzTDIKEbNAVLiwKwhHYhmqlTG7YmptYd\n+VEQf7yr7D2SSyRp5HzyxqmO9hQvLMAXTRGM67hMiRR2wIHN1GjyWecRaLo6K9SElDjtNvzRJPPT\nF9mhF0+y6/K10BjwE2i4DGc6WpSJFGXe55AZp8cYJSaTQBW98RN40uLBrY0hSkRlbKaGOzyY1xDG\nlQxhTsEhrwmfxKmHidSsJumyvP1MlAzXKkCWvA/M2Em8eSmzApuZQkondlMjkfeKiUiOCxRX0k9t\nzE9vtJVQ/cUIaZBp51Id7SbpqAGKI0g2M5lNDy2FMxWmJtqVtyxvYERCdawbt+YjUrMiK6o1d/F0\nMQOGH19wB4u8FxW9lkvHaBRC4+nHdiOBFA5Mm4P+eP60LzYzRU2kE7+5GifWAMPxwTDUNFJIdbQX\nISceoJlOKp0HKyqEyHpEQohrgAkDdkKIZUKIrUKIZiHEUSHER9LLm4QQW4QQrenfxVdBoVBMyA+f\nbccfS/HJWy6ZbVMqZllTFR+8cQ1/PjTAi+1jk2+gUKQRQvwQeDvwISz/6R5gxawaNQs4HbaiNty5\nZOqSdGkwEDpI0izvODWnesu+BuWjElG99GSukJ9WlUuyhHiwT2BbXaiNRQNPlXzNrY3iC+Tb4NL8\n4w0WTpHCy+rQx+3rMcaoC1rNAgw5se2lKGzuAVYtUW5kLFKmpiyVcywbomRDksnozpn/p7D5RJmS\nKuulSZxRicjOqzYZmUYFQhpW+/PR8feqNtiSt27KMBkITZwTpkWse6AhcJTakPXedEWPFK03bFjr\n2cwUMT0/jc+V9BWtXxPpwgwN4siJrjj0CK5k/j03kShxpBvE5KZtZig135vd1KiK9VEd7cmLhmWu\nbWHKp08bpC01wGhOu/SaSBcIUTKi6EyFSw5l6IZJQ6A5K75LM3GUtsl/ALfmG7chS/kbayA+0fEg\nUVBzWB88Tn2gdCMTT2IIhx6zatkm4UyKK6hcYP0T8L9CiOeFENuBB4B/nGQbHfhnKeV64JXAPwgh\n1gOfAp6WUq4Fnk7/r1AoKqQ/EOdn2zt5y4YlXL7k3JoK6P03rGZxvYevPn58SvOFKC54XiWlfCfg\nl1L+K3AdsG6WbTrjSCktJzsHu1G6m54QUxcC1kFgIueosMarsO9xrqPjjQ9mu6EVYjU7ODUM00pb\n8sYsZ7Q63e2vVNStiGyTMuscM1GMwvNyFKQv2ScQEg49ltf2zzbJdbeZSaqj3dSFWmjyWXUvpURo\nvt2SYGySQpRpwpWyxERGVE5EkWCrkNxJh+050RybmcoK9c7I4aLt7EYcpNWkI4M+gQjIpPk59OiE\nomicUq0giqkPHpvUYXclfdSG8ycn1qTOST1/IEJIs2BwwrKgcGJmsNJBR8e2MmqG8yb3hvT3Q/Y+\nHn9NSAOkLBJfvtgk9Y+nQW5dXx6n+NgXyLzvlppId/azA1ZqbyXR1MzezgSVTjS8WwhxCZCZuKJF\nyokrU6WUA8BA+u+wEOIYsAS4A7gxvdovgW3AJ6dsuUJxgfKNJ1qQEv75Deeef+lx2vnQ69by6T8c\n5uljw7x+/ZkpNlWc82Q8sJgQYjEwBiyaRXtmkXznoCbSWbRGv+FDsLis+CrElnbAmvwHAdDtk9dI\n2g0NKWzUB5vzltdEuohWS3RHNd74IM5k6YhXpgV6OcaMMBRV/FhEkwY1Seu8TbsTUSj6yhAwY9QH\nj2E3NZIuq6rHGx/IX2miEGEBzlQIIXXqQuNCxJMYyTrLSVcDht2DFA4093iyTqYhQjnxWYq6cAcO\nPYyv8aqKt5kMT2K0pCNsNzRspp4n0IWZ7vZW4T116jZZNTbuxCjS5oS6NXlOuVsbKynOc1vN55Lr\nz1cSbbMbZYRBCYSUeQ05cpdncKZCeUJg2LCiWtWRLqI1Uw/C1wea86JcuYyYoWyLd1lwH4tYF82x\nQTa4Vk35mKeCvUQKJIDAQJZIsK2K5UbUS6swd8JH0tVIbbgjew+4040+cgdAnKkgDj1Gbbi1ZBro\nVD7jp0OlESyAlwNXAi8D/lII8c5KNxRCrAQ2AC8BC9LiC2AQSrfzEELcJ4TYI4TYMzJSOu1AobjQ\neKFtlD/s7+N9169iaeO5WQZ59zVLWTmnim882ZKdLFShmIRHhRANwNeBfcBJ4LezatEsICVFEaxS\njJkRbCXSnyYit1FCqfqQXJp8B6gPHqMhcLSkA1Md7c7+PVEThIlo1TNuwsTnW/motUVGNEyXUHDo\n5a+VKxnAGx8scB4LnckCylyvTETNVqGYrISqWG/JNDmbmaSmIG3MmxjEoUdPK/I4FeymhkOPYDN1\nqmPdea+VE6a14Q7qgy2Uc9Bz78tylHTIy1AbbptyRGYs3aTGbmpUlbl3Myl3pUhoA2Vfy1A0aIAV\n3TUw6dSnNh9lftrf6dPoL45KVoqQOkiZdw+WGlwR0qAudGJK7+VMUOlEw78GvgH8BZbQejmwscJt\na4BNwD9JKfM+mVKWn9ZaSvljKeVGKeXGefPOjSJ+hWImSaQMPv3Hw6ycU8WHX7d2ts05ZZx2Gx+9\neR3HB8M8enjyh4VCIaX8NyllQEq5Cav26hIp5edn264zTfNAqKjJRTk8iVFqIicrWldIo6IahqmQ\ncYJOKU0xzUTiZeaY2uj2dDtxTf5DRcty0/AaytSiTCdubaxkSmSmQ2OGypLpKj1m6QlkvfH+iq5x\nTeQkzlSobOQEphYxrAS7kci2Nj8Vyg1kTJR6OHHtpMVEAm3MLG4YcrZRLpXTJnXqQy0lX5sSZyiC\nVWkXwY3AejnFogkhhBNLXP1PzoSQQ0KIRVLKASHEIuDUq1IVigsAU5r0hfv4xtbn6Uue5O9fu5xH\nOv9AtaOaBncDDZ4GFlUvosHdgDhDXxyny21XLuYHW9v5zy0nePPlC3HYpxJMV1xoCCEOAfcDD0gp\n24FT99rPYRIpA/c0OrW5VFS/NKX9TZwCWAl1oRYMW6lmz6fPZHVSZw2yWNicGc6NZ0mGvIYSqr4X\ncQ5fgnJRUoltxlNUp5NKBdYRYCHpmqpKEJan91PgmJTyWzkvPQy8C/hK+vdDle5ToTirMXSI+8BI\ngs0J3kZwuCbfroCUmeLA8AF29O1g58BO2gPtJNJfKt6l8ItWoMTztsZZw7LaZSytXcry2uUsq13G\nqvpVXNRwEfXus6sZhs0m+Ngb1vH+X+/lD/v7eNvGZbNtkuLs5jasLoIPCiFMrEZLD0opJ8/5OY/w\nOu0zJK/OXk4nAjYRpVt0p6Z8fct1TpwOPInRou51Z4pK69rORmbqnjmXqIl0TL7SLNHkO5CtgZwK\n59r7WqnAmgs0CyF2kTNyKKW8fYJtXg38DXBYCJGJoX4GS1g9KIR4L9AFvG3KVisUZwPJKLQ+CS2P\nQ99eGGujKOO1ej7MvxQWXA4LLoPlr4Sm1UUhaiklB0cO8qe2P/HkyScJp8I4hIOr5l/FPevexmP7\nJYFAAz975w3MranCaXMSS8UIaAH8CT/90X56wj30hHto9beytWcrek4L4Pne+axpXMOaBuvn8rmX\nc1HDRdjE7EWO3rB+AZcvqeP7W9u4a8MSFcVSlEVK2QV8DfiaEGIt8DngqxTNnHl+c6GJqzPNqaTf\nFXYbLMep1J5MWKt1gTDdqasXCmW7+J0llGphf6ZIpJJ4nFMf/J4qlQqsL051x1LK7ZSPMb9uqvtT\nKM4agn2w8wew71eghaBqDix7JVx2J9QsALvLimLFfBDohuGjsOenoKdD27WLYOVfwMq/YHDBJTzi\nO8RD7Q/TFerC6/By84qbuWnZTbxi0SuocdXw8x2ddHY281/3Xs2GRZNP4glgmAaDsUE6Ah20Bdpo\nC7TR6m/lwZYHs9GwRncjGxdu5Pol1/P6Fa+n1lU8CeFMIoTgwzet5b5f7+WP+/u4R0WxFBMghFiB\nFcV6O2AA/zJN+70F+C8ssfYTKeVXCl53A78CrsHqXvh2KeXJ9GufBt6btufDUsonpsOmcqyeW01z\n62zUJSkUs8NsNypQnH84bJVKn9M8TiUrSSmfTT/c1kopnxJCVHGBjRwqFGgReO7r8NIPwdRh/Z1w\nzbtgxathslneTQNGW6H7BYzO59nWt50HRrax0+NBCsFG5xzed/E7ufnq+6j2jKfz9QXifP2JFm5Y\nN4/br1pcsal2m50lNUtYUrOE65den11umAa9kV72D+9n9+Budg3uYkvXFr6888vcsOwG7l57N9ct\nvu6M1XLdvH4B6xfV8b2tbbxFRbEUZRBCvAQ4gQeBe6SU05L/IoSwA98HbgZ6gd1CiIellLm9x9+L\nNf/WGiHEvViRs7en53W8F7gMWAw8JYRYJ+XMzWa5dkEtTxilmwEoFBcyXoctb24shaIctrOpyYUQ\n4u+A+4Am4CKs+ax+iIpEKS4UWp+CR/8Jgr1w5dvhtZ+BxinMYWGzE6hbyCa35AHRx0C9k4WeRXyg\nZjW3+YZZ1r4TTuyH538MV9wDV70dueAKPv+nI0gJX77z8mkRPXabnRV1K1hRt4I719yJlJLDo4d5\ntONRnjj5BFu6trB+znr+7oq/46blN814CqEQgo+8fi3v//VeHjrQz1uvWTqjx1Ocs7xTSjkN7aOK\nuBZoywg2IcT9WHM15gqsOxjP4vg98L10jfEdwP1SSg3oFEK0pff34gzYqVAoJsDtsiuBpaiIM9UL\nrNI42T9gPTheApBStgoh5s+YVQrF2UJ0DJ74NBx6AOZeDO95Apa/Ykq76I/085PDP+Hh9ofRDI1r\nF17LJ1/+SW5YdsN4qFoLQ9vTcOT3sOvHsPP7hOvWsHZsI6+78d0sa5qZOa+EEFw570qunHcln9j4\nCR7peISfHv4pH932US5uvJjPvOIzvGzBy2bk2BnesH4Bl6ajWHdcvVhFsRRFzJC4AmuwMHcyml6g\n8AOeXUdKqQshgsCc9PKdBdsW5fAKIe7DGqBk+fLlp23wonoPA8GJO2nVehzENB3jHM6uWt5URbfv\n7K4jybCiqQpNNxgMnV4Rfr3HSTAxva3ELxRq3A4CMXXtFJNzpjJ0KhVYmpQymTFKCOFA1dsqzmek\nhMO/h8c/CYkgvOZf4DUfB0flLYMHo4P85PBP2NS6CYHg9otu5x2XvoN1jeuKV3bXWjVcl90JMR/x\n/b+nc8tP+JTzfuSOB6D/erjyXlh/u7XuDOC0O7lr7V3ccdEdPH7ycf5z33/yrsffxe0X3c5Hr/ko\nc71zZ+S4Qgg+8ro1fOA3+3jkUD9v2aCiWIrzBynlj4EfA2zcuPG0n5veqhqYRGDVuB0kUwbGOayw\nHLZzp0243SZwO0+/aqKhyglw3oqsKpedWHJmMmhn4063C6ZtEGN5YxXd/soGFIQAt91G4iyN2NW4\n7SR1k+QMfP/YBJgldis4+0RJpUPFzwohPgN4hRA3A/8LPDJzZikUs0igB377NvjD+6BxJbz/Objp\n/1YsrjRD40cHf8Rtf7yNTa2buGvNXWy+azNffNUXS4urQqqa+NLQddyV/CIn3vYc4sZPWTY99EH4\n+lrY9D4rZdGYmTa6dpudW1ffykN3PMT7rngfmzs3c+dDd7Kla8uMHA/gDesXcsnCWr77TBtGqW9P\nhWJm6ANyu6ssTS8ruU56cLEeq9lFJdtOK+2B9orXrXafmULusxW3/cwKtGk5mjhz6UuzQWNV6c5t\nrjP0XtW4prd1wHRGQhxTuAaNVS4aqyfugje3Jv/1pmrnKdl1KtR6nNMy4DAVMoMTGc7wx78klQqs\nTwEjwGHg/cBm4LMzZZRCMSvoGjz/Lfj+tXByO7zxP+C9W6z26hWyo28Hdz10F9878D2uX3o9j77l\nUT533edYWL2w4n0c7Alw/+5u3v2qlaxbfxXc+Cn48H54z5Nw9V9C6xb4n7fCt9fD45+2WsTPQKel\nKmcVH3nZR9h0+yaW1izlY9s+xme3f5ZIcvpngrfZBB9+3Vo6RqI8emh6JzxVnPsIIaqEEJ8TQvx3\n+v+1Qoj/Mw273g2sFUKsEkK4sJpWPFywTmbuRoC7gWeklDK9/F4hhFsIsQpYC+yaBpvKMhwbphJX\n3pSShioXyxq9ZddZPkNpx5XgdthmfBrbxQ1n9vxEzhmVir4tafBSXYmDPwMXZmFd+cFBIaz3oxJq\n3afuNC9r9JY9zsL68vfpdGI/xfTzcsHUU3nqep3lbajzTD4o4nbYaPA6S4q7XDtr3fmCo9rlyArM\nMyFoZ+oIDd7SQlFgNToB8DhszKudmQnKp0JFd5uU0pRS/reU8h4p5d3pv9Uws+L8QEo48ST84Dp4\n+l/hopvggzvhug9O3h0wTTQV5YsvfJEPPPUBbMLGj27+Ed+68VssqamsrXoG05R8/qEjzK1x80+v\nXzv+ghBW7df/+TZ8/AS8/Tew9OWw+yfw3zfB9zbCtq/AWOUj3JWyun41v37zr7nvyvt4pOMR7n7k\nbg6PTH1Ol8m45bKFXLyglu883aqiWIpCfo41B+N16f/7gC+f7k6llDrwj8ATwDGsyYuPCiG+JITI\nzPP4U2BOuonFx7AGHJFSHsXqatgMPA78w0x2EMySmjyNKOPcOKfoUE7V8VrS4J1QxGVYOaeK1XOr\ns//Xehysyvm/Euo9zrLRnVJO66kGFyq5BnWeYicv93jLm6qKHEy3w8aCOg+eHJFRKFgEM+OYVrnK\nO+7zatwsafBWFPGrOo2o6FTvxSlTwSOjUiGZocZtZ/Xc6rJOfUWCGSuFNENTjZuljd48EZ659q4K\n7JubFg6l7tNyEbU51a686+9xTm90e15NsZiZ7O1w2ATOU0gDri3x2QNAQG36fXI5bEX3/GwEtCq6\n24QQnUKIjsKfmTZOoZhRpISObfDzN8Fv77GekH+9Ce79nyl1CNw7tJe3PvxW/tD6B95z+XvYdPsm\nXrX4Vadk0v/u7eFgb5DPvPmS8l8kDjdceptl58dPwG3fsebW2vYV+O7L4Je3QctjYE5ffrbT5uRD\nGz7EL275BVJK3vnYO/nZkZ9hyuk7RiaK1T4S5c+HB6Ztv4rzgouklF8DUgBSyhjT9MyUUm6WUq6T\nUl4kpfz39LLPSykfTv+dSA8urpFSXpvbIl5K+e/p7S6WUj42HfZMaGvMB8D8GjdN1S7m1biLoiV2\nMbFDnSF3q5q0oz+nhKM0ETYBDtvkbkRhW+TC+JXDJpg/yYjznBoXq+aUFmXeMudbM4WIy9waV54j\nnEtuZGFpoxeva/ycJ9Mlc6pdLGkYF6EL6jzZv52OQoElim7qydLavA5bVujWuO0srUDw5u0/I5pm\nMDfRO4lwsE9w7KZ0KlzmOpd7T8vtwibIilq7TWT3U1/u+ToFar3Oiu6x3LMXgMtuY3mTNeiwtNHL\nwvT94UrfD/Nq3OXFR1q52IQoGtzIHKfwnqlPC4+MQPZMEEUrpJK7ouoUIpu5EaYFtW5qC6J3yxsn\nj0DbRK7IFVS7HDRWObPpk4vqxz9r1acRfT1VKr3KG4GXp3+uB74D/GamjFIoZhQpof0Z+Nkt8Ks7\nwN8Fb/o6/P2LsOb1Fe8maST51p5v8beP/y0CwS9u+QUfveajuOynNkN4LKnzjSdPcM2KRu68usLI\nl7fRmovr3Y/CR4/C6z5vRbF+dy987xrY+4tprdXaMH8DD972IK9d/lq+vffbfGDLBxiNT9+8PG+6\nfCHrFtSoKJaikKQQwkvavRBCXIQV0bqgCAwfBaDG46DB66TW42B5U1Wek+8tcK4mSknKMK/Gw6o5\n1Xhz6iYWN5R31Os9TuxpcVXKsW2ock7swBZss7ypatzRL0E5YZXZtlyEwZM+H28F9SB1HicrmqpK\n1o5Ixh18lz1fHi4t5wimV6r1OPIiJ7kirqIB/MnWEQK3w4bTbmN+rQeXvXLxl0uuwK31OJhb42L+\nFAV3OVyO0tff67Sxem51yXuo1m1nYZ3leAthOeSr51Yzv9aTFw3NHsNuo6naxfKmquygg0ifV6nL\nUFizU4rC7eq9TpY0eMffNwl1Xut5P5mILIfLbssKTI/DEl6FYqMchVFBZyZFzmUveU1r3A5Wzame\n8LOWb1vpG6hQ/BUOmFRSm2a3CebXeahx26lyOZhbnX+vla1JE9agBcDcand2gEdgiezGKlf2enqd\n9qxAP2sjWFLKsZyfPinlfwK3zrBtCsX0IqXVCv1nb4RfvwWCPfDmb1j1Ta+4DxyVC6PuUDd/vfmv\n+fnRn3P3urvZdPum025n/vMdJxkJa3z6TZecWvFs/RK4/p/hIwfh7p+BpwEe+Qj86HrrvKeJenc9\n37zhm3z+us+zb3gfb334rezo2zEt+7bZBB+6aS1twxE2qyiWYpwvYKXhLRNC/A/wNPAvs2vSLOCt\nL7l48QT1PQvrvJYIKXAoc79iRInmCp4SDmNDlZOmKidzalysmFPaMQYrFWtOzakNNEGxMCh3nLk1\nrgm7Dda6nZaTXuBQTlSTNLfanRdxAqhxOVjaVFVUt+Z12vIE09JGb0Uj7xlKps1N8at/IpG2pLGK\nJRVGtJx2q7Znbo0VGa3zOKmp0NGv8ziK3oeGKmdFwjbDskZvnsjzOh1UuRzYhWDVnOqKorINXicO\nmxeW7PEAACAASURBVMjasrDek7+dnFrdVLZRTI6gcjtseefqcVgisbaMyIf81L/J3t5y93M5sbOk\ncVzwNVZZ0dJSKazZ45cxYCrpwZV0+JzvKN/teFG9NRDgdliDApnvn0qEpcASuqvnVlPjcVDrdWAX\nVo1ZKTKmZnyqqaaJng6VTjSc6znasCJaF3aLIsW5g5TQ/rSVQte7G+qWwq3fhA1/M6W26xmeOPkE\nX3jhC9iFne+89ju8dvlrT9tEfzTJD7e18/pLF7BxZdPp7czuhMvfCpfdBccehi2fh9/cBWvfALd+\nCxqWTb6PSRBCcM+6e9gwbwOfeO4TfOCpD/Duy97Nhzd8GKf99FIv3nzFIv7r6Va++0wrt16xCNs5\n1K5ZMTNIKbcIIfYBr8R6xn5ESjl9odNzBS1UcrHTbqPa5SBaogW2EODI8arq05EvmxAlIwG52G0i\nL5LcVKYLXC4Lat1lnZ2sTenfy5uq8vZf47YT0YxJO6SBJWZck9T1iHS6ZCRhRfFrXHaasmmVVgA0\nLyKR3iZ3v3nXqOirKH9B7nYCy5mfyKH3Ou0sa/TS449nl+WmUy5p9JJMmUS00qV9TVXOkqnkK+ZY\nIs8uBI4SLn2tx0E4UZzZ0DTBdffkNCapdtlZUOfBH0vij6Ww24pTG5uqXPSm244n9HH7lzdWEdFS\n+GKpvIvjtFtROLtNMBBM4JkkNXJ+rRvdMK39FJDZbamByiqXdY/ZhMDrtBFPlU5zXzXBAEKpxRnH\nvc7jIFRwbefVuomOTW1Ot8L7pqnaxUhYK7rn3XYbKyeI8J4ujdVOfNHia+ywCfQSn90Mi+uqCRJl\nNJLM28ZhE2WFd2awYqLod+Gd5rLbWDHB+Vc5HQiS1Hqsz8qZnP6hUpH0zZy/deAk8LZpt0ahmG66\nd8KWL0DPTqhfZjWJuPqvTklYaYbGN3Z/g/tb7ufKeVfy9dd8ncU1i6fFzB9sayOa1PmXWy6elv0B\nlqew/g5Yd4s1efHW/4D//1Vwy39Y12Aacu7XNK7hd7f+jq/v/jq/OPoL9gzu4Wuv+RrL6k5dxNlt\ngg/dtIaP3H+Ax44McuuVi07bTsW5ScHgHkAmrLlcCLFcSrnvTNs0q2jlO3hWux3UpnQaq900OKoI\n6PkOXZ3HSUzTqfdO7GTkRneWNngxpcwTABOxpKF8pziw0qjiupmdTDw32gBWqmJTtazICZpMXJVE\nFI++T2TvmXDGCqNYtW4nWsqgscqN22HHbTf/X3vnHSZnVTbu+5nedma29yS72eymbRohHZIACSQE\nAgQB8VOKCKKI+ol+6E9QFBHFggSkqUikiILSDdIEBekJJQmBJCQkIYXUTd92fn+cd2ZnZqfuzLbk\nva/rvWbefs5523nO03A7rOGkyz6nFb/bgZC47PF8mgbYC/m4ZTvQ2aQrGaFrFi8Ag99tp61dEXDb\nOXCojZYYscDnsrFjXwv5EdpTm1Xwuezs2N+CL05H2m3XgSWK7D62tSS+331OG63tih37W5L6cMUS\nusdEoDzg5uMd+6MEhRCRh7SJJVz2RNitFgYWerCK4LJZ2br3EG67hSKfE4tIOGdWutYpsSXyOGwM\nLOxevcYAaxEft0WPWwXdDgIuBx9t3xdeZrNZyHfZ+WTXARxWQQRK8ly0th0I5+YS0e+ckIDld9nJ\n99gT+jlGEunW6bBKVvm0bFbJOKBOrkjraimlsh+iNzHpSba+ryMCrnwSfGVaczP28xmZAUayvmk9\n33rhW6zYsUJrasZdjt2Sm7wSG3cd4O7/ruOMcVXUl3ZDEmGbE6Z8DYbOg0cug0e+Ciseg1MXgq8k\n68O7bC6umnwVkyom8YOXf8BnHv8MV026ipNru25FPG9UBTc9+yE3Pfshc0aWmVqsI5dfJlmngON6\nqiB9gYHl41m36Y2467Sfinbq9lgc7CJawLJZJLG/UASRJlVWi2DNoDMe2+Gf6BhCC23sYgugw3E3\nt7UnFAxitW1dxSUx5pDG6SzScd7ygCuhACWiA4m4Eoy0h4QiTwotixWh2OZjR9u+pNtFnhc6rqNN\nrLSp9qhyluS54u2akpFlQfZub9ICSQayqdth5UBre6dAJaAFuSLDT+sLA8fz4JYlUdqOgMuB02al\n0Olmf3uHJuOE/KE0+Q/w1t6PE553Ql4NT+5IHq02VKTYoA1Om4VyCmmTaAFNobp0j/kMP7DQs2Gz\nWjjU1tZJlRUS9LxOG4HWdoKRAoWItqZJU1YoC7jYc6CVoMdOew8F7T6qsILN27dT6HOyKU4yc5fN\ngt9lx+vU7RGrAS/Oc7L7QCvOODdYbF6ueDgMySr0fFUGdbTFdqVobVfa/7EfdQXSNRH832TrlVK/\nyk1xTEyypHk/vPAz+O/NYPfooA8TLwVH13OiPPvxs3z/P9/HIhYWHreQGdUzclde4ManPwDgm7PS\nSEKcDQU1cN5j8Nrt8MwP4bZjtK/WoKk5OfysgbMYUTiCK/99JVf++0r++8l/+d7E7+GxZ972ViOi\n4Nf/vJSnlm1mTqOpxToSMQf3orE5/VHz1c4C1h/a0aVjuS0ODhid3rkFjSk7s+mGpI5ERKI6lJnk\nXMqUkKal0OtA2qzYxEqrETXfY7dR6FVRvimp/IOS+R/ZrRYGFngSjsY7LTbKA24qVTFVLg879kUL\nWLE+Xungd9lp72Jk2Hp3KTWuIla4N9OO1jzFM61LSpKO7SBXEQ6bhaDbwb5DbeG2FdHtPDVQx9M7\nl4e391gdNLWlpxVNhlWEymBnU9FCr5NjvAP4z/73U5Y9XSITdxflOfE2t8UVJEDXO9YHsczvYveB\n5rQ0OKBN/5zhY/SMVFEZ9HCSawhvNq2POquINle1WySuoB3CbrWEBSmftWMgIJlPWCQ+l40yl5+9\nxuBQ6F1hRejhvMU5IZMogpcClcb0ZWAckGdMJia9z6pn4LeT4KUbYfQ5cPlSHfShi8KVUoo73rmD\nbzz/DWoCNfz1lL/mXLj6cMseHnprA1+YNLBLH92MsVhg0qXwpefA6dMh3f9zY85Culf4KvjDiX/g\n4lEX8+jqR5n/yHye//j5Lh1r3qgKaou9/ObZD2k3Iwoe0YiIS0T+V0T+JiIPicg3RKRrQ/mHEdmk\n683ErKqm0NslzcnIigANMVr5Ckcw4+OkQ1nAzcBCDwG3nTK/C3eEhYGI9j2LrfIYbzUT8mq6dL5k\nHWVlBEOoCLopd3QOTOK0WeIKmtXOxP63RT4HJf6u3fIDnAWIaFOuAo8jaSc5Fp/LjtPQXLjsVoa4\nizv5yA33dAyAVQbdSX25co3T1lmrIQJ5Tlvcts8FVpG0I/GFiAzokA2VznyODWQ/GKuFpc7CfoUz\n4vmMKKzTasnovsmzas1mbZE3Le1ViMnBQWlvm4jjgkOzPkYuSFfAqgLGKaW+pZT6FnAUMEApdY1S\n6pruK56JSRrs3QoPfhHuWQBWB5z/BMy/BbyFXT7kwdaD/N+L/8fCJQuZVzuPu066K2f+VpH8bPFK\nvA4bX51Zl/NjJ6V0BHzpeRh+KjzzA/jzuXBgZ04ObbPY+NrYr7FoziJ8dh+XP38533j+G2zetzmj\n44R8sd7fvIcn3zMjCh7hLAJGAAuBm43/f+rVEvUGMUmGY/05nBmYLVslfU1SvCiDAEGbHrwq8XWO\nvAc6THpsctqWbsrFLJKZ0AjaZLDI7ouTfSo72g21nQVBRFIKwn6Lm0nOehq9sek5ogeWynIoMFQG\n3VF5ghJhs0jYVMsiwqyq2q75v+UYrzW1H3VIi5LnNBLQWlOrQYrsvqTri+29q1NQSuFLo+6pqMr3\nMLDAGw7wEjLLs4klfNcNshVnfZ6eZoSnAlfMe3Cyf3CvlCXdp6QUaI6YbzaWmZj0Hu3tOs/TzeN1\ntLwZ34VLX4JB07I67Nb9W7lg8QUsXruYr4/7OtdNuw5nDl5osby6ZjvPrNjCpTMHpxU1K+e4/HDm\nXTDn51r7d/uxsDF3MQPGlIzhL6f8hW+M+wYvbXyJ+Q/P594V99LWnn4H69TRlQwr9/PTJ9/nQJwI\naSZHDCOVUl9USj1vTF9CC1lHFHIwOopgrH9Uoa3DJ2KgsxCbJO5QjvPFT6Ye0qKko2kKbeOLyfUU\niYrxH2mNSU5e7+79rsSs/OE5PV5YwDIEvlSBDUrznPjT1IiM9w0KC7bZ4LRZ0gqjHrrGta5iZgQa\nMhZFa13Fcf2O0hFUkg0YVDnyU+5f5ypmvG8QRR43NYXeuEEqYpdU57sZV5z4nixzRJvppqrHON+A\nlOVMRiqBLxl2iyTMERcaNLFbLZTmOSmKCJE/1FNCpbWAcQUdg8rZaMt7ktjrMd43iHybJ+m7sLtI\nV8BaBLwmIj8UkR8CrwJ3d1upTExSsfV9+ONcneeptBG+/BLMuLJL0QEjWbZtGZ99/LOs3r2aG2fe\nyEWNF3UtJ1UK2tsV1z25goqAiwunds1EJSeIwMRL4MLF2q7lDyfCa3fq/znAbrHzxcYv8rf5f2Ns\n6Viuf+16zn3yXJZvX556Z7QW64enDGfjrgPc/uLqnJTJpF/ylohMCs2IyEQgfrSHw5jYV1FICyUI\ns4LDozoXI7wVzE4iOLjjdF4tEbqc/BSdeEGoTCKEHR8cBoA9pmMTOW9BKDCEwlRapFQd2Sn+wV0W\n1mxxtHmJBMxKZ+KOfcCmtXj17lICNjeFRuc4tm6DXEVR86Pyy6kv0x33wa4ShrrLODpvUKfjWxBK\nHHkcas8seXwuNHQeiwOP1YGIZCQ0DPWUYRNLp+tnFUtKIT5gTW4277QkFkq1SaRur3JHIG3TPLs1\nueAZ+WlsSHCdInFbOgZPC7sgLJXHtFFpjICXjOoCT1JzzdBgitdpi9L+DveVc/rgegqzTDQdetbL\nHAFmBNKPkBypoRsbc6+dmD8iKlhNiFitVYgSh77vekM8TDfR8E+AC4CdxnSBUuq67iyYiUlcWg7C\nc9fCbdPg0/e1KeD5j0Nx9jbJiz9azHmLz8NmsfGnOX/iuAHdF6Ds8Xc38faG3XxrdkPCSFU9StV4\nuORFqJ0BT14Bf/lCzkwGAarzqrn1+Fu5YfoNbN2/lXOfOJcb37yRg62dIxXFMrG2kJNHlXPrv1aH\n86qYHHEcBbwsImtFZC3wX+BoEXlXRN7p3aL1HBIz7pEX4Uhut2T3HpmYV8v0YEO4M55qiMUqlqTn\nDHV+7RYrde6OaKU1EcJFpM9RqFMVFenP1tGZdFhs2ETr7PJcNsb5BuAQfY5Sh5+gzRP2ucnFoFjQ\n5mFuQSNzCxqjllcn0ZyEyuOzOJnqrwt3MGNH/yPnBjoLo3yFGjyl1LqL4wqUoXp5rJlZPGRzb6g4\nd0KmpooiElcQGehKbsYfT/CNJF1/vlx58Na7S6NMa0ODFEcl0AZD9DM6sYv+fiFmBYd32a8s8hmk\noBaARm8lcwsameqvY4w3eWqVVNcqFkHCWvKQcB65LhmT/YOZkFdDhSNIqd2v3wn5g6DyKKzuruUJ\nDQ92FPacuWAmhrQeoEkp9Rtgg4gkvVNE5A8islVE3otYViAiT4vIh8Zvah2viUmID56CWyfDizfo\nRLqXvQFj/yfrfE7tqp1blt7Ct1/8NiMKR3DfyffRUJDDfFQxHGpt4+eL32d4uZ/Tx8ba3PcingL4\n7AMw68c6vP1tx+g8YjlCRDhp0Ek8PP9h5tfN5/fv/Z4zHzuTJVuXpNz3e3OHIQI/ffL9nJXHpF9x\nElADTDemGmPZPOCUXixXrzHVX9e5E+7MzD/k6LxBYf+EQrtXdxiN16lCUWLvEHAESer7kazTHT2K\n32HGGGn+ZBMrcwsaKTaWjfMN5NSBQ5lY2hFAwYLOaVPsc1LmCISP1dXAGZFfjhGezH1sjw8Oi+tQ\nHyuUJBOI4gkw4XXGqrBQ6tdlLEmgzYvsJIc6t/HM7Mb5BoaFvs5+XxliscGgY3TxIjVOvrKUu0Zq\nSS1IVOQ5AAkk6PQb3/yh7rKszTvHF5Xjc0YLoLEmmNXOAmbnj6DOXUJFnPs8mVYpk8AQqQgLynY3\nA52FCTWJeTHtOMJTQb27lGHhYCRCVYQmNmBzRwe3iMOABAFYIt8RUWUVK4V2L+N9gzpplo+PeGbi\nCVt2sVJk9zHGV93RfmLlxNqTweXvZHacDg1GGVyurgloXSEtAUtEfgD8H/BdY5EduCfFbn9EfwAj\nuRJ4Vik1BHjWmDcxSc721XDf2XDfWSBW+PzDcMbt4C1KvW8K9rfs54oXruC2t2/jtLrTuHP2nRS6\nux4cIx3ufnktG3Ye4Htzh/W9/E4WC0y9HL74T7BY4a658MINkIHfVCoCzgDXTLmGO2ffSWt7K+cv\nPp/fLv0trUnMXiqDbr48fTBPvLuJl1ZtS7idyeGJUmod0AQEgMLQpJRaZ6w7IojsjITM0SJxGR3d\n2A5WIorteZ1MAeNpsAY4CzghOIxR3qrwstjOXWQnKtYcqDiBqVypw99JvAj1nQRtrlXm6ujATTGE\nwUl5tZ3K2J2M9Q0ImyBFntNpseGy2Jnqr0vo0wadzZcij5GogxqJ09CMhQTodEz+QveHLY5QLGi/\nsxPzRySNXBhb1rg4vJCnr/0U/2BOCA6DkuHgyCwqbjuKYwNDopYNHnxi0n1EpJMJaqaUuvMoyXPh\ntxnPjN1DjauIYyLK0uitDGvTRKTbImEmEnZnBBqinylPISO8FQkHNRI9/zWuovCASr4tveS7Q9yl\njPcNShhUJNbUeLCrhLG+AeH7r8SRFxaSjg8OY0agAUeEaWfa2mZPR78snkAbuk8THS/0DNYFatM7\nXw5IV4N1OnAqsA9AKfUJKcKzK6VeBGITdMynw3frbuC0tEtqcuTRvA+e/ZEOvb72P1qzcunLMDg3\nqXE279vM+YvP59mPn+WK8Vfwoyk/wpGh6UXG59x9kN888yHHDS1h2pDsBcRuo/IouOTfMPIMeP5a\nuPtU2PFRTk8xqXwSD536EPNq53Hr27dyweIL+GTvJwm3//L0wdQUebnyb++wvzkzHwST/o2I/Bh4\nB7gJnXz4l8AverVQvUCqvkihq4DJ/sHUurr+bol3iiJ7XiczsyJf4tx0sRobl8XO3IJG5hSMDC+L\n7bCFzqtiAkRErvdYHcwtaKTAHr9zqGL/lwzr5MORiGRCS7kjgMeS+NsQsLkpc/j5tGUPAM0q5v1U\nFC04hDRQk/2Dwz4iyQuXuGxTEkRIc1vsDHaVML762E7rLCJYxZIwkuTMNMJch03OIn3qjONid4Oj\n68EZQvicecwd/cWw5i4uaXyzk2kJ/VY3MwINnFBRExUJM9kgRUjYiucLlAmxgySJFDMeqyOhFtSC\naC1i5HFi6ht5b+fbPMwsm0h1El/CSIa4S9K7RwGKhmAXS0IzRqfFFq5HrUtHKPSkG/k0/AxIAnNG\nZayNj1UszC1opDrJeyvXpHt3NCutk1MAIpKe6NuZUqVUKN7yZpJEIhSRi0XkDRF549NPP+3i6Uz6\nJa3N8PrvYOFR8O9fwojTtTng1MvBlhsBaMnWJZzz+Dms37Oehcct5LwR53VLMItYrn1iOa3tih+e\n0g8CoLn8cMadMP+3sOltuHUK/PeWnGqzvHYvP5n2E64/5no+3PUhZz9+Nq9uejV+cexWfrZgFOt3\nHOCGp1bmrAwm/YKzgMFKqRlKqZnG1H1Okn2WmHdU7QwAHBHCT77NE/ddNtSd2mRLn8HQYCmVXKDz\nRGv6Q5smE0RCTPXXMTkv/khyyHQp3MHNSx24IraYAlQ3nAJOP15Leo76jhR+SiFNn9Of2KQu1OFu\ni+0pG/sMdBWSb/NSYPMyt6AxZSCRYqNjaw1fE708FJCgxlUUZc4WDq89ZA6g/bm83mIYHPGoFNRQ\naIsWfmJN82xiCZtMhgOpxDRyWGPZSRAWQMDugeoJSesHHUJGyJTRgjDYFeEvFBwAcUwFw2cdnN1r\nwG9z4bE6sFt1brJ0egFDPeUM9ZRTmmnI9oiyHhccygRfDQNdhRHa0c4SVqoogrPzR3QaHGiPFbBi\nKuW25S6FYJR21l3Q6V7qWBet9esQLmOTmAGu+BpC3T4Ki0iU5tUilvCzEbqCQZunS0FFckm6AtZf\nROR2ICgiXwKeAe7M5sSRAluC9XcopcYrpcYXF/e/WPwmXaCtBd5apAWrJ74FwYFwwWI44w7w52bU\nQSnF/e/fz4WLL8Rr93LP3Hs4tqrzCF938J8Pt/H4O5v4yow6BhRmH2a3RxCBsZ+Dr76i7eyf+h78\nfhZsSS8KYLqcXHsyD8x7gEJXIZc8fQl/Wv6nuHbWE2oK+MLkgfzx5bW8sTZWQW5yGPMe0D12Of0J\nX0nUrMVXzEhfNZPzDC2G3QUxTtwT8mqYkFdDjauIKaMvTHmKWE1SQoqiAwulGxwDdOcqZCYUe55y\nR4C5BY3hjlvQ6CSV2WNGxeMIOpHHqsmvZ27t3LQDPKQy1at3lzJtwPH46k4It2ksIf+cRJqhQpuX\nyf7atP1yGj2VzAwO7TieIWxWOvIZ4i5liCHkRJqszS1oZHjFJC2YAJEdWJ+7ALzR9xDAZH8tMwIN\n4c6pBWGgq5C5BY16mTW+lmFSXi1TQ1rJwni5HCWlKf8gp14fSjFwUsFIGjxpRoMMVGlBLhUDp0bN\nphwESJHqxSYWal1FHQMZpSOTbg+AK6D9nEOzFjt2i5URnorw9Y1338SL9hmJxUggHUko+mKpw89A\nVyGVaYS0p/5EyM88CIddrJyUP5K5BY0cU3VMYm2XJ/o+CA2gxPq0WbFA3fHRuxrXK1KQHOmpYHb+\nCI4N1DMz0BA28Qxdkyn+wVkHFcmWdKMI/gJ4EHgIaACuVkot7ML5tohIOYDxu7ULxzA53Ghvg7f/\nDDcfDY9+Tb+Q/+chHTp84OScneZA6wG+/9L3ue7V65haOZX7593P4GDPRJQ51NrG1Y+8x8BCD5dM\n7zkb4JwRqIJzH4AFv4eda3XOrOd/Cq2HcnaKgf6B3HvyvUyvms7PX/8533/p+zS3NXfa7jsnDaUi\n4OY7D77DwRYzN9YRwk+BJSLylIg8GpqyOWC6QZdE5Dxjmw9F5LyI5f8SkZUistSYOvdcc02wGoqj\nzbcG5NdFmw9VjI1aX2T36WS6IgQTjAxH0yEoFRmaDm+seZKnMKHZWkrBLIaAzY3TYk8YYj3PiObX\nqeMWHECDu9SoX2ynTsLWDqki0QHgLdZJdIPDGeiM74MrIvgNrV2oTROjYua65i1mEcFtseuOZcFg\nCJumCUPcJdgSBYHQJe60ZGKwnqNKj+ok4NnFmjjK2+DjwBt/kLvA7iUQMgWsGBP/rMXDoueLov3z\n0hE1R5eM7rSszBHoLPhVT4x/gBghRXe+azk2ECf6sFghL4G2d0CC/kii7UOnFwu447xejPtpuKcc\nlxFOfmwoOma6WqYYwXZuQSPOAr3MXns8IzwV6Qn0zjz9fkmDKA0jHea8eemaEqKjhs7JH0mduyTs\nS1bq8GMJVut3S/loHd0YHX1xXOk4rBGDJSKCTSz4rE6cVjtjfQOYlFebtU9eLkn55hERq4g8r5R6\nWin1baXUFUqpp7t4vkeB0AfqPOCRLh7H5HCgvR3e+5v2sfr7JeD0wWf/DF96DupOyDo6YCTv73if\nsx8/m0dXP8pXRn+Fm467CX8G+SSy5fYX1rBm2z6uOXVE3wjL3hVEoPFM+Orr2mzzhevh1qnaPy5H\neO1efj3z13xl9Fd4dPWjfOmfX2Lnwehw8T6njesXNLJm2z6ue3JFzs5t0qe5G/gZcD0dPli/zPKY\nKYMuiUgB8ANgIjAB+EGMIPY5pdQYY+qZAUNXjCYnZnS+E5Hv0ZCwkeTdGlqlUAx0FXJccKgebS6J\n6Cg7fLnLlSdWjg8O1X5V9XGCGiTysRHBa3UyIa8mLETFK5LdlR/OyRWXvLKwUGq3WMOCU37d7CSF\njh/AIZEfV8Z5qJIJhZHtkY52LuJaOy12Sr2JtUMDjFDc2Xx5RYS5tXPjr3SnEPAT5LGs9FUyMa+W\nCkeQwa5iZgTqtUCoABHm5EdokNIQqB0WG4V2b1RUTKXQvl6lHVEJY8OyE4hjHppG7s3jg0M5oX5B\n5xWG5qvYnsdx4y/D2jCH8lHn4vGWRJVDFzqOQG9zacE2dN8X1MKQWVA6TAublgRtkUggDN1bTr8O\nXhJDSLBq8JSGTfQ6vUpi22PgFKiZ3slPTO+rd44KGjLASHdYNCT8rnNabJR5kwix7nzsYk3omxlF\nN/vZR5LyTlRKtQHtIpJR8H0RuR+dq6RBRDaIyBfRH8dZIvIhcIIxb3KkoRSseBxuPwYevECPGJ21\nCC5+ERrm5FSwalftLFq2iHOfOJe9zXu5c/adXDrm0qydUzNhxaYmFj73IfNGlTOjofsHubsdbyEs\nuBM+9xC0NcMfT4aHvwr7c2OyZxELl465lBuOvYFl25dx7hPnsmbXmqhtjhlSzEXTalj033Usfm9T\ngiOZHEbsV0rdpJR6Xin1QmjK8pjpBF06EXhaKbVDKbUTeJrO0XF7nrKRuuMC8c23In1f8sq1ea+3\nCMIdyoh3bM30jv/1JyJlo6IOFfaxcPiwiVW/n+N00LL2YR25IH6Y+STJZBMRW5JkCWkZNE37mxqB\nKEodfk7MH0EgOKjztiGzyCGzoSFGiGg8U/vElYxAxWg6Qm3THk8CjOfTlawt6yNvv2Rtrjq2CR0v\nhbnZcE85c/JHdlxLX4mhfcviexlZl6KG5EWuOloLCHEotHsZ46umwVOGJ9LPx0goHMIX12QwyWDA\n0JM7/geqO4Tn/Brq3CWcmJ/CXzqOWd00/xBmBoeGQ/jbxYrDFWdAN7IfYnfp+9/uprHxXLDYo0Ps\nu/xagBo4hXAjloeeVaN+7vyoAZiEmtNEQqE7qO/huhN0Xywv2jWjoXgEcwdnkBUjf5AWWn3FnTTv\n8ejSmM2gaVCV2tcP0M9tHMGxu0j3qdkLvCsivxeRm0JTsh2UUp9VSpUrpexKqSql1O+VUtuVCn1P\nFwAAIABJREFUUscrpYYopU5QSplOFEcaa16AO2fCA5+DlgNwxu/g0pdg+PzEoy1dZH3Tei7650Xc\n8MYNTK2cykOnPsSk8kk5PUcqmlvb+dZf3ibgtvOj+WnYafcnhpwAX3kFpn0T3vkz3Dwelt6fs5Ht\nk2pO4g8n/oEDrQf4nyf/h5c3vhy1/jsnDWVUVYDvPPiOmYD48OffIvJTEZksIuNCU5bHTCfoUiWw\nPmJ+g7EsxF2GeeBVkkDCyGXApkJDw2BzBpJHVgvGRM7LK9Udp3hF9EWYfznzEGOkPN5j7LM6Oapi\nMrMHzQ6bMDnEltDnKCNCZRsyS3e0M8HoVHbVFA/QJkmlujNtFUv8tgoJs1Y7ODp35MVi1ZYYMVpG\nQaBwcOfSiWhNw7BT0y+nzdHRQY4pY1T9Iy+gO19rSxKZ0EUVKU69kwrP8dbF395isXTSIJQ6/FQ4\nggwdd5EW3GM1tCFiBw1EoLCzuf3kURcy1R9hNld5lBbS8+L4cdeflFAbSdVR0edMpH0ri/NdrxqP\n22LvFJ4/XeyJ9qscl+C51+09sXyyMZfFYIe3qKMvptqj19XOAGMARlntUNaY0l8tTCJta+y7KhMc\nPn3PRA6gJLtX4wm53Ui6b8W/AVcBLwJvRkwmJumxZRnccyYsOhX2bdOR6b76Goz6THpmDhnQrtq5\nd8W9LHhsASu2r+CaKddw08ybyHf1fF7rhc99yPJNTVx7WiMF3p5TTfcYDg+c8EO45EXtI/Dwl/U1\n3rYqJ4cfVTyK+0++n3JfOV959is88P4DHae2WVj42bG0K7j8/iW0tLUnOZJJP2csMAm4jgzCtIvI\nMyLyXpxpfuR2qYIuJeBzSqlG4Bhj+ny8jXIZsCngDDC9ejonDDwh9caGsBArKY3wVFAQ6z807BQ9\nAS5Dy5VI61PqzMdmsemO/vD5HD/h68wKdpgzJW3EkjSSwroCkJ84p1SYyJHoYPT2UR3MTDRrJUlM\nCdMgZHbuidGiFLgKwIhWFxYw7B7t32SxdI6OG3PNOtUgtN6ZRocxVP+SoVpL0p3YXForY7FwTNUx\nTKuK7nyfMOAEZg85LUpzYxULY3zVuFIlyQ4O0EIw6HqMXBDXr8nuLeyIUFdYBwU1HfvHtpezm6LM\nBSKEoMHHdfKLTEVIyLWVNaZ1jctqZkCgigJPjlO/+OJY3NgcUHcC1SPOAruHwsCgxPunM9jqLYKi\neAFSUlBQ25GypwciQHeFpLp3ERmglPpYKXV3su1MTBLS9Ak89xNYeq8ePZj1Y5hwcbe96Nc1rePq\nl67mra1vMa1yGj+Y/IPktrvdyMurtnHz86tYMK6Kk0b2Thl6jNIRcOFT8OZd8Mw1OqT7sVfA1K+n\nZaOejHJfOYvmLOL/Xvw/rn31Wj5q+ogrxl+BzWJjYKGXn57RyNfuX8IPH13GtaeNzN5UyaTPoZTq\nUvI7pVRCSUREtohIuVJqU5KgSxuBGRHzVcC/jGNvNH73iMh9aB+tRV0pZyZ44/kZVE+AA9G+iriN\niGWRz5/SflUDLaUQmdg7YpsqXwU23wBKY6PqhTrAkeHZrToAg4jEl6yqJ8D616K2z5ramXBghxbE\n6k/So9d2FxTUIi174dVfJwxsYRULbe4C2J9hsnJvcdjhPhkD/APId+V3cvYf4B9AERY8617Rg1K1\n87Kz2CgdAZ8s0QKErxiWPQDNu4gOMt5Fbd7IBfDeQ9HL3EHYs0MLC+teig5uFPm+HTYv/DfcBs0d\n29pCQrs7qE3Ka2fCmuc7l8FfofsOncjy3V4yDA41QSudAndkpf1MhqcgKnpgOjitToYWDNV9l/07\n4ONXkm4/qnIKw8qPDn/7Ak4jaISnFIbU6Oe75QCseiazshfVw+Z3Oy93B8mHDl+7IbOg2bAi8Vdk\nnDNTutL0noKO95bNqQNx7d4AeRXQtLELB8w9qYybHwbGAYjIQ0qpOF56JiZxaG2G/94ML96gP+ST\nvwrHfCvjF026tLW3cd/793HTWzdht9q5duq1nDr41F7rbH+65xBff2AptUVefjS/H+S8ygUWCxz9\nRW3Tvvi78PxP9If61JuhOkOTnxi8di+/mfkbfvXmr1i0fBHrmtbxs2N/ht/h55TRFSz7pInbXlhN\nXYmPC6b2bmhWk+5BRE4GRgDh0Rml1I+yOGQo6NL1JA669BRwXURgi9nAd0XEBgSVUttExA7MQ6cv\n6R2CA+KbBZaPia8NEtGdksIhnddBOKpXFJ4C7XcUaxoX+46tGAv7D+j/sVqwWMGnfLT2QcrEisFb\nqCeI1kBYbfitQYZ6yqmMdJo3OuU6XxA81bw1Yk2a34fa6am3MegUSc2nLU89kTmv4glXw06FFUZg\nzPyBUZ3UIrsPu8tNTcB4txUO7gjH784P++rY4kZQS1LH6onausRbpP2P2lvib2f3QP1EfQ+4C2BP\nhN9roCrx8dMhJDBHlWtS9ABAtkQ0QYW7FPZsT2+/SLPCSCHAYutUvkZvFe/u25B52YobYPvqTotr\ngyHzxySeNCqUlNuCMyJgR54jjzk1c6L7PyHNaSaDHOn2n1yBDtPOinHadC9WMEt6rAQSVlL/y5jj\nDZikU/0c3N0hYLnztW9l5CBPD5JKwIqsQT+MLW3SK3z0os5jte0DGDoPTvyJdnbsJtbuXsvVL1/N\nkq1LmF41nasnX02Jp/eCSTS3tnPZfW+x+0ALiy6cgNeZuZN2vyavDD5zF4z+LDz+TZ03a+KX4bjv\nZ2WSYbVY+fbR36YmUMNPXvkJZz12Fj8/9ueMKh7Fd05sYM2ne/nx48sp87uY09hz2dpNuh8RuQ3w\nADOB3wFnAtl+Na9H53j8IrAOncwYERkPfFkpdZFSaoeI/Bh43djnR8YyL/CUIVxZyUFuyG4hkemN\nzRU/Yl8q4vgdhYQmiZz3lcLeLamP5yuNf8wsqHUVhYWaSCK1WkGbh0Kbl+JcJSJNFv6+5pj0jhFp\nJlgxTvu6GJ1hR3s7s5JovAa7S3C2NkfXx1OoR/STOfUHqzuH5k7Xh3bglOR+gCHidawjzxEpMIew\nWCCNhNUdxyhmQvEZSAJhrz5YDwoaChqw7t0GezpHvg1FFCyNzMFltWut3ernOpaNOF3/Lvt71P7V\nznzWHtzGnraDHfvGyTkGOmpgmLJGPeWYToPLInrwI2T25wrCwV2pD1TcAJ+uzOTEya1Wyhq15jXU\nfhZ7+H7opEV05unQ+PFMFeMRKzyWjTI07q/1ihlhqp6fSvDfxKQzezbDU/8P3ntQC1Tn/hXqk4S6\nzZK29jbuWXEPC5csxGF1cN2065hXO69XTcSUUvzwsWW8+tEOfn32aIaV96xTZZ+ifrZOUPzMNfDq\nrfD+E3DKjZ2SCGbKmfVnUp9fz7df+Dbn/eM8vnHUN/j88M9z4zlj+PzvX+PyPy/hDruVmUMPg4iN\nJiGmKKVGicg7SqlrROSXwD+yOaBSajvQ6WZUSr0BXBQx/wfgDzHb7AOOyub8vYLNoZ3+k+btyfBT\nnyoAQtEQ2LtVjyxn8m7OK9PflEwZdkriaHmeAmYFqrDuWp84N1BRvTanyoR0BI2Qli5ZKGmrXY/C\nS0xy3xTmhA6LjVp3jH9f0RDdhql8m2JJ1C45/ayq5OdKRF4ZbKLzgG3tdJJ5H9mtdkYUGZYkoWAV\nkQm5HV684mfWwJnYYzvpIQE15MsVT9tqbDPaW83qg1vJs+fpwF1xmJU/XCfTTZeQX1VMYu8uEVnn\nwccBqpOg2ImS4ZkJWFHEvEsaz+y8SaAKdibx2Y4NjR+Kcpqu5tRi0dr9LiRRzpZUV3m0iDSJyB5g\nlPG/SUT2iEhTTxTQpB/Q1gqv3AoLx8OKx2D6lTq6XDcKVx/t/ojzF5/PL974BZPKJ/Hw/Ic5ZfAp\nve5/c9dLa7nv1Y+5dMZgTh+bpenE4YAzD07+BVywWI9q3XMG/P3SrEO6jyoexV9O+QvTq6fzizd+\nwYVPXciWA+u564KjaSjL45J73uSZ5WmMoJv0F0I93v0iUgG0AKaasisU1CSOnBaJK6C39RTq6GHJ\nGD4f4uUVDCUMjZdkNRUDpiTspCbF5kwskFgd2C12LVwlSuRaPgoGpI62lzGugDbJS+bLNWR26rbO\nhEyFqxChUPDxIu9lTA6/yU6f7qR35X4KYXfpY0R20BvmQP3szsIV6Pup8cxo4SQWqx08BfhtLsb6\nBiTth9j9lekl/o0trzdChCwaop+tOJratLFYch5gLCNC9RHJLDeV3aV9OzMpe/WE6GipPURSAUsp\nZVVK+ZVSeUopm/E/NH8ED82bhFn7H7hjOiy+Un+UvvJfmPnd9D7gXaCtvY27l93NZx77DGt2r+G6\nadex8LiFvWoSGOKRpRv50ePLOXFEKd+e3ZB6hyOJgZPhy/+BY66Ad/8Ct0zQI2dZhHQPOAP8esav\nuWbKNXyw8wMWPLqA+1b+nt+fN5ahhpD1l9fXpz6QSX/gcREJAjcAbwFrgft6tUSHPaK1XYNnRnfu\n4mG1w6ApWiBL1VlK1lGNxGLpbPITqI6/bTIi+7KR4d9Lh8cfUe9OgtXJfWDs7tRt3RM4fdonrGgI\nFT6tnStwdY//9GHD4ON0EI1UEQMHTctOQATtCzdyQfdHhewyaQiQtTN0HQApSPOd0M84wpxDTHLG\n7g3wz+/rTnJgAJz1J22a0Y0apDW71nDVy1fxzqfvMKNqBldPvppiT8+PSsTj+fe38q2/vM3EmgJ+\nc85YLBYzkl0n7C44/ioYcRo8chn89Xztozf3F+Dv2kipiHDGkDM4tupYrn/tem5ZegsPr3qYL5/4\nNR58sZDvPPQOW/cc5Ksz63pdu2nSdZRSPzb+PiQijwMupdTu3iyTSTROV5DKsrEM8g+CHeu0D1Y8\nX4yKsTq4xs6PMstLUzpShxrPhpiIiikpHAy70hik6UvvlnRzkqUqs+ETVuQu6ogWF0m6g2PWON3M\nw9XhpPRwDGhl3CfdcY+HE2BbjPQMXQjXHks3De53BVPAMsmMloPw8kL49y8BBTO+B1Mv79aburW9\nlT8u+yO/XfpbPHZPn/C1iuTp5Vv46r1vMbQ8jzvPG4/L3otq9/5AWSNc9Cy8cgs8fx3cMlEHwBh/\nYfyPcRoUuYv4xfRfcEbdGfzyzV9y1ctXMqJ0JMe65/KLf67ko237+cnpI81r088QkaOB9Uqpzcb8\nF4AFwDoR+aGZrL7vICKMLjbyFJWO1NEBO43UG+9sp69bHPuT0pWEphVjk2sk7B5o6QNJzkPCzoDJ\n0WH0EzFkdmZmWdngCugIb5HmbMUNsP7Vrpsw9gVKR2q/wsOBpNH6siATC5XioZCLAXOHV0cxbN6b\n/bGyxBSwTNKjrQWW3gcv/EyHwBw+H2Zfm10W7jRYuWMlV710FSt2rGDWwFl8b+L3KHL3ARMKgyff\n3cTl9y9hRGWARRdMwO/KQZ6XIwGrTefIGjpPRxr8x7fhjT/AnOuz8kGYUjmFieUTeWzNY9y85Ga2\ntPycwaMbeHjlFD68vYnbPz+e8kDfGeEyScntwAkAInIsOvLf14AxwB3oaIImfQ2LJToyXBamwDkb\nOS/Mweh4LMHqLAIAdAOuQHpmY5loDnNBbECCeNEL+xvZaFP7yOAwYFgeJdN6duHZDeUYS9ccONfY\nXX1CwMoi053JEUFbK7zzV61leOxy7fR63mNw1qJuFa6ampv42Ws/4+zHz2bL/i38cvov+dWMX/Up\n4erBNzfwtfuXMKY6yD1fnEDAYwpXGVM4GL7wCJx9jx4JXjQf/vy5jBMVRmK1WDmt7jSePONJrpp0\nFVZ7E54Bd7HG/lPm3nkHr3+UZg4Uk76ANUJLdTZwh1LqIaXUVUA39JhNshKGUtEXOpa5LEK+kcS1\nmwcaTUy6DZszzdxYGTw4Dk/nwBxJCOXw6pRDrp9jarBM4tO8H5beq80Bd63T6vDP/llHF+rGj2Rr\neysPr3qYhUsWsvPgTs6sP5PLx15OMFmekR6mvV3xq6c/4ObnVzG1rpA7Pj/+yMt1lUtE9Cha3Sxt\nNvjiL3UQjKO/BNO+2eXoPw6rg7MazuL0utN5dPWj/Hbp7Wx1/Y7z//kPThnwBX4y+xysVnOMqY9j\nFRGbUqoVHVL94oh15kPXHYRMx7J1xI+iF51unAE4sKt7zKCcPv3u6nW6GPb8cEUsoNozS6prkgDj\nnkqa2iE7As4AkyomEXT2nX5eLjA/UCbR7FwLb9wFby3S2dWrJsBJP4X6OSlzcWRDa3srj695nDve\nuYP1e9YzrmQct51wG8MKh3XbObvCzn3NfPvBt3lmxVbOObqaH582ErvZSc8Ndhcc8y0YfS4892Od\nO+vNu2DCxdqc0NO1KFZ2q50F9Qs4te5U/rriEX79xq08sfWnPPunP/HNoy/mM8PmYU+UN8ekt7kf\neEFEtqFDtf8bQETqgMPEAaKP4fTpiGh9aFArKyrHaQ1TT5vFHa6UNUJbc3Yhwrubonr49P30A36Y\nJMZi0UnJ7blNCB5LTqNUFtbBvm29/sybApYJtB6CD/8Jb94Nq57Ro2ANc2HyZTq8djey6+AuHln9\nCPe/fz8b925kWMEwFh63kOlV0/tMEIsQ//lwG1f89W127Gvmh6cM57wpg/pcGQ8L/OVw2m+19upf\n18NLv4FXb4fR58DEL3fZ9t1usXPuiDP5zND5/ODZe3h07b389I2r+e3bN3Px6PM4s/5MPN38ETHJ\nDKXUT0TkWXTOq38qFbZfs6B9sUy6gy4OZqSmF96XFivk9WFhoL/h8uvQ/X2awzVMYS/R34KRBKp6\nPgVDHEwB60ilvR0+/i+88wAsf1hHw/GVwfTvwLjzOmfPziGt7a28tvk1nljzBIs/WkxzezPjSsZx\n5YQr+6RgtW3vIa57cgV/e2sjNUVe/nbeFEZWBnq7WIc/RUPgzN/DsVfAf2/WQVbevAtqZ8Loz8LQ\nuV168dutdq6bfQHnb1nAZQ/fy/p9/+CGN27g1rdvZ8GQ0zljyBnUBmu7oUImXUEp9UqcZR/0RllM\nukho4CJe2PYep299X3LL4Vy3w4ju9HM06TOYAtaRRFurDo268klY/gjsXq8/fMNOgcazdPS2LobJ\nTsWhtkO8vvl1/rX+Xzy97ml2HNyB1+7l9CGnc1bDWdTn13fLebNhz8EW7vz3R/zu32tobm3nspl1\nXHZcnRnqu6cpGQbzb4ETrtHmq2/+Ef5+Mdjc0HASNJycXjLUGOpL/Sz+0pe597W5/Py5p9jtf4FF\ny+/h7uV3M6Z4DPNq5zGjegalXnP028QkK0qGa5+ubvTj6HMUN/ScmaW/EravMn2OTEz6EKL6gSQ9\nfvx49cYbb/R2MfonB3bC6udh5T+0GeDBXWCxa2Fq1FnaFNDp65ZTb963mf9s/A8vbniRVza9woHW\nA7isLqZXT2fOoDlMq5oWjh7Tl9i29xD3vfoxd730ETv3t3DyqHK+Naue2uLuaSeTDGlv1wMF7z0I\nyx6G/dv08vLRUDMdqidA5fiMkhdvbTrIDU+t5KG3V+AteJtg6RJ2tW4EoLGokWMqj2F82XhGFY/q\nk/dsf0BE3lRKje/tcvQm5resC2x+V4dCz0WiYYDWZn3MijHafPBwQCmdSsXWQ7mt+jqth2DjW1B5\nVN9sk9XPwf4d2hrDm0beMpM+RbrfMlPAOtzYtx3WvaSntS/BlvcABe4C7ajYMEc7MHeDTe32A9t5\nfcvrvLbpNV7b/BrrmtYBUOGt4JiqY5heNZ2jy47GZUsjT0cPo5Ri6fpd3P/axzy89BOaW9uZ2VDM\nN2fVM6rqMHH2Phxpb4NNS2HVc7D6WdjwBrS36HX+Kqgar53cS0ZA6XCdZiCJCeoHW/bw88UreWbF\nZtye7TTWr6fF9Q6rd7+PQmG32BlVPIrxpVrYaixqJN+Vy2hrhy+mgGV+y7pErgUsE5PexhSw+jXp\nfstME8H+zKE9sOkd3cH8ZAl8shS2f6jX2dxQfTTM+C7UToeqo3M6Wtfa3srqXatZvn05y7Yv462t\nb/HhTn1un93H+NLxnN1wNpPKJ1EXrOtzflUhPtq2jyff3cRDb21gzaf7cNktnDW+ivOn1FBXYmqs\n+jwWqx6lrDwKpn8bWg7qDtmG143pDe1jGMIVhNIR2mSpdDgUDoGCGsirAIuF+tI8fnfeeJZ9spu7\nXlrLo0tLaG4bS325lRG1O3DlrWXN3ne48907aVftAFT5qmgsbmRU0ShGFo1kWOEwU8tlYpIrCgbD\nns2QP7C3S2JikhvsHmDH4aNBNYmLqcHqDxxsgm0f6FG8bSvh0w/0746PCEfLyauAirF6tH7QNKgY\nl5VqvF21s7dlL02Hmti8bzMb9m5g496NbNyzkXVN61i5cyWH2g4B4LV7aSxqZGL5RCaWTWRY4TBs\n3ZFzJAccaG5jycc7+feqbTy9fAurtups3xMGFXDGuErmjirH7zLt2A8r9u+Arcthy3LYusz4XQHN\nezq2sTp1By6/BvIHaaHLX8FOWzH/WGfhkVUtvPZxE0qBz2mjsdpFddkOHN4N7Gpbzfs732PL/i0A\n2MRGXX4ddcE6BgcHMyQ4hMHBwZR5y/rsc9ETmBos81tmYmKCNufcu0VHuzPpd/RpE0EROQn4DWAF\nfqeUuj7Z9of1R6mtBfZv19PeLbBrvQ4+setj/X/nWtjzScf2FruOrlZUr0fhK8ZA+ZiEYWhb2lrY\n3bybXQd3sevQLnY372b3od36/yH9v6m5iT3Ne2hqbqLpUBNNzU3sbdkbHqEPIQil3lIG5A1gaMFQ\nhhcOZ3jhcAb6B2Lpg/km9je3snLzHlZu3sP7m/fw7sbdvLNhFy1tCqtFmFhTwKzhpZwwrJTqAjM8\n9xGFUvo5274adn6kBytCvzs+gpZ90duLhTZvKbvtxWxuD/LxARdr9rvYrvzsUHmItwhvaR4UNXPA\ns5Od7Rv5eM8aNu/fHD6EVayUekop95VT4a2g1FtKvjOffFc+Ba6CqN/DUQNmCliH+bfMxMTE5Aig\nz5oIiogVuAWYBWwAXheRR5VSy7vlhC0H4KMXdYdKtQMq5n97xDyJ16l2UG3a56O9VQtG7a0d81FT\nzLK2Fpqb99DScoD2lv2oln2o5n20799B+6EmlEA7gnFW2i0W2n3lKH8Z7QMn0pJfzaFAJQfzyjnk\nyeeQauVQ2yFDw7SBpg+Wh4Wj3c279a8hRO1v3Z+waWwWGwFHAL/Tj9/hp9BVSE2gBr/D3zE5/ZR4\nSqjyVVHuLcfezVGK9je3smLTHtraFa3t7cavoq3N+DWWH2xp40BzGwda2jnQ0sbBljb2HGxla9NB\nNu0+yJamg2zf1xw+rtdhpaEsjwun1TCpppCjBuWbmqojGRGdfDQ4AIjJ6aKUHvBo2ghNm/Tvnk1Y\nmzZR0LSRgr1bGN62HdW6HWlv1fu0oN9mG/TsAeVgF3lst3lZ7fbwsdPOFoeNba2H2LZvNS+zgp0c\noD1BvhaXxYnH6sVpdeOyunFZ3HjtHsryAnhsbjw2Dw6rA6fVicPqwGF14rA4cNqc2I1fh8WBw+bC\nYbHjtNhxWOw4rHYcYsciouspIApAIUpp9zSlEKsTHF6UUT6n1WnmCDMxMTExMUmT3rBXmQCsUkqt\nARCRPwPzge4RsPZ9Cved1S2HjkKsYLF1TFZb1PyvvVbucbRqnZ0VcAF+P5As0/Rm2LcZ9r0Z7rjF\nw2ax4Xf4CTgD+B1+itxF1AXrCDgDBJ1Bgs4gAWcgPB/6ddvcfc436uMd+1lw68sZ7+e2W/E4rJT4\nXZQHXIwZEKQi4KK+NI+hZX6q8t1YLH2rriZ9FBEd8t1bpCMTJtpMKZ0/LqSB3reN/bu2sHXLJ+zZ\nvpnWfdtQB5oYdLCJYfv24lb78Kl9+NmHVbTo0mQRdlqs7LBa2Wm1sMNqYadF/99r2c4+i4X9Iuy3\nCE1iYfMWYb+x7JAIqoee30tGXcJlYy/rkXOZmJiYmJj0d3rcRFBEzgROUkpdZMx/HpiolLosZruL\ngYuN2QZgZY8WNPcUAdt6uxA54HCpB5h16auYdembZFuXgUqp4lwVpj8iIp8C67I8zOF0T2WL2RbR\nmO3RgdkWHZht0UEu2iKtb1mf9bhWSt0B3NHb5cgVIvLG4eB/cLjUA8y69FXMuvRNDqe69Ba5EDDN\n69CB2RbRmO3RgdkWHZht0UFPtkVvRCbYCFRHzFcZy0xMTExMTExMTExMTPo1vSFgvQ4MEZEaEXEA\n5wCP9kI5TExMTExMTExMTExMckqPmwgqpVpF5DLgKXS4hz8opZb1dDl6gcPF3PFwqQeYdemrmHXp\nmxxOdenPmNehA7MtojHbowOzLTow26KDHmuLfpFo2MTExMTExMTExMTEpD/Q97LDmpiYmJiYmJiY\nmJiY9FNMAcvExMTExMTExMTExCRHmAJWFohIgYg8LSIfGr/5CbY7z9jmQxE5z1iWJyJLI6ZtInKj\nse58Efk0Yt1FfbkuxvJ/icjKiDKXGMudIvKAiKwSkVdFZFBfrouIeETkCRF5X0SWicj1Edv32HUR\nkZOM9lwlIlfGWZ+wXUXku8bylSJyYrrH7C66WhcRmSUib4rIu8bvcRH7xL3f+mg9BonIgYiy3hax\nz1FG/VaJyE0iPZM5OIu6fC7mvdUuImOMdT1+TY40eusZ7klE5A8islVE3otYFvedLpqbjPZ4R0TG\nRewT91vVnxCRahF5XkSWG9+jrxvLj7j2EBGXiLwmIm8bbXGNsbzGeEetMt5ZDmN5xt/I/oaIWEVk\niYg8bswfyW2x1viWLhWRN4xlvfucKKXMqYsT8HPgSuP/lcDP4mxTAKwxfvON//lxtnsTONb4fz5w\nc3+qC/AvYHycfb4C3Gb8Pwd4oC/XBfAAM41tHMC/gTk9eV3QwV9WA7VGGd4GhqfTrsBwY3snUGMc\nx5rOMftgXcYCFcb/kcDGiH3i3m99tB6DgPcSHPc1YBIgwD9C91pfrUvMNo3A6t66JkfjCcVeAAAG\nZ0lEQVTa1FvPcC/U81hgXOQzk+idDsw1nhsxnqNXjeVpfXf7+gSUA+OM/3nAB8Y7/ohrD6NOPuO/\nHXjVqONfgHOM5bcBlxr/M/pG9nb9utgm/wvcBzxuzB/JbbEWKIpZ1qvPianByo75wN3G/7uB0+Js\ncyLwtFJqh1JqJ/A0cFLkBiJSD5SgO/O9RU7qkuK4DwLH98AofZfropTar5R6HkAp1Qy8hc7V1pNM\nAFYppdYYZfgzuk6RJGrX+cCflVKHlFIfAauM46VzzD5VF6XUEqXUJ8byZYBbRJw9UOZ4ZHNN4iIi\n5YBfKfWK0m/3RcS/V3NNruryWWNfk56ht57hHkUp9SKwI2Zxonf6fGCR0rwCBI3nqivfqj6HUmqT\nUuot4/8eYAVQyRHYHkad9hqzdmNSwHHodxR0botMvpH9ChGpAk4GfmfMC0doWyShV58TU8DKjlKl\n1Cbj/2agNM42lcD6iPkNxrJIQiMKkSEdFxiqywdFpJruJxd1uctQz14V0RkL76OUagV2A4U5LXln\ncnJdRCQInAI8G7G4J65LOvdMonZNtG86x+wOsqlLJAuAt5RShyKWxbvfuots61FjmHK8ICLHRGy/\nIcUxu4NcXZOzgftjlvXkNTnS6K1nuC+Q6J3e19533YZh1jUWrbk5ItvDMIlbCmxFd35XA7uMdxRE\n1yvTb2R/40bgO0C7MV/IkdsWoIXtf4p2J7jYWNarz0mP58Hqb4jIM0BZnFX/L3JGKaVEpKsx788B\nPh8x/xhwv1LqkIhcgpa8j4u7ZwZ0c10+p5TaKCJ5wEPo+izqWklT093XRURs6M7jTUqpNcbibrku\nJskRkRHAz4DZEYt79H7Lkk3AAKXUdhE5CnjYqFO/RUQmAvuVUu9FLO5P18Skn5Llt7ZfIiI+9DP1\nDaVUU+TYxZHUHkqpNmCMMfj5d2BoLxepVxCRecBWpdSbIjKjt8vTR5hmfH9KgKdF5P3Ilb3xnJga\nrBQopU5QSo2MMz0CbDHUiiFzn61xDrERiNR0VBnLMPYbDdiUUm9GnHN7xEj974Cj+npdlFKh3z1o\nm+AJsfsYQksA2N6X62JwB/ChUurGiHN2y3XpQtmitolp10T7pnPM7iCbuoTMIP4OfEEptTq0Q5L7\nrbvocj0M84vtRnnfRI+61hvbR5qf9otrYnAOMdqrXrgmRxq99Qz3BRK90/va+y7niIgdLVzdq5T6\nm7H4iG0PAKXULuB5YDLavCukLIisV6bfyP7EVOBUEVmLNhU+DvgNR2ZbAFHfn63oPsMEevk5MQWs\n7HgUCEUZOQ94JM42TwGzRSTfiGAy21gW4rPEdFRCN4TBqWi76+6my3UREZuIFEH4YzAPCI1sRx73\nTOC5GFPI7iCr6yIi16JfQN+I3KEHr8vrwBDREYEc6M7sozHbJGrXR4FzREcNqgGGoAMppHPMPlUX\nY5TyCbST6kuhjVPcb32xHsUiYjXKW4u+JmsM04UmEZlkmNN9gfj3ap+pi1EHC3AWEf5XvXRNjjR6\n6xnuCyR6pz8KfEE0k4DdxnOV6rvbLzDeC78HViilfhWx6ohrD+M9GjT+u4FZ6G/w8+h3FHRui0y+\nkf0GpdR3lVJVSqlB6PfAc0qpz3EEtgWAiHgNywlExIu+v9+jt58T1Qeif/TXCW3D+izwIfAMUGAs\nHw/8LmK7C9HOg6uAC2KOsQYYGrPsp2in/rfRD8zQ7qxHtnUBvOgoiO8Y5f4NRiQawAX81dj+NaC2\nj9elCm3LuwJYakwX9fR1QUe5+QCt7fh/xrIfAaemale0meRqYCURUeniHbOHnpMu1QX4PrAv4jos\nRQeDSXi/9dF6LDDKuRQdNOWUiGOOR38IVgM3A9KXr4mxbgbwSszxeuWaHGlTbz3DPVzH+9FmtS1o\nH4gvkvidLsAtRnu8S0QUS5J8d/vLBExDf4/eiXgHzj0S2wMYBSwx2uI94Gpjea3xjlplvLOcxvKM\nv5H9cTLex6EogkdkWxj1ftuYlkV803r1ORHjgCYmJiYmJiYmJiYmJiZZYpoImpiYmJiYmJiYmJiY\n5AhTwDIxMTExMTExMTExMckRpoBlYmJiYmJiYmJiYmKSI0wBy8TExMTExMTExMTEJEeYApaJiYmJ\niYmJiYmJiUmOMAUsExMTExMTExMTExOTHGEKWCYmJiYmJiYmJiYmJjni/wMXQ9HOaXgsGAAAAABJ\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1165ed400>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"pm.traceplot(trace);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Random walk part 2 - Rolling Regression"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"scaler = StandardScaler()\n",
"y = scaler.fit_transform(y.T)\n",
"\n",
"t = np.repeat(np.arange(len(y))[:,None],3,axis=1)\n",
"time_slots = 200\n",
"time_slot = np.repeat(np.arange(time_slots),len(y)/time_slots)\n",
"time_slot = np.repeat(time_slot[:,None],3,axis=1)\n",
"series_idx = np.repeat(np.arange(3)[None,:],len(y),axis=0)"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Theano variables\n",
"t_t = theano.shared(t.ravel())\n",
"y_t = theano.shared(y.ravel())\n",
"time_slot_t = theano.shared(time_slot.ravel())\n",
"series_idx_t = theano.shared(series_idx.ravel())\n",
"\n",
"dim = 3\n",
"n_elem = dim * (dim - 1) / 2\n",
"tri_index = np.zeros([dim, dim], dtype=int)\n",
"tri_index[np.triu_indices(dim, k=1)] = np.arange(n_elem)\n",
"tri_index[np.triu_indices(dim, k=1)[::-1]] = np.arange(n_elem)\n",
"\n",
"with pm.Model() as model:\n",
" sigma_alpha = pm.Uniform('sigma_alpha', lower=0, upper=1, shape=dim)\n",
" sigma_beta = pm.Uniform('sigma_beta', lower=0, upper=1, shape=dim)\n",
" \n",
" # correlation of the gradient (beta)\n",
" corr_triangle_u = pm.LKJCorr('corr_u', n=1000, p=dim)\n",
" corr_matrix_u = corr_triangle_u[tri_index]\n",
" corr_matrix_u = T.fill_diagonal(corr_matrix_u, 1)\n",
"\n",
" cov_matrix_alpha = T.diag(sigma_alpha).dot(T.eye(dim).dot(T.diag(sigma_alpha)))\n",
" cov_matrix_beta = T.diag(sigma_beta).dot(corr_matrix_u.dot(T.diag(sigma_beta)))\n",
" \n",
" alpha = mvNormalRandomWalk('alpha', mu = T.zeros(dim), \n",
" cov= cov_matrix_alpha, shape=(time_slots,dim), \n",
" testval=T.zeros((time_slots,dim)))\n",
" beta = mvNormalRandomWalk('beta', mu = T.zeros(dim), \n",
" cov = cov_matrix_beta, shape=(time_slots,dim),\n",
" testval=T.zeros((time_slots,dim)))\n",
" \n",
" alpha_r = alpha.T[series_idx_t, time_slot_t]\n",
" beta_r = beta.T[series_idx_t, time_slot_t]\n",
"\n",
" f = alpha_r + beta_r*t_t\n",
" \n",
" sd = pm.Uniform('sd',lower=0,upper=1,testval=T.std(y_t))\n",
" likelihood = pm.Normal('y',mu=f,sd=sd,observed=y_t)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n",
"\n",
" 0%| | 0/10000 [00:00<?, ?it/s]\u001b[A"
]
},
{
"ename": "LinAlgError",
"evalue": "3-th leading minor not positive definite\nApply node that caused the error: Cholesky{lower=True, destructive=False}(Dot22.0)\nToposort index: 146\nInputs types: [TensorType(float64, matrix)]\nInputs shapes: [(3, 3)]\nInputs strides: [(24, 8)]\nInputs values: ['not shown']\nOutputs clients: [[Solve{A_structure='lower_triangular', lower=True, overwrite_A=False, overwrite_b=False}(Cholesky{lower=True, destructive=False}.0, Elemwise{sub,no_inplace}.0), ExtractDiag{offset=0, axis1=0, axis2=1, view=False}(Cholesky{lower=True, destructive=False}.0)]]\n\nBacktrace when the node is created(use Theano flag traceback.limit=N to make it longer):\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2717, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2821, in run_ast_nodes\n if self.run_code(code, result):\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2881, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-76-439e07a7273b>\", line 30, in <module>\n testval=T.zeros((time_slots,dim)))\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/distributions/distribution.py\", line 37, in __new__\n return model.Var(name, dist, data, total_size)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/model.py\", line 508, in Var\n total_size=total_size, model=self)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/model.py\", line 800, in __init__\n self.logp_elemwiset = distribution.logp(self)\n File \"<ipython-input-32-09aff3abb794>\", line 15, in logp\n L = sla.cholesky(self.cov)\n\nHINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.\nApply node that caused the error: for{cpu,scan_fn&grad_of_scan_fn}(TensorConstant{1}, Elemwise{Composite{((i0 * i1) + i2)}}.0, Subtensor{int64:int64:int64}.0, TensorConstant{1}, TensorConstant{1}, <TensorType(int64, vector)>, <TensorType(float64, vector)>, <TensorType(int64, vector)>, <TensorType(int64, vector)>, Elemwise{true_div,no_inplace}.0, Alloc.0, Alloc.0)\nToposort index: 30\nInputs types: [TensorType(int64, scalar), TensorType(float64, row), TensorType(float64, matrix), TensorType(int64, scalar), TensorType(int64, scalar), TensorType(int64, vector), TensorType(float64, vector), TensorType(int64, vector), TensorType(int64, vector), TensorType(float64, scalar), TensorType(int64, vector), TensorType(int64, vector)]\nInputs shapes: [(), (1, 1210), (1, 1210), (), (), (64,), (64,), (64,), (64,), (), (64,), (64,)]\nInputs strides: [(), (9680, 8), (-9680, 8), (), (), (8,), (8,), (8,), (8,), (), (8,), (8,)]\nInputs values: [array(1), 'not shown', 'not shown', array(1), array(1), 'not shown', 'not shown', 'not shown', 'not shown', array(156.25), 'not shown', 'not shown']\nOutputs clients: [[Sum{acc_dtype=float64}(for{cpu,scan_fn&grad_of_scan_fn}.0)], [Subtensor{::int64}(for{cpu,scan_fn&grad_of_scan_fn}.1, Constant{-1})]]\n\nHINT: Re-running with most Theano optimization disabled could give you a back-trace of when this node was created. This can be done with by setting the Theano flag 'optimizer=fast_compile'. If that does not work, Theano optimizations can be disabled with 'optimizer=None'.\nHINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32mtheano/scan_module/scan_perform.pyx\u001b[0m in \u001b[0;36mtheano.scan_module.scan_perform.perform (/Users/sachin/.theano/compiledir_Darwin-15.6.0-x86_64-i386-64bit-i386-3.5.2-64/scan_perform/mod.cpp:4490)\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/gof/op.py\u001b[0m in \u001b[0;36mrval\u001b[0;34m(p, i, o, n)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode_input_storage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode_output_storage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 872\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 873\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/tensor/slinalg.py\u001b[0m in \u001b[0;36mperform\u001b[0;34m(self, node, inputs, outputs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moutputs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0mz\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcholesky\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlower\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/scipy/linalg/decomp_cholesky.py\u001b[0m in \u001b[0;36mcholesky\u001b[0;34m(a, lower, overwrite_a, check_finite)\u001b[0m\n\u001b[1;32m 80\u001b[0m c, lower = _cholesky(a, lower=lower, overwrite_a=overwrite_a, clean=True,\n\u001b[0;32m---> 81\u001b[0;31m check_finite=check_finite)\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/scipy/linalg/decomp_cholesky.py\u001b[0m in \u001b[0;36m_cholesky\u001b[0;34m(a, lower, overwrite_a, clean, check_finite)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 30\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mLinAlgError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"%d-th leading minor not positive definite\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0minfo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 31\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mLinAlgError\u001b[0m: 3-th leading minor not positive definite",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/compile/function_module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 883\u001b[0m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 884\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0moutput_subset\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 885\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutput_subset\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moutput_subset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/scan_module/scan_op.py\u001b[0m in \u001b[0;36mrval\u001b[0;34m(p, i, o, n, allow_gc)\u001b[0m\n\u001b[1;32m 988\u001b[0m allow_gc=allow_gc):\n\u001b[0;32m--> 989\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 990\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/scan_module/scan_op.py\u001b[0m in \u001b[0;36mp\u001b[0;34m(node, args, outs)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 978\u001b[0;31m self, node)\n\u001b[0m\u001b[1;32m 979\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mImportError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtheano\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgof\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcmodule\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMissingGXX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mtheano/scan_module/scan_perform.pyx\u001b[0m in \u001b[0;36mtheano.scan_module.scan_perform.perform (/Users/sachin/.theano/compiledir_Darwin-15.6.0-x86_64-i386-64bit-i386-3.5.2-64/scan_perform/mod.cpp:4606)\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/gof/link.py\u001b[0m in \u001b[0;36mraise_with_op\u001b[0;34m(node, thunk, exc_info, storage_map)\u001b[0m\n\u001b[1;32m 324\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 325\u001b[0;31m \u001b[0mreraise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_trace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 326\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/six.py\u001b[0m in \u001b[0;36mreraise\u001b[0;34m(tp, value, tb)\u001b[0m\n\u001b[1;32m 684\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 685\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 686\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mtheano/scan_module/scan_perform.pyx\u001b[0m in \u001b[0;36mtheano.scan_module.scan_perform.perform (/Users/sachin/.theano/compiledir_Darwin-15.6.0-x86_64-i386-64bit-i386-3.5.2-64/scan_perform/mod.cpp:4490)\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/gof/op.py\u001b[0m in \u001b[0;36mrval\u001b[0;34m(p, i, o, n)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode_input_storage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode_output_storage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 872\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 873\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/tensor/slinalg.py\u001b[0m in \u001b[0;36mperform\u001b[0;34m(self, node, inputs, outputs)\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moutputs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0mz\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcholesky\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlower\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/scipy/linalg/decomp_cholesky.py\u001b[0m in \u001b[0;36mcholesky\u001b[0;34m(a, lower, overwrite_a, check_finite)\u001b[0m\n\u001b[1;32m 80\u001b[0m c, lower = _cholesky(a, lower=lower, overwrite_a=overwrite_a, clean=True,\n\u001b[0;32m---> 81\u001b[0;31m check_finite=check_finite)\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/scipy/linalg/decomp_cholesky.py\u001b[0m in \u001b[0;36m_cholesky\u001b[0;34m(a, lower, overwrite_a, clean, check_finite)\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 30\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mLinAlgError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"%d-th leading minor not positive definite\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0minfo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 31\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mLinAlgError\u001b[0m: 3-th leading minor not positive definite\nApply node that caused the error: Cholesky{lower=True, destructive=False}(Dot22.0)\nToposort index: 146\nInputs types: [TensorType(float64, matrix)]\nInputs shapes: [(3, 3)]\nInputs strides: [(24, 8)]\nInputs values: ['not shown']\nOutputs clients: [[Solve{A_structure='lower_triangular', lower=True, overwrite_A=False, overwrite_b=False}(Cholesky{lower=True, destructive=False}.0, Elemwise{sub,no_inplace}.0), ExtractDiag{offset=0, axis1=0, axis2=1, view=False}(Cholesky{lower=True, destructive=False}.0)]]\n\nBacktrace when the node is created(use Theano flag traceback.limit=N to make it longer):\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2717, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2821, in run_ast_nodes\n if self.run_code(code, result):\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2881, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-76-439e07a7273b>\", line 30, in <module>\n testval=T.zeros((time_slots,dim)))\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/distributions/distribution.py\", line 37, in __new__\n return model.Var(name, dist, data, total_size)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/model.py\", line 508, in Var\n total_size=total_size, model=self)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/model.py\", line 800, in __init__\n self.logp_elemwiset = distribution.logp(self)\n File \"<ipython-input-32-09aff3abb794>\", line 15, in logp\n L = sla.cholesky(self.cov)\n\nHINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[0;31mLinAlgError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-77-8a7eba6802c4>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m10000\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mminibatch_tensors\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mminibatch_tensors\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0mminibatch_RVs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mminibatch_RVs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mminibatches\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mminibatches\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 26\u001b[0;31m \u001b[0mtotal_size\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlearning_rate\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1e-2\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mepsilon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0.1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 27\u001b[0m )\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/configparser.py\u001b[0m in \u001b[0;36mres\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 116\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 117\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 118\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mres\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 119\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/variational/advi_minibatch.py\u001b[0m in \u001b[0;36madvi_minibatch\u001b[0;34m(vars, start, model, n, n_mcsamples, minibatch_RVs, minibatch_tensors, minibatches, global_RVs, local_RVs, observed_RVs, encoder_params, total_size, optimizer, learning_rate, epsilon, random_seed, mode)\u001b[0m\n\u001b[1;32m 523\u001b[0m \u001b[0mprogress\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtqdm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 524\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprogress\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 525\u001b[0;31m \u001b[0me\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mnext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mminibatches\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 526\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0misnan\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 527\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mFloatingPointError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'NaN occurred in ADVI optimization.'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/compile/function_module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 896\u001b[0m \u001b[0mnode\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnodes\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mposition_of_error\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 897\u001b[0m \u001b[0mthunk\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mthunk\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 898\u001b[0;31m storage_map=getattr(self.fn, 'storage_map', None))\n\u001b[0m\u001b[1;32m 899\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 900\u001b[0m \u001b[0;31m# old-style linkers raise their own exceptions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/gof/link.py\u001b[0m in \u001b[0;36mraise_with_op\u001b[0;34m(node, thunk, exc_info, storage_map)\u001b[0m\n\u001b[1;32m 323\u001b[0m \u001b[0;31m# extra long error message in that case.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 324\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 325\u001b[0;31m \u001b[0mreraise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_trace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 326\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/six.py\u001b[0m in \u001b[0;36mreraise\u001b[0;34m(tp, value, tb)\u001b[0m\n\u001b[1;32m 683\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 684\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 685\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 686\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 687\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/compile/function_module.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 882\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 883\u001b[0m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 884\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0moutput_subset\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;31m\\\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 885\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0moutput_subset\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moutput_subset\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 886\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/scan_module/scan_op.py\u001b[0m in \u001b[0;36mrval\u001b[0;34m(p, i, o, n, allow_gc)\u001b[0m\n\u001b[1;32m 987\u001b[0m def rval(p=p, i=node_input_storage, o=node_output_storage, n=node,\n\u001b[1;32m 988\u001b[0m allow_gc=allow_gc):\n\u001b[0;32m--> 989\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 990\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 991\u001b[0m \u001b[0mcompute_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/scan_module/scan_op.py\u001b[0m in \u001b[0;36mp\u001b[0;34m(node, args, outs)\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[0mouts\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 978\u001b[0;31m self, node)\n\u001b[0m\u001b[1;32m 979\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mImportError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtheano\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgof\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcmodule\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mMissingGXX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 980\u001b[0m \u001b[0mp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexecute\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mtheano/scan_module/scan_perform.pyx\u001b[0m in \u001b[0;36mtheano.scan_module.scan_perform.perform (/Users/sachin/.theano/compiledir_Darwin-15.6.0-x86_64-i386-64bit-i386-3.5.2-64/scan_perform/mod.cpp:4606)\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/gof/link.py\u001b[0m in \u001b[0;36mraise_with_op\u001b[0;34m(node, thunk, exc_info, storage_map)\u001b[0m\n\u001b[1;32m 323\u001b[0m \u001b[0;31m# extra long error message in that case.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 324\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 325\u001b[0;31m \u001b[0mreraise\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mexc_type\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_value\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mexc_trace\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 326\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 327\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/six.py\u001b[0m in \u001b[0;36mreraise\u001b[0;34m(tp, value, tb)\u001b[0m\n\u001b[1;32m 683\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 684\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mtb\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 685\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtb\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 686\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 687\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mtheano/scan_module/scan_perform.pyx\u001b[0m in \u001b[0;36mtheano.scan_module.scan_perform.perform (/Users/sachin/.theano/compiledir_Darwin-15.6.0-x86_64-i386-64bit-i386-3.5.2-64/scan_perform/mod.cpp:4490)\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/gof/op.py\u001b[0m in \u001b[0;36mrval\u001b[0;34m(p, i, o, n)\u001b[0m\n\u001b[1;32m 870\u001b[0m \u001b[0;31m# default arguments are stored in the closure of `rval`\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mrval\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode_input_storage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode_output_storage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mn\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 872\u001b[0;31m \u001b[0mr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 873\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mo\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnode\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0moutputs\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 874\u001b[0m \u001b[0mcompute_map\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mo\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/theano/tensor/slinalg.py\u001b[0m in \u001b[0;36mperform\u001b[0;34m(self, node, inputs, outputs)\u001b[0m\n\u001b[1;32m 61\u001b[0m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 62\u001b[0m \u001b[0mz\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moutputs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 63\u001b[0;31m \u001b[0mz\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mscipy\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinalg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcholesky\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlower\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 64\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mgrad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minputs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgradients\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/scipy/linalg/decomp_cholesky.py\u001b[0m in \u001b[0;36mcholesky\u001b[0;34m(a, lower, overwrite_a, check_finite)\u001b[0m\n\u001b[1;32m 79\u001b[0m \"\"\"\n\u001b[1;32m 80\u001b[0m c, lower = _cholesky(a, lower=lower, overwrite_a=overwrite_a, clean=True,\n\u001b[0;32m---> 81\u001b[0;31m check_finite=check_finite)\n\u001b[0m\u001b[1;32m 82\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 83\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/Users/sachin/anaconda/lib/python3.5/site-packages/scipy/linalg/decomp_cholesky.py\u001b[0m in \u001b[0;36m_cholesky\u001b[0;34m(a, lower, overwrite_a, clean, check_finite)\u001b[0m\n\u001b[1;32m 28\u001b[0m \u001b[0mc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpotrf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlower\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moverwrite_a\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0moverwrite_a\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mclean\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mclean\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 30\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mLinAlgError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"%d-th leading minor not positive definite\"\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0minfo\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 31\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0minfo\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 32\u001b[0m raise ValueError('illegal value in %d-th argument of internal potrf'\n",
"\u001b[0;31mLinAlgError\u001b[0m: 3-th leading minor not positive definite\nApply node that caused the error: Cholesky{lower=True, destructive=False}(Dot22.0)\nToposort index: 146\nInputs types: [TensorType(float64, matrix)]\nInputs shapes: [(3, 3)]\nInputs strides: [(24, 8)]\nInputs values: ['not shown']\nOutputs clients: [[Solve{A_structure='lower_triangular', lower=True, overwrite_A=False, overwrite_b=False}(Cholesky{lower=True, destructive=False}.0, Elemwise{sub,no_inplace}.0), ExtractDiag{offset=0, axis1=0, axis2=1, view=False}(Cholesky{lower=True, destructive=False}.0)]]\n\nBacktrace when the node is created(use Theano flag traceback.limit=N to make it longer):\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2717, in run_cell\n interactivity=interactivity, compiler=compiler, result=result)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2821, in run_ast_nodes\n if self.run_code(code, result):\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/IPython/core/interactiveshell.py\", line 2881, in run_code\n exec(code_obj, self.user_global_ns, self.user_ns)\n File \"<ipython-input-76-439e07a7273b>\", line 30, in <module>\n testval=T.zeros((time_slots,dim)))\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/distributions/distribution.py\", line 37, in __new__\n return model.Var(name, dist, data, total_size)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/model.py\", line 508, in Var\n total_size=total_size, model=self)\n File \"/Users/sachin/anaconda/lib/python3.5/site-packages/pymc3/model.py\", line 800, in __init__\n self.logp_elemwiset = distribution.logp(self)\n File \"<ipython-input-32-09aff3abb794>\", line 15, in logp\n L = sla.cholesky(self.cov)\n\nHINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node.\nApply node that caused the error: for{cpu,scan_fn&grad_of_scan_fn}(TensorConstant{1}, Elemwise{Composite{((i0 * i1) + i2)}}.0, Subtensor{int64:int64:int64}.0, TensorConstant{1}, TensorConstant{1}, <TensorType(int64, vector)>, <TensorType(float64, vector)>, <TensorType(int64, vector)>, <TensorType(int64, vector)>, Elemwise{true_div,no_inplace}.0, Alloc.0, Alloc.0)\nToposort index: 30\nInputs types: [TensorType(int64, scalar), TensorType(float64, row), TensorType(float64, matrix), TensorType(int64, scalar), TensorType(int64, scalar), TensorType(int64, vector), TensorType(float64, vector), TensorType(int64, vector), TensorType(int64, vector), TensorType(float64, scalar), TensorType(int64, vector), TensorType(int64, vector)]\nInputs shapes: [(), (1, 1210), (1, 1210), (), (), (64,), (64,), (64,), (64,), (), (64,), (64,)]\nInputs strides: [(), (9680, 8), (-9680, 8), (), (), (8,), (8,), (8,), (8,), (), (8,), (8,)]\nInputs values: [array(1), 'not shown', 'not shown', array(1), array(1), 'not shown', 'not shown', 'not shown', 'not shown', array(156.25), 'not shown', 'not shown']\nOutputs clients: [[Sum{acc_dtype=float64}(for{cpu,scan_fn&grad_of_scan_fn}.0)], [Subtensor{::int64}(for{cpu,scan_fn&grad_of_scan_fn}.1, Constant{-1})]]\n\nHINT: Re-running with most Theano optimization disabled could give you a back-trace of when this node was created. This can be done with by setting the Theano flag 'optimizer=fast_compile'. If that does not work, Theano optimizations can be disabled with 'optimizer=None'.\nHINT: Use the Theano flag 'exception_verbosity=high' for a debugprint and storage map footprint of this apply node."
]
}
],
"source": [
"# Tensors and RV that will be using mini-batches\n",
"minibatch_tensors = [t_t, time_slot_t, series_idx_t, y_t]\n",
"minibatch_RVs = [likelihood]\n",
"\n",
"# Generator that returns mini-batches in each iteration\n",
"def create_minibatch(data):\n",
" rng = np.random.RandomState(0)\n",
"\n",
" while True:\n",
" # Return random data samples of set size 100 each iteration\n",
" ixs = rng.randint(len(data), size=64)\n",
" yield data[ixs]\n",
"\n",
"minibatches = zip(\n",
" create_minibatch(t.ravel()),\n",
" create_minibatch(time_slot.ravel()),\n",
" create_minibatch(series_idx.ravel()),\n",
" create_minibatch(y.ravel())\n",
")\n",
"\n",
"with model:\n",
" # Run advi_minibatch\n",
" v_params = pm.variational.advi_minibatch(\n",
" n=10000, minibatch_tensors=minibatch_tensors,\n",
" minibatch_RVs=minibatch_RVs, minibatches=minibatches,\n",
" total_size=len(y), learning_rate=1e-2, epsilon=0.1\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
},
"latex_envs": {
"bibliofile": "biblio.bib",
"cite_by": "apalike",
"current_citInitial": 1,
"eqLabelWithNumbers": true,
"eqNumInitial": 0
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment