{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Single Rotating Retarder Stokes Polarimetry\n", "_Written by Jaren N. Ashcraft_\n", "\n", "In optics we are frequently interested in understanding the polarization state of light. In cases where we are simply curious about the polarization of the source, we desire to measure the Stokes vector of the source. One method of realizing this in the laboratory is with the Single Rotating Retarder Stokes Polarimeter (SRRP). This consists of:\n", "\n", "- a source with some polarization state\n", "- a quarter-wave plate that can rotate\n", "- a linear polarizer at a fixed angle\n", "- a detector to measure power\n", "\n", "We will be rotating the quarter wave plate in steps of $\\delta\\theta$ over a range to span the Poincare sphere to sample all of the possible responses of power on our detector. To know the Stokes vector, we must take a minimum of 4 measurements to completely determine the vector. These work out analytically to be the vertices of a tetrahedron inscribed in the Poincare sphere, but to make it easier we will generalize the polarimeter to N measurements.\n", "\n", "For each measurement, we step the QWP by some angle $\\delta\\theta$ and record the power on our detector. It turns out that the power we observe should follow a sinusoid of 4 frequencies*.\n", "\n", "$$P \\propto a_{0} + a_{2}sin(2\\theta) + a_{4}cos(4\\theta) + b_{4}cos(4\\theta)$$\n", "\n", "We simply record the power change, and use optimization to curve fit our results to $P$. The Stokes vector can be expressed in terms of these coefficients.\n", "\n", "$$I = 2(a_{0}-a_{4})$$\n", "$$Q = 4a_{4}$$\n", "$$U = 4b_{4}$$\n", "$$V = -2b_{2}$$\n", "\n", "Here we show a demo of how to use the katsu.full_stokes_polarimetry function to reduce the data.\n", "\n", "*depending on what you consider a frequency this could be 2-4. What I mean to say is that there are 4 terms we care about." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.46539569 0.32462298 0.35508336 0.26105798]\n" ] } ], "source": [ "# First we begin with a simulated dataset and provide the function with a stokes vector\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from katsu.polarimetry import full_stokes_polarimetry\n", "from katsu.mueller import linear_polarizer, linear_retarder\n", "\n", "thetas = np.linspace(0,np.pi,10)\n", "S_to_measure = np.random.random(4)\n", "print(S_to_measure)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stokes Vector Measured\n", "[0.46539569 0.32462298 0.35508336 0.26105798]\n", "Percent Difference\n", "[-2.38554643e-14 1.71001913e-14 1.56332731e-14 -2.12639169e-14]\n" ] } ], "source": [ "S_out = full_stokes_polarimetry(thetas,Sin=S_to_measure)\n", "print('Stokes Vector Measured')\n", "print(S_out)\n", "print('Percent Difference')\n", "print(100*(S_to_measure-S_out)/S_to_measure)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Fantastic, the internal simulator appears to work. Now let's try it out with a real dataset." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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EhISaPJDFIdOeCZkkHvqqacAXHjr+/DhwzF58mTcd999uPfeewEAR44cAQDccMMNXW7r4eGB6667DqWlpfj+++/F83ZuuOEG5OXlIS8vDzNnzsQXX3wBT09PTJkyBddffz2++OILAIDVasVXX32F5ORkhIeHi9vdv38/PD098d577+G9997rcr9msxl1dXVoaGjAiBEjxOU6nQ6jR4/u1ePnPb6RI0ciMjISZ86cQXNzM4YNG+bw2K+99tout5k6dSoA4PvvvxeX3XPPPfj973+PtLQ03HXXXZgyZQomTpyIoKAgh9vaz5Fpbm7u9lyluro6AEBhYWGXn1199dXdPj4vLy/ceeed2Lx5s3gOFXDhHJ3jx49j5syZCAwM7DKG/Px8h3O+7Gpra2G1WnHy5EmMGzdO7DdlypQu66rVakyaNAnFxcXdjo2QwYomP4QMcqybk3Mv1tzcDAAICwvr9uf25RefhDxt2jSsXLkSubm5mDlzJnJzc5GRkQEfHx9MmzYN7777Ln766Se0traiubkZ99xzj8M2GxoaYLFYxImZFKPR6DD5CQ4OhiAI3Nv05fGVl5ejqanJYfITGBgItVrdZf3Q0FCH7QLA0qVLERgYiFdeeQUvvvgiNmzYAEEQMGXKFDz//PMYP348gAuPGwB2797d5YTxixmNRsn77c78+fOxefNmbNu2TZz8bNu2DQAwb948h3XtY3j++eclt3fxGOyPMyQkpNv1eOMiZLCid3sRonD2P/jV1dXd/tz+bq+LJwZXX3019Ho99uzZg4aGBvzwww+YNm0agP8dYdmzZw9yc3Mdll18n/7+/mAXXlqX/IqJiXG4XW8nPn19fABQX18Pq9XaZX37di5df+7cuThw4AAaGhrw6aef4r777sNXX32FrKws8YiO/TYvvPAC93Fv2bKly/3yHvu1116LpKQkfPLJJ2hqakJnZyfeeecdBAYGipOhS3s0Nzdzx2A/0mNfv6amptv7lupKyGBGkx9CFM7+NunuLk9gsViwd+9eAMBVV10lLre/HFZUVITt27eDMSZOfhITExEdHY3c3Fx88cUXUKlUuP766x22e8011+D8+fM4fvz4AD2q/+E9vtOnT6OiogJxcXEYPny4w88sFgv27dvX5Tb27Ui9vXz48OG4+eabsXnzZsyfPx+NjY346quvAFx43ADEps40b948dHR0YMeOHfj0009RX1+Pu+++G56eng7r9XYM9t97fn5+l59ZrVZ8/fXX/Rw5ITLkutOLCCHOBM5b3S9mf7eXWq1m+/fvd/jZ888/zwCwzMzMLrdbt24dA8CCg4OZj48PM5vN4s/mz5/PfH19mU6nY1deeWWX2+7Zs0d8t9fFJ0LbGY3GLmOJiYlhMTExl308l/rmm28YABYbG8tqa2vF5RaLhd16660MAHvmmWe63Bck3u1lP8H34nd7ffHFF8xms3W5b/u7yf7973+LyyZPnsxUKhV7/fXXux3vjz/+6PCuMfsJz1u2bOE+zvLycqZSqdi1117LZs6cyQCwI0eOdFmvsLCQeXp6sqSkJFZUVNTl5yaTyeFEb3q3FxmK6JwfQhROr9fjjTfewKxZszBlyhTMmjUL0dHROHz4MD7//HOEhobitdde63I7+5Ge2tpazJgxw+EIw7Rp07B161aH9S697bPPPosVK1YgKSkJN998M+Li4mA0GlFWVob8/HxMmjQJu3bt6vfju/baa7Fs2TKsXbsW6enpuOOOO+Dj44P//Oc/+OmnnzBp0iQ8+uijXW4XFhYGk8mE9PR0/N///R86Ozvx/vvvo6qqCg899BCuu+46cd2ZM2dCr9fjmmuuQWxsLBhj2Lt3L7777juMGzcOmZmZ4rpvv/02brjhBtx333148cUXkZGRgeHDh6OiogI//vgjfvrpJ+zfvx/BwcG9epxRUVG4/vrrkZubCw8PD1xxxRXdHp1KSUnBG2+8gV/96lcYNWoUZsyYgZEjR6KzsxPl5eXYu3cvgoKCcOLECQAXXm57/fXXMX36dNx+++247bbbkJiYiKNHjyI3NxczZsxwyu+JEFlx9+yLENI36OGRH7tvv/2WZWdns8DAQObp6cmioqLYgw8+2O2RGcYuHBEIDAxkANjatWsdflZZWSne/8VHPS61d+9eNmvWLBYWFsY8PT1ZYGAgGzNmDPvd737HvvvuO4d1+3rkx+6dd95hEydOZHq9nmm1WpaWlsaeeeYZ1t7e3mVd+301NTWxhx56iIWHhzONRsNSUlLYCy+80OUoz6uvvsqys7NZXFwc8/LyYv7+/mzs2LHsueeeE98yfrGWlhb2pz/9iV111VXMx8eH6XQ6Fhsby26++Wb22muvOXyOUU+P/DDG2Pbt28Xu69at4677448/snnz5rHo6Gim0WiYv78/GzVqFLv//vtZbm5ul/UPHTrEsrKymF6vZ3q9nk2bNo3t27ePrVq1io78EMURGLvMW0UIIYQQQhSETngmhBBCyJBCkx9CCCGEDCk0+SGEEELIkEKTH0IIIYQMKTT5IYQQQsiQQpMfQgghhAwp9CGHl7DZbDCbzVCr1X26zhAhhBBCXI8xBqvVCo1GA5WKf2yHJj+XMJvN+Oabb9w9DEIIIYT0wcSJE6HT6bjr0OTnEmq1GgCQnp4u/m9nOnHiBFJSUpy+XSWgNnzUh4/68FEfPuojbbC0sVqt+Omnn3r0t5smP5ewv9SlVqsHZPITGho6INtVAmrDR334qA8f9eGjPtIGW5uenLJCJzwTQgghZEihyY+L1dTUuHsIskVt+KgPH/Xhoz581EeaEtvQ5IcQQgghQwpNflwsMTHR3UOQLWrDR334qA8f9eGjPtKU2IYmPy5WWVnp7iHIFrXhoz581IeP+vBRH2lKbEOTHxdrb2939xBki9rwUR8+6sNHffiojzQltqG3urvY5T54aSijNnzUh08OfRhjaDFZ0d5phZenGn5a+XxSvBz6yBn1kabENjT5cbHo6Gh3D0G2qA0f9eFzZx+jyYLdpxqx83gdqgxmcXmYrwbZo4IwPSkAeq17n25p/+GjPtKU2IZe9nKxkydPunsIskVt+KgPn7v6HKpowd3vHMemA5WovmjiAwDVBjM2HajE3e8cx6GKFreMz472Hz7qI02JbWjyQwghfXSoogWPf1YMk8UGBoBd8nP7MpPFhsc/K3b7BIgQcgFNflwsKCjI3UOQLWrDR334XN3HaLJg9Z4zYKzrpOdSDABjwOo9Z2A0WVwxvC5o/+GjPtKU2IYmPy7m4UGnWUmhNnzUh8/VfXafahSP+PSE/QjQ7lONAzksSbT/8FEfaUpsQ5MfF6uqqnL3EGSL2vBRHz5X9mGMYefxuh5PfC6283gdGOvLLfuH9h8+6iNNiW1o8kMIIb3UYrI6vKurpxiAKoMZBpPV+YMihPQYTX5cLD4+3t1DkC1qw0d9+FzZp72zf5OXtn7evi9o/+GjPtKU2IYmPy6mxKvjOgu14aM+fK7s4+Wp7tftvft5+76g/YeP+khTYhua/LhYa2uru4cgW9SGj/rwubKPn1aNMF8NevvZzQIufPChr9b1kx/af/iojzQltqHJj4tpNBp3D0G2qA0f9eFzZR9BEJA9qm9v/80eFeSWS17Q/sNHfaQpsQ1NflxMia+dOgu14aM+fK7uMz0pAFoPVY+P/ggAtB4qTE8KGMhhSepNH8YYmjssqDaY0Nxhccu701yN/vuSpsQ2NPlxsRMnTrh7CLJFbfioD5+r++i1HliZGQdBwGUnQAIAQQBWZsa57RpfPeljNFnw0U+1mP9uAWa9dQxzd1z4//PfLcBHP9W67QMaXYH++5KmxDY0+SGEkD4aH+mHZ7ISxCNAl06C7Mu0Hio8k5WA8ZF+rh9kDw2Wa5QR4gw0+XGxESNGuHsIskVt+KgPn7v6jI/0w9tzRuHBayIQ6ut4bkSorwYPXhOBd+5Od/vEh9eHrlFG/33xKLGN8j6zWua0Wq27hyBb1IaP+vC5s49e64GZ6cHIHhUEg8mKtk4rvD3V8NWq3XJyc3ek+vT2GmX47zXK3p4zym0v4Q0E+u9LmhLb0JEfFzt37py7hyBb1IaP+vDJoY8gCPDTeSDUVws/nYdsJj6AdJ/Bdo2ygSKH/UeulNiGJj+EEDJEDcZrlBHiDDT5cbG4uDh3D0G2qA0f9eGjPnzd9aFrlP0P7T/SlNiGJj8uVl9f7+4hyBa14aM+fNSHr7s+g/EaZQOF9h9pSmxDkx8XMxgM7h6CbFEbPurDR334uuszGK9RNlBo/5GmxDY0+XExDw/lvDvC2agNH/Xhoz583fUZjNcoGyi0/0hTYhua/LjYyJEj3T0E2aI2fNSHj/rwdddnMF6jbKDQ/iNNiW1o8uNiBQUF7h6CbFEbPurDR334pPoMtmuUDRTaf6QpsQ1NfgghZAgbbNcoI8QZaPLjYgEByvrXkjNRGz7qw0d9+Hh9lHSNsr6i/UeaEtvIcvKzceNGxMbGQqfTISMjA99++22PbvePf/zjwmvY2dkOy+fPnw9BEBy+ZsyYMQAjvzxvb2+33O9gQG34qA8f9eG7XJ/Bco2ygUL7jzQltpHdccsdO3Zg6dKl2LRpEzIyMrBhwwZkZWWhqKgIwcHBkrcrLS3FI488gsmTJ3f78xkzZmDLli3i9+66VklFRQXS0tLcct9yR234qA8f9eHrSZ/BcI2ygUL7jzQltpHdkZ/169djwYIFyMnJQVpaGjZt2gRvb2+88cYbkrexWq2455578NRTTyE+Pr7bdbRaLUJDQ8Uvf3//gXoIhBAyqMn5GmWEOIOsJj9msxmHDx9GZmamuEylUiEzMxP79++XvN3q1asRHByM++67T3KdvLw8BAcHIzk5GQsXLkRDQwN3LAaDAS0tLeKXyWTq/QPqRkxMjFO2o0TUho/68FEfPurDR32kKbGNrF72qq+vh9VqRUhIiMPykJAQnDhxotvbfP3113j99ddx9OhRye3OmDEDt912G+Li4lBcXIzHHnsMN910E/bv3w+1uvsP6UpPT0dbW5v4fU5ODhYvXoywsDAUFxeL42KMoba2FgCQlJSEiooKtLe3Q6fTISoqCqdOnQIABAcHQ6VS4cyZM/Dy8kJCQgKqq6vR2toKrVaL2NhYFBUVAQACAwOh0WjEK+nGxcWhrq4ORqMRnp6eSExMRGFhIYALJ6J5eXmhsrISABAbG4vGxka0tLRArVYjOTkZhYWFYIxh+PDh8PX1xdmzZwEA0dHRaGlpQVNTEwRBQGpqKoqKimC1WuHn5wd/f3+UlZUBACIjI9HW1obGxgtXck5LS8PJkydhsVjg6+uLwMBAnDlzBgAQHh4Ok8kkTjBTUlJQUlICs9kMHx8fhISEoKSkBAAQFhYGi8WCuro6tLe3Y8yYMSgvL0dHRwe8vLwQERGB06dPi70BoKamBgCQmJiIyspKsXd0dDROnjwJAAgKCoKHhweqqqoAAPHx8aipqUFrays0Gg3i4+PFfWrEiBHQarUOvevr62EwGODh4YGRI0eKb/UMCAiAt7c3KioqAFx4Ujh//rxkbz8/P5SXlwMAoqKiYDAYJHsHBASgtLQUABAREYH29naxd2pqKk6dOgWNRgO9Xo+goCCH3mazWfwI+uTkZJSWlsJkMsHHxwehoaHiPhsaGgqbzeawz549e1bsHRkZ6bDPCoIg9k5ISEBVVRXa2tqg1WoRExPD7V1bWwuj0dhtb51O1+0+e2lvf39/6PV6h322ubkZzc3NUKlUSElJwYkTJ2Cz2cAYQ0xMjENvo9GI8+fPd9lnu+vd0dHR7T6r1+sRHBzc7T4LXPgMlLKyMphMJnh7e/f7OaK6ulrs7czniNOnT8PLy2tQP0fYew/Ec4S3tzfq6+sH9XPE6dOn0dnZ6fTniOLiYnh4eMj+OaI3F9oVmIwuy3vu3DlERERg3759mDBhgrh82bJlyM/Px8GDBx3WNxgMGD16NF555RXcdNNNAC6c3NzU1ISdO3dK3k9JSQkSEhKwZ88eTJs2zeFnFosF+fn5iI+Ph0r1vwNjWq3WKecJFRQUKO61U2ehNnzUh4/68FEfPuojbbC0sVqt+OGHHzBlypTLfiq1rI78BAYGQq1Wi7NIu5qaGoSGhnZZv7i4GKWlpfjFL34hLrPZbAAufBx3UVEREhISutwuPj4egYGBOH36dJfJj52vr6/kUaH+GIhtKgW14aM+fNSHj/rwUR9pSmwjq3N+NBoNxo0bh9zcXHGZzWZDbm6uw5Egu5SUFBw7dgxHjx4Vv/7v//4P119/PY4ePYqoqKhu76eiogINDQ0ICwsbsMciJTk52eX3OVhQGz7qw0d9+KgPH/WRpsQ2spr8AMDSpUuxefNmbNu2DYWFhVi4cCFaW1uRk5MDAJg7dy5WrFgBANDpdEhPT3f4sr9mnZ6eDo1GA6PRiEcffRQHDhxAaWkpcnNzceuttyIxMRFZWVkuf3z21+FJV9SGj/rwUR8+6sNHfaQpsY2sXvYCgNmzZ6Ourg4rV65EdXU1xo4di127doknspWXlzuci3M5arUaP/74I7Zt24ampiaEh4fjxhtvxNNPP+2Wz/qR0SlWskNt+KgPH/Xhoz581EeaEtvIbvIDAIsWLcKiRYu6/VleXh73tlu3bnX43svLC5999pmTRtZ/w4cPd/cQZIva8FEfPurDR334qI80JbaR3cteSufnp8yPhncGasNHffioDx/14aM+0pTYhiY/Lmb/PAfSFbXhoz581IeP+vBRH2lKbEOTH0IIIYQMKTT5cTGpt98TanM51IeP+vBRHz7qI02JbWjy42IGg8HdQ5AtasNHffioDx/14aM+0pTYhiY/LtbU1OTuIcgWteGjPnzUh4/68FEfaUpsQ5MfFxMEwd1DkC1qw0d9+KgPH/Xhoz7SlNhGVhc2lQP7hU3HjBmjyOuZEEIIIUrUmwub0pEfFysqKnL3EGSL2vBRHz7qw0d9+KiPNCW2ocmPi1mtVncPQbaoDR/14aM+fNSHj/pIU2Ibmvy4mBI/KdNZqA0f9eGjPnzUh4/6SFNiG5r8uFhAQIC7hyBb1IaP+vBRHz7qw0d9pCmxDU1+XKy0tNTdQ5AtasNHffioDx/14aM+0pTYhiY/hBBCCBlSaPLjYhEREe4egmxRGz7qw0d9+KgPH/WRpsQ2NPlxsfb2dncPQbaoDR/14aM+fNSHj/pIU2Ibmvy4WGNjo7uHIFvUho/68FEfPurDR32kKbENTX4IIYQQMqTQ5S0uMdCXt2CMKfI6Kc5AbfioDx/14aM+fNRH2mBpQ5e3kLHTp0+7ewiyRW34qA8f9eGjPnzUR5oS29Dkx8U6OzvdPQTZojZ81IeP+vBRHz7qI02JbWjy42J6vd7dQ5AtasNHffioDx/14aM+0pTYhiY/LhYUFOTuIcgWteGjPnzUh4/68FEfaUpsQ5MfFztz5oy7hyBb1IaP+vBRHz7qw0d9pCmxDU1+CCGEEDKk0OTHxcLDw909BNmiNnzUh4/68FEfPuojTYltaPLjYmaz2d1DkC1qw0d9+KgPH/Xhoz7SlNiGJj8uVl9f7+4hyBa14aM+fNSHj/rwUR9pSmxDkx9CCCGEDCk0+XGx5ORkdw9BtqgNH/Xhoz581IeP+khTYhua/LhYaWmpu4cgW9SGj/rwUR8+6sNHfaQpsQ1NflzMZDK5ewiyRW34qA8f9eGjPnzUR5oS28hy8rNx40bExsZCp9MhIyMD3377bY9u949//AOCICA7O9thOWMMK1euRFhYGLy8vJCZmYlTp04NwMilMcbQ3GFBu0qH5g4LGGMuvf/BwMfHx91DkDXqw0d9+KgPH/WR5sw29r+F1QaTW/8W8q/57gY7duzA0qVLsWnTJmRkZGDDhg3IyspCUVERgoODJW9XWlqKRx55BJMnT+7ys7Vr1+LFF1/Etm3bEBcXhyeeeAJZWVkoKCiATqcbyIcDo8mC3acasfN4HaoM/3274NfHEOarQfaoIExPCoBeK7tfg1uEhoa6ewiyRn34qA8f9eGjPtKc0abbv4WA2/4Wyu7Iz/r167FgwQLk5OQgLS0NmzZtgre3N9544w3J21itVtxzzz146qmnEB8f7/Azxhg2bNiAxx9/HLfeeitGjx6NN998E+fOncPOnTsH9LEcqmjB3e8cx6YDlag2OH5OQrXBjE0HKnH3O8dxqKJlQMcxWBQXF7t7CLJGffioDx/14aM+0vrbRo5/C2U1+TGbzTh8+DAyMzPFZSqVCpmZmdi/f7/k7VavXo3g4GDcd999XX525swZVFdXO2xz2LBhyMjI4G7TYDCgpaVF/Orta56HKlrw+GfFMFlsYAAuPbBnX2ay2PD4Z8U0ASKEEKI4cv1bKKvXW+rr62G1WhESEuKwPCQkBCdOnOj2Nl9//TVef/11HD16tNufV1dXi9u4dJv2n3UnPT0dbW1t4vc5OTlYvHgxwsLCxFlwSEgIGGOora0FACQlJaGiogINhjY8ddgMxrr+oi/F/vt/Vu85g5VXecDbQ0BgYCA0Gg3OnTsHAIiLi0NdXR2MRiM8PT2RmJiIwsJCAEBAQAC8vLxQWVkJAIiNjUVjYyNaWlqgVquRnJyMwsJCMMYwfPhw+Pr64uzZswCA6OhotLS0oKmpCYIgIDU1FUVFRbBarfDz84O/vz/KysoAAJGRkWhra0NjYyMAIC0tDSdPnoTFYoGvry8CAwPFi9+Fh4fDZDKhoaEBAJCSkoKSkhKYzWb4+PggJCQEJSUlAICwsDBYLBbU1dXBbDbDYrGgvLwcHR0d8PLyQkREBE6fPu3wO6ypqQEAJCYmorKyEu3t7dDpdIiOjsbJkycBXLgKsYeHB6qqqgAA8fHxqKmpQWtrKzQaDeLj48V9asSIEdBqtQ696+vrYTAY4OHhgZEjR6KgoEDs7e3tjYqKCgBATEwMzp8/L9nbz88P5eXlAICoqCgYDAbJ3gEBAeK7KiIiItDe3i72Tk1Nhc1mQ0FBAfR6PYKCghx6m81m8YPIkpOTUVpaCpPJBB8fH4SGhor7bGhoKGw2m8M+e/bsWbF3ZGSkeD5ccHAwBEEQeyckJKCqqgptbW3QarWIiYnh9q6trYXRaOy2t06n63afvbS3v78/9Hq9wz7b3NyM5uZmqFQqpKSk4MSJE7DZbPD09ITRaHTobTQacf78+S77bHe9Ozo6ut1n9Xo9goODu91nAWDkyJEoKyuDyWSCt7d3j54j7PtsVFSUQ2+VSiU+LyUkJKC6uhqtra3QarWIjY1FUVERAPTpOcJsNqOgoGBQP0fYew/Ec8SIESNQVlY2qJ8jTp8+jc7OTqc/RwBAQUFBr58jRoRG4snPi3v1t/DJz4vx4o2hGOHr3evniN6cPyQwGZ15e+7cOURERGDfvn2YMGGCuHzZsmXIz8/HwYMHHdY3GAwYPXo0XnnlFdx0000AgPnz56OpqUl8SWvfvn2YOHEizp07h7CwMPG2d955JwRBwI4dOxy2abFYkJ+fj/j4eKhU/zswptVqodVqe/Q4PvqpFpsOVF72l30xAcCD10RgZrr0eU1KV19fj8DAQHcPQ7aoDx/14aM+fNRHWl/buPpvodVqxQ8//IApU6bAw4N/bEdWL3sFBgZCrVaLs0i7mpqabk+4Ki4uRmlpKX7xi1/Aw8MDHh4eePPNN/HJJ5/Aw8MDxcXF4u16uk07X19f+Pn5iV89nfgwxrDzeF2vftl2O4/XDel3gdn/pUG6R334qA8f9eGjPtL60kbufwtlNfnRaDQYN24ccnNzxWU2mw25ubkOR4LsUlJScOzYMRw9elT8+r//+z9cf/31OHr0KKKiohAXF4fQ0FCHbba0tODgwYPdbrO/WkxWhzPZe4oBqDKYYTBZnT4mQgghxJXk/rdQVuf8AMDSpUsxb948jB8/HldffTU2bNiA1tZW5OTkAADmzp2LiIgIrFmzBjqdDunp6Q63Hz58OAA4LF+yZAmeeeYZJCUliW91Dw8P7/J5QM7Q3tm/X1hbpxV+Otn9WlzC/toy6R714aM+fNSHj/pI60sbuf8tlN1f2dmzZ6Ourg4rV65EdXU1xo4di127doknspWXlzuci9MTy5YtQ2trK+6//340NTVh0qRJ2LVr14B8xo+Xp7pft/fu5+0Hs7Nnz3b5qALyP9SHj/rwUR8+6iOtL23k/rdQdpMfAFi0aBEWLVrU7c/y8vK4t926dWuXZYIgYPXq1Vi9erUTRsfnp1UjzFeDaoO51yd5hfpq4KsdupOfjo4Odw9B1qgPH/Xhoz581EdaX9rI/W+hrM75UQJBEJA9KqhPt80eFQRBEJw8osHDy8vL3UOQNerDR334qA8f9ZHWlzZy/1tIk58BMD0pAFoPFXr6qxMAaD1UmJ4UMJDDkr3IyEh3D0HWqA8f9eGjPnzUR1pf28j5byFNfgaAXuuBlZlxEARc9pcuABAEYGVm3JC/xperLzY72FAfPurDR334qI+0vraR899CmvwMkPGRfngmK0Gc9V76i7cv03qo8ExWAsZH+rl+kIQQQsgAkuvfwqF9qGGAjY/0w9tzRnV7JdvQ/17J9saRI+CjGbonOV8sOHjofrp1T1AfPurDR334qI+0/raR499CmvwMML3WAzPTg5E9KggGkxXnahsQHjwCvlr1kD65uTvUg4/68FEfPurDR32kOaPNpX8L2zqt8PZUu+1vIb3s5SKCIMBP5wGbsQF+Og/6D60bl16ChDiiPnzUh4/68FEfac5sY/9bGOqrdevfQpr8EEIIIWRIocmPiyUkJLh7CLJFbfioDx/14aM+fNRHmhLb0OTHxaqqqtw9BNmiNnzUh4/68FEfPuojTYltaPLjYm1tbe4egmxRGz7qw0d9+KgPH/WRpsQ2NPlxMa1W6+4hyBa14aM+fNSHj/rwUR9pSmxDkx8Xi4mJcfcQZIva8FEfPurDR334qI80JbahyY+LnTx50t1DkC1qw0d9+KgPH/Xhoz7SlNiGJj+EEEIIGVJo8uNiQUFB7h6CbFEbPurDR334qA8f9ZGmxDY0+XExDw+6oogUasNHffioDx/14aM+0pTYhiY/LqbEz0twFmrDR334qA8f9eGjPtKU2IYmP4QQQggZUmjy42Lx8fHuHoJsURs+6sNHffioDx/1kabENjT5cbHa2lp3D0G2qA0f9eGjPnzUh4/6SFNiG5r8uJjRaHT3EGSL2vBRHz7qw0d9+KiPNCW2ocmPi2k0GncPQbaoDR/14aM+fNSHj/pIU2Ibmvy4mBJfO3UWasNHffioDx/14aM+0pTYhiY/LnbixAl3D0G2qA0f9eGjPnzUh4/6SFNiG5r8EEIIIWRIocmPi40YMcLdQ5AtasNHffioDx/14aM+0pTYhiY/LqbT6dw9BNmiNnzUh4/68FEfPuojTYltaPLjYpWVle4egmxRGz7qw0d9+KgPH/WRpsQ2NPkhhBBCyJBCkx8Xi42NdfcQZIva8FEfPurDR334qI80JbaR5eRn48aNiI2NhU6nQ0ZGBr799lvJdT/88EOMHz8ew4cPh4+PD8aOHYvt27c7rDN//nwIguDwNWPGjIF+GN1qbGx0y/0OBtSGj/rwUR8+6sNHfaQpsY2HuwdwqR07dmDp0qXYtGkTMjIysGHDBmRlZaGoqAjBwcFd1g8ICMAf//hHpKSkQKPR4F//+hdycnIQHByMrKwscb0ZM2Zgy5Yt4vdardYlj+dSLS0tbrnfwYDa8FEfPurDR334qI80JbaR3ZGf9evXY8GCBcjJyUFaWho2bdoEb29vvPHGG92uP3XqVMycOROpqalISEjAb3/7W4wePRpff/21w3parRahoaHil7+/vyseThceHrKbb8oGteGjPnzUh4/68FEfaUpsI6vJj9lsxuHDh5GZmSkuU6lUyMzMxP79+y97e8YYcnNzUVRUhOuuu87hZ3l5eQgODkZycjIWLlyIhoYGp4+/J0aOHOmW+x0MqA0f9eGjPnzUh4/6SFNiG1lNfurr62G1WhESEuKwPCQkBNXV1ZK3a25uhl6vh0ajwS233IKXXnoJ06dPF38+Y8YMvPnmm8jNzcVzzz2H/Px83HTTTbBarZLbNBgMaGlpEb9MJlP/HyCAgoICp2xHiagNH/Xhoz581IeP+khTYhtFHMvy9fXF0aNHYTQakZubi6VLlyI+Ph5Tp04FANx1113iuldccQVGjx6NhIQE5OXlYdq0ad1uMz09HW1tbeL3OTk5WLx4McLCwlBcXAzgwqSMMYba2loAQFJSEioqKtDe3g6dToeoqCicOnUKABAcHAyVSgWDwYCCggIkJCSguroara2t0Gq1iI2NRVFREQAgMDAQGo0G586dAwDExcWhrq4ORqMRnp6eSExMRGFhIYAL5zx5eXmJn8MQGxuLxsZGtLS0QK1WIzk5GYWFhWCMYfjw4fD19cXZs2cBANHR0WhpaUFTUxMEQUBqaiqKiopgtVrh5+cHf39/lJWVAQAiIyPR1tYmnviWlpaGkydPwmKxwNfXF4GBgThz5gwAIDw8HCaTSTy6lpKSgpKSEpjNZvj4+CAkJAQlJSUAgLCwMFgsFtTV1cFgMMBisaC8vBwdHR3w8vJCREQETp8+LfYGgJqaGgBAYmIiKisrxd7R0dE4efIkACAoKAgeHh6oqqoCcOHCfDU1NWhtbYVGo0F8fLx4vZoRI0ZAq9U69K6vr4fBYICHhwdGjhwp/scfEBAAb29vVFRUAABiYmJw/vx5yd5+fn4oLy8HAERFRcFgMEj2DggIQGlpKQAgIiIC7e3tYu/U1FS0traioKAAer0eQUFBDr3NZjPq6+sBAMnJySgtLYXJZIKPjw9CQ0PFfTY0NBQ2m81hnz179qzYOzIy0mGfFQRB7J2QkICqqiq0tbVBq9UiJiaG27u2thZGo7Hb3jqdrtt99tLe/v7+0Ov1Dvtsc3MzmpuboVKpkJKSghMnTsBms6GjowNGo9Ght9FoxPnz57vss9317ujo6Haf1ev1CA4O7nafBS78q7isrAwmkwne3t79fo6w/0PP2c8R9ueewfwcYe89EM8RVqsVZWVlg/o54vTp0+js7HT6c4T9uUfuzxGMMfSUwHqz9gAzm83w9vbG+++/j+zsbHH5vHnz0NTUhI8//rhH2/n1r3+Ns2fP4rPPPpNcJygoCM888wweeOABh+UWiwX5+fmIj4+HSvW/A2NardYpJ0lXVVUhLCys39tRImrDR334qA8f9eGjPtIGSxur1YoffvgBU6ZMuex5SrJ62Uuj0WDcuHHIzc0Vl9lsNuTm5mLChAk93o7NZuO+TFVRUYGGhgbuL9PX1xd+fn7il7PeHabX652yHSWiNnzUh4/68FEfPuojTYltZDX5AYClS5di8+bN2LZtGwoLC7Fw4UK0trYiJycHADB37lysWLFCXH/NmjXYvXs3SkpKUFhYiL/85S/Yvn077r33XgCA0WjEo48+igMHDqC0tBS5ubm49dZbkZiY6PBWeFexH04mXVEbPurDR334qA8f9ZGmxDayO+dn9uzZqKurw8qVK1FdXY2xY8di165d4mu55eXlDi9Htba24qGHHkJFRQW8vLyQkpKCt956C7NnzwYAqNVq/Pjjj9i2bRuampoQHh6OG2+8EU8//bTbPuuHEELIwGOMocVkRXunFV6eavhp1RAEwd3DIjIgq3N+5MB+zs+YMWOgVqudvn2j0ajIQ4jOQG34qA8f9eEbSn2MJgt2n2rEzuN1qDKYxeVhvhpkjwrC9KQA6LWO//YfSn16a7C0GbTn/AwFzc3N7h6CbFEbPurDR334hkqfQxUtuPud49h0oBLVF018AKDaYMamA5W4+53jOFTh+KnFQ6VPXyixDU1+XGyw70SMMTR3WFBtMKG5w9KrtxZezmBvM9CoDx/14RsKfQ5VtODxz4phstjAAFz67GRfZrLY8PhnxQ4ToKHQp6+U2EZ25/wo3cXnKw0mfTmM3FuDtY2rUB8+6sOn9D5GkwWr95wBY10nPZdi//0/q/ecwdtzRkGv9VB8n/5QYpsenfPT3yu6Dhs2bEDOnxkIA33Oz2B0qKIFq/ecgcliA+D4xGI/dVDrocLKzDiMj/Rz+fgIIeSjn2qx6UDlZSc+FxMAPHhNBGamd71oNhl8nH7OT2BgIIKCgvr8lZ+f75QHpgT2T7AcLPpzGLm3BlsbV6M+fNSHT8l9GGPYebyuVxMfu53H68AYU3Sf/lJimx6/TpGdnY3Ro0f3auOtra34y1/+0utBKZnNZnP3EHqsv4eRe2swtXEH6sNHffiU3KfFZHV4Ob6nGIAqgxkGk1XRffpLiW16/Bfq9ttvx913392rjTc0NGDdunW9HpSSDRs2zN1D6LHdpxrFIz49YT8CtPtUY58OIw+mNu5AffioD5+S+7R3Sl+kuifaOq2K7tNfSmzTo5e9/vrXv2L8+PG93rher8df//pXJCcn9/q2SjVYdiJnHEburcHSxl2oDx/14VNyHy/P/p2f6e2pln2fgXyn7eXIvU1f9OjIz29/+9s+bVyr1fb5tkpVXl6OtLQ0dw/jspxxGNlP17uXvgZLG3ehPnzUh0/Jffy0aoT5alBtMPf6hOdQXw18tWoUlsizjyveaXs5Stx3lPf+NeIUzjiMTAghriAIArJHBfXpttmjgmR7yYu+fmAjuTynT37a29vx1Vdf4auvvnL2phUhKirK3UPoEWccRu6twdLGXagPH/XhU3qf6UkB0Hqo0NNpjIALH9ExPSkAgPz6uPKdtpcjtzbO4PTJT3l5OaZOnYrrr7/e2ZtWBKPR6O4h9Ij9MHJv/z0k4MLhWF9t7yc/g6WNu1AfPurDp/Q+eq0HVmbGQRBw2ectAYAgACsz48SXjOTUp7fvtGX/faet0WQZmPHIqI2zOH3yExgYiJUrV2LlypXO3rQinD9/3t1D6BF3HEYeLG3chfrwUR++odBnfKQfnslKEI8AXfosZF+m9VDhmawEhw9llVOf/rzTdiDIqY2zOP0sqREjRuDJJ5909maJG0xPCsCWQ1U9/o/w0sPIhBDiauMj/fD2nFHdniQc+t+ThG8cOQI+Gnl+gn9/32kr53OY5KRHl7cYSujyFo7srztf7vCr/TDypf+aIoQQd2GMwWCyoq3TCm9PNXy1atlPDJo7LJj11rE+3/79e6/o9TttlaI3l7focSHeCcyCIECn0yEmJgbBwXSNFJ6TJ09i5MiR7h5Gj9kPI7vi2l6DrY2rUR8+6sM3FPsIggA/nUePJgNy6eOMd9o6e/IjlzbO1ONCU6dO7dGM+corr8T69etx3XXX9WtgSmWxDMwJaQPJVYeRB2MbV6I+fNSHj/rwyaWPO95pezlyaeNMPZ78vPfee9yft7W14cSJE3j77beRlZWFvXv39ulToZXOz29wviSk13pgZnowskcFDdhh5MHaxlWoDx/14aM+fHLp44wPbHT6mGTSxpl6dW2vnnj00Udx5ZVX4plnnsHOnTv7Oi7FCggY3CcD9+Ywcm8N9jYDjfrwUR8+6sMnlz72d9puOlDZ69sO1MnOcmnjTE5/q/vw4cMxb948fPPNN87etCKUlpa6ewiyRW34qA8f9eGjPnxy6tPfD2x0Njm1cZYBubxFREQEWlro47YJIYSQ3urvBzaSyxuQyc+JEycQEhIyEJse9CIiItw9BNmiNnzUh4/68FEfPrn16c8HNjqb3No4g9MnP99//z1ee+013HTTTc7etCJ0dHS4ewiyRW34qA8f9eGjPnxy7GN/p+2D10Qg1Ffj8LNQXw0evCYC79ydPuCfrSbHNv3V42NkDz/8MPfn7e3tKCoqwoEDBxASEkKf8iyhoaGBjopJoDZ81IeP+vBRHz659nHFO20vR65t+qPHk5+XX36Z+3OtVouYmBgsWrQIy5cvpw87JIQQQpxkIN9pOxTR5S0uMdCXt7DZbFCpBuRUq0GP2vBRHz7qw0d9+KiPtMHSpjeXt5D/o1GYkpISdw9BtqgNH/Xhoz581IeP+khTYhua/LiY2Wy+/EpDFLXhoz581IeP+vBRH2lKbOP0yc/Zs2dxww03YNq0ac7etCLo9Xp3D0G2qA0f9eGjPnzUh4/6SFNiG6efOdXW1oa8vDyXnYU+2NCJ4NKoDR/14aM+fNSHj/pIU2Ibpx/5SU5Ohs1mg9VqdfamFUGJr506C7Xhoz581IeP+vBRH2lKbDNg5/z89NNPA7VpQgghhJA+c+rkp6KiAs8//zzGjh2LMWPG9Hk7GzduRGxsLHQ6HTIyMvDtt99Krvvhhx9i/PjxGD58OHx8fDB27Fhs377dYR3GGFauXImwsDB4eXkhMzMTp06d6vP4+iMsLMwt9zsYUBs+6sNHffioDx/1kabENv2e/DQ3N+Nvf/sbrr/+esTGxmL58uXw9PTEqlWr+rS9HTt2YOnSpVi1ahWOHDmCMWPGICsrC7W1td2uHxAQgD/+8Y/Yv38/fvzxR+Tk5CAnJwefffaZuM7atWvx4osvYtOmTTh48CB8fHyQlZXllo/stlgsLr/PwYLa8FEfPurDR334qI80Jbbp0+THbDbjgw8+wG233YbQ0FDcf//9+Oqrr7B48WKcPXsW3333HVauXNmnAa1fvx4LFixATk4O0tLSsGnTJnh7e+ONN97odv2pU6di5syZSE1NRUJCAn77299i9OjR+PrrrwFcOOqzYcMGPP7447j11lsxevRovPnmmzh37hx27tzZpzH2R11dncvvc7CgNnzUh4/68FEfPuojTYltejX5+eKLL3DfffchJCQEd955J2pra7Fu3Trs3bsXjDFMnjwZ4eHhfR6M2WzG4cOHkZmZ+b8BqlTIzMzE/v37L3t7xhhyc3NRVFSE6667DgBw5swZVFdXO2xz2LBhyMjI4G7TYDCgpaVF/DKZTH1+XIQQQgiRjx6/1T0yMhJVVVW48sor8dhjj+Guu+5CVFQUAKC4uNgpg6mvr4fVau1yAbWQkBCcOHFC8nbNzc2IiIiAyWSCWq3GK6+8gunTpwMAqqurxW1cuk37z7qTnp6OtrY28fucnBwsXrwYYWFh4uMNCQkBY0x8SS4pKQkVFRVob2+HTqdDVFSUeG5RcHAwVCoVGGMoKChAQkICqqur0draCq1Wi9jYWBQVFQEAAgMDodFocO7cOQBAXFwc6urqYDQa4enpicTERBQWFgK48LKfl5cXKisrAQCxsbFobGxES0sL1Go1kpOTUVhYCMYYhg8fDl9fX5w9exYAEB0djZaWFjQ1NUEQBKSmpqKoqAhWqxV+fn7w9/dHWVkZgAu//7a2NjQ2NgIA0tLScPLkSVgsFvj6+iIwMBBnzpwBAISHh8NkMqGhoQEAkJKSgpKSEpjNZvj4+CAkJER890BYWBgsFgvq6urAGIPFYkF5eTk6Ojrg5eWFiIgInD592uF3WFNTAwBITExEZWWl2Ds6OhonT54EAAQFBcHDwwNVVVUAgPj4eNTU1KC1tRUajQbx8fHiPjVixAhotVqH3vX19TAYDPDw8MDIkSNRUFAg9vb29kZFRQUAICYmBufPn5fs7efnh/LycgBAVFQUDAaDZO+AgACUlpYCACIiItDe3i72Tk1NhVqtRkFBAfR6PYKCghx6m81m1NfXA7jwjsvS0lKYTCb4+PggNDRU3GdDQ0Nhs9kc9tmzZ8+KvSMjIx32WUEQxN4JCQmoqqpCW1ubeC0/Xu/a2loYjcZue+t0um732Ut7+/v7Q6/XO+yzzc3NaG5uhkqlQkpKCk6cOAGbzQZfX18YjUaH3kajEefPn++yz3bXu6Ojo9t9Vq/XIzg4uNt9FgBGjhyJsrIymEwmeHt79/s5wv685OznCPtzz2B+jrD3HojniJiYGJSVlQ3q54jTp0+js7PT6c8RGo0GBQUFsn+O6M3Vunp8bS+VSoW4uDgsXboUs2bNcnjff3FxMZKSkvD+++/jtttu6/GdX+rcuXOIiIjAvn37MGHCBHH5smXLkJ+fj4MHD3Z7O5vNhpKSEhiNRuTm5uLpp5/Gzp07MXXqVOzbtw8TJ07EuXPnHE7auvPOOyEIAnbs2OGwLfu1veLj4x2uZaLVaqHVavv82OyKi4uRkJDQ7+0oEbXhoz581IeP+vBRH2mDpc2AXNvr008/xYQJE7B8+XJERETgxhtvxJYtW9Dc3NzvAdsFBgZCrVaLs0i7mpoahIaGSt5OpVIhMTERY8eOxe9//3vccccdWLNmDQCIt+vtNn19feHn5yd+OWPiA4BePuOgNnzUh4/68FEfPuojTYltejz5uemmm/DWW2+hpqYGW7ZsgYeHBx544AGEhobiV7/6FQRBgM1m69dgNBoNxo0bh9zcXHGZzWZDbm6uw5Ggy7HZbOIvKy4uDqGhoQ7bbGlpwcGDB3u1TWfx9vZ2+X0OFtSGj/rwUR8+6sNHfaQpsU2v3+3l7e2Ne++9F//+979RWVmJ5557Dh0dHWCM4d5778X06dPx8ssvi69L9tbSpUuxefNmbNu2DYWFhVi4cCFaW1uRk5MDAJg7dy5WrFghrr9mzRrs3r0bJSUlKCwsxF/+8hds374d9957LwBAEAQsWbIEzzzzDD755BMcO3YMc+fORXh4OLKzs/s0xv5Q4uclOAu14aM+fNSHj/rwUR9pSmzTr8/5CQoKwsMPP4yDBw/i5MmTWL58OcrKyvDwww/3+fXB2bNnY926dVi5ciXGjh2Lo0ePYteuXeKJbOXl5eIJUwDQ2tqKhx56CKNGjcLEiRPxwQcf4K233sKvf/1rcZ1ly5Zh8eLFuP/++/Gzn/0MRqMRu3btgk6n68/D7xNnnRyuRNSGj/rwUR8+6sNHfaQpsU2PT3jujYMHD+Ltt9/GCy+84OxNDzj7Cc9jxoyBWq12+vYLCgqQlpbm9O0qAbXhoz581IeP+vBRH2mDpU1vTnh2+lXdASAjIwMZGRkDselB79K33JP/oTZ81IeP+vBRHz7qI02JbXr0stf69evFz5fojY6ODqxfv178vAOCXn0OwVBDbfioDx/14aM+fNRHmhLb9Gjy8+ijj+Lw4cO93nhrayseffRR8UOOCCSvUUaozeVQHz7qw0d9+KiPNCW26dHLXowxfPjhh+KnaPbUxZ+QTAghhBAiBz0+5+fDDz/Ehx9+OJBjGRKSkpLcPQTZojZ81IeP+vBRHz7qI02JbXr0spfNZuvX1w033DDQj2PQoPOfpFEbPurDR334qA8f9ZGmxDb9+pwf0nvt7e3uHoJsURs+6sNHffioDx/1kabENgPyVncizR0frDhYUBs+JfdhjKHFZEV7pxVenmr4adUQBKFX21ByH2egPnzUR5oS29Dkx8WioqLcPQTZojZ8SuxjNFmw+1Qjdh6vQ5XBLC4P89Uge1QQpicFQK/t2dOUEvs4E/Xhoz7SlNiGXvZysVOnTrl7CLJFbfiU1udQRQvufuc4Nh2oRPVFEx8AqDaYselAJe5+5zgOVbT0aHtK6+Ns1IeP+khTYhua/BBCXO5QRQse/6wYJosNDMClH6FmX2ay2PD4Z8U9ngARQkhP9HryYzKZ8Mknn+DHH38ciPEoXnBwsLuHIFvUhk8pfYwmC1bvOQPGuk56LsUAMAas3nMGRpOFu65S+gwU6sNHfaQpsU2vJz8ajQazZs3Cvn37BmI8iqdS0cE2KdSGTyl9dp9qFI/49IT9CNDuU43c9ZTSZ6BQHz7qI02JbXr9iARBQFJSEurr6wdiPIpXXV3t7iHIFrXhU0Ifxhh2Hq/r8cTnYjuP13GvMaSEPgOJ+vBRH2lKbNOn6dxjjz2Gl19+uU8XOyWEDF0tJqvDu7p6igGoMphhMFmdPyhCyJDTp7e6HzhwACNGjEB6ejqmTp2K2NhYeHl5OawjCAJeeOEFpwxSSRISEtw9BNmiNnxK6NPe2b/JS1unFX667p+2lNBnIFEfPuojTYlt+jT5efnll8X/nZub2+06NPnpXnV1NWJiYtw9DFmiNnxK6OPlqe7X7b05t1dCn4FEffiojzQltunT5Mdmszl7HENGa2uru4cgW9SGTwl9/LRqhPlqUG0w9+q8HwFAqK8GvlrpyY8S+gwk6sNHfaQpsY3yTuGWOa1W6+4hyBa14VNCH0EQkD0qqE+3zR4VxL3khRL6DCTqw0d9pCmxTb8mPwcOHMCaNWvwu9/9TvwEyLa2Nhw5cgRGo9EpA1Sa2NhYdw9BtqgNn1L6TE8KgNZDhZ5euUsAoPVQYXpSAHc9pfQZKNSHj/pIU2KbPk1+zGYzbrvtNkycOBF//OMf8eKLL+Ls2bMXNqhS4cYbb6TzfSTQO+SkURs+pfTRaz2wMjMOgoDLToAEAIIArMyMu+w1vpTSZ6BQHz7qI02Jbfo0+XniiSfwr3/9C6+++iqKioocPntDp9Nh1qxZ+Pjjj502SEKIsoyP9MMzWQniEaBLJ0H2ZVoPFZ7JSsD4SD/XD5IQolh9mvy88847WLhwIe6//34EBHQ9FJ2amoqSkpJ+D06JAgMD3T0E2aI2fErrMz7SD2/PGYUHr4lAqK/G4Wehvho8eE0E3rk7vccTH6X1cTbqw0d9pCmxTZ/e7VVbW4srrrhC8udqtRptbW19HpSSaTSay680RFEbPiX20Ws9MDM9GNmjgmAwWdHWaYW3pxq+WjX35ObuKLGPM1EfPuojTYlt+nTkJyoqCidOnJD8+TfffIPExMQ+D0rJzp075+4hyBa14VNyH0EQ4KfzQKivFn46j15PfABl93EG6sNHfaQpsU2fJj933303XnvtNezfv19cZn+y2rx5M959913MnTvXOSMkhBBCCHEigfGuFCjBbDbjF7/4Bb744gukpqbi+PHjuOKKK9DY2IiKigrcfPPN+Pjjj6FW9+/TXN3BYrEgPz8fY8aMGZDxt7e3d7kUCLmA2vBRHz7qw0d9+KiPtMHSxmq14ocffsCUKVPg4cE/q6dPR340Gg127dqFLVu2ID4+HikpKTCZTBg9ejS2bt2Kf/7zn4Ny4uMKdXV17h6CbFEbPurDR334qA8f9ZGmxDZ9OuEZuPAy17333ot7773XmeNRPPrwR2nUho/68FEfPurDR32kKbFNn478vPbaaygsLHT2WIYET09Pdw9BtqgNH/Xhoz581IeP+khTYps+nfOjUqkgCAICAgIwadIkTJ48GZMnT8a4ceOgUg3uy4UN9Dk/jLE+vZNlKKA2fNSHj/rwUR8+6iNtsLQZ8HN+qqursWPHDtxzzz0oLy/HsmXLcM0112D48OG48cYb8fTTTyMvL68vm1Y8OmImjdrwUR8+6sNHffiojzQltunT5Cc4OBh33HEHNmzYgMOHD+P8+fP497//jYcffhjl5eV48sknkZmZ2edBbdy4EbGxsdDpdMjIyMC3334rue7mzZsxefJk+Pv7w9/fH5mZmV3Wnz9/PgRBcPiaMWNGn8dHCCGEkMGr369RFRcX44MPPsC7776LHTt24OTJk/D29sYNN9zQp+3t2LEDS5cuxapVq3DkyBGMGTMGWVlZqK2t7Xb9vLw8zJkzB19++SX279+PqKgo3HjjjaisrHRYb8aMGaiqqhK/3nnnnT6Nr7+6uxwIuYDa8FEfPurDR334qI80Jbbp07u9Xn75Zezduxd79+5FdXW1eO7PwoULMXnyZFx11VV9Pl9m/fr1WLBgAXJycgAAmzZtwqeffoo33ngDy5cv77L+3//+d4fv//a3v+GDDz5Abm6uwwctarVahIaG9mlMzjQYPivBXagNH/Xhoz581IeP+khTYps+TX4efvhhqNVq3H777Xj00Ucxbtw4pwzGbDbj8OHDWLFihbhMpVIhMzPT4dOkedra2tDZ2dllppqXl4fg4GD4+/vjhhtuwDPPPIMRI0ZIbsdgMDicvK3VaqHVanv5iLqqrKzEsGHD+r0dJaI2fNSHj/rwUR8+6iNNiW36NPn5zW9+g6+//hrvv/8+du7cifHjx4vv+Jo4cWKfI9XX18NqtSIkJMRheUhICPdaYhf7wx/+gPDwcIdzjmbMmIHbbrsNcXFxKC4uxmOPPYabbroJ+/fvlzxClZ6e7nBx1pycHCxevBhhYWEoLi4Wx8UYE1+SS0pKQkVFBdrb26HT6RAVFYVTp04BuHCelEqlgsFgQEFBARISElBdXY3W1lZotVrExsaiqKgIwIUr6Go0GvF6KnFxcairq4PRaISnpycSExPFE9ACAgLg5eUlvswXGxuLxsZGtLS0QK1WIzk5GYWFhWCMYfjw4fD19cXZs2cBANHR0WhpaUFTUxMEQUBqaiqKiopgtVrh5+cHf39/lJWVAQAiIyPR1taGxsZGAEBaWhpOnjwJi8UCX19fBAYG4syZMwCA8PBwmEwmNDQ0AABSUlJQUlICs9kMHx8fhISEoKSkBAAQFhYGi8WCuro6GAwGWCwWlJeXo6OjA15eXoiIiMDp06fF3gBQU1MDAEhMTERlZaXYOzo6GidPngQABAUFwcPDA1VVVQCA+Ph41NTUoLW1FRqNBvHx8eI+NWLECGi1Wofe9fX1MBgM8PDwwMiRI1FQUCD29vb2RkVFBQAgJiYG58+fl+zt5+eH8vJyABeuiWcwGCR7BwQEoLS0FAAQERGB9vZ2sXdqaipaW1tRUFAAvV6PoKAgh95msxn19fUAgOTkZJSWlsJkMsHHxwehoaHiPhsaGgqbzeawz549e1bsHRkZ6bDPCoIg9k5ISEBVVRXa2tqg1WoRExPD7V1bWwuj0dhtb51O1+0+e2lvf39/6PV6h322ubkZzc3NUKlUSElJwYkTJ2Cz2dDR0QGj0ejQ22g04vz581322e56d3R0dLvP6vV6BAcHd7vPAsDIkSNRVlYGk8kEb2/vfj9HVFdXi72d+Rxhf+4ZzM8R9t4D8RxhtVpRVlY2qJ8jTp8+jc7OTqc/R9ife+T+HNGbN6/36a3udi0tLfj666/x9ddfY+/evfjuu+9gsViQnp6OyZMn46WXXurV9s6dO4eIiAjs27cPEyZMEJcvW7YM+fn5OHjwIPf2zz77LNauXYu8vDyMHj1acr2SkhIkJCRgz549mDZtmsPP7G91j4+PH5AjP21tbfD29u73dpSI2vBRHz7qw0d9+KiPtMHSZsDf6m7n5+eHm2++GX/+85/x5ptv4sUXX0RSUhJ+/PFHvPLKK73eXmBgINRqtTiLtKupqbns+Trr1q3Ds88+i88//5w78QEuzDgDAwPFfy10x9fXF35+fuKXMyY+AMRZOumK2vBRHz7qw0d9+KiPNCW26fPlLQoKCrB371589dVX2Lt3r3h4Kjw8HHfddRcmT57c621qNBqMGzcOubm5yM7OBgDYbDbk5uZi0aJFkrdbu3Yt/vSnP+Gzzz7D+PHjL3s/FRUVaGhoQFhYWK/H2F8tLS0uv8/BgtrwUR8+6sNHffiojzQltunT5CcwMBDnz58HYwwpKSm46aabxE96jo2N7deAli5dinnz5mH8+PG4+uqrsWHDBrS2torv/po7dy4iIiKwZs0aAMBzzz2HlStX4u2330ZsbKz4erler4der4fRaMRTTz2F22+/XXxdc9myZUhMTERWVla/xtoXdMFXadSGj/rwUR8+6sNHfaQpsU2fJj/z5s3D5MmTMWnSJAQGBjp1QLNnz0ZdXR1WrlyJ6upqjB07Frt27RJPZCsvL3c4F+fVV1+F2WzGHXfc4bCdVatW4cknn4RarcaPP/6Ibdu2oampCeHh4eKnUDvrpazeSE5Odvl9DhbUho/68FEfPurDR32kKbFNv054VqKBvrZXYWEhUlNTnb5dJaA2fNSHj/rwUR8+6iNtsLTpzQnPfT7nBwDy8/Px6aefim91jImJwS233IIpU6b0Z7OKRnNNadSGj/rwUR8+6sNHfaQpsU2fJj9msxlz5szBzp07xc8qAICmpib85S9/wcyZM/HOO+/A09PTmWNVBHsr0hW14aM+fNSHj/rwUR9pSmzTp7e6P/XUU/joo4/w+9//HlVVVWhsbERjYyOqq6vxyCOP4MMPP8Tq1audPVZF8PX1dfcQZIva8FEfPurDR334qI80Jbbp0+Tn7bffxrx587B27VqHT2MODg7Gc889h7lz52L79u1OG6SS2D85lXRFbfioDx/14aM+fNRHmhLb9GnyU1VVhYyMDMmfZ2RkiG85J4QQQgiRkz5NfiIjI5GXlyf58/z8fERGRvZ1TIoWHR3t7iHIFrXhoz581IeP+vBRH2lKbNOnyc+8efPw7rvv4sEHHxQvumaz2VBUVISFCxfivffew/z58508VGVQ4idlOgu14aM+fNSHj/rwUR9pSmzTp8nPY489hrlz5+L//b//h7S0NOh0Omi1WqSlpeG1117D3Llz8dhjjzl7rIrQ1NTk7iHIFrXhoz581IeP+vBRH2lKbNOnt7qr1Wps3boVS5cuxaeffory8nIAFz7n5+abb77shUWHMkEQ3D0E2aI2fNSHj/rwUR8+6iNNiW169QnPHR0d+Pjjj3HmzBkEBgbilltuccvFQQfSQH/CMyGEEEKcrzef8Nzjl71qa2uRnp6Ou+++G4899hjuv/9+JCUlYc+ePf0e8FBSVFTk7iHIFrXhoz581IeP+vBRH2lKbNPjyc/TTz+N0tJS/O53v8O//vUvbNiwAV5eXnjggQcGcnyKY7Va3T0E2aI2fNSHj/rwUR8+6iNNiW16fM7P559/jrlz52LdunXispCQENx9990oKipS5FVfB4Kfn5+7hyBb1IaP+vBRHz7qw0d9pCmxTY+P/JSXl2PSpEkOyyZNmgTGGGpqapw+MKXy9/d39xBki9rwUR8+6sNHffiojzQltunx5MdkMkGn0zkss39vsVicOyoFKysrc/cQZIva8FEfPurDR334qI80Jbbp1VvdS0tLceTIEfH75uZmAMCpU6e6verrVVdd1b/REUIIIYQ4WY/f6q5Sqbp9rz9jrMty+7LBeJLUQL/VvaWlRZGvnzoDteGjPnzUh4/68FEfaYOlTW/e6t7jIz9btmzp98AI0NbWNih2InegNnzUh4/68FEfPuojTYltejz5mTdv3kCOY8hobGxEaGiou4chS9SGj/rwUR8+6sNHfaQpsU2fru1FCCGEEDJY9eryFkMBXd6CEEIIGXwG5PIWxDlOnjzp7iHIFrXhoz581IeP+vBRH2lKbEOTHxejz0SSRm34qA8f9eGjPnzUR5oS29Dkx8V8fX3dPQTZojZ81IeP+vBRHz7qI02JbWjy42KBgYHuHoJsURs+6sNHffioDx/1kabENjT5cbEzZ864ewiyRW34qA8f9eGjPnzUR5oS29DkhxBCCCFDCk1+XCw8PNzdQ5AtasNHffioDx/14aM+0pTYhiY/LmYymdw9BNmiNnzUh4/68FEfPuojTYltaPLjYg0NDe4egmxRGz7qw0d9+KgPH/WRpsQ2NPkhhBBCyJAiy8nPxo0bERsbC51Oh4yMDHz77beS627evBmTJ0+Gv78//P39kZmZ2WV9xhhWrlyJsLAweHl5ITMzE6dOnRroh9GtlJQUt9zvYEBt+KgPH/Xhoz581EeaEtvIbvKzY8cOLF26FKtWrcKRI0cwZswYZGVloba2ttv18/LyMGfOHHz55ZfYv38/oqKicOONN6KyslJcZ+3atXjxxRexadMmHDx4ED4+PsjKykJHR4erHpaopKTE5fc5WFAbPurDR334qA8f9ZGmxDaym/ysX78eCxYsQE5ODtLS0rBp0yZ4e3vjjTfe6Hb9v//973jooYcwduxYpKSk4G9/+xtsNhtyc3MBXDjqs2HDBjz++OO49dZbMXr0aLz55ps4d+4cdu7c6cJHdoHZbHb5fQ4W1IaP+vBRHz7qw0d9pCmxjawmP2azGYcPH0ZmZqa4TKVSITMzE/v37+/RNtra2tDZ2YmAgAAAFz6cqbq62mGbw4YNQ0ZGBnebBoMBLS0t4pezznb38fFxynaUiNrwUR8+6sNHffiojzQltuFf893F6uvrYbVaERIS4rA8JCQEJ06c6NE2/vCHPyA8PFyc7FRXV4vbuHSb9p91Jz09HW1tbeL3OTk5WLx4McLCwlBcXCxugzEmviSXlJSEiooKtLe3Q6fTISoqSjy3KDg4GCqVCi0tLSgoKEBCQgKqq6vR2toKrVaL2NhYFBUVAbjwUeIajQbnzp0DAMTFxaGurg5GoxGenp5ITExEYWEhACAgIABeXl7iy3yxsbFobGxES0sL1Go1kpOTUVhYCMYYhg8fDl9fX5w9exYAEB0djZaWFjQ1NUEQBKSmpqKoqAhWqxV+fn7w9/dHWVkZACAyMhJtbW1obGwEAKSlpeHkyZOwWCzw9fVFYGCg+Cmg4eHhMJlM4jsEUlJSUFJSArPZDB8fH4SEhIiHUcPCwmCxWFBXVwer1QqLxYLy8nJ0dHTAy8sLEREROH36tMPvsKamBgCQmJiIyspKsXd0dLR49eGgoCB4eHigqqoKABAfH4+amhq0trZCo9EgPj5e3KdGjBgBrVbr0Lu+vh4GgwEeHh4YOXIkCgoKxN7e3t6oqKgAAMTExOD8+fOSvf38/FBeXg4AiIqKgsFgkOwdEBCA0tJSAEBERATa29vF3qmpqWhvb0dBQQH0ej2CgoIcepvNZtTX1wMAkpOTUVpaCpPJBB8fH4SGhor7bGhoKGw2m8M+e/bsWbF3ZGSkwz4rCILYOyEhAVVVVWhra4NWq0VMTAy3d21tLYxGY7e9dTpdt/vspb39/f2h1+sd9tnm5mY0NzdDpVIhJSUFJ06cgM1mg4+PD4xGo0Nvo9GI8+fPd9lnu+vd0dHR7T6r1+sRHBzc7T4LACNHjkRZWRlMJhO8vb37/Rxhf15y9nOE/blnMD9H2HsPxHNEREQEysrKBvVzxOnTp9HZ2en05wiz2YyCggLZP0cwxtBTAuvN2gPs3LlziIiIwL59+zBhwgRx+bJly5Cfn4+DBw9yb//ss89i7dq1yMvLw+jRowEA+/btw8SJE3Hu3DmEhYWJ6955550QBAE7duxw2IbFYkF+fj7i4+OhUv3vwJhWq4VWq+33YywoKEBaWlq/t6NE1IaP+vBRHz7qw0d9pA2WNlarFT/88AOmTJkCDw/+sR1ZvewVGBgItVotziLtampqEBoayr3tunXr8Oyzz+Lzzz8XJz4AxNv1dpu+vr7w8/MTv5wx8SGEEEKI+8lq8qPRaDBu3DjxZGUA4snLFx8JutTatWvx9NNPY9euXRg/frzDz+Li4hAaGuqwzZaWFhw8eJC7zYFy8dEn4oja8FEfPurDR334qI80JbaR1Tk/ALB06VLMmzcP48ePx9VXX40NGzagtbUVOTk5AIC5c+ciIiICa9asAQA899xzWLlyJd5++23ExsaKr5fr9Xro9XoIgoAlS5bgmWeeQVJSEuLi4vDEE08gPDwc2dnZLn98FovF5fc5WFAbPurDR334qA8f9ZGmxDaym/zMnj0bdXV1WLlyJaqrqzF27Fjs2rVLPJGtvLzc4VycV199FWazGXfccYfDdlatWoUnn3wSwIVzhlpbW3H//fejqakJkyZNwq5du6DT6Vz2uOzq6uoQFBTk8vsdDKgNH/Xhoz581IeP+khTYhvZTX4AYNGiRVi0aFG3P8vLy3P43n7mO48gCFi9ejVWr17thNERQgghZDCT1Tk/Q8HIkSPdPQTZojZ81IeP+vBRHz7qI02JbWjy42L2z3MgXVEbPurDR334qA8f9ZGmxDY0+XExd1xPbLCgNnzUh4/68FEfPuojTYltaPLjYl5eXu4egmxRGz7qw0d9+KgPH/WRpsQ2NPlxsYiICHcPQbaoDR/14aM+fNSHj/pIU2Ibmvy4mP0aNKQrasNHffioDx/14aM+0pTYhiY/hBBCCBlSaPLjYpdeXZ78D7Xhoz581IeP+vBRH2lKbEOTH0IIIYQMKTT5cbFLry5P/ofa8FEfPurDR334qI80JbahyQ8hhBBChhSa/LhYYmKiu4cgW9SGj/rwUR8+6sNHfaQpsQ1NflyssrLS3UOQLWrDR334qA8f9eGjPtKU2IYmPy7W3t7u7iHIFrXhoz581IeP+vBRH2lKbEOTHxfT6XTuHoJsURs+6sNHffioDx/1kabENjT5cbHo6Gh3D0G2qA0f9eGjPnzUh4/6SFNiG5r8uNjJkyfdPQTZojZ81IeP+vBRHz7qI02JbWjyQwghhJAhhSY/LhYUFOTuIcgWteGjPnzUh4/68FEfaUpsQ5MfF/Pw8HD3EGSL2vBRHz7qw0d9+KiPNCW2ocmPi1VVVbl7CLJFbfioDx/14aM+fNRHmhLb0OSHEEIIIUMKTX5cLD4+3t1DkC1qw0d9+KgPH/Xhoz7SlNiGJj8upsSr4zoLteGjPnzUh4/68FEfaUpsQ5MfF2ttbXX3EGSL2vBRHz7qw0d9+KiPNCW2ocmPi2k0GncPQbaoDR/14aM+fNSHj/pIU2Ibmvy4mBJfO3UWasNHffioDx/14aM+0pTYhiY/LnbixAl3D0G2qA0f9eGjPnzUh4/6SFNiG5r8EEIIIWRIocmPi40YMcLdQ5AtasNHffioDx/14aM+0pTYhiY/LqbVat09BNmiNnzUh4/68FEfPuojTYltaPLjYufOnXP3EGSL2vBRHz7qw0d9+KiPNCW2kd3kZ+PGjYiNjYVOp0NGRga+/fZbyXWPHz+O22+/HbGxsRAEARs2bOiyzpNPPglBEBy+UlJSBvAREEIIIUTOZDX52bFjB5YuXYpVq1bhyJEjGDNmDLKyslBbW9vt+m1tbYiPj8ezzz6L0NBQye2OGjUKVVVV4tfXX389UA/hsuLi4tx233JHbfioDx/14aM+fNRHmhLbyGrys379eixYsAA5OTlIS0vDpk2b4O3tjTfeeKPb9X/2s5/h+eefx1133cV9TdLDwwOhoaHiV2Bg4EA9hMuqr693233LHbXhoz581IeP+vBRH2lKbCObyY/ZbMbhw4eRmZkpLlOpVMjMzMT+/fv7te1Tp04hPDwc8fHxuOeee1BeXn7Z2xgMBrS0tIhfJpOpX2O4eLuke9SGj/rwUR8+6sNHfaQpsY2HuwdgV19fD6vVipCQEIflISEh/fqApYyMDGzduhXJycmoqqrCU089hcmTJ+Onn36Cr6+v5O3S09PR1tYmfp+Tk4PFixcjLCwMxcXF4tgYY+LLcklJSaioqEB7ezt0Oh2ioqJw6tQpAEBwcDBUKhWMRiMKCgqQkJCA6upqtLa2QqvVIjY2FkVFRQCAwMBAaDQa8SSzuLg41NXVwWg0wtPTE4mJiSgsLAQABAQEwMvLC5WVlQCA2NhYNDY2oqWlBWq1GsnJySgsLARjDMOHD4evry/Onj0LAIiOjkZLSwuampogCAJSU1NRVFQEq9UKPz8/+Pv7o6ysDAAQGRmJtrY2NDY2AgDS0tJw8uRJWCwW+Pr6IjAwEGfOnAEAhIeHw2QyoaGhAQCQkpKCkpISmM1m+Pj4ICQkBCUlJQCAsLAwWCwW8fFZLBaUl5ejo6MDXl5eiIiIwOnTp8XewP8uspeYmIjKykqxd3R0NE6ePAkACAoKgoeHB6qqqgBc+ITSmpoatLa2QqPRID4+XtyvRowYAa1W69C7vr4eBoMBHh4eGDlyJAoKCsTe3t7eqKioAADExMTg/Pnzkr39/PzEyXZUVBQMBoNk74CAAJSWlgIAIiIi0N7eLvZOTU1FW1sbCgoKoNfrERQU5NDbbDaL/zpLTk5GaWkpTCYTfHx8EBoaKu6zoaGhsNlsDvvs2bNnxd6RkZEO+6wgCGLvhIQEVFVVoa2tDVqtFjExMdzetbW1MBqN3fbW6XTd7rOX9vb394der3fYZ5ubm9Hc3AyVSoWUlBScOHECNpsNZrMZRqPRobfRaMT58+e77LPd9e7o6Oh2n9Xr9QgODu52nwWAkSNHoqysDCaTCd7e3v1+jqiurhZ7O/M5wv7cM5ifI+y9B+I5QhAElJWVDerniNOnT6Ozs9PpzxHt7e0oKCiQ/XMEYww9JbDerD2Azp07h4iICOzbtw8TJkwQly9btgz5+fk4ePAg9/axsbFYsmQJlixZwl2vqakJMTExWL9+Pe67774uP7dYLMjPz0d8fDxUqv8dGNNqtYp8u99QxRhDi8mK9k4rvDzV8NOqIQiCu4dFCCGkj6xWK3744QdMmTIFHh78YzuyOfITGBgItVotziDtampquCcz99bw4cMxcuRI8V8KUnx9faFWq512v3YFBQVIS0tz+naVwBVtjCYLdp9qxM7jdagymMXlYb4aZI8KwvSkAOi1svnPwgHtO3zUh4/68FEfaUpsI5tzfjQaDcaNG4fc3Fxxmc1mQ25ursORoP4yGo0oLi5GWFiY07ZJBodDFS24+53j2HSgEtUXTXwAoNpgxqYDlbj7neM4VNHiphESQghxBdlMfgBg6dKl2Lx5M7Zt24bCwkIsXLgQra2tyMnJAQDMnTsXK1asENc3m804evQojh49CrPZjMrKShw9etThqM4jjzyC/Px8lJaWYt++fZg5cybUajXmzJnj8scHXHg9mHRvINscqmjB458Vw2SxgQG49LVe+zKTxYbHPyuW5QSI9h0+6sNHffiojzQltpHV8f3Zs2ejrq4OK1euRHV1NcaOHYtdu3aJJ7GVl5c7nIdz7tw5XHnlleL369atw7p16zBlyhTk5eUBACoqKjBnzhw0NDQgKCgIkyZNwoEDBxAUFOTSx2bn7e3tlvsdDAaqjdFkweo9Z8BY10nPpdh//8/qPWfw9pxRsnoJjPYdPurDR334qI80JbaRzzP7fy1atAiLFi3q9mf2CY1dbGzsZc/u/sc//uGsoTlFRUWF4l47dZaBarP7VKN4xKcn7EeAdp9qxMz0YKePp69o3+GjPnzUh4/6SFNiG1m97EWIszHGsPN4XY8nPhfbebyuV2+dJIQQMjjQ5MfFYmJi3D0E2RqINi0mq8O7unqKAagymGEwWZ0+pr6ifYeP+vBRHz7qI02JbWjy42L2D1wjXQ1Em/bO/k1e2vp5e2eifYeP+vBRHz7qI02JbWjy42ItLfJ7F5FcDEQbL8/+fVaTdz9v70y07/BRHz7qw0d9pCmxDU1+XGwgPjhRKQaijZ9WjTBfDXr72c0CLnzwoa9WPr8v2nf4qA8f9eGjPtKU2IYmPy6WnJzs7iHI1kC0EQQB2aP69rEG2aOCZHXJC9p3+KgPH/Xhoz7SlNiGJj8uZr/YIOlqoNpMTwqA1kPV46M/AgCthwrTk+T1wV607/BRHz7qw0d9pCmxDU1+XIzeOi1toNrotR5YmRkHQcBlJ0ACAEEAVmbGyeoDDgHady6H+vBRHz7qI02JbWjy42LDhw939xBkayDbjI/0wzNZCeIRoEsnQfZlWg8VnslKwPhIvwEbS1/RvsNHffioDx/1kabENvL6p+0Q4Ocnvz+qcjHQbcZH+uHtOaO6vap76H+v6n7jyBHw0cjz5D7ad/ioDx/14aM+0pTYhiY/LlZeXq64jwl3Fle00Ws9MDM9GNmjgmAwWdHWaYW3pxq+WrWsTm7uDu07fNSHj/rwUR9pSmxDkx8yJAmCAD+dB/x09J8AIYQMNXTOj4tFRUW5ewiyRW34qA8f9eGjPnzUR5oS29Dkx8UMBoO7hyBb1IaP+vBRHz7qw0d9pCmxDU1+XKypqcndQ5AtasNHffioDx/14aM+0pTYhiY/Lib3k2rdidrwUR8+6sNHffiojzQlthGYEj+9qB8sFgvy8/MxZswYRV7PhBBCCFEiq9WKH374AVOmTIGHB//NLHTkx8WKiorcPQTZojZ81IeP+vBRHz7qI02JbWjy42JWq9XdQ5AtasNHffioDx/14aM+0pTYhiY/LqbET8p0FmrDR334qA8f9eGjPtKU2IYmPy4WECCvK4XLCbXhoz581IeP+vBRH2lKbEOTHxcrLS119xBki9rwUR8+6sNHffiojzQltqHJDyGEEEKGFJr8uFhERIS7hyBb1IaP+vBRHz7qw0d9pCmxDU1+XKy9vd3dQ5AtasNHffioDx/14aM+0pTYhiY/LtbY2OjuIcgWteGjPnzUh4/68FEfaUpsQ5MfQgghhAwpdHmLSwz05S0YY4q8ToozUBs+6sNHffioDx/1kTZY2tDlLWTs9OnT7h6CbFEbPurDR334qA8f9ZGmxDY0+XGxzs5Odw9BtqgNH/Xhoz581IeP+khTYhua/LiYXq939xBki9rwUR8+6sNHffiojzQltpHd5Gfjxo2IjY2FTqdDRkYGvv32W8l1jx8/jttvvx2xsbEQBAEbNmzo9zYHWlBQkNvuW+6oDR/14aM+fNSHj/pIU2IbWU1+duzYgaVLl2LVqlU4cuQIxowZg6ysLNTW1na7fltbG+Lj4/Hss88iNDTUKdscaGfOnHHL/Q4G1IaP+vBRHz7qw0d9pCmxjawmP+vXr8eCBQuQk5ODtLQ0bNq0Cd7e3njjjTe6Xf9nP/sZnn/+edx1113QarVO2SYhhBBClE02kx+z2YzDhw8jMzNTXKZSqZCZmYn9+/fLZpv9FR4e7pb7HQyoDR/14aM+fNSHj/pIU2Ib/hvhXai+vh5WqxUhISEOy0NCQnDixAmXb9NgMECl+t/cUKvVSh5d6g2z2dzvbSgVteGjPnzUh4/68FEfaUpsI5vJj9ykp6ejra1N/D4nJweLFy9GWFgYiouLAVyYRDHGxPOHkpKSUFFRgfb2duh0OkRFReHUqVMAgODgYKhUKpw5cwb19fVISEhAdXU1WltbodVqERsbi6KiIgBAYGAgNBoNzp07BwCIi4tDXV0djEYjPD09kZiYiMLCQgBAQEAAvLy8UFlZCQCIjY1FY2MjWlpaoFarkZycjMLCQjDGMHz4cPj6+uLs2bMAgOjoaLS0tKCpqQmCICA1NRVFRUWwWq3w8/ODv78/ysrKAACRkZFoa2sTP+Y8LS0NJ0+ehMViga+vLwIDA8XXhcPDw2EymdDQ0AAASElJQUlJCcxmM3x8fBASEoKSkhIAQFhYGCwWC+rq6mAwGBAQEIDy8nJ0dHTAy8sLERER4mdM2CexNTU1AIDExERUVlaKvaOjo3Hy5EkAF07Q8/DwQFVVFQAgPj4eNTU1aG1thUajQXx8vDgBHjFiBLRarUPv+vp6GAwGeHh4YOTIkSgoKBB7e3t7o6KiAgAQExOD8+fPS/b28/NDeXk5ACAqKgoGg0Gyd0BAAEpLSwFcuJBge3u72Ds1NRVlZWWor6+HXq9HUFCQQ2+z2Yz6+noAQHJyMkpLS2EymeDj44PQ0FBxnw0NDYXNZnPYZ8+ePSv2joyMdNhnBUEQeyckJKCqqgptbW3QarWIiYnh9q6trYXRaOy2t06n63afvbS3v78/9Hq9wz7b3NyM5uZmqFQqpKSk4MSJE7DZbOjo6IC3t7dDb6PRiPPnz3fZZ7vr3dHR0e0+q9frERwc3O0+CwAjR45EWVkZTCYTvL29+/0cUV1dLfZ25nOE/blnMD9H2HsPxHOE1WpFe3v7oH6OOH36NDo7O53+HGF/7pH7c0RvPrNZNp/wbDab4e3tjffffx/Z2dni8nnz5qGpqQkff/wx9/axsbFYsmQJlixZ0q9t2j/hOT4+fkCO/BQUFCAtLa3f21EiasNHffioDx/14aM+0gZLm0H5Cc8ajQbjxo1Dbm6uuMxmsyE3NxcTJkxw+TZ9fX3h5+cnfjlj4gNcmHGT7lEbPurDR334qA8f9ZGmxDaymfwAwNKlS7F582Zs27YNhYWFWLhwIVpbW5GTkwMAmDt3LlasWCGubzabcfToURw9ehRmsxmVlZU4evSow0dxX26brmY/ZEm6ojZ81IeP+vBRHz7qI02JbWR1zs/s2bNRV1eHlStXorq6GmPHjsWuXbvE13HLy8sdXoo6d+4crrzySvH7devWYd26dZgyZQry8vJ6tE1XM5lMbrnfwYDa8FEfPurDR334qI80JbaR1eQHABYtWoRFixZ1+zP7hMYuNja2Ryc48bbpaj4+Pu4egmxRGz7qw0d9+KgPH/WRpsQ2spv8KJ3UJ1ETanM53fVhjKHFZEV7pxVenmr4adUQBMENo3M/2n/4qA8f9ZGmxDayOudnKLC/nZB0RW34Lu5jNFnw0U+1mP9uAWa9dQxzd1z4//PfLcBHP9XCaLK4caTuQfsPH/Xhoz7SlNiGjvwQMsgcqmjB6j1nYLLYuvys2mDGpgOV2HKoCisz4zA+0s8NIySEEHmjIz8upsTDh85CbfhCQ0NxqKIFj39WDJPFBgbg0jPe7MtMFhse/6wYhypaXD9QN6H9h4/68FEfaUpsQ5MfF7PZuv5rnVxAbfgMHRas3nMGjHWd9FyKAWAMWL3nzJB5CYz2Hz7qw0d9pCmxDU1+XMz+keGkK2rD9++CavGIT0/YjwDtPtU4kMOSDdp/+KgPH/WRpsQ2NPkhZBBgjOGrKmuPJz4X23m8rlfXvCGEEKWjyY+LJSUluXsIskVtpLWYrGjow+eMMQBVBjMMJqvTxyQ3tP/wUR8+6iNNiW1o8uNi9qslk66ojbT2zv5NXtr6efvBgPYfPurDR32kKbENTX5crKOjw91DkC1qI83LU92v23v38/aDAe0/fNSHj/pIU2Ibmvy4mJeXl7uHIFvURpqfVo0gLxV6+9nNAoAwXw18tcqf/ND+w0d9+KiPNCW2ocmPi0VGRrp7CLJFbaQJgoCZ6cF9um32qKAhcckL2n/4qA8f9ZGmxDY0+XGxU6dOuXsIskVt+GKFRmg9en70RwCg9VBhelLAQA5LNmj/4aM+fNRHmhLb0OSHkEHC20PAysw4CAIuOwESAAgCsDIzDnotXcWGEEIuRpMfFwsO7ttLF0MBteELDg7G+Eg/PJOVIB4BunQSZF+m9VDhmayEIXVtL9p/+KgPH/WRpsQ29E9CFxsK5170FbXhs/cZH+mHt+eMwu5Tjdh5vA5VBrO4TqivBtmjgnDjyBHw0Sj/JOeL0f7DR334qI80JbahyY+L1dTUYMSIEe4ehixRG76L++i1HpiZHozsUUEwmKxo67TC21MNX61akU9UPUH7Dx/14aM+0pTYhiY/hAxigiDAT+cBPx39p0wIIT1F5/y4WEJCgruHIFvUho/68FEfPurDR32kKbENTX5crKqqyt1DkC1qw0d9+KgPH/Xhoz7SlNiGJj8uZDKZ8NJLL8Fk6sMVKhWO2vBRHz7qw0d9+KiPNKW2ocmPC5lMJmzZskVxO5EzUBs+6sNHffioDx/1kabUNjT5IYQQQsiQQpMfQgghhAwp9P7YSzDGAABWq9Xp27bZbPD29obNZhuQ7Q9m1IaP+vBRHz7qw0d9pA2mNvbx2f+O8wisJ2sNIR0dHfjmm2/cPQxCCCGE9MHEiROh0+m469Dk5xI2mw1msxlq9dD9pFxCCCFksGGMwWq1QqPRQKXin9VDkx9CCCGEDCl0wjMhhBBChhSa/BBCCCFkSKHJDyGEEEKGFJr8ONnGjRsRGxsLnU6HjIwMfPvtt9z133vvPaSkpECn0+GKK67Av//9bxeN1PV602br1q0QBMHh63Jn7w9mX331FX7xi18gPDwcgiBg586dl71NXl4errrqKmi1WiQmJmLr1q0DPk536W2fvLy8LvuPIAiorq52zYBdaM2aNfjZz34GX19fBAcHIzs7G0VFRZe93VB57ulLn6Hy/PPqq69i9OjR8PPzg5+fHyZMmID//Oc/3NsoZb+hyY8T7dixA0uXLsWqVatw5MgRjBkzBllZWaitre12/X379mHOnDm477778P333yM7OxvZ2dn46aefXDzygdfbNgDg5+eHqqoq8ausrMyFI3at1tZWjBkzBhs3buzR+mfOnMEtt9yC66+/HkePHsWSJUvw61//Gp999tkAj9Q9etvHrqioyGEfCg4OHqARuk9+fj5+85vf4MCBA9i9ezc6Oztx4403orW1VfI2Q+m5py99gKHx/BMZGYlnn30Whw8fxqFDh3DDDTfg1ltvxfHjx7tdX1H7DSNOc/XVV7Pf/OY34vdWq5WFh4ezNWvWdLv+nXfeyW655RaHZRkZGeyBBx4Y0HG6Q2/bbNmyhQ0bNsxFo5MXAOyjjz7irrNs2TI2atQoh2WzZ89mWVlZAzgyeehJny+//JIBYOfPn3fJmOSktraWAWD5+fmS6wyl555L9aTPUH7+8ff3Z3/729+6/ZmS9hs68uMkZrMZhw8fRmZmprhMpVIhMzMT+/fv7/Y2+/fvd1gfALKysiTXH6z60gYAjEYjYmJiEBUVxf3XyFA0VPad/ho7dizCwsIwffr0IfPhpc3NzQCAgIAAyXWG8v7Tkz7A0Hv+sVqt+Mc//oHW1lZMmDCh23WUtN/Q5MdJ6uvrYbVaERIS4rA8JCRE8jyD6urqXq0/WPWlTXJyMt544w18/PHHeOutt2Cz2XDttdeioqLCFUOWPal9p6WlBe3t7W4alXyEhYVh06ZN+OCDD/DBBx8gKioKU6dOxZEjR9w9tAFls9mwZMkSTJw4Eenp6ZLrDZXnnkv1tM9Qev45duwY9Ho9tFotHnzwQXz00UdIS0vrdl0l7Td0bS8iSxMmTHD418e1116L1NRUvPbaa3j66afdODIyGCQnJyM5OVn8/tprr0VxcTH++te/Yvv27W4c2cD6zW9+g59++glff/21u4ciSz3tM5Sef5KTk3H06FE0Nzfj/fffx7x585Cfny85AVIKOvLjJIGBgVCr1aipqXFYXlNTg9DQ0G5vExoa2qv1B6u+tLmUp6cnrrzySpw+fXoghjjoSO07fn5+8PLyctOo5O3qq69W9P6zaNEi/Otf/8KXX36JyMhI7rpD5bnnYr3pcyklP/9oNBokJiZi3LhxWLNmDcaMGYMXXnih23WVtN/Q5MdJNBoNxo0bh9zcXHGZzWZDbm6u5OunEyZMcFgfAHbv3i25/mDVlzaXslqtOHbsGMLCwgZqmIPKUNl3nOno0aOK3H8YY1i0aBE++ugjfPHFF4iLi7vsbYbS/tOXPpcaSs8/NpsNJpOp258par9x9xnXSvKPf/yDabVatnXrVlZQUMDuv/9+Nnz4cFZdXc0YY+yXv/wlW758ubj+N998wzw8PNi6detYYWEhW7VqFfP09GTHjh1z10MYML1t89RTT7HPPvuMFRcXs8OHD7O77rqL6XQ6dvz4cXc9hAFlMBjY999/z77//nsGgK1fv559//33rKysjDHG2PLly9kvf/lLcf2SkhLm7e3NHn30UVZYWMg2btzI1Go127Vrl7sewoDqbZ+//vWvbOfOnezUqVPs2LFj7Le//S1TqVRsz5497noIA2bhwoVs2LBhLC8vj1VVVYlfbW1t4jpD+bmnL32GyvPP8uXLWX5+Pjtz5gz78ccf2fLly5kgCOzzzz9njCl7v6HJj5O99NJLLDo6mmk0Gnb11VezAwcOiD+bMmUKmzdvnsP67777Lhs5ciTTaDRs1KhR7NNPP3XxiF2nN22WLFkirhsSEsJuvvlmduTIETeM2jXsb82+9MveZN68eWzKlCldbjN27Fim0WhYfHw827Jli8vH7Sq97fPcc8+xhIQEptPpWEBAAJs6dSr74osv3DP4AdZdFwAO+8NQfu7pS5+h8vzzq1/9isXExDCNRsOCgoLYtGnTxIkPY8reb+iq7oQQQggZUuicH0IIIYQMKTT5IYQQQsiQQpMfQgghhAwpNPkhhBBCyJBCkx9CCCGEDCk0+SGEEELIkEKTH0IIIYQMKTT5IYQMOEEQ8OSTT7p7GLJQWloKQRCwdetWp2wvLy8PgiCIX4cOHXLKdi9n/vz5iI2NFb9vampyGMe6detcMg5C+oImP4QQ2SooKMCTTz6J0tJSdw9F9h577DFs374d8fHxbrl/Hx8fbN++HX/961/dcv+E9AZNfgghslVQUICnnnqKJj89MH36dNx7770ICAhwy/17enri3nvvRXZ2tlvun5DeoMkPIYQMIa2tre4eAiFuR5MfQmTgxx9/hCAI+OSTT8Rlhw8fhiAIuOqqqxzWvemmm5CRkSF+//HHH+OWW25BeHg4tFotEhIS8PTTT8NqtYrrLFq0CHq9Hm1tbV3ue86cOQgNDXVY/z//+Q8mT54MHx8f+Pr64pZbbsHx48cdbjd//nzo9XqUlJQgKysLPj4+CA8Px+rVq3G5SwaWlZXhoYceQnJyMry8vDBixAjMmjXL4QjP1q1bMWvWLADA9ddfL55LkpeX16txdqexsRGPPPIIrrjiCuj1evj5+eGmm27CDz/84LCe/Xyad999F3/6058QGRkJnU6HadOm4fTp0122u3HjRsTHx8PLywtXX3019u7di6lTp2Lq1KmXHdOJEydwxx13ICAgADqdDuPHj3fYH/rC/jsqLi7GzTffDF9fX9xzzz0AgL1792LWrFmIjo6GVqtFVFQUfve736G9vb3Ldnbu3In09HTodDqkp6fjo48+6te4CHE3mvwQIgPp6ekYPnw4vvrqK3HZ3r17oVKp8MMPP6ClpQUAYLPZsG/fPlx33XXielu3boVer8fSpUvxwgsvYNy4cVi5ciWWL18urjN79my0trbi008/dbjftrY2/POf/8Qdd9wBtVoNANi+fTtuueUW6PV6PPfcc3jiiSdQUFCASZMmdXn5yWq1YsaMGQgJCcHatWsxbtw4rFq1CqtWreI+3u+++w779u3DXXfdhRdffBEPPvggcnNzMXXqVHGCdt111+Hhhx8G8L/zWbZv347U1NRej/NSJSUl2LlzJ37+859j/fr1ePTRR3Hs2DFMmTIF586d67L+s88+i48++giPPPIIVqxYgQMHDoiTCLtXX30VixYtQmRkJNauXYvJkycjOzsbFRUV3LEAwPHjx3HNNdegsLAQy5cvx1/+8hf4+PggOzu73xMNi8WCrKwsBAcHY926dbj99tsBAO+99x7a2tqwcOFCvPTSS8jKysJLL72EuXPnOtz+888/x+233w5BELBmzRpkZ2cjJyfHZSdWEzIg3HxVeULIf91yyy3s6quvFr+/7bbb2G233cbUajX7z3/+wxhj7MiRIwwA+/jjj8X12traumzrgQceYN7e3qyjo4MxxpjNZmMRERHs9ttvd1jv3XffZQDYV199xRhjzGAwsOHDh7MFCxY4rFddXc2GDRvmsHzevHkMAFu8eLG4zGazsVtuuYVpNBpWV1cnLgfAVq1axR3z/v37GQD25ptvisvee+89BoB9+eWXDuv2Zpzd6ejoYFar1WHZmTNnmFarZatXrxaXffnllwwAS01NZSaTSVz+wgsvMADs2LFjjDHGTCYTGzFiBPvZz37GOjs7xfW2bt3KALApU6Y43A8AtmXLFnHZtGnT2BVXXCH+vhi70PLaa69lSUlJ3MdiH+OljRj73+9o+fLlXX7W3e9gzZo1TBAEVlZWJi4bO3YsCwsLY01NTeKyzz//nAFgMTExXbZhf3zPP/88d9yEuBMd+SFEJiZPnowjR46I52R8/fXXuPnmmzF27Fjs3bsXwIWjQYIgYNKkSeLtvLy8xP9tMBhQX1+PyZMno62tDSdOnABw4a3ms2bNwr///W8YjUZx/R07diAiIkLc3u7du9HU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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "power_matrix = np.zeros_like(thetas)\n", "\n", "# this is like building the W matrix\n", "for i,angle in enumerate(thetas):\n", " PSA = linear_polarizer(0) @ linear_retarder(angle,np.pi/2)\n", " power_matrix[i] = (PSA[0,:] @ S_to_measure)\n", "\n", "plt.style.use('bmh')\n", "plt.figure()\n", "plt.title('Power observed')\n", "plt.plot(thetas, power_matrix, marker='o', linestyle='None', markersize=10)\n", "plt.xlabel('waveplate angle [rad]')\n", "plt.ylabel('Power [A.U.]')\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "We can next pass the power to `full_stokes_polarimetry` instead of a stokes vector to perform a real measurement!" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Stokes Vector Measured\n", "[0.46539569 0.32462298 0.35508336 0.26105798]\n", "Percent Difference\n", "[-2.38554643e-14 1.71001913e-14 1.56332731e-14 -2.12639169e-14]\n" ] } ], "source": [ "S_out = full_stokes_polarimetry(thetas,power=power_matrix)\n", "print('Stokes Vector Measured')\n", "print(S_out)\n", "print('Percent Difference')\n", "print(100*(S_to_measure-S_out)/S_to_measure)" ] } ], "metadata": { "kernelspec": { "display_name": "base", "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.10.14" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }