{ "cells": [ { "cell_type": "markdown", "id": "0a5575ba", "metadata": {}, "source": [ "# Sensors\n", "\n", "[![Click and Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/metadriverse/metaurban/blob/main/documentation/source/sensors.ipynb)\n", "\n", "\n", "Sensors are important for collecting information about surroundings.\n", "By default, all environments provide 3 basic sensors:\n", "\n", "- Lidar\n", "- SideDetector\n", "- LaneLineDetector\n", "\n", "which are used for detecting moving objects, sidewalks/solid lines, and broken/solid lines respectively.\n", "As these sensors are built based on ray test and don't need graphics support, they can be used in all modes.\n", "Also, you don't need to recreate them again, as they are not binded with any objects until `perceive()` is called and the target object is specified. After collecting results, those ray-based sensors are detached and ready for next use.\n", "\n", "You can access them at anywhere through the `engine.get_sensor(sensor_id)`:" ] }, { "cell_type": "code", "execution_count": 2, "id": "d07cb731-8a81-4fbe-827e-1ca2d4b150e8", "metadata": { "tags": [] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Available sensors are: dict_keys(['lidar', 'side_detector', 'lane_line_detector'])\n" ] } ], "source": [ "from metaurban.envs.base_env import BaseEnv\n", "\n", "env = BaseEnv(dict(log_level=50))\n", "env.reset()\n", "\n", "lidar = env.engine.get_sensor(\"lidar\")\n", "side_lidar = env.engine.get_sensor(\"side_detector\")\n", "lane_line_lidar = env.engine.get_sensor(\"lane_line_detector\")\n", "print(\"Available sensors are:\", env.engine.sensors.keys())\n", "\n", "env.close()" ] }, { "cell_type": "markdown", "id": "d33b3e7a-223a-4a89-bb9d-040f3c233adc", "metadata": {}, "source": [ "## Add New Sensor\n", "To add new sensors, you should request them by using `env_config`.\n", "If an sensor is defined as follows:\n", "```python\n", "class MySensor(BaseSensor):\n", "\n", " def __init__(self, args_1, args_2, engine)\n", "```\n", "\n", "The following example shows how to create a RGBCamera whose buffer size are width=32, height=16.\n", "**Note: for creating cameras or any sensors requiring rendering, please turn on `image_observation`**." ] }, { "cell_type": "code", "execution_count": 3, "id": "425d66f9-118f-4b91-a343-ef1385281ba8", "metadata": { "tags": [ "skip_execution" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Available sensors are: dict_keys(['lidar', 'side_detector', 'lane_line_detector', 'rgb'])\n" ] } ], "source": [ "from metaurban.envs.base_env import BaseEnv\n", "from metaurban.component.sensors.rgb_camera import RGBCamera\n", "import cv2\n", "import os\n", "size = (256, 128) if not os.getenv('TEST_DOC') else (16, 16) # for github CI\n", "\n", "env_cfg = dict(log_level=50, # suppress log\n", " image_observation=True,\n", " show_terrain=not os.getenv('TEST_DOC'),\n", " sensors=dict(rgb=[RGBCamera, *size]))\n", "\n", "env = BaseEnv(env_cfg)\n", "env.reset()\n", "print(\"Available sensors are:\", env.engine.sensors.keys())\n", "cam = env.engine.get_sensor(\"rgb\")\n", "img = cam.get_rgb_array_cpu()\n", "cv2.imwrite(\"img.png\", img)\n", "\n", "env.close()" ] }, { "cell_type": "code", "execution_count": 4, "id": "1dd842e2-c89f-4715-af17-4a2d00f7bdd9", "metadata": { "tags": [ "skip_execution" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQAAAACACAIAAABr1yBdAAAgAElEQVR4AYTBXY9t6Xrf5d//fsaYs2qtftuOjUDmM4IQSiw4QJwhYhC2kkgRB0nwTiCyHMSXAskh2i/dvapmzTGe+8cYs9bq7r1zwHXlv/gf/yUQkM8C8jPlQYgKQgCVh1aIfBEDBI2iBpMAIpIAAZGfhFgcWvEERCaIEWrQc60sI5c1I1WI2dvZ1NLDtEy5Tbe9G1qiyFK5Xvjqsv7ph/zprz5ey3UZozJG5USIona30rL3nG23l5F1qVQtI2NUUiMkQBJ+ooACclJACMhBCCc5iPwR5SQnFfABAnhCBVRAEfABQgA5CQH5QkSUhJOAIs52b9HutOz27N6bH17m3/8wf/PaP9x2k7KVBBKgu0eVCiQBVBIBDUEBTcIvKQmHAAlgRCqpcBkFuW27hHfhslSk7Qnr4Nt1+XjluqQqo3Jdxlpu7X1Pd69r7d1vW6/rsJ17UhnpUUEhU6a57xL/5MP6dCH/5T/+VwnKL6lJeKdJRPnM5sEDRCWRiAhBCViNUUQxEBLwAPIgxSFgkyAHbRAqXKoKxlLgt9fxJx+X2zafL4uJds/ZLTXGSJoa+fS6/9+/f5HlNhX2fTanNB/W+tOvlj//7vK0jA/X8XRdUqlEet+1nXLf597uu9ucVJ7X8bSMdUlVRmWM1CGphJAE+YmIqByUB/kiKCAgPwufyWcqDz4AngL4GW1r8IGDEA5ieBDDSQERT5yEttvqpqcTlT5Ia9vdue/1//5w//sf9x830YCQcFArkVM4CYKAVPjM8EeEcAgISVDeBQJERZIoKQIhhMRl5ONS1+LjtS5LjZG1uCysS9039/Zw25n2dRnb7G66ndbUbXcdVYOteX3bv7qOj0+jYv6rv/zfVAIkQPhMCCLyhYKCKA8qKoEAETAqYDWEBxVISAIo3R5C2RCToEIgOpYUKCm+eRrfPo3bvn9Yl++el2VdylYaW+7Tbmd3TytVlU9v29683vffvvZt0nNOmKRgScX+7nkslT/7ev0HX12/+2pdKtLd7tOX2/7D63afLMXzdXm61KUyRo2lRqhTKoxKKMIhhCAHEXzg5IGfCMghKgEEQgJyUIgBPOABUFABaRsz2xO2djcikpMth4QHkVO1Imh7oM3U2XY7m4PaByMJ7Pb3t/mbl/7h3m8z29bhlAAKAfksIGAIIUQOHsIvhC8CJPxCaEUCgapKWEaqsk855NBtf3tZvnkeXz/VWiyVEdaRdYxd7rO3fX6699657267VbXPNpHs7cTES+WpqmXq1uS//p//RjkkvFMSlFMEPHBSEeWgJCigICQoEOWUBhQJ4aAmKA9RA6i4jCoCCpVclnz3vCzF2z7/7KuL+nrvbz8sz5fF7lG5LKMq0vfNbe+3bd73JjXtOVVuc/7+ZX+b9Xafm/02RZBDR62R/k8/rn/+3XJZxsfnRbE9kKhVuay1jiqoSlUOo5LUKBIq4QshQTkJKjYHAZUHFdDwM/kiBBTkpICABm0PaKstrXY3HrpRA0k8EB7CIfKggtrSzdSG7myzt9lQauvWts7ObH/3uv/+5tsuosgpxU8C8qAkGN5FDoKQ8AuGdyWHJPwkaF8qT0td1uU+Z4ugeRo+r0WoYsSvn5avr+MycqgyBN3lbZu/v/WPb9OMvZ3TvZ2diULBKNZRiKSbVmP+4f/yaw8QonIKoHKIBDxwEBDlJ574Y4lKBHLgpHgAkYdBDoJ0wjWVQu3mutavPtSvPqzLMrr7be/XfT6N+u55/XBdqqrbU3eD0sqD8rbtr/d+ue+3nU/3+buXbe9Mss/uJuAB0PVS//k346uny7bN++zAV0+Xr1Y+Pi+XZSxLDhUC+ayqzEMRQBAFFRURD4ASMMhBFFABFZCDOZAIKQ7hM3mYjdpt2xxUmKJT7VawhWiAIO+SEBDiARtm0624Nfvu3uzNPnvOJrXrfefTfSLT/Lh526ZNeMhBTiEip/BOOSTQ4V04hPAgkqAkkVNADlUxVHEd+biypPYGIf1hzXdPI2PYVrEuGXGpVAVIioO+bP39bSa1xJHcp/etm/ywuTVqwtSto1byvOap8jSSv/jrf62ASiuIUUBIFQQFVEBFQIUkiAfeBQ+oSSyKjMElJ7BJ6z5bIcEDhFFJLFNFFYPU4rXqm6faOvsk7FV5Xpfn6/phzah0Wwkwu1tnmwO5b9unt75NX7b5tvm727xPtbsRNCpqXFJ/8mGsle9f92WMy8LTmusyPl7z1XU8reOy1FJjDKoSKkUVEAgIKHa3tkLsnrP3aStQSVWqeOcBbUjwQCtIxghV5B2QB0wCtKdu2xMqqFNbUBCiICpIwkMSvlAks9He2/v0bfdt69vWt3s3NWGfvU1uM/dtb5XYEBAh4V0IkQeRU8JnIcrPghqSIJ8JBCRQCWAQnwZfX5brkhFSLMUIlUiQMfr5UgPWdYzEzja7QXu2GMJauU/+w+t8ubtUNkWWkXWpEd82X+5eF65rngYh+Ud/9WuS8Jkn3imgmKQgkrCroIg2INAcwhcCCgSqslQKRh2soLS0pspm33d1VHVliQFSpK9L0dgmJS7x+bJ8dc23H5YxSi0o0rJ17+1tm7f7XlX77tvk97f9h7d+23qqtPIQQIv4VPnmw/JhYWvm3uqysKQq/c2H9Vcf1utljGQZGSOVkZCQRAFbu+3p7G6xo932NnufiqMyiqoSgTTiCQkhQCukwkiNMSpJJUACkgSSoBwSpLu120Pw0A2e0CQQeUiAcLBbIC092dute++83ufr1q/3fr33bbpNWmbTZLYnMCQcGgKRd5HWSjoESEo5BJskyin8RIy8E0KAJMtSKQdcBh+WQhvGyCjWQtPTGgGvS11GlmJdsu+zidQ+uw2hQiX7Nj/t+f7eU9dRS6hwWbIUaaV2MqcB7I3kH/3Vr/lCQES+sCEgCS1i5YAC2gHloJzkZ8q7xEqEJVlHjUHCNdXtrbWdvYeRpWIPDJXYGAIulZEK/WffXJ/WuoysI6mEdLv1gd2+b32799YHNvnxdX/Z5zYzzexWpidg0jiW9LdP48+/vQzSLbDbOfnx6fLhkutIVY3KYRmpCgTQ7lYzu7c5ZzObuU8kRXcrrUIlIxG7m5CEhwA5kBhzqGRUqioJIYSfSGMrsIxUIoQQEP8QCRACNLYC2i090+19et/93aftbeZt7tO87b3P7LpNJ+UBUEH+QEBOagxIIp8FBDmFPyYEIgchECBZijGqgHioqmkHRqWSQV/GIl4qlzXrcCRLZam0zGZr9xY7CbJ3aHdym+zdax1YK5Dbfb9cljn7be9JhClbk7/461/zoBwEhOCJEN4FUAEB5WR4F0BQaEiAMDkFMOEgIAnL8LqM6xht3/dOAkSTAq6DVCo+LTXCuozQoZaKaQj0NMsYvc97u8+ebZP7tDtgt7O75XVnm92apGXbu3XCnLkM/+yr8c1lJH29rHYvqaVYRtaRyzrWkao8UDmBiqLOdu++727bfNvmvZ3NtjfJZbAUAUnoUZWwVFUCikmEKkaoFKdAwDokQQkgzu59qozKZamqnCAJAUUBQQgBPCBm7xa6e5tue++z9+a28e8/7T+++dbKw7TJlO4WKhHQVCA+JEEBoRIPEDBRVCAJGJB3AdQkKkn4LBIgIRwSEhQDREGrEliKUYQs8brkulQlbaNJbc023YzdqVSBmU1glCOMUZfB28Ztz9s+K5i6zW45BPIX/+TXEQUihIfEFiQJtAJyCqByspOg8qCkoEAOkUPCQ0QeFJUQUqFwjKwDSCKw69MYa3hea+u2bSN0u4za7fs+K0uVyMs2b1sXo5kNo/K0DKQgxaf7nIK0XaltdiBJtyHfPfOnX62ggD4vyzcfLuugUqNCUTlAKAKoyOzeu/d2393m3Pbep697v93nbKrydCmgZye5DNZ1lHYCDBijqkyoqgFVFWrvfr33tpuycF3GqPCwdd+3lgoWfVlrXUaSIoQQbCGBgEBaZvc+UVtDtbxt8+W+/fDm97dpc5t9b/ZpkwZFozMJkAPIg6bCQwhEPCQB1NYkahKgkYcY/v8EgqkgJmJLER6MRVUQKo6QWrBFJGQCYqVgVMCQKtdiIZXs3T9ujPBxzZLcdm7drxMlkMN/80//jcgXSuQ/EiOoBJB3Eg7yEw8xpBIQSCgCGFoD3RxEpAUiVjHCwMtSKS7FZYTw6TbfOsp9n1sjVkCvy1IVuwO7bNMpapGRLCPgugTYtiTce84m2G1CVcTnZfzqyvN1uS71PPjwtFzWkSIWkJPkQOQnjfvsbZv3vW9v+w+3mcoobrtlqrwslWTvHmQZXi6XKnq6zzlgjIxRFSAHdMo+fdvmbIFlZF3G0xLJPn3d9vu9n65ZRyAJEKR1KqEosKXbw5TdvLzNfYqpqn2yd1eQed/7bc/vb/u9mWZvW6nEREUgCZ8JSUAIh0BVJUxRsFuScAgqSSuHMESDsTwARfhDgYSDYNIYwrsQeVeGEBCCJELCQZAsYSQpR6roUVkqI1yKtTIqhPvuy9Y/bt66lILW/Lf/7N8oPwsRFUiihhAQMQmgAoqAJFFElAAiB4tDyCDyEFAelIMgKCqQpJLYozKiSbcKYbZTZjvbQ0jlgJgQQJIogpoi8LTUbJTDfTYwZ89wqTwt4+unfHWttj8s4zr4eF2WMZKIsxnFqHBIKlQVqBy67Xaf3e3Lvd/2OVKmL2MkoFWsY4AhKQTM3KccrEBOYJGW2d577rsk15HLOkI1zkNPEKIg0JJupuzdt7utUyBLmPCyt2a2963vzdt0tsBStc+WbO3eTm0DKF1UU0E5yGcJSE6AFUIAYVT2VgpUwMlBpSqRQwgHmYUPVcVDNQkhKuEgGE6SgJAYwqlEPks4COQBKpQkVBhJQcIyXKoqdvdkvG3em4atFQKBquS/+2f/hwg0fyAgD4pAQMJBPjOoQORdK1+IyiGGU4hiEkIIrdIKCHISMSCSAySxJWiH8kSHL0wCBtdRVdhdqQlzWmLSZHa3JrQiI1kWv13H19fUyFoFWcslGSNKkmXJOqjUGBUkCaeEVhshEaonYhXhneSEStSGbty97fNt25EK61pBk9nO5u3er7vid0+1jByu61IotIdu39FN675z6/79rW9379PdvE0Dl0qTl21OUROmhFNLNwqYVCMiBASCnAKVqJBwqiIIAZKMyqUItc2exgO2CoEJciohHCYkRBRCIJJEJeEh/JGAMyThDyUEkvAuDAkhVACTdLM3KocgQggIASFUAuS//+f/FlBaAXnQJEJCkQIfIK0dQgCxlT8kHiBtAyEdQ4AQROUUJCAm8QAeIEBojVEOEZVf6KgkVIWHJGulQiVgYBl09z5JFfq2d1Pg7EaeLzwvPK0L5m2fkA+XcRkMWJdcRtaRURmVBORQlaokQoCcgPBFVZJSeVCxW7rdJ3v3Nvs3P95vWwcSqzI72+ytBSo8L3UdtY66ro5lVGoJItgKqN1su2/T+/S2zU93f7zzutkwpxwq23Tv5kFNis+CJhxaTtqVAyhBOYSQgiUJCK0NBOQwkhhClEoloqJu4RApeRDCSQiQoPwkQTkkEQTDu4TwLnIwkAABknCyiEB4p3bTHSDhXULCIeEhCYf8D//rvxWaCIoYTgJSgBwMhAChPSDGAIInAg2CIA6VU4dDA4ImUT6TkwesICJKgiAHgZYHsRKgOclBQgitmERNkCQCg1QQklQIis6sg62zz1mVSwWocBm5DC7rWCvXhaclqYQIhaMyKlU5VCUhqST8QhKVz3yg29k9Z+/Nbe/71re3/XX6uvfL1vueKpYi4b73ZdR1qTHyYeHjpZ7XhbJi5YFg9u6X+/zd63bfkXrZ+vtbvzXbpDWchFZghkNJJSEiQggohy4OyrsAAoZUOCRpUIskHMIpJw4hKgEhBxQwQRGUkwJJFEFNSKJCgCSNhAjhkANMJYQc+IWEnyRRDmq3IcYQICEJfyghJP/Tv/jbgEEQ8MBB8MQhpEFAPEAgCS0BEYUEiXJQEhFCIyDGBFoFQUAiIAQQFCMQUHnoDggoJqByEFARsDm0tnIIEBBSQVDDaVRGslTaqOB1hHCbXotreF7r+VLXhSVUFaEl9qixLhnFqBqjqkgqiQokHJSDBwiIitDtnD2n9723Ztv79T7vu8vi02Xt7tvWr5s/3ueSbLN38vWlvrrW06h1ZFTAlEtVJcDb3p827f701r99y29e3LvFQEROIqSLCKFCCYR3CQpM5BROIsiDQFV5gIJKQqoSTOIhAQOBBIKWiICikpTyoJIgh6g8iJCASkCScAghwAwHMSQhhHASApIg79LdEBAIkAABIQESIIRT/vG/+FvlkKByCD8JCAE5eaIJoJYBkxCISjh5AiKfiQISENQmhEhA5SAiB9PKISKNbRBRaR48IMhJxYiAGtIoKkhAbSAgUCN8vNay5FpcCvC61H13b+5T5brk44WnUddLLaVmTluTrGOsI8vCWGqkkqh8puKBPyZ0093b3m/bbFNhDEJts99279OXe2/NGoVKvrrUhG32UiS5b71UqgocI8F7c9vm25bfvM5PO/sUCBAQQg5QHKyQpLFgJMIUIYnNIUERW0lQYCSEIgGEUAHMiYMEDTE+MAkghrJNGKElsBMQlQI88Jnyx8LklHBQEg45AAnKu4STiPwkPCQgp/AuhEA45C//5d/ZJgjIoTGSEAhpTECSiIFAggpIQggJrUiQIKghclDSgqKQ1gZECcq7CCogAhpQwYhyiAo08tAJNjTEpsUYoshBG0QUFKFMyFj6MvI8+HAZT0uNeFhHIK9b33ZvWz+v+XgZ1zXXpQKC2gisNUZlGalKBQggiogCSQiScIpga3vYpi9ve2dMp81t69fdt70TlsqnNynWgqR316UGTbI3+xQcowp387LP+8beNjGEgzyYgUKPHBhJEXWMjMpsFTVVwaoAMY2zFdAkYAigSagyUAkBaaMktL1PBQGTIGhCQCMCthEmIgqoOQCtSQCVB6FDCEFJeJeAEH4h4RAQUDlUeJCDkHASCOGQhPzlv/pbIMYmQU7hs0QeBIlaUIkYCBEMFQqT8EWiJkBQDh5AUQEJ0G2LirRIRPlMVA67ltKQzLYDIgImwYCIkVMroAItkAQV8NBFTKgk9nXNh5FlEL0sWUe13HZ++7JvnbX81Yf6k4/LOmpOt71bgVEVXJeMyhhVIQEJiAESoKoSTiJ0N+0ut60/vc2X3R/f+mkwiboMIG+bt93bnm4TDhUGtE6ze4C45CTORlAIgUAF+VlipRISkApJgOBSdRkhQrrTICoqIKckGGcLBmICBGmpkGLu7MYHEFCrBigI3SptCK0t4Q8ILQkNzUkFKuEUAiICSYDwEE5yCiEiYDiEAIGEFjklhEPA/NXf/J1yCCcBAZMAKg+i0AIpQKtqMkcSAgIFSUgQwkEFWiHdLekWUiEh0Arhne5q6IkHMEGEbtHALodWOXkIBxUCaiAgD60hKocohmiBVfEBXSojLIPrqOhSSr3cZzs+7b0U/9lX9fXTaHl5m7dpy1q5DC6D58tyGZBwEDAhsVI5kQNRtGfb3a8739+2ret2d8rWPeVtb2VUtsm92VseiiZgTKFIQRLSkISTQBISKwkkAUNSEEMGBJIAqRSsg2VkrTQo3R6mQLptMQmnxm4OLRXGwtwV1JAabLsNlYixPMCIU6ZsHUUFxG4hQEhCQmvLO4nhIO8SIPxMxAAhBCgQBEL4WRIF5JSAEEgQ5JS//pu/U74QEoSoJEHUpEwxLX718enDmqfLMpIMaO77/P7lzSytt/s+Zz9dL5/etiYQdKfpKK0tLWIhkAqgiDQCQZPgCTmF+LBHxUOnUfAdYBTCQR4kB+SLgAhBTmlIQgx0wlJZKkXPzm3j1h4q+QfPeVoYVffpbWsq+z7HqEvlw1rPay2Jwe6R1DCVSkZYAgGCmbr1fNv97Y/ztmez36ZzRmi4twcEDewUISRROUk4JYxEJIRAC0hCkiKHCoQAgVikOASEjGIJY+Sy1EiUOZug3GdPsu1us5OQALYJDy5LARo0MGKNmjJnV1W3ghgym9lCpgJTPHFIXJZS9ml35BROHRpDgEBAMBwCyqESNAkPEYOBEJFT+CLhYCeB8CAEhPz13/w7EFASIElDfVjrP/n6+nyptRDnTIplJCEBw6lbJDwkPFTPfZIfX+63zTFq4JS///71dceEJkHQQIdTYyyhMSCnRhvlIAKNCogB1CaeEDzRgMhngYTwLgnQyiEGTFEJBykcQ83s7M2uQiVfrSxFN61LITTYiJdR68gILYHLwlqpHBzJKJIA6i777Ne7P2zuzd5u0s2cdmP4hQQBlaBgICKQIkQFEqKEQyWpKg5C+ElACXIqsoyMuKSWhW6BZdSAvXmdvr7N3QOBQKAqh+6upQIjSEZYCm2pvU0cVQngnEAaIcp9m6ZueyNV4UHxQAAlCQ+NBiEwCHK4LFbigUxFHsIpHeQ/kqAcEg42hEMSTkKF/JNf/zvkaR3XwdfPy4frgl3JMipFVQoSQIgQwoNftLwLpAIo3SYkQJLCbqHqh0+vt7u/u/VvX95mQ6I0ilBBQEDUJlNbuk3CQR6Uk9oETdKKJIgBQoiICQgCHqgEFGPAJHIwCfJOaKkgVBK6km6XwRKqOPQMCZBEbHuQdVCFMpIRKwcOymx3adinqUCUyJStmdOJkFYOKqc2YhK+CAgJCDiS1kog3aY4qJwSUAlJhIQcMLjUWNKQ52XUqNu+b8199771FBAYFXGpLFUJo0rtdu8mUaqsSuBpCVCp+1TU3Lbe2tkM2GWXJSRBCLaCoCFySBTCKRwGn5VUBUgihjTdisHMSkH4TCEQFCGcEg5KEh4SlPzTf/1/XgffPi0fruPDZVQFabsqlaSSECAcQpSDIh66BQGVUxIOCoiQQ1UgJ7DbbrfJb358HSlS/8/3r//hdWJATgkooGTbe0J3C00AoRSFGFSg+CIkKISQQCABOSlEBJIQEHkIgop8FgIkETRJFRXWhIjeGyUnIksFTTiMJIVaSWCz58xsCSMBJNNuOYyqQONsbVoNhyQKIYB8pkKAJBAiqAkHQRGRBIE2hKIqQAAZo56qGP3VOggvm9s+G2azTw6BpVJFFUW6nbK121RJWbCOcRlUUcWwCK0ve2v2vbdWIggtUyLh1KEVUrEgQdIkIAZEYCEJIZUAahIRgQjBKrQUlSDv0uEQIIAhnJR3AULyz//3/+vra33zPK7ruJQkCgjWIZWQCkI4KIqftQqoIAR5Jwd50AAJSdWoYMts5+yqVOzO7z7d//6H+e8/3U1pq0BV8aDuzWzb3psmxWdKODVUAspDRMCRFJ81chBCCAoI8k4lQYJpJSYgayqHQiwIViphEDWpSdMSciKQyr5rEthnjxFaCGF271NJo4aDBnbRiAqEQ0hEwEpAEgzYEAhcBkmERiVQoNGuqoQlaVSSjErrOrKOrMUyaq163ebL5oixSC+VUeFhdkv9f3TB266ta3pY5dber4+55iqX7QQ5SGxuGBQOOYpACKIIUMjGGxHZXAfHiE1Ioijyply15hj9fxt/H3OV4xzwPN8+9hnPdvO6mvGMX45fTm/C+IzdHSd65rf3/ViEoBssXktRKYHijeTfK4KEuB0J1DfdIr5TA+KMDrsEFUpykwXkJkWjIFTcRoGZ8b/7n/75sV/+OD++Pd6OcxyteGlmVEiMl4qIbkR0g4pbxW8FChH2QtxURqONSjznFLtc28b//q//8lp/CpbvZjxyLdDGtV0XWyi0BQHxIgRtvFhAQfx7xW812HArAkIZEDAQOjMPOXIGP1UEAhZBW0AviDPXUiHdYGAQXdolXoY9M8W3575fbUJqBohGEMSLUQEehYfzw4Nrd2tDPXqGM8pNwPog4DjR89ovj/PD8Bgj9aePlltfjltHH75sfHs+l3leLTy5dVNHvz7O2+wXWf12rbm18X7tRss6VLwsXNuFhYCNAsJA/AfiRVheZnxkpQYRnw48HufaW4EjKG4JKSEkAnJb1hsMjoD+j//kn/749vjFD28jiuNMIlALcjMaXiogoKKAgAKWiL+xBXGLcKFld+PFT0UFOI5ufnu//s1f/fQHv/vjx/P9X/3l8+/88scv+405/+rX/btfPx8HUV4Wn9duNz4FBIRaQcBCIMhLsCAv8anUiBit1IHH4A0C9ciRETUofha3QJiRAjauuC19YilgKZJiaxxoC6SCZLfRM8hce+NZQUsk/PA2b+PbmWILqRRpRkUQleLjue/Lwm7qVWfmB31Mji/tNtmMu+zu25mvR/G9Pq4+rl189qIODHw5M8OI8LELQy0+t91uysVc25ZYLYRCIJ2xGzedhhErIOKTWKkUKCBx64xnKK8L5CYkt0CllJsIDCAr3xmQtz/84z8849uZMyoKKiojt6sX4mcVP+tGBBQEFCByk4oXeam4tufude1u4+BLBYTR1vPiyO/88KbgDZ3ffHv+H//u27/81XXhsaPA6BmEa3fBKMDdsnjZSIQpodoZCAQUQqhAQRNGuemxsXGOTjkCQQhUyi1eBoUKUPlbFqrR3a4tIYomcuHatoIjX9+mel58PHvGsy1HHuPvfDlfB4ei2Nh6G5XgWVsbuzzrWj721sxUozO8Hd8cInqcOfSxYDOYFfplPPBT/ub9et+2ABEZOeObPo5Oz8trU1qCj92WinFgYyN5iU8p3gAdFIRga7cU5CYTn9QAMbqdw4y7tSIqf4ukCAuBSKiAk4AOjID+i3/xx4/jGfGGCFTAeKPYtqCAbty6ARUvRkVU3IpPAeMLEPFi0La127dvT4S4LQU658zty+iMiIk/fVy/fn/+m7/ev/jp+rbz07OBQVhUmGFkRqCtuG1sN5CkT0DFJ7UC+Vmj48uEMjJyZqCw2kqra3e0uFIZHe0GFC/rKIwTPfQINEogV12xCxWMPo5HoM2P7XlxU468TRtgutgAACAASURBVD+cUYrijMrCt+e+r9eyddVzK4YWdxtlOvBwwDPOcG3RY4YCr90ZvjzcEMYbz6tvVz9dPbfiNjrDyA8zjzHapVCEK75du0HonLPKSwMBI+qoIC9Hlz7qilmUIiHQ4WdLyk0YPCNybcCooFLc5LuiSMC4pYyOHDnDOIF/9qd/coaZERARA0KJ+K7ot7YibhVQwRIBAsWttheUW6UWtTMD7HLb2q1t66pr15zhPM5jflZcu0VJ1xmX+fX79Rff+L//8uM3zbCD3OQlBs5wk+8CF7biJSpe4lZEkRCGQnQDvGGFUOBuKnETViFC8AbdQH17GLuLSkSjb2dklYdccQWlgG8zXx7cPq6uZbkFfD3zZbzqy0PgY5WE92u/XT53idtz+7hSAXFLGXGUlwjYEgcVUFOOL9dewMxsXNV6XT0rrY4+hsdYAQnLQxnEjau2fZu5aEsceztn4DGACxXyszgzxRmva5EKDK4N6OYNYnTgjNWCCojbAoUC8knlJWHGEUU8dI7Vgv/bn/3x8QVFIEMFgohbFBXQzxYI+ht8J1Tcqt0gsLb47tqkGcvrukJAGUl293l1c8YYx1FnM7CAYG/Mt+f1m+f8y1/vT0+DgNBuo8ZNQW6CIKx8JyBFS4FFwMYVcjPiFlC5Ug2ckUDlJV4qPo0aau0M5/jcBQ8OqY/jl2P00I94f241enToDIsfV89tFNg6zhmPPIYZPp59gFh9XF1xEVBdW4kDFcrfEJCi4mcOYMpNRHYjEhAQkWA34QyO5fNCqZzeZDQYecwMOexSvI2PI626Gzhntt3tnGmpBGnGjee2sbhEIBN+ggaPAis3IQIiAhSRFeNFHvI2PGSJ9XE8EgT+2Z/+0cg4gMrPArrxUnGLW0REQNBvbQEVn9SjaFF7q3Y3fF63jUTg2q7dQPyEcEVAVr4MmhbmY3wMF7E8mW/PfnPx64/96XLhGR8XLcEodAPUCnACFSJQCKSolJcMjO8uEIJggwLipRhdbikjgwKBKBCgVoL6GL4M5/jjYZxffVwflx/btQUDirCxxScV+HLmMbN7ecNvretze9bGrXJIrq0EAjMgbooC8SKwJYnASvHdbt5AVJQztlDnkJQbgXBEqZQfzrwd3obdZtzdM6NWzzBHR557zQjuEvEp2Ai3NpQzmpSCDQjqjCwLCw5CUZHIz2RgdORhwuANUhwB/+xP/2h0VERuat8REbeKm/JdAdVGbVtXtd0gQj2jjpDstp+e13Vtz2uva2uvuq69djdBQ0UKVERFRme84czjYW/TjHOTYmvzGd8u/vK9X13nefWsjyt0o7hJvAR4I6AYBCJuIgTVLiEQt/gkcktAdwS13rdLxAc3gUgabxQ3BfnxMScu/OHR4F8/99uTakskgdwzo+4uSikHHjNb6ttAvNfH5fu1C0F8l/AQsVi8olDiu3gRCCS+i1uQvIRxU25zGBGBQ+rSrsJjUL8cfnzz6zEoLrh2CfTgBde2Gzq6JZzhViwsbGxstEXe4KGPURleFhShCPlOxG0jVAiHRkZHBo4I4w1EBPyzP/0jdVDxZ/SzLSJiCeRWvPRC7W5t7G61QQu0AXPmjMV+unafu8/nXtdet90rWq5ugBSy8p0MqMxvnWZGZ8408pibjiJw4bcn3577Vx/+1ENWjZvX7jOvZbcrtoIhqIDhJeQmxM82yuUlIm7ySaUDY0evJRlBBHVrMagm+vT2OA5H5Jb4vnxcCRuQiExTO4f/UMeBxDMKW+/bM55LxU2PvI3HNnaBNjcuTCpF3FIh4jsVqJCNASECFejIQ8+oFaHwNnw983Z4G9kYvlOKIjGe9bFsbchA2tsZi5lrC9oWrti4Qv7GfDm8TWckoAClhAUhXjYjQUbAHsNDR8THoMx45Cb6Z3/6xyMjOhB/y7a9UNuy9EIEvWzfbbXt1rZk0ApXBex2221rt2v3uvbafV4t0QtYw6cVAZUZx9vw3Yzjy8xjhHqMM+rgDfR9+YuPx5+/mw6MCerIKDbLwuJzubarG1GwEVRCkJXkDbQgcOgMt80+ibykQjNKZyYShau2wtEjUFB9MLXCLmIFxM0jECIvyk0Fioeo0ea1PHfjxRiYcQ6jE7eP7RnFVcggn5aCQECLT0IgBHEL4hwe48CRt/HLYx42+pDHsHkRhRwdMW4Vcq0XXbWx4Q0qFVArQCieeVV8J3Gxg6AifTkeeoxnRgK5FRAk381IO/pwvEHt43j0jALi//ov/vDIKCKi00a8uNGNbrtb7a3dbXdra7da9tZtt1rarm7bbSsu2mhrd2O327YbYLgEiIg30OPLOIo3REd0dEZdpPg0KhA4y1yeb/nM1dYg2BpQxDEVULctiuKqC7auAIES6AZyawARlUqEwI2bfLIB8YxOA1ddccXm1kimPq9gtuSlEI4cSNSRWlBRhwhUGNm6ooibQjSjMFotldeyAY3ciisSwhcGuxH0jHHaEOHL8RePiX2vA1/OOfZlEN7OjOxyU0ahERKhLgqqKxUKLIQg6AYbC0FxEwcw5TYO3bhgQRSOPQYRMBJsnFEoGH0MAyogjBxRg8I/+uN/fgZHbWQQISIi6NMWtbV7XdfuXtdeu+21V9uy1e5VG23btm0vW203Yrel3YAiSsAQ/DQ6gogICKOML4Oj83Ee65xUPracMeOYNCQIl19+vbOOIMwoFVdsXLEEGIrc8hbhUhgv3YiIfy8oiCBe5EVQ+STtBugcezw8MMNSeW1XzHht19WVL7x8nevv/uDvfz0/Ht4O4Pu1f/6b66edv/7oKe0oN0UBr21jQaiAGQmkCKK9QM4IbF7bEiAvJ5AZzzC6sXUV8cNjvk6jH714g4ec8egZNqUjj+Gcwahr2zUooFFAfktuYS97wUYxuHBtz6xmHHnIQx/jGUYUIrwiEkYF5ZO23pBPikooM0LFlv/wH/+zMz10hrfxHEZuWnHb9tYC3bb22qtrd9u9rq7djbbda+uqtr3ldtW2VsDmBpUEfuJT4cyZcQbk3zMIc3TKEFkfmzsnjXkGIi+CrjXwzCcCinETwqNHtCIRt5Bii0iFAQIRq4WkgALiU+AM8jJKXUugDikjINJWoCPKj2cH0OC5fMTtYPU2/d4Xf3H4Mr09HAWCzeL92r/84F//dev8wS/O9dxffVwhEBY3QUOEzYUK2EAOjAZLrVHbigqMvI0DwkhAfXmMtMstCBT1wOM0TOwZ38aKF6/dxWK3SDzOyEyKqNwUsdqohDkC71fvVx+LcXSGt4dvo3FbCre25GUcRewmg4NjQfxMGD06Evj3/+E/gwa+jF9PXw6/fPOMY9pvbdu1t5Z2293a66LdatvdNrauIoqFfbk2agOS71S8zYh8EhAR0RkdnXQ5H80H5wJvxU2vSEOklP8/BULxXVAo3wXFbeQmKPIygNKNWxSoUdyUgGLjJgjqyMjIJqSVgAjLTYd+HLXncvGd4GP4epDrdx/z9a23cQYlbLlaGeD98jeXf+cHvn55ILv85n3//Df9m5+eR4lV2wFkAQ0qPlXqyBdFNjaWNjcWKJGbeasfjm+H0V2CPi0KXx68zcQlHl+AIiIuurayUAzlph2/Q/A7kEYHt11Y2I3YQG460Ag6KAnh1lJ4dXPkDMbH8mzFwTMqoDLkf/E//DPgoUeooS+HH9/8enqYilFt1+5G9dxrt72utt2tdveqKzY3OwePSBd7e7ZFES/qqCDeBopbFKKOcxDPju28O+8cJOST/KxCgXDY4WUjBCIgUF4iXorbhXwaEIStjceZ2o1bgRBBoLzErXIgbmIRPwu0kdGRh8oK6iGkTHfLgNEBMRj68fDD6U1/+YVzlCSdrd322nPOHEe//vA2M8B17fuzv/qJ/+tXPz13fvHwh7M/6AXP7aeL9xRGR6NoyBiZcWYAA217bh/b6nO5ujky8hjfZr/MjD6Xa1sita9nHifijDdgAOXTVR+711IRtwEJhQaE2hEGcUZQOc5RmOCKbrAVFAsRKByYQS2OAsqIBCMRQYR8svK//If/nE9ilDziDKfrF2++DbQPPbJ1FbS71+517W7bVhuLGxcnD94GnZBlr1o+RUCIgyeo+K1aWEFHp7yc1c2FAKWCgcobBXJroQDRbshLN+UmL3ITgokK1Dr4eGif4IrbFVfclpZPMUoBKwcHvsz85rouXioQ8AZDZzxy4IyCBsgnIQ6cYdiH8759rOIvf+jvvPHlwdGoLdpt9xI90/Z2Hl+/PmCeV7/5+Pi49sx58DLDts/LX33sr5/zwRBXRQI2KAQDZxh5jEq8PPO5FVc3t55JDTyGhzzOibZVKvLtMUeGRODAzEADi8/dJ7tBlIoESCLtCASohZCNnjnjI6hVqXB5qTZSuQVeFY0eUoeIURQcXqJg5DH69//RHxZKcavkRRJmBISHW2wcGailFoelLS685lxxC0RQkECIyLwBEaIQMIJS7LYJKylOBYQbCRFUKCAQwtLCg26P4Q2kj/xolltAEC8TL0KzkFggLz1ECVSguAXBtbsFSsETq8nk9x/8vV+cv3oPeDPk3/71del7KhVCKEcfcuTIyMiBo1+mH2Zxi0U4b9Mv387bA2Hb3YBtIWL0nJnxzLm2a3fbx8w5U1yb+nxef/Vtf7rmPbfRHmYthLs94wN1HvblzGMaOk7wsS1QMNfuc0PLq5LBoSNnPCO0YI4dRaC38TgDEdiNioi4LVQLuzveqMQR+WSEOvNQAXmJAMUItiBAJCDgCl94URK4ohAWswH/q3/0hxAY8Ukm6AYBFQwv8hIvRSQdGLktBAXy0vBSWgFCIIhAIETAKLcSElEYoUaUjWeFWyKk3AIKeKNpRz7wgkcgweYTF0ogAgJCKW46FRIUEJ8mZgSGBHyptsInTPvAP/jF+c9/b95mxiAQCJ5X//pXH//vX/eXTyCYN/cXb+d5Xd8uwOQx80UeNvQ4jL052MN+eXh7+DieGV7a3QraXRyKT9uLcmZ0oOKMMR8Xz+f1q48+kvoiM20tXuvKc+fXO+BjeujjeMw4KoUXbH0d3mbfP54fVzEfzDM/GmTs6PHWDI8Gr9GDo2c43mhXDYiFaisIwerZBhvBgHIQRK74G94IeYhRG+mgAqETyFbjhEAQlFsrxcYV/tf/8x9fW1agbFd2g8gb6NALKtWqwVXixJg3WLjit6SCSuVvE+mo8NyKIK34W0aOHI0EZQgQLGHbbeJTLUJfvI47zLW9c55MuHBFvIh8iviZBPKdsBUQILQDMbwMjH6dfvnoD37k65fzduZxZnCB2l6uel67Vz9dfHs29tMHv/uV3/36BjJnd/+fv3z+n3+1yugx7KgNXn/vS7//hfPgbabiZ+22u0Gx242urZBPCQEeQzeupQI2r+YCnbcpuJZl/uo5v9rzBtjvvfUff/Xrl5lx8/25z2ufizAsXR/btcS878z4izcHvl386slNeAzPOPqwN/cxa8kw4iPkZrawXYsUV3zEM5dZDIeVhG8717YOdDRuAmOHfcibq4cZUCiDiAjyBiEsAkI3KfwH//iPjgYbVz0XdXd9oTo68tyEx5FQ6cZHqXwqqi1k4dp2DYWEQqlAmHHMepx5PjfcUK7aACvgKBIJwhhSnPGgrCDEXLBtQUJDSRGGo8jWBrUYCMun+C4SI0FcKvk09MvHlr++eGes//Tr/me/d97ezuiouLVtde0+n7sFdAMiqLbEeTnnzPvVv/pVf/6xMEEFSL+c/YOv/XBw5nGAIBK6rr12u+G2bXtd28v2ApXgttuN8MiZM5gkcXBynpyPnW87C+9A/vLsf/LLt8NzbFfAwRtp1/b8uM7jjKC7Kx6FlO/Cj2vfn9cVV6wzMLF26Iy1Dx37BARsBJs1OdAxSLZkTvXkvK/fdt7XxeDL7Bd3WJh3ztOhjo4MDbOwRsStC4NixLj5D/7xH73NbDeQ9/YgcJSIAPFx3N3RCiUqwBeKYOuMxvvucxsEgo2ljRAogqVdzjhSQIrc/Nioo2f4WJ5x4jxg+4iN26A244iAcQvidsVC8Z3cEm/AEj+z+NtGoC11ty/yGL5w/d4Xjvz66V8/vZhfvvV3v/LjF48vQJ+u2N0KIq4N2igqASmKcc45Vxfb4k+X3/aRIx154/lwHyMk60BQW1u7bW20bXvtrXarhdroRuxyuxj1zDiHeeThPH7nza+PufJ9eb/297++SRu/+4NHn9dee5WRoHxKlFtBu+rW7qJn5FOw23V1JM/7+tPVdL25O4/3FRhi3IAOvdmwVz6DTBSMJgSsNCyqZ75zPuL2xr7JX+/jgxl+piRDgTIIgRvxUgSC/83/8ie16kB4UQERjxlqISLQpd2OOlIzfpHH8YAQBFdtPAADicUKGFE3Ft6f1wWP8UFqUZyZ3X3G6LUXuqUjfLTX+r5ctSHGjgIV4A02bjP8lgp0A8FqiwQxhUCK29iIdWrod84+hvBhjm8TzNvx7TiDCvRp69qu69qXwOfu87p22bp2xTM+5pzj6IznDLDxvLjW25cHbw9v7SrO+fh49mnbrWv3ebUR7OXSbtyKEa1l3mJq22d71dUihznNo8cPzeHM7831H3312LnJjDqAsPW89tqtkMdMuLu97K0bN1ueQQTDS4FbwS4jSTGQCn7befcNGBpAheF5PZ+LzuAQQQx69ACiFlsf2xM2HhQV6XsuA4gRsEpEYEAEMhGVxIv//T/9k8dx67q4IhAqJYz4pB58ts/NG0SDIwNHIxHRjh2I+djdHEI3K+W7awG3jQYe421I0VOrDl1RMGsexQ77O1+8ePzLv3z+xRUJhb+YfTv+xQcGmAlyS3qcUblFrA5xdeOWqAUl+7Av7Nh7j4Ev7A+zv3j09mBgxt8CrHb32n1e+7xue20f17XLYt64rh14nBl9zMxxnHNG58zZ9syc47V8PJ/ikRlm3Os5c9Rrr2vbeD6vn/Z840vMwpY4OvIplD7RVjTMcnM0UMO/e/Z3f1hY5THHGUAZBfpOBWLh+bxqr+duRddy1RVgjXJMoWtjdytQjAK5hYQw57w9Hm8zjgK7bQucc6rdRcW4ySdBgcCKm5RbixuLW8DGbSMENq64aGMxuCIYEPxv/8mfCEqxsAm9yW1h9Ln7bYtGgYcelX3G2/jQrQMLV1wBvtnbmSO0Ssxzr4/1ucStYgvduMXLwIEPthTOKMjLj6ffefTl0duZtznJc6/3J+/X/PlP19eHv/+DXx5n219/cK1v01Xvyxl+eu6//amriRe5BagrLxGJETF2oJCAY7/j9aPXD6dzHEUUcdv6/9iDvyXbsvQ+y+/vG3OulXtXVbeACDmCCK6MCPmEy3EIidY/I4lTsAxCwoDCt+QTAnVXVeaaY3wvc62snZ27VF3danRgg56Hll69ule7mm4bSKVq37Z9ZFSKaNeoqqiVAK1rNWZsI/B02Vrn7NWrZRs153HM7nbZYLerXXLj+nUuzSA8CCQUKRiQkDBCJCRlIISHiHBNf9xuaEIDAqmk4rZVQjgF8ISt3Xa72tXOZgopoGpoY6dnga3YMKpABUwK0t3qtm2VqKSqxrZtYwyBqCQopyRoCHcmAQQJqLyRcBI5RVCX8pAT30mQCHhCyH//v/zvjTGjUgQsqKKSbrG3UalyrpVUUtgJsgeTo7tNtCrhbjazeyv2qnBXccrRHouEImrDgtk2KobALilm05witAob/pcf8tVFKpVqT63kYR+1VYSWhHCXlKD26tviF7djWs8rPz98FhSS8JDwHZF3NiyMJhR9zYqOWBgIaDdFgpBq8uIQr9XXqm1kH2yVURmBcFICnvB29OxWt217uuyBBKXbMbJvW695Oyap1X3MlRqr+fsjX/f4dmrSnEIAAREpEiV8J7waEBJsatAfa105sLuVuz2OwVZJuPOE+MBsldUs7S62fez7SK01uzv0KIvYDVJVbXcDdgiUSSo1xmhNSgJUqFRVxqiRgBIgAcJD+I7QBORBuTOEk8hdAvKd8JBwUkACCi35n/63/2NKc8oef3JhL47Obc7CSm6rk/Fhz1x9m2sugQqVLF29rUDEEiRNGttTLYRUQBMX6bZIhdYlcoooCFHIgnBXuCWlVdnp68jHa8U1ckINjIpQYVQSWk55AFttEip3bR+Tr59nZ/x85e8POgSQkyAknJSEItFmFdnwygIXEYq7QsnBWGG4gm2ZEfiY9WHrj3ttgwpJOIl0t90S5ly32WKlxqkCKJWk2MbYRm1VQNvdCordTV4OfjGZVgiwZCY8hLuChCQqJzmFO7mTQGPrql72LKUnEQSU7lY8gSdo06IZ27ZfrvtIJaNGKpVUVUANIbTanaS1CQQCVAxUBQyQBAIJgSAJdwF5qJQnICg/JuF7jIjInZwEpPK3f/d3gNqypX/6VAm3pSSw2tVrq8KusR/HXO0x51pzVMlJSKBC6NRY5uVwMVZishhtGle7VO4CIUAgIUk3akMjpLDCEsk1/vSSjQVcRlW6WwnQa1UxKlUZFaAbEVKVhFbAtioB7SXdCbZ8c/jzVU1uVktVEJC7gNFBX5glkyRETT07JAak0AQECgIJyDXzY63rVqMyRkZCaPtOFPtka9snH4AkI0WNwBhJahsVUFa32p4gjBr7NsTE51umw7FViICNCoQEEoydBOSUChHBkLXmOl6A2QqhxECvdaw11wK2MZIiJLnul8u+JVZVHo655pxP10s4BQShBFRQGmxOVYY7ASOGuxCRCAF6dQIhkLsKyPcFScKdhAAJdwJyJ3dB3kTNv/u7/xNQTLC/vNZleFus1aOylnP1Zd9SHEe3HMcx7VO0knBnVFqR02q6FWf2W11WBhAQEQm6YumQQGNC5VQtJAO3cC2gh/NprzESStqAoN2ekhqVKiDetQqBGBAQPK1uTLdLV/dqZ9NNbTvb9WCsVowNCQHlbmdtPU11ssyiFiUaInIypGjEVJKBFTfXU9Yo93KMgtjddmvbiGB7Wr36ZNsoIJAHCUjCSVqUnIqtTknKsKzarmQnSMAQesWFUaFDF44qalhbErpHVmB1juNl2V98+LCNURU0AVzN88tttgqpEGDfN0Hcx6hEbQ1Uwp2QBBDkQYUIyHtCoLVl9QohCdHOKCQBwl0ApUGMARJeJUA4BeSVoAiiIiUIQSCnf//v/12ABOz26Fy3XLfR3alKrMLu2+xjMnsJa/VaQqQVHwpuq1dnFA0rm3UhGfbMmNIUcUhjQ2HFHZ+qr5U5J2S121b7qKoEE7eqhgogDwohoNyZbSSFr8icsxtFvANFBVt7uaS711rmVFLXpw/q5XIJJOTEybmcTQNtQiVQCS0N6rJblkiwA0hiVY2EUOg66BlXMCgN2Lb2su3veGoFfMWDBmxoooGMsUNIXbbx4bp//PgxD0BCN3LXzZo3XIGqVCWYBAinpDJCoKpU7oSQ7NtIAmqv9nb0sdacbtu+bVuSCqdl2wLbNrRDQN4RUQh3ShAQCOGVcgqC8ktiotxFCCB3irAVgdmQCg+J8iABkSiiBLKgFRRixPzN3/7PLaNq2wro9jZ7H7Xvu3ZCxW1Ut3Ot1Sjdru7VtqhJPl4vX328dq/bdK1VYxzLl+lhDgscKGUY9oImkKQ3+lIOjN3L077netkKSFaz1oRAQDCVkQJXqySpUJUKp9ZuW0MIxzFX271W92zsXn1yda9miUSybdvT5XLMeb1cvvryiwpoEk4akF+SV/IgpwiIICgYoQFJOhCyegZQEBBRSHfPNbW7Z68F2M5eq5MAmau3bauqudZqWlK1je3j0zWwjRpV+75VoqxegSSVGGy7l2uJFXPiLlBJJSmSVCoJmPCqqgLqXOtYfUxf5jraUeMy6nrZu3vfNkDujmPO7lG1j60KkO94AgTklVIB+U6AiIByEpBTE0BFu1fSpCo1wim0sARGVUGWrUmq4jISIg8h3AWMEiQh+au//jfdIMFtG8jRfTTXbXy8XsAAca2VO9Zyds/Vay0tJZBRqfp4GZetlLXaELKN7ZDbsQ4iQ5RsYas8z3UZNUKcFY7lktiXchtUsFmuXkoIdwrFnUCgKlWVMEZGAsid2u3Lccy5TnP1Ws5eq9dcruVsZiu0VI3r9frVlx+1ny7XL67bVgGSyGfC98lJ5JW8CicjEMMPEbkTIRBcgMQTCUoUQZtkrXXM2d0FahWVzDlTtW37Zb/wTttJrbV6za2oMIqkkqy1lEqqgkpAkkrmmhrofRvXfVRVt8e6C/n2tr65reu+Vdi30w4qEKB7CXUKb0QEEQEVkDslCScDCCIPgoBAeBC6FxC7PLYKAUolGTEJIChV29iq4HAcC5EkUmgsHHEb22qXyV//zV+tbk/LVjDwvFxNhevlkrBvYysUdOnqrpRIM7tXo1aoyr4PdC5bTts2Ro2nfatTqJG9Mgbb2Hzo7jE2cM719ct8mfR8ASHdzl6I2BljXEh1HoQ+yhlXgFAhRORkt71Wz9WrnafutbrbuVza7TIKVKrGtn/5xYeffHzatxqV1n3b9lF8ooASIEAIr+RB+U6CnFZ7O45jdZLLvo1KBUhADEi2SsWRqmKMoMfi+eh9VMXg7BwtRmxYvUKEQAgJsNYaY4DdrVQlJDjXuh09KrGTvuw1EmGu1W0SBLoqVZWgaK9FVfYRgspJl6ymu1+ONdvLvu1jjLpLIs65hGQk1WuNER6SISYlaKsQARUkAYKAQOQTIbxR4gpWsGevCdaokb3tE6lghTGG8Hy7NYyq69ipStVc1qjNbqQ70TZVkPzN3/6b1R5zdfda3e3sXu1qFZKQUTXGuF62fYSwZh9zqSkkq+3mNEYSAlKrG0hSVSN+8XT56RcfRjDZxkgMAcIp7YnuXr0aQlr+7+e+GQQ7dFIkIVUVCHTPnseax1zTFkyCEoFeJ5fOvlvLueZsuhFJVe37tlFVowb89MsPX33xYYyh8pB4qVLmWqsXUMlqx6lKMIXyuYQ7Wk5cRQAAIABJREFUQUlACAgCEu09ooljjOfbEQbMMcZandQ2TjVGorfpkpaGbkwgyF0AFSIQwkledfftmPQx0kmRVGLPbQx7LfuYveyRQlQepKHUVI7Va6192y77VjGJpDK2kQohJASbuVpBU2V3Y7dJSEJIqNEMFYQIQisgyCmBAhLugtx5bCxFF3ZsEu0kSBLAO5JU1aixujNqrtmrgZBUJYxk24Z2EmC1ymrzb//XfwuxWyKMSAzp7kqqIIycBjCKMeo4jtv0F18/31bPtRRiVUFBQqoCSu5Ixetlu2714bqPqu51vVy2USB262pMreVajqptZOlt+rKYslVShQpoEoWc1A7BZbfdkLWm2r1aSMbYeq1jziS2Ncao0TBG7du+utXjOEZlG7mMse97S1UI2BHCGFW4jdHdz7e52m0UyTEbIkmNIBFqteCp7lIIAU1xZ5BOr6krtCGkckK0yZ2V2kYlkNh0s5qGY7lEzdiApEAgvApg7OOY83mjKEeNCir0qEqi6V5zddtgNEnVOCFti1UZVba6IISTouzbqMox1+3oo7tXSyqVmCB2i9kq+zZSrJbUzdEC46gSIidBCK8CCCbhbrCGjZQTF65KilSlQmB1t65uIAnkVBW7W+TkVlVJVQF9Z8vUpSH5H//6ry7bNmpI1lp7cdmAtH07ZlX2rbYq29Wtdtu2rWJIpbtvz7dlvj3WbHnQSFROOop9H19cLx+u+2WvfVQl0JVqPVavxW0uZbYh18uGWd3HWlXjefblsl/2KlKptbqhguTBoDJXg+EuiXocc61ZVUnsbjP2y2Wr4LRcE1h9miNRK6m4bWNU1JY7WebpslV5TFc3pLsJo0oJVSPaqzkWNUaFSlLhpGKbXhO1VyWjwqkYBeI7hGCo2b3aRETSklCgkbRSG2MrUmPIyRCCQDe2azW95tzCVhmVGsFOChS6XUsedDWFigkE5FQJmEREuluzlnP17EYSEIOaZIxUSqxUiIpMVsaV2hXGMIG0CW9MSEACCUmetgqutXC5VoEnbE4hhW2vsDBr2QomaShT5baNbWyVtAqVtChNBCX/6g/+5TwWCfLVT34H99ttXS8fn57Gy/Pxky//q49f/OemevU6abfdjRKwgNxRo5rMo19ut6O7DSokuQ6ueyJjbBXGVmPUVpWEh7k8Zs/Vq7tFbcm4e9rraduWPL/cPn7x9NOPH3El3I5+aUhCEk62LQlJ1DUXoapsKyZArXa1FfaNl4PVCpXgPKnBUQG0AUkQXW2TfdueLlsS9Vg9V1clBKhEaIWMZN+2tsGnfetwzD46rcVJxQasONLaq+2Tdrfc9fJYa67uYHNK5bSNsVXto1paSVVy3bfrZYdaRCIQ0ojcBRVbE9ZaFdAQUqHDen5+Xu3sqSgFRGW1FUeVchLklKDSAiF3VWOuJVbGvg0StNdd090kjKqtAtYYNbZt20NaL+UXFyq12oaCfRujInTz7cvLvm2z+5uXo5uQVEJqlNTXzy+S7q4KZBRg7deRumaOtNqyVq+2tdsFSIhJ/vjP/puvv3653eYYVaNs9328vMwxKkm3c26Xy7/4+OXvfvnFfzG2vbuXpEKqMLiN8XGvfd/sPla/zHk7Vqq2VEVSt2O9HLfZ2nfSiIp2IycVTMNsDZCQUSTZRtXIdduv+3i67F9+uCZGapTShoghWa2UuBWXrUYZUBJDZvt8O55vvW8pPFar3azV4H7ZexkYI7djKpSjKjiq9lHAam/HPFYvuU17zW3UCahUKpWMqlHZaohJgNbVtlZtY9uS8gTavSau4TpW3455rHV0z9nH6m66NQVWtm2rxErGGNd9+3DZR3EchxgcY1y2fVRBwNnFGCZNeGhNgpAgFSpcBx93rpeLfXRr8u3zPI5bym9fbvvYtzFAUbO61UrG2A/reUpFEhJMQJpUCCvZoNFlkA5PtZ62QD0f69ZJqumWKLind+aorO5jrn2MbdQY1YvZTaRd5mWtboHCUbVvo6qSLNJEhrJWr7VSKezu1WvO1dLSahLoFkSrKv/qv/29hGOub765fXi6EPZtVAU4jjVXjypgrt5GbfvvPn343W3/eP3wO9vlqRin1iDOJCUEyFpqX0aO1bfuGtu27aNqH4PwMrsJEOy2NYBtL7vRLYKxSMC5bj6E7FuNYt+2VCpBBaXbpasxBVZy2UbsD08XEJ3Nbc7b7G6RJOo2ot0G+rrvoyCsxW2uuZoEVHqtubzNtbpbId2eUkkqYUtVZd9SySiu+2Xf0u3qdNv2apa9j7rsW4LdkpbUqDGEtfqkjDFejoOE7qpcR1WFk33dd7DC0eiSvNxuvbp7rdWShyIBxihT23bBJhGKPF32CpX+sI9RVhU4kqW3Y3Znrk6cq1+OBbWVX3zY9zGqUqnunq2wj1GVY65vbv3NTEjKL7Z82AOSAtfyWL2NGuVeRTit7tV0+/VtHYtutkJnm+Ea5bHWXM7VLYGqtFKltEIQbDCmKhmpGmrVCKmE1Nh2AsQYEzAB7Ds1Fe9mfv8Pf2+tXu2ouly2Gunladuq29ZeVuV2TIg6j75cxlpeLl9sl9/Z9p/u168u+4caT8kYYw817VEFFEZHZatauo/sw26eD25mG1VxWk2BAhrEvlZfSuy1WNpoC2mz1mq5rQWrQLNkNVXbhw/XKiJJRtwH9jrd5lp2qGP2y7HaDo6q67Zd9zFGUowarbdjvRzr5ZirbQOOZFRmdzIu+6jwSiF1zG4avI59FKG7FZJK4inpFqhErfDFxw8QcK4+mi1uo8YoZLUvs0/gqMzV4n/28XrZaJnL1RJGSvv5WH1CV4sBZQkGSWJaSG0jteytxtNljMGWE4mV8kTAtXq23c7ZYzBqzLVaK3zxdBlBHDVaj+XqrlMKPOZK0m3Cvg+aueb1sldZUFXI6tWemKtbk0qYc92WSsURS8Xb8ptbH93a3VaGUKl9cNk2ocaY3fYgXTRUjXHd9m0bIQTlVe6ssNbqTirtWvMXL8//11r/ofu5+1sgf/Czf6kSkszZ26huxyjCGDWqEl5e5jHXPNbtWJd9zNVP132MApIo3V0VkjX3bRv75afJl9v+4XK9buOLyljrmcQ+6G+76+WWjk+XLy9bLTK2yzZ2xmWu+WFkr4yiyqqCrG7NsdS6zVkB0i0hnCKMkafrZa2V1JqdpGHZaFI953XfxqhjrttainavueTVPgY6ioRKCXPOqqJiU5FQcCygkzrabkZt0tfrNTV6rWI97ePbl9vtcHav7m1Uwp0sqKrLvoWgkgpbZfak1QaP1XO5b9uoSNkrFVyjas61Wu1tVBLtJQiJLky3R5uqltuxgIQk18sVIhZctny4jF6rbTWkpdupbUtjhbR9HK7uJJdtgNKVkHAXTSUVhEAqIduo7k5QW1sUsIUAUQOXYVVNqzWpkWxjswIdIAkMIJwCIWISjdrdqapw3Qqdq2e7Vu/7rmhX3Eeeb9+8HLfulzW/XuubuX4+xjdr9b6NboEENac/+NnveUcCBASqCug2AVKVBGHNnmtVSBgjVbR9HBPsXmsJjlH7PrRvtwmoVamqp6eL+vOff5Pkq68+YH7x9bdJvv32dhzzJz/5uFZfrzt8GPXTr778F/v+1b5/NVe/HEu3MbLv+7bluu3KMV1tq4zVVjlGLqOe9upuEg1EXHPe5jfTLRlb1TZGSKsgjG0H0st+mfNlza/bY86v2xfdRyH7XC+wqZXbWtm2n9zWNr3KNrbtul+e9v0yalTGVkUqHnO2TEv6ad+u2ybe5no+1lap2CTkQZrutY0Bzu5vb/O2/HB9iuu6D/D5mLNRE7aqfRt7FdK9tm2MyvPx8vF6qdRteswGjPuo1V0ZJN022Mu1lBrjNg9l9no+VmTft6raxt4nXcsxCqhIQEjmmpWQALZtV9LLKrbK06WK3I6ptkw9Frc5VwMm2WpQKbTd97FVXfZRoNYopOKoqGMbSBIkCXeZazU0hKRv4bBn27fjefXR6xudc369+u8TTkIFgrKNUk4JSbgToub3//C/JowRlDsTT0QgQISstSqpUUBVnp9fLpf9OObz87HtY9/Gt9++zNkq8PRh37ft66+fv/jiac51HOvldnz15Yd932rU7eUYVWv16k6oKvUXv3hOcrlsVTVGjaqEll4916mVbRvHsfZ914wxtrFBxhitY3zgIVBj9Pq2Kq2cNAmQ0C25Vm6prNVVSa7287Zt/UDYxlBXrzolagoEXKtPazW4lqc5e+xfkK9SX364fvXh8sW2fTG2bbaYgw0zRqUcqYLbYi+2USRztWRUSEaVJgFM6HUsq20VKqEqdg/sljAKgqI5lqv9cNlCVwXK7lG1jTpWtwqjggLB4B1ZS6KMqZWQbFXXy7ZVXo6lbpXLXpcR9VgLqo2p59vLapZuY6sq7F6deIn7hq5mfHvjZS4UO2CysHWkgkmWbROMJII4dS6FTqXnc4W1nu2bLj3kwF8kQMBuT1VRxygIeMddeEgCvgIEFBAQyM/+8PerkpTSvcbYwCRrFhzSyhhDEk4CY4zjONbqGgms5b5v3Z0at5fjctm6V5IxxnEcY4zuBVH3/TLXHFWpIN2uOU3QqiKhbdfl8qSdlHb3EkPuKHFs2zyOPNirpaqUxGQkzHlUFaACSVorAboVtzFUSFV6zW3f1/JVQpK1uiqEUaO7tblLt2MMZPWBg/S+X263WeWrMTbtpCC6qkb3qtpXp2qQ6u6qqElIINjgGHWyVbZtm3NVparU0Kt73wpYTaoCa60kQHdDsBNStdqRdCO0XVWQChUViYACItS2b8Feao9RSXqt1b3tuy0uyBjby+1FSWKiFhnFqHBKIKt7VNSEQAup1WqPGnPNUWU3SarW6tCeenbPpJJ0N6BWVffctku3iUArGvAE27Z3r4RuqwoRhQrdXVVju6zj1rCNba4DA1bVWl0j3Y7aQBCSP/ujv+A/evLP/tMT/hOQP/3ZX/DP/tn/X+VPf/YX/Mcv/AD57YXfiPw2wpvwKtwJyDvy2whvwmfkHfnthV9D/r8hf/ZHf8mdEO4E5BP5LYVTeBV+I8qDvCO/RngTTuFV+IfCnbwjIA/yiTzIg3wnhDfhTTiFU3gTTuFOHuQdAXmQTwTkQX4phDfhVTiFV+FN+Ix8TnmQd+RBPhPehDfhFF6F34jyibwjPya8Ca/CKfxGBORBfpX8yc/+nM+FU3gVPkl4CL+evBJ5JZ8on8iPCa/CKZzCJwkP4TciD8on8qB8Ig/yfeFVeBXCq/CQAOFzCd8R+R55UB7kQUAe5EG+L7wJr0I4hVchnMLnwnfke+RBeZAHAflEPid34VV4E8IpfJLwEH49eSXyRh6Ud+QHhPdCeBXehPAqvMq//uO/5C78AHlHPpEHAflEHuQd+QHhvXAKp3AKr8KbEH4j8iCfCAjIgzzIO/JrhFM4hVM4hVN4FcL3hF9JQEA+ERCQBwH5nPyY8Cqcwimcwim8CuF7wg+QBwH5REBAPhGQd+THhDchvAqncApvQvj15EE+EZAHeZAH+Zx8X/7sj/4S5EFAQD5RHuRzyjtyF16FV+EUTiGcwimcwimcwnvhTXgT7uQTeRAQkAcF5JWI/BDlQX5YCKdwCqcQTiG8CiG8F96EN+H7BORBQEAeFJBXIvI9chL5MeEUwimEUziF8CqE8F54Fb4n/JI8yIMC8onKGxH5Icon8kvhTQincArhFE7hVQin8F44hV9J3lEe5EHJn/x3f84vyYP8iAQIDwkQPgmQ8LnwEH618AMEBOQdAQF5kAcBAflE3pHPCeGdBAgPCRAeAiS8Ex4SfiX5pfAZeRCQdwQE5EFAQEAe5EE+J3fhnYRPwkMChIcACZ+ETxJ+PflE3pHPCQjIg4A8CMiDPMiPS/gkPAQIEB7CQ8I74SFA+HH5k5/9OT8gQIDwSYCEHxK+I7+ZEN6Ezwgo7yggDwICAvIgnwnfE74jvxTeSYDwECDhc+G98B3lR4VTCD9MTiJvBJQHAQHlQT4T3gvIjwkPCRAeAiR8LvwA+VHhFMIPkJPIGwEBeRCQB+X/rfAQIEB4CA8J/1D+9I/+klchvAqvQvgnIa/klbySk7yST5QHEXlQ+UTlPRH5TBJOIYQQTiGEhwQID+FVCKfwJoR/KvJGXslJTvJKPlFAQHkQkQeV90Tkc0m4S8IphBBOARIewkN4FcIpvJPwT0HeyBv5RHmQB+VBQHlQ+URE3pNfCm9CCKcQwimEhwQI+dM/+gsghFN4E07hFH5Q+AHynsg7Ku+o3KmcREQEFJAH+aXwXngnfCaEN+EUXoVTeBXCm3AK4VU4hfBeeBVehTfhVQgPIu/JgwJyF14JKA8qICICCoiICMgPC6/CJ+G9BAjfE16FV+EUwqvwkPBJOIVTeBNehVN4E36MvBF5T0Q+EZGTiMhJRETkJA/yS+FN+CS8CZD86z/+H/hB4R9HQP4BAQH5RD4nIP9IAvKggJzkJHcJnyQBQginEEJ4FcKr8GvIJ8pnQgi/DeUTAQH5dQSUBwEhhF9JHgQUkJPIdxI+CSGcQgjhFEJ4FcIpvBd+Sd6RNyIECBD+0eRBHuRB+VHyoP8PZfiiNdmWkNmRNv0w+u011KIguRaU9Jqdsb9evt3/S8SJhJKZb+Yn/etf/lP+K9v8bH6S3xg2DBuGDcOG+ZLcKrdQfjVsw9w2b8lLjiRUbpVvCvm9+bD5L4SQ/8Y2t2He8l1+Y2aObdiGYRvmGLlVniq3yoc8zbDNbWY+5MiRIwmVWygfQvm9+TC3+ZuSI/+NbX42T/kyT3maY+ZlG2ZmWP/2T/+Luc3TNp/mN/Ib2zxtc8zM3Lb5RXkq5FYIIS/b3La5DSOf8pLkVgihfCjkF3ma29w2t/lu3kKOJC+h3PI2zMzMsGF+J8lvbMPMsM0xbHPbppDkSHIrhPLNNsc2t2HkU16S3AohlA+h/E3zYfNhfpUPlU+h/GJmjpl5GTZvOfKSn0z/8pf/MP/vDcOwYcOGDZtfVV4qn5J8M2zDHHPMnyRHkiNUbpUPhfwib3MbNrd5y5d5yndJfmPD/M78N/KrYZjbhmEHtmHYHOWl8lJ5q/xs2DDMzO8kL0lC5UPlQ+XP8jYfhs1tfiO/SPKrDfMn85S/pX/+h393G4b5VHlJ8mWOmWPY/E3Jl2Fuc5uZmZlhc1Q+VG5JXnIkSY5QyIfyIb+xzW0Yuc0xbJgvFSpHhVDe5mWO+cUc8zK3DcOGzW8kT5WjmBm2uW1+K8k3c9t8M8zMbMOwOQq5VW5JjhxJjiRHkpfkU35jm9t82HzZ3OYpyVGhcoTyNMfM37ahf/6Hf9+GecrbzMt82eabeco3eZsP85YjOfI2H2aOmWPeQpIkOZIcMT+bmWEkSY4kR27lll/Nh3mZX4X8ao6ZmWOeCvmUD4V8iDm2YRuGDSO/2Oa2zbHNN5W3yjHMbdi8JUfye3PMzHyJypEkoZCfDNswjBxJclRuOZKXfJlv5mXkvzKf5pv+4f/8y2aHY0goH/KSvM2XHMktH3LkyDc5Yr7ZfMlLjhjmS4XkyNscM08VKomZY+a2eQsVyi1HjnyXpPKTOeYnIS/b2M3MU24JSd42DMM2t222YYcddvOSW3LkSL4M85OE8pZvQvmSfJnb5jZPyZGnuW0kR+WpkJ/MlySUpzlmjhnyoXIkOfKS75IcSX7R//g//mHm2LzNp8TkuzW3JEflyHflpXzIpxz5m0ZyJEeSo0LlZyHkFvO/YW7zs81bQiEqSZLfGLZhh5nZ5k8qFNrGPvhmnsotNsxtG/aFOYZ5G/I2hBxzTKhQOcoc810SCvmUI3mbP5mnHMmRChUqP8ut/Jdifrb5r1Vu1d//H//g2HzKd5uX+S5UqEhyJEkqhAqFUL6bmZltvuuGSlKh8t3IrzYMG+bY5qkQKt9tXspvzDf5s5F8mZkd2DBvG+Y2c2zzMlKhQ5KEijlmXrZdu3btuK7L23zaHJunkdzytM0xbORTUVHpkFAIhQqhEMqnOWbY2OZLN3RDIfmU3xg2tw3zaVM+JE/zk6T/8X/+E4YNw56wDcNIUo/qUT1CueVDKOSoUCG5zTG3jW3YRpLKUfmQHLmVDyHkaeaY7+YYttlmm80vciQJFbpR+ZSnOWZmZl5mXmaOmRFaRHmZNsPMhxmFChVi5mXmF7PDNvbkyzA/iWEYNuyGHRjmrR7V41E9SvkmFEKOChWFmGOObdjGNm+VCpUPST6Ub0Ke5mVe5piXOWa2sQ2bI/3D//dfGObDvIUevenJl5k5tmFmhFBIkj/b/F6FisqX+bP5VV5yK2bGNuzmV/kQkqRC5RbKyza2YZtjmz8rZPNnIS/bfJp5mZmncqv8ZD7tMLPDzIc5Rj4kL/kybJjbhnnr7dEnT/NpZrZh5imUD7lVvtv8DRUVkrzNL+Y38lvb0D/+X//iKR/mmKdQkiT5s81tZoQOSeXL/GSb75IkeZovIbe8zRzD5ii3Qj7ladjmw/wkH0Le5q3c8rbNh2GY2wiFUI7NbZuXEPK0zTZs8zYztw2VDkmOHDliZmaH7drM/Fdy5H9TjjzNMfNWSVL5k81tmyMkSYfkJzO3bX6WJMnv5BYznzZveal//L/+Vd6GzZfkSJLfmHmKnujJ37D5VXLkbZvbzFOo/CLJf2uzzTbH/CS33JLkqPwsT/MpeRq2YZvfCqHyXYWYp/0E81ZuSXJUnmbmLU/DDrPDbPPNDPkyzDEzX5J8U26VW448zW/kyJH8ZOatpEMqvzXzq0Le5pg55kshv0j9yz/+z83M7LCNbb6ECpVbKITKd5ujkE95SW7lbebY5sOoUHmbeRmFvOTL3LZhmw/D3OYnSf6kfJNbueXYMGxu8yWU36r8Yhu2sc2H5MhL6IayzTaFDtvYy3Vd267N/CxJ8nvzVnmp/G0VKkfMZmZ22MbmUwih8iEUkuQXG8mRWyEvydvmts1tnipUjv7y9/82bJhPM/OrJBV6UnnKh2HzlOSbyp9twzYvhQp5m2Pe8t/aB/OU/x2bQm6F/KzcCrmVpznmLV/mZWY+JEkz7IZtjhkhRwcq9IJ2sylUjpk9Xbs228zIrXzI0UEht21s86lyVF7yNi+Vp/kwbJhjZmZmXmb+huToQIfKU2zzpRBCzC05Ym7bsHnrH//+X/0qP5kvFSrkU/I0zJ+Vl81LIW9zS0LlZZtjnvJl82HeYuxmU6kom0/lZ0mOyjebo/zePOXTMN+VX83MLUeY2WFmG2bmliRUKsowt0pPvtlmdtg3tvm0CSG3HEmO/Gq+5KlSqVSS5Glm5hi2YWZmdvib8jcUKuSbQt62+UWe5kt/+ft/Eyq3vM0xc8xTPoSQXyShkC/zX6rchg3b/Nkcs3wot71cO+TRo0eHmZmZmZ+UW27lllu5VZJ0oELM3LaxzS1JKMSwjW32Qn6xsc02Nh86Hj2hHDMzs+rRo5KnmTlmZoeZ2WGHmdvMvGzDNjOSJEmSW55mjo5Hx+Px6IbKN9u8zcsMu7HNyxwzJKFCvswxbzHzq0I+VW7JEfrL//h3T/Np3pLkJQmF3PJlJPnZzBzzliNJ5Wmbp21+lZ/lbYZtnnZzDOubYWabciT51IFKmg+b72J+ozzNPG3DiG6ObdgcId/sZvadt/xGqcfjj8cLQja2sc3MNtvYhm2Y2d+AChUq9MWxeQsVKkk6JB0obLMNmwq55bYPtmHYfKpQnuaYmfnQIbmVW6jc8hJz9Je//7eZW5LKLXlJEnLky9zmb5mRW5KEwjbHNj/J08jP8jZjH/wsevSkYWbeKt8lqXyI+e+V7zYv29w6qIZt2Bwh3+xm9p15CrnlU44ejx6PPx6PejzcYtjGbtgTtnnaZmaHfWBfUHmp6Bu/CEmObrpROSq33QzTgfI0bGM329y2+a6SfJhjjnlL5a2QI8kt9E//498d2TBfQijfVI4kR/LNPOVpZo55ypEwx9y2YXOUt2Gbp+RIPu12Xde21KPH41GZmZk5Zv6mQiHfFHIk6QUVyrFh2MY2H5KECmWbYzfb7PCUX+wJ29gwQ/XojeRtdhg9qkeHTzPDNjMzM7MX2zxtmA/DXrwkOSpUyNsM26ge1aNHj1LpDYW2YZtfbfOyD7Z5y5GXJCG/mplj3vI0QqH+6R/+p58VwsywzadQvswI3RDDJiQJ5W2GbTZHhXJsw4Z5C+Vlu7Zd17XZHo9Hj0fl2DByJDnykm8qVI5tXjbllmb+hlBu27B5Sr4kzBwzc8xTjlDbzGzDDjPzTahQSUI5ZrZreDx6PB49Hoi57TC7sc02tmtPNt8V8mXeypHkSGzY5iehQkU3Fb2hmZmZbZjbNk/b7DBzy9u8JSFftvkwJKl80z/943/kQ4U8zbGNeaq8bBg2RzmG2eZDhcqv5kOSI+aYY455Cj257RukQmz+hpljnipUbrmVPwnlbWZuyW1etvlJclSSmJmXkU95Gvvgm222YZ6SJEmSUKHytCdS+TTystmuvbEbeZvbNmyO9IkKFbZhm5fKl00hSfK2OZLkbf5sbjO7YZuYIUfeYpiXbY7NUY4+PB71l//x7yqUn4UKyUuetmEbhnnK0SF5GuabbY7yXxk2TxWx69p121ZSIUeSb+abmGPDkCSU74oZiQ2jx6MkyZHvthmh8jTzaYcPG5ZbpaIcM3vBNvNp5pYOL0lFNxW17brZ9MU3u3btuq4dvsxTCPlQSPTkQ5gddtjmqDxVVAjlZRs2T4lKnma+2ebDzLCxzct8ydOwOba5JUlC5aV/+ct/+i75k3kZ29jmKTkq3ZRhh5mXmack+ZSflaeZsc3L7OnykluIsWHmKUmHt5mnkDRzjNxCyEvl08g2My9DKPI0XyoJ156YW3LkZzEjZmZm3mKOecpLqNCNjkcHdu069hTdlKdtjh3XrtvMLUd+1vHozdOIYRs2t83MyJGj0gfsG1SOJEluPSFP2xw73Ga22Y1tjphjm5c8le9vAAAT2UlEQVQKHcg3oX/5y39QuVXMzDHz3TZsc4Q+Ofbkt0JuS76LeRm2YeTI07XZdEhjxzVG5dNIjryNEEI2zFPlJRSSt40NG/nJZm9YX2xu85OKigrlaYTYZi/XNTbMSIeK8t2GeYqOx6ODa7uua9ekT8jG3q69mZmZmWNmXoqeHNu85cswM1NJkiQv+SbJd9s8lZFeHHmbY562YU92sw0bSYXQG0LI1r/98/+yzZcNG3kb5mmTSiWGzW1I8inJl20Y+bTNraIydu26bVc6pPKTQoj5NHLkyJFuxA63UGyzDUmOJMeGeWqbbeYp5mWEMDMvhUrlZx1I8rSRZMe1ax+uzdKBmek2xzyF0u3xeGC367pYPR49ycuebMM2M3uxw7CNHBVlm5mjkDxtGGabI8k3hdjIU2XYPCUdfjZCJWTzYZ62eZm9YJNHj0qF3Crk1r/+039u2ObYhm2e5qmQPmDDNreZpw6EUHma+TRChbwkxo5rx48fP67rwqMej4c8zXyzya3SIaFSyG0btrn1wW0vmJ4ox7DNbcPYhk2hvGy2oRDKrUIx802Fyjdlc13X3rDNkaeZeSqEdMitVGrXMS+JedrYkzx69MjMbMMObDPb2EaOyss2SfK2wy92sM0tT5WX3IoZ8rTZdW3r8fjj8ah0+G7YsBeSEDNPPT0eHX6v/uUv/+GYOWaeiiFJ5WVmhy95mm+SHDnyqQP5UDbMbXNd148fP2yS5NGjEiNPs8PM0c2Ro0JiYze3XjTblFsoVI5h2OZlH3wodPM2b6EPzOyTW2/IbcM2+2CbY5vbvMzYzTwllWM+bPMUOiQxcwyPHkfFNjOzDcM27A3zFD0h35T5kqdhbvOUPM02Rz7lNm89YZaUY/M2kqeZecqxufXyyIcceRr1z//4H95G5VaofNp8mDm2YZuXnpg5lopKmFF5yRHDtmu7jh8/No+bJLf5tORTqHxKYuYYNruh0M1Lh6PZDUNF5djYZmZu24xCkuRIniqUvTjKZje3x6PH41Ht5jZ2XGMbG0beKnmbHY6Zn+Rx9JBjmw9JnjZH5WmHD9vYhm3Xde3atWsbHkcPbEPIsXkplW5im5ljJGF2mKdUyJEkSfK0m9vMjJhjm5fahuh49OhRSb7MU//yl/8slZ9VbvviV9t8KRWVbWaWpEPSm82x2/Xjx4+//vXaHo96/NEhucXMl3TDhvlSIU87sPnUkw8xt72RGObYhnIrt7wMUwjbGKGQL9vYHLmF2a7hUT0ihs0OM9sqR3LkJ0titl3b9eP6cV2PR3/3x/Ho8YRttrHNLRQ6JLuuH9e2i3zZrl3bdfy4tnU8+uOPxx+PP2Q3m2OE/GQktxlJ3vK0w59scyT5ktvMRpIceZvZxuaoR18kT/3rP/0nhXzaMLfNn8zIrdIhibHrmqfQT7Bvfvz461//f3/drsfjj6PHI8mnDRvmbZiSR48epW1sc4xd2y508+HxiNjhmDm2+W6bD6FQXrZ5q5AQM9/MNxu2+a5U5EM5rm3XXmw9Hn/88aiua7suLx2qbdfTdl3Xhj8ej8cfDwpJ0gfb2OYYOVKPHj2GbbZhG3Zdu67rx48fuzaz9ejl0aPytM02hsptm6fkU7708shcu3bNh0rMNrdtnnoRM0OHZmaGHMktlE8h/fs//98zH/Zkmz8JOXLkJb0gT7ONkZBP29hxXT9+/PjrX/96XXv88fi7P/54PP7o0aMwn2K7NvNUIVSSCinbzHwzKkduMWwzbHPkaT5sc2zD5ikhecmnyjHMbX4jbLONcnTzYdt1Xdvoppsv5WmHXdd2XdfmVujJh5BjGz2JzQxJzCz16NFjZq49Xde1a9eubX3YZhe2oXLbMF8q31QqH/qAvZiZIVSSNPYNkg6hfKh8k6Qej0f1KMRu+rd//l+7eco35W3Tmw/bbGM3U3p5lLwUM8Oeruv6619/XNeP6vF49HhU2Ic+OLa5jVDo6VE6mJlthEJIN8cMG+YpsbnNzFx7Yo6ZY15GuiFUKJJj17ZrcxuVym3YganoE2rbjx/Xdf3YkyMqR9LMbNeP67p+XNsefzyeesiRhG6SxLiubdc2Gz0eHT5sZtGTzXXt2rUnR/TkGPaiqNiwDcPGNjvMU6Knhw4VlaeKYQfb7GCEStlhByG9SI7NNrYp9OnxePzxeDz+eNSjwqx//af/9GlmVF4qVH5nN/OUPM2H7dqu69qna9d1bVOPo0dPFEPyYWaEinmqR/XoSZJmRo7ekKdtttnNkByhmGObHddmXubTjEJ5W5KXym3DzMxT5WVuUyS9PB4Pt20/ni7mqZLKZnaYpw4Js8PILfTo0ePxyLHNl13XtbFHj4ptrr09qsej2nHt2qLb7LANM3NLOrztBfM7vTxKu0ly22zXbjHbHBWuPUU3Zdg8bexm3ip0jEc9Ho8//vijHo9HpX/7p/8lP5mZKfUQ27UnM+uDbwph2NN1Xbs2e7r248ePa6v+eDwq5dM2T6FCNi8dVJJvKreKeUs9ejw6NrdtGCrs2rXZzYyeHMPmaddFkjCjclS7mduGzVFUjs1RqCShciRJM+zatePabLPNKMY206NH9Xg8SmLbtdnhKHoiT+vmZRs2bPOWmGOOHdc1PKrHI09zzA7ytJkdRiMqeZpjZo5Sj56ovO2DDzNzDDts1zFPofK0J0+JsWvXzaeeHtXjqB49jt7+/V/+b7dtZnaY74YN3YSYmZmZ2679uK7rx49NGbuuH9e163o8Hn8cf/dHh8Y223zp5haSMHOrHo9HB0U55ksoZMM2tyVHNtu1CTFfkjBzzFvthgobdrilmS+FlFSIsc1R6enxeGDXrm3Xngyb7dp0oOzJh0rMNoXc8ujRo4PKy4Z52bDbdWwU+gXbtV3XbPOyDTM/SRo2eZo9XW7d9A3DXmxjPnTDbtd17cVtnpKnYRvbrmvXbZsRCj09Ho8/Ho8eJel//uv/s82HvXmK2S5bPR6PejwSRojtuvZy7Qnb7Onadq30ODp8GjZ2bZ6im1CUHo9Qbt1YVFSOzW0bhvmUp6WZObYxYsPE7PDUgZljjnnasM1tnipUKptErms2Jav98dj/5+9+/PGHH/u7H9ff/bge12XbtYPt2kw1T7vhUSqUTT1KBzp82MZSjw4q1Wa7tuHxiLZr17Hrun78uK5ddDwejz+eHhVKurbruna7rmtvbN6a2fQiYWYfyNPIl5F6lJ4eHdd17bqwJ9t+XNf14wf6sFtROZrt2nHtuq5t13XtcCRJ6vH0x+Pxx+OP/vUv/zlvIRvmKU8zUqEXza7rMnNss41ttuvHj+v6ccmjejwe1aOYytu8FHkalVuFepQkt2uXkSNPm6fkraJtjlSocF3Xrmv7/7cFLzqCZEcBRCOyBvv3kTAsD2MQn8l2ZXCruns8K3FOKC85hD7xUAGBwAdqtfdW+ACq3a0AUVEqCRmFoGucYcYX5cYuu9zbboBOJM51qdXuth1IITiCPAJEfADKSwUElKOiAsEZoGPbtmOrLY4tQJ1DkVFnePX/IRARCHr5CVQeFRHRY3vxB/JS0PEBHsgjgoraAuQRUBGlovTYF9DBIaDGS8RjRv/9t/+GCgiIhxxChYAHP1W72+anEYQ4IiqqPe4b+XH9OGZEeVRQEYFy9AVwFAEVERGQCigOIRAPBGor8OClVMDMoPRF7QDBbz12t09AfBEVPCAqDuUX7a9uYWYcZ+Yar2v4FAgIFD3oABVE5VFsX8To4KGwRam8HOflgWgv+rRbbTPq8EkO0fGo7nvv+6bQGcfxBVTI0RcOAaWiot0tKn5ReCDyiJcKFbvbLqDi3/FSZ9RRo7bdavlWQcRDhCKiQCAq4icFBIRQf/vLf/aigooewMxc1+XIq6h2791mvOaaa3yBEBFUu3u/qB8vxxceCFRbEPiAqC0iKg4VUD4VKqiAr4jii8pDhWq31/IKFB1F5IvQFtE3QJkZhDiUHlQQDyFUKCARqXa33YqXMjOOIgJSYNFBojOORO1uu71AxmOgoFCKdlWE8BcICMiX6uO+974BdcZPaCU6CsW2e2+kzgtQOWqLCGoL5ahAhXhor91tNxD8wi8CZkbYarcvIESkjoN4YASIEQUiR7sV4GOUY6tdXiGggAevYgvyX/7prwoItUUcBUJb6syoIKDoKD/52nu37SUPj3lwFOArvhUPoQLiIcQroABfqIAHoBARHUREoyiBELVAAR2APAK/AbvVBuP4CERE5ah2qz2oeIhIAfFSURACBHTvR7tANSMIHkihqChR8doSgXvv4hGvdBw5IhoH8RMiLwE/QbV9oSAevkBEIKAAZ0Y5fPF31R7VFlG7RYCIB2DH7hblMYqPERCUo097dChFhQi9gHmoo4NQQUUBalQoOtQ++sSrA9SZUY6izX//7b8ovlT8tI8bnBkVHzP+YpTd9tO92wpzzaHjwZdtC0UFAqrtwZdRoIOHgC8IKkCdGbXHth0cQkC8ilpe8sVxHMdqewgqEIyjcoiAclRAKLu1C0S7W0CF42ggOFOxFYca8WofxUMBwfFAiWpb4lOPBYHdIPSaUXkIHTz8MgpBmzoziIDyatuW8gVuS6nzUvwGFLWfKh0VBYr708dHJXiM46BAdd/37io6Mx4z4wuEgGr3PnajgArii4I613hAtQXpHEDFoy3AA3sBvfaROsc1/vRv//I3QQ2oSCh272JmEHWcuUbHF6927/veHoACAjOKB1BAAaWCtbyCNihQxumFUmjHFs3MdU0vD9zae++925BRR5DyGEd5BFQU6Nh2cIg6L37qwaF82w3iYXQQ1bYEcl3XzFQEVHxSgXYDcV8QCGwRM6KAGlRUJPbytQWoBDoa7b2IqICKMyqwu+3qqMghzojyEpWoDVDnGpWAADUgjn1VQAcPEdh278fei17XjNOLV8TDGQ8gEPxFdd8fx30vxd8FXHMIqBXBQFQ+JuKIw1GndjelqN27LToWnGsOHcR/++e/KcHej92truua6/LAY6450FFgd9ut8NFjC/kDx3EQkA4gAjkKZbdakKMiICoOFZgZD0BUItpHFKDoKJ989VJA+RJHPCpqWxxnnBm1aDdQXqJE7aN8zIxFBfGpAw+oAEdid+/7BmcGKnaXQ9RxfKG90I4NEXoBKrBFeIxABei0Wys6zgwQiNExzoEHfoKIUEBAAaHddhedcWaA3YRo7wXU6LEF8tj2vveo5A92l1IRnfER1AJ+gqg9qt1NcEZeIqgo/YLAeQhCgg4K9GWLo3hUHBUeo3/7j//5/X9///33/93dmev68eO6LrUC1JlReVX3fbchKlBRgTgjSg8eIqNgbXEIgaID7fZaDu3li5cHQgffVCAS1JkJKFSICHqBooI8AlRgdyt1RhEpFBDaatm2mhkV7AXxCxGo+CZGvKrdBUTHBwT0AJG2e29xZlS0AqGDh0Ck8ogIKkJQUSE6AOWodA5HEALk0PG6LpX4qfa+74+Pu7qucR4iFFTEQ4iIgIitdu/dve8IfAAiAhHxRejBUZEvXn3aah3n8IG2G8ijrTZA5yVG9BBQYHdBhNi2LVD5pP7lH/+1uK65rmuuSwX6hYAKARG13Xu3q87LY5wZcXcrXiJSVFQ8xgcK7XEv4kyP9QXyJUEnIjxGoaiUcRwVENoikLbdu5pX0OYxHhy1tbvqKNDLY6bX7hKOILQbVLwaR+Wl9uLwFRWHFIfHOLrHfYOPGWVr72MReajo7rYLFBA6DgToCOpu285LZ0Zkd9tFBRRoF1QqjxmVitSZS6ztwf1YwWEcx09AvCLa3XY5ansQ2+691cyoFQRUEKCC7V0Bvea4ZuZSa+/73l0CEWbmuq6ZAWorjkJnRuVVgdXuVgpYqShQERHf/O2f/qqogQryTTkqQECB+9Uu8OMlBOoo2jf+qKjl4e7eHx8eMz74yReHHBUFIoeACvHwD+hF9PIB2gECSvngKO773l1f1zU6QG3R7pYK9qIQlXgEIjqOE30CZqao+EWloMQhKM5Q966gotXed6C2X4rrutA2IB6Cn0YqUGdEhKBtS0A5iggiYWac8SAdx2J32+77/v3jQ/3TP/xQAxXYe48ZdZRDadt27y1QajtWPBCh2r15FYdS1FY8AvyGErs3BRGR6CD02MrXzKVy+GnAaO97NyoeKojOw6LyX//5P0EhjkBAAZWjY9t27/v++JiZP/3pT9ePS+UIBDwAhegTUIEIRC96zYyjCPGpttrtIBXQua5ROVQ+BR4dBIi81HhVvArwGA8COfbebUXHY18qv/DA7VigYwNf/OQ3YLdPfHO85kLbBSJ5jFYfH78XzhdeQlDt3ve9FXFUuz1AmRl1Rh2PUR77KhRQ+VTxKip1xrmua8YRKDp273vvY2/xGq8fj16ACiiPqLYHPXaDkLaDLxWflKPoNeNRQb4AFaj2vitIHooKVLvbLuAI+AIPlAjUYu979+ZwPGZUEPC3v/xVBSrAF4GMVvd9f/z+sfd9/bj+/Oc///hxBT1oN5gZZ4QeW+0GFL54VfsaZ66Z8SAivrVFvirgugbYXWBmeClgRQXqdV084rXbFoWOr3EcpNrdHkCgI9W2RTmCu1sBAioqu+0uoFKICh697nsPAb2uUXcXmBl+oSg6ytFW66sI/FbdHx+7RSDwcdwf4HFdM46KCAGBiB3UBqkzowaEGuzebQo66jyEoPve3Y5tW/XHdc01j+tS7/uuflw/kPve3bvtExTsvbWBHEIFxCtoF1SOasaDlzNiBQG1ey8kVL549BMkFd88cBwfiJC9AI9RR/k/IYNCk33kOLEAAAAASUVORK5CYII=", "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import Image\n", "Image(open(\"img.png\", \"rb\").read())" ] }, { "cell_type": "markdown", "id": "a15f6912-500b-433e-a69a-74660028b3d6", "metadata": {}, "source": [ "The log message shows that not only the `rgb` is created, but a `main_camera` is provided automatically, which is also an RGB camera rendering into the pop-up window. It can serve as a sensor as well." ] }, { "cell_type": "markdown", "id": "8caacfa8-0d10-4dc2-8a6c-494dc7524b0d", "metadata": { "tags": [] }, "source": [ "## Graphics-based Sensors\n", "\n", "We provide the following sensors:\n", "\n", "* Main Camera\n", "* RGB Camera\n", "* Depth Camera\n", "* Semantic Camera" ] }, { "cell_type": "markdown", "id": "e4a9ad44-4beb-473d-9870-dcb76be25643", "metadata": {}, "source": [ "### Using semantic camera as observation" ] }, { "cell_type": "code", "execution_count": 5, "id": "fda11246-5c14-44ed-8e20-b6054940b51e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'image': (128, 256, 3, 3)}\n" ] } ], "source": [ "from metaurban.envs import SidewalkStaticMetaUrbanEnv\n", "from metaurban.component.sensors.semantic_camera import SemanticCamera\n", "import matplotlib.pyplot as plt\n", "import os\n", "\n", "size = (256, 128) if not os.getenv('TEST_DOC') else (16, 16) # for github CI\n", "\n", "env = SidewalkStaticMetaUrbanEnv(dict(\n", " object_density=0.1,\n", " log_level=50, # suppress log\n", " image_observation=True,\n", " show_terrain=not os.getenv('TEST_DOC'),\n", " sensors={\"sementic_camera\": [SemanticCamera, *size]},\n", " vehicle_config={\"image_source\": \"sementic_camera\"},\n", " stack_size=3,\n", "))\n", "obs, info = env.reset()\n", "for _ in range(5):\n", " obs, r, d, t, i = env.step((0, 1))\n", "\n", "env.close()\n", "\n", "print({k: v.shape for k, v in obs.items()}) # Image is in shape (H, W, C, num_stacks)" ] }, { "cell_type": "code", "execution_count": 6, "id": "450f8f1a-c062-4d1f-953d-cee030617bf2", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.5, 255.5, 127.5, -0.5)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.subplot(131)\n", "plt.imshow(obs[\"image\"][:, :, :, 0])\n", "plt.axis(\"off\")\n", "plt.subplot(132)\n", "plt.imshow(obs[\"image\"][:, :, :, 1])\n", "plt.axis(\"off\")\n", "plt.subplot(133)\n", "plt.imshow(obs[\"image\"][:, :, :, 2])\n", "plt.axis(\"off\")" ] } ], "metadata": { "kernelspec": { "display_name": "metaurban", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.16" }, "mystnb": { "execution_mode": "off" } }, "nbformat": 4, "nbformat_minor": 5 }