vulpemventures / go-elements

Go support for Liquid/Elements transactions
MIT License
27 stars 12 forks source link

Add verification of surjection proof #139

Closed altafan closed 3 years ago

altafan commented 3 years ago

It can happen sometime that the transactions blinded with this library might not be broadcasted, producing a bad-txns-in-ne-out, value in != value out (code 16) error even if the transaction looks correctly blinded. The following is an example affected by this problem:

pset base64 ``` cHNldP8BAP1LVwIAAAABA7ja03depARZOMCCxXTk/iuaZz4EnrNUhw5l48orgolAAAAAAAD/////ChuyoHN+BG3Sb9hkwn80ueda9nGqDNeo4j3hux1UYXIDAAAAAP////8KG7Kgc34EbdJv2GTCfzS551r2caoM16jiPeG7HVRhcgQAAAAA/////wYL/jiMxzv/hHD/6at3Ju6oZtP+rkAuP/uMiqAHLk+bkL4JFN3VV7Qbhtp9XU3YLFfzT0xqLvhuzKK/C8IFBGmfkmcDuY6+ShqnGQOHGnjceiduh/giglXi3DxM0CznyPZbkHcWABRKK6jZre0NYdPu30zOv1VDHSkXCgui1NTdrxuD7pCxvp3KAaKoVyT8zrPtfbaaoLkmnDgwpQl90FuKk/LgoZJvnNwY6L6QkiGE6cSCAHlDKUXnjpyhzgJSc4UT7MZF3nbxzWWwkp/49AMeiv99fVUzcZBl1YgN3hYAFEorqNmt7Q1h0+7fTM6/VUMdKRcKCyoTzu/9OXfIhsNLTb8Yyz9W2/3tmzEy1It6VFv3yYQxCWBiu2ikUjjsLs7FMn5xTSf96gc53e00fp4uwLyC30ykAnIUa428Fu0vC+o7Z3Y203SuE5N74sOOtezR6DtGGiB2FgAUoqGYIGRuz20MbwLmfpPO1QjkgbELr761w2+qhRawsflSuBGbEooCGu/h5+yXGqoyYoZ2N0UJ9r/DiBEE3JRKjV3TSh3XoO9c0BEq10AYRNrrg+fcqIwDE21rbqWvmltHDS/qwjlhhqqcQt3Golg0OJHEqugSlSYWABQ0QVVoszkV+mo0Eohb2R7yReyBLwrTBuLf2xe32sMp74DhhShD1vhgw2nyzVFGWdsdESFd9wkAbz+yTAwm5v1oorT0OTpmdoxhpKJF5uuzd/Q2AuIhrQIeC5GDLOVsNMpugnqR4zuTzoV2T6Kih8ySFDuItBfbnhYAFLMlbRR51OoKljFGcq/VvWI/jMoxASWyUQcOKcoZBDzzPM1zJOLdqwPsxK4LXnfE/A5c9slaAQAAAAAAAAKKAAAAAAAAAAAAAAAAAAAAAAAAgwMAB6Q1qKLKLqlpPI7Gtpd7NSguk/80oHM/rY5HEng8r2u9ja1Sl6RbI/gH7g/1iLORQ4NQjm5Erv/AGbC2yWvKVHuGiYU/RkjxVZQjv7s9A98ZlhczKyhznVXhkMqCQGJw7ERNzaRCzZza5dAzxKXTNzWDw8ucSmD/9KfN/3mHTVFG/U4QYDMAAAAAAAAAAekeYQDJvTXhf7lAYS5nDXdHlcZj41pUt7p/Bvu0WPRziwt5Y/9dd+eAjkgoI6KhC249eGafObroQ5Y7ZuPnbyqgZ8fphCNGoT5GAt1hhiQsr8fvdbEdFEnrx+1FSNa+EGsUZaCNccajHy4EMLjrYU9TtJN6Z6zxNfns3RvYQrJ3FEyByCNYm8QkARONgm78Qv5RoWXjEVXeLWuTT2iTXrkQbrykAMT22ZODXcmc5zfUHcfgI1+avMFIn6oQCKmDYNdNyQ1C7ry1/RZPvp33WLCBUu70MDReW8lSkc38x9KhmdKdomako5smgeyGtGttT38PfIIIxWFHyY+MV+Q5XQR6SSwoY3BHMWm2Cdy2Aghra0iOVKu8c8mYRwHN7O8R6ppJ/j1mAd0M+mxJRPfZLgKMvj+PWslNtVoqIcJwCgbE6cifFjl9sFKjIFf5IVBmw8t4C/xqlO+lMqW64l3B4amkquRi8PmRFxb1M0LKtPIT409ZzVhXfqSuyWlG93DR3Iv2ydUSMdVHtCz/B5lXXTar+EBtBXoG629eK2XqaAK0R1DYB2xh0SjAFt2RTGa0BDo5LvLPQe/Fw/IH03l0LaoxxPkQgX/SDiHU5w608oV38mgWkxFxbBhBHzVOwTwMK3T9o7FDXZgFKLpYhLMQq+Y9UZVEuObdfsBxaC6JxBbzQsDN7t/nBxAGmlAuTYTk59Lwe+dVtLSflYJwh3wumAQvkngSDKGSpGrgBFLIiIAGcr7tY4wQT5mZZhzsGHbHrmad+soOUwDoD7q6BGlfX/YzBMuEKQu4Fy+AaUbQ+Tamv4UVU1xUHB1Tt1zDmzx9mLBxpP07J1CcC5dVvF0cuyTe/VhGUsXsmOuwaq60gO2WQ2GquvAuxvEhT3r5UzVzGbCbgkqrFwm8NQQo/0hR6hiDAiz8IrMc6nlp5esEwF1Bh2xWhBqK2oN0/Bg0f/vFmuQYAr7RKKy+9d1Q/rQAm9vzLa0n7pqRte6EW2ePqG3FyOcybfAqFFKkjoLn3LrgoWF5wjbDFKkdfsv4ZU6/QPgkCVWmUPeMvw9u4CthvSXy4hNG+ug5eIvAPHl5VoPwpjLQ8kaTUOcYU5qeW78Bzl66zoRusFo7orA7IGE9ng1FNA6ujfBNv/HWO7wIChcplRXWJVhIKzFvLlnwG+xSma9/01HOAVksaF5adlHt1SZsbbb1RMDx22tHvJLKJqgop2QRfTfjAWWFWLLea0mDT3w+BMR4vFVT8dJEKM6NuW6Rxch5wGRImQYv7Caqliyv6GP6qbzNNL+f6J0AYaZq6pAmMHr0kdYaDAT5/+Cwqteb2KzlctAdudfas0HZrCS48W+pUwhjR6BEE4opduGHd6uCR0q18cYu+8x6AEpLCrx5w7kRyFCRLAaJ/8AoBwbWwU0A4lpJqx3hyyA6CnVnez9uVtBqhjPrcRKSTijDOsdQyYEs7D17LCaw3OHbGL/5A5qsZONpmzdAp5esWuJRZ3BPznVzfjYdn7GW9q5I4xpmgE1kVZXkJXBrj5xijQe0iPwO7PI4MrqOBaGVPCURynfAXe601XNcXtOUrSqb7O1y4CcEWHzzAy8uaJ7aWSTmyX+fqRQST+4Ycsoqgv1BEQpVImNHqCvJmtNGk9BhybKo90EuJXIwKoxmy88xLmRj/FC18yweavwJGIenL/8omVZMRgmViX5HynuYIDtFCcRFhIAJekg7dSU6lh2hWOosqU1SK9U8FD4CK+G8+cGmQ6Ouhvy4rpgdYxxeND9pmym1iOdmlsqcPqlabGnuiE7UJEy+v4F6os3M50G370FvdgKUqmaCtX4/1MlnamNgvpfxsrzyRzObyw9Bd3RZ5Ux/zliceBoZFYc5L/fpfkZJrYW4gqhgawpAqCZenss2b0R93Zmgntrs5/qzjs965e84nqQFIFtwB9a453bqFSZvBl46Kx1kKGAA57T1z/MVNCxJ5eYfZGCRKez3skz5ZMX7sIo2yJymWLpmPjvI/JuquJYq9pLm+ySkDBJN4zyssOvMHIbnF0zcXlG4JreMRRTODRIpLcf++btbHsvSP++l8Nm15nncxGHHAMTOosIaYr+xYfkv0891sTleLJO1vXJA4NgJySS18IWfK7VPEzLrogiPGuTKbej0WV42uFazCqOn67VRIpZJ7/bIMPJzZTemwqmIfKh2FsSUOOg+Phk9xvuoz5N5/hOT+W/OAd+QHegWvbCq7nhkP3vvqWv2sKqOVQ+LNumB/fNJ0yGIPiHVknOpXGF/fql2GmYNPyx5b0/Dr8593JzlkujRu9dv2cADXePihXGyhpSN4zJsYjO0xXpJTgs1zQ/HA8/lu1zTyXSpvgHq+1klhMA7v6zWEO9crN6/CVeLgG3rfxysYTT1haTNYn1IkC6FglPXGFNt5WPH8BBaDNvdMhqcjrKAuyM/DRffPqrc+D66/QjGasFjeJtv0RBh0DJRKRXc6CSZKu1X8kSh+7lr/FlYUU0YxfaVRn5Xo8Lc3WjHhi+sBC5VoJZ0rhybyYgEPtXKAGXefLVaTULK2ipSTiaxFGtAk3lYlAZKvjLWJoCJfHzMetPPYwwZP4cCB3GatEuMahapGoeEr/eseBmB0P7ck7J2wVb3T+2n9HPFAmarVFmS3aR+C2O0f/8ReyAVStKVw2BQIuR8LIEwIR0hN42f5HoXBg3+Cu2lW0L25uCz2qQ4tIx6T+MmIIbnzFroquiqj3XT6ZD15hEiZe3+sp5onp51a2TT4vvzr0OeXmC6M1pB3j86tkjlQT5AMvQVToDxERolpI3ZD7gqUa4tNrbegWnU2nHl410Bj6nndN1+yca9U0pm/wZ6HSpsJEhm20tvIfdUGtolHhh7y4izBWnyTcHPayVsK2EYjBFNu/n1LqUb31FZiYs5s00yoqqvHwPbBfKGkRR7ZKGnwvqCeMY1BFCGrcMhq+00tGC4s00K1L+04YFXY+j7vdUBjNUR4vrKaVL/o4Tgmd0sv+wnG/Ym2ywuvYlwU0C5RZO/airMmCuowCsLcwdP5pJcp/Pq0J6neUWeX1o3U5Q+g2hdbPsXGP43FlLk2B63DG2nourqQ4ztVR/RA6ip/mmm9/c73gAcur6EQmHDJLj/Vs6pcsMY3A8vxuYdFyBoyEkkKxLMF8MJu1UdQUi7sjNTm3bavZEFHHUsS+Qvi6IlEYrrFComgu1DNluw0snietAEnCc+WcJeqRMrskuvyQ+ZuyBQlo5JP/eFAutzYkKVGqTdAg5z/XlsO1G9aksj2wxjRkPdxOIkZDAai9MFwTWEY972x7/82plICjgj8kyvpFsDJ2+4woURoeBWM3OOaqa/U5zR6q46+/hIJIhpswQ/nNXf3J7NVdPwvWfsIP5hNxwkMlxyl31BoSLcyaJY1GOdrjrnhzRlHOR4k273oUHSZ05hQshXQqMMaVBtnI9RRCrzYIg5t8OOKygXzU6jMd712p5lUiMvsOYFUn+dSGfJ7k6g7HEIdd/UwYMkXsM/5vsJ8h7aoTSFqWfCh6qUbgMnTRJLHFeE5tWGMA/3h6L8ac2SLBYsHYhUpngTJI96BUyH5R1vA2Hk8l6F4zE+/rfaCfprjhhcacB/6Yw2nY2kbkl72X88kd2B83JDB7zqpX0VFKYj5Hu9/SPlmDtXLUXGyi8J+Qxu4QIRIfWFysbvv/Gew9fTviukn2k65c3ulUUFjXQXlIwA8tVS11sbnKwwnjnGw85hZyVw04c+XTCICSBI/5Dp++LHT/iClmiHGfIIYMRRf1YPNa/vDSMK/0YI4f3uIWK1gC+IX97B9IrWtkzds9fjxsXNKIRPJe0u4PwSOBNs9hphDMmG8FItGS9p8Uc+DjdOk+YRXy51zYRhwADqbfjl9ZHvnyRI7g6PO+0dcvhfcLAY+dFHtjqy1C5Jt3nYozYASlWLQMa5Fwh+vIRxcx9Q0DIElJJjg4ed4fU7oUVFdk3vCDsdgv0s77xWV1lK7Lq4R/AOdsz16ON1d0h64eor4QxXsGMr5kOLVQ6DGL9tmGtxK+kouLhm9dFQviG8/9zbtAvtfs0jiDPSG0tfVyG9EEFf0PXWjSfH3rCXcdSE2LiY2HedatbTp8NzgwsKNUtThab+bZ0BmjiElNaNtHPVa5gur3x/MxMIUb4wGHOtVsNF0uvt+H1U2TWpfcsxauEdiwQfHQS8KkFvierAKscCP2pLcZlr4sAB0YaqndAVW+1+dkmhf9/iegLqGnTZdMKp0xUBnboHhCrJEKTAPgVclvh69PJf9TajJ7rIhN3PpV63EWWmLCwzkGCPMPLarIbTD1ZjvOOJIETZruH0h5JyFmraVwGz2FN2yCHqUiuR5MCH1ZlfezyQMmqUrA47c4SndBSNmkwRGCw3H5Xz7/8JwvAi6rYVgl7IHu9ugMVf2SLVB69fOU6ROTFXVJ3rQCdTxjhKtyFg91MLECQUuJZqqdeeYWNlzQ3nO0b1a+f4G+H3dQpHNNBcyLT7FfiCv+fJ8ohb7Y3J+rYmCcGHhtHxPJKTIVm7O7R0xu113GNctzDQJEseF65X/SgWrzHZJZc+CiSe/43X6GRKfoWAxzL65T7wa+USUJvGH7P18gPuAyrFcMO4vanh1VeDYa36/dRKoxYPttWCNJz7gUIC7mfr813tFM8idawl4RGcZ1X261ffDFXMhzkRcnoCYEJ5FSL/ngZLhO4DZNoUoowU1viL4Z6/YfA1mmHb6Mx1cydhBCawXFjWNAc1CgjrH4vy7+EBhRY6+Zuo6Qj9h9WTc27JXEOB1VpHwtbtx+GXXTPW8vFuD+q2x6MLFWCrFAZgZd4+W3GPqACBXWPLcnTl1j0huvst5+9oQNIeI8wLYLdVzCij+xVsi6RtT9U9xA5siIaAehZocDwY1RZm9ufChArVBbdOIZcTad9eDhjPRP3GC5IwUsgJ/D/QpXat1AhCiHqsER0HmUyV8fNqoTW3cLyOpvyosG+DMgnNLkfXjp3OSRegnOfKOwu+3d3nxFC2n/T65dPL4uKR29MBurxnyNhOYL7/chgbG2AsRgOGWTTT3pJSoViBpAAwTBy6QmkXlN/BU2hEyZsrgV3B9h0YtcesZMRdWRevuaqI+M94+pamG+yoBvBCByuaw/zXmCwrMGv27WGGrlD4futmVJWO3X/Wcca9JhIShJoePKSXup52zFkIaRq2CGbV14y6ROEXjicB13sJcMzyQbOUK1LR4bCF6U1DHQAQRvjZyH/cVQiqPako3uga6iVAhQZs+4YmJXcoDgH+eby64DRSbeYA3iYzKoORCccNzxuwjombpXGXs9fS0p1WQ8wu9E9rllAChgk8xEpEiwkrgLxpOlTvpSxyk0C1pP+jXEfgI/eapwggsK5dzTnX1EVf04FYQsVWG0cRYhfnuXPYsEwSxfGlKGU5cK4rI/I4E/men0LvQSkmjCkulMTdbJriy9MnlcaQtCBWYVsZ1QX+RA4iawzDHg4AowL8vjd8TpthXF8H0R5N1CuFtMiZPVAlOIYeZIm/TmqY1qpSvn2RZiHmWAiF8Q3MdD3SR+qFEcVL64MDAAcIfLFh2dspfyPaLtSi236ef30x9FaSXi0JWaVmjPlkNWSV9wOtGvQ81GQJnoE04i3vz2Sg2WBoldMq3tNh4o853g2gFBFMDYnVIEklPxvxgvV4Z527OIYDr6cI/uO+6JdwMQU6E0pX3lf2auUbcOHxU8wTxHp1wq0K/TE86h50Av1OEGAzAAAAAAAAAAEAjRABpLXRWhN4MWTlmsgvRWVn3w2SSiys2J0bCiU4IrFVnvhiVtLay49uBJ/bh0cM1BOMHvcGAbV8ybQKpt8+SUYIBCsDeE1d+qijhrF7OrsSW3mEDBDRdlwc5B3H+mdD7htL1dzYWdNxyO0lp36oXsfmaIKA2I8YQUAtdjpeFbkFHHn8zQ4BZRQb67mofi0pG6QysEd+Rmm5i0MRmWMj0y8xnR17AbDjanXONre65OHq0iyUax2w2putiJM0VNAEgsRe8sk+bQtX2pQp3moUmcAAaH6X4VWnfkwBMoyQLxjWcIg+G1zAZsDOz9lA8amHSTWpQh2jm6eD3ja0gRvIbkZiZ5/FWiI9kGByXUex5giJq3RsZVgdqH+lnowcI84YRcDuNqchChHyM5arxwtbfZiIp4/zkuIxxeOBhd08NFM+vF36osX/HsJthQKA7P49XoKB/OFzCAyzUTLXowohYMHH2nquXlgTG47c1n3QPqiG1ETNnp5DL0PuLSZ/lWfdDqDFDtVYuSCNfOTJDbJf0VR60UNcgrQaaxWYwqXED1x4GUEUTPrRByRNMK80yuuyTUGzTInKW0uS5VK9qE6TulMXRpwJ883PzDZIHEAseZgb4pKSx5TnYJjII4wHtsFiQOz/8p6vLX6MTbmeLZYuYcfilwe457z0oKJ3f94aoze5pTzH1GJ4p8VnJk9vmiQ6dbUafk9GdpggFV0bDZLhOogYzDYCkN+OzDrWLMl3Y78W4tPQP4yxtWdMswCFLuRaWGm/hu9fyOjlxGN3JA6/JE0HfQZogv5PKhZtz8Bh2ti34aBfwic6Xyo48KtZpNCalkMx7t63zYaehGxHMzUJIFwkAfCTxGOwGMPIa24nr+wyjBvE28L8MfGy80NTiuxJuKSwg+EgkHuzC8RCE8XX9sS1pdAAzGLORWMWu76F1rk011UaxFUNPbNpylauNGQwtqzo6wUoVDG3Xtcl1ZTfrU0nVXtnmUcDvOO+hBf4GEvjYZd7nUcBShzPhmb/d2jdNMJlK6T2A/fxQGhZXYkkQ9FN6yeGIpypbrOWNY2pheHsopn/OJKvam/4PyuxxILpzBFs3baq67pq6XZTj0hOwBpUlaT3rJjTYrldMRutYhVmtQ2Q4/wc+y2pJ+uGRoXLZ3BneLG7C214zJfth9YWIRWlkPf4CSB/QQ+rhUAp5jzoYYYTAtM6bW1Mc/owlZ4Tth9vedKEq6dW8lOtijhK+mpjkuL+2FN8lcL8NntLtLn+Z5AEIkWe3aPQYG8m9+Ld5L2nrLvGISL+ZNYdjCDmEkwuML3hXFn2MWiaX02Tum2aQpEwWsBiVXvkwQIrTEoqldTOcPWPl0IYB9oin7SDdXC1iUJkUQ3PiKBtRRHZbRoGMfb63VXNLH0wXg8ZLnYE9vmFgfWpg4S04HX/KGau6RX/nNwdiSm856ZdHuT6wtTBlIMK4RbRGirBs+W91Ug6pJasDaS74VyLeJzpm924/3EupRjy8MIuF0jxi9GMgN42nTdCW9xGCKv9XM1w2+1Zr5H8oRM9HlvaAkCba5+qqmxG45j8p+UiyJiAzKQamknjSVI0iLpPUmBHjaFX6pOHe/lEp4NRMIA9F+GiwU8uBUvc2ZZO8RYz/I+qv1UED+oNW/fRC5ipXQTwsLVzdd5TxgN3En7kXcowbt78mAHqlayIZUAP+lI58yhISAcl50izpmL+36ujf+EQTSgPAuEjj69fVRDNwv9aGjlJjy3FtMQni2Q9CWXCYlsjZJ8U7FygBkc4SNOs85lj97lXbLHDzMD1k3QrYz6iCzrfaMBvRQbazSgwfUykYGz25C9gJVmikn0rwpZ5ZZGMz4aMPoP8MKlZQpO8Sei6sMQpgMwaQmDJK/tC9+2Mm4fx8M+RVUeKi0RIwlr7axqhH9sIH09c5VeMktVEQWfsp0w2TgxvsoQsT9oJEkzZ8TDowuaz65rGwp8kMqWvJLr/Mj9EPJBP8kfkG4t2WvCgRECMxR5jrzMHIgJqHnXypDxgsC86pVEnl9z99MeWchanal/0wkPMTNJYPuGYTWnG1hv7dTXLWupboTdYIKf46rmnV1NePPda78vK9bTw/y6xrVbDxzgAe4m67Lx1vmW0as9feh1tt+0+hWTwbWFu5s6UK/ZUnnMjclKGSsnCaBPT5JH8kPkm1bD184xKtCgSXxjeyFIzMo4hYEQCWP1jP6pqxLhvL5oUBIMnZR8qcTc9ER5J43caVeDRi2GZ8ceQdMmAePXcd513WJgxmIQhUMsP+ETlGoekbEzGocLWMO1EhELu0Nn7cKi7TR5gMUhnkUQFoi6inGpHDhp7ebeGO19s/lBaGSCLNHcxPj+5ztf3LCU9A+8o+etNsooD9JzW2KsPuCsMOmcV5iyOc3anwgFLNh21TE2dg648jrjcT13qZb3CZGJykLCxi/YZZay4YSNPmLbZqVoqYZ8tlILbgSFXplye7vCKUHsuJXghX3wVs8OHXSBD9BtfhFRuefo6QSArzrrcJjegWh4RMkxlTN1EG6LVjqoRc3YH7gjuKY7Hj6G3dObosEeOHCSOe2tA6XdUSPsIz+jiMRNe5EUnGRymJpcPgDza8q/n0qAHmQOL8HhvJZoM+v6NOLzU8DZc2moAqOHDPVyg5F0/GIaMEgev8dzYZU4yapcxfLUFmJr0jGTFryrttOZwYF3DZq+H2caJFV5FiIcywd4UdRNDMQkV3X8iNVkR5/AgF7ScAiFELpH8Jh9LzhblpC/XSzNVSnernKDIZOIQvKHxpWZYTBToSS6axpYafQmc/awFk6fOdN5J09ayBrb0yegr8wZx09iQzazt3Wd9TVuprjDdJI9IkPRgncKbJRqboiQwJox8jc0+HCV/yCgol63NrJi9qsda4mc6op6PyrkxKH163eNHPjEnoCbCmVS7JaSVOd8Lu5ceCBVjsS5YZKR+NCG21XYBpfC3KWItgeVVwsX5GzAwTp23Gn2G70N2dAhq69hQBDOoAFZ5unCwukBhuUCp9OW+H5jdx1VAtXqpu2sayyyKoPIgVJGBXjP3kjfLsAsT/ivE6Xlz1sQibG3VqQXYMB0oDzNpuWFudyR7wU5pbSqwUAEN2aMusDP6bhMLoYnmk2eKEIitm2KBahu/4TbehpDHHYwmd+VNdWbVyD1e99XZDv7AYg8NoT49aOxofYXfswhVGnsn/deMzYPvR6UMa6KrSCjsaeeOTtctXvWpAcuJ835OmB7PP7ea1LmUc/K5OFSbS2z1H+nb8ORy91k5huDe9uSpbXLtcJiXz+ZdJp+4Y3aaehT+PjobTOG6rHIArzF8hYCNTmSBtqjxN8TAcLeSqSXuOvMStl3OUE8BmTE43Kovj1Ekl2fUyKWs0saksZ5SHbvEvlcrkGs/uyETD3dF90A5QNqSr+kBN1CcfeEiJ2j1sDYWG3ZsbX6BHuN8ncNNwgLnwDMZLdscdaWwBtM5Jvp5UrViYTMy0rLqfwZR0WcbeWdvtQUA35wqtTw8EZ301KhGzvsRosozMxkdxnJHVBcRw54Ihr1JhhFFJY9pFA+6r3fvSfEcwJToZxw3csPGuYiioP1tG8wbrw86ZttdTUB9x3L4w2Fi86p4MzWOXWbG+l8n2hfn8BnlXqSKYaP5HbZ2rywj7zgbr+3lDf1ofqS3QmQMItSG7vM0oEM0LRBtQtTQCd+xujjJBhYW3U4PTx+yDjPJcCLqDO4KCvty9MDDsSu46e6a/Qa5mw8auDieBluc0vMx8ZgRT56yde/jEmtKP/m6mK0IYbEHmOlaWAXigo01N+VyfLtfklqSBjSTQouAoAwnnz2kIXpNeIWIM6t3Ds7MpAWjwSe9vdx/XXdzidmzn0V0PiYY+OMB//2Q8AKHY7KJcHgdLjbl7sBhyfh7qRkghHa0fhwgPOCvFliSyM3z/v5rVYtlAM0dUnEvx9TeMX8QKy9M+fhy2RkXUI7AjamUWDH9GziV8aRjoSpzsuXZ3zdLsaiO1RNpc3HGjSWx75SFCc8Asv6de9OWkyTr+4qyHJk2qchIsi9M2i9Z/p5GF2XAJkzpmPjgACw3ZFyOssIBhlRZyNDtV6C+9BcqJ9Vre/E72Jrt7LNnt8yCyV874UR0LoIGM/WrZQcr4x6jyhia8YquhHLUQpsOnqNeZvQ3XgO9Yb1mHO6cKfUnHFnjIcDToFVZe2NAAs0oYK7XMzt0NVCLQV2jhigVcAsnxVrelBwKtSiv/m5YqYwvFBTiePZ/y35nmNJJGwBGm74Wa9UQ1gLYvOwT4gxddkVhVSp20GDcUAmlxNLUwEiZpn8osw6sxd6zlTR9Yozq5tpTgooZxDChBXfnF5BM77Be88tSf34Daoxd7s9dHnrpLpZkH56h4dyGbjWo8XplRkOKI9ays3U6VJWufs3kuj8Ev9v93yHLMUZNbkpsIRP02Dspfcz05KQ/1N40dnYGULOpqsU+p29Ao3I41kYtx0Yg2y7YTjZjZcoo2VvC4gyLqQZewTMyiVXR+E9bQy6vNm2+8ArICkra/MeUj8FDfxSd6vPp+prcRcoiTINUJaK++AKmDwHIsEvlw2HXrmyRO0c84HpptYA1p1qS79eHlAAhkufOq0INGqSuZXjojK6R1bSKHfK6fTr+VMa6F6W6ZO7El0TgJ0tdaYWSFOYA9YujsEPZbGxf5BvXCpBeT33QK5PQZ1ZEcU4yBUoBozR6Fa4vz6Am1Ac0T4CF9I0PXJQzcSCPZsJd4Hz5s2rLbJsTyU+Z6Gw2VGs7sb7bOoN2t++tts9zZ1fCO7P85i0tuzuuk2p8pUp4hbkcYLz6KaoKy0JOw0GVpXYHb1m3Tyw0mRApzbehrY2dclb9VQv2ITNeyIbjotRahY80G7/4JehBe2kuqsdrm1NR22k8/6p9yYXrNUg9mcy+ohFF0C/fy5beEMtyb6UWPmlF/nlAEPGV3gRH7xw+TctOWGiGzdTuNESPoWhCX9J/Bhcafh+UVwgwD06PiGnYnsQlFMliVpO8NPuHuUBaBX6fx+jIgjYS4r2AfUJIHTNbDNrvcrVwXrR+IOYjhDDF7cVq9x5vrG/kJ9Bw0AHfdLVX+0l2KBkBolzpBHisx1R0IlHe5Bvh2inFXKxf1ezjm4jzmDJ+/ym8zV3OMn2d+ItuRiETzkB6E/FqsApJh1tOw+gmcbdmeM/stlwJaG/SmvPonTcqcN0s3VgSr9WsrnUKs21XZDxPQE3pKAqGI4SpdJqadLx2D3glId0ABaWQHy+jCYO2aYbZx0iCoQTi5pxYzY4WUVJjh8PEFaYOOhQOQBdtTIkZgbBHT2u+yO5laRcG+wc1Dcyn9r+eKlsX2mbQIq25Xn9oGFwngQhL0e5nOCjnYeUUbVfVNjYs12ceGNtvupiNstPQKo+QCJ+JrIlNVOLlahgWmdJSpk2imcUhMBmbJ0fiPg/upmFSZTrdSM21XVsZC3EEidIz+c5DRtpTT4wjhH8YXdDPvXk/cckca9VINdR+PC50cg/fCzDLcjBCfY6m9pkF/3d2z/Ovny5pOtoDxBhj01ObfVuDAwAHNVo8GJZ8LNHkh66aCinddRzGZz4Aw0zcBXiH5jzW1GialPm9frgN/PfWQVAZmcPR4yUsacMMnci4s4qEsO25g+gOpIEPqJeEHbuN0KxeVOxGqEFUUd+9LDN0ufM+FjpskLiU5DFHqNF7vXIyySiR6iid6jiPrxe8Quuh4pogZGv9ThBgMwAAAAAAAAABlZHXAMGJ4SV3XLNzZ0fwcDD3NzbcH3sq9Et1MS9w0Y6zFsxuQbc5nS4jVBAGdjvx58Sr48SJx+MbcIVuWGSMOBb87961BtBQfmgLe2z5ZPjx+WXySKmZKoml1VSAJnTDfNHjuWWrFSy1s8Eqo+rA26duc99DSMkGK0vO8va1VDeSqTPf9tQ2mjcKHUdSBKnaCRmUVH6dZ0Ocu6pr3zB7jONzXERqNlBhcISNGd+NnJYE4v467LKCv+M2SODM+GGE/qi0urUdGATKGJy9dqVgbwtJHnNP25OLF5mbyZL999qwvJgFsDOEgvoKZLR9PQNslW1PsZcxMUqhicQsGXtrMrpRv/cM1lkZiXWTyUXR2DE6bkObelo6Wyk6+fVSzTkcu+fMNkS7FBVHB3oYyT2oaIxZEwosH4MrGO2yFAMvo0Z6BuJ+ut//dM0Qfhqr2Ll0B1kXcltwMOOoVMOjftGV35HQFJLedyFeS/Ls96FUduEkuiHitnlYDWqBq4t2p2gWze1rwDbXw5Vy+ytt6kSBSYlncHx2CJPT9E3Gx3wAfy1oIWmfyjxU8QlCYEc+tTOakkGUCkPeuLDsMIpeTpWGbN9mV2qfP8cvv/+4DkFPvgUhiCQEcscOckklaZl2AuaXTcaQDxuFzDPTkxZF9p16J5V9hCxGdNrASn4kZaUq3u3K9dEhWB2pPtZ8pHifWFZ0vvA3nu2oj6Nwo/wqpMja9QFbLp6kpsUdE6SAjKUOhAadfXkCn9s2hfDHRsVq2FRSf/s+3WGguXV3xw3BBPWukEZFf+6qprYDrWMgcuvvDfs9MFAt4cdJTDBminVxyiIOQKLNYA4sHfTJzYbaPi9BYcbEOO4y/210ey0TWQGqLqA+7o49bAlp0OJZPLtEEGQrhGesvbrQ0CtXtpNPwoX4LWu89EJ+vx5y0QFyqIkPjjyOcdyTf1G4FaBMlUuhtAe63Yzg8y/nc9bIiUx74FZhPNiGS3Pp0cxMyGGwawdLzENaAfwEXvJuwmFEflNksdDWqDSBwd3aHgTwAYHDXSdu7AC+muYM7UAgpwQcumnyH+XWmMfMtKJ0mjiGPzMW8k2pIURBgWHMQhMKfNGkEH6XujpBOWBeiLwYBkVqZcH9sbm1ZRZsYYKYgNwWGNfJVC+qD4Fq+KotjmcQZlRQi8G22B+k/Bb79CVTBWUcCWTWCzNh6nIvqPmmgGHK0Qq7lJaA08EwtujNYKyuo+Fw1dK0hiOX9AZ8F5Z/iB+k3Aqk30FlIGyfrfWkNjXWNIjVeCErIQpCA4asjXOFiwdvA1k8waEk29SqqC6oR7QTyJzRm8/yjwhXXNdFA3WINwsS46peBp5oJOXCvOVb7sWr1dvKpbwFzxOrLWEOuJy6dX0RSvOMUAj1EmGoxoHtJKtyVkIGjwSX05dHAewRccXExiv3HTRiQoHx7F+6hUJqQmxTvmgWfKDJyh7CzcVQvDDgQW2nNa6GbsU2dpFJsoDmYhklf2UvoLrRrlczh0h6g/n9ZEj7WHYDdeek+a2DO2XWBIDk+9u6hVhcAjdgVawN8et84xiPwdqFy3VJHUrWsr9bfvEOW8yTWWZ5IO8+O05EvAd1GHe+O5PCAKY98oO4WzI8hfV/o2y1v6Zgbowmw4HFRlbfd0hY/hPC1i3yS0BIBNPCUhtF7l79X05Vk1nivBFprq2hFcKer3uw98Dpncj3gDVAG0k6ipq8NWA/plElbx0qTOHusndd8inxEUA0JFNYBl1YMOhmE0l5ufUm1CtkjnYQEuTfZGiXNpDyqXZUslC6CK9mPxsEoN5brkCk5FI7SAicSNJLbAnMp4nXemG8A0ltyzQEydSjKN7R9HvhOwSy+uLXLUf049hnGlLq6uYvOWYNCJu6mbCkjEfchKa1cFuAOOLRH7jRVz0i0R6QOEmtmFLGfdVAkw7MwsvfeQ4ppczxPv0M8LYatU4WcOVuFrh2ncnjgxqWmLIdJ+McM6N3SeYmx1FdiS4dTb3hzH3G9RwEcu1VEF2zgY6sQwjn6YPE2VWl2DfwpNOcETIPCGgK7fJx0tXcGMn1Se2fhUHNu1UonDdcnxDvnHxOAGUE5bz0MXDkUOhjWCkXgMnH8A+jxoJ3fOznW35Ugs6drEdR3yubG5d9jpmlAVmbTtmQ34PsoLfAzgeI0PpEJlnWLa1gUdr4dhZfwNvDUnD6AWwR/I7w9H3vZXFewXRVWelp34m+vG0ue1VHHRxuU53r0KtaJsrg0aqNZiSk+JS2r1tD7k/2DFgTdeCYZUWABcAJ0tqan8fAdfK39JjulKRlavh/84CfzBOpLn2GrsyDm9wpE1y+ppOpeD6Hbj2uZL3LDESFoeQHr0BYarjSRItlYtewLIhU/9K7YwyG/l4XMuLfinxYGWDbLzIWMPdNaaFHgtcuDqD2O2/jTmyw+O1VWXKPONWdmhZt9uDK2+F/lWpn91hwzaOJEplmD2S+t9u8bBjDo0XfhcqIKv3tEOOUBpBdmAVU7yAjNnPESMDHbDZ8aIGMv3pY1YzrAeb9i/Nl6ritbJ6hn/jWB570OVipoJu5uBIwkEcq9JeGo3YhW2IXDP7kdHaeGN2QZ1VzyQIb3AVm6lKVu+lBU1UriA16HktR/pK+Qh1qE683uoTZCpQmBQIbmiiGQJ8kXoqPWYr1RTqcs+S5IHb+iJn2lz3Ijasny5lllDRbqiiGWakkqUW89SO1div5cMnBqKUckonNH6oskK8nYRCQumEpd2BT3e7VWLGoQRtDonizQF7LOtSjmW1Kn7FYY5dzq31DibWlzP+UTK6YrrIbSo6nKfOWkZ1IFht8UpcCPKIbRpj0CziidX0v/wbRP37DoBkIzVDMffWqtyTZbsloHorUJuYwQEk1CTnzrQXym5olizwsTywEa1wwNYDMe5v3gvqrcsga10EMrvpfQeVrk3t4oXOtREzmX/8pusDGueO2FvJ21OGq6ggT8auHWokbo/SiCynEXK5i0mDAG/UDjDE2YH/kqUeAHW4AU+9lKvWYqRJI5F28IGVQ4TcS41RE17phTiAieERWCWPamIDk4/3y9DC8CEgTy3ugsarcmm6MMLfmPnDzY2zHxOGOY55WmJCA6of31otYgEhOD99LptssCOeqNTHpXheyt/EvUD8vhbwdZEty0zLgEn6pUgyo//VdqIZXWdN/BbfY0k0b4uvITSuRQPM3R03zCKoLYQ+0JPbtQDWvMg4OGDOk6sIp/rZSWBsLwQ6QPtjsLjzDqbYxgby4Ls/nAVhRhasicTz/SAL3PLehm8XtwYvHm8J2tnp+9EZFwZmyVbRdz8kUqQ+kHU8fZHXxpfrc7i9Httt5dFRQNdWv2KaHi1SP1j8Vz8tAIFro2b0s6j7AIWNIc/XEoxr3weAXyMrAoMOHFdfW/jT5PRu9qH94d3MiPMl40CPhl545xdixtV3+7TJkf4aovL3xdeP4UktYibA7fomUcI/hTy+mKKAlT5PYJpwxSWaAo2J5OD46tGaQKFhmmrgtb+RGxli2OBnL9X8cySiL7uCXNZ8dv9p4VI5tgyruegySLkeQc0ETtguwEw5U3cXb7qQJ5lusuEoN7XYbeRKGDJvwgOkPa5eRsI9QH3Xrhpiqbc3Jjr/PjZWxlbLWoEuxcK03/6Pm0s0JkiBnD3YqqW1LdltwlxNhCXAoLNZaYi81wZRctszncnJ2vO+BIDi9mE0jn81I/GWxzrVRZZ3P4QhIlXYEkTHg2qHFydXmhSFnjKnuEfKb90vWzXVzeQc0HM9VmBaaMjwQME7kTC7CzEhl1rVjv4YwGAfLVPMl0Cc1ElvtwZCoy31NOwm5wnWYuZGRPhM58MIXiQjhseZlSpPA/tCW78lHumTApVKXUO5FioXFumOD9PcW/La+sdzgR1Nwz9qu6YjhJdCgvH19MZmT5dkceFO1MN1N7AV39jJ9Lw0r/uNpQ6VBuO4xWmLQFma9mB8FHLg+gGuxepfQJWLGnooDVTfW5IgMJeXgaFcIDxV/xr/KkvaSn/qlPC7oM4bzJfJHger/g/tFx5k4XqatrjgAOtsUDS34Pxg+pRufdN/CHcrsSg6f2a1IOVWeRYMRQUQ9PX4lieKb8/jR7inqt81R0rrlDCX4yfxCvow5I351gKhGs88U9A7355f5uh1QpK1RRg23mlOfimiF0Ac3Av9hQJT7VRk3t6k7lUOlRaAh52VktKHzp4yUsKvNTTp2wNv0gbUx903bfRXTj3xlPe7ttgbJrlTd/Qk+HO0m35Nt1aRwZKAhNwwkdxK4dKPCLZzrG8VHpvkZwCFkUdE0UkvJFmkDSVc/SgDRYmZZus04QgYfjHkhkSaei91xw+ZFwAuBihzyKxubaovc2NjzeO0Q/K/94J9GODIJ8xEhkOwtE4mrR0AfQzHXFYG6LYMHnS5uDoMO7F6iX/2A8krUlo4YHyIoSWORdxCEn0lYU+WjnO1+18qF94Hiu1gOtM6BQc/kECRf2HAGo4kIqBQZnt5r6fOWSoHnxI4A/oeooBiL5OrYpC6Dfl9XYLs4FRiUWh9c07Mw3cSzAdn6V+C9ETrT/hYU+X+wvxOEFS3lAhq4k6c+avS404YVvubnAyK9LKHRT+uov7m+b1pbyPWJbonT3ddeiQ/Mwt2UiCsVRXZMExWGSWSnYGpjqqWcSBs7BeZCztq+EDdcbu2eV33IpRLIXI7JcI1sW+IoKYAi+5q2z7rQU474dAbAULN4l8j4y2KFwH3O+v3mcsDqBGx1ZAPVsoP9P+eAJQ8uT48pL0zxcax51LlJW8GRfXzrBAqkLU96Gu9agk4KZp0bZxwXEQeG4wN7rKssrQtfYFSS4rTGjBswpNbgjRMH4C6HW7KFNIvCifmvbjQ2Z0kD8NidI8o/+tsAZdUZ8nI/A1t+sUo7kQ7Owr57eew6fOjDpLRgB8mMf27dbc2L5JsrBX7Cm3z2qsolf/CthxK8jX/1vwa+dZC1g67cFjkzq5bOT3W7cmlRfUwVms2Ko5P5j8INo3kqZP42wgNWROFMH8c/ZksKmvBduG2bYWXU1NXqGrA0L3zuHuB6zz8NP4XxajqjhPFFmcvVOke+lVRrOoHtVGEI6u1wjcwpXiz2ULZhokaaOQrtgRMCmYporm90yNEjtU/oRiZNM/mkRwSbAdo97fUTUSWCSeFpz7+O5i5dLIqxOzjh/J6N7D3uF2gEfsIY8MAF80ZrxWE/R/3pP3g43KW7aArUAswiSFNmssWFxibtmjVs/xDCm/s9sRZVHtGHxiMtYj+fBl4/B1rS+09PSgQv+HT1d+KGunf8lnfbPyrsT6QfkzSJvCucAXaUIElEzBB+TmySe2BpjAp8CCMTc5uo/zdSKIOIF3Kepgt1PBT8MRJ9JAAmp/5EnCkJiRdZt2igg8+uBPiFB0OLvkx0gmrdr9HhFUtRJpacWsTE0KwszBLo9qXzzyto8gOy1WskiJbERDT/cwny3Gzmhn9++Cw2zAEwVvdtBabEL3WNtYx5yZrMkYckeNNs1ulczEvmZlHZqsNps/jnaOsyEtjpcmFGu9xWCTs2gwMABzoOMVSR98+zZJuT+7rQKJOjyj2NZ9bVBflcQU8XYIb3aOs7qokyFX/TaWXgq2bGo9e/jxfDXpiCA4riw3VNu0eBQWkfLQTJs21Ao96EgFselhoaHoqVStnDm+EFYMAZAGpr2hKFyWEEJbHPCqywiGRinIt/YsXFo4I1q8h4LLB4/U4QYDMAAAAAAAAAAfKkBAGxuMaf75QV54s2dKkyCUEkeJW1KUTHgPEaR2gd9Z0imryRL9K5CYSTcEdJssFEbipJ9zWOcv7abLtlLM1ceDER10BvY6T8nsYY5tfCj9TWYPUaFFool+CyFPYCQRUKO+nGymVbmJE0zzX4Zr02qVUroXXLYWZU03okkwNQiaG16E5JVDtimgXDTNpLwFCgNRjwMehMfH4OEofEBDqwTKYctW9R7ZE3f/iUs3pLA8uxTH3spxLXTqab4vfctOCMYanJQmA2UpDWsoWuPvlrj9gTlxtZRsWJ0IMwJcM91lGOZ1ZmRr+lCQakZxLGQWnk9GOfCeawf3DiKzv/1789eKbGUdrrhCFMHghz0j0S3ocAJrDVdKRTbRCVtbGB9gjyZD8HXgVboWpc5b1yTjbJaM6oCDtii3+dpQA1y+75Aq5jVjBPM0FCqdiG1tPy3jPdnD2c3TIOrWK8ipUcz3zDxA/htLbHXPep8R20C217PHSW4XhxTNknrty4QcizQm80hp4Q/fZkgi3Kz2mgkygguGGKFBxVGJ1YDf9tOcyi6aXB9wKmSyxcKDhbllX9KXwhD6eeYySHz+AcrLMgbjmzooykwX8ECAHUpUMDegyIMVZG7mcbhM3rBDHCbxadwPHDjLIyVvH1VIM9btlHMOYYwn3WKlp4n0/xCjSiDzJB5re9iLg57PvYeyytLxjxx38HIgLoogDG6pv1IDsO/j7Nj658Kmmk9hPfgG2atyFD6i8UsE5TtEADGIQs7iCzpNmlj8TWQPTROldK+iukanpUXP0SAkem9snfz9xM3Z2YfamFV5fbZiB5Dqz5i59EP0U321e6q7TZF8Q2GRHl3MjTZl1yfvw3ulqe5oWfo8UuR8S7Il/zHrpzV/QHbV3hMz8W5YXQLZIZRrHjN7p48m+eje2cz+2v1qFDHiyuYUFNxZ3XMlzUoRLXdzazcFs/yPoueH9bre4vMjQg5hn6Gj0uUusygJpzxwYzTSKi2kr5UbnfFAULseus+6h5JCc9oEVmlXnP3Gj0+NogCxbXaiScRT/zPYJvVJf7SxclU8fnhxtY3GJ2vIUffHlxfmUmZ01pGW+xRbjF3qJ1CDVTIJwN0G2vIYTp28XbYPU0JBwhH9jKbm9m6sfDBVH+joXaVOZJOlGZg4SMjW1qWTWQj5uPdtaGqz+xbLDWFZleQxGuAgQ8LZU4qe9w15XDcegNb0KmMggKSwA6z8xfSXWiT1RTlyPrUgV+76QpBc3By+S9aDJPyfI2skbdjFQ8hjLnw7zR8u0YLczOeZznpY6jLIjLEEMHGB83AMrqW3RZ176x+QxJKUaRaczbkpyFhkC2Ep7afqLFDYp4hNeWW5gELMzDS+jJ7s3sjx/E58sNV4X9Y1/iJTs+kHH9QO65FtEBdoeMCPgXhq8wdIxLUK5DwleRqFTfwQq5DjknN2pYah+y3oWgTjzNZxhd2hzrEwnrjMA7jNsV1xfu3onEHcD7Niv+aj68nzYLX1LDIwlAIWLbruKniB/4WcDSsXcIilDiexyeF0z2X4KtFd2x8Po7RSmJ6vwIV7y7/nq8m58H4sH31JBzzppG5xXY0Y0Eu/mIpxICdGqfB1+vLsiNwi6nk8ybyEVGuBU3W2Id+BYeW4gYc/NWdOBaW+z1xRV2+HK7bIW/m8NMC7CD5ss4aEe/jc4OWaS8TyOUl7N4fxEiqxuCAwKbTGwi5k2YlZ+BgSqK9Fc1DvygPEX6p2Dlfk6uVWuF5tlm3W1EOPIU3CWMki+z/JavSXZnmbtDUudc2MAqs53nxybnXcFw7muL6a4zk2Z1a4HDijl1zvC3uYe/Ji489dB2nbS6XYSu+NPnQrVYhPMDqZq+R8kyYF0iHDXaXN4yUVtBei+fXwAYGArzkQ7sJSkiGgAuAsg1GX12lxserd8+ab7ZTbtKFvhBB/Rid/p56fFZchgF4BG9yHf+t9FJ90bu+8oztM7zPj7l2vwUnzRfTL1OZUfdaKQ6a2Zn2EwL1Pv4WNP/k17txdy/IB5L2o2KOHb+tDxgFB1wVpK1Qv6L497/GLUz4qN669zHezWRg+6xfjr733hEa/x+eHMfM5npMSJSKgaftwFBJdjVbCPGACgvmSHBOCMu+R8asbUwpBasbUl+WmO+WgRplVb49zGdGG0WWN/Nx2VpHG1x0S4ucKy3q/jKXOLuqRqNmlJK9Qm/XGWCZO0O4/AnOjga/fPOnqh7eqJ+zzM+IA28nmM1UCwtyCED1PNiOpd5hX6aSBMMR5LH/npTRxuOs+kizJodSlCxEPsSV6OtNPcvwIwQtiKGSyoWw1zkbm9Nd0iyeaOxVXYL9o2GE5Q91LgFQBXkL0f9562+vdGqMuQCIK1JMI/XyiSWNDrVYzvhofaK9BksrcSaoKXDYOwI1+i7Tjtdk8M8sCnVzmFyXw5eonyraPwPdQmB3f6uGYlanXvdhOxTB+lSelQuBsmSUtAB5yD042SGneZea8sXRCMKIKpoOUU7irkBIn1udxSmHuv+4uXbdJE+D4xKiqzkj8u/ZMfGOh1y8B0BBC1q7csQFjjEOk4c5/XwtNGf/WWo1v00eRmnc6de/NRZHOlbVM9D8sgiLwo65qgCUDqT6p8q6FjBSFXG1zHPA9u8u1pLN+bzbmuvCGXDvM+HbpbihStp1Dc1euaCucs1a9eUiF0K6s8ZMEG1/BCediwtCEYPVfmm+F4j20By8nqp+3B6gekHfMhCfkWIpThz/lUOmpezw0Y+8p5Du+vS5D24g31kI0gs7HjIMjJyuKeaxQKAPDUWq8W9ZUZie7GVmKKS5jQlRESTOy2pLu+GoUCDYD+N7KNPBKsMkNTPlOqu7QzyESMfzuBq2fF5Ok9WRVVasgbWmWxkMAGsDQHEKaSWfDl7LywHVSsdursZhjw2UCmpptIseay9mZXXL4dgfEuNqaprdivCBwpxI1mdmluJChMMRS2bZjNZycXNL24fiwSV8VOfG/tSzPYbOgk5euaWKsaLtcrIEgcrlrRXafODO5jYDUZNcsoyDt1AiUekz6lJdykIW3LFHKLTd0yx0CSSkw9ZfaNVcLCWyYu2I/h1vh61CPlzYn5fsHRXdi6akXWJjqisrOus6t/YMTziy+6GO/zjnE3H4ns32csH5N9XCa+jqCiYAyTlXVag0s27Hjoc8NFIuSgtCQVfzkc8f/7/iOpidxcdpMURoON3pgZgD0B54pet21GgEJvI8nnTLkQeYD7usG3xSuanw+jdgLZESzYqBhfvHTf1Nnjxj3mX25H6/QZ8VfSWP7TZs+gfejf4OvJmlmX7sUV1YT9jACKk5npQziKI8pA0Z4RBlKORGzAyETqgryDr0KVpnzcxCYKRzjnmGTamV13uAKkMe6K4Pm4ERvJU2a37YV1HKhyRLxcE1XMHYgJncVETJjFClVvEBUZLum4kIMEjXeA4Ygx8M57a+WfYfT6rXTCxQBpsQ4qZa2LGf/pxTa7jMmCiLqJQ0v+HXb5VNr/y4BA2ulsqCEx3ll0T69Lo2nzsEoLj9jrlIFIKnyhDU6U9OVagrSx6SrgcKcmDItlip/GEbIuAkL0vFPcJrvFqf1nlOSmmmxMklKwrPi/eSOSkOgqXWDEfUy8v3GDWDpvfmTApPkuiWzhWXsWmD12qaufjCNqmmpoxJ125a4RW6SOoir7aToUaUVgFrfsOMtkXaENwoVSD7CKzNAifGDtTLVQbzqRxZV3xphXwGobCdwkpwI3xYvX5dWC2RkSoQZXmgn/b+MF9MMzfOa1SYuZeCl9tmr5wJpee5YZpRxpCBpQY6Wg14t9echj38w9dL4KmjuskWfuCCc7qJdwbIQLTZygxxugBH4NjrdBZm1uWGZ5F/RQUMUG7MfCm4IVoGHmXEA6wOGOdGuo88NF4zmazDmfxzpOwAsvzRANeABM2ZYVHzAbziTVq8ecZlCDoUbSEKrwdx2/bk5U8FszM3ISpVoGmmOCUkRaTt4qA+Al1+E1Odoh5oqWm7NE66L7/kYveQUOkHWrLLczuzw7v1Wl1xAvoNXaaTrcL8mXN0OSfNbLONKa38KYutn56XM7H8faRJbWWK5HHFKVzD+80e5tSFQIFExjkVNT/rzxiDfaSIlheAzA/vC+4UdXPhKrgEeVdWYsurCXJfDB+264v7CZjBY/MLLhIHM5kP5L62P56J4RV+Tg6eOx6txxQwHupsrRqRiskIPl97IZY2F10XymXK4d/mMTla8zN+Ngbp8LeYPx6RxAsI34RRuK3i7ldolWSME0WdVi2GaG5KcChCaS+n8hfWbns8woHTu6tX3iqSVNWH4COwwlngsFZR5Yvq7IY8VxxcJkVXQf/sdNanB7n+cmLvRxvTDOP8YS5pnoU6bhWjKT7523mflMknNSY3ChkKDdofrL16o4o08xbo7flJ5YsoWTJ4p0ZPde2Qb6tFIPcuWvxjxRxIUcEasoaII42pfKrPJtJYSWGvrKKsqt4/Mlx+1+v61jwc3FKQMJEThZ2jIKvSMuuE7mNd9HzwBbjv5Afwr/5iDuU80rHrl26Sm2CL1c+wVyvLWgAfW6Yd00OOpLPleC+RLpEX//O+EGTuVh6/qCmjRMRIv+mHCO5FTLzBAzu9svyvbGaTyxkfc4TwP1fxCz91sNen6pi7QOSrfmPx1PvXpGGqaZ4WtkDM6bFi0K/sBw6+v7Fw4mS8mInf7NQdx8ss4Rexd9EJ/4IoMWJ48n2qWr5QNOWogqPLGV7wYsZ1IMEEu/VzDu9fwJ3aMWpGQc6/0z+xlkXWHkvJhYNW6p4I9t0sEvKyv8wwf/6Z5wDLqndlNmHscFNa3oW83Te5C+kNsm8x47B2t2E2B7mGJqcaGkumw/g51DcPeEKo0vBXrJvUEpoEdtYO3Fu9MnHlgCEu3/TdDai6vO1QwDsCuhZmBzkNfIBezyVK+k7TZUb8Mo7cyP9tW6avxtDhY7Db6+lFnLT4HvB8CuaAj8Os+1+EV3bM6zxYbb1w3qRwTPuATxNL7/4IKBks6VSRBBzI6LW0M15LWNMlIY4L8CEY05v/lX0kcHtjAhkupafSlcUov4u/B7nmku8vma+f3Zrzd/KKL7ep8wM26oHpLx3sHiCPdchTUikYEvgyFyLRBVdg8NRtSd0mcDXD5O6srFrxxgn15VmjVeyWpIbggbFfWO90NWdgEUeRDD1V3PLYOjl/DyZ/vbCtMTw7lGUc0F+y0l3+MeV/efs44cp2q4DIzXj2i0aMvVVZaXhX3fAk5IACb3tIzmhPIBfkCBdPpRezyYewD16uGwMT65yT6PDcFVfN1ikUzn6NSrsrXUPW6cX9RlOcB6RyPhczY+pHiEw/sC1Byc7XlcvV8lwzsO3z8FMbXikkeqyc2C0Iwl8HsepK+Ak0KhpwAYt/C02b46Zq6r6AmN+A+oTdCG8eSgttPGfgdcflFO9vB06uXmN68M55jWt6OgkpS/TaX4Dpn5b1SyuzIJwJ2h1AFvLyzqJIzesxCN/IaQ4kbwkP8r+gt7UsKsvuLL5niHubIjFDRcBsnBuoAl+G7eGa4MDAAfvdl9Ksl4McJtKLONiQih8YUiRkaY4RmRflMWrkK6XOkqtCa096cqDZb//bO404EPEu3Z6e8Ic9NJ9wZIj5TidJaUcCc6Hl/0H3YCjT1yM2z7N8sEGfawKUAztHKftS5UQlTLSjaHeiu5t+fKDQIpSFTYP0b80gWfAS0MaU34Vvv1OEGAzAAAAAAAAAAFcU+EBysR6/Tg9xgSXn1uGpZrvCYiwcNwkQYmdv1KXdhtL6gVE9hD3Sr0IEXPvqeSWha1QSf2FcBAko9yJj3IdQO/Cyj2heBHeYY3sXT6f7OoBzziNc/pXf4A1hKl3Bpk5EZdz3R3OipgZHGKfBPDN+MWk0rtlJxpB05gG8vFkydb9sed0Nj0AXKefWo2hFySAkrP79bbCp1vCnvbahpx0Mgz4CnT0bWmNQ2WM6I38X+TDv26GAFkpcJHWrZC/qL+PYfSqz0NYefM7UwYOqGwlMKhy8AMwJ9OlDL+5jMA0JH3m+lRlwKTq85cHqI7aknQHCQn4bh7uhCO+4FVU0qCpAVEd1DLboKGmI2i2nybgreMT3eoCsuZ2QZOquvkRGZR/S+Kvg/qtguJNQfDW7XkpNBPVL2OrFWrI7wWT9DcM1KJLhyAQUuL3zEx4Mf69NiMg1+itMC0k0kw2ppY+vCfLPRTyV/ouxerUZRgmi3h0u4KlX7KilQVpLRsMCPS7gVPKTQkUkiUvezT1YODAMfZZ0hAirrZYqo7DgbJ4XmXHMgohjO6Zm6tNsvvK9Jw3j7NPCdJFZt8zUOspZ2LWtvgsGqWRG4+BIiMqxA0Qb1MM4f3nYCwUoulJOQO+oBVvkfnmtKZXqgqLsJ/j9Feg4y0/1+dEIKekZbJ+c3PETOZTyWzpFFJf507MwusUjRkc46aJ9gZhqCC67yMbtOx9WBdyuk0ulk1ZIvpycBbTtvxw0p63i09MUEK2QtA+5s6Lkyp/jksxvcS7cRaXJAkbVmHsXLPyaieWZ8pJwFgAYnixM5zuzsFitagVO43z5tycNFWRY0C4w2IBkfVIqhR9kVsCHxrDaINPps386NtAeiZeYESPM4B/Hhcx1qqLeGk9GRJR93v0mIC2qxCS+/tEifvo6jhT/+1WsgTjeQ+7UnLjhXoLPbbUHf5Y/N9uvMVYJUmuQm4DzJrUiVDRA3Sf4b7SdZ7tKshRiQ5saHYlv/OOugplsEHYrgd3/GTNCUNb+gw62LZEwYsNcIr5bs5YrbFUkCIaJde85DjsKfwkj6MvwfOkF9NonPvC6EF9amLs9nxoAa3YXTRRk4Awzfc+rWrF/3APg/3b4vten7FJjyrEDS0dTS8+tiz2nIDpeEm7yZnKLXDEQi7uq5rEw7/bA3b1MLQ8znsLXY/mb/IWPo8DOZFz9yFuYz+nyf1LXaDPdMXxFO6ack2sXNLjkWf/HXFG2c/DXwNNQwExxL04WIU0FaByln6RFfPI8pg86xbYKDTwy2piufBW/Rsl2B77lI/c5vMb/HkiFbUf5n/jxV6RuwM1kl4hh/KP21ENqiLHLmb3gw8WyuXH9cZl3BqBF/Cq7PW7tMTQC/xP+vc89lp2W+rsHkdxOtMYLMkcGxM5KbaJIP5qOy0741k+bYtu5BicV+HWBfK2u5CV+2W8hN5SpjXyH5oUwAkLQj0iVadAgBtmR+gN8i5bf4EzyU3a7ho4ZYDhWuKOhfCs517bnNShJBnuTUrFw5kZjyy8B911XxMfh2JIIhZZQpuMvzAfUYOeZJTugDrFzeaYqVVVZjZ+/okOuk+T5+hOhrVL8F78AN/WxwCrZh0L5nVwKTJq+4ENK/kvK06k/JhyFGZKWYRCJwUS6Etjdv+bvpgKXpN/GtdZQ4NOMQmk2Az32iW+X68zTVVjawvGf+Ay76OYLGy4PcXt9Yl/jDnFX1m9jcvNqVi5b5gZVBeoCnkrUt6jAsBnSqaNFz6r7WbWXnhFBq8a95xqDXMQqgLwdC6yjNZ0YY5xFclO3Xqlra8gZrLa5ce9n8yjEJslf8bhFbS1PG2X4oWN6WuGnMMV6CeEhywZWKW7CfzAs2rGAnp/1OiTXf8k/Hh34Q+2Pp/dzDT4LqNWIxqYCTi2Lg9iCep72wydSiDIR87QqsyUMOneNqjZHEQg8GI/F60zbvxIgz0Pg62+OevAuHKwbxtJ6CoBuGKA+xAQ6KpdiNy/G3rGf3clJnTU4t0zBOaZJSJI1fIiQwr5hQZc3fNHZ2eOzua7yx7ZIH5+ziwxnggm3C3R1Uxjt/C7o9kganRhVHHLNJjsRXFoHsLkmIlZp55B0oPkaBgXxcvlSNsarl5dymzuqwMhXLwIu0YfqyAaBjq2nOMEcV0zBZgRzv+DlczygvRZ+og1Dy/vou3dwnISbV9QCcFIKrOnXjUCx/RAPpyzaPYYzB3W7NrE4s5IkY2xElnzvOl12g+XT4W78xVUX2Gu9dnGG9nFRtduvNWAtSZgf700czuozeWOHH2mwQq+tVJGGsMfRJcuIkvVoKAt1GJx/CP50g9Whz6rY32A6XVcS4Rw//Ro4GMNKI4aOhCbse2wb1Be8RUg6HPx4uXtwXo6wYycQsNxZza0uSzYEfBKHFCH2rENHEqdKxNJDTpnR5Otjn6R/13mdxIY7Vu0xh2yJ2/lBTXlp9b3M8SgzP1AH3RY1hvyttfNGUH+hRJ/PWduwqCLH2PxFg7C+B9lyPam2LdhxoCH9YNq0A/hevBNeDVuLDnE3I8VUV+oYyROiEy7LkBvTlUF4agokRKS6o7w69Bc1TqCgZnRQI77qKqZW0pfGMq+hKhmUBvvnJJ2YNrAi911DWBNRfo2ZqLAOqdTDkAhmeoUV6b9jbikBNvvizZdxP0b9L3CNQo7d/FBA74BvchXLjYcjW/1y9ChGrMgXA/fg16YoMwRT68VXcm+vzBNRPD2SW1aj20xytRnfGiPBF4z38p1Vg2vTj1gtqTxXxS8kTv58IPQx2x+qmx/r5LG/j4Zd15M0JsxiiL7NDU2FvlxwG8ZjnwPL6ZohjluxTivt1RjB+HqkfM1eXViFpnyr7S+3fS2rwC/bNvvkAyenOMls4BLyIxRgV/x4J3TTKgWYAEB1siURY7RNj8xf7BBwiqCllRalX2sNIrgoPJIV4kgdCpas19HZu0/t3+LTAoqnefwhFxkY1lkVxbhgKo5z1kN6pjiue/5fNd69nKY9D11utXbmFKPt/t6ztSotv7YbN+pyuHoiQKEidkvnb98ZAWxBw82RbuyKmXMfwSDVw0eMwKeBiXN2y0aK/Sv6KLfLgHzP5LeZ1GBswm49c6YqZas1icvHIREUHFmUR+VMKoL8VzIca3SoZsfYOEca6VzMkG04YYQ7vM6WBQzYy+Jlewe2mHnG+cMR5Z38Tw3UwBKRYCJFlHAeyytCf30/bkAyUEoDyKW15ou5Iia1beNZpibpVe2UxTeY7p2ejZfT5EvggnHGVN45u3hNnndByYd0VpsuhMFc8BnnGd1eT4tCmfvfngJO8aoqnak94kOwlaUNt8NINuCITjExhO7bbbLAlH2WY1771+62fZKRgdmbNEpJES5CiqGIkFwsh+Xz0Iy6ubmAJvoZ+p3YhDvqj5Z4CrwvfoOtloGMnKNLbXf+5jHC6ymGFlvbt7cfyH+0Brmm5bV8dWAYMoB9GqsejvLNLZPaJIJJ+cKg/AalAW+SSSGa9BD5fanVpuR1T9kDp586MCRq4nmQ3fXQp01pc0Yh9czTQ8POx681homOobqqbn6m56iLNn0uPB4Qr7uRVz9DiHMgxt3rNReX3gfO39udAfpcTeO6UPwql9HjnRS8MyZw0yxRN/Myn7Jf3Y5X8lr0jeRxybBT1bPlVnUuVOi8IY9YD3moa2zL59m5sMp+teGNBtyAz6RO7OWoD8D5vxANyovkWXRHC3oQDYTR1o92981vF0h5zrRuZfVF41UgM5yT7HunhCUTUxNsn8ibk/uRPgCWJ+8Oa52PnNjlbSffkJVOholfCdDWrF6/eahUabcFzRPwsAgC0UppNVQjZ7hXGyYhy06dgVOJct/Swx5yhHvJRs2ob89YbD8joV8dfaBnTt5T48Q2WzL2UbSjm79Zp6mVdEDbYpGPZDDXAUYcNUregi9hQRwgJWNZB7ZiUBOk2YfRMbCRlXpdRh1wveavufLN/A884Ls08DWGwdJd79lCZ1KFsd/FJ2aegY5BAqHNkkI8FxiLy456YgfXJC4Ib4r2sS2zYr6u8hWymrB01Lza0zSoo9uVJ1RbunYvaXlxMagAlp9PVqvK6DRr02eX9MPvF7BhZf1ZtJhHYJzfOefDz3c62u1GhH4pdGldFxjlQTF2kLkDIj8vf+3MSQ5J+b/yem8CACWLXjIFiKntf7w6aOMgksoyxO0Y/Dkg7NQJdupFcuLDANKYFrqs6sxOu3DXPGb4sXDxx5XEPNkAty3FRCWiGaClnbQQcW9un5AEBFuWuHTWvu6V7pyxEGRnyKSgDdDxuuj36RlNqwvCpY1GiTN7gDQFN8PQY6qHTsHl6OF+tiMOHeqitd/UIYerONH6zYXDAdhxz3uuX6nPoSeIRU0DE4WQq6fq+9ex1HihZGV6mToC7BEfqvme96IY3zMR87MoTQM7yETtbmiuZMdTRPePkTQJIStAIU//gJd6ZeYZcz9gG3WD7tXZwoFNozkfDRNTNxzEpBs7YAeQM5WIAWYpVBpbXGKngDnix+mBMFnwZnZF/rB44lg+bM+idg0/cfS4WIcnXAcP2dAvFi1+3DxbEW8CPpc82fVPFgqpXZo/VGjL/GCSZf7rKbR8syGujUF1bW0CLh5lVPokSkt2yACNOcQxoecMvxpCBQWO4vakB47DUm8lBoqWsXUSdQBhaLJcUu7keT/czTfLQkIRpVk1f6m1th3zISkaHUMoqJnLBzf5bjuDYTecagMW6Ep7PuY0FsVqh8OJPinEV6SjmwW2YpsZVT/t7/9HvJZOdpPqpmqSLk7m3ZiMtPwfUfK8GD2zolceLcy7OmxWe64P1bshSYtPutoc6xYY2bn+VZBl3bV2RU/G/O+zVKnGCMhiwSjMEHAjdGSbnhx534WqCztUwfyzX9jq1oXKS8P3Hj/m0WuXZSEhLd+ottLoGHfoteiPO5Hj1QePgk65bZ//mQw3xVM6VQCJdIaX/BX2LVa29TFOwLGzKZdHDN5dP/ziiorKfD1TjGrEAy39kKO8mMYsodS68twr8QQOCjm3JFUfABv8tunuF+YR89hDIOMyZ9j8+AlXfamAyTFE5G3wPd3L067oMmut1uiZ7zJPqlX+hGHRuJX//oi9Y3oLbXogzOWLugxbjGvK6Ewv09Zez4FEjJJ2fmKhsym4Ixu9HmWt9dz/AMdQ8r5rQOynFqJlYInUzMKsH99LitemfznudtrZJzmZUxYbbh783DBg4DUaz/t5x3U1k1UEHftn9heFT31As71zl73NLrBgvcZfgTCf778ugwaI/5Lz7qePfXMj0GkTJRYGH5M3PevDrjiQ8Wj2pQ3PkESbcHm8VntFjoEdGTsQfRh87zSbVHw4J8Xk/nl9Qtz4eU8FlDjgcri6BHs0SLkbMbtSjkogv371X3+mjRyLmebGdHmQAo9+DHWdiwBk+cEbepE6JTrjaKJ8GBS5fj9VoLLpDSc/XFYerh6JvnL6kAVII6DGYua/z57UhyDfwdL7JW58DlELE+urmt4oFJB4Pvh5RQfj3Wbu74IcxB6u8ObfQ6xlkgKZNxI8vwAAAABAf0PEQt0/SnsZfdMxIVfJmS7Q80kqUFHL5i0uEF+AFGYxKxS/Qjrv2PWgqjYOo2IRry0+9k36A5AgVnWQjbSu2MniFUQxgOSdSutPdwZmTjgPA2fq1YNmRe5ZRJ5wgIOpoOkNQIWjxYAFEorqNmt7Q1h0+7fTM6/VUMdKRcKQwEAAZqaqowKv3gZGiPYMpCCAhichgI9nVQCTBIMPGpuvFYTPDDcu2hhPoIKWzdk1eolQa2LTkID9IXzQrmMJIFgc5b9ThBgMwAAAAAAAAABgPNcAUb8MHetxbyvTDKGFfEf8RSUIEI46JTRWbN9Hs6Sw7SyX7JqiuzUD2bn7QFXE0EAeNUdGDRAEuxAFMrO8KDic/6zW/jZp8YMhZXlGVKLFbkg+PExTZDHhpsiPklrwlnXaQp+TpYWR4S0zEg8MfTwqPQccu3KpBSnNWH9CKS0Jxs5Dvad/6Bzcz0ISYfKvfO6MNb440eathem4sXSbNu9u/9nzLeJbMWlfQS/Vki3qj3SiawOl48fVFhO0NzXTWVDXag327+kAyOc9f6fMsXOAyxX6iYZppDzB/fn7VKICrC6hD/PNmpP6pQf7pQ0GDLWydRXn0jdWpwHQx28isAkd34jJ0pb/mHAK0F63aO5icaUlgmGDyCwf8tV/ywk4NOUmk7llHug6ORdKcVOob81VPBm42bjZc0HN5KzFlz+lg+kq+3Y/JI3QrXE5Jvs16iRXzV3kAo6Smgp5VzCb2/7BKlhtniG9onzLwWSXLDP3x10L/b13F4K/7TcMQRSnsr73NKZKvR4zNsljGl/FOm8BG3bYloTF0RVvVchmN61xFSXSXYMcgYM8wUwVViMxW+/UQoNgDiC6UNcuvr96MD0nRsXJoGUaCy3Pwm4ItEqX04ovjf+YaPzfq2A9QesSQgYdyGrLOB9RsaVZVFkKQ9BQsFCBr8kNTHJlIFOUO20M5TDQoS9s2MvwX0hAy0bIsjI9l/dTn7OMBUUcFEZPAP9KIx0ypCDT3fZ9qu3Uyx+GdVfpZ9svpohui6AJShljce/8rAhreSY3jCVXgtcO6IjiYUZ35P//dB9ErFPWmoFZKjFa4ssPZGbfABOHjBVQ2+glvVFlHYyp+c0itINUb7GAcqwbRe/8fbLzYFPau/Ksm21U1ADMEwRDDHH4VujagqVXKAKBdjpoh9jGjNvW0BZz3h7UL9rDkJLG2rPhM0iOI/3UinKsZqjtRossYhgRLbM8bxpGhXYGR4AlyNYAuERrGB/a2t1AHmUNqWMhblor/OPRH7GcU5Lkt1OnXG1HVBH0tFaKKX92YvSbhY7PhkVyKHZcnnuwbxaLDV1zy64UvdO4Rg3G07tu0OVFaqITOBh8kqPWl+hMbNJwLVVl4Nb+CPbGUhIx009kNDkK1vfoI8pw6PXqf9kxmjBSBC8R/nEaiLIoaPtsFiWpfewOWgCYKJuUuNNmDPNowOQhy44Vlk0tO+PZcvif0HFn20DUyctXNN8ULSCoNigpPaSZCoCErI16IDNXhY0/OleSFUTSEwkhBlqT8ojLjuCvEhKK6ZMt1Btal3us+vC4KgbZV8shbMxrCNCyiPYDM/W9EsrNHyDhGOPq8/3K7Z/hL40UeYyr8rLzZA0QsmoCqPB01aFzGLmE8UY6nQoLryAeCybugODxZWfoIbpt0nnZALW9E6xm148nxCx3urMdrJ1dL1Ytw9kNvQRIKm2PfAbJWHVIYH9Ecmg2h6aWVCn6+ZzvjRHm8G/NEz3De+99Aj4HBvgRnQdHnuoOg2Twdyy5JiQvd7tauvxWtH8TB97QopjUo9RVPvx7QTNZuaUMk6m4UMoZy0C16mYhNA/ODPRfXwGaLdhKymqn11cyDgL/FUFOHrZDwtjQvsYemIAZscQlaBhkEd/EnXptN0VCvohQpF0vOko5WiGDauPelhdbN04jN+LIVAyhzPIqy0X58zDDrnC3GW0ZgR8Bxlnn94VRLSo8SG9QE1Yiy3eC9YdE1uxHzdr4Hus0vrSTIC/NpxxMJn0CeTzDLarcqLNmLnS8HaPvef8Pkam9TUd5aGM/g0eXuUJn+pd9BibZzUhVW6NHkNEbUGKFC4KkKWv3A1MDKDl9/ZbokdEtBtKhO1bSJsrzXaszrPy49qD2W2iOKWNgGBtpAmwWdpr+8Mm4BBHYqicykhn51pg4bBGTLzFJzMd/RZeVgb1UzZmbaK5mOaDicNs3oXbQS5dfa19y8LUfOFs50eckDBQZLd9KaNJRSXcK91aI2Zga0G6e0g7v0eqgLeyJP29hgTVHsV8y4+0HspweDE3mrndlZuvCxJZ94RLvB2QPcBRsDhqU1PoyHZKC8yVwdjR6tDVyFBNFws0K5XXk+tyuS+KHV0CpcD2e4I2JtiQHOacB5E4CtDbfzS2Mxrj31we+rExmm1GKFjhC1Sg8+ngX7NVDTuRA4bBv28g/TH12bYAxdv7O+8fyf3MF+BE9B+xcKEvjJlHwa+QqgQuA/JWlX89ZHs7URn/4CzyclD3M8GXlcnf9pVcIjrThhJSjWMbOgl8vsG4wUFL0YjhcvDDbUk0GHA3dlGuyLv2bMoLH8lr70Gb3tHWDJcTagoiJytuayLSBlRbbReBVPE2Y1Gxkq/8hZy4+dFe6QyqZdyM2UvhKaAq9nc9O9pNWx7p1zNne9K6XP0peVZYZqE0KGwRfdQTSj4Qx7g+41mGREcxt4/3tKtz8gj7WXFso+M9nO9u1hTHH9ThlOxArlKNEVZKqrHMfxz5IkJfExxqd2eHkY0kHmOuBYRfSZ2Wcb+HD1wublqnmDHG/Did5O3EgHiruzGthdmLWIb4Lnn8hDptVmdeIa7WUxpjm64/7oQOZzYD4OxbWxqLLpqkuvi0+jb8fROYIGg/15DrHRSA+pYyescIKLeDZW20csFCkAgNWlJNfxmf2O5JKUYLweqXHXiGt4uZ2ru0yongAV3kjyVQZv3LTrtKUUggw9CvTxD6eC32lo8pYfctH9KPfIcEr036ICoHd6gbKtcyLgqCFZb3o4p+hSJdWrOGdWpgSzXqL5faxmsgsY8McgOqBKLLE3cJKWZ1s8kagWX0m30NSrjcDCBC4KSnFbwcUO+hy+PqAgA0eU0veTvafcNt2vAbV3tIJ6azmwFTmK3W+L3WVbaAJ4Ta+zwZ6NEa4tgTVeCcHcfClqiSDpL8tgKwESHlOJNC0dQhX+tNG2ciq+Pfj+cvJoN0zTH0SGRUY74GPkRczt38o0OWx6bTclqtuX8m5YFkIe1nm/J0abVNSD9fzUxq/zESH+GlM7J3o7mhgWWMXGGnd82E9N01P8KV/ljnQxuJi7J8ekRVzSVsf/3z+t81Uur1gKvOtODF8LyF/MRN2pVQfisZKU6XfD0bfn4mGQuRXDGXXD0NmpnQ9RnUnShbgHqdjzm8/i/YGWZBzH9bcOWbfrJTTjvCVtwjW8JC1eF6jso59PpfSQoPXADZmYV5rZMxkV6UNBUH+au4WgiwXeSkAGWtgmkVsz0UpmrghnBwRFfUn4RCHWTRb/9IFsrWeOk+/H9KpomAZsiKhaYj5UHyeypoCRUu0G9krpfvlqQXcdqQIe0XeOWatY9dWgPKOOVCXy9ahDPnjFFKw3APe9MtgqJSiyLnt93ASZO+zzWthCiBrZO0vVfRSU692FURcrMZBDkq9aZytee2VmVq2qKjiLa/t8BU0o/qX9qj6GWfr/AY6HXttgPQRWWLtsblZSNDv/L1khdkuGsxbF14P0DRgiSi7twtFLt8dbvBVSF8h0vCjqHjJwNB+z1VThv++2wzdCfzBfOTjuHRuQDnRnaph7CDIxiNMeO1tTTFPh7nWadF2oA+ZdsbbZzcKKlDeAk74klVbiU7Bo/I4hIMINyWWPVU1UI94OBqDVeHiAmDZQbTry7vTjuSFbnV/+Df53JLQvaQiKqAer8+/sBZMExGIRGb9DPODYn4aSpp14rqZ3e7VKaSmUpXNNuZCkEQkInpYDORN59cOg38wXmBQT/KAfTUKXAEcUWJpeMIpgqJy2iTMi4Bup0xGoMpIy4IIpIUYHptO4T1jp1rI3frMNZHZJmavRXWMi+6NVGfJZymkED6IAvF/OoM+XPMrkpPTgPev7Z86l4+XCP9EGhjMKj0MuRGtRiyMVTg7lEqHEJ/I7FN9CjV2TRsmj2icPSedhE6G08M56pF1IkGuP/uNuAzUHhVkO5EoCeKsMmUJYPG1dkx+hxCk0ITwkvItsK6mjkqJyFqOpW3ZZcf9BVigbtYLnyo2HMbbFKOAPmWvFn29qaxNmP4i3pJAJnUWNlOQssLoHzv+noVJFw08ccM8s/k231Xt9lOdF23y4jZXAUI0oBt7bExL0ezfhlvaftk0t2jMNhNokSxFt9GxoAD8Jdsc5z1cCxvVErrcx+6pMRqMuMZj3BoEEhKcAFsp6Ek1tW8jq2G353+PbAWoKDxbWaOiReXxegTkREXA2pemE7clHeNDEV+AVa8EZadZcSc2psjwQFEd/L9E6d+zejWcMClyx0ErpbW5aqxYto3/I7uFeZfVitB8Dz9dtDKheTuxVRvMTTiTv936HAJb9/KaT++w4IkC1eUFeljmYqikcfOGP1cIdGZTiHj3VQAvm1sDYy+zjMMjnPt9qk+IBJaYfdUw03BN/i6FJlKo/jeUDoVn2jbqo2QXWTAuf2QPqBrII3ghCfe07IztqITx6Wkjur5/oYgv4EaAjND/JUO4XmFhIhK6DTXARzXecHUCoftgpqry5/llggPFDMRYThuIOLOPOSgS29BbcpCj7Cjy5JMCkP3zoN0Dv1emqGIqwtuKNA9e7dzQViqrYFM6bcFSYFNyx6uIoX1Jvf1CmLw2w8OVpOxpwnSvpIYUfLmOQCY2v6KX4hUkJPxWGt9RxnNV0dujbD6bzAPo+G5CIx6d9HXvqFnbiBVM8Pi6wnm0oQvCHtlO8D5sciY2+u+r8pAolpcwbizFFfzUN99r4kv8sgGwQ6KCn9/lG84NjW5gK+wv7ore45a2B3mOuaZqChs+NT7ub7tbk8yCFtgH8Pj8uEKi+rVyBiW6qSqSn9pm8R5N0s4yJBHLC84ASKriC38WN4SJlPZSkfXytCiNs61mimqXLhGTyMBC27ooXxqlFQBk9UTuBAFY3On7c2dpvx3bR0+Kexe9mmS/wIZ2vJR6vH5OXjlPWSAWoUsCfXfkRpH+RSYfyCu5ROus7YLIwaHkuzplrOyvCprXmbzghD4ym/PblTIRC4IZ3maHuBAXRUuLjRAJNHlDf/9ArkXpDttktJ72JrQ/LeLQoE5tZCT5ngA1Q7khRuim+UrzecFby8IXLZ+K0czNURfQ50Nc0Znp02z4hbAyWB0lI0uIisJfeBJHLZ2x7co/p/3Aht696KVlIm7gqf2WQ1xpF0c6aF6T1oMeownkbFwMO3lav9tkPYqPfblhDjlLAKEtBXMIjVJQqD33r34qYtz/lFZZp3v3+k7fhGnwYCC1vLpYifSzBC538Ku6tbdxhD6ljYgxEQQ8vuxYXuyPfHR8hzU4v/LDeCeVQ0kcw/9BLrMFsT4GfHzwazmUdguGBb9ZYKbmCKrgKpYA7s7XvOqX50eENJBUIdhfLOoFjvnVgNLhaax1iIKgHQgJSNpA/gEEhYsUyoy/Oi5Xl0Twp0FhD83IeIw6czm/XdjzvetGk/xo645DRGkWOhAyNCyvxjc57lQBZZMl7NcfbOeDFUO1/gU3JAWs9ShPY4w3fJ/A1hBECY7CJGQ7a3YBTTqyoqhRJwlaeYtq/vtRP1Q4G2eI05j0y1ed+T00sG2Ewa5jqV0gQHREP4sIgICIXS7GFx7xW6ASmEzElQ8RhrBDNMt2/V9tUqU+tJhw19IMEUCIQC6aCWYBPF+tOoLVQcSOk9+GMXWSZdgLDP6GZ7aYbsqJgIgGNd2yrIqGfP3r/iRgvHbBNO8bmL4aaFifkEvy9YYvU8BAAEB/U8RCuRqcIdV3i3xmOw0C0BVN3XvmXWQXz78nSd3bA9OsQB+CZWRXHCoEeOkkpAajGti8fci7kbS01IXdsDS29WC3ckEAuCzexXpOyVJaAnjDte84MLmgi82PHH59GYFfvG3n7r0FgAUash6gqHuBm/PMSvcZTLciRlGizGDAwAHgTftLDRaOjn18f+asd/YF+rbyJjbn176Lil+ZCNc53do+hSWmqkIg1S4NGBAOuijzm+pdMo4aJltiXr6lfpyitBOAD4tK1Hob6nm/WSLD6gynOmw6A4JBNJpMSVS+SwLwHL7XDBMm9JD0vqnWBlSl+VYhtss6gQdtJDA5DS7Hrn9ThBgMwAAAAAAAAABpMH6AKeM/q+3agU5eA+AB3b4cBGOhJftCOx9Eh0lQZNPLSjcCyrz+GJ/XhV3GP74lQhf6r4vK/zrf0V1Pz2P+FPklQUswCqChj+ssq3Xb4aWYVCFBC+B7xhbFyE/gY9BKK1sNKpAU3ixHrUUslaCCpp0PEEwN2YS28IsZowpqbAGduxy96Q22eCNTwBIX70LbTBIufAxaE2N4ueRy6D0IhWcexo6g1LPQYmOK6h5z1LngRHVUaDbzGaZDDzfooSPxMzpJKtPrbMAaDRpkBGB0zzOz2spdvbwP/IeQPf/pQSmeizvnhInNvYmGTd6JpE/UHgag/9UbS+hAwcaboxA37iqjCz+G5dGJK1Dxj62PZVzKK2xffTCudZgQ+6hbnmGAOgZtA9ihGq2gaUy+4VLh9H9hxQreGasuuzSNsAouFHgD3cOfLTYy3aJZPZnugF/o4+aVJPjnhndASK+YT4FTsWW0IU4vmYzy0ITUt7Aut3t720QIIMAQxAmHGLzdTJ1EPZmBaOeEpuMdkuEswDOqUhtyuBP49+HX8WvtVIVsZgff1Q7H2Z1DY8Ds54ug8utLf/VcsScBzg9/eVh/gkNTL9Pl/wApbiO4+hnBTEd1lQNb5a7erHY5jp+gVwIiaIUhHX6B1l33R6AxlfPhPciy8077M74/zH9kKcPW1sPTnRqVrWXHZlqUN7pIVbVy3+VFokTdkj1xzEdg4GRQUTzDQOenIz5ktyK7CIPZQphmMxAqV8VF8BwZMM5jlJWHFOONJB1P7K2Fx5FAdGjMeMhDtj0E21s/29zaAl4ZqSflUMJsUVDa2z3BJF6ozXT6kZCGVdPifM5H5ypVHicbVHeeWmkIW158KaVoqWiSvXlF+G4QzWksN4mFuzXuiLb30Ct9rcpjPBZuOR34rhwLBTm+i0YouU7+mNLnDlUeJ0jMWOcJhjkVasxQj8H5skbLzv7Ttu3cc+TBZ8jzOe59CAWou+12lS3/249aSCDMgNCN1aKyVGt+xwMgM+QZQghBH8wDupJi7ilbq6kBfI3ei3RibE1eaZ09vEuP5JTh3LnctGKI8oo05FQ62/AXwbvFgo0Ivo8E4qCOPGp9cUErSslLsnRmSCQKFdMYui4COBZIi2JcLtztJXQ/csLqbC9YmV6YBDwUPkP0gukVj/Lw5X8O4lnyfErqalw5iXTf+o3eNBSYI+ZldBpLPv84hORpNwAGrVVeBU1YsNgIl4uIlaeDH98X3Ze/HCkWCuV3aoemZL+w0m8EoPmDz1G21a3dJdGslqJ9S7xNdeAhKa0xggnsYUMKbwojVZR6C6pRrkCrYDC5MePWnmHw8KrtJ4HyxJtr0071SsV6/nTzW/qkNnZTPhtjxDtgMMyms2BjINv3WeNCR+ML3yo2XPJ5oisCF+nLmkqFSRg+9WSQB70h31yKV4bT2HUFschEwcSgmOQbNvgMCO0FUv1G9B/gyJ1u0Xds6KjcN9YEsuu74VKJiFSZlvFTjSmxigZApKZVqptsjd4jpXvW4+5FsQzQZm1/werqX0iGwh7bjTWz/aoqQvzXX1gI0UxcHDyJCM+HI9EdiqIVsNE2JwPUWcuofmVqcTr45MTWhJK4Z54ubK5B0wcJdyGCtY+6jGiZyVcCut5WCa+ESZgN31YFeiVyBhsqyP9FdWHZbtYfblhBVBjuOEMiz/Bulx1EFSzdAfVgq0JDpgMpHemoW3h/9a7Qs2YQQBtA57eYeM2HWESKHjEX1i+1Sp75if4DUCCHbjt16NAr3ij0LtxgFE7SZabSxChdDoA4ngVjlEqKYNUh2x9fl8UVhA492/k+tPd66U4S4ynFUidSFgA/GWumFSRM9AroJZW6RCz9oSVkre3W050CgvcwQLZthKH06SOOfXf6hXI4tygTJOb7ZN6ZFnq2P3KlokAhylEaODpofTZXea71NENAGABQ7m83QYN/1kbORjuyJT1YcG3+HBOu3M7Ucs7dihdKSyPc5jTPkUb+UtVxKAgZDT69PgMhL8LxnMXeM5Y+P8ZNgPF61oS395Od32vOiepSwJ1xPkGVkzXpv5MqLSioupW4PjsdCbi36uIxcJB7vimq0i/PGnlhMP3ze1ADTXY4Hjfl69yUjtLMzpeARLXHgVrmMVU5hRHYYtMTqoi5cnVghy3OZ5/x9we+wzAt/TbpXBL9YlvCzZrLOvbwt7eLYFFK/FwqDVbtidv2hWJ5EOIx5t+cUuzhty/U3ucwahEBlCfTAWuGjw4ak7WrmGUMjBuZBjHdKiUoUnHrjVlfqPe8sLvcVji+1xSkRC+8yH+S1iDeOaWINwyRNa1Z1hyGQKEMC7Phu1ynqAKCCtMk/Tv74+XIyutVpJ3BFPjmqlHzsGR04HSl+YGF9JsKDpOHkw8YVu37RIEozkLtusT/3m4y6mPezy/MxFcb9x/X3mHNOoUWj7vIfoIEpUUq30b81dSxo3OSNPeaVVN2DzkOKOIUzmK2lq7wNqJzDvT73tFzx4wvMXWjJyuWHnf1xjhb6dbfLPiW5JhPJd7Z6ShuNtj0GquihNtAn6AKNfzgIZ2br2fbOilkt0MwGnp+A/TgEe0548K3oP2yZyYpO/I5Y5rlu2F0bHtDExIsDmW13FuLP/T8/GnS5qyo/Y5VyW/WArTUnklgml0FosBpOu2gW19CSZNLyAprO4Sp+AAQy8SZ2LGDt60ooaxNeBMYZKUZkUQLyxjTSW0PROt4RMlRwh4yBtHLK26poO8yudvAhGUo0WVPI8I4dbZY9J/C6QoUPFN+kxu17XyxiE1TMtbUTCJmuujugJKW7BLh3ZsqeUuODd+E28kK1eP9oMJJjakVwRA0BHjJbKrfl9H/eg3+vP1iDSyiRv+VXg2aDJAeUbXDjrIJxnjEgyo8IrKMRS9PeWzPVXRaacX9TmYnj9ZMe2fKM63oGfDiyvaajHbEyGQ5rdwIYLDkDC3w+0qIuTdYbkTZfiLyWGm1vQMwt9jxdMlqLFz30ADkKk24LZxC3PDDQ8HuVlF7mWLCI7Aqw/8sFzByqT5SBjhlftu8DSDbNqik6TJ6mLzF9f1gMBVmh8WdAEyhWcEcOT+bbGIvFiXTMnlnIBROKkDP5T5YsCK9rZ3VvqDBPNvVhfB8jQYG9ek4rne3aqewqZkYacOE0vz4zDIimWcjgGPlZs2F/KQVXdtML3GLq/527v4wF7558dWecOPdgFK0D8Nr/zC8hcmn5YZN3F9WqygE08nYS+KTs2BB04VyWtAKs0VVFt+lCYyQ/JzwQ3rFzy25XqeJU4pbOBG3ggkn+lcpFiQZsg9C3bvFxIcb42aFhlZ25k+/2Cy5DJVBJ9NHl/QrOtw8GIyU2E6LgqiZ1vZzcIja1xb478GkxnDeejd9FRZN59mPT2TaCjueNBAelobWEYuou3sLxIeXxru4TKAqVEXJHy/VBgbJGvNkpRN7TSU5AsLeHUUOwoVeEkzJwG+x3m2mz/wGDw879wfqdNVAbHBrrhmXnHypUecG2i0DllOBWgkdfkTntB0OIx4y8cvYxgNCWHMyyOh5Fc+x43yeykGdNPjBnulYIp2ThnRt7wKpUe5fJN81DcE1HwmvAdzseQf1iSbMmKhcGqa3iXussJ8VGEBgMS2DA011TPhVpTSd/CJ8gFl8XrdgqFKzqnvIYpdcBWhTqjlK0lqN94qCUEpGi8m++dH6X2NpXc0Aw0ef1CpCJk8k5Rwt30N2cFvbeQtw8zD0ub96LtNJQVFsaEPjEdIDPCwKngX9sycIg9/bCP+zYqxRbg1CO9JSWxv3253V1YA50u3ukRu59nKR2I0KVY14/650LLot6DOGNiNzMtDwSFDsIrZehzVeStzgQ3Daf3EAqLfotGFAdXMnnsj/kbmpGzjptEXCSFPk1i15aA7gmv2cMUdSOhda57P+oxlOw1gS+XjjgY5IfCjHcILqXzDenJyNWqkXZh+TKAot92aQVOJS75HcIN3a2GmEE+wnS/nisxEKU5XJpcVF3Jp6irA4vf/cwUXbNbf2awBCndPq9GcK0+1H8ZzrmuHIoH3rUiUAraYAnb0lEHOvpn6+997hwrvzcT88IIdwzv71uxixHwM+ZahZrAWvwlT5j6DlwpgV7o3oya14kILZliu/wfpwHEnEICf23IzmnpMYMUMOxvEYIRDIzzxF5gDJfnVJDJGG7N/BcORrR0/jVXG0cvak+HP6aJJtEpXxIYUeeHJ6DdXZtthdaylwKretTJhUHt0wiEoE6rEaozAtG9rEd8S3jA3IXYAymRP6mDCU5ErFnujJUfkivmHbszOxjfL4nh5Oeu2BL3Py7Y8zLK2EQYDCLrMj7jL0IIr70Qa+BdMj02A6JQxhak7MrINjwvMXomGNRdmU5gN3SYMT8WyxM9Z0JJ41z3+NQ0CEvcvovUZYi8PbcUHs72QxFmkBm3NykgaxDRH579c5ZdIR+1SbVL/sHcwca6UxULVcB2K24MVtNKR37WJKWXJQNXwCShErCiYBB060YkQDgPJVcMABfLzM7CR3werMpHuqYNd240ISb93ZQ1hdBwjJBI73zFU2K5WzdtjKx1h/aFw0xfoiYrWA+2yssT5ofuJQDpWzSv73Kcb+vfli53k+xMYB54zHoD1+95bpOlxVbQdqo1YouK+kPpRReQ2Lv4gmVO8JYRI0ViUrT3T9+uRy58ent+ai58wYZLvnFPsZ2cYuSrBTysohE1wrB/KUJHUA8uxGK6C4Pnj1E12MoldIpinceveMa/oem06Cuh6mGazSxclsA8UZreXr/7H7L+pXgJTmJB6UPPLTpT6R3W9RGuLb3qMf6lzi+XMUEg1CZrRObibUe829Qs7M157N0JcSxL26bz1f/eAKfyFrA741yi5AjNG1J4BJQnLrFcAd+IjxM8IWsy//esw2d2e0j88ZjbuvJJ/UYWdKUL2J+oXP+/s3G105h4n6TqigPy74GPxS1+wNDaXrM+ntWM2+dUuTJUQbUGemT4Ptb+N0KZIobfZ21yXpkeoNhYzxWMJbStbqbzBnhXfW88PEkvseqhGyIK1yBkSQR30af3wWH6fjMWNXzNnn8auaRVK1CaxFD5ZxSvc9/0gv5kROpCApCHct8wR//lQmXkjvgnoEoBUiPy7gsh/v5+sFEwRHgOJBO0C8/qbcQv3m/Tj7L3b075vFZ0ZSJmMSiujaHxh6Tfrg5r1q15B7VzNrVcKbaa3S5ZafSuUVD50lc8FWX61WYKJtTYYUE+67Tf/vgJgdeS7vVVsqAgcQDmvR5vQCUicGnNyTxsm+TyPSqEUy7Pq6HXcq/dfDfYotkArZsoLgg3nn9Ed4fdDCMzXe62SJUDsfb6FXiIWTIE/uZi2giOh7LVD/yl1FK/3OQex9zGp3RqYOamYskCh918JP5eJ4RtsJMySG5ApRIkNNJhSZi6gXdFhwmUGmRu9Z2yJp5oT1UnxOKg07tvdfbwysIF5o1W+gO2xR7a3bnMXvlZS7eFIBslF8KpBMc0q9v1lKAhvfZjzhY+1uFobrTbX0eFu7z1AxgeFkGgn5zW8X70z7HfTIgIDJSwBv0um9xttnCJFUwFRp/oEaMOuv0aZGStVA3p+fQBHMEQCIBeTZ5UNUMV9sAL+qaP/0nw7ahm/UtFt3JwZXDMlQ9SbAiB8el1BhqKzERgb0Po6Zuz06yYmmDlN7Ages/GiLjeJBQEAAQH9TxELAEasv7/Mbw5bDj0Xsr13jKi24osmPaiazS62RlGAZAwIgJvJbgGiO675D+lrTfp/q7LP+EsFPWznHMNVEMGVjfECN2Pgn8ws4vx9YYZJwgQm2Jlj1h3wnuf9tX6j3sq/St4WABQWOa1prTN/1DGRhzL9ziZRN7ZgI4MDAAe53WgF304x0Ib4TL2xnFKAf2Mgs9SpoxCBbDxBJW2pL4ZOOA27QUIkF2ACbJz/CMSVDXS1eItlye3WjVNazoc8zI8TN7yotVQp1NangB5S93gY8CJweRNy916YAPP2TRfRmr1AQCmwhnVPE5z1cwZYe/oLtOSw1yYBxcbMJIAONP1OEGAzAAAAAAAAAAFC4VQAley1JhBMxLdr1DJ/spTTOSyzhx0iVkHg/cLQBMmBOfA5B5sqaeqRicYdn8QAknZdkiRQnTeIGbQCv+9Y2QENoVhpGjI4Yvdidb2ut1f1RkqJFldzHPN6BM42WIYpzlRSnTWmFDKNdxEJ+7QJc/vITJweeJo7tQ09qzc9X3HRZlWFVljfX3NESlyGM+Qz09PenZJipiUP5TSX/g0AcEWo4TJxwlKprbZdehDbJkFqk3fixKuT2eyIjjOiohSX8vRZkJ25+7IPk6DGqb93P9o5cxyE5yKoWg1O88H2sZicTnFr877bzcpNsFW50BdrL1U7FLx3yDYsxbMrSIHhPfQLrYz0r9hI0SgTNi6kdVS14GBrcyeoZeehDmmKOVvfF9hkF9xZxCtSsYv5gTxGfpDHfTs1BiisppGJFAkAnqwy5AW+TP7OLwddU5zF1S6PiDdsSaNiCq5lhfxEb8aVgyKNW6Wn8GgsUO3L7iuy38A54hdH3Yy8tWyB42b1VUSwt7/N04PbIBjgyiuzGnJQmCqhPB81la3BavmlKnAxAEVGuXZFzeyA+7HD+Xh6C0Lm/WPklp8+GkdJJyvmU/H8DraW7DiPKUP/qn4tSb0zcaJeBdvWACvJ5lSFAbrdJcCWfbEJCtuRFR7XlUPPiyFPvWgx5U0PVuW6HZpBnKsG5iqw5ysYB5KEVD/oyJKw5ajrKvqBP0ZQSJ5SoRD9ta+fWuEs4efmqlTJK+g9BaDJ8QPf/WOYx3GakvUBev7kCNWnVkyNGC9RRvYV99wLnsTRPb1no7MXD6sz/N2lYxaEA0miazEaqJVVp+9rQImFFGaI5vpmsvTr/ZZxkCXp+0JwncNPDlI4Fx0UjPMppZSCEerSNd7BaababOI2SaMBsnhlq+1jVv3Hwv9iCZ3MZGk2l3aRyg+QnEDZlSYK0/BSZz3mJByilWxwJMtW8PTo1dDFSDb5q+cnyXVAycghQ+xk+vEdRc/B+MaCUVL6aU72qi+RSNumCx9jKlpGRPUvjiFfbx0WTudVIaTpDNkXAheZuK5RnfK3t/hzq0gXN391oMzrjgQNPBD+m/SBeAuklvn0U3TxZxKeopxzhj4WTLh1f7kchTge+rTfsPDUerjsKkWZfCeoxZh3Ny+8zALQQuBswTkAM/cLJ6kwLXlgXjvWkza+8BllIJS27ndPtCg7H0QOaEGCzv0AQD6Z5RjcrxxODAJ+hO6yOA6l6B/tQn/GzOXjOO8OfmIow+19NyG4sToI4/sjmoijeyTlSjK7E1jidFvuN192k1xydw5uSlqsrAQ7z3xyPYfvoDLiGd7KEbGP6QpZzQDWunGfbkp5S3G3jkaJxdTmVFTqxUcovxvSYykFVcO4tN/fO1jgsBkXpjoR31khgm8zTxUJ7L2/RoT3T9Qc2HYXbdvH3X0U3hHCQNq/m3c0JoNpFLZr76L/qvJ3NSCkECnIwSmHfIMNjSUx/vAbimAe2fOvSrP/Mr7GUkzkrwI24k1JREl043iBQJxAMW9ybMP2NNubY3m9FH0YlHp6c5Sj/5TSxYsgY3bK3SHHPx0HC1eu/h3TUtkBdVaqf6qgWI9RonMGn+1CcGGRF1mOs8YKq89TSvdsBUwD5yqQk8uyOYBImubAu82ao167dVsnR18DmWOq/V7es4dofPk+VsLevkMvFLxBxMcR7NVZhr1VJpTmxAukNTJTd7y/+YsJfypOzUqjki5Ro9uDuiIv+NdoCx3HK9llRjTdUCvhgtQKqQ2I06v0oGLwG9JgIBFJ/+2SkdWwuyDcdELdlf3Ms6MWAh2ltRWFNXV/+dggSC7E4si6v2bwFqyTvGvLNrNgYBLsSqqUjXnkFU9xUP5vZq8AlrUv97tqWE/udQk1XtxoOY5nUuNb/ckkNu5LPzGfMKBpm3GCdVrcoZ7sORrhG/q6J+wLgrp4RgTVzhMA4i6VdEzvmTtm2z+Neztw9ogue/jLEr54FTMYdRfu01Gbh+0xR+SrRJkuCrG8075Vu8y4Cx8ehTHqRVUxY+xl0tVLDdx97lsPjWXGiwYHBioPZ0f7m1KJrpVqt4mg3LoBMaeYJeovaGsjKkJuxAHKkDCyknker7jE/5BF4XypI7iaHd9AISgYuWbVHJ175FxN/zM10X8xxsQ/gqYYCRsNl9q58nnJBd5LEdrz3A+lCMCKQmUm61UCFAjuN29xZnnVBlFzQCKXp15Hc2hYG7y9k1QeQm5ebmpRxkvsBr93CLO0uyR32lPTWNu96+ftHq9QmqvHTXYRsMW9OHkik3Fy7NMZhwoLfVQ7tXh9aaWYSIUrT1FPhyUA5PkNxrXwnrXzoexguUdWGkGy3M4bA+DznzjQFcrt/U1ZEHmhdlMHYyfbn1bpkp35rqx2XtrapjCT76X7UCIDHvIypKIaKw9xDSX0Lj3nV0CYfPt8LcuKtOOdgpHGpH8Qf9y7BR8MK3AF2BSnJxKTSxLta2bTEAofxgKUtE+7KfbWL3insg9zoL+LtMsS/xouEJ2ugrLxCzw2YgYymXZ6YJa+qKm4P+U7pOL3mnAQTdpuwK+BKpiMone9WbSBPTJL4JTOVXlWL6aWINOjexpvLUw576VxxZjhDaTNylSL9y464lNsDQm4E1hzrBqouyMY+63t13xvUUnKGVr86IK9TWSykveWdkgkrWqMdP+c+FICy5lObzcUTLsx0Ypi+6TJKNCJ38rLBi7091RAoby6SJN4hvLq/i0+pDIBHPMwkxywiND59sBaTBNZPfdBrf1rpg6v3OD11fPKuMzs9HPcn9uJB2C0dxXQ56hv8ZC6cWgl8oLKo9yrpDdNMdKnGrRsEpNgsD00/1uAfw0bTw02MkyzFdaS06TjXTpnxyx0cmI7+M6m4T36DxQ3rAA0E1iQnXqScjr0tzSYJUMp8+Ol3kBsbx53HqC/IZWypIezEgTr0+pJvG94jzqKXf3e0whSLxOvchMC73zwXc+KS6RB0ej4swBdU492D+rt5No9mJP4YwfPLmzMwX5WuLinxXE8kJirw+//VhEpNUYZzQ2JlfMkckzzxrPu0HYz9ZxjogkL8/iZNXJVaAc1Ix+HYOYCeH8sdnNlwyWTsDD6wf1tTg5sl/1f1eykeJmFdX1DmBSD5WW0tHQNbGubsJamWNYsb3ni530vV8PJr45uJi12szEcmX0HXixmXcqMXjPdYxXHyOq/8vDF4T+cWfhpy1EEQpPcygRs4brlcNVJhJPovEFUSw3wot4KY3PaFt2JpQoOXMEc+RijBEZBaoqwWmkSeHY224F69L6qgRhQTTFHl75u3zX/Vf9cZWAVws5bTY1+8chhsQjpXZKats6AJTlqOaMORwwnuOFWoOV784gU/B4+rc2vK5iOnUa8Z+1DMlMRO5rnEu2+B1w+STxJrRhMLdVIM6hdCMJfhBbOe86HIGRcz141pINKWCEsInVyjH1GVA4vzgBbOc3nSZPF8pOACFmoIbakJ20l2cbtGejhs/9Yx+z4bxzxuijIYwpE5cqwxdge/X0gQECfjAGjwxDEQMozH2ldqDZ/D6fjUZ0mPhRr+ZVi1cyLARmXiCGXJZwVUhPTfDXLEED1qtIkxar25bbMrU1gG5ytDczMeuFC4i0qoPJ3Yl2Parl1t/iK87pGJun8MyMbddCtYMCsHIL+AtkrH6lFj3leOSzai1Ee3yIACm+NIzAWNcNV92aKPcEYmCMmr0VA/guV8FvArHookleKzeWBiZYotsTlknfRwy9mTMOUSjJaMoBc/B3l/5JqwrgEgG105sibbDTCoZIloeBy1Re6WkYfqGqXdkmwr+QFjHpd+WYWTmBswx4otmJgszLx+aiY6E2TvU+jwFpigPO2b6fWAQ/F++qQ46I7VTxgHEmSKPp5sr4hcf1zJwVfU3yqPCma5lNg5vJb7d7fP2JsTEHsLyAHsL4pqlepfbTUOMAMWsv+W8Xdwiykmz4JDoE8quXLyPXRNOp5sNEorFzyr6ue2ZKeGyLjKSRu7vVShiUyWbep2BOyH4Wd+VjjKo13OLPyEPc+WEd1wc5bY0Xyp0b7OW4//j8l4HI+qxzkuMhZ8HDxR//6CoG1Rg37jZnlSawJrjLEGo7dE+Evw+FcAYQljKAdgI/+GrVdhOhvklbNJ8+wg1DzZI8aUwgks493V1rdWS9XjjXrkrIHbMczpH/da4nZwxqV7EeLgxl9dK0KVLktBZS9gle8uERJOm28FCZWPElXW+OBf5Q1Oa/Ex4YHyLqkxwohyPMl8qqNRdGPsJ7tu11hjcosGXk/a6u45BE6qZ1gT3Xv0rmsYIgpgvRKp5EbAEHvnSarbBE0gUJlX4gMAh8dz2mdBl7cWTox9uB+CS4ymn62TiDiLluG16wUSI0jHhEWqpzQjbNKEzrldSIIY30sWWY76Vhst36L4qQS01tiHXrduLblr6xaoSPVHSvQ3oMjPqpDnt5MhiyxEAt9hM67MIWgM6PK/YjxXvbFlwru74HPPBHLzKIpWGF717nwEg+oqhl6WwfUua9/yMQUjL4bpbOix9KR8YIWzIy7JuVQ2ef7W/DSb2psBG8uHB0mT3bRkE5Sf+k9pIXJkZbwbPM9rSA0na635N1d/ZzGNPtl7Shj/jcQIMPywMZUrBYYrR/e256wTKdB8BGWWLgQDxPG4nDdmWZxZEUrMk8r/uT0zDWgXvY6LxXoLP7Oy90j8Xg8uqlmtCA7wqgg5BoxNJXrtpRldhGETlh3fez1LXijGarq7EIpza9yLlc/HgQKNgHUeEGu+PAt9k82jVty0kt1+CkrEKG+v0UHi70YtXO/p1dxWr9HOhitL1tUhBZyrMGtkX23tZ0ig4mxEu02UHIaBV9TkDfZ4k2H2nCTmG3uD8hDqGk29nX/PAS61WuJn0hVRQW4mqaoFQwkdHif+mQKh9PTyOoRmuyK4d7O6etOxdHs4eKk+kVaLPI5b1C3TAcsKID5Wcwy+a41M+vqUNeMOEdgFij6MkkRKp7wwlgOLF5ja22c4kqSkpKv+yD2Q2aKSspNku3J0J099rXUdqy83kTt89gK3LgbWxj5wzbBVC1z0SWYNV3cSq8rMuJqexNQ2LyDal17htPlzKmQtPu2C5SNVjkXHqihamlxr5Au+CPkNE++pMvaC9YgMdC14dxC8CNyu4p5Gak8Zjc6dVemqSYCV581WOT/1pFkrzkaCoz0D3DntXFyvIZWPNhuMQjtqCefRuvqXiGKZztZ0nGnZCRKrHLVgKPtJHyO5BLtlWwJu/ZNDdUTewPJ3xl1glMjQ4J2jbR4sFXsiiwf3upCPQoJsmHgN5E6e1kHQ0hPIhEGr+7RHlbo3h8pllishUNRPSZwXUAMA5bf2iiQREKxhcFwn0cwScrD7ROe5tXMh3hczCX0bQWxWyoUcpdf4S18uJs56lyNLm1sgTxq5PP5aKjQ96vEjWn+GwiFvYLhFMnastrrEKTSuCyqWD/u14o4yNwSMHAXQ9/qoRqAukwSY46ec+mKGyFPsbVCncyGrUe8ybeD/HKIzQYGwglGJendgWydUZoNEI6uGvkraXoiAgNSt61o7OuRak1Pr5JziD7SCUsLZTnwAeOKxX9G+hEMwkcwRAIgCiPbsChneIEwBTdSM+Lir3p8Li8vf9aLJ4/B7KmI5hwCIDpCoZ2vnMnWRnga0Pkc7BnQdcHKp1+3CpTs+1lROlONAQAAAAAAAAA= ```

And the relative in/out blinding keys:

map: output script -> private key ``` input keys { "00144a2ba8d9aded0d61d3eedf4ccebf55431d29170a": "f1658600d28a6eae86e8bfbc46571edafcafda87df4b592849dab3e40e054a0a", "00146ac87a82a1ee066fcf312bdc6532dc8919468b31": "9ce3f3951afc28ef1f5f5dbf227e6c7f26ae43fd661e7114d18cae329e95eb6e", "00141639ad69ad337fd431918732fdce265137b66023": "60b3a1921aae4c3f07676728fbc965ef501291dc1f8338d162093a89ef0d561c", } output keys { "00144a2ba8d9aded0d61d3eedf4ccebf55431d29170a": "f1658600d28a6eae86e8bfbc46571edafcafda87df4b592849dab3e40e054a0a", "0014a2a19820646ecf6d0c6f02e67e93ced508e481b1": "c25a9efaa770db0d199daa43c399938dda8b7d70aa9d9b329286fd3aa56a32b5", "001434415568b33915fa6a3412885bd91ef245ec812f": "986e8122fdab2224465d61c140bcb1a039ceda8ed7cd7fb48a8b1eaa844866a6", "0014b3256d1479d4ea0a96314672afd5bd623f8cca31": "89afebde50a4cf5ebfc2a9be8386f95e739c66312b389cc1cb33de377e201e17", } ```

Actually, the problem with this tx is that it contains one output that has an invalid surjection proof! The blinder isn't catching this problem because the surjection proof generated with confidential.SurjectionProof never gets verified, like done in the elements codebase instead.

@tiero We certainly MUST add this check to confidential.SurjectionProof to prevent such problems, but we need to change the behavior of the blinder so that it handles this error.

There is essentially one thing we need to discuss: shall the blinder retry generating surjection proof in case of verification errors? Let's keep in mind that this is certainly possible, but not with the code organized as it is at the moment.

Re-Generating a surjection proof basically means using a different asset blind factor (let's keep it extremely simple). A blinding factor is a random number so calculating a new one is not a real problem. The problem is that the very last output of the tx to blind is calculated starting from all the blind factors of the previous ones for a matemagical reason that is not necessary to let you know (keep it very very very simple). But however this is why we have a single function that is responsible for creating all blinding factor at once. This is what should be changed of course. Making the blinder smart enough to retry failed blindings would surely mean also adding an argument to set the maximum number of attempts to set a cap, that once overcame woudl cause raising an error.

If we don't want, instead, to have such a smart blinder, we would need to make changes so that the fields of the pset's UnisgnedTx get updated only after valid proofs and commitments have been generated for ALL the outputs. To be clear, at the moment we loop over the outputs and update their fields (Asset, Value, Nonce, RangeProof and SurjectionProof) right after generating confidential data (we were not aware of this potential problem when we designed our blinder 😕).

After fixing confidential.SurjectionProof, if we don't change the blinder, in case of a verification error, it would do return an error, ok, but ALL the outputs preceding that one would have been blinded, corrupting, in effect, the transaction irremediably.

tiero commented 3 years ago

I would leave it dumb and document that specific error. @altafan

The consumers of the libraries would know that they need to retry it

altafan commented 3 years ago

closed by #141.