diff --git a/README.md b/README.md index 30ef77d..f16e2b0 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # MS-cryptocurrency Task fo Mathematical Software + + +Potrebno instalirati rsa. \ No newline at end of file diff --git a/biljeznica.ipynb b/biljeznica.ipynb index e5ead8d..b4e39c5 100644 --- a/biljeznica.ipynb +++ b/biljeznica.ipynb @@ -11,61 +11,419 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Općenito" + "Kriptovalute su digitalne imovine prvotno osmišljene kao sredstvo za razmjenu vrijednosti koje koriste kriptografiju za validaciju i sigurnost transakcija, te kontrolu stvaranja dodatnih jedinica.\n", + "Kriptovalute koriste decentraliziranu kontrolu za razliku od centraliziranih bankarskih sustava." + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [ + { + "data": { + "image/jpeg": "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\n", + "text/plain": [ + "" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import Image \n", + "Image(filename='Cryptocurrency.jpeg')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Kriptovalute su digitalne imovine prvotno osmišljene kao sredstvo za razmjenu vrijednosti koje koriste kriptografiju za validaciju i sigurnost transakcija, te kontrolu stvaranja dodatnih jedinica.\n", - "Kriptovalute koriste decentraliziranu kontrolu za razliku od centraliziranih bankarskih sustava." + "## Bitcoin" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bitcoin je prva decentralizirana kriptovaluta napravljena 2009. godine od čovjeka(ili ljudi) pod pseudonimom Satoshi Nakamoto. Motiv za projektiranje Bitcoina je bilo veliko nezadovoljstvo centraliziranim sustavom kojim su upravljale države i banke. \n", + "Za Satoshija Nakamota problem bankarskog sustava je bilo povjerenje trećoj strani, tj. samoj banci preko kojih se svaka transakcija odvijala. Ono što je bilo potrebno je elektronički platni sustav baziran na kriptografijskom dokazu a ne na povjerenju trećoj strani, koji bi omogućavao dvjema stranama da razmjene sredstva direktno jedan s drugim bez povjeravanja trećoj strani. Problem je rješen takozvanom javnom knjigom u kojoj su zapisane sve transakcije javno, a sami računi i količina novca na njima je postala anonimna. Javnu knjigu sadrži svaki čvor koji sudjeluje u mreži. Javna knjiga je zapravo niz blokova u kojima su zapisane transakcije koje su obavljane na mreži.\n", + "\n", + "Od tada do danas napravljeno je mnoštvo kriptovaluta koje se baziraju na raznim područjima primjene(od financija, preko osiguranja do nutricionizma).\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Blochchain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Velika većina kriptovaluta je napravljena na blockchain tehnologiji. Blockchain možemo poistovjetiti sa bazom podataka koja je podjeljena između svih čvorova koji sudjeluju u sustavu.\n", + "Osnovna građevna jedinica svakog blockshaina je blok.\n", + "Svaki blok se sastoji od svog zaglavlja i tijela. Zaglavlje sadrži hash prethodnog bloka i hash trenutnog bloka, dok tijelo sadrži podatake koji su spremljeni u bloku(data)." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 146, "metadata": {}, "outputs": [], "source": [ - "import matplotlib.pyplot as plt\n", - "figa, axa = plt.subplots()\n", - "crypto = plt.imread('Cryptocurrency.jpeg')\n", - "axa.imshow(crypto)" + "import hashlib\n", + "\n", + "class Block:\n", + "\n", + " def __init__(self, previousHash, data):\n", + " \n", + " self.data = data\n", + " self.previousHash = previousHash\n", + " self.encoded = \"\"\n", + " self.hash = self.hashBlock().hexdigest()\n", + " \n", + " \n", + " def hashBlock(self):\n", + " \n", + " sha = hashlib.sha256()\n", + " se = (str(self.data) + str(self.previousHash)).encode('utf-8')\n", + " sha.update(se)\n", + " return sha" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'6e3f7192eb7e4267e58ebebedaa950654c45ac025e14dc596d5aa35d6d9b7929'" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "firstBlock = Block(\"\",\"Ovdje moze biti bilo koji podatak\")\n", + "firstBlock.hash" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Bitcoin" + "### Hash" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Bitcoin je prva decentralizirana kriptovaluta napravljena 2009. Od tada je napravljeno mnoštvo kriptovaluta sa raznim idejama za primjenu." + "Hash funkcija je algoritam koji od podatka proizvoljne dužine(može biti slovo, a može biti i tekst cijele Biblije) stvara podatak fiksne dužine. Hashiranje je deterministički određena funkcija gdje isti ulaz podataka uvijek daje istu izlaznu vrijednost. Najmanja izmjena podatka kojeg hashiramo rezultira totalno drugim outputom.\n", + "Linija iznad ispisuje jedinstveni 256-bitni output SHA-256 algoritma. Ako malo promjenimo ulazni string vijednost hash funkcije će biti totalno drugačija:" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'cbef0b2cc7ecdd53ccafad1a84f7e837870192a1ba6ca7ae45bb2a8a5eee7ef8'" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "secondBlock = Block(firstBlock.hash,\"Ovdje moze biti bilo koji podatak\") #podaci su isti samo je previousHash drugaciji\n", + "secondBlock.hash" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Blochchain" + "Što je toliko zanimljivo kod hash funkcije?\n", + "\n", + "Odgovor leži u invertibilnosti hash funkcije. Što znači da je gotovo nemoguće rekonstruirati ulaznu vrijednost gledajući samo izlaznu vrijednost.\n", + "Također pomoću hash funkcije svaki blok ima svoju jedinstvenu \"šifru\" koja ovisi o šifri prethodnog bloka i podacima koji se nalaze u samom bloku." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Velika većina kriptovaluta je napravljena na blockchain tehnologiji. Blockchain možemo poistovjetiti sa bazom podataka koja je podjeljena između svih čvorova koji sudjeluju u sustavu.\n", - "Osnovna građevna jedinica svakog blockshaina je Blok:" + "Najjednostavnija moguća implementacija blockchaina je sljedeća:" + ] + }, + { + "cell_type": "code", + "execution_count": 149, + "metadata": {}, + "outputs": [], + "source": [ + "class Blockchain:\n", + " \n", + " def __init__(self, genesisBlock):\n", + " \n", + " self.blocks = []\n", + " self.blocks.append(genesisBlock)\n", + " \n", + " def addNewBlock(self, block):\n", + " \n", + " self.blocks.append(block)" + ] + }, + { + "cell_type": "code", + "execution_count": 150, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6e3f7192eb7e4267e58ebebedaa950654c45ac025e14dc596d5aa35d6d9b7929\n", + "cbef0b2cc7ecdd53ccafad1a84f7e837870192a1ba6ca7ae45bb2a8a5eee7ef8\n", + "af9e188651c8b43c87ba5576e54bc2dc2f49e8adfea45d1d8b33279392f61f58\n" + ] + } + ], + "source": [ + "blockchain = Blockchain(firstBlock)\n", + "blockchain.addNewBlock(secondBlock)\n", + "thirdBlock = Block(secondBlock.hash,\"Dostojevski je bio sin liječnika, pripadnika nižeg plemstva kojeg su ubili vlastiti kmetovi zbog okrutnosti i ponižavanja, dok mu je majka umrla u djetinjstvu. Budući pisac pohađa i završava vojno-inženjerijsko obrazovanje u Petrogradu, no rano odlučuje da će se posvetiti književničkom pozivu. Među ranim utjecajima najvažniji je njemački dramatičar i pjesnik Friedrich Schiller, za Dostojevskog utjelovljenje idealizma i humanosti - upliv koji je kasnije žestoko ismijavao i karikirao, no, kojeg se nije oslobodio do kraja života. Prevodi Balzacovu Eugeniju Grandet i pod utjecajem Gogolja piše svoje prvo djelo, kratki epistolarni roman Bijedni ljudi (1846.), koji je prikazom trpnji i zanosa tzv. malih ljudi oduševio najznačajnijeg ruskog kritičara Visariona Bjelinskog i lansirala Dostojevskog u sferu eminentnih ruskih književnih krugova. Autor se kreće u društvu literata i dobrostojećih mecena i plemstva, ali izgleda da su njegova sramežljivost, počeci manifestacije živčanih poremećaja koji su kasnije dijagnosticirani kao epilepsija, kao i sklonost kršćanskom misticizmu doprinijeli da nije bio u potpunosti prihvaćen u liberalno-sekularnim krugovima. \")\n", + "blockchain.addNewBlock(thirdBlock)\n", + "print(blockchain.blocks[0].hash)\n", + "print(blockchain.blocks[1].hash)\n", + "print(blockchain.blocks[2].hash)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "U liniji iznad imamo blockchain koji se sastoji od tri bloka koji su povezani tako da treći blok sadrži u svom zaglavlju hash drugoga a drugi u zaglavlju hash prvoga. Ako promjenimo bilo što u podacima bilo kojega bloka njegov, a i svi hashovi blokova koji slijede bit će promjenjeni:" ] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 152, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6e3f7192eb7e4267e58ebebedaa950654c45ac025e14dc596d5aa35d6d9b7929\n", + "b5a305ad60882dfa76b1a16b8bee56e6912b201f8b95776210547812db0dce79\n", + "e58da200b19e4e7f45a1f900c9989ca20fe473f1fb56b8f7dbb4c57a300ab5e7\n" + ] + } + ], + "source": [ + "blockchain1 = Blockchain(firstBlock)\n", + "secondBlock = Block(firstBlock.hash,\"Promjenio sam drugi blok\") #podaci su isti samo je previousHash drugaciji\n", + "blockchain1.addNewBlock(secondBlock)\n", + "thirdBlock = Block(secondBlock.hash,\"Dostojevski je bio sin liječnika, pripadnika nižeg plemstva kojeg su ubili vlastiti kmetovi zbog okrutnosti i ponižavanja, dok mu je majka umrla u djetinjstvu. Budući pisac pohađa i završava vojno-inženjerijsko obrazovanje u Petrogradu, no rano odlučuje da će se posvetiti književničkom pozivu. Među ranim utjecajima najvažniji je njemački dramatičar i pjesnik Friedrich Schiller, za Dostojevskog utjelovljenje idealizma i humanosti - upliv koji je kasnije žestoko ismijavao i karikirao, no, kojeg se nije oslobodio do kraja života. Prevodi Balzacovu Eugeniju Grandet i pod utjecajem Gogolja piše svoje prvo djelo, kratki epistolarni roman Bijedni ljudi (1846.), koji je prikazom trpnji i zanosa tzv. malih ljudi oduševio najznačajnijeg ruskog kritičara Visariona Bjelinskog i lansirala Dostojevskog u sferu eminentnih ruskih književnih krugova. Autor se kreće u društvu literata i dobrostojećih mecena i plemstva, ali izgleda da su njegova sramežljivost, počeci manifestacije živčanih poremećaja koji su kasnije dijagnosticirani kao epilepsija, kao i sklonost kršćanskom misticizmu doprinijeli da nije bio u potpunosti prihvaćen u liberalno-sekularnim krugovima. \")\n", + "blockchain1.addNewBlock(thirdBlock)\n", + "print(blockchain1.blocks[0].hash)\n", + "print(blockchain1.blocks[1].hash)\n", + "print(blockchain1.blocks[2].hash)" + ] + }, + { + "cell_type": "code", + "execution_count": 131, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAncAAAEhCAYAAAAd9YYVAAABemlDQ1BJQ0MgUHJvZmlsZQAAKM9jYGAqSSwoyGFhYGDIzSspCnJ3UoiIjFJgv8PAzcDDIMRgxSCemFxc4BgQ4MOAE3y7xsAIoi/rgsxK8/x506a1fP4WNq+ZclYlOgz4AXdKanEyAwMjB5CdnFKcnAtk5wDZOskFRSVA9gwgW7e8pADEPgFkixQBHQhk3wGx0yHsDyB2EpjNxAJWExLkDGRLANkCSRC2BoidDmFbgNjJGYkpQLYHyC6IG8CA08NFwdzAUteRgcogN6cUZgcotHhS80KDQe4AYhkGDwYXBgUGcwYDBksGXQbHktSKEpBC5/yCyqLM9IwSBUdgyKYqOOfnFpSWpBbpKHjmJevpKBgZGBqA1IHiDGL05yCw6Yxi5xFi+QsZGCyVGRiYexBiSdMYGLbvYWCQOIUQU5nHwMBvzcCw7VxBYlEi3OGM31gI8YvTjI0gbB4nBgbWe///f1ZjYGCfxMDwd+L//78X/f//dzHQfmCcHcgBACR3aeD10IV6AAABnWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj42MzE8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+Mjg5PC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CnjillIAAG/sSURBVHhe7b1d7PzaVd89LRCSQOFIaaVKrdRIvaFHlaYXkXpBw5xewEW4oFKljLgyUW8CUWVEUxklgfJyYUSlmkei9UWU+ogH4T6lxYeX1EpD4rYB5lAanHefNA0mJ+ecIQk5DrTFfWU9a+2XGXt+nhnPzG/894y/H519/r8Zv22v2cvru9fetmcEAAAAAADuBog7AAAAAIA7AuIOAAAAAOCOgLgDAAAAALgjIO4AAAAAAO6IQcRdnuf0zDPPoKBctbiua1rcdOmyCwrKY5epI9eaLrugoDxmEe10LoOIuyzLaDaboaBctSwWC9PipkuXXVBQHrtMHbnWdNkFBeUxi2incxlU3P2jf/SPzDcAPC7SviDuYAdwXayomTqwA7gmopWkfUHcgckDUaOBHcA1gajRwA7gmjyauPvTP/3Tq5YPf/jDqqI/+qM/2rl8TAXcJhA1GtgBXBOIGg3sAK7Jo4i7LoHz2OWWxF2zgNsBokYDO4BrAlGjgR3ANbmKuPu///f/Pnr50Ic+pCoq4q5r+ZMuuzbYLWD8QNRoYAdwTSBqNLADuCaPIu66xM7/+T//51FLU9x1LX+Spev8uwSeFDBeIGo0sAO4JhA1GtgBXJNHE3e7gud//+///ajl13/911VFf+RHfqRz+ZMsu+d+TOQ9pKIsiSlJU0rThOI45pJQlhdU1WYVpq4KXi8i10+o8fVJVCXvIw4pTEvzTR+4flyf8tyD3ggQNZp7tkORsX8l4mcpJcrPYkqznMqGoz2Gn9VVSXkWkx+k/fZRrymNAvI8n+KsOPu4twBEjeae7VAVmYphys84tomfJWlGxboyazB1xT6SkO8GVJzvaFTkGYV+2HMfNeVxQM7SIS9MaX3HjvYo4m5XzP2v//W/WuV//s//eXH54Ac/qCr6nve8p3P50GX3HJvn30fkPaAuKeDzm808ytdrKosVBUv5PKfUqKqaA0Dmz2k2jy4Qdzm5fJx5VJhvDlNwgHIXUo8F5XfsCMI9i5pTuG871NqH+ByToqQ1d3aSYKk++5nu8DyGn4lYi132m177KMnh47thTKGnA/7cX5ll9wfEnebe7VBmgTo/L8lpvS5plejPcz/TPlHXHF98/u6S2CJize25j5pSd0FenFG+SpTPzZzULLs/HkXcNQWdFT//43/8j02p+Ue8tHzgAx9QFX33u9/duXzo0jy/XcG3T+QdFng1xSLmFnEjGOiL/jzcPmG6LiK2wwVBR47DYm3RU9wJdRkr5zm7d3UjSPuCuLt/OxSxiLlloz3XlDhtIXa5n5njzJv+3E2ZeBQ3nCsPJeh77P33CcSd5t7tUBcSN2attl0mDn/XEGJ1QYsLEwf6OD32wcdKVmvzgT/mIjbDi3x8zDyKuLNizgqfP/mTP1Hlv//3/67Kf/tv/+3iIuldqei73vWuzuVDF3tu9lybos8KvabI25fF29It7iTL1hRiD4KOGs4Jyfd9CrlH0kh6m2UB+Z5HIfee9DZNcce9HhmmkpR5Zpc/xDoPxN00uHc7nCfu2FfSmAL2Mz+MqWjOl1DLIvZBj5dtpy8UMQdvI+7KXIapZHgqezAUVK+rxnH4cx7ysf22L98REHeaaYq7nSxbh7ir8pSCgOOWH1JWtL1ALWMf9HjZyo5oNeJTXeZmukVC+ZEx1zxckpvcaxfqkcTdf/2v/5X+6I/+iKqqUuXVV1+lr371q6r84R/+4aZ85StfObs899xzqqL/8B/+w87lQ5Xm+dhzlPO15y52EHuI0GuKvOMZPCPuZi5leU75KtPDsnO/JapaQYcdQzJ7US4OUFPqyfbc45eFdUkeN3g9pKtF4izUgk6Ju1gadUXRck5hVraCyy4Qd9Pi3u1QxJI9YL/hDk2eryhWw7LsK40G3hZ3WvwtIp1BL1NPba99S4Z65mZIl/8WkWi2s+JOkECyDDO+LqiPBynCOc3c8y/IYwfiTjMVcedEmXq/aRbLEOyM/LQxarQj7lRmbxGpjk1d6oSOa+aHl6lLc08P6crfMmVJttvEJ9mGO0bzZcgxcL+jyZza2Ex/aArPe+NRxN0Xv/hF+tznPkcvvPACFUVBn/nMZ+jTn/40fepTn6JPfvKTm/KJT3zi7PK+971PVfT7v//7O5cPVZrnI+cn5ynnK+ct5y92EHuI4JOMXh+BpzHibu5Syj9GGofkzPXnZu+lGXTK3WEfdpQl22gZF3pZsB3OrfLM7EeLu7kfU+jyvnvMKIW4mxb3bgeduZtTlLJPpDH5jszB489Zd4b84bQE46tL9j21rDG0U+WUmP3oYVmf4tDlDtR2OOggqsPm3rWvQdxppiLu3ChlgZFS6OtOlctibxPRWuKuVPErajR+FcdmDvuDLNNiTiM3Ier92PgUxwG5wXEhIzc7yU0YnplLvtqG17viUcSdzWChbMuLL75If/zHf9w7g8dNrmNYtqJINUB3M/+mGXQyX5Y15wwY4RZ9jBLeV/e8OnMc/tFlv32CCMTdtLh3OzwcliXKI/nOZuPaflapSd/NwGKFW0QvSKZhz7w6myGU0i9DUFE4X3CHy3y8UyDuNFMRd822X+fiV9tsHK+0FXeVfsVooEaiNDb2PP/C/hhkjyPFibti3h5UR2pGYdOx7wiIuyuVz372syp7J/PydufhdQu8P+kQdzYQbdPWzaBTRHxxaN2NZ8RdmFMmQ7Q7dwJVpQy/6nWW3Huyd/Md67hA3E2Le7dDl7izAcJe6FuZO/V3e16QFXdlJkO0286XIJkBmZKnhmWXEWX2br6DjlazzzoUG3EpSMfwHoG400xF3DUzcewVKju3sDcJNsVdnfPf7fVt7MlLLfxaU+TqSj3CSK/jULayPtw3FcexcM7r32lgg7i7UpHhWpmXJzdfyPCsFXiHsncPxB03fDVXbhZsBFid+5tMgXWeZBMQ9N21EiB0toF7SHGugkSRBuSamyi2c+70XDy5Nf0gdljKfLxXxF4Qd/dvh1Jl1JrirqJYzZWbb4Zomn4mfigByWlEFplbtxQfMtmGuRureT5VkZLj6O3stAlB3bDBftyMTU3yYE7zIFOPjCi5E1ZwoPLMHL97A+JOc/d2UHGjnbkrVEdnRsHG0Vb82cYWHZskKWG3WKfsq0t53mRFPm8nHSm5kULmzQVLV4tCdZyl8i19w8Z8z3SjivJVvk1mrDOaz8Pt5zsD4u5KRebnffnLX1ZDs5K92zc8q4Xdq/ThX/gnqtciDdNxPXIdyS5wAPHiTRCqy9VmnkBo5vWUqYi4BcX8A4bOYvOsLnGUVaQdScrCPFuo5KAhgWq28Gi15sZuho7mbtSd8uZjBq5chObkx9ldP8hY2Qni7q7toJ/bqJ9zt3Bc8jyH5tL+l95mbmuXn8nkbvFPL04pCZ2NPwnrVaT2IfuczVnA8QLZh6+mP7Bv5iVVuQ50eg5t24nWpiPWLluheW9A3Gnu2Q7yEGMdN9i3Fg77mUtLNYd8uZ3bWpebGxvc0MzD446Uz+vNOe6lccA20v6kFq1XJtkhZUGZdjSKfR0rvZiFW5WrBIf4T3MOrcJkBmWZF/jkBwnd8wyIq4q7V7/6In30+c/QlzqWffnFT9NHP/7FB9/3K1+izzz/Ufr8l7d35R4up67/Vaq++FH6xV/8IL341f7bNMvHPvYx+oM/+AP62te+pu6ePZq9+5Pd596dAAvHNff2W09nsPAy/u9xeLQdjRNxBIg72GE/NVXrktbdjqY6cOA4EHca2GE/dbWmsvk2iwaX+plsPwVXvaq4+9pL76enZ++hzzcejWLL+sPvotk7/+2D7/uUV1/9PL1n9jT98u//Uefy3XLq+lLW/+HH2TBPU7b+WufyY+V3f/d36ZVXXlGPR+mXvdMFPDkgajSwA7gmEDUa2AFck+uKuy9+kL776X9ML3eJOxZPb3539uD7PkXE2k+/+S30/pf6CS+7/gdfOU2offnlL3d+36f8p//0n+ill15Sf8uz75pz7yDuxglEjQZ2ANcEokYDO4BrcnVx99Y3/wP6Zz/xVnWQ2ey76dnf/H21rCnuqlc+Sv94+bRZ52n68V/6+GYfn/qVn6Kn1fczenr5k/T8K/KQ5K24k7//+duepqff+Zwa/t23/s+85S3048EPmWPMNseQoeP/b1O/Gb31JxI1FPu1dUbf99afUX9/4n0/QG/5gXfT2542+31HSJ8+MsT7H//jf1TPu5ObKuzQbDN7B3E3PuS3haiBHcB1gajRwA7gmlxX3LFA+m7e+Vt/+tfo8y9+nv7Dz4m4+m76CAuurbj7Ev3Lt7Foets/p0+/+DJ99t+/V1XoZ3/nS/TVTz6r//7Qp+jLL3+a/p/v4PXe82+NuHsrZS+V9M9l0vJ3h3rod9/6LODk76ff+fP0n19+hT7+S+/i9d5Gz3+loj/In6W3vOXd9JHfq6j64kfobbz9T/3WKybr+JNqv8//zFtUvX/xd0tafy5TNyS868MvPjjfZnn++efpC1/4grqpwg7NSvauOTT7YN4dxN0TRdoORA3sAK4LRI0GdgDX5Ori7jtEzLGIks9V9XF6Bx/svR/70kbcVa98RAnAZz+53U7EnvNzH6eP/jMWVct/ufn+1Vdfphdf+rIWa9/9ND2tMmk/ubnp4dD6/5jXfe+n9HrVVz7C9XqaPvhFPUxbfiKj+L0/S/80+HFVl5/691/YDCkrcffTb27ND/zAP3jzUXH3W7/1W/T7v//79KUvfYnr8WpraLY57w7ibjxA1GhgB3BNIGo0sAO4JoOIO8mQyedXX/00vZMPJlm5jbj7ykdVtiz+7B9vtnv/O2b05p/+CH385xyavW0r1myxmbi3fJ8eTn3v77yivt+7vp1zZ8Scrtd3qM+/96uSxXuafvyf/hz9yq/EOnO3I+4+wuLu6Z/8jc3+PvITbzkq7n7zN39TPa9KxJ183jfvDuJuPEDUaGAHcE0gajSwA7gmgwzL/sD/+7yaD/fpX5U7ULXYs+JOsmuhDJm+5zn1qJKXfvcXWXhpAfil3/lZXv9pin/nC0rQ/UsWfbN3vn8j1rKvfY0+LYKOhdr7y68dXd/egNEUd7/xk08rQSj1+4NP/rI69lbc6WHZc8Xd7/3e76nHocjn3UeidN5U8epn6Jd+4RcoTVNKk3jz3C15ZlCcJOr7OE6o6HwUwwnU8jDHlAIvuPu3TpwCRI3m/u0g76WMKRE/S5PNu2DZ0Shh/xI/S+Kt/51PTWW+ojjwKIGjbYCo0UzBDkWWcOwSP5PYZd8py/7H/qX8T/yQ/e9S76jKXD0XL0h2nm03Ya4r7l7K6K1v/j5659vszRIsnNLPqmUi7t5ibqj4WpnRO8zNClJ+4J99ZLOP59/3A5vvZ0+/gz74n/9wR6x9iX7t3W/mZT9Jn5Yh1KPrt8XdH/7nD6psnV7/O9TNGD/17/Wcu7e8+ac3c+52xd2PHxF3v/Ebv7ERd82bKo7dMfvqZ35B18XbPiRVgkTm6wevxr1frXKImgr1JO/2K5WmjtgX4m4idti8/cVvPZi7NA8UduTNLua7S6g6X8E0bSDuNNOwQ0WJvOaSz9O+t1moOQarB38vYyP4LqOucvJ4f/PO96lPk6uKu2b58pdfpi99qXuZLbLOyx13ob7K37/40ssPvt9XTl1fypdf5vp1fH9uOVfc/emffEbdsLH7MmP9fsv2+zAvwr5SDDFngzgCxN1U7LB9D3ML9a7LxxRjpfJniLstEHeaqdjBvod5J6KZ12A+nhhT/gxxt2EwcTe1ctawrBF3XcHFvkC5+XUtr3jxPfKDuDVUq1794vvkuTIc1OgXyata1GtXQooCGc5uiEUOarLM84LtcFQtw0opJauCiiwiL2xmE+8PiDvNlMTdYjcYmPfItvyvyzeESn/ve+7OcFBNeRyS5wcURToTuN2fDEnxMs+neDMcVathpThZUVmkvL/uVwHeCxB3mumIOz5P+57mDV3+1+UbzF4/I1rnMX/vUxhF6rVjzf2VmSzzKNgMB/NRq5KPkVDB/hbxdukdOxrE3ZWK3C171g0VJrj4aa5eKSb7KMs1iysJElsxVucRLczQbaHeD2uGWNeJ+kHV3/alzGqbUqWtYxOcVqFcWMz+6pychR6e0iJSMoeVchz9Lr4ZuR4fY87rqK3vEzlPiLtpibu5n1JpXtavCosrGS7aiLE9viH+JMHEV46mX2qut6kpc2VYVweZahWqbfSyiqLlUg9PsZ+rYBTmVK9z8uS9m/LZddnnFntefH4fQNxppiPu5N2vPuWbeCaloIDb/FaMdfvGfj/jJalHM8cM61YrFauWZn956JCXSrRiP3fYt+YRVfV68y7b2cIlh4+/fRf7/QFxd6Xy27/92+c9CsWIu6Unvf6IwjBU/waeOIgVdzVF3DCXQawmgMcRN3LeRg3l8vZRpEVfzYFKvk/YYcqUxdkilo0VtRmWlU3ycE6zZUBJElPMPSdxEj1cZQJg2O4t3StiK4i7CYk7eUbm0tv4mfT+o1D7kg0gh3wjDU2GjX1Ogo6TcKAopXO13HaCjD+HvGKdi9BbqpujYt6fx741m4XKV8vOoav7BOJOMy1xt6RA+Zf4Gv8bBcovrLjb7xt7/MyIvljEoMLGKvZN7pBJBy2IxWcTipSgm+uERyPu3TsQd1cqH//4x9UbKr7yla+c9hBjbsASQGITXDY058iZxitZuLquuEfSfml5vV6R7/rsJNEmC5F5Nihp9By+gHs9WihKpkH2UVV6X3pv2mEeDF3dKdMQNceZhh1M234w56c5LHvINxiZ5uB7FHIQkay4+Mk6Y3HYHIIy/pxVvGcRik6i/FWuCWpfZsXuoav7BOJOMx1x1922lRgzseWQb3T5GTsa2645TYn9WTJxK962EKHoqqlK9WZfesWu6U33yqOIuzzP1Q0EspNf//Vfpw984AP0b/7Nv6Ff+7Vfo1/5lV+hX/7lX6bnnnuOe78J/dIv/ZIq//pf/+uTyk/8xE+oir71rW99sOzaxdZZ6i/nIecj5yXnJ+cp5yvnLecvdhB7fP7zn6f1en3668dMMLCZA0u7Ua5VIw92uh9FXlLV6plsJ3OvAnaexdbBlLgzDifCb+ZvhZ9QFYUSfhB302MadtjTtk2mzfrfXt/g9SRzYNezgapaBWy/9lxWGWaVz0r4cYfKLlJUhQpCEHfTY1LirhF7NG3/2+sb6491+pkMw4rttkkQLe7Uekr4mUzdhopySYZA3J3ETIYfP/e5z1HBF71PfepT9IlPfEIJnI9+9KPqBfrynlUZppRXcklZrVabInPT+pSf/Vl5ht2M/t7f+3udy69RmvW0dZfzkPOR85Lzk/OU85XzlvMXO4g9XnnlFfXqsd0h2YM3U4i4M5kDV6Wet6xT/egS3ShrSmUewcyhrJQZByzeIof8bE1FJBeM9hyhSObPKedhZzCPUlmbOXwrDiyl2veMQjOJdb2KaOnrBqEc8BHvaBozYgOIu2mJu5mTms+GtZ7KYIPJPt/QmW++cJo5QvJYlUWUU11JYGH/jY0gNI98CPM170zPh3XCjMUhb7ZekbMIuKsmiXkZloW4mxJTsYNq2zN3O1VBURqfMbFlj2+U+/zMJDg2c+74swzZqjmsZt8zJ9Q3GtYlRc6SODxKZXh/HEfVNvfNo4g7ETIyBCmiRu4QFYHz2c9+Vomdz3zmM0r4fPKTn1QiyBYZtjylvO9971MVffvb3965/JqlWW85DzkfOS85PzlPOV85bzl/sYPYw95IYYdkm1m7veLu1c9Q6GqHn82dzZ2uVZGqyZ/y/UI1WP6SG7pvvpNig0ld6gnh8p0fx+RLAGMRmHMjzwJxMv68WNJSvp8vKUylmVeU+ua4UozDyN1GIjRVXSQ43Tly7hB3U7ADt/dQizbp4W/uwKsKChzrfy6lytG6fUMChvW/pR9vJmpLR6rM9E0UEkSWS/l+Tl6Yqu2KRN89q4vLfim7yswcowXX5XGerzdmIO40U7BDkep5qnKeTqB9QPmUelqDbvM6BnX7xiE/E79R8YnLYrlUcW/phtqnimRzXCkqqSHDu2ruutQlaT3f8h55FHEnQkaGIF966SV68cUXNyLvv/yX/7IRelJeeOEFJYiaRURSn/Lss8+qir7jHe/oXH6NsltXqb89FzkvOT8r6uS85fzFDmIPGY4VYSdZu+YjUHaHZFvz7c5AzycwH3pwaH29rHvhKce4VaR9QdzBDl0c8g1La+mh9Y8su3cg7jSwQweHfMPQXnpofV5WcTGfpsajiDsRMjIEKcLm5ZdfVtkrK/LktmcRQDIHTYoIomYRkdSn/PzP/7yq6N//+3+/c/k1ym5d7TnI+ch5WVEn5yvnLecvdhB72OHY3bl2h4dkwZMEokYDO4BrAlGjgR3ANXkUcScZKhmClDtDbRZPhiZF8Eg2y4q9L3zhC60i4qhv+Rf/4l+oiv7gD/5g5/Jrld06WzEn5yXnJ+dps3Vy/nYotins+mTtIO6ePBA1GtgBXBOIGg3sAK7Jo4g7ETIiaCRbJVkrETmSwRLBI29oEPFjBZ8tIoxOKf/qX/0rVdEf+qEf6lx+zdKstz0XOS85PzlPOV+brTsk7HazdhB34wKiRgM7gGsCUaOBHcA1eRRxJ3eCyk0DImrksR8icuzz3qzYs4Kvq4hIOlbkMSRS0Xe+852dyx+7dNVTij0XOS97jnK+ct5y/vZ5dhB2twdEjQZ2ANcEokYDO4Br8ijiTkSMiBkr8ppCTzJZtogIOrfIc+Wkop7ndS4fqjTPpynodkWdzLGDsLstIGo0sAO4JhA1GtgBXJNHEXciYkTMNEWeFBmalGLFjy0iiE4t73//+1VFf/iHf7hz+bXL7jnYc7Pn2iXq+gg7iLvxAFGjgR3ANYGo0cAO4Jo8irizQsaKPCv0rNjbLVYQnVLSVD9c9F3velfn8muXrvOw52jPuUvU7Qo7ZO3GC0SNBnYA1wSiRgM7gGvyKOJOBIyIGSlNoWeLFT+XFHnFl1T03e9+d+fyoUvz/JqCblfUIWN3O0DUaGAHcE0gajSwA7gmjyLuRMBYQdMUerZY8XNJ+eAHP6gq+p73vKdz+dBl9xyb578r6iDsbgOIGg3sAK4JRI0GdgDX5FHEnYgXK2hsaYqdxyjyYn6p6I/8yI90Ln+SZffcD4k6CLvxAlGjgR3ANYGo0cAO4Jo8mrjbLbuC59LyoQ99SFX0R3/0RzuXP8nSdf5dok4KGC8QNRrYAVwTiBoN7ACuyaOIu10B0yV2Li1Ncde1/EmXXRvsFjB+IGo0sAO4JhA1GtgBXJOriLtrlA9/+MOqoiLuupaPtYDbAaJGAzuAawJRo4EdwDV5FHEn/+sSNo9ZbkncgdsEokYDO4BrAlGjgR3ANXk0cXdtpIJSUakw6E8URfR93/d99GM/9mP07LPP0r/7d/+OyrI0S0ETiBoN7HA6eZ7T3/k7f0f52c/8zM8oP5PvwEMgajSwA7gmEHd3jv2Bu8ob3/hGeuaZZzbib+pBSWwCUQM7nIO9PnWVp556SvnZrviTMkUgajSwA7gmEHcTQMSa2C8IAmW/7/me71EXlr/yV/6Ksum+si8o3av4k3OGqIEdzkUy4uJnki0XP3McR9lxPp+3/KqriJ9JET+Tcs/iD6JGAzuAawJxB/YGpb7iz2b+nnvuORWQqqoye74t5JwgamCHayF+IX6WJInyM9d1lZ37ij/bybr16RUQNRrYAVwTiDtwlH1B6Zj4u7WAJHWGqIEdniTiZ1LEz6TI73BM/P2Nv/E3Nlm/W8iuQ9RoYAdwTSDuwMXsDvueG5CetPCTekHUwA5jZTfDbqdXNP1qt9h5tT/4gz+ofG0Mwg+iRgM7gGsCcQeuis367Qakb/3Wb1W/Z1dpZvzsUO8QyLEhamCHW0X8zGbX7dSKQ37W7GDZzPoQUyogajSwA7gmEHfgidIMSMcyEc0sxDWyfXIMiBrY4R6x2fU+wm93Lu1jZ/sgajSwA7gmEHdglNghKBnq7TPHr5ntO1f0yX4gamCHKbGbWZff/dCUima2T7Lq54g+iBoN7ACuCcQduDmkLfTN9tkMhM30HRp2kvUhamAHoDkl2yeir2/nCqJGAzuAawJxB+4Gm+2zom9fBsIOO8nwrp1rJMgyiBrYARzGZvskq25FX9O/mqWrcwVRo4EdwDWBuAN3j2QgbKZPLqiHhnff8IY3bIacHnM+3y0hdoC4A6fSt3P19V//9epf8TPpXD3mfL5bAuIOXBOIOzBZpE3JXCM7p0/a126xWb5L5hjdGnLeEHfgsdjtXH3jN37jAz+T0pVNv2cg7sA1gbgDwCDt69u//dtVW5N2JtmHfVm+ew5Ecn4Qd+BaWFEjfmaHdvdl+WQuX985s7cGxB24JhB3ABikfe0TNecEoltFzgXiDlyLQ6JGsnzHsunySKTmzRu3Kvgg7sA1gbgDwCDt6xRR0ycQieCzGb5bGdKVep9iBwBO4VRRszus23XHrgi+W+tYnWoHAE4B4g4Ag7SvS0VNH8HXHNIdo+CTOl5qBwD28RiiRm7eOCb4xp5Jfww7ALAPiDsADNK+riFqThV8T/ouXanPNewAgHAtUbMr+Jr+ZYsVfGPoWF3LDgAIEHcAGKR9DSVqpD0fmsPXvEt36HlFQ9oBTI8hRc0pHauhH38EcQeuCcQdAAZpX09S1FjBt+8u3aHmFT1pO4D75kmLGiv4DnWshrhhA+IOXBOIOwAM0r7GJGokqEi7lzYv9do3r+ix5++NzQ7gvhijqHkSHSuIO3BNIO4AMEj7GruokWGjQ8NMlw7nyv5vwQ7gdrkFUSN+c+yGjUuHc//qX/2ro7cDuF3uStxJ5kIcDgWlq4ggOoS0r1sUNdLu7fy9rqzDKZPIJaDJNt/8zd98MGB12RcFxZZD3IK468IO58p1pGs41z5/r092T8Sj3e5Q8JVjddkXBUXKoev5XYk7uw4KSlc5Jtz6rHML7GYddu1wKLv39re/fbPea1/7WvrhH/5hs6RNc38oKLvlELcq7rqQmCN+JsO5p2T3xD+/7uu+Tq3z+te/nr7ru76rM8ve5b8oKLYcEm53Ke4OrQOmibSLqYi7Lvpm9+xQkS0SeP7iX/yLDy4QsuxebQXOp49w67POrdKcNnEou/ed3/mdre+lI/W6171OZdeb3LOtwPn0EW4Qd2ASSLs4Jkb6rHMvSJZA/EV8Rc65K+vQLCLyvv/7v3+TXZDvpmIr0J8+YqTPOveE9bPmzRrf9E3fpP7dLZJVf9Ob3rTJ8k3NVqAffYRbn3WOAXEHRo+0i2NipM8698x73/te+pZv+RZlh67yjd/4jUrk2Xl5U7YV6KaPGJm6YBHhZn1qX7FTIqZuK9ANxB0ABmkXx8RIn3XuGfGb17zmNcoOfcrf/Jt/02wJgAbi7jgSp/Zl7naLdKjkXwCaQNwBYJB2AXF3GJn8LRkDscOf+TN/Rv37hje8Qc0dkmXiV1Ksn03ZVqAbiLvjyNzXr//6r9/cUCFF/E78TIr1M8mQ23l7ADSR9iHtAuIOTB5pFxB3h5GgY33o27/928233UzdVqAbiLvjiGjrK9ymbivQDcTdBRRZQnGSUpqmFMcZ6WnkFWVxTAl/lyb8b1ZQrb7vS03FKqXAC6novaFsE5PvuuR5XIKYiqpj47qkyHNouVxSkBTmS6YqKIkTdR4J1zlW9V9R2bWPC1lnAS397ESbDIO0i2NipM86U2BIW1VFxm3StE/+tzBPgxD/U36Wsh9u/K8/62JFceBT0t/RuC4rCj2P/UxKSJmtTJN9fibXBrkmqGuD1Jl9LckoL0+t+XHqdUbLRUDlCB2tjxjps84UGNRWKg7Eys8kdtm2rfyP26uOc+J/pzWqel1QGgc7vnCYmusShz657Geu61HcGUdrWkWe8jMnSFr+v43Nxs+43lleXiHulBQsHcpG6GgQdxdRUeLqlHna+HHlwjrn72bL+OSAIw02j13e54LyPu2FA0mw4GMtWAwqp6upzEJVJz9rPmC2ptSZUciBrC5imjtxq6FXeaS28ZKc1iU7Y+ioz27c3yH7UKYezd30Ck52OXK+x8RIn3WmwNC2KhLxCW6fzTbNbd/n72Yzh/IzOiJVHqt9Rr3EXU1ZIEF0yRdyE/RKFlC8/bzVWTnsZ3WVq21mXkLluqQ81b46c8+5VuynLlO+BnkQdzfO0LaquM2q9ui123Tm6wxinJ8R0bjNu7ztPOoXS8osUMcKjKCrK+4sLblOc7/VnsvEoXnI+6wLcubuTjKkokjiIvtAXq6pyFNy5LxmLl8rzCqPAV+DvNmcEoi76zK8uOOgEy+50UWtC7g4Q8wNa3GmMJKgIOLueMzhQKLEpU9r842lyrWDxJtGV/DFnvdpPj2AHUSCTjPQ5aFcNHqKzDtA7HVMjPRZZwoMbSvrE7ttsYi4jS7aAqo3HW1+H2WqxWW2GxiqlerIOYkVnUf8zF4bGoGuNh2rfiLz9ukjRvqsMwUGt5XxiXDH0epC2ujyhNGkJrrN9xJ33CmRc/EfOhqF/P3MSTa+HvPnQz5TqtjcuDbUOS14m6bv3TMQdxdSxOxYzQakeHgBl9R24PvkuR4ljaGcmnv/YRBQGEabNLgOZEtaFTnFvkuuH3f3wNf6XNxNYGmy1lkNcQbuOcWBp9b1+Dhxku/Ul2GnlobfdJYyluwdB9SqppJ7PsmqoCKLeB+mV8fbyLCW5wXbFH6eUMDHiMLY9JBkmDqkIEr5r5qqMqckXm2PX68pjULy2TZhY2ityGKKolhfTCRFH7Xr3WW3SxH7HBMjfdaZAkPbal+HR3euGv4nbYXbpO+57WEg7mHHobSXkOLUfG/FHbfrLPLJdQNarXcOoDAZwj0Z58zTGYFy3cPP+JsH4q7U2ZKIHUb8I05WVBYpn0Nkzlf7kOf52+Ep9ukoCNXDcFOTihCfCYJI+atkO7I4aVw3aspTXs5+5rNv2qE1uS7JPjLtaLwN+26ckjXDNfysjxjps84UGNxWHXFAeOh/3FaigK/bHnmBXNstNa3kes9+Fm2u57bNryjn+CEPb45Xu+kIzcaXzOcm68xX55mUa26ngarn0hcfSDbttcnD2Fyo7N0iYr80/lGwv0XsV6k5sZJ9yPc8ChrTrBI5F4k/qX6NV80+Iz6RsN/VdcXnlLSGZSuOlTI32ee6bXzGxjD2X6FgX5T4lm8d7eH16UIg7i5EBZeZT3lZqmcT6VJQMG9cwNf6mV+qM1Sv+G/rJCUHF9PLr1bkcPAQtCNxI1/yhZoFns/7mgUP3w9n14t3HFHDDiWpbJPVkIv0fDZXQ0p13bH+rlPzZ0mlzxYRvZDHapkcy/VY8Kn0eE7OQqfJbT1CFWRsNjHcOFUeLCjgk6/KFYUOL7OZTj6GOJsENbWdcmwzlMT7l4yI7UHqzIndZ7fdLkXO4ZgY6bPOFBjaVrqNzfki3PCzNV+gZbhok7krVXvyVZuplCDT7bmmhIOLDJXK9+GS262sbtqfGmotCkrU0FNgLuoNeD0Rgcs9mfhCdYKWyr+P+hnXpS3u7NSOBT3PgcYTXxe7cQBc8HfZek3RcqmnfZj6LkJ9LdA+Md9kM+ucA55cJzhwJWpahc108vmz30lQE2RqhBxDTyWpdUbE7FOGc7f7vI6f9REjfdaZAoPbyrR1n4XMehPP1txxEGG1zdzJ1IOZr9tM7m+zcpItU0OlTB64ZrjSxCLeb5jl3MmQfc1p9dDRlG/IdCZzmBY2zohP1yyGQvYVmXokfta1/q64s1M7oudfoNjTNpstXHLMfnL2GS+VKwPXw8QpFZlMNnGTzZQM4FxiUUWrRE+r0NcWPv+E/Y5jZnM7V+1TRsLk+mJjX6niq97nnuvThUDcXYgWd0sKWJVH3LuVHm7EPRpxkM0FnB0minS2q+YeuRxfNXr+XkSTb5R6xQFGryONmB1Jfasd5uHQr12vIchaGIeygU8d68AQq3Hq2WJJjsMOyut6XGfdsdBOZ51WUA11yb0XdQNGqM5jbgKETa2nqnNWUbAMVWNXlJLe1+fyMG3eCKLmb3tuelhgKwq77HYpUudjYqTPOlNgaFvZtu4F4l/iZ7o37TXbOP8/Zf9TTYbbiIg7PVxaU8QX8LlvMgzrwnQgdDuynSOdQevwEdsuG9m2JvYaYI970M+4LjrQLdRr3hbzOTmSoTOZtF1fr3MJHkuSCe0x+5onwa/RyZEA4WY6C5L5bmPYeFsPe17by4Spgwqi2reb16pN/Y19HtvP+oiRPutMgcFtZdu6F7T8LPAabZwp0shku0yn3AyXqmkS3PnXCSsWhVbcSRvbdI70Mawg2mLa5Z5pFu14x+uyTz/cxxbd6eJzYT9bsp8tlv42k7br6yaZEJibLyIl/rYdJ5WwcLUAqrKAgo2jNeshnaF2PFb+PHOU3dpis7ndnuvThUDcXUj3sCxpMdQIBvV6Rb7r8wU6Uo3INoAi0b1oaQA2tasb8fZivO8YtrHvzo/QaIc6VdztFYrNAMCfpTE67KzSa6pkGKjVe9Lry/lLYHHjbT+kKdIy7vE1M3zN7XR994g7pstulyL7OyZG+qwzBYa21cYnzGfLww5CSbHvUcgXaU+Ob9psXejsuZTQ3pTxoI21/W6D8Q2bMdvFirutIDoi7nauDU0eZBukE8WBs1J+prOB/N8Gtb74BR/Xc7fzkZr1qFTWZRuoBD2cLf6049s79b+Gn/URI33WmQKD20r9/h2jQR0dhDwOyAtjikT4NOKM+J3Ux7HTdzrbWFes0etJ5mt3ibAr7iQGHRZ3bJeOpIiw6+t1IZ0oV3Wy6o2fbbfcri9ZcK+RWWvUo9LaIjDTJAS7nfhT27fb9e+8Pl0IxN2FqB/sQU+j3ZjbGYGmutcX6nqdk69681rh7za83Qv+FrlTh7fzOn4Ybmitid7mom33+QBe3l/csR2lt2bS8hbp2dtmXa3kho4FOUuvFVSaIk338prOp4+jMoA7FwBtQ7tut90uRdrFMTHSZ50pMLSttE88nNCtRco2sKhhfrOSakuqzbIw0g2GEl+EmLnRaLeN7fjdlpqyPTcucUungPexmeh9zM94rV1farLr6+tMxFWw+ayoik2mb3NDh7OkuO1oqh7ylfa5rWAT9oo7k/HT9b+On/URI33WmQKD22rHJyxt32CBw+3BdlCaHaxatUsRfnp+nJ7KsNPG9hxDsFMGHtxPwazUtAnXZLX6iruuuClV2PF1NX+93QES384380y1ny8ch9yW7/K52XqYGzaa52WPI/vdFXfNzF3n9elCIO4uRKdddyeA6uES25iViOHAoOOJ/NjcAETdc2PwNtmAQn2vGpftJekFD7MTDSo1bGP2t6HS6e15c/6Qdqgup1GYhtmdBdSBsnn3r717MDQTvNerSD2/bku38JR5QZsLgbHF9jZyPWfKBl4Rm/quKXsrvrbhXrtdiOznmBjps84UGNxWyiekrZjPBjVcYnr6WsRwGzftR/ug3NRQUeRt/Sfi72UOqLQdaWObLMWO37Wo7J127Q6NHvppzh864mdcCwlKmykMOzzw9VL36CULInFTRgCcRdASmfaO+dYh7dxe9bc+z+0dvXrO1FJl1HXgnRnfLU2WT9vwOn7WR4z0WWcKDG8r3VZ2b9Jbq+u9EUPcLqRDoR+1pedz2nlmeehv2kgR8vdqrrgRdzvDst1zxc0jTMz+LDZWBBtH0+LI3e9ofHy2y57M3UNf1zF75phHitUlRdxhMjMeFN13zNdK9GlBZ3zJ2d54tU75+rA0Q9ZKK2jf1Y8qsjbcd326DIi7CyhSPddM9uds7hiqKA30WL80njCVoUn9Q8p3fhyTLw2Ae8H52giYOKU08ngfksauWL1rZ/XVM+dWZv1F6y7bJlWRqv0s3IDiWM/3W9rxe4EbamLqtPCi7R06lqqg0BHxxMeZOxSv2o4tdxDJPmVZktvWzudp6qmK8/A5XTJBtenA9eZc5koUCqWaXLugmH+X0FmYxi7Y54rp40Zsn/l8SZHM/7HCr2W3y1H2OSJG+qwzBYa0lbRvd6Hb59wJNs+pEv+zfqX8j9u5uvmIPy/9eDNpOuI2q4ILf5el3AlZhqqTUCQ6u7DwElpX216zt+9hq9zuAuk0LVyK4kjPf2OhtXHLY34mPmOeHyltPmjeNc7IzRh6Th0va9xpa+upy8PndEngaz2PUoam1RwpsYu+60+uQXKt8thn5GaLRePZfPJgcb3vOdcpVPOT5I746kp+1keM9FlnCgxqK4kDrt6Xutabhi3+JzcdyPcLI35Sz8SLpc8xR2fbHO74KAGz8CnNEvLMw32rItFxkr+XZ87ZrJ743U5TNkgMlfbLfhDFFJr5ftv4p4eEle8vPEo3MWlL+9qw87SJln9s7yiXoVEbz6U8eKYfi1q3OfWB/1qZc5mLXWQB+4xcg+Ys1uTBzYvGg8Tl+bdbvRCRv5zT0sy37bo+XcrdiDup5F/6S39JVVSeHr+PxxR3j8Xu+P65yFyB9VrmC5gvGjxCW1Hs7vtR6s7by51ZKqO/w6F9P5bdLNIujomRPutMgVuxVat1PFJ7kccfrNdrPZSyw6O1xt19P0rdOdCuSxayHfuR/Zs/d3lsP+sjRvqsMwVuxlat5sHthdvYxS2G21wlftbZXs2/j87j1L3mzmLJsfgh4kvmz10e2c/uStxJJaXIy5b/9t/+2/Tss8+qSchNxijuwDiQdnFMjPRZZwrAVuBc+oiRPutMAdgKnMtdijtbXv/616t/v+u7vouee+45tR7EHdiHtItjYqTPOlMAtgLn0keM9FlnCsBW4FwGE3f7LvLytOo8fzi5+NTvv+d7vkdVcl/51m/9Vnrd6163cQSIO7CLtIt97dTSZ50pAFuBc7HX4EP0WWcKwFbgXAYTd/sanzTMrh2f870c41CRTN5TTz2l/haRCEATaRfSjg7RZ50pAFuBc7HX6kP0WWcKwFbgXAYTd+bfq2EruVskY/eGN7yB3v72t6uMn5yEfC/rA9BE2sUxMdJnnSkAW4Fz6SNG+qwzBWArcC53Ke6+4Ru+gV772tfS937v9z6oNMQd2Ie0i2NipM86UwC2AufSR4z0WWcKwFbgXO5K3L3mNa9RFV0ul+bbhzwpcVdk8m7IlNI0pUS9vy6mNMupbN7mXVeU83q+G5z9JPi6KnkfMfnB9kGK+2jWKY7187DkGUMZ1y3h79KE/zUPKb6EqszVM3+Cfc8PGwnSLo6JkT7rTIGx2qoqMvVuSOVn6r3H0pYzKlqPJaipzDOKfJeS8x2NCt5H6JvnWx2gVSf+1z6uS/xP+VnKfrjxv/MR31+lMXn+cd9/kvQRI33WmQKjtVVVqDgmbTqV9x5LTONYkhfrVturipySyCf/7Gs/+yrvIw598y7bA7TqFG/eI6v8j+uo45z434XeIXF6lVLgnR+nh+BuxF1ZlvSrv/qrqqKHhNuTEnfSSPVbFmYcUEpal9wQ1YMaZ9sH99Y1X/D1Q33PfkB1vaZYnli/78ncLSpK1NPtZ5Q2npooD1tUD4BcPnww8TnUVa7eVrHvfZpjQexwTIz0WWcKjNlWpXkorycPAV+z4En053njwb3yYFZp412vQOqHPEhVP7W/j68WiX66vdd8b6Q8dJm/Uw80vzTgCBx0lD/38v0nRx8x0medKTBmW23ihJdQyR2LYpWYh92bNwnJOiy4Anmo7wXX/nWu307Rx1cr8yYLeTPSdu1t7H3wYOKz4Dit/PmCOD0AdyPuhD7C7cmJO77Aq9ePNN+PaV7d0rwY1/rdjpc0mtb7No+wfcdkk93XxVyO7A/i7n4Ys63sq4qab0cpE3kzRNOv9OuLDr2b8hj6OP18dd+66tWED95NfT6HXlU4FvqIkT7rTIFR28q8wUS/P9ZgXpfXfI2ltPF5eMG13xynV0fMrLv7Gk39asKH76Y+G/v6shE7GsTdgJwn7mrK05gC3yc/jHdSyrIsIt/3eNn2NSrNFxTL8JNKmccZPXgbEtP9cmUj7lpiTIZrQ/I8n+LmUC33zOKA6+a5D4Zdpcfl8/phFKl3xjb3J6808z2PgsZwlAwrZZI2L3OKeLujafhHRtrFMTHSZ50pMGZbdYu73Z72wxePV3lKQRCwP4WbIR2LWsY+6PGylXE0K9hkFzW3WT3dIul47Vh73SZdHbEu31D+F0ndPPI2rzrUyIv9Q65bEEYUqPd8bvdXFxnXm68PwfbaIW/YkGtKVrC/heyf8kq/AekjRvqsMwVGbasD4q4pxHbFnYzkxMrPdmIJI8sijicSZxL7GkwVE80+a26zZrpF1vHasda6Dbr8r8s3+FsqxP/E192wnVGX15ZJrAtCrqN0FhuxnI8ryzwv2F47apn+kfJ5FLzPSL3Sr12r6wJxNyD6JePc8LKc8nzFjUHE3qItYlriTos/+7LyMtXv8NNDqDWl7nzz8mZ5EfhspkWiFWxCHi5pKY1qT6vSglPe+VeqoW1ddCp9K8YqipZLfVyunxJq6oXi+kX/vqpspYaYrFOputr3zVYr5XBLsz9556yX6nrHRtxWMpxs3gUq7+6Udxlu3zM7DHLsY2KkzzpTYMy2suLOiTJ9h7x5/6PfEjFtcacye+Zl5fIeVlnfVW1U2rJLczPMo18ePlf+uQkYsk0e0ly9E1Lvbxe97px9veFnaw5UMlzUEGOdvsGflH/7+jqQ+9ssuK6ra4LMmkJ5N63ZX51HtDD11tceua6ISNTXEfnsOXN1bkPSR4z0WWcKjNpWHAvUMKwTKT9bmXeQz3fmfDbFXa0yXkv9fmTeXqbrzFy9fs3CcG6HdI0PKv9UMZE7a8otcj6GvLPWCKhdTJ38VN7Lbn1tbaY7bcVYt2/Ie5bFvwNdn5VsY32zVHWNjXBbhWJzsz+uk7PQ9bbXnpBPUJIb9l2yrsfHkHNTWw8DxN2AaCE1pyjNKOOes69e1s+fzUv0Faoh64amHaHZ2+ALvry4fMkNTi0LTcNjuMcjNz8IOhvAvaLQpTDr6N00sNnEIIoo4p5/yCWKAuUgVtxJ4JJ1ZFJqzL0m/XJzOTaLSl5fN/BCiTsnkearRV9sMhyq3jIsK4KQHUHmaQQmyxEpQaeDpU11q7+fANIujomRPutMgTHbyl5g3Shlf08p9HWnymWxtw0JTXFXqvbe7O2r4U0OIgX31pe2fSpYHCV6P1bcxXFAbnD44mjr5AXiX+Jn3Pvnfz3xZyvuDvhGkUamEygvbedtHP0CcxF9CxX1NHpYVjp5+vyWQaxu4oiNoNPDVWboqnG+Q9JHjPRZZwqM2lZGSM3diLJVpm56kPYrn5uJ7624qynh9t6cnmP9QkSTxIhg42g1t3lz85E5jsd+4Tkhd2EOYNZdekHLzwJPxznd5Pf7Rl2kHJ+1PxUqmeIq0Vam0vnTCRPBxmapbh5yHF8G5gauUAk6Fev4ODruNeL7gEDcDYgVUs1rah7Jd40bGhrirlK9jWZgMfvgi/cLkmnYM7fGZgilNIemuugelm3PkSuk8XIwkRely7t69YvE1SJp5RT7HoXieHw8JQjXYuMdUSqZuBVvW4hQdFUavN7sS69og+UTijnKXsfESJ91psCYbbUNGNuGJD11+c5m46RNbsRdpa8JQWOytW2Lz7+wv03a40hxjsxP3bRt89nSnCN3yDekvjmLSC+MKZKbJpQgXCuf253fNPNXvLoWihI0ZRhWfHezL3WNeTh0NRR9xEifdabAqG1lhVSz7avMGrdPNzVf6DapBc6aAlkW6Ay0wuwj+tgLKiHQ2SZ5HVkm5yijQQdbrWnbD+JeM1FyyDeY9YpjmRex6JMs3lLF34w7VFqwafQcvoA7efo6Iv4v+6jEd2V/eq2O6U3DAXE3IF3izgaIzQVaNU6TuVMNqJ3JsuKuzEyvwnwvyJw1mSKgBNuSe1P2br5GL2oXtW5jWEjTbpRrdSydqt5QFVSsP9ZyyI0grFbqnLYOpsWdWk8Jv7ZglWxILo5mA2Br2XBInY+JkT7rTIEx28r6VDtQ6CCipxMIuk3qYZ/8gdixbTEv9fVCJaQtHBDkEUZ6HYcyDgayjgzF7EOv2/Z9Qfuz8b+9vrFuZTy2grBSwbJ545MKpGo9Lfy2mRBNkZccfCDuboVR28oIs7Z4Yb+SbLTKHmuamTsRQs3Mnd1HWOhhTz3yY6mplOFXs07EsduV4zVE1gP2tO12bNnvGy+Y+KqWNAThKmhPn1Cx2fitCD87ZcJSFYUSfhB3j8TYxV2pMmrNC3yl59XwBX1l40Itwsj08E2jbjZ4GYZZyjCMyTbM3VjN85FHOzimV2Mv/oK6YYOFWdNlmujhp7ZI5G+1E9lGaSbJOmGmxGO9XpGz4H0q8ckNQ082MNvkXAftPJs5d/xZhmzFKdld1XozJ9STWOuSImdJavTYOpPaZnjkXI6JkT7rTIFR20q1o3bvvVAdHb6gbxxNCyMdBPRFeOZs5wqtZRhmKUOfei6p+IjcSKEe7bB0tQBTx1kq39E3bMy5HW+P2cLUqRW7mFRl4Wwg3OMbpc402Pm1yqfN/EAVWLhuVlfqOXwRrfmaoOfh2vlJNa0ih/chjqavK8ey+teijxjps84UGLetdDtqZu5sx2reyM4154jqBEcj3qwltjhq6HPF64kPxaoDUnFbdvhvaaOmvWpHU/vfPx9br+vuONpazZW14m6fb7C/sficmUcm6WuGzA/kiKYSHFwH42hrM4dvxcv0PFwWqObmkPUqoiXvQ1Di7khW/1pA3A2E3IHjLmSOHf/Yjkue5+j5CUuvcXdNubmpwBUhpb5KVU/Ei1NKQocWjWd1SSOSfcj6szmLLV5QlyvypefEDVmcpDLPCJrNXT6O3VJTpHp+gCx3NnfgVZSqO4H0PuyddEWiJ6XrYoIJ19cXZ+Dvln68qXvEC+syU04mnxfLparnUt19xJsVyea4UpTDqHMXx5e6bO/8HRJV1yNipM86U2CstpIHlgaubofzhcN+5tJS2uh82ZjbyhfzWF+sFzI/SNoad06kLc+9WD1weyGdF9MGpTOjRJcqC9OZkekIur16cU5VlZuho505tIx0vKzvz51gI8TE/6z/Wv/r9A2ub+rp7WdLn2JTd0dutOJ6hMrf5XyXalu5pqRyTTHnZPflcj1lX5nZfs4isuvO3mvTR4z0WWcKjNZW6ikJWtTM5gtyPY+cpbTROXmNua3lytxUoOKPbsuZz/WdcxvlmOiwX26nJK25M2PaORfbmVmZG6IW7Jul3Hhn2rvMoW21Xq5TaHx/NncoMXFVJT6MHyxUx4m/7PQNrm9q45zMMY903VWSguttnks7Yz9bSmeQ667jI8dMOSezL5vUkLveVQyUunTd2XtlIO5ugpqqdUlr6c0/oD1f4KrIXIIjx2ovPbS+ZEG4mE9jQNrFMTHSZ50pcK+2qqs1la23WWwZzM/6+MbOwu08n4eoZXsWDnVGTfqIkT7rTIF7tZVk5tbsZ13t70FbvmIjPeQbmvbCg76klnUvPHyM6wBxB4BB2sUxMdJnnSkAW4Fz6SNG+qwzBWArcC4QdwAYpF0cEyN91pkCsBU4lz5ipM86UwC2AucCcQeAQdrFMTHSZ50pAFuBc+kjRvqsMwVgK3AuEHcAGKRdHBMjfdaZArAVOJc+YqTPOlMAtgLnAnEHgEHaxTEx0medKQBbgXPpI0b6rDMFYCtwLhB3ABikXRwTI33WmQKwFTiXPmKkzzpTALYC5zJZcffGN76RnnnmGRSUTZF2cUyM9FlnCvS11VNPPdVpa5TpFmkT0jYOAcGi6WMHu06XrVGmW0TjSLuYnLhDQekqfQTLsXWmQF9boaDsK4foI2qmQB872HVQULrKZMQdAJcg7QviDnYA1wXiTgM7gGsCcQeAAaJGAzuAawJRo4EdwDWBuAPAAFGjgR3ANYGo0cAO4JpA3AFggKjRwA7gmkDUaGAHcE0g7gAwQNRoYAdwTSBqNLADuCYQdwAYIGo0sAO4JhA1GtgBXBOIOwAMEDUa2AFcE4gaDewArgnEHQAGiBoN7ACuCUSNBnYA1wTiDgADRI0GdgDXBKJGAzuAawJxB4ABokYDO4BrAlGjgR3ANYG4A8AAUaOBHcA1gajRwA7gmkDcAWCAqNHADuCaQNRoYAdwTSDuADBA1GhgB3BNIGo0sAO4JhB3ABggajSwA7gmEDUa2AFcE4g7AAwQNRrYAVwTiBoN7ACuCcQdAAaIGg3sAK4JRI0GdgDXBOIOAANEjQZ2ANcEokYDO4BrAnEHgAGiRgM7gGsCUaOBHcA1gbgDwABRo4EdwDWBqNHADuCaQNwBYICo0cAO4JpA1GhgB3BNIO46yPOcnnnmGZSRFNd1zS9zXSBqNEPaoev3RnlyZQggajRD2kGuoV2/N8qTKaIxrg3EXQf2WCjjKEMJjSGPNWaGtjnKeMoQQNxphrSDPRbKOMolgqsvEHcdDHkscBj5HYYUGkMda8zA5tPDBv8hGPJYYwY2nx6PIbj6AnHXAcTdeJDfYajgP+SxxgxsPj2GDP5DHmvMwObTA+KuA4i7aSK/w1DBf8hjjRnYfHoMGfyHPNaYgc2nB8RdBxB300R+h6GC/5DHGjOw+fQYMvgPeawxA5tPD4i7DiDupon8DkMF/yGPNWZg8+kxZPAf8lhjBjafHhB3HUDcTRP5HYYK/kMea8zA5tNjyOA/5LHGDGw+PSDuOoC4mybyOwwV/Ic81piBzafHkMF/yGONGdh8ekDcdQBxN03kdxgq+A95rDEDm0+PIYP/kMcaM7D59IC46wDibprI7zBU8B/yWGMGNp8eQwb/IY81ZmDz6QFx1wHE3TSR32Go4D/kscYMbD49hgz+Qx5rzMDm0wPirgOIu2kiv8NQwX/IY40Z2Hx6DBn8hzzWmIHNpwfEXQe3Iu6qIqM4TihJEsrXtfm2jayTJCklvF5Rda/TRV2VlGcx+UFKD7aqK16WkO8GVPTfpa4v1zVNpT4x1z2mNMupPKFe10R+h6GC/5DHGjM3YfOqUO015bab5ZX5cgdeJ2U/S5OYsmLPOl2wLxV5RqEfdvhSTSUvi3yXkhMcbex+NmTwH/JYY+Y2bF5Rxv6TpBzTsuJh3FHIOtK29Tr9YV8qcopDn9IOX6p4WRL55Ccn7FNdF4yfcb3Fz5I0o6I8wf+vCMRdB7ci7oQy89X2MyfpcIY1ebKMi5+V5rue1GuKXd52HnWIu5oKddwF5SfFi5oyf67qk+QllSU7m68vBOFqbda5jLqq9lwUjiP1OCv4n8GQxxozt2LzusxoztvPZi51eVImvsLL5352YvurKY9d3rbbl6oiVceNTulFDeBnIkrP9bPzg//pDHmsMXMzNq9L8nlb2T4pH7awdeapZbOZTx2LD7LOY7Vtly/VLNSCOftvdIpg3MZfL8lpXRaUxbp+i3B1tn+0qencPhnEXQe3JO7qQjdYKenOdbtaBWbZ8qQMm6WIlyzu4u5GWhe0OFncmX226lNTvOA6donIU6k4AF+wH7HVucH/VIY81pi5GZtze3eUL/GFPHvgaOwLetlpIkyjfXifL7F/cNAJT9zvVf2MO43+Gb5vuSj4n8iQxxozt2NzbqeO9qWZtysUKgqlDfOy5YkiTME+vORt9/loES1oHp62Xxt/48Y+i0h873z/aJJ585N93wJx18FNiTvujYRJrALP3F+Zb4WaHcGlbKUDR7N91EVGge+RH8SboVoZhs1k6JZ7+ZGnU9dFzE5qxJ0MD0naOY4zUiPAHeKulGFcz6OA19mXmO4MOsuHQafKUwqCgHw/fDDM1bmsypXjzmZz8qNE1/FE5Hc4O/ifyJDHGjM3Y/M6pyBMKJS2Ogta7TsPHQrZj13efzNwdPqZTGlIZeiW/S30KUwLEyC0j9bsf3oo1U61qCnaEXdd+92lr5/V7Dex8iWf4p2hsO5lFUXKBjNy/GjvdJBDXBb8T2PIY42Z27E5t9MgoiSU9junrOFodR7SMuQ4xOJv0RR3HIviwCfPC7bxoJYpDSklq4KKLCKPt6tVzDI+WrP/maHULNedtQfirmu/O1hx1/R77Xs74q5eUxqFypfC3fi4Z1muRCLHdcenxNTxFCDuOrgtcRdxr4EDRiDDMNsGJY1u4efchtviTtZfcI9IPhaxo7ep1hR72iFnLAgdDiYyjGvFnZCzs4ljsc9odsSdBDgvlQEr0/PiINLlDjbo5ByUaj5uFkkdZmZbTZnwdwu9fV2marlrlu9fVtMqkPqGam6RreYpyL7ODv4nMuSxxszN2JzFnR8X3IfQ2fDQzr1jP3C4zVUcLJpZgU4/Y2GXRXZYaUGeM6e5rGPFndoupPmS2/DW0Vrirnu/alGLPn6mrw2yjnwo9BQOV8+xPbSsVCMCC8rKans9OIHLgv9pDHmsMXM7Nq8o9mOqqpWajrAIcvM9x5XFklbc4JIFf2/FHfuls9BDtFZoiW/KEKzNprset/25rKPFXazChSQDHNWGLS1xt2e/u7SWyfxZFpLyWfm1WUf8R5IvkXYmSj2pl6eHlQ8ss1NBAo7F9RmOBnHXwa2Ju0iu7pXej230qbOgVNpLS9zpQLHkHr9MBI1NoAlle7NeM1CoAMFOEYcuhbtDUcpRzPrsCKoRmoxDpITifE/Q0UHGcXSvROZONDo9TDtICqUKVA6vd2iZ7JuPu28YuQfKfucG/xMZ8lhj5mZsLuIulEBj5rFyB0Pa2TpxuXMhjtbIChzyM15P2nA7E6d9L44DcoPdi2NT3B3ab5vjfsZBctmeY2QDlXQW9y9jsWjq295ffy4L/qcx5LHGzO3YnEWcp6/hmRI63MGQD+uE5o74hoi8bZzLwznNloG5oSFUPjhXfqrX283Eie95HKc8J2RPbtMUd/v328b6xcLR/iZxL925oULFqGZcMvVYcmfx0DL7dzPenQLEXQc3Ke64eaRqUrdLBSv+pZPo5c0LsRFhcvGW4aGKewO2R9B1wbYBQkpzToGiIe7qItTHVVkC2fd2v7vYjIJ0nvTcBNtrMRiRGjS+s3XL1weW8eEg7m6Pm7H5RtzxxZoFnewrKQo19UGFA+UP5kJ8wM9a6xlsgJDiyEW9RUPcHdrvDkf9jENbIMfcZEaYTTApDyzjY3ZcK07hsuB/GkMea8zcjs234o4dTe3HTQpaBUuKdaqrIe60b4jPiB9UEn/EJ2Tb1noGbsN23uzMeRgntuLu0H7bWN+VbGBd6KydE7VFYObLMcPG9kZ4ct0OLZP67l4rTgHiroNbE3eByao1g4QVY+0Lsc46BDs9/SIvqeq4YCuxtIwos3fzNWODangmc6dE126mrqKcg9Aum+EitS43ZDV/Z06bxCAHsO7gJ8c/sIy/gri7PW7G5twuPd9cuBpBQvWwzXfbXvZ+P2vN+zHoNuyY+bGSiWs5WuOGigP7NX9bjvoZfycBrHV3oDmHkP12/zKIu1vkdmzObdW1WTXbbrks7XWdv2uINpXd89tiquJOF3d/OsWd8lGOuTI/drGTiWtm7vbvt432ha0/a7+TaU3bvKDstz3XVddNMoGHlkl9Ie4emZsSd0VIi8A2YN0wZoutwLG9CT0xtaZU3Ylk5xrUtIoc3RDt8K2sZrApYyFR2wXbx0DUq8b6pXKWmRPqCd51SZGzbASSLaXKBjYmenMD1oHSM9+Zc3C2z9dbp7zNUh71cmhZ04lqWks9TkTsdHbwP5EhjzVmbsfmHBgaF2GdDbPiiTEXYk852gE/M8OyrUy4md8mvqWzgiLC7PJKZdH0Bf7Qftsc9zOuiQpEjUe7rCVT4qj5PoeW6WuK7lBVa3VhOYnLgv9pDHmsMXM7NpdOx9avbPzSo1PqGx0DPC0iylRn0UNzw896FdHSdMJkvUUrE258Tzua2q75iLDc33ZoDu23hfLdpj9z/ZSPbh/lYgXg9tEupfJFyUQeWiY+a8WdzJu1a/QF4q6DWxF38gwsVxr63OHeiG6U1SqkwNxipJZzD1z2P3eCzeRo33wnxY2lh1BS7OkehxMkZjLninzVa1pQLJk984yg2dyl7GMvbG7AcEN9d09dJKoh2v3GreyDRuojN2vI8gX3zmxiT7aV4SYJHuoBk6aOcy+mNA74YsGi0rbsA8uqXF8IpI6rM+7iU/U6O/ifxpDHGjM3YfOqoNCR9j4nLzJ3s1Xc+7d3p2+WS9tzKJGG3eVnfHm2z8Gac0dI3Wkqvudr3/N4narKjQibs09/jFb2uVlupEVZ537b9PYzqY88/27uUZrFvM2S0q2j7V/WuDM9OuO5eZcF/9MY8lhj5jZsXlEaaFHleNzetaOxb4Xa5/j/WaiXS9sL1AOHeRvzDEdVnFitK09uUG1U/FHdacodoVg/k27BsaOU57iarKDLPv3CytyAIfFNHbh7vy3k2XjW7xcu+5RZg31UJTukjqkVi/q5sDHHe7lWNEXl/mWNO9Oj05+bB3HXwa2Iu0tQcwhObS1HkR6G5M0eB+mtlHsyA/uWyXmdi/wOZwX/MxjyWGPm3m1+yM8u8ZPH9F+Zv7dmX+ra3d5lcnzz56mcH/xPZ8hjjZl7t7n2h+4Wufn6jAZ7aL8nw/tZl2X3Q4n3LjvfzyHuOpiCuAMPkd9hqOA/5LHGDGw+PYYM/kMea8zA5tMD4q4DiLtpIr/DUMF/yGONGdh8egwZ/Ic81piBzacHxF0HEHfTRH6HoYL/kMcaM7D59Bgy+A95rDEDm08PiLsOIO6mifwOQwX/IY81ZmDz6TFk8B/yWGMGNp8eEHcdQNxNE/kdhgr+Qx5rzMDm02PI4D/kscYMbD49IO46gLibJvI7DBX8hzzWmIHNp8eQwX/IY40Z2Hx6QNx1AHE3TeR3GCr4D3msMQObT48hg/+QxxozsPn0gLjrAOJumsjvMFTwH/JYYwY2nx5DBv8hjzVmYPPpAXHXAcTdNJHfYajgP+SxxgxsPj2GDP5DHmvMwObTA+KuA4i7aSK/w1DBf8hjjRnYfHoMGfyHPNaYgc2nB8RdBxB300R+h6GC/5DHGjOw+fQYMvgPeawxA5tPD4i7DiDupon8DkMF/yGPNWZg8+kxZPAf8lhjBjafHhB3HTwJcffGN76RnnnmmZst3/Zt39b5/S0V+R2GCv5DHmvMDG3zp556qvO3v5Xypje9SZWuZbdS5DeQ32IIIDQ0Q9rBHqvrt7+lcusxTTSF/A4Qdw2ehLhDGUcZUmgMdawxM7TNUcZThmBIUTNmhrSDPRbKOArEXYMhxd09UJalstd3fud3mm/AMcReEHeww6m84Q1voD//5/+8+QSOAXGngR1O4+/+3b+r7CWxDRwH4u5OCYKAvuEbvkHZrKoq8y04hNgKogZ2OAW5Ln3Lt3yLKkmSmG/BISBqNLBDfySGve51r6PXvOY10AA9gbi7U/7CX/gLyl6vf/3rKYoi8y04hNgLogZ2OIXv/d7vVfaSIpkFcByIGg3s0B+JYdKBEntJbAPHgbi7Q/I8p2/6pm9S9pIiEznBccRWEDWwwylINsH62Wtf+1rzLTgERI0GduiPxDDrZ+JzEuPAYSDu7pC3v/3tG0eQIqlsDM0eR2wFUQM79EWGYUXQWT/75m/+ZgzN9gCiRgM79ENil/UxWyTGgcNA3N0hMsG76QgSdGQOHjiM2AqiBnboi53g3SwYmj0ORI0GduiHDMk2R6KkSIwDh7k5cXfrz567dpHnbX3d131dyxGkSCq7a32UbRE7QdRocXfrz567dvlbf+tv0Z/9s3+25WO2yLKubVB0GfKZemPGirsuG6Fsy5/7c3+u5V9SJMb99b/+1zvXR9HlMZ6pN6i4Q0G5ZoG40+IOBeXaZepYcYeCcs0yenEH+tGc4N0sMu8OQ7MAPA7y/MguP5MivWYAwOU0H+m1W3AD0/WBuBsJMpm7ywlsefrpp82aAIBz6ZrgvVtwAxMAl/PX/tpf6/QvW3AD03WBuBsp0vgxzAjAdbHDawCA6/EYNwiA08BVbaRA3AFwfSDuALg+EHfDg6vaSIG4A+D6QNwBcH0g7oYHV7WRAnEHwPWBuAPg+kDcDQ+uaiMF4g6A6wNxB8D1gbgbHlzVRgrEHQDXB+IOgOsDcTc8uKqNFIg7AK4PxB0A1wfibnhwVRspEHcAXB+IOwCuD8Td8OCqNlIg7gC4PhB3AFwfiLvhwVVtpEDcAXB9IO4AuD4Qd8PzRK5qeZ6rdzii7C9PPfUU/eW//Jc7l6Ho4rquaVFgH112Q9kW8THxta5lKNsCDiPXoi67oejybd/2bcrP3vSmN3UuR9FFtNFj8UTEnah3UfEoKJcUZDaP02U3FJRTCziMzQCjoFxSHjOz+UTFnaRqATgHaT8Qd8eBncAlYNi6H7ATuIRrDFtD3IGbBKKlH7ATuASIln7ATuASIO4AMEC09AN2ApcA0dIP2AlcAsQdAAaIln7ATuASIFr6ATuBS4C4A8AA0dIP2AlcAkRLP2AncAkQdwAYIFr6ATuBS4Bo6QfsBC4B4m6UVJQlMSVpSmmaUBzHXBLK8oKq2qzC1FXB60Xk+gk1vj6JquR9xCGFaWm+6QPXj+tTnnvQkQLR0o97slORsX8l4mcpJcrPYkqznMqGoz2Gn9VVSXkWkx+k/fZRrymNAvI8n+KsOPu4YwSipR/3ZKeqyFQMU37GsU38LEkzKtaVWYOpK/aRhHw3oOJ8R6Mizyj0w577qCmPA3KWDnlhSus7cjSIu7FSlxTw+cxmHuXrNZXFioKlfJ5TalRVzQEg8+c0m0cXiLucXD7OPCrMN4cpOEC5C6nHgvI7cgThnkTLNbkvO9Xah/ickqKkNXd2kmCpPvuZ7vA8hp+JWItd9pte+yjJ4eO7YUyhpwP83F+ZZbcPxF0/7s1OZRao8/GSnNbrklaJ/jz3M+0Tdc3xxefvLoktItbcnvuoKXUX5MUZ5atE+dzMSc2y2wfibrTUFIuYW8SNYKAv+vNw+8Tpuoj4vC8IOnIcFmuLnuJOqMtYOc/ZvauRIu0H4u4492anIhYxt2y055oSpy3ELvczc5x505+7KROP4oZz5aEEeY+9/z6AuOvHvdmpLiRuzFptu0wc/q4hxOqCFhcmDvRxeuyDj5Ws1uYDf8xFbIYX+fiYgLgbLd3iTrJsTSH2IOio4ZyQfN+nkHskjaS3WRaQ73kUcu9Jb9MUd9zrkWEqSZlndvlDrPNA3E2Te7PTeeKOfSWNKWA/88OYiuZ8CbUsYh/0eNl2+kIRc7A24q7MZZhKhqeyB0NB9bpqHIc/5yEf22/78g0DcdePaYi7nSxbh7ir8pSCgOOWH1JWtL1ALWMf9HjZyo5oNeJTXeZmukVC+ZEx1zxckpvcSxcK4m7EGHE3cynLc8pXmR6WnfstUdUKOuwYktmLcnGAmlJPtucevyysS/K4weshXS0SZ6EWdErcxdKoK4qWcwqzshVcdoG4mzb3ZqciluwB+w13aPJ8RbEalmVfaTTwtrjT4m8R6Qx6mXpqe+1bMtQzN0O6/LeIRLOdFXeCBJJlmMlI1FGKcE4z9/Eu0E8aiLt+3Ku4c6JMve80i2UIdkZ+2hg12hF3KrO3iFTHpi5Ttb5r5oeXqUtzTw/pyt8yZUm228Qn2YY7RvNlyDFwv6PJnNrYTH9oCs9bB+JutBhxN3cp5XNL45Ccuf7c7L00g065O+zDjrJkmyzjQi8LtsO5VZ6Z/WhxN/djCl3ed48ZpRB30+be7KQzd3OKUvaJNCbfkTl4/DnrzpA/nJZgfHXJvqeWNYZ2qpwSsx89LOtTHLrcgdoOBx1Eddjcu/I1iLt+3Ku4c6OU43VKoa87VS6LvU1Ea4m7UsWvqNH4VRybOewPskyLOY3chKj3Y+NTHAfkBseFjdzsJDdheGYu+WobXm8aiLvRYgJGa1i2okg1QHcz/6YZdDJfljXnDBjhFn2MEt5X97w6cxy2ney3TxCBuJs292anh8OyRHkk39lsXNvPKjXpuxlYrHCL6AXJNOyZV2czhFL6ZQgqCucL7nCZj3cCxF0/7lXcNdt+nYtfbbNxvNJW3FU6pgdqJEpjY8/zL+yPQfY4Upy4K+btQXWkZhQ2HfuGgbgbLV3izgaibdq6GXSKiC8GrbvxjLgLc8pkiHbnTqCqlOFXvc6Se0/2br5jHReIu2lzb3bqEnc2QNgLfStzp/5uzwuy4q7MZIh22/kSJDMgU/LUsOwyoszezXfQ0Wr2WYdiIy6Fus8Y7g0AcdePexV3zUwce4XKzi3sTYJNcVfn/Hd7fRt78lLH+9YUubpSjzDS6ziUrawP903FcSyc8/p3Etgg7kbMA3HHDV/NlZsFGwFW5/4mU2CdJ9kEBH13rQQInW3gHlKcqyBRpAG55iaK7Zw7PRdPbk0/iB2WMh/vBbEPxN1x7s1OpcqoNcVdRbGaKzffDNE0/Uz8UAKS04gsMrduKT5ksg1zN1bzfKoiJcfR29lpE4K6YYP9uBmbmuTBnOZBph4ZUXInrOBA5Zk5frcOxF0/7s5OKm60M3eF6ujMKNg42oo/29iiY5MkJewW65R9dSnPm6zI5+2kIyU3Usi8uWDpalGojrNUvqVv2JjvmW5UUb7Kt8mMdUbzebj9fONA3I0SeUhwoHot0jAd1yPXkewCBxAv3gShulxt5gmEZl5PmYqIW1DM9gidxeZZXeIoq0g7kpSFebZQyUFDAtVs4dFqzY3dDB3N3ag75c3HDFy56MzJj7O7epCxsgvE3VHuyU76uY36OXcLxyXPc2gu7X/pbea2dvmZTO4W//TilJLQ2fiTsF5Fah+yz9mcBRwvkH34avoD+2ZeUpXrQKfn0LadaG06Yu2yFZq3DsRdP+7JTvIQYx032LcWDvuZS0s1h3y5ndtal5sbG9zQzMPjjpTP68057qUSExfan9Si9cokO6QsKNOORrGvY6UXs3CrcpXgEP9pzqFVmMygLPMCn/wgoXuaAQFxN1ba1/vTqGtac2+/9XQGCy97tNGdR9vROJD2A3F3HNjJUlO1Lmnd7WgqQw4eAnHXD9hpS12tqWy+zaLBpX4m29+jq0LcAWCAaOkH7AQuAaKlH7ATuASIOwAMEC39gJ3AJUC09AN2ApcAcQeAAaKlH7ATuASIln7ATuASIO4AMEC09AN2ApcA0dIP2AlcAsQdAAaIln7ATuASIFr6ATuBS4C4A8AA0dIP2AlcAkRLP2AncAkQd1dGnu+TxDHFUpKE0jRtfW6+J3ac1JQFTuN5efcLREs/RmmnqqA0TrRf8b/Kz5KG32XFRU8XGoJ1FtCy8by8ewWipR/jtJO8w9X6WUwJ+1m6+ZywzzXeEztS6nVGy8bz8u4ViLsrU4TsoE5EeVFSnsirieR9dzmVZU6RM6N542X+46FuPCOvptSbk9t6z8t9Ir8NxN1xxminugi5Xi5leUFlnuiHCDsx+1lBWSQP5m6+c3k8VI1n5JWpR3N3+zT+ewXirh+jtFOdK9+KMh3D9FsiHFqVHN8yeS1f+53LY6Guqo1fyQPI5zMP4u4MIO4a5FG4faOEeT3Y5vUr7Ci+fafeiMhYzN3L+/VOQX4biLvjjNFOdR43/Eq/Hmy5eWl4TbEXjy6jUGUs5oKdp+ZPAIi7foxV3AVNv9p5RWYRBeMTd5W8Vqz5zvVpAHE3IJ0vTq5rKvOUklVBBfd8vFAPy6jXtfg+ea5HiR26rSsqVgmvW/I2sVoW89+WuswoDAIKw6gx3FurVyz5al8h5Y1MQV3lFAX8veerfQp5pF/dMnf4u3xt6pdR0hiWle1iPo7sM24Md1WlHhorq5KSwCMvkPdrmoW81ioOKQhDiuJxpu7lvCHujjN6Oxlxt1DvTrbU3D653SYrKouUfM+8Xq8quC37/NmlINkGrbJYURyvaM3bBC4v47+3TbmkOBQ/CylOt8fo9FmhXlPKQc/3PAqTXO2nyiXLwYFx7lCkvtP1S1rHke1C5Wdhw2dq9q9VEtOqXFMeB+R6gXq/pqVkfw+CkMIobvn7WIC468f47fRQ3AnSPjOOA4WMTnFsSbWjUSY+4EtcSDdt+ZyYsdfPeP08jdQx/JD3qQ6b69dryusyo4TkFbO2fs3j5Cn7DO/TD2MqrM+cFW/HA8TdgHSJuzU3Gv1+uxlfpB2+2PtUrhP1WfWA7IuUpVGuV6ahzjgQZdxAZZjXpsFLXmZeuFytyHFT+YvWmbxPNlDOV6/knZXaEesy4d4MH0s+lKnap2TrpMFK2j1gMSevZSm5ccu7+eahDmK1eSlzLm2Zg6gn9VFDSTVloRaGs2VAGQtCeSfgzAw7y0vT7T7ywKWkEYzGgtQd4u44o7dTh7ir1zl50h7lexZrC3kX5foF1bZ95UD6ReTKN1m8heo9sDNaBgnlLJaUT+hGT8lC+4psEy7Zh+QAe3xW9uXx36l2NP0uTPEDOYa8MzPgoMV+VpUrCh1eZjMMfA5St8gcM/WkPnooqVwZYch+mOQsCH15N65+4bnyT7OPahWSN8LpFBB3/bhJcccdEvt+2NnCJYfbuMzXTqVt+zoW5D63e+WbZ8SMfX4mPuKygFNJCP5bjjcTP2CBGHB95iELSP4kIjKUaRoLEzfZn3ndRWSOmeqpU+Kv58TbMQFxNyCdmTtuXDEHC9uIFXxhjyKdwasLLbysGCqiRWNdHcRUoOFtRCT6JpNQFTqjJttHqb7AF6rhuhwg9DED3UqZmpdxT8sINtlns47l5pjsCOzM2jE17aFmqYN1Gu2cNtBIvUW46g7Omnt12/2PBTkPiLvjjN5OHeJOaLZHDQcB7nWrpsvbiLhzjBiqCxFQdl3roxIAaopElPkm+7AudAdpj8+qYzbm1VYcwHQvX++zVcdye0xd12bQ1Oekh5p5W67DZuqE6nBpv9P1nlNqjlEU43sVOsRdP25S3AmN9mgp0shk8ExHxUnMNifGjD1+po/ZmFdbcacn075VxLKfZh23x9TJCisQBXNOS73+qfF2TEDcDcghcbcbiKTX4Ls+xUmkJ7CabVqNzTSwzTJzw4ZMcM0a4mm9isnzIoojyeJJ1q3UWYFWPQw7+xS2x1xTIPtv3gRigo5aX227ddSWU/EyleXj4pih57EhdYO4O87o7WTa5K5PPbzIMzLE6nsUxuwjjW26xN12mc4eSAmb0xUe+GylOkO79dA89PvmMTNf9t+8CUSvbzMeTXGnryuNDIYnmTze3okaQ0/jAeKuH7cq7trt0VKrKQReGFPkNrY5I2Z0xcYykVGvHd82PPD7xjGrTEaz2jeBFDsC89R4OxYg7gakr7izvQnd4CT922hQextbLdPjuOHn5IvDcYOTr1vZik0vZa2cxmYpNOwgJXeRdhqwsD2myVo0gxWv3+7NdDtqreYxiIOLMzUnu48HqRfE3XFGbyfTJndFVddFvtnJ2YonWbRP3Mmd5Pwt+1Dis2/x9jFf2Pf5bKayFO0hm6oseS8dft84pvjcbpZR1c9kD/eKu1rfFbjOE1UHm4EYExB3/bgfcdce8WllpU+MGfv8bJ2ZUSn52iBDsLKLQ+JO+9z2+EI/cdcdb8cExN2QqIbZuFvWoC7yDbGjLuwzPR9uIwjV3BuZe9AUVzqIqf3VOfeKbEatUNvk3PpEjM3Ms7OK2GbualqpzMCc4lzm1lWU+Q7/rQ64acB1tVbbbedIyD4koDWcSM2BcMzQVM5/b5266cR56G8dOORjj/ARMGIziLvjjN9O2i92OxC7Q536ws4XP+1oaj6czL2R5XUebC7w/KnhoxVF3nYfEW8j0xv2+azODMzIjXm/7I9FGpBrRKIINOVX7H8ShPQxTWAz+9jOTdXZdhGSsq1k0K0o1deVJZ+17COicOto/P34HgEDcdePW7DToWHZjfeZx6fY+XAyx222iPS0hhNjxt7YWOn4P3flhgzugBUpOY7ez7ajxCJQOZqZqyc7Zr+Xa0Uz0SHz9Zax/nxavDUfRwLE3UDIHT6+o5114fqbu2vkzjZpMHLXnLo7ldHP4eHvuPhxTD4HFhFQz/92ulk3KysVKGSdpcz/MY3Uj1NKI4+cQAu6MtXBRS7+ksYW4SbP/6rqNUWOGb6R7TbDSxy8VE+EG3y0ohdW2/rZuUKZL87iUcp1d+ZLM1m8ptRkMiSFXlUFBarevJy3U6Jw4fM2CXnLcaaxpe4Qd8cZtZ3k7lfuqEgdZUK33M0tyI1CnmqPCwrMHav8pZ7Azesu/XgzETx6/rdN252rYVcJFMoHFgEHISP0eP0sjWi5DHWg2eOzqiOlpkPoZYvGQ4q3d6ZHVL6wMtvIMXWdte8u+BwyCvnaYX3U+r3arqo2fifzf2zWRLaJvKW6MWpsQNz1Y9x2qiiLfR1PuL359m5WmebA7U7q7QT2jtTGVIGlT7G6MUHiy/Mnx4z9fibTj/QwrTrOfPuQ4u2d6S6tyhca9dN1ln3KeXgcO+VmC+ujMqfv1Hg7JiDuRoSkeS9FsgNS9tNeptY3f2+RfZg/9yDZvvV6+2DIfvB+Odidts1wSPuBuDvOzdvpQOPu3TaP+tkOan3zd4Oj++Dl61IPL52Cvg6YDyMD4q4fd22n3m3z1JjR7ZfHfbWmal3qzN4JaD87bZuhgLgDwHDzomUgYCdwCRB3/YCdwCVA3AFggGjpB+wELgGipR+wE7gEiDsADBAt/YCdwCVAtPQDdgKXAHEHgAGipR+wE7gEiJZ+wE7gEiDuADBAtPQDdgKXANHSD9gJXALEHQAGiJZ+wE7gEiBa+gE7gUu4O3H3zDPP0I/92I+hoJxcIFr6IXZ64xvf2GlDFJRjRdoORMtxrLjrsiEKyrEiWkjaz92IOxSUSwrE3XG67IaCcmoBh7HiDgXlknLz4q6qKnUSKCiXlDwf32vRxkaX3VBQTi3gMHIt6rIbCsopRbTRY4EuGQAAAADAHQFxBwAAAABwR0DcAQAAAADcERB3AAAAAAB3BMQdAAAAAMAdAXEHAAAAAHBHQNwBAAAAANwREHcAAAAAAHcExB0AAAAAwB0BcQcAAAAAcEdA3AEAAAAA3BEQdwAAAAAAdwTEHQAAAADAHQFxBwAAAABwR0DcAQAAAADcERB3AAAAAAB3BMQdAAAAAMAdAXEHAAAAAHBHQNwBAAAAANwREHcAAAAAAHcExB0AAAAAwB0BcQfAwFRFRr7rkOsFlK5yypIV1WbZOgto6Webz49BVeSURD75SWG+qSkLHPKz0nzWVHlKge+T67gU7yw7Rl2VtEpj8vz0Qd3lfOM4oTRNKUli/jumJM2oWFdmDUtJwdKhrHzMsz9vn0WWUJykus5cX6lzmuVUVo391BXlvJ7vBlScWWWxW57F5AcP7bafWm3juR7b26cwTqng3ziV36xeq9/htP0J17A9AOBJAXEHwIDUZUyz2ZzSoqKaA3EWLPizT2uzvEw9mrunBubD1FVBwXxG82gr7lJvTm6yFXDVyqfZMlHHrQupo8vh/gRY6CTujGbzqLPuJYvW2WxGXpLTes1CMNGf500hW5fksW2ShsCoK7aT+fssOvbZDxbA/lzVMSlKWpcFJcFSfd6I4rpmEch2my0oP7eS3AbiA3Z7QJWTy3WYLVhQsjiuuQ5lLr+X+X35dzhpf5az7QQAGCMQdwAMSBGxmJvHrcCbLJe0unJMlePOQyvuHhKz+AvPTT8ZypjFz865WbRgnFHcOEaZOIeFUZXR/FSR8ogUcj6zZSMrV1Pi7AinuqDFJeKOUcfZY7c2IsBE2HWsWyab7/vvDwBwr0DcATAgZeIqkeNE26HYel2SHu2rqSpzSmK7rKayyCjNeTn/G3g+RZkItJryNCKPP0sGUK0pw6JJTFleUBb55Lo+ZWaZ0BJ3KtuTUaIyUJJ9imnJdVr4MaVpoodOo5iaSZxaju975AcxFY2hyXqdU+j7FIQRBSJ8uoQH0y3uxBZbYVSbYU41NFjlqk6S5fSjhNZmHTt07PkhrVoZvpziICCfl8VsI7uktU9lzxXFbN812zlwXQo2tn7IeeJOfptY1dEP27bSyyKuI9sxTDb2LeKt4JffRYaA4zjbnLOlTHXbadpwS02rNFf7UPtbRFSo4X+X/Fh/r6m4fYidPPKClD9pLrETAGB8QNwBMCR1ScFCRIuIBJeD6VaAVeWKwoZ4EEHnzfW6HgfXIovMdg7FMlcvlsyXFh+FGfaczT0WeCx0XD2kmBoF0RR35Sohh5fZz7XUiY8jw40yzLcuEt52vhVdeUQLTw+fFuqYWszUZcp/u0b8rCmU8zoi7pwoo5zrl8UynMnHTG02sWJxGqrvdAaRxYoMWc9DNc9NvhFxMzf10EJH11EPdS8pF1Oy2FLZLTW0vbNPPs9wqe25DBI1b23Ofwdqw4foc52xoM65zix21LDsggW11MDQEnda/C2iXC2SIXbZXv8GNaX8m+ghXf5bfueZ/p2tuBPycEnLkM+xcQhLEe2KzW5svWU/RZ7oc1zpc1TH9XX9ct8O1V9mJwDA+IC4A2BwasqNuJHixlbgMKUIuG1mqJTAH+hgLNvJ8GmwSRM1hUWhMl3RJvKvyefPCzPPbndYtmx91vvdDMvuCJaIly2DmJI4oTjSgiXkhSIUFvF2Zp4elm1ktRpYcedGKWVZSqGvBYjLYm8rGdr1aGa0eO98flvBqTJQiWzLgoqFyHY+4fZYOsPV3mddNO3Ly1iQzkNr3zY6czenKM0ok5sUHBHM/FllTw0NW2mRuWhl+mIRSUs+B7UsNMdlqpwSsx89jOpTHLoUZnb25S41ZZ4cv4+4k8ydtVv7HIs0MuJU5l1y3Rw9z1Ktd6adAADjA+IOgCcFB3jfZPHsUFs7qHIw3hFhIrQ6RZj6uynu2qJnV9z132+usjaxugGkoqquVXZPxKNkyETkWWSfM39lPrXpGpaVjKASeKkViO16NMXdQ+FkWVPA+9gKYIbrvxW67X12iRYrgHd5OCxLlKvs2TYj2rRVpW6uaApQsw8WvC/I/MI98+Bspm3XPrvo+ljRvZ+2KN49R+lYBOSFMUVy40VDBJ5rJwDA+IC4A2Aw1hTtPiqkylRQt6LsMcWdCsgmK3hM3O3P3GkRt80Waor84/TT/L3dv6D2uUcAWHG3rZ+gRdhikxFq16MlUtbaTo0bfHn1isqqUjZpHdeIO72f9j4vFXf2PDaitmErve+2+LLirswk49m+A1nmScqUPHWey4iy2MxB3DP6aY/tNDO9HewXd23B374B5nw7AQDGB8QdAIOhxZnfHHqTuxyVaDFhNA8aAVcCMAfqnWFZfxP9RViYTJEVNBvRkSuxl5lVt/OrNO3PXC9edyu8GvvlZXp+mDwDTXZW0yqSZ+StKZNhPRYstjrq0SGL6MGNAAqVeWtnpgolZrbzwWTfkoWz9VCZQDXMW9O60sPMcjy5kUI93mXJx+ZVtQhrCKe12NQxNyy096ntuyNa9oilsjGnUVNRrGwxp22VV/x5wRaTv/Vv4DQUqNhuKUPXRsTPXblRpaaqSMlx9O9sRZagbtiYBXseQ7N9PEuUt4dva9mfq4dYH4g2e44mC2vn/alj8e+lT+V8OwEAxgfEHQADIhPmZ/MFLd2AosjXwdY8XLguV2aYdk6h3PFZZuSymLPCqlzFSrCpZ5zJ3Y1m3t7CT6liYSE3SYgYCcJArRcZ1bXZTm7gKPR+RITIjRnqc6Yn08+dSGXCskiLLrVfVbGCfFUPXdzYiM3GxPv5YqmOMV96mzt4LepOX5eFmlrPIc9zaSn7my8b89dYNJrzmTuhElSVGbaVeq9YMdbrlX7GmyoLc2en3jbzRQjysbOYHN6vvYmhtU8RhBv7yh3IqbaDsqfek0XuIHYXWkgtHJfr7KjfSs5vcxcyn3/s6fNyQz13UG4yETt4cUpJ6LANt8/xW68itQ99TizgeIH6zZUNFxTLXdHmmXX6t9qplKKmPDHzNdmWcters1yQ4yfb30qdo96fPANPn6Ov7tyV5xuqbZc+xbGeP+lEz59tJwDAOIG4A2BIbHCU7I2av2Y+XwoHdSXoJPrKfs3Xj4nMteuqr/re/P3Y6Pl9bbq+E2RO4Foe7Gs+Pzn4t12XtG49BsUiNnyMGsox1vp8L9ndkzcWAOAKQNwBcBfoIcFDE/IBAABMA4g7AG4eGX7UQ2wLL6JV49l5AAAApgfEHQB3wGaoj/99lFE/AAAANwvEHQAAAADAHQFxBwAAAABwR0DcAQAAAADcERB3AAAAAAB3BMQdAAAAAMAdAXEHAAAAAHBHQNwBAAAAANwREHcAAAAAAHcExB0AAAAAwB0BcQcAAAAAcDcQ/f+KI/ZSHG4NAQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "execution_count": 131, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Image(filename='blockchain.png')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Da bi implementirali primitivnu kriptovalutu morat ćemo dodati još puno toga u svaki blok. Krenimo sa transakcijama. U svaki blok ćemo upisivati transakcije koje će biti javno dostupne svim čvorovima, tj. svatko tko sudjeluje u održavanju mreže vidi tko je kome poslao koju kolićinu coina. Čvorovi koji sudjeluju u održavanju mreže zovu se rudari(miners).\n", + "Za početak implementirat ćemo transakciju:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Transaction:\n", + " \n", + " def __init__(self, sender, reciever, amount,fee):\n", + " \n", + " self.sender = sender\n", + " self.reciever = reciever\n", + " self.amount = amount\n", + " self.fee = fee\n", + " self.encoded = (str(self.sender) + str(self.reciever) + \n", + " str(self.amount) ).encode('utf-8')\n", + " self.hash = self.hashTransaction().hexdigest()\n", + " \n", + " \n", + " def hashTransaction(self):\n", + " \n", + " sha = hashlib.sha256()\n", + " sha.update(self.encoded)\n", + " return sha\n", + " \n", + " def printTransaction(self):\n", + " \n", + " print(str(self.sender)+\" \"+ str(self.reciever)+\" \"+str(self.amount))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Kada korisnik mreže odluči poslati određenu količinu coina nekom drugom korisniku on ponudi određenu naknadu rudaru koji uvrsti njegovu transakciju u svoj blok. Normalno što je veća naknada ponuđena to je veća vjerojatnost da će njegova transakcija biti prihvaćena prije. Sve transakcije koje su predložene ali nisu prihvaćene idu u bazen nepotvrđenih transakcija(mempool):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class Mempool:\n", + " \n", + " def __init__(self):\n", + " \n", + " self.transactions=[]\n", + " \n", + " def addNewTransaction(self,transaction):\n", + " \n", + " self.transactions.append(transaction)\n", + " self.transactions = sorted(self.transactions, key=lambda trans: trans.fee)\n", + " \n", + " def printMempool(self):\n", + " \n", + " for trans in self.transactions:\n", + " trans.printTransaction()" + ] + }, + { + "cell_type": "code", + "execution_count": 189, + "metadata": {}, + "outputs": [], + "source": [ + "import rsa\n", + "\n", + "class Wallet:\n", + " \n", + " def __init__(self,name):\n", + " \n", + " self.name = name\n", + " self.privateKey =\"\"\n", + " self.publicKey =\"\"\n", + " self.listOfTransaction = []\n", + " self.generateKeys()\n", + " \n", + " \n", + " def generateKeys(self):\n", + " \n", + " (self.publicKey, self.__privateKey)=rsa.newkeys(512)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 191, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'str' object has no attribute 'n'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"Kako si Alice\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mcrypto\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mrsa\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencrypt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmessage\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwallet1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpublicKey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 6\u001b[0;31m \u001b[0mdecMessage\u001b[0m \u001b[0;34m=\u001b[0m\u001b[0mrsa\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecrypt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcrypto\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwallet1\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprivateKey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/rsa/pkcs1.py\u001b[0m in \u001b[0;36mdecrypt\u001b[0;34m(crypto, priv_key)\u001b[0m\n\u001b[1;32m 228\u001b[0m \"\"\"\n\u001b[1;32m 229\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 230\u001b[0;31m \u001b[0mblocksize\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcommon\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbyte_size\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpriv_key\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 231\u001b[0m \u001b[0mencrypted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtransform\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbytes2int\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcrypto\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 232\u001b[0m \u001b[0mdecrypted\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpriv_key\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mblinded_decrypt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mencrypted\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'str' object has no attribute 'n'" + ] + } + ], + "source": [ + "wallet1 = Wallet(\"Alice\")\n", + "wallet2 = Wallet(\"Bob\")\n", + "wallet1.publicKey\n", + "message=\"Kako si Alice\".encode()\n", + "crypto = rsa.encrypt(message, wallet1.publicKey)\n", + "decMessage =rsa.decrypt(crypto, wallet1.privateKey)" + ] + }, + { + "cell_type": "code", + "execution_count": 170, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for pow(): 'str', 'str', 'str'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mcode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"ante\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"65537\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"5551201688147\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# encode using a public key\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplaintext\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcode\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m109182490673\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m5551201688147\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# decode using a private key\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for pow(): 'str', 'str', 'str'" + ] + } + ], + "source": [ + "code = pow(\"ante\", \"65537\", \"5551201688147\") # encode using a public key\n", + "plaintext = pow(code, 109182490673, 5551201688147) # decode using a private key" + ] + }, + { + "cell_type": "code", + "execution_count": 105, "metadata": {}, "outputs": [], "source": [ @@ -77,46 +435,131 @@ " \n", " self.index = index\n", " self.timestamp = timpestamp\n", + " self.nounce = 0\n", " self.transactions = transactions\n", " self.previousHash = previousHash\n", - " self.encoded = (str(self.index) + str(self.timestamp) + \n", - " str(self.transactions) + str(self.previousHash)).encode('utf-8')\n", - " self.hash = self.hashMyBlock().hexdigest()\n", - "\n", + " self.encoded = \"\"\n", + " self.hash = \"\"\n", + " self.dificulty = \"0\"*5+\"F\"*60\n", + " self.mineIt()\n", + " \n", " def hashBlock(self):\n", + " \n", " sha = hashlib.sha256()\n", + " self.encoded = (str(self.index) + str(self.timestamp) + str(self.nounce)+\n", + " str(self.transactions) + str(self.previousHash)).encode('utf-8')\n", " sha.update(self.encoded)\n", - " return sha" + " return sha\n", + " \n", + " def mineIt(self):\n", + " \n", + " while(not self.hashBlock().hexdigest()\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mgenesisBlock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBlock\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgetMeTime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"First block\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mgenesisBlock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhashMe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mgenesisBlock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhash\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, index, timpestamp, previousHash, transactions)\u001b[0m\n\u001b[1;32m 11\u001b[0m self.encoded = (str(self.index) + str(self.timestamp) + \n\u001b[1;32m 12\u001b[0m str(self.transactions) + str(self.previousHash)).encode('utf-8')\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhash\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhashMyBlock\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhexdigest\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mhashBlock\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'Block' object has no attribute 'hashMyBlock'" + ] } ], "source": [ @@ -262,9 +721,21 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 86, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "NameError", + "evalue": "name 'genesisBlock' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mtransactions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"Alice Bob 50\"\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\"Bob John 10\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0msecondBlock\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBlock\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mgetMeTime\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mgenesisBlock\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhash\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtransactions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mtransactions3\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m\"Bob Alice 20\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"John Mary 5\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"Alice Mary 20\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'genesisBlock' is not defined" + ] + } + ], "source": [ "transactions = [\"Alice Bob 50\",\"Bob John 10\"]\n", "\n", @@ -362,7 +833,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -372,7 +843,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -382,18 +853,799 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
DateOpenHighLowCloseVolumeMarket Cap
0Feb 20, 201811231.8011958.5011231.8011403.709,926,540,000189,536,000,000
1Feb 19, 201810552.6011273.8010513.2011225.307,652,090,000178,055,000,000
2Feb 18, 201811123.4011349.8010326.0010551.808,744,010,000187,663,000,000
3Feb 17, 201810207.5011139.5010149.4011112.708,660,880,000172,191,000,000
4Feb 16, 201810135.7010324.109824.8210233.907,296,160,000170,960,000,000
5Feb 15, 20189488.3210234.809395.5810166.409,062,540,000160,025,000,000
6Feb 14, 20188599.929518.548599.929494.637,909,820,000145,023,000,000
7Feb 13, 20188926.728958.478455.418598.315,696,720,000150,516,000,000
8Feb 12, 20188141.438985.928141.438926.576,256,440,000137,258,000,000
9Feb 11, 20188616.138616.137931.108129.976,122,190,000145,245,000,000
10Feb 10, 20188720.089122.558295.478621.907,780,960,000146,981,000,000
11Feb 09, 20188271.848736.987884.718736.986,784,820,000139,412,000,000
12Feb 08, 20187637.868558.777637.868265.599,346,750,000128,714,000,000
13Feb 07, 20187755.498509.117236.797621.309,169,280,000130,683,000,000
14Feb 06, 20187051.757850.706048.267754.0013,999,800,000118,810,000,000
15Feb 05, 20188270.548364.846756.686955.279,285,290,000139,325,000,000
16Feb 04, 20189175.709334.878031.228277.017,073,550,000154,553,000,000
17Feb 03, 20188852.129430.758251.639174.917,263,790,000149,085,000,000
18Feb 02, 20189142.289142.287796.498830.7512,726,900,000153,953,000,000
19Feb 01, 201810237.3010288.808812.289170.549,959,400,000172,372,000,000
20Jan 31, 201810108.2010381.609777.4210221.108,041,160,000170,183,000,000
21Jan 30, 201811306.8011307.2010036.2010106.308,637,860,000190,339,000,000
22Jan 29, 201811755.5011875.6011179.2011296.407,107,360,000197,871,000,000
23Jan 28, 201811475.3012040.3011475.3011786.308,350,360,000193,133,000,000
24Jan 27, 201811174.9011614.9010989.2011440.707,583,270,000188,054,000,000
25Jan 26, 201811256.0011656.7010470.3011171.409,746,200,000189,398,000,000
26Jan 25, 201811421.7011785.7011057.4011259.408,873,170,000192,163,000,000
27Jan 24, 201810903.4011501.4010639.8011359.409,940,990,000183,419,000,000
28Jan 23, 201810944.5011377.6010129.7010868.409,660,610,000184,087,000,000
29Jan 22, 201811633.1011966.4010240.2010931.4010,537,400,000195,645,000,000
........................
1730May 27, 2013133.50135.47124.70129.75-1,495,520,000
1731May 26, 2013131.99136.00130.62133.48-1,478,030,000
1732May 25, 2013133.10133.22128.90131.98-1,489,950,000
1733May 24, 2013126.30133.85125.72133.20-1,413,300,000
1734May 23, 2013123.80126.93123.10126.70-1,384,780,000
1735May 22, 2013122.89124.00122.00123.89-1,374,130,000
1736May 21, 2013122.02123.00121.21122.88-1,363,940,000
1737May 20, 2013122.50123.62120.12122.00-1,368,910,000
1738May 19, 2013123.21124.50119.57121.99-1,376,370,000
1739May 18, 2013123.50125.25122.30123.50-1,379,140,000
1740May 17, 2013118.21125.30116.57123.02-1,319,590,000
1741May 16, 2013114.22118.76112.20118.76-1,274,620,000
1742May 15, 2013111.40115.81103.50114.22-1,242,760,000
1743May 14, 2013117.98119.80110.25111.50-1,315,720,000
1744May 13, 2013114.82118.70114.50117.98-1,279,980,000
1745May 12, 2013115.64117.45113.44115.00-1,288,630,000
1746May 11, 2013117.70118.68113.01115.24-1,311,050,000
1747May 10, 2013112.80122.00111.55117.20-1,255,970,000
1748May 09, 2013113.20113.46109.26112.67-1,259,980,000
1749May 08, 2013109.60115.78109.60113.57-1,219,450,000
1750May 07, 2013112.25113.4497.70111.50-1,248,470,000
1751May 06, 2013115.98124.66106.64112.30-1,289,470,000
1752May 05, 2013112.90118.80107.14115.91-1,254,760,000
1753May 04, 201398.10115.0092.50112.50-1,089,890,000
1754May 03, 2013106.25108.1379.1097.75-1,180,070,000
1755May 02, 2013116.38125.6092.28105.21-1,292,190,000
1756May 01, 2013139.00139.89107.72116.99-1,542,820,000
1757Apr 30, 2013144.00146.93134.05139.00-1,597,780,000
1758Apr 29, 2013134.44147.49134.00144.54-1,491,160,000
1759Apr 28, 2013135.30135.98132.10134.21-1,500,520,000
\n", + "

1760 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " Date Open High Low Close Volume \\\n", + "0 Feb 20, 2018 11231.80 11958.50 11231.80 11403.70 9,926,540,000 \n", + "1 Feb 19, 2018 10552.60 11273.80 10513.20 11225.30 7,652,090,000 \n", + "2 Feb 18, 2018 11123.40 11349.80 10326.00 10551.80 8,744,010,000 \n", + "3 Feb 17, 2018 10207.50 11139.50 10149.40 11112.70 8,660,880,000 \n", + "4 Feb 16, 2018 10135.70 10324.10 9824.82 10233.90 7,296,160,000 \n", + "5 Feb 15, 2018 9488.32 10234.80 9395.58 10166.40 9,062,540,000 \n", + "6 Feb 14, 2018 8599.92 9518.54 8599.92 9494.63 7,909,820,000 \n", + "7 Feb 13, 2018 8926.72 8958.47 8455.41 8598.31 5,696,720,000 \n", + "8 Feb 12, 2018 8141.43 8985.92 8141.43 8926.57 6,256,440,000 \n", + "9 Feb 11, 2018 8616.13 8616.13 7931.10 8129.97 6,122,190,000 \n", + "10 Feb 10, 2018 8720.08 9122.55 8295.47 8621.90 7,780,960,000 \n", + "11 Feb 09, 2018 8271.84 8736.98 7884.71 8736.98 6,784,820,000 \n", + "12 Feb 08, 2018 7637.86 8558.77 7637.86 8265.59 9,346,750,000 \n", + "13 Feb 07, 2018 7755.49 8509.11 7236.79 7621.30 9,169,280,000 \n", + "14 Feb 06, 2018 7051.75 7850.70 6048.26 7754.00 13,999,800,000 \n", + "15 Feb 05, 2018 8270.54 8364.84 6756.68 6955.27 9,285,290,000 \n", + "16 Feb 04, 2018 9175.70 9334.87 8031.22 8277.01 7,073,550,000 \n", + "17 Feb 03, 2018 8852.12 9430.75 8251.63 9174.91 7,263,790,000 \n", + "18 Feb 02, 2018 9142.28 9142.28 7796.49 8830.75 12,726,900,000 \n", + "19 Feb 01, 2018 10237.30 10288.80 8812.28 9170.54 9,959,400,000 \n", + "20 Jan 31, 2018 10108.20 10381.60 9777.42 10221.10 8,041,160,000 \n", + "21 Jan 30, 2018 11306.80 11307.20 10036.20 10106.30 8,637,860,000 \n", + "22 Jan 29, 2018 11755.50 11875.60 11179.20 11296.40 7,107,360,000 \n", + "23 Jan 28, 2018 11475.30 12040.30 11475.30 11786.30 8,350,360,000 \n", + "24 Jan 27, 2018 11174.90 11614.90 10989.20 11440.70 7,583,270,000 \n", + "25 Jan 26, 2018 11256.00 11656.70 10470.30 11171.40 9,746,200,000 \n", + "26 Jan 25, 2018 11421.70 11785.70 11057.40 11259.40 8,873,170,000 \n", + "27 Jan 24, 2018 10903.40 11501.40 10639.80 11359.40 9,940,990,000 \n", + "28 Jan 23, 2018 10944.50 11377.60 10129.70 10868.40 9,660,610,000 \n", + "29 Jan 22, 2018 11633.10 11966.40 10240.20 10931.40 10,537,400,000 \n", + "... ... ... ... ... ... ... \n", + "1730 May 27, 2013 133.50 135.47 124.70 129.75 - \n", + "1731 May 26, 2013 131.99 136.00 130.62 133.48 - \n", + "1732 May 25, 2013 133.10 133.22 128.90 131.98 - \n", + "1733 May 24, 2013 126.30 133.85 125.72 133.20 - \n", + "1734 May 23, 2013 123.80 126.93 123.10 126.70 - \n", + "1735 May 22, 2013 122.89 124.00 122.00 123.89 - \n", + "1736 May 21, 2013 122.02 123.00 121.21 122.88 - \n", + "1737 May 20, 2013 122.50 123.62 120.12 122.00 - \n", + "1738 May 19, 2013 123.21 124.50 119.57 121.99 - \n", + "1739 May 18, 2013 123.50 125.25 122.30 123.50 - \n", + "1740 May 17, 2013 118.21 125.30 116.57 123.02 - \n", + "1741 May 16, 2013 114.22 118.76 112.20 118.76 - \n", + "1742 May 15, 2013 111.40 115.81 103.50 114.22 - \n", + "1743 May 14, 2013 117.98 119.80 110.25 111.50 - \n", + "1744 May 13, 2013 114.82 118.70 114.50 117.98 - \n", + "1745 May 12, 2013 115.64 117.45 113.44 115.00 - \n", + "1746 May 11, 2013 117.70 118.68 113.01 115.24 - \n", + "1747 May 10, 2013 112.80 122.00 111.55 117.20 - \n", + "1748 May 09, 2013 113.20 113.46 109.26 112.67 - \n", + "1749 May 08, 2013 109.60 115.78 109.60 113.57 - \n", + "1750 May 07, 2013 112.25 113.44 97.70 111.50 - \n", + "1751 May 06, 2013 115.98 124.66 106.64 112.30 - \n", + "1752 May 05, 2013 112.90 118.80 107.14 115.91 - \n", + "1753 May 04, 2013 98.10 115.00 92.50 112.50 - \n", + "1754 May 03, 2013 106.25 108.13 79.10 97.75 - \n", + "1755 May 02, 2013 116.38 125.60 92.28 105.21 - \n", + "1756 May 01, 2013 139.00 139.89 107.72 116.99 - \n", + "1757 Apr 30, 2013 144.00 146.93 134.05 139.00 - \n", + "1758 Apr 29, 2013 134.44 147.49 134.00 144.54 - \n", + "1759 Apr 28, 2013 135.30 135.98 132.10 134.21 - \n", + "\n", + " Market Cap \n", + "0 189,536,000,000 \n", + "1 178,055,000,000 \n", + "2 187,663,000,000 \n", + "3 172,191,000,000 \n", + "4 170,960,000,000 \n", + "5 160,025,000,000 \n", + "6 145,023,000,000 \n", + "7 150,516,000,000 \n", + "8 137,258,000,000 \n", + "9 145,245,000,000 \n", + "10 146,981,000,000 \n", + "11 139,412,000,000 \n", + "12 128,714,000,000 \n", + "13 130,683,000,000 \n", + "14 118,810,000,000 \n", + "15 139,325,000,000 \n", + "16 154,553,000,000 \n", + "17 149,085,000,000 \n", + "18 153,953,000,000 \n", + "19 172,372,000,000 \n", + "20 170,183,000,000 \n", + "21 190,339,000,000 \n", + "22 197,871,000,000 \n", + "23 193,133,000,000 \n", + "24 188,054,000,000 \n", + "25 189,398,000,000 \n", + "26 192,163,000,000 \n", + "27 183,419,000,000 \n", + "28 184,087,000,000 \n", + "29 195,645,000,000 \n", + "... ... \n", + "1730 1,495,520,000 \n", + "1731 1,478,030,000 \n", + "1732 1,489,950,000 \n", + "1733 1,413,300,000 \n", + "1734 1,384,780,000 \n", + "1735 1,374,130,000 \n", + "1736 1,363,940,000 \n", + "1737 1,368,910,000 \n", + "1738 1,376,370,000 \n", + "1739 1,379,140,000 \n", + "1740 1,319,590,000 \n", + "1741 1,274,620,000 \n", + "1742 1,242,760,000 \n", + "1743 1,315,720,000 \n", + "1744 1,279,980,000 \n", + "1745 1,288,630,000 \n", + "1746 1,311,050,000 \n", + "1747 1,255,970,000 \n", + "1748 1,259,980,000 \n", + "1749 1,219,450,000 \n", + "1750 1,248,470,000 \n", + "1751 1,289,470,000 \n", + "1752 1,254,760,000 \n", + "1753 1,089,890,000 \n", + "1754 1,180,070,000 \n", + "1755 1,292,190,000 \n", + "1756 1,542,820,000 \n", + "1757 1,597,780,000 \n", + "1758 1,491,160,000 \n", + "1759 1,500,520,000 \n", + "\n", + "[1760 rows x 7 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "test?\n" + "test" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -412,9 +1664,1020 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "['Feb 20, 2018',\n", + " 'Feb 19, 2018',\n", + " 'Feb 18, 2018',\n", + " 'Feb 17, 2018',\n", + " 'Feb 16, 2018',\n", + " 'Feb 15, 2018',\n", + " 'Feb 14, 2018',\n", + " 'Feb 13, 2018',\n", + " 'Feb 12, 2018',\n", + " 'Feb 11, 2018',\n", + " 'Feb 10, 2018',\n", + " 'Feb 09, 2018',\n", + " 'Feb 08, 2018',\n", + " 'Feb 07, 2018',\n", + " 'Feb 06, 2018',\n", + " 'Feb 05, 2018',\n", + " 'Feb 04, 2018',\n", + " 'Feb 03, 2018',\n", + " 'Feb 02, 2018',\n", + " 'Feb 01, 2018',\n", + " 'Jan 31, 2018',\n", + " 'Jan 30, 2018',\n", + " 'Jan 29, 2018',\n", + " 'Jan 28, 2018',\n", + " 'Jan 27, 2018',\n", + " 'Jan 26, 2018',\n", + " 'Jan 25, 2018',\n", + " 'Jan 24, 2018',\n", + " 'Jan 23, 2018',\n", + " 'Jan 22, 2018',\n", + " 'Jan 21, 2018',\n", + " 'Jan 20, 2018',\n", + " 'Jan 19, 2018',\n", + " 'Jan 18, 2018',\n", + " 'Jan 17, 2018',\n", + " 'Jan 16, 2018',\n", + " 'Jan 15, 2018',\n", + " 'Jan 14, 2018',\n", + " 'Jan 13, 2018',\n", + " 'Jan 12, 2018',\n", + " 'Jan 11, 2018',\n", + " 'Jan 10, 2018',\n", + " 'Jan 09, 2018',\n", + " 'Jan 08, 2018',\n", + " 'Jan 07, 2018',\n", + " 'Jan 06, 2018',\n", + " 'Jan 05, 2018',\n", + " 'Jan 04, 2018',\n", + " 'Jan 03, 2018',\n", + " 'Jan 02, 2018',\n", + " 'Jan 01, 2018',\n", + " 'Dec 31, 2017',\n", + " 'Dec 30, 2017',\n", + " 'Dec 29, 2017',\n", + " 'Dec 28, 2017',\n", + " 'Dec 27, 2017',\n", + " 'Dec 26, 2017',\n", + " 'Dec 25, 2017',\n", + " 'Dec 24, 2017',\n", + " 'Dec 23, 2017',\n", + " 'Dec 22, 2017',\n", + " 'Dec 21, 2017',\n", + " 'Dec 20, 2017',\n", + " 'Dec 19, 2017',\n", + " 'Dec 18, 2017',\n", + " 'Dec 17, 2017',\n", + " 'Dec 16, 2017',\n", + " 'Dec 15, 2017',\n", + " 'Dec 14, 2017',\n", + " 'Dec 13, 2017',\n", + " 'Dec 12, 2017',\n", + " 'Dec 11, 2017',\n", + " 'Dec 10, 2017',\n", + " 'Dec 09, 2017',\n", + " 'Dec 08, 2017',\n", + " 'Dec 07, 2017',\n", + " 'Dec 06, 2017',\n", + " 'Dec 05, 2017',\n", + " 'Dec 04, 2017',\n", + " 'Dec 03, 2017',\n", + " 'Dec 02, 2017',\n", + " 'Dec 01, 2017',\n", + " 'Nov 30, 2017',\n", + " 'Nov 29, 2017',\n", + " 'Nov 28, 2017',\n", + " 'Nov 27, 2017',\n", + " 'Nov 26, 2017',\n", + " 'Nov 25, 2017',\n", + " 'Nov 24, 2017',\n", + " 'Nov 23, 2017',\n", + " 'Nov 22, 2017',\n", + " 'Nov 21, 2017',\n", + " 'Nov 20, 2017',\n", + " 'Nov 19, 2017',\n", + " 'Nov 18, 2017',\n", + " 'Nov 17, 2017',\n", + " 'Nov 16, 2017',\n", + " 'Nov 15, 2017',\n", + " 'Nov 14, 2017',\n", + " 'Nov 13, 2017',\n", + " 'Nov 12, 2017',\n", + " 'Nov 11, 2017',\n", + " 'Nov 10, 2017',\n", + " 'Nov 09, 2017',\n", + " 'Nov 08, 2017',\n", + " 'Nov 07, 2017',\n", + " 'Nov 06, 2017',\n", + " 'Nov 05, 2017',\n", + " 'Nov 04, 2017',\n", + " 'Nov 03, 2017',\n", + " 'Nov 02, 2017',\n", + " 'Nov 01, 2017',\n", + " 'Oct 31, 2017',\n", + " 'Oct 30, 2017',\n", + " 'Oct 29, 2017',\n", + " 'Oct 28, 2017',\n", + " 'Oct 27, 2017',\n", + " 'Oct 26, 2017',\n", + " 'Oct 25, 2017',\n", + " 'Oct 24, 2017',\n", + " 'Oct 23, 2017',\n", + " 'Oct 22, 2017',\n", + " 'Oct 21, 2017',\n", + " 'Oct 20, 2017',\n", + " 'Oct 19, 2017',\n", + " 'Oct 18, 2017',\n", + " 'Oct 17, 2017',\n", + " 'Oct 16, 2017',\n", + " 'Oct 15, 2017',\n", + " 'Oct 14, 2017',\n", + " 'Oct 13, 2017',\n", + " 'Oct 12, 2017',\n", + " 'Oct 11, 2017',\n", + " 'Oct 10, 2017',\n", + " 'Oct 09, 2017',\n", + " 'Oct 08, 2017',\n", + " 'Oct 07, 2017',\n", + " 'Oct 06, 2017',\n", + " 'Oct 05, 2017',\n", + " 'Oct 04, 2017',\n", + " 'Oct 03, 2017',\n", + " 'Oct 02, 2017',\n", + " 'Oct 01, 2017',\n", + " 'Sep 30, 2017',\n", + " 'Sep 29, 2017',\n", + " 'Sep 28, 2017',\n", + " 'Sep 27, 2017',\n", + " 'Sep 26, 2017',\n", + " 'Sep 25, 2017',\n", + " 'Sep 24, 2017',\n", + " 'Sep 23, 2017',\n", + " 'Sep 22, 2017',\n", + " 'Sep 21, 2017',\n", + " 'Sep 20, 2017',\n", + " 'Sep 19, 2017',\n", + " 'Sep 18, 2017',\n", + " 'Sep 17, 2017',\n", + " 'Sep 16, 2017',\n", + " 'Sep 15, 2017',\n", + " 'Sep 14, 2017',\n", + " 'Sep 13, 2017',\n", + " 'Sep 12, 2017',\n", + " 'Sep 11, 2017',\n", + " 'Sep 10, 2017',\n", + " 'Sep 09, 2017',\n", + " 'Sep 08, 2017',\n", + " 'Sep 07, 2017',\n", + " 'Sep 06, 2017',\n", + " 'Sep 05, 2017',\n", + " 'Sep 04, 2017',\n", + " 'Sep 03, 2017',\n", + " 'Sep 02, 2017',\n", + " 'Sep 01, 2017',\n", + " 'Aug 31, 2017',\n", + " 'Aug 30, 2017',\n", + " 'Aug 29, 2017',\n", + " 'Aug 28, 2017',\n", + " 'Aug 27, 2017',\n", + " 'Aug 26, 2017',\n", + " 'Aug 25, 2017',\n", + " 'Aug 24, 2017',\n", + " 'Aug 23, 2017',\n", + " 'Aug 22, 2017',\n", + " 'Aug 21, 2017',\n", + " 'Aug 20, 2017',\n", + " 'Aug 19, 2017',\n", + " 'Aug 18, 2017',\n", + " 'Aug 17, 2017',\n", + " 'Aug 16, 2017',\n", + " 'Aug 15, 2017',\n", + " 'Aug 14, 2017',\n", + " 'Aug 13, 2017',\n", + " 'Aug 12, 2017',\n", + " 'Aug 11, 2017',\n", + " 'Aug 10, 2017',\n", + " 'Aug 09, 2017',\n", + " 'Aug 08, 2017',\n", + " 'Aug 07, 2017',\n", + " 'Aug 06, 2017',\n", + " 'Aug 05, 2017',\n", + " 'Aug 04, 2017',\n", + " 'Aug 03, 2017',\n", + " 'Aug 02, 2017',\n", + " 'Aug 01, 2017',\n", + " 'Jul 31, 2017',\n", + " 'Jul 30, 2017',\n", + " 'Jul 29, 2017',\n", + " 'Jul 28, 2017',\n", + " 'Jul 27, 2017',\n", + " 'Jul 26, 2017',\n", + " 'Jul 25, 2017',\n", + " 'Jul 24, 2017',\n", + " 'Jul 23, 2017',\n", + " 'Jul 22, 2017',\n", + " 'Jul 21, 2017',\n", + " 'Jul 20, 2017',\n", + " 'Jul 19, 2017',\n", + " 'Jul 18, 2017',\n", + " 'Jul 17, 2017',\n", + " 'Jul 16, 2017',\n", + " 'Jul 15, 2017',\n", + " 'Jul 14, 2017',\n", + " 'Jul 13, 2017',\n", + " 'Jul 12, 2017',\n", + " 'Jul 11, 2017',\n", + " 'Jul 10, 2017',\n", + " 'Jul 09, 2017',\n", + " 'Jul 08, 2017',\n", + " 'Jul 07, 2017',\n", + " 'Jul 06, 2017',\n", + " 'Jul 05, 2017',\n", + " 'Jul 04, 2017',\n", + " 'Jul 03, 2017',\n", + " 'Jul 02, 2017',\n", + " 'Jul 01, 2017',\n", + " 'Jun 30, 2017',\n", + " 'Jun 29, 2017',\n", + " 'Jun 28, 2017',\n", + " 'Jun 27, 2017',\n", + " 'Jun 26, 2017',\n", + " 'Jun 25, 2017',\n", + " 'Jun 24, 2017',\n", + " 'Jun 23, 2017',\n", + " 'Jun 22, 2017',\n", + " 'Jun 21, 2017',\n", + " 'Jun 20, 2017',\n", + " 'Jun 19, 2017',\n", + " 'Jun 18, 2017',\n", + " 'Jun 17, 2017',\n", + " 'Jun 16, 2017',\n", + " 'Jun 15, 2017',\n", + " 'Jun 14, 2017',\n", + " 'Jun 13, 2017',\n", + " 'Jun 12, 2017',\n", + " 'Jun 11, 2017',\n", + " 'Jun 10, 2017',\n", + " 'Jun 09, 2017',\n", + " 'Jun 08, 2017',\n", + " 'Jun 07, 2017',\n", + " 'Jun 06, 2017',\n", + " 'Jun 05, 2017',\n", + " 'Jun 04, 2017',\n", + " 'Jun 03, 2017',\n", + " 'Jun 02, 2017',\n", + " 'Jun 01, 2017',\n", + " 'May 31, 2017',\n", + " 'May 30, 2017',\n", + " 'May 29, 2017',\n", + " 'May 28, 2017',\n", + " 'May 27, 2017',\n", + " 'May 26, 2017',\n", + " 'May 25, 2017',\n", + " 'May 24, 2017',\n", + " 'May 23, 2017',\n", + " 'May 22, 2017',\n", + " 'May 21, 2017',\n", + " 'May 20, 2017',\n", + " 'May 19, 2017',\n", + " 'May 18, 2017',\n", + " 'May 17, 2017',\n", + " 'May 16, 2017',\n", + " 'May 15, 2017',\n", + " 'May 14, 2017',\n", + " 'May 13, 2017',\n", + " 'May 12, 2017',\n", + " 'May 11, 2017',\n", + " 'May 10, 2017',\n", + " 'May 09, 2017',\n", + " 'May 08, 2017',\n", + " 'May 07, 2017',\n", + " 'May 06, 2017',\n", + " 'May 05, 2017',\n", + " 'May 04, 2017',\n", + " 'May 03, 2017',\n", + " 'May 02, 2017',\n", + " 'May 01, 2017',\n", + " 'Apr 30, 2017',\n", + " 'Apr 29, 2017',\n", + " 'Apr 28, 2017',\n", + " 'Apr 27, 2017',\n", + " 'Apr 26, 2017',\n", + " 'Apr 25, 2017',\n", + " 'Apr 24, 2017',\n", + " 'Apr 23, 2017',\n", + " 'Apr 22, 2017',\n", + " 'Apr 21, 2017',\n", + " 'Apr 20, 2017',\n", + " 'Apr 19, 2017',\n", + " 'Apr 18, 2017',\n", + " 'Apr 17, 2017',\n", + " 'Apr 16, 2017',\n", + " 'Apr 15, 2017',\n", + " 'Apr 14, 2017',\n", + " 'Apr 13, 2017',\n", + " 'Apr 12, 2017',\n", + " 'Apr 11, 2017',\n", + " 'Apr 10, 2017',\n", + " 'Apr 09, 2017',\n", + " 'Apr 08, 2017',\n", + " 'Apr 07, 2017',\n", + " 'Apr 06, 2017',\n", + " 'Apr 05, 2017',\n", + " 'Apr 04, 2017',\n", + " 'Apr 03, 2017',\n", + " 'Apr 02, 2017',\n", + " 'Apr 01, 2017',\n", + " 'Mar 31, 2017',\n", + " 'Mar 30, 2017',\n", + " 'Mar 29, 2017',\n", + " 'Mar 28, 2017',\n", + " 'Mar 27, 2017',\n", + " 'Mar 26, 2017',\n", + " 'Mar 25, 2017',\n", + " 'Mar 24, 2017',\n", + " 'Mar 23, 2017',\n", + " 'Mar 22, 2017',\n", + " 'Mar 21, 2017',\n", + " 'Mar 20, 2017',\n", + " 'Mar 19, 2017',\n", + " 'Mar 18, 2017',\n", + " 'Mar 17, 2017',\n", + " 'Mar 16, 2017',\n", + " 'Mar 15, 2017',\n", + " 'Mar 14, 2017',\n", + " 'Mar 13, 2017',\n", + " 'Mar 12, 2017',\n", + " 'Mar 11, 2017',\n", + " 'Mar 10, 2017',\n", + " 'Mar 09, 2017',\n", + " 'Mar 08, 2017',\n", + " 'Mar 07, 2017',\n", + " 'Mar 06, 2017',\n", + " 'Mar 05, 2017',\n", + " 'Mar 04, 2017',\n", + " 'Mar 03, 2017',\n", + " 'Mar 02, 2017',\n", + " 'Mar 01, 2017',\n", + " 'Feb 28, 2017',\n", + " 'Feb 27, 2017',\n", + " 'Feb 26, 2017',\n", + " 'Feb 25, 2017',\n", + " 'Feb 24, 2017',\n", + " 'Feb 23, 2017',\n", + " 'Feb 22, 2017',\n", + " 'Feb 21, 2017',\n", + " 'Feb 20, 2017',\n", + " 'Feb 19, 2017',\n", + " 'Feb 18, 2017',\n", + " 'Feb 17, 2017',\n", + " 'Feb 16, 2017',\n", + " 'Feb 15, 2017',\n", + " 'Feb 14, 2017',\n", + " 'Feb 13, 2017',\n", + " 'Feb 12, 2017',\n", + " 'Feb 11, 2017',\n", + " 'Feb 10, 2017',\n", + " 'Feb 09, 2017',\n", + " 'Feb 08, 2017',\n", + " 'Feb 07, 2017',\n", + " 'Feb 06, 2017',\n", + " 'Feb 05, 2017',\n", + " 'Feb 04, 2017',\n", + " 'Feb 03, 2017',\n", + " 'Feb 02, 2017',\n", + " 'Feb 01, 2017',\n", + " 'Jan 31, 2017',\n", + " 'Jan 30, 2017',\n", + " 'Jan 29, 2017',\n", + " 'Jan 28, 2017',\n", + " 'Jan 27, 2017',\n", + " 'Jan 26, 2017',\n", + " 'Jan 25, 2017',\n", + " 'Jan 24, 2017',\n", + " 'Jan 23, 2017',\n", + " 'Jan 22, 2017',\n", + " 'Jan 21, 2017',\n", + " 'Jan 20, 2017',\n", + " 'Jan 19, 2017',\n", + " 'Jan 18, 2017',\n", + " 'Jan 17, 2017',\n", + " 'Jan 16, 2017',\n", + " 'Jan 15, 2017',\n", + " 'Jan 14, 2017',\n", + " 'Jan 13, 2017',\n", + " 'Jan 12, 2017',\n", + " 'Jan 11, 2017',\n", + " 'Jan 10, 2017',\n", + " 'Jan 09, 2017',\n", + " 'Jan 08, 2017',\n", + " 'Jan 07, 2017',\n", + " 'Jan 06, 2017',\n", + " 'Jan 05, 2017',\n", + " 'Jan 04, 2017',\n", + " 'Jan 03, 2017',\n", + " 'Jan 02, 2017',\n", + " 'Jan 01, 2017',\n", + " 'Dec 31, 2016',\n", + " 'Dec 30, 2016',\n", + " 'Dec 29, 2016',\n", + " 'Dec 28, 2016',\n", + " 'Dec 27, 2016',\n", + " 'Dec 26, 2016',\n", + " 'Dec 25, 2016',\n", + " 'Dec 24, 2016',\n", + " 'Dec 23, 2016',\n", + " 'Dec 22, 2016',\n", + " 'Dec 21, 2016',\n", + " 'Dec 20, 2016',\n", + " 'Dec 19, 2016',\n", + " 'Dec 18, 2016',\n", + " 'Dec 17, 2016',\n", + " 'Dec 16, 2016',\n", + " 'Dec 15, 2016',\n", + " 'Dec 14, 2016',\n", + " 'Dec 13, 2016',\n", + " 'Dec 12, 2016',\n", + " 'Dec 11, 2016',\n", + " 'Dec 10, 2016',\n", + " 'Dec 09, 2016',\n", + " 'Dec 08, 2016',\n", + " 'Dec 07, 2016',\n", + " 'Dec 06, 2016',\n", + " 'Dec 05, 2016',\n", + " 'Dec 04, 2016',\n", + " 'Dec 03, 2016',\n", + " 'Dec 02, 2016',\n", + " 'Dec 01, 2016',\n", + " 'Nov 30, 2016',\n", + " 'Nov 29, 2016',\n", + " 'Nov 28, 2016',\n", + " 'Nov 27, 2016',\n", + " 'Nov 26, 2016',\n", + " 'Nov 25, 2016',\n", + " 'Nov 24, 2016',\n", + " 'Nov 23, 2016',\n", + " 'Nov 22, 2016',\n", + " 'Nov 21, 2016',\n", + " 'Nov 20, 2016',\n", + " 'Nov 19, 2016',\n", + " 'Nov 18, 2016',\n", + " 'Nov 17, 2016',\n", + " 'Nov 16, 2016',\n", + " 'Nov 15, 2016',\n", + " 'Nov 14, 2016',\n", + " 'Nov 13, 2016',\n", + " 'Nov 12, 2016',\n", + " 'Nov 11, 2016',\n", + " 'Nov 10, 2016',\n", + " 'Nov 09, 2016',\n", + " 'Nov 08, 2016',\n", + " 'Nov 07, 2016',\n", + " 'Nov 06, 2016',\n", + " 'Nov 05, 2016',\n", + " 'Nov 04, 2016',\n", + " 'Nov 03, 2016',\n", + " 'Nov 02, 2016',\n", + " 'Nov 01, 2016',\n", + " 'Oct 31, 2016',\n", + " 'Oct 30, 2016',\n", + " 'Oct 29, 2016',\n", + " 'Oct 28, 2016',\n", + " 'Oct 27, 2016',\n", + " 'Oct 26, 2016',\n", + " 'Oct 25, 2016',\n", + " 'Oct 24, 2016',\n", + " 'Oct 23, 2016',\n", + " 'Oct 22, 2016',\n", + " 'Oct 21, 2016',\n", + " 'Oct 20, 2016',\n", + " 'Oct 19, 2016',\n", + " 'Oct 18, 2016',\n", + " 'Oct 17, 2016',\n", + " 'Oct 16, 2016',\n", + " 'Oct 15, 2016',\n", + " 'Oct 14, 2016',\n", + " 'Oct 13, 2016',\n", + " 'Oct 12, 2016',\n", + " 'Oct 11, 2016',\n", + " 'Oct 10, 2016',\n", + " 'Oct 09, 2016',\n", + " 'Oct 08, 2016',\n", + " 'Oct 07, 2016',\n", + " 'Oct 06, 2016',\n", + " 'Oct 05, 2016',\n", + " 'Oct 04, 2016',\n", + " 'Oct 03, 2016',\n", + " 'Oct 02, 2016',\n", + " 'Oct 01, 2016',\n", + " 'Sep 30, 2016',\n", + " 'Sep 29, 2016',\n", + " 'Sep 28, 2016',\n", + " 'Sep 27, 2016',\n", + " 'Sep 26, 2016',\n", + " 'Sep 25, 2016',\n", + " 'Sep 24, 2016',\n", + " 'Sep 23, 2016',\n", + " 'Sep 22, 2016',\n", + " 'Sep 21, 2016',\n", + " 'Sep 20, 2016',\n", + " 'Sep 19, 2016',\n", + " 'Sep 18, 2016',\n", + " 'Sep 17, 2016',\n", + " 'Sep 16, 2016',\n", + " 'Sep 15, 2016',\n", + " 'Sep 14, 2016',\n", + " 'Sep 13, 2016',\n", + " 'Sep 12, 2016',\n", + " 'Sep 11, 2016',\n", + " 'Sep 10, 2016',\n", + " 'Sep 09, 2016',\n", + " 'Sep 08, 2016',\n", + " 'Sep 07, 2016',\n", + " 'Sep 06, 2016',\n", + " 'Sep 05, 2016',\n", + " 'Sep 04, 2016',\n", + " 'Sep 03, 2016',\n", + " 'Sep 02, 2016',\n", + " 'Sep 01, 2016',\n", + " 'Aug 31, 2016',\n", + " 'Aug 30, 2016',\n", + " 'Aug 29, 2016',\n", + " 'Aug 28, 2016',\n", + " 'Aug 27, 2016',\n", + " 'Aug 26, 2016',\n", + " 'Aug 25, 2016',\n", + " 'Aug 24, 2016',\n", + " 'Aug 23, 2016',\n", + " 'Aug 22, 2016',\n", + " 'Aug 21, 2016',\n", + " 'Aug 20, 2016',\n", + " 'Aug 19, 2016',\n", + " 'Aug 18, 2016',\n", + " 'Aug 17, 2016',\n", + " 'Aug 16, 2016',\n", + " 'Aug 15, 2016',\n", + " 'Aug 14, 2016',\n", + " 'Aug 13, 2016',\n", + " 'Aug 12, 2016',\n", + " 'Aug 11, 2016',\n", + " 'Aug 10, 2016',\n", + " 'Aug 09, 2016',\n", + " 'Aug 08, 2016',\n", + " 'Aug 07, 2016',\n", + " 'Aug 06, 2016',\n", + " 'Aug 05, 2016',\n", + " 'Aug 04, 2016',\n", + " 'Aug 03, 2016',\n", + " 'Aug 02, 2016',\n", + " 'Aug 01, 2016',\n", + " 'Jul 31, 2016',\n", + " 'Jul 30, 2016',\n", + " 'Jul 29, 2016',\n", + " 'Jul 28, 2016',\n", + " 'Jul 27, 2016',\n", + " 'Jul 26, 2016',\n", + " 'Jul 25, 2016',\n", + " 'Jul 24, 2016',\n", + " 'Jul 23, 2016',\n", + " 'Jul 22, 2016',\n", + " 'Jul 21, 2016',\n", + " 'Jul 20, 2016',\n", + " 'Jul 19, 2016',\n", + " 'Jul 18, 2016',\n", + " 'Jul 17, 2016',\n", + " 'Jul 16, 2016',\n", + " 'Jul 15, 2016',\n", + " 'Jul 14, 2016',\n", + " 'Jul 13, 2016',\n", + " 'Jul 12, 2016',\n", + " 'Jul 11, 2016',\n", + " 'Jul 10, 2016',\n", + " 'Jul 09, 2016',\n", + " 'Jul 08, 2016',\n", + " 'Jul 07, 2016',\n", + " 'Jul 06, 2016',\n", + " 'Jul 05, 2016',\n", + " 'Jul 04, 2016',\n", + " 'Jul 03, 2016',\n", + " 'Jul 02, 2016',\n", + " 'Jul 01, 2016',\n", + " 'Jun 30, 2016',\n", + " 'Jun 29, 2016',\n", + " 'Jun 28, 2016',\n", + " 'Jun 27, 2016',\n", + " 'Jun 26, 2016',\n", + " 'Jun 25, 2016',\n", + " 'Jun 24, 2016',\n", + " 'Jun 23, 2016',\n", + " 'Jun 22, 2016',\n", + " 'Jun 21, 2016',\n", + " 'Jun 20, 2016',\n", + " 'Jun 19, 2016',\n", + " 'Jun 18, 2016',\n", + " 'Jun 17, 2016',\n", + " 'Jun 16, 2016',\n", + " 'Jun 15, 2016',\n", + " 'Jun 14, 2016',\n", + " 'Jun 13, 2016',\n", + " 'Jun 12, 2016',\n", + " 'Jun 11, 2016',\n", + " 'Jun 10, 2016',\n", + " 'Jun 09, 2016',\n", + " 'Jun 08, 2016',\n", + " 'Jun 07, 2016',\n", + " 'Jun 06, 2016',\n", + " 'Jun 05, 2016',\n", + " 'Jun 04, 2016',\n", + " 'Jun 03, 2016',\n", + " 'Jun 02, 2016',\n", + " 'Jun 01, 2016',\n", + " 'May 31, 2016',\n", + " 'May 30, 2016',\n", + " 'May 29, 2016',\n", + " 'May 28, 2016',\n", + " 'May 27, 2016',\n", + " 'May 26, 2016',\n", + " 'May 25, 2016',\n", + " 'May 24, 2016',\n", + " 'May 23, 2016',\n", + " 'May 22, 2016',\n", + " 'May 21, 2016',\n", + " 'May 20, 2016',\n", + " 'May 19, 2016',\n", + " 'May 18, 2016',\n", + " 'May 17, 2016',\n", + " 'May 16, 2016',\n", + " 'May 15, 2016',\n", + " 'May 14, 2016',\n", + " 'May 13, 2016',\n", + " 'May 12, 2016',\n", + " 'May 11, 2016',\n", + " 'May 10, 2016',\n", + " 'May 09, 2016',\n", + " 'May 08, 2016',\n", + " 'May 07, 2016',\n", + " 'May 06, 2016',\n", + " 'May 05, 2016',\n", + " 'May 04, 2016',\n", + " 'May 03, 2016',\n", + " 'May 02, 2016',\n", + " 'May 01, 2016',\n", + " 'Apr 30, 2016',\n", + " 'Apr 29, 2016',\n", + " 'Apr 28, 2016',\n", + " 'Apr 27, 2016',\n", + " 'Apr 26, 2016',\n", + " 'Apr 25, 2016',\n", + " 'Apr 24, 2016',\n", + " 'Apr 23, 2016',\n", + " 'Apr 22, 2016',\n", + " 'Apr 21, 2016',\n", + " 'Apr 20, 2016',\n", + " 'Apr 19, 2016',\n", + " 'Apr 18, 2016',\n", + " 'Apr 17, 2016',\n", + " 'Apr 16, 2016',\n", + " 'Apr 15, 2016',\n", + " 'Apr 14, 2016',\n", + " 'Apr 13, 2016',\n", + " 'Apr 12, 2016',\n", + " 'Apr 11, 2016',\n", + " 'Apr 10, 2016',\n", + " 'Apr 09, 2016',\n", + " 'Apr 08, 2016',\n", + " 'Apr 07, 2016',\n", + " 'Apr 06, 2016',\n", + " 'Apr 05, 2016',\n", + " 'Apr 04, 2016',\n", + " 'Apr 03, 2016',\n", + " 'Apr 02, 2016',\n", + " 'Apr 01, 2016',\n", + " 'Mar 31, 2016',\n", + " 'Mar 30, 2016',\n", + " 'Mar 29, 2016',\n", + " 'Mar 28, 2016',\n", + " 'Mar 27, 2016',\n", + " 'Mar 26, 2016',\n", + " 'Mar 25, 2016',\n", + " 'Mar 24, 2016',\n", + " 'Mar 23, 2016',\n", + " 'Mar 22, 2016',\n", + " 'Mar 21, 2016',\n", + " 'Mar 20, 2016',\n", + " 'Mar 19, 2016',\n", + " 'Mar 18, 2016',\n", + " 'Mar 17, 2016',\n", + " 'Mar 16, 2016',\n", + " 'Mar 15, 2016',\n", + " 'Mar 14, 2016',\n", + " 'Mar 13, 2016',\n", + " 'Mar 12, 2016',\n", + " 'Mar 11, 2016',\n", + " 'Mar 10, 2016',\n", + " 'Mar 09, 2016',\n", + " 'Mar 08, 2016',\n", + " 'Mar 07, 2016',\n", + " 'Mar 06, 2016',\n", + " 'Mar 05, 2016',\n", + " 'Mar 04, 2016',\n", + " 'Mar 03, 2016',\n", + " 'Mar 02, 2016',\n", + " 'Mar 01, 2016',\n", + " 'Feb 29, 2016',\n", + " 'Feb 28, 2016',\n", + " 'Feb 27, 2016',\n", + " 'Feb 26, 2016',\n", + " 'Feb 25, 2016',\n", + " 'Feb 24, 2016',\n", + " 'Feb 23, 2016',\n", + " 'Feb 22, 2016',\n", + " 'Feb 21, 2016',\n", + " 'Feb 20, 2016',\n", + " 'Feb 19, 2016',\n", + " 'Feb 18, 2016',\n", + " 'Feb 17, 2016',\n", + " 'Feb 16, 2016',\n", + " 'Feb 15, 2016',\n", + " 'Feb 14, 2016',\n", + " 'Feb 13, 2016',\n", + " 'Feb 12, 2016',\n", + " 'Feb 11, 2016',\n", + " 'Feb 10, 2016',\n", + " 'Feb 09, 2016',\n", + " 'Feb 08, 2016',\n", + " 'Feb 07, 2016',\n", + " 'Feb 06, 2016',\n", + " 'Feb 05, 2016',\n", + " 'Feb 04, 2016',\n", + " 'Feb 03, 2016',\n", + " 'Feb 02, 2016',\n", + " 'Feb 01, 2016',\n", + " 'Jan 31, 2016',\n", + " 'Jan 30, 2016',\n", + " 'Jan 29, 2016',\n", + " 'Jan 28, 2016',\n", + " 'Jan 27, 2016',\n", + " 'Jan 26, 2016',\n", + " 'Jan 25, 2016',\n", + " 'Jan 24, 2016',\n", + " 'Jan 23, 2016',\n", + " 'Jan 22, 2016',\n", + " 'Jan 21, 2016',\n", + " 'Jan 20, 2016',\n", + " 'Jan 19, 2016',\n", + " 'Jan 18, 2016',\n", + " 'Jan 17, 2016',\n", + " 'Jan 16, 2016',\n", + " 'Jan 15, 2016',\n", + " 'Jan 14, 2016',\n", + " 'Jan 13, 2016',\n", + " 'Jan 12, 2016',\n", + " 'Jan 11, 2016',\n", + " 'Jan 10, 2016',\n", + " 'Jan 09, 2016',\n", + " 'Jan 08, 2016',\n", + " 'Jan 07, 2016',\n", + " 'Jan 06, 2016',\n", + " 'Jan 05, 2016',\n", + " 'Jan 04, 2016',\n", + " 'Jan 03, 2016',\n", + " 'Jan 02, 2016',\n", + " 'Jan 01, 2016',\n", + " 'Dec 31, 2015',\n", + " 'Dec 30, 2015',\n", + " 'Dec 29, 2015',\n", + " 'Dec 28, 2015',\n", + " 'Dec 27, 2015',\n", + " 'Dec 26, 2015',\n", + " 'Dec 25, 2015',\n", + " 'Dec 24, 2015',\n", + " 'Dec 23, 2015',\n", + " 'Dec 22, 2015',\n", + " 'Dec 21, 2015',\n", + " 'Dec 20, 2015',\n", + " 'Dec 19, 2015',\n", + " 'Dec 18, 2015',\n", + " 'Dec 17, 2015',\n", + " 'Dec 16, 2015',\n", + " 'Dec 15, 2015',\n", + " 'Dec 14, 2015',\n", + " 'Dec 13, 2015',\n", + " 'Dec 12, 2015',\n", + " 'Dec 11, 2015',\n", + " 'Dec 10, 2015',\n", + " 'Dec 09, 2015',\n", + " 'Dec 08, 2015',\n", + " 'Dec 07, 2015',\n", + " 'Dec 06, 2015',\n", + " 'Dec 05, 2015',\n", + " 'Dec 04, 2015',\n", + " 'Dec 03, 2015',\n", + " 'Dec 02, 2015',\n", + " 'Dec 01, 2015',\n", + " 'Nov 30, 2015',\n", + " 'Nov 29, 2015',\n", + " 'Nov 28, 2015',\n", + " 'Nov 27, 2015',\n", + " 'Nov 26, 2015',\n", + " 'Nov 25, 2015',\n", + " 'Nov 24, 2015',\n", + " 'Nov 23, 2015',\n", + " 'Nov 22, 2015',\n", + " 'Nov 21, 2015',\n", + " 'Nov 20, 2015',\n", + " 'Nov 19, 2015',\n", + " 'Nov 18, 2015',\n", + " 'Nov 17, 2015',\n", + " 'Nov 16, 2015',\n", + " 'Nov 15, 2015',\n", + " 'Nov 14, 2015',\n", + " 'Nov 13, 2015',\n", + " 'Nov 12, 2015',\n", + " 'Nov 11, 2015',\n", + " 'Nov 10, 2015',\n", + " 'Nov 09, 2015',\n", + " 'Nov 08, 2015',\n", + " 'Nov 07, 2015',\n", + " 'Nov 06, 2015',\n", + " 'Nov 05, 2015',\n", + " 'Nov 04, 2015',\n", + " 'Nov 03, 2015',\n", + " 'Nov 02, 2015',\n", + " 'Nov 01, 2015',\n", + " 'Oct 31, 2015',\n", + " 'Oct 30, 2015',\n", + " 'Oct 29, 2015',\n", + " 'Oct 28, 2015',\n", + " 'Oct 27, 2015',\n", + " 'Oct 26, 2015',\n", + " 'Oct 25, 2015',\n", + " 'Oct 24, 2015',\n", + " 'Oct 23, 2015',\n", + " 'Oct 22, 2015',\n", + " 'Oct 21, 2015',\n", + " 'Oct 20, 2015',\n", + " 'Oct 19, 2015',\n", + " 'Oct 18, 2015',\n", + " 'Oct 17, 2015',\n", + " 'Oct 16, 2015',\n", + " 'Oct 15, 2015',\n", + " 'Oct 14, 2015',\n", + " 'Oct 13, 2015',\n", + " 'Oct 12, 2015',\n", + " 'Oct 11, 2015',\n", + " 'Oct 10, 2015',\n", + " 'Oct 09, 2015',\n", + " 'Oct 08, 2015',\n", + " 'Oct 07, 2015',\n", + " 'Oct 06, 2015',\n", + " 'Oct 05, 2015',\n", + " 'Oct 04, 2015',\n", + " 'Oct 03, 2015',\n", + " 'Oct 02, 2015',\n", + " 'Oct 01, 2015',\n", + " 'Sep 30, 2015',\n", + " 'Sep 29, 2015',\n", + " 'Sep 28, 2015',\n", + " 'Sep 27, 2015',\n", + " 'Sep 26, 2015',\n", + " 'Sep 25, 2015',\n", + " 'Sep 24, 2015',\n", + " 'Sep 23, 2015',\n", + " 'Sep 22, 2015',\n", + " 'Sep 21, 2015',\n", + " 'Sep 20, 2015',\n", + " 'Sep 19, 2015',\n", + " 'Sep 18, 2015',\n", + " 'Sep 17, 2015',\n", + " 'Sep 16, 2015',\n", + " 'Sep 15, 2015',\n", + " 'Sep 14, 2015',\n", + " 'Sep 13, 2015',\n", + " 'Sep 12, 2015',\n", + " 'Sep 11, 2015',\n", + " 'Sep 10, 2015',\n", + " 'Sep 09, 2015',\n", + " 'Sep 08, 2015',\n", + " 'Sep 07, 2015',\n", + " 'Sep 06, 2015',\n", + " 'Sep 05, 2015',\n", + " 'Sep 04, 2015',\n", + " 'Sep 03, 2015',\n", + " 'Sep 02, 2015',\n", + " 'Sep 01, 2015',\n", + " 'Aug 31, 2015',\n", + " 'Aug 30, 2015',\n", + " 'Aug 29, 2015',\n", + " 'Aug 28, 2015',\n", + " 'Aug 27, 2015',\n", + " 'Aug 26, 2015',\n", + " 'Aug 25, 2015',\n", + " 'Aug 24, 2015',\n", + " 'Aug 23, 2015',\n", + " 'Aug 22, 2015',\n", + " 'Aug 21, 2015',\n", + " 'Aug 20, 2015',\n", + " 'Aug 19, 2015',\n", + " 'Aug 18, 2015',\n", + " 'Aug 17, 2015',\n", + " 'Aug 16, 2015',\n", + " 'Aug 15, 2015',\n", + " 'Aug 14, 2015',\n", + " 'Aug 13, 2015',\n", + " 'Aug 12, 2015',\n", + " 'Aug 11, 2015',\n", + " 'Aug 10, 2015',\n", + " 'Aug 09, 2015',\n", + " 'Aug 08, 2015',\n", + " 'Aug 07, 2015',\n", + " 'Aug 06, 2015',\n", + " 'Aug 05, 2015',\n", + " 'Aug 04, 2015',\n", + " 'Aug 03, 2015',\n", + " 'Aug 02, 2015',\n", + " 'Aug 01, 2015',\n", + " 'Jul 31, 2015',\n", + " 'Jul 30, 2015',\n", + " 'Jul 29, 2015',\n", + " 'Jul 28, 2015',\n", + " 'Jul 27, 2015',\n", + " 'Jul 26, 2015',\n", + " 'Jul 25, 2015',\n", + " 'Jul 24, 2015',\n", + " 'Jul 23, 2015',\n", + " 'Jul 22, 2015',\n", + " 'Jul 21, 2015',\n", + " 'Jul 20, 2015',\n", + " 'Jul 19, 2015',\n", + " 'Jul 18, 2015',\n", + " 'Jul 17, 2015',\n", + " 'Jul 16, 2015',\n", + " 'Jul 15, 2015',\n", + " 'Jul 14, 2015',\n", + " 'Jul 13, 2015',\n", + " 'Jul 12, 2015',\n", + " 'Jul 11, 2015',\n", + " 'Jul 10, 2015',\n", + " 'Jul 09, 2015',\n", + " 'Jul 08, 2015',\n", + " 'Jul 07, 2015',\n", + " 'Jul 06, 2015',\n", + " 'Jul 05, 2015',\n", + " 'Jul 04, 2015',\n", + " 'Jul 03, 2015',\n", + " 'Jul 02, 2015',\n", + " 'Jul 01, 2015',\n", + " 'Jun 30, 2015',\n", + " 'Jun 29, 2015',\n", + " 'Jun 28, 2015',\n", + " 'Jun 27, 2015',\n", + " 'Jun 26, 2015',\n", + " 'Jun 25, 2015',\n", + " 'Jun 24, 2015',\n", + " 'Jun 23, 2015',\n", + " 'Jun 22, 2015',\n", + " 'Jun 21, 2015',\n", + " 'Jun 20, 2015',\n", + " 'Jun 19, 2015',\n", + " 'Jun 18, 2015',\n", + " 'Jun 17, 2015',\n", + " 'Jun 16, 2015',\n", + " 'Jun 15, 2015',\n", + " 'Jun 14, 2015',\n", + " 'Jun 13, 2015',\n", + " 'Jun 12, 2015',\n", + " 'Jun 11, 2015',\n", + " 'Jun 10, 2015',\n", + " 'Jun 09, 2015',\n", + " 'Jun 08, 2015',\n", + " 'Jun 07, 2015',\n", + " 'Jun 06, 2015',\n", + " 'Jun 05, 2015',\n", + " 'Jun 04, 2015',\n", + " 'Jun 03, 2015',\n", + " 'Jun 02, 2015',\n", + " 'Jun 01, 2015',\n", + " 'May 31, 2015',\n", + " 'May 30, 2015',\n", + " 'May 29, 2015',\n", + " 'May 28, 2015',\n", + " ...]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "t=list(test.Date.values)\n", "t" @@ -422,11 +2685,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": { "scrolled": true }, - "outputs": [], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'numpy.str_' object has no attribute 'toordinal'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdates\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mdates\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdatesNew\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdate2num\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mt\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py\u001b[0m in \u001b[0;36mdate2num\u001b[0;34m(d)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 395\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 396\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_to_ordinalf_np_vectorized\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 397\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 398\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2574\u001b[0m \u001b[0mvargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0m_n\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_n\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnames\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2575\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2576\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_vectorize_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2577\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2578\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_ufunc_and_otypes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py\u001b[0m in \u001b[0;36m_vectorize_call\u001b[0;34m(self, func, args)\u001b[0m\n\u001b[1;32m 2644\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2645\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2646\u001b[0;31m \u001b[0mufunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0motypes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_ufunc_and_otypes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2647\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2648\u001b[0m \u001b[0;31m# Convert args to object arrays first\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py\u001b[0m in \u001b[0;36m_get_ufunc_and_otypes\u001b[0;34m(self, func, args)\u001b[0m\n\u001b[1;32m 2604\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2605\u001b[0m \u001b[0minputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marg\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2606\u001b[0;31m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2607\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2608\u001b[0m \u001b[0;31m# Performance note: profiling indicates that -- for simple\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py\u001b[0m in \u001b[0;36m_to_ordinalf\u001b[0;34m(dt)\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[0mtzi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUTC\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 244\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 245\u001b[0;31m \u001b[0mbase\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoordinal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 246\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 247\u001b[0m \u001b[0;31m# If it's sufficiently datetime-like, it will have a `date()` method\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'numpy.str_' object has no attribute 'toordinal'" + ] + } + ], "source": [ "import matplotlib.dates as dates\n", "datesNew = dates.date2num(t)" @@ -461,11 +2741,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 8, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "plt.plot(np.linspace(2,200,1),test.Open.values[-200:])" + "plt.plot(test.Date.values,test.Open.values)" ] }, { @@ -488,7 +2789,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 9, "metadata": {}, "outputs": [], "source": [ @@ -504,9 +2805,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 10, "metadata": {}, - "outputs": [], + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'numpy.str_' object has no attribute 'toordinal'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mdatees\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdates\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdate2num\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdates\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot_date\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdatees\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mopens\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py\u001b[0m in \u001b[0;36mdate2num\u001b[0;34m(d)\u001b[0m\n\u001b[1;32m 394\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 395\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0md\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 396\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_to_ordinalf_np_vectorized\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 397\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 398\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 2574\u001b[0m \u001b[0mvargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mextend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0m_n\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_n\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mnames\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2575\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2576\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_vectorize_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mvargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2577\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2578\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_get_ufunc_and_otypes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py\u001b[0m in \u001b[0;36m_vectorize_call\u001b[0;34m(self, func, args)\u001b[0m\n\u001b[1;32m 2644\u001b[0m \u001b[0mres\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2645\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2646\u001b[0;31m \u001b[0mufunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0motypes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_ufunc_and_otypes\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2647\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2648\u001b[0m \u001b[0;31m# Convert args to object arrays first\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/numpy/lib/function_base.py\u001b[0m in \u001b[0;36m_get_ufunc_and_otypes\u001b[0;34m(self, func, args)\u001b[0m\n\u001b[1;32m 2604\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2605\u001b[0m \u001b[0minputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0marg\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mflat\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0marg\u001b[0m \u001b[0;32min\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2606\u001b[0;31m \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minputs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2607\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2608\u001b[0m \u001b[0;31m# Performance note: profiling indicates that -- for simple\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/lib/python3.6/site-packages/matplotlib/dates.py\u001b[0m in \u001b[0;36m_to_ordinalf\u001b[0;34m(dt)\u001b[0m\n\u001b[1;32m 243\u001b[0m \u001b[0mtzi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mUTC\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 244\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 245\u001b[0;31m \u001b[0mbase\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtoordinal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 246\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 247\u001b[0m \u001b[0;31m# If it's sufficiently datetime-like, it will have a `date()` method\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: 'numpy.str_' object has no attribute 'toordinal'" + ] + } + ], "source": [ "import matplotlib\n", "datees = matplotlib.dates.date2num(dates)\n", @@ -515,11 +2833,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ - "plt.plot(index[-200:], opens[-200:])" + "plt.plot(index[-1600:], opens[-1600:])" ] }, { diff --git a/blockchain.png b/blockchain.png new file mode 100644 index 0000000..39a6a10 Binary files /dev/null and b/blockchain.png differ