{"id":128,"date":"2011-02-16T14:01:28","date_gmt":"2011-02-16T22:01:28","guid":{"rendered":"http:\/\/www.wirfs-brock.com\/allen\/?p=128"},"modified":"2018-01-25T14:51:26","modified_gmt":"2018-01-25T22:51:26","slug":"testing-for-0-in-javascript","status":"publish","type":"post","link":"https:\/\/wirfs-brock.com\/allen\/posts\/128","title":{"rendered":"Testing for -0 in JavaScript"},"content":{"rendered":"<p><strong>Update<\/strong> January 2018:  In modern JavaScript engines that implement the ECMAScript 2015 specification <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/Object\/is\" rel=\"noopener\" target=\"_blank\">the Object.is built-in function<\/a> can be used to test for -0.<\/p>\n<p>A few minutes ago I saw a tweet go by from my colleague, Dave Herman (@littlecalculist):<\/p>\n<p><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgEAAABTCAYAAAAGP9S0AAAgAElEQVR4Aex9C0CVVbb\/78ABDnB4CgqKmuArMS3FRhMfqelE5g2aUbNwZrTJ1O6oNyrtP2mjlda1zO6kZWpzxRq1CZzy4vjMfKSjWGmCb0hFRUGeBzjAAf6\/vb9zOA8OcDDs+W3lfN+333vtx1p77bXX0tTRQXUqBFQIqBBQIaBCQIXALw4Cbr+4FqsNViGgQkCFgAoBFQIqBCQEVCJAHQgqBFQIqBBQIaBC4BcKAZUI+IV2vNpsFQIqBFQIqBBQIaASAeoYUCGgQkCFgAoBFQK\/UAioRMAvtOPVZqsQUCGgQkCFgAoBlQhwGAPG0lIUFpaiwuxv+a52iNfsp6kCpcyrtNTYbNTWjGCpr6X+rZK3Q1ssZbQYJq1SGTUTFQIqBFQIqBBoLQi0gAgQNwmb+mutKv2Q+Rjw4e\/uxX333Ys5H2SwItbv\/\/zgjKxY3ok92PzRR9j59dX6ipryMrB582b+fY6rJsX769XTcO+99+LehL+hqD7mrX6x1lepf+uUZ98WaxkWmDRXijP4NJdGDVchoEJAhYAKgVsPAa2rRRxN\/i+4ubnBzV0Dd60WGo0GcOe3m7vir1H83NyUp8YdShzzN9w0Mp6GASKtTM\/C62qZjbs7PDw8oGV+qKlFjamKZXjKOO4ss9qkYNY6LcPrNOI\/wHyFigORj0XVgSVPxzYJ\/8A7HnH0dvrtpVe8y0vN+1xZVyAvv5gBBnw6PwkrLgJBibdh1J3hMrLx8j689NJqvnfCylHDEM48PDx9lIzCPeEykJUU3+m3Qf2\/U25K4gZtsYNJ8wU4g0\/zqdQYKgRUCKgQUCFwqyHgMn4SiNTy58Z3fih\/rGG9PxG25V0EC6KhzpKuPkwgbiLz2jpotR7QeXmi1lSDwut5qDZW4Aafxooy+AcEoJYEgshPEBs+vr4ICW8HH\/8AmMz6jWpFmLl826f0bJUfPaZs\/AKJZIBoSKSgrgIWJBvu51NPfHj5+JlLawtvL8EtUeolPQ32FREEi9HIIwKtDjoPwtQ+mF91zNfEOCZG0UEr4OcQRxI9JiOMJi10OjNB5hDH\/rPpPGV+DuUohJXoc5ucZFscYGIJZrvqIOoNWSeRUElahybhY0lffQEfvb8NhZZvPrV+YYgZMhx9IvxtfF1\/vbBrLbbVDMcToyMbJLr+ZSo2Z4RicmIsdDah14\/Q\/5SjvxGHktfhbKcxSBzW2Sa2+qpCQIWACoGfNgRcJwKItwXuduePRPQCqfOfQPK2TqOpI\/Knn0AC\/HPjdy3\/BAfA4jyI1L29fVBRYsD5k+fwzZdfIu\/yZdRVG+FG4kDn6QlPnZfCaWA6faA\/gsPbkkC4jIgu3RDSoYOSJ0hkmLkBklgwF2Dxs5RnG2bxc+1pQNob8\/FJVjnunpiI\/A3vYkemkjLz769i+uFAhAbW4cKVy+bs0vH7uN\/h8T+\/jCENCqjD+T0f4r9fXoZ0M6aLGf8c5v\/nb9He2xy5rhB73v8fvLXiE1yUXkEYnTgTTz7xEDrJONU4vWcT3l37N+zNNGcS1Anjf\/80pj86GBZSxK7oZvLMSnsNL27IQtcxU\/H8owMk10L6fZIFn\/bjsHR+nF12ghtSD5PJCzDlnnBUXDyMVW\/+Fcl7zcBhncY98if85x9i8Pl\/z0fKiW\/NeVjh8+Swjg75AkaWfteo+9GZba2pqUBO5lEcStuAnMEPIy66TYP4zXkEdOmPGAQ7jVZTTmrFiVBDVSUpnerQBmnMpzwN\/FUPFQIqBFQI\/JQh4DoRYEbqgq1vcRK5mj81bmIHrOz+FX8lQHADNETUtWTz63Q+ENEKr+fjy5MH8eWhw6g1lCJYr0dkSDCC\/PTQ67xJRHAXyCMHE88KigxlKGackmuXEaLtAGNpESpK\/eATEMSdp0JoWOojOQ9mosDiJ57KrtbWx\/X33BN7kU7cdr3Pfbj96EnrTrXwJI4eBUYO6oCTJ3PqM9QUncTBkzcwxLPeS758tXY6\/rgine+izkpY+qZXMW7HFXy6YxbCKTnwwfT7sExEqY9TiO3JL2H7lgsyTsXmBXj0pe0yPDh6AKJwHkcyLmLTslnI9dyEN37bVsm4\/teFPHNPIDMzE5mGO\/EnEgGBTFsh\/ESjO93NvX1DVw+TO3MwpV8B5iTMgKx2pxgM61KBvXsz8MmKJHyS8xpexgXCRyFpRE4W+DgjAniIgrYdw9GWTBfhwiMi0fbzv2PbgQO43nMcfK8eR9pnh1AopR69ETVwFEbeZsBH\/\/gad\/4mAd38BaFZjeMkHM6HjsJg98vIrSFMIgNRU5KFXdv24NtCcliCwhBkLBXFNeqsJKuI4i6Jo3qawXgVn2\/didN5rIjWD32G34+BLKP66hH841AlosNLcOh4MYaP6YqjhwvRJbgMx8\/nAd5hGDgwCrnpB\/Ati\/cOisKoh0Yi3KMGWUe2Yc9XORLeWsa7J+5+9GzjgatHPsH+vAAEFJ+WabR+t2F0\/GhE2LIvGm2FGqBCQIWACoGmIUB065oTiF35IxYnJrd+K0hNfFM8QDpLmEDKgu3vqfWCt4cO3546h39u+CfeXvIm0tZvQDhlAR4Y9CuMG3YPht51B3pHdUJURDv+haPbbRHo3qUj7u5zOwb2642enSLgjRrUVpZJjoHgSljKUZ6icNvjCEUGQVRIhN+sIz9COr1bFF4+8hlm9FK+ez3+Ho4cOYIlb23GZ+89bo7VCys+O4L\/ffJO87f5kfc5npUEADD6z+tx+PBh7P34FUoQ0BUm473Pr8KQkWImAIBxf\/5A5p224nGljUXrsTXDgBu5lejcqxeGJi7Gtr+twIq\/rcb4IKWM\/Bsl5sKsD1fyBMyyC3pb2QWzH7NyRiXWw0Ri0XrUiKFjE\/HS0r\/h46UzMG7cOIzWGTF4\/sfNw8daZXIAbD742j5KcAyKYai8ik\/SDqG0zV2Ie+hBDOyhw\/lDO5HlGQpfUyG+Pn1dSWi8gmM5FSQgQshpykVuiaAYirBrw04i0TDc++CDuKdjDQT+dto44WkqwMmzZ3Hq1Cn5d\/bsSVxnfIVmKMPnH32K08Z2uDcuDjGdgeM7U3CK4K+pqURpXiYJgBu4rU8fBGj4XfgtjheEYkzcUEQgF4c+OwBjl6F4cFQM+\/489hzNQXXOfuwkAdCZRM1DD94r4+09cJKjnXlyvBfmnEZZx8GIGzMYQaXf4rN0K9GpNFr9VSGgQkCFwM1BwNka7zQngUjlrp74VCJ30gISuUpWv0JLKMhYQbjivU7s\/r19cTXnKo4c\/hJf7NuPMgrYdW0fjuHD70WX9iHw9\/GGpyeFBUlY1HLHVZ9HXTU8PYTwXy0CvL2g9wmBoaoGNZ4eqKsykhCogpbCdzXc+SvOiugtedRSqEC8t6azIEC7PD2s235nm0vDZSsHYftLT+HI2yJ1YT1X4euvc3DOb4+SZdB4TH+ou3wPHfAkPtsxkbtDLY9E9ND2WoLX+u3B5zw+eXr6OuwVu\/Um3Ll\/71FCm8jz9L\/NGZALflNO64\/2hDF7G3tXzMKQFRSa7BWDscMfxOOP3A89MzU0A5+myrXQBO5u\/rgrZiBC+\/ZBG+72Pck5gkT8gejTyw9p35yHcUA4ai6d5vXOCPQM90DxaTG83VFzIwvf8m1gQhy6CVZHeDxqCtbiwA2+N3AijUDWuQ1CxHFL9dVvcJoEQZ+4gbgthP0eNAQXzqfhm9NXcZsiJ4qYhyahX1t3GHM+Z4ogPJgQS4IX8OzyFXLOdMT9A3tKgmJo1NfYVVYDN\/8oxJBD0LdPBAsoQUgbLb7NLeTxCF0NeTGhAxEfGy2+UBVxADsrLVCRXuqPCgEVAioEbhoCLhMBxKZmBE32OpG7POKXflpJFEgCQSBxySWQe3J4eOlwKTsH2\/+1A+npX8PPywsd2wSjb7co9OrWBZ7utTxd4OoobhlQQJCMAXlTQCBucUPAVGviUYKIo5Qd4KtDHRGKRO7V1RTWY5hAP8xDyCIItr\/85lOQBq1NANhB2Yr37bydf1gjdxo6ALd7C8LECwEB5OlSks5fnHefM6f087fhUhtRcuMGkRpvTuh1ODR\/EOaK0wC2OTh6KBIfH48tqzfVExPmHKyPKvNro3kKFG12Nq8eTikdS0SHpzYSLxzejvt37cRnu3dj5450FGamI1n8rTiATYdeARnyN+1qqipl2hqK7wV4FSJtzap6HQ6gFITg\/0T0JoJkeVeMg1B18lt49xgjjzXEfQ7hqnmcJLb93jYs9ABfkmsN8TzjCaHNHpg8ZZiNwKAR+ykYmM3QmirlgEQcORznt8X5lQtgC+QchR4kAOqdti2CzJ815sMVEUsQi+4UjBVe7r4Efu4OrDlkIxbp5y7bJuJqKQxrcZ6+3tAqVbB4qU8VAioEVAjcNARcJgKU3bUi2S\/exTVB6cwIWoaLA39xni2IAY0HPt+zH7t37EFxQSn0vn7w4y4+yNsTwX7c\/TO52OmLpU6c\/Zt4DVDLa4HiTKFGw2sBlD3QiLuAzFLcHtCI64NcMRmVxAFvFugM0Pn4ck+olUtvvTAgCQBRFwsR8F3kAZQG2v8qKAnkbuShgmV5sCxbV1ZejTq9PT9A589dq9mNnfgM\/jBAbEcpYPfuMhwoAnp3aosOHr3px539xdXYcDgB0waE8ojgY4z7\/TKZcs77q7BPEgA8qk9cgY9nDSBsLqKYRMAn5rwdHx1ubybPD\/cjGuVKsqv5uFZdB19tHvbvS3fMqtFvY9ZmPDFtHXfXA\/H\/1qzAs68AGR89jd+9updpTuEGcaotEWCBjz3UrNkLQtDqyvDVv88T1\/dBaP5B\/P3AafQY+hDu6dkWHsazWLXukOx7BBLxag\/hxDfHUEPEHj04wpoF39wt1zUFRjW7KpP1GMPiZ33aVcLqzTd3CrQKN3TiVPT05nVWtxpcz\/oWVcHtKEzxLUPEmLZxTSBsS3Vy9n+K9G\/bYMz4OHQOJOds\/9\/x6RmbPGxeLWlsvNRXFQIqBFQI3DQEXCYChJS\/vNrHooSkv0SuPPOX1wVl8QLtKk4g8y1bdiL1439ySfREgD93t1oSBmT4+3FH6+3lgUru9FHH9EwmkXYNd\/+Si8BdvBA+FKx8c36Cy1BbR3mAGkERCP86Hitc4XU9Hdz1wcxVonxyARhsRsoibWsTAGKB581A6Qo\/mYch\/Ht89U48BrELFC4Ts+IGYeicDzFV8VB+I8di4ZiXMX9bHVbMuA9\/70RpgIsXlR28pjPGPqtHaPdHMD74I2wqqMPqGXFYHcTD\/kJlZ6gJTsToOzoin7REegGTJv8PFqE\/rmxJVgTyRClWZkN9yaHDmsmzuw6lmSFK\/MJNmDBoB5nX1mOK+oxsXhxxms4vCLlFF1FQeBGPxmVh\/H3tcWKHIABEv96JMG5ywaMbxVnh88aj3c1+to9qXL9ynTdHyPauKEDmF3ulMFyPUXfAo0YhTHwCfLlZv4FDWz9jQm9U8YgIOl\/0jgnDx4cYh7v40W3s0DA8wjsjDF\/hs+2HEHx\/f7hf+xp7zrMlTq9T2NbH\/l2QDR5tI5hXOr7Yfwzt7+sL9+sn8SmFFW8b1RHtnPSBfQ7Ov2oEQUJuTYCvJ0quZmB\/ppAa5NGX8+iqrwoBFQIqBFoNAgJvuui4BacTCNv2aXmXcgL80Hn54NTJs9ixfQ88vfwQHNyW3H4PInGibv4JVr74E3flKysrUVVZgTJDCcr5J1m\/RPZ1XBQlZ4HEhlBGJJyWeXiSOPCgRKAXq+DNeOX5eXAXxwUMt22IktZyfGEVEJQZNffD9sn0lgXd7luH+\/\/rz4gWfsGdEWyGhb7naCQOCDbXWYMLpWJ3bc6nnR9JBy3iXk7Dn8cPkHGKLl1CkcxjAP78tzW4RzAG0BHPpnzAfDor+RQVyWfwgES898FMhPLfpJfnoLOsDxHP+vU46h+N6M5KOSczzipnyDKcfrL+zeVJwfmxc\/D4AHNdNUWsVzTGjx+m1KEeSdq2RTTN\/C3KCB2GD1Y8h+hg+hUdxUcUmjtZxPfOY7A05Vm2CnAOHwY4OB05PV9tE5oXNyNt217kEN3GjBmPYZG+0LXvjR6ki7769AO8v+5jnCW5wq03vjhyQebSJup2kgSszp23g2SCdFZSoC1GPxgDv7zj+Hjd+9i07SszY94c0e5ButiekVMf6s0jK8HXEHl556Rjw\/tr8MGnh+AXNRhDWUfpHMlqu2\/7vEX9yAxDO8pQeJdmYtP772PDp\/+GVxjbVnEa6RfK7LkKjO\/ubpehUqb6q0JAhYAKgZuEAG\/vkaftgsv4x7PyvF4ge8ufZNm7e0h\/7sH59ISp2g1v\/89qnDqdheCgthTgMzE+Wfhk93vVVqFHWDAG9OqO8JAA6KgBUCJxRtDy3Y3cAp2fL2UJuJwT4QudBG7c\/ddUV1JGoFqWSyoAtUJLIeULjOQ4eLXvTMGqYB4pcOdP5CScaJKFWBGEh3j36RHvQiu\/YxS20SiONYSSn8ayMhqQVypEzb2pY0Bskxs6o6EIpRXVjOKHQHI77J0JRUWFPAZpPL19fOWr6Tx5OEGig0XCLzTQ5izcWU6N+4kyqO8JWh6+6xvUm+lcgU\/j2cuQahKPNRxzOg+iUOqVqHbTQby65mpIfFbDnTdVXE\/TWM5KXsxMqUtj0Vz2N9eNY0fQIKKdbnx3uWkul6NGVCGgQkCFgBUCjeIqaxTlzYJUxZfcKQuEa4N0xc7Xk0p+TmWeRXb2t4xFdb8kAKq4mIk7\/8XFJQj0orQ\/1QsXU0lQSIAPfNy9zAQENz4VFZT2J8eA6TQ8V6\/iub\/gAtRREEtUUlNTRbqARwVaDby4OGoqq1BDYqGKefnpA8g6VQQEGVUSCwptI64MCp\/vybGdOousRGNF6sj6519TTqcnIm40ihaBgQ2V2TSVnwhrOk\/u1gMDpSR\/c\/k0Fd5cGRwIzcOnqQIY5mFGkjKaQObNxLcPJpGpay202pp5iVra5yfaqToVAioEVAjcagi4TASI3bxA\/sI2gED43GBLeYBawUgQZ\/jCl2EXL+bw7F6ojtVJZOxOHQFVlOTnhQJpD8BYScE5phFHAm7khQqp\/mqGu1FS2p27qvxr+ci5koe8knIUFhuoNleL9rwO1iHEH77ePJMnp6CO58AUEYTJs4JLpwf82obS9oAOlRQoFEKJFgJA1okChXU8OlCdCgEVAioEVAioEFAhYA8Bl4kACyfAwmq3cAPchNYeOnHVr6a6FlevXCNiJ2om8i8jb7iu1h0VxkpygmslshfHAjz1h4+PjyQqTKQYNBQJF2z7q7kFJAIKcJW6BC4XlCH\/RjEqK4zI8c7Fbe0C0Z5\/t93WHt4mHcrICagg\/VGWm48qcgxuu6ufFDKsETICgmIRhAqJDZUAkN2j\/qgQUCGgQkCFgAqBBhBwmQgQgvkSt5JhrxAE5t0\/uQPczDNMQyRfQ7Y+z2z5XUlkLzgCJp7la0koaHgI68Fzf2khkAhaWA10420AraeXJBAE8r94IRfXrhejlMSEUaOD0b0KdbRaaCJRca2gnLICnujGa4HuOk9cuXIDp7MvoJy3DM5dycUYqhFu3zVK3h5g8awQ5QLEkxwIhTMgPlSnQkCFgAoBFQIqBFQIWCCgbOMtX008LTt\/C0fAMapA9GKXX1hQjCru+iurankMUEfmPP8RKwfrfRHoQ8t5PBfWU+GJF48CxI5dmBEW6YqLS5FfUMi\/Aprh9eQVsXKYKo3oRO2C1ZQXKC0vlccHEZ06olOPHrh0LQ\/nLlDXOsvwoEBiFYkPhQNgrZkF+TdWZ2tM2zfBPZBkhK3nT\/NdckK+W9VbExatmdd3a5WaukUQaOE4upl+rqOG0MK8PBQKodmfkLuZtv6Emve9V\/X7Hgei\/yx\/LW3sz6XvXScCBF6ksB632ASalQtgAZy4228iJ6CUgoDVFNUvK6+EocyIstIyaHjmH0yrgG18vBBI07cBfEqtg+wAIRsgCAEfCgp26NwOfe7sgYEx0bhvUF+MjumNu7p2QFT7Noju1gk9ut1G\/eyUL+DVwnuGDoGRnAapQY1chfCOnWT16q0Vsq6CQyGrapZZsNS1qWfmuicxevRCnHW8EN9Uoh9lmAEbnhyN0XNSlKuDN1PHyuOYdt99WH2cGo1uwhkuHUTK7mwlpfE4nhw9+qbzuoni1SSUnMnavQHbzt6sTmgBwhaOI1f62ZSH3SnbkGuZY4ZMLHw4DuMnTcL4hEdx9LtU9\/vsdVfa+n3Wx7YsRxjbhrn4bjd\/XUzTVLRm8\/uex8GZ3asxmWvSaPn3JNbtvdRE9R3m0o+575tohbMgl4kAkdiWG+C4uxbI3ItXw\/ypGEio7q0oLIOJ5t58aVQlVOeGNpTK1rM0T8GkJ1EgdP\/X8PaAuAbo5+eHbj26YviIoRg1ZhjCw4MQ5OuO8Dbe0NPC2qBf3YGRw+9Bj+5dYKRVwYqyctzeszvi\/2M0evXshq7dIuFDC4RCvkA4C0fAUseWU2xXUCIVt8vsfto\/Nww3TwSw5QoMWyaDrwCMyGPKfKw8JVT2Ks6sm9DyqT5vMQQMmR9i2uI1uFRhwbY3UyA5d2145Merra7m0lw\/Z\/7tv7B45XpcNs+x7D0fYT+HSXTcVMya9RQ6uHxIeTPtad00zbW1dUtzPTdHGLue0hKz4fy1hNzcs\/n8vs9xUHR8NWYu3ohr4bGYlTQdAzRZSF40BRsynVOgzubSj7XvW9o\/LZpuFqQqnvUsFIUpIL89yOIX1wEri4mk2\/pgyF19EcRdf011BQwGAwylxbQCWA437tLF1T8T02rceOOdutO9A\/ykwKCGYe07hCIk0B\/lpQYeG3hCTyJBaJ3LJ7tQKBgS8gSkBtAvuhvOZJ3HbZ3bSxkAYYBI\/KsTQgkkLshoIMmh6AloKWCaQ3uOhIUFNqIcxzClbFEPc5iQo3CoUH0ahzDhb5u3aJSQdhB5KU6wsyzvFqRt\/YaPJ3QiDY9cxBU9u7xENBHmUGZ9aq8+eGf7dvs0snxLDNt6WPzMzzoSfWFAGI1DifrVV1fLq2\/0qGZ9xFhpUB8mr4cF3x3DbcNk75oztvNvrD12VbSHGwuy1tEunvJh6QdrOea228DDsa4ipTX+LWyLTR1sYeJFPRrCefIqrhgiElSyM5T5K8Lq62yXh40\/tUaMfXkbHnCAj2O7zNmKLBXXRD9r9W0Yh1eCxTkhXXXBFf5G4o+zJ6CXTTm2ZTToH4d2yIxs0opvkb6+fYqH3dyxy5\/hjnFFmZY49WECTpa5xPFrtbcpCrB3Dcpn6YreEms8+ziNj0lZD4f2iVzs01vztYdx\/eyrb4+M6SS\/+hwc5681C7s86uFiTcjw+g8rTJvIT4nNNaEVxkHD+ljrYn0z4F9rN\/IzGktXLUAfLklj+4ci8ZGFWPPRYUxcMMIa1fzmdC6JsCbGuZK08T4V4Zb+k\/2rJLDCzPx9qx8uEwECuKKijpW19Lfw9+Ck0FOJT6ivmzQRXHzpItpx9357\/7tpmvUMLlyglr\/Saph4ZGDiNT9pbMiTdgOqyOKnoRihLEhwB2r47Sn0AQhlOrxbWF1RSrOwBpQVlQixRNT6slReNdQzfmREe2F\/iPGolEjeMrDUSOEICA6FbZ1bA6Bndq\/DiveTkZGr5OYXGYtpT8\/CmO6BOLtlCZ5bm4HQUB+Ul5fzFkQbqQb3RkUY5r0Sh49mvwg88BIWTOxVXxWZZk0eevlko2bMi1g8uY8My923AjOWHcNjL72OhF5CcYABWxZOx0ZMwMoFY6GvuIQNy1\/Hml0ZSl5hsZj3wp8worvQpmd2Wf+HVxd+hv37s+jhh5FTZ2PmxKGKxtzKs1g89VlUJryMFxOs9bEkBcP\/MvEv6PPau0jo5gtD1l789a33sMvc8LDoOMx4+kkM6ih09dk6pZ5rBHw2voCHP78br\/41Ti6Yl9M3Y8nyNdglqkONgHGz5uI\/x0ablStV49iW97B0earZtk8Y4mcl4Y9j+0p9ALn7VuOZZUcQ0YPqk9OZQWQ83n97BgKyduONRYux39wfkSOn4s+zJqJBtSxVrL6Kbf+7Cu9u3A8LnyKaaf40eyIiuSA4utxD6\/DMa19iUFxnHNyYJusWFpOIF\/4rFofeSEJyusjFj21ZhDlsi+JKkZ6yGstXKvFlW6fPwpMJ1A7ICK3Vlsb65C7jVjw4c42syubZ43By6nIsfsgDS\/64FBjUExmpol5hmLXqPYzUfoV3VvwNaQKmwvmxXx5Lwn8m9GW\/KH35qf8fsHzOCKlIKmvvBrz65hpkyWbHIPGhttixoxLzVs5FL64oAjE21s+525Zh5hplvCaNexgP\/kcvfPpPpdzZZMvGiHpybuRlbMMbS5Yi3aZPn5vJ\/hFaLGk3wr4dwejZpgr6uL+4PHeuNDGHG+avwGmM7gT++upypMnxz7GZOAh5Al5OnOFsCqbPSEX88pXWubvkaazN7ovXOWa7iJW36Dien\/IiOs7hPB9Y1\/iYNB3HwukvOl831lbipXULIJcHcz1yHGA8dfk6TGSEJmFq1wYn8\/e9ueima3p+wnQVKf\/zFtanpSvzyi8aiU\/NwOQR7eW6ZbceyPyshZ5NWYiZyd91HCj9NLaLk0lsLYrLaBY+4xD0G\/mwJABkUMgATIgBlu\/fx6PgEehmgxmN7MuGc6npcS6TN7PO5B7ievbaCQx7qDPSktMkzAQueeq5pzEislFFMbYtaZX3FhwHKLcCLJSWhSgQtRDvYgfvyWdb6naPojDfpYxMFFzMwc5\/7cQxWhCkoj+EBvujTYA\/FQhVcrdO1r34z5sAprIKlFA\/QGFOLgqpI6CyqIzbA1Lx3LxWM6yiqBTlRQa0C2mH9uEdqWq4BoXXC2hhr5jHC7xxQGQr\/kg3kNamjQFJtQr1xIKBWWv+EzX97i539xKykZKRGRKHpPnzkZQYB2Ttx9KZryKbxfmF98aouGEYPHgw7nsgHlxukZGRgdxsqjoOaOXoU4gAACAASURBVI\/QslLsX\/ORjKvUJhdblu9Cqb4novREHBwMyrpnRPrHqSgtzULqntNKVMNpbCSm8+nSiYp9crDs0SkkADIRO2EW5s+bit7XDmDxTFoWzLY9y8jFgQNtMH3ePEyI1WPXmkWYsfqoGRAV+PaaAecLBJycuQqcK81FgVAlaDqLl6ctwq6LEcxrPuZNj0d5ZhrmT1lo0xZLHlp0Gngf93Z00XdjfPzd0pKeQH77k9fgSJt4sn2nIiYsF2nLZ+NDMwvu+LqnkEQCoHxAPObNZ30HlCN1eRKeWqfY67uefQS5hEd6ejYGDIhCePtO8LuUgoSZi3HgWhQSk9gfU0cie9caTHl0hRmOljpZnkZsmT8ZSzceQM\/46ZgvyomNQgbTTHtznyWS3fP6iQMsNwOpG7ei39RZSIyLRG56MmZOmob1l\/tiumiLf6lsS4qEvQn7lv2OSDGtvi3xvcuRtnIenlhxSObdKm1pok+uht+N6XEKQRIaG4\/h3YQRqwrk5mZhFwkATe8BCPfviHDPDDzBY5u0oxpMmDUP88kajQ1lv6xMqu+XgnO5yPoySx4r5R9djWmL1iBbQzaqgF3fy0gWY5YD3DKKmupnbXgvxJJDJIimkRMeQ0yfe7gfU77jJkzFfb2CiRvXYdLspTh6rTemsk9nTYiVfTotYYl5rDm2ozM66Q0uzx1DM3PYKZx8LmH+5HkkAMoRP30e531XbE7m\/JR1b\/ijDwpFGUdg6hfWufspKd\/SrFT82zw\/c79MQ3ppKcIivJsek\/om1g3fLmjvgC8cYdynrc4FmNq2wcn8JVZrbn7u+5+ZWJl2GkOmJnFezUKsPhPJi2diXWZlw\/XABsmKkoO6DmyFccDxHNQMASAKM5cd2t5qnZOabRDZV4zEhkfBuo7O5pKwXNLUetb8OnP9hFjPMrAxeSvuTpyO6YkjSZ\/sx+Jpf+Xq\/v05h65ovGBlNy0QqpmFwR25JATMScS70OgXEuiHcrKgo8LaYXjCQ7h6\/To+\/2Ifbu\/Tncp+aCClQNmZV3EnL9OTbS9lA4jBpYCgl442ArSoNVZRdIBqeCkDUFJUDKFkqKSM1wEvXEU2OQxtggIR0MYXnag3IOL2HijOy0cwTa7SOrs0ImRhSYl6i3Jay1VUeyE8Oh6vLZuBdqKQ2FiEVZ1C0sYCFBD39u8\/FjP6K6XVlR7D82IzpumNRR\/OldT\/uGmxSF26H1uPFTFeIAyZ25HGKCP\/8CDuq76CD5fuQnrOXIwNy8IB8wY\/9+BXKGKmpq\/2SsQ2a0h37iRXIo0r0Mh5H+C5e0NkgbGDbseT45KwfNVOjFo8XPpJllfKK+gjFooRdyN4djxWbiQR81h\/9NL1wbs7tjLAhWFgLAFtFwG+t2PIkFiEaGPRp3MnbD7rISeDCLI6HfqMmYR71yejvN84TBRcBgrSSLnv2CRsXDBGlvjraE\/c\/8RKGIQAhuki1oqdQMwsbHj5ARl+b+wQdFwYh6XJa5E5\/k36iWkHxM1fhzlDBCYxImX2g3xG4pWPV6K\/XAxj0a+zFybNT8WW45PxuGy4SGV2xqu4aAxHbGISFpDjIsZHbOwdqHp4ElIzTqMIQ6QZYkt08dR6Wsr9kOUKWMfgxr5Ewj8Wb69dIHcNcZFVeHBWMgpK2ZaiU1glOodt+eCVsXL3PGKIAvs1qe\/j+JSBrdSWJvpEF4FxYwdyUc7A4N9OwZheXByN12Uf+LEP1pr7wJi9DSHhkYh\/4a9I6MqjG7ZuYJcqxJGLUCXY3qypNMJY7sk3slFXbZTtf\/MD7j7FejvkHoT9ZRJ3UHw3u6b6OWzgGEx6YCsJ4QpayEyQnIPQqdsxg99jfj+R3zw7npbMnKKxOGWZuU+H4M6OS\/AHzo11\/5qABaMEmiYZYdOOnG1\/wXYX507FmV1NzmGxS3eWfzrLjF\/0LnftYgyMQHQ7pU78aOhC7sJ4UsFr0v6N\/Mf7Q3viKyj7XODQ0SxM7NYd6Z\/sYiPiMTS8AJuaGZONrxujG4zXsD6OMCZM\/18zMB3bxaYNTuavKRMvNTk\/l6D4uiCJYjBk2FD0D9MhdkAPbFx\/FL2CfdGnl8N6YFOaeA1hnWdO3fqdx4FDtvLTnhNsPfaT1r9tE1TJkdtQC2kTcwmNrWfG0mbXGcu6Er\/oQ\/OYArpWZePpjdng3gwRDsSdbVVb892F1d++OCtAFSJACAEKsfwaN3IK3Kl+1pfqgHUeuKN3N+74S3Di2DFcv5yP\/3j4fhSUFOL8uSx5pt8mUEFc1dVl8myYJ\/jKtUE9rQmSABAGhqp4\/g\/eOCjj9b\/ychN27NuNsznUFchyunKham8KQrtQ2g3gdcKqUkqwU+BQQ62DAjeLWwEC+WtqW8DssG+q068uY2Zjebej2LZ6GU6fv0AuR4Z5NxBpP3gEAZCQhHRNOJLWLoZcN5hjxLB4RJMISP3HfhIBY3H4I2VyjrsnDBGGEdwf7ceBr3Mwqkc6bdWRLRsfgTTu3M4bHkPxbkEuxHGR1uH6vguyfrsWT0PG+74oI\/PE11fsPehO58pdW5WQXIm934ZVqMddo2Jp6\/cKrLJiLg4BfWcM7q1BdkYyJsWxzmHRiH9gHH49ZgjCnGbB\/hN1oeyHrYu+I5LIRHHa8J6S+j944gqmtDtHngld+nJMmExEwwb5+pJtLht0Q9bXWy7NkRh5lyAAhDPBIOdtFub9bjKhVYYyayJ8fjiLRIBytKLE56+uC2a88S4y9u3CimVpuHQhA+mWc51QgeicOVGIKFcZsxzlCA+lF3dh4eYEtq00XDkj+2HCI8MlAaDkqMevEydgzdyN+DrLwKXSkud3aEszfWKgHI1wVSYSJjY16WTTB7ouY\/DG273w2Y4PseTDk8g+l44sCXOZ1P7HVIRvicn84v5DIQBkqA7D4+NIBHxuF7exfhYItNq82MpqcaGz\/zbCkMesOG772iyCEcPiEEkkfy5XIBrF2bYjor\/rcyeki2tz2Db\/EmnRMxrD77SMATGX4xDGOjl3evzqwVisWb6TBrWegM9Bzt3IkYjz3oW0z07B8BvgUw74yEQS1C6MyabWDWfl3yxMrXnZz1\/jpVPNzE8dooePhObobsybPI7Z+CEm7iGMe+B+3EGCQBxlOlsPrOW1zjiwzU+8G3N24y+LaGw9WCHkCyraYtYLIx2j2X2T79nAGRuZS42P8z4urDPKGhBrM6bMYjz2uKRBbVrXw\/ma10gZFqEWy85aEARCSZBwYgchvmv5XVxeAr8gP+RlZcOH5lFH3DtQGr2pofpecYXPSHZ+SZmB2gQVOQNvKgwSJomrecZfVUUFQczHJIwGkRMg7BEI7YK3R3eFGwUIO5y5gMvXaG6Wtw3C2oVCR3sDxQU3qEDIixWgLkJBIZC7ILkMzMdK98lqfuefo6vnYO7GDObvj5jBA\/DQrPtRtXMp6GV1FWewRBIAGkx9cwXGRIhJYHbcfT8c54eMtJ1Iv9QRn+wXiyp3QCKK7g48RJyQfGA3Ps89QI9heCShB\/alpmPv9p24zriRZBmJZei6ObvYCeNxRzD1JBBuBBb0\/INPpLLki8NZGsxR9nNKAiFTeXMuBIlv\/B+GfLMPu3btQ\/r+A9jMs93UNX9F0vsf2rexkQIETTKgZ7hNqEmiQlFNU4VB+vtRzuCxoZ2V9vCwRx9ESqCa10cJH8mJsEktXhXRNz9MeCwewQRBFf956vXS36dTW4fY4jMXKx5ORCpxiYZHN4PvGoRZ46Jw9K9LsV9UsFWcUitPh9lFzdjS6SlA68y1vC1N98lgJ4U49oE4u46fsVJQzNwdD8Zdw6YjIfgClvIoo6GrBslyOmfLpDW2YxmCWBPLnehnV5xEFjQ3bg8l+68GZYS4PndcmcMN8peVcqx904KBXQaSMCGL5MD+vfDaV4rIx8bhId9KpC3diz3\/4hELsxNcPZfGZFPrhmO1nHy7AlMnyeq9XJmfYaOfw8d9x+Hz7XvwxRfkaG6lqfO0ZMRMX4HFCbbzvj7bJl9cqXODfnLI0VRyHWeyL8G3guuI2CTQCqg3UYRwjuOxxCByowyX\/VCTcZ39NCzbdpy3YJ2x3UE4K+gW+7nYXFELBbE61sfCGdC4UekPOQL+bUKRya3EhWs3EMhd2SAiygCy7k+dP0u9ATSN6kF1wlT5e4Msfh2RvyAshKZBD5GeE7+iooY2BsTRgBt8qGBI6+FGc8RBMFYVI8jfHXdEhaJzWz2yLmahwnCDcoO+qK7VoVayLkXtBFHC3T8FAsXbzaoNpkC1vRNUDk3tZnxObE8W3ocpMyQyFuTP3rPrubs2R6++hBVPzMQuUsKJS9dKgRz7jIgIxz4GHrpi3pQkGTT9oTvNUQIxJD4GySuTsZS8x7D4JxAWFoVRFIZKXblcxlEWDZ5HESbChd75ABJiGEG4ujysW\/gysjuMw6gRnRQEefosCln3cEmrVeDwnv2MGC1N2MokJJQEAlBIOeHj3AmKeu6f3sfARavwOAXEHp8jhNtWIHFhKhU3cadpS+jYZFFm8y5f6\/vJGiAmkz7yTu61k5EX1hfxCSPM9alDRsqbeO+IH3qMGmJN0OCtB4Y+GI\/uQvCErpqCgq+8tQNdJsY0iCmOXwQBgNj52L5AybOu+gwOLKafWCdawenbdmDvA5s\/OYzEXpa2VONAqmClh6FzuA1R2KA819vSbJ+YiQ5PIcFs62z64OLRvTJk+tufUPhTiVd4cIVtbOu7Nhx3RPMcNO1jHHs8Fn39CO+6Cmz\/u2gXed+2zqYMi7foZ1vnWC0lTIfgUL7t2oGMWWS5Kxs45B3eI5HmyEgh22AmB+3KcHXuuDCHLZW0yV+Zb\/vxxYlC9IpR5l7hiS9knQZY4js+BWFCsCQvF4MLmHpHd3Tx68+35Vi+nAuGXxxiyNVzdUw2vm7I7J3+KDB2BaZOkxNpKq75+Xk79tDU+aHQWVg2YwbGTp7BY7FDSPztC0jf+w2MZiLAkp\/z0mx9Xamzs3FgmwfXlV4T8fH2ifae3Aj05ARNS9uPvKl9ECqWjbosbEvN5TB+wKlwsEXgpam5ZClEjHNX+9SS5od8Elu2zEkWu0Aa\/BPO8i3eTbUgEdAGJaRsPv\/yOGp05AYUF+Fs1llavguEicKAQk0wrwEgn0RAOW8BGMnyr6Rq4XLu\/MupIVC8VwqDQtQmKMT+xblkAc3cnjl3DrmXr1ABUB3CQtqgX59+6NihI\/J4bVBYIPSghUKBzARRYvtnWz9Rx+adWHWy8ML8JVi2bJn5bwmWLFyGoxwj8ny09CDSdh9DVtYxbFjyJBalMQDlKOcRxhYKxIixBHRC8NX92LBhg\/xbt24DjucKtiw3\/N2GYgJ3\/NKFTcAIG2nWLvfcJxGICBv2qyj+BuJXo8yRzYuGCOsy6rcgdx6p836HZSl7KXy4FyvmTELy\/gwYw7pYmb+laZhM6eP0jGNIWTYbK0lchMdPVKRiKzPxPJUB\/deGTJFlk04XGMDz7lysmT0PKXuP4cyxvUj5eCfTaEik6ZykVcjb0o1vY9k6G8UwTmJKL10vTBjpj9JdizF5yQbWN4NHLs9jNnekmYWe1DXhLCFZ7E\/EswbpmDnheWzj0cwxKseZMo03BTLPoEtXC5CtafXtuyjwPXcAezOycCZ9GxZOmMkc6Lg1UGptjX9Tb5Q0nhKjkW15clkKjp0RsH8KPAWCJnYCeuid5drytjTXJ7q27RRiZNWbSNl31mnbvPUKlt27Yyev22bh4JYVGE95CuGOfH1FPq2bYB1GTEnkNMtAUsIcrNuSwjH3qBxTMqKLP9T0TZeFVUvX4Xi+I8T1GP5YnOzT2U8swe5jGbJO0xaxTpStua9fRKOluDZ3zDIOjc5h59lb5tvGeX\/Cut3pHGfrMHWeIH6acoEYNMZCiMagf0euUWF3wsKMjowbSZKQiMrFMdnUuuFYC3sY88imxTB1mL\/a5uanHvrCa7x1Mg8LOd8zznD+\/oPznhWL6teT65FDfo7d7tgAHrm1vM4NMmnEIwy\/pWwWSlMxbeE6zs90rJ6TxINYDeL\/MMq6dtqkdmUu2UR3uU9t0\/xQ7xyVrrk6DQX6JOInpudOWyBagWBNZoM9giQQ1\/E8eUXQJ8iHk\/c8wiOiMKRnZ0rZFMMvIBBBQWXcNRbI83rBESjlWb5A6p5E\/N7e3lT3T3kA5uGv86HJWC8iVaoLpvRseVkl1RGXClUBZBPn40ZhMXypO6BLZHseO\/ijuLQEbQSLVbB5yI3QmK0GivpJK4euNdEcSyFwDDzb2uqQLiT+D\/jNzOnYk\/QO1i95ButFuN9gTE3sgrXrd2PP8Su4rdAg4QJk4q3X7ZFr1Z2\/Rh95PhaCsX8YiY2LdyH2sV\/bC\/aE9UMct+2bcqNxd49AWYOo2GHQbN4Ey6IhPYk0F69bhDefnY+t77xkrquGAm8L8ZwU8jGQYGFbogYjpmAznp+zWckrLglLZgyU7wLlVRJG5YbGZ6Sv7HNG1\/fHa4um4tn5a\/HOS8+Y0\/NaXNLbSLAhYswBfATizgcGYP3adGxd\/wGGPpCE+ryskSSsQvRiGGoxYu67KPd6GW9tXYvndyuR\/HvHY8miyRJGV4ilLdWxZBHYfwbeneeJBUs24fXnjyremihMX\/oSpAyfJaLlGTgAz\/Icdj7766U5SiGRIxIxoXInNh34AhcNLKsBkhblCoa2jWNFNDacA613sGyLJ6\/JivP3sYvWoWrpi3hn6zt4xjyQokZOx4tzebVTZtMKbWm2T\/oiLopjKXM33rkUghEf3N2gD7qMmoL4XWewefNbeEoZIohLTETeP9cj\/SueXU\/mTRQxjszND+yTiE1vBmPubF4Fe4vjO5LjK2x\/\/VU+0bSm+5lJhj2I8E1vIXP3eixtfyf+EtyesLsqoSJ+wobMwdtJXpj7Oq+TPmMeCFTqMv+V50BZWiEP6rQMuDR3SGw1OYdzMfAeJ\/mL+fbuPMxLWsK5\/7yc+5EDesNAwlM5xqmvvt1LNxL1\/u8cRWnMYHSUhGwEBseFY\/fWXDw4UhwF0Lk8JptYN5Sc6n8dYbxucjMwrU9peXGYvwljmp2fY19cirNz\/8L5\/joOyMWRBEDsdLw0qZfM1G49YH5hDvPMu7XGgaUJTTwjxjyHRdcquQ6sxzPi5JUudupiPGER3lK86n+15FA2N5dEZIFz5HrmQp+Kw6QG64pTv\/pq3JIX4mBiYRfcqX\/OlQ3UugkeI3X+k00vGix29YqGPt7r9\/TFRQoBLlr4GkryjNCU1eK3sdEY2r8viksKcPb8OVRwly+IBanjlxr+PHlQKswJCwVAep79izNtf5oLDg6mpH9tNS58e4m7\/XwqGPJEgH8Ii\/OWfpcvX0aXbh1wW9dQuPNaSFi\/vug+YBCqNV68HWA+9GFNWZKsp0+Ph11opatRjJRx4EpExBXYEGO4kEkd0lc\/CbGReD31XUVy34VUjUUxkFMiaqPTB1J3grNYrG8+z9x1eiI4p1tqZ4ka8TOx7cyLTkfuTnO5SZ0QhJOO6qJddSZDEYqMVCbUovqa20j+p5590lxpJqMBRSR+dJQf0Legbq62wRJPtEXQWKItrpfTsrYIYq6pPhFCtlrCRdInloo5PMUYEqSgGEONg8OI3StexWH9aDw9eZBZeIljecVkzONGfUlqslma3yFzp58UAOSgFSbHG+0rSg7KdrVoHDgtzImnyPtm5jCFUeV80\/EmlAMWc1JKS7yaH5MtXTecwLiFMHU2f5ubn0aOeU5fp2PeWX7NwqiFdW42P5sIlrbo9CGcnzYBjby6Mpdskzbfp7axf5j3RuefY3U0dUT6\/CcIAIH8hVCfUM4jfIUdAC2Rua+vH8\/3r6GUs7uOO\/sKYxl2nziLM1euU99\/Bfx4dVBc7RO7\/zoSALQcRDY+rQXySCCvuISGgIrRKaytItlPPO7Ocjyoce5XA2KY1g+Xc\/JoVKgOnQfGsLyBVCVgpEKhWuRXG3gkIJQNkUBhtqJ+JhIagjgRNXaRznFschPfOiJ\/F0aMkxxyj24hO\/0AUtOy4D9y\/ncmAEQReiLjppcj1jfk5urbsAmC8FE4FA3DGvpom1rkG0aXPloiopCmG+QkZcvaKJByq4HESW0sXqItrkPLkqplbVGI0cZLEYi2OSfGUPOOxLb+PHYlz0exYRYmDuuI3IObsZTnX5re0xs55mgsVxJrzVWLhEvrjVvHejDvm5rDVIgWSIThmF0rfDc1Jm9u3XAC4xbC1Nn8bW5+SkKyEXg4y6+RqFbvFtbZmrD5t+ba4piDK3PJNk1TfWob74d8d5kIsLD\/LU9JCJCHUKfhGZvOF6Vl1bw+9i0+23sENRodz\/dpQdCbUv++ASinxL47D9PdvH1Rwyt81UTYUrugv54CgFoY+V1OgWNTOY0NafIUlcHcvdAuIXx4vBAUREEcsvmDAr1x7vQFfHP8K7mDCG0XiO5tomhBkAaK9P5cC90pIChuBJBUETIFdJJbId9+HD\/Xv9qEzWQFavxjseippoTdfhz1VWuhQsAWAr3Gv4LEbLLDeXxwdLMSEj5gAl54PuGWIEbbsn\/J7+q68Uvu\/VvbdpePA05unicRqxuRvlDqI5Crm9YLVTWe+HDTp\/jyGNUCX7qOvIIqXt2jVkBeWRNng93aBiGAu3lPXh304u5e76tDNbkCZbQLEEB7ARpyEYQ9ACELUEb7Ar482w8mm82TQoEaWgwMDdCjW+fO8KUNAi\/u9KvIZ8rJuUJugwGhHULRtmMITuZepta8SfDv1IWChUJ2QamfAJ3QICgIAu9uv7m1kHQ5d7LoisiGdoFl7XKWakQVAt8zBASb02A+snH9mON7ruTPqjh13fhZdeePqDEucwJEnS27aoW9zmt8ZNOkpqRhw0e7KeRHdf5kxXv7aFFVR2RNaX8vrWIm2N1dHCTQQARvBxTzLqZA+qXU8lJQVg5fnbdk1wuZAGEamBoC4M6dvYkEgI5EhLs7jwoKi2hwxgcBtBToQ+5Cj56RNFVcjjrWvpCyBjXc+vsHt4G0G8Q0FiEHybUg8SFlEH40QBdn1j+ayqgVUSFwUxAQbM6b4qbfVGlqIkpPqOuGOgxuCQRcJwLIjudhPqiHh0i1juf\/Pjj65Qn8+\/BxdOrcHucv5sKXLH9PLx+e8Zeje9euqCi4xmN\/EzSUSPLkDr+CyN0orgPyamB1LY0FkSgo510Wbyr80ZBocOMO3p3s\/xJSE2W0GaCn5kE3Dx4d3ChABfOsZpwgPx\/eHCRRQa6CRlwh5A2Ddu3bwd3Hm0SI2b6BUErEqwLiWKDltwNuCZzVTFUIqBBQIaBCQIXAjw4CrhMBNlUXWv+qTW44RMNA\/gEhuHHxOtqGhHIH7oaT2VcR0b6NlPYPCguHZ1kRaons3bRuvAIoZPUpu0fBwGpxHZBHC+JufRXDvYn8dTxeKKmqI6fASAKBNgD4Xk2zxBXUHFhAK4KFpeUIoYEiwWFwc6uDt78PCqkbN8KP8gCkTuoEcSBoFXIDbJ3CubD1Ud9VCKgQUCGgQkCFgAoBl4kAoXmvjjcEBEL18tThm4yzuHatmFfwfFFAdn2Prt2IhxV5AYGMC4tuoEuPKJRdKkEgd+m6Ot4Z4Y0cLbUCVppqqAGQVv64V6\/llcOi8koSBW4wsjZClqCWGgR9fHQo4w2EIhpkKSbnwN+zBvllJgQUFCPYz4vcAw28qypRRD3kPYNCKAlIoUCmEwcPChGgEBykFejsiYLmur2urppX6orEfSlyHhRlKs2lac1weYzhQMi0Rv7VpYUo0\/jxmmDT3W7Iz0NdQCj8zBrnmiybsCokrHRBoS6r22wyvx9BYKNwErda5PhyoZKmUuSVahAa1DI58hbB3oVqfC9RJFwaEt9Nl12HCq4bvLwIHY\/5qAW8AfHeaPqW9EOjmYgAEwrzCqHl9TA\/74ZrRF11qbxGaBLS6ZTh8bgFc7LJ6qmBKgS+Bwi4rDHQi9r\/3Nw9yV53k7cBig3VVP1LFj0F8fS8ay2U+mh59i\/0+QtlPVVU9FNcXCyb4Mv7\/x3p34FCgsF6H\/hRF4Bg1rsRcXv7+ELnzSMEEgZFPOc30FpgOY8b8rjrv1ZsQD6vDVwrqcSF\/DJcyCtFTnElsvjMpd\/F\/FKqtfREx+7RPHagQIHZCSTq+GcJa\/ZpyMTCh+MwftIkjE94FEeVK\/HNJrv5CCZkUcvdtrPmgiqPYxq1+K0+TiKkNV3RQUxIGI9XD+Q2k6sRe16ahIQp62hRrxlnzMayyQqsHv2bvWKkZlI2GWy4dBApu7ObjHPLAhuFUwW2LRyN0U9uoCmU5l3mhzMwafx7yG8+qk2MFsDeJtUP+2pAyhzCZfTzyBTX7l1y1DewbDLGjR+P8eMTMOeVp3HffdNw3CWdsrSI9yTLm5MidWMIRG43f1wq3xzJcAwTOM8Txo3GuqO2PWVCxpZltPGRgPGPPsp+TEDcw89jd5bQN606FQI\/Lwi4TARknqTSnnwjhfu8cP7ba\/gm86wkBjS84qejhr+i4lJqD6SgHq1tibuUXmTvu3OXryXXQOgB4PE9Jf39EUjBvmBfcgaEsiHeCBD6AjzJHfDh9UF3Sv9TgkCe7ZcYeVuA1wZJE9AgUS1KqS2whO8FlBe4wbCLJRU4n1+MX41+AF7twqhemHwFIbdAJwgAW+f4bRvm+J695yPs51yPjptKm\/dPoUPTm2bH5C3+NmR+iGmL1+CS1ayfeUfkyjbc1eJM2L18Pq0dxmHWmIhmElHb3dwkGgZIxjv7miYYcr\/YCKExeSTth784sn0z+boazEV+ynysPPVDLLiNwIn68XevmC3V\/lKghWO0OUfb9jtyaWJikNm+RHPxLeGuw96S4sfwVCw5Um6necAo1TVk4H0xcMJGYvqsJNwfKmR5XOWY8J5+G3L7eDtBFOds\/rgME10Uls6fKi1ZJq\/aWU\/cFR1dhdnL01BKLYVJ3pzqpQAAHJ5JREFUi9\/Eolnx8C9Np533JBxtljJ2uXQ1ogqBHwUEXEZxq97\/COHh4dy9a6j3v4Ra+XRkjdIGwNVrNPtbScE9I48HrvJ8vxYRERFkoxVIdr831QXXUOOTMBoUSuTvT3XABgr9+VFQ0EhWfk2NVp7lC469sBjoRv+qSt4Q8FCU\/dRyh+\/Og34vcc2QYbWULbhBIUF\/cg+emjODevWHkQtxQ14DFMcAAuE7Pl0nAiiDUCD0pUfij7MnoBfzE0xCS562PSbojHruoPnDthxHuQSR1lm4l9l2pCctFgnSRePVB+9s324mBKwlOktrCbXUr9E4+QexeD+R9bzfSl3l4g6GUmVbFqiNHxfnpJilWEq9948PsRhKspRmfV7PyuZHJMb9Zoy0C28Nsb7Z1omtq4eZnb8ZzjIVdUrow4gf2N\/1MOaLUFltW1sRaMuat8vPXI7ws4wFS42c9YslDA3gxBOs\/GNY+f+SQN1OiqN9gWYnTdFpkAZAXGzP+qytLzZwrve08XMR9vVJfwQvFrW59WRrfX8p7ZJVtOm\/Ot8gCFI0+olpiI8NYh+NwbgnRV+ZG8P04sO2T639RkLp5W14wJxfteP8cRgXFvBYxoLlWz61gegzZCKmTPg\/PJ1mIe5M+Pc\/hO0EP8x7YwFGhIiYvfC2TwkSqeb7q\/NF6C91F8sc1B8VAj95CDS7nllaaNKFIq9cAz+q9IWXBlepBbCSiF2oEa4johZHAW1DaSucQnxlJaVEzGWoCuG5vJcfbb6TzV9dh0BO0EBaBhREw42Scl4rdEM5hQKFJD+lBnk7gMieRwSe3hQK5H0\/Giam1L8njxdok4A19eB1wvIqDUrIQaiq8sAXtE8Q1KkzunbrSO2EpSQoTPKIwVJnZRERqFX8Ne\/OpizEzGRltZ89ejRipi7HrA57MGNZHl5atwC9zJuVHFrP+9OqSrz63hx0w1ks+eNS+MePQV7qSuzn4k8UhvhZczFjLE2uSVeB9JT3sXxlqjSoIcInJM3FxMjTiJ+5RsbYPHscTrK8xfEe+MvEv6DPa+\/SqptQTl\/KtKuZNq0+bdz0WXgyIQZCWiH30Go889oJDHuoM9KSuXuhn19kLJ567mmMiFQqfHzzevpGIu5usfSasG9FEpYdrMD4pFcxsW8g\/QzYtuzPeHcf8NRbSzEiQotf\/SYemJuKtOOTMLmPiNPQKesvBTcFG9jJRi53H+u27AgiegDp6YRrZDzef3sGArJ2441FNPIjYUXvkVPx51kT0dHbgC0Lp2ON8N\/4Ah7+\/G7C+CmcfnU6Pg19Am\/PGGJGwEq8jZiAlQvGwuCknNcme+KN15uGi2OL7OGkhGYkP4Ot2RoMiB8Pr50bXTI3nH9qL\/sqEnd3d4Rb68A+9+g2bM8oFJajHRzZZUEx+A0NMf3rw90wNIzAeUPkO\/oh9A\/Jx5bm4kg7Fw5FNPsp+uZpHOjwIAaUfoqVZuopmnYTnktKgF92CqbTdLHoYr9VUzE57TG89B8FmP1qDl5e\/yJ6uTc3n5S+\/9T\/D3htbBFtedjOnyUYfHoVNhYOxn+\/OdlM8HLE5+5D0oxl6P3sCjw+kBSmgzPTEeaxZULIgHiM7BiFuyUBoEQOaNdanC6HwtVPFQI\/MARcJgJOnL0olQRF3taZxn68oKEBoGoK9OlphcyXLP\/SkkIpmS927iYK8onrf2W0E3CloBC1RYXwc\/NDWz8i89pKqRGwiNcFS4RAIK8IVvNIQJgirhNXEOXWmxsBUTO+ewmzwszfx1eP3IIiXC+uxsU8nspqDbjx6Tb867NdeGTiOMQ\/NFbKF1SUlbKeYiMhdhLKlUFXYRzUdSBZg\/tpFZiGcSaMR99ewbh++BgJGtpAssmkIJt+ueXSWiK0FcjNzcKulSsRHhuPWROCsev9NUhdPhvBPT7FRJpnPbp6Nu0EUE0wF5d590fhWMrr2Lh0NkpfeB3T46K5UGYglGmHdxNmUq\/jHK31RRA+EmEv+x0WppWa0\/bEqZS3aVZ4Hr7MXYRkGgK6fuIIckuzsDE5EyMTp6M7zuCd5F1kXXqh+4653HHlII1lI2YWuktErcWg8Q\/jvdSFWEMioN\/2V6D9v9exlHUIj1+EoSQAhAuMHk5YpGLz\/lMkAgZKP+c\/\/dDBCQEg4l7PVuqWm04kOiAKOV6d4HcpBQkzV7J\/opCY9CjaFR7A62vWYMrhAiSnTEGngfchcn8ysqLvxvihdyOI1Sm4Qtvr507DQCLAglYLzuUSkRRIlrCzckwnP20GLo6tcYSTEh710FK8+dtI9KKp5A3HXCMCTu5JI2XDvtA5ltE6sC\/ISMX69Qqx6lgCIj0xduSvcHT9ehxoEKh4jKchq\/4h1c3HuSkigCTllSyk71+Oo\/69kThrFqq+2ISNu1biWf\/OeH98T8RPGIn1G3ehU784DO3VGXkn\/mUzx5qbTxwP7Pss\/qub\/mvOn70286cDSS9v5K5JxvbMBEw2U+2ZW9Yjg3N43G02WL0R2Ij7+P0TZqC\/TXhdXjoWzk7mohKOHp0bGew28dVXFQI\/JQi4TAQUV1Tx3B3I+\/oUwsOCERkRhjbBZPULhG+sQnl5BY8AiiVb3pPmgnW8EVBAjkC70LbIyqXO\/8I89Iy4B7Vk5ddVGRHK633lRnIJruSTC8Bq8MogKQFyFojfqVeAr9B50lARvb15BVAX3BaHvslGnU8ATETy4vjfN7AtfL21+PDvn+Lgv7\/GlN8\/gn79elMosYSEheAKKHIHrnZISJ8xmDl1K2asqcCY30+ULO7Mr5XU9axOfipAo6VDc8aCQPCLTcLaBWNk2K+jPXH\/EyvJAeEW2XgGqwQSjp6K\/31lotwwjxgUiUqarz19ohjTxw6Ui9jg307BmF7EGpXXzbnyUZSOVSQABAL\/4JWx0ljPiCF3I3h2PNakvo\/jUwZS5kK5vRC\/6EPMMFvA6lqVjac3ZuMaaaUIbQGymVVYVKd6Yz\/akCHcicfjkRdSMfPhyWQ2UI1xVCLeIlFRPyB0nTAwEsg4eAZF9Lcg3\/rK8Zw86yTb5TfAGRNARtNKXgXZ4vPXYc4QsQMzImX2g3xG4pWPV5qNzcSiX2cvTKL52i3HJ+PxMZNw7\/pklPcbh4kJwvoYrSHK3DytdeO3NOlcrvRFw3Jow3HdTpmqUbg4ruXGhnASGQR26WNuO4HpksvG7l2iy+6qh7dtstaAfa\/J72A7u60pt4BHSk27QDQfp2EOzln09vHIbKCLwZsfLIYY0uAYr0p4BKkHvyIh9zgSfg9sIxHQb8xjSGCEzHUiPjl9ykMS3I3OJ44Cpe85HnQRGOc4f6ImImzNC0j+5DCJgBGko7ORKuffdNwTVj+6zSWZH6LCpQfwTWEiBgWJXYjVma7uxR8mL0IuNxVTl75Fy5SN5GFNor6pEPhJQcDlEd01MhKXr16RV\/Zycnneb6rEnXfcjiIq8sm7dh0aEggGrwppAVCoFdb7B8JA3mNOXgEF+Lj77+iHSjcvTuEK8HYftQEC7ag22MAd75XCEtRRwFCc8YprON5eFDbk+b\/WnWaG+QxqG4LzBbwtQGzbvo0vN9+8QUBioqq6Fl4hAXLXf\/JkNpKeWYDESQ\/jNw8\/QM4BlQcxjmAtWM8Tm++basopCEcxBqcsbhno5KfTHZH1SEob3pNozuwMxWAtEHt\/rBVZarth7sfKIm0wr4BVskD7raPhyhnJNp3wyHAbhEJTqIkTsGbuRnydZeBSK+obidg7rbscC3tTLKqmonzk8Xl3j7b8tbqQgTOwKG4nXhACWky\/dKlirtcaw\/rWYJCIWwGznpDn5HHzf21tlzWJ+U2p28i7BAEgHC2wSfBmYd7vBLu2DGW+PPLIFXUAPj+chcf7REIiEUFxuuwcyxEJm4aLY9aNwckxXnPfpuyvyEsCZSo6Nhr1O8GeueYf342958qdHwcE3IFfD\/LD3k++QHkjxwFd7xmFPiFF2N1cHAdOQDYl5pfsvI5gQXdWFKDtqCTMGRveoJ2SaAu7HZ3qh7MOwaGMVm4m5KhATMwJZ2Peklmj88kSwfw0CvvidPV5BcbgsRhg6a6NOJ40ApHHtsr+iJ841GYOmRObH71+8wxiNj6N+eMnY9aq9zC23jS2Af94kQQAR2rSu+9hTL2\/fXr1S4XATxkCDdb3xhpTTmQSFugPf+7wr14rxFVe2dOcOI3OYaEICQmB0VDG3blJ3vP31tMmAAUIi8vKcOlynlzUT18txelrRbgrlJJV3KV7caXwoRBhWJA\/SqhKuLxGnNwL+wIkAGgISMoA8IjAhxE9ePRwMuuMvBIktAIKR7EATnwTiil7cOPaNYS3bU85giqkpGzDhayLeGzyw4iM6kj5A3IezEqKGmtbi\/3l7ltiM5lULGgDetouhsoiJwJN1JDo7OaTqaKUaMpbnHg04cx7YIdeEsYShdOTQKp3jeFMlk9eAhdgxwhG5JdYUufh3BUD+ijnBRbPJp4mlPCcXPSYH9VEt8QpLfLDhMfiEcz1m\/wlePKKqfD36WRPqLQk30bjOja7sYiNwqmxBM79s\/+9lwFx6NvYrlMm+y6wB64c\/hve2aQQTg1qEfYYhg8ahJ3vvIP0BoGKx0OdY0kElDYfx4EIMFWVIPvSZVQIUZUyco94TfhWuKbmU\/PlaTH4kUQsTU\/Gri\/OIP8zIeQXi\/tjrERygzwoayTpFc01Eqk2A8ZwGh+R2aWJm6kSAA2Apnr8XCDg8greIaydlN6vIUJ109TiUm6xgry5K\/elpH5NVQ1vAVTJWwIwlMKDVv1KiKBLjdVC7A95nFu7D3+NjiMGINzDG6YK3vDnvUEfSoEHUxVwNQUFmTGPADxIALiDogBS66Ab5QFyrt3A+ZxChlOQkEKFGsoOaHlu4Mljg3LqFqjirvEKBRX9KXTo6aHH+axcrFm7AaNHDcGge+4mqrr5xYpNErVHUX0W1cj99iL9xNbGxpEgcea0gWEy5v49GageE6GwPOuuYum4ydgVNhXrn1FSeVIhiaPTt+1A6QRgM1mbiWRtKgRDNQ6kbqRvGDqHN0zjmIc2JFxyJTIuFTAooj44a8urWM67kNFx8fDemoqVM19G708Wo7tyulAfT7w0aJmuG1nJm7Bh9m+x5uUt+E3K4w2PC+xycPzogaEPxqO7h7lFFBR85a0d6DKRWzizsyWcqBSSTtnxyeDS8zjGxble8kt6frefxuDUslwNOPh\/lCiJI0u6iYTfCfbMt8\/j67D98SYKYNArLhwHNB\/HvoxuCQuwPcHeTxzX3BLXyHxqUJZ5cNrOH32f0STDkpG2aCbSmCByQjy6NLHSnU17m9yCMMxb9z5G2BJvvEK4aNFCmNr1bFCs6qFC4OcCATdXG+LJrbkvWewa7rY9Kckf7EcEXFGDixTaKiEh4EmlP4FBbRAQGEylQh7wImFQTN0Bwom7\/wKHZhUaseurkyjUeNFYEFEzBQJBxUJ6nSevDnpQ45xCFIgrgWKrX0PFRDw8wInsKyijl4l+WhIKbQID4EUEIogAcTMhvG07KaxYXFqC\/BtFtGRYhos5Rfj7P7Zhw8ZPUVOt7D9lZVr40+muvkxRikVzl2F3+kFsWPYUFu9S2uVSVrrumEBpbaQvpaT8FmScSce6hc+Cx8aI\/UMs2rDuEtGvehMp+87aI9yQAZgSo0HprsV4ktf1jp05hhSWv3Q\/dyexE1yz364LhljCcvMpe2F2xqwtmLacmYTH40Ves3xu8QSGpGPmwi1mBSz8NF2ViDZsUHQjCD4Q\/fvx0IMKHMTJiWuORxlPxHM0sKwJz2NbegaOUVHSlGm8KZB5Bl26CtSprOqlG9\/GsnXbkGvSIaIriYXcjXh59RYcPLgNS36XpOxyyVRqQKC4VpGGsZzAqWEkxafRMi1XA4c2jjRaB\/aN1eyH8beQZxY62fJtWxuLX6Ows43czLslLxFN53T+hGHsVAtBSa7TWCFb0rirNtygbMt9uNuWABDRTXn45LX5+Pu\/rzSeWA1RIfATh4DLREAxlQCdyjzBTX4JOrRriw6hoRTu451\/avTLvpCDb3Mu88ofzV2WU6EQbwVcuHCBXAGhGJhS+vwTFwEFA\/1IVj4OncqmZD3VhvI6oXACofvRVLA0GMQzfHHDQNgXoE4gXC4sw5lLhcwDFBJkdekvTAoLOkGUU81risJKoB9vD7QJCkZoaDsSIiGM5oU8ahZMTf0X1v7vJlmOKz\/ewe3tZAgC+09G0sgoaLK3YsnzC7B2qw8mTIi1iyNMJjs6q58WI+a+i1lxUcjc+hbmPEVb7AeuITZxPp4eEQFtWF\/ERWmo9GQ33nnzc7mvsqblnehF6zCd5WdvfQfPPPUM3tmajShet1rHq3GKbJuPXV2Uetj6haFXLH13fWLW6JaPtS++xTThmPfaExLBB\/b\/PebFhUNz9C2sPJQrszCcOSgRbb87Ojg2rf5bWfQP4nKjm0FRD2JqGxfYfwbenTcB4YajeP35OXhmyVpc402B6UvfpdCViBiIOx8YwHTZ2Lr+A1w2ajF05mLE+mtwdNNbWLDgdRzpORKx4RxZbYLN57wNy+HhQjNwsamUfHWEk2M4v4V8SYi9gKJtrKLze9mWcMpfNBCjNEdrPdjblvtDv+t9hNxNm3q10cq3fa2kXwjVA5u9rWNceOjt+so+TElg62ebv7P5I1J0GzVcSRg9viFyV0Jc+K3AtwaqQDe0BuniQnFqFBUCPwAENJT2Ffi1WTe8ZwQKCgrkZA0ODqZGQG9cuXqNiJwa\/IiohfPlnf5Qyg1U8b5+LnfkVPUvuQB1NDgkVAl7chEVRoQEI\/13Q3qhnSc1AQiEL68T1tB+AA0Jk0NQyfS1FC4spwKdry7m4RSPHrTkLgiBQx8SACGhweRAXIYvjxFEee2IDGoo0HftylVeMvCAPzkFISHBUkahsLAA3r46fJJ+VtbxZn9MBgOKaD9dHxhImYWby8VkKGIe3L3QlrDeshqaszLSkJKWRwJkbjh1Iq1Yi4QJ1xbbb8\/dhvsSl1JZUDLmjmiKUW0p2oRt8+7nuSqZqjvmNMraPr5uGp7mzanlW99tVFmQJceGTyPtM5B6YJv11Mvu2GwT4WGir84G2IYiRdd8COPfEtdiODnUwkQ112zSd6ufa7B3KPkX\/+k4fyrObMA46hCIm59svpnSOIiOr0jE0zvvw0cpjQvHNp5aDVEh8NOGgMucgIqKCu6yQ6WQXgkt+mmIqANoTtiTSLldW3EE4C6V+XhSyKZNmzaIju6FUCm5rwBISuh7ULEQlQtVkaVfSdJDyyMDd4qyi7TKH5UEkRCo5Y5fyP8VUZQ8r6hUaosTqogFF6CaNw5EXYSqYhNVBRfcKMSNGzcQ5B+AsLAwcgs0KMi\/gUsUYLrMowofX3\/46IO+cy9pKbwWEnLzBICogJbIX+ThSACIMNG+xggAS9pAEiAtJgBEYmqhmxerwa7FKa7pss\/dSwIAGDn\/kUYJAJFtsFSgkoWPPtyGrKKW7pZolIUCpcIwiyMBIPLWEh62BIDwEwTYd0OwIpcmXEvh5JiVlmPkuxIoLsLesehf+rdl\/pjyj2PD6hWYN3cNQRKDsYOaInqL5HHU26nkfoU2zuH5pcNWbf\/PGwIucwJ+3mD4BbSu6Cgmj5+HDk+vxeIxEU002Igt1F74lnEKUt5R9Bo0GtlI7W6PzsRuISLx0GJsn9G\/0ag\/mQCX4XQrWtQC2N+K4n8GeRqOr0ZCknL8N37hh9QQKM+YnLeMR1KjE+YxzA9PvrmGOgsaO8Zxnlz1VSHwc4CASgT8HHrRxTaIIwUjd6vNcRME213HXbezHXrDonj3v4g88Js5pmiY2Y\/Cx1U43YrKtgz2t6IGP\/08jRznJtoFcMZxs2+deeyK4znXBrt9cvVLhcDPAAIqEfAz6ES1CSoEVAioEFAhoELgZiDgskzAzWSuplEhoEJAhYAKARUCKgR+vBBQiYAfb9+oNVMhoEJAhYAKARUCtxQCKhFwS8GrZq5CQIWACgEVAioEfrwQUImAH2\/fqDVTIaBCQIWACgEVArcUAioRcEvBq2auQkCFgAoBFQIqBH68EPj\/7Z3vS1tXHMYfbLIkpIbatDGWDIOdOLI1rM6w1IndZlAMBMdGnSOssL3oHyVshb2ZbKYO3FqUOZ3E1hKZENbQH8TFzi3paoimWGOTO\/a9+aHuNhZaGEXuc154ved7c849n3PhPPfcc+9DEXBA36QXv8M3v6zWiRYQ\/WoU0bR8+o+JBEiABEiABA4xAb4dq+m8\/NotxOKJsmthY4cmWN0V2yNAUb0RmUiABEiABEjg8BKgCND2nfgYmI674d7M4YE2Vt0XGwMkZsdxf\/uRmCIZ0NE7hPOv2yWax6\/TU1hKie2xJKfnfQz2tAPpGMaiCi5c8JcNVNKLE2Jd6kPIlcb0Hfn87tYyEusdCH9xHqpVezkV0piZvIZkrvI5XndXEP2d8qU\/ZQOLP04inhE7JkMTnGJB6DgXgt9lxGpsRlwaU2VnPYvTi+CgH3Y5VyYSIAESIAESqEeAjwM0VGytXvT4fTjzqgVVk0PNEbKrSifDKQyEL+LDXhfuzN+EmJHi3vS4CAATAsNhjIT82EzM4lo8K+ZGj7Gd29kt58lODo+21PmEHWSSy\/jdfBbBoa49AaCW9fMkkqYuXLx0CSMBD1JLs1gV276VuSuIrzcjFP4cw++1ICPujjsiXPL3ZjAlAuDMwMcIjwRxajOOyA9xcW9kIgESIAESIIH6BCgC6nMRJ8QDApKtyE346e534BB3Qke7BxZksCmud3+lSnAH+tB2zApbixcBT6MM8n8+9eRArJaqhauVuPFRvw8u++4cQDnW9sEwgm9acDcWxdzNu5JnELfFAv5IlsRKuBctViOOtZ1Dl3gjiREjcvfXpKgAfK12WG0u9IpwwMMUNp7RjupJcEMCJEACJKBTAhQBL9zx1dH1H3VbG9RRtjuuFXnEJFMGJbFFVjP2PXhRSnJLryZxYjScdO56rFcyywHcmv4WV+d+w2NTMzq735LM+i59UsRuMogbYy01HFErVPCklsEtCZAACZAACWgIUARogLz4rhEnxLU0qT4aKCoo5lewsJxDk9sFo6oTSlvIy9hf3LiN63I3b6yKAqPtKPaG7lrtBTwUd1NXdx\/8XllT8PdaJaCIbbMsC6jVsbFyA8vi4KcO\/kedJ1BKXsftrLy1IOsGYgtxoKkVjqcLr1XCLQmQAAmQgM4J7Ls\/1TkJTfOfNXaqsX034LJnwCsyELcNhpAZn0Tksqz2k2RxnsWQzwGzvElw2hLB95dHy8da5K\/ZVKnBUHe63orXvCcxNT+G0XkpvVFW\/8kSxIWlNXwWHMb6xJVKHbIwUI2U5I7f\/kY\/3s1MYD7yNeQn8iMXBj7prCMw1CATCZAACZAACQB0EfwfroJisSDDshFm43+lRFHWDcBohib7wDNQikUU0VApR\/2\/oQGpGzPINr8Nf7u8jaBkcfXLCEwDYfS1VtcUyHEFERZm894jigMrYIAESIAESEDXBCgCDln351eiGPspIdMMMp+wLSsUGz0Y+bQHtkPWDp4uCZAACZDAyydAEfDy++D5z6C4hWwuL4v+rHA4bJzyf36C\/AUJkAAJkIAQoAjgZUACJEACJEACOiXAtwN02vFsNgmQAAmQAAlQBPAaIAESIAESIAGdEqAI0GnHs9kkQAIkQAIkQBHAa4AESIAESIAEdEqAIkCnHc9mkwAJkAAJkABFAK8BEiABEiABEtApAYoAnXY8m00CJEACJEAC\/wLM\/+PIum8y5QAAAABJRU5ErkJggg==\" alt=\"\" \/><br \/>\nFor background you need to know that JavaScript Number values have distinct representations for <code>+0<\/code> and <code>-0<\/code>.\u00a0 This is a characteristic of IEEE floating point numbers upon which the specification for JavaScript numbers is  based.\u00a0 However, in most situations, JavaScript treats <code>+0<\/code> and <code>-0<\/code> as equivalent values. Both <code>-0==+0<\/code> and<code>-0===+0<\/code> evaluate to <code> true<\/code>. So how, do you distinguish them if you really need to?\u00a0 You have to find something in the language where they are treated differently.<\/p>\n<p>Dave&#8217;s solution uses one such situation.\u00a0 In JavaScript, division by zero of a non-zero finite number produces either <code>+Infinity<\/code> or <code>-Infinity<\/code>, depending upon the sign of the zero divisor. <code>+Infinity<\/code> and <code>-Infinity<\/code> can be distinguished using the <code>==<\/code> or <code>===<\/code> operators so that gives us a test for for <code>-0<\/code>.<\/p>\n<p><strong>Update: <\/strong>As Jeff Walden points out in a <a title=\"http:\/\/www.wirfs-brock.com\/allen\/posts\/128#comment-112\" href=\"http:\/\/www.wirfs-brock.com\/allen\/posts\/128#comment-112\" target=\"_self\">comment<\/a>, Dave&#8217;s solution isn&#8217;t adequate because <code>-0<\/code> isn&#8217;t the only divisor of <code>1<\/code> that produces <code>-Infinity<\/code> as its result. That problem can be solved changing the body of his function to:<\/p>\n<p style=\"padding-left: 30px;\"><code>return x===0 &amp;&amp; (1\/x)===-Infinity;<\/code><\/p>\n<p>Are there any other ways to test for <code>-0<\/code>. As far as I know, until recently there wasn&#8217;t. However, <a title=\"http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-262.htm\" href=\"http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-262.htm\" target=\"_blank\">ECMAScript 5<\/a> added a new way to make this test.  Here is what I came up with as a solution:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfunction isNegative0(x) {\r\n   if (x!==0) return false;\r\n   var obj=Object.freeze({z:-0});\r\n   try {\r\n      Object.defineProperty(obj,'z',{value:x});\r\n   } catch (e) {return false};\r\n   return true;\r\n}\r\n<\/pre>\n<p>If you are a <a title=\"http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-262.htm\" href=\"http:\/\/www.ecma-international.org\/publications\/standards\/Ecma-262.htm\" target=\"_blank\">specification<\/a> junkie you may want to stop and take a few minutes to see if you can figure out how this works.  For the rest of you (that care) here is the explanation:<\/p>\n<p>Line 2 is taking care of all the values that aren&#8217;t either <code>-0<\/code> or <code>+0<\/code>, for any other values <code>!==<\/code> will produce <code>false<\/code> and return.  The rest of the function is about distinguishing the zero values.  Line 3 creates an object with a single property whose value is <code>-0<\/code>.  The object is frozen, which means its properties cannot be modified. Line 5 tries to use <code>Object.defineProperty<\/code> to set the value of the frozen object&#8217;s sole property to the  value of <code>x<\/code>.  Because the object is frozen you would expect this to fail (and throw an error) as it is an attempt to change the value of a frozen property.  However, the specification of <code>defineProperty<\/code> says it only throws if the value (or other property attributes) that is being set is actually different from the current value. And &#8220;different&#8221; is defined in a manner that distinguishes <code>-0<\/code> and <code>+0<\/code>. So if <code>x<\/code> is <code>+0<\/code> this will be an attempt to change the value of the property and an exception is thrown. If <code>x<\/code> is <code>-0<\/code> it isn&#8217;t a change and no exception is thrown.  Line 6 catches the exception and returns <code>false<\/code> indicating that the argument isn&#8217;t <code>-0<\/code>. If <code>defineProperty<\/code> didn&#8217;t throw we we fall through to line 7 and return <code>true<\/code> indicating that the argument is <code>-0<\/code>.  For the spec junkies, the key places that make this happen are [[DefineOwnProperty]] (section 8.12.9) and the SameValue algorithm  (9.12).<\/p>\n<p>I don&#8217;t think this satisfies Dave&#8217;s request for a more straight forward test, but it does illustrate a subtle feature of the ES5 specification.\u00a0 But does it actually work?\u00a0 This is\u00a0 one of those obscure specification requirements that you could easily imagine being overlooked by a busy JavaScript engine developer.\u00a0 I tested the above <code>isNegative0<\/code> on pre-production versions of both FireFox 4 and Internet Explorer\u00a0 9 and I was pleasantly surprised to find that they both worked for this test exactly as specified in\u00a0 ES5. So congratulations to both the FF and IE developers for paying attention to the details.<\/p>\n<p>(And thanks to Peter van der Zee, @kuvos, for suggesting this is worth capturing in a blog post)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Update January 2018: In modern JavaScript engines that implement the ECMAScript 2015 specification the Object.is built-in function can be used to test for -0. A few minutes ago I saw a tweet go by from my colleague, Dave Herman (@littlecalculist): For background you need to know that JavaScript Number values have distinct representations for +0 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6,8],"tags":[15,35,36,60,34,19],"_links":{"self":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts\/128"}],"collection":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/comments?post=128"}],"version-history":[{"count":25,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts\/128\/revisions"}],"predecessor-version":[{"id":810,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/posts\/128\/revisions\/810"}],"wp:attachment":[{"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/media?parent=128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/categories?post=128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wirfs-brock.com\/allen\/wp-json\/wp\/v2\/tags?post=128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}