Skip to content

Instantly share code, notes, and snippets.

@zdying
Last active December 10, 2016 14:29
Show Gist options
  • Save zdying/a4e61748e00d62e72f5ddf8aa4b72820 to your computer and use it in GitHub Desktop.
Save zdying/a4e61748e00d62e72f5ddf8aa4b72820 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html>
<head>
<title>Canvas Bezier Curve</title>
</head>
<body>
<p>双击:添加新的点</p>
<img id="cursor" style="display:none" src="data:image/x-icon;base64,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" alt="">
<img id="bg_img" width="430" height="630" style="display:none;" src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAMAAg0DASIAAhEBAxEB/8QAHAAAAgMBAQEBAAAAAAAAAAAAAgMAAQQFBgcI/8QAQBAAAgECBAQFAwMCAwcEAgMAAAECAxEEEiExBSJBURMyUmFxBkKBFCMzYpFTobEHJENyksHRFTRjooLhJSbw/8QAGQEBAQEBAQEAAAAAAAAAAAAAAAECAwQF/8QAJhEBAQEBAAICAgIDAQADAAAAAAERAiExAxJBUQQyEyJhQnHR8P/aAAwDAQACEQMRAD8A95Jcv5DJPb8g3R5X00IS6KbVgJR2G2F0LdzRZeoJSoLWfyNsDTSzT+R2nqCWqSDpLWfySOXuMpuN569SoJRDUSKUO8Qs0PVEus2lU1+9VHw2FU5wVao88dQ1Vp5fPEagxc/5Y/DL8Wn64gupDxoPPGw0G0DYvxIeuJFOHeJRUY6AyXYNSi1o4hcveIGZ0ysg5uPcq8fURvWepHWHyFkDllbWvUvl9USAMhLB3h6okvD1RAXkKceUZmh64kcoW88QKUeUJILND1xKUoeuJUHEYAnHuGnHuVkL/kXwWyrrxE79Arx7gLaBsNvH1A6dwoLAW1Y3QpJZmDSnEWo6GmyASQNIaAsaWkDkKaCMdBsURK4xJdwiJDUkSKQxWLGaCUeRh5dC5WyMLTIVlEgrEVi7oMqsXbnRd16iaZ0VF2Kyh3Xcl13CFuIuVM0Xj6hcnHuBgrU/3KfyE4jKyi5w1I3HuFKcQXAc3HuA3HuEJ8MqEOZ/Jo5e4EcuuvUCJFkcorqLdWC++IBTM1XzL4CdeHriZ6tenmXPHYsMIlFF5F2DktC0jzvboVH2CyqwaQVgmgoQVtjQqa7A0VoPSGM2kQgrz06jVBdiQWs/kYkE0KprsFThG706hEh5n8hBKMe0SOMe0QiWKmkRjDxqnLEYoQ9EQYr96oNQNVkh6IgOnHxoaRtYYC/5ofDBtXkj6IlqnHtEYkWolw0uMI22D8NemIUVoXYptJdKPaJXhLtEflKsDWaVJXWnUvwo+mI6S1h8hWGLpPhx9MSeDD0RHWJYGs/gw9ESnRhZ8kTTYGUeUGleFH0RKVKPoiPyksDS1Tj2iWox7B2JYqWl5VnWgWWPpJb9xfAdgaDJHsVlXpDsSxAGVekpRWZ6DLFJc7AB012AyL0j7EaAz+GuxPDXYfYFoppSprsMUV6S0hiRUqlFBKK7BWLsVkElyMNLTYklysJLQIqyJZB2JYIGy7EsroKxX3IIuy7F2XYhCiNLsA4rsGymBnqU1nhykdOPYOfniQBTpx7FZI9hjAYQGSPYXFR59OoxsUnzT+QLko9hFRR7RGyYmYCZRh6ImarGlm1hHY0VGZKzef8AAGhrlLsR03bzyLVNd5M4vVq0gkCoh2AujsaEzPS2HRCKp+aXyMQun5pfIyxEFoVTtefyWkyQXNP5KhhC0gkiskQX71T8DbFU1+9U/A2wwKK/40BuUrL+9D4KCSQasEoqxaSKgYpdS+X1FwScdUHlXpNBV494lXh3iMcI9oleHH0RC6TJwzLniXmp+uIyVOF4aRL8KHoiRrYUnB7TiXp6g/CitlEvKvSE8A0Bdso2y7FNKwQGnqKvHuMyL0kyR9IwLzQ9USZoeqIzwo9ok8KPaIxSbxzrUvTuMyRzrToX4S7DDStO5NO43w0uhMi7DAq8e4MWs89R+SPpiDGks89CLobx7kvHuMyR9JMkfTEjOwq8e5Tce8Rvhx7FOnHLtEoWsttwlbuWoxy7BqK9IRSa7lpr1EsvSWkgI7ZSXVtySSyMtRTWxRXiQ9cSeNS/xIl5IP7Il+DT/wAOJE8B8ak/+JEmenmXPELwaX+HEnhQzeSJTwvNF/fEl13L8OPpKyx7FRG13AbXcNpdgGl2KhUms61I5LuSSWdFOK9IFOpHvEW5R7hunHsLdOPYAHJdxWZZnqNdJCvBjdgC5LuLco9w3h4gPDRAXKUe8TFWnHPvHY2PDQ/qMlfDRjPTNqgmt8o6F2GSXKSxyx6S7FpB2LsAMFyjUgIrTzBJPuRFwXNP5G5BVNO89eo5RfciVEiQXM/kvK/WVFPXXqVk1IJIFRfcJRfrKiqa/cqDMounF+JPnG+HL1yNCspMv70Phl+FL/EkV4cvEh+5L5LgbYliZJf4kiZZeuRUxILT8lgQi7PnluFlfqkFWSxWV+svK/WBUlzIuxTi8y1L8N+sCWKaL8N+uQDpy9cgI0U9iOnL/EkDKnKz/ckFMLSFqnLL/JK3U5WP4pKmnSw879HMJa34ziGHwa/dnzdkedxn1Xa/hKyOLj8Xadqs5TqPanDV/k8zxHiE0nFZVL0Q1YTa9NifrCcJXlO35MMvraObzzv7M8JiFWbcqztfoYKlZU9pFZ19Twf17OnPSpOcesZanqeF/WPCuJ8rreDV9Mtmfn3/ANQcHeO663Gx4pLxFNPLNb2B9n6GqfU/C6dTIq8XI2YTiGFxLbpVo3eyZ+eKfF9dZ2fc7PDePVqU0419CLO33spni+A/U8q9OEZ1My681z2FKrGrTUosjQimSz7kt7kEWxZSTtuWk+4BWLsS3uXb3LoCp/Gw1tECqv23qGk7LURKhZVvcuz9RUQnUln6iWeZagQjJlfcpp9wiimVZ9yNPuAufngRoGcX4lPUPK+5VwDQLQTpv1lZX65AC4iUuaY5xfrF5XmepALiC0M8N+sXKm/XIqEyRgxe8fz/AKm6pSl/iSMtWhO6/clt2RdRtlsSwTIcnoDYIhdiUBHYNAU1oHYgkPM/kdEVDzP5GoMjRILV/JESkuZ/IQ1INIFBpm0DTX7lQakBT/kqfgcrFShsC1+9D4Y0pr96HwyiWJYOxLBCqS5fyw7EgtPyFYLvkNiWLIALXMgin5oFgVYpoMlgFWBkuRjspz+J4pUKfhRlzz39kMNZ8biXUboUnyLSTXVnB4hUnZ0qDjFrzVHtFG51LRyR8z3fZHMxajN2lpTT0j6mVlwatFzjNUM0IPzVX56n/hHExdKnQi3ThH/mfc9Pi34k1Rj+bdEeY4hfEVnRpeVaSl0SCa8vxCvJzajmnPucedKpOXO7v0roekxNCFOnNrSC3m92cGvVWqjogntklFrrFCXJp+YGvWSlp5v9BEZ6tvU0htOss/NqjtcNo0Ks1krShLs9jjUnByTauuqOrhKazKVHW3QD1+Chi8A4VVmcPUtz6H9O8eVqcazjllpm9z5xw7iEoUMnmj91OZ1+GY2nCs3B3pT3T3izLXNfY/jboU0crgWO/UYdUJSvKC5X3R2GjDoBLQOxEtAgKsWkQIIXV/jkEvKiqv8AGw1sgIQhZpFFdUER+ZBEKZZQA2BCKYCav81IIGqv3qYQWqKZZChbBS1YxoX1YRTQuSGXAYCZIx1vMvg2SM1W118FiNDIgbhnJ6ELsRF2JQuN7bB69i6a0DsRC4XzT06jVm7AUvNP5HoqKWbNsSGbXTqGi6fX5KiJy7BxzdiINFQFPN4lS0Rqc/R/9hdJ/uVB9zSVM0/R/mA5T8SHJr8jAG/3ofDANSn6P8y80/R/9iBoIXTcsu3UK8vSSn5fyEBXN2B5vSGQBbvdaF83pLfmiEUVzdgbz9H+YZAFVarpU3OStGOr5jylfFvEYipPq3odP6jx3gYdUIvml0PK18R+nUKKf7s9/hhHThKLhUqt/tw3l3ZyMdxCD/eSlry04BcSxKpYejgYO2bmqP2MGApS4jXr4lQvToLLTX9QAYqs8HgW27167yxOJVlThRnedqUNak+7JxzFSxHGFg6M+TDwtKS6N7nD4lXliJrC0v4o+Zd2GHO4njp42pakstFeSPt3ZwsXXVPlW52ce44en4UfM937/wD6POyTq1nLdIsCZXer3ZdK052/swqztTm+2iF4a+j9yhsWvFyTjr3R1cCqlOorO66HLxFFupPLutTbwzEtTUZbrYD18cP+rwLrUuWtBa+5k4fj50sRzaNO04nSo1VDAeNR86V5R7o42NcKk4Yqhs/OjI+ofTXFfCr03e8dP7M+jqWeCkvLJXR8J+nsc7wi38H2L6fxn6nh3hyd509PwSxvmuqr5di9fSEtkWGwa+kmvpDKDIKl8j0DV8q0Kn5GEtkTFDr6Sa+kIgRLvsU27rlCKfmRUDr6Sc3YIgC7y7EvLsGQDNVzeJT0CebsXUX7kA7FXSry7FXl2DaKAU3LsKvK70NEhHVhQty7ANz7DGLbCFSc/R/mZ6rndcvTuamIqbr4CYK4xC7BKxzeimINAIO5lEhsEgIPlDTCKpLmn8jUKg9Z/I5NGpEWiU95fIQFN+f5Khlwog3JcIum/wB6p+B1zPCX7lT8DblQaKf80PhkzFN/vQ+GUOLFOoi1PpaRNTDI7BCoy5S/E9pF1cMIL8X2kWqntIaYt+aIQDlqtAr/ANIRdwZSUIuT2RV/Y5/GsX+mwE31logV5XiWL/U8RnVlLki7RPMrHKvxirVveMZ2X4G8Q4h4c6mulODlL5aPM8PxLyOW7leT/JWXX4hj7+LVvzS5UaOE42tw/CVFJ5aaWZrq5HncTWc69OG+qNvEMTUr1Fh07zUVF26yegTWCi3ToYjGT81Wby373MkV4VF15eaV8v8A5NeLtXxFLA0pft01aT+NzJjW8RU8Kl5FyoDh4xOpCdV7PlgY5UVSo+9rs7XgRxPEoYaH8dJWb90YOJx5eX73aK9jSODiXahHu3c04ag/2o9bXYqrT8fGwox1UbR/J28Fh1OtVn9sWoR+QM9GnGpxBQfllyv5H1+EzpV1KCtZ3/IdHCP9dVw89Ki1iz0dGUK+Bzz0qWcZL+pAcb9ZJQhkdmtJLtL/APZnliFTrZ1/HPSUezF106GMc3/HUeSa7PuDiFun8S/8kquxwyq6dZ5Xpo0fVfo/ia/V04uXLUWVnxfhmIcKmV9ND3H0/jnSxFOz7NfgivuCXKizFh+IRr4elVVGq1KCd1HQcsSn/wAGr/0mXTKeQWq1/sn/AGLU/aRUxcvJIJeUpu8XpIma0dpAwViWA8X+iRbrf/HP/pBgrFPzIDx1/hz/ALAuvzL9uf8AYJhxQvxv/jn/ANJPG/okDBkBz+0ivE/pkVPKp+eAQLlqtJF512kDFtCmg/EXaQDmvTIKGWwjqxkq0e0hPjRzPSQXKjQDQTrR/qAdaJF8o7Ger5l8DXWh3M9SvC6+CplN8NDFFF20Ic3VaDKQRBVNaBWKhsw/vCAguafyOSQqn5p/I1FKMGH3/ISBj93yVkRMxTBAqL/cmxqYmP8AJUGoA0wZSfjQIRv9yHwEHcJMFBaASL0Dzi47BAGpFpoWEipRPdBir6oO5TEffoeR+rsb4dOnd2WrSPUYmqqVBybst38HzH6vxzr4pJvZXEZryPEsW3gsVK/NP/yVwJYV4HEzxFS0lC0I9Wzl8Qr3p1YX2X/cycPqt17t8sE5MrLq0Xn4jnflg/8AQ1YOvHxK+MqvbSN+76nMjV8LCOtJ6NNmaviJQwtOh90+af5A34dyVGrWvz1p5YP2vuFOUcNQqV/8OLUfl9QJVY0KFPNtGFrCMRnxMKNBbzeeXwixDuC4W3DsRiZeepyxfycfilSCo1cSvJT5YL3Wx1uIYh4PhUKEPNLSKXdnJxGCqYypDBx/iwlPxsTLpd9C2jHwXAPJDETWydSX4OvRoSp4WjBLmlPO/wAsdSo/7rSw8FzV2o/EVv8A5HofprALG8cpTlC9KEsv4Whm1rmbcc/6p4bLh+KwfEqUP25wipP3SMGJbpV6dWL/AGcQl8KSPqnHOCriHA8ZwiUI+PRvUoPvF/8A+sfJ6SlPB1eH1tKkG0r9GjPF2N/Lzl2MuMjGpni/vX+Zz1Wc6cM3njySNblKpRnGWlWnpJe6OXOeSs30nv8AKNxzPg3TxCZ6vhdfJXpP3/1PJNZ4Qkd3AVWoU32av+Bo/QP0tiPH4HTjfWm3H8HaueQ+hcRnp1qN/NGM0euZnG4shVyXAk/Iy1sVJvIwl5QuiRZRYZUC/NEMB+aIQQIQIFMliyFCpLmgHYkvPAsKECQyxTQUiUVl2EKKu9DUxTWrIsKcV2FSprsPYDQVmlCNtjLUhHNt0NriKktQpjehRL6Fow2tXCREgjIXDroMV+wMFp+RqLEpdNu89Oo1OXoF0t5/JoSKVV5egXFyzO0Oo4GC8/yVkPP6Cub0jbEsBmi5eJU0Gpz7Egv3qn4GWsAKc/QU82eGmoxIj/kiBLz9BLz9AZAAi5W2GJy7FRTCQRNfSEr9gdQixKF30CvLsD1QZRw/qLEyp06VBaOo9fg+Y/UOIU8ZWd9I6I95xXELE4/FV3rTw6cI9rnyvitdzVWXWU2a5c77eYr13OpiF3/8jcErYWrLrK0V+TFS/crVu9tP7m6DyUKdJbuaCG4qSz0sP9rfN8IRTlnrzrz8q1t7IPJLEY+pbosifRXM+OpVsTjXgeG89OGk6i1uyNyNtOrLF3nL+PZLu2b6S8KhUxMvPNqnTXwcV4DjeGnCk3G1uWGXqw1X4nOpClXpxao6cu12NX6U/HYiLxSn5vCtCnHvI7mK4a+CfTM1Vd8VjKsJVpe73Qzgn0z+p4nw7xlK9WXiSi+kUa/9olaM+KcN4bSdnOtLP3UdNTFu3I3OPrzeq4GDk7VcU+i8Givd9T6TwPh9Dg3C8JWxFSEak5qU7tK10eap8Boz4hRjhKmfCZrUpvrZJyZ0eI8GWN5KtSrNLypSfQnfU9N/D8d/s9TxHj3Ck41YY2h49JvJqtV2PmX1RHC/+qQ4ngpxdCs1niukj01L6HwigpuEVfW05amLin05RpYStCjqpR1j7ozzZK6d/F11Hh+IUXTrrEQ2ek/dHExdN552+Uetjh3Xwc6M9KsVde8Tz2Jw7pyV9mdnj6mMeGqZ6NuqZ28H/H/mefw/JXnE9FgleivYtR9b+gq/+8YZLedGSf4sfQuY+WfQ1bw+JYNfK/ufVmiNQvm7Bal2LsRQSTyMJXsiT8jDWyCh5guYsgZVqC07oMj86CKtL+kq0v6QyABaX9INpf0jbEsE0iSlnh5QrT/pLkueAditF2l/SU79RlgGmQKaYtxY+zB6sNM7ixclL+k0SQDQXWWSn/SJmql/tNkomaquZfAWAvoGhV+UZFmHQ1FlIvoTGVU/KGhcZKweZAqqW8/k0Iy0pJSnr1HqrDuVLDQaX3fJXjQ7gUqsFnu92VMaAQfFh6i/Fh6ggaf81X8DdRFKcfHq69hnix7hTAf+IieLDuDnjnQTDkFoL8SPcvxY9yi4rlDsLjONtw88e4xKKxLIHxIhKUSoqXnQvEz8LCVqvpg2g5SjnRj4tVUOF1vfT+4HkcZeh9OVasvPVqr/ACZ8zxlWjTxUFiHlptyzPtc+ofVUlS4HhIr7qr/7Hxn6iqvxnBdDUYpEI4afGMuFnKdF3eZ6bIXg28RjKMV1nKX9hXC/2/Hrv/hUv9WaeAx56tfdU6crfLaFOfasXW/TYSrCL/cqzak+yOnwXi3DuB4JQhDxMS9ZSUbpXMdHhU+J4yphlupZpfk9zwn6TqcD8WjPAwr0a0fPNZnTfcxbPVev4+bmx4vF/V9WeLnVdGWi5E6dtDsfSGO4bxDEZKrjGvuoz0u2YaH0NxniH1HTrYuv+oi23ec8qyp6K3Q95P6V4fgOFZKWGviqc3VlisuXK+y9ug6nOHxXv7f7Q/B4hYTiGIxklmcV4VGPdnlaHCK/1H9fuVXNJRUnKa2ij13C+DYrEQp18Ry1KmlKHSKfX8nZ4FwynguLcRyLSEYxT66HOeNa+TLYx4zD0qHEqVChCMaWHoqMUvc5vFuIS4Rh/GhTlUrzuqdKMbyZ3qsL8UqtrdIKhwqph+Ky4leFWUklGM/tS7GOfN8u/rl8e499U8ew08PTxShhp4lNwpO0p5ffsY8NxL6lhnrQozxFKEM849LHuOM/7M8JjeNVuI0HKnOvLxKkJc6ze3Y69L6cxNPCToxqQiqiSqS6ySO+8SOHPPyW+b4eA4TiocYoTpVVLD4qDcqaZz8ZBzouElatTk1KPdHtsVwWHDMbRrKEWvLJnkuNRS4hiYemV0/kc3b4Y+bjI8nOPh4y/SWj+T0XC1np2OHiYNYhdU2dzgl72fezN15Y959JSyY/Dd41LH2PezPhvBcR+k4vhpdHNJn26FROnB+yI1DLEsDmX9RakiKqa5GGtkBJrIy01YIIsrMiZl/UBZT3RMy/qBcldBBlg5l6ZEzL+oAiA5l/UTxF2kUDU81P5DE1ai8SkrS3GeIu0v7EVZViZ12kDmXaQEsAlzTCcl2kLcuZhVNC2G5e0hcpe0goZmWrbMvgdKa7SM86qzeSX/SGpCL8o2LM/QfFmHSnJlgosIGOwxC47DFoANLefyPVhFLep8jUwlNSXYqlbm+S0wKf3/JWcNsgrIFBBCaX89X8DtBFP+er+BpYorIqyzosr70VDLILQEgBRtlLsgY7BXAshRAmI/PAwcdV+G271I3N1+dGXisHUwE12aYS+njvr+TocE4f7Nv/ACPjnF/3K837f6n1/wD2kytwPB/8rf8AkfH8Q1UhUk98lyxilfp54TgnEnLzci/vZmj6d5OFVG95yBxFOS+iK1dyu6leMU/hAcMn4dBUuzX9y0nt6XgP7WNq4h/dWgr+yufa6NKNelbul/ofGsHQtwrGSXmp5Kn+p9c4FiVieH4erfWVNXOHfl7ednJGD4fFccxSW1Kkor8u5MXhf/UMfDBr+Cjadd930j/3OhgbrGcTrNf8RW+EkPw1BU6DlbnqPNJ/JM8uc7vpWGw0fEdS22kfYThaKhiMfK3mnodKmrJJCUvDr14v70pI1PTHXV1wq1FOvm6o20JXhlfQTiuSo2ShO8jjPFe6+Y0ukuwqdJKJpWsRVXSJWI8zxuhGpQndbao+ZY+g6v8A6lXvF+HNR9z6rxX+Ob6HxytXbxXEra05Sf8Akdfi9sfPP9XIq0rwpy9zscCpZ1WT76GOpH9mn+DpcDWSjVfeodnijowvOsltLR/lH2/6fxv6/gmFrPzqGWXyj4jSa/XQXdn1L6MxDhCph3tvYivXFoliEEkuRkXlJLyMsohCFhFEfnRZT3QFkIQCEIQBNb+aj8jRVX+Wl8jR+VQoIFoiKE/exzE/eyVqKYExrQDRWmaSM875mbZRMtWKzfgLGBvQZFoTpYdGxh2Nixl2+gtMNBhKfkLbfYqn5CwApN5qmnUari6Xmn8jkRBRbLp/f8lRLo/f8mkNQQJCoVSX79X8DbC6X89X8DgBKbedaFlNc6KDzPsUpPsWEgIny7Eu+xIeUsArvsS77EIEA2860JXTnQmrF/eg917BK+df7SZf/wBfV1rCyX5PkGrw9V9qdv8AM+qf7Sq6/SVMLfVTv+EfMXSf6HFe0UzUc60Y+y+gcJH1V7v8I4mGr5IZ+niX/B0q2K/UfSlLDuFnRbafe5wZNwwllvkzFT8vq3BIxxP/AKlh4658JCcV3sj2v0XWc+FwpN6w2+Lnzz6Qx0KfGuFzb/axWF8KXzY+gfTmHeHxGLwadp0Kry+8Th09vN8PU0KbUsSn99RP/JGxq0UuiEUXfXZvzL3NDMud9rhbqXWcPDv9y2fyZcTh/wBRRcM0op7taMyulLC4fJHNO3d3ZdshOJ1d1jxk4udrxE4d5K1jFi6Xi4hTnCWaOy2RqoZ51M0tzk92ZHXXlEVXysYnaKEVXuHOR536jrrD8Lr1W/LB2+T5BUi6WFcn5ql2/wAn0r6zqurClgYbzeaftFHzfjVaMKyox+2J1+Jn5v6s9/8AdL9mjpcPfhcPz+qTZyU78Pt1OopZMDhqS3er/LO7wN1OX++0X/Wj6V9O1f0nFctrtvKl8nznD4aVTFUXbrf+x9EpwlShg+IL7nll+NiD3iqVNvBkFefoCjLPTjJdUmWFLbeXWNg032JUXIyIgl32KcpegIIoR4tT/CkU6tW6/YkaAX5kArxav+AwXXr9MNJ/k1ECbJ+GL9Tic3/spf8AUGq9d74WS/JqRAb/AMYpzqOpBulaz0Xccqk+tMKquen8jAFOpL/DkA601/wZDirBSPGqf4EhLrVVN2oSNtgVuyYsrH49X/AkU69Rf8CRtsAyYuxgniKn+BIzzr1L/wDtpHSaRnmuYNyuO9hsWZ23bYbFy+DLqcmxnQSr9xiSDIqL5Bgikrwvcao+4RVLefyPRnguaevUaqfvIqHIlP7/AJAVL+uRdON76y3LEOJcXk95BeH7yKgaT/fq/ga2Z6a/eqa9g7e8iLYaRvngBkXeQOXnWsio0dSxVl6pF5feQBQDExpq28g7f1SANBC8vuS39UgguqDQq3MuYLL7hHyT/aJefE6seq0/ueOr08nCqz700pfJ7H60bq/U06K1c6qikcniGCi8NxSglrCmpR/Bpz/L59Gp/ulVZ/LT8gGAy4jiWAoy2qpRf5QVOhLPOLX8tJqPyjm+JPD/AKarF2qUtn2aKzr3FDxeB45YOupRq4HEqpC/WDPrmExMKfF8Jiov9rGUlDP/AFJaH52q8exmN43+sx9SU5TShKX9KPr30hxOPE+B/oJT/foNOnL3WzOXyR6fi72Y+tW6rR9RiZz+GY2ONwkJ7VEss4vdNGqpUcItrWyvY51rGgz4idK1s6Ujx/FPqfjOWdPCcHrK11dtXZwlxDi+IvPG4bGU59I09kX29PxfxOr/ALWvc4mrhXNRVWDl3RIQitT55i1xGdL/AHXD4pTWuepNJI1cExX1TUkqbnh3G+rlrZGLzXsv8XONl9PeVZ2SfRPUTXqqnTnKWyV2VFydFKrq7cxyMfKq5OhSr2pR1leN7exl5fTzn1DiFQp1cZWf7lRckeqR8pxuIdfETm95a/g9j9YYxeM6KnKU5JXb6I8JXl++7bJW/ud/jjz/AD9bMdHD3nThD1zUf7nXdN/r6eH6xaVvg4dKusN4NW18lWLt8HqXVp4ziVHHR0dVNuHax1rxx6jhmGTm5W8kW/7nvsXgcn0zhoW5oJTZ5LgWGdWgrb1ZqK+D6FjqSWAqQvooqKI004N/7jRv6EPuIo0slCnG8tIoZl95AFUfIydhVSPI9ZBJcq1AYEKt/UXb3IhgL8yKS9yNcy1KGIsXl95BZfdhMWiFZfdky+7BgKvmp/IYmrDnp6y3DcfeQVZAcnvIpxXeQUQK87By+8iKOr1kQEwHoW4e8gJQ5vNIKXMRJu4ycPeQidNX3kRuOPJ3gNikJ6DomXYxBLygou5WaOi+T8jjNQ8n5NKCApbz+R6EU/NP5GphDUVT+/5KRKfX5LpDbkuUQqER/nq/gaKh/LV/Awyo7gvzoIB+dGgwu/cEu4MXDyl3FRbsHcJYK4cAEGgi/vQaFvzoDEVlh8LVrP7YN/kI+b8QpR4h/tQUP+HSvJ/KRg4zReC4pjoyXnoyv/mP4fVv9WKs/PVm1J+zOn/tGwfhTWJirRqU3G/vYrm+PVa3gUaLhpUjmyv5ODjaTVF/l3O9Xgp0Yd46GHGUV4LTXT/U0y41Sq8TCkmorw1lVuqR6L6W4vV4ZjoLPZPQ87QVqlujOpTwzdFTj5of6E6mnFyv0JwPiEcTThisM7uSWeHc9TQqxrwuv7Hw/wCiuPTw2Kpwk9J2jJe59mwGIo4iClF2mvMupwsx65dmtVekpLNs47M4mN4lXhOUFs9G7I9JZTjZmWtw+hUldx1JbfUb4+ST3HkJRqYi8ZTnZ7rY6GDw8aEFGKt7nYfD6EOhlrKNJabmPP5eq/yL1M/DNiKzpwtHzvY81x7itLheEmr3q2zNd2dDinEIYCnObeas/Kj5zxuvVxKqzqu73l89DXHP2v8Axx76+seYxuLq4mvVr1pydSbbbOfSj4uIpx6yml/Zmqqrp/2FcMj4nGKMOzb/ALHoeHrq0eJSVKcV9tQ73Cv+E/wjhVoyVfE0nupX/wAzt4CWSvSgvWrfktYfZPpPDZ50HblpLM/k9Ti/361LDrupz+Ecj6VUocKeSHPJ6yeySO9RpKlFu95y1lIjRtyAhBQ1P42GtkBPyMNbICyiyBERPuRCPdBBllEAshRAF1fPT+QgKvmp/ITYFNlEbBIo0VHzyLKXnmBZTRYEnygKkjNPzM0SM81zEdI4T2GKS7meyUDRG2VGXYak3sv7l2k/usRBX0Ki8PfI7PqadfUZsM/238j7ljIad7z16jUpesXS3n8jkQElL1//AFJBS5tepaJT6/IRdpdyWl3LIXEJpp+NU17DLPuBD+Wr+BpVCk/WRp51qEU/OiKmvclpdyyFQMVLL5w0pdyo+X8jEC1Epdwkn3KQYZC07rmON9QYhrD1KSekYZp/L2R1sRXjh6bqS2itF3Z56rmxOOhh5auD8Wv8vaIZrgVsB+g4pwpy0k753/Uzs/XtP9RwClFazi89vaw76pwfh8NwuJ+6jUTnL5OVxTiceIUM72kkkuyQZfKHhMniKT91+TDjaDVRwe+VP/I9JxOkqeKv9pyq8Y1cXm7xy2+CsvGSoThLxLcmfLf3R6HARTh7NaoViMNWpQeH/wCDKpna9zfgKaWOdLo1sKzGSnOWAxTcX5Wmv7n2jhWKnVwuHxMHacoJtrvY+LcWsq7yaqLtJ9D7H9OUZQ4LhM27gn/c5/J6en4b5x6zBcXU7Qr8su/RnQeJi9nE8/8Ap88RFXCVl5ak1+Tj93o+krvV8XGEbtxPNcR4vGF40eaXcRWw1V+apJ//AJGV4exN10nE5cvERnXnOrVlfqea4pFrBX61J/6HtcRR/Ynbszy3FaF+H0e9pS/sd+K8/wAt14eel17gcCd/qClfbUZXThUa6PURwtuhxanV3s7nV5a6OOp5OP1odJNr/I6OAp5MVQm+lk/wZce/H4lPEpWzNOy12O1TopKEl92qFZfZvpOSq8GzJ/cd3K+5476Bxv8Aus8JJ6vmieyI3FZX3LSfcsJBQSTyPmCS5dypeRhryhFW/qJZ9yyAS3uC07rmCuU90Bdvcu3uURMIu3vImT3kQu4CqseaGstyOL7yJU+z5CbIpeR+qRFH3kWWgqKPvIijq9ZBlLzsIFx95Ayj7yGMXIKVKP8AXIzzhmlfPI0TM89yVp5+Ww+L5UIk+V3CVWC63+DLu0XLvoZ/Fk/LD+5f7jjq7L2KH4R/t/k0pmLC3ybmlKXcJYZSfNP5Hoy0lLn16jlm7hLDkSn1+QVclO+vyGTCFcxLSLAuH81X8DjNGLdWrr2HeG+8iqaC1zoX4X9ci3T51zyJQ0gGX3kFb+oaio7DEKS9y8vvIRDS79Xt1YMaEp7OVu4Fbh0q8XCVeag90ianhxuI42pXrpYdZ5x0o0+mb1S9kO4Xg6fD6GfE1ouV3OpUe8pM6lLh+Hw8MsIW93uKr4SlNWlC67EvZJrg8e4xhuIYGtgaVS1Kaeab3bR8/XFY+CsOs0p0+VqEb7H0+XD8ItPAhb/lPO18DhOHfUdKu6UFQxayN20UkY/yNf4vy8BiKGLx+Ip0YUpKU/Jn0Kr8IXC60IYnnxDqxSttZn0rG8KjV4xh8kbZYt6d7nCx/DVxD6iyVVLJQp3m16nsWd6zeMeO+qMHTw2OdGDtZJxPOYWOPr4yosLTlUmtLI9P9S06sOKOlXeeUEkprrE0/RlWhgMPjMTNx8So7J9bI6b4crPOOBQ4BiXjnQ4hy5V4mRd/c+x8MpWwdDS1qcVb4R5jB4CricRPHV4Sz1nlpQe7v1+D2uGo+FThH0pL+xy7uu3x+GqEEoknFZQ0VLY4WPRzXOxEUjm1VzHUxGpzqkW5Dmu/4ZXTvddHoefxFC+SjLeMpU38PY9TGizm8WwEof75BXtbxI/HU7Tp5u5HyzimClQr1abVpR2+Dm4TTFU799D3/wBS8FeJwrx2H1nBXkl1R4aFBz8OcPMnqvyd+bseTvnHWnQpU3BUq0Zqos3vF9jvYKPiYKF94bnj6NWVPFTjLe9z2HC60HH2ktV7mmHqeA4l4StRqp27M+lYbEwxdBVY7/cuzPmPA8O8bGtgU7VVz0n3O9wXiNbCYh4avmhVTtZ9fYjUr2xaE0asasLxevWL3Qy3uGhSfIwk+UW1aO5aQBkuBb3J+QLuU27oFr3kLlSu1+5IEP1CRm8L/wCSQSpf/JILkaCxCi/XIvI/VIM4Kq9YfJGKqJ6ayI0+8iVqQwNIz2feRMr9cgY1IFedmfwn/iTKVJ53+5MGRpaFyTFOg/8AGmA6Ev8AEmNMg5JmeV7klQf+JMROlK/8kg3I4ToxSbeZv3NEUklZWFT8jDi+VGHamEb5SFS2KgsK/wBt/JqRjwnkfyakEs8jpeafyaEZ4ff8jaYZOQMOvyEgae0vkIYiykGioRD+Wr+BoEF+9V/AYghH50EC/OgCIQgwDHy/kfRpeJLXZCIrou506FNQgkZZ6uQUaaS0Bkh9gJItjnL5ZJJmeotGbJIRUic3WVzZJ3scrjGAeNwFWgtKseem+0lsd2rT5rmWtGTeZ79znn5dpdcnh3EI18Jh8dV89Om4VF2kv/2aeEcM8XBTxVVfu4ibm/jocfG4f9JxanQhpQx005dlJf8Ak9zh4xhTpwirKKSX4N8xz7uPi31jg7fUmKgtMkEzV9EcJnX4U60oUreI0pSV3oN+sHf6m4k3uoaHsPpXhf6f6YwitZyWZ/k316Y5y1pwfC4Up+K5SnUatnfRe3Y2ulboXTlOlyyV0aLxnqjm6M1nkBUXOait2aqsVkM0ZOnVUlutTNnlrnfwy16LhNxe6M/gXZ0p3r1HJ7vcOlhrsmefDpfkyeXOWHSLVBOUotXT0aOnUoqEREKV5lY+2uFieEqnTqKFOUqMovReaN/+x8mr8OnhI+NFS8N1JK/wz79GkkzyEfpynxDC8VwMoZatPEOdKXykdObY5dZXzGpgIYuSxFJc6XOu5olRq4eCq0lK3VD8H/8AxnEqmHxSyxVTJO/TU9hU4HLKpQUZQkrprZo6XrHOc681wf6h/TYujVk8tWm9+6Pp2IoYb6l4dDiGBlH9UlzRUt7HhMV9HxxMXKl+3W6PpcycJw3EeGY3J48sPVi7NX0ZZ1KfSx9B4Txeaqfp8a5U6sOVVGtfiR6enXTsp6N7SWsWeKnhsfjYwq1ckqlv5FLVmrD4nG8LhbEyvTe0c17j7RZzXsG+Qu55dfUmGhypyzP7FqaVxzGVYf7vgpS7OWhdhld8ps41LiHFX58FBfkfT4pzWxFCVH3WqJ9ofWuiC/MilJTSlF3T2ZHuigy7gBBF3LuDcG4EqvWHyRsXVlrD5CuGhXCuLLQDLlJ87BuRPnYDQWVcByCYqZnmtRkmLb12CvOSfKxiaUdRUlJx109hiilbuYemmKpfZAyTcdX/AGJcpvlDK8MuR6y3NS+ZGXDPkfyaYspfZkN3r1H017yMtHefyaYhk1RfrkSnFu/PLctEh1+QyNQfrkXlfrkGQqEQi/Gqay6Dcr7yBp/z1PwNKAyv1yKaedajAH/IgJlfrkVlfrkGQgvDQfiJt3t0OrDY5+G3Zviyflz7MAkFcCTLfTEJqOxnckx1TYwSqZJnKu0hkhUqd0NXPG5eUi64vFOG/rIwglzx5oS6po7HDqzr4WlUfm2l8rcuVO1ajLswMNHwMZWo/bK04/8Acs8Jbr5h9WU/E+qsZ/VJQ/ufTuH0VQ4VhaXppo+c8bpVsX9f4vDQV4QcKsj6dHko049opf5G+vUY59gqUoz3Ql4f0uzNJLGG2R5lyyRnkkr33Wx03TU46mWvQe6M2NTqKwlHxH7dToeHFKyVjBhpSpVLdzoZuW5YnftlxCVrIVSpJDZpt67kUJPYuG4jcYRuzjOr4XHqiStHERTX/MjtrDXeupn4hgclOliYK8qE7v8A5epZzrN6keA419LT49X4lPDq2Kpy0XSSt/qc76e43iuHQWD4hCUqcG4u/mi0fUOHQguMcQa2lknH8xRyOMcDwNTiknWpxjRxeiqL/h1F3+TWePLP287A4avw7EwjOliY3fSejCxeD4diYWrzg2tpLdHMn9F4qhUfgTuulh9H6cx68+ZJbttWJka+1/Lm4vD4XBKcsPjcQrfahfC/p7ifGJ+NXrThRf3TerR6Lh/09TxGKvX1oU9WvUz1UYRhFRioqK2SCfZx8B9O4PBQSjTjKS3k9WdOOHhBaRiaLEsZyH2ZK0bROZXW52KqvE5mIiZ6jrxWTDYl4eplvLJLddjrO7tre+zOBX0lc6nD8R4tBRfmg7fg38fW+F+TnPLbaXcu0u5CHVyVzeorm7ltgNgBVz5oc/Uvn9YFV6w+Q0FXafrCSl6ygkEWlLuRZs71LRS87At5su4tqXcaBMBEs3cW89/OMlcU27hXCn5WEvKVPYu6XuYdxIGWiL5n7FOKt3YFYZ8rNkV7mTBxTvp1N8Yr0lS+1UUrz+TRGwmkk3Pl6miMV2DNok4rqSlKOuvUmSPYqko66dQydmXqLUl3BUY9hijHsaQqm141T8DboXCK8app2GZY+kCXXcBtZ1qHlj6QXFZ1oAWaPqKzR9RMsfTEmWPpAPDy52b6cjlReSo0jfRehy1Oo13AbKIXXPCqr0OViXaTOpU2ZyMZszFdeDsDW8RNPdG9RODw+t+/NHfpSTiIvcyqlSvG35QLp/7xTl2TTHqxLIrD5pjsT+g/2lY6o4X8SjBI+gJ3gn3SZ87+qqTpfWjr9J01G/ue/wANLPhKM+8Ua6TmHhIBDYGWhJFSp3CQRUZ/BWbYco8tmGkgkhImlKiswxU0i9i7m2bqJJEm4uDi1eLVmvYq4DRLTNcDAOeH+osTg6nWleD7xudbEYSni8POhWV4TX9mcvjkKlHimCx1BfuU0016o9UdqhWp4ihCrDyyV7diVZXMo18Zw/8AYxFP9RCOkai8zQ11K+Nllayw/wANb/8A5HSaTjZq67MtJJWSSXZBAUqSpU1GP5fuMRCyCywUEak1Cqq0OZiEdWquU5eJMduvx3y42Jdi+D1bY2cb6NXF4x7g8F14j+GZ+Px09Hf9Xpc67kzR9QNo9irR7HoeZbku4Lku5Go9gGo9gAqSjeOvUOMl3EzUbrQKnlzbBpoUo9y1JdwLR9ISUewQxNdyJrOwUo9iJLOwg869QuUl3DtHsLaj2AVJruJlJX3GzS7CWo32DUjiSi+ruNVsoMk3Eu1omHYZHsAW2soQeCXI/k2RRkwfkfya0yxOvYqS5p/I5CaT5p/I6BpkQNLr8hA0uvyEOQaAQaCAh/JU/AwXT/mqfgYBCn50WU/OgLIQgGd6V2dGhsjnVtKifc30ZxdOPqRys8r16jSQEIORVTynKxi3OvPY52Kp5/yZrpw87RxHgcSUXtLQ9FRraHj+ORnhqkK20qc7v4O/gcVGvRhJO90mSeHazXbjWGqVznxkaqbNRysx4/6twfj8Rzdsjv8A3O7wWs6vC6N/NFZX+AOOYZV6yfWpRlGL/qWxzPpjEVoVMTg8T/LF5l7xZr8Mc+3qENgIix9MjVMRZAkGKiLIQqIQhCiFEuUQc7jFOTwcKsVd0pqX4E4eo8FiE074TE88X6ZPdHSqQVSnKD2krGTBxjiMFUw1VfxycX7dhCx0SIyYWcoSeGqu84axl6omq5AV+UlwLgOZSTWmAQqk7xGm4zfYJ7HLxP3HSq7HOxGzOfbp8bz2N0uDwLXHt9ky8c9w+Ax/fqy/Bn4/7PR3/V6G4LZGwGzu86NgtkbAbChk+ZBx3Fy+0NBqnplpi0y0wyamRPnYKKX8jCGNi2y3IU2FVJiW9QpMU3qGnMl5CnJZSNtxelkUkrGHVLyfwTLpqWX0APCRvGTNSgjPhP438mlMqX2ulFZn8mmBnpeZ/JoRpgQuk9/kMGn1+QkOQSBQSCBj/JUGC4/yVBhBZT86LKfnRRZCEATiPIn2Y3Dy5RddXoz9tQsGlUmle19jn1PLX/lujUDTuhdWjKmVCqT05+L6HIyV1eLNTlcz1Vykqx5bjeH8WjUT1bRxvp7Hypx/Tyfldkeo4jC8GeU4Pg3PjFWkuk7mJ58O/wCq9rh62ex06Rkw2DyRR0adJJG5K5d2MXEoXoKa81Kan+EcPjPgcPrYPiVFxTi/DqxXWL6/g9PVjdNNaPRnnuJ8PVfCzoyV3T8vvFmpWPfl1FUTipRd4yV0/kbCsef4FiZqnPA1nzU/I+8Tq5rSM+nSTY6caiY1NHNpVWbaTbLGOph9wwIxYyxvHK0tlMuQDZK1FNhQ1kLuUZlasXfUyL9jil15a8df+ZGkzYx5IU6vWE0/wyh1VtxzLzx1Q2M1OCktmJcrMXTkoSnHpuvyQw2rVtEy0Kzr12lst2ZsfjFQozl12XyzZwug6WGg5eeWsvyG8yOlSVojAYBPY3HC+yqr0OfiE2mlub6jMFWr4U825z69uvDzmOfMzRwSn+xOV7XmZMfK85v5OlwmOTh1N+qbY+OeXbu+G6SfrkJal/iSHMBnZzhThL/EkVll65DCBdBZ6ajYi3vEYgg0WikXcIu7KTedkbAX8kgg7gMJsBhQsWwmA3qFcyfkZF5SnsRGXUSI2kgbvoS39wGYWXI/k0pmfD3UX8mqAZ69ipPVmmLRmpbv5NUTTKnL2kBTktdJbjWDT6/IQxSXaRakRMtBA03+7U/AdwIfyVAwJmI5cyCRX3oC84OYNlABJpwa5tUZaDfh+8X/AKG0y0lkxFSPS9zn0vLr0MS6tNKSzabouWGTV07PsciVapgql7SlSfbodPB42liYck7vqupftvtz65s88kybpu0tCnK6Oi6VOpTamr3MFfCzoax54f5onXN9rz3L4c3HRvBnF+nMPfiuMq20TSR3MRrER9O0FChiKvWdVmOfbt1f9XepR2NCjoBRiaLHaSY8vVZpxMVei52a8y2+DpyiIlTM2Nc15XG4SWGrrEUVazuv/Btp1o16Kqx67rszpV6MZwcZK6ZwalKfDsRffDVHZ+zMV15b6U+Y62FszhSbg7o6vD66mhzT5J4dawE/KGhdWVjtXmnsqTFMkpESuc67REXYJIKwNLsZ8VTz4epHujZYXUjmptAlYE26cO7QmVa10/Mh9aLhCy6I4+LquGZ9TLpzNZKtV43jOGwv2p55/g9jSVoniPp6+I+oqtZ9E0j3iilaxZ6T5bngaIyFN8ppxJqs5eLludGtI4+Llucuq7cRw8a7zZ3MLangqEeqV2cKvz1ku7PR2yU6S7WR0+OeGu6jnEpyiMYJ1YB4kQHOI2xTRGinVhpqMVWHcj6BIIrxIeovxY9w0iWCA8WPciks7dw7ApfuP4AvNH1AOURjAYWFSlECUo3GMEK5DemgSXcF+WwV9DLostMEl0gHUvKaYGWg0aotFjPXsdNav5NEDNTfMzTForImBT6/ITkgKbWvyEh6LQMWspeZBFQ/kkGKpv8AcqDLgGT7kDdEuswQZRLomZEBRi5y0MVZToYtymrRlszpUJcicfyaHGNeOWauYvnwfbKyU1CrDXVM5uM4bUw8/wBRhJ5ZLVxOosDUoSvSlePpYThVcbZdSZSdSEcM4pHEwyz0qLSSOndSRx8PwaSxX6ipPK/TA69KkqcbLX5Nc6x39fwxYrBp3lFa9jNwmi6WHcHvnbZ2WjJKn4VfMvLLRr3JnnVnWzGuktBthUKiWj0GqUXszty49ewtCpK45gMzVlZasTBiaMasJwkrxlozp1djDVONd+K40YuEHQk7yp7PvHoM4fiPDxag35tgsZFQnTrdFpL4ZgxUlTrqrD7GmjO5dds2Y9nGfLczVat52QH6heBBp+ZaA0k3r1OluuE5zyalcZGJIxsNhlXUsjPVUohWC32RMrZr61jSnZC5PsrmjwV8sp0m93ZFnB9mCtTc93Y5uJ4O8RByzSsdqUsNS89SLl0Qq7qTvfl6W2M3iOnPX6eQ4Dh54DiihV8zbT/J7e2VHCx2E8LiEaq6u53YPPBS7owvXW5RoCbGCKrLfTE9steRx8TLc6eIfKzjYqWjOVejiOdSXiY6mvdHpavmh8nnuGc/E4N6pO536lROS825349M9exgkzLtImdemRtEKZHUj2kA6se0gLYSFOrHtIvxo+mRBoRBSrrtInjL0yAbcBP9x/APirtIFSXiMBzFsjqe0gXL2kFimURtdpAuai7WkFcdvQJMUGrvb+5l2W30W5aX9yloGghmHNkTNRSSNMSxzoqe8vk0QM0PM/k0wKzRMql5X8llQ2fyEMSLIiwhdP8AkqfgMXH+WoNQEC+5EI90BZRCAWpZNenUbh8RGprCV0t11ReHUct2rg1cFTc/Gw/7dX22ZzvtLZ6dCDTQVkZcPUm6ac1aWzRoUzUrnYIJApoI1GUFSipKzGgghVJ/a+g3woPpZ+xnxEZJZ4eZbruXSxCqQuSX8LZb5h3hSXlqf3I41f6WRVV1DumtDeaz5InCclsZKtKa+yR0G2VnfcxeJW53Y4OJw1WrTnFU5O6MEuF42rRS8CV7Wdz1nivuX4j7mf8AFP26f5up+HHweCxng0o1YWyK2p0KeFqLzTivg0KsyeIanHLn131VLDxW7kw0oQ2QOa5TuzeRzttMckC6qBystUb7mguWIltBXYPgTqq9WpK3ZGlU0iPYDh8QwVNx5MyZyqWMxOArZW7rs9mj0WJV0zk4jDRxFO0vNHVMxXSNVXE0sfg1VjpODWaPa5vwb/YijhcLoSnGbflva3ex6CjGyOf5X8GvYz1WPZmqsnXpeWDEvlZw8ZLRnXxLOHjXozlfb0c+hcBi3jqkuyO/P7Pk5H07S0rVe+iOxU+z5PRz6c77HYlgrFGmS2Cw2gWAqXQslTylEVepCrkvcCagp/uP4CBX8j+AGFFAthVsF7kb0FuWoacPUbHYHLoGjDstBJAkuVloomlMx0ZGuAZ69ipvf5HxkxEPM/kfE0yZcqD0/JAYPT8hk5SLzCy7hEpv9yoME03+5MamAwj86BTI/NEAmwSFBTIzcPgONeLlyvVboQ9glh6NW2XkqLZnPodKjJVIh5UIowlGKvuPuzUrlZ5WS5VyXCCUi7oVcmYun1PMGIwss/iUXaXWPc0qYTasL5JvNcxYmSllkrNDY4yw6tQhWWq17nNxFKrh1dLNHuT7Y6TmdOnHGQe41OM9mefp4unUla9pGqNapS+DWs3h2HFC3GS2MlLiC2kao4mnNaMvisWWCjG+trB5C4TTQd0X6s6FRGJIq6LuWTEqyEIUULbDk7CJSAz4jeRzJPnZ0sQ1qcqo+dmevTpy1cGSyVo9pHVSscngr/cxPyjrnNb7DLYyVnuaZPQyVnys59NcxzcTezfQ4WMejOxi5HGxOrsYj08+nb4LS8PhyfqdzdP7PkThqShhacfZDJxXJ8npnp5/ycUwcqJkRRGA0W4oFx9wml1PKU0SrF23AdN23kRRFoS6C7yIqHZyC+DgF/K/gpUmupSpvxHr0BDWA0U6b7gOL7hqLegD3KlF9xLi76MlakZJbA3Lk+UEjotF2BRYDaLRsgYaPmNkPKGOvY6e7+R8RFPdj4mmTAaflfyWgY7fkMjLKLACH8tQchMP5agy4DEyr8xVwb8yAYQG5d0BYp14UMRCM9Iy2l0TGXKlGM9JwzRekkZ6mwdWlO0dQnURjouMIQineKWjHNx7mZWLJpmZEzmadSKjuZ3Xt1Gk5dBzQDqIwPEruKeLRn7NTh0/FRPF9zl/qV3CjiETWvo6ikR2lHUx066fUfGqmXWby5+O4XCpz0eWf+RgjjKuEnkxKsu72PRJ3F1sJSxEHGcIyT6DzPTWz1WCMaWIjmg7X7EdGtBq2q7matwWvhr1cDVknv4ctmKp8QxtN5K9G0lvdWOk6lZvP6dilVnTjruOWO6M5C4hUmtadx8JQq78r9zUrF5jqxxCnsxkaphoxadnla7m6nFG4xZjTF3iS5QNyuaSuzJWlaVjTKVk29jnYifP8hZ7BiKv7dzlTrat3H4ir+zUXY41avov7nPqu3Mei4FeVOvV6SnZHYOZwSDhwym3vPmZ0TES+wTZiryNU2YMRLc59OvEc/G3ha/XVHIS8TFU4rdtHSx2I8RQVrZVb5MnC4eLxJPpHVk589eHa+OfL0aVopdlYCp9nyWwZ/Z8noec25LlXIVlGCwgQgJ7AhVOgLQULRLFlhdUAv5H8Dkhdv3H8ARi2MYqRGoCQt2uGxM3qG2B+UhT2IjDsJFgoJMIKkn3NcDJBmiLKxTafmY+PyZ4bsdE0yZZ9yRTaevUtFQ8r+Qyuz9RFfuFcgAU/wCSeozXuLh/JMYBNe4GubcMp7gC79yWfqCIjK6tJ9y7P1yKQQKx4+vVwGFdalzxvaUexzI/UE57wkjt16Kr4epSe0kcjDcIc9umjOfXhqYt8ZeX7v7CZ8agvNM60eDaa5RNbgN43SiyEvLjy49S7TfxEFfUFBS1U1/+I6vwnw3ZwszBX4b3Rnw6R1aONp4iOanUjJGuNQ8ZUpVMHUz0pSi/Y24XjdSDSrq69SGX3GvD18KjNVOqzjYbGQqwUou6N9OqmGLy6dOqaYzOXCZqpVTWuXXLcrMCrh6dWNpq6BhUHxka8Od2OTW4TKEs1F6dhdp09JL8o7iswalGE1qjcT7OfSTnDNEfRqzW5UsK1rB/gDxZ09Jo1pW6NVMjqJGVVYvbcVWrNRsn8mvtGfqbUrOrNU1sYK9dTru20dC62JWGw7lf9yekV2Ry/GtDV6k1ZyrFYi1Rx9SORTUsTiqdGO855fwTGYnPioWex1vpnBKdSpjZrZuMDHVbkx6mhBU6MILaKSGsqHlI9iRm+yKztc5WJnub8RLlZyq95tpdFc5V3+OObipbj+BUrxrVn/yo5+Lnys7/AAyj+n4dSi/NJZn+TXxTbq/LcmNOX3kLnHbWW4xgT6fJ3cNF4S9cv+onhL1y/wCoLYoM6HwV65/9QPgr1z/uMJcG0iVJeuf/AFF+Gu8v7hVCA2q8Jd5f3J4a7yLuRgVlXqkDZZ3rIMW3zv4DUU0u8hcorvIY2C2RqUiUV3kKcVfeQ2oxDepK2yMiBZEzLsMJAoOASipo0RSQikn3HpMrnRw3Y6ImmnqNV+5pk1FU9n8gpPuSKdt+oDAkAk+4ST7hFR/lmGLjfPMKz7gXcG/Mgrf1ANO61IDIDZ+oqz7gMQSF2fcNJ9yLg0BQfh15x7lpP1i5XhiE275kZ69EdWmHYTh+eyNWXozMYt8slfDRqLVHJrYCM5tPT3PQNGbEUbxJYvPVjxHEsGnTmktV/wBjz6p3qZX1PcY7DWi9DyVeh4eLa21uic3y9EulUniMFUUoOVu3RnoOH8Up4m0Xy1PS+pVHAQxuEU4eZaSRz6/CqlKV4qSa2N3nUtx6inVNUJnmcBxGSaoYrR7RmduMmjnZieK6kKpojM5dOqaadQusXl0o1BidzFGY2NU3OnLrlqcUxcqVyRqBKZrWcsYq2EvrF5Wc3ERxVDXJnj7HfsmDKn2HlZXja+I8Sbcnzdmc/GYuUKbsezxXC8Pio/u09fUtGed4j9N1XzYepnS+x7kjpL4eeoRqYnEQjFXkz3/D6ao4SlSWmVannsBhI4N2lCSqfc2egw9S6Rm1fr4dSHlKqMXCfKVJlt8OeeWTEM5OJlaLOlXZycRzvLt7nO+3p4c+NJ4jF06Xd6/B6d6aLZaf2ONwmjnxVWt0grJ+7OvZ9zv8czlx+S70sCS2+QlF9wZJ6a9TbmYUynGfrFuM/wDE/wDqEMBF5an+LL+yJln/AIn/ANQCqXyl3FSjLL57l2l6wgyXAtL1lNS9YUTYDfOyO/cU753qGoJyAlUBlfuKkn3I0kncW3qRp+sU81/ORtnzETF3GRMuxiGQFoNBkykzSjLSZoTNRijj1GoTF7jUysmokdn8lIqn5X8gMQQCDQQMPPMYBF88w7gQrqi7lPzARlWLISiIIFFoijQvEbQl2YQvEfwT9tSX0kb8LUtY2p3dzl4SpeKfc6UGc+az3PI2gXG6DKaLWGDEYaNSLTPJcV4ZUp1FPJK17XPctXM9ehGpBqSumZ/Ou3PWPI4CVTBYi0vJLc9GsPSxNO/fZmWvgUtN49H2G4GToPJLy9Dtz6a68xy+IcFhO+lpHNw+Mq4CosPitaW0Z9j3NWkqkO6PP8QwEaiaauidc6589UUZJpOLuns0OjVscGjUrcLnltKeHb1j1j8HVpVademqtKeaL6nKzHaWV0KdU0RmcxSaH06xEsdGMxqqGGNUbGoalY+raphKRlUhika1jD7pgyppgKQWcus5jJiMNGouZX9zNCjKhOy1idOTuJcUZxudeAwloDOpoRqxnqyDcnkqtLc5GNqWi2dKq+U56pfqeI0qP2p5pfCMSbXSXJrpcMw/6fAwT88+aXyzVYZYpo9TybvkFgZbL5GC6my+QLYthsWwiEKIAFR6BAVHyhX0Au4LJcoCMU/OMYt+cNBYpjZimGipinuNmJe5GpWIZAWhsUYegxBoCA1BhdIehMEOSKxRxe41CIrcfE0yYi4eUpFw2/IBEIQCRfPMMWvPIu5AQN+ZEKe6AYUQgoIhSLIqwnHPBrurAoMIRhbwST+3T+x1aTOb/HWb6S/1N1J8pxzKvXlsTCFRkGmblcrMRi5K40FohGWpTMk6WR3Xl6rsdJq4mpAsuNy4TRruno9YmirRp4iF1uYsvhuz8r2GRqypy027HWXTrn8xzMXgGnNW/ByPCqYStnou3qh0Z7N+HiadtpdGYK+BhUbhVWWfSXcz1z4TnrzjlYfEwxEbLlmt4MdqjLjOHVsO8y6bSQFHHfZX0fSfRnG847TrW+NVofTrGTRxutiJtGWnTjVGqojlqq0NjXNaxeHTVQJVDBGv7jVWLKx9a15wcwlVLl3KmLqPQyTY2UhU/KSunLLXmoQbfQnCKF4VMTLebtH4MuMlKrWhQhvJ2Z3KMI0qMKcdoqyNfFPyz8tyYvKu5WReqQRTOziXlXeQM47ay3GsXV6fINA4rvIHw13kNYDBtBkKcUGUwjPNILLpvIue5AF5feRMi7yGFBS3SXeQHg6+eQ8C2oCnR/rkKdH+uRqYtoLKxyoP/EkJlQlf+SRukkIktQ1KwIZEBDIo5vTaYhsRSGRu9gzR0/KPQin5dxiKxfZkeo1CI31HL5NMGokNvyCr9yRv3AYWDlfctJ9wqQ88ywVuy7EFlfciW9yW1WpAZAcvuTL7hRotAKL7hKPvIBiLF5fcvL7lQf3/AIGUp5HZ7PZiEue1+gWVPrIlmjemHGRjpVcloy1XSRpTOeYjQmEIjK4xM0xYjQLV0MAZCVlnT/sZ2rSs/wAM3SjdGarSTVn+GJcdJSlmhqjRGtGqstVfD6oVQms/hT0l09zS8HGpqtDrPLPVn5A6doWfNHuczG8KoV4tw5Zf5HWWGr09FK67MRUqUoaVYST9heUnTy8oYnASaXNBdDRRxlGvonafWL3OjiKmGyteDJnAxeGU6jdKEorocuuXTnt02yszOPHG4jDctVeJD/M10cbRxEbwnr1i90c7Mdpd9N6qsbGsYo1Y5+bYYpLoRcdCFU0KasctVbGmeIU1BQXlWvyWMXk9yRnxNdU4NipV7ROdVnPEVlCOrbshPNXM81t4XS8WtUxMto6R+TspiaOHjh8PCkui1fuHlR6eZkx5euvtdHdAtruTLH0kyx9JUVddwJtaa9S8sewFSMeXTqATce4OePeJHSh2K8KHoiEU5R7xBco94kdOHaILpwXQAJyVvMXmQE4xt5S7LsAV0S6BsuxLLsAV0BdZi9AXuFRyXcByXcJ2Fu3YCpSXczylG+42VuwlpX2AyJBoBXGo5vZRJdxiAQaDK6b5RqFQ8oxFYsMp9RqEU+o9FQaJHYpBw2KiyyFkArzsIpedlkURT8yLBvzoAyIhALLKuS4BkBCNIr7/AMBg/eEBC6dVwlaW3RlGnCUVVjNyV47Es1Lc8ijIbGVzLKEsO9dYdH2GRqHI9tSZbVxMZDYsrFimhco3HtANAlYa1HOu0l5WFhsVK+SppUX+Y+UTLiMP4kbrSa2YlxvxW+OJa3V0SVWjU80DnYbEXn4Nfln0fRm7wrRO2653maB08M5fxx/sBKnhcv8AFC3/ACjHTFukRfDl4/B4OrB2oWfdaHmcVwjnzUnKLWzR7aVL2uKdGOW+SJixueHh/wBTjMFH/eIeNTX3LzG3D4+liI3pTv3XVHfxOGpVINSpxaZ5fH8DnhpePhtafVLdHO8x3nVnt01WChjI0pXautrHGoYmolarzr1dRk60GvOZyxrZWmvjr6R6nS4Hh228VPZaROXw7h88fUutKS802etp0404KEFaMVZI6/Hz+XH5evGJLysIF+Uh1cEIQoIguptH5DFz2XyFMKbIA2EU2LkE2CwFVHylgzLAsIEIAWC9wmC9wAYLGMXMBTFN6jZC3uFZE1lCTFLyjFscq9hiYSYCDiisjppMdGIumhyRWaqmt/kekLpLf5GoMiSRcUrFokdioJJF2RRYgFLVl2IvOyyKqyKss6LK6oArIlkRBAVlQWVELQEyILKigkzRUSWYvKgV5wwisqOtQpKlQUV+TBhaXiVrvaOrOmmhHLu/iBlCMoWepzcRCWFeZKUqXVLdHUa6oCVpxaZLzqc9WOdSrRmlKErxfU006pysbg6+DqOvhdY7yh0CwuPp4iNk8tRbwZy9O2Sx2oyuXYyUq1nqaVVU3ZFmVzsyo0KlTNALRcJXPr0I1VaWjW0upVHHVMNLwsSrx+2aNsqdzPUoeJytXuJsa8VqThVhmpu6Baa6HInRrYSeejOSiMhxCq7KT/JuXWcx0tGV4a3M8KtWpG6UWNVVrzKSAVXwynF5d+xy5UnCThLZndupq63EVaUK6tLfoyWN8957eTxfDkqjaWWX+TMrwzhraLPU4jCOdNxfnj5X3OJUXNKL0a3RnHWXXQ4NKM8FktZxZ0LI43DKvhV8vSWh2zfPpw7mUDSsVZFvYhplWVFOK/qLIwF5F3kBOKstZbjhdTZfIEcF3kA4L1SGMFhC3Bd5AOC9Ug2AwAlHl3LsSWxaCool2IEEBYF7hMF7gAwGv6g2CwFOPuKcdd5DWA9wrIkHFFJDIrQ5e3rRIalYFDYoqJTGJAwQ5IrCqXX5GoXT3l8jUEEi47ERI7AxZZRCopedllLzssioV98SyfegLCREWBaIQssEIUWKIvOHcBeYdQp56yXRasJW2hT8Omu71Y1XcrIkYSqbbdx0VCmt9e5XG9DUe4urSb2GKcXsy80TWOe1hcnDSRy8dwqliX4tCXh1ls1sd2rGNRWZz61CpS1g7rszNmu3F3041HH1cNU8DHQyvZVOjOtSrLRp3T6oyYivSq03TxVC8e5zFKfD5ZsPW8fD9ab8yOV5sdst9vU06qY3c4+Dx1PEQzQevWL3R0KNa+jErl1zjRYFrqi1JBM2yyzp9e+5gr4Rayho+qOs0mZqsHujLcu+3LpTlTdr2aN0a7nvuLrUI1d9JdGZ7zoTyz26Msq3lt/UWe1mXKonBzj03QlSjNdyqUvDqWflZtMi1WvKz/BzuKYbl/U0tvuRurR8Opbo9haqJSyy1hPRma3P3HCVS0018nfpVo1aMKie6OHi8O8NiHSflesH7GzhVbz0X8oRO5s1020S5TIbcUugXKK6hAtR7BVZ4euIFScMu8dwnGPaIEoxy7RAt1I9wXUj3Laj2BcY9ggHOPcrMvUW4x7FZEBTsWmU0spaSAMFhWIwFtgN6jGLa1AFsW2MaAcQEtsB3uMlEW9wASCSKQxLQ4vYiGIBBliDgPSM9NscrlYSnvL5GoVTvr8jdSoMkXygXl6SLNYBhAeYvmLRF52QpXzsvUghf3oHUvmugphYvm9Jd5BDCxfMFzAWWVzF6gFFN1Elq3sdKjh44ZZpu830MeBlbGq/VHTrQctY9OhqOXd84HNOei0XZFqjJg0pKD1NSlF7M1JrnbZ6KVF9y/B9xpC4ztAoWI4xe4dytCmsFfA0anSzOdPhMc2k7HdlG5mq0pdDnY78fJ1PGvP1uF1abz0XzrZrQlHiLpTVLFLJPZS6M6dV1odJHNxreIhknTi/k53l25l6dWlX5VrddzTTqpnkaWJr8PnopTodYPdHcwuNpYiGajO/ddUZ9J38eOsU1cTCsPTTRrXGzCalG5nqYfPGzVzoAtEsWdOLOjUw+r8vcCU+uY7binGzV0+hy8bw+STnQ1XWBqdNTrV1P3cKpdYmWSui+H1s8nQlv2Yco2k4voadOf0zYmj+swen8tLVe6OVQqunWhNbp6najLwqiktupzOJ4X9PiPFh/FU1XsyJZjsKSnBSWz1LuYOH1nOi4X1jt8G20u5qVwswRQNpdyWl6yoIXPYmvqBlfuFEwWwWpdwWpesA2AVaXcqz7hFsJANO25evcKZcBsrXuA79wgmwL6lNPuA733AO4DZTv3BfyBbAaVyn8gNO+5AKYxeUVAYjk9Yi0UiyhlMchENxyKzR092GhVPzMYmVBkjsREjsEWWSxQALzsMBeeQQVZPviQv70AZEQtBFkIWWCEIQDVgKWeu5v7VodKV7po5/D7+NP4OorOJY4d/2KcVU30kBZp9maXFNAWb0ktupWZS1m6MOLn1ZHBrVEVwUTbJqWkWVFa21BLbBuKSIzLWp035qcWaXIRUdzLfPtzcRgaNSLtGSZ56rQq8PxHi0nbX8M9eqTqTsjlcToqpUVKOtjFnh6/j+T/zWrDVlXo06q+5ar3OjTehxOGqVKVTDy6c0TswTUU+jMyOXyTLhyLsCmEacQ2KsG0VYmK5+K4fGrNVqTyVlqpLZmOs5X/cWWotJLudtmbE4aGIp5Zb9H1QlxvnrHIktCsscXh54ee61j8hyo1IRdOW62fcxOpKnUTWjRrXazYyYeUsNirS3TsztXOXjYqc1Wjv1NmEqeJQXdaMsce5vk8lyA3NOaNgyfKW2DLYCNgtkYLYEbKbBbIFF9hYHQIC35QGwnsAwIA1zBFPcICQtjWKkgAuU3qWC9yBcXoOTMsZDos5PYaggEwkWIOm2OVxNMcis1cL3YxN9hcN2MRUEmy43ylIKOwF6k1LKABXzzC1BXnkEBE2XrnRET74gFzF8xQaCJzf0k5iyAVzF8xZAOngEvA976mpaSE0I5aEe+4+nJPfc3Hn696PqXYm6JcMAz23CTjLbcp2YmVNPrZ9GVfFPsWrGR150tJxvH1IZGvCa0Y+0X60ya05RLUxjl1WoHjLqiE0LTIqbbGKcGR1opaEa2l1ZKhTsvMzBSpJ1M7G1HnbbDgZb58RixC8LF0q3R8rN9J9DPjqWfD++6JhquenGXXZ/KM2ZW/fOtwaAWqDRXFYIQJSIDLYIpoliuXUvVrVKX3x5o/Bzq0VUTktJR0kjq42nUhUhiKPnhuu6EYqisRTWLwvm+6PcTPTtz3niuPWuqF1vHp7BYSVp2i+WSuhqUakGl8NMxUW6VbK/tf8AkWTDuOpzeorm7l3KbNOCa+oXK9twrgyfKBTzdwHm7hti2woXfuXr6iXJcovXuFZ+oWmMQFNO24Fn3GMEAWn3Ik7h2J94QDi+4Dg+48jiQZJU33FuLvuapIW1qBzYsdF6GeA6Bye2w5MYmJTDTCHw2Hoy0maUVKKPUNC4vmYxFZo0FDYBBx2KgiiEAXH+SYYuH8sgiA0T74kJ1RQQSBCCLCACTBVhwWepCPdizTgY58XH21DNuR1lZWj2Kas8yKi7zGtcuht5y1LJUt9stvkYxNvFpyj90dvkOE1KMXfXZmkUymOsmC6fYmLpDfR7CJ0VvTdn2NeXuA6XVEalxjU5w3LztjKkWt0ZZPJK6M2OkaMzFuQrx9LdReZsjRyld+w+KM9JG6hHeb2W3yE6uQFdKUlHokc+i/AxVSg9nzROnku8zOdxOlKEoYmn5o7jqbD47/5dGjLSw0xYOtGrBTXXddmbWSeWOplWUUpIJlRBc5qnHNLbqVCtHxHB6SXQOrSjVpzg/LJWYw9BlFVIafg5VWNTA1nVgr0peaPYdTr1MBPw8RrT2jUX/c21FCrTundPqjNalxx62GVeUq2H8zV0ujOPXX72a1m9GuzOzXlV4fFzhDNTvdx7HPxmIoY2HjwhKFa/NHo13NTzHTzn/DYSvTTJcTSklT1CdRGnK+x3AqPQrxEBKSygG2LuRyQOZAEUDnRMyKDTGJiM6DVRAPBaBVRF50EWVbUtNE6gGkSwSsH02IjNKIlx1NNT4FPfYEcOI6OwiA2LOT3nphpikxsAlMgjQl7memaEWM1cUMSAj9waKg0vcJeXcpFoMrt/UVYIEAEv3JhWKh/LIICJIu2qLJ9yAvKiZUWQolkWooEJEBqKNvDopeLPsrGJHVwEUsJd/c7mp7Y79NNJWjmYcJpu3UVduRa0qK2/U3HC+RSXhVM32vcXVhlfiw2fmRonHPBruIhO2kvhlrMXGcopPzR79RkasZ7MW06Ur7wfTsR0oVVdaPuguQ75IZnHEU/K8y7MV+uadpQs+xlfrb6bZRjNWZzsRhZQvOLuuxpjioT3UkXP9xWU9B4pNjjS0ZIvmRtfD053lUsuyHUsFQhqldrqzOOv2gKFNuy6s3SglFLaKETr0MJBynLXt1OViOI1MVPLDlgXxIzl6uurnU5abA14qdNxezQGEjamr7sGtU/caF9LJ5cuhUlgsQ0/I3aR3oSU4+z2OTiKHiLMh3DarUXRk9Y+X4OfqunySdTYZjK/6SKqc1rmnD4mGIhmi/lAYmiq+HnB9Vp8nHwufDx8WD8rtOPwWTWJJ1HYxeHdWOeGlSPlZmwXElUm6NZZKsdHFm2hXjXpqUdmc7i/D44lKtReTEw1hJdQnPn/AFrpVIxqQcZK8XucuWbh0+V5qMn5X0F8K4tKunh8RHLXjp7Oxoqxc5vNqno0SrJZcpVWr4ju9Yvocivh/wBPUvH+OW3szVd4PEKjPWlPyS7explSjVouEvLLr2EuOk8OVRlfOuzGXFRhOhXqUp79H3Qw6OXXtTZUnylNgSegQbYLBbJcCWIVclwDCF3CuAaYxCkxiZUMRa3AQxbkDIhAxGIICURLWppmKa1A8rFjFLQQmHE5PoNMX/ccmZ4DosIfSZqjsZKW5qi9Cxijj5mGhSY1FQaLWxSIvKGVllEApedhArzsIAkX1KL6gWQhAKLRTLQB/YdylHw8PTj7HIw1LxcRTj0vd/g7EnetlWy0NcuXyXbgoDECo2CVjTiNbCJwvJtD0K/4jRr2kKjN03lkrxAqRcOem+Xqh8op7iVek7faZbi6eKT33CqU6WIjzLXo+pnrUb89P8xM/wCpnCaXQa19d8xodB0tHqujKlF20dmNpYmFTllo+zJWoqcHHo+pDb+WGVGb1vL5FShWSspySF1KGLoTtGtLL0e5E8V908xjXQiVKTlzO79x9GioBxo1Huh8aVpWEpemuhpC/RGS7nNvuaa0vDw9lu9EZ6UW2kt2Wpz+2mMbwWmwqtQdKarQNtOCSSQbSas9i4x9spHjw8LM+uxzNIYpzj5J6SXua5Q8Cs4P+OW3sxcqSUjO2Vvnx6BHNhq2aOtN7xNDaqJTi7xezBjapC3UVeWHk2lyfdE1V9suPwKqvx6XLVjq2uo3h+N8VeDX0qLaXc3RUZxTTunszmYzCx8TPTdtdbdGZalnUytGMw9OvRnSn12fZnOwleVObwdeX7kfK/UjoU5urFUqv8i8svUjPjMF+op3j/NT1g0Z/JP1RVcL+opucVzQ0Xuct3WjOpwzGxv4WI5Zdfky8TpQp4t5HFqWuh0jn17Y7gN6BAT8pWEZVyMphUuS4DZLgMuXcVcNMA0xsWIQ6IDkGtxcWNjqwhsUNSKirDAhcxT3HSQprUDx0RsRSY2JyfROgOgKQcWGTqT5jZExQNUXyhmmLcahSYyBYyYi15QAk+UrKyyiAReZhArzMu4DETqUmVfVAGQq5AIy0UWgNWCn4eKi++h2KVO0nJnFwiviqaO9A3y4fJ7W1oLi90NexnWlQ1XONCM0an77RpW5jo64yp7FpGsXUScRhUtiUjDVbg9N1sIrQjVp+LHR/cjTiI3jfsZKcsjs9nuZrtz60qOWrHJJ2kvLLqFRx86FTwcTt0mLxEHSndbbpg1UsXh//kiZdLJf/h1G4zV04uLByRe2jODRxlTDaPWF9V2OhHFeJBSiwzfjsbWraAx1qJIwVce1HLLzdGNwtZww88RPfZEnln603EVM9fKtojsLrPQwxk3r90jTWxUOH0FHetLZF/611MmRuqVlTaivMy4y01ORh6snPNN3lI69GnJq8tEanly65nIMTlqRt1RlTlO0JO0tlLujoyhTS1MtbDxmtHp0a6Cw5s9FOm6VS99How5RTV/7gOryOnWXOtn3G000lfqI1tYpOWEleOtKW67MKMPEtlldS6mqUVncZeVmF0qmDrcusHqkT6zWpdMdC68Fuz3hLsBhMVbEujW5au0uz9zZ4kKsFOL5luuxmxOGhirTtzx/0Hqpv7ZuK4XwqqrxWktJHLaOrjHUhg4wc80b6XOSwlv7ULn5QwJFRTAYQLAFlXLYABBoWmGmAxDIC0xsQHU4jlG0kJp6GhO8kEMi2OgLjEalZBFNANK4xi3uB4hDYsUg4HJ9I9MZFiUNgGadTZriZIbmun5QzRrcdATAaisjInoVciZWcMIBcK4EvqyIHqwkTTBoIFBWCLIWiWGIpFkLKrTgf/dw/J3I7nBwbtiqZ3oHTj08/wAvsU/KZ5dx83ymeq7QLWeT6TumzJRv+uqmmgrUU++oGVQxWf1IfhP2eUWQqMtaOjME42OpVRhq09zHTrzWdtTpuMumxijJ0ql+nU1S032MlVXMV6OIXiKS8T+mf+pnWfDv+l7mx89G3WITpKrR16oG4w1qudIZ+s8WNKhDyx3MtdShJRl00NGCpRhTdaWkV1CnV+IR4fBTazTekV7mbBPEcSxd1z1HvLojDhMLiOP8TnOLy4eDtfoke3wGFw+Dp+FhoWjHd9Wyya5d9zn17BhsIsLHbxKvWT2RodOtLzVLLsjQWdMef7MMsPb7pMqKcNv7G6wupSTGLOmeUVPdfBIOyyPboHboDaxMaVWWkZCMU14Cn2NNXWgvYS0qlOcH1RKvNZYNDoytK/YwUZNaPeLsx3i2Oet2D4sl+nptbXOCzv4+1ThqkujRwGdGPwpi5BMBgRgMsoCmLYbFsC0xiYoJbFDYsfTM8TTTRA6NjRDzIzxXMOXQI2Uw2hVJ6DQyFgPcZYBrUK8NFDoRKih0Ucn0UURsYlJDYxDK6aNMVoKpxNEAlWlqNQtIYixlZSLIgiFlFgUGgUhqQSokMsRIOxWQ2IFYlggQrEsWFXReStCXZnoY7HnbHcoVL4aEvY1xXL5Z6OqCKiz6dlcbKXLcRG8qqXd6m3Oej5clJJFSy1Y5Xoy5PNK3RFZeYqQMKkoyyVF8S7jwLXVnqi0mvgFDU8oistmanrETJXh8GVlc2rEySidCqjJKPOc3p4rKlZmmiuRoF0xtJEjXVYcVh1V1W6Zz+N1Z0sLSwOH/AJKzyv2j1O4o3qNHAlfF8fnV+2HLEtZldjhVF4bCww1Hlppcz6tnew6jTppHPwkf2+xsoNOdks1t30Rrlz+TGnO3tou7AliqFPSVSNxdarF8seZ/5Iyxw0E8zWrNa5ST8tf62D8sXIuNecn5LLsLUbaIZCDvoXTJFuSzp2swpxU45kMy542khbUqem8e4qSgqfwMxqTVmbJa0poxtdDFb5YMTHw8W2vLNXQqrK0TXio58PCfWDsY8RVU6EI2s11MV2lb6T8Xg9Rek4DO/wAMV+G1o97nCkrSa9zo5X3SmLYxoFgCUyEAFgWGNANAVYYkClzDEgCih8EJQ6IRoihqXUVTH0wlNh7jRUUMQBFEIEeMjEdTiVFDoI5Po1aiNjEkUNSDNVFDUgYBoMrSCSIWgIQslgig0gUhsUUUojUi1EYolkYtUkFYNRCylZKsSw1xKyhCrEsMyksRQWOngZXw7j6Wc+xqwMrVnHpJDnxWevMbJPksFQjZObAs3Oy6jpclOyOkc7+gwd5tjTOhsWVLDCmWQrJTk4PUtzi4sJpSVmZ5RcXZmWp5JqozVF1NVQzyWhmuvNJsMpIH7blqVomY3fJNSWTxpdlocfBRjTqOct27nSxjtQn7iMLRTdxUnt08O3UTnWlkpL7VuzXCp49K0Vkp9EjAl4lRUV5VrI6lKPKaY6n5qowy6RQazrdRkhiQZXO0tTg9JLKxiVttgXFPcVzUnpquxdTNaSgYzjJaf2CNIzyShL2MVaVqnsb6uuxgr0mtVsc+nTkGk6FWJyayZ1aP3x7mGdO9bL7kdOfbp8KilTcXs0cTE08mJqRXRs9DgY2bOPxClbHVPk3Z4Yt/2c1xFSRslATKJBmsSwxoGwAMqwTKsBSQ2KuVGI2K1CLjEbGJcYjYxAlOI+MQYo0RQRaiMUSRQZUDYpx1DIEePjEdTWgMYjoLlOL6IooNESLsRhIhIpItFBpF2Ii0giBWLSuNVMqW4CMRsYlqI6MSs6FRGKJaiMSKxaFIJIJIKxUBYpoZYjRUKsVYOxLGV0qwdFtVoP3I0Hh6Xi10ui1Yi2+HUhGycur2LteOomrilCeSEM7j5rdAf1FV7U4r5OluOElpji0WkJ8ev/hxZar1etGRnY1laUWIWI9UJINV4Pqa1n60Yms04+4Un2Ft8upFkKeomSHMTJma6QEKeeE11F7SsX4soTeXqBuzLeVlxmsLFUZKlRcuvQLGdF3Ey1tFbR/1FHQwNN5Mz3Z1aXlMGC/jR0IGox2YiykEacqoCSugymCENOLutxkaqqaPSXYqSEyXVb9xrWa0KFvdCakd0XTxHSej6Me3F6MZsTbL5c5UlCVzP4a8e/Xc6coQafQxulJVL+aPsZkb56asFtI53E42xjfdHSwiSz2Vl0MnFYXqU5exu+mL/ZyKkdBEos2OIDpGV1idMFxNcqdheS4VkcSspqdMDIACiMpx1CURlOIBxiNUUVFDFEIuKQ1ApBpBBLcMFLUIoIhEQDzCiMjENRCyHF7QpBWCUS1EIFIuwxRLygCkEkWojFEJaqMRqRcYjVE1GLVKI1RIohpGmbVJBpFpFpFYRIKxZAKsC0GU0AuxVg7FALaG1q8eH4RtOLrT2QuV1BtbnNlFzleTuxPBfLVwuq34kZO8r3b+Tq07HCwb8PGpdJaHbg+UzV/BoYMBhYxaECdOMt1+QymUZpU5R8rkA5TXmVzS0BJGW9KU0xc0XKIu7XuhqyYTld7l2ewz3Laz6ka1zsZfNH2ApR0QzHR54L3LitEKjo4PY3wOdg9DpRNRz6GggUEaYqimWymCBsKkhoDI1GaUSlUko23Q+bTglbUS0TG5d9ijXzxy9SsrWqE1Xk+R1Gqqi90WJ6Oo1sq5l+RWOy1FBrUbBRz67MrFU0oJpdTV9MXNcyVOwGXmNbiKcbGRllAW6djVY4fGfqfhPBZQhisTGVR1I0506UoynSTV80o3uo29m9VpqWS30nXU5m9XHQcQHE8rxX64XjTw/BcNHEOEsrxVZ2o6W8qWs+qvotE1dHM4H9a1cPUxcOKV8TxCUXTjTVChBWfNmd1lVvKtX106mvpcea/zvhnf13/6e8URkYniV/tAnSnSeM4THD0ZTjGc1iXNwi3rKyhrZantcNi8Ji5SjhsTRrShGMpKnUUmlJXi3bo1qu5LzY6/F/I+P5f6XT4oakUojUjLqFIYkWkMSKAUQrBWJYCkiWLsEGXnkg7DfDC8I4vbpKQSiNyBqmE2FKJeUaolqJU0tRGRiGqYxRCaFRGJFqIaRqMVEgkgki7GmVWLsXYsIqxCEAhRZABsDYYU0ABixFLw6mZeSW/szoWKdNVE4PZr/MK5LWScJdYs7FN9e5z5UuTXdGzDO9GHtp/YlVtgMQmmPRY51QIZTCFvYXIYwGGyZIU0aGgI2U7tXRlouKLyLsGQsiOfjKXMnfqBTjaxpxcbqHyKUSWLK1UPPfobo7GCibYPlNM9ejkECgkViqZTLZTBAsBhNiyNRQIQLC1kr3c7diqV4TTQds7bYynFXCnxasmy51I1KLj1BXkAaXQ1rnQNASQ1gtEVncT5ngfpbD8f/wBonFqeNxqr4ajWc3aetSTSeRavyXy+2XZbHv8AjnG8LwDALF4qNaalNU4U6Mc0pyabsr2Wyb1a272R576Qq8N4lwril68cLicZj6uJpqq1CpTvJuErX3V+hvjZLXi/lXjrrni+/ef/AL9vWL6R4DGkqUeG0VFKy3/8nmfqD6Fw8KafCZSpV5u0KU9abfzuj2eMoYrE0KVPDYqNK7XiVEryceuXom+5hxfEOD/TeHnVxWLedLXPVc5y/Df/AIRWPl+D4epl5kn79PhssHxBVPAxkamHr4eo41G5aPXXT/ydj6SwHEqvHaVfg06kMHSrQjiZxnlpOOrlFr75WbSsuXMttz0/C+D0PqnF4r6g4tgpOlXqxlg6FRyS8OK0m0naSl2kto31TOvSrY94+WBwlfBYTDxxawGHpvBSqWthlWu2qsUla6SS6I19vxHl/j/wrz1Pkt8fiR3lEJRPI1eO8To4GeOljcF+ljhMJiov9A1NrETlCKebEKMbZU23K2r7ayj9QcYrcShh6eLwCw8+DriyqzwTjJRbtkaddRTtrdyt+NTP0r6f+bl7JRDSPH4T6wjTxNJ43iGDxGHlhq1atHBYZ1KmGySgk6nhVaqUWpSd9Erb9DLU+ruI4ejgXiMZgIVcVgqOMy/p4QjGNS9op1MVDM1ley7dx9Kv+aPd2JY8bgvqLiuKxvCMDPG4GniuJYSGKglgG4wU4TnZ3xCk7eHJXUbbXtcTwz6m4xjvp7D8Vr4nA0fFwmKxbpU+HzqWhQmoyV3XjdvMmtO+vd9Kn+fmvcEOdwvEYypW4jh8bUoVauExKpKpRpOmpJ0qc/K5S152t+h0HuYsx2l2aweGXkHqKDyo5Y72s3hl5DRkJkLiazqIaiMyFqIkNAohqISQyxcTSkgy7ECLSLsUiyohAiADYlgiBNCQIEKhCiwKsQspgZrczG4fTPH8lONpX6MuOk17hWqA9CID0GellMIplZgGLaGMpkahTQuw1oBhoFiyEAzYlaL5ASG4ryr5KgQFSVjVSZngOgylaEEAmMualYqMBhMBkICQNy2CyNo2xVWVqfyE2Iqu81EJYJaIZDqLQ2l1KGLZgstMAtYvtGCwgSK5/FeDYHjWGhh+IUXVp06iqRSqSg1JJq94tPZs89xX/Z3wivwqrS4Zh44XHJudHESq1JPNy3Unmu01G3W120r7+xIanVnpz7+H4+9+0fLqf0F9SQmowxuBoQnJKpONepUlGPWycUn8XXyeh4R9AcNwbVXiVSfFcQuuIilSW+1PbZrzX1V1Y9e0SxfvXHj+H8PF2QvLqc2v9O4HEYuWKl+qhWlUVVuljK1NKeTJmSjJJPLy3S2OskWjMtnp6OpL7jiUvpbhuHa8GWPpWpxpLw+I4iNoRvljpPZXdl0uwan0hwivWnWqwxtSrUouhOc+IYhylSbu4NuesfbY7xEX7dftn6c/qMHEeC4Hi2X9ZCrK1OdL9uvUpXhO2aLySV08q0fYRS+muHYejCjRq8Rp0oRUYQhxLEqMYrRJJVNEdkhPtf2Xjm3bHGpfTXDsPShSo1OI06dOKjCEOJYlRjFaJJKpojLT+i+B0sOsPToYmFCNOdJUo4+uoqE3ecbZ7Wk0m11tqehKL9uv2n04/UZcDw/D8NjVhhvFbrVPEqSq1p1ZSllUbuU23tFLfoaSyiOkyeI//9k=" />
<canvas id="main" width="860" height="1260" style="width:430px;height:630px;border:1px solid #d3d3d3;">
Your browser does not support the HTML5 canvas tag.</canvas>
<canvas id="ghost" width="860" height="1260" style="width:430px;height:630px;border:1px solid #d3d3d3; opacity: 1; display: none;">
<script>
console.clear();
var dpr = window.devicePixelRatio;
var bgImg = document.getElementById('bg_img');
var cursor = document.getElementById('cursor');
var c = document.getElementById("main");
var ctx = c.getContext("2d");
var c1 = document.getElementById("ghost");
var gctx = c1.getContext("2d");
bgImg.addEventListener('load', function(){
redraw();
});
// var controls = [
// {"x":20,"y":100},
// {"x":102,"y":20},
// // {"x": 146, "y": 97},
// // {"x": 146, "y": 97},
// {"x":102,"y":180},
// {"x":185,"y":19}
// ];
// var points = [
// {"x":20,"y":20},
// {"x":102,"y":100},
// // {"x": 146, "y": 97},
// {"x":185,"y":99}
// ];
//
var controls = [
{"x":172,"y":188},{"x":149,"y":151},
{"x":178,"y":70},{"x":182,"y":38},
{"x":324,"y":72},{"x":238,"y":197},
{"x":349,"y":216},{"x":335,"y":253},
{"x":327,"y":382},{"x":293,"y":414},
{"x":289,"y":430},{"x":319,"y":484},
{"x":318,"y":519},{"x":320,"y":571},
{"x":336,"y":643},{"x":312,"y":600},
{"x":302,"y":600},{"x":302,"y":629},
{"x":292,"y":629},{"x":155,"y":630},
{"x":149,"y":617},{"x":141,"y":608},
{"x":137,"y":588},{"x":145,"y":590},
{"x":128,"y":528},{"x":139,"y":522},
{"x":156,"y":434},{"x":162,"y":444},
{"x":132,"y":375},{"x":148,"y":380},
{"x":121,"y":296},{"x":125,"y":277},
{"x":114,"y":204},{"x":36,"y":231}
];
var points = [
{"x":140,"y":202},{"x":166,"y":90},
{"x":234,"y":42},{"x":303,"y":220},
{"x":336,"y":268},{"x":291,"y":422},
{"x":318,"y":508},{"x":328,"y":607},
{"x":307,"y":600},{"x":297,"y":629},
{"x":150,"y":629},{"x":136,"y":596},
{"x":143,"y":583},{"x":147,"y":468},
{"x":166,"y":413},{"x":134,"y":347},
{"x":118,"y":245},{"x":38,"y":221}
];
var lastX, // 鼠标上一次x坐标
lastY; // 鼠标上一次y坐标
var pX, // 控制点开始x坐标
pY; // 控制点开始y坐标
var controlIndex = undefined,
pointIndex = undefined;
var shouldMove = false;
var hidePoint = false;
var hightlightColor = 'red';
redraw();
// draw(gctx);
c.addEventListener('mousedown', function(eve){
eve.preventDefault();
let x = lastX = eve.offsetX,
y = lastY = eve.offsetY;
controlIndex = getIndex(x, y, controls);
if(controlIndex !== undefined){
// 点击的是控制点
shouldMove = true;
return
}else{
pointIndex = getIndex(x, y, points)
// 点击的是端点
if(pointIndex !== undefined){
shouldMove = true;
return
}
}
});
c.addEventListener('mouseup', function(eve){
console.log('mouseup');
let _isHit = isHit(eve.offsetX, eve.offsetY);
if(_isHit){
if(hidePoint){
hidePoint = false;
redraw();
}
}else{
hidePoint = true;
redraw();
}
});
c.addEventListener('dblclick', function(eve){
eve.preventDefault();
// 添加端点
addPoint(eve.offsetX, eve.offsetY);
hidePoint = false;
// 重新绘制
redraw();
});
c.addEventListener('mousemove', function(eve){
eve.preventDefault();
var x = eve.offsetX,
y = eve.offsetY;
var needRedraw = false;
if(shouldMove && lastX !== undef && lastY !== undef){
var dx = x - lastX,
dy = y - lastY;
lastX = x;
lastY = y;
var undef = undefined;
if(controlIndex !== undef){
moveControl(controlIndex, dx, dy, eve.altKey);
}else if(pointIndex !== undef){
movePoint(pointIndex, dx, dy)
}
needRedraw = true;
}else{
let index = getIndex(x, y, controls);
if(typeof index !== 'number'){
index = getIndex(x, y, points);
}
if(typeof index === 'number'){
c.style.cursor = "url(" + cursor.src + ") 10 4, cell";
}else{
c.style.cursor = 'default';
}
}
if(needRedraw){
redraw();
}
});
c.addEventListener('mouseup', function(eve){
lastX = undefined;
lastY = undefined;
pointIndex = undefined;
controlIndex = undefined;
shouldMove = false;
});
function movePoint(pointIndex, dx, dy){
let ctrlIndexs = [];
ctrlIndexs.push(
pointIndex * 2,
pointIndex * 2 - 1
);
points[pointIndex].x += dx;
points[pointIndex].y += dy;
for(let i = 0, len = ctrlIndexs.length; i < len; i++){
let cIndex = ctrlIndexs[i];
// if(cIndex !== undef && controls[cIndex]){
// controls[cIndex].x += dx;
// controls[cIndex].y += dy;
// }
moveControl(cIndex, dx, dy, true)
}
}
function moveControl(cIndex, dx, dy, lockPairs){
// 当前需要移动的控制点
let ctrlPoint = cIndex !== undefined && controls[cIndex];
if(ctrlPoint){
if(lockPairs !== true){
// 非锁定模式,需要移动端点对应的另一个控制点
// 对应的另一个控制点的下标
let relatedIndex = cIndex % 2 === 0 ? cIndex - 1 : cIndex + 1;
// 对应的控制点
let rcPoint = controls[relatedIndex];
// 对应的端点的下标
let relatedPointIndex = Math.ceil(cIndex / 2);
// 对应的端点
let point = points[relatedPointIndex];
if(rcPoint && point && (ctrlPoint.x + rcPoint.x) / 2 === point.x && (ctrlPoint.y + rcPoint.y) / 2 === point.y){
moveControl(relatedIndex, -dx, -dy, true);
console.log('移动的控制点:', cIndex, '需要移动的kongzhid:', relatedIndex, '对应的点:', relatedPointIndex);
}
}
ctrlPoint.x += dx;
ctrlPoint.y += dy;
}
}
/**
* 绘制主要的曲线
* @param {Object} context Canvas上下文
* @param {Boolean} [drawBgImg=true] 是否绘制背景图
* @return
*/
function draw(context, drawBgImg){
context = context || ctx;
context.clearRect(0, 0, c.width, c.height);
drawBgImg !== false && context.drawImage(bgImg, 0, 0, dpr * bgImg.width, dpr * bgImg.height);
// 曲线
var c1 = controls[0];
var c2 = controls[1];
for(let i = 0, len = points.length; i < len - 1; i++){
let c1 = controls[i * 2],
c2 = controls[i * 2 + 1];
let p1 = points[i],
p2 = points[i + 1];
drawBezierCure(context, p1, c1, c2, p2, hightlightColor, 2);
}
}
function drawControlPoint(context){
context = context || ctx;
for(let i = 0, len = points.length; i < len - 1; i++){
let c1 = controls[i * 2],
c2 = controls[i * 2 + 1];
let p1 = points[i],
p2 = points[i + 1];
// 控制点
drawRect(context, c1, 6, 6);
drawRect(context, c2, 6, 6);
// 控制点到端点的线段
drawLine(context, p1, c1, 'gray');
drawLine(context, p2, c2, 'gray');
// 端点
drawCircle(context, p1, 3);
if(i === len - 2){
drawCircle(ctx, p2, 3);
}
}
}
function drawLine(ctx, p1, p2, color, width){
ctx.beginPath();
ctx.strokeStyle = color || 'black';
ctx.lineWidth = width || 1;
ctx.moveTo(dpr * p1.x, dpr * p1.y);
ctx.lineTo(dpr * p2.x, dpr * p2.y);
ctx.stroke();
ctx.closePath();
}
function drawRect(ctx, p, w, h, color){
ctx.fillStyle = color || "black";
ctx.beginPath();
ctx.rect(dpr * (p.x - w/2), dpr * (p.y - h/2), dpr * w, dpr * h);
ctx.fill();
ctx.closePath();
}
function drawBezierCure(ctx, p1, c1, c2, p2, color, lineWidth){
ctx.strokeStyle = color || "black";
ctx.lineWidth = lineWidth || 1;
ctx.beginPath();
ctx.moveTo(dpr * p1.x, dpr * p1.y);
ctx.bezierCurveTo(dpr * c1.x, dpr * c1.y, dpr * c2.x, dpr * c2.y, dpr * p2.x, dpr * p2.y);
ctx.stroke();
ctx.closePath();
}
function drawCircle(ctx, p, r, color){
ctx.fillStyle = color || "black";
ctx.beginPath();
ctx.arc(dpr * p.x, dpr * p.y, dpr * r, 0, Math.PI * 2);
ctx.fill();
ctx.closePath();
}
/**
* 获取鼠标位置对应的点(控制点/端点)的下标
* @param {Number} mx 鼠标x坐标
* @param {Number} my 鼠标y坐标
* @param {Array} points 控制点/端点数据
* @return {Number}
*/
function getIndex(mx, my, points){
mx *= dpr;
my *= dpr;
for(let i = 0, len = points.length; i < len; i++){
let p = points[i];
if(mx >= dpr * (p.x - 2) && mx <= dpr * (p.x + 2) && my >= dpr * (p.y - 2) && my <= dpr * (p.y + 2)){
return i;
}
};
}
/**
* 添加端点
* @param {Number} x x坐标
* @param {Number} y y坐标
*/
function addPoint(x, y){
let lastPoint = points.slice(-1)[0];
let lastCtrl = controls.slice(-1)[0];
// 添加一个点
points.push({
x: x,
y: y
});
let dx = lastPoint.x - lastCtrl.x;
let dy = lastPoint.y - lastCtrl.y;
// 添加两个控制点
controls.push({
x: lastCtrl.x + dx * 2,
y: lastCtrl.y + dy * 2
});
controls.push({
x: x - dx,
y: y - dy
});
}
/**
* 重新绘制
* @return
*/
function redraw(){
draw();
!hidePoint && drawControlPoint();
}
/**
* 是否碰撞
* @param {Number} mx 鼠标横坐标
* @param {Number} my 鼠标纵坐标
* @return {Boolean}
*/
function isHit(mx, my){
gctx.clearRect(0, 0, c1.width, c1.height);
draw(gctx, false);
var imageData = gctx.getImageData(dpr * mx, dpr * my, 1, 1);
if(imageData.data[3]){
console.log('==>', mx, my);
return true
}
}
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment