From 28117760a5f54f60a36b60a68a826fbe4f486e7d Mon Sep 17 00:00:00 2001
From: Ben Roberts
- I am still working on my project, but in the mean time I have some binaries available for user testing.
- Please report any bugs you might find to my bug tracker.
- (Note: The provider of my SSL certificates does not yet have their root CA certificate distributed with Internet Explorer or Opera, so if you need to, please add them as a Trusted CA.)
-
- These binaries are solely for testing purposes, and may not be redistributed from anywhere other than this site.
- I am in the process of packaging a source distribution.
-
- ';print_r($this->getTrace());echo '
';
- }
- }
-
- };
-
-
- class FatalException extends BaseException {
- // Overridden constructor prints an error message, then terminates the application
- public function __construct( $message = '', $code = 0 ) {
- parent::__construct( $message, $code );
- die( 'FATAL EXCEPTION: ' . $message );
- }
- };
-
-
- class ConfigException extends BaseException {};
- class SessionException extends BaseException {};
- class AccountLockoutException extends BaseException {};
- class AuthenticationException extends BaseException {};
- class ParameterException extends BaseException {};
- class NotImplementedException extends BaseException {};
-
-?>
diff --git a/code/functions.php b/code/functions.php
deleted file mode 100644
index 9db521f..0000000
--- a/code/functions.php
+++ /dev/null
@@ -1,78 +0,0 @@
- $value ) {
- $dest[$key] = $value;
- }
- }
-
- function print_rating_graph( $star_rating ) {
- global $_meta;
-?>
-
-
diff --git a/code/iauthenticator.php b/code/iauthenticator.php
deleted file mode 100644
index 7f77cfb..0000000
--- a/code/iauthenticator.php
+++ /dev/null
@@ -1,60 +0,0 @@
-
diff --git a/code/iauthorisor.php b/code/iauthorisor.php
deleted file mode 100644
index 27b7703..0000000
--- a/code/iauthorisor.php
+++ /dev/null
@@ -1,58 +0,0 @@
-
diff --git a/code/request_handler.php b/code/request_handler.php
deleted file mode 100644
index 6885618..0000000
--- a/code/request_handler.php
+++ /dev/null
@@ -1,71 +0,0 @@
-request_string = $request_string;
- $this->cache = array();
- }
-
- public function current_page() {
- return $this->request_string;
- }
-
- public function get( $key, $value_pattern = '[^/]*' ) {
- // Look in the cache to see if weve already decoded this variable
- if( in_array( $key, $this->cache ) ) return $this->cache[ $key ];
-
- // Construct the regex to search for /$key/$value/ pairs, and return the $value part
- $key = str_replace('£', '\£', $key);
- $value_pattern = str_replace('£', '\£', $value_pattern);
- $pattern = "£/{$key}/({$value_pattern})(/|\$)£";
-
- // Look to see if this variable is in the request string
- $count = preg_match( $pattern, $this->request_string, $matches );
-
- // See if the variable was set
- if( $count == 0 ) return null;
-
- // Store the result for next time
- $this->cache[ $key ] = $matches[1];
-
- // And return it to the user
- return $matches[1];
- }
-
- public function construct() {
- global $_meta;
-
- // Varargsy
- $args = func_get_args();
-
- // Construct the proper request string for these arguments
- $request_string = "{$_meta['base-dir']}/";
- $count = count( $args );
- for( $i = 0 ; $i < $count; $i++ ) {
- $arg = $args[ $i ];
- // If this item is null, try to find the value of the previous key from the current
- // request object as a convenience to the user. It assumes the default value pattern.
- if( $arg === null && $i > 0) {
- $arg = $this->get( $args[ $i -1 ] );
- }
- $request_string .= urlencode($arg) . '/';
- }
-
- return $request_string;
- }
-
- };
-
-?>
diff --git a/code/session_handler.php b/code/session_handler.php
deleted file mode 100644
index 779ffa7..0000000
--- a/code/session_handler.php
+++ /dev/null
@@ -1,229 +0,0 @@
-start_new_session();
- } else {
- // The session already exists, check its validity
- if( $this->is_session_valid() ) {
-
- } else {
- // BAD USER SESSION, start a new one
- $this->start_new_session();
- // And inform the user
- $_template['messages'][] = "Bad session, starting a new one";
- }
- }
-
- // Load the Authentication modules
- $this->authentication = IAuthenticatorFactory::get( $_config['authentication-module'] );
- $this->authentication->initialise();
-
- }
-
- public function __destruct() {
- // Shut down the authentication modules
- $this->authentication->uninitialise();
- }
-
- /*
- * Accessors
- */
- public function authenticator() { return $this->authentication; }
-
- /*
- * The following methods deal with the user session
- */
-
- // Initialises all the variables we require in each user session
- public function start_new_session() {
- global $_config;
-
- // Set up all the session variables
- $_SESSION['initialised'] = true;
- $_SESSION['logged_in'] = false;
- $_SESSION['username'] = '';
- $_SESSION['hash'] = $this->generate_hash();
- $_SESSION['previous_page'] = $_config['homepage'];
- $_SESSION['requested_page'] = '';
- $_SESSION['history'] = array('home');
- $_SESSION['lockout'] = false;
- $_SESSION['lockout-attempts'] = 0;
-
- // Be paranoid, change session id
- $this->auth_state_changed();
- }
-
- public function is_session_valid() {
- // Check that the identifying information given by the user matches that which was
- // saved in the session when it was created
- return ($_SESSION['hash'] == $this->generate_hash());
- }
-
- /*
- * This function should be called whenever the authorisation level
- * changes in order to keep the session secure.
- * It prevents against Session Fixation (http://www.acros.si/papers/session_fixation.pdf)
- */
- public function auth_state_changed() {
- session_regenerate_id();
- }
-
- /*
- * This function marks a user as having been logged into the system
- */
- private function mark_logged_in_as( $username ) {
- $_SESSION['username'] = $username;
- $_SESSION['logged_in'] = true;
-
- // The login state has changed
- $this->auth_state_changed();
- }
-
- /*
- * This function marks a user as having been logged out of the system
- */
- private function mark_logged_out() {
- $_SESSION['logged_in'] = false;
-
- // The login state has changedd
- $this->auth_state_changed();
- }
-
- /*
- * This function returns whether or not the user is logged in
- */
- public function is_logged_in() {
- return $_SESSION['logged_in'];
- }
-
- /*
- * This function returns the username of the currently logged in user
- */
- public function username() {
- return $_SESSION['username'];
- }
-
- /*
- * This function requires a user to be logged in, else an exception is thrown
- */
- public function require_logged_in() {
- if( !$_SESSION['logged_in'] ) throw new AuthenticationException('You must be logged on to view this resource');
- }
-
- /*
- * This function generates a hash from user identifiable information
- * to try and prevent session theft.
- * If the session id is stolen by an attacker, chances are some of the
- * information used to generate the hash will change, and the session
- * will be immediately marked as invalid. This hash is checked for
- * consistency on every request.
- */
- public function generate_hash() {
- global $_config;
- // Hash together the following pieces of identifying information which remain constant throughout the session:
- // User Agent string - This will be constant for the user, but might not be for the attacker
- // Netork Mask - ensures each request is coming from the same network. We may not be able to use the
- // while ip, because some ISPs use load-balanced proxies, so subsequent requests may come from a
- // different machine ip, but we can still use at least part of the address to filter out would be attackers.
- $key = $_SERVER['HTTP_USER_AGENT'] . get_network_mask( $_SERVER['REMOTE_ADDR'], $_config['session-network-mask'], $_config['session-network-mode']);
- return md5( $key );
- }
-
- /*
- * The following methods deal with the users history
- * These will be used to set up redirection after special pages, such as login
- */
-
- // Add a new item to the user history
- public function history_add_request( $page ) {
- global $_config;
- // Add this item to the beginning of the history array
- array_unshift( $_SESSION['history'], $page );
- // Keep the size below a fixed limit
- if( count($_SESSION['history']) > $_config['max-history'] ) {
- array_pop( $_SESSION['history'] );
- }
- }
-
- // Remove the current item from the user history
- public function history_drop_request() {
- // remove the item from the beginning of the array
- array_shift( $_SESSION['history'] );
- }
-
- // Return an item from the user history
- public function history_get( $index ) {
- if( is_numeric($index) ) {
- if( $index < count($_SESSION['history']) ) {
- return $_SESSION['history'][$index];
- }
- }
- }
-
- /*
- * The following methods deal with user authentication and authorisation
- */
-
- // Log the user in
- public function login( $username, $password ) {
- global $_config;
-
- // Check the user hasnt been locked out before trying to login
- if( $_SESSION['lockout'] == true ) {
- // See if the lockout has expired
- if($_SESSION['lockout-expiry'] > time() ) throw new AccountLockoutException('Your session is currently locked as a result of enterring too many incorrect passwords. You will not be able to attempt a login for another ' . date('i \m\i\n(\s), s \s\e\c(\s)', $_SESSION['lockout-expiry']-time()));
- else {
- // Unset the lockout
- $_SESSION['lockout'] = false;
- $_SESSION['lockout-expiry'] = 0;
- $_SESSION['lockout-attempts'] = 0;
- }
- }
-
-
- try {
- // Attempt to authenticate with these credentials
- $this->authentication->authenticate( $username, $password );
- } catch( Exception $e ) {
- // Increment the number of failed authentication attempts
- $_SESSION['lockout-attempts']++;
- // Check the lockout attempts
- if( $_SESSION['lockout-attempts'] >= $_config['lockout-attempts'] ) {
- $_SESSION['lockout'] = true;
- $_SESSION['lockout-expiry'] = time() + $_config['lockout-duration'];
- throw new AccountLockoutException('You have enterred an incorrect password too many times, and your session has been locked. You will not be able to attempt another login for the next 10 minutes.');
- }
-
- // The login failed, rethrow the original exception
- throw $e;
- }
-
- // Successful login, update the session state
- $this->mark_logged_in_as( $username );
- }
-
- // Log the current user out
- public function logout() {
- $this->mark_logged_out();
- }
-
- };
-
-?>
diff --git a/code/validation/ivalidator.php b/code/validation/ivalidator.php
deleted file mode 100644
index 62afed3..0000000
--- a/code/validation/ivalidator.php
+++ /dev/null
@@ -1,115 +0,0 @@
-validate( $value );
- }
-
- // All successful
-
- } catch (ValidationException $e) {
- // Add the friendly name of the variable that failed validation, and rethrow the exception
- // for the calling code to catch
- $e->append_name($name);
- throw $e;
- }
- }
-
-
- };
-
- /*
- * Validation Exceptions
- */
-
- class ValidationException extends BaseException {
-
- public function __construct($message) {
- parent::__construct($message);
- }
-
- public function append_name($name) {
- $this->e .= ", while validating '{$name}'.";
- }
-
- };
-
-
-?>
diff --git a/code/validation/range_validator.php b/code/validation/range_validator.php
deleted file mode 100644
index da0f9b3..0000000
--- a/code/validation/range_validator.php
+++ /dev/null
@@ -1,40 +0,0 @@
- $max )
- throw new ValidationException("Input is no in the range {$this->min}-{$this->max}");
- }
-
- };
-
-?>
diff --git a/index.php b/index.php
deleted file mode 100644
index 0790792..0000000
--- a/index.php
+++ /dev/null
@@ -1,82 +0,0 @@
-get('page')) ? strtolower($_req->get('page')) : 'home');
- $_page = $_chroot . '/' . $_pagename . '.php';
-
- // Capture this request so we know where the user wanted to go
- $_session->history_add_request( $_SERVER['REQUEST_URI'] );
-
- // Check that this path exists
- $_realpath = realpath($_page);
- if( $_realpath === false ) throw new Exception('Requested page doesnt exist', 404);
-
- // Check that the real file exists under the pages directory
- if( substr($_realpath, 0, strlen($_chroot)) != $_chroot ) throw new Exception('Forbidden', 403);
-
-
- } catch( Exception $e ) {
- $_meta['error-code'] = $e->getCode();
- $_meta['error-message'] = $e->getMessage();
- $_page = "{$_meta['script-dir']}/page-sources/error.php";
- }
-
- // Capture the output and store it in the template
- ob_start();
-
- try {
- include( $_page );
- } catch( AuthenticationException $e ) {
- // Redirect to the login page
- $_template['messages'][] = $e->getMessage();
- $_page = "{$_meta['script-dir']}/page-sources/login.php";
- // Get the new page
- ob_clean();
- include( $_page );
- } catch( ParameterException $e ) {
- // Redirect to the error page
- $_meta['error-code'] = $e->getCode();
- $_meta['error-message'] = "Required parameter is either missing, or contains an illegal value: '{$e->getMessage()}'";
- $_page = "{$_meta['script-dir']}/page-sources/error.php";
- // Get the new page
- ob_clean();
- include( $_page );
- }
-
- $_template['page'] = ob_get_contents();
-
- // Since we've already caught them, prevent the contents from being
- // passed to the browser
- ob_end_clean();
-
- // Get the template
- include( $_template['template-file'] );
-
- // Send any remaining output to the browser
- ob_end_flush();
-
-?>
\ No newline at end of file
diff --git a/page-sources/3yp.php b/page-sources/3yp.php
deleted file mode 100644
index 4db99f1..0000000
--- a/page-sources/3yp.php
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
- - I have almost finished the final year of a Master's degree in Computer Science at ECS, University of Southampton, UK and am due to graduate in June 2010. -
-- Starting this summer, I will be working for Atos Origin as a Graduate Technical Specialist in the Managed Operations division. -
-- I previously worked for Netcraft in Bath, while taking a year out from my degree studies. My roles included developing and running the SSL Server Survey, reviewing Automated Vulnerability Scan results, and performing occasional penetration tests against web applications for financial institutions. -
-- On this site you can find a full copy of my CV, - or see what projects I have been working on in my spare time. -
-
- You can contact me via me
benroberts.net.
-
- The ebuilds in this overlay have mostly been taken from the Gentoo - bugzilla, where the packages haven't yet made it into the portage tree. There - are also a couple of version-bumped packages, and packages to install my own - software on my own machines. Feel free to use these packages, but do so at your - own risk. -
- -
- You can install this overlay using layman. Add the the
- Sihnon overlay url
- to your overlays variable in /etc/layman/layman.cfg. Then update
- the list of overlays with layman -L and add the Sihnon overlay
- with layman -a sihnon.
-
- The contents of the overlay can be browsed in the - Sihnon overlay browser. -
- diff --git a/page-sources/projects.php b/page-sources/projects.php deleted file mode 100644 index d212534..0000000 --- a/page-sources/projects.php +++ /dev/null @@ -1,33 +0,0 @@ - -g*(Obr|0}2gD8>eZXQBR z46O2z$ocj5_4CzJ#JSiD(XzB5>k=IT?@aQ@#ke8+ZbuT2_WrJ`!y$H*oyTOflMw$}&qR zwCKd%{#j9l-eB5L#{S<;a Q33wycWGH$Bl)>#qH}}Sa12#o2IoAz9#o|<$fu=+1-tu*%#ulj<&}5>ndpF)FQKu z{hDTy>xy-EoUdREVEC8bdA!NtRS^h|F&+rpH9+DU5#8X?s7zsDY0s`hz#KXSQd?zp zN__Y3-LTq%Z;$!y&tA*LQcuk~f1uT2NyLxt9{imUHk;l=;N!L59v+g?!$%)aSvRfR zwtW67jYtuf&YQ-%>Yd%+RjG>7debuD)Y=zVh>?SMVy F(T_Db#KNlACj-pb6aC7*9it~0a_Farh Xz7E#QH z7Xb@pTxh)#iqF@VHaCi_tLN9p{xV?bKi?-dz-Qj|L7JsoUQ1tN)Y+`OPU;k0?J>g0 zB6K&km;x&88!~nz;5pj_0XA1;|13(6!} Up(K X} z?k|f3jiqPtc#3#~d9Rg L-EM``G9K!L9k1HpJfrlUZ(2aVhc&rP(-&TgZwE1IYUR> z(J=?Xc&)9aDl7ZMi;EHmN2s{8qUAYbNVh!`3rk7|^7`Cf^>4`8u6-CkdQ1&E??VUr z21!N4(ni$97N8A-=hPGxscnWth@#JbKin?rw?FYYWR^z1mV4RM8Mo+c^XvB;C8hqE zlkp3kYaaADYa05Btoe9&Akg%!_0?e2yNmOroRVVEfU{Rz8Dcs6%dNdM(U7&p!T96z z%q55Y^KW|$AE`Yw(LKvfW@N4g9aQArwi*5%;ZaGOjw1ILcLk!mm0rE_jNT_*)zIVk zg1Z=LjX~J4f4+8#z{B1N!xqX+9vk~iTw|=IHJ~-p(gl`0fdb*DX2u1Zu%okcJ2fqQ zeto-3KkBbRhEJ`^M~B`jVeh9^nGlc(q;9eXZ76ie_~c1?QfS{zTH<{D;`*_9-Mj(= z-w!uKMK?Bz==2{y6do}%&s6%!Hz{Humkhj-)t{?amT*e2cOclpgbOYi0SpkwLF =G~IIZz%I*R`Dj_jOOML$1QEj^6ocmwf)yZqjM(8WloSbRu{#I~yjhe}qvOx` z!NXcE fW~@!ss5Oq{WE8#4-b!EI&i9< zXNcy^njnR(6(b8L`3hJkk47tDKc2ih)+$@O(egeGo?0S4Bq@4U5vMMFg`4cGK }aTWF|27H^>!htcz*91e^gD1doSGxmwzNp?trqq!X1pC@)KJw zRvcGv@Mao 4PE)}zMUk=z|z4(;6c+7dgf&d5*##H*3O8++;D z=}Egu{-l%`wYtIqicTkEjoI2A^aA`&Y#+!;hv577?~hqnYDCJ4@*nDE6M&%0@qLyZ z;rQj#1EFi?pe!@Byhp@OI;#yzfyXqo_2U-v!$bZGd(4Z@0P`)?$|-_3edtVGv19kV zni>Rp$bUtmL<4FIPgH-*Cdve$j<*9_bZ}&FUfx_VL7S?_;d*|<(58@KE}C9(l31yEb zffl^m6NFUz5o=KJled;ZS<2YT%~oPQFh3d$EvQY~JCB~{khW9dGX>YAoQRPGs|#id zb1=LArhZ}7Y6Ky72WGX~gZySgh_ll5^qKx0Q}ZaXJ0VFi3AAus?}9l%LVt(=^?X|X zlu3vsbS4eEzn>ULS*EsliCnN0c9!Eq%z%a4DUiR066OkQxCsi@NE}a7!olEx1j;Qa zfUO^&?e?B>bFZM0`?5LkU4n^;2^=~LY{DxNs^2>t7=JxvLfp=8LJ+tuzIWGZaE2Ef z6C+T{C3?fQbUT$wUBe9DQ26le#-A@t16@6`TAD@_0)~u9SFCd^d!$iWeEaTWYn@Ly ze%#fsZS#2geD(66!@MO|>pHW@_R7Sk6Dwba!SLN=M{91Qcby-xHVVY6!*3;d4;#Lb zNP?JEEZ}iiqupCFuY@8)R1u}D9x9dkqOgxm55eW?GgN_eG-Nk5dDbKBjs?cDZ_-k2 zU4*ok?z*?Q5#Ej7oCx;TDG~FO6dN-!oMw6+6wY2RPho4dt*DOYdDJSDxf=$;(!AEv zdGoQ;tkbd9yhiUwSy^6fZN$;hhg=H@dTy@N;vs(-qO)u@)&va=cr$%TN(zR+e=@NZ z2EC=i2?m4Wdj}M$*N?A*;B$UgB &at{izHs$p7FXW!y8FYBEfsY=Uo~wZz!%`~ Q_M%@d}5*q2U-9&S!jjfT}3 zEMq_*E~%*Zd0|>-O^;Tdtu`r zgIXK&>sy{#;wB*-7`G-g8M1jn=Kqu-%i9 z@9w=PYWs&jTzpb^_s *^a!Gfu!5`lUKtrZl7gg)={gnn zW~i{JSo0(AuOHLk(3ewYPQIIU?6I!VG%`|A>VLjREWgeRWcj!G$0hEJ)=v^B`fXV_ zTu<|g)uJNJZDyaU`i4ucw+nC!_}G}S<#P}IfuI;~8xR}|quGRkHOuo6fD@o2(+6j0 zjjxd>vqd!z_BbC~t$e`C&X#tV^j+V!idwW ISw<@t^O#6el4Uu4aINQ zLK2yv6{Z+|;ImIBT+B5RzhCBDyN==)^_b%R;5m2Pz&=yuLH7(b$*+iMe9%ZSiz+U9 zc7$m5Z9edh7tY*G#K _6RZ{id-BBG|K!1XROtl7+E_x(mQs(MNKe)ghz z1bQKcc~DMORXY f+F2ZIEo&PA1cIxloSd-4OC3^5viF_N zE`cviwG4ZYNSUKP#yPv~g<^F-*yHZ7ui?oB^BucY>|cDZ%zH;SUq?#6wReU87ey*S zJabuoUl@WgBSL%EJ4q?z-grKiDz97IMiUKZO48NMch0+%=Du}ddX2UYIr~x=Yjyvs zTSHs>_IBI;h3nE@XC_8#!JwFx#HbpLjtwoVs$_IgvzL6MvOASPGcgal*!{%WnBH{) zrAM}PvoozuG+s5FsrS2jyZOv#?nUI2u;gbKpo#J<%#Uy}>D1cT{ss9r#U4?yVdcUe z0TNkaNC8X?a6u(nURK_{Tf6Eu$>Rt(B-7OVOfBgDR9jmxDP^j>&N=M@^66ghdrHVS ze5cJq)!T^=Hkc!qw3rJ7k!K|10ehRjiq&y!&ERQFdka~Soo2m`{APUVKW9s*BHGoZ zQNP+I-k4ih0Q&-25;i9Otx?t}#`8Z!*7j$e)LVnH-!; mn6Qp{~ zc`c+w
fd)ED1LVSe*M;fPfM>a7nv3N>YD9Dxq1iVF$&buduI&O$Gw>huA;`8f1 z KMK-%e>)i8~&3Qc1YqV~t^uEghgcW2t1p0AWFw)iu#@<}r=G!U6an zYDFxv<7*@~W@O4K!(9-q3doj3Ys>xLzY{F<->5u@FuP~_d4&5Z?(^|qA+%_~6Fa9; zLPp}38En!2c*cZ#92ERI#djjdBZjP<&>&F`Obq6yU!df~Ehv%)pg+%c>=)C1@;dDx zz7Z-g^SvxD`6u48!m`4=x6970CQWxC)2e#)>k2-KAfAkv%gjO0r&gdIU{NRUis%-; zM?tZaw%xjY&Gc`DVjVn$<`!!o;y#)k<(hE>fiX;6=!7yi6?{}PG(fo|?hO)Il1?nE ztE74yDLtW3Owd1T)F)C;9kS*J?q`YFJxqsicUlujcSt5~0h0_1G-0p{i!iUy xMy+W#B4C_NojIi;D)$^;SH`5(=4(klJ=61PvG#B$g&mj-+sKVdBx8O?`fd3`a z6X 8@C_y;bR=5 zL^BNc`}_A#0&^O2@;dlviE&vHqZr)1*Swn)4;V($`PH6?iiVP;f}=((&U`^DU&&1? zyiU0;_Ql)$szyMJqM{9kUbW|E(%jtf-O-d Eyy~I~jK2d#`Oli+t0u-)cWY70C9;C{x>N z7bGRMy)qZLNQ5$pnikbmz39BWIGJS^6Oc%qCBIX$W_l_SS4QOZrOS0=qN|MC?Peq_gQ)KOJ83R ztpc?te0-lLCf@YKGpO6!v%|7|=%H7W ILxYW)&F?svoBOuI zEFjDAP$oPc4`N{>U;RjT9M36NElhIXqfAV_ETQ|C839&DByU$>I}Y6ImryjPU6^K6 zY^>EvTPQZBwUE=o-1`2x0*KK@i)*)am_<}HeP%}QbK>VT!PAADAC1PmyrVOYLXJW- z#F1a+!$7jK-%E_Eq5vdA#=tP5Z=(jw2{>4Tq66qJmjZ-svPHAua9>R=EnZBWtMlE+ zQe2mqcxi*q)|T&&Sy{;_DdpYW`K~WgP7p;z3m%8YKwzMEAlNBDa+@@#jeeEqcbXH} z^A?wal)Dvy9UVD9$H&JiX*{98ODVWbVg@#MMuTbDWF1 N;e!G_bN*73k;*z z85;Js3uZUYG0y;Hft^;Bmj&xIm{IwvV)Xy`PR!uf%11k@*6&c%6x8~~w}oD4v!tNe zo+Q=CpA-PT1>=e@Ut-RCTweGFEE0nR2vKBYWcUOG%n}?i%L`t(f@PICe@vThFc=j3 z6w_3IqK8NPF!sz(p~&!X?2e9(`h!M?wBQTNe)iMZv-O9-DINF}LBb%Xr$^=H<|dM@ zHn^3O{$`X1uCAnHUoySz`8g@63y@`V?OUnKg#g|7>dCk3J+UC8z~k;Wx(to&mxs&h zz{vGODF_K *55>1TzVtolr@o-EN+st{V37q2)bh}uyZkO!a|5rH%`!|* z0a;WacQ+-jVZDCe`hsS1Sr7YOUqS$#`gMG;lkNdHBLhs_UYg8i6YG{!Vx0oAfp**+ zil*$J^&&>9^hSb2n4Z(07mNKk%;=UMIBx2X804twsarX*VPmd%RgB#*lk}Ea8y{ad z*G;}1@8K*#Jt9ag4qh KOl8hCfuDJK2}(}(3f;lPkjN3cdUD|~C}vkTUs&t~M94-X7g;}Y zE2~K$DDtwcKX{a<>e#QZu4qRJj7mzPI6fN(KVgMM_E`9{e+~Z8F8!Md`$KfJ#dWRZ zAb7Kz-mbj8Czj?mhN%^hK@NZ0z&yonKj}CG_2WTC UJGP0Nvyog>xPi$^X}@`@pU671qmy%!a}*?1`Z{VZ z<55n_RDb!fNOH7k;nsU~aBhBn8q{cetI-2u&tY2cO>ZOdGiMpKZlPpvv|+{h1lil0 zhPp1N8Q4Q^EQ?-;y1>^zpTC*b{%O4$W{Gt3E{4GHJ?Jgwz|CF5YwSDyC-p94LR|Hp zip85?UWEH2Zg5(bq*Z+}@z1sQ%bI7yrKKs-hY1`9!PeBW$<7~r%3%G$rhFb#%i`KB zF55$c!M2iMz3LQpU2;?I8}2DdU#Yt0y5eysuUhba&=wItJz=NqjorPS3@B7Grr71$ z2lcx@5uH=dDpT_eKni2J*dISWL^sdFEV}e<%m@ew^e;9u9<~ByS=woBma6wbSb-C7 z8hoYB o3Pfw1~(NVx%6%`fxt%OGYC@JaMB?^9I zLxrPLoc^p#6tb}~T%LI8AC#2xraG-`;Rt)gzQ(+27C>2g925X7Cf}Uw>XI|B@ z)Jldb~5WuP9G`t3_iI~c2KHl}lxQAj9- zZvIkJ%dm6sG~cs$2 _+?sQ8yy|j>4r ZM>%a)FwNMhow)zwKpUf((tTcoFbc+=b4i%WzGl41Z_ zY;eRfa4;_RIX3}>cBXePxBY0fbGF%!AHZ!d!q7NG%9t5k uPoM7}it14IlR)u=sU;C|TGQXQD 2)j bDxlZwB9ozveEZK9l!e2@uJ;{M=G* 1;T(9e)n-iZU1AKlu%UDN4%7{@I2Th0cOa2aK z>!O(Ti_U5}BBApxXmVEdtPt3WCnexJy3JQh>nPlpgDyQAhNjMTr{e)UnV6U;1JLO} zGWKEsb8LLvO)NV$3S)kZpMY7+`Yg-T6?P8ee>x@CUK`tdJP6S{ku}Ne^>sjX6G!my zj!kU|;RSIyWkW_nAVo&-K&hKxX#n?i^59`Nwn}V V!;FwjE8IQ=xPQ zOi$_r9Ze9FYRV)wo${yYl49x4=uyp+Cv*tqFU(di!?zpXsN2ME@7OHO2_8D@#9tir zP0ig(G(jdp9ip}qj$abA{iNs8mG5lq#9axKJm!O{&2v3WAMoh|==Ft5pkXC-ai2;v zb4ENt>uUInCyz?ft6G%HVO&vh@oIR5Ov9f%0z49ePD{SkOQ5LV66<%HYy&E>)(I|S zy1vfwV}72R3es~74)&O)yFtEBJwhM>e-AXC_$>H|hv9sWkm%Vx|LNSx{^#YGZ(`Jy zzoEX(;koZq_9F1f+)=dzFB@rmLD^|6Mp`rA!8s@h8Vr3#x$TUKWp%*`vcag}VX4b% zt|4dJpKLagneJ1#oRA|#U<^bgW9;K%3@v|n&F++iv~OoXi%Ckk(ZuFO#_lpyI#bw% zMN*RP2MOjYIk`%=^`0ITbY~=qOBOkg--)Hv)gR_70N$2*4}~!Ntga$j*)^wxJ*NA3 z(Lfv+D{24ob$S|xOuE3^r=Vb6sd%Yl78Rh#dO=cRtbP+tFuyoOUPt_K1C<=0=kDfT zY~@UQuboUf`53xRyeR%%8dW%Xf}YWqZ4c7D=TwO1db4jIFeK5oqBXo3r?mr7Xd0Nh zH;UHu{khM&zv$+qi5-uA-49`*RkGK;>O? e1ycZOZ2vuwJA8HCv zznExY0fg@^!GnPTWvKeTxi{1?l*xv^a?oUMy!ccnh{624&C$%oiL|aPIEjhZ&PZ~D z7IiugtLF>Ck;&84(@h$>C~A4jx6b^Vd4J1!#QN8YhQ!G-Nk!1LnhFaUK0bcn*{YI| zWl%H_JGr=sqq{pA%c}r-EQU@x&(O&mv8rRGO&xIQve`V#f9xv(>=zK%5uFV58 x_}oG#k9cwFCECrL(J6WyFI6eCvVB?2)R#H&)=CI@W{OHbcnvqJss$hGMi-W#^A zY*BNj3J7GA@_P@LHm4&vt!hke4wPCEN0M2`HeS~YbMA+xWh*XKW#;-*!!j^|T^A$7 zU`uvcaaEt7_(?j1!U;A@)D(u=IoJ_A1X{PWE;DX3hKhbZU)OaAu70T_`efkKW~=X& zotpj0+ AN6NuA=uL*n(m z28^RK=NcRc7|Q)4Pl_aCU9vKPJW);5?~!vIO?3B56%|57Ma2@+%ue}dtvfmaoYtT; zRl0cmH@do?GVYIP>l(Kkx^T5SS83Q(9@eqLPZm#7TG~@~_9FOpFWug( z@hkKO(3Bu;lf|2CpsQFnQfMa>0l j$hDAB`~ zOL|??Ag^`rf^q8VDJT=oX24;~w6BqmkuPdQ?`-Qd&}g$GH#j! 7Md30rG=N6{4 zqY{IA)t`N?zy7j(^ea|clg`z3ZN%Dbgn`& Hk4T1_q70|dA4W(=6t!SKJ%dJC zU*t8MDVwfAuE7H>x~f|z##UWK^aDgBr7LKY1%9w%-FIdPLK@}HN@?tVA6-$72{l_O zM70h~H;Z3dsxLX*5`*$&RecKwdfk?M$5)X9Y1d=QNlStJt^4!TE>*`<`*o+M!b@*| zvlW0=E`8xQ+XctX=M=1TDmu<|qMzYVboR8gkq(5UEP7okB)GzjaGs$rzdlIfbbP*9 z;v7Rw`QZQr>@6(wXm@%ET ^&N+@F3Zv{l|{|-`&{~Pd?c}TGY1#f)<=ht z{ok!|?4qyR(TH;_CNlP|&CTQfXXQL*9oWM_k9toXMu}k^aq7VPNqeiknTkLZ0_M0- zpFrc%T;bOD+yw|UCcm(Q7b^~{D1GakiJ>{!b6Y~9tzPFDK9@QFJa#WLK%bbRFP`E@ z@$RPtA!~dZE^Y|Y15oc{UxYBUm FMg}O|6J@2{XH0dQC=trM-ACnS8u-!0iV&Md$V#^_FzJ zDWm&c)9zyvD}HQa8GJ&%9AwCV4HS{ `{ JQWAz~yYktzWE4xdg zF!Z#PUcVtE@E4J=$r3Y?j`!`oI*LX=Q9m+e@1U-EKL|gML;|}D5&6M=JRiPp;h5q? zK7Xr0%Kmuipn;^q#F?goki5J{0Ga6Bl>Ot!(}-^*cM|K6N*Q(y*o?0#-^b0ECaEi- z+a<34bb?9-3??@l#kws&rR3m*6qiu|Li)OYz};VvU;CNHxe-X1UInA*FZO1Y?RTEz z5Gi##^3F6mk!eqoOHP;dh1Z!aw)8zPaxuIXGYAqFb_As4vm7M6J5_1{&~tz?mbsY% zR0&WAus+%7i>< dh3|IhP-ZB%U{R+mbIR~CGMR=x+iltPujjPhJdHJ zG75C-a(o}TsY?$zFmPBYZpkmWo+eAq!Pt=U2|Ba`k!3@BG3B{swVz!R)7#}9YF!dp zD(&EB535fa2V6SAwoI4Wl(}1#G)8X=&BDv>WD(yVrWT*};q9h^2x)%RE*L2dJZo65 ztGjqv7f+&QBLcKpy^`yBZEXBP+v^UOu2X!S$HiInyI|Av?rXZaX${5KH?%%} zi~Vb{A?nu$+gjLu`)1khiAc2-F-SRD)ji8igm!Nk8u>*=j(+<#UjjD3E&r{llv+WR zvc-U*bM`!eq}T;@#H|p1x9|qUKgLM1P=50Ud)diIy+7ndxE)2v-(hD!KH%E019x8c z2lP##R^o0A9!Q{h-8jxvr Sf7Ia=Mwk- HnF zZWg{``Zvc%*+1Q9=d;<%sc& vxDjUVFE;haSuJzm26~# z6L;T-HKmloz7*PV_H#kOEYs2u@@l8wd#w8CD^&q#-uqdCbSb3T#|+14dV$R5L({{G z*2{=t95N$vnl#a?4sR?yy6bC=cJABF-p=^yi64@gw?IoFi3W|cX7y_gRKu|_SEm#blxLU>lcfs>%|Zl6(0P50KvlFdD0w>jC_^cP{^kd2sG z CaY&&YR~>3klDrr?*Tz+b)Tj zwJ>xX7#hsao2~u$k#=gMHt?OXev-`8!Pc@F*IQov$`q0s1vX2t}(rZXUnc>Jwi4C^LYo`5k#f@;+tCR|A6{S{%W7orI>0m%2xF zl{~D8i%bPSDHGBsIj}d_%~jP-bK4lLZK{oQ{+ZsQPZt)5xK~f-fa3=PHsyn#$I(xW z5)&r!jLfFoy_@1%04_B(`upW_dlM55nz)y-tYKF%C8#1U`_7%D6pEjx1+g54M})$| zIWNyh|CCm9vT%mQylB_WuY8)Cwb&kp%-Yniu6-wIBdhcJUU}Z5)Dr7n`S@RNjWktA z&fqf>_a1P}G<>cgmjB(F57wo3X@7aUYEg+eUl8MmamBfMY6 2PT=yq&xe!Nt2gU`aq$>czK`cg1-POHM}PCU20Xp1=8 zx}4NfeU1%7V^ra~-2HV=Of~b*<7r|r1JunGuH#ZeoV-h>YRp%wmi_Ht8P`)&Tag>= zmWYmmdc;Y3jPpgqH{jg_T+sA_E$$~xJidH4)fiX`)O^LVFNN#GBlTr8=MYB5mNr}) zIhoufjdDazCc&qY97Gkvtt}&Mn{z`Q1qWtZg Dj zBd1FGt%izx{BBS=e&3B&r#2S?kaVS7nLmIxPBt}^_+OIeG;X{w0be+e%{h&!I&TFY zv=p3s*g+EAJor`?SGvHW=?y$Kk3r `${F0&st zZyY@VMmX(HVeNG2N5idQhx6^A!-+|$I`Py<23t|M3p;pnd;w}J6TP3VzSzMD*h&kN zhw1>~vDRT@reg1}XLLU0!5<0AeRFBBwz#Sr%$O+Epx--1$=sKM(i(gurXP`-dN})V z`7DhgJroDh79Wwc9b^d#3}QSTG*KHbK2Uf#@FCZ34`I2rCk2Py)e&xzr;Q^Wv^%a1 zUAi`6gcQgSqB3{-4*z1BUkToC?tqNS?h08B!%__C3lP%h@@naep{&_-scwBv9D0a5 z;y{bVOhW=CLrZ@5+-Y8xtOR5hm9z%@Af=#0|IGRK;d{eW_mR$L21ztYZukT`WnXi1 zlit0{E-^Z?jozd*uJH0XUDdr`WfSu!G=n6*-~e3I-R64Xq+WSYkPY}K`a%7p$Ehm# zL29N4^V5Z13uPZ24;oM=?qQgwiVN@!OrZmg-0HWirW}5sW4^6i0fNXv6#ICHbUlu> z*!i#`-em4T(L};k@k>8}yxOHJCbQmJ>1Z*jMuLWNrD#TVYHB5*D x;PsZx3)jaDO{c=G~aDK$rKI)Y7y+
PH0oZ0fjs>xMW8r|YZYE)eINh`nb^#Q~Gtt>R;I zf6;xw;hs69KqYD=7tLtu63ms2IItd`e#Um&vb8aD>+tuZw`wUNR>Nj`VVQ1yPdIZ> z+Lq-~YhHqzt}&bK(&&S?n35k9X?hn)mZtbTTE%^_>Dfi+zeAgfYMKxe2yk=-dj5Va#pDoao?#4Jle!vG(bbmHIBwTA}#Kv4pYtM8M*fmW 59yqY)SX+WkDh>%y7+W2OG0<;T{}gr1lRJ5Cb@y>y7Ix5k~ODqZ1B zvsFfm;Tekk^DWp|hTE6crUrecf!o^F2U_L0{>LFiv~e#aYAx}FRh qh`{`*=&Gyj{jvz-2s~-?{Cj=n78iFro4Ce((&V!Qil~R zRI9>$>ZA3l%t;+|IP4c5NZN9wE_u@UEPJ!rEm9fT2pjUPdc!=B;Y@U5wRH!@uRrr| zecIA{An-(*l|Qv~SnvhEin*MMnPW`iM%vXh?w0UY-!B{4DIGq(u;qKB_jqg%6au+; zBafSI%e;@=Md&8^K??_uDx--_?+f7)+e#r97i;!RCG~ZioJ7rCYx$j)C-*EoMY6g) zHzfn;1o)IB1TX)m7ogB@QMN?S!*{CaGF+J 8u~SFz!S 0XtPjx Q(d=1Btg?}s6SKr$mp;1!5Hi5T0WmUr~F|j=tN!%qfU(TauUZ!!XBjQLrYl+ zLS9P0`k3U`Jn#{VUf5ut%--RJgS+mTtgW_rc~4V6dhh)0Sl@QK^#N_^5>e7ncoPNn zpTz?s!2bl->YSn4DtN@JWVbHUs@<3d=!YBqJ94d=Q!a2g7L(nE1UbvBtVY?(ps3)= z`G%CTkBhfxk~KDGc0ag&@x9~zj-S|g{lym>eMnt=HqCT}WqY)Q|FqMfl=xSx;X7|H zcT!yR|NN-v8 )$`ha<4&2Nz)+1{xM|t^7r9nF=9$x zqCsdXiGu85k-#TgZsY{LM8Rj$0Sphgg2$du43$U?L(dh~-squ<3v&2^@Cu2w5qTr$ z`pP6eysPEXz@fYb7Fo3vP+9{aj8_GL+S0RnQKgE=3tR&!=DMHe*dyn`c NlYgqy|h6MmV;xMBAQ$F>~u zhqV;VP&gFQRWZWL*D)8o*g;n#_IR(2;PgvE()YSx=RaA|PQ%i^!WS6aPs-M0)JGB@ z&< 3UM&Ai%!;Is+5%1{-0geTcbX?M_&vA&FD3K{lKYw?SnI{ z`=GMvX0JZ0TL4)taNT$?b;s_)f2P%rt~-{bMA_LVG4*(bxt*n~Bq}MXp>|my^y>1Y zPx|%jIqm<$+*=35**$H810)a#4#6#GaMwXXf`niR5F~i;;5rN*NN@?R0}&(ym*DPB z2(E( nq`kF#htneQ?P=TyV1O<8g>7(&A84U7kllrtX- zxbXC6LSGz&En(36WhGaON)HEiydm||9nvc)@gDd0PbU}->qCOvNa!9IQQ~J@D;OE% zR+bkVV~MakVkr@*2wN9=#wWZf(RlkNq+}3!LHF?TK-io8#z~Zyg~!r;kM8XZ{ca_W zeq_YzV>)k&thAR|dN)-R8u6IMJ)=u6JB53eKa+qBRYr%w@E+; 3TL)QA*tEJogU#82&FfX!bs6V$)I z_Dm9XCf2BqTPgPW;!5)6ojT7WZ`SpU=oE8laU^#7g#9-p5%+pZX1t1X>r}|H%#+`L zUL4FukrJc}q|w4xkEhKl#FgB;otEXGpS$vgLWV?@wn*`8@AR3>q8r3?G)EK>sjwadWNc$7Q(PbzbA#!cTml)Qd}|mNK>Nk{amV z{Kce42s0JK$AflAD?HrAlfBv#7mX7LmY2_#4pdCP+vSc=Q=$MHt1oo>k=Lo$d%EeC z4?oq$ypsyBK71KnA!;VMz7u1mN6<>vK2$DXL}%hA@2GH$KqDii@m_3;{oGd;jJYsf z?lScW=c+tDA(nsZh{bA;h1X_ZgsRKuaA8`!W&gTKVe}o-%ph`wtyd4ZXtraQ4WE)& zb-Gx{=oQaEY*FymhZM|Xu)cThecX|ki(i8uXxb6Kx8;A0l_g@r<{l6ro7G@i&jZPt z2Vq_8)Crur98USoVMMx64qTu075_3tO5Y+xvFw{=xBvjx@J#1W@)ZadojWVGzVTfE z4U-kcK>`i0neF<^^)o6XyO?O$8aMFbXa0vq%6@vV9?2kCMMlhfYOzzKns(iaw|fuX z@;vAC1(Lr>qNy6X?5lA6TQ FDhy$qU #)J9&fc`sG4BSYr8FMu}*OwTLl2 zGoU7;n7H2PN*MQW>4b BVm~T0zE4xQY~tWlE#XX9c}bLrKk&oT5~~7AkL48-C$_x!)KsOz=Q0kj z?`|YVN3O{Tc;&r2W2QI3WEJt)YO;P6H%sI1mzjKN=>Ncu0{8y|JN|!tsjHa2)W4FY zCMWf`RdVL&HuwI)EPF`*162O+d}%^!e=AWc|J4Q3TS58p$M*kSM^xS_Do48v;(n^9 z`a9wAf#?8JfmbkLbE6gO-Vwg>CqB>Ch5I7H#XR>J (xHi+V7&KB! zM{TC0Ld5OQIQo$kdt0|QYiOusEGfV<^3yZ4p>eIzDYs8RmF`;R*u-Xp_-V1uuC)^7 zLy}~t{I4Ijb6fu;2oW HQ>_C$?h0 uI zBwc7S>)WXTY+KCr)J_8Zb9(Z9l_8Nk%)aOQSBF-!oj<9Xb1A U`PJ|P8nULw^_XrMA~nM-)QR34wQ`gDLiqDpGhkT(=W?B ziLf-qba2i&k)Sno7 8(65iKS)v#ah-?8-uj}5uo#4dKJaXbk&W+x{ Q_7*(_ zjAnG=dXr)o|0w-sksWM%^l6=5?{JxM$FRg~EJJ*tw93sgGuxi*7C4Mme2x~tS4Q>P zZeWOEVgrm#mx19wd#}CJ%~78V^P?Y4_S62)v(*msi$^g8C)1O_seLi3H& BA zHX54PZNg9mGWJL49R+>Y?dI5RYRIJ)XqT5}d}cpBXcu@jp)_lG`y3*$(5-06Q<$XD z{(i)~vBB3W;i_UWSgsgb<0lod)8(n{?DOdoUz^_k3Me7b61uSv9qD?oZAbo5l!<%>SI-~E(>vVT@cCjCnm(zY zO802eov-E7L#T_ON#OXikMq&ve5JZ{@aTOfdn2*#XWNO?9|KyV9P=-H@kIAzG@Ro8 z(}ojVI HgE+MS=Kd)mt6t%uOJ63ZgW9~CNH=}q!KtS<2sf2-LE!4FM25#ls@ z!F0&)*-cQ14C)j}M<5DKXERC}KW&eX`|O9%ho-Ep*20pURzi}lawMz%nd1HQDpZu) z`-TF(%Ij~lR8oy-IGwS5ZmHYo(9ZNTEflvKxAO1;hT6CN_~+i-%~q`94ocbLgAu>K zJ|BpP!d&!PbfiKf#K$6_!v#IM^xQ70Zu8i4GKgR+Yiv)X{v$fAVll~rN4Ry`TP z?82)JR^h}qLWa%vbyIfTVyi4akzM@FpEJ#$WDp3`EsD) 2 9OO7-j7U za&O|nKjq6}*`NMfDeQmeOOrpCfaoNewKU4D3f_M=kH5*Qa;pczHW>c~@dR8ZoH7w8 zVlcpNp#l7?kKhw}MnQgV*(MGsCE8Vqk< ^OOP? ?w zg cKry0qK#ybzJdsCK8MsDkq)` z6Y@n`{YNao2-TT`ZEdFTsA a{s-P0J2Tuz6s;r $fKS+5-#kPQIOMc3_^J31*N)@EgR)t{8Q{vKwM=;7+}=vn*)_DAeyym z9)I5rIkla$X-^*Eg=5U>;t|i;Fym^c{L@`CI}J<#KAj}R9>?*)gudgadYpf{@;og8 z4d7lQpUVTC<_M2a&j0DS>f-&yHP4hyTKYrI9`l5y`RB}?HnN5HcUHBe2df3(sa!6j z%-W}tL(7AFWXJ%38%Av-4($oUA-J{gYo9;9Tg9;pnK+>Pa&ija_Sz92fPb4Vz=)z# z^klz!YcOfszqkfr$*{eQM)9N$=RvAI;D$&Dn0F=8<6}|uUHf7x*vSE6Z(R~>EuYMd z6UM%NZzJk$FJB=d^~g%a$_ly^Y6?DlTeW)~8tmA#A&QV;5lQOlxh)SB7NxpWDD&dC ze-#w@K{BOl)F)}aq)E=soVn~_W=?5kGy|dCQ91C2g-lL?xLz!_O@p9Sc1EDs0@IhK z2P*e+xq?ggcl}&v;mkhATIM>@_}8IHm5V(cu!k%c3K>{s F2?Webu*$Tv-3=a4krhdR3;pq5mZ*cGANC$T6C87k^(>L z$4#@>()JQ_Oe08`Ra?m)ww81c?23zTNMEA*hR;pfa4gB44D9E_or+6-Dc@>!#wjnK zAJVXzQQY|`Xe>GN%NeC+^&0N9+O6WnZdL-Kx4iF&OUxRkF0p6sLqU|dM3i46$IhF8 z10HI=r~LOFEsqf8R-uL&FOYjKKFHR+`WP&rIE(S&8$CJ&b$PJ^BXLT3wu_%!1l}cM znK7JnN~t5o%nR(|Lm-_Jmy>$e9cbLx_7A1Cre)KuMF!t)HX&b7B5KxMcHeRrAJfd8 zW>Q_KCH$G10NV%IM`?L_DcqwNQCgKczq}RT9y7K=DHw{OjZun9n{(zAB*k$m&Q0se z<(xB>7-9)4M63;$fvSZ%P8=JBe6EF?^s7^M4PMTqCG0UgTfBOxHJP#0S2U}etGMqr zC-CRb+`y|yS>{3k53;3$rVc9@1_qtzto{#AxGD!H$NB0iTeezDD4^Xb4kh=S1dG`z zNk&)kaVud2xg=%@#2a Ve3bxbK9=i6pBIhg29;@G0CfiYn7fH);q$>Es)p{Wp%?_kOI8(sYpNlziDmd z+T@{(<*q`D)rK; 88VfxXbc*0Cn%tyFP7CX4FYT;3-&hqj*P{7SQxkZZbc!~bx_e>=H5x*B z-qNP-{4}RS&W8lJ_1%_|pIuhJ6Vc_W_@^iLEo*RWQ`^{_j-axYUkFHuXjGdM8y djambt=kIkm28!h}ErMZ>-)dRvLc0dRL{rd6d=)EA>y}8=<-gq{4PEP9N z@^pRp=g)j7{onZ>BAa204SMTM)>=*#E16vL@yQi#p>_}$n@6J9cuR6>M7Bq$_R#~A zG`@B^`M~~h+v9-HkBNh=GZ}_HBTlgeP+@0;F1CJk!+?)BRL#YEB@DZyFKGU7=~P`S zwW*FkN$*hdKHOKucjdx)3jqpuw)ossX@&mm>VhO8^G9}h8QVEABth|zN!MTYZpAKS z8)BI7RjcyhDxXz#zI(dSEjy~uMfSjb!MTF!b#^ujv6ykYVu <9N6|c0lPO ~U&TrxX#+ZnsJPyyJ zu~!A#)Y&roFY3;%gN_ViY6Mm3GrP#XiGP4&Q?M`cZR{na=hByy(0=zt%veS^$Ho(> zUw6Z {50p|+U{+HJ#|8!q &e& zPP}khz8Tf3HvG!cJZg_I31je^#+k^zF5FJ}G^^7 2(J(@@HsW|olH`4K0P9(K1EKmeI599Fs3sH&!|2+-LhEm!K79a z2g~^*EVEvd1xtlB{3@1py+ycsR;)BU?EN9>G8_B_CD7rpl9m@WzDFc zu(c5pcGe2{@KSzZcKM;;7IkAK)}A5;?zfc{rI&pSj{5lhSh}Bi+!e9mm9UDEWl}WU zIHMsmShP7#CbZ*1Ng9X2?1rr}ez+;zOQof>JHFcXAsfz_n+)c@X=evpJe6bKw;Zbv zvO3yy{U;kTx5B4nF_R{2yLWBY5Z{c*`P95{cr;^Mf|qJ~Qim7w<9!g&bAORZ2Bz=W zc+xY>E}-WNMvN|z;4M0z`^6$>(m3@_BIb-DP*CTp`Y&^4>x;XaI#KO`&b~emNg=1k zYdL9wvcet!+`HuE=n@%DIEcAa=EAGS_AY9* zBKuz+Pk<8j|6)g=o_6~{QdWDEDf9QGz*A^@Ys6CAT7@yTwO?NaxC)O8i5M>7k2>=x znXmEsM>p30VjVom`yn;iwu_%4?kz%#)-%|T&ai)d|EKMc)7peR*C>;xgaf6Gjf16i z=e>U(lifCvGuYR+jM9g5jo##_^5!Teb63%hvXz>%*@S@0f^N+Hcx61{3<)!s4toT^ z+FnxLRgtD-HP^J-&1tvqK63wx74Sdn_Uf6xkZGu-muV`x)A_!sT9&jbAI0hr1ehTS zjw>%Ocjj!aJ;BGuKH@9XE}WpewY&3v)n1+7f*R#^L>}!p+Ce|WT~kbV!#}yX5eld} z+(%Dg9Vk_dU3592lKL09ypW8YpP6N)2+r}IeaFvmY?ie`)EIqcDg5n)l5%!#Rd5W_ zGksIgYDG<{z46KWw(WmS+}CZyfGJcuB+3`r+Iqh?U*EkoUeG% aa~`<+>Q&470B%eR!E_p=+m6jy69W7lWtW z`A8R^9pSAHq$_66|HUWDbjR*Q@Ky(N7B xRgvDqn4&JL}nLGcw=EpwQw7h1m`UoV!@NQzX(DQNB zi<6sM8U!keM4VnZKU0W6$j0audCb`~cR@sY4k%w2BHoa3)>jQa<>XfAxDNVf`QOP- zEK0Kf+U-d$P_OMGZ1IwRhCnVo0WBb8H#Fp#Xnua-x6MoLmNvV*h)QA3%AVWxf_h1o z<(kJ#zK>$wO|%p0GyW^)x#4+jhJQ;aq85PXKh);XP!+WQ wmcbM4N0VQ+sME!AZx=V9v2$&!6uv@)66QQi%pgZ|_Wo8m_Gm z7SKS`U)n55r=6s0t%i*QHzv<`lR6Uce01H(eD5EVA7|}?b~6(KKHj!CQcV}*&T>Hc z$pm`gcsd#q{OA0GnOQdlWO+`D?awsGcsGz`)VP;opKpjCGBSll8ngr>2o6rR_*e6? zUv1fAv_K7%-tAN*fb6Tm%1TPTaJB6MPFPMyCqyQfoXfJk0L!}GSo^m+c&UIZdKXa! zDK`Z!h`6iD(IuI3?cyNjSJwyA4X%sBcw-*%L+w^~cg9!!b; M)nMxb(y=~KkJUN*?>Q6kI{Y`7=IdWP|1Nw z0;C;jM|w9Q7Fg-*T%IvwknS3 iq{* z;Asdnes4Mfk92QgXxW*j4}LcO`g}`y9u^vDIG|iYrU5%5NNJkiHoXddWB5IvQ7_|M zqqz<%Nc!bNV;1Lwz`cAbcHYLm4+NZ8Tz98Lur834Vz#Ij8(l{iIndWmdj}7U?qP*| zw>mE{6=U$M^#;x)zHDeFDk+JrJH4>$?P=dEX&+r)Yk(^K hdu(TOQ0_b}IDcfHrB{Xen{P%*K A?J>IXR4|tLEJVWUr(ypo~hRz zwYH)c#hWzx@j;|^b1ychtN8P1x4{T$0_rT|PVYxi*?U||b0D3I+*4HOua2_h0|L3u zVf1qPg^kpXlwWj#PRU`OnK%Eo@^s1}@tZ;4AOOVuEdI!WlDx!dP2D(&5bl_5vLb;$ zc2PH)xbBes (2DBQZvE78?oLgDAA`lfg1ik9oGlu#Cx-UEm@E(|>6Z3r->P|1>p zpb8(vLm*P?hjt=Z`IO>fGr@kuPb)DHeih!cLf0ng(1MJ68iukQ(mb7RMV)JrZ1eWt zza0xA4)W(g=V-(luIJyD7)49`x)o>V63BMCX5Ewd7dF4`%z@^Q5*!yAC?~{Q7}awb zkX4pHUp|~p(T}tlu wev0a_NuUSS+=Ks9w`2%ezCsX>zrSGr<{!b z!F-^|(`rPwKcf3N?>&m+>eqS(k G5_Y*{x zhn&pXgMm!gj`A!A`8;)3k7ViB*4_wRAxs2AJtWG+X($Xqbb=bYT3RB@XILK?q)S5P zFJ|d~Mlqu2f}3o&)KPla6>Qnd+r#suE4J>_3f`|(E>QH9IBm4GUGN7e5P=@_T?rW1 z@a9C?L|Sk2xqr1( hEto>{O1zrQ#Odaie;X)q{8pT)|({8FrkPf%fu2unKWvlxNJ= zSY_zra`+vKxU;lqW3;uuOuT1GTdwOB8*yw1aeQe~c|41GNnehTOmfaacdyqX_# z4?r^T1v@$ Meaa;Rr-^KCYbe+mo?VAxM2FmF_&){ z{ZHF4G=IJ$PKvLv=gsoDypIQqCL$or$SC=Q66l`zTPQVk>>aUy*r`0xkckvZ>+PR} zqpj}F%L*lf9gW4M{Rsp8hP*hYHP7j!j}G9WmOBGXRPlch=p5T=*qFdcQuYD=^rP>E z{^@Y8E1c7jXxWMA1|!&1uLdxIjPw @tzyChIXv6ZulgO?FAt`?4{4sN+9j6RALjL;uYq9BAneZ z(Y~cC_i{ghFThp&AZ8YD!ou0^a;tUX3l&E1K5C`;IHduxqHi*>8U4nv)nt}ziP>J` zvxn 9|0aLK>Lseh=av=kI}5wb?PsLV^0&X z`1s=hVBzxZkZ|?k3IxAY4uzIIBjbr&fywBT?rou3YULW27>}`9x;^itb9aygEAT#m zuB{e&^Wo_;Mm_eMNYh{Mkfe*3iH@~SUn&17rA!pt-IGA@U(S_;<2Lt;NN=k488BrO zicmr9r)Ka>J?+(#mfE!URO!V|A)8{!%;ks4GTjUAYcZ(sN>;gGsIUa+ vsAj)QRn^_%C3TDea+N=t>jDt&AR?--zyJP zQYYZ%vgD@E(f?}p^;%4Mx@S6%DcFlua3^-k>e#< KFTo>!-(}GM>tpAF@xU$xe*jyrp10G69JV<4&Mn_X|B@^6v z&0O PMLov^l^2ZIZbow6oI2iMK2=og{;`KVGZPMt4DX~{%H5m|-kZOL%&-irw>NL& z +j&evLBEA^ohC4nucJKxK#TA z$ugIauzw8YmgK^g{X4IcH|SQBtg6Yygp3{PA8a!U92avbsSX=tlv9+Ba<)^x5)v-2 z|I&W%Z#=)9F>3R^DcZ(^j$qC@r|D7)*7_>oA$il9Wy`&SPY>#83rtPQejNQhIqZ-* z{jjkK<*_!KE72sUQD4+u;y{!E1LjM^b0|7U-6)qqtiqSvv_Awty`=7cu|oPUKMX@G z5j4Ys(txOeP0!+vFbj6J=sD`D)p;i}p<#3g^lKPxJx;Aqa^l{WZnEyAk{BA-Fq#4T ztY>_xNuDo>|L+Ky_!<=Z??|av{Xf=scYk0KorCW^55ec>6`=~){?Kf5uSJ(u(i7!Q zQh-oclXgwPKL`Yg99jUshSguff*fl+d*g#If2E;E>+8QMm;WdF5?>BFK=wvYo7+e@ zx4~@ijxLKL%!;KPqoHbvxBu)c*gr>*cxA?utE*XG{B1rXiOnA@K*O6Hp(;_0EgO8$ zo4+bSj!xgy7k6=~Jp>H}W*kl7Jh=Q(X#LpLigh6zXGS2I#B3YVqJFWryTd8fx)#uj zIQK-ze!trI*%_7%?^*3=@)f$IwVT$LQ*aafbl+PH4l4b%K~XPYU}&S`9)qrnA|@Xf zI4nUvaatpeKM$M7)k?DI?o*ZfZbgC zBZKj;RM16d!F})U=SpdT1>T-LaChVLNBZo|Z+=;9zBzN!c>r)657DaZC Pub>*gcOYiUW?cQ8zsn m^3Sdv@06mp z{m2wgaA=R%KOx;Ii7O0B8<;<{!c0?h`iVawyuM>=-O>_iT%U4KkX%dsfN${9(;%MB zP*D*}UFw9?`1*hoiGaxvr0o^vg%9^du-_DB0x*?zEX$j%$@|S{078?AhnC2_y{A{j z--un}fEc^(^bYUTeTloJ!L;2EwzPE8hBJS9_DMrBApR*e`JpH=nqX-f1mbn;?UmwX znP%XgT|S4w8`|2WGJZIs)u*pOBaLahkGz7nsifb3ueDqO`wAX
beQ(F6Q(P*Ex`ho>s}cK4 zPM_@Dy0U2i%CAx0yl%8}WiEBsN1+KAC}^bET4%B<>O9-+9U>V^vSM)Q9c)1|iA}6* znx;mu+^MoUvK)z0TttDBJn_gIkK%_%W18`PxwF}*3TibdZom!qTC-`{TTE3Q#1eLr zFfljU03C(QWELad^e0Jb_AIk|Y(KVi~BVN_7>f9>rBWrD2Y(CsA>#;XX`5FdA zVJ%BdWK~V+&j MiVjFGfiyO{rJx^FCk!QVZb*|jcOFKVTfUsa^q_2cq zZT-Sj?#G`dzy1w 2&u;b9?fCC**7{ 8kq==@ob8@Ubn> -5imM z`r$-vNTNX8uC1Hw^F>*FI<9qp?VHr6C57MfyGP;#sBR4UNB+D+#l&AYZ@%U+co_ME zPEnbo*6&K98{hZo>(}5CCRQDu49bRq5bG CX0UWQUti&U%o03yr{4Z`gPBh@O{*(e0M)mJyGo1PMZhXMGXnGQr1M vbVt9!>P|VkDH3QnksS% zUxI(tM}C3!=US0hG$QPDzy+5XS5G(5w7H{M1U&d>m8Hhs_`Y~KdAiq^xh>`coE({2 z=-IMb_n55UWJ1OH%f&>>^L*_a9V^@<^e;KssqufKYGK1#g5`|3rGOjT0(0BOCr13r zphso)yDkbdaQZ>_O^_6dl{;SXFf=mKytSg>iOlwP{Ha~Z X&&-c 6RU{SZ9+xd|>f6}ySqScgoW*IO+ z&v>49qStWHWm~8x5+9rvOf -ae ~-$1}VI)Zvs! zaU1NU*9pS9SD5d>TkN?gZ8n;#8svSZFh)jcJenJ2x%-KMJBrS!uKsKQRO#Hd!t#R9 z@fsUZW&M@|CqHJ$T(PSMhCT`AK@sogcwafX)|?-wN6a;VV&H=Jq&^+=f5YX#5qUkgu^1l=KmYk8sLvNmVQwg%JZ2@@<7f?} zQ@@S9IGsF
yghy_96TvehWbcp0!vWvT+HEmMTrSCzy?bo$(90FL{oR4E*}U~tj#Ep zQqV5PaP2ug@mI$?lZb+OTNF;()l_C;%;pPeih~b0P!N=2Z?VcHG`M1E=tb`Qs947% z;@H>+vkwALG^zbrC^G5hJm!Yt#87H~h25SRHkBpOoLz@RY9&24%g+PiK=wp_9J;AJ z+^+_+&o{ !lm@L_3>{ zN#sxT_ 1gJ+8t-* z=`M}Rf6(CVv^zBT4F>5ZBb#7a`0{13O^WQ6vJ9)l%86;n4#CN#@#%AoAvLO|`o3}a zP;C6-${=F-aliLmt_MCCPc{AvR6Sxi1WLfKMouX%E*4T_j?tJG> KO$ihkUFuY(zE+Pmt=c_Xhsx$6- z;*&06OlAwg7dYL^IT-g@ZvxY`OJ_wEq7ZBakpyiy*5=S3VwS1Ku1qGdt64!M72U2$ z)$z)Ox>kZ*NX~1)y3vJym}hLwodWe&P`!(bpiEd5cJPQR?_CUSC1vY?A;R4&i+Ahm z7QY5T(gmMAeeuqMLpq@;t~8sEkOkh_0;KuC_-5PRw9z{mC^OgMa>fIK&za8fJ^y2Y zaC39xv!AIn%|n}_>CbQUi2BkTMUr!Whf}g;MjeFq`SYd3FLGn}%jvEUc+(w@gWvZW z=b2G^dM_^dLZ4KFUTI85a4Y%J30CXUhQG`R9N7QC7w-J6n8?^0n2Q};=JwkKw;ipu z6-G}0qWLlpt>%G%z1&Of_{~>q!0-;M8rLd;Z+iIcDyB5{K)CH+%-i=AFNv4kl^Sbe z_j?&PEqPRem&q*o9@^+>{uW_LvuVfYv{lwFQ;ZCAJ6}ln8>|5P=SkC=p67WU`0jY9 zm;(w+fAvbYC9Zn5Y}mN3s!`sKdhO-ecku0WqN6qjf?WHv=f{Ao5x)zCeM*wpCDlHb zSlXdq83;@J=Ig4IHJ=03;h*0{LLxviMQig5VW+2viZh%Xk?zCC)mT?&Pi^GQ5hxla zWlZ;TRB`IFy?N^KgvSNKaWy{(Rbh>8ax8=vS)Fa-+G!2kQ&yd(@Dn_-emeQ(%M-5h z7=+@o@10ZWR-^*G4O_0KY!TrTjGm706*{rq!-(8P9kllFU068lv1UL^%uS~{isb|^ z@gLU&(0#23!4E;GHHn(G$R~{`%E)_5{LUN *opDtG^#dbbJp`_%82;gx5raGU9dCUx6wA2ts>_y0+*sO Fmq+m{&V8 zHc(jeLz?LK$D02useI!f@? n %{;Mw;p&OxL>6 zC5Vu)=73wcxnwC=yu1?=7**&yO3uCB)=)ceS(24v`pYCDbP;YZV&{KzcIhqWPb6r$ zzY9vPF MctG{F&8PUr!P}qGhE)O*E*$RyzU}hTs@~s@- zzf`a}uM*w+{qT3}?U!eZhH2sbwHe1bMmT404oXSLLu}cmN~!IIyk_Zt6hOlJ6c9*; zyBt%X|J4_m(op~RMmN#=2>q#YVVkM?*7imuCFMv$lTM#r7X5?e6D?D9DzDv`Fk<+= zrt`N<2H6=OEA~Cn95>uazK!n<4dIqq^mdpdYHT7Q80{2>9afbkqpyPfOH?A=sz2l{ zC=>333!ZrX`Z64tcJ}L+5OE}(pLtj)u4?sjIdct)?S!wPKR!v)x vfTbB4t^|Nr@?>NG|vA*b`f1#F(IbH-_9?}#Su-1W Ft0m>PK-QIU8H$*cC-Db~48+b}_)1>w7JXD*12yxJ7Z3&TX!- zf9J>a03W8me_mdfW}OvDZB#NEP>C1zN~?V3gO*?4!?W1ZmFwa+H;|pFEJcSsh4ppJ z(qT|V!4LDEE#~^~(>kve`NRv<^V}vER1RHr4m`X8?R4s1!S(P((u%0%z$ns6gRatH zHYqEt?w92Xem-AB;9PAwpNA`4E3i$hEY|TC=Aq)>%69G8y*UCKZsa8adxiF&%fpse zJ*#q9ao_BG4z|r3Tv|Sn6fG&%@5A$bP8sRy)V}OU5oeCzR<$q45DXm*2(Ub z4jaGJHsauqzT8_es}IK9J;^EL=wUT^=H^2Tgz_?)CNN1WTuI z%4i?n3yi zuV=DJ__63$TP{o8Ok?B+3Tb aG@MkfmOT;cR95X2fUH{v8IYtqQuz6ZBp z(%w_<4M}Y87Akuonmwz@IG0TDcONXv8_aUm>7*l{X@XpTY4lcyQAz3Tzg&QU==kr{ ztc~vvI2LTgq&J> |4VT@G17Nge7$+5S% zo@>zfh29jd%s3XoGq0u3#C|{fpe(+VXxvEo+yG)!&z}8h+rJ>eaer-W_*~grl(03! zoDE!%WF~r?_ad`+Cl1HY3fO}T65g3bo~wRbyTbY7S&5_A+jJmR`_%jiMp{f##nEI@ zfb1nFi -8(o02!5iY;4rHT}}wMXGpk&tLCKV0&$6Au`6`n_0DRkEVyAY zn%d~KdL*fSLFlTVjg0yShco*_6`%ZKj3=Vp{Ia|wui%wp)#_n*#w(DR063?6W(iQ& z#L#K5pYxx3Nc4I@Rf$Dd_!B+1p^yj0)1HRsCtzAQ6;kimdYDC8oMuDFo=1(7K^twnh|I=>HI|R`niS-D?32lS0ca`af=0xj(n;Gr(1b z3Q>({YtYENn_6jp&N|7Hu@ab Q5IeDBBxY{fT=Az=WB3XFj=_v$$XEwrcLVu{p&2m<*Ubn zPiGsS_?0(3s2^WUg3-XXc*`q)z;R}))?GclHK(-FLWI911FMS AJ~ z9ikY#q(PJ$>)QIjMv}CD7(1!#Z6at+J5&6q`t&!~&>OrK6rD=kdHEjdfPxhVvx_vJ zVj;uD3Qqeu_~xfjy#ZC{Cd9lD5VIi*NM_hJ+(RMYsa)hj7Lx3HoC+-9S{hgCT3; zlo;57_qsJA`^mAQjgJ iIyItyRH>`0uNilVty8CdvMKWrI`5k-s7OFiKu*MO z#qrEf<)g(!sj+no_G^WX2W7Lpz5UruUo#1sHcTgW#A{p*owzlK|H{a!JZTkn0JnbC zemWEpd>e*A|59BIdS-P)Z^j?`i|t*M%ZQ8bK9^7AxZ3)yaVG5tZW*=IT{L|_@pXHO zl&zV|<5^F3QBIiaiE8$M{&y>vzY&y%0Hj$RMv5A0R`Kyef^HDQH>>_gm_Mt*&FIY; zyZ=!Yk*5hdAx`StWuLNK+oB AnP#!GIYcK6 Qqi40 z(;6^HYEDzMn`&nIN5EBNbbq}cua;3!UZ=mYUNfHeGxEPadCgg9P`yO?iB)qDx6*k% zGDNl0HWx?=ZuLbTD8~QH8@{7D#U4;^d!M0z@YG}qtf$_K&>1v7JyfCP1-B4B8?#R2 zdb*?Z_kVMs^j@Qz#96j6ij!`AYpM%QI(1+O6z^3#)aIU4MgDC}+h^@SUcLyHqz2W_ zRaMZxe8b(gOZI=Wr uc=-yQK=@8%k^6A(Sx>N8(GG(va*h@uDF^-77@Dz*+CYlTgaKgIgj4{JOcH( z^iju$yWo<40)Q} 7zo q#%3eaZA16YD4p(X3(2GrpZ(lW|Ig|xi8dVo#aco&yA*Iwa1Oxd&hg8 z7H3#m4X>Y;a}$R$Pp3xPhZnDvEYv3#pvAXgU_H@Ix&>;ZchK>7I6H6+Ea1o`s~tS1 z)V4VEjNSuZi{wX6i%%b8LbUMNukuiooLB`VQ=S9VNk+hOaQ!k961g_b9;Sc05}N4y z-LM!K1y1Oi `4a!;0l6{2)9 z-mrE6_Jmed_-XGC`wrky*vb -7$^A`G{>iWSAg0wyT@FdUI>bYX=Ge;;A>zH$m`Y zJ33_=foGsgG`o)J;4@PS5k@?WQK+~jHR_y58wwMAq;wUW hGlLn(D1KVVn}xna}sm{H*8ju16W0+{c9^~9w^rcA}wj2rT_juWKeJB7=K z;pYSK^K6U4WV2=5oxyFnCukjLkMr(9nxxluix_p~rK-er`_(@zn+WO(z2@eMk{!hA zhsknfj+(d=&iA%AAL~b+yK0g^a+OYy*IEhY{x@ZJoj?0_*ZEb4ZD9S5ABZ=KwzWI@ z3P?5G48`ksU2e~Z_8DSnl7?*R+@mnSr~a*EzY<@43G$Rg4TFJ>0aW#@*dua!&+{Cp zf8`<148$_(2eFu?NvBD+Uv2EyY~EY0IPA8o{#6xD9l%s=GPQjWZINIH?GB;$ZR_OB zQ^I(lHb46CcFN5U|LTa;<_L`DzP25^cPrshS`!9s^ti;hm$h1&y djb?Jq%ZNR_ex?tsa51T@o)1bR= zrCvEaAHwPD<2*P=+{0eZFY3bTsMTh=4XTc+->S67cBI!!B*@DPY#c*OERch_sRpr< z(nCExgJ|LEk0e>fOYPN1A@k_}2X$`&6<4#Zi$VzS6D%RP1`qBKw384BPH?9oSa5e5 z2qYl{X(YG>hv4oW+=4reJ2dX{R`c(D&faJLN8Whv-aBrMjL^Vhty)#HzWL2rv*zR! zyuwyUIj3mpxG`pxqj520@XU+vzEPt-fX=GH!t0Wnu2*?yyu%gxZ-Md+v2U!D@j&`D zaq)TYO5wY}n_idViCtX(p=B>7qj4LXkwM45mqS @*6kYm6oAXcCoi@{Ew8F6Vl%9!FyG6Wj zy_WVj76N8up~Y5R^w_AM^DsPEw8BfmGA4m1*+;6K6H=*Li6dq=3x=y+pnbB7I}&lx z3DUmMs7jdt`#@@q@WMGO9Ok}YMB!eFT6vkH%71(js%!q^rE3C0!G?2kkBeU7P>J=` z|7yGvu0X#nK*+13#Psm gJzj&>I|9wDoYr#7N3N#C%6EyLHF$wG60f)wpN6V@@F%A z`JXD?`)ld2p8q|uG9DTr$B4TEv05lVpZ?e1b_I2~B^f)RW(8Nl_1WR<#t$zEhE*Gw z6FN8btEPYgmP)a=kmLU4 H#DDXPmiNI@d8(C>4N?BR$7~K)F&LjE4TnTW^>1JrM z1(oA)C}QRr8O_iesV}IS;LQCL{OZ}A@?e9=$L5ZQEmOG331XLPT%ltF|8zgE<5h~< z+S(5n*RC1aci&j5>JT&_1?>IsWk5Dsgx)Vj$3$+?LjIZ(ll2G@y1V70(FMhUR+6HO z-)D D{pdGh)E|w{Jj;cV1nzyDVB{E&SgV= zlMxS~?BV2Y=BR2hUMMGdm4yav$^JW&wbAXE@3q2eoXJllA0L+(Su+Hd_&YO`rAUHb z{p=YpJz1dSU#TAz*u!q?+=cHKn*lU{?zG}UdBD`7o+3Sf>R72JJGieM6Q~$!V!wtq zU*v)t%ElNVGx(eTy1t1zfP!ycsY77O9xB@5Z%I^U4;PHbAvl|WVLd!h6^N`9A_6;; z#F5Q+f}DcAIZOmuC`meL9j`LnI(crDmMJ<93IwfQOui^ALBA1W?yWi;_Jg~0(Uls! zqA^iRW`y>@H(~Necw_U8BqTSY!vfG>Ck@#^L0f6veLQqaw3)LjQuNy 4387Ur`* z9GQXn9Fayqis3cy_)v&gKe&L!$ z)|H+1q8iARC39uJ* tYi*7e3!P45 zc4H44{a#U3giyxMCDkh(V1Qwb@)AP})i)F&R(d5QU zcd7EJ;`#%!aTmx-``ziim4Z)9jTw;6Q1D+D>?!r~tL?Sl1)+GIOP;=DJ+L>Bby@sY7Q)HB zQ9Tq)vQ8t&9TA_D-t_izsekLrC(oy^aP0FhI1KaU@8glJqevjLN>K2xwLUX&`&T`{ z*zDpR#sLIXNhsd(AY0U%%>f`e{2I5#6T%4zU*!f-7mO ;P%*)2)lQ7)EG)SqTC!g1d*9E-rZt1uSbQc!a07t6>f{+Y zoSu_36L2^kv7kc&pS<_CN)u=`r%j rIGdBYf(I! aGkjZoyR_}X$p=tExLYXMfbOtWxKVUL z;T|2x_1q?Qd|KP8a15$T!!sKq$zeahYZZJ$X>OfQ&kZ@J7w~SvT^dIETAo>QQ=p3z zb^HC-ub4@d^fH8pXpjX#$k8yw>{HRb<1HaCj`Z4k_$NH1IP6Yh><;Z^VW<14cefX3 zxR={iOWH}dlWDHU9*UJ_M+$w{RTqZ?pc=Q5kBVZKzO&`Vx)+5^dzN;y{?;c@;U-(9 z$xSHTfGJi=OnTHC(^V+3kJU zPQZDohbkGLnEmU7qyI{NBkJ`AJiO6u7?Uz^(U|YccHKicx*FT-j~s9(`_nc&i?hAX zJVtvUgMvs5g7U@DP6p0AHLkEcZ)KZYYzIn8DcQdAVc8p(I@E*A?2Rl5y>QEk$MFd> z_&rGP$|u}&x`2H;aW+M1>6-6BYrgwX!-Mpp|G7wvTay<$qmK18ji`;x6{+ &dG?akIuVUzZbhsylfkk(yw18v<0DgT&+DdLF7a9q9`tP@OA5aCMtuzFQ~x-SdOc zZ8x9UWfD(vF@ 7Y|i;^QH&wr4EBp@G|!Yf20kw_NKJBc7Xc z|6?i+lcE{^eM%us_0XART4F4`W7qeS5driYF8OmpJ#vU;Q PQNBhG#XvN}e7(xKrN}@&nuKa1tIqFs@zyDu-34yEQ{I zg0SevcuM=GA~V|B?>K_a Z^=d?gbzbR=Pw;Rn}F-Cb+pHs zEKB&I`$xT>(=Gb0q*UJf9hkLr*vd7|s5TSGVqQj5Uo-3X9At1w6K_|nldrE)5Q>0F z?Cv~W2}%Xzd2tVf2&2rP+>Ha+_Qd_*0%CJYby#w s-iTsPfxJSdes8EyWkZEx))CJGUk5= z@BIIjC5v=A;60U=>x FLi-M%c_iU;ujU=0{8J#ZMeSu-%{cM2flZ p^=h4{vK?_)ExLvmdI=?1Oo1Ekm`*`A$#c3;wm&^zm$2S@w-+fC5WM>HdyAH3 zm~gOk_5pKfy*&AX_t|58YZPLofb4kDfcWB$hSp6eDC7A|ARBkYxiLEG%>4Tb%Uh>_ z`^o`|;RvR_Jhe1jOoEmL3xJU)BmV)AUvQ&ym&@53ZVjs+KZmX~g ho0R%4?Mu$OeDZQf%q&C 2EU=D^$f6T~8*@J1;y*EDIS=y$=p=L;LGTL2#DJJs|lSv-b!&&-?)?{Msk` z@1D7oruH~XD$gd=fA!0SuSebw*9E{Y;utD YB2+r0wy8+e}7AK7;p7Kxnc@8a!q=k>L9D1MO5DbM@iLMB )aQ2ix*vF{Q2!ABBMq(E@T7p-H`A4mv~6H(Jz&Migq`feIdK)DdIXN%Yiknb zuT5>T@+N|0vbct%M^nxQ!s3cn8t}R98Z!HxD;Q)&C^GP&)qz4Ke5T*)fhtbTd_$3y z@7UFCjKE>c6B3Mr?kO+3%8yNVH#?tZP&k8)9|b+K6I#0JWl-54cUg1vziEQFzHbW& z&NkL~g0>)b-j#{-iYfr72HD?FZ^mt9<<@sx;b~iOxK&w5Uhh_eXALPQlZc(KpGh}R z!E~vMeWAJWbzigE=^mAL$0TROg~TiNP&cyhaDE5b`DfUikfaO~vv6{%sXGr0bKk)m zw;OO2{(@X6eA`kB86D@l!SC+W2HKRQ L5oBQ*mS*W9*V7 z6` !pg$Iqzs7hN~ zB3Wuv&qxOPH2;C&_jZi;iZl3PMQAyoA$h0AMC|S6ho8tYlKHm8Xd;GOBKx%$E7m*W z?ZS@IYmXb%1&VJ1O|q8GxQASRT3pR@NaX1)TX=Fe!mm;O<~&VqxhRwLBl%$BXv&~9 zHDzpO5}uF(<#G24q( k<7@gQal39A%ShEnGm<^0-!*xYND`+UVW z_3n#J864qrE}oJU^Arw0mBcsa+&pRv@3xwW!i`mhgJj-5ZXWFRXXLsXyk&%zRx5_` z0N%_bisd@Vh7nu?+P!c=E-bQe;9xYIoOb?6htNksVkyG&w+e)E-Eb4X-Qxx@O<<6Z zhwI+m{E;H;T0$(sYN|003563y;Dv@~L_^aJAE;kbPHVN#>)RJVl!H?cNC9yALqYq~ zKiFARqob5pH{J4s`;kVDm$%8U ch&L-b}4Klw)cx(?R1_g^f$@0M6Gy@yk*&cU6 zH-AV0!+o#+iW})(qMCn!9)_6kx?nX4H})E$2<2LP9TM*23@-E^AC^UM^^=YAL%qss z00H6(zrmDw>KNQfEGa4EX6ecP_{X6E{TMnd^Jy2X0y0{5hm==kz3r*HbbA8@Nk5we zJV|kM?8No7-i<6IBgaF>QVyAI%UMsq4)##N_8SAnr -ZW5fiARNbpawt1yyfWJxM@GEK86T!kH z^cD*nQEhi^WtobcMiy~jbACOGNH{ED>C#o=e^ * 1!v^}Xi7ni*KDA=zNk4Gq)J z4+}*pDL Lwb+^(HvR`mzdgcWVYWMG 9?-@J^v zF)JMte_)8`tT91jdjP=<;Drq*n)$E&&YL)f9Ur`Wc(%QDg823b#A?o|2khyQlEH$3 zf#ne$o#14XDJ&|)R(V(1;YBA^hzBBZWuNR$o$b5(?cQfJ+#?TfC~+FM(Vkru?DBXY z+#f|7{DL6qJaUd>lmpK3#N({<%x)fosrNo@q9Bu6U=t`ju-ki?wst;t?|GJbTaxey zg&*QEn2N&xw>hBy)evaro jt+;icSbQo*7%AeoBjTOdM1wB~3w9R^(iyCYKP z6Qb&|Iq_fl&)2ey!(!HHrXOU7CN43yqtcN=sPd?faK;!L4OBK6kQ68cU-{8~thCgx zr8?zi6iljD6Peac ?*>6?pdDM u7la^jz~PEPCLtk_2=Ym`ZM;CMn(04S?(EbP0Cx6MZ@HOz zC(68)uuOj>=veO_hgLOS_#$D{tCuInKHul}l7#rj$h*rTf2h;!)W}fQj1PEXI6VAL zTu&TRA}{ggq^@Ra*I3@3N!@4%x`$ $2#OdP zLSSS%E{@hQ(EO1SMLnaRGAg{&)fH((^YFxoW0?Dhltm(5J{H<$PUU(>NE;o)6N8m_ z0AA@?*oq_kVXNd_P=LN3FL7hG!}dZqt~~LAY+ 7JM~-MN zXmlA_!-qZ^)fWrw{lKX&Qb(<$-tYFE_vv;yC=t6R9WC!C|00Hk)CbQX=j$IRuh*If z=jL1m9gp{EP1b^^C6% hc4*oY92f}h)BE&!0b3|i znv W!4g}Q>bWp_94RT8gDCo!laE29|(#stE-ZRPK@ZXP#KHxq+( z8X6ch(J(tTca00dgEZSO$cV*VoBi5I$L=Cq>gg4*6py}_-=`Yj8S#;G1s3aI4={)B z>q)NXH*g=29Z$18CTg|Iu8 ai?o+(8`gKiMHNI?-V<0hTp44kGmB z%x3v`5v1^n4hBoGZ4{iN22c%f{@w?ukT=59E=I#ut~1=e0~>jWrWn^42<*wBJe_O3 zM^5gsWBmUtz-0y1X{#&u3G{QHa609mSc aQbi_ZvvqjPn3p_s|)9v+4Y z4npqkf|KcNH`Z$5mxm(tF-1ex+Cb{Y_;**-N9-x;NiD8T=)O6zHLQ19l(OquS2G|! zV ?~(io=aA@Ro9$Nl+f*v|KP{&dkS#4jG;ND z >TsznG8OL?a)!vz*mzNCDghd{#dkH?4 z3;My4OT%iKtkktOmG6$sWx-?bh_Fv$q_rA>%=GU$QRZeXEVEsec~}t>HOQj}B-A!s z1Wt+}aL<6V3pl+g=y}S@sE`=@jtl`VdN}!CK0<7mPoI0<4HCXz%fhpsr+V%QV2oJ@ zO&T^Pp)4 W#1 zFox8Hak8K04Ywis!9fmbfBGa2OZHa|$ki3L+BekJrXTb*md9i_;iE7wxV}$AU zgsIETGJs~oxh^zt9%I9~enBUFD4Q|LgA8cKczfVtpHaZX&NtCQP zUfkUFnDh1X5+((2t({L{(mJwF*S8X+;;PW JRkockn*LxoY zNGo)$dgYMOm)1TrAhNEDh4R4FcCp4GDZgGLD+9t~OigdXeyYjR07Q(sH#~fu$`~y# z|8>DbN7ylDApNXGuTZaEDrO4IkG~Lq#*T5c_QW#eS&v2g``9;cHU<&Nox6f0Vf(-u z5a} mt*Yid?Ye&RNmZ9*fXNcXVus S<2D{~C zi}SfokMeQ8a=$s5$QEXJf}z4PVI8~o7$N6?nFvI?d>CB@vZ0#lzb8l9{pe!}pk9|- z{n@-H;K$@S1A^rgT>n6f7WZd>@jf9zXZwNx7vroeC}QL7&z5`-R`;L(;|6`Wy^! Z(1hE^TmE{BulejjazK_78jOGm*;m z@|RhZnOOVVzH*wI=cE> o)8lj3xC*?4iC@2Vs;J`XP3E?n4d)Ibv=z=GdGPw-UgeOg ztBn*Up{az(j~kmoBkLKJ-E#M7X*)WDme+np?5;ZXzcMBROq@HnjCP161r{&=v*6#Z zvLCj3z~W1u)AD($*haDip9}c b)O|R*5A3ELt?=c+=iza*^l$ zYl|Zs0gyZg{%U#ZkgK+G H*FSFf*dvwy z8HYr(d@%0`mv{YxqZ|nQcKq{V_r*V{koFHmj`%LQ>;xd>=)V0ALW>aB*8BD~%ad-A z?$6i0<#-$!COMENnDI+e(e=YUG|D5O(H)u3OZ)8yX`CkQNWWLO^J{1WW4b>wUf9-( zBeMR6o2LOh=u?zYXDD*9NpCd91omvbq}~mxjq}-KE|zaKOe8C-HD4>6b7`~hk1a^T zIxYS@#W1N_i*bK|U_t7~ZhXuhz+$8o7;V*XPHzuC$rb9o=tNay5p6i880>AKwB9TN zOKkNX?dvy6R+(q!=YKfX?Ejz}iVx^|0~4h$k$Lk?@@{>IejhF&2w FtR4JNPt3Ve!BL xyN&>CU;P_OGj} zee@`1*F-hk)gD=>8#><+P*Y>7bVuTe3Gf* mYrzlIUmh*irvwwc9t=#F1=o6H{E%SI3)zB$~!_%F#xN6JHDW|~&tFu{FC z*E78Va?xw4IKlKvB~^9)rIMgK*YFyURvQ$rz_ q^A?l!~K|M)SDT~$a{tz#sm zmnLauH|P@o8sLAI{b4OH&g*n4<-+Jj+_XQrZ8#V|EkwtE%#+G4^A_u5?kq5tFG1Ce zVH-?V&jd?b&D&@geyO&a4IJ_5-MJ@7($JBpGiL1dEkTdeFZwi6QqG6k`W+cF_iHQ; z5y}~UQ2b`O=Sr}!o{_4Of!#! y55%Gb+ZJvPH)G+e`pb09EyU+fS2Vvjypa6K?2QlXrd=L|*2|$?; zu%eP>n+8zw<~LRQi0Sw$$0v&VZ;a;uO)Mg!NRHtu!0C|y`fJkay#4d1RF@8Pgfe7m zb#=6xL4UqHF!S^SA;2;;pYdeJ0+uav3GGwVj};UH=GR2}*q?(|c%N<;x!!pxF$KTdtd(e)wy^SRa)` zxS_v(qWCXun$vPskLf+bFLE||O;Do?JdZ|; ~Wtt)x_ znh``icJ*~v>}H{ql;d~5FA-2n^AuqPfBFnqy?`y5o0qpdW7}l1+7kspoMH|(aJmHF z^J{b-rN=JL&N#91Q`T}f?UIfR1B$~ykG(## _iLU=ZB?3#cr_GPbBNwEa{XReJ)ZMFe3zROw z?ahg&lF!dk?L6ofE)c6!Y>qZ+!tiIx?JXTH7X~)cAZA d+#@$vlkj)-$|w)c1~4$2W-k5xv?#j@jlgfL!q1Hf0_i zFR~-%9y&yiaESQ6v-PdRP17uW{wfGjPvMC>4MY(?yx0NY*hqk0;9ji7-P6x*ynSH3 zJ9qq`Y&|1l(czHx?IWbW^lc!&a9(+c5&Cet(0$W;vNv(X=}>*uK;RPe?H>*%UIJx9 z4WN`)>6fG77JDbB4ww5>fnQ_AUu`nr(R#eKw%u{dlY+QY&i77i@E3fKB9M0*K#ar6 zMJhsG{|X3vGH)M9UJgEIiw!Wu7;;``VF%Zv-C!UE8LqF>XF@&$PcIr(0>gd{FR9&d zi2jcW!+LCqH8b0f%U?v-8P&eOZa=-&88J(*6mY4Zo856K&8o)FO9c@j#*-(haVStq z^M%U}F@R}|#8?mPPIt5b8~&BO{Xz9i^;Pr2TPByw@m9k3PbpSzW)D_c3H`s*lV}#{ z5+5qFa+tA`yjX7PifS3-VS5RF@E2zfF9~ ReWOF0(Xdeolu3kD^KkYZL_Q>u5?VC7%;mKEQw6we(D~+_ zQ4}NZxJL40%jk+Mr7w#GF!u`mRr*eNb<@q*1h^h}o?CS>3X(6FWJm38;C*CDxRSea zfCJ`9dY$~*kkR)r-Z72ji1?g{BHV4b!0aQ=0E^eJzt?&h{@AS@h=vrFMpF?OP!?cF zk5nwwNH;E3lQ@pLoMzyxx^Gia@V)9*xoSc-u)WMHg1I3hA??3&Hy%h71c6AX(lLoF zPN0MVz%dHGSuWl`^pAi&^Sfl>kRv*BV(6&@(%MP{@IK%Bttt-q?A`lZXt-b$J({ zO8844DW;>;mSCytS=cBKxxVLa#Uc)HcO=)350Q|tn%}W{Pa(ebUHk=3McT*I`rh!N zS{(5Ms%0kN3($bf)&KB;^Cj?5Tys4QtiiA`bl?}q0l MUUc^#fLOy zh7kDK>>l*#F|mef*qtj(1r2ANa6?-sA#?{g2 0T&(U)pf^krmXYQ zFN~Yx5k+P;wy}>W=zG #{>r7bYK8jA`VpeRF*0EK6Bo@9zWL1Pc!seDCGv zk0>6%dMLM^;fM7j!Bt;d`R4P1y7r|gp{bV^d3_}qDC`1pekYo$IqxGQj5QU1mhNr& z4q{gjm+IHkK}Bl!>eI?r&5YrPU7*N5 WYfG#!73vsKejoDskS7ibXjC{CF*)vHgW=3)#k2oI=~9yHMhw3V~z1z zWsn7mb@Iu83A{2!XsJfxcYG)!#87| eDF6w#Oe57?*!6nER;8?auwcEm25EJxykt zzQ#mdZplfMXM5t2&D}(HlLPRESQNLv9xMn%v+Ml?wiP$BQ@oYU&2w?cUvMrsic;1o zL_^XiNifTwv8#S5lZe?O8ynXbGpv{33sIo|jNa{?t1wVWrKaK|AKB`^Qh(_$8LGHZ zqrY5BnnZh|t6o_+k)qTx@wxV3l(m0Qn?C)v{L!E)Gri%!59sdn7nPF<$t^G;tD0M} zM9fd (rl6sA$unXyx WeQ5rD}k+|?tS7~)w6UwQ@X8= zb`QNXw^4`gcUE4i(6M+{Ll0)bS1p7=tyBp=_QMx9lOh&wB |M>JJ@Pbbi_9``OQ&!v{z-oK;wzL7 zbU)w|t{zqb$PA7#;9CJK^Nh^1qnJW1p8Z-B)`-px<*H1Tx%opX^go{`{s7R1nvGsH zGP1I2%F1aeKDSzBW`pYL>f=AQ{s@vEZZf5prW8LJcc9>4(bze^cvKZ@%>9{(f0lN; z#-idg<8zT0s!!A8O4TQrU+|tb-YV3!)76MZu)2aZbP}lJgqTV1fp6w(k=L N;?#{^h)af*)o&I}r|4L{^h?@E3Nlal6ZMS=cf(bZk^XDST?-~FfEj5x3r4HQ+ zw*yG?L{du{4?j&JX<2%QEgn$nfUTnh`3;*_0r4RgIy-`8AaSmsd5$%S``YOK9A7M@ zshP tuGcvK~@)}z41fU!z%VybjdZTv9(L0>u_wRtU}h(Nc7h@oU{q6vM^jNa%b`<*=s zkh&bH`S*WE4_-zr=1;7rXjm$ZUwcDE6FoKWBBF9j2oJk~{x_8yfxV{9E`W-keBM@{ z=yHeLBPoF4eGJ6-lJ7nCwny1L3U8=`+tUpLCG1@WXMn$Pn+ykp4B0J~=m#ZK&jeMX zl)qBy(eKz;y3E12)O}>#F*5`qX!iGSnnY?IjFU5z0e{at7JlKXbecvDMf~mz4Il-G z){Gl=|MkxgzQ{sA_W(+vmjoNRgB8qgQS|Wd@j>lZKYjyv-omRl4*>MF^TMS9{s`q2 z@C~AYnpFUH5_NNRCL0mW0ro~W^BmRGDByv4(dzVK{|)OXpuI=LLOz$(3K|nzk_q*z zo4Jp0x7IbRsn*?tS(us1EiV1c@YnJ>(zl8pWv(~@@U>~Tw|MJ{JZo+hfwN9I{3*L5 zZ!O`-g3GVMw13!pTR1VH2t%=bYia7p;(CbfXybXN*jXY&2)0ep*zb$OWg!)a5~y~D zSBO{j3!_2v0p)as?8Nl6R{;9M;GuXvS#(}~N~nriuZ*gB16@_$H|fMeGt(RGmMoo{ z-OCT+P {sCS)DD4rdrkVH@g> 4~UhEob|m%#2pwcD5P;TF(|=*ytnSug^Vpl^e>C z^yy2{r+|h(KLDtox8dFGjgbA)CtdcKS(~bFK|xU|DWDu7xoA#NK2fE`mRH JDjfY1k0^fQ06kZV`cpE*PV$7ztUen1bBw1Q15V{#rp;To9`cPD)WcS(+t??QT zsuZttF<&1@YP