diff --git a/Copy_of_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb b/Copy_of_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb new file mode 100644 index 00000000..bf132e6a --- /dev/null +++ b/Copy_of_LS_DS_131_Vectors_and_Matrices_Assignment.ipynb @@ -0,0 +1,1132 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Copy of LS_DS_131_Vectors_and_Matrices_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "yXA3GwWhY9KL", + "colab_type": "text" + }, + "source": [ + "# Part 1 - Scalars and Vectors\n", + "\n", + "For the questions below it is not sufficient to simply provide answer to the questions, but you must solve the problems and show your work using python (the NumPy library will help a lot!) Translate the vectors and matrices into their appropriate python representations and use numpy or functions that you write yourself to demonstrate the result or property. " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oNOTv43_Zi9L", + "colab_type": "text" + }, + "source": [ + "## 1.1 Create a two-dimensional vector and plot it on a graph" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Jrgp-vWkLRge", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import matplotlib.pyplot as plt\n" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "XNqjzQzrkVG7", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 268 + }, + "outputId": "416875a4-b644-4e93-c9d2-06e43680d2a3" + }, + "source": [ + "vector = [.5,.5]\n", + "plt.arrow(0,0,vector[0],vector[1],head_width=.01, head_length=.01, color = 'g')\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "unKFT619lk3e", + "colab_type": "text" + }, + "source": [ + "## 1.2 Create a three-dimensional vecor and plot it on a graph" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "atUEd3T6llKm", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "outputId": "17729931-578b-4834-b0bb-7adf1feb63d4" + }, + "source": [ + "from mpl_toolkits.mplot3d import Axes3D\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import numpy as np\n", + "\n", + "vec3D = [0,0,0,1,1,1]\n", + "\n", + "X,Y,Z,U,V,W = vec3D\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection='3d')\n", + "ax.quiver(X,Y,Z,U,V,W, length=1, color='red')\n", + "ax.set_xlim([0,2])\n", + "ax.set_ylim([0,2])\n", + "ax.set_zlim([0,2])\n", + "\n", + "plt.show()" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOx9fXQb9ZnuM9JIsiXLn7ETx47t2I7jOJ8kMTil5FK6gcLdpi3d04VuD/RmudBSetntPe1hWWCXbk85vVtgWWhpe0uBCy3pbru9QC+hlC3pLm1IQgIBQkJsy1+SZcv6/v6Y0dw/zG8yM5qRZuSRI8M853DayNJ8SDPPvL/3fd7npTiOgwEDBgwYWB6YLvQBGDBgwMCHCQbpGjBgwMAywiBdAwYMGFhGGKRrwIABA8sIg3QNGDBgYBlBl/i7IW0wYMCAAe2glP5gRLoGDBgwsIwwSNeAAQMGlhEG6RowYMDAMsIgXQMGDBhYRhika8CAAQPLCIN0DRgwYGAZYZCuAQMGDCwjDNI1YMCAgWWEQboGDBgwsIwwSNeAAQMGlhEG6RowYMDAMsIgXQMGDBhYRhika8CAAQPLiFIuYwYMKILjOOTzeWQyGTAMA5qmYTKZYDabYTKZYDKZQFGKZksGDHwoQZUYTGlYOxooAMdxYFkWPp8PZrMZDocDDMMAANxuN2pqarBq1SoA4EmY/GeQsYEPCRQvcCPSNaAahGwZhgHHcYhGo6AoCrOzs2AYBnV1dUilUjy5ks/kcjlks1kR0RpkbODDCiPSNVASHMeBYRiwLAuO40BRFBKJBN566y0wDIP+/n6YzWakUinMzc0hl8uBoig+CnY4HLDb7XA4HLDZbKLtSq8/g4wNfECgeMEapGtAEYRsSeqAoihEo1G4XC4wDAOHwwGn04n29nYwDAOTyQS32w2TyYS1a9eCYRgkk0kkEgn+v0wmA5PJVEDGNTU1ov1yHIfJyUmsWrUKdXV1PImTvDEhZ4OMDVQpjPSCAfXI5/N8GoEgHA7D5XLBZDKht7cXjY2NmJ6e5iNfAoqi+OiVpmnU19ejvr5etH2WZXkyjkQimJ2dRTqdhslk4knY4XAgnU6D4zg+VSFMbZD9FIuMDUI2UI0wSNcAj3w+j2g0KkoB+P1+TExMoKamBhs3boTT6eT/ZjKZwLKsaBsURSGfzxfdj9lshtPpFG0LWCTVVCqFRCKBaDSKSCSCWCwGs9ksImO73Y7a2toCMpYeh8lkAk3TBhkbqCoYpPshB1nK53I55PN5nDx5EiMjI5ifn8fU1BTq6+uxdetW2O32gs8Ko9pir6mF2WxGXV0d6urqAAAMw2D16tVwOp08GcfjcczPzyOVSgEAamtrRWRst9t5UiVyNgCYm5uDw+FAfX09Hx0LUxUGGRtYLhik+yEF0dgyDMNHpiSH+9prr6GlpQUXXXSRKNcqhRLBlku6SscpzAELkc/nkU6n+XzxwsICkskkOI4TkbHD4UAqlUJNTQ0fibMsi2w2K9qeME1BomODjA3oDYN0P2SQki1FUWBZFm63Gx6PBxzHYdeuXUXJlkAp0l0ukByw3W5Ha2sr/zrHcUilUnzeOBAIIBgMwufzoa6uTkTGdrsdZrOZ/16ECg0CuZyxoagwUC4M0v2QQKqxpSgKuVwOMzMzmJubQ2dnJ0ZGRnDy5EnQtLrLwmQyyUq+SuV01aLcVAVFUTwZkyaNsbExNDY2wuFw8GQcCoWQTCbBsixsNlsBGdM0LUvGJNXR1tZmyNsMaIZBuh9wyJFtNpvF5OQkAoEAurq68JGPfIQvSqkphBEovVfP9IKeMJlMqK2tRW1tLVpaWvjXOY5DNptFPB5HMpnE7OwsEokEWJaF1WotIONcLodoNIrW1laj8cOAZhik+wEFyc/6fD6wLIu2tjak02lMTEwgGo2ip6cHAwMDPNkSaIlUL3R6QS9QFAWbzQabzSZLxolEAslkEnNzc7zWmBQghYRssVj474NhGORyOdF+DDI2ABik+4GDtKEhnU4jHo9jbm4O6XQa69evx9DQkOKNLpcyUAIhXSWd7lKh57bK3T8h4+bmZv71QCCAQCCA1tZWJJNJ+Hw+JBIJ5HI50DQtImJCxgRyZBwKhdDS0gKr1Wo0fnwIYJDuBwTShgaKohCJRDA9PQ2GYbBlyxY0NTWVvJG1phf0lIxVEnorKmiaRlNTE5qamkR/y+VyvJrC7/djamoK2WxW1BJN/rNarQCAyclJNDY28s0gRuPHBxsG6a5wECWCsEkhGAxiYmICNE2jvb0dLMuKIrVi0BrpplIpnDhxAul0GjabDWazGSzLIhKJwOFwqC7KLQf0IippdC+ExWJBY2MjGhsbRa8zDMOTcTAYxMzMDDKZDO9Z4fF4eGWFsDnFaPz44KF67ggDqiFtaCBYWFjAxMQEHA4HNm3ahLq6OiwsLCAUCqnetppIl+M4+P1+nDt3DizLYseOHbBYLGAYBnNzcwgEAvB6vXwxSkkZoOZYPihRM03TaGhoQENDg+h1lmVx/PhxWK1WhMNheDwe2ZZoqT+FsPGDgJAucXwzyLg6YZDuCgLJ15IIibw2NzeHqakpNDY2Yvv27aitreU/o1XCVez9HMfB5/NhYmICdXV16Ovrg9/vR11dHbLZLGw2GxoaGpDJZDAwMMB/higDEokEPB6PokzL4XDw51Xt0IvESOqgvb1d9LrUn8Lr9SKVSvFyOOF3Vltbyz+gMpkMzpw5g23btsnux2j8uPAwSHcFQNjQEI1GMTExgc2bN8Pj8cDtdqO1tRW7du0SLUsJtJKuXHRJiH1ychINDQ08sUej0ZI53WLKgEwmwy+5PR4PEokE8vk8T8aJRAJWqxWNjY1VRcbF0gt6QcmfIp/P82Qci8UKWqJtNhsYhkE6neb9KeS0xuR/jcaP5YdBulUMOY0tx3GIxWJ47bXX0N7ejosvvlhUHZdiKZFuPp+H1+vF1NQUmpubC9qCl1JIoygKNTU1qKmpKSDjdDqNZDKJWCwGv9+P+fl55PN51NTUyHaTqYHehbQLRUomk0nkT0GQz+eRSqUQCoUQDAYxOTmJZDIJAIrfW7EuPEPeVjkYpFuFkCNbhmEwOTmJ+fl5UBSFPXv2qCKcciJdlmUxMzOD6elptLa2Yvfu3XylXfpeQmbkZlxqHpaiKL6BIRKJoL6+HqtWreLJWFiMSiaTBWRcV1cHu91eoD8WHuNScSFJVwnEn4JM9BgaGgJQ6E/h9/uRSqWKPsSENYNwOIy5uTn09fXx+zHIeGkwSLeKIDehIZPJYHJyEqFQCN3d3bj44ovx1ltvqY7wtJAuy7KIxWKYm5tDR0dHWVG03sUvIakTMiatveTvhFTi8TgCgYCs6Y206LjUY6pWksnn86Jro5g/RbGHGMkbA4vXBSFjwGj8WCoM0q0CyE1oSKVScLlcSCQS6OnpweDgIB+FSj1si0EN6TIMg5mZGXg8HthsNvT396Ojo6PktoUES4hI7+YINe9RImPikUD8eWOxGN8KLI3w5CJjJVQ76ao5l2LfmzDXHgqFEIvFcOzYMdhstoIiHvGnAJTJWEne9mGFQboXEMI8XEtLCyiKQiwWg8vlQjabRW9vL/86gZ5qhFwuh+npaXi9XnR2dmLPnj2YmppSTUCVSC/oBaHpTWtrKzKZDNasWYP6+noRGfv9fj73KSVjoVG6EB8E0lWCNNdut9sRjUaxfv16viU6kUiIJIEWi4VP68i1RAtTZRzHwePxoKurq8DT+MOiqDBI9wJA2NBADFbMZjNcLhcoikJvb29BpxOB1gtSjnSz2Sympqbg8/mwbt06UX64HO8F6TFVIr2gF6RkTEAegIRUfD6frFE6yZsuhdiEkBvOuRQslXSlIKkFpZZokvsl39v8/DwSiQQYhoHFYhHNwSPpinA4jO7u7g9t44dBussEpYaGaDQKv98PAAXjcPSAkEQzmQwmJiYQDAbR1dWFPXv2FNygWiLVShveLLc3r5JRupSMI5EIKIpCKBSS1ctqgZ4ETo53ObdHURSsViusVmvRluiFhQVMTk4ik8kgl8vh3LlzIjIWFmqVGj8+KBM/DNKtMOQmNADA/Pw8Jicn+Ytu+/btFdm/yWQCwzB49913EQ6HFd3FhO9XG+nKvVdLG/FKgBwZT09Pw2KxwOl08nrZubm5ks0LctA7VcGybEUi3XIg1xIdi8UwPT2NNWvW8Abz09PTBf4U5Du02Wz8w11p4kcymUR9fT0sFgsf1EiHoVYTDNKtEOQmNHAcB6/Xi+npaV73StM0Tpw4UZFjSCaTcLlcSKVSaG5uxqZNm1QZ3qgt1Am7oPx+PxwOh+6kq9e29CQ3Ep0q6WWFzQtyZEw8FmpqavhrQy9UIr1QTMGiFQzDwGq1yrZEMwwjMph3u93IZDKiBx/5DsnoJY7jMDo6iqGhITAMg9/85jc4deoUvv3tb+t2zHrDIF2dIaexZVkWHo8HHo8HbW1tIt0reb+eiMfjPNmuX78ekUgEa9asUfVZLaSZzWaRTCZx8uRJNDU1wefzIZlMIpVK4fTp0yLtLLlJtKBal43FCLwUGcfjcdHYeeB8jl3osVDuuefzeV1NhpYS6WrdHk3TqK+vL4hSpS3R5LsjcjjSSJNMJhEKhQrIvNpgkK5OIOQ5Pz8PAGhpaQHLspiensbc3BzWrl2LSy65pOCGKPfmkrvxY7EYxsfHkc1m0dfXh+bmZlAUhbGxMdXbVZNeIGbooVAIZrMZIyMjyOVyoKjFEUBvv/02uru7C6I9cpOQSK+urg5Wq7VqyVUJ5UTfSmScTCZx9uxZ2Gw2WUIRznQjS+1iWO6crlaUQ+JKLdEsy/Lqn1gshu985zt47bXXkM/n8dZbb2FoaAi33XabIgnPzMzghhtu4BuObr75Ztx+++2i93Ach9tvvx0vvPAC7HY7nnjiCezcuRMA8OSTT+Jb3/oWAOCuu+7CjTfeqOp8DNJdIqQNDel0GplMBoFAAH6/H+vWrcPIyIiu0QIhRrLNSCSC8fFx5PN59Pb2qrZxlEOxQlo6nYbL5UIkEsH69esxODiII0eOFJiYA5AlGBKxxONx0fKRjF6Xes3qKT+rhApCr+1YLJaClYjSdyVcasuRcTWQZDEwDKPb9sh1Y7FY0Nvbix/+8If4zne+g6GhIWzfvh3vvvuubCclAU3TuP/++7Fz507EYjHs2rUL+/bt47v5AODQoUMYHR3F6Ogojh49ii9/+cs4evQogsEg7r33Xrz++uugKAq7du3C/v37FVVHov3qcvYfQsg1NKTTaXi9XsTjcWzcuBEbNmzQ9QYgMJvNyOfziEajGB8fh8lkQm9vb4GHazmQi3RTqRQmJiZ4si2WGy5GlEoRC/GajcfjfJU7l8uBZVnU1tYin8+LxPjlohrbgJW2VSy6EzYuCB9cdrsd6XQaFEWhvr5el1VEJdILxYhQK6TXWiQSwapVq7B582Zs3ry56Gfb29t5dzen04lNmzbB4/GISPfZZ5/FDTfcAIqiMDIygnA4DK/Xi8OHD2Pfvn18gLNv3z68+OKLuP7660ses0G6GiE3oSGRSIgKVvX19Vi7dm1F9k/I/sSJE6ipqcHAwICulVohaZKuuGg0it7eXtWFOK1RpZLX7MTEBFiW5Y135Px5iSh/OV3I9CRdrZGp2WyWzXuSIpTL5UI8HsfZs2d5MpabWKH2+Ks9cpa2PUej0bKCj8nJSbzxxhu45JJLRK97PB6sW7eO/3dnZydfn5F7XQ0M0lUJ6YQGiloch+NyucCyLL+sD4VCfF5XC0rdyMQ43OVyIZPJYMuWLaL2Tb1gMpmQzWbxzjvvIBaLobe3t+hMNSn0TAnQNI2amhqR16zUn3dmZob3DBA2MdTV1Sl2lC0VyxHpagUpQtXW1mLNmjX8A0w4sUJJnkW+L4vFUnAs1ZxeINsTrn6i0ajmQlo8HsdnP/tZ/NM//dOySM0M0i0CpYaGUCgEl8sFmqbR19cn+pHJuBotkOZopcfg8/ngcrngdDqxdetWjI2NyXrnKkGpc0yKZDLJpxG2bNmCzZs3V53ioJg/b7H2XlLZNpvNZTUxCHEhI12t21NaRUjJeGpqSnawZi6X0z29oKe6Qkq6kUhEVV6VIJfL4bOf/Sz+4i/+Atdee23B3zs6OjAzM8P/2+12o6OjAx0dHTh8+LDo9csvv1zVPg3SlYFQY3v69Gls2rQJAPh8Y21tLT8OR4pySJd8RnhxS43Dd+zYwU+EKNd/QenmSSaTGB8fRyKRwJo1a2C1WtHW1qbpHCoFLd1xxdp7z549y5+nnJJCrTpAyzGpgd7NEWpJXImMpV1kiUQCJ06c4Ft6pZGxVlQicpaSrtr0Asdx+Mu//Ets2rQJX/va12Tfs3//fjzyyCO47rrrcPToUTQ0NKC9vR1XXXUV7rzzTn4U1ksvvYT77rtP1X4N0hWAyL5IHpGiKN5PlExs3bp1K+x2u+I2aJou6CcvBVIYAxZvmtnZWVEDhdA4HNCPdBOJBE9Cvb29WLVqFeLxOKLRqKbjrxT0ICNS7a+trUVnZyf/oCympBA2MEhbVPU8NqD6JF7SLrJIJILh4eECMp6YmBD5KyiNnJei0pGulmaOP/zhD3jqqaewdetW7NixAwDw7W9/G9PT0wCAL33pS7jmmmvwwgsvoL+/H3a7HY8//jgAoLm5GXfffTeGh4cBAPfcc49q1ZBBupBvaCDkR2wBlcbhSFFueiGXy8Hn82FmZqaocXg5+5CStJBs+/r6RE5m1eISVmmUUlII/QJyuZyIXNLpdNV68xZb0SwFSlOOhc5jcmY3UjKuZE5X63X70Y9+tORnKIrC9773Pdm/HThwAAcOHNC0T+BDTrpKZEu8Zdvb21FfX4++vj7VT0+thEgE3m+88QbWrl1b0jgcKD/SjcfjGB8fRzqdLiDbcrddaSz3A0Bp2S0kl2QyyTecLFVJUe1twKWgZHajRMZEESNcSSwl8pUj3WpvtvlQkq6cxpZhGN7usKOjg7c7jEQi/JNbDdS20TIMg+npaczOzoKmaQwNDalWI2glRpZl8e6774JlWVGn2lKOX4pKXOh6bnOp5C0kl1gsxqcqhEoKt9vND9esqakREYuSUbreLmN6G96UCzky5jgOx44dw6pVqwo8ea1Wa0FkrIaMGYbh02/pdLpo6q9a8KEiXTmyJXaHoVBI1u6wnBxtMeRyOUxNTWF+fp4ndy1tuoD6aJq0BUejUQwMDKCzs7PkZ0i0rxbEcGR+fp5fUmazWYTDYdTV1emav1sq9JZ5FVNSpNNpnozljNIJIbMsq/vDRc/z1BPEnrG5ubnAk1fJIF24kiAPL+E1JYx0w+FwVbuLEVTPHVFBkIYGl8uFlpYW1NXV8fKoWCzGt7QqdQbpYUiTzWYxOTmJhYUF3jickLuwkKYGpSLdWCyGsbExMAyDvr4+0DSt2qdXbaSby+UwOTmJRCKBrq4uDA8P891SZIKvy+UCwzD8jSOM/NRGY9WYXy5FbMJROEpG6cSTghQtE4lEWUoKpf3rgeVKVRQzSBeSscfjQTKZFJFxLBZDbW0tGIbRpFy4kPhAk660oSGdTiMcDvOmMOvXry+pRV1qpJtOpzE5OYlgMIju7m709/cXXMhaid1sNhfMogLAtwWTNAJZ2s3NzWmaBlHsvcKpxF1dXairq8PatWv5FExjYyOsVis2btwIQNzMEI/H+QGIwsGRxKdB6q5VrUW9co9J6JtAJHmzs7NgGAZNTU2yrb3CfLGSkqJS0Jt0tX5vxciYzHELBoMIBAL47ne/i3//938HRVH4m7/5G2zevBlXXXWV6KEnxIEDB/DrX/8abW1teOeddwr+/o//+I/46U9/CmDxmj9z5gwWFhbQ3NyMnp4eOJ1O3lD99ddf13ReHzjSlWtoINIvn88HmqaxadMm1QLqckk3mUxicnIS4XAY69evx8aNG4vmUZeiRohGoxgbG0M+nxeRrdL7tWybgOS85+bmRJG6x+MpejMpLcHloj6inyUkk06ndfNyrVbDG2LFWEpJ4ff7eSUFTdMip7alFqOUsJy2jlognOPmdrsxMDCABx54AIcOHcIrr7yCvXv34vTp0wiHw4qk+8UvfhG33XYbbrjhBtm/f/3rX8fXv/51AMDzzz+PBx98UET8r7zyStkdoR8Y0lWa0BAIBDAxMcEL/uvq6jR1rGiNQpPJJNLpNE6dOqXar6CcSDefz/PuYhzHoa+vT3FpVc7cMwJS8CPDK6WOacL3a8knykV9wHlDFxIZp9Np+Hw+fvihkGi03sDV1rpbalvFGhhIvnhubg7xeJwvRhHTJfLdLoXkqpV0hRDmdKPRKLq6unD11Vfj6quvLvq5vXv3YnJyUtU+nnnmGVVGNmqx4klXrqEBAHw+HyYnJ1FXV4fNmzfD4XDA7XZrjlrVRrpC4/CamhpRB1kpmM3mghEkxZBKpeDxeBCJRIqSLYFW0gXAewHPzs6io6ND0Z5Sb32v0NCFqErWrVvH5/bi8Tivn2ZZVqQSqKTfghAXug3YYrGgqampQBmQzWZx8uRJ5HI5eDwekZJC+LBSO3Je7/SC3hpdQKzWKNfsphiSySRefPFFPPLII/xrFEXhyiuvBEVRuOWWW3DzzTdr2uaKJV05jS3HcXw3V1NTE3bs2CHq5rJYLLxbv1rQNF0wJE8IohDI5XK86c2pU6c0FcbURrokH53L5fjWYDXQQrosyyKTyeC1117D2rVrS3oBL1feVUmClE6nRbaQZIKv1Cy9Wlt39doWGRBJ0zS6urpE2xd+R8WUFFJPikpEupVIg5BjjkQiInMkPfD888/j0ksvFaUWXn31VXR0dMDn82Hfvn0YHBzE3r17VW9zxZEuIVuPxyO6oWZmZuB2uwvG4QhRbouu3GeExuHSPGq56QIlhEIh3je3v78fAEQmHKWghnRZluWbQgDITrkotu1KRZel8sVEJSDMr0lH45BVwenTp1FfXy8imnJyxhc60lWC3HEV+47kcuoURfGpiXw+z9dI9DjfSqQXhKiEeuHgwYMFqYWOjg4AQFtbGz7zmc/g2LFjH2zSZVkWuVwO0WgU+XwePp+v6DgcIcohXZqmRQQqJECpwxhBOW26cu8n+zKbzSLf3FgsppvEjHTgud1utLe345JLLsGxY8dURyRKka4eN2q5n5cbjfP222+jp6eH78zz+XyIx+P8oERhVFyqq6waI11AG4EXy6mTeWQLCwuIx+M4fvy4rBWkViWF3qQr/e70Jt1IJILf//73ePrpp/nXSMqGTIJ+6aWXcM8992ja7oojXeJTEA6HMTs7i97eXtXjcMol3Vwuh0AggPHxcV4OVUz3qhQdF3u/kHSDwSDGx8dB07TsvsppA5aSej6fh9vtxszMDNasWaM6spVCjnTVWkkuN2iaRm1trehBWcqfl5C3cPmtZ6pCzzZgPaJmqSdFQ0MDurq6eJP0eDxeYAUpHbWktHqQmtMsFUtxGLv++utx+PBh+P1+dHZ24t577+VlmF/60pcAAL/61a9w5ZVXwuFw8J+bn5/HZz7zGX7/n//85/GJT3xC03GvONKNRCJ48803UV9fj7a2NlH+qhS0ki7HcQiHw/D7/aAoCkNDQ7J2jnL70ZpeYFmWJ1uLxYLBwUFFYi8nkiYXVD6fh8fjwfT0NFavXq3K66EYipGuHqh0vriUPy9RUQglbel0Gh6Ph09VLGUsjp5twJWc8qA0qZe4j8XjcZHHAmnrFRJypW0do9GoamXSM888U/I9X/ziF/HFL35R9Fpvby9OnTql6TilWHGkW19fjz179sDn8yEWi2n6rFrS5TgO8/PzmJiY4C+Ybdu2qd6PFlLkOA7RaBSBQAAAipItQbmRrtvtxtTUFNra2pZMtgSVJN0LGSkL/XmFYFmW95cVTmIoVztbrflhsr1S5yDnPibXSZZIJJBOp2Gz2ZBOp0WpnHKPeSmR7oXEiiNdk8kEiqKW7FsrB47j4PV6ee/cHTt2wGaz4ejRo5r3U4p0OY4TRbZ2u121GkFL23A+n0coFOJ1tsPDw7p2NZlMJiSTSUxNTfFL03w+r6v1YTVtx2w2w2Qyob29XUQWQu2s0DuAyLWUSEZPoqxEpKtlQgmBUifZ+Pg4amtrYbVa+YkVapUUcpCSbi6XK+t4lxsrjnQJLBaLbCtsORAah7e0tBR452q9Yc1ms6LMjOM4Pj9cW1uLoaEh2O12HDt2TPX21XSwCR8gdrsda9aswcDAgOp9qInAUqkUwuEwotEo1q9fzxepiFWl0BCc/KclutY70q1k8UtJO5vJZPgUhZBk7HY7HA4HUqkUstmsLhGv3l66lRgiWVtbi6amJkUlBUlTEOmftHgn9KRYipfuhcSKI13yhevh/iUsJhWTmmkFTdNIJBKi14SDJWtra7FlyxY+QU+66dSi1ABLQrYtLS3YvXs3fyFr2X4xEshkMnC5XAiHw6itrUVfXx/q6uqQz+fR1taGaDSKwcFB/nsgGloybYCoBch/S1liVjOE7apykrZEIoFsNovp6WlepSKM9rQ+pPS2ddSbxJWaI4RKCun+hdK/2dlZpNNp/v0k/ZFKpfj7ttqKt3JYcaQLLH6xS4l0GYaB2+2Gx+PBmjVrdMtvEgjTC4Rsx8fH4XA4RGRLoMeFQmaqTUxMoLm5WRStl2t6Lr2Bs9ksJiYmEAgE0Nvbi8HBQZw5c6bg8+R85MaFSw1wpNGftKGhWiOYpfxmQkmbz+dDf38/75QlNxJHriglR16VSC/ovT0t6gU56R9wftz89PQ0kskkHn/8cfzoRz9CPB7HV7/6VWzZsgUf//jHeU27FKXMbg4fPoxPfepTWL9+PQDg2muv5WVhL774Im6//XawLIubbroJd9xxh+rzIViRpAuUF+kyDINcLofXXnsNHR0dmmRSWpZ/RDJGpvjW1dVh27ZtFTFYFhb9GhsbsXPnziXPVJMWwoiNo8/nQ09PDwYGBoq2/xZzKitmgCNtaCCrhVwut2Rzl2qUsAFioiw2tYI8pITtvXLevJVSL1TT9oiSgpz7rbfeimuvvRY333wzPve5z+Gdd97B3NycIumWMrsBgMsuuwy//kyhejQAACAASURBVPWvC47/K1/5Cn7729/y9ZH9+/djaGhI2/FrencVQcsNJDQON5vN2LFjhyrpF0GpabpCEJkZWc5XmmxdLhcaGhpkB1gSlBvpCp3F5AzeyXvlSFcr5KKahYUFRCIRtLS0yBaohCmKpY5Vv1BQ8zCwWq2yxt/CPKjP50M0GuVfF64YypW0VULiVantRSIRtLa24rLLLsNll11W9HNazG6EOHbsGPr7+9Hb2wsAuO666/Dss89+OEhXrSRJaBxOSOOdd97RvGQlUXWpLiUS2drtdjQ0NGDLli2a9qMGHMdhYWEByWQSfr9flbFOOXPPpqenMT8/L+ssJoRSVKtXWsBkMskWqMhkBkI4yWRSZAtZbtfUcqPclIDcyHmv14tsNovm5uaCKcc0TRd8N6VWDJWQoOlNuiQtGI1GZbtDy8WRI0ewfft2rF27Ft/97nexefNmeDwerFu3jn9PZ2enZmUTsEJJVwi5SKGYcXi5UjMltYBweV9fX48dO3bAbDaXJaAuFvUIc8MkshsaGlIVwaglXVJYDIfDcDqdGBkZKXljXgidrtJkBqEtpLBrymq1IplMwufzobGxUdPkikpDb52ukjevtImBmN0Lp3pIi5qV8ErQczUiDITC4bBupLtz505MTU2hrq4OL7zwAj796U9jdHRUl20DK5R0pQoG8rRLpVKYmJhAJBJBT0+PrHF4ua3A0s8IyVa6vCdWk1pAiF1KckLVA2nSsNvtOHLkiOobthTpEsnc1NQUVq9ejZaWFnR0dKjKnVa6I00L5Ap3wOKK59SpU8jlcpiZmUEikQDHcXzhjkR/0skVywG924CVfjOlJgYygUFa1KytrUUqlUIwGJSd6lENEN77ejZGCK+fa665Brfeeiv8fj86OjpERlNut5s3v9GCFUm6BETBQKrq8Xgc69evL2ocXo7qQUi6QpVAU1OTbC61nOW8tOFBqOe12+3YunWrKDdMSFpNxKZ0PMJzWbVqFd848dZbb6kmTTl5WbW1AVutVlgsFnR2dvLpBqINlcqRzGaziIiXY7jmhepIE0ra5KZ6nDp1CrFYDF6vVyTVqpb0jTASD4fDupHu3NwcVq9eDYqicOzYMeTzebS0tKCxsRGjo6OYmJhAR0cHDh48iJ/97Geat78iSZdcpBzH4cyZM2AYBr29vSXnnQHazWiEn5mdncXk5CSamppkVQLS49O6DxIdE7KtqamRlZgBSxvBI8w/NzY2FjSDaN32SmwDFmpDV69ezb/OMAzfWSZchguNwIlhvh4pimpsAybfjcVi4YtGgHL6Rs1Uj0qsfITnG41GFdUKUpQyu/nFL36BRx99lDdIOnjwIN8F+8gjj+Cqq64Cy7I4cOAANm/erPm4VyTpxuNxnDlzBtFoFN3d3ejp6VF94VosFr7bRQ04jkMymYTX68Xq1asLCEovmEwmBINBzM7Owmq1ljTX0eLvQEhQmBd2Op2KigctpClXSKvGgZJqj4emadlluNAIPJvN4sSJEwBQ0HF3ISO/Sk/vLZa+IQ8q6cQKYVtvJY9NS3qhlNnNbbfdhttuu032b9dccw2uueYazccnxIokXQDo6elBIBCA3W7XFCmozenm83l4vV5MTU3BYrGgq6uLF0vrjVAohGAwiGw2i02bNqmSs2kdwcMwDI4dOwa73V5SxqZ12+S7YhiGL+BUU3qBoNyIUmoEvrCwwI+cl7M71DLPTc9ofrlGpkuhJGkjChPhLLfjx48X5NKXMm6eoBKjeiqFFUm6TqcTNTU1iEajS8rPykFItsSHwe/3l9X9VmrpGA6HMTY2BrPZjObmZqxbt061flit6U04HMbo6Ciy2Sx27typmtDVkJ3QIW3NmjWgaRoejweBQADBYBBOp1MUBWq9uaqtcCOF1HuWQCnyI34LwpHzekJPSdZSH3ZShUkikcDk5CQ2bdrEP6ik4+alD6piXaLSekYkEtFVMlZJrEjSJSAG41o/I0e6wgr+qlWrRD4MpL9bC4o1VEQiEYyNjcFkMvETIc6dO6fLtAmCaDSK0dFRUBSFwcFBvP3226oJvVhHGXBeUUEeGF1dXbzRtclkwtjYGJqamlBTUyPqMCN6USERL3VibTVCKfIjfgvC4lQymcTZs2dF30e5Lel6RrqV6kYr1torzKULfXnlpnpIlT6RSETTlO8LiRVJuiQCslgsvMRFLaSkKzT1bm1tlbU+XIrMTHjhErKlKAobNmwQ5ca02DUCyimAeDyO0dFRsCyLDRs2lPX0LxbphkIhjI6Oora2Ftu3b0cwGCz4bsjvI1eoIhaI0pZW4ZKTRMXAynKPKgbh7DHheJyjR4+ivb29YISQzWYrIJtShKq3TWQlDcelUMqlK031sFqtyGQycLvdiEajCIfDBukuB5Yi/xKSbVtbW1GfWa2TGqSfiUajGBsbA8dx6O/vlyVCNXaNxY4pkUhgfHwc6XQaGzZsWNIFKBfpksjZZDKJinzhcFiTekHOAlEq3yJRMcHs7OySo+JqJW+Kogr8FkpZQkoLd+Qhp6f3QjX4OBSb6rGwsACPx4OZmRl8+9vfxsTEBD7+8Y9jaGgIf/qnf8qP1JFDKcObn/70p/jOd74DjuPgdDrx6KOPYvv27QAWa0lOpxNmsxk0TeP111/XdE7ACifdciJQYrp95MgR1RMUyu1ii0ajeO+998CyLPr7+4sm+ssZwUPIanx8HIlEAv39/Whubl5yLlQYRScSCYyOjoJhGNnIWQ+drpJ8a2FhAXNzc/z052JRsZpzrsYcsdwxlbKEJPnQmZkZ0dQK4sVgsViWHKVWs+8CkW8RBc5zzz2HvXv34uWXX8aZM2dKrhhLGd6sX78ev//979HU1IRDhw7h5ptvFrX7vvLKK6LfRStWJOkK0wtqI12hdy7HcZrsHLWSbiwWQygUQiKRwODgoKqo02w2a4rayRTfiYkJ9PX1obW1tSSpqNWEUhSFTCaDd955hydzYaQhfW+ldLoWiwU2m03U705yoxcqV6xnxKx1W0r5UJKyCQQCfJekcLAmSVFoMQWqRE63kkMpgcV01u7du0t+tpThzUc+8hH+/4+MjMDtdpd9nHJYkaQLnH/alSJDMhvM7Xbz3rnHjx/XVKxQ21ARj8cxNjaGXC6HxsZGdHR0qF7mm81mpNPpku/LZrNwuVyYm5vDqlWrVDWEAOfztKXem81m4fP5kEqlsGnTppJkrkS6lYIwN6o2V+xwOJDL5fjZXEs5Pr2bGfTYFknZkIGm5LeWm8Yg7CorNs2jEt68enpWC0mXyPQqgcceewxXX301/2+KonDllVeCoijccsstuPnmmzVvc8WSLlB8Sc6yLGZmZnijcql3rpabp9R030QigbGxMWQyGfT19aGlpQVjY2Oac7TFlkXE03ZhYQE9PT28c77ac1AyJidgGAYTExPw+XxoaGjA6tWrRQUfJWj1060UlMblEMUAwzAYGxsrGCLpdDo1RcV6kq6ek4DJ9oQ+x1IXMkDcVVZsmkcul6va9ALZHqnBRCKRgoYNPfDKK6/gsccew6uvvsq/9uqrr6KjowM+nw/79u3D4OAg9u7dq2m7K5Z0KYqSvfgJ2brdbqxdu1bWqFyLPy7ZlxxI8SqVShXkU8vJ0cq9X+ppOzIyApPJxEuOtGxfjghZlsX09DRmZ2exbt067NmzB16vV3WqQ267erYBL2U7wqh4ZmYGW7du5dM4cjpashwX6milv73e6QW9VwVq2uDVTPOIRCJ8zUAYGZfbyFCJ9AJp8KnEFOC33noLN910Ew4dOiRKrRGDm7a2NnzmM5/BsWPHPjykKwXDMHxku3bt2qK2hGr8cYshmUxifHwcyWSSj2ylF6JW0pW+n5Ah8fCUGohrVTtI3y9Ub5Dvi3wfapsjgOps+S0FpaiYKCiEOlqhAY7eblsXqoNMCjmVwOzsLFiWRVNTk2z+XEjEaqZ5VKIwR/apd2PE9PQ0rr32Wjz11FOiYa7k4ex0OpFIJPDSSy/xY3y0YMWSrvDCHx8fh9frRUdHhyoPWEK6Wj0UiFIgHo+jr68Pq1atUrwBaZpWnAgsB0K6woLf2rVrsWfPHsVhfuXoeoWDK1tbW2ULilrSA9Vk7bgUCJfjwrSK0IfW6/UiFoshmUzyzSZLIeNqHSEEnNfpKhXuhN+J3DQPh8MhatGvJOlqdRgrZXjzzW9+E4FAALfeeisA8NKw+fl5XorGMAw+//nP4xOf+ITmY1+xpEtykMQbVYmc5KBVjZBKpXirOy1uZloj0Xg8jiNHjsjmoJe6fYqi4Pf7MTs7K+ssJj0Wrd4LgUAAsVgM9fX1ug2UrAaLSKkPbTabxenTp9HX11cyKq6rqyt6TVZLpCuHYoUvJW/eYtM8yOs0TetiCiSNdLXo0ksZ3vz4xz/Gj3/844LXe3t7yxpOIMWKJV2v1wuTyYRVq1ahvb1d01NULemm02m4XC5EIhFYrVbs2rVLdZVULSmSyNPlciGfz2PPnj2q9qGFGIPBIAKBAFiWVTXeRwvZJRIJ+Hw+MAyDuro6zM3NIRgMIp/P8wbYdXV1cDqduhibLAV67JsUv+SiYtLKSiLAeDxeNFdczZGu1si01DSPcDiMUCgEj8cjMgUSTqzQsj8h6Uaj0YoU0iqFFUu6pNeftE1qQSnPhnQ6jYmJCYTDYfT29mLTpk04efKkJtlLKdIVDpZsbm7Gzp078c477+hK6pFIBKOjo6BpGi0tLejq6ipJuIA6QiftxtlsFo2Njdi6dSuy2Sxf5Mvlcli1ahUfDc7OzhboaYlyoFi0V21pimJEqdTKqpQrttlsSKfTiEQiZU85Fu5HT+gVhZPCHU3ToinSwsKdsL1X7TQP4UMhEomgq6tryce6XFixpEuw1EkQQmQyGbhcLoRCIfT29mJwcLBgNJCWfciRotAspqGhgTdDz+fzZXWkyUHOf0FNp46abafTaYyNjSGRSGDDhg2wWCyYmJgQvYd8Z0o5UuHNRsas2+12kStZuRNsKw2t0alSrphhGMzPz2Nubk6UF1WjoNDjuEqh0vPR5EyBSk3zEBbvhOcbDoexbds2XY+1klixpFsuGQKFRJ3JZDAxMYFgMIj169eLyJagHDWC9LgCgQDGxsZgt9uxfft2kaetFsUAeb+UGFOpFMbGxpBMJrFhwwbRBa01Tys9llwuB5fLhUAggL6+Pj6vHY/HdfFeSCaTiMViIl9a8h3Oz8/zS9ByieVC54alIBG/0+nkK+RqFRRyUXElmhmW2/2t2DQP6VDNZDKJt956Cz//+c/hdruxbdu2kqY6QGnfBY7jcPvtt+OFF16A3W7HE088gZ07dwIAnnzySXzrW98CANx111248cYbyzrPFUu6BOVGuqlUip+tFggE0KMwyFL4GS3kLiTpUCiEsbExWK1WxfE7WiHcPonQw+GwYkuwFlIXEjTLspiamoLX60V3d7doiQjoo16Qa2/lOA7BYBDT09NIpVL82HlyYwqj4krPMJOiUh1pxaJiYa5YLiq22Wy6j0uvliIfTdMiUyCO43D8+HH09/dj+/btePPNN/HMM8/goYceQnd3N/7t3/5NcVulfBcOHTqE0dFRjI6O4ujRo/jyl7+Mo0ePIhgM4t5778Xrr78OiqKwa9cu7N+/vyxjqQ8E6Wr1ugUWzVR8Ph+6u7uxYcOGkhdYOaSbyWRw4sQJmEwmDA4OFphdLwVEdzs6OoqFhQXFCF14PFoVCW63G1NTUwU6Xul7KyEZE2pHe3p6+NdJYSYWi4lmmKlZlutVSFvuNmA1uWK3241YLIYTJ06UjIrVQM9IV8+Jx8D5Rgu73Y7Pfe5z+Nd//Vf86Ec/wrp160quRkv5Ljz77LO44YYbQFEURkZGEA6H4fV6cfjwYezbt49fPe7btw8vvvgirr/+es3Hv2JJt5z0Amml9Xq9sNlsGB4eVv0015JeiMViGB0dRSqVwpYtW3R3tCfRZzQa5bXJpc5DbXqBRJgLCwuora0taQxUyY40OSh1VMkty4VFO5ZldemKqpY2YGlUTCYzbNy4kX8okRE55KEkbHsuZX6jJ+lWUqMLLKoXSMS51P2QZiSCzs5OeDwexdfLwYolXQI16YVcLoepqSnMz8+ju7sbF110EcbHxzVd8GrInXgwZLNZ9Pf3I51O60q40sYJh8MhuhCKQQ3pkpxzTU0NGhsbRd04ShASrLDvfzl1usUaG8iyPJvN4o033gAg9qR1Op2adKN6k67e3W3SpTjZDzG/IWScSqVEBSpCxoTM9EwvVMJ3QUi6yWRSlSqnWrBiSVdNpCv1LSCttJlMpiyZmVIaQ9gWXMwGsRTIsl56sRMt78TEBNra2vjGCa/Xq3rbxUg3Go3i3LlzoGkaW7ZsgdlsxunTp1Ufc7V2pAmLdnNzcxgeHi7wpJ2enkYulyswfFGa1FCNI9NLbUvJ/EZYoBJGxTU1NUin0/D7/ZotIeVQSVtHcp3p9T12dHRgZmaG/7fb7UZHRwc6Ojpw+PBh0euXX355WftYsaQLLF5McpGukGzlfAvKKb7JpReEzRP9/f1F24LV7kN48xCH/PHxcTQ1NRWdblEKJpOp4EGTTCZ5re3AwAAfHWWz2bKUDoSQqoV05aDkSSs3qYEY5gjJGNCvkHahCVwpKk6n03jjjTf4eWUkKpZ+F2qJtNLpBUC/32T//v145JFHcN111+Ho0aNoaGhAe3s7rrrqKtx5550IhUIAgJdeegn33XdfWftY0aQLiAmUYRhMT0/D6/Wis7NTsfijVZ4FiCNqocSMNE8o/ehabizhwD2y1Hc4HKq6yEpBGOlmMhmMj48jEolgw4YNBS74WkhTKb2gB5aTvOXGwkhtEF0uF7LZLDiOg8vl4hUU5ZrgLFekqwWks8xisWD9+vX863KyLanfglJUXEnS1Zq6KOW7cM011+CFF15Af38/7HY7Hn/8cQBAc3Mz7r77bgwPDwMA7rnnHpEkUwtWPOkSMpmYmMDs7CxfWNJbY0jTNLLZLM6dOwe/319SYgbIj7IpBpPJhHA4jOnpaVgsFt3kZWTbDMOI1A5KDwstml6iolhYWMDCwgIfDS63n24lIFe0C4VC8Hq9cDqdilpatR69FzrS1YJiUTFZIQiN0oVETDoR9cJSWoBL+S5QFIXvfe97sn87cOAADhw4oP5AFbCiSTefz2NqaorvaqoE2QKLP7LH48HCwgIGBwdVqQWA89GxmpQA6cLJZrPYtGmT6gtJzY2bz+exsLCA+fl59Pf3lzx+LRFmJBJBIpHAwsICWlpakEwmEQqFEIlEEI1GRZ1mTqdTs8N/NaYpLBYLWltbC/KjRD0hN8+NfAfCTjs9J+7qSbpaVjlyfgvSqDgYDIJlWUSj0ZJRsRpU2ku30ljRpEt8BRwOh2gppBalCEto8N3e3o6GhgZ0dnaq3r4amVkymcTY2BjS6TTq6+vR29urmnBLRdLCAlx9fT3WrFmjqkddDekmEgmcO3cOHMehpqYGmzdvRjabRUtLCxobG+HxeDAwMCDqNJucnATDMKIlqdPpVFyer6Q2YDktLWlrJTPzyCBJi8UCp9OJTCbDTwBZKmFWU6pCGhW73W5QFIXm5uaSUbGaXHElvXSXAyuadDdt2gSWZeHz+TTnjUgUqjQfSjh9YmRkBADg8/k0HV8x0hXmVUkRjkwOVgulETxCf4fGxkYMDw8jkUioVjsUIzty3NFoFAMDA2hubsYf//jHgvcRDapcp1kmk0EsFuOr5lJNLVmeqwLHwfTuu7D+3d8h/cwzQIVmZQmPX0u6iLS1CpHNZhGLxTAzM4NAIICFhQUAKOi007IqqCbSlYJEpmqiYjW5YoN0qwAWi0VzQl2OdIXTFKSethzHac5TypFuLpfDxMQE/H5/QRFOS9eYcPvCyCAcDuPcuXOoqakRFeBSqdSS8qwMw2BychI+n69k8bBYpExR58eLC28+OSOcfD7PTwQREVEuB/Nrr4F+/nnQv/gFTH4/AID7679G5pFHyj5HNdAjD2u1WtHS0sIvt1tbWxVnl6kpVAGL165eedNKTAJW2l45ueJoNIrGxkZYLBYjvbDcEGp1c7mcpkkQQjWCVAerNE1BK4T7ECoruru7ZfOq5YzgIURKnMU4jsOmTZsKWo61TpogEDZkEEVIqSioHNWBnBFOMpnE2bNnQdM0gi4X4r/7HZpffRWrjh8HHY+DA0B+ldxllyHz3e9qPLsLCyGBK3XayZGPnFm6nvnh5SRdOZTKFRNv3r/927/FsWPH+PPftm0b9u/fr8gDL774Im6//XawLIubbroJd9xxh+jvf/3Xf41XXnkFwOK15/P5EA6HASz+Plu3bgWwaCv73HPPafoOhFjRpEtQrulNLpfD3Nwc72m7FB2sHMgQxKmpKRFpKV2A5TiZkcaMRCKBgYEBRQMOraRL/H7Hx8fR2tpacpKFEHpJveipKXT98pdYd+oUzH/8IyiGAedwnNcF0zQ4AGf/6q+w8Kd/Cuf7EbHT6VRsblgqllNxUIx8pGbp6XQatbW1SCaTok67Cy1lI8erRxROomKaprFx40Y89thjeOihh1BTU4OBgQGcOnUKn/rUp2Q/y7IsvvKVr+C3v/0tOjs7MTw8jP3792NoaIh/z4MPPsj//4cffpjvYASA2tpavPnmm0s+B+ADQrpazWhIXvH06dNoaWnhPW31BMdx/LRZQralLjwtpEvygu+++y42btwo6ywmhBbSDYVCSCaTWFhYKOu7KZt0WRbm48dhfuEF0IcOwfnee2gBwA4Ogr38cpjeegsmnw9cdzc4jwdYuxapp57Cuosuwppcjs8TT09PI5FIiJobGIbR5eavhjZguaIdsQw1m82iIZLCCQ1qH0YXOtItBaFnRSwWw5YtW7B//37s379f8TPHjh1Df38/ent7AQDXXXcdnn32WRHpCvHMM8/g3nvv1e2YhVjRpEsuWLWRLsdxCAQCGB8fRz6fx7p160QOVmr2VyoK4DgOPp8P4+PjoGkaPT09qvdBnMmKQWi1aLVasWHDBlX2cmpIV6pI2LJli6rjlkIT6cZioH/3O9AvvADzSy/BFAiAo2mwH/0o4p//PPwzM+j6zW9gfvllsDt3gtm2DfTLL4P52MeQ/slPwL3fzGCxWApMsYV5UoZhcOrUKZEjGSlaaRkjVK3aWiJPa2xsFHnRCic0TE1NIZlMAoCou0wq5atEM0OlvHmj0aiqQpqcYc3Ro0dl3zs1NYWJiQlcccUV/GvpdBq7d+8GTdO444478OlPf7rsY17RpEugJtINhUIYHR3lySQYDJbdlaaUgiCKAafTiZ07d8Lv92u2g1QiRrmR6aOjo7pMg8hkMhgbG0M8HufNz+UUCWpRinSpmRnQhw4tEu2rr4LKZsE1NoK58kpkrr4azGWXwfL886i9/370uN1gd+9G6u67Yf3BD0C//DIy//N/InvXXUCJG1mYJ3W73di1a5fIkUwuIiREvBzeC8tB4EoTGsjDyO/381I+m83GT2Ugk6P1OD69vReEqEQh7eDBg/izP/sz0YNiamoKHR0dcLlcuOKKK7B161b09fWVtf0VTbrCSJc0SEhB5oSZzWZRgSkajWr24VUi3XA4jNHRUVitVmzdupWXCGkdwy5XSBPOUlu1apWoyKe1c0z6XqkiYWhoSJebrIB083mYTp5cJNpDh2B+37E/39eH3C23gLn6arAjIwDLwvL003BcfjlMbjdyu3fj3b/6K/Rt3Iia//bfQGUySP30p2A++cklHZucIxmJCImmWOi94HQ6eRlbNUe6ardlMpn4c2pvbwdwPuVG8sTJZBLHjx/nPRfIw6gcf96lWFhKIfXmVTsJWMnIRg4HDx4s6Eoj7+3t7cXll1+ON95448NJugREMiYE8bTlOA4DAwMFDQfljPmR5lzJPgDImpSXUxgTvj8QCGB0dJSPnKW5VS3bF5KuWkVCuQRDURSoVIrPzdIvvgjT/Dw4kwnsyAjS3/oWmKuvBrdhw+IHMhlYnngC1vvvh8njAXvxxUg+/DBSl14Kx9/9HWq/8Q3k+/uR+tnPkFdhN6l0TMUgFxEKDdOJC1c6nYbFYgHLsrJdZlpQTQQulPJlMhk0Nzejo6ODVwyQlmfphONyUjRLgTRVoZZ0h4eHMTo6iomJCXR0dODgwYP42c9+VvC+s2fPIhQKYc+ePfxroVAIdrsdNpsNfr8ff/jDH/CNb3yj7HP4QJCucLpvPB7H2NgYcrkcNmzYoLj0KId0yWeEXWTFcqrlkq7QalEYOUtRztwztYoEYgqk5kYiBjD+t97C2pMn0XrkCPYcOwZzNgvO6QTzJ3+ymDbYtw8Q2l5mMrA89ZSYbL/3PbAf+xiQSKDuv/93tDz7LHKf+hTS3/8+oOPkDTWQk3GRdERtbS3C4TDfZUasIYXpCTXt2dVCukKwLMuv5or588ZiMVGKhqZpUXNHqUnP5UCqrY/H4wWOcXKgaRqPPPIIrrrqKrAsiwMHDmDz5s245557sHv3br4Id/DgQVx33XWi3+XMmTO45ZZb+PvtjjvuUCzAqcGKJl1heiGdTuPtt99W7WlbDukScsnlcvw+it00Wkk3l8vB7/cjlUqJrBaVUElFgqqiYT4P/8svY+3Bg+g+dQpD73vw5jo7MXP11YhdfjkWBgdBE/+FXA7ORAJ2sxnWp56C9YEHFsn2kkvOky1FgRodRe1f/AVM587BdcstaP1f/wuoopZgm82G1atXiwpWZGkei8VE89yERFxXVyeK0vRedi/XtoQpGqWinXDScyqVwvT0tGjSc7kQRrpavXSvueYaXHPNNaLXvvnNb4r+/fd///cFn/vIRz6Ct99+u4yjlceKJl1gsao4Pj6OcDiM7du3q/a01UK6ZIClz+dDe3t7SXcxrfsgrbXhcBg1NTW8fVwpqCF1YdOEFkWCIqGn0zD9/vfI/vKXMB86NTBOdQAAIABJREFUhM6FBXAUhfzwMFJ3343sVVch3dcH17vvYufOneiiKDAMg1gshkQggOQPf4jGJ59Ejd+P2PbtCH3zmzBfeSUcdXUwUxTo//f/UHPLLeBoGrFf/ALulha0VhHhKhGlnDWk0tKcmABlMhnkcjld5Ip6R7rlqA3kUjQMw+DEiROwWCz8pOdsNlvQaad20rNc6341enQUw4on3bGxMbS2tiIWi4kE5KWghhCFZujd3d1Yv349aJrW7I9bbPsTExO81WJfX5+mJ6rJZFKUygkVCaRpQosiQeQ57PPBdOgQTC+8ANPLL4NKJGCqqQF7xRXIfPKTeLenB2GbDXa7Hfl8HtFTp9Dd3c1XwalMBq3/8i9Y90//BLPXC2ZkBJEf/QjRXbsWSWl2FoloFD1PPon1Tz+N1ObNCP7oR7D094M7c0b1MS8HtORh5ZbmQhOcbDaL0dFRkXKARMVaHbiqgXTlkM/nYbVa+YIdIC7akbZn4cqgmPmNMNLVe+DlcmHFk+62bduQz+fhcrk0fa4Y6ebzeUxPT8PtdqOzs5OfPOF2u8sewy63faIdJIUshmE054DlFAmEyJeiSCDpBfNdd8F8//2gOA7ZtjbMf/zjqPnc51Bz9dXgbLbFQiVFYWFhgZ+v1tzcjLm5OcxNTqL7t79F59NPw+LzIXfJJUh+//vIXXYZQFFwAHDU1aHdZoPjzjth+fd/R+K66+D5m79BLJdD9PRpJBIJvP322yJ7SC3t3npjqcUvoQnO7Owstm3bBrPZzDe7KLX7lvLo1bsop2dLsdyUB1K0ExrosywranmWm/RMvhdgsZCt54Tt5cKKJ91yoWQaMjs7i6mpKaxZs6agi0yrBExKuhzHYXZ2FpOTkwWGOnLvLwWhxIwoEqanp9HV1aXa87fYtjmOAzMyguCtt2Jq2za07tuH1WvWIJ/PI89xoLDYUEHkchdddNGiwU46Dfrxx0Hffz9MXi9Sw8OY+od/gHdwENlcDrXvvcffRA0TE3D+5V/C5PUi8cADyNxwA1ZRFFopCizL4u2330ZfXx9ftHG73Xzhisie9JjjpRZ6+vuS6JSizo+bF5KQsN2XePRyHCfyKBbmSPU6f5ZlL0jUbDabFYt2wnw5wzD41a9+hTfeeAPZbBYnT57E0NBQ0TRNKd+FJ554Al//+td5adhtt92Gm266CQDw5JNP4lvf+hYA4K677sKNN96o6TuQYsWTrvBCK/dpL9TCtrS0KHowaC2+EeISWi0Wm3Wm9dgJ6QoVCaXajbV8R16vF3NNTej46lex+f1uHpZlQVEUstksXC4XkskkNmzYsHijpNOgH32UJ1v20kuRfuwxcHv3Yi1FYS3Om7jEYjGYfvpTNH7zm8jV1+PsP/8zuIsvRl0wyC8rZ2ZmYLPZ+G4zYeGS5IljsRgfGRJ7SKGmVO/q+XI2Ryh59Ao9iqemppDL5ZBKpeByuUp6FKuBnumFpbZey+mqnU4nBgcH4XA48POf/xwPP/wwTp8+jYceekgk9SJQ47sAAH/+53+ORyQudcFgEPfeey9ef/11UBSFXbt2Yf/+/apkakpY8aRLIGdzWArCwY/19fUlq/paI1Fg8aI7fvw4amtrdZl1JkQymcTc3Bzy+bxqRYIa0ggEAggEAjCZTBgeHhalMUhqhDRUtLa2gkqnQX//+4tkOzcH9qMfRfqxx5Dfu7dAdUBRFGrNZtR/5zuw/OAHYPfuRf7JJ9HT2IhoNIpYLIazZ88iHo/DZrOhubkZCwsLcDgcsNvtonlsJCoi0WIul+MJaXp6WtTgkM1mEYlEChQE5UDPiLqcB62cR/GxY8fgdDoL0hPCtIzah5CepFsJHweaptHU1ISBgQEMDw/j4YcfLvoZrb4LQvzmN7/Bvn37+OLgvn378OKLL+L6668v+xw+MKRL/BfUkm4oFEIqleLzamT8RzFoiXTj8TjOnTuHbDaLiy66SNfcE9k2wzBoaGjA5s2bVX1OyfScIBaL4dy5czCbzWhpaUFnZyef2wWAubk5vh3y4osvhimTOR/ZErJ9/PFFslUA5fXC+oUvwPzaa8j9j/+B3D/8A0DTsGLxobawsICmpibs3LkTFEXx0ezs7CwvQSIdUiQ3Sgp2hJAcDgfWrl3LrwRSqRSCwaCsgkDY4KAGeke6eoCiKJhMpoIRQnIexcB53wVy7lI1QLUW5QCI7nG1LcBqfRd++ctf4j/+4z8wMDCABx98EOvWrZP9rMfjWdI5rHjSFXrqqiFEYRdZXV0dBgcHVRdm1OwjlUphbGwMyWQSAwMDSKfTuhGuVJFgsVgwPj6u+vNKMrBMJoPR0VHeHrK+vh5TU1N49913+aV+KBRCc3Mzdu/eDQvDgH70UVjuvx/U/DzYyy4rSbYAYPrjH2H7wheAeByZJ58E+2d/BmDxOyM+Eps3bxY1g0g9dkmxheT3XC6XiEQJERPC5TgOVqsVZrMZ/f39fLRPfGrlxggRMpbrstKTdCsNOY9ioe+CnFm60+kEwzC6naNeto4EwtWsWrMbNfjkJz+J66+/HjabDT/84Q9x44034ne/+50u25ZixZMuQSmnsWQyidHRUWSzWb5T7c033+TlOmpQLL1AcpzBYBD9/f281aKaJgMppDe2kiIhlUqVbXpOtiv1Xsjn88jn8+jq6kJLSwvOnDmDfD6P+vp6JAMBzD/2GHp+/nNYAwGkR0bA/PjHMAncmBROCPQPfgDLHXeA6+lB5vnnwW3ezJ9XMBjkjXZKQa7YIsxzhkIhTE9P8/pXEi2vXbuWfy8AUeGKfNdC/4XZ2VneCEe4RNdTpnQhImYl3wXyEIrFYshkMnj99dd16TDT2+xGGOmGw2FVMlE1vgtCffVNN93Et/l2dHTg8OHDos9efvnlSziDDwDplop0SfNELBbjZ5ERaC2Myb1faLXYIzOWnRC1FjMSQrpCjwShtEz4Xi3G5OT9HMfB4/FgamoKnZ2duOSSS/hzIblRl8vFu4412mygH3sMlgceADU/j+xHP4rZW2/FwtAQotEoskeOoKamBvX19XA6naivrz8fJSaTsH71q6APHgTzX/8rsv/7f4Orr8fs+45p69atw8UXX7xkGRYhBkIkkUgEZ8+ehcViQVtbG6LRKE6ePMmrHgiJ2N6XvQHnC1dNTU38A5MU7IgjVygUQiAQgN/v1zRuvZLQw3dBaJYeCAQwPDzMpyfIPDeSnhDqaJ1OZ1FS1RLUqIE00u3v7y/5GTW+C16vl792nnvuOWzatAkAcNVVV+HOO+9EKBQCALz00ku47777lnQOK550CaSRrjDy7Ovrk9WrlqtGAMRWix0dHYoTIQjpqh0yaDabwTAMgsEgXC5XUY+EciRmgUAAbrebn5QhLZLNzMxgfn4ePT09GOzqguUnP1kkW58P7N69yD35JPKXXYZGACSbJlQkRKNReDyexenGgQC23H03zKOjSNxxB3DnnQhFIhg7fhxNTU2LqQqdB0mShoN0Oo2hoaGC1A4ZihmLxeD3+5FMJkV6WLmCHfFfMJlMcLlcaGhogNVqLZByCd24SpGRntB70gOBXHqCZVl+VUHSO8U8iith60juY7VmN2p8F/75n/8Zzz33HGiaRnNzM5544gkAQHNzM+6++26+S/See+5RtSIrejxL+nQVgZAuWTIT4ijWslvOmB+O4/gRP62trbLz1ITQSowsy+LEiROq1BRaIt1YLIZgMIhcLoft27fDZrPxqQQAmJ+fx+TkJNrb23Hxli2w/uQnsDz44CLZ/pf/gtxTTyH/0Y/KblsYKRFZj+k3v4H15pvBAZj63vfg3roVkf/4D1AUhdbWVtTV1SGTycBsNutCGERV4fV60dvbi7a2NtnfXU4PK4zoihXsotEogsEgWltbeXJes2YN/zuQTjMpGSk1duhVSKsU6cqBKCKED7NiHsW5XA4mkwlWq1X3EUpavHRL+S7cd999ihHsgQMHcODAgfIPVIIVT7rkxjKZTPD7/XC73Vi3bh3fRVYMJKpUC+KzGgwGsWvXLlXLJpqmVZEuUSSkUils2bJFVa5KzYSGdDrNF/YaGhrQ09MDq9XK5ybD4TBvvL5r0ybY/8//WYxsFxbAXn45ck8/jfyll5Y8FhGSSVhvvRXo6kLiqacQ5jgw73tjOJ1OPiL2+/1IJBJ8npGkJ+rq6jTdnEQDTYaKal3qK0V0hIjn5uYQCATAsiwa35e2sSzLy7bI70u6rISETyJrucYO4li31MYOvc1utKKYR/Hp06f5FJzUo1ip1VcJ0mtdbaRbbVjxpEvynuPj47DZbKpmkRGojXSFVou1tbVFx49LUYrYpYoEt9utOgdW7BiERbK+vj60trZifHwc7733HhobG1FTU4OFhQWYTCYMdXej4ZlnFiNbQrZ33qmdbAnsdqSffRYemw3Tfj+6urqwYcMG/njlTFHi8Tii0ShmZmYQj8cBLOYOCRE7nc4CMiXjhWiaxo4dO3Sdc0ciukgkglgshsHBQaxatYqPZoUFO2GbqsPh4B9qwHlClzZ2RKNReL1ejI+PL7mxQ2/S1Ss/TVQjnZ2dvD5d6FEsbPW12+2iPLGcR7H0PPVULywnVjzpku6orVu3wuPxaMof0TRddHoEUTwQb96GhgYcPXpU04WplF5QUiR4vV7NDRhCFCuS9fT0oK2tDWNjY5ibm4MDQNv//b9o+Jd/gTUUQvLSS5F57DFYr7hiSZFXIBDAWCKBlvcd00r9JnKdV8JIc3Z2ltfXEkKKxWJIpVLYuHGj7uNagEUd97lz59DS0iKKnqUFO5LPJo0dXq8X6XS6aMGOFP5sNhv/uwvPlxStpJMrlBo7qllXK83pKo2aF/rzClcEQiI2m82ibcViMYN0LwRMJhP6+vqQTCbLGsMuF4USq8VoNIoNGzaI5CQkci2XdEspEorNSSsFYjojVyTjOA5utxuzs7NY39aGXYcPw/rgg6D8fuQ+9jHM33Yb/Bs3IhaLIXn0KH9zkGW/w+EoScQk8jSbzdi2bduSuu/kpGEsy2JychIzMzN8JHj27Fleo0uOdyl+rel0mnf+2rp1a8mmGWE+W+qvSwp2CwsLIgMbMiBV6MQGgCdos9nMEzEhIzK5gkSFQiK+UGN/1EANiSv58wqdyPx+P+LxOHK5HF599VUcPXoUFEUhnU6rMjEv5b3wwAMP4Mc//jFomkZrayt+8pOfoLu7G8Ditbh161YAQFdXF5577jmtX4MIK550CeRG9pSClHSl0adcGoF8Rqu2V+jvoKciAVh84r/33nuwWCyyRTIigl/jdOLSI0dge+ghUH4/2CuuWEwj7NkDJwBhnT/3/kjzaDTKeywIiyiEiIm9pMvlQiQSwcDAQEUiz3A4jHPnzqGxsRF79uzhi5ccxyGZTCIajfKNDtlsli9gESIuNU6GFOLm5ub4dMxSIFewi0ajOHv2LDiOQ319PbxeL7xeryg1IeywA4Da2lrU1NRg9erVfMGOEDo533Q6DQBwuVw8EZfrvVDJcelaIfUojkQimJ2dRU1NDTiOQzAYxJVXXol0Oo2vfe1r+MIXviC7HTXeCxdddBFef/112O12PProo/jGN76Bn//85wAWf4M333yzrHOQwweCdCmK0lwUA84TqJLVotJntJAiTdOIRqNwu92oq6srWYDTQrrpdBqpVApnzpzBwMAAnE7neQ9bikI0GsXo6CjqKAoj//mfqH3kkUWy/fjHF8l2ZERx23IjzYlmNRqNYmpqio88GIZBa2srNm7cqLvVnjDylHarAeCX4A6HQ3bJT5ar6XQaNptNRMSkgEVm0a1evZpfIegJEqH7/X7e21j4N7kOO9KqS/6XvBdYzJW2tLTwjR2BQAChUIgvUgobO4QddmqMwvUmXT1BhsKuX78eX/va1/Dss8/ij3/8IxiGKZomVOO98LGPfYz//yMjI3j66acrdh4fCNIFyuvuMZvNiMfjOHLkiKzVotJntPgvTE9PI5/PY8eOHaqWQXITgaUQRuQWiwU7d+4EcN7UmbT1crEYdv7nf8Lx6KOLZPsnf7JItu/nebWCGI00NTXB7/djfHwca9asQUtLC+LxONxuN18EE0bE5ZjMsCyL6elpzM/Pa448iy35hbnXZDKJbDYLi8WCdevWobm5WXfpFVFWtLe3Y3h4uGD7WjrshFpYu90Oq9UKhmEQCARQU1ODhoaGoo0dxChcaoIj/G2qnXTJ/RmPx/kHPOmcU4Ja7wWCxx57DFdffTX/73Q6jd27d4Omafz/9r48vqky/f7cJumSlpbudKN72tLS0gUEZ0REAeU3IDAuyIy4y4wy4KCMKC7AKLjOOAoiKorLSPErozIKiI6AyNLSUmTpvtE2Ld2Splma/f7+KO/rTZq9CUvJ+Xz6gWZp3nuTnPu8z3Oe86xatQrz5s0b1nGMGNJ1BsRdrL6+HlqtFr/97W8dzgM60lBBZFpKpRJjxowxkRfZg61Il+RlSSfXNddcg/LycjQ2NtLtvlgshkwsRu7PPyPkvffcQrZckPE/fD4feXl5VDFgPkWXqBHEYjHkcjkA0C86iTQtfbnJe9PY2IgxY8YMGuu4iQj9/PwQGRmJsLAwNDc3Q6PRYNy4ceDxeJDL5XbTKM5gYGAAtbW1YBjGaWWFpQ47brGJqyfWarUYNWoUQkND6Rgckpowb+wgXY6WPHpJwW44RVxzuNN7GDAlXZlMNmTCtzvw6aefoqysDAcPHqS3EZOnxsZGTJ8+HePHj3d5/DowQkjXGU9dqVSKuro6BAQEID8/HxUVFU4VXmyRLjcCTU1NRXZ2NiQSCbq7ux3++zweb0hBkOvHS/x+SZFs3LhxkEgkaGlpgeL8eaTs2YNxX34JQV8fBq6/HvrVq8FzVfrFAenwk8vlNqcsk2OwFL0RIu7o6EBtbS1VIxByYxgGDQ0N8Pf3R35+vtsnRHCtPGNjY00iT/PZZoTcSBqFYRiHonej0Yhz586hs7NzSBF2OOAWm0JDQ1FbW4ugoCAkJyfT/Htzc/OQiRPE4J2bJyaNHTExMZSICaFztei2GjscgbuLcsSYBxgkXUeVC454LwDADz/8gBdffBEHDx40OVby2JSUFEybNg0VFRVe0iUghGipQ4w0HwBAVlaWy7lHS5GoLUWCs63G5n+/v78fNTU18PPzs1gkk8vlaK+pQcYPPyDqk0/gI5FAc+ONED/yCLpTUtDf3w/d0aMmFf7g4GCHLzTk2MRisd0OP1vw8fEZIhUijldSqRTV1dUYGBigpuUdHR00InZHq7BSqURNTQ18fX1RUFBgk0C4aRQC8+idK2Ej69Tr9WhoaEB0dLRbI3QCIgdsbW1FamqqSSOCeYcduWiQtTIMY5JSIK3O5HNEGjvIZysuLs5mY4cjEzvcnargRrp9fX0OF2wd8V6oqKjAkiVLsHfvXpPzKpVKIRQK4efnh56eHhw+fJia4biKEUG63FHsOp3O5EtKrBYHBgaQnp4+7A4W7sgeriIhKirKYk7Y1RE8pICkVqshEomo1IjkbeVyORp/+QUJ//0vrtu+HT4SCQwzZ0L99NMwTpyIUADkSMnWlLSxkomstoiYRNcNDQ0ud3o5gr6+PkroY8aMAQAqnidpBr1ej4CAALpOZ2RhZPchlUqHpaywFr0rlUr09vbi7NmztNBDTNQJOQ1HwkZAzN1DQkLsap8tFUG5BbvOzk560eAW7LRaLdrb25Gamgqj0TjsiR3utnU0Ty84+l464r2wcuVKKBQK3H777QB+lYZVVVVhyZIlVDmyatUqh8zPbYGxk3dxb1LGQzAYDNDr9Thz5gzGjh2L4OBguh2WSqW0EGPpinzkyBFMmTLF4eitq6sLMpkM4eHhg8qAoCCkpaVZjZyIuoAUu+yhp6eHRuTEFY04g5EiWeMvvyC8uBiJ//d/8JFKYZg1azBnW1Tk0GsApkRMFAlEauXv74++vj4EBAQgIyPDrZ1eBBKJBHV1dQgPD0dSUpLdEUNEFkbWqtPpTPSqxNmM+5zOzk40NTUhISEBcXFxbvfBJQZBHR0d9L1iWZZeNLhrJRcNS2u1Bb1eT+V4mZmZblWHkIKdRCJBa2srdDod9UjgRsUCgcAkP0tkYKRgxyV0hUJBGzt8fX2plao7JnacPXsWSUlJCAwMxGeffQaZTDbsqNODsPphGxGRLgGfz4darUZ3dzfOnz/v0HbYVkrCEkg0oFAokJ2dbbdA5mikS1zLmpqa4OvrS12NyHMNBgNaz55FwNatyP/Pf8Dr64Nh1qzByNYJsiXg5ghJhKnRaFBbWwuJRILg4GBoNBpUVFS4TBiWQApMABxqPiBrtSQLI3nIvr4+tLS00EKSn58fZDIZRo0aZTeV4CpIx1pERISJzIxs460Vwfr6+tDa2gqNRgM/Pz+T82qure3q6kJDQwMSEhJM2qjdBYZhqPZVJBIhMjJySMGOmNeQEfEkkuUW7IBfO/UIGbMsi46ODnR1ddls7HBmF+BqpHu5YUSQLikGkJlhSUlJDhneAI6TLlEkkDlb+fn5Dq3NXk6XbOPr6uoQERGB3Nxc1NXVUZ0ly7LorKsDNm1C1s6d4MlkMNx88yDZFhY6tAZ74Dp0JScnIycnh37BrZEbt/nAESI2GAxoampCb28v0tLShl1gstTFpNVqUVtbC6lUitGjR0Oj0eDEiROU3AjBDWdoI3kNnU7n1EXDfK0sy9KcKSkuDgwMwNfXFwEBAejv74e/v7/HLhpKpRLV1dUICgqicihrawVM5XbmHXYkIjYv2JHiY0pKCv2Ochs7yFBN7tQKW40dXNLt7+9HUlKS28/LxcCIIF2VSoXjx49DIBAgOTmZtu85AnukaK5ISExMdGpEji0nMG6RLD8/n+ouAwMDcerUKeglEsR/+SVSvvoKArkculmzoFu92m1ky5VnkeKP+RbQGmGQ5gPzKJOQGyFiYoXZ3NyMuLg4i1pVdxxHe3s7WlpakJiYiOzsbJOLBpfciNevr6+vCRHbc/oicr22tjab6SpHwTAMLV4RDbLRaERjYyPOnz+PsLAw6PV6VFRUUAkbWetwphwbjUbaqJGRkeGwAoDI7cxnsFkq2AUGBkKj0UCr1SIjI8OEiM0bOwDTiR3Eu8JSYwdXDeGNdC8xAgICUFhYiN7eXlrkchTWSJfk64hVJFEkqNVqpwpjlr6YarUatbW10Gg0Q4pkPB4PcaNGIXTzZsQXF4Mvl0N5ww1ouP9+dCYkwKDTIfD0aRPCcKVYQYZQuiLPstR8YE7Era2tUKlUVOaTmJjokeYDmUyG2tpaBAcHWzRFt0RuAEyI+Pz581CpVBAIBCbbfdLBJZPJUFNTg9DQUI8WFGtqahAZGYlrr73W5DxxyY1I2IiWl2uHaW9d5DWio6NRVFQ07PfCUsGup6cHNTU19EJWX19vUrAj6Qk+n0+J2NrEDkLEPT09GBgYoN4e+/fvR1dXl8PeHvZ8FzQaDRYvXozy8nKEh4djx44dNIresGEDtm7dCh6PhzfffBOzZs0a1jkDRgjp+vj4wM/PD3w+nxpQOwpzzwZ7igRnJWBckKJIT08P1XASiQ7DMND19kL10kuI+ve/ESWXQz97NgaefhpMfj7GAhh7YX1KpRL9/f3o7OxEfX09bb7gRkPWiJiY+RA1h7sE5lwiDg0NpV+2pKQkGAwGatqi0WiGjPZxpVCn1WqpKiUrK8vh5hMCS94IWq2WEnF3dzdtPmAYBgkJCYiMjHT7RUOn01GVirV0hTU1AiFibicgNzoknwPuawzXiMiR4ygoKDB5DaLyIEb6JK3A1QETIuZO7ODqtxmGQVlZGaKjo6nXyF/+8hfw+XzMmTMHzz//vMV1OeK7sHXrVvqZLS4uxpNPPokdO3agsrISxcXFOHv2LNrb23HTTTdRQ6fhYESQrrlkzBmQDyXwa0XdlkeCK4Y0LMuipaUFra2tGDt2rIndIgAYpVIMvPwywj76CKEKBfT/7/9h4KmnwFrIG3MLNdxhi4SIz58/TyfrkkiIRG1isRidnZ1ITk62OllhOCC7g/b29iGGQeYRMSG3trY2i0RszaCGu823NSHCFZCtb1hYGO3WSktLg7+/P+RyOZqamqBUKt3SscZNuyQnJyM6Otqp4+DxeEPsMEkDCrnAkdqAXq9HREQEEhMTPTJCiHR3Etmf+XFwh2ESOFuwk0ql8PHxQWBgIB577DF8//332LVrF0JCQmw2Hzniu/D1119jzZo1AIDbbrsNS5cuBcuy+Prrr7Fw4UL4+fkhOTkZaWlpKC0txZQpU4Z1vkYE6RK46jSmVCpx4sQJMAxjV5HgzBeD5EyVSiXUajUVzNOqr0wGzauvInjrVgQrFDSytUS2tsD9UJPuGULEMpkMDQ0N6OvroxGTVqul1X13bZUdnd5gabQPybv29/cPIWJusU6lUlHrSk9t80me3VwPa6ljjWv8w30PSMeaNSImRSyhUOjWOXHcBpSwsDD6GnFxcVCr1ejp6UFTU5OJ3I7rwuYstFotqqurAQCFhYVOKREcLdgRfwwy30+j0WD//v1obW2Fn58ffH19LXaXETjiu8B9DJ/PR0hICHp7eyEWizGZYwoVHx8PsVjs8DFaw4ghXYZhTKJWR6BWq2nVODc3162jP0iukRAHyREZjUYw/f3Q/+MfEG7ZgiCFAjoXydYWyBDN8+fPQygUIicnBwKBgHZVtbe3m3gikC+rs3pKd0xv4OZdLREx6VjT6/U0HdLb22szInYWOp0ODQ0NUCgUdtMV1jrWCBFzp19wiTggIACtra3o7e11qojlDFiWpbsNkUhkkpKwJGEjhjrmFzlbKg8iBzt37hzS0tKGbYPJBbdgR1Q9qampCAgIwDvvvINvvvkGPT09iI+PxxNPPIHNmzdftgY91jBiSBdwPL3AVSRERkZSdyZ3YGBggG7riN3i6dOn8csvvyCUYRC9YwdCPvwLh2aFAAAgAElEQVQQgQoFNLNnY2D1arATJrjltQnICCC1Wj3EbtG8FZfb3mruEsYlYvOojeSn+/r63NLpZw4irlepVJBKpcjKykJERIRJREyUCMORhHEJJDEx0eU2Z0vbfe65bWhogFQqpbsNmUwGlmXdutsgXWuhoaE2LSptSdhIlGmu8iAXD4ZhUFNTA39/f49McwYGL4A1NTUwGAy0qeiVV17BgQMH8MknnyA3NxcqlQpVVVV2z50jvgvkMfHx8dDr9bT5yVHPBmcxYkiXYRi703EtKRJkMhk6Ojqcfj1zYx1CQlwdqtFohMFgwLjYWLD/+hcC3nkHfIUC3b/5DRr/+EcY8/IGyeJC1DbcDzAZANjV1YWUlBSHZE3WJjSYzywjueTg4GCo1Wp0dXUNmX3mThCP26ioKBMCsRURc8nCXuMBMOjHwdWquptAeDwe/P390dLSAh6Ph9/85jd0dLst4x9nFSkGgwENDQ2QyWQuFRUBy7sNwFTl0dTUBJVKRQm7u7ub1gvcVWAkDSEpKSmIjo5GRUUFli9fjgULFuCnn36i75FQKEShA9JJR3wX5s6di48++ghTpkzBF198gekXxlXNnTsXixYtwooVK9De3o66ujpMmjRp2Mc4YkgXsJ5vtaVIcEWNwG2o4JrdjB07lr4pBoMB6OuDYNMm8DdtAk8uh3LmTOjWrEFgXh5yOK2tJNem1+shFAoREhLi1JeP2/IaGxs7bLMVa0Tc0dGBpqYmOk6GpChIlDkc/SgBt2MtLy/PbqXdGllwi3Xt7e0mJuaBgYHo6+uDQqFAZmamRywCScFPLBYP8QO2ZvxD/AyIIkUoFJpE8JYuCiSXHhcX55ELoJ+fH3Q6HZqamhAREYGUlBQYjUYTIuZOdHYkp20JWq0WNTU1YFkWhYWFYFkWa9euxc8//4xt27YhJyfHpfU74rvwwAMP4O6770ZaWhrCwsJQXFwMAMjOzsYdd9yBcePGgc/nY9OmTW7ZlYwI7wVgMNI0GAw4cuQIrr32Wnq7RCKhOs7U1NQhBQNnvREA4MSJE8jKyoJcLkd9fT0iIyORlJT0a6Td1wfft98Gb+NG8ORy9N90E/jr1gF5eTb/LlcORn7MVQjm21GSOw4KCkJqaqpbzFXMQbrxiNidTG/g5jH7+/tpQYnbIOFoFMSN0t1piWh+HKTzjpwnbpOEtYjYWZBi3OjRo5GSkuLSF5Xr4UCieK7xT0BAADo7OwHAY/4Y3EYKexcn7kRn4sEAOOahTAIiEt2Wl5fjsccew+23344nnnjCI4qLiwCrH6IRR7pHjx7FNddcA5VKRU2kRSLRkDEv3OeVl5dTGZcjOH78OPR6PUaNGkWJzmg0AlIpfN9+G/xNm+Ajl0M6fTp4a9aAP4wOMq4KgRAby7IICAjAwMAAGIbxWLRmPr2B20VkDdzKfn9/v4nEihsRczvGiJtZTEwMEhIS3K6FBX61dvT390daWholXW6OmEwYdpWIibUjGdnuyjbfFggRt7S0oKuriwYQ7vTGIJDJZKiurkZUVBQSExNdek+4HspEGkYaJUjzREdHB3g8HjIyMmA0GrFhwwYcPXoUW7ZsQXZ29rCP4xLi6iHdkpIS+Pv7U0tEewUelmVx9OhRk+jYGsjWVyqVIj09HTExMYMOYBIJfDdtAv/tt+Ejl6N32jQwzz8Pfzfkf8xhMBjQ2NiIrq4uhIWF0Q82V0w+3K2++fSGsWPHDosIuUMu+/v76XSGgIAAyOVyBAQEIDMz0yPRGvF8kEgkDisGuDni/v7+IURs3jbMsiy6urrQ2NiIsWPHIjY21iN5biI1CwwMRFpaGm0mIEoEsmZndM/mIPnh/v5+ZGVlWQ1WXAUJItra2tDZ2QlfX1/s3LkTp0+fhlgsxvTp0/H3v/+datCvYIx80iX+sy0tLRCJREhISHD4g2+ekjAHmXYrkUiQlpaG3t5eBAYGIloggN/mzRBs3gymvx9d118PdvVqjHLDpAZzmHsYxMfHmxChpa0+N8IMCQlxaDAhMXv38/OzaVk5HBgMBtTV1UEikSA0NBQ6nQ4qlYrOuuKmJlwlL+6Fg5yv4RChNSIm5jTkwuGJ80W2+d3d3cjMzLR74TBvQJHL5Q6pPEgqzh3nyxo0Gg2qq6vB5/MhEomg1+vx4osv4pdffsEtt9yC7u5unDhxAu+9994Va2hzASOfdIl9nEwmQ3x8vFNmGNZIl6t2SExMRGxsLFiWhaypCYbXXsOYzz8HX6VCx29+A8lf/oKo6dOHRRTW0NfXh7q6OprOcLTKrtfrTfLDhNi4W2cSsRGdqlwuh0gk8piGlBT84uPjh3yxdTrdkPUSPwTz9dqCSqWiI+nT09M9RoQNDQ3o7OykFw5CxNwLhyPrtQWuX8JwdxzmREzWGxgYSHOw2dnZHmkT5gYN6enpiIiIQElJCZ544gksWrQIy5cvv1Jzt9Yw8knXaDRSfR9xMXIU5kbmZLtIpiaQnJaxpwe+GzdC8M47YORydF5/PWR/+Qv8iooo4ZORM+Y5QVdApl7o9XqbeWlnYInYyLkbM2YMEhMT3VJMModCoUBNTQ0CAgJMcqr2wPVDIOu1lnO1NercnSBeupbynVqt1iRHbH7hcHQUuk6no94SmZmZDllIugKxWIzGxkaEhITAaDRCrVbTC7O58Y+r0Gg0qKqqgq+vL9LT06HX6/HCCy/gxIkTePfdd5GRkeHGI7pscPWQbmNjIwICAmj3jSM4duwY1YISRymhUIi0tLRBWVh3N3w3bYLgnXcAhQI911+PriVLEDtrlsUoSqPR0MJXf38/NBqNybgZ89E45tDr9WhubkZvby8tYHkCxGsiJCQEo0ePpsoJtVpt0abRFZD3pL+/HxkZGW4p+HGJjWz1yVSN8PBwJCcne2THodVqUVdXR1UcjhIhWS+5eNhyNOPmh615GbgDZJvP4/EgEolMPo/cCx25cPB4PJP1couh1kAaT1paWqgi5ejRo1i5ciXuvvtuLFu27IrrJnMCI590WZaFVqtFS0sLgMEZR46irKwMaWlpOHfuHPR6PR0vYuzuhuCttwbJVqmEZPp0tNxzD+JmzXKqMs0djUN+dDodAgMDab6VyGlId1R8fDzi4uI8UsknBUGWZSESiYaQh7kXgisXDvNOLzJ51lPHYjQaER0dTc+zeQ5zOC3D3GNxl8mOpQiex+NBq9XCz88P6enpCAkJcfs54x4L2eY7Am4xVC6X2zX+UavVqKqqgr+/P9LT06HVarFu3TqcOnUK7777LkQikVuP6zLE1UO6xEuBuArZg06nw7Fjx+Dj44OMjAyEh4fD0NVlQrZ9M2ei9o47EDtjhtv0o+aaXIlEQiPM2NhYhIaGYtSoUW4lXe7229npDaQ4w43guRcOroCf6FSDg4ORkpLikVZRR0adc3OY5hG8o7aS3K41ohhwN4hfglgspqOTSATvzuIi0aSTXdxwj4U7pJKr0/bx8YFKpUJISAjS09Nx8uRJrFy5Evfddx8effRRt0W3ra2tWLx4MTo7O8EwDB5++GEsX77c5DEsy2L58uXYvXs3hEIhtm3bRjX5H330EV544QUAwDPPPIN77rnHLeu6gKuHdHt6eqihiC1wi2Skkhqs1YL/5psQbNkCKJWQ33ILKhcsQPjUqR6TARGvBqPRiNTU1MFCHUeTay4FCwoKcnod3AKWJeWDq+AOjOzv74dMJoNKpQLDMIiJiUFkZCSCg4PdvoUkVfbo6GinNKTWInhLqRQizZNKpR7TQQOmfgnJyclDzhU3B0+2+s4SMbEW7ejoQGZmpscmLgwMDKCyspI6dW3btg1ffPEFpFIpZs6ciWnTpuEPf/iD285lR0cHOjo6UFBQALlcjsLCQnz11Vcmto27d+/GW2+9hd27d6OkpATLly9HSUkJJBIJioqKUFZWBoZhUFhYiPLycnfWAUb+YEryoXNkJhm3SDZp0iQ0l5WBXbUK/v/3f2AGBqD83e9wZt48BE6ciHEe8iAlpjtEhsaN1MwNaciXrrm5mW7ryBcuJCTEZoW8v78ftbW1CAwMdNp+zx7IaBahUAi9Xk+1sEFBQSaerkajcciFwxUiJhM3WJZ1qEXY0noteTeQiRcymQytra1QKpXQ6/UICQlBcnKyx/TDxDDIll+CQCBAeHi4yeeDS8TE/pD7mSCtzgzDQKFQoKqqyq4JznDAsizEYjHa2tqQkZGB0aNH4+eff8a+ffuwYsUK3HfffaisrER5eblbXzcmJobWbkaNGoWsrCyIxeIhXrmLFy8GwzCYPHky+vr60NHRgQMHDmDGjBnUhW3GjBnYu3cv7rrrLreu0RJGDOkCg18qW05jfX19qK2thVAoREFBAQQyGfjPP4/sLVsAlQq9M2bg7Lx5UIwdi9DQUPD5fCgUCrc6QXHneSUkJGDSpEk2oxQejzfERpD7pevq6qIVfeLZEBwcDB8fH1r9NncacyfIOSVfanKBGjVqlInJOulMEovF1FLSnpMZgaVR5+4C1983JCSEpkUSExOh0WhMZsBxPWjt5bRtgZj5xMXFoaioyOmdiy0iJj605MJhNBqRkJCAqKgoj9UHKisrERQUhIkTJ2JgYABPPPEEamtrsXPnTqSmpgIYNJ4hE649gebmZlRUVAzpLLXkpysWi63efjEwokgXsGxkTlqCDQbDYJeNSgXeunWDaQSVCtoFC1Bz++2QxcYi84I0i+Rbub6z3EYDVzq+JBIJ6uvrERoaOixXK0tfOrJtJppetVqNwMBAREZGUkd+d0a5Go0GdXV10Ol0yM7Otiln4/oxEHCdzFpaWkyMwMnFgxjTWBp17k5wPWjNSZ1rfUiKdGTkDCFibmrC1ntKJgkbDAaXvYetgfuZINre2NhYhISEQKFQoLGxkUbE1lqynQHX0Ic0bBw6dAirVq3Cww8/jE2bNnmE5C1BoVDg97//Pd544w2PpYHciRFFuuZG5kTwT9p2w41G+KxfD8G77wIqFfS33YbGRYsgvmCGk8rxFjCfxMDt+DLf5hOSsLbNV6lUqKurAwDk5OR4RHNJKvO9vb1Ub6vT6SCTySCRSNDc3Dyk8BUcHOx06oQbdTrqx2AJXCczEnFwfRsaGhogkUgAAJGRkRAKhVCr1W6XghGJYFhYmMMetKTYRXLaZKQ41ymOu9Xn8/lUMZCammrihuZOEO8HhUJhMm+NexHhqhCsEbE9kyLiZTtq1ChMnDgRKpUKK1asQGNjI7766quL2kmm0+nw+9//Hn/4wx+wYMGCIfdb88SNi4vDgQMHTG6fNm3aRVjxCCqkAYNvgNFoxOHDhxEXFwexWIykpCTE8Pngv/EG+Fu2AGo19LfdhrZ770Wjr++wpFncbT63MYKQMJlL1tfXR23jPAEyvYFoLq1FULZczLh2ktbOBdfjNjEx0WNRJ3fU+ejRo2lETAp1RONK1uxKMwe5ICuVSpqHdtf6ucXFvr4+KJVK+Pr6IjY2FqNHj3bpYmcP5L0hn2dnzoctOZh5jrilpQXnz5+nxcWDBw/iqaeewp///Gc8/PDDbotu77//fnzzzTeIiorCmTNnhtz/6quv4tNPP0VraysYhkFfXx+6u7sRFhaGpKQkmhIkc+5IIW3ZsmUoLS2FRCJBYWEhTpw4AQAoKChAeXm5O7+jI1+9AIBKxk6dOoXU1NTBQXyffALfxx8H1GoYbr8dXQ8/jBqGQVhYGJKTk93+4Ver1ejr60N7ezv6+vpoJZebb3XXa5JiHInkXam8cvOtMpnMxLCcrJnH49FIXSQSeaRNFIDJqHNbloiWmiMc1eRylRye1A8TSVtXVxdEIhGV0hFiMxgMQ+R2rnwuSBemXq93q2kQaSE3928QCoXUz+KLL75AW1sb3n33XSQmJrrldQl++uknBAUFYfHixRZJFwB+/vlnXHfddUhMTKSNROvXr8fdd9+Np556Ck888QRYlsXSpUuxd+9eCIVCfPjhhygqKgIAfPDBB1i/fj0AYPXq1bjvvvvceQhXB+lWVlZCrVZDKpVi8uTJYFkWPkePwveDD9C3dCmqWRYCgQBpaWkeI47e3l7U19cjPDwcSUlJ4PF4UKlUJvpWbjU/JCTEacNnrsA9ISHB6cjGHkgqhVR6VSoVAgICEB4e7ha9qDm449QzMzNdanc2l4KZd9WFhIRAr9ejurp6iL2ju0FyqrZsEc13HYSIiXcy+XxYu/BwO9fcPRXZ/HW4emgA2LBhA/bv3w+FQoGEhARcc801+Mc//uH2125ubsbvfvc7q6RLsGjRItxwww146KGHAABJSUkoKyvzWCeng7g6SFer1cJgMKC8vBwCgQCjR4+mZs8DAwO0y8cT4G7x09PTbZI6iS4JEcvlcpNiky1HMGJa7snGA2BwrHZDQwO1duRK18w9EEhE7GzHF5Eatba2ujSG3N7f5krBurq6oNFoEBwcjIiICIcKX86C+CWoVCpkZWU5nbsntodcIrZkYk+iW6Iv99RngMjNyK5QoVDgmWeegVgsxpYtWzB27FjI5XLU1tY6NDrHWThCuiqVCvHx8XRKNAAkJycjNDQUDMNgyZIlePjhh92+NgdwdZDuypUrERQUhMLCQiQmJuLQoUNITEyEQCAwkVTZ07Y6A+ItIJPJhjWgkesIRnKXXFLz8/NDa2srtFotRCKR2w2yCZxx6OJGlzKZjDYacFMp1qJJ0hQQfKGI6SmHKdJIMWbMGCQkJAyJiM0LX66mf4j2290pC3MTe4lEAo1Gg9DQUNp84qru2dZrnjt3Dt3d3VRD/OOPP2L16tVYvnw57rvvvouiTHCEdHfs2IFPP/0U//3vf+ltYrEYcXFx6OrqwowZM/DWW29h6tSpHl+vGa4O0q2pqcGRI0fwySef4MSJE8jOzkZqaioKCwtRWFiI+Ph4GkmoVCqToldISIhT202j0UgF4Z7KDWq1WkilUrS2tqK/vx8CgcBEUuXOSI1r9u3qxcM8urTUKhwQEIBz585BoVB4VD9M5Fk6nQ6ZmZlWdx72tvkkurRGamq12sQf1lMpC6IYCAoKQnJyMj3PpHORZdkha3aFGBUKBSorKxEREYGkpCTI5XI8/fTT6OrqwjvvvGOibfU0HCHd+fPn4/bbb8eiRYss3r9mzRoEBQXhiSee8NQyreHqIF0A+OGHH7B3716sXr0aAQEBOHnyJI4dO4bjx4/j7NmzdIpoUVERJkyYgFGjRtFigVarRWBgIC18WfuykfEy5IPpqSq++fQGhmGoVpSQGinIcNUHzqyHmxu05HHrjuMgkdr58+fR19cHX19fhIaGmuS03dl8QlIWZCCks8djaZtvTmpBQUEQi8Vob2/32Ew3shYyMol0e1l7nLmJPXeCsyMNKMSXg0S333//PZ577jmsWLECixcvvmi6WwJ7pCuTyZCcnIzW1lZaB1AqlbRmolQqMWPGDDz33HO4+eabL+bSgauJdG2BZVlIJBIcP36cEjFx9Jo4cSIKCwvpXCbul41ElwKBAG1tbR4vxjkzvYFLEDKZzKSRgxCxNb8GVz1uXTmempoaBAYGIjU1FTwejyomyHk2X7MrzSeeTFlwSa23txcSiQQ8Hg8RERH0Iu2OachcyOVyVFVVUbtKZ/82twHFEhGTNSuVSlRVVSEyMhKJiYno7+/HU089BYlEgnfeeYdq1d0Be1KwAwcO4NZbb4WPjw8UCgWMRiNiYmKwdu1anDx5Ep9//jlGjRqFBx98EGPGjMHevXvp9F4AaGxsxPz58wEMpuwWLVqE1atXu239TsBLutZArvAlJSUoKSlBWVkZ5HI5srKyaFpi9OjRKCsrQ3x8PAQCwZC0hKuWgeZw1/QGbiOHTCaDUqk0mRghFAppp52npkQAgx96ku+256Vrac1cPwFbigmuj0FmZqbHUhbmryMUCu1OQ3al44ukeqRSqU1fBlePgbvm3t5eGAwG6PV6VFZWwt/fHx9++CFWrlyJP/7xj26Pbu1JwQ4cOIDXXnsN33zzzZB1i0QifP/99zRI2r59u4nPwmWGkW944yp8fHyQkpKClJQUanah0+lw+vRpHDlyBKtWrUJ9fT3Gjx+PrKwsFBQUID8/HyEhIZDL5Whvb4daraa9+67kWrkNAYmJicjIyBgWifN4PIwePdpkK0q608RiMXp7e8Hn8xEUFISenh5otVqnc9q2wNXCJiQkID093e7xWFuzJY8JrsqDdK/Fx8e75GPgKEjzQWxsrMnrmK+ZWxDldnw5cvEABqdS1NTUICYmxiPHQ86zj48POjo6kJiYiLi4OJw6dQqHDh1CQ0MD/P39sWXLFvj6+mLhwoVuff2pU6eiubnZ6eeVlpYiLS2NWrYuXLgQX3/99eVMulZx1ZOuJQgEAhQUFOD06dOYM2cOVqxYAYPBgLKyMpSUlGD9+vWor69HVFQUzQ/n5uZCIBCgp6cHjY2NtBhDtp7W8mlcPwauYYy7MTAwgKamJgQHB+O6664Dn8+nEy64pi7mxurOroc76ny4rma2PCYkEgmqq6thNBoRHBwMrVaL3t7eYRnRWAIpyOn1eof8Evh8PsLCwkw6m+xdPIhioqGhASqVyiUHNUdhNBqpZSVpSd+zZw/Wrl2LJ598EosWLYKPjw+1kbwUOHr0KPLy8hAbG4vXXnsN2dnZFg1qSkpKLsn6hgsv6dqAuanx9OnTMX36dAC/uoWRtMTmzZvR09OD9PR0FBUVoaCgAJGRkdBqtWhtbaVaXK6mtbW1FSzLesyPARgkDfJlNt96E5tDrqkLaeTo7OwcYsto6+LhyqhzVyAQCKBSqShphIWF0Uq+VCqlHhNCoXBYXYDcBpTh+iVYunhotVpaDG1uboZCoYBQKERkZCTkcjm1oXQnZDIZqqurMWbMGBQVFUEqleKxxx7DwMAA9u3bZzLiiniPXGwUFBTg3LlzCAoKwu7duzFv3jzaDTlScNXndN0Jg8GAqqoqlJSU4Pjx4zhx4gQMBgNyc3MpEY8ePRolJSWIjIyEQCAwIQd3b/FJymI4jQfcAhJpEyZ5SxINK5VKE4N0T23xSZswt9vPErgXD3OPCUdkYCqVCtXV1bTA6KnmA61Wi5qaGhiNRmq6P5wRSdZgMBjQ0NCA/v5+jBs3DgEBAfj222/x97//HU8//TQWLlzosffMEhztNAN+7S6rq6vDmjVr8N133wEY7IoDgKeeesqjax0GvIW0SwFiB1heXo6SkhLs3LkT1dXVyM3NRUFBAYqKipCXl2dSkHFUtmYLXI9bT/hLkLxlT08POjo6KKERGRgxoXEXuJ1errYJcz0mzBUT3IaZ1tZWdHV12ZRnDRfcceS2omiu7pn8OGsn2dfXh+rqasTGxiIhIQESiQQrV66EXq/Hpk2b6C7nYsIW6Z4/f54GCKWlpbjttttw7tw5Wkj73//+h7i4OEycOBGfffYZVRtdhvAW0i4FiB3gddddh56eHkyYMAG7du0CAJqW+Pjjj6kbWlFREQoLC5GUlASj0YiOjg46KYHIqYjMx1JkQjxutVqtXY/b4R6XVCqFVCpFbm4uQkNDaa5VJpOhra2NRmnDaeTgklNSUhIyMzNdjsisefqSi11dXR2kUil8fX0RGRmJgYEBuhNxZxRIBjb6+fnZ9VTmGqybp4DIRY/UD8zNcxiGQX19PRQKBXJzcxEQEIBdu3Zh/fr1WL16Ne688063Hpc9Kdi///1vvPzyy2hpaYFKpQLLsoiPj8fatWvxt7/9Df7+/oiMjIREIqG1hICAABQXF1PL1o0bN2LWrFkwGAy4//77L2fCtQlvpHsZwGg0or6+HiUlJSgtLUV5eTlUKhWys7MpEScmJtIvG5GAcRsiurq6qMetKw0BjqKnpwf19fWIiYlBQkKCVUkR1/Sb28jB1YjaaopQKpWorq6mQxQ9tcXX6/Wor6+HUqlEZmYmfH19IZfL6ZotFb1csZLkmn6LRCK32nxaGnI6MDCAoKAgnDhxAnFxcfj8888pcXnCz9eeFOzIkSPIyspCaGgo9uzZgzVr1tBC2GViUONueNMLVxq0Wi1OnjxJifjMmTPw9/dHfn4+ioqKkJ+fj9DQUJw8eRI8Ho/qcIlfq7vNXMioc4ZhbHr22oK5jwApGHG3+P7+/jh37hx6e3shEok8tsUHHPdL4Ba9rDmY2cq1kuYD0rThiQ5GYDByr6urg0qlQkZGBvR6PdatW4dDhw5Rv4aioiJs2rTJIxdlR3O1pAhKxuNcbaTrTS9cpvD19cWkSZMwadIkAIPRTF9fH44fP46SkhJ89tlnOHnyJGJjYzF79mxMmjSJfqEtydZc7cd3ZNS5oyDjeLhVcbLFJ5V1mUwGPz8/OmZoYGDApcjSFtRqNWpqasDj8RyStZGUQ2RkJADTXKv5DDXzdmziqUtG2ngKxNgnPj4eGRkZ6O7uxuOPPw6BQID9+/cjMjISarUadXV1F7VoZglbt27FLbfcQn9nGAYzZ8681K5gFw3eSPcKRHd3N2bPno2///3vyMrKwrFjx1BaWorjx4+jr68PGRkZVD+clpZG861cC0mSH7bltubqqHNnodFoUFtbS6v4Pj4+Ju5l3MiSkJorVXzuFt/dfgncXKtMJoNUKoVKpYJQKKSzytw54JRAr9fTmXhZWVnw8/PDf/7zH7zyyitYs2YNFixYcNFI1pFId//+/XjkkUfw888/0/N/mbiCuRtXXnph7969WL58OQwGAx588EGsWrXK5H6NRoPFixejvLwc4eHh2LFjB53NtGHDBmzduhU8Hg9vvvkmZs2adQmOwLMwGo0WSVCv1+Ps2bPUW+LkyZNgGAYTJkxAYWEhCgoKMGbMGFpAsuS2ZjQaTUjQU0J9rqwtLS2NRpKWHkcaOQipEfcybqHOFqERb9jRo0fbnEoxXHBbhUlnITedAgx/wCkB6ZIbO3YsYmJi0NXVhccffxwBAQH417/+ddG366j47PUAABXySURBVPZI99SpU5g/fz727NkDkUhk8TGX0BXM3biySNeRPuu3334bp06dwjvvvIPi4mJ8+eWX2LFjByorK3HXXXehtLQU7e3tuOmmm6i5+NUIlmWhUCiobO348eOora1FeHg49ZbIz8+Hn58fpFIplYAFBwcjKirKYxEaMadxlQS5xSNi9EOcwLhGPyzLUh8DT/oyAL/uDIg8y5pPhLlfA5lHxp2tZys61el0VKVCin87d+7Ea6+9hnXr1mHevHmXJIVgi3RbWlowffp0fPzxx7j22mvp7ZeRK5i7cWWR7tGjR+0KoWfNmoU1a9ZgypQp0Ov1GDNmDLq7u/HSSy+ZPJb7OC8GQaRYpaWlNCJuaGiAXq/H9OnTceeddyIrK8tkTpajsjV7IBNr+/v73U6C5o0cxFg9ODgYcXFxbh8zREBIkGzxnd0ZWDKwFwgEJlE8yWv39PSgrq4OSUlJGDNmDDo7O7FixQqMGjUKb7zxhltTJvZkYCzLYvny5di9ezd6enrA5/Mhk8kQHR2NmTNnUtOaV199FYcOHcLOnTvpLDU+n4+ysrLLyRXM3biyCmmO9FlzH0PkU729vRCLxZg8ebLJc0mV1ItBMAyDmJgY3Hrrrbj11lvx0ksvwdfXF8uWLUNHRwf++9//Yt26ddBqtRg/fjzND0dFRdHuM3PZmj23NeIP3NDQgISEBIhEIreTH2mzDggIgEwmQ2BgIPLy8qj6gPgecIdYknW7iu7ubtTX11MSdOWYLPk1cBUT7e3tGBgYgF6vB4/Hg16vh16vx44dO/DPf/4TL7zwAubOnev283nvvfdi6dKlWLx4scX79+zZg7q6OtTV1aGkpATLly9HSUkJJBIJioqKUF1dDYZhUFhYiPLycrz//vtD/kZKSgp++eUXt677csdlSbruRFtbG5YtW4ZVq1ZZzA3/4x//wPvvvw8+n4/IyEh88MEH9GrM4/Ewfvx4AMDYsWNpY8NIw5///Gc8+eST9EtLpqKq1WpUVFTg2LFj2LhxI86ePUvHIRHZGjGBt+W2NjAwQGd6DdcExxa4zRTmwxq5hMbND5NGDtLlRdIp9uR2Wq0W1dXVAOCRY+IqJrq7u2l06+vri82bN+Oxxx5Dd3c3fvvb36K6uhpTp051eVSUNdhzBPv666+xePFiMAyDyZMn00GmBw4cwIwZM+g5nzFjBvbu3Utd/K52XJakGxcXh9bWVvp7W1vbECNl8pj4+Hjo9XrIZDKEh4ebPNdgMODQoUP4+OOPMXfuXEycOBFz5841yQ3n5+ejrKwMQqEQmzdvxt/+9jfs2LEDAOjkiZEOa1Imf39/TJkyhaZmWJZFb28vNYEvLi5GS0sLxo4da9JNB/zaRKHRaGAwGBATE4OYmBiPuahx/RLsdXr5+fkhKiqKNgmQRg6ZTEajcfNGDiK34xrh2Cr+uQPEm4FlWRQVFYHP56O4uBjfffcdXn/9ddxyyy2or6/H8ePHPXZebcHSjlQsFlu93YtBXJakO3HiRNTV1VETleLiYnz22Wcmj5k7dy4++ugjTJkyBV988QWmT58OhmEwd+5cLFq0CCtWrKA5pfnz54PH41n04Lzhhhvo/ydPnoxPP/304hzkFQiGYRAREYFbbrmF6iyNRiOamppQUlKCH3/8Ea+88goUCgWio6PR2NiIxx9/HLfccgs0Gg3a2tqclq3ZA9ERD8cvgbRrC4VC6rTFbeQQi8U0r63T6RAQEICsrCyP6m5J40ZKSgqio6PR0dGB5cuXIzIyEgcPHqRRbUZGBjXL8eLKwGVJutb6rJ977jkUFRVh7ty5eOCBB3D33XcjLS0NYWFhdGRHdnY27rjjDowbNw4DAwO47rrraGXcngenuWhbrVbTCGPVqlWYN2+eZw/8CoSPjw9SU1ORmpqKRYsWgWVZPPTQQ6iqqsLixYtx7NgxvPfeexAIBMjPz6eKiYiICMjl8iF5VkLEjmzXSUNFZGQkJk6c6FYdMbeRg2VZtLa2QiwWIzExESzLUg8Bbl7b1RZhLkjaguRC+Xw+Pv30U2zcuBEbNmzA7NmzL3lzA4G1HWlcXBwOHDhgcvu0adMu/gIvU1yW6gV34YsvvsDevXtpAv+TTz5BSUkJNm7cOOSx5IN98OBBWlghou3GxkZMnz4dzz33HF5++WWr2uFt27Zh5cqVNBWydOlSPPjggwCAjz76CC+88AIA4Jlnnhni1TuSUF5ejoKCAkoOLMuiv7+fmsCXlpaioaEB0dHRND+cl5cHgUBg4qZlTYdr7pfgKWMfwL6+V6vVmvhLkEYOR8bQm6OzsxONjY3Ueay9vR3Lli1DTEwMXn/9dY+2RFuDLRnYt99+i40bN2L37t0oKSnBsmXLUFpaColEgsLCQpw4cQLAoEdueXm5W/0mrgBcWeoFd8GR3DAwOEH4xRdfNCFc8nxgsMI6depUPP300zhy5AjVDpvnhwHgzjvvHELqEokEa9euRVlZGY1g5s6d6/bCx+WCwsJCk98ZhkFISAhuvPFG3HjjjQB+ndpbUlKCY8eOYdOmTdRvgXgPx8TEQKvV4vz586irqwPLsuDz+VAqlYiLi0N+fr7HuuS403EzMzOtznfz9fVFREQEbUTgtghLJBI0NzdDr9fTFmFLumeNRoPq6mrweDwUFRWBx+Ph448/xubNm/Hyyy9j1qxZbo1u7TUe/fWvf8X+/ftx7tw5OpKeOII99NBDiI2NRUREBBISEpCSkoK0tDQIhUJ8+OGHAAaLls8++ywmTpwIAHjuueeuNsK1iREd6er1ersenBUVFbjtttuwd+9epKen09ulUimEQiH8/PyoLWNiYiIOHz4MwLJ2eNu2bSgrKxtCutu3b8eBAwewZcsWAMCSJUswbdo0bzXXDAaDAZWVlTQarqioAMuyyM3Npc0yy5YtQ2pqKpRKJRQKhYme1V1DQknaIioqyi3tz9YaOUjqQiqVIj09HdHR0VRtk5CQgNdee83teWNnBzy+9dZbqKiowAcffAAACAoKgkKhcOuaRiiuzkjXkdzwypUroVAocPvttwP4VRpWVVWFJUuWwMfHB0ajEXPmzIFOp6N/21p+eOfOnfjpp58gEonwz3/+EwkJCd5qroMgEr3x48fjwQcfpN10a9aswVtvvYX8/Hw8++yzCA0NNemmCwwMpHrW4QwJ5U5YyMnJcVvagow9DwoKQmxsLIBB17YzZ86AZVkEBwdj2bJlqK+vh0Qiwf3334/777/f5vRkV+HsgMft27dj7dq1bl/H1YwRTboAMHv2bMyePdvktnXr1tH///DDDxafd+211+L06dP0d5IftoU5c+bgrrvugp+fH7Zs2YJ77rkHP/74o9XHO7rNAwYlUV1dXejr6wNwdWiIiaogPj4etbW1CAwMpE0WxAT+o48+Qnt7O5KTk6lsLSUlBUaj0Sm3NdLCGxcX59D0YlfBlZylp6cjIiICra2t0Gg0+O1vf4s5c+agsrISTz75JN58803Ex8e79fWdGfB47tw5NDU10bmAgLe47A6MeNJ1FxzJD3NbMB988EH87W9/o881r+ZOnToVjz76qMk2zzxH/M9//pP+n2zzCK4WDTGPx8Nf//pX+jvDMIiKisKcOXMwZ84cAL+awB87dgx79+7Fiy++CLVabWICHxMTA5VKNUS2FhQUhN7eXhgMBoem/Q4H3KkRRG3xwQcf4L333sPrr7+OG2+8kcoeLwcUFxfjtttuM8k/nzt3zqS4PH78eKSmpl7CVV558JKug3BEO9zR0UF1nrt27UJWVhaAQf+Hp59+GlKpFACwb98+LFiwwLvNcxN8fHwgEokgEoloy6pGo6Em8O+++y41gSez6UhFPTAwEFFRUTAajaisrHRatuYIyOTo1tZWainZ0tKCpUuXQiQS4fDhwwgKCnLLa9mDo8VlYJB0N23aNOT5wGBxedq0aaioqPCSrpPwkq6DcCQ//Oabb2LXrl20l37btm0ALFdz5XK5d5vnQfj5+eGaa67BNddcA+BXE/jS0lL88MMPWL16NYKDg5GUlERla+PHjwePxzMxJnfGPtISBgYGUFVVBaFQiKKiIvj4+OC9997Dhx9+iNdff5029VwsOBI8AEB1dTWkUqmJUZR5cfnw4cN0N+eF4xjR6oXLGc5oiF9++WW0tbXhrbfeoreZa4j/97//eSMOB7F48WIsXLgQN998M1paWkxM4GUyGTIzMykRi0QiE68GACY2jEFBQRZJk0ji2tra6Ey05uZmLF26FOPGjcNLL73k9ujWXo2A6MhHjRoFsViMkJAQLF++HKtXr8att96K48ePIzAwEM888wyampqgVqupax8wOOeMW1x+7LHH8MADD7j1GEYQrixrx6sBjthXEuTn52PTpk0mPqRc3HvvvWhpacGZM2ccsuETCoXYtm0bCgoKAFxdjRv2oNPphpjA+/j4mHTTjRkzBgqFAjKZjMrWuGkJo9GIqqoqBAUFIS0tDcBgt+O2bdvwxhtv4Prrr3d7dOuIFMyapJG4gnF15OXl5SNWR36RcHVKxi5nuHub9+yzzyInJ8dhG74///nP1IbvamrcsAeBQIAJEyZgwoQJ+NOf/mRiAn/s2DFs2LABtbW1iIyMNHFb8/Pzg0wmQ2VlJTXl3r59OxITE7Fjxw7k5+fj8OHDHuuec1YKxsV3333ndQW7iPCS7iWCIzliYLCYsXDhQpPIyFxDvGrVKixevNhrw+cBkGnF06ZNo/4BRPZFTODfffddtLa2QqfTYeLEibj33nuRkJAAqVSKPXv2gGEYHDp0CCtWrKANMu6Go1Iwr4780sNLupcQ9jTEwODMKHOYa4gdgdeGz31gGAaxsbGYN28e5s2bh2+//RbPP/88VqxYAY1Gg127dmHv3r2YNGkSSkpKIBQKodPp0NjYeEnX7ayO3AvPwEu6XgzB559/jldeecVqfvjf//43Xn75ZdrKunnzZuTl5QEAkpKSqLcAGcky0jFlyhT8/PPPVON73333gWVZk92JQCDwqAWju3XkXlcwz8EzbiFeXHawZcNnfvvNN99ss/suOTkZBw8exOnTp/Hss8/i4YcfNrl///79OHny5FVBuMCgJNC8qeJi2y9yawRarRbFxcVDmiw6Ojro/8115Pv27YNUKoVUKsW+fftG5ATtywXeSPcqwdy5c7Fx40YsXLgQJSUlCAkJQUxMjMXGjfLyciqPsgSuimLy5Mloa2vz+Pq9sA1368i9rmAeBMuytn68uEKwcOFCdsyYMSyfz2fj4uLY999/n928eTO7efNmlmVZ1mg0so888gibkpLC5uTksMePH6fP3bp1K5uamsqmpqayH3zwAcuyLNvU1MRmZ2fbfd1XX32VfeCBB+jvSUlJbH5+PltQUMBu2bLFzUd59WHPnj2sSCRiU1NT2Q0bNgy5//XXX2ezsrLY8ePHs9OnT2ebm5vpfT4+PmxeXh6bl5fHzpkz52Iu2wsbvOolXS8swhHS/fHHH9nMzEy2p6eH3tbW1sayLMt2dnayubm57MGDB9n77ruPjYyMtPr39u/fzwYHB1OCWLt2Lb3PHumMZOj1ejYlJYVtaGhgNRoNm5uby549e9bkMT/++COrVCpZlmXZt99+m73jjjvofYGBgRd1vV6YwCqvenO6XriEU6dO4cEHH8TXX39tUqAhxZuoqCjMnz8fpaWluPfee+06tF133XU4efIkTp48ieeeew7AoOD/0UcfxZ49e1BZWYnt27ejsrLScwd1mYGrvfX19aXaWy5uuOEGCIVCAN5Uz5UCL+l64TRaWlqwYMECfPLJJxCJRPR2pVIJuVxO/79v3z7k5ORg6tSpLuUIHSGdkQxn5XzWZvxNnjwZX331lUfX6oXj8BbSvBiCu+66CwcOHEBPTw8d00IM3P/0pz9h3bp16O3txSOPPAIAVBrW2dmJ+fPnAxic2rFo0SLcfPPNDr3m0aNHkZeXh9jYWLz22mvIzs52yvv1asenn36KsrIyHDx4kN7mtWG8POElXS+GYPv27Tbvf//996lRDxcpKSn45ZdfnH69goICnDt3DkFBQdi9ezfmzZuHuro6p//OSIM7Z/x5bRgvH3jTC15cchC3LmCwS0+n06Gnp8cq6dx///2IiopCTk6Oxb/36quvUv+EnJwc8Hg8SCQSAIPNG+PHj8eECRNQVFTk+YMbBhzR3lZUVGDJkiXYtWsXoqKi6O1SqRQajQYAqD+HIz4MXlwE2KqyXZKanxcjErbUEB0dHazRaGRZlmVLSkrYhIQE1mg0sjqdjk1OTmYbGxtp9f7MmTPswYMH2fLycockbbt27WJvuOEG+ntiYiLb3d3tnoNyEfYUGWq1mr3jjjvY1NRUViQSsUlJSWxKSgr7wgsvsOvXr2dDQ0PZ2NhYdu/eveyNN97IRkVFDZGGHT58mM3JyWFzc3PZnJwc9v3337/Yh3m1wyqvetMLXngc9nLEX3zxBTZv3gw+n4+AgAAUFxeDYRirgn8ANs19uNi+fftlZd5DFBm2xjRt3boVoaGhqK+vR3FxMb788kvs2LEDlZWVuOuuu9DR0YH29nbcdNNNqK2ttWis7oo/hxcXCbYY+ZJcH7zwwgE4oiNWKpVsaGgo29vbS2+71M0bR44cYWfOnEl/X79+Pbt+/XqTx8ycOZM9cuQIy7Isq9Pp2PDwcNZoNA55LPdxXlx2cLk5wvvj/bksfwAkAThj5zF3Aviv2W1xF/6NAvALgKkAEgDsB1AJ4CyA5Rb+FgPgTQD1AE4BKODcdw+Augs/99hZ020A3uf8fjeAjWaPOQMgnvN7A4AIABsB/JFz+1YAt13q98L749yPN73gxUjGQgAmUgyWZcUX/u1iGOZLAJMwSJaPsyx7gmGYUQDKGYb5nmVZbifGLQDSL/xcA2AzgGsYhgkD8DyAIgxOWilnGGYXy7JSDx+bF1covOoFL0YkGIYJAXA9gK85twVeIFUwDBMIYCYGo+UOlmVPAADLsnIAVQDMtVm3AviYHcQxAKMZhokBMAvA9yzLSi4Q7fcAbImTxRiMrAniL9xm8TEMw/ABhADodfC5Xlzm8JKuF1ccGIbZDuAogAyGYdoYhnmAYZg/MQzzJ87D5gPYx7KsknNbNICfGYb5BUApgG9ZljXpT2YYJglAPgDzLow4AK2c39su3Gbtdms4DiCdYZhkhmF8MRiN7zJ7zC4MpiyAwXTEj+xgPmEXgIUMw/gxDJOMwai71MZreXEZwpte8OKKA8uyduUILMtuA7DN7LZGAHnWnsMwTBCAnQAeY1nWurflMMCyrJ5hmKUAvgPAA/ABy7JnGYZZB6CMZdldGMzVfsIwTD0ACQaJGRce9zkGc896AI+yLGvwxDq98BzsTQP2wourAgzDCAB8A+A7lmX/YeH+LQAOsCy7/cLvNQCmkR+WZZdYepwXXpjDm17w4qoHMzjmYSuAKkuEewG7ACxmBjEZgIxl2Q4MRqwzGYYJZRgmFIN54u8uysK9uCLx/wHPZRtJ7SRPjwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b7qFxbKxZmI2", + "colab_type": "text" + }, + "source": [ + "## 1.3 Scale the vectors you created in 1.1 by $5$, $\\pi$, and $-e$ and plot all four vectors (original + 3 scaled vectors) on a graph. What do you notice about these vectors? " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ah6zMSLJdJwL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "e6673d7a-c546-4dc4-caf4-c382850ef0b3" + }, + "source": [ + "from math import e, pi\n", + "import numpy as np\n", + "print(e)\n", + "print(pi)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "2.718281828459045\n", + "3.141592653589793\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "3qpwDlzXkVf5", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 268 + }, + "outputId": "49f8c87f-4caf-4ea4-b34c-98b26f951945" + }, + "source": [ + "vector5 = np.multiply(5,vector)\n", + "vectorpi = np.multiply(pi,vector)\n", + "vectore = np.multiply(-e,vector)\n", + "\n", + "plt.arrow(0,0,vector5[0],vector5[1],head_width=.03, head_length=.01, color = 'b')\n", + "plt.arrow(0,0,vectorpi[0],vectorpi[1],head_width=.03, head_length=.01, color = 'y')\n", + "plt.arrow(0,0,vectore[0],vectore[1],head_width=.03, head_length=.01, color = 'r')\n", + "plt.arrow(0,0,vector[0],vector[1],head_width=.03, head_length=.01, color = 'purple')\n", + "\n", + "plt.xlim(-3,3)\n", + "plt.ylim(-3,3)\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wrgqa6sWimbH", + "colab_type": "text" + }, + "source": [ + "## 1.4 Graph vectors $\\vec{a}$ and $\\vec{b}$ and plot them on a graph\n", + "\n", + "\\begin{align}\n", + "\\vec{a} = \\begin{bmatrix} 5 \\\\ 7 \\end{bmatrix}\n", + "\\qquad\n", + "\\vec{b} = \\begin{bmatrix} 3 \\\\4 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "I1BGXA_skV-b", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 285 + }, + "outputId": "cba5ca9d-ed91-4266-d935-cc7206ed9d7b" + }, + "source": [ + "a = [5,7]\n", + "b = [3,4]\n", + "\n", + "plt.arrow(0,0,a[0],a[1], head_width=.2, head_length=.1, color = 'green')\n", + "plt.arrow(0,0,b[0],b[1], head_width=.2, head_length=.1, color = 'orange')\n", + "\n", + "plt.xlim(0,10)\n", + "plt.ylim(0,10)" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 10.0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAXQ0lEQVR4nO3deZRU9ZnG8e/b3UCzKSCoLCIYEQTC2iiBRBGNQSSyuIEBwWhIdCYxizqgMsnhkBnjJBnNhoCiJgIurTEKLihgMnEMsaFlWBVUBKSRRqEhsjQ27/xR1Utwa6qq+1d16/mc46HrVlfXc0p5vP2r+/7K3B0REYmWnNABREQk9VTuIiIRpHIXEYkglbuISASp3EVEIkjlLiISQZ9b7mY218x2mtmaGsdamdkLZrYx/mfLuo0pIiLHojZn7g8Aw446NgVY4u5dgCXx2yIikiasNkNMZtYJWOjuPeO3XweGuHuJmbUFXnL3rnUZVEREai8vwced5O4l8a93ACd92jea2WRgMkDTpk37d+vWLcGnFBHJTitWrNjl7m2O5TGJlnsVd3cz+9TTf3efDcwGKCgo8KKiomSfUkQkq5jZO8f6mESvlnkvvhxD/M+dCf4cERGpA4mW+1PAxPjXE4E/pSaOiIikQm0uhVwAvAJ0NbNtZnYtcAfwVTPbCFwQvy0iImnic9fc3X3cp9x1foqziIhIimhCVUQkglTuIiIRpHIXEYkglbuISASp3EVEIkjlLiISQSp3EZEIUrmLiESQyl1EJIJU7iIiEaRyFxGJIJW7iEgEqdxFRCJI5S4iEkEqdxGRCFK5i4hEkMpdRCSCVO4iIhGkchcRiSCVu4hIBKncRUQiSOUuIhJBKncRkQhSuYuIRJDKXUQkglTuIiIRpHIXEYkglbuISASp3EVEIkjlLiISQSp3EZEIUrmLiESQyl1EJIJU7iIiEaRyFxGJoKTK3cx+YGZrzWyNmS0ws/xUBRMRkcQlXO5m1h74HlDg7j2BXGBsqoKJiEjikl2WyQMam1ke0ATYnnwkERFJVsLl7u7vAj8HtgAlQJm7Lz76+8xsspkVmVlRaWlp4klFRKTWklmWaQmMBDoD7YCmZjb+6O9z99nuXuDuBW3atEk8qYiI1FoyyzIXAG+7e6m7HwaeAAalJpaIiCQjmXLfAgw0syZmZsD5wPrUxBIRkWQks+a+HCgEVgKr4z9rdopyiYhIEvKSebC7/xj4cYqyiIhIimhCVUQkglTuIiIRpHIXEYkglbuISASp3EVEIkjlLiISQSp3EZEIUrmLiESQyl1EJIJU7iIiEaRyFxGJIJW7iEgEqdxFRCIoqV0hRTLZ1rKtrNm5hm17t7GlbAubdm/iwtMu5Jq+14SOJpI0lbtkralLpjJv9TxyLZcKrwBg2dvLVO4SCVqWkaz1wKgHmD9mflWxA+w+uJt39rwTMJVIaqjcJWvlWA5XPXEVAHdecCdntT+L8opyirYXBU4mkjwty0hWOvTRIfJ/mg/AuhvWcWabM7l58M1s2LWBM044I3A6keSp3CXrfHDgA0648wQASn5UwsnNTq66r1vrbqFiiaSUyl2yytu73+a0X50GwL6p+2jWsFngRCJ1Q2vukjWKthdVFfvhaYdV7BJpKnfJCgvfWMiAOQM4rtFxHPn3I+Tl6JdWiTaVu0TezFdn8vUFX2dQh0GUTSnDzEJHEqlzKneJtJsW38QNz9zANX2u4eVrXw4dR6Te6HdTiaxLFlzC0288zX+e/59M+fKU0HFE6pXKXSLp9F+dzpu732T+mPmM++K40HFE6p3KXSLliB8hd3ouAC9NfIlzO50bOJFIGCp3iYxPmjoVyVYqd4mE3Qd20+rOVsDHp05FspHKXTLe5j2b6Xx3Z0BTpyKVdCmkZLQV21dUFbumTkWqqdwlYy18YyEFcwpo3rC5pk5FjqJyl4x0T9E9VVOne6fu1dSpyFFU7pJxbl58M9cvul5TpyKfIalyN7MWZlZoZhvMbL2ZfSlVwUQ+yciHR/LzV37Ofwz9D+aOnBs6jkjaSnaR8m7gOXe/zMwaAk1SkEnkE3X5dRc2fbCJeWPmcdUXrwodRyStJVzuZnY8cA4wCcDdy4Hy1MQSqaapU5Fjl8yyTGegFLjfzIrN7F4za3r0N5nZZDMrMrOi0tLSJJ5OstGhjw5VFfvaG9aq2EVqKZlyzwP6ATPdvS/wIfCxrffcfba7F7h7QZs2bZJ4Osk2uw/srtpOoORHJXRv0z1wIpHMkUy5bwO2ufvy+O1CYmUvkrTNezZXbSewb+o+bScgcowSLnd33wFsNbOu8UPnA+tSkkqymqZORZKX7NUy3wXmxa+UeQu4JvlIks0WvbGIEQtG0Lxhc30knkgSkip3d38NKEhRFsly9xTdw/WLrmdQh0EaThJJkiZUJS3c8sItmjoVSSHttCTBjXp4FH96/U/8dOhPufUrt4aOIxIJKncJ6oxfn8HGDzZq6lQkxVTuEkTNqdNlE5cxpNOQsIFEIkblLvWu5medrr1hrYaTROqAyl3qVc3POt3+w+20bd42cCKRaFK5S715Z887dLq7E6DPOhWpa7oUUurFiu0rqopdU6cidU/lLnVu0RuLKJhTQNMGTfVZpyL1ROUudWpW0SxGLBjBwPYD+cet/9B2AiL1ROUudeaWF27hO4u+w6Q+k3jluldCxxHJKvr9WOqEpk5FwlK5S8p1/U1X3nj/DR4a/RDf6PWN0HFEspLKXVJGU6ci6UPlLilRc+p0zfVr6HFij8CJRLKbyl2SpqlTkfSjcpekaOpUJD3pUkhJ2MqSlZo6FUlTKndJyDMbn6H/7P6aOhVJUyp3OWazimZx8fyLNXUqksZU7nJM/u2Ff9PUqUgG0O/SUmujHxnNkxueZMZ5M7jtnNtCxxGRz6Byl1rp9ptuvP7+6/xh9B8Y32t86Dgi8jlU7vKZak6dLr16Ked1Pi9wIhGpDZW7fCpNnYpkLpW7fKI9B/fQ8mctAU2dimQilbt8jKZORTKfLoWUf6KpU5FoULlLlWc3PqupU5GIULkLALNXzGb4/OGc3f5sTZ2KRIDKXZjy4hS+vfDbTOo9ib9d97fQcUQkBfR7d5Yb88gY/rjhj5o6FYkYlXsWO/O3Z7Jh1wZNnYpEkMo9C7k7OdNjK3KaOhWJJpV7limvKKfRjEaApk5FoizpN1TNLNfMis1sYSoCSd3Zc3APjWY0omUOvPetl+jhO2HzAtj199DRRCTFUnHmfiOwHjguBT9L6kjl1OndreF7LYG/XAi5jcErIDcfLi0NHVFEUiipM3cz6wBcDNybmjhSF4pLiqumTm/4Zgl0uwmOlMPhvfDRP+DwPjhQEjakiKRUsssydwG3AEc+7RvMbLKZFZlZUWmpzg7r27Mbn6Xf7H40zmscmzptfDIc2B6787iukNcUjhyGXbq+XSRKEi53MxsB7HT3FZ/1fe4+290L3L2gTZs2iT6dJGDOijkMnz+cs9qdxf7b9mMAf2wP78yHs+bAiPUwejv0+yW0GRw6roikUDJr7oOBS8xsOJAPHGdmD7m7LphOA1NfnModL9/BxN4TeWDUA1BxCB6J7c3OV/9aXeYNjoNuNwbLKSJ1I+Ezd3ef6u4d3L0TMBZYqmJPD5c+eil3vHwH04dMjxX7gR3VxT5yi87SRbKArnOPmO6/7c76Xev5/ajfM6H3BHi/CJ4fELvzig8hr0nYgCJSL1JS7u7+EvBSKn6WJKbm1OmSq5cwtPNQ2Dwf/vcbkNcMLt8L2ulRJGvozD0CPnHqdOVNsOEX0H4EnPt04IQiUt9U7hmu5medvvvDd2nXvB0sHgS7XoHeP4UetwZOKCIhqNwz2JayLZx616kA7J2yl+YNmsD8+NLLuU/HztpFJCup3DNUcUkx/Wb3A6D89nIaVOyHh+P/Oi9eC8d3D5hORELTJzFloKOnTht8+DYUtojdedkHKnYRUblnmsqp0wHtBsSmTksWw8KusTvHHoaGLcMGFJG0oHLPIFNfnMrkhZO5utfV/P1bf4f1v4CXhkGLPnCVQ45W2UQkRm2QIS579DIeX/8404dMZ9q50+B/LoethXDGv0LBr0PHE5E0o3LPAD1+14N1petiU6e9xsPjbeDQLhh4P5w2KXQ8EUlDKvc09rGp046DYEF8Je3CV6D1wIDpRCSdqdzTVM2p09XXr6Zns1bwSOPYnaO2QZP2AdOJSLrTG6ppqPKzTiE2ddozZz88GS/zK/ar2EXkc6nc08yWsi1V2wnsnbKXdruWwOKzoWErGHcE8hoHTigimUDlnkaKS4qrthMov72c5mumwStXwylj4LL3taujiNSa1tzTxHObnuOieReRn5fP/lv3Y88PgA9WQJ+fQfdbQscTkQyjck8Dc1bMYfLCyRS0K+DVa/9WfUXMkGeg3UVhw4lIRtKyTGC3LrmVyQsnM6HXBF6d+EL15l8jNqjYRSRhOnMP6PLHLqdwXSE/Ofcn/LjvlVAY3xfmst3QsEXYcCKS0VTugfT8XU/Wlq7lwVEPcnXr1rDozNgdYz+CnNyw4UQk46nc61nNqdMXJ7zI+QeL4M8TodUAGPb3wOlEJCpU7vXoY1OnG6bBtieh6/eh/38HTiciUaJyrydlB8to8bPYOvq272+l/eIecHgvfOkP0Hl84HQiEjUq93rwT591evN7NH/ypNgdFy6H1mcFTCYiUaVyr2Ov7XiNvrP6AlD+w7doUFnso7dD47YBk4lIlOk69zr03Kbn6DurL41yG3Hkhpdp8PRpsTuuPKBiF5E6pXKvI/etvI+L5l1E/7b9OThuJvbCYMg/Kbb5V25+6HgiEnEq9zpw25LbuO7p65jQawJFfc+G5d+EjlfCmB3a/EtE6oXW3FPsn6ZO9z8BG/8P+v4Czvxh6GgikkVU7ilUNXV6yX1cvf7a2MHznoe2F4YNJiJZR+WeAjWnTl8a9wTnFo2J3THiDTiuS8BkIpKtVO5Jqjl1+vr4P3LG8tGxOy7bAw2PD5hMRLKZyj0JNadOd111PydUFrs2/xKRwHS1TIK2lm2tKvYDo27nhFevgdaD4SpXsYtIcCr3BLy24zU63tURgIpzhpO/dgZ0uwku/GvgZCIiMQmXu5mdYmbLzGydma01sxtTGSxdPb/p+fjUaUOOdGtMTskzMGgB9Puv0NFERKokc+b+EfAjd+8ODAT+xcy6pyZWerpv5X0MmzeMQW37cvC0cqziAAwrgk5jQ0cTEfknCZe7u5e4+8r41/uA9UD7VAVLN5VTpzf2HM3LzYpjB0fvgFb9wwYTEfkEKblaxsw6AX2B5Z9w32RgMkDHjh1T8XT17orHruCxdY9x38Br+Ob798cOXnkQchuFDSYi8imSLnczawY8Dnzf3fcefb+7zwZmAxQUFHiyz1ffes3sxeqdq3n5nEkMKrkfGneAUVu0R4yIpLWkyt3MGhAr9nnu/kRqIqWHmlOnWwdfTIeSB6DTeBj0h7DBRERqIeFyNzMD7gPWu/svUxcpvJpTpwd6dyZ/5yLo/yvo+t3AyUREaieZq2UGAxOAoWb2Wvyf4SnKFUzZwTIazWhEHuBdIH//2zD0RRW7iGSUhM/c3f2vQKQWnreWbaXjXR05IQd2fSF+8OuboPkXPvNxIiLpRhOqcat2rKLjXR3p2bBGsV++V8UuIhlJ5U5s6rTPrD5c1jyX1afGD46rgAbNg+YSEUlU1pf73OK5DJs3jHtOPZnHTq6AE4fENv+yrH9pRCSDZXWD3b70dq596lpWnXEy3264A7pPhQuWhY4lIpK0rN3P/crCK3ls7aNUdDFyfAd8+VHoeHnoWCIiKZGV5d5rZi/eLF3NkS4ADhcVQ8s+oWOJiKRMVpV75dTpqXnw4enxg2Peg/wTg+YSEUm1rFlzL68oJ2d6Duc0hs2d4wevPKRiF5FIyopyr5w6/c7x8OcOQNPTYNwRyG0YOpqISJ2IfLlXftbpvSfCzBOBzpNg5Jva1VFEIi3Sa+6rdqyiz6w+bDwVTm8IDPgddLk+dCwRkToX2XJf/OZiRjz0NbxL/MD5y+CkISEjiYjUm0guy8wtnss3FnyN8spiv+QtFbuIZJXInblPWzqNp5bPoPS0+IHL90GDZkEziYjUt0iV+7jCcRx+52FWnUpsb5ixh7VHjIhkpcg0X++Zvele8jCFbYGTL4jt6qhiF5EslfFn7u5O7vRcXmzvDD0e6DkNek0PHUtEJKiMLvfyinLyZzSK7xEDfOVxOGVM0EwiIukgY8u97GAZHe5sUV3sw/8PWnwxaCYRkXSRkeW+tWwr5/6mI/uqNv8qhfzWQTOJiKSTjHvHcdWOVUyc1ZG3Kjf/GluuYhcROUpGlfviNxcz5+E+LO0A3rxrbPOvnAahY4mIpJ2MKff7i+9nxwtf4zcnAl+4Dvv6Bm3+JSLyKTJizf3fl07juq0z6HgccNYsOH1y6EgiImkt7ct9fOEVPFT+GDQALvgLnPiV0JFERNJeWpf70Fk9WNp8XezGyM3Q9NSgeUREMkValru7M+DOXIpO8diBKz6EvCZhQ4mIZJC0e0P1cMVhxv0yh6JTnCM5+bErYlTsIiLHJK3Kfe+hvfxiZkMebgsH2pxHztgDuiJGRCQBaVPu2/Zu47WHjmdKKzjY/TYaf3Vp6EgiIhkrLdbcV5UU03tZPzo0ho++XEh+x0tDRxIRyWjBy33p608ydMVoAHz4avJa9AycSEQk8wVdlilcfkdVsXPp+5iKXUQkJYKduT/43HgmfjAvdmPsYcgJ/kuEiEhkBGnU3z/Sj4kVxbyX14aTrtgZIoKISKQltSxjZsPM7HUz22RmU2rzmGcfbMnVFcWsb3Geil1EpI4kXO5mlgv8FrgI6A6MM7Pun/WYw++v4KIGe1jb+QecOVyXOoqI1JVklmXOAja5+1sAZvYwMBJY92kPaGCwsf8D9Og6MYmnFRGRz5NMubcHtta4vQ04++hvMrPJQOUevYfO6DZpDUxK4mkjozWwK3SINKHXoppei2p6Lap1PdYH1Pkbqu4+G5gNYGZF7l5Q18+ZCfRaVNNrUU2vRTW9FtXMrOhYH5PMG6rvAqfUuN0hfkxERAJLptxfBbqYWWczawiMBZ5KTSwREUlGwssy7v6Rmf0r8DyQC8x197Wf87DZiT5fBOm1qKbXoppei2p6Laod82th7l4XQUREJKC02fJXRERSR+UuIhJB9VLuiWxTEEVmdoqZLTOzdWa21sxuDJ0pNDPLNbNiM1sYOktIZtbCzArNbIOZrTezL4XOFIqZ/SD+92ONmS0ws/zQmeqLmc01s51mtqbGsVZm9oKZbYz/2bI2P6vOyz2RbQoi7CPgR+7eHRgI/EsWvxaVbgTWhw6RBu4GnnP3bkBvsvQ1MbP2wPeAAnfvSexijbFhU9WrB4BhRx2bAixx9y7Akvjtz1UfZ+5V2xS4ezlQuU1B1nH3EndfGf96H7G/wO3DpgrHzDoAFwP3hs4SkpkdD5wD3Afg7uXuvidsqqDygMZmlgc0AbYHzlNv3P0vwAdHHR4JPBj/+kFgVG1+Vn2U+ydtU5C1hVbJzDoBfYHlYZMEdRdwC3AkdJDAOgOlwP3xJap7zaxp6FAhuPu7wM+BLUAJUObui8OmCu4kdy+Jf70DOKk2D9IbqgGYWTPgceD77r43dJ4QzGwEsNPdV4TOkgbygH7ATHfvC3xILX/1jpr4evJIYv/Dawc0NbPxYVOlD49du16r69fro9y1TUENZtaAWLHPc/cnQucJaDBwiZltJrZUN9TMHgobKZhtwDZ3r/wtrpBY2WejC4C33b3U3Q8DTwCDAmcK7T0zawsQ/7NWH4RRH+WubQrizMyIrauud/dfhs4TkrtPdfcO7t6J2H8TS909K8/Q3H0HsNXMKnf+O5/P2Do74rYAA82sSfzvy/lk6ZvLNTwFVO6TPhH4U20eVB+7QiayTUFUDQYmAKvN7LX4sVvd/ZmAmSQ9fBeYFz8Begu4JnCeINx9uZkVAiuJXV1WTBZtQ2BmC4AhQGsz2wb8GLgDeNTMrgXeAa6o1c/S9gMiItGjN1RFRCJI5S4iEkEqdxGRCFK5i4hEkMpdRCSCVO4iIhGkchcRiaD/B20cocNCVzjHAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "QN6RU_3gizpw", + "colab_type": "text" + }, + "source": [ + "## 1.5 find $\\vec{a} - \\vec{b}$ and plot the result on the same graph as $\\vec{a}$ and $\\vec{b}$. Is there a relationship between vectors $\\vec{a} \\thinspace, \\vec{b} \\thinspace \\text{and} \\thinspace \\vec{a-b}$" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "68sWHIOPkXp5", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 285 + }, + "outputId": "8e0bf862-23fd-41d5-a9f9-471a973a325f" + }, + "source": [ + "c=np.subtract(a,b)\n", + "\n", + "plt.arrow(0,0,c[0], c[1], head_width=.2, head_length=.1, color='purple')\n", + "\n", + "a = [5,7]\n", + "b = [3,4]\n", + "\n", + "plt.arrow(0,0,a[0],a[1], head_width=.2, head_length=.1, color = 'green')\n", + "plt.arrow(0,0,b[0],b[1], head_width=.2, head_length=.1, color = 'orange')\n", + "\n", + "plt.xlim(0,10)\n", + "plt.ylim(0,10)" + ], + "execution_count": 17, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 10.0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1ZPVuJAlehu_", + "colab_type": "text" + }, + "source": [ + "## 1.6 Find $c \\cdot d$\n", + "\n", + "\\begin{align}\n", + "\\vec{c} = \\begin{bmatrix}7 & 22 & 4 & 16\\end{bmatrix}\n", + "\\qquad\n", + "\\vec{d} = \\begin{bmatrix}12 & 6 & 2 & 9\\end{bmatrix}\n", + "\\end{align}\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2_cZQFCskYNr", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "626224a5-8321-4a58-cb99-f4f8fc3b5aba" + }, + "source": [ + "c = [7,22,4,16]\n", + "d=[12,6,2,9]\n", + "\n", + "np.dot(c,d)" + ], + "execution_count": 18, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "368" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 18 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "cLm8yokpfg9B", + "colab_type": "text" + }, + "source": [ + "## 1.7 Find $e \\times f$\n", + "\n", + "\\begin{align}\n", + "\\vec{e} = \\begin{bmatrix} 5 \\\\ 7 \\\\ 2 \\end{bmatrix}\n", + "\\qquad\n", + "\\vec{f} = \\begin{bmatrix} 3 \\\\4 \\\\ 6 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ku-TdCKAkYs8", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "1eaae6bd-c6aa-40e7-8bf0-3a4a569ed13f" + }, + "source": [ + "e= [5,7,2]\n", + "f= [3,4,6]\n", + "\n", + "np.cross(e,f)" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([ 34, -24, -1])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 20 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-TN8wO2-h53s", + "colab_type": "text" + }, + "source": [ + "## 1.8 Find $||g||$ and then find $||h||$. Which is longer?\n", + "\n", + "\\begin{align}\n", + "\\vec{g} = \\begin{bmatrix} 1 \\\\ 1 \\\\ 1 \\\\ 8 \\end{bmatrix}\n", + "\\qquad\n", + "\\vec{h} = \\begin{bmatrix} 3 \\\\3 \\\\ 3 \\\\ 3 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "-5VKOMKBlgaA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "f99eda8f-5f00-4173-de2d-0ba8e28ddee7" + }, + "source": [ + "g = np.array([1,1,1,8])\n", + "h = np.array([3,3,3,3])\n", + "\n", + "print(np.linalg.norm(g))\n", + "print(np.linalg.norm(h))" + ], + "execution_count": 22, + "outputs": [ + { + "output_type": "stream", + "text": [ + "8.18535277187245\n", + "6.0\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jUdyl4mJoRCC", + "colab_type": "text" + }, + "source": [ + "G is longer" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "njrWIMS-ZAoH", + "colab_type": "text" + }, + "source": [ + "# Part 2 - Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GjkcAVIOmOnn", + "colab_type": "text" + }, + "source": [ + "## 2.1 What are the dimensions of the following matrices? Which of the following can be multiplied together? See if you can find all of the different legal combinations.\n", + "\\begin{align}\n", + "A = \\begin{bmatrix}\n", + "1 & 2 \\\\\n", + "3 & 4 \\\\\n", + "5 & 6\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "B = \\begin{bmatrix}\n", + "2 & 4 & 6 \\\\\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "C = \\begin{bmatrix}\n", + "9 & 6 & 3 \\\\\n", + "4 & 7 & 11\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "D = \\begin{bmatrix}\n", + "1 & 0 & 0 \\\\\n", + "0 & 1 & 0 \\\\\n", + "0 & 0 & 1\n", + "\\end{bmatrix}\n", + "\\qquad\n", + "E = \\begin{bmatrix}\n", + "1 & 3 \\\\\n", + "5 & 7\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Z69c-uPtnbIx", + "colab_type": "code", + "colab": {} + }, + "source": [ + "A * E; B,C,D * A; E,A * C; B,C * D" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lMOlCoM3ncGa", + "colab_type": "text" + }, + "source": [ + "## 2.2 Find the following products: CD, AE, and BA. What are the dimensions of the resulting matrices? How does that relate to the dimensions of their factor matrices?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "zhKwiSItoE2F", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 201 + }, + "outputId": "d50bbff3-e238-4e5b-b2e5-1f393f57b6a4" + }, + "source": [ + "A = np.array([[1,2],[3,4],[5,6]])\n", + "B = np.array([2,4,6])\n", + "C = np.array([[9,6,3],[4,7,11]])\n", + "D = np.array([[1,0,0],[0,1,0],[0,0,1]])\n", + "E = np.array([[1,3],[5,7]])\n", + "print(A)\n", + "print(B)\n", + "print(C)\n", + "print(D)\n", + "print(E)" + ], + "execution_count": 28, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[1 2]\n", + " [3 4]\n", + " [5 6]]\n", + "[2 4 6]\n", + "[[ 9 6 3]\n", + " [ 4 7 11]]\n", + "[[1 0 0]\n", + " [0 1 0]\n", + " [0 0 1]]\n", + "[[1 3]\n", + " [5 7]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Bu88_vQEsAVa", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "1ec7c2a4-9b43-4567-d9bd-b169366f713a" + }, + "source": [ + "np.matmul(C,D)" + ], + "execution_count": 29, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 9, 6, 3],\n", + " [ 4, 7, 11]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 29 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TrEf6eddshvi", + "colab_type": "text" + }, + "source": [ + "2x3" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "pNLQNqSHsK0r", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 67 + }, + "outputId": "89c2f56e-e2be-46fa-d826-873e475d36f9" + }, + "source": [ + "np.matmul(A,E)" + ], + "execution_count": 30, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[11, 17],\n", + " [23, 37],\n", + " [35, 57]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 30 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0pEMi0vusjYz", + "colab_type": "text" + }, + "source": [ + "3x2" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Nog1cNLVsUcQ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "05854c4c-aa0c-420a-9add-50309396387f" + }, + "source": [ + "np.matmul(B,A)" + ], + "execution_count": 31, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([44, 56])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 31 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Rj9gBy9YxD8l", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "ff505c53-0f96-4826-bd47-350002214a64" + }, + "source": [ + "np.matmul(E,C)" + ], + "execution_count": 39, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[21, 27, 36],\n", + " [73, 79, 92]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 39 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "fAX84Zzhsk01", + "colab_type": "text" + }, + "source": [ + "1x2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "p2jmaGLgoFPN", + "colab_type": "text" + }, + "source": [ + "## 2.3 Find $F^{T}$. How are the numbers along the main diagonal (top left to bottom right) of the original matrix and its transpose related? What are the dimensions of $F$? What are the dimensions of $F^{T}$?\n", + "\n", + "\\begin{align}\n", + "F = \n", + "\\begin{bmatrix}\n", + "20 & 19 & 18 & 17 \\\\\n", + "16 & 15 & 14 & 13 \\\\\n", + "12 & 11 & 10 & 9 \\\\\n", + "8 & 7 & 6 & 5 \\\\\n", + "4 & 3 & 2 & 1\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Wl3ElwgLqaAn", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 84 + }, + "outputId": "d78213cc-5edd-4a60-a144-a9c00fb5e3bf" + }, + "source": [ + "F = np.array([[20,19,18,17],\n", + " [16,15,14,13],\n", + " [12,11,10,9],\n", + " [8,7,6,5],\n", + " [4,3,2,1]])\n", + "print(F.T)" + ], + "execution_count": 35, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[[20 16 12 8 4]\n", + " [19 15 11 7 3]\n", + " [18 14 10 6 2]\n", + " [17 13 9 5 1]]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UYEGnyBZtMo_", + "colab_type": "text" + }, + "source": [ + "F has dimensions 5x4, F.T has dimensions 4x5" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "13ik2LEEZLHn", + "colab_type": "text" + }, + "source": [ + "# Part 3 - Square Matrices" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "sDBAPUwfp7f7", + "colab_type": "text" + }, + "source": [ + "## 3.1 Find $IG$ (be sure to show your work) 😃\n", + "\n", + "You don't have to do anything crazy complicated here to show your work, just create the G matrix as specified below, and a corresponding 2x2 Identity matrix and then multiply them together to show the result. You don't need to write LaTeX or anything like that (unless you want to).\n", + "\n", + "\\begin{align}\n", + "G= \n", + "\\begin{bmatrix}\n", + "13 & 14 \\\\\n", + "21 & 12 \n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ZnqvZBOYqar3", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "0d504d33-3387-4744-d9f2-3bd689d22ed2" + }, + "source": [ + "I = np.array([[1,0],[0,1]])\n", + "G = np.array([[13,14],[21,12]])\n", + "\n", + "np.matmul(I,G)" + ], + "execution_count": 36, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[13, 14],\n", + " [21, 12]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 36 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "DZ_0XTDQqpMT", + "colab_type": "text" + }, + "source": [ + "## 3.2 Find $|H|$ and then find $|J|$.\n", + "\n", + "\\begin{align}\n", + "H= \n", + "\\begin{bmatrix}\n", + "12 & 11 \\\\\n", + "7 & 10 \n", + "\\end{bmatrix}\n", + "\\qquad\n", + "J= \n", + "\\begin{bmatrix}\n", + "0 & 1 & 2 \\\\\n", + "7 & 10 & 4 \\\\\n", + "3 & 2 & 0\n", + "\\end{bmatrix}\n", + "\\end{align}\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5QShhoXyrjDS", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "8c020566-0b48-4978-a44a-4e093ac5ea77" + }, + "source": [ + "H = np.array([[12,11],[7,10]])\n", + "J = np.array([[0,1,2],[7,10,4],[3,2,0]])\n", + "np.linalg.norm(H)" + ], + "execution_count": 41, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "20.346989949375804" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 41 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "SHNO4RO-yiXs", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "36916bfd-71cd-462e-efc9-3d974ce3fa30" + }, + "source": [ + "np.linalg.norm(J)" + ], + "execution_count": 42, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "13.527749258468683" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 42 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2gZl1CFwrXSH", + "colab_type": "text" + }, + "source": [ + "## 3.3 Find $H^{-1}$ and then find $J^{-1}$" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "nyX6De2-rio1", + "colab_type": "code", + "colab": {} + }, + "source": [ + "HI = np.linalg.inv(H)" + ], + "execution_count": 47, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "nxK0F91gzDck", + "colab_type": "code", + "colab": {} + }, + "source": [ + "JI = np.linalg.inv(J)" + ], + "execution_count": 48, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Vvd4Pe86rjhW", + "colab_type": "text" + }, + "source": [ + "## 3.4 Find $HH^{-1}$ and then find $J^{-1}J$. Is $HH^{-1} == J^{-1}J$? Why or Why not? \n", + "\n", + "Please ignore Python rounding errors. If necessary, format your output so that it rounds to 5 significant digits (the fifth decimal place)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "GApgapR6zGrd", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "3885f969-3f33-4ec7-aef2-593ec8b9314d" + }, + "source": [ + "np.matmul(H,HI)" + ], + "execution_count": 49, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[1.00000000e+00, 5.55111512e-16],\n", + " [2.22044605e-16, 1.00000000e+00]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 49 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "W3nEhIU6zTEL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 67 + }, + "outputId": "262c0737-102c-42ec-f534-3c6935b7c25f" + }, + "source": [ + "np.matmul(JI,J)" + ], + "execution_count": 51, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[ 1.00000000e+00, 2.22044605e-16, 0.00000000e+00],\n", + " [-1.11022302e-16, 1.00000000e+00, 0.00000000e+00],\n", + " [-1.66533454e-16, -1.11022302e-16, 1.00000000e+00]])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 51 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "V0iTO4McYjtk", + "colab_type": "text" + }, + "source": [ + "# Stretch Goals: \n", + "\n", + "A reminder that these challenges are optional. If you finish your work quickly we welcome you to work on them. If there are other activities that you feel like will help your understanding of the above topics more, feel free to work on that. Topics from the Stretch Goals sections will never end up on Sprint Challenges. You don't have to do these in order, you don't have to do all of them. \n", + "\n", + "- Write a function that can calculate the dot product of any two vectors of equal length that are passed to it.\n", + "- Write a function that can calculate the norm of any vector\n", + "- Prove to yourself again that the vectors in 1.9 are orthogonal by graphing them. \n", + "- Research how to plot a 3d graph with animations so that you can make the graph rotate (this will be easier in a local notebook than in google colab)\n", + "- Create and plot a matrix on a 2d graph.\n", + "- Create and plot a matrix on a 3d graph.\n", + "- Plot two vectors that are not collinear on a 2d graph. Calculate the determinant of the 2x2 matrix that these vectors form. How does this determinant relate to the graphical interpretation of the vectors?\n", + "\n" + ] + } + ] +} \ No newline at end of file diff --git a/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb b/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb new file mode 100644 index 00000000..413364ea --- /dev/null +++ b/LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb @@ -0,0 +1,1623 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Copy of LS_DS_132_Intermediate_Linear_Algebra_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "GSNiYn8lr6nN", + "colab_type": "text" + }, + "source": [ + "# Statistics" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3d4izUhQvh2_", + "colab_type": "text" + }, + "source": [ + "## 1.1 Sales for the past week was the following amounts: [3505, 2400, 3027, 2798, 3700, 3250, 2689]. Without using library functions, what is the mean, variance, and standard deviation of of sales from last week? (for extra bonus points, write your own function that can calculate these two values for any sized list)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "T4RT6X7Pafmr", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt" + ], + "execution_count": 139, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "w1iZfYvBtEA1", + "colab_type": "code", + "colab": {} + }, + "source": [ + "def mean(list):\n", + " total=0\n", + " for i in list:\n", + " total = total + i\n", + " return total/len(list)" + ], + "execution_count": 140, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "nENaBqOqZ3JL", + "colab_type": "code", + "colab": {} + }, + "source": [ + "def variance(list):\n", + " var = 0\n", + " avg = mean(list)\n", + " for i in list:\n", + " var = var + (i - avg)**2\n", + " return var/(len(list) - 1)" + ], + "execution_count": 141, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "q9XegG4SaM2q", + "colab_type": "code", + "colab": {} + }, + "source": [ + "def standard_deviation(list):\n", + " return np.sqrt(variance(list))" + ], + "execution_count": 142, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "vvMhScCxZOye", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 100 + }, + "outputId": "ce18558c-c7e1-4894-95c7-adf4d02d03c4" + }, + "source": [ + "list = [3505, 2400, 3027, 2798, 3700, 3250, 2689]\n", + "print(mean(list))\n", + "print(variance(list))\n", + "print(np.var(list, ddof=1))\n", + "print(standard_deviation(list))\n", + "print(np.std(list, ddof=1))" + ], + "execution_count": 143, + "outputs": [ + { + "output_type": "stream", + "text": [ + "3052.714285714286\n", + "214387.90476190473\n", + "214387.90476190473\n", + "463.0204150595357\n", + "463.0204150595357\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oh63KaOctEp_", + "colab_type": "text" + }, + "source": [ + "## 1.2 Find the covariance between last week's sales numbers and the number of customers that entered the store last week: [127, 80, 105, 92, 120, 115, 93] (you may use librray functions for calculating the covariance since we didn't specifically talk about its formula)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "G7ZB0krot564", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "c3f43e4c-ec56-4904-9eaf-e71927f1a779" + }, + "source": [ + "list2 = [127, 80, 105, 92, 120, 115, 93]\n", + "print(np.cov(list, ddof=1))\n", + "print(np.cov(list2, ddof=1))" + ], + "execution_count": 144, + "outputs": [ + { + "output_type": "stream", + "text": [ + "214387.90476190473\n", + "290.95238095238096\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "J9SbUY9mt66I", + "colab_type": "text" + }, + "source": [ + "## 1.3 Find the standard deviation of customers who entered the store last week. Then, use the standard deviations of both sales and customers to standardize the covariance to find the correlation coefficient that summarizes the relationship between sales and customers. (You may use library functions to check your work.)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vFJms2YRrKhY", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "df3b44b7-4a9b-47c0-8417-97db9baabe46" + }, + "source": [ + "print(np.std(list2, ddof=1))" + ], + "execution_count": 145, + "outputs": [ + { + "output_type": "stream", + "text": [ + "17.057326313123664\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IbZVf7nmujPJ", + "colab_type": "text" + }, + "source": [ + "## 1.4 Use pandas to import a cleaned version of the titanic dataset from the following link: [Titanic Dataset](https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv)\n", + "\n", + "## Calculate the variance-covariance matrix and correlation matrix for the titanic dataset's numeric columns. (you can encode some of the categorical variables and include them as a stretch goal if you finish early)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0TWgUIiaCFzq", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 190 + }, + "outputId": "fe8f8760-7b05-406f-8b16-3287b0fca428" + }, + "source": [ + "titanic = pd.read_csv('https://raw.githubusercontent.com/Geoyi/Cleaning-Titanic-Data/master/titanic_clean.csv')\n", + "titanic = titanic.rename(columns = {'Unnamed: 0': 'Index'})\n", + "titanic = titanic.reset_index(drop=True)\n", + "titanic.head()" + ], + "execution_count": 146, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Indexpclasssurvivednamesexagesibspparchticketfarecabinembarkedboatbodyhome.desthas_cabin_number
011.01.0Allen, Miss. Elisabeth Waltonfemale29.00000.00.024160211.3375B5S2NaNSt Louis, MO1
121.01.0Allison, Master. Hudson Trevormale0.91671.02.0113781151.5500C22 C26S11NaNMontreal, PQ / Chesterville, ON1
231.00.0Allison, Miss. Helen Lorainefemale2.00001.02.0113781151.5500C22 C26SNaNNaNMontreal, PQ / Chesterville, ON1
341.00.0Allison, Mr. Hudson Joshua Creightonmale30.00001.02.0113781151.5500C22 C26SNaN135.0Montreal, PQ / Chesterville, ON1
451.00.0Allison, Mrs. Hudson J C (Bessie Waldo Daniels)female25.00001.02.0113781151.5500C22 C26SNaNNaNMontreal, PQ / Chesterville, ON1
\n", + "
" + ], + "text/plain": [ + " Index pclass ... home.dest has_cabin_number\n", + "0 1 1.0 ... St Louis, MO 1\n", + "1 2 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "2 3 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "3 4 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "4 5 1.0 ... Montreal, PQ / Chesterville, ON 1\n", + "\n", + "[5 rows x 16 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 146 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "AVl9VibmtIIx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 277 + }, + "outputId": "9f54803d-6234-4124-d5b6-c3021355b233" + }, + "source": [ + "titanic.describe(include='number')" + ], + "execution_count": 147, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Indexpclasssurvivedagesibspparchfarebodyhas_cabin_number
count1310.0000001309.0000001309.0000001310.0000001309.0000001309.0000001308.000000121.0000001310.000000
mean655.5000002.2948820.38197129.8811350.4988540.38502733.295479160.8099170.225191
std378.3087360.8378360.48605512.8782771.0416580.86556051.75866897.6969220.417867
min1.0000001.0000000.0000000.1667000.0000000.0000000.0000001.0000000.000000
25%328.2500002.0000000.00000022.0000000.0000000.0000007.89580072.0000000.000000
50%655.5000003.0000000.00000029.8811350.0000000.00000014.454200155.0000000.000000
75%982.7500003.0000001.00000035.0000001.0000000.00000031.275000256.0000000.000000
max1310.0000003.0000001.00000080.0000008.0000009.000000512.329200328.0000001.000000
\n", + "
" + ], + "text/plain": [ + " Index pclass ... body has_cabin_number\n", + "count 1310.000000 1309.000000 ... 121.000000 1310.000000\n", + "mean 655.500000 2.294882 ... 160.809917 0.225191\n", + "std 378.308736 0.837836 ... 97.696922 0.417867\n", + "min 1.000000 1.000000 ... 1.000000 0.000000\n", + "25% 328.250000 2.000000 ... 72.000000 0.000000\n", + "50% 655.500000 3.000000 ... 155.000000 0.000000\n", + "75% 982.750000 3.000000 ... 256.000000 0.000000\n", + "max 1310.000000 3.000000 ... 328.000000 1.000000\n", + "\n", + "[8 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 147 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "xSs86N4xtqAT", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 306 + }, + "outputId": "fd816a8a-38fb-4873-ec33-e49e30b32283" + }, + "source": [ + "titanic.cov()" + ], + "execution_count": 148, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Indexpclasssurvivedagesibspparchfarebodyhas_cabin_number
Index143117.500000284.357034-53.967125-1442.93981225.8287461.172783-9410.735123591.579132-95.438885
pclass284.3570340.701969-0.127248-3.9546050.0530900.013287-24.227788-2.876653-0.249992
survived-53.967125-0.1272480.236250-0.314343-0.0140880.0347766.1460230.0000000.061406
age-1442.939812-3.954605-0.314343165.850021-2.559806-1.459378114.41661381.6229221.463138
sibsp25.8287460.053090-0.014088-2.5598061.0850520.3368338.641768-8.708471-0.003946
parch1.1727830.0132870.034776-1.4593780.3368330.7491959.9280314.2371900.013316
fare-9410.735123-24.2277886.146023114.4166138.6417689.9280312678.959738-179.16468410.976961
body591.579132-2.8766530.00000081.622922-8.7084714.237190-179.1646849544.6885673.625689
has_cabin_number-95.438885-0.2499920.0614061.463138-0.0039460.01331610.9769613.6256890.174613
\n", + "
" + ], + "text/plain": [ + " Index pclass ... body has_cabin_number\n", + "Index 143117.500000 284.357034 ... 591.579132 -95.438885\n", + "pclass 284.357034 0.701969 ... -2.876653 -0.249992\n", + "survived -53.967125 -0.127248 ... 0.000000 0.061406\n", + "age -1442.939812 -3.954605 ... 81.622922 1.463138\n", + "sibsp 25.828746 0.053090 ... -8.708471 -0.003946\n", + "parch 1.172783 0.013287 ... 4.237190 0.013316\n", + "fare -9410.735123 -24.227788 ... -179.164684 10.976961\n", + "body 591.579132 -2.876653 ... 9544.688567 3.625689\n", + "has_cabin_number -95.438885 -0.249992 ... 3.625689 0.174613\n", + "\n", + "[9 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 148 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "E8X1WYlby5lB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 306 + }, + "outputId": "45fc79b1-5577-4c0f-8d6f-fd57d465b19c" + }, + "source": [ + "titanic.corr()" + ], + "execution_count": 149, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Indexpclasssurvivedagesibspparchfarebodyhas_cabin_number
Index1.0000000.897822-0.293717-0.2961720.0655940.003584-0.4812150.015558-0.603727
pclass0.8978221.000000-0.312469-0.3663700.0608320.018322-0.558629-0.034642-0.713857
survived-0.293717-0.3124691.000000-0.050199-0.0278250.0826600.244265NaN0.302250
age-0.296172-0.366370-0.0501991.000000-0.190747-0.1308720.1718920.0590590.271887
sibsp0.0655940.060832-0.027825-0.1907471.0000000.3735870.160238-0.099961-0.009064
parch0.0035840.0183220.082660-0.1308720.3735871.0000000.2215390.0510990.036806
fare-0.481215-0.5586290.2442650.1718920.1602380.2215391.000000-0.0431100.507253
body0.015558-0.034642NaN0.059059-0.0999610.051099-0.0431101.0000000.083796
has_cabin_number-0.603727-0.7138570.3022500.271887-0.0090640.0368060.5072530.0837961.000000
\n", + "
" + ], + "text/plain": [ + " Index pclass ... body has_cabin_number\n", + "Index 1.000000 0.897822 ... 0.015558 -0.603727\n", + "pclass 0.897822 1.000000 ... -0.034642 -0.713857\n", + "survived -0.293717 -0.312469 ... NaN 0.302250\n", + "age -0.296172 -0.366370 ... 0.059059 0.271887\n", + "sibsp 0.065594 0.060832 ... -0.099961 -0.009064\n", + "parch 0.003584 0.018322 ... 0.051099 0.036806\n", + "fare -0.481215 -0.558629 ... -0.043110 0.507253\n", + "body 0.015558 -0.034642 ... 1.000000 0.083796\n", + "has_cabin_number -0.603727 -0.713857 ... 0.083796 1.000000\n", + "\n", + "[9 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 149 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7K0Xfh8MvYkl", + "colab_type": "text" + }, + "source": [ + "# Orthogonality" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Pe3eOZ2fvdZ-", + "colab_type": "text" + }, + "source": [ + "## 2.1 Plot two vectors that are orthogonal to each other. What is a synonym for orthogonal?" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YLSBk7hJvvCx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 248 + }, + "outputId": "a319d551-6ccb-4840-f776-1c5c1f4567f1" + }, + "source": [ + "vector_one = [0.5,0.5,1,1,0,0]\n", + "vector_two = [0.5,0.5,1,0,-1,0]\n", + "\n", + "x,y,z,u,v,d = vector_one\n", + "x1,y1,z1,u1,v1,d1 = vector_two\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection = '3d')\n", + "ax.quiver(x,y,z,u,v,d, color='red')\n", + "ax.quiver(x1,y1,z1,u1,v1,d1, color='green')\n", + "ax.set_xlim(0,2)\n", + "ax.set_ylim(0,2)\n", + "ax.set_zlim(0,2)\n", + "plt.show()" + ], + "execution_count": 150, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9eZQcZ3ku/lRvM909PatmpNEsml2zaGZkLZZkgjFwZYMCAi8/YkOuzVF8zObEJyTmOni5EYfYmBDAwVwCsWMTAhaXEB8bYhtBYplrY2vfrMWame5Zuqdnenrfl6qu3x/yV67qruqu6qke9dj1nKMD7qn+aumqp97v/Z73eSmWZaFBgwYNGlYGuit9ABo0aNDwXoJGuho0aNCwgtBIV4MGDRpWEBrpatCgQcMKQiNdDRo0aFhBGIr8XZM2aNCgQYNyUFJ/0CJdDRo0aFhBaKSrQYMGDSsIjXQ1aNCgYQWhka4GDRo0rCA00tWgQYOGFYRGuho0aNCwgtBIV4MGDRpWEBrpatCgQcMKQiNdDRo0aFhBaKSrQYMGDSsIjXQ1aNCgYQWhka4GDRo0rCA00tWgQYOGFUQxlzENGiTBsiyy2SxSqRRomobBYIBOp4Ner4dOp4NOpwNFSZotadDwngRVpDGlZu2oIQ8sy4JhGHg8Huj1elitVtA0DQBwOp2orq7GmjVrAIAjYfJPI2MN7xFI3uBapKtBNgjZ0jQNlmURDodBURTm5+dB0zRqamqQSCQ4ciXfyWQySKfTAqLVyFjDexVapKuhKFiWBU3TYBgGLMuCoijEYjGcOXMGNE2jr68Per0eiUQCCwsLyGQyoCiKi4KtVissFgusViuqqqoE4+befxoZa3iXQPKG1UhXgyQI2ZLUAUVRCIfDsNvtoGkaVqsVNpsNra2toGkaOp0OTqcTOp0O69evB03TiMfjiMVi3L9UKgWdTpdHxtXV1YL9siyL6elprFmzBjU1NRyJk7wxIWeNjDVUKLT0ggb5yGazXBqBIBgMwm63Q6fToaenB/X19ZidneUiXwKKorjo1WAwoLa2FrW1tYLxGYbhyDgUCmF+fh7JZBI6nY4jYavVimQyCZZluVQFP7VB9lMoMtYIWUMlQiNdDRyy2SzC4bAgBeD1euFwOFBdXY2NGzfCZrNxf9PpdGAYRjAGRVHIZrMF96PX62Gz2QRjAZdJNZFIIBaLIRwOIxQKIRKJQK/XC8jYYrHAbDbnkXHuceh0OhgMBo2MNVQUNNJ9j4NM5TOZDLLZLE6cOIGdO3dicXERMzMzqK2txejoKCwWS953+VFtoc/kQq/Xo6amBjU1NQAAmqaxdu1a2Gw2joyj0SgWFxeRSCQAAGazWUDGFouFI1UiZwOAhYUFWK1W1NbWctExP1WhkbGGlYJGuu9REI0tTdNcZEpyuG+88Qaamppw1VVXCXKtuZAi2FJJV+o4+TlgPrLZLJLJJJcvXlpaQjweB8uyAjK2Wq1IJBKorq7mInGGYZBOpwXj8dMUJDrWyFiD2tBI9z2GXLKlKAoMw8DpdMLlcoFlWWzdurUg2RJIRborBZIDtlgsaG5u5j5nWRaJRILLG/t8Pvj9fng8HtTU1AjI2GKxQK/Xc9eFr9AgEMsZa4oKDaVCI933CHI1thRFIZPJYG5uDgsLC2hvb8fOnTtx4sQJGAzybgudTicq+SqW05WLUlMVFEVxZEyKNCYnJ1FfXw+r1cqRcSAQQDweB8MwqKqqyiNjg8EgSsYk1dHS0qLJ2zQohka673KIkW06ncb09DR8Ph86OztxzTXXcItSchbCCKS2VTO9oCZ0Oh3MZjPMZjOampq4z1mWRTqdRjQaRTwex/z8PGKxGBiGgclkyiPjTCaDcDiM5uZmrfBDg2JopPsuBcnPejweMAyDlpYWJJNJOBwOhMNhdHV1YWBggCNbAiWR6pVOL6gFiqJQVVWFqqoqUTKOxWKIx+NYWFjgtMZkAZJPyEajkbseNE0jk8kI9qORsQZAI913HXILGpLJJKLRKBYWFpBMJtHd3Y3h4WHJB10sZSAFQrpSOt3lQs2xSt0/IePGxkbuc5/PB5/Ph+bmZsTjcXg8HsRiMWQyGRgMBgEREzImECPjQCCApqYmmEwmrfDjPQCNdN8lyC1ooCgKoVAIs7OzoGkamzZtQkNDQ9EHWWl6QU3JWDmhtqLCYDCgoaEBDQ0Ngr9lMhlOTeH1ejEzM4N0Oi0oiSb/TCYTAGB6ehr19fVcMYhW+PHuhka6qxxEicAvUvD7/XA4HDAYDGhtbQXDMIJIrRCURrqJRALHjx9HMplEVVUV9Ho9GIZBKBSC1WqVvSi3ElCLqHKjez6MRiPq6+tRX18v+JymaY6M/X4/5ubmkEqlOM8Kl8vFKSv4xSla4ce7D5XzRGiQjdyCBoKlpSU4HA5YrVYMDQ2hpqYGS0tLCAQCsseWE+myLAuv14tLly6BYRhs3rwZRqMRNE1jYWEBPp8PbrebW4ySUgbIOZZ3S9RsMBhQV1eHuro6wecMw+Do0aMwmUwIBoNwuVyiJdG5/hT8wg8CQrrE8U0j48qERrqrCCRfSyIk8tnCwgJmZmZQX1+P8fFxmM1m7jtKJVyFtmdZFh6PBw6HAzU1Nejt7YXX60VNTQ3S6TSqqqpQV1eHVCqFgYEB7jtEGRCLxeByuSRlWlarlTuvSodaJEZSB62trYLPc/0p3G43EokEJ4fjXzOz2cy9oFKpFC5cuICxsTHR/WiFH1ceGumuAvALGsLhMBwOB0ZGRuByueB0OtHc3IytW7cKpqUESklXLLokxD49PY26ujqO2MPhcNGcbiFlQCqV4qbcLpcLsVgM2WyWI+NYLAaTyYT6+vqKIuNC6QW1IOVPkc1mOTKORCJ5JdFVVVWgaRrJZJLzpxDTGpP/1Qo/Vh4a6VYwxDS2LMsiEongjTfeQGtrK66++mrB6ngulhPpZrNZuN1uzMzMoLGxMa8seDkLaRRFobq6GtXV1XlknEwmEY/HEYlE4PV6sbi4iGw2i+rqatFqMjlQeyHtSpGSTqcT+FMQZLNZJBIJBAIB+P1+TE9PIx6PA4DkdStUhafJ28oHjXQrEGJkS9M0pqensbi4CIqisGvXLlmEU0qkyzAM5ubmMDs7i+bmZmzbto1bac/dlpAZeRiXm4elKIorYAiFQqitrcWaNWs4MuYvRsXj8TwyrqmpgcViydMf849xubiSpCsF4k9BOnoMDw8DyPen8Hq9SCQSBV9i/DWDYDCIhYUF9Pb2cvvRyHh50Ei3giDWoSGVSmF6ehqBQAAbNmzA1VdfjTNnzsiO8JSQLsMwiEQiWFhYQFtbW0lRtNqLX3xSJ2RMSnvJ3wmpRKNR+Hw+UdOb3EXH5R5TpZJMNpsV3BuF/CkKvcRI3hi4fF8QMga0wo/lQiPdCoBYh4ZEIgG73Y5YLIauri4MDg5yUWiuh20hyCFdmqYxNzcHl8uFqqoq9PX1oa2trejYfIIlRKR2cYScbaTImHgkEH/eSCTClQLnRnhikbEUKp105ZxLoevGz7UHAgFEIhEcOXIEVVVVeYt4xJ8CkCZjKXnbexUa6V5B8PNwTU1NoCgKkUgEdrsd6XQaPT093OcEaqoRMpkMZmdn4Xa70d7ejl27dmFmZkY2AZUjvaAW+KY3zc3NSKVSWLduHWprawVk7PV6udxnLhnzjdL5eDeQrhRyc+0WiwXhcBjd3d1cSXQsFhNIAo1GI5fWESuJ5qfKWJaFy+VCZ2dnnqfxe0VRoZHuFQC/oIEYrOj1etjtdlAUhZ6enrxKJwKlN6QY6abTaczMzMDj8aCjo0OQHy7FeyH3mMqRXlALuWRMQF6AhFQ8Ho+oUTrJmy6H2PgQa865HCyXdHNBUgtSJdEk90uu2+LiImKxGGiahtFoFPTBI+mKYDCIDRs2vGcLPzTSXSFIFTSEw2F4vV4AyGuHowb4JJpKpeBwOOD3+9HZ2Yldu3blPaBKItVyG96stDevlFF6LhmHQiFQFIVAICCql1UCNQmcHO9KjkdRFEwmE0wmU8GS6KWlJUxPTyOVSiGTyeDSpUsCMuYv1EoVfrxbOn5opFtmiHVoAIDFxUVMT09zN934+HhZ9q/T6UDTNM6fP49gMCjpLsbfXm6kK7atkjLi1QAxMp6dnYXRaITNZuP0sgsLC0WLF8SgdqqCYZiyRLqlQKwkOhKJYHZ2FuvWreMM5mdnZ/P8Kcg1rKqq4l7uUh0/4vE4amtrYTQauaAmtxlqJUEj3TJBrEMDy7Jwu92YnZ3ldK8GgwHHjx8vyzHE43HY7XYkEgk0NjZiaGhIluGN3IU6fhWU1+uF1WpVnXTVGktNciPRqZRell+8IEbGxGOhurqauzfUQjnSC4UULEpB0zRMJpNoSTRN0wKDeafTiVQqJXjxkWtIWi+xLIuJiQkMDw+Dpmn85je/wenTp/Hwww+rdsxqQyNdlSGmsWUYBi6XCy6XCy0tLQLdK9leTUSjUY5su7u7EQqFsG7dOlnfVUKa6XQa8XgcJ06cQENDAzweD+LxOBKJBM6dOyfQzpKHRAkqddpYiMCLkXE0GhW0nQfeybHzPRZKPfdsNquqydByIl2l4xkMBtTW1uZFqbkl0eTaETkcKaSJx+MIBAJ5ZF5p0EhXJRDyXFxcBAA0NTWBYRjMzs5iYWEB69evx44dO/IeiFIfLrEHPxKJYGpqCul0Gr29vWhsbARFUZicnJQ9rpz0AjFDDwQC0Ov12LlzJzKZDCjqcgugs2fPYsOGDXnRHnlISKRXU1MDk8lUseQqhVKibykyjsfjuHjxIqqqqkQJhd/TjUy1C2Glc7pKUQqJS5VEMwzDqX8ikQgeffRRvPHGG8hmszhz5gyGh4dx9913S5Lw3Nwcbr/9dq7g6K677sI999wj2IZlWdxzzz144YUXYLFY8PTTT2PLli0AgB//+Mf4+te/DgB44IEHcMcdd8g6H410l4ncgoZkMolUKgWfzwev14uOjg7s3LlT1WiBECMZMxQKYWpqCtlsFj09PbJtHMVQaCEtmUzCbrcjFAqhu7sbg4ODeP311/NMzAGIEgyJWKLRqGD6SFqv53rNqik/K4cKQq1xjEZj3kxE6lrxp9piZFwJJFkINE2rNh65b4xGI3p6evDDH/4Qjz76KIaHhzE+Po7z58+LVlISGAwG/MM//AO2bNmCSCSCrVu3Yvfu3Vw1HwC8+OKLmJiYwMTEBA4fPowvfOELOHz4MPx+P/bv349jx46Boihs3boVe/fulVQdCfarytm/ByFW0JBMJuF2uxGNRrFx40b09/er+gAQ6PV6ZLNZhMNhTE1NQafToaenJ8/DtRSIRbqJRAIOh4Mj20K54UJEKRWxEK/ZaDTKrXJnMhkwDAOz2YxsNisQ45eKSiwDlhqrUHTHL1zgv7gsFguSySQoikJtba0qs4hypBcKEaFS5N5roVAIa9aswcjICEZGRgp+t7W1lXN3s9lsGBoagsvlEpDuc889h9tvvx0URWHnzp0IBoNwu904dOgQdu/ezQU4u3fvxksvvYTbbrut6DFrpKsQYh0aYrGYYMGqtrYW69evL8v+CdkfP34c1dXVGBgYUHWllk+apCouHA6jp6dH9kKc0qhSymvW4XCAYRjOeEfMn5eI8lfShUxN0lUamer1etG8J1mEstvtiEajuHjxIkfGYh0r5B5/pUfOuWXP4XC4pOBjenoaJ0+exI4dOwSfu1wudHR0cP/d3t7Orc+IfS4HGunKRG6HBoq63A7HbreDYRhuWh8IBLi8rhIUe5CJcbjdbkcqlcKmTZsE5ZtqQafTIZ1O480330QkEkFPT0/Bnmq5UDMlYDAYUF1dLfCazfXnnZub4zwD+EUMNTU1khVly8VKRLpKQRahzGYz1q1bx73A+B0rpORZ5HoZjca8Y6nk9AIZjz/7CYfDihfSotEobr75Znz3u99dEamZRroFIFXQEAgEYLfbYTAY0NvbK/iRSbsaJcjN0eYeg8fjgd1uh81mw+joKCYnJ0W9c6UgVTmWi3g8zqURNm3ahJGRkYpTHBTy5y1U3ktWtvV6fUlFDHxcyUhX6XhSs4hcMp6ZmRFtrJnJZFRPL6iprsgl3VAoJCuvSpDJZHDzzTfjM5/5DG666aa8v7e1tWFubo77b6fTiba2NrS1teHQoUOCz6+77jpZ+9RIVwR8je25c+cwNDQEAFy+0Ww2c+1wclEK6ZLv8G/uXOPwzZs3cx0hSvVfkHp44vE4pqamEIvFsG7dOphMJrS0tCg6h3JBSXVcofLeixcvcucppqSQqw5QckxyoHZxhFwSlyLj3CqyWCyG48ePcyW9uZGxUpQjcs4lXbnpBZZl8Wd/9mcYGhrCl7/8ZdFt9u7di8cffxy33norDh8+jLq6OrS2tuKGG27AV7/6Va4V1sGDB/HII4/I2q9GujwQ2RfJI1IUxfmJko6to6OjsFgskmMYDIa8evJiIAtjwOWHZn5+XlBAwTcOB9Qj3VgsxpFQT08P1qxZg2g0inA4rOj4ywU1yIis9pvNZrS3t3MvykJKCn4BQ26JqprHBlSexCu3iiwUCmH79u15ZOxwOAT+ClIt53NR7khXSTHHa6+9hp/85CcYHR3F5s2bAQAPP/wwZmdnAQCf//znsWfPHrzwwgvo6+uDxWLBU089BQBobGzEgw8+iO3btwMAHnroIdmqIY10IV7QQMiP2AJKtcPJRanphUwmA4/Hg7m5uYLG4aXsI5ek+WTb29srcDKrFJewcqOYkoLvF5DJZATkkkwmK9abt9CMZjmQ6nLMdx4TM7vJJeNy5nSV3rd/9Ed/VPQ7FEXh+9//vujf9u3bh3379inaJ/AeJ10psiXesq2traitrUVvb6/st6dSQiQC75MnT2L9+vVFjcOB0iPdaDSKqakpJJPJPLItdexyY6VfAFLTbj65xONxruBkuUqKSi8DLgYpsxspMiaKGP5MYjmRrxjpVnqxzXuSdMU0tjRNc3aHbW1tnN1hKBTi3txyILeMlqZpzM7OYn5+HgaDAcPDw7LVCEqJkWEYnD9/HgzDCCrVlnP8uSjHja7mmMslbz65RCIRLlXBV1I4nU6uuWZ1dbWAWKSM0tV2GVPb8KZUiJExy7I4cuQI1qxZk+fJazKZ8iJjOWRM0zSXfksmkwVTf5WC9xTpipEtsTsMBAKidoel5GgLIZPJYGZmBouLixy5KynTBeRH06QsOBwOY2BgAO3t7UW/Q6J9uSCGI4uLi9yUMp1OIxgMoqamRtX83XKhtsyrkJIimUxyZCxmlE4ImWEY1V8uap6nmiD2jI2NjXmevFIG6fyZBHl58e8pfqQbDAYr2l2MoHKeiDKCFDTY7XY0NTWhpqaGk0dFIhGupFWqMkgNQ5p0Oo3p6WksLS1xxuGE3PkLaXJQLNKNRCKYnJwETdPo7e2FwWCQ7dMrN9LNZDKYnp5GLBZDZ2cntm/fzlVLkQ6+drsdNE1zDw4/8pMbjVVifrkYsfFb4UgZpRNPCrJoGYvFSlJSSO1fDaxUqqKQQTqfjF0uF+LxuICMI5EIzGYzaJpWpFy4knhXk25uQUMymUQwGORMYbq7u4tqUZcb6SaTSUxPT8Pv92PDhg3o6+vLu5GVErter8/rRQWAKwsmaQQytVtYWFDUDaLQtvyuxJ2dnaipqcH69eu5FEx9fT1MJhM2btwIQFjMEI1GuQaI/MaRxKch112rUhf1Sj0mvm8CkeTNz8+Dpmk0NDSIlvby88VSSopyQW3SVXrdCpEx6ePm9/vh8/nwrW99C//1X/8FiqLwN3/zNxgZGcENN9wgeOnxsW/fPvz6179GS0sL3nzzzby///3f/z1++tOfArh8z1+4cAFLS0tobGxEV1cXbDYbZ6h+7NgxRef1riNdsYIGIv3yeDwwGAwYGhqSLaAulXTj8Timp6cRDAbR3d2NjRs3FsyjLkeNEA6HMTk5iWw2KyBbqe2VjE1Act4LCwuCSN3lchV8mKSm4GJRH9HPEpJJJpOqeblWquENsWIspqTwer2cksJgMAic2pa7GCWFlbR1VAJ+Hzen04mBgQF8+9vfxosvvoiXX34Z1157Lc6dO4dgMChJup/97Gdx99134/bbbxf9+7333ot7770XAPCrX/0K3/nOdwTE//LLL5dcEfquIV2pDg0+nw8Oh4MT/NfU1CiqWFEahcbjcSSTSZw+fVq2X0EpkW42m+XcxViWRW9vr+TUqpS+ZwRkwY80r8x1TONvrySfKBb1Ae8YupDIOJlMwuPxcM0P+USj9AGutNLdYmMVKmAg+eKFhQVEo1FuMYqYLpFruxySq1TS5YOf0w2Hw+js7MRHP/pRfPSjHy34vWuvvRbT09Oy9vHMM8/IMrKRi1VPumIFDQDg8XgwPT2NmpoajIyMwGq1wul0Ko5a5Ua6fOPw6upqQQVZMej1+rwWJIWQSCTgcrkQCoUKki2BUtIFwHkBz8/Po62tTdKeUm19L9/QhahKOjo6uNxeNBrl9NMMwwhUAuX0W+DjSpcBG41GNDQ05CkD0uk0Tpw4gUwmA5fLJVBS8F9WclvOq51eUFujCwjVGqWa3RRCPB7HSy+9hMcff5z7jKIoXH/99aAoCp/73Odw1113KRpz1ZKumMaWZVmumquhoQGbN28WVHMZjUbOrV8uDAZDXpM8PohCIJPJcKY3p0+fVrQwJjfSJfnoTCbDlQbLgRLSZRgGqVQKb7zxBtavX1/UC3il8q5SEqRkMimwhSQdfHPN0iu1dFetsUiDSIPBgM7OTsH4/GtUSEmR60lRjki3HGkQcsyhUEhgjqQGfvWrX+F973ufILXw6quvoq2tDR6PB7t378bg4CCuvfZa2WOuOtIlZOtyuQQP1NzcHJxOZ147HD5KLdEV+w7fODw3j1pqukAKgUCA883t6+sDAIEJRzHIIV2GYbiiEACiXS4KjV2u6LJYvpioBPj5tdzWOGRWcO7cOdTW1gqIppSc8ZWOdKUgdlyFrpFYTp2iKC41kc1muTUSNc63HOkFPsqhXjhw4EBeaqGtrQ0A0NLSghtvvBFHjhx5d5MuwzDIZDIIh8PIZrPweDwF2+HwUQrpGgwGAYHyCTDXYYyglDJdse3JvvR6vcA3NxKJqCYxIxV4TqcTra2t2LFjB44cOSI7IpGKdNV4UEv9vlhrnLNnz6Krq4urzPN4PIhGo1yjRH5UXKyqrBIjXUAZgRfKqZN+ZEtLS4hGozh69KioFaRSJYXapJt77dQm3VAohFdeeQX/9m//xn1GUjakE/TBgwfx0EMPKRp31ZEu8SkIBoOYn59HT0+P7HY4pZJuJpOBz+fD1NQUJ4cqpHuVio4Lbc8nXb/fj6mpKRgMBtF9lVIGnEvq2WwWTqcTc3NzWLdunezINhdipCvXSnKlYTAYYDabBS/KYv68hLz50281UxVqlgGrETXnelLU1dWhs7OTM0mPRqN5VpC5rZakZg+55jTLxXIcxm677TYcOnQIXq8X7e3t2L9/PyfD/PznPw8AePbZZ3H99dfDarVy31tcXMSNN97I7f/Tn/40PvKRjyg67lVHuqFQCKdOnUJtbS1aWloE+atiUEq6LMsiGAzC6/WCoigMDw+L2jmK7UdpeoFhGI5sjUYjBgcHJYm9lEia3FDZbBYulwuzs7NYu3atLK+HQihEumqg3PniYv68REXBl7Qlk0m4XC4uVbGctjhqlgGXs8uDVKde4j4WjUYFHgukrJdPyOW2dQyHw7KVSc8880zRbT772c/is5/9rOCznp4enD59WtFx5mLVkW5tbS127doFj8eDSCSi6LtySZdlWSwuLsLhcHA3zNjYmOz9KCFFlmURDofh8/kAoCDZEpQa6TqdTszMzKClpWXZZEtQTtK9kpEy35+XD4ZhOH9ZfieGUrWzlZofJuMVOwcx9zGxSrJYLIZkMomqqiokk0lBKqfUY15OpHslsepIV6fTgaKoZfvWioFlWbjdbs47d/PmzaiqqsLhw4cV76cY6bIsK4hsLRaLbDWCkrLhbDaLQCDA6Wy3b9+ualWTTqdDPB7HzMwMNzXNZrOqWh9W0jh6vR46nQ6tra0CsuBrZ/neAUSuJUUyahJlOSJdJR1KCKQqyaampmA2m2EymbiOFXKVFGLIJd1MJlPS8a40Vh3pEhiNRtFS2FLANw5vamrK885V+sDq9XpJmRnLslx+2Gw2Y3h4GBaLBUeOHJE9vpwKNv4LxGKxYN26dRgYGJC9DzkRWCKRQDAYRDgcRnd3N7dIRawq+Ybg5J+S6FrtSLeci19S2tlUKsWlKPgkY7FYYLVakUgkkE6nVYl41fbSLUcTSbPZjIaGBkklBUlTEOlf7uId35NiOV66VxKrjnTJBVfD/Yu/mFRIaqYUBoMBsVhM8Bm/saTZbMamTZu4BD2pppOLYg0sCdk2NTVh27Zt3I2sZPxCJJBKpWC32xEMBmE2m9Hb24uamhpks1m0tLQgHA5jcHCQuw5EQ0u6DRC1APm3nClmJYNfriomaYvFYkin05idneVUKvxoT+lLSm1bR7VJXKo4gq+kyN0/X/o3Pz+PZDLJbU/SH4lEgntuK23xVgyrjnSByxd2OZEuTdNwOp1wuVxYt26davlNAn56gZDt1NQUrFargGwJ1LhRSE81h8OBxsZGQbRequl57gOcTqfhcDjg8/nQ09ODwcFBXLhwIe/75HzE2oXnGuDkRn+5BQ2VGsEs5zfjS9o8Hg/6+vo4pyyxljhii1Ji5FWO9ILa4ylRL4hJ/4B32s3Pzs4iHo/jqaeewo9+9CNEo1H8+Z//OTZt2oQPf/jDnKY9F8XMbg4dOoRPfOIT6O7uBgDcdNNNnCzspZdewj333AOGYXDnnXfivvvuk30+BKuSdIHSIl2appHJZPDGG2+gra1NkUxKyfSPSMZIF9+amhqMjY2VxWCZv+hXX1+PLVu2LLunWu5CGLFx9Hg86OrqwsDAQMHy30JOZYUMcHILGshsIZPJLNvcpRIlbICQKAt1rSAvKX55r5g3b7nUC5U0HlFSkHP/4he/iJtuugl33XUXPvWpT+HNN9/EwsKCJOkWM7sBgPe///349a9/nXf8X75YJBMAACAASURBVPrSl/Db3/6WWx/Zu3cvhoeHlR2/oq0rCEoeIL5xuF6vx+bNm2VJvwiKddPlg8jMyHS+3GRrt9tRV1cn2sCSoNRIl+8sJmbwTrYVI12lEItqlpaWEAqF0NTUJLpAxU9RLLet+pWCnJeByWQSNf7m50E9Hg/C4TD3OX/GUKqkrRwSr3KNFwqF0NzcjPe///14//vfX/B7Ssxu+Dhy5Aj6+vrQ09MDALj11lvx3HPPvTdIV64kiW8cTkjjzTffVDxlJVF1sSolEtlaLBbU1dVh06ZNivYjByzLYmlpCfF4HF6vV5axTil9z2ZnZ7G4uCjqLMaHVFSrVlpAp9OJLlCRzgyEcOLxuMAWstSqqZVGqSkBsZbzbrcb6XQajY2NeV2ODQZD3rUpNmMohwRNbdIlacFwOCxaHVoqXn/9dYyPj2P9+vX41re+hZGREbhcLnR0dHDbtLe3K1Y2AauUdPkQixQKGYeXKjWTUgvwp/e1tbXYvHkz9Hp9SQLqQlEPPzdMIrvh4WFZEYxc0iULi8FgEDabDTt37iz6YF4Jna5UZwa+LSS/aspkMiEej8Pj8aC+vl5R54pyQ22drpQ3b24RAzG753f1yF3ULIdXgpqzEX4gFAwGVSPdLVu2YGZmBjU1NXjhhRfwyU9+EhMTE6qMDaxS0s1VMJC3XSKRgMPhQCgUQldXl6hxeKmlwLnf4ZNt7vSeWE0qASH2XJLjqx5IkYbFYsHrr78u+4EtRrpEMjczM4O1a9eiqakJbW1tsnKn5a5IUwKxhTvg8ozn9OnTyGQymJubQywWA8uy3MIdif5yO1esBNQuA5b6zaSKGEgHhtxFTbPZjEQiAb/fL9rVoxLAf/bVLIzg3z979uzBF7/4RXi9XrS1tQmMppxOJ2d+owSrknQJiIKBrKpHo1F0d3cXNA4vRfXAJ12+SqChoUE0l1rKdD634IGv57VYLBgdHRXkhglJy4nYpI6Hfy5r1qzhCifOnDkjmzTF5GWVVgZsMplgNBrR3t7OpRuINjRXjqTX6wVEvBLNNa9URRpf0ibW1eP06dOIRCJwu90CqValpG/4kXgwGFSNdBcWFrB27VpQFIUjR44gm82iqakJ9fX1mJiYgMPhQFtbGw4cOICf/exnisdflaRLblKWZXHhwgXQNI2enp6i/c4A5WY0/O/Mz89jenoaDQ0NoiqB3ONTug8SHROyra6uFpWYActrwcPPP9fX1+cVgygdezWWAfO1oWvXruU+p2maqyzjT8P5RuDEMF+NFEUllgGTa2M0GrlFI0A6fSOnq0c5Zj788w2Hw5JqhVwUM7v593//d/zgBz/gDJIOHDjAVcE+/vjjuOGGG8AwDPbt24eRkRHFx70qSTcajeLChQsIh8PYsGEDurq6ZN+4RqORq3aRA5ZlEY/H4Xa7sXbt2jyCUgs6nQ5+vx/z8/MwmUxFzXWU+DsQEuTnhW02m6TiQQlpii2kVWJDSbnHYzAYRKfhfCPwdDqN48ePA0Bexd2VjPzK3b23UPqGvKhyO1bwy3rLeWxK0gvFzG7uvvtu3H333aJ/27NnD/bs2aP4+PhYlaQLAF1dXfD5fLBYLIoiBbk53Ww2C7fbjZmZGRiNRnR2dnJiabURCATg9/uRTqcxNDQkS86mtAUPTdM4cuQILBZLURmb0rHJtaJpmlvAqaT0AkGpEWWuEfjS0hLXcl7M7lBJPzc1o/mVapmeCylJG1GY8Hu5HT16NC+Xvpx28wTlaNVTLqxK0rXZbKiurkY4HF5WflYMfLIlPgxer7ek6rdiU8dgMIjJyUno9Xo0Njaio6NDtn5YrulNMBjExMQE0uk0tmzZIpvQ5ZAd3yFt3bp1MBgMcLlc8Pl88Pv9sNlsgihQ6cNVaQs3ucj1niWQivyI3wK/5byaUFOStdyXXa7CJBaLYXp6GkNDQ9yLKrfdfO6LqlCVaO56RigUUlUyVk6sStIlIAbjSr8jRrr8Ffw1a9YIfBhIfbcSFCqoCIVCmJychE6n4zpCXLp0SZVuEwThcBgTExOgKAqDg4M4e/asbEIvVFEGvKOoIC+Mzs5Ozuhap9NhcnISDQ0NqK6uFlSYEb0on4iX27G2EiEV+RG/Bf7iVDwex8WLFwXXo9SSdDUj3XJVoxUq7eXn0vm+vGJdPXKVPqFQSFGX7yuJVUm6JAIyGo2cxEUuckmXb+rd3Nwsan24HJkZ/8YlZEtRFPr7+wW5MSV2jYB0CiAajWJiYgIMw6C/v7+kt3+hSDcQCGBiYgJmsxnj4+Pw+/1514b8PmILVcQCMbeklT/lJFExsLrcowqB33uM3x7n8OHDaG1tzWshVFVVlUc2xQhVbZvIchqO50Iqly7V1cNkMiGVSsHpdCIcDiMYDGqkuxJYjvyLT7YtLS0FfWaVdmrI/U44HMbk5CRYlkVfX58oEcqxayx0TLFYDFNTU0gmk+jv71/WDSgW6ZLIWafTCRb5gsGgIvWCmAVirnyLRMUE8/Pzy46KK5W8KYrK81soZgmZu3BHXnJqei9Ugo9Doa4eS0tLcLlcmJubw8MPPwyHw4EPf/jDGB4exsc+9jGupY4Yihne/PSnP8Wjjz4KlmVhs9nwgx/8AOPj4wAuryXZbDbo9XoYDAYcO3ZM0TkBq5x0S4lAien266+/LruDQqlVbOFwGG+99RYYhkFfX1/BRH8pLXgIWU1NTSEWi6Gvrw+NjY3LzoXyo+hYLIaJiQnQNC0aOauh05WSby0tLWFhYYHr/lwoKpZzzpWYIxY7pmKWkCQfOjc3J+haQbwYjEbjsqPUSvZdIPItosB5/vnnce211+J3v/sdLly4UHTGWMzwpru7G6+88goaGhrw4osv4q677hKU+7788suC30UpViXp8tMLciNdvncuy7KK7ByVkm4kEkEgEEAsFsPg4KCsqFOv1yuK2kkXX4fDgd7eXjQ3NxclFbmaUIqikEql8Oabb3Jkzo80crctl07XaDSiqqpKUO9OcqNXKlesZsSsdCypfChJ2fh8Pq5Kkt9Yk6QolJgClSOnW86mlMDldNa2bduKfreY4c0111zD/f+dO3fC6XSWfJxiWJWkC7zztitGhqQ3mNPp5Lxzjx49qmixQm5BRTQaxeTkJDKZDOrr69HW1iZ7mq/X65FMJotul06nYbfbsbCwgDVr1sgqCAHeydMW2zadTsPj8SCRSGBoaKgomUuRbrnAz43KzRVbrVZkMhmuN9dyjk/tYgY1xiIpG9LQlPzWYt0Y+FVlhbp5lMObV03Paj7pEpleOfDkk0/iox/9KPffFEXh+uuvB0VR+NznPoe77rpL8ZirlnSBwlNyhmEwNzfHGZXneucqeXiKdfeNxWKYnJxEKpVCb28vmpqaMDk5qThHW2haRDxtl5aW0NXVxTnnyz0HKWNyApqm4XA44PF4UFdXh7Vr1woWfKSg1E+3XJBql0MUAzRNY3JyMq+JpM1mUxQVq0m6anYCJuPxfY5zXcgAYVVZoW4emUymYtMLZDyyBhMKhfIKNtTAyy+/jCeffBKvvvoq99mrr76KtrY2eDwe7N69G4ODg7j22msVjbtqSZeiKNGbn5Ct0+nE+vXrRY3Klfjjkn2JgSxeJRKJvHxqKTlase1zPW137twJnU7HSY6UjC9GhAzDYHZ2FvPz8+jo6MCuXbvgdrtlpzrExlWzDHg54/Cj4rm5OYyOjnJpHDEdLZmO83W0ub+92ukFtWcFcsrg5XTzCIVC3JoBPzIutZChHOkFUuBTji7AZ86cwZ133okXX3xRkFojBjctLS248cYbceTIkfcO6eaCpmkusl2/fn1BW0I5/riFEI/HMTU1hXg8zkW2uTeiUtLN3Z6QIfHwzDUQV6p2yN2er94g14tcD7nFEUBllvwWg1RUTBQUfB0t3wBHbbetK1VBlgsxlcD8/DwYhkFDQ4No/pxPxHK6eZRjYY7sU+3CiNnZWdx00034yU9+ImjmSl7ONpsNsVgMBw8e5Nr4KMGqJV3+jT81NQW32422tjZZHrCEdJV6KBClQDQaRW9vL9asWSP5ABoMBsmOwGIgpMtf8Fu/fj127dol2cyvFF0vv3Flc3Oz6IKikvRAJVk7Lgf86Tg/rcL3oXW73YhEIojH41yxyXLIuFJbCAHv6HSlFu7410Ssm4fVahWU6JeTdJU6jBUzvPna174Gn8+HL37xiwDAScMWFxc5KRpN0/j0pz+Nj3zkI4qPfdWSLslBEm9UKXISg1I1QiKR4KzulLiZKY1Eo9EoXn/9ddEc9HLHpygKXq8X8/Pzos5iucei1HvB5/MhEomgtrZWtYaSlWARmetDm06nce7cOfT29haNimtqagrek5US6Yqh0MKXlDdvoW4e5HODwaCKKVBupKtEl17M8OaJJ57AE088kfd5T09PSc0JcrFqSdftdkOn02HNmjVobW1V9BaVS7rJZBJ2ux2hUAgmkwlbt26VvUoqlxRJ5Gm325HNZrFr1y5Z+1BCjH6/Hz6fDwzDyGrvo4TsYrEYPB4PaJpGTU0NFhYW4Pf7kc1mOQPsmpoa2Gw2VYxNlgM19k0Wv8SiYlLKSiLAaDRaMFdcyZGu0si0WDePYDCIQCAAl8slMAXid6xQsj8+6YbD4bIspJULq5Z0Sa0/KZtUgmKeDclkEg6HA8FgED09PRgaGsKJEycUyV6KkS6/sWRjYyO2bNmCN998U1VSD4VCmJiYgMFgQFNTEzo7O4sSLiCP0Em5cTqdRn19PUZHR5FOp7lFvkwmgzVr1nDR4Pz8fJ6eligHCkV7lZamKESUUqWsUrniqqoqJJNJhEKhkrsc8/ejJtSKwsnCncFgEHSR5i/c8ct75Xbz4L8UQqEQOjs7l32sK4VVS7oEy+0EwUcqlYLdbkcgEEBPTw8GBwfzWgMp2YcYKfLNYurq6jgz9Gw2W1JFmhjE/BfkVOrIGTuZTGJychKxWAz9/f0wGo1wOByCbcg1k8qR8h820mbdYrEIXMlK7WBbbiiNTqVyxTRNY3FxEQsLC4K8qBwFhRrHVQzl7o8mZgpUrJsHf/GOf77BYBBjY2OqHms5sWpJt1QyBPKJOpVKweFwwO/3o7u7W0C2BKWoEXKPy+fzYXJyEhaLBePj4wJPWyWKAbJ9LjEmEglMTk4iHo+jv79fcEMrzdPmHksmk4HdbofP50Nvby+X145Go6p4L8TjcUQiEYEvLbmGi4uL3BS0VGK50rnhXJCI32azcSvkchUUYlFxOYoZVtr9rVA3j9ymmvF4HGfOnMHPf/5zOJ1OjI2NFTXVAYr7LrAsi3vuuQcvvPACLBYLnn76aWzZsgUA8OMf/xhf//rXAQAPPPAA7rjjjpLOc9WSLkGpkW4ikeB6q/l8PnRJNLLkf0cJufNJOhAIYHJyEiaTSbL9jlLwxycRejAYlCwJVkLqfIJmGAYzMzNwu93YsGGDYIoIqKNeECtvZVkWfr8fs7OzSCQSXNt58mDyo+Jy9zDLRbkq0gpFxfxcsVhUXFVVpXq79EpZ5DMYDAJTIJZlcfToUfT19WF8fBynTp3CM888g8ceewwbNmzAf/zHf0iOVcx34cUXX8TExAQmJiZw+PBhfOELX8Dhw4fh9/uxf/9+HDt2DBRFYevWrdi7d29JxlLvCtJV6nULXDZT8Xg82LBhA/r7+4veYKWQbiqVwvHjx6HT6TA4OJhndr0cEN3txMQElpaWJCN0/vEoVSQ4nU7MzMzk6Xhzty2HZIyvHe3q6uI+JwszkUhE0MNMzrRcrYW0lS4DlpMrdjqdiEQiOH78eNGoWA7UjHTV7HgMvFNoYbFY8KlPfQq/+MUv8KMf/QgdHR1FZ6PFfBeee+453H777aAoCjt37kQwGITb7cahQ4ewe/dubva4e/duvPTSS7jtttsUH/+qJd1S0guklNbtdqOqqgrbt2+X/TZXkl6IRCKYmJhAIpHApk2bVHe0J9FnOBzmtMnFzkNueoFEmEtLSzCbzUWNgcpZkSYGqYoqsWk5f9GOYRhVqqIqpQw4NyomnRk2btzIvZRIixzyUuKXPRczv1GTdMup0QUuqxdIxLnc/ZBiJIL29na4XC7Jz0vBqiVdAjnphUwmg5mZGSwuLmLDhg246qqrMDU1peiGl0PuxIMhnU6jr68PyWRSVcLNLZywWq2CG6EQ5JAuyTlXV1ejvr5eUI0jBT7B8uv+V1KnW6iwgUzL0+k0Tp48CUDoSWuz2RTpRtUmXbWr23Kn4mQ/xPyGkHEikRAsUBEyJmSmZnqhHL4LfNKNx+OyVDmVglVLunIi3VzfAlJKm0qlSpKZSaUx+GXBhWwQi4FM63NvdqLldTgcaGlp4Qon3G637LELkW44HMalS5dgMBiwadMm6PV6nDt3TvYxV2pFGn/RbmFhAdu3b8/zpJ2dnUUmk8kzfJHq1FCJLdOLjSVlfsNfoOJHxdXV1Ugmk/B6vYotIcVQTltHcp+pdR3b2towNzfH/bfT6URbWxva2tpw6NAhwefXXXddSftYtaQLXL6ZxCJdPtmK+RaUsvgmll7gF0/09fUVLAuWuw/+w0Mc8qemptDQ0FCwu0Ux6HS6vBdNPB7ntLYDAwNcdJROp0tSOhBCqhTSFYOUJ61YpwZimMMnY0C9hbQrTeBSUXEymcTJkye5fmUkKs69FnKJtNzpBUC932Tv3r14/PHHceutt+Lw4cOoq6tDa2srbrjhBnz1q19FIBAAABw8eBCPPPJISftY1aQLCAmUpmnMzs7C7Xajvb1dcvFHqTwLEEbUfIkZKZ6Q+tGVPFj8hntkqm+1WmVVkRUDP9JNpVKYmppCKBRCf39/ngu+EtKUSi+ogZUkb7G2MLk2iHa7Hel0GizLwm63cwqKUk1wVirSVQJSWWY0GtHd3c19LibbyvVbkIqKy0m6SlMXxXwX9uzZgxdeeAF9fX2wWCx46qmnAACNjY148MEHsX37dgDAQw89JJBkKsGqJ11CJg6HA/Pz89zCktoaQ4PBgHQ6jUuXLsHr9RaVmAHirWwKQafTIRgMYnZ2FkajUTV5GRmbpmmB2kHqZaFE00tUFEtLS1haWuKiwZX20y0HxBbtAoEA3G43bDabpJZWrkfvlY50laBQVExmCHyjdD4Rk0pEtbCcEuBivgsUReH73/++6N/27duHffv2yT9QCaxq0s1ms5iZmeGqmspBtsDlH9nlcmFpaQmDg4Oy1ALAO9GxnJQAqcJJp9MYGhqSfSPJeXCz2SyWlpawuLiIvr6+osevJMIMhUKIxWJYWlpCU1MT4vE4AoEAQqEQwuGwoNLMZrMpdvivxDSF0WhEc3NzXn6UqCfE+rmRa8CvtFOz466apKtkliPmt5AbFfv9fjAMg3A4XDQqloNye+mWG6uadImvgNVqFUyF5KIYYfENvltbW1FXV4f29nbZ48uRmcXjcUxOTiKZTKK2thY9PT2yCbdYJM1fgKutrcW6detk1ajLId1YLIZLly6BZVlUV1djZGQE6XQaTU1NqK+vh8vlwsDAgKDSbHp6GjRNC6akNptNcnq+msqAxbS0pKyV9MwjjSSNRiNsNhtSqRTXAWS5hFlJqYrcqNjpdIKiKDQ2NhaNiuXkisvppbsSWNWkOzQ0BIZh4PF4FOeNSBQq1R+K331i586dAACPx6Po+AqRLj+vShbhSOdguZBqwcP3d6ivr8f27dsRi8Vkqx0KkR057nA4jIGBATQ2NuIPf/hD3nZEgypWaZZKpRCJRLhV81xNLZmeVyKUpotIWSsf6XQakUgEc3Nz8Pl8WFpaAoC8Sjsls4JKIt1ckMhUTlQsJ1eskW4FwGg0Kk6oi5Euv5tCrqcty7KK85RipJvJZOBwOOD1evMW4ZRUjfHH50cGwWAQly5dQnV1tWABLpFILCvPStM0pqen4fF4ii4eFoqUKeqd9uL8h0/MCCebzXIdQUohonJAjTysyWRCU1MTN91ubm6W7F0mZ6EKuHzvqpU3LUcnYKnxSskVh8Nh1NfXw2g0aumFlQZfq5vJZBR1guCrEXJ1sFLdFJSCvw++smLDhg2iedVSWvAQIiXOYizLYmhoKK/kWGmnCQJ+QQZRhBSLgkpRHYgZ4cTjcVy8eBEGgyGPiPgRoZotdFYSfAKXqrQTIx8xs3Q188MrSbpiKJYrJt68999/P44cOcKd/9jYGPbu3SvJAy+99BLuueceMAyDO++8E/fdd5/g73/5l3+Jl19+GcDle8/j8SAYDAK4/PuMjo4CuGwr+/zzzyu6BnysatIlKNX0JpPJYGFhgfO0XY4OVgykCeLMzIyAtKRuwFKczEhhRiwWw8DAgKQBh1LSJX6/U1NTaG5uLtrJgg+1pF6kwqq1tRWtra3ccREiyi355S/YSRU3LBcrqTgoRD65ZunJZBJmsxnxeFxQaXelpWzkeNWIwklUbDAYsHHjRjz55JN47LHHUF1djYGBAZw+fRqf+MQnRL/LMAy+9KUv4be//S3a29uxfft27N27F8PDw9w23/nOd7j//73vfY+rYAQAs9mMU6dOLfscgHcJ6So1oyF5xXPnzqGpqYnztFUTLMty3WYJ2Ra78ZSQLskLnj9/Hhs3bhR1FuNDCekGAgHE43EsLS2VdG3KWQYsRUSZTIbLE8/OziIWiwmKG2iaVuXhr4QyYLFFO2IZqtfrBU0k+R0a5L6MrnSkWwx8z4pIJIJNmzZh79692Lt3r+R3jhw5gr6+PvT09AAAbr31Vjz33HMC0uXjmWeewf79+1U7Zj5WNemSG1ZupMuyLHw+H6amppDNZtHR0SFwsJKzv2JRAMuy8Hg8mJqagsFgQFdXl+x9EGeyQuBbLZpMJvT39wuiWyaThj4UBnIKHuSQbq4iYdOmTbKOOxdXoiLNaDTmmWLz86Q0TeP06dMCRzISGStpI1Sp2loiT6uvrxd40fI7NMzMzCAejwOAoLosV8pXjmKGcnnzhsNhWQtpYoY1hw8fFt12ZmYGDocDH/rQh7jPkskktm3bBoPBgPvuuw+f/OQnSz7mVU26BHIi3UAggImJCY5M/H5/yVVpUikIohiw2WzYsmULvF6vYjtIKWIUa5k+MTHBbb8YW8Qjrz2C09Ov47W/OA20tyO7eTPY8XGwmzdDPzKCbAElxeTkJKLRKGd+LqZIkItKKQPm50mdTie2bt0qcCQTiwgJEa+E98JKELhUhwbyMvJ6vZyUr6qqiuvKQDpHq3F8ansv8FGOhbQDBw7glltuEbwoZmZm0NbWBrvdjg996EMYHR1Fb29vSeOvatLlR7qkQCIXpE+YXq8XLDCFw2HFPrxSpBsMBjExMQGTyYTR0VFOIqS0DbvYQhq/l9qaNWsEi3w6nQ7hZBj/5//9H3z3yHeRpJPY138rIg/fBOvp86BOn4buP/8TFMvCCGBnbS3027ZxZJwZHYXDYIDnbSXF8PCwKg/ZSruMKR1TzJGMRIREU8z3XrDZbJyMrZIjXblj6XQ67pz4uXLiP+F2uxGPx3H06FHOc4G8jErx512OhWUucr155XYCljKyEcOBAwfyqtLItj09Pbjuuutw8uTJ9ybpEhDJGB/E05ZlWQwMDOQVHJTS5ic350r2AUDUpLyUhTH+9j6fDxMTE1zkzM+tppk0DjgO4IcXfghf0oebNt6E/R/Yj/7GfgAAd2axGKizZ0GdOoWlgwexzu2G/vHHQaXTMAIYslgwODYGbN58mYw3bwb7dp6rVIKplEiXj2LnIRYR8g3TiQtXMpmE0WgEwzCiVWZKUEkEzpfypVIpNDY2oq2tjVMMkEXL3A7HpaRoloPcVIVc0t2+fTsmJibgcDjQ1taGAwcO4Gc/+1nedhcvXkQgEMCuXbu4zwKBACwWC6qqquD1evHaa6/hK1/5Ssnn8K4gXX5332g0isnJSWQyGfT390tOPUohXfIdfhVZbk6Vj1JJl2+1yI+cASDLZvHLi7/E/37lf8MetGPH2h149lPP4ur1V4sParWC3bkT7M6duDg6CrqvD/aLF9EeiaDD64X+7FnoTp4E9W//Bv0//RMAgDUasW3DBhiuuQbsVVddTlGMjQE5zlwExABmfn4eZrMZFosF6XQayWRy2Q/jlSRvMRkXSUeYzWYEg0GuyoxYQ/LTE3LKsyuFdPlgGIabzRXy541EIoIUDV9BQqJitRUkudr6aDSa5xgnBoPBgMcffxw33HADGIbBvn37MDIygoceegjbtm3jFuEOHDiAW2+9VfC7XLhwAZ/73Oe4dZH77rtPcgFODlY16fLTC8lkEmfPnpXtaVsK6RJyyWQy3D4KPTRKSTeTycDr9SKRSAisFgn+e/q/8cChB3Bi4QQ2NW/Cjz7wI3yw/YPoWF/cyJyvSLhqxw4uambe/odsFpTdDurUKVCnTiHzyiuoeeEFUP/6r5fPnaLA9vVdjoQ3b0Z2fBzZ8XHMp9OIxWLQ6XTYsmULaJpGOBzG4uIi3nrrLS5fmivnkkM2laq9raqqwtq1awULVmRqHolEBP3c+ERcU1MjiNLUnnav1Fj8FI3Uoh2/03MikcDs7Kyg03Op4Ee6Sr109+zZgz179gg++9rXvib477/927/N+94111yDs2fPlnC04ljVpAtcXlWcmppCMBjE+Pi4bE9bJaRLGlh6PB60trYWdRdTug9SWhsMBlFdXc3ZxxGcWjiFB155AL9z/A4dtR148mNP4tbhW+GedxcldX7RREFFgk53mVT7+oBbbsH5o0cxPjYGk9cL3dtETJ0+Dd3hw6B+8Qvua+3r1sHW04O6D3wA6ZER6EZHYWtp4ZpwUhQFmqY5OZfX60U8Hi/JlasSIEWUYtaQUlNzYgKUSqWQyWRUkSuqHemW8luIpWhomsbx48dhNBq5Ts/pdDqv0k7ui1isdL9SX85SWPWkOzk5iebmZkQiEYFusxjkECLfDH3Dhg3o7u6GwWBQ7I9baHyHw8FZLfb29grepmcdVQAAIABJREFUqPagHft/vx8/P/9zNFY34psf+ibu2nIXqg2XH1KdTicpleMrEkjRhBJFgk6nAwsAbW3ItrUBf/zHAC6T+NSRI7BNTWGD3w/TuXOoOXIExm98A6a3I490bS12jIxAv20b6NFRsGNjqO3thc1mQ3t7O0fEpIMDceViWVawaFNdXZ2fXshmoT98GMyOHcAV6FarJA8rNjXnm+Ck02lMTEwIlAPk3JU6cFUC6Yohm83CZDJxC3aAcNGOlD3zZwaFzG/4ka7aDS9XCquedMfGxpDNZmG32xV9rxDpZrNZzM7Owul0or29nes84XQ6S27DLjY+0Q6S0lqapi9708aX8I3XvoEfnfwRDDoDvrLrK/irHX+Fuuq6vPFzJWZ8Il+OIoFokgkEJH7VVaj9wAcuV4e9TUKzMzPw/O53aJiZQd3UFKrPn4f5n/4J1W+/FLIWC5iRETDj46DHxoDRUVgHB2Fduxbr1q3jFt8IIS0tLSEcDiMWi+Hs2bMcGTWePg3bjTci29mJzKc+hcxtt4Ht71d8fqViuYtffBOc+fl5jI2NQa/Xc8UuUuW+xWYDai/KqVlSLNblgSza8Q30GYYRlDyLdXom1wW4vJCtZoftlcKqJ91SIWUaMj8/j5mZGaxbty6vikypBCyXdFmWxfz8PKanp/MMdQAgwSTwlP0p/Ptr/45EJoHPjn8W97/vfqy3rRcdny8xIx4Js7Oz6OzslO35KwXSXYNhGExPT2NxcZEzPs9ms1yUEYvFOLlc72c+I+hwkUilkDp1CvTRo6BOnYLp3DlYf/pTVD/xxOXrYTSC3rgR2bEx0GNjYMbGUD0ygurmZrS0tIBhGJw9exa9vb3cos28xYK6v/kbtP3ud6j/9rdR9a1vIXPVVaA//Wkwt9wCtsT+dHKh5sIeiU4p6p1283wS4pf78mcDfI9ifo5ULdJlGOaKRM16vV5y0Y6fL6dpGs8++yxOnjyJdDqNEydOYHh4uGCappjvwtNPP417772Xk4bdfffduPPOOwEAP/7xj/H1r38dAPDAAw/gjjvuUHQNcrHqSZd/o5X6tudrYZuamiQ9GJQuvhHi4lstivU6yzAZPHX6Kfzda3+HxdgiPjnwSez/wH5sbNpYdHyGYQQeCcXKjZVcI7fbjYWFBbS1tWHHjh0ALj9EFEUhnU7DbrcjHo+jv79ftCqIqqpC9Y4dwNvfBYAUwyBy4QIyR44AJ07AeO4crC+8AOvb8h2WosB0d4MeH4evowMt3d0wtbejsanp8sJlVxdw9dWgv/xlzE1OwvCLX6Du+edhvfdeZO+7D+FrrkH8lluAj30M1qYm1VfPV7I4Qsqjl+9RPDMzg0wmg0QiAbvdXtSjWA7UTC8st/RaTFdts9kwODgIq9WKn//85/je976Hc+fO4bHHHhNIvQjk+C4AwJ/8yZ/g8ccfF3zm9/uxf/9+HDt2DBRFYevWrdi7d68smZoUVj3pEojZHBYDv/FjbW1tUZ8BpWoE4PJNd/ToUZjN5rxeZyzL4j/e+g889MpDmApM4X3t78OD/Q/izo/cKWvseDyOhYUFZLNZWR4JctsH+Xw++Hw+6HQ6bN++XZDGIKkRYvFYzPMh7xj0elRt2oSqTZuAt1uf0CyLxMwM0m+8AfbECVCnTsH62mto83jQBgB/+Zeg169H9u1omB4dBTs6ipr+fuD++5F58EFEzp2D/plnUPOLX6D+nntA338/Fj/wASxefz3oHTuQTqcRCoXyFASlQM08otKxpDyKjxw5ApvNlpee4KtG5Eq41CTdcvg4GAwGNDQ0YGBgANu3b8f3vve9gt9R6rvAx29+8xvs3r2bWxzcvXs3XnrpJdx2220ln8O7hnSJ/4Jc0g0EAkgkElxejbT/KAQlkW40GsWlS5eQTqdx1VVX5eWeDs0cwgOHHsAx9zGMNI/g2VuexUd6P4LXX39d9tg0TaOurg4jIyOyjknK9JwgEong0qVL0Ov1aGpq4ha9COEuLCxw5ZBXX321elEkRcHY1YVoXR0menpQf+ed6O7uRiQQQOrwYWSPH4fuzBmYz5+H5Te/AfX2FJ9paAAzNnY5PTE6ivT//J9IPvggDK++iqr/+3+x/te/Rtt//ifozk5Mv+998N98MyYaGwUKAn6BgxyoHemqAYqioNPp8loIiXkUA+/4LpBzz1UDVOqiHADBMy63BFiu78Ivf/lL/P73v8fAwAC+853voKOjQ/S7LpdrWeew6kmX76krhxD5VWQ1NTUYHByU7cMrZx+JRAKTk5OIx+MYGBhAMpkUEO6ZxTN44JUHcNB+EO217fjnP/5nfHrk09Drit+YuYoEo9GIqakpWccOSJvepFIpTExMcPaQtbW1mJmZwfnz57kV5EAggMbGRmzbtk11I/FEIsH5SIyMjLxTDNLSAsvHPw58/OPcttFwGKmjR8EcOwbdmTOoPncO1j/8QXTBLva3fwvK74fxD39A74EDoJ55BvT27Uh/6lMIf/SjiJhMom2ECBmLFXaoSbrlhphHMd93Qcws3WazgaZp1c5RLVtHAv5sVq7ZjRx8/OMfx2233Yaqqir88Ic/xB133IH//u//VmXsXKx60iUo5jQWj8cxMTGBdDrNVaqdOnWKk+vIQaH0Aslx+v1+9PX1cdNuEinOhmex///tx4FzB1BfXY9vfPAb+PzWz3PyLz5yH2wpRUIikSjZ9JyMy+8GMTw8zC2SdXZ2oqmpCRcuXEA2m0VtbS2i0SiOHz8Os9mM2tpa2Gw21NbWlix2J+fl9/s5o51i0NfWwvLhDwMf/jD3WTyZRPr0adBHjwInT6KKLNi97a2RNRiQ7OmB0WaDbm4OlnvvhfmrX0Xj//gfSN96K+gbbgCqqgT+C/Pz86KFHWrKlK5ExCzlu8D3KE6lUjh27JgqFWZqm93wI91gMChLJirHd4Gvr77zzju5Mt+2tjYcOnRI8N3rrrtuGWfwLiDdYpEuKZ6IRCJcLzICpQtjYtvTNI237G8huBREl0hb9ggTwb2/uxf/fPqfoaN0+Kudf4W/3vnXqK8WnxaRxTdC1qRrA19axt9WiTE52Z5lWbhcLszMzKC9vT1vkSyTycBut3OuY/wpHMuy3EJOIBAQiN35RFyo/JeoOGZnZ9HR0YGrr75aPgEFgzD88pdgDQbAaARMJuiNRhiNRrAbNwKbNgFGI4LJJOZPnULNwgJq3W4Yp6agt9thCIcvj5PJwHjwIEwvvgi2uhqZ978fun37YNi9Gw0NDdwLM7ewIxAIwOfzwev1Vkxhhxq+C3yPYp/Ph+3bt3PpCdLPjaQn+Dpam81WkFSVBDVykBvp9vX1Ff2OHN8Ft9vNvYSef/55DA0NAQBuuOEGfPWrX0UgEAAAHDx4EI888siyzmHVky5BbqTLjzx7e3tF9aqlqhGAyzf65Mwk/vy//hyMgcELn3kBJuM7EV8sHcP3jn0P33z9m0hmk7hj7A488EcPoM0m7mxEoNfrQdM0/H4/7HZ7wa4NShf2dDodfD4fnE4n1ykjd5Fsbm4Oi4uL6OrqwuDgYN41I85bVqsV69atA/BOpBSJRBAOh+FyuTjfBRJV1dbWwmw2IxAIcCqOUlIVlNsN01/8RdHtqgGsKfB3CgDevnZUMgnTb38L029/i8iddyLz6KPc70xRFOe/oNPpYLfbUVdXB5PJVLCwoxgZqQm1Oz0QiKUnGIbhXrpLS0uw2+0FPYrLYetI7km5ZjdyfBf+8R//Ec8//zwMBgMaGxvx9NNPAwAaGxvx4IMPclWiDz30kKwZWcHjWda3KwiEdMmUmRBHoZLdUtr8sCyLhYUFvHH+Dey/tB8Xgxfx8AcfhtFwmTwyTAZPn3kaf/fq32EhtoAPtHwAj+x+BFs6tsgan2EYHD9+XJaaQkmkG4lE4Pf7kclkMD4+jqqqKi6VAACLi4uYnp5Ga2ur4kUyfqTEt0skXX/D4TDm5+cRCoVAURSam5tRU1ODVCoFvV6vaF9sfz/ik5OgMhmA/EunwabTWJybg39xEeubm9FgtYKiae7vyGQAmgZF/j/vHxsIgHE4oL9wAdPXXQfv6dMA3unOS14y4XAYfr8fzc3NsFqtsFgsWLduHfc78As7+GTEJ2J+1KfWQlq5SFcMRBHBX6co5FGcyWSg0+lgMplUb6GkxEu3mO/CI488IhnB7tu3D/veVtqogVVPuoRQdTodvF4vnE4nOjo6uCqyQiBRpVwQn9WXJ1/G/3rzfyHJJPHs/3dZdcCyLJ69+Cwe+v1DmPBPYFf7Ljxz4zOwBW3orOssOjZRJCQSCWzatElWrkqOhWIymeQW9urq6tDV1QWTycTlJoPBIGe8vnXrVlV7xFVVVUGn08Hv94OmaYyPj8Nms3FE7PV6ObMcEg0TgpL87QwGoLUV/LMmGuiW8XEMbNhwOXov4XgZAL1v/yPVUcTW0efzgWEY1NfXIxwOg2EYTrZFZhukyqqlpYW7L8mLJxQKwel0co5kZMEqHo8rLvnNhdpmN0pRyKP43LlzXLeTXI9iqVJfKeTe63Ij3UrDqiddkvecmppCVVWVrF5kBHIjXb7V4u/Dv8djpx5DR20HDt58EINrBvH72d/j/pfvx1H3UQytGcIvb/4l9vTtAUVRuBC5UJDYcxUJTqdTdg6s0IPKXyTr7e1Fc3Mzpqam8NZbb6G+vh7V1dVYWlqCTqfD8PCwwD5SDZDqvrm5OXR2dqK/v587XjFTlGg0inA4jLm5OUSjUQCXc4eEiG02W17elLQXMhgM2Lx5s6p97khEFwqFEIlEMDg4iDVr1nDRbCAQwOzsLDKZjKBM1Wq1ci814J0pOt+Rjjixud1uTE1NIZFIwGAwCKbnShat1CZdtfLTJpMJer0e7e3tnD6d71HML/W1WCyCPLGYR3HueaqpXlhJrHrSJdVRo6OjcLlcivJHBoOhYPcIonjIZDLo6e3BoycexWMTj+GDGz6In37yp3BFXPjkLz6Jl6ZeQputDT/c80P86aY/Fci/pPKuUooEt7u4c1ghFFok6+rqQktLCyYnJ7GwsACz2Yx0Oo0LFy4IFsHkOj5JwefzYXJykqvuK/abiFVe8SPN+fl5zqGLEFIkEkEikcDGjRtVb9cCXNZxX7p0CU1NTbj66qs5IiLEkLvyHw6HBd2JSTRLjreqqkpgRUjynuR3558vWbTK7VwhVdhRybra3JyuVKt5vj8vf0bAJ2K9Xi8YKxKJaKR7JaDT6dDb24t4PF5SG3axKJRYLYbDYfT390Nv1eP252/HQftB3NJxC+7/0P2497/uxc/e/Bnqqurw8Acfxhe2fAFmozlvrFzSLaZIKNQnrRiWlpYwOTkpukjGsiycTifm5+fR1dWF8fFxjliJ2Uo4HOYcn8jDQYjYarUWJWISeer1eoyNjQmq75RCrA6f+EDMzc1xkeDFixe5QgdyvMtJkSSTSc75a3R0tGjRDD+fneuvG4lEuBwv38CGNEjdsGED148MAEfQer2eI2JCRqRzBYkK+UR8pdr+yIEcEpfy5+U7kXm9XkSjUWQyGbz66qs4fPgwKIpCMpmUZWJezHvh29/+Np544gkYDAY0NzfjX/7lX7BhwwYAl+/F0dFRAEBnZyeef/55pZdBgFVPugRiLXuKIZd0c6PPoaEhTAYmcfO/3gxH0IFvfvibODl1Ejt+vAMUReHLO76Mv97112iols4rEdLl+zuoqUgALr/x33rrLRiNRtFFMiKCX7t2rSBqIzCZTGh629uAgLQ0D4fDnMcCfxGFEDGxl7Tb7QiFQhgYGChL5BkMBnHp0iXU19dj165dnOqBSNjC4TBX6JBOp7kFLELExTpYkPLmhYUFLh2zHIgZ2ITDYVy8eBEsy6K2thZutxtut1uQmiB92MhvZzabUV1djbVr13ILdoTQyfkmk0kAgN1uF9hiljJbKWe7dKXI9SgOhUKYn5/nLD/9fj+uv/56JJNJfPnLX8af/umfio4jx3vhqquuwrFjx2CxWPCDH/wAX/nKV/Dzn/8cwOXf4P9v77vDoyrT9u+TyaRMeu+kTxISSgqI/lYXcC14LQiuBdkPrCvrygcuiqKoC6zC2nb3U1hERVFZCV6yK6wColIWKQkJQUp6QtokpM1kMiXTz++P+L6cmUzPGUqY+7pyQaZk3jMz5znP+zz3fT+nT5926xisYUwEXYZhXG6KAZeCri2rxe8ufIeFXy2EwEeAhRMW4tUfX4VSq8T83PlYM3MNUkJTwLIsmmRNyIywPqTO19cXg4OD6OjoQHBwMIqLi+3WbF0JuhqNBkNDQ6ipqYFYLEZISAg9YRmGweDgIBoaGiASiVBYWOgSX9LaSHPCWR0cHERrayvNPAwGA2JiYpCTk8O71R438zRTq/0MLoXN2pafbFe5FDYSiEkDi8yii4uLozsEPkEy9L6+PuptzL2P66DV3NwMk8lEpbrkX/JY4NJFkhj29/f3QyaT0SYlV9jBVdg5UzbiO+jyCTIUNj09HcuXL8euXbtw7NgxGAwGu2VCZ7wXZsyYQf8/bdo0bNu2zWPHMSaCLuCeukcgEECpVOL48eNmVossy2LDyQ147sBzSAhOgM6ow0c/fYRfZ/0aD6c8jHHx4/DDhR9woPUADrceRv9QP7qWdSHE3zzgKJVKtLW1wWQyYfLkyU5tg6xNBLYENyMXCoUoKhqmo5FgS2S9RqMRubm5Tr2uMyBGIxEREejr60NTUxPi4+MRFRUFpVKJjo4O2gTjZsTumMwYjUa0tbWhu7vb5czT3pafW3tVq9XQ6XQQCoVISUlBZGQk79QrwqxISEjAlClTRvx9a2UUrpOYtYYdCaB+fn4wGAzo7+9HQEAAwsLC7Ao7iFG4pQkO97O52oMu2R0qlUp6gSfKOVtw1nuBYMuWLZg1axb9XaPRoKSkBL6+vli5ciXmzp07quMYM0HXFRB3scbGRuh0OvziF7+gdUCtQYtl+5dh65mtCBYGQ6KQoDi+GE8WP4lORSeWly9Hm6oNABAXFIcZaTMwI3UGfJhLJxOhaalUKsTHx5vRixzBXqZL6rJEyXXDDTegsrISzc3NdLsvkUioFNnRnDh3QMb/+Pr6YtKkSZQxYDlFl7ARJBIJFAoFANATnWSa1k5u8tk0NzcjPj6eV2Mdf39/xMTEIDIyEi0tLdBqtRg/fjwEAgEUCoXDMoorGBoaQn19PRiGcZlZwXUS42bvpL5LslmVSgWdToeQkBBERERQZSApTVgKO4jK0ZpHL2nYjaaJawm+h4pyg65cLh8x4ZsPbNu2DRUVFTh8+DC9jZg8NTc3Y+bMmZgwYYLb49eBMRJ0XfHUlclkaGhoQGBgIAoLC1FVVUUDbo+qB7NKZ+F873kAgK+PL9LD03Hq4ilUXqxEiF8ISqJL8ND4hzBv4jzkRefZ9EjIzMxEfn4+pFIpent7nT4WgUAwoiHI9eMljADSJBs/fjykUina2togl8vh6+uL0NBQDA4O0tohH9xbovBTKBR2pyyTY7CWvZFA3NXVhfr6espGIMGNYRg0NTUhICDA5XKIM+BaeSYmJpplnpazzUhwI2UUhmGcyt5NJhNaW1vR3d2N7Oxs3i583GZTREQE6uvrERwcjPT0dFp/b2lpGTFxgoz+4daJibAjISGBBmIS0AkXXSqV2hV2OAO+m3LEmAcYDrrOMhec8V4AgO+//x6vvfYaDh8+bHas5LEZGRmYPn06qqqqvEGXgNRorUlLifgAAPLy8kZsR76u/xrzv5oPg+lSXVilV6EgtgALJyzEjNQZKEkoQZekCwzDICXm0nbFHiPBVamxZaY7ODiIuro6+Pv7W22SEYpRTEwMJk2aBIFAQLemUqkULS0t0Ov1Zh1+VwIxOTaJROJQ4WcPPj4+I6hCxPFKJpOhtrYWQ0ND8Pf3h1AoRFdXF82I+XA1U6lUqKurg5+fH4qKiuwGEG4ZhcAye+dS2Mg6DQYDmpqaaMPSEwbqEokE7e3tyMzMNBMicBt2JAgrFAq6VoZhzEoKIpHILBATYQf5biUlJdkVdjgzy43vUgU30x0YGHC6YeuM90JVVRUWL16Mffv2mb2vMpkMIpEI/v7+6Ovrw9GjR6kZjrsYE0GXO4pdr9ebnaTEanFoaAjZ2dk2FSxp4WkwmAyIDozGA+MfwB2Zd+D/Jf8/BPmZN264I3u4jITY2FirjAR3/BGMRiNtIGk0GojFYko1InVbYlEZEBAwYvtqzRthaGiIyliJSY29QEyy66amJsTGxlplPfCBgYEBGtDJegl5npQZDAYDdTZzlRZGdh8ymWxUzApb2btKpUJ/fz/Onz9PGz0KhQJtbW00OPGx01AoFKitrUVYWJhD7rO1Jii3Ydfd3U0vGtyGnU6nQ2dnJzIzM2EymejfsRR2kIBOzNJtCTv4tnW0LC84+1k6472wYsUKKJVK3HfffQAuUcNqamqwePFiyhxZuXKlU+bn9sA4qLvwW5TxEIxGIwwGA86dO4dx48YhNDSUbodlMhltxFi7Ih87dgw33ngjGIaBVC1FpMi+mUVPTw/kcjmioqLQ0NCA4OBgZGVl2cycCLuANLscoa+vj2bkxBWNOIORJlljYyO0Wi1lLLgDbiAmjARCtQoICMDAwAACAwORk5PDq9KLQCqVoqGhAVFRUUhLS3M4YojQwshaudk719mM+5zu7m5cuHABKSkpSEpK4t0HlxgEdXV10c+KZVl60eCu1dIO09mtusFgoHS83NxcXtkhpGEnlUrR3t4OvV5PPRK4WbFQKDSrzxIaGGnYcQO6Uqmkwg4/Pz9qpcrHxI7z588jLS0NQUFB+PzzzyGXy0eddXoQNr9sYyLTJfD19YVGo0Fvby8uXrzo1HaYW5JwFHAB0GxAqVQiPz/fYYPM2UzXZDJBIpHgwoUL8PPzo65G5LlEv97X14fMzExKF3IX3BohyTC1Wi3q6+shlUoRGhoKrVaLqqoqtwOGNZAGEwCnxAdkrdZoYaQOOTAwgLa2NtpI8vf3h1wuR0hIiMNSgrsgirXo6GgzmhnZxttqgg0MDKC9vR1arRb+/v5m76slt7anpwdNTU1ISUkxk1HzBYZhKPdVLBYjJiZmRMOOmNeQEfEkk+U27IBLSj0SjFmWRVdXF3p6euwKO1zZBbib6V5tGBNBlzQDyMywtLQ0pwxvAPt1YC4II4HM2SosLHRqbY5qumQb39DQgOjoaEycOBENDQ2UZ0m+vO3t7UhOTvZIrZDwlLu6upCeno6CggJ6gtsKblzxgTOB2Gg04sKFC+jv7+eFWWFNxaTT6VBfXw+ZTIbw8HBotVqcOnWKBjcS4EYztJG8hl6vd+miYblWlmXNXNi6urowNDQEPz8/BAYGYnBwEAEBAR67aKhUKtTW1iI4OJjSoWytFTCn21kq7EhGbNmwI83HjIwMeo5yhR1kqCZ3aoU9YQc36A4ODiItLY339+VyYEwEXbVajZMnT0IoFCI9PZ3K95yBo6BoyUhITU11aUSOPScwbpOssLCQ8i6DgoJw5swZaLVa6PV6hISEICsrC+Hh4bwGXC49y5ZazVbAIOIDyyyTBDcSiIkVZktLC5KSkqxyVfk4DmKKnpqaivz8fLOLBje4Ea9fPz8/s0DsyOmL0PU6OjrslqucBcMwtHlFOMgmkwnNzc24ePEiIiMjYTAYUFVVRSlsZK3uUNgITCYTFWrk5OQ4zQAgdDvLGWzWGnZBQUHQarXQ6XTIyckxC8SWwg4AZhM7iHeFNWEHlw3hzXSvMAIDA1FcXIz+/n7a5HIWtoIuqdcRq0jCSNBoNC41xqydmBqNBvX19bQuy22SCQQCJCYmQqVSITQ0lHaRieTTaDQiKCjILGC406wgQyjdoWdZEx9YBuL29nao1WpK80lNTfWI+EAul6O+vh6hoaFWTdGtBTfA3Ov34sWLUKvVEAqFVo1/5HI56urqEBER4dGGYl1dHWJiYnDTTTeZvU/c4EYobITLy7XDdLQu8hpxcXEoKSkZ9WdhrWHX19eHuro6eiFrbGw0a9iR8oSvry8NxMTwyFLYQQJxX18fhoaGqLfHwYMH0dPT47S3hyPfBa1Wi0WLFqGyshJRUVHYsWMHzaLXr1+PLVu2QCAQ4J133sEdd9wxqvcMGCNB18fHB/7+/vD19aUjRZyFpWeDI0aCqxQwLkhTpK+vj3I4CUWHjMlpamqCWq1Gdna2WRaSmJhI16dSqTA4OIju7m40NjZS8QU3G7IViImZD2Fz8EUw5wbiiIgIerKlpaXBaDRS0xatVjtitI87jTqdTkdZKXl5eS6r7qx5I1ga/xDxAcMwSElJQUxMDO8XDb1eT1kqtsoVttgIJBBzlYDc7JB8D7ivMVojImeOo6ioyOw1CMuD0BhJWYHLAyaBmDuxg8vfZhgGFRUViIuLo14j//u//wtfX1/Mnj0bf/rTn6yuyxnfhS1bttDvbGlpKZ5//nns2LED1dXVKC0txfnz59HZ2Ylf/epX1NBpNBgTQdeSMuYKyJcSuNRRt+eR4I4hDcuyaGtro96yXLtF4FJNlQyItLd15TZqSCAmX2qStZHJuiQTIlmbRCJBd3c30tPTzYy2+QLZHXR2dlLDIPIalhkxCW4dHR1WA7EtgxruNj8jI4PX4yBb38jISKrWysrKQkBAABQKBS5cuACVSsWLYo1bdklPT0dcXJxLxyEQCEbYYRIBCrnAkd6AwWBAdHQ0UlNTPTJCiKg7Ce3P8ji4wzAJXG3YyWQy+Pj4ICgoCE8//TS+++477N69G2FhYXbFR874LuzatQurV68GANx7771YsmQJWJbFrl27MH/+fPj7+yM9PR1ZWVkoLy/HjTfeOKr3a0wEXQJ3ncZUKhVOnToFhmEcMhJcOTFIzVSlUkGj0dAmGLfre/HiRSozdLdJxv1SE/UMCcRyuRxNTU0YGBigGZNOp6Pdfb62ynR6gwNOr7XSt+YPAAAgAElEQVTRPqTuOjg4OCIQc5t1arWaWld6aptP6uyWfFhrijWu8Q/3MyCKNVufJWliiUQiXkfacwUokZGR9DWSkpKg0WjQ19eHCxcujBDLuKM2A4Z3BrW1tQDg8tQRZxt2xB+DzPfTarU4ePAg2tvb4e/vDz8/P6vqMgJnfBe4j/H19UVYWBj6+/shkUgwbdo0s+dKJBKnj9EWxkzQZRjGLGt1BhqNhnaNJ06cyOvoD1JrJIGD1IhIKYEMaAwPD+f1xCMgQzQvXrwIkUiEgoICCIVCqqrq7Ow080QgJ6urfEo+pjdw667WAjFRrBkMBloO6e/vdzh12BWQ0o5SqXRYrrClWCOBmDv9wnIwZ3t7O/r7+11qYrkClmXpbkMsFpuVJKxR2IihjuVFzh7LgzBqWltbkZWVNWobTC64DTvC6snMzERgYCDee+89fP311+jr60NycjKeffZZbNq06ao16LGFMRN0AefLC1xGQkxMDHVn4gNDQ0N0W0fEC2fPnsVPP/2EsLAw+Pv7o7u7G0KhEAUFBU5RjlwFEVBoNJoRdouWUlyuvNXSJYwbiC2zNlKfHhgYsKv0cxeEXK9WqyGTyZCXl4fo6GizjJg7ddhdShg3gKSmprotc7a23ee+t01NTZDJZHS3IZfLwbIsr7sNolqLiIiwa1Fpj8JGskxLlge5eDAMg7q6OgQEBHgkWQCGL4B1dXUwGo1UVPTGG2/g0KFD+OyzzzBx4kSo1WrU1NQ4fO+c8V0gj0lOTobBYKDiJ2c9G1zFmFCkAcMflNFoxPHjx3HTTTdZfYwlIyE5ORlyuRxdXV0uSfu4KjYCEoS4PFSiJAMuuXOpVCrqnyASicwoVqP9AhMBhTO1YUd/hwSLwcFBM+1+aGgoNBoNenp6MG7cOI8ovQBQj9vY2Fik/jxs0hosg8Xg4KBZILYlPACGPxPCVc3MzPRIACGCE5PJhJycHDq6naxXoVCMMP5xlZFiNBrR1NQEuVzuVlPR0frJ+9rd3Q21Wg2RSITIyEgzlgdfDUYiCMnIyEBcXByqqqqwbNky3HPPPVixYoXLn5HBYIBYLMYPP/xAKYuff/458vPz6WM2btyIs2fP4r333kNpaSn+9a9/4YsvvsD58+exYMEClJeXo7OzE7feeisaGhqcvUheH4o0Wye/PUaCO2wErqCCa3Yzbtw4TJ06FYB5k6y9vZ2OhCcNE660ldTaDAYDRCIRwsLCXDr5uJLXxMTEUQsobI3K6erqwoULF+g4GVKiIBeN0fBHCbiKtUmTJjnstFsrTQAwa9Z1dnaamZgHBQVhYGAASqUSubm5HrEIJA0/iUQywg/YlvEP8TMgjBTuRdmW8Q+ppSclJXlEtebv7w+9Xo8LFy4gOjoaGRkZMJlM9L0lzUVXatrWoNPpUFdXB5ZlUVxcDJZlsWbNGvz444/YunUrCgoK3Fq/M74Ljz32GBYuXIisrCxERkaitLQUAJCfn4/7778f48ePh6+vLzZu3MjLrmTMZLoGgwFGoxHHjh0zy3SlUinlcWZmZo5oGLjqjQAAp06dQl5eHhQKBRobGxETE4O0tLQRTbLu7m60tLQgISEB48aNc/gl5NLByI8lC8FyO0pqxyRb43OEOgFR4xGyO5newK1jkoyY28xxJQviZul8WiJaHgdR3pH3iSuSsJURuwrSjAsPD0dGRoZbJyrXw4FkxVzjn8DAQHR3dwOAx/wxuEIKRxcn7kRn4sEAOOehTBIikt1WVlbi6aefxn333Ydnn33WI4yLywCbX6IxF3SPHz+OG264AWq1mppIi8VimyPGDQYDKisrKY3LGZw8eRIGgwEhISE00HGljwMDA2hsbKQSyNEEQi4LgQQ2lmURGBiIoaEhMAzjsWzNcnqDM34P3M7+4OCgGcWKmxFzFWPEzSwhIQEpKSm8c2GBS9aOAQEByMrKumRaz6kRkwnD7gZiYu1IRrbzuc0HLgViQi8kCQSf3hgEcrkctbW1tLzjzmfC9VDmllKIYXpgYCC6urogEAiQk5MDk8mE9evX4/jx49i8ebNZCeAaxPUTdMvKyhAQEEAtER01eFiWtVsH5oJsfWUyGbKzs5GQkGDmAEaaaCzLIjs722agHw2MRiOam5vR09ODyMhI+sXmkslHu9W3nN7gTJZuD9whl4ODg3Q6Q2BgIBQKBQIDA5Gbm+uRbI14PkilUqcZA5Y1YstAbCkbZlkWPT09aG5uxrhx45CYmOiROjehmgUFBSErK4uKCQgTgazZFd6zJUh9eHBwEHl5ebx/h0kS0dHRge7ubvj5+WHnzp04e/YsJBIJZs6ciT//+c+Ug34NY+wHXeI/29bWBrFYjJSUFKe/+JYlCUuQabdkDE5/fz+CgoLohFau/R6pC/ENSw+D5ORks0BobavPzTDDwsKcGkxIzN79/f3tWlaOBkajEQ0NDZBKpYiIiIBer4daraazrrilCXeDF/fCQd6v0QRCW4GYmNOQC4cn3i+yze/t7UVubq7DC4elAEWhUDjF8iClOD7eL1vQarWora2Fr68vxGIxDAYDXnvtNfz000+YNWsWent7cerUKXzwwQfXrKHNzxj7QZfYx8nlciQnJ7tkhmEr6HLZDqmpqUhMTATLstTkRaVSUS/fuLg4jBs3blSBwhYGBgbQ0NBAyxnOdnANBoNZfZgENu7WmWRshKeqUCggFos9xiElDb/k5OQRJ7Zerx+xXuKHYLlee1Cr1XQkfXZ2tscCYVNTE7q7u+mFgwRi7oXDmfXaA9cvYbQ7DstATNYbFBREa7D5+fkekQlzk4bs7GxER0ejrKwMzz77LBYsWIBly5Zdq7VbWxj7QddkMlF+H3ExchaWFDCyXSRTE0hNi9sk6+3tpR3dsLAwGvDJyBnLmqA7IFMvCO2Fj62etcBG3rv4+Hikpqby0kyyhFKpRF1dHQIDA81qqo7A9UMg67VVc7U36pxPEC9da/VOnU5nViO2vHA4Owpdr9dTb4nc3FyP8LmBYTVWc3MzwsLCYDKZoNFo6IXZ0vjHXWi1WtTU1MDPzw/Z2dkwGAx49dVXcerUKbz//vvIycnh8YiuGlw/Qbe5uRmBgYFUfeMMTpw4QcnkxFFKJBIhKyuL0sKA4SbZ4OAgGhoaIBKJrLIhgOEvGWl8DQ4OQqvVmo2bsRyNYwmDwYCWlhb09/fTBpYnQLwmwsLCEB4eTpkTGo3Gqk2jOyCfyeDgIHJycnhp+HEDG9nqk6kaUVFRSE9P98iOQ6fToaGhgbI4nA2EZL3k4mHP0YxbH7blZcAHyDZfIBBALBabfR+5Fzpy4RAIBGbr5TZDbYEIT9ra2igj5fjx41ixYgUWLlyIpUuXXnNqMhcw9oMuy7LQ6XRoaxsejz5u3Dinn1tRUYGsrCy0trbCYDDQ8SLcJhmpGRuNRnq/K2sjo3HIj16vpxaNYWFhlE5D1FHJyclISkrySCefNARZloVYLB4RPCy9ENy5cFgqvcjkWU8di8lkQlxcHH2fLWuYo5EMc4+FL5Mdaxm8QCCATqeDv78/dZnj+z3jHgvZ5jsDbjNUoVA4NP7RaDSoqalBQEAAsrOzodPpsHbtWpw5cwbvv/8+xGIxr8d1FeL6CbrES4G4CjmCXq/HiRMn4OPjg5ycHERFRcFoNNJgS7JO0kTjiz9qycmVSqU0w0xMTERERARCQkJ4Dbrc7berx0KaM9wMnnvh4BL4CU81NDQUGRkZHlF6OTPqnFvDtMzgnbWV5KrWCGOAbxC/BIlEQkcnkQyez+Yi4aSTXdxoj4U7pJLL0/bx8YFarUZYWBiys7Nx+vRprFixAo888gieeuop3rLb9vZ2LFq0CN3d3WAYBk888QSWLVtm9hiWZbFs2TLs2bMHIpEIW7dupZz8Tz75BK+++ioA4KWXXsJDDz3Ey7p+xvUTdPv6+qihiD1wm2SkkxoaGkpLCWQaQUdHh0dpQIRmZjKZkJmZCZZlzTi5llSw4OBgl9fBbWBZYz64C66qbnBwEHK5HGq1GgzDICEhATExMQgNDeV9C0m67HFxcS5xSG1l8NZKKYSaJ5PJPMaDBsz9EtLT00e8V9waPNnquxqIibVoV1cXcnNzPTZxYWhoCNXV1dSpa+vWrfjyyy8hk8lw++23Y/r06fjtb3/L23vZ1dWFrq4uFBUVQaFQoLi4GF999ZWZpH/Pnj149913sWfPHpSVlWHZsmUoKyuDVCpFSUkJKioqwDAMiouLUVlZyWcfYOzLgMmXzpmZZNwm2dSpU9HU1ISOjg4aJORyOZqbmxETE+Nw3LW7IKY71jJoS0MactK1tLTQbR054cLCwux2yAcHB1FfX4+goCCX7fccgYxmEYlEMBgMlAsbHBxs5ulqMplGXDjcCcRk4gbLsk5JhK2t15qbGZl4IZfL0d7eDpVKBYPBgLCwMKSnp3uMP0wMg+z5JQiFQkRFRZl9P7iBmNgfcr8TROrMMAyUSiVqamocmuCMBizLQiKRoKOjAzk5OQgPD8ePP/6I/fv3Y/ny5XjkkUdQXV2NyspKXl83ISGB9m5CQkKQl5cHiUQywit30aJFYBgG06ZNw8DAALq6unDo0CHcdtttlN552223Yd++fXjwwQd5XaM1jJmgCwyfVPacxgYGBlBfXw+RSISioiLaJEtNTYVUKsXFixdx7tw5AEBERAR8fX2hVCp5dYLizvNKSUnB1KlT7WYpAoFghI0g96Tr6emhHX3i2RAaGgofHx/a/bZ0GuMT5D0lJzW5QIWEhJiZrBNlkkQioZaSjpzMCKyNOucLXH/fsLAwWhZJTU2FVqs1mwHH9aB1VNO2B2Lmk5SUhJKSEpd3LvYCMfGhJRcOk8mElJQUxMbGeqw/UF1djeDgYEyZMgVDQ0N49tlnUV9fj507dyIzMxMAMGXKFDrh2hNoaWlBVVXVCGWpNT9diURi8/bLgTEVdAHrRuZEEmw0GqnKhjsmx2Qyoa+vDzqdDiUlJQgKCqL1Vq7vLFdo4I7iSyqVorGxEREREaOyxbN20pFtM+H0ajQaBAUFISYmhjry85nlarVaNDQ0QK/XIz8/3y6djevHQMB1MmtrazMzAicXD2JMY23UOZ/getBaBnWu9SFp0pGRMyQQO+sURyYJG41Gt72HbYH7nSDc3sTEREpnbG5uphmxLUm2K+Aa+hDBxpEjR7By5Uo88cQT2Lhxo0eCvDUolUr85je/wd///nePlYH4xJgKupZG5oTwT2S7pElmNBppsCWNJUtvActJDFzFl+U2nwQJW9t8tVqNhoYGAPCYhy7pzPf391O+rV6vh1wuh1QqRUtLy4jGV2hoqMulE27W6awfgzVwncxIxsH1bWhqaoJUKgUAxMTEQCQSQaPR8E4FIxTByMhIpz1oSbOL1LTJSHGuUxx3q+/r60sZA5mZmWZuaHyCeD8olUqzeWvciwiXhWArEDsyKSJetiEhIZgyZQrUajWWL1+O5uZmfPXVV5dVSabX6/Gb3/wGv/3tb3HPPfeMuN+WJ25SUhIOHTpkdvv06dMvw4rHUCMNGP4ATCYTjh49iqSkJEgkEqSlpSEhIcFsDDShzRDjYnepWdxtPlcYQYIwmUs2MDDgMXkwcGl6A+Fc2sqg7LmYce0kbb0XznrcjgaWo87Dw8NpRkwadYTjStbsjpiDXJBVKhWtQ/O1fm5zcWBgACqVCn5+fkhMTER4eLhbFztHIJ8N+T678n7Yo4NZ1ojb2tpw8eJF2lw8fPgwXnjhBTz55JN44okneMtuH330UXz99deIjY2lJT8u3nzzTWzbtg3t7e3UZKq3txeRkZFIS0ujJUEy54400pYuXYry8nJIpVIUFxfj1KlTAICioiJUVlbyeY6OffYCAEoZO3PmDDIzM5GamkozWgA0E2xqakJkZCTS09N5//JrNBoMDAygs7MTAwMDtJPLrbfy9ZqkGUcyeXc6r9x6q1wuNzMsJ2sWCAQ0UxeLxR6RiQIwG3VuzxLRmjjCWU4ul8nhSf4wobT19PRALBZTKh0JbEajcQTdzp3vBVFhGgwGXk2DiITc0r9BJBJRP4svv/wSHR0deP/995GamsrL6xL897//RXBwMBYtWmQ16ALAjz/+iJtvvhmpqalUSLRu3TosXLgQL7zwAp599lmwLIslS5Zg3759EIlE+Pjjj1FSUgIA+Oijj7Bu3ToAwKpVq/DII4/weQjXR9Ctrq6GRqOBTCbDtGnTzMY5k8kNQqEQWVlZHgsc/f39aGxsRFRUFNLS0iAQCKBWq834rdxuflhYmMuGz1yCe0pKCu/TG0gphXR61Wo1AgMDERUVxQtf1BLcceq5ubluyZ0tqWCWqrqwsDAYDAbU1taOsHfkG6Smas8W0XLXQQIx8U4m3w97EzOIco3vqciWr8PlQwPA+vXrcfDgQSiVSqSkpOCGG27AX//6V95fu6WlBb/+9a9tBl2CBQsWYMaMGfjd734HAEhLS0NFRYXHlJxO4voIujqdDkajEZWVlRAKhQgPD6dmz0NDQ1Tl4wlwt/jZ2dl2gzrJLkkgVigUZs0me45gxLTck8IDYNhboqmpiVo7cqlrlh4IJCN2VfFFqEbt7e1ujSF39Le5VLCenh5otVqEhoYiOjraqcaXqyB+CWq1Gnl5eS7X7ontITcQWzOxJ9kt4Zd76jtA6GZkV6hUKvHSSy9BIpFg8+bNGDduHBQKBerr61FcXMz76zsTdNVqNZKTk+mUaABIT09HREQEGIbB4sWL8cQTT/C+NidwfQTdFStWIDg4GMXFxUhNTcWRI0eQmpoKoVBoRqlyxG11BcRbQC6Xj2pAI9cRjNQuuUHN398f7e3t0Ol0EIvFvBtkE7ji0MXNLuVyORUacEsptrJJIgoIDR2e6OEphykipIiPj0dKSsqIjNiy8eVu+Ydwv/kuWVia2EulUmi1WkRERFBeubu8Z3uv2drait7eXsohPnDgAFatWoVly5bhkUceuSzMBGeC7o4dO7Bt2zb85z//obdJJBIkJSWhp6cHt912G959913ccsstHl+vBa6PoFtXV4djx47hs88+w6lTp5Cfn4/MzEwUFxejuLgYycnJNJNQq9VmTa+wsDCXtpsmk4kSwj1VG9TpdJDJZGhvb8fg4CCEQqEZpYrPTI1r9u3uxcMyu7QmFQ4MDERrayuUSqVH+cOEnqXX65Gbm2tz5+Fom0+yS1tBTaPRmPnDeqpkQRgDwcHBSE9Pp+8zUS6yLDtize4ERqVSierqakRHRyMtLQ0KhQIvvvgienp68N5775lxWz0NZ4LuvHnzcN9992HBggVW71+9ejWCg4Px7LPPemqZtnB9BF0A+P7777Fv3z6sWrUKgYGBOH36NE6cOIGTJ0/i/PnzEIlEKC4uRklJCSZPnoyQkBDaLNDpdAgKCqKNL1snGxkvQ76YnuriW05vINMpuEGNNGS47ANX1sOtDVrzuOXjOEimdvHiRQwMDMDPzw8RERFmNW0+xSekZEEGQrp6PNa2+ZZBLTg4GBKJBJ2dnR6b6UbWQkYmEbWXrcdZmthzJzg7I0Ah9EmS3X733Xd45ZVXsHz5cixatOiy8W4JHAVduVyO9PR0tLe30z6ASqWiPROVSoXbbrsNr7zyCu68887LuXTgegq69sCyLKRSKU6ePEkDMXH0mjJlCoqLi+lcJu7JRrJLoVCIjo4OjzfjXJnewA0QcrncTMhBArEtvwZ3PW7dOZ66ujoEBQUhMzMTAoHAbMS7tTW7Iz7xZMmCG9T6+/shlUohEAion7K7ghl7UCgUqKmpoXaVrv5trgDFWiAma1apVKipqUFMTAxSU1MxODiIF154AVKpFO+99x7lqvMBR1SwQ4cO4e6774aPjw+USiVMJhMSEhKwZs0anD59Gl988QVCQkLw+OOPIz4+Hvv27aPTewGgubkZ8+bNAzBcsluwYAFWrVrF2/pdgDfo2gK5wpeVlaGsrAwVFRVQKBTIy8ujZYnw8HBUVFQgOTkZQqFwRFnCXctAS/A1vYEr5JDL5VCpVGYTI0QiEVXaeWpKBACzMUaOvHStrZnrJ2CPMcH1McjNzfVYycLydUQikcNpyO4ovkipRyaT2fVlcPcYuGvu7++n00+qq6sREBCAjz/+GCtWrMD//M//8J7dOqKCHTp0CG+99Ra+/vrrEesWi8X47rvvaJK0fft2M5+Fqwxj3/DGXfj4+CAjIwMZGRnU7EKv1+Ps2bM4duwYVq5cicbGRkyYMAF5eXkoKipCYWEhwsLCoFAo0NnZCY1GQ7X77tRauYKA1NRU5OTkjCqICwQChIeHm21FiTpNIpGgv78fvr6+CA4OpvJnV2va9sDlwqakpCA7O9vh8dhaszWPCS7Lg6jXkpOT3fIxcBZEfJCYmGj2OpZr5jZEuYovZy4ewPBUirq6OiQkJHjkeMj77OPjg66uLqSmpiIpKQlnzpzBkSNH0NTUhICAAGzevBl+fn6YP38+r69/yy23oKWlxeXnlZeXIysri1q2zp8/H7t27bqag65NXPdB1xqEQiGKiopw9uxZzJ49G8uXL4fRaERFRQXKysqwbt06NDY2IjY2ltaHJ06cCKFQiL6+PjQ3N9NmDNl62qqncf0YPOVoBgwbk1y4cAGhoaG4+eab4evrSydccE1dLI3VXV0Pd9T5aF3N7HlMSKVS1NbWwmQyITQ0FDqdDv39/aMyorEG0pAzGAxO+SX4+voiMjLSTNnk6OJBGBNNTU1Qq9VuOag5C5PJRC0riSR97969WLNmDZ5//nksWLAAPj4+1EbySuD48eOYNGkSEhMT8dZbbyE/P9+qQU1ZWdkVWd9o4Q26dmBpajxz5kzMnDkTwCW3MFKW2LRpE/r6+pCdnY2SkhIUFRUhJiYGOp0O7e3tlIvL5bS2t7eDZVmP+TEAw0GDnMyWW29ic8g1dSFCju7u7hG2jPYuHu6MOncHQqEQarWaBo3IyEjayZfJZNRjQiQSjUoFyBWgjNYvwdrFQ6fT0WZoS0sLlEolRCIRYmJioFAoqA0ln5DL5aitrUV8fDxKSkogk8nw9NNPY2hoCPv37zcbcUW8Ry43ioqK0NraiuDgYOzZswdz586lasixguu+pssnjEYjampqUFZWhpMnT+LUqVMwGo2YOHEiDcTh4eEoKytDTEwMhEKhWXDge4tPShajER5wG0hEJkzqliQbVqlUZgbpntriE5kwV+1nDdyLh6XHhDM0MLVajdraWtpg9JT4QKfToa6uDiaTiZruj2ZEki0YjUY0NTVhcHAQ48ePR2BgIL755hv8+c9/xosvvoj58+d77DOzBmeVZsAldVlDQwNWr16Nb7/9FsCwKg4AXnjhBY+udRTwNtKuBIgdYGVlJcrKyrBz507U1tZi4sSJKCoqQklJCSZNmmTWkHGWtmYPXI9bT/hLkLplX18furq6aEAjNDBiQsMXuEovd2XCXI8JS8YEVzDT3t6Onp4eu/Ss0YI7jtxeFs3lPZMfV+0kBwYGUFtbi8TERKSkpEAqlWLFihUwGAzYuHEj3eVcTtgLuhcvXqQJQnl5Oe699160trbSRtoPP/yApKQkTJkyBZ9//jllG12F8DbSrgSIHeDNN9+Mvr4+TJ48Gbt37wYAWpb49NNPqRtaSUkJiouLkZaWBpPJhK6uLjopgdCpCM3HWmZCPG51Op1Dj9vRHpdMJoNMJsPEiRMRERFBa61yuRwdHR00SxuNkIMbnNLS0pCbm+t2RmbL05dc7BoaGiCTyeDn54eYmBgMDQ3RnQifWSAZ2Ojv7+/QU5lrsG5ZAiIXPdI/sDTPYRgGjY2NUCqVmDhxIgIDA7F7926sW7cOq1atwgMPPMDrcTmigv3zn//E66+/jra2NqjVarAsi+TkZKxZswbPPfccAgICEBMTA6lUSnsJgYGBKC0tpZatGzZswB133AGj0YhHH330ag64duHNdK8CmEwmNDY2oqysDOXl5aisrIRarUZ+fj4NxKmpqfRkIxQwriCip6eHety6IwhwFn19fWhsbERCQgJSUlJsUoq4pt9cIQeXI2pPFKFSqVBbW0uHKHpqi28wGNDY2AiVSoXc3Fz4+flBoVDQNVtrerljJck1/RaLxbzafFobcjo0NITg4GCcOnUKSUlJ+OKLL2jg8oSfryMq2LFjx5CXl4eIiAjs3bsXq1evpo2wq8Sghm94ywvXGnQ6HU6fPk0D8blz5xAQEIDCwkKUlJSgsLAQEREROH36NAQCAeXhEr9Wvs1cyKhzhmHsevbag6WPAGkYcbf4AQEBaG1tRX9/P8Risce2+IDzfgncppctBzN7tVYiPiCiDU8oGIHhzL2hoQFqtRo5OTkwGAxYu3Ytjhw5Qv0aSkpKsHHjRo9clJ2t1ZImKBmPc70FXW954SqFn58fpk6diqlTpwIYzmYGBgZw8uRJlJWV4fPPP8fp06eRmJiIu+66C1OnTqUntDXamrt6fGdGnTsLMo6H2xUnW3zSWZfL5fD396djhoaGhtzKLO1Bo9Ggrq4OAoHAKVobKTnExMQAMK+1Ws5Qs5RjE09dMtLGUyDGPsnJycjJyUFvby+eeeYZCIVCHDx4EDExMdBoNGhoaLisTTNr2LJlC2bNmkV/ZxgGt99++5V2Bbts8Ga61yB6e3tx11134c9//jPy8vJw4sQJlJeX4+TJkxgYGEBOTg7lD2dlZdF6K9dCktSH7bmtuTvq3FVotVrU19fTLr6Pj4+Zexk3syRBzZ0uPneLz7dfArfWKpfLIZPJoFarIRKJ6KwyPgecEhgMBjoTLy8vD/7+/vjXv/6FN954A6tXr8Y999xz2YKsM5nuwYMH8Yc//AE//vgjff+vElcwvnHtlRf27duHZcuWwWg04vHHH8fKlSvN7tdqtVi0aBEqKysRFRWFHTt20NlM69evx5YtWyAQCPDOO+/gjjvuuAJH4FmYTCarQdBgMOD8+VoDICQAABZpSURBVPPUW+L06dNgGAaTJ09GcXExioqKEB8fTxtI1tzWTCaTWRD0FFGfS2vLysqimaS1xxEhBwlqxL2M26izF9CIN2x4eLjdqRSjBVcqTJSF3HIKMPoBpwREJTdu3DgkJCSgp6cHzzzzDAIDA/F///d/l3277ijonjlzBvPmzcPevXshFoutPuYKuoLxjWsr6Dqjs/7HP/6BM2fO4L333kNpaSn+/e9/Y8eOHaiursaDDz6I8vJydHZ24le/+hU1F78ewbIslEolpa2dPHkS9fX1iIqKot4ShYWF8Pf3h0wmoxSw0NBQxMbGeixDI+Y07gZBbvOIGP0QJzCu0Q/LstTHwJO+DMClnQGhZ9nyibD0ayDzyLiz9exlp3q9nrJUSPNv586deOutt7B27VrMnTv3ipQQ7AXdtrY2zJw5E59++iluuukmevtV5ArGN66toHv8+HGHROg77rgDq1evxo033giDwYD4+Hj09vbiL3/5i9ljuY/zYhiEilVeXk4z4qamJhgMBsycORMPPPAA8vLyzOZkOUtbcwQysXZwcJD3IGgp5CDG6qGhoUhKSuJ9zBABCYJki+/qzsCagb1QKDTL4kldu6+vDw0NDUhLS0N8fDy6u7uxfPlyhISE4O9//zuvJRNHNDCWZbFs2TLs2bMHfX198PX1hVwuR1xcHG6//XZqWvPmm2/iyJEj2LlzJ52l5uvri4qKiqvJFYxvXFuNNGd01tzHEPpUf38/JBIJpk2bZvZc0iX1YhgMwyAhIQF333037r77bvzlL3+Bn58fli5diq6uLvznP//B2rVrodPpMGHCBFofjo2NpeozS9qaI7c14g/c1NSElJQUiMVi3oMfkVkHBgZCLpcjKCgIkyZNouwD4nvAHWJJ1u0uent70djYSIOgO8dkza+By5jo7OzE0NAQDAYDBAIBDAYDDAYDduzYgb/97W949dVXMWfOHN7fz4cffhhLlizBokWLrN6/d+9eNDQ0oKGhAWVlZVi2bBnKysoglUpRUlKC2tpaMAyD4uJiVFZW4sMPPxzxNzIyMvDTTz/xuu6rHVdl0OUTHR0dWLp0KVauXGm1NvzXv/4VH374IXx9fRETE4OPPvqIXo0FAgEmTJgAABg3bhwVNow1PPnkk3j++efpSUumomo0GlRVVeHEiRPYsGEDzp8/T8chEdoaMYG357Y2NDREZ3qN1gTHHrhiCsthjdyAxq0PEyEHUXmRcoojup1Op0NtbS0AeOSYuIyJ3t5emt36+flh06ZNePrpp9Hb24tf/OIXqK2txS233OL2qChbcOQItmvXLixatAgMw2DatGl0kOmhQ4dw22230ff8tttuw759+6iL3/WOqzLoJiUlob29nf7e0dExwkiZPCY5ORkGgwFyuRxRUVFmzzUajThy5Ag+/fRTzJkzB1OmTMGcOXPMasOFhYWoqKiASCTCpk2b8Nxzz2HHjh0AQCdPjHXYojIFBATgxhtvpKUZlmXR399PTeBLS0vR1taGcePGmanpgEsiCq1WC6PRiISEBCQkJHjMRY3rl+BI6eXv74/Y2FgqEiBCDrlcTrNxSyEHodtxjXDsNf/4APFmYFkWJSUl8PX1RWlpKb799lu8/fbbmDVrFhobG3Hy5EmPva/2YG1HKpFIbN7uxTCuyqA7ZcoUNDQ0UBOV0tJSfP7552aPmTNnDj755BPceOON+PLLLzFz5kwwDIM5c+ZgwYIFWL58Oa0pzZs3DwKBwKoH54wZM+j/p02bhm3btl2eg7wGwTAMoqOjMWvWLMqzNJlMuHDhAsrKynDgwAG88cYbUCqViIuLQ3NzM5555hnMmjULWq0WHR0dLtPWHIHwiEfjl0Dk2iKRiDptcYUcEomE1rX1ej0CAwORl5fnUd4tEW5kZGQgLi4OXV1dWLZsGWJiYnD48GGa1ebk5FCzHC+uDVyVQdeWzvqVV15BSUkJ5syZg8ceewwLFy5EVlYWIiMj6ciO/Px83H///Rg/fjyGhoZw88030864Iw9OS9K2RqOhGcbKlSsxd+5czx74NQgfHx9kZmYiMzMTCxYsAMuy+N3vfoeamhosWrQIJ06cwAcffAChUIjCwkLKmIiOjoZCoRhRZyWB2JntOhFUxMTEYMqUKbzyiLlCDpZl0d7eDolEgtTUVLAsSz0EuHVtdyXCXJCyBamF+vr6Ytu2bdiwYQPWr1+Pu+6664qLGwhs7UiTkpJw6NAhs9unT59++Rd4leKqZC/whS+//BL79u2jBfzPPvsMZWVl2LBhw4jHki/24cOHaWOFkLabm5sxc+ZMvPLKK3j99ddtcoe3bt2KFStW0FLIkiVL8PjjjwMAPvnkE7z66qsAgJdeemmEV+9YQmVlJYqKimhwYFkWg4OD1AS+vLwcTU1NiIuLo/XhSZMmQSgUmrlp2eLhWvoleMrYB3DM79XpdGb+EkTI4cwYekt0d3ejubmZOo91dnZi6dKlSEhIwNtvv+1RSbQt2KOBffPNN9iwYQP27NmDsrIyLF26FOXl5ZBKpSguLsapU6cADHvkVlZW8uo3cQ3g2mIv8AVnasPA8ATh1157zSzgkucDwx3WW265BS+++CKOHTtGucOW9WEAeOCBB0YEdalUijVr1qCiooJmMHPmzOG98XG1oLi42Ox3hmEQFhaGW2+9FbfeeiuAS1N7y8rKcOLECWzcuJH6LRDv4YSEBOh0Oly8eBENDQ1gWRa+vr5QqVRISkpCYWGhx1Ry3Om4ubm5Nue7+fn5ITo6mgoRuBJhqVSKlpYWGAwGKhG2xnvWarWora2FQCBASUkJBAIBPv30U2zatAmvv/467rjjDl6zW0fCoz/+8Y84ePAgWltb6Uh64gj2u9/9DomJiYiOjkZKSgoyMjKQlZUFkUiEjz/+GMBw0/Lll1/GlClTAACvvPLK9RZw7WJMZ7oGg8GhB2dVVRXuvfde7Nu3D9nZ2fR2mUwGkUgEf39/asuYmpqKo0ePArDOHd66dSsqKipGBN3t27fj0KFD2Lx5MwBg8eLFmD59urebawGj0Yjq6mqaDVdVVYFlWUycOJGKZZYuXYrMzEyoVCoolUozPitfQ0JJ2SI2NpYX+bMtIQcpXchkMmRnZyMuLo6ybVJSUvDWW2/xXjd2dcDju+++i6qqKnz00UcAgODgYCiVSl7XNEZxfWa6ztSGV6xYAaVSifvuuw/AJWpYTU0NFi9eDB8fH5hMJsyePRt6vZ7+bVv14Z07d+K///0vxGIx/va3vyElJcXbzXUShKI3YcIEPP7441RNt3r1arz77rsoLCzEyy+/jIiICDM1XVBQEOWzjmZIKHfCQkFBAW9lCzL2PDg4GImJiQCGXdvOnTsHlmURGhqKpUuXorGxEVKpFI8++igeffRRu9OT3YWrAx63b9+ONWvW8L6O6xljOugCwF133YW77rrL7La1a9fS/3///fdWn3fTTTfh7Nmz9HdSH7aH2bNn48EHH4S/vz82b96Mhx56CAcOHLD5eGe3ecAwJaqnpwcDAwMArg8OMWEVJCcno76+HkFBQVRkQUzgP/nkE3R2diI9PZ3S1jIyMmAymVxyWyMS3qSkJKemF7sLLuUsOzsb0dHRaG9vh1arxS9+8QvMnj0b1dXVeP755/HOO+8gOTmZ19d3ZcBja2srLly4QOcCAt7mMh8Y80GXLzhTH+ZKMB9//HE899xz9LmW3dxbbrkFTz31lNk2z7JG/Le//Y3+n2zzCK4XDrFAIMAf//hH+jvDMIiNjcXs2bMxe/ZsAJdM4E+cOIF9+/bhtddeg0ajMTOBT0hIgFqtHkFbCw4ORn9/P4xGo1PTfkcD7tQIwrb46KOP8MEHH+Dtt9/GrbfeSmmPVwNKS0tx7733mtWfW1tbzZrLEyZMQGZm5hVc5bUHb9B1Es5wh7u6uijPc/fu3cjLywMw7P/w4osvQiaTAQD279+Pe+65x7vN4wk+Pj4Qi8UQi8VUsqrVaqkJ/Pvvv09N4MlsOtJRDwoKQmxsLEwmE6qrq12mrTkDMjm6vb2dWkq2tbVhyZIlEIvFOHr0KIKDg3l5LUdwtrkMDAfdjRs3jng+MNxcnj59OqqqqrxB10V4g66TcKY+/M4772D37t1US79161YA1ru5CoXCu83zIPz9/XHDDTfghhtuAHDJBL68vBzff/89Vq1ahdDQUKSlpVHa2oQJEyAQCMyMyV2xj7SGoaEh1NTUQCQSoaSkBD4+Pvjggw/w8ccf4+2336ainssFZ5IHAKitrYVMJjMzirJsLh89epTu5rxwHmOavXA1wxUO8euvv46Ojg68++679DZLDvEPP/zgzTicxKJFizB//nzceeedaGtrMzOBl8vlyM3NpYFYLBabeTUAMLNhDA4Otho0CSWuo6ODzkRraWnBkiVLMH78ePzlL3/hPbt11CMgPPKQkBBIJBKEhYVh2bJlWLVqFe6++26cPHkSQUFBeOmll3DhwgVoNBrq2gcMzznjNpeffvppPPbYY7wewxjCtWXteD3AGftKgsLCQmzcuNHMh5SLhx9+GG1tbTh37pxTNnwikQhbt25FUVERgOtLuOEIer1+hAm8j4+PmZouPj4eSqUScrmc0ta4ZQmTyYSamhoEBwcjKysLwLDacevWrfj73/+OX/7yl7xnt85QwWxRGokrGJdHXllZOWZ55JcJ1ydl7GoG39u8l19+GQUFBU7b8D355JPUhu96Em44glAoxOTJkzF58mT8/ve/NzOBP3HiBNavX4/6+nrExMSYua35+/tDLpejurqamnJv374dqamp2LFjBwoLC3H06FGPqedcpYJx8e2333pdwS4jvEH3CsGZGjEw3MyYP3++WWZkySFeuXIlFi1a5LXh8wDItOLp06dT/wBC+yIm8O+//z7a29uh1+sxZcoUPPzww0hJSYFMJsPevXvBMAyOHDmC5cuXU4EM33CWCublkV95eIPuFYQjDjEwPDPKEpYcYmfgteHjDwzDIDExEXPnzsXcuXPxzTff4E9/+hOWL18OrVaL3bt3Y9++fZg6dSrKysogEomg1+vR3Nx8RdftKo/cC8/AG3S9GIEvvvgCb7zxhs368D//+U+8/vrrVMq6adMmTJo0CQCQlpZGvQXISJaxjhtvvBE//vgj5fg+8sgjYFnWbHciFAo9asHIN4/c6wrmOXjGLcSLqw72bPgsb7/zzjvtqu/S09Nx+PBhnD17Fi+//DKeeOIJs/sPHjyI06dPXxcBFximBFqKKi63/SK3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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aX332y3FzL3P", + "colab_type": "text" + }, + "source": [ + "orthagonal and perpendicular" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7AS4V1Nhvvxz", + "colab_type": "text" + }, + "source": [ + "## 2.2 Are the following vectors orthogonal? Why or why not?\n", + "\n", + "\\begin{align}\n", + "a = \\begin{bmatrix} -5 \\\\ 3 \\\\ 7 \\end{bmatrix}\n", + "\\qquad\n", + "b = \\begin{bmatrix} 6 \\\\ -8 \\\\ 2 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "F_-y54YSz47k", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "3811c609-51a8-44b3-8d1d-fd2ab09bcd73" + }, + "source": [ + "a = np.array([-5,3,7])\n", + "b = np.array([6,-8,2])\n", + "np.dot(a,b)" + ], + "execution_count": 151, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "-40" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 151 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "JEFbQeJgtT3M", + "colab_type": "text" + }, + "source": [ + "No, orthagonal vectors have a dot product of zero" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MiNjyqiEz5SG", + "colab_type": "text" + }, + "source": [ + "## 2.3 Compute the following values: What do these quantities have in common?\n", + "\n", + "## What is $||c||^2$? \n", + "\n", + "## What is $c \\cdot c$? \n", + "\n", + "## What is $c^{T}c$?\n", + "\n", + "\\begin{align}\n", + "c = \\begin{bmatrix} 2 & -15 & 6 & 20 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "IlV_uaYK1EQB", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 67 + }, + "outputId": "30f0ab24-bced-4d1e-acb8-1e82beb74080" + }, + "source": [ + "c = np.array([2, -15, 6, 20])\n", + "print(np.linalg.norm(c)**2)\n", + "print(np.dot(c,c))\n", + "print(np.matmul(c.T,c))" + ], + "execution_count": 152, + "outputs": [ + { + "output_type": "stream", + "text": [ + "665.0\n", + "665\n", + "665\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "OKf2r_spu4-s", + "colab_type": "text" + }, + "source": [ + "They are all the same value" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "MK_TpWqk1Evk", + "colab_type": "text" + }, + "source": [ + "# Unit Vectors" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Kpit6WWO1b8l", + "colab_type": "text" + }, + "source": [ + "## 3.1 Using Latex, write the following vectors as a linear combination of scalars and unit vectors:\n", + "\n", + "\\begin{align}\n", + "d = \\begin{bmatrix} 7 \\\\ 12 \\end{bmatrix}\n", + "\\qquad\n", + "e = \\begin{bmatrix} 2 \\\\ 11 \\\\ -8 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "oBCj1sDW2ouC", + "colab_type": "text" + }, + "source": [ + "Your text here" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "dAdUQuep1_yJ", + "colab_type": "text" + }, + "source": [ + "## 3.2 Turn vector $f$ into a unit vector:\n", + "\n", + "\\begin{align}\n", + "f = \\begin{bmatrix} 4 & 12 & 11 & 9 & 2 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Tvz8_M5Pvj5o", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "64b4da35-de42-412a-9f71-af60e9a12810" + }, + "source": [ + "f = np.array([4,12,11,9,2])\n", + "f_unit = f/np.linalg.norm(f)\n", + "print(f_unit)" + ], + "execution_count": 153, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[0.20908335 0.62725005 0.57497921 0.47043754 0.10454167]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "o39UyP-I5lpP", + "colab_type": "text" + }, + "source": [ + "# Linear Independence / Dependence " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ajfBqYe45sT5", + "colab_type": "text" + }, + "source": [ + "## 4.1 Plot two vectors that are linearly dependent and two vectors that are linearly independent (bonus points if done in $\\mathbb{R}^3$)." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OsqNSv2hwq05", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 265 + }, + "outputId": "1343e627-6980-44d4-9332-20ab5ad0ac57" + }, + "source": [ + "vector_d = [1, 2, 3]\n", + "x,y,z = vector_d\n", + "vector_d2 = [2, 4, 6]\n", + "x1,y1,z1 = vector_d2\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111, projection = '3d')\n", + "ax.quiver(0,2,0,x,y,z, color = 'g')\n", + "ax.quiver(0,2,0,x1,y1,z1, color= 'r')\n", + "ax.set_xlim(0,5)\n", + "ax.set_ylim(0,5)\n", + "ax.set_zlim(0,10)" + ], + "execution_count": 154, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(0.0, 10.0)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 154 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TrJ0MT_n3SvO", + "colab_type": "text" + }, + "source": [ + "# Span" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "86iXLzwM2z8l", + "colab_type": "text" + }, + "source": [ + "## 5.1 What is the span of the following vectors?\n", + "\n", + "\\begin{align}\n", + "g = \\begin{bmatrix} 1 & 2 \\end{bmatrix}\n", + "\\qquad\n", + "h = \\begin{bmatrix} 4 & 8 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "uNqIfZoY5SFn", + "colab_type": "text" + }, + "source": [ + "Any line with slope 2" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "l1deylUj4IHH", + "colab_type": "text" + }, + "source": [ + "## 5.2 What is the span of $\\{l, m, n\\}$?\n", + "\n", + "\\begin{align}\n", + "l = \\begin{bmatrix} 1 & 2 & 3 \\end{bmatrix}\n", + "\\qquad\n", + "m = \\begin{bmatrix} -1 & 0 & 7 \\end{bmatrix}\n", + "\\qquad\n", + "n = \\begin{bmatrix} 4 & 8 & 2\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lzwBTecw5LoG", + "colab_type": "text" + }, + "source": [ + "R^3 all real" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IBqe7X1732kX", + "colab_type": "text" + }, + "source": [ + "# Basis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "YeUZVHRM6PpT", + "colab_type": "text" + }, + "source": [ + "## 6.1 Graph two vectors that form a basis for $\\mathbb{R}^2$\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "utvF3Pkt8NP6", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 268 + }, + "outputId": "84495d39-12e9-41b0-ce4a-07739d336ead" + }, + "source": [ + "plt.arrow(0 ,0, 1, 1, head_width=.1, head_length=.05, color ='g')\n", + "plt.arrow(0, 0, .25, 1, head_width=.1, head_length=.05, color='b')\n", + "plt.xlim(0,2)\n", + "plt.ylim(0,2)\n", + "plt.show()" + ], + "execution_count": 155, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "20yPFBDUxxnS", + "colab_type": "text" + }, + "source": [ + "## 6.2 What does it mean to form a basis?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3w4tEayT8M0o", + "colab_type": "text" + }, + "source": [ + "To contain every point/vector that spans the vector space" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "EHmUxbcY6vD3", + "colab_type": "text" + }, + "source": [ + "# Rank" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IpJwt9kw6v8U", + "colab_type": "text" + }, + "source": [ + "## 7.1 What is the Rank of P?\n", + "\n", + "\\begin{align}\n", + "P = \\begin{bmatrix} \n", + "1 & 2 & 3 \\\\\n", + " -1 & 0 & 7 \\\\\n", + "4 & 8 & 2\n", + "\\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pQwi0GtE8hgW", + "colab_type": "text" + }, + "source": [ + "the rank is 3" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "jGqFMBYY7mHD", + "colab_type": "text" + }, + "source": [ + "## 7.2 What does the rank of a matrix tell us?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Vjg1IiCD8nnP", + "colab_type": "text" + }, + "source": [ + "The possible linearly independent vectors in the matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "0Db2sc_V8QD6", + "colab_type": "text" + }, + "source": [ + "# Linear Projections\n", + "\n", + "## 8.1 Line $L$ is formed by all of the vectors that can be created by scaling vector $v$ \n", + "\\begin{align}\n", + "v = \\begin{bmatrix} 1 & 3 \\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "\\begin{align}\n", + "w = \\begin{bmatrix} -1 & 2 \\end{bmatrix}\n", + "\\end{align}\n", + "\n", + "## find $proj_{L}(w)$\n", + "\n", + "## graph your projected vector to check your work (make sure your axis are square/even)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "hp5z2WTBCNKx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "a03c22b8-73bd-4c6c-f315-b3ecbe367820" + }, + "source": [ + "v = np.array([1,3])\n", + "w = np.array([-1,2])\n", + "np.dot(w,v)/(np.linalg.norm(v)**2) * v" + ], + "execution_count": 156, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([0.5, 1.5])" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 156 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TKkrPwRM-Oar", + "colab_type": "text" + }, + "source": [ + "# Stretch Goal\n", + "\n", + "## For vectors that begin at the origin, the coordinates of where the vector ends can be interpreted as regular data points. (See 3Blue1Brown videos about Spans, Basis, etc.)\n", + "\n", + "## Write a function that can calculate the linear projection of each point (x,y) (vector) onto the line y=x. run the function and plot the original points in blue and the new projected points on the line y=x in red. \n", + "\n", + "## For extra points plot the orthogonal vectors as a dashed line from the original blue points to the projected red points." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "cp52kZra-ykj", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 309 + }, + "outputId": "7ec36cb6-95a6-4765-cdbe-12da55f553a8" + }, + "source": [ + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Creating a dataframe for you to work with -Feel free to not use the dataframe if you don't want to.\n", + "x_values = [1, 4, 7, 3, 9, 4, 5]\n", + "y_values = [4, 2, 5, 0, 8, 2, 8]\n", + "\n", + "data = {\"x\": x_values, \"y\": y_values}\n", + "\n", + "df = pd.DataFrame(data)\n", + "\n", + "df.head()\n", + "\n", + "def linproj(x,y,line):\n", + " line_temp = np.array([x,y])\n", + " x_temp = np.dot(line_temp,line)/(np.linalg.norm(line)**2)*line[0]\n", + " y_temp = np.dot(line_temp,line)/(np.linalg.norm(line)**2)*line[1]\n", + " return [x_temp,y_temp]\n", + "\n", + "i=0\n", + "while i < len(x_values):\n", + " for valy in y_values:\n", + " temp_point = linproj(x_values[i],valy,np.array([10,10]))\n", + " plt.plot(temp_point[0],temp_point[1],marker = 'o', markersize=5, color='red')\n", + " plt.plot([temp_point[0],x_values[i]],[temp_point[1],valy],':', color = 'black')\n", + " i=i+1\n", + "\n", + "plt.title('Really terrible plot',fontsize=32, color='purple', fontweight='black')\n", + "plt.xlabel('bad x axis')\n", + "plt.ylabel('horrible y axis')\n", + "\n", + "plt.scatter(df.x, df.y)\n", + "plt.xlim(0,10)\n", + "plt.ylim(-1,10)\n", + "plt.show()" + ], + "execution_count": 157, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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wAcffMB+++3H3LlzE45KRCRQm0ICunULufidd95hwYIFlJeXr2MPEZHiyGeN5oJMdyGw55578uabb6arkk477TSGDh3KqaeemnBkItJVrTMpmNmGhMnw9k4VPQmc5+6fFTKwrqIxIdTV1TF//ny1NYhIovJdZGcFcGTq53PauMiOrK179+489NBDXHjhhQC8/PLLHHnkkSxZsiThyESkK8mnTWGYux+ecTs2s9mFCqgrMzO6dw8vyauvvsqLL77Ieuutl3BUGWpq4IIL4NlnYc894ZxzoGfPpKMSkXaUz5VCtZnt1XjDzPYEqpvZXiZk5c4AABAcSURBVNrBMcccw/z58+nXrx/uzgknnMAjjzySXEA1NbDppnD++fDPf4bfm24aykWk08gnKfwXcLWZLTCz94CrUmVSYD1TZ+GffPIJL774IgsWLEgumAsugE8/BcI6qpMg3L7gguRiEpF2l0/vo5eBUWa2Qer25wWPSr5io402YtasWemurFOmTOGpp54ijuPidWd99lkAaoFZQHqR7ueeK87xRaQo1nmlYGbrmdkxwE+An5vZb83st4UPTTL16NEj3TPpxRdfpKqqKt3+UBR77hniAB4FLkoVP9K3L1tttRWvv/568WIRkYLJp/roAeAQwsnhqowfSch5553HtGnT6NGjBzU1NRx33HHMmTOnsAc95xxIrQ1hQE+Afv24t08f3nvvPdZff/3CHl9EiiKfpLCZux/l7pe4++8afwoemTSrV69eAMybN4+qqioWLVpU2AP27AlLlsBvfgP77x9+L1nC9TfdxCeffMLQoUNpaGhg22235ZJLLilsLCJSMPnUPzxnZju4uyboKUE77rgj7777bnop0BtuuIHa2lp+/OMft/+SoD17wnnnrVXct29fAF5//XXeeustpk+f3r7HFZGiyZkUzGwuYY6j7sDxZvYO8CWh9sDdfcfihCjr0pgQIDRCV1dX8+Mf/7jocWy33XZ8/PHH6V5TcRzz2GOP8dBDD6UTh4iUtuauFCYULQppN/feey8rVqzAzPjkk0/49a9/TRRFDBw4sCjHb1yCFKCqqopZs2YVt0FcRNokZ5uCu7/X3E8xg5T8mVn6i/nZZ5/ltttu4+OPPw531tfDlClh4NmUKeF2Ab3wwgvpqq2VK1cyYsQIHnzwwYIeU0TaRqdwndjEiRN5//336devH9TX87uRI9nh/fc58MsvoaICxo6FqVOhgJPwDRo0CICHH36YN998k5deeomJEycW7Hgi0jZKCp1cv1Q30i8ffJDr336bb7pzIMDKlTBtGlRVwYTC1xQeddRR7L777gwZMgSAH/3oR7g7kyZNSg/KE5Hk6dPYRaz3yivMducrnUVXrYLZxZvbsDEhADzwwAPcd999RTu2iORHSaGrGDOG9Xr3ZoPMsooKGD061x4FtXjxYmbMmEG3bt14++23GT16tEZFi5QAJYWuYvz40IbQuzeYhd9jx4byBHTv3p2hQ4cCMGnSJF5++WVeffXVRGIRkTXM3ZOOYZ0qKyt9xowZSYfR8dXXhzaE2bPDFcL48QVtZG6J119/nW222QaAww47jH322Yef/exnCUcl0rGZ2Ux3r2zRPkoKUkqWL1/OxhtvzLBhw1SdJNJGrUkKqj6SktK3b18WL17M1KlTAfjHP/7BuHHj+PxzzdguUgxF75JqZpsDtwKbEKbRmOTuVxQ7DildG220Ufrvyy67jEcffZQFCxaw445hZpVz7p/L5GkLqXenzIyjx27OBYfukFS4Ip1KEuMU6oBfuvtLZtYHmGlm/3D31xKIRUrc1KlTmT59ejohDBuzJytHHET5lqHXVL07t7/wbwAlBpF2UPTqI3f/wN1fSv29AngdGFzsOKTj2GWXXQCYPn0678x+js9fvHetbSZPW1jssEQ6pURHNJvZlsAYYFqW+04CToKvDnqSrmuXXXZh0x9cTo++g9a6r74DdJgQ6QgSa2g2s97A34CfZ1v32d0nuXulu1cOGDCg+AFKSeo1cGu6rd9rrfKy9l47QqSLSiQpmFkPQkK4w93XrgsQyeHosZu3qFxEWiaJ3kcG3AC87u6/L/bxpWNrbExW7yORwij64DUz2wt4GpgLNKSKz3b3R3Lto8FrIiIt15rBa0W/UnD3ZwhLeoqISInRiGYREUnTIjvF0DgR3axZMGZMSU1EJyKSSUmh0OrrYdy4sMrZqlVFWwZTRKQ1VH1UaFVVISGsXMlS968ugykiUmKUFApt1ixYtYoPga2BP0DRl8EUEcmXkkKhjRkDFRX0Bk4BDgKoqGDF8OHU1NQkG5uISBNKCoWWWgazondv/teMEallME9//HF23nlnJQYRKSlqaC60srLQqNxkGcyJU6ey1bBh9OzZE4DPPvuMDTfcMOFgRaSr03KcJWDu3Lnsscce3HnnnXznO99JOhwR6SS0HGcH1b9/f4466ih22203AFauXElHSNYi0vmo+qgEDB48mOuvvx4Ad+fwww9nww035K677ko4MhHpapQUSoy7M2HCBMrLy9Nlq1evplevtdcQEBFpb6o+KjHdunXj1FNP5cQTTwTgkUceYdiwYbzyyisJRyYiXYGSQokbOHAg++67L8OHDwfgiy++SDgiEenMlBRK3JgxY/jLX/5Cz549qa2tZZddduG8885LOiwR6aSUFDqQ2tpavvWtb7HTTjsBUF9fT319fcJRiUhnoqTQgfTq1Ys//OEPTJgwAYA///nP7LzzznzyyScJRyYinYWSQge22WabMWrUKPr37w9AXV1dwhGJSEenpNCBTZw4kVtuuQUz49NPP2X48OHceeedSYclIh2YkkInUV1dzahRoxg5ciSA2hpEpFU0eK2TGDRoEPfdd1/69hlnnMHbb7/NPffcQ5lWeBORPCkpdFKDBw+mrq4unRAaGhro1k0XhiLSPH1LdFK/+MUvuPzyywF46623GDlyJC+88ELCUYlIqVNS6AJWrlzJJptswhZbbAGgGVhFJCclhS5g9OjRPP300wwcOBCAo48+mnPOOSfhqESkFCkpdDF1dXX07duX3r17p8t05SAijZQUupju3btz7bXXcuaZZwLw5JNPsvvuu/Pee+8lHJmIlAIlhS5uxYoVAAwYMADQVYNIV6ek0MVNmDCB559/nl69elFfX8+BBx7IrbfemnRYIpIQJQXBzAD47LPPgFDFJCJdkz79kta/f38effTR9O1bb72VRx55hOuuu44+ffokGJmIFEsiScHMvg1cAZQB17v7RUnEIWtrvGoAWLZsGR9++CEVFRUA3D9rEZdOfYPFy6sZ1Lec08eN4NAxg5MKVUQKwIrdsGhmZcB84ADgfWA6cLS7v5Zrn8rKSp8xY0aRIpRMjdNjTH52Pid+70j67Hk062++PQDlPcq48Ls7KDGIlCgzm+nulS3ZJ4k2hV2Bt9z9HXevAe4EDkkgDslD43xJl/ztOWpXLgNbM7ledW09l059I6nQRKQAkqg+GgwszLj9PjC26UZmdhJwEsCQIUOKE5nktLznAAb+8GrMvnoesXh5dUIRiUghlGzvI3ef5O6V7l7Z2IdekjOob/laCaGxXEQ6jySSwiJg84zbm6XKpISdPm4E5T2+ui5DeY8yTh83IqGIRKQQkqg+mg5sbWZDCcngP4FjEohDWqCxMVm9j0Q6t6InBXevM7OfAFMJXVJvdPdXix2HtNyhYwYrCYh0comMU3D3R4BHkji2iIjkVrINzSIiUnxKCiIikqakICIiaUoKIiKSpqQgIiJpSgoiIpKmpCAiImlKCiIikqakICIiaUoKIiKSpqQgIiJpSgoiIpKmpCAiImlKCiIikmbunnQM62RmKwCtEB9sBHycdBAlQs/FGnou1tBzscYId+/Tkh0SWU+hFd5w98qkgygFZjZDz0Wg52INPRdr6LlYw8xmtHQfVR+JiEiakoKIiKR1lKQwKekASoieizX0XKyh52INPRdrtPi56BANzSIiUhwd5UpBRESKQElBRETSSjopmNm3zewNM3vLzM5MOp6kmNnmZvYvM3vNzF41s58lHVPSzKzMzGaZ2ZSkY0mSmfU1s3vMbJ6ZvW5muycdU1LM7Bepz8crZjbZzNZPOqZiMbMbzewjM3slo6y/mf3DzN5M/e6Xz2OVbFIwszLgamA8sC1wtJltm2xUiakDfunu2wK7Aad04eei0c+A15MOogRcAfzd3UcCo+iiz4mZDQZ+ClS6+/ZAGfCfyUZVVDcD325SdibwuLtvDTyeur1OJZsUgF2Bt9z9HXevAe4EDkk4pkS4+wfu/lLq7xWED/7gZKNKjpltBnwHuD7pWJJkZhsCewM3ALh7jbsvTzaqRHUHys2sO9ALWJxwPEXj7k8By5oUHwLckvr7FuDQfB6rlJPCYGBhxu336cJfhI3MbEtgDDAt2UgSdTnwK6Ah6UASNhRYCtyUqkq73swqkg4qCe6+CLgM+DfwAfCZuz+abFSJ28TdP0j9vQTYJJ+dSjkpSBNm1hv4G/Bzd/886XiSYGYTgI/cfWbSsZSA7sBOwJ/cfQywijyrCDqbVH35IYREOQioMLNjk42qdHgYe5DX+INSTgqLgM0zbm+WKuuSzKwHISHc4e73Jh1PgvYEJprZAkKV4n5mdnuyISXmfeB9d2+8aryHkCS6om8B77r7UnevBe4F9kg4pqR9aGYDAVK/P8pnp1JOCtOBrc1sqJn1JDQaPZhwTIkwMyPUG7/u7r9POp4kuftZ7r6Zu29JeE/809275Bmhuy8BFprZiFTR/sBrCYaUpH8Du5lZr9TnZX+6aKN7hgeBH6T+/gHwQD47lewsqe5eZ2Y/AaYSehLc6O6vJhxWUvYEvg/MNbPZqbKz3f2RBGOS0nAqcEfqxOkd4PiE40mEu08zs3uAlwi99WbRhaa7MLPJwD7ARmb2PhABFwF3mdkPgfeAI/N6LE1zISIijUq5+khERIpMSUFERNKUFEREJE1JQURE0pQUREQkTUlBOi0z2zJz1shi79/CYw1KdakUSVTJjlMQ6UrcfTFwRNJxiOhKQTq77mZ2R2qtgXvMrBeAmf3WzKan5t6flBoFi5ntbGYvm9nLwCnZHtDMDjOzxy0YaGbzzWzTJtv0Tm3zkpnNNbNDUuW7mNkcM1vfzCpS8/9vn3lVYmbbmdmLZjY7te3WBX2GRDIoKUhnNwK4xt23AT4HTk6VX+Xuu6Tm3i8HJqTKbwJOdfdRuR7Q3e8jzMR5CnAdEKWmnMj0BXCYu+8E7Av8zszM3acTph+4ALgEuN3dm1ZR/RdwhbuPBioJcxyJFIWSgnR2C9392dTftwN7pf7e18ymmdlcYD9gOzPrC/RNzU0PcFszj3sqcBbwpbtPznK/Af9nZnOAxwjTvjdOXXwecADhC/+SLPs+D5xtZmcAW7h7dT7/qEh7UFKQzq7pPC6eWqbxGuAId9+BcLbf0qUbNyOs57CJmWX7HH0PGADsnDrj/zDjGF8DegN9sh3X3f8CTASqgUfMbL8WxibSakoK0tkNyVi3+BjgGdZ8EX+cWqPiCIDUqmXLzazxauJ72R4wtbLXjcDRhJk4T8uy2YaEdR9qzWxfYIuM+/4M/Aa4A7g4y+NvBbzj7n8kzGy5Y57/q0ibqfeRdHZvENa0vpEwrfSf3H21mV0HvEJYkWp6xvbHAzeamQO5Vu46G3ja3Z9JNUhPN7OH3T1zquY7gIdS1VMzgHkAZnYcUOvuf0mtQ/5c6krgnYx9jwS+b2a1qfj+r03PgEgLaJZUERFJU/WRiIikKSmIiEiakoKIiKQpKYiISJqSgoiIpCkpiIhImpKCiIik/X8GilmkNq4UrwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/LS_DS_133_High_Dimensional_Data_Assignment.ipynb b/LS_DS_133_High_Dimensional_Data_Assignment.ipynb new file mode 100644 index 00000000..e3569b91 --- /dev/null +++ b/LS_DS_133_High_Dimensional_Data_Assignment.ipynb @@ -0,0 +1,2990 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Copy of LS_DS_133_High_Dimensional_Data_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7wMWCkE1RZpM", + "colab_type": "text" + }, + "source": [ + "# Vertical Line Test" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "W0-g7aprRv2j", + "colab_type": "text" + }, + "source": [ + "## 1.1 Create two graphs, one that passes the vertical line test and one that does not." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "X8l4O4OaG3_d", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import matplotlib.pyplot as plt\n" + ], + "execution_count": 35, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "fIJhCtF6RW_U", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "outputId": "c52381c9-c372-48c6-96af-7114d2af0755" + }, + "source": [ + "plt.plot([0,1],[0,1])" + ], + "execution_count": 36, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 36 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "YMY1x9STG6QJ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 282 + }, + "outputId": "d83462e2-a6f6-4a9c-f1b2-09a3d7e9990f" + }, + "source": [ + "plt.plot([0,0],[0,1])" + ], + "execution_count": 37, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "[]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 37 + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAOAklEQVR4nO3df6zd9V3H8edrrTCX/QDsZbL+WDvtEstiZLlhM/tDdMwVkrXLNk2bLMOJ6x8OY2QzdmFhwPxDIDqzWJ1Vl80lg3UYzV1W0zCEaIzMXgZDWuy4K5u0oNwBwUwCSHz7x/2ih8u5Paf3nntP++nzkZz0e77fzz3n84HkmW++33NyUlVIkk5/rxj3BCRJo2HQJakRBl2SGmHQJakRBl2SGrF6XG+8Zs2a2rhx47jeXpJOS/fcc88Pqmqi37GxBX3jxo1MT0+P6+0l6bSU5PsLHfOSiyQ1wqBLUiMMuiQ1wqBLUiMMuiQ1YmDQk3w+yeNJHljgeJJ8NslMkvuTvHX005QkDTLMGfoXgK0nOH4ZsLl77AL+ZOnTkiSdrIFBr6q/B548wZDtwF/WnLuBc5JcMKoJSivp+q8d4vqvHRr3NKRFGcUXi9YCj/Q8P9bte2z+wCS7mDuLZ8OGDSN4a2m0Dj/6n+OegrRoK3pTtKr2VtVkVU1OTPT95qokaZFGEfTjwPqe5+u6fZKkFTSKoE8BH+o+7fJ24OmqetnlFknS8hp4DT3JLcAlwJokx4BPAT8CUFWfA/YDlwMzwDPAh5drspKkhQ0MelXtHHC8gI+ObEaSpEXxm6KS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1Iihgp5ka5IjSWaS7O5zfEOSO5Pcm+T+JJePfqqSpBMZGPQkq4A9wGXAFmBnki3zhn0S2FdVFwE7gD8e9UQlSSc2zBn6xcBMVR2tqueBW4Ht88YU8Npu+3XAo6OboiRpGMMEfS3wSM/zY92+XtcBH0xyDNgP/Ea/F0qyK8l0kunZ2dlFTFeStJBR3RTdCXyhqtYBlwNfSvKy166qvVU1WVWTExMTI3prSRIMF/TjwPqe5+u6fb2uBPYBVNU/Aa8E1oxigpKk4QwT9IPA5iSbkpzF3E3PqXlj/g14J0CSn2Iu6F5TkaQVNDDoVfUCcBVwAHiQuU+zHEpyQ5Jt3bCPAR9J8m3gFuBXqqqWa9KSpJdbPcygqtrP3M3O3n3X9mwfBt4x2qlJkk6G3xSVpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqxFBBT7I1yZEkM0l2LzDml5McTnIoyZdHO01J0iCrBw1IsgrYA7wLOAYcTDJVVYd7xmwGPgG8o6qeSnL+ck1YktTfMGfoFwMzVXW0qp4HbgW2zxvzEWBPVT0FUFWPj3aakqRBhgn6WuCRnufHun293gy8Ock/Jrk7ydZ+L5RkV5LpJNOzs7OLm7Ekqa9R3RRdDWwGLgF2An+W5Jz5g6pqb1VNVtXkxMTEiN5akgTDBf04sL7n+bpuX69jwFRV/XdVPQx8h7nAS5JWyDBBPwhsTrIpyVnADmBq3pi/Ye7snCRrmLsEc3SE85QkDTAw6FX1AnAVcAB4ENhXVYeS3JBkWzfsAPBEksPAncBvV9UTyzVpSdLLDfzYIkBV7Qf2z9t3bc92AVd3D0nSGPhNUUlqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqhEGXpEYYdElqxFBBT7I1yZEkM0l2n2Dc+5NUksnRTVGSNIyBQU+yCtgDXAZsAXYm2dJn3GuA3wS+OepJSpIGG+YM/WJgpqqOVtXzwK3A9j7jPg3cCDw7wvlJkoY0TNDXAo/0PD/W7fs/Sd4KrK+qr5/ohZLsSjKdZHp2dvakJytJWtiSb4omeQXwB8DHBo2tqr1VNVlVkxMTE0t9a0lSj2GCfhxY3/N8XbfvRa8B3gLcleR7wNuBKW+MStLKGiboB4HNSTYlOQvYAUy9eLCqnq6qNVW1sao2AncD26pqellmLEnqa2DQq+oF4CrgAPAgsK+qDiW5Icm25Z6gJGk4q4cZVFX7gf3z9l27wNhLlj4tSdLJ8puiktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjRgq6Em2JjmSZCbJ7j7Hr05yOMn9Se5I8sbRT1WSdCIDg55kFbAHuAzYAuxMsmXesHuByar6aeA24KZRT1SSdGLDnKFfDMxU1dGqeh64FdjeO6Cq7qyqZ7qndwPrRjtNSdIgwwR9LfBIz/Nj3b6FXAn8bb8DSXYlmU4yPTs7O/wsJUkDjfSmaJIPApPAzf2OV9XeqpqsqsmJiYlRvrUknfFWDzHmOLC+5/m6bt9LJLkUuAb4uap6bjTTkyQNa5gz9IPA5iSbkpwF7ACmegckuQj4U2BbVT0++mlKkgYZGPSqegG4CjgAPAjsq6pDSW5Isq0bdjPwauCrSe5LMrXAy0mSlskwl1yoqv3A/nn7ru3ZvnTE85IknSS/KSpJjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjTDoktQIgy5JjRgq6Em2JjmSZCbJ7j7Hz07yle74N5NsHPVEJUknNjDoSVYBe4DLgC3AziRb5g27Eniqqn4S+Axw46gnKkk6sWHO0C8GZqrqaFU9D9wKbJ83ZjvwxW77NuCdSTK6aUqSBlk9xJi1wCM9z48Bb1toTFW9kORp4MeAH/QOSrIL2AWwYcOGRU5ZWj5b3vDacU9BWrRhgj4yVbUX2AswOTlZK/ne0jA+9Z4Lxz0FadGGueRyHFjf83xdt6/vmCSrgdcBT4xigpKk4QwT9IPA5iSbkpwF7ACm5o2ZAq7otj8A/F1VeQYuSSto4CWX7pr4VcABYBXw+ao6lOQGYLqqpoC/AL6UZAZ4krnoS5JW0FDX0KtqP7B/3r5re7afBX5ptFOTJJ0MvykqSY0w6JLUCIMuSY0w6JLUiIzr04VJZoHvj+XNl2YN874BewY409Z8pq0XXPPp5I1VNdHvwNiCfrpKMl1Vk+Oex0o609Z8pq0XXHMrvOQiSY0w6JLUCIN+8vaOewJjcKat+UxbL7jmJngNXZIa4Rm6JDXCoEtSIwx6H0nOS3J7koe6f89dYNwV3ZiHklzR5/hUkgeWf8ZLs5T1JnlVkq8n+dckh5L83srO/uQs5QfPk3yi238kybtXct5Lsdg1J3lXknuS/Ev37y+s9NwXa6k/bJ9kQ5IfJvn4Ss15JKrKx7wHcBOwu9veDdzYZ8x5wNHu33O77XN7jr8P+DLwwLjXs5zrBV4F/Hw35izgH4DLxr2mBda5Cvgu8KZurt8Gtswb8+vA57rtHcBXuu0t3fizgU3d66wa95qWec0XAW/ott8CHB/3epZ7zT3HbwO+Cnx83Os5mYdn6P31/uj1F4H39hnzbuD2qnqyqp4Cbge2AiR5NXA18LsrMNdRWPR6q+qZqroToOZ+RPxbzP2q1aloKT94vh24taqeq6qHgZnu9U51i15zVd1bVY92+w8BP5rk7BWZ9dIs6Yftk7wXeJi5NZ9WDHp/r6+qx7rtfwde32dMvx/PXtttfxr4feCZZZvhaC11vQAkOQd4D3DHckxyBAaugXk/eA68+IPnw/ztqWgpa+71fuBbVfXcMs1zlBa95u5k7HeA61dgniO3oj8SfSpJ8g3gx/scuqb3SVVVkqE/25nkZ4CfqKrfmn9dbpyWa709r78auAX4bFUdXdwsdSpKciFwI/CL457LCrgO+ExV/bA7YT+tnLFBr6pLFzqW5D+SXFBVjyW5AHi8z7DjwCU9z9cBdwE/C0wm+R5z/33PT3JXVV3CGC3jel+0F3ioqv5wBNNdLifzg+fH5v3g+TB/eypayppJsg74a+BDVfXd5Z/uSCxlzW8DPpDkJuAc4H+SPFtVf7T80x6BcV/EPxUfwM289CbhTX3GnMfcdbZzu8fDwHnzxmzk9LgpuqT1Mnev4K+AV4x7LQPWuZq5m7mb+P+bZRfOG/NRXnqzbF+3fSEvvSl6lNPjpuhS1nxON/59417HSq153pjrOM1uio59Aqfig7nrh3cADwHf6AnXJPDnPeN+lbmbYzPAh/u8zukS9EWvl7mznwIeBO7rHr827jWdYK2XA99h7lMQ13T7bgC2dduvZO7TDTPAPwNv6vnba7q/O8Ip+kmeUa4Z+CTwXz3/X+8Dzh/3epb7/3PPa5x2Qfer/5LUCD/lIkmNMOiS1AiDLkmNMOiS1AiDLkmNMOiS1AiDLkmN+F8zHELyxMHcRQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ckeTKqMgRy7g", + "colab_type": "text" + }, + "source": [ + "## 1.2 Why are graphs that don't pass the vertical line test not considered \"functions?\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Gtl20YeDR6x-", + "colab_type": "text" + }, + "source": [ + "A function can only have one output for every input- one y value per x value" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "g21uN62xSKSk", + "colab_type": "text" + }, + "source": [ + "# Functions as Relations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "gwkcV-EMSMNd", + "colab_type": "text" + }, + "source": [ + "## 2.1 Which of the following relations are functions? Why?\n", + "\n", + "\\begin{align}\n", + "\\text{Relation 1: } \\{(1, 2), (3, 2), (1, 3)\\}\n", + "\\\\\n", + "\\text{Relation 2: } \\{(1, 3), (2, 3), (6, 7)\\}\n", + "\\\\\n", + "\\text{Relation 3: } \\{(9, 4), (2, 1), (9, 6)\\}\n", + "\\\\\n", + "\\text{Relation 4: } \\{(6, 2), (8, 3), (6, 4)\\}\n", + "\\\\\n", + "\\text{Relation 5: } \\{(2, 6), (2, 7), (2, 4)\\}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n45lO_NMHL4k", + "colab_type": "text" + }, + "source": [ + "relation 2 is the only function. Everything else fails the vertical line test" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y0U30PrlTAAa", + "colab_type": "text" + }, + "source": [ + "# Functions as a mapping between dimensions\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "pw-OU9qmT5Ua", + "colab_type": "text" + }, + "source": [ + "## 3.1 for the following functions what is the dimensionality of the domain (input) and codomain (range/output)?\n", + "\n", + "\\begin{align}\n", + "m(𝑥_1,𝑥_2,𝑥_3)=(x_1+x_2, x_1+x_3, x_2+x_3)\n", + "\\\\\n", + "n(𝑥_1,𝑥_2,𝑥_3,𝑥_4)=(x_2^2 + x_3, x_2x_4)\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "k4tKHjdHUevC", + "colab_type": "text" + }, + "source": [ + "## 3.2 Do you think it's possible to create a function that maps from a lower dimensional space to a higher dimensional space? If so, provide an example." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "2nEWvwVyVWdW", + "colab_type": "text" + }, + "source": [ + "# Vector Transformations" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1n0-6FsYVcVk", + "colab_type": "text" + }, + "source": [ + "## 4.1 Plug the corresponding unit vectors into each function. Use the output vectors to create a transformation matrix.\n", + "\n", + "\\begin{align}\n", + "p(\\begin{bmatrix}x_1 \\\\ x_2 \\end{bmatrix}) = \\begin{bmatrix} x_1 + 3x_2 \\\\2 x_2 - x_1 \\\\ \\end{bmatrix}\n", + "\\\\\n", + "\\\\\n", + "q(\\begin{bmatrix}x_1 \\\\ x_2 \\\\ x_3\\end{bmatrix}) = \\begin{bmatrix} 4x_1 + x_2 + 2x_3 \\\\2 x_2 - x_1 + 3x_3 \\\\ 5x_1 - 2x_3 + x_2 \\end{bmatrix}\n", + "\\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "n5HUOQIxZ2gp", + "colab_type": "text" + }, + "source": [ + "## 4.2 Verify that your transformation matrices are correct by choosing an input matrix and calculating the result both via the traditional functions above and also via vector-matrix multiplication." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "0UANR1IEaVWE", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": 37, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "vEoiri3mak7j", + "colab_type": "text" + }, + "source": [ + "# Eigenvalues and Eigenvectors" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "5HY0R4u7anIr", + "colab_type": "text" + }, + "source": [ + "## 5.1 In your own words, give an explanation for the intuition behind eigenvalues and eigenvectors." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "aOeTm6rVIgL5", + "colab_type": "text" + }, + "source": [ + "An eigenvector is a vector that maintains its direction when transformed. An eigenvector is the scalar, or the amount that the vector is stretched or compressed, associated with the eigenvector" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "VdehMwBtatKI", + "colab_type": "text" + }, + "source": [ + "# The Curse of Dimensionality" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4oVrJax-a3SK", + "colab_type": "text" + }, + "source": [ + "## 6.1 What are some of the challenges of working with high dimensional spaces?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3qsSZsedIyLT", + "colab_type": "text" + }, + "source": [ + "The more parameters there are, the more likely the data will be overfit and the visual will not be a good representation of data trends" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ZiBJxsZla88c", + "colab_type": "text" + }, + "source": [ + "## 6.2 What is the rule of thumb for how many observations you should have compared to parameters in your model?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "f8by9HvTI81z", + "colab_type": "text" + }, + "source": [ + "O>5xP" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "NZmqdeygbHJx", + "colab_type": "text" + }, + "source": [ + "# Principal Component Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7iEheetpbJdN", + "colab_type": "text" + }, + "source": [ + "## 7.1 Code for loading and cleaning the 2013 national dataset from the [Housing Affordability Data System (HADS)](https://www.huduser.gov/portal/datasets/hads/hads.html) --housing data, can be found below. \n", + "\n", + "## Perform PCA on the processed dataset `national_processed` (Make sure you standardize your data!) and then make a scatterplot of PC1 against PC2. Some of our discussion and work around PCA with this dataset will continue during tomorrow's lecture and assignment.\n", + "\n", + "Not only does this dataset have decent amount columns to begin with (99), but in preparing the data for PCA we have also [one-hot-encoded](https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f#targetText=One%20hot%20encoding%20is%20a,the%20entry%20in%20the%20dataset.) all of the categorical variables. This has the effect of creating a new column for each individual category of each categorical variable. After processing this dataset has 64738 columns. --Das a lot of columns.\n", + "\n", + "Don't worry too much about the mechanics of one-hot encoding right now, you will learn and experiment with a whole bunch of categorical encoding approaches in unit 2. \n", + "\n", + "The code below will read in the dataset and perform the one-hot encoding of the categorical variables. Start adding your PCA code at the bottom of the provided code." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "Us4nNFs02HlD", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 340 + }, + "outputId": "edf24b2b-0abe-4a77-8a63-8ee0dbd0037d" + }, + "source": [ + "from urllib.request import urlopen\n", + "from zipfile import ZipFile\n", + "from io import BytesIO\n", + "import os.path\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Read Natinal Data \n", + "national_url = 'https://www.huduser.gov/portal/datasets/hads/hads2013n_ASCII.zip'\n", + "national_file = 'thads2013n.txt'\n", + "\n", + "if os.path.exists(national_file):\n", + " national = pd.read_csv(national_file)\n", + "else: \n", + " z_national = urlopen(national_url)\n", + " zip_national = ZipFile(BytesIO(z_national.read())).extract(national_file)\n", + " national = pd.read_csv(zip_national)\n", + "\n", + "print(national.shape)\n", + "national.head()" + ], + "execution_count": 38, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(64535, 99)\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CONTROLAGE1METRO3REGIONLMEDFMRL30L50L80IPOVBEDRMSBUILTSTATUSTYPEVALUEVACANCYTENURENUNITSROOMSWEIGHTPERZINC2ZADEQZSMHCSTRUCTURETYPEOWNRENTUTILITYOTHERCOSTCOST06COST12COST08COSTMEDTOTSALASSISTEDGLMEDGL30GL50GL80APLMEDABL30...COST08RELPOVCATCOST08RELFMRPCTCOST08RELFMRCATCOST12RELAMIPCTCOST12RELAMICATCOST12RELPOVPCTCOST12RELPOVCATCOST12RELFMRPCTCOST12RELFMRCATCOSTMedRELAMIPCTCOSTMedRELAMICATCOSTMedRELPOVPCTCOSTMedRELPOVCATCOSTMedRELFMRPCTCOSTMedRELFMRCATFMTZADEQFMTMETRO3FMTBUILTFMTSTRUCTURETYPEFMTBEDRMSFMTOWNRENTFMTCOST06RELPOVCATFMTCOST08RELPOVCATFMTCOST12RELPOVCATFMTCOSTMEDRELPOVCATFMTINCRELPOVCATFMTCOST06RELFMRCATFMTCOST08RELFMRCATFMTCOST12RELFMRCATFMTCOSTMEDRELFMRCATFMTINCRELFMRCATFMTCOST06RELAMICATFMTCOST08RELAMICATFMTCOST12RELAMICATFMTCOSTMEDRELAMICATFMTINCRELAMICATFMTASSISTEDFMTBURDENFMTREGIONFMTSTATUS
0'100003130103'82'3''1'737389561573826213403221106722006'1'140000-6'1'163117.394239118021'1'5331'1'169.000000213.750000648.588189803.050535696.905247615.1567120-97373815738262134032251616.620234.571429...472.898038248.4026352290.250487484.001102237.0776242222.339102464.3469362'1 Adequate''-5''2000-2009''1 Single Family''2 2BR''1 Owner''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''3 150-200% Poverty''2 50.1 - 100% FMR''2 50.1 - 100% FMR''2 50.1 - 100% FMR''2 50.1 - 100% FMR''1 LTE 50% FMR''2 30 - 50% AMI''2 30 - 50% AMI''2 30 - 50% AMI''2 30 - 50% AMI''2 30 - 50% AMI''.''2 30% to 50%''-5''-5'
1'100006110249'50'5''3'5584611001716528604457442421841980'1'1130000-6'1'162150.7255444122961'1'4871'1'245.33333358.3333331167.6407811669.6434051324.6712181058.988479123000-95584617165286044574455846.019911.400000...4120.4246563103.0940636275.7689994151.785764365.3884684174.909320396.2716802'1 Adequate''-5''1980-1989''1 Single Family''4 4BR+''1 Owner''3 150-200% Poverty''4 200%+ Poverty''4 200%+ Poverty''3 150-200% Poverty''4 200%+ Poverty''3 GT FMR''3 GT FMR''3 GT FMR''2 50.1 - 100% FMR''3 GT FMR''4 60 - 80% AMI''4 60 - 80% AMI''6 100 - 120% AMI''4 60 - 80% AMI''7 120% AMI +''.''1 Less than 30%''-5''-5'
2'100006370140'53'5''3'5584611001375022897366141547041985'1'1150000-6'1'172213.789404227974'1'14051'1'159.00000037.5000001193.3932091772.6270061374.5821751068.02516828000-95584613750228973661444676.819937.500000...4124.9620163109.4529056458.3392394161.147910365.9464494276.153890497.0931972'1 Adequate''-5''1980-1989''1 Single Family''4 4BR+''1 Owner''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''3 150-200% Poverty''3 GT FMR''3 GT FMR''3 GT FMR''2 50.1 - 100% FMR''2 50.1 - 100% FMR''4 60 - 80% AMI''5 80 - 100% AMI''6 100 - 120% AMI''4 60 - 80% AMI''4 60 - 80% AMI''.''3 50% or More''-5''-5'
3'100006520140'67'5''3'558469491375022897366141396431985'1'1200000-6'1'162364.585097232220'1'2791'1'179.00000070.6666671578.8576122351.1693411820.4429001411.7002240-95584613750228973661444676.817875.000000...4191.8274923161.9267097673.4945124247.752301397.2248015404.3827634148.7566103'1 Adequate''-5''1980-1989''1 Single Family''3 3BR''1 Owner''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''4 200%+ Poverty''3 GT FMR''3 GT FMR''3 GT FMR''3 GT FMR''2 50.1 - 100% FMR''6 100 - 120% AMI''7 120% AMI +''7 120% AMI +''5 80 - 100% AMI''4 60 - 80% AMI''.''1 Less than 30%''-5''-5'
4'100007130148'26'1''3'609917371480124628394211549221980'1'1-6-6'2'10042314.524902296874'1'7595'2'146.00000012.500000759.000000759.000000759.000000759.0000009690006099114801246283942148792.816651.125000...3102.985075355.3087073195.9721153102.985075355.3087073195.9721153102.9850753'1 Adequate''Central City''1980-1989''5 50+ units''2 2BR''2 Renter''3 150-200% Poverty''3 150-200% Poverty''3 150-200% Poverty''3 150-200% Poverty''4 200%+ Poverty''3 GT FMR''3 GT FMR''3 GT FMR''3 GT FMR''3 GT FMR''3 50 - 60% AMI''3 50 - 60% AMI''3 50 - 60% AMI''3 50 - 60% AMI''7 120% AMI +''0 Not Assisted''1 Less than 30%''-5''-5'
\n", + "

5 rows × 99 columns

\n", + "
" + ], + "text/plain": [ + " CONTROL AGE1 METRO3 ... FMTBURDEN FMTREGION FMTSTATUS\n", + "0 '100003130103' 82 '3' ... '2 30% to 50%' '-5' '-5'\n", + "1 '100006110249' 50 '5' ... '1 Less than 30%' '-5' '-5'\n", + "2 '100006370140' 53 '5' ... '3 50% or More' '-5' '-5'\n", + "3 '100006520140' 67 '5' ... '1 Less than 30%' '-5' '-5'\n", + "4 '100007130148' 26 '1' ... '1 Less than 30%' '-5' '-5'\n", + "\n", + "[5 rows x 99 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 38 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "O5zrMTud2qFU", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 218 + }, + "outputId": "ef901ef0-cc00-4dd3-eec7-37948305c346" + }, + "source": [ + "# Look at datatypes\n", + "# a lot of object datatypes even though they seem to be strings of numbers.\n", + "national.dtypes" + ], + "execution_count": 39, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "CONTROL object\n", + "AGE1 int64\n", + "METRO3 object\n", + "REGION object\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT object\n", + "FMTASSISTED object\n", + "FMTBURDEN object\n", + "FMTREGION object\n", + "FMTSTATUS object\n", + "Length: 99, dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 39 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "yIrOjVmd2yLz", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "a8c5d3ee-b837-49fd-a7ae-7eaeaeb1ec83" + }, + "source": [ + "# check for null values\n", + "national.isnull().sum().any()" + ], + "execution_count": 40, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "False" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 40 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "2u9tdmwX3KL_", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 50 + }, + "outputId": "b9485426-3f52-4103-899c-f97ca6d942f2" + }, + "source": [ + "# check for number of categorical vs numeric columns\n", + "cat_cols = national.columns[national.dtypes=='object']\n", + "num_cols = national.columns[national.dtypes!='object']\n", + "\n", + "print(f'{len(cat_cols)} categorical columns')\n", + "print(f'{len(num_cols)} numerical columns')" + ], + "execution_count": 41, + "outputs": [ + { + "output_type": "stream", + "text": [ + "32 categorical columns\n", + "67 numerical columns\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "UMHOtOs_3gcL", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 218 + }, + "outputId": "b3cb7f6b-b252-4a08-b575-f6550ce7e685" + }, + "source": [ + "# We're making a copy of our data in case we mess something up.\n", + "national_processed = national.copy()\n", + "\n", + "# Categorically Encode our Variables:\n", + "# They need to all be numeric before we do PCA.\n", + "# https://pbpython.com/categorical-encoding.html\n", + "\n", + "# Cast categorical columns to \"category\" data type\n", + "national_processed[cat_cols] = national_processed[cat_cols].astype('category')\n", + "\n", + "national_processed.dtypes" + ], + "execution_count": 42, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "CONTROL category\n", + "AGE1 int64\n", + "METRO3 category\n", + "REGION category\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT category\n", + "FMTASSISTED category\n", + "FMTBURDEN category\n", + "FMTREGION category\n", + "FMTSTATUS category\n", + "Length: 99, dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 42 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ymxU-aPtQ1eq", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 256 + }, + "outputId": "dfde1835-b9af-461a-cd5d-1022aae03cee" + }, + "source": [ + "# Replace all category cell values with their numeric category codes\n", + "for col in cat_cols:\n", + " national_processed[col] = national_processed[col].cat.codes\n", + "\n", + "print(national_processed.shape)\n", + "national_processed.head()" + ], + "execution_count": 43, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(64535, 99)\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CONTROLAGE1METRO3REGIONLMEDFMRL30L50L80IPOVBEDRMSBUILTSTATUSTYPEVALUEVACANCYTENURENUNITSROOMSWEIGHTPERZINC2ZADEQZSMHCSTRUCTURETYPEOWNRENTUTILITYOTHERCOSTCOST06COST12COST08COSTMEDTOTSALASSISTEDGLMEDGL30GL50GL80APLMEDABL30...COST08RELPOVCATCOST08RELFMRPCTCOST08RELFMRCATCOST12RELAMIPCTCOST12RELAMICATCOST12RELPOVPCTCOST12RELPOVCATCOST12RELFMRPCTCOST12RELFMRCATCOSTMedRELAMIPCTCOSTMedRELAMICATCOSTMedRELPOVPCTCOSTMedRELPOVCATCOSTMedRELFMRPCTCOSTMedRELFMRCATFMTZADEQFMTMETRO3FMTBUILTFMTSTRUCTURETYPEFMTBEDRMSFMTOWNRENTFMTCOST06RELPOVCATFMTCOST08RELPOVCATFMTCOST12RELPOVCATFMTCOSTMEDRELPOVCATFMTINCRELPOVCATFMTCOST06RELFMRCATFMTCOST08RELFMRCATFMTCOST12RELFMRCATFMTCOSTMEDRELFMRCATFMTINCRELFMRCATFMTCOST06RELAMICATFMTCOST08RELAMICATFMTCOST12RELAMICATFMTCOSTMEDRELAMICATFMTINCRELAMICATFMTASSISTEDFMTBURDENFMTREGIONFMTSTATUS
0082207373895615738262134032211067220060140000-61163117.394239118021153310169.000000213.750000648.588189803.050535696.905247615.1567120-97373815738262134032251616.620234.571429...472.898038248.4026352290.250487484.001102237.0776242222.339102464.34693621051204444311111111120200
115042558461100171652860445744242184198001130000-61162150.7255444122961148710245.33333358.3333331167.6407811669.6434051324.6712181058.988479123000-95584617165286044574455846.019911.400000...4120.4246563103.0940636275.7689994151.785764365.3884684174.909320396.27168021031403443422213335370100
225342558461100137502289736614154704198501150000-61172213.7894042279741140510159.00000037.5000001193.3932091772.6270061374.5821751068.02516828000-95584613750228973661444676.819937.500000...4124.9620163109.4529056458.3392394161.147910365.9464494276.153890497.09319721031404444322212345340300
33674255846949137502289736614139643198501200000-61162364.585097232220127910179.00000070.6666671578.8576122351.1693411820.4429001411.7002240-95584613750228973661444676.817875.000000...4191.8274923161.9267097673.4945124247.752301397.2248015404.3827634148.75661031031304444422222566440100
44260260991737148012462839421154922198001-6-6210042314.524902296874175951146.00000012.500000759.000000759.000000759.000000759.0000009690006099114801246283942148792.816651.125000...3102.985075355.3087073195.9721153102.985075355.3087073195.9721153102.98507531135213333422223222271100
\n", + "

5 rows × 99 columns

\n", + "
" + ], + "text/plain": [ + " CONTROL AGE1 METRO3 REGION ... FMTASSISTED FMTBURDEN FMTREGION FMTSTATUS\n", + "0 0 82 2 0 ... 0 2 0 0\n", + "1 1 50 4 2 ... 0 1 0 0\n", + "2 2 53 4 2 ... 0 3 0 0\n", + "3 3 67 4 2 ... 0 1 0 0\n", + "4 4 26 0 2 ... 1 1 0 0\n", + "\n", + "[5 rows x 99 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 43 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "6NS5AQpcQ8Je", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 218 + }, + "outputId": "2f9e781d-561c-45f6-eb1f-fea6afd996ed" + }, + "source": [ + "# Now we only ahve numeric columns (ints and floats)\n", + "national_processed.dtypes" + ], + "execution_count": 44, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "CONTROL int32\n", + "AGE1 int64\n", + "METRO3 int8\n", + "REGION int8\n", + "LMED int64\n", + " ... \n", + "FMTINCRELAMICAT int8\n", + "FMTASSISTED int8\n", + "FMTBURDEN int8\n", + "FMTREGION int8\n", + "FMTSTATUS int8\n", + "Length: 99, dtype: object" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 44 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "WAJ8bjVcEwhA", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 323 + }, + "outputId": "bc508a8c-8458-4e0d-d6d9-b7c01783c784" + }, + "source": [ + "### Your Code Here\n", + "from sklearn.preprocessing import StandardScaler\n", + "from sklearn.decomposition import PCA\n", + "\n", + "national_processed_s = StandardScaler().fit_transform(national_processed)\n", + "new_features = PCA().fit_transform(national_processed_s)\n", + "\n", + "new_features = pd.DataFrame(new_features)\n", + "\n", + "i = 0\n", + "columns = []\n", + "while i\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PC1PC2PC3PC4PC5PC6PC7PC8PC9PC10PC11PC12PC13PC14PC15PC16PC17PC18PC19PC20PC21PC22PC23PC24PC25PC26PC27PC28PC29PC30PC31PC32PC33PC34PC35PC36PC37PC38PC39PC40...PC60PC61PC62PC63PC64PC65PC66PC67PC68PC69PC70PC71PC72PC73PC74PC75PC76PC77PC78PC79PC80PC81PC82PC83PC84PC85PC86PC87PC88PC89PC90PC91PC92PC93PC94PC95PC96PC97PC98PC99
0-2.576570-1.376127-1.253835-0.6198821.592855-2.529629-1.0243842.0389710.743631-0.981357-0.958024-0.983633-0.1243202.130272-0.232511-1.259668-1.8112150.8002300.1574960.0578910.076233-0.3038510.2346310.3116921.4148470.6655750.2060750.297168-0.885343-1.1008120.017568-0.296827-0.0452260.328718-0.227059-0.2065670.1051830.209632-0.4529490.487132...-0.022755-0.0053800.0170970.0175090.007771-0.001771-0.0056350.0024380.000044-1.555674e-12-2.275710e-12-7.244823e-12-2.792285e-121.391321e-132.899610e-12-1.398466e-125.030034e-12-1.453494e-12-7.971580e-15-8.595370e-161.397316e-15-4.201700e-15-2.629575e-151.662437e-152.281487e-16-8.200807e-157.638178e-152.129641e-151.126562e-154.763201e-15-1.111901e-151.643459e-15-2.481185e-151.627337e-154.206682e-162.517816e-154.136666e-156.081237e-15-5.551242e-16-7.942743e-16
12.040643-0.988061-2.237999-2.9874032.1603201.2208751.076368-0.6813690.948055-0.182382-0.6903090.670541-0.3129500.1607160.063940-0.032742-1.310611-0.029583-0.320912-1.2132950.082541-0.438037-0.140961-0.4171530.129375-0.3732540.1624620.426850-0.2946721.1966200.0344420.739189-0.334534-0.349723-0.0511910.1070430.9526030.1994570.0227680.199969...-0.0654890.030766-0.021506-0.0141760.0100880.000578-0.010665-0.002009-0.0000831.985665e-111.697024e-11-1.820959e-11-4.569093e-12-8.943151e-12-1.002888e-113.043135e-12-1.867900e-12-7.525301e-12-1.236942e-13-2.811725e-14-2.859341e-15-1.245108e-146.380007e-15-3.271522e-146.700829e-143.538613e-14-3.039974e-14-1.604190e-14-5.531218e-157.315701e-15-9.227129e-15-2.709105e-15-3.293959e-154.693389e-15-3.784732e-157.904892e-15-1.024321e-14-7.866356e-15-6.322116e-16-2.619343e-16
21.2152700.370168-3.248606-2.1238991.229951-2.5599450.9842910.088488-0.209300-0.715159-0.2439961.168680-0.1361000.4912520.358669-0.462415-1.4945700.114951-0.160159-0.8894620.678651-0.0022220.162761-0.738769-0.8445790.332651-0.0146020.525549-0.1347050.832489-0.3668750.429854-0.639612-0.112777-0.1140590.2588930.9746110.1678550.177374-0.033658...-0.0371080.019828-0.0322030.0032940.0061820.000272-0.0083070.0002100.000053-3.011104e-11-3.448156e-11-2.696771e-12-1.342672e-113.055270e-11-1.853116e-116.526787e-121.171080e-112.918130e-111.978506e-14-6.917647e-15-8.690510e-153.585682e-15-4.658132e-15-8.145799e-15-4.673181e-16-5.639147e-15-2.337729e-15-5.838861e-152.205696e-15-2.530473e-15-4.543976e-16-6.528784e-15-2.303640e-15-2.500232e-152.893038e-152.086186e-151.598883e-153.318875e-158.989284e-16-3.788372e-17
32.8218371.723711-4.375157-1.4793430.085327-1.7550500.710440-0.0648430.487051-0.175074-0.9478110.273949-0.083829-0.606772-0.0587910.293943-1.3190741.225816-0.688633-0.437567-0.155818-0.9341890.0707810.0828820.259157-0.305200-0.1574190.136505-0.6786510.363593-0.4972620.4535850.0991060.302715-0.3191960.502472-0.0562090.0439860.2844940.152548...0.051131-0.0164790.032716-0.001735-0.006142-0.0000830.0032330.0003690.0000471.570527e-11-2.956002e-11-4.246039e-11-3.625665e-11-3.904595e-11-8.910011e-122.530238e-127.069996e-123.740412e-138.286938e-156.592696e-16-1.280837e-159.213680e-16-3.869037e-171.861092e-16-3.535306e-162.137629e-15-3.969571e-16-1.665115e-152.604798e-15-3.388406e-153.325411e-16-1.605029e-15-2.185016e-15-2.579443e-153.379958e-151.414309e-15-3.038426e-15-1.618005e-15-2.137277e-16-7.535854e-16
4-1.570106-0.878362-3.3070620.785881-2.3104003.881736-0.6459520.464725-0.0921470.4395020.6804271.297333-2.1765270.873973-1.2587290.078789-1.274484-1.278863-0.049121-1.107579-1.3157070.183007-0.463981-0.126541-0.632876-0.4903560.2270400.4487140.3620580.192815-0.0611160.4236520.0602510.0662550.0872480.049826-0.007892-0.222354-0.0177750.482700...0.0295080.017652-0.0079010.005932-0.0081800.0011590.0049480.003858-0.000114-1.210293e-12-7.386035e-131.444818e-12-7.904880e-13-9.223507e-14-6.033953e-135.752033e-14-3.907023e-138.020451e-13-3.283658e-135.266361e-143.634224e-151.832897e-144.621295e-14-3.589585e-14-1.776807e-14-2.737603e-14-8.598189e-15-3.794475e-14-1.916136e-14-8.228730e-15-6.056303e-15-1.204971e-14-1.099331e-147.764073e-15-3.602489e-159.824194e-153.711774e-155.388211e-15-7.548762e-16-5.272142e-17
\n", + "

5 rows × 99 columns

\n", + "" + ], + "text/plain": [ + " PC1 PC2 PC3 ... PC97 PC98 PC99\n", + "0 -2.576570 -1.376127 -1.253835 ... 6.081237e-15 -5.551242e-16 -7.942743e-16\n", + "1 2.040643 -0.988061 -2.237999 ... -7.866356e-15 -6.322116e-16 -2.619343e-16\n", + "2 1.215270 0.370168 -3.248606 ... 3.318875e-15 8.989284e-16 -3.788372e-17\n", + "3 2.821837 1.723711 -4.375157 ... -1.618005e-15 -2.137277e-16 -7.535854e-16\n", + "4 -1.570106 -0.878362 -3.307062 ... 5.388211e-15 -7.548762e-16 -5.272142e-17\n", + "\n", + "[5 rows x 99 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 45 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_AVv1TH-Mlqm", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 323 + }, + "outputId": "ea0c9f4b-68fd-4fdb-f009-e007c31e7f92" + }, + "source": [ + "national_processed = pd.concat([national_processed,new_features], axis=1)\n", + "national_processed.head()" + ], + "execution_count": 46, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
CONTROLAGE1METRO3REGIONLMEDFMRL30L50L80IPOVBEDRMSBUILTSTATUSTYPEVALUEVACANCYTENURENUNITSROOMSWEIGHTPERZINC2ZADEQZSMHCSTRUCTURETYPEOWNRENTUTILITYOTHERCOSTCOST06COST12COST08COSTMEDTOTSALASSISTEDGLMEDGL30GL50GL80APLMEDABL30...PC60PC61PC62PC63PC64PC65PC66PC67PC68PC69PC70PC71PC72PC73PC74PC75PC76PC77PC78PC79PC80PC81PC82PC83PC84PC85PC86PC87PC88PC89PC90PC91PC92PC93PC94PC95PC96PC97PC98PC99
0082207373895615738262134032211067220060140000-61163117.394239118021153310169.000000213.750000648.588189803.050535696.905247615.1567120-97373815738262134032251616.620234.571429...-0.022755-0.0053800.0170970.0175090.007771-0.001771-0.0056350.0024380.000044-1.555674e-12-2.275710e-12-7.244823e-12-2.792285e-121.391321e-132.899610e-12-1.398466e-125.030034e-12-1.453494e-12-7.971580e-15-8.595370e-161.397316e-15-4.201700e-15-2.629575e-151.662437e-152.281487e-16-8.200807e-157.638178e-152.129641e-151.126562e-154.763201e-15-1.111901e-151.643459e-15-2.481185e-151.627337e-154.206682e-162.517816e-154.136666e-156.081237e-15-5.551242e-16-7.942743e-16
115042558461100171652860445744242184198001130000-61162150.7255444122961148710245.33333358.3333331167.6407811669.6434051324.6712181058.988479123000-95584617165286044574455846.019911.400000...-0.0654890.030766-0.021506-0.0141760.0100880.000578-0.010665-0.002009-0.0000831.985665e-111.697024e-11-1.820959e-11-4.569093e-12-8.943151e-12-1.002888e-113.043135e-12-1.867900e-12-7.525301e-12-1.236942e-13-2.811725e-14-2.859341e-15-1.245108e-146.380007e-15-3.271522e-146.700829e-143.538613e-14-3.039974e-14-1.604190e-14-5.531218e-157.315701e-15-9.227129e-15-2.709105e-15-3.293959e-154.693389e-15-3.784732e-157.904892e-15-1.024321e-14-7.866356e-15-6.322116e-16-2.619343e-16
225342558461100137502289736614154704198501150000-61172213.7894042279741140510159.00000037.5000001193.3932091772.6270061374.5821751068.02516828000-95584613750228973661444676.819937.500000...-0.0371080.019828-0.0322030.0032940.0061820.000272-0.0083070.0002100.000053-3.011104e-11-3.448156e-11-2.696771e-12-1.342672e-113.055270e-11-1.853116e-116.526787e-121.171080e-112.918130e-111.978506e-14-6.917647e-15-8.690510e-153.585682e-15-4.658132e-15-8.145799e-15-4.673181e-16-5.639147e-15-2.337729e-15-5.838861e-152.205696e-15-2.530473e-15-4.543976e-16-6.528784e-15-2.303640e-15-2.500232e-152.893038e-152.086186e-151.598883e-153.318875e-158.989284e-16-3.788372e-17
33674255846949137502289736614139643198501200000-61162364.585097232220127910179.00000070.6666671578.8576122351.1693411820.4429001411.7002240-95584613750228973661444676.817875.000000...0.051131-0.0164790.032716-0.001735-0.006142-0.0000830.0032330.0003690.0000471.570527e-11-2.956002e-11-4.246039e-11-3.625665e-11-3.904595e-11-8.910011e-122.530238e-127.069996e-123.740412e-138.286938e-156.592696e-16-1.280837e-159.213680e-16-3.869037e-171.861092e-16-3.535306e-162.137629e-15-3.969571e-16-1.665115e-152.604798e-15-3.388406e-153.325411e-16-1.605029e-15-2.185016e-15-2.579443e-153.379958e-151.414309e-15-3.038426e-15-1.618005e-15-2.137277e-16-7.535854e-16
44260260991737148012462839421154922198001-6-6210042314.524902296874175951146.00000012.500000759.000000759.000000759.000000759.0000009690006099114801246283942148792.816651.125000...0.0295080.017652-0.0079010.005932-0.0081800.0011590.0049480.003858-0.000114-1.210293e-12-7.386035e-131.444818e-12-7.904880e-13-9.223507e-14-6.033953e-135.752033e-14-3.907023e-138.020451e-13-3.283658e-135.266361e-143.634224e-151.832897e-144.621295e-14-3.589585e-14-1.776807e-14-2.737603e-14-8.598189e-15-3.794475e-14-1.916136e-14-8.228730e-15-6.056303e-15-1.204971e-14-1.099331e-147.764073e-15-3.602489e-159.824194e-153.711774e-155.388211e-15-7.548762e-16-5.272142e-17
\n", + "

5 rows × 198 columns

\n", + "
" + ], + "text/plain": [ + " CONTROL AGE1 METRO3 ... PC97 PC98 PC99\n", + "0 0 82 2 ... 6.081237e-15 -5.551242e-16 -7.942743e-16\n", + "1 1 50 4 ... -7.866356e-15 -6.322116e-16 -2.619343e-16\n", + "2 2 53 4 ... 3.318875e-15 8.989284e-16 -3.788372e-17\n", + "3 3 67 4 ... -1.618005e-15 -2.137277e-16 -7.535854e-16\n", + "4 4 26 0 ... 5.388211e-15 -7.548762e-16 -5.272142e-17\n", + "\n", + "[5 rows x 198 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 46 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "gh4nCevVM9ye", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 312 + }, + "outputId": "7ab34469-3eb7-4be1-94fa-0d1ef018e1bb" + }, + "source": [ + "plt.scatter(national_processed['PC1'],national_processed['PC2'], alpha =.2)\n", + "plt.title('PC1 vs PC2')\n", + "plt.xlabel('PC1')\n", + "plt.ylabel('PC2')\n", + "plt.show" + ], + "execution_count": 50, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 50 + }, + { + "output_type": "display_data", + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAEWCAYAAACNJFuYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOy9eZBk933Y9/m+u++ennPvXdwEARAAIZ5iRFFmKKl0ULFKKfmIFB+UnbhslfWHZJUTS+XEUcq25CROuYoqyqJckiJbJy2pwtCSSIqUCBAgQBDXYoGdPWbn7Jnp+93vlz9ez2B2d/YCdqZ7dn+fqtnpfq/79bd33nvf3/cWpRQajUaj0ezEGLUAGo1Goxk/tHLQaDQazVVo5aDRaDSaq9DKQaPRaDRXoZWDRqPRaK5CKweNRqPRXIVWDhqNRqO5Cq0cNHc0InJORHwR6YnIioj8qoiUd+z/hIh8WUS6IrImIl8SkR8Y7jskIp8TkUURUSJych/k/TkRiYfytkTkL0Tkgzv2HxKRz4jI0lDm10Tk50WkJCIzIvKbQ3nbIvJVEXn/XsusuTPRykFzN/D9Sqky8CTwFPBPAUTkh4H/BPwacBSYBf5n4PuH78uA/xf4q/ss728N5Z0GvgL8ruQ0gL8ECsAHlVIV4ONAHbgXKANfB94LNIDPAn+0UxlqNDeL6AppzZ2MiJwD/o5S6r8Mn/9L4F3kCuA88H8ppf7lDY5hATFwSil17hqv+Wng25RSP7xj2/9Bfo39QxH5cXLFMw00gX+qlPr1XY7zc8B9Sqm/MXz+buCl4ft+EvhB4D1Kqewmv38H+E6l1HM383qNZgttOWjuGkTkGPC9wPPAg8Ax4Ldv0+H/H+B7RaQy/CwT+BHgN0SkBPyfwPcMV/sfAl64CXld4MeBi0qpJvBXgN+9BcXwOOAAb9z619Hc7WjloLkb+H0RaZG7aL4E/Atgcrhv6XZ8gFLqPPAN4IeGmz4GDJRSXxs+z4BHRKSglFpSSr18ncP9yFDei+Quoq1jTt6svCJSBf4D8PNKqfatfRuNRisHzd3BJ5VSdaXUCaXU/6CU8oH14b5Dt/FzfgP40eHjvzZ8jlKqD/y3wN8DlkTkj0Tkoesc5z8O5Z1RSn1sh0to/WbkFZEC8J+Bryml/re3+V00dzlaOWjuVk6Tr8xvZ7D5PwEfFZGj5Kv939jaoZT6vFLq4+Q399eAX34bx/8vwA+JyDWv26Er6veBBeAn3sZnaDSAVg6auxSVZ2L8Y+B/EpH/XkSqImKIyLeLyKe3XiciHuAOn7rD59c65hrwReDfA/NKqVeHx5gVkR8cxh5CoEfuZrpVfhGoAp8VkRPDYx8RkV8UkcdExCaPofjAj91sbEKj2Q2tHDR3LUqp3yZ39/wtYBFYAf4X4A92vMwnv5lDvuL3b3DY3yAPHP/Gjm0GuSJaBDaA7wD+/tuQd4M8mB0DT4tIF/gToE0edP4Q8H3Afw20hrUSPRH5yK1+lkajU1k1Go1GcxXactBoNBrNVWjloNFoNJqr0MpBo9FoNFehlYNGo9ForsIatQC3g6mpKXXy5MlRi6HRaDQHiueee66plJrebd8doRxOnjzJs88+O2oxNBqN5kAhIuevtU+7lTQajUZzFVo5aDQajeYqtHLQaDQazVVo5aDRaDSaqxiZchART0SeEZFvisjLIvLzw+2nRORpEXlDRH5LRJxRyajRaDR3K6O0HELgY0qp9wCPA98tIh8A/nfgl5RS9wGbwN8eoYwazV1DaxDx/IVNvnR6lecvbNIaRKMWSTNCRqYcVM5Wt0t7+KPIJ2htjW78LPDJEYin0dxVbCmGKMmYKDpESaYVxF3OSGMOImKKyAvAKvAF4E2gpZRKhi9ZAI6MSj6N5m5hvtmn6FgUHQsR2X483+yPWjTNiBipclBKpUqpx4GjwPuA641OvAwR+ZSIPCsiz66tre2ZjBrN3UDHjynY5mXbCrZJx49HJJFm1IxFtpJSqgX8GfBBoC4iW5XbR4FL13jPp5VSTymlnpqe3rX6W6PR3CTVgo0fp5dt8+OUasEekUSaUTPKbKVpEakPHxeAjwOvkiuJHx6+7Me4fCqXRqPZA05NlRhECYMoQSm1/fjUVGnUomlGxCgth0PAn4nIi8DXgS8opf4Q+GngH4vIG8Ak8JkRyqjR3BXUiw5PHJ/AsQw2BxGOZfDE8QnqRZ1JfrcyssZ7SqkXgSd22X6WPP6g0Wj2kVxBaGWgyRmLmINGo9FoxgutHDQajUZzFXfEPAeNRpPTGkTMN/t0/JhqwebUVEnHDTRvC205aDR3CLrKWXM70cpBo7kDaA0iPv/SMq+v9Li4MaAXJrrKWfOO0G4ljeaAs2UxtPyIqZJLlCpOL3d5cK5C2bXYHETa3aS5ZbTloNEcYHZaDL0goeVHeLaJZ5sstnz8OEUE7W7S3DLactBoDhjn1/t87c11Lmz0GYQpnmNy33QZyxDeXO3CDNQLDs1+xGTZwTTeaqQHbP+eb/Z1XYPmmmjLQaM5QJxf7/P731jAjxJMEZRSvLnaZakT0Ci53DtToTWIafZD6gWbJ45PoBS6qZ7mltGWg0ZzgPjam+vUCja1ostiO2Si5JIBp5c6TJYc6gWbJFM8MFvebn+x1VRvy2IA3VRPc2O05aDRHCDWugEVL7+pF2yTOFU0Sg6eY2KbxmUWw1bAWTfV07wdtHLQaA4Q0xWPbhAPH7uEaUqrHzFb8TjWKPLAbIVPPDJ3WSaSbqqneTtot5JGc4D4wL2T/P43FgAwDcEPYy5s+jx2dIIwSa9509dN9TS3irYcNJoDxInJEp988iiKPD215Dr89fef4CP3T5FmatTiae4gtOWg0Yw5uxWwPX58gocP1y4LMoNOT9XcPrTloNGMMdfql7TY8nV6qmZP0cpBoxlj5pv97QI2kbeK2XpBomc+a/aUUc6QPiYifyYir4jIyyLyj4bbf05ELonIC8Of7x2VjBrNKGkNIr5xYZNXFtucXu5sZykVbJOyZ+n0VM2eMsqYQwL8lFLqGyJSAZ4TkS8M9/2SUupfjVA2jWakbLmTXMvAQIjTjNPLHR6cq2IawuF6gVNTJeabfTYHEdWCzYNzOj1Vc/sY5QzpJWBp+LgrIq8CR0Ylj0YzTmy5k+6ZKnN6uYtnm7iWwdm1HkcmCtuKQAefNXvFWMQcROQk8ATw9HDTPxCRF0XkV0Rk4hrv+ZSIPCsiz66tre2TpBrN/rDY8rmw3uf1lR6mAe1BzNm1Pq8utjENGbV4mruAkSsHESkDvwP8pFKqA/w74F7gcXLL4l/v9j6l1KeVUk8ppZ6anp7eN3k1mr2mNYhYagf0w4SqZxGnigsbfRplh8ePT+Bapm65rdlzRlrnICI2uWL4daXU7wIopVZ27P9l4A9HJJ5Gs2/srGVYbgdMl102+iFhktLxYxxTWO9HPH5sQrfc1uwLI1MOIiLAZ4BXlVK/uGP7oWE8AuCHgJdGIZ9Gs1+0BhFfObNGaxATpxnzzT6zVY/7Zyp0gpj1fkij6FBwrcua7m1qy0Gzh4zScvgw8DeBb4nIC8NtPwv8qIg8DijgHPAToxFPo9kfXlxosbA5wDbzIraNfsRy28cUgw/fPwVAL4gpe2/VMOiaBs1eM8pspa8Au0XW/ni/ZdFoRsmZ1R6WYbDcDnAtk6ONIvNrPZ45v86jR6tMFB0ubQ441iihlMKPUwZRwoNzu+ZqaDS3Bd1bSaMZATtjDJc2+6gMSq6DYxk4GBydKLLY8jm90uGJ4w0++eRRNvqRrmnQ7BtaOWg0+8xWgVvRsZgoOsxVC3z5TJMHZg1s0yZOFUmW8YF7Gpycyie6Qd6RVaPZL0aeyqrR3G1c2S/pkSN1Dtdc1roh/TAhUxmzFY+JkstyO+BLp1d16qpm39HKQaPZZzp+TDJsh/Hc+Q0WWz6PHq0TxCntIMIQYaLkML/WY6rsXtaNVSsIzX6hlYNGs8+IwLcutYjTjKpn0/ZjXrzY4pHDNZ460aBSsDm90uHkVJmZqndZN9b5Zn/U4mvuErRy0GhGgEIAoR8lvLzYptmN6IUxRyaKfOjeKQ7VikTJ5S259bwGzX6iA9IazT7TDRKKtsHLiy3WuiFKwQNzZcIETi93eXCuQqNos3GFC0nXNmj2E205aDT7SGsQcXatx8WNAT0/wbNNTFPw44x60cKzTRZbPo2Si2kYel6DZmRoy0Gj2UdeXGjRCxPOrQ9YaPk4piAYdPyYE5OzOKbQ7EdMlh0+/vCsrm3QjAytHDSafeTFhTar3ZBukJDGin6cYVsZxUywTaHZD6kXHJ44nisCXdtwd7CzKLJasDk1VRr5QkC7lTSafWSpNWBxo0/BNjk2VaBSsDFESDKFYQgPzFb4xCNzI78xaPaPraLIKMnGKm1ZKweNZh/YugEstgNafopSCscyqRVsDCDLIEyybYtBc/dwZVHkuKQta7eSZqwYR/P6nbKzXcaRmkdnELM+iKhlCs8xODRRpFF2eFIrhruSjh8zccXffRxasmvloBkbruw55Mcpz1/YPPCr6Z0rw/vnqgyilKVWgAjUC/n3Olov6EykuxSRPFEhyRRl1+JwvYBpyMjTlrVbSTM2jKt5/U7p+DEF2wTg/pkK981WePBQhZJjUnYtTk2V+IHHjxxoBah5e7QGEW0/phsmOKZBlKS8uLDJWjcY+WJBWw6asWFczet3igi8eKlFkkLZNblvukLVszk+WeSJ4407wnWmeXvMN/vMVDwmSy6LLZ9emFL2bKoF+7rnxH64X7Vy0IwN1YKNH6fbM5Lh4FcFtwYRHT+mF8RUPZsoyXiz2ePoRIGP3H9YK4W7nK0FkYjw4Fx+niulrrsg2i/368jcSiJyTET+TEReEZGXReQfDbc3ROQLInJm+FuPu7rD2c7kafl861Kb1U5wx1QFzzf7TFc8Hjs6gWOZRGlGxbWo3WBlqLk72FoQ7eRGC6L9cr+OMuaQAD+llHoY+ADwP4rIw8DPAH+ilLof+JPhc80dys4c72MTRU5Nlphf73Fxc4BjGQc+GL0Vb6h4Ng/OVXnviQaPHa2j1Kgl04wDp6ZK24ugm10Q7YxhbbEXTRlHOUN6CVgaPu6KyKvAEeAHgY8OX/ZZ4IvAT49ARM0e0xpEfP6lZVp+xGTJ5XC9wEzVo+xZ24rhINMaRCy3A15b7jJZcjhcL1Dx7APvKtPcPurFvBp+vtm/6TYp++V+HYuYg4icBJ4AngZmh4oDYBmYvcZ7PgV8CuD48eN7L6TmtrJlMbT8mKmSSzQcfvPgXJWya7E5iA50zcPW95squ/TDPObw2nLMiUYJw4AH5w624tPcPnIFcfPn9ampEs9f2ARyi8GPUwZRctvPKVEjtm9FpAx8CfhflVK/KyItpVR9x/5NpdR1v/VTTz2lnn322b0WVXOLXO/mvuVKurgxIE4Vnm0SxAm2aXCsUSRMUtJMUXSsyy6Ag+Jm2vp+RceiG8QstnzWh32TdHuMO5+9XtjcruOLyHNKqad22zfSOgcRsYHfAX5dKfW7w80rInJouP8QsDoq+TRvn52xBMsQXr7U5tf+4hxffn11O4OnYJscrhcI4pQgTnFMg/V+yCBKAA50zcNOv/BWvOGD90wxV/O0YrjD2Y9eSfWiw6mpEtWCTcePmW/2b3svppG5lUREgM8AryqlfnHHrs8BPwb8wvD3H4xAPM07ZCujIs0Ur690yZTCj1L+5NUVXl/pUivYXNwYkGQK04A4TekE2XZH0m9ebG3fXLdW3t0gJoMD4V66E9Ny71ZudZW+M5sI2P493+zfkvvoRjLtdTrrKC2HDwN/E/iYiLww/PlecqXwcRE5A/yV4XPNAWNr5bzY8smUYrkTYhiCY5pEScZfvNFktRvimAaWIQyihCN1b9vlsnVz7QYxp5c7tP2Y1U7I+Waf337uIufXx9uCeDtZKJrx40ZWwNb+L51e3d6+H9lE+5HOOspspa8Aco3d37WfsmhuP1s3916Y0PETXDO/WEquSRhnmIbgRwlnmz1AmKk621WhrUFEN4h54UKLfphSdk2avQgE7p+tkKYZX3hlhR9+71GAsQxav50sFM34cT0r4NQUu67eTUP23Grcj24CY5GtpLnz2MqosAxhteMTpYp+lHJissRaLyBOUuIMHjtSI0wy/DihGySXmcvvPTHB519eZn69y5F6kXunK5RcC6UUa72AFxda20HrcWzUd6tZKJrx43o34WspjjBJt+Nme5VNtB9uS914T7MnbK2cXdvg1eUuFzYHFCwDP0pYWB+glLDZj/jy62s8fXads6s9VjvBZbGKpXaAYxmIAscUSu5bF1+j6PDGavdAB60148/1Kpiv5T5SCp44PoFjGWwOoj0p5twPt6W2HDS3jZ2Bu36UML/W4+vzGzRKNojgpxnpIKLimpxr9pmtuEyUHQZhymubfVa7eabSfTMVFlsBnm1yYrLE4uaA0ys9jjZKWIYQxCnHGyU6YbLrxXnQG/VpRsNugefr1RTMN/vXXL3fjNV45ec1Sg4b/eimXKT74bYceZ3D7UDXOYyene6g1iDi976xwPmNAXGSUvJsCpbJqekSzV7I6ysdwgQaJZuya2EZBhXPwjTAMS26QcSJyRL3zFQoORaXNge8fKnFdNXj0SM1GiUXwwDTEFzLvOziHETJHVFdrdlfdp6/V9bVwO5xreu9Z7eb9E5lIAJtP2am4lGwTda6IS9davHIkTrTFXff6nquV+egLQfNbWGn//V3nrvAm6tdOmFKphRZBh0jIUgypisuBgaOZIjARj8mTjNMA2zT4P6ZCiKw3s2zmw7VCpRck08+eZSFls9M1du+QIF9qRTV3PlcP/10Ylcr4FZW71emnr640KIbJkyWXESEzUFErWCzOYiYqXp7kv56q2jloLktbAXuukHMcxc2iVOFgSJKFO0sQYy8XqHkmpSLNmXHpDWIWesGVDwbxxIcU1jrhpycLNIPU5IMWoOYD947iWkIM1XvMougNYgwDeGlxTaC4r6ZytgEozUHi8WWzyBM6Efp9jS2rTYuO9nN9XQzVuqVyifJFDXPZrHl8+CcTS9MqXg23TDZfs+oXaQ6IK25LVQLNmvdkL98s0lnENMPEsQwcWwDxzboBzH9IGZzEPHAdJmJokucZBQcE9c0CBNFpeBS9WwWNn3iVFGwDAqOgTmsg9gZbNtaibmWybedaPDuw3XS7OC7SDX7T2sQsdT26YcJVc8mHvb5WuuGl2X/vJPK5yuD12XXAhS9MB0+N+kG8XB7zqiLJrVy0NwWGiWHly612OyHFGyLOMvohwlKgR+lZArKns2JRpEwyZirepimUDBNUqWoF2xqrskgTuhHCU+erBOnKRc2BoRJepVFcKeOFNXsP/PNPqcmyyiEMMlwLRMB5tf7ly1I3sk5d2XW0+F6gU4QY5n5cJ+JokN7aH2PS9GkditpbpndTOvz630KrklnLcXYXiApukE8rIwWJosOBdtiEMY0+wETJRenKsxVPYq2yWvLXZRSnJgqU/VsHNPgeKNExbt6MM6dOlJUs/90/JjpikvBySv6O0GS19OwFYhuUS3kLqBjE8XL3luwTS5uDraPc60so1NTJb5yZo3WII+x2abBRNHlUN1jcxBhW8IDc1XObfQ5v9EbCxepVg6aW+L8ep8vvLJMmoFn5Sut/+/lZVY6Iacmi0wULaJEkWQZBkKSKQqWUPUcDtULFB2TLFMstgMmCja9MEap/PVRlhElGa4pxGl2WfvuK9G9izS3i61zKW+QmJ8/q52A+fXetgvJj1OW2j6eZTJT9bbfu9YNWWr7TJXdXQsxtxZSiy2f+eYA1zJwTAMEiq7JY0fzBtTPX9ikUXI4Ui9sJ1aMGq0cNDdNaxDxhVdWsERwHYNXFtu0/ZgoSen6+cWTqYxuGDGIARQGIEMl0eqHnJwqgQFPHK9TK9i8vtJluRuSZVB0TI5PFHlwrkqa5Z95rRv+fvW019z57HYuza/nrqad2UunJsu8stRmqe1vr/43BxEPH6rdsL3GIEyouCYKeGCuQsWzGUTJtktqrxv1vR20ctBs0xpEvLjQ4o3VLgrh/pkyjx2t0/ZjvvbmOi8sbNLqxzx+vM5GJ2C9F9GLYhY3fPpJih8mpKki2lFQmgGdIGUQpSSJwjA26UUZ902XCeOUmbJHlCjmqi73zFQ4s9Kl2Qs5NlHkbLPHkXph1xu+7l2keSdcea4fqnmYwwLLasGm6lls9EMubvqU3by1fJJlnG32qbh5w8iZqscgSvHsy0O3u7XX6EcZ1YJDmKTbGUo73aDj6CLVyuEu41rth1uDiD8/s8bCpk9tuKr5wisr/MELl2h2Q6arHhu9kEubPi9c3ESpvAgNoB/FoIRBpBgu+BFgK3dIDf8J4oTldshk2aE7DFaXPAtDYL0f8ahjcf9MmXPrfcIkJYPr+l117yLN22HnuW4bwnov4PRSh+ONIt//+BFqBZvnzm9iCcMbesYLFzc5t95nsmjz8OE6YZIRxCkTRZv59T7vOfrWebjWDWn2Qr610GK26nFkokjZNbeD3Z0g78660yoeRxepVg53EVupeFkGG/2Q15Y7PHd+k/efavDsuQ2emd8gyTJs06QXJGwOQs42exiAa+fdVFOlMAwhijJMEwwBpQwU6bZigFwh7FQQtgVFz8Y0IVXw4kKL440iWaZwLYMgyc0N0xAemqtyrFHEsQxtCWhuCzsXRcvtgLYf45gGy50A1zSZLrtsDmK+8MoKD8yWmS67vLiwSboxoObZrPfyG/6jR+qICJ5tMogS1roBzaV8hX9qskQQZ9uVzoZAP0w4vdzhSL3IpZZPGOfB7q1spC2reBxdpFo53EXMN/tkGVzY6OPZJtNlj+WOz6985SyZgiBKafZDmv2IME4ZhClxqrAM6EUJCnAMIFXECuJhzKxoZ8MYw+VsKQYTMMSgOsztjpM8WF12bebXexQdi3rBpj0IyZRiZrI8FheH5s7gyurk15Y7nF/vU3ZtXNPEsQwUQpRm9MKEz7+0CMrAtQ1cU2j7MQstH0PgzbUe9YJN0bW4uDFgrR0wWXW5uO5zdrUHIlQ9a1jx7LDWC1nvRyxsDpitekRJxnTVw7GMy9yg4+gi1crhDmI3lxGw7Vs9s9rDFAiijNVeyCBMSdIUP1G4Jmz0I+IMOkFMFOcuIgXbwWGAaPhYyItkUqB/gxkmCnAtk3rJwRQI44x60cEQOFQrkGWK9xybQCkoexaNsjM2cxk0B58rpxKudUN6fkKzG/Luw3m20Fo3ZH6tjx8lRGnGuw9XKRhmPqRKhJWOj4gQJQrXEnpRgiEwUfR411yVMMl4balNrMAS+OJrq/TjhKpr0Sg5RGlG0bU4VLf58H1TV53b4+gi1crhDmG3sYFfObNGL0xYagdEcUazE/LyUps0g5JrEUQZgyghTVNc26QbJmQKsiy/6V8PE7jZZDsFOCasdgNOTpZ4YLaCOzSfXctAROiGCYLiUN27rmLY68HtmjuPjh9jGcLrK73tTr+9IObNZh9D2vTClHPrPSzTYK7qkaF4ZanDZMXFFuFss08U50kVCsExhI4f4dgmHzw1Tcm1afZ6eJbB2eUOQehR8Ww6YcRqJ6TomDx0uMZ7jk5sZyiNmyLYjZEqBxH5FeD7gFWl1CPDbT8H/F1gbfiyn1VK/fFoJDw47NY4rDWIObPSpRMktPyIhY0BG73cP9rxI5SCKM2tgG6cXBYjuBG3koVtAn6sqBRMDMCPM8qeTcW1eWFhk41+xBPH6hydKPLyYj4S9CP3T19109+Pubmag8u1Fg7Vgs3Li208O6/GX++FRKnCNuDi5oBumLetUApQYBsGfhRzdq1PnKZEUYbjGBRdizRVOE6ekjpTdUmHF8wgyujHGYZhYJn5gsfAQElGO3hrqTUOWUg3y6gth18F/i3wa1ds/yWl1L/af3EOLluro9PLHdZ6IRu9kG9c2OT15Q5xorAdgyzNCK5jEuxVZyJDQEneefXisLNqFKd8fb6JQjhS8+iFCSvdkLmqR9uPd11d7cfgds3B5Px6n8+9cIm1bohtCrM1j0ubA779/mlOTZX489dXKToWy50AA0hSxaNHJ1hoDXD7JtWCTTeMQQTDyFu/h3FGwTaIDUjSjJJn5UkSBQcFxImiHeRFnJYBm72IyZLDsUaR1iAiUQrPFqbLDluTEa6XhTRuVvFIlYNS6ssicnKUMtwpiMCLl9o4psH8Wo+XFzucXeviD5f4QZBd/wB7iGlCEitMhImCw8WNAQh0gxTbEgqOhR9lKBWx1g6YquTVpld2u9QtMzS70RpEfO6FSyy1g+H5oVjc9Fnvxqx2A+6drmCaBl+bX6fjx7h23uxxuuJQtC3SQoZC4Vkmy52AuZqLgWAYBmIamElGohR+nGEZGb0oZqrsIAJKZbyy2KYXJmQoKsPU7MmSh20axKnCNoWSY16VoXTldxg3q3jUlsO1+Aci8t8BzwI/pZTavPIFIvIp4FMAx48f32fxxpMgTnn+/CavLnVo9sNtxTByFNi2SaJgruqw1Ako2CbHGgWWuxHnNwY4psGReoEwUyiBpXZAaxBddmHolhma3Zhv9mn2QiYKDq6VN/Zq+wmvLWxQWrMxRbiw3ufN1R5TJQdbYLMf0Y9SSo7BajdCEKoFC9cUNnoRSvJzFREsAT/JSLOMth9RK1o8MFMlURkF2yRV4NkmBcfgzbU+vSDhxFSJE40inTDBMoSia12VoXTldxg3q3gclcO/A/45uZfjnwP/GvhbV75IKfVp4NOQT4LbTwHHjbzas83Z1R4vLbbpBTFBPD7/JY5lMlV2qRUsDENwLQNEcEyTkm3QGsQ0Sg5xlmdINUoOpyZLV10YumWGZjc6foxt5P2KAPwk5c21Lu1+jAKeObfB+XUfxzTYGCT5eZYpwjQjiPKbvyGw3A4oOSYVz+LRozVsw+Dcho8IiJ9QcCwypThUL1AtWhypF4nTjG8utEgzRc1zePyow3ovoOxaiAHvPTHBY0frN1z9j6NVPHbKQSm1svVYRH4Z+MMRijN2bJX9PzO/yevLbdpBjB+m9MKEIEpZ70ek7F384FYoWCAKXFrz/aEAACAASURBVMfgaKOAZcAgSjk1VWax5fPmahfHzi+iXphQjRIePz7Be47Wd224p1tmaHZDBOI0Y369z0TRxo8ymt0IxxIO14ssbg7Y7Ifb6dMGQiuIhj2/YLrsEClFwTawTOF4o0ij5NH1Y+6ZKtIexNhTBlGiODlVYqJk8d88eYyvvtHkhYubWCJUh4OuFjYHDKIU1zF47OjsTSkGGE+reOyUg4gcUkotDZ/+EPDSKOUZF7aUwl++uc5iO2BhIw9crfZCgiAlHAdtcAWGGBQ9A0GoFWwemquw3A5Y7YYAPH6iAUpxdr1Plim++92HuG+2QjeIefFSizDJrgrMjWM+uGZ0tAYRbT+mVsz7FvlRxumVzvbkwLlqgXNrAzzHZBClVFwL0zBQQC+K8SyLOFP4YUymFL0oZaUT4JgGjbJDnCgOTxSZLueDqFZ7AWGSMd/ss9LxCRNFreIQJBlLrYCNfjTsPCzXzby7knG0ikedyvqbwEeBKRFZAP4Z8FEReZx88XsO+ImRCTgirsxa8KOE//zNRc6sdOkHCZ0goRMmxGlGkIyhVgBsAcsUVAZzdZcH5iqkmeLEVJFemDBbcSm4Fmu9kKpnkWWKFy5uMlN1efFSPvbz0SP17WlbOl1VcyWtQcTnX1qm5ecB4qJj0uxF1Fs+jaLNbK2AKULBEXqR0A0jDtc9CrZJNzTpBgmTJZuVTsAwuowIvLHao1FyeHKygWcbLLZ8XriwyWInYKrs8F0PzRIlGWvdEFRGP0jpBCG9MMaxTBzTolZwqBeca2beXck4WsWjzlb60V02f2bfBRkTtqyDFy608ByDXpDwwsVNXr7UwTby7Im2H9Efo3jCtUgVIArbNFjuBvzpqys8ObzBd4OEkmMy3+xTdi0emK0SxilvrvV5/mKLesHmnukyFe8tk1qnq2p2spXd0/IjpkouUapwLfjYQzMcm/B4ebHDyakSHT+i7Fr0whSvWsg7BMQZlmnkSsLPK6I922QQZxiS9/d6dn6Tp89uMFNxcSyDsmtRLdoYIry51uPxYxNMFF02+zHn13ts+BGWCBMlF9sUpisurmXQ8VM6/g1aCAwZN6t47NxKdxs7h4EstQOyTFFyTJ6/sMlrqz3CKKUXJETZeMQRbhbLgCDMUEooOyabg5hnzq4zCBPWeyHtQcSjR+tUC/nFkKbw0KEKBScfgCIi28cadWDuIDNuufO3i63snsmSO7y557eyN1a7hIkizhSr3YBaweapk5PMr3Vp+QlxmuJZNnGWMlOt8MZqF4AoybANIUoyDKCbpAiK1iBisuyx6SecnC5Tdix6QcIbq13iJB9/+22nGry82OZ8c0CUpDx+fDLvQBCnWJbcUtxgnP5eWjmMkK3VT8dP+J1nL/LKcoeOH2/3LzrIZMPv4JhCrWgTxopmP+bcxoCH5sp89c0N6ps+p0why4ReGPMdD05zqTUYu8DcQWUcc+dvF1vZPYfrBZ6/uEkvHNAbxCx2fB45Uucj903xzYUWry11ma7kVdJztSKrnYBOmFBxLSbLLu1BTMlOuNQKSFWGKQbhsJmYbRkMIkWD3N10fr3P48cm6AUxFzYGHK0XeORIlaJjcf9sFds0EYGyY+JHCe0g5uhE4abnQI/b30srhxGSrxASfvu5izxzbp3wRg2Nxhwhb5VhmrkLt2AZKBEUQkZG0TFpBwn1kse9MyUcS5hvDnhgtsxTJ2eoFW0Kw2IhGJ/A3EFlHHPnbxfVgs1aN2ShNWB+rU8QZax0BhiGcG6tz+vLXZY7AVGcstoOmKt7vPuIxXc8OMMz59bpBQa9KOUD90zxrUstLrYG+TAqKyPOFI5pIECYJax2QmarLl0/oR/EWIZBP0rIgAdmKsPxovCeozWev9jCTzIExbsPV3fNVrqWdTBufy+tHPaZ8+t9/u8/PcOfvrZCx08Qybuejmlc+TIMwDRyeXcaNxZv9VpyLWGi7NILYhxLSJUiiPLBPp4riORpq992chLHFOIMPnjP5LYS2KqKHqfA3EFlHHPnbxeNksOXT6/SCROqnkUvCIhTeNdMiddXeyy3Akpe3iJ+YxCTiaIfJVxcH7DhR/T8CNMwMMjnoB+qFmn7EWmmUGmGYQggFG2TTClWuiE1z+KZ+Q3qJZtHjtQ40ShdFhezTIMP3zd1VWX/Tq5nHYzb30srh33k/Hqff/FHr/DVM2u5X/QAKIQtzJ2Phx36bAssMchQuXZTYFkGh+seg9BmsT3AsyymKi6DKMUPFffMusxUXR47WsePUpq9kIubA3pBQtmzhrN3S9e9wDQ3xzjmzt8uNvoRjxyp85dn11ls+4RJgmvnnVeDJCXOMvwowXMsDPICt4sbfVbaIfWixSBMMc2MfhgxCBIePlxFRHh1sU2zGxCmCsvMx3f6UcLmIGa67PK+Uw3qRYdOENPsBZQ965Ys3OtZB+P299LKYY/ZaUI+Pb/BNxfaxFmuGG6lC+qo2ZrtQAZFRxAMFBmGkWcmWbZgSB5fiBPFVMWhUXIoeyZFx6Yf5bMjnjrZ4N2HaphG3uDsA/dOcnatx1TZ3b7I7hS/+KjZyp3vBQkb/ZCNQb5a/vjDs6MW7ZrcbEC248dMV1yONwqca/aYKntkSvHipTZRnBIlGUmm6IYpWZrhJ3km0mrXJ81cqgWbkmex0omol2zSTPGBeycRFC8vQXcQgwFJBpZp8p7jJd41V+ddh6oAFAch/SjBsYyrLNzrfYfrWQfvOVYfq1oH48Yv0bxdtkzIKMmYKDrDLJ1wO7ZwUBTD1mCfrd8KwbJys1spoeY5zNWL1EousxWPomfiWhbTFZeHD9d51+EqP/q+Y/zD73qAmufw/IVNzjX73DNdHhYN5SspEdl+PN/sj/Q73wnUiw73TJeZX++xMYhpFPO2JGfXerTG0LV05fWyVeOym6xbq2wAxzJIMoUhBrNVD0OEIEnx44Q4TsAApfI4WDZclLm2SdEy8VyTB2Yq9MMEU4QnTzQ4Ui8wV/P4nkcO84mH56h6Np5lYshbV6xpCG+s9nadxX6977BT7i22rIOtWoctheNYhm68dyexMzX15cUOWZZ3ZRSE883+9mjNg4QlbPetVwKmKVS8PFVvEKa4lknZsTjRyCdeQd6t8thklf/q/mn8OGW1G9DxY05OlXjXoSp+nHJ2rccgSjk2Ubzs8+4Uv/g4sNGPePRI/TJXxbgOnLmVgOyWVeTHKQ/MVHj63AZBlNIo2bi2Sdm1iZKUKM1IE4VlCp5l5nEwwBQhRShZFkGSMVt1udQaDAvb4FDdI1N5IeeReoFOGLHSCciUYIhirRsyVXavihvc6DucmirxlTNrtAYxcZphmwb1os233z8NjFetg1YOt5Hz632+8MoKCxt9Xl1sc7bZpxPk09XiA5yeGiuwTTCGq6+KYzNd9ri42Wem6lEvOhybKG4PTt8YRBxrlDhaL2xbA20/BgUnJsvAWxfNaiccKz/rnca4BTmvx41kvdJdM1V2+fMzTd5Y6TJZcrArwhtrPTb6IRNFm24Adpa3504yRaYyagWb1iAiSFJMgUatgGMKpm3T8WPKrolUPabKLmXPotkLsSxhdS1ksx+x3o1Y6wWICH/t/Se2z29gW7atuSq9MKHsWhyqeQQ7rAUFICD5P2PrQdDK4R3QGkT8xZtNvnqmyWLLp+3HeLbJ66sdekFCcACthN0wAFQ+OrTqWRxrFJipeRQcg0M1j5VORJym9COIk5Qwzldwh+uF7WMkiUJdcRkUbJOyZ+nU1T1k3IKc1+N6sl6Z5bPWDfn6uXUGYZ4VF0QJ852QMM7IlKLlx0RJviJLkhQQpsoOhiE0Kh4TBZtKweZoo8hc1eHMah/TEMquTaZgqe1T8E3efbiGIXBpM2+zYQ8nvdWLNq8td7Yr+beUmAh861KLWsGh6tmEScq3LrV4+HANyBXITMXj5HCRBONryd1QOYhIFZhWSr15xfbHlFIv7plkY8yWUvjjF5c4vdylHyX0gphOeIDNg+tg5IEGTIEkU7iWQcUxeei+aVSmqBXylVh7kFDxLGZrLg/N1S5P87Mk90ntwI9TDtfzIiGduro3jGNDt2uxm6xr3QDDED73zUukqeLemTL3z1RYaA3oBAndMOPemQp/+UaT9V6IAlzLpBfEJFlGnOWZdpmC5iCkUXR56uQER+pFyp7N+081+PWnz1NxTMqFvLPqcttnsR3gWSYPzlW51PKxLYNHj9SpeDYiivYg4myzx5++tsJDc1Umig6Ncv5+RR6Py5Hh85yDZMldVzmIyI8A/wZYFREb+HGl1NeHu38VeHJvxRs/WoOIPz+zxjPzG7yy1OFsczBqkfYME3BMQISSZ2EKZErhWCYTJZfDtTxT5AP3TDFdcbdvPPdMl4fxhGT7Iq8VbAQu27Z1kxonP+tB4mYye8axodu1uFJWEeiHCZuDCJUpyq7Fq0sdzqz0OL/exxDoRykF28BPFLZh0I8TMmVgWgZhmJGkbKfd+GHGSuzz/HnBjzM+dM8UT8+vo5TCsS2COKPZi/BsC9cyMAReW2qTZFB2LKpeHp+ol2zOrPQwDUEU9IKYS5sDPvnkUTp+zGNHaiy1AzpBQtk1eexIjSTLreZ8YmOLJIWya3K4XsA0bq3Fxn5xI8vhZ4H3KqWWROR9wH8QkX+ilPo9QG7w3juKrQvxGxc2We0EvL58ZysGASwz94cWbZNjE0WKjkmawb2zZdp+TBCnfPLJo2z0o6tuPLWCfdkN6SPDgNtBuEkdBG6l1cJBUr47ZX3+wiYX0gG1goMfKXpRQs9PSFXGRj+kaJv0ooTnL2yy1PHzgT8K4jQhTHLFIORFm5YxzFQSoR1EWIbBm2s9bNPI23wvd0gzRdWzsW2DTCkeOVzj/tkKZ9d6XGoFdMOUsmvS9WOqBYuibaEEyp7NsUaJjX5+XkdJxoNz1e3vNIgSiq5BaxDR8WN6QUzVy1/3zYUWRycK29fHOHEj5WBuzVZQSj0jIt8J/KGIHGN84yi3nS1roe3HnF3tstIJ+dal1qjFuu0Y5IFn0xDUcCJ6veQyVXKoehaDOOXdh2rcP12h7UfM1TxOTJY4MXl175hr3ZAOyk1q3Bm3VgtvlxvVBMRpRtFxmK64nDvXIyOfm+CHGa1+TMExIAPbMOgEKYZAxTWGKdd5fY7JW3U6mQLDMFnY6FOwDbphgmcZ1AoFXl3usNYN8SyTasmm5FooBROlPFZxZrWLYwlL7VwR1es27zs5yaF6AaXUDWsV5pt9pisejZLLYsunN+zxVBumsY4bN1IOXRG5dyveMLQgPgr8PvDuvRZuXHhxocXCpk+94DBVdnl9ucfg5rrwjj0C1DwTBCYKDr0o4YGZMkmqWO6G2AYkqaLlR9Q8F9c22RyEuJY5lqbw3cJB8l1fi+tZP5BXNZ9r9im5IYfrRTzbZK0XEsQZ1YJFPxbiJKMXJUyVHZIkIAPiVJFm+WInHf5kWR4zS5XCkjxgnWYqVwxFh4mCw7n1ft7mxTZ58vgEhgi9KMa1TT58pMZ9M2W+cX6TetFmtupxbKLEpZZP2bO2XUPXc+N1/BYTRQcR4cG5/NrZUirjyI2Uw9/nCveRUqorIt8N/MieSbXPXGv1sjVf4d9/ZZ4wSbFNk41+xJnVzqhFvm2UHMG182ltpiGYInTDBNs0eOJonUP1Ai8stKh4FsfqBbIs47XlDk+daNx0t8m7kb1uvXyQspCuxbWsnxeHM5kLjkmSZbyy2Ga+2SfJUgqWwcmpEkqpfJDOWo9eGBPEGcqACdfGskxag4goTUmHGYNmPstnO49Ukd+YXcug7Fh87ew6/TjBNYTZmsfhWpGOH5EoxV998ij1Yl68ebxRIs0Up5c7eLaJUnC22eNIvbAd5L+W1XzQ/mY3Ug59YBZ444rt7wO+ticS7TNbq5csg4XNPi9cbLOw0adcsEAJmcqYbw6I05SNfkyUHnx/2na1swGTZZe65xCkKX6YUinYnJgsUXZt3nWoQsE2cR2TiaLNxY0BCrh/tsKhemEsTeFxYD9aL+93FtJeKLvdrJ8kzfji6RWqBZduEHOoVqTsWpxfH7DcDnlwrsLJyTIvXWqz3Alo+TEikKQpWQbracTxRpF6ycGSvAiwH6V58VuqsC2DOFMcLtqcXx8QphlFZ4BnGdxbK7MxCOkFESvdgKmSQ9G1rmp9ka/8qyy2fLpBTAY39bc9SJljcGPl8G+Af7LL9s5w3/e/kw8XkV8Bvg9YVUo9MtzWAH4LOEk+JvRHlFKb7+RzrsXWmMH5Zo/Xl7ssdQLa/WHBzVJudm4Fte6QkgUgjyuUHBMFNMouaZrhmQaGKxypu2RKbcccNgYxR2oeDx2q8eTxBjDepvA4sB/xgP3MQtorZXflSjqfHd4mTSFLM0yg7cecmCrz4FyNby5scmSiQKPocmGjTy+MyADXNLBNoRekRBksdwKO1Qts+hGWAYcqLgohVhkF22KqbKMAzzLzFhtJRsePUECcZJiuxSBMaMxUaJSdXeXN23TbDIb9lW7m/+EgZY7BjZXDrFLqW1duVEp9S0RO3obP/1Xg3wK/tmPbzwB/opT6BRH5meHzn74Nn3UZrUHEV86s8eUzqzx3boNWPx+yY5AHr+60igXHANeComNzqOYxWysA+RjP9V7MTNWl4Ji0BjG2GFQ9Cz/OMA1olNzLjjXOpvA48E7jATe7St+vLKS9UnY7V9JJmvHlM2ts9kNqBYdmP2K26hEnimY3YLZa4FC1wPxaHzUlVD0b0zCYKAhRBn6cYFtgZBAmGRt+TMm2KFUskjQvvzw+UaJaMDmz2mO64tELEjKVt+wWEc6v97l3pkwYJbx0qcVqN+RvfODErvK+3ZX/Qcocu5FyqF9nX+E6+24KpdSXd1EyPwh8dPj4s8AX2QPl8OJCi6++0eQv3lynPUi2lcGdpBSKFriWQZgqbNPkxGSBx4/WCNPcNfTxh2c51+yz2glIsjwQ148S1joByx2fe2cq211Td6tP0OzOO/Etv51V+l7HN/Yq+L21kt6amx5EKY8eqROlGU/Pb2AZQqPk0BokOFYeiJ6rFej6MfPrPYI4HyBlZBkgxKnK4woCBcekH6aEqeJYo0icJJxdz2sT0jTjRMNAsAjTlChVOIaB4dn4UUaqFMerRU5MFnl6fp1jjSL1onPgVv7vlBsph2dF5O8qpX5550YR+TvAc3sk0+xW+iywTB7zuAoR+RTwKYDjx4/f8od8+fUmX3xtNV89vF1Jx4ytYTy2AXO1AmXPzi+EyRKmYSACRxol6gWHTzwyR73osNGPSFLFhY28ZqNo5/GFSsHefs2VNQt38gVxO3gnrbJvdZW+H/GNvQyk1osOFc/m/fdMcnFjQJwqyp7DY0fqnF7pkmUZ9ZKLZQrhIKUfJaSZwrVMTBGavQhnmLeaZMP6HIHOICJVUDSEjV7eXnumWsAyYGHD57kLLSbKdl4bkSlW+yHTFY+Kl3cTfnCuSnGYHbXz//4grfzfKTdSDj8J/J6I/HXeUgZPAQ7wQ3spGIBSSonIrvFfpdSngU8DPPXUU7cUI24NIp47t5GP+rsDNINJHkdQQK2Yn/CZyofvFByLIEkp2rl76IHZymU3jlNTJVqDPIi30Q9Z64WYBnz84bnt19xNF8TtYKtV9hdeWSbNoFF0aJRczq71tnPar7Xav9VV+n7EN/Y6kLpzHvTp5S4Ah2oeiVLbjevmm3lWkmkY9KKYQZBybKLAmbUecaoum7tuGhClGYaYZJlCRLb7HC32QoqWSZxlrHcjDMnbbaRphmubHG8UOD5ZpuTkXYcbxbwh393IdZWDUmoF+NCw+O2R4eY/Ukr96R7KtCIih4Y1FYeA1dv9AfmsgAxDDNI7wG5w7bwdcZIpap7NRMEhSDMapfzmMIjyJdWTU8WrVpQ7TWXLFO6brdx2t8TdyPVaZZ+a4pqr/Vtdpe9HvcNeu1O2vnMe5K2w2PJp9iMOVb1t6/W3nrnAUjsgSjIcyyJWMaYhFG2L2EjJwnyYj2VCNnQxFR1FmGb4SUqjYLPej0lSRS9L8WwDlWUYhkGUZDx0qIYCLjQHCDBTLWCIcLxR3G78t5euu3HkRr2VPODvAfcB3wI+o5Ta68SdzwE/BvzC8Pcf3O4P6Pgxs1WPxXYAwe0++v4ggGflF26UpKRK4dnC/bMVgjilBKAUnSBhuuLxnQ9O84lHDo00sHk3cb2b9m6r/V6Q8PmXljEMeHmxTb3gcqSeV9MaBtdcpe9X7vxeniM7LZOya3GsUWSy7Fy2kCl7Fq5psNjzKToWrUFEz0+Is5QUsKzhZEXJJ/vYlkmYZrhiUrBMbNMgjDNKjoEf53MUbNNgqmTT8hMaJQfXFDb9hNdXevTClPedmsQw8nnV1yvWu1OVxo3cSp8FYuDPge8B3kXuarotiMhvkgefp0RkAfhn5ErhP4rI3wbOswfFdtWCzcOH67yy3EWID0zdgkl+EVRdkxOTJZIM0izDjzJE4JEjdRolh4nhjNsL6z0mig4/8PhhPnTv1B1z0h4ErnfTvlJxdIOY8xv57I+qazJT8Wh2Q0DRDhI+/vDsNf92By13fjduxjI5XC/Qnqnw+kqPN1Z7hIkiyTJc0yRJMyIFaQoieYadyjIsw6BedjhU91ja9Cl7Jp5tAAlVz8G181bfUxWXuVqBOM14+OgEl1oD+kFCEKd8x4PTNyzW+//Ze7MYybLzzu937jl3ixtr7pmVtXZ1VS9ks0m1JEqUqJVDGzMYacZ+8MAYAzZgzsu8+c1+MbwAhmHYMAwPMJLnxYYMY2yMNLIlj0TN0FwktsQme2F3sbv2JffM2CPufu/xw42MyqqupbvWrKr7AxKVWRkReTMj4nznfMv//zjrPU+T+wWH17TWXwQQQvwz4G8e5Q/XWv+Du3zrtx7lz7mdk3Mea12fI02X9ihk/Ay07NsG1ByTiqOwDcGZxTr+JCh8cbXOz5+YZW8UkefQGUeYymChbvON15buqH1U8ni5vU3zo40Bl/dGrLYqeJbk2IzHQt0BYKMXFFIPmca1FC1P0arYmFJwdKZCZxzf9Tm808K61KhOdrM96q7JjFc0Hhzm3e29TiY9P+bSzoh/9dEmqdZ0xhFhkiE0eI5Z6CcJyAXYSiCMQtTBsyRzXlHjWaw59MYJn+wMqDkmR2dsDENyead4TtCaiiUBsAyDQV7IcsDdT4EfbvT5wkrjmde3uhv3Cw7TSozWOhXi+RBibVYsfvXlea53fNZ7IXIUMYgPb+1BAo5VHLfROf0w5Wp7zG+/tshvvXpz8d/Pi5a1gyfH3XLRB9s0f3ipzShKOT1fpWIptochO1fbvHVilvmaTXscYxpQsSW2KhYoWxkMwvSe9YPbf/aXjhad57eb4nzvkx2+cKQ5lVX//oVdGq6J1hzaYAE3fVO+fW6byzsjhCHojWP8OMMQAs+WGFKQRBplGBhGTsVSGBQNGXXX5OXFGuM4ZxylRFnG6oyL0IKrnQBXSeaqNkGU0hFwaq7Ktb0xAk3dscgyzf/14zWiJKXhWlNjHyhOgQKNa8pbrvlZ07e6F/cLDl8SQuwLCQnAnXwtKJqJ6ne/6+GmWbH493/xOBs9n3NrA87vDBknTy7BJCm6i/Y/BLfKckiKros0B8eCpqdI0pzdccjZxTq/+eoCry43bumAKWsHT479hev753cxpUGrYtLzE4ZhwhdXm/zmq4scn/WoOSZHJpr9jlm83ZbqLsMwKSwopaA5sbzs+jFRmuGYiijNqdryrvWDu7WwSkPckgLp+jEN16TrxyzUHbJcs9YN6PsJb6w2D20qZOqbcrVDGKVESeEHHWU5ddciTHIsU1KxTIZ+itY5yigk5ZUCWwr8uLjP7iCgMekQm6vaNCsmDdeiF0TUHEUniOkGCQaCilXMBdUrijTLqUiJaSuGUcoHa12+eKSJkgZ+nHJ6ofZMaSV9Xu7XrSTv9f1nnWbF4puvL7NYc8nR/GxrSJzd/34PiwRaFYVtSrJcEyYpVafYyXX9GLRmpmoXqpBhgmEITGFgKcmp+RrHZiucWaw/d8fYZ4XpwnW5Q9U2CZKU757fZcazWG64vHuty/trPb75+jK51gzChCjJJwuJZLZqY0mDpYbDr51dmHqPj6KUQVAsYI4pWah5d60f3C0P/s7VNgs1h3FcBJedYcRizWYYFSmSjV6AZQiutsekEwOdVsU6dK+hK3tj+kGCxMCPc2qOouunJGmKZxtkGXTHCeMoI81yhAErDYcgyRmHMYMgw7VNLu6MMA0wBHz5+AyDIJlIbxu4lkJKwa++NMf1js+5jQEvLVZpuibdcUTqFPM+WQ5fWq1zeW/Ex9tDvnKsNX1OnvV6z7144T2k31htkuWa11cafOfjLf7v9zfpR483QlQdg4WmiwHMV21aFZOVpocpBWudMX99tYs0ionlU/MeGoEQxQv8pTmPmaozPd4+T8fYw8bdUkbThUsaVG3F1fYYxywUe7cHIS3P4uSsx3vXe9QcyY2uT8Mx8RyTJM25uD3kSKtokdwPDHvDkL1RhB/nbA9Cfv7EDFGWsdUJ+Gi9z3zN4asvzU5TiHcTrbvRDfAsRd21iNKc9igCraf1jettnws7A6Rh4E26pM5t9nEnp5rDkmLa6AVc3R3T9UO6YUzVksjJVjWIi+480zRouiZ5rknzDFsZdEYRaV68V0xDsDOIqDmSOA14eaGOrSTXOmOCOOPYTIUw1eyOYl5ZrpNojSUNTs1XubJbOM1d3B7y0kKRTnrjSJOuH0+7lIDnemL6hQ8OBwt6v3R6nkGYcm5jQNePCeKUMH10khoGxfTmSrPC8RmX5YZD3bFwLcmlnTHDKMU1DX7xVIuKqTCVgSUNVloVpICNXsisZ1I94M38PB1jDxMH0zbKEPzoSpt//qPrHGm5gMBA0HAUSVZIRydpxjhKcUyFpSSDMGEYpYSJxWYvsmoZogAAIABJREFUZOikLDc0jlmkK6K0mEP59rkt4iRnFGWkqSbPM+ZqDtc7Plv9kKW6w3LDZXsY8k++c5HXVmo4SrE7imhWTE7N3cyDf7QxADTfvbBLnBaeB1XLpDOOOLtUZxDEnN8ZkmaaxYbN5b0RG92QmarJidkKcZo/lhTT550R6Pkxm/0A0MxWHTb7IZ1xgmdJRtKg48e4tqRmSnKtC7tOIbm8OybLc6qOxLVcGq5JlKTECURpwjBMGUUpFaXwwwyBoGoVdZ71fkDNUgzCFBC4lkEQ61sMC+70XnueU7kvfHCAm0/wl4+1WGm6XG/7/OjKHtuDiBudgOvdMf5D1CMExQSzpQwqpuTETBXPlry63GCrH3F+ewgaDDRhkqFhYlFY55OtIVIILCmQUtAPEo7OFHr2z9sx9jCxn7bJcs3bl9tc2h2RZ5qBnxBmGX6UUbdNgjRjqx+Q5YW4m6sUM5XCaH4cF97Zx2crKGmw1g1wTAla89O1Hp9s9WmPY9CFQ9mMZxFnOVf3xuyOIt5YbXB2qcE4TumOEwwBf3Vhj9UZj14QIw3B7jDiF07MECY579/oYikD0zAI84yrez62NFhs2ERZxrXOiIZbuJvtDiP8KMW1DMZRRtdPpm2ZjzLF9CDyHlf2xpycrRInmu1hyMuLNT7eGDCIUk4sVLG6xc4/1VCRBgiNEsXf0DUVfpzSsIuFXxmwO4pZ8Gx2hiFxlmNKqNgGwzDhxHwVTc7Aj6m5Fg1Xcml3SJTkaK05MVf4N/hx+sK918rgcBv7chK/8coSnXHET9f76Kuw0faLgtjnPEZMvM2RQiCBqm0iDM2ri7WJXr3Nu9faCMNAoNEIun7MVj/iK8c/PTH61Zdm7+jZXPJo2U/bvHujy+XdEbaSCBNudAvt/0GUEKY5WZYTpzmjMEEpgz0guJGR6JyzC7WpDEPNsejbCWtdn8WaQ2cUcKMXEiUaw9B4lkl3HDNXsxnFxS73o/UBLy/W8aMUW0l2hwHbw4ijsx5o6I4SBhNHs6OtCjXH5GpnxDDICJMc2xQkWtMbJ/zocodXV+q8dXyGn20OyHWRs7eUQZBkBEnGDy/t8YUjDdZ7/h2Nrx5k2OuzynscfPxLu0POLtZ581iTiztDrncCXl2pobXgl0/P8a8/3ma7HxKlOVfbYwSCJNfkk84OwxB0w5jllktFGrRyzUrLwVISwwBMg9ePtGiPQ8K4mJZeqDts9EKOz1ZYqrtEaU7Xj8iLpC6WMl6491oZHG7jdjmJ3244VJ3CKep6xycdJXyeioQ0igJ007OYnXyY0qDYZxr0w5QvH5vh4u6ITEPVksx6Fh9tDHjrxAzzNftTE6Pl3MKj5U4L3/4Q242OjxAC15RsDUNqlokQhfCbH2cMg0Lv50jLoz0KCZOi/bRuKdqjiIW6gx+lKMOgF8RESc7Hm0PCtDh9hElOoqHvZ9hmsaNvVS2aFZNMw0frfRquxWzVYmsQ49mKvVGMaQg8RzHvmaz3AjRwdW80FVDMNHSDHFsKlpcbxHnOuc0+Xzk2Q5RmLNZs8lyz1vMxpcHRVoW9UcRf/GyLlxdrt+zyT81Xubw7eqBhr88i73H76cKSkg/W+3xptcmXj83w5WNMfRNOznn88NIuF7aGuLYiiFLSTJNpcE1BnOboXJOQk2QZmYaX5quTNlTJ6YUagyDBNRVrXcWl3TG9IKHuWnzt9BztUUSUZthKUjHlLU5wLxplcLgDt+cRi8VYYKsu205IdxzhRxlpDmrfVo3iDZnnN2sUjoS5qs18zSbONElWjO3HSc5fXWrzKy/PEcQZfpxxtOVhqeKcEaUZwhDTVsfyhPD4uFPa4wcXdjEMwcXtEVf3RgRJzkY3YKNfLKRxliOFQbNSnOyCJGOzHzBXc1io2fTChIopcUzJ1d0RR2c9+mHC7iDGUoKcYpAryYtFDQqfYz+BPE+xY4MgBmUYXG/7VJ2Qa22D9a5P3VFESYZSkpqlMA243h6z2Q8ZhglCFC2cWmtyBDrXbAwiPEfhmopr7THHZ6t0xzHDKCHXxWlZGgZRmuOYRQ5eCDHd5b99qc2JOW/6dZZr1nsBl/fGfOVY666niJ4fs9UP+XhrwKxns9J0qTnmp3L3t58uTs1X+esrbb77yQ5LDYdkcjpbqDv8+FqXzjhmqWGzN0pI8+IPaBqgMViqO4zChF6Q0PWTSU1GEcQpv/vlIxyf9SZNAIUo4hePNJjxbD7a6DHrFR7xG72AQZjg2eoWJ7gXjTI4fAaOz3p86+un+GCtxwdrfS7tjjANg6oj+cnVLlfbPkme0bAkeQ5JljNfd/mtVxbo+jHDMGWtF2Bowc4wou4UC9HxmSrnNvts9ENWWy5aa5JMM4oSXluqTVsdSx4fty9MxRyAT3UiAvf+Wpe1bsBwkr6JZU6WaaShCRNJlObUbYu2LGoCUZphAMsNl2vtEV0/KWoJk7z1ONTs+THjRH9qtqX4+RBP0lVCCkadFANBzVFUHcXeOKKeW6RZzNhWnNuMOLVQxZKSzmjyeFqTo7GkIE41/XFMzWlRsyV+nPLSQpUwyVhuuLx1fIZ+kLA9DPHjFM9S3Oj4vLxQo+aYuKZkdxjy6nIx0jQMEz7ZGmIrAwPuWsTeD7pzVZtxnDIKEz7ejDk+W/2UVtSdThemFPTSjCDO2RwGzFQsgjgt5LiDDEtJZqsGAtgZRROP6P3nRrDUcLBVEcjXugEVS/Kvf7bF3//K0TuKIm4ObK7sjfnS0RZnl4rAtX9aeVEpg8NnpFmx+PqZBb5+ZoGeH/PBWo+LO0NmPJsoybjaHrM1CKhaitePNDnacjkxV+V6uyguepYkTIuRNykFNVvhWpLXlhts9gKiJCVJDZQULNYcVlte2YX0BLh9YdroBdQdk61+xI8ut9nsR+yOQtAaW0qiTJNlGk9BP4gYRjHNisUoTDGFmKQkFBe2h4yjhBxBP0wmyriaQZQQhEVi8k4tDokGtMYQAp0LpAQlBanW9MYxAz/BjzKqtiRKM9CFPeZSw0QZorC21cUpVQOuWbymLu0MeXW5zlLDZbnh8ssvzfFnH27RCxKWGg5V22QUpSRZhpIGn2wNONKqsDMIafsxH6z3ODVXZaM3KaqjCzmXu9QQDgZd15Js9ALa45i9UTRVWt3ndh2qjV7xPlo6UviJtTwL0Hy02We2YpFrzSjOaDgmPSFQgunpPcwyHFWI6lUsRd1RCCGIkoxPtke8e707OalXbvm7n5z1+PG17mcytXpRFFrL4PAAHAwUd2P/BVSxFbsbA04tVOmNk2laYqnhsNELCn+F4y36QUqW51Ptf8Mojvslj5fbF6bdUcT19piP1vv4SUaW5ZjCIEgztM7QGqIM4rQwibIKEVAajsnmIMQ0BMtNg844Aa2pVywu747JNSR5Rpxq9J2ODAfItcBWgmySnwziDNfUZHnRkTOKc7JcFylHx2SzH4KGUZgyDGLkZGI7SnKSDOaqxakj08WpdqMX8OVjLb75hSXevd5lvRdgK8HuKOX89pBmxWS7H/LXV9qcXarz1ZOzXNkb8f5aD51Ds1JMcO/Xvu40a3Mw6O77Le97j9++kN4uHtgeR5jSYKXpcn57RN0pOpB2+xEVpTizWOO7E0vR5aaDRuPHGTOeWZzYOj6aHCUF1kSRVeucICqe551BxO4wouvHjCaBtlWxePNYE0sZ92z2eBLmSoeFMjg8Jg62xwL4UUpnnKDRHJ/zqJhFL3yQZJxeKHSQXoTdyNPm9l3fjGdxeXcEFENkG72ASztjPEcxjtKi711M0j0HOtX213ZDFDWmUZzh2RIpCmnoNNdFoXQckQNRkhPFOQngGJDeJTgYQJrnOIYi1xl5BkoIwjQnTDLySet9nGniTCNlitBwcadY1C3TIM0ESVZ0BlXsYsp3xrM40nTZGQS0RzErTZeTcx5fPtbio40+G10f21IcabnEcc56zy9EHqUsBsBWW1zeHXF5b0jdrXF2qX6LztDtp9z7SYnf/jycmq9Ou/CabpH7rznm5ISUs94PWGm5aAGWlBxrulzpjFnrBdQdRdUxydEkuWauahWKxVmh0JpkRZBsVYs0mWHAh+s9Gq5JzTEZhgnrXZ/f/crqfZs9noS50mGhDA5PgJWmS5zmHGlVpnMLYZKiDDE9uj7PwzSHgf1U4HvXe8x4FifnPOI05/LuaLowfbjR52irwpXdEWmmibOcJNdESXbXDrVUQ5rmxGiU0GRAqgtP4zjNiFKNMWm13FexzCiCwMGuaHOS2jYV5DrHsxQihnZYuJWlaWFko3VxP6GLr8dhViiSaugGKY4pmfWKFFNRGDfIs5yVhst6zy9OOa7io40+3z+/w5vHWniW4sxina6fYmAwJiXLQSCwTYONXsDZpTpvrDZpeRYVSyINcc9Zm3tJid9p9315dzTdfe9/349TlhsOH6z3aQ9DXpqvsT2IOL8zYKsXMl+xMZWBlAZZluHZJqYymK8Wab7tUcggLDqTaq7i5YUqQZKR54W8fdePGUaFdM3RGe+e6rf7PAlzpcNCGRyeAPtvlIqlOLNY5Up7TGcU8eaxFm+sNssTwkOwv+hf2Bkh0JxeqN3yNz0YFMZRykLNRhqC89vDwifYUnTGhSTC/ht/dxjy/Qu7jJMMUwj8e8y26ByCJCfJizdTTj4deoyz/QBw6zEhyZkObUFxEqg6kpZrszP0CRO4uuej5MSjQEIKRVQRYOjixCIEpJNI4ygD2zSomKpQKBVgCoOlpoM0BOc2BhxpucxMBP6kMJir2lxv++wMI6q2YmcYTBRPDVxLIoDNnk+cOZyl2PnvnzjuJxlxL4+G/ffC3XbfB+8bJhmvr9TJ85xLu2OqtqRqSxYbDlmeF8FkHONaxbS0EgIN1F1FvVIjTTWOXfiirzYr+HFKdeITvS8pAkxTXvfjSZkrHQbK4PAE+PSLvVGmjR4BPT/mBxd2Wev61B0TEHy0MaAfJPzqy/MA05z6XNWmM5FlODFfwzHltOazvyjUXZPdYYRrKTp+jKEh1xp9j/pABtPawEGLxOwOR42DpYb99BAUp4hhkEEeYUlFKtMisGQTZd7s5s/avxYJJCkYkokPgUAZhVpoz49xTIPFusMoSPAsk+1RSJhlDMOEV5YbOKZEa4NBmHCk6eLHhYBdlOS0vMJMahgWtprjqJgO3h2G1F2T92/0phLh93oN3+00fK/d951kyPd/hjQEg6CYGZmrSja6AaMooWor1nsBri05NlthbxCxO454eaGKY0m0zgmTnGudEacXakVr6wMu8M+DudJn5dAGByHEVWAIk5O61m893St6OMq00aPnyt6Ynp/QcK2pHLYQhcRI4RNe7ErTDOqOxJaSG50R57fHeI6B1oK1XsBy3aHnx8x4Ft/7ZAc/SliqOWwNQsZJelBe56E4GGPy2z/XRd0iz5mKLO4HE2UUJ5T9+xgUQSIDRFbk1g1DgC66iII4QwuI8py2nzCKcpI0Y6OX0RknrLYqRZddmlG1FcsNh7+8tDdJFeX4cUbdEby8UKTbtNZEaSHrYis5XRQftBB7t923EHf31tYavnikyXc+2UEaYEqD11cbfLw1JBY5ni1ZqLtsDyJMAxwlcaxCyiROMxxLcXaxjpIGO8MQQcJ8zfncC/zj9tM+TBza4DDhN7TWe0/7IkoOBwdbiDWCIC5mCpYa7vQ2tjIYBBkbvYDtQYCBQXscMQol3SBid1RIokdJ0RV0SQ7p+zF/+uEGQz/BkNAbp7RHMVGWFrd7iGu+T2MSHPh+kt/8DyUgnph92LdFp/2bmaKoeUSppmIVRYtMg2UWXUxCg0aTZBmeazKrJFGS8cMrbaqOiSGKGZ6iG0pim5Jcw94oKk4ULY+vnZ5nplpoRfX9hPYopmorVpruA+sw3W33fbsXxcF0U901idOcV5bqLDdctvoBAjg2U6Ezimg2HZabFUzD4FpnjCEEG72A7rjws1hqVNjsh5xdqrNQc4jS7L6dSXfjRdnoHfbgUFIC3PRQWOsGmIagPQr5cHOAH6WcmPVYbXnMT+oJ/TDmameMzgvrxzjT/MW5baI0BwFpqqm6kqWGS3sUsdb2UUowjFJ6QUzfT3lUxoAPKtd4sJspmnxuTD7SyeMKcbMwnemcnBw0LNRsLLPQdIqTlBnPxo8zvrDSpDOOuLAzZmcQ8fUzxYT+Dy7sYpsGWaaZrdqcqdrEScp6z2e15TDjVfn++R0qlmIYplxt+/xsa8AvnJiZzDx8Pu62+37/Ru+uzmpfOtrk3evdqT96y7PYG0XMVCzao4ileoXtfoAfp1xrBxybdWk4JsMoYbOfcmq+ysTSAteUhEl2i/R2yac5zMFBA38uhNDAP9Va/97TvqCSx8NnGSq6sjdmsxey1h5zec8nJydJim6iiztD/Cjl3etFOiWIU07OeVRMxfvrfXYGIVoLun6EYQikEBxxHDqjmN1hiKYYtOr4MX706ALDoybn5qlBU7TWFvNfgjTVDLOEqmtjm5LlyRxNEEOaF+ZRzYpV5OtrNosNi16QsNkPaFQKTwRDGPSCkH6YYhsC2zKouyadcYxjKm50AkwlCOOUfhDzh12f33lz9YF+lzvtvu9V7L2lbpdmjMKU47MeK02Xr8dz/Mv3NgiSQmajWVH0/ITVGY80z0lTzWYv4NR89ZbHLLk3hzk4/IrWel0IsQB8Wwjxsdb6e/vfFEJ8C/gWwLFjx57WNZY8JHdqa9z3OB6GKTuDkL1xzLn1HtvDIv/tmpK9ccwoiqeF3+vtgFxrDFnIZsepxjUN+mFClGR0xwnC0JjCYBClvHO1i2UaxGmOEhSm9em9r/UwooEw0ZiyKHI7hp7WFY40XbK8kJRYrJqMwpRRlPCLp2Y5NltMCM9VbW50fH58rUswmQ62pEHDNUnznGGYojXYqpj+3hunVEw5FQC8uDOid4fBtgfhfsXe22eH9nn3epe/9doS6z2fPz+3jSkNRnHGxZ0By3UX2xLsjWK+dtp5IaW3H5RDGxy01uuTf3eEEH8I/ALwvQPf/z3g9wDeeuutJ2f+XPJIubI3Js/hRsdnFGUYohB1C+OMUZSy3gtoj6JCATWMiTNNnhddPGIicp7noJRE58XQmB8WXTktz6LrR0Spntq/CrKbOf7JESG586U9MwiKqW1HQiYEudZc2B4xV7WZrdr0g5S2n5Bqn9Pzten0/fs3erQqFitNl++e30XrvBgKi1Lqrirkw8OUlaZLmOpJwNCkk7//2cUalhKPbADs4OngRtdnFBZtp1f2xpyc464BaBAkzNdsXEtyfmvIKMyouxm9ICHXmmMtj5qjSHNNxX7xpLcflEMZHIQQHmBorYeTz/8W8F885csqeQjuljoqCschWhdv8g/Wemz2A3IgjDP2hhHCAHLNeLKzF0A6afGZ1GyJbjP/juKcYRx+qiD8PO4icoohOtuUjMKUVsXCtQ1qbiEbPlMtbEsX6w5115x2X+2ncWpO8XxcbY/oBgl1x2Sp4SLQVB3FyTmPH1/rMI4SVlsuaVZ0Ly3UHeqOYhA8uvDarFicnCteL3NV+zN1Ru3/Hhu9gJPzVbYGIULDywsGrYpFquHvvaCy2w/DYZUcXAR+IIR4H/gb4E+01v/qKV9TyQOynzqK05xWxZoqefb8mFGYEsYZW4OQUZyxMwoJk5y1vTEb3RA/1Yzjm4EBigV+P//+WTuBnmdyCqn4TOtiMjqI2RvFZLnmSLPCbMXCsxWupTg1X2W+5kx24940zXK05fLKUp0jkyG3wsGuykrTpVmx+MZrSygl2R1FE9VTF0PAjGc/8vz9QYmKfenw/c6oO7H/e7THMU3XZKluk+kcx1J4k1bdMjB8fg7lyUFrfRn40tO+jpJHwwdrPdZ7AWkGVVsiheC9tS7/+99cI800aM1C3WGtE7DeCRnH6c22zpLPhJCFfpMtDVxT4piK3UGEMyOxlSDNwTElF3eGuKZkexACTKVDKrYiG4Qs1u3CZjTJCJKUk3NFbv74rMd/+LWTfPvcNlmeU3fUYxOI/LwSFfvpqJ1BxN44YtazeXW5Qc0xX3jZ7YfhUAaHkueD/bmEP/rJGot1l5WWy8ebA77z8TZhkRdCGLA3iMjyon3zRdjpPw7SDCwJSaapVyQ1R5FpzdYgpOFaIAIgp+MnfGG5Ts0p9JX2ZVy+cKTBKEy4vDueTB2bmPLWRf/4rMe/+3Orj10g8kEkKpoVa6oyW7EUrinL4vNDUgaHksfCvrTFT9f6dPyI89sjhlFC14/Js3x6MkiyhxsyK9lvZy0kO3yd4cU5QRSQ6cJUuZhhUHxwo0+uNa6SaA1KGbhK8PHmgPdv9EhzzYk5D1sVXhHdSXDf9zC5m6zFo+ZBJSpepOnlJ4HQ9xKOeUZ466239DvvvPO0L+OF5OCiISaVzmGY8uNrbdqjhL1hyGY/LLTzg+yZ7ww6rAgmQ3ICpChOZAYGtikmBepCgny2YhFnmldX6qApUnhZTsVSLNZtzi41po8ZxAlBmvPvfGX1lh35/mL9OD0MXhRDnaeNEOLHd5MmKk8OJQ/M/tRyP0gY+CmbwwBDwyhO+eB6n2EU0/UT0uyzFY9LHhzNRARwothaWITmSGkSZZoK4FmKUZLSD1Ks3RGn5qq4ZiG/fa09ZhQm5FpQsQzmag7GpFn4aXgYvCgSFYeZMjiUfG72d3V/eXGP7WHIYtXh4s6Qta7PejcgI2fgp4R3M0EoeawkOci8sKNN0myq2tr0FGtdH6E1u8OQ1aYLopgOv9Ie0w8STClIUs2FrSFNz+TnjrdeKA+DkpuUwaHkvtyeOuoHCQs1h+44Io4zvvPJNn0/IdOanp8QZro8JTxlogQqtiBKc3pBgiUlYT9jHGWY0iDNNL0w4dWlOhu9gPmqhWcXVp5pVkxcK0PwxmqTK3vjF8bDoOQmZXAouWd+93Z5iw/WeuyOIrrjmMvtMXuDiDDO6fox/SC9q/1lyZPDEIWkd5prDAq3uA4RnlM8h6MwpelZOMogiDPCJOPN1Rb1ilmknqIUz5JUbDUdSntRPAxKblIGhxecuxmm7/e/v3u9gyUlCzWHTwYD/vTDLdbbPkmeEWU5fpgRle1Gh4r9AB0lGinAltBwLbTQWFJwdLZCkmYIIXh9pc5KyyHPNS8v1Ka+0AfnA27vAhKiMN7ZN/0pi8XPJ2VweM65/VQw41l0xvH062GYfKrYOApT/vi9dVqexbmNEUGccKMbMI5S1rt+WUt4BrCMwqo01ZAjyHTGfNWl7io8S2Epg5PzHgt1h8WGwyBI7ukLvV8gPriZeFjTn5LDTRkcnmP2Zw16fsIgTNjqh+yNI9482uT15QZxmvPDy20WazYgpiYuN7pjrncCwiTj3GaPzW7AKMrIdDmT8CyguNlRZBvQcBRVp0gZuaYi13B2ucbPn5idKpzubyLuNx/wNDqXSp4OZXB4Tun5Mf/iJzd4/0afIE7pjGNGcUaWa9qDiO99skfNMdkZBjRck9PzNaQqWho/WOvSHSf8m3MB47jsOnpW2BcZFKKQJBQIbFPiOYpekOA5JlmQcKTlsNJwb5G9+Kyto2Xn0otDGRyeMfZ3eBu9gKt7IzZ6ARo4vVDlt15d4visx7X2mG+f2+L7n+wxCGN2RzFxmhFnGolmdxCy1HC5uDNkHKcEcc5fX22jEMRZTpIVBvZRWVx+ZhCAO0kjmcrAVhLHFChD0h4VKaNxGKOBN442+eLqg004P4i0RcmzSRkcnjI9P+avLu3xztU2QZKz2qpwcs5Da9geBHTGCd1xDOS0PAdbGRyb8biwM+TD9R62lKy2XC7ujNkZXONvv7HC//fJDtuDkCvtEX0/JtMCZRTCbEFWrPjDcMTBA0Ea7YtfT75+on+FkofFUUXKz1EGR1oe1sScZxxlKAlLNYcjLYeqY/Jzx1p0xjHHZz+/YN6DSluUPHuUweEJca095u1LbXaHIfM1h9dW6tzo+vzhT9a5sDPEkQaeJXn3eo+qJZmt2oyjhOudgJ4fk2YaqQyOtlxmKxZbw5AgzvCjjO+eT8l1IZ/wf75znYqpkFLQGcX4ST6tExzUpiwzRc8XGpipWMzXbM4u1dnuR6z3AwwBZxZqBCkMwow0F3znky1OzVcfqMuo1C96cSiDwxPgp2s9/uDtq6Q5pGnO21fa/NPvXiJOM3rjiHjirAVgCIFSko1exDCMGMYHcjtpxrnNEQDWRG3tdr/j0M9o32XpL4vJzy8GgrqjWGlVmKvaNCs2lino+gnXOyGCHFMqHDNmsw/zNfeBu4xKaYsXgzI4PGautcf8T39xnt1RRJBkpJlmHKe0hzEH1/2bK7eGif7NvYhvzQKVvOA0Kxamkmz0fBqOSc1RaM00rZRrA8OAINM40mB3GJLnjbLLqOSulMHhEXOtPebf/Gybi9tDtIBBkHKjF1Cx5FSyYG9UapOWPDosAbYS2Mqg5phkOi+Mb0YR/SCmZiuUMgCBITSLdQclJZ1xhJLivo9f8mJyaIODEOLfAv5HisaZ/0Vr/d885Uu6L3/+4Sb//V+cZ63j48c3c/1KQM01kEIyDsvAUPLokBQucGkOVUfx8kKVrWFEmuWYymDWs2gPY+oVi9maZL7uEqU5DUfR8WNOL9ae9q9Qckg5lMFBCCGB/xn4BrAG/EgI8cda63NP98ruzk/XevxXf3KO693wU99LNXT9fdfjkpJHh6YIEHXXxJYG3SBmdxixVHdouSYDYTCIUjwTQBAlOYbQ2KaBNIxHbvFZ8vxwWM1VfwG4qLW+rLWOgf8D+J2nfE335H/9qyt3DAwlJY+LIlEEhjSQhmC56bI9iHBNA8c0qNgKgebETIUg05OtiWalWcFSBt94bbHsMiq5K4fy5AAcAW4c+HoN+MWDNxBCfAv4FsCxY8ee3JUdYL899fz2gD/5YOOpXEPJi4cpwDYNKpbCUQI1KTD/bGPAQsMhyzSyU7pCAAAeEElEQVTDKKNmS15dbrAzDOgHCU3X5NXlGl9cbfLGAw7Blbw4HNbgcF+01r8H/B4UNqFP+udfa4/5o5+skeaay7tjknJwoOQJoQwwDYFrGWQ5mNLAVQaupRjHKX0/YcazWKzZCGAUJpxZrPE7bx5BSQM/vtkJV9pxltyNwxoc1oGjB75enfzfoeHtS20arsm5zSG5BtsUJHHZW1ry+NkXQBwGGYgcUwlmai67o4jFuoMQEKQZH6x1SXOYqZi8sdpksx8ymrS2yomRz53k2kuF1RI4vDWHHwEvCyFOCiEs4N8D/vgpX9Mt7A5Dao7JMEoJ4lJsouTJIQTkuaZqS1quhWMqbnR9PEuyWLepOSZ+kHF8rsrRZoU3jzY5t9GnHyTUHYWB4L3rPT5Y600VVoUQ08+v7I2f9q9Ycgg4lMFBa50C/xj4M+BnwD/XWn/0dK/qVuZrDsMwoWYr2uO4nEcreSJYk7EEaQiqrsJzFFGS4ZqSiqXIJg1xR2crHGk4LDRsgkRTtQvvDiEEQsCMZ3FhZ4Rrylse3zUlg6Bsty45pMEBQGv9p1rrM1rrl7TW//XTvp7b+epLs/SDhMW6TRClpFkZHkoePxoQBigpmKs6tCoWlhIs1C3CLMePUwSw3HDoBynHZir0gxglBeMoJUxSwiTj5JyHoDD2OUipsFqyz2GtORx6js96/O5XVnn7Uptm1WKUpkRBOcdQ8njJNbiGQZ7DnGdxerHKZi9grRvgxykLNRtTOoRxhpQGpxeKIbdrHR9BUbw+PushDcHphdq0OF0qrJbcThkcHoLjs970jfa//dVV3g8GT/uSSp5TJKAk2KbENASeo8i15kurTc4u1vlwvceJuSpxmrHeC+gHAb90fIaqrWi4FuOwz1LDLWxA4wzDYOoCVyqsltyJMjg8JD0/xjYN3jze5PLe8FYV1ZKSh0CJQq03y0EKaLiq8PQwDY7PuJxerJLmmpmqxe9+ZXXqDX56sTb1Cr/R9dkdRfzy6XmiJKPjx/TD9JYBuH3hvZttrb2yrbWkDA4Py5W9MQs1h2++vowjFf/sB5dLo5ySR4OAmmNhKk2S7Bt/wpGGy5GWx9dOz093/wAN15zOLABTaYy5qn2Lc5s/sY09aPbT8+OyrbXkFsrg8JDse+oKIfg7b66wPQz5o/fLaemSh8cyIM0y6o6FFJo3jtQ5s1SnN47pjmNmvJuLds+P+cGFXXp+QpLlmNJgvesjhOBoq3LL47qm5EbXB5gOvw3DZNrKCkz/LSW9X1wObbfSs8K+p+4+v3ZmnkrZ7FHyACgKrSQAS4KlFI5psDeKqNoSyzTYHoRIZfC103N0xvH0vh+s9Vjr+khD0HAtpCFY6/psD4JPdSTtDiM2+wFxmtOqWMRpznvXe6TZrQ0VZVvri00ZHB6Sk3MefpzixylaF0Y+x2a88khW8rnJAVuCqwSmNLCVINcgDMHJ2QquZTIKUzyrmG3Y6AXT+17YGVF3TByzGGhzTEXdMfHj/JbXpx+nXGmPOTlbvWX4bcazuNK+dfitbGt9sSmDw0Oy76lrKYOuHxNnGWcXayy3nKd9aSWHnKmqKsVJwTEFiOI0WrMlNddiqeGw2nRpVR2qlmS54SCAcZSy2S/8xQFEMQFx208QVCzjltenpQyWGw7zNfuWW56c8+iMoluCiB+npaT3C0y5wX0EHPTUrbsmV/d8Vhou7VGIX57KS+6CAVgWuEpxYs4jSXOudgOSLGe16ZBkYEmD4wsewzClaikqtqTnpzQrFidnvWlN4PRCjY82BghROMJFaU4/THh9pX5Hz+cgyW4pUitp8OaBIFK2tZaUweERc3LOY75mc3lnxKznkPRDkrK7tWSCotBGsiywpaTmmEghmPFsGo6JIQTrvQA/yanZiuWGy0sLVcIkRwC9IKXmSM4u1ajaiu7k5PDGapN+kNAPEgZBhlKC1ZbLG6vNT13DyTmPd693gVuH38rOpJKDlMHhEdOsWPzdN4+w2QsZhAlplrM5jO9/x5LnHlNAxTJQhkHFlthKEudFEOiMIqSAozMuC3WLONW8vtrEUQZnF+t0xhHjqDgxnF2qFeJ6cTqtCTQrFr/68vxnkt/eT4WWw28l96IMDo+B47Me/+jXX+KP39vg4s6Qty/tsj0qpx9eZCSFJpJG49gGC3WH+ZrDendEkGiOVE2UNKi7iuOzLV5ZrvH1MwvTwbQwzeiHCSdnPaq2mtYEDkpd3Cl9dDc+z21LXkzK4PCYOD7r8Q9/6TgfrPUYBCnt87vlcNwLjDlp/dAUPgwNN2cYJizWKmwPQ/w4o2orfvOVJQyDaTpofxH/8rHWNFCUu/2SJ0EZHB4jzYrF188sMAxTNnp+4RhX1h9eOBSQ6kIOw6CQzG77RZqoYkpOLVSJkwzLlMVMg1N4Kpyc45bFv9ztlzxJylbWJ8BK0+XVIw1eXqwib+82LHluqdmSui1pVEwsJVBSYJqKiq2Ioowsz1FSINBEac5S3ebEnMfRVoU4zXn3enfaqlpS8qQpTw5PgJNzHi/NVVEU3r+X9kaMSoG+5woBuGpi4akhzyFKMjQQJxkYIDRUTIOKrbCUgUSQ5ZpcC1pVi4ZrlfIVJYeGMjg8AYoOphX++L11pBTUXMVPrnfLGYhnGNMoFFM1EKVFygghcE2DKMnIi3k2HNMgSHJ0Xhj0LDUccg01WzGKEo7OVPjFUzOMoxRL3nqQd005bVUtKXnSHLrgIIT4z4H/GNid/Nd/qrX+06d3RY+GokB9git7YzZ6Aa8uN/iDH17Fz+5715JDgoDpHLIlDaquIss0eZ5QcySCQu7CVgpDgmkYWNJAyZQoyag4JvM1izjRCAFfPTXHL700S80xef9G91MDzqV8RcnT5NAFhwn/g9b6v3vaF/GoOdh58rffWGGmavEHb19nrRc+7UsruQ+SYu0WAmqORBkGSZLjmJJWxSTJcmY8C9sUdPyELMupWJI01yw1HOY9m1GS8epyE9Cg4dXlxrQttVkx0RRy2qUrW8lh4LAGhxeCf/ALx1ltVfgn37nIlb0RYdnremgxJbiWpOoowlSjAMs0EAiW6i62ZWBKiSUNstxnHGXMeDZLdYe6qzClgWtJvnZ67o5tqb/y8jxQurKVHB4Oa3D4x0KI/wB4B/hPtNbd228ghPgW8C2AY8eOPeHLezTsT7Ve7/j8+YdbXNgZEiSaslR9ODAmH0pC1TF5ZbnGkWaF99e6+FGGrQyarknLc6i7xSnh184scnFnyP/70w0kxSljGGYMw5DfeXNlKoF9t7bUsvhcclgQWj/5pUgI8RfA0h2+9Z8BbwN7FOnd/xJY1lr/R/d6vLfeeku/8847j/w6nxQ9P+bPPtziD99b4/LOkIGfEuWUQeIhkfv/Ckj0zXrB/t91/3NTFB1GxuR2wORkUHxesy1y4NfPzvHGaou3L+9NTwzSEGz2AzKtUQZ89dQ8F3eG7A1DelFKxVTUbMWxmQqWMmi4JksNp7ThLDkUCCF+rLV+607feyonB631b3+W2wkhfh/4fx7z5Tx1mhWLb35hibpr8i9+fIPzuyPagwCtYVymmh4Kwyg+HAR5rkknfja2As9WdP2Uii0IIz0NDKYByhAYgJSC47MeZ5eqHJ/zaI8iDASdcYzW8MbRBjVH8eMbHRarDsqAmmMy45kgBDMVizTXXNoZ8sn2kN84u8hqy53OMZRidyWHlUOXVhJCLGutNydf/j3gw6d5PU+KZsXi3/7iMq+t1Pn9713mLy/uooXAGIaEcV5OVn8OFKAFKKNoH80yjTAEVccgyoq20oZr0fBMUh2gtUDJjCzTxSmCIpXkmJJXFmssNz2+8foSx2c9vn1ui5cWqtSHIUIIru/5HJ+v8M3XllhpuujJnMNc1ca1JBd3hnyyNWQQpJxdrFNzTM5vjzi7VKNiqXKOoeTQcuiCA/DfCiHepDjxXwX+0dO9nCfL8VmPb7y2yK++PMffXO3w7rUO19sBbT8p00yfgZotMKVEa40QgjTXmIbAVoIwy6nbFrkuWkmrlslyHXZGIcpQ1AyI05wgyajZFisNmzjXHJ0ppK+v7I354pEmFUsxDBM2egHtcUTDsfjqS7N0xjGDIGG56dAPEqqOwjUlLy9UubAz4vRCFccskl0bvYAzi7VyjqHk0HLogoPW+h8+7Wt42tRdE8eU/NYri8xXHf78ow3CNMWPNfn97/5coEShR3Q7+85pB8dDrMkwWs2RNCpWUUdAEKUZwzhD55ow0URZhqckLc/CNSU1R5HnGWcX6vSChDjNyDS8UrPxkxwtIM81v352gWbFYhD0aE1SQDXH5OySidaaG12fy7sjKpaiVbEIkgxBQpRmbA9CFusOZ5ZqSKMYZLCVwSBMyzmGkkPNoQsOJTfNWCqW4pdfmqXhKn7/+5cJ4oSenxCnRerjeT1JFDIjkGdFMDAlaA1xzqQOANkkOux3EzUcCykFYZQyU3VAgGtLpErZG0ZIQ9AwTQxpEKUZJ2YrvHG0hTSgPYzpBhE3OiHSKBoEHCVZqDmcXaqxN4roTdpLb3dQC5KMUZgyV7XJcs357SGjKEPJIsh/7eV54jQnyzWfbA2A4ndRknKOoeRQUwrvHUJu96U2hODXz8yzUHc5u1inYglsebiePFNAy1WP5JoywJAGFauoE7iWwnMU1qS4rCcKp66EigmWklQnswSOqTjacrEMQd0xqdkmVUuhhGC27hTid0JwvePzoysden7CUsNhue5yfMZFaIFtSJoVi5cWqvz8ydlpbeDknDf1UTjos1x1FGmW88nWkCTT1B2FgeC96z1mPAs/TpGG4MxijSzX7I0ijs1UymJ0yaGmPDkcUg72wX/3kx0ubA+Y9Sz6QcKM5zCKEmSSkmTFjvpxcqf2z31MwLULATmtYblhs92PHti7QlAs/J6lCNMcR4GfapQQGIaBbWgyLWg4inxyMcowqFgKgUHNkWR5Ts1VNB2b9jihUTEZBCkCqNuKJM8J4pxjMy7NiskoSvEcxTGzih9nnJz38BzFXM2m5hSpo64f39VB7cremI82+jimnNYUhIAZz6Izjqf3CZOM1480yhbWkmeCMjg8A9Rdk2GUcmaxxs82hjgzkp6vyHLNVj9EJilhVnTnGAJ0DrGeKIVKSPKb/fuSW/P190NSWFtGaU6aF+ms/bw/gFKAYdC0FVVHEWc5loL0PtHh9iADhaqpnly3ZQgioUm0oGpLbCmp2pogypBSsDJpB90bxXiOJEpz5qom3/zCEh+t9Ug0NBzF3qgIMvM1B4Eg00Ukna/ZvLHaYhAm+HHOIEiZqzocn/WwlSTJci5sD/EmdYSZarGY32l47eQcfP/8DnNVG62LtFWYZJxZrDEIktKHoeSZpAwOzwAn5zwqpiKMM5abDlGa06hYdIYxSopiUU5yMl1Meu0NY4QBphIkac72IELpIijsBwbjwL/3WsdtJfAcEzNNCZMM0zDINQhD4CiDTGvyXFNzLSBjxrNwLclWPyCKc6JUI+UkqOhiR60ESGkwivJpsJGimEJ2TUmSa5Q0qKAIk4ws1wiV4yrFQs2mVbEYxxnKEFimgSkFq80Ky80KSZrzxtEWN7oBAjg5X2VnGOIoxXzNYrMfkec5ry83iNIMIWAQxMRJxqm5KqNQ8qOrHVaaDvNVm1GYsN71+d2vrN7yd9mXv9j3az69WKMzihmECVVbcXzWQxqCin2Ykn8lJZ+dMjg8AzQrFn//51b5g7evkuWaNM9pOIpxkPBzJ+bZGoRoDd1xTJBmGGNN07M40nC53glIs5x+kKCzYmfuqGJxzvKcJOdTR4mDpwsNWAqqtsUwzLAMgTG5LxikaYpbMWl6Jr1Ac3q+yijKsKQgTaEXxiRZjmtKtBa4tiRKMwZ+gpj0XikDHEsQxBlplnNqvsr/3969xsh1ngUc/z9nzpkz99nL7NX22utbEtcxuUCSilDR0iohX1ojQEUCVSpSBOoHKvGlpR8QSBVCSAUJgSASFf0AhF4IRFyKWhMUf2kTu0lxbnacOHYce+29eHdmZ3dmzpx5+HDOrte7XtvJXsY7+/yklWfeszvzvp7Rec55L8/bnfGZDwLGy40oAKE4Eq1PODRU4OX3pujLp9jfl2OiGtAMQ4YKPgJUGyFPf2LvYtfN+ckqx94c49TFGXxP2NdXjHIkBSGOI5RyPpOzderNkCBsMdyVolJvMtKbJZfy2NWTZaraYHdvFogCw8KEgYXZSa2WUsx49OdTljjPdAQLDlvE/Tu7+N1PHuBH70xyYaqKIvTmfAaLKfb35Xnj8gzTcw2CZou9fVnchEOl0aSQdmlpkiBU0kQzZDzXIeEICUmQTEA1DAmI9znWaNA36yboyyZx3QRJV6g1WxRTDiqQdBxqzRABphsw3wiZrQX4CQffSxAq7OrJkkw4nJ+s0giV/rxPKZekmPI5dvoKc0GI74Fq1MFUD5TujEcumaA/n2a2HkRjDskEo6UcOd/lamWeyzM1XjoX0JtLUQtCgjBkoJjBEeXqbJ17BvJkfPeGPv3dvVm++Pg+puca/N/FaV69ME3YUg4O5HktHit4dLREuRYwWa3Tl/MZ6c3y+P4oGd7CmMOCcxNVMkn3ho15+vIp6s1wcRKBJc4zW50Fhy1kd2928eoVoivY42+Pc/HaPKOlHKOlLFfKNYIWzMzVOT1WoTvjkXCS1EMlIdDSFkFTyfpe1AffahGiSKOF7zlkPAcVIeMl2N0XnZR3daeZrDa4MlPj/WtVQhEcgVrQQkVJ+S5dKQ8EzlypkPIc+vIpsl6CA/15HttXWtwYZ2Y+4N7pPA5QrgWkk9FMn4VAUCqkSHkJVFtMVRtkkgmmqnWaYYtL0zWSrkMQKgPFFJOzdYppj+6Mx0hPliuVGvVmi0p9nlcuXFsx8Luwp/fCgrbyfEBXOkkp59NfSDFEGoDZWkAudX39wfL1COX5ANcRTo+Vma03yfkuQ8UUqvDgiN0pmM5gwWEL68okKaY9ZuYCGmGLnO/y6N4SCSdaALa/P89bY2XCSp1SNklfzqc77fH2eBXPERxHqAXCQD4V70wWXYmn3AQHBvPs6snSCJog0bjG9FyCg4NFzk3MMlVtkPUTfGJ/Pzu605y5UqGYdvE9h4Q4TMw2yKcSPLijm5HeDKOlKKh97ycXqTaa7OpJ0wjT+PGV9ux8QDUIySYT+K6D73qMlWuELaVSC5hvNBGBYsajK+2R8VycnHC1UsMRIefXuTQ9z3BXmiM7irfMXbR0gHihi2hhH4XuTJIPrs2xqyeLqt60e0gETn0wTTGdpJDyqDdDTn0wzaHh4uZ9+MZsMAsOW5wqHNnZhYgsKVNqQcjRh3by3ZPvc99ggZlawI/enWK+2aIn7eEmhLTvkvJalHI+BwbypNwEfXmfkZ4MPbkkl6bnmajUOHOlSjHtct9QntNjZfpyPoeHC2R9lyBsUW+GPLq3l+5MknIt4OHdPcw1miRdZ8WV9EMj3VydqTEfhEzMNijXmrRaIA44jhCESr0ZMlmtU6k1GSgkGSxmmasHjFca9GSS3DdY4Gqlju86ZJMOvutwdnyWvaUch3cUyS+56r9d7qLl01N7ckk+99BOpqqNW3YPabT1T/xM4ufGdA4LDlvcaqt2C2mPrkySoWKa8UqNq+Ua9w4WSCZgvFLn3YkqH99XopByeW+yymytye7hNDu7MzgOi1f6UeAocGl6nrfGygx3pRnpzZJJugShAso747N0Z5LUmyE5P6rHavsfj5ay7O3LcuL8FL1ZDwdlZr4BCI/s6Wa8UqdSD2i14NBQgdl6k4QDSddlX3+SpOtEOYuSCc5NVkHg5w+UqNSa7OrO3BAk73QP5ptNNV3afbecKhzZUeTyTI1yrUnOT3BkR5Fmq1PXrJvtyILDFreQagO46SyZ4a4016oNDu/oIuVFH/eeUsi9Q8XFvQU+tiPqDlHlhn0GRksszso5OJBnslrHSzjs788DcHqsgu86qCrl+QbK9ZPqanmDovTkQ+TTHi+/N0Uh43F0Tzc/t6eXNy6Vo70RWspYeZ7hYoZC2qOY9hjuSvPWWJlyrYnrCOVawFAxzWcO7WF3b/R/sFqQXG+FtEej2eKewcJi2VyjadNWTUex4LDFrbZqd6EbZLSU5fiZ8XiBllJvtqKVusOFaOeye/rv+LUXBm8Xum3uGczz7sQs3VmfpsJob3ZxT+RbTePsyiR56v5hnrp/+IbyqWqD+4YKiESDvUHYwncTlGtN8imP3T1ZJmbr9BdS7B/I3zDgfLsguZ42872MaZe27AS33rb6TnAb7cUzV7kwNUczhJyfYLgr2sHsZmMCt7J0fv/Sk+LCayxdFPZRUkS8cuEajWZrMSX26bEyQrQpz0hvdvG9Vnvd5QvTNjJNxWa+lzEb5a7bCc5sriM7uwhbuuKk/mGvdG93l7LWFBFLr8hzvstIT5Zzk1UyvkvSdW67bmAz01RYSgzT6Sw4bAO3O6l/+NfamJPizWYOPbzHFpIZ0w4WHLaJrXKlu1XqaUyna8v0ChH5NRF5XURaIvKzy459VUTOishpEXmiHfUzxpjtrl13Dq8BvwL87dJCETkEfB74GDAM/FBEDqrqh8kybYwxZo3acuegqm+q6umbHPos8Kyq1lX1HHAWeGRza2eMMeZuW7WzA3h/yfOLcdkKIvK0iJwQkRPj4+ObUjljjNkuNqxbSUR+CAze5NDXVPXf1vr6qvoM8AxE6xzW+nrGGGOu27DgoKqf/gh/9gGwa8nznXHZLZ08eXJCRM5/hPfbDCVgot2V2GTW5u3B2rz17V7twN02lfV54B9F5BtEA9IHgJdu90eq2rfRFfuoROTEaisQO5W1eXuwNne2dk1lPSoiF4GPA/8hIv8NoKqvA98G3gC+D3zJZioZY8zma8udg6o+Bzy3yrGvA1/f3BoZY4xZ6m6brdSJnml3BdrA2rw9WJs7WEdkZTXGGLO+7M7BGGPMChYcjDHGrGDBYYNs1+SCIvJk3K6zIvKVdtdnI4jIN0Xkqoi8tqSsR0R+ICJvx/92zLZwIrJLRF4QkTfi7/TvxeWd3OaUiLwkIj+N2/xHcfmoiPw4/n7/s4h0bAphCw4bZyG54ItLC5clF3wS+GsRSWx+9dZf3I6/An4ZOAT8RtzeTvP3RJ/dUl8BjqnqAeBY/LxTNIHfV9VDwGPAl+LPtZPbXAc+pao/AzwAPCkijwF/Cvy5qu4HrgG/3cY6bigLDhtkmyYXfAQ4q6rvqmoDeJaovR1FVV8EppYVfxb4Vvz4W8DnNrVSG0hVL6vqT+LHFeBNopxnndxmVdXZ+KkX/yjwKeC7cXlHtXk5Cw6b746TC25Bndy22xlQ1cvx4zFgoJ2V2Sgisgd4EPgxHd5mEUmIyKvAVeAHwDvAtKo241/p6O/33ZY+Y0vZ6OSCZmtSVRWRjpsjLiI54HvAl1W1LCKLxzqxzXF2hgdEpIto0e69ba7SprLgsAabmVxwi+jktt3OFREZUtXLIjJEdLXZMUTEIwoM/6Cq/xIXd3SbF6jqtIi8QJTup0tE3PjuoaO/39attPmeBz4vIr6IjHKHyQW3iJeBA/GMjiTRwPvzba7TZnke+EL8+AtAx9w5SnSL8HfAm6r6jSWHOrnNffEdAyKSBj5DNNbyAvCr8a91VJuXsxXSG0REjgJ/CfQB08CrqvpEfOxrwBeJZoF8WVX/q20VXWci8hTwF0AC+GacK6ujiMg/Ab9IlL75CvCHwL8SJY0cAc4Dv66qywettyQReRw4DpwCWnHxHxCNO3Rqm48QDTgniC6iv62qfywie4kmWvQArwC/qar19tV041hwMMYYs4J1KxljjFnBgoMxxpgVLDgYY4xZwYKDMcaYFSw4GGOMWcGCgzFrICKhiLwqIq+JyHdEJBOXD4rIsyLyjoicFJH/FJGD8bHvi8i0iPx7e2tvzOosOBizNvOq+oCqHgYawO/Ei8aeA/5XVfep6sPAV7mee+jPgN9qT3WNuTMWHIxZP8eB/cAngUBV/2bhgKr+VFWPx4+PAZX2VNGYO2PBwZh1ICIu0T4Wp4DDwMn21siYtbHgYMzapOO0zieAC0Q5iIzZ8iwrqzFrM6+qDywtEJHXuZ6czZgtye4cjFl//wP4IvL0QoGIHBGRX2hjnYz5UCw4GLPONMpmeRT4dDyV9XXgT4h2S0NEjgPfAX5JRC6KyBPtq60xN2dZWY0xxqxgdw7GGGNWsOBgjDFmBQsOxhhjVrDgYIwxZgULDsYYY1aw4GCMMWYFCw7GGGNW+H8QK9ml+MHZQwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "RQx7UvsucIrL", + "colab_type": "text" + }, + "source": [ + "# Stretch Goals\n", + "\n", + "## 1) Perform further data exploration on the HADS national dataset (the version before we one-hot encoded it) Make scatterplots and see if you can see any resemblance between the original scatterplots and the plot of the principal components that you made in 7.1. \n", + "\n", + "(You may or may not not see very much resemblance depending on the variables you choose, and that's ok!)\n", + "\n", + "## 2) Study \"Scree Plots\" and then try and make one for your PCA dataset. How many principal conponents do you need to retain in order for your PCs to contain 90% of the explained variance? \n", + "\n", + "We will present this topic formally at the beginning of tomorrow's lecture, so if you figure this stretch goal out, you're ahead of the game. \n", + "\n", + "## 3) Explore further the intuition behind eigenvalues and eigenvectors by creating your very own eigenfaces:\n", + "\n", + "Prioritize self-study over this stretch goal if you are not semi-comfortable with the topics of PCA, Eigenvalues, and Eigenvectors.\n", + "\n", + "![Eigenfaces](https://i.pinimg.com/236x/1c/f1/01/1cf101a9859437a5d096a04b05be06b4--faces-tattoo.jpg)\n", + "\n", + "You don't necessarily have to use this resource, but this will get you started: \n", + "[Eigenface Tutorial](https://sandipanweb.wordpress.com/2018/01/06/eigenfaces-and-a-simple-face-detector-with-pca-svd-in-python/)" + ] + } + ] +} \ No newline at end of file diff --git a/LS_DS_134_Clustering_Assignment.ipynb b/LS_DS_134_Clustering_Assignment.ipynb new file mode 100644 index 00000000..1d1d2ffa --- /dev/null +++ b/LS_DS_134_Clustering_Assignment.ipynb @@ -0,0 +1,2503 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Copy of LS_DS_134_Clustering_Assignment.ipynb", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "y-3rVFtGLMJM", + "colab_type": "text" + }, + "source": [ + "# K-Means Clustering" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "_VS3FFSFLR3a", + "colab_type": "text" + }, + "source": [ + "# 1) Use the \"Breast Cancer Wisconsin (Diagnostic) Data Set\" from Kaggle to try and cluster types of cancer cells. \n", + "\n", + "Here's the original dataset for your reference:\n", + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "899RK3bBn4OE", + "colab_type": "text" + }, + "source": [ + "## This is a supervised learning dataset\n", + "\n", + "(Because it has **labels** - The \"diagnosis\" column.)" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ws5R9X6hLJQ2", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 244 + }, + "outputId": "e6584e71-4d1b-4179-93aa-56bfb2afba09" + }, + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.decomposition import PCA # You don't necessarily have to use this\n", + "from sklearn.cluster import KMeans # You don't necessarily have to use this\n", + "from sklearn.preprocessing import StandardScaler # You don't necessarily have to use this\n", + "\n", + "df = pd.read_csv(\"https://raw.githubusercontent.com/ryanleeallred/datasets/master/Cancer_Cells.csv\")\n", + "print(df.shape)\n", + "df.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(569, 33)\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
iddiagnosisradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstUnnamed: 32
0842302M17.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.11890NaN
1842517M20.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.08902NaN
284300903M19.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.08758NaN
384348301M11.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.17300NaN
484358402M20.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.07678NaN
\n", + "
" + ], + "text/plain": [ + " id diagnosis ... fractal_dimension_worst Unnamed: 32\n", + "0 842302 M ... 0.11890 NaN\n", + "1 842517 M ... 0.08902 NaN\n", + "2 84300903 M ... 0.08758 NaN\n", + "3 84348301 M ... 0.17300 NaN\n", + "4 84358402 M ... 0.07678 NaN\n", + "\n", + "[5 rows x 33 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 73 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "IHDDqaU-ove4", + "colab_type": "text" + }, + "source": [ + "## Now it's an unsupervised learning dataset\n", + "\n", + "(Because we've removed the diagnosis label) - Use this version." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "86MHoPJon_aC", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 227 + }, + "outputId": "38f8a0ff-a8aa-4ba1-ccc1-4df42146258e" + }, + "source": [ + "df_diagnosis = df['diagnosis']\n", + "df = df.drop('diagnosis', axis=1)\n", + "df.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstUnnamed: 32
084230217.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.11890NaN
184251720.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.08902NaN
28430090319.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.08758NaN
38434830111.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.17300NaN
48435840220.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.07678NaN
\n", + "
" + ], + "text/plain": [ + " id radius_mean ... fractal_dimension_worst Unnamed: 32\n", + "0 842302 17.99 ... 0.11890 NaN\n", + "1 842517 20.57 ... 0.08902 NaN\n", + "2 84300903 19.69 ... 0.08758 NaN\n", + "3 84348301 11.42 ... 0.17300 NaN\n", + "4 84358402 20.29 ... 0.07678 NaN\n", + "\n", + "[5 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 74 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rskC80k3OKMA", + "colab_type": "text" + }, + "source": [ + "## Let's do it!\n", + "\n", + "- You might want to do some data exploration to see if you can find specific columns that will help you find distinct clusters of cells\n", + "- You might want to use the elbow method to decide on the number of clusters to use.\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "U92Y3jNKPpjJ", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 314 + }, + "outputId": "0dfdd2a5-f845-49fa-f629-16f4e6fc7c77" + }, + "source": [ + "# Perform K-Means Clustering on the Dataset\n", + "df.describe()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idradius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worstUnnamed: 32
count5.690000e+02569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.000000569.0000000.0
mean3.037183e+0714.12729219.28964991.969033654.8891040.0963600.1043410.0887990.0489190.1811620.0627980.4051721.2168532.86605940.3370790.0070410.0254780.0318940.0117960.0205420.00379516.26919025.677223107.261213880.5831280.1323690.2542650.2721880.1146060.2900760.083946NaN
std1.250206e+083.5240494.30103624.298981351.9141290.0140640.0528130.0797200.0388030.0274140.0070600.2773130.5516482.02185545.4910060.0030030.0179080.0301860.0061700.0082660.0026464.8332426.14625833.602542569.3569930.0228320.1573360.2086240.0657320.0618670.018061NaN
min8.670000e+036.9810009.71000043.790000143.5000000.0526300.0193800.0000000.0000000.1060000.0499600.1115000.3602000.7570006.8020000.0017130.0022520.0000000.0000000.0078820.0008957.93000012.02000050.410000185.2000000.0711700.0272900.0000000.0000000.1565000.055040NaN
25%8.692180e+0511.70000016.17000075.170000420.3000000.0863700.0649200.0295600.0203100.1619000.0577000.2324000.8339001.60600017.8500000.0051690.0130800.0150900.0076380.0151600.00224813.01000021.08000084.110000515.3000000.1166000.1472000.1145000.0649300.2504000.071460NaN
50%9.060240e+0513.37000018.84000086.240000551.1000000.0958700.0926300.0615400.0335000.1792000.0615400.3242001.1080002.28700024.5300000.0063800.0204500.0258900.0109300.0187300.00318714.97000025.41000097.660000686.5000000.1313000.2119000.2267000.0999300.2822000.080040NaN
75%8.813129e+0615.78000021.800000104.100000782.7000000.1053000.1304000.1307000.0740000.1957000.0661200.4789001.4740003.35700045.1900000.0081460.0324500.0420500.0147100.0234800.00455818.79000029.720000125.4000001084.0000000.1460000.3391000.3829000.1614000.3179000.092080NaN
max9.113205e+0828.11000039.280000188.5000002501.0000000.1634000.3454000.4268000.2012000.3040000.0974402.8730004.88500021.980000542.2000000.0311300.1354000.3960000.0527900.0789500.02984036.04000049.540000251.2000004254.0000000.2226001.0580001.2520000.2910000.6638000.207500NaN
\n", + "
" + ], + "text/plain": [ + " id radius_mean ... fractal_dimension_worst Unnamed: 32\n", + "count 5.690000e+02 569.000000 ... 569.000000 0.0\n", + "mean 3.037183e+07 14.127292 ... 0.083946 NaN\n", + "std 1.250206e+08 3.524049 ... 0.018061 NaN\n", + "min 8.670000e+03 6.981000 ... 0.055040 NaN\n", + "25% 8.692180e+05 11.700000 ... 0.071460 NaN\n", + "50% 9.060240e+05 13.370000 ... 0.080040 NaN\n", + "75% 8.813129e+06 15.780000 ... 0.092080 NaN\n", + "max 9.113205e+08 28.110000 ... 0.207500 NaN\n", + "\n", + "[8 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 75 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "ZEJ56VD1tQjk", + "colab_type": "code", + "colab": {} + }, + "source": [ + "df.drop(['Unnamed: 32', 'id'],axis=1, inplace=True)" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "OCJD1iULtr6p", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 227 + }, + "outputId": "73d2ccaf-ddb7-4eb4-dc4a-d9d0cda05085" + }, + "source": [ + "df.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
radius_meantexture_meanperimeter_meanarea_meansmoothness_meancompactness_meanconcavity_meanconcave points_meansymmetry_meanfractal_dimension_meanradius_setexture_seperimeter_searea_sesmoothness_secompactness_seconcavity_seconcave points_sesymmetry_sefractal_dimension_seradius_worsttexture_worstperimeter_worstarea_worstsmoothness_worstcompactness_worstconcavity_worstconcave points_worstsymmetry_worstfractal_dimension_worst
017.9910.38122.801001.00.118400.277600.30010.147100.24190.078711.09500.90538.589153.400.0063990.049040.053730.015870.030030.00619325.3817.33184.602019.00.16220.66560.71190.26540.46010.11890
120.5717.77132.901326.00.084740.078640.08690.070170.18120.056670.54350.73393.39874.080.0052250.013080.018600.013400.013890.00353224.9923.41158.801956.00.12380.18660.24160.18600.27500.08902
219.6921.25130.001203.00.109600.159900.19740.127900.20690.059990.74560.78694.58594.030.0061500.040060.038320.020580.022500.00457123.5725.53152.501709.00.14440.42450.45040.24300.36130.08758
311.4220.3877.58386.10.142500.283900.24140.105200.25970.097440.49561.15603.44527.230.0091100.074580.056610.018670.059630.00920814.9126.5098.87567.70.20980.86630.68690.25750.66380.17300
420.2914.34135.101297.00.100300.132800.19800.104300.18090.058830.75720.78135.43894.440.0114900.024610.056880.018850.017560.00511522.5416.67152.201575.00.13740.20500.40000.16250.23640.07678
\n", + "
" + ], + "text/plain": [ + " radius_mean texture_mean ... symmetry_worst fractal_dimension_worst\n", + "0 17.99 10.38 ... 0.4601 0.11890\n", + "1 20.57 17.77 ... 0.2750 0.08902\n", + "2 19.69 21.25 ... 0.3613 0.08758\n", + "3 11.42 20.38 ... 0.6638 0.17300\n", + "4 20.29 14.34 ... 0.2364 0.07678\n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 77 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "QDwlbioYuKw3", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 210 + }, + "outputId": "d5190172-4258-45b6-cb23-3d836db06990" + }, + "source": [ + "z = StandardScaler().fit_transform(df)\n", + "z = pd.DataFrame(z)\n", + "z.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314151617181920212223242526272829
01.097064-2.0733351.2699340.9843751.5684663.2835152.6528742.5324752.2175152.2557472.489734-0.5652652.8330312.487578-0.2140021.3168620.7240260.6608201.1487570.9070831.886690-1.3592932.3036012.0012371.3076862.6166652.1095262.2960762.7506221.937015
11.829821-0.3536321.6859551.908708-0.826962-0.487072-0.0238460.5481440.001392-0.8686520.499255-0.8762440.2633270.742402-0.605351-0.692926-0.4407800.260162-0.805450-0.0994441.805927-0.3692031.5351261.890489-0.375612-0.430444-0.1467491.087084-0.2438900.281190
21.5798880.4561871.5665031.5588840.9422101.0529261.3634782.0372310.939685-0.3980081.228676-0.7800830.8509281.181336-0.2970050.8149740.2130761.4248270.2370360.2935591.511870-0.0239741.3474751.4562850.5274071.0829320.8549741.9550001.1522550.201391
3-0.7689090.253732-0.592687-0.7644643.2835533.4029091.9158971.4517072.8673834.9109190.326373-0.1104090.286593-0.2883780.6897022.7442800.8195181.1150074.7326802.047511-0.2814640.133984-0.249939-0.5500213.3942753.8933971.9895882.1757866.0460414.935010
41.750297-1.1518161.7765731.8262290.2803720.5393401.3710111.428493-0.009560-0.5624501.270543-0.7902441.2731891.1903571.483067-0.0485200.8284711.144205-0.3610920.4993281.298575-1.4667701.3385391.2207240.220556-0.3133950.6131790.729259-0.868353-0.397100
\n", + "
" + ], + "text/plain": [ + " 0 1 2 ... 27 28 29\n", + "0 1.097064 -2.073335 1.269934 ... 2.296076 2.750622 1.937015\n", + "1 1.829821 -0.353632 1.685955 ... 1.087084 -0.243890 0.281190\n", + "2 1.579888 0.456187 1.566503 ... 1.955000 1.152255 0.201391\n", + "3 -0.768909 0.253732 -0.592687 ... 2.175786 6.046041 4.935010\n", + "4 1.750297 -1.151816 1.776573 ... 0.729259 -0.868353 -0.397100\n", + "\n", + "[5 rows x 30 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 78 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "m17FsEZF-Tv1", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 276 + }, + "outputId": "05ae51cf-2645-461a-d5f7-0c0167bb2a2f" + }, + "source": [ + "average_squared_distances = []\n", + "\n", + "for k in range(1,5):\n", + " kmeans = KMeans(n_clusters=k)\n", + " kmeans.fit(df)\n", + " average_squared_distances.append(kmeans.inertia_)\n", + "plt.plot(list(range(1,5)),average_squared_distances)\n", + "plt.show()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "D6wU8hG03rpW", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 210 + }, + "outputId": "a5e1257d-2efa-49a0-93b0-31ff22d48f5d" + }, + "source": [ + "z['clusters'] = KMeans(n_clusters=2).fit(z).labels_\n", + "z.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
01234567891011121314151617181920212223242526272829clusters
01.097064-2.0733351.2699340.9843751.5684663.2835152.6528742.5324752.2175152.2557472.489734-0.5652652.8330312.487578-0.2140021.3168620.7240260.6608201.1487570.9070831.886690-1.3592932.3036012.0012371.3076862.6166652.1095262.2960762.7506221.9370151
11.829821-0.3536321.6859551.908708-0.826962-0.487072-0.0238460.5481440.001392-0.8686520.499255-0.8762440.2633270.742402-0.605351-0.692926-0.4407800.260162-0.805450-0.0994441.805927-0.3692031.5351261.890489-0.375612-0.430444-0.1467491.087084-0.2438900.2811901
21.5798880.4561871.5665031.5588840.9422101.0529261.3634782.0372310.939685-0.3980081.228676-0.7800830.8509281.181336-0.2970050.8149740.2130761.4248270.2370360.2935591.511870-0.0239741.3474751.4562850.5274071.0829320.8549741.9550001.1522550.2013911
3-0.7689090.253732-0.592687-0.7644643.2835533.4029091.9158971.4517072.8673834.9109190.326373-0.1104090.286593-0.2883780.6897022.7442800.8195181.1150074.7326802.047511-0.2814640.133984-0.249939-0.5500213.3942753.8933971.9895882.1757866.0460414.9350101
41.750297-1.1518161.7765731.8262290.2803720.5393401.3710111.428493-0.009560-0.5624501.270543-0.7902441.2731891.1903571.483067-0.0485200.8284711.144205-0.3610920.4993281.298575-1.4667701.3385391.2207240.220556-0.3133950.6131790.729259-0.868353-0.3971001
\n", + "
" + ], + "text/plain": [ + " 0 1 2 ... 28 29 clusters\n", + "0 1.097064 -2.073335 1.269934 ... 2.750622 1.937015 1\n", + "1 1.829821 -0.353632 1.685955 ... -0.243890 0.281190 1\n", + "2 1.579888 0.456187 1.566503 ... 1.152255 0.201391 1\n", + "3 -0.768909 0.253732 -0.592687 ... 6.046041 4.935010 1\n", + "4 1.750297 -1.151816 1.776573 ... -0.868353 -0.397100 1\n", + "\n", + "[5 rows x 31 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 79 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_RDs1G8q9-YS", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Wbz6GVqo9AHx", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 67 + }, + "outputId": "10ee3578-84ea-40a5-bdd2-362aa669fc1b" + }, + "source": [ + "z['diagnosis'] = df_diagnosis\n", + "z['diagnosis'] = z['diagnosis'].replace({'M':1, 'B':0})\n", + "(z['clusters'] == z['diagnosis']).value_counts()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True 515\n", + "False 54\n", + "dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 80 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "5Bakn28P9mS0", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "4b8ad3da-0f0d-447d-e04a-641ae050ba63" + }, + "source": [ + "515/(515+54)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.9050966608084359" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 88 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "7ghqYSxrP_FE", + "colab_type": "text" + }, + "source": [ + "## Check you work: \n", + "\n", + "This is something that in a truly unsupervised learning situation **WOULD NOT BE POSSIBLE**. But for educational purposes go back and grab the true diagnosis column (label) from the original dataset. Take your cluster labels and compare them to the original diagnosis column. You can make scatterplots for each to see how they compare or you can calculate a percent accuracy score like: \n", + "\\begin{align}\n", + "\\frac{\\text{Num Correct Labels}}{\\text{Num Total Observations}}\n", + "\\end{align}" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OIG7-yGLP-eA", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Your Code Here" + ], + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "BedOTS0eJ9_K", + "colab_type": "text" + }, + "source": [ + "# 2) Perform PCA on your dataset first and *then* use k-means clustering. \n", + "\n", + "- You need to standardize your data before PCA.\n", + "- First try clustering just on PC1 and PC2 so that you can make a scatterplot of your clustering.\n", + "- Then use use a scree plot to decide how many principal components to include in your clustering, and use however many principal components you need in order to retain 90% of the variation of the original dataset\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "dW1AeAK8PNah", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "db57b0bd-1dfb-4f75-f3f2-dae414bacdf2" + }, + "source": [ + "##### Your Code Here #####\n", + "z = StandardScaler().fit_transform(df)\n", + "PCA_features =PCA(.9).fit_transform(z)\n", + "PCA_features.shape" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "(569, 7)" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 82 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "b1XNP64b1VF3", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 190 + }, + "outputId": "a2fe341f-a38b-48d5-dfa1-487a08653dad" + }, + "source": [ + "PCA_features = pd.DataFrame(PCA_features)\n", + "PCA_features.columns=(['pc1','pc2','pc3','pc4','pc5','pc6','pc7'])\n", + "PCA_features.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pc1pc2pc3pc4pc5pc6pc7
09.1928371.948583-1.1231663.633731-1.1951101.4114242.159370
12.387802-3.768172-0.5292931.1182640.6217750.0286560.013358
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.668166
37.12295310.275589-3.2327900.152547-2.9608783.0534221.429911
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.936213
\n", + "
" + ], + "text/plain": [ + " pc1 pc2 pc3 pc4 pc5 pc6 pc7\n", + "0 9.192837 1.948583 -1.123166 3.633731 -1.195110 1.411424 2.159370\n", + "1 2.387802 -3.768172 -0.529293 1.118264 0.621775 0.028656 0.013358\n", + "2 5.733896 -1.075174 -0.551748 0.912083 -0.177086 0.541452 -0.668166\n", + "3 7.122953 10.275589 -3.232790 0.152547 -2.960878 3.053422 1.429911\n", + "4 3.935302 -1.948072 1.389767 2.940639 0.546747 -1.226495 -0.936213" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 83 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "qZsAEPga1-5C", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 190 + }, + "outputId": "1d2f0ddd-9a19-42f9-cc0c-47add9494539" + }, + "source": [ + "PCA_features['clusters'] = KMeans(n_clusters=2).fit(PCA_features).labels_\n", + "PCA_features.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pc1pc2pc3pc4pc5pc6pc7clusters
09.1928371.948583-1.1231663.633731-1.1951101.4114242.1593701
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133581
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681661
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362131
\n", + "
" + ], + "text/plain": [ + " pc1 pc2 pc3 ... pc6 pc7 clusters\n", + "0 9.192837 1.948583 -1.123166 ... 1.411424 2.159370 1\n", + "1 2.387802 -3.768172 -0.529293 ... 0.028656 0.013358 1\n", + "2 5.733896 -1.075174 -0.551748 ... 0.541452 -0.668166 1\n", + "3 7.122953 10.275589 -3.232790 ... 3.053422 1.429911 1\n", + "4 3.935302 -1.948072 1.389767 ... -1.226495 -0.936213 1\n", + "\n", + "[5 rows x 8 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 84 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "sovD0XWJ27Ga", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 190 + }, + "outputId": "a28dd0a6-5a63-47b9-f314-2af5417c68e8" + }, + "source": [ + "PCA_features['diagnosis'] = df_diagnosis\n", + "PCA_features.head()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
pc1pc2pc3pc4pc5pc6pc7clustersdiagnosis
09.1928371.948583-1.1231663.633731-1.1951101.4114242.1593701M
12.387802-3.768172-0.5292931.1182640.6217750.0286560.0133581M
25.733896-1.075174-0.5517480.912083-0.1770860.541452-0.6681661M
37.12295310.275589-3.2327900.152547-2.9608783.0534221.4299111M
43.935302-1.9480721.3897672.9406390.546747-1.226495-0.9362131M
\n", + "
" + ], + "text/plain": [ + " pc1 pc2 pc3 ... pc7 clusters diagnosis\n", + "0 9.192837 1.948583 -1.123166 ... 2.159370 1 M\n", + "1 2.387802 -3.768172 -0.529293 ... 0.013358 1 M\n", + "2 5.733896 -1.075174 -0.551748 ... -0.668166 1 M\n", + "3 7.122953 10.275589 -3.232790 ... 1.429911 1 M\n", + "4 3.935302 -1.948072 1.389767 ... -0.936213 1 M\n", + "\n", + "[5 rows x 9 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 85 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "koXif2MV75Qq", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 67 + }, + "outputId": "3146696f-9bc9-404c-f338-021ce2d2dc6c" + }, + "source": [ + "PCA_features['diagnosis'] = PCA_features['diagnosis'].replace({'M': 1, 'B':0})\n", + "(PCA_features['diagnosis'] == PCA_features['clusters']).value_counts()" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True 518\n", + "False 51\n", + "dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 86 + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "CGDw8PJ88f4m", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 33 + }, + "outputId": "4f89413e-5bc2-4978-93b9-615ce383494e" + }, + "source": [ + "518/(518+51)" + ], + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0.9103690685413005" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 87 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PkrfbzfBROpP", + "colab_type": "text" + }, + "source": [ + "## Check your work: \n", + "\n", + "- Compare your PC1, PC2 clustering scatterplot to the clustering scatterplots you made on the raw data\n", + "- Calculate accuracy scores for both the PC1,PC2 Principal component clustering and the 90% of explained variance clustering.\n", + "\n", + "How do your accuracy scores -when preprocessing the data with PCA- compare to the accuracy when simply clustering on the raw data?" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wKBwVaGOOYsq", + "colab_type": "text" + }, + "source": [ + "# Stretch Goals:\n", + "\n", + "- Study for the Sprint Challenge\n", + "- Work on your Data Storytelling Project" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "9p2djjY5LNWd", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file