From ff8c0351a9cee20102554b8a0d15035646b32d5d Mon Sep 17 00:00:00 2001
From: Evennia docbuilder action
__unloggedin_look_command [look, l] (cmdset: UnloggedinCmdSet, help-category: General)
__unloggedin_look_command [l, look] (cmdset: UnloggedinCmdSet, help-category: General)
about [version] (cmdset: CharacterCmdSet, help-category: System)
access [groups, hierarchy] (cmdset: CharacterCmdSet, help-category: General)
access [hierarchy, groups] (cmdset: CharacterCmdSet, help-category: General)
accounts [listaccounts, account] (cmdset: CharacterCmdSet, help-category: System)
addcom [aliaschan, chanalias] (cmdset: AccountCmdSet, help-category: Comms)
addcom [chanalias, aliaschan] (cmdset: AccountCmdSet, help-category: Comms)
alias [setobjalias] (cmdset: CharacterCmdSet, help-category: Building)
allcom (cmdset: AccountCmdSet, help-category: Comms)
batchcode [batchcodes] (cmdset: CharacterCmdSet, help-category: Building)
cdestroy (cmdset: AccountCmdSet, help-category: Comms)
cemit [cmsg] (cmdset: AccountCmdSet, help-category: Comms)
channels [comlist, all channels, channellist, clist, chanlist] (cmdset: AccountCmdSet, help-category: Comms)
channels [comlist, channellist, all channels, clist, chanlist] (cmdset: AccountCmdSet, help-category: Comms)
charcreate (cmdset: AccountCmdSet, help-category: General)
chardelete (cmdset: AccountCmdSet, help-category: General)
clock (cmdset: AccountCmdSet, help-category: Comms)
create [cre, cr] (cmdset: UnloggedinCmdSet, help-category: General)
cwho (cmdset: AccountCmdSet, help-category: Comms)
delcom [delaliaschan, delchanalias] (cmdset: AccountCmdSet, help-category: Comms)
delcom [delchanalias, delaliaschan] (cmdset: AccountCmdSet, help-category: Comms)
desc [describe] (cmdset: CharacterCmdSet, help-category: Building)
destroy [delete, del] (cmdset: CharacterCmdSet, help-category: Building)
destroy [del, delete] (cmdset: CharacterCmdSet, help-category: Building)
dig (cmdset: CharacterCmdSet, help-category: Building)
drop (cmdset: CharacterCmdSet, help-category: General)
encoding [encode] (cmdset: UnloggedinCmdSet, help-category: General)
link (cmdset: CharacterCmdSet, help-category: Building)
lock [locks] (cmdset: CharacterCmdSet, help-category: Building)
look [ls, l] (cmdset: AccountCmdSet, help-category: General)
look [ls, l] (cmdset: CharacterCmdSet, help-category: General)
look [l, ls] (cmdset: AccountCmdSet, help-category: General)
look [l, ls] (cmdset: CharacterCmdSet, help-category: General)
mvattr (cmdset: CharacterCmdSet, help-category: Building)
name [rename] (cmdset: CharacterCmdSet, help-category: Building)
nick [nicks, nickname] (cmdset: AccountCmdSet, help-category: General)
objects [db, stats, listobjects, listobjs] (cmdset: CharacterCmdSet, help-category: System)
objects [listobjects, db, listobjs, stats] (cmdset: CharacterCmdSet, help-category: System)
ooc [unpuppet] (cmdset: AccountCmdSet, help-category: General)
open (cmdset: CharacterCmdSet, help-category: Building)
option [options] (cmdset: AccountCmdSet, help-category: General)
time [uptime] (cmdset: CharacterCmdSet, help-category: System)
tunnel [tun] (cmdset: CharacterCmdSet, help-category: Building)
typeclass [swap, type, parent, update] (cmdset: CharacterCmdSet, help-category: Building)
typeclass [parent, update, type, swap] (cmdset: CharacterCmdSet, help-category: Building)
unlink (cmdset: CharacterCmdSet, help-category: Building)
whisper (cmdset: CharacterCmdSet, help-category: General)
who [doing] (cmdset: AccountCmdSet, help-category: General)
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['pemit', 'remit']¶aliases = ['remit', 'pemit']¶
aliases = ['delete', 'del']¶aliases = ['del', 'delete']¶
aliases = ['swap', 'type', 'parent', 'update']¶aliases = ['parent', 'update', 'type', 'swap']¶
aliases = ['aliaschan', 'chanalias']¶aliases = ['chanalias', 'aliaschan']¶
aliases = ['delaliaschan', 'delchanalias']¶aliases = ['delchanalias', 'delaliaschan']¶
aliases = ['comlist', 'all channels', 'channellist', 'clist', 'chanlist']¶aliases = ['comlist', 'channellist', 'all channels', 'clist', 'chanlist']¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['groups', 'hierarchy']¶aliases = ['hierarchy', 'groups']¶
aliases = ['db', 'stats', 'listobjects', 'listobjs']¶aliases = ['listobjects', 'db', 'listobjs', 'stats']¶
aliases = ['look', 'l']¶aliases = ['l', 'look']¶
aliases = ['deal', 'offers']¶aliases = ['offers', 'deal']¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['roll', '@dice']¶aliases = ['@dice', 'roll']¶
aliases = ['look', 'l']¶aliases = ['l', 'look']¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['press button', 'press', 'push']¶
aliases = ['break lid', 'smash', 'smash lid']¶
aliases = ['l', 'examine', 'get', 'ex', 'listen', 'feel']¶
aliases = ['move', 'push', 'pull', 'shiftroot']¶aliases = ['pull', 'push', 'shiftroot', 'move']¶
aliases = ['slash', 'hit', 'kill', 'fight', 'pierce', 'bash', 'parry', 'defend', 'thrust', 'stab', 'chop']¶aliases = ['parry', 'bash', 'kill', 'pierce', 'slash', 'stab', 'fight', 'chop', 'defend', 'thrust', 'hit']¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
aliases = ['fiddle', 'feel', 'feel around', 'search', 'l']¶aliases = ['feel around', 'fiddle', 'l', 'search', 'feel']¶
aliases = [':q', ':I', ':wq', ':x', ':f', ':=', ':dd', ':S', ':dw', ':u', ':q!', ':DD', ':uu', ':A', ':j', ':fd', ':h', ':::', ':w', ':', ':fi', ':<', '::', ':i', ':s', ':!', ':echo', ':p', ':>', ':UU', ':y', ':r']¶aliases = [':f', ':echo', ':w', ':I', ':q!', ':S', ':', ':q', ':UU', ':u', ':s', ':r', ':dd', ':p', ':>', ':h', ':::', ':!', ':fd', ':j', ':<', ':=', ':DD', ':y', ':wq', ':x', ':i', ':dw', ':fi', '::', ':uu', ':A']¶
aliases = ['top', 'quit', 'n', 'e', 'b', 'a', 'back', 't', 'end', 'abort', 'q', 'next']¶aliases = ['top', 'a', 'next', 'back', 'q', 'end', 'abort', 'n', 'quit', 't', 'b', 'e']¶
Then reload to make the bew commands available. Note that they only work +
Then reload to make the new commands available. Note that they only work
on rooms with the typeclass ExtendedRoom. Create new rooms with the right
typeclass or use the typeclass command to swap existing rooms.
Prior to 1.0, all Evennia installs were Git-installs. These instructions
assume that you have a cloned evennia repo and use a virtualenv (best practices).
Copy evennia/evennia/game_template/web to mygame/ (e.g. using cp -Rf or a file manager). This new web folder
replaces the old one and has a very different structure.
evennia migrate
evennia start
It’s possible you need to replace/comment out import and calls to the deprecated
+django.conf.urls. The new way to call it is
+available here.
Run evennia migrate
Run evennia start
If you made extensive work in your game dir, you may well find that you need to do some (hopefully minor) changes to your code before it will start with Evennia 1.0. Some important points:
@@ -116,7 +119,7 @@ your imports.aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
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 '}¶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 '}¶
aliases = ['remit', 'pemit']¶aliases = ['pemit', 'remit']¶
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 '}¶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 '}¶
aliases = ['batchcommand', 'batchcmd']¶aliases = ['batchcmd', 'batchcommand']¶
search_index_entry = {'aliases': 'batchcommand batchcmd', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcommand batchcmd', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶search_index_entry = {'aliases': 'batchcmd batchcommand', 'category': 'building', 'key': 'batchcommands', 'no_prefix': ' batchcmd batchcommand', 'tags': '', 'text': '\n build from batch-command file\n\n Usage:\n batchcommands[/interactive] <python.path.to.file>\n\n Switch:\n interactive - this mode will offer more control when\n executing the batch file, like stepping,\n skipping, reloading etc.\n\n Runs batches of commands from a batch-cmd text file (*.ev).\n\n '}¶
aliases = ['@swap', '@parent', '@type', '@typeclasses', '@update']¶aliases = ['@parent', '@swap', '@type', '@typeclasses', '@update']¶
search_index_entry = {'aliases': '@swap @parent @type @typeclasses @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass swap parent type typeclasses update', '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 @swap @type @typeclasses @update', 'category': 'building', 'key': '@typeclass', 'no_prefix': 'typeclass parent swap type typeclasses update', '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 = ['@search', '@locate']¶aliases = ['@locate', '@search']¶
search_index_entry = {'aliases': '@search @locate', 'category': 'building', 'key': '@find', 'no_prefix': 'find search locate', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶search_index_entry = {'aliases': '@locate @search', 'category': 'building', 'key': '@find', 'no_prefix': 'find locate search', 'tags': '', 'text': '\n search the database for objects\n\n Usage:\n find[/switches] <name or dbref or *account> [= dbrefmin[-dbrefmax]]\n locate - this is a shorthand for using the /loc switch.\n\n Switches:\n room - only look for rooms (location=None)\n exit - only look for exits (destination!=None)\n char - only look for characters (BASE_CHARACTER_TYPECLASS)\n exact - only exact matches are returned.\n loc - display object location if exists and match has one result\n startswith - search for names starting with the string, rather than containing\n\n Searches the database for an object of a particular name or exact #dbref.\n Use *accountname to search for an account. The switches allows for\n limiting object matches to certain game entities. Dbrefmin and dbrefmax\n limits matches to within the given dbrefs range, or above/below if only\n one is given.\n '}¶
aliases = ['@chan', '@channels']¶aliases = ['@channels', '@chan']¶
search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['@chan', '@channels']¶aliases = ['@channels', '@chan']¶
search_index_entry = {'aliases': '@chan @channels', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel chan channels', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶search_index_entry = {'aliases': '@channels @chan', 'category': 'comms', 'key': '@channel', 'no_prefix': 'channel channels chan', 'tags': '', 'text': "\n Use and manage in-game channels.\n\n Usage:\n channel channelname <msg>\n channel channel name = <msg>\n channel (show all subscription)\n channel/all (show available channels)\n channel/alias channelname = alias[;alias...]\n channel/unalias alias\n channel/who channelname\n channel/history channelname [= index]\n channel/sub channelname [= alias[;alias...]]\n channel/unsub channelname[,channelname, ...]\n channel/mute channelname[,channelname,...]\n channel/unmute channelname[,channelname,...]\n\n channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n channel/desc channelname = description\n channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n channel/ban channelname (list bans)\n channel/ban[/quiet] channelname[, channelname, ...] = subscribername [: reason]\n channel/unban[/quiet] channelname[, channelname, ...] = subscribername\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n\n # subtopics\n\n ## sending\n\n Usage: channel channelname msg\n channel channel name = msg (with space in channel name)\n\n This sends a message to the channel. Note that you will rarely use this\n command like this; instead you can use the alias\n\n channelname <msg>\n channelalias <msg>\n\n For example\n\n public Hello World\n pub Hello World\n\n (this shortcut doesn't work for aliases containing spaces)\n\n See channel/alias for help on setting channel aliases.\n\n ## alias and unalias\n\n Usage: channel/alias channel = alias[;alias[;alias...]]\n channel/unalias alias\n channel - this will list your subs and aliases to each channel\n\n Set one or more personal aliases for referencing a channel. For example:\n\n channel/alias warrior's guild = warrior;wguild;warchannel;warrior guild\n\n You can now send to the channel using all of these:\n\n warrior's guild Hello\n warrior Hello\n wguild Hello\n warchannel Hello\n\n Note that this will not work if the alias has a space in it. So the\n 'warrior guild' alias must be used with the `channel` command:\n\n channel warrior guild = Hello\n\n Channel-aliases can be removed one at a time, using the '/unalias' switch.\n\n ## who\n\n Usage: channel/who channelname\n\n List the channel's subscribers. Shows who are currently offline or are\n muting the channel. Subscribers who are 'muting' will not see messages sent\n to the channel (use channel/mute to mute a channel).\n\n ## history\n\n Usage: channel/history channel [= index]\n\n This will display the last |c20|n lines of channel history. By supplying an\n index number, you will step that many lines back before viewing those 20 lines.\n\n For example:\n\n channel/history public = 35\n\n will go back 35 lines and show the previous 20 lines from that point (so\n lines -35 to -55).\n\n ## sub and unsub\n\n Usage: channel/sub channel [=alias[;alias;...]]\n channel/unsub channel\n\n This subscribes you to a channel and optionally assigns personal shortcuts\n for you to use to send to that channel (see aliases). When you unsub, all\n your personal aliases will also be removed.\n\n ## mute and unmute\n\n Usage: channel/mute channelname\n channel/unmute channelname\n\n Muting silences all output from the channel without actually\n un-subscribing. Other channel members will see that you are muted in the /who\n list. Sending a message to the channel will automatically unmute you.\n\n ## create and destroy\n\n Usage: channel/create channelname[;alias;alias[:typeclass]] [= description]\n channel/destroy channelname [= reason]\n\n Creates a new channel (or destroys one you control). You will automatically\n join the channel you create and everyone will be kicked and loose all aliases\n to a destroyed channel.\n\n ## lock and unlock\n\n Usage: channel/lock channelname = lockstring\n channel/unlock channelname = lockstring\n\n Note: this is an admin command.\n\n A lockstring is on the form locktype:lockfunc(). Channels understand three\n locktypes:\n listen - who may listen or join the channel.\n send - who may send messages to the channel\n control - who controls the channel. This is usually the one creating\n the channel.\n\n Common lockfuncs are all() and perm(). To make a channel everyone can\n listen to but only builders can talk on, use this:\n\n listen:all()\n send: perm(Builders)\n\n ## boot and ban\n\n Usage:\n channel/boot[/quiet] channelname[,channelname,...] = subscribername [: reason]\n channel/ban channelname[, channelname, ...] = subscribername [: reason]\n channel/unban channelname[, channelname, ...] = subscribername\n channel/unban channelname\n channel/ban channelname (list bans)\n\n Booting will kick a named subscriber from channel(s) temporarily. The\n 'reason' will be passed to the booted user. Unless the /quiet switch is\n used, the channel will also be informed of the action. A booted user is\n still able to re-connect, but they'll have to set up their aliases again.\n\n Banning will blacklist a user from (re)joining the provided channels. It\n will then proceed to boot them from those channels if they were connected.\n The 'reason' and `/quiet` works the same as for booting.\n\n Example:\n boot mychannel1 = EvilUser : Kicking you to cool down a bit.\n ban mychannel1,mychannel2= EvilUser : Was banned for spamming.\n\n "}¶
aliases = ['ls', 'l']¶aliases = ['l', 'ls']¶
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 '}¶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 '}¶
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 = ['hierarchy', 'groups']¶aliases = ['groups', 'hierarchy']¶
search_index_entry = {'aliases': 'hierarchy groups', 'category': 'general', 'key': 'access', 'no_prefix': ' hierarchy groups', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶search_index_entry = {'aliases': 'groups hierarchy', 'category': 'general', 'key': 'access', 'no_prefix': ' groups hierarchy', 'tags': '', 'text': '\n show your current game access\n\n Usage:\n access\n\n This command shows you the permission hierarchy and\n which permission groups you are a member of.\n '}¶
Test the batch processor.
red_button = <module 'evennia.contrib.tutorials.red_button.red_button' from '/tmp/tmpm5x5oro0/77171aee8a480efe6f99b1cc5b26d60e78b34f6f/evennia/contrib/tutorials/red_button/red_button.py'>¶
aliases = ['conn', 'con', 'co']¶aliases = ['co', 'con', 'conn']¶
search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con co', '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': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con 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 = ['cr', 'cre']¶aliases = ['cre', 'cr']¶
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\n '}¶search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n create a new account account\n\n Usage (at login screen):\n create <accountname> <password>\n create "account name" "pass word"\n\n This creates a new account account.\n\n If you have spaces in your name, enclose it in double quotes.\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 = ['?', 'h']¶aliases = ['h', '?']¶
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n get help when in unconnected-in state\n\n Usage:\n help\n\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
aliases = ['conn', 'con', 'co']¶aliases = ['co', 'con', 'conn']¶
search_index_entry = {'aliases': 'conn con co', 'category': 'general', 'key': 'connect', 'no_prefix': ' conn con co', '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': 'co con conn', 'category': 'general', 'key': 'connect', 'no_prefix': ' co con 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 = ['cr', 'cre']¶aliases = ['cre', 'cr']¶
search_index_entry = {'aliases': 'cr cre', 'category': 'general', 'key': 'create', 'no_prefix': ' cr cre', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\n '}¶search_index_entry = {'aliases': 'cre cr', 'category': 'general', 'key': 'create', 'no_prefix': ' cre cr', 'tags': '', 'text': '\n Create a new account.\n\n Usage (at login screen):\n create "accountname" <email> <password>\n\n This creates a new account account.\n\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 = ['?', 'h']¶aliases = ['h', '?']¶
search_index_entry = {'aliases': '? h', 'category': 'general', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶search_index_entry = {'aliases': 'h ?', 'category': 'general', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n This is an unconnected version of the help command,\n for simplicity. It shows a pane of info.\n '}¶
aliases = ['@callback', '@calls', '@callbacks']¶aliases = ['@calls', '@callbacks', '@callback']¶
search_index_entry = {'aliases': '@callback @calls @callbacks', 'category': 'building', 'key': '@call', 'no_prefix': 'call callback calls callbacks', '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 = ['abort', 'q', 'quit', 'chicken out']¶aliases = ['abort', 'quit', 'chicken out', 'q']¶
search_index_entry = {'aliases': 'abort q quit chicken out', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort q quit chicken out', '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 quit chicken out q', 'category': 'evscaperoom', 'key': 'give up', 'no_prefix': ' abort quit chicken out q', '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 = ['ls', 'l']¶aliases = ['l', 'ls']¶
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 '}¶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 '}¶
aliases = ['whisper', ';', 'shout']¶aliases = ['whisper', 'shout', ';']¶
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 '}¶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 = [':', 'pose']¶aliases = ['pose', ':']¶
search_index_entry = {'aliases': ': pose', 'category': 'general', 'key': 'emote', 'no_prefix': ' : pose', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶search_index_entry = {'aliases': 'pose :', 'category': 'general', 'key': 'emote', 'no_prefix': ' pose :', 'tags': '', 'text': '\n Perform a free-form emote. Use /me to\n include yourself in the emote and /name\n to include other objects or characters.\n Use "..." to enact speech.\n\n Usage:\n emote <emote>\n :<emote\n\n Example:\n emote /me smiles at /peter\n emote /me points to /box and /lever.\n\n '}¶
aliases = ['ex', 'unfocus', 'e', 'examine']¶aliases = ['e', 'examine', 'unfocus', 'ex']¶
search_index_entry = {'aliases': 'ex unfocus e examine', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' ex unfocus e examine', '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': 'e examine unfocus ex', 'category': 'evscaperoom', 'key': 'focus', 'no_prefix': ' e examine unfocus 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 '}¶
aliases = ['inv', 'give', 'i', 'inventory']¶aliases = ['give', 'i', 'inv', 'inventory']¶
search_index_entry = {'aliases': 'inv give i inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' inv give i inventory', 'tags': '', 'text': '\n Use focus / examine instead.\n\n '}¶search_index_entry = {'aliases': 'give i inv inventory', 'category': 'evscaperoom', 'key': 'get', 'no_prefix': ' give i inv 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 = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶
aliases = ['hold', 'wait']¶aliases = ['wait', 'hold']¶
search_index_entry = {'aliases': 'hold wait', 'category': 'combat', 'key': 'pass', 'no_prefix': ' hold wait', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\n '}¶search_index_entry = {'aliases': 'wait hold', 'category': 'combat', 'key': 'pass', 'no_prefix': ' wait hold', 'tags': '', 'text': '\n Passes on your turn.\n\n Usage:\n pass\n\n When in a fight, you can use this command to end your turn early, even\n if there are still any actions you can take.\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 = ['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 = ['ex', 'l', 'get', 'examine', 'feel', 'listen']¶
search_index_entry = {'aliases': 'ex l get examine feel listen', 'category': 'general', 'key': 'look', 'no_prefix': ' ex l get examine feel listen', '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 = ['move', 'push', 'shiftroot', 'pull']¶aliases = ['pull', 'push', 'move', 'shiftroot']¶
search_index_entry = {'aliases': 'move push shiftroot pull', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' move push shiftroot pull', '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': 'pull push move shiftroot', 'category': 'tutorialworld', 'key': 'shift', 'no_prefix': ' pull push move 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 = ['press button', 'push button', 'button']¶aliases = ['press button', 'button', 'push button']¶
search_index_entry = {'aliases': 'press button push button button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button push button button', 'tags': '', 'text': '\n Presses a button.\n '}¶search_index_entry = {'aliases': 'press button button push button', 'category': 'tutorialworld', 'key': 'press', 'no_prefix': ' press button button push button', 'tags': '', 'text': '\n Presses a button.\n '}¶
aliases = ['stab', 'thrust', 'slash', 'chop', 'parry', 'kill', 'pierce', 'bash', 'hit', 'fight', 'defend']¶aliases = ['hit', 'defend', 'chop', 'kill', 'slash', 'bash', 'pierce', 'thrust', 'parry', 'fight', 'stab']¶
search_index_entry = {'aliases': 'stab thrust slash chop parry kill pierce bash hit fight defend', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' stab thrust slash chop parry kill pierce bash hit fight defend', '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': 'hit defend chop kill slash bash pierce thrust parry fight stab', 'category': 'tutorialworld', 'key': 'attack', 'no_prefix': ' hit defend chop kill slash bash pierce thrust parry fight stab', '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 = ['?', 'h']¶aliases = ['h', '?']¶
search_index_entry = {'aliases': '? h', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' ? h', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶search_index_entry = {'aliases': 'h ?', 'category': 'tutorial world', 'key': 'help', 'no_prefix': ' h ?', 'tags': '', 'text': '\n Overwritten help command while on the bridge.\n '}¶
aliases = ['fiddle', 'l', 'feel', 'search', 'feel around']¶aliases = ['feel around', 'fiddle', 'l', 'search', 'feel']¶
search_index_entry = {'aliases': 'fiddle l feel search feel around', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' fiddle l feel search feel around', '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 around fiddle l search feel', 'category': 'tutorialworld', 'key': 'look', 'no_prefix': ' feel around fiddle l search feel', '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 '}¶
aliases = [':DD', ':echo', ':q', ':dd', ':f', ':>', ':q!', ':!', ':uu', '::', ':j', ':s', ':y', ':S', ':', ':wq', ':i', ':I', ':UU', ':<', ':A', ':w', ':u', ':fd', ':h', ':dw', ':r', ':x', ':::', ':p', ':=', ':fi']¶aliases = [':fd', ':I', ':f', ':x', ':q!', ':i', ':y', ':!', ':<', ':p', ':dd', ':q', ':=', ':wq', ':r', ':S', ':DD', ':', ':uu', ':w', ':A', ':::', ':>', '::', ':j', ':fi', ':h', ':UU', ':s', ':u', ':echo', ':dw']¶
search_index_entry = {'aliases': ':DD :echo :q :dd :f :> :q! :! :uu :: :j :s :y :S : :wq :i :I :UU :< :A :w :u :fd :h :dw :r :x ::: :p := :fi', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :DD :echo :q :dd :f :> :q! :! :uu :: :j :s :y :S : :wq :i :I :UU :< :A :w :u :fd :h :dw :r :x ::: :p := :fi', 'tags': '', 'text': '\n Commands for the editor\n '}¶search_index_entry = {'aliases': ':fd :I :f :x :q! :i :y :! :< :p :dd :q := :wq :r :S :DD : :uu :w :A ::: :> :: :j :fi :h :UU :s :u :echo :dw', 'category': 'general', 'key': ':editor_command_group', 'no_prefix': ' :fd :I :f :x :q! :i :y :! :< :p :dd :q := :wq :r :S :DD : :uu :w :A ::: :> :: :j :fi :h :UU :s :u :echo :dw', 'tags': '', 'text': '\n Commands for the editor\n '}¶
aliases = ['y', 'abort', 'no', 'yes', 'n', 'a', '__nomatch_command']¶
search_index_entry = {'aliases': 'y abort no yes n a __nomatch_command', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' y abort no yes n a __nomatch_command', 'tags': '', 'text': '\n Handle a prompt for yes or no. Press [return] for the default choice.\n\n '}¶
aliases = ['a', 'n', 'previous', 'e', 'end', 'p', 'quit', 'q', 'next', 'abort', 'top', 't']¶aliases = ['quit', 'previous', 'abort', 'top', 'e', 'p', 'a', 'n', 'end', 'q', 'next', 't']¶
search_index_entry = {'aliases': 'a n previous e end p quit q next abort top t', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' a n previous e end p quit q next abort top t', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶search_index_entry = {'aliases': 'quit previous abort top e p a n end q next t', 'category': 'general', 'key': '__noinput_command', 'no_prefix': ' quit previous abort top e p a n end q next t', 'tags': '', 'text': '\n Manipulate the text paging. Catch no-input with aliases.\n '}¶
ImA9HLygb+Ir4FmgA`3Q4xhS$t){^5NxvIt`x%sYx*vZ(G zg`=GFWg^Z=k1q{*7S7A{$>7TXj31PblG+qf+~FOo$_m6h>PjHJ 9Ya9J5gkkypm&dk)@r~&yQefS|2EFH 8zQudRx=N_QhsWwFi7KVEh4cGiA+w5n!2%_&s$oQ%gVBT61_ zLc;58d)XsV!_#oe;bvIehJXAFBNqKSAQr9psXQN{D8cau($$A0B6eQDRqyOz75F<* z5La3@K>m{{H0Q}pV)qa-l!BU^_lC;u>uES7*a}nR+<-9w8tfTo|G$-N_2S#_jgJTV z3Lb5T@u3FU3#_kUsaiYs@IH+11gCmFR?J0x>*?J%I|foq{U=hXR~BcJ2788_m1{}# zR?HWVfw%mt>?vssW%)i5oAH!-W}VE!dHffMPaJH$b+%`Y?&AS__v)>hPC3*JjYFIJ z67= Sftij@L$BJkI=1>Bd&VlfOnr*_vrjyb_S{H3NJz&js6=D5?XT z;K>Jt!;L l!B%!LSYXYfmn z$Vvq--)L#;Sw9B#J)R(>)RX*FK(XI6X_sg@|7B-W^Mnh4f1G}b86JXsUm IlL!PTNIJ#aYjpRfZE)DoQ8x+zS@Xh@)-=d2zWBTZW-+uhi$B|4u1Vajcc3 z5G{eR|Me3 Y2bjCU1{gRWPo6Gtr6@YAY z_+j05Jgh%@?HFX6%Y}@t#C_L{C|}azcY_WgKOO+6=Fp3fAMCBqM9iY(Z6M1#`uT!5 zr!$zI6lW;3Bt2bMmYirL<(xj!e3 H zhNs&oEM~)B`yK1_?MEe&vvSjKl3Y}m;H#q`McXWz_(3ibZS%=Lg%%{I8E(mYi#f%3 z3)KL#CHO%>Zx|oh>1d+AAA*K3*xeN~iL<9;+MRL|6(0ymQ7^+lp!3DOgqx(5g}DY# z_qddq-M^;4+6Y;;Y-mzJa`fW+; b0~`dd**(jJUHt@ZbP${}5WsN#&}`RAOfynZ(6~cK`OVfP# =h^<6NKH{vHsG>gUVXXSRBQ#*tjmS3}i}vRXz;=!kDv( ze|6;r&5Z4J`?|{r^Qll0@I~VDBH-Uh`TTxKLR+I|CM{a~fXn=gLg $4?x1lh?O=Re-3D5tf!)E3oDBfAi@eHKodmjqDB!* zIGAd2s5w^?qf)KCPa*#%R|; 1y6g}DkHMa?iDv_fIlFuMH=7;&C4jI1GXYIG!ETb zx?AaZ=4|8ZpD;?AUn!s`Y(7b;8r0B!ja&CWXo(@x$pT>W=3GlI3WX9B&gu}#fchv# zR~XZuf*LldQc|tI(ga8vH5E@ELvcqoSen-FM>`X(h;08Z3TcU+u7ujI+Q1(cOB*fO zIU (vijqlF`2A2RnQT{UPJij zge?O-3n@VIj}^kCpzq2VVd5vuXUd3lg_H9G;uNgBL;2cI->sBMY stmJdr)hkQ@%Lho z`{GAHi9`Bl++48;O3Gn3eMww7C+;qqan+wI-)hRcVi=47yZ4b6m_I3`l;8Jvr#Y+? zmbs`)6fOJkfQE;Z3*YpdkI!+|uA0kQQ!AJ9ft+v%F@QeIyJ)WLlZJ`Q_@~DePJ*81 zvd&;FmSfyQ&3<&o28HxEMK0OQbBaw{E=(?aQ6CO|c$BeGBQxcB{RraqZIe{s37E3{ zaSjMTe4v~I?5C;u-42r(?or5y#LdM|K>Lc%P*{1nxh@wy$h7!YZaLB*KkEFT5;i-b zQg%TZ_bKPqJ7Qm@0;Q8oBBpChOpUJM*KO)*<%13MU==FoS))*QZ2X2LbrDBlJj&)s zjos|H)srJ(Nqq#`9nmfGZ`y?>rRvXeoz#CQpw;#Px}ypvx{Y^fRIE*e@{Y~0hfl_v zHg@TMBYs6=%Ga^ _=iff;q?sN zMO-sL#XO>=Fx+r!dSuIV)2T}pNzqcCL1hs3q1 H2Moa(jsrzw+Z$O9O zYZfL;$%VJj;WYnUs$iFV*La0)KzLi>Wa5A`NG=^@Y1&Sf6BwG-fqdOQ QF?wq5FsX zKjEH=D_XxMla(T(l91J$YIbHnb^Bs-ana3J!~RdBSKfq(nlP4<$1#oMJhO&cTyc(K zR~KZT*d;Nq<;ahs0Mg(T#04a_GMWt6_V&|Ng~=l`6*e^uc)DA!JxBOO${3lpz7nNh zZDHB`bHqVTbQ3icoPcPOg)uG)>s{(ht(GqUno!@M03=fh@gRM!Q1^j!{DN!PFn7(1 z2wo&g2^E{raIu-2viwpmysp~j!(y`*TqCwEXV6)Vp}4UER|UD9DA}wPQytxh+p@}T zQ2I_Xel_SkZ5HR8@tL5PZ>kE%gSm1zroI{41Z8p19+UDb7$BSwOn_pm5Hp5r7v}4p zA>g1?_HDneF195I=rwhTxTB_d>#=_~)pxFk0mXgEeOp}#*OK*zYUsyEaL#mE64gE@ z2RowDzYP2raI)n-qzdkBAG#hrAc{PLMHEUzb*`G`3sk><01Y4i#t@x9ThJzb6b~DM zC>)Z1WC ne z5fZKGk>DbP$ctFmavB!KJ*Sj$Evw QlU7Qz_ViB`uc5-a z-n$~w4(#wnH*!=iGAoj`d@1-3>p72(s7MY>SBsl*Oj;q$U2fL^VGxjjV^yDR>TPtj zY`Jt;XG~ZLe=!~cP66yf%7BfjMy}Q2*NmQ`^1zs0>x%KE3`kR?BAR?HBdNMYFysQm zV`_51a+ik~>4Ma7m&Gr>MA{!ug3h4R@tfD zb^n}-2kt5Fn^lfp-HyW&BD1tQ%ey3g#sSz_>x0PRfLIF6ph``MCJ6|kKfqpoFfi#S z*YW5kOJ&xDokJa2m5-!Q<9JkGWGCnICuZ{h)8T+BJAslqNeF^7{fg5RfK_n^fepme zK$=IA9nuVEAR@P@U-5dZ%V%dxuA|^8{%@fYi~NxcQW(ykZo6%j5Jf)*f&ewoy-Z2f zy$R8VL4B1Qm-g!G*yydW`<5aYjgFiX%Ca#!86X=_&eExccF0QcLu%`+X!J3T_ljRy zZs(H1
7n4L0lD#p~Z 1CqcskrAgYK&VIj8h~IA}4cI z5h}eeW>S{Ky(Jn#^(d}y8Y7DBW?%w@czpHGrlK8*zY~dh?nf*E))lSA$pm8$P-s7` zSgJtcQXGha6 TOr9KV2HoA#{o5Uj|k(ZB2F#A25bW}*URk~sd+LeeIw zg)IX4*L=Z+*%KoixDlPQr@BhWgMNae^!@i-8X#O4At?;>Etp>L@qsVdcMke)`l&eG zrX@y9zyCzexXUXs1)&uw^V>(tC(ieeg)1V?gb&IrVks&?y<{AGm-|paS`?Q2okyOD z3+$b^*LC*ZW^2SCmY;olu=*7KPiZ=0=_V>9^%izV>gdjQ3u_jV=hE=6aur6h0IG=c zXh2hOE6>l3qKy5D#4EduGDt@hq{7sY6d*vyQX9%Bb#N3$IA&CRABCbeQsJpox3$~u z7rbq&i333vp$0~cSid_VwRL3t6Qh2UiZh#=?4)XjSgosq(uHrZCkoj8>++DV%nLy( zWCk(HKJ#xHIS;GDC_lc9$^g(;oy6(1l*lW6g!uWwIPyECnZkr|L*Al55*$UVIgVEu z{O=_$Q&f+OZKx%u{ok44mWWh%)oyS&OE}o@X!ytb0$vWKyTt7^s7y|#J}RJ+ zO_NrysY}^uE|Znng9vtf_|ciUD)W>|gZ>m+D%immB2fp|O_J&`KU^U-RJUo}e%)V( zvyWdHzb`^mH?|QlduLM~S*+eifDtTvKUw{$!*Rg7W*6tO_T7q!DBWx#%1ky1eXyvO z_{l9*ID^;ux}JA-7O~ZmDj!#wQS3q{HgmRyEIa-z>cqOPZYGbauN6VnS`>>8Cig%~ zURWa_@7-AuQXK_P>f$kgOz~eWX@pFdbSp|7L9$N;2 VHjIiKBN;NgE)yMFUg1DbB#=4hkDwhs z!(rChEg57zv7zn0V0}*VF5|*(b=Ynx(vfNoIV`+)%F2zh-C>X&F+Y~nAAyS)U4Hr2 z*jMcUH_YZbm>gE;5L$$gn@B`^N~_3Klx7ea#HX^2C2LJ5R`r#&8LSR|+bza zBi;arT*{}^PD(@E^jJ2K``=uXhr4o-jcU;X<{E7LW+EA$Bfwjwyg^y@&&UScM$fw2 zzR9{oAnM>tPm|bH_^gn?Z#PsJDSTdlv%c+k*YoyYEONJvAz*@|1}8r>Is{NSJ#Fta z*njiFfvl(CBIhmsN!r>VERb?rVU@toIbvxI(I(M(lQJkWsop6S+)N0jCRkE)?jMF; zEnya6C4&M&eZX8I$BK56r$9Ua<{gXJd`KsW`P>x|DZv(1*WenuNUMmEZ~(hYub2$p zd6IkzG+IVKt1n&%Fbo9x=M^w5FYZ)jl;)5W6XD56d;L3RIw!~O!4t;IFtC?4e8s!( za`nnz;oQIzR<}bt6J&GR8}BZo664}ulLl;il>nQNnRV&z(rwEb9lSAMR*YN*;!3DK z_exh?0e`oF-y;YPD8ykJ!2s3EDQbRj{^lXoobk=lZexIf-(?U#Sqkc$jYpaF}V|K6 B6r;3>fa^a>uEA4$2V)t7E{4!uKowEse^YJ=2>Net4y z*rZb3b5P)Nxl@*9BnF$^Lul~Q6(3+N?~VDy+{hISNPM?#*Gqbw9XJ7d`L>;P(op6n zs$~zZokL^>41fm)nDU>4=8AmNJ{w-szGx3a7zPbar_m!i6h9&wtg&@lR$*4B(6E02 z9|LBQ*+cNCf2orJQkd`RqgvtMf?Ku2<1C>V(gFMcpOJg0T@P7l;GoJ5o;|0Jd(Aa;AG`~f|fF(pn?a-0TbN3cG=zwCurL6Le)f_>BJieEU zNlRS$<%iMa`TVeRqQkK-$|*QrZ8wL?m~r;h;!{nm6ru0PKN<%Jia~KJ-XnHsQ&Amy zoXrTdZ4YM$*%(rj{0PHnzH$1|$GWm11dW*=?}o5hJfe*sT1KNYPB^4C-~#3ZU{u?a z4~FBGurc`v?qA5kTqXn`z9lXuNl%?Ag~6~$U-9jHYpHS=KX%Z9712 4r}`J zV38X{40KVqFZyyqYz(3C3+x5cb?Eqez_GiRf`pWUh1R&KZR5A8RXWz%>H@ES#}6Z~ z8!uAwSg253cX4qha+yzFfKOnZcs$9(h9}a$u$ChgB4ITJ1WFu3+@t-_d-%|I-t>Bm z;|L1ubUS4lEH7M<#6IAhvdu;}Z|%Q;6#F9-+nrmywk)FJ>d9=8y&ISPBV2}4jKtbJ zUi^ES!u-xTNwVgHQn=AIzR<|Z0}qjadal+-;r7khb<6?qth?SATC6||bSgg9%_={O zGTBAOOZJ-VVswSJ3PnP;A<*V4$@RRM)e2XzO1^0Tet>*`(YBk3_dj$eDaY?Ymkuex zG!01u%rTKeU8o?u`g7EG!;AMyo$HT=r^H^c(60+|Z}n>R3!B@VA1X2kUEKIY)Wq1C zT+gKdObkCzW?gd^%A#+4jQXr7`p>N*%gA{E6`{C=7-1R $TRom1vPqb$ShhwdGC|f7C8M+7s7p%JBCw3gpnhP7 zHoh*418%+*Wj|0XmM0nXi#8fcC% t?KH{GZxLve`dkhX? zFr$C`lNm@22G0;M^X6EC@l}6MbP%<_4II@G58y l0ngI0CaCwTq#Hc=Xkc4 zdv&g@C8D33V2)RHJMln3`6a&byyw5;M1N1QnRpV+{E8sgH8!h 5j%Xyg{ qglcq?Qb=X2ViM3+(A-F-#97v z^xkZ u8_vPmJ7hLD)AG|8@0Wtc_GSwD zJz`$N`mzYxuv#%bxGmy7wGsEnPZvr@au=|4`ln_c-^z40qV2i46m-x3hO(TD%5F+T zg~-njSdf};roclK2JV@iZi>uJ#Els`(3g{YB *_2Mg^PH*SWo`Fzn$7M0-+%-K{#PWYS89KTk+ZLRdjCLN5M} z;}+@m&srPJDi>?k+TffU8shH`NV7YWB_hEzbtEG{xeGX8Nahu#H~1cBzk^F)Y|>5D z0H#awN*_R<1q!5K?gWivi2|8?%E{4 v0L6Ro`NM zpy=Do)sl#01h69QK5c=^rbt@gCS?i0b%9IZ(FSbH;tr&X!lhJ3&tY1L0H8Z;BX?!7 z^!J~_Zr+CLS|*|Mhb($IRYM{yL>*mtD**5HmgTm>!bK9ad2`W}xrA1v 4&I1Pg+xpe-UZe&-t-EOThll@DD#8 zF4D~M4gO?qJF$Fv$+fUmmW9E2ik+CK07mAiQ$(3Od(8Ct^4wDrGbZ+cDLDrdO0kx0 zX iFt1+K9eq@C*&1`GoVC+uSTn7*9K2`-)gxgTMn_- zZ$SGrsi6;G)4H_nrNfwu2lVHA!XK@sJ-PJYvqR;E{`O1M)9a~G0qRcn)8_$Nq=3$4 zSBJn2^HJ;12BWma*b9WI_9wa`ZSndG$J2LNB6)80 pQ $JqS z!qJciquhJSPzqIJW$pKryFRLkVKyM?tL8$dJ;dQFG31>B^jSe@17N;QMtr=Twldvy zUjX=fQGt3 l)(27 U9$Ux$@tf7d+h(!)H`su9Po!a$ggvV5B?uF-cTppf$3*N>y7KK ziwEm>b$qa^wyPTFvfUM&3#%AkZp(|N&(@1RQo8`t)YjlM60>T?dyy=efeVV500imY z_vK;`3D`>tuR11UJsSZj28NwKRDRpif*N&A75;jE)0k>L?2A%BV-G7x{PT9TU$*`4 z%Fc3Saw>8pkK4vCt3Kpbx!3%^n^KqMoAH{Bw?!WZLIbu{ul6n`4r4|0hnVC&iQ nH}5ldd&{2Ww!>`^aA9*H@-)nZ6Hs!(SLZAI8W>1ZYPD zS*i173jDl{I(J;M__@c`bVVW_tqwc2(+sc4v+yp<^d0;LhV6;od-6LW)i!T*Pq31) z$$yh>2Z1lwH+lnYQuVRcIb hK0{RVIGsUKi z7fZDlOO@uj2y8M#B@w!wJ5Q&^tybNna|gI|DHg5b<7DWPo}cjpXQ~(2u{&s_QHwv+ zi1rA`?N8Po4TEV|cH|*k6Y5|bhp(BhZjkS4e$K-?7_?|i8)uvAHrab?y1mWP1)~5u z*dY%tU$Cz%oD6pVaAcC1liu)<#KkB(1sXG{=#Uy{9<6-PaV0aA-i*rb$A-AJpRr&T zx#`z^g|PRV|D_#cB?J0yHsKoF #oEFkX+eDaHEu^|U%}(x z?-f=hgUm;GfD3HJyd8cx2aJ<=%ehf9MCU_)s{onFwq04xyU@?aF3|7a#MuO>`Lkmz z5{oNXd#OSw!{H%`uyVPU-4x1m5mK8B*j|#`lLDp&BGaJcl4!mA-WczVnug^kw2yiE zqHojN$$8 uv~Hr#5fM%S&X}u9Z&& zPdiNC8zn6RV+hI4i@c^*0|PSAv3rJzxD!?lr Rfq zVV~K~F)x1}{u(&?H6Q#|MUMn7Y)7QyncI{Ya?0Bny7e#~TE0 Mj;w-Zl1OlutJTB+a9=>}xhun`kUe8`HJ z*3c0l%R&=LfUhqKR{5((ZnF0C%#Z{iTC9XfHwH^NjsgnD*4@#zoceKwe|6F09L;@* ztL3|Il!o;G>O$@8gxJ%OS|RiK9ez5d;Cfy0`-3=`T (J; KeCmy0b?GNqcq|IYnOm(fy~p1toM)MTdNVHGH-GMl8JDl7oSo zA@sUPAfLSA>OEk|L~bk)XcP`{LU?+e4*ZT>oJDO3Ve!|ru>pOC_YzicQgY|-56J|V z>0qAoUFzo|0 e|+OaCx6CS*&s zIQj2u&+3K)7MzD0r-ztkW2n9c?8J2!x(Gw8jc=m8i-4iC9#kdPsoHI&6fU!kmOL@* z7(K3MEqT9U6GcHYF2vN_LOG0 z%lBg0(AzpRH9g?(km$h)<<7K9p1rck9Er4tLGtTw}xoOKzFgg*Vlg z?DbVvEC7$L8|PuWn(@c!o6eetcflt#0*qlj!_+o5Zr;GaP tx6dRQH z&~WA}nHjbSNB13^Cam-NzCbW_jWhT*ZMi1oPF5R~B{CL G#7t z{pt+_48_Q>4Y4%;C7GaFLpxN51%6jG6o|=ka(_I^&F<|PU%+mMTz3Pl;^q A+kq5G5> z;t6nYv rFVnw+OzjNKaVWW%pBkP`V`jm^u)5}>$$YGl_3peu+{ zzRD|uxKO$aMZP&=G8Su~5g5bg$DI(hzp1|Pwb}-qL4$}#paP;Zr=XPBzfMRMqxX6N zxr`b*Q>A_9uFOdc-&WnNA=ke3DuPbU?3J`ovqv)9-QnW!7}vK`74zqei^^WI1caAV^KM)!K8 zLuxPCXl0PSCK~|&k5njM7SVq5o4GoKx|+NUWYfqoArC?gL+@iCQa3MKzFvpDevn&i z$AYcEE=UGYVdvDIlLO7f9wMjnMU0%)eICa{@TGAAr?Ut*`Q-#rG?U!C7t19|ab>sY zxT`HMm5(bs&-{4D@OX&;4;K+$nMUD-u^v{?c|yJlVC#G7&gv(%hU#>+tV{vmB4jh6 zP7T>(cyg+^O`PW!dWf}7xA9|$@`u{@f+m%D{owV0cC7gyYAq-2sXdzmc=<;BmZ zO&MCA&Q1?{QG^&n31>`v?W};PPGU!97>PxdPa&Y+UPH!Ra5~O_vrZ4U`Ngg}OZh1{ z)|-hm0mi+l8a@5rz`hC6*g^7YOUN;P(A>FoH=$Ud= {$HKEC&>m2%*Dt$a zEsBB2$RvO1X)y^_KWDbr*{W?jYGN`QL4=mubO?34a{nraC^ZZ~ESiOae_|Y^F)AQ& zM!iiKMKSChkzmOJ+#+E08HeNuR9)&d_pjhTqIg<0n*IzuTwEziC9}O%f5O(3VDEGb zY>-RtSn%rC>ycn@Oh7djNqO=Y`vi;YwTd)NchT>d?G&&ndktShk_5JH=3|+CvTXo- z8sB1Z=WyFQQ7;5USB>A!iwUIN_)E|jF{ph!iC{XGK^Rm4a|Um6z1$tPDz^ub4R8so zTSXk(lqVUuNS F@uINn8;o%%b)YDO4hlv2oyWzVp+q`VWUYR6ao $hW{SNkfR3we0Ye?}L|pSc FwNj!?w#oWFnxXI|qh@uV1d7 zZo&R_Zc@(i=IaV>=50XVRyn#er#SI_H|Pl4sTvmn6l}S1Qt)~~VkO>A1#(y-{Pwwx zb1o&=^f4#T`Nrbb&uSbCAJQqQFqg2)%7;FdhTQjs&$|zoZIcSRDU6L%?~YmPR2zoZnRdV1F(!;QlR zUBSo!ytAlRW5pX$sEfbvL#8TZjZ(`haDHjK6WvbJ`Z&5vXe74VeX5`lg=iz;-&3xM zXb)BgU+BCqn8WelMCq5tH_Cj5FVf;1F!$`Bm}Z8$JD(+Z{@PAMJDn4bUdpXDBB)S^ zRpNT 4haoD*$SWGUK7vqeS20XK&FeXFJAc 4{{YAIc@aovp!Vpyj`qh?zh*^l$b`g1 v-e+2XSZUG?@Am zN%veSf%&XL9SiHRb54?{Dq^%m&$9%JNiIuQ(OzH;5{3LKdpAM7E!z#R3uDutL+AQd zzKxTQuF$dy?T*vYC$jU8so3Q{hf}K^0Ei!im+Q@o(ES6Wt6L<2bD`%d``61mK;n@p zqfXdp2h_!~A>Nn>l-TAx2Cbqm#>p(-x`Uj}tZ-ypN9pFpFCa@L#>t3OdBnrGp1!Hl zB6n!uqE&6&ZwKw-5t4=4Nc;LssN hfW>9dCPs#tmY@l|hTOx@KKqp_r z$@&<9(9~KL5?YSTH=}*5r3IEIm!VzT>Ua16@ GF`qK zvuJdx^zqkY0b6gDH44A@33MlC98^e2r~Q*iX#!J0)x_2;?$6~6f^O^dV~l1aXCvAb zFN|rtB?_&n=^jSu3 Whz)MZS_$tMVXgE zutpqRw&`y4SqvO7LPpfI1Ph|C>;}J~6Y}w==z6zVeQ*uoL*kdug|pm^zJ7#n+{u!$ zuNxc1BBUqXOVV5b3{27|Z#&V;V&}3k9YE_ibt)qu0YI|_d+{8&3dUgCtKa`N`;cyE z$zlc7I8NU ^KEg`3z663Ca%?-apPoKhk|Jy z{2u^ZK%>7 nm8K zKdo@I&r*K!;^QvobLulV8kPCV!tv8Vg`7pl98EgFc^{{1Z`dW`i!b@`>GtOKaj5z) zzD(hTrG`5`B)iSgKl7k^Rq#E$SM1`NM2&7axMe0ngl1i>*`XOk+%dCJqGYTAo5dv? zK7|osx~sR_8ARZgnFxOon!35Kx_anuU=sTbKIxB> `XIV2qyUu8$kRD zX>S!Af;_Jhej2|@u;^w+Z-q*V%O=A1x?0a<%$2`MEv^F9+N*y72O1wy=F;CT>6a3f zln1CRu#CYrsc_LN=Ux|x@b0h;6zk}&X *eBOAe8&Q%9;g^?^J3AjEdHMPTjvjw;-P&PTzFviGH5@SP2geKq z4*?9u*UPU709>pahv2)hol;=5eYd&ks?BuQLJv8NvF|oHcX@00y9tK-3ftwo!&cmQ zJ<4^m3MwOD ${C^P03>FVd+Bs8Z4@Wd!+ncO z60?e}mQv-%{!C i#K_lG#@hbz(52IOf&cLJ&q38y8R4yLfU&D` z>s@SDd0xo6_|?J>?B_btlX44COKwPnmm|oS1hId&7nE634Y9V b1z6I~@c&@J+2m^R$evxItHxMK^ix@H z#qyEjoKXu#a@&9|g}Ow`@#3Nq8d@%XrjBG7ON@?XXz+}K$Kp9!^;BCxfmqivH@lqh zL%e?#6$@VGlb)u9C)dSvwky@AY7H~83;DrIcK+!c4b;BH++6 !E`Jp`S&Po%!d=Uz|)z#H%TINK04kjeUE1ctPBRo0X{^g@H{sU|`+T zn%=odLb`gGKg9a}tP5z|vZbi%Vdj4lBIE{w(zJ9D1QqdS>b5JzC5e7oNJYH$QwTXf zTa+RfK~RyH*ol+*VYD_cRY>4t)jw}q$nS2SR>dD-Dt(&^ zPbK5O7~oG5(9fI{zlt&tO5g#Bi3r>0O0dF##!uC<+Z_1T(&84Me8QoBuKa)HqlJdg zx$t5;mH4-n@KF2rl^BEDy+HD5V)p>i?ac(qLD%lFpZ~FX%zn=* jN%IyJ` z?uB>YNmZTu=iHw!IIpVuJ3oK6Ly6kbEhRv;f17ktJGi~|hHP{` !6V6K E#pj4&mfuQnyImYsHikIztt@2si z; 4 7ff$kT&NU2&r@bR z$HeXy1BBWOpDm#@VxMmH$`NfV*pMO6oJ~|(?zwb-=>qjBfWwd3zN_1=4y?p6p+>)4 z`JG!ZJ~EtYKQC0}s>1wX4CZ5 Vur*MB>aB_7*E50`lNFP1lzY5p0 znx{YjKoz${EZx9f9f#YY-PfxWX63S!pM2;;wYrDpX10+RAQKMdC|-kH*+5=Cc@p!J zgid#FR8@ZOf>j7l5+9jv%gy?VxAd`DdJ_S VikD`%OsG-uYFMB? z %pE8 zg5mNyCVks(>V}NWt?_>k-mYzeuldJ_(q8=apz?n=XJk-e&i{BIgOBRQfX>Ht2H2rV zjaz%DPhRZA=#_)~U;^XHYXy!RX18`jl^Nq+ EPy%0?HLE!gLc} znB0Hl< 7)$tyv4**=3ww*TDWrRnZO=TA6N;Q7-Mg>L{%3E+QqZ%!fr zk6e4au>jlzWLysCK*2|-sFlZu_xjPdr3N}~goe^JK&}9AC$u*n_^BFpaQ#c!Y}()V z*}m#_b&p#HMDA7$HH@1B^ttwzH!g3R>?MC5#6?CY_)|IZ)U=md=jkGdkxhZU$~q=X z?Qr9Op6Xzi%X*!B=AoB;;{A03WRi(y`JQRoR$XC#^)g;?vmd#cb&-> 0e_xg_@ z*WLXQi0 b_Voy7CD2IO+ zfFx{b2=50+I8BWg+w~`S?ZJoDdGUU#^_5gO;Qc7O=`q}==wgKs+_ YF@~8kk Pmfj*! z8}@n~Ef;Wj_LYU{nS3RYJX@lOPE>!m`LlRD8={C+HiG-1m}D-Eu@(3&9n$#ibb)<| zXU;xiR|MS)XqzmF%baM$E;|YcngI!P86XR2?AmrmRKZQ(!T&C#{%|WNR9J)VY^wW(Wy=0f#X4HRGH@z1Q z$S6IwZY)R7jHA!+Xkg(8zaDHp8JsDM_iVJh5T#GA>MJKCN%fYEp0YO~Y9E+c<)L B+FPHK1n8j*35jg&KsJ6kiE++)a<1gZa54vx6Rs5b{f)8%`PGD(*c$p6D8>|qJ zLZf|_>Z6YUI)6sT|Gus|7!ZH(NT-8-rEzPa5w1MYmXx*|%5Bcqf`Dmk1^*@EOHAOz zHm?%ydxq;wfTgG=W5|pfW@osn1pHzt=-Q#h%bK1dsDJa5E0fWyHpBPj6wkxFYu5)D z?_9z{2{YJDe^bGQ8`rC%!-cKYPnlST2WQjLwRE^{wnE8Gl#39DM;Cv5j5LNL4cg;U zehOf79UrU5Gy)zRx?Nf*Q7SPWGo4I0UXGAFg#EsJXvECW8I?-7=VEnt>Ao~jFJo0o z4!oa3F9zG2)DtuhEw*YZNmNE`$&}ZXiQ(blx99(cnIhBh+i~vm-T(-4$T3;^z%x-k zp^l4_S#43Rj^?taypMl!1w}&I+wCe*52PKu^wWs9Zx$v`zv}8eF8j15Ty~e-THWRv zm)wO3;9}5|%BqJ<{756xbIGcQTzbAV;e@%1_P&M TWGY6i^4NTd<=2)MvOT z;Pc3 Qo}ptup(He zwMXcp8lo!%aHX1ex 9q@A)9c{4`g?3twP;4T3D?S<#Ck{l h~2xYXF9NTjP rrhGj&?TP>SZ4B74_s0*Zs4cl{%Wge4w9F-0KqF)E 4FP||yU%5gKoE^y7d*%}kx8s6Xy&X5 zVrO1=!4Qze&b*#t5c~7GlWu9LS05|&Ub?((570G)-vT1=xb-d?9dqe;hA`YLz-E0* zVY3}A13%ltJuAvTu=C~*a(kTF`~U?fq}+?g2KsQ1O9Kp=dvGK<$aGV}5m%9;;X z+TDLD1o^YM>cg2A-X|!w{osUMIyklzv~WAI5=M!)&sq|lNFcD&81Bk7!omaXld`Vw z?y9bW=a+It2jg%?SzmP`PGhQ-Bn-^lT5FX|?+XCmAe%0v1w1F3@%^zWa +?UsgnPa!oG!xDnHACer5 zA}{FBhgI9hdu4uL?q}d`_48!k0s6@r<7`5p_osJDx;@leJs1aWR`7SK8tKmaFmQh- z#NA&^VA08~0k%cjRA@ES10R{2tb~K01O$;& DhYh heDPGj90N{Icbgi=alxy6Rd R9 zu&9e88RB(}-osur2JwJ< (+2v_Vp@L-}$5SyDfja$0MphfLsCa zC-VsK0---lq1{Tf1|qX|PzT1y^-w{_UoPhYPXYFkYasZj-o9KR2A(URBkSbLSzHp# z!>OM;Kvhm+)z31ZPD|b?po>}b=h>;oY67~_#@$;QM1LMZkbgAxei0_2>B5WgOgZQ~ zRq^B1#hU;*f7LF2M2~+yNdSMDFZ^@vzwkl_gzzOoHf<6+Uw?!-8TV6f*!K_*-frQ3 z$=gGBn?{E>a=0fm`U=)78!|x7zG9)^rnvl$A+{~OONW5rd+YKW6A8135xLZ ?CEU{psT{(5L%@T0O*%1y |5-jLDb#P-Kl|4GlbV$G|MSiFxp=yw zD;GZ`AzptNuzK0QfDW9_p~WOiz=<5%A7^eT^Ds5`W5u%*=TZf6cI?$6gj}rvngsql zMK87%(C~22uF-X`Gw|nh5r6^PuIVg%5U9%O&xQ*5-o>0?#doQTOtq6rB*0{nl|r!w zZ=AWXBYM=krDNo{koD`OOR^X>;|`yT9HU4g@kf6zCemMg91(3eMiA!D@f~_o1>pch zaK~+bvGQs(O)YL_)MM;Db`(}sjn9Er{A%i&e zcM6G?*V3Q(8 z%MAME&AQr)gRJCWZ@_(9!+Q|OiEy7Ckf6;Kt(K=~q4p?RUQm*Dd6a4+HQRdi5l6nl zdstk|kblqcyDvQD1#f5df`%qkwy>cLPJDk@Qj|?! USS8cfXWo_5wj8Y_&KL$5u`uHI#n`c^(n8XL%FKqavS#yr9R*uRv;|ObV@X#rJ&K zI}0g5sV?x~<#^W~BvqGbc(sW4g(I{8@$^-%IFzJd`odSDOyBs5BU;nu0E2XJE!Doj zFMMHDUxB|u`!{GJS`z~y!^0UrtV!@0T2qR5aKGXQ{w4-n5Z(s*HkT9_uN{9F#=97t z&dy)*DxigjAtDT?FykBQj&&)vp(o0IQG6aWy#6*oesmy5#JGM;7UKkQnMcGZ*?NM0 zvK9kFJyyCha3_zIM7MQc4) ->uh$cCnVy7H)Ffkb()5v2%D9oAgt3 z3dqf;R@ T(Pl5}`CCm%in%D*+d=oWK%9$hkT*^I@ZmvLXciIHpLEbzF+1E_bGWoRGMc@g{zD z&9U57ig-tySZ_uOl9OUfP}vx1NJ+!&dgDTICxuvV+_H{K(WKtEg++f7#`kRE0OI#7 zrJdw&57A#fpUKhx$^-0|p#qt!Ljp{NIH3(C;{^m9YZ3T5gclQE&!PnVbX5YQiwFbC z;3s|W#fOur_0R@B*V?J!C+2*C&W>SfYE?9jaOOvMsu@iI#9!5P9-^MnBtXPa6Nkn# z0c{4SCbdKmcI^3&L@9r2jUc>R5UwvBcur!ak4mR~Gj=Gu@I%WReR!^B7Ymh3BETC} zyU_WpJP*24jXkkDJ 1Eu@vGaTR?s%=vZF$!UIg@2p?|B`KX zt33@TN7F0m`09URap}R_^=m37nkvkT<;xMKf9(Gla5Uy$4RjZFeS0_HD)ahD2rQW7 zE2brw!{TwHhaTKVJ?el}mU >tm@^Hel`utoP*^9YL5RI?aaG&CPCE=@uIWlY<{#N1K zO^3^w)J@L!Qi26fa97cFcKaB4qy?yYMH2zR*O=iD`R${6qV?L%FnPGeFUq^a=e+D; zT_e`#TbF;`x>&cX!;Uo<{88P$-PSALNK(9L=NIq)lS3>8gy`;>IJv-i=>U&Q;$0E; zdsgfV h-}HNH+O%$t!+{yL%L&f-IUCd`Z{_u_U( z;qs^WVw;OhIs|pFmUGKrBf-(TdUN125{g7M8Yj1Km?VQ@VNp1QJ@jH((?Wmr4Za-- z`mkJbd+`KE`OA^F%)&+t^7H*K1{^3m;NpKjeWC(H$OjyJJLDW;F+~ll5DBZi^)jMC z`m0*HP>B9&s`>dqFBtk(rG{_0zBIlB3C)_6NNBm5)h ka=KWN2ag zuYO3)AD&6z_Ez`@NqTm(dDv&{7r9tUA{_(B4|{-=%cQ_&c7Vw&C1y~9-ne>Q4P}45 zO$}J@UoHKw#)v`wLvuvs89BeVz6NRGeM0TNAciRo$G@tNQ>xpt8*nB&{GqjlFVI%b z6@t&Q4SZpuc)99z#k$XMxo!5VjQ<#q&tydeyt*@lTqC?z$Uj{!G_qd_y+kc~dQ%{X zbmgs^yEcJJ*IIPEvT(d~&b4X+EcSnbH51HXbuY%iwNO*o*Gzr)E_FYlGf`yaVZY_- zN4@U-3lB$B94+vvl5hgr^`qMEtZ)x;8&Q}Z;za|x{Uk@Vg&5?n24c70WGcCzf$(2i za1Qdr-CbXl`~CJ2Ca1A)F-mX{-5~IS32xwZCLrLrj|LaK=;;K)9#_NYy`X= gSX{h(J@aBJw`>L0+@Y*t5PU3M9=_+S%T5b#Tn~#Y_-<1hr3Hx*W z;{)Y`!7 9P z25+Xa^`T2VF{Ep*TrVZq%R?7DLH>5AaT9RX^`i5kQ_h|Kf&feS?Bl?7^sCf5%DqH2 zea9h!H5FFrCUn|0L%seQ7w>lW$2n$KZ(zN%MD4;&h`$mbVfEZ7okZb#q4kIe&syky z4m|>5y7{ b|X4)z4YGADr`#$7BNF zf&mzdf+0vQG5){a-fcN-Oy$SHgy* 3=$d(f`fmOpYe*Ci;e@9Zm{k+qzMTu9*g$5N2jt)UT3!jA0^5`Yq~^@#z$>6 zyXC_+6=Dyjot;!6nRkb(%DTfXJ$BHOE%tc}N4z`Y!H2a1B$JS^nk*sJ!3D2Fq#@O^ zqM}-KhDKQjN`N;*z*v6NKf7s=BCwn!${P!GNRF7COILp&4aJ0Bh^H<(a5+P1wqtR_ zgoHpjMueY6kRb`+M{`%UT|cv$1+N^mr)Tf|04_u>A6c4jg t7=ixO#g?&`}7c~S~}N|sdeGS=aV{upGG31wTZ z4E0X|sydyd#(6D2Ft%*5H)%+KEtoXL#>#WA6ru3mi>r*sl)`II8owQ2d1?1;lUjgi za>f7i0>co@xSt|LA{C76GzgO*;9aybpB21plhc1x+vW+*2bG_K0z^9btVlEUgO4Tl zc^Pm-ywDOq>17^}q`b&&j&b+ot{s?tZHrC05B8K+!g8=>2PR;p`RN4FLoYwXEwK){ zrLA0MT@A53tlOf1iNN7pZgV%Q1PF@_u)yV7Vx9T9JSxF?Btt*Nl)37mI>2D)wm8H% zw_|_%)Wj`lj_9S)xpS#f5tOxlcww#~W@tWSGZ4_{jSwzIxQ>y!($Re`tBUtG@j`eq zY$!n(GiAIUp;?G2Is^n?hS^dX!UMj; uo?h{1*B9!Hu{umXhe;7 z>|_q9u~cnwaoh3{+X?&!G0(!2k7qokj68q0DVVT1)AkMqGv_DK9M1A`Wdt-(jIa%c zs^8gnGr0JKIbzXC8)$xQMRiDsx>1_ae|L&qURD%}K~&&e045n24H3 z;}EiJCC(iLepw0c#6(KM`(RR{Ys5(^nc+}jE9u8>lk?`NX?DC3gb1M7{-LazuGxP- zJcp>Xt!()KfEfU11bL;d_!StRQ@Kr3@#8iB?B`3liDSZ)n>e8C+h%*%%%e1HFN`mK z%3c0>5Ikr>DHD{AP-H?~x@r9SD3;@)EBFv9>x#a&?ivaxqfn6q!W77R8?;}IjE)H- z89Xr|QHZd| F&Tkebj89iU98i4WV;n@!rOmbRqLbm7%O7;e zBfn)akKB}P0G7!Fnd9{yGq-u>+{YY4-R4Z$pAX ws(BUa8l&ma|WL<`~{p%5|H;=nu=$c+cRm8$DCy66G)!` z{FL#Y5wGI<0%zV&(j*`PlL$1K|N7$m-C1^XetGro^yWPKkMqB+Pkbt9c_Xh9sij%= zUfTOe+Txc(*%sSG5^0uQOM8DGNz8b5MBw$my@!Xf?GCpm>QeyyjZCN3mV}x5!N-!& zdm0fX^qn+aOmU5Pyv6lU IwuHYy15gg$I_;1PPRo+T}GKrDVPvF|`rHaYLn8lk7 zUXQ>r7yIY_0cyiT-?Sxc-r)Z=_lM#n7i(2=!V!1F%Zuvt-GHJCBDsGek{d~KCP<_& z1}&1w(=>5AzPzZJPNM|P$!OKo;L#+{tUOMh2vnVp$>on|(v`{&YNuncrHRt2VC8m5 z4tqAGO4o}alA$ZB3ISFaJMb^y6)LaApPF`ilq_IW8%QRZaGg^yF~xKfC1^%Q#g**t zMgHQK7e~pFynM%Bg ReuKvs2A0d-?NJ70bTMRrmj;Hl`bGB& zNY9Y!^%Y;r-g#d2oQ$acCLrtMs#jLR8N#ItJ=6oxZKgfpfZBg$PeoQ2#r7!Kkly=H z3m^|p+9MBpDj4#tBE+O;5$-I1Ov~1&Qc617Rz1!~$RRvmM58OXl1|oDH1ESw=H*W` zuwOZQqP6$s&M#zM=DPl{edd_KEyU3oK}3d#?*|0w0*}(H3>7YFR(K=wl()F$wJq-R zmO`Esn?q|kyw`uHPBs(*jVUyy&`z_Dr`JDS{PZTfK7Vt1eFmS_=c^Cb7dL+k%G3+T z*ouIEVmCvdUXnIoPHo_+ijJUWsw7qgMiYeB=;uh!ZnqlrxZp_IuUk{Vb+=ddP#O79 zcYS- oue@|2v5 Q;)LX{^% zl7ai`u83GscJLz 3&NLOeoL )e8_*gvVz#0yRv`yeL&Gq0Pscvh&KvAm;sXg_UnKD zgve`s@wZ?9C#XkEw=2hH__>>*NX)e>=V`(@wV{VKJ@Re>oun1#Fl`kiLA1m4slr`5 zy`@J|U}tSp=i%PBO@d*pKZYr31JfN(3?7U%xoJOh)$O60b#KJJBY{YKh{%5kQEZud zEf{|qF$NX$5lss(=k}ZDwycZ%54 l)fvhNXM~ 2 z${?tTLeb$AW^f#C(}MOiLyGnWTA2G;ICamURi@%YkPQ6;Dd1MV-?vS^ne#NF?;i#8 zQYbf5 Zt)i zLIowM#NW6f*?>$~%3+xJEn7QAUy?B9-Vb=ZH(gW)T@S(0&6<7(=jerl=1{f4)?`1f z?-j^}{1mTX-xY^#BYrk2JX#;SFS)_<5^)23%`4XD1pZZoi1;kgorsI2;nj{nDiRCc zT6dI<7LNNm^nFvGz`lPC`WUN%+rB~rx%)$6DfVj&MQvhwCB$z28#71k{cHF1GNn`i z*H`q$>CmM97vIWpl17p+>#69fyuLrcjfQ9M>7nc(!bWp@cjz`En=v)eP>96DhhAVZ z15?&b@8Y;U>f5F& z5i-Q6)E~36x#c zJfV|zTG4^kIk%coa*8l2BEpEt9}hue!zc2bPl8tf8T^pJ4^tMNJKRTK?>8y6@r^M1 zX}?MCl9`n7nZkd7!@)9fjopM>f#BIP668if!^twvHm`5 bSwQD#8R$ zPiAgZUIA~4y8rgO1Y}{8X=67&MjefZ#^h+^gv4W=f-~MGsI*woUng?$WuMb|)#&M_ zrWxty1VRNwE_G@aQvjVicnHEN?>;}=r<5h7e*^zJF;jouC<8j>Wg?;uPF~$mQ6> ob73F|hHoGl;zqBb+@_b1FPL$n1lGVIwMFRiG+1Jp~@1$hmj{-VgXa z$jl+uXkmW@Ai#A}g@Zg4hQLB#k#%V6+q~~9*sIyr8LiCH71e_UU)~6ZwHt*c7cbjd zECJJH)ooUQH$hIDWU*6+|6FY$O6o4cQ%P<6`3P1jPU=oZN!{69ltyH-v#&NF;pG|B za%pvluU1#p_9HY2%6cfd_?J
J=W8A#bm`B^oIi!zc#3}!m z=YQO{<@O}MZ4N#9Vea$(;jXO1USt3HxBvZyn~Ft$ut)b!!~Rr(Ua5<23Aa_V`3xRW zWgYb89B>OmMux9U7&qItxXTY!pH; cV32;A2XiK!V1jJj3?iSGriO>e zThbvJ=P&tCp>JY_Gb2s`gl_~+mKs3kJ{q^WVSJn90v|@vA@kQ$NH;$%E#-Be)y;pl zcnR-U7Ci $RjYmH5kg-ejjK7G(%ss?P1@u FA*_IdmIJ*cF!-%IJi23E zj d*rE;@8uAE}_pU>P6!v4$!r6F9;L_&3 z_~3@0SDPDFR}uAe%R4 S3ZmPbh3aBf2Un`kT+X~7X4fZZT%bTr#Y#Q*V zN+IM;p|Ao6od1m<-6V%S!?jO1cp|+pxiyU64C4<1?@V2CbHkjAnsmkpyZnD@3cUaj zvvLr#7XUumVBIRj-?XOekD0jO#l^V-C=LEOVl`^OA -tp3 BnjNrj>)%Lh3=3uXkBK)_~^uylkDgGKwGPSPGglND9xq8NhYsE(m!>4EZ_2O z)?5J!z>uJ>#fiAh;T@kTfQ)}NIem{M?l%v-GTrb2X)|Ad31SK{uSW`Mw$Ji(!fvh} z6T^^WUXD})$HUH5L8p={cI)Z84pur2?i0+E&t^9d3^i03&~a+y`EE0X=o925;>LB9 zoShy{E&C*nJDaOvaHN|SVnWBNk*8A4mNGup>clukD^`R!`)RfYed>RelHfZ2%C111 zd^1;oJg!Oeiz|`zIQ{xbo*gq+#qb0gL(C99PSX|-f}SM=k6lsh@GXuKj|};QTM=h6 z8;6c)0S0WO4t+wwTph;g5?Y7nSP8oh5vBdp5+#Ep2(%UxI!=uW|2 z@(SgB1P~H$D+DQ@4GfcD9}g|xIcNW0NU%U$?cn+?ZkQq z@mzLeud|lm+3f7l@#Pb4-Tefcf@e!HcNUv!Oz=2Cu-)d9+8ci`Q_yG=ml8Atj}s&| zn9Nin_rWL$;zArZ?U?vPGo6b|#j*cFYje;=YUPa~ZDyD&Pwj><6e-Y15yDS=u7tfj zKU4|WJ62__^xEBerU1jOTS?H@B1Kfq( 47DGERZ;IQ~@cH#0RDKFeB# z0UN0UUEJnMAZLF$&2IOXa}XEBC-P{U&91!gObH4$QipPMn=3;B7%J4YSP|r)^a&l8 zW(yg(pBZ9I@Hjz+SJF&127;DiT#VD9ok3>GFuYNe3Vkh3gqU!isX$JDD|&Gug1ei= zsB-Gf9-PQNZ|)k;a+j7SjE@fc{IlqA5Fss17%yFL!C`+w0~VqC((domP{Dxz^I^_8 z6n;#z>`Zu5Ok9Z23BNLPhXgfP4t<%*KqmOVL_T0-ifyy$PI5Y&`>x^*Fl^4pK!NB_ zWo04DGj1tk^y8V|(wqWMlKH6<*(PIOdKNGztou@|>78C(3|FfSOyv6I;M_$xMm5vF z(w}X}VqSk6cQv-W$#k6$F` O7GWcY*w!US}~ zW;MjHvgj*W->7}h(Kmkp**9{dGu`af2wiSmIJ4he885th=1;?yD0&$kT$r2>5Ns5W zyc-KXef)O9mY2u4ib )qsg>u`fEdL4(+CZb9f8mESo57w1j^{eG7d^PPVq;S$KPjoE$?WlHTAS8 lWa<>nsg|brzb{BNG!T{v20Tzoec~E~? z48KhKk^T h-je`8Zu^pJ-5MA>GJyC6qk1n@nX#JLh-!$5;$WA%<8x9VthC*cF z*Q#S2d6VT`tyPCu8eS^M^C9Grnf99J@Cd+Wt+v=Vo$HuDgO~Q2=ZwslGW&lZ;9d{m zerJty#0P6HrELD0kpJ(D{m!_EQxe@_x0@U=C$h!(C{9mD$doX&Thr$Onmq>c1WF}a z$*9Id5Lq0P*W7|+rd^rehL~`06>rs*2V(#hlQYBNab!OL-{!o9hd$2+rh<0-J*c|u zTYT%`LcV>>c`FGq&>QfI`!0V#F5wu!F@mEy2EI!)CeX68MD~I7`>MHxeg}W7ssfe` zMO1}Q0g)Y3c1+p5aUl+Pams+-yu0!~z=SgqBITvF8lZJW-fkYE?=B@b?(TYIKLmf^ z - $ef@G$=F;1y7(O{;toNh>)VCi%p
`_YbnVVKHe3u{&~u!mENlzq11xEB^&y9#~2m%bRQzy_#l zXEV8-8m7wXZ~E+W&0Cgl`RhYppI}hTTd{5P9k1=5VTay*o9}i|5i?$5e?N3OQG2L) z?F{ow{}ihlCe-Sl0V{vw?>K$|IB5H}4R3m$nL){m7zkAgPRN@HJeUP0+v?wb{jXsT z@Pa=N7tTDm3JMA6v{G`@`a{Oq$}Hc(+F2#0iTL=ht>cRUOMs3n700mg;wV|ZV*(TM zOPCj?f-9}y!luBRiQTh0LasmD-C+l1oDV#|y#J@foa~;}X>xynjGdQpZt&prUS@}D zxf*M^uxqjB>FFWwA$Am 24x*=0#p51N81FlC7Iaf&8sU*sDM|J6BrODe^%UQu>z0+oX42lukv zHcBoOd(P_C?t-XLcRhCRKmhfDc>G1^>%+()+xl0K17R{9#V5NTLQOf z7LYJt@F|fCh6yT!Nl1Z2_OR1q{we+T4-ErKC~?fgAYeBSd7E$gsJGc=8mCD!g;nv9 zP&XMB#Ap(Raf&2MSkIxZn)~}=Th5TAZR1oKTs~poFP(uV{friYYVovQ>|VG$sf zxE|{1Y@&a^dgjRkq=@KY+#SBew>(p$0K0+i(a=4234I@nRX~M_@0T%&;T2M#;)?so z0oB6`GYTmg$MgYK!t{{Nde@_0a_8F}$fqS+<6LxcI4(2?rs(YlVP!fSvci~v2gVC# zDl71Gq+przA0lFcF&J4*a9+5hJJ>+Y)K&&Ii1~lur+Z-pNJwMWhG7wA7=~y)@bOdk z!>7%*o-a*fB&mdttowlhcf8 xIyzcf3u9ts=A4CzsihY>U; zQKn%TA IR$@96V5aMlWG$3a-5=`UF>sj!JJ2UVxK5A z>d_qpaY+<7u#FHmj3bjG>;-JDy3IGABUY_au~LPzv6i%qM9c(6gQQEh%@YRcAZZUi zSIbmum}K3Cf+Xd 5o+dM@ zP8f#0O4T $um>iWek4;(fH|Jn9)+xs13`oj6qb^cu5KU`yfP`NMGOH zNfoyg DUigYz4PLjx>j^92}q-&Vt4jyKcWTv(Y7=#q_)4hKXCq<;O zl2Mpko L!^?$l4fX27dhuP4vkX) zmOyF0|hx zvjonOI_IX2tdk^0-BvvDAx#sQL _$5_H6inRAo0VXU0ETVtHZkSIu7#wap) z;w2qP-fXFJWzV|7WBWv@QMX$j?2sl+SVahu_;E58%1M@$DsRqh9M~pEi@JS(Mqv9i zRoXB@lED(K=S6?}iGoAS7A6sr6te!7B3PtJEq*za`$bX_Az3Q%CP^)4OtDxHlBJe0 zQ!zuLU4Fmt0YHRgsl=NkwS|C!i=-k#vQ*+tkUFCZ8k;AIbX7!?`2AKP>M-94AK2Sr zUkuKrizFG?xG6_R;l&6zf}B}@;^s(=eLftP(b9ZR#S7zLwKyf(z$3sw4e~CMkf jDprC_@8eddV1-B* z&?gB=k(6{phE`Ehytl(RmMBhvHt>)es6pPO{Ey9|G{ly`qQXclmxv;NlIJzWNfD_% z
W#T0L%5MdReL*fTyRQaLaJZyHUcS6}kNYNYtG5faZ8*m#= zy+7J8LXN=_(3A4=4s0S+cwbuy7U>=^wTTembOSKKzC80@NumI>i4Z{8F# 1=Oambj| ziO&eh!-D^(P{IEJKK$QH+F`AnoK3?lB*A3xDT%DyMg}2vSG5K(+j3LH5kg8g6XLij zQhCB;LB@o#)ae79zLL}j%}2h4D!rT3IM6;sx`;nXN|LICyD+wYiqhh{BkI8BD0-RN zO{?(ybo@h=*Y}605JnEeun1 $0DXp7OVEKqr z@@ZOxNF(w%C#!Kec4ypibgGS2CAG6@BoE6VN@~n(m&-DsfsJ_LB`G%}y!>f;1Wl64 zDOj3t<++5H>3kc1Z(f@1v*W;tfNs+;sByp&t>;+k=4+j;JhD>onx`psRTr9KSGH~1 zD?}C{9RfE@JzqhJkQhB}vHf&===+$c4mPWh5}uL?{5ToQ70nSBtFzB5I49~;z2Bs$ zGt5GoL{bI}kxGuCYM#P*YEx^3iE)y`U~M2jeR^uzm_TBGF3X@Q@re;nyrdU+utsD+ z#t4u!p>(W=Ye$}wZr9u{5X-F-RRUjvyyy*sA%sMk?hS)ZBAEDEA{6ZtWfEtC$n=-m zVxK6|^=e1XRePqVT{F^Tk{{%G)^QXvy@!h_%n<2|=FsmCeV0rw>|#VP$q^LO742h; zSA^9pN{V2A2r7wu0Bu%LI=m0t3ycPNS5{T50%hPM*Qi0>B?{8CM5t=>dfV(i(fRhD zDB^$LL_a1DbDuggVPwKIW1_;ZrTlm~I$BPX-WM;(oLu SEf8Ubb+;6)}2zG9< tB43nfbXvTkL0%^ix1l)Wo|B<)bAlbyi%4r1R6u1-WZLx2QO&(a~vLv<= z4$vlC;_D~!35~c#V*@Lv>Yqr|2`}!ZD(h|WCH7uUEUe79 8$vc zwpAE~npQKJ9eUERlF7bld*2C^gJf1@f#5)fN-`FmC-pEued=TR6xj+)ECQU)mO=pC zxB0$!EbAhcSsD0 m8 zxl6n29%5N|QXdN-xml`smdelKzLni!&--p&_vt>5X458KR*{T%3Y_eHQPo9%A4^QB zeVhW%Pxq E=cU fh(DFlHg{#^T^1jww9_dZH^qzXVYhp34|N?= z!`rO<)Xc<>lL2D@SSar1=~3o?@xqv5^eEgFyM5L438I8WK!?QjP)m8AcI6k}`56Jj zfDoCO5sOC;R1u$kITUSKq}(LaET9FFGRY87k}4sF+fQ2VioVSw2G C zjS^bn70LwvF|W!kI1+^Q>!el=18Ks-TfE4pSEaOaXdIJ5)N$M5E 3VN7wOd+a2 ziK8i^PTq1Jt7Shk%S@j4;4*ONW8rmrClfO;?WAHFDw0yBb`vT*2VG!tYns+WHJ;`& zjr;sQk_J+`Nf1X<1l$XMES?2prvl+HS9fIy2GUrt7}|~jhnsbR5=Y5xG-JduBe=Na zWnF~HbV?hKfit0K3-56hW-2Q**^gnjP<@oVqWVV=+em67Fp ^UOmG-kTF_qPn+-24UolM6I`EmovJyp%NNuT|WVX?$ z2EY?fW0)|Zi-b^Y_;>s%>-XM(Dwf199*t(>@;l-W)43Q%uK3z0=z}~->Y|wXA#2m1 zf8r#mi)HG6qiC20W`xEmogCvCA#LcN3mB$z!H?zvw9%ohqQD`Y3mh@5;Qp3%l+X!3 zYGKiAUj}gZr3G(aPH|vIN$;Ho7$vmgGKn(9=bh$ViL }WOjT@BZwvu&$>u|WyiHW=iK12ES@58F_|5h5QfM- ztf=umPWbINQ%>;*IBp95B5rYDl)xoT{G?1F58143bT;ZT=fWlkn>?OzYvWy)xQ3qWT&o_EFiY zGFb2mzDOdG72ERS$mB2&+{GbdQYStmBs)vQqclkBW^p`DXc~3PRZ2I9{dS{a+|AZW z-6WnHEllIad3KusuWQ^l1lv61bzM|R0;ElUNPxl)2x#+7xO3^UiVz|3eKHCN`;{bt zEJE}G*GC;5M^4j+Xf5N)AqZ~mNMS{T5G|qlc+ur3shr6o#4K=q)KNoft4WAl53zX@ zZz)-M6>+i)`1rf~s_DACeLndl-qTM*n>XTj;udK#@z=Dbp)nWZ2T;i}{n3Px^EQ5e z6qzbhp9~D~zIzcwnoRs1TGNXfvZqv;`eb5IOa?y!rOCwKfpuF1OnEm7{xgiWf6wdt z#%o4NGWuhf;(~ {?VtT-B2gwk zm;i_UzVNH1BpLlNOxt4Lbl@Z4XV=Lx{n3D-DLO9%CCTWIX-ap%Z!4Ys=&xbTN4Q=~ z{(Hv%nHIP+*l&bMGWuhhK9yZx_+KlLCKG>6Yv~u{x0k6h^~u0^EZhE&S4I7Q=mpWq zGW}7*$PeCkR;H1cfA`Ql^-cFO-) N$m-%Ln|Ax-^`W=zL%}!>b^A|;*dMOnb!mz)Pi2jt z?LO@3>M#+^LO&GROa0W(8KIhg&SK?Vqdu=H%erTzP=sLvm{$|z2sxWW*EhTJACRkk zTRxU>WXrs=GoY9OwX!lqNE0~$yC>cVLj6BWm&Rd$!vN=EiXEW{9c9Rd-+Nex>ax4G z*=3?9I!m4er6dRn>s&jz4L`edv7S?c2;s2V0uZP_FrCzolqz7D0dqZnK~{3wFA%VN z@QliLwrcLXm)Tu2J&sZ;5ylsW@!$;w1SSAZr=UR*@By}UiY@ZRzMG+gKxkh)Bal;# zy+-UcT=vU>HJBQ@YfpSo(mZwY9nS6#<+e!GCDE8blVpt0P8Hin8=GG#UCfL(b2?TI zD;z?@-9(gAJGxiVrYiD(I)hv2t@WK+(4N8FllH4IqL*Km9se=g7JE1kw%(LQstkFH zI1C%Wh@?<91N<0KP=NA|&5{FmMgkZWrm%~Z;H?{DBuD^5!no$MNf7rBZY4C)+q} 6hp%~l4%9D%#THnXiT%$3LSWYm?@?DE5z0G}bP z&TMYsGj-KWfSuOaIeto4B(G=k`Z1JE$TFEclgZPS@<$$? -4dEVDnsqr z%0-&0{;s?~K&0QSIrQ1nLzDGQ_E7fAwM$@#OwKqk>l+4tz_0Cusk(RhX98)n&29_t z?Y?L`m`|yXAfC_}3<(IG8R(ZD>eOs>2mWC^%Q8o?1X|PIkdA2`f!9S%QNf0+I_<@q z))RQ$tSuz$JNmm!BYe*Oc)}l{oIgiJ_K-go#}*76?2im6_|T9c#g*XwXz(t}32hK+ z?r=$ 5?6vbIFuDWb-x_S&1dY`$=W)nQ4vQ;e2!m9%)cni zL3J%+CKK?fBzp^F=WuP2X3NPji{%ogQu-0T&Jn3wlv=DE97m{bPNZ9|(T>#Fds?QL zA^4uxfjQQKFcnbtM|uu8EH70P_6-tU=_@nU_TIsN{2ZaZ8rZ)v;OEGzn&vYNW}8EO zq(@X>GJ*MSKru(8XntYRtShQJs05lrR~$#JXniF(R0Iev8s5KY(zkGZj{g0jdypB( z=oGQ;IN}8|%_mCaD?ta+vsZL+j_kJR9u9YRm70}5UM*%o(}Dm(Uylf9*J&_cxCfMN z^HkG+gzkN_eQ25^$(Q&H@M%U_;;$w38Bo6l>NoV$oQxbg95cu<1a!t_GM hodr{c !spAC3q z=ZMIdB4a|1nopEer#4-LnVpSvrDnOVo8Ge&l$0X_>r{VERK(xgeN}upS~&|mRhX+G zezLlHQysdal$VLM(w`F*-LX0EyG@TqdM!UCYJu) ?|2I`D@8a#LgTKw%qCd2_fZ5d5bG9j3h>IfKg^uwUN;+(?6deOPCg_+! z_a;eQV%FjBGfdBr8yob25Bud=l(2NF8k4Ypv9g6EtKjqHZJW2xta*em=fxAw;?r^1 zFibDL?5n1goiLF&DJNnLiM Lv0+D0vYmz%&Cad-0LXwR7r~C7 zQ^^GRgxrlJW$#By&WB27=kV!)zr$JCWo7^45wnA^tn66XXCDoUkWN@ufQ1L8Pxd2U zCW(6^V1}YppHzV+%P}7a9HW7!lv)c}F424paHIy_S#mjM@DM0=0LsqFHaRbUv~Tzr z1uJ(l6X0ASyg|M@o*I}`yvt1Jxw^=s>v}3~kD&)b zNdQzjKTHA~MFGw+5L`$_#Rmo0moSPBmf?&3fsgT V)5a8g! zl1$4X{LDrFU@qk;nwDk%3G=*sG~4p-S@;ngwcS$4Myqu>Wt*iM`oec*+YP)ej#^7W zUmO{XqL-D_dpG;6+(@5EF{{d3ba-N2JA!9tN%~O=XDQyDfH%mXSzC3iRDxNVbH 2&j(Y<%AzEcKL{Ml zntI~JrhQoZX68!%rGU12vuTgkzA;wxmHWZU!ag@ISZ5n}vT>CTP)ExYwjxHhWaBQ} zu*@AvE1RAbCQHsH2LDy-A`nm4 LyXJAQY`I*o#MFMB*OFxw>C$P@xv$`C4C6tcF}!f;MQrog7TDJ=)@1#2 z+zRb#6a5M&N|d)TxOp~ww2vDI`H+A6Pe)KE9goqul%v!3ML-8v3m0)H6Z>aA!mpX! zblA7e_JF70o?w7~n!Nw^yCm&bE `*h&r!L5g9F&8ncEiR?1b Bau(zizCfALv=JqwJ;uI`aC5T?SK!{!43?0EyPWl|xq+Z7 zL(pg!-HgnN>>V>l0#f{)uT4ygbj_}y+W#9k^7o P3*Mgiu2o~D3w|_orUKB8YlCn#aX1-c_ub%Q}tVtk}oO~&q8&hY>r*|Bf z;Elle{6ZEoy`KuX(n1zwP|d-hALpUoID dK^Dl8de*PwxA}4!3sjyDban$k{=ECZ?F+vC~XfULo@{2#qn0_@PeW zkfNDBV#Wjm)n`0Uf?;hXj?9QU9F6xe#DwvQoI0b?bJxS@e^y2;;BtGv{y{UWY`jOv z$0o07)79pothQ}Yf0ev&7TkBm6wAuRzaUS#$2P-dH o+ v-|Im@duPhG>Z>lIROpP9s5k6D)JRIy2qs#KwBt;)G)f!ghDTihL0DIu rsOXmD5C=a0U|i>k<2VlRZ5zGrB_# z)oGoei4qJn0fUa)LbPwi7Vpw>X&7JvMmo0zlhE)~P>=}=XGpw?Gl8oIC*Z-muky4~ zRPiKm&0tBZ1zC4|9d^%qRBGeR3Fo!Mz!vCrWGhuowdu!C58SrY^E?`3-o;w^>m) zhx>=`7OMpY43)$g7%(vY-g5#*1biqFP>`6TLD;JFl`C5o%otT-wd#hm$fR-G!$&d? zwG1ox6$C4AW|98E!|cz*_l}S*-_H)9^SvXG%lESb=!7(40G;o30G+2i$%!(5N-ze{ z`CbLkL5eHE`_bTCmXjp`bfU7cIDpRgxQT-C$_eAgp5Pe>W!JZ<-N^58Ck49_K*r$; z8truOHBnf#f5>6fS>#F4JnXsvj7hLlgubS4X{v6EUWt0SFWP+p@yav2yig-xNQq2A zGlYHx{|Uh_uM{m@PSmgCGAt8+D{*Alh%_0qJX@_o45U~$)rpv9D?Ro5f_EFY#jaT_ ztJ%s;0f5O6bES!HBvGo=8p1sv;J7>$^5&nGi`A$q)(zAr7OphCa`Nb9R`$hi@y(X= zRRs2a2%e~{&g5qq+j6P6TA_=8nlL4MrAfdhO{7w|P@2M#muJd=C0EsdIXOm|sRDzg zR@I^+@|BY`O?=xl%O5-fxrYDK*t_TM7!SULS<~M%4d`y@jI^Gh0$myr=te@ODWT5p zvDzR+Q?ZDs#~
JzQi@Qik*xvv0|BoDuslNo z&?Q^;YCyJ3_@-)blHhB9NtgIa{AxtFQ2s1m%sAz9{4qm%x8 Sin;a9J_5dqz#f*SevKK;6viE4Cg`F3UlmSLn7^?>Ap74}yY!aSD}-8$tWi)#^z3 zXmi+8`?a!w=vw`NY@zT&Ti@n=UwyR-O*7~WOh}_MF_=YzZpO){?x8u*_KLQEd1`*6 zyX?Ni4LH9X;4IxAvl3pvKV+OG+cr4I$;))}nSO_JBKkv;`+$*i-YL>EH_%@ZeK%Ca zP!&w8gDOU<7^z}^B~%`aYhv35=Veh7{mMvF_GvxJ9e-pexw~-W?k{HU78LP<*`iP} zEt)#=Np8i10K@KG!>i Lj0Vaw&F&6)xVvpUr=JR`sbknNS-kA2;8V$q#e9}2)AwXxu}1{)hR3jeyuI` zdD#}* @ zuUI~$MxNzIUBSFofwbZG!u)kyXtvy}yt!Fgk`V1ros}m>sxY-kQApIb_%;(wO 5&K2jFv;gm` zs(GTVnzSneAdi2~WYJ@(<4#o&%3vi{31uXd stzl$eE6RU!d=WB55yI&QK&4JR_0t8AM`I82IH(h-9RZfkcYwh#S9`X8pHc{|^EG z_UnItjk3Swj?7zt36|lU)fk`5rSm~9oeL*}rb@TsU4fva9k1S?;*(7oY^R3K_vSP8 zWYSW@k~^y1shj%hvK@rF|~o zK(yyKxGFzmKlVVO$HmT`yXsKz1Ye~PX$OwrXTZ-izu0di_+^o$NM2q*=vk8E-bN9B zP?8m#yxBd&9r-&{@;SUH@V ~(4BQVS-HNg9A&GDgNFvPK!5t%o3>AWnRLDr7i1NMTcj9Ygd+B|E5j1pvMG+Ck z1G~J3SF)^)#)f5>wnniS*pfe4_%!jl9-a4S_fuEo;1u{3?ggj^nOK@IBqEvcsOyFm zQ=&);%9%gYn^chZA8p_g8tHZ{&;7?~?ibt=WBwK^NZ7_~O#J;`Y*qU`JTbrLy=?yR zxP@&@MJoZujHTQv$6o?umlKeGF2TS3`rpFjw_pDUMDq)1$iFTxCvgMy!1=!5Fx0y9 zhUfFwC>rrB+Bl&l{VYl(C~aZpYhGEj&7s3yHTCl34oI`L<9+h`0zwG(yvNk_ogD4U zemYk3P^aVM0mdR|n|*iuf|Gi2Y(ZUHF#s{!J(SC|TsiR}(_(7}a+#2SiwAkoQ|Kv? zvm=zq!u$193KwtT2~*${SbzM21|ofU8ctRN5f+h4#Dct)cQmUZW|we7yqKHKac1@p z)IM~dfg1&Eiw&l@6LU_m)1c^i;U9a_zPzJ(9PtL?HhwYjoYSN ?zfqM-*t2x?;F*I9ktLq zJ#@e_Hn_zu6QdgonKKjc#})nD`$n|f*~O7FyR6)C3-qSJd)^h?0_ML(hmNZdRWH^d zU5_C)`4Ff6ERVCx9& 8iK=*iGEgN?#AB!mO8Pk2 zTTsM1-m{` VvjCS$AL4zOLT0Y^TxratZP~v6XxYt zabZEf1@vOTkubV{5dkHP#_}>-8^X|MVJhtO;>YDVmkV4*t-fy{8rK1p7_TA(W8w9E zT~svx{8;8P-e8f}VlMFZP*p|GYt7pxZ?|8^`A4qz84VjqW)sO6u~taN(JPlMgD8Sz zn(-V-mL>m{3ugJ9lk4>KWa#lBIVKff&GCx5Ao$SgL98Ty&DN3PmgiqjCbSq2li#SK zzH3?tz76M6;9RNn_2(BJ4m;kzM1x)4!JYdmC8VcLP!>F;QWl=8f%C&c7F Cmz461%@)BTO51tiQAZPGw8k#7T)<0MZnXay^sDr60bE@~P{YG!Qxsbqrrzac zb>!!O=EcZ=wLsigDb4gs)Z-%X;-QdRQW^9xQJI(ubL8`FYCexu;QOM^D?I6wH$&Uv zuE_bQdtbEt`NO#?nDG8F!_&31w&?abECS+OARhc#c1`^i%Ur30dYaTRC61vuI{BLk zZ8ZCdN0@@NVWC^|dNt1LUxs j-%?TRL8VBD%N9WH@fKQG-3Yk zlnm3J!0J&?uBNkh9^kRW?5trI4ATnNd_ZOj`E)=uU+`krHM`oSo@*1GuwR6ZgyuDW zNSWcqKfo=V+uyP4?wScTJa{#4dJO)H0ss6=sjg=Mo({z^Gorf40{Ui1HD9ypuHp-a z?R mTB7yF|+mkDOP#8Nt^T1_>rY?_wm_Is6EF&iej&R-$3->VbM zXm(F9t)_}rT9N9^&&leXrpJ?=8BLB&*S4v@>G`|&2)m!5(yw9o*{5wabIRm@=sg2) zcIe>kteFHqL+5!rb9ye+VYl*!^z#&*c~B?Yj!5-Mwj YjM- zgm-6&=1TCt9q}*A)si50QQ2949OUkYm&yxGM`OatZ842~GOxbB@S~3Qz{FSKLA8T< z^W!TvC-@;snI>DR9L`7I)2)Nc;+(JJXF>45LxaBwo^wrqt?8F$%KTjh55wGvofk*X zT|iKF;TN 54)f zX}fZ8&(2KoWuMpT3}{)=9WN&eA3IbM|J=qpI}h-xJ(k52wdPnrI*t(SmpWdCBpJ2r zh77fz3tw)(p4nNY1?d@o@3ucvv|?_&)!ow9TAXkWd8e(B?GfdQQ_bPB1izW^&6m!9 zz#WR)(cL>@1{~ZNN=R^vSA8AT_<1rT{K(Wxa?D(azOTZ*8MFCy|H;uu|I_Tz(VrYW z^FPfV9fdUF=;%);;&28T{F|alY>%xRhe&@C$3(~|;F9Y~DEVN2Q?e|RO9o3(8CyJ9 z`t!?tyVc&>u&nk}-11D^L%gT0_Pd5PH2zBlza-@1&o571_%ia7 9Ya(las}(Lf@K+7 zQXNKR=m^yzJbUue32bfX%FUckz@J}!
!10aj@OWC7+tSppk@|}Nif18z-tYwT^HDYTja=)|c{*lh zfI%)h>5L7tWLJ@ttGh#sF4eplNDQZE%Yi^+67BU6JxLifqpEwmOqPk8@t;*kRtXaE z{&@WkexSyi)$U|r!w+^H4r3WqaVKvnBAjZ(%fdL}%cVfYB+N;Hzev1NTpTLg;g};R zjyzD76_CV#&_%Q|QKJg!?ts&7aIu>qfy^11za}i;?SjN=oehQW_0heR)1$+yM6Ipi zZyJvwo?2kLw6IC7;#7~j{1@yQ%Y)l7suvXK@B8NW*|wnYcJ^UAodLpLpZ-O6e&zY> z7;_Ar&KjmsPHjxT{rca11DokpI=e=S%wE9>ehs*P0_TUSSMHT+3rM6;iu+!{8G#@W z!Ia;l0y}lEO2@^ONN5wxZ`h7MpBs!ba@cR_S%vipxoBH8?#gr`*@R;f4)-(21!4(z z8qI8xt(q^GmoC1PJ%41o4%*5nnW}AqNpCP`%6#QSw#lI5W%$Q9T4gB@rr|$XU~70q zpg2r_CqQs7ex%M^441+%Jrlu2T44O-;5dK8-kU|$zJ&*mZjxGX;|=u=R{7y7O$9aR zX5Q4>(&;uh)~b;Whi*V-ge+!t8ua*9$X9dpSn|~txb0|D$eC(=Y$on8hjQN)^+8Tw zzlh3{LS-6NZViV0!f+=5Rn3-P2W6Z;UYat0tXUCRmo *P@{- zDv&I*HT$6;9OcJjeFWCTweoN|6_$?$uXk|%6hgYGysEGQ2`Ukb;k+iqm{X2cD&T=o z8sxO8#r@t@-t`csk`G6Dbp&}Y_Ze>>+M 7ZPa4Sn64q$(*Fd z6NcrIl3C;V61G=kG$$_(yD+%L_7V0jY_lhRo3I0J+@%CDI0nP88v>AVK 0-i%aVRgF^>A5T%bBS*4Vs;ip!}fJR)olxAgHUhc6^wJihh4jWeSeZ? z^nus;wTPL_J6G+q*Ihsgzd} b*i Ss0Qq#3tx$PuJc{Ffr?H9?AYshZ|vj1_DuU+<(aU( zsBx1iyUh2a*>3F95Wp*c6Z8_V`7{WBt~6e0w4%R0d~prxZV_H&pT=bY%|zntqQ=8~ zA)7u8ydudfyd%z`sFNOTnX-M2P%H7(M~dsLa`HNfa$tF3eDTqBMUQhshrN87vTfPz zU0q`*xxj&t_u`>q5@$W6xP%))Kly~=7SOiD<1*Zpzf%ux^W^4#=uwX5(64 h z9w$&xM2?(v0mZq0QgyCXy_2e5gQ|C+>NEqgm)GwvL)jECxOJ3Y&hT=2R;=hsB%p&y zh9&_?*y*_A4^&m=tvre;RS@<)B#1aSiuxU|CGrhkw29drx(6ZV=YQYl5IXDU?6J#! z{`dZQUtsv>pRvGy{&$Qx^K($%<%jiKQyzh`N8aa@h UJL z6%s6(nn ?^t&&|_Aqa5=I{9SgFf52{o!aaXB^q?%l);JEu#8DPrD^e2U4 zqcegm$u*G9bW1U|DLxcM9~5H4n>eWGRZRjlTvS$nL%wLqUQdEJfeK>m9}q(>MB_|X zxp7ZUM@ta}Gyqd1lC5dN0Q}aQ0mjgGhKSWb9@YBKwHXo}5F3R5IAK3hh0499M>_ z(}}8udBroyvisfF%qO0v#_o6FJd&C>mq*Cow%ovESXD(d^zIx03KJ-28ZlahS&f@9 z>|}y}1=2#?gG%1U9i0i-t N5Uya?cdS@mWH=2RXYwZ)qTMSkn4P7ziq!tqsg*Av$0$#$u-PZ{`cq z!GsYGQ_?IN&7CTaB!Rk;G@@lL6R9C}oKF;L
8r*orY%Fe1KD0R3f)5J@Nw($VjRYKTfsy?|@FFHu ziWx+x^vodYX|w=eCbUX<{4$Q7vrS$V_0}<^;}oydsUxBhjVZL#AYqbN{#t|0_E>Ty zo>%aM)Gb+F@$a5+=$pW0GT~$&$&}fDSbESIz_HA-LNk^kbm`&P#Zq|d1QAhLp~rjn z13Fqq89$tBFOgdyert;gw@ag^bC;sZG-ty6W(t|c58mRWUp<4%B*6-fC@_V16GbeA zKNQto2DLD^5VmD;m$k*NthbIz|1DTjh=A#qK`>{^{B(rpB^UdhbKE}d+Lr5oCKr2} zbKH~*<|`A=*o*5Y=U4Yogmc-I{c4OD$M4*^8NqGt<<18?x!s)dETVkBpF=B8IRf+5 z2+vE70X!ga)!g6XN$sAARJRBT!xW5|NPX+T_lx2eWgrl5BjFKb!ObAK2=Xy$Ev!PS zqW^{$MNwpBkH>E&s^In=?}ZhAtnBHK&v!+S8(s}auK>7(@ZLB#w7R+Bae#LaP2U?h zUcx;e3Y2(oHt#{*7r0?Gjh7=pc42FhLb#fudR5SIe0^S4b1MQmAP^9ARd6#!4XU_1 z=*VH|3cy;0n;D`7nW3isvLyQmFwFfB(=S0C0D)nSGdL5(6}-)(Lmy**0VqtO+}P2T zBK)KFyr0ND%7NN|tmMXcv5Ya^-kiy;%F`-f#JVjC@F{t8_(fRh44X6c(M5pYzezwR z07?S&hzl4_RKt~QJnk(T9*=8-aTc0gN)R}j&Bf#kF=^#+9FH`{m3NC2Bo~x2$Lxq= zyBS~x3-PgdC^uEg%~uwGe-$5G(69$yb`f<>qj?N-rp-UvK&1jcCO+V%)=g92mG_5M zZOuKAU3%PpOFw(3{w^id%79vdwYeHC_Wcr`j;ZJ7icl(l%8Z``)*PX3rc9b 1bb*(Lu)ow;5zO#_!LDN*s{Op{?!W!+=L}AEY3AL3N{L5a1>HRpSno|9 zq!BC;8jX>wn&;5&H*-`PBUm-Lq7l~?z8m?g)+=0to{IARp~u0yIQ`|sJgJpG!tM#* zOE<`98J3a}(#irKBde@oY}vHW^R#I53;8LAbtiqK=r^3W@EtZA)Zrn68DAG!jMhcE z9H-s#mJwnf?JY5XL2x4#|H;b7+fcH*u}1;H{Ze53Y7FOQ7TfnJ+(&T1bzDar>o zT@9h!oZF%+@9Vj=%33p@O#t2G{0fz@w;Sl-p1?uBhTz5>!6~x{u_ ~{pRC#!r_tgP^3EvBeL>u*-JQ4cllonoA zrK4aZn+%1bTq%s#L!LZgrMz+(j?b_#j %;EWHK!7m0eDQ| z!BZpgRvxmjROx!*-EI_+C)czT#`y>|EaSdvZbO@%0xAeXi+D4H3~Q*G%|Z!?pcT9u z0EPv~g>vJ6R?ZNimfJPT`w4JZjEo&5Ya(Ter))u&0i#tEU7zit>r!s!mDxyv`HUkC zw$DJrG|klvZQ&gMawx%%Yr*|T1bzSiG5`z