{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## ThinkDSP\n", "\n", "This notebook contains an example related to Chapter 5: Autocorrelation\n", "\n", "Copyright 2015 Allen Downey\n", "\n", "License: [Creative Commons Attribution 4.0 International](http://creativecommons.org/licenses/by/4.0/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "# Get thinkdsp.py\n", "\n", "import os\n", "\n", "if not os.path.exists('thinkdsp.py'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/thinkdsp.py" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "from thinkdsp import decorate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The case of the missing fundamental\n", "\n", "This notebook investigates autocorrelation, pitch perception and a phenomenon called the \"missing fundamental\".\n", "\n", "I'll start with a recording of a saxophone." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "if not os.path.exists('100475__iluppai__saxophone-weep.wav'):\n", " !wget https://github.com/AllenDowney/ThinkDSP/raw/master/code/100475__iluppai__saxophone-weep.wav" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from thinkdsp import read_wave\n", "\n", "wave = read_wave('100475__iluppai__saxophone-weep.wav')\n", "wave.normalize()\n", "wave.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The spectrogram shows the harmonic structure over time." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "gram = wave.make_spectrogram(seg_length=1024)\n", "gram.plot(high=3000)\n", "decorate(xlabel='Time (s)', ylabel='Frequency (Hz)')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To see the harmonics more clearly, I'll take a segment near the 2 second mark and compute its spectrum." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "start = 2.0\n", "duration = 0.5\n", "segment = wave.segment(start=start, duration=duration)\n", "segment.make_audio()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum = segment.make_spectrum()\n", "spectrum.plot(high=3000)\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The peaks in the spectrum are at 1392, 928, and 464 Hz." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/plain": [ "[(2054.0622639591206, 1392.0),\n", " (1850.8544230639036, 928.0),\n", " (1684.8468845494765, 1394.0),\n", " (1332.8150506072802, 930.0),\n", " (1249.1774991462646, 464.0),\n", " (1177.6718910227576, 1396.0),\n", " (857.3729096557305, 932.0),\n", " (742.841588837269, 1398.0),\n", " (515.1804113061312, 934.0),\n", " (513.7226300908811, 466.0)]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spectrum.peaks()[:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The pitch we perceive is the fundamental, at 464 Hz, even though it is not the dominant frequency.\n", "\n", "For comparison, here's a triangle wave at 464 Hz." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from thinkdsp import TriangleSignal\n", "\n", "TriangleSignal(freq=464).make_wave(duration=0.5).make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the segment again." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "segment.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They have the same perceived pitch.\n", "\n", "To understand why we perceive the fundamental frequency, even though it is not dominant, it helps to look at the autocorrelation function (ACF).\n", "\n", "The following function computes the ACF, selects the second half (which corresponds to positive lags) and normalizes the results:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "def autocorr(segment):\n", " corrs = np.correlate(segment.ys, segment.ys, mode='same')\n", " N = len(corrs)\n", " lengths = range(N, N//2, -1)\n", "\n", " half = corrs[N//2:].copy()\n", " half /= lengths\n", " half /= half[0]\n", " return half" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the result:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "corrs = autocorr(segment)\n", "plt.plot(corrs[:200])\n", "decorate(xlabel='Lag', ylabel='Correlation', ylim=[-1.05, 1.05])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first major peak is near lag 100.\n", "\n", "The following function finds the highest correlation in a given range of lags and returns the corresponding frequency." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [], "source": [ "def find_frequency(corrs, low, high):\n", " lag = np.array(corrs[low:high]).argmax() + low\n", " print(lag)\n", " period = lag / segment.framerate\n", " frequency = 1 / period\n", " return frequency" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The highest peak is at a lag 95, which corresponds to frequency 464 Hz." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "95\n" ] }, { "data": { "text/plain": [ "464.2105263157895" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "find_frequency(corrs, 80, 100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "At least in this example, the pitch we perceive corresponds to the highest peak in the autocorrelation function (ACF) rather than the highest component of the spectrum." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Surprisingly, the perceived pitch doesn't change if we remove the fundamental completely. Here's what the spectrum looks like if we use a high-pass filter to clobber the fundamental." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum2 = segment.make_spectrum()\n", "spectrum2.high_pass(600)\n", "spectrum2.plot(high=3000)\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it sounds like." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "segment2 = spectrum2.make_wave()\n", "segment2.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The perceived pitch is still 464 Hz, even though there is no power at that frequency. This phenomenon is called the \"missing fundamental\": https://en.wikipedia.org/wiki/Missing_fundamental" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To understand why we hear a frequency that's not in the signal, it helps to look at the autocorrelation function (ACF)." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "corrs = autocorr(segment2)\n", "plt.plot(corrs[:200])\n", "decorate(xlabel='Lag', ylabel='Correlation', ylim=[-1.05, 1.05])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The third peak, which corresponds to 464 Hz, is still the highest:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "95\n" ] }, { "data": { "text/plain": [ "464.2105263157895" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "find_frequency(corrs, 80, 100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But there are two other peaks corresponding to 1297 Hz and 722 Hz. " ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "34\n" ] }, { "data": { "text/plain": [ "1297.0588235294117" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "find_frequency(corrs, 20, 50)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "61\n" ] }, { "data": { "text/plain": [ "722.9508196721312" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "find_frequency(corrs, 50, 80)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So why don't we perceive either of those pitches, instead of 464 Hz? The reason is that the higher components that are present in the signal are harmonics of 464 Hz and they are not harmonics of 722 or 1297 Hz.\n", "\n", "Our ear interprets the high harmonics as evidence that the \"right\" fundamental is at 464 Hz." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we get rid of the high harmonics, the effect goes away. Here's a spectrum with harmonics above 1200 Hz removed." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "spectrum4 = segment.make_spectrum()\n", "spectrum4.high_pass(600)\n", "spectrum4.low_pass(1200)\n", "spectrum4.plot(high=3000)\n", "decorate(xlabel='Frequency (Hz)', ylabel='Amplitude')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the perceived pitch is 928 Hz." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "segment4 = spectrum4.make_wave()\n", "segment4.make_audio()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "TriangleSignal(freq=928).make_wave(duration=0.5).make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And if we look at the autocorrelation function, we find the highest peak at lag=47, which corresponds to 938 Hz." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOy9d3Rj53ng/XvQCBAkAXaCbTiFKiON6khyl5tsaZO1FMdJ7Gx25Rxnvcmm7TrJF/lkvyTrTfY4ydm1s06zEztxEm8cx2s7+hKtmyxbkVWskUZtZqTpMyxgJ8ACgCCA9/vj4mIgip24Ffd3Dg6Ji3uBl5cvnud96itKKTw8PDw8POyGz+oBeHh4eHh4rIenoDw8PDw8bImnoDw8PDw8bImnoDw8PDw8bImnoDw8PDw8bEnA6gGYSUdHhxoaGrJ6GB4eHh4eVTzzzDMzSqnOtcfrSkENDQ1x7Ngxq4fh4eHh4VGFiFxa77jn4vPw8PDwsCWWKigR+ZyITInISxu8LiLyv0TkrIi8ICK3VL12v4icKT/uN2/UHh4eHh5mYLUF9VfA3Zu8fg8wXH58GPhTABFpA34LuAO4HfgtEWk1cqBexw0PDw8Pc7FUQSmlHgXmNjnlXuCvlcaTQFxEEsC7gW8ppeaUUvPAt9hc0e2Zz33/Ir/4d8eZSOeM/BhXcXFmmT9/9DxfeOoS04srVg/HMaSzq3zusQs8enra6qE4iu+dnuZvnrjIY2dmvAXlDnjm0hz/45uvcGFm2eqhvAa7J0n0ASNVz0fLxzY6/hpE5MNo1heDg4O7HkihWOIbJyb4zqlJPvWTN/P2a7p3/V71wMhchvf92RPMLGmK6a++f5Gv/vwbaWqw+5Szlm+fnOQjX3qOhVwBgB8/2s/v3HeEUMBqZ4e9+fIzo/zqPzxfef6Ru67il94xbOGI7I9Sip/722f5+okJAD732AX+4Mdu5F8dSVg8sivYfdbLOsfUJsdfe1CpzyiljiqljnZ2viaLcdv8hzsP8u3/fCf9rY38xldfIpsv7vq93M7SSoEP/uUPyBeK/NMvvonPffAo56aX+JUvPeetbDdhIbfKA195kd54hK/9/Bv5ubce5EvHRvnrJy5aPTRb8y9npvn1//MCbzrUweMPvJ37burlE98+zWNnZqwemq356vExvn5igp9/20G+/ZE7uaqnmV/+4nFG5jJWD62C3RXUKDBQ9bwfGN/kuKEMtjfysXuvI5nO8dnHzhv9cY7liz+4zLnpZf70p27l+r4Yb7+mm4/ecy3fODHJd16esnp4tuV/ffsMs8sr/P77buCmgTi/fvc1vHm4gz965Czp7KrVw7MlSil+/+uvMNAa4dP/9lZ64xH++3uPMNzVxK/8w3OsFktWD9GWpDOr/PeHTnHzYJxfuetqDnU18Sf/5hZEhD98+IzVw6tgdwX1IPDvytl8rwPSSqkk8A3gXSLSWk6OeFf5mOHccaCdd1/XzZ989xxzy3kzPtJRFEuKzz9xkduH2njjoY7K8Q++cYiu5gb+5sl1yx3qnpG5DH/1+EV+4ugAN/THK8d//e5rSGVW+fT3zlk4Ovvy9MV5XhxL8zNvPkC07D5uDAV44J5rmFxY4dsnJy0eoT357GPnmVvO8zv3XY/PpzmkErEI//Z1+/jKs6Ocm16yeIQaVqeZ/x3wBHC1iIyKyIdE5GdF5GfLpzwEnAfOAn8O/EcApdQc8N+Ap8uPj5WPmcIvvWOYTL7IQy8mzfpIx/DwqUlG5rJ88I1Drzoe9Pv4wO2DfO/0NJdm7ReMtZqvHR+jUFL84pq4yfV9MX7oSIK/eeISKwXPrbyWzz52nnhjkB+9pf9Vx++8qou+eIQvPHXZopHZl1JJ8ZXjY7xpuJPremOveu3n3nqQhoCfv/iXCxaN7tVYncX3AaVUQikVVEr1K6U+q5T6M6XUn5VfV0qpn1dKHVRKHVFKHau69nNKqUPlx1+aOe7DiRYOdEb5pxcM9yo6js8/cZHeWJh3HX5tEskHbh/EJ8L/9oTGq1BK8Y/Pj3P7UBt98chrXv/RW/tYXCl4MZU1jKWyfPPkJP/mjkEiIf+rXvP7hPffNsBjZ2e4aMPsNCt55vI8o/NZfuTm3te81tHUwDsPd/PNExMUbOAetbuLz5aICD98Qy9PXZhjasFLO9dJZfI8cW6WH721n4D/tVOrJxbm7dd08dXjY16yRBWnkoucnVriX9/0WoEB8KZDnTSHA/yzZ7G/iodPTaIUvHeN9aTz47cN4PcJX35m1OSR2ZuvHR8jEvTzrsM9675+z/U9zC7n+cFF05xSG+IpqF3yr29IoBSem6+K752epqTg7dd0bXjOXYe7mVpc4VRy0cSR2Zt/fH6MgE/4oQ3Se0MBH+863MO3Tk56br4qvvPyFEPtjRzsbFr39e6WMLcOtvLIK15ijk6+UOKfX0xy1+HuSsxuLW+9upNw0MfXX5oweXSvxVNQu2S4u5mru5t5yAb/RLvw3VemaYuGXhXkX8udV2mp/t/zilArfP2lCd54qIO2aGjDc37ohh4WcwW+f9Zz8wFk8gUePzfL2zZZDAG85aoOTowveIXiZZ69PE8qs8oP3bBxrVNjKMCdV3Xy9ZcmKJWs9XR4CmoPvPWaTo5fnvdqotCy9753epo7r+rE71uvTE2juyXMtYkWvnfaW9WCFke5NJvhLVdtXqP3pkOdREN+L02/zONnZ8kXSrxji4L5O6/SFNhjZ70FEcDj52bxCbzuQPum591zfYKpxRVeGEubNLL18RTUHnjd/nZWi4pnL89bPRTLeX40xdxynrdevXUx9J1XdXLs4jxLKwUTRmZvnjw3C8DrtxAYoYCPW4fa+MEF6+MCduA7r0wRDfm5fX/bpudd19tCezTEo6c9yxO0+XZ9X4xYJLjpeW84pM3HH1yYNWNYG+IpqD1wdKgVn8BT5639J9qBR09PIwJvGd6egiqUlOeuAp48P0u8Mcg1Pc1bnnvH/jZOTy559XfAY2dmeMOhji1bQPl8wpuGO/iXM9OWu6usJpsvcnxkntcf3HwxBNDVHGZ/R9TyBZGnoPZAczjI9X0xnvRWtTxzaZ6ru5tp3SSOonPrvlbCQR9Pnffu2xPnZ7ljf1ulWHIzdGvhaRtkV1nJzNIKl+cy3Da0vQ0M3jLcycxSnlcm6zsx59ilOVaLijcc7Nj6ZOC2oVaevjhvqWL3FNQeuWN/G89dTpFbrd84VKmkeG4kxc2D2xMYoYCPI30xjo/Ut2t0ZC7D6Hx2S/eezg39MRoCPstXtVbz7CVt3tyyzfl26z7tvOOXU4aNyQk8fm6WgE+2rdhv399OOrvK6SnrFLunoPbI6w60ky+W6nryn5teYjFX4JbBjbP31nLzYCsnxhbqOm36qbKief02V7QNAT83D8Z5yuK4gNU8c3meoF+4vi+29cnAvvZGWhuDPFfnC6Knzs9y40CcxtD2dhS4fahssVu4IPIU1B45Wv4nPnOpfle1epLILfu2v2fkzQNx8sVSXddDHb88T3M4wHDX+nU863H7/nZOji+wkKvf5rHHL6W4rjdGOOjf+mS0wvobB+I8N1K/i8hCscSJ8QVuHtj+InKgLUJPS7iykLICT0HtkVgkyP6OKC9anI5pJccvp7T70B7d9jU3la2t43WcAfnSWJojfbFtxZ90bt3XSklp19Yjq8USz4+mtu3e07lpIM6ZqSUW61Sxn5laYqVQ4kj/9qxO0BT70aHWikvVCjwFVQOu623hpbEFq4dhGc9enufmwfiOBG0ipq3O6nVVmy+UODWxyJFtuql0ru9tAeBEnc63k+MLrBRKlbjSdrlpII5S8OJofSp2/e/e6Xw70hdjPJ1j3qLMUU9B1YAjfTHGUlnL/olWspBb5czU0o5XtKAJjXqN3Z2eXCRfKG07jqLT3tRAIhbmpfH6FLTHK+7k7buqQJtrAMfrdEH0wliK5oYAQzvwcgCVbucnxq1ZEHkKqgboQqYehcap8QWUYkeuA52bB+Ncnsswu1R/bWh0F91OV7SgCQ2rBIbVnEwu0B4N0dMS3tF18cYQ+zuidWuxvzi2wPU7dCeD5h0C62Sbp6BqQOWfWIdul1NJ7W8+nGjZ8bX66uzlifpLlHhxLE1zOMC+9sYdX3t9XwvnppfI5OuvE8ep5CLXJloQ2ZmgBS1Nvx5jd/lCiVPJBW7YxSKyNRqiLx7xLCgnE28MMdAWqcvJ//LEIm3REF3NDTu+9ppEc+U96g09QWI3gvb63hhKXVkc1AuFYonTk4vb6rqxHtf0tJBM50hn6itRYrfuZJ3DvS2c8CwoZ3N9b6w+XXzJBa7pad6VoO1oaqCjqYGX60zQ7jZBQqfiUq4zi/3i7DIrhRLX7sJaByqKrd46SujKZbfz7breFi7MLLNsQe9MT0HViOv7YlyazdRVfUqxpHhlcpFrenYnMEATGvVmQZ2fWSJfKHG4d3f3rbulgY6mUN1Z7CfLNXO7VlAVi72+FPvLE4tEgn4G23buToYrFrsV981TUDXi6m5t8p+ZXLJ4JOZxaXaZ3GqJaxO7c7mApqBOTy5SrKNGnqfLc+TqXbqqRITDvTFO1pnleSq5QNAvHNpBYXM1PS1hWsKBulsQnZlc4qruph0nSOhc12ddjN1SBSUid4vIKyJyVkQeWOf1T4jIc+XHaRFJVb1WrHrtQXNH/lquqiio+pn8p/a4ogW4JtHCSqHExdnlWg3L9pyZXMTvE/Z37Czlt5qrupo4O7VUV4r9VHKBg51NW3Yw3wgR4ZpEC6/UmYJ6ZXKR4e7dLyJ7WsLEIkFOWyDbLFNQIuIH/hi4BzgMfEBEDlefo5T6z0qpm5RSNwGfAr5S9XJWf00p9R7TBr4B/a0RwkEfZ6bqx4J6eWIBv2/3K1q4Ehd4uY5aHp2eXGSovZGGwPZa9azHcHcTK4USo/OZGo7M3pxKLuxpMQTafHtlYhGl6kOxzy/nmV5c4aru3X9HRYThriZLZJuVFtTtwFml1HmlVB74InDvJud/APg7U0a2C3xlQW3FKsMqTiUXONAR3XZPtPU41NWET+orLqC5XHa/ogU41FVfLuX55TyTCyt7cieDlsm3tFJgdD5bo5HZG10e7XW+DXdrFrvZWKmg+oCRquej5WOvQUT2AfuB71QdDovIMRF5UkTu2+hDROTD5fOOTU8bu+3zVV3NlvwTreLM1N4FbTjo50BnU900jc2tFrk4u7wnlwtQsVrrxWI/N639ncNde7tvetyvXuJQp8vzY6/f04OdTcwt500vqrdSQa0XsdvI7n4/8GWlVPXeDINKqaPATwKfFJGD612olPqMUuqoUupoZ+fWu73uhUPdTSTTubrI5MutFhmZy3BwD+49neGupooAcjvnppcoKfbkcgGtSXFPS5gzFu7VYyb6wu9g597um66g6sXTcXpikeaGAInYzjpvrEVfUJm9ILJSQY0CA1XP+4HxDc59P2vce0qp8fLP88B3gZtrP8SdcVV5dVcPVtSl2QwlBQc7dx/o1znY2cTluQz5QqkGI7M3ukturyta0Nwu9eLiOze9REPAR19rZE/v09QQoKclXDcLotOTiwx3N+2qTrGaYYssdisV1NPAsIjsF5EQmhJ6TTaeiFwNtAJPVB1rFZGG8u8dwBuBk6aMehOGy6viesjk07/ge13RAhzojFIsKS7PuT+T7/TkIgGf7Lhp53ocKmfyWbklt1mcm15mf0cU/y5Tpas50Bnl/LT755pSitOTizVZDCViYaIhP+fqRUEppQrALwDfAE4BX1JKnRCRj4lIdVbeB4Avqlen3VwLHBOR54FHgI8rpSxXUP2tjVomXx2savWJeqBGFhRoQsjtnJ5cYn9HdNep0tUMdzWTXS0ylnJ/wP/c9FJN3Mmgzdlz00uuz+SbW84zn1ndU5atjohwqLvZdJfy9vb+NQil1EPAQ2uO/eaa57+9znWPA0cMHdwu8PuEg53WpGOazbnpJfrikW1vH70ZupKrh1Xt+Zmliit4r+gW+9mpJQZ22SXACejxzntvWjeHascc7GxiMVdgZilP5y56SDqFCzPa96kWXg7Q3HyPnjY20WwtXieJGrO/I1qZGG7m3PRyTawngOZwkK7mBtfHBQrFEpdnMzW7b1fiAu52Kdcy3glwoCywz7t8vp0vy6G9FIRXc6irianFFVOb7XoKqsYc6IgyOu/ugL9SivPTSzVbmYEeF3C3wBhLZSmUFEM1EhjxxhDxxiAXZtxdrKsnHdXCVQXadxSuCHC3cmFmmYBP6N9jYomO/n0/P2Pe99RTUDVmqCNKScGIiyv8JxdWWM4XaxYTAG3yn5tednVcQBeIB2qkoACG2qNcdLmg1S3rAx21mW998QgNAZ/pAX+zuTC9zGB7IwF/bcT8UHnvMjPbknkKqsboq+MLLo6nXMngq52gPdDZRDq7ytxyvmbvaTf0OVErl4v+Xm7vY6jHOyOh3XcsqcZX7oNYDxZULRdDA22NiGCqxe4pqBqjTwg3C41appjr6MrOzZl8F2eXaQ4HaIuGavaeQ+1Rkukc2Xxx65MdyoWZ2sU7dQ52NrnapVwqKS7OLteknEEnHPTTG4twybOgnMuVuICLBe1MhkjQv6tddDfiYB0ErvUV7V6LJqvZXxbcl1xcQ3ZpNsO+9tpmKR7ojDIyn2Wl4E7FnlzIsVIoVeZHrdjfYa5L2VNQBjDU7m63y+W5Zfa1N9ZU0PbGIwT9wqU598buzpeLTWvJ/vIK2a1xqFQmTzq7WlNLADRBWywpRubcWUNmhDsZYKijkQsz5sWKPQVlAPs7oq6OQV00YEXr9wn9rY2mug/MJLdaZDydrVkGn85Qh/Z/cGsm38VZ7e/aV2MFpc9ft3YvuTBT28QSnaH2KAu5AvMmpZp7CsoA9ndEGU/nyK26z31QKikuz2VqLjBAExqXZt0paC/PZVCq9iva5nCQjqaQay0ofcEyVOMF0WBb2TXq0vl2fmaZSNBPd0ttC5F1S9asEIanoAxAXyW7cfJPLOTIF0o1t6AA9rU1cnk248pUc71LRq1XtKAJjQsutTz171CtO2V0NIVoDPld+R0FzeU7VON4J1yRbWYtiDwFZQD7K6sM9wX89djavrbaW1CD7VEWV8xzH5iJ7koaNECxD7m4e8nF2WUSsfCeNsVcDxFhsK2Ryy6NeV6ey7DPgPZXg22N+ATTXPGegjKAfR26f9t9k/9yJSZggKC1oBDQLC7PZYg3BolFgjV/7/0dUaYXV1heKdT8va3GiAw+Hc2l7L65ViopRuazhiyGQuUtTy6YZHl6CsoAWsKaIHKjgro4myHoF3rjtWmfUk0lcO1Ct8vluSyDBjV01d/Xjd1LLtW4lqeaoXYt1dxt25VMLmpueKPmm5ndSzwFZRCDbY2uTGG9PLfMQGtjTfblWUt/q1ap7sa4wMhcxrCO47ogcptiX1rROo4bYQmA5m7NF0pMLOQMeX+r0OeBUQpqoK3RtMWQp6AMQlNQ7hIYoBXpGiUwwkE/iZaw69wuxZJidD5jqMAAGJl314LoSgafMRbUPpdm8umeGyMt9lRmlcWc8bFiT0EZxEBbI6PzWYouch8opaWYGyUwQFvVuq1YN5nOslpUhgmM1sYgTQ0B1y2ILhlsCbi1FmpkLoNPMMQNDzDQWl4QmeAh8hSUQQy0RcgXS0y6yH0wt5xnaaVg6OZ4+9qi3op2h4gIAy7MSBudNybFXCcRCxPwSaUY2C1cmsvQG4/UZNfm9ai4lE2Yb56CMohK4NpFQmO07EIaqNH+Musx2N7IzNIKmbx7MtJGDFZQoP1P3DTXQJtvLeGAIZmPAAG/j/7WiOtid5fnjHMng7b4hisLCCPxFJRBmLnKMIuxlKag+gxUUPrmamMuiqdcnsvg9wmJWNiwzxgsB67dVOQ8Op+lr9XYrezNDPibxYjBCioWCdIcDrjfghKRu0XkFRE5KyIPrPP6B0VkWkSeKz9+puq1+0XkTPlxv7kj35reeASfuM2C0v6WfgOFhq6gRlNuUlBZ+uKRmm0ctx4DbY3kVktML60Y9hlmMzafrdlusBvR3xpx1WJouZz5aKQbXkQYaDUnCcwyBSUifuCPgXuAw8AHROTwOqf+vVLqpvLjL8rXtgG/BdwB3A78loi0mjT0bRH0+0jEIu6yoOazNDcY53KBK8pv1EVCw2iXC7jPpayUlvlotILqi0eYXc67Zj8t3Ro0qrhZx6wuHFZaULcDZ5VS55VSeeCLwL3bvPbdwLeUUnNKqXngW8DdBo1z17itlYrmcjFWYHQ2NRDy+1y1qjWyBkqnkmruktq7VGaV5XyRPoMy0XT0BdGYSyx2PZ42YLhrNMKoCUXOViqoPmCk6vlo+dhaflREXhCRL4vIwA6vRUQ+LCLHROTY9PR0Lca9bbS4gDsmPmhfYiPde6Btx90bD5sSgDWDpZUCc8v5SmDZKHRLwy0LIl1hGD3f9AWXW+ZbJZHJBIt9pWC8S9lKBbVeK4K16vj/A4aUUjcA3wY+v4NrtYNKfUYpdVQpdbSzs3PXg90NA20RphdXXLHthuZyMT4mAJrQcMuKdqyS+WiswAiXt1Zwi4K6Eu803sUH7rGgRuezNIb8tDYa54aHaovd2PlmpYIaBQaqnvcD49UnKKVmlVK6iv5z4NbtXmsHel00+ReyBZZWCuYoqLh7Ate6oDXaNQqateE2S8Do+dbdotVCuWm+9cUjNd9mYy0DJmUpW6mgngaGRWS/iISA9wMPVp8gIomqp+8BTpV//wbwLhFpLSdHvKt8zFboq7NxFygoPfhqdEwANEE75RLL84qryhzFPp5yR2H46HyWJoMTckDbyTkRD7tiEQm6G96cuQbGJzNZpqCUUgXgF9AUyyngS0qpEyLyMRF5T/m0XxKREyLyPPBLwAfL184B/w1NyT0NfKx8zFZULCgXrM7MignAlcmfTDtf2I7OZwkFfHREa7uz6Xr0tUZIpt3RnXt0PmuKJQDafHNL1qjmhjf+OxoO+uloajBctgUMffctUEo9BDy05thvVv3+UeCjG1z7OeBzhg5wj/TEwvjEHRaU/gU2w1XVV1WsW+st0s1mbD5LfzyCz4Du72vpjUdYLSqml1bobjGuKNgMzLIEAPrijXz/7Iwpn2Uki7lV0tlVU76jYE6s2OskYSBBv4/ulrArik5H5zOmBF+hqljXBfGU0fmMeQIjHi5/pjvmm1kKqr81UtlDycmY6U4G6I97CsrxaHEB5wuMMRNdLj0tYfw+cUVcwKzMR9AsAXC+xZ7OrrKYK5hqCSildZ13MqPlGjgz4sRQ7sKRMtal7Ckog+k1YZVhBmYK2oDfR09L2PGWQDZfZHY5b5rA6C1bUE6fb2Pz5sU7QbMEqj/XqZgZJwZNsecLJWYMrIXyFJTB9LVGmEjnHL8v1FjK+C4S1fS5oEfaWMr43oXVNIeDtIQDjregzKqB0qm013LBfWsI+OhoCpnyeZVMPgPvm6egDKZPD1wvOreJpx58NUvQgjn+baMxM7FEp9cFNWSV+2aS5dkTCyPiDguqr9UcNzy8OpnJKDwFZTBuqFSvbLNhksCAKynTq0XnBq7NKjatpt+EzCqjGUtliQT9tEXNsQRCAR/dzc53KZuVYq5jhmzzFJTBVFYZDhYaevDVbEFbUjDh4FqosVSWgE/oajYv5dsNMU89g88sSwD0lGlnZ43qiUxmobuUPQvKwbihWNeMjQrXomekOXlVOzqfJRHXMhLNoi8eYTFXYCG3atpn1hqz453gfMszt6on5Jhb/9bX2uhZUE5Gb9fi5MC1HnztbDK+G4KOGyzPZCpLb8xcQdvrgvZaZmaM6vTFIyRTzk1m0ruuJEyeb1oXDuMsT09BmYDT3S5mB1+hKmXawRZUMp2rKAyz0BW7UxXU0kqBVMbchBzQ7luhpJhccKZLOVn+fydMtqD0HYmVMkaxewrKBJxerDtqsm8boCHgp6u5wbHdJIolxcRCjkTMZJeLw13KYyZn8Ok4fePC8bIFZbbF3t8aYTlfJJ01xqXsKSgT6IuHHSswwPzsIB0n7ws1vbhCsaRImCxoO5saCPqFMYd2NTe7BkrH6Ypdt6B6TF4Q/cRtA7z42+8i3mhMxqWnoEygrzXC4oozA9eZvLYjrNkCA/T9jZwpMMbLbXN6TRYYPp+QiDlXsY+a3EVC58r2Ec602MfTOdqjIcJBv6mf2xwO0hw2rj+np6BMwMmZfGMW1PLo9MWdu31EMmVN0Bqc7VIeS2VN7YagEwn5aY+GHKvYk+ms6fEnM/AUlAk4eePCUQuKdHX6WrUuHFMO7MKhNx7ttUBoOLmbhJlNidfS3+rcfaGSqZwliyGj8RSUCTi5m4SuVM3ORgNnb7sxnsoRCfoN3xF2PfrK20c4sQvHuIWWgJNjnuPprOnuZDPwFJQJdDQ1EPL7HDn5k6kcPoGuZvNqoHScrNgnFjRBa4Ul0BcPoxzahcNKS6AvbmzKtFEsrRRYzBXo8Swoj93g8wkJh2byJdM5ulvCBPzmTxU9RduJW7+Pp8xPMdfRu3A4TbEXiiWmFq27b73xCCuFEnPLeUs+f7dMWOhONhpPQZmEUwPXyXTW9NRVneZwkOaGgDMtgXTWMkvAqUXOU4srlJQ1iSVQ3YXDWfNt3MKEHKOxVEGJyN0i8oqInBWRB9Z5/SMiclJEXhCRh0VkX9VrRRF5rvx40NyR7xyndpNIpnOmF/9V0xMLO06xrxZLTC2uWBYTcGq7Iz2xxKoYlD7Pxx22s27lvnkxqNohIn7gj4F7gMPAB0Tk8JrTjgNHlVI3AF8Gfr/qtaxS6qby4z2mDHoP9MUjTC2ukC84J3CtlCpbAtZN/EQ84jgX3+RCDqUwvUhXJxz009HkvJTppEXdEHR0xZh02H0bT+UQMb9I1wystKBuB84qpc4rpfLAF4F7q09QSj2ilNJTuJ4E+k0eY83oi0ccF7hOZVbJrZYsnfi9sbDjFNSVxp0W3jcHWux67ZhV8609GiIU8DlwvmXLHUTcF7Gx8i/qA0aqno+Wj23Eh4D/W/U8LCLHRORJEblvo4tE5MPl845NT0/vbcR7QG/iOeqgPWcq3RAssgRAE1YzSyusFOP/BPYAACAASURBVIqWjWGnWJmar9PnQAU1ns4SDflpCQcs+XwRIRELV/raOYVkOmeZtW40Viqo9fJv183vFJGfAo4Cf1B1eFApdRT4SeCTInJwvWuVUp9RSh1VSh3t7Ozc65h3TSUjzUEB2Ak7WAJld89k2jnFunaxoMZTzkqZTqY0QWtFar5Ob8x5yUzjKXfWQIG1CmoUGKh63g+Mrz1JRN4J/AbwHqVURUoppcbLP88D3wVuNnKwe0XPsEk6KAA7btEeM9VU4gIOum/JVJbmhoChPcq2ojceIbdaYj7jnP6PSQu6v68lEQ87KgalxYnd2UUCrFVQTwPDIrJfRELA+4FXZeOJyM3Ap9GU01TV8VYRaSj/3gG8EThp2sh3QSTkp7Ux6Cj3QbK8ZXmnBUW6Ok6shRpP5yzvi6bfNydZA8mUtQk5oFlQk+VO9E5gIVcgky9aft+MYlvO3rIy+FFgqPoapdTHdvvBSqmCiPwC8A3AD3xOKXVCRD4GHFNKPYjm0msC/qFs9l8uZ+xdC3xaREpoSvbjSilbKyjQLBEnrc4mykW6Zm5ZvpaEA1N/J9I5y6v6qxX79X0xS8eyHfKFEtNLK5ZbAol4mGJJlQuG7W+VWJ2abzTbjUb+I5AGngFqFgxQSj0EPLTm2G9W/f7ODa57HDhSq3GYRW887KhmlOMWFunqRBsCtISdVaybTGe5rrfF0jHoCRoTDlHsU4vl1HwbWFCgdwJxgIJycZEubF9B9Sul7jZ0JHVATyzM0xfnrR7Gtkmmcxyxweo7EYs4prp/pVBkZilvucDoaGog4BPHuJQriSUWZ6Pplsh4Ksut+1otHct2GHdxmyPYfgzqcRFxnMViNxKxCOnsKpl8weqhbIkefLUyVVonEQ87JkmikvloscDw+4TuFucE/Cup+VZbUHFnJTMlUzn8PqGrub4V1JuAZ8ptiV4QkRdF5AUjB+ZGeiurM/uvaueW8+QLJXparJ/4iVjEMS4+/X9rZXsond64c2p6JmxiQbWEgzQ1BBzxHQXNgupubrA0Tmwk23Xx3WPoKOqE6lTzQ11NFo9mcyptZ2zgOkjEwswu58mtFk3f0nqn2ClonYhFOD7iDJdyMp2juSFAU4M1RbrVJGLOsdj12jG3si0LSil1CYgD/7r8iJePeewAfVXthGJdXUFZnY0GVwLnTrCirO4nV00iHmYinaPkgJTp8ZR9tix3Uv9Hq3tlGs22FJSI/DLwBaCr/PhbEflFIwfmRrpjWj2RE1KmK1uW22DyX4kL2F9ojKeyxBuDRELWW3q9sQirRcXMsv27cNip2LTXIR307RQnNort2tMfAu5QSi0DiMjvAU8AnzJqYG6kIeCno6nBMRZUwCd0NFlXpKvTE3NONwk7Cdrq9lp2D6In0znLU/N1euMRZpbyrBSKNASsX2hsxHxmlRWbxImNYrtJEgJUd+sssn4vPY8t6I2HSS44QEGlsnS3hPHZIPhacY06wILS9s+yh8BwSkaalppvfZGujlNcyleaEttjvhnBdi2ovwSeEpGvlp/fB3zWmCG5m0QszPnpZauHsSXj6ZxtJn4k5CfeGLS9oAVNGdwyGLd6GEB1uyN7C1q9EbBdYlDVO+vua49aPJqNudKU2B6K3Qi2myTxP4GfBuaAeeCnlVKfNHJgbiURc0YAdsJGriqAnpaw7V2j2XyRVGbVNjGBtmiIhoDP9ordbjvCJhziUrZTxqhRbGpBiUiLUmpBRNqAi+WH/lqbUmrO2OG5j0QszNJKgYXcKi0WdrvejFJJaQrqevtM/N54xPY1PeM2E7RO2d/IbpZApf+jzRMlxlM5gn6hI2p9nNgotnLx/W/gh9F68FXnqkr5+QGDxuVa9JqFZCpHS489FdTscp58sWQbQQua0D9+2d41PXbsi+aEBsV2U+yRkJ+2aMgBil3rlWmHOLFRbKqglFI/XP6535zhuB89gD6eznJ1T7PFo1kfu1T1V5OIhZnPrJLNF22Rwr0eduyLloiHeeLcrNXD2JRkKkdLOEDUBkW6OomY/dtEJR3S0HYvbLcO6uHtHPPYmmoLyq7YbUULztjwUf+fWt0BvpreWITJhRyFYsnqoWyIHWt5nBArHk+7dyddnU0VlIiEy/GnjvImgW3lxxDQa8YA3UZ3cwM+sbug1RWUfYSGHgi2c+pvMp2loylkq9qZRDxMScHUon2Lde3YDaE3bu9i3VJJMbng7jZHsHUM6j8A/wlNGT3DldqnBeCPDRyXawn4fXQ1h229Oksu5Aj5fbRHQ1YPpcKVjQvte9/GbZb5CNU1ZFnbWSk6yXSOGwfskZqvk4hFWMgVWFop2KI/4FpmlldYLSrbKfZas6kFpZT6w3L86VeVUgeUUvvLjxuVUn9k0hhdh923j0imcnTHGmwVfL3SFcG+923ChpZAwuYd9HOrReaW8yRs1g1BjyPadb7ZMSHHCLa1NFBKfUpErgcOA+Gq439t1MDcTG8swqnkgtXD2BDN5WKviR8OaplVdu7CkUzleP2BdquH8SrsHruzY0IOVBXrpnMMd9svmclutWNGsd0kid9C67v3KeBtwO8D7zFwXK5Gq03JopQ9u0zbqV1PNT023oBvMbfK4krBdoK2JRwgGvLb1oIat1FT4mrsbrFX9h2z2XyrNdvtxfc+4B3AhFLqp4EbgT1Xh4nI3eVNEM+KyAPrvN4gIn9ffv2pcnKG/tpHy8dfEZF373UsZtITC5NbLZHKrFo9lNegB1/tsM3GWnrj9o3dXSk2tZegFZHy9hH2FLR2zHwE6G4JI2LfmGcynaUh4KO10Z61lLViuwoqq5QqAQURaQGm2GORroj40RIt7kFzHX5ARA6vOe1DwLxS6hDwCeD3ytceBt4PXAfcDfxJ+f0cwRX3gf2ExsySFny1Uy2Pjp1Tf6807rSfYtc24LPnfZtYsGcsJej30dXcYNtMvvFyar6IfeLERrBdBXVMROLAn6Nl8z0L/GCPn307cFYpdV4plQe+CNy75px7gc+Xf/8y8A7R/iP3Al9USq0opS4AZ8vv5wiqt0GwG3ZrO1NNIh4mnV0lky9YPZTXYFcLCrSYp21dfKksrTbZP2st2oLIngoqmbJfQo4RbLdZ7H9USqWUUn8G3AXcX3b17YU+YKTq+Wj52LrnKKUKQBpo3+a1AIjIh0XkmIgcm56e3uOQa4Odt0Gwc/DVzt25k6ksIppryG4k4mFmllZYKRS3Ptlkkml7upMB+uIRWy4iwV77jhnJVoW6t6x9AG1AoPz7XljPNl2bNbDROdu5Vjuo1GeUUkeVUkc7Ozt3OERj6GhqIOATW/q3x1P2tQT0L6Qdi3XH0zm6mhsI+rfrlDAPvRZK39bCTtg1IQfsm8xUKJaYXLDPdjhGslWa+f/Y5DUFvH0Pnz0KDFQ97wfGNzhnVEQCQAxty4/tXGtb/D6huyVsS0E7sZAjFPDRZqMiXZ3emH1jd3ZMzdep1EKlswy2N1o8mleTTGe5dZ+9inR1EvEIudUS85lVW30fppdWKCn7JZYYwVbNYt9m4Gc/DQyLyH5gDC3p4SfXnPMgcD/a9vLvA76jlFIi8iDwv0Xkf6J1uRhm7zExU7FrK5Xxsm/bjsHX7piWOGpHt0syleOahP3qZcC+tVD6/ll2VeyVxs6prK0UVCXF3Kb3rZZstw6qUUT+i4h8pvx8WER+eC8fXI4p/QLwDeAU8CWl1AkR+ZiI6DVWnwXaReQs8BHggfK1J4AvASeBrwM/r5Syn4N9E+yakaZtVGjPlVlDwE9HU4iJBXsJWqWUrWMCvTbtJmHHpsTVVBo72+x7Wg8bFersZMv3Z4A3lJ+PAv8A/NNePlwp9RDw0Jpjv1n1ew74sQ2u/V3gd/fy+VaSiIf5+ks5SiVlq5ZCyXSO2/e3WT2MDUnYMCMtnV0lu1q0raBtDAWIRYK2s6AmbJwxClXtjmx23+qlzRFsP838oFLq94FVAKVUlvUTFTy2SaIlTL5YYnY5b/VQKhRLiokF+1pQoPnd7SYwxh0gMLT9jeyl2K/UjtlzvnVEGwj6xXYLovF0lmjIT0vYfk1sa812FVReRCKUM+VE5CBgv5QgB5GwYar5zNIKxZKyXbueanptWHTqBJeLHbd+1/+PdkzNB/D5hJ6Y/WLFyZS2zYYd48S1ZrsK6rfQYj0DIvIF4GHg/zFsVHVAJSPNRqsz/Ytot87S1STiERbL2yDYBV3w2zlobcd2R8l0jvZoiHDQfkW6OnYs1rXj/llGsaWCKndueBl4L/BB4O+Ao0qp7xo6MpeTsKF/u9INweaWANiriWcylSXgEzqb99ye0jB6Y2FSmVWyefvkEiXTWVvPNdDum50WkVBuc2TjxVAt2VJBKa1K7WtKqVml1D8rpf5JKTVjwthcTXs0RCjgs1UtVNIJloANNy5MpnN0t4Tx2yjZZS12TDVPpnL0tNh3roHW9WVyIUexZI9i3XyhxMzSiu0Ve63YrovvSRG5zdCR1BkiYru4QDKldUiO27hDsh0tqHEH9EW7YrHbaL6ls7ZNkNBJxCMUSoqZJXuE3CcXcihl39T8WrNdBfU24AkROSciL4jIiyLygpEDqwe0zCr7CNqkAzok98Tstw1CMp2zdWIJVMc87THfllcKLOQKts58hCvFumM2uW92buZsBNvNU7zH0FHUKb2xCE9dmLN6GBWcEHwN+n10NjXYRrErpZhI57jnenvfN70tjl0sKDs3Ja6m4hpN5WDQ4sFw5b7Z3fKsFVsqKBHxAf+slLrehPHUFYl4mImyf9sO8YtkOsfrD9pry/L10DLS7CFoZ5fz5Isl2/dFCwf9tEdDtolB2bkpcTV2K9Z1Qs1dLdlOkkQJeF5EbLB+cBeJWIRiSTG9aL1/u9Ih2QETv7fcZdoOOKmqPxG3T0aanhxkxw0eq4lFgkSCftvct2Q6S0s4QLTB/UW6sH0XXwI4ISI/AJb1g0qp92x8icdWVPY3SmctX4HrHZKdkB2UiEX47ivTKKUsj5eNO8jlkohFuDS7vPWJJqDft64W+6bmg5bM1Bu3T/eS8VTO9kq9lmxXQf1XQ0dRp9jJv+0UlwtoyiC7WiSdXSXeaG2XaT0W5gQLqjcW5slzs1YPA9DmfEdTAw0B+xbp6vTGI7ZJLnFCnLiWbHdH3e+hFes2lx+nysc89oCd/NtXgtYOELTlFaQdMquS6Rwhv492G23HsBGJeITFlQKLuVWrh0LSQRvu2akcxAkZo7Vku9tt/Djafks/Bvw48JSIvM/IgdUDun/bDgH/CQcU6epcqYWy/r6Np3P0xMK26ki/EQkbZfIlHVA7ppOIRZhZWiFfKFk6jtxqkbnlvG13IDaC7dZB/QZwm1LqfqXUvwNuB/5f44ZVH4gICZv4t8dTOSJBPy0R+wdfe23UaNdJgla/b3ZwV9l5/6y19MbDKKUVyVqJvojscch9qwXbVVA+pdRU1fPZHVzrsQm9NtnfSO+LZnXSwXboaGog4BNbuF304mYnYBcLaiG3ytJKwVPsO6SSkOOQ+1YLtrtc/rqIfAOtUSzAT7Bmo0GP3ZGIhXn0zLTVw9AErUNWZn6f0N1ifReOYkkxafP9s6rpbtG6cFh9365YAs64b1f6P1p73yolDQ5ZENWCTRWUiBwCupVSvyYi7wXehLZR4RPAF0wYn+tJxCNMLa6wWiwR9FtnlCbTWd483GnZ5++U3rj1geuZpRUKNt8/q5qg30dXc4Pl901PbulvdcZ905M5rPZ0OKX7Ri3ZSiJ+ElgEUEp9RSn1EaXUf0aznj5p9ODqgd6Y9f7tfKHE1OKKY1xVYI99epywf9Za7HTfnDLfGkMBYpGg9fctnaPN5vtn1ZqtFNSQUuo1TWGVUseAod1+qIi0ici3RORM+WfrOufcJCJPiMiJcoPan6h67a9E5IKIPFd+3LTbsViNHXqk6R2S+x0iMKDcJiqdo2ThNghO2D9rLb1x67d+H09l8fuErmbn3DetsbPFFpSDEnJqxVYKarO7sRdp9gDwsFJqGG133gfWOScD/Dul1HXA3cAnRSRe9fqvKaVuKj+e28NYLMUOAdgxh61oQUsuWS0qZpataxNVsQQcErsDzYIaT2fRtnmzhvFUjh6b75+1lr54xHLXqJMyH2vFVgrqaRH592sPisiHgGf28Ln3Ap8v//554L61JyilTiulzpR/HwemAOcESbaJviKycuPCKy4X56zO7FALlUznCAftvX/WWhKxMLnVEqmMdcW6Y6ksfQ5aDIHex9B616iTvqO1YCsF9Z+AnxaR74rI/yg/vgf8DPDLe/jcbqVUEqD8s2uzk0XkdiAEnKs6/Ltl198nRGTDhl4i8mEROSYix6anrc+WW0tzOEhzQ8BSF5/TYgJgD8szmc7SG7P3/llrqdw3C+MpThS0iViEdHaVTL5gyec7Zf+sWrOpglJKTSql3oDWi+9i+fFflVKvV0pNbHatiHxbRF5a53HvTgYoIgngb4CfLndWB/gocA1wG9AG/Pomf8NnlFJHlVJHOzvtaYBZvTobS+Vod1jw9YqgtVKx5xwVfwLrLc9iSds/y0mLIbA+k+/KRoXOmm97ZVt1UEqpR4BHdvLGSql3bvSaiEyKSEIplSwroKkNzmsB/hn4L0qpJ6veO1n+dUVE/hL41Z2MzW5omVXWWlBOExitjUEaAj5La3qclpoP1nfhmF7UUvOdNt8qjZ3TWQ51NZn++XqcuM8hqfm1wqrCmweB+8u/3w/849oTRCQEfBX4a6XUP6x5LVH+KWjxq5cMHa3BWN3Of8yBLhdtGwTrFLuemu+0WIrVXTgqgtZh9623eucBCxibd+Z92ytWKaiPA3eJyBngrvJzROSoiPxF+ZwfB94CfHCddPIviMiLwItAB/A75g6/tmjNKPOsFIqmf7ZSivFUlr54o+mfvVcSFm5cmExnUcp5K1qru3A4Md4J0B1rQMS6DvpjqUzlf1dPWNIZVCk1C7xjnePH0BIwUEr9LfC3G1z/dkMHaDLVmXz72qOmfrYW+C06zoICTbF//+yMJZ+tr2idVDumY2UXjjEHZowCNAT8dDQ1WObpGJvPOi41vxZ4DV9tQKXXlwXuA6e6XEATclOLOQpF87dBGHVwTMDKbhLjKW3L8uawc1LzdXpjYctcyuOpnCPn2l7xFJQN0DPBJhbMFxq6UnSaywU0QVtSMLlofrHu2HwWEWds8LgWK7twODEhRycRs25n3bFU1pHW+l7xFJQN6LXQgnJqTACuKHYr4injqSxdzQ2EAs77ClnZhWMslXOktQ6U927Lmd6Fo1AsMbHgWVAeFhEJ+Yk3WtOMcjyVJRRwxpbla9EVuxWBayd2Q9CxshbKyRZUXzxCJl8knTW3C8fEQo5iSTl2vu0FT0HZhEQsYonAGEtl6XXIluVr0QPtVsQFxhwsaK2qhVpaKZDOrjr2vlkVK9YTcpx63/aCp6BsQm/MmsyqsVTWsa6D5nCQlnDA9LhAqaRIOjhorVtQZgvapEMz+HQqLmWTFbteSuHU+bYXPAVlExIWFeuOp7KO6sa9lv7WRkbmMqZ+5vTSCvliybFB67ZoiFDAZ/p8c3LGKFTFik1eSNZrkS54Cso2JGIRUplVsnnzinWduFHhWvpbI4zOmyto9c9z6opWRMpFzuYKWidnjAJ0NmtdOMxOyhlLZeloclavzFrhKSibUGlGaeKqVt+o0Mkrs/7WRkbnzd3f6Iol4LzuGzqJWNj0LV6ubFS44eYDtkbv5GC2S3l03rnxzr3iKSibkLCg15cTNypcS39rhOxqkbnlvGmfOeZwCwo0d5XZlsB4SuuGEPA7V+xY0YXDyRmje8W5M8VlVFJ/TbSgnLhR4Vr6y0rCTDffeCpLLBKkqcGSTmE1IREPM7m4QtHEYl03CFqzu3Bc6ZXp7Pu2WzwFZRN6ygrKzJoeJxfp6vS3am42MxWUWwRtsaSYWjTXYnfyYgjM78Ixt5wnt1pytLW+FzwFZRMaAn66Wxoq7iMzGEvlHB987W/TLSjzMvnG5p2bmq+jj9+s+ebUjQrXYnYXDqdnPu4VT0HZCD3gbxZOrurXaQkHiUWCpt03pZQrLKgBk12jTt2ocC2VnZxNihXXc5EueArKVvS3RhhNmWgJOLwGSqe/NcKISRbUQrbA0kqhEvtyKnoGolmWp1ssgSttosxR7Pp9c/p82y2egrIR/a1auyMzAtd68NUNKzMza6H0BYTTBW0k5KejKWTafXNDvBOqLCiTMvnGUlmiIT+xiPO2J6kFnoKyEf2tjRRKiskF4ye/kzcqXIvmGs2YUgvlhhRznT4TXcpuyBgFaG0M0hDwmWdBleOdIs7rlVkLPAVlI8xMmR51UfuU/tYIudUSsybUQrnFVQW65WmOi29kPkMsEnTkRoXViAi98YhpDYrdEO/cC56CshH6RDRDaOifMdDm3G4IOmammo/NZwkHfbQ5cHuStfS3RhhLZU1JmR6ZyzLQ5g5Bm4iFTSsHcXLX/FpgiYISkTYR+ZaInCn/bN3gvKKIPFd+PFh1fL+IPFW+/u9FxPnSgiv+bTME7cic9hkDrW5QUOYp9vG0JjDc4HIZaG1ktaiYMmFH4pH5jCvmGmgLSTMU1PJKgVRm1RXu5N1ilQX1APCwUmoYeLj8fD2ySqmbyo/3VB3/PeAT5evngQ8ZO1xzCAf9dDU3mCJoR+YzNIcDxBqd7XIBc12jY/PucbmYpdhLJcXofNYV1jpoXofpxRXDGzuPu8idvFusUlD3Ap8v//554L7tXija0vXtwJd3c73dMSsjbWTOPSva5nCQeGPQFMU+lsq6JuXXLNfo9NIK+UKpUnvldAbbzEnRH63zFHOwTkF1K6WSAOWfXRucFxaRYyLypIjoSqgdSCmlCuXno0DfRh8kIh8uv8ex6enpWo3fMMwq1h2Zd09MAMq1UHPG3rfcapGZpbxrVrRmWVD6fl39LlkQ6d8bo2vv6r1IF8Cwbpci8m2gZ52XfmMHbzOolBoXkQPAd0TkRWBhnfM2jPIqpT4DfAbg6NGj5nXG3CX9rREeejFJsaTwG7QNu1KK0fkMb72q05D3t4L+eCNnphYN/YxKBp9LVrThoJ+OpgbDF0QjlYQcd9w33VVp9IJoZD5DyO+ju9nZqfl7wTAFpZR650avicikiCSUUkkRSQBTG7zHePnneRH5LnAz8H+AuIgEylZUPzBe8z/AIvRaqImFnGEr9emlFXKrJdfEBEBT7I+8MoVSyrAEhsuzmqAdbIsa8v5WYIZLeXROd1W5Y751NjUQDvq4bPBOzpdnM/S3RfAZtFB1Ala5+B4E7i//fj/wj2tPEJFWEWko/94BvBE4qbRqzEeA9212vVPR/du6MDSCSgafS1a0oAnalUKJmSXjaqF0gTToIsU+0NZouKAdmc/Q2dzg6KbE1YgIA62NFdelUVyey7hqru0GqxTUx4G7ROQMcFf5OSJyVET+onzOtcAxEXkeTSF9XCl1svzarwMfEZGzaDGpz5o6egPZ115WUHPLhn1GpQbKJStaqA74Gyc0Ls1maCy3CHILg21ayvRqsWTYZ4zMZV2TIKEz0NbIiIGWp1KKy7OegrJkxzWl1CzwjnWOHwN+pvz748CRDa4/D9xu5BitIhELE/AJlwy1oNwVtIYrcYHR+Sw3D65bVrdn9BWtG2qgdPa1RSmWtL6M+9qNcV2OzGe4dZ8x/xOrGGiN8IMLc4a5lNPZVRZXCnWvoLxOEjYj4PfR1xox1O0yMpelo6mBSMgdLhe4krhgZDzl8tyyq+J2AINli92oBVGhWCKZzrnKWgdtQbRULqQ1Aje6k3eDp6BsyKDBcYGR+Yyr4k8ATQ0BWg2shVJKcXkuwz6XCQzdpXzJoPk2Xu7O77ZaHn2hYtT3VF8w6AuIesVTUDbEaAXl1uBrf6txcYHpRS3z0W0Co7s5TCjgMyzgf6kcSx3qcE/mI1yxbIyqhdK//26zPHeKp6BsyL72RlKZVdLZ2rsPVgpFxlNZhgyKN1jJYJtxmVVudbn4fMJgWyOXZo1JyrlYtgTcNt+MtqBG5jJ0NDUQbbAkTcA2eArKhhiZaj4yl6WkYKjDXYIWNMU+MpehYEBGWsXl4jIFBbCvrdGwGNSlmWXCQR9dzQ2GvL9VNDUE6GgKcWnGuAXRoMvc8LvBU1A2RC8ENWJ1pq+UjcrYspKhjiiFcmPSWnN5LoOIe7pIVDPYrrmUjdjw8eJshn1tUVcWmw61R7lgkOV5yUsxBzwFZUsqmVUG1EK51eUCV/6miwYIjctzGXpjERoC7sl81BlsaySTLxpS5HxpdrmSiOE29rVHuThT+7mWL5RIprOegsJTULakqSFAezRkSDzl0uwyLWEt481t6G5LI4TGpdll12U+6hhVHF4qKS7NZVyXIKGzv6ORqcUVMvnC1ifvgNH5DCUFgy5cRO4UT0HZlMH2Ri4a4N++OKsJDDcVm+p0NjUQDfkrVmItuTibYX9HU83f1w7oLuVax6GSCznyhZJrLShd8db6e3qhvMA60OkpKE9B2ZT9HVFDXFUXZ5ZdGX8CrUfavvba37dUJs/ccp4DLrUEBtoi+ISaK/ZLZUHrRncyGOdSrigol863neApKJtyoCNKMp2rqfsgXygxOp9hyKUrWtAUe60tgfNlgbHfpQKjIeCnv7WR89NLNX3fSrzTpfdN/7su1NilfH5mmdbGIPFG9/R83C2egrIpBzo1d9L56dpN/rFUOcXcpStaMCbV/MK0+10uBzqjNZ1roMXtQgEfiRZ37mekpZo31LyG7ML0smsXQzvFU1A2Zb8BqzPdFeHGGigdI1LNL8ws4/eJ6/rwVbO/I8qFmWVKpdqlml+cXWawrdGVKeY6+ztqHyu+MLPs2njnTvEUlE3RFVQtV7V6dpubNtxbixFxgQszmqAN+t37dTnQ2UR2tcjEQq5m73l+etnV1jrUvhZqIFvl7gAAFaFJREFUeaXAxELO1db6TnDvN87hhIN++uIRLszULi5wbnqJlnDAVfsZrUW3DmtpeZ6bXnK9y+VgjS32QrHExdllDnW52xIY6ogyvbjC0kptYsUXXB7v3CmegrIxBzqjlQB9LTg7tcShriZXppjrdDY10BIOcHaqNoq9VFJcnHV/TOBKzLM29+3yXIbVonK9gtIz7S7UyNPhKahX4ykoG7O/I8qF6eWataA5O+X+Fa2IcKirqWYKamIhR2615HqXS3eLVkN2rkaCVr//B11+34a7te/TmanFmrzfBZen5u8UT0HZmAMdURZXCkwvrez5vdKZVWaWVlyvoAAOdTVxrkaWQL2saEWE/TW02HVFd9Dl821fe5SAT2q2ILows0xvLOyqzUT3gqegbMz+stulFu6Ds9PaCu9gp7sFBsBwVzMzS3nml/feW053eR2og6yqAx1NNXPxnZ1aorulgZaw+1pqVRP0+xjqiHKmRgrq7NRSxd3qYZGCEpE2EfmWiJwp/2xd55y3ichzVY+ciNxXfu2vRORC1Ws3mf9XGI/u366F20Vf4dWLBQVwtgbC9vTkEs3hAN0t7touYj0OdEYZS2XJrRb3/F5np5fqYjEEMFwjl3KppDgztchV3c01GJU7sMqCegB4WCk1DDxcfv4qlFKPKKVuUkrdBLwdyADfrDrl1/TXlVLPmTJqk+mLR4iG/Jye3Lt/++zUEqGAj/462KFTV1BnJvcuNF6ZXOTq7mZXJ5boHOpqQin27B5VSnG+nJBTDwx3NXFpdpmVwt4U+8h8htxqiau66+O+bQerFNS9wOfLv38euG+L898H/F+llHH7oNsQn08Y7m7mlYm9K6hz08sc6Ijid3HRpE5fPEI46NvzqlYpxenJRYbrZEV7TY/2d+51vk0trrC4UqgbBXWou5mS2nuK/unyguqqnvqYb9vBKgXVrZRKApR/dm1x/vuBv1tz7HdF5AUR+YSIbOh/EZEPi8gxETk2PT29t1FbwNXdzTWzoOpFYPh8wsHOpj1nVk0vrpDKrHJ1naxoh9qjhPy+PSuoiju5Tlx8+t+5V4td/54P18n3dDsYpqBE5Nsi8tI6j3t3+D4J4AjwjarDHwWuAW4D2oBf3+h6pdRnlFJHlVJHOzs7d/GXWMtVPc3MLueZXtx9Jl9utcjIfKZuFBRoX/Jze7SgXikLjHpZ0Qb8Pg52NfHyHhXUmfJ9q5f5dqAzik/Ys8V+enKRvniEZpcnluyEgFFvrJR650avicikiCSUUsmyApra5K1+HPiqUmq16r2T5V9XROQvgV+tyaBtiO52OT25SGfz7gL1ZyaXUIq6Cr4e6mria8+Ns5hb3fUXXne5XF1H9+2anmaeODe7p/c4mVygPRra9Xx1GuGgn8G2xhooqKVKXZWHhlUuvgeB+8u/3w/84ybnfoA17r2yUkO0yPV9wEsGjNEW6EplL6vak8k0ANf1ttRkTE7g2oT2t+7lvp2eWKSjKUR7U30IWoCre5qZWMiRzqxuffIGnEoucm2ipS4SS3SGu5s5NbGw6+sLxRLnppbqajG0HaxSUB8H7hKRM8Bd5eeIyFER+Qv9JBEZAgaA7625/gsi8iLwItAB/I4JY7aEjqYQbdEQp/eioMYXaGoIMFAHGXw6h8vK+MRYetfv8cpk/aX8Xt2jL4h2J2wLxRKvTC5W7n+9cF1vCxdmllneZU++S3MZ8sVS3c23rTDMxbcZSqlZ4B3rHD8G/EzV84tA3zrnvd3I8dkJEeHq7uZKPGQ3nEwucG2i2dXbHqylpyVMWzTEyeTuBG2ppDgzuciPHR2o8cjsTSWTb3KROw607/j68zPL5Aslrk3Ul6C9rjeGUppiv3Vf246v1xNTPAX1arxOEg7g6h4tk283e/WUSopTyUUOJ+prRSsiXNfbwonx3Smoy3MZlvPFikVRL/S0hGkJB3adyXeqvCA4nIjVcli2R3ef73a+vTSWJuATLwa1Bk9BOYDDiRYy+eKu9p0Zmc+wtFKoO5cLaG6+05OL5As73133hbJr8Ib++hK0IsI1id0r9pPjC4T8Ptc3111LIhamtTHIibHd3bcXx9Jc3dNMOOj14KvGU1AO4IYBTUg+P5La8bUny4Lm2jqzoEBT7KtFtavsqhdGUjQEfHXpcrmxP8bJ5MKuFPvJ5ALD3U2u3txxPTSLPcaJ5M5jnkopXhxL191iaDvU1yxyKIc6m4gE/bwwuvPJfzK5gN8ndSlor+vVvvAnxnd+314YS3O4t6XuBC3AjQNx8oXSrtx8p5ILdedO1rmut4XTE0usFnem2Efns6Qyqxzpixs0MudSf98+BxLw+zjSF+P50Z1bUCfGFzjYGa1L18H+jiiRoH/H7qpiSfHSWJob++tTYOh/93M7nG/jqSwzS/m6Kmeo5nBvC/liaccdJfSFp2dBvRZPQTmEG/pjnBjfmdulVFI8e3memwbqU9D6fcLh3pYdK/Zz00tk8kWO9NWnwOhvjdAeDe3YpXzs0jwAR4d2nsXmBnSL/aUdlja8MJYi5K9Pd/JWeArKIehul5305Ts/s0Qqs8rRXaS9uoWjQ628NJbe0RYS+or2xoH6VFAiwo0D8R0rqGcvzRMJ+iup6vXGgY4osUiQY5fmdnTdi6Nprk00Ewp44ngt3h1xCLrbZSfWwLGL2or21qHXbLdVN9y2r43VotqRsH1hNEU05Gd/HWxSuBE39sc5O73EYm77HSWOXZrjpoE4gTqM24HWpPi2oVaeLn/vtkOppCVIXF+n1vpW1OdMciADbRFaG4M8d3kHCurSPG3RUGXjw3rk1n2acn764vZXtU9fnOfGgXhdbE2yETcOaIWnL24zMWd5pcCp5CJH63gxBHD7/jYuzCwztZjb1vknkwss5grcVqdu0a3wFJRDEBGODrXx5IXtN/J85tI8twy21lVPtLW0RkNc1d207VXt7NIKp5ILvOHgzrsouImbB1oRgacubE+xPz+SolhS3LKvvhWUrmievrC9+aY35n19nc+3jfAUlIN483AHI3NZLs9uvW/jzNIKF2aW635FC1rQ/tlL8xS30YnjyfOaQH7DoQ6jh2VrYo1BbuiP8y9ntreH2jPlBIlbBup7vl3fFyMS9G/bYn/83AwHO6N0t4QNHpkz8RSUg3hjWWj+y9mthYYefzpa5ytagNuGWllcKWyrAer3z83Q3BDgBi8mwJsPdfD8aJp0dus41BPnZ7m6u5lYY33vZRT0+7h5MM4PtmF5rhZL/ODCnGc9bYKnoBzEgY4oiViY75+d2fLcR16e0gRtndbyVPO6ctPTR09vfd8ePzvDHQfa6jbQX82bhzsoltSW+0Ols6v84MIcb7tmq42x64Pb97dxamKBueX8pue9OJZmOV/kDQfr21rfDO9b6CBEhDce6uDxc7ObuquKJcXDL09y59WdXuoqkIhFONIX4xsnJjY9byyV5eJsxhMYZW4ebCUa8vPYFhb7905PUygp7jrsKSiAd17bjVLw7ZOTm56nK/7X7aJrfL3gSS+H8ebhDlKZ1U2LAZ8bSTGzlOeuw90mjszevPu6bp4bSTGR3ji76junNIHypmFPQQGEAj5ed6CdR0/PoNTGC6KHT03SFg1xU53Hn3Su622hvzXC17dYEH3zxARH+mK0RUMmjcx5eArKYbxluJOgX3jw+fENz/nWyUkCPuGtV3srWp13X9cDwLdObiw0vnJ8jGt6mhnuqt/6p7W8/douLs9leGmDLt2rxRKPvDzF26/pquu0/GpEhLuv6+GxMzMb1pGdm17i+dE0997Ua/LonIWnoBxGazTEO6/t5mvHx9ZtSqmU4lsnJ7jjQBuxSH0HrKs51NXEgY7ohqva89NLHL+c4r239NV1Wv5afviGXsJBH198+vK6rz95fpaFXIF3Xusthqq550gP+WKJ77w8te7rXzs+hk/gPTd6CmozPAXlQH7saD+zy/l1J/+T5+c4N73MDx3xJn41IsI9R3p44twsF2deu6/WV57VBMZ9N71mA+e6JhYJ8q+OJHjwuXEy+dduZ/7Zxy7QHg151voabh5opau5ga88O/aa15RSfPX4GG881EGXl16+KZ6CciBvGe6kq7mBLz098prX/uS7Z+loauC9t3iCdi33v36IoN/HHz1y9lXHc6tFvvLsKG8e7vQExjq8/7ZBFlcK/PMLyVcdP5Vc4LuvTPPBNwzVZbf8zfD5hPvfMMT3Tk/z7OVXF+0+emaG0fksP3Kz9x3dCksUlIj8mIicEJGSiBzd5Ly7ReQVETkrIg9UHd8vIk+JyBkR+XsRqasoY8Dv4yduG+Dhl6d4vCrl/IXRFP9yZoafefN+T2CsQ1dLmJ+8Y5CvHh/jUtXuxJ/6zhnG0zn+/ZsPWDg6+3LbUCvDXU188ttnXlUT9ZlHz9MY8vNvX7/PwtHZlw++YYj2aIj/+c3TlWO51SK//eAJ9rU38q+OJCwcnTOwyoJ6CXgv8OhGJ4iIH/hj4B7gMPABETlcfvn3gE8opYaBeeBDxg7XfvzHtx7iQEeUX/vyCyzkVplZWuGB//MiLeEA/+aOQauHZ1t+7s6DBHzCR770PLNLKzxzaZ5Pf+88P3pLv5e9twEiwu+/7wYmFnL8xldfpFRSfO6xC3z1+Bg/9bp9xBvran24baINAX72zoM8dnaGzz9+kVJJ8YcPn+HCzDK/c9/13iJyG8hm6aOGf7jId4FfVUodW+e11wO/rZR6d/n5R8svfRyYBnqUUoW1523G0aNH1bFjr/kox/Ls5Xne96ePE28MEfL7SGXz/NlP3erFA7bgn14Y51e+9DxBv4+llQKdzQ188z+9hVYv3XdT/viRs/zBN16hqSHA0kqBd1/Xzac+cItXa7cJudUiP/u3z/DdV6Zpj4aYXc7zIzf38YmfuMnqodkKEXlGKfUab1rAisFskz6gOsgyCtwBtAMppVSh6viGzlwR+TDwYYDBQXdZFrcMtvKXP307Xyu7rP7oJ2+u283idsIP39DLQGsjn370HDf2x/mRW/o85bQNfu7Og/S3Rnjm0jwt4SC//M5hgl7HjU0JB/187v7b+PSj53n64hz33fz/t3f3IXJVdxjHv08TE6nvklStJiZprVAqaLAS8YWCoiZUo7a1EbEBq7RQoeIfaglY8T+VKqjFl6JUi21i0WDAd1urCE2sxsRE4kvUCNE18Y3aUtGqP/84Z3AyzN1d2Zk5Z7LPB4a9ezK7PPnds/fMufdyz4Es/N7+pWMNjb7NoCQ9BnTbE8si4r78nn/QPIP6CXByRJyfvz8XOAq4EvhnRHw7t88CHoiIw8bKtLPNoMzMdgYDn0FFxIkT/BVbgVlt3x8EvAW8C+wtaWqeRbXazcxsJ1Lz/PxfwCH5jr1pwBJgVaQp3+PAj/P7lgL3FcpoZmZ9Uuo28zMkbQWOBu6X9HBu/6akBwDy7OhC4GFgE3B3RLyQf8WlwMWSNpOuSd026P+DmZn1V9G7+AbN16DMzOrTdA1qUg1Qkt4B3pjAr5hBugZWM2fsDWfsDWfsjZ0948ERMbOzcVINUBMl6Zluo3xNnLE3nLE3nLE3JmvGmm+SMDOzScwDlJmZVckD1Fdza+kA4+CMveGMveGMvTEpM/oalJmZVckzKDMzq5IHKDMzq5IHqHFqWjyxYJ5Zkh6XtCkv/vjr3H6FpDclrcuvRRVk3SJpQ87zTG7bV9KjedHJRyXtUyjboW21WifpQ0kX1VBHSbdL2i5pY1tb17opuT73z+clzS+Y8RpJL+YcKyXtndvnSPqoraY3F8zYuH8l/SbX8SVJYy7j08eMK9rybZG0LrcPvI6jHG/62x8jwq8xXsAU4FVgHjANWA98t3CmA4D5eXsP4GXSwo5XkJ4QX7xubVm3ADM62q4GLsvblwFXVZBzCvA2cHANdQSOB+YDG8eqG7AIeBAQsABYUzDjScDUvH1VW8Y57e8rXMeu+zf/Da0HpgNz89/9lBIZO/79d8Dlpeo4yvGmr/3RM6jxOQrYHBGvRcQnwHJgcclAETESEWvz9n9IzytsXBerQouBO/L2HcDpBbO0nAC8GhETedpIz0TEk8D7Hc1NdVsM3BnJatIT//u+pni3jBHxSHy5Xttq0ooDxTTUscliYHlEfBwRrwObSX//fTVaRkkCzgL+0u8cTUY53vS1P3qAGp9uiydWMxhImgMcAazJTRfmafXtpU6ddQjgEUnPKi0gCbBfRIxA6vxADcsAL2HHg0BtdYTmutXaR88jfZJumSvpOUlPSDquVKis2/6tsY7HAdsi4pW2tmJ17Dje9LU/eoAaH3Vpq+L+fEm7A/cAF0XEh8BNwLeAw4ER0qmB0o6JiPnAQuBXko4vHaiT0pIupwF/zU011nE01fVRScuAT4G7ctMIMDsijgAuBv4sac9C8Zr2b3V1BM5mxw9OxerY5XjT+NYubV+5jh6gxqdp8cSiJO1C6ix3RcS9ABGxLSI+i4jPgT8wgNMTY4mIt/LX7cBKUqZtrSl//rq9XEIgDZ5rI2Ib1FnHrKluVfVRSUuBHwLnRL4okU+bvZe3nyVd3/lOiXyj7N/a6jgVOBNY0WorVcduxxv63B89QI1P18UTSwbK56VvAzZFxLVt7e3nec8ANnb+7CBJ2k3SHq1t0gX0jaT6Lc1vq2HRyR0+pdZWxzZNdVsF/CzfPbUA+Hfr1MugSTqFtGbbaRHxv7b2mZKm5O15wCHAa4UyNu3fVcASSdMlzSVlfHrQ+dqcCLwYEVtbDSXq2HS8od/9cZB3ggzzi3RXysukTyvLKshzLGnK/DywLr8WAX8CNuT2VcABhXPOI90VtR54oVU70kKTfwNeyV/3LZjx68B7wF5tbcXrSBowR4D/kz6R/rypbqRTKr/P/XMDcGTBjJtJ1x9a/fLm/N4f5T6wHlgLnFowY+P+BZblOr4ELCyVMbf/Efhlx3sHXsdRjjd97Y9+1JGZmVXJp/jMzKxKHqDMzKxKHqDMzKxKHqDMzKxKHqDMzKxKHqDMKiTpv6UzmJXmAcrMzKrkAcpsSEg6VdKa/JDQxyTtl9tn5rV41kq6RdIbkmaUzms2UR6gzIbHU8CCSA8JXQ5cktt/C/w90gN5VwKzC+Uz66mppQOY2bgdBKzIz5GbBrye248lPU+OiHhI0geF8pn1lGdQZsPjBuDGiDgM+AWwa27vtrSB2dDzAGU2PPYC3szbS9vanyKtuIqkk4BaFlc0mxA/LNasQpI+Z8f1c64lPRn6OtIgtRr4fkT8QNI3SE/D3gd4AvgpMDciPh5sarPe8gBlNuQkTQc+i4hPJR0N3BQRh5fOZTZRvknCbPjNBu6W9DXgE+CCwnnMesIzKDMzq5JvkjAzsyp5gDIzsyp5gDIzsyp5gDIzsyp5gDIzsyp9AR64OThZ/xUuAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "corrs = autocorr(segment4)\n", "plt.plot(corrs[:200])\n", "decorate(xlabel='Lag', ylabel='Correlation', ylim=[-1.05, 1.05])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "47\n" ] }, { "data": { "text/plain": [ "938.2978723404256" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "find_frequency(corrs, 30, 50)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For convenience, here are all the versions together.\n", "\n", "A triangle signal at 464 Hz:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "TriangleSignal(freq=464).make_wave(duration=0.5).make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The original segment:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "segment.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After removing the fundamental:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "segment2.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After removing the harmonics above the dominant frequency, too." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "segment4.make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a pure sinusoid:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false, "jupyter": { "outputs_hidden": false } }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from thinkdsp import SinSignal\n", "\n", "SinSignal(freq=928).make_wave(duration=0.5).make_audio()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In summary, these experiments suggest that pitch perception is not based entirely on spectral analysis, but is also informed by something like autocorrelation." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "jupyter": { "outputs_hidden": true } }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.10" } }, "nbformat": 4, "nbformat_minor": 4 }