From ff7479faba8778f7a82d8ba838af89005f91d45f Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action Feat: EvMenu tooltips for multiple help categories in a node (Seannio) Fix: Typo in evadventure twitch combat’s call of Docs: Fix bug in evadventure equipmenthandler blocking creation of npcs
+in-game.
create_combathandler..add and .remove.add and .remove
Above we have assumed the EquipmentHandler (.equipment) has methods .validate_slot_usage, .add and .remove. But we haven’t actually added them yet - we just put some reasonable names! Before we can use this, we need to go actually adding those methods.
When you do things like create/drop monster:NPC, the npc will briefly be in your inventory before being dropped on the ground. Since an NPC is not a valid thing to equip, the EquipmentHandler will complain with an EquipmentError (we define this see below). So we need to
In the .armor() method we get the item (if any) out of each relevant wield-slot (body, shield, head), and grab their armor Attribute. We then sum() them all up.
In .weapon(), we simply check which of the possible weapon slots (weapon-hand or two-hands) have something in them. If not we fall back to the ‘Bare Hands’ object we created in the Object tutorial lesson earlier.
So we have added our equipment handler which validate what we put in it. This will however lead to a problem when we create things like NPCs in game, e.g. with
+create/drop monster:evadventure.npcs.EvAdventureNPC
+The problem is that when the monster is created it will briefly appear in your inventory before being dropped, so this code will fire on you when you do that (assuming you are an EvAdventureCharacter):
# mygame/evadventure/characters.py
+# ...
+
+class EvAdventureCharacter(LivingMixin, DefaultCharacter):
+
+ # ...
+
+ def at_object_receive(self, moved_object, source_location, **kwargs):
+ """
+ Called by Evennia when an object arrives 'in' the character.
+
+ """
+ self.equipment.add(moved_object)
+At this means that the equipmenthandler will check the NPC, and since it’s not a equippable thing, an EquipmentError will be raised, failing the creation. Since we want to be able to create npcs etc easily, we will handle this error with a try...except statement like so:
# mygame/evadventure/characters.py
+# ...
+from evennia import logger
+from .equipment import EquipmentError
+
+class EvAdventureCharacter(LivingMixin, DefaultCharacter):
+
+ # ...
+
+ def at_object_receive(self, moved_object, source_location, **kwargs):
+ """
+ Called by Evennia when an object arrives 'in' the character.
+
+ """
+ try:
+ self.equipment.add(moved_object)
+ except EquipmentError:
+ logger.log_trace()
+
+Using Evennia’s logger.log_trace() we catch the error and direct it to the server log. This allows you to see if there are real errors here as well, but once things work and these errors are spammy, you can also just replace the logger.log_trace() line with a pass to hide these errors.
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look while out-of-character\n\n Usage:\n look\n\n Look in the ooc state.\n '}¶
aliases = ['pemit', 'remit']¶aliases = ['remit', 'pemit']¶
search_index_entry = {'aliases': 'pemit remit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' pemit remit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶search_index_entry = {'aliases': 'remit pemit', 'category': 'admin', 'key': 'emit', 'no_prefix': ' remit pemit', 'tags': '', 'text': '\n admin command for emitting message to multiple objects\n\n Usage:\n emit[/switches] [<obj>, <obj>, ... =] <message>\n remit [<obj>, <obj>, ... =] <message>\n pemit [<obj>, <obj>, ... =] <message>\n\n Switches:\n room - limit emits to rooms only (default)\n accounts - limit emits to accounts only\n contents - send to the contents of matched objects too\n\n Emits a message to the selected objects or to\n your immediate surroundings. If the object is a room,\n send to its contents. remit and pemit are just\n limited forms of emit, for sending to rooms and\n to accounts respectively.\n '}¶
set an object’s home location
sethome <obj> [= <home_location>] -sethom <obj>
+sethome <obj>The “home” location is a “safety” location for objects; they @@ -958,7 +958,7 @@ It is also a convenient target of the “home” command.
search_index_entry = {'aliases': '', 'category': 'building', 'key': '@sethome', 'no_prefix': 'sethome ', 'tags': '', 'text': '\n set an object\'s home location\n\n Usage:\n sethome <obj> [= <home_location>]\n sethom <obj>\n\n The "home" location is a "safety" location for objects; they\n will be moved there if their current location ceases to exist. All\n objects should always have a home location for this reason.\n It is also a convenient target of the "home" command.\n\n If no location is given, just view the object\'s home location.\n '}¶search_index_entry = {'aliases': '', 'category': 'building', 'key': '@sethome', 'no_prefix': 'sethome ', 'tags': '', 'text': '\n set an object\'s home location\n\n Usage:\n sethome <obj> [= <home_location>]\n sethome <obj>\n\n The "home" location is a "safety" location for objects; they\n will be moved there if their current location ceases to exist. All\n objects should always have a home location for this reason.\n It is also a convenient target of the "home" command.\n\n If no location is given, just view the object\'s home location.\n '}¶
aliases = ['@update', '@type', '@swap', '@parent', '@typeclasses']¶aliases = ['@parent', '@type', '@update', '@typeclasses', '@swap']¶
search_index_entry = {'aliases': '@update @type @swap @parent @typeclasses', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass update type swap parent typeclasses', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶search_index_entry = {'aliases': '@parent @type @update @typeclasses @swap', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent type update typeclasses swap', 'tags': '', 'text': "\n set or change an object's typeclass\n\n Usage:\n typeclass[/switch] <object> [= typeclass.path]\n typeclass/prototype <object> = prototype_key\n\n typeclasses or typeclass/list/show [typeclass.path]\n swap - this is a shorthand for using /force/reset flags.\n update - this is a shorthand for using the /force/reload flag.\n\n Switch:\n show, examine - display the current typeclass of object (default) or, if\n given a typeclass path, show the docstring of that typeclass.\n update - *only* re-run at_object_creation on this object\n meaning locks or other properties set later may remain.\n reset - clean out *all* the attributes and properties on the\n object - basically making this a new clean object. This will also\n reset cmdsets!\n force - change to the typeclass also if the object\n already has a typeclass of the same name.\n list - show available typeclasses. Only typeclasses in modules actually\n imported or used from somewhere in the code will show up here\n (those typeclasses are still available if you know the path)\n prototype - clean and overwrite the object with the specified\n prototype key - effectively making a whole new object.\n\n Example:\n type button = examples.red_button.RedButton\n type/prototype button=a red button\n\n If the typeclass_path is not given, the current object's typeclass is\n assumed.\n\n View or set an object's typeclass. If setting, the creation hooks of the\n new typeclass will be run on the object. If you have clashing properties on\n the old class, use /reset. By default you are protected from changing to a\n typeclass of the same name as the one you already have - use /force to\n override this protection.\n\n The given typeclass must be identified by its location using python\n dot-notation pointing to the correct module and class. If no typeclass is\n given (or a wrong typeclass is given). Errors in the path or new typeclass\n will lead to the old typeclass being kept. The location of the typeclass\n module is searched from the default typeclass directory, as defined in the\n server settings.\n\n "}¶
aliases = ['@exam', '@ex']¶aliases = ['@ex', '@exam']¶
search_index_entry = {'aliases': '@exam @ex', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine exam ex', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶search_index_entry = {'aliases': '@ex @exam', 'category': 'building', 'key': '@examine', 'no_prefix': 'examine ex exam', 'tags': '', 'text': '\n get detailed information about an object\n\n Usage:\n examine [<object>[/attrname]]\n examine [*<account>[/attrname]]\n\n Switch:\n account - examine an Account (same as adding *)\n object - examine an Object (useful when OOC)\n script - examine a Script\n channel - examine a Channel\n\n The examine command shows detailed game info about an\n object and optionally a specific attribute on it.\n If object is not specified, the current location is examined.\n\n Append a * before the search string to examine an account.\n\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶
aliases = ['"', "'"]¶aliases = ["'", '"']¶
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = [':', 'emote']¶aliases = ['emote', ':']¶
search_index_entry = {'aliases': ': emote', 'category': 'general', 'key': 'pose', 'no_prefix': ' : emote', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶search_index_entry = {'aliases': 'emote :', 'category': 'general', 'key': 'pose', 'no_prefix': ' emote :', 'tags': '', 'text': "\n strike a pose\n\n Usage:\n pose <pose text>\n pose's <pose text>\n\n Example:\n pose is standing by the wall, smiling.\n -> others will see:\n Tom is standing by the wall, smiling.\n\n Describe an action being taken. The pose text will\n automatically begin with your name.\n "}¶
aliases = ['@task', '@delays']¶aliases = ['@delays', '@task']¶
search_index_entry = {'aliases': '@task @delays', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks task delays', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶search_index_entry = {'aliases': '@delays @task', 'category': 'system', 'key': '@tasks', 'no_prefix': 'tasks delays task', 'tags': '', 'text': "\n Display or terminate active tasks (delays).\n\n Usage:\n tasks[/switch] [task_id or function_name]\n\n Switches:\n pause - Pause the callback of a task.\n unpause - Process all callbacks made since pause() was called.\n do_task - Execute the task (call its callback).\n call - Call the callback of this task.\n remove - Remove a task without executing it.\n cancel - Stop a task from automatically executing.\n\n Notes:\n A task is a single use method of delaying the call of a function. Calls are created\n in code, using `evennia.utils.delay`.\n See |luhttps://www.evennia.com/docs/latest/Command-Duration.html|ltthe docs|le for help.\n\n By default, tasks that are canceled and never called are cleaned up after one minute.\n\n Examples:\n - `tasks/cancel move_callback` - Cancels all movement delays from the slow_exit contrib.\n In this example slow exits creates it's tasks with\n `utils.delay(move_delay, move_callback)`\n - `tasks/cancel 2` - Cancel task id 2.\n\n "}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpxq7pny5z/c4c4cb14ff915a62cf98070e3bd5ab5b3f633e30/evennia/contrib/tutorials/red_button/red_button.py'>¶
aliases = ['conn', 'co', 'con']¶aliases = ['con', 'co', 'conn']¶
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n connect to the game\n\n Usage (at login screen):\n connect accountname password\n connect "account name" "pass word"\n\n Use the create command to first create an account before logging in.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶
aliases = ['q', 'qu']¶aliases = ['qu', 'q']¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n quit when in unlogged-in state\n\n Usage:\n quit\n\n We maintain a different version of the quit command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n look when in unlogged-in state\n\n Usage:\n look\n\n This is an unconnected version of the look command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['conn', 'co', 'con']¶aliases = ['con', 'co', 'conn']¶
search_index_entry = {'aliases': 'conn co con', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn co con', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶search_index_entry = {'aliases': 'con co conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' con co conn', 'tags': '', 'text': '\n Connect to the game.\n\n Usage (at login screen):\n connect <email> <password>\n\n Use the create command to first create an account before logging in.\n '}¶
aliases = ['q', 'qu']¶aliases = ['qu', 'q']¶
search_index_entry = {'aliases': 'q qu', 'category': 'general', 'key': 'quit', 'no_prefix': ' q qu', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶search_index_entry = {'aliases': 'qu q', 'category': 'general', 'key': 'quit', 'no_prefix': ' qu q', 'tags': '', 'text': '\n We maintain a different version of the `quit` command\n here for unconnected accounts for the sake of simplicity. The logged in\n version is a bit more complicated.\n '}¶
aliases = ['l', 'look']¶aliases = ['look', 'l']¶
search_index_entry = {'aliases': 'l look', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' l look', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶search_index_entry = {'aliases': 'look l', 'category': 'general', 'key': '__unloggedin_look_command', 'no_prefix': ' look l', 'tags': '', 'text': '\n This is an unconnected version of the `look` command for simplicity.\n\n This is called by the server and kicks everything in gear.\n All it does is display the connect screen.\n '}¶
aliases = ['@callback', '@callbacks', '@calls']¶aliases = ['@calls', '@callbacks', '@callback']¶
search_index_entry = {'aliases': '@callback @callbacks @calls', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback callbacks calls', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶search_index_entry = {'aliases': '@calls @callbacks @callback', 'category': 'building', 'key': '@call', 'no_prefix': 'call calls callbacks callback', 'tags': '', 'text': '\n Command to edit callbacks.\n '}¶
aliases = ['aliaschan', 'chanalias']¶aliases = ['chanalias', 'aliaschan']¶
search_index_entry = {'aliases': 'aliaschan chanalias', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' aliaschan chanalias', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶search_index_entry = {'aliases': 'chanalias aliaschan', 'category': 'comms', 'key': 'addcom', 'no_prefix': ' chanalias aliaschan', 'tags': '', 'text': '\n Add a channel alias and/or subscribe to a channel\n\n Usage:\n addcom [alias=] <channel>\n\n Joins a given channel. If alias is given, this will allow you to\n refer to the channel by this alias rather than the full channel\n name. Subsequent calls of this command can be used to add multiple\n aliases to an already joined channel.\n '}¶
aliases = ['q', 'quit', 'chicken out', 'abort']¶aliases = ['abort', 'chicken out', 'q', 'quit']¶
search_index_entry = {'aliases': 'q quit chicken out abort', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' q quit chicken out abort', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶search_index_entry = {'aliases': 'abort chicken out q quit', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort chicken out q quit', 'tags': '', 'text': '\n Give up\n\n Usage:\n give up\n\n Abandons your attempts at escaping and of ever winning the pie-eating contest.\n\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'evscaperoom', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n Look at the room, an object or the currently focused object\n\n Usage:\n look [obj]\n\n '}¶
aliases = ['shout', ';', 'whisper']¶aliases = [';', 'whisper', 'shout']¶
search_index_entry = {'aliases': 'shout ; whisper', 'category': 'general', 'key': 'say', 'no_prefix': ' shout ; whisper', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶search_index_entry = {'aliases': '; whisper shout', 'category': 'general', 'key': 'say', 'no_prefix': ' ; whisper shout', 'tags': '', 'text': '\n Perform an communication action.\n\n Usage:\n say <text>\n whisper\n shout\n\n '}¶
aliases = ['unfocus', 'e', 'examine', 'ex']¶aliases = ['ex', 'examine', 'e', 'unfocus']¶
search_index_entry = {'aliases': 'unfocus e examine ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' unfocus e examine ex', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶search_index_entry = {'aliases': 'ex examine e unfocus', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex examine e unfocus', 'tags': '', 'text': '\n Focus your attention on a target.\n\n Usage:\n focus <obj>\n\n Once focusing on an object, use look to get more information about how it\n looks and what actions is available.\n\n '}¶
aliases = ['inventory', 'give', 'i', 'inv']¶aliases = ['i', 'inv', 'give', 'inventory']¶
search_index_entry = {'aliases': 'inventory give i inv', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inventory give i inv', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'i inv give inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' i inv give inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶
aliases = ['@dig', '@open']¶aliases = ['@open', '@dig']¶
search_index_entry = {'aliases': '@dig @open', 'category': 'general', 'key': 'open', 'no_prefix': ' dig open', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶search_index_entry = {'aliases': '@open @dig', 'category': 'general', 'key': 'open', 'no_prefix': ' open dig', 'tags': '', 'text': '\n Interact with an object in focus.\n\n Usage:\n <action> [arg]\n\n '}¶
aliases = ['deal', 'offers']¶aliases = ['offers', 'deal']¶
search_index_entry = {'aliases': 'deal offers', 'category': 'trading', 'key': 'status', 'no_prefix': ' deal offers', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶search_index_entry = {'aliases': 'offers deal', 'category': 'trading', 'key': 'status', 'no_prefix': ' offers deal', 'tags': '', 'text': "\n show a list of the current deal\n\n Usage:\n status\n deal\n offers\n\n Shows the currently suggested offers on each sides of the deal. To\n accept the current deal, use the 'accept' command. Use 'offer' to\n change your deal. You might also want to use 'say', 'emote' etc to\n try to influence the other part in the deal.\n "}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look\n\n Usage:\n look\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects in your vicinity.\n '}¶
aliases = ['fly', 'dive']¶aliases = ['dive', 'fly']¶
search_index_entry = {'aliases': 'fly dive', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' fly dive', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶search_index_entry = {'aliases': 'dive fly', 'category': 'general', 'key': 'fly or dive', 'no_prefix': ' dive fly', 'tags': '', 'text': '\n Fly or Dive up and down.\n\n Usage:\n fly\n dive\n\n Will fly up one room or dive down one room at your current position. If\n there is no room above/below you, your movement will fail.\n\n '}¶
aliases = ['"', "'"]¶aliases = ["'", '"']¶
search_index_entry = {'aliases': '" \'', 'category': 'general', 'key': 'say', 'no_prefix': ' " \'', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶search_index_entry = {'aliases': '\' "', 'category': 'general', 'key': 'say', 'no_prefix': ' \' "', 'tags': '', 'text': '\n speak as your character\n\n Usage:\n say <message>\n\n Talk to those in your current location.\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'general', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'general', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n look at location or object\n\n Usage:\n look\n look <obj>\n look *<account>\n\n Observes your location or objects in your vicinity.\n '}¶
aliases = ['unwield', 'unwear']¶aliases = ['unwear', 'unwield']¶
search_index_entry = {'aliases': 'unwield unwear', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwield unwear', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶search_index_entry = {'aliases': 'unwear unwield', 'category': 'general', 'key': 'remove', 'no_prefix': ' unwear unwield', 'tags': '', 'text': '\n Remove a remove a weapon/shield, armor or helmet.\n\n Usage:\n remove <item>\n unwield <item>\n unwear <item>\n\n To remove an item from the backpack, use |wdrop|n instead.\n\n '}¶
aliases = ['press', 'push', 'press button']¶
search_index_entry = {'aliases': 'press push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button (lid closed)\n\n Usage:\n push button\n\n '}¶
aliases = ['break lid', 'smash lid', 'smash']¶
search_index_entry = {'aliases': 'break lid smash lid smash', 'category': 'general', 'key': 'smash glass', 'no_prefix': ' break lid smash lid smash', 'tags': '', 'text': '\n Smash the protective glass.\n\n Usage:\n smash glass\n\n Try to smash the glass of the button.\n\n '}¶
aliases = ['press', 'push', 'press button']¶
search_index_entry = {'aliases': 'press push press button', 'category': 'general', 'key': 'push button', 'no_prefix': ' press push press button', 'tags': '', 'text': '\n Push the red button\n\n Usage:\n push button\n\n '}¶
aliases = ['examine', 'feel', 'listen', 'ex', 'get', 'l']¶
search_index_entry = {'aliases': 'examine feel listen ex get l', 'category': 'general', 'key': 'look', 'no_prefix': ' examine feel listen ex get l', 'tags': '', 'text': "\n Looking around in darkness\n\n Usage:\n look <obj>\n\n ... not that there's much to see in the dark.\n\n "}¶
aliases = ['light', 'burn']¶aliases = ['burn', 'light']¶
search_index_entry = {'aliases': 'light burn', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' light burn', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶search_index_entry = {'aliases': 'burn light', 'category': 'tutorialworld', 'key': 'on', 'no_prefix': ' burn light', 'tags': '', 'text': '\n Creates light where there was none. Something to burn.\n '}¶
aliases = ['pull', 'shiftroot', 'push', 'move']¶aliases = ['move', 'pull', 'push', 'shiftroot']¶
search_index_entry = {'aliases': 'pull shiftroot push move', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull shiftroot push move', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶search_index_entry = {'aliases': 'move pull push shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move pull push shiftroot', 'tags': '', 'text': '\n Shifts roots around.\n\n Usage:\n shift blue root left/right\n shift red root left/right\n shift yellow root up/down\n shift green root up/down\n\n '}¶
aliases = ['push button', 'press button', 'button']¶aliases = ['push button', 'button', 'press button']¶
search_index_entry = {'aliases': 'push button press button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button press button button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'push button button press button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' push button button press button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['pierce', 'thrust', 'bash', 'hit', 'kill', 'chop', 'parry', 'defend', 'slash', 'stab', 'fight']¶aliases = ['thrust', 'defend', 'bash', 'hit', 'parry', 'pierce', 'chop', 'slash', 'kill', 'stab', 'fight']¶
search_index_entry = {'aliases': 'pierce thrust bash hit kill chop parry defend slash stab fight', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' pierce thrust bash hit kill chop parry defend slash stab fight', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶search_index_entry = {'aliases': 'thrust defend bash hit parry pierce chop slash kill stab fight', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' thrust defend bash hit parry pierce chop slash kill stab fight', 'tags': '', 'text': '\n Attack the enemy. Commands:\n\n stab <enemy>\n slash <enemy>\n parry\n\n stab - (thrust) makes a lot of damage but is harder to hit with.\n slash - is easier to land, but does not make as much damage.\n parry - forgoes your attack but will make you harder to hit on next\n enemy attack.\n\n '}¶
aliases = ['l', 'ls']¶aliases = ['ls', 'l']¶
search_index_entry = {'aliases': 'l ls', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l ls', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}¶search_index_entry = {'aliases': 'ls l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' ls l', 'tags': '', 'text': '\n looks at the room and on details\n\n Usage:\n look <obj>\n look <room detail>\n look *<account>\n\n Observes your location, details at your location or objects\n in your vicinity.\n\n Tutorial: This is a child of the default Look command, that also\n allows us to look at "details" in the room. These details are\n things to examine and offers some extra description without\n actually having to be actual database objects. It uses the\n return_detail() hook on TutorialRooms for this.\n '}¶
aliases = ['l', 'feel', 'feel around', 'fiddle', 'search']¶aliases = ['feel', 'feel around', 'search', 'fiddle', 'l']¶
search_index_entry = {'aliases': 'l feel feel around fiddle search', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' l feel feel around fiddle search', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶search_index_entry = {'aliases': 'feel feel around search fiddle l', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel feel around search fiddle l', 'tags': '', 'text': '\n Look around in darkness\n\n Usage:\n look\n\n Look around in the darkness, trying\n to find something.\n '}¶
directory = '/tmp/tmprlci_f6c/0b030c078ae6d5ba6e59d11654f7ef99d42b1c08/evennia'¶directory = '/tmp/tmpxq7pny5z/c4c4cb14ff915a62cf98070e3bd5ab5b3f633e30/evennia'¶
directory = '/tmp/tmprlci_f6c/0b030c078ae6d5ba6e59d11654f7ef99d42b1c08/evennia/game_template'¶directory = '/tmp/tmpxq7pny5z/c4c4cb14ff915a62cf98070e3bd5ab5b3f633e30/evennia/game_template'¶
aliases = [':fd', ':', ':w', ':y', ':h', '::', ':UU', ':s', ':echo', ':u', ':q', ':i', ':A', ':fi', ':S', ':I', ':=', ':r', ':!', ':dw', ':j', ':q!', ':DD', ':<', ':uu', ':>', ':f', ':dd', ':x', ':wq', ':p', ':::']¶aliases = [':s', ':y', ':', ':::', ':dd', ':q!', ':fi', ':UU', ':i', ':S', ':q', '::', ':j', ':echo', ':=', ':fd', ':I', ':f', ':x', ':u', ':r', ':uu', ':w', ':wq', ':DD', ':p', ':dw', ':>', ':A', ':h', ':<', ':!']¶
search_index_entry = {'aliases': ':fd : :w :y :h :: :UU :s :echo :u :q :i :A :fi :S :I := :r :! :dw :j :q! :DD :< :uu :> :f :dd :x :wq :p :::', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :fd : :w :y :h :: :UU :s :echo :u :q :i :A :fi :S :I := :r :! :dw :j :q! :DD :< :uu :> :f :dd :x :wq :p :::', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':s :y : ::: :dd :q! :fi :UU :i :S :q :: :j :echo := :fd :I :f :x :u :r :uu :w :wq :DD :p :dw :> :A :h :< :!', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :s :y : ::: :dd :q! :fi :UU :i :S :q :: :j :echo := :fd :I :f :x :u :r :uu :w :wq :DD :p :dw :> :A :h :< :!', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['y', 'a', 'n', 'yes', '__nomatch_command', 'abort', 'no']¶
search_index_entry = {'aliases': 'y a n yes __nomatch_command abort no', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' y a n yes __nomatch_command abort no', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['previous', 'end', 'p', 'e', 'quit', 'q', 't', 'n', 'abort', 'top', 'a', 'next']¶aliases = ['a', 'n', 't', 'top', 'e', 'end', 'next', 'abort', 'p', 'previous', 'q', 'quit']¶
search_index_entry = {'aliases': 'previous end p e quit q t n abort top a next', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' previous end p e quit q t n abort top a next', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'a n t top e end next abort p previous q quit', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a n t top e end next abort p previous q quit', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
pk3cVM~AU%iiffusaO-1l^eM|;r4vVnaYhH{n!pAqTZ!NP6VY9kw(`N z<%2iMMg=cx@eC?-7bVQDXGk8pw&N`?_IH=ghE_ycT~BeGT;GO7_;298=9{a4f`51P z<=?;&{SCaTFU6K_7-6_yU_jqPOSvB~4-jn&{Su9;L468X3*rXLx-Z3J`IJlz4G&&K zf)$V|Ai(jlJyo>c<}sm(V!>Yl1}rDjD?VAYib@U`E)>FqqV2%Z`rhFJ&4gx;RTCJ3 z@>@0(?vGuGzX7mocrMX+U~$vJgMXoRKFPyB5g3w>Ef>V`d1G>ie{ZnJL9P{COTaS| za83;WvTQb#p@nM(9fT(`{F!0whEB%p=W`C=PX17KJ?&OsdA|8!#>&@KHz) cvP{t+!XZfuVh*0L=R zIC=ypHk7sA7L)!?1q2ZgdVfDmappz$$%! rAr7g(sB!y%oYmzxn`c4dNina10pJye^F z*lCk1dF4YN=;j_a^4F22g) aNkj?eZ?%xRaOOrh}u_;mD4^aQk&AT>cq~BTz^@v*173NUajXUh_$3# zEv7RdPQ2(IIs6pYo7jlfRDw8rU7Fb_9xB hUTGVUrd`! zgn{874;YO9EPN3#m^67AbF={Mf@D+USKQ1-2~goEYZeQ)P_`cI1yL|e&STQ+mX+|y z$UHRu>%rT%O@D9&!xT}57k@pdeD*LIR0QXLJdnYm+9{xOxYht0o7{M73w7ni&Wyb> zkQXK}`oLM?!dTWT9Q5J9Z~%$$pUR!-wCIG4`=|4A S0F3zam^k3)YS_aqo_znCzBtfsU-jrsInr@5 z)G%%i(0>zcFZ)m*n&K26qPw>l{#*{LrmAgrjz=py!~b~(G$*s#z{xMyYUgsR&odyC zOq9L%WwWhmx3YhF883LSpLj5 RueeT>HhM4#Rf5Y+Eh?0-LDFV5wF zK YO=5uu65(4S*P6~tAeT ZE$cqEZB4im#|3t#^M)YKg?PqHrS!;VDT|2 zM1N;koN^)St`hg&WDs&ZBKpPR*b5ttTU|=x6F;$EcAulE7nIJIZSLb~wnnYrHboYf zxn-x>>c#++84~C+Ko-zAaT-(ATb6d{i BUKmeb;D6JA0|UPvOfv>&3gf=$wY(6ePp@ikW+ako zaT={nZ-Oj(4W`j$Jkfs{X @>4n~p0%! L`oW|c6Da*I{2m` zi)8G1H^cUHj^| 3>rm0goJ-U0NtnDzVlzpG+8DPLMo={h@q>i5=lM zIX6=Yb0YlUO7klN^)i;F5F=POxJc1Wn7Hr&V|lHTAr&3VXk~S6Vt9CXzt^!ePNYt# zIWZyUy `zT-Zd9D%BexK_3y(euA;}Wt_CESZq~)mzCxW|ZxvvNjap~V7iI#ha z5K*>0LtI&KE?PlY4nv7Pr+ fE7gb*9oq$)RoUs0dK-G^SgnvW2B7`UD^^h)jFVx}Sk$gN~Hpo LUc~O|_O`5VvQmu~v)odBM!d9r`|iW*lXo{)>wk~um)BP=TC2p( zqP5CeX=xR-uGdIqM|!fBO+1KxMAYg&PZrJz5cvsB*UMd598Ot|&H;_|S8PeM&H+&X zml~V*5~Lt^3faTSxiYMQWi7$N4AS!*Rca%n*up1YQ<@5e!8c5bErJr`V~D}2NnD6Q z{nWIWT3y+{Lrj?zeSbJf?QboQ!T#E)s|W1lu69ichZ;PTRn2$P@H>85{#*>lOEV(P zPNqOEwk!@A_{xuGCtMD=oovF=PPIAhQ10Luh^p+xXllx^#WgdM$3CDX@75TWCkCQt zv;vv!6A|H7@g3NB6n&o{$vz_yAW@x9seN+dwNl`T!S}N$Xn$wS;Ismx5ErR;cz_QK zG`gDM%&6Eun{uGLwtI@6q^G%DR_y6o+;g3sC)r~2k`{>!%x*en93^C)a8qzdXrBhx z;|rbv*o!aI(Cp=vU}Jr1GoEVmm8uC~>zAJlLs^r)wxJck&lYy(<6z+ipQfIBY}Chl z+7$o9n(6-}4}Wo494ml=Sx|Xmj1Bbp9-RsdlExov*3T8*6<4tnkFIrC(Y_J}j#G>* zT)7jn#7>)fltCo7SeDoq)Cg-2v`@;my1Sztg@Hindck;Hq 0$fA>K9r1X#FVM*o&J0nY9Suj4bMNu`4uHz9J4_mb*y5~M;luGUY zH|+5ecUwt(^@QpHfJDiXXwVeFe@X;ZP%-r@rmzUH_+al>k91^lQl=aC#aciqC+3 z?!fknv43jFCGX3wFAapx9%xev_yxo>dE{;bxfB3KisGl>erDz;U~X+Ukn2fcJjysO zen#Lv4p&RM9jkh4Y@ne0_@GoZ(p+xTpd7Y%J%dFfw+37%Low7)4SZQ`wh|745)ef0 z%i|#H5QRt8WKaU!L*^-(40 {=! zrMD3xx4gP)@Ec$T?Fe3ku=b1}Gc-{rV2Fg_^|gk1CumMg8uxibTHB%*XTL0%8v ErDfCJ7B N$*X0UKXO;@}Q z(51=kwz01xpo|;8=6{p;#$gBzi-h@v@oWA!g>O@K+l6f0bPfL|F|~DIBTJYGP1o>m z3KO`|To@;A3jRow;&eB5ID^D`Rol>{d4HIbgAfVw#s*E%v7-&`%9`;%;Y=f~=|1Qk zIVeb=5rIY&+FL<$HK9q8*j3xu7K5-V1|atsywzYS+&_=|+ji*MW*M_K|6lSdg|$DF zo5h(z8ej3hDSX^tdTe`fkd=F5H}@AiHx-8z@b|ow9IdYf%!HC}&s>#7Uu~&6{(l%u zi#=-svHAyRP+>paEBkIh4hNN6%>Y@QxD5A*#DJMwg{ =O}0R^BxqxBuY&T~&%J7wKr3#|X;~v ~|9=>hI6WMX7Z6UR+8_lhGr0*VbFw z)a6q Bi{c<2;oexVs}H3Y1&uI2al^Vb+?IW{Db#O1XMI< cJGb8Ym1SNvB{i)_#cesK7>z9Z5f9FnW)MCk$+D zgLydh=sslSELJ^Z0C`&S&VK=2%wlv1ds&<{ZD*3DL5vO|2=Y%hB(1|FX}YjFUML4` z=PG`>zIYcP=gZ8*O|C%zQyHS+N%*)Ph`Az%oH;VX~?%zrvY Hn^6;OOsT&xlzUp$w`M~*FL$DH`HD71=24F75 z$J}h_f!US)Q?r3Z*ncqIyZZ8P@?7A7!q95<5c23OAWjhCl0(=h4l5MHwey_9a_{Wc zWt_+SC0EAmMCS-gH#Rr;Ae#xMtI)ETAo&=1VDT%R%>pSfKp_J7nBd1ft6JKT^&n~2 zk8nVoaW9$MFd`g?SU^{Eq7&n})^}Sru&i(;{(2O==1*ngjDH6eHyv1QJEUTXps)Gg zIhL_rg564iG}cFe#o7Xx6I6#(;Oc;Y=a+7vy1L5~Dh!0qcc%Fqy@Ap=5g5WE=6hi@ zhwI1v9{kd?%A~x7B{R5K2FqI4!EY`W0Rh#O4Iz$xy9!fiO`=W~gD9}Lj&yWGE9}i| zc!}rQ^d`)Cg?~*hg!v^i|0vAGcWOAPE=~~eO73t=kg%=T$*cj1+PzVRN+T;ir-> z$2j0vGJm>MnH~n?pcZ9u5u!{~Ew&l{PgV>z^F3P0I`v-0Mr~abm}x@TMY|JY%e+n3 zwKYAk%E(__MP(tV7`*09NfY#Ah%!|*Unhmj3XDxH{eN=B3XqulXnLmBLuDwftIbzj z<_xpN=r3{ewZL;%D0ib`HbFHkVey_GoFo&Q8|s|XwG%iZ1lNe;?`#Dcs#x1leoo;pEsIRqT!{+<9=k}Z zvgs@AE`N=k7a2o}QkexOGWf~+t8-~P1C}c*Sw-^Y|NPUJ1Z-i!swTM{6O8}QKh2?e z?=At62jsVAFyB}sdjIP8f5?cwG*L OWk4Y8lLVPSDxP3ILusPY-?bA89 zID?ko&f^fL&k9p<_ALJuVx-?-?q2V1>H?LSn}1j#h)pwyaAv_OX9Hdta-wxv+~vfo zvVJ>(3sH05_Pl`~sEXXo+;6@%zP7 QmDU1g?IVb&5=S2BX9a(jt&0PZ8HrxDG$%>ah8+v^Hn}azk<|o;@o=C+@cl(p z3V%qx;lzeqrw|8~&phJq^y%uEif2yvclzvhhwFWVD5P*d) 7Gk*1Q{OKlCg7!{g=4k#8}iC>r3Jh~W4D##s3bjtDM}z)-HJR^reL zulq}3ch2qJ$Y9c&uZ>omPtZ(amZiAo{eQBq{)!j6SP&(t@3>YaVvaE>7{ok|0$O_* zBEs$~SgHb(P#tSO)XtL!qM{H4XSfWIpB%^$F|M20Vw@nZ;1MxOwsu;Pt;N8QbN9uy zfh#8QwGz=?Ih4cw>dU_0eZdC#IP6;KOOAa@!{|7JMgUxB0Oc+coBjfWSQy|((SOU} zR%ILpU)HTCkl;zGAmfyJ1i z-om)`i642U zVzQeL@2Z_S2|6Zw`OseN|Cw&+v(aZ-ly4baC&F(gNKlStaNUV8J9S{q2$iN38Wp|1 zc+c!E+>o+Eggc6?q)*|H*0@p0dZ~O9od Ts6vD%8T#9ytHA5i+ zM0>}&!XOtI1VIFk7T317E3tR&78~|hsQAnE4 ;+1|x|k()#--GYfKc_0z 0lXNfeHG(*|i>`K9bQgz?v9BAFpAx0rWUE?1o!2eV1_M1Z*4#A+;((vuY`qG2B z@3*O#7*t_iT%ArZ{fiQ(fRn|DY6YGNc3*AoWm}NIL||WRSeB^dlz&Z>0|1BxKo|h* z0u=zCJrw7XB2^J&@;@!t1LgrSh_0omTxPc% ~60= ;{SbcIshf}W zO`LqQ{x@Q<<^nq97yc01LXOVSLOt?H1p6}?$nb{H5(T31xhn)GzE=`PV~GqKhmUEW z&FTKidf=+*G4UQ@db)+i3k&P7_x}@stQN?`ZH0k`jU<8gDSv}{DjWZe>*2xhh8v-3 zB3W??2Ggn1;y)#Xk-K2OIu6jn1u4fZemK0p{R8g=7V_?lk{gQ)aw38m{cpk%6fWd+dcv#Ff7E?1!5Q`h0c8 z!;2b5*~{&4EPsTJ806<}@Q3?yD5?Qnl=PVj5P<*!sRqIk)^pUb3Xx#cn=d08q`k_e zYlY~~rka0C53HhreiY4(zGZr9{0I`7IVqFSGBvYZkg%>cwCQO8b3ly0CYQ8&$NvTy zT9~rwhurkTFA2;(2>T#O&)US}p w-)=20+FGKuV_tut0wSFj+{68I+*UjNQ_q ztm@nd>!V|({q+ tt@ E(w|wb+#KkF4i1Up4j$%kiQ=~+U(H9f7N!dQEsso2}LB-MAwz1x>Qt2 z8v8sQJ+gUIoi|}|Yf$Cz&f>@BEmv*GTdf!Jx0kPNwiTZZ&ml9d*2a$jjqCj2AOjk# z`Cl)toFspO(WlI}p{Ac;Jd4|^IVYH<3BM;X43JdI8Jw2c+Wh5XVzKYajA)7QXZXhl z%Gc}336_4*SEVr^+x7Z$daJ=N5Ip)F?O3Zd^X $vx_*NfHqC2J6Mc=aVhoNl zD7JDWAz6@XNUqq&MVJ5_13y`pS9w?tg;d`O=^s2`}vY$gw zsm_0o_| wTk z Zw+`r-95FbTuRt1#0lgSc zLwi^mgVJ25V8#hK0*^5wyq`eEB*6UmUDfr&!eSO?-qD`ty$=>#j9g|}KHdt;uWR~k zX{n>Ya8Or(3HU2N(OlzXk51dIzQBJi{J~l-X)Oh{g@>#;h~EFhfmAa=-}1K)=8~kV zn4vAch^dbk<#1EC?bk1hr2!(kIOl+*gq zO- BYDJ74_6I1rkJ5esVYgb49gD$_%_-D#X!C)zTNk zVTb|qfdjAAofI`VPGBBvut (FOYQ7}SwX7AaC>+3(10^uEgD#NK5dgmj zOD4ffvcR2);LZR{3C4fP+<~}kN^n9yJbfvA2P;MtO8}zm RG=?&iM64A6r|FA zM)H`nopLD> 1ZK|wNQV}NAd=sWf-PhLJ_7TpWmRC`D5l+4wX{H{8SW-(zizA`> zlK5F~#3IRgAzg_s{NxT3n2_)2raHu%?!waAWdd{Z()?tG7@&Wb7ip{RY;I{QSKh5{ ztN`nlQkWaIr}x{tMJd3sh=m2)?j+V}m@A+X))N=#k1l8Vf~^iP2s)#)G0xoBAvI}h z+$QwW=*+u%O%YhR7ix&4lER|17Rf_(#39b7$i9+9O6k8=bxpSg-bg6zEfK<)DC4UM znuC}-SqGQKFo%CGCNm27UB!oZxba(IY))YiiLkZ+;{tNZAQyd3Ni?CxSGHP0YSa>r z@uY3Fp)2^OIH1c<$OqhQ;6vF}Wy+BKDYKRiGB>P|12~w?xMM;C=QPX{QrES0e8PO9 zMA)2adk+Jw+<}%d1WH^(uBo7*$BdCpEg*mEK=hECnPPvH%<9cbzIO~taNi!J1~xZw zJ~Wk2m?IW%*P{7HC#pw6QXbZn;fzc7EKRvbrWL;ie*jzQp)94|JVP_|<0Q&ujU#=a zahx*`L0DEsaWRvUQB;_exR!X8OJ=M vUd_0Y4P746z~&l+2OwQGvQeO0%8d$@m!@+w=|!U6zd z0Gx8jOLZr#z_`xkHciFDkL)_kmzBs9!i9-kv0LqS+$^IsY|o7!Vak2^)!LzaL@IMA zy$#xgy71G4_3=t~?CITD7hX5A5oNq)=O9FZd~kn3ht)_Iet0xpeBN#*MA+lXIJCc< z0EX%H=9^4jZK(F$IGAv#fr2+_#-%*+9m JANrNx?d1s5YvtpMk=DOI3Fl~X>?>2gYFi?(CQ04E4;?%O5N A~j%$UE4 z+%7y=A3 |KX)3ZJvnSFX z&&?^$W{@EPcvY~LFDrOiK>|yWR(TQ-fk=M@zPjnn`PsYE;`;33^4-bxS@FNm{&KYn zso)dhWt~Ya&BXLMvk#GU^p~;f=r)r?niU_VeTXDwFlRy#9QEBnuIl>ncBQT&=x=2> zwb)LWsRtpJj51?Flu=%2x|HOa@Pw1A8t`zXop211;dS6GGdF;_%ts0jjG)fk5O8|lZ^5_FNEo>WSPs(pD z)^M(Cx9tE2leL?#6waDuKZ_p|=a=7F#`5G@c8~n1rkURgMDMhUQ^D_!R`9!tg5PB- zP`?)|&FlsGAKI~ap` z`<|Bda1Y)FR{RotEksCu;x@0#PHtJ07zKX>-XnrkDN&iS1f#*q2q;1K<$-Lg9(tLp zvfory!R{2_!Qi!Wi^Dx3vI1(jBmYvUC1-qy8z-yizWurCWBVG 3?D<|I79fdN z_HtGWd1t+(RT6E^puLYeX9(XR0cMiZ7OndP!1T04c(2it*k!f4H1e~ VF*Ct^y}L?4Ncw(p4$;B*=eC=dof%g}kYkrzZ)# He zZDN%Ou#=>RePpbk$U3KwZMS`vD4;uJ2qu|uKZ{@@is?E@(1M7HJH>z9i}J-UFP =>x9KE{g}T*%uryu*SN4Qt*w_$7H870VT8kgV<@z znUn^?_gM?3lO#b4A}YPj9!l0Jf$R&T_{V+QlL$&Lx5xk=4a_0v4?QR#KSF9~n|`Z? zLY;8=3=vVo+JH +4ej0uX?4@2!)Z=`4_-9Ae+q?Z;b1(1g~(}0Kd zSqSp16U5|45#B7zrd4MYDeQ&g4h)%{pCN{jzc`I9;J`&LY}Al6AL3G$#ZOeQzjE|M zZ6AtVSje)-^~1P@6}eGYk;xH3M1qJPEP{N2&r+?}3XiH*SS5e*Sa#^zu%o-O<4c9< zW<+0D8R}$3A<&3IBMR-L_ gsI$>ErqJU!pSgYEZ02+~>K( z_33q{2F!^IJXg^(sF^ECRe?uPz-RO&uZ!bQgPR6meU|dyp()^gwAUk)@eXc3bmIn> zumIFUyD4wS8jgR+&X&hJyb2HN0|W1MkS-<`B6fo*o-Yg&i`#0L6hbKSdfw*&HwAl| zutwCwk5IgqWk9WcBq{2|!5Tbbc$ndqE)yrt@jxVkhbA(lwTB`q?H*S2Zx?@a!d`xG zYYQ%cT&)AZ_bnVxw0FS+a#BR8#R!l{(g}NeXC0NZPNIL0M#4T~X-PBMd6JU?TDu97 zb%|GV{D&d+alrZK5hjf3-O^@3F@{#~PZYlD%Uk}5z+O5ou^fuF*(~@D6&g{cRS&zY z5bZQT6_Y7_I`I>E_ANh<=ZIV--AD0rfH)u=HZB3r!i1@MSr>I*;R&eya*Za)*&H~k zMGP&=sZ4) baAn;U`RHL7pa2 -R80~1Z-H az z>pz QmZjsKrq4)W z{V9FK(xzS9R5s~VGx?JPI!(@VbP2T=O{+(!U1{cY2yx#M9!v@GQ002ID20QGq;UT1 zgr9$ls_Xsg%b{!c2i!S+SAB~)ih5V?)z*DxMYvUAVYqo@1 {z=U;@~;&)SH6=2Nt#)IKUv!KD~4jL45TQsB?K8 z?GG)SvZEHdChC!fYJF?*aSG*Tgu;jYg;P(k+nY)VWf`~QoouY^SoGkK6TIQ0tD1iV zAI%1h2!AauJh1JyO@@T9*B?$lxS>*3^eC+0QXY;b#%9WjB}+SQ@mq l$6KkoLk(+`lJm&l}wDTU=;7FLU~u6_Yc4mCC+6 zpeIQ7Ny^@Z_V }d2PfD3;OB**_J?tk&Paaa?DXs?|lX#%xh-NmX*2<@9U zm0u4pfpYFvZLtzPh6Sl3z>E ?r^ zNq N~me6C)g zMSik!B3YpEpBYpWLs_cvAP#>zaJUNF sa(v4X0%8tKt41BZ|N?G W&45t+T@0_!CpzjrF2;BYZsxM9znZgd++!Rc{32 z`w3%IF|ErEKF;lLp1Oakq2)ibh9VTe?QI3IUZ7YYk}U@$h({#endJNX-~RhAg7F#| zKkyJy#m32QW;!oPT;qT@Gl6^afHyN``y6qsk5WH}GQgS3`UvQ0nlj38mz0b$d_r9F z<0kVdg(3eFrNIgjrrNegX9x{7$q-nHlFz`Amm!1)11t&D-35QjgewCZUAi>DuU;8M zHSt5?aFRJXQ{vKs_IwT-?G3az_ml7@uz*&Xii;>2?%?1@UzLYL*Or?lxe<3~@MEVf^b~S#^@=(dCkdPW0s>u`|jkiy)(b zl2qbvT8Gaf6PACnlP8`PSDwC|Busht7Ekb{i^8BE;Fxl=q~F7~&G^_oFE+>(x1W~x z3glc~r7Jk}blkS$u~Fdh6->K|89W^$&cfHcVg;4Jzf2I39wq)J(zd?`wIh()1&^=R zzX!gfTXH)NL))ytVF JI#4$|(Ro zUh*$a9}*h=@SPm1Jd%vb4n?QtkRk6q-d8<1Hg0e4#(pEBnNkATLe%^*WO{)~3`|)z zy-VW`sPEdEN-u1;xXFYg!?r`US3E ojHdYo3iFRM z!~lKL0I7dX86F E!?IUiZ z%S$@2I%8G~Qce*jxmuktg&nPGY`Efk8?)dQKmiX5cra&Su|v0#&0&*M8ea>u_lHe( zlgy-qYknX%EOtn%>}K2w1Rzy~cdejd`GdF48@hk88v4}>7%z<#9oHCEIb3DoxtSl8 z6~G(X4Bvg9fh=qaZS2SI;>%G?Xbg@ {R(oh9y3`RKLTF*+hLTql!?Nxy^4rn}~lt7R0rIZI%~aF=D}RZcN4MU~cxw zz;F>!n763uX5c =1HKP<9%W__S7?7>_~yiUVugb|+(V~>z#(hwn%i<1YVh~b zNl(7~j%s7Wez1g157!DyPTqFXk1)Tj8ukkCI?CyiEOvXd$MqHti`yrxc2`@+KZBJz zE^aRmi`%=GxlhPscSLPs$J-02< ZNIi6`lg9-8Cpqg)znU|d^ 7Yski?`X=UzbJF9JHp@;7 zlM=2;U45m-9*3uB^LWOtVC1|vpH3`3DfqPsKiBk#YkL~n_hP!U>Qj>8vobR$Hl^*_ z{1xO(>lIAdqKAnY4A{wpQi4lM8}fgi651f@?3Z&Vc34h&R-1`P&uIo>%2@T3DL7nh zVC&1Yk*_I_wwI$^pQng({%=oz-F4M=#Y*#Tq{WZhgc9UG{_>x1nT>Sy0fywqEfyFj z0_N0ROenV7b{ufo<)Iwz@2V!gM$aY%dtAq9*q X&>0LS2Ls8RRd|uI_6P83+o(iCM_%lezcg~hg@$D(|ol0X^S dK z%SGtjrj-d3zQ{C~#Fj->%4cXX$W^hUIkUiFqHO&FqR^UH4KL5ugglGmxvXO{v?-mZ z38w(UF9HXT4WP3SjbEMZkuiTe!EL{f-2BZP($CMQ+RA1qns!TnfbXkF?(tbt6cPa> z{BDVXbRHxM2u!bgY&qLkk@`k647BUU!$7hNsj2C?{X2ydQez<}H$At1`#GV2$uAgT zk+!h9Pyk_)>?i>THv)?H@o4ZF(p(B*1sr^OG)Mwn?WV_(z-2Mg_BwxZ(4&{2k$AQZ zC6DD(e$6QiMV9 $@R}sQ~fGubAF$-MUd=M9Y_+_QJVRe~MPIs)) zL%aME!m|5l{P0r^w5Cv2vbI(>owgN}*Bb0ygqBrXf8DgOzAT53RfWO|79{;AUiwMK z1HrjqIR7|5F-PuX+%SLsB=AnvEk8Gm@TehfJb;Vc&7l_nVhj+D^a6m-E?B<`@i(t3 zds&DZL0lY}fYe~u3A1w+hcL(VmF6tKM+wQUo%3})*^SkfvZSZ|N?%&@^D<~yPfy+| zb1_|@ew)+tM8Una>CPr}VXbxf1pS!yu22@a`Zxr*4O60ucXNN(u#SGb-B*Ly{7t3e*Oq;3C{s|w&q#d^sC4qu|y_c_ewkSgnh)t7SQ?w`KI zG|AdS^k+xu%}QK^Ngn%tXgk(?&ZSX?g}w|@-Ih>7XVP$^g8zxY51V^d;caN&xA`=t zabf=q)3)0uaB6>p&4XN4)3&gFg*nH&yKFA7De&J2Hs8j51G6339AalU&Xib4K~CkC z{|2`tXTLpVPlSCjLk#oREqGVR{nDgaAuqxtZQXV^`?C8w9&%qE+7e+~SV$30)*)?R zA|{(q8W#F8Le&i5_p-~Ul7@x8j8L^TG>`I`gk7Po!aRRndAFbdmS%;#2$SH5{Ea+h zK9|crqQ01*1)1SI@Ju>9VtngztYHG 4>|I7YiLP{M5bFz8%1<1}pJI>M$- zq0MH~CkKa43bxq9>6SN3_^i`bEuD{e_Jc zq=j8=H);z`ChcU8q>UA%6}z=E`Q&CY@i)l8HyPdV!SKZ~^lVisJm_IXtnTHzd~!vo z?Lmdc2vdn|61haetdJK$61}G&lg8Zapf1Byb^CY&gLSz~YAL=#2=a&}@;A+4lgVT( zt}lNKlrS5vYs@9$D Y-*)qE}1ec^ksyKuOqv`^<~*~ z*6KhTD@bcB5zFK>EDPg0$fnodWRe*RfAnRLN{p>%^2iZ>@i)W(%LHzCiPGne%Bj6; zePP0c=u!vb=c5p4we}CJD~h|Zu9w9KELDGuOqdWIHcJ=LVe?j6nlM4S=*-QG1}tLP z0M<}_%Wa>7$vONRMowKlF(*h}xM$FHhh1*Px?^=}a2P1@WC34s)(1`!Fj&T+%4Ogt z_^(7BaSmqNZu(VO?AwkOcQvb9VRi%ki{qj;CkwYcWtMWiAD9zq&i&PM^Aj(!OU8ep z3d|zUSPzw$SUtHsx0ehUn8@|Z=-t{nMK!~}*4Hj%=_nOD2jGYbm#DUzL?SiFZkQvo zcELJB4#{Yn`bqf1tT6Pb7tUr00wCcKvqD7%(CY-YkVvq=II^T=AL&z`G7tsUL|VW0 z;l?yL(g^Bx$btE9(4AH|Jq?-Eey4u{cF4!Ex6IE$ZdwM@VO6lLx;(Y~z-5j=B*Nag7YR@`D_bYBzEcdXnwU?1Ef(a^s;PJcSWnR9Jp8FU+2xTy{S$jn-;(I% z0YJj!%tCNcJg{agEP`YS4Lgz^Xc~<$Bid|^ B4NX(?Ob;>nB6$P_br6wfW(;^=yQi;bVA$;m^74 z>sEJX4CHjpJmfo%!n*2*R2&HT4*qrE?4QhBmxc&7#IU(|y1F(n94xR8D+w9{!cHv* zNMCI!jEtw?$go%ZuM3SIf^dIV;SL*lz+@6OKVJbX^~sgRl?%_oJMiO7Qiw#*Yy9JY z8oRpxp`&-Sqs@jNkpf<+4|TaoiwOV_4S*+PH jqVV`+B&zaKHL`rD|C|B zr3FEYKb!V$d~8eMsfv`J9JZwgmg!3Wl2QjHw$%g(U*>0m{5itn5GH?5+D+k?VL$V~ zF0_tUI#^4?9US50E6>Uij*CdFO9c>b(Q6>SI!Xe47HsPPn 8C7N^D8X>a0HS7M5-HlY%?-HkFZ6wZXh6MNQaL zlMW4jnnDB^wrvy3^$vd;ZDnzt%G(pd_7R#{>K^y51Si_1yeVc4EjVqB-x{;#FYhM? ze%)$2TAVO&mPh#ebh=z(4e}pki;!J&p8r{pe=u%hN3 $DWk_hg zU-4@T&FzkP2Bm_nrGsS~L?+Jcg*lMSuxs;|jR|Y2SZ$-0u0?-fF*wn|*AsgSd|R@b z2X+>1U;sdzA@m)T2{ r(1S!H0 h>0Vx3PR!Q<$)E`)`?P lVDSK+H{?=;6~%!zI8m2QXtgPw4yoX313Dd4Ap!2ag9Mr2j?%{lWo1dr zkLQMgjB+!t6ay5>7>7)R@!E;$q}Qk77V=&qw*$>M_EvwPIa%?%995jL+DsnCo5YOA z@u<>^)n>x_%@ma%Wav~-H7t*^4&h&A8sUjKckTQf6R!*tg6{``IRyc69>8}B+S6{w z8<^R-SeOzkH(v<6Xs&KpmA`Ab`{Zwjnw91MBaxR`l3mN)Fmp@RMVx^-NpWydzNs`e z9I2Eh*M@(+mjDju!3scT@ 08{Cfg>8)5_my%o7 zPwW5Wqt~I;`hH 6`Z>i1S7G3(sj~!cZVg~G#+CQ$7=tN z%$V$-)LHR>jK$|PHVm14h%!1%%jHzdxm$}nPMk0K(-0BooSu(@pUs*KDUNdG$GCbR zasS!2Wy#!7){kJ3!q~IF_?cp#SQsYr;wFDI_O(<5Fd=F29k9QE$-CdO*!nE^&jb8| zDHMaMU#7C^Z6#G7WrHG`$-~xER(X%6kP6t8LY&WYG)eoS+@QzG-rMh2A?(6j*^wDk z4rUlU$a32zF+ea6IwClbS);1lP1}l2a1qjjFL7KHj?;$S3>eTyz)>{5yBlKy%MgFl z6S9Tf9O}hpzjgXlbfW6OZUSPUxw#Hy*QZkPuzn_i #u%iQ}h`pFjqcun1GiuO~>o-B(QxF@%rNB4&Wp z+^z&_ FxV85BL>391R!RBl<$tHGiZfH zgjnJRsOK|9;o_MEkB}l_fN?*5ORst6MiF)cJ)og~>NDCt4y%X?6F)3t=5~KFra&Fm z5h4fF051&Ve zf4tdjo8{6pMwUvrB>j&BxYK_HM@y0f^E{dJa>hYnxmC%OXW1rbvmLtR2zy4EM~OZr z3QID810h>-QZ}%hz+{TFY!l?!?q_m@J)_K{L?07{CE37%kS#ee8z@ITxeBFWk}$=R ztVdriSEeqrH0sL?wcA^CTe4iM0LW7+S<`jiJ0|b5UN+k2sT7>)BKv=8*Oc`USyBMx z$&{?=I+uOgwt1e$w2#{M;*=}UwocJE@gkKc@0sNuE&tf)EXouvj0Mt@vWMXrD^sRn znIO*e#+5D!0yO-Hq?>-zQQGuJsGNi42`3tWNHrO8d7h+Roa{?q!ICUIv(J>8lyxUw zt@0Gw#tHH!Y+2ec4Q_v6JIJfs+xeRMT(MKMZ1sHIlBp**I?oo9qav|XKfBu0Reo#I z2a~T|D~Kq!9EoMhwQLhK+Ahp;guQ_M&bQ^}Yr@oQE>^B^GS!k7k%ZyyWRQI6uEFpq z9RwX BU`iN&Jw(&GISthi%oy35GO>wT@AT{HBP>4 zLqnE$hj)=o*@%!WnDa)YYNvvk3bkQ^FvE*svYzAH%R#Ix)eBn72KjTO@xtU@mhwwV zhN*d;%%n2GcHo$+&oWL?XM2y#()O%Uk5qnKL>6TQ2SmQ?q%2|jkjoP}P7fvxYBPD# zB`r$5nSGwT>~w#7rZilfo{_Zm`;>FZGef&&Sf1v>bT3TT ABS(@W9b{> 8B&kTlKJ_P VWx z ~m!zXNJhcsw8ZmDbiP!cu5kwI$`@vk-mR!j^8_|OOhGdEx_^_8m4<8 zPG`zv @FQJ%2G4DB^dm*vaG7PLCFC{K|zOHiX25|tb+X@RzUkxO2q zZJZ-7?N#cNlQMNF!xT-LC0Wn2NL#3KnczjQcVeC=Gw~J6Bdc JcF!70+&c#@=_<(SrU_8E1n6JrwL3FgdlPP z`(g XxU~+OL~3A(L{Nwv|)lIgC$wdi{bW$d;eK1Od@0{B*QIt zQIsc@{xVjFqog82wp7lWCAC^GisnGbmRhBZw%J7ca(83~K!j|moHt8q2kxwol8Ok~ zQaOKbhSUW`(9}Frq^}^Fox$W3!a{lYz}^k}!a52#k;Jm`Qxf~o;S>SSAZL-dB~nxK zhsQEmS}0e%n4gcEsAz5&5ac+RH(AfKN<32aaS_RR;Xd;`xxrU&oX4A{NgD)I7^qR+ zqaNwgEk1T8>oL#-lHUBs>u_U^J=DMX>!7^Mjrl}DnW)1 zajT xXl=VVvt0XDG*I}Gcnx;S-1jr54C~sE$r)EhSQd8il#K=sSgd~!O zx~54Hp#$U+FHD!QzRPJA7Z6& ){2 z5pYven3-6jLzt$@A%ZEYYDwvpT#BWZX6$c9Pj+IJCd1QXogGZ 5iSa%vFJ&J!nOG=ii zjJGhgO41T~BXzw`V`c&UWPswuhyQO<{Uyw8f~@$z*As#X)*Lo@?93oe4XA$Jj2Ekd zhdD#9vOC26+|EP$`4nE5j$PDcvm2BAe0mJyB8b5f)w3ua(i0>(WisBsZIhrOloN)o ztWt@2SU;h_3K8YR)3k_@Cd7YnNmSEf?2q^`vIawy v=A9%e5|6o>(XZ z&GVG{iVICaAIdGbnwcGNA690V#T1zgiAr9S)lxBKm7#|)o>WQr?IeG1Cyis|$h5eZ z2o~#Ldb$Od2<*wtmhRhUiG~w-Y2=7PBOHyO&g3Y=T=306H}^+H&qB$H3Rn`wpC|jV z?NS`vMj`SAbLLdFYNTNCXP^;sv>LoQQg^gDMkh1R6$y;V3i&rPKY}(xrH05-%D*pU z&Qz;D(jz4+oCUhIhFpK~j} soI8PzLFvLBgyI-3;2EYt!j>x$T6~&62YA(82wrw z-(Yuw X{(qL7Lo}3G#SS$S|To0=TLvvU*QnQqy;cevzR6k)Uz1I z4fzbJmML7OHn-xN8D}YsR&eqve;UQMjH(h>36mxh;EFwO6BnB%faD1!Xy{vR>ZRMa zw?~L&)|o1SFGJpfp+7f5rp%N9zzI=yOUq@SDKp-(nvmpw)DHVhk-kqmvAGdwSooR{ z+@u`0RhoZCJv)4Wizv((>5Fz84&%^glMA~P5kzuC#q_j$NZB#&G)s~q7@|rNGoZ^V zNk=fVy}-j>@2a{^RiF$) H4uN2X#6x8_%msMH)NeIi%7mid08*e zWt$-_{QAU%ThDH>R(1A!^q7a_iJ3ZXlJI7I6u*-4=Zn#^#WX9o1VNU>BAkDQj?$Z+ z)~q3$s?abA>49KGASbZrrP9nWQAv7g9Gf!vspLtqds+wfk;79PAH&<`tW{9c1RNP` z4oH6#!UTC=HsvnVYBWPRaHahew%yWDyWa@p0_D~d%t%*4hjAcII}vre`5M5&$2JVN zm>}T4kpo620UfABqqy*+N5{^B`Z(qXzec;>&YtzW<1B+kv(qG?6W5WclvyNS+2K6s z)7&MEk`p78D2~KQaqi*s OfO^%Nd*v(_2Ik>9LSDOCDtl)nh zJ`2%cj0|A8Myh5*QX){fKSZ}?&w{$3341)>h%HQwlYk$qzn0xLN;b1_avCQD3)~s? zmL58~DI?qG9D$vL7TSzU{Ji1rtP)<))WFH9+9wiq#*4l_t7c2TrM}CVg_9W_f?_D| zo1FtKR*)kkLk~O%`qhY8CMuFVGf96HD|TVhpr^xlh{~`+JE=to!toq*hcVU;nFaL_ zDWn-oymqz1Iq@BJt1yaHt!6Mc^sHj#CWp2g$~ub7gE^4}f(IE2$y9U}G{6AmX^7<} zu@;zFL^!=Qg#g-C{iaPQ!0q56Qi 16FI8J4 zP={V|WH8?mI80~{+E2`3 vdPgZNdZCp zxs0y8tLor7nQ2Hjox<@`yx5NW{ZltKO-c#xvI `#x0M8G&qI)7pvoq8wn6!Z@VD z>+oJCVqm&S#lTl0r3~#SRCpe`$Z*;`Y=CMyux1($ +EnYe1$OwziYdF92!Eofzf^r8{Q>jhH}GB z_PHp7wxbEKZAX7Sux;l`Vf0-R$Hic7V2&_FhM9$=WW_x2Hq8@C}?P1 ?nn24EzL~0Oc@G#}H9+^NydKa$HLB46v zf& C>Ol2pTf2Wm>`ZeTO5I1BsQ9xE86CE1onS(&D-1D{7`Ma))e dkHyaKa0lL+W0ktkFA zq(+giY2;}jseVLc`q&lP#WKO0(b4YqhP6a~9(R$QE$;A6N*0Egm@(29@|tGTE6Wri zMDs)?u?Bx&(~eD_tw v@^t56aX2K13|6c_#-%VonMcs7J1 zu#ZQhxwyhh|Lt%-hRNc8Z4_PgJPYchn6G@+rqO>Dk+Yyamiekk!!$A?G!5zHn2rc( z!|+&u9nJ?o83)itV^=4ELpUEeVmQIWHR~jx7k*O1qS>K};2tUm-l3Y~z#f*ckGn}g zCoYjFb9~ll-d8yKn!sTMcJr8MbFQupP41YX+~{aOhgHJ_Dam96c9WQBbFN4gX$5oR zJ1T!cG)c(oB9t4~mCu>MLq#7Ga50!0m?PN81I(zgHctHOH$%?xEgU}u`w+L-G0NbQ zCSg*dkZtz(+i<@L$6H7!XFMg0t85X&mr(Zf)j(5lRbUST(P%EN+j8@j20bIr!}^#M zmWzn*@vNb73H_lIzKMyCRs apAxfM@#pW~o ze4dEtlCLRv+w<3oj4t-%M3Pb7HN^+K^*oW LHImTsM{7x# 2>^A!FNIMem;_(fmi6Pt#-&ME=63q)(Iy&-M$vbGDj$zu*QI%9dZ zRyd4l3%cOZ44x)Cr4>vuFH=spLBHFvdq%|%WlX1h#EE}?DXgPY*u<1n uB7ocum2-V?o!!ut;fU !FfgL^lV9zv}g+B=f`RXeP%yTR&8JZr%>&p+up@=)f?sK z71pHLV!wZuPm}fD>0#-fCO~up5fz6l!S`^oeF|1l20I;teU|R^$J0DCB7m9;5uiYT zVgbq#@Me_W$=S1wif{4&W^;=Bum~QbEP71!Q1|=qzdu1 ML?)KX#NH_Z9ew$`8oadV-T6@9N z@0hx>o|-7;SLsF>ew<_w{#n09k2&J+jnQqnw|7UYCGr7s4f2X_e3o(*ZYWhK%ZkY0 zLq&hvMOmB2TzI_K?OYJ+{$cU*q$VSgigib|2tGNa<81+djdh&4b&}>^UQ9IL4Fgwe zBG2v^8V{1)%7?SBiT(_C1>lHs3Nzd)hjXx+(Yn5TXwm~f!Fil{u$Ok?oTh+ew-8bI z6RVq`%_$XwTlXe#$^2>Grg!;CwF5!ml6im7?!;I*jdnNQj!Wi2`(t!_8qKhM6u^CG zgawEbsl*izA{ei9s|V;fB5?`@{OF?MK3(f^M?kAz50eK+?}TVs4apQLV$*{nW!Yv; z8hqK;vXR!OQI=w6K6;YxuOry5-&-fJ*#emj q&<@RP% zk%dqX*6~U0(JV?>E|7Ch-#ppDP9!0Ar@6A
(XHP$P4_3WOPG~rb{z;H3XVeNkFI~Vd4sm` zd0^fEd0b#%Lw;DyHV;4hJE##=Gqn&J^7trk^r-IeIC^VGt5wGRDul9)Gu(Z%3X?$J z7) bBB2hlL8cagUDX29f%S4PJF?^Oy@VoOlTJeYy?&)0r)2Ed<}@sNj^@A$tQ^ zg!+?prGuba(DgtK^Sao1lh}U~=Fbl%e}K_En$Ma&KbXyw5RJ`9nAfGwtyI%Sc+DJN zBm2G#@HDz_wZ!KzqT80Hp~ULgp+u`a`iDr5k#X%9W7HODuuC7J;PF0&n71)?0ZwTs zNYG<=SXEZ|W05M5piqJm30H%Z`pp_MPQg}1=REk!pExhfAPU=i=DdHhTIP-xkJd^y z!?dJ^PhOtXPG-ZYQ8;!nSXAkcFfGj@Z0IVxPVJ6$U1NOhR=Q%c#@(lO6T7a;cGr^G zhBa@{ %@$4GPh3-L!X?1Q@pQY! z1}J|_v-Lln!~zMVfE(B~AGV9ghcOjeq>MKduiM4gEgYdSxrdF{D{HZTg8YvDPF4zE zVNmu+Zjr%#_z;~yHqhuX;v>0bDrC84>Q6xZDGJ`|i$~b=RNU)gzYX(v1wm@EbbY{6 z+0QV1Sy+7g-Bf$p7}%*8Spvi6(}Y#J)zx|()I$&Ywt|^3#EWi%Ev;X3d<{N(t?@Ma zY_~-`3h$%sHubUtwZ|rZ@$y4L-i0czgKw<}pEhn(USuBj@AN%EhQ@sIYDJu2UpLha ze3nCVpGVZ)J*`zltB4j}KtQYi2Cv%$`LsIT!Lg&%ky}T!jTi~_P&aMkg*)LysGm zXiqWHE1|#a6X-QJ;0xq5IU&%E m49@@+Lh)=J7K+>- z>e8;QG_RRpmbfv0^1~rn74fN`QM=@hu^)u xZ=7jsj{Ro}MCObUx)N|{Ny zc7^!0G|wr5&D~)aK`aAZk0eV^ZZdK!!wps3a$k2!^O*_I#laazXc;vLcYaQ4JabYz zt?g#cMWd9XjWtKF!s;IR8J*#R{+B?H3$gu#{abOOS>ghJ<{|x9-M}mE&Oom8P+Q2A zOFrw=<~19{(Ss%^b0o-5Y`yz~<(xMuIf<>X=8y9mtNVDn&Z6X*>;+#0;8liq-loW_ z-FBeiCDucqxprW|be9!=zs5Oj3N#hcCvj?%AIIEYvmGJOl(lQ7frO*^x>d8+tor|w zEiGB_;q>Nz`k8m{vv2YYe1`=v8T*YcpftFHNMGSC1a;*fU!K@5;Li0RN&&S(YEyVH zAB@}eo0W~v0~<|*BfFRxA!f{?ZCJ#*fsDe{Jx@YRvwvYI-S94EN{IcGg;xPD^-k>M zP`fq{Ik1B;4}4guubybL&A`O`PQUZ2iQj`=40-#16olJ2obJckY!jPv`=o?rQRVe( zi|p?@wKayv+GF;Xd9`SLn?;)wTSFX+GN)H7zC=$awgDIxE}vKZ+jJFrm|^HM!q6;g z%wEl@AN=Os6r`|bEW zQ}pzIif%kJ+`DzOZor$om~m0j^TE~Q!(K04+!o8Gc5G{E(Sreoy0;PcETT1*|0(37 zBLj@MZzCmSPy@-Cp+UuX1I-6q);)s_|NCt?wKU8J3|Pz^cfAA+(XW8U2V3%Y? z1aC@wljWx{O$M$?a8TkpO`_miU9|V%I*5{g^l*3o-3crLPTW(XITdh%JFccwM5%|g zJ(?z44gOE&kQ^Tl4NYc(|5cecSZZFm_1HMt6;log&hc%x!Lt};=v0GwA3L;k8~Q^_ z+z+LzdIG!9&hU`bI4`oX-MAlGf`6!Mh8Aby68^08b+Y*F{yv29Z4{0Qy+2etz$<}& zpCQ=|eVeNMHY$wp7yBsNN5w%GDPHz&2cU`>%8)4}dj z*$7PBe#xr=?SE#YY7VqEDBlXmU=1F)6Gflbdzv^ z^Q+C78vk?(gDj6ZOauJ;8rY}WB-3wyFM_y;b| 9GY+lQGpmihl0h7J|h% z=2I2sPx)ycRsmkn->Eurr$G_zPoNa{Hz4# sV%T|m}VPAlpMth`HDvg4m zGM)XL-=_!KW21+!w^5MnS9x$3 c^v8EBQ%BoeFh-!sHI rbMaACt z*Yldamo4`G J Lsb6xS@V$eL5w9Z1q5Jz%6Xpfd*uFF&DbXU=AHKW&uut( zW1s0a!#28$xSs{n4HPJU(}euW0)B;N(VZUaW-!2e!o#Pwc}nhm+jyr(j|`zRVjted zaDM5t6bc+SV$D!uh6DqZ&}Nz9H!Pc>*bD_`kpCi^p{iz3;Z?Hh)d{l8dl?Hi(qce_ z;vQ{@oNz??e{k~&;qcia)+0G>Lx{IV;8n6sA8D^LZO8z~=O|ZyDIP2t+|CWs6|7Gf z>58O-!*QrUIuvt=w?^P1gVHgUjFFCI*^w>tDcRz^{Ge;LiSO*tuQFhQbMcK5`Oahld;V6;~pFuX> zs%1ko8j`I@wF1$9bdUwcW|*28zy11O1pM2t|EOe$-%|56CET0Oe&&a}OgU=P^ij4P zvuk>!HS5&wI>>bc3{A7VkYNWs414qt2s*ydU#BNM#q}Y59omXyy^YrNPR6D7JUaEW zv`+0t3f62oA)r~IHtgg>XP#O uJ*lcm}{Jo!j^ecKZ)>Kp<~r*=!GyzTufNnl_lQ zA_a<+Rm59=Zdj3I>lh 6L72;k^KEy&rT28uqf^z&1cu$4!1j2)Ot69MJ8;kiR zo#cj3qkeTsBIt>1x6hQ{ARdF5Y4NHg9%?d(#{hD8h!}}?DteMC(r(f~4{f`Zl9`Y* zA3Ad8WQ7O^DC?wme+cfj=`HwB=q~>~^*6Y;FIP~1Ji1^N`cX{|TGtaam07xto}=sR z7N5vgq*}2?XDlRFusqSDtWcsF-WsC1RB%3X!*h}0wi}7=htL0Gggr(r?IGPBbnE(U zo=SvV2qU=)v+M~H>9!zF^sp=lcW}rzpOLov?(_wQ+f>BE65BZv4dq0lVcM6Y{z8OI z)C_5VM6)8zeD2#$m)0pV!hc!8 !5!3 z;F1Mx)5)U{Rzsepyucn1jyVqFP7)4}jO`5IohTdMPg*uTkr6F{(B30fO+_|6KR(s- z!)vjj0)D5SIHNHSh3bvN>(wA<4FumeuovBbne_fWZzTIYJUGACqb&XL)HTdm;4zY% z`Fq*grdtQpBh&G1Cj9p6e{+)Ge*GUXLtnsz`s>RR 398?=gB^P zNSjnZcjgP{TCZ5|8IpXFFPOIE{7hK-9@lpzR;cByvSwtNk(e;W`);( zC{AW!IEyUZ=g*P3VgZgfX)MEIQn&Mg1}JNQOwGx?*yR8N6dQnNMN@6=$fI))dE~uJ zA7gg1Wsijjr*@0yC=8%RRqV_V;p}yR+1Mt_tNrnYX5x6(6u12I+C_*f7k{9abp8d@ zprm!Q!aFuRmkNI6QK5_M^h;s!hGrvw`Dw?{1-w)f(lQRdn^7#~Es2G-cbZfNCwUeN z>*%2~V?5P%zvYtKF%+&qt)qOE#d~bp*tOqw*rArVH|V+|0oJ8!apHo>?RXN)!BN9I z5u9-gnCsr4tG$GcC%M6;XY+lR4Q{GlrC3w)NMpbn68G1&E`AkY3ziocNm`G8gp)5p zxLRSa{2|;Po}*B3gE;7f;$fXKR?+3bEj~8ps8intIu+|ws1r)VkHKDxVW&IJv=rnX zd8E7CF#qZ7$p3c#us``YP>WGDF^a@E+w_&z5?l=xe*JLmdE7QWy2de?VZvz)iJvjj zf|I$+_8Ij|zOx;s`*5V~vvQJuS8a!OZmGd3=>@u6QNU=3d6=gePE&;OGdby@M-}>4 z;dBj#WCRf~9T3LB!jX#JRCTGd%a^Cf9a-3R-e3C^Lg^h)o6}g(fkYaAOU_;oaVSAh zqcGv=^4r698x^|kzfHqz{ah}Pvhwe|)WHZ ?> z*AEfv`ik3eEchu>I5*J>J$cm1^T#cgza4A&=?Y~ZCE*slk>O>!jy6$Pyad-tU9)la z6V{(z2EQC)-677Rd>?{G08Xjv0mwd!^E7$Zaxr@0-9mbmk*iRDu0pkn)zY$pexH!o za=|oOe_gfyr?U0Svi1JU#>}SDbVrdz5e58&7o@oF+L@v|h{P3r)wvMks=a;z>*0Eq zKInTP `Wy?05WSJ z^kdjS46sD@DYj34v3auBL*L<8N5$Wh!Q?+YAC$qb8ZvlM$>3Mz4EA4PVz#CTH=E!- zjxvZ^@>E*wdI>i@==Nv34Nbs&P?bBAINT=TnL5zRCYM3oU5lQjR>WK iQ0WiKtxKC*7vpowZxP3T<&%)zIkha@6waCOr+-Jr z<+G99`9jd*9AvNGfn$XG&oV5{GX0kXyu~0&*L@UcK@yTTGP JYI#{Al&aG zo%$JkvoKq+l9%%q^ mSu9Ec9||eHVN44$xmFArq_ UX0vyMtZdR&7Sf@ zee#Sb^9P?Qk8qE1e{L`?jL(w&iuctfIc_kDN0{;F1~X=tq*nv;MqdPmDd_jt^AgwW za=c{w3O*x`GIBQpSc!2yO~2i@!Y@7ah(i{%M_6Xf?2|0I4Od@q)BCu6#zV{~LBDdo zOcLyWxLAw~(>g@6;}U`B^D^5s<*EK@RX7K!GxU+CpbfIea8}&FN++Mq%gW|uWrGes z>#-d|jKkqS=)?)9SNSeDOQ3|{b&Ye93FYHsvcsx4WRYhp91dkUE}NJq*|McL7`ymu zoSfu2A_9d3{3yMvaZWOU)~$l0_8AVbpzc?Ha7~OucNzBRA0OLyi0V;MeR~uhlDNRr z*8IO309pz3N8nk~m*WKAMS4`a-*2CsMs>Pijmqz1fVMdk%*s^9Yj!4qt-Gy9;f?OR zwsn7FE>1AvsBv?@@?%EHT{>a4DlW+P5dEG#iiOpsxF9!4<5TUD9WNVppy==Mf8yMK z >X_Gc9B-ePMmxc1ESQXQq3X4ajp99QI4VU7F{jEs*&3W)tMyX7Tf{Ww zj;UDXYM4)NY00wuQ8(on8xsSKz`|jFn5Bng?cF$GQie$}6WO;AC9{f><4w%;kTBf^ z1 F!oH_z*>Z;EY`{ zJk8G#@GA|>9YS&&G4nDdGB3i{@i^z=F|rAJ<`DUid?K|XbgD-32@h93y4W?P k~E604)vlTcGjLJm&>$$U2Q+#1_R1B=RBI({x@{t-u~X zi|1&BfOT*P!-;YhqU-^@WbQ{zcL{Vp^7k>0PF9BzTU38SqKT4=LzaMl?Dbg~ <#(4^u(kOC%h*$AGj!xB@m}zY0 HeT`OdiniU9 zgGYVAJ`mcCcQ{e|$i&XxB0T*IHnh-oK_I>upw2@kY_?J4wJTD8u@&&8JMtR1y!A$C zwQ>tvbdnVXXgz^`W>J>q4f9^h6)(0F*foYA8~hR1Rs4^oYvv&vMhoGOxYAN0eltLw z$4tQK_jpYkwodqRzjF*mKHSPod~e#dc(8OAk|*7Px2W;LK)OFo6H0Un=*$v ;RkjU}@+iCLn x7R563COVaM-+vk7$9qxX*CM9L7(J z|1-?iC$fe36!TFmH{x5gYw=*I*D0}zRlerM9JSDrgEI?%w!kNQF7RCf9yQqXBF(bK z?8zKNkCS!u^<<`?PX 5D5Eu7w{SYQaco)4`$GQ1(8k?9?85&jMT#BZd(RA+o z?!)Tmc< aM0v>XLZ$AmGgKveTfh zA6*xil_+4*L|hn--D*&>0%wb5_8taNdpmpY-ymT#)6;vqlt5F|Em9_%DF*4g4}0EZ z7KMra?B7UsYalM(=tf-gRv8`)gi4*C#2iBA#gOTLRnGhDYe}u=saMimpLg}Hyf(vH zpH7`>#i^zr9V^=B9{1Dd9>t1N&$*TCdFBZ>wo#7 xTH;Mp~AQqtkd~_|BoKacoTBA1%>T&FJd@Xb_f*&UhuCfasS)yx&p8S k-C(ykGe2B?iA_w&Q#F>qBxErODa)DG7HF zqig#lTYsZ ;-b?;fTFraXS3_%m^6gw)BT+9!C-q^J&QwrfyBdY{&F{zK<{bKE`ap6J7 zdH67SOI^jrDiIyiOhi?K91)Xj`?}Y7&r^hktGNU(N>VN=KTk7K_r_sE_c|_o7a2e+ zfxd8wrYPP(c$n(eb071@75T(d35rC2Jg=>U$>E=@VRumhF`lv~iZkog7}zc4V81C* zO%aV%5SNcU^&u<51>fl}z7@)g {t`} zrwZM8>2N%d$F&SNN67OM1}aRn+4YcLzO*)@zt>kOsF<1(R1Ed|dHAg2$(~E33Y=~B zE80fx<1Ow81h=03iuSD&G`RLaz)#CIUN*-wKlAZ$@u_V*U`4>$aSxHG(sf?9+CCz@ zl(f09bNhLMP7}T-)bGDI2|kB^#n1HP&l0`+vsVjDFd jZgF}p7wqpRXWy 7k|qSVNqo9?V*V9B&j6zs+|@gECp;60t#A?m{qBdw?(G>J!%(7>YPrf z8yGV076RJedssavX~Zyn0Idl6{{Yo1Lp5GAURS9e)<4A2 7 zWqA;@^HYR#Crgrd!Sdjom+!`B105fAmvL4C7AeQnnqUcZPUS9~>h6cf-j;(R&{3HH zJ*$#URK1NicqkDA`c@9`u;ZMUuvP*V6P}pdqft7t1S_4_0f!~GD~0pGm)TYVB!5S_ zl1HW tjW3> zr>@7Ab)}o&=Pyb45d9ob&G0Q0ws@BpSOPA8hYIKc=Gr~23Z7E)<3#Zv1xJRRYv;@= zY$hzzye`8epJJYmm4J#J1bO5dfK|3hw`&}v_&F%7B9hRZBf?%+=%z@|4tOXe9Vp^q z<8(zk!_z?~2!B&0oTA=Ovs}?UxoNig{IqKoeUsZZtB*cC`5CBIWHPo4Q$Lodx<&tg zrDdY|FH@$(|I#v%{Ff wo#!!&I({qYu2hM`|5WUWs-IL P@r;REG1O!B>5UcH-` z!=Uz%ZGGzmNKp9k=3Sq*=12F(DUHmJEf49BQyQ58O0kjo@hospT6#>gQ4xBFYR3lV zN9CToL{!%-!aaZK6Z|6P@e#B%$rFD$z>aD>D;Ex$jyIbqi;`7KU-iOCdk$%TKjzNC zw{Uc|126}~b9 r4ikT z1awFeV3Hn5d8!9Kn{cQ524N 77Z(Vr=svdG>5GmFRzy-_+l$H?*iLXbq z&hI$GUVF3;c=dsEU >8L}#W;s>hkVW4Y% z5vz5Suc9NA8zlWSm5^p_96j1r=~fF!GfIjxkT_yj!TzbZ*WY#F<>{tawMFRbl3N0& z8Bd%XAZVyI272DA |khjUd}_+k@`HfG_^p?IGT>vxjq#XzOv07d?0!?u$Y7Q(?Dm z5$G$+H!t%ImJA22Ceb#ZAkaX}`NJ4;7Ols`@g`oi9|=8J3TIF~32@%XbA-&PWmzr2 zqf3p0zrbS=u5e>DbdB)T+{k0yV;;PVd7#%uJhkdLcT~-4swUb>VTSH@r?iuT9GCiA z0)->^T*LIjtcz|V0L?_ vdTmse+ zBvE?Kk}B^LmITp8k7MBIGncqs0$mwn5EWo%5$|v#$R qx)cK9AOjh&HG&cJ>iaAz*Obz~~SjqxT6yGWt=9P>mX&+@m*_ zt6l;(0{IG; wNC z7lcVM+6dFq>!)ZaeY*ixA$j0SQLVyll&r&SjBta?PX1Ck4A!idZiG-hLWUG;KT-v) zQ*4d0O)gIVLj9)DyaGvQ+(K>GN1daaie7=^V7v^+=jwvTG{Vh?khUq7qfZZe$821G zN|=(-a_Z_~@8mcx95iJ3VuXYNX3&FhWMy`Q)3aBu$cs*zHgRZurn@ZQa|kmIoh@%g zk(*d?;$ 8e^&hR+aEOJN zJc0lY!m!CcXb{PzR;K(ZZw>C$$RP<9^tTPy%7B(@d|sLK*gi_mEla5V`S=*!<}vu6 zj?YU@>g4Aq2CL;Mx@+Ineytadus8rJ9TAwxjskO%bu>`E!9zf&chS{ zj1ri+3p!MZgh@#^y<5l!Ns{m<>87-4{KC@Q)VGcIiFAJ#A0$*uzaOu*hd8+GCLXFE z>OLIX$Eb0#$-?f 3SEMHR<*biN#LzR1}6K+LlD1995ln$;mPYIo|*EQ^0+QfW> z#G>?o(7Aoi@o6sNPz7-k7jdY6TbRxP`yeR>%8ZTXEgZe#DnZ8i2^+7h5 Xvso@DFWkZ|EoIB5Q!A<1)@yj4)SBO zNv8Z02w;s{)CuXT#?YI8c|{h+X30~J+wxTwx3`XUQA ohJA%Zs*119kDliRGPrPxLX)?GT6M0reC4%3`Lnl7}`b> z4I*NgBV-C94!al;-_?Y8(MdQ!uzAxTqs=5X9fp2JSr)^^Qhxn^b#?JN70BuvE(Y^! zkig!x(ex|iHp7-a9t3rSI&Ly-1w){#Cit4FRhniRF)Shzju4}sIoDx+8h5r+*oZED zbDOHvZeZv{2NGt-ar-<%&Ia&y3r~8wrmgZ4(-)m3^$utQm8&nzDH8WMPB$CE9OHcl z^Ezs$icL( * z6((*fYdCChHJ!(attVEqcag@p`I8bcxkCRvG%kGV;w}Jrn~&%J?`f6xf1`l>=FD zN!B#L0-PRydqTFt207ee4R6S^uqgOoVqEZq^#4lNdZv_Wz_^Fb0Q0L-&}q#Tw9+N( z7ShW<+!j0U&BuDS?IIhf-umV`c-9y9jk!2Zq6X8$u_(-^YSTc9faWgj2sHzyQiiE1 zO{BEUp7g817Z>*GqFtDMnU+BYO$pk(MleF0jJtGyw-L_v!P@$-6u|_(Pf;p^J>9W{ zvwiSUvB-0W8P54}nf3Q0Oeh~S=tFtwKtboo8TT;3;X>i;3rTMC8m>;vX$DquiW0f0 zG46%KYV#R>9hJ-X5Cib{5YXcH7=*;kS3+!#Ni`afDN+W$Ddm|X+_ymc+pqr(zyJ2@ z|1?m44>!TYE}-mRr&{%4vk4S6&v4DdyTOD~pt4w}3R%pBiqonTONW}_7Ggb`-0Fc! zMge8{$o4LeGIWure%Pd{K~Ty-EeM*scq58lLaNDoYJw&???#}OW#|!_pqRC3`}8r& zeAGOsVS;C>*|Ldcgh-jK2k#}kgTf$SxSalfIglQ~ee`y*z|v!!1Vdl51S; e7B;r#TMw_~A(U;p*JX_l2n?N~ zJpZTBLZqyqE&&`pkqn1zNIO}hQr%U;Q_SfxkZ)!dbFW|A5V)&f=nW@zo&iBK6Q>3Z zpMX}fn$Ufi<<35m-V IIE?TRKL^;J;=E`&Q %7+?ozZkw?dNC&HAD~Hv&8cwp7UBc%Vb~O}j?1%u3b9+q zkp@@nfJRxG>m#)FTl~u*hL|i9${!JI`TtY`>=%$n+s*gdmZP{Kv7*ERGk~$kVtQ#G z!)OvO S!*zxUcu-q zL`cdYT{XZDltm6H&aQCw1nG9k>laBL0S+feY7ktrS@^m}{kH10*KUA+qZ{qMLs#o{ zScKpOG|2{sjiF&x2B5*^NT9EW2pD2Xf!i@--TG~}x-)ne;Q_=)DMu(3>o#_~RR(I= zL{L+9NY)y)V8_^1y43>^So%K;lRWO0^Rbk4j!Bm~skk-h^t1Pi%aN4$-JC9NdcM =OK8E=yznYhO?mJ zL}$EiX6_DgpT9|yHo;Sjrx;HW-pufQYU1lryV^!!0&WSzX2u)zAp-b37=(EhvqyvI z)!&14w2yREO;&L 02t(0^ zCxEhkA+rigP2MA%F9{=o%?1yO=O&de2fHZGb@wUnId$6T{KRk<1XpTeg-S5%M@@ff zWW90x4B^NNI#uH_{u1-iEASDbP2hy4?C5Ng`AMgqnbhuo!7A__!dl>zsX)wH(c9&i zMbzjK4*1B&=rBv8(WAn&vohYtn|FCXGwO}W$GEdK?NNbQ5|bCR!I^dQw5X%SDSr6d zU38iR(aKjT>8l!A3++0Buu(YL)>8X|!ZxuB0%eAaaNdU9qUA12b+d7d225GvepAJ2 z;iO%BTN`nI9<>hTbyJ%Pp_}Ul%vOHWwBtB^AMZ!7n>Pi{0zlf!I$jI29PGA>@5ozg zcy`O7ZBEjg8d?jjc}$KeXGvTt>O}*hOKw7j=r42_6|V$$Zc77t2_vGL>|5uUDPC$e z$!GkyeW+|mYa}=EP@rOLvJ}E2>+9d>hMXemkC9@3(4p=j7#?<{UmJimcd1?@)wTW= z_WB1)eZz2__-gEXYYdQxZ(qSF$-~g8pXzUpZe4o#k-~eYoR?D+0wTQR${AYL+RWOi zdUMF|t(`?->&BgSg`8SR>epqo3Ukdj^Xy;5A?;s+zWUCItq*6#qs<;j20|KYdjtDA zD#Cbwdo(vCC+2hfJdjt9v7)a>(_(63y@Zd$NS#w^urmaGlEMDB-GZEBYp@FjU7$u+ z+}S`4{l-WXxFm&XV||aVa{NJhd%ld5Ky*o}h(QUJ>2o$4>u8+MuIF!OS|fkx(%5S} zAMm%+LxYYkYR@BsVHEK24??@bZ$r5|JIB3$%$S;atKH%*R;cF_Xel}K{vE!IBUZY& zqScpu8YjisL>bCLl@w``xg{B>58;m&gsB~*URG-Nj%DRm6H_}#y{wp^h<5vJ*yi!p zO^oM2S^zu 9N&4)@Ew5F|oxNKxw+nQ|q47BX?@vrAsiT-no-nNf7S$(