From 81db389d71e9a2a1ce132eb6aa2a49eae311fea2 Mon Sep 17 00:00:00 2001 From: Andrew Walker Date: Mon, 24 Aug 2015 16:27:03 +0100 Subject: [PATCH] Notebooks and my notes for defensive programming --- .gitignore | 1 + DefensiveProgramming.ipynb | 143 +++ DefensiveProgramming_2.ipynb | 82 ++ notes/DefensiveProgrammingNotes.ipynb | 575 +++++++++ notes/DefensiveProgrammingNotes.pdf | Bin 0 -> 119179 bytes notes/DefensiveProgramming_2_Notes.ipynb | 307 +++++ notes/DefensiveProgramming_2_Notes.pdf | Bin 0 -> 83350 bytes notes/python-overlapping-ranges.svg | 1418 ++++++++++++++++++++++ python-overlapping-ranges.svg | 1418 ++++++++++++++++++++++ 9 files changed, 3944 insertions(+) create mode 100644 .gitignore create mode 100644 DefensiveProgramming.ipynb create mode 100644 DefensiveProgramming_2.ipynb create mode 100644 notes/DefensiveProgrammingNotes.ipynb create mode 100644 notes/DefensiveProgrammingNotes.pdf create mode 100644 notes/DefensiveProgramming_2_Notes.ipynb create mode 100644 notes/DefensiveProgramming_2_Notes.pdf create mode 100644 notes/python-overlapping-ranges.svg create mode 100644 python-overlapping-ranges.svg diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..763513e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.ipynb_checkpoints diff --git a/DefensiveProgramming.ipynb b/DefensiveProgramming.ipynb new file mode 100644 index 0000000..d3655ec --- /dev/null +++ b/DefensiveProgramming.ipynb @@ -0,0 +1,143 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " # Defensive programming (1)\n", + " \n", + " How much time do you spend writing software? How much time do you spend \n", + " debugging that software? It turns out that it is very easy to spend lots\n", + " of time fixing bugs and less time than you would like writing new software\n", + " to do new science. This is a problem that is fairly well understood by\n", + " the software engineering community, but many scientists don't take advantage \n", + " of this knowledge. This afternoon we will take a brief look at some of the \n", + " tools and technique to make your debugging less painful.\n", + " \n", + " We'll also think a bit about how you may know if your programmes are correct. \n", + " This is a much harder but important problem. Even minor errors in research \n", + " code can lead to the retraction of papers, as happened to Geoffrey Chang \n", + " in 2006 (see http://dx.doi.org/10.1126/science.314.5807.1856). Chang did\n", + " nothing malicious and committed no fraud, but because of a minor software \n", + " error had two retract five papers just before Christmas." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__NB: This notebook is designed for teaching about exceptions and error testing. It includes deliberate errors. There are probably accidental errors too.__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mean cell volume \n", + "First, we will look at how one programme can produce \n", + "the wrong answer, and how we can avoid this happening\n", + "when we use it." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def cell_volume(X, Y, Z):\n", + " # Return the volume of a unit cell \n", + " # described by lattice vectors X, Y and Z\n", + " # The volume is given by the determinant of\n", + " # the matrix formed by sticking the three \n", + " # vectors together. i.e.\n", + " #\n", + " # | X[0] Y[0] Z[0] |\n", + " # V = | X[1] Y[1] Z[1] |\n", + " # | X[2] Y[2] Z[2] |\n", + " #\n", + " # V = X[0].Y[1].Z[2] + Y[0].Z[1].X[2] \n", + " # + X[2].Y[0].Z[1] - Z[0].Y[1].X[2]\n", + " # - Y[0].X[1].Z[2] - X[0].Z[1].Y[2]\n", + " \n", + " volume = (X[0]*Y[1]*Z[2] + Y[0]*Z[1]*X[2] + X[2]*Y[0]*Z[1] \n", + " - Z[0]*Y[1]*X[2] - Y[0]*X[1]*Z[2] - X[0]*Z[1]*Y[2])\n", + " \n", + " return volume" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def mean_cell_volume(cell_list):\n", + " # Return the avarage volume of a list \n", + " # of unit cells. Each element of cell_list\n", + " # should be a list of three lattice vectors, \n", + " # each with three components. The volume of\n", + " # each cell is calculated and summed before \n", + " # being devided by the number of cells to give\n", + " # the mean volume.\n", + " \n", + " num_cells = 0\n", + " sum_volume = 0.0\n", + " for cell in cell_list:\n", + " X = cell[0]\n", + " Y = cell[1]\n", + " Z = cell[2]\n", + " sum_volume = sum_volume + cell_volume(X, Y, Z)\n", + " num_cells = num_cells + 1\n", + " \n", + " mean_volume = sum_volume/num_cells\n", + " \n", + " return mean_volume\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/DefensiveProgramming_2.ipynb b/DefensiveProgramming_2.ipynb new file mode 100644 index 0000000..85afd4b --- /dev/null +++ b/DefensiveProgramming_2.ipynb @@ -0,0 +1,82 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " # Defensive programming (2)\n", + " We have seen the basic idea that we can insert\n", + " assert statments into code, to check that the \n", + " results are what we expect, but how can we test\n", + " software more fully? Can doing this help us \n", + " avoid bugs in the first place?\n", + " \n", + " One possible approach is **test driven development**.\n", + " Many people think this reduces the number of bugs in \n", + " software as it is written, but evidence for this in the \n", + " sciences is somewhat limited as it is not always easy \n", + " to say what the right answer should be before writing the\n", + " software. Having said that, the tests involved in test\n", + " driven development are certanly useful even if some of\n", + " them are written after the software.\n", + " \n", + " We will look at a new (and quite difficult) problem, \n", + " finding the overlap between ranges of numbers. For \n", + " example, these could be the dates that different \n", + " sensors were running, and you need to find the \n", + " date ranges where all sensors recorded data before\n", + " running further analysis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Start off by imagining you have a working function `range_overlap` that takes\n", + "a list of tuples. Write some assert statments that would check if the answer from this\n", + "function is correct. Put these in a function. Think of different cases and \n", + "about edge cases (which may show a subtle bug)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def test_range_overlap():\n", + " " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notes/DefensiveProgrammingNotes.ipynb b/notes/DefensiveProgrammingNotes.ipynb new file mode 100644 index 0000000..f3fa3c7 --- /dev/null +++ b/notes/DefensiveProgrammingNotes.ipynb @@ -0,0 +1,575 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " # Defensive programming (1)\n", + " \n", + " How much time do you spend writing software? How much time do you spend \n", + " debugging that software? It turns out that it is very easy to spend lots\n", + " of time fixing bugs and less time than you would like writing new software\n", + " to do new science. This is a problem that is fairly well understood by\n", + " the software engineering community, but many scientists don't take advantage \n", + " of this knowledge. This afternoon we will take a brief look at some of the \n", + " tools and technique to make your debugging less painful.\n", + " \n", + " We'll also think a bit about how you may know if your programmes are correct. \n", + " This is a much harder but important problem. Even minor errors in research \n", + " code can lead to the retraction of papers, as happened to Geoffrey Chang \n", + " in 2006 (see http://dx.doi.org/10.1126/science.314.5807.1856). Chang did\n", + " nothing malicious and committed no fraud, but because of a minor software \n", + " error had two retract five papers just before Christmas." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "__NB: This notebook is designed for teaching about exceptions and error testing. It includes deliberate errors. There are probably accidental errors too.__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Mean cell volume \n", + "First, we will look at how one programme can produce \n", + "the wrong answer, and how we can avoid this happening\n", + "when we use it." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def cell_volume(X, Y, Z):\n", + " # Return the volume of a unit cell \n", + " # described by lattice vectors X, Y and Z\n", + " # The volume is given by the determinant of\n", + " # the matrix formed by sticking the three \n", + " # vectors together. i.e.\n", + " #\n", + " # | X[0] Y[0] Z[0] |\n", + " # V = | X[1] Y[1] Z[1] |\n", + " # | X[2] Y[2] Z[2] |\n", + " #\n", + " # V = X[0].Y[1].Z[2] + Y[0].Z[1].X[2] \n", + " # + X[2].Y[0].Z[1] - Z[0].Y[1].X[2]\n", + " # - Y[0].X[1].Z[2] - X[0].Z[1].Y[2]\n", + " \n", + " volume = (X[0]*Y[1]*Z[2] + Y[0]*Z[1]*X[2] + X[2]*Y[0]*Z[1] \n", + " - Z[0]*Y[1]*X[2] - Y[0]*X[1]*Z[2] - X[0]*Z[1]*Y[2])\n", + " \n", + " return volume" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "240.0" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell_volume([4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0])" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def mean_cell_volume(cell_list):\n", + " # Return the avarage volume of a list \n", + " # of unit cells. Each element of cell_list\n", + " # should be a list of three lattice vectors, \n", + " # each with three components. The volume of\n", + " # each cell is calculated and summed before \n", + " # being devided by the number of cells to give\n", + " # the mean volume.\n", + " \n", + " num_cells = 0\n", + " sum_volume = 0.0\n", + " for cell in cell_list:\n", + " X = cell[0]\n", + " Y = cell[1]\n", + " Z = cell[2]\n", + " sum_volume = sum_volume + cell_volume(X, Y, Z)\n", + " num_cells = num_cells + 1\n", + " \n", + " mean_volume = sum_volume/num_cells\n", + " \n", + " return mean_volume\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "240.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean_cell_volume([[[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[10.0, 0.0, 0.0], [0.0, 4.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[6.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 4.0]]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "###\"Wrong\" input" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "IndexError", + "evalue": "list index out of range", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m mean_cell_volume([[[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]],\n\u001b[1;32m 2\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]]])\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mmean_cell_volume\u001b[0;34m(cell_list)\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mY\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcell\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mZ\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcell\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0msum_volume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msum_volume\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mcell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 17\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcell_volume\u001b[0;34m(X, Y, Z)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m volume = (X[0]*Y[1]*Z[2] + Y[0]*Z[1]*X[2] + X[2]*Y[0]*Z[1] \n\u001b[0;32m---> 17\u001b[0;31m - Z[0]*Y[1]*X[2] - Y[0]*X[1]*Z[2] - X[0]*Z[1]*Y[2])\n\u001b[0m\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvolume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mIndexError\u001b[0m: list index out of range" + ] + } + ], + "source": [ + "mean_cell_volume([[[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0]],\n", + " [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]]])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmean_cell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mmean_cell_volume\u001b[0;34m(cell_list)\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0mmean_volume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msum_volume\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnum_cells\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmean_volume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mZeroDivisionError\u001b[0m: float division by zero" + ] + } + ], + "source": [ + "mean_cell_volume([])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What is python telling us?\n", + "That something went wrong, where it went wrong, what went\n", + "wrong, and what the programme was doing at the time. This\n", + "is an exception.\n", + "\n", + "* Exception class (e.g `ZeroDivisionError`)\n", + "* Some further information (e.g. `float division by zero`)\n", + "* File (or cell) name and line number of each function in the call stack (e.g. in `mean_cell_volume` at line `---> 19` inside cell `ipython-input-...`)\n", + "\n", + "We can create these ourselves when we run code:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "Exception", + "evalue": "something went wrong", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mException\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"something went wrong\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;31mException\u001b[0m: something went wrong" + ] + } + ], + "source": [ + "raise Exception(\"something went wrong\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### What if we get the wrong answer?\n", + "This is a more difficult problem to spot - the avarage volume cannot be 0.0!" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mean_cell_volume([[[4.0, 0.0, 0.0], [0.0, -10.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[-4.0, 0.0, 0.0], [0.0, -10.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[-4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The reason is that there is a bug in `cell_volume`." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "-240.0" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cell_volume([4.0, 0.0, 0.0], [0.0, -10.0, 0.0], [0.0, 0.0, 6.0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The volume should always be positive. We can check for this. This kind of check is known as an assertion." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "The volume must be positive", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mvolume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m10.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mvolume\u001b[0m \u001b[0;34m<\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mAssertionError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"The volume must be positive\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mvolume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: The volume must be positive" + ] + } + ], + "source": [ + "volume = cell_volume([4.0, 0.0, 0.0], [0.0, -10.0, 0.0], [0.0, 0.0, 6.0])\n", + "if (volume < 0.0):\n", + " raise AssertionError(\"The volume must be positive\")\n", + "print volume" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can write these more easily with the **assert** statment. It is \n", + "good practice to put these in your code when you write it (and you \n", + "know what it does, and what assumptions you have made). These act \n", + "as a form of documentation as well as a form of protection. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "The volume must be positive", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mvolume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m10.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mvolume\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"The volume must be positive\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32mprint\u001b[0m \u001b[0mvolume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: The volume must be positive" + ] + } + ], + "source": [ + "volume = cell_volume([4.0, 0.0, 0.0], [0.0, -10.0, 0.0], [0.0, 0.0, 6.0])\n", + "assert volume >= 0.0, \"The volume must be positive\"\n", + "print volume" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can think about three types of assert statment:\n", + "\n", + "* **precondition** - something that must be true at \n", + "the start of a function in order for it to work correctly.\n", + "\n", + "* **invariant** - something that is always true at a \n", + "particular point inside a piece of code.\n", + "\n", + "* **postcondition** - something that the function guarantees is true when it finishes.\n", + "\n", + "Lets think of some and add these to the functions above. My collection is inserted below." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def cell_volume(X, Y, Z):\n", + " # Return the volume of a unit cell \n", + " # described by lattice vectors X, Y and Z\n", + " # The volume is given by the determinant of\n", + " # the matrix formed by sticking the three \n", + " # vectors together. i.e.\n", + " #\n", + " # | X[0] Y[0] Z[0] |\n", + " # V = | X[1] Y[1] Z[1] |\n", + " # | X[2] Y[2] Z[2] |\n", + " #\n", + " # V = X[0].Y[1].Z[2] + Y[0].Z[1].X[2] \n", + " # + X[2].Y[0].Z[1] - Z[0].Y[1].X[2]\n", + " # - Y[0].X[1].Z[2] - X[0].Z[1].Y[2]\n", + " \n", + " assert len(X) == 3, \"X must be a three-vector\"\n", + " assert len(Y) == 3, \"Y must be a three-vector\"\n", + " assert len(Z) == 3, \"Z must be a three-vector\"\n", + " \n", + " volume = (X[0]*Y[1]*Z[2] + Y[0]*Z[1]*X[2] + X[2]*Y[0]*Z[1] \n", + " - Z[0]*Y[1]*X[2] - Y[0]*X[1]*Z[2] - X[0]*Z[1]*Y[2])\n", + " \n", + " assert volume >= 0.0, \"The calculated volume must be positive\"\n", + " \n", + " return volume" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def mean_cell_volume(cell_list):\n", + " # Return the avarage volume of a list \n", + " # of unit cells. Each element of cell_list\n", + " # should be a list of three lattice vectors, \n", + " # each with three components. The volume of\n", + " # each cell is calculated and summed before \n", + " # being devided by the number of cells to give\n", + " # the mean volume.\n", + " \n", + " num_cells = 0\n", + " sum_volume = 0.0\n", + " for cell in cell_list:\n", + " X = cell[0]\n", + " Y = cell[1]\n", + " Z = cell[2]\n", + " sum_volume = sum_volume + cell_volume(X, Y, Z)\n", + " num_cells = num_cells + 1\n", + " \n", + " assert num_cells >= 1, \"One or more cells must be provided\"\n", + " mean_volume = sum_volume/num_cells\n", + " \n", + " return mean_volume" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "Z must be a three-vector", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m mean_cell_volume([[[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]],\n\u001b[1;32m 2\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m10.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]]])\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mmean_cell_volume\u001b[0;34m(cell_list)\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mY\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcell\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0mZ\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcell\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 16\u001b[0;31m \u001b[0msum_volume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msum_volume\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mcell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mY\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 17\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcell_volume\u001b[0;34m(X, Y, Z)\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"X must be a three-vector\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mY\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Y must be a three-vector\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 18\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mZ\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Z must be a three-vector\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 19\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m volume = (X[0]*Y[1]*Z[2] + Y[0]*Z[1]*X[2] + X[2]*Y[0]*Z[1] \n", + "\u001b[0;31mAssertionError\u001b[0m: Z must be a three-vector" + ] + } + ], + "source": [ + "mean_cell_volume([[[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]],\n", + " [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0]],\n", + " [[4.0, 0.0, 0.0], [0.0, 10.0, 0.0], [0.0, 0.0, 6.0]]])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "float division by zero", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmean_cell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mmean_cell_volume\u001b[0;34m(cell_list)\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnum_cells\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 19\u001b[0;31m \u001b[0mmean_volume\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0msum_volume\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mnum_cells\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 20\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mmean_volume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mZeroDivisionError\u001b[0m: float division by zero" + ] + } + ], + "source": [ + "mean_cell_volume([])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "The calculated volume must be positive", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcell_volume\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m4.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m10.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6.0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mcell_volume\u001b[0;34m(X, Y, Z)\u001b[0m\n\u001b[1;32m 21\u001b[0m - Z[0]*Y[1]*X[2] - Y[0]*X[1]*Z[2] - X[0]*Z[1]*Y[2])\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 23\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mvolume\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"The calculated volume must be positive\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 24\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mvolume\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: The calculated volume must be positive" + ] + } + ], + "source": [ + "cell_volume([4.0, 0.0, 0.0], [0.0, -10.0, 0.0], [0.0, 0.0, 6.0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If you are interested - the bug is in cell_volume. This should \n", + "return the absolute value of the determinant. The handedness of\n", + "the three vectors should not matter." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notes/DefensiveProgrammingNotes.pdf b/notes/DefensiveProgrammingNotes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..68a62c1f75a562925e6e5654bcda454eb73aa9b2 GIT binary patch literal 119179 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�Bvf>D%qXEd{7x|r zx}g)V^Yt`DwNPj>)!ap@6a2zc!z$LyBL?7OfgN} zJci1%>rqH%c#zk(gh>o0%oZ~a)6#rt!}B~2ExzDvC^7((vBr*m1%2)QLJp&W!s3;2 zWTSE@Pn)18qX-Wx-s%0T9#8!v@OU8dPqyUz$LGbPP0Vo7niIKehf@V*btkjoUUp$a zBU7Xofl6;XmS%)cyj*?hVxELn;ou%D);b%f;rH}fy_n)l;-h5jcUsS&;jYt|(Y z`VzfyZJ|_BB`d^-Jv*H|7j1Ty0=jF?^YMRI-<63ujK4`zeEsj~PYG4CY3A)XjeBPH zNKwfh2I@2nhSs?|EU>cPSso!)(TrFpwgxdfJbg?g34h5;uUH5*IfMkeLX%ckY2KPN zVA*y<0w>@Y*QoiX;n!#vL0&PKP{+x=B)Xj%2Ag8Y77}AsSCrv*GF=C5(?U&;K5X@4- z_i;HK2>8~#_@sjOTBYeOQszUhu2eE zTkTrF<6S9z3&Yn_ks!kYsKj8jp#zgQd_HUx`~ zed24hZDkeTe&sR4yn+5JzbEL8FJTc)(cn5di#uX->nM?C)7>#|)8=)W0 zB>f#zM}O6t2>iU=mwWBmLp#4`rl&$<>1u6kgo2x{wWV*+)PUOfrGsN8V)&^eR@Rz_Qh-Yp``S8N$%`Ac z5en&UKRWY%HNeVD&zJOSar6(hHSP)jAR;86^#Za0f&5x5SL;=5hI{3XAlQ?D&~ahi z>t0`7Csn>X^94~48sYx@CruKS$tqy46zPqtHb(rGPrTVkcGD%olRo#J*aJ}LaR7EF zL6j#yFTHI@InA1aZXzm)MZ|%O{OHnX-jb{_LGpGxwthb0jE+Rb;gLA_H_%Exu4<61 zu4?10$PYP+G0tz`@zGMB=N^HNj|x+JLHr*L%db#JrvuWNW!hn(f&kyjzslTkW`23j zriUFEB}KjCLcqU4|D`kwU6RgIMQXb!_tUj*sC+Yr+OI5Rf!AmqO-7tRdyD+T;_GG4 zngMexxe|NUEZm?qf>Q0SxZ@*PU2M`yYN@}_zH}-+{?l=lxJe;|<5&@9gfybZl-QDP zI3shWecXH@;N6UJJz9^J!22YD<62|FM9#4)nI1b9+YXB%Im+Cf8+Y+fyI`yX*`|0k zu*+g@^pN}e<|PYw9vGf*Z{l>Ns@<~SNhM;da!|Bt7IhB116(|(D$&qX9gQ?psq|f* zp9T84)~`s5EvEBkrcbIT@>zF*#AeyApTlfKmY!qh!f8(bh>H#T9#AZPS?9)4J21SpEoD*0fgaCjAv_$nN7u8Y(&l!YyOt)C>9Rxm{g+y_R-3j!~2$h?{ zzy#6`^!B?n3SL=R!!#3M7oaDu#AjDWs?eWcx)=`+J)TSiN|l%E^B7+^lRSLq_GKR{PvzSX6btE;Cvx ziO%E=t{-2oz_qIxh6^3jP}8HA->~kDHH@K=!ubaFDl-Qh^BOKPen%PVcdv|jy~_@p zUx^l>NlI^Kv*CxYV_N|RXR}?vymHFw^pBZ?P_LsPf1@-;ZF!}vsffKBRw}#xNHCO? zGqO;KoR39Yc&RU8(YAJDpagmHZ0S4MXMZDAZQR}8%h&r#5=`OVb#Y~4(P4T@&zMeW zY_}H*_P~wB_FGEG)~u4rCNA)2@h5p)%W!A8+;`7-R>y!ta-afAS}P0WYYV@Du&b2y zKggiyJ|a3-H3bKl{)Vc(XVTQp);gT8@%ZA+3g9D!hNdJjOlb~Vqt39z4Z1?cj}U2h zIFGHeoB#l(jWrbel?k2!emzG|kJCP2`cy#=q6+(;0V8}mbl#=!n!`DPq`I0_+;!5A z>*(FK4oN2mrHlBLTa$^TLs!(;o|h(?0BlDZBeM70UUfS?PksrpW1bJOP}+bX%ITTt zrKL>mWLv#}=lO)`KEz`t{CMXBtx3)$aDji0jc;D?k^%M0S`%%iiU^M2!bFeNo6P)4 zCTDqjTjY9u_bwHhC;=A>WEJZ%4<{SS`sQxt=57<-9g7RCp$P9s0g+aBY@|B#F0Tc< z`}joi^2|D#J8z3KN)Ijd`Hr^g6Q#jAvGy!D{KhO&j^{rkt=^_D&MJZUjo_7{1wbr7 z_aqM6*wpWw)3I^B$c6*$hYE90RC)O}*(M|)w-Dhz5&qe1M5@2o_?`fg zlmr6(Fc=V6O=g_=<@^Nwq|T)BfG=$3eCT#@AWFbIT*#@zbhmo>qDfxm&*@ ztp*cil)D8v=N6p<6!wj|B|B29QfOkw^XCJbN<1!QtyPrSKC1<AASJA|?HP#QlwKalZ?z-j zRhPmKk(m|MiLH_f>KXjBe-mwZyYDh4jS8o<&ZXmx!4EJG)M9&C(>Z9RmeZ%4OT0^E zEf&Lz81-A>P)bA`Ecv&(*^T5IWS#s;*;w9~J_AR1N9vkjEcgBupH{Bnn`FKI2(dJv z0KywZO@yKJnA!$k!WWFwTLGN|OM+Lq&-mjrxn;@Rqx>@c>ZgVJunij_owld=Lw8DL zE=wvX`Q$-|yU7eQ>pAuT6wSYo1=3R#$e@pEtc8bnn$Z#YKmjf33M}3nCBwpgCX4U>v9~;rRKUc;I4mGs?&aBzbNrk$2+a4}X zY$^PsrKnL|*jl+M{gg3c35GddrLR)fTpQXP*gkZw|xw>T_X*~FE@7? zbNgIv)!=!yLSyANM#BND0;{$>7s%c4>2J!00$j~`W#f=(n>#h7GZXK5TchB~6%DAB z*PV1jE-9cO*#}^G?x7%}lyK0pOCb~IFXa>w8RdGN-6lw}Wz1s1COw&y*Uzh4I9>?> z_KElvBwl4lSG8tQ&mlSwxZXl0Vl*WHSs`I{n7;i+(x!-L&hXAC+`j=6Q2qz!8iaf2eldrora631-1FSK?aq=9igbkmbu;_=I7nC;E^{&FM6Ordo0~*0 zW2p6?#kdavPB9NnEyE0A-p{fl_k3p`(flBYmbVa!M)Xrlx=t}XF5dLd39G5g*gk78e>EGFUCdH ztv0m{KQcK-Lr?IhT1{5WaqY5l1)8Yv6H%S<%IhC-r)`1(Ojcg&NX zV)@**$+?SC(pQy1Yj{_-8;JS~BhrsInph)Ut!yaKxy`e0sqAGoYi%a;H&lWBbg9QIh2tz1l+;?m~)To@m_5jOBME08y1i zQBJOQHql*Ir21{Lgl;K#K5S^0rD#Ep%Q4rs7CQXf{1GprG}-$(YDOH;FG(xkJocfC zHP?T+JZ)`PfBLe<(nGK(54>ZrIg%Mkn?rSj)N|I|sH)t9uH`dh3!m?I|6b=|dQ(}^ z3_DpDoZz8+&@3m>@BNdTgV6kv381q~y&r^*PW2PnCNk;ZoAoZV&6nZ@Md`vjbY5CP zVM|JEl82|T2ab!)>9OQN6clGu(`!NFP!&mhcxy;nvd{97%p@Gg$7syWo{Mmt9EoA? zk<}ex4n;wAFV=fab4npb(C2+cL<1x}mwrQ*V;y$sS7y8Gt0oxv5<6WTjdmNKRwaiT z?YsBa>Aa+n-I><6YyAI)d=z-%}4EPVIz}Q>d zzSK1YQR*~#avqbBj~O@D!X}}t#zTCISz_zd^BK+H;~djKFN&eP$6@kJ1R_wl!DMKK zFm@?#NRjHL%1;um&3kK&56JO{5AWy2vMy2+b2leO95?%{Z?+>QJKtDc$LbjAiJu#p z)g+E~B(kQt-k!D-Uplwq9(2)MO3T!Tc+(-tj73m&84b?wdxPUV=C8NkTR44?u(TpEupH`BfgAnMw29d5<^6KAs2f zfh@qkI)FEZ;9{e*#5H({SF~-?{+R3F>4$ujX_}&o`T?EqTX?VMXv_A zdgTg&-2=h2Tp&So=5=dwIadlF&v6!6VX-;UZ{nlX7Q5&>;_IMx7{QNwyX+bzPD1=T z@>()fv>T`KDOEU5Y5qALPE}B5<>~MZGkP43@0)8u#N)4!SO%Kpm@p~A2N09NU7dv0 z-z^V4k9Fvfx&C;vImheLF&h~D8Eil5V5xKYpDd*{lBzR|M<3vbr zZl;dC7UijHlf|6u9^Q>zbp%lu%gWN>Lde5$-R{USEz&yB0?>2UplV8|`H!LFzdKy$ zs&E}&=jC2Vlc)DqvC;mZmqD5AF=pNi`uO3*bO2^A=HBP6~pLjjn-nyy0_}`5`@6dYAnTYBA~6#vcgPo@5X#K z(^EQzh}_yq1vKtdwMtx`A|JndYr1P_ytJ+*OX2&hsQhTFB}`m8H?CNci^RNkveLgs zJ$KY&WA3jh__RS2fhOr5_?Y_gRfdQ%NA|44yF|8lG-HtxSESpujgXT zY~?BC!BiY^vYWP;_s&e#^Lg0Sy-Iy*8hUqR#`C2Grw}~=HGNg|!iD}t7_V=)(T^92 z8htS_hb<0HKXrxcVMCEamD2=MISs9XJeI?)-elPTD+P|6*XWMjw6q}?yaFwP3nK+nt;vOdMlGWxTknG|w8+;dlTWRNO@>;n%aX?^Zv35w`U1q! z(gfr!Irr4{j&)ZY0#V0au%&oR=l9vhxliY`;3NM~LnOg}BzP?Uk>D{gv;HsXfr)^T zm6e0-zal)wpA3)Xe= z1)P;Nu!y~@E0(LPt7^dj?&yvVFmeqCXsjOwMAnX7AE|{ytI2fcSmt+ExpySh$>Z3Y z%eAa>97P3FSn3)!2EtK3&hL5zXJD+h&WXWjoh?|@i%X#TYBnG=HXvwndT4ZdW@i7Sw6x=%kSDoLAV*?$ zX=Q(4Vu7VCxDyz0LbL0gQxi+O-8;PF9{gVmWIvDuJUqI$o{e8b%>v}o$i&?K0r8Pw z|DJgB!{cEE7PkhGPWE2;Q5HVX=;+`&Wn_MyFG{R=I_gR8D1hYw=x5di?GN=2^W@++ z3)lx8X0C+^^hXDa7zdPpdT`M_0HyrNjP6QIPN27=cX$re;`rlg&&nLi1-MfjymWjN zBoW8o?VBeuG>=+x-k@aW6WU)w@7&|e~aAhB!IFWsDm@PwkkNaliuqN!`F zG{5=I7R~-?mC3CoG>hXsm}hQ&M``lhG4E~Ov@g8srmU`xtY<)cT2WTn>NS&$E^g|= zB@M3bAErIPdS~R$*XZOQIv_YRGc!9jHK2cpKo1Oc25-0mQ}e%GQvM#cymbB6w+HtI z_h0qK6wsGu-g(F8us0`WC+Hm-Lp?eFv>*B=;y^?5FDnX%?!~aMvjl$*{nUkFd58DQ z=}9O87YKdz{nP-O>;Zhe7Cv_y7C*VMWdkO^u^1CdlS{)AX*Rb>zY9=Mo1TF@m}@~W zG*(xDaBOsd;x-+Kvl%njf-KZcR#t7BiLR~9*PQbA$j-O8 zy@|Eu{%gz7J6lJ4XATV5`}4iwGeDNr|C@6fN29p?IiE!j=L)Z2Vw`x(~%PjK4n_sLdlX87ZK*4_tSWsgelGxB2( zBI$+9g)9J{R}D_iKRzKLo*d`?-LKBc0jN`RYo?U)-+s;FZwAJ-)sD^%psk8~u+&xV zzE3<#a&UjigO(HiFzjBEFYsHSRFW@29UCCBH2xFak_Y%bGjN8oPr+-Nbilukq9y*Y zP|V)KPjJUysZn2o7nRqeuU(JH(@OxEt+A+Yf@Jpt6B8p?pPu0Z6Z7}-3a?>VlQA13qq1VH5QwZz@tU2}z>@+>s@ z)!KP%W_J2SAG2-ctzH7)?9530HuPD}`1aHB|7P=)U)YmhyEbmPaj6Ab`<&R*HG8Fh z+0s7$x!~M);pnSg!PIrvTLHj6@e=>VuZrPw_sHY8-g|olaJpU5{GBk}(eU|Qx-ISS zQs77K>;dq*_%b)UpaDpKyBl3x1{^b>sO zCx{?ssYK@yhr*ql?~xt^F1B+e9$dFH+|Li{ipJ}5brzST9Nk~Y@7T1k^I=5 zj6QcB!1R(6**Ca&+SNn{*xbBs83x?y!?Pfq{9^f|tyjyw3*B4}Yu8hQ*5_`%l7W(1 zv@$PIWO$?JcIMzK5+IjfHV(7q@<#fXWiGP5nOe}7x>M+5&v#A<9(O7IChv0Wc$GlU z)T{>9&JxSop?pWA(9Rzr*&ZiMCFl69@2TFrTy%rsC`XJ3q~+< z{O7xBS{ZQ|sVb@i3X`!mY@Q}+k-6DY6-^=600+qGD7!T4*Sx$3Y>p5zJ-MZ=Kq*_+ zR;%md!w&sSyBRjE)JKD=F}L99>?*9_l{9zf@RRgK?W)CgPM5+%vgb zVnhQOE~?4Vo;C{M0DOfzR3e3R!3cBX6x|M&+TB`wHYW zQhn%X+}eUhPV0hnF^=>PCa5>hd&sn0qrBt$3tT4U=Z&{%=_Z|Y3J89y=w-!f%IZ*kahiA!r56)j?+mEcVp_f%BIzr5i=cdrd94F!WE7@lL8%_GQs|R0Q%2MK z6XF>ah>3J3JvL3x5? zlmpdfOFFb-^EwGNFlG2kluS)E=(e6`61H19Ka!OAY)u$guh^%3^D?G)#{abODvs`x z($uf9JANd&q`^mW157*JX6O@h{N(^9ASUu>gAZaRKdBESEgls0IzG`G8#86HDh*+D zx(fzM@l51cNZiiH_PdXiiVnMQ@!|X&_IISJ#tlc3+-pIu#Cgu_94gLJIVSZfcQaB-?=>r{#Aj5bvRk2WJrM{k*@t^QL$%->Y+B&pDJ7RL{dahPN z+VSEQc1=tLBy@o0D&pPy2?NyS-7NH4riI>L>eYE1#SBV0MHeeye zzG-u|(4CrQ0s#C_Pu}B#`gZ@11oF=qBg8!P%0#nqRn-XMK#qSY(|fQG{?np3N`sPI zvw2M5t%K6216M<+lK)z18lvWS_+uwz$aY-0l|m(@Sbt{wnx+6W+QYkA`kWGAMM%qc zyjo;5YMEE8tH$e^sw^wNNYT*s!9;k{IV_TJFbWDA*BK-?iyR*`z0p(;R!72RA%0{F z*9%y5xtA<(8T<_>8!YDDk{$8fLkspVNkWqT9~U*bpYOL+(~4!QaUR@KL~b!Em7)n5 z4q)TkTx!TV!`%_(aW<y!F>gzm1+nZ_SW1fHFgz;43L&6M#?}s^r9XO?@c#Q+3+C zL9t?ys2B@7q~N$B(2br2b{n9MNS)#Y1V?r!E!-I(s8b70*a?RV+#lHd+pg8jqvey) zNALHH8sTCtR&1qV!{LkQ$FcbybU+D+rI5`(8@1u#F0Sie3aYWQ(bY&o(t<2dkYRdR zY&^%ZqK?H=H zI|73R0F(l2U<|uk$$8CG)6DSAhTeBn!%K5i)Y>=eQU0>zqzF~+i}4C*`P3i7v*Q*{ z&W`gm5o@^gz~Vgg(GHJ6IwMttD}Z`jNeC=j3E^Q#c(2C=sSuvgdOl%J;+#*U=oRiw zqm4N+6iTKw^6Bu(1eR6)g?>E@(r=aBe>m6G7t-X=_sE6C0|S&EI3*O++e7bp#gq}6 zfX+T}!=2SYk|S}0uMFiVgyrgG730S47z*0N>n%8(FC92W^6J|gg!bOrr*D0HZybc_ zN-K<$*d?dso1Mcw=yEYpi-@DQI?oQhX+V!8C;2!YT1<2&mtHE9#>K9Kj&ClcSMSBq zu0=uODve^q#r>lJFfj9LZbWiZ>$mRu5*G}FWBoDf;S_bHcx#@X?$y_jnnl;~EBDP< zuxoP7Kyry`f5wUtGJo#RR61(5RFSF%8=&Rc?qY+(hR z+$DfU*W;xnNG`7I6qJA9uE}q5A`o?-C{Ubz=C!pcL=7u+c@<4ub&I*hU$1)3BKAnZ zHs?)pi%7HjL%dmtgD=pz{Z>n2l?eAJwmrax8qNhzoHZx~7 zYyjpJ2A8k8c}Q+u1}bm92eaPrGT?!d1W=eZ=-bu`W%J>Gp0*SEE zm?_{6$s+Vtq2mhb`G3eJ`EzX9bZJ5D2S)MriNN$~cr0c>S7UKj<;!zA)|cW|qzi2O?p~V5<%FQmBR{HaPCp({-wTKsWVw>$o%iijxinK*I`LCz1PAn4Qi-*~++mp$~eE4AxG_;8`Z|ZDAF!XBn zR(8~7Wu}pTb85a^L=%$m7Mhk+y0I7`bwNv0r7P>sC#o^;bLyT)z zHf;qOuSD|l9DQjGz=v*n|A0R%9bI+Q+&`G-OY)iM#8rxFBfjk4Rzmijvl2B|zm(=( zyl23gu=Cmr&cO`HLutyoT{?oR)?9ZcXv>x6Q`-;RSuQRruS-T71v$IZ{KGj^E{RuG zl>pN@Iv(fM=4k|lxAk6c6Vm@Slt7j~^Rl>ioo_UNWedWyRjm(;%cOnPC=#XVL#*by#rCt8^BRxUWEZ_JIb@T-oYhM9 zDYs;tOWd&5AC$o`bcj;|w|6wAch2m0;Aa+`v%w(q89GeT!O>vnj@QY);iX!Wu3Rsf z6cuuF6t&@Cuz72}JgBjTK5R=5Zv+v|(Nf%U({0xe<)doS>`#m?f2HV{C_(W?{l%7_ zyRTTBDJUQ7zmWA;B20<=I=j6w&lE(>^{Hc0@j0<5$@_hhW}=^-W?%|cV>dnG_!;#K+$4%@~kAE&nMDuC_mHz8z!3Po6#KeP$A98Dn=ux=iw3DcKFxKZG zy9egx?yCrUU$x@2ibdU@Uvqk*QKfPPuT-1mO^}y0ozttxvo=DFg^-^IazbUn>?+9w41115dRV6_+WXMkS z@iV&}pJj-jO2Y5i85--GNPe<{F;8^___6nw!}MDx3Kd?_j{2N3?pAdzwj0|gEpCy7 zkO%UqJUPNSz?%eOC&MUUTWw8i?$MsY(w|sDsj%So!$iX6JpD!d%w(=EBOo67Tj7ec ziYR!(z-*MUe-)D>RcY9NC%x^NP})h60F5PU*-q+}r`&A%S03BUH8)CqAC-B-!YSVl zyt|~#b0C)jx6jjSNdeZb?9iN4=Z3z}^}Xh{`JG)i@Eyvg0Oze~z6IB5^?v7)-OZS6N>? z^3=`#p2UyFPe>5e`yO_w|NC)VIb1Msmieb%m%?}zQWuZBB%H*fsImVCYl!KxNX^ix zBCZw@n*Ie=HNcP14jbrL8oSvRRJ+*=XjdvE;~S6G_FQYq#^rvOw#-Nmh2VbOB~WA* zr%Hlu!E9H=P-foL@~oTnI6N0-3SNfm=&CWvPC-JJEc}jom6QMd(Vk-|Ut5w#?lxF^ zjI)dN-c~LpP4evJd1d8I*_|AZ{|s#O%4%}Y;Kj5Y|sxx>*~PAt2C5 z!Kr_^r*l(x>Y@S8U08)iggZ zH!EJ88{L>S&9g4%tYkUxd_h_LhOlmo+2=MrIb%embGuwp;5#kYD}96V<^Zc^Ffk?j zeUMm>#pN6D?Ud@cUAAZdiG{!XS-J@BIL{{gN4@v((>K1rK{T1?B~VoxN`U#;@w+-m z6pR$jKpfHbYRKr#;T_Zu!i6FmT6JBht(cw*<~E!A6bH$402wJVCB2}|ep%ZDZ0&pX z`>R2|irl26&BF|1?qQ3WN>!3!bnisYJmVVsqQj9TXn+1PHXegu6V1kD3^iN zUs3cG_})v~u;N~o^?rIYr0P+k#-kF&;?L3-4 za99pu`pWB-TUMi9l+-seX*f8voV&bkzLV^0Hxhi_;5Cwt5AEEe=&w$I(7N45F)Y-$ zm|)51J4MZqNnVBJjQ6d*!~&;9TiLz-IO8DJ4-pEhNJt%H5v5X{#@{mMiP1Ni3}uum zZE&QsA6t&dd*Y_o<}x`sfqAh(o#}$V-!MQF6iZ(DW9&eZ$wX=->Ex44Mrl%1 z?!Zb=dKNw0hBY&R4bpH(2~{n>HqtVEQ_S*RuA=;-bdyTxZDggrWN$q}BfV<9sXXf) z+n(sVfL!*D>jl?_OgTHg%PFQZoxZk{qTqxuyLYR^%=<-c#|s1=dI+0GQi9vXOA^5X zJ7H2muu{UqfUzth6&1%ii-nxEicpf6M=`Hsu%|X2=6OUS#x>7NC zc#=w81Uwm{M(7AQXk!?misn%2@MCPcnAtW2u~!lFn&RNw4zrJrLzL_B5N})~bXO8o z%F(@Iba$+c3FFbrjj2+w4Yq@hnG7VII|nCCFnGbdtXfiCg_4{H8xFl8^T+7$KI z(haz-a?`flUnC?-m0@k!mY$sjiiBL+Px`35oU&BW=v8zjybPc;S>MGo2CYLPGkT|c z^P_3lkBh&29vJFQBC0^7eilu?_S7Lh{rmaJ45EVJ35}#E|GPK0b%%U^_day<*Y-^B znfzo5Ig;wE<^B0d62|M|}}p6Z_yU23$Op;dMeRANlw3n~gRTl=p*whPqSVrA*zz zBdMnF2LH6AuJ0?TqmNSS=3I^R&6-Dyj@!mRL^1e$f;Y~#G#*HoTUYv}(SL|Ofk%z+ zZ=Jq5!Dm{L7C~hM@y(0vVS#STfPU! zLGpFenav=YhD1P_2$Q;TD?mYev*}lGKqj$<3|c^?X`NaGuF61H?4(Gy7+xKOf%_(5 z3}~1hjb;tlCPI~mJsO}}0>g!hZ7kpxzkI6)ofX1MlKuTg8YG1eHc5ufVx|u2Hjh@B zMNoX?J1a;?^Bq!dgoS{&3PdZK2&FlJ=IkmSlv0^l9Vg5v-0*V?bKsJKtD(OF85dS* zi;#>^9hPIn)8z6uujaI5DFT8MvY%ZPe(BtQqqvjf9Z!d_3J;*f$oRaGwR}_ODrR_M z>+CBYmAcivS--d|1c7l6{nyV~4!#3yhk*tUv1A>V;z<1|UntUDRk-K>C9AYicd!&Y zPJp1aA!!FozDut1qDj+F71J0eb`HOWa13g@R|BVqb3W(-O8ezStlS~pMHNQwZC%-# z_}U?dMWU_aupe4j1@j z;wcC=ezszfTK-GXzJI|shUc-%hV(db=IQZGqQl`WlB3S}%rs~c>}ncjv_z$nnWk5! zGTv^_Z|NZmhFCe!Uh5Q$JZjX+236BNi~NxAcv($Aamu)RZh(2+?G5ii5&o^$ELQ)9s#w8lKAS$w(o*1Bx>MmudS)Y0Y2x(u1sn zf%;XE)rB=cCREu!OpzwTOR`AZD`w*kfY$N>wK`8^RR_TNTK|L~ji1%#<$caC1!Yr@Y}33SaO{!bZH+i!ix_0{sXVQcPaBZIy`N zpCapl5-`}vDWTlhMTQ>sMNdlOeu>WHg;Rau98H;|Qe$Q$;9$j$CH5XtO&!Y=V6Oc5 zWQM9&BF`4pYklC^jT57X;me^85n6BVNRL!J6(Dn>(1X~?q2p_t~;twFK9RfRwc8fWj>%gBfV z&cr~ zks!(R{s0(O8f1Q_IVG}Z0X8F1>B$)He+_?)=Jj+miU4sH1)i2|;sHECHP)VBlx_Cc z;l)!kXv}L%1^O&5bV!la3ZQoNFC0yG;upzZomgOugDPT6pY`q9xi`<@xWQJ$ z28VEnI5K^3F=Mz^jnZSxd_t8n=koR^dA<>3<2D@eO|wL|2fO(vV>ELf;&VkzW`7W>oE^u;`pViVzqR{Z z{79}OmI|@scHX}1xEMc)OEuk9gm~T^$6E*OW2s-f4TMThH&j?O8x>I@l@9@3D$_I( z{PkR$E=B+jzM^efqd1-36UX_*142U*p5!JGS3gMw7q6d^*n{Q8YWCZcRhqlbA<1`e zKCtzHnqp>O{aLI95Ts>vRS3pX9RpyK`fJ@3O{}b3Tie{h;uTx`dl4uIkVgcs^F>)@ zFSycOUSbI6UL&njlC^zG;}_?sVc@h%1lW+(?yW;Nbz|k{W~@vCS}xzUT~&=#;=KR4 z_n%i~T4eZF44zDX9ENl#ll5F8esUCc{Sq=D-^|g}mogN6hA%%rdUf`Ry|_O{Uj}4H zCftLqnP9Tby1e9M2;mcCE!9yDi=}~#edL|SZ0AXejKD=G7|TRJDLW2yA7`+_>j~F z)gE^W8~CaM{O&VWe+o|KZil?GxB4sBi>i>p$OfIvU1Q*_5LMKq&f4bMrd_oRXiqSt z*dGh>1Lb>e=Ik0xndY|@+{y3o(%84-$u`5U#v@;&ipt<>(cQmYP+l4n+yuLsudVc4 z_ZZSV40@LDfyX~$u9=XkL$jS#9AXckm^ZMYY+b>iN8MgcZzAY`(!J+kRGH@D4bYW? z>}`ryMgxmez}}cm3TN^Pf&i4Re8UTUB*(8yM4^jdMlpRBjJarG*(=X$*DJPbK!mpd zTVh6HG%&i zXJj{_+LLBFE*zEN?jtV0!_WsgFJ=JDh)&d~L*$)Ox^{G){;+oJ+YF;J=>0s}80(;( zijqI_l?L86Zpk8pwqGX@yjc_s(c&0aK|Ae1_1Ntnht@^5zR;htk3{_^kmbsYO>f-9 z>T3x;X_gCt`3n%UNn|F3Che&aOSj~>Xt;AeyVt%yAeQ3YD@MnUENcNLx%0M?F9>TX z!#L%G89@+#|E$;a0@thi4}{PDuI(yLNCPSO^F>sVV0_mu7v{7)Y&DSP!%J=n)3M$! z#G-RtU7NJp3x%rN;1xCQ)Z?f#&8{JV=?`%(Kqwsi zr#L+6dqR*gT1yO4t>v$7U2V7(#5w}YN>|=$oO+j`F?l6kvElx7mRo}V*zC55&NOtd zXDmyfv#Fmf?1ZAnLCJ3q3g8l7s9c9O_v_vdX>st#u_~eQImfrVXd2di$g;H^Z?!Bi zjOVJ$JeAz-C=|mK(ed}@Cr9I|1R#RqmcRT{R5)S}2v(f+G(T1l5y(S?K_zp_;S~PF zGMiJ1`?cWXQPSP#z2o8Z-X%ahxi;DqWyVLIkyfWjdOdOd_uaozAe_Uw0GzO>`iz3! z%=H-hLXIHeeHc;Qw*#GGtRPEu-e;N1037~{b1Ksh0xMLCF&$w&XI zRP!3##qWFP#VY6z5%ypvmMzZ#th~oMnlc#dvQ@hQCizX&QQSC+fwme+4JdK9Ar_G2 zlKH7FYyZ+6Zzl+a3=Im6Ps@*!UJRzsjO{yMXfGrYg;=Do?!?dFu8L&QU6&y^r zX`XYUS#aBGxAkt!<~poypM@-18KbuyKzzsuO6f*MitZace^crH4mdwu@=jVVx>lMo3OF&u3pNy$zLHFa=vY?G)3vk__lX0Dx? zz>ik}-h{MGdrT^+OYgfd*YKuu34*E@zGVeyjZIHqTwWbaB2uleXQ6&F=@pSupIdra)+cCiIo^zw`QYnf zm-lecWL09IhJ9rIjyO>1^)<}AEn7(3H;1(e4M#YA25ZI>WMr&)N>D3^A&D3s(@n)gECFx%_~V@co0 z!5AZm-sN-(gIb%9EzQ)~&7}AU6PQiOcE)l9SrPis*)(#NwHng#eyQc4Z1nmYLM>yO zHf2qaAw=E)4-dk&A(mcc-uW1tSz84EhMs3e4>kFp{SWXil=OW2)R{ifjn)tax8vRof3OOs~$H$ zm8=43mnxRiH^3p|7OV2vBDxJM%Xcvn-H;~ePg++5^JTrJ<#vETD(rEeOAysz9torZ zXo=rm_0dEwoC^_&OI)SbC8N3x3m>eMdBK?HiS`go*x=Dvpz`!0Y%Z=-Y$`k|EXp{8 zW($au!&!l+M+XtCBY4N;CDuEaA@)^@WG1Bk`z%^Az&ofUdI~~uh`a>oVNu zk5bIcNP?J+;kUGr8A8>ohoRl4czzd)MXHM(iPU-E5MV-!Hy^zW zf||>FR_{d8@)sExnbgPVM-heZJ0gWRtmFCm&3KAMpqYmM2 zK4f;?S(%QC^kut*wZx!~hC_>8Vqb~hr~SH?3Vz)$ltXU$Hg$zaRe@<&2xO$0!2MPa z64c6R(!n6pZ2j{WEM^m%5cVx!;NzjAhR!^-7!I z17lWDKrrFgflW?}Fa0Uq5d_T9e{|UMPAF+E(dUyk4%Zwf%x;<%{V{#T*Tyqzm@P7+ zC3uB5N9>Q_Re1;I1r&9qOazNaKG9KxV}1ENuK8%}#2*Z%zwGM_$Phy0@jL}6M}JH` z&cx->5kgXb;LGJ^+6xp;@YRznN$h0~!0bSjWhl>!RXi%j%DlJ~@14+Vgl@KkH!H1= z(pRlJtVBCf(E~vSO!Jp2eZ)GLHSXx!iziiuIsFl&20#>n<1dUaShq!eIf#PD^hpF~ zKJ37KR!y4&3a3-C=AnoP@t?p5pavEy6wP!D=?HSuh#-mJtZd%NZQbDn$(*{zX@eiV zcu}5&sSjn!knn*XPkjHD_sC>cuy$FIaoG#0|7EabAIO81P%BcWw{rJ*T{p@j)Lb2ANDxm#Yf5E>X!#?wB>hV`MXDx!2 zAg|vlBVqQa=NI`Ya1nYpCp%}63iRJ83Tj!=!arMfjkUJxWELZJnP7<`Z5ca6!|d=E zuF0u}BXv{*dkTVqIDBM&+6ZkC8%PH38iD|x5(C49z{{KH@eSCciyuv>SADfuq`I1O zdXzImyXL6o=!VT^rn9)D1E15igQzUap%Y+6Wlux}DO66!JzmEE%`t6;WsMt)18Gio%-+maQu6_+=+cIQ$y-a)OB z$5bSh8%97pvycMqK1fSJYd%==iq_a>%#ZPkZXyA-0e}dflrO8V~vwm7w&Ct z4qq9LX3d2+Y88ZufHUQQb!tdz`&ZtfvjO-JFW?dddXXkCMY?YjQga9$KOq!_NJ*At z?Qjc9oyoAn=sm(bd$h`AA9@gH=1uhVTy#HnHg)u-^XAm0_+yOr)TS$Jk!t=Emw}$} zY~y#6flWMia9oJoIF%i*GqWgX=E7M5|aZ&x!cw=gDILsPmy8B>bVU)GW8fzmfwI zV@7-q&i2#07@R~ZtNDpM@Yc-LrSPQWi&~lfouV{n&IZ~x~k>g>u(}bCy z)x|`%AL4>Y<-Y$Be3=J+l4vh91kvA#$%23F3GpO0UAiW{%XIK5gl=1$%b^bx_4gOx z!^!DX1z9rQ<}NWCtnOS5E_9u5;mo@Gy$gp6cnsYh^tEqE4l~@_-ox4`{&b(Jr6t3k zLVUjpI)`TZ8X&7DTmyHez|vnlGA@Wc^7&t7z4{}nuH@5``aA&wm8V=(->l^|w+n65 z3K%pZH2-F&q7t`XN^Y2-ry9oIO$yy~TiZ4fx7hnpE)6K~?H^_y$DGgDx^iRXR`WdgOsGI9_AQBemEnk$_5=2P%4>u- z-Y4Z`Mw1+;RlJHE3Tp@Fq$gJg-OEk5(=i@p^YmZ zDNAo{WI^OS5JEN8(vvXE0$t7Ac3Mdj_reajshawAdoT8$C17b4m}rSbb;1hipv20i z7sqdDA9d9%J5ttfgmNtjP7GpBRhjU2hc~kF4avZ2si%--`0>dQ>8)pGbT+~S4e`;I zf!ugUr-_UJDWxdXqJH503h8~XI@DZ(ETv=6nrOIYKqkASywQIrxt2WFe)c zIt6eY<`+hL?GoDfB(m2*WddO1Dax#*`tlFo>w+tae(o_mo72v9T3g&UsAFRTNWJWe z`Tc0ej)ooZ+2EO$=)kFmmFJs#OT196)Tt8uDJZvPA_LI<5O1%?nidH-VpeZt5fMhm-Tcf^hJ0)i z0*pJ)<`rr*O*N-E8DMDZy%0tZ8x^W3dTW{-RIitIPgNT1QIR0%$Dos_&3?0`z!UMG zmBBY-&WLZNbbV<^&qRf8p7ICi0UyWW$Hi%{+j?KRgA_ys>3Y5v-gF}d=Dnc57VctW z3wbRS&iNdz;r@-cNWrUI*x?iH7fnH3nV&V2i0}(q-XlS&f#{+Y@RUe)2~($()q$?3 znMD+reAj2&Ey;Z%+EOOX_tGWj#AK0H#-5inVqfPtUxm<2(%hclHJNH@8Lxfr4;*gw z7-dGb+G>r#^`v)jCpOc&WM;}5&3 zaLXuX#+WUH@nTG9vrn=;fQiB%x?^R?O0Nd=^Fd---t@oy>Xoxqj_bS3y69eu65-a_h2F1n65tuG*{p#I;+PtqiA^uku<1+$$mrZG0h*cOI>;>yQpK_zQ~P-9K~2Db^5P5L7PxZ zTN($gb7DDzLB)P?=x$|Gc-MW2Ja>b1oLHld1T@}obOXHWt#Hcrh&n%r9A&~Y5aPA- zSvXO{Q@_A55`Tt7bm!skWxa~+V@CgEH8h!8=@B+d?4Fd{MWrZ;k2a4Xb75Z(3%0&B z&a8Ix67jc92~IKRKrnlNb9Ak0+xzo)_ql#j>RlG9v_vb`!uPXM-~#V^q3oz_4;^LW z)O`ZuHhAmZFO+s7g9X{N^b{p9Zr)?1*gIV{S@_Z5Xv$EK1gQTcI*Y$*au|cldVGV>yIdTb-XG-Y!&qMM$ zVhiPjEbJ4%J!w1#fnt^?o`mC=k`=ermkcv+;a-04)n6qu|4KfS))N^l830I)`v!qQ z*?w<+Ywv^exOU@O1c>s$+UW5dPlJEGiXHD7U+28}jua_Cq~S0Ss>m#hcc@!z^W>*Z z!lI+u$$aFlHoBmHw#Xo4EE`6md#)#RdR#28=)SGv-=WT{{Kr$57;nyC#JLwrOr*iY zLs8J=^~%BU9DkyK;diP}TBk{Mm-awRN`-TTOc)6xcit@M;5 ztCWcSBAsG^56Zuu&&9y9rrfn*e;uRMTO9O0ikYzP=@@hLC$S~+{{c!hO0W3(;>(q! zR0m$`f!-=Rt6NrN&L&k|w#|>+IK8olDWk)dI?AsM4V>l$75%YOcEz;Ma+Q7^sbn!| zsn8@cSF`zxsi_GLF~Z7V3e3^Q55qG&6TbM--Orr4<*3JALa&x0+U(IO%Ro}@!FN9% z;`xh0Ttom_N5l0@^1ulOHs{EdQ114}$xB?9-wDVxx8+n}RCD#BaBJos4!%PBGEe{o z16j)3u`TA^N@lB^o1Big^jU6Ki34WXg)W@EUT*jZb~iC-i^emSLr^Y&B*lp&ANnSS z>MkLB7@|3$bF^TbGDkY3k~lPN4E*3XrNbx)d0sB8bmVi&EK9NgUK+beI#EV41=q~RQXl6sSutt z@a4Pz!HsXLym_Tml<#97uQpqVg(!T%Ix^jdEKdbYU<`?d(bbCwh9-O2LihxfFO1KE z_MI7|&ypR+Csv7?L`)CT3PpoQ%~`$~Oj&Vq7Nc8ackZGwSfPKRb;$ODmh&TECRSTe zB%3#%5omKcR)E7bZ#IwARe#w%)Tu^1B~nXIXn;O$MpPE6P^awG!D*6c3lB#2HZOAz z4Rock`z?T+eQ+D;>yy)C28g2HEj-Rq%wHxipdv#9%4+=<6<2eV_Hx+Q7wgs%jc}jf zzC0>C0^ZbRz@aA?=6U+I)`jz-b7gF2=ZBe|iivsMlu8><5AUmuO%Ej>l*HRZj3=iP z*-?hDpd2V%m&4#56WUrq$Q{Ad8r2nd@M^t7))H_{sB(we7@(x`Kz#Q02u_k|G8h)| zXEPT`ThR$v8>fZ@$B=2Jz{t8c$8ub_tt{&tA)e$f(%luTDg2w#SdRMKGf|A=uys?Lp_CZl6 z&JkMwzSmi5qFsA5TALk#MNxS1{K42U3JF(H9NX_IwWdwO;n#X%8^2M0Z8tX-mT zZRAaU+@drjsIl(dt8K9^>X8~X6~tP!{eUvkHhtd}m*>!|UlwAedj&m40t|~W_nkN< zw_X2Q8O1iyjGB$4S6D-aGX`xq96k?v#JJrKbEa%KLC9r7_a0W)5LVlo6r*Ri+@OK9 zT(nHuDc2|Ff5oKf#r8WH)|N5`SdB7`_i1AaWHzAN)W+7HsBFo@Dq+Bxa3DsUMq(g}Qo zwm$K2H1j?K^8vTiq#uwHN$eJ|p3xftYq_29YZM4Q0xY0@lqi>;uji`me}|WXdb4TD zw>&yS^S?a)`KW{sEU?yyNr&G_E6J`KppdVULTeIr2879-LRTDC!{O>oDV+!mZl?jx zp#y4D@RT<-Wt=cx@)M;%q%#r%)3V4SxvsIOf}jRG&XrF=vCgRVu7t@DeLg;BdoCI` zqKo(YJH$obk43;V(5hM)~AFQyzL{$UpmpxzkvN{KNKw)p)swT&8 zLNB(9va|Jf2yu|>ttBiJp|GjAU|)h2OTvVXDpcfYDomEcXR7v3*_Bz2R+A<_e45n^ zydvsuWGxAsP!RSf=R5UBv5QGJR42$TojfFm`i&Yr2I8Y)rc74RzmP|~Saz(&-ZgwA zb~BO*Uo)ynjB*!aSpAXFk6{%SAPq}BNjEEh%WgeJkFm25p5{u6Xe5PQwo5~j-kPW8 zaQ&Bj7<^Mik>b=8ea0-<)z?^_9xter--BQ$!m>Tibo?zlGqjoos2COE!_kY96D_PYd_!To4VPLXPCA$9HXxh8YgWKRL zzB{pFpyv~#B*{f@+97)St5+y{J3OV}$wS7L|5irHXhq1o{RlXm=}#}<5*2yUk0`ed zlpt}>#Xot6)M3bMJ0dw%&M5Jb6hk&CTBxUd3-NA`1v|MvnnT+j)i1bCK;%cX3NRWZ z(8O*ih{_hmN3K8r2_&$5611oaVh!f)jsS3GrNjpL9x6+cyet4n{6uIm|xs&IiBkw<&1=D|Cm8!sY{hWpvc`_Ih=p1?m?ZO& z+GS768;BWCS7hu&*Qgw}f`9ICONatV8B_&NO-oRyurYCig}I7gj`XqfN_&y)SyZUF z+&y@y@Ti&xK!?On_oNGB{)E?!xeWy~cC-Pi-v+tfXeJ?|H|N@mTMM><8u=O|mo#%I zN^KDRX}Bj@`}nbsqTw^B0*!OS`r2Kp7JhDdVv>g$c>v-W7H)s-@mG62yw6=|sbg=~ zx*d}I>UHEE(+X<1{TpcI7*ZSMH7S=vK30?j1#uZvgr(yY)?GVhZ=^Qs>Pvowth+0# zezruUI82-!Wb)E*T*XWi7Y7ym>H7pq^<}wi3STaB=}BlWR6&XQURB~Pd^WH4R}5mg zPsVM}vF4?}sn5Sm2AfuY{LI%xovfT#+95d_VM)fm4QiylcvocsI?Oot{ebk>m3;Qk zsXPyM`5(`yPErGH1Utf~H8_HoWbkQwPAF7=(lCdYO#7BVX5jnIU3al8XT!Q*7mC6O z$?gmoKv4w1x28|xu7R7K4*v)Q$ff0cv?!1vJzrvMKFd%NVA;zJ7|3Q?**b1dp^kd1Y-^M}*MoZ5<3vu(@GY7C^Q^ znJZa|H?#n5N>{z;+x2{pW3&P%N4?HTy)~u2$n+*4rL`cq`GMo~^km(Gd=>uK3hm_B z66@<_J~0|_Ol#agS@Y-=pHE>xaj}88oO~4Hb1Z!o1k|l7WP<-c&w_*LfAB2$ot?~V z9mpx@l+2y1jDPov&IT67hEBgng1=k}r{8l@`bx%X_^#$ozv41?J7Wh2V-tKkeM3uq zQ)3D`IR{%KXG3ELayuiF-!K{mT4s7$24)I6Nn>|cTL&XYatg@*x|6xBjnFUn0-s!n zlaZc*g`S;}nSqs&nVy}Bo`LLlV83zFwnqP3h?0Z8ot?4KFGWM&%F!5-PEJW!jaJ0j z%F00B#^#rGfrW#Sm4=a)<-gPX4gVdQl(~yB z{%=l96!?~Q`c7t!#`^d!|L-zZS_WDMieF9#zOjvwt$_vP|HSz#{Z0oyoveX{qLVcw zoeVx3%YRZn92}kSSy+fGFZxX(ExU z?-w6rXQ>bQ)vp9qKrJ<)9~fX37OW_jmIs5x9oVOs!SN~3I4umOra{INaK;Ljm<{i5 z2N6k~+aK%bD-Fm3chCq>(IVxqG~24LL%CZ?(EkdHf4@F(n(4RMua+Cp|2K$?@HWq1 z=Gbx4_b=B7wO;T8G`=UO5&)GqJr?>X$?Quic98ibQ!*AMFe%jb;j0=Q7aSg=cmM0$ z>s0F9pXc06okZat%t+C#N-CGtnjRNiZaNR5Wx8O&XLs(*ZDcOXwq$hEN}q3cPK=mp z@3$Zrk(LDuBpD12*&0t2ti;P_O=lk5I>>Xd0xDLTpRO=?WwiS^FN#%V`MUFVJ>5~< zWvnFK@UikzIPluYE|X6?xvYfH5IC;Ssg@1@JJqg=`~kcuQDug5iC`Asepnyv#DlX! z-NZ&cftiPWhuIB0A7i}I0Z2#;_iaC42zGOwFzT`DGH%ZwFpwOkYRNm+bl8v+Yok~Q z=N*DM1t-VKNRoO%_TJG8!AShd{1$N1LBmQ<$T_v5Tc?KhyjU4$N&WQmXo1Z0*Z%-TpbPyy!8=8vnjo2hHqDI7)YYS~^)~xEK=Cxaj*fp;zH7dlov{s|FgA%i)*3EtIm-n3aJ?DOV zp6C3}d7g8gFaQ6SAFmeu6I258!;$#WTxg6%3He&xxPw7vb>4q(fWc^6fV?P@w_$f&6lGN|A|6?xSlVQgyBOvM(wnTJ;I} zC3Igl)x0B`)ls-6cQHtu$I!m2EwH0|6NX%1&kF;Z&Dg*5N{bb~wPVBCF5Zp!!6_4S zY5iX0SFAxD2P9BmQfG}GHRf+usoVi-+0`r3V`j}nWO5^j@jaa37!}4OusSs%AWda; zB27nq*CE#|uJv`QUX`nvp4}T&^e+0$7dAOX&V_p&Lij#6-Z(RXJskQPf zbpNC)66v>(XDPOP0UVz=DeaA!jo>$Z7^!TKs+~=*^g)@^ByFG-rz_6M)q!n9R%&y^ zyqqro=+$r?m$_mk<68P!Zjg3t?91W>{?uz00x4`gxZ9lY=Uc!(gVz*TA3Xd}p=I_w zeR}eO@4lU3LtV0_$=Hm|Uh-DpWAaQbn{%5@q@h#ny9Hw=6F#$7czgQHoPne~gQn5} zFis}7ocq)=b2{w((xZX-<(Xorb0f&L`ww89>c@TteF`{URCosU%bcq9O-rX-i~OOK zpkybmo4l%@pXJ;4IQOXXSQgXYzdxFF=N*O7Cq=?xtiTD$Uj`{?u@tQLxJ+~xLo7T^ zuNz8vm51DrfAPF&!ihhv>01u2L)`EaUo5OcrtZSASWb_?@q4vo&EbJsE(Sjbw?gyU zXIwtURXA;flGQg}48MP7PpsGC`)splpfS)%AwO7}9vhqQYR7Bh-r|9vD_6qdE!)t< zQ!IX}SIhF$-nh>7-7!VPv2*8~_qQFB{Ua=$(dM6ny3y?0&aVN^`U4U(q7DKm`U+lJO;RZvk zNGFnx$LUsP?r@v807ke#^XybwHT+}+X7rBv0%mOlmt>tWn^U7Bb!13tt+61Y9YZ7x zi<_Ias=bmm z`MvGNOUkV&z46>6XA8D!8=cKy6=_Tzcd@%#8zUO8Az{lv9Pp7lJ3ZWK5I=r*c=YRR zjunV7V0=tvOmCAc^aQ9+v+jN@rC9g64v2Q7=wnP#TAJbPsijI_e1Sq2bi0!djXvmJ`o=umEO*WTAtTbUqLP z+?cstqiakj!%I$VuzUHf`BVruCi5RHgo4S_K=ssxL$U=T|fk2Y= z09WWo7`Br(JrL>WAz22g1Q^I@s^0BM(Nz$!P0$D3d-Ot(?kh~TVzktxu<46r()O1f zqDO#7^;&DlA@wI#PC_y&N5YuefbwK!L6$`iuD7{<7b51aHlmkJ6f(T*;4&vVtuv@2 zV(aT72SSVQ3;W5-o6g~zq-#*!R*yT)^{?{y4VnjIHiqfP5OW!71JHg)u z?}o|73iwcVs1(RaRMN)=odgJk{(#t9cK5uzEpq6%+|JklKt|ebcuIy6fTDEJ1YsjM~*s)t0klXD^lV#-MUoqr>-kt;@wEF$9C1Y*f!{(d&F4 z^W?qI#;K1SM=jNz;IT_!zTn^EKQ!qzXIG+}_YQis#sxXY7Jtj#`~d%nK7Tj&0CpOBV0oyrvfMpwC|E~cMNv;q6{?`9BCo7XGwfin zA{YYrcL{BaG1?bHi$)*?&_5<0@b9EQu`yL82D2M+^VB4XxOkD69uCVMZp)z_4H+FM znn{fSLqtIf%_Y8R>lRt6hT=&9b9-L`&KFPyKMn4)Oq-(3rLoL$jE!9vChkhRJ`i3n z6v91V=LfK)JgZNCdH@@}B2dfbRm(V7%Oq(Q8|?n(c?RNHoD8MbqDFor28M`5QJO&0 zDkL4@rK-=?L%VX!r#AEIZVYl)m?{s?`E_fripsINn8o~hyNl7dJ6&;yGo*|#_@kU} zSffqL}wv(q1|A_!WnBq~KJns7l;5m00lc{2o=-aclpw h_q5>b|9&+f(8)hAl$In}<>ghBXzWBWF{r5?>tBTWLe>BP literal 0 HcmV?d00001 diff --git a/notes/DefensiveProgramming_2_Notes.ipynb b/notes/DefensiveProgramming_2_Notes.ipynb new file mode 100644 index 0000000..955f6b5 --- /dev/null +++ b/notes/DefensiveProgramming_2_Notes.ipynb @@ -0,0 +1,307 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " # Defensive programming (2)\n", + " We have seen the basic idea that we can insert\n", + " assert statments into code, to check that the \n", + " results are what we expect, but how can we test\n", + " software more fully? Can doing this help us \n", + " avoid bugs in the first place?\n", + " \n", + " One possible approach is **test driven development**.\n", + " Many people think this reduces the number of bugs in \n", + " software as it is written, but evidence for this in the \n", + " sciences is somewhat limited as it is not always easy \n", + " to say what the right answer should be before writing the\n", + " software. Having said that, the tests involved in test\n", + " driven development are certanly useful even if some of\n", + " them are written after the software.\n", + " \n", + " We will look at a new (and quite difficult) problem, \n", + " finding the overlap between ranges of numbers. For \n", + " example, these could be the dates that different \n", + " sensors were running, and you need to find the \n", + " date ranges where all sensors recorded data before\n", + " running further analysis." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Start off by imagining you have a working function `range_overlap` that takes\n", + "a list of tuples. Write some assert statments that would check if the answer from this\n", + "function is correct. Put these in a function. Think of different cases and \n", + "about edge cases (which may show a subtle bug)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def test_range_overlap():\n", + " assert range_overlap([(-3.0, 5.0), (0.0, 4.5), (-1.5, 2.0)]) == (0.0, 2.0)\n", + " assert range_overlap([ (2.0, 3.0), (2.0, 4.0) ]) == (2.0, 3.0)\n", + " assert range_overlap([ (0.0, 1.0), (0.0, 2.0), (-1.0, 1.0) ]) == (0.0, 1.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But what if there is no overlap? What if they just touch?" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def test_range_overlap_no_overlap():\n", + " assert range_overlap([ (0.0, 1.0), (5.0, 6.0) ]) == None\n", + " assert range_overlap([ (0.0, 1.0), (1.0, 2.0) ]) == None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "What about the case of a single range?" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def test_range_overlap_one_range():\n", + " assert range_overlap([ (0.0, 1.0) ]) == (0.0, 1.0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The write a solution - one possible one is below." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def range_overlap(ranges):\n", + " # Return common overlap among a set of [low, high] ranges.\n", + " lowest = -1000.0\n", + " highest = 1000.0\n", + " for (low, high) in ranges:\n", + " lowest = max(lowest, low)\n", + " highest = min(highest, high)\n", + " return (lowest, highest)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And test it..." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "test_range_overlap()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "AssertionError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtest_range_overlap_no_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mtest_range_overlap_no_overlap\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtest_range_overlap_no_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m5.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m6.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;32massert\u001b[0m \u001b[0mrange_overlap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m0.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m1.0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0;36m1.0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m2.0\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAssertionError\u001b[0m: " + ] + } + ], + "source": [ + "test_range_overlap_no_overlap()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "test_range_overlap_one_range()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Should we add to the tests?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Can you write version with fewer bugs. My attempt is below." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def pairs_overlap(rangeA, rangeB):\n", + " # Check if A starts after B ends and \n", + " # A ends before B starts. If both are \n", + " # false, there is an overlap.\n", + " # We are assuming (0.0 1.0) and\n", + " # (1.0 2.0) do not overlap. If these should\n", + " # overlap swap >= for > and <= for <.\n", + " overlap = not ((rangeA[0] >= rangeB[1]) or\n", + " (rangeA[1] <= rangeB[0]))\n", + " \n", + " return overlap\n", + "\n", + "def find_overlap(rangeA, rangeB):\n", + " # Return the overlap between range \n", + " # A and B\n", + " if pairs_overlap(rangeA, rangeB):\n", + " low = max(rangeA[0], rangeB[0])\n", + " high = min(rangeA[1], rangeB[1])\n", + " return (low, high)\n", + " else:\n", + " return None\n", + "\n", + "def range_overlap(ranges):\n", + " # Return common overlap among a set of \n", + " # [low, high] ranges.\n", + "\n", + " if len(ranges) == 1:\n", + " # Special case of one range - \n", + " # overlaps with itself\n", + " return(ranges[0])\n", + " elif len(ranges) == 2:\n", + " # Just return from find_overlap\n", + " return find_overlap(ranges[0], ranges[1])\n", + " else:\n", + " # Range of A, B, C is the \n", + " # range of range(B,C) with\n", + " # A, etc. Do this by recursion...\n", + " overlap = find_overlap(ranges[-1], ranges[-2]) \n", + " if overlap is not None:\n", + " # Chop off the end of ranges and \n", + " # replace with the overlap\n", + " ranges = ranges[:-2]\n", + " ranges.append(overlap)\n", + " # Now run again, with the smaller list.\n", + " return range_overlap(ranges)\n", + " else:\n", + " return None\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "test_range_overlap()\n", + "test_range_overlap_one_range()\n", + "test_range_overlap_no_overlap()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is possible to automate the process of running these tests,\n", + "and even plugging the tests into a version control system so \n", + "that you know each version passes the tests (or not). We may have\n", + "time to look at this tomorrow. But just having the tests isvery \n", + "helpful.\n", + "\n", + "But for now, lets talk about some debugging tips: http://swcarpentry.github.io/python-novice-inflammation/09-debugging.html" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/notes/DefensiveProgramming_2_Notes.pdf b/notes/DefensiveProgramming_2_Notes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d5ef77d9d8ae330031c6ba1b37ca07b210192830 GIT binary patch literal 83350 zcma&MQ;;r9uy)z~wr$(CZM%2(ZriqPTf1%Bwr$(CJzxAWCt@PbT>N#Fd0kPJ>&aMT zilX9lO!REfWOGZyYtU?jjD&WEmV~^#&XVs8b|*whPvq*T!`Me6(@$ z2wM6B>n*fm@XPTpr+aVhP0eLu9W#xyO*cCk(7ABoPx(kD@>}nPZ!;V3a!xTY%zocA zhjJuAs1C+D)x8W8z=@ES+6%FISaO zjk~j;b1;1S<(zQD?S0qKEew;5t7-YIfx~v)h=S>@B1;QVfhxs})Lpr=KP$+vzJgFl!MMqIKa$7WJn9a^>M2-qZkCtnWwP#nx@> z8bK{)?$)5CwEXZ0(G$8rF=7ewZwBT#_qZMWt zvM*@$FY_eoe#y_@&6u$5@?GpdNV=^ib1AluWN?qmvg)$?R$)avnj3KH>KBpsl`E{# zd0HIuUoDF|P!IugIx=}(4WJzv@o9I#=M!04A^z|M`oQ=c6vK(oh-%_L3$|Ms#l^02 zgr+bOq2MtVp8$lU`dXaOo0o8}AA@M*9uOtFc$mhknQ;|0J|jCTuZ>tNK?ey|LxQaU zhfUAzbujJYB%|IcJcP?0N?X0@6D86wKW^p9jH@u>qp6n_RF1MZ`>KeY8X7Qh;F7rv zHg#wrweL_2Cm9W{7@)mXMNv3rsH99`hG`m7{sk9diZ8|f63S>rl5)LP8(&pM$zA_R ziw1y@V=O2d+?P6#4wlqjc2(F%1TtbX@UQAZYiyX4$YMcHJ%2&)?sg0`kx6_cU$Z{D z!ok|Fd?Cg*zB`!L630+^Lq=7NMNG0~K#az-%px~qVS(Mt9-tUcJAdg69jjA?K}={FeKVMkxvw4<7B|yInx3w@F1Y(U!~h z9ChdTo?=52pHKQGoa}afvx~*rufg9Vlb!VC`1+&p`n6h1@UuYDdgkqxKl~QXFsAV^ z0S=bAbjNTFabR=%;f7qzLFBvEObBb`PcF;KvTU-3TCc;ABWlLm^TshkAx%Odm_i^A z5Au|Oo1)ZDzhVK6qjoMmjy%mVKJDtb;p($C7U_xTV%qmB$iQ&<G3H?L~QO=X8@@ zhS@vv>*qFxNB?X&wbSDHTvWFfetOvAIn0NnDUYoN>Q2ZcyH6HdONyHLlwMfV`1=H{ z?rLW)ypn0aBW0u<+?c_lIv5xbTRXcb%~cfnYilhcPwdOK@PD-H!?zZ=jn!0vW2%(u=^=Ma++9g0y>0zrVV*ecF;`}HyHZt3ro zn|P#PrGyDdgbCJ?1H$?~bZ-9+3k#fxMaG1ZTIx9{0)>p>x5kz;s8Z(8eicQQ6|!n( z0jviRl9l2~R>mJzO0@<|Dho8;-{$qo&y8aY8_lm)_G&ELWWNc)rAxm6#KEmqmy zg<+e_)>oc`+3c3NzHaF*N~j<)>K`q;3P65?gB>@wVmU43BBoTaAaq>y zZsO%`dA=o58SMs!@x%zBQfaM{ZRXKJ2ujzOR_P4e;q%@GCUoNF1USh`jloNQouUD* z=)Ive?keoWa30o__e5n)byFc8R!E|+iB7wR26a_wuUZI{?WBTi71sp^^Er zy!wu0L<{ezZh7UJ1GC2te7>m^)LKJC9nJTG)I&h+?jnPH-dH<2f&`{;@!F#H8X*^5 zqu~ZZ0Y^yE>5=4|ph*gBzrO4=juTZQ?slQBf}4WFqY85$iZe3sEf|+is{Vi;CJtRh zp5_HPvq)m$TP_~YKm)l~dYOha;cNZ4ZS3hh&AX=L5X;v1yD$f#2+dn!D z#@>L~#8Y{OIQ#b7%L!gzyEi`x#Mw1$Kh)T}A4~hOy$pIjD>eML9`=FGnEUGH&ib)R zxqg{5QiiPEWj%)8p#B})8$tovZZm4hhBrIZ2cz(x}XUxp*>w7W$4|_hhsw6%^SR+-@cqmMZ_(GCt zKfL7Dq#mQFg!`4i|Mv2JhrS33QOv@xIa>W$T`jO>N`|I7=Tk*Ls4s(u)M; z%K}Q{2qEwvFLpfV3#_~lFJP#028r--$BTVA(1M4+Xn@G&e~iF##%>VIUSpLLbWDvl z^brX8a~niO$`5>hF>@gs!}RdIb*p24*%LMyoQS2oy^DTeRukUFU5<9>r=JZGiof;= zb`uw2nA)T_uKV*% znb06A=IVpQtnbTcq5M@7c1mJ$#^*Wr$?MtD1j8E{*G@+g@B>nkUBE|iHgoX$|YQgzu(f(z1%)C8G=UjT^^#sETnOmp){Vd!R|GjS(2cuMpdW+hX zaqmWDj*y9LP681`{i}D#0RMY#dRHc9xtgYkkN5u3`@LJ>g};Ib9^npx@$l3M{z5m? zD?#IYPbZ$rIM9-W-8S!M8zewTSN$j1ja!>Q(9+|0;)teh`K2 zj4$ee0QBo7I2r;Bl2nlsgI@vpK;irRONOAp@Y>a%=RweYk_?vV=>5f&tx0^G0AZ3+ zgzPK;R-L>ajc8Zv6Op16D?BN-7+9S5lnYKO+Cpj%U%N1{zc3FW>D+mDxC2vPcuFFs zN5q+wPCSvnoy|K)v7X%}S4-xh>C9JKZRhH0$v0g@N<`RB3b5s}x}!KOCxmdFZeX4m zQ~wMcU}Ji}Fvvfzh8xhyHq1woa))I;oMYDeFOA>xrmuAtWVW=7cltdTXyD4?CaRh* z$*5R1^x#e6w%Xw(_*~Al>qW8Tx?lWWh{swygZ2F;$vP1Y40w4Hge03cD(rUBxG^KH zNy4}d&wxusEEj&T9d8O{lm1#ZpXalf8s?t6=jkJ2W0>IK6QeYN;Sv4TOeDZ(_j(qP4w9+|K0F1z}^ ztwgORl4*+A6t$zctiA_H9WF?}miO0)Bl}X1EP}it!&|e z2OGw$R=``kkIhhz1M6x-sbxaZgp&0X;A9lT>VcK&PD?YXqNhqDxKehV^h`%>9qIau zy?UDDOy-)P;$_IW!MZW_Kq4#?&+>){X{)|J(HmlP7G-fnYR7R`Dm+%rbb1!H@fkJS zausuav%<~ja+sYrWDR{qJAB;`4$mSq|0rzvXQ{3TL$^H{lOAM!;eXfT;$dFX4;>M_S}uj_qVdyeF{&tUsMO0w_3>y4CEivd&wMp$yqDLS zQqdCx62v;)h0l}BHv?WrC$Es#_xquwYHprOtJz*%ul|O^P;Rw*+=A)6U^nr}tXz`b z=-((JY!-T%D^yo-b2EGp-$z8XeU7k?3nB#Xl(o$tXirtCcymfn{8@U&k|6(VUCEhV zqTuZjDAz!(spx&I_*68kl^lk*Onz**e02$EL~K%1ee^8t>N-i+r1PY|&o*8gvr$mJ zCjR-->qGAax9+vQ=qe#BoO!#PNt#jx#UUL~W4d4?#n6!FZ;oW)R!iaMtd zAcc}4W+0AY+cy|1;3Q>%|9xX=a3^eSLU#Fsmee`C3c}s)BFs>9S>@iArcf}k_z;HE zp{i*e+%c@Dk;m3dU?dpkRA^APIautLh7#lhjxNv-D5P}~65%dw$HdW^l=YfV{m}`A_?A^}#-|j23%ltD}7PM)>tj}NqMV_oQS)puaK5ROT zu?`CE0W{Qa@+bs+s2%+vZ99{7_T!J@(|U`@umIm?ouq+%2{~}3lXGcY7r)h5`5oV# zB=j}x4&bk?t}g$p>5%z3+q^^z7U>vrpfsy1)7 zVav3W_A>hoXz-jQBg1J~6<_OCT zIIW}E9`RbgQPW|RoRt?#7nGAs(tYpFbQrQKjOuQ#apg1$6lWAjFHX&$1TV<`@BM8D zMAzM9nxpuY^U}An6I=#Ehr}mgRRvsutaOSLU4t!8rW9$DNo~T))V2~iIyZ}L$JSIz z8VlpU!WyuA@!yOk%fX8!lnsVXh)RICCKzb!nK*Bj%IS9Z44_y_TH76K_R)saxx|$d z!vnnZFc`ysX^9cpgCMD(LL7lKoWZ*n(kFy$PURbwnpd=R4k1i^7Mh2qwZCa_w)imR zt+Qm?jm;J*kMwUPxpr5($5vKwC_=RNoM^C%OGTgfPLMK1t!r`jT`i z>R;Q|GvF*6_ttBQt01^I{l^pH#w@m(ZYT2>5_vRK&+ya{LGNB{o1$+Q{cudEDshqy zAy()(&67Zi=qY!^jqHv^b!#%WWEB?1qwwa$SEpjmG$lk(*cTM38%guq=k7A}O5aJ8 z&yo48#Zs0G=9YrgTgZ$>8=AC z$V-bO{JK*@f?WAbX!g5wO*QTZj}1D4Y62YpbwoHZM&yHadLM0ZbqnmU+>K0efvjb^ zFx+My_8+|Cj&Q-EpP8PBuaNhWyw4sS2>8EO75;C~Waj!`p9d2m6B`@H|E$-T3As3! zIsd0)A!PiYl8}j!gO&6Da_<(?45os*fz1v}xxLNk?B?bs8T14M0?Pz4sJH-F*e0Y} z$VLVvE)Xg&P?6;YHxcBty=Hy>TKVi|G@HIWp7`#p4T_c)&XSoyGy_wK5ZTl7+v+;_ z2c~vG5it0tsrhH7r4a;0j03^C0e{nt>N5lSdHWQ@-vnq;^$7{Tlu96j1+XoJh=5!a zFo1G_{1w!*6hyPqF#2XEXNe{@-iC(6S$=IGN7_P+b##b;Ilus(P)!_`O#nTRPZ=F1=^CzsyA&sm2=wX(O8L*%1KM9wZ0 ztoOE{ALYAm6ag3LTf5LU&`TVvAh5pI+#y0}F2o!RsQ)0Z5U}sB$`_8o-97MCUyHpz z+!!!y|C`;D1k>1$!q=J~<{E_l$S0?-H_*;*?r#N`aQ3_f}L=RrjFP<4c>N}24fg*0fJH6IV2~oCiK2*XN ziipvRZ@Hn%+Hw7FE1NZ--7QH5-_`ry zT^uT}j<&CSv+u>d-$ICvKppSj2KOv8g||anb0Go_(1+fVkvstmP5cYP*IsTm&N~N@ zBSLukUn-I{5v(hahDG2(8@ylKg5J(M%q=ij;B!H~zFq=cAPfSA+ut*Mx0#jqd!>8# zt7QV}xkKr1o?_%7bjw$-*EfPs_~3s39?ZCEKT%;Ifu2#aW{~$UrcEGxTS(NOGk`lO z22fqt0Hd$llbbw#=WatUA%Q={69OgZ9`G+nB*0z!2Y48Wx8^q_u5k?H9l{$H>>J_; z;;!u*1RCJ3|LY$Y!TSRo0?d2o*Eiaw>(}R((E1$Qk53RPF!ET>>~|=jON2NEVH{P@ z3DKMa>0}9c*;SEL_;j+79-m>b!8Buh_@EWs{o2(pBxh9V^X&-dN|naG71i2RJmg9A z8S=7oTUQOmR=_9LdbsjCLoH?JSqfrg5NT}R@TOSf;E$ahIVtG6`n$8eOF8r|g=5&t z{U@NalrmNxX+OoSH&WqHaCl*@vK?=GThjn;sxwkS+aa|6gs3<-9oojxZ2U}VPkYJy z3bd5JEti4b4Dx}(Z@z-UK_3)%7^>@;MdviGH^--5*`)7wUSvknR$Bb~C{W)zV_m_Q zK_}aJr?!gJRnC%Mfs}gxFs<(ANCS?<@k0=gSzVngO+~)Wl!M4fp{LaberkBkRT-ym zN_aE;1Y<^}#4uNRkWt$-MFtGMqsJ_7MS)$Y>CpW*pyc#ytuAw0fGa>Yi{a)nm}a^d zb>CFYHt%km4O)TBUQ-N(YZ~7mWk2eLB~jtc=LJGs1nAOY|j5N@Mz+k00LfJA(X+6;@9I~15WPdC1g&+?6Y z`_N9&IR^w6tBq&AhH~-v*b56}SuTl((nL?CL7NuP;}6zW*F6J|x_Q}bo{SRiuw~Ya zMcGAi@UQ*$v=Kw3Yp?ir3eD7$@*1zMBBh3mEp5)>{$|WNlx545kat0idR5tw{<6dC z=BhNOC&n+lR^*i5s0rIeV*6Op99O;-7C24(c^t=&KTQ^0j;iep#5zvQ3r{H?c8*f} z66b?E$XAOz3G~AMw*O5`tUZiua(M55usS1vNDhBpO-m$G=8jfV8Ho+cA#aNKwqgEN z&g+5sL&KfM^jITWu!h?xX2$+)sUyv=le62b8Fp+?3av~(u21AKdQ;yS_H98u)F*${ z$ZOxt34UwxhSB)Oq>pUWAp)W|n$1UF@ve(aeaqi5#(|x;Q$)sZ^^#3qj>11knO*rx z?FS(OVT{_+e@5_Vwc)>)Np5KwIh?FlELHwoi_;Hmo5E^0kXms~=9f+5`wkLzOn%FP zbBcf5!7Dq3cwM3FMG@i7gB2=@;R(NAD1D&|QM3)(dkN$Ha=CnHhjq00FF5O?W0UiX z3{R|8b&A#`-qO+O5*%jxU!CGTU)FR=i>?8NBV=vN8jV`i%;IfU7_Z*MPKJOPY6;^Z zB$G;{DW*3@rRv*NIGR^OfY!aONTX|G;M7;3kI2hK2#|~g)T2s^jd5`a?Ms3RZJRJ)* z(7O`LG4Zz~G>SY&*XFr^<+nT0J3(}}2=@4G%!iK8D8^@`33577ms3I4#O$2{mY90k;dLlUOY*@} zBBt^SjiCvD@Ty zGbfYPmRu$Y05}`vqc?aR^`45hugBI6Azbt;=ce@0;G{P?k`Z!bTjsjv)D&%+y_9RQ z)X2YBIecLG=R~Yxo2;2kl<($;_aBoIUT4P9XV*`12GAMe#WdtMidR>}R32fttB^hq zm3V^GKeX2F{tNnmy1YG(vNT5=; z4BINivK0lL@Jekgk61Xbp^wm?_vp7& zeqdKTlCsVeY_@(}|FM_Rwhc{-4px7* z0qR7!q}h@JMUm4Nv>JAM6q8z`KMjpOx2U|jiNQ~ZiCR=uND+V?5>kQWqCMddIhUSE@ zVoe*0{;23Dl@pEAzy!()^^`W7d zj5BLflwbkBE2yp(RgV0(8;a7W5Mr4+4tAhiY<~Dj&OMH?k(-#h|1$HQd2V92Bm)yt zHjEUidNiQPQ0IMzYlZ7`-jWp~{w%N(E?Q=wi^b^+ie03QSS^SUCgK}9+_<8TwdsLb zp(B;8zBOgMZ}C1$XhyMKu9q%QJ2zOaat}9RgVtm;thFe=R^WLmp>W`6gAZ3{|D#S~ z8Jyq};_gW8Moh-$0oDnGX`= zKWB1*y4GtKRZFf;u|o=I#6C)IHrfCuFgw`@4b-;wF5ATDWro7IP+A&v-C;#@2C{d% ze)f3j+#!?lQJ~u4W(max!-Bsw0o+KuK(u8k2q<;iAg0!-SpZFG+;xcy`RZ76HDjDc z!nxYflG(?Vt;ln`U1E(C0s6++tg0|X(1#tA704Z<+e|!K$5hOe!0>jE|4jcd2okn~*LiMy{ZqJ~@OlC_yF=`Y72nY{0g7d!eM-S@X1VbXvEpor-cy zIh;AjkNs%i^DkXKw4^7SSoCf?BTCaai6Dxf?KbiI0I`99r=0!}TG7!>PZo{`1Fb15 z6Muc^I_K|{T|QtZB0}E=t@kqhp%R~dny8Gm*s7u7B+$n}Lsnnl++M;vT_m+tu6eBo zQ3rC=v!dMp><&r<*RU`a-=lDS=Qc+$fgAMmg4B4O;iX7eYqm@Y@71aqGTi-Jg19K) z+}x-k_U>Ij<5c2JTakNuVNp`Kzu%2XEAi%O#NNXxLb$zw#yF~z!!F(eo1XG|Jha=# z=UX)b`Ws#s3p`P>!#NI^psD8%iJ2jhGuR=47wvQ_UDctcoZHK;{FF3}!qAhMs2AC# zI4sZpiNM|;LbBbZBWM(s<8^QW14?{oYx$w6aD1PZsOWFd;3q0-sz9)|ve~q6BV<(I zwQJRpr=gcR(8Z){g5Xbf4+_T;_Au}Qnyel<_^l-z*_NB5qAs@rgk$wD_2PZpuxc7n z>}O9=x~2h(C;9VbHyn@_qbs(?<*n!+r zeT7$s<96~(ak$D#bTz^O#gP58mlB1N*{TQku{FbI55I<5@&$ljb$M$n8IH*u!zIJJ zzA%)S*2*8sg8`98^L(?%4v{HQabbWEyGUb(=grbz8Fi=klFfS$yEQ-TR^@#2g3KzM zO+_zAxf7N`B(ofxY@9-GGzSGteH$*+dC~l#DWTlk@SneK|hR=9oBKKJR zMyF4pqD|!ew*E=_RJ+=RNLCKZyJ1D%PH4nS;_ZC9zaD@vHBrxScN%q{b0eVCf~)hT zElk0nmMCVIlyN!m(L?03i7=I&nrz*SFfiRK&JNWr9^jkKFm)aswM~HyJ1ZLl7oWCJ zL*aw$PVvpwQC+6ThiX;Bo*gylAznfg8~s_Kj2J#T9KaRUh-7lpjd8=JyltauuGvy) z5}&o(G3{^1WBtPb15%&5-$vGCWDum3j_s=i9H^^?rxXgP&_AbQu0C z<)L6mNrBbs>5-YTo{-j-t1O3lXV*fnH0cUtCyJ&PR%@@8JRzE-6TjcIT(x&+mS*(7 z?AhRd6$=s@@<&U<daC_VUh!gBTIuC_d^d9@JV-xz2ym5qj`Gak-OI7+mo3!rNrZ1gQ6FQ2z*5L)X1)10NU zTPv!y3 zH=pRN(pl1tGuGR*fq+I)GB4v+WC3I7rY;A|&HdRJ_wnRVO7a3ehlw|0#`%U<5!S?} zO4Hnum((?d-LkCO<$fP%mq?Q&Y zYgRjOY;BrujAZi?qa5oSoJ(JSoB^3E7*^m>y6?i~tXl4&%eP1pka2!W>jHBYiEnc% zStqP+o`??g#N7OEqnAHS0ZuPm$~U#Ut;prCYJaH~(&=5MEh&}Z{TjaS9{pV;8peXH zDHEc3+~QoNU3%fP1XD;IA&I)Q`SuH5BVxx?9kB-~$;6zt=**8*o z$lzo;$x2G_KL`*$n6|J%(B7whh;NW~8mV88V7NFuqA$gj7B@n4U=ZkQa)Y}X4 z4|znmD@g{X#6-{Eg4h}chFSS0P3jnViu}HEJp37#bKPpTvs3T$-Uc^E);bGWrN5N! z<>N)+ZJOeoSlk|4t@(z}b=cbW9H*Wc!af?i4n^0(quh=EGJOl&J~bR#SY`uh0QaXY zGwFOdlL@QY`cKBk5M(Zec~C6%{{>}a$pncyQCv)99o#eXFUf-O(T7Ecvj$i56ZI8e z)x@N5hjCyL`NLAf?> z&@Xjy>ma0*2a&)5L|q#Mx%?=x;D~QhxebebJ zIc#SD`7TA*E{Z;}`Nhu`(cR}e5eh%B^l?d76CUfSFipy2+T>SXAYonzkL+3RLR~X} zn%<44_LY#l33YjIvg_HzZBL5toZ*vL*(DF5FA)?aoy$kI`MQ_mWx+j4{>PzwV|2(k z9#{$vn;tm`YuBkgTA(vPqr|q8ihn9!VG(a5U;uh-%?Tv6hOb!QvN#kA_3x?$UC6SxZCctn7l$mMF&o z5wqwuGa1$uwy5^+;~Fpag9h7X)4}>SJR!&;@YIf)vS1-YXJ_5oJxh6o?~MpQvhtlx zg9YSi8{bsGh>Z~4gnXG-&xO*5nC|b7lO?WyD=bcHDGZt)i^5eme1HBoalmFO_*z;@ z=e*!-szdm#Peu08&jsOOIiYY6CBBwlVE?AW6R=h=eqc(2EZ=vFR7`@yy@**qhneW) zhxs{h)PGy=a~TMd=|l)DARiH#qKJQ>Wt&{Oiws_#L>ldwPX*hz>^Gti;pi%9IwMY3 z;7n&gN0V`Z7SljrnS1PHx6ZQ6oqITT4aN?$tsDdEB-e! zwTF1fGCK2SbQ#TrcD^Qg9`!3!?02l$e)CP`LkJsj>8+c*8cUU_>dNB@3BVPvSXg_u zylr^+r0wI-b{=&xOy( z6`Zy2p_->P`#;m()H`27OX0J7R$%L~VQZ*#tx!^p!JIo% z=?z|U@t}$2{rw&Q3HSCKjfBUP!9HV)Ee7I)Ig14qLPvKFpAeo{lkVv)3!T-C0}1Ds z>Q2IkFp{;|!r|K=wu6Ieck!`}h=*Bz%$`0h-M`ITU=>T$6$eYcMyRH!!B(#9hszb4 zgzQGn6?j&a2~<u2I@PCb@AZSQG4cm(HBkGRYH%j%HIfNwMz}Y8;2i^J+ zat9{w-FVA!>U0FE{F^9(kRBW3jo(Ru9v)gHhDL!)szP$5s9YeyJQ0hp3tQ%^Xl8V} z?R;`+RoJTBw2DB@9}3zb z-1D9WPu(FYX!yHW`V!wfv%EJ0D+z_NEc46MZ^t_WgFnEnTGU@>WG}?-2FJ9rg9sR9F8|i7HP3c?w<{FS=a=BHDh(DFF8MIH=-7PE)PI5*oftXP z-7sAen};Wfc;-2+>I!TaNuA`ewYr>f0auE(Pxo-vC}h89=PTMraohAH&dL%$QS;H$ zhq{~c%xOeDu9iN#b;_44m1n5za;Y)OtvC79{qWHES)Hr8Z#2X6+6K8q^J^7?VC|@P zF(zJ$g!t(Lsl(svt{RMVzZA-zkk|#n>#3?osSO=xPd>ZfYmB|S9&Qoobol&w=Ct>S z9ef4j_9{5S*h2H6dT!4-8)^1{I@2c+v`Is;|a<1T<53}$zOejQ~`EZZ)Md*@$6|DZ7P*&gm$J!R(ahnx&N+?$RN?vBxaa!aRX zjCovXTGO`j7?Go4(`+}`>SWNMAzkDI%=VqlY<4F3v5srRlo{1M(M3LX0%XFgKN-yb zf~hLB4F?Q7v^Nhko>ifz+I@Y}cXBfOrvB$;u#A7V`V30C&nV6a!xIoAB!5h=wSZ(X1PD$* z6c`tB!@!1V{Y)hpL-RN&s`mm1=_k_JL0?-=i557-PCc4w1RBvBeR=ibnE!P3sj(f> z{SlJzC1;-$JrKzjsoIo?8pWqP-fC~1T@iY+^5Zz{$EWOcN94mKp#+F5DqAkPQ;kt( zFX9B~aj{1_np1bhiDiylM4Q~xcT0Q!r1t0-g}A`M{o-?wK0;LF*Idoj$NWH7)TFtv zz}rfrRCdLYTR6LwfcJ)cIj5Kc!HryG%J(oCW0sBB!wLfYM@>s;~X;9Do z(vM6d;nH5FdU2+1y3R)>_MJ3dViDK&SUesVKZxD!3h`Cn=C0r65iBN;uzDtXd1kpjgB)1JA3NNsTjLRg_c;n*f6%>+baIyV^7HDD(Eo0)#xV_I|TxH*D~J zNqHs}N4fw{794fnG!ihov}Km^$44(ko29<*M+SrzMQDne%LWv@i=s#JMcrb*r5f>F5{XA^U zl7J=}3C50mU$3a+dRA=x(7dK>CK{Q8fVPI0ChzW3sMu^#{;0H_wFbO|#68VmaLH5i zsr%D{Yy2NRhk@-fCY==plj0n)ezRa}ISNX(F3cJVpl+a(y~u+d={ibPcnlGG4F{b_ zQWyQ#kgLDE=Qd&J$n_)4MqBelp!dhYc^~Uk&;ihVI|n~P<8`Ti(dB!bdqBl<)-RNtKjD)go-p|G_X#a9Tzrze7Gl+)8S2}LaR zJ^%KNRBc#~&~rPV;TW2H6YFL7R?(-Vyo~-lY4D!&BEvqr(xPVAYd5;nm#dRs9G6-A zmrXnvnn{Mer=jwnHk(LhK-gNY`?tfiH{I>IvBvN6kr2x4&c7Uq3kkMGv0Xe@Q){<* z=F3Ju^*qhXjS78XZk4vX$I8?-+W8uKH7kF^`Znwu%|4E!3;)1 z^Bjmw0MC!wrD|9nTGG^xT!1uh^swPhn-$K{sBqx-KyETj@3wgp*Su}$&hC_VB#mBN zv!qml8>bXpd|K=l++-yxp)`2RqzvKJWGZ#CMzLd+LmUg9IkVtQpPBe9!<66`EypYq zH1+Y^Y_n|(o3YumFvbPF89;>~C|BqjO&YSiu}z)#%dRafbp2{nA@CW^;Q+(o+Lo>v zBRjcWCzc296M5BkWcky0k6@4QotlCzQIt)os~T;#J3Ad!8s!ru%(RaP0F>vut6b)g zaL}QTK>t8|VU(pA&yls%x)f_3&8+(X=pbb*=zj< z@p92!f`RB397I$~m^AI%44)lgQwk&fN2K1@I+xBP$>iA;-=_HS!Ztgs!7VAMttlk< zp4XDAbiXuH-oQvMrgr=Dix3|sn>7d&5Fp6hMA?Rw*_NlnrW(}?mdcA%?Qhb33?6Ii zrye*WQ@&I-H&i|`V$DZkMmw(CY9(eDQu`<(j_ zwgJE3Q=-&7RWD;ap(LAYNhN0qP!^slom8;&xPygqrH<~5t2kWS+@7y?BL}w z>gXivbrUf)Ryt1qv5)AOPhFO%2wi@(Rq0X_plu3KNOs{+GytuDf!{p1^&sBk8;I`y zlA++~ks?TT0Q0RD(X0w4v#_; z(3sR9MYBX!GWt*n-XXks%+h^5XqN*jj>@jkPxlOMV^%;R#^~rO8iGqjAZZs8^t zwyzDcpKySF>Mz&vh#Lu6WS?`Zh2*g-8(*rDCE@jyyvyRv1=ZH@zy_7V#mK~&3G9w8 z4WH}n>PJ&58SH_o_4pDNaQakdv|bYvZqBaR=)XtbnenPZWuQT80A@3HbvjZ5EE^Ms zTpu;yo-9bqYx+uuE_wGkvJzF9nv3P-X3k7XIOWT@5$&toz7M()w z&k*TzR<5AC??XBY{&v{H5|6CA=HF#xwYYw4Q^4|aTZiqUJhL^N5!6S8I%%S z|6Ot6I)Nzuy|e-WqEVj>*-iqyb@#%OBulEg@a#*eL*$+#12Y#a$L~|gGfgE^v<)zrJc6HX>KjZDQ|!T8>NX#1MaCW?$H@U%8Zgt>!G-Gl3Tqqmzq=j1cBMd&6 zH%Ca4n0j^!4Rejzm4A+~&_cm=U8s;&>;DycV7E57vZ*aqZbWZGDtvx@Dtt-r8tzQ* zqte{iK^q;O?-{t^PWu^bD2tt$UFuk*^`nrey?Nes42skQPkR^knrkHFeKZliLBl}1$=skE};d;hC;B#KVVGg1t%S@(bI%fX@K(cswsRv zm*?_itq4dR9s4t+0rwwGYFZNX9PqyBPa>Y9%$w4LUiuC>W0_#DGwPGZlMgCog}#f| zGsya}e0MSF8+~%EBgyF|c^&;tQ~`t`3XH8M*6+G_WWSkAIE&9M!n2o#Z}GdpC}E1Z zrLDm@;*bZva41Yz8YIY0@#b> z{xU@hTip9NYVM5YCmFe@IjkCjT4&7KwMT$vU-u%{zmK?}{4o(SVv^D=`|^ZqU(-qE z3TC__ei)891$?$7F8Yw2Pi}_J8T2|XmEP2{4~H{t`vj9%2-jN!Sm#&V{>V@AJRnkW zQ@thpr{I)A4lE^5(l;Nn?CMPoO|oj%;PQ8&6=GL^F6+rBETgLHuno6*<#+OMHuPFO z?ZfDanhwo8>x^L5DZ4ELNgc^EU6%4>CaDZ0^}Oa<*{UK@O5(0#b6QRLmc%fYCfs{H zf}T#$5F&O` zgx%iWrlP_FfWR^WScc~Q6HfD!At4takryN-OBdj%@fP6Rp5VNDfAubR*sP|f8ebb9 zuYBN1s$1wwtKgQPi$FvAI6d0khkzciD?B~Bc!BWoed+P>`Dw+)`532=o@xP6^FT)z z;Gx1pKY3%Ff&PqbvcQl*ENpp*{u!Ml{%Hh#G^8Umv?GHcdx!f--(iq0Xdsk8e0}Ud zaP85<_(<4+t6I+PdYlty&s=Hg-!%-PWhm`ih#;W3bVpuvkj1tCX#CBzu`U8T7{ z`5e@ff{nI%G!UOx-KHM4P8r=4${94E4=h&S3ULU|_7J`vxE-*!58P340Yqnpc*M}~ zp$7`zx4R8|=Xn2fd1H5}7uy%VJ0fUhRhGnpcmNl=25j9QOX#1P$c-@tGXe}GZ0(B_ z5NoU0#y1B7=?bdZ57q1RpL1&L0wm}j;fHZ%dJXLw+V0REfaixc{yhoTH5-YD<58A` z0ts*${7A_Ktf3jh*>!Qe3Y=a71$YX3|Aw^ahsRvk3R`bww?7lhll|aVgQXzZsdHbLGsy|&DoLNGB9;P`{|jLvGk$qLXHtw!vy~7zjpxh z2?G7AjMl&+Az`d#{}{VNZD0d^N6aeQ=m3IPcf0SFci0s8rMd9(xh zq55f6!GZkYX&3k^7q-p^n(wvr=eW(~=KaBkOYOx7L%Z9B%usw24FaNlh0z}&88d?W zJ^1$14caCD^;`U%oc#3x{^1}abCVd|1x@Y6`XvC&L0z4FbAa(L+%Ud*nhWmB0N(W~ zh|X$@SAf?2x3hoLDxpCJRz=YbAqZULb%E*e1A342ImqfT#>8=88(V()xPG(1d4owX z0SloW0e(7s_9XZ@zw`ZRvm3y^-EIB<4`JsND~u9G*JInZZQHhO+qUr^+qP}nwryLz zNz|W?p7zW_@eVUAIAj?A82*sfK6>+xpQG=H(**oL@pcj~)ijVdmu%_z>)G zSph$O@*V=%(Ltbqu>)6y-{1{oWd0E$@&UXhd4seq^@!g?g#8gIascfTx1(2i4?~OB3Rr_9eABgs z?o56BrTnov{!xhlZm<3k0eS@8Lr-1o{?wT{Z+!zE01CW~{0ho@w}-=)EVJOXJN z&&UYXj11-aLRj=WzGG^yt&=i65C-!+YQQqy; zG|FpxSxr-r@{5#X1Cm1exY#xJ9u$U(N$P&K;wW1iC#ohtGnvRsk1z^|!`OD$sRo{D zN*q($w6u0MK%225Uw7s(7e1m1O+`-7aq0~8KR}q$tcT~RC6A5_8r2Bf`lP+m#+hm% z@;jpN%o*zOA5xriXDN!yLFJc?Z5I|&)JH$=u11hg0b5tsNYfu7=?01VWwMCx*2l?_ zD1yT9a4@kR(eKU&#E1KICJsBKG*htOCj#{SJ8D`u?WAeFSpN5#HA?9|3h6f1n;;0n z{UL8O2kvmb=g2B~hN2XyREWq%9|87i!ghc-y3iT{aSVZd=o57qvyV|LM-{n!G-MG~ z%^;@6H0hgmF{64x%4&1Az2cWTcHUtBQUXCLwYFlD-^BrS=W2_;wV-Xr71n9zqF67e zaxur$3;J-Uhiq$K2c1A8I1M}|uB%eg$~Q1vaUH@4KLWiP^eQu|@dS3eXos}c+uKuB zJ%>78j=#zD?=0d3l-UJ?%!~!AS$U#N*qwp4(q)4t)WIQ3C65uMVwA?=E4*bsib>c5 zhuZ!|y&GN!G)>Pc`KdjLjani0rUTJ2}g!u@^hiOV*iL*+Q zBZ<_^e2MIK+Li#0rQ?UBSus1BpC0X-ZR4h-42~$&o1jZJDi@W*jcu&!Q{n zDNASP8eqhoCu$r=WJZv^>iw8o){FT91Tgq&>^bwIpg&ayiTF7xAq`q5`=((n%6iz! zNPAVU?usp3zt(%BsC#a0xM!hg&5F=BD^B+AzFE<-k&|RQLZ`_-v{MT3Ug=eHICKm| z^Kaqb4QZ>jf%}NGl^xrjY9TvL6k9cp@AGJz?#6HsfnCZdFVIPNSIEVW-@3rAC&)Q*U1!npDdQ9S$9?VCudp)Y!UOeQEw6_ z=0Fc5_Q~wnK;XL0%U5vw&=z_OOhrYWjPFz(9{4HY#~z6$bgE{)-TPf#V*@$nUv?4w z%%mavV>PPU@8lHAZ_dYP*~9AaAJLW}%<_B={mMq3t}mlRG)15*NfG^bO(5Nn)t<4= zEiIYxDYjBC3VIp@NpwgGNS3%;^e?Mra^ENNC9#1aE+rutr9hG_W+#>O4UM~jk}_yeibvqhmC zY)>mzz}SJqJ=gCU zfhTb1?zkr=QRe8`^i4{`=6YTyPV%mpUzLvZCrmEY4k();}=Z?#Q!jx5sAW6e)oSK!ObyLbr zc{fPhM6iwG(E4#ljh-KVPbOhcsbk8E1MB8EXtgn4dVPxzA8HytuJ2>1N`gu13qkVH z4)lOx7*&*;r?$EDj1iIap8Q8j9z6?(VUN}hMC20M zf&on+Zz(<|k=(-3tS_rdn+}VE+V@CzC|`>oVVRe_!B@P#$MSEHR-hA$__}U){Bssm zPK*+P@97*l1OGBo=dPt`;$j)Tzm%er4(xgGg3)*F3Dla7+12ag#WW^g-B9Kpx>Kq) zR2E^I{v<8G2FyI$B8Z8^cQZ$whW1(2G9tvZQPf!UM?w^UqVH6nv&Q<(S_WD};_qhc zI%vN0#Y2n!%E(hhks&rGxxV{+}%AKB0`CizG5`qLIbyShh0xBiO(&u;J~oQ zb4d5#p|TF48IL`X6!DWy&~C58eFlr~5f@$Tzz!nJOY2Vo=G74C4Yj-#d6dvHtvb-Z zT@9+L6&CfVF7XyQEJ8*jX}4^32{L$Brs-u$2n7F5PjcSSDjgD7-|HDC@D!p!iu*F zgeZBe7E@teXHN8tpP&vI+x5)uDF~F4^hpZ3BDNl#;p&tqi8bsZvr9Py(H6f4KtrwX zqe@Gd*%z_wBXdYbajM#btvf;dAsY5x(g&1cGYuN2g~+tsc<-%b3V9Q{Qreu@%H00e zl_Rsux)exKB!PUDKKe4Ef_(AoaZQLgF06VBma3N?^cPVCY_f+^A)~|NJ4Cy zmQ7NaH_+?(`3>UHJ*xlyK*U+YPFb^z1l`u~S{y}uv)+alRZ2i2Jzjmv?57S0rhlTHpVd4dyx!JiwQcqJ-s{;S`R zYo6fF{6=Z=kOPNGcjOWGSn&K-iB7G$3Z7xXY@pDSt2`Nh$E%kYTW@Y{3>X5b*=5gm z^=K65lJHK(Pl?R7UW!Xt=%~HXa6R}3r1`}Sjc#{)T)meXXw#+?4;Q&b~bRAv?R%6@^>`VWnU$tYU7)ZUm=cK7LsaIcDBboTe!{ljj zC5O&wdx~v?$>yp%a!K~unp6>3b2%X#{=u^tK5^4CUclzIHJIskIxXMQqOleygbA8% zp3auTst-x&e#w3(B%Klg!|!@zM`3G9AJr!=?Bb--z}TCwj@HqLYH^Odam2?VL*>aQ z9%qqEH(;ka)0nF@J+nzOWVex6f*3X*`A1O#@8R1DqG{eBW@mv}o!_k^47H!w)v3lz zTJ(-~JN&^*)npi&=)cR;PsgIok+S)Cl&wL~VI%ZVx%eR+_!KZieUmBZ$RbpCql_Rle-<*71O%wMe5t+5fSEA@y0?vs=TMH1w zDY3guS&F`W^yzH9!brEo+epzz`tn^LDlU?|=SMn_d`D8x=wS+wN>(Q+U9G5h%QdrP zb8^Rf_CTgbu^?b?Bt{IK$YZcOZl+A1qxaGJ6WX6yWvU?i)Bc(IRzjKTJ8Pm~>27jz z>KPc*SDVfW=3N;u>Lgy)raXw2)7mt6ZvTDW9!>SdmAMfs3&mP7{+0a{=i_2SIPNlu@IObh32&zi_D}@cJ`JN!i|RuN^7tgbCsgCAxi! zPt*I?-vUi?-V-_$#hEu~-&$qNJn%T)Uc-ysv}oq~6&kkvoj}`|FSj5q{?Ox$8j&2Q zyD5R!kf^gkG?AKm=;?N$tM{h-F{g{T+=UaZJnW~Te_D(o$x1}qSl0C8j#ASQw0kZ4 zrwXzjuk(;IIxCA=hP{fHj)F2|77OiJBWP66l>61({(ir|J3EnUXcoM+Zl+%%=Meif zoh?-pEY{6|ypyw%T@vI>*;)1)a+}hBpass!=_h24<%w!hr7I3QZrL%Nqp``|I++G( z>@)XXh~(hxNxhsK^pz;IBSxnDZA%I~P4r_i6u2$|NtlYlTPdxMWjk+;{=nY|8%T3Q zZYp)rkoXgFA67}Cw$d^3gl|)uhcW+Y-Q4)-qr7Zd=$sMTIhXzwI49AU9TL8!Hi4wB z$2CvcW5OpMZEE==!iE2-_yec-|C@nb@ot*+?uCzsf2m! zA8mvlru)UhRScG$JvhAp=jXJaD&+Jnc%4F2wxX)>NSk#nJ}u{HIt8*P@4l?Gc51}* z0pUyv_4T8BL93~@AjCz33nqDBnmY#{sP$DYLJ?^BaN9Dk3Nlm--l=@IqbuW!08iw$+y78KKM8dIB zS$H+Jr*Mcfu3wsU2ku(18<-n~4_VK@R0;4Jg7fSY5RBH5iA#9wcm2A`HheAr=Q3GQLEJmaY}!K~*h}dO^-djX zhgEj{`NDyQKbd(SfdllyK1|)UMzbz^b)DlhA-0pPdAa+mKkNT%)=&P zAB>hLvCHQd+`(dHP=LDs^;E*UcKJmQpM{qPS(@uo0>V;?&Z2S6q0v-a>CJ1S`~{(H zks^+4TSoM=^M*ep=)Oe(#jYYu1+l=y8I1w95l5hGV_q49~>WyT;M z7F}QXushiVE5n~~nbP(z3d)v8xW*SI>?6*8=7}&|yso;Lys5k{>6-Eik*C*qdU5P= z``I_+cU&fZeZ3X*pO=C#DT-n5aR%3@Y^;S_Yz8+iwS*P|l>h=anjEckf4f?XCFNMt zqU7pRe$Yjh)PLR?z|80OjG+Yfz~Ont+MC$uz4)TVH&mz+m;vnY6fRT5WD<>PqW!|w zz42!3B*dB7D-J5B%;uALO7KA`p$%rN4PdEZdNhG6I|r7t5!Rq}H@v~oK6`BYoFmP| z6!vZ9+4E2Ne3(+k3eg@fmQk@wOKACUf%oQS=2_16h2S$~pi+FefoX+lw>z3J%~eLP@~ zG{fSej$yo{YOzrAWJxsbK(Uf9081B5Mq4MB+9sH?E@3i_`sa?vkoW|BPh*lAp&$~rqY2e?>NpC=e!zVeuJrLomGC4 z^xu_10g$?8Xv1`MTlMfAfPtlp^XAwxL(RpBcPjwnbDYpCCiHojuO(^9Dfp55iZaZ8 zm1;^A?5Qy>GGa^d8NK(0vT4lTL=yjc)_U>e38|KzHJQpmM{ZcXEsB=uwCn~aw?v;U zk5M~hiNV!^yF!HAh6+ZvntZwwa*m2u3kzk)ta54eRX2}}>hkI0!OkmQfNz>>+;eh_ zqGi2sA1?`d*bmxWj7B5z*v+{~>)|#~4e)LbjyjgFco(sE1;`FH!`JLXi%R)7$UyW? zm%K%9zFA6ECAOJA-Y@&9t5)rcwO%$F-719{^hhx^X_`w;1u5ae97Q-sh{tr77Cd`~ zl36s~ZA4t+Kf(W|7Sc9^xw+ebcH^u+sLg%2C3|nK6SYy~Z{_`X$bHG9G`7EMCXbeI zZl#$TTN-kQym}P)aWcat?D;9!pjzm=%L(!`B|Qv@1{+!^;E-F6QB;eXjy0NwBgC=R zSW?+MbGYd{O`~eIG)}RG5z&pvG$YD4q}NDv4q;^IwcZHGNds2Fi{AAlPqeF?A72q- zlbus~?w00J4MtAq0Y%&N{m_(*Ax%e>IFNPIsLrqf&20d_@F!xN;)kkT)+VL4n367$R zHM)gf*?yz8-rZhOW@kWFj%6%CNOmL4!Po*txLD>Ga?4*!SaKq}Qk`vz%Atf6a2s>d z8j;jjN2v3td$R@gPDpxuk*5YoD&{Ye=C27`R(VEZjJ-3A#+Sm3*QYM<+EkK$jvjNRl5a)v~PePaD<3qo{hG+IDDr!)y}s8~RI} zn16Bvb9JrNy6AZ6T`QT_WoZwftxJ|}awy4OjeydzAk$sHdIaGIx14mtm-rH$9<#r| z4z43yDLFOHxfO2xuzs3VSK-<-$SMe<^@WD@SqI$-%`^LjzLyrCl74=5x(o%lhU=hR zxdclZ$mXlf$ex&h-IUc!x9!MRwo#_9a6j$XnqJ(1R#3 z8OV>SA5Z<{uLBWjE8D=dT$s)>#qs7vGe~YWc|sLxe{G7=t?NHi7DytQAIjV#ZwW5* zKsq|whUy&S6gPw?hUjGr4u`9KlQ6DMm$wNQrV0E5JeOdau`J(P(|^0Jbz>n<;h?V3 zR4jq%0{t1`4iCLj*KDc0G_L5F=EK4pQ@{|_D58Eg$aCgCdT*zjz-+BlBoml-eIpDe1 zn_pe^*)S6>5Ff4rSId0|AqCE5+f@M`l_;hJA58)FQ4HVeb}fwuk%Nxnt)Rbax-rhe z{<@FTW46U2G^O2O6lItkUjUD7NV{@4YgB9Tw086HeW{TIdGttQjielmCN643${E7) zPbF&Zvt_QUg~FX$$6u?q#aG}8F_X__jqr|XyXge`g|1*N*=!e z!mfNp2Iv0FssQM_Dxm*O`Bse#Bap9jw?hq*o{MQV`&1xL8^m}q*OA$p)curjY}V_s z066_IK~TFhTA)zF(G=#lv;Q;sj3vXIN}84`a#IGY`Mdc&Wp4fMxLTPW*cnh1MU_sf zmS5!p{5BaKam7n58+T!EK=TS@v-S>KS}AG~)L-OWF)d%lSEujGEIRgGE{b-dRsrw| z&;F&WHdKD&om_KydLG}jCcbTasHwDAj?rt5x(rL(=1=?x`@}+x^u2&1anS*UjuiHo z2Ny7gpcZy_TiY=3CEQ_3GGhBRN7>62q4nVg4xv2gpgMkfrlP&_I^8lbGS)Fc{JEC% zUx}x{%DYM!DKx}E%j zP;yf6V%((C0PTmcJH@uPvu<-&K13Gxp_A8|_)tWscx)CdmhUY^a~U}^rhVfX>sYa} zil!a9I>Pzq09mW5XV@k;tR2}h@@Y}57#dbe^VC#Q;hS<7XQ8`ZEEN%O6y^T32d|LK zf1HT-)b8uW0R2TX+o>T(aS(|q47{7HL&Yb~O znJp@Z)15vYPt_8f&@QGp89yS2gZy7~N-5<0?QuT`;Uo%+V-T<2L{C9Q7!ncreJM z@7Kl1qJvO_Ykc`A^%t|f4ClW{WDRLatJeZ@mzFzgTo;F`*>uJi3P)z%y;8MWvY<@QI!M5hz;L3(d_U~V z@lNbn38pfGbLoM&^Zrm3f8h2N7r>+Gq>>B}p-o zGCYkBW>4mP5ruA1u4~lPFE4D5_M~AhGIfrNB2@IyB6*VE>3k48?I*K4TDUk9Ti>D? z?KC-lHCa@r)2`U9xObOsPvf~~0Q~5F{+S_|($5~<5q_)ai^XS+29^bxm{713@x;mJ z*WkQNRquw6z8+*EhwTcj34(tIt5*|sI+C=Tx{w2*5TjOc93SKdZg({$$Kd9diOpwf zW}2`B+PCm*k_&q}%e$@D+G=rlj0u;EG7XR@}E_g_pDcWBm?>mgrs!LxX z%_Z|k9B^J0!wHEVXe2q)W_ys~<{Dy1X(Os^5TdcKeP0K9RbfV|e*vd1hwg6VOhI z;n-XuuUIle9!^*PCaR=368jB{u3*)9S z)vd$#4Wj42VIl3X6v052So;x|k}6-2Q5l=#nz(2o~b4H(9Kby@T-2uja zFnkve^&E|h>tE#GxE9&Yj-%tsKc@l6X=$Peoen*XKz zbUHiX6Y=pK^<^~nY#Nvw%|8Qf9dFz7)a;v#`Ll~i0HiU7+&6B;!8moM9G`0E>Hb5e zoSP?j`W4jCG3v(h2cjr^o2ZGVvwkDdFGlfnc2~r6tU~iHIAUwB8ufliV!i@}YaN?G z^uqEMUWiWNKIJXjBt4r!EY!x{mG5rY`Nrk%c9iD+_L1WjN2wMGlLpJ-L>88H1Xk41 zolIlc($4$%%9rWk>R)=)EwoXx#6^zh3;g_om%?Q zo9+I+)ws@D)$BO$^xE-wCm~Z;EJ9~(Vgr+2-{_oYV5WNj6h2Z-%K(s(sezG^p=mfd zu}Y(3@Ar+=A7crSn@f9h=k~#f3{6iA4TBgM z8Xf+|74#s(3rvsCETRz10mL`70dox{MsIR^aA{_0w|AF)%n=7nhG6wi&&)`^#c>O) zqn(>r8kvB{vpY2aZ1$S7Fg5~~Z)Rx#>GJ%MgP`VxMn?m~6Bl)LaR(>VFbDS}bpWv9 z_U|l?0ObR@fN^yI$^!O50;9y(1pXO~0!YItG}XKOrs=HgPLJ%2Lqd3fFc#$_2a~1E^YZ1{4C%-|CM#{W0YOe|ND1n1P-Cg?+WX-3g?+{c&Jtq_1yrVQhG6 zZDs&Z)7S<8h(dCLp~Itd1tjEL*b5V5n}50c6SEUbV-p{_2m4d814%$o1IO$_{$}Mi zMJAO5M>7XEmCV>j#q$g=;C6m+|c0a1}+-?v3a5o{3c`o>jGTM$jD@GR|Dh|1DqQg4ZL%AXO;oq zA-v8iNw>2eTBkUg@Lp{IzYCrTrq-J0mSXmwdF@R-i zZw~xM{?dVE{y_J^?@cTM=MO#idQStC?)m@uE_&Te&+(uBO{Xbp3+ig=M8E3C z{8b?%HoO6NEHyC#o@=gW08IC##XS8Cy!j7(w*meU{>7DA{{C=W|JGHI-Rqapz_YZtwEXmGS)v!c zJt4F*w|&@S)8>%U@CKAhrP7h1{cRTf$sF)@$CltKOzdtvzDAYZ+q zM?HO2|0)9R-Cg)AM{Q-SXZ`Z=pt->XBqSvzkY9hD?;&#cXMOw#$p+&6RkH;o49xDH z?10|O&7m8Z-GO|07vfw4h#l+|`V+zd6piB#LmHs`1h)gk82yQ6%K(T)@<)L7Q@nsT z0AZB;<-bup`XjIhC_eN>T=7ON;y>S(eS$XtVyyiBx0LxOx_vi(4)0Yr{SNOnXYi;$ z{9DW1(B^4>=TBl|(?{Cc>i_Nkmb36oKMrF6@(a2*k?|9FC)LzPuw`%Y0shDK3*D>C z)bv5U%FXr%-RrIWU2*M;hL#J5CeYPKvuo-fYV3s{zoLKN1HbA&;NIv@?tK?>qaWJW z^o^YHv$JyRJMv3y;5%n>W@Y{T)jIR{p8>@1i=VZ3tod&$`h(ptod5C-2kuUv*^Nzr zIgMZG)L;7Vh3UQSJtt=9i@N`}ZuieF{U|TzD^@3P_HTO(KkKcQ^9OVf+Wi;#IVY_t zHlb-mAMDQa*TmN!oUv1b1MttmqmNb$-TkW%XVzb$QDzM}is2Y%@T`@g-uL-&Ti zeJjs&RiV#c=r{bGImqhd>|!52&Q-nqRQ?73eSCrd@dl99M?1fgbrY)X32WU|g+6Rw zxR1VvcG{%O%KN5TbbaoNq<8mcp8c&6Yr6tki-joY%3^ zs0jr5x-lcFs%gW@F;mljNNX>%+5=#Q&_WXjjLq4Vcl}otEbRO2Zm6Gi2aX-q%H_)% z4dM;@Ftd|kIZW$9q@L=z2+=E)+!+((Y5`QTkZ_T@-RrS0Y&{_SIveUhVddYD!C2$>n zJPbf|!cZ$?Qz3K=?o^=TG=B2wtQSwnufYD?feVz5{65qqUoP zAX05~GEgG_1%bTTM~Ev}8#hen{#updi(vq>L!19@Tw$ z+3yXSXJdrs2|g(lmT|N_8q&}HxAkLaR2EXT2b@C$uUsq?spQx-NJA0KVk)qRk=(mN zCSw97x)K7Eo!#tsM;zAr;y^6q9b{bbCTFE4k4SaJ7*gQ~q^Hwc5~OR%hFkPXL=!$$ z`@q*pA7gK0{eyin*dM=pQv@dFly`x$?uQnf_1qO!9-87hSgq_j)9`9_91wxEHFfne zNVr1`C_P6qe8WM^7!%=hAIrYOM}~#RW^0Vgkn%iW3J8=j(4F*-?W@&#wX(P4GAV~ z3Mog-Z-pwbeT@D%S9|EzlgqO~E`?xudwk!f-FA4UN`rIAFYu)iH)LO^oS^0YB{hKuT!C5_I02MQr3r2^u^uGY|{V z6J-me!FV`tgSb*x0YH!-MhMrP+^#FrZc#{|#g|r8GZOXQMz+J(zk!n>w^WGfYZm9w zpyFJecekR-0fz0T@sGD<%xoD6Xs)2SDZnI-?-8sZl&hk~8E+p`jB*=`QliYD&T95d*YDN5;NANb z6WHi|Lh6$OWC#NP0eyfW4W86A8sr5mZWM)yw%F!-!kN*0U(#P0)5Dtwu(AKBBAfo8 z^7q0HIBWa;#S-V!bcyxd%#M>LL1;-Nd{Bfl0*f35QCxsmkrP@@ra~rme}9LV)V)qs z&Vp|}wwcvE%pv{8GnBKHz?+ijG6AIs+=IdGa~rlUI&=D}Lpb~_f_1x&g-JAw(BY2Z}1D_u#6*(K?5Toz$~ zt!NgV`)-;}hp?1v{VbHLHas@}jKTpLcJEe|5Hkd#PFAOXVPSPcbJi3gE=53;r$oU- zWnibe)adA#I)@C5?HCrEYJPWqV+)ZWVaGKhy;*UN%I_U+u>u*}l-o>Gb2F#Llu;F` zM`FK8n_~>15UQH8W@qH zT+x4+7`pvS7JEW94hd}t-yTHzSu3@1qI|u)YjHchqCg)LU`Zo$3!>z5$^bG2tmD9_ zh)HEgjaIH@7|m$cEv(o1;nf>d0&UW)&acmfN#okUlg+B4n;xu1{Vxr}4IaU8*?3k$ z(~RCqHj@FQC4MV|6414R_O6e=skZASq8JJF-7x8C$${_qxWnV9)W}L|{HVG;OfIDS zh`^|P(*&oKnoN9l>7RiEs)P*Qv%y*(s)i*EW}FN0Y><19hLd{OSd}CLPzm z(yCr<;NgR%_i}<4OvCQyTQNy{#N^Fh`|E@L$6$e6{SCwP4r`qMf& zbX|*#6F@}Ecj%tenmHgH{ECDbu9cH&5l()uA1PT;iFm0`gEAS`An+lRYQtvo&Sb4Q zawJ(GQ#?q3Lbly&9#AzRB)cD}2VPivt}Q`Y2!TF6amiYf=<6HKrq%q{-_yJZKZ_f> z?emh@08w}tR)7WGfrf1x%zKP68EK3J`YL71o0UW{@M}`yXiJh*U0vfYwf(d`wz)97 zeUP6Vri~f`F(xOS3C{y12|5NmyTtw@2`eHLZ#Hm$@d=VyRe(Zcb6ZZzrsvRQ!c3EC zZn3wcF8uWmwIg=#(MMBzmZ6B?FRnxA^DUj&Big3AA5Fe#r>w?Sp7 zJ7RZD9bh{X>v#ei>@2(@v1)~iWy)z(O>n8QcpCSL1GShJ-eTvuFvo%u$XDAM?fw9| z@D{CkFa@v9aEwG?WyCqIPLDrNehSQenn=>O^jnV}pt6RBC5)t}{Xi(U?I$&Rw?J8D zWm2Z`up0C?{|y4W7w~Gu>fcWkRTa@2xSM zT*;975*4D`l=N~fZSJLJDQ2zn8t#Wd9_FO-@i{*&_Ho5oAj_*Kk62-cZSHtgJ=5KJ z1F0^fFX5wza|5a`hs$5^?y{@1c}ee2AZc+>---R$$Js6~%#P+5_l^@BT$YAP3gsl$ z6lf;@qVDJDJ;osoath9FXq|9*Tk|4|67#3{)^=rG1}hXNZ%E!@S&Rgm#UqcbubHd% zM?7pG_ZYv~%=kwycf@W$qz|Sy+CvpC)I3zT38HhRSx7htSFdGvI^5kKgmsembTDJ4 zEmT$yZj8-cpCl|OwD)W~Az%UNQDx<+3t|RHy27Kr0X>78LOz60YSw|+%xm2~B3S|| zNMF~VhZa$veK8V(sZ0IQ06HFOX7rvjWYMSgNH>)vTUdNmh}aOd!%V;1Yq#f*v_zUo zw-nfOE}JLS$!M_FVNUmwpns5ZiRjTu^=|t8faNiqbHz0hJd6pqFgif)glx^Cu-Mt& zm;gQj3bPFloJ(}LsK%VM#gtdBcxyjUb*;wCFF{4L_S9CqX4@nnsd0s!Sw0)B{g z>LsuA7UC=6K|$YP0%HccBuW^vZqH??=>~{S*_hNN;#N@&n?`PggmajCHKw8Z8Ujsu zG0&t%Y{Mltayn}Q{Vc+~t^Nk<+=!TbGW)#&yq_=X3w4#zuXoI`l0dEQzL%1?6!h?9!++7bdeFlcT(Q$l@x$pKc1W@&hR5x!_h$ zPlGusS*mt@-Y&D&$T?Q+?Pp`FY0Xy`CbAYTodi#A_0!1*;!%L-zo@`l)S}Fj6G|-I zYp+D0x8fo5o;*t5$U#&Sj-C%S;R8<4lW8Z`Ab_)=2$$4Eu~N7P`Kavb^}=EVK2B{Z znK~_ZkK`0AesmR>CSzn7Xdo5})c{UXT`RA2Ft}Sb2HkJ!0?rN-C8-&DMr6-v%wY)P zSxqu@%j5z{BRj3CdJ?1UU!&7_aZn;rOLVfOEmhMCGOCy*YbWhdg30#G4smKHnH2z0 zA*D$2)FaqTmK_AVb1l$555!Cobnn{6VkM>NT^B;aMC2VqkPaNgW|NXUI;{RPLQ=|=d_$JVUs-)2qb&dWPi*=aOd6u1JSyEeId{?X^@la`R{%s5=_Vwuy z2#qElwTchJj3u|!igSy9K;5pxt3IAhm!w|T+di22k;&n<)adT@iP%?tIb+6ixZ{pP zT)Ctg(As69e5ds&p=;Jg9rpU)12Yx?Dlj|*3CpHFE;#`s=%nr&yVp6XCy}4-vj?bo zSgEAtRpMA>UOTNz00NPWhwX*2JxsKScOp1Nxh>nT!O2+dw?{MKx>Yn?l0%#%{|uIs zxIqUiJ!vx%x&<5Fx6w}dphL3T)1esVy!}*w6lZ1U3h63Sqs7sOOvp?|LJ#4 z_JXyyLfv1H)MCnx02AzGuU|sPJ>*2_!xPN*mDuz6Dd#oVRvFeQR2M`rIU}GxxWuMz zlajL?G*i&np`HS70rLm=5a>?@ndFAH-Ye6%&)aVi+P$qM`55zoks9+szAG(?^x9)U z?aIyVRO>|35v2+(`7tn1LzZ^#`Z=kx5JgH5d{uymAv(%C@#i83m&<>rRXRu1i*&wy%vI=EfSz5FG5+oOKxS0|z(7M?X4f=5+q?7AdA>uXe#5rC zL|*^x16dYmbUXTSzRn2LxJhC2Wc9TrUd9_K{d|PTHC?T4g8E7LNwMfAonwvbzsVnz zUc2VFxZJAPk`rWuIF=d%;L|pHn;?A6=g!0Rs1hY{=cQA6N0I1Ojd#WGb_z_-fP;H<$1xFh$k^#dDsrQ-L^MNGmS4W%j1?vzz>(#` z`(79x+YP(nxl%NXWm1*jER)b|Tqd}-yUKPeEs8vevE2WOb7rSAA=}#Y9yWfaoZcUO)6wZK^GByI9 zdU*4&AD~xSdP2#GG<2dwlTOuFw@eorJ=!in#lu@gclfsxIe)STV8B~&j$M>=xIAIh zfOI=~grMXrn6a$?P~&0tNf^^rKw~}l#Ze5RRcfLY#9Sq6|te9~4>(`rcE^kg`r0#JSD3p<8i&WBtPFASN zoW(RH=At!Z5!@gv9&#aQBy$aKD0>HmN_=kh46FCa3T+xTmNNq2t@Y_ll3^?wqclu3 ztCjxp7ga*C3rOLcZD0NKeWGSmtPw^s5y85u+x_PKLREr*7d>6(wzKLQ<<5G3G#xoT z{T9Cl>`^1hcg$i>7cp>ug}LX*!tZp2J$yVO%8+8d@M%KWGU;Tb#x^JF`)THK!+Q`m z3I^?QS>l=FXinWa>BF7?K;O~I-s2T_#`8|v1iM#56Gr}LG0Ps02rVAEAZW^S%^rfE zg`CdEZ5&!Bj3LJ`^P%Oa=KKmPP~t(L$p-vdf}WKPyue;b3P82jU=s6dG|AAoM-h&7 zyNe?@fv?4>4RV%o_BwI9RykDK#sKpEYM0g4mU8Lz7aF%)9n^m%;rQf!a%HQ{hJ+8A zWV-GpXi4=ze@IKm9+2GoAAl3!PU|H*QJ#(TvL166tVl(T#*L4t<|3mt(Q>Kd;3%h! zbS~e~qgpyTT-R-9EGO|?IVr4sFSBtx@B4z%Q$b|SZO7QG4CGL>)I^on+lFrgIW74M zB^e|;&b${br(ag!HC0=mqokQV^YK$EdzRw>c{_wtcW)JpMEvA-p_fI}2;8bJ)}E;M zs3D35oW3WhY$<3X%qB4q&!Hu4Kmkr37jRoTM6ul>rBjUui!or6i$~LSR%qq76r!l z?gK)zW!ueN7j0hyLVxH7s{`YXE&h7^7fO9?mIc9ICJ=xTCq*ZO3A`+A%7^8hZ8>Z8 z^x>7esC|h8tB_{L6W|<{$xXGja>g((Q5K=GrC1H z^)AC?Mx&LskQ%L~%h;P0f2)T}K9T^G+V^gphu9fzv@#P~TR(+T>sHDvQhdD&wFK<$ zCxp9UZc^8*8%1ZlpxjX^^TPxR<{oOM2qKtZ*>i7%8av#sUHF+BDb>2o02+yBG$GvE z;1@`XwyKDT;Lc_jfW&1#w~O!d5PHjF&A)LZYscnYf7saLg7_?-qf5Z$Rddj*0hinM zcu71PAutJ9_2S50=c7YwhL3Ms_5a0Q2bpRXf;C=`=hzQ8G{5T8x~s)Dv&V4K)|b<=Kj_*e z0n5d`l)dSNCTlS^a#H?@>Fv?)!W(xpU>=`*wd5X}(RkChe>j5sq1zrVoC#vMS}MXe z1lAEvttZ1vf}6j&G2Ba;T``F2h{X{suRAI=FKBC1;MH=6;%3aiIw8BN>3b7*_VUhi zp23FB3>1zs&sF&@5pxv$uHPTqN8p2fMb57Cy)h5r2&yg7c}p zOcUGv3h#`*p3Eu>U=2Umjo|BZJGBMA*P}_JhTAztV?E>})Jc_}beww4Rb{OFJdSgA z&?5j14`#L?q42*zIIkTqqVWRPC5 znm?)QE=e-!_%2org7Z(|sq@l)bd9Uve2!{XQsDEqs2vK)Hk*FscifB$&W@}&FycsFT5ym=rC{?bo$t%e-r~L? zyy7j9mU#BZPx^bsC#B?Ymc%dTNNtM()>_fG_1p~$T7GZt(~hT$=5F;tHlkpR3a5Tv zJiN69BQV+vnkOA=-I&-41f?1&$F1xyL;Zp9ZI!Cik7i^33UV%l(^DK_1K+h{24eTm2I9&@3Zn8XKH1uAnJN&xg01^Ni;t!tv z2&dd$6_mmhMOc*R%bHir=DAX`$RW>FSWDPAPaRY@t%+y#8#Oe+XjSiT<(?0T0r$mo z55DYriLyC5DLOa7K1O1bk>aNWF@+1wcga-l$s^~St$|i9d_iwb|LeifGH)=wT=vAy z)G#%NU{;|#W7N&lycfTp^%Kl*8Yc}C%n4k+A~|OQBm0?-E|vk)RSO9@98Z?Ul}+l} z@H_#Mc)K9`aSafjtV4Lu6mM58##W(4uFF#bTn6+Wh?VlFpA{K}`(_Av#O$Ruo2xmD(x}As z4`Gyv$p_zY%jl+M*uF6JWo-iqrd~zAIqt=m@`n1JG7Q$3E0A0`uP;wAz3m6&vOu)Y zHLCGpBVMk5`Xez?tQe(y`FFB|V8F^0>THcim(h;9`R`qke5JHiQ3g^F1ZuvV9eiDt zt9?*S&1=o!`<2l%{&R7Ki}ioUg@kIH*IA1x`Yinp-NUV%hH62vv9T)9BM&cG z(Djx&yJ;a()u|i|BL|VPFA^@jUM5AFtyYq{>$-8l0sqfmACmW{tACeMi2=@mkL(q$ zS-N~d>a&e+I@||snd&jp^qNG_DkKAw;JR{>)V)y? zpZ^=rhCrrIt>6u`v%Pea&_+3NPQRH6GWVpZj}FRza3l-4YPM)ThS|o$oMLG!Lr}b{ z)=5EaF9|Hq^&V~di`{)Q2SHw2=K~2N1bSm87ElYuo%3{=KIS#uHW*^C`uE_UmHMXT z9~IijAbDL2^P>66%7B(EZ0rqEY29qerBc^fYmytgSRPmuuQcsQItZ%S*YWIpLqZJ; zuHmX-pSQ4O?-Ow<>t!xCYcTcRv2X-U7*XE&H!bLrN^zL5Q|+SRWt{0^4Ua~I7E>qD ztON52C)S0m$Kb=(m(%*~PE%u0;nuKzF+h5u!^VGZ?O4fJWsQ_S9?uW_PXcLO&hU~; z3U;~{+x|QK|9;PnVUazx{*qnyK>BUM4bQvav2+aZ$I-Y640)5S05ka?1G#~jV759x z(l%DRv8{Ww$eV8n``m|Lu6wdYvhUGY1iclFBD~B){{s~~DlTuxwh7wM5;2fO;udj7 z?)y;|*6+pJeM=-7c`8T!2hPsiM8b7e(`NTG71cfR-s{m+vR8F}{NJh9D(z4;sA6J$ z|L9~ZCE~@Sn?YWaKt27y^-MrV8(?kMw0tsW&dbAqW#UTAQ#t&RZJ0VW(|jH`duxxKw2N6uWCHR+pApbIp%avT$aVPj&T zDc^Ju;e5cZ`*c}6e!9t?^oy8y70A+TZ_=HXi3yyd?b!5mwpGE@DA$(ti$uHgUax9F zH@MLLpf9b|7(AJIujy=ku_E4mY(7@dec+LaT*0{P%cv;(u0)Z$tnW)iSQIj~TPOF0XCsjl{Ivp_$Bva5i@o-{;+#-mN#i?TZG{^BC|&g@grN|uGYQtB zk4=8pz+yH%B$gQL?kwF-lV+iPYF?xU-+e?rC~-Qz?2$t4%U~{aDVl7?fh>CqMnFgb zvq3I=WaJC55;*RAu33H|pI~?WQz0KC4hy4GJaB$$<_<*w3_$UR6Eu$3ah4EHtWvfH zK>*PpXA1#!cfhVMqgb+?o;RPWuuFyy%{XPqrXPtCGFc4N#3>GfkRAS6?J}2u7Hb9m18^4hLCWKiy zh)-;wfsJ0KJxX+v-SZuqZuYw*Aq&DZpftTHfuFxf6w6GTdVVj)wWA8YIJ@y^Yxr*s z&YJ0X5ikXQR7w-slTNI(D^o&`oS)Fxb=h2KkBMfZ2d(E5bD2`Q!4FI-$}jjzOo2J`j9K`P8=m)Z z&utu4@9R^aNOd^HpCl!X(ofdTA8*X2l4WrWd{{72ZAo&*mZ&(3&0S2d?uIEKjx2`0 zZ6VOi8}Yd&JK+rd#U3_z8zt}0rv zTy8aj|v6 zhQFk~RFLL$1UXudTfl4dZs?B~S5(JU@?R8 zHnKNuL!DI-eQMM3CQsC_MqVYg%-`@`XSXp-n4R($@AnncgnQz3D7cuFA}3p(k})3H z*5MCi9cWLX>|>7c;b5+S`@-}CZz#$I!OHz32Q0JOI`*IlR{!5RN1I1j8&rYl{WR`~Y*n3~PwY+QMM zG_^v#oCDax$ushSgYQX1z?c5U9Z2`CYWD4RymNErxJ~A1^goWrC%!AAk$blURVqD; zd#7rK<7TuD^Uz<$!ahE#mM3$y68r%gOzb2}4=L)Uu8VNU6*z84(Az&}I`{XR%g@)$ zre%IFcLMChkK8=~%^Wq>M}8SpIR1MIgtI96G}?WH#?6d>A1}cw?is zGqp~7(qAvwPX{LdL({F!J3UOI81!u*dMKvtV%jS4(p^e6ygGKE6X0|i5M5{|`1|5e zeT;iqgGATDIPwYIHC3~`;`cBdo%4X`*bR?|MPC$iWPxM>(d#7;N8k%yx3$|@ImoYk zjX0mv?57Yfn{aIUXeAjEbWh;)))H7J0<#DJI84^w46o zI?1XBSuS9jFUdr3h*ZHkC6$28u1b55w-X=>=HNH!>K=!3Kh&RUV8=@kRx*ESTy}t! zXtx5Qg#~y0km})fBGEYN9rZw>N{zE_eRp;PPK%+^r6%0K2tF8;Kup2)qM_ZgN;xH3 z22~qjE_hGRdIyMw7Ghg>v?u>79l0~GUv%qK%ZqzENHui(pKEbS2II9HYMZoeV40^6 zzl3mG>>PX9cUj}tI)tDgIv?_89jn5I9W!3s68vLgglBl8y00T6<&E@;+zSjI;{Kzo z%#KDSBp|xQk@z%FHu(I%t0G6;@WxhaB#w1h)!pjzj1V5;%BC65fKy}4I}NEOFt}1S zXQ3oNte`8RQS*L~qoE&4Oz1eUEGrhR}~RajFE_;=K@R+++3{m|%ymC&??t%anF9_C~% zyQ0f(79RWZnIQXvgD%L^c+X)?+Pt3UmRR~Tp~OiWcIZf=$`PFI6Sd!ffj(RxnUQF zZxq={pr(f<;HAsI3-Rtth4MI&qG?RJ1YHdzFz40zuO~gHxSgKMnBJ=Dj8g~?eP>bu zv9j>Thn~1J4MY{koWxFm%!|E*yXe7SWAglKmL_wu8hTDjMmE%#1yKZiX~cd~pFMR) zOoN|i4A?-=g}uAX)o&`q^~i%H{5Q=syo|5-=y-fp1E;x2y^4eWjZH8lsFWz`T9w47L>=X5YXCsW{?D? zZ2^eyOmek|&9|5!%?WNKjE-d6pK@T=ZeVnc*!wlQ=91{3#1b?*LI9Y=7S-g6?)FKq zuaZjN3&?E`j6jFCCP%YDhRgZC*x6xKtekRBq|WE!pQgYsnxd<2Oi~Fok;U*M8NNv+ zj<(j4hAEECqL0O#AkB9&J?+}jgG8z&Hg8JxMLOr#8Ti-D8`2u5HUO?ww`tl<%89C? z;FsC?g1dGXX)iB5w*w|LSs1kXQ8>-N62?}!I69xXiY0sXxVR7Y%6emX=~aOkjZDF! z2n`fGa~ho9#lJ)fNe8!u71~$2agnJGR^EfCSnYolzk5=)try_{O?p@ESeA|Q-vZB$ zwWi=EJ9dYBQpiVEk4$gMzfpZTu5kl3oyd=gCZT1mR2jn2$uB~Sb9(ATqZiueBG6pg zVZq%WJ)u;@6QrY`wtBBrcN{oZ(cu&7 z8<`7iFrL($UCEl#hHayn2$VCHwwE>mJj1WGV{#_A?W<_V?5IITW_NO$z<(LtfMf|5 zp3+GPHyCzVv(mm(Ud~79)Q>h6`PVD-rp^FQ9LuCSSBkQJ#7 zSX9N<02tye*MAy5yFiPOJ(Qo0o)9L71S9OkB3gC0HKtC`2bja~a2z%lYy}OWtTJ4yL6EbDCce2+zLGEi)$RdH zmebN&;w4Ci&|%Di7=GQp+~Eh&&>zn=gDpq#1Jg1sjfvdEm#_#=VbcM0pmnZSh8LVI z8BsoZ-z;w%>0RxhBYWwTA`p5IsbW#dJP!Y%lO?hWLLVEowoy$pP0*O$Gh~pBBl(9* zC*pFr++Ub{dSr;AH1}7jx##gdZa_W#jVO~$H9uyg zW~p7h;dUV7DO6@4pm)}ak`VHOoRU$~UCz|}*|=}_b;wK($El1k+9I`-mQvGZU+gKR zIw0iUBv7n&-QO&ksa0vFz+Xst4UvOj&SSV&xnRM=QrX*Q4DQhip_U1wli}Z(Bc9c= zkP)&s$3*EVT>hAM!+6TUs$zwKy%Gj-OR^z>$9ulRj!tAc}Iz$&t_rk@KlYTp|bZVbTZL)5{6sYBwSi;B+}~)>kTC#`RFygIe4}&6)ZGKmi})R04Ku5 zF)==wF3OBB8ASvSyFQf0;WlO;u?$+7qJxf{H6n86TmZ5w2_Qg5k5HIz;* zLUXyn-90~nJim}CoRDikRpB6X#7jhPTbxp@ z)w(DcO*SHV)K4ZCFSIXiYg&W5lmP~T_%H?Ga$wt(E8S3)S!$4u0_iLs$ZSXRj;+2& zbV6*FYh<%9TO?5HtAWQKGrU_D_ozU$MRdd2x?SrS`|qVZHfS)8T3@mw&F^qGr`fj_ zH;VPHc;Sp4u?zEXkUVST9Nn~7c9)3Df%XXq*I-Cy%9`bxL})ihW7A-f-0GZe8|~&c z?rppcn%j{yFFx`fXf=w89gk*Ow(6ilDYDE(qfo5-T}u75?9>g zH9EsUBuFkrg#P1Ij9Q`Q8+pMrAZY3WI}0_A;(+u`s2vZAMIY0uhSakCCL46M9@K4G zao4P2bM%kuJTv!2@UBEKal%qWBH_528poqejZ4tdpR!^e>~i5%nEgJFIqGDy)BzUV zN$up7vJ@mP-d5TQ@P0C@!nW5fcrl+tS8E?WuPw?2=ka;Ik!>Jsj+!Y)cdGWR(5-~J z@YhoX{>NSnyYAX1m_5y!rxcD8nY#I~y;gDh^&x2_`F@E)no21V2v86RPPX%qQRC~W zG8h-Hh#@XyjcLXy>Iur3*@A|@@MG*NsZ)AT z%b_s5OKjwyVB;O`3%tMV&B4%r@l2_h{R=p8@Fv<-x7tL?Iy5%Pa<$F;)R4wuYY9-J zD6)aw2EvwF*`RtBgZD1C@foB*I3Edy`cTsc+G)2@5mN6LV{c=1di<7N^!(*mx8L0QRUg{34zyQBC z@C`)lXY4{+lqAEtB;;nLNx8rev?f>>$U^&nBT+=48pjNFL_91N3k;r~geOS0UiqOV znfd@$NY(LGd+c%eVD(?1!y-~9D6eSsb}}Z26W3$ncN)) zwJfQ&W@g<3H7B!D+QV+u)f@QH8EjH|Eyv`b7osZeE8F=7rUx5n)F}$IY%5}7S4tGh z=<6S4pHn1hy=l;@x@Cz1_QomRDNRdR+-T5m+CEd`x;bHE zMMjpia=B5YZF~-XH~}1;#Kt_Ock6Hk>2zsSl0SiEPP_-NA&zHd$A;QbEh8j``rKM) zHB%KS3XgP~5#34`()Ez_W6l$~UrcAffj5;pCa31y=x}NCb*p&@A^#N~v<)rj@-T>{ zPD!FXSF5c%%F)TRZU8lK!lo%vj4@uYiBW(Ubs?)-d=3TRW3`y-xdCSQDa84?lh0k?7n^Q)kruUZ;m~ zYYvHo;+vfHz?aKZ%BQ!gmL;QbDV9Maj=K5+HVW_AU@=79PNbR{J$<&>34_vc zo)sf>{Q^Tda(eiO94h5J(oBP&%sf$QZ4vm;a>TXGEiXzouM9ofG^ByeSl|@pVBZ*m z1GuOrhJVwVw1XoUwv;`=5yy~2QmSJp%0gjuhcaN+cc*a6Vs@bcdk+WM(8O!;*?)p0 z__RCEqccM=0AW?}vrZ1F>zPi1W z^Q}7b)u(7H#NZa?HDW=D)Fo4aqixaVyZsAP-&x@FQ0XPmsxo|Tyo6uvqAT!be@{cY zT*Zu~$d22dApOt>3x_E=$^effNLMXhf_ZQrvY;%|kiYmQo$L~T)Ye6LrqQw!a{CrT z4&n2CvZi@Ip5zN^$noVu>=AY=0du&_tpOu^*N52LfDs5Uq@La~DJ`)Jf2JBoiZ1PkF5i|2OJ<11xQ6H#tF&`<=dOUB1E#90do9JQk~b$nRoY z{RVf1GT|cu^UVgwwScD4+Ro{{Oyi`U(DOECPVrSVVFAmHiH|A1{xzj)0Lb3O0vzv9 z^iq+Pu4v^ca>O*AbAB4Roup5HqXfUMJo*R2j)3ym zk82Z9`SNwug2PT~~hqN+`+#CV0=OI=-lvB=}{ zTV4fCXqdl9G32d;EhIHR9LxAcG+TJKZU6Eq&Tr~W3&;MI+CndgF2yOW#IB3tbFw=! zn9@p%dhHv=_6+)K1x7-e)=BL>+<=M?&ql}%Tg}+S2!+h1fG~;h29Ht#S%7GPj70&0wI5Jh1WeNV9D`4X(mPn ziPD2+sTI}xl7j^4u&><38MklvHPF`v$Q`OhyM zQD6Y{w>4}iBq}Px(PUum8HlixK2u9Y2zrDGkbOto4OWbv?oQU_`~r&PsGh@)OJb=d zT?Ln~aT=#pKf6@%+jp0&=d@kPZ8m|g8}FkRf1aC2+qZm?%xVQB3~nK*xiYf`BA5ZB z&cY0Pl8|?h=4xAU9tf40JYny9`T540r=~y%?L4i%?ZOXm&pTM#<3P9QN2w^n?JK9H z(%qL6?}YmffS@1Oe<&vUqUCRjGiQAVqmqHO;mb;;gAXl55(`t&h1T6ns@SJb(hw~5 zA68TbU)r>raqjuD5<3?J?3Ks4fChG5fltfJK__xSm;R3DejIT)o7|voYPZ7^Kb}Px zx7m1AO&ELhVhsVRbJ0xHM}3VK9l@JKv`a1J&A_&oSb{LU#bW&)_#=cfEx|+BI{vCo zu2&VvhPv~e<`Bsv_bkxWg4zB?or;M8Lbo~x;y`|(;x(-KE)VH`nKnVdbvbt!Oz-`V z8Uc2l*d!c9|5jmO3E1z?0ynwdu>cpX6Ki0=7gbqvN>+JmqTE0EK&9|H zj}&=O+FEo?qEDIo8$%$462#es&G6X9d3>;u!QKzxXE>J@JX*7ax;3)x7da8?5#;lY z6>!-~OBIjK)4INF9aq%-$mljIcwg=O%I-`+|iNF8wBi zPemOCTa5{Z9Kk0+-mBS({^U?f3C#iK&LfIdaSU5V!lx>7UoU(eTQj%|3}$M^{Um z|3;Ku0scK3cJtc0p2JfI+M&$uJ}=?@%%;%(<- zYD8WrTx<3^|L#+T;A2M_oNSkYCz~6Jw%2AVnoU;F?>YshyMJBdv6egblzh3m=*?IU z#b=t~Q{BB!Wc4*eX~|0IWSYI;usl1kux;!l^g>gJJesF*ICW@1m_{0U%D*oqe2JRBsCe1oVc=oez?mXA2KN#3Ty#E~H_)4z-stPgxTu z3?jtcMPycTl+|d(J_r*cb|psNUz~WKFDwv9N~MP<+R|d`#ypxKaptbZPO@-RL2btL zgxvX2OF>xEc$1Y+)*tC?N1n1&?{iIo*xltEaM0R_BT6a-B-5Q+jKYoa?~4b`;7rvL zb~}5f0uwU;Eex=-y_+YO)a)^ATl(ZbU%uF0Q;ZMof93~&Yl!}~;)YdC?);%|%ub_k z|;-1Y=C(=!pT6UDqehRTl%lJ)5n4YA@cU;#3m z`tEsmnu$TBxS${)A(T@=8RQd}i4CCte5~+m)rmOVf79h-r)-7%jbH&v{}WB8xHK(! z*nkMb#aC)>ULz7_qE7|bm=zb+Z`G@b@{8wI?L5yFj5WJ(FM!yX<**hZ`5PKD>s-#L0m zE0P|%2v1;wS3QM%_+6LI2iT`11!yXZCgS8m%%0OfxH+qexiuw%#$f=tGEyjI$w(3P zyBzf)M0>K>s7_7>B*@OzC4XXM-g*xbToK$54Oc3pxzr^+;X*`V4&53VR2y8?=OTXP zs;gau>Ywklz9LawugR{3*)A%@h=N87Htw=#&py>V{;p3aX2bd$+ZDHHDV`&7$YpRS z5XdPyaYW)aXKzXUxFM8Eu7Bp0Y%Ut{_6%O%DsWPc8h=Zeg(7n|W3xXw%b@1+r<&mB zBpsmg{`g9&BBo~fVNE$arFReeoQtNknvPRS_w)lN12FgJS=mwezMH44mq6|}2n`q@ z$H?G9z2(tDH>PCB2cO}fK@ck52&-x`7P9IMt=~;FUdY~xG`ofDL-x0G!Q@Z~f=stD zo>Wt1HhDcr$G4-7&sS#Bu~Xtuda5Hu1Ab>onr2}6Q$|Bg{A6KbGDFdF!QcX+*H&NE z#vnf<=RHb8kN>(<=M`>BxfpmGYNXZpNdS8t4*l7do^rONK&%g+2~6@INX^96vFkNpY5xqKvNaPh^1g({Br}R336zwNB_ZaCYx2N6*aO zQQiM4zhN-gp6|3jvlfeu%6HS@@}dLVl~^`_9;BW5`Pq@uAa!#cHlZ^x)8a)z)c5E4 z*!2{k-oBjbt`N6C%PFfQ8HKe9zCdR#q8heX3S~hrpXN=nv^oc?9M6i=@Sht;Hwae1 zU}`kXeHKgpLUivUYG`3fWCJ$+KGsWu%i!pD;%J9+0r5!3Tk z%CEzTOkWWmZ8K7ZoQA$B;WbNmOhjlH*d)DFl-(e~sEoC1r4D8PV=*X1U$(St{HjT8 zl2UNp2A676$`QYKH)0N}CC-cY@FJ%hd_r8%3WxG*wDA!qt6e%4hNE8LbO~kZnXAda zdW`&gV-^(8Z)4OY^5=u*ULO1jVZ>CJW9;KY-n%=U7s6=h<|`|Uw?!&a33VOHvpbo+_W%l< zT;hJ0K?^cL5aeg2g&2UVM=fP#DRwc=9tD?$s5<|sX=cUuE`x}Avi9HON6@{iNvt}H zx(wSUp1u9l>$HYZ5A+;gb04H?2`=+^W4x=A$Y&?;fjK_~e38VX=kt2x%xICP8nwfJ zuD#goO84hSDoCt5?YvOgVrYv*;uFNtFW`F3q%JONO~5OXY_7#dq3Emq^lwILY9Hkv ziKb>JyE*xeSbenmFRQ0UVfHcqV4QLu$uyTPZ@$0CxG&5UJhAHyWrZWF1AqOPJS+8v zg*22w?tx)5yVA-q&=5KJzD{OJHAH8Oc7ZeW_p@Y&+p05Av6F=81%&;zL11~aEFZk{ z*=Ci0bD~U2dhA~C1orbNNW|CJ2i%@X7z%+s?7ktU>5Rs)%}=DY<)9iWsF4c`^5Z@B z!fws$-^M+ZykoU+^aIa9l_ER?;>$xKh0D};^@Ak|<5N5(VYa8Lhw%0b5; zMi4cYqtus~?=JgrMG0Suij$Heq5$Q=pN@d)f&o7odn(jQ=)AkfIBFNG<8ZHYX-vnD z?-{h6N2)q|JIfY9GLmJNSN3DgEoYhg91G;k_aci|rD>^4xn}}5ZKtK7>*4n=%(JVx zxNq4^Y7lr>_pasnZ{A1NnDCQS5n4M9LJAJ!({Mg19Umm^d7U^YZ8ima0vn}@9t&e%;SM);-pA+ zlK0R9*fs@R>V#D{3Zk?)FdnmGouId;h^*qDbn{iWMNm9{d6H|#p|HT=E7-6{{iXZH zhMUV?uiKKBeLaSKyPPR3(0Hn=iFM&eAyhjhmC7DxAP!lp4GS?#*p6J2fySdgsV?qp zI2~T5R>oGJg#haMo9zI*B$(ZkP1?$GpkdhPZjH}QBhT9}B=T3X$r{l^f8*I*($M>? zg5566BSrdD9oRVp7mL_U!F$oQYNHxC!=g=@Zg(lJ0xvOiWhfrce*&PstV!U%Hp-VirJ+!QC~M* zj{Y9^#Ki-QY_H%4k4VFlzMtL8LcEf1@Q_~padtY_R>=|Ly2dDuC@s~SL3e$soet^W z?Lo;$Tn9BH=Enx*x`A7GG#S>Y)@5J=TI{`Ct)Q^InsS;c2dX&|1jsUhyi*1*Mx)rC z*|Eav*J2|pfJ+gS;1Q!8#8ew7`Kw@Qr+rj_O?;0*89o!PYh8Pjz7SU1^z*gjQ zu6hUf`PJELx2VnZHuS!`+Fs*c6R_pddVvQ=Gp5q*z=4TG27(4D1)Ai6ATkC*q9TC; zgF$t6!Xjpxz3(?7K|tlma`IZc1!9f_@HljhAmd{0ifu4VKf(Q@;B66lq2th-F z`ft_-{V|K?Re;bVC_y0Rk-@AA6P!Fq5X@7m5pj&~0y?!%?<9dZQy_srg2~_g+dV80a2gT(NFNFhT2`5nZQ2uI+;!@!&YtROIwU3+exM8-~R z`xedtg=HK~hy+$jw7 zdAS9gc^AtM2n-sa4(0qua_3o;j~L1_;zoY(jx!u+8I2Hxh!f;D=?p=fRFC;K=oaeC z5GB-aVf(s?2Bj><#W|3a`BtodR}nlgOw_S$NAi3w*aq2aTHK;8YG^gQFcgm6GU?IgO9 z2Pp_aKtu4}7t%+kDBl4P+$Jc&{#$HWfg zLQwGgF>fNE`?a%t$|+p$K_w~6eE%u`{Q88V$g)dN(LO=+-(*!45iig$FflP;kRcNy zAT1RXB4P+IurJOj!O!2-AKaC2qMyH<`~4wVQoLwDU*#d$y#U>?GsC+5A6pYopx@pg zhRd-@C!n|fS${Y*P!Y#Iq2IZm-<`)_OMoHWFX!3s9c-l+7w@lv>+kHZ{~{7*Nb{T_ zIH$tvz_wf{!leaA!mq9k%&%*b`#w`h_|&fjJ99$zg_77N?{9M~lm~kVCtg|nfDryq z%luxsljvQH(9nzWZG@o*ybur=*pK3^#cqKD=UXITM*CY~&~fadKV3~+M7hDxm6DDE zA)sIZiI8MJwl`#S1jw%-8#r{Z*Pj=ch%7?P*g*$~^AQB-4;9-&Jt{h8H}ewXxd#~y z3{n@iIp(-vLh-+o`&pA+@5;|9I4b;$@fP9c8N4WONv;#; zz0%ZZiXxct^lx{yn>nE#_X^+gP+i-{>jlh2C7bF+W#=hCrRzLNZ`))`M9EUy!t`0) z4koQuwV!fEYUq0S^`ecm<~552X8<#MHlMNd4|;?LWS8y6a83>cQq%^5Z_r|l#^mk| zNMq>tSPOchD|SD6B6aaK$?YtIP&6x>JKVtiSmmqUp*MBgjqvmw^Otb@R-Eu+-*k4* zUdj17!Ocj(yV=Kf4(pxQHY{;vWr>)3*laC6sz-cagcXI`ca%t)NNSby^-+5-~P5J=o{-f*J`P%6J?4%1AJu(! zvs0&{Pgbzko`>XbCyGm!sXNAv84%v+V!#5KgVA2Yr;baz<>sqoo?Vbz-zlO~L@?_F z;(Ay5%cKfe9gRNyR!N}Y_}#4Gf@(#;)MY6D_k(>7aJw2PO1pLe)iQbilVkAP@JpGl zeRrE)uoIDi0LDMjz}6f8(eMLZcCz{xc~-yks;iTH?Z&$RNi7s1W!F^kOhWJe#Zp49|K#`sIQU-W@dhH`_W%Z8V+g+c5~KJ7l&eDrkHucLH_8+fN z<^Ji=Pv1X5-Z<#x@k*{~lGeGKuw#AKq$;L8932Nu%CkJ~#zv8KJSMbo*`2`{yrSoC!(5-1u}+vdpYqP$!aPNskk}6(dr4<;lwq(z=qUhra5JG~t5ZbOfqRUd z)9F)oMgZa6oUBL^>0AUCFiT&PRVkG>Vyj2*^^%OmstAC*x?ToWL_wp-7VYA5Cq|(*`Ntht?tT@n$8+4OQ0$x;kEA z!|Q}nXOXe6M67E^(JNl+>}Vyk%aHGv=`KH)WyhOw^ZkR}t>$m5Rk&Tpv=@&Ry}HjL zu`J$Pkdmig>xI7GB0t6xV&2$4ZNgmM=WlLLISAcxJ%mjQTGvc!YIAO0BC##TI|5ts z=Pt`IT~^Ha)pEY!CuyiG%lkK0DEcVOJKJg838hJ?6sKiAQzEFsSQvsyv{|F~1)##X zPMQ;<&RMktByx?8v7!&M$=so3VyftGbfz(rWX_9$lTR0y+&SJE*J(PUCWD^|s?g6E zs8E<@HHnIq>XEXc$}cj5S&aqJHSTB0yZ35#X0F@bATe6VM?1<;QPHb~5P1x9OIq5m zg@8~^5C@~swn+8&7nnj3eZU+h82HRjqXAFjxf&I_r+R*vH>u*7bW?7D1W&DqiION) zYlk-5u#s?Zo&L4^iW<|;beS{i3|&7?@-Nn%ik2Q1!^)Hv)Kr-*9JYQ&9q|M&ti~)2 zUlm!|jNdEK@0%q99+!(m?vX<4e{O&U0_4_sG`EDt83IRnd#+>baY7juLhs7xbympV zlv|>()ctlk?)UG_4v7-ZqfeJYI$BmgY&=R=OI)3Tn-6?&M35m?4TyA zl|m3!zjDXJJW{EPfDJM>8`m)CTEbaaOv`qZ}YwgRJrOoM=GPkooSMz1BrL!C#J9-7zkyM4>kKFO3Sk!vt z3EJCBm#H2D7iZ>RZs2GFhm|URae5784{AQHdXt6n(nDnwzNdV2(W=|nE>vfR*m)21 z@Svb*Ocyd`$D;DSlX3p*s6#t*Il||<-7mh)%jjvctEf0P6^80oS61{4MF29zEk-cO z{*2oRDqpLI8waD%p6dV;MPDjrA_~LcG~q13iKU9)^d*Vg-E@Nzpt4m*QNb#HDyi8= zky{ESX0TbNHs$@Q%)jV6Ri4V+U?94}IIBI-m;TK!9kw3+h?-6NvEfP2kVJgF-l#Ee zMH-8BMHb}{-kd}t{Z0B^wo$8U&&t0u9_+iVaK3=20 zbG&w75i;ej&{IKGoM7L2`$B*@+^o6{8SN;>!Ap(Mf3q5@cF7%MON}5fWpkd;Oj8Qx zeX2CEyrpng4hM`twGjgT2%lwxh~%jUeK2B2?u{C z*2mqi1<@J4^h3w`FJa6m8b$AYQ#x^AWcHu$RiAA@7%s1;s1P^ycBx{K?qJQ90_p5i zNu-}c;XrSB03}l%%@4n_`YqBSa0WL>oU6z(#be7%wIH`UQ@y%!5f%rfk&#*J2qdzSW;51g_1r6VW`~9oFu#aX=zV^(IM2)bYRdkJSE<+o z%xIk7wb!!<$wE|Y3M^mVUVx8NVI86TC)NF~_k-Lxu2{6g> zOW9H9=C$2teZuckzQxD|8+yZs{oIq!D>?7Ph=VgJnB=g(gB1X2M*X}Dt|lKf5KuY3 zJ=>Izgs?V8eoA0kR^rc1!WW*b?xG;85#FYXG9g^k^Eo{H7}jyi`*0r!mJDV0k#E4} zrah0EKz#s~DX97Y3iCgQWJl+plO3UE;Dajox2VLP${1GSIT(?kh60%AW=G09_y*pn z99S&=#FrHR)v2omnpLRvYU;3D3Cg((LlUe?DCTCQb1?xZ-H`7cZFaAE@~3SAOyQSO zywklJvsZAy&ND893$MOq>Ws*!uf8giVfN@gP7TOC#%LIm0Bw0h)L#xaAn>m-)!hVm zW6Te(eTdrY=4O??(@aXKEiM1U*gFO1!bR(Qwr$%^c5K_WZQHhO<2_$> z*XceNe^vM0nm6-$Ry|`q>8(C=BPA6>f(0Uf)XN&9 zKvXi}TX0ZE`-H!k^Jd*n8dYVKRN&^{#mS%4WR%0$rD^6xHvYkr^T&k*$kHW|L zLU;2CGug^XlniEY{7LcUnDyA%=6$NlB}W}n_YogUx_~e!xwqc-Hqw^rBy!gOOv4-pvE%9qUQRt+aDcUx5q(hN4CiukH_@n=7j8-KVuN#Rk zd21UD!YiA9T^9j4O(qvcF2e%dl^Bm;|J6npriTdJ{oL0JvjVa5oOhw~cTE+}KPS5;~B zlEap^U?%+-S)K5)PsW_#Ev~!w#FzbXscSU{CXw`}5aa-Oh_MKnl73rCnaQY|szFO* zT1%kpFwVm0-TO`fU8`Fy>;CLaJXMOR3<}djKw%GJ+Rqcmcl8g<{ZzkQ^OwTi?zfEn zId#Zfe9vH>o z#|s+!ucl895+!y<*!Zd9FvGae{JV{EARCM;=f{M`%>w$dMSTE~2P9zz1jx1_Jv=!} zKZMrEkvrp@R!KPc1&(*Wq*>i5>(cjVn5KiRugu1@Hi#K!f9M=R zU!s>1MoShb<yggMM>n8^N@?? zJb-bRn8wUrIZ*La>9WQvn^|eEG{CesM~7I_cs4tDnW4trE%W;arwd_9$?S_dF`_Gaj>$zwq)PC9 z5Pyh2rQPp$mKP8+mG!?V3Gg_pcI(`!OYz{ZQtx(F6Z=>jTim~|6lt5d1|{ir5?J_C zu95NBek!O!)OuLd-#AGp##~9U0`X3$hq7AUA#X|F6@$25V||}0^;ShNqLz+^V|!T= z>Vm3V2Ixc43lMx|+X!CghJ&Y_P)3ed<&s1F*`81*9?~1xf}7|Mj>Y-9@})VlW-~Lh z7m**I6(1p0Wg$-TW3`Lgh%QBc^4CDkJ-o`ZW!-GIE39bJGal>G!lnNW3o}6L)a@}K zOG+>%WIv_aSDopq5av(A@^wr`fMKKZ5(@g4xJL=IqSP2gnLqb4ZF3J24s_5~FtAE_ zDL9Q6sM~L`N3bqL`k`e&ZuqJ!a)#A1$mQOz$G)RFy{cP;>qBCc6P@kwQ`xDI<-2xq z{ugJDvoB9)gKJ@zlm(dac!CbsO_;7Pdt|F&);$vGIvkIaLQAyBH>plnflFBa?oR;GX z_RR)jvg;nLG-)=kPt4_ zb86+QoEID1y*ryoqKJr!lDyv8A$Ml8R&XwI-w>~4=Rq!DR1-nApYpf)#l!jMlTGg< zfr{tjkUd~8@5B4*Vg(PKQ!Kl{3VtSJM8)}lV3Rz zRT{?LV#o8{++7ReH-^tE)V`vj;@Ni$&I*%%i~yd|-2Jp>iq9NPOGk-0c{T$l{rC%3 z>%76KOisDc>A+vzvlTrtmH`V z5R+j&GpH<=$=>nb4NQL=e!RIp)V;UgY|#b}F*^6z3dQl)hlx+Qp0d-&ja5cD7ACs` z;Ysw#A|0EQ&I@_*y`0&dr6}BEJ<|;l(lg=1sTb=GP&}^ZDiZCmu#@qK%w^e}rDkFB zW5?VRF#amTaBb4b-cB$Dol7PkCgX#2+~wi*MF3QxL3AjlAPt?zbQG#NRk{ zOaZw};#guDnj<>Gi)o^C)VDkBTI(nv)YCzRJ83zC-|- zA)ePGlE+xxqR)njNkf}A(m*}+A2z%q6KH0teci(L`#eO};>b-|v(9#R+KwOLNM#y&YUqtEfo(GLWJ%#E~PtN>_vsW=`xsY|Y`&=2QsT{2AZyPO=4=#xB zC8IbT6IurcXGdtn;iC3^zFF{IdA>SmrG}RsE8?*jeB0_JfT)YpX6T@huYW zCBv?{5Q|^v=|*Ym2ifh>HhIKKsu2{HE@bP9V$yi4_)N++a(8^)&eE+OpfsN0pGOw8 zmZ&7Rx{`g~6ZDg#&NGWMh)e?5YtD3)#xv?PlvKEojemX!4*1bbu{V`c3z)*==6p*; zZEf@_!S;;LrsSxm3e|?~Rjw}6iKuxh{PD)Pwa0z}<4x`+I`skalD{Y!?DWcgFb}P$ zPN(O^1av?8jko5;A_A%&I zYmkP!ALDOFBq&sh&?nN+I}X+bqub`}c3BkXUJYK3T*6h}5b0&1Z|e&w2zmLsF-yFl z-R|P!x3pBceqbldGB-j-cyr?5yJY4<28&obZk1_wuKLwYBR#sF1_b*W!qn$ohqGu= z5*9h7aHB(f<&yq8H|fG~3u!g@=Np-OldG&wE+8IP0z(>%g`*ZpnjnD|&L~(b5=SUH z)=4u>0$-VXy^EXol%rboH%T}Aq_z=l_tWW@xQo~*p;+~tO4|Gm?O&74DotV+)y1YM z-yd+YIv@b{R0Rx?|BCr8UPSAP6E3{zWU!kAW0ol*8e53wfXZVL_9T(Sz*@2Xj!FM@ zzTzqfGWcC&Uh011?WrdU2`m^@NSm2AT1+$JG2gz#Uv5;ieZK;E>387QQ!0UZ>A8HV zZ4ZCR7)EQAQDjCw1YC!pAgVN@?XOD zEpu_Xx^Z~Bw=knBfbm$t6<3-)UYJ8PqR}LpL8pmLct1v;8f+t2o{LeTz(<6))q#6V z|Mv@5ELWKhbMNfqNcUqF=JL=k?Ydb0S~#}V1N?I6I3pe^0l!g86QlfwaIOd$GvgYjS444eJMEr~vofy6Jum_!Rt^Je{9wV|*OEu0D;J ztC4KW>O(D(>6eM&rRlk>xewVq<611aK>aM2m%J3~BqPAlFYh>F-KW&5XuNoKB-~IM z@b2A6F((qExi(p12l;z+MxM4RwZB5;`nZZ1VThSV8rT%iv*T6gOp>jx{X}}fMgZ3q zc#_zi2J#4=sYhN;k>Byb4pXvOLY6BHgWLnJKFHx+Prc-FH&9#1UL#dIyllNRDPGxe zmVDyI4y&xd!cllaxk8oQMqwmhzPQ5Pw}Z#+_cT_Y=*6|*K}ct+^ovpVM^u#_JeQ&% zN`2HDhC&WpD~VU1yUS4f*4;7hEe^ugwB3;yd}48{8$EpsG`skD7{b#IC!-vprsve$ zih-dckFJF_!wi;<-gfUHKAHHS$p<|Q}L*K1a;4RT;6mYmkWZa0}gR84By~-1aymXtawb#&8}L>oHajY z;W_wvTd|e(@Kx^@oLS$?rjbLWhnS)EMhaFqx04xbQOTD{aaPR5>_X=8Qp&eG{MBBc zd-@(`k(*8_00wkng4*wv7u6ZT#~$|VcAW9X=QR9CdJdx3T)3|}GKL`PzYYuVxL(<= zS@g0M&D(fvpcdO0&g^QfzluRRHL}RLJLiPpITYkuaWe?Yz~93i`V%i^f?Twwo=)q3 zqP~0wg}{leiC;fLVM~DpRBwt0qx{Qxx!?W>(a!j`vK|0>%{4K!?)hDl0j~+gbC(2~ zn)3G(_i}pL!qhj3t=r%HY)JgfwHP7}U~#r%IT8>FS-Z0+4v@}&>W(zz+f0+*TWx}7 zdY$|~GV@0Dk8p)0YCR{|CV#cSeig=l3u2G53a_%iy<*u+U!0|iHvW=bP@=(Ou3Z`{ z)iE66qvgTK%sm|>t63rZBGi!uP)GA&=a`aof?syy%tbucCWj_$-gO2`KkINWwquQ} z!NGp%ZwWR@r&Ly!2H zIZ6&nDcG+Fuli;6HIinMXX9@j2o)RdmXuG_WS+3?74Hf&B%+!+<_a2#uafq&^Jvu_ zMUKtrR5Fs=VLm9YiX>!|vm+iABlo_n$MP<>bxAw{GKMQ5+KFcGqe) z$_CHZ!~RTOa&iY{_2kf}xj+u_-31C-0=UymFT!3`-Wj`j)T zP@*J0n9Jsgn>z1AAh~usc}xAM_&MUQYe`$%tNcY|ncuBtBu1o_3LXY&m4K?716jh1 zhTli2qiX%**93iRrTjC?FjT>WXZQVpXvXEOt?6i{%u?WK-vr9JvGD;w2} zaS|;_3*q+c3b3`=$xZwCLhd)1fZE?bJ2U;rK|pc`>jznedO5KSwg$IFo$~t6R`tX*MmakQx^@No}P??FotXVAY0t- z!}!i}yfH%Zq-*m+e(!d035x098T`uJGkDde(i>24sI#lr4-udR`X_tdHnI*&p>ie}h*KAkkb2NN9BM0Jjhsn7hY!FY6P{kuL+* zZ3OLr@ZH?p^!)IF#<77O8=Jv@74@dJpr5xU9>PB|0`uZfm!S=QWI&D~TOs%W`Je5X z-T^>%^tXfpdHy`VI0a4)K-K-Jc0jQ4@K`~gd6#o$@h^GrANRWbdO*Uj<~NQ&>wx#~ zCzEel1{%uYfiHoBzB$bDf|{Cw{E=^pBYz(h6a|I=L>f%YfRvZ?m9qO0pAE7{2m~A(BbaCbpI}m4(BfmN3!3it`NvCjSXh-9`_it z?zv8v*T?yr_X6NK0m#4lt9ghCD1O-&0ng5KKX-=Zcr=` zrQpsWK)W?iHSYB_;K)0dL;CCNYxw1(+OJD+?&x_>T1uF|cf)msjjcj*aKLs(YIDj1x#0y0Dt{+bTwERZSsF0fS4WRD4r>z8 z$%@#52G>#rZ`)UaLGfg=lY^97u(u*>Z1SS%bm7o9BqC+@os8an>qM6O-GS+Cs-1bD zWRr0@a3(IzrzB!s=(WYL=e^_+Q?bLoJi-tXoFpnRd<8+NFs|7${OUuH?duwJeV}E~ zg?9dwz4O7i0&{Q2`(@g52{G9h8#;GadFSg@^UqD6f96w-XO*(tB$a=U*gG~IVj(64 zBm??w8P@vs(F%gY{V_s{C>ML>?w(G)A#MQTtZS=-qbfx!yLN}vg%n~K%^|JbSee0> z^i>({ABK;Vz_0;FQ;ZV^FQo|%fmi`OwE|1}HN@-3x-8`@p(LK3tw`T9NT_@CtuEvz z5piB`f@NB@cC9<8X3Pm`%@2FvuPoS;C%8572nO`xZYN8NSE7UNS@tux! zgrE3+Vr1MTVZL#^^6zfk$d0sgLwVWLa;cyf;bci%ozPzbae^lUU0X3$O}7q0M4W>v zEpB^?RV%YOy~=-@(NvFfuk0w>Z9(a=1AjRho|v^Jwfo3jBc)SL^lTPyX=OZd#@$FY zb4Qe{Rj+JI^}aUNd7jLt4p8unkVf@CRrr8Le2MKv>;~BeW9=T4z4Yy_X7O~KAaC@U zJZ(4R+UlIeSrx{;OF0drNuf?89%k|`oiC7XyiMR_eSPA~Ou7)e!u>R3mTTG6QZKAc zI`jpwtX6KK;kk?#Dzl0jvHr4a8{;fAijjKzh7TFIiqqE(Ad-*|Yw-K)zmKCx?bcvt zdEjZxWm_BbH&i>yBvHCtQsSh~UUC=T15 z%>t@Vryy0hqEp6zWcebhp&ym4sV@pLs_wp2HXlVxSadkw#O0A~V)brhUh|DatSI{V zhaQG9w*jbbzOew#N}5XkmPzQo(rHXZxB2dPp=or z0v^H+9myvTC$}KU2D{tiL+XM|KQJCcU{mm6a?yI*c7C6V)90j=(#VxkX`RFIQ>aj- zAkEP&a{Dim2$5^pUCXr(7=5%8VcDZFwVl0gt^zTwYr=u;N#t?(b0~ZsAA2#mz@ZNz zg&V!f2%0CE=`~q;xImZ8@2D)MUf;M@4LO85wzQ;##$_hv(_+??gCt)@HBb1efsi9a zNiGB?W^7et)@J7#^-(t2v88LOqNyqP?>|o-=h~&PeE-FWjfZ&ZW9b?Xp(A-)iPC)1 zE-x)!YY@V%pm96p{-3jQ>j*3)Obs%8w2#IY8(vQ;U>Z&fm`CeoxCu26n+@e&Ga{_I zwZ)bl;_M9W)UOp)6kk2uYe{SLVG+)c6x1V7GU@WSRNh$GcA>4hTs1O@R0Lq2q(4E) zb#SwImtrCsEj*~JB=xhSYV@eKh8^DF2&QTf(d4mUjS68Ssgvr;xc-+Z4VWT*tNHsG z`l(gh9FM;KV4;1Yo&5P1I569$)L3u}Ge+vTDKKkNb%Ise2q{0zUcH5Em`;hE#{R+M zUGp4MnSg@^oZAMW6>jCA1_(KCsYR{KxEcguy|f*3TWblo*C9uZMSdyJT#*^qXODES zT!;wN8rv;uVuVwnwba53uVK@)$B~u9x>l8EEw2$BxTSaGrT#_Bx#r9?V{^F{*c0FZ zGq^oc1$&XGkbpK}5*3j1*tlEIqA_fjn>wCCRAo>Lc&3il6cB>%>bnaNQ$5M}dW2VqsQlOX{fs z9Wm!j&hlvW{ey~fv1U)uu`m8{F|}H1C#6K9^PR=%x|2^v_EjIQ0(g{TN0e&HUUsU` z7BbMNkxrluO$OqXG}|$U0mD4VXUMit4hM)k%wa^v?u5(!}DZ(|acyfw3kxU-Ma z;Fb@njdOGzBIR$0XauHcu{Dgfx^C%U^}U^gy~?|NINT5cDioSEQ_TXc=o0tm`?Y@d zE();@tBbv@NlZI11@16x?V48@Uy-xXv5~4zCrv+WOp30^=Je{%E!`$Aa|;>gOnW(PZW_I#{;4oHD=bE+ z)Rv}P&{9v&5v>|k*(%o5vjU$9$zyu(rp^wTx2P+$n^Bj}-tC}xFN0+;{v?{p?y|da zg9;Q_k!C%Mi@lsXr;tOlA~pX~^Pl{pavc-3{Ntv!vq5cEeMgb%#6tO^j7x#1GE#ha z(wL&Mi1g5S#$CL5AtTl*w-$8l-{2ARTz(Jn?7JfQ^cmZ-nf=Uf!*8)}stR5;ieQDv zfWNW68862MkMzS!Dr>B#UyvRF;@)F`t<%^VO`D7pHE3kD z%D403q%1SA;-LUL%_*g4e^)EW%$8GnAt;Z!?!ip>GwA!M?=cCl-HeCG z5av~}aIm*@!ncgNp1)y#)p>67!*yE)ivO>3o`K`y1?Q}|dEmG=DoAhJ){Nu3>!G6@|5Hwu+1F75`n zOm`3&&`QVaJ#@jTk_g#>9zN=gOOsa|bjSm*j`2W*8uicJ!VR2~BI%sTlec$L{OYYK z^1NfAk)>)A2?rtBio(Jd?sI!QY7=LLBn0d~%VklHim0WYe}>kY zsb{-tDD1Nsm}$p~iQiAQ_Q~SSVQS$66Cc*x+A9lPmNOK(!{m4FXZdO4s<;qBEq2*L zl=OLtwLi))HalUfxyp>)pi|*#yTL0q47*RlUDWGYGxv<(XCDp5bi&j1W@g;&9Lb}i z`9iYkk9upTX16Mja_zBW7cq`1?)*SM!lNrP=`L5_ivV>ci)S+)^y`0)*%ua+vpAF8RXrvWkl-tFI zxDcbYrRC`c9yr{Nyb@vzaL6_PRvsY*mHJA^&=`@nxBRfq^h$NZiQCdMXe5V?@nK6UjehQ(6BJOhnOzVw0HlR=X0IZXQ zVFz{Rd-Yr^H~@6E7}v|a#%RQvwk6HPus{=ud#+bG}GTK0U85_Cp)#0BINhUY~J@REs8 zS5?l~nyaqpnUB0_M*6Ht*rIMPsSLD`#aFJTb5|$MWqJJsEtMAfW@g*K;D z0+?S(Rb1@c4BehW5na5JoUV{H^G!#X4#_5swAL}-g5$83gcok%0A)V;Re#SfYo#%s%>uou+lt{pSHlhqVy3 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 literal 0 HcmV?d00001 diff --git a/notes/python-overlapping-ranges.svg b/notes/python-overlapping-ranges.svg new file mode 100644 index 0000000..8f99ac2 --- /dev/null +++ b/notes/python-overlapping-ranges.svg @@ -0,0 +1,1418 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -3.0 + + + + + + + + + + + + + + + + + + + + + 5.0 + + + + + + 0.0 + + + + + + + + + + + + + + + + + + + + + 4.5 + + + + + + -1.5 + + + + + + + + + + + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.0 + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/python-overlapping-ranges.svg b/python-overlapping-ranges.svg new file mode 100644 index 0000000..8f99ac2 --- /dev/null +++ b/python-overlapping-ranges.svg @@ -0,0 +1,1418 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -3.0 + + + + + + + + + + + + + + + + + + + + + 5.0 + + + + + + 0.0 + + + + + + + + + + + + + + + + + + + + + 4.5 + + + + + + -1.5 + + + + + + + + + + + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0.0 + + + + + + + + + + + 2.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file