From b21727a3fe3912511d60a24247a4baaf3544a0db Mon Sep 17 00:00:00 2001
From: Aleksey Chichenkov Lemon is an LALR(1) parser generator for C.
+It does the same job as "bison" and "yacc".
+But lemon is not a bison or yacc clone. Lemon
+uses a different grammar syntax which is designed to
+reduce the number of coding errors. Lemon also uses a
+parsing engine that is faster than yacc and
+bison and which is both reentrant and threadsafe.
+(Update: Since the previous sentence was written, bison
+has also been updated so that it too can generate a
+reentrant and threadsafe parser.)
+Lemon also implements features that can be used
+to eliminate resource leaks, making is suitable for use
+in long-running programs such as graphical user interfaces
+or embedded controllers. This document is an introduction to the Lemon
+parser generator. The main goal of Lemon is to translate a context free grammar (CFG)
+for a particular language into C code that implements a parser for
+that language.
+The program has two inputs:
+The Lemon Parser Generator
+
+Theory of Operation
+
+
+
+Typically, only the grammar specification is supplied by the programmer.
+Lemon comes with a default parser template which works fine for most
+applications. But the user is free to substitute a different parser
+template if desired.
Depending on command-line options, Lemon will generate between +one and three files of outputs. +
The grammar specification file uses a ".y" suffix, by convention. +In the examples used in this document, we'll assume the name of the +grammar file is "gram.y". A typical use of Lemon would be the +following command: +
+ lemon gram.y ++This command will generate three output files named "gram.c", +"gram.h" and "gram.out". +The first is C code to implement the parser. The second +is the header file that defines numerical values for all +terminal symbols, and the last is the report that explains +the states used by the parser automaton. + +
The behavior of Lemon can be modified using command-line options. +You can obtain a list of the available command-line options together +with a brief explanation of what each does by typing +
+ lemon -? ++As of this writing, the following command-line options are supported: +
Lemon doesn't generate a complete, working program. It only generates +a few subroutines that implement a parser. This section describes +the interface to those subroutines. It is up to the programmer to +call these subroutines in an appropriate way in order to produce a +complete system.
+ +Before a program begins using a Lemon-generated parser, the program +must first create the parser. +A new parser is created as follows: +
+ void *pParser = ParseAlloc( malloc ); ++The ParseAlloc() routine allocates and initializes a new parser and +returns a pointer to it. +The actual data structure used to represent a parser is opaque — +its internal structure is not visible or usable by the calling routine. +For this reason, the ParseAlloc() routine returns a pointer to void +rather than a pointer to some particular structure. +The sole argument to the ParseAlloc() routine is a pointer to the +subroutine used to allocate memory. Typically this means malloc(). + +
After a program is finished using a parser, it can reclaim all +memory allocated by that parser by calling +
+ ParseFree(pParser, free); ++The first argument is the same pointer returned by ParseAlloc(). The +second argument is a pointer to the function used to release bulk +memory back to the system. + +
After a parser has been allocated using ParseAlloc(), the programmer +must supply the parser with a sequence of tokens (terminal symbols) to +be parsed. This is accomplished by calling the following function +once for each token: +
+ Parse(pParser, hTokenID, sTokenData, pArg); ++The first argument to the Parse() routine is the pointer returned by +ParseAlloc(). +The second argument is a small positive integer that tells the parse the +type of the next token in the data stream. +There is one token type for each terminal symbol in the grammar. +The gram.h file generated by Lemon contains #define statements that +map symbolic terminal symbol names into appropriate integer values. +A value of 0 for the second argument is a special flag to the +parser to indicate that the end of input has been reached. +The third argument is the value of the given token. By default, +the type of the third argument is integer, but the grammar will +usually redefine this type to be some kind of structure. +Typically the second argument will be a broad category of tokens +such as "identifier" or "number" and the third argument will +be the name of the identifier or the value of the number. + +
The Parse() function may have either three or four arguments, +depending on the grammar. If the grammar specification file requests +it (via the extra_argument directive), +the Parse() function will have a fourth parameter that can be +of any type chosen by the programmer. The parser doesn't do anything +with this argument except to pass it through to action routines. +This is a convenient mechanism for passing state information down +to the action routines without having to use global variables.
+ +A typical use of a Lemon parser might look something like the +following: +
+ 01 ParseTree *ParseFile(const char *zFilename){ + 02 Tokenizer *pTokenizer; + 03 void *pParser; + 04 Token sToken; + 05 int hTokenId; + 06 ParserState sState; + 07 + 08 pTokenizer = TokenizerCreate(zFilename); + 09 pParser = ParseAlloc( malloc ); + 10 InitParserState(&sState); + 11 while( GetNextToken(pTokenizer, &hTokenId, &sToken) ){ + 12 Parse(pParser, hTokenId, sToken, &sState); + 13 } + 14 Parse(pParser, 0, sToken, &sState); + 15 ParseFree(pParser, free ); + 16 TokenizerFree(pTokenizer); + 17 return sState.treeRoot; + 18 } ++This example shows a user-written routine that parses a file of +text and returns a pointer to the parse tree. +(All error-handling code is omitted from this example to keep it +simple.) +We assume the existence of some kind of tokenizer which is created +using TokenizerCreate() on line 8 and deleted by TokenizerFree() +on line 16. The GetNextToken() function on line 11 retrieves the +next token from the input file and puts its type in the +integer variable hTokenId. The sToken variable is assumed to be +some kind of structure that contains details about each token, +such as its complete text, what line it occurs on, etc. + +
This example also assumes the existence of structure of type +ParserState that holds state information about a particular parse. +An instance of such a structure is created on line 6 and initialized +on line 10. A pointer to this structure is passed into the Parse() +routine as the optional 4th argument. +The action routine specified by the grammar for the parser can use +the ParserState structure to hold whatever information is useful and +appropriate. In the example, we note that the treeRoot field of +the ParserState structure is left pointing to the root of the parse +tree.
+ +The core of this example as it relates to Lemon is as follows: +
+ ParseFile(){ + pParser = ParseAlloc( malloc ); + while( GetNextToken(pTokenizer,&hTokenId, &sToken) ){ + Parse(pParser, hTokenId, sToken); + } + Parse(pParser, 0, sToken); + ParseFree(pParser, free ); + } ++Basically, what a program has to do to use a Lemon-generated parser +is first create the parser, then send it lots of tokens obtained by +tokenizing an input source. When the end of input is reached, the +Parse() routine should be called one last time with a token type +of 0. This step is necessary to inform the parser that the end of +input has been reached. Finally, we reclaim memory used by the +parser by calling ParseFree(). + +
There is one other interface routine that should be mentioned +before we move on. +The ParseTrace() function can be used to generate debugging output +from the parser. A prototype for this routine is as follows: +
+ ParseTrace(FILE *stream, char *zPrefix); ++After this routine is called, a short (one-line) message is written +to the designated output stream every time the parser changes states +or calls an action routine. Each such message is prefaced using +the text given by zPrefix. This debugging output can be turned off +by calling ParseTrace() again with a first argument of NULL (0). + +
Programmers who have previously used the yacc or bison parser +generator will notice several important differences between yacc and/or +bison and Lemon. +
Updated as of 2016-02-16: +The text above was written in the 1990s. +We are told that Bison has lately been enhanced to support the +tokenizer-calls-parser paradigm used by Lemon, and to obviate the +need for global variables.
+ +The main purpose of the grammar specification file for Lemon is +to define the grammar for the parser. But the input file also +specifies additional information Lemon requires to do its job. +Most of the work in using Lemon is in writing an appropriate +grammar file.
+ +The grammar file for lemon is, for the most part, free format. +It does not have sections or divisions like yacc or bison. Any +declaration can occur at any point in the file. +Lemon ignores whitespace (except where it is needed to separate +tokens) and it honors the same commenting conventions as C and C++.
+ +A terminal symbol (token) is any string of alphanumeric +and/or underscore characters +that begins with an upper case letter. +A terminal can contain lowercase letters after the first character, +but the usual convention is to make terminals all upper case. +A nonterminal, on the other hand, is any string of alphanumeric +and underscore characters than begins with a lower case letter. +Again, the usual convention is to make nonterminals use all lower +case letters.
+ +In Lemon, terminal and nonterminal symbols do not need to +be declared or identified in a separate section of the grammar file. +Lemon is able to generate a list of all terminals and nonterminals +by examining the grammar rules, and it can always distinguish a +terminal from a nonterminal by checking the case of the first +character of the name.
+ +Yacc and bison allow terminal symbols to have either alphanumeric +names or to be individual characters included in single quotes, like +this: ')' or '$'. Lemon does not allow this alternative form for +terminal symbols. With Lemon, all symbols, terminals and nonterminals, +must have alphanumeric names.
+ +The main component of a Lemon grammar file is a sequence of grammar +rules. +Each grammar rule consists of a nonterminal symbol followed by +the special symbol "::=" and then a list of terminals and/or nonterminals. +The rule is terminated by a period. +The list of terminals and nonterminals on the right-hand side of the +rule can be empty. +Rules can occur in any order, except that the left-hand side of the +first rule is assumed to be the start symbol for the grammar (unless +specified otherwise using the %start directive described below.) +A typical sequence of grammar rules might look something like this: +
+ expr ::= expr PLUS expr. + expr ::= expr TIMES expr. + expr ::= LPAREN expr RPAREN. + expr ::= VALUE. ++ + +
There is one non-terminal in this example, "expr", and five +terminal symbols or tokens: "PLUS", "TIMES", "LPAREN", +"RPAREN" and "VALUE".
+ +Like yacc and bison, Lemon allows the grammar to specify a block +of C code that will be executed whenever a grammar rule is reduced +by the parser. +In Lemon, this action is specified by putting the C code (contained +within curly braces {...}) immediately after the +period that closes the rule. +For example: +
+ expr ::= expr PLUS expr. { printf("Doing an addition...\n"); } ++ + +
In order to be useful, grammar actions must normally be linked to +their associated grammar rules. +In yacc and bison, this is accomplished by embedding a "$$" in the +action to stand for the value of the left-hand side of the rule and +symbols "$1", "$2", and so forth to stand for the value of +the terminal or nonterminal at position 1, 2 and so forth on the +right-hand side of the rule. +This idea is very powerful, but it is also very error-prone. The +single most common source of errors in a yacc or bison grammar is +to miscount the number of symbols on the right-hand side of a grammar +rule and say "$7" when you really mean "$8".
+ +Lemon avoids the need to count grammar symbols by assigning symbolic +names to each symbol in a grammar rule and then using those symbolic +names in the action. +In yacc or bison, one would write this: +
+ expr -> expr PLUS expr { $$ = $1 + $3; }; ++But in Lemon, the same rule becomes the following: +
+ expr(A) ::= expr(B) PLUS expr(C). { A = B+C; } ++In the Lemon rule, any symbol in parentheses after a grammar rule +symbol becomes a place holder for that symbol in the grammar rule. +This place holder can then be used in the associated C action to +stand for the value of that symbol.
+ +
The Lemon notation for linking a grammar rule with its reduce +action is superior to yacc/bison on several counts. +First, as mentioned above, the Lemon method avoids the need to +count grammar symbols. +Secondly, if a terminal or nonterminal in a Lemon grammar rule +includes a linking symbol in parentheses but that linking symbol +is not actually used in the reduce action, then an error message +is generated. +For example, the rule +
+ expr(A) ::= expr(B) PLUS expr(C). { A = B; } ++will generate an error because the linking symbol "C" is used +in the grammar rule but not in the reduce action. + +
The Lemon notation for linking grammar rules to reduce actions +also facilitates the use of destructors for reclaiming memory +allocated by the values of terminals and nonterminals on the +right-hand side of a rule.
+ + +Lemon resolves parsing ambiguities in exactly the same way as +yacc and bison. A shift-reduce conflict is resolved in favor +of the shift, and a reduce-reduce conflict is resolved by reducing +whichever rule comes first in the grammar file.
+ +Just like in +yacc and bison, Lemon allows a measure of control +over the resolution of paring conflicts using precedence rules. +A precedence value can be assigned to any terminal symbol +using the +%left, +%right or +%nonassoc directives. Terminal symbols +mentioned in earlier directives have a lower precedence that +terminal symbols mentioned in later directives. For example:
+ ++ %left AND. + %left OR. + %nonassoc EQ NE GT GE LT LE. + %left PLUS MINUS. + %left TIMES DIVIDE MOD. + %right EXP NOT. ++ +
In the preceding sequence of directives, the AND operator is +defined to have the lowest precedence. The OR operator is one +precedence level higher. And so forth. Hence, the grammar would +attempt to group the ambiguous expression +
+ a AND b OR c ++like this +
+ a AND (b OR c). ++The associativity (left, right or nonassoc) is used to determine +the grouping when the precedence is the same. AND is left-associative +in our example, so +
+ a AND b AND c ++is parsed like this +
+ (a AND b) AND c. ++The EXP operator is right-associative, though, so +
+ a EXP b EXP c ++is parsed like this +
+ a EXP (b EXP c). ++The nonassoc precedence is used for non-associative operators. +So +
+ a EQ b EQ c ++is an error. + +
The precedence of non-terminals is transferred to rules as follows: +The precedence of a grammar rule is equal to the precedence of the +left-most terminal symbol in the rule for which a precedence is +defined. This is normally what you want, but in those cases where +you want to precedence of a grammar rule to be something different, +you can specify an alternative precedence symbol by putting the +symbol in square braces after the period at the end of the rule and +before any C-code. For example:
+ ++ expr = MINUS expr. [NOT] ++ +
This rule has a precedence equal to that of the NOT symbol, not the +MINUS symbol as would have been the case by default.
+ +With the knowledge of how precedence is assigned to terminal +symbols and individual +grammar rules, we can now explain precisely how parsing conflicts +are resolved in Lemon. Shift-reduce conflicts are resolved +as follows: +
The input grammar to Lemon consists of grammar rules and special +directives. We've described all the grammar rules, so now we'll +talk about the special directives.
+ +Directives in lemon can occur in any order. You can put them before +the grammar rules, or after the grammar rules, or in the mist of the +grammar rules. It doesn't matter. The relative order of +directives used to assign precedence to terminals is important, but +other than that, the order of directives in Lemon is arbitrary.
+ +Lemon supports the following special directives: +
The %code directive is used to specify addition C code that +is added to the end of the main output file. This is similar to +the %include directive except that %include +is inserted at the beginning of the main output file.
+ +%code is typically used to include some action routines or perhaps +a tokenizer or even the "main()" function +as part of the output file.
+ + +The %default_destructor directive specifies a destructor to +use for non-terminals that do not have their own destructor +specified by a separate %destructor directive. See the documentation +on the %destructor directive below for +additional information.
+ +In some grammers, many different non-terminal symbols have the +same datatype and hence the same destructor. This directive is +a convenience way to specify the same destructor for all those +non-terminals using a single statement.
+ + +The %default_type directive specifies the datatype of non-terminal +symbols that do no have their own datatype defined using a separate +%type directive. +
+ + +The %destructor directive is used to specify a destructor for +a non-terminal symbol. +(See also the %token_destructor +directive which is used to specify a destructor for terminal symbols.)
+ +A non-terminal's destructor is called to dispose of the +non-terminal's value whenever the non-terminal is popped from +the stack. This includes all of the following circumstances: +
Consider an example: +
+ %type nt {void*} + %destructor nt { free($$); } + nt(A) ::= ID NUM. { A = malloc( 100 ); } ++This example is a bit contrived but it serves to illustrate how +destructors work. The example shows a non-terminal named +"nt" that holds values of type "void*". When the rule for +an "nt" reduces, it sets the value of the non-terminal to +space obtained from malloc(). Later, when the nt non-terminal +is popped from the stack, the destructor will fire and call +free() on this malloced space, thus avoiding a memory leak. +(Note that the symbol "$$" in the destructor code is replaced +by the value of the non-terminal.) + +
It is important to note that the value of a non-terminal is passed +to the destructor whenever the non-terminal is removed from the +stack, unless the non-terminal is used in a C-code action. If +the non-terminal is used by C-code, then it is assumed that the +C-code will take care of destroying it. +More commonly, the value is used to build some +larger structure and we don't want to destroy it, which is why +the destructor is not called in this circumstance.
+ +Destructors help avoid memory leaks by automatically freeing +allocated objects when they go out of scope. +To do the same using yacc or bison is much more difficult.
+ + ++ %extra_argument { MyStruct *pAbc } ++ +
Then the Parse() function generated will have an 4th parameter +of type "MyStruct*" and all action routines will have access to +a variable named "pAbc" that is the value of the 4th parameter +in the most recent call to Parse().
+ + +The %fallback directive specifies an alternative meaning for one +or more tokens. The alternative meaning is tried if the original token +would have generated a syntax error. + +
The %fallback directive was added to support robust parsing of SQL +syntax in SQLite. +The SQL language contains a large assortment of keywords, each of which +appears as a different token to the language parser. SQL contains so +many keywords, that it can be difficult for programmers to keep up with +them all. Programmers will, therefore, sometimes mistakenly use an +obscure language keyword for an identifier. The %fallback directive +provides a mechanism to tell the parser: "If you are unable to parse +this keyword, try treating it as an identifier instead." + +
The syntax of %fallback is as follows: + +
+%fallback ID TOKEN... . ++ +
In words, the %fallback directive is followed by a list of token names +terminated by a period. The first token name is the fallback token - the +token to which all the other tokens fall back to. The second and subsequent +arguments are tokens which fall back to the token identified by the first +argument. + + +
The %ifdef, %ifndef, and %endif directives are similar to +#ifdef, #ifndef, and #endif in the C-preprocessor, just not as general. +Each of these directives must begin at the left margin. No whitespace +is allowed between the "%" and the directive name. + +
Grammar text in between "%ifdef MACRO" and the next nested "%endif" is +ignored unless the "-DMACRO" command-line option is used. Grammar text +betwen "%ifndef MACRO" and the next nested "%endif" is included except when +the "-DMACRO" command-line option is used. + +
Note that the argument to %ifdef and %ifndef must be a single +preprocessor symbol name, not a general expression. There is no "%else" +directive. + + + +
The %include directive specifies C code that is included at the +top of the generated parser. You can include any text you want -- +the Lemon parser generator copies it blindly. If you have multiple +%include directives in your grammar file, their values are concatenated +so that all %include code ultimately appears near the top of the +generated parser, in the same order as it appeared in the grammer.
+ +The %include directive is very handy for getting some extra #include +preprocessor statements at the beginning of the generated parser. +For example:
+ ++ %include {#include <unistd.h>} ++ +
This might be needed, for example, if some of the C actions in the +grammar call functions that are prototyed in unistd.h.
+ + ++ %left AND. + %left OR. + %nonassoc EQ NE GT GE LT LE. + %left PLUS MINUS. + %left TIMES DIVIDE MOD. + %right EXP NOT. ++ +
Note the period that terminates each %left, %right or %nonassoc +directive.
+ +LALR(1) grammars can get into a situation where they require +a large amount of stack space if you make heavy use or right-associative +operators. For this reason, it is recommended that you use %left +rather than %right whenever possible.
+ + +By default, the functions generated by Lemon all begin with the +five-character string "Parse". You can change this string to something +different using the %name directive. For instance:
+ ++ %name Abcde ++ +
Putting this directive in the grammar file will cause Lemon to generate +functions named +
This directive is used to assign non-associative precedence to +one or more terminal symbols. See the section on +precedence rules +or on the %left directive for additional information.
+ + +The %parse_accept directive specifies a block of C code that is +executed whenever the parser accepts its input string. To "accept" +an input string means that the parser was able to process all tokens +without error.
+ +For example:
+ ++ %parse_accept { + printf("parsing complete!\n"); + } ++ + +
The %parse_failure directive specifies a block of C code that +is executed whenever the parser fails complete. This code is not +executed until the parser has tried and failed to resolve an input +error using is usual error recovery strategy. The routine is +only invoked when parsing is unable to continue.
+ ++ %parse_failure { + fprintf(stderr,"Giving up. Parser is hopelessly lost...\n"); + } ++ + +
This directive is used to assign right-associative precedence to +one or more terminal symbols. See the section on +precedence rules +or on the %left directive for additional information.
+ + +The %stack_overflow directive specifies a block of C code that +is executed if the parser's internal stack ever overflows. Typically +this just prints an error message. After a stack overflow, the parser +will be unable to continue and must be reset.
+ ++ %stack_overflow { + fprintf(stderr,"Giving up. Parser stack overflow\n"); + } ++ +
You can help prevent parser stack overflows by avoiding the use +of right recursion and right-precedence operators in your grammar. +Use left recursion and and left-precedence operators instead, to +encourage rules to reduce sooner and keep the stack size down. +For example, do rules like this: +
+ list ::= list element. // left-recursion. Good! + list ::= . ++Not like this: +
+ list ::= element list. // right-recursion. Bad! + list ::= . ++ + +
If stack overflow is a problem and you can't resolve the trouble +by using left-recursion, then you might want to increase the size +of the parser's stack using this directive. Put an positive integer +after the %stack_size directive and Lemon will generate a parse +with a stack of the requested size. The default value is 100.
+ ++ %stack_size 2000 ++ + +
By default, the start-symbol for the grammar that Lemon generates +is the first non-terminal that appears in the grammar file. But you +can choose a different start-symbol using the %start_symbol directive.
+ ++ %start_symbol prog ++ + +
The %destructor directive assigns a destructor to a non-terminal +symbol. (See the description of the %destructor directive above.) +This directive does the same thing for all terminal symbols.
+ +Unlike non-terminal symbols which may each have a different data type +for their values, terminals all use the same data type (defined by +the %token_type directive) and so they use a common destructor. Other +than that, the token destructor works just like the non-terminal +destructors.
+ + +Lemon generates #defines that assign small integer constants +to each terminal symbol in the grammar. If desired, Lemon will +add a prefix specified by this directive +to each of the #defines it generates. +So if the default output of Lemon looked like this: +
+ #define AND 1 + #define MINUS 2 + #define OR 3 + #define PLUS 4 ++You can insert a statement into the grammar like this: +
+ %token_prefix TOKEN_ ++to cause Lemon to produce these symbols instead: +
+ #define TOKEN_AND 1 + #define TOKEN_MINUS 2 + #define TOKEN_OR 3 + #define TOKEN_PLUS 4 ++ + +
These directives are used to specify the data types for values +on the parser's stack associated with terminal and non-terminal +symbols. The values of all terminal symbols must be of the same +type. This turns out to be the same data type as the 3rd parameter +to the Parse() function generated by Lemon. Typically, you will +make the value of a terminal symbol by a pointer to some kind of +token structure. Like this:
+ ++ %token_type {Token*} ++ +
If the data type of terminals is not specified, the default value +is "void*".
+ +Non-terminal symbols can each have their own data types. Typically +the data type of a non-terminal is a pointer to the root of a parse-tree +structure that contains all information about that non-terminal. +For example:
+ ++ %type expr {Expr*} ++ +
Each entry on the parser's stack is actually a union containing +instances of all data types for every non-terminal and terminal symbol. +Lemon will automatically use the correct element of this union depending +on what the corresponding non-terminal or terminal symbol is. But +the grammar designer should keep in mind that the size of the union +will be the size of its largest element. So if you have a single +non-terminal whose data type requires 1K of storage, then your 100 +entry parser stack will require 100K of heap space. If you are willing +and able to pay that price, fine. You just need to know.
+ + +The %wildcard directive is followed by a single token name and a +period. This directive specifies that the identified token should +match any input token. + +
When the generated parser has the choice of matching an input against +the wildcard token and some other token, the other token is always used. +The wildcard token is only matched if there are no other alternatives. + +
After extensive experimentation over several years, it has been +discovered that the error recovery strategy used by yacc is about +as good as it gets. And so that is what Lemon uses.
+ +When a Lemon-generated parser encounters a syntax error, it +first invokes the code specified by the %syntax_error directive, if +any. It then enters its error recovery strategy. The error recovery +strategy is to begin popping the parsers stack until it enters a +state where it is permitted to shift a special non-terminal symbol +named "error". It then shifts this non-terminal and continues +parsing. But the %syntax_error routine will not be called again +until at least three new tokens have been successfully shifted.
+ +If the parser pops its stack until the stack is empty, and it still +is unable to shift the error symbol, then the %parse_failed routine +is invoked and the parser resets itself to its start state, ready +to begin parsing a new file. This is what will happen at the very +first syntax error, of course, if there are no instances of the +"error" non-terminal in your grammar.
+ + + diff --git a/examples/calculator-c.y b/examples/calculator-c.y new file mode 100644 index 0000000..60d7dd9 --- /dev/null +++ b/examples/calculator-c.y @@ -0,0 +1,45 @@ +%token_type {int} + +%left PLUS MINUS. +%left DIVIDE TIMES. + +%include { + #include{*)N{QCdDxkkl;p`PE> z@JaI?uu29;{`p5-I-kD?`u+bu$T%)d28P$`J$iXRUS(j|RmcX)R;Kc2K$LCXDF%iY zFMooQxD6 }Gk>Se(k6zoGT%bT^ zy#%5xf0T%NbhFm6Lz)tt{~z$nH-Hl5VJPj J$aqu6rN9PBRgD>no z7>{{e{8u94(ajnPHGt#)gEVkDgy{#lufaB#i;;n$)Hu|m+17|1oD`py@OpIHPUB!? z_%Eu!&dBg0`Tzg_$5>ss7#SF252xwD^26aY1RK Tucw zkLEWLNEMTd3WwnVkK-($`i{Y)^T7mA-jxOAX^HNz6wC0GS~HJM3y)s+3Xksk3Q%r* z?9uw)gWu&JNVuCt#iQFtg(Jnom aACWlBFVEo7Y2eZ8R^icIR`GiE3%2k7 z|3kvbqg&jgn-5gRbr r=(w-bl9Bgf$h%`cb_gTe)*^0h~|Ah-lPl)T^IQM|NjY~_J(KYH^)%V&cEPR2e@s_=Fw|< z={Tq~6fivSqT<{C|Bl^m60HaL`#|fS4Bx(1gS)?5*rV6<=t*!{W_aL*56A<}M;RS0 z^CarZJiFZ#Ji29GG*|O5m0t1ac8>7qHJt%b?9t8O(G4 @gn(uu5|KG(jIi&uY2h`U3E>LSeI@U49G1f88 zF&;TK(k6szh!)VastFn%||3UPap>oyu5(=50n@@JFkQWgYvgWw{9sL zBSUA23Xey3Ex0-s_UOF!;=yN7qd_;4jgbK){vzS?|Nkz%6^xF}e;N7vK#QzBx jdC7p^z-=;if2&cNW(`OBl%^vw}aGxvxDSR*2| zUS@noN)Nr^KRtSRCBXKXo;bq5@cIlWKEV!py$bAGh{sgs$FK{OeM&iBPGewTnBdWQ$fMVZ(XsPtLk-)1hSK+zm+M!1 zCflfZFus3r{u3x;v#505`hLrW@r7e2i;9cot2)*1mtS*1^B=@+j~Q^=9lJq_Ue`bK zm;rJP1Csr%C;3})K@H*Li?8Q^?C?y!3bG~xY7Nwi*GF9q-@3LQ;P03J|Ns9>PzM9y zU&nCI&hL(4pe*Lu`6o2kqw&oOP{Qb(q5`T{Jvw_-Iv7A@L5s=+Fx{g93I&uZC vHc{ygQDO1u=J@6k$;iRqdYgfP!PW3& z^DkYW?idvg{+3ywR^P7_{uWT@srgqie+#HiYW}5HYVDDH)Q9m$TBC)Y7JrKu6R3RV z^=3lr(S#ggV0h8`5mw4)e*`5~hUQ qblz$`$=}NT|NsBamzoE`{(J7z`R;}F-~a!+T~tIox@%N2Qap@p zz!f!rYX!(TjYmL{1xb$JvUfuBKVAM7Pz$yBD5I<4Nsr{CuQ@>Z!-0R_H|JiP&d#GQ zy*_mp9Qn7Iu!FiB-&_hAIZ7Wo@bA0V{7aX= iSdBuVUJ$7|ILRDI%Lc{FSlMQz3$N~V(!{`0uod& zT>t$4|ML33|Nou&x4FnOesghT s}p02OOID&KFvsQCT= zze_id%FCNzgF*R &F)PWr90gB0&X(lwxhw-m(>yr{yP}Qm6 z(Rt6O^SR^yYpn
ffzm^LiP-JcDoNQ;*KqVD1zoCr)q-_t5+YD(^fyuYzj^aFGWZo Sa;)=zQ&J_}`MCyB$@uom5H%x*Zj?ofJwrx*Y|yodilC21SAlau5QUU@8tVNDE}p!&m?RPv{O0 zF+5-$7E yTqV zN(DVE50<_GD*<&WTtIaWYWoz_8t~}lJ$RIXVb>&x8z%1oImLGM9tMUNv9JFBM@l|v z6N2}H1{%QO< <17pe`#^&%`#~FmJUS1*Xm|zcTsU)pT9KL_y%QJ` z7#KWQ85%%C8^Hq5{>5?7P&R`{^C1oo%R{9fq7Q=x57}P+{~zsfoYm |T)7{_0@=?1R)l1~0N8#J!uGelfY`qax~dh!eo?T|tkZrY z{137f)&7Q;X#OYKem1E6M!4*s3O1UR56OPe&Ok``gIHkygB2n9A2im&%D_Q{|DQwr zzY0_xG9ZV)N4M$BUknW0Y^?|C)Ic5eUXTBf!j|X6Yc^2-`~ZgsG)_AYd03t(eS6#u zG#dfxg1Rs;fI5EQg69mlJ=*yhlmK72eFT-Kp$s0KpkAdbLuUksPp5{*aR*RhWAN!r z5I}17p{7Sr=c>D& ;UYr6kI`2onJoxPYf6#aV2c*Bt2 ?eg6MHC^@o% z%scGS&0F)60d)|1^D+j87u#OInlp1=pk#mvjvOtQ0F!z1~dN9S>mgU^^>oCdkL(^&xQ>TYk9*V8?^d5`^IVAutk zLjiYjJbG<;cQP=%V1T>&*>hOE4((ro#`l}wNVs&ztGKq_=I>KwW?<+x?{-)4==|NC z&(iC{#%TG1zc-EvG(!KWJ6OW8`4uC7M;IdmgKKZ~f1hq|4$tIMuASFB4?bspErwLS zHNRwRJ;~nz+CSvjd8YG(qov5n(wE)UGLDutCs|7GgRKKK)_l611suCII^SzvXFPBD zz4mD9|B8bi$^SijZGKwomu~ZHKEUDMt78EgTXkT7sXT7^y>@o%|BC4#mCXk@psG8% z>scHvEB^4eR{#J1-`Da*={d*F3x@v<-@0l(aP2$-?@#!29(V0#`RUqvphC#CSI5TH z@`WS+lmo8(+YY!e9`)&UXY{fBUV78f@-=@eX#UEz^>&>L*r~nV|2?|1IXrtSIDC3V z&cEgc*JItr9?i!&9J@JuyBRbuG9L6vKIzx#a+bmJV-0KbLB>vQ&(0s7mcL4`A9sd~ zNi`pl(7XVOaOmg&KV-bF+nGh%SphV{5z5HG;L@A%9~926otJ#NojH1){)58V@T4bb znA=5#=e0Df|Jv)y=+Rrr=wtbkzXdcO=h6AowcF%G=h@B^uC3oHAAsEN;nVFc;Mi>m z3h0V+9?Ab*yH$R;wmzvm ^0flYJczR670bcldyvDi+vZ2>|H>J@mJdrG zw|?XAI|FJEU)Ox^XlYT> eQy_VpYXK?N2`Qg!goYA#c#m?3841Y`X z|Ns9TJAZ=0;IWJ4IsR5JP^W7ttR2 MXou^ho}z`O>3T 2cQ|Oop;X|tCpdk0bO%* !r#Q9?b_hddvTN^xAv? zH3%3yx(z@=F5P|#uB|64S9n++FMa)bC479*!}5EHa&tWoQ>kck9S>6}|I04WSSNgZ z#_+&lusfk`hzZ@{60Mi``;-|O7#u@D=@i^)?&kOCE#&a%Jnz%Xatu5~=>V?v1&%}Z zL3ngKSb$n$A3Qq0`&b?;Ve@D{#_{@Ew{7khP~vz0Z}`^mwnsP1OP}rt4&T<>rJ^rq zF)%Rj%QN_PM_c%UhO}BiBRbvA2CWB5Ui)?jOZc{4Dv3{<;MvXO* pu_;>gsl~zW)Tu4Xh79 z)N$6U2#I5#7#K=eK IZ$HGuj!%^z_00} zlEAMSqEf)GIR`wd#;>^qJetO@xkd#vz|XI_MP&mhziaMM0nNrEbwyoNBn%IDbpG<_ zw!QeCfuZxGN3Url$o^ok^B|*cpsBRZdmi1k>)wOfwk|3hpusnV<1FA=(c>;EETC)* z8o>~Fu^ObW+qC691H*pMDwY?!?t&VQE-Df!9>$RM4yBwPjYmK}iaz{;=PpWy0k }o18EcM zf%6Y^oZqMOKk_*LGY?P~x;yp<$PRAMDE~Ic=A(?S!7G_uI$wZN6SRSYnV(*mgW9mk z7Yq-yUaH{s=w_Y%4m6a=0@jS0ff+#g_XYcN(29XdZg3+V5 1+6Yk|Iea_T zQR>xvfUEhT3%~1y367RmT=;z+c{CqY@aV1ujW|H&S6+O+_5XjjFGFttWAjgr@*6 z-#jiq^XUBe{TOK6v}Aj40O#vNX%l(_*kA7kkH@@!ap2bf|Df@SZf^;n&R3cTJ-Tgs z-+~quutu&2^~9TBa(MKbzE}$yKfV3`zfZSq*<0AWn`f_#KFAS1-Ps_ol&XV#jTFkT z_S;@ikK3o$^vM=bb?Ly+Y|T-AxSQECnWfE#@x%WIpc!`yOn0zC+;MRo#2ujdHy@BY z{@wz+ WaVoEeasz zozKA;;f3){&}yS2;1x9685kIRx=mlaW?(qRz~I?k#^D2AIMVu!zonZ6l)mf@-@X *H>=xgXt_55G=j 2^`EfERiEtuH}h%||>?(wGB-M>p@oSD?_S Cc>$`i zOjD;bFuX1Y<-2YaRc}Fqg1w?_5LJ^`ffDF{!vilwZ~Xu7)A`Hrn@i{W7Zr~|&SYhL z1r5ZP+rhmRQ1glbY@r8uK^K3^e9&?ZkOdySqMM(CEp~t#dFVRWNN@=QGF1s;>gty; zQxpIF|3AS8q#bN1*cZGI_oY3DIt&!?y{6lzF)+L+x(>=k@4>EoarF_{iD54p7!1KF z1RVA+um6Sh^F4Y?R199|T>~j|Q88$+VBl{7ow Lq3^$~~+yH97dUUh;f!zSgDUfhD z{|6op-L3*IodzD=tVSR`oh~XIFJJrt)fJHTHYC4@!R5|?Js}*3dH*kXbhDPjP11$w0~H&fg~Q#fQE*9tKcK?8L`A^x?aPV3Au+E38Yoxr z=r#R41ysj^);nlk{r~^Pl^?LC$te)m^a?0Q!1EfmoL~b@e}ST*Q}i{6YW-iL=Fx1= zP@(`T)1*O_vPb8&7xADek^`Wc2)>@g@BnfJ4(?AZ1e rX5|E0;mdo^G(&rXY==R=h_y z@5ZML47(hW)}LrhVPJUi`U=eB7q5WE)7`<#O4fsVlVKj+=FKk{K@&9|ogaOAU5;^t z21CacJh}xvx}CtCSV2%Z@6j2c0qezn2KC21El-r*^6dQQYWNl;@72xn&Zj#8R1cNd z^2;-LcE_kFfEr6`u=b1g3($IIkM2+jk4})=T_rraqd9y!L8?k0_;#nLSopR+DLv*1 znz;n6W?}X0HhaAsRvsUQ^ut5J(@D?;CH w(g@9-X%Po`9niG@c9Us(cOh>0S |>gzZ)I^_y72}`LHr{@Gyb(pDg|0(Rl+DVxXbjg^w8+c7YZ?gNtO3 zUfYC83=A)BUxKBFgO@<-BSJvSPGEuBy&u%Y2899Zi>3=8f4l>^Mf^XgXn*F>*$kHM zJpLjS } 8c+Ck84@f(m!K2&ah2w?)|1A&m``qy8eBopHwDidi9|i`7 zUT@Z!-+zLKKw1y*`=4;^b>aO#^ZU=vqoBb^&@pR1$uD|q|9c#FQ30)HVesiyoxYfX z!K;@Aw5Wyw)FhJtEi46>yc2vtt8_u@A8eBrGcdSzetq%l{Qv*1*5xX-NuJ&A2B7&^ z4v%h@3)TS~{H@DDEw1hoaD%|N^Sfu~x7RX|bm`gcW&m1g<-=^F;$oS>!QWa9R?Fbh z`L6S3=PmG>7)QppFJ^;`x6D(iKkM819nyn)aSl}Wm8fudG`pw>aCr2(F?v{*s7RD> zf!xUPG6FP2+?~(i(`#C?kbwc*Gx!hcZpu3_c!C>OwxuA)8$R*qHZVN!!s0xr=WFY{ z5FBM%=Ru2BTqRl$)T_Ph1#1J9o86_L<={4p!D`sf|NrmVe1y@}GF753$Ftj2!K+*6 zL31q+Q|UF2Zr2EpUR$BXpz;_r9%p#q#kF&w;mPLO5XQO_5dVAhMlga@`gDHx=w`VA zamad*$2xEH1~XcQhScAI*-$?Z(SO+w$}caTo&Epc6J$^8ff7N`kYBIudx-0E&i(%n z38h14|Nr;x&aD7>zm*l#dTKtR0m>`Te%nsa9uaVwdimlnC;)gpRxvQ_y1)%izjX^h zlx@R828I_N=RlPQq`ZK%*TIYVJUhR@)^CCO6HE&j7&=2hOSnLl(2{eYPy{WSI8c#k zc>A?2Ed5*Ns7REAdv?31D0p=1+yI4HNt8!-C}>^ry@jAA!F$64FH%7v(R`TE(K1Fw zqDG_hu4Rl0Pw63_&X>DD^M|k;&H!@WPmon0V@p?pR&yeG5mbJFLaEoZ1!A(}K2Q>e zE{}t)5Bz!d|9^1Q^dZ#S%m=#!G;i(I&0^r$e2fFK9`MXr(0ahykos#cV?h0v?l2CI zZnKw9!7WHc`Pf{~!R68UyW9g*miF>4TF$`Wk&N8#_vua-01ce>nr1IxU~uhrQAq(! zq<4ZmpK u{MNk GC0g5M(E{|@Z7y2N_ zbv^)v0Bn7)tKpOASeMQRjxmt(%A?yKYVYy+poZ#umu^P^k8Tdb11~ Vx{OTZmJ2L^=ur_M*X|0QU#6{KA1X7}hd-GHorB1pdpR6oKUPQ7UE z$ONh5!BF?A2c`}bQica!ID*tY0SCMTgG;w+<~;@mS5UX`Cpf%d{uDwtpA)2S4MLwG zOy5BieOz#TQ2Q>P2KgVff(DTtLF+4eMPJPWWfs$C^B5Q)1v_MES@RnWly0nq;ei)5 zKf%=^f6F7#R9m-;ii}6+QP5(wK1Yy%;Wy9Dr=a$QCups5=X;M{)2Z_q82q|zJ{TTw z><$-r;e8sEvG#y>tax_EbF}{V Hq(`gE>69jX}xE@DI4cgOnCaPJxWw0yfs8+u5S^n+LzEvjb>YvGo9G-7|ByhlHg! zN9nTefD|9F!`SD6%feOQuGK3Ka3btA{Wh0@;l;93|Np<93i5|X=R1f6&Zj^{R=fnr zrNXbRVeJ8r?r2bhs6=ZQXp59bC%FFI4&Fgh@))j}?G&iQ2dgZ-1{3uJE#Q1}^8bHV z%MukC{{EAo=<9sB%M__eSlZ3N@ZttYcjwDppiOPC@JI$Zb3fSAJ}N4$C+mC-Z~OGx z#>@o`tAP5q-7YEyowq!CO`Ye0)16PZ&JDu@p549-FHW5N|KG8>mWQ##8Riy`=EICH z5 }u>YJduXH%<*U1`H)nL1n1{sK?#;-m9DC1Eic%Ir;zp z>r RtPA9##EFeX1j)4;8Veqib3s7Kn9)FPmvI8=l+6%VgzGvsL z7eNR|xPuhbKpc?`R&ms~^;^kQP$*3RH5?rn__v8LJ9db$f!mFjN c zhT(x1ORoO^@7kg7+VZw!jc0E>BY4UU)Nbg!|6;|l|NniG5BT-kFu&ddEnj^)zrPST z_W%D&(1-=UJi~raAIYOv7Bmm`QWRYHf%CCr2)Km|DNq{Ud;pEwbgu`s7m |nmJy7c8(Q7(!76ZeJG_VjP7FL1G>Fxnr0pB>`(RqWv6*O$-(Rc*pCTNx80BR!@ zUSnW@n9L6{rq?#%8fZ6O$s&)=f1cfYR6wiC3@^QC0yR21K>=IZ;n8jT_&TTz6*ajA z@`&MWk6zP{?F RyN-%+UvJvr{<=YSTC{G}m!(m1lu^NWG#Opt>}frOAWw0%&v& z9R8psFWv4E%uXq=`qNFI+d%-{AMOrU=ysRrbqQdE$%hF*)HAy)98Q}6m1hY6b-7#^ z7 @b$>hCe@WtkIu88RmmJI45&LYe?X$RH%3L^wIaMf)$Gc^2yWpqgGPEf z@B4H HT7dvs%?obNwWxqX4nFb;Uj7FPTu_pQ7C s&W2fVc%?a^yHVHyKN?8{C_ zU_tr=;H?$l(Unlo&aa>qrjUhRplQP9Hyr%?tQ=bYm#D+jt4HU%7Zr#8|8KD7DrI$S zW>H}TRh|6%tQ}hZmp*E!{?An^ vwJGIC*JwKw}8>H(?kVf#LM&GMjzOJu=X*iKLg#L1YV~02a^Aq-*9x7 z@w9&9Z+#6e{$_!uE5TcBKnqxWIv=8RL#n5O#%~XS;*fz666!jyW5MashO3kXl)d=( zS%b2s?Lko1{NdSo-=p)eBmXvc#+Cym#y-8(j5aEzmm8`XRZ6cqc83Lc^qOi;1!oJx z10KzXnO=k({Qn=SzVrfU+`ID`q+Rv;!2kc ztI!JHd!T hSp2` zt)N}X%?Fq~yQhL`CZEpdV7HVxyomk#|NqNZ;9!TQm+o0RKq1 $%yaB0mx2}Ied&IHXj?f?IOLh~_@sh}7InOe&5f*WL_GCcoxyYsXjC=~>S(mqfe zG4M|XtzcpBXx<01hhYb3@lpvVJU@aI)>}YTf% ezV(v{Gs%XiSk2G!1Qkk%7Un*Db)B)$k$%1Ap&wkPmxV6)u7n zg8VOu_w0Q3+7Z(4=ilbb;L%&l*zi-el&|$$9alpwV+w!ET#$}r)_)g3^B%14FEB84 ze)j163)+^`!Nbrg`t$+=LvQi_*4y>_Ji1xWUjTI{MK4@nU^vDizyKNo) %NbURozw_`*CvY2s!LjieXf3p7@;8@G(_+wOcdz}R=D=}} zPS%VI3=A(J9X1A+&R3wJieA%olR#zGi!EpV|My6?^#wV&^MhySUk_$m3y`xqfANF& zk2N1) L@#U9 q27885Q;+6a2ZjE6+fM%!)mrjz_2m*a0Ow!100UuGjNH?nTXC#xK_V1a)!|@zKo8h{)C5 zr3Np$K^@rcP>YwJKt16J9=)dXCxBDLCWx&LU|acHc7roL1E#$%7lJgx`hTGE7uxv% zXF>^=?m89lD2;QkjJ-$l?@k$&7wRCRL31?VZox+;28Pz#b*kMmklnn!!T&uvPk8i( zT;xcb09u$1%1fZlFrfA2o}g_+pjo!o|0NtR (g6vm}7zmXne4{0vruIFW&9?|KHK_m 1&VV3!r%o{%s{<|2<}Wb17$3D3yD;ijjd~f+PR75Vrpwy#@cjxr8$+@V8`x3Wv@Q ztp`e<_;h~o>@HDBI0h=FzLms)`Xpy|fjU8@0mq#KKv@X1-P6%BM@6Mh12n^7fbd}} zDAR%lDVmQmHXmT@bPfQktG@y2-@!^A$9Pz}bmZU0=Ghy@*m Yq z0qj=(7EnPC+Og|mt)s%<3|dI&*=_F#+H%(Vzx0|*XLf*3=cjHXkLE)xy>0*h{rmU* zn&Jo5hK7cQl9!#w4!#pu+0eki!0&R*qqm63gWu&^=Rt;p9?iFyeKbEcA7b=K{`Eq1 z7bvdTLA}6I!%MG);O!Yl{%t&B9X=}T{M&p~*byswp1%Z*CZ$dAVf^rNIyfsp${$z5 zw=Y2*5Lo&Lx$fn(fB*k`_Ogh*%mwWLgQc&9J0Z>X)>WW-vYYqdDF)QDMYMVu7+(C| z37g+|xDzzL5$@3|dKNTP)@v%&3mcCDo%ZtEqw&oTc2NDY9< -k&_wG>v?E`u345{Zl zx}6PtI{!O%zVHEe*CzHbFnD#dC_si1%RoKi&VQf;7rg_V;FQ5 IP%+{zA2Tvk^ zyDuOWk~_fRP`U;*oy-ARZ}EIPs1^0!vGd3ao9+MqTV`vNvN<;Y`CpRl(JLC;4XPqc zWkF%kdH)6XGf>Qda%qV#$o+NpC{DNi(G42$VF0-o;#eQByPA)JHi9d7f||kL(b3Bg zi|Vg|oOEm(sDy1%dBF~9F2I(Nfi@O_LKrFazu2=4bv+qmd@wZFr8{22qw}{ nTPU-ekaBOx^VFVd*egbI4IA|^SbkF2(9=*J}r~m&4pA-Y?h%ML(8pm*!01sC# z1+{*9EB<^{)22ZNWO!Q#$hgbr6|NWL`x4_Z^ ~xEkJmEey$bzTFNLzM%X%kAZ=~x0}PYJJ7(j^-}3`*X{rbSI|=KE=EvewdlWR zcZCADb?ni6j0s+zd31*y|Iu8g(vSgh{FYkU($mxTIo_bAF+rT0Bri_8% zh5i;$!wTGPYdu-g(s>9py5?bdtaPWN f^Xx8AQ2HNxM(d`T>JGvctK%P6xz`)S_gNeTd zG_B`qc*zmG^6RxRXuQRs^-@WtWAh 2}oc=q}fAZGBs3>}vSU@W5;M{P_jP1{((Of^s(Sf^s%S$bNgsg7Sl 93 zbUPZf9w_Ysk2geDfclB8pqUWRx=CJGWVM10bwWziko0DF34F|%N3tV_M|ZeJ>jC}_ z(7t*X(C!@2 j_S}yTVIpD~61Z>5PfB*l#p50v-()z8g-J{zv z0%QW{*o$Nbj@APefsU3(>wFBqIqm=z)vuMn^(;)8S2qiT2SlAFXeW+~<%?PcB+I}S zff^Z%M=T3N>QB4`b-7;bJC2gt`Q;g2dT&G#YW-FrYiZhcgn^+>6tt^}@gM&-wqtCJ zEeH6gfDTPL9PpwNWC*PO>t>BQ0va8xGjr*6_-}a0@BnNd^{ECMF@_TU1{-mPQqE&6 z;*5~Q+Uv#WV|l3bK6E_55N$mQ|2}cU11*hY>;y1C1|`CX@~{ZK7}++eY#Z_9|qNsPfGIm_pyTp#)Lr|MLK^O z-iD;xUY=-BJEm8roAEIJKBkrfrEejl5+R_2sQ!W)vCS_S6>s?TnjG@&*7I$BTVmte z`Tn&4)V;pl^`JF%CF-EVq&nZdu-OPIx=UYxT2+PzV95v3uJTRxQDJeh^ikoc^8qz1 zIUIW(867)aR9L)wSv);^S&n;jYJhCv@aPTT@azl~@afFp@a$ys=_~+kvXcOZDyF%h zoj)Al?S(F#J}Nw}jNg2d-??;_sBnO4f@vE-l`3fLmcIp*mA!jiav5A(zqx=85%KNS zInLk5#K-^|S?BQSe9;^B-?Q_YXK%<=4vhA>YwJn=zGiS;;`raU^M@;FL79sKv&X>) z%%J{>XLpDShgY|W5dStlP=j#}D9d(!H@pN5FPC1KAW#Im^~%iR-*=IJ8@~(Vt(KFe z&s`Khfox>(=;i`dh2VW%9-Wl}p3R3OJUcx&JUb0MI|BrKI+;A14@h`g9x9yz>ML-7 zz3Za**|)dkF2jr5b^rf&yQpyZB>SlF_;%K)aQJrSs0e^gvT*J6QDO1z)_d87+@JC3 zeD%7AU!KA6_Dhz35WOzF1^-`)fV)(n^_8ZH2SIyjLW4b8zm;Tw(_~4ZN9Rw-JcUay zivwtPuTw8e11QA`g4*| (Tl9MJ#BY0AvbB7BoNv zHUl(%VE7i9>%agS4ZW}yzRdmWI?$lOQP5z?+Y)Wic;hw^=8h0n22hOvTIT~AdDsA& za0E4|KnrM~?szf#0!sM-%5UKDIPmJ2#y1ii3=G|I5};Km0w_&Z4h~S0we@zL4rt?E zZ;Of|3#ek6qM`tz84p7HQy}|~F)@ISDX~0Q`q8tw&VqrzMURbv!ST2oxQheYYy>KD zJ-gjBJi0YJK i7Kr#^S|M%G2;Op1;+Y3EZ9rt=~CmcnREbeKGwFsJ;Hcv-1xBwhTsxmbaw~;0~<@ z9j(xMpo9~>hf7Xp#fwhlDqvDPunlQ2ym^s8P{n;BTp6W?(=*E6Ss{2OR#O@C6?~ zpbH5%@SMnXP+ 9{t=Ez&WmF@r)ofkd2O;kL)!xTKaMT|hl6bf`#@wEQuZ&e4C{msyEM=%d+ zaQ$*v{nk*UqQ}7BQi|-aj@OVTB*e>~K!$YpsDKhQe0~kIFo3`H7HAtz;}K9EKq;ZY z^V4 `9JO8{8d -`t_GE} zu<>aA7C$Bi2F-)rK^%tPJbG>KWHT@{A7p${^78-xmx*9Ufx{J)#yee9Kn=n^AJ9^M z9~BMHZZ{2ZI*(Ct0BumP@a=rp{E`uraXmab4?A?^sOWokp7rUhQ89qEUp+gId3Bq7 z_UhFEoiD@ys&fQDVfADMDC+rJd_X;jUN=Tx%de%E`M2e$=!1IM2A~w-09xy3@$wv~ zdV}u|_3UN?$q9INp7iJy{gw^Njb$P}ptV%s$TmFi;^s+6^u7!MmG_;;U(EOkYAv`~ zyj1!F?=OH(9&Pyf|39o0_Uv@?c=;7czFS5Gl!kmeA9(bNZp#LxNKnPwT_)nu%_8B^ zy%!S8poL2rCqZRhng(bF&4=;v%Wq&~Anj| 1N^B?Iz;b>1Ob9 z*H4hQAohV~H9KFrc78>KB{C+b}@IkqhX+9#F5Q 4gihSbiM>H+4x!os`c)_ zIK2gAV4a0W=e-y6mxCe_yb3l5R#P#&O#BJzWWUk|9hG#55mYsl@HjTqsQh=}ZvmZq z3W`RLZWa#EE@=Li%b?>;Jp#aylAg)H@S^G&$l0KF$BxR%oQ&e!%sj`P`9%y2$6QpR zz=xs+q=6b`5ul0=B&f>(s_j6r@RIi@Bug{Ayz>LXVgwDao&NzEp78-yz&k;MgA674 zka#xy4;c^Yc2h9?23`~E(Q6x-!NB0C?I!`sTHOrY0UR%$KZT_R!~ZXCJq0ywj=#7B zKBW*+Ju`TAx;em-?#l$Qb)bFO4BZ|9FG1%RgHNt4?E;VN8J^q+n)LVRwVj{A!0@8$ z>Hq&PjX?7f3znds#|#>w^I%~B9fZe$($=wH0XGy9z?+3#R3Lk4l)(LQ(Yy*!v&Xcd z5)xf9mqD%tMG<5>4JbDYfJW$iJi4m`JUS2gbbj>dG*R*C)lI7e&13vK?xF%J1Q=cv z-UrpvA3Zwnd33(_=$;HJhhE5lH-S_KfVKVe=zN8|gz|+QNK5x(Pyy`G%UWCk?i%^< zyF37ow3&eW!_Ee-oj-g!ANhdRcD+YkQ3=YuRZIT=Zw9%+#j;wX{yf;3-8?EDov*-E z?TcIY{{QcGR`KXHT>$cG=lk9OM#BRyoR@&&*cr40*oP4`E-MMzA<%2O6r#xRzzao~ z!5-ZrDxhOOAwGN23EG|59SqvG&);%Z7#w_Ua9yt#gUxk-IH^0s1hfvj^{OxfgG={f z@QS2fR$ho|k6zJ#ptG2JO{Y|Vrl6j9@Vi_vJn&-0V$k_l#WMRqrU=%Ag&lj#{(~|qhexj$hexl?N67gq2RS^tg^oLbPG|zP zrVYA_6g)ZuE_ieXyyz^rbKC(mE5* 6gKyyF~?*ec z0j|kx0VvgGE4VOcgJeOwB|LgfLGp$Nz{b1~0jcPOuTuRA*ZO-t*dd_dM)0cE-!K`M zUY!8L10bVbT%QlF;b8XufGK&gZ$4<5Qz#=$<{w;U2}FhoCc}~n^I#V^YO4c0kP117 z8$a9x?fkG&0j;|MU2p*IJbCom`j&u>tlJGbruqfX0%&OoP5_z$3=FQl`Tt!FzquOz zcj?Sg;dpHd?!Orx=mf2;GAaQF_zO{xbDIBimSnnEmZ)%)B!S9dPe{A3q}a3bm?x;w z;nMlZsoUoROY6x>&Tel7W^ak+gG{ci|4TP|^qSr-1{-B~pwmai;Kh-7|NnRUfDeiX z2iwVF28Pa4FV@ZjEsrlz;V7L4TdCt}`2U65JgBRoR+jdH{0KS$1MEl8DRRBGJ;e+R zu7=-UXo3Q$^W`qkoef}Vk6v4^QdsbD&xac2(HWy+@Y)=jZVeBB7i2m?9Qi_Z9%yyY zKhBbP7t0zIj* ?C!`Rzr*T&UALAr_TR2Q`%qP`v8VYrCX~ zf#HP 7$Rc<)8hk|IXMT^#CW+2bcY5keh{+RV5=U0{RQfoaJY1SaP55N2&qr{K?e`N z1eIIxc!QJ-orU1=evvZ=6mfqzOVV5|-<2eS4rKQ1b!GIi%u(SeDe~+*>e0>Y()r4( zo8^T|cZG&y hIz!L^AYG+Tf=WJJZFRB3{=p8 zTk0%@Fx&MZGCDAKvB70TXG7u)RNuqm454p3$km-laRx42HZp*UoewVEH7Yic7<_Fw z0a~uy%7;YP-dWJ-N(V((5^8i6L!t{5SKS^ujXyy#<;d@H9u!I2UBJ`AZTX; w!ruq#nz{DosQmW;&8 HR#=oZAu5 z76#DzG0^Eih6fy(0}OmRzd164PEYN8|6(b~X}>v3k|4!Tbn{_GXrWM&11^17RQ$SG zeze{$-3LmVy{5IG!4uFH3Lnt%tuIn%g0}j)fDS_e84I$+qw_t;7O)jBTxY^cprx=9 z$nf@y`!nDH0xs!Fr}%U}Mo+=2c?=9Mj?M(NFR)cY*_T0~(F|(og1f1p$&qenjqc44 zKyz*{7(u%R*| |) @JSo*dTY?Nc?G4Qb^x~uaT7+&kb#>=_`IDEPpAbkbH1E3vnFCt;Sa WY|_YI3M!j?zy-5Muj#>D z28I{e(?L1vFLUWuSj4{Im=2BB*9#|r&RQ3O%e JvZ|jrNbr?>Oya-zMw;M9{(4xf7z|dW+0$M=1h8+~nPrzd` zuZ `@MVA%VV842_vgU8X?UsITLl!sE|w4LEJ4BQ*RAsaG)DW}vD=rY^=L2~hZWfY%LixOCU?fC|NyR*)jgi>1#!ns UxXbD)ivjM1o#^GxC#G~`>Ye{H*3<=y+75+XUuqsyrziyKUe!V 1vD-x@z|qn@fWIY-1$KS_c-dF;VGb9|T$TDmKHVuQ5 Zoz} zbepJv$5uQ#U-|UvI%k1OMA$IN3$=5g?1LCe0d-AZTm)?}?*^*@Y3ls<;{RDhCe?$O z58C(V2nrfVR_qP{4UvRTM$ct8Fml;ugjxJ8X^gP&0M7~Df3frl)C5o#eeKf?E*SV* z>_B_2dv(`mGB7~Xt#5aVN(JZunHDARTuF^eNbCR7myX>fDgmwEN*{odZ3@I~h6i5k zn*{PFsF-*m3~d#HwiLlqp9W}rFAD7V5_l2utyJV?9q0}Ma6iSjyQ~6~pz=WtatlvO zH;d9YAf|(-rJF 83gLW>4rNByzpa=$r7pjxM zL(3tcQ9_Uv(BkP^=?rK(2c-aT*xUk{@eG=EkZ 1GhZPph(K_d2oL?Kpmtcdi%JeSep(Nd&iCjwEr44fHW3>A zaHq^iclf?^28I{wKqhvZsDM*f=PPgm2Wx>0|Gn@#4YCoDu0dBLya4T=25Io={0L3g z>S)S9H!8fibQaR&KqzBCQwBO3?!{^hWj9ZuS_)bY^r8in+&llju;~ZYOz&Tq^#A|= zlK&lu^KuvH_C8n|JetD5@Z#D8kloIxgL*C6Z~p&>3>xl&k4wDihepLq-Z!BAk)EJC z-h4WJR1{up><8sm9~ICkuB}skgHl~MhbQPLOjF%7Q1-7;;drqIrr)Q#)WGq$JNV8- zP+6z&GV%BS|GPj#BOaYEVXi9;Wng$=F#&2PDDpU7{{HzNJm3khU_5?-#-8~5 8Jt)SJD{vW5$m{`!A8Kd&E_|$F z9?XE3<{!b8IHbyJoeEkd{`1%W|B$vEf9qV(wLIP42B5=kRKFpurvnddy-@1~yBxGa zpTFhs+yDQG9Xxu;@)o2M6ta(cKrHZ(Sm^ 69kX-E{+FLws%3^ z&jmTGmzNJD{R4Ddcduy+MA`-3Fd_w0=4@a$v n`94>bUrJrVH!<7rLExzMbU~9;kbr($6@e}s^E~*36||;E!jtg`sQua}3tCm= zqr&6U`JgxOKj?Z0&)$$L9EkP;`ucy+IBOqhoxNkP -?;z+@_GwOzCXV3-D zPNx?hod%wkr%I=SJSGD=bPyC0GB23AAf4ZC7m)XA!Ap*0d^%GFTohk+x-$6onw)Xz z^kwnwR(qKTo-+rJSNn86c-;Xym)Y FgsOyeIkFC>Fe%bjn+$bPh1V3ycUGk`=HjJ zi)FG#-8s-nUQP`*3JfK$K}~d@?pg*=XX3@GN&o+QcKb _UILzHvv>7 zsk{KyQW74$ zsN(@zYI@uWv@I4iV*nD_!vtON?9m;hz_=N7#SVC{C+LO(4@)clR?yM9-5wmRCrfrW z|73#fFYET=F#HDMwR{1M7QAF>{>f6d&!d+&HHCp;*HzHUtX@;)C~)~} >-t8>l(X9dAumy@wkRh$&;4X-lfJe7y1ZWXZQg=D%^z7(vPleW#6(N@A`1?T@ zM)3FSWdyD6ISNwV%lk8#fnnD!h+W$w!FEma1C`h9|Nl=g{MHP16@QxwXjO$5$ICF# z90z=T!*M4L(78AuPlM}dgwI>qK>N= w{Z^r3`LW&sbayQSfA92v|NkF%04)Jxc-akF zZ~;s2$DKGpC!m4d0$nQu&i97jUd{!zKaV?sH5q<;83LM2DwY84*s*-a-+vplFrXV; zUGld)0gZ5U9_5#3IPL(xYZ^X})cUQ?*`wRq@FX;UcyzOzhs__!^2;+cS8y A~H zAuAX>x^pW)xfXqw&~XP2(3RAN-(L2Dt_bp1Y5vK`-vYY7tMz2bBXD9+f&>w$1!MT_ zWg5(TkZjcoip|%nTEEpTGkp6}`~Uy{;1C0A 9 z=4o~|VFd5uc8oc^F9CE`H>gH?v9J}?x&&?X=5GN-HmKvU7j$%CC$negkr$KNK-;QA z8Nj`Y``{h#E&+@l$DKVuJ!g;O&fsj^`~f5c8ir+PegI;EszQcNXC4pm$p9eVd2~7} zctB4g_c-nhnNoEIUGl;3V()iQI3k>9c;H3Ua^(AGT)N{WTtPQJNQ1fy;f`UhhTj}R z9YGm{0qR%KszmsB6{xrboi5`E+K&QS3b`7bRBk{{RtJ@wGSKp-*2BZn!j<3UC^+pu z0p+#M3*8 l&SgKq-=_*L^?VtcUoiUih8*PZ={$+#Uq)E+HU{gj;As6{ zDi2EFkc}xK9^FCUouAyt9XLQc%{@8;1Yi!j2s#PS$MRz74p{#5>}K@oc8~xUu%P~n zV|M|EXSaibPv=4K`6A$AxE-|SrGNvp)uY=%q4^(I=?jnULV@nEfYwVTcbn@Z7)!5% z_U6QDSVnQwobl;AgmACrsS*y4ZaWW4s}gNcsRX)A@Rdg|uXP;gv^&UdmWv_aQqD7q zf#JpMCQymW&|Spg(H$h<(OD_c2|B4iP~det$iI;NJ*W6vL5J9bDrJ-@a0dq0){~{& zo}FhPhvuhEfV7`L_mDL|U@Q@P*#j=?K ;@I|)f`NvZ+$G21xlZL^xAHT zWMFu)7`*t48MOTZG}|ly8sY_)^WfR%5_xa}_~>JqAW-`HxC001lp0tlKLMS0(_Js& z(JQ*Q6Ld0Jxxx#Rsi1nz9aOEAO1%7rI0qFno6X X9rmCp4bXyRg%^5_pgv18c&S>isaYsU(;V;xgP?O3!K*+zT~rEQ zd;_TiZERV~%fJBMc5nC%bo5f^@fWK>Ql0l-BtvM>nL9HY{{Qc-Wqi@l2nv(qjei*) zer4rv-w9es3NmB^XeDUp8;{PL;6l&?bQI5{7oY0?|M#>!!ry8LQrCI^1!Kei|IWu) z)In=6!CM*lg%}t-d;J+*4WAg^2A3GeT~xq3caFQLfXgY5P9GJEm!P3QSo*h7h1^)} z*m(og3 Zn@2apH ccHVOAyyx4iBX7gS z-zo%Z)-@ky1YHBmzYU}SblJ@l{#IE@1_np|ee$4l=RrmN4oLa*2eb}Tqw}a^=Uq^_ zdJ=T);%_c~@V$yJQXBsNcje!9))ll&kkJ!#NGF36|8^0NZ^sn)TYW+2Aph3qZw1Al zW5Zv4{+1{F3=ED9f3^5qqy!iknjdlabS_Z=wFEkIR4Vvebs;)RSet*>l=3_BZ@UT# z4;KE`Cp-)cojEEJzMx~MeL8=G7S4itS}Yg-|8L#{Ui2sG*?E}19n>!EhOPwfHT49w zo03`DJV0lPgUStXKi=>_Cun`}0XNXW>@Pmf2aU`8f8kjRO5~trX`T0*9V{4MtN;tN zsDN?;(z=^AaRvsD#v`DtgHq^#d;vbgfCDsWEZP+cHhnT^6+kzVsX?{>|G!@0$iI!* zMvuSc4Krw@T#SF)iEl1mjEwxP@&XJDHZ>(IHu|Lkj{Mu48NazWfyCJbK$9*vJ$gl7 zdNVLg=q^!#EVnT{@WKGHlz@e?+eL-tIK=OuvAj+fl^R(3cJ0u2;oqk1*?Gs2e;+6! zTg{<|LTh+*&rvC`2buo=g=-Bo47z<(SUfr-I66HnUj6{7M2e>7-%5~kIhuc0^S3Z@ zg5$BYwE4Fcf2%#Hh;8_5#oy`&X4R-L+48qK{reAEl4?PAANui1g|F{SxE^X!-R* zx((K&QxJOH3_Q{~>2pg53YI2)x4Bg@FMyG$0K+=ZAmW*>5Z!9HpGizvB5@eYqGI zT=}= _G%D%Q@kj(e3D7#Ln=LJD(8{yW~Hl4B3b zMW6vSQ0yOXQE`9?9B)ynKw^UeAEXqz4;Gv>RQX$MK}(vu`S`b8_~sJG$i(03#>>E9 zQ_bHZ$-}^46V2Zm#m~S1jcy*010=w88pM83pWm~a4U~JB_*)vdK+$_2bmgkSi;W*Z zovj!Z18|-GR}drxN>`>K3=A)qfCI(>RF;C%Cum8fXSWzM5pL&$DgNWZz<}I;20L1h zzeNV@Xqb9yxcVFqP_R0Hwo<{;t!L+*7o~H+Lxzx~3r(Y-WDAbuFtA%N{KLZE`k50{ zy@{H;Gcdda9fy|&Iv)V+UeLZOP+89N_y2!r*np1ydHDytmKy9YVQ9Fp@VAtMrV%@# z;WG0*a=2UqRiw=o9t=L6puo{_XJFuOZTkZ@H3AlS%?CU@I$Kl%?BNjsYWTkF2U`X% z4;&k;WBFU_IKf4;3j+hxkDi@(psoWIvS8n4fR59K_ur7>kCDIS2FRV=OTZ}zJgLzn z06Mz9MkRuQzeNE&-Y2@s8N5*q7P>E_W+MeHC`_Rif~M78zWohqU4iEP8>}_?Ti>z3 zJpiifUY`369{L2`BiW(?8ozMl-^T6PE!O;k5p*tt7b6RQOFYO;opX*bD8Th{gHqun zklqQ74c1nrLXHj9j8>)Gjt$jJwk7i*m7Db`OM!E0?LH?{4G8pT7$opfe*B@b_zJO!26Tm^TNXg z)ck%~1u`2sewl5o_*=lnY4Eq+XNRi>)%q`eet{wgoL<4{`p93 }WTCE~^A7LYexR3bnQPVnhG z)Qw}$%rS7&0p!~Z*ijoG6B4kVw{Zv*AQ3OhN Nv$0eYa0*7M EnsZ;8B@yZ(d)r C$uJ9^WY(mMG- zQRe|#k;~I9(0Zwq4K%;o$>Eb+0=hp5bPupk=cgBoO2N%>6Ij&*D&St$eg`FIP X#qCfzMm&0q1^?UQtg_0zovVK!wje$Vvl@Y6)r| zyztoqnIZ!FYu{05I|9^o`3q{t{-}ji;*Q{!H0W@H1bBbA`A2n0cJq(gk}}XW-7TO^ zO^*Eg{(AP7GdBNFht#9ZKa?Qjte&0UJAXjN8$gCH0QHNSe=s`m&p+1uqn3Z_AqS3Y z{4F;@yJ0|Wp5`B1rSqE)g4#YuLCu%fr$Fav96<1Qf%q>F{8ga+w>2t|c59P0xZQet z3MlEis0e_X!Y{vmfyN&wleWAEjmb10fpjozxcFQ8KL7s@n)GS=3|a{EnmcVm!!IuW zmh#V#UJ5It<1rUj1_jV2)|N}9k6*@phL^M8zQ9=)aIZk0zonZM+zA1@`z1f g35&n91IMWKlocZI6!N0PQurLSRMi$sq! BOFW9QG#>#dhcPw?+^ zV{+^~`Vuxy0J0y{aBTSu3JB2n!V~@$e$di_<~NM|;7w4VtIa_@td@pPkkF|31PTpE zyn)UyLJbD~mWWUP|2O>NDt-LY?-M*c`1ggVFo9AM*k_mcTim{a=Hnbu+qb#k#xUrJ zrG4U{5V%x&@1-nAA*?(EEpGPc6@3fp#D4>qT!sgHI)A@lnGCB|eN+rU{RL2+3OWxK z 1wx}(Z49Fq{NUnos zHCR99rS)e}FYW#d;n(mc7+MM7(Hmgl(R{$cqjL(l(gJ08P?_ ;UDLARgu zind!aFuZj51~MJg*0iu;V0bAFy1B2r
>VDLx= zRp5|TPr!?3d7#Eaii!iMz7Bv?-Y>8H0F`?C%9%WS>zP2EQ0CTerRpzNvN13q#_L-T zlxQ^n&@W|e{-;$U2X=7hF^|sc9=+ipS04opuHJ4w$k=+I^b!9)cP5|SdT@F4=O@U< zCE)7^L2VHU(CV=e(7ahh^8xUI86h4s;P=zIf!!CQBH`IB2AY?P0JY=!w~KhCH9lfs zOl$td=$Ra%65`o>nZc*?zE5w;g&!|AJqL}(v8cQ}`5x>KcV
GN`LA^0p*Gvw))oqFjXq^rys13jkP|( CuklzEJ;7#Lno1IICldj^!X+QD3CbNLeJIIwOX6# EyAqJXrMprQ5gv|GOa_F3|eMwcs0;6aM=qKLKR~E}!m{D+P|tH7Yzz z{H^w&I=I_K1rqnY9*iEzA3Y8}V|MKHQ3(O141*UQIiPY1#O;nzF#yNEM{mf9AD+F{ zjG*?Z#fxL0J)zwpDi)Bi=w$NjW^?4<=FJEixMV7o1WoEjcytSSbPMrs6M_yVYy>T3 z=@q?X#=!7$BdADB-U2Q$L4$k@p1pM(zMWq@4nAjjVUZ0!AArB58ob4G0;pgBH5t8n zZ9ai+Oz-p%@#w73aBcloX9qeMPr INWbE`v@aXmu@Hp-e0V)YP%N0C2JqkQJoj^hrAR+!1CvYO20v@*k zrBTrMjYp?b1&9qQZeJ>cMpeKm=p!h}tp57{f9HjlzTf`;hc+de4>G>A`}Y4oQhRrS zBT7cl1kFW(GXg8PB!Z4CymSDq??N z_g~z649eIpDiJR~y$8(zI(oc(_8L+a?t2U_3qi{}MZxoCE#Ly?xC0M(@MJ$o87K{T z^on|$fpgkR<98^PDx@NMXT-qpVqq7OW588P6R0EsjREkte*f|R|I3N*!TCwTv-vRN zaR+dg^68AQ==3mn83H;}qBB4O+-yJI09w8eilvt}VDT1k3GhI z`Jev(-wE1M=h16h2_CXVc)T S<7o2C@L`X_i+=(d5x9x&;(N|2vQ@09AOP6bwq| z;Mj_M3oiFTO>pLyJ)i&o-w7Hr^60gdLbuTi+7$z7g<1~YLJdo}?Jq%#3ppG+c~l&` zeHi{YcKWdVd71DLWd3#^hJR@wfqyUk!KE$eAo8Pjpva6-F?hj~4yxy3R6ysE$wJKr zEx&|&O#9{k|1Z?iz)|YaYdQn2^Abo5lvqLY_fVan8BMs(k1t@F3gDXNB5AUQY64X@ za7}w&fFj+NwE{etVBpbfx=9Z-nDC-G4Yqnt6Xay@dFpC#b6t_lg`{Z@R!}a3o0|f6 z3 Hz!>8trUd6m75{M?~KP=zyn~Q1PUz{LCwII z@1DVYe$ECKZnN;{2Nglc`q#nrPl4-?!lNHliX!XJgX>=bYSe>vfWDAI(k}p23@Te* zI>Hryf-8QTjPNW>F{nU%DFRo_40qW9B*ikI><&uVNI@b58v4Bb6c!|x;kL9RX@uDV zDt%tAgDYMSR~&^!F=(UO%SNzbP-DtmpMl|}(^F7?)}vcgvJ{koK#L5OTL0I{Syr*s zNO~my_c-{R)q}Z;!=u~%!D0A#3G&^5ka1+un fV}%X6t$q>J%_ zN9+I62e5SmFdDR&W*=yU54hTUQJV+}AL!|z` n%Wb+#hpKev 7{0h2aq}S~~= =VO4wSyT1u{>9;-$L)7B7tFKq-l*i}52UX6`B8 z^z3Ch1zs}j0b4TcB;na9;L$Da*?d63x6|W>XJ^0#&rXLI9-SP%mOo0ne3ENa1iE8X zWI!EP4xi2t6@eG0Vj+Pb0P?+SXN?Mrat!F0!V(n@-(Hzpj-4zjz95CZ-NG+pAxjHg zKxOxZ*UgY~3U7i|&bX*ZK$Z=2ynG2!1R1~Z=r&zg04fQ-m6U*v4lDQQ{AG9mkzPEy zxuE&Q3AEtIq1!XTrI+QTQ!h^=;|b7OrF)*8zmN_u^y%g~kDQ;qOK|6B36E}BZ_v)^*4rfk9^LFN-R>MN-Nqi>!2;a{ z3B4@eTzXa79DCjVyD}beQGDRjD{{!Un+ud3EqpppyawNg+U>vrnn_Ui=oawk=CUqK zD1GB%?Zi>~49f|jpm uUL~&c&nKnZvO+l(93I#k)5om%*c# 0=G7QHne!8jdsf-B=U@Ts7_$^U#h|G(&sfrNLHcdtmjPcO>_@GAY& z;PX8F{`+(u^6WhC+3RzH172Po2i57I9Ss~FmKRGufX=5$bL{o~@6mb4@S9Jsk0-O| z!H3L9<*_%1N4JfkM>jt>X^DW6) O`F$tf} zAP$dCE00bu0gp~WkLE)XK9=W7w}PrGP)~%zRq>BcCyUC92~nV&!=eIew{p028oP96 zv-tOlJn-mr=J4rs7Vz!ndU@vG|NpMNb^l)mgAedz@aPup%mw9#OC>%Y-R#}<9Nh&8 z-AtghcD+2`nqM&X^7JwOR6OA^!=qc|5GVuiy;cU5``tktpekG31EiP(9B s!^{2%k8a)iT+s32-7Ko0#aAGwdw{B|xBM-jt4BOKZB#(_Zgf6(?EC^cnDs@% ze^77dFerIwfM&5gQap@Bpn7kV7JD=wiGVD;LArm+@W2btN>B?%!=v-COJ@Sd3$CUA z|9c#F23ZL@< Kys z|Nj5~6148*#okEJ`aNDhGX{oTvY^updrehzKx+_eC5#yuUc8G$$t<9G)^OMf=^o8* zBs`jJt3c=8fL7CS@V6v`2NQG)azGLAwp8M!9TRMQfJZlY{Xc(;HfThuJC~t5mc!99 zR-*2iXLqQANAh8xUKP;QJq$kGHisOW>v PRmut8x_;s@=ICeXL52Xg}O=$)l zN*x9of9jTP%m$4vi>Nqu-gNA(1|2aD+85kipyAo=4?dacc0JE)b?ErNN9TnG8#aa# zt_B-MhEkSeER2kx1ExJJkC#4i><*Q1?DjC|ya1|aK)Z_^L9 e+k MJ(C?cJiEgMK<8Y8`g7K-(OIAyb3m2NF%~99sP583FBUh0 zI*y3Tvwb=(UaxWNy!lcKG`ZDz^Ytvyxq2MFmURyNE&u+4I?Sa8;N5tl7t}xvT+i-( zpgDjSUX`E?^==l7u;^|T{P+L=%hTXRG7O+n6Ot*ww;;W^lLJn$sm2TpyFwuewpbIK zVADZE47TAY2{vs4QfdwG=+@nvi6h5?R^a<|o370SwdTG-HjQKE;CY~V4ah2VHOw4b z@6miD0OnYDx$&a26ea(9EhH=ddUnb|voL2S$iJYwKUv>_wy|1*Hv8rM|NsBR`%rM; zWEe3p>@tT0PM8Krv8|Ur1H%i2FtD^INZJe{Z4QyP1W7Z7f#xSr^EYG@4}XgVXb2B< zys~HK7mv;ti1c^d0lWYeb`|@FZeN4elclmq^#e5De*>+t21%B@0j+88c95`i<*0q| zq8hxEz?H!xIg|sudD}t3r`zNLtUl@v2Avn5>C?^a((TOQYV9ad8{^p>sNk7=z@yvd zkf-Ip63OOz9;Q+^$L2a7rc!&K&TlWmvp{W>5@YBheaGGcMxV~}FFt_Qnsgq2@uC4V zxE&5Urj5h1(_O)%Qv%7o(V+XaO54G6i!auKYD$p79-W6vykF?Wfpms|mMG?0cytE9 zHw7_(mi}}acpP_t6uzAi0-%G6Te(0*e)ACtSgLT0ho%e1ZnqFnQ}_<3{xSp=KA <^LhwKIg zh6m_WAJeEb& a;wtMx!B_iO0=;&64KW%tKG_3&HQ&V%quth?R;UXgW2JAjrhvx53}6I@$P zmauztnx07o%{1Dwg8X%y^;0U;JI7hyLzyp}N QE$1$i_$c3u&jb=_BhVE9Ln_UJo;igXmc%iBMaz8SqaEFg`jiVL6cMx9>-n5 zk=`4?*y$?Z2-@`c;wo6jJCKd5{-C?V@W2b#QqZg$s2|eH>X-^zz3$O$dp-pe Z z1>mbukAP$IJXk?4=+5<*is0(GBo@?O?{<|iyxn@BUf{JWxV;a$?GIEfn|pM-D)?Bc z+$eqP2|3Hvvztf7r}Go&@&%Bh7n6!X<+iH@qh+i_{Y6-Qg>4{O?g=_zyIU8ui5V1o zI?#IbxHG6)V*o9mzyBg0w5g}tL7??*UHUNwMvv}jkOxX{NBeZXj|E*S=ot4>8 k%Qe|;M4ibr}LXj z=X=NhB6q-!u)JIP3SucF#6U$1qI?F~2Rb4MM1#x(sRZ#s$!8RghQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kina18-Q2JrkALug)NQckKuNxnj2PELMuVo9n(Zfb6R zQKdp!evv|=LSAaQLP26tacYr5Vsc4lex4pAMDz#%h$;r6%uh@%DM?I%7)*?NlJoP@ zGSf?o5|P}aTAZ6%T%4Jgu8>%iUYeVlSE7)gr%+s;S(2Qg$Hl;)TAW`1Qm#;xT3DJ{ zlv=Eim bB7VFq;!$O&K_VTn1JDGJH?xw(mXDGE86d8rBzhZQS;0$fS8SV UDJ$Qi}2m3Q|)P zk}4Gnic*tPQ&RJiQyCaQ=0n{BHW{}{kZTwibjbjqxPgRcT4r8~LP dPN0L;~9zzbnQwi3sP-u{rvqxT!VZ){TzM3S_^dTauRcsQW9-#eO!J0 z{o>smeS%$K`VwU}kYfVo@sClf{X-sR}uXNvSysNu?zU8Hr`73MrXs zX{kk^Y?_i-k_d8fF}MJL+JMhGu#*X>OUwe@%mkW@09y-6yx`QX1aX{_LT0f-UMeWA zN{drd^g!hU*wGn@#pq6kiuia0gIy2Om|p@`l#`lPqMMsvT%u46&J&;#2b36sJc7Y~ z0XftMY`~b)6LL#)N-_&_QlXlPk#s5Krzs>V6qV+rV(N#M4j@-zx}Jdn9)I{k zPQeyDH4btYIQ$|b{enXrLtJ5b5k%W6sHRwRF~H=5LVZxA6;S2leH|m>gFQUmLO^;! z7+v1e4 JsYgs(@2JE_qMCc$gH(cx?Ld$-4#x`3J>2I)`}r`(e}X= H#=E%rgutA~08(n8qoAO#rJ!nPP^@5Ur;wLlk^!oqwDh?^ z@dZ+$ucZLbqb~4#rvO#~iX|j BF*YNosLPa$<3+Mr9=^ zN#*6++N!32@+!z=1r7gz5KmvvC|4H+|IiRkkiNv?;?$xNxN=1# 0E;IU7w0E~OB{H4k_b`{%GS2F!5;BJuEG93VXiKqf(S__$OV^7aImw# zpPP@Ta|oK2;2<0lL1+?{uyPQ?dbkXR^>7(<>k$&TY(ZEL3S9< kMrLvbxM^5Yk_cjDq$(umr=%*R6(y#Fn^+JPNvY|XdC+n! zvl!IwK$Kt3DC)r~^FWy(A5{NA6+^6tl&NW%Ma3l`J0Xo4a5-C0lv Y+1pvoHFUVxUt3c01l zB_IP56`-M)1GNUE9$WZ;+RMeondx~*jSmH-Xw~9aC5X-dgdMqwMcJT`2S*k-_>t-m zV*Tq2ZQUxxDuK)b L8 z+97GM0x1DkWl&|%b`iV}lA4!anx28&6#<7Hs2qdn2+7Y^$W6?vgvKB^^#yqZgE9q3 zkpd#6C6<6JgGLL;p1k}LP(_@pkO*pr7vz`bfg0p_C5f5fl$ofIm!GE#O9!Al0>Yjc zy@UKb1tbf>K2p+S0EHC(@C0c>iUmlpGKA)3=jE5@DWs$(=OjXUHVWCPmF4+GDIlX& zRf{1$fVl&QI;biJ21qL%oahzcJ)<;GuSQiB(ZYjSfnPnS7)PiCg$7)`sw!9#?CZoF zP%%}hkdm5~nFl&Z6{HgC4zL1H;|iuIDODjovn(}FArUDD=`n!f2h>l2 O!las>l}Z$7v&nwY1MpO>nD& RDJNiE6Ar 56P_jG;mdr zUX+-dn^>f$08w3@nUe!5x515TXhR+B6_}ZsdBr8Ei79%ZavY0o`N_$pMc}dn6f8xV z=@})u8K6E)ab`*?D72uhaRqR74z{f*wHVY413M5pFaoIsQ}R=b!4-XZeo;2KBc586 zQwa@b2G@$j L^vGK$?TKN}9H|1`G@g0gx_xUQQ)AoRSiYGmAkjhN9Gh{Gt*)2A6zL|35iD zx1cDs7}CdqjOQqnfChkI&V-r+4Q7S%%#w`!(h}&<4=Daz^1*(Dj1Va4>w{~11wB1I zB~b8|q=K3SAa%hR`Q-|*zCUP)pg2FL43ZI$>Ml@G4asjBfu)(LC7KElcS4K@#|hZ| zh&B$?{^I ORil$uwXo0M7vvAh@-4$z1xE=epY24(HylEl0eP+rb2Eh#810r&S5 ztgLJqYE+9E6ckj8RrR!r6;w@AxEOSG8MsunisN*36+lfRE-(+oQqa|n<6=-{fQ=KS z 1Gw{B{L)|Lb~Y%hPJi^Mhtn1wgwETcD4qfhH|P+ab{I2LoT?A zQ%Fn9%t=k*VkpqH%k#<4&rZxpO-!*fU`S3Y(6vh|$SDBDDwvZ5<){{0sis&dF!-02 zfD$HTkWNoQ!7(Wx+_uxx)8k@LP|#J?)hY)02*N40fsRDkfd)ntREuH4MX8B7=wihs zpt1!as#;u{2QAE@gH(E4&;lAffB`B-!1+**i$Px>JoJ#6my%jxYn#QOplY0=psK5- zr&Y|L0BRR8C}@EPXD|kTz@pG08&IDJG9&~R1*_GC%7KP+z@mxC$*Bb;U}kDjQGO8v zxR;fbnw(f#oT{K&Y-_7pte~aOP@cq~mtR`K5L^Npicw9m;$qNHP0<8*%~VZ`6~GLL zjnL{6G^nKja=8_#8c?u-jF;Fk=vnC}W#(DwmlhX+7!0b#`l`hY0gfRa44{Ogms7%^ zS_~qKk{CeaUa4SV23YP;O;J!{P~u{!=3>yOtSkVJndsV8R)QQ;%f$dHyzFcZ7*taj zs#S~8BAAOoFM~lD5(}Vos%vae400hCgT9t(v2K1@YEgMnW=U$Xu4=KCJ_G7-Ln64s zS63}o*JCItDotfbOUx-wWzfqihWGFNo&8;0VZByRO`@k-tO~ZoRzcMWX(S-r)5pcx zF~|i)ZDeF{h@-Q&i)%oL2S}nAF>-(+VQ650kO6negCl*N{Cz-rknC`C^zm_WboK@b z!;Pw}jE9y~whGZ)4B#HMX$q*n%AlZXlA^;9i!d58)PT_&2m32B5-RKLAL<7lu0ZR` zgNHHVeLW%L1RyscISs1U*D(T;VvzM#R>p% 59pSGNA4g)1Yj3{(=qA*1UOr8ft#p0pi)oQ(6pGLs6f{)GpIBt z)z&r>61c|Tz*S;U(g76~3JRbx1O-sp0~*T! S5)u-)@XC)N zv4A15zz9^#dLl-uOY-v-auSQuQ}q~BQ}a?X(- I;>x^|#EN)G`2((P;-SS7gaazyON&w&z@u^T zpj?`klV8q|T2WGz7!PaZL5&2ppy3vRIS^go`U2dViH9@+7(fG#4B%D@LtcI!c+>@y zrNPZ$23UI)YAU!Pid+OSz`71F>p>Nxs;Vj|7K<5NK`v8(nE{dlhY7eKL~g^w+V7x3 ziy^tR2sDJ7nwJ8K0&trH%Ju wGYYABB}JL3Fr5%F zP-rS>BvqEA7Hcx7rhrH6K`m*x5qew<=?sO?1`w#}0dqa1g`vj~!VnB@xK=8Fh6!>J zBmAJo(+jWv{|mhT|6kz!|G$Cv|Nkqn@b~!q|3Am?|Nk2Q|Np=E{r|rY3;(pw|NkI- z1GM5b;QxP(00>_o;Q#+0{{R1<@cIA$NyPvEJdywZ>qP$l?-Tj|e@^88|5KoNPvrmq zUn2kizY_8Pe@?{z|3BjY|K~{f|6d~E|9_2y|Nkv;;1}`#|Ld&$|37`@|Nkx<{{KI+ z_W%Eqwg3P7to{H0&6@xJ_pJH ^<|Nmw6|NmE3|Noz}`u~5E)&Kv`Sp~s0 ztN#B#vg-eTnN|P)zghYJ|C*Km|NAWe|35gj#4!c5rW?`~1C!tg3`zyH B=O{&{9;hvhDbn3 zB>BXY6mV7m%b<#bg}_8nD!4%$4@-VvK?Vi}x6Hg0H_#YZaB2xC03dUt@tJv`p;-n7 z21aRS>od#@44`9cGL-)RXJBDqc%kzDzknnILxk4<|1X#s7$UU)|JPt)V3?u(|Gy0j z1A~Ol|NjvnzRv&uIV=neJ9Pg4Z(w0yh|vB2e-7yW5xxKapRh16bm;y64?3|iL;wH( z5LO0;69)hPFJNV0cwzYe{|8nE1`D(Q{~g#E7;c#T|KG#Lz`$Yg|NkA(!Dkl#|9@a( zVCb;;|DS~&bWzy<{}SvB3=)?A|Ld?bFwC(0|KA71xBCA-2gJAf|Gx*sxBmYhbhl=N z_5c3|*cljBSpWb3gPnolg!TXbA{-115;p(;8*nf%oUr--KZb*WLBrwy{}mhz3@;r1 z|K9_Wcl`hV0_eO@r~m&MI2jmTIQ{=G!^yzF;r#!<0Ve}Pg!BLZE}RSuJDmUjkKklr z_~HEje*q^0gN4ig{~aKCm;e9ga56AdxcvXWfs=tj!}b6F7n}?X5^n$h^MDRNb^HHc zfs28m!|nfn8xY_9|Nj;)28Igv|NrN3F)*xf|Nnmvi0}FTKL b{D}Jhe+@4K!;F~! z|9^n^vH$<;@G&q{#Qp#8z{kJ<%I_2S7#MaW{QrM~kAcA=@&Er1d<+af694~q;Addi zk^KLE4?hFLkL3UV7w|JMyh#23A9QYeMf(5$pu>hwWc~l2Bf!9rk@Nrm9svdhj=cZ> zc?204B=Y|MR{$NGocI5~jUWSqMdAPdH6VWB|Nj#N85k-G|Nmbi$iQ%-@c;iEf(#5l z3jhB<1JYOY|NjF)28N81|NmWt7#Mz({Qut|#K6!|`v3nCAqIwuy8r)Ggc%q-rv3k4 zBFw;$G422V4q*m{8#Dg@e }^h97hP|1S|?U^p@F|Njjl3=9&B{{NQ{ zWnfrw;Q#*&Q3i$=2mb%B5oKWDIQakn1W^Wtj)VXI9}#6>_;K+6{~MwV3>Js}|9>OO zz>sn1|9=iK28ND9|NqN~F)&CR{r|r~jDcar(f|Lah%qo|9Q*(Ogct*Z#j*eY?}#xl zL>&A7{{u+;#Q*;x;tUKOC;tD>0MRG^|6d}`z+iFa|Njr-3=A1(|Nl3UU|`TV|Nno3 z1Ovm33;+LLkYHelxb*+OizEZXiA(?g7f3QNSX}=9e+TI9KL!Q{& uN#|Gz#+feYw>cm@U)1_lNb1_p)%x&QwgKub9I1l;%}y!g4x zIT{%3rL47#RX~T8Gk{JOiD6)1&`|&X-wvdofq? =KufT)4d$|1lpLK`6QZ|-T4$e`6QzF z1f2Oe!1g&XGBA{A{{Mds)jlVXeNO211u*UAvv9_+4|FU>2O|RmkJkVH@t~t%5bg$> z19rCylDh+#85p_vEZi_m^5ynnU|_hy$iSeW{r|rh)T~}m81#VL-p1m>r_s#n&Sy~1 z#i!xOr{D X zL5{-=Rws~oAitJ?%+vq>e+oRzz~;H~DfF@+%yWUoQ2-aVNOIw30J-e|69a>b!T C#q4FCTR2C0LlRUc*sh7*SW|0{#UT=)b)`6q#yf#Hea|NrG6F-JauW+rfo zcjWfu;{eGwFf%Z?7~z&*z|6p~1dsdyW(EcpW9<4tZhyecz>s46|GzcJerVqP!py)h z!TA4wXONf^pFl4t%zBtz_!OY&!;Q}%9W{A?^R5mH1H%gA|NrGd`oMmP i>TukeCafKrSB#xO`s1%D~WoCJr)V4=V%13akJB VP#-AVD ^-oT+n9Tpz-P_MurV-L zSpWYI+LO%yj&Co%2aHUYxcCGdK?N?z4WRZIi_QQ4+8{T$@Cks*=MXjq1_c{vxewM? z4h|qt+9+USU~sYd|9=xmJzD&N^DA=vIxtP sK7m+1 z4hB$uy1>T3aK+~Te^9)F(xERGABQ`)KRBI&(if 56R1tv;S9}}nS26%d>r8PwuGI5 z;eaz{eP_eKzyNBuy14xR54v88!Iw{ Q&$&SBxiE0TaOC3v*TWhd3=C&n{{L48se`698&F%= z1seAZ3=E(!58z;6U~&Ebe?LeaIIkn6wO)8;2bZ^?vY~;4fnkd4|NoV6_29AroHh|< zgB!SPSOc=p_5c4Jpmqm1yxmdjA>_1^z?{Q`HS!$6X8qt`V2JVf{~vV3HmFR3wiCeR z3^*Mk>NFR=0H!{yMnT&xpf K?}Pg@0M(z!ZcAX6z~|2goD2*uzW@KvL{0Cme6YIK z6S-Z%6w8Gz!?|)ZfaZ8~xEL5_`2GJM12wCM$rDtLfC~+Gz6l&mQ@Fq_3P^eG3NC{a zxEL6Y`2YW31_~I^dN|M-KwJzA1_A&7cR|g;UT1^re|NqE9L%xU^9?u+fy%cdTnr2a zf&c$60@(ph!;YXd?82u|!^J1z0xqpQVFB&P$Kk~dX~+KIg7kf0b#oh&8%SROp8}{t z^y3ro;Nt+bF;uu27#xEB|KABR-y2JP>CR`s d=z{1dVt%q3wRh9LZbfvp8|D9KNDJB zK;(HZz6}D*N!Seorxj3Ke&AtXSQ7pJ|8%H%*u#cdnGxbOc!}x8or)&n2u|M)ybKIq zV*dY!E~5aK*CD(N3?E|t{|A?^E_?z};M$LY0aRWW@G>y4#Qy*P2%5Js?04ZaXl7#; zWkR#flN-_>+Q7@euqFQge^8YJN{*m9_y{ip!-jZh*_;GvpWfhQU^o*GtxKTg^&4JD z-&_-<5h@0{Rz@WO(Z2#+<0-<&z+jN@|Gy8^jmTvqMjaWzRL6z2Q^U>Vh_#R6!3|1Z z6?_Z~GD-jcgZg|7p71saxGZ5xfs~0(pfb@Jl7*c>)i?tK11NoO;bUMZNc#W3732?; z{2mEW> oy2075+=z0(otuFH)Gz(P$H1^B>Hq%^pav|sE v)_8K~X7a{rwKF)LK;tn_TA*!@Ku|vzR<<%_ zL1M`f6ic95%o$wJdT_h&aU4DdDhFaf7e}@J|6d00H-f_$T*qRBaRBpc>_OlNcE<_< z28No>|NoDH;vB7A5ejjL6R1tfG#iP-z`y_+_I)D2z#z~CEsy+B#{@j!eRNoP%glv6 zW?i|NUVwad=Ipui9()eX>}_m4ti3FK%>AI?2gSJ$Xw0eS|NlNvgB+ZuJW=ay L$rZ2SLzHPozL zP&*VlegO>^1Ezmmd>Ss`<|t%P&ygEcQK1Pz>SPvC1_p*5|NobQ%<}~KF9PI0S5P0y z2h?8j0oBP&Hy|d$n*`u~8z}#|h%zu-;Qs$VA5 k5p4&M)uVVc1V%$(Gz3ONU^E115(1hKQ#XJrJ<$3A z2$um=)q | zzzvdw&T)X4pr!(dhGD2S1_to)n+(uh?F wC&p!EbG`TtNp)cFh_pnNT;K|i5 ;i+)1Y)2lx~C4ppyncW-Np9w?XM+Q2H8_eg>t#L1{K<0Ej_pH7IQc zrQM)(7?e(f(q&M(4N6ag(#xRqHYj}zN?(K0&!F@-D9r|*xL{xqgVJhH+6+p&LFq6k zod%`LpmZCQo(82sVSo*17(!A4EM4cMf)+c0R^Xzlc1AuC0J6GJ0lc~pzEcEMJ;YQ7 zhH%i$q6`cSF~$&)3m+lsAUpHv;Pnr(3^Ri`LjpAa zql!x~C_vLIsyM8+MTmlY!@}_KKSBh;0;O+k;-GnNCI(&x0cgDsTl*u+0IC~#83Lf< z;PpSC^+8ba0`Tb^3=H5kJq!#C#^APs1VaYYogn)_HakMq3xFq_85qFpd>9xQ{GsCD zNl57U2}peuRNMhHImy7l0A8oVz`y_+_hMv_VAz0Weg;&%f-Xom0|R(H4g&)NXx$RX zUk%WO1K_na3=9l)Q1uJIi=-GBz-wd}7#Kj~+935GKptUWU;wXmVPIgG2~|G Yr)~b>bUL>zQAG>8Qn2L-8TfGPy9O<`bQ0A13| z$iUCg096l)50H9Lu?14^096lLx5CN@iI)XXaq!v|(0T+$P#Mh6kOMUb)=mLc+aPl; zK-Gii&Ok%lVD%CV9cba{1~osx9OMcH2AKLNsQLyp^>I-37tqufLe*EGsRxbOfZP)R znp9vwnBNCgUx22563l$4df2*{HDLAp3@f1d8Wzq+!Qv7O6QJgRhO$9E@n8alj|9U5 zs5mTro`R~sfhK+lDt-Y?d Ni}N!`K-~$tzZm46|4@Iy>KRzR z1$j!0II!ETG~r_ne1{n?S{3>hD0s4WQys=P*16 zi}N$wfZ7Y|H!v`R;+LOc22>o{>}QaKi9^EymfnoO;^GViP=CRyXD6^YKf?*AIk0|H zG*r9+Y7Xd 7{uKoWh!94*MGb5YX1hfnsvg#VhZ@b`1Qy3^M}h7VVZ_p& z0hKpG47>~ ~lzyMxH$H2g#3>E(Xt=M7Zk3Lj gEfCwg2h29Q1Kod;-Gbbpmg#f4x%2smWP3X;Wk)3FT)3@ ze_{5%g^C;0K-7ch@fjExenQ0;fEt_(3=H6PYYYqw% jy$LMN3t8|1s_!Af411vB1<-he zwI@%4#i5FjsHb3YUIqtf!2oIpgQUMe#UDV^8+eT?0|Ucfn0OFK6$1l!eINq^13NgK z^D;Edfr!K6R}3r;5kn?Dc|hp_Sp>q?0;}g`Xn^KN*m_D+usB2wGU bu-m}mybKMX4i2b40!=@Y!Qv1#$mBAxI4^@j7DN=hUW$Q%VKY>G z0_a*AP`pCT0o{BGTay6M0UR(uX0qwiOX0I?ODExUD450A~>PLaBP=bmxfUZkpU|;~R!vd`#fQkn|;|07P zmVtr63M&4<7NnbjVLOCk@B@oOIY?A4Se%#P19$-}0|RWhp&Tl%0KSc!fdRaRm4Shw z9xRSz0F*fiEY8c201XH5dSwO%hS^|os3Ih4JtrjpqWAarfYtLdd;sq*M2vqQ0gEFU z0A(`b5cj~5o fe*xFSh|XWi9^dhSQ<-* ziXVX1`_SlND2Ix}I{L8u*bEhSfTnZsx)=rqh6zyd255T*T5T{afQmnWrbB2lVps w%A_{A7D6)dmg9O6|XnPVO%fN6Js@`BaL %M*83ds1 zRp@XA!%e9A1F;bG;5D`k3=EH<;tbII2rI{4LB%KdLezuTr86)ve1VEzfT{ {hY#bmMDjonGkAlTxELa@bB@lKIc&!%Zcv>A;Jz~5Oyf%b^fuR{Ho&c?v!Fy>K z7#RAY;u|6$=7QI2GcYjBf{F_qfrx|GAc4k(pyC^#{)HOHupKJ?0DOrf0|RV5(Fv&d zhm#O K7o}2x0T_Lh_LVXwx >a=6E}3tuv_nUjS{NLx)EhK>LJYWhTrF5M2Vc7sNuv zy}S$zf((d!1RIB02v*O_zyK|1VfE<>sQ3k_hrnwtK}KfgWtQkABcF-{Ihr9kw}1h3 z%t(B0YEgPBgCqDb@%X&da)z{`)Kt)hdp#3F3rhy@X*M8*A*mH5pz||IisM0tn=vF7 zrGrlw0x`-MQj3bfqTth);uBL+N n%*vuSkZ7Sp_0%z#y1X$IYTADL}PB(@g&;hZ_gdrGw-~ohZ zXvTn5tC_JWLvTq^abj9(JUGn2?ld%Ks4z@~9!G>MZoyDtl*j-+7Xew=lA*#lkpXhZ z0Qj5>BuOI!h6)o@$>f~W#3G2hjEu3m%f!gUi~)332JCPT7@eAz!T>(j0K~xNBNJ0| zBZiE`yp){O_>lN~@M-IyvyF=4VTWAjCFZ7rBCfckC^a#cA-{mZzo5hulwQDoH)BZ6 zEly`B$jQvhj)x@*td2A_FtcDN&d4thfS L^0 zK;pAl&&15cm;rh+ik^v?u?Zwmq~#>0gSci4dHEpU %^C9YA(;$htPw+DX=Z8($P^232FwH>3IpO>V)u!esX0S(QAu%0X M*MLwr0E51i>xl*Y%q1v&b<#=H8t z#K$wlqbf*Yh Q4`-^tM@-rvnF*fk_R z#L>ye6=Z5oW>Ru|a&alxsjxx=RHUY-mZavDIXJlccse=98|fM8nSzU1RFQ(x63}G_ zsDjV~M<9hZLrN+rm_Ub=WTwN5E6}O;paTl?l5-1CHOG5~_{JmRA;i}i6bq2kS^Nu1 z{2YtYi=m|z_`pJj0B~l9*aDRRRRy5f1D~-1%GR0bV4 61Q%P7lU2YsC4i4sNdp~LimIi!q^Kl61yu}OoPg^SWaky7mXsFdfew$! zFDij}4|EtFxZGg?tB!}9;Z&NJnV$!$4}w95|3NFg#FP{U@Od=JptGlvN;7j(z~_e* zLk;u?A5sW9(x@acDIQz|L5?MY=x2ye1)Z4>i*IlW%}--U1D#8git2i#KmdghDAICL z^H9~~rIthE7wlJ1?oG)oVu*+OAUPvD9(0-&LX!z{NPzs}3Oa?)w>TYKzeC~`RBM8= zIXG;JLG~tR6d{ZNrAJ8AC+8PbG8CnjXXc>=d~r!p5r!V*3X>r|9&%tgn)5(rLrw+q zNKH&hEn-M3C@m>QwHs3EfNRrYaKeBxb5nDRQ%g|QrlqHrB%=y}RfF?1s0MQ_DgwoD zC^)J?mZ7OeiUiP+LZ~PFKtcf&iXd@NyC(o%r-4c@a25v_4Dq>%nP^c5aR(^F!;Ucm zITp>Y{skqFI7tSlBvhZo$Agj*D5{G}K%Q_bN(CKS20D8bRUzaIFxWXnX(g#SIj9Qa zC?Z(1ao0(?7nrBqcL1zO* _vR z)N)V=gW3qN gnpc9H0zr)@m?VS^I`0wY()f6A2!aYpup~H}<|bx?Z#-duoW_Z8 z1Ssu50u@}wfuaPG=ZX>S3Xr=%$60|SeKPa1i{a%W^pK|Fk|J>VlvbRYnvH5UQc?ir zM@Yd0J_-xeJcg!jhK$5wq@${!eg!E29om_bkCwdR j@=#R^)2gIZ7w1&JjY z#i@x!$r(^%V2woZaZ+HL!ES{(3?d2kIz#|m@WRit0-bPIjF!5f=>n_=5_0hJ2-FBe z^**@JL!7b)IfM&pf?r7nB#bN4Qi~YM(!ix?8mfNCp{LMO_aH8WI2qiog(iaJ+=2pF z*$Iu2^wbitR~eu^15{H}D>BiuJh&5rswzG{#Mc>GpMx4Pr6sA*b150XwH~bPfl}v{ z6eZ>rgKmO>comY_LHQNg@!)hBAD>*22&%^ub26*YN^ztf1}I+@m!OrT@$t!^V*}%p z;!zTZF+*`lN@@|BV*i2?$D(w|;d=}Wpu>er5|bG8Ky@FO&VaE%2geo_FzDswm!#@B zI(h1rB&I`o>3OAk;A%@ZGlfA9!~-WHy_Cwl;>uhGFkMmvk%6`qQ8@8M40=VWIf)>J zP*y=s34 NIXzJ8i$Sj_A5=au=%r>r+glkaMF<{52c+S}0M-Fxr&Q)8=4K`{ z=%weEfC)XY1rWoMii;WaKvyuO<{_Q%2I{<$k3s9AK|>|5^#ZVUfG`@iE(2x*NG*&F zqCx9^Kx=$p`eEw@VKn-3I@q`>NG}M3#&3}I!`2nTXxMlwNG%AX>j%wGef$4EA7(#n zy*7-7>4(kxa)1m$!l2<&(3~esKWv>Mj1GWW2wLwA@;gjFY+ZF2Xe<)EHVa}XY&|24 zhOGyO$b#m~VJrv@nvMdky@uHjTlWZ~p~G45_2)2kFglxofdRCZ8^(vNkA%_CX#?