{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "HpRtgWwprG72"
},
"source": [
"# **`Chapter 2: Special Discrete Random Variables`**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "DHZIzu1stgEF"
},
"source": [
"**Table of Content:**\n",
"\n",
"- [Import Libraries](#Import_Libraries)\n",
"- [2.1. Bernoulli Distribution](#Bernoulli_Distribution)\n",
"- [2.2. Binomial Distribution](#Binomial_Distribution)\n",
"- [2.3. Negative Binomial (Pascal) Distribution](#Negative_Binomial_Distribution)\n",
"- [2.4. Geometric Distribution](#Geometric_Distribution)\n",
"- [2.5. Poisson Distribution](#Poisson_Distribution)\n",
"- [2.6. Discrete Uniform Distribution](#Discrete_Uniform_Distribution)\n",
"- [2.7. Hypergeometric Distribution](#Hypergeometric_Distribution)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "WJhmgDxsVHEO"
},
"source": [
"\n",
"\n",
"## **Import Libraries**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vXStgb2JU6c0",
"outputId": "8195a0a1-6093-4e60-c038-e78e34aa0050"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: scipy in c:\\anaconda\\lib\\site-packages (1.11.2)\n",
"Requirement already satisfied: numpy<1.28.0,>=1.21.6 in c:\\anaconda\\lib\\site-packages (from scipy) (1.24.3)\n"
]
}
],
"source": [
"!pip install --upgrade scipy"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ZPuphzTmU-P8",
"outputId": "1bc3dbb9-3a13-42f3-e297-12dededee46b"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.patches as mpatches\n",
"import seaborn as sns\n",
"import math\n",
"from scipy import stats\n",
"from scipy.stats import norm\n",
"from scipy.stats import chi2\n",
"from scipy.stats import t\n",
"from scipy.stats import f\n",
"from scipy.stats import bernoulli\n",
"from scipy.stats import binom\n",
"from scipy.stats import nbinom\n",
"from scipy.stats import geom\n",
"from scipy.stats import poisson\n",
"from scipy.stats import uniform\n",
"from scipy.stats import randint\n",
"from scipy.stats import nbinom\n",
"from scipy.stats import expon\n",
"from scipy.stats import gamma\n",
"from scipy.stats import beta\n",
"from scipy.stats import weibull_min\n",
"from scipy.stats import hypergeom\n",
"from scipy.stats import shapiro\n",
"from scipy.stats import pearsonr\n",
"from scipy.stats import normaltest\n",
"from scipy.stats import anderson\n",
"from scipy.stats import spearmanr\n",
"from scipy.stats import kendalltau\n",
"from scipy.stats import chi2_contingency\n",
"from scipy.stats import ttest_ind\n",
"from scipy.stats import ttest_rel\n",
"from scipy.stats import mannwhitneyu\n",
"from scipy.stats import wilcoxon\n",
"from scipy.stats import kruskal\n",
"from scipy.stats import friedmanchisquare\n",
"from statsmodels.tsa.stattools import adfuller\n",
"from statsmodels.tsa.stattools import kpss\n",
"from statsmodels.stats.weightstats import ztest\n",
"from scipy.integrate import quad\n",
"from IPython.display import display, Latex\n",
"\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"warnings.simplefilter(action='ignore', category=FutureWarning)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "5z2nOmnTrKxu"
},
"source": [
"\n",
"\n",
"## **2.1. Bernoulli Distribution:**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "0riBQ6Kwr91-"
},
"source": [
"Suppose that an experiment, whose outcome can be classified as either a “success” or as a “failure” is performed. If we let $X = 1$ when the outcome is a success and $X = 0$ when it is a failure, then the probability mass function of $X$ is given by:\n",
"\n",
"$P(X=x) =\\begin{cases}p & x = 1\\\\1-p = q & x = 0\\end{cases}$\n",
"\n",
"or\n",
"\n",
"$P(X=x) = p^x(1-p)^{1-x} \\quad \\quad x = 0,1$\n",
"\n",
"$\\\\ $\n",
"\n",
"$E(X) = p$\n",
"\n",
"$Var(X) = p(1-p)$\n",
"\n",
"$Median(X) = \\begin{cases}0 & p < \\frac{1}{2}\\\\{[0,1]} & p = \\frac{1}{2} \\\\1 & p > \\frac{1}{2}\\end{cases}$\n",
"\n",
"$Mode(X) = \\begin{cases}0 & p < \\frac{1}{2}\\\\{[0,1]} & p = \\frac{1}{2} \\\\1 & p > \\frac{1}{2}\\end{cases}$\n",
"\n",
"$Skewness(X) = \\frac{1-2p}{\\sqrt{p(1-p)}}$\n",
"\n",
"$Kurtosis(X) = \\frac{6p^2-6p+1}{p(1-p)} = \\frac{1-6pq}{p(1-p)}$\n",
"\n",
"$\\\\ $\n",
"\n",
"Moment-generating function:\n",
"\n",
"$M_{x}(t) = p\\ e^t + q$\n",
"\n",
"$\\\\ $\n",
"\n",
"$CDF = F(X=x) = \\begin{cases}0 & x < 0\\\\1-p & 0\\leq x< 1 \\\\1 & x > 0\\end{cases}$"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 290
},
"id": "l0MqQdPqrnPe",
"outputId": "2292e925-93dc-4677-8cf7-321e2dea23cd"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAG/CAYAAACtyFb8AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxUElEQVR4nO3deXhUVZ7/8U8ppBIgCcRAFhNCEJBNwBbZ1CaApAmKYXGwRYGgMCjoyNBIC7YQHCHACI/YNDQuHUBWW4FWUSQCCTKgHZYIMkqDzRIgMRKysIQCwv39waR+FNlDSNWh36/nuc9T99xz7/1WotbHc07d2CzLsgQAAGCo29xdAAAAwI0gzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmgP+zePFi2Ww2l61hw4aKiorSZ5995u7yqp3NZlN8fLxzPzk5WTabTcnJyc62+Ph42Wy2cq9V1K9oq1OnjsLCwvSb3/xGf/zjH3XmzJli58TFxalJkyaVqvnkyZOKj49XWlpapc4r6V42m00vvPBCpa5TngULFmjx4sXF2o8cOSKbzVbisZryzDPPqE+fPsXa//jHP6ply5ay2+2KjIzUtGnTdOnSpQpd89ChQxo6dKgaN24sHx8f3XXXXRo/fryys7Nd+g0dOlT9+/evjrcBlMwCYFmWZSUmJlqSrMTERGvHjh3W9u3brTVr1lg9e/a0JFmffPKJu0usVpKsqVOnOve3bNliSbK2bNnibEtPT7d27NhR7rWmTp1qSbI2bNhg7dixw0pJSbFWrlxpjRw50vL29rbCw8OttLQ0l3MOHTpk7d69u1I1p6amOn9HlVHSvSRZY8eOrdR1ytOmTRure/fuxdovXLhg7dixw8rKyqrW+1XU7t27rdtuu81KTU11aX/jjTcsm81mTZo0ydqyZYs1e/Zsy8vLyxo1alS518zKyrLuuOMOKzIy0lq8eLG1efNma86cOVa9evWsDh06WIWFhc6+hw4dsmrVqmVt2rSp2t8bYFmWRZgB/k9RmLn+P/jnz5+37Ha79eSTT1bbvc6fP19t16qqioSZiioKM7/88kuxY2lpaZa/v7/VuHFj68KFCzdQceXDzLlz50o9VpNhxt0GDx5sdenSxaXt1KlTlre3t/Xv//7vLu3Tp0+3bDabtX///jKv+e6771qSrK+++sqlfcaMGZakYuHx0UcftXr37n0D7wIoHdNMQDm8vb3l5eWl2rVru7RfvHhRb7zxhnOIvmHDhhoxYoR++eUXl35NmjTRo48+qjVr1ujee++Vt7e3pk2b5pzWWblypV599VWFhobKz89PDz/8sA4cOFCsjr/85S9q3769vL29FRAQoAEDBuiHH35w6RMVFaWoqKhi51ZlSkeq+DRTWdq3b69XX31Vx44d0+rVq8us6a9//as6d+4sf39/1alTR02bNtUzzzwj6eo02P333y9JGjFihHNKq2iqLC4uTvXq1dO+ffsUHR0tX19f9erVq9R7FVm0aJFatGghu92u1q1ba9WqVRX6GRRNSx45ckTS1d/z/v37lZKS4qyt6J6lTTNt27ZNvXr1kq+vr+rUqaNu3bpp/fr1Jd5ny5Ytev755xUYGKg77rhDAwcO1MmTJ0t8T9f6+eeftXbtWg0dOtSlfcOGDbpw4YJGjBjh0j5ixAhZlqV169aVed2ifx/8/f1d2uvXry/p6r831xo6dKi++uor/fTTT+XWDFQWYQa4TmFhoS5fvqxLly7p+PHjGjdunM6dO6chQ4Y4+1y5ckWxsbGaOXOmhgwZovXr12vmzJlKSkpSVFSUCgoKXK65e/duvfzyy/qP//gPbdiwQYMGDXIemzx5so4ePar33ntP77zzjg4ePKh+/fqpsLDQ2SchIUHPPvus2rRpozVr1mjevHnau3evunbtqoMHD978H8oNeuyxxyRJW7duLbXPjh079MQTT6hp06ZatWqV1q9frylTpujy5cuSpF/96ldKTEyUJP3hD3/Qjh07tGPHDo0cOdJ5jYsXL+qxxx5Tz5499be//U3Tpk0rs65PPvlEb7/9tl5//XV99NFHioiI0JNPPqmPPvqo0u9x7dq1atq0qe69915nbWvXri21f0pKinr27Km8vDy9//77WrlypXx9fdWvXz+X0Fdk5MiRql27tlasWKHZs2crOTlZTz/9dLl1bdy4UZcuXVKPHj1c2r///ntJ0j333OPSHhISosDAQOfx0vTv31+NGzfW7373O+3fv19nz57V1q1bNXPmTPXr10+tWrVy6R8VFSXLsvT555+XWzNQWbXcXQDgabp06eKyb7fbNX/+fP3mN79xtn344YfasGGDPv74Yw0cONDZ3r59e91///1avHixnn/+eWd7VlaW/vd//1ctWrRwthUttG3durWWLVvmbL/99ts1ePBgpaamqkuXLsrNzdV//dd/qW/fvlqxYoWzX1RUlJo3b674+HgtX7682t7/zRARESFJZY4kbN++XZZl6c9//rPL/+3HxcVJkvz8/NS2bVtJ0l133VXs9yRJly5d0pQpU4qNNpTm1KlTSk1NVVBQkCSpb9++atu2rSZNmqTHH3+8Qtcocu+998rHx0d+fn4l1na9V155RQ0aNFBycrLq1asnSXr00UfVoUMHTZgwQYMHD3YZEerTp4/efvtt5/7p06c1ceJEZWZmKjg4uNT77NixQz4+PmrZsqVLe3Z2tux2u+rWrVvsnICAgGKLeK/n7++vb775RoMGDXL+XiTp3/7t3/TBBx8U69+oUSPdeeed+p//+R+9+OKLZV4bqCxGZoDrLF26VKmpqUpNTdUXX3yh4cOHa+zYsZo/f76zz2effab69eurX79+unz5snPr0KGDgoODXb4RJEnt2rVzCTLXKhq1uLavJB09elTS1Q+jgoIC54d6kfDwcPXs2VObNm26wXd881mWVW6foimkwYMH68MPP9SJEyeqdK9rR73K06tXL2eQka4GySeeeEKHDh3S8ePHq3T/ijh37py+/fZbPf74484gU3T/oUOH6vjx48WmGsv756Q0J0+eVMOGDUucKitrCrG86cWcnBzFxsYqPz9fy5cv19atW7VgwQJt27ZNjz32mHNE7VqNGjWq8u8VKAthBrhOq1at1LFjR3Xs2FF9+vTRokWLFB0drYkTJyo3N1fS1XUIubm5zrU0126ZmZk6deqUyzVDQkJKvd8dd9zhsm+32yXJOVVV9H/IJV0jNDS03P+D9gRFH7ihoaGl9vn1r3+tdevW6fLlyxo2bJjCwsLUtm1brVy5ssL3qVOnjvz8/Crcv6QRjaK2m/lzzcnJkWVZpf5OS7p/ef+clKagoKDY+pWi6124cEHnz58vduz06dMKCAgo87qzZs1SWlqakpKSNGTIED300EN6/vnntXz5cm3cuLHE0UJvb+9y6wWqgjADVEC7du1UUFCgf/zjH5LkXIRZNIJz/bZgwQKX829kEW3Rh1hGRkaxYydPnlRgYKBz39vbWw6Ho1i/68NVTfvkk08kqcTFydeKjY3Vpk2blJeXp+TkZIWFhWnIkCHasWNHhe5T2Z9zZmZmqW1FP/eiIHD9z/VGfqYNGjTQbbfdVurvVJLL7/VGBAYG6vTp08Xai9bK7Nu3z6W9KIxfO3VUkrS0NN15553FAlnRCFtJa25Onz5dbe8LuBZhBqiAooe0NWzYUNLVtQ3Z2dkqLCx0juJcu919993Vdu+uXbvKx8fHZV2NJB0/flybN292fmNHuvqNmn/84x8uH7zZ2dnavn17tdVTWd99951mzJihJk2aaPDgwRU6x263q3v37po1a5Ykac+ePc52qfzRiIratGmTfv75Z+d+YWGhVq9erbvuukthYWGS5PxG0t69e13O/fTTT0usuyK11a1bV507d9aaNWtc+l+5ckXLli1TWFhYqdOSldWyZUtlZ2crLy/Ppb1Pnz7y9vYu9g2rom9PlfeQu9DQUB0/frzYtFFR8Cz6+RW5fPmy0tPT1bp166q9EaAMLAAGrvP999875/uzs7O1Zs0aJSUlacCAAYqMjJQk/fa3v9Xy5cvVt29fvfTSS+rUqZNq166t48ePa8uWLYqNjdWAAQOqpZ769evrtdde0+TJkzVs2DA9+eSTys7O1rRp0+Tt7a2pU6c6+w4dOlSLFi3S008/rVGjRik7O1uzZ8+u1NTLjdi1a5f8/f116dIlnTx5Ups2bdIHH3ygRo0a6dNPP5WXl1ep506ZMkXHjx9Xr169FBYWptzcXM2bN0+1a9dW9+7dJV1d+Ovj46Ply5erVatWqlevnkJDQ8ucvipLYGCgevbsqddee01169bVggUL9OOPP7p8Pbtv374KCAjQs88+q9dff121atXS4sWLlZ6eXux699xzj1atWqXVq1eradOm8vb2LvZtoSIJCQnq3bu3evTooQkTJsjLy0sLFizQ999/r5UrV97wV+KLFH2L6Ntvv1V0dLSzPSAgQH/4wx/02muvKSAgQNHR0UpNTVV8fLxGjhzpEjqWLl2qZ555Rn/5y180bNgwSdLYsWO1fPly9e7dW6+88orCw8P1/fff64033lBQUJCeeuoplzr27t2r8+fPF/tWFVAt3PmQG8CTFD0079rN39/f6tChgzV37txiD3y7dOmS9eabb1rt27e3vL29rXr16lktW7a0Ro8ebR08eNDZLyIiwnrkkUeK3a/oIXV//etfXdoPHz5c4oPh3nvvPatdu3aWl5eX5e/vb8XGxpb4YLMlS5ZYrVq1sry9va3WrVtbq1evtoYPH25FRES49FMFHppX9DC88hT1K9rsdrsVEhJiRUdHW/PmzbPy8/OLnXN9TZ999pkVExNj3XnnnZaXl5fVqFEjq2/fvtbXX3/tct7KlSutli1bWrVr13Z5D8OHD7fq1q1bYn2lvf+xY8daCxYssO666y6rdu3aVsuWLa3ly5cXO//vf/+71a1bN6tu3brWnXfeaU2dOtV67733LEnW4cOHnf2OHDliRUdHW76+vpYk5z1L+51+/fXXVs+ePa26detaPj4+VpcuXaxPP/3UpU9pD3Os6EMOCwsLrSZNmlhjxowp8fi8efOsFi1aWF5eXlbjxo2tqVOnWhcvXiyxhuvr3717tzVgwAArLCzMstvtVtOmTa2RI0dax44dK3af1157zQoMDLzhBycCJbFZVgW+ZgAAMNacOXM0ffp0nThxQj4+PjV+/8LCQjVr1kxDhgzR9OnTa/z+uPWxZgYAbnFjx46Vv7+//vSnP7nl/suWLdPZs2f18ssvu+X+uPURZgDgFuft7a0PPvjAuYC6pl25ckXLly93/qkDoLoxzQQAAIzGyAwAADAaYQYAABjtln/OzJUrV3Ty5En5+vpW23MbAADAzWVZls6cOaPQ0FDddlvZYy+3fJg5efKkwsPD3V0GAACogvT09GJPlL7eLR9mfH19JV39YdTUU1ABAMCNyc/PV3h4uPNzvCy3fJgpmlry8/MjzAAAYJiKLBFhATAAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjOYxYSYhIUE2m03jxo1ztlmWpfj4eIWGhsrHx0dRUVHav3+/+4oEAAAexyPCTGpqqt555x21a9fOpX327NmaO3eu5s+fr9TUVAUHB6t37946c+aMmyoFAACexu1h5uzZs3rqqaf07rvvqkGDBs52y7L01ltv6dVXX9XAgQPVtm1bLVmyROfPn9eKFSvcWDEAAPAkbg8zY8eO1SOPPKKHH37Ypf3w4cPKzMxUdHS0s81ut6t79+7avn17qddzOBzKz8932QAA+FfSuvV9atAgtMytdev73F1mtanlzpuvWrVKu3fvVmpqarFjmZmZkqSgoCCX9qCgIB09erTUayYkJGjatGnVWygAAAbJyMhQhw4ny+yTlhZaQ9XcfG4bmUlPT9dLL72kZcuWydvbu9R+NpvNZd+yrGJt15o0aZLy8vKcW3p6erXVDAAAPI/bRmZ27dqlrKws3Xff/x/mKiws1NatWzV//nwdOHBA0tURmpCQEGefrKysYqM117Lb7bLb7TevcAAA4FHcNjLTq1cv7du3T2lpac6tY8eOeuqpp5SWlqamTZsqODhYSUlJznMuXryolJQUdevWzV1lAwAAD+O2kRlfX1+1bdvWpa1u3bq64447nO3jxo3TjBkz1Lx5czVv3lwzZsxQnTp1NGTIEHeUDAAAPJBbFwCXZ+LEiSooKNCYMWOUk5Ojzp07a+PGjfL19XV3aQAAwEPYLMuy3F3EzZSfny9/f3/l5eXJz8/P3eUAAHDTNWgQWqFvM+XklN3HnSrz+e3258wAAADcCMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0t4aZhQsXql27dvLz85Ofn5+6du2qL774wnk8Li5ONpvNZevSpYsbKwYAAJ6mljtvHhYWppkzZ6pZs2aSpCVLlig2NlZ79uxRmzZtJEl9+vRRYmKi8xwvLy+31AoAADyTW8NMv379XPanT5+uhQsX6ptvvnGGGbvdruDgYHeUBwAADOAxa2YKCwu1atUqnTt3Tl27dnW2Jycnq1GjRmrRooVGjRqlrKysMq/jcDiUn5/vsgEAgFuX28PMvn37VK9ePdntdj333HNau3atWrduLUmKiYnR8uXLtXnzZs2ZM0epqanq2bOnHA5HqddLSEiQv7+/cwsPD6+ptwIAANzAZlmW5c4CLl68qGPHjik3N1cff/yx3nvvPaWkpDgDzbUyMjIUERGhVatWaeDAgSVez+FwuISd/Px8hYeHKy8vT35+fjftfQAA4CkaNAhVhw4ny+yTlhaqnJyy+7hTfn6+/P39K/T57dY1M9LVBb1FC4A7duyo1NRUzZs3T4sWLSrWNyQkRBERETp48GCp17Pb7bLb7TetXgAA4FncPs10PcuySp1Gys7OVnp6ukJCQmq4KgAA4KncOjIzefJkxcTEKDw8XGfOnNGqVauUnJysDRs26OzZs4qPj9egQYMUEhKiI0eOaPLkyQoMDNSAAQPcWTYAAPAgbg0zP//8s4YOHaqMjAz5+/urXbt22rBhg3r37q2CggLt27dPS5cuVW5urkJCQtSjRw+tXr1avr6+7iwbAAB4ELeGmffff7/UYz4+Pvryyy9rsBoAAGAij1szAwAAUBmEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaG4NMwsXLlS7du3k5+cnPz8/de3aVV988YXzuGVZio+PV2hoqHx8fBQVFaX9+/e7sWIAAOBp3BpmwsLCNHPmTO3cuVM7d+5Uz549FRsb6wwss2fP1ty5czV//nylpqYqODhYvXv31pkzZ9xZNgAA8CA2y7IsdxdxrYCAAP33f/+3nnnmGYWGhmrcuHH6/e9/L0lyOBwKCgrSrFmzNHr06BLPdzgccjgczv38/HyFh4crLy9Pfn5+NfIeAABwpwYNQtWhw8ky+6SlhSonp+w+7pSfny9/f/8KfX57zJqZwsJCrVq1SufOnVPXrl11+PBhZWZmKjo62tnHbrere/fu2r59e6nXSUhIkL+/v3MLDw+vifIBAICbuD3M7Nu3T/Xq1ZPdbtdzzz2ntWvXqnXr1srMzJQkBQUFufQPCgpyHivJpEmTlJeX59zS09Nvav0AAMC9arm7gLvvvltpaWnKzc3Vxx9/rOHDhyslJcV53GazufS3LKtY27XsdrvsdvtNqxcAAHgWt4/MeHl5qVmzZurYsaMSEhLUvn17zZs3T8HBwZJUbBQmKyur2GgNAAD41+X2MHM9y7LkcDgUGRmp4OBgJSUlOY9dvHhRKSkp6tatmxsrBAAAnsSt00yTJ09WTEyMwsPDdebMGa1atUrJycnasGGDbDabxo0bpxkzZqh58+Zq3ry5ZsyYoTp16mjIkCHuLBsAAHgQt4aZn3/+WUOHDlVGRob8/f3Vrl07bdiwQb1795YkTZw4UQUFBRozZoxycnLUuXNnbdy4Ub6+vu4sGwAAeBCPe85MdavM99QBALgV8JwZAAAAgxBmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjuTXMJCQk6P7775evr68aNWqk/v3768CBAy594uLiZLPZXLYuXbq4qWIAAOBp3BpmUlJSNHbsWH3zzTdKSkrS5cuXFR0drXPnzrn069OnjzIyMpzb559/7qaKAQCAp6nlzptv2LDBZT8xMVGNGjXSrl279Otf/9rZbrfbFRwcXKFrOhwOORwO535+fn71FAsAADySR62ZycvLkyQFBAS4tCcnJ6tRo0Zq0aKFRo0apaysrFKvkZCQIH9/f+cWHh5+U2sGAADuZbMsy3J3EZJkWZZiY2OVk5Ojr7/+2tm+evVq1atXTxERETp8+LBee+01Xb58Wbt27ZLdbi92nZJGZsLDw5WXlyc/P78aeS8AALhTgwah6tDhZJl90tJClZNTdh93ys/Pl7+/f4U+v906zXStF154QXv37tW2bdtc2p944gnn67Zt26pjx46KiIjQ+vXrNXDgwGLXsdvtJYYcAABwa/KIMPPiiy/qk08+0datWxUWFlZm35CQEEVEROjgwYM1VB0AAPBkbg0zlmXpxRdf1Nq1a5WcnKzIyMhyz8nOzlZ6erpCQkJqoEIAAODp3LoAeOzYsVq2bJlWrFghX19fZWZmKjMzUwUFBZKks2fPasKECdqxY4eOHDmi5ORk9evXT4GBgRowYIA7SwcAAB7CrSMzCxculCRFRUW5tCcmJiouLk6333679u3bp6VLlyo3N1chISHq0aOHVq9eLV9fXzdUDAAAPI3bp5nK4uPjoy+//LKGqgEAACbyqOfMAAAAVBZhBgAAGI0wAwAAjEaYAQAARiPMAAAAo1UpzBw+fLi66wAAAKiSKoWZZs2aqUePHlq2bJkuXLhQ3TUBAABUWJXCzHfffad7771Xv/vd7xQcHKzRo0fr73//e3XXBgAAUK4qhZm2bdtq7ty5OnHihBITE5WZmakHH3xQbdq00dy5c/XLL79Ud50AAAAluqEFwLVq1dKAAQP04YcfatasWfrpp580YcIEhYWFadiwYcrIyKiuOgEAAEp0Q2Fm586dGjNmjEJCQjR37lxNmDBBP/30kzZv3qwTJ04oNja2uuoEAAAoUZX+NtPcuXOVmJioAwcOqG/fvlq6dKn69u2r2267mo0iIyO1aNEitWzZslqLBQAAuF6VwszChQv1zDPPaMSIEQoODi6xT+PGjfX+++/fUHEAAADlqVKYSUpKUuPGjZ0jMUUsy1J6eroaN24sLy8vDR8+vFqKBAAAKE2V1szcddddOnXqVLH206dPKzIy8oaLAgAAqKgqhRnLskpsP3v2rLy9vW+oIAAAgMqo1DTT+PHjJUk2m01TpkxRnTp1nMcKCwv17bffqkOHDtVaIAAAQFkqFWb27Nkj6erIzL59++Tl5eU85uXlpfbt22vChAnVWyEAAEAZKhVmtmzZIkkaMWKE5s2bJz8/v5tSFAAAQEVV6dtMiYmJ1V0HAABAlVQ4zAwcOFCLFy+Wn5+fBg4cWGbfNWvW3HBhAAAAFVHhMOPv7y+bzeZ8DQAA4AkqHGaunVpimgkAAHiKKj1npqCgQOfPn3fuHz16VG+99ZY2btxYbYUBAABURJXCTGxsrJYuXSpJys3NVadOnTRnzhzFxsZq4cKF1VogAABAWaoUZnbv3q2HHnpIkvTRRx8pODhYR48e1dKlS/X2229Xa4EAAABlqVKYOX/+vHx9fSVJGzdu1MCBA3XbbbepS5cuOnr0aLUWCAAAUJYqhZlmzZpp3bp1Sk9P15dffqno6GhJUlZWFg/SAwAANapKYWbKlCmaMGGCmjRpos6dO6tr166Sro7S3HvvvdVaIAAAQFmq9ATgxx9/XA8++KAyMjLUvn17Z3uvXr00YMCAaisOAACgPFUKM5IUHBys4OBgl7ZOnTrdcEEAAACVUaUwc+7cOc2cOVObNm1SVlaWrly54nL8n//8Z7UUBwAAUJ4qhZmRI0cqJSVFQ4cOVUhIiPPPHAAAANS0KoWZL774QuvXr9cDDzxwQzdPSEjQmjVr9OOPP8rHx0fdunXTrFmzdPfddzv7WJaladOm6Z133lFOTo46d+6sP/3pT2rTps0N3RsAANwaqvRtpgYNGiggIOCGb56SkqKxY8fqm2++UVJSki5fvqzo6GidO3fO2Wf27NmaO3eu5s+fr9TUVAUHB6t37946c+bMDd8fAACYz2ZZllXZk5YtW6a//e1vWrJkierUqVNtxfzyyy9q1KiRUlJS9Otf/1qWZSk0NFTjxo3T73//e0mSw+FQUFCQZs2apdGjRxe7hsPhkMPhcO7n5+crPDxceXl5PAMHAPAvoUGDUHXocLLMPmlpocrJKbuPO+Xn58vf379Cn99VmmaaM2eOfvrpJwUFBalJkyaqXbu2y/Hdu3dX5bLKy8uTJOeoz+HDh5WZmel8KJ8k2e12de/eXdu3by8xzCQkJGjatGlVuj8AADBPlcJM//79q7mMq2tjxo8frwcffFBt27aVJGVmZkqSgoKCXPoGBQWV+mcTJk2apPHjxzv3i0ZmAADAralKYWbq1KnVXYdeeOEF7d27V9u2bSt27PpvS1mWVeo3qOx2u+x2e7XXBwAAPFOVFgBLUm5urt577z1NmjRJp0+flnR1eunEiROVvtaLL76oTz75RFu2bFFYWJizveihfEUjNEWysrKKjdYAAIB/TVUKM3v37lWLFi00a9Ysvfnmm8rNzZUkrV27VpMmTarwdSzL0gsvvKA1a9Zo8+bNioyMdDkeGRmp4OBgJSUlOdsuXryolJQUdevWrSqlAwCAW0yVwsz48eMVFxengwcPytvb29keExOjrVu3Vvg6Y8eO1bJly7RixQr5+voqMzNTmZmZKigokHR1emncuHGaMWOG1q5dq++//15xcXGqU6eOhgwZUpXSAQDALaZKa2ZSU1O1aNGiYu133nlnsSmhsixcuFCSFBUV5dKemJiouLg4SdLEiRNVUFCgMWPGOB+at3HjRvn6+laldAAAcIupUpjx9vZWfn5+sfYDBw6oYcOGFb5ORR5xY7PZFB8fr/j4+MqUCAAA/kVUaZopNjZWr7/+ui5duiTpauA4duyYXnnlFQ0aNKhaCwQAAChLlcLMm2++6Xxab0FBgbp3765mzZrJ19dX06dPr+4aAQAASlWlaSY/Pz9t27ZNW7Zs0a5du3TlyhX96le/0sMPP1zd9QEAAJSp0mHmypUrWrx4sdasWaMjR47IZrM5v0Jd1sPsAAAAboZKTTNZlqXHHntMI0eO1IkTJ3TPPfeoTZs2Onr0qOLi4jRgwICbVScAAECJKjUys3jxYm3dulWbNm1Sjx49XI5t3rxZ/fv319KlSzVs2LBqLRIAAKA0lRqZWblypSZPnlwsyEhSz5499corr2j58uXVVhwAAEB5KhVm9u7dqz59+pR6PCYmRt99990NFwUAAFBRlQozp0+fLvMPPAYFBSknJ+eGiwIAAKioSoWZwsJC1apV+jKb22+/XZcvX77hogAAACqqUguALctSXFyc7HZ7iccdDke1FAUAAFBRlQozw4cPL7cP32QCAAA1qVJhJjEx8WbVAQAAUCVV+ttMAAAAnoIwAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKO5Ncxs3bpV/fr1U2hoqGw2m9atW+dyPC4uTjabzWXr0qWLe4oFAAAeya1h5ty5c2rfvr3mz59fap8+ffooIyPDuX3++ec1WCEAAPB0tdx585iYGMXExJTZx263Kzg4uMLXdDgccjgczv38/Pwq1wcAADyfx6+ZSU5OVqNGjdSiRQuNGjVKWVlZZfZPSEiQv7+/cwsPD6+hSgEAgDt4dJiJiYnR8uXLtXnzZs2ZM0epqanq2bOny8jL9SZNmqS8vDznlp6eXoMVAwCAmubWaabyPPHEE87Xbdu2VceOHRUREaH169dr4MCBJZ5jt9tlt9trqkQAAOBmHj0yc72QkBBFRETo4MGD7i4FAAB4CKPCTHZ2ttLT0xUSEuLuUgAAgIdw6zTT2bNndejQIef+4cOHlZaWpoCAAAUEBCg+Pl6DBg1SSEiIjhw5osmTJyswMFADBgxwY9UAAMCTuDXM7Ny5Uz169HDujx8/XpI0fPhwLVy4UPv27dPSpUuVm5urkJAQ9ejRQ6tXr5avr6+7SgYAAB7GrWEmKipKlmWVevzLL7+swWoAAICJjFozAwAAcD3CDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNLeGma1bt6pfv34KDQ2VzWbTunXrXI5blqX4+HiFhobKx8dHUVFR2r9/v3uKBQAAHsmtYebcuXNq37695s+fX+Lx2bNna+7cuZo/f75SU1MVHBys3r1768yZMzVcKQAA8FS13HnzmJgYxcTElHjMsiy99dZbevXVVzVw4EBJ0pIlSxQUFKQVK1Zo9OjRJZ7ncDjkcDic+/n5+dVfOAAA8Bgeu2bm8OHDyszMVHR0tLPNbrere/fu2r59e6nnJSQkyN/f37mFh4fXRLkAAMBN3DoyU5bMzExJUlBQkEt7UFCQjh49Wup5kyZN0vjx4537+fn5RgSa1q3vU0ZGRpl9QkJC9L//u6uGKgIAwAweG2aK2Gw2l33Lsoq1Xctut8tut9/ssqpdRkaGOnQ4WWaftLTQGqoGAABzeOw0U3BwsKT/P0JTJCsrq9hoDQAA+NflsWEmMjJSwcHBSkpKcrZdvHhRKSkp6tatmxsrAwAAnsSt00xnz57VoUOHnPuHDx9WWlqaAgIC1LhxY40bN04zZsxQ8+bN1bx5c82YMUN16tTRkCFD3Fg1AADwJG4NMzt37lSPHj2c+0ULd4cPH67Fixdr4sSJKigo0JgxY5STk6POnTtr48aN8vX1dVfJAADAw7g1zERFRcmyrFKP22w2xcfHKz4+vuaKAgAARvHYNTMAAAAVQZgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABjNo8NMfHy8bDabyxYcHOzusgAAgAep5e4CytOmTRt99dVXzv3bb7/djdUAAABP4/FhplatWozGAACAUnn0NJMkHTx4UKGhoYqMjNRvf/tb/fOf/yyzv8PhUH5+vssGAABuXR4dZjp37qylS5fqyy+/1LvvvqvMzEx169ZN2dnZpZ6TkJAgf39/5xYeHl6DFQMAgJrm0WEmJiZGgwYN0j333KOHH35Y69evlyQtWbKk1HMmTZqkvLw855aenl5T5QIAADfw+DUz16pbt67uueceHTx4sNQ+drtddru9BqsCAADu5NEjM9dzOBz64YcfFBIS4u5SAACAh/DoMDNhwgSlpKTo8OHD+vbbb/X4448rPz9fw4cPd3dpAADAQ3j0NNPx48f15JNP6tSpU2rYsKG6dOmib775RhEREe4uDQAAeAiPDjOrVq1ydwkAAMDDefQ0EwAAQHkIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZAABgNMIMAAAwGmEGAAAYjTADAACMRpgBAABGI8wAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGI0wAwAAjEaYAQAARiPMAAAAoxFmAACA0YwIMwsWLFBkZKS8vb1133336euvv3Z3SQAAwEN4fJhZvXq1xo0bp1dffVV79uzRQw89pJiYGB07dszdpQEAAA/g8WFm7ty5evbZZzVy5Ei1atVKb731lsLDw7Vw4UJ3lwYAADxALXcXUJaLFy9q165deuWVV1zao6OjtX379hLPcTgccjgczv28vDxJUn5+/s0rtBpY1hVdvlx2jZZ1xePfBwDA/W6Fz5Si2izLKrevR4eZU6dOqbCwUEFBQS7tQUFByszMLPGchIQETZs2rVh7eHj4TamxOm3b5l9uH3//8vsAAHCrfKacOXOm3Do9OswUsdlsLvuWZRVrKzJp0iSNHz/euX/lyhWdPn1ad9xxR6nnuFt+fr7Cw8OVnp4uPz8/d5cDALjFmfC5Y1mWzpw5o9DQ0HL7enSYCQwM1O23315sFCYrK6vYaE0Ru90uu93u0la/fv2bVWK18vPz89h/qAAAtx5P/9yp6MiRRy8A9vLy0n333aekpCSX9qSkJHXr1s1NVQEAAE/i0SMzkjR+/HgNHTpUHTt2VNeuXfXOO+/o2LFjeu6559xdGgAA8AAeH2aeeOIJZWdn6/XXX1dGRobatm2rzz//XBEREe4urdrY7XZNnTq12PQYAAA3w632uWOzKvKdJwAAAA/l0WtmAAAAykOYAQAARiPMAAAAoxFmAACA0QgzAADAaIQZNzp27JgmTJigVq1aqW7dugoICFCnTp305ptv6vz58+4uDwBwC8jKytJnn32mKVOmKCYmRoGBgbLZbLLZbIqLi3N3edWCr2a7yfr16/XUU085/6r39e6++259/vnnatq0aQ1XBgC4lZT1dwmHDx+uxYsX11wxNwkjM27w3XffafDgwcrLy1O9evU0ffp0bd++XZs2bdKoUaMkSQcOHNAjjzyis2fPurlaAMCtIjw8XNHR0e4uo9p5/BOAb0Xjxo3T+fPnVatWLW3cuFFdu3Z1HuvZs6eaN2+uiRMn6scff9TcuXM1ZcoUN1YLADDZlClTdP/99+v+++9XUFCQjhw5osjISHeXVa2YZqphqamp6tSpkyRp9OjR+vOf/1ysz5UrV9S2bVv98MMPatCggX7++WfVrl27pksFANyCrg0zTDOhStatW+d8PWLEiBL73HbbbRo2bJgkKScnR8nJyTVQGQAAZiLM1LCvv/5aklS3bl3dd999pfbr3r278/W2bdtuel0AAJiKMFPDfvjhB0lSs2bNVKtW6UuWWrZsWewcAABQHGGmBl24cEGnTp2SJIWFhZXZt0GDBqpbt64kKT09/abXBgCAqQgzNejMmTPO1/Xq1Su3f1GY4evZAACUjjBTgy5cuOB87eXlVW5/u90uSSooKLhpNQEAYDrCTA3y9vZ2vr548WK5/R0OhyTJx8fnptUEAIDpCDM1yNfX1/m6IlNH586dk1SxKSkAAP5VEWZqkLe3twIDAyVJx48fL7NvTk6OM8yEh4ff9NoAADAVYaaGtWrVSpJ06NAhXb58udR+P/74Y7FzAABAcYSZGvbggw9KujqFtGvXrlL7paSkOF8/8MADN70uAABMRZipYf3793e+TkxMLLHPlStXtHTpUklS/fr11aNHj5ooDQAAIxFmalinTp300EMPSZLef/997dixo1ifOXPmOJ/6+9JLL/FHJgEAKAN/NdsN9uzZowceeEAFBQWqV6+eJk+erB49eqigoECrVq3SO++8I0lq0aKFdu7c6fItKAAAKmPbtm06dOiQc//UqVN6+eWXJV1dxjBy5EiX/nFxcTVZXrUgzLjJp59+qqefflr5+fklHm/RooXWr1+vZs2a1XBlAIBbSVxcnJYsWVLh/ibGAqaZ3KRfv37au3ev/vM//1MtWrRQnTp1VL9+fXXs2FGzZs3Snj17CDIAAFQAIzMAAMBojMwAAACjEWYAAIDRCDMAAMBohBkAAGA0wgwAADAaYQYAABiNMAMAAIxGmAEAAEYjzAAAAKMRZgAAgNEIMwAAwGiEGQAAYDTCDAAAMBphBgAAGO3/AbILmJDzKdXFAAAAAElFTkSuQmCC",
"text/plain": [
"