Scadao 发表于 2019-12-14 16:13:48

CuPy是使用NVIDIA CUDA加速的开源矩阵库

CuPy使用Python提供GPU加速计算。 CuPy使用与CUDA相关的库(包括cuBLAS,cuDNN,cuRand,cuSolver,cuSPARSE,cuFFT和NCCL)来充分利用GPU架构。


该图显示了CuPy在NumPy上的提速。他们中的大多数人都可以直接使用CuPy在GPU上执行良好。 CuPy将某些操作的速度提高了100倍以上。


data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcYAAAGNCAYAAACL/dGGAAAgAElEQVR4Xu19C5gcVZX/uVXdM5OEwEyCrAsRFRZRfK4vHrrrriggsopACIIIJNPVk+AIAfSv6IaHL5RHWEfIdNUQ2VV5GECNygLqur4QFFfdFXZFXRWBjUqmBwgwj+66/+80t4ZKpbururqq6zG//j4/THLvrXt/59zzu+fec88VhB8QAAJAAAgAASAwj4AAFkAACAABIAAEgMAzCIAYoQ1AAAgAASAABFwIgBihDkAACAABIAAEQIzQASAABIAAEAACzRGAxwjNAAJAAAgAASAAjxE6AASAABAAAkAAHiN0AAgAASAABICALwLYSvWFCAWAABAAAkBgISEAYlxI0sZYgQAQAAJAwBcBEKMvRLsWKJVKG4QQF7n+5UbTNE/ya2pkZGQf27bvJKJ93WWllBdYlnWxX/00/LtrDD8MMuY09LlVHwzDuIGIVkkpT7As62Yup/7uUE3TDhsfH38oiv5HKXenLSnlOU6fvfoopfzBwMDA0WNjY49123/DMA4WQqypVCpGJ22pPp1DREeapnm3u26pVDpeCHGT+rtAc6eTb/vJ2/vvbvnzv7nl5f03xoOIbieiPTxzuKFDzti4nq7rdwWd7x4ZPtoMN+d77frn/j6XF0JcEaUuRyGHLLQBYuxQSspwHuUorstQ/cHPGDUjFW97HXan58VzSozzRBIzMc4vJsLKXRnQNY6x87YzOjq6+/T09K2sGH766Kc83ci6HTGGHbtff/3+vZlsm/1dO+J2iFFKeQUvZh28hRDPYZnU6/VDmPQ9xDgvdxdxzS+GXW2ucchUStnSnrTrXzNillJek5WFt58Me/XvIMYOkPZOimZV3YqpVpDsXTZWzpqmPahWkG4D6axAr5JSvsFt0HxW3W6v9QHHULomzY3sDXlX5Z5JNV+Py7lXrW6vw71K5r9nI0BEjTG0G6/6Nq+u2Us+jFfZ7bwZ72rcWa17jZcXl2b95m8zQQghnJU993kn78XxGLms47W7v2Xb9gr2Dhwj2MIbuFdKubsQ4nVE9ACXFUJc6W6zxYKoY7l722mlj+6/HxgYuNJNlHNzc0vb6GADK8Z9YGDgGwo/Hhf/XWPxMD09/WaXt7eT/rjwZI/HkflOmHu9WyHEqbZtj3jl5Jorjd0VRz4uDHxx987PFiQ4Pz8dz9Ypx+TkEJ6ze9AM8yZeWkti5D410WfHgw7kPbfrn3c+xrHQ68BkZrYoiLED0bUjKqeZsMTIBlVtfTRItL+//79brfzdk1PX9Wvchs5NjIq4GgTKxk4I8aBj6L0G0zF43pVuf3+/oQzkTitiImpM4iDEKKX8hduoNts69hocN9ZSyhVCiGua4RKg3y9ptS3l8lx4y1Hy4sK27cuJqLGVGpAYyeMpNAhkZmbGJKLGzkK7BVFIua9xLboasnW2VVmH3ATqyM9ZcHmJsR3u3n63I1yXHC5wdEsI0RR7t8fo6Lm7rHcB0GJB4ou7dws3iMfo/raUcovj/bm22hsLGmexpBaUDWJjOag53JYYmyzs5reW/bbB/frXZD5y242548WjA9O34IqCGDsQeUzEyOdcDQPqeFjK62BPa6cJ6HTV48HtdD7pnRieiXSf473yJHFvy7kJgVfHbESYkHRd32Db9i2OIWhntLwesns87m0nt1fsWlDstHJ3f0fTtHOZ/HlLSAixEy5eY+fq96p6vc5ec8stRdfKu+HlMWELIQ7qkBgbnnMnBOPyGjqSe7tFiNvoubdTdV3fCQcvMXp1uhnurt2BnWTUTn+CbqU2WwB6x+kejxBiWJ3x+eLeghidXRRH9by7JvMk5zoj3GWHJ+xWqmtnZqfzV/fuheO1uxc7zRbezfrXghgbRN2svQ7M34IqCmLsQNwREqM3+KahtK7zigellDuRWIttoflJ7nhh7YhRteE1DI/atn2cEOJitR3o/hQbjTNt2/583MToJbgm24YNohZC3EVEbBznvepm/eZ/l1JOBCFGl6fIROX2HoNspfoaaO+2oAOwY6yCyt3ZhnTqef/stOs+9/Yjxna4OwsShxi9xlt9rxEoQkTrnQUFL6y6JMadCDhiYmzsBrjOAncKVGq20HKPq0XwzXywTAvvdqdAtVbYtDvmcC2KeSE9HxzWalvWpSMO0WcmwK8DkxxbURBjB9DGccbo/byzCufzjXZG3buCJKLG5FTkMb9CbOcxur/d6izCZQhuY88oCY/RtWXLW0KPSSkfcAJLWvU7SBBKs/NEFW3Y8CICbqV2QowtI3mDyL3J+dFO23qqjYOcLUDe7vbbSu3GY2yiP/NBaV0S47zX5l4w8vci8Bi9pMJRyQ3SaBVxqjy4ncq4t1LdOAQhRr9zv1bBSUH6B4+xA4PepiiIsUMcvUrrjUqdmZl5kfcczzk/aXbW1MQTnA8Hb3WNo90Bu3clPD09fXacZ4zNzp2c8aqx8dbno55V+i6r13Zbkbwl5glRn6/fyhB5CaHZ1YUW3gF71A1i5P67z28dj6lZxGGnW6lh5N5sYebWR49nOu/FuMfp6IdzRtxJv+M8Y3QvAgOeMfouSPzOGF1E4+jnGmeuONuO7eZ3s0hPP2L0kyH3uRVxNtsh8PbPfebuuj6CM8YO7TyIsUPAuLjfvbFW0XlBiNG1rdYyaKRFH3a6R0VEHETCW44cCboLkahhB4pK9ZDSTlGp3E6r8TrEKIT4opSSt9t4C7ll5J1nRbzLXa5WK+l2UalBt1J5+881zkZgh2tL0Lmz2oj0jYMYg8i91fWJJvdqedhuYnQvtprJz303byfcXbJt6IqLWPkbrfSnZVSqS18a3mWrIDPv3U9na9AvMjeAp7rTHVUXdnyO/hfeKFRvfx2d7tBjbHtv2SX7RgSwW3aOefJeC3HfsXXPC++OkZ93GsL8LYgqIMaUiTnIFmC7Lnu9ySSHF2TrOcn+penbQeXOhpyIjvC7o8h6wOd+fuXShAH6Ei0CLp26A/cYO8MWxNgZXrGWdq1e22a+ADHGKoaeN96J3Jtlvul5h/HBTCCgFsnIfBNCWiDGEKChChAAAkAACOQXARBjfmWLkQEBIAAEgEAIBECMIUBDFSAABIAAEMgvAiDG/MoWIwMCQAAIAIEQCIAYQ4CGKkAACAABIJBfBECM+ZUtRgYEgAAQAAIhEAAxhgANVYAAEAACQCC/CIAY8ytbjAwIAAEgAARCIABiDAEaqgABIAAEgEB+EQAx5le2GBkQAAJAAAiEQADEGAI0VAECQAAIAIH8IgBizK9sMTIgAASAABAIgQCIMQRoqAIEgAAQAAL5RQDEmF/ZYmRAAAgAASAQAgEQYwjQUAUIAAEgAATyiwCIMb+yxciAABAAAkAgBAIgxhCgoQoQAAJAAAjkFwEQY35li5EBASAABIBACARAjCFAQxUgAASAABDILwIgxs5lu7TzKonVeIqIaol9HR+OAgHoWxQoog0g0AECIMYOwFJF9yKiQufVEqnxJxBjIrhH+VHoW5Rooi0gEAABEGMAkDxF9lpdvH/VkDjg051X7U2NGXr05s/MDr6XiFoS4+jo6O7T09O3CiEeNE3zpN707OmvGIZxMBHdTkR78J+llD8YGBg4emxs7LFSqXQ8Ea13/txNv1xjfB0RPUpER5qmeTe3OTIyso9t23cS0b7u7zfp343N8OF+CiFuIqKd/t3VLmmadpht2yvcY1XjeYD/bXx8/KEA49vrpZ+/9e2LDjjQDFA2kSL1J5/8+k/+/qUG9G1+Tu2ib45gXDr5Erc+8r+XSqUNQoiLpJQXWJZ1sWEYNxDRKrdQnX9LRNAL6KMgxs6FnQtidAiIh6/r+qqARrpztDw1HFKUUq6xLOtmRUQ3SClXREGG7s8pw0JMbIrIrmBCKhaLj/OigIjucBmgRjmH2KSU5wwMDHzDXc7dtmpvIxOupmlHOfh5/14R4xYiWumQsrtfAQDNBTEuZH1zzy0XMQ5KKb/I+sc6wH8/MzPDRPgSKeWEVy9dC7addCmA/qBICARAjJ2DlgtiZOMspdwihFgppbzPmaAuw767lPIXmqaNSyk/TkSNPzN5TU9Pn80rWwVdwxNjYnN7eooAL+jv7z+JPUEHZjdBOQZDlW1MeKcdXdc32LZ9i+NVuj1L/v/K2+WVOXucJzgk612Zu8iPvdTGNzRNe9C27duIaJjJyt0nRWQTDtnxKp6IjvCStmPohRCPSSmvcZM8ET3ImHAbzYixQ684F8S4kPXNWRA5BKh09y4iOsiZH858Ufp8VzNidEiViDZ69b1zM4Ya7RAAMXauH5knRvaK6vX6jewpKsM9T2CKJK5xtnla/LnheTGxOd6PpmnnesiGCYUcwnVgdm018jbq/NammzibbaUqw9og8Cae4Hx/PV7dPKlNT0+/WQjR6LeX/JoRs3tr16nnXvm7iJEN3ArH22Rc2XAJIS5sRYzusQRQv8wT40LXt2YeIy/ShBDDrsVZY74IIQ5yFqrenQWlp/OLtgC6gyIhEQAxdg5c5olRkR1v7Z3k2sK5yOs98YRu5uF5yYcnM7fleAW8Bam2hRptNoPYOU9xe53O973E6DYQ7q1OXjX7raJd5zY7nWO6yc5DjEe6PcRW43eIUdM0PhNiwj2qXq8fwh44EyMRNQxYszNG75mmjwpmnhgXur655evWV2e3ZmBg4EpnvrDue4jRe8a4y+5I5yYMNfwQADH6IbTrv2eeGNsd6nu3+bx/9gS0OOg0AlAcA6iIYZdt1FZQu8mHycVNjN6tTHfQjLs9b1CCywA554jzW6mq3vzKuxuPUXndFhHx1nLDqAkhOLDITYw7nQv5LTY8OGWeGBe6vjXbSlVzhD1E70Lq8lYeo1enOzddqBEUARBjUKSeKZdpYnSTgCsYhEmjYcibENNOUaJeolIeWcNjdLbMNE27z7btB73bqAyhqr/TFqsiu8aZn/uskrc/vd6ju2wrb5S/4x2n26joun5NVGeMzpmrpmkrpJSH8hjcxNvsjDHoGFQ7mSZG6NvTAV6O+XB7jLqu38Vb7zxfpJS7u3ZddjkycOq751vnpgs1giIAYgyKVE6IsVkwiXt7Ug1z/rpEEw9y/txubm5uqbry8EPnSoPyDo5qdn7YjLAcshRCrOHzP4eYVdDPx5pda3BvrTaLcuU2W3iMt3M0rDfatNVWrV9UqkPa6vzyJmeLdGZm5kXwGJ/WJOjbM9HXHr3c6OiXEOJ1TgBZq7P0ZjrduelCjaAIgBiDIpUDYmy3FaMm5AomJNu2R1rdK/RsZT7A52sc6dnJPUTvPUYimr/X5wpq+Q4Rne8RT6Occ92CDQr/e6u7Xd5tV3e5KO4xOsToLBBUdCoHB8174C3uMe50p9JHBTPrMULfnr6P6Jav90xceYCNRaETzNbujNF7b7Zz84UaQRAAMQZBaecymd5K7Xy4ndXoMOKys8YXZunMEmMvxAV96wXKC+8bIMbOZQ5ibIKZayVMUV/U71xEuaoBYoS+5UqhszAYEGPnUgIxdo4ZaoRHAMQYHjvUBAKhEAAxdg4bkjp3jhlqhEcA+hYeO9QEAqEQADF2DhueAeocM9QIjwD0LTx2qAkEQiEAYgwFGyoBASAABIBAXhEAMeZVshgXEAACQAAIhEKgp8TYJJ3XTve5XKmjAr+dF2rUqAQEgAAQAAJAoAUCPSXGdtnh3Rky3C8htHs7D1IFAkAACAABIBA1Aj0lxnbv0Lkv6rpTlHE+wVZ5LXv1uG7UoKM9IAAEgAAQSC8CvSbGDa4HbudTeXnTJLlTSblfKlApk+ZfSWiXRDq9kKNnQAAIAAEgkGYEekqMrZI/K6/wTinlOZ439u4gontbvZ0HYkyzaqFvQAAIAIFsItBTYvRC5BBlf3+/MT09fSu/UeYlRniM2VQs9BoIAAEgkFUEEidGdyZ55/8HOWPctm3b4Vu3bn0yAPD7EtEQEf08QNm0FllEREUieiytHfTpV9b7z8PDGNKhfFmXQ9b7n5e5sJ2IZlqpdM+I0XuO6H3ANMao1P2IaBkR3ZOOeR2qF4uJqI+IpkLVTr5S1vvPCGIMyetRHuQAPUqHHrXtRc+IkXvR5H28E3jr1OlhTPcYQYzJKyKMQfIyyAOp5GEMmAvpmAvpIcaE8AAxJgS867MwBsnLIA+kkocxYC6kYy6AGLGVmrgmwhgkLoJGByCH5OUAGSQvA98e9HQr1bc38RSAxxgPrp20CmPQCVrxlYUc4sM2aMuQQVCkEiwHYkwQ/A4+nfXJlPX+w9vqQFljLpp1Xcp6//MyF7CViq3UmE2Vf/MwBv4Y9aIE5NALlNt/AzJIXga+PYDH6AtRKgpkfTJlvf95WSVDDslPZ8ggeRn49gDE6AtRKgpkfTJlvf8gxlRMg0Ynsq5LWe9/HmTgq80gRl+IUlEg65Mp6/3PizGAHJKfzpBB8jLw7QGI0ReiVBTI+mTKev9BjKmYBvAYUyKGPMzntlCCGFOiaT7dyLoiZr3/IMb0zJOs61LW+5+XuQBiRFRq4lYNxiBxEeTC28qDUcZcSMdcADGCGBPXRBiDxEUAYkyHCDIfPJSHxYmvKmAr1ReiVBTIOrFkvf95MQaQQ/LTGTJIXga+PQAx+kKUigJZn0xZ7z+IMRXTIBdeL+ZCenSpZU9AjBkQEu5upUJIMGipEEPmtyKhR+nQI5wx4owxcU2EMUhcBLnwtvLguWMupGMugBhBjIlrIoxB4iIAMaZDBJn3ePOwOPFVBWyl+kKUigJZJ5as9z8vxgBySH46QwbJy8C3ByBGX4hSUSDrkynr/QcxpmIa5MLrxVxIjy4h+IaI7nGjcF6fvJQEHdytjC6bEX/bbRsB6md9MmW9/yDGAEraoyJZ16Ws9z8vcwFnjM3OGJkYJdF5XU7m2uWzothlG0GqZ30yZb3/eTEGkEOQ2RZvGcggXnwjaX3BbqWCGCPRn6CNwBgERSrecpBDvPgGaR0yCIJSwmVAjN0JAB5jMPxgDILhFHcpyCFuhP3bhwz8MUq8BIixOxGAGIPhB2MQDKe4S0EOcSPs3z5k4I9R4iV6SoyGYXCwy+1EtAePXEp5gWVZFzsoGIZxAxGtIqJHiehI0zTv5n8bGRnZx7btO4loXynlDwYGBo4eGxt7LCB6++GMMSBS8RWDMYgP205ahhw6QSuespBBPLhG2mrPiHF0dHT3mZkZJr6LmPAUSW4hopX851KptIGIjmDSm56efrMQ4gpN0w4rFouPT09P30pEdzCJKvIk0zRPCogEiDEgUDEWgzGIEdwOmoYcOgArpqKQQUzARtlsz4jR22kmSi/hSSnvY/JzPEQp5Tm6rt9l2/ZtRDSsCPR4hzTHx8cfCgAGiDEASDEXgTGIGeCAzUMOAYGKsRhkECO4UTWdGDG6yW9gYOAbiiQ3WpZ1s5s0hRC89TqhadpRTIReTzMAECDGACDFXATGIGaAAzYPOQQEKsZikEGM4EbVdGLE6N4SdZOklxiJ6F63hwhifEb0jSQFRAd0qwyXzYpju23Dpz6MQcwAB2wecggIVIzFIIMYwY2q6USIkUlRSrnCCaJxeYjwGJtLtulkytBdTBiDqGZsd+1ADt3hF0VtyCAKFGNuo6fE6BCgEOJBb/CMIsvAZ4zbtm07fOvWrTsC4PM8FQX7c3fZM4uPbBgQy9cGqN+uCF/XeE6XbQSpvoiI+lS07nz5DI2haf+DDDxFZTCGdAgj63LIev9ZC/IwhioRzbRS6Z4SY7uI0hBRqScHnKd/RUSD3lyp5xbrnyKhnRuwjVbFmBj7u2wjSPWmq8wMjaFp/0do255BBu9XZpye/YhfmQj+HSv9CECMoImsyyHr/WcR5mEMPA47cWJ030V0d8Z9lxH3GFuajVxupWZoKzgvxiAPBi3rY8h6//MyF9qu0XrqMUawWgzTRG6jUjNELFkn9rwYAxjlMBYk2jqQQbR4xtIaiLE7WBNNCQdibAgvURl0pz49rw2j3HPId/kgZJC8DHx7AGL0hahtgUSNMogRxNih+sIodwhYDMUhgxhAjbpJEGN3iIIYg+GHrdRgOMVdCkY5boT924cM/DFKvASIsTsRgBiD4QdiDIZT3KVglONG2L99yMAfo8RLgBi7EwGIMRh+IMZgOMVdCkY5boT924cM/DFKvASIsTsRgBiD4QdiDIZT3KVglONG2L99yMAfo8RLgBi7E0GDGF//vd8PzfXXz++uKSLbltt/fMj+lzRpJ+vEkvX+s0hajqFbuXP9y2bF+6Jox6cNGOUegAwZJA9ytz0AMXaH4DwxzvbVJrtrih9upg+CGDtGEV57cMhAjMGxiqskZBAXshG2C2LsDkwQYzD8cu0xSqLzgsHQslSi5N5l33tdPevEkvX+t9w96bUixPk9EGN36IIYg+EHYmyPE4gxmB7lwSiDGIPLOrGSIMbuoAcxBsMPxAhiDKYp/qWyTixZ738eFie+WgZi9IWobQEQYzD8QIwgxmCa4l8q68SS9f6DGP11NBMlYk8izlGpCL5pqwsgRhBjVMYi68SS9f6DGKPS5ITbATEmb5RBjMnLIC8GLevEkvX+50WP2s5IbKV2x9rYSg2GH4gRxBhMU/xLZZ1Yst5/EKO/joYroR4tvo2Ihk3TvNtpJasPFWMr1VcPQIwgRl8lCVgg68SS9f6DGAMqakfFFCneSUR7ENGRDjGWSqUNRHTEwMDA0dPT028WQlyhadphxWLx8enp6VuJ6A7Lsi5W5EmmaZ4U8MPYSk3eKIMYk5dBXgxa1okl6/3Pix6lZyvVMIyDieh2KeUFQohht8fIhCelvI/JzyFPKeU5uq7fZdv2vHdZKpWOd0hzfHz8oQDkCGJM3iiDGJOXQV4MWtaJJev9z4sepYcYnZ54t1JHR0d3V17hRsuybnb9+Q4hxO1ENKFp2lFMhIpctxDRSvc2bJtRghiTN8ogxuRlkBeDlnViyXr/86JH6SdGt4foJUYiutftIYIYn5HneX3y0oykIwMxghgDbO4EKpJ1Ysl6/0GMgdQ0RCF4jM1BQxLxEMpElGg6tQwtTvJi0LJOLFnvf170KP0eI/ew0zPGbdu2Hb5169YdAUzp81Sgz8/dZc8sPrJhQCxfG6B+uyJslJ+z98rVe6w470P/02VbNLv9kY/97OiDP9OknUVEVCSix+IaQ7d996mf9f7z8HI7hphlH3XzTeUQ9UdibC/r/W85F2LELI6mq0Q006rhRO4xNruuESIq9eSAaP0VEQ0S0T3u8ucW658ioZ0bsI1WxZgY+197y91DtM+ej3TZFsm6ff6PDzvgk03aabrKjHIM3fbdp37W+99ylZwhGeRlpZ91jyvr/c+LHvE47NQTo+M1EtEqInrUfZXDdcVjXynlD/hKx9jY2E7eUxvDjOCb9qzVi61InDEmL4O8GLSsE0vW+58XPWo7IxPxGGP2TrzNgxiTN8ogxuRlkBeDlnViyXr/86JHIEYiWubdSo0yaAKZb3yXOiBGEKOvkgQskHViyXr/QYwBFTXtxeAxJm+UQYzJyyAvBi3rxJL1/udFj+AxwmNsqwM4Ywy2tMstuQcbfmpKZZ1Yst5/EGNqpkJ3HYHHmLy3kltSiXJLvjs1D1QbRjkQTLEWggxihTeaxhF80x2OeHYqGH4gxuQXJ3lZ6WedWLLe/7zoEbZSsZWKrdRg/N22VG7JPQJsetlE1okl6/0HMfZS22P8FrZSk/dWcksq2EqNceY2bzrrxJL1/oMYe67y8XwQxAhijEKzckvuUYDTwzayTixZ7z+IsYfKHuenQIwgxij0C8QYBYrdt5F1Ysl6/0GM3etwKloAMYIYo1BEEGMUKHbfRtaJJev9BzF2r8OpaAHECGKMQhFBjFGg2H0bWSeWrPcfxNi9DqeiBRAjiDEKRcwtMXIAEQk6rVuQLpsRe3XbRoD6WSeWrPcfxBhASbNQBMQIYoxCT3NNjJLovC5B6kUGpTwYZRBjl4rWi+q44N8dyrjgHww/kEryi5OWpIIrJ8GUOKJSIMaIgIyzGRBjd+iCGIPhB2IEMQbTFP9SWSeWrPc/D167r5alhhgNwziYiG4noj1Urx/QNO2w8fHxh/BQMWWdWLLe/1x7W/AYfe1klAVAjFGiGVNbqSHGUql0PBGtHxgYOHpsbOwxZ7yjo6O7T09P30pEd1iWdbFhGDfwv5mmeVJATHDGmLy3AmJMXga5JveAtiANxUCMaZCCTx/SRIwbhBAHeQlPeYu3EdGwaZp3M4EKIa5wvMkAGIMYkzfKIMbkZQBiDGAselAExNgDkLv9RGqIUXmCq5wBSSlPsCzrZrXFOqFp2lG8rar+vIWIVjJRBgAAxJi8UQYxJi8DEGMAY9GDIiDGHoDc7SdSQYze7VLlFV5DREdKKVe4PUQQ4zMiz9DZEIgRxNitrXLqZ51Yst7/lgusqASchnZSQYxeINxEKYTggBx4jER9RDTlxgrE2EAj0ftzGZIBPMY0WFxqHkiXjq4F7kUeyL3tYNNOjBt1Xb/Ltu1dzhi3bdt2+NatWx8PIMrnq0jXn7nLnll85IIBsXxtgPrtirBRXrHPqtIe+5zzgV922RbNbn/kYz87+uCxJu0soqeJ8dG4xtBt333qZ73/PDyMwd/rXRGzHrWUQw++G9UnmupRVI33qJ08jIGdjJlWeKWCGNsF2BSLxcdbRKWeElAJ9ieiQSL6ibv8OcW5TwlROCdgG62KMTEOvOq6bw/p++/75y7bIlm3z//xYQd8qkk7vEIreokxyjF023ef+lnvv+NtZVkGuR5DzPobZfNN50KUH+hBW3kYA8NUTzUxcuc89xjZMzrSCa7BPUbcY2wz2bGVGtwS5vasNzgEiZfMwzZkHsbQVhFS4THGrKqISvXfAmNPKM5fbg0yzhjn1SbRBUqcyhtx23kglTyMAcRIRMuI6B43ElEatNd/7/dDs321yW4nkJT0wR8fsv8lLbZSEXzTHOBEDXKUetSt/j3RkwQAACAASURBVASon9sFSoCxp6VIHkglD2MAMYIY2+pAL4gltwYZxAiPsUPGzQOp5GEM0RGjc41CCPE6p1Up5Q+8adw6VJS4i2MrFVupUegYyD15PeIeZN0oZ73/eZCBrz0IfMboIsUHnbRtrvuGlGJyBDEmb9BAKsnLoKVBy4PX62vp0lMAxJgeWbTsSWBi5MjQer1+o67rqzg1m9Niq79P0dhBjMkbZRBj8jIAMabDKIEY0yGH6LZSm72AwTlOpZT38csXKR0viDF5owxiTF4GIMZ0GCgQYzrkEA0xuu8Stmlx/g3FFI0dxJi8UQYxJi8DEGM6jBKIMR1yiIYYMzCWVl0EMSZvlEGMycsAxJgOIwZiTIccQIy4rtFWB3BdI9hEBbmnmNyDiTAVpUCMqRBD+050FHxj2/adRLRvkybTuIXqdBMeY/IGDaSSvAzgMabDIIMY0yGHeD1GFXyzhR8VTul4QYzJG2UQY/IyADGmw0CBGNMhh3iJEdc1RBEp4Xw1HcQIYvRVkoAFsk4sWe9/ywVWQPlloljgrdRWo+ErHEKIKzRNO8x9vzFFo4fHmLxRBjEmLwN4jOkwSiDGdMghGo+x3XUNKeUJ2EpFEvE2mgZiBDFGZQ6zTixZ7z88xqg0OeF24DEmb5RBjMnLAB5jwoZIfR7EmA45dOcxZvhivzNwEGPyRhnEmLwMQIzpMMggxnTIoTtidNdulv5NnTGudBKLp3DMIMbkjTKIMXkZgBjTYZxAjOmQQzTEiCTiTXFsXI5HVKqvpoMYQYy+ShKwQNaJJev9xxmjV1HZYySiVVLKCzhpuPNnIroRHiOCb9oYNhAjiDEg7/kWyzqxZL3/IMZmKqq2Tm9S//YoER1pmubdvuqcXAFspSZvlEGMycsAW6nJ2SD3l0GM6ZBDNFupGRhLqy6CGJM3yiDG5GUAYkyHEQMxpkMOIEYkEW+rA0giHmyigtxTTO7BRJiKUiDGVIihfSc6ynwzOjq6+/T09K1CiNdJKX8gpSxpmvZFIhpO8XYqPMbkDRpIJXkZwGNMh0EGMaZDDtF4jC5SfJCINhLRBf39/SdNT0+fTURHDAwMHD02NvZY2DF7zi7JnU3HfZeSCbnDb4EYkzfKIMbkZQBiDGucoq0HYowWz1haC+wxuq9r2La9wiHGubm5pfV6/UZd11eFzZXqvQrizr9aLBYfZy+ViO5wRcJSB1GwIMbkjTKIMXkZgBhjMaEdNwpi7Biy3lcITIzcNXXBf4WmaRdJKdfbtn2upmm3EdEPOyAq31E6HqKU8hxd1++ybZu/0diuDZG0HMSYvFEGMSYvAxCjr+XpSQEQY09g7u4jHREjf6rJlmfjTmN33di5tmEYBxPRFiJaqf5lQtO0o9gjdf9bwHNNEGPyRhnEmLwMQIxRGqnwbYEYw2PXs5odE2PcPXPOMp2tU6+HCGJ8RgLn9clLJdF5XcoEUanBAAS5p5jcg4kwFaVAjKkQQ/tOpIoY3QE+ztasIkJ4jER9RDTlFieIsYFGL4g9195WhvSopRwyYGudLoIYMyCsjogxzusarnPFa9xbs+rvdzlj3LZt2+Fbt24NEgXLW6lLiejnbnm8pzh5Qb8YWteljNgo77Pi5PIee5/1/vu7bIvmJrd/9Kdvee1Yk3YWEVGRiHYab5Rj6LbvPvWz3n8eHsbg7zHuE7MetZRDD74b1Sea6lFUjfeonTyMgbO2zbTCKzAxxnldw7t96u6s999UflaOSn1XQCV4ARHtTkT3uMufU5z7pBCFcwK20aoYE+Oiv95861DxxQf+qcu2yJ6rfeie1x/4qSbtNF1lRjmGbvvuUz/r/W/pqWRIBrkeQ8z6G2Xz8BijRLO7tmpdE2Oc1zXUduntRLSHu6POXUbcY6Ssn29lvf8tSSUP25B5GEN39rGntUGMPYU73McCe4zcfK+ua4QbSstaiEptD2gvzuhAjMnLINfkHqXN+Ktbf9UfVXu/PvoA73YdiDEqcGNspyNi5H704rpGxOMFMSZvlEGMycsAxBjQsMT8viqIMaAckizWMTEm2dmQ3wYxJm+UQYzJywDEGNCAgBh9gcoDubcdZEfE6I5KdVoNkbvUF/WIC4AYkzfKIMbkZQBiDGhYkiBGdc57ZsAutix2+azguRb3D8ToINzsjqErYpQ6TOwdt+Dc7YMYkzfKIMbkZQBiDGh1EiTGLCTraKlHAeHNRLHAHqM30bczulZ/n6LRgxiTN8ogxuRlAGIMaJRAjL5AwWN0Q8SBN0S03u0dqkjV+6LOl+ormuAFQIzJG2UQY/IyADEGtBkgRl+gQIxuz9C27TuJaN82sD2gadphYZ+f8hVHuAIgxuSNMogxeRmAGAPaDxCjL1AgRl+I0l8AxJi8UQYxJi8DEGNAWwVi9AUKxOgLUfoLgBiTN8ogxuRlAGIMaKtAjL5AgRgZIlfKttv41QtPCrc0bp+6JQtiTN4ogxiTlwGI0dfeP10AxOgLFIhREeMNUspGgI3risZGy7JuLpVKG4QQBznPRPlC2vsCIMbkjTKIMXkZgBgD2h4Qoy9QIEbvdQzv+4i4riGKUU0kIu0DPzr4+Z9sopZZJ5as9z/XpIIk4jvPuKjms5T0wR8fsv8lnvmc27ngS6cZKuB7j9FLfOwhEtERzpUNEGN0xNhiIuXBKOfWGOSBVPIwhihtLojRF014jO6tVF3Xr+ErG1LK+ceEXe8jnuQLZzIFMrOVCo8xlIL04nWQPCxOcj2GUJrTohKI0RdNECND5H4PkYhu5PNE19/9MMXni9x9EGPy51vwGJOXAYjR194/XQDE6AsUiNEXoogLeM8wvcQcImk5iDF5owxiTF4GIMaAtgrE6AsUiNEXoggLuK6BPOpk0HFFwd7BUbEhtm4zQ4w4YwylTNhKDQ5bbhcowSHwLwli9MUIxOgLUUQF1API10gpLxBCDGuadhSnllNbtrcR0bBpmnercld0kHouM8SIM8ZQygRiDA5bbonxnAH598FhaF3yimnxbRCjL5IgRl+IIi7g3Upt8ectRLSSiTLA50GMyW/j5dYg5yGiE2OYnyCNRRaI0deqghh9IYq4gJcIvR6i+ncQIxFlyKCBGJNfnOT6jDHKuQBi9DXqIEZfiCIuAI8RF/w7VClspQYHDAuUAAsUEKOvQoEYfSGKuECzzDq2be9yxrht27bDt27d+miAz+9PREuJ6Gfusu8pTl7YL4bWBajfrggb5b1XnFwe3Pus99/fZVs0N7n9oz99y2s/3aSdRUTUR0Q7jTfKMXTbd5/6We8/Dw9j8CeVvWPWo57IIeb5nFs96oHso/zEY0Q006pB38w3UfYkSFteYmwTlXpqkPaI6AAi2p2IfuIuv744+0lNFNcHbKNVMSbGxS/bdMvQwCtf/scu2yJ7rvahe15/4KVN2mm6QotyDN323ad+1vvPw8MY/ImRMYr7F7scYp7Psfc/bgG0mgs9+G7Un5jLLDFyx90JBnCP8RlRRnmuErXGedrDFp4/qRRjlkFLcs+QHvVkDNhK9dVEbKX6QpT+ApmJSsU9xlDKhDPG4LBhgRJggQJi9FUoEKMvROkvkBlixD3GUMoEYgwOG4gRxBhcW1qXBDFGgWLCbYAYAxiDmGUEg5y8DHqyDRmzHvVkDPAYfaUIYvSFKP0FQIzJG2UQY/Iy6BmpzBXrHEHd9e/uQ/ZrFtAWuy6BGH1FB2L0hSj9BTJDjDhjDKVM2EoNDlvWSaVn5D7bV5sMDmvzkniouFsEk6ufuusaMUCRGWLEGWMo6YMYg8MGYgzgucNj9FUoeIy+EKW/QGaIER5jKGUCMQaHDcQIYgyuLa1LghijQDHhNjJDjPAYQ2kKiDE4bCBGEGNwbQExRoFVatsAMQYwBjFLL3aDHHP/e3K2lYcxxLwN2RM5xDyG3M6FHuhvzz6BM8buoI70mRp4jKGEAY8xOGyxG+WYSQXEmPwit6UMgqth+kuCGLuTUaTEiDPGUMIAMQaHDcQYgFhiJvfYZRBcHUKXxBljaOjSUxFbqQGMQcziyq0xQJ7Rec3JzSIRxOhrDUCMvhClv0BmiBEeYyhlgscYHLbYFygxkwq2UpNf5GIrNfh8S3XJzBAjzhhD6RGIMThsIMYAxBIzuccug+DqELokPMbQ0KWnIogxgDGIWVy5NQbYSsVWaqu5g8w3MVuVGJtH8E134EZ6rgKPMZQw4DEGhy32BUrM3ha2UpNf5GIrNfh8S3VJeIzJT6bYDXIPNBBjCKBHIMZnQILH2INZGdMnMuExlkqlDUKIi1wY3Gia5kkBMQExBjBoAbEMWwykkrwM8uBt5WEMuZ0LYY1DGutlghgNw7hBSnmfZVkXhwAxM8SIqNQQ0iXCVmpw2GI3yvAY4TEGV8f0lkw9MY6Oju4+PT19KxFttCzr5hBQZoYYccYYQrogxk5AAzEG8NxjJvfYZdCJQoQsi6jUkMBFVm1kZGQf27bvJKJ9VaMPaJp22Pj4+EMBPwJiDG4M7g2IactiUtKnf3zI/pd4CuTWGCAqdV7SkQaiJbl7AmL0tQIgRl+IYi5gGMbBRLSFiFaapnm32lZdMTAwcPTY2NhjAT4PYgxOjHictTVWsZM7G+S5/vr6ADrdtohtyyebLE7ycD6XhzHErkfd6k+A+iDGACD1tIhDlI8//vip119//X0BPr4/ES0lop+5y76nOHlhvxhaF6B+uyK8St57xcnlwb3Pev/9XbZFc5PbP/rTt7z2003aWURERSLaaSGQoTHE3v9usQ9QP/YxQI+ekQLmQgCN3LVIwx6FqtlZpaZzobMmEi/NtnSmVS9Sf8bo7bgixokdO3Ycc9111z0cAN4DiWg3IvqJu+z64uwnNVHsdnXOirj4ZZtuGRp45cv/GKAv7Vf6c7UP3fP6Ay9tUqjpCi1DY4i9/91iH6B+7GOAHj0jBRtzIYBK7lKkYY/CVOywTl48xrnMEmOpVDqeiNY7W6e8lcqDyeN1DZyrdDg9ny6em6jUmM+2GKvYt/Ewhmd0GPcYQ83nVFTKhMfovscopfxBB+eLDDLOGNurWi+CJmI3yD2YTbGPAaTiSyp5IPfY9SipudCD7/bsE5kgxi7RADGCGLtUoUb12A0aiBHE2KWiJrp70mXfU1UdxNidOCL1tpK8xxizUY6dVLoTY6DasY8hZhmA3P3F3Iv5HLse+Q+z6xJ5OWNsCQSIsTsd6cVEyoNBy60xiPIeI4gxXx5ji4VubudCd6Y0XbVBjN3JA8TowW+hBRyAGOcVINK5kIdANBBjd8Y1ydogxu7QhzEAMV4qic7rTo2ejqyFxwiPMQo96rKNINWxlRoEpZSXQfBNewH1wijndvsIHiM8xtbTS/vAjw5+/ic9/57buZByHuioe/AYO4Jrl8K9IBWcMQYg9u7EGKh27AYNHiM8xkCa2LoQolK7BNCpDmLsDshIiRFRqaGEkagxgMcIjxEeY6h5m+pKIMbuxBMpMeYh4CCp4Bvlbf22O3ESSUmXIAF3KBQxF3aBDVupoTQpBZVAjN0JIVJjAI8xlDAilUGOFyd52JLP1BgWWlSq2j05I9QsdlW6fFbs2W0b3dYHMXaHIIyyB7+EPca4ns3KlEEGuYee1JHO5wVKjJFEaIeWYEQVQYzdARnpRMqxQUPgSns9gx4FW2BlaoECYgxlXHsVM9C2cyDGULJDwEEr2OAxhlIoECOIMbL7sKE0sLNKsS90O+tO9KVBjN1hGqlBwxljKGFEKoMce+2Z8rbyIAd4jOHnc6iaEVYCMXYHZqRGGcQYShiRyiAPBhljCKVHXClSXQIxhpIDtlJDwdZ5JWS+Sf58K/atF1yOf0bIIMbOjYSqAWIMBl3s8zlYN+IrBY+xO2wjnUg5NmixTyQQI4gxbTlr4TGGMq7wGEPB1nmlzHiMIMbOhRv19leOZYAzRn/1inShC2L0B7xJCRBjKNg6rwRixFZqYK0BMQaGylswUlLJgxxAjKF0CcQYCrbOK2WGGBF807lw4THuilkeSCUPYwAxhp/PoWpGWAlnjN2BGekqGcQYShiRyiAPBhljCKVHXClSXQIxhpIDPMZQsHVeCR4jtlIDaw1IJTBU2Er1hWphJRGP8qUZX2hjLgCPsTuAI11h5tgoIyo1+cUJ9wBy6KEc4DGGMq7wGEPB1nmlzHiMIMbOhRv19leOZQBi9FevSBe6IEZ/wJuUADEGhc0wjBuIaJUq/4CmaYeNj48/FLA+iLGHq2TkSg2olTsXi9Qgg9xDyQBnjMFhi33nIXhX4imZ+q3UUql0vBBipWmaJzEEiiTJ+XMAWDJDjAi+CSDNXYuAVHbBpOnZFjxGf/WKVJfgMfoDDo8xFEa7VlJEeUUHXiOIER5jYO3Lg7eV4wVWpsgdxBh42rkLYis1DGylUmkDER0xMDBw9NjY2GMB2gAxghgDqMnTRUCMgaHyFozU28qxHPKwDZmHMbRV9NRvpbp7bxjGwUS0hYh4a/XugFM4M8SYB2OAM8aAWrlzMZCKBzbMhfB6FKpmZ5VAjJ3hFV9pRYq3SynXWJZ1swo9XxTgiwcQ0RIi+pm77GixelGfGDwzQP12RdigPfs5p40O/uW6s3/dZVs0V61+5KdHvfqfmrTD4+wjokczOoas959hxxj8dx4wF1wYtZjPsetRt3YoQP08jGEHEc20GmsmPEZ1rngNER3p8hT7AwiQixxIRLsR0U/c5c8uTl+ii/6zA7bRqhgT424vufK6wcWHHryty7bInp378D1/88LLmrTTdIWWoTFkvf8sEozBnxgxF1wYtZjPsetRt3YoQP08jIGHmV1iDLl96pZtZrZScxw0EfvWC56dcqs8olIDGPdmRSLd0kbwTSgpIPgmCGwcbCOEuMhTtpO7jCBG/5V+MWZiATEmL4OWXm+Uqbxi1qNMjQHEGMTC71IGxBgKts4rgRiTN8ogxh7KIMc7DyDGAHrUuYnsuEbs87njHkVcIRNnjF2OGcQYYDLFvNKPfSLF3P9MGeQcR3RmSg7wGENZbniMoWDrvBKIEcQYWGvyQCrwGAOL21sQZ4zBoIt9oRusG/GVgsfYHbaRTqQ8GGXcYwylUJHqEYgxlAy4UqRySGouhB598IogxuBYpbYkPEZ4jIGVMw+LExBjYHHDYwwHFYgxHG6pqpUZYsyDUU5qlYwzxmfmXI71CGeMARa5PbC+IMYegBz3JzJDjDle6cc+kUCM7mmEe4whjUqkW6lJBd+ouXBUSAx2qvajg/e/vkk7sc/nKPreTRs4Y+wGvYjPJECMoYQRqTHLg7eVYz2CxxjAY8zDIjGUJYiwEoixOzAjNco5NmixrzCjMgZ5kEEexpDjBUpm5kKSMujOLHdfG8TYHYaREmOSihgVseCMMZRCQY88sOVhLiS8lToZShNdlZKUQbd977Y+iLE7BCM1aDle6WOV3MMtsBzrEbZSe6hHIMbuyCHttTMTfJOkIsJjfFqNcyyDTJFKjuWARWIAck+aVOAxdicBeIzBtsBgDAIYg6gWJ3nwGHM8BsyFAHOhO7PcfW0QY3cYghhBjJdKovO6U6OeZFyBx+gvpF7MZxAjiNFfE3tQIjNbqXlYJSP4JpRG98Iggxj9RdMLOYAYQYz+mtiDEpkhRpyrhNKGSI1ZHmSQ4wVWpsgdUanh53OomhFWytRWqnq0+CDTNE/qAIPMEGOODRpWyQFWyThjfAakHC9QMBcCzIUO7HssRTNDjIoULyKiG/NKjHkwBthKDTVPI/V6c7zAgscYgFSiWmAlbY+mB+p7hZpNnkr3vGa/X3baTiaI0TCMG6SUK4QQdxHRirwSY44NGlbJPTRoOdYjEGMP9ShpYpztq8WZpKAtkpkgRmcE2EqlKbc0z+uTWYmIBDHCoHW0aM+DUcYZY0cidwpHunvSRo9AjES0jIjuySipZGqVjK3U5I0BPMZQMuBKkRplEGMoOUQqg4VIjH9JRM8KAP2hRKQT0X+5y76lcO3BAer6FvnX2ul37/7SVy9dfuyJB/kWDlDgtx95/91Nii0loiIR7bS1kKExZL3/LJKejOFZ71j14gBq4lvkNxe/j48dvL+mYziq8NlDfBsMUOC22hl35WYuvGNlJHL47cX/zyuHnugR7NEzCtvCpv6KiLa1Uussb6WyFxjk91IiqhPRb4IUTmmZRUTUR0SPprR/ft3Kev95fBiDn5R78+9Zl0PW+5+XuSDzSoxBpyF7lrsTUceRSUE/0INyTc/oevDdqD6R9f4zDhhDVNrQXTtZl0PW+5+XudBWC7PsMQadXiDGoEjFVw7GID5sO2kZcugErXjKQgbx4Bppq5kixpAjBzGGBC7CajAGEYLZRVOQQxfgRVQVMogIyDibATHGiW50bWd9MmW9/3nZPoIcopuTYVuCDMIi18N6IMYegt3Fp7I+mbLefxBjF8obcdWs61LW+5+XuZCfM8aQEwxbqS7gTj/99MG+vr5LpZSXWpZ1f0hMO60GY+BCzDAMxqNommavo4whh041N/rykEH0mEbeIjzGyCGNpcFIJtPKlSv7BgcHLe7h1NRUacuWLbOx9HbXRiPpf4/62uozkY2hXC6vkVJ+gIiOM01zp/u1MY8xsjHE3M92zWd9DJH2f3R0dPeZmZkl1Wp1O+ZzdFoJYowOyzhbimIyCcMwPkxEh8/Ozh577bXX7pReLs7Ox3XVwTCMs4noT6ZpXk9EfC8pzl8kMhgZGXnW+Pj4n0ul0rAQ4mIp5TrLsr4UZ8ddbUcxBndXxfDw8Ct1XR+cnJz8Xo8Mc9RjoLVr1w4VCoX62NjYYz2QQyT950XusmXLPiWlfI9KYPIkEV1CRJebpsn/P85fJGNwd7DHMvDFZiEQo5MIoOuEtETE5HIWEZ1PREuI6OdEdKppmnEnD+hXkpzxlWjzAtzvD6p+75BSnmZZ1u0h2wpTrdv+e78pyuXyG6WU7yeiNxDRZdVq9eKYDXPXY1i7du2B9Xr9Ftu210xMTNw1PDz8N5qmXUdEY9Vq9fItW7ZwIoo4f12Pwd05wzB4HpxBRDZflq7Vau/cvHnzw3EOgIiiHIMzLy7mdHBEtKEHcoii/84i903FYvG4q666arJcLr9KSvkFIvrD7OzsCTEvfKMYg6MmScjAV0UXAjH6ghC0QLlcPtq27bPn5uZO1DRtcaFQ+JqU8vKBgYGbxsbGwpJW0M+HLlcul98ppfwQEb2diN5ERB/nrTzLsiZ64GmF7neriuVy+QQp5YimacNSysVSyqullA/X6/Xy5s2bH4/8gxE2ODo62j8zM7OCt1GJ6Coi4jPwL/LLMVLK9/VgtR/JaHgLb3Z29p+klOfzNt7g4ODFQoiVRHRsj7eHQ4/HMAzOivWJYrF42tzc3CDLQUr5y5TrkUMkb5qdnT3OTYBnnnnm8lqt9iXbtu+1LGtdFuZ2WmUAYuxgWpVKpcuJ6MdTU1O3LFu27DNE9G0pZU1Kefpuu+12wsaNG5/qoLmeFDUMg3Osnm/b9u3spfBHS6XSkUKIzxLR5h54WpGPUz1DtsWyrJu5cRVQ9BUOaKnVaif0wGvpakzKgF0rpVxSLBaZTKhWq83/+aqrrtre1QdirrxmzZrnapp2rhDioLm5uXd+9rOf/TPvpiS0PRxqtIZh7EtE64noAdM0N3IjLrns3iPvt+O+G4ZxLBGNSymPsyzrTm8DpVLpFUKILwghjq1UKpwPNLW/NMsAxNiB2pRKpQ8KIV5ERA8JIZ6oVCofMwzjtUR0QX9//0k9OqMI3GM+hxgaGrpA07SbxsfHf+quqFZqN/F2cK1WW5N2T8vdd16gaJpmVyoV3kptnC2qJ8neQUQFInqraZoPBAaqRwVHRkb2sW27sZLv7+8fn52d/aCU8nAiWlmtVn85ODh4GRtqy7L4v6n8rVu37tn1ep3PRP9DSvn3RPQLt/6USqU3CSH6TdP8eioHoDrlkCAR7VkoFI5xFiMqQO0TRHSns/BKyzguvPDCwvbt2xfPzs5+Qkp5vG3bKycmJr7nmdd7sOfL28KmaTZ7kCAtw5lfiKRRBiDGAGrCB8MDAwPTTzzxBL/m8Q0p5Z+FEG+tVqs7hoaGLpJSFizL4ijDNP18g23YOMzNzW3hXLKapr19fHz8oTQNoFVf1q5du1+9Xt9KRP/CZ0JDQ0N85nGNlPIaIlrNL6lYlsXGLTU/1Wc2WLfwtu/U1NR1W7ZsmTMM4xwiOltKOdzjc9+OsVm5cqU+NDT0D0KI11YqlfNXr169tFAoMOYrsuCpewfM12aEEHx16Q26rh+/adOmVOdTNgxjo5SyalnWR5TenO89EhkZGXmdbdvsAb/dNM3/61jIPa6QVhmAGNsogvK4ePv0nUKIr0opDSLaV0p5nRDiJUTEgSzfSuOZBJ8r2rZ9Bp+HtjuIV3fqjqhWq7fGHLwSesq5IvDY2/p+rVZ7V7FYHJRSfo6I9lOvp4zztvDQ0NCHpZRPpY0YlUf7hGmarE+Nn2EYa6WUvN1V1DSt1NfXd3radh3cQiuVSocJIbZKKb8uhBg2TXNOzZENRHSKpmnHeXcmQgs9hoqqr+cRUZmI5qSUH/3Vr371+Re84AUcUJf6xYlhGPxU3rW6rh/LJF4qld4ihLiWiCzW/SVLlizu6+v7spTyS5Zl/VMMEHbdZFZkAGJsI+pSqXSWpmmvmJycLA8NDRWEEKuklM+fnZ29QghRHBgYqG3atKnatbZE3ECpVHqHEOJDuq6fuGnTpv/l859yufwhKeXupmny9mOmfoZhnMbbo1LKDwshOAryJCHEyZVK5YdOmHehUJh76qmnXmnb9sd1XT9DjTs14zQMo0JE93uI8TQp5Rsty+Lxpfq3fv36RXyGXi6XXy2lvElKecPU1NQGtZjiaxuvr9Vq/xVzNGRXGKko2lfouv4B27b3l1KO8Q5QtVo9d3BwkLe0VxeLxTOuvvrqHV19KL7KfI57NTfvZ+eaxAAAIABJREFUBNe4jkTu43gHInqyx3eUOxptVmQAYnSJ1TAMNr4zlmV9U63oLSHE5nq9/oSmaRyswm+p8aT5uWma7D3GfXeuI6Xjwuoc6w4i4kCbUY5ydKJSdV1/W9oIo9kAOWCIvRElA/bQ12ma9hUmQneQhxBitFKp3FwqlV4thOAzraoQ4pRKpXJPx8DFXGF4ePiNmqZxgM1JTtAER9fatn24ZVlrY/58V82PjIw8z7btr0spr+RI5tWrV/9loVDYIqX8fRp3S5zBuvVozZo1y3Rd56CU9zpBKc6WvBBifaVS+UZXIPWosrryc4MQ4vRKpcLXxWj16tV7FwoFvstLs7Ozb0/T4iSrMgAxuhRaRWseQEQV0zRrpVLpvUIIvjTLGWI+Wq1Wr1i2bNlrpZTnLVmy5F1pi0JVpMjEzQfwXxZCPGTbNpP75eru4i5RbD2az4E/YxjGC4noek3TVvO2nMoSc6UQ4uxKpcLnWY2fugPIK/6TTNP8n8Af6GHB4eHhl+m6XuaIYMuyvmYYRkldlblWCMGvh5+i7jT+pIfdCvUp5SnyefQXeNtu6dKl/bquV4QQzyoUCu9Im5fl1aORkZG9bNv+kpTyTMuyfuYiT06yULMsi+8ypupnGMaetVptxhsYxztZRPRKZzubO81blM9+9rNFmq6NZVkGIEbPVFD3zHhl+Ue+V6brej9nxZiZmeGrGEUp5SZN077rNtJpmE2u1e+FlUrlJldgBF8HYM+Rr5dk4sceSq1WY7xfMDEx8f1SqXSEEILvXF5pmuYVjqfuXo2mbWClUuk1QojrpZQ/FULw/2ePi/XpOfV6nQOEapqmXZ3mgCcOttmyZQtf3m/sjCjPhCOZH+RI1Mcff3xm+fLle4+Pj/8ubfhzf7x6pJJcvLVWq63kKz3q7JrPqSfS5jEahuFEl/4tEd3G3vrU1NT3OQkEE6YQ4pZ6vX7hxMTEv6URe6dPWZUBiNGlVWqinFKv17+hadq/8JWMQqFw+vT09G66rv87ET2H0y6l7e4f3+MrFot8Sfxm0zRNx5C5AiNWSynPSHvUo3uCDw8Pv0jTNL4W0DgD2nPPPZ9fr9dvFkJ8JwsX4Q3D+IAQ4t5KpfJVV/Qv8b3FtN9TdHlTnyIiXqTMX+dho0xEnDVJpjWSeXh4+FWaps2apvmLNWvWvFjXdSZz1qMPLlu27KNSyncT0XeIiHeHvs36ldbAM8MwOAEEn6uvUTtBN2iadlm9Xj9E07RTpJSr0pgUIusyADG6rLGK0GTjy8EF12chlJv7zF6sEOLXpml+lA0WX5zlqNlKpfKvPDx18Zq3hM93E2caV5rqSsCr+W4TR2wKIXgr+DFeoHB/1UX4n5imeWEa+6/wvoSDg4joNNM0v81/5wpLZw8gdfcslR6tE0KsEUJ8r16v/6Nt20+q7dIDiegdfDeUvXQp5aeJiINvfphGQlGX4MeEED+2bfs79Xp9C5/BOXpUr9eX1ut1PhL5zcTExH+kKVagmRwmJib+6HjAvMDl/xERZ3haIqVca1lWY56n6ZdlGTCOIEaPNpXL5ZdLKTmC8JRqtfq7oaGhc3kr0rbt09K2beG8liGE2G12dvaUa6+9dlplgfkyEX3LIUplrDnbDScRPyWNl9+dc5Jly5Yx9i+UUv5O1/UP1ev1bUKIq6SULyOiE/fee+/fc9kLL7yQI/BS+VMkON9nJ5euIv1Dq9Xqj9JEKEpn+Pywxtu/tm1r6p7lrPs6BgeusNdi2/a7BwYGTkjz1RLDMDgF4j8S0Vm8GDQMY5Fbj3qQ37hj3WwnB09jfEd5PyHE0TMzM59LU7CNu59ZlIHTfxDj0x7VYUT0Md4mnZqa+ubg4OB7NE17zeTk5Go2YIZhvF6ljkpdNhXXXabPLFmy5LIdO3aMs3DTHLLdymLwWPgoa2pq6hSHOMrl8kGapi2v1+uHch5OXdffmsYrMs6Knj0RTdO2T05O3jk0NDTK6iWEeLeKqO3YWPaiAgdzCCH+rlqtrnJwV5GoJ/J54lNPPfWVxYsXHyml5Nyuf1ARkff1om9hvzEyMvLXUsqlUkpTCPEt3n6vVqszaqGbSj3ykwMH1KVx27SVjLIoAxCjS5oqBJqvOHCgwTQTpJSSE4V/lgNZwk7OXtVTd5l4xc8vfvwmgWelQg3Vez2GU+7xFqplWeylN37lcvkfbNse4QTV/f39/DRQKpO1O1di+JxXSsmp6bifbxNCvI7vy0kp11uWdUMooGKsxPcTd+zYwXlmK5wCTZ2zv5+JRF354XN1vvpTdq7QxNidrpv2RAJ/VV0taWyjEtGl9Xr9hX19fdelLYo2T3LIqgzcygePUaFRKpVO5SeMhBB8gZZDt/nC7+9t237TxMTEg13P2JgbcN1lykQibYbDez1G5Z3lSM53OXf9mPSFEBfpuv7utBkzR6R8FYDPpDVNW/fII4/8lhPM27Z9v67rfJ/yV7VabTmXnZiY+M+Y1SBU85x8QAjB51VM4B8RQuwvhHgXe7nlcvkA27Y/r+s6Z7VJdcpAlZmHz6Q5beMJRPQlDqzh5BxSSj735YQK5TQuUFhweZBD1mWwYD1GwzBW1mq12zjUfGhoiA3BC3Rd//D09PRP+vv7N3HKMb6KobaSXmCaJl/8Td1F/mYW0HW29fdCiBPSeNFdeYEcXHNApVK5YXR0tG9mZqZxPebJJ598/6JFi0aI6Dw+D63X63dqmsZRhN9Na4orNZ6DpJScn/IUIQT3n2ZmZi4rFov8+sfmtCWj9uqOWlRxAotXSClvEUJ8wDTNR9XihV9rsNj7TXPuTRU49wWO2LRt+0ecR5eI/k4IcQ8HbmUhEjjrcsiDDBYkMargB36y5WVCiClOm2bb9nOFEBfwA6hSSl5tHieEWOtklQi1BE+wkhojPyB7lpTybc2epkmwe41Pq63fW4joRr76stdeey3lZOZ8PYYj7oQQL+cIWinlXkKIjzOBpmlxwm8RTk9Pnzk3N7dpYGCgz7btGSnllzVN06WUv65WqyNDQ0O8mLpBSjmRxqjBIDqgDB17k9vcL5kEqdvrMiq5BecNfbcQ4q85Inhubm59oVD4KhEt1zTt9PHxcb5ylblfiuUgRkZGnjU+Pv4nBjVPMlhwW6l88b1YLPJla34sljPQ/xdH5w4PD79U0zQmlGN51bzPPvu8O82Rjz6zuxG1Vq1W/5Cm6Ed3n11bv3/ke3KcRCEL12N4DCpSk4Oc+NHn/5ydnX1XoVB4oaZpnMD5diEEPxt1PBEd2t/fvzLN0ZtePVJbpxdpmnYPvzNKRL+dnZ09La2Rj07/FXm837btG3Vd/ww/oGya5o/K5TJ78p+fnJz8z7TOhWZzOQtyULEZt6jsTXflSQYLjhjVFQfOrcmvd1/o5Nt0PBIVMi2draTMLS9T3GGVjYfv8T1QrVbvW7p06WL3PblqtfpQmq/HuKFVmYb4/lifk9CcH/DVdf0jRMRRzF+p1WobsvTOpfLmOeNKWUr5Yk3TbpucnPwiZ1tJqVqxx3IYXx+RUn5fCMGX319i2zZHzx7PCf/53Hfx4sWltKVv9MNTZb5JvRxUpjB2Mo4joqs4apajUbMugwVFjEyKy5cvH9y+fft2nuwq+GNCSnk1X5CXUv7JsizOiIFfxAgorPkci7cYeetxlWVZP3Zt/a52CCaN12PUA7xscJ9LRJ+r1Wrn8AsrhULhjSpoZQMn2E7Tlm/EIkxdcyoS+Bwp5Wd1Xb+Pt0rVOfuNUkpegPG7qSel9aw9dYCG6BA/XD07O1vQdX2TlHIJZ3aam5t7SgiRaRksGGJUK/yvEdGLiIhfs1/Jl3wNw+DnZ/h9xaW6rh+ThdcnQuhvolXUlgtnFFpXqVS+63SGQ9T5/2/cuHG6XC7zCp8fYn2vZVmcCi41P34FQ0r5CSHEOZqm3csvsLgjNMvl8qGsQ0TEHiRfgB+bmJjgKw74xYQAn/POzs5+wbbtf3SSgquz3/N1XR/TNK3e39//aNY8xZjgiqVZ5S1yKkp+o9PJFMbR/Ct5R+hZz3rWs7IqgwVDjIZhcATqT/bZZ5/PP/zww/xq+mgWXk2PRaN73Cg/0qtp2rJKpbJepazj7Tq+FrNKdWWDaZqfMAyDt2BqabrWoPLQfk3TNA4CupX7q7aEz5RSHsPpA6vV6tVLly7ds1AosI79bmpq6oNZOs/qsTqE+hynOSQiPrs9jzM3NXstg9PV8cssQojPVSoVvpuJX8wIjIyM8D3dy3Rd5xdW/mgYBtvW1D/67AfLQiBGftyTX5hYqev62Wqlzw/3sofChgxbYH5a0uW/l0qlyzlik4mxXC4fIqW8kYjurdfrI8VicSnfkyOiU1UgVJdfi7a6Oi/ZrGnaMaw7yjvk/k5JKa8RQhi8lZfm6yTRIpJMa7zlPjg4+BYp5Y8LhYIcHx//c7lc/pSU8rWuNwh5rnNk6g1ZjQROBt2uvuo8nvx/ztNdnMFK07RSX1/f6VkKPHOjsCCIUZEg74G/z7Ksf3bOgfiNOV7d9PX1rcuqALtS6R5VVpn2OWyeV/QDnECB37ZUT+g4z+uw13h3j7oU+DPKY+RIU+cNP744fmW1Wv0ke4WlUukkIcSxpmmeFLhRFOwIgVKpxPda66ZpXlkqlQ4VQvAjyRc++eSTNy5ZsoTPdV8lhLiSiF4qpdy7v7//ZMznjiDupDBHvHOGqrdJKS+dmpr6qnr5hpNAvGvTpk2/7KSxtJZdCMTYwN51DrS5Wq1+PMWRdmnVla76xec/c3Nz+xeLxd+4jZZ62f6SQqHwtquvvpof703dj8+hVUJq3bbtS91bvaVSiTOqDJmmWU5dx3PSIdcZdePJMSEEJ1RwHk3+2ODgIF/kP1YIcRfvRmQpn2gWRaQi+/+BI/qJ6DVE9FUhxFO2bU9blrUuDwFouSXGcrn8do42VW+YPcSJj6WUnNKKX/H+Zb1eL2ctlD6Lk8jbZz4HYsO2ePHi+3fs2PFmfvFACPH+SqVyfdbGpxK4bxRCrMpqQoisYM5vWvKTY9xfzmTz1FNP8QPi848mYy7HLsn5qzGcT5qTs1uWdS+ft+u6zjmBz+KrS3y31zTNR2LvTcwfyCUxqqejrtZ1/VR+toizkvAbc0R0ea1W0wuFAhMmP+rLzzPh10MElPfFUad8j/R/Ve7Kb/awC119qlwuf5gTzEspHxNC7Je1B6C7GnzClV1vWr5B1/XjZ2ZmHlb3YDnR+TG4exyfgNTVGH6vk/NIHyGlPFXTtLeNj49z+r3c/XJJjKVSie/EPc80zQvK5TK/y0b1ev2bmqZdoWnasU4Ko9xJM0UDUtstRwghbs/CqwxBoXOSFEgpB4QQ34QxDopcuHIqm8qxRLRC07Qvjo+P/94d+Tg1NfXt5cuX7z0+Pv67cF9ALT8E1q1bt1utVvuclPKiqamp+zhJvpTyp3xtiZN1WJaVmYWt31idf88lMfI2KhHxo6pf50dvJycn37N8+fJn1et1The1Ku2vBAQVXprL8cXfWq221bbtD6Ttgec044a+PYOAykLFW+zOO6gc+PRx0zSvKJVKRwkh+K3F9+BqRrxas2bNmmWFQoEDnvh892j+WqVS+ZhhGBdJKWtONGq8veht63kiRnHGGWfsOTg4uKNWqxWnp6e/IoR4rqZpb+RVZqlUOk0IcZS6FjDXW5gX5tc4YlPTtFM4yw0CIhamDnQzavVw9Rssy/oAt+MKwrmQ30k1DOMva7XaDpwvdoPyrnUNw9hTSvkGTdMeW7x48fdVAg6+GsOvx9w+OTlZ3rJly1y5XK5IKX9gmiZH+ufqlwtidCV15sTNNSEE5xj8d37ZQAhxJBHxI6X/XavVTt68efPDuZJgygbD2TDGxsZm1UX+xZwayrbtL6T1DbyUwbegu+N+uLpUKvHbqJyR6jr3yx78cLVKbn5Snrbo0yJ4df2IYzCeUFerNCnl2U888cTXdtttNw5+egURfUbFCPzF7OzsqrQnmA+DbS6IUd2TG61Wq8ayZctepdJzNa5l7LnnnvxEUOGzn/0sR0pl4l3FMIJMQ521a9cO1et1Tov2PCEEP1fEuVH3qdfrHxVCcAq+zEerpQHnvPbB83A15zJ+pxCCr8Oc4qQSNAyD3xod4cesQYzRaoJ6ZHizbdunq5SGTiIUfo/zivvvv/8TBxxwAF/T4IxP38/z1ZjME6N6A4xf5paWZX2CVUVFPn4R1zKinTgBW+PJ9CLbtkf5sWQiepBjn4joFtM0Px6wDRRbQAhwVpstW7bYvHBV+TcbD1erM62Xc2YhKSXHC9zLGVVs274YmW2iVRBFiv8spTzN+4ar+rcbFGH+W7RfTmdrmSbGUqn0GiHEF4nocSL6C/ZKnJWlOri/Ukp5Fb/ikE7489Erxrq/v38z5w7lx4drtdo6Pvdhg7d8+fJDmCT5InC9Xj/ymmuu+XU+Ro1RRIXA8PDwIXwWXavVPqFp2l9qmvZ7IuLk1E/wncW5ublBIuIL/UXbtk+cmJj476i+jXYajgRnn/pXIcT2ubk5Pm5ie7rTb6Elssg6MV6iadoPKpXK11y5T8+zLItfOsC2aQ9mPV/Yl1JuEkI8rGkab8PwQqVWq9VOcJ/nciJxIlrsBFL0oGv4RMoRcDzF008/fY++vj4O4Pg7jibnYA7vncWnnnrqj6rMYK1WeydiBaIVruvh8KJ37vKX1BW4IxZK6sPMEqNawZxMRMOmad7BwnOlfftCtVq9GC8cRDt5mrVmGAZf1P9HIjpd1/Xn1Ov1TxMR3yk7Ugjxzkql8kO1vc0p0/5+oUys+JHP/hdUcvllUsoziYjn8rlExDaJz6P/S73VyX83atv2aY8++uj3BwcHLxZC7FatVs9CWsdodUBlseHYgMP4GMR5x5LTOc7MzHAylH/OYwRqMxQzS4xqRXmVlPI1nAXDSV7Lz9OwQZ6cnNwIYox24nhaE+vWrVsyOzt7oK7rn9F1/cS5ubmP8paMbdt36LrOqfcGCoXCO+v1+h+I6Hzbtm/HO4WxyiRTjavjDvYUB+fm5t61Y8eOh4eGhoaJ6CMqI9KXV65cqQ0NDR3Kdxn5ualMDTCDnXU9HH42R/dPTk5+aWho6Hxe1Pb39x+7UJKzZ44YR0ZGnlev11+radr2ycnJO4eGhvj8qiSEeLfjnWRQHzPXZcMweLJwcM1bNU3rt237L4iI75udwvlphRAfXrx48Xl4KDZzou1ph1WGJPYCObtNw1NU0an8asb/SCkLhULhuE2bNlV72rGcf4wjyB955JEnWjgPTjQqX9v4CRE9h/OhLqRH3DNFjCpf34eEEDdLKd9BRJySiBPY8mOZ/LbietyXi39Gq0djP0lEpmma3+YvDg8P/42maaaUkqNRDb4IXKlUrom/N/hCVhHgxODc96uuumqyVCoNCyE2SCkNjjhds2bNc3VdZz36QqVSuS+rY0xjv0899dQlixYtukVKub3dYwrqaIqf61vnjVRN47ii7FNmiJFf7JZSXq9p2rpHHnnkt5yvz7bt+3Vdv4eIflWr1RqTLE2vv0cpqDS1ZRgGb3fxWeInTNPk7VOpkiycx2eNnDGqWq1eiTOgNEktfX0pl8vnqIUUR5Pf4/IUr+S0bwigi09mKucvL1xXNAu2ie/L2Wg5tcSokgcXnSTN5XKZ32DbyFt1fMGX4Z2ZmbmsWCzeTESbLcvi/+IXIwLqTIjD5j8vpdwmhODtro+y2wgjFiPw+W2aX39nT5G3UkcrlcrNa9eufUG9Xr9JSvkx7P7EJ3gVo/FuKSUvbJ8UQhznBNvE99XstJxaYiyXy2uklHxmdRyfO3BkFOc/1TRNl1L+ulqtjgwNDfGVjBs49Rsu/MaudPwe2xts2z6rv7//ND6EVxGpTJTfqFar5yLYKXYZ5OED/AL8s03T5EepG1eq1DY8X7Eaq1arlxORzkkhsOMQj7idK1aaplXVERRHkG8QQqznxQkWuU+HRqfux9um4+Pjj5RKpTW8mlR73F9SF4G/LKW8XQhxGRFxbtRD+/v7Vy6UaKmkhKWyCX1dSvnI3NzcMU5+RD4nmpubY3L8rmmaFybVP3w3tQgwEZ4ppfyVZVm3Kz3ayqH/TIIO+akcqJwbdbxSqbwvtaPJQcc4+To7FJqmney8NKSy2/DDz1e65ZKD4YYaQuqIUQmIk9VykuD/8K4md9999xW6rn+EiF5PRF+p1WobkF0/lOw7rqSMGpPgvXxt1Hkx48ILLyxwYxdeeGGt40ZRIdcIGIbxQiLiNGLLiOgs3nY3DGM/ldnmP/kOI+uRIsaXVavVS7HzEJ9K8BwWQnBicItT67mehOMFDF+d2ZuIVi/0qzGpIkZna04IcVGlUuF32Bo/J/epEOIuzp+IJ4zimzjcsor+5cTfX+XI00qlwim4Gtte7rtnyEASrxzy0jpf7ZFSvk4IwckgvsLb7nvttdfSWq12rZRybyEE//cM27bPw9ud8Um9VCq9WAjB3vo/CiE4vTSf7TauufFTUxyrUa/Xz0HaxhRtpa5du3a/er3OQhtzgjnU1umrTdO86swzz1ymJtKSYrG48qqrrtoenwot7JbVO4olKSWHya8kogKTpBDi09u3b/9PPgNSGUiOsm37mImJCU4Ujh8QaIoAG10hxOdt2/4nIQQb5e2cA/VPf/rT4+oeMr/Y8JFKpcKeJVI5xqBHKp/x+4loz0qlwlmoOM3bu4QQHNDIOz2c6P8y0zSvhAxSQozKC+GUQ99ywv8dohRCfMzxHtVlYD5bfMCyLP4vfjEgoCKCbxZC3FSpVDYPDw+/VAhxNd8X5bcthRB8B+oaKeWfLMv6FSZSDELIWZPlcplffj+tUCism52dHRNCHEhEJ5qm+ZucDTWVw3FlCjtGSvl2516iuma1vL+//wnEaTwjulRspar7S5/jFQsf/C5ZsmRpX1/fTkTJAly2bNk75ubmbsWZYvxzb3h4+I2apl1SKBTeNjc3t58Q4gohxKmcp7Jer79P07SfVyqVT4EU45dFlr6gFrmf53y5mqZdNj4+znlzSc3fChF9fXJycuvQ0BAnlT9D07RjxsfHf5qlMWatr5zlplAo1Ldt2/bE0NAQ555FpjAfIaaCGLmP6nyRyfCnvPnNd2umpqZK6iCeD4Y/TESHz87OHpvHF6PTNtk4pJvPHKSUNq/upZTnLLTsF2mTSRb6Uy6X364eCv9fItqL3+OUUn58amrqq8uWLXsREX1SPTK8nYNwqtXqHxBsE5tk2W5+kIjYdrJNvej++++/4sADDzxWXdPAS0QtoE8NMXL/1NMnHDK8goj4iZP/4b93UsEttHx9sU2XgA2Xy2V+JPZWTgC+ULLqB4QGxdogoCLJb+QrGUKIf7Nt+31CiFdwJCoR9Qshfl+pVPhiOX4xIsDb17Ztnz03N3diX18fP+l1IyflUA9Ac8KUT9i2fQZiBHYVQqqIUZHjUl3X+emTV/IOjJRyqRCi6cvSMeoUmn4aAU4m/CnbtveZmpo6HSt7qEVQBJxIcinlLzkfJ9crFAr8tBQHgDxeLBYPRwBdUDSDlXPet3SONwzDsKSUN05NTX132bJlFSnlvwshOHGK5Dy0mzZtuh9HIc2xTR0xcjfVgTCfQfDLGU+pjAzz1zeCqQlKRYEAv2Zi2/atQojzKpUKe4/4AYFACHDyBxVJzv91Hq4Wo6OjfWNjY/wAAH4RIaASg7ON/L5zQb9UKvED4r8UQnDU+MrJyclTBwcHjxNCnKYSKXwlos/nrplUEqNCmfMorhRC7MXXNbCySU73SqVSiYgetSyLt8LwAwKBEVCLXE7zxlcy5h+/DdwACgZGwHXfu5E4oVqt1pYsWaL19fX9i5TStCzrW4ZhXERE33ZexQnc+AIrmGZiXGCiwHCBQHYRYALcc889n+88GO4ZSSNZuKZpyxDJHKuMxfDw8Os1TeMF7P0qAcf/GYbBz8E9l9+3FELwf9+JJCnt5QBijFVP0TgQWBgIqJRuq9XdxLmFMepUjbIRua/uGl8npXwTEb2aiFbxvW8i4msadq1WuxzX3fzlBmL0xwglgAAQ8EGgXC4fYNu2qev6qvHx8T8BsN4iwA8v2LbNL5Q4eU7ZS+fMNnw9Zg1eH+pMHiDGzvBCaSCw4BHgO66maTa8Qs5QZdv2/pqmPVCv1znY40Oce3PBg9RjABQxfonPFi3L+hl/Xt1FvoGIXk5ExzjX33rctUx+DsSYSbGh00AgGQTUaxnXa5q2+oknnrh/0aJF5xPR24hoDyJaSkSDqmeP8OV+TdNOHR8f/0UyvV1YX+Vk7UT01lqttnLz5s0Pq9SO/FLRR/hN24WFRnejBTF2hx9qA4EFhwBf4anVak8R0QsmJia+70SMl0qltwghhmdnZ09ZvHjxoJRyZtOmTdUFB1CPBlwul1/N9xQ5MTifIf7hD3/43L777stbp+8mou+ozEO8KHmP4+H3qGuZ/wyIMfMixACAQG8R4IvkQ0NDvD3HZ1rf4GekOPkDnzMS0b/oun7i1Vdf/Yfe9mphfY1z0haLxS9qmjYuhPijbdvXCCG+xVltNE3bq16vv1ZK+ZuJiYn/wFW3znUDxNg5ZqgBBBYsAurcipOB76lp2ntt2+a0b4/xM1J9fX1P7tixg1M6fgbBHvGpiHpl6HBN046sVCrrmfhUOs3rHVkgq1B3+IMYu8MPtYHAgkLAMIxXSik3aJr2vkql8ivXc0Yv46saRLT/7Ozsj5DoPz61GB4e/gtN03gLlc90jzRNk89zOdhmsRDiKtu2Jy3L4usZ+IVEAMQYEjhUAwILAYF169bxM2OHT05O/uvQ0FCBE8oT0Tmcc9P1TipvrbIhPlbX9bfiXDF+zVi9erWTU5rftXyHaZp8V5F/YuXKldqWLVv44WH8QiIAYgwJHKoBgYWAABNjrVb7khrrzPT0dLm/v/9oIcQGKaXh2jJFDtSYFaJcLvMCIDmjAAAGNElEQVSLGJwMnB8Lf2+1Wv3d0NAQL1RWCyFOxjWZ6AQAYowOS7QEBHKJwLp1655Tq9X+nYj+6CQDV4+LTxDRlaZpXoEAj3hFz/dF6/U6Bzvxs1EvE0KcaNv2So4KLpfLx6vt7bc5D0PH25v8tw5izL+MMUIg0BUCHAE5MDDwAtu2+b7iKY53snbt2gPr9fpNUsqPWZbFF8nxiwmBcrn8cSL6TaVSucYwDN62fgsRvZgJ0bKsifXr1w9s3LiRr9DgFwECIMYIQEQTQCCvCKxdu3aoUCjUx8bGHuPzK04GLoS4WOXeHBJCfHtycvKXONOKVgP4DPHxxx+fcd5ALZVK1wkhbtd1/a56vX5VoVB4V61WO4WIPkZEV1er1fdBBtHJAMQYHZZoCQjkCQFOSv1BIvqw2ia9yHnnr1wuHyql/DwR/XZ2dvYERKBGL/ZyufxuKeUxtm3zPcU9pJT/p2nan6WU52madg97jqVS6XR+Dm5qamorSDFaGYAYo8UTrQGBXCBQLpePtm377Lm5uRP7+vr+johuFELw+db78GRR/CJmj7FQKFxDRG+WUh5hWdaP169fv+jJJ5/kfKgcDPUdIcSVQogRnCtGLw8QY/SYokUgkDkE+NI4EdUdz8MwDIvTjU1NTX132bJlHAn573xFQ0opdV03Nm3adD8CbqIVsyLDv+VnoqrV6n0ccSqE+Gsp5V8757q8YJFSfo6Iapz6zbKs26PtBVpjBECM0AMgsMAR4OCavr6+L0spH67X62V+r69UKvFLGb8UQjxIRCsnJydPHRwcPE4IcZoQYrxSqXxlgcMW6fBVlO9n1WJjRkq5ir1Eda57shBio5Ry/dzc3M2LFi1ahLuikcK/S2MgxnjxRetAIPUIKGK8lYj+ioj+m19+f/zxxx9ZsmSJ1tfX9y9SStOyrG8ZhnEREX3bNM1vp35QGeqgiu69WQixrlKpfNfpOm+d8v/naFN1rsvXNXaTUn5FCLEWicHjEzKIMT5s0TIQyAwCw8PDb+Q0b3xXkYj+hrPYmKb5C8MwTCnlc4nof4QQ/N934owxWrGWSiVOsbfMyXtqGAY/4XU1Ea1SX9pgmuYnDMPYXQjBL2r8EDKIVgbe1kCM8eKL1oFAJhBQycE/I4T4gZTyWUT0/6SUZSHEv6mrGXatVruct1kzMaAMdbJUKl2uaZrOxFgulw9RT0ndW6/XR4rF4lLbtjkC+FS8qdg7oYIYe4c1vgQEUoPAyMjIPtu3b/+zc0+OO6a29Bp35Obm5jjgg6Mir3SuaaSm8znryPDw8Ks0TfsqERWJaICILq5Wq1dwIJTyHr9IROw13p2zoad2OCDG1IoGHQMC8SBQKpUOE0JsVYb4c5qmXeaE/JdKpbOEEHubpvkBwzBeQkTjRDRqmia/64dfTAiMjo7uPjc3t3+xWPyNSqbQ+JLa4r6kUCi87eqrr94W0+fRrAcBECNUAggsMASct/uklOyd3C2EWElED0spP67r+vds294spbxIRUUuMHSSHS5vaQshDlq8ePH9O3bseDM/IyWEeL/zkkmyvVs4XwcxLhxZY6RAYB4B17NFjYTUQogh27ZHieiNRPQ7dZfuZPdWK+CLHwHDMPYnIr7A/1Ii+l8+57Us65vxfxlfcCMAYoQ+AIEFisDKlSv5HUV+tmitlPIMviyuLpmfTET7VavVfwQxLlDlWODDBjEucAXA8Bc8AkI9WzTmvNSAjDYLXicWPAAgxgWvAgAACBCpC+TXCyH+eXJy8mIkpYZWLGQEQIwLWfoYOxBwIcBBObqu72ZZFudBxQ8ILFgEQIwLVvQYOBAAAkAACDRDAMQIvQACQAAIAAEg4EIAxAh1AAJAAAgAASAAYoQOAAEgAASAABBojgA8RmgGEAACQAAIAAF4jNABIAAEgAAQAALwGKEDQAAIAAEgAAR8EcBWqi9EKAAEgAAQAAILCQEQ40KSNsYKBIAAEAACvgiAGH0hQgEgAASAABBYSAiAGBeStDFWIAAEgAAQ8EUAxOgLEQoAASAABIDAQkIAxLiQpI2xAgEgAASAgC8CIEZfiFAACAABIAAEFhICIMaFJG2MFQgAASAABHwRADH6QoQCQAAIAAEgsJAQ+P/4aRW1bo1wfQAAAABJRU5ErkJggg==


CuPy的界面与NumPy高度兼容;在大多数情况下,它可以用作替代产品。您需要做的就是在Python代码中将numpy替换为cupy.




页: [1]
查看完整版本: CuPy是使用NVIDIA CUDA加速的开源矩阵库