Skip to content

Instantly share code, notes, and snippets.

@blink1073
Last active October 4, 2017 14:43
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save blink1073/2226b004856afee253966b57481ebb1f to your computer and use it in GitHub Desktop.
Perf Test for String Operations
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Input code:\n",
"\n",
"```javascript\n",
"function median(values) {\n",
" values.sort(function (a, b) { return a - b; });\n",
" var half = Math.floor(values.length / 2);\n",
" if (values.length % 2)\n",
" return values[half];\n",
" else\n",
" return (values[half - 1] + values[half]) / 2.0;\n",
"}\n",
"function startOfString(seed, iterations) {\n",
" if (iterations === void 0) { iterations = 100; }\n",
" var value = seed;\n",
" var values = [];\n",
" var before;\n",
" for (var i_1 = 0; i_1 < iterations; i_1++) {\n",
" before = performance.now();\n",
" value = 'test\\n' + value;\n",
" values.push(performance.now() - before);\n",
" }\n",
" return median(values);\n",
"}\n",
"function middleOfString(seed, iterations) {\n",
" if (iterations === void 0) { iterations = 100; }\n",
" var value = seed;\n",
" var values = [];\n",
" var before;\n",
" var middle = value.length >> 2;\n",
" for (var i_2 = 0; i_2 < iterations; i_2++) {\n",
" before = performance.now();\n",
" value = value.slice(0, middle + i_2) + 'test\\n' + value.slice(middle + i_2);\n",
" values.push(performance.now() - before);\n",
" }\n",
" return median(values);\n",
"}\n",
"function endOfString(seed, iterations) {\n",
" if (iterations === void 0) { iterations = 100; }\n",
" var value = seed;\n",
" var values = [];\n",
" var before;\n",
" for (var i_3 = 0; i_3 < iterations; i_3++) {\n",
" before = performance.now();\n",
" value = value + 'test\\n';\n",
" values.push(performance.now() - before);\n",
" }\n",
" return median(values);\n",
"}\n",
"function startOfArray(seed, iterations) {\n",
" if (iterations === void 0) { iterations = 100; }\n",
" var value = seed.split('\\n');\n",
" var values = [];\n",
" var before;\n",
" for (var i_4 = 0; i_4 < iterations; i_4++) {\n",
" before = performance.now();\n",
" value.unshift('test');\n",
" values.push(performance.now() - before);\n",
" }\n",
" return median(values);\n",
"}\n",
"function middleOfArray(seed, iterations) {\n",
" if (iterations === void 0) { iterations = 100; }\n",
" var value = seed.split('\\n');\n",
" var values = [];\n",
" var before;\n",
" var middle = values.length >> 2;\n",
" for (var i_5 = 0; i_5 < iterations; i_5++) {\n",
" before = performance.now();\n",
" value = value.slice(0, middle + i_5).concat(['test'], value.slice(middle + i_5));\n",
" values.push(performance.now() - before);\n",
" }\n",
" return median(values);\n",
"}\n",
"function endOfArray(seed, iterations) {\n",
" if (iterations === void 0) { iterations = 100; }\n",
" var value = seed.split('\\n');\n",
" var values = [];\n",
" var before;\n",
" for (var i_6 = 0; i_6 < iterations; i_6++) {\n",
" before = performance.now();\n",
" value.push(\"test\");\n",
" values.push(performance.now() - before);\n",
" }\n",
" return median(values);\n",
"}\n",
"var iterations = 100;\n",
"var result_lines = [\n",
" [\"length,startOfString\", \"middleOfString\",\n",
" \"endOfString\", \"startOfArray\", \"middleOfArray\",\n",
" \"endOfArray\"].join(',')\n",
"];\n",
"for (var i = 0; i < 22; i++) {\n",
" var seed = \"1234567890\\n\";\n",
" for (var j = 0; j < i; j++) {\n",
" seed += seed;\n",
" }\n",
" var result = [seed.length];\n",
" result.push(startOfString(seed, iterations));\n",
" result.push(middleOfString(seed, iterations));\n",
" result.push(endOfString(seed, iterations));\n",
" result.push(startOfArray(seed, iterations));\n",
" result.push(middleOfArray(seed, iterations));\n",
" result.push(endOfArray(seed, iterations));\n",
" result_lines.push(result.join(','));\n",
"}\n",
"console.log(result_lines.join('\\n'));\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Writing chrome.csv\n"
]
}
],
"source": [
"%%file chrome.csv\n",
"length,startOfString,middleOfString,endOfString,startOfArray,middleOfArray,endOfArray\n",
"11,0,0,0,0,0,0\n",
"22,0,0,0,0,0,0\n",
"44,0,0,0,0,0,0\n",
"88,0,0,0,0,0,0\n",
"176,0,0,0,0,0,0\n",
"352,0,0,0,0,0,0\n",
"704,0,0,0,0,0.0024999999968713382,0\n",
"1408,0,0,0,0,0.0049999999937426765,0\n",
"2816,0,0,0,0,0.005000000001018634,0\n",
"5632,0,0.005000000001018634,0,0,0.005000000004656613,0\n",
"11264,0,0.005000000001018634,0,0,0.010000000005675247,0\n",
"22528,0,0.0050000000028376235,0,0,0.010000000005675247,0\n",
"45056,0,0.005000000001018634,0,0,0.020000000000436557,0\n",
"90112,0,0.005000000001018634,0,0.0049999999937426765,0.040000000004511094,0\n",
"180224,0,0.014999999995779945,0,0.005000000001018634,0.07499999999708962,0\n",
"360448,0,0.030000000002473826,0,0.00999999999476131,0.1400000000030559,0\n",
"720896,0,0.39249999999628926,0,0.6825000000008004,2.959999999997308,0\n",
"1441792,0,0.9100000000016735,0,2.475000000002183,1.5299999999988358,0\n",
"2883584,0,1.3024999999979627,0,6.209999999995489,10.455000000005384,0\n",
"5767168,0,2.749999999996362,0,3.6424999999981083,18.8550000000032,0\n",
"11534336,0,5.207500000000437,0,7.729999999999563,13.627500000002328,0\n",
"23068672,0,10.760000000009313,0,4.010000000002037,28.389999999992142,0"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Writing firefox.csv\n"
]
}
],
"source": [
"%%file firefox.csv\n",
"length,startOfString,middleOfString,endOfString,startOfArray,middleOfArray,endOfArray\n",
"11,0,0,0,0,0.004999999888241291,0\n",
"22,0,0,0,0,0.004999999888241291,0\n",
"44,0,0,0,0,0.004999999888241291,0\n",
"88,0,0,0,0,0,0\n",
"176,0,0,0,0,0,0\n",
"352,0,0,0,0,0,0\n",
"704,0,0,0,0,0,0\n",
"1408,0,0,0,0,0.004999999888241291,0\n",
"2816,0,0.004999999888241291,0,0,0.004999999888241291,0\n",
"5632,0,0.004999999888241291,0,0,0.009999999776482582,0\n",
"11264,0,0.004999999888241291,0,0,0.014999999664723873,0\n",
"22528,0,0.004999999888241291,0,0,0.01000000024214387,0\n",
"45056,0,0.004999999888241291,0,0,0.02500000037252903,0\n",
"90112,0,0.010000000707805157,0,0,0.0400000000372529,0\n",
"180224,0,0.014999999664723873,0,0,0.2724999999627471,0\n",
"360448,0,0.14499999955296516,0,0,0.5600000000558794,0\n",
"720896,0,0.10000000009313226,0,0,1.257499999832362,0\n",
"1441792,0,0.595000000204891,0,0,2.180000000167638,0\n",
"2883584,0,0.5074999998323619,0,0,4.044999999925494,0\n",
"5767168,0,1.037499999627471,0,0,7.339999999850988,0\n",
"11534336,0,1.9575000000186265,0,0,16.37999999988824,0\n",
"23068672,0,4.297499999869615,0,0,34.84999999962747,0"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import pandas\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/ssilvester/anaconda/envs/lab-test/lib/python3.6/site-packages/matplotlib/ticker.py:2039: UserWarning: Data has no positive values, and therefore cannot be log-scaled.\n",
" \"Data has no positive values, and therefore cannot be \"\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1155cdd30>"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<matplotlib.figure.Figure at 0x112230278>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x112230b70>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"chrome = pandas.read_csv('chrome.csv')\n",
"plt.figure(); chrome.plot(title='Chrome', x='length', logy=True)\n",
"plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/ssilvester/anaconda/envs/lab-test/lib/python3.6/site-packages/matplotlib/ticker.py:2039: UserWarning: Data has no positive values, and therefore cannot be log-scaled.\n",
" \"Data has no positive values, and therefore cannot be \"\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1156bf748>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/plain": [
"<matplotlib.figure.Figure at 0x115971128>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfwAAAEWCAYAAACDjSX3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VNXdP/DPmZnsMwnZSUJCEsKasEgwFqqiohQFAoJY\nEKUgSgHRai3PU0pb+8PtQa1WRESpFnApKFAKVqxSAalWyiJIWAIhIRCSkD2ZbJNZzu+PO5NMkglk\nn0nm83698krmzp07Z66RT865556vkFKCiIiIejeVsxtAREREXY+BT0RE5AYY+ERERG6AgU9EROQG\nGPhERERugIFPRETkBhj45NaEEDFCiEohhLoDx3hOCFEkhMjvzLYREXUmwfvwyV0IIS4CCAdgtts8\nSEqZ24FjRgM4B6C/lLKgYy0kIuo6Gmc3gKibTZVS7m3NjkIIAeWPYss1dusPoJhhT0SujkP65NaE\nELFCCCmE0Fgf7xdCPC+E+AZANYB4IUSAEOJdIUSeEOKKdQhfLYS4E8CXACKtlwU2Wo+RKoQ4JYQo\nsx5vqHX7ACFEiRBitPVxpPVSwG3O+OxE5F4Y+ETNPQRgEQAdgGwAmwCYACQAuAHARACPWEcK7gaQ\nK6XUSinnCyEGAfgrgCcBhAL4DMBuIYSnlPICgP8F8KEQwhfAXwBslFLu79ZPR0RuiYFP7mantedd\nJoTY2cI+G6WUp6SUJgBBUEL9SSlllXXo/jUAs1t47U8B/ENK+aWU0gjgFQA+AMYBgJRyA4DzAA4B\niACwstM+GRHRNfAaPrmb6fbX8IUQsQ72uWz3c38AHgDylEv6AJQ/lC83fZFVJJRRAQCAlNIihLgM\nIMpunw0AdgFYJKU0tLH9RETtwh4+UXP2t65cBmAAECKl7GP98pdSJrbw2lwofyQAqJ/4Fw3givWx\nFsCfALwL4A9CiKCu+ABERE0x8ImuQUqZB+ALAH8UQvgLIVTWyXfjW3jJxwAmCyEmCCE8ADwN5Q+G\nb63Pvw7gqJTyEQD/ALC+iz8CEREABj5Ra8wD4AngNIBSANugXH9vRkqZDuBBAG8AKAIwFcqtgHVC\niGkAJgFYbN39lwBGCyHmdm3ziYi48A4REZFbYA+fiIjIDTDwiYiI3AADn4iIyA0w8ImIiNyASy+8\nExISImNjY53dDCKiHuPo0aNFUsrQDh4jTKPR/BlAEtgx7EksANJMJtMjycnJzQp6uXTgx8bG4siR\nI85uBhFRjyGEyL7+Xtem0Wj+3Ldv36GhoaGlKpWKt3L1EBaLRRQWFg7Lz8//M4DUps+75F9uQoip\nQoh3ysvLnd0UIiJ3lBQaGlrBsO9ZVCqVDA0NLYcyMtP8+W5uT6tIKXdLKRcFBAQ4uylERO5IxbDv\nmaz/3Rxmu0sGPhEREXUuBj4REfUIq1atCtPr9W3OrTVr1gRfvHjRw/a4trZWPPzww9HR0dFJ/fv3\nT5owYcKACxcu1D//3HPPhcXHxyempqbGXb58WXP77bcnDB48eNiAAQMSx48fnwAA6enpnuvXr2+x\n+NXFixc9Jk2aFN/WtnYlBj4REfUIb7/9dnhlZWWbcstkMuGDDz4IuXTpUn2gP/HEE1GVlZWqrKys\ntOzs7LTU1NSy6dOnJ1gsFgDAu+++G/rZZ5+d37VrV9b//u//Rt1xxx0V6enppy9cuHDqpZdeugIA\n58+f99q6davDwDcajYiNjTV+/vnnmR34uJ3OJWfpCyGmApiakJDg7KYQEZETVFRUqFJTU+Pz8vI8\nLRaLSE1NLSkoKPAYP378oMDAQNOhQ4fOzZ07N+bEiRN+tbW1qqlTp5a+9tpruQAQFRU1fM6cOUX7\n9u3zX7hwYWFaWprvvHnz4r29vS3//e9/z3788cchmZmZP2g0SgT+4he/KN68eXPI7t27dVu3bg3M\nycnxSk1NTZg7d25Rfn6+x8SJE+tnkN900001ALBy5cqozMxM7yFDhgybM2dOUWBgoHnPnj0BBoNB\nVV1drdq0adPFKVOmDDx//vypNWvWBH/66ad9ampqVJcuXfK6++67y9avX58DAK+99lrI66+/3jcs\nLMwYHx9f6+npKTdv3nypK86pSwa+lHI3gN1jxox51NltISJyZ8u3nYg+l6/37cxjDuqrq375vpGX\nr7XPjh07/Pv27Wvcv39/BgAUFxert2zZEnLgwIFzERERJgB49dVXr4SHh5tNJhPGjRs3+NChQz62\nQPb29rYcPXo0HQA2btwY+sorr1y+9dZbqw8dOuQTERFRFxQUZLF/v1GjRlWfPHnS56OPPrp04MCB\nANv7bN++vXb+/Pnxb731VvVtt91WsWTJkuLY2Fjj888/f+WPf/xj+L59+zIA5bLBsWPHtD/88MOp\n8PBwc3p6uqf98U+fPu174sSJ0z4+PpaEhISkX/3qV1c1Gg1eeeWViGPHjp3u06ePZdy4cYMSExNr\nOu9MN8YhfSKiHspstqCytBZXsyqQebwQJ/fnOLtJnWb06NE1Bw8e9F+yZEnU559/rg0ODjY33WfT\npk1Bw4YNGzps2LBh58+f9z5x4oS37bl58+aVOjquxWKBEKLZHQhSSgghmu0/c+bMioyMjJMLFiwo\nSk9P90lOTh6Wm5vrsLN8yy23VISHhzdrJwDcfPPNFcHBwWZfX1+ZkJBQe+HCBa+DBw/63XTTTfrw\n8HCzl5eXvPfeex22ubO4ZA+fiMidWcwW1OiNqCo3oKrMgKryOlSVGVBdbv3Zur2m0gh08c1z1+uJ\nd5URI0YYjh07dnr79u0BK1eujNq7d2+F/fNnz571XLt2bfjRo0fPhIaGmmfOnBlbW1tb34nV6XSW\n5kcFEhMTDbm5uV6lpaWqwMDA+n1++OEH32nTppU5ek14eLh58eLFJYsXLy65/fbbE7744gttSEhI\ns2D39fV1+J4A4OnpWf9fSq1WS6PR2O3l6Rn4RETdxGKRqNHXodoa4PWBXlGHavtg19c1D3IB+Oo8\n4dfHC9o+XgiL9Yefv/LYL8ALfn284BvgiWVvO+WjdbqLFy96hIWFmZYuXVqi0+ksmzZtCvbz8zOX\nl5erIiIiUFpaqvbx8bEEBQWZL1++rNm/f3/A+PHj9Y6OpdVqzeXl5WoA8Pf3t9x3331FS5Ysif7g\ngw+yNRoN1q5dG2ydB9Ds9bt27dLdfvvtVTqdzlJaWqrKzs72iouLq1OpVKisrFR35DPecsstVStW\nrIguLCxU9+nTx/z3v/89cOjQoV02pM/AJyLqIGmRqKls6JFX2/XCq8rrlJ55mQHVeiOkpXmvzkfn\nUR/codFa+FoD3C+gIdB9dB5Qqd3nKuzRo0d9VqxY0U+lUkGj0ch169ZlHzx4UHv33XcPDAsLMx46\ndOhcUlJS9cCBAxNjYmIMycnJlS0da968eUWPP/54/+XLl1uOHDly5o033riyePHifnFxcUkqlQoD\nBgyo3blzZ4ZK1fz8Hj582Pepp56KUavVUkopHnrooaLx48dXGwwGodFo5ODBg4c98MADRYGBgQ6H\n8q8lLi7O+NRTT+XdeOONQ8PCwoyDBg2qCQgIaPNxWqvbhxTaYsyYMZJr6RORs0iLRG2VsdEwuhLe\n1sfWMK8ur4PFQZB7az2svW/Phl54o165J3z8PaHuxCAXQhyVUo7pyDFOnDhxceTIkUWd1SZqWXl5\nuSogIMBiNBrxk5/8JGH+/PlF8+bNc3hpobVOnDgRMnLkyNim212yh8/b8oioK0kpYagyWUO7IcCr\nrcPrtuH26vI6WMzNg9zLT1Mf4EERvvAL8LL2yhsHu1rjPj1yap/ly5dHfv311/4Gg0GMHz++4sEH\nH+xQ2F+LSwY+b8sjovaQUsJQbaoP60bD6mV2E97KDbCYHAS5r0YJ7gBPRA0KtAZ5Q4j7BXjCN8AT\nGo8OXbolqvfOO+90260VLhn4RET2pJSoqzU3nqle1tA7r65oCHazsflEaU8fjTWsvRCREKAEuC3M\nbcPrAZ7QeDLIqfdi4BORU9XVmppMbquzG2pv6Kmb6poHuYe3uj6sw+MCGia6WYfXfa3B7uHFICdi\n4BNRlzAazI2uhTe7p9x6rdxoaD4pWeOpqu95h/XXwbdPSMPkN/+GW9A8vflPGFFr8f8WImoTY525\nUU+80T3ldo/rapsHudpDVd8LD+mnRf/EYPjaJrrZDa97eKsdrnpGRO3HwCciAIDJaLYLb1uYN78F\nzVBtavZatUalDKH7eyEo0g/RQ4PsJrk13ILm6aNhkFOn+fDDDwNOnTrl88ILL+Q3fc7X1/eG6urq\n75tunzlzZuyUKVPKFyxYUJqSkjLYtsZ+S+9RW1srli5d2u/LL78MUKlUSEhIqHnnnXcuDRgwwAgo\npXTfe++90KSkpOo333zz8rx582Jzc3M9TSaT6Nevn+HAgQMZ6enpnvv27dMuXry4xNF7XLx40WPx\n4sXRXV1dj4FP1MuZjRZUVRiah3l9r1x5bKhqHuQqtagP68C+vug3OLD+1jP72etevgxy6n5z584t\nB1B+3R07wL6Urkajweuvvx48ffr0hBMnTpxRqVR49913Q/fs2XN+yJAhdQ888ED/O+64o+J3v/td\nAQAcOnTIB2gopeso8LuzlC4Dn6iHMpst9dfGq+0nutXfgqb8XFtpbPZalUrUz1APCPVB5MA+jRaI\nsd1T7u3nwSAnp0hPT/ecNGnSwJSUlMpjx45phw4dWv3www8XrVq1Kqq4uFizcePGzJMnT/ocOXLE\nb/PmzZfOnj3rOXv27HiTySQmTJhQ/0eAxWLB/PnzY7755htddHS0oaXF5nbs2OG/atWqyLq6OtG/\nf3/Dli1bLqpUKvSmUrouGfhceIfcmcVsQXWF/TKt9gVTGobaa/TNg1yohLKSW4AndME+6DugT6Nr\n47ZeuY/WA0LFIKdW2PlYNApOd2p5XIQNq8b0N69blOfy5cveW7duzUxOTs4eMWLE0A8//DD4yJEj\nZz/66KM+zz//fERqamr9IjVLly6NeeSRRwqXLVtW/OKLL4batr///vt9MjIyvNLT00/l5OR4DB8+\nPHH+/PnF9u+Tl5eneeGFFyK+/vrrc/7+/paVK1f2ffbZZ8NnzZpV1ptK6bpk4HPhHeqNbIVTrlX9\nrKq8DjUOCqcIAfj4K2GtC/JGeJx/s4luvgGe8NF5QsUgp14iKirKkJKSUgMAgwYNqrnjjjsqVCoV\nRo8eXf3cc89F2u977Ngx7Z49ey4AwM9//vPiZ599th8AHDhwQHf//feXaDQaxMbGGseOHdusQM7+\n/fv9Lly44J2SkjIEAIxGo0hOTq5sTyndm2+++eTf/va3gM8//zwgOTl52MmTJ085+mytKaULALZS\nugUFBRpbKV0AuPfee0vPnTvn7ej1LXHJwCfqSeoLp9hVP6uuaBzsVeUG1FTUodloogB8dJ71wR0W\no4OvXfUz2z3l7lY4hVxIK3riXcW+pKxKpYK3t7cEALVaDbPZ3CxxVSqVw/H6612WklLi5ptvrti9\ne3eW/faKigpVbyqly8AnaqXKUgOuXizH1awKlF2tblgspqKuxQpothnqIdHa+h65fSW0zi6cQuSu\nRo8eXblhw4agpUuXlmzYsCHYtn38+PH6DRs2hD722GPFV65c8fjuu+90c+bMaTR57rbbbqt6+umn\nY9LS0rySkpIMer1elZWV5TFixAhDbyqly8AncqCu1oTCbD2uXqzA1awKXM0qR1V5HQBl5nqfcF9o\n+3ghKErbqCa57Z5yFk4h6l7r1q27NHv27Ph169aFp6amltq2P/TQQ2X/+te//AcPHpwYFxdXm5KS\n0iyoIyMjTW+//fbF2bNnx9fV1QkAeOaZZ66MGDHC0JtK6bI8Lrk9i0WiJLcKV7PKcfViBQouVqAk\nt6p++N0/1Afhsf4Ij1O+QvppWTyFXBbL4/ZerS2l26PK4xJ1pcrSWmuvvUIJ+Et6mKzLu3r5ahAe\n54/4UaEIs4a8j9bzOkckIup6HS2ly8CnXq2u1oSCbD0KWhiaD+mnxdCxEUrvPdYfAWE+vO+ciFxS\nR0vpMvCp12g6NH81qwKleY2H5iMHBdYPzYf200HtwevsROQeGPjUY11zaN5Pg/BYfwy4IRThcQEI\ni9VxaJ6I3BoDn3oE29D81axyFFzUNx+aj9Zh6LgIZXIdh+aJiJph4JPLsZgtKMmrqu+5c2ieiKjj\nui3whRDxAFYCCJBS3tdd70uury1D8+Gx/vDWeji5xUTk6uzL4x45csR72bJlMfn5+Z5SStx///3F\nq1evzlOpVKipqRETJkwYWFJSonn66afztFqtZdWqVVEWiwUmk0ksXrz46vLly4vef//9PsOGDatN\nTk6udfR+L730Uqivr69l2bJlxY6edwUdCnwhxHsApgAokFIm2W2fBOB1AGoAf5ZS/p+UMhPAQiHE\nto68J/Vs9kPzV7OUe97rh+Y1AiH9ODRPRJ2nsrJS3HvvvQmvv/76pRkzZlTo9XrV5MmTB6xevTp0\nxYoVhd9++62v0WgUZ8+ePW0wGER0dPTw//znP2cGDBhgrKmpEefOnfMEgJ07d/YxmUzljgLfaDTi\nf/7nfwq7/9O1TUd7+BsBrAWw2bZBCKEG8CaAuwDkADgshNglpTzdwfeiHsbR0HxJXlV9YZiAUB9E\nDQ6sv9+dQ/NEZG/dunVBb731VrjRaBSjR4+u2rx5c7a/v/8NCxcuLPjiiy8CvL29LZ9++mlGdHS0\nqaXyuBs2bAgeM2ZM5YwZMyoAQKfTWd56661LEyZMGDxv3rzSBQsWxJWWlmqGDBkybMOGDRdNJpMI\nDw83AYCPj48cOXKk4csvv/Tbu3dvn++++063evXqiO3bt19YsGBBbEpKSuWhQ4e099xzT5ler1dr\ntVrzqlWrrqakpAxOTk6u/Pe//+2v1+vV69evvzhp0qRKvV6v+ulPfxqbkZHhPXDgwNrLly97rl27\n9tKtt95a3R3ns0OBL6X8WggR22RzCoAMa48eQogtAKYBaFXgCyEWAVgEADExMR1pHnUjKSUqSw0N\n97tfrEBBdgVMdUp9CA7NE/VMv/vmd9EZpRmdWh43ITCh+tkfP3vNojzHjh3z3rZtW9CRI0fOenl5\nyQcffDBm/fr1wTU1NaqxY8dW2pa8feONN0JfeumlvJbK4546dcp79OjRjQI1MTHRUF1drfLx8bGs\nW7cu27507V133VUWExMz4sc//nHFPffcU75o0aKSu+66q+rOO+8smzJlSvmCBQvql+0tKytTHz58\nOB0AfvnLXzaq3mcymcTJkyfPbN26NWDVqlWRkyZNOvfyyy+H9unTx3zu3LnThw8f9h47dmxiZ5zP\n1uqKa/hRAOz/Q+YAuEkIEQzgeQA3CCFWSClfdPRiKeU7AN4BlKV1u6B91AmaDs1fvViB6qZD8z+O\nrF+SNiCUQ/NE1Hqff/65Li0tzXfkyJFDAaC2tlYVFhZm8vDwkLNnzy4HgOTk5Kq9e/f6Ay2Xx5VS\nipb+7XG0fevWrdn//e9/C/bs2aNbs2ZN37179/pv3779oqPXNy3CY2/WrFmlADBu3Liq5cuXewLA\nt99+q/3FL35RAAA33nhj7aBBg7qlZ2/TFYHv6MxKKWUxgMWtOoAQUwFMTUhI6NSGUfs0Gpq3hnvT\nofl+g5VZ82GxHJon6k2u1xPvKlJKMWvWrOI333zziv329evXh9sK12g0GphMpvrMcVQeNzExsebg\nwYNa+22nT5/29PX1tdiXvLWXkpJSk5KSUrNo0aKShISE4QAuOtpPp9O1WOLWVspXo9HUl/J1du2a\nrgj8HADRdo/7AchtywGklLsB7B4zZsyjndkwuj7b0LxtQp3jofkADs0TUZeaNGlSxYwZMxJ+85vf\nXI2KijJdvXpVXV5e3mLVqpbK4y5atKj41Vdfjdi5c6du+vTp+srKSvHYY4/FPP744/lNj1FeXq46\nePCg35QpU/QAcOjQIZ/IyMg6ANBqteaKiooO9WTGjRtXuWXLlsCpU6fqjx496n3u3Dmfjhyvrboi\n8A8DGCiEiANwBcBsAA90wftQJ+DQPBG5ouTk5Nrf/va3VyZMmDDIYrHAw8NDrlmz5lJL+7dUHler\n1codO3ZkLFu2LObJJ5/0sFgsmDVrVvGKFSsKmh7DYrHg5ZdfDl+2bFl/b29vi6+vr+Xdd9/NAoC5\nc+eWLFmyJHb9+vXh27Ztu9Cez7R8+fLC+++/P3bQoEHDkpKSqgcPHlzTnlK57dWh8rhCiL8CuA1A\nCICrAJ6RUr4rhLgHwJ+g3Jb3npTy+TYe1zak/+j58+fb3T5qrDVD87bFbMJjAxDST8uheaIehuVx\nXZfJZEJdXZ3w9fWVp06d8po4ceKgCxcupNmG/ztLl5THlVLOaWH7ZwA+68BxOaTfSUrzq5B5vBCX\nTpU4HpofHVZ/zzuH5omIuo5er1fdcsstg41Go5BS4rXXXsvu7LC/Fi6t28tIKVF0uRIXvi9A5vEi\nlOZVAQBCorUcmicicqLAwEBLWlraGWe9v0sGPmfpt43FIpF/oQwXvi9E1vEi6EtqIQQQObAPEm8Z\niPhRodAFeTu7mURE5EQuGfgc0r8+s9GCy2dLkHW8EFk/FKFGb4RKIxAzNAhjJscibkQIfHQsB0tE\nRAqXDHxyrK7WhOy0YmQdL8TFtGIYa83w8FYjNikYcaNC0T8pGJ7e/E9KRETNMR1cXE1lHS7+UITM\n7wtx+UwpzCYLfHQeGJgchrhRoYgeEsSZ9EREdF0uGfjufg1fX1KLrBOFyPy+ELnnyyAloA3yQuKt\nkRhwQyj6DugDlYoT7ojIvaxatSrsqaeeKrrWCneOrFmzJjg1NbUiNjbWCAC1tbVi6dKl/b788ssA\nlUqFhISEmnfeeefSgAEDjADw3HPPhb333nuhSUlJ1bt27coCgAkTJgwoLi72OH78+NnO/2TdwyUD\n3x2v4dtun8v8vhAF2XoAQGCEH0ZP6o8BN4QhJFrLWfVE5Nbefvvt8EcffbSkLYFvMpnwwQcfhIwa\nNarGFvhPPPFEVGVlpSorKytNo9Hg9ddfD54+fXrCiRMnzqhUKrz77ruhe/bsOT9kyJA6ACgqKlKf\nOnXKz9fX13z27FlP23Z7RqMRHh4eLT52BS4Z+O5ASonCS3pkfl+IzOOFKM1XaiiExfrjR9PjET8q\nFIF9/ZzcSiIi56ioqFClpqbG5+XleVosFpGamlpSUFDgMX78+EGBgYGmQ4cOnZs7d27MiRMn/Gpr\na1VTp04tfe2113IBICoqavicOXOK9u3b579w4cLCtLQ033nz5sV7e3tb/vvf/579+OOPQzIzM3/Q\naJQI/MUvflG8efPmkN27d+u2bt0amJOT45Wampowd+7comeeeabg/fffD7zzzjvLwsPDjZs2bQp6\n8cUX8wFg5syZsYGBgaaTJ0/6jhgxolqn01ny8vI8Ll265BkUFGR65ZVXrjzwwANxNTU1KgB4/fXX\nL911111V06dPj7vvvvtKH3zwwTIASE1NjfvpT39aMnfu3PIWTkenYOB3I4tFIi+jTAn5E4WoLDFA\nqAQiBwYgaXw/xI8KgTaQt88RkevI/c3KaMP5851aHtdr4MDqyBeev2ZRnh07dvj37dvXuH///gwA\nKC4uVm/ZsiXkwIED5yIiIkwA8Oqrr14JDw83m0wmjBs3bvChQ4d8brrpphoA8Pb2thw9ejQdADZu\n3Bj6yiuvXL711lurDx065BMREVEXFBTUaJRg1KhR1SdPnvT56KOPLh04cCDA/n0++eSToN///ve5\nkZGRxvvuu2+ALfAB4MKFC97ffPPNOY1Gg1/+8peRP/zwg++hQ4fOarVaqdfrVQcPHjzn6+srT548\n6TVnzpz4tLS0M48++mjha6+9Fv7ggw+WFRcXq48ePardvn17VmeeY0dcMvB70zV82+1zmccLkXWi\nCLWVRqg1KkQPC0LKlHjEjQjhCndERE2MHj26ZuXKldFLliyJmjZtWvmkSZMqm+6zadOmoI0bN4aY\nTCZRWFjoceLECW9b4M+bN6+0+VGV9fKFEM1Wt5NSOrxsevnyZU12drbXxIkTK1UqFTQajTx8+LD3\njTfeWAsAM2bMKLWNFADApEmTyrRarQSAuro6sXDhwv6nT5/2UalUyM7O9gKAyZMnVz755JP9r1y5\novnwww8DJ0+eXNodw/8uGfg9/Rq+7fa5zOOFyLa/fW54COJHhSImMYi3zxFRj3C9nnhXGTFihOHY\nsWOnt2/fHrBy5cqovXv3Vtg/f/bsWc+1a9eGHz169ExoaKh55syZsbW1tfW3LLV0nT8xMdGQm5vr\nVVpaqrIvj/vDDz/4Tps2razp/ps2bQqqqKhQR0dHDweAyspK9fvvvx9044035gKAVqtt9D5+fn71\nj59//vnwsLAw4/bt27MsFgt8fHySbc/df//9xX/+85+Dtm/fHvTee+9dbPMJagemTiepqaxD1oki\nZB4vRI797XNjwhE/KhT9Bgfy9jki6hzGWkCfp3xV5Fq/Wx/3EhcvXvQICwszLV26tESn01k2bdoU\n7OfnZy4vL1dFRESgtLRU7ePjYwkKCjJfvnxZs3///oDx48frHR1Lq9WabaV1/f39Lffdd1/RkiVL\noj/44INsjUaDtWvXBlvnATR7/bZt24L+9re/nb/zzjurAOUPjYkTJw5as2bNdcu+l5eXq/v161en\nVquxdu3aYLO5oTDe4sWLi2666aahISEhxjFjxtS2+0S1AQO/A0xGM07/Ow8XjhUgL0O5fU4X5I2k\nW6MQf0Mo+g4I4O1zRNR6FgtQXewgzJuEek1J89d6+AK6iO5vcxc5evSoz4oVK/rZhtHXrVuXffDg\nQe3dd989MCwszHjo0KFzSUlJ1QMHDkyMiYkxJCcnNxvyt5k3b17R448/3n/58uWWI0eOnHnjjTeu\nLF68uF9cXFySSqXCgAEDanfu3JmhUjXulKWnp3vm5uZ63nHHHVW2bUOGDKnTarXmr7766rqzqp98\n8smCmTNnDti5c2fgzTffrPfx8anv/UdHR5sGDBhQO3Xq1GajCl2lQ+Vxu9qYMWPkkSNHnN0Mh/Iz\ny/HV5jMdHAFfAAAgAElEQVQoza9GUKQf4keFIn5UKG+fIyLHjDXNg9tRmFuMTV4oAG2YEub+kdbv\nEcp3+23eAYAQLI/bQ+j1etWwYcOGHT9+/ExwcLD5+q9ovS4pj9tVXHnSnqnOjEO7MnHiX5fh18cL\nUx8fiZjEYGc3i4icxWIBqoua98btQ7wiF6h10JHz8GsI7/5jGwe4Ldi14YCaE3t7k507d+qWLFkS\nu2TJkqudHfbX4pKB76qT9nIzyvDV5jMoL6hB4i2RGDcjAZ4+LnkKiagz1FW3MLSeC+jzrcGe37xX\nLlRKUOv6AoFxQP9xTXro1u9eOoAjgm5n+vTp+unTp5/s7vdlWrWC0WDGdzsv4If9OdAFeWPak6PQ\nb0iQs5tFRO1lMQNVhXbBndu4N27rnRscrIPiqWvolcferIS6LtK6zfrdLwxQ859Xci38jbyOnPRS\n7Hv/DCqKajH89n740bR43lJH5MoMlS0MrduFuj4fkE1GUoVa6ZX7RwDBCUDcrXa9cbtQ99I553MR\ndRCTqwV1tSZ8u+MCTn19BQGhPrj36dGIHNjH2c0icl8WM1BZ4Lg3bn+93FDR/LVeAUpo+0cAIeMb\neuj218u1YYBK3f2fi6ibMPAduHS6GPs+OIvKUgNG3hmNm1Lj4eHJfwiIukxtRZOh9aahng9UXm3e\nK1dpAK01yEMHA/G3NR5a11l7515aZ3wqIpfikoHvrFn6hhoTvtl2Hme+yUNgX1/MXJ6MvvEB3doG\nol7FbFKC2uHQul2o1zm4hdo7oCG4w4ZZA7zJ9XK/UEDFBa3c1Ycffhhw6tQpnxdeeCG/6XO+vr43\nVFdXf990+8yZM2OnTJlSvmDBgtKUlJTBtjX2W3qP3lRK1yUD3xmz9C+eLML+D9NRXW7A6J/E4MYp\ncdB4sFdP5JCUytB5s2vjTUK9qgCQTVY4VXlYgzsCCB8GJNzZpFdu/fLs1Hot1AtZq8t1aYW53lRK\n1yUDvzvVVhnx70/OI/27fARF+uHuxcMRHuvv7GYROY/ZqPTKW+qN20LdWNX8tT6BDcPo4YnNZ6/r\nIgHfYPbK6brS09M9J02aNDAlJaXy2LFj2qFDh1Y//PDDRatWrYoqLi7WbNy4MfPkyZM+R44c8du8\nefOls2fPes6ePTveZDKJCRMm1P8RYLFYMH/+/JhvvvlGFx0dbWhpsbkdO3b4r1q1KrKurk7079/f\nsGXLlosqlQq9qZSuWwd+5vFCHPgoHTWVRoy5JxZj7o7levfUe0mpLP6iz2+yuluTUK8qBNDkH0W1\nZ8Nwet/hwMCfWCfBNVn5zcPHKR+Nus6/Np+JLrlS2anDLUFR2uoJ84ZetyjP5cuXvbdu3ZqZnJyc\nPWLEiKEffvhh8JEjR85+9NFHfZ5//vmI1NTU+tWMli5dGvPII48ULlu2rPjFF18MtW1///33+2Rk\nZHilp6efysnJ8Rg+fHji/Pnzi+3fJy8vT/PCCy9EfP311+f8/f0tK1eu7Pvss8+Gz5o1q6w3ldJ1\ny8CvqazDwa3ncf7wVQT302LKspEIjeGtNtSDmeqAyvxrLNlqnfhmdHCp0ieoIbgjRjaf8OZv7ZVz\ngRjqZlFRUYaUlJQaABg0aFDNHXfcUaFSqTB69Ojq5557LtJ+32PHjmn37NlzAQB+/vOfFz/77LP9\nAODAgQO6+++/v0Sj0SA2NtY4duzYZgVy9u/f73fhwgXvlJSUIQBgNBpFcnJyZW8rpet2gZ9xtABf\nb0mHodqElKlxGD2pP9Rq9urJRUkJ1JS2cC+5XahXFTZ/rdqroecdMQoYbN8bt4a6ti/g4d39n4t6\njNb0xLuKp6dnfdiqVCp4e3tLAFCr1TCbzc0SV6VSORyvv159Eyklbr755ordu3c36jlXVFSoelMp\nXbcJfFOdGf/adAYZRwsQGqPDtCeHIjiKt+qQE5kMDcuztlQVTZ8HmBxUzvQNaQjuqNHNC6n4RyrX\n09krJzcxevToyg0bNgQtXbq0ZMOGDfUFTsaPH6/fsGFD6GOPPVZ85coVj++++043Z86cRuUGb7vt\ntqqnn346Ji0tzSspKcmg1+tVWVlZHiNGjDD0plK6bhH40iLxr81nkHGsAD+aHo8b7oqBir166ipS\nAtUl1ylxmquUQW1K490Q2FHJzYfWddZb0zRe3f+5iFzYunXrLs2ePTt+3bp14ampqaW27Q899FDZ\nv/71L//BgwcnxsXF1aakpDQL6sjISNPbb799cfbs2fF1dXUCAJ555pkrI0aMMPSmUrpuUR730K5M\nHPnsIsbNSMANE2M6oWXktqRUeuWlWY0LqDQtqmI2NHmhUO4ZbzTRrckQu64ve+XUYSyP2/u0tZSu\n25bHPftdHo58dhHDbo7EqLuiO944ch9VRUDBaaDgrPK98CxQcKZ5mVMP34YAj05xXBVN15clTomo\nzTqzlK5LBn5nLbyTe74U+94/i35DAnHrnEHXnbhBbqq6pCHMbd8Lzig1zm28+wBhQ4GkGUDoUCB4\nQEOYewewV05EXaIzS+m6ZOB3hrKr1fhs/UkEhPpg0qIkzsQnZb32wnS73rq1915ptyqnpw4IGwIM\nvltZzjVsiPJdG85QJ6IerVcGfm2VEZ++eQJCCEx+bAS8fDmU6lbqqqzBfgYoPGMdkj8DVOQ07OPh\nqxRbGXCH0nMPGwqEDgEC+jHYiahX6nWBbzZZsGf9SehLajH9yRsQEMr1uHstYy1QdK5xb73wDFCa\njfqV4tReQOggoP+4ht566BCgT38u70pEbqVXBb6UEvs/OIvc82W46+FhiEhg/fpewVQHFGdYe+tn\nGq61l2Q2FGZRaYDggUDkaGDUXGuPfSgQGAuoe9WvORFRu/SqfwmP/TMbZ7/Lx41T4jAopa+zm0Nt\nZTYpIV4/DG+91l6cAVhMyj5CDQTFKz31pJlKbz1smDKJjrPgicjKvjzukSNHvJctWxaTn5/vKaXE\n/fffX7x69eo8lUqFmpoaMWHChIElJSWap59+Ou/RRx8tzc3N1cTExIx48cUXLy1fvrzX3J7YawI/\n42gBvtuZiYE3huPGybHObg5di8UClF1s3FsvOKMMz5ttlSSF0jsPGwoMmaz01sOGAiEDuegMEbVa\nZWWluPfeexNef/31SzNmzKjQ6/WqyZMnD1i9enXoihUrCr/99ltfo9Eozp49e9r2ms2bNweOHDmy\n6pNPPgluKfBNJhPs18Vv+tgVuXbrWik/qxx7N55GxIAA3DFvCG+/cxVSAuWXmwT7aaDwHGCqadgv\nIEa5vp4wwRrsQ4CQwayHTuTm1q1bF/TWW2+FG41GMXr06KrNmzdn+/v737Bw4cKCL774IsDb29vy\n6aefZkRHR5taKo+7YcOG4DFjxlTOmDGjAgB0Op3lrbfeujRhwoTB8+bNK12wYEFcaWmpZsiQIcO2\nb99+ITEx0fDJJ58EvfLKK5d/9rOfxWdlZXnExcUZAWXUYNGiRVe/+uor/5dffjnn4YcfjpszZ07R\nvn37/H/+858X6PV69V/+8pdQo9EoYmNjDdu2bcsymUxISkpKzMzMTPPy8pIlJSWq4cOH1z/uzvPZ\n4wO/orgGn637AX4Bnrh78XBoPNTObpL7kVJZZa4+2K1D8oVngbrKhv10kUqYj3nYbmb8YMCLlQqJ\nXNU/3/pTdNHl7E796zskun/1T5Y8ec2iPMeOHfPetm1b0JEjR856eXnJBx98MGb9+vXBNTU1qrFj\nx1balrx94403Ql966aW8lsrjnjp1ynv06NGNykQmJiYaqqurVT4+PpZ169Zl//GPfwzft29fBgBk\nZGR4FBUVedx+++3VqamppZs2bQr6wx/+cBUAampqVElJSTV/+tOf6tfG9/b2thw9ejQdAPLz89VP\nP/10EQA88cQTkWvWrAlZuXJlwdixY/Uff/xxwEMPPVT23nvvBd1zzz2l3R32QC8I/EO7MmEyWjD9\nl6Pho/N0dnN6NymVqmz2vXXbzPja8ob9/EKVMLdNnrMFu0+g89pORD3K559/rktLS/MdOXLkUACo\nra1VhYWFmTw8POTs2bPLASA5Oblq7969/kDL5XGllKKlUV9H2zdt2hRkW4v/oYceKlm4cGGsLfDV\najXmz59far//vHnz6h8fPXrU5/e//32UXq9XV1VVqcePH18OAIsWLSpcvXp134ceeqjsgw8+CNmw\nYcPFDp6edunRgW+xSGSnFSN+VCiCIq5bm4DaorrErrd+piHY7Qu++ARaJ8/dZxfsQwG/4JaPS0Q9\nyvV64l1FSilmzZpV/Oabb16x375+/fpwW+EajUYDk8lUn9qOyuMmJibWHDx4sFFp1NOnT3v6+vpa\n7Eve2mzfvj2oqKjIY8eOHUEAUFBQ4HHy5Emv4cOHGzw9PS1Nr9PrdLr6YyxatChu27ZtGWPHjq1Z\ns2ZN8IEDB3QAMHHixKrHH3/c6x//+IfWbDaLG2+8sd0V7zqi2wJfCOEHYB2AOgD7pZQfdvSYBRcr\nYKgyoX8SA6bdassbwtx+Znzl1YZ9vPyV2fBDpjQsUBM2DNCGcZEaIuoSkyZNqpgxY0bCb37zm6tR\nUVGmq1evqsvLy1u8ZttSedxFixYVv/rqqxE7d+7UTZ8+XV9ZWSkee+yxmMcffzy/6TFOnDjhVV1d\nrS4oKPjBtu2pp56K3Lx5c9DLL7+cd702V1dXq2JiYowGg0Fs2bIlKCIiwmh7bvbs2cULFiyIf/rp\np697nK7SocAXQrwHYAqAAillkt32SQBeB6AG8Gcp5f8BmAFgm5RytxBiK4AOB352WjGESiB6aFBH\nD9X7GSqBovSG6+y2YfkKuz+ePfyUofeEOxt662FDlTXjGexE1I2Sk5Nrf/vb316ZMGHCIIvFAg8P\nD7lmzZpLLe3fUnlcrVYrd+zYkbFs2bKYJ5980sNisWDWrFnFK1asKGh6jE2bNgXfc889jYbsZ8+e\nXfrAAw/Etybwf/3rX+empKQMjYqKqhs6dGh1ZWVl/R8oCxcuLF69enXUwoULS1p/FjpXh8rjCiFu\nBVAJYLMt8IUQagDnANwFIAfAYQBzAEwDsEdKeVwI8ZGU8oHrHf965XE/fuEwNJ4qzPhVcrs/Q69m\nrAXS/wF8/wFwYR/qV5/TeAMhgxoPw4cNUWbLc/U5oh6N5XFd01/+8pfAv//973127tyZ1dXv1SXl\ncaWUXwshmh40BUCGlDITAIQQW6CEfQ6AfgCOA+hwqlSVG1B4SY8fTY/v6KF6FymBvBNKyJ/8RCnl\nGhAN3PwUEJWsBHxgLKDi3QxERN3hZz/7WfS+ffsCPv300/PObEdXXMOPAmA/ySMHwE0A1gBYK4SY\nDGB3Sy8WQiwCsAgAYmJiWnyT7DRl8lj/pJAON7hXqCoGTn4MfP8hcPWksob8sFRlpnzcePbciYic\nZNOmTZfROBedoisC39HFXimlrAKw4HovllK+A+AdQBnSb2m/S2nF8OvjheAoN56dbzYBF74Cjn8A\nnP0MsBiByBuAyX9Ulp3lbXBE1D4Wi8UiHM16J9dmsVgEgGZ3HwBdE/g5AKLtHvcDkNvCvg4JIaYC\nmJqQkODwebPZgktnSjBwTLh7rqpXfEEZsj/xV2XBG99gIGURcMNcIDzR2a0jop4vrbCwcFhoaGg5\nQ7/nsFgsorCwMABAmqPnuyLwDwMYKISIA3AFwGwA152gZ09KuRvA7jFjxjzq6Pn8jHIYa83udTue\noRI4vVMJ+kv/AYQKGDgRuOdlYOBPAA0XHSKizmEymR7Jz8//c35+fhI6Yc4VdRsLgDSTyfSIoyc7\nelveXwHcBiBECJED4Bkp5btCiGUA/gnltrz3pJSnOvI+TWWnFUOlFug3pJcPWUsJXPpOCflTfwOM\nVUoJ2Dv/AIyYDfhHOLuFRNQLJScnFwBIdXY7qHN1dJb+nBa2fwbgs/Ye93pD+tmnihE5sA88vXv0\nQoEtq8hThuu//wAouQB4aoGkGcANDwHRKbwnnoiI2swlE/NaQ/oVxTUoya3C0HG9rHdrqgPO7VFC\nPmMvIC1A/x8Dt/4KGDYN8HTjyYlERNRhLhn413LplLJIUa+5fp9/UrmV7oetQE2JUlHu5l8Cox4A\nggc4u3VERNRLuGTgX2tIPzutGP4h3ugT3oNrpVeXAGnbge/fVxbJUXsCg+9RhuwH3M5FcYiIqNO5\nZOC3NKRvMpqRc7YEQ8dF9rzb8SxmIHO/MmR/9h+A2QD0HQ7c/RIwfBbgy3oARETUdVwy8FuSe64M\npjpL+4bzLWbg61cADx+l0lvYEMA/qusnwJVkAcc/BI7/FajIAbz7AMnzlXvmI0Z27XsTERFZuWTg\ntzSkn51WDLWHClGD+rT9oNnfAvtfaLzNVvbVVkTGVkimo2Vf66qBM7uU3vzFgwAEkDABmPisMnTv\n4d3+YxMREbWDSwZ+S0P6OemliBrUBxrPdlzjztwPCDXwxDGg/Iq1/ru1BvyZ3cCxTQ37+gTZ/QFg\n+4Ng2LWH3aUEco4o1+XTdgB1eiAwDrjjt8DIOUBAv7a3mYiIqJO4ZOA7YjZbUJZfjdgR7SyWk3UA\niBqtVIoLjAVif9zwnJRAVSFQcFr5A6DgtFIr/oePAUNFw35+YQ5GA0KVPxi+/wAoOgd4+ALDpgM3\nPAj0H8d75omIyCX0mMAvL6iBxSIRFNGO+9FrK4Arx5QSsY4IoQzja8OA+NsatksJVOQqIwH1IwJn\ngGObAWN142NE3wSkvgEk3gt46dreRiIioi7kkoHv6Bp+aV4VALQv8LO/AaQZiB/f1oYAAVHK18A7\nG7ZbLED5JSX8yy4rfySEDmp7u4iIiLqJSwa+o2v4JdbAb9f995n7AY0P0C+lcxqoUjVcGiAiIuoB\nekwVpNL8auiCveHh1Z4JeweAmB9xdjwREbmtHhP4JXlVCOzbjuF8/VXl+ntbh/OJiIh6kR4R+BaL\nRNnVagRFtGM4P+tr5XscA5+IiNyXSwa+EGKqEOKd8vJyAIC+uAZmowWB7Zmwl7VfWd2Oq9oREZEb\nc8nAl1LullIuCggIAACU5Cm3wLV5hr6UyvX7uFtYkIaIiNyaSwZ+U7Zb8gL7tnFIvyQTKL/M4Xwi\nInJ7PSbw/QI84eXr0bYXZh1Qvsff1tlNIiIi6lF6ROCX5FW17/p95gGlIl5wwvX3JSIi6sVcPvCl\nlCjNr2574Fssygz9uPFcz56IiNyeSwa+/Sz9ylIDjAZz2yfsXT0J1JTw/nsiIiK4aODbz9Jv94S9\nTOv1e07YIyIics3At1dWUAOgHWvoZx0AQgYB/hFd0CoiIqKexeUD32gwAQC82zJD31QHZH/L2flE\nRERWLh/4JqMFAKDStGHiXc5hpV49h/OJiIgA9IDAt5gsUGtUEG2ZaZ91ABAqIPbmrmsYERFRD+Ly\ngW8yWqD2aGMzMw8AEaMAnz5d0ygiIqIexuUD39zWwDfogStHeP2eiIjITo8IfI2mDc3M/hawmHj/\nPRERkR2XD3yTqY09/MwDgNoLiL6p6xpFRETUw7hk4NuvtGc2KpP2Wi3rABBzE+Dh03UNJCIi6mFc\nMvDtV9ozt6WHX1kIXE3j9XsiIqImXDLw7ZmNFmhaG/i2crhxt3VZe4iIiHoilw/8Nt2Wl3UA8AoA\nIkd1baOIiIh6GJcPfLOpDdfwMw8oi+2o1F3bKCIioh7G9QPfftKelMqXIyVZQFk2r98TERE54PqB\nb7K7hv/X2cCORx3vaLt+z/vviYiImnH5wG90Df/qaeDkJ8CZ3c13zDwAaPsqJXGJiIioEZcP/EZL\n69bple+f/Q9QW9Gwk8UCZH2t9O7bUmSHiIjITfSIwNdoVMq1e0MlEHcroM8Dvnq2YaeC00B1Ecvh\nEhERtcDlA79+aV2TAbAYlVBPWQT8dwOQc0TZKXO/8p3X74mIiBxy+cCHhDJLv65SeeylA+74LaCL\nAHY9AZiNyoS94AQgoJ9z20pEROSiui3whRDxQoh3hRDbWvsaab0FT+2hUsreAoCnFvD2Bya/AhSc\nAv79J6VCHofziYiIWtSqwBdCvCeEKBBCpDXZPkkIkS6EyBBC/Ppax5BSZkopF7alcbZb7jUe9j18\nrfJ9yGRgyBRg3/PKcxzOJyIialFre/gbAUyy3yCEUAN4E8DdAIYBmCOEGCaEGC6E+LTJV1i7WmdR\nvik9fLshfZt7XlZ6/BBA7C3tegsiIiJ3oGnNTlLKr4UQsU02pwDIkFJmAoAQYguAaVLKFwFMaW+D\nhBCLACwCgJjo/gCs1/Drh/TtAt8/Epi2Fsg/CfgGtfctiYiIer2OXMOPAnDZ7nGOdZtDQohgIcR6\nADcIIVa0tJ+U8h0p5Rgp5ZjAQCXElUl71sC3DenbJE4HJvyunR+BiIjIPbSqh98CRyvctLDQPSCl\nLAawuFUHFmIqgKnxsQkArNfwbUP6ntqWX0hEREQOdaSHnwMg2u5xPwC5HWuOQkq5W0q5SKtVwl3t\naNIeERERtVpHAv8wgIFCiDghhCeA2QB2dU6zFI5vy9Nd4xVERETkSGtvy/srgP8AGCyEyBFCLJRS\nmgAsA/BPAGcAfCylPNUZjRJCTBVCvFNVWQXAbtKexgdQd+QqBBERkXtq7Sz9OS1s/wzAZ53aIuW4\nuwHsHj5s1KOA3X34HM4nIiJqF5deWrd+SF9jnbTHCXtERETt4pKBbxvSr66qBmA3ac+L1++JiIja\nwyUD3zZL38fHB4Dttjw9A5+IiKidXDLwbWxr6ddP2uOQPhERUbu4ZODbhvRra2oB2A/pM/CJiIja\nwyUD3zak7+XlBQhApRactEdERNQBLhn4NlICGo0KQghO2iMiIuoAlw58QCrD+WYTYKxm4BMREbWT\nSwa+7Rq+obbOWimPhXOIiIg6wiUD33YN38PDk4VziIiIOoFLBn49KRuXxuWQPhERUbu4dOBLNCmN\ny0p5RERE7eLagS+lddGdCmUDh/SJiIjaxSUD3zZpz2Q0NR7S56Q9IiKidnHJwLdN2lOp1PD00XDS\nHhERUQe5ZODbSIuEl6/GbtKev3MbRERE1EO5fuD7eAB1emUDh/SJiIjaxaUD32IBPH01SqU8lQbQ\neDm7SURERD2SSwc+AHj5aBoK5wjh7OYQERH1SK4f+L7WSXu8fk9ERNRuLhn4ttvyACiz9A16ztAn\nIiLqAJcMfNtteYC1h2/Qc8IeERFRB7hk4NtrGNJn4BMREbWXywe+p7d10h4L5xAREbWbywe+h5da\n6eGzcA4REVG7uXzgC5Ww9vA5pE9ERNReLh/4KhWUlfY4aY+IiKjdXD/wzbWAtLCHT0RE1AEuH/jC\nVKX8wEl7RERE7eaSgW+/8I7KaK2Ux0l7RERE7eaSgW9beEcIQNgCn0P6RERE7eaSgd+IgaVxiYiI\nOsq1A19AuQcf4DV8IiKiDnDpwBeAcg8+wMAnIiLqAJcOfIsFyj34AIf0iYiIOsClAx8AUF2ifPcO\ncG47iIiIejDXD/ySLEAbDnj6OrslREREPVYPCPwLQNAAZ7eCiIioR3P9wC++AATHO7sVREREPZrr\nB35VAXv4REREHeT6gQ8AwQx8IiKijui2wBdCTBdCbBBC/F0IMbFNL2YPn4iIqENaFfhCiPeEEAVC\niLQm2ycJIdKFEBlCiF9f6xhSyp1SykcBzAfw0za1MojX8ImIiDpC08r9NgJYC2CzbYMQQg3gTQB3\nAcgBcFgIsQuAGsCLTV7/sJSywPrzb62vax1dJG/JIyIi6qBWBb6U8mshRGyTzSkAMqSUmQAghNgC\nYJqU8kUAU5oeQwghAPwfgD1SymMtvZcQYhGARQAQHTIICOzfmiYSERHRNXTkGn4UgMt2j3Os21ry\nOIA7AdwnhFjc0k5SyneklGOklGN8PSoBL/8ONJGIiIiA1g/pOyIcbJMt7SylXANgTZveQFo4nE9E\nRNQJOtLDzwEQbfe4H4DcjjVHIYSYKoR4R0oL4MHAJyIi6qiOBP5hAAOFEHFCCE8AswHs6oxGSSl3\nSykXCQEGPhERUSdo7W15fwXwHwCDhRA5QoiFUkoTgGUA/gngDICPpZSnOqNRth4+pOSQPhERUSdo\n7Sz9OS1s/wzAZ53aIuW4uwHsHto39FF4+HX24YmIiNyO6y+tyx4+ERFRh7lk4NcP6QO8hk9ERNQJ\nXDLwbZP2ADDwiYiIOoFLBn4jHNInIiLqMNcPfE7aIyIi6jCXDPxG1/DZwyciIuowlwx8XsMnIiLq\nXC4Z+I0w8ImIiDrMpQPfJL04pE9ERNQJXDLwbdfwDRY/QBfp7OYQERH1eC4Z+LZr+CqVBFQu2UQi\nIqIehWlKRETkBhj4REREboCBT0RE5AZcMvDrF96R0tlNISIi6hVcMvDrF94RwtlNISIi6hVcMvCJ\niIioczHwiYiI3AADn4iIyA0I6cIT44QQegDpzm6HCwsBUOTsRrg4nqNr4/m5vp52jvpLKUOd3Qhy\nPRpnN+A60qWUY5zdCFclhDjC83NtPEfXxvNzfTxH1FtwSJ+IiMgNMPCJiIjcgKsH/jvOboCL4/m5\nPp6ja+P5uT6eI+oVXHrSHhEREXUOV+/hExERUSdg4BMREbkBpwe+EGKSECJdCJEhhPi1g+e9hBBb\nrc8fEkLEdn8rnasV52i+EKJQCHHc+vWIM9rpLEKI94QQBUKItBaeF0KINdbz94MQYnR3t9HZWnGO\nbhNClNv9Dv2+u9voTEKIaCHEPiHEGSHEKSHELxzs4/a/R9SzOTXwhRBqAG8CuBvAMABzhBDDmuy2\nEECplDIBwGsAVndvK52rlecIALZKKUdZv/7crY10vo0AJl3j+bsBDLR+LQLwVje0ydVsxLXPEQAc\ntPsdWtUNbXIlJgBPSymHAvgRgMcc/H/G3yPq0Zzdw08BkCGlzJRS1gHYAmBak32mAdhk/XkbgAlC\nuFUZvdacI7cmpfwaQMk1dpkGYLNUfAegjxAionta5xpacY7cmpQyT0p5zPqzHsAZAFFNdnP73yPq\n2X7IqvcAAAScSURBVJwd+FEALts9zkHz/8nq95FSmgCUAwjulta5htacIwCYaR1m3CaEiO6epvUY\nrT2H7m6sEOKEEGKPECLR2Y1xFutlwxsAHGryFH+PqEdzduA76qk3vU+wNfv0Zq35/LsBxEopRwDY\ni4YREVK4++9QaxyDsgb7SABvANjp5PY4hRBCC2A7gCellBVNn3bwEv4eUY/h7MDPAWDfG+0HILel\nfYQQGgABcK+hyeueIyllsZTSYH24AUByN7Wtp2jN75lbk1JWSCkrrT9/BsBDCBHi5GZ1KyGEB5Sw\n/1BKucPBLvw9oh7N2YF/GMBAIUScEMITwGwAu5rsswvAz6w/3wfgK+leqwVd9xw1uY6YCuX6IzXY\nBWCedZb1jwCUSynznN0oVyKE6GubGyOESIHyb0Oxc1vVfayf/V0AZ6SUr7awG3+PqEdzarU8KaVJ\nCLEMwD8BqAG8J6U8JYRYBeCIlHIXlP8J3xdCZEDp2c92Xou7XyvP0RNCiFQoM41LAMx3WoOdQAjx\nVwC3AQgRQuQAeAaABwBIKdcD+AzAPQAyAFQDWOCcljpPK87RfQCWCCFMAGoAzHazP6x/DOAhACeF\nEMet234DIAbg7xH1Dlxal4iIyA04e0ifiIiIugEDn4iIyA0w8ImIiNwAA5+IiMgNMPCJiFzE9Yoc\nNdn3NbtiR+eEEGXd0UbquThLn9yWEKJSSqnt5GOOAhBpXbwGQog/AKiUUr7Sme9DvZMQ4lYAlVDW\n7E9qw+seB3CDlPLhLmsc9Xjs4RN1rlFQ7tUmajNHRY6EEAOEEJ8LIY4KIQ4KIYY4eOkcAH/tlkZS\nj8XAJwIghFguhDhsLUD0/6zbYq310TdYa6R/IYTwsT53o3Xf/wghXhZCpFlXQlwF4KfWYdafWg8/\nTAixXwiRKYR4wkkfkXqudwA8LqVMBvArAOvsnxRC9AcQB+ArJ7SNehAGPrk9IcREKDXOU6D00JOt\nQ6uwbn9TSpkIoAzATOv2vwBYLKUcC8AMANbyxb8HsNVaU36rdd8hAH5iPf4z1jXbia7LWsxnHIBP\nrCsAvg2gaUne2QC2SSnN3d0+6lmcurQukYuYaP363vpYCyXoLwHIklLallo9CiBWCNEHgE5K+a11\n+0cAplzj+P+wFjcyCCEKAIRDKcRCdD0qAGVSylHX2Gc2gMe6qT3Ug7GHT6SUPX3R2isfJaVMkFK+\na33OYLefGcofyY7KpF6Lo2MQXZe1RG+WEGIWoBT5EUKMtD0vhBgMIBDAf5zUROpBGPhESmGih63D\npxBCRAkhwlraWUpZCkBvrZgGNC7opAeg67KWUq9mLXL0HwCDhRA5QoiFAOYCWCiEOAHgFIBpdi+Z\nA2CLmxU6onZiT4PcnpTyCyHEUAD/sVaIrQTwIKzX5luwEMAGIUQVgP0Ayq3b9wH4tfV664td1mjq\nlaSUc1p4alIL+/+h61pDvQ3vwydqByGEVkpZaf351wAipJS/cHKziIhaxB4+UftMFkKsgPL/UDaA\n+c5tDhHRtbGHT0RE5AY4aY+IiMgNMPCJiIjcAAOfiIjIDTDwiYiI3AADn4iIyA38f8k0Y2Id0DY4\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1159b0ef0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"firefox = pandas.read_csv('firefox.csv')\n",
"plt.figure(); firefox.plot(title='Firefox', x='length', logy=True)\n",
"plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": 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.0"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment