diff --git a/Project.ipynb b/Project.ipynb index 1cfd3b3..e66efac 100644 --- a/Project.ipynb +++ b/Project.ipynb @@ -2,8 +2,8 @@ "cells": [ { "cell_type": "code", - "execution_count": null, - "id": "4fc48221-6019-4189-bc53-199a028b610d", + "execution_count": 1, + "id": "389c03b2", "metadata": {}, "outputs": [], "source": [ @@ -13,10 +13,21 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "4b1ec69f-6878-4f1a-93c1-e204680fb115", + "execution_count": 2, + "id": "be8b7dc4", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGHCAYAAABmuoLpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+H0lEQVR4nO3dd1xT9/4/8NdJCGGGPWUjojgRB+CugtXWcVtHr62j1fZ6uxy3t7/Sqe33XmsntnbeWulytHXUtrSKA3HgQEHrRtlL9oYQkvP7IySKrASSnJPk/Xw8eLQ5fs7J+8PJCe/z+XzO58OwLMuCEEIIIcTABFwHQAghhBDzREkIIYQQQjhBSQghhBBCOEFJCCGEEEI4QUkIIYQQQjhBSQghhBBCOEFJCCGEEEI4QUkIIYQQQjhBSQghhBBCOEFJCCEcYhhGo5/k5GQkJyeDYRj8/PPPPR532bJlCAgI0H8F7qKKLzk5Wet9T548iXXr1qG6ulqj8uvWrQPDMFq/T28xDIN169YZ7P3ulpCQAIZhkJOT06v9Vb+r8vJy3QZGiA5YcB0AIeYsNTW13eu33noLR44cweHDh9ttDwsLw/nz5zU+7muvvYZVq1bpJEZDOHnyJNavX49ly5bB0dGxx/IrVqzA/fffr//A2qSmpsLHx8dg70eIuaAkhBAORUZGtnvt5uYGgUDQYbu2goOD+7Q/3/n4+Bg0Kejr+SCEdI66YwgxMjKZDK+88gq8vb0hkUgwbdo0XL9+vV2ZzrpjfvrpJ4wdOxYODg6wsbFBUFAQnnjiiR7fj2EYPPvss/jiiy8wYMAAiMVihIWFYceOHRrFu2/fPkRFRcHGxgb29vaIiYlp1wK0bt06/Pvf/wYABAYGtuuC6kpn3TGHDx/G5MmT4eLiAmtra/j5+eHhhx9GY2Njt/Fpst+93TGqLpLDhw/jySefhIuLCyQSCZYsWYKGhgaUlJRgwYIFcHR0hJeXF1544QXIZDL1/jk5OWAYBu+88w7+85//wM/PD1ZWVhg1ahQOHTqkya8VBw8exNSpUyGRSGBjY4Nx48ZpvC8hfEFJCCFG5uWXX0Zubi6++uorfPnll8jMzMSsWbMgl8u73Cc1NRULFy5EUFAQduzYgd9//x2vv/46WltbNXrPffv24aOPPsKbb76Jn3/+Gf7+/vj73//e4/iUbdu2Yc6cOZBIJNi+fTu2bNmCqqoqTJ48GcePHweg7Fp57rnnAAC7d+9GamoqUlNTMXLkSA1/I8o/6g888AAsLS3x9ddf488//8Tbb78NW1tbtLS06Hw/lRUrVsDBwQE7duzAq6++im3btuHJJ5/EAw88gOHDh+Pnn3/G0qVL8f777+Pjjz/usP/mzZvx559/Ij4+Ht9//z0EAgFmzJjRoZvuXt9//z1iY2MhkUjwzTff4Mcff4SzszOmT59OiQgxLiwhhDeWLl3K2tradvpvR44cYQGwM2fObLf9xx9/ZAGwqamp7Y7j7++vfv3ee++xANjq6mqtYwLAWltbsyUlJeptra2t7MCBA9n+/ft3iO/IkSMsy7KsXC5nvb292aFDh7JyuVxdrq6ujnV3d2ejo6PV2959910WAJudna1RTG+88QZ799fXzz//zAJgMzIytKqbpvsBYN944w31661bt7IA2Oeee65dublz57IA2A8++KDd9hEjRrAjR45Uv87OzmYBsN7e3mxTU5N6e21tLevs7MxOmzatw3upfjcNDQ2ss7MzO2vWrHbvIZfL2eHDh7Njxoxpt/3//u//en3uCdE3agkhxMjMnj273ethw4YBAHJzc7vcZ/To0QCABQsW4Mcff0RhYaFW7zl16lR4eHioXwuFQixcuBA3b95EQUFBp/tcv34dRUVFWLx4MQSCO181dnZ2ePjhh3Hq1Kkeu0o0NWLECFhaWuKpp57CN998g6ysLL3up/Lggw+2ez1o0CAAwAMPPNBhe2fn56GHHoKVlZX6tb29PWbNmoWUlJQuW7ZOnjyJyspKLF26FK2treofhUKB+++/H2fPnkVDQ4O6vIODAxiGgb29vVZ1I8QQKAkhxMi4uLi0ey0WiwEATU1NXe4zceJE7N27F62trViyZAl8fHwwZMgQbN++XaP39PT07HJbRUVFp/uotnt5eXX4N29vbygUClRVVWn0/j0JDg7GwYMH4e7ujmeeeQbBwcEIDg7Gpk2b9LKfirOzc7vXlpaWXW5vbm7usH9Xv9eWlhbU19d3+p63b98GAMybNw8ikajdz8aNG8GyLCorK9XlHR0dYWtr2y4RJIQv6FNJiJmYM2cODh06hJqaGiQnJ8PHxweLFi3qcfwBAJSUlHS57d6kSEW1vbi4uMO/FRUVQSAQwMnJSZsqdGvChAn49ddfUVNTg1OnTiEqKgqrV6/ucQBtb/fTha5+r5aWlrCzs+t0H1dXVwDAxx9/jLNnz3b6c3er1WOPPYa6ujr9VICQPqIkhBAzIxaLMWnSJGzcuBEAkJ6e3uM+hw4dUt+BA4BcLsfOnTsRHBzc5aOyoaGh6NevH7Zt2waWZdXbGxoasGvXLvUTM6qYgO5bczQlFAoxduxYfPLJJwCg8fwqvd2vL3bv3t2uhaSurg6//vorJkyYAKFQ2Ok+48aNg6OjI65cuYJRo0Z1+qNqkSGE72ieEELMwOuvv46CggJMnToVPj4+qK6uxqZNmyASiTBp0qQe93d1dcV9992H1157Dba2tvj0009x7dq1blsLBAIB3nnnHTz66KN48MEH8Y9//ANSqRTvvvsuqqur8fbbb6vLDh06FACwadMmLF26FCKRCKGhoRqPY/j8889x+PBhPPDAA/Dz80NzczO+/vprAMC0adN0vp+uCIVCxMTEYO3atVAoFNi4cSNqa2uxfv36Lvexs7PDxx9/jKVLl6KyshLz5s2Du7s7ysrKcOHCBZSVleGzzz5Tl3/zzTfx5ptv4vbt2122WhHCFUpCCDEDY8eORVpaGv7f//t/KCsrg6OjI0aNGoXDhw9j8ODBPe4/e/ZsDB48GK+++iry8vIQHByMH374AQsXLux2v0WLFsHW1hYbNmzAwoULIRQKERkZiSNHjiA6OlpdbvLkyYiLi8M333yD//3vf1AoFDhy5AgmT56sUf1GjBiBAwcO4I033kBJSQns7OwwZMgQ7Nu3D7GxsTrfT1eeffZZNDc34/nnn0dpaSkGDx6M33//HePGjet2v8ceewx+fn5455138I9//AN1dXVwd3fHiBEjsGzZsnZlFQoF5HJ5u9YoQviCYemTSQjpBsMweOaZZ7B582auQzEZOTk5CAwMxLvvvosXXniB63AI4QyNCSGEEEIIJygJIYQQQggnqDuGEEIIIZyglhBCCCGEcIKSEEIIIYRwgpIQQgghhHCC5gnphEKhQFFREezt7cEwDNfhEEIIIUaDZVnU1dXB29u7xzWLKAnpRFFREXx9fbkOgxBCCDFa+fn5XS7roEJJSCdUU0Xn5+dDIpHo5JgymQwHDhxAbGwsRCKRTo7JB6ZYL6qTcaA6GQeqk3HQZZ1qa2vh6+ur0bILlIR0QtUFI5FIdJqE2NjYQCKRmMyHFjDNelGdjAPVyThQnYyDPuqkyXAGGphKCCGEEE5QEkIIIYQQTlASQgghhBBOUBJCCCGEEE5QEkIIIYQQTlASQgghhBBOUBJCCCGEEE5wmoRs2LABo0ePhr29Pdzd3TF37lxcv369x/2OHj2KiIgIWFlZISgoCJ9//nmHMrt27UJYWBjEYjHCwsKwZ88efVSBEEIIIb3EaRJy9OhRPPPMMzh16hSSkpLQ2tqK2NhYNDQ0dLlPdnY2Zs6ciQkTJiA9PR0vv/wynn/+eezatUtdJjU1FQsXLsTixYtx4cIFLF68GAsWLMDp06cNUS1CCCGEaIDTGVP//PPPdq+3bt0Kd3d3nDt3DhMnTux0n88//xx+fn6Ij48HAAwaNAhpaWl477338PDDDwMA4uPjERMTg7i4OABAXFwcjh49ivj4eGzfvl1/FTIjNY0y5FU2oqi6Abn1QFVjC9wdTGPmQEIMraVVgcLqJmSX1eJ6DYOhVY3wc7GHhZB6zIlp49W07TU1NQAAZ2fnLsukpqYiNja23bbp06djy5YtkMlkEIlESE1NxZo1azqUUSUu95JKpZBKperXtbW1AJTT2Mpkst5UpQPVcXR1PC40tcjx218l+OlcAdLza+76Fwt88FcyhvWTYH6ED2YN84StmFcfLa2Ywrm6F9WJny4U1ODHtAL8/lcJGlrkbVuF+PTKcThaizB7uBceGeWDEA87TuPsC1M4T/eiOml2LE0wLMuyfX5HHWBZFnPmzEFVVRWOHTvWZbkBAwZg2bJlePnll9XbTp48iXHjxqGoqAheXl6wtLREQkICFi1apC6zbds2PP744+2SDZV169Zh/fr1HbZv27YNNjY2fayZabhWzWBnlgCV0jtrAdiLWEhEQJ0MqJXd2e5oyWJ+kAJDnHjx0SKEd+plwO4cAc6V32npEAlYuIgBBQtUSAE5q7ymGLCY4MniQT8FxEKuIiZEc42NjVi0aBFqamp6XH+NN7erzz77LC5evIjjx4/3WPbeRXFUedTd2zsr09ViOnFxcVi7dq36tWoFwNjYWJ0uYJeUlISYmBijWvCoVa7Am79fw/arBQAALwcrPDrGF38L94a7vVhdr5HRk/D75TJ8fzofBVVN+N81IR4e6Y03Z4XB0sK4mpSN9Vx1h+rEHydvVWDdjxdR1SiDgAFmDfPCglH9MNrfCa2trUhKSsJ9U6fhTF4tdpwtQNLVUqSUMLjVbINP/j4Cg711851kKMZ6nrpDdeqeqjdBE7xIQp577jns27cPKSkp8PHx6basp6cnSkpK2m0rLS2FhYUFXFxcui3j4eHR6THFYjHEYnGH7SKRSOcfMH0cU1+aWuR4ZkcGDl8rBcMAS6MC8O/poZ12tXg62mLlZEcsjQ5C/MEb+N+xLOw6X4TSuhZ89lgE7Iywe8aYzpWmqE7c2nehCP/6MQMyOYuBnvbY+PAwDPd1VP+76kbJSmyJqWFemBrmhWOZZYjb/RcKqprw2Ndp+HJxBKL7u3JUg94zpvOkKapT18fQFKe3qCzL4tlnn8Xu3btx+PBhBAYG9rhPVFQUkpKS2m07cOAARo0apa54V2Wio6N1F7yJa2qRY/GW0zh8rRRiCwG+XDwK62YP7nGsh7WlEHEzByHh8TGwsRTiWGY5Fv3vFOqlrQaKnBB+2nk2D89vT4dMzuKBoV745dlx7RKQrkwIcUPiqgmIDHJGvbQVS7eeweFrt/UfMCEGwGkS8swzz+D777/Htm3bYG9vj5KSEpSUlKCpqUldJi4uDkuWLFG/XrlyJXJzc7F27VpcvXoVX3/9NbZs2YIXXnhBXWbVqlU4cOAANm7ciGvXrmHjxo04ePAgVq9ebcjqGS25gsXqnelIy62CxMoCP6wYi5iwzluRujJxgBt2PBUJZ1tLXCyowbPbzqNVrtBTxITwW/L1Ury85xIAYEmUPz76ezjEFpoP8JBYifDNE2Mwc6gnZHIWz/yQjr8KanrekRCe4zQJ+eyzz1BTU4PJkyfDy8tL/bNz5051meLiYuTl5alfBwYGIjExEcnJyRgxYgTeeustfPTRR+rHcwEgOjoaO3bswNatWzFs2DAkJCRg586dGDt2rEHrZ6w2JF7F/su3YSkU4KulozEqoOunlbozzMcRXy8bDSuRAMnXy/DGvsvgyThoQgzmanEtnt2WDrmCxUPh/bB+9mAIBZ2PT+uO2EKITY+EY0KIK5pkcjzxzVkUVjf1vCMhPMZpR70mf5ASEhI6bJs0aRLOnz/f7X7z5s3DvHnzehua2fr9YjG+Op4NAHh3/jCMCexdAqIywtcRmx4Jx8rvz+GH03kY6eeEhyO6H/dDiKlokLZi5ffnUC9tRVSQC95+eFiXA+Q1IRIK8MmjIzH/s1Rcv12HZ7edx4//iIKI5hMhRoo+uUStqLoJcbsvAgCenhyMOSP66eS40wd7Yu20AQCA13+5hNyKrmfEJcSUrNt3GbkVjfB2sMJnj43UyZNiEisRvlo6CvZWFkjPq8bHh2/qIFJCuEFJCAGgHAey9scM1Da3YrivI9bEDNDp8Z+e0h9jApzR0CLH6p0ZkNH4EGLifr9YjJ/OFUDAAB8uHAFHG0udHdvX2Qb/+dtQAMDmw5k4m1Ops2MTYkiUhBAAwLbTuTiVVQkbSyE2LRyh8+ZdoYDBBwuHq+/etp7I1unxCeGT6sYWvPaLciDq05P7Y2yQi87fY/Zwbzw0sh8ULPDizxchbZX3vBMhPENJCEFZnRTv7FeuXvz/7h+IAFdbvbyPj5MNXnsgDAAQfzATxTU0qI6Ypnf2X0dlQwsGeNhh1bQQvb3PutmD4WYvRnZ5A748mqW39yFEXygJIdjwx1XUNbdiSD8JHov01+t7zYvwQYS/Expb5Hjrtyt6fS9CuJCeV4XtZ5RP9P3f3KF6HTQqsRLh1QcGAQA2H7mJvIpGvb0XIfpASYiZO5tTid3nC8Ewyi/M3jw6qA2BgMH/zR0CoYBB4l8lOJZZptf3I8SQFAoWr/9yGSwLPDzSp89Pl2li9nBvRAe7QNqqwJu/Xdb7+xGiS5SEmDGWZbEh8SoA4JHRvhihweyNujDIS4IlUcoWlw2J16BQ0NwhxDT8erEIfxXWwF5sgbiZAw3yngzD4M05ysT+4NVSnMmmQarEeFASYsYOXi3F+bxqWIkEWDNNt0/D9OS5+0JgJ7bAleJa/PZXsUHfmxB9aGlV4P0DNwAA/5gUBFe7jutR6Ut/dzssHO0LANj45zWaFJAYDUpCzJRcweLd/dcAAE+MC4S7xMqg7+9sa4mnJgYBAN4/cJ0e2SVGb+fZPORVNsLVTozHx/W8DpaurZoaArGFAOdyq3DoaqnB35+Q3qAkxEztTS/Ejdv1cLAW4R+TgjmJYfn4QLjYWiK3ohE/puVzEgMhutDUIsemQ8pJw56f2r/HhR71wUNipU5+3t1/nbo5iVGgJMQMyRUsPklWfmH+Y1IQHKy5WYraVmyBZ6b0BwB8lnyLFrgjRmvn2TyU10vRz9Eaj4z24yyOf04Khr3YAtdv1yHpKq20S/iPkhAzdOByCbLKGiCxssBiPT+S25O/j/GDi60lCqqa8OvFIk5jIaQ3ZHIF/ndMOfneysnBOpmavbccbERY3Dbo+9PkWzQ2hPAeJSFmhmVZfJp8CwCwNDoA9lbctIKoWFsK8cR4ZRPyp0duURMyMTq/ZBShsLoJrnZizOfB4oxPjA+E2EKAC/nVOHmrgutwCOkWJSFm5lhmOf4qrIG1SMjJ4LnOLI7yh73YApml9ThITcjEiCgULD5r69pcMSEQViIhxxEBrnZiPNL2pMynybS4HeE3SkLMzP+OKad2fmSML5xtdbegVl9IrO40IX+RQlNPE+Nx+FopbpU1wN7KAo+O5W4syL2enBgECwGDEzcrcKmwhutwCOkSJSFmJPN2HY5llkPAKB/L5ZNl0QGwEDA4l1uFvwroS5MYh4STOQCARWP8OO/avJuPkw1mDvUCcCdGQviIkhAz8k1qDgBg2iAP+DrbcBvMPdwlVnhgGH1pEuORebsOx28qk3p9r7nUG8vGBQAA9mUUobxeym0whHSBkhAzUdMkw65zhQDufDnxzbLoAADArxfoS5PwnypZjgnjX1IPAOG+jhju44AWuQI72hbUI4RvKAkxEz+l5aNJJkeohz2igly4DqdT4X5OGO7riBa5AttP05cm4a+aRhl2n29L6qP51bWpwjCM+obju1O5NCsx4SVKQswAy7L4/lQuAOVjuQyj35Vy++LxttaQH07nQU6P6xKe2nW+AE0yOQZ62iMySP8r5fbWzKFecLUT43atFAev0JNnhH8oCTEDqVkVyKlohJ3YAnPDvbkOp1szhnrCyUaEktpmHL1B618Q/mFZFjvOKlvqHh3rx+ukXmwhxIJRyrlLtp+lpREI/1ASYgZ2nFF++cwe4Q0bS8OvaaENsYUQD41s+9I8Q1+ahH/O51Xjxu16WIkEmBPej+tweqRaXfdYZhnyKxs5joaQ9igJMXFVDS3481IJAODvHK5poY2/j1F+aR6+VorS2maOoyGkPdUgzweGekPCo8dyu+LvYotx/V3AssqxYYTwCSUhJm53eiFa5AoM9pZgqI8D1+FopL+7PUb5O0GuYPHTuQKuwyFEra5Zht8uFgO4kywbA9Wiej+mFdBCkYRXOE1CUlJSMGvWLHh7e4NhGOzdu7fb8suWLQPDMB1+Bg8erC6TkJDQaZnmZvO7o2ZZFjvb+q4fGWMcrSAqqnh3ns2nRbgIb+y7UIQmmRz93e0Q4e/EdTgaix3soR5rlZJZxnU4hKhxmoQ0NDRg+PDh2Lx5s0blN23ahOLiYvVPfn4+nJ2dMX/+/HblJBJJu3LFxcWwsrLSRxV47XJRLW7croelhQCzh/N7QOq9HhjqBVtLIfIqG5GWW8V1OIQAgPqx3AWjfHg9IPVeYgsh/hauHGu1q60OhPABp6MUZ8yYgRkzZmhc3sHBAQ4Od7oU9u7di6qqKjz++OPtyjEMA09PT53Faax2nVd2ZcSEecDBmv9913ezthRixlAv/HyuALvPF2J0AH8fgyTmIae8AedyqyBggLkj+D8g9V4PjeyHr09kI+nKbdQ0yYzuO4GYJn4/KtGDLVu2YNq0afD3bz9lcn19Pfz9/SGXyzFixAi89dZbCA8P7/I4UqkUUumdGTpra2sBADKZDDKZTCexqo6jq+P1+H5yBfZlFAEA5gzz1Nv76rNec4Z54udzBfjtYhFeuT8EYgOtUGroc2UIVKe+23VO2bU5LtgFTtZCvbyvPus0wM0aIe62yCxtwG8ZBepHd/WNPnvGQZd10uYYDMuTDneGYbBnzx7MnTtXo/LFxcXw9fXFtm3bsGDBAvX2U6dO4ebNmxg6dChqa2uxadMmJCYm4sKFCwgJCen0WOvWrcP69es7bN+2bRtsbPg3HbMmLlcx+PKaEHYWLN6MkENohEOQFSyw/rwQ1S0MHh8gxwgXXnxUiRliWeCtdCEqpAwW95djlJtxfhYPFjL4NU+IYHsWzw+Rcx0OMVGNjY1YtGgRampqIJFIui1rtEnIhg0b8P7776OoqAiWll0vSa9QKDBy5EhMnDgRH330UadlOmsJ8fX1RXl5eY+/QE3JZDIkJSUhJiYGIpH+m0FX77yI3y+VYGmUH16dOVBv76Pver2flInPU7IxdaAbPn+069YsXTL0uTIEqlPfnMutwiNfnYWtpRAn/98kvc23o+86Fdc0Y9L7KWBZ4MjaCfBxstb5e9yLPnvGQZd1qq2thaurq0ZJiFF2x7Asi6+//hqLFy/uNgEBAIFAgNGjRyMzM7PLMmKxGGKxuMN2kUik8w+YPo55r7pmGQ5eU842Oi/CzyAXib7qNW+ULz5PycbRG+Wob2HhZNv9+dYlQ5wrQ6M69c6vfymnPL9/iBccbPX/h1tfdfJzFSE62AUnblbg90u38ex9nbcO6wN99oyDLuqkzf5G2EgPHD16FDdv3sTy5ct7LMuyLDIyMuDl5WWAyPjh4NXbkLYqEORmiyH9dNOSw5X+7vYI85KgVcHiz8slXIdDzFCrXIE/2ib8mzPCuJ4y68yc4cpBtar5TgjhEqdJSH19PTIyMpCRkQEAyM7ORkZGBvLylAPA4uLisGTJkg77bdmyBWPHjsWQIUM6/Nv69euxf/9+ZGVlISMjA8uXL0dGRgZWrlyp17rwyW8XlF8uDw7zNqrHCLsyq+3x4t8uFnEcCTFHJ29VoLKhBS62logO5ucK1NqYPtgTIiGDayV1yLxdx3U4xMxxmoSkpaUhPDxc/eTK2rVrER4ejtdffx2AcvCpKiFRqampwa5du7psBamursZTTz2FQYMGITY2FoWFhUhJScGYMWP0WxmeqGmUqScjmjXMNFp/HmyrR+qtCpTVSXsoTYhu/XpBmfzOGOoJC2Mc4X0PBxsRJoa4AQB+pdYQwjFOx4RMnjy529kwExISOmxzcHBAY2PXizB9+OGH+PDDD3URnlHaf7kEMjmLgZ72CPGw5zocnfB1tsFwX0dcyK/GH5eKsSQqgOuQiJmQtsqxv60b8MFhxt8Vo/LgcC8culaK3y4WYc20EJNoMSXGyfjTetLOr21dFrOMbIbUnqhadVR3pYQYwrEb5ahtboWHRGxSE+ZNG+QBsYUAWWUNuFJcy3U4xIxREmJCKuqlOHmrAsCdLgxT8UBbfc7mVKG4ponjaIi5UI1DmjnUC0KB6bQW2FuJMCXUHQANUCXcoiTEhBy6Wgq5gsVgbwn8XWy5DkenvBys1QuGJV25zXE0xBy0tCpwqO1R9weGmlZSDwAz2xL7/fTUGeEQJSEm5MAV5ZfJ9MGmuW7O9MEeAIADlykJIfp3OrsCdc2tcLUTI9zPeFbM1dSUUDeIhAyyyhpws7Se63CImaIkxEQ0SFuRklkOQLlstymKDVMmV6eyKlDTaDprNhB+UiW7MWHuJtUVo2JvJUJ0sCsAag0h3KEkxESk3ChDS6sCfs42CDWRp2LuFeBqi1APe7QqWBy+Tq0hRH8UClbdsqhKfk2RqtX0AHVxEo5QEmIiVF8i0wd7mPTjdrHUJUMM4GJhDW7XSmFrKUR0f+OfoKwr08LcwTDAhfxqlNQ0cx0OMUOUhJgAmVyBQ1eVf5RjTXQ8iIrqrjT5ehmaZbQKKNGPA23dE5MHukNsIeQ4Gv1xt7dCuK8jACDpCnXJEMOjJMQEnMmuRG1zK1xsLTHSBAfQ3W1IPwm8HazQJJPjeNsYGEJ0TdWyGBtmmuOr7kZdMoRLlISYANWgsmmDPExyAN3dGIZRt/YcoDs3oge3yupxs7QeIiGDKQPduQ5H71TXU+qtCtQ00YBvYliUhBg5lmXV4yOmDzH9uzbgzt3pwaulaJUrOI6GmBrV9RQV7AqJlWkt096ZQFdbhLjboVXB4kjbvCiEGAolIUbur8IalNQ2w8ZSqH7cztSNCXSGg7UIlQ0tOJdbxXU4xMTceSrGPJJ64O4uGWpdJIZFSYiRU921TQ51g5XIdAfQ3c1CKMDUQcpmcurHJrpUWtuM9LxqAECMGSUhqqfOaMA3MTRKQoycajyIKc9l0BlVffdfLul2JWZCtKFKakf4OsJDYsVxNIYztJ8DPCVWaGyR48RNGvBNDIeSECOWVVaPzNJ6WAjMYwDd3SYOcIXYQoCCqiZcLa7jOhxiIu7Mt2NeSb1ywDfNwUMMj5IQI3boqnIQWWSQCxysTX8A3d1sLC0wcYAbAODgVfrSJH3XIG1F6i1lK4A5dcWoqBKvQ9duQ6Gg1kViGJSEGLHkG8ok5D4zawVRUdU7+TqN6Cd9d+JmOWRyFv4uNgh2M61VqDUxOsAZtpZClNe34HJRLdfhEDNBSYiRapC24kx2JQDloFRzpKp3Rn41qhpaOI6GGLvkG2UAgMkD3Ex66YOuWFoIMK6/8gk7SuyJoVASYqRUd21+zjYIdDW/uzYA8HKwRqiHPRQskJJZxnU4xIixLIvktjkyJoeaZ8sicKfuRygJIQZCSYiRUt+1hZrnXZuKqjXk6HVKQkjvZZbWo6imGZYWAkQGme6CdT25u3WxupFaF4n+URJihFiWVf/RnWLGd23AnTu3ozfKaDAd6TVV90NUkAusLc1jvp3OeDve3bpIj+oS/aMkxAhlltajsLrJ7O/aAGBUgBPsxBaoaGjBpaIarsMhRurItTsti+ZO9TugcSHEECgJMUKqL4dIM79rAwCRUIBx/ZWJmOoPCSHaqJe2Ii1XNcjbvFsWAWDSXV2c1LpI9I2SECOUfP3OKH5y5w+H6pFlQrRx96O55jrI+26j/JWP6lLrIjEETpOQlJQUzJo1C97e3mAYBnv37u22fHJyMhiG6fBz7dq1duV27dqFsLAwiMVihIWFYc+ePXqshWHVS1txNkd512Zus6R2hR7VJX2halk09/FVKpYWAowPUT2qS62LRL84TUIaGhowfPhwbN68Wav9rl+/juLiYvVPSEiI+t9SU1OxcOFCLF68GBcuXMDixYuxYMECnD59Wtfhc4Lu2jrycrDGQE97sPSoLtESy7LqP7STaDyImrp1kcaFED2z4PLNZ8yYgRkzZmi9n7u7OxwdHTv9t/j4eMTExCAuLg4AEBcXh6NHjyI+Ph7bt2/vS7i8QF0xnZsU6oZrJXVIvl6GOSP6cR0OMRI3btejuKYZYgsBosx8kPfdVK2L6W2ti062lhxHREwVp0lIb4WHh6O5uRlhYWF49dVXMWXKFPW/paamYs2aNe3KT58+HfHx8V0eTyqVQiqVql/X1iqnLJbJZJDJZDqJWXWcvhyPZVkcuaZcJ2V8f2edxdYXuqiXLkwIdsYXR7Nw9EYppNIWCAS9nzuFL3XSJapT5w5eKQYAjA10ghAKyGQKncTWW3w5T642FhjgbocbpfU4cq0Es4Z59fpYfKmTLlGdNDuWJowqCfHy8sKXX36JiIgISKVSfPfdd5g6dSqSk5MxceJEAEBJSQk8PNovPuXh4YGSkpIuj7thwwasX7++w/YDBw7AxsZGp3VISkrq9b5FjUBJrQVEDIvq62eReFOHgfVRX+qlC3IFIBYKUdkgwxc//wF/u74fk+s66QPVqb09lwUABHCTlSIxMVF3QfURH86Tr4UANyDA9iMXICxI7/Px+FAnXaM6da6xsVHjskaVhISGhiI0NFT9OioqCvn5+XjvvffUSQiADjOIsizb7ayicXFxWLt2rfp1bW0tfH19ERsbC4lEopPYZTIZkpKSEBMTA5Godyve/u94NnAhE1H9XTF3VoRO4uorXdRLV/6sy8CBK6VodQvFzCnBvT4On+qkK1SnjuqaW/Gv00cAsPjn3Enwd9HtDUdv8Ok8uWRX4tDXabjVJMb990/udesin+qkK1Sn7ql6EzRhVElIZyIjI/H999+rX3t6enZo9SgtLe3QOnI3sVgMsVjcYbtIJNL5B6wvxzxxSzWXgQfvPvj6+F1p676BHjhwpRQnblVibezAPh+PD3XSNarTHWk3KtCqUA7y7u/poIfIeo8P52lssBvsxBaobJAhs7wJQ/r17XfEhzrpGtWp62NoyujnCUlPT4eX153+yqioqA7NSQcOHEB0dLShQ9OpZpkcZ3OqAAATB7hyHA0/qR4rzMivRl2z6fTVEv04cVM5LfmEELqeOiMSChAZ5AwAOH6TpnAn+sFpS0h9fT1u3rwzsCE7OxsZGRlwdnaGn58f4uLiUFhYiG+//RaA8smXgIAADB48GC0tLfj++++xa9cu7Nq1S32MVatWYeLEidi4cSPmzJmDX375BQcPHsTx48cNXj9dOptTiZZWBTwkYgS76WDAgwnycbJBgIsNcioacSqrEjFhXbd+EXKs7Q/r+P6UhHRlXH9XHLxaiuOZ5Vg5qfddnIR0hdOWkLS0NISHhyM8PBwAsHbtWoSHh+P1118HABQXFyMvL09dvqWlBS+88AKGDRuGCRMm4Pjx4/j999/x0EMPqctER0djx44d2Lp1K4YNG4aEhATs3LkTY8eONWzldOy4+gvTvFfN7YmqNeQE3bmRbhRVNyGrrAECBogKoiSkK6pWojM5lWiWyTmOhpgiTltCJk+eDJbtem2ChISEdq9ffPFFvPjiiz0ed968eZg3b15fw+MV1R/V8SE0l0F3xvd3xfen8qj5mHRLdT0N9XGEg41p9enrUrCbHTwkYtyuleJcbhXGUasR0TGjHxNiDiobWnC5SDnamL4EuhcV5AoBA9wsrUdxTRPX4RCeUiWpE+h66hbDMBjfXzlx2bFMSuyJ7lESYgRO3ioHywKhHvZwt7fiOhxec7ARYaiPIwDgxM0KboMhvMSyrLolhJL6nqlaX6mLk+gDJSFGgL4wtTO+v/JL8zitI0M6cf12HcrrW2AtEmKkvyPX4fDeuGDl986lohpaIJLoHCUhPMeyrLoZlB4l1Iyq+fj4zYpuxxwR83S87XoaE+gMsYWQ42j4z11ihVAP5QKRJ29R6yLRLUpCeC6vshEFVU2wEDAYE+jMdThGYaS/I6xEApTXS3Hjdj3X4RCeOU6P5mpN1QpLA76JrlESwnOqi36knxNsxUY/wa1BiC2EGBOo7JI5Rl0y5C4trQqczlLOPEzdm5pTjQs5fpOuJ6JblITwnKrpeDx1xWhF9dQDDaYjdzufV4UmmRyudpYY6GnPdThGY2ygCywEDPIrm5BXofniZIT0hJIQHpMrWHUfLN21aUf1+zqdrZxplhDgTlIaHeza6wXZzJGt2AIj/ZwAAMeoNYToECUhPHa5qAY1TTLYiy0w3IdfC2zx3UBPe7jaWaKxRY70vCquwyE8oR4PQi2LWqPZiIk+UBLCY6qnYiKDXWAhpFOlDYGAQXQwfWmSO2qaZLiQXw2AWhZ7Q/U7O3mrAnIFPXVGdIP+svHYCRrF3yeq39sxSkIIgFNZFVCwQJCrLfo5WnMdjtEZ7uMAe7EFqhtluFxUw3U4xERQEsJTzTI50nKV3Qh019Y749qajy8W1KCuWcZxNIRrJ2nSvz6xEAowNkg1eyrNF0J0g5IQnjqfV4WWVgXc7MUIdrPlOhyj1M/RGn7ONpArWJzNqeQ6HMKx1CzlH86oYFoEsrdUvzvV75KQvqIkhKdOtT0VExXkAoahUfy9FdV255ZKMz2atbsnrosMoiSkt1TXU1pOJWRyeuqM9B0lITylutOIpru2PonuT3duRDkeBFA+NeVsa8lxNMZroKc9nGxEaGyR42JBNdfhEBNASQgPNbXIkdE2ip+ajvtGded2uagWNY00LsRcqVrC6HrqG4GAUbckUesi0QVKQngoLbcSMjkLbwcr+DnbcB2OUXOXWCHIzRYsC5zOpi9Nc6UeD0JdMX1G40KILlESwkOqO4zIYBoPogvqcSH0pWmWbtc2I6usAQyjnH6c9M2dcSFVkLbKOY6GGDtKQniI7tp0S33nRs3HZkk1HmSwtwQONiKOozF+/d3t4GonhrRVgYy8aq7DIUaOkhCeqZe24mKBciIg6r/WDVUf9rWSOlQ2tHAcDTG01FuU1OsSwzCIDHIGQK2LpO96lYTIZDLk5+fj+vXrqKyk+Rd06WxOJeQKFr7O1vBxovEguuBqJ8YADzsAwGn60jQ7ND+I7lHrItEVjZOQ+vp6fPHFF5g8eTIcHBwQEBCAsLAwuLm5wd/fH08++STOnj2rz1jNwim6a9MLGhdingqrm5Bb0QihgMHoAGeuwzEZquspPa8azTIaF0J6T6Mk5MMPP0RAQAD+97//4b777sPu3buRkZGB69evIzU1FW+88QZaW1sRExOD+++/H5mZmfqO22SdpEcJ9YLu3MyT6nwP6ecAeysaD6Irga628JCI0SJX4HwurVJNes9Ck0InT57EkSNHMHTo0E7/fcyYMXjiiSfw+eefY8uWLTh69ChCQkJ0Gqg5qGm6szBUVBCtb6FLYwNdwDBAZmk9yuqkcLMXcx0SMQAaD6IfDMMgKsgFezOKkJpVgWhaj4f0kkYtIT/99FOXCcjdxGIxnn76aaxYsUKjN09JScGsWbPg7e0NhmGwd+/ebsvv3r0bMTExcHNzg0QiQVRUFPbv39+uTEJCAhiG6fDT3NysUUxcOpNdCQWrvMvwdLDiOhyT4mRriYGeEgB3npYgpo1lWfW5ppZF3aPWRaILGo8JmTt3Ln777TcoFLpbL6ChoQHDhw/H5s2bNSqfkpKCmJgYJCYm4ty5c5gyZQpmzZqF9PT0duUkEgmKi4vb/VhZ8f+Punp+ELpr0wsaF2Je8iubUFjdBAsBg1H+TlyHY3JUrbUXCqrR2NLKcTTEWGnUHQMATU1NmDt3Ltzd3bFs2TI8/vjjfe5ymTFjBmbMmKFx+fj4+Hav//vf/+KXX37Br7/+ivDwcPV2hmHg6enZp9i4QKP49Ssq2AVfn8hWD/4lpi01qxwAMNzXEbZijb/qiIZ8na3Rz9EahdVNSMupwsQBblyHRIyQxlfm/v37UVBQgK1bt+Kbb77Bxo0bMW7cOKxYsQLz58+HtbW1PuPslEKhQF1dHZyd2496r6+vh7+/P+RyOUaMGIG33nqrXZJyL6lUCqlUqn5dW1sLQPkoskymm/VGVMfp6nhVjS24Wqx831G+Ep29r771VC8+GeljDwEDZJU3IL+iDp6SzlvHjKlOmjLHOp3IVCYhYwIcjabexnaexgQ6YU96E05kliEq0LHTMsZWJ01QnTQ7liYYlmXZ3rzJkSNH8PXXX2PPnj0QCoV45JFH8MQTT2Ds2LG9ORwYhsGePXswd+5cjfd599138fbbb+Pq1atwd3cHAJw6dQo3b97E0KFDUVtbi02bNiExMREXLlzosuVm3bp1WL9+fYft27Ztg42NYebquFjJYMt1ITysWbw8gh5505f3LgqR38BgSYgcEa69+ugTI8CywLrzQlS3MHh6kByhjnSu9eFMKYMfbgkRYMdizVD63iJKjY2NWLRoEWpqaiCRSLot2+skRKWurg7btm3Dyy+/jJqaGrS29q5vUNskZPv27VixYgV++eUXTJs2rctyCoUCI0eOxMSJE/HRRx91WqazlhBfX1+Ul5f3+AvUlEwmQ1JSEmJiYiASdXxU8L9/XMfWk7l4ZLQP3podppP3NISe6sU3mvyeja1OmjC3OuVXNeK+D47DQsDg3CtTYGNpHN0xxnaeNPk9G1udNEF16l5tbS1cXV01SkL6dGVmZWUhISEBCQkJqKmp6TYZ0KWdO3di+fLl+Omnn3p8T4FAgNGjR3c7d4lYLIZY3PGRTZFIpPMPWFfHPNv2rH1UsKtRfqj18bvSh6hgV2w9mYu03Ooe4zWWOmnDXOp0Pr8OADDUxwEOtobvKu4rYzlPgW4SeDtYoaimGZeKGzCum0d1jaVO2qA6dX0MTWk9bXtTUxO+/fZbTJkyBSEhIfjuu++wYsUKZGdn488//9T2cFrbvn07li1bhm3btuGBBx7osTzLssjIyICXl5feY+ut2mYZrhQpx4PQKp/6NSZQOX7oZmk9yuulPZQmxko1PT9dT/rFMAzGtj11RksikN7QuCXk5MmT2Lp1K3788Ue0tLRg7ty52L9/f59aP+rr63Hz5k316+zsbGRkZMDZ2Rl+fn6Ii4tDYWEhvv32WwDKBGTJkiXYtGkTIiMjUVJSAgCwtraGg4MDAGD9+vWIjIxESEgIamtr8dFHHyEjIwOffPJJr+PUt3O5VVCwgL+LDc0PomeONpYY6GmPayV1OJNdiZlD+Zuckt47k6Nc02psIE3Vrm9jAp2xJ70Qp7JpHTGiPY1bQsaPH4+0tDT85z//QVFREbZv397n7pe0tDSEh4ern1xZu3YtwsPD8frrrwMAiouLkZeXpy7/xRdfoLW1Fc888wy8vLzUP6tWrVKXqa6uxlNPPYVBgwYhNjYWhYWFSElJwZgxY/oUqz6dzlJevGNobQuDUP1hOkNfmiappKYZuRWNEDBARADND6JvquspI5/WkSHa07glJC0tDSNHjtTpm0+ePBndjYtNSEho9zo5ObnHY3744Yf48MMP+xiZYZ3Jbms6pknKDGJskAu+Sc2lmVNN1Om26ynMWwIJrRejd4GutnCzF6OsTooL+dX0PUa0onEScncC0tzcjIsXL6K0tLTDDKqzZ8/WXXRmoLGlFRcLlOvFUNOxYahWU71+uw7VjS1wtLHkOCKiS6oWrjEB9MfQEBiGwZhAZ/x+sRinsyspCSFa0frpmD///BNLlixBeXl5h39jGAZyOTXHaSM9rxqtChbeDlbwcTK+UfzGyM1ejGA3W9wqa8CZ7ErEDja+2XVJ11RJyNggSuoNJVKdhFQAoMVLiea0fjrm2Wefxfz581FcXAyFQtHuhxIQ7alGlI8JdAbDMBxHYz5Ud2s0LsS0VNRLkVlaD+BOixfRP9X1dC63Ci2tultfjJg+rZOQ0tJSrF27Fh4eHvqIx+ycVjUd06OEBqXq+jpNSYhJOdv2VMwADzs421I3m6H0d7ODk40IzTIF/iqs4TocYkS0TkLmzZun0QBR0rNmmRzp+dUAqOnY0FTzR1wuqkFts+ms/2DuVEklzQ9iWAIBo56DRzUwmBBNaD0mZPPmzZg/fz6OHTuGoUOHdpgZ7fnnn9dZcKbuYkENWloVcLUTI8jVlutwzIqngxX8XWyQW9GIc7lVmBLqznVIRAfUj7vTIG+DGxvogv2Xb+NMdiWensx1NMRYaJ2EbNu2Dfv374e1tTWSk5PbjWNgGIaSEC3cmdWRxoNwYUyAM3IrGnE6q5KSEBNQ0yTD1RLVzMOUhBiaKvFLy6lCq1wBC6HWDe3EDGn9KXn11Vfx5ptvoqamBjk5OcjOzlb/ZGVl6SNGk6Wa1ZHu2rihnm6amo9NwrncSrCsct4KdwnNPGxog7wksLeyQL20FVeKa7kOhxgJrZOQlpYWLFy4EAIBZbl9IZMrcK5t0ToaD8IN1d3yXwU1aGzp3erPhD9o5mFuCQWM+ndPT50RTWmdSSxduhQ7d+7URyxm5VJhDRpb5HC0EWGAuz3X4ZglHydreDtYoVXB4nxuNdfhkD6686QZJSFcUf3uT2VREkI0o/WYELlcjnfeeQf79+/HsGHDOgxM/eCDD3QWnClT3SmMDnCGQEDjQbigWgF0T3ohTmdXYHxI18uQE35rkLbiUtujodSyyB1VF+fZnEooFCx9t5EeaZ2E/PXXX+oF5y5dutTu32hwpebuPEpIX5hcGtu2AijNF2LczudVoVXBop+jNXycbLgOx2wN8ZbA1lKImiYZrt+uwyAvCdchEZ7TOgk5cuSIPuIwK3IFq55UieYz4Jbqzk21AqiVSMhxRKQ3zlBXDC9YCAWICHBGyo0ynM6qoCSE9IhGl3LganEt6ppbYSe2wCAvGg/CpQAXG7jZi9HSqkBG28RxxPhQyyJ/0GzERBsaJSErV65Efn6+RgfcuXMnfvjhhz4FZepUd22jApzoWXqOMQxz50uTBtMZJalMrk4gqSWEe6rr6Ux2JViW5Tgawncadce4ublhyJAhiI6OxuzZszFq1Ch4e3vDysoKVVVVuHLlCo4fP44dO3agX79++PLLL/Udt1FTzUtBX5j8MDbIBb9dLMaZHFoB1BhdKFTOPOxmL0YgzTzMuWE+jhBbCFDR0IJbZfXwd6I5W0jXNLoNf+utt5CZmYmJEyfi888/R2RkJPz8/ODu7o7Q0FAsWbIEWVlZ+Oqrr5CamoqhQ4fqO26jxbLsnaXGaTwIL6ju3GgFUON0NqcaAK1EzReWFgKM9HMCQI/qkp5pPDDV3d0dcXFxiIuLQ3V1NXJzc9HU1ARXV1cEBwfTxa+hm2UNqGqUwUokwNB+DlyHQwCEuCtXXK1saMFfhdUY5k3jdIzJmRwaD8I3Y4OckZpVgdPZlVgY4c11OITHtH46BgAcHR3h6Oio41DMw5kc5SypEf5OsLSg8SB8wDDKmR7/vFyCU1mVlIQYEbkCSM+rBkAti3yiPBeZOJ1VQeNCSLfor6CBnW1LQsYE0Bcmn4wJpOmmjVF+A9AkU8DRRoQQdzuuwyFtwv0cYSkUoLROirzKJq7DITxGSYgBsexdSQg1HfOKapbNc7nKFUCJcbhVq+wGppmH+cVKJMRwX2V3s6r1l5DOUBJiQOXNQGmdFJZCAcL9HLkOh9xloOedFUCvldRzHQ7R0M22JITGg/CP6kbrbC4lIaRrlIQYkOoLc7ivA83MyTNCAYPRqhVAc6hLxhjIFSyy61RJCHVv8s2YtnNylro4STd6lYS0trbi4MGD+OKLL1BXVwcAKCoqQn093UF25xZ9YfKa6m76LDUfG4VrJXVokjOwFQtp5mEeivB3glDAoKC6GZVSrqMhfKV1EpKbm4uhQ4dizpw5eOaZZ1BWVgYAeOedd/DCCy9odayUlBTMmjUL3t7eYBgGe/fu7XGfo0ePIiIiAlZWVggKCsLnn3/eocyuXbsQFhYGsViMsLAw7NmzR6u49EXVf03jQfhJdV7ScquhoAH9vKdq5h/lRzMP85Gd2AJDvJVrx2TV0ngd0jmtr9xVq1Zh1KhRqKqqgrW1tXr73/72Nxw6dEirYzU0NGD48OHYvHmzRuWzs7Mxc+ZMTJgwAenp6Xj55Zfx/PPPY9euXeoyqampWLhwIRYvXowLFy5g8eLFWLBgAU6fPq1VbLpWWN2ESikDoYBBhL8Tp7GQzg3p5wAbSyGqm2QoaeQ6GtKTM9nKJGR0AF1PfKVK7G9SEkK6oPU8IcePH8eJEydgaWnZbru/vz8KCwu1OtaMGTMwY8YMjct//vnn8PPzQ3x8PABg0KBBSEtLw3vvvYeHH34YABAfH4+YmBjExcUBAOLi4nD06FHEx8dj+/btWsWnS6om/sHe9rAV92p6FqJnIqEAEf5OOJZZru46I/zEsizScikJ4buxgS7437FsdSswIffS+q+hQqGAXC7vsL2goAD29vrtl01NTUVsbGy7bdOnT8eWLVsgk8kgEomQmpqKNWvWdCijSlw6I5VKIZXe6bSsra0FAMhkMshkMp3EfjpLuV7MKF8HnR2TD1R1MZU6Rfg5KpOQWsZk6gSY3nnKLK1HVaMMIgGLUHdrk6mXqZ2nET72YACUNjMormqAl5NprO1jaucJ0G2dtDmG1klITEwM4uPj1YvUMQyD+vp6vPHGG5g5c6a2h9NKSUkJPDw82m3z8PBAa2srysvL4eXl1WWZkpKSLo+7YcMGrF+/vsP2AwcOwMbGRiexN1cw6GcjgEVVDhITs3VyTD5JSkriOgSdkNcCgAVu1jI4cCAJprYagamcp+MlDAAhAuxYHD2sXTewMTCV8wQAXjZCFDUy+Pq3FIS7mNZgK1M6Tyq6qFNjo+b92VonIR9++CGmTJmCsLAwNDc3Y9GiRcjMzISrq6tBujvuXaNGNSXw3ds7K9Pd2jZxcXFYu3at+nVtbS18fX0RGxsLiUSii7ARI5MhKSkJMTExEIlEOjkmH8hMrF5SmRxfXDuCOpkCAyLGIcTTNNb3MbXzdODHiwBK0F/CmkydANM7TwBwRn4ZP5wpRIuDH2bOHMx1ODphiudJl3VS9SZoQuskxNvbGxkZGdi+fTvOnz8PhUKB5cuX49FHH203UFUfPD09O7RolJaWwsLCAi4uLt2Wubd15G5isRhisbjDdpFIpPMPmD6OyQemUi+RSIThvg44m1OF9II6hPm6ch2STpnCebp7PEiwxDTqdC9TqtPYQBf8cKYQ5/NqTKZOKqZ0nlR0USdt9u/Vc23W1tZ44oknsHnzZnz66adYsWKF3hMQAIiKiurQVHTgwAGMGjVKXemuykRHR+s9PmIaRrc9vUTTTfNTbkUjbtdKIRIy8LczreZ9U6QaOHy9tB7VjS0cR0P4RuuWkH379nW6nWEYWFlZoX///ggMDNToWPX19bh586b6dXZ2NjIyMuDs7Aw/Pz/ExcWhsLAQ3377LQBg5cqV2Lx5M9auXYsnn3wSqamp2LJlS7tuoFWrVmHixInYuHEj5syZg19++QUHDx7E8ePHta0qMVNjAp3w6VGatIyvVIsMDvdxgKWwnONoSE9c7cTwsGZxu4nB2ZwqxIR13SpNzI/WScjcuXPBMEyH5ZlV2xiGwfjx47F37144OXX/6FxaWhqmTJmifq0al7F06VIkJCSguLgYeXl56n8PDAxEYmIi1qxZg08++QTe3t746KOP1I/nAkB0dDR27NiBV199Fa+99hqCg4Oxc+dOjB07VtuqEjMV7usAAcOiqKYZ+ZWN8HXWzeBkohun25KQ0f5OgIySEGMQbK9MQk5nVVASQtrRujsmKSkJo0ePRlJSEmpqalBTU4OkpCSMGTMGv/32G1JSUlBRUaHR7KmTJ08Gy7IdfhISEgAACQkJSE5ObrfPpEmTcP78eUilUmRnZ2PlypUdjjtv3jxcu3YNLS0tuHr1Kh566CFtq0nMmI2lBfzaniQ8Q+te8M7pbOXj7jQ/iPEIlihvWmldJnIvrVtCVq1ahS+//LLdGIupU6fCysoKTz31FC5fvoz4+Hg88cQTOg2UEEMKlrDIqWdwJrsSD0f4cB0OaVNY3YSCqiYIBQzC/RyRksl1REQTqiTkUmEN6qWtsKMJG3njo0OZEAoYzBrKTQuV1i0ht27d6vSxVYlEgqysLABASEgIysupmZQYL9WXpuqum/DDmbbzMdhbQn/IjIiTGPBxsoaCBdKoNYQ3FAoWX5/Ixrv7r6OktpmTGLROQiIiIvDvf/9bvXAdAJSVleHFF1/E6NGjAQCZmZnw8aG7R2K8guxZMAyQU9GI2xxdnKQjVffYWFoE0uiMaes+oy5O/rhRWofqRhlsLIXqxQYNTeskZMuWLcjOzoaPjw/69++PkJAQ+Pj4ICcnB1999RUA5VMvr732ms6DJcRQrC2AQZ7KZQjoS5M/TmepkhAXjiMh2hpNSQjvqM5FhL8TRBytRK11e2ZoaCiuXr2K/fv348aNG2BZFgMHDkRMTAwEAmUl5s6dq+s4CTG40QFOuFJch9PZFZg13JvrcMxeaW0zssobwDDA6ABqCTE2qiTkQkE1mlrksLYUchwRUSX1Yzi8nnrVqcowDO6//37cf//9uo6HEN4YE+CEb1Lz6M6NJ1RPVgz0lMDBRmRSi4eZAz8na3hKrFBS24z0/CpEB5vWbMTGhmVZ9Zi3sUHctSz2KglpaGjA0aNHkZeXh5aW9jPgPf/88zoJjBCuRbTNnHrjdj0qG1rgbGvJcUTm7U5XDLWCGCOGYTAm0Bn7LhThTHYlJSEcu1XWgPL6FlhaCDDc1wFgFZzEoXUSkp6ejpkzZ6KxsRENDQ1wdnZGeXk5bGxs4O7uTkkIMRkutpYIcbdDZmk9zmRX4v4hnlyHZNZUd22RQZSEGCtVEqJKKAl3VC284b6OEFsIIZNxk4RoPRJlzZo1mDVrFiorK2FtbY1Tp04hNzcXEREReO+99/QRIyGcGdv2B4+6ZLhV2dCCG7frAdB4EGOmSiDP51WhpZWbP3pEiQ9dMUAvkpCMjAz861//glAohFAohFQqha+vL9555x28/PLL+oiREM6MaXsK40wOzRfCJVUSGOJuBxe7jiteE+MQ7GYHZ1tLSFsV+KuwmutwzBbLsurWqEiOuze1TkJEIhEYhgEAeHh4qNd2cXBwaLfOCyGmQDX+4EpRLWqbaSAkV+7ctVEriDFjGEb9JMYp6pLhTH5lE0pqmyESMgj343b5A62TkPDwcKSlpQEApkyZgtdffx0//PADVq9ejaFDh+o8QEK45CGxQoCLDRQscI5W1eWMqiVkDM0PYvSoi5N7p9qS+mE+jpw/Kq11EvLf//4XXl5eAIC33noLLi4u+Oc//4nS0lJ88cUXOg+QEK6NaWsNOUVTuHOipkmGK8W1ALhvOiZ9p7qe0nIq0SqncSFc4NOTZlo/HTNq1Cj1/7u5uSExMVGnARHCN2MCXfBjWgHduXEkLacSLAsEutrCXWLFdTikjwZ6SmBvZYG65lZcKa7FMB9HrkMyO6oxbmN4kIRo3RJy3333obq6usP22tpa3HfffbqIiRBeUd0t/FVQg8aWVo6jMT/qrhh6KsYkCAV3xoVQYm94RdVNyK9UrkQ9igfXlNZJSHJycocJygCgubkZx44d00lQhPCJj5M1vB2s0KpgcT63mutwzM4p1aJ1NCjVZKi7OGlwqsGpBnkP4clK1BpHcPHiRfX/X7lyBSUlJerXcrkcf/75J/r166fb6AjhAdVMj3szinAmuwLjQ2imR0Opl7biUmENAO7nMyC6o0pCzuZUQqFgIRAwHEdkPtTrxfCgKwbQIgkZMWIEGIYBwzCddrtYW1vj448/1mlwhPDF2CAX7M0owmlqPjao87lVkCtY9HO0Rj9Ha67DIToypJ8DbCyFqGmS4UZpHQZ6crOMvDlSdYHxZSVqjZOQ7OxssCyLoKAgnDlzBm5ubup/s7S0hLu7O4RCWhWRmCbVXUN6fjWaZXJYieizbgg0P4hpEgkFiPB3wrHMcpzOqqQkxEDarURtbC0h/v7+AACFgh6pIuYnyNUWrnZilNdLcbGghjdNmabuzqyO/LhrI7ozNtAZxzLLcSa7EkujA7gOxyyoWnIHeUrgYC3iOBoljZKQffv2aXzA2bNn9zoYQviKYRiMDXTG738V40x2BSUhBtDUIseFgmoA/Om/JrqjmnjudHYlWJZVz8RN9OfOpH/8uZ40SkLmzp2r0cEYhoFcLu9LPITw1pi2JOR0diWe5ToYM5CeXwWZnIWHRAx/FxuuwyE6NszHAZYWApTXS5FV3oBgNzuuQzJ5fFyJWqNHdBUKhUY/lIAQU6Yal3AutwoymulR7+7M6uhCd8kmyEokRLivIwCaL8QQ+LoStdbzhBBirga428PBWoTGFjkuF9VyHY7JU9218anpmOiWaiJASkL070zb9cS3lah7lYQcPXoUs2bNQv/+/RESEoLZs2f3eqKyTz/9FIGBgbCyskJERES3x1m2bJn6MeG7fwYPHqwuk5CQ0GmZ5ubmXsVHiIpAwKjvIE5n0Toy+iRtlSM9rxoAv5qOiW6px4VkVYBlWY6jMW2neTrpn9ZJyPfff49p06bBxsYGzz//PJ599llYW1tj6tSp2LZtm1bH2rlzJ1avXo1XXnkF6enpmDBhAmbMmIG8vLxOy2/atAnFxcXqn/z8fDg7O2P+/PntykkkknbliouLYWVFa06QvoukFUAN4mJBDaStCrjYWtJYARM20t8RFgIGRTXNKKhq4jock3Z39yafaD1n63/+8x+88847WLNmjXrbqlWr8MEHH+Ctt97CokWLND7WBx98gOXLl2PFihUAgPj4eOzfvx+fffYZNmzY0KG8g4MDHBwc1K/37t2LqqoqPP744+3KMQwDT09PbatGSI9UXQNnciohV7AQ0kyPeqFqaRoT6EzjQUyYjaUFhvo4ID2vGmeyK+HrTAOQ9aGmUYarJcouZD6snHs3rZOQrKwszJo1q8P22bNn4+WXX9b4OC0tLTh37hxeeumldttjY2Nx8uRJjY6xZcsWTJs2TT2HiUp9fT38/f0hl8sxYsQIvPXWWwgPD+/yOFKpFFKpVP26tlZ5smQyGWQymaZV6pbqOLo6Hl+YYr26q1OIqzVsxULUNbfir/xKDPY2jkmWjO08pd5SJiGj/B27jNnY6qQJc6zTKD9HpOdV4+StMswe5mHI0HrN2M5T6q1SsCwQ4GIDJ2thp3Hrsk7aHEPrJMTX1xeHDh1C//79220/dOgQfH19NT5OeXk55HI5PDzaf+g8PDzarUvTleLiYvzxxx8duoAGDhyIhIQEDB06FLW1tdi0aRPGjRuHCxcuICQkpNNjbdiwAevXr++w/cCBA7Cx0W1mnpSUpNPj8YUp1qurOvlZC3BVKkBC4glM8TaufmxjOE+tCuBsthAAg5b8S0isvNRteWOok7bMqU6CKgaAEEcuFyJR3HlXPF8Zy3nakyMAIICXsB6JiYndltVFnRobGzUuq3US8q9//QvPP/88MjIyEB0dDYZhcPz4cSQkJGDTpk3aHq5DU6umk9YkJCTA0dGxwxwmkZGRiIyMVL8eN24cRo4ciY8//hgfffRRp8eKi4vD2rVr1a9ra2vh6+uL2NhYSCS6udOVyWRISkpCTEwMRCJ+zFSnC6ZYr57qVCjJxtX9maix8sDMmSM5iFB7xnSe0nKr0HL6LJxsRHji4ZguFzczpjppyhzrNFHaiq/+ewSVUmBY1BT4OPF/jSBjO0+ff5IKoA7zJw3HzGFenZbRZZ1UvQma0DoJ+ec//wlPT0+8//77+PHHHwEAgwYNws6dOzFnzhyNj+Pq6gqhUNih1aO0tLRD68i9WJbF119/jcWLF8PS0rLbsgKBAKNHj0ZmZmaXZcRiMcTijo8siUQinX/A9HFMPjDFenVVp/Eh7nhnfybScqrBCISwEBrPk+7GcJ7O5ipXzY0KdoFY3P31DRhHnbRlTnVyEokwrG1cyNm8GgS6G0cXJ2Ac56m6sQXXbtcBUH539RSvLuqkzf69+vb829/+huPHj6OiogIVFRU4fvy4VgkIoFz0LiIiokPTT1JSEqKjo7vd9+jRo7h58yaWL1/e4/uwLIuMjAx4eXWe/RGircHeDrC3skCdtJXmC9ED1XiQqGBXjiMhhhIVpHxi49QtevRd105lVYJlgf7udnCX8O8pUa2TkMcffxyHDh3SyTPda9euxVdffYWvv/4aV69exZo1a5CXl4eVK1cCUHaTLFmypMN+W7ZswdixYzFkyJAO/7Z+/Xrs378fWVlZyMjIwPLly5GRkaE+JiF9JRQw6hHmqTRfiE41y+Q4l1cF4M4fJmL6ooKV5zqV5gvRuVNt31F8vZ60TkIqKirwwAMPwMfHB//617+Qnp7e6zdfuHAh4uPj8eabb2LEiBFISUlBYmKi+mmX4uLiDnOG1NTUYNeuXV22glRXV+Opp57CoEGDEBsbi8LCQqSkpGDMmDG9jpOQe0W2XdCpdOemU+l51WhpVcDNXoxgN1uuwyEGMsrfGSIhg+KaZuRWaD6okfTsTssiP5MQrceE7Nu3D9XV1fjxxx+xbds2xMfHIzQ0FI899hgWLVqEgIAArY739NNP4+mnn+703xISEjpsc3Bw6Hbk7YcffogPP/xQqxgI0Zbqgj6bUwmZXAGREY0L4bPUu+7aaH4Q82FtKcQIX0eczalCalYFAlwpAdWFinoprreNB4k0lZYQAHB0dMRTTz2F5ORk5Obm4vHHH8d3333X4bFdQkzVIE8JHG2U68hcLKjhOhyTcYrnd21Ef6KodVHnTrXNkjrQ0x7Otj0P8uZCn27fZDIZ0tLScPr0aeTk5PT4VAshpkJw17iQUzQuRCeaWuRIz6fxIOYqksaF6FxqVjkA/raCAL1MQo4cOYInn3wSHh4eWLp0Kezt7fHrr78iPz9f1/ERwlt056Zb53KrIJOz8HKwgr8LTd9tbkb6OcHSQoCyOilulTVwHY5J4Pt4EKAXY0J8fHxQUVGB6dOn44svvsCsWbNocThillSPkKblVkLaKofYQshxRMZNdddG40HMk5VIiJF+jjiVVYnUrAr0d6eFC/uitLYZt8oawDBAJM8Wrbub1i0hr7/+OoqKirB3717Mnz+fEhBitgZ42MHF1hLNMgUu5NO4kL462XbXFsnjuzaiX1FBysSe5gvpO9Ug7zAvCRxs+DuhmtZJyFNPPQUnJyd9xEKIUWEYhh7V1ZF6aat6gC+NBzFfqm6DUzQupM/UXTE8v57ouUJC+uDOYLpyjiMxbmdzKiFXsPBxsqbl3M3YcF8HWIkEqGhowY3b9VyHY9TUj7vzvGWRkhBC+kB1l3E+rxrNMjnH0RivU0Zy10b0S2whxCj/ttmIb1Fi31tF1U3IrWiEgAFGtz3Fx1eUhBDSB8FutnCzF6OlVYHzbdONE+0Zy10b0b+7p3AnvaPqihnazwESK/6OBwEoCSGkTxiGQXQwjQvpi5pGGS4V3lk5l5i3O+NClF10RHvGNMibkhBC+mhcf+WI/mOZ1HzcG6lZFVCwylYlLwdrrsMhHBvWzwH2YgvUNN1JTonmWJbFiZvK76IJ/d04jqZnlIQQ0kfj25KQiwXVqGmScRyN8Tl+swzAnd8jMW8WQoH6Dv74TUrstXWrrB4ltc2wtBBgVAD/n2SlJISQPvJ2tEaQmy0ULE3h3hsnbip/Z+ND+H/XRgxjQogyIT1BSYjWjre1yI4JcIaViP8TKFISQogOqO7ij1OXjFYKqhqRXd4AoYDB2CB+j+InhqPq4kzLqUJTCz11po3jbUn9OCNpWaQkhBAdUCUhdOemHdXva7gP/0fxE8MJcrWFt4MVWuQKnM2p5DocoyGTK9StscbSvUlJCCE6EBnsAgEDZJU3oLC6ietwjMZx6oohnWAYRn0nT4m95i4WVKNe2gpHGxEGe0u4DkcjlIQQogMSKxGG+zoCAE5Ql4xGFAoWJ9v+wBjLXRsxnPEh9NSZto5ntnXFBLtCIDCORSApCSFERyaoxoXQnZtGrpbUoqKhBTaWQoxoS+AIUYluW6X6SnEtKuqlHEdjHFRPmhnLeBCAkhBCdObu5mMFTbLUI1Uze2SQCywt6KuItOdmL8ZAT3sAwAmaCLBH9dJWpOdVA7jzdJExoCufEB0J93OCjaUQFQ0tuFZSx3U4vGdso/iJ4akf1aUumR6dya5Aq4KFn7ONUS0CSUkIITpiaSHA2LbFomgwXfeaZXKcyTauUfzE8Mbd1cXJstS62B3V2BljS+opCSFEh9RTuFMS0q3zeVVolingZi/GAA87rsMhPDUm0BmWQgEKq5uQU9HIdTi8pp6q3Yi6YgBKQgjRqQltj5qeya6AtJUmWerKibueimEY4xjFTwzPxtICI/0dAdCA7+6U1jbjxu16MAwQFcT/RevuRkkIITo0wMMObvZiNMsUOJdbxXU4vHXcSJuOieHdmY24jONI+EuVoA3xdoCTrSXH0WiH8yTk008/RWBgIKysrBAREYFjx451WTY5ORkMw3T4uXbtWrtyu3btQlhYGMRiMcLCwrBnzx59V4MQAMpJlmgK9+7VNMpwsW11VBoPQnqimsju5K0KtMoVHEfDT6okZLyRdcUAHCchO3fuxOrVq/HKK68gPT0dEyZMwIwZM5CXl9ftftevX0dxcbH6JyQkRP1vqampWLhwIRYvXowLFy5g8eLFWLBgAU6fPq3v6hAC4M4f1hS6c+vUsZtlYFmgv7sdPB2suA6H8NzQfg5wsBahrrkVFwqquQ6HdxQKFik3jHfSP06TkA8++ADLly/HihUrMGjQIMTHx8PX1xefffZZt/u5u7vD09NT/SMU3lkpMD4+HjExMYiLi8PAgQMRFxeHqVOnIj4+Xs+1IURp4gDlndulwlqU1jVzHA3/JF9XJmeTB9BU7aRnQgGjvsNXfXbIHVeKa1FeL4WNpRCjApy4DkdrFly9cUtLC86dO4eXXnqp3fbY2FicPHmy233Dw8PR3NyMsLAwvPrqq5gyZYr631JTU7FmzZp25adPn95tEiKVSiGV3pmRr7a2FgAgk8kgk8k0rVK3VMfR1fH4whTr1dc6OVoJMMRbgktFtThytQQPhffTZXi9wpfzpFCwOHq9FAAwob9zn+LhS510ierUuYn9nfH7xWIcuVaK56cE6Sq0XuPTeTp0pQQAEB3kDAGrgEzWuy4rXdZJm2NwloSUl5dDLpfDw8Oj3XYPDw+UlJR0uo+Xlxe+/PJLREREQCqV4rvvvsPUqVORnJyMiRMnAgBKSkq0OiYAbNiwAevXr++w/cCBA7Cx0e2kL0lJSTo9Hl+YYr36UidvRoBLEGDH0b9gVXxBh1H1DdfnqaABKKu3gKWARfnV00i83vdjcl0nfaA6tdfSAgAWuFRUix17EyHhydhLPpynvZeEABg4t5QgMTGxz8fTRZ0aGzV/nJqzJETl3sfzWJbt8pG90NBQhIaGql9HRUUhPz8f7733njoJ0faYABAXF4e1a9eqX9fW1sLX1xexsbGQSHSzEqFMJkNSUhJiYmIgEpnOkuWmWC9d1MkzrxoH/ncGtxosETt9MiyE3I4B58t5+jQ5C8BNTBjgjtkPhvfpWHypky5Rnbq2ozgVl4vqYOk/HDM5bl3ky3mqbpRhzakjAIBn/jYZ3o7WvT6WLuuk6k3QBGdJiKurK4RCYYcWitLS0g4tGd2JjIzE999/r37t6emp9THFYjHEYnGH7SKRSOcfMH0ckw9MsV59qdOoQFc4WItQ0yTD5ZIGjApw1nF0vcP1eTrWNlX7fYM8dBYH13XSB6pTR1NCPXC5qA7HblZi4ZgA3QXWB1yfp1M5ZVCwyqkB/N10c8Osizppsz9nt2eWlpaIiIjo0PSTlJSE6OhojY+Tnp4OLy8v9euoqKgOxzxw4IBWxySkr4QCRj1AlQbTKdU0ynA+Tzl3yuRQd46jIcZmykDl9XQss5we1W2jHuRtxNcTp90xa9euxeLFizFq1ChERUXhyy+/RF5eHlauXAlA2U1SWFiIb7/9FoDyyZeAgAAMHjwYLS0t+P7777Fr1y7s2rVLfcxVq1Zh4sSJ2LhxI+bMmYNffvkFBw8exPHjxzmpIzFfkwe44dcLRUi+UYoXpof2vIOJS8lU3rWFuNuhXx+ajYl5GuHrpG5dvFBQjQh/frQuckWhYHH0hnKQtzE/acZpErJw4UJUVFTgzTffRHFxMYYMGYLExET4+/sDAIqLi9vNGdLS0oIXXngBhYWFsLa2xuDBg/H7779j5syZ6jLR0dHYsWMHXn31Vbz22msIDg7Gzp07MXbsWIPXj5i3ex/Vdbc37zkxVHdtUwYa710b4Y5QwGBCiCt+u1iMI9fKzD4JuVxUi/L6FthaCnnT3dsbnA9Mffrpp/H00093+m8JCQntXr/44ot48cUXezzmvHnzMG/ePF2ER0ivudmLMbSfA/4qrMHR62WYP8qX65A4o7xro/lBSN9MDnXHbxeLqXURQHLbo+7j+rvC0oLzyc97zXgjJ8QITAltGxdyw7zHhSjv2qRGf9dGuDWJJgJUO9KWhBjzeBCAkhBC9GpS2xfEsRtlZj2YzlTu2gi3VK2LANRTlZuj6sYWZORXAwAmhxp3yyJ9GxCiRyN8HeFoI0JtcyvS2740zJGqJcjY79oI91R/dFUtAeYoJbMcChYI9bDv09wgfEBJCCF6pBxMp3pU1zy/NKsbW5CufjTXuO/aCPdUnyFzbl1MvqbqijH+64mSEEL0TDUu5Mg18xwXYkp3bYR7I3ydzLp1UaFg1St0m0LLIiUhhOjZpAFuEDDK1S4Lq5u4Dsfgkq7cBgBMHmj8d22Ee0IBox6gerDts2VO0vOrUF7fAnsrC0T4G9+qufeiJIQQPXOxE2NU25wGSZe7XkjRFElb5TjS1nQ8fbAnx9EQUxEbpvws7b9cApZlOY7GsA5cViZe9w10N4lB3sZfA0KMQOxg5dpFB8zszu1UViXqpa1wsxdjhI8j1+EQEzEp1A2WQgFyKhpxs7Se63AMhmVZ7G+7kVElYsaOkhBCDED1hXE6uxJVDS0cR2M4B9q+MGPCPCAQdL2SNSHasBNbYFx/FwBQ/1E2BzdL65FT0QhLoQCTTGBQKkBJCCEG4edig4Ge9pArWBy+Zh5PySgUrHo8SGyY5itjE6IJVfeeObUuqhKucf1dYCfmfMJznaAkhBADiVV/aZrHnVtGQTVK66SwF1sgOtiV63CIiZk6yAMMA1wsqEGRmQz4ViVcpjS+ipIQQgxE1Rpw9EYZmlrkHEejf6oBdJNNZAAd4Rc3ezEi/JRPhySZQWtIUXUTLhbUgGGUCZipoG8GQgxksLcE/Ryt0SxT4Fim6c8Zomrxoa4Yoi/Tzah18eBVZaIV4ecEN3sxx9HoDiUhhBgIwzBm85TMzdI6ZJU1wFIoMIlZHQk/xbQluKeyKlHTKOM4Gv1SPxUz2LSSekpCCDEg1VMyh67eNukpp/e3dcVE93eBvZWI42iIqQpwtUWoh3LA96FrppvY1zTKcCqrEoDpPJqrQkkIIQY0OsAJTjYiVDXKcDaniutw9OaA+qkY0/rCJPwzXdW6eNl0k5DD129DrmAR6mGPAFdbrsPRKUpCCDEgC6FAPajMVPuxS2qacSG/GgwDTAsz/rUtCL+pnjo7eqMMzTLTHPCtSrBMrSsGoCSEEINTDdQ8cPm2SU45ndSWXIX7OsLd3orjaIipUw34bpLJcSyznOtwdK5ZJkfydeVAdlNsWaQkhBADmzjADdYiIQqrm/BXYQ3X4ejcn+oBdKb3hUn4h2EY9QDVPy4VcxyN7qXcKEOTTA5vBysM6SfhOhydoySEEAOzEglx30BlN8XvF03rS7OsTorUWxUAgJlDvDiOhpiLmUOVn7Wky7chbTWtLpnf2r4jZgz1AsOY3tIHlIQQwoFZw5Vfmr9dLDapLpk/LhVDwQLDfR3h52LDdTjETIzyd4KnxAp10lYcvW46c/A0tcjV84PMGu7NcTT6QUkIIRyYHOoOW0tll8z5vGquw9GZ3y4o79pmDaNWEGI4AgGDB4bdSexNxeFrpWhskcPX2RrDfRy4DkcvKAkhhANWIqF6zMRvF4s4jkY3imuacCZHOZfBA5SEEANTtRQcvHrbZJZF+PWC8rvhwWHeJtkVA1ASQghnHmz7Q/37xWLIFcbfJaMa3zI6wAleDtYcR0PMzXAfB/g6W6OxRW4SK1XXNctw5LqyHg+acFLPeRLy6aefIjAwEFZWVoiIiMCxY8e6LLt7927ExMTAzc0NEokEUVFR2L9/f7syCQkJYBimw09zc7O+q0KIViaEuEFiZYHSOinOZFdyHU6fqe7aTLXvmvAbwzB4cJjys6f6LBqzpCu3IW1VIMjNFmFepvdUjAqnScjOnTuxevVqvPLKK0hPT8eECRMwY8YM5OXldVo+JSUFMTExSExMxLlz5zBlyhTMmjUL6enp7cpJJBIUFxe3+7GyovkKCL9YWgjUo/r3pBdwHE3f3Cqrx4WCGggFDGbQUzGEI7PbEuDD10qNfi2ZPemFAJR1MtWuGIDjJOSDDz7A8uXLsWLFCgwaNAjx8fHw9fXFZ5991mn5+Ph4vPjiixg9ejRCQkLw3//+FyEhIfj111/blWMYBp6enu1+COGjh0b6AAAS/yox6tke95xXfmFOGuBmUit8EuMyyEuCQV4StMgV+O0v420NKalpxombyonXHgr34Tga/bLg6o1bWlpw7tw5vPTSS+22x8bG4uTJkxodQ6FQoK6uDs7Ozu2219fXw9/fH3K5HCNGjMBbb72F8PDwLo8jlUohlUrVr2trawEAMpkMMplusmnVcXR1PL4wxXoZsk7Dve3g42iFgupm/HGxUG99v/qsk0LBYvd5ZUvO7GGeBvss0GfPOBi6TnOGe+JqcS12nSvAgpH66RrUd512n8+DggUi/BzhJREZ5HenyzppcwyG5WiSgqKiIvTr1w8nTpxAdHS0evt///tffPPNN7h+/XqPx3j33Xfx9ttv4+rVq3B3V07+dOrUKdy8eRNDhw5FbW0tNm3ahMTERFy4cAEhISGdHmfdunVYv359h+3btm2DjQ3NdUD0KzFPgP2FAgxyVGDlIONbWTezhsHmK0JYCVm8FSGHpZDriIg5q2kB3jgnBAsGr45ohZuRjZFmWWDjBSGKmxgsDJIj2sP4Bq03NjZi0aJFqKmpgUTS/XgWzlpCVO7t62JZVqP+r+3bt2PdunX45Zdf1AkIAERGRiIyMlL9ety4cRg5ciQ+/vhjfPTRR50eKy4uDmvXrlW/rq2tha+vL2JjY3v8BWpKJpMhKSkJMTExEIlMZ2lzU6yXoesUVtGA/fEncKNWiNETpuilO0OfdYrbcxlAIWaN8MHcWYN1euzu0GfPOHBRp6Saczh2swI1TgOw9L7+Oj++Put0pbgWxadOQSRk8O9HpsHB2jC/M13WSdWboAnOkhBXV1cIhUKUlLRfSbS0tBQeHt2vFLhz504sX74cP/30E6ZNm9ZtWYFAgNGjRyMzM7PLMmKxGGJxxy9+kUik8w+YPo7JB6ZYL0PVKcTTEeF+jkjPq8bvl0rx5MQgvb2XruvU2NKKP9tW+Hw4wpeTzwB99oyDIes0b5Qvjt2swJ6MYqyJGQiBQD8DO/VRp70XlH8Tpw3ygKvE8C3xuqiTNvtzNjDV0tISERERSEpKarc9KSmpXffMvbZv345ly5Zh27ZteOCBB3p8H5ZlkZGRAS8vGrFP+Gt+hC8AYPvZPKOaxv23C8Wol7bC38UGYwKce96BEAOIDfOEvZUFCqqacOKW8ays2yyTq5+KWTDKl+NoDIPTp2PWrl2Lr776Cl9//TWuXr2KNWvWIC8vDytXrgSg7CZZsmSJuvz27duxZMkSvP/++4iMjERJSQlKSkpQU3NnJdL169dj//79yMrKQkZGBpYvX46MjAz1MQnho9kjvGFjKURWWQPScqu4DkdjO84qH6dfONpXb3ebhGjL2lKIv4X3AwDsOJvPcTSa23+5BNWNMng7WGHiADeuwzEITpOQhQsXIj4+Hm+++SZGjBiBlJQUJCYmwt/fHwBQXFzcbs6QL774Aq2trXjmmWfg5eWl/lm1apW6THV1NZ566ikMGjQIsbGxKCwsREpKCsaMGWPw+hGiKTuxBWa1TbS0/Uzn8+TwzY3bdTifVw0LAYN5Eab9GCExPo+M9gMAHLhcgop6aQ+l+WHHGWXCNH+UL4RmktRzPjD16aefxtNPP93pvyUkJLR7nZyc3OPxPvzwQ3z44Yc6iIwQw1o4xhc70/KR+Fcx3pg12GAD0npLlSxNHeQOd3uaDJDwS5i3BMN8HHCxoAa7zxfqdayVLuSUNyA1qwIMAywYbR5dMQAPpm0nhCiF+zoi1MMezTIF9rb1C/PV3X3Xj4zx4zgaQjqnag0xhrFW29u6NicNcEM/RyN7rrgPKAkhhCcYhsGiscovzW9Tc6Dg8aJ2+zKKUN0oQz9Ha0wMMY++a2J8Zo/whm3bWKvjN/k7QLVZJsfOtrErfzezpJ6SEEJ45KGR/WAntsAtHn9psiyLrSdzAABLovzNpu+aGB87sQXmtz1lknAih9tguvFLRqE6qZ82qPspKkwNJSGE8Ii9lUg9yDOh7Q8935zJrsTV4lpYiQRYaEZ918Q4LYlSPuhw+HopcsobOI6mI5ZlsbUtQVoabX5JPSUhhPDM0ugAAMqVQLN5+KWpSo7+Fu4DRxtLboMhpAdBbnaYHOoGlgW+Tc3lOpwOTmdX4lpJHaxFQiwcZV5dMQAlIYTwTqCrLaaEKsdZfMOz1pCCqkbsv6yc0XFZW7JECN+pPqs/peWjtplfiwNuPZENAPjbyH5wsOH3E3H6QEkIITy0fLzyccIdZ/N4NcfB/1KyoGCB8f1dEeppz3U4hGhkYogb+rvboU7aih9O8WcenpuldThwRbnsweNmmtRTEkIID43r74Kh/RzQLFOo+4u5VlYnVc8++fTkYI6jIURzAgGDlZOUn9ktx7PQLJNzHJHSZ8lZYFkgNswDIR7mmdRTEkIIDzEMg2emKL80v0nNQR0PmpC3nsiGtFWB4b6OiAp24TocQrQyZ4Q3+jlao7y+BT+lcT+Ve0FVI37JUM618/QU3a/0aywoCSGEp2LDPBHsZou65lZ8z3ETcm2zDN+1Dep7enIwGMa8RvAT4ycSCvBU26ypnx/Ngkyu4DSe/6VkoVXBIjrYBSN8HTmNhUuUhBDCUwIBg39OVt4h/e9YFqetIV8dy0adtBUh7naIMbN5DIjpWDjaF652liisbsLP5wo4i6Oougnb1V2b5tsKAlASQgivzR3hjSBXW1Q2tOCrY9mcxFBeL8VXx7IAAGtjBtBqucRoWYmE6j/68QdvcDY2ZNPBTLS0KjA20Bnj+pt31yYlIYTwmIVQgBemhwIAvjqWhXIOnpTZfPgmGlvkGObjgPuHeBr8/QnRpUcj/dDP0Rq3a6WcPAJ/s7QeP51TtoK8eP9As+/apCSEEJ6bMcQTQ/s5oKFFjs2Hbxr0vfMrG/HDaeVYkP9HX5jEBIgthFgTMwAA8GnyLdQ0Grab873916FggZgwD0T4Oxn0vfmIkhBCeI5hGPy/+wcCAL4/lYsbt+sM9t7/9/sVyOQsxvd3xbj+rgZ7X0L06W/h/TDAww41TTJ8ePCGwd735M1y/Hm5BAIG+HdbC6e5oySEECMwPsQVMWEeaFWweHXvJYMsS37kWin2X74NCwGD1x4M0/v7EWIoQgGD1x8cDEC5YvWlwhq9v2dLqwKv/XIJALA40h8DzHRekHtREkKIkXhjVhisRAKcya7E3rb5BfSlWSbHG/suAwCeGB9Is6MSkzM+xBUPDvOCggVe3XsJCoV+E/uvjmfhVlkDXO3EWBtLrSAqlIQQYiR8nGzw3H0hAID/++2qXgepbjqUibzKRnhKrLBqaoje3ocQLr32YBjsxBbIyK/Gd6f0t7hddnkDPjqUCQB45YGBcLA2vzViukJJCCFG5MkJQRjgYYeKhhb8v58v6qVbJvVWBT4/egsAsH7OYNiKLXT+HoTwgYfECi/EKgep/jfxql7GW7W0KrBqRzqaZQqM6++CuSP66fw9jBklIYQYEUsLATY9Eg5LCwEOXSvF9zq+e6tplGHtjxlgWWDhKF9MH0yP5BLTtiQqABMHuEHaqsDz29MhbdXt3CHxB2/gYkENHKxFeG/+cHrC7B6UhBBiZAZ5SfBS29My//f7VWTkV+vkuHIFi7U/ZqC4phmBrrZ4fRYNRiWmTyBg8N78YXC2tcS1kjqs23dZZy2Mh6/dxmdtrYpvPzQUXg7WOjmuKaEkhBAjtCw6AFMHukPaqsCKb84iv7KxT8djWRZv/noZh66VQmwhwKZHRlA3DDEb7vZWeH/+cDAMsP1MPr5IyerzMS8V1uDZbelgWWDRWD/MGOqlg0hNDyUhhBghgYDBpr+HI8xLgvL6FjyecLZPA1W/TMnCN20L1H24cASG+TjqKFJCjMOUge54ve1R9Lf/uKZe4bY3cisa8ETCWTS2yDEhxBXrZw/WVZgmh5IQQoyUndgCXy8bDS8HK9wsrce8z04ir0K7FhGWZfHOn9ew4Y9rAICXZw7ETLpjI2bq8XGBeHxcAABg9c6MXk3rfqmwBg9/dhKldVKEetjjk0dHQiSkP7Vd4fw38+mnnyIwMBBWVlaIiIjAsWPHui1/9OhRREREwMrKCkFBQfj88887lNm1axfCwsIgFosRFhaGPXv26Ct8Qjjl6WCFH1aMhY+TNXIqGvHQZydxPLNco31rmmRYvTMDnyYr+6z/FTMAT04I0me4hPDeqw+EYXGkP1gWeGPfZbz56xWNFrpjWRa/XSzCI1+eQnl9CwZ5SfDd8jGQWNHjuN3hNAnZuXMnVq9ejVdeeQXp6emYMGECZsyYgby8vE7LZ2dnY+bMmZgwYQLS09Px8ssv4/nnn8euXbvUZVJTU7Fw4UIsXrwYFy5cwOLFi7FgwQKcPn3aUNUixKCC3Oyw+5/RGOQlQXm9FI9tOY0Xf76AwuqmTsvL5Arsu1CEmA+O4peMIggY5aC556aG0Mh9YvaEAgZvzhmMf7WtL/P1iWzcH5+CI9dKu5zQ7FZZPf7x3Tk8uy0d9dJWRAY5Y+c/IuEusTJk6EaJ05FnH3zwAZYvX44VK1YAAOLj47F//3589tln2LBhQ4fyn3/+Ofz8/BAfHw8AGDRoENLS0vDee+/h4YcfVh8jJiYGcXFxAIC4uDgcPXoU8fHx2L59u2EqRoiBuUus8PPKKLzz5zV8eyoXP6YV4KdzBZgQ4oYIPyd4SkQ4XczgzK9Xsf9KqXr8SJCrLTbOG4bRAc4c14AQ/mAYBs9NDcEgLwle3XsJORWNeDzhLPo5WmP6YE/4Oolxo5RB5qGbOJNTjTM5lQAAkZDBPyf3x7NT+sPSgvOOBqPAWRLS0tKCc+fO4aWXXmq3PTY2FidPnux0n9TUVMTGxrbbNn36dGzZsgUymQwikQipqalYs2ZNhzKqxKUzUqkUUumdQX21tbUAAJlMBplMNyssqo6jq+PxhSnWy1jrZCkAXp0ZihmD3fHhoZs4nV2FlBtlSLlR1lZCCOQolxB3tbPEotG+eGpCAMQiodHVFTDe89QdqhO/TApxRuJzUfj4SBZ2nS9EYXUTvj6R3favQuCW8ikaAQNMGuCKf00LUS5xwMoh06ALh090eZ60OQZnSUh5eTnkcjk8PDzabffw8EBJSUmn+5SUlHRavrW1FeXl5fDy8uqyTFfHBIANGzZg/fr1HbYfOHAANjY2mlZJI0lJSTo9Hl+YYr2MuU6LPIEYByCjkkFZE4OqFsBaCLiIgUAJi8GOjRA2X8ehpOtch9pnxnyeukJ14pcRAMKGARcrGeQ1MKhsBmQKwFkMuFuzCHdh4Sguwa3zJbjFdbB9pIvz1Nio+QB5zicCuLcPmmXZbvulOyt/73ZtjxkXF4e1a9eqX9fW1sLX1xexsbGQSCQ9V0IDMpkMSUlJiImJgUhkOgOVTLFeplSnpW3/NaU6qVCdjIMp1Wlu239NqU4quqyTqjdBE5wlIa6urhAKhR1aKEpLSzu0ZKh4enp2Wt7CwgIuLi7dlunqmAAgFoshFos7bBeJRDr/gOnjmHxgivWiOhkHqpNxoDoZB13USZv9ORs5Y2lpiYiIiA5NP0lJSYiOju50n6ioqA7lDxw4gFGjRqkr3VWZro5JCCGEEG5w2h2zdu1aLF68GKNGjUJUVBS+/PJL5OXlYeXKlQCU3SSFhYX49ttvAQArV67E5s2bsXbtWjz55JNITU3Fli1b2j31smrVKkycOBEbN27EnDlz8Msvv+DgwYM4fvw4J3UkhBBCSOc4TUIWLlyIiooKvPnmmyguLsaQIUOQmJgIf39/AEBxcXG7OUMCAwORmJiINWvW4JNPPoG3tzc++ugj9eO5ABAdHY0dO3bg1VdfxWuvvYbg4GDs3LkTY8eONXj9CCGEENI1zgemPv3003j66ac7/beEhIQO2yZNmoTz5893e8x58+Zh3rx5ugiPEEIIIXpCs6kQQgghhBOUhBBCCCGEE5SEEEIIIYQTlIQQQgghhBOUhBBCCCGEE5SEEEIIIYQTnD+iy0eq9Wi0mf++JzKZDI2NjaitrTWpaX5NsV5UJ+NAdTIOVCfjoMs6qf52qv6WdoeSkE7U1dUBAHx9fTmOhBBCCDFOdXV1cHBw6LYMw2qSqpgZhUKBoqIi2Nvbd7v6rjZUK/Pm5+frbGVePjDFelGdjAPVyThQnYyDLuvEsizq6urg7e0NgaD7UR/UEtIJgUAAHx8fvRxbIpGYzIf2bqZYL6qTcaA6GQeqk3HQVZ16agFRoYGphBBCCOEEJSGEEEII4QQlIQYiFovxxhtvQCwWcx2KTplivahOxoHqZByoTsaBqzrRwFRCCCGEcIJaQgghhBDCCUpCCCGEEMIJSkIIIYQQwglKQgghhBDCCUpC+uDTTz9FYGAgrKysEBERgWPHjnVb/ujRo4iIiICVlRWCgoLw+eefdyiza9cuhIWFQSwWIywsDHv27NFX+J3Spk67d+9GTEwM3NzcIJFIEBUVhf3797crk5CQAIZhOvw0Nzfruypq2tQpOTm503ivXbvWrpwxnadly5Z1WqfBgwery3B9nlJSUjBr1ix4e3uDYRjs3bu3x334fj1pWydjuJ60rZMxXE/a1skYrqcNGzZg9OjRsLe3h7u7O+bOnYvr16/3uB8X1xQlIb20c+dOrF69Gq+88grS09MxYcIEzJgxA3l5eZ2Wz87OxsyZMzFhwgSkp6fj5ZdfxvPPP49du3apy6SmpmLhwoVYvHgxLly4gMWLF2PBggU4ffo0L+uUkpKCmJgYJCYm4ty5c5gyZQpmzZqF9PT0duUkEgmKi4vb/VhZWRmiSlrXSeX69evt4g0JCVH/m7Gdp02bNrWrS35+PpydnTF//vx25bg8Tw0NDRg+fDg2b96sUXljuJ60rZMxXE/a1kmFz9eTtnUyhuvp6NGjeOaZZ3Dq1CkkJSWhtbUVsbGxaGho6HIfzq4plvTKmDFj2JUrV7bbNnDgQPall17qtPyLL77IDhw4sN22f/zjH2xkZKT69YIFC9j777+/XZnp06ezjzzyiI6i7p62depMWFgYu379evXrrVu3sg4ODroKUWva1unIkSMsALaqqqrLYxr7edqzZw/LMAybk5Oj3sb1ebobAHbPnj3dljGG6+lumtSpM3y7nu6mSZ2M4Xq6W2/OE9+vJ5Zl2dLSUhYAe/To0S7LcHVNUUtIL7S0tODcuXOIjY1ttz02NhYnT57sdJ/U1NQO5adPn460tDTIZLJuy3R1TF3qTZ3upVAoUFdXB2dn53bb6+vr4e/vDx8fHzz44IMd7uz0pS91Cg8Ph5eXF6ZOnYojR460+zdjP09btmzBtGnT4O/v3247V+epN/h+PekC366nvuDr9aQLxnA91dTUAECHz9LduLqmKAnphfLycsjlcnh4eLTb7uHhgZKSkk73KSkp6bR8a2srysvLuy3T1TF1qTd1utf777+PhoYGLFiwQL1t4MCBSEhIwL59+7B9+3ZYWVlh3LhxyMzM1Gn8nelNnby8vPDll19i165d2L17N0JDQzF16lSkpKSoyxjzeSouLsYff/yBFStWtNvO5XnqDb5fT7rAt+upN/h+PfWVMVxPLMti7dq1GD9+PIYMGdJlOa6uKVpFtw8Yhmn3mmXZDtt6Kn/vdm2PqWu9ff/t27dj3bp1+OWXX+Du7q7eHhkZicjISPXrcePGYeTIkfj444/x0Ucf6S7wbmhTp9DQUISGhqpfR0VFIT8/H++99x4mTpzYq2PqQ2/fPyEhAY6Ojpg7d2677Xw4T9oyhuupt/h8PWnDWK6n3jKG6+nZZ5/FxYsXcfz48R7LcnFNUUtIL7i6ukIoFHbI/kpLSztkiSqenp6dlrewsICLi0u3Zbo6pi71pk4qO3fuxPLly/Hjjz9i2rRp3ZYVCAQYPXq0Qe4I+lKnu0VGRraL11jPE8uy+Prrr7F48WJYWlp2W9aQ56k3+H499QVfrydd4dP11BfGcD0999xz2LdvH44cOQIfH59uy3J1TVES0guWlpaIiIhAUlJSu+1JSUmIjo7udJ+oqKgO5Q8cOIBRo0ZBJBJ1W6arY+pSb+oEKO/Yli1bhm3btuGBBx7o8X1YlkVGRga8vLz6HHNPelune6Wnp7eL1xjPE6AcMX/z5k0sX768x/cx5HnqDb5fT73F5+tJV/h0PfUFn68nlmXx7LPPYvfu3Th8+DACAwN73Ieza6rXQ1rN3I4dO1iRSMRu2bKFvXLlCrt69WrW1tZWPUL6pZdeYhcvXqwun5WVxdrY2LBr1qxhr1y5wm7ZsoUViUTszz//rC5z4sQJVigUsm+//TZ79epV9u2332YtLCzYU6dO8bJO27ZtYy0sLNhPPvmELS4uVv9UV1ery6xbt479888/2Vu3brHp6ens448/zlpYWLCnT5/mZZ0+/PBDds+ePeyNGzfYS5cusS+99BILgN21a5e6jLGdJ5XHHnuMHTt2bKfH5Po81dXVsenp6Wx6ejoLgP3ggw/Y9PR0Njc3l2VZ47yetK2TMVxP2tbJGK4nbeukwufr6Z///Cfr4ODAJicnt/ssNTY2qsvw5ZqiJKQPPvnkE9bf35+1tLRkR44c2e7xp6VLl7KTJk1qVz45OZkNDw9nLS0t2YCAAPazzz7rcMyffvqJDQ0NZUUiETtw4MB2F6shaFOnSZMmsQA6/CxdulRdZvXq1ayfnx9raWnJurm5sbGxsezJkycNWCPt6rRx40Y2ODiYtbKyYp2cnNjx48ezv//+e4djGtN5YlmWra6uZq2trdkvv/yy0+NxfZ5Uj3J29VkyxutJ2zoZw/WkbZ2M4XrqzWeP79dTZ/UBwG7dulVdhi/XFNMWMCGEEEKIQdGYEEIIIYRwgpIQQgghhHCCkhBCCCGEcIKSEEIIIYRwgpIQQgghhHCCkhBCCCGEcIKSEEIIIYRwgpIQQgghhHCCkhBCiN4lJyeDYRhUV1dz8v6HDx/GwIEDoVAoeiz722+/ITw8XKOyhJC+oSSEEKJTkydPxurVq9tti46ORnFxMRwcHDiJ6cUXX8Qrr7wCgaDnr7wHH3wQDMNg27ZtBoiMEPNGSQghRO8sLS3h6ekJhmEM/t4nT55EZmYm5s+fr/E+jz/+OD7++GM9RkUIASgJIYTo0LJly3D06FFs2rQJDMOAYRjk5OR06I5JSEiAo6MjfvvtN4SGhsLGxgbz5s1DQ0MDvvnmGwQEBMDJyQnPPfcc5HK5+vgtLS148cUX0a9fP9ja2mLs2LFITk7uNqYdO3YgNjYWVlZW6m0XLlzAlClTYG9vD4lEgoiICKSlpan/ffbs2Thz5gyysrJ0+vshhLRnwXUAhBDTsWnTJty4cQNDhgzBm2++CQBwc3NDTk5Oh7KNjY346KOPsGPHDtTV1eGhhx7CQw89BEdHRyQmJiIrKwsPP/wwxo8fj4ULFwJQtlDk5ORgx44d8Pb2xp49e3D//ffjr7/+QkhISKcxpaSk4O9//3u7bY8++ijCw8Px2WefQSgUIiMjAyKRSP3v/v7+cHd3x7FjxxAUFKSj3w4h5F6UhBBCdMbBwQGWlpawsbGBp6dnt2VlMhk+++wzBAcHAwDmzZuH7777Drdv34adnR3CwsIwZcoUHDlyBAsXLsStW7ewfft2FBQUwNvbGwDwwgsv4M8//8TWrVvx3//+t9P3ycnJUZdXycvLw7///W8MHDgQADpNYPr169dp8kQI0R1KQgghnLCxsVEnIADg4eGBgIAA2NnZtdtWWloKADh//jxYlsWAAQPaHUcqlcLFxaXL92lqamrXFQMAa9euxYoVK/Ddd99h2rRpmD9/frtYAMDa2hqNjY29rh8hpGeUhBBCOHF39wcAMAzT6TbVo7IKhQJCoRDnzp2DUChsV+7uxOVerq6uqKqqardt3bp1WLRoEX7//Xf88ccfeOONN7Bjxw787W9/U5eprKyEm5tbr+pGCNEMJSGEEJ2ytLRsN5hUV8LDwyGXy1FaWooJEyZotd+VK1c6bB8wYAAGDBiANWvW4O9//zu2bt2qTkKam5tx69YthIeH6yx+QkhH9HQMIUSnAgICcPr0aeTk5KC8vFxnk34NGDAAjz76KJYsWYLdu3cjOzsbZ8+excaNG5GYmNjlftOnT8fx48fVr5uamvDss88iOTkZubm5OHHiBM6ePYtBgwapy5w6dQpisRhRUVE6iZ0Q0jlKQgghOvXCCy9AKBQiLCwMbm5uyMvL09mxt27diiVLluBf//oXQkNDMXv2bJw+fRq+vr5d7vPYY4/hypUruH79OgBAKBSioqICS5YswYABA7BgwQLMmDED69evV++zfft2PProo7CxsdFZ7ISQjhiWZVmugyCEEH168cUXUVNTgy+++KLHsmVlZRg4cCDS0tIQGBhogOgIMV/UEkIIMXmvvPIK/P39NRqrkp2djU8//ZQSEEIMgFpCCCGEEMIJagkhhBBCCCcoCSGEEEIIJygJIYQQQggnKAkhhBBCCCcoCSGEEEIIJygJIYQQQggnKAkhhBBCCCcoCSGEEEIIJygJIYQQQggn/j8wIdekROKOagAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "# Data for plotting\n", "t = np.arange(0.0, 2.0, 0.01)\n", @@ -26,8 +37,8 @@ "ax.plot(t, s)\n", "\n", "ax.set(xlabel='time (s)', ylabel='voltage (mV)',\n", - " title='The simplest plot in the world')\n", - "ax.grid()" + " title='This plot is simple!')\n", + "ax.grid('on')" ] } ], diff --git a/README.md b/README.md index b1243aa..1d8cc0c 100644 --- a/README.md +++ b/README.md @@ -1,116 +1,16 @@ # GitExercise_Conflicts - -## Purpose -To teach you to deal with git merge conflicts in -- Jupyter Notebooks -- on Datahub using graphical notebook based tools - -The instructions here are specific to the COGS 108 Datahub setup. - -Note that this is different than your previous exercises... they were on GitHub (not on Datahub) and there were no graphical diff tools in use - - - -## Problem overview - -This repo contains two branches: main and ex1. There is a single line text conflict in one cell between the two branches, as well as other line differences that do not conflict. - -Below is a graph of the commit situation in the repo right now... each * indicates a commit and the lines show the evolution of the repo over time - -``` -----*----*[main] - \ - \----*[ex1] -``` - -We will do two seperate git operations -- [Part 1] add a new change to branch main, thus introducing a second difference with ex1 branch -- [Part 2] then we will merge the changes from branch ex1 into main - -Thus after Part 1 the new graph will look like - -``` -----*----*----*[main] - \ - \----*[ex1] -``` - -And after Part 2 the new graph will look like - -``` -----*----*----*----*[main] - \ / - \----*------/ -``` - -## Setup this stuff first -1. Fork this repo by pressing the Fork button at the top of this webpage - - When forking **UNCHECK** the default option to "Copy the main branch only". You want all the branches! - - Forking this repo made a copy of this repo on YOUR GitHub. You have direct write access to the forked copy, but not the original repo -1. Let's get a local copy of your forked repo... - - login to Datahub - - if you have not already created SSH keys for datahub, do so now and place them on your GitHub account per https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account
**NOTE:** these keys are different than the ones you made on your laptop. Each computer you use with GitHub needs its own keys! - - Open a terminal window on Datahub. - - Type: `cd ~/private` which will put you inside a subdirectory of your datahub file system. - - Type: `git clone git@github.com:your_username/GitExercise_Conflicts.git`
but replace `your_username` with your actual GitHub username - - Your new local copy of the repository will appear in the file browser inside the folder `~/private/GitExercise_Conflicts` Double click around the file browser until you find the folder and open it - -## Part I - Make a local change on main -1. Open `Project.ipynb` - - Just for fun (you don't have to do this substep, but its a good teaching point) - - run both cells of the notebook to see the plot - - Unfortunately running the notebook changes the metadata stored inside it. The counter for how many times a cell was run, the binary data from the plot. This is stuff we do NOT want to version control... its not important and it clogs up the system because notebook metadata for plots can be very big. - - Save the notebook, open a terminal window in this directory and type `git diff`, now you will see the insane line differences generated just by running the notebook - - Before we do any git operations it is a best practice to click on the pulldown menu item `Edit -> Clear Outputs of All Cells`. Do this now, and press save so we don't have to put this BS into the git history -1. Lets add a change we do want: - - the last line of the notebook currently says `ax.grid()` which (although it works) is bad Python form... - - change it to the more readable and more Pythonic `ax.grid('on')` - - save the file when you are done! -1. Add / commit the changes using the GUI (git extension for Jupyterlab) - - Yes you could do all this in the terminal window, but I'm showing you the GUI way here. If you're a command line hero, feel free to do this task there :) - - On the far left you will see a vertical stack of icons in a grey panel. Click on the one that's a diamond with some lines inside it, that's the git panel. - - At the bottom of the git panel you can see there are three categories of files that could be the subject of git operations
- "Untracked" for new files you create that are not yet in the repo
- "Changed" for files already in the repo, but you changed something
- "Staged" which tracks all the changes you've asked to be grouped together into a commit
- - Look at the "Changed" section, `Project.ipynb` is there... hover your mouse over it. You will see icons for opening the file, for making a diff summary of the changes, for discarding the changes, and one for staging the changes for a commit (a + symbol). - - Stage the changes! - - Now that `Project.ipynb` is in the "Staged" category you can scroll down to the bottom of the git panel and commit the changes. Add a summary (<50 characters), e.g. "improved code readability". There is also a space for longer description if necessary. Press the "Commit" button, and you're done with Part I! - -## Part II - Merge ex1 into main -1. Get a local copy of the ex1 branch using the GUI.
When you cloned the repository you only got a copy of the default branch "main"... there were other branches but they are still only on the remote repo up on GitHub. Remote branches are marked with the keyword "origin". So "main" is a local branch, "origin/main" is the main branch on GitHub. - - On the git panel there's a place at the top where it says "Current Branch: main"; click on that menu item to see a list of all the branches available. - - Click on "origin/ex1", this makes a local copy called "ex1" and sets it up to track the remote branch "origin/ex1". - - Now that we have local copies of both main and ex1 we can merge the branches -1. Merge ex1 into main - - OK here's the task: we want to merge the change in branch ex1 (a change of title on the graph) into main, keeping the ex1 title erasing the old title on main. But we want to keep our `ax.grid('on')` change which is only on main and not ex1. - - Here's how to do it... click on "main" to make sure we are currently on the main branch. We want to be on the branch that is the destination of the merge. - - Hover over the local "ex1" branch and a button icon that looks like 3 dots with connecting lines will appear.. when you hover over the button it says "merge this branch into the current one"... go ahead and click it! - - You will get an error message "Failed to merge ex1 into main". And now there is a new category "Conflicted" just above "Staged"! Our file `Project.ipynb` is in that heading as expected! Hover over the file, and click on the icon to "diff this file" that appears. - - You will now see the diff panel... where there are conflicts you have from left to right three possiblities:
- "Current" (what was in main before the merge)
- "Common Ancestor" (what the file looked like when ex1 split off from main)
- "Incoming" (what was in ex1 before the merge)
- Underneath the triple column you will see a panel where you can manually change the conflict zone to make the outcome what you want. Whatever you put in this lower panel is what the outcome of the merge will be! - - Make the outcome of the merge to be the ex1 title and the main ax.grid('on') command! Save it by clicking the button on the top right that says "Mark as resolved". You will see that `Project.ipynb` moved from "Conflicted" to "Staged" - - Go look at the notebook and make sure it is what you wanted it to be. - - It is also useful at this stage to Restart-kernel-and-run-all to ensure that the Frankenstein's monster of code from both branches is actually functional as a combo. A lot of difficult to solve runtime errors come from failing to test the integrated code after the merge! - - When you're finished with the run-all then `Edit -> Clear Outputs of All Cells` before saving to get rid of the useless metadata changes that we do not wish to add to git. Save the file, add commit the file if git tells you this is an unstaged change. - -## After Part I / II DO THIS or LOSE POINTS -All the changes you've made so far only exist in the local copy on Datahub. We need to push the changes from the local copy to your forked copy. - -On the top left of the git panel are a set of cloud icons, one with the arrow pointed down (that's pull) and one with the arrow pointed up (that's push). In general: If there's a red dot on one of the clouds you need to do that action. - -1. Push your exercise. Now you're done! The changes you've made have appeared on GitHub and are visible to other people including our auto-grading scripts. - - Failing to push will mean you don't get the autograder's points on A1 - - If the push fails its probably because you - - either cloned the COGS108 repo instead of the fork that lives in your GitHub. - - or you used http access to clone instead of ssh access. - - whichever one it is, to fix it you will need to change the origin so it points at the fork using ssh not http; I'd suggest coming to a TA for help with this. - -## Congrats!! -You've dealt with a simple version of the notebook conflict problem. This workflow will happen in your projects all the time, when person A and person B need to merge their seperate parts of the project together into the final project. - -Another common project workflow is if there's a red dot on pull (down arrow) that means someone else made changes to the remote that you don't have. Pull operations need to be done before push operations... so if someone changed the remote after your clone but before your push you will have to pull first, merge, and resolve any conflicts before you are allowed to push your changes to remote. We didn't have to do that here, but its a very normal workflow for your projects. +1. Clone this repo to your datahub or local computer (your choice) +1. Merging ex1 branch into main branch... the difference here is a simple line of text conflict\\ + 1. first look at the diff + 1. now merge e1 into main; note how the conflict gets shown to you... + 1. resolve the conflict in whichever way you choose, + 1. add and commit the changes on main +1. Merging ex2 branch into main branch... the difference here is metadata and binaries from a plot + 1. first look at the diff + 1. now checkout e2. + 1. remove the metadata and outputs by clearing all cell output + 1. add and commit the changes on e2 + 1. now merge e2 into main + 1. resolve the conflict in whichever way you choose, + 1. add and commit the changes on main