{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# GoF from binned cost functions\n",
    "\n",
    "The builtin cost functions for binned data, `BinnedNLL` and `ExtendedBinnedNLL` have a minimum value which is asymptotically chi2-distributed and thus can be used as a goodness-of-fit statistic. This example shows, that one still needs a large number of entries in each bin to reach the asymptotic regime."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from iminuit import Minuit\n",
    "from iminuit.cost import BinnedNLL, ExtendedBinnedNLL, LeastSquares\n",
    "import numpy as np\n",
    "from numba_stats import norm, expon\n",
    "import matplotlib.pyplot as plt\n",
    "import joblib\n",
    "from scipy.stats import chi2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def generate(n, seed):\n",
    "    rng = np.random.default_rng(seed)\n",
    "    s = rng.normal(1, 0.1, size=rng.poisson(n))\n",
    "    b = rng.exponential(size=rng.poisson(n))\n",
    "    x = np.append(s, b)\n",
    "    return x[(x > 0) & (x < 2)]\n",
    "\n",
    "x = generate(1000, 1)\n",
    "plt.hist(x, bins=20, range=(0, 2));"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "@joblib.delayed\n",
    "def run(n, seed):\n",
    "    x = generate(n, seed)\n",
    "    xrange = (0, 2)\n",
    "    w, xe = np.histogram(x, bins=20, range=xrange)\n",
    "\n",
    "    def model1(x, z, mu, sigma, tau):\n",
    "        return z * norm.cdf(x, mu, sigma) / np.diff(norm.cdf(xrange, mu, sigma)) + (1 - z) * expon.cdf(x, 0, tau) / np.diff(expon.cdf(xrange, 0, tau))\n",
    "\n",
    "    def model2(x, s, b, mu, sigma, tau):\n",
    "        return s * n * norm.cdf(x, mu, sigma) + b * n * expon.cdf(x, 0, tau)\n",
    "\n",
    "    m = [\n",
    "        Minuit(BinnedNLL(w, xe, model1), z=0.5, mu=0.5, sigma=0.5, tau=0.5),\n",
    "        Minuit(ExtendedBinnedNLL(w, xe, model2), s=1, b=1, mu=0.5, sigma=0.5, tau=0.5),\n",
    "    ]\n",
    "    for mi in m:\n",
    "        mi.limits[\"mu\"] = (0, 2)\n",
    "        mi.limits[\"sigma\", \"tau\"] = (0.1, None)\n",
    "    m[0].limits[\"z\"] = (0, 1)\n",
    "    m[1].limits[\"s\", \"b\"] = (0, None)\n",
    "    r = []\n",
    "    for mi in m:\n",
    "        mi.migrad()\n",
    "        if mi.valid:\n",
    "            pvalue = 1 - chi2(mi.fcn._fcn.ndata - mi.nfit).cdf(mi.fval)\n",
    "            r.append(pvalue)\n",
    "        else:\n",
    "            r.append(np.nan)\n",
    "    return r\n",
    "\n",
    "pvalues = {}\n",
    "for n in (20, 100, 1000, 10000):\n",
    "    pvalues[n] = np.array(joblib.Parallel(-1)(run(n, i) for i in range(500)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 0.01, 'pvalue')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABEAAAAG4CAYAAABFBpKcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAABKdklEQVR4nO3de7hkZXnn/e8vtEhEzrQ9CLSN4eCgE8HsIfpqjAF1UIxwRYfxkAwmTHo8xoz6htYkM47RpM0kKr4xaiuGTqICMhqIRhNEuIyZiDaKB0AFmSaADd0aUEEjovf7x1odis3evav2rtOq/n6uq65d61R179VVdz/7Xs96nlQVkiRJkiRJs+wnJh2AJEmSJEnSqFkAkSRJkiRJM88CiCRJkiRJmnkWQCRJkiRJ0syzACJJkiRJkmaeBRBJkiRJkjTzLIDofpKsSfLJJN9N8sd97H9nkoe3z89N8vplvu8uj03y+iTfTHJrkrXt++6xnPeSNHpJXpTktva7etAS+74mybvb5+uSVJJVy3jPXR6b5JgkV7X57TeSvCPJ7w76PpJGz/aIpJWyLaL5LIB0VJIzklyZ5DtJbk7yh71fsiQHJvlQkruS3JjkeQO8/Hrgm8C+VfXKpXauqgdX1Q3L+DX6lmQt8Erg2Kr6N1X1T+37/qjdfnmS/zLKGBaIaSXnWBqLJI9K8rdtY70W2L7Lz3GS57Xr70ryV0kO7PN9HwC8CXhq+1391q72r6rfr6pxfId/C7isqvapqrdW1Qur6vfamJ+U5OYxxHAfyz3H0rCMMk/YHhk92yMah0nmCdsio7c7tUUsgHTXg4DfBA4GfhY4CXhVz/a3AXcDa4DnA29P8sg+X/thwDVVdb/kNkFrgW9V1fZJB9JjJedYGpcfAhcAZy6yfdHPcfvzncCvtNu/B/xpn++7BtgLuHrZkY/Gw5iimFZ4jqVhGWWesD0yerZHNA4TyRO2RUZvt2uLVJWPIT+ArTTFiC8C3wbOB/Ya8Xu+Avjr9vneNEnk6J7tfwFs7ON1zqVJcHcDdwJPBk4A/hG4A9gG/AmwZ88xBRzZc/zre7Y9A7iqPfb/AD/ds+144HPAd9tzdF7vsT37PRn4PvDjNqZzgXXt+64C3gD8CPiXdvufAAHeDGwHvgN8CXjUEM/3ss+xDx87H+PMFcCRTcq/z7pdfo6B3wfe17Ptp9r991nivY4G7mq/o3cCn2jXnw3c1H4nrwR+rueY1wJ/2T7/1+93u7wfcE6bf24BXg/s0W7bA/gjmqvENwAv6T12XlyfmJcrjt6Zs9pz0Ztn7gQeSpP/trQx3wa8acj/Lss6xz52n0eX88RK/q/E9ki//2a2R3zMdJ7Y1bFLxGlbpP9/092qLWIPkNE5HTgZOAL4aeAFC+2U5AlJ7tjF4wl9vt8TubeSeDRwT1V9rWf7F4AlrwZU1QuA9wJ/WE1XsY/TfEn/G01vk8fR9DZ58VKvleR44D3AfwUOoqksXpzkgUn2BP6KJsEdCHwAeNYiMX0ceBrwjTamF8zb/tvA3wMvbbe/FHgqzTk5miZhnQ4s2O0tyZ/u4vx/cZFfb9nnWJpn3Lmi11Kf40e2ywBU1ddpGym7etH29Xa+xv5VdWL7/LPAcTTf+fcBH0iyVx9xngvcQ9PoOp7m+72zi+qv0/xhczwwBzx7F3GdyH1zxdd6tt3FffPMg6vqGzQNpbOral+aBsEFC712mnEAdvXvs1iX9GWdY+12uponbI/YHtH4zGqesC1iW2SoBh7URX17a/uBJclf03zR7qeqPgXsv5I3SvJrNF+2nV/CB9NUCHt9m6bKOrCqurJncWuSdwI/D7xliUPXA++sqiva5c1JXgM8lqYq+gDgLdWUGi9M8orlxLeIH9L8vo8APlNV1y62Y1W9mD4aUPMM9Rxrtza2XLGApT7HD26XF9s+kKr6y57FP07yO8Ax9PynO1+SNcDTaRov3wfuSvJm2vxC0+B7S1Xd1O7/B8CTlhPfIn4IHJnk4Kr6JvDphXaqqn9ief8+Qz3HmlldzRM/WuLYgdgeWZDtEe00q3nCtohtkaGyB8jo3Nrz/Hs0H6yhS3Ia8AfA09ovBDTdpfadt+u+NF07l/MeRyf5cJrRzr9D003q4D4OfRjwyt7KI3A4TVeuhwK3tI2NnW5cTnwLqapP0HQ9fRuwPcmmJPPPyUoM9RxrtzaWXLGIpT7Hw84lr0pybZJvt/lgP5bOJQ+j+eNkW08eeSfwkHb7Q2m6su40tDzSOpPmCshXknw2yTOG/PrmEvWjq3nC9ojtEY3PrOYJ2yK2RYbKAsiEJfm5NNMyLfb4uV0cezLwLuAXq+pLPZu+BqxKclTPukez/MF23g58BTiq7Xr1Gpp7WpdyE/CGqtq/5/Ggqno/zf1zhybpfZ21y4wPmis4913RjKr8M8CxNEnj/13owDRTTy12/hc7Z8M+x9IurSRX7MJSn+Or2+WdMTwceGB73MDx04x6fjpwQFXtT3N1YalcchPwA+Dgnjyyb1Xt7Na6jeYPmZ2GnUeuq6rn0jRy3khzdXjv+fvl3qkwF3s8f5H3HNo5lqYwT9gewfaIpksH84RtEdsiQ2UBZMKq6u977vFa6PH3Cx2X5ESae2OfVVWfmfeadwEfBF6XZO8kjwdOpbm/ldw7N/W6PsPch6Zr2p1JHgG8qM/j3gW8MMnPprF3klOS7EMziNk9wG8keUCSX6IZ4Ge5bgMevnMhyb9v3/cBNAMg/QvNgEL3U83UU4ud/wXvoV3qHEvDtoJckTT3tu7ZLu+V5IHtay71OX4v8IttY2lv4HXAB6vqu+1rnZvk3D5/hX1ovvM7aBo6/537X21Y6PfeBvwdTTfVfZP8RJKfSvLz7S4X0OSRw5IcAGzoM56F3AYclGS/nSuS/HKS1VX1Y5rBE2GBXFL3ToW52OO9i7znLs+xNIhpyxO2R2yPaPp0LU/s6tg2Dtsi98ZpW6QPFkC663dpumz9TU9V76M9218M/CTNqOPvB15UVTsrqYfTdM26pc/3ehXwPJpuUO+iGVl6SVW1hWZQoD8Bbgeupx2QqaruBn6pXf5n4D/RJL/lOht4dpLbk7yVJpm9q33fG2kGHPtfK3j9hezqHEvT4mE0I4rv/Gx+H/hqz/ZFP8ftzxfS/Me4nabh0Ht/+uHAP/QZx98CH6O5mnAjzR8BN+3yiHv9Z5oG1zU03+kLgUPabe9qX/sLNLM4LDuPVNVXaM7BDWm6uD6UZkC5q5PcSZNnnlPN/b9D0cc5lsZhlHnC9ojtEc2GieQJ2yK2RYYtVffrZaMZl2awnx1V9c5JxyKpm9LMnPAFmqkkfzjpeCR1j+0RSSthW0TLYQFEkiRJkiTNPG+BkSRJkiRJM88CiCRJkiRJmnkWQCRJkiRJ0syzACJJkiRJkmbeqnG+2cEHH1zr1q0b51tKGpErr7zym1W1etTvY96QZod5Q9KgzBuSBrWrvDHWAsi6devYsmXLON9S0ogkuXEc72PekGaHeUPSoMwbkga1q7zhLTCSJEmSJGnmWQCRJEmSJEkzzwKIpKFLckySq3oe30nym0kOTHJJkuvanwdMOlZJkiRJuwcLIJKGrqq+WlXHVdVxwM8A3wM+BGwALq2qo4BL22VJkiRJGjkLIJJG7STg61V1I3AqsLldvxk4bVJBSZKkbrPHqaRBWQCRNGrPAd7fPl9TVdva57cCayYTkiRJ6jp7nEoa1FinwdXyrNvwkZG87taNp4zkdaWdkuwJPBN49fxtVVVJapHj1gPrAdauXdv3+/ldkSRpeDr2/+q/9jhNcirwpHb9ZuBy4KxRvKmk+5r2vGEPEEmj9DTgc1V1W7t8W5JDANqf2xc6qKo2VdVcVc2tXr16TKFKkqQOs8eppCVZAJE0Ss/l3sYIwMXAGe3zM4CLxh6RJEmaKT09Tj8wf1tVFbBoj9MkW5Js2bFjx4ijlDQNLIBIGokkewNPAT7Ys3oj8JQk1wFPbpclSZJWwh6nkvriGCCSRqKq7gIOmrfuWzT36EqSJA3LYj1ON2KPU0k97AEiSZIkqZPscSppEPYAkSRJktRJ9jiVNIgle4AkOSbJVT2P7yT5zSQHJrkkyXXtzwPGEbAkSZIkSdKgliyAVNVXq+q4qjoO+Bnge8CHgA3ApVV1FHBpuyxJkrQsSfZPcmGSryS5NsnjvOAiSZKGZdAxQE4Cvl5VNwKnApvb9ZuB04YYlyRJ2v2cDXysqh4BPBq4Fi+4SJKkIRm0APIc7h1heU1VbWuf3wqsWegA59eWJElLSbIf8ETgHICquruq7sALLpIkaUj6LoAk2RN4JvCB+duqqoBa6Djn15YkSX04AtgB/FmSzyd5dzu7Q18XXCRJkpYySA+QpwGfq6rb2uXbkhwC0P7cPuzgJEnSbmMV8Bjg7VV1PHAX82532dUFF3ucSpKkpQxSAHku997+AnAxcEb7/AzgomEFJUmSdjs3AzdX1RXt8oU0BZG+LrjY41SSJC2lrwJI2wX1KcAHe1ZvBJ6S5Drgye2yJEnSwKrqVuCmJMe0q04CrsELLpIkaUhW9bNTVd0FHDRv3bdoGieSJEnD8DLgve24YzcAv0pzseaCJGcCNwKnTzA+SZLUYX0VQCRJGqV1Gz4yktfduvGUkbyuRqOqrgLmFtjkBRdJkrRig06DK0mSJEmS1DkWQCRJkiRJ0syzACJpJJLsn+TCJF9Jcm2SxyU5MMklSa5rfx4w6TglSZIk7R4cA0TSqJwNfKyqnt0OaPgg4DXApVW1MckGYANw1iSD7IfjU0iSJEndZw8QSUOXZD/gicA5AFV1d1XdAZwKbG532wycNon4JEnSbLDHqaRBWACRNApHADuAP0vy+STvTrI3sKaqtrX73AqsmViEkiRpFuzscfoI4NHAtTQ9TC+tqqOAS9tlSbIAImkkVgGPAd5eVccDdzGv8VFVBdRCBydZn2RLki07duwYebCSJKl77HEqaVAWQCSNws3AzVV1Rbt8IU1B5LYkhwC0P7cvdHBVbaqquaqaW7169VgCliRJnbOiHqdecJF2PxZAJA1dVd0K3JTkmHbVScA1wMXAGe26M4CLJhCeJEmaDSvqceoFF2n34ywwkkblZcB72xlgbgB+laboekGSM4EbgdMnGJ8kSeq2hXqcbqDtcVpV23bV41TS7scCiKSRqKqrgLkFNp005lAkSZppo5qufdpV1a1JbkpyTFV9lXt7nF5D09N0I/Y4ldSjrwJIkv2BdwOPoulC9mvAV4HzgXXAVuD0qrp9FEFKkiRJ0gLscSqpb/32ANk5vdSz2+TyIOA1NNNLbUyygaa72VkjilOSJGnoRnXlfOvGU0byupLuyx6nkgax5CCoTi8lSZIkSZK6rp9ZYFY0vZQkSZIkSdKk9XMLzM7ppV5WVVckOZsFppdKsuD0UknWA+sB1q5du8JwJUmSdl+jHOzS23YkSbOunx4gC00v9Rja6aUAdjW9lPNrS5KkfiTZmuRLSa5KsqVdd2CSS5Jc1/48YNJxSpKkblqyAFJVtwI3JTmmXbVzeqmLaaaVAqeXkiRJw/ELVXVcVe0c1HADzaDrRwGXMq8XqiRJUr/6nQXG6aUkSdIknAo8qX2+GbgcZ52TJEnL0FcBxOmlljbKe3IlSdpNFPB37bhi76yqTTjouiRpynVxSvXd9e/XfnuASJIkjdoTquqWJA8BLknyld6NDro+Wl1swEuSNAgLIJIkaSpU1S3tz+1JPgScQDvoelVtW2rQdWATwNzc3IJFEknScFk4Vdf0MwuMJEnSSCXZO8k+O58DTwW+jIOuS5KkIbEHiCRJmgZrgA8lgaZ98r6q+liSz+Kg65IkaQgsgEiSpImrqhuARy+w/ls46LokSRoCCyDqDO8x7JYkW4HvAj8C7qmquSQHAucD64CtwOlVdfukYpQkSZK0+3AMEEmj9AtVdVxV7ZxGewNwaVUdBVzaLkuSJC1Lkq1JvpTkqiRb2nUHJrkkyXXtzwMmHaek6WAPEA3d7jqntPpyKvCk9vlm4HLgrEkFI0kava61C+wZ2km/UFXf7FneecFlY5IN7bLtDUkWQCSNTAF/l6SAd7ZTVK6pqm3t9ltpBj28nyTrgfUAa9euHUesM8dbxiRJuzEvuEhakLfASBqVJ1TVY4CnAS9J8sTejVVVNEWS+6mqTVU1V1Vzq1evHkOokiSpo3ZecLmyvYACfV5wkbT7sQeIpJGoqlvan9uTfAg4AbgtySFVtS3JIcD2iQYpSZK67glVdUuShwCXJPlK78aqqrY36v3Y41Ta/dgDRNLQJdk7yT47nwNPBb4MXAyc0e52BnDRZCKUJEmzoPeCC3CfCy4Au7rgYo9TaffTVw8Qp7OUNKA1wIeSQJNn3ldVH0vyWeCCJGcCNwKnTzBGSRqZrg38qdHzMzF87UWWn6iq7/ZccHkd915w2YgXXPzsST0GuQXG0ZUl9aWqbgAevcD6bwEnjT8iSZI0g7zgImkgKxkDxNGVO85qsCRJkrrKCy6adf69Nnz9FkCWPZ2lJGlh/qcmSZIkjU+/BRBHV5YkSZIkSZ3VVwFkJdNZtr1FNgHMzc0tWCSRJGkURtXLZuvGU0byupIkSRqdJafBdTpLSZIkSZLUdf30AHF0ZUmSJO0WHJ9Jk+JnTxq9JQsgsza6solFkpbPHCpJkqSuWvIWGEmSpHFJskeSzyf5cLt8RJIrklyf5Pwke046RkmS1E39zgIzdl5llCTtjhy4lZcD1wL7tstvBN5cVecleQdwJvD2SQUnSZK6a2oLIJIkafeS5DDgFOANwCvSDEB2IvC8dpfNwGuxACJJM82LARoVCyCSJA3IXooj8xbgt4B92uWDgDuq6p52+Wbg0IUOTLIeWA+wdu3a0UYpSZI6yTFAJEnSxCV5BrC9qq5czvFVtamq5qpqbvXq1UOOTpIkzQJ7gEiSpGnweOCZSZ4O7EUzBsjZwP5JVrW9QA4DbplgjJIkqcPsASJJkiauql5dVYdV1TrgOcAnqur5wGXAs9vdzgAumlCIkiSp4yyASBoZp7OUNARn0QyIej3NmCDnTDgeSZLUURZAJI3Szuksd9o5neWRwO0001lK0n1U1eVV9Yz2+Q1VdUJVHVlV/7GqfjDp+CRNFy+4SOqXBRBJI9EzneW72+Wd01le2O6yGThtIsFJkqRZ4gUXSX1xEFTt9kY5neVuPtf4W3A6S0mSNEI9F1zeQHO73M4LLs9rd9kMvBZ4+0QClDRV7AEiaeiczlKSJI3JW2guuPy4XR7ogkuSLUm27NixY+SBSpo8CyCSRmHndJZbgfNorsT863SW7T5OZylJkpbNCy6SBtV3AcTBhST1y+ksJUnSGHjBRdJABhkDZOfgQvu2yzsHFzovyTtoBhfy3jpJu3IWcF6S1wOfx+ksJUnSMlXVq4FXAyR5EvCqqnp+kg/QXHA5jxFccBnl+HEaLf/t1FcPEGdzkLRcTmcpSZLG7CyaAVGvpxkTxAsukoD+e4C8BWdzkCRJkjSFqupy4PL2+Q3ACZOMR9J0WrIHiIMLSZIkSZKkruunB8jOwYWeDuxFMwbIvw4u1PYCcXAhSZIkSZI0tZbsAeJsDpIkSZIkqesGmQVmPmdzkJYwqpGmt248ZSSvK0mSJEmzaqACiIMLSZIkSZKkLuprGlxJkiRJkqQuswAiSZIkSZJmngUQSZI0cUn2SvKZJF9IcnWS/9muPyLJFUmuT3J+kj0nHaskSeomCyCSJGka/AA4saoeDRwHnJzkscAbgTdX1ZHA7cCZkwtRkiR1mQUQSZI0cdW4s118QPso4ETgwnb9ZuC08UcnSZJmgQUQSZI0FZLskeQqYDtwCfB14I6quqfd5Wbg0AmFJ0mSOs4CiCRJmgpV9aOqOg44DDgBeES/xyZZn2RLki07duwYVYiSJKnDLIBIGjoHM5S0ElV1B3AZ8Dhg/ySr2k2HAbcscsymqpqrqrnVq1ePJ1BJktQpFkAkjYKDGUoaSJLVSfZvn/8k8BTgWppCyLPb3c4ALppIgJKmjhdcJA1q1dK7SNJgqqqAxQYzfF67fjPwWuDt445P2h2t2/CRkbzu1o2nDOulDgE2J9mD5gLNBVX14STXAOcleT3weeCcYb2hpM7becHlziQPAD6V5KPAK2guuJyX5B00F1xsb0iyACJpNNo/Yq4EjgTehoMZStqFqvoicPwC62+gGQ9Eku7DCy6SBuUtMJJGwsEMJUnSqDl7lKRBLFkA8d46SSvhYIaSJGlUvOAiaRD93ALjvXXSlJn2e/mTrAZ+WFV39Axm+EbuHczwPBzMUJIkDUnb5rjPBZe2F8guL7gAmwDm5uZqbMFKmpgle4BUY7F76y5s128GThtFgJI66RDgsiRfBD4LXFJVHwbOAl6R5HrgIBzMUJIkLZOzR0kaVF+DoK5kMMMk64H1AGvXrl1pvJI6wMEMJUnSGDh7lKSB9FUAqaofAce1FdYPMcC9dXYtkyRJkjRsXnCRNKiBZoFZzmCGkiRJkiRJk9bPLDDeWydJkiRJkjqtn1tgvLdOkiRJkiR12pIFEO+tkyRJkiRJXTfQGCCSJEmSJEldZAFEkiRJkiTNPAsgkiRJkiRp5lkAkSRJkiRJM88CiCRJkiRJmnkWQCRJkiRJ0syzACJJkiYuyeFJLktyTZKrk7y8XX9gkkuSXNf+PGDSsUqSpG6yACJJkqbBPcArq+pY4LHAS5IcC2wALq2qo4BL22VJkqSBWQCRJEkTV1Xbqupz7fPvAtcChwKnApvb3TYDp00kQEmS1HkWQCQNnV3ZJa1EknXA8cAVwJqq2tZuuhVYs8gx65NsSbJlx44d4wlUkiR1igUQSaNgV3ZJy5LkwcD/Bn6zqr7Tu62qCqiFjquqTVU1V1Vzq1evHkOkkibNCy6SBmUBRNLQ2ZVd0nIkeQBN8eO9VfXBdvVtSQ5ptx8CbJ9UfJKmjhdcJA1kyQKIlVVJK7GcruySdj9JApwDXFtVb+rZdDFwRvv8DOCicccmaTp5wUXSoPrpAWJlVdKyLLcru/fyS7ulxwO/ApyY5Kr28XRgI/CUJNcBT26XJek+HDtIUj9WLbVDmzy2tc+/m6S3svqkdrfNwOXAWSOJUlLn7Kore1Vt21VX9qraBGwCmJubW7BIImm2VNWngCyy+aRxxiKpW+ZfcGk6lDWqqpIsOnYQtjek3cpAY4DYlV1SP+zKLkmSxsGxgyQNou8CiF3ZJQ3AruySJGmkvOAiaVBL3gIDdmWXNBi7skuSpDHYecHlS0muate9huYCywVJzgRuBE6fTHiSps2SBZA+KqsbsbIqSZIkaYy84CJpUP30ALGyKkmSJEmSOq2fWWCsrEqSJEmSpE4baBYYSZIkSZKkLrIAIkmSJEmSZp4FEEmSJEmSNPMsgEiSJEmSpJlnAUSSJEmSJM08CyCSJEmSJGnmWQCRJEmSJEkzzwKIJEmSJEmaeRZAJEmSJEnSzLMAIkmSJi7Je5JsT/LlnnUHJrkkyXXtzwMmGaMkSeo2CyCSJGkanAucPG/dBuDSqjoKuLRdliRJWhYLIJKGziu5kgZVVZ8E/nne6lOBze3zzcBp44xJ0nSzvSFpUEsWQEwskpbhXLySK2nl1lTVtvb5rcCaSQYjaeqci+0NSQPopwfIuZhYJA3AK7mShq2qCqjFtidZn2RLki07duwYY2SSJsX2hqRBLVkAMbFIGhKv5Eoa1G1JDgFof25fbMeq2lRVc1U1t3r16rEFKGnq2N6QtKjljgFiYpG0bF7JldSni4Ez2udnABdNMBZJHWN7Q9J8Kx4E1cQiqU9eyZW0qCTvB/4ROCbJzUnOBDYCT0lyHfDkdlmSdsX2hqRFLbcAYmKRNCiv5EpaVFU9t6oOqaoHVNVhVXVOVX2rqk6qqqOq6slVNf+WXEmaz/aGpEUttwBiYpG0KK/kSpKkUbO9IWlQq5baoU0sTwIOTnIz8D9oEskFbZK5ETh9lEFK6paqeu4im04aayCSJGlm2d6QNKglCyAmFkmSJEmS1HUrHgRVkiRJkiRp2lkAkSRJkiRJM88CiCRJkiRJmnkWQCRJkiRJ0syzACJJkiRJkmaeBRBJkiRJkjTzLIBIkiRJkqSZZwFEkiRJkiTNPAsgkiRJkiRp5lkAkSRJkiRJM88CiCRJkiRJmnkWQCRJkiRJ0syzACJJkiRJkmbeigogSU5O8tUk1yfZMKygJM0u84akQZk3JA3KvCFpIcsugCTZA3gb8DTgWOC5SY4dVmCSZo95Q9KgzBuSBmXekLSYlfQAOQG4vqpuqKq7gfOAU4cTlqQZZd6QNCjzhqRBmTckLWjVCo49FLipZ/lm4Gfn75RkPbC+XbwzyVf7eO2DgW+uILZJ6FrMXYsXjHnk8saB4n3YMt5ilHkDOna+6V680L2YuxYvdCxm88bYdS1e6F7MXYsXOhazeWPsuhYvdC/mrsULHYt5WHljJQWQvlTVJmDTIMck2VJVcyMKaSS6FnPX4gVjHodpiXc5eQOmJ/5+dS1e6F7MXYsXuhfztMRr3pheXYu5a/FC92KelnjNG9OrazF3LV7oXszDinclt8DcAhzes3xYu06SFmPekDQo84akQZk3JC1oJQWQzwJHJTkiyZ7Ac4CLhxOWpBll3pA0KPOGpEGZNyQtaNm3wFTVPUleCvwtsAfwnqq6ekhxDdwVbQp0LeauxQvGPA4jjXfEeQM83+PQtZi7Fi90L2bzxnh1LV7oXsxdixe6F7N5Y7y6Fi90L+auxQvdi3ko8aaqhvE6kiRJkiRJU2slt8BIkiRJkiR1ggUQSZIkSZI08yZaAElycpKvJrk+yYYFtj8wyfnt9iuSrJtAmL3xLBXvK5Jck+SLSS5Nspx5y4dqqZh79ntWkkoy8amQ+ok5yentub46yfvGHeO8WJb6XKxNclmSz7efjadPIs6eeN6TZHuSLy+yPUne2v4+X0zymHHHuBRzx+h1LXd0LW+08Zg7xsi8MVpdyxltLJ3KG+aM8epazmhjMm+MmHljtMaSN6pqIg+aAYm+Djwc2BP4AnDsvH1eDLyjff4c4Pwpj/cXgAe1z180yXj7jbndbx/gk8Cngblpjxk4Cvg8cEC7/JApj3cT8KL2+bHA1gmf4ycCjwG+vMj2pwMfBQI8FrhikvEu85ybO0Ycc7vfVOSOruWNAWI2d4z3fJs3Rhhvu99U5IwBzvHU5A1zxlSe76nJGQPEbN4Y/Tk2b6ws5pHnjUn2ADkBuL6qbqiqu4HzgFPn7XMqsLl9fiFwUpKMMcZeS8ZbVZdV1ffaxU/TzDk+Sf2cY4DfA94I/Ms4g1tEPzH/OvC2qrodoKq2jznGXv3EW8C+7fP9gG+MMb77qapPAv+8i11OBf68Gp8G9k9yyHii64u5Y/S6lju6ljfA3DFu5o3R6lrOgO7lDXPGeHUtZ4B5YxzMGyM2jrwxyQLIocBNPcs3t+sW3Keq7gG+DRw0lujur594e51JU52apCVjbrsNHV5VHxlnYLvQz3k+Gjg6yT8k+XSSk8cW3f31E+9rgV9OcjPwN8DLxhPasg36WR83c8fodS13dC1vgLlj3Mwbo9W1nAHdyxvmjPHqWs64Tzwt88bwmTcmb8V5Y9VQwxEASX4ZmAN+ftKx7EqSnwDeBLxgwqEMahVN97In0VSuP5nk31XVHZMMaheeC5xbVX+c5HHAXyR5VFX9eNKBabqYO0aqa3kDzB3qQxfyRkdzBnQvb5gz1BfzxkiZN6bcJHuA3AIc3rN8WLtuwX2SrKLplvOtsUR3f/3ES5InA78NPLOqfjCm2BazVMz7AI8CLk+yleY+qosnPMBQP+f5ZuDiqvphVf1f4Gs0iWYS+on3TOACgKr6R2Av4OCxRLc8fX3WJ8jcMXpdyx1dyxtg7hg388ZodS1nQPfyhjljvLqWM+4TT8u8MXzmjclbed5YapCQUT1oqmM3AEdw76Asj5y3z0u47+BCF0x5vMfTDDRz1KTiHDTmeftfzuQHF+rnPJ8MbG6fH0zTDeqgKY73o8AL2uf/lubeukz4PK9j8cGFTuG+gwt9ZpKxLvOcmztGHPO8/SeaO7qWNwaI2dwx3vNt3hhhvPP2n2jOGOAcT03eMGdM5fmempwxQMzmjdGfY/PGyuMead6Y2C/W/gJPp6mKfR347Xbd62gqktBUoD4AXA98Bnj4lMf7ceA24Kr2cfEk4+0n5nn7Tjyx9HmeQ9Ml7hrgS8BzpjzeY4F/aJPOVcBTJxzv+4FtwA9pqtRnAi8EXthzft/W/j5fmobPxDLOubljxDHP23fiuaNreaPPmM0d4z3f5o0Rxjtv34nnjD7P8VTlDXPG1J3vqcoZfcZs3hj9OTZvrCzekeeNtC8kSZIkSZI0syY5BogkSZIkSdJYWACRJEmSJEkzzwKIJEmSJEmaeRZAJEmSJEnSzLMAIkmSJEmSZp4FEEmSJEmSNPMsgEiSJEmSpJlnAUT3k2RNkk8m+W6SP+5j/zuTPLx9fm6S1y/zfXd5bJLXJ/lmkluTrG3fd4/lvJek0UvyoiS3td/Vg5bY9zVJ3t0+X5ekkqxaxnvu8tgkxyS5qs1vv5HkHUl+d9D3kTR6tkckrZRtEc1nAaSjkpyR5Mok30lyc5I/7P2SJTkwyYeS3JXkxiTPG+Dl1wPfBPatqlcutXNVPbiqbljGr9G3JGuBVwLHVtW/qap/at/3R+32y5P8l1HGsEBML02yJckPkpw7zveW+pXkUUn+tm2s1wLbd5krkjyvXX9Xkr9KcmCf7/sA4E3AU9vv6rd2tX9V/X5VjeM7/FvAZVW1T1W9tapeWFW/18b8pCQ3jyGG+1juOZaGZZR5wvbIaCV5YJJz2nP73faPqqeN6/21+5hknrAtMnq7U1vEAkh3PQj4TeBg4GeBk4BX9Wx/G3A3sAZ4PvD2JI/s87UfBlxTVfdLbhO0FvhWVW2fdCA9vgG8HnjPpAORduGHwAXAmYtsXzRXtD/fCfxKu/17wJ/2+b5rgL2Aq5cd+Wg8jCmKaYXnWBqWUeYJ2yOjtQq4Cfh5YD/gd4ALkqybZFCaSRPJE7ZFRm+3a4tUlY8hP4CtNMWILwLfBs4H9hrxe74C+Ov2+d40SeTonu1/AWzs43XOpUlwdwN3Ak8GTgD+EbgD2Ab8CbBnzzEFHNlz/Ot7tj0DuKo99v8AP92z7Xjgc8B323N0Xu+xPfs9Gfg+8OM2pnOBde37rgLeAPwI+Jd2+58AAd4MbAe+A3wJeNSIzv3rgXMn/bnz0b3HOHMFcGST8u+zbpe5Avh94H09236q3X+fJd7raOCu9jt6J/CJdv3ZNA317wBXAj/Xc8xrgb9sn//r97td3g84p80/t7TfuT3abXsAf0RzlfgG4CW9x86L6xPzcsXRO3NWey5688ydwENp8t+WNubbgDcN+d9lWefYx+7z6HKeWOrYJWI5F9sjy/13/CLwrEl/dn2M7zHLeWJXxy4Rp22R/v9Nd6u2iD1ARud04GTgCOCngRcstFOSJyS5YxePJ/T5fk/k3kri0cA9VfW1nu1fAJa84lJVLwDeC/xhNV3FPk7zJf1vNL1NHkfT2+TFS71WkuNpekf8V+AgmsrixW13zT2Bv6JJcAcCHwCetUhMHweeBnyjjekF87b/NvD3wEvb7S8FnkpzTo6mSVinAwt2e0vyp7s4/19c6veUVmjcuaLXUrnike0yAFX1ddpGyq5etH29na+xf1Wd2D7/LHAczXf+fcAHkuzVR5znAvfQNLqOp/l+7+yi+us0f9gcD8wBz95FXCdy31zxtZ5td3HfPPPgqvoGTUPp7Kral6ZBcMFCr51mHIBd/fss1u1/WedYu52u5gnbI2NujyRZ077X1Fxd1tjMap6wLWJbZKgGHtRFfXtr+4ElyV/TfNHup6o+Bey/kjdK8ms0X7adX8IH01QIe32bpso6sKq6smdxa5J30nS1fMsSh64H3llVV7TLm5O8BngsTVX0AcBbqik1XpjkFcuJbxE/pPl9HwF8pqquXWzHqnoxfTSgpBEZW65YwFK54sHt8mLbB1JVf9mz+MdJfgc4hp7/dOdrG/NPp2m8fB+4K8mbafMLTYPvLVV1U7v/HwBPWk58i/ghcGSSg6vqm8CnF9qpqv6J5f37DPUca2Z1NU/8aIljB2J7ZNfa8Q7eC2yuqq8s93XUWbOaJ2yL2BYZKnuAjM6tPc+/R/PBGrokpwF/ADyt/UJA011q33m77kvTtXM573F0kg+nGe38OzTdpA7u49CHAa/srTwCh9N05XoocEvb2NjpxuXEt5Cq+gRN19O3AduTbEoy/5xI02AsuWIRS+WKYeeSVyW5Nsm323ywH0vnkofR/HGyrSePvBN4SLv9oTRdWXcaWh5pnUlzBeQrST6b5BlDfv2hnmPNrK7mCdsjY2qPJPkJml4sdwMvHfbrqxNmNU/YFrEtMlQWQCYsyc+lmZZpscfP7eLYk4F3Ab9YVV/q2fQ1YFWSo3rWPZrld4d8O/AV4Ki269VraO5pXcpNwBuqav+ex4Oq6v00988dmqT3ddYuMz5oruDcd0UzqvLPAMfSJI3/d6ED00w9tdj5twuppsJKcsUuLJUrrm6Xd8bwcOCB7XEDx08z6vnpwAFVtT/N1YWlcslNwA+Ag3vyyL5VtbNb6zaaP2R2GnYeua6qnkvTyHkjzdXhvefvl3unwlzs8fxF3nNo51iawjxhe4TRt0fa2M+hGbzwWVX1wxXErxnXwTxhW8S2yFBZAJmwqvr7nnu8Fnr8/ULHJTmRppvjs6rqM/Ne8y7gg8Drkuyd5PHAqTRXBsi9c1Ov6zPMfWi6pt2Z5BHAi/o87l3AC5P8bBp7JzklyT40g5jdA/xGkgck+SWaAX6W6zbg4TsXkvz79n0fQDMA0r/QDCh0P9VMPbXY+V/0PuUkq9LcM7gHsEeSvbKMucKlfqwgV6T9nO7ZLu+V5IHta+4yV9DkmF9sG0t7A68DPlhV321f69z0PwX0PjTf+R00DZ3/zv2vNiz0e28D/o6mm+q+SX4iyU8l+fl2lwto8shhSQ4ANvQZz0JuAw5Kst/OFUl+OcnqqvoxzeCJsEAuqXunwlzs8d5F3nOX51gaxLTlCdsj42mP0BSG/i3NBbHvryB27Qa6lid2dWwbh22Re+O0LdIHCyDd9bs0Xbb+pqeq99Ge7S8GfpJm1PH3Ay+qqp2V1MNpumbd0ud7vQp4Hk03qHfRjCy9pKraQjMo0J8AtwPX0w7IVFV3A7/ULv8z8J9okt9ynQ08O8ntSd5Kk8ze1b7vjTQDjv2vFbz+Qn6HZqTmDcAvt89/Z8jvIa3Uw2g+mzu//98HvtqzfdFc0f58Ic1/jNtpGg6996cfDvxDn3H8LfAxmqsJN9L8EXDTLo+413+maXBdQ/OdvhA4pN32rva1v0Azi8Oy80g198y/H7ghTRfXh9IMKHd1kjtp8sxzhvkHRh/nWBqHUeYJ2yMjbI8keRjN4K7HAbf2caVXWq6J5AnbIrZFhi1V9+tloxmXZrCfHVX1zknHIqmb0syc8AWaqSTtbi1pYLZHJK2EbREthwUQSZIkSZI087wFRpIkSZIkzTwLIJIkSZIkaeZZAJEkSZIkSTNvrFN2HnzwwbVu3bpxvqWkEbnyyiu/WVWrR/0+5g1pdpg3JA3KvCFpULvKG2MtgKxbt44tW7aM8y0ljUiSG8fxPuYNaXaYNyQNyrwhaVC7yhveAiNJkiSpk5Lsn+TCJF9Jcm2SxyU5MMklSa5rfx4w6TglTYe+CiBJ/luSq5N8Ocn7k+yV5IgkVyS5Psn57TzMkiRJkjQuZwMfq6pHAI8GrgU2AJdW1VHApe2yJC1dAElyKPAbwFxVPQrYA3gO8EbgzVV1JHA7cOYoA5UkSZKknZLsBzwROAegqu6uqjuAU4HN7W6bgdMmEZ+k6dPvLTCrgJ9Msgp4ELANOBG4sN1uYpEkSZI0TkcAO4A/S/L5JO9Osjewpqq2tfvcCqyZWISSpsqSBZCqugX4I+CfaAof3wauBO6oqnva3W4GDl3o+CTrk2xJsmXHjh3DiVqSJEnS7m4V8Bjg7VV1PHAX8253qaoCaqGD/TtF2v30cwvMATTdyI4AHgrsDZzc7xtU1aaqmququdWrRz6DlSRJkqTdw83AzVV1Rbt8IU1B5LYkhwC0P7cvdLB/p0i7n36mwX0y8H+ragdAkg8Cjwf2T7Kq7QVyGHDL6MKcfus2fGRkr7114ykje21plozqe+h3UJpd5g2pu6rq1iQ3JTmmqr4KnARc0z7OADa2Py+aYJgzzRyqrulnDJB/Ah6b5EFJwr2J5TLg2e0+JhZJ9+HsUZIkaQxeBrw3yReB44Dfpyl8PCXJdTQXczdOLjxJ02TJHiBVdUWSC4HPAfcAnwc2AR8Bzkvy+nbdOaMMVFJ39MwedWxVfT/JBTSzRz2dZvao85K8g2b2qLdPMFRJktRhVXUVMLfAppPGHIqkDujnFhiq6n8A/2Pe6huAE4YekaRZsXP2qB9y39mjntdu3wy8FgsgkiRJksag32lwJalvzh4lSZIkadpYAJE0dM4eJUmSJGnaWACRNAr/OntUVf0QuM/sUe0+u/3sUZIkSZLGxwKIpFFw9ihJkiRJU8UCiKShq6orgJ2zR32JJtdsAs4CXpHkeuAgnD1KkiRJ0pj0NQuMJA3K2aMkSZIkTRMLIJIkSR2xbsNHRvbaWzeeMrLXliRpGlgAkSRJUyHJ/sC7gUcBBfwa8FXgfGAdsBU4vapun0yEkjTaQuQoWNyU7uUYIJIkaVqcDXysqh4BPBq4FtgAXFpVRwGXtsuSJEkDswAiSZImLsl+wBNpB0euqrur6g7gVGBzu9tm4LRJxCdJkrrPW2AkSdI0OALYAfxZkkcDVwIvB9ZU1bZ2n1uBNROKT5LUcaO6fcnbjLrDHiCSJGkarAIeA7y9qo4H7mLe7S5VVTRjg9xPkvVJtiTZsmPHjpEHK0mSusceIJIkaRrcDNxcVVe0yxfSFEBuS3JIVW1LcgiwfaGDq2oTsAlgbm5uwSKJJElq7K69YewBIkmSJq6qbgVuSnJMu+ok4BrgYuCMdt0ZwEUTCE+SJM0Ae4BIkqRp8TLgvUn2BG4AfpXmYs0FSc4EbgROn2B8kiSpwyyASJKkqVBVVwFzC2w6acyhSNLMGNWtDlIXWQCRpCXsrvdISpIkSbPEAogkSZKkTkqyFfgu8CPgnqqaS3IgcD6wDtgKnF5Vt08qRknTwwKIJEmSpC77har6Zs/yBuDSqtqYZEO7fNZkQpN2L9Pec9pZYCRJkiTNklOBze3zzcBpkwtF0jSxACJJkiSpqwr4uyRXJlnfrltTVdva57cCayYTmqRp4y0wkiRJkrrqCVV1S5KHAJck+UrvxqqqJLXQgW3BZD3A2rVrRx+ppImzB4gkSZKkTqqqW9qf24EPAScAtyU5BKD9uX2RYzdV1VxVza1evXpcIUuaIAsgkiRJkjonyd5J9tn5HHgq8GXgYuCMdrczgIsmE6GkaeMtMJIkSZK6aA3woSTQ/F3zvqr6WJLPAhckORO4ETh9gjFKmiIWQCRJkoZsVNMASrpXVd0APHqB9d8CThp/RJKmnbfASJIkSZKkmWcPkA4Y1VWkrRtPGcnrSpIkSZI0bSyASJIkyQsukqSZt9sVQLwnV5IkSZKk3Y9jgEiSJEmSpJnXVwEkyf5JLkzylSTXJnlckgOTXJLkuvbnAaMOVpIkza4kW5N8KclVSba062xvSJKkoei3B8jZwMeq6hE0U01dC2wALq2qo4BL22VJkqSV+IWqOq6q5tpl2xuSJGkolhwDJMl+wBOBFwBU1d3A3UlOBZ7U7rYZuBw4a1iBOVaHJEkCRtreUHc5aOvoeY4lzZp+BkE9AtgB/FmSRwNXAi8H1lTVtnafW4E1owlRkiTtJgr4uyQFvLOqNmF7Q5I05SwWdkc/t8CsAh4DvL2qjgfuYl7306oqmkbL/SRZn2RLki07duxYabySOsKxgyQtwxOq6jHA04CXJHli70bbG5IkaSX6KYDcDNxcVVe0yxfSFERuS3IIQPtz+0IHV9WmqpqrqrnVq1cPI2ZJ3eDYQZIGUlW3tD+3Ax8CTsD2hiRJGpIlCyBVdStwU5Jj2lUnAdcAFwNntOvOAC4aSYSSOqdn7KBzoBk7qKruoLmXf3O722bgtEnEJ2n6JNk7yT47nwNPBb6M7Q1JkjQk/YwBAvAy4L1J9gRuAH6VpnhyQZIzgRuB00cToqQOcuwgSYNaA3woCTTtk/dV1ceSfBbbG5IkaQj6KoBU1VXA3AKbThpqNJJmxc6xg15WVVckOZsFxg5qBzq8nyTrgfUAa9euHXWskqZAVd1Ac7vc/PXfwvaGJEkagn7GAJGkQTl2kCRJkqSpYgFE0tA5dpAkSZKkadPvGCCSNCjHDpIkSZI0NSyASBoJxw6SJEmSNE28BUaSJElSZyXZI8nnk3y4XT4iyRVJrk9yftsbVZIsgEiSJEnqtJcD1/YsvxF4c1UdCdwOnDmRqCRNHQsgkiRJkjopyWHAKcC72+UAJ9LMQAewGThtIsFJmjqOASJJ6tu6DR8Zyetu3XjKSF5XkqbFqPIn7PY59C3AbwH7tMsHAXdU1T3t8s3AoROIS9IUsgeIJEmSpM5J8gxge1Vduczj1yfZkmTLjh07hhydpGlkD5DdmFdypdk1yiuNkiRNiccDz0zydGAvYF/gbGD/JKvaXiCHAbcsdHBVbQI2AczNzdV4QpY0SRZAJEmSJHVOVb0aeDVAkicBr6qq5yf5APBs4DzgDOCiScUorYQXtIbPW2AkSZIkzZKzgFckuZ5mTJBzJhyPpClhDxBJkiRJnVZVlwOXt89vAE6YZDySppMFEA2dY4tI/bFboyRJkjQ+FkAkSZKkDrOgLkn9cQwQSZIkSZI08+wBIkmSpkaSPYAtwC1V9YwkR9DM5HAQcCXwK1V19yRjlCSNlr2aNCr2AJEkSdPk5cC1PctvBN5cVUcCtwNnTiQqSZLUeRZAJEnSVEhyGHAK8O52OcCJwIXtLpuB0yYSnCRJ6jxvgZEkSdPiLcBvAfu0ywcBd1TVPe3yzcChCx2YZD2wHmDt2rWjjVIDsSu7JGlaWACRJE2c02cryTOA7VV1ZZInDXp8VW0CNgHMzc3VcKOTJEmzwAKIJEmaBo8Hnpnk6cBewL7A2cD+SVa1vUAOA26ZYIySJKnDLIBIkjSgUXbp3117rVTVq4FXA7Q9QF5VVc9P8gHg2TQzwZwBXDSpGCVJUrc5CKokSZpmZwGvSHI9zZgg50w4HkmS1FH2AJEkSVOlqi4HLm+f3wCcMMl4JEnSbLAHiCRJkiRJmnkWQCRJkiRJ0syzACJJkiRJkmaeBRBJkiRJkjTzHARVnTGqaSd31yknJUmSJGl3Yg8QSZIkSZI08/ougCTZI8nnk3y4XT4iyRVJrk9yfpI9RxemJEmSJN0ryV5JPpPkC0muTvI/2/X+nSJpQYP0AHk5cG3P8huBN1fVkcDtwJnDDEySJEmSduEHwIlV9WjgOODkJI/Fv1MkLaKvAkiSw4BTgHe3ywFOBC5sd9kMnDaC+CRJkiTpfqpxZ7v4gPZR+HeKpEX0OwjqW4DfAvZplw8C7qiqe9rlm4FDhxuapK5LsgewBbilqp6R5AjgPJocciXwK1V19yRjlCSp16gGXddotG2NK4EjgbcBX8e/UyQtYskeIEmeAWyvqiuX8wZJ1ifZkmTLjh07lvMSkrrLW+ckSdLIVNWPquo44DDgBOAR/R7r3ynS7qefHiCPB56Z5OnAXsC+wNnA/klWtdXVw4BbFjq4qjYBmwDm5uZqKFFLmno9t869AXhFz61zz2t32Qy8Fnj7RALUbsEruZK0e6iqO5JcBjwO/06RtIgle4BU1aur6rCqWgc8B/hEVT0fuAx4drvbGcBFI4tSUhe9hebWuR+3y946J0mShibJ6iT7t89/EngKTc9T/06RtKBBZoGZ7yyaq7rX0/xhc85wQpLUdd46J0mSxuAQ4LIkXwQ+C1xSVR/Gv1MkLaLfQVABqKrLgcvb5zfQ3Gcnddoou8hv3XjKyF57ynnrnCRJGqmq+iJw/ALr/TtF0oJW0gNEkhbkrXOSBpVkrySfSfKFJFcn+Z/t+iOSXJHk+iTnJ9lz0rFKkqRusgAiaZzskippMT8ATqyqRwPHAScneSzOHiVJkobEAoikkaqqy6vqGe3zG6rqhKo6sqr+Y1X9YNLxSZoO1bizXXxA+yia2aMubNdvBk4bf3SSJGkWWACRJElTIckeSa4CtgOXAF+nz9mjHDxZkiQtxQKIJEmaClX1o6o6jmaQ5BOARwxw7KaqmququdWrV48qREmS1GEWQCRJ0lSpqjtoBk1+HO3sUe2mRWePkiRJWooFEEmSNHFJVifZv33+k8BTgGtx9ihJkjQkq5beRZIkaeQOATYn2YPmAs0FVfXhJNcA5yV5PfB5nD1KkiQtkwUQSZI0cVX1ReD4BdbfQDMeiCRJ0op4C4wkSZIkSZp5FkAkSZIkSdLMswAiSZIkSZJmngUQSZIkSZI08xwEVRqhdRs+MpLX3brxlJG8riRJkiTNKnuASJIkSZKkmWcBRJIkSZIkzTwLIJIkSZIkaeZZAJEkSZIkSTPPAogkSZKkzklyeJLLklyT5OokL2/XH5jkkiTXtT8PmHSskqaDBRBJkiRJXXQP8MqqOhZ4LPCSJMcCG4BLq+oo4NJ2WZIsgEiSJEnqnqraVlWfa59/F7gWOBQ4Fdjc7rYZOG0iAUqaOhZAJEmSJHVaknXA8cAVwJqq2tZuuhVYM6m4JE0XCyCSJEmSOivJg4H/DfxmVX2nd1tVFVCLHLc+yZYkW3bs2DGGSCVNmgUQSZIkSZ2U5AE0xY/3VtUH29W3JTmk3X4IsH2hY6tqU1XNVdXc6tWrxxOwpImyACJJkibO2RwkDSpJgHOAa6vqTT2bLgbOaJ+fAVw07tgkTScLIJIkaRo4m4OkQT0e+BXgxCRXtY+nAxuBpyS5DnhyuyxJrJp0AJIkSe2Ahdva599N0jubw5Pa3TYDlwNnTSBESVOmqj4FZJHNJ40zFkndYAFEkqQpsm7DR0byuls3njKS1x2F5czmkGQ9sB5g7dq1Y4hSkiR1jbfASJKkqbHc2RwczFCSJC3FAogkSZoKK5nNQZIkaSkWQCRJ0sQ5m4MkSRo1xwCRJEnTYOdsDl9KclW77jU0szdckORM4Ebg9MmEJ0mSum7JAkiSw4E/pxl0rIBNVXV2kgOB84F1wFbg9Kq6fXShSpKkWeVsDpIkadT6uQXmHuCVVXUs8FjgJUmOBTYAl1bVUcCl7bIkkeTwJJcluSbJ1Ule3q4/MMklSa5rfx4w6VglSZIk7R6WLIBU1baq+lz7/LvAtcChwKnA5na3zcBpI4pRUvdYOJUkSZI0VQYaBDXJOuB44ApgTVVtazfdSnOLzELHrE+yJcmWHTt2rCRWSR1h4VSSJEnStOm7AJLkwTRT0/1mVX2nd1tVFc34IPdTVZuqaq6q5lavXr2iYCV1z3IKp5IkSZI0bH0VQJI8gKb48d6q+mC7+rYkh7TbDwG2jyZESV213MKpPcckSZIkDduSBZAkAc4Brq2qN/Vsuhg4o31+BnDR8MOT1FUrKZzac0ySJEnSsC05DS7weOBXgC8luapd9xpgI3BBkjOBG4HTRxKhpM7po3C6EQun0lit2/CRkbzu1o2njOR1JUmShm3JAkhVfQrIIptPGm44kmaEhVNJkiRJU6WfHiCSNBALp5IkSZKmzUDT4EqSJEmSJHWRPUCkDvJefkmSJEkajD1AJEmSJEnSzLMAIkmSJKlzkrwnyfYkX+5Zd2CSS5Jc1/48YJIxSpouFkAkSZIkddG5wMnz1m0ALq2qo4BL22VJAiyASJIkSeqgqvok8M/zVp8KbG6fbwZOG2dMkqabBRBJkjRxdmWXNCRrqmpb+/xWYM0kg5E0XSyASJKkaXAudmWXNERVVUAttj3J+iRbkmzZsWPHGCOTNCkWQCRJ0sTZlV3SkNyW5BCA9uf2xXasqk1VNVdVc6tXrx5bgJImxwKIJEmaVnZllzSoi4Ez2udnABdNMBZJU8YCiCRJmnp2ZZc0X5L3A/8IHJPk5iRnAhuBpyS5DnhyuyxJAKyadACSJEmLuC3JIVW1rZ+u7MAmgLm5uUULJZJmR1U9d5FNJ401EEmdYQ8QSZI0rezKLkmShsYCiCRJmji7skuSpFHzFhhJkjRxdmWXJEmjZg8QSZIkSZI08yyASJIkSZKkmWcBRJIkSZIkzTwLIJIkSZIkaeZZAJEkSZIkSTPPAogkSZIkSZp5FkAkSZIkSdLMswAiSZIkSZJmngUQSZIkSZI08yyASJIkSZKkmWcBRJIkSZIkzTwLIJIkSZIkaeZZAJEkSZIkSTPPAogkSZIkSZp5FkAkSZIkSdLMW1EBJMnJSb6a5PokG4YVlKTZZd6QNCjzhqRBmTckLWTZBZAkewBvA54GHAs8N8mxwwpM0uwxb0galHlD0qDMG5IWs5IeICcA11fVDVV1N3AecOpwwpI0o8wbkgZl3pA0KPOGpAWtpAByKHBTz/LN7TpJWox5Q9KgzBuSBmXekLSgVaN+gyTrgfXt4p1JvtrnoQcD3xxNVCPRtXihezF3LV7oWMx540DxPmxkcZg3ppkxj16n4s0bgf5jNm+sXNfihe7F3LV4oWMx294Yu67FC92LuWvxQsdiHlbeWEkB5Bbg8J7lw9p191FVm4BNg754ki1VNbf88Mara/FC92LuWrzQvZjHEK95o0fX4gVjHoeuxQsjj9m80aNr8UL3Yu5avNC9mG1vjFfX4oXuxdy1eKF7MQ8r3pXcAvNZ4KgkRyTZE3gOcPFKA5I008wbkgZl3pA0KPOGpAUtuwdIVd2T5KXA3wJ7AO+pqquHFpmkmWPekDQo84akQZk3JC1mRWOAVNXfAH8zpFjmG7g72oR1LV7oXsxdixe6F/PI4zVv3EfX4gVjHoeuxQsjjtm8cR9dixe6F3PX4oXuxWx7Y7y6Fi90L+auxQvdi3ko8aaqhvE6kiRJkiRJU2slY4BIkiRJkiR1wsQLIElOTvLVJNcn2bDA9gcmOb/dfkWSdRMIszeepeJ9RZJrknwxyaVJRjZ1V7+Wirlnv2clqSQTHQ24n3iTnN6e56uTvG/cMS4Qz1Kfi7VJLkvy+faz8fRJxNkTz3uSbE/y5UW2J8lb29/ni0keM+4Yd8W8MXrmjdEzb4yXeWP0zBujZc4Yr67ljDamTuWNruWMNhbzxgiNJW9U1cQeNIMSfR14OLAn8AXg2Hn7vBh4R/v8OcD5Ux7vLwAPap+/aJLx9htzu98+wCeBTwNz0xwvcBTweeCAdvkh036Oae5Ze1H7/Fhg64RjfiLwGODLi2x/OvBRIMBjgSsmGe8yzrd5Y8Qxt/uZN0Ybs3ljvOfbvDHimNv9zBuji9ecMd7zPTU5Y4CYpyZvdC1nDHCOzRsri3nkeWPSPUBOAK6vqhuq6m7gPODUefucCmxun18InJQkY4yx15LxVtVlVfW9dvHTNPOOT1I/5xjg94A3Av8yzuAW0E+8vw68rapuB6iq7WOOcb5+Yi5g3/b5fsA3xhjf/VTVJ4F/3sUupwJ/Xo1PA/snOWQ80S3JvDF65o3RM2+Ml3lj9Mwbo2XOGK+u5QzoXt7oWs4A88bIjSNvTLoAcihwU8/yze26BfepqnuAbwMHjSW6++sn3l5n0lSoJmnJmNuuQ4dX1UfGGdgi+jnHRwNHJ/mHJJ9OcvLYoltYPzG/FvjlJDfTjEj+svGEtmyDftbHybwxeuaN0TNvjJd5Y/TMG6NlzhivruWM+8TTmva80bWcAeaNabDivLGiaXC1uCS/DMwBPz/pWHYlyU8AbwJeMOFQBrGKpnvZk2gq159M8u+q6o5JBrWE5wLnVtUfJ3kc8BdJHlVVP550YJoe5o2RMm9oJpk3RqprecOcob50IW90NGeAeWPqTboHyC3A4T3Lh7XrFtwnySqarjnfGkt099dPvCR5MvDbwDOr6gdjim0xS8W8D/Ao4PIkW2nupbp4goMM9XOObwYurqofVtX/Bb5Gk2gmpZ+YzwQuAKiqfwT2Ag4eS3TL09dnfULMG6Nn3hg988Z4mTdGz7wxWuaM8epazrhPPK1pzxtdyxlg3pgGK88bSw0SMsoHTYXsBuAI7h2Y5ZHz9nkJ9x1g6IIpj/d4msFmjprkuR0k5nn7X85kByXr5xyfDGxunx9M0w3qoCmP+aPAC9rn/5bm/rpM+LOxjsUHGDqF+w4w9JlJxrqM823eGHHM8/Y3b4wmZvPGeM+3eWPEMc/b37wx/HjNGeM931OTMwaIeWryRtdyxgDn2Lyx8rhHmjcm9ov1/BJPp6mMfR347Xbd62iqktBUoT4AXA98Bnj4lMf7ceA24Kr2cfG0n+N5+05DclnqHIemS9w1wJeA50z7OaYZVfkf2sRzFfDUCcf7fmAb8EOaSvWZwAuBF/ac47e1v8+XJv2ZWMb5Nm+MOOZ5+5o3RhOzeWO859u8MeKY5+1r3hh+vOaM8Z7vqcoZfcY8VXmjazmjz3Ns3lhZvCPPG2lfSJIkSZIkaWZNegwQSZIkSZKkkbMAIkmSJEmSZp4FEEmSJEmSNPMsgEiSJEmSpJlnAUSSJEmSJM08CyCSJEmSJGnmWQCRJEmSJEkzzwKIJEmamCTnJnn9pOOQJEmzzwKIJEmSJEmaeRZAJEmSJEnSzLMAIkmS+pJka5JXJ7kmye1J/izJXkmuTfKMnv1WJdmR5DHt8geS3Jrk20k+meSRi7z+C5J8at66SnJk+/yBSf4oyT8luS3JO5L85Ch/Z0mSNDssgEiSpEE8H/gPwE8BRwO/A7wfeG7PPv8B+GZVfa5d/ihwFPAQ4HPAe5f53hvb9zwOOBI4FPjvy3wtSZK0m1k16QAkSVKn/ElV3QSQ5A3A/0dT8Ph8kgdV1feA59EURQCoqvfsfJ7ktcDtSfarqm/3+6ZJAqwHfrqq/rld9/vA+4BXr/i3kiRJM88CiCRJGsRNPc9vBB5aVdcnuRb4xSR/DTwTOB4gyR7AG4D/CKwGftweezDQdwGkPfZBwJVNLQSAAHss8/eQJEm7GQsgkiRpEIf3PF8LfKN9vvM2mJ8Arqmq69v1zwNOBZ4MbAX2A26nKV7MdxdNkQOAJP+mZ9s3ge8Dj6yqW1b8W0iSpN2OY4BIkqRBvCTJYUkOBH4bOL9dfx7wVOBFNLel7LQP8APgWzTFjd/fxWt/AXhkkuOS7AW8dueGqvox8C7gzUkeApDk0CT/YSi/lSRJmnkWQCRJ0iDeB/wdcAPwdeD1AFW1DfhH4P/h3qIIwJ/T3CpzC3AN8OnFXriqvga8Dvg4cB3wqXm7nAVcD3w6yXfa/Y5Z8W8kSZJ2C6mqSccgSZI6IMlW4L9U1ccnHYskSdKg7AEiSZIkSZJmngUQSZIkSZI087wFRpIkSZIkzTx7gEiSJEmSpJlnAUSSJEmSJM08CyCSJEmSJGnmWQCRJEmSJEkzzwKIJEmSJEmaeRZAJEmSJEnSzPv/Abn+ZPlJVUKQAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1080x432 with 8 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots(2, 4, figsize=(15, 6), constrained_layout=True)\n",
    "for i, (ni, vi) in enumerate(pvalues.items()):\n",
    "    ax[0, i].hist(vi[:, 0])\n",
    "    ax[1, i].hist(vi[:, 1])\n",
    "    ax[0, i].set_title(f\"n = {ni}, failed fits = {np.sum(np.isnan(vi[:, 0]))}\")\n",
    "    ax[1, i].set_title(f\"n = {ni}, failed fits = {np.sum(np.isnan(vi[:, 1]))}\")\n",
    "fig.supxlabel(\"pvalue\");"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "bdbf20ff2e92a3ae3002db8b02bd1dd1b287e934c884beb29a73dced9dbd0fa3"
  },
  "kernelspec": {
   "display_name": "Python 3.8.12 ('venv': venv)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.12"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
