diff --git a/images/adapter.svg b/images/adapter.svg new file mode 100644 index 00000000..1a592254 --- /dev/null +++ b/images/adapter.svg @@ -0,0 +1,3 @@ + + +
Tool
Tool
Event
Event
Adapter
Adapter
Message Broker
Message Broker
Consumer
Consumer
Consumer
Consumer
Subscription
Subscription
Subscription
Subscription
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/cdevents.drawio b/images/cdevents.drawio new file mode 100644 index 00000000..019e696c --- /dev/null +++ b/images/cdevents.drawio @@ -0,0 +1 @@ +7V1be9rIsv01edz+dPXlUUbEUYYWwYg48hsWRCDA+BhsJP36s1a1BMJ2LnufZGbPGb3EjZBa1XVdVV103tmdVX71OH6YqfVkunxnGZP8ne2/s6xz08W/vFDoC655pi+kj/OJvmQeLgzn5bS6aFRXn+aT6eboxu16vdzOH44vJuv7+2myPbo2fnxc745v+7peHr/1YZxOX10YJuPl66s388l2Vl01Ty8OX3yYztNZ9epzq1rfalzfXK1kMxtP1rvGJbv7zu48rtdbPVrlnemSvKv5op97/41v94Q9Tu+3P/NA6t3dqcXw6Tn1i/66s41mwc2/qlmex8unasHvrNMl5rvcPIzvSfW2qFhx+j9PJPXy6/p++6+NCMrDDZb9AFlfHr7HKOXfCGKqJwNVej79VcWQ/dTW4/rpfjIloSa+3s3m2+nwYZzw2x3UCtdm29Wy+nqzmG6TWfXh63y57KyX60eZyJ640/OJw5u2j+vFtPHNuXVnn55W9Fd6Ztn7O2vhWnvynqeP22n+TWabexFC9afr1XT7WOCW+oHzSuqV2pun1eddQ4mcyjZmDf05q+4bV3qb7qc+iBaDSrr/hqStV5LuPnMx3xaFAVasH7ezdbq+Hy976/VDxfNsut0WFQvHT9v1sXga/DXJb+j9Az98XU5zjxZJCVdccE7cM9Oxzvf/4rvpfe0GrJNz8+hbR39dy+oc35/a1qlrG6emZTnytu34cVu9xr9brpPFd5QEc9W33q/vp/rK+zkZK6uXyX74tu9R+201nObz7Re+58Q4qz7G+PgvfIZe6At+XhEiH4rGh0/Txzn0YvpYX7uHjujpLLf+HFcSkQ+HueRTPZmW/3Tyygu+0HToyPrpMZl+R8NOK/c8fkyn2x/5nG9aDhhgWmdnR9ZjVc72cbocb+fPx6S+ZSnV7J/Wc2r4/pb116+b6fbYS9b3VK+3z44N13JfGKRmQ/XUdyZCjDieyH4xkebTq4nEuPds+c/t3X5l2W8Z4i+39qYiasWuNZGabZ79QB1/zjHYJ7Z99PWxX7g4uXAvzHP79Mx2Ti/s8/M3XMB4ev41ectAT5Pz6d3XmrBXdra32jO3YbXmdw32523sh7Zz+pO2+A0b+08NqDaOF1HN/knj+FU67b7SaTJ1WH08aG/3cPXN8PPLtX6vti/il22/jl97DXJOmypkfFeF3vb5e403jZPzI4P5z1T+Fyrq+W9RQBcLNeuUolJCx/xzlfD0FZBS082GaYRlXJKzj78S3r5QtBcynZrAMmdvyfQCzm98+nvArHP+Gsy6dZrTBLOnvwvMnr2Rtnwj2s1XkuFdkgNz5HW98d10+Wm9mW/n63tixPV2u141bvCW85RfbOkLLuVxb/Ogc0ua3bj+8HWeU6aX1Rv8yXg7Rk6kPyLheU7fWZc55Gp1Pn0Irdvi0rm7yZ+S8sG5u1o+jUtjPv5wbST++rlnT+xJ4dqqcJ+TVfKsooXbH17o+4ognV6Zm7t7dRGsZsbkg3faKy7wRPI0KdXTnf3xvlcGO+V7z4l9ex/ML63xzWd7sLpwPg2DXeB7qYrSMvADoz8M0tur90Y8NJ/iG3P5afhRxV+Wy2Tu5Xju4dY35tHVe/f2y8evahiA/k9X18vbe8XRh9CY3uTLT3M3u/ugturLdjW+yTf9+8/FXSfNSOvtzfuidzMp4pvrh9sb1/gj2l70VuEmKYxiat0+3F3tTidfPm7+6ISb8Y27jL8E21v74+z2arm8ux9s1Xxx9nVYzW//eP5epB76tvEUW3nZi67PblfLzZ3/YCar3Tqw8oe71edZMjfvk9X7BXjyNOkYTZrMn6EpHIKmaAfeXrt3VyPhSTXz4kBJcHUYf75xHyYfIK37zyU4GSVX77Pb0cXT5y/hElx2VWbMQ18VvSzeqShwcM3R1wZuL+vmYeYZcl9kzFXk4VpqhX7XlvtwrRctyl6mzDBbOLXU3uJOkDnnoPo56VyWk6uLXe8mfL67uiigFZlajUpo2Q7PP9+ubkHn4CLIvHmv/PYzYXQ5C8tF8eKZpzAa7cKs+91nVbmcq/J6dvysfqZnvebnpyyvpPHxw0F6l5XlPKyT1ecV531z3RWPVRmDx91dWCYNHi/yXuaZYRTkex6XiydVJlhDMg8+pDnm3YZR94k87/vdeXC1XMBSvqGxwfOvoXXgQB8s5SujQauraR25e1qz0VM/CkqVqQOtvhJa8ff7tBa/ilbqbrcMo8GBr5EH+lMnzOBpKlr7Q6fsw/OE9GB+9yKYG3jSMft+nPc7QTq+gQ6s3rbSYH7+LUv7MOMKHvurWXF7E2PWN+0W3FlQ86DlI3AnKcJIOMZrJvzhU9/3dpqLC83FwinCbGCSsoraAtRaYRnYP6DWrKjtXCxub25L8HgXf7leB1d4YmHYaug4eFuuhrtCqIHtqlXX7mWJoaLY7vnJU1gOYPfJRnV2u57vbcOO44JPTs/vQjfjjcpwj7/APIPjsdzfhWwdm3oednaQzcjqD3d5OHdyFUH/50djzr9RQ8PAfSVk6ep3jBBxdobqOKBjYIfF0bh+xuplAzcsU+jlwITOlgPYEeRuIPpgHc2xR9rynj/YQYdtBQnw+37H2YVROAPnn5Q/slTG9TTG1Xr68m4PdBvQK6xV+BTYlc80j8fVu6IAtjGAxMAPGQc5aC8wF2iNXfKmMa7WRH6lNu5HNOnCr3pWP0oszK91PAuK43G9rvRJiQ9WpBWyWlih0S0gN9gF5TUgT63D/SPM3TUUZVHCZ5Yj+Jb3M8VxBD/lqx3lpvby2RlcH2zIhLwLyhAydsIoKfudo/GL+/GubFCCByX4CHl50JPYPB7XNIFHfgK9CPC841L7MU8OuRvgnRMej3fVc+BF4oJmg3oTlgpyUxvEKfADcs7i43FFH/gChDIAAnEs+FRY2Y70QBco1xjyh5876P8mHDoFaDMUkAPWZUAXoKcL0BtY8NcbzAO/E5f9A13UvVx8k9hYDCuv6Iogm3JwPK7sjP4Ivj7vDw3ao9gPaDVUCS9RHI2r9xjQ/QX0JbX4HuXHiBujTajtGnMvjsb798i90Jcy2dIfgDYDPC1FvlF3wxhEOqq17KDL0IcYHgmx3h/RB+CvAo0jI/RH7vG4fqZrMF5gjZQ3xumuL3MOTNwLvaOeNcf1c7KOgmsX2spB0e92DfgM2roBWTXHe35DRmafupPRl0G21HFfWYJXylF+PK7e5Qca49AXlgH8WIo5wmvEX+oi/F1Q9kVXVIF7DJFzlJjQf9w/m0FfIMPA4nub41pvVDTAPKkRRulW+92kgI6Uon8l5z4a79eCe3P4IPCAfnHBOJYnmEtlAXQ9oJ6Al8I/2j1sBshwDhssk0JZXVf8g9gWsARlC53Yy15878gMC/pP6JpPvyk+HLqTbhB5YGPwOwd63o4ZyzXie7iJv4QlYrxGyUOJ6c14k2PtuB++BnEDdgB+wN+VH2fgK2SRWNBlYg3EC+pUrQMx6YFPgs7OcZ8vvkTjDz+gvcFWBw2dCei3bMhtAz5Ar4E/PsSOrIU8vwI/5o7oePW3th/Y8wL8ScRfQ/6wY9h9yTV23ZAxrTmueIj3Q9cHsDnIF7YHH4L7OB7g3aPj8d7murimsCbRhdq/EYMAFcRmeDyu6WOMAu9GDtYPW1HkVynxyE/ot5rj/TOYp4DPc+g/oV+OAs7E2FTkeca4dzTeHexhgLgwKmh/2qYToBJgwaNxfS/jk7IlhtTvWHSpz/BhsGtgR8wFeY0a9oD4mKVFyHhJ27rqFsJL2LLEw8P4YAukM1LU11wwXRnQ32CeQHh4PK5pg84JrxNiFwu+FrFP8flCcpij8X7teGbAd/EZ4nTRM0XfrXUP/u/IdzDXMBhvqFPkt9hb6QGXio6W4Emxj6FcC/xWP0KslecX9HOQ7UDrM+PkYd0aN/mpLbYAn/M5SyRmQqfMOOKziFcdoYuxrGnfiF3gk9h3bPRHXWLhXNbTEf9lN2Ro9oU/ePd8Z4kPYTxZPoTwG5gbsR7x9RgrASPAhkn30bjGfsxViEWIE6nPkIv48g50EvhLfOdhXGM5+jzYKhGvQb2CjowMjXXg/yOVH49rjEWsCjmWaqt5GNsVxoIMPMqtOa7fpTED7YTrpR1LHAhg+6o4Hh+wCeInMRn9Bebb0wYZj5zjcf3MK9pow3rtWerueaLHNW56gw8Dvn8nWNdXFc8Xxh4D6GeAQ0Y2+Nl8hjRBF7rO8fgVfZsmfaK3GWx5fjRu4FPirRF4c8QL4mJmJ87x+ICFwT/muRvBwsBe4aIL24C9RwNX4sphfFgXcUgZaOxC2ilH8424M38VdwwlNhlQ93Ji+lBi53LWZ8z0kUcAjzXHDawPzLGwqR+hxkPEm45inM5G1NnmuJG/EDMCHxHjZAPY1KKIC4OYdCc+f+4g70jBU/qxgFgpF2yIOA3bZ0xgXrKD3co6Ya9uHMXE6S5pAC5tjCu+6rjMZ5gDwXcOnEGEPC2DbZW0k+Z4r8sOsT+wK+Ix1x8gb5lk8Df4G2tZIZdWgt29QuciwGRRSp3DNehJ5Jna9oAru136jZK4S2kfUo9rOeo8G7ideQF4aofZ5wzrRQ4DPSmo516h80vqiUed24bE5tSHOXMJz9a5F+iOlpfAdk/ERIIFGuNKhptQfCtrKMSDAXEZdGAyo3+DbKnPxIJln/Z88IWMGawHMPsGJlsQ5/GdNuyi/lvHWFOwJJ8X3gAPZWJHpdRDCvplBdtQDUyDHA2xDXoh+Q3uY/7FeImYDz4WR+PGe4KSfCbuBt+B9SebnuDiZKNxoleGV123L7nRaNMn3vIXZvO9uIbvgFEi2EEEvBO9z6CnoHvEWh4xFnDawtL5TQD5MEYQW6aUJfFmATsUbAV/7ipDMYdHTpVwrYZeDzDeUHA48RpkQAykHI39EVcz+kbWlSCLVdfRcT1ljtMcN3AZ9MVPpB6BHBg0Lblu+MtBAflAB9Oc9kU/DX1hfs28eSuYJKNPB95CDgA73QqmyZgjiu/Zwfa2UovLiGFiySVk7iiQ3JayA550e6KjsaHrGMBT2aiMo4EtOXpG/NkcV/ymbASrxcDZFY2Rp/M/4gngVvgW0N2lDyHv8ReYh/eVo1J8vNY/Oxa8FDjMIUB7Y7x/F+SPPLOgjSBmwO/HfFYwMGnzWP8wpaYCWxJcQ38hto1Yuepagq9Lj7WJ5rjGIawN6JwmEn4W4RXrI8DJjPPgEWwYc8e001xqChlxA3JUX9YLmQC7X+3oZxHzYSuMGSX9TZe6BTtcQOcph4DYq9Ryi/EdcwDIg++GrmHdZf8GNtjhnB4xfHNc01sKZimZ+3HOFP4yteOyy3zXlRqA+ACPMs0lfpWUHXNaxrUBeZ+zfoj1ULbQjdtZn7kXdcNPN83xvj4AnCP1L9gX1gJfJ7k+dQb5ldQmdiJn5AovsC1ylljkoX1kYuK9rsamI7uqMYCeRi2CMmK+IvgzZe63EdwGOwuljkEfMzCafo22onUOGB4azTXC79vUOawH949Y4wDPPeoha1AuZa1rIcTjhs49ylERw+8DQ3IdNn1imDWw55D4ETh5zvqFx2qnMYiw9qHE9lxqRfSzwHbgRcNfB5WsycOANgmcN3Jv5kEaW/kssbnbJLskZVXd/HA5m1ylqewRRalkAH1GS79LTlIrnfBmR8unJUtmHxLxIDqCm7wOyYzEOnEtRwTZ0hPQErVnhHfW1RFKFtkwozY8gaBHjygeKDzOpZoYMZtpjmvUMyDCQvTvMqLAm3VZsbCIKgRt6781gmAUpAbkGvEv4C1HjnAREet4XM9PyUJrOf+cleyw8pDIeCFtZM9ApMuqqpcYOpttjGvETvTH7Fsye/DRv856kmHDU8w5TwIvEm+lUlJ2Tb4X3sXS3hboiBIjapBKxHKmpUmexpvmuH6fZDEaaSHzBqIf7WxBf9liE9JSs9tLaBGrTEQ9O2peo7Josw4uHnMIjwVZK/96JvcjO2Um3hzvNWwong+6IdkxNBlo2OhSBjYRMKIT0Ux5QEmpxShQZdisKBThDbPGEZBT6gjvEZ1Ax0ayOp+elCgQaKpklUu8GKsJUstH1LdDS6rsRAiORt/0SHsvQsSDtXA3QqJ+wcpNLOiImSBoE+TEbIGZHSL3EBZNLycVFvBYe8qctIQjWRvk32V20RzX3seSqn5HKuvwZrA4eFepGJcjB3rZHNdRmTzR1RLxrshC4L0HjJSSCQAp+s1x7YFGWM/ApocMM8k6oEfXG4lepJvrjrw8ZmaHqET91Rl6Pd5HO+qhodGYYgRy49LbSFZIbyXRlR4TqET0tRH94LnC7HqmBLXCu4unaYwrvugdOlarlVRtQ/8zIxWQuVSld7J3A3nC/pkxiy9gRi7ZX0aPqaQS35dIsChlF4HZGVFiuSglavB5eFbYEFETq9GuINYowH20/dTWdjDINeKGXEpWZpSlPTvtDyg2mlxCp5+YoWN9m+Z4Hy24RtCGSMJqAOhK4cFT6iGrU/BVzfGhEqIkg4kl6oOXNqs4eCd4q1h1sKUSiijaiDK53oWTyFtFBtiQIHHojEQ1j1XJZtRkZmax8qX1IyjHUm2lnOiDlSN+ozmu9XdOHnoSwYRWqSLi/SWrQCnvt5uVJ9p5VQ2i/jKTIT9gY6xoxfR7eSOiQ3cGjlSzdezAuyaXQO9EtNApVggb4+od/QrdhLIDIfYB5JSab0Qx460oxrq/5Js5NRxjWAmwpSW1S+TCgkma40Y9A5GHdW1of0gJceVSw08K1qKOxpVH5H6b7L8gPgvWLj9vuN8ke6eCBQbEW0XImM56KnL0xnifozMCsH4k0Q4ROCSWYK7CPWB61sa44Y1zRK4SHpNYx+yLZ03oRR2dfwa2cFbWOjL7kl8v7Con3RErMP+k90DUYy2ZkZE1dHqGUucddf6TiCVCMyh9amWVz424N2HoWiHQwMEL0GNDe6jdxLqQKOvKooUxa/lH48YeKaMaayg6J5D9NvZQLBgFnONxTRt4lo1sreVKUEdf+EcLZ5ROj8YH7awws8/6yAAIA3yOaP1K1/Ab473FMJcpF1Zf7y84rCH1WIMQ78k6aHNcWzVoKunJD3pFj9Ln2rPgaNzYW0N0TSuLDPAez9Z0IvLp2j11wWnURYlZIUfWdYmYgGPrmhRyh7Co6v6Z16xbEkMStQjepgfvyx7dgLVzV7931KgHj8SKwWeps3Avti/4lXuQfG+ic5ps0fQwruzfSjTucn+oFF0puxK1de6xKJp1d9lL4D5TRJ2HVxpJPdxijSXUuX49PtS4Ir3XxrpAX6JAAhsLx8H8Mru7eg+uGXPdUTTS/SnAEbelUzea/d+a6fZNcXUPrWO/aqaz7Ne9dLZ5UrfB//J2uvM32un0D3fYf/gzvwIyT7/xK6DO+n7ztGJP5P6XQHrO3/5LoB+3uzabK81f0yrpuC9+PnDxxu9+/tRWyYv/j7L9t37l9atk657/t8m27nz+ezfE/6CNvfGLkn/rl01/afv7xW9pfz91XjRi/2Tr++s+ess4MRpyOO6ot60/96dK5lu/Qm3budt27radu23nbtu523butp27bedu27nbdu62nbtt527budt27radu23nbtu523butp27bedu27nbdu62nbtt527budt27radu23nbtu523butp27bedu27nbdu62nbtt527budt27t/Yzr0/93R/JLJ7Yr5qC7XfaOh2nJPf1c9tvj7s/5c1/Q6f7jbJ4/xB+u3+7Mbfnzjv9k9o6nZM569u/LVbAf/Gzu7/AgG7f+uW2O+0wnKzrXNRTlZszrt9uP0y6dzZqbRnsWEj4KYVUrfAV1V673Eji8AI9398vrsaAQIut7dF0GxivZe3n93euLN4lS97Nx9nsbW9T1YX5t1qcHq3+mxL42wHADrD3zLevWgCPbTDlhP/smo9XWfh1XV2exOXL1tGk6qBLNzc2Z8Xt19ul3f312Xvy3UR37hlcvW+kIbWm2V2ZznzT1l+H3zQ392uLoq7COL/8HF2d89tmOvlH/4AK4/dP4Z1Y9r+uWpLZr9dA+q8ebVFw6RYwHvgS/kaycH7TMp+gKqyrTlE2JetdrVVukUBfGChBfAHIBqJFKBHnHKbHyF0K2VgP9hKa40kxiweAOYNjVK2snCPLlcqUxc7PEuKGSzfyraNYhJfSPIyN3ImKAjj0jKBpGErhQDCSZa0I0ly8qqVaKtbIaXkt+MWeJ8tH5kUAbaS6ESAHkygeA+3VLgtMzRM2SIt461OtLjVkkorQ0/KYAlbznJdzh1t2ZYiMEi2Ibss8uS6gEGecS3cumSrimdJS9zcMKRlyk9S4V/22ZckJRqlSMSYwKShtJsqN5BCy8hVhceyKhPUVOCV71l3HYOtRzu8j/A6D0fK5DYP3sPSP+DnAvcmAnkCJo9IwiDTKp1RLGyUsZSjR7L9JWVwX6V9KSEneIbbm16h5p6UB3G9DGS7K4Y8PCZSkKG3C5jYUf5SlFuk3EqULQLIUS1UoYs4MXWkkOS/4LYSiyMjrhN24+Wa73wPmy6hb5E8Q5ticgu6A5aCc7yLaRGLMaWi3DuaNm5j6ta82CE9SGO2bBFRYv3SEsGtW9BLXcG8hPV4pm6NvqZlQm7HCeA+PbwPIbGgSgiDnTQ9DsGZTIG6z9BoFtc9QzYChtLMSS3dcUOtx+I5N+tZAoS2hBk1asTSHC2mYMOkbrBQVUOxp5OokptY3FwQcMzS4DbUDRSQAgv0AL8FnmXqXA5SnY4njtZCNtl4hS6v0Qo8WmAaSvlLkjnRYkiv0FoV6EQJHJeybEnPwTLMyMDfXBIkSFyK5UNpNqeW6U2laJHqDawglWYtJI6gb8emEDxjilbJZkvM60+S2rNkVKqUoJ9lXw3+B9Vn0ssNoa4rpaMy3YqvzpQtnzN8zriZhkROvh9wc6mgJvZkk4vlT7FGabLS5axEyk49aSyM9SaTNK4ovenD5FrKtrEhc/pJtdkoc+3EorlJI5tW8IBs+6WFcfNQ5EV6GWMUC/rcEDa1hQSwnurzKqVVwrsuM72BxcYsh6VPlpaMnrYaJpGw4qoBSkp7CbyteBQkRfA2UlbUni2kh5JGqAE9E5NnV3tAbgTLphq+lwYnVyxI+DKQJlPIwpQNuKF4VOjyKNVNDImlvW5aivzY1ObTYtiQSq8Q27IRMvR0M2SBd8lGMBtxnVL0JlrQe8hmG76nh+F9JRNcLTPoYulpfdX8fvF5ooseHdFhJHSDumn9ij/3gE3pHxJcvTfGnUNCltgD/liB94XUGXgliWL01Cq63lRehXroSpl0pSQasOFCe4mEsmbzDe+hPdPzG9QXNRcPyZKjjir+gDKjHTp9emKJdkp0E/oLPtMmBtu+lA67BX9aww04LSfYZ8ez9AYaPRV5uwDvWPaL3UreVmjtpCmUhZqKZiu8UtK4rKTkz/Kl1gWsQze1RizCsDGMRQXZGNYRsoS3rXRYyp7RwtF2iuiK97F0yMij9WtkS9EKclJ6Y8mRxoKIEUSxeQH0MHmnL2LTsoKNe4yIiJqMaog2Q/EXLvgkeiXRTZr5Aq4ll8aZumV+IT+xgQ9iw8ju+VZ+8JHodnmiOox+ASI/dc5PXvw3Lxdndb7cTKxPX4Nyyzmxfhcsf/2fv7SwvIXlLSxvYXkLy1tY3sLyFpa3sLyF5f9vYbl5dnq82/XW4UXma0huOifmb8PkZ+0hKD99CMqPD8755xyC8nKiV/+b7TeOPYG+jIvGbQ+8YfPzBNvVuUE/Tdfx/RhoCn7pGSz17lab2baZbZvZtpltm9m2mW2b2baZbZvZtpntPyGzfb3hZJ+endjW6x2nixP74o1Np9MT53e1c9ar+XtnuPl8qxNY59StPsd1zorxIYHlh6Lx4dP0cQ5GTh/3Ge73c+W/9OBPnTb98qTXPndPzBfHdP5s4vvLUsTf2FX8Dzsm2raORfnXHyVsvdVR/PfJ/9szWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWNszWP+GZ7DaFy86d/8bzmC1nN/XLfkPPKLzZcfk7zyiEx8f12T4oXsWHJqp9WTKO/4X7V1bV+La0v01/bh75GrLIwpq+pDQSKId3zBgSADxE5Akv/7MWSuBRO3dfc5u9z7fGHlpi5DLWnWZNatS2p/M81V2+Tx5mrvr6Wz5ydCm2Sez98kwTnUb//JArg7Y+hd1IH5OpuqQfjwwTopZeVArj+6S6WzTOHG7Xi+3yVPzYLR+fJxF28axyfPzet887WG9bD71aRLP3hwYR5Pl26O3yXQ7L4/qJ53jF1ezJJ6Xjz41yv2tJtXJ5U4288l0va8dMvufzPPn9XqrpFV2PltSd5Ve1HUXP/j2sLDn2eP2Vy64OJ38YWvxt9V5ZPk3X+OLp28Xf5R3eZksd+WGPxknS9zvbPM0eeSqt3mpipP/23GpZw/rx+0fGzFUFycY5hNsfXb8HlLMnz7MVN0Mq1L3U1+VCjnc2nhe7x6nMy5Ux9f7ebKdjZ8mEb/dw61wbL5dLcuvN4vZNpqXHx6S5fJ8vVw/y43MqT07nVo8afu8Xsxq35wa9+bJSbn+0s8M83BmZVzjsLyX2fN2lv1Q2frBhHD92Xo12z7nOKW8wLBLvy/dXj8pvWBfcyKrPGde858v5XmT0m/jw62PpoVQWvc/sLTxxtL9F27mtSlmU/h/+XH9vJ2v4/XjZNk/Hj07GkvDp+M5g/X6qbRKOttu81LJk9123TRgzQI6LYLIeOKHh+Us6zJm6QOlnqzP9hfdMk4P/+K72WMFFMbnU73xraW+rqx5iu9PTOPENrUT3TAsedp28rwtH9O7X66jxZ+4Ee5Vnfq4fpypIxcJVS+7l5v99Gl/ttofO6oyDe3x504I8613z9HsT4xvlcg5eY5n25/BwQ+d+g/tMxbeaTj2H2bpsM+z5WSbvDTX+p4Xy+2h1EleO+FpnTxuN7Wnf+OB46PN6jHlY43TV2D3n50PQa3g1dXVctYPD5vZ9k3MHVTy34eh+V8E3Hvx8duDED71nH/n/T7rXw4HQhyA2bUTqzrSy8pnqk95/dO32XMCBc2ey4O/FsTmZ9NsfN2M4c7njt3RT82TL6Z10jFPT98J18ns9CF6L5hOotPZ/cM/E0wn7wfTLwfKX4J764eJnYb/lcSud36Q2LvTyRNtXN7v/vmY1g/ZXj3ko7P9w8PsJHrX7tMvnXtNe+XmnY/J7UbnvdzeeZvbTz8qt9v/q6ByAIBXWds032btLNkq+LFO7PJzWIEL5CPu8ENe+/AadWrYoWufTxvQ89Hg8VNQOP2LoPB+urOxUV1vuqWlv3I3BWzllb8/s528QRx3ttmwvDK0M2r2+XcCwStHe2XTmQ4G9+U9m3aQRiYnvwsImiTDOn0LBFZ1Th0ITj4KCL68g/qvdF7FfbKSyveMGkhQ7w4m97Plt/Um2SbrRzLj9Xa7XtVO6C6TmF9siQVncnl386RqbobdpPrwkGS06Vn5hN50sp0gpaiPKARf4k/GWQa7GuffrjzjLj+z7m+zXVQ8WfeXy92k0JLJ1bUW9dYvA3NqTnPbdHP7JVpFL66/sIfjjjovd+LZpb65f3Q7zmquTa+6J4O8gyui3bRwd/fm18dB4ezdXvclMu8eneTMmNzemKNVx/o2dvZOrxu7flw4PUcbjp347vJCC8f6LrzVl9/GX93w+3IZJd0M1z3d9bTEv7yw775/fXDHDtb/7fJ6effoUrrytNlttvyW2On9lbt1v29Xk9tsM3y8ye/P45Rrvbu9yAe30zy8vX66u7W1f/nbzmDlbaJcy2fG3dP95f5k+v3r5l/n3mZyay/D7872zvw6v7tcLu8fR1s3WXx5GJf3N39+/4HvPg1NbRcaWTHwr7/crZab+96THq32a8fInu5XN/Mo0R+j1cUCOtlNz7X6mvRfWZM3xpr8PXR7bd9fBqKT8s6L40qcy6N8c2s/Ta9grcebApr0o8uL9C7o7G6+e0to2XZTLfF6bj5Iw73rOxaOWerYyB6k/cxLu5qc52uJ63dxLDa8Xt+U83Bs4C+KQerqXrqwKqu9px0ntU6x6pfo/KyYXnb2g1vv5f6yk8MrUncVFPCyPa5/uVvdYZ2jjpN2k0Hx42s8/2zuFYv81TU7zw/2Xtr/02vdYpm4xfW8ea26ZmC81ee3NCut8fXqaL2zMnKe1tHqZsX7vrvvUsduEULH/b1XRDUdL7JB2tU938kOOi4WO7eIsIcoca7iDPfden5/R50Pe/3EuVwuECk/8Fjn5fesdWTBHwy352q1tdpqrYF9WGsa7Ia+U7ipe1xrz5W14uefrzX/XWul7/YLzx8d9ep3sf7Y8lIgTbnW4dgqhkAejwjW63ecRMOVlj7shdnw3Iknt/CB1ftR6iSnP4q0qzl38DxczfO72xB3fTduoZ0FPQ9eHkA7Ue75ojEe04GHu2Gvu1daXCgt5lbupSOdKytXm2O1hlc45k9Wq5erPe8s7m7vCuh4H36/XjuXuGKhme7YsvC0zB3vc1kNYtdd9c1BGmmuH5qDXrTzihHiPtq45/v9oNfdeueWDT1Zg14fvhlu3BTn9Ba4z6gpy/l92NYy6efe+R62CYzheJ95iZW5Pvw/aci8/8YdaxrOK2BLWz0jQMbZa+65hXWMTC9vyNU1xiAd2V4Rwy9HOny2GCGOYHcN2Qf7qMtdri0b9EZ7+LDpwgL8fnhu7T3fm0PzO7cXGG7K/dTkcj9DeXYX69bgV9ir6MkxS8zUm3L5LN9BbIxgMehDZCfD2nPcC2sNbeqmJpd7or5iE+cjm/SBq11j6EcG7q98PHXyplztK965gsEu1wpbLQxP6+ewG+KC9hpRp8bx/AD37msubVEAM4sA2HIxdyn7wKmeu6fd3IN99hr3hxjSYe+cNoSNLc+PiuF5Q351Pp6VjgrooIAeYa8u/CTUm3K1JuioF8EvHFxv2fR+3CeD3TXozvKa8r68DrqIbKxZo994hQu7uRvkKegDdk7DplyuD3oBQxmBgVgGMBVRtud64Au0awj7A+eO/r/xxlaOtWkumAP2pcEX4KcLrNcxgNcb3Ae4ExbD47roe5lgk8RYiCgv1+XDNsWoKZdxRjwC1mfDscZ4lPjBWjW3AErkDbl8jgbfX8BfYoPPcXsh8kaw8VRc496Lhnx4jpwLfymiLfEAa9Og00Ls6/c3zEFcR7mXPXwZ/hACkZDrewExAD9drDHQvF5gN+Xqmr7GfIE90t6Q4/1Q7jnScS78jn5Wl6vrZB859y5rK0b5sN/XgBmMdQ22qssHfcNG+pC+kxLLYFv6eM81hK8UQdaUy2f1HMVxiIWFAxyLcQ/vGvmXvgi8c4qh+Iqb4xxN7OxHOvwf58/n8BfY0DH43Lpc+Y3rj3CfWPP8eKtwN8rhI4X4X8F7N+TDXnBuBgyCDoiLC+axLMK93NSBrzv0E+hS9Me4R8yAGSaIwSLKXaNvCz5IbIFL0LbwiYPtBXsD3cuJn/C1HnFTMBy+E2+QeRBjwJ3jet7PGcs18ru3Cb97BXK8Ysljyen1fJNh7zgfWIO8gTiAPoB3xdc59ApbRAZ8mVwD+YI+VflAyPUAk+CzCc7rCZYo/tFzGG+I1VHNZxzilgm7baAH+DX4x1VoyV6o80voI7HEx8ufVfwgnhfQTyR4DfsjjhH3BffYtz3mtLpc6hDPh6+PEHOwL2IPGILzKI/w7KApH2Kuj2Mu9iS+UOEbOQhYQah7TblaH3MUdBdY2D9ixaW+CslHvYi4VZcP1+A+OTDPIn7CvywXPBOy7lLnKfNeQ94f42GEvBDkjD8V0xFYCbhgQ67OZX5yTckh1TMWffozMAxxDe6Ie8FeQS0ekB/TOPeYLxlbl/1cdIlYlnx4lI+xwHX6Lv01E05XOMQb3McRHTblam3wOdF1RO5iAGuR+1xen0sN05APe8c1Iz6L15Cni5+5xG7le8C/Bnaw1tCYb+hT1LfEW9EFLxUfLaCT/JBDuRfg1tBHrpXrF8Q52Hak/Jl58rhvxZt6sSmxAMy5SSPJmfApPfR5LfLVuayLuawe38hd0JPEd6gNgz65cCb7ORf8Mms21IeiHzw72RuCIcwnyycPuIF7I9cjvza5EjgCYpjrbsgV92OtQi5Cnkh/hl0Ey8/hk+Bfgp1HueJyxDzEKhmvRr+CjwSa4jrAf9/NmnLFschVYcfC3SodhmbJsWCDLu1Wl6tnKc7AOOF+GceSBxzEvps35SM3Qf4kJyNe4H6HtcHGgdWUq2verI0xrPaexvZBJ0queNM7ehjx+Xvhuj231PlCO3AAdQ14SGBCn/VruCb4Qt9qym/Wt6mvT/w2RSwnDbnGT8m3AuimoQvyYlYnVlM+cmHoj3XuRrgwuJe36CM2EO/+yJa8cpSP+yIPKRzFXbh22lF/J+8kb/KO5kpMOvS9jJzek9y5nA+ZM3uoI8DH6nKN64NzLEz6h6f4EPmm5TJPpwF9ti7X6hdyRvAjcpx0hJha5GGukZPuBfMTC3VHDJ0SxxxypUy4IfI0Yp85gXXJHnEr+0S82qEfkqfbXAN4aU0u9aryMq9hDQTsHFkjH3VaitgqGCd1+eDLFrk/uCvyMffvoG6ZpsAb/AyVrVBLu8Ldu7mqRcDJ/Jg+h2PwE7+rq9gDr+z3iRsFeZerMKSSKzuqOhu8nXUBdGp66U2K/aKGgZ/k9PNurupL+kmXPrf1yM3pDwlria6pai+s21+egdvtyImEC9Tk0oYbT7CVPRTyQYe8DD4wnRPfYFv6M7lgMWQ8H7GQOYP9AFbf4GQL8jw+00RcVD+rHKsLl+T1ohvwoVTiqJB+SE5cdhEbbo3ToEZDboNfSH2D81h/MV8i50OPeUOuPccpqGfybugdXH+6GQgvjjaKJ3YL77JvD6U2CjZD8q3eQq8/F8fwHTiKjzjwwXf8ixR+inUH7OWRY4GnLQxV3ziwD3MEuWVMW5Jv5ohD4VbAc9vVXNbwqKki7lVT+wHHGwsPJ1+DDciBXEtxf+TVlNjIvhJssepbKq/HrHHqco2XwV96kfQjUANjTUvuG3g5ymEf+GCcMb6I0/AX1tesm7fCSVJiOvgWagDE6VY4TcoaUbBnj9jbSi8uJYcJpZaQe/uO1La0HfikPRAfDTXVxwCfSoMi9Eem1Ogp+WddLvVN2whXC8GzyzX6XVX/kU+AtwJbsO4+MYS6x09wHp5XBIVgvPI/MxS+5FisIbD2mnx4FuyPOjNnjCBnAPdDXiscmGvrsv+hS08FsSS8hnghsY1cueobwq+LLnsTdbniIewNqJrGF33m3iX7I+DJzPPQEWIY9w4Zp5n0FFLyBtSoPdkvbALufrknziLnI1aYMwriTZ++hThcwOdpB4fcq1B2C/EdawDYg8+Gr2HfxfAWMXjOe3bJ4etytd5COEvB2o/3jIGXsRkWfda7tvQABAO6tGkm+aug7VjTMq+NqPuM/UPsh7aFb9zNh6y96Bu9eFOXD/0B8BzpfyG+sBdgndT69BnUV9Kb2IudUSu84raoWUKxh8LISMdzbcVNA7PsMWA9tV4EbcR6RfhnzNpvI7wNceZJH4MYM9LquMZYUT4HDg+P5h6B+yZ9DvvB+QF7HNB5l37IHpRNW6teCPm4pmqPIshD4D44JPdhEhO9tMY9x+SP4MkJ+xdddju1kY+9jyW3Z9IrIs6C20EXNbx2SltThw5jEjwvsG8TJw6NbB6ZfNskb0mKsrt5dTafXsaxvCPyY6kAhsyWvT41Sa+0vNs9I5+RLJW9R8aD7Aht8jgsE0h04liGDLIlEjASFTICnVV3hJZFNcysDSQQ9tgliwcLDzPpJvqsZupyxXpGZFjI/n1mFKBZnx0Lg6xC2Lb6WTEIZkF6QKYY/wJoGViiRWSsplzdn5aF1/L+CTvZXomQqHhhbVTPYKTLsqsXaaqarckVYyf7Y/UtlT302LtOB1JhAykS3icCioRb6ZQUfZ3PBboYCm3BjmgxsgbpRCznyprUabipy9XzpIpRTAuVNxh9sDeF/aWLjcdITe/O4EXsMpH17Ol5tc6iyT64IOYYiAVbu73ruZyP6pSVeF0+eNhYkA++IdUxPBlsWOvTBiYZMLIT2UxxZEmxwSxQVtjsKOTeLavGAMwptkT3yE5Yx0aquh6RlCwQbKpgl0tQjN0E6eUj65ueIV12MgRLsW8i0gFFyHiwF76NkKyfs3MTCjtiJYi1CXNitcDKDpl7jIgmykmHBTpWSJlxLV4ge4P9+6wu6nKFPoZ09c+lsw40Q8QBXaVjXAQW/LIuV1mZOlHdEkFXVCFA7xEzpVQCYIq9ulwhUID9jEwipJdK1QE/ut5I9uK6uW+/m4Ws7JCV6L+qQq/kQ7ajH2qKjbnMQHZYdDdSFRKtJLsSMcFKxF9r2Q/I5aXXc1dYK9BdkKYml3pRb+jYrXala+v1bpipwMylK72XdzewJ+KfFbNgAStyqf5SIqYrnfihZIJFIW8RWJ2RJRaLQrIGrweyIobImtiNtoWx+g7OY+zHpoqDUaYYN+xSsDPjGgrZGX9gsf70DD69Y4WO/W3q8iFbcI9YGzIJuwFYVwwEj+mH7E4Bq+rysRPiSgUTStaHLk12cfBM6NZl18GUTiiyaC3LZOotnGTeMjMghoSJw2ckq3XZlaxnTVZmBjtfyj+cYiLdVtqJGOxaght1ufLfhDrsSgaTtUoXEc8v2AWKeb5Z7zwxzstuEP2XlQz1gRhjRysk7mW1jA7fGVnSzVa5A8+anoG9k9HCp9ghrMnlM4Ylu/HkDYTEB5hTrL+TxbT3shj7/lJvZvRwyIgScEtDepeohYWT1OVaPwOZh31teL9HC3Hn0sOPcvaiGnKJiHzfJu9fkJ+Faxc3G75vknenwgVG5Fu5x5zOfipq9Jp8qNGZAdg/kmyHDOyRS7BW4TtgImtNrqFxhsxVADHJdfShIGtEFLVU/emYolnZa6APpb5emGVNuidXYP1J9EDWYy+ZmZE9dCJDoeqOqv6JJBLhGbQ+vbKs5wK+m9BUrxBs4IgCRGx4D72bXBcWZV9ZvDBkL78h196RMquxh6JqAnnfxhmKBbOA1ZSrtUFnaWAqL3eFdQxFf4xwZum4IR+9s+TMPfZHRmAY0LPP6HdVD78mHyKGtUyxMIbq/YLFHtKAPQhBT/ZB63IV1VhTQSQ/+hURZci9p05Drr1bQ3aNy4h08JyuqdaJzKd69/QFq9YXJWeFHdnXJWMCj616UqgdvLzs+6fdet+SHJKsRfg2EXwo7+hG7J3b6rlBrR8cSBRDz9Jn4bvYofBXvoPkcyNV06SLOsLY8v5WsnGf74cK8ZWiL1lb1R6LvN53l3cJfM/k0+eBSoH0ww32WDxV61fyscflq3dt7AsMJQtEiDFv4iRn6f3lBbSmJWqiKFDzKeARd4VVDZr9tWE603o1TKdbb4bpTPPtLJ1lfe580DTd6V+foT75wQz1+fpxs1sdh6j/tpHpX5h2rc9W6r9nUtJ6NSn57si08XdOSnZa2/4m29qn/2u2rQaf/3/Pw/9kir32+zp2/bd19J/8os4/Ov3e+ZDp95M3qePXJt/fjtEb2metZofmQL1pvLqt2u6HDdTr7/1ybjvN3U5zt9Pc7TR3O83dTnO309ztNHc7zd1Oc7fT3O00dzvN3U5zt9Pc7TR3O83dTnO309ztNHc7zd1Oc7fT3O00dzvN3U5zt9Pc7TR3O83dTnO309ztNHc7zd1Oc7fT3O00dzvN3U5zf+A0t200R/JM2/6s/9Pz3Prb/wOhHahrB+ragbp2oK4dqGsH6tqBunagrh2oawfq2oG6dqCuHahrB+ragbp2oK4dqGsH6tqBunagrh2oawfq2oG6dqCuHahrB+ragbp2oK4dqGsH6tqBunagrh2oawfq2oG6dqCuHahrB+o+dKDuxP5fHKgzP+6vaI5395voOXmSebu/+y9p/sL/H/83/JXU9/4E7t/8lzSt1sAf+KdSP9LA+Pi8psKPf5ISGpq76+mMZ/wb7V1bd9pY0v01eewsXR3ziC1iK4NEMFIc+Q0LLCTA+DMQJP362buOBJLtdDLTSfd8a6mzVlwIXc6py65dpYr7nXm5zq+ep08LbzObr94Z2ix/ZzrvDONct/E3DxTqgK1/UAeS53SmDumnA5O0nFcHteroPp3Nt60Td5vNapc+tQ/Gm8fHebxrHZs+P28O7dMeNqv2U5+myfzVgUk8Xb0+epvOdovqqH7WO31xPU+TRfXoc6Pa33pan1ztZLuYzjaHxiFz8M68fN5sdkpa55fzFXVX60Vd9/E73x4X9jx/3P3MBaPe4WY8u3eX15NpOfT/0LQvxR/VXb5NV/tqw++MsxXud7F9mj5y1buiUsXZ/+251IuHzePuj60Yqo8TDPMJtr44fQ8p4c8AZqpvhlWp+6mvKoUcb208b/aPszkXquPrwyLdzSdP05jfHuBWOLbYrVfV19vlfBcvqg8P6Wp1uVltnuVG5syen88snrR73iznjW/OjXvz7Kxaf+Vnhnk8szaucVzet/nzbp5/V9n60YRw/flmPd89FzilusCwK7+v3F4/q7zg0HAiqzpn0fCfD9V508pvk+OtT6aFUFn3P7C0+crSt1Oq8aUp5jP4f/Vx87xbbJLN43Q1OB29OBlLw6fTOcPN5qmySjbf7YpKydP9btM2YMMCOi2CyHjih4fVPO8zZukDlZ6s9/YH3TLOj3/ju/ljDRTG+3O99a2lvq6teY7vz0zjzDa1M90wrLPXHvNg889bHnMm/+Gb2XS7ODqnUhi19OeuAaVu9s/x/E9MYlR4Nn1O5rsfBel3Xe0P7T0232u52x9m5UbP89V0l35rr/Ut35LbQ/nTonHC0yZ93G0bT//MA6dHm/Vjqsca5y8g6D87H4JawYur6+VsHh62UNTLSDiq5L8PDvu/CIO3vPaXhwZ86rn4yvu91z8cD0Q4ALNrZ1Z9xMmrZ6pPRfPT5/lzCgXNn6uDPxda5nvTbH3djqze+57d08/Nsw+mddYzz8/fwOLp/PwhfjOy4vP5/cM/E0zW28H004Hyl0DY+G66peF/Jt3qve+kW0Fz2Jgs4CP+/vy8me1jHjimYPWM352CHx7mZ/GbZp996N1r2gsv7/2ehGv03kq4vdcJ9/x3JVxdf6Xj/xFQOQLAi1xqmq9zaZ7uFPxYZ3b1OarBBfIJd/ihaHx4iToN7NC19+ct6Pnd4PFDUDj/i6DwdrqzsVFdb/ulpb/wNwVs1ZW/PrNZrxDHm2+3LHoM7YKaff6VSPDC0V7YdK6Dnn94y6Y9pJHp2a9CgjbJsM5fI4FVn9NEgrPfhQQf3kD9Fzqv4z5dSz16QQ2kqEKH0/v56vNmm+7SzSO+v9/sdpt144T+Kk34xY5YcCGX97dPqhJm2E3rDw9pTpteVE9wZtPdFClFfUR59i15Z1zksKtx+fnaN+6KC+v+Nt/H5ZN1f7XaT0stnV7faLGz+TY0Z+assE2vsL/F6/ibFyzt0aSnzivcZH6lb+8fvZ67Xmiz6/7ZsOjhing/K739vfnpcVi6B8/pf4vNu0c3vTCmt1/M8bpnfZ64B9fpJ16QlK7jaqOJm9xdfdSiib6PbvXV58knL/q6WsVpP8d1T3eOlgZXH+27r58evImL9X++ulndPXqUrn1tfpuvPqd2dn/t7byvu/X0Nt+OHr8U95dJxrXe3X4shrezIrq9ebq7tbV/BbvecO1v40Ir5sbd0/3V4Wz29dP2X5f+dnprr6Kv7u7O/LS4u1qt7h/HOy9dfniYVPc3f3z/YeA9jUxtHxl5OQxuPtytV9t750mP14eNa+RP9+svizjVH+P1xyV0sp9das016T+zJn+CNQUH6PbGvr8KRSfVnZenlbhXJ/nLrf00u4a1Hr+U0GQQX33M7sLe/stXfwUt216mpb7jFcMsOniBa+GYpY6N7WE2yP2sr8l5gZZ6QR/HEsN3Bqach2PDYFkOM0/3s6VVW+0t7biZdY5Vf4svL8rZVe8wvPW/3V/1CnhF5q3DEl52wPXf7tZ3WOe452b9dFh+/xo/uFj45bJ4cc3eD8KDnw3+9FqvXKVeebNoX6uuGRqv9fk5yytrfLo+We+iipynTbz+suZ939x3pWOvjKDjwcEv44aOl/kw6+t+4OZHHZfLvVfG2EOcutdJjvvu/GCwp85HziB1r1ZLRMp3PNb99mvWOrbgD4bneFpjrbZaa2gf15qF+1Hgll7mndbqeLJW/PzztRa/aq303UHpB+OTXoM+1p9YfgakqdY6mljlCMjjE8GcQc9NNVxp6SMnykeXbjK9hQ+s345SNz3/XqRdL7iD59F6UdzdRrjrm3EL7SzpefDyENqJCz8QjfGYDjzcj5z+QWlxqbRYWIWfjXWurFptgdUafumaP1itXq32sre8u70roeND9PVm417hiqVmehPLwtNyb3IoZDWIXW89MIdZrHlBZA6deO+XY8R9vPUuD4eh09/5l5YNPVlDZwDfjLZehnOcJe4zbsty/gC2tUz6uX95gG1CYzQ55H5q5V4A/09bMu+/9SaahvNK2NJWzwiRcQ6ad2lhHWPTL1pyfY0xzMa2Xybwy7EOny3HiCPYXUP2wT6acp9ry4fO+AAfNj1YgN+PLq2DH/gLaH7vOaHhZdxPQ672M5Jn97FuDX6FvYqeXLPCTL0tV88KXMTGGBaDPkR2c6y9wL2w1simbhpytSfqKzFxPrLJALjaN0ZBbOD+ysczt2jL9b6SvScY7HGtsNXS8LVBAbshLmivMXVqnM4Pce+B5tEWJTCzDIEtHxce5QA45XgH2s072uegcX+IIR32LmhD2Njyg7gcXbbkF+fjWdm4hA5K6BH26sNPIr0t12uCjpwYfuHiesum9+M+OeyuQXeW35YP1XXQRWxjzRr9xi892M3bIk9BH7BzFrXlan3QCxjKGAzEMoCpiLID1wNfoF0j2B84d/L/rT+xCqxN88AcsC8NvgA/XWK9rgG83uI+wJ2oHJ3WRd/LBZskxiJEebWuALYpx225ijPiEbA+H000xqPED9aqeSVQomjJ1XM0+P4S/pIYfI7nRMgb4dZXcY17L1vy8TlyLvyljHfEA6xNg05LsW8w2DIHcR3VXg7wZfhDBERCrndCYgB+elhjqPlOaLfl+pqBxnyBPdLekJPDSO451nEu/I5+1pTr62QfBfcuayvHxWgw0IAZjHUNtmrKR33DRvqIvpMRy2Bb+rjjGcJXyjBvy9WzHFdxHGJh6QLHEtzDv0H+pS8C79xyJL7iFThHEzsHsQ7/x/mLBfwFNnQNPrcp137jBWPcJ9H8INkp3I0L+Egp/lfy3i35uBecmwODoAPi4pJ5LI9xLy9z4esu/QS6FP0x7hEzYIYpYrCMC88Y2IIPElvgErQtfOJoe8HeUPcL4id8zSFuCobDd5ItMg9iDLhzWs/bOWO1QX73t9FXv0SOVyx5Ijm9mW9y7B3nA2uQNxAH0Afwrvy0gF5hi9iAL5NrIF/Qp2ofiLgeYBJ8NsV5jmCJ4h+Oy3hDrI4bPuMSt0zYbQs9wK/BP64jS/ZCnV9BH6klPl79rOMH8byEfmLBa9gfcYy4L7nHge0zpzXlSod4Pnx9jJiDfRF7wBCcR3mMZ4dt+RhzAxzzsCfxhRrfyEHACiLdb8v1+pijoLvQwv4RKx71VUo+cmLiVlM+XoP7FMA8i/gJ/7I88EzIukedZ8x7Lflwiocx8kJYMP5UTMdgJeCCLbk+l/nJMyWH1M9YDujPwDDENbgj7gV7hY14QH7MksJnvmRsXQ0K0SViWfLhST7FAtcZePTXXDhd6RJvcB9XdNiW67XB50TXMbmLAaxF7vN4fSE1TEs+7h3XjPksXkOeLn7mEbuV7wH/WtjBWkNjvqFPUd8Sb2UfvFR8tIROimMO5V6AW6MAuVauXxLnYNux8mfmydO+FW9yElNiAZjzJYslZ8Kn9CjgtchXl7Iu5rJmfCN3QU8S35E2Cgfkwrns51Lwy2zYUB+JfvDs9GAIhjCfrJ584AbujVyP/NrmSuAIiGGuuyXX3I+1CrkIeSL9GXYRLL+ET4J/CXae5JrLEfMQq2S8Gv0KPhJqiusA/wMvb8s1xyJXhR1Lb6d0GJkVx4IN+rRbU66fpTgD44T7ZRxLHnAR+17Rlk/cBPmTnIx4gfsd1wYbh1Zbrq95tTbGsNp7lthHnSi55k1v6GHM5x+E6zpepfOlduQA6hrwkNCEPpvXcE3whYHVll+tb9tcn/hthlhOW3KDn5JvhdBNSxfkxaxOrLZ84sLQH+vcrXBhcC9/OUBsIN6DsS155SSf9kUeUrqKu3DttKP+Rt5JX+UdzZOYdOl7OTm9L7lztRgxZzqoI8DHmnKD64NzLE36h6/4EPmm5TFPZyF9tik36hdyRvAjcpxsjJhaFlGhkZMeBPNTC3VHAp0Sx1xypVy4IfI0Yp85gXXJAXEr+0S82lEQkafbXAN4aUOu9KryMq9hDQTsHFvjAHVahtgqGSdN+ejLFrk/uCvyMffvom6ZZcAb/IyUrVBLe8Ld+4WqRcDJgoQ+h2Pwk6Cvq9gDrxwMiBsleZenMKSWazuqOhu8nXUBdGr62ZcM+0UNAz8p6Of9QtWX9JM+fW7nk5vTH1LWEn1T1V5Yd7C6ALfbkxMJF2jIlQ23vmAreyjkgy55GXxgtiC+wbb0Z3LBcsR4PmEhcwb7Aay+wcmW5Hl8pom4qH/WOVYXLsnrRTfgQ5nEUSn9kIK47CE2vAanQY2G3Aa/kPoG57H+Yr5Ezocei5bceI5bUs/k3dA7uP5sOxReHG8VT+yX/tXAHkltFG5H5FvOUm8+F8fwHThKgDgIwHeCjxn8FOsO2csjxwJPWxqqvnFhH+YIcsuEtiTfLBCHwq2A57aneazhUVPF3Kum9gOONxEeTr4GG5ADeZbi/sirGbGRfSXYYj2wVF5PWOM05QYvg784sfQjUANjTSvuG3g5LmAf+GCSM76I0/AX1tesm3fCSTJiOvgWagDE6U44TcYaUbDngNjbSS8uI4eJpJaQeweu1La0HfikPRQfjTTVxwCfysIyCsam1OgZ+WdTrvRN2whXi8CzqzUGfVX/kU+AtwJbsO4BMYS6x09wHp5XhqVgvPI/MxK+5FqsIbD2hnx8FuyPOrNgjCBnAPcjXiscmGvrs/+hS08FsSS8hnghsY1cuR4Ywq/LPnsTTbnmIewNqJomEH0W/hX7I+DJzPPQEWIY944Yp7n0FDLyBtSojuwXNgF3vzoQZ5HzESvMGSXxZkDfQhwu4fO0g0vuVSq7RfiONQDswWfD17DvcnSLGLzkPfvk8E25Xm8pnKVk7cd7JsDLxIzKAetdW3oAggF92jSX/FXSdqxpmdfG1H3O/iH2Q9vCN+4WI9Ze9A0n2TblY38APEf6X4gv7AVYJ7U+fQb1lfQmDmJn1AovuC1qlkjsoTAy1vFcW3HT0Kx6DFhPoxdBG7FeEf6ZsPbbCm9DnPnSxyDGjLUmrjFWlM+Bw8OjuUfgvkmfw35wfsgeB3Tepx+yB2XT1qoXQj6uqdqjDIsIuA8OyX2YxEQ/a3DPCfkjeHLK/kWf3U5tHGDvE8ntufSKiLPgdtBFA6/dytbUocuYBM8L7dvUTSIjX8Qm3zbJW5Ky6m5eXyxmV0ki74iCRCqAEbOlM6Am6ZWWf3tg5DOSpbL3yXiQHaFNHodlQolOHMuRQXZEAkaiQkags+qO0LKohpm1gQTCHvtk8WDhUS7dxIDVTFOuWc+YDAvZf8CMAjQbsGNhkFUI21Y/awbBLEgPyBXjXwItQ0u0iIzVluv707LwWt4/ZSfbrxASFS+sjeoZjHRVdfViTVWzDblm7GR/rL6lsocenZtsKBU2kCLlfWKgSLSTTkk50PlcoIuh0BbsiBYja5BOxGqhrEmdRtumXD9PqhjFtFB5g9GHB1PYX7bc+ozU7O4CXsQuE1nPgZ7X6Cya7IMLYk6AWLC159ws5HxUp6zEm/LRwyaCfPANqY7hyWDD2oA2MMmAkZ3IZsoTS0oMZoGqwmZHofBvWTWGYE6JJbpHdsI6tlLVOURSskCwqZJdLkExdhOkl4+sb/qGdNnJECzFvolIRxQh48Fe+DZCsn7Bzk0k7IiVINYmzInVAis7ZO4JIpooJx0W6FghZc61+KHsDfYfsLpoyjX6GNLVv5TOOtAMEQd0lY5xGVrwy6ZcZ2XqRHVLBF1RhQC9x8yUUgmAKTpNuUagEPsZm0RIP5OqA350s5XsxXVz30E/j1jZISvRf1WFXsvHbEc/1BQb85iB7Kjsb6UqJFpJdiVigpWIvzayH5DLz24WnrBWoLsgTUOu9KLe0LFb7UnX1ne+MFOBmUtX+iDvbmBPxD8rZsECVuRS/WVETE868SPJBMtS3iKwOiNLLJelZA1eD2RFDJE1sRttC2MNXJzH2E9MFQfjXDFu2KVkZ8YzFLIz/sBig9kFfHrPCh372zblY7bgHrE2ZBJ2A7CuBAie0A/ZnQJWNeVTJ8STCiaSrA9dmuzi4JnQrceugymdUGTRRpbJ1Vs4ybxVZkAMCROHz0hW67Mr2cyarMwMdr6Uf7jlVLqttBMx2LMEN5py7b8pddiXDCZrlS4inl+yC5TwfLPZeWKcV90g+i8rGeoDMcaOVkTcyxsZHb4ztqSbrXIHnjW7AHsno4VPsUPYkKtnjCp248sbCIkPMKdEfyOLaW9lMfb9pd7M6eGQESXglob0LlELCydpyo1+BjIP+9rwfp8W4s6lhx8X7EW15AoR+b5N3r8gPwvXLr9s+b5J3p0KFxiTbxU+czr7qajRG/KxRmcGYP9Ish0ysE8uwVqF74CJrA25gcY5MlcJxCTX0UeCrDFR1FL1p2uKZmWvoT6S+nppVjXpgVyB9SfRA1mPvWRmRvbQiQylqjvq+ieWSIRn0Pr0yqqeC/luQlO9QrCBEwoQseE99G5yXViUfWXxwoi9/JbceEfKrMYeiqoJ5H0bZyiWzAJWW67XBp1loam83BPWMRL9McKZpZOWfPLOijM77I+MwTCg54DR76kefkM+RgxrmXJpjNT7BYs9pCF7EIKe7IM25TqqsaaSSH7yKyLKiHvP3JbceLeG7JpUEeniOX1TrROZT/Xu6QtWoy9Kzgo7sq9LxgQeW/ekUDv4RdX3z/rNviU5JFmL8G0i+Eje0Y3ZO7fVc8NGPziUKIaepc/Cd7Ej4a98B8nnxqqmyZZNhLHl/a1k4wHfD5XiK+VAsraqPZZFs+8u7xL4nimgzwOVQumHG+yx+KrWr+VTjytQ79rYFxhJFogRY/7UTS+y+6uP0JqWqomiUM2ngEfclVY9aPbXhulM68UwnW69GqYzzdezdJb1vvebpunO//oM9dl3ZqgvN4/b/fofmJn+iWnX5myl/msmJa0Xk5Jvzkwbf+ekZK+z7S+yrX3+v2bbGjn+f8/D/2CKvfHvdezmv9bRf/APdf7R6ffeb5l+P3uVOn5u8v31GL2hvdcadmgP1JvGi9uq7f62gXp4TDfN3U1zd9Pc3TR3N83dTXN309zdNHc3zd1Nc3fT3N00dzfN3U1zd9Pc3TR3N83dTXN309zdNHc3zd1Nc3fT3N00dzfN3U1zd9Pc3TR3N83dTXN309zdNHc3zd1Nc3fT3N00dzfN3U1z/63T3LbRHskzbfu9/k/Pc+vdr0ftBuq6gbpuoK4bqOsG6rqBum6grhuo6wbquoG6bqCuG6jrBuq6gbpuoK4bqOsG6rqBum6grhuo6wbquoG6bqCuG6jrBuq6gbpuoK4bqOsG6rqBum6grhuo6wbquoG6bqCuG6jrBur+5oG6M/t/caDuN/4Wzcn+fhs/p08yb/d3/ybNn/j/x/8NvyX1rV+B+/f+Js36YZ2Bf8uvSv2dBsbH5w0VfvqVlNDQwtvM5jzj3w==7V1be9rIsv01eRx/utrmESNsK4NEMJId8XI+LIhAgPE2OEj69WetagmEL0lmdjKz92zlITRCl+66rFpVXeAPZmeVXT2NH2feejJdfjC0SfbBdD4Yxrlu438eyNUBWz9TB5Kn+UQd0g8HhvNiWh7UyqPP88l0c3Tidr1ebuePxwfj9cPDNN4eHRs/Pa13x6d9WS+Pn/o4TqavDgzj8fL10bv5ZDsrj+qnrcMH19N5MisffW6U61uNq5PLlWxm48l6Vztkdj+Ynaf1eqtGq6wzXVJ2lVzUdZfvfLqf2NP0YfsjF1yndtg3x2FxNr28jRYXd78Zzm/lXb6Ol8/lgj8Yp0vc72LzOH7grLd5KYrTfz1zqhdf1g/b3zaiqDZOMMxH6Pri8DlGCV8DqKm6GWal7qc+KgWyv7XxtH5+mEw5UR0f72bz7XT4OI756Q5mhWOz7WpZfrxZTLfxrHzzZb5cdtbL9ZPcyJzY0/OJxZO2T+vFtPbJuXFvnp6W8y/tzDD3Z1bKNfbT+zp92k6zd4Wt71UI05+uV9PtU45TqgvOS62XZq+flu93NSOySt+Y1eznrDxvXNptsr/1QbUYlNr9A5o2Xmm6+5WLeV8VGkSxftrO1sn6YbzsrdePpczT6XablyIcP2/Xx+qpyVenvGH3j3zzZTnN2vRIariUgnVin+mWcb7/H59NHyoYME7O9aNPLfVxpatzfH5qGqe2qZ3qhmHJ07bjp235GOd+uY4X3zAS3Ks69WH9MFVHLucUrKxebvbdp31rtu+b4TSbbz/zOSda9TbC29/w3rbLA05WTkTe5LU3n6ZPc9jF9Kk8ptQ4nbwCsxcGC1Wvn5/i6TcM5fSbho356cbZ2ZFxGyUWPk2X4+386/EU3jLk8u6f1nMa4P6U9Zcvm+n2GMSqc8rHm2fHfmXYL/xFLa+86hs3AoQf38h8cSNoNpluX91IfG8vlj/vjuYrx3vLT366M8IannJldua5VR2oDE87q44cLE/eVab3Y35rnpjm0cfHbts6adkt/dw8PTOt05Z5fv6Gh46n51/it/znND6f3n+pJvZn3eC1ef9Z263ssnV6ZE7mn7VLs2WfnJ5rh3/H97XOWid2/WPrL7Va6126QEP7Ebqgt96hC3djBHUokizmEv+3J+NHKvbAINQjfjWD+PJlehq/aXqTs9a9pr1wqtbP4QvGC/sxWm/wBcN6zRdOfxVfsF+JmG41LN8eoKh7OPpmqP/pELbHoBdcwTRfc4V9jLVOq5ga1UPqD8fXGnzp2sn5Efr9Ofz68YitfPobqjr/JZBmY6F6lb5V8KP/GKz9LLw5fYU33nSzYcpmaBeU7NPPBIIXhvZCp1MdvPHsLZ22EMnGp78mcbDOXwOBXaWUfwkQnL2B+e9Ql/lKsukLSmCOHLo3vp8uP6038+18/UA+vt5u16vaCe3lPOEHW2LBhVze3jyqPJ5uN67efJln1OlF+QRnMt6OEVDUWySXX5MPxkUGvRqdT9e+McovrPu77DkuHq37q+XzuNDm4+sbLXbWX3vmxJzktunl9td4FX/1goXdH7bUebmbTK/0zf2D13JXM21y3T7t5S1cET9PCu/53vz40Cvcnee0v8bm6MGdXxjju1tzsGpZn4buznXaiRckheu4Wn/oJqOrSy0a6s/Rnb78NPzoRZ+Xy3jeznDd48jR5sHVpT36/PGLN3Qx/09XN8vRg8fRta9N77Llp7md3l97W+/zdjW+yzb9h9v8vpOknOvo7jLv3U3y6O7mcXRna78H21Zv5W/iXMunxujx/mp3Ovn8cfN7x9+M7+xl9NndjsyPs9HVcnn/MNh688XZl2F5f/P79+8F3mPf1J4jIyt6wc3ZaLXc3DuPerzarV0je7xf3c7iuf4Qry4XkMnzpKPV56T/yJz8IeYU7CDbG/v+KhSZlHdeHGbiXh3Gt3f24+Qa2nq4LSDJIL66TEdh6/n2s7+ElG0v1ea+4+W9NNp5gWvhmKWODexe2s38tK3JeYE294I2jiWG73RNOQ/HesGi6KWe7qcLq9LaW9JxU+scs/4ady6KyVVr17vzv95ftXJYReqtwgJWtsP1X0erEeY5aLlpe94r3r/GDy5mfrHIX1zz7Afhzk+737zWK5Zzr7iZHV+rrukZr+X5Kc1KbXy8PmjvovScx3W8ul3xvm+uu5SxV0SQcXfnF3FNxousl7Z1P3CzvYyLxbNXxFhDPHevkwz33fpB95ky7zvduXu1XMBT3rFY9+vPmevAgj0YnuNptbnaaq6hvZ9rGj73A7fwUu8wV8eTueL123PNf9Zcabvdwg8GB7kGbcw/sfwUSFPOtT+0ij6QxyeCOd2WO9dwpaX3nSjrd9xkfAcbWL3tpe78/D1Pu55xBU/91Swf3UW465t+C+ksaHmw8hDSiXM/EInxmA48fO477Z2S4kJJMbdyPx3onFk52xyzNfzCNb8zW72cbae1GN2NCsh4F32+WbtXuGKhmd7QsvC0zBvucpkNfNdbdc1eGmteEJk9J372iwH8Pt54nd2u57S3fseyISer53Rhm9HGS3GOs8B9BsdjOb8L3Vom7dzv7KCb0OgPd5k/tzIvgP3Pj8a8/8YbahrOK6BLWz0jRMTZaV7HwjwGpp8fjatrjF46sP0igV0OdNhsMYAfQe8aog/WUR+3Obes5wx2sGHTgwb4eb9j7fzAn0Hyz54TGl7K9dTG5Xr68uw25q3BrrBWkZNrlpipH4/LZwUufGMAjUEeMnYzzD3HvTDXyKZsauNyTZRXYuJ8RJMucLVt9IPYwP2Vjadufjyu1pU8e4LBHucKXS0MX+vm0Bv8gvoaUKbG4fwQ9+5qHnVRADOLENhyOfM4DoBTjrej3ry9fnYa1wcf0qHvnDqEji0/iIt+52j84nw8Kx0UkEEBOUJfbdhJpB+PqzlBRk4Mu3BxvWXT+nGfDHrXIDvLPx7vyusgi9jGnDXajV940Ju3QZyCPKDnNDoel/ODXMBQBmAglgFMhZftOB/YAvUaQf/AuYP9b/yhlWNumgfmgHVpsAXY6QLzdQ3g9Qb3Ae5ERf8wL9peJtgkPhbBy8t5BdBNMTgel35GPALWZ/2hRn8U/8FcNa8ASuRH4/I5Gmx/AXtJDD7HcyLEjXDjK7/GvRdH4/1z5FzYSxFviQeYmwaZFqLfoLthDOI8yrXsYMuwhwiIhFjvhMQAvHqYY6j5Tmgfj6truhrjBdZIfWOc7Ppyz4GOc2F3tLP6uLpO1pFz7TK3YpD3u10NmEFf16Cr+ngvb+hI79N2UmIZdEsbdzxD+EoRZsfj8lmOqzgOsbBwgWMJ7uHfIP7SFoF3btEXW/FynKOJnoNYh/3j/NkM9gIdugafWx9XduMFA9wn0fwg2SrcjXPYSCH2V/DeR+P9WnBuBgyCDIiLC8axLMa9vNSFrbu0E8hS5Ee/h8+AGc7hg0Wce0bXFnwQ3wKXoG5hE3vdC/aGup8TP2FrDnFTMBy2k2wQeeBjwJ3DfN6OGcs14ru/iT77BWK8YslDien1eJNh7TgfWIO4AT+APIB3xccZ5ApdxAZsmVwD8YI2VdlAxPkAk2Czc5znCJYo/uG49Df46qBmMy5xy4TeNpAD7Br84zqyZC2U+RXkMbfExsvXyn/gzwvIJxa8hv7hx/D7gmvs2j5jWn1cyhDPh60P4HPQL3wPGILzOB7g2eHxeO9zXRzzsCaxhQrfyEHACiLdPx5X82OMguxCC+uHr3iUVyHxyImJW/Xx/hrcJwfmWcRP2JflgWdirHuUecq4dzTeHfxhgLgQ5vQ/5dMxWAm44NG4OpfxyTMlhlTPWHRpz8Aw+DW4I+4FfYU1f0B8TJPcZ7ykb111c5ElfFni4WF88AXOM/Bor5lwusIl3uA+rsjweFzNDTYnso7JXQxgLWKfx+tzyWGOxvu145oBn8VryNPFzjxit7I94N8RdjDX0BhvaFOUt/hb0QYvFRstIJN8H0O5FuBWP0CslesXxDnodqDsmXHysG7Fm5zEFF8A5tymscRM2JQeBbwW8aoj82Isq/s3YhfkJP4daf2wSy6cyXo6gl9mTYd6X+SDZ893hmAI48ny0Qdu4N6I9Yivx1wJHAE+zHkfjSvux1yFXIQ8kfYMvQiWd2CT4F+CnYdxxeWIefBVMl6NdgUbCTXFdYD/gZcdjyuORa4KPRbeVskwMkuOBR20qbf6uHqW4gz0E66XfixxwIXve/nx+MBNED/JyYgXuN9+btBxaB2Pq2tezY0+rNaeJvZeJmpc8aY35DDg83fCdR2vlPlC23MAdQ14SGhCnvVrOCfYQtc6Hr+a36Y+P7HbFL48PxrX+Cn5VgjZHMmCvJjZiXU8PnBhyI957ka4MLiXv+jCN+DvwcCWuHIYH9ZFHlK4irtw7tSj/kbcmb+KO5onPunS9jJyel9i53LWZ8x0kEeAj9XHNa4PzrEwaR++4kPkm5bHOJ2GtNn6uJa/kDOCH5HjpAP41CKPco2cdCeYP7eQdySQKXHMJVfKhBsiTsP3GROYl+zgt7JO+KsdBRF5us05gJfWxqVcVVzmNcyBgJ0DaxAgT0vhWwX9pD7e27JF7g/uinjM9bvIWyYp8AavkdIVcmlPuHs7V7kIOFmQ0OZwDHYStHXle+CV3S5xoyDv8hSGVONKjyrPBm9nXgCZmn56m2K9yGFgJzntvJ2r/JJ20qbNbX1yc9rDnLlE21S5F+YdLC/A7Z7JiYQL1MalDje+YCtrKOSDLnkZbGAyI75Bt7RncsGiT38+YCFjBusBzL7ByRbkeXymCb+oXqsYqwuX5PUiG/ChVPyokHpITlz24BtejdMgR0Nsg11IfoPzmH8xXiLmQ4750bj2HLegnMm7IXdw/cmmJ7w43iie2C78q67dl9wo3PTJt5yFXn8ujuEzcJQAfhCA7wSXKewU8w5ZyyPHAk9bGCq/caEfxghyy4S6JN/M4YfCrYDntqd5zOGRU8Vcq6bWA443FB5OvgYdkAN5luL+iKspsZF1Jehi1bVUXE+Y49THNV4Ge3FiqUcgB8acllw38HKQQz+wwSSjfxGnYS/Mr5k3b4WTpMR08C3kAPDTrXCalDmiYM8OvreVWlxKDhNJLiH3DlzJbak78Em7JzYaaaqOAT6VhkUUDEzJ0VPyz/q4lDd1I1wtAs8u5xi0Vf5HPgHeCmzBvLvEEMoer+A8PK8IC8F4ZX9mJHzJtZhDYO618f5Z0D/yzJw+gpgB3I94rXBgzq3N+ocuNRX4kvAa4oX4NmLlqmsIvy7arE3UxxUPYW1A5TSByDP3r1gfAU9mnIeM4MO4d0Q/zaSmkJI3IEd1ZL3QCbj71Y44i5gPX2HMKIg3XdoW/HABm6ceXHKvQuktwmfMAaAPPhu2hnUX/Tv4YIf3bJPD18fVfAvhLAVzP94zAV4mZlR0me/aUgMQDGhTp5nEr4K6Y07LuDag7DPWD7Ee6ha2MZr1mXvRNpxkUx/v6wPgOVL/gn9hLcA6yfVpM8ivpDaxEz0jV3jBbZGzRKIPhZGxjufaipuGZlljwHxqtQjqiPmK8M+Eud9GeBv8zJc6BjFmoNVxjb6ibA4cHhbNNQL3Tdoc1oPzQ9Y4IPM27ZA1KJu6VrUQ8nFN5R5FmEfAfXBIrsMkJvppjXsOyR/Bk+esX7RZ7dQGAdY+lNieSa2IOAtuB1nU8NotdU0ZuvRJ8LzQvpu7SWRks9jkbpPskhRldfP6Yja5ShLZIwoSyQD6jJZOl5KkVVr+3Y6eT0+WzN4n40F0hDR5HJoJxTtxLEME2RIJ6IkKGYHOqjpCzSIbZtQGEgh7bJPFg4VHmVQTA2Yz9XHFegZkWIj+XUYUoFmXFQuDrELYtnqtGASjIC0gU4x/AbQMLZEiItbxuLo/NQur5f3nrGT7JUIi44W2kT2DkS7Lql6sqWy2Nq4YO9kfs2/J7CFH5ybtSYYNpJjzPjFQJNpKpaTo6nwu0MVQaAt2RI2RNUglYjlT2qRMo019XD1PshjFtJB5g9GHO1PYX7rY+PTUdHQBK2KViaxnR8urVRZN1sEFMYdALOjac25mcj6yU2bi9fHewoaCfLANyY5hyWDDWpc6MMmAEZ3IZooDS0oMRoEyw2ZFIffvmDWGYE6JJbJHdMI8NpLVOURSskCwqYJVLkExVhOklo+ob/qGVNnJECzFvolIexQh48FauBshUT9n5SYSdsRMEHMT5sRsgZkdIvcQHk2UkwoLZKyQMuNc/FDWBv13mV3UxxX6GFLV70hlHWgGjwO6SsW4CC3YZX1cRWXKRFVLBF2RhQC9B4yUkgmAKTr1cYVAIdYzMImQfipZB+zoZiPRi/PmuoN2FjGzQ1Si/aoMvRrvox3tUFNszGMEsqOivZGskGgl0ZWICVYi9lqLfkAuP72ZecJage6CNLVxKRe1Q8dqtSdVW9+5ZaQCM5eq9E72bqBP+D8zZsECZuSS/aVETE8q8X2JBItCdhGYnZElFotCogavB7LCh8iaWI22hbEGLs6j7yem8oNBphg39FKwMuMZCtnpf2CxweQCNv3MDB3r29TH+2jBNWJuiCSsBmBeCRA8oR2yOgWsqo8PlRBPMphIoj5kabKKg2dCth6rDqZUQhFFa1EmU7twEnnLyAAfEiYOm5Go1mZVsh41mZkZrHwp+3CLsVRbqSdisGcJbtTHlf3OKcO2RDCZq1QR8fyCVaCE55v1yhP9vKwG0X6ZyVAe8DFWtCLiXlaL6LCdgSXVbBU78KzJBdg7GS1sihXC2rh8Rr9kN77sQIh/gDkl+htRTHsrirHuL/lmRgvHGF4CbmlI7RK5sHCS+rhWz0DkYV0b1u9TQ1y51PDjnLWoo3GJiNxvk/0XxGfh2sXthvtNsncqXGBAvpX7jOmspyJHr433OTojAOtHEu0QgX1yCeYq3AMmstbGNTTOELkKICa5jt4XZI2JopbKP11TJCtrDfW+5NcLs8xJd+QKzD+JHoh6rCUzMrKGTmQoVN5R5T+xeCIsg9qnVZb5XMi9CU3VCsEGDihAxIb10LrJdaFR1pXFCiPW8o/GtT1SRjXWUFROIPtt7KFYMApYx+NqbpBZGprKyj1hHX2RHz2cUTo5Gh+ss+TMDusjAzAMyDmg93uqhl8b7z2GuUyxMPpqf8FiDanHGoSgJ+ug9XHl1ZhTQSQ/2BURpc+1p+7RuLa3huialB7p4jltU80TkU/V7mkLVq0uSs4KPbKuS8YEHlvVpJA7+HlZ90/b9bolOSRZi/BtInhf9ugGrJ3b6rlhrR4cihdDzlJn4V5sX/gr9yD53FjlNOmijjC27N9KNO5yf6gQWym6ErVV7rHI63V32UvgPlNAmwcqhVIPN1hj8VWuX40PNa5A7bWxLtCXKBDDx/yxO79I768uITVtrjqKQtWfAh4xKqyq0ezfa6aztJdd2ecnuvGqn840X7fTWdZJ6xc11J3/+03Up+80UXfWD5vn1d/QNf0DDa/19kr95zRLWvaLb4O82TX9VzZLtv6Juv1D36n7Wbq1z//TdFv1Pv93t8R/p5G99gUhu/71IP073wz6WxvgW7+kAf7UetGK/YPN76876Q3tRKvp4bin3jT+2m+e6W9957dp6G4aupuG7qahu2nobhq6m4bupqG7aehuGrqbhu6mobtp6G4aupuG7qahu2nobhq6m4bupqG7aehuGrqbhu6mobtp6G4aupuG7qahu2nobhq6m4bupqG7aehuGrqbhu6mobtp6G4aun9hQ/f+l0/3Dd32if5393Pr5q9r+h0+32/ip/mj9Nv91Y2/P/CLt39BU7elW3934+9P+NnzRsHvdnb/Byj49e9M/zMU/Pe07vNvo/yHKfi/+0esv9HrzN3UTquYrNh9OXocfZ507s1E+u/YkeNyVxK5uet4Zf2mzZ1KMl+c//Hr/VUIjr/cjnK33qX8IE8/G93Zs2iVLXt3H2eRsX2IVy39fjU4vV/dmtIZ3UGGlOK1iHYvunwP/c7FxLkoe4vXqX91k47uouJlT3Bcdgj6m3vzdjH6PFreP9wUvc83eXRnF/HVZS4dy3fL9N6w5p/S7MG9Vp+NVq38PoD6rz/O7h+4z3az/N0ZYOWR/fuw6jzcX1fuue334zC79rzcg2PVQ7Iz15H9CWR/l6nUdZGLyL71ELxOeim8rad6UCAHVtLAb5ElIVMGt4wS9nGAI22lzu+4W+mdksoHq0Pg8UOtkL1KnKPq0Z6uqlltQ6pVrM/LvpzHKk0u2elcy5iBgqdJTwyywq1UepgvcM8ikCw2K3vFtqrXVWq6O/Y49NnTk0qVZyuZbABuyQyZ53DPjPtuQ02XPfAi2qpMmntpifSq9KTOGbOnMFP1+nDLviPhubLP3GUVL1MVKsqMa+HeNHuR2ob0PM41TXrinDgR+aW3jmShQZgg02aGmvjST+zZrlTSQtvL26ybswKRCH922sZ9R2Nv2Q7PY/6U+aGncx8Pz+HeDvKLBc6NhdO6rA4gy4ZOy3zVY+WqiGS/IZT9TdnncLykL3sEMa7h/nU79+Ztqf/ieOHKfmYEfbSZKUOH7Z3LzJ36l6rrIuFesewBQY/ewstVlS6ijeRS3cm5b8jqV8h1wm/amZI7n8OuWthbINfQp1i9wLxd1vozPIt5L6tthUe9d9TcuE+tei8ji/NBnrplD5An3i89L9ybx3xpK7gv8zZcU/W+39AzobfjDH+f/z/40JhbZvzuTrpah5BM6mF2t7Bo7p60NdnpGUq3Lq10xx3THndH2I3BGi+sxU9pUSFrr/SYnB2xqoPGKzvG2ypLLrhLyd0jyX5Y+936qkMGWuAODLKbHNeyNlIMElVviS1lheyiaueqfkovaNMDE1/qm5KtixVDe7myKldlwpC41N0LIgfrbKGG10wyYGhcdkOG8m0CWpnaNQwWidqhdBPpxksTWtmOXT+4Rherkt20iMefpXbDmmDhJczqWNdX2d2gfM/5cseva0ttsEi2gtWpZ8r7FO9T7pYiU5fPB9w9zGmJPdnFZH1bvFG66FS9Mpa6Yk86RyO1iyidSZ7a1WP1ROrykSb3dOJyN1nutROP5i6c7EoCAdnXTQ/j7rDoi/NljPG4Y8Mdf115iAvvKd+vEnol0HWZqh1Kdt5ZrG2zdqj1lNewSgAvLjvcpHYbA20FUZD1Am2kbqyQzSdCSafbgMjE6oitEJA7/bJris+lg80WDxK5DKSLGLrQZYd1KIgKWw4T1aUSGwp1k0L0x65Fhx7DjmOiQmTKTtewrbpdczxLdvrZaW0VYjfBgughu6n4nAjD8wpWMJTOYItFW9mrkveL9xNV1eqIDSNjH1TfSrji93ngU+qbIleX2rhzyLhjc8Bvo/A8nzYDVJIoRqT2gptNiSq0Q1vq4CtPogE7ahRKxNQ1u6t4Dv2ZyK/RXry5ICRryiqqOAPqjH5o9YnEEu08sU3YL+RMnxhs+1Ib7ub87hR3WJWe4J+dtqF2SIlUlO0CsmNdN7JLfRu+sZOuX1biyjkb/pUnneme7OmwPq1sAetQXcsBq2zs/GPVSHb+VYQsgLalDUtdO1hYyk8RXfE81oYZeZR9haZUJaEnT+0cWtI5EjCCeOxOwXxYnSEWsSvdg4+3GRERNRnVEG2Gghc25CR2JdFNujVdriWTzqjqOxEL+Q4VMIgdQbuvI/lGT6y+D0FWh9FPYOSn1vnJi7/k0zqrCiL1ysnpa1JuWCfGv0/L77Tf/u/5ty9973x5MS+uny//Zdy/+ddHG1besPKGlTesvGHlDStvWHnDyhtW3rDyfygr18+M491M63WdvLprnZHr1v5XrH46JT97xcCb37h57zduvr+58uF/5jduXt7o1R/AfudXbWAv47x22iNP2Pz4hM3yZ6F+eF7H52OgZvBnf2LnTSc6fzeN/S90EeMX+8jhjzSfnp19OPyRZv5BesDcH/1LzT/ucsq0f2Bb+Lu+af0a37RfbqP+Wd+0v/PH6X/eL0696Q5v/SheU+ZpyjxNmacp8zRlnqbM05R5mjJPU+Zpyjz/0DKP0XpBv8/ME/t11/pfXempsomGlje0vKHlDS1vaHlDyxta3tDyhpY3tPx/gZa/7ok0T89OTON1U2TrxGy90Rd5emL98a+U4u3Tml8QOxTYn8aPM289mfKM/wc=7V1dd9rIsv01eZwsfdrmERviKAeJEKQ48stdWGAhAcbXgJH068/eJQkk25nkZOIk99yeWWtciFaruz53laqZN+bFKrt8mNzP3fV0tnxjaNPsjdl7Yxhnuo3/8kJeXrD10/JC/JBMy0v68cI4KWbVRa26ukums01r4Ha9Xm6T+/bFaH13N4u2rWuTh4f1vj3sdr1sP/V+Es+eXRhHk+Xzq1fJdDuvruonneMX72dJPK8efWZU+1tN6sHVTjbzyXS9b1wy+2/Mi4f1eltSq+xitiTvar6U9737yreHhT3M7rbfc0NneGbte+Pb7F3x5ereXm3+Gn35q5rlcbLcVRt+Y5wsMd/55n5yx1Vv84oVJ/+741LPb9d32782IqguBhjmPWR9fvweVMy/PsRUT4ZVlfOVX1UMOUxtPKx3d9MZF6rj6/082c7G95OI3+6hVrg2366W1debxWwbzasPt8lyebFerh9kInM6mZ3dRhy0fVgvZo1vTqKz2c1ttf5KzwzzMLIWrnFY3uPsYTvLvsps/SBCqP5svZptH3IMqW4w7ErvK7XXTyot2DeUyKrGzBv6c1qNm1R6Gx+mPooWRCXd/0DS5jOmQyHvSd4uZ1mXpoKtHwWh4dP6YTtfx+u7yXKwXt9XHE9n221eMXCy267bwmlwVz+hLKv9Wm/tU90yzg7/xXezu9rgzbem2fq6/LYWSudtx+7oZ+bJqWmddMyzsx8S/CxLtl+4s7d29SmsFk26l1Wblg959aFk2mz6zEk8UQQwdr17iGbfMrXnCvMwW062yWN7/pekX936cZ3gyQdFM43OW7vJObOld+ZTfSqXWU3S9BbP5j1tTWSdnrYn2k4e4tn22USim4ft/bi62s/UlUIYVx+Pitk/Xj3/tQrdUmADCtxSb6ulcNZJU+W0v1U5fvg4e0jAwdlDfe1oC7r29qxlSj9mDN+v2KWg/0ZUZ6+i2DY2quttL2rp36fNP0sJT55FR3e22RAxGNo5OfvwMyPZE0V7ItOZPrVnpy/JtAO3ODn5WXFLa3P87Hncsutrzbh18lpx6/QFhPKVQJasBMydkwMJINxgcjNbflxvkm2yvsP3N+vtdr1qDOguk5hfbOkLzuX27ua+hJE0u0n94TbJKNPz6gm96WQ7AfwpPwLbPMZvjPMMcjUuPr73jOv83Lq5ynZRcW/dXC53k0JLJu8/aVFv/Tgwp+Y0t003tx+jVfTo+gt7OO6U43Innl3qm5s7t+Os5tr0ffdkkHdwR7SbFu7uxvxwNyicvdvrPkbm9Z2TnBuTq8/maNWxPo6dvdPrxq4fF07P0YZjJ76+fKeFY30XXunLj+MPbvhluYySbob77q97WuJfvrOvv3y4dccO1v/x8tPy+s4l9d7TZlfZ8mNipzfv3a37ZbuaXGWb4d3n/OYiTrnW66t3+eBqmodXn+6vr2ztX/62M1h5myjX8plxfX9zuT+Zfvmw+deFt5lc2cvwi7O9Nj/Mry+Xy5u70dZNFqe342p+89vzD3z3fmhqu9DIioH/6fR6tdzc9O71aLVfO0Z2f7P6PI8S/S5avVuAJ7vphdZck/49a/LGWJO/B28/2TeXgfCkmnlxXIlzeaQ/X9n30/eQ1t3nApz0o8t36XXQ2X3+4i3BZdtNtcTrufkgDfeu71i4ZpXXRvYg7Wde2tVknK8lrt/Ftdjwen1TxuHawF8Ug9TVvXRh1VJ7iTtOap1h1Y/RxXkxvezsB1fe481lJ4dWpO4qKKBle9z/eL26xjpHHSftJoPi6/d4/vncKxb5k3t2nh/svbT/t/e6xTJxi0/z9r3lPQPjOT8/plkljQ/vj9I7ryznfh2tPq8474v7rnjsFiF43N97RdTg8SIbpF3d853swONisXOLCHuIEud9nGHeref3d+T5sNdPnMvlApbyFY11Hn/OWkcW9MFwe67WWKtdrjWwD2tNg93Qdwo3dY9r7bmyVvz9+7XmP2ut1N1+4fmjI1/9LtYfW14KT1OtdTi2iiE8j0cP1ut3nETDnZY+7IXZ8MKJJ1fQgdXLVuokZ1+ztPdz7uBhuJrn11chZn3RbsGdBTUPWh6AO1Hu+cIxXtPhD3fDXndfcnFRcjG3ci8d6VxZtdocqzW8wjG/sVq9Wu1FZ3F9dV2Ax/vwy6e1c4k7Fprpji0LT8vc8T6X1cB23VXfHKSR5vqhOehFO68Ywe6jjXux3w963a13YdngkzXo9aGb4cZNMaa3wDyjNi3j+5CtZVLPvYs9ZBMYw/E+8xIrc33of9KiOf/GHWsaxhWQpV0+I0DE2WvuhYV1jEwvb9H1PcYgHdleEUMvRzp0thjBjiB3DdEH+2jSXa4tG/RGe+iw6UIC/H54Ye0935uD8zu3Fxhuyv006Go/Q3l2F+vWoFfYq/DJMSufqbfp6lm+A9sYQWLgh9BOhrXnmAtrDW3ypkFXeyK/YhPjEU368KtdY+hHBuYvdTx18jZd7yveueKDXa4VsloYntbPITfYBeU1Ik+N4/gAc/c1l7Io4DOLAL7l3dwl7cNP9dw95eYe5LPXuD/YkA5555QhZGx5flQML1r0k/F4VjoqwIMCfIS8utCTUG/T9ZrAo14EvXBwv2VT+zFPBrlr4J3ltel9dR94EdlYs0a98QoXcnM3iFPgB+Schm26Wh/4AoQyAgKxDPhUWNme64EuUK4h5A8/d9T/jTe2cqxNc4EcsC8NugA9XWC9jgF/vcE88DthMTyui7qXiW8SGwth5dW6fMimGLXpys7oj+Drs+FYoz2K/WCtmlvAS+QtunqOBt1fQF9ig89xeyHiRrDxSrvG3IsWfXiOjIW+FNGW/gBr08DTQuTr9zeMQVxHtZc9dBn6EMIjIdb3AvoA/HWxxkDzeoHdput7+hrjBfZIeYOO90OZc6RjLPSOetak6/tkHzn3LmsrRvmw39fgM2jrGmTVpA/8hoz0IXUnpS+DbKnjPdcQvFIEWZuuntVzSoxDX1g48GMx5vA+If5SF+HvnGIouuLmGKOJnP1Ih/5j/HwOfYEMHYPPbdK13rj+CPPEmufH29LvRjl0pBD9Kzh3iz7sBWMz+CDwgH5xwTiWRZjLTR3oukM9AS+Ff7R72AyQYQIbLKLcNfq2+AexLWAJyhY6cZC9+N5A93L6T+haj35TfDh0J94g8sDG4HeO63k5ZizXiO/eJvziFYjxJUoeS0xvxpsMe8d4+BrEDdgB+AF/V3yYg6+QRWRAl4k1EC+oU7UOhFwPfBJ0NsG4nviSEn/0HNobbHXU0BmHfsuE3DbgA/Qa+ON9aMleyPNL8COxRMerv7X9wJ4X4E8k/hryhx3D7gvusW97jGlNuuIhng9dH8HmIF/YHnwIxpEe4dlBmz7YXB/XXOxJdKH2b8QgQAWh7rXpen2MUeBdYGH/sBWX/CokHvUi+q0mfbgH8+TweRb9J/TLcoEzQesueZ4y7rXo/dEeRogLQU77K206AioBFmzR9VjGJ9eUGFI/Y9GnPsOHwa6BHTEX5BU07AHxMY1zj/GStnXZz4WXsGWJh0f6aAtcp+9SXzPBdIVDf4N5HOFhm67XBp0TXkfELgZ8LWKfy/tzyWFa9GHvuGfEZ/Ee4nTRM5e+u9Q9+L+W72CuoTHeUKfIb7G3ogtcKjpagCf5IYZyL/BbQx+xVu5f0M9BtqNSnxknj/sucVMvNsUW4HM+p5HETOiUHvq8F/HqQtbFWNa0b8Qu8EnsO9SGQZ9YOJP9XIj/Mhsy1IfCHzw72RviQxhPlvce/AbmRqxHfG1jJWAE2DDX3aJr7MdchViEOJH6DLmIL7+ATgJ/ie880jWWo8+DrRLxatQr6EiglVgH/t93szZdYyxiVcixcLclD0OzwliQQZdya9L1s0rMQDvhfmnHEgcc2L6bt+kjNkH8JCajv8B8h7VBxoHVput7nq2NNlzuPY3tA09KusZNL/BhxOfvBev23IrnC+2AAcp7gEMCE/xs3sM1QRf6Vpt+tr5Nc32itylsOWnRDXxKvBWANy1eEBczO7Ha9BELg3/MczeChYG9vEUftgF790e2xJUjfdwXcUjhlNiFa6cc9RfiTvIs7miu2KRD3cuI6T2Jncv5kDGzhzwCeKxJN7A+MMfCpH54JR4i3rRcxuk0oM426Ub+QswIfESMk45gU4s8zDVi0r34/MRC3hGDp/RjDrFSJtgQcRq2z5jAvGQPu5V9wl7t0A+J022uAbi0QVd8LeMy72EOBN85skY+8rQUtlXQTpr0QZctYn9gV8Rj7t9B3jJN4W/wNyxlhVzaFezezctcBJjMj6lzuAY98bt6aXvAlf0+/UZB3OWWPqSmazmWeTZwO/MC8NT00s8p9oscBnqSU8+7eZlfUk+61LmtR2xOfUiYS3TNMvfCuv3lObDdjphIsECDrmS48cS3soZCPOgQl0EHpnP6N8iW+kwsWAxpz0dfyJjBegCzb2CyBXEen2nCLuq/dYzVBUvyfuEN8FAqdlRIPSSnX3ZhG24D0yBHQ2yDXkh+g3HMvxgvEfPBx7xFN57jFOQzcTf4Dqw/3QwEF0ebEid2C++ybw8lNwo2Q+Kt3kJvPhfX8B0wig878IF3/Hcp9BTrDljLI8YCTlsYZX7jQD6MEcSWMWVJvJnDDgVbwZ/bruYyh0dOFXGvWrkfYLyx4HDiNciAGMi1SuyPuJrSN7KuBFms+lYZ12PmOE26gcugL71I6hHIgbGmJfcNfznKIR/oYJzRvuinoS/Mr5k3bwWTpPTpwFvIAWCnW8E0KXNE8T172N5WanEpMUwouYTM7TuS21J2wJP2QHQ01Mo6BvBUGhShPzIlR0+JP5t0xW/KRrBaCJxdrdHvlvkf8QRwK3wL1t2nDyHv8ReYh+OKoBAfX+qfGQpecizmEFh7gz48C/JHnpnTRhAz4PdD3isYmGvrsv6hS00FtiS4hv5CbBuxctU3BF8XXdYmmnSNQ1gbKHMaX/iZe5esjwAnM86DR7BhzB3STjOpKaTEDchRe7JfyATY/XJPP4uYD1thzCjob/rULdjhAjpPOTjEXkUptxDfMQeAPPhs6Br2XQyvYIMXnLNLDN+k6/UWglkK5n6cM4a/jM2w6DPftaUGID6gS5lmEr8Kyo45LePaiLzPWD/Efihb6Mb1fMjci7rRizdN+lAfAM6R+hfsC3uBr5NcnzqD/EpqE3uRM3KFJ9gWOUso8ih9ZKTjuXaJTQOzqjFgPY1aBGXEfEXwZ8zcbyO4DXbmSR2DPmakNf0abaXUOWB4aDT3CL9vUuewH4wPWOMAz7vUQ9agbMq6rIUQj2tl7lEEeQi/DwzJfZj0iV7awJ5j4kfg5IT1iy6rndrIx97HEtszqRXRzwLbgRcNf+1UsiYPHdokcF5gXyVOHBrZPDL5tknekhRVdfP9+Xx6GcfyjsiPJQMYMlr2+uQktdLyrva0fFqyZPYeEQ+iI7jJ65BMINaJaxkiyJaegJZYekZ457I6QskiG2bUhicQ9NgligcKDzOpJvrMZpp0jXpGRFiI/n1GFHizPisWBlGFoO3yb40gGAWpAVmJ+BfwloElXETEatP1/JQstJbzJ6xke5WHRMYLaSN7BiJdVlW9SCuz2QZdI3aiP2bfktmDj71P6UAybHiKhPNE8CLhViolRV/nc+FdjNLbAh1RYkQNUolYzktpkqfhpknXz5MspkRayLyB6IO9KegvXWw8Wmp6fQ4tYpWJqGdPzWtUFk3WwcVjjuGxIGu392ku45GdMhNv0gcNG4vng25IdgxNBhrW+pSBSQSM6EQ0UxxRUmwwClQZNisKuXfFrDEAcoot4T2iE9axkayuR09KFAg0VbDKJV6M1QSp5SPqm54hVXYiBKtE3/RIBy9CxIO98G2ERP2clZtQ0BEzQaxNkBOzBWZ2iNxjWDS9nFRYwOPSU2ZcixfI3iD/PrOLJl17H0Oq+hdSWYc3g8XBu0rFuAgs6GWTrqMyeVJWS8S7IguB9x4xUkomAKTYa9K1Bwqwn5FJD+mlknVAjz5tJHpx3dy3381CZnaIStTfMkOv6UO0ox5qJRpzGYHssOhuJCukt5LoSo8JVCL62oh+8Fxe+mnuCmqFdxdP06ArvpRv6FitdqVq6/U+M1IBmUtVei/vbiBP2D8zZvEFzMgl+0vpMV2pxA8lEiwKeYvA7IwosVgUEjV4PzwrbIioidVoWxCr72AcbT82SzsYZSXihlwKVmZco/TstD+gWH96Dp3eMUPH/jZN+hAtuEesDZGE1QCsK4YHj6mHrE7BVzXpYyXElQwmlKgPXpqs4uCZ4K3LqoMplVBE0UaUycq3cBJ5q8gAGxIkDp2RqNZlVbIZNZmZGax8lfrhFBOptlJO9MGuJX6jSdf6m5CHXYlgslapIuL5BatAMcebzcoT7byqBlF/mcmQH7AxVrRC+r2sEdGhOyNLqtll7MCzpudA70S00ClWCBt09YxhhW48eQMh9gHkFOsvRDHtpSjGur/kmxk1HDSsBNjSkNolcmHBJE26Uc9A5GFdG9rvUULcudTwo5y1qBZdeUS+b5P3L4jPgrWLzxu+b5J3p4IFRsRbuceYznoqcvQGfcjRGQFYP5JohwjsEUswV+E7YHrWBt3wxhkiVwGPSayjD8WzRvSiVpl/OqZwVvYa6EPJrxdmlZPuiRWYf9J7IOqxlszIyBo6PUNR5h11/hOJJUIzKH1qZZXPBXw3oZW1QqCBoxegx4b2ULuJdSFR1pVFC0PW8lt04x0poxprKGVOIO/b2EOxYBSw2nS9NvAsDcxSy11BHUPhHy2cUTpu0UftrDBzj/WRERAG+OzT+t2yht+gDxbDXKZYGMPy/YLFGtKANQjxnqyDNunaqrGmgp78qFf0KEPuPXVadOPdGqJrXFmkg+d0zXKdiHxl7Z66YDXqosSskCPrukRMwLF1TQq5g5dXdf+026xbEkMStQjepgcfyju6EWvndvncoFEPDsSKwWeps/Bd7FDwK99B8rlRmdOki6aHseX9rUTjPt8PFaIrRV+idpl7LPJm3V3eJfA9k0+dh1cKpB5usMbilbl+TR9rXH75ro11gaFEgQg25k2c5Dy9uXwHrmlJ2VEUlP0pwBHXhVU3mv2zZjrTetJMp1vPmulM83kvnWW97bxSN93ZV/v92X74Pf3++slX+v0v1neb3YotkYee/3LOP6vnX9d/Tqek9aRT0ui80OFv/MpOyc5/o2zt2dnUekm2Z8aNeXLyOrI9dLgeTm/Yv1m2dePz/+1++N/Wxf7Tu9NPnrn2Hzxn8XQi034y0Sufs9BfOgGm+qtVf7Xqr1b91aq/WvVXq/5q1V+t+qtVf7Xqr1b91aq/WvVXq/5q1V+t+qtVf7Xqr1b91aq/WvVXq/5q1V+t+qtVf7Xqr1b91aq/WvVXq/5q1V+t+qtVf7Xqr1b91aq/WvVXv2J/tW087Z2z3+q/u8NaN1RDnWqoUw11qqFONdSphjrVUKca6lRDnWqoUw11qqFONdSphjrVUKca6lRDnWqoUw11qqFONdSphjrVUKca6lRDnWqoUw11qqFONdSphjrVUKca6lRDnWqoUw11qqFONdSphrpf21B3Yv+JDXXm6/2u5Xh3s4keknvpt/vVv235Hf9H91/wu6Uv/SjtL/5tS0sJ+BV/vPQPELD9egLuTif32+MP0948/KPZfrmK3N7OTqIXf+N0etq50bQXfnD1FVTk9/92MXb2/+/3bb/928a/7/dtzc7bU72tJGf2D/7E7QtzGU/m+nm/cmsG0+J/No/J50G+1laP/ni6S/563oL/369df/CvJ5+e/qRfT3460Sv+evKLevUSNFVnPdRZD3XWQ531UGc91FkPddZDnfVQZz3UWQ911kOd9VBnPdRZD3XWQ531UGc91FkPddZDnfVQZz3UWQ911kOd9VBnPdRZD3XWQ531UGc91FkPddZDnfVQZz3UWQ911kOd9VBnPdRZj1c863F69nvPerzYT6dOAvzMkwCn+m88CfCifNVBgD/rIMBTDfmlBwFe1JCT19OQi/XdZrc6qsgvk+13NPr/AuvXT+zfLNvTZ7J17h7BkKbNVsb80fkTO/atV+3Yv7X574sd+/IPvplONvODRv54+36lIX9pb/WT005LS/4yK+n/0xb/k87bU0s7/GO0/cyPniX5xrTfeawEyjHJG8PuOWDzt+cV3mpm+1GW9q2TCd+4BUS5jicT1Ita395uZv/hqQV8fFjT6R2Hw1PN3fV0xhH/Bg==7V1Ze9rItv01eTz5NHp4lBFxlKZEMJId8YYFEQgwvgYHSb/+rrVLgGQ7PSbd5/RHHuJCaKja49q7lux3dmdVXD+NH2dqPZku31nGpHhn++8s6/LCxv88UOoDZ5ajD2RP84k+ZB4PDOfVtD5o1Eef55PppnXidr1ebueP7YPp+uFhmm5bx8ZPT+td+7Sv62X7qY/jbPrqwDAdL18fvZtPtrP6qHl2efzi43SezepHX1jn+ovVeH9yvZLNbDxZ7xqH7O47u/O0Xm/1aFV0pkvKbi8Xfd2H73x7mNjT9GH7ey7IdiP3w8B6GN/37qry/FNcppf/qe/ybbx8rhf8zjpb4n5Xm8fxA2e9LWtRnP3fM6d69XX9sP3PRhTl4QTLfoSur47fY5TxZwQ17W+GWen76a9qgRxubT2tnx8mU07UxNe72Xw7HT6OU367g1nh2Gy7WtZfbxbTbTqrP3ydL5ed9XL9JDeyJ+PpxdeUJ22f1otp45uz9GJ6/7Wef21nln04c69c6zC9b9On7bT4rrDNgwph+tP1arp9KnFKfYHluvqS2uzN89oKdg0jsupzZg37OavPG9d2mx1ufVQtBrV2/4CmrVdCh0E+cvh1OS08ugqWflSEgU/rp+1sna0fxsveev1YSzyfbrdlLcDx83bdVk5DuuYZdVmv13nvnpuOdXH4H99NH/YOb7+37dbX+tu9Ui7fX7qX5oV9dm47Z5f2xcWfUvy0mG+/cGXv3fpTUk+aY7+oFy0fyvqDFtp08ipIvDAECHb9/JROf8vVXhvM03Q53s6/te//lvbrSz+v53jywdBs6/K925Sc3bI7+/yFPelp1jdpRouX94X2mjdyzs/bN9qOn7Lp9tWNxDYPy/vz5uq8CkxqutkwWFvGFTX89CODyAujfWFbU3PiTs/fsq1LWOT47EeFDKMt8YvXIcPdH/tbQob7RnL4TgyZrySPXlECc2TP3vh+uvy83sy38/UDvr9fb7frVeMEbznP+MWWceVKLvc2jzqD0/HG+w9f5wV1elU/wZ+Mt2NkHv0RaeVb9s66KqBXq/P5Y2iNyivn/q54TqtH5/56+TyujPn4442R+utvPXtiT0rXVqX7LV2l31S0cPvDS31eGWTTa3Nz/6Aug9XMmHz0znrlJa5InyeVer63Pz30qmCnfO9bao8egvmVNb67tQerS+fzMNgFvpepKKsCPzD6wyAbXX8wkqH5nNyZy8/DTyr5slymc6/AdY8j35hH1x/c0ZdPX9UwwPw/X98sRw+Ko4+hMb0rlp/nbn7/UW3Vl+1qfFds+g+35X0nyznX0d2Hsnc3KZO7m8fRnWv8Em0ve6twk5ZGObVGj/fXu7PJl0+bXzrhZnznLpMvwXZkf5qNrpfL+4fBVs0X51+H9f3t375/L1KPfdt4Tqyi6kU356PVcnPvP5rparcOrOLxfnU7S+fmQ7r6sIBMnicdozkn8/fMKRxiTtEOsr1x769jkUl958VxJsH1cXx75z5OPkJbD7cVJBml1x/yUXz5fPslXELKrsqNeeirspcnOxUFDo45+tjA7eXdIsw9Q86LjLmKPBzLrNDv2nIejvWiRdXLlRnmC2evtbekE+TOBWb9Le1cVZPry13vLvx2f31ZwipytYorWNkO138brUaY5+AyyL15r/r+NWF0NQurRfnimucwindh3v3Va1W1nKvqZta+Vl/Ts17L83Ne1Nr49PGovavacx7X6ep2xfu+ue5axqpKIOPuLqzShowXRS/3zDAKioOMq8WzqlKsIZ0HH7MC992GUfeZMu/73XlwvVzAU75jscG3HzPXgQN7sJSvjMZcXT3X2D3MNY+f+1FQqVwd5+ormSt+/vpcyx81V9putwqjwVGukYf5Z06YI9LUc+0PnaqPyBMygvndy2Bu4ErH7PtJ0e8E2fgONrB620uD+cX3PO3jjCt46q9m5eguwV3f9FtIZ0HLg5XHkE5ahpFIjMdMxMPnvu/ttBQXWoqlU4b5wOTM6tmWmK0VVoH9G7M169l2Lheju1EFGe+SLzfr4BpXLAxbDR0HTyvUcFfKbOC7atW1e3lqqCixe376HFYD+H26UZ3drud727DjuJCT0/O7sM1ko3Kc4y9wn0F7LOd3oVvHpp2HnR10E1v94a4I506hItj/vDXm/TdqaBg4r4IuXf2MGBlnZ6iOg3kM7LBsjffXWL184IZVBrscmLDZagA/gt4NZB+sozn2OLei5w92sGFbQQP8vt9xdmEUziD5Z+XHlsq5nsa4Xk9fnu1h3gbsCmsVOQV2HTPN9rh+VhTANwbQGOQh46DA3EvcC3NNXMqmMa7XRHllNs5HNukirnpWP0ot3F/beB6U7fF+XdmzkhisOFfoamGFRreE3uAX1NeAMrWO58e4d9dQ1EWFmFnFiC0fZorjCHHKVzvqTR30szO4PviQCX2X1CF07IRRWvU7rfGL8/GsfFBBBhXkCH15sJPEbI/3c4KM/BR2EeB6x6X14z4F9G5Adk7YHu/q6yCL1MWcDdpNWCnoTW2QpyAP6DlP2uN6fpALEMoACMSxEFPhZTvOB7ZAvSbQP+Lc0f434dApMTdDATlgXQZsAXa6wHwDC/F6g/sg7iRV/zgv2l4hsUl8LIGX1/OKoJtq0B7XfsZ4hFhf9IcG/VH8B3M1VIUoUbbG9XMM2P4C9pJZfI7yE+SNeBNqv8a9F63x4TlyLuylSreMB5ibAZlWot+ou2EO4jzqtexgy7CHBBEJud6PGQPwU2GOsRH6sdse76/pGswXWCP1jXG268s9BybOhd3Rzprj/XWyjpJrl7lVg7Lf7RqIGfR1A7pqjg/yho7MPm0nZyyDbmnjvrIEr1Rx0R7Xz/IDjXEYC6sAcSzDPcIb5F/aIuJdUPXFVlSJcwzRc5SasH+cP5vBXqDDwOJzm+O93ahogPtkRhhlWx130xI2Uon9Vbx3a3xYC84tEIMgA8bFBfNYkeJeKg9g6wHtBLIU+dHv4TNAhnP4YJWWyuq6Eh/Et4AlqFvYxEH3EntjMywZP2FrPuOmxHDYTrZB5oGPIe4c5/N2zliukd/DTfIlrJDjNUoeSk5v5psCa8f5iDXIG/ADyAPxrvo0g1yhi9SCLRNrIF/QpvY2kHA+iEmw2TnO8yWWaPzhB/Q3+OqgYTMB45YNvW0gB9g18MfHxJG1UObXkMfcERuvf+79B/68gHxSidfQP/wYfl9xjV03ZE5rjmsZ4vmw9QF8DvqF7yGG4DyOB3h23B4ffK6LYwprElvYxzdiEKCCxAzb4/38mKMgu9jB+uErivKqJB/5KeNWc3y4BvcpEfMcxk/Yl6OAMzE2FWWeM++1xrujPwyQF+KS/qd9OgUqARZsjffnMj8pW3LI/hmLLu0ZMQx+DeyIe0FfccMfkB/zrAyZL+lb191SZAlflnx4HB99gfOMFO21EExXBYw3uE8gMmyP93ODzYmsU2IXC7EWuU/x+lJqmNb4sHZcM+CzeA1xutiZYuzWtof414odrDUM5hvaFOUt/lZ5wKVioxVkUh5yKNeCuNWPkGvl+gXjHHQ70PbMPHlct8ZNfmaLLyDm3Oap5EzYlJlEvBb5qiPzYi5r+jdyF+Qk/p0Y/bhLLFzIejoSv+yGDs2+yAfPnu8siSHMJ8vHEHED90auR35tYyVgBPgw590a77EfaxViEeJE2jP0IrG8A5sE/pLYeRzvsRxjHnyViNegXcFGYkNjHcT/SBXt8R5jEatCj5Xaahkmdo2xoAOPemuO98/SmIF+wvXSjyUPBPB9VbbHR2yC/ElMxniB+x3mBh3HTnu8v+bV3OjDeu155h5kosd73PSGHAZ8/k6wrq9qmS+MAwbQ1wCHxDbk2byGc4ItdJ32+NX8Ns35id3m8OV5a9zAp8RbMWTTkgVxMasTpz0+YmHIj3XuRrAwsFe46MI34O/RwJW8chwf10UcUgUau3Du1KP5Rt6Zv8o7hhKfDGh7BTF9KLlzOeszZ/qoI4DHmuMG1gfmWNi0j1DjIeJNRzFP5zFttjlu1C/EjMBHxDj5AD61KJPSICbdScyfO6g7MsiUcSwgVioEGyJPw/eZE1iX7OC3sk74q5tECXG6yzkAlzbGtVx1XuY1rIEQOwfOIEKdlsO3KvpJc3ywZYfYH9gV+ZjrD1C3THLEG/xMtK5QSyvB7l6paxFgsiijzeEY7CTyTO17wJXdLuNGRdyldAzZj/d61HU2cDvrAsjUDvPbHOtFDQM7KWnnXqnrS9qJR5vbhsTmtIc5awnP1rUX5h0tr4DtnomJBAs0xrUON6HEVvZQiAcD4jLYwGTG+Abd0p6JBas+/fkYC5kz2A9g9Q1MtiDO4zNt+MX+5z7HmoIleb3IBngoFz+qpB9SMi4r+IZqYBrUaMhtsAupb3Ae6y/mS+R8yLFsjRvPCSrKmbgbcgfWn2x6govTjcaJXhVed92+1Ebxpk+85S/M5nNxDN8Bo0Twgwh4J/qQw04x75i9PGIs4LSFpeubAPphjiC2zKhL4s0SfijYCvHcVYZiDY+aKuVaDb0eYLyh4HDiNeiAGEg5Gvsjr+aMjewrQRerrqPzesYapzlu4DLYi59KPwI1MOa05LoRLwcl9AMbzAr6F+M07IX1NevmrWCSnDEdeAs1APx0K5gmZ40osWcH39tKLy4nhkmklpB7R4HUttQd8KTbExtNDN3HAJ7K4yqJBrbU6DnxZ3Ncy5u6EayWAGfXc4w8Xf8RTwC3IrZg3l3GEMoeP4F5eF4VVxLjtf3ZieClwGENgbk3xodnQf+oM0v6CHIG4n7CawUDc24e+x+m9FTgS4JrGC/Et5ErV11L8HXlsTfRHO9xCHsDuqaJRJ5leM3+CHAy8zxkBB/GvRP6aSE9hZy4ATWqL+uFToDdr3eMs8j58BXmjIrxpkvbgh8uYPPUQ0DsVWm9JfiONQD0wWfD1rDuqn8HH+zwnh4xfHO8n28lmKVi7cd7ZoiXmZ1UXda7rvQAJAZ41Gkh+aui7ljTMq8NKPuC/UOsh7qFbYxmfdZetA0/2zTHh/4AcI70v+BfWAtindT6tBnUV9Kb2ImeUSu8wLaoWRLRh46RqYnnuhqbxnbdY8B8Gr0I6oj1iuDPjLXfRnAb/CyUPgZjzMBoxjX6irY5YHhYNNeIuG/T5rAenB+zxwGZe7RD9qBc6lr3QojHDV17VHGZIO4DQ3IdNmNimDew55D4ETh5zv6Fx26nMYiw9qHk9kJ6RYyzwHaQRSNeB7WuKcOAPgmcF7t38yBLrGKW2txtkl2Squ5ufryaTa6zTPaIokwqgD6zpd+lJGmVTni3o+fTk6WyD4l4kB0hTR6HZmLxThwrkEG2jAT0RB0ZEZ11d4SaRTXMrI1IIOjRI4oHCk8K6SZGrGaa4z3qGRBhIft3mVEQzbrsWFhEFYK29c89gmAWpAUUGvEvEC1jR6SIjNUe7+9PzcJqef85O9lhHSFR8ULbqJ6BSJd1Vy81dDXbGO8RO9Efq2+p7CFH/ybvSYWNSDHnfVJEkWQrnZKqa/K5iC6WjrZAR9QYUYN0IpYzrU3KNNk0x/vnSRWjkRYqbyD6eGcL+ssXm5Cemo+uYEXsMhH17Gh5jc6izT64RMwhIhZ0rfybmZyP6pSVeHN8sLChRD7YhlTHsGSgYaNLHdhEwMhORDPVESVlFrNAXWGzo1CGd6waYyCnzBHZIzthHhup6nxGUqJAoKmKXS6JYuwmSC8fWd8OLemyEyE4Gn0zIh2iCBEP1sLdCMn6JTs3iaAjVoKYmyAnVgus7JC5h/BoRjnpsEDGOlIWnEsYy9qg/y6ri+Z4H30s6ep3pLOOaAaPQ3SVjnEVO7DL5niflSkT3S2R6IoqBNF7wEwplQCQot8c7yNQjPUMbEbIMJeqA3Z0s5HsxXlz3ZFXJKzskJVov7pC348P2Y52aGg0ppiB3KTyNlIVMlpJdmXEBCoRe21kP0SuML+ZKUGtiO4SaRrjWi56h47daiVd29C/ZaYCMpeu9E72bqBP+D8rZokFrMil+ssZMZV04vuSCRaV7CKwOiNKrBaVZA1ej8gKHyJqYjfaFcQaBTiPvp/Z2g8GhUbc0EvFzoyydGSn/wHFRpMr2PQzK3Ssb9McH7IF14i5IZOwG4B5ZYjgGe2Q3SnEqub42AlRUsEkkvUhS5tdHDwTslXsOtjSCUUWbWSZQu/CSeatMwN8SJA4bEaymseuZDNrsjKz2PnS9hFUY+m2Uk+MwcqRuNEc7+13Thl6ksFkrtJFxPMrdoEynm83O0/087obRPtlJUN5wMfY0UoY94pGRoftDBzpZuvcgWdNroDeiWhhU+wQNsb1M/o1ugllB0L8A8gpM9/IYsZbWYx9f6k3C1o4xvASYEtLepeohQWTNMeNfgYyD/vasP6QGuLKpYefluxFtcZ1ROR+m+y/ID8L1q5uN9xvkr1TwQID4q0yZE5nPxU1emN8qNGZAdg/kmyHDBwSS7BW4R4wI2tj3IjGBTJXhYhJrGP2JbKmjKKOrj8DWyQra43NvtTXC7uuSXfECqw/GT2Q9dhLZmZkD52RodJ1x77+ScUTYRnUPq2yrudi7k0YulcINHCMAozYsB5aN7EuNMq+slhhwl5+a9zYI2VWYw9F1wSy30YOxYJZwGmP93ODzPLY1lauBHX0RX70cGbprDU+WmeNmX32RwZAGJBzRO9XuoffGB88hrVMtbD6en/BYQ+pxx6ERE/2QZvjvVdjThUj+dGuGFH6XHsetMaNvTVk16z2yADP8Ww9T2Q+3bunLTiNvigxK/TIvi4RE3DsvieF2iEs675/7jX7lsSQRC2CtxnB+7JHN2Dv3NXPjRv94Fi8GHKWPgv3YvuCX7kHyeemuqbJF80I48r+rWTjLveHKrGVqitZW9cei7LZd5e9BO4zRbR5RKVY+uEWeyyhrvX342OPK9J7bewL9CULpPCxcBzMr/L76w+QmjHXjKJY81OAI0aVsyea/TUynW23yXS29ZpMZ9uvuXSO8/7yJ7Hpzr9LtSb98HdRrc3vUK0764fN84qUyAPdWt/zp9Ot3enFxHmLGXlh3dtnZy/o1uaPYUqeWW3lWrb7mlx9/gZT8sL9Sbq9+IfJ1S0ytfXetltUa6fNpjaN9xctMvafpFM/QHKaT23b9v5AIgcuL9z9gSOvWj6VzU+fp09zKGD69IfZ1pp9/Fve9sPZ1mfOC46u+Sfp1S9vZLsvbvST6dX7eZ+4vSdu74nbe+L2nri9J27vidt74vaeuL0nbu+J23vi9p64vSdu74nbe+L2nri9J27vidt74vaeuL0nbu+J23vi9p64vSdu74nbe+L2nri9J27vidt74vaeuL0nbu+J23vi9p64vSdu79/F7T0zX3DnnH+c22taf5nca559h9w7fL7fpE/zR2Hb/d0E39/xq0+bpNQfRPA9/JrTA83SeU3wtf7OX4W6n8C/iOH729TtBsP3/MDnPfzO5F8j9775m5YPv1z5p/+m5fN/liRsX74/N43Dv/ZvZH5FQv/dlOFfv6314rY/m0D8119nOEW8o3LPzf+2iGf96/40wB97V+Wn/WkA+7Kt6v+CPw3wb//bAL8j1f2zfxvgeybzFzORc+b8lD8O4LhmO1r9zX8cwLLfiE3/O2+v/MpbK+TFdC6ryYo8+tHj6Mukc29nwqQmtzIgvyQPysBXdSfeI+eEPQyc/+nb/XV8GayW21EZNN83eZCnn4/u3FmyKpa9u0+zxNo+pKtL8341OLtf3dryjkvHq1CxZtzdefG+xvHNlWriX9Vviazz8PomH90l1cu3O9Ka6x1u7u3bxejLaHn/cFP1vtyUyZ1bpdcfSnn35G6Z31vO/HNePAQf9Xej1WV5H0H9Hz/N7h/ImLhZ/uIPsPLE/WW455AfrqvZEwdmBWbnzWs2BfvX0mcLfNlprkL/Qy47dFFaCgNpiApdWHFqqzSbEHLgnsiiUqVhqJJ9tyQjIw/V7lZ2bP1gKyxY6WGzzx+b3AcR1gnO0TuLytT7Ep4l+w7caRWGhWK/vZQ+49wo2EtExS3sxjBPt9KzZ+eHu8+R9COLmvW71W8tyO7cjmy1PtmZufTrt9KTjJItO2ZyDtkPZFAMDVPYTFWy1T1RsiIyYR32ZMcqJTu80Duv8ZYMUulYCGOoy/2YQu81UGZcC1lGZJV6lrDX54Yh7GY/zUR++a0v/cQozkI/Ya8xC+XNEOUGsicSu6r0uAPKXnImnRDfs+47BlnCOzyPnbAijJVJRgaew136Xd9f4NxUuhMB+7zVwIRO686j4h5ElcjOcSxMFdmx9lXWl93eFNeQieSVau7JTh6OV4EwUxLow2PPEzr0dgF7sNS/7J8tMrJ+ZDcfelQLVer9loQ2UkqfviQDhPsYMdcJv/EKLXc+h+9HwN4iuYY+xT405h1w17bAs9jB5L5Jpaj3jp4bGUeaRZ84nE8/SrdkcyrxfmEvkmWF+dJWcF924HDN/i2mG3om9Nbu1R46uQ8hNBbUvdtgJ+8nDCGZXGF2t7Bo7oN7huzZD+W9C1rpjtyXHve5yavjbh2sJcxpUTF30egxJd9t0FxIVb/74+l+Z0W+CXkA0sfiLt421FxHaIF76d0S3mbJzlo1yHTnPHW0FZIP65V6J4xe4NEDs1B2qqTvKlYM7ZXaqgLd04TEZQe1YuTgjkls4GchvUxoXPa1h/JeGK1M8z+iRaa5JkEmvOo8o5XtyN/ENaZYlfAiEh5/li48d3cqlbE/xx1a3acb1J85X3I3uq7s8lTZVmJ1rmz5nONzTt5LbOnvB+SBlLTEnvBRuFMp3ih8aL3zlMoOUU/eAUg0H0Q4pkrzM9gHlx3WxJB7+mnNC5J77cSjyacQfgkiIN/QoYeR5yP64nyZYxT33sndMrWHBPCe+vMqo1ciui5zzTUhh9rhLiV3gYye9hr2e+HFNVdZduFSRFuJKA6esVWyA6gjW8gIJZzlASMT+9yujoDkbAn/Bd8LF9kVDxK5DOR9EOjCFK7MUCIqbDnONN8wtXTUzSrRH/nnPj2G744wKiS2cBaGnn5vocSzhLPFd2acSuwmWjB6CC8G3zPC8LyKvWitM9hi5Wl71fJ+8Xmi9yc6YsM2bGb/ftk138yET+l3/q4/GOPOsXea2gO+V8jzQtoMopJkMUZqFd1s6qhCO3RlR3OlJBuQG6mjREpdkyfLc+jPjPwG7UXNJUJyd1BnFX9AndEPnT4jsWQ7JbYJ+4Wc6RODbV92+bol34IlV0brCf7Z8SzNdWGkomwXkB136BK31rcVWjt5f4N7KvWcrfBayTtGSnbnudOobQHr0O+fRNwvIYeb/X/hcOkMWSHa1jYsO5TRwtF+iuyK53GXj5lH21dsy/4S9KQ0B8QRDmDEDKLIM8R82GdnLOL7RQo+7jEjImsyqyHbDCVeuJCT2JVkN+HdB1xLIRzX/dttC3kbFjGI3M7dt5G8m5nqN9uI6jD6ASWkc/bbv93i7Ox1Bek47+2zn1VEvv6LXSdMfsLkJ0x+wuQnTH7C5CdMfsLkJ0x+wuT/Wkx+fv5iB+/Sfe++/r1kzhvEFOvipxFTrP/tv+F6QuUnVH5C5SdUfkLlJ1R+QuUnVH5C5SdU/gdRudPulDv2+zP7SKI0XiN0943GuX3+/sz5wxAdH5/WJL4duS9P48eZWk+mPOP/AQ== \ No newline at end of file diff --git a/images/consumer-adapter.svg b/images/consumer-adapter.svg new file mode 100644 index 00000000..a375dcb5 --- /dev/null +++ b/images/consumer-adapter.svg @@ -0,0 +1,3 @@ + + +
Tool
Tool
Message Broker
Message Broker
Consumer
Consumer
Consumer
Consumer
Subscription
Subscription
Subscription
Subscription
Adapter
Adapter
Subscription
Subscription
Adapter
Adapter
Consumer
Consumer
Invoke
API
Invoke...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/multiple-produced.svg b/images/multiple-produced.svg new file mode 100644 index 00000000..55f5d59e --- /dev/null +++ b/images/multiple-produced.svg @@ -0,0 +1,3 @@ + + +
Tool
Tool
Event
Event
Message Broker
Message Broker
Consumer
Consumer
Consumer
Consumer
Subscription
Subscription
Subscription
Subscription
Consumer
Consumer
Subscription
Subscription
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/multiple-received.svg b/images/multiple-received.svg new file mode 100644 index 00000000..444dea0d --- /dev/null +++ b/images/multiple-received.svg @@ -0,0 +1,3 @@ + + +
Tool
Tool
Message Broker
Message Broker
Consumer
Consumer
Subscription
Subscription
Subscription
Subscription
Tool
Tool
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/original-adapter.svg b/images/original-adapter.svg new file mode 100644 index 00000000..7aff6d30 --- /dev/null +++ b/images/original-adapter.svg @@ -0,0 +1,3 @@ + + +
Tool
Tool
Event
Event
Watcher / Adapter
Watcher / Ada...
Message Broker
Message Broker
Consumer
Consumer
Consumer
Consumer
Subscription
Subscription
Subscription
Subscription
Subscription
Subscription
Text is not SVG - cannot display
\ No newline at end of file diff --git a/images/watcher-producer.svg b/images/watcher-producer.svg new file mode 100644 index 00000000..939ce582 --- /dev/null +++ b/images/watcher-producer.svg @@ -0,0 +1,3 @@ + + +
Tool
Tool
Watch
Watch
Watcher / Producer
Watcher / Produc...
Message Broker
Message Broker
Consumer
Consumer
Consumer
Consumer
Subscription
Subscription
Subscription
Subscription
Text is not SVG - cannot display
\ No newline at end of file diff --git a/primer.md b/primer.md index 75dbf25d..0d01f65b 100644 --- a/primer.md +++ b/primer.md @@ -24,16 +24,34 @@ document is updated accordingly to reflect the design decisions behind the chang - [History](#history) - [Design reflections](#design-reflections) - - [How does CDEvents enable tools to communicate in an interoperable - way?](#how-does-cdevents-enable-tools-to-communicate-in-an-interoperable-way) + - [How does CDEvents enable tools to communicate in an interoperable way?](#how-does-cdevents-enable-tools-to-communicate-in-an-interoperable-way) - [Why use events?](#why-use-events) - - [Why not point-to-point - communication?](#why-not-point-to-point-communication) + - [Why not point-to-point communication?](#why-not-point-to-point-communication) + - [Declarative vs. imperative events](#declarative-vs-imperative-events) - [Relations to CloudEvents](#relations-to-cloudevents) +- [Versioning](#versioning) + - [Versioning of CDEvents](#versioning-of-cdevents) + - [Versioning of the CDEvents specification](#versioning-of-the-cdevents-specification) + - [Development of a new version](#development-of-a-new-version) +- [Extending CDEvents](#extending-cdevents) + - [Adding new data to CDEvents](#adding-new-data-to-cdevents) + - [Adding new event types](#adding-new-event-types) +- [Adopting CDEvents](#adopting-cdevents) + - [Producer-side architectures](#producer-side-architectures) + - [External event producer](#external-event-producer) + - [External event adapter](#external-event-adapter) + - [Multiple event formats](#multiple-event-formats) + - [Consumer-side architectures](#consumer-side-architectures) + - [Multiple event formats through adapter](#multiple-event-formats-through-adapter) + - [Consumer side adapters](#consumer-side-adapters) + - [Multiple received](#multiple-received) - [Acknowledgments](#acknowledgments) - [Use Cases](#use-cases) - [Design Decisions](#design-decisions) - [Keys, Values and Types](#keys-values-and-types) + - [Simplified data model](#simplified-data-model) + - [Artifacts](#artifacts) +- [Whitepaper](#whitepaper) ## History @@ -89,17 +107,23 @@ create a system that will: * Create a coupled architecture - using point-to-point communication creates a tightly intertwined architecture difficult to expand and monitor. -### Simplified data model +### Declarative vs. imperative events -In the initial version of CDEvents we tackled a simple scenario in which -each artifact is built from a single repository and each service is deployed -from a single artifact. +With imperative events we intend events that are sent with the intent to trigger +a specific reaction, like "start a pipeline" or "deploy an application". +Imperative events create coupling between producer and consumer, and typically +require some form of acknowledgement to be send back by the consumer of the +original event back to the producer. -This data model is somewhat limited, but is has allowed us to put more focus -on the overall structure of the protocol in the first release. +CDEvents are declarative events. With "declarative" we intend that the event +producer sends information about an occurrence, but it does not now how this +event will be used on the receiving side. -We plan to extend the data model to support more complex scenarios in upcoming -releases. +A behavior similar to that of imperative events can be achieved by moving part +of the business logic to an adapter that listens for specific declarative events +and decides based on a set of policy to trigger actions in a downstream system, +similarly to what is described in the [receiving +adapters](#consumer-side-adapters) scenario. ## Relations to CloudEvents @@ -189,15 +213,162 @@ Once a specification is ready for release, its number if updated, the event vers are finalized (`-draft` is removed), schemas are updated and a git tag is created for this last commit. -### Artifacts +## Extending CDEvents -The specification has chosen for v0.1.0 to adopt [package-urls][purl] (or purls) -as the format for any artifact identifier included in the spec. Purls provide a -consistent format for artifact identifiers across different package types. +The CDEvents specification is designed to evolve over time, to accommodate the +need of CDEvents users and cover a growing number of use cases. +In all cases we prefer backward compatible changes, which could be new fields in +existing events or new event types. +[Versioning](#versioning) of messages is used for producers to validate messages +before they are sent, and for consumer to know how to parse them. -CDEvents wishes for a format that can be used to reference to an artifact, or -package, that is independent from the hosting storage, which is a property which -purls satisfy for several artifact types. +### Adding new data to CDEvents + +If the data model of a CDEvent is not sufficient, events producers may choose to +pass extra data through the `customData` field. Using `customData` can be an +effective interim step, as it's easy to implement and can be used to help the +migration process from existing events to CDEvents. + +In most cases though `customData` should not be considered as a permanent +solution, since consumers don't know how to process this extra data, unless they +implement producer specific logic and sacrifice part of the interoperability +benefit of using CDEvents. + +Adding a new field to existing an existing CDEvent type is a backward compatible +change. Aspects to consider when proposing a new field are: + +- is the field generally useful to the CD community? Data that is unique to a + single platform is likely to be rejected +- what are the use cases where this field will be used? +- what is the format for the new field? Please be as specific as possible +- what is the name of the new field? Check the [SIG interoperability + vocabulary][sig-interop-vocabulariy] if a standard name exists. If not + consider proposing the new field name for the vocabulary as well. + +### Adding new event types + +If a new event type is needed, it's good practice to contribute the new type +into the CDEvents specification. Custom events can be used, but they should not +use the "dev.cdevents" namespace for their type. + +Custom events are not interoperable, so existing CDEvents consumers won't be +able to handle them. Introducing a custom event is simple enough on the producer +side but it doesn't scale well with the number of consumers. + +Adding a new event to an existing CDEvents bucket is a backward compatible +change. Aspects to consider when proposing a new event type are: + +- is the event generally useful to the CD community? Events that are very + specific to a single platform are likely to be rejected. If the event + represents a functionality that is currently only implemented in one platform, + but nonetheless generally useful, it can still be introduced in CDEvents +- what are the use cases where this event will be used? +- what are the sources of these events? +- if the event includes a new kind of subject, what is the data model of the + subject? What is the format of its ID? Please be as specific as possible +- what is the name of the new type? Check the [SIG interoperability + vocabulary][sig-interop-vocabulariy] if a standard name exists. If not + consider proposing the new field name for the vocabulary as well. + +## Adopting CDEvents + +When adopting CDEvents, producers and consumers alike may adopt different +strategies to support existing event producers and consumers that want to +consider existing messaging systems, formats and event producers and consumers +that are in place. +CDEvents is a new specifications, but neither CloudEvents not events in general +are a new idea, and several tools may already be using events or webhooks with a +tool specific data model. + +Below we consider a set of common scenarios and how CDEvents may be +incrementally introduced in an existing system. + +### Producer-side architectures + +In the first three scenarios, CDEvents are introduced in the producer side, +either directly in the tool or through some external component. + +#### External event producer + +If a tool does not produce events, it may be possible to use an external +component to "watch" a tool output (for instance logs) and produce CDEvents. + +If the output does not contain all information required for the events, this +limitation can be worked-around by adding the missing data in the tool output. + +This solution may be brittle, because the tool output may not be a stable +interface for the tool, and it may change over time without notice. + +![watcher-producer](images/watcher-producer.svg) + +This is approach is certainly valid to build a proof-of-concept or experiment +with events in an existing environment. + +If the output of the tool is structured and part of the tool API, this may also +be adopted as a permanent solution, to keep separation of concerns between the +tool itself and the process of generating events. + +#### External event adapter + +If a tool does produce events, it may be possible to use an external adapter +component to convert the existing events into CDEvents. + +![adapter](images/adapter.svg) + +Similar to the [previous case](#external-event-producer), incoming events may be +missing data required by CDEvents. If the events come from a tool that we do not +control, we cannot alter the content of the events, so we may request the tool +maintainers to either add the extra data or, like in the next scenario, start +producing CDEvents natively. + +#### Multiple event formats + +A tool may start producing CDEvents natively. If the tool previously produced +events, some consumers may expect the pre-existing event format. This can be +solved on the producer side by sending both format of events in parallel. + +In some cases it may be possible to use a single broker for both event types, +for instance if both formats are CloudEvents based. + +![multiple-produced](images/multiple-produced.svg) + +### Consumer-side architectures + +Typically it won't be possible for all existing event consumers to switch to +CDEvents at the same time. The following scenarios show how an incremental +approach can be used to migrate consumers through CDEvents gradually. + +#### Multiple event formats through adapter + +In a variation of the previous two producer scenarios, the tool produces only +one format of events, which is sent to the broker. The adapter subscribes to +the events, converts them and publishes them back to the broker. Consumer may +then subscribe to the type of events that they prefer. + +![original-adapter](images/original-adapter.svg) + +With this architecture, the adapter may even be able to convert messages from +different tools, instead of just one. + +#### Consumer side adapters + +In this scenario, the tool and some consumers use CDEvents. New consumers are +added that do not understand CDEvents, or that do not support events in general. +An adapter can be used to convert a CDEvent into the consumer specific format or +to extract data from a CDEvent and use it to invoke an API for the receiving +side. + +![consumer-adapter](images/consumer-adapter.svg) + +#### Multiple received + +In this scenario, a new tool is added that produces CDEvents. An existing +consumer wants to benefit from existing events as well as the events from the +new tool. + +![multiple-received](images/multiple-received.svg) + +A single consumer may receive events from heterogenous sources. ## Acknowledgments @@ -245,6 +416,28 @@ Keys and ENUM values are always written in [lowerCamelCase](https://en.wikipedia.org/wiki/Camel_case) for readability purposes. +### Simplified data model + +In the initial version of CDEvents we tackled a simple scenario in which +each artifact is built from a single repository and each service is deployed +from a single artifact. + +This data model is somewhat limited, but is has allowed us to put more focus +on the overall structure of the protocol in the first release. + +We plan to extend the data model to support more complex scenarios in upcoming +releases. + +### Artifacts + +The specification has chosen for v0.1.0 to adopt [package-urls][purl] (or purls) +as the format for any artifact identifier included in the spec. Purls provide a +consistent format for artifact identifiers across different package types. + +CDEvents wishes for a format that can be used to reference to an artifact, or +package, that is independent from the hosting storage, which is a property which +purls satisfy for several artifact types. + ## Whitepaper The [CDEvents whitepaper](./CDEvents_Whitepaper.pdf) has been originally @@ -259,4 +452,7 @@ created and its mission. [whitepaper]: https://cd.foundation/blog/2022/06/07/cdevents-publishes-first-whitepaper/ [ce-design-goals]: https://github.com/cloudevents/spec/blob/v1.0.2/cloudevents/primer.md#design-goals [ce-partitioning]: https://github.com/cloudevents/spec/blob/v1.0.1/extensions/partitioning.md -[purl]: https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst \ No newline at end of file +[purl]: + https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst +[sig-interop-vocabulariy]: + https://github.com/cdfoundation/sig-interoperability/blob/main/docs/vocabulary.md