├── README.md ├── .gitattributes ├── LICENSE ├── .gitignore └── src └── outliers.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # statistics_basics 2 | 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 SaurabhSSB 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | share/python-wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | MANIFEST 28 | 29 | # PyInstaller 30 | # Usually these files are written by a python script from a template 31 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 32 | *.manifest 33 | *.spec 34 | 35 | # Installer logs 36 | pip-log.txt 37 | pip-delete-this-directory.txt 38 | 39 | # Unit test / coverage reports 40 | htmlcov/ 41 | .tox/ 42 | .nox/ 43 | .coverage 44 | .coverage.* 45 | .cache 46 | nosetests.xml 47 | coverage.xml 48 | *.cover 49 | *.py,cover 50 | .hypothesis/ 51 | .pytest_cache/ 52 | cover/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | .pybuilder/ 76 | target/ 77 | 78 | # Jupyter Notebook 79 | .ipynb_checkpoints 80 | 81 | # IPython 82 | profile_default/ 83 | ipython_config.py 84 | 85 | # pyenv 86 | # For a library or package, you might want to ignore these files since the code is 87 | # intended to run in multiple environments; otherwise, check them in: 88 | # .python-version 89 | 90 | # pipenv 91 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 92 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 93 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 94 | # install all needed dependencies. 95 | #Pipfile.lock 96 | 97 | # poetry 98 | # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. 99 | # This is especially recommended for binary packages to ensure reproducibility, and is more 100 | # commonly ignored for libraries. 101 | # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control 102 | #poetry.lock 103 | 104 | # pdm 105 | # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. 106 | #pdm.lock 107 | # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it 108 | # in version control. 109 | # https://pdm.fming.dev/#use-with-ide 110 | .pdm.toml 111 | 112 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm 113 | __pypackages__/ 114 | 115 | # Celery stuff 116 | celerybeat-schedule 117 | celerybeat.pid 118 | 119 | # SageMath parsed files 120 | *.sage.py 121 | 122 | # Environments 123 | .env 124 | .venv 125 | env/ 126 | venv/ 127 | ENV/ 128 | env.bak/ 129 | venv.bak/ 130 | 131 | # Spyder project settings 132 | .spyderproject 133 | .spyproject 134 | 135 | # Rope project settings 136 | .ropeproject 137 | 138 | # mkdocs documentation 139 | /site 140 | 141 | # mypy 142 | .mypy_cache/ 143 | .dmypy.json 144 | dmypy.json 145 | 146 | # Pyre type checker 147 | .pyre/ 148 | 149 | # pytype static type analyzer 150 | .pytype/ 151 | 152 | # Cython debug symbols 153 | cython_debug/ 154 | 155 | # PyCharm 156 | # JetBrains specific template is maintained in a separate JetBrains.gitignore that can 157 | # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore 158 | # and can be added to the global gitignore or merged into this file. For a more nuclear 159 | # option (not recommended) you can uncomment the following to ignore the entire idea folder. 160 | #.idea/ 161 | -------------------------------------------------------------------------------- /src/outliers.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "nbformat": 4, 3 | "nbformat_minor": 0, 4 | "metadata": { 5 | "colab": { 6 | "provenance": [], 7 | "authorship_tag": "ABX9TyMfCedhrXuwYNWRLm4Y6lRA", 8 | "include_colab_link": true 9 | }, 10 | "kernelspec": { 11 | "name": "python3", 12 | "display_name": "Python 3" 13 | }, 14 | "language_info": { 15 | "name": "python" 16 | } 17 | }, 18 | "cells": [ 19 | { 20 | "cell_type": "markdown", 21 | "metadata": { 22 | "id": "view-in-github", 23 | "colab_type": "text" 24 | }, 25 | "source": [ 26 | "\"Open" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 1, 32 | "metadata": { 33 | "id": "nh30OqNafZFX" 34 | }, 35 | "outputs": [], 36 | "source": [ 37 | "import numpy as np\n", 38 | "import matplotlib.pyplot as plt\n", 39 | "%matplotlib inline" 40 | ] 41 | }, 42 | { 43 | "cell_type": "code", 44 | "source": [ 45 | "### Data\n", 46 | "data = [11,10,12,14,12,15,14,13,15,102,12,14,17,19,107,10,13,12,14,12,108,12,11,14,13,15,10,15,12,10,14,13,15,10]" 47 | ], 48 | "metadata": { 49 | "id": "5jagRSSgjKva" 50 | }, 51 | "execution_count": 2, 52 | "outputs": [] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "source": [ 57 | "plt.hist(data)" 58 | ], 59 | "metadata": { 60 | "colab": { 61 | "base_uri": "https://localhost:8080/", 62 | "height": 499 63 | }, 64 | "id": "jhwNH16Tjk9q", 65 | "outputId": "870f5856-3d6d-41dc-e4ed-5b2617f1ffa8" 66 | }, 67 | "execution_count": 3, 68 | "outputs": [ 69 | { 70 | "output_type": "execute_result", 71 | "data": { 72 | "text/plain": [ 73 | "(array([31., 0., 0., 0., 0., 0., 0., 0., 0., 3.]),\n", 74 | " array([ 10. , 19.8, 29.6, 39.4, 49.2, 59. , 68.8, 78.6, 88.4,\n", 75 | " 98.2, 108. ]),\n", 76 | " )" 77 | ] 78 | }, 79 | "metadata": {}, 80 | "execution_count": 3 81 | }, 82 | { 83 | "output_type": "display_data", 84 | "data": { 85 | "text/plain": [ 86 | "
" 87 | ], 88 | "image/png": "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0Cqyw3lPDABAifjbLgBAUuIDAEhKfAAASYkPACAp8XGUaGlpibPPPjtGjRoVY8eOjUsvvTS2bt3aY82+ffuiqakpxowZEyNHjoy5c+ce9GFu9M3SpUujoqIiFi5cWDxnv0vrd7/7XXzoQx+KMWPGxIgRI+LMM8+MzZs3F69nWRY33XRTjBs3LkaMGBGzZs2KZ555ZgAnLl8HDhyIG2+8MSZOnBgjRoyIk08+Ob785S/3+Jsb9rvv1q9fHxdffHHU19dHRUVF3HvvvT2uH87evvjiizFv3ryorq6O0aNHx9VXXx0vvfRSwu9iYImPo0Rra2s0NTXFxo0bY/Xq1bF///644IILoqurq7hm0aJFcf/998c999wTra2tsXPnzrjssssGcOrB4fHHH4///M//jClTpvQ4b79L549//GPMnDkzhg4dGg888EA8/fTT8fWvfz3e+MY3Ftfccsstcdttt8Xtt98emzZtije84Q0xe/bs2Ldv3wBOXp5uvvnmWL58efzHf/xH/OIXv4ibb745brnllvj3f//34hr73XddXV0xderUWLZs2SGvH87ezps3L37+85/H6tWrY9WqVbF+/fr4+Mc/nupbGHgZR6Xdu3dnEZG1trZmWZZle/bsyYYOHZrdc889xTW/+MUvsojINmzYMFBjlr29e/dmp5xySrZ69ers3e9+d3bddddlWWa/S+2zn/1sds4557zq9e7u7qyuri772te+Vjy3Z8+erKqqKvve976XYsRB5aKLLso++tGP9jh32WWXZfPmzcuyzH6XUkRkK1euLN4+nL19+umns4jIHn/88eKaBx54IKuoqMh+97vfJZt9IHnm4yjV2dkZERE1NTUREdHW1hb79++PWbNmFddMmjQpJkyYEBs2bBiQGQeDpqamuOiii3rsa4T9LrX/+7//i+nTp8e//Mu/xNixY+Oss86K//7v/y5e37ZtW7S3t/fY71wuFzNmzLDfffDOd74z1qxZE7/61a8iIuKnP/1pPProozFnzpyIsN/96XD2dsOGDTF69OiYPn16cc2sWbNiyJAhsWnTpuQzD4QB/6u2HKy7uzsWLlwYM2fOjMmTJ0dERHt7ewwbNuygP7pXW1sb7e3tAzBl+bv77rvjJz/5STz++OMHXbPfpfXrX/86li9fHosXL47Pfe5z8fjjj8enPvWpGDZsWMyfP7+4p3//Kcj2u29uuOGGyOfzMWnSpDjmmGPiwIED8ZWvfCXmzZsXEWG/+9Hh7G17e3uMHTu2x/XKysqoqal53ey/+DgKNTU1xVNPPRWPPvroQI8yaO3YsSOuu+66WL16dQwfPnygxxn0uru7Y/r06fHVr341IiLOOuuseOqpp+L222+P+fPnD/B0g88PfvCDuOuuu2LFihVxxhlnxJYtW2LhwoVRX19vvzkq+LXLUWbBggWxatWqeOSRR2L8+PHF83V1dfHKK6/Enj17eqzv6OiIurq6xFOWv7a2tti9e3e87W1vi8rKyqisrIzW1ta47bbborKyMmpra+13CY0bNy5OP/30HudOO+202L59e0REcU///t1E9rtvPvOZz8QNN9wQl19+eZx55pnx4Q9/OBYtWhQtLS0RYb/70+HsbV1dXezevbvH9T//+c/x4osvvm72X3wcJbIsiwULFsTKlStj7dq1MXHixB7Xp02bFkOHDo01a9YUz23dujW2b98ejY2Nqccte+eff3787Gc/iy1bthSP6dOnx7x584r/tt+lM3PmzIPeOv6rX/0qTjjhhIiImDhxYtTV1fXY73w+H5s2bbLfffDyyy/HkCE9//d+zDHHRHd3d0TY7/50OHvb2NgYe/bsiba2tuKatWvXRnd3d8yYMSP5zANioF/xyl9cc801WS6Xy9atW5ft2rWreLz88svFNZ/4xCeyCRMmZGvXrs02b96cNTY2Zo2NjQM49eDyt+92yTL7XUqPPfZYVllZmX3lK1/Jnnnmmeyuu+7Kjj322Oy73/1ucc3SpUuz0aNHZ/fdd1/25JNPZpdcckk2ceLE7E9/+tMATl6e5s+fn73pTW/KVq1alW3bti374Q9/mB133HHZ9ddfX1xjv/tu79692RNPPJE98cQTWURk3/jGN7Innngi+81vfpNl2eHt7YUXXpidddZZ2aZNm7JHH300O+WUU7IrrrhioL6l5MTHUSIiDnnccccdxTV/+tOfsk9+8pPZG9/4xuzYY4/N3ve+92W7du0auKEHmb+PD/tdWvfff382efLkrKqqKps0aVL2X//1Xz2ud3d3ZzfeeGNWW1ubVVVVZeeff362devWAZq2vOXz+ey6667LJkyYkA0fPjw76aSTss9//vNZoVAorrHffffII48c8v/X8+fPz7Ls8Pb2hRdeyK644ops5MiRWXV1dXbVVVdle/fuHYDvZmBUZNnffOQdAEA/85oPACAp8QEAJCU+AICkxAcAkJT4AACSEh8AQFLiAwBISnwAAEmJDwAgKfEBACQlPgCApMQHAJDU/wN5GuTNLM6DwwAAAABJRU5ErkJggg==\n" 89 | }, 90 | "metadata": {} 91 | } 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "source": [ 97 | "# Z- score\n", 98 | "outliers= []\n", 99 | "def detect_outliers(data_x):\n", 100 | " threshold= 3 ## 3rd standard deviation\n", 101 | " mean=np.mean(data_x)\n", 102 | " sd= np.std(data_x)\n", 103 | "\n", 104 | " for i in data_x:\n", 105 | " z_score= (i-mean)/sd\n", 106 | " if np.abs(z_score)>threshold:\n", 107 | " outliers.append(i)\n", 108 | " return outliers" 109 | ], 110 | "metadata": { 111 | "id": "OkhfgTdtjyvp" 112 | }, 113 | "execution_count": 4, 114 | "outputs": [] 115 | }, 116 | { 117 | "cell_type": "code", 118 | "source": [ 119 | "outliers_z= detect_outliers(data)\n", 120 | "print(\"Outlier found using z-score:- \\n\", outliers_z)" 121 | ], 122 | "metadata": { 123 | "colab": { 124 | "base_uri": "https://localhost:8080/" 125 | }, 126 | "id": "4An5g9PrnusF", 127 | "outputId": "f6ef25f4-4cec-4305-ba91-2c252e4b9e26" 128 | }, 129 | "execution_count": 5, 130 | "outputs": [ 131 | { 132 | "output_type": "stream", 133 | "name": "stdout", 134 | "text": [ 135 | "Outlier found using z-score:- \n", 136 | " [102, 107, 108]\n" 137 | ] 138 | } 139 | ] 140 | }, 141 | { 142 | "cell_type": "markdown", 143 | "source": [ 144 | "## IQR\n", 145 | "Step 1. Sort the data\n", 146 | "\n", 147 | "Step 2. Calculate Q1(25%) and Q3(75%)\n", 148 | "\n", 149 | "Step 3. IQR(Q3-q1)\n", 150 | "\n", 151 | "Step 4. Find the lower fence q1- 1.5(IQR)\n", 152 | "\n", 153 | "Step 5. Find the upeer fence q3+ 1.5(IQR)\n" 154 | ], 155 | "metadata": { 156 | "id": "tsYVd9uvoMoG" 157 | } 158 | }, 159 | { 160 | "cell_type": "code", 161 | "source": [ 162 | "## Sort\n", 163 | "data= sorted(data)\n", 164 | "data" 165 | ], 166 | "metadata": { 167 | "colab": { 168 | "base_uri": "https://localhost:8080/" 169 | }, 170 | "id": "wfgybA6-qQn3", 171 | "outputId": "0bdf8f2a-5f8f-4719-8c33-bd69ae62c86b" 172 | }, 173 | "execution_count": 6, 174 | "outputs": [ 175 | { 176 | "output_type": "execute_result", 177 | "data": { 178 | "text/plain": [ 179 | "[10,\n", 180 | " 10,\n", 181 | " 10,\n", 182 | " 10,\n", 183 | " 10,\n", 184 | " 11,\n", 185 | " 11,\n", 186 | " 12,\n", 187 | " 12,\n", 188 | " 12,\n", 189 | " 12,\n", 190 | " 12,\n", 191 | " 12,\n", 192 | " 12,\n", 193 | " 13,\n", 194 | " 13,\n", 195 | " 13,\n", 196 | " 13,\n", 197 | " 14,\n", 198 | " 14,\n", 199 | " 14,\n", 200 | " 14,\n", 201 | " 14,\n", 202 | " 14,\n", 203 | " 15,\n", 204 | " 15,\n", 205 | " 15,\n", 206 | " 15,\n", 207 | " 15,\n", 208 | " 17,\n", 209 | " 19,\n", 210 | " 102,\n", 211 | " 107,\n", 212 | " 108]" 213 | ] 214 | }, 215 | "metadata": {}, 216 | "execution_count": 6 217 | } 218 | ] 219 | }, 220 | { 221 | "cell_type": "code", 222 | "source": [ 223 | "q1,q3= np.percentile(data,[25,75])\n", 224 | "print(q1,q3)" 225 | ], 226 | "metadata": { 227 | "colab": { 228 | "base_uri": "https://localhost:8080/" 229 | }, 230 | "id": "7QSoHBiyqaSM", 231 | "outputId": "32d7e4a7-3392-40ef-a0df-1fb2caec7f85" 232 | }, 233 | "execution_count": 7, 234 | "outputs": [ 235 | { 236 | "output_type": "stream", 237 | "name": "stdout", 238 | "text": [ 239 | "12.0 15.0\n" 240 | ] 241 | } 242 | ] 243 | }, 244 | { 245 | "cell_type": "code", 246 | "source": [ 247 | "IQR= q3-q1\n", 248 | "print(IQR)" 249 | ], 250 | "metadata": { 251 | "colab": { 252 | "base_uri": "https://localhost:8080/" 253 | }, 254 | "id": "WzXgrJQ-qqDx", 255 | "outputId": "3cbc4a15-5eb5-426e-d23a-639fc9dc1724" 256 | }, 257 | "execution_count": 8, 258 | "outputs": [ 259 | { 260 | "output_type": "stream", 261 | "name": "stdout", 262 | "text": [ 263 | "3.0\n" 264 | ] 265 | } 266 | ] 267 | }, 268 | { 269 | "cell_type": "code", 270 | "source": [ 271 | "## Finding the lower fence and upper fence\n", 272 | "lower_fence= q1- 1.5* IQR\n", 273 | "upper_fence= q3+ 1.5* IQR\n", 274 | "print(\"lower_fence= \", lower_fence)\n", 275 | "print(\"upper_fence= \", upper_fence)" 276 | ], 277 | "metadata": { 278 | "colab": { 279 | "base_uri": "https://localhost:8080/" 280 | }, 281 | "id": "WuVPQ06NqwBZ", 282 | "outputId": "d2a2bc03-f8b9-4bb0-9695-9e8a4f6b60b9" 283 | }, 284 | "execution_count": 9, 285 | "outputs": [ 286 | { 287 | "output_type": "stream", 288 | "name": "stdout", 289 | "text": [ 290 | "lower_fence= 7.5\n", 291 | "upper_fence= 19.5\n" 292 | ] 293 | } 294 | ] 295 | }, 296 | { 297 | "cell_type": "code", 298 | "source": [ 299 | "outliers_iqr=[]\n", 300 | "for i in data:\n", 301 | " if(i< lower_fence or i> upper_fence):\n", 302 | " outliers_iqr.append(i)\n", 303 | "\n", 304 | "print(\"Outliers found using IQR:- \\n\",outliers_iqr)" 305 | ], 306 | "metadata": { 307 | "colab": { 308 | "base_uri": "https://localhost:8080/" 309 | }, 310 | "id": "5P6RbQyurdRQ", 311 | "outputId": "d6c3140c-a1b6-4979-8816-f627f3565a7b" 312 | }, 313 | "execution_count": 10, 314 | "outputs": [ 315 | { 316 | "output_type": "stream", 317 | "name": "stdout", 318 | "text": [ 319 | "Outliers found using IQR:- \n", 320 | " [102, 107, 108]\n" 321 | ] 322 | } 323 | ] 324 | }, 325 | { 326 | "cell_type": "code", 327 | "source": [ 328 | "import seaborn as sns" 329 | ], 330 | "metadata": { 331 | "id": "YxRYqJU8v4Xh" 332 | }, 333 | "execution_count": 11, 334 | "outputs": [] 335 | }, 336 | { 337 | "cell_type": "code", 338 | "source": [ 339 | "sns.boxplot(data,orient= \"h\")" 340 | ], 341 | "metadata": { 342 | "colab": { 343 | "base_uri": "https://localhost:8080/", 344 | "height": 447 345 | }, 346 | "id": "U8MyAa5Yv8RZ", 347 | "outputId": "83788344-b366-43c6-e2a4-83df5ea26fd0" 348 | }, 349 | "execution_count": 14, 350 | "outputs": [ 351 | { 352 | "output_type": "execute_result", 353 | "data": { 354 | "text/plain": [ 355 | "" 356 | ] 357 | }, 358 | "metadata": {}, 359 | "execution_count": 14 360 | }, 361 | { 362 | "output_type": "display_data", 363 | "data": { 364 | "text/plain": [ 365 | "
" 366 | ], 367 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAggAAAGdCAYAAAB3v4sOAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAErdJREFUeJzt3X+s1XX9wPHX/QEXUO5FdNwLCezSdBRKo2juSsM/ZP2Ya5XNLXc1lm4uuS7QrbKQGAWhtvrDAsxWbSXVYstKln8wMe5YN0LCSFRwkwETL2wR997kh8T9fP9wnG/XFyCc++Nw8fHY7vB8Pp/z+bzva4775Py6VUVRFAEA8D+qK70AAODiIxAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACCpLfeOvb29ceDAgRg7dmxUVVUN5JoAgEFSFEX09PTEpEmTorr67I8TlB0IBw4ciMmTJ5d7dwCggvbv3x9XX331WfeXHQhjx44tXaC+vr7c0wAAQ6i7uzsmT55c+jl+NmUHwumnFerr6wUCAAwz7/byAC9SBAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAACS2kovoD8OHjwYXV1dF3SfhoaGaGxsHKQVAcClYdgGwsGDB+OOO78YJ986cUH3GzGyLp785S9EAgCcw7ANhK6urjj51ok4Nu2m6B3VENXHjsToPe1xrHlu9I4ed8b7VB/vinhtU3R1dQkEADiHYRsIp/WOaojey676/9ujx/W5DQBcOC9SBAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEBy0QXC8ePHY/fu3XH8+PFKL+Wchss6AaAcF10g7Nu3L+65557Yt29fpZdyTsNlnQBQjosuEACAyhMIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACARCAAAIlAAAASgQAAJAIBAEgEAgCQCAQAIBEIAEAiEACApLbSCwCAi92pU6dix44dcfjw4Rg/fnzMnDkzampqBuXcM2bMiJ07dw7KtS6EQACAc2hvb4/Vq1dHZ2dnaVtTU1MsWLAg5s6dO+DnrqmpiVOnTg34tS6UpxgA4Cza29tj6dKlMW3atFi1alX86U9/ilWrVsW0adNi6dKl0d7ePmDnXrx4cVRVVUV9fX1ERCxevHjArlUOgQAAZ3Dq1KlYvXp1tLS0xPLly2PGjBkxZsyYmDFjRixfvjxaWlpizZo1ff61X+65p0+fHj/96U+jpaUl1q1bFzfeeGP87Gc/i+nTp/f7WuU676cYTpw4ESdOnCjd7u7uHpQFnbZ3795+7R+s+w7kOQC4eO3YsSM6OztjyZIlUV3d99/T1dXV0draGm1tbbFjx46YNWtWv869ffv20u3a2tp07v5cq1znHQgrV66MZcuWDeZa+lixYsWwPDcAl4bDhw9HRERzc/MZ95/efvq4/pz7nbfPtr2ca5XrvAPhG9/4RjzwwAOl293d3TF58uRBWVTE28+9TJ069az79+7dW/YP+nc79/noz/UBuPiNHz8+IiL27NkTM2bMSPv37NnT57j+nPudt9957v5cq1znHQh1dXVRV1c3mGvpY+rUqXHttdcOu3MDcGmYOXNmNDU1xdq1a2P58uV9nmbo7e2NtWvXxsSJE2PmzJn9Pvf/3v72t7/d59z9vVa5vEgRAM6gpqYmFixYEB0dHfHQQw/Fzp074+jRo7Fz58546KGHoqOjI+69996yPqPgned+5ZVX4u67746Ojo647bbb4i9/+Uvcdddd8corr/T7WuXyOQgAcBZz586NZcuWxerVq6Otra20feLEibFs2bJ+fTbB2c59+k0Ap5/GHohrlUMgAMA5zJ07N+bMmTMon6R4pnP7JEUAGCZqamoG7e2FZzr3UL2V8Vy8BgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQHLRBcKUKVPiiSeeiClTplR6Kec0XNYJAOWorfQC3mnUqFFx7bXXVnoZ72q4rBMAynHRPYIAAFSeQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBIBAIAkAgEACCprfQC+qv6eNfbfx470ufPcx0LAJzbsA2EhoaGGDGyLuK1TX22j97Tfs77jRhZFw0NDYO5NAAY9oZtIDQ2NsaTv/xFdHVd2KMCDQ0N0djYOEirAoBLw7ANhIi3I8EPewAYeF6kCAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkAgEASAQCAJAIBAAgEQgAQCIQAIBEIAAAiUAAABKBAAAkteXesSiKiIjo7u4esMUAAIPr9M/t0z/Hz6bsQOjp6YmIiMmTJ5d7CgCgQnp6eqKhoeGs+6uKd0uIs+jt7Y0DBw7E2LFjo6qqquwFXiq6u7tj8uTJsX///qivr6/0ci555j20zHtomffQey/NvCiK6OnpiUmTJkV19dlfaVD2IwjV1dVx9dVXl3v3S1Z9ff0l/z/XxcS8h5Z5Dy3zHnrvlZmf65GD07xIEQBIBAIAkAiEAVJXVxdLly6Nurq6Si/lPcG8h5Z5Dy3zHnpmnpX9IkUA4NLlEQQAIBEIAEAiEACARCAAAIlAuEArV66Mj370ozF27NiYMGFCfPazn41du3b1Oeb48ePR1tYWV155ZVx++eXx+c9/Pg4ePFihFV86Hn744aiqqopFixaVtpn1wHv99dfjjjvuiCuvvDJGjx4d119/fTz//POl/UVRxLe+9a2YOHFijB49OubNmxevvvpqBVc8fJ06dSqWLFkSzc3NMXr06Hj/+98f3/nOd/p8Rr55l6+9vT0+/elPx6RJk6Kqqip+//vf99l/PrM9fPhwtLa2Rn19fYwbNy7uvvvu+M9//jOE30XlCIQLtGnTpmhra4u//vWvsWHDhjh58mR8/OMfjzfffLN0zP333x9PP/10rFu3LjZt2hQHDhyIW2+9tYKrHv62bt0aP/7xj2PmzJl9tpv1wPr3v/8dc+bMiREjRsQzzzwTL730Unz/+9+PK664onTMo48+Go899lg8/vjjsWXLlrjsssviE5/4RBw/fryCKx+eHnnkkVizZk386Ec/ipdffjkeeeSRePTRR+OHP/xh6RjzLt+bb74ZH/rQh2LVqlVn3H8+s21tbY2dO3fGhg0bYv369dHe3h733HPPUH0LlVXQL4cOHSoioti0aVNRFEVx5MiRYsSIEcW6detKx7z88stFRBQdHR2VWuaw1tPTU1xzzTXFhg0biptuuqlYuHBhURRmPRi+/vWvFx/72MfOur+3t7doamoqvve975W2HTlypKirqyt+/etfD8USLym33HJLcdddd/XZduuttxatra1FUZj3QIqI4qmnnirdPp/ZvvTSS0VEFFu3bi0d88wzzxRVVVXF66+/PmRrrxSPIPRTV1dXRESMHz8+IiK2bdsWJ0+ejHnz5pWOmT59ekyZMiU6Ojoqssbhrq2tLW655ZY+M40w68Hwxz/+MWbPnh233XZbTJgwIWbNmhU/+clPSvv37NkTnZ2dfWbe0NAQN9xwg5mX4cYbb4xnn302du/eHRER//jHP2Lz5s3xqU99KiLMezCdz2w7Ojpi3LhxMXv27NIx8+bNi+rq6tiyZcuQr3molf3Lmnj7N1ouWrQo5syZE9ddd11ERHR2dsbIkSNj3LhxfY5tbGyMzs7OCqxyePvNb34Tf//732Pr1q1pn1kPvNdeey3WrFkTDzzwQHzzm9+MrVu3xle+8pUYOXJkzJ8/vzTXxsbGPvcz8/I8+OCD0d3dHdOnT4+ampo4depUrFixIlpbWyMizHsQnc9sOzs7Y8KECX3219bWxvjx498T8xcI/dDW1hYvvvhibN68udJLuSTt378/Fi5cGBs2bIhRo0ZVejnvCb29vTF79uz47ne/GxERs2bNihdffDEef/zxmD9/foVXd+n57W9/G2vXro1f/epXMWPGjHjhhRdi0aJFMWnSJPOm4jzFUKb77rsv1q9fH88991yfX3vd1NQUb731Vhw5cqTP8QcPHoympqYhXuXwtm3btjh06FB8+MMfjtra2qitrY1NmzbFY489FrW1tdHY2GjWA2zixInxwQ9+sM+2D3zgA7Fv376IiNJc3/lOETMvz1e/+tV48MEH4wtf+EJcf/31ceedd8b9998fK1eujAjzHkznM9umpqY4dOhQn/3//e9/4/Dhw++J+QuEC1QURdx3333x1FNPxcaNG6O5ubnP/o985CMxYsSIePbZZ0vbdu3aFfv27YuWlpahXu6wdvPNN8c///nPeOGFF0pfs2fPjtbW1tJ/m/XAmjNnTnrb7u7du2Pq1KkREdHc3BxNTU19Zt7d3R1btmwx8zIcPXo0qqv7/jVcU1MTvb29EWHeg+l8ZtvS0hJHjhyJbdu2lY7ZuHFj9Pb2xg033DDkax5ylX6V5HBz7733Fg0NDcWf//zn4o033ih9HT16tHTMl7/85WLKlCnFxo0bi+eff75oaWkpWlpaKrjqS8f/vouhKMx6oP3tb38ramtrixUrVhSvvvpqsXbt2mLMmDHFk08+WTrm4YcfLsaNG1f84Q9/KHbs2FF85jOfKZqbm4tjx45VcOXD0/z584v3ve99xfr164s9e/YUv/vd74qrrrqq+NrXvlY6xrzL19PTU2zfvr3Yvn17ERHFD37wg2L79u3F3r17i6I4v9l+8pOfLGbNmlVs2bKl2Lx5c3HNNdcUt99+e6W+pSElEC5QRJzx6+c//3npmGPHjhULFiworrjiimLMmDHF5z73ueKNN96o3KIvIe8MBLMeeE8//XRx3XXXFXV1dcX06dOLJ554os/+3t7eYsmSJUVjY2NRV1dX3HzzzcWuXbsqtNrhrbu7u1i4cGExZcqUYtSoUcW0adOKxYsXFydOnCgdY97le+6558749/X8+fOLoji/2f7rX/8qbr/99uLyyy8v6uvriy996UtFT09PBb6boefXPQMAidcgAACJQAAAEoEAACQCAQBIBAIAkAgEACARCABAIhAAgEQgAACJQAAAEoEAACQCAQBI/g8n6WEwwOcdtQAAAABJRU5ErkJggg==\n" 368 | }, 369 | "metadata": {} 370 | } 371 | ] 372 | } 373 | ] 374 | } --------------------------------------------------------------------------------