diff --git a/examples/notebook_luminosity_function_single.ipynb b/examples/notebook_luminosity_function_single.ipynb
index 93e041531422571b1a499b0089f9e4e465d4a0f3..0a19202d3d6b54cc27b089c742e1a194a226587a 100644
--- a/examples/notebook_luminosity_function_single.ipynb
+++ b/examples/notebook_luminosity_function_single.ipynb
@@ -54,8 +54,7 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "adding: max_evolution_time=0.1 to BSE_options\n",
-      "adding: tmp_dir=/tmp/binary_c_python-izzard/notebooks/notebook_luminosity to grid_options\n",
+      "adding: tmp_dir=/tmp/binary_c_python-david/notebooks/notebook_luminosity to grid_options\n",
       "verbosity is 1\n"
      ]
     }
@@ -104,28 +103,6 @@
     "# help(population.add_grid_variable)"
    ]
   },
-  {
-   "cell_type": "markdown",
-   "id": "bd75cebe-2152-4025-b680-dc020b80889b",
-   "metadata": {},
-   "source": [
-    "All the distribution functions that we can use are stored in the `binarycpython.utils.distribution_functions` or `binarycpython/utils/distribution_functions.py` on git. If you uncomment the help statement below you can see which functions are available now:"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": 4,
-   "id": "048db541-3e92-4c5d-a25c-9c5a34b9c857",
-   "metadata": {
-    "scrolled": true,
-    "tags": []
-   },
-   "outputs": [],
-   "source": [
-    "import binarycpython.utils.distribution_functions\n",
-    "# help(binarycpython.utils.distribution_functions)"
-   ]
-  },
   {
    "cell_type": "markdown",
    "id": "2a9104fc-4136-4e53-8604-f24ad52fbe56",
@@ -141,7 +118,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 5,
+   "execution_count": 3,
    "id": "aba3fe4e-18f2-4bb9-8e5c-4c6007ab038b",
    "metadata": {},
    "outputs": [],
@@ -165,22 +142,10 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 6,
+   "execution_count": 4,
    "id": "47979841-2c26-4b26-8945-603d013dc93a",
    "metadata": {},
-   "outputs": [
-    {
-     "ename": "TypeError",
-     "evalue": "add_grid_variable() got an unexpected keyword argument 'resolution'",
-     "output_type": "error",
-     "traceback": [
-      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
-      "\u001b[0;31mTypeError\u001b[0m                                 Traceback (most recent call last)",
-      "\u001b[0;32m/tmp/ipykernel_519112/518757914.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      4\u001b[0m     \u001b[0mtmp_dir\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mTMP_DIR\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      5\u001b[0m )\n\u001b[0;32m----> 6\u001b[0;31m population.add_grid_variable(\n\u001b[0m\u001b[1;32m      7\u001b[0m     \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"M_1\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      8\u001b[0m     \u001b[0mlongname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Primary mass\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
-      "\u001b[0;31mTypeError\u001b[0m: add_grid_variable() got an unexpected keyword argument 'resolution'"
-     ]
-    }
-   ],
+   "outputs": [],
    "source": [
     "# Mass\n",
     "population = Population()\n",
@@ -191,8 +156,16 @@
     "    name=\"M_1\",\n",
     "    longname=\"Primary mass\",\n",
     "    valuerange=massrange,\n",
-    "    samplerfunc=\"const({min}, {max}, {res})\".format(min = massrange[0], max = massrange[1], res = resolution[\"M_1\"]),\n",
-    "    probdist=\"{probtot}/({max} - {min})\".format(probtot = total_probability, min = massrange[0], max = massrange[1]), # dprob/dm1 : all stars are equally likely so this is 1.0 / (Mmax - Mmin)\n",
+    "    samplerfunc=\"self.const_linear({min}, {max}, {res})\".format(\n",
+    "        min=massrange[0],\n",
+    "        max=massrange[1],\n",
+    "        res=resolution[\"M_1\"]\n",
+    "    ),\n",
+    "    probdist=\"{probtot}/({max} - {min})\".format(\n",
+    "        probtot=total_probability,\n",
+    "        min=massrange[0],\n",
+    "        max=massrange[1]\n",
+    "    ), # dprob/dm1 : all stars are equally likely so this is 1.0 / (Mmax - Mmin)\n",
     "    dphasevol=\"dM_1\",\n",
     "    parameter_name=\"M_1\",\n",
     "    condition=\"\",  # Impose a condition on this grid variable. Mostly for a check for yourself\n",
@@ -214,7 +187,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 5,
    "id": "0c986215-93b1-4e30-ad79-f7c397e9ff7d",
    "metadata": {},
    "outputs": [],
@@ -258,10 +231,18 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 15,
    "id": "fd197154-a8ce-4865-8929-008d3483101a",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "adding: parse_function=<function parse_function at 0x7f6920fd2430> to grid_options\n"
+     ]
+    }
+   ],
    "source": [
     "# import the bin_data function so we can construct finite-resolution probability distributions\n",
     "# import the datalinedict to make a dictionary from each line of data from binary_c\n",
@@ -279,18 +260,15 @@
     "    for line in output.splitlines():\n",
     "        # obtain the line of data in dictionary form \n",
     "        linedata = datalinedict(line,parameters)\n",
-    "        \n",
+    "\n",
     "        # Check the header and act accordingly\n",
     "        if linedata['header'] == \"ZERO_AGE_MAIN_SEQUENCE_STAR\":\n",
-    "            \n",
+    "\n",
     "            # bin the log10(luminosity) to the nearest 0.1dex\n",
     "            binned_log_luminosity = bin_data(math.log10(linedata['luminosity']),\n",
     "                                             binwidth['luminosity'])\n",
-    "            \n",
     "            # append the data to the results_dictionary \n",
     "            self.grid_results['luminosity distribution'][binned_log_luminosity] += linedata['probability'] \n",
-    "            \n",
-    "            #print (self.grid_results)\n",
     "    \n",
     "    # verbose reporting\n",
     "    #print(\"parse out results_dictionary=\",self.grid_results)\n",
@@ -316,12 +294,42 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 16,
    "id": "8ea376c1-1e92-45af-8cab-9d7fdca564eb",
    "metadata": {
     "tags": []
    },
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "adding: verbosity=0 to grid_options\n",
+      "Do dry run? True\n",
+      "Doing dry run to calculate total starcount and probability\n",
+      "Grid has handled 39 stars with a total probability of 1\n",
+      "**************************\n",
+      "*         Dry run        *\n",
+      "*  Total starcount is 39 *\n",
+      "* Total probability is 1 *\n",
+      "**************************\n",
+      "\n",
+      "Do join of subprocesses ...\n",
+      "Joined subprocesses.\n",
+      "**********************************************************\n",
+      "*  Population-f9b28e4ed6ec4a67b17cd86c5a43c41c finished! *\n",
+      "*               The total probability is 1.              *\n",
+      "*  It took a total of 3.99s to run 39 systems on 2 cores *\n",
+      "*                   = 7.98s of CPU time.                 *\n",
+      "*              Maximum memory use 343.570 MB             *\n",
+      "**********************************************************\n",
+      "\n",
+      "No failed systems were found in this run.\n",
+      "Do analytics\n",
+      "Added analytics to metadata\n"
+     ]
+    }
+   ],
    "source": [
     "# set number of threads\n",
     "population.set(\n",
@@ -329,7 +337,7 @@
     "    verbosity=0,\n",
     "    # set number of threads (i.e. number of CPU cores we use)\n",
     "    num_cores=2,\n",
-    "    )\n",
+    ")\n",
     "\n",
     "# Evolve the population - this is the slow, number-crunching step\n",
     "analytics = population.evolve()  \n",
@@ -348,20 +356,51 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 19,
    "id": "e1f0464b-0424-4022-b34b-5b744bc2c59d",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "{'population_id': 'f9b28e4ed6ec4a67b17cd86c5a43c41c', 'evolution_type': 'grid', 'failed_count': 0, 'failed_prob': 0, 'failed_systems_error_codes': [], 'errors_exceeded': False, 'errors_found': False, 'total_probability': 0.9999999999999999, 'total_count': 39, 'start_timestamp': 1655508316.7679594, 'end_timestamp': 1655508320.7581806, 'time_elapsed': 3.9902212619781494, 'total_mass_run': 1951.365, 'total_probability_weighted_mass_run': 50.035, 'zero_prob_stars_skipped': 0}\n"
+     ]
+    }
+   ],
    "source": [
     "print(analytics)"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 18,
    "id": "05c6d132-abee-423e-b1a8-2039c8996fbc",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[None]"
+      ]
+     },
+     "execution_count": 18,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "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3R7YwRXSMhJB59ixozz++N9ISmrMQw895rH/PDV1AQkJDRky5EwsFguNGzchNXUBN9/8R4/nnDhxMh988D5btmyiT59+ACxatJDhw0cSF1e5fEmLFi1Zu3Y1mZkZNGvW3L/foBf27NnNk08+wtSpFzNpUiwffjiL+++/h1tu+SMffTSbCy64kJMnT/DRR7N49tkneeml12s856xZ72K12rj88qs5fvwYH3/8AY899jBvvz2r7Jj587/h6acfo1evPtx6651kZBzm888/Zfv2rbz99myio6MpLi7m3nvvwGazMmPG5TRq1IjDhw+TlvYjeXnHiY+Pr/TaF1xwIdnZ2axevaJct2xcXByjRo1l6dJU7rjjHmw2W9m+RYu+JSIigvHjJ1b5PTmdTh588E9s2rSBqVMvokOHjvzwwzKefPLRGq/HmjUrefTRhxg9eiznnz8Nu93O7t2/s3nzRi655DJGjx7HwYP7WbjwW+68814aNUoEjK5l93N8990ipk2bTkJCAk2bNq3y9UpKSrjvvjtJ7tabS6/8A9s2reb1118B4IorrinXGqppulFV17Pq73UV9913J+3adeDGG2/l5MkTzJ37MbfeegMzZ35MUtKp76mkpIR7772dPn368cc/3sWaNav45JMPadOmLdOmXVzja9WWJCMRdP7xjyfIysrkxRdfIzEx0eMxqakLGDVqTFnXy5gx41i8eCF/+MNtHpNX585d6NIlmdTUBfTp04/s7CzWr1/L448/4/H8V1xxDc888wQzZkylT59+9O3bn8GDh9K7d1+s1sB3KOzdu4e33ppJz569AWjWrAWPPPIgr776Mp98Mq/sjbGkpIQPPnifw4cP0aJF5QEc7kpKSnjvvVll16xhw0a89NLz7Nr1G507J1NSUsLrr79CcnI3XnnlTaKijEofSnXn0Ucf4ptvvuDiiy9l9+5dpKcf4O23Z9GjR6+y81d3L6h377506NCR1atXVOqWPeusc1i06FvWr1/D4MFnlm1PTV3A0KHDyr5XT3788Xs2bFjPHXfcU9aCnjr1Yu6885ZqrwVAWtpPdOrUmaee+j+P+5OTu6JUDxYu/JaRI8fQqlXrSsfs27eXDz6YQ/v2Hcq2ubdy3RUUFHDG4BQuvfIWbDYr1199BffeewczZ77LtGnTiYk+1QovLqm+FVLd9fTktddeIjExkddf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\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "# make a plot of the luminosity distribution using Seaborn and Pandas\n",
     "import seaborn as sns\n",
@@ -412,7 +451,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 22,
    "id": "1f37d2c0-1108-4ab9-a309-20b1e6b6e3fd",
    "metadata": {},
    "outputs": [],
@@ -420,16 +459,45 @@
     "# Update the probability distribution to use the three-part power law IMF \n",
     "population.update_grid_variable(\n",
     "    name=\"M_1\",\n",
-    "    probdist=\"three_part_powerlaw(M_1, 0.1, 0.5, 1.0, 150, -1.3, -2.3, -2.3)\",\n",
+    "    probdist=\"self.three_part_powerlaw(M_1, 0.1, 0.5, 1.0, 150, -1.3, -2.3, -2.3)\",\n",
     ")"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 23,
    "id": "6f4463e8-1935-45f2-8c5f-e7b215f8dc47",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Do dry run? True\n",
+      "Doing dry run to calculate total starcount and probability\n",
+      "Grid has handled 39 stars with a total probability of 0.211729\n",
+      "**********************************\n",
+      "*             Dry run            *\n",
+      "*      Total starcount is 39     *\n",
+      "*  Total probability is 0.211729 *\n",
+      "**********************************\n",
+      "\n",
+      "Do join of subprocesses ...\n",
+      "Joined subprocesses.\n",
+      "**********************************************************\n",
+      "*  Population-1d1d556abeae4549aa28f9740807dc84 finished! *\n",
+      "*           The total probability is 0.211729.           *\n",
+      "*  It took a total of 3.90s to run 39 systems on 2 cores *\n",
+      "*                   = 7.80s of CPU time.                 *\n",
+      "*              Maximum memory use 519.211 MB             *\n",
+      "**********************************************************\n",
+      "\n",
+      "No failed systems were found in this run.\n",
+      "Do analytics\n",
+      "Added analytics to metadata\n"
+     ]
+    }
+   ],
    "source": [
     "# Clean and re-evolve the population \n",
     "population.clean()\n",
@@ -441,10 +509,33 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 24,
    "id": "cfe45a9e-1121-43b6-b6b6-4de6f8946a18",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[None]"
+      ]
+     },
+     "execution_count": 24,
+     "metadata": {},
+     "output_type": "execute_result"
+    },
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAEdCAYAAABDiROIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAAsTAAALEwEAmpwYAABEJElEQVR4nO3dd3hUVfrA8e+kBxJIgAAhIC3wgoCA0nsVxQYKYl97Wxu7lnV1f3ZXXfvaK7ZVwYoFpYnSq3Q80msCAUIJJJAyvz/uJEySSTITZnJnkvfzPDyTnHvmzjuXyX3nnHvuOQ6n04lSSilltzC7A1BKKaVAE5JSSqkgoQlJKaVUUNCEpJRSKihoQlJKKRUUIuwOIERFA92BNCDf5liUUipUhAPJwGLgWMmNmpAqpzsw2+4glFIqRPUH5pQs1IRUOWkAmZlHKCgI7H1c9evHsW9fVkBfo6bSYxs4emwDJ5SPbViYg8TE2uA6h5akCaly8gEKCpwBT0iFr6MCQ49t4OixDZxqcGw9XurQQQ1KKaWCgiYkpZRSQUETklJKqaCgCUkppVRQ0ISklFIqKOgouxCUnX2ErKwD5OfnFZXl5hWQX+AkOjIch8PG4ELInj1hFBQU2B1GtaTHNnCC8diGhYUTERFFfHwCkZFRld6PJqQQk519hMOHM0lISCIyMgqHw0FBgZNtuw9DONSuG0OdWpX/QNQkERFh5OUF1x92daHHNnCC7dg6nU4KCvI5diybzMw9xMcnEhtbu1L70i67EJOVdYCEhCSioqJxuJpCefknPpyHjxy3KzSlVA3kcDgID4+gVq14EhIacOTIwUrvSxNSiMnPzzupJrFSSgVKZGQ0eXm5lX6+JqQQ5NCLREqpIHSy5yZNSEoppYKCJiSllFJBQROSUgEyZsx5PPHEw7a89m233chtt91oy2sXSkvbRb9+3fjxx++C5vWfeOJhxow5z7bXPuusQQF/7bJePxTU2GHfIvIIMBZoB1xmjPnM5pBqrLS0XYwde36F9f75z4cYObL4yWTfvr1ceOE5FBQUMGnSdzRu3LjU82677UaWL19Gy5at+OijiaW2z5w5nf/7v38A8PLLb3D66d2Ktq1YsZwPP3yPjRvXc+jQQRISEklNbcuwYSM488yzfH2rNd6CBfNYs2YV1113k92heG316lUsXDiPiy++jPj4eLvDKSYUj2d5amxCAtYDdwKP2R1ITZeQkMi//vWox20FBQX8978vkJ19lDZtpNT2GTOmEhMTQ3h4BNOn/8QVV1ztcT9RUVFs3ryJDRvWk5rapti2adN+IioqmuPHiy9gOXPmdB566H7atGnL2LGXEB9fh7S0XSxfvozvvvs6qBPSCy+8ancING6czIwZc4mIOHGaWbhwPpMmfWrbCfS++x70+abStWtX8f77bzNy5HleJyRP7z0QyjqeVfX6/hZa0fqRMeZjABF5wO5YarrY2FhGjBjpcdu7777JoUMHue22u2jTpm2p7dOm/US/fgOJiopi2rSfy0xIp5zSgqNHjzB9+s/FElJWVhYLF86jd+++/PrrL8We8957b9GqVWvefHMCkZGRxbZlZu738V1WrZLx2sHhcBAdHW13GMUE+gSdn59Pfn4+UVFRtr73YDz23rD9GpKIJIvIUyLyi4gcFhGniAwqo260iDwtIrtEJFtEFojI0CoOWVWR5cuX8eGH79G7d1/Gjbu81Pbt27exbt1ahg49k6FDz2TjxvVs2rSxzP0NHXomM2ZMxek8sbjZrFkzcDgc9O8/qFT9Xbt2cOqpHT2e3BMT6/n8ft5990369etWqvzHH7+jX79upKXtKiobM+Y87r//7yxevIBrr72cIUP6cu21l7N27WoApkz5nksuuZAhQ/pw2203smvXzmL7LHkNadmyJfTr141ff53JhAnvMGrU2QwZ0oc777yFHTu2l4ppxoypXHPNZQwZ0odzzx3Ov//9KAcOHChWZ/v2bTzwwD2cf/4Ihgzpw+jRI3noofvJyrJWMy15HeOJJx5m0qRPAejXr1vRv6NHjzJsWD9efPHZUnFs376Nfv268dVXk8o9tocPH+aJJx5mxIiBnHXWIB5//CGysg6XqufpGtL06T9z7bVXMHz4AM48cyBXXTWOiROtON99901efvl5AMaOPb8o5sL/q379uvHSS88xZcr3XHbZRQwZ0ofVq1eWew1nx47t3HXXrQwb1o8LLzyHTz75oNj2wv+rZcuWFCsv3Of3308u93i61y35+kuWLOKWW65l6NC+nHXWYB588L5Sn53Ca127d6dz333jGT68P+eeO4xXXnmR/HyP6+r5TTC0kAS4D9gArAT6lFN3AnAR8KKr/tXAFBEZaIyZH9AoVZU6dOggjz76LxIT6/HAA494vL9h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PO4bICrK+nPNzDzo8SbTESPO4e23XyM/P58GDZLo3PmMCo9xz559+Oabr/jyyy+KBjXk5+czceJnpV6/5HE5ePBAqQETLVumAnD0aA55eQVFMR88eJCGDUu3/AoKKP036eG9F772xImfF12vKSgo4MsvJxEbG0vHjp3JyysgKakx4eHhLFu2lL59T4zN+uKLE7OMVHQ8S75+QkJ92rRpy/ffT+bSS68iLs76Mr127WpWrVrJuHGXl3mMTrxPz+Wlj0dBsXOWu7AwR7lf5EMpIaVhdduVVFgWuA5YFVB792bw9NNPEBtbi9TUNmVeOE1JaUqbNsJvv/1C9+69PHbJORwOevfuyy+/TCc7O5vY2NIN58TERK677qYKV968//6/k5zchL59B5CSkkJ2dg5Llixk7tzZtG9/alELzFs9evSiUaPGPPXUY1x66RbCwsL54YfJJCQksnt3esU7qAIRERHccsvtPPnkI9x++00MG3Yme/bs5osvPqdVq9acd95owEqqL7zwDIMGDeWUU5pTUJDPzz9PweFwMHDgkDL3L9IegBdf/A89e/YmLCyMYcNGFG0fPvws3njjv8yZ8xuXXHKFV6MZ+/YdQKdOnXn11ZfYuXMHzZu35Lfffim6H6o8Tz31OIcPH+L007vRsGFDdu+23mubNm1p0aKlK+Z2ALz11msMHXomERER9O07wONnqyIxMTHMmfMrhw8fQqQ98+bNYenSRdx0021FI+zi4uIYNGgoX3zxOeAgJaUp8+bNJjMzs9T+Kjqe7m699U7uvvsObrnlWs4553yOHDnCpEmfUb9+gzJvKK9qoZSQlgN3ikhciYENhVcfV1R9SMoftm3bWnQT41NPPV5mvbPPPpe+ffuTlZVFnz79yqzXt29/fvzxO2bP/vWkpve5774HmT37V2bOnMbevRk4nVa3ylVXXcsVV/zF57v+IyIiePLJZ3nuuad45503qFevPhdffCnx8XV48slHKh2nv40ceR5RUVF88skHvPrqS9SuXZvhw8/i5ptvL7r7PzW1DT169GLevNl8++1XxMTEkJrahmeffbnc0Yf9+w9k7NhLmTbtJ6ZOnYLT6Sx2Am3QoAFnnNHDNZT5bK/iDQsL4+mnn+ell57j559/xOFw0LfvAG677S6uuab0DdXuRow4m8mTv+brr78gK+sw9erVZ8iQYVx77Y1FybBt23bcdNNf+eqrSSxcON81b+LkSiWkiIgInnvuvzz77L+ZMWMq8fF1uOmm27jyyquL1Rs//l7y8/P49tsviYyMYsiQYdx6651cddW4YvUqOp7uunfvybPPvsy7777JW2+9TlRUJN269eDWW+8M6OAcXzgqczEzUNzuQxpsjJlVYltPYAHF70OKxroPabcxpuwzlP+1ADbb0WWXnr6Vxo2Lj5Q5npvPrr1HAIiMCCMlqWqubYW6ilpIqvJO5tjee+940tJ2epwIVwX/59bTOaqQW5ddS2BLye1B0UISkQddP7Z3PV4pIv2AA8aYVwCMMQtFZBLwjIgkAxuxRsk15yQHJyilgsOePbtZuHAeN9xwi92hKBsERUKi9Izb17oetwKvuJVf5ap7FZCINdXQSGPM3IBHqJQKmF27drJq1Qq+/fYroqKiOffcUXaHpGwQFAnJGOPVQuzGmBzgHtc/pVQ1sXz5Mp588hEaN07mwQcfKXO6KFW9BUVCUkrVbCNHnldq8UVV89i+/IRSSikFmpCUUkoFCU1IISiYhuorpVShkz03aUIKMeHhEeTmHrc7DKWUKiU39xgREZVfisTrQQ0iUh9oaIxZ51bWEvgbUA/40Bjzc6UjUV6Ji0vgwIEMEhKSiIyMKnNmYKWUqgpOp5OCgnxycrI5cuQg8fGVn/XBl1F2LwFtgR4AIhIHzObEsg/jRGSIMea3SkejKhQba601c/DgXvLz8wDIy3eSlWVNaBkR5iA939MctKqksLCwKp3SvybRYxs4wXhsw8LCiYyMIjGxIZGRZa8vVhFfElJv4CO338dhJaORWPPMTQPuBTQhBVhsbO2ixASwfU8Wz3+9CICUpNo8dp33i4vVZCWnZVL+o8c2cKrzsfXlGlIjYLvb72cDS4wxPxlj0oEJWKu6qiqmnXZKqerAl4SUS/FF8AYCv7r9fgCo74eYlFJK1UC+dNn9CVwkIq8C52ENZJjhtr0ZsN+PsSmllKpBfElIr2J1y2UCtYBNFE9I/YFVfotMKaVUjeJ1l50x5kOs5R5mAB8DZxtjcqFoSHgCoAuYKKWUqhSvWkgiEg6kAD8YYz4qud0Ysw84w8+xKaWUqkG8bSFFYnXRXRfAWJRSStVgXiUk1zpEe4EjgQ1HKaVUTeXLsO8fgXMDFYiqPJ1qVSlVHfiSkO4FkkXkAxHpJCIxgQpKVZ7eJKuUClW+DPveg/VlvDNwBYCIlKzjNMboKrQ20taSUipU+ZI8PkTPd0FJW0VKqerA64RkjLk6gHEopZSq4XSBPqWUUkGhUtd7XGshJeAhoRljtp1kTEoppWognxKSiFwCPAi0L6da+ElFpJRSqkbyustOREYB/8NKYm9iXUv/FJiEtTTFUuBR/4eolFKqJvDlGtLdwDqgC/B/rrL3jDGXAN0AwVo5VimllPKZLwnpNOAD1zRChQu6hwMYY1YDbwH3+zc85Q0di6+Uqg58SUjhwD7Xz9mux7pu2w3Q0R9BqcrTe5KUUqHKl4S0A2gOYIzJxpq5wX3JCUEnX7WdtpaUUqHKl1F284BhnLh+NBm4S0SysRLbX4Hv/Bue8oa2ipRS1YEvLaTXgFkiEuv6/QGsbrqHsZLURqyBD0oppZTPfJk6aDGw2O33DKCLiJwG5APrjDEFZT1fKaWUKo8v9yENEJGkkuXGmJXGmDVAPREZ4NfolFJK1Ri+dNn9AgwvZ/tQVx2llFLKZ74kpIqunYdz4v4kpaqVAqeOX1Qq0Hyd7bu8v8o+wN6TiEVVkp4qA8fpdPKfT3/nntfmkXn4mN3hKFWtlTuoQUTuBO50K3pRRJ7wUDURqAO858fYVCXoEHD/2rTrEOu2ZgLw6fQ/uXV0J5sjUqr6qmiU3QFgq+vnFlgzNewuUccJrAYWAC/4MTalbHc870QvdFZ2ro2RKFX9lZuQjDEfAB8AiMhm4B/GmMlVEZiqHO2+U0qFKl/uQ2oZyECqkohEA29gjRqMB5YBt7mGr4cc7aZTSlUHXickEakPNDTGrHMrawn8DagHfGiM+dn/IQZEBLAJ6AWkYV0n+wZoY2NMSilVo/kyl91LQFugBxQtYz4baOLaPk5EhhhjfvNviP5njDkCPFb4u4i8AjwrIvWNMfvKfqZSSqlA8SUh9QY+cvt9HFYyGom1MN804F7Ap4QkIslYLZSeWAv9xQGDjTGzPNSNxlqV9kqskX0rgAeMMTN8eU0PegN7NBkppZR9fLkPqRGw3e33s4ElxpifjDHpwASgayViEOA+oCmwsoK6E4DxwMdYSawAmCIivSvxutaLiyRgLS74z8ruQyml1MnzpYWUC8S6/T4QK0EUOgDUr0QMS4EGxph9IjIK+NpTJRHpAVwCjDfGvOgq+xBryPnTwAC3urNc8XlyjzHmWVe9GOBb4HtjjN5DpZRSNvIlIf0JXCQirwLnYQ1kcO8qawbs9zUAY8xhL6uOwUqK77g9N0dE3gWeEJFkY0yaq3xQRTsTkXDgM6xWX0gvm6FDvZVS1YEvCelVrBZRJlALa5Sae0LqD6zyW2SldQX+MMZklShfhDXyuQvWiDlvvQ3EAGONMdXmnK5DwJVSocqX+5A+FBEnMAo4CDxpjMmFoiHhCViL+AVKMrDTQ3lhEmriYZtHItIcuAbIATJFpHDT2caY2d7up379OG+rnpSkpPhyt2flnphNICIivML66oSKjlXawZyinyMjI/TY+kCPVeBU12PrSwsJY8xHFB9pV1i+DzjDX0GVIRbwNLtljtt2rxhjtuKHxsS+fVkUFAS2cZWUFE9GRvm9mpmZR4t+zsvLr7C+snhzbA8cyC76OTc3T4+tl7w5tqpyQvnYhoU5yv0i7+ts33bKBqI9lMe4ba/xqk3fo1KqxgmlhJSG1W1XUmHZriqMJajodSOlVHUQSglpOdDONUOEu56uxxVVG45SSil/CqWE9AUQCVxfWOCaueEaYK4xpsa2kJRSqjrwaVBDoIjIg64f27serxSRfsABY8wrAMaYhSIyCXjGNd3QRuAvQHPg6ioOWSmllJ+VmZBEZBNwV+H6RyLyf8BXxpjVAYjjsRK/X+t63Aq84lZ+lavuVVhz2a0ERhpj5gYgJqWUUlWovBbSKVhrBRV6GNiANVWPXxljvLoub4zJAe5x/VMuOrIugJx6dJWqKuVdQ9oJdCpRpn+dQU5H3CmlQlV5LaRvgXtF5CxOzFH3oIjcUM5znMaYoX6LTimlVI1RXkK6D2veumFYAwecQBLWPHZK1QwObXMqVVXKTEjGmGzgIdc/RKQAa5DD/6ooNlUJ2qeqlApVvtyHdA0wL1CBqMrT7/BKqerAl9m+Pyj82TW7d0vXr5t16W+llFIny6cbY0WkM/Ay0K9E+WzgDmNMRUuQK6WUUh55nZBEpCMwB2t27W+BNa5NHbBWkJ0tIn2MMWvK2IVSKsD+3H6Aj6f+SZMGtejVoTEdW9YjIjyUZghTNZkvLaRHsZYQ71uyJeRKVr+56lzkv/CUUr6YvWIXOzKy2JGRxaJ1e4iLjaRH+4b06tCY1k3q4NBRgyqI+ZKQBgCveuqWM8asFpHXgJv9Fpnymo6sC6AQm6khr8SCkVnZucxctpOZy3aSlBBDr1Mb06tDI5Lr17YpQqXK5ktCqg2kl7M9zVVH2Ui//yqA+nWiuXBAa+avTWfN5v04nZBxIIfv5m3hu3lbaNE4nt4dGtPj1EbUrR1ld7hKAb4lpE3AucCrZWw/11VHKWWziPAwendsTO+OjTmYdYxF6/awYG06m9Ospa+3pB9mS/phPp+5gVNbJNK7Q2O6tm1ATFRQLACgaihfPn0fAv8Wkf8BTwB/uMrbA/cDZwL/8G94StmsGlxzqRsXzfDuzRjevRlp+46wYM1uFqxNJ+NADgVOJ6s372f15v1ERYZxepskenVoTIeWiYSH6WAIVbV8SUjPAqcDlwDjgAJXeRhWT9FE4Dm/RqeU8qvk+rUZPaAVo/q3ZOOuQyxYk86idXvIys7leG4BC9buZsHa3cTXiqRH+0b06tCIVsk6GEJVDV9ujM0HxonIO8AoTtwYuwn4xhgz3f/hKV+F1iV4ZReHw0FqSl1SU+pyydA2rN68nwVr0vl9/V5y8wo4fDSXGUt3MGPpDhomxtLr1Eb07tiYRok6laUKHJ87jI0x04BpAYhFVZJ+d1UnIyI8jC6pDeiS2oDsY3ks+zODBWvSWbs1E6cT9mRmM3nuFr6bu4Wxg1M5q+cpdoesqim9gqmUKhIbHUHfTsn07ZTMgaxjLFq7m/lrdrN192GcwMRfNhATHc6gLil2h6qqIU1ISimPEuKiObPHKZzZ4xQ2px3i+c+XcyQnj49+MtSKjqBH+0Z2h6iqGR1Go1Q14gzQjbwtk+sw/uIuREeG4wTe/m4tqzbpnMrKvzQhVQM6kCGAQmymhkBq1aQOt1/UiYhwB/kFTl79ahXrdxywOyxVjWhCqmZ0gIMCAnb/1Kkt6nHzBR1xOOB4XgEvTlrJtt2HA/JaqubxKiGJSKyIXCUiPQMdkFIquJ3eNolrR7YHIPtYHs9/vpz0/UdtjkpVB962kI4BbwNdAxiLUipE9O2UzKVD2wBw6Gguz332O/sP5dgclQp1XiUkY0wBsB2oE9hwlAoyOkNBmYZ3b8b5fVsAsO/QMZ77fDmHjh63NygV0ny5hvQBcKWIRAcqGHXy9BK8qkoX9GvJ0DOaApC27ygvTFxB9rE8m6NSocqX+5DmARcCy11rH60HSnUcG2N+81Nsykv6HV7ZxeFwcOmwNhzNyWP+mnS2ph/m5S9W8sRf+9kdmgpBviQk9+mCXqL0l3GHqyz8ZINSSoWOMIeDa0a2I/tYHss37MVsP8DTHy7mhnPa6/Lpyie+JKRrAhaFUiqkRYSHccuoDrwwcQV/bDvA4rW7CXfA9eeeSpheh1Ne8mW27w8CGYhSKrRFRoRz+0Wn8Z9Pf2dL+mEWrNlNregILh/eVpevUF7R9nQ1oAMZAkhnavBJbHQE4y/uTLNGcQDMXLaTb2ZvtjkqFSp8Skgi0kxE3hORHSJyXESGuMqTXOXdAxOm8pZ+D1Vg7+cgvlYUj97Yh/p1YgD4bt4Wpi7aZmNEKlR4nZBEpCWwBLgIWIPb4AVjTAbQDbje3wEqpUJPg4RY7r60C3VqRwHw2cwNzF6xy+aoVLDzpYX0BNay5R2Byyn9JexHQMd6KqUAaJRYi7+P60KtaOtS9YSf/mCp2WNzVCqY+ZKQhgGvGWO24/myxVagqV+iUipY6MX4k9KsYRx3je1MVGQYTie8OXkNa7bstzssFaR8SUh1gLRytkehC/7ZTi/Bq2CT2rQut43uRHiYg7x8J698uYqNOw/aHZYKQr4kpO1Ah3K29wI2nFw4qjL0O7wKdh1b1efG8zvgcMCx3HxenLSCHXuy7A5LBRlfEtJXwLUi0tGtzAkgIhcBY4GJfoxNKVWNdG/XkL+c1Q6AIzl5PPf5cvZk6rIV6gRfBzXsABYCH2Mlo3+IyHysRLQCeM7vESqlqo0BnZswdnBrAA4eOc6zny0n8/Axm6NSwcLrhGSMOQT0Bt7BGuLtAIYDArwGDDbG6IIoStkoFO7jPbtnc87p3RyAvQdzePqTZXwzexOrN+/jaI7OFF6T+TQIwZWU7gTuFJEkrKSUYYwJgT+DE0TkdWAUUBtrdOD9xpjvbQ3qJITUwQ81oXCGD0EXDmjFkZw8Zv2+kz0Hspk8dwtgnVBSkmqTmlKX1il1SW1al4YJsTr1UA1R6VFxrpthQ9VLwHhjTI6IdAOmi0hLY0ym3YGdLP2zVRD8o9UdDgdXDG9LQu0oFq7bTdo+61qSE9iRcYQdGUeYtdy6kTa+ViSpKXWLklSLxvFEReqiAtWRzwlJRC4GRgOtXEWbgK+NMSEzoMEY80eJomggGQj5hKRUqAgLc3B+v5ac368lWdm5bNx5kA07D7Jx50E2pR3ieG4BAIeP5vL7+r38vn4vAOFhDpo3ji+WpBLjdd3Q6sDrhCQitYFvgCFYX8QPuDZ1By4WkZuA840xR3zYZzJWF2BPrOtScVjXomZ5qBsNPApcCSRiDaJ4wBgzw9vXK7G/17CW1IgBvgfWVWY/SqmTFxcbSefUBnRObQBAXn4BOzKy2LDjRJLad8ga/JBf4GTTrkNs2nWIqYu3A9CgbsyJbr6UujRtWJvwMJ07OtT40kJ6AhgKvAw8ZYxJBxCRxsA/gDtcde7yYZ8C3Id1/9JKoE85dSdgzaP3oqv+1cAUERlojJnvw2sCYIy5VURuBwYDHULtOphS1VlEeBgtGtehReM6DOvWDID9h3LYuOtQUZLatvsw+QXWn+3egznsPZjDgrW7AYiODKdrmwZcOLAVDerG2vY+lG98SUjjgEnGmLvcC12J6S4RSXHVuav0U8u0FGhgjNknIqOArz1VEpEewCVY131edJV9CKwGngYGuNWdBQws4/XuMcY86xZ7Ptb1oztF5A9jzM8+xK5qgmC/GFOD1KsTQ706MXRv1xCA47n5bEk/zIadB4uSVFZ2LmDdfLtg7W6W/pnB2T1P4exezYnW605Bz5eEVAf4pZztM4GRvry4Meawl1XHALlYQ84Ln5sjIu8CT4hIsjEmzVU+yJcYXCKA1pV4XtDRZp6qKaIiw2nbLIG2zRIAcDqd7MnMZsPOgyzfsJelJoPcvAImz93CnFVpXDw4le7tGuqIvSDmS0JaCbQpZ3sbYNXJhVOmrsAfxpiSc40swrqe1YXy59krIiJxWEO+vwFygAuwuu3u9U+oVU//vJSyRu41qleLRvVq0bdTMn9uP8Cn09ezdfdh9h86xhvfrmHmsp1cNqwNpzSKtztc5YEvCelB4GsRmWWM+c59g4hcgLUW0ig/xuYuGdjpobwwCTXxYV9O4FrgFaxz+QbgUmOMz8m0fv04X59SKUlJ5f/xHMk70S6KCA+rsL46oaJjlXbwxL3ekZERQX9so11LPYQHwecgGF6/V5emTF+0jY+mrOVg1nH+3H6ARycs5sxeLbjirHbUjQvN0Xl2H9tAKTMhich7Hoo3A9+IiOHEqLT2WIMTVmGtkzTT30ECsYCn+UVy3LZ7xTUKcIg/gtq3L4uCgsB2kiUlxZORUX7PZub+EwMb8/ILKqyvLN4c2wMHsot+zs3NC/pjm3PMmukg3+bPgTfHtqqc3roe7a7vyeS5W5ixdAf5BU5+mr+F35bt4IJ+LRl8egoR4aEzIi+Yjq2vwsIc5X6RL6+FdHU529q5/rk7DegEXOdtcD7IxrpXqKQYt+01ll43CiCdqaFaqBUTySVD2zCgcxM+m7Ge1Zv3c/RYHp/OWM+vK3Zx6dA2dGhZz+4wa7wyE5IxJpi+MqRhdduVVFimayO76PUkpcrWpEFtxl/cmRUb9vHZjPXsOZDNrr1HeO7z5XRt04BxQ1JpmFjL7jBrrGBKOuVZDrRzDUhw19P1uKJqw1FKhSqHw0GXNg147PqejB3Umugoazj47+v38uA7C/ny143kHNdJXu0QKgnpCyASa+AEUDRzwzXAXGOMtpCUUj6JjAjj7F7N+feNvejbsTEAeflOfpi/lX++tYD5q9NxapdtlfJpLjsR6QP8FWuId31K9xA5jTE+3c8jIg+6fmzverxSRPoBB4wxrwAYYxaKyCTgGdd0QxuBvwDNKf9al1JKlSshLprrzj2VQaen8L9p69mcdogDWcd5+/u1zPx9B5cNa0vL5Dp2h1kj+DKX3Q3AG8BxwADb/BTDYyV+v9b1uBVraHahq1x1r8Kay24lMNIYM9dPcSilarDWTerywFVnMH91Ol/M2sjBI8fZuPMQj32whH6dkrloYKuQHSYeKnxpIf0T61rOCGPMXn8FYIzx6jq8a/G/e1z/VBm0g8HP9K7+GiXM4aBvp2ROb5vE9/O2MHXxdvILnMxZlcYSs4fz+7ZkWLemITVMPJT4clQbAe/6Mxkp/9BTplL+FRsdwdjBqTx+fU+6uGYgzzmez8RfNvDPtxYwZ2Ua+QUFNkdZ/fiSkNZhdZUppVSN0KheLe4Ycxp/u7gzyfWt4eB7D+bw3o/r+Nc7i1i0bjcFOvDBb3xJSE8At4qIL9P0qCqgfw6qiJ4cA6Jjq/o8cm0PrhwhJMRFAZC+/yhvfLuGR95fzPL1e3VEnh94fQ3JGPOViNQC1orIt8AWIL9ENacxpuQgBVWFtPvOz/Qko1wiwsMY3DWFvh0bM+v3nfywYCuHj+ayfU8WL3+5klZN6jB6QCtObZ6oM4pXki+j7NpirdhaB2vVVk+clB41p5SqYnpCDJyoyHDO7HEKA7o0YdqSHfy0cBvZx/LYtOsQz322HGmWwIUDW9GmaYLdoYYcX0bZvQY0xFpyfDaQGZCIlFIqBMRERXBenxYMOT2FnxdtY9riHRzLzcdsP8C/P15Gp1b1GT2gJS0a6z1M3vIlIfUG/mOM+W+gglFKqVBTOyaSCwe0Zli3Zvw4fyszl+0kL7+AVZv2sWrTPs5om8So/i1JSaqa5WpCmS8J6SCQEahAlFIqlNWpFcUlQ9swoscpfD9vC7+t2EV+gZOlf2aw7M8MenZoxAX9WtJIJ28tky+j7CYCFwYqEKWUqg4S46O5coTw5I296NupMQ6HdXF9wZrdPPDWQiZM+YP9h3Iq3E9N5EsL6U3gAxH5BngZa7G+kqPsMMb4a0ohVQk6JszPdHCAqqSkhFiuO+dURvZqzjezN7P4jz0UOJ38tmIX81anMahLCuf0aUHd2lF2hxo0fElIa7DOd92A88qpF35SESmf6SlTqeCVXL82t4zqyDm7D/PN7M0s37CXvHwn05fu4LeVuxh6RlPO7tmcuNhIu0O1nS8J6VH0C7hSSlXKKY3iuWPMaWzcdZCvf9vE2i2ZHM8tYMqCbcz6fRd/H9eFVk1q9og8X26MfTiAcaiToN8SAijEbowNrWhrptZN6nL3JV35Y2smX/22iQ07D5J9LI+JM9fzjyvOsDs8W+mUtdWMdt8pFRraNU/k/itOZ9gZTQH4c8dBtqYftjkqe/kyU8MAb+oZY36rfDhKKX/QLyahweFwcGaPZsxYtgOnE6Yv2c51555qd1i28eUa0iy86xHQQQ1KKeWlBnVjOaNtEktMBgvX7WbM4NQaO/LOl4R0TRnPb421jPgWrKHhSimlfDCsWzOWmAzy8p38+vtOzu/X0u6QbOHLoIYPytomIv8BlvklIqWUqmHaNK1L80bxbN19mF9+38nI3s1r5Kq0fnnHxphM4B3gXn/sTymlahKHw8GwbtbghoNHjrN43R6bI7KHP1NwJtDKj/tTSqkao0f7RtRxXTuatmR7jVzwzy8JSURisNZISvfH/lTl1byPcIDp1EGqikRGhDGoi7Ug95b0w2zcecjmiKqeL8O+3ytjUz2spSmSgHv8EZTyjZ4ylaoeBndN4Yf5W8kvcDJtyXZSm9a1O6Qq5csou6vLKN8P/AmMN8b876QjUj7TVlEAhVq3SYiFq4qrGxdNj/aNmL8mnaUmg/2HcqhXJ8busKqML6Psat6QjxCkrSUF6AchhA3v3pT5a9IpcDqZuWwnYwa1tjukKqNJRimlgkiLxnWKuup+Xb6TY7mlVvmptjQhKaVUkBnerRkAR3LyWLCm5owVK7fLTkQm+7g/pzHmgpOIRymlarzT2zagXp1o9h86xvQlOxjQuQmOGjDis6JrSOf6uD+9pKqUUicpPCyMIac35YtZG9m59whrt2bSoUU9u8MKuHITkjcDGURkIPAM0B1I81NcSilVow3o3ITJczZzPK+A6Yu314iEVOlrSCLSUUR+AGYCAvwLaOOvwJRSqiaLi42kd8fGAKzcuI/dmUdtjijwfE5IItJMRCYAvwNDgZeB1saYJ4wx2X6OT/lI+0z9rAb026vgVbh4nxOYsWSHvcFUAV9makgEHgBuBaKBT4EHjTFbAhOa8paeMpWqnlKS4ji1RSJrt2QyZ1UaowdU7+lCK0xIIhIN3AXcByQA04D7jDHLAxmY8p62igIoxGZqCK1olTeGdWvG2i2Z5BzPZ87KNC5rmmh3SAFTbpediFwHbACeBDYCw40xIzQZBS9tLSnQz0F1clrr+jRMjAVgxtId5BdU368dFbWQ3sb60rUEmAh0FpHO5dR3GmNe8FdwSilV04U5HAw9oymfTl/PngPZLF23m5YNa9sdVkB4cw3JgTWku7sXdZ2AJiSllPKjfp2S+fq3TeQcz2fy7I3cedFpdocUEBUlpMFVEoVSSqkyxUZH0O+0ZKYv2cGK9XvZkZFF06Q4u8Pyu4pujP21qgJRSilVtmFnNGXGkh04gelLdnD12e3sDsnvdHJVpZQKAQ0Ta9E5tQEA89ekk5Wda3NE/lejE5KI9BaRAhH5h92xKKVURYZ3s26Uzc0r4NflO22Oxv9qbEISkTCsARiL7Y7Fn6rvgFClVLvmiTRvHA/AzGU7ycsvsDki/6qxCQm4EVgIrLM7kJOl95wEkE4dpIKIw+HgvP7WCrKZh4+x7M8MmyPyL6+nDgoEEUkG7gR6At2AOGCwMWaWh7rRwKPAlUAisAJ4wBgzoxKvWx9r9olewIuViz54aKsogEJtpoYQi1f5btAZTZnw/RqysnOZvmQHPdo3sjskv7G7hSRYUxI1BVZWUHcCMB74GCuJFQBTRKR3JV73CeBFY8yBSjw3qOn3eWXRT0J1FR0ZzsAuTQDYsPMgm9MO2RyR/9jaQgKWAg2MMftEZBTwtadKItIDuAQYb4x50VX2IbAaeBoY4FZ3FjCwjNe7B5iBdZPvX/3yDpRSqooN7prClAXbKHA6mb5kOzec18HukPzC1oRkjDnsZdUxQC7wjttzc0TkXeAJEUk2xqS5ygeVtyMRuQurZbZTRADqAnki0sIYc7PPb0IppapYvToxdGuXxKJ1e1i0bg9jB6eSEBdtd1gnze4uO291Bf4wxmSVKF+E1TfRxYd9vQWkup7TBZgMvITVdaiUUiFhWLdmAOQXOJn1e/UYAm53l523kgFPR7xwyfQm3u7IGHMUKFp6UUSygSxjzEFfg6pfv2qm7khKii93e1buiaGfERHhFdZXJ1R0rHYdyCn6OSoqIuiPbXS09ScdERFme6x2v351lpQUT4MGcbSZtZH12w/w24o0rj6/I5ER4XaHdlJCJSHFAsc8lOe4ba8UY8zVlX3uvn1ZFAR4KvikpHgyMsrv2cx0W9o4Ly+/wvrK4s2xPXjgxLE9fjwv6I/tsWN5AOTlFdgaqzfHVlWO+7Ed1KUJ67cf4EDWMX74bSN9OyXbHF35wsIc5X6RD5Uuu2ysVWpLinHbrpRSNUr3dg2pGxcFwLQl20N+2H+oJKQ0rG67kgrLdlVhLEopFRQiwsMY3DUFgG27s1i/w+crD0ElVBLScqCdiJRs6/V0Pa6o2nCCV2h/PwpCOlODCnKDuqQQEW59Tqct2W5zNCcnVBLSF0AkcH1hgWvmhmuAucYYbSGpwAjxLhBV/dWpHUXPU63ZGpb9mcHeg6F7BcP2QQ0i8qDrx/auxytFpB9wwBjzCoAxZqGITAKecU03tBH4C9AcuLqKQw5q+n1egTbsaprh3Zoxd1U6Tqc16erFg1PtDqlSbE9IwGMlfr/W9bgVeMWt/CpX3auw5rJbCYw0xswNeIRKKRXETmkUT9tmCfy5/QC/Ld/FBX1bEh0VekPAbU9IxhivvssZY3Kwpv65J7ARKaVU6BnerSl/bj/A0WN5zFuTXjTYIZSEyjUkpZRS5ejaJon6daw7YaaH6BBwTUhKKVUNhIU5GHqGtaJs2r6jrNmy3+aIfKcJSSmlqon+nZOJirRO69OX7LA5Gt9pQlJKqWqidkwkfTta8wWs3LiPtH1HbI7IN5qQlFKqGhnWrWnRzzOWhlYrSRNSNRN6lzGVUv6UXL82HVvWA2DuqnSO5uTZHJH3NCEpVY2E4MAqFQCDT7eGfB/LzWfjrtCZ304TUjWjN+gr0M9BTee+emx+gJfI8SdNSEoppYKCJiSllFJBQROSUkqpoKAJSSmlVFDQhKSUUiooaEJSSikVFDQhKaWUCgq2r4cUosLBml23KlT0OlGR4TRMjAWgXt2YKourOqjoWEVHnTi2ifHRQX9sE+KjaZgYS7069n8O7H796syXc0JMVETQ/F+4xeFx9UBHKK6ZEQT6AbPtDkIppUJUf2BOyUJNSJUTDXQH0oB8m2NRSqlQEQ4kA4uBYyU3akJSSikVFHRQg1JKqaCgCUkppVRQ0ISklFIqKGhCUkopFRQ0ISmllAoKmpCUUkoFBU1ISimlgoImJKWUUkFB57ILQiISDTwKXAkkAiuAB4wxM2wNLMSJSHfgamAw0BzYB8wDHjTGbLAxtGpJRO4FngZWGGO62BxOyHN9fh8G+gCRwEbgBWPMBBvD8ittIQWnCcB44GPgTqAAmCIive0Mqhq4D7gQmI51XN8CBgG/i0h7G+OqdkSkMfAgcMTuWKoDETkbmIuViP4F/B3rc9zMzrj8TVtIQUZEegCXAOONMS+6yj4EVmN92xxgX3Qh73ngMmPM8cICEfkcWIWVrK62Ka7q6ClgCdaX3gR7QwltIlIX60vq68aYO20OJ6C0hRR8xgC5wDuFBcaYHOBdoJ+IJNsVWKgzxsxzT0ausvXAGkBbSH7i+lJ1BfA3u2OpJi7DSur/ByAi8SISHOtJ+JkmpODTFfjDGJNVonwR4AC6VHlE1ZjrD7sRsNfuWKoD1/H8L/CBMWa5zeFUF8OAP4CRIrIdOATsF5GnRMTjukKhSrvsgk8ysNNDeZrrsUkVxlITXA6kAA/YHUg1cRVwKjDK5jiqk1Ssa0UTgGeA34FzsbqZY4C77ArM3zQhBZ9YPKwTAuS4bVd+ICLtgFexFgr7yOZwQp6IxGNdO3rKGJNWUX3ltTis0bb/MMY87Sr7SkTigFtF5HFjTLVo4WuXXfDJxloAsKQYt+3qJLlGgf0AZAJjjTEFNodUHTwIHMcaPKL8p/Bv/tMS5Z9gjbrrUbXhBI62kIJPGla3XUmFZbuqMJZqyTVqaQpQF+hrjEm3OaSQ5xpscxfWkORGIlK4KQaIEpEWwEFjTKYtAYa2NKADsLtEeeHviVUbTuBoCyn4LAfauZrj7nq6HldUbTjVi4jEAN8BbYFzjTHG5pCqi0ZAFNatCZvd/vXEGsG4Geuah/LdUtdjSonypq7HjCqMJaA0IQWfL7Ca4dcXFrhmbrgGmGuM0RZSJblGJH0O9Mbqpltgc0jVyWZgtId/a4Atrp8/tCu4EDfJ9XhdYYFrNOP1WDceV5vPscPpdNodgypBRCZijVJ6AWt6kL8A3YHBxpi5NoYW0kTkRawZGr4DJpbYnGWM+aaqY6ruRGQWkKBTB50cEfkAayqxd4FlwDmuf/caY/5jZ2z+pNeQgtNVwGOux0RgJTBSk9FJ6+J6PM/1z91W4JuqDEYpH9wAbMP6cvoXYBNwszHmTVuj8jNtISmllAoKeg1JKaVUUNCEpJRSKihoQlJKKRUUNCEppZQKCpqQlFJKBQVNSEoppYKCJiSllFJBQROSUkqpoKAJSSmlVFDQhKRCiogMEhGniFxtdywnS0Q6ikieiAy3O5aaQEQuEJHjItLG7liUZ5qQlLLP81gzuE9zLxSReq6kO8WmuAJGRF4RkZ2u2arLqlP4peNuf762MeZbYBXWEhkqCGlCUsoGItIbGI7n1VVPdz0uq7qIAs+VhEYB3xpj7JpE8yVgtIh0sOn1VTk0ISllj1uBvcCPHrZVy4SEtYRKCvbOqv4VcBS42cYYVBl0+QlVLYhIA+AR4Hys1Ut3A5OB/zPG7CtRtwXwHFYLBeAXrOW3fwG2GGMGBTjWCKyWwvfGmFwPVaprQhoNHMA6zrYwxmSJyGxgDHC7XXEoz7SFpEKeiNQF5gG3AD9jJZefXL/PEZF4t7r1gdlY6yFNwFpW+wjWSbJ2FYV8BhAHLCpj++lApjFmcxXFU1VGAz+WkYSr0nygsYi0szkOVYK2kFR1cC/QBvirMea1wkIRWQ684tr+L1fxfUBT4ApjzCeustdF5BngniqK91TX48aSG1zJMxUbWxGBICLtAQEetDsWThz3DsAfdgaiitOEpKqD0UAG8FaJ8jeBh1zbCxPSeUAa8GmJus9SdQkpyfW438O2roCD6tddNwrIwWq5+pWINMZaXbkdsAeYZIxZWs5TCrtwG/o7FnVyNCGp6qAlsMQYk+deaIzJE5E/OXFNprDuImNMQYm6e0TkgHuZiFwM3IG19PleY0yLEtsjsK5FXYnV/f0lVistp4J4C0eYeRr6fIbrscyEJCL9AU9DwqOAcGNMeIn6r2F1X/YxxswvsW0WMBAYaYyZ4lZ+MfA58IMx5lxXWVvgGaAvEIPrOp0x5m9lxepmNDDdGJPlRV2vichFwBDgXeC/WEnmMhEZA/yzjNF8hcddl8sOMpqQlCpbJlaXXyNgvIft/wQGA52A41iDKJ7BSmLlyXA91vOwrcIBDcaY2VjXoIqISBNgiSte9/JY4DKs1tj1WNdPSvoDuI7iSe56Sndn/YA1Su0KrJFqrbGSU7lEpCnQDbihorq+EJGOQAtjzF/dircC/xaRXlgj6V738NTC457hYZuykQ5qUNXBJkBcLZYirt/burYX2gKkikhYiboNgQT3MmPMNGPMZ1gnOU+uB540xuw0xmQADwNXi0h4GfULrXY9epox4HQgC/izgn0UEZForEQxxxjzZInNY4ECrIEeF4tIHKVNBIaISJJrf82xWoXfuL1GA6xrW28YY7KMMQXGmPXGmAlehDgKqzUy2dv35KUL8XwfF8aYBUCDkp8Jl1TX42oP25SNNCGp6uAbrOsy15cov8FV/rVb2XdAMnBpibo+zQogIglAM2C5W/EyIB5oUcHTfwcOAb1K7LMW1oX/5T7eOPoGVhfa1R62XQ98hpV0coFLPNQ5jHWMrnL9fh3wP+BYYQVjzF5gHfCeiFwiIq19iG80VrL0d4vkaOFxEpHeIrJXRNwHTSzF+kJSUi9gtzHG+DkedZK0y05VB89gtQReFZHTsU74XbFOrMa1vdDTWF1Y74tID6xuqf5AH6wbVb1NBIVDyQ+4lR0osc0jY0y+iHwFjBKRaGNM4Ym/MxAOxIjIPzw8NcsYU7JL7g7gXKC7MeZoiW1tsd7bPcaYYyLyGdYxecfDvt8F3hGRF7ES2znARSXqDMJK3P8EThWRbcA/jDETy3qvIlIPGIA10tFXQ0UkxkP5XmPMGyXKOgP1Kd6FeIgS/xeuFmJ/4L1KxKMCTFtIKuQZYw5inYjeBEYCL7se3wD6GWMOu9XdC/QDvgeuxUpQtbGuBTmAbC9ftnCfdd3KEkpsK8/rrvrnupUVXj/qBvzbw7+x7jsQkcGu+McaY7Z4eI3rgT+MMQtdv08AenmaNscYMw/r/T8MpBtjVnmos8cYc68x5jSs6zCvAf+r4H6ec7G++H5dTp2ynAU85uHfXa7tsW5138Fqif3FrawzsL7EPi8CamF9VlSQ0RaSCinGmFl4GJ3m6g661fWvon1sxrr+UMR1w2x9YJuXcRwQke1Y11oKu366YiWjLV48f5GIFN7E+6Wr7FXgVW9e3zXbxESs1s8sD9sjsbrg6opIeonN1wGeRsa9i9WavMWL+A8Bz4rI/ZR/P89oYEUZCbOsfc/C8wjEkraISB9jzDzXCMtvCje4bpZuYYwpObT+TuBrY4xePwpCmpBUjSMiscaYki2hwi6yaW71woFI1z+Hq/vI6dbF9g5wv2sqmlys1sUEY0y+l6H8HVghImcaY6b6EH8trJPv5JJdeG7OAxKxkqT7SfkK4D4R+Ycx5niJ57yFdU1snofXTMS6T+sTrAEXYVhde7WwrtWUZT7wdrlvqPI+Bl4SkdruM6aLSEusllSxpCsio4COwLgAxaNOkiYkVRP9KCJbsQYhhAFDsbqW5lF84s8rgffdfs/GGnHXwvX7k0ADYI1rP19gzQThFWPMGir3N3gRVndUWxHxdHI9Fau77lNjzFr3DSLyBvAA1si3Ytd+XK2e6WW85nGgMdZIuUZYAx7WAOeX1/oxxjxT1raTZYxxishdwG0icj3WaMIwrBuf7yw5h6Ex5huse7VUkHI4nXpvmKpZROTvWN1ZLbCuQ+zAGjb9iPv1JqVU1dKEpJRSKijoKDullFJBQROSUkqpoKAJSSmlVFDQhKSUUiooaEJSSikVFDQhKaWUCgqakJRSSgUFTUhKKaWCwv8DfwO2Q+o/xrYAAAAASUVORK5CYII=\n",
+      "text/plain": [
+       "<Figure size 432x288 with 1 Axes>"
+      ]
+     },
+     "metadata": {
+      "needs_background": "light"
+     },
+     "output_type": "display_data"
+    }
+   ],
    "source": [
     "# plot luminosity distribution\n",
     "ldist = population.grid_results['luminosity distribution']\n",
@@ -491,10 +582,23 @@
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 27,
    "id": "5956f746-e3b9-4912-b75f-8eb0af66d3f6",
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "ename": "ValueError",
+     "evalue": "Failed to rename grid variable M_1 to lnM_1.",
+     "output_type": "error",
+     "traceback": [
+      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
+      "\u001b[0;31mValueError\u001b[0m                                Traceback (most recent call last)",
+      "Input \u001b[0;32mIn [27]\u001b[0m, in \u001b[0;36m<cell line: 2>\u001b[0;34m()\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[38;5;66;03m# Rename the old variable (M_1) because we want it to be called lnM_1 now\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[43mpopulation\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrename_grid_variable\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mM_1\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mlnM_1\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n",
+      "File \u001b[0;32m~/.pyenv/versions/3.9.9/envs/dev_binarycpython3.9.9/lib/python3.9/site-packages/binarycpython/utils/population_extensions/gridcode.py:965\u001b[0m, in \u001b[0;36mgridcode.rename_grid_variable\u001b[0;34m(self, oldname, newname)\u001b[0m\n\u001b[1;32m    963\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m    964\u001b[0m     msg \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mFailed to rename grid variable \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m to \u001b[39m\u001b[38;5;132;01m{}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;241m.\u001b[39mformat(oldname, newname)\n\u001b[0;32m--> 965\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(msg)\n",
+      "\u001b[0;31mValueError\u001b[0m: Failed to rename grid variable M_1 to lnM_1."
+     ]
+    }
+   ],
    "source": [
     "# Rename the old variable (M_1) because we want it to be called lnM_1 now\n",
     "population.rename_grid_variable(\"M_1\",\"lnM_1\")"
@@ -520,8 +624,8 @@
     "# because  M * dprob/dM = dprob/dlnM\n",
     "population.update_grid_variable(\n",
     "    name=\"lnM_1\",\n",
-    "    samplerfunc=\"const(math.log({min}), math.log({max}), {res})\".format(min = massrange[0], max = massrange[1], res = resolution[\"M_1\"]),\n",
-    "    probdist=\"three_part_powerlaw(M_1, 0.1, 0.5, 1.0, 150, -1.3, -2.3, -2.3)*M_1\",\n",
+    "    samplerfunc=\"self.const_linear(math.log({min}), math.log({max}), {res})\".format(min = massrange[0], max = massrange[1], res = resolution[\"M_1\"]),\n",
+    "    probdist=\"self.three_part_powerlaw(M_1, 0.1, 0.5, 1.0, 150, -1.3, -2.3, -2.3)*M_1\",\n",
     "    dphasevol=\"dlnM_1\",\n",
     "    parameter_name=\"M_1\",\n",
     "    precode=\"M_1=math.exp(lnM_1)\",\n",
@@ -615,7 +719,7 @@
  ],
  "metadata": {
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3 (ipykernel)",
    "language": "python",
    "name": "python3"
   },
@@ -629,7 +733,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.6.4"
+   "version": "3.9.9"
   }
  },
  "nbformat": 4,