diff --git a/CMakeLists.txt b/CMakeLists.txt index 80c2c5d9..ffae124c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -86,6 +86,11 @@ if(${CMAKE_VERSION} VERSION_LESS "3.0.2") endmacro() endif() +if(NOT MSVC) + add_compile_options(-Wempty-body) # GCC/Clang flag + add_compile_options(-Wreturn-type) # GCC/Clang flag +endif() + if(BUILD_CLIENT) add_subdirectory(cl_dll) endif() diff --git a/cl_dll/ammo.cpp b/cl_dll/ammo.cpp index 4a4437bb..c6aabfba 100644 --- a/cl_dll/ammo.cpp +++ b/cl_dll/ammo.cpp @@ -77,7 +77,7 @@ void WeaponsResource::LoadWeaponSprites( WEAPON *pWeapon ) else iRes = 640; - char sz[128]; + char sz[256]; if( !pWeapon ) return; diff --git a/cl_dll/death.cpp b/cl_dll/death.cpp index b0667ec2..c6631f71 100644 --- a/cl_dll/death.cpp +++ b/cl_dll/death.cpp @@ -204,7 +204,7 @@ int CHudDeathNotice::MsgFunc_DeathMsg( const char *pszName, int iSize, void *pbu // Get the Victim's name const char *victim_name = ""; // If victim is -1, the killer killed a specific, non-player object (like a sentrygun) - if( ( (char)victim ) != -1 ) + if( ( (signed char)victim ) != -1 ) victim_name = g_PlayerInfoList[victim].name; if( !victim_name ) { @@ -219,7 +219,7 @@ int CHudDeathNotice::MsgFunc_DeathMsg( const char *pszName, int iSize, void *pbu } // Is it a non-player object kill? - if( ( (char)victim ) == -1 ) + if( ( (signed char)victim ) == -1 ) { rgDeathNoticeList[i].iNonPlayerKill = TRUE; diff --git a/cl_dll/hud_spectator.cpp b/cl_dll/hud_spectator.cpp index edb743ba..b86834af 100644 --- a/cl_dll/hud_spectator.cpp +++ b/cl_dll/hud_spectator.cpp @@ -820,7 +820,7 @@ bool CHudSpectator::IsActivePlayer( cl_entity_t *ent ) bool CHudSpectator::ParseOverviewFile() { - char filename[255] = { 0 }; + char filename[512] = { 0 }; char levelname[255] = { 0 }; char token[1024] = { 0 }; float height; @@ -842,7 +842,7 @@ bool CHudSpectator::ParseOverviewFile() m_OverviewData.layersHeights[0] = 0.0f; strcpy( m_OverviewData.map, gEngfuncs.pfnGetLevelName() ); - if( strlen( m_OverviewData.map ) == 0 ) + if( m_OverviewData.map[0] == '\0' ) return false; // not active yet strcpy( levelname, m_OverviewData.map + 5 ); diff --git a/cl_dll/input.cpp b/cl_dll/input.cpp index 0abd542b..628ff088 100644 --- a/cl_dll/input.cpp +++ b/cl_dll/input.cpp @@ -169,7 +169,7 @@ int KB_ConvertString( char *in, char **ppout ) *pEnd = '\0'; pBinding = NULL; - if( strlen( binding + 1 ) > 0 ) + if( binding[1] != '\0' ) { // See if there is a binding for binding? pBinding = gEngfuncs.Key_LookupBinding( binding + 1 ); diff --git a/cl_dll/wscript b/cl_dll/wscript index d0bd0951..3ada920a 100644 --- a/cl_dll/wscript +++ b/cl_dll/wscript @@ -48,7 +48,7 @@ def build(bld): if bld.env.GOLDSRC: libs += ['DL'] - if bld.env.DEST_OS2 not in ['android']: + if bld.env.DEST_OS not in ['android']: install_path = os.path.join(bld.env.GAMEDIR, bld.env.CLIENT_DIR) else: install_path = bld.env.PREFIX diff --git a/dlls/animation.cpp b/dlls/animation.cpp index f84ec380..9f70f3d1 100644 --- a/dlls/animation.cpp +++ b/dlls/animation.cpp @@ -203,7 +203,7 @@ void SequencePrecache( void *pmodel, const char *pSequenceName ) // of it's name if it is. if( IsSoundEvent( pevent[i].event ) ) { - if( !strlen( pevent[i].options ) ) + if( pevent[i].options[0] == '\0' ) { ALERT( at_error, "Bad sound event %d in sequence %s :: %s (sound is \"%s\")\n", pevent[i].event, pstudiohdr->name, pSequenceName, pevent[i].options ); } diff --git a/dlls/bmodels.cpp b/dlls/bmodels.cpp index fe56b6ac..b75a0fa8 100644 --- a/dlls/bmodels.cpp +++ b/dlls/bmodels.cpp @@ -434,7 +434,7 @@ void CFuncRotating::Precache( void ) BOOL NullSound = FALSE; // set up fan sounds - if( !FStringNull( pev->message ) && strlen( szSoundFile ) > 0 ) + if( !FStringNull( pev->message ) && szSoundFile[0] != '\0' ) { // if a path is set for a wave, use it } diff --git a/dlls/buttons.cpp b/dlls/buttons.cpp index 90bc42e5..f7441b3f 100644 --- a/dlls/buttons.cpp +++ b/dlls/buttons.cpp @@ -694,7 +694,7 @@ CBaseButton::BUTTON_CODE CBaseButton::ButtonResponseToTouch( void ) void CBaseButton::ButtonTouch( CBaseEntity *pOther ) { // Ignore touches by anything but players - if( !FClassnameIs( pOther->pev, "player" ) ) + if( !pOther->IsPlayer() ) return; m_hActivator = pOther; diff --git a/dlls/doors.cpp b/dlls/doors.cpp index 085ee441..9091d70a 100644 --- a/dlls/doors.cpp +++ b/dlls/doors.cpp @@ -520,10 +520,8 @@ void CBaseDoor::Precache( void ) // void CBaseDoor::DoorTouch( CBaseEntity *pOther ) { - entvars_t *pevToucher = pOther->pev; - // Ignore touches by anything but players - if( !FClassnameIs( pevToucher, "player" ) ) + if( !pOther->IsPlayer() ) return; // If door has master, and it's not ready to trigger, @@ -542,7 +540,7 @@ void CBaseDoor::DoorTouch( CBaseEntity *pOther ) m_hActivator = pOther;// remember who activated the door - if( DoorActivate()) + if( DoorActivate() ) SetTouch( NULL ); // Temporarily disable the touch function, until movement is finished. } diff --git a/dlls/h_battery.cpp b/dlls/h_battery.cpp index dabbc06c..6c6b9869 100644 --- a/dlls/h_battery.cpp +++ b/dlls/h_battery.cpp @@ -106,8 +106,12 @@ void CRecharge::Precache() void CRecharge::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ) { + // Make sure that we have a caller + if( !pActivator ) + return; + // if it's not a player, ignore - if( !FClassnameIs( pActivator->pev, "player" ) ) + if( !pActivator->IsPlayer() ) return; // if there is no juice left, turn it off @@ -135,16 +139,8 @@ void CRecharge::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE use if( m_flNextCharge >= gpGlobals->time ) return; - // Make sure that we have a caller - if( !pActivator ) - return; - m_hActivator = pActivator; - //only recharge the player - if( !m_hActivator->IsPlayer() ) - return; - // Play the on sound or the looping charging sound if( !m_iOn ) { @@ -152,6 +148,7 @@ void CRecharge::Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE use EMIT_SOUND( ENT( pev ), CHAN_ITEM, "items/suitchargeok1.wav", 0.85, ATTN_NORM ); m_flSoundTime = 0.56 + gpGlobals->time; } + if( ( m_iOn == 1 ) && ( m_flSoundTime <= gpGlobals->time ) ) { m_iOn++; diff --git a/dlls/multiplay_gamerules.cpp b/dlls/multiplay_gamerules.cpp index de91ac6e..8305a07f 100644 --- a/dlls/multiplay_gamerules.cpp +++ b/dlls/multiplay_gamerules.cpp @@ -1331,7 +1331,8 @@ int ReloadMapCycleFile( const char *filename, mapcycle_t *cycle ) hasbuffer = 0; pFileList = COM_Parse( pFileList ); - if( strlen( com_token ) <= 0 ) + + if( com_token[0] == '\0' ) break; strcpy( szMap, com_token ); @@ -1340,7 +1341,8 @@ int ReloadMapCycleFile( const char *filename, mapcycle_t *cycle ) if( COM_TokenWaiting( pFileList ) ) { pFileList = COM_Parse( pFileList ); - if( strlen( com_token ) > 0 ) + + if( com_token[0] != '\0' ) { hasbuffer = 1; strcpy( szBuffer, com_token ); @@ -1496,7 +1498,8 @@ void ExtractCommandString( char *s, char *szCommand ) *o = 0; strcat( szCommand, pkey ); - if( strlen( value ) > 0 ) + + if( value[0] != '\0' ) { strcat( szCommand, " " ); strcat( szCommand, value ); @@ -1631,13 +1634,15 @@ void CHalfLifeMultiplay::ChangeLevel( void ) { ALERT( at_console, "PLAYER COUNT: min %i max %i current %i\n", minplayers, maxplayers, curplayers ); } - if( strlen( szRules ) > 0 ) + + if( szRules[0] != '\0' ) { ALERT( at_console, "RULES: %s\n", szRules ); } CHANGE_LEVEL( szNextMap, NULL ); - if( strlen( szCommands ) > 0 ) + + if( szCommands[0] != '\0' ) { SERVER_COMMAND( szCommands ); } diff --git a/dlls/nihilanth.cpp b/dlls/nihilanth.cpp index 1d072db4..c9ed0742 100644 --- a/dlls/nihilanth.cpp +++ b/dlls/nihilanth.cpp @@ -724,7 +724,7 @@ void CNihilanth::NextActivity() if( ( pev->health < gSkillData.nihilanthHealth / 2 || m_iActiveSpheres < N_SPHERES / 2 ) && m_hRecharger == 0 && m_iLevel <= 9 ) { - char szName[64]; + char szName[128]; CBaseEntity *pEnt = NULL; CBaseEntity *pRecharger = NULL; @@ -772,7 +772,7 @@ void CNihilanth::NextActivity() if( iseq != pev->sequence ) { - char szText[64]; + char szText[128]; sprintf( szText, "%s%d", m_szDrawUse, m_iLevel ); FireTargets( szText, this, this, USE_ON, 1.0 ); @@ -820,7 +820,7 @@ void CNihilanth::NextActivity() } else { - char szText[64]; + char szText[128]; sprintf( szText, "%s%d", m_szTeleportTouch, m_iTeleport ); CBaseEntity *pTouch = UTIL_FindEntityByTargetname( NULL, szText ); @@ -1100,7 +1100,7 @@ void CNihilanth::HandleAnimEvent( MonsterEvent_t *pEvent ) // prayer if( m_hEnemy != 0 ) { - char szText[32]; + char szText[128]; sprintf( szText, "%s%d", m_szTeleportTouch, m_iTeleport ); CBaseEntity *pTouch = UTIL_FindEntityByTargetname( NULL, szText ); diff --git a/dlls/plats.cpp b/dlls/plats.cpp index 5a96a36b..8356d55e 100644 --- a/dlls/plats.cpp +++ b/dlls/plats.cpp @@ -358,8 +358,7 @@ void CPlatTrigger::SpawnInsideTrigger( CFuncPlat *pPlatform ) void CPlatTrigger::Touch( CBaseEntity *pOther ) { // Ignore touches by non-players - entvars_t *pevToucher = pOther->pev; - if( !FClassnameIs( pevToucher, "player" ) ) + if( !pOther->IsPlayer() ) return; CFuncPlat *pPlatform = (CFuncPlat*)(CBaseEntity*)m_hPlatform; diff --git a/dlls/player.cpp b/dlls/player.cpp index 1399aace..b04672a0 100644 --- a/dlls/player.cpp +++ b/dlls/player.cpp @@ -2762,7 +2762,7 @@ edict_t *EntSelectSpawnPoint( CBaseEntity *pPlayer ) } // If startspot is set, (re)spawn there. - if( FStringNull( gpGlobals->startspot ) || !strlen(STRING( gpGlobals->startspot ) ) ) + if( FStringNull( gpGlobals->startspot ) || (STRING( gpGlobals->startspot ) )[0] == '\0') { pSpot = UTIL_FindEntityByClassname( NULL, "info_player_start" ); if( !FNullEnt( pSpot ) ) @@ -4434,7 +4434,7 @@ void CBasePlayer::DropPlayerItem( char *pszItemName ) return; } - if( !strlen( pszItemName ) ) + if( pszItemName[0] == '\0' ) { // if this string has no length, the client didn't type a name! // assume player wants to drop the active item. diff --git a/dlls/scripted.cpp b/dlls/scripted.cpp index 41638b39..8e3a88ab 100644 --- a/dlls/scripted.cpp +++ b/dlls/scripted.cpp @@ -1068,14 +1068,17 @@ BOOL CScriptedSentence::AcceptableSpeaker( CBaseMonster *pMonster ) { if( pev->spawnflags & SF_SENTENCE_FOLLOWERS ) { - if( pMonster->m_hTargetEnt == 0 || !FClassnameIs( pMonster->m_hTargetEnt->pev, "player" ) ) + if( pMonster->m_hTargetEnt == 0 || !pMonster->m_hTargetEnt->IsPlayer() ) return FALSE; } + BOOL override; + if( pev->spawnflags & SF_SENTENCE_INTERRUPT ) override = TRUE; else override = FALSE; + if( pMonster->CanPlaySentence( override ) ) return TRUE; } diff --git a/dlls/sound.cpp b/dlls/sound.cpp index 6637fe53..8fc5cb89 100644 --- a/dlls/sound.cpp +++ b/dlls/sound.cpp @@ -184,7 +184,7 @@ void CAmbientGeneric::Spawn( void ) const char *szSoundFile = STRING( pev->message ); - if( FStringNull( pev->message ) || strlen( szSoundFile ) < 1 ) + if( FStringNull( pev->message ) || szSoundFile[0] == '\0' ) { ALERT( at_error, "EMPTY AMBIENT AT: %f, %f, %f\n", pev->origin.x, pev->origin.y, pev->origin.z ); pev->nextthink = gpGlobals->time + 0.1; @@ -218,7 +218,7 @@ void CAmbientGeneric::Precache( void ) { const char *szSoundFile = STRING( pev->message ); - if( !FStringNull( pev->message ) && strlen( szSoundFile ) > 1 ) + if( !FStringNull( pev->message ) && szSoundFile[0] != '\0' ) { if( *szSoundFile != '!' ) PRECACHE_SOUND( szSoundFile ); @@ -1281,9 +1281,9 @@ void SENTENCEG_Init() if( !buffer[j] ) continue; - if( gcallsentences > CVOXFILESENTENCEMAX ) + if( gcallsentences >= CVOXFILESENTENCEMAX ) { - ALERT( at_error, "Too many sentences in sentences.txt!\n" ); + ALERT( at_error, "Too many sentences in sentences.txt! >%d\n", gcallsentences ); break; } @@ -1732,7 +1732,7 @@ void CSpeaker::Spawn( void ) { const char *szSoundFile = STRING( pev->message ); - if( !m_preset && ( FStringNull( pev->message ) || strlen( szSoundFile ) < 1 ) ) + if( !m_preset && ( FStringNull( pev->message ) || szSoundFile[0] == '\0' ) ) { ALERT( at_error, "SPEAKER with no Level/Sentence! at: %f, %f, %f\n", pev->origin.x, pev->origin.y, pev->origin.z ); pev->nextthink = gpGlobals->time + 0.1; diff --git a/dlls/subs.cpp b/dlls/subs.cpp index e24a5c08..b57d7d23 100644 --- a/dlls/subs.cpp +++ b/dlls/subs.cpp @@ -107,13 +107,6 @@ void CBaseEntity::UpdateOnRemove( void ) if( pev->globalname ) gGlobalState.EntitySetState( pev->globalname, GLOBAL_DEAD ); - - // tell owner ( if any ) that we're dead.This is mostly for MonsterMaker functionality. - //Killtarget didn't do this before, so the counter broke. - Solokiller - if( CBaseEntity* pOwner = pev->owner ? Instance( pev->owner ) : 0 ) - { - pOwner->DeathNotice( pev ); - } } // Convenient way to delay removing oneself diff --git a/dlls/teamplay_gamerules.cpp b/dlls/teamplay_gamerules.cpp index 87b695e7..d3b5c5e3 100644 --- a/dlls/teamplay_gamerules.cpp +++ b/dlls/teamplay_gamerules.cpp @@ -52,14 +52,14 @@ CHalfLifeTeamplay::CHalfLifeTeamplay() if( teamoverride.value ) { const char *pTeamList = STRING( pWorld->v.team ); - if( pTeamList && strlen( pTeamList ) ) + if( pTeamList && pTeamList[0] != '\0' ) { strncpy( m_szTeamList, pTeamList, TEAMPLAY_TEAMLISTLENGTH ); } } } // Has the server set teams - if( strlen( m_szTeamList ) ) + if( m_szTeamList[0] != '\0' ) m_teamLimit = TRUE; else m_teamLimit = FALSE; diff --git a/dlls/triggers.cpp b/dlls/triggers.cpp index abf487be..fb40f89d 100644 --- a/dlls/triggers.cpp +++ b/dlls/triggers.cpp @@ -1124,7 +1124,7 @@ void CBaseTrigger::ActivateMultiTrigger( CBaseEntity *pActivator ) if( pev->nextthink > gpGlobals->time ) return; // still waiting for reset time - if( !UTIL_IsMasterTriggered( m_sMaster,pActivator ) ) + if( !UTIL_IsMasterTriggered( m_sMaster, pActivator ) ) return; if( FClassnameIs( pev, "trigger_secret" ) ) @@ -1191,7 +1191,7 @@ void CBaseTrigger::CounterUse( CBaseEntity *pActivator, CBaseEntity *pCaller, US BOOL fTellActivator = ( m_hActivator != 0 ) && - FClassnameIs( m_hActivator->pev, "player" ) && + m_hActivator->IsPlayer() && !FBitSet( pev->spawnflags, SPAWNFLAG_NOMESSAGE ); if( m_cTriggersLeft != 0 ) { @@ -1499,7 +1499,7 @@ void CChangeLevel::ChangeLevelNow( CBaseEntity *pActivator ) // void CChangeLevel::TouchChangeLevel( CBaseEntity *pOther ) { - if( !FClassnameIs( pOther->pev, "player" ) ) + if( !pOther->IsPlayer() ) return; ChangeLevelNow( pOther ); diff --git a/dlls/util.cpp b/dlls/util.cpp index a5160876..a66b5fbc 100644 --- a/dlls/util.cpp +++ b/dlls/util.cpp @@ -2196,7 +2196,7 @@ int CRestore::ReadField( void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCou pString++; } pInputData = pString; - if( strlen( (char *)pInputData ) == 0 ) + if( ( (char *)pInputData )[0] == '\0' ) *( (string_t *)pOutputData ) = 0; else { @@ -2291,7 +2291,7 @@ int CRestore::ReadField( void *pBaseData, TYPEDESCRIPTION *pFields, int fieldCou *( (void**)pOutputData ) = *(void **)pInputData; break; case FIELD_FUNCTION: - if( strlen( (char *)pInputData ) == 0 ) + if( ( (char *)pInputData )[0] == '\0' ) *( (void**)pOutputData ) = 0; else *( (void**)pOutputData ) = (void*)FUNCTION_FROM_NAME( (char *)pInputData ); diff --git a/dlls/wscript b/dlls/wscript index 05a7d002..b1c8cffa 100644 --- a/dlls/wscript +++ b/dlls/wscript @@ -54,7 +54,7 @@ def build(bld): libs = [] - if bld.env.DEST_OS2 not in ['android']: + if bld.env.DEST_OS not in ['android']: install_path = os.path.join(bld.env.GAMEDIR, bld.env.SERVER_DIR) else: install_path = bld.env.PREFIX diff --git a/scripts/waifulib/strip_on_install.py b/scripts/waifulib/strip_on_install.py new file mode 100644 index 00000000..6522065d --- /dev/null +++ b/scripts/waifulib/strip_on_install.py @@ -0,0 +1,49 @@ +#! /usr/bin/env python +# Modified: Alibek Omarov +# Originally taken from Thomas Nagy's blogpost + +""" +Strip executables upon installation +""" + +import shutil, os +from waflib import Build, Utils, Context, Errors, Logs + +def options(opt): + grp = opt.option_groups['install/uninstall options'] + grp.add_option('--no-strip', dest='no_strip', action='store_true', default=False, + help='don\'t strip binaries. You must pass this flag to install command(default: False)') + +def configure(conf): + if conf.env.DEST_BINFMT in ['elf', 'mac-o']: + conf.find_program('strip', var='STRIP') + if not conf.env.STRIPFLAGS: + conf.env.STRIPFLAGS = os.environ['STRIPFLAGS'] if 'STRIPFLAGS' in os.environ else [] + +def copy_fun(self, src, tgt): + inst_copy_fun(self, src, tgt) + + if self.generator.bld.options.no_strip: + return + + if self.env.DEST_BINFMT not in ['elf', 'mac-o']: # don't strip unknown formats or PE + return + + if getattr(self.generator, 'link_task', None) and self.generator.link_task.outputs[0] in self.inputs: + cmd = self.env.STRIP + self.env.STRIPFLAGS + [tgt] + try: + self.generator.bld.cmd_and_log(cmd, output=Context.BOTH, quiet=Context.BOTH) + if not self.generator.bld.progress_bar: + c1 = Logs.colors.NORMAL + c2 = Logs.colors.CYAN + + f1 = os.path.getsize(src) + f2 = os.path.getsize(tgt) + + Logs.info('%s+ strip %s%s%s (%d bytes change)', c1, c2, tgt, c1, f2 - f1) + except Errors.WafError as e: + print(e.stdout, e.stderr) + +inst_copy_fun = Build.inst.copy_fun +Build.inst.copy_fun = copy_fun + diff --git a/scripts/waifulib/xcompile.py b/scripts/waifulib/xcompile.py index d6bb1a8b..a7818911 100644 --- a/scripts/waifulib/xcompile.py +++ b/scripts/waifulib/xcompile.py @@ -13,41 +13,45 @@ try: from fwgslib import get_flags_by_compiler except: from waflib.extras.fwgslib import get_flags_by_compiler -from waflib import Logs +from waflib import Logs, TaskGen +from waflib.Tools import c_config +from collections import OrderedDict import os import sys -# Output: -# CROSSCOMPILING -- set to true, if crosscompiling is enabled -# DEST_OS2 -- as some operating systems is built on top of another, it's better to not change DEST_OS, -# instead of this DEST_OS2 is defined with target value -# For example: android is built on top of linux and have many things in common, -# but it can't be considered as default GNU/Linux. -# Possible values: -# DEST_OS2 DEST_OS -# 'android' 'linux' - -# This class does support ONLY r10e and r19c NDK +ANDROID_NDK_ENVVARS = ['ANDROID_NDK_HOME', 'ANDROID_NDK'] +ANDROID_NDK_SUPPORTED = [10, 19, 20] +ANDROID_NDK_HARDFP_MAX = 11 # latest version that supports hardfp +ANDROID_NDK_GCC_MAX = 17 # latest NDK that ships with GCC +ANDROID_NDK_UNIFIED_SYSROOT_MIN = 15 +ANDROID_NDK_SYSROOT_FLAG_MAX = 19 # latest NDK that need --sysroot flag +ANDROID_NDK_API_MIN = { 10: 3, 19: 16, 20: 16 } # minimal API level ndk revision supports +ANDROID_64BIT_API_MIN = 21 # minimal API level that supports 64-bit targets + +# This class does support ONLY r10e and r19c/r20 NDK class Android: ctx = None # waf context arch = None toolchain = None api = None - toolchain_path = None ndk_home = None ndk_rev = 0 is_hardfloat = False clang = False - + def __init__(self, ctx, arch, toolchain, api): self.ctx = ctx - for i in ['ANDROID_NDK_HOME', 'ANDROID_NDK']: + self.api = api + self.toolchain = toolchain + self.arch = arch + + for i in ANDROID_NDK_ENVVARS: self.ndk_home = os.getenv(i) if self.ndk_home != None: break - - if not self.ndk_home: - conf.fatal('Set ANDROID_NDK_HOME environment variable pointing to the root of Android NDK!') + else: + ctx.fatal('Set %s environment variable pointing to the root of Android NDK!' % + ' or '.join(ANDROID_NDK_ENVVARS)) # TODO: this were added at some point of NDK development # but I don't know at which version @@ -61,37 +65,35 @@ class Android: if 'Pkg.Revision' in trimed_tokens: self.ndk_rev = int(trimed_tokens[1].split('.')[0]) + + if self.ndk_rev not in ANDROID_NDK_SUPPORTED: + ctx.fatal('Unknown NDK revision: %d' % (self.ndk_rev)) else: - self.ndk_rev = 10 + self.ndk_rev = ANDROID_NDK_SUPPORTED[0] - if self.ndk_rev not in [10, 19, 20]: - ctx.fatal('Unknown NDK revision: {}'.format(self.ndk_rev)) + if 'clang' in self.toolchain or self.ndk_rev > ANDROID_NDK_GCC_MAX: + self.clang = True - self.arch = arch if self.arch == 'armeabi-v7a-hard': - if self.ndk_rev <= 10: + if self.ndk_rev <= ANDROID_NDK_HARDFP_MAX: self.arch = 'armeabi-v7a' # Only armeabi-v7a have hard float ABI self.is_hardfloat = True else: - raise Exception('NDK does not support hardfloat ABI') + ctx.fatal('NDK does not support hardfloat ABI') - self.toolchain = toolchain + if self.api < ANDROID_NDK_API_MIN[self.ndk_rev]: + self.api = ANDROID_NDK_API_MIN[self.ndk_rev] + Logs.warn('API level automatically was set to %d due to NDK support' % self.api) - if self.ndk_rev >= 19 or 'clang' in self.toolchain: - self.clang = True - - if self.is_arm64() or self.is_amd64() and self.api < 21: - Logs.warn('API level for 64-bit target automatically was set to 21') - self.api = 21 - elif self.ndk_rev >= 19 and self.api < 16: - Logs.warn('API level automatically was set to 16 due to NDK support') - self.api = 16 - else: self.api = api - self.toolchain_path = self.gen_toolchain_path() + if self.is_arm64() or self.is_amd64() and self.api < ANDROID_64BIT_API_MIN: + self.api = ANDROID_64BIT_API_MIN + Logs.warn('API level for 64-bit target automatically was set to %d' % self.api) - # TODO: Crystax support? - # TODO: Support for everything else than linux-x86_64? - # TODO: Determine if I actually need to implement listed above + def is_host(self): + ''' + Checks if we using host compiler(implies clang) + ''' + return self.toolchain == 'host' def is_arm(self): ''' @@ -126,90 +128,146 @@ class Android: def is_hardfp(self): return self.is_hardfloat - def gen_toolchain_path(self): - path = 'toolchains' + def ndk_triplet(self, llvm_toolchain = False, toolchain_folder = False): + if self.is_x86(): + if toolchain_folder: + return 'x86' + else: + return 'i686-linux-android' + elif self.is_arm(): + if llvm_toolchain: + return 'armv7a-linux-androideabi' + else: + return 'arm-linux-androideabi' + elif self.is_amd64() and toolchain_folder: + return 'x86_64' + else: + return self.arch + '-linux-android' + + def apk_arch(self): + if self.is_arm64(): + return 'arm64-v8a' + return self.arch - if sys.platform.startswith('linux'): - toolchain_host = 'linux' + def gen_host_toolchain(self): + # With host toolchain we don't care about OS + # so just download NDK for Linux x86_64 + if self.is_host(): + return 'linux-x86_64' + + if sys.platform.startswith('win32') or sys.platform.startswith('cygwin'): + osname = 'windows' elif sys.platform.startswith('darwin'): - toolchain_host = 'darwin' - elif sys.platform.startswith('win32') or sys.platform.startswith('cygwin'): - toolchain_host = 'windows' - else: raise Exception('Unsupported by NDK host platform') + osname = 'darwin' + elif sys.platform.startswith('linux'): + osname = 'linux' + else: + self.ctx.fatal('Unsupported by NDK host platform') - toolchain_host += '-' + if sys.maxsize > 2**32: + arch = 'x86_64' + else: arch = 'x86' - # Assuming we are building on x86 - if sys.maxsize > 2**32: - toolchain_host += 'x86_64' - else: toolchain_host += 'x86' + return '%s-%s' % (osname, arch) - if self.is_clang(): - if self.ndk_rev < 19: - raise Exception('Clang is not supported for this NDK') + def gen_gcc_toolchain_path(self): + path = 'toolchains' + toolchain_host = self.gen_host_toolchain() + if self.is_clang(): toolchain_folder = 'llvm' - - if self.is_x86(): - triplet = 'i686-linux-android{}-'.format(self.api) - elif self.is_arm(): - triplet = 'armv7a-linux-androideabi{}-'.format(self.api) - else: - triplet = self.arch + '-linux-android{}-'.format(self.api) else: - if self.is_x86() or self.is_amd64(): - toolchain_folder = self.arch + '-' + self.toolchain - elif self.is_arm(): - toolchain_folder = 'arm-linux-androideabi-' + self.toolchain + if self.is_host(): + toolchain = '4.9' else: - toolchain_folder = self.arch + '-linux-android-' + self.toolchain + toolchain = self.toolchain - if self.is_x86(): - triplet = 'i686-linux-android-' - elif self.is_arm(): - triplet = 'arm-linux-androideabi-' - else: - triplet = self.arch + '-linux-android-' + toolchain_folder = '%s-%s' % (self.ndk_triplet(toolchain_folder = True), toolchain) - return os.path.join(path, toolchain_folder, 'prebuilt', toolchain_host, 'bin', triplet) + return os.path.abspath(os.path.join(self.ndk_home, path, toolchain_folder, 'prebuilt', toolchain_host)) + + def gen_toolchain_path(self): + if self.is_clang(): + triplet = '%s%d-' % (self.ndk_triplet(llvm_toolchain = True), self.api) + else: + triplet = self.ndk_triplet() + '-' + return os.path.join(self.gen_gcc_toolchain_path(), 'bin', triplet) + + def gen_binutils_path(self): + return os.path.join(self.gen_gcc_toolchain_path(), self.ndk_triplet(), 'bin') def cc(self): - return os.path.abspath(os.path.join(self.ndk_home, self.toolchain_path + ('clang' if self.is_clang() else 'gcc'))) + if self.is_host(): + return 'clang --target=%s%d' % (self.ndk_triplet(), self.api) + return self.gen_toolchain_path() + ('clang' if self.is_clang() else 'gcc') def cxx(self): - return os.path.abspath(os.path.join(self.ndk_home, self.toolchain_path + ('clang++' if self.is_clang() else 'g++'))) + if self.is_host(): + return 'clang++ --target=%s%d' % (self.ndk_triplet(), self.api) + return self.gen_toolchain_path() + ('clang++' if self.is_clang() else 'g++') + + def strip(self): + if self.is_host(): + return 'llvm-strip' + return os.path.join(self.gen_binutils_path(), 'strip') def system_stl(self): # TODO: proper STL support return os.path.abspath(os.path.join(self.ndk_home, 'sources', 'cxx-stl', 'system', 'include')) + def libsysroot(self): + arch = self.arch + if self.is_arm(): + arch = 'arm' + elif self.is_arm64(): + arch = 'arm64' + path = 'platforms/android-%s/arch-%s' % (self.api, arch) + + return os.path.abspath(os.path.join(self.ndk_home, path)) + def sysroot(self): - if self.ndk_rev >= 19: + if self.ndk_rev >= ANDROID_NDK_UNIFIED_SYSROOT_MIN: return os.path.abspath(os.path.join(self.ndk_home, 'sysroot')) else: - arch = self.arch - if self.is_arm(): - arch = 'arm' - elif self.is_arm64(): - arch = 'arm64' - path = 'platforms/android-{}/arch-{}'.format(self.api, arch) - - return os.path.abspath(os.path.join(self.ndk_home, path)) + return self.libsysroot() - def cflags(self): + def cflags(self, cxx = False): cflags = [] - if self.ndk_rev < 20: - cflags = ['--sysroot={0}'.format(self.sysroot())] - cflags += ['-DANDROID', '-D__ANDROID__'] - cflags += ['-I{0}'.format(self.system_stl())] + + if self.ndk_rev <= ANDROID_NDK_SYSROOT_FLAG_MAX: + cflags += ['--sysroot=%s' % (self.sysroot())] + else: + if self.is_host(): + cflags += [ + '--sysroot=%s/sysroot' % (self.gen_gcc_toolchain_path()), + '-isystem', '%s/usr/include/' % (self.sysroot()) + ] + + cflags += ['-I%s' % (self.system_stl()), '-DANDROID', '-D__ANDROID__'] + + if cxx and not self.is_clang() and self.toolchain not in ['4.8','4.9']: + cflags += ['-fno-sized-deallocation'] + if self.is_arm(): if self.arch == 'armeabi-v7a': # ARMv7 support cflags += ['-mthumb', '-mfpu=neon', '-mcpu=cortex-a9', '-DHAVE_EFFICIENT_UNALIGNED_ACCESS', '-DVECTORIZE_SINCOS'] - if not self.is_clang(): + + if not self.is_clang() and not self.is_host(): cflags += [ '-mvectorize-with-neon-quad' ] - if self.is_hardfloat: - cflags += ['-D_NDK_MATH_NO_SOFTFP=1', '-mhard-float', '-mfloat-abi=hard', '-DLOAD_HARDFP', '-DSOFTFP_LINK'] + + if self.is_hardfp(): + cflags += ['-D_NDK_MATH_NO_SOFTFP=1', '-mfloat-abi=hard', '-DLOAD_HARDFP', '-DSOFTFP_LINK'] + + if self.is_host(): + # Clang builtin redefine w/ different calling convention bug + # NOTE: I did not added complex.h functions here, despite + # that NDK devs forgot to put __NDK_FPABI_MATH__ for complex + # math functions + # I personally don't need complex numbers support, but if you want it + # just run sed to patch header + for f in ['strtod', 'strtof', 'strtold']: + cflags += ['-fno-builtin-%s' % f] else: cflags += ['-mfloat-abi=softfp'] else: @@ -222,16 +280,32 @@ class Android: # they go before object list def linkflags(self): linkflags = [] - if self.ndk_rev < 20: - linkflags = ['--sysroot={0}'.format(self.sysroot())] + if self.is_host(): + linkflags += ['--gcc-toolchain=%s' % self.gen_gcc_toolchain_path()] + + if self.ndk_rev <= ANDROID_NDK_SYSROOT_FLAG_MAX: + linkflags += ['--sysroot=%s' % (self.sysroot())] + elif self.is_host(): + linkflags += ['--sysroot=%s/sysroot' % (self.gen_gcc_toolchain_path())] + + if self.is_clang() or self.is_host(): + linkflags += ['-fuse-ld=lld'] + + linkflags += ['-Wl,--hash-style=both','-Wl,--no-undefined'] return linkflags def ldflags(self): ldflags = ['-lgcc', '-no-canonical-prefixes'] + if self.is_clang() or self.is_host(): + ldflags += ['-stdlib=libstdc++'] if self.is_arm(): if self.arch == 'armeabi-v7a': - ldflags += ['-march=armv7-a', '-Wl,--fix-cortex-a8', '-mthumb'] - if self.is_hardfloat: + ldflags += ['-march=armv7-a', '-mthumb'] + + if not self.is_clang() and not self.is_host(): # lld only + ldflags += ['-Wl,--fix-cortex-a8'] + + if self.is_hardfp(): ldflags += ['-Wl,--no-warn-mismatch', '-lm_hard'] else: ldflags += ['-march=armv5te'] @@ -248,17 +322,17 @@ def configure(conf): if len(values) != 3: conf.fatal('Invalid --android paramater value!') - valid_archs = ['x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'armeabi-v7a-hard', 'aarch64', 'mipsel', 'mips64el'] + valid_archs = ['x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'armeabi-v7a-hard', 'aarch64'] if values[0] not in valid_archs: - conf.fatal('Unknown arch: {}. Supported: {}'.format(values[0], ', '.join(valid_archs))) + conf.fatal('Unknown arch: %s. Supported: %r' % (values[0], ', '.join(valid_archs))) - android = Android(conf, values[0], values[1], int(values[2])) - setattr(conf, 'android', android) + conf.android = android = Android(conf, values[0], values[1], int(values[2])) conf.environ['CC'] = android.cc() conf.environ['CXX'] = android.cxx() + conf.environ['STRIP'] = android.strip() conf.env.CFLAGS += android.cflags() - conf.env.CXXFLAGS += android.cflags() + conf.env.CXXFLAGS += android.cflags(True) conf.env.LINKFLAGS += android.linkflags() conf.env.LDFLAGS += android.ldflags() @@ -267,20 +341,27 @@ def configure(conf): conf.env.LIB_M = ['m_hard'] else: conf.env.LIB_M = ['m'] - conf.env.PREFIX = '/lib/{}'.format(android.arch) + conf.env.PREFIX = '/lib/%s' % android.apk_arch() - conf.msg('Selected Android NDK', '{}, version: {}'.format(android.ndk_home, android.ndk_rev)) + conf.msg('Selected Android NDK', '%s, version: %d' % (android.ndk_home, android.ndk_rev)) # no need to print C/C++ compiler, as it would be printed by compiler_c/cxx - conf.msg('... C/C++ flags', ' '.join(android.cflags()).replace(android.ndk_home, '$NDK')) - conf.msg('... link flags', ' '.join(android.linkflags()).replace(android.ndk_home, '$NDK')) - conf.msg('... ld flags', ' '.join(android.ldflags()).replace(android.ndk_home, '$NDK')) + conf.msg('... C/C++ flags', ' '.join(android.cflags()).replace(android.ndk_home, '$NDK/')) + conf.msg('... link flags', ' '.join(android.linkflags()).replace(android.ndk_home, '$NDK/')) + conf.msg('... ld flags', ' '.join(android.ldflags()).replace(android.ndk_home, '$NDK/')) # conf.env.ANDROID_OPTS = android conf.env.DEST_OS2 = 'android' -# else: -# conf.load('compiler_c compiler_cxx') # Use host compiler :) + + MACRO_TO_DESTOS = OrderedDict({ '__ANDROID__' : 'android' }) + for k in c_config.MACRO_TO_DESTOS: + MACRO_TO_DESTOS[k] = c_config.MACRO_TO_DESTOS[k] # ordering is important + c_config.MACRO_TO_DESTOS = MACRO_TO_DESTOS def post_compiler_cxx_configure(conf): + conf.msg('Target OS', conf.env.DEST_OS) + conf.msg('Target CPU', conf.env.DEST_CPU) + conf.msg('Target binfmt', conf.env.DEST_BINFMT) + if conf.options.ANDROID_OPTS: if conf.android.ndk_rev == 19: conf.env.CXXFLAGS_cxxshlib += ['-static-libstdc++'] @@ -288,6 +369,10 @@ def post_compiler_cxx_configure(conf): return def post_compiler_c_configure(conf): + conf.msg('Target OS', conf.env.DEST_OS) + conf.msg('Target CPU', conf.env.DEST_CPU) + conf.msg('Target binfmt', conf.env.DEST_BINFMT) + return from waflib.Tools import compiler_cxx, compiler_c @@ -305,3 +390,20 @@ def patch_compiler_c_configure(conf): setattr(compiler_cxx, 'configure', patch_compiler_cxx_configure) setattr(compiler_c, 'configure', patch_compiler_c_configure) + +@TaskGen.feature('cshlib', 'cxxshlib', 'dshlib', 'fcshlib', 'vnum') +@TaskGen.after_method('apply_link', 'propagate_uselib_vars') +@TaskGen.before_method('apply_vnum') +def apply_android_soname(self): + """ + Enforce SONAME on Android + """ + if self.env.DEST_OS != 'android': + return + + setattr(self, 'vnum', None) # remove vnum, so SONAME would not be overwritten + link = self.link_task + node = link.outputs[0] + libname = node.name + v = self.env.SONAME_ST % libname + self.env.append_value('LINKFLAGS', v.split()) diff --git a/waf b/waf index b35987aa..53213cb6 100755 --- a/waf +++ b/waf @@ -32,13 +32,13 @@ POSSIBILITY OF SUCH DAMAGE. import os, sys, inspect -VERSION="2.0.17" -REVISION="da8474e646911ac5657990d535080c54" -GIT="31da55afb92d9865019eb5193e874d1ffb86c522" +VERSION="2.0.18" +REVISION="ff338576c6abcf8ea755ffa7e678f790" +GIT="6539bd1ad3e285b124c02859ee5862dbd80704b7" INSTALL='' -C1='#9' -C2='#3' -C3='#*' +C1='#[' +C2='#E' +C3='#2' cwd = os.getcwd() join = os.path.join @@ -140,6 +140,9 @@ def find_lib(): if name.endswith('waf-light'): w = test(base) if w: return w + for dir in sys.path: + if test(dir): + return dir err('waf-light requires waflib -> export WAFDIR=/folder') dirname = '%s-%s-%s' % (WAF, VERSION, REVISION) @@ -165,5 +168,5 @@ if __name__ == '__main__': Scripting.waf_entry_point(cwd, VERSION, wafdir) #==> -#BZh91AY&SYL79u  8X0EbQ\{*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#3oKmCamvueJwt]Sf:lݶq:}S۹NNݺ7}ۡ{;RR]#9טͬ@aحٽy_>gv|axoyzw#*Ogmoޏl{3w|#*#*#*#*6>=#*N{r#*ݻaݭw+Z57:٦Im݅8F#9CMw#*DT#*"DPTzRJnT׽z>wsK+w*ۮ"jO[ppwcT>Jzz$cg׾ٻ)nmfl&vNkuuE۞R {7ZۮVm=zǽXztn9EQk^E@^G(c:uJKk/y˙zv>-5΃'#* {Ghν{{'$})#994Aq0vf[5vNͶ뾷zd.o}]ә}uCَ=)ƎN8r #*7zu_w}FzKsH(%;5IBklvv6ɗKݹY{ݞzoy(W7Uv#*#*&#*h{{^w}}EOp[;nøşj=ù ٯZP}Po5zSkiTsڽWivo#*V{ wl)NwGk^غ ؅#Y˛X.+7e}zmMWJ[p^tSt^{;{={v^&U!ܓ2#3ntX{8zkN{:>$ۭ;a}c:4#3=#*{tto;s(X;g:w4qoygl#9|ꁧ#*$=ws`x#*#9we5ۀtTP*=.Ֆ1wε=fc=jc:#*$HW&]6tvUf7YƦ6t8Ot7:|xwϞ۵ؚGux2^IٝocO}^Znp^_4#*@#*#*#*FM4i656!#*zF A2hhz6S'=OPyL51#*#*@#*#*#*$"M4$LLFFLO%GJzT#3M[NdH$ګDzV ?Go-[F2V'Ֆx* Xu2F$ý>.bzt^ťbgTCz#9@Eot\W |+;$!'\eF\K3Ls՗O55]˄3ŢĢk=5Wjwk]dɲ#3WZ[QmjkZkZUk[R#9 ""Q'9YDi!BG85[ ("|B[^UڝZ5E^ݴUDsQP$eYLZ 4֌Ril IMX2-)FR&‰,QmY6њK&DhͤB"jR@MK#*IRl%Jfam#*M -!C#*eLh66(Il H+1(#3K-#JZ-4VmmX2 UYf)i4TMMlfԶٖ$HMFMfh*#9$"X"Fi1&IS"3JRB"B#3FIR&B4B"E(H2#355fA%"K25bYHdbM RdSL%&M#31"fHcY(ڍEfI6IL66 ؉1M)mI`PI)6-I(Q "QHE"0Ed1RDa2JMERlk jHb iM$ 1[Ee2J&dX#9dFFljiD)A,#314,b#c,l&-T)D-""m4064!$%AFL6A2ցP#3%F,L&H#9(јLPAF&R 1ʄl*fme[)e0b͋(TlEI1&I6H2T-3Eғ6LFmiD`Q&`)i2R4A%,Y)"Cdd&LVCEF2,EMQI&$JmMF"&#&j4"mf 3!" JƔ*iebKI$# -EbiBȚ‘&C1 LjKDM2mJi@ɣZa&e&)C,"2$S!41 53&DZմ`BjfIY2Hh5)l#9YRiBYRmL-1$b&)J"f&Y0o՘eF[# SJhDm464ڕQf)fEXK Yi#30QjKTaFLeT"f$3LKh%&XQHZ2iKY,,m k4ɓ5&VQSeU&YMc+0f3*dFM2%LY*ͰiXڤhb4J&)j+*kE&e5dMZ*űhbDSIbŋF65FlFJ3`ѰiR QIilhbV-I6H[ZYd&S5-d&ĄJZEE1J[5MK1ZmY)djPlam$fƅk+66EME$`M JH#9jS*J!*(dڊ4E&MTM)H6DVY LJf%EM2PiͦbƲ)DąhAa Z"h1QbJdFcIeJ#Fa)R$&ђ!#936lI(HS1SY")XjMIaEhHT!FKEPE!F223YMbYcR-EQZ3DT4jSI,Vej4 bQQT(ce4!ILTRji,m(dXhYb, ٳC6ƦF&LBMI hQF*eaIXFY4R j(ʒS(FCDYIS"-X֍YTPV4EI-L4Ba51Q-4B4I̒cɋکYITkf&)B̕JmhJS4+m35)k)ll%l4ԒBA E,IDb6HjC&d h!hҚSmIli#9i)$QlM-Ibh#Il`#3F,-&Սe(KT!6Ƥ""R#$ѨKY*Yk&%h mDTQ$ZTmEbZF֓1f&3Mhm4lMQl#)#9h`*,i-FfX-3RVœjRf#3%bEc&6+b2Q1%X6)MES#9)%Xش[F542Y6!mF4eDhIEPjJ36X#BDbI2dIE+DS5S?/5#D\;S.j߮J-?쟡j>lcCHƿbf؆]MDcx?Kzd2i#92a.CV Ξt`F \h $-* /UIhT G&Mxdƣ/1硇{JP>Xql-JJ%=Aɚi陏+cF6va'%l٩8U#9JLU#*Mz4,MbG6%#&HcM#2RD6_.ܲ.N9T6S ɚ!Ɨ RR(UԂ2F,NmFsm,eALi5 E$E+Mpq,mqp c#9Gt\דGX_WkKb1(*?/x<^A;[b`ShR,Gļ#9#EHc hg,hQՋ}R#3?kF4̆+):iH*8d>}g!lȻQF(n*3_nss_V,[itEYIP8x26`^$Pi)5"Ve? 9nNVm՝ɣ'6I}+uC2PW} :>8| ݭsm 6m|lɺFF b#9PTOd e;6j4<\mQKiV*v+E5K* ڇٜ\OS\-Ee؝׷y}MXfDEtP1PX+W'OWn^{z0Cy8OE#ap/7,j_uXKɠFCD)b҈jR#9Ru&i1R|Wxꄡ4},DMR. EsQwѽzJT=hٚv,YAgHFbZT-cQRmSxE#TX)4@ޢWfـd%N5M08m@Z?CNekfL UTAQ#*FEP6J٨-${xhܮ77=u!ŴT]GeJEzwլХᡅ9:2 AM(SvZl JvJ *6Kn)i6I./(*̣f<$G5?vonjGqQEO%xxXZ<(e(vEՄ;ɗ ^~[N:M:Jb.8\WHa*% w3$wbZjVfmصIIQAQp|#peKbM+>?!y߷I}dhI:W0hUUPBЈ͝]1I¿*ϣn=l)]=3FJC2MX /s{u1\zQeU~.H$6,X}n0g;jCkwy=BluFɌ ,~2.z:\oǏ.NM(S?;珢X$M&ѳ-zsP\:knJ~\DaڟYXF| WU0Y+d0'%)l8bd):#Ʊp:aQ3*su{Ӻ.AHt" &Oδy.2>H=voHyV,t]iBL8#9.S#7Z8闭fSߪtC5=Lp~J] `!#.rW >iM!-ΰnc2?fZԩ*r/Niϳ`WVo>lteG!c7Cj )faL}:s6qåW,ܛbpn=(vѕ[t##3ȱgY%$LB;R\uXƬ!KTJNm*z]8W OG?G[\tlE`JDN)!]zϙʋm&]^_ϼ]4"&|_^:"Ԗu׈#9#gKWOw`zUʏ+QC}wxʙ$Ms#3KPx*)_vWd"I]ڪZ!(̳ewFKhP`/Nko"9f~H84t)MEojO#f.N'A?.1b3#3>c(QPGWv `GE"`fQQx[1H4ヲ詥YҲa>m;x3m/ch =ESҸvߢ"[]݀9J'p\PUj֫95d2T(B3 xb\JWe1595'aC)2dRfqm޿I=g -l TiتU:8ŕf ދB"Ic3Hj Ï*ZT7̡"۹fkQqGC#9EX@ܪ65koJ41S}4D KWʞ\xPxy [ڭ9مDKRaH(k~W,@J{ *)9B"R"Mttm(=}CKcGpl&N۳;}XUwAjkˏ6U[5f;C-Apqĩ(znn=:%b\lݿWeg>UqJ%. á~US1"aWt퓯ߛo[Q/"Qn5 Eu6IDp]VfAg%7M#*4USOA",E#_+B^0(gv6omգž%9!CgFs#3!ە/|#*?w9Sv7uR0ϗi?:3C4H>r"P1#*NNIꃭ P&NAq$N+U0D'&^L"EBpJ#3#9#3Ʈ}ΫTeM^;wnoȥU']eѱkLFoh#3>s?f=v[֎1$$nV@>kB?.| QqRM=wv|D#!oh7]ZBEf; p`xrdh*Qő7 FW?8n69F<7mELcEy6k@29ErtSUohsz[Q>)fu]Pf8u[4팍95w?g+i)se {-pҦg7V`Ѵm#3 t#38`X*ZQg*dCXqCYo"zVmbo햚.4]#*̠v>v.5bգCmQ8 >V/[ȂoI.5#Yܱt\J1kh`C|i3ZSTB4aq#cAr-CObnMuҟ'[H2{%=w/f(2G ![qu;s^e1Qla$kybqvw7IGˠI[OY|'U2`'k sJFS ]Fe5ƊE`AHW0qfHeN̽U^4x*Efh4=2ӾpSq@v/Z+>:f? Z:rm~*Zek`qa+h"[N]EU8( !D?COg$61܂EAb'wv=hq<ۋgo=sƍo5>P$RF@^:$n!ft#9`:\zsdJ|H'[1 Ѓh[;7?ݣY?#3[ٰl7QXʎZ_r D8tNf+"YE)^TqdONכ틀rb4s2_eҝ0: w7ۆ'b4)v'{Kvyu B偻e^y9kC(爻T˂2a^m2uo׫֮< Cזj,s7XSq $43{^Ȝš rPٯD%Sm Ej,$ߵZmOxx^49h:Yld,*0FosR\ 75$BD %c#3.جݲ#92n8Cr]#99J g,:AJBbwHYx݅&gݿՇvko']QP0w[)׏N p1#3|y1#9I#9/JmKps>ý&Zy@$B"P'o_#*_Le@%o WL#- *T1f`5U?ZK_2.#ưn#6tEߦNQǵC`Ƈɑ{(Ȣ)>9MSFS\E#3xFR:n%q:"4P[l#35sJ>}"wXd"£:7c56ÿ3ݒaI}6y[qT6Kc?xZx((H&;6M2U@TA۷F3C/ '&L]#3-&IK6g,dI;1S} #97߱L^2"O?0JfBP^]^mJl7>Q-o(!qU` B&f<#ӥ垚1W 4t=OLi=΋?\BsG>߬.ߩ[S0#9dTP'K2ηGz{v鹴9dkA,!nm(l6=b~3<:$,nnJ]X$ݙEX?Z;z)8c p"{Ѥذ4tnַN( n!,4N-żpzn LVo,)35CV)#M0ڻŭ9Ҭ0m''`z#*1( 4ygR]͜MH#9#3io3&L;Kcv='M0FM|ኟƄOJuo4ɃoU j!oaeFˏ˚ZV(F,abHUyWmeᴇNщL<~-HI%ɏP#pb.\*c@7+N[#9#PFPYږ2jN~an"C6aj{ό?`zg70I!LJs=N>.NJ&dDbasW:82Q` 4Y9%5C"bSJl,al^;8Ʀ@cb)SҦ780c\fMxq:f=Pi9- LǶ<2>}|s2H#Q߷79ls?3*#9:A(#9#*S {cz57f<+#9(ؚH#*^#*`,7P  fBy<hCm#U`E64GtP, W/WZiw&:6q (c^X=#9͖2xB%]ykaFݺFܴj4%9~'~ij+|xFCR@2˜EʅUPe#Z$gOw^ 0mP1 @6#* N 7hlyO>ɪtō,oӪhDnk}*2;QIIBiVjHb=9;bEjd4Pnz6p6Ƅ>#,ofLcLJ 5/IccB朆$@LApL)"d`P #9'}4XhێdY66QJ5˲ Z\ev}R|憕729` F9g;Psq >d5ƽ1NmeN2|,Qd!9żul#9?/{(Z 6}z-z(af3ԯ/aOR, ]Ѹzdp\Lxǘ#]&hq`׿aTmjmșʺQ a>[;q|w#9fqoy(sO-CKl&H0A";v 8Y)_&`/a! zpH[ÆGN;h*rYz9 DwcTX\kofsۊHZوɸ%g٭^sΡCKձRSW|Dz 2NN$kmO#@iÅg/!kTAE`AKcq#VыXw#3eŴ ḋ~r#rHQkO$((G8~$\aEAG#3iٕ%$MaMnVT?gre!Hܷ f7?ؼD䋟ߒ0Ci4Nh,FJf$= #9(dY$E4'F5F:Ep[̐A7P\ԈmZP9e0 4B0\8bJEڥ4Y#907iRa2ա#U#9ǦaA` ZiI.|tAr"݊CӦzaS G!3EcsƋV4%7~յ™O*1!a),j]ڝj@tG=*0Jv(db)4dLTE.䣻o7͈WPs";O~p^lsI :3BX4p#>.{Oioﶔp:;PRBHǺG_;xugޜI%I:cb}Nj S#4R n7Dg)e˴bOI,;`rKcE đ}Ӕ'4O{u|VrӶa<6})n]F~cnz_lV>kl}1SzRB>5~ţa!aN#7Q7UM{vi08h3P{.2?Ax}c#eJ8CZ f\L͊"ۡ#9n"R!9Uc9dIɷ;p #3q-p5Qq`{m]ȹˡAIF@-ͭtHͺV"4f!1ZYiOe#}cVR/p`kkIKCxw2@0-F,-keqA ׬AO"}Eȼsˬ?!zx|#FG/ ϕhaaΥٌ8jJ-߷`}3Wt4>b"y6J>{XYH5 -TxAޫNd1HVTD)wVo/%%ԃjE#9"(>͉*X(fņ>pr0#3#9x^-6#Oϱ׊/7'|n!O(Ɓ,0#9DNdI>5 _)=7r{6/Ⱥ,0Y$;zE#9[#3Yd"#*sm^~8tc=)uRx$vÐ|8jVoA!G0ԬCTy/rM#*]tE'ηy*:H'v3y=#֩gz_UQeȍA 5?ؽݡg;Ww:o 2yxvb9-#9Z?vV$8΁L_egOB#9l٭ ?sAduTz1ɷhh).w_oj޻b,*[kAͩ,$lbQbhb^۵k-K\#3)1@<)>$ij#9aD#_[~Iֿ6yh6E)^qJN a:ii]=(粍\E͊()%*A>wB3^k:{.(1gf4kekn6wK?[&01*#'&Qޥ\Cm$*nBTQ<zN}z{ljm6#E Qiؤfg~y0rExXʟMfɧRAQ~q?D 47Vks«#*ߙ@Xs,G1C1u4T;Df>O$9um~s}uX'HL٧WG Jy;7'#B#90M#3 'VQk=b՝+} XϟI1GOH6t~ `?4۟:X~4o|$_$z;>7!}!ΥsTh.6t#31}DO9]>냗ퟘu |KEdSfc6jxq_5:م uG"y3ɽɶv=V~]wis};??Z7mKY';i&x6iz`b"ULT[r!ݾb@S'(FoZR,>ek#*l9h6(#܌X0b3#97˝w6?ƈeNêP\M08v%j'C-fa?vz?QO3ϥc' Gp P[~#*Ta Hҽo* Ө#w 2 aиQX"¹|xY1Rtl<mkcda(5zYi},PW&=Lz{B@iW+ʀX+MS ?s'iS{邴qA<^e7r?Tj;Ƒ;l~`=v=i(/Hy#*2A1BDڪ}M=}d:ؼ8쓻ɽ)GAhm r㩀E:Y >^"7|/iHs$>OF;C$FsɪT#wu4g$<ȷSՕ>yΨpO0eܡXfl{/A!L#9H<$h W`XĀ%ot+~CuLlA.Ow@K߇FXGo>#V 4oW6vo-W7@/4}VN _Fe/[5U˧}/gb_./{oϠJp+cdTJ{nwK'Nw|hn~C⾹jv;W?ÇgF~ch;ӎt|;x0\G0vNo&Gۗ!勇IOҞ9d>T|._W[=YVtd-àWr|^:1-RCɐ\[)˺#3t-c0W%ͮӊrlc#35m_GDݪqW R˄zRmZXJ.6oG,+ljm悌i#3~,YytqaF[-W(~]|s ph<ȹΪ{fuܞnLw[͇IݬyȗW_9olwlabY7:= Wo';9'ѭ)2C'PO rM=Gɵe 6Ӳ6'8Wy986u/#3O{]|jkI#3&<\vc+p#9]gׅ:;67U.tkD}f؆6e ?9@ehƙx8\x|{r,y(n9,5tcLE^/wT.Zf(Q?+:Só.ƎxL?1&6jAհ_M?}#Q;ϦR-#*HmOWu0ݮK[GͷCgzz#գ+#3p8XO%jycO~X83 hdTǕx_䝗W-mI{me#9?=,T}?t/RwzW^/;iiw[Z#9(FAs(]ឃNn$E#3 ƮH#*Dh³Dax#9/2HvTgݮ6j|?ϲj{B~po58j}^bfe;";/D>Z.f."w:zp|tw}]?]AIaQO^aPgyTzƫQ񎪨i 0&qu^Mv`LW N>t":LDֽ9rkqf_u<)w?#iPjlpz@]|%U3壈zv$\=S3$!KܣtZڛ.:wwHyi~T9#*&SnK]=#*E{w0kT0qN\#9NϕdlZ*;}g8z = .'wrEkXuwƱqg_i2NyqOd] |QZ6U5ȴ PwVMM4D,=܂ԃ!EŖ%:'=*Ȣa|=^}A );$o#9#*Squ.e>0o5h5FGd(~BrK5mÏHz x+dWkwY}L,#3_AqyQGN+Vڕ~# QG^ VVilWaٍ_4}TտU*[LXpfy|\O q*a󍀎)(OgI^m;ϵv<͚mk/(z$_GCå󱐤'1AZ<99;g,d~^#3o#*3AKcĒa*?dS!/F%<#2#*o?7Fdʏ\?Z,̹,0!1#3AȑFd|+Z#3*mTMǒH*d.,fSVeH0%i[M`cXL Ց447BK#3X++#pѼ8 `f!IUD|уa #ohW}UR#3X/u}??]ga((>߷~Kī;7@w6c[\xV3={-!alar(ea}==_nZ"@!WǑ&USoWSpה:p^qsrNk CξTإ~]ݜ&&{- }o@ v,$!~Сix|lbhͯ#޵9G/^QB/DpTntUQ?ܣJ{ x_J%ٰc^FVcnFz;:f[H\S]y$$%ٳWy9#3#*F?w*H('بbUڤldq",CQ/b?.ʹKˣH7b>/elaW T#*v, 0XF3׮,=I"e_'639f4Ɔ%FԘ*G">i0-#3T)8#9X ")=eVƈS#JR0iIpE30Bj412X]k^MuC7y#9FCѢb~fɸ#3XنkV#9>ũۜcX1HٮϔsQ7Φa2 fVZK"d:\lR"H(h`aш0#36hfԇV"pIX6 jn [2LQnjL4`̼Ba%*QT*th.D>t:w(sGHO#!?O~d*5#*!#9*vngx>5$3iަ3#3xle1~>)Od#3qo>;_{ӷL枞:f`'|cyͯїJtuk'q""v#3hWQ1#38HFSX`VqX (GIHZb9B*k@WnFwcxLk>V惩uOa|G?v emNGc+2&t:҃6C~$m`NN,݇5H_;6}ś0 voUd:#T&m+;hjwuOIBۀ7SúwvԶL|Xڭa9odM׈M@of{y6񬰱7:XĐ;"Q@teJfŠPyAb>U`5/<5~+/jaXRRga1f8|K"smә17ԩK8T8~guŢ,2эfqFB#5;QJu#3S}yX6㍼LJ'3{l2E; AĦN>qLNQ zqyr}&[țﷃR'u:dJ/;U]ʨ.g=pAG.O#9ì=z-v>‘m/ʷj1`345?IӥR٬:&l^4Ip9½4@̶Z3+/u]k]VӰB| #3[aB#5o(|J}g89mAm&R=36߃TqΠ.5Y#3q'm m{BE8id&!zXmSL%ZWpiKW|D0TT9aĉ9⅙XNRL6=On'i%0f4٧ԅ&M-Z͆0Z #9lQm#[REWq&ँ{tuxCjx^1KW(*R]\|~?|be_6֠fB-2 [`x#9@̲W~g{8]vi rc{s#*U>\GW73o΋5ݥ'ໄ$;dw9*=d*?с<#3F}ad#9;?@QMSTuD5T?h;^O~">Y"dp|jjm&K90䌧aW9w1pހwDŽ#OVqB&ztny灲)IQ%ar(AF%{ &5U5hDp+PbqA4:4sUo#80%1RnLD6#*13$T#96=CM_0YidR/6h:G!Fm3EIZ>,.$0Q~L5ΰŝ0R)0#3TdkW"B_r.wnQ:+>H^e&^`DG%3`%x^~4!6[`2YGQE_t&I=K܂̈́rld{Ŭ_#3  ϶淟JsYSI#u)FP-u#*YwrGCM< ԤlѲSiz+UN-<:.ztG)Xޠ5OxCl(l d6Ԧ84I|6x?Gw 'ܴ$ZYDx38/,9\O|2ݧXOն#9l(jjwI7(R}2gVUGsHZahXy׮ XyukOצ"!4~kvͱQ3h#294W=(`#3{R{ghFT]R=@4 3 "x`71TJ#9M.J%1U#9]Q۫nMF_fFIo,1ט-QDVYCQv s!4ո[#906GyS 2TOjank3]24] +Na:n rOWo$HxW#9咧ׇK=}6nNtL\語m@F|G]ihi Zx6meHBsSAd- %lW9 +S8$gko;RZv|O:4Fىvߎ(gCռ2N#utcttdrNH:T,WE"řr#5fWK])V2bƗ8@%)zzj=v0 2$ 4-YV knHAN$#3Aٹݍ- 0-W)>vm'rgbn[@Bjޡfu28HYɮ16<0DnHRwۓ *f69SHq'տO|/,F INښ8xt(M9?hwgrD6zld#3x3ojqz.+fi_3s&pts(/uw;~)H@#3SA.b֯Bf#?)2}cϧgj";N^rKU9Be{oF3 ?6 EDOR @}Iۨ="Gh3ǐo\t 0y"ifزQfGԎlE8yBڅ}eilJ{,0`vy L$Gd].=9nSQL P"A#9rR;YBMC"xշ,AM@W_iRX:NC_`wEb.b¡$߂DUsY-ySBj>W{ѬUۼ΍q%0q?X= y^Dg<{I8wD$ãR`b3F |~܁8rsNތ5jgjUĨ&TGݪWb\*R }γZjXnЕ:qp}C#9F4pPtζTp^kFo^*$rzOlb,pQ#9]/lRP%aG!y0kAܳ 5UdY͆j0YX8it-%0uE唰\#Ƹ>I]㫰\k,!MOjC1#*^Brp`􀾣8heU Z\Y7AӘ5b h"wBJ꽇TnL%hB< 0_{0W\؝R)%IDZ㱯S>uu}VA2ݢ#*r 3Y%ѕ_I&5Ӫ67;=qeE3SO5""'sj^4M*aFf66`UkSZSjUm/)5w6dQuy߾믞w wjs3;g&^H8Vs{qǕ*5Th_tR$={>*,;NڪxtMZhQ#9J38#9c)&΁-b uimUU!fCW%DsS’7t0B }g佪uJaC{v7_fyQ?5oVv[%`IEFqxp#̴" fG^e^.VҨ99'+?BΟ +y=St~8{ku9lPfDt]Q#9Mwn8GT"89KZogfSpr^8#3)˵/m,%X`)k+)=) nz2uy_r@(h8_9cXy1L6PϦGRxw]Xz|b<p_8{@[%E9)t`5XU *Kss6_r z7w<97}p{s}2os#9OO'-򛏱;q`LT:6m9M"e/o9e5Z|jUL$NRcv.rۋgSDMb#9w4X#w CO6\ō t+~ՌTtÁ"ņE43NbnIS޽ٕ]эJҏ5Hejᆧ2u跱ҼwP0v#3eY#9Q@s7wui)>(XO3,#3q^#9G7$ϻf{[q>q _m@#9k#u#*ͱRjS+S|౉Z!?N՜ް*CyP5Pd _)#9vWcQ)}~KAFJCHjH^emg ͔D#hqX&&8'[RȎi6ᝯ+k#97mVIJVSs9/] d-:fë˭I SMTr\g()ٺvZX/4{sOߑxJ>oPΜWG灌4f\2yoل0=bnXH0=">Մ߻M=&j+񃒧̫7}T]C۵lm4YCGQ<]#9د`v/..NAv +MvU(R)T%MѭD+Z5wG;H ]V<8dݡt<&ݗsdY 3=O5KzRIcr)棟+co@k],bR :eIw$]]r%YNv|i3#3:r}_+|O]nwBDq$ ֟κ)45mlm caۗ39iQ6fv#|gen7#3~/66ӵ\mL7#=oƐj-ы[Dq`|C#9v:"!l5hhL=j0#â M3';FΑߍq7G?0rbAͼ/ʹ҃j1 .+? Z3t y1e7+0\6hRe;^o$H#9mtS a Xu= [R١.xj.у@)ȼrg\S; !#*Edop#9d c9&_x7y43x_#9s[cWdZ%KM~ls#3*I>(<7mb#̶j=ߞnΦϧ%A7HG>,q=1iPNW{z5J#*ks5)"[]xX:pu|]mG䇷:õPJjL:mOf#SdKБn-K/Kh3q~,r㐜xF_:PN^pK=lFɇp%,tFn_\T RzRHr>s=JC;#)))iP]z&B0QnJ ySש{5OK锫yj޼7әHb#9H+ˇV>;N^TuL鸘#*Ŏ/L޺hVփwmE(VA,.Ԩ(:#*IAEZvkx>\6pPA4Ymt#*XYU4Ti$[э^><Znei!nU=n4JN/ֺc%R:3)>iJL9#9@Z'e8Wku9˭|@ԓ< ?(ty:a(.[4AdT/4Xos:mHqp(kLmɖ/HI#*`o@qvgnԞ&,Q)wsRguvZ?y#̓BW.؂[|o`FW8B&ތ7̱c!TiVVޤTI$#3JeBdk7|h\Kfo_}||\RD䜖Q )o;k|f/>!gZ##*w9_Gma􅻂3אm?}`lXLtcL#3.;ՂE%~ ‘A\%)w0'vh TKaP->YɁđ?G ڢAдF$#3M"w#9Dh}[j I4*y/H8$*Ǖ-kvC(`L$};(;6GΠJO~ =~9q |#3#=Eu%$Ysf>s5cJ"&288N_II;(q͢ PB #3ꜤhXږD#aLMJ?U!&Aim~_/:moͯ2! cPɄ(\bC@qߵR,- :#*fQ%Š=HӶ>&D.MuÛK=*5#*5Q5Fs +%-NAևsߐ+%: \:n/ c<`IÛPxJe6WyN@0L#*2R!6 J\x2@;-3t \Gv Jt+(l#-z/0t|ctE)ð'<@B[Sn-\NyL҂<Vn!@Crp}=BT[Ǜ'O7X0f.'8fYwm|!\ LIG;!`KK#*m0MhKs\h.IvvOYD(t_тt{6͐o¯SX!~ezT K|L$Cn|1}?.WmT"ɘm pALÝd)?U<m߶h8,?HT~(!eRwe켨Y#3S{Tzߠlj+nK$#|`9`_rBQɋbZ,ew E#9#3qnǁ'$[#*nK QprP#j/0tng_ 8/4{[%&⒒dWw,/m/z9N#3vјt!KgRi%F*FeQ$Rb(^P,G !.C Fv0w*)UpK80S{I#3'#*ó3PڼnisVQ;i`)D}13GyMTm#90)(ꮊrp 7`ʙ< !N*ROt\lвoR@tƨS@Mc}R\י-nnJAB y;N\M!zfӇd]zt`aZ<#3Xvz=GϲzxvYQŃmOAFrP`\n>b]m+Ka#9QUPM.Cq]yԐh4dYsSW;2#* Al#3Ac!j圉uoSlzCwA̾ ٘F;=GV.* ፞’1SfZH60ӧn-|03On _h51P P`WE]JL#9J{ !]H~FP%1#9#9GR9) ]Tϛ5I) EQ{fJl8MRal)Z#*)#9Y"Jkvߡ;u?QhJU`w~jSL@6S.WP!taQΊFI=^HLT_؂o4R{}'ݻO~a>tR|/?FK~U}#9jeY($P?#*&>A@>c8!|;{.{0VAE>R"w(zM#_0R:<~oٴ|FhnE n#3,R, 򉏯M],(z#9jvL 2UHoO'HR߻/YCb xi@u(eZ}#9@3,tYwwl4gaؖ#* EwBј1RQ&叾#9!%) eGEts)(#*`V b(j5J4/t̶Y;Qa Dܔj$$'T*Z-t{I>2;=++   ewol8ƶO ?|Z*ۥ.:,l0E*><=4Nz_~4To*-b &Y3BsdS]ΣM!+AO={.l`Y}d#p@ 6[t|OCĸaH)6~-DCbl/;%r,SnKGaH6kOrQCy`2%ee_%\/b0u yVR*8 *©h)Ӥ \2NV0RUTpdCFjT2YǥS8:ybl쩢yZ_ΝULBgL8|gzQZC1i 5{?0lfоmJQ!#9ɸıXhɢE $%3JkL)^}7著%UPU0Nspkg;Hrs,繶\LL tɷ#9B*TqHЊ%Ev{(`m;ῲ߷]Sxޘȉ '7ʆ{Ý$Db#9r60NIxbV}-H%7 ]!;hgd.ô5IDq#*z9Q#9U#3T ԀF:m(oqút#9MrN@T¤I/uwp'rM h0N|yY l&UgQ4v#3|Èr{Y:MJ "0c_I`ƙqBȗwGY!D'"H_#9=1΄@=WruE=P$:b/vٺ9#9$M7}4! ]b=ۓ93V(>QaAU|ZƐq$8BTD7se5;#9h+NئAV)YrPaP!!~K3}aͦ,k^O'ciޯ"r#9: g* tze=I#900dh=td#i!dK5C&Nf%ڹDRdlϷî̉/cyL8` !DC^+|JNi.(e#9cZ:?;O}(y,dM8vC]!S~L$fN|,LERʂ?0扩UBZ [/cE|JN`hgDXo#327=_8t c+Ђ$iΫ2;bb~%,t[AK^<1 N#3Lzs1Bc8v:>f)*scx*~ -z 2dq#ꌖLn L4AO?m.SlA?/󦰼JAQ,兹޺OV/Nn* ^9ݳZmΉac:RU, z\æɤ#3VgB\exo9@"\#*?og#eV#3c,J~N{K13/ƣW7;_}W1N!tUXR"~y79| ll0>(Ll=_/ҜަrL$<#9p??$}PT!~@=58@_ВQS#9^T~A_CRj˖>//tm+םtAG>SzG : )5Qv~eM=.9UΌox7#91G̳%L_Yֺn a"tGe#*JggP܉WliP}8AsպT?*ujƓ{vVK`Z]ӌ4=AV^#*#9@+xT[G(m.G#9e͝XGL}?'leG+i#3(ۙ[K @ª17|}5Yi}#3{!:~?FjLd$PMh<~?jgGҿXROSb{j(-Hp/B>L ?1rOMY?k﹪S}xqhIlz)TWe?^ vO-?4:Cc/_3_\}x5iDY㣫O<:A1jyhwzjƱq*iΔ#g/+ca#*Q4•e#97Vy{>+Yvw~ O/|#36ε{DϷO!LLD#3"17I*7, fZ|` 䢺`)aT>,$Wva~p%q#?'ZB?L-gìB0fBf:w*3 96Vbm#9Q9x?|?m獊SP2 g#N˩;q\q`T!Gsg9=6rsw!<촮}}P{*w'z}Ò1OMr  1bj6 r/װUA#9'TR 2ן( #3T%6/=#36z4%.pZe?ǟk7 P1 v~n<.}h)6|6 Ȑ~]sf7wgDf0_ٷGGO?$a@ W:#*י`|7lÒ_t$El-ODn"F_F7e/P#33o0au}%&}/#*y}\%$P>6~fBnLW]03{agHuͬ_k'9* 1C{)UR0ЄH?S)!#9v#>{6?9X(U{_{>p mVbAC+>W970̠3uNpϝoǓWWYR:ouu,xe\jUly`i?gQ٦fQ.`QA"㧛הA#*/~5&Ve|x4U~=MՔTQn"Vrѥ23d,1k2(W,%MITܳ&ҼvߣNOxjst ٷ!~d*6ˊ bRccBX}w|3:+9n}"=Vc.wĸ;tv=BXҲw#9x:ݖ4h4 tg!.l3+>;ht&ib<ԦSV\/0XK:=}uDJ|)#3jBL8@Cn=(QZ+h?>s !g5T4l<+Y7~x_Ƿ!!j0iNj%$U}]'m>5h5EÁT }xe#9|:Yl|QOGI~U4\7 ؉1k̾=9elQnoZu#9Dtw}%㢑A[s$!zlc{BPNOst_O7g1fe.$A#*FYK: *%䷲LʮDrasJ9Qk3Hs+4.H@lt|Qh~ܺ"X`GsvCyW=J H#rl;Ӵ#VS&LoB$ WA#3WbC„Ťk`P٬T*bCڙJS.;h.1V|~3n/'峞NfA;a\oz69*"}{݂_K["-?{$p h8:1Mgȹ3IQ^&Q= L}t~pD;+գ+#kn9m_GŞC%K%#9 5e/ָBut3]73ސvkR*66c#9W݆u^nN{#9E̲)#* wW<#qO#3;2TF'S=tÿ#S#2ՕOeVm I;le 8Y0GN3ٕ5z>ë˷%{C 1Z;?<~&xOMuGQ]] :y6OܡLۙ$eո8;'xҋ^>:] mr)Dd&2V^Uqy< #*X˖Ĩ(0ÙĹ#*QH4<@#*Arppig2C#**ǰe^'epB{Hf#9yxs_^X7ͱ:) r Km44E=4Ffk[>;9CT~r#*$łű{f C嵺rSRT,_?i{QCkj,Q~D+&ѱ2@Y(݆lpM~QDp}l.}/wlL,&TCge;#8n$cЀ:#*j9jW$OzDe{푢' 6[`H`w>o-qxYw:{4ۣZI#* T-o[Ďb_h\Ag^rмWɿs`5o:SW'M6%*TzqP[#*im( Ԑc3␅ ʾ_l%0PnDrɏ nG2C0sS1+mʗzH4+q@)RHc04e%#92G+m*7yw\.1-P+ b#9E.\Hׇ#Ŕ҅~G=qpR9т[C7{YS&K-9|ipNkvZ7s$ qL4A8`i` pYG#*_"_E!&߮]l0DQ5۝zMjjJDY0;5Ec[z2n"[U{꾯NK6[Zt#O=qր0(J0 T3udRU\6gw^ܾRJӲa[wϥ9J|_qN;׈ad¡| [qsF٦ %gT<.XCq/9ŖZUAD'<— (Sn`sq4tGجU+o]|Cgm;a'O =NL\W` eAq'P=Jΰ吵̇A}\wiT{ &Ԫ 2(Zj\Q&~ 20>>gᚘǪO,E ]p544|^1JNz֐Ӷ\9*g.GG"ޔ+C&{slW.czɑy;gn##3$̔F}).u,SD,fXd/=\h6iCbm+PS2|nIOd#*s#*`f/#Lھ=[py-Q{_Nlr9gNj*ya4 !5:rlQ!3_$b>jc5l iS0̞{ҾϲKaX#9C!6˗%ݴmalb~O%(,`zHfHEIԒdKF,R$lx +(HAȪ9F.g -~:Akщ@"/ 2 SX9l˯ 1@@\#*3-ɒ30,k& d0JD pc^914 & 4-b60h7e*=nd뗊I@\HIǓG\_U7e\6"/Fm]$-̷n,ڼk#3hq^\A[sJxM#`vrڸJwa9."YV#9Xc ;#9n2Z#C1|lgZՎ?q+ӹg̢VK#9fTH`#**Q"*[%}x4oKݨZYcL>][Y@2T6H8D&"6[f_eRk a8OIFAjo0p)#9>ٙli5։c*ׁ֡vPh=q)Ԃ:lyZ5Mu(]0Qx0|ڃkЌ \M%x(*7e|?2%۠n!Zt&eۆ]zE0Yl՚{-pw62 솰z,y#9ֳrD$1a ʿ8t`1t0;u9O>O=2܇=Xܳp6sh(@4 PDT~\SA#pkē$S7Ii'Ցmy!lU9I#3xɓɁ %Fx rC.(B"WK|؇k#3-@1#3FDtum^%BdOfBu9裝gEqp}r*AquЌ鰠DA߾?x0=. T4!bS3e2x:h2QL2)!t2|W&،IZ6樝#3c{놑ѣZ2Z\ L&Gc_1Qƴhǔ8]TmQC4 vǪbߟ:fFhtIUXuk6_S ETy'=jx"Fd-lu7B:AiAmo B`[mXDw N18 Qn%iԖZP 6YA1:ĴpQr;nw F5ׯ[`UE¨'DeBq3 פ."K߰h}b? @wvxW^CͷTt~5L$VtFX0RA8hB暤@7튍uEsk_;vv#Tx˭PT,lix͑jhXЇ׋]a9#*VoykN<#*}3ܛB#3N٦5y^_WwO<п|'C!P.00?~07mtMgRC˔R#3K7?)UU/o,#*uU(02JW!Ƚzzח)'aC#9@@ ǬR L(bfS_%Բjxvܙ0Mrb,#*v#3 m gެ{lq>e ݡaNMpQ70;pt# 8*S46pG1+ړy,/:g^p#  ï#(m9FkjYOJ! J@sGp#4=< }:~~zo1O8I?a02)_}?330}ǿ`cڿ16uL9[Moh#3ЬlP+-"HzzX$mY?_~XoGǐ׿i.|/ݩ#1ҝȝ#9ܻk " -Rm(2d?ۍc97U WlF)kݺ&Wf^%%M)5ӌ]:~E>Gbtm=QI;vE3+\ /~JnfG3ӣ})< $ ~t7jSrIDl0Yh&_>53r/7}~4Q VxΞkx{-$}of$y(@[PI' OXKbb&!|CG+#*k;b+?o,#*r"9#*@#*lvT/Go9۠zva$ }Ëb鯺'݋+ǹ#*lAh_qcȸ?OT&IGW6`X ,!pȡ"B;sAcϥ8僟u,cN@x~;0ڧ8!#*"HǴ&S$Q)@p]/9;0#3GӣpBqOSi*~A5G`?>c&?6~/'ءb2@ w#*;ɸx,1/Z+h}'=O? U[0|Tf!!dI@~#*;`Xt@HJE$;NOcqB~2cDj:*4F2r!k3/v|ȹt Aޣ;Dr:ytND#*m=KlzC@#9s)TS:_?ǁ@ó?1ȓ2 [#4D*(([Dpuwe΍(`ix`i$n3-Phxk{}<5OaQ )dhUFm=ȕVϾG((W;Ȇߔ(T#*cED7m6I~hg#9\vmPN/$\#*k;>I!Gg"t73׺k+zwX^hڗv=sL:@\,)BBB"3ꕠkE #*=@ o2 (*MU^U UE{< 3ak`٭a]˗#[֌eb\y#IS9#*6L blE !{ #*DP}RBnFѓEav/eIol2_њ>w۩JU5;T#3 e$vrv0Q)߼ئfCjXJ#9Nd܍0 ~;Ut U_EûrKz'r0+!쭿dB5z|uơd2Q_ʣnj+km*VVjj-f),Sh"22ߙ-=/p2=>pJ#9 u$Z")g4aI037s0n#*iЅM*@aH@ P1#3%wt`qJ _J:J^OD;kǡ]!%FGQ:ypaދeizx#3v8r&|I9VȬCi!(tBy'm1B8l-*G3n[ps{L1Z<4I"tJb(NCz,=Gi@=ʼ$~n#9'Sy[>Ԩy(IܕZZy ԅ l!kģ[IVI$}&t38w֤(a]C{pKHQAETϕYnӒGaDs'$/_/6("N!njC$i7AN(OoG;2F#Iq)ch$#'1GUIQ2{+>g_G B0 J78[,c$0[@T;;4LP237?#`Fcg~IB?J^_9VWBy&#9|p%޼#*DE'SEn|udv?'AJEQ3B#9r|TW'Н X QXhM&Rd gp {R@RW!pd>uP|+jZE)`\\fǁ\Ng1 @wvtn>A(#*Ӓ\%RY.)S#*= fFاX{KYqHsP#3 "D#3@oKsp"x2 tQUS1C,(>0!@g7?Њ9vxEDToqVqj#3@*J8i!T}Q#3vSBE"3!~FF۳?NCb'w3x#9CQykcW#D?~tj30l+X#*sg75moN#KԽ:@#*+)Bhbվ0|uGX!(4$H}X#3x4TX{̊<ـ7`($)C5_VߊWA^޽)w՘3&`* gYfmGoٰl֎ʱy(+rY6IM Q+q[신mbTݒ'3qߐQzK< V#*PhxrP(v_"x@DDd Z+QA$>وdfu䬁H&CL433U4>!P2i4Ol-hjqp~WRpnޠaY؅`^QF,2O~@/M^Ev wϠ;G+k?-> ?B C ."Y OZlqP?$a6ݿ<#3ު5T$$ P펣>A#Cd6_Y1i9ƏoŒN/yc]$""!/BIGՀ럽c mtlnjqU0[#33guPhM*mfJHF0"Ԓ c$N#*PxSUT 91#cy/#OTpTEh`7 7y· bOAĢ2 w#9G-/wtK$ȡIz+9JUڸ}Lsd1#d 4vRKo9LdT%WJaxɠ0n'LԊPҩТN4L1ƬT!6|Yf!G3&ʑu -F9A4 /ӐsXE똵#3nL96YLLU4=[`771%X,b#384b1`T?*)onȧ +S֟PizF* y"zU(I:*?opMϘBj)%~H~ӥTI 5y354-(5"BNs%=<@K9t<#3Nڽ+ 4U#*T[_ـU7z?WXˆ8DTB!shb0w:̔py9w1FѦPGCvvJ0F#;C#][{ѼCΠA@B0BEߤ~4KI#*(OӇZg2Dn~;t0׆{-5#-¨&BQ3`uF SP=2>#*f}0CLW=L3M 3x'J_c kxbh22b2m|P;8i||?If5n#oO8"6 ~/6nIf-ϭ}\떷C?տ䝰_i)=,z2獝v5]Q#3#33fgČȥ.ͣl9Rڋ2NJM0#*AcA%&Eؾ ם8Ebm{u{#3~ Z<&*ƒl(sRD Сv0yc'u0#*wR1T@#*"Kgm=b1pzF &~ˇ_G݃#37bA"||SH4Eej&9I_wדkQ6P$E!"C`@AEØIvkZح-Ͱ,YoAܢC@ѱçw'7麗#3-t3-P;#{AΫ7?Ѓ:OI k?.;"ǣY8Kj#9vi>*@$Z\wl^Pv#9XĊ=Tt.M%aeBWؼJ@IRoz?.]8\ɥcN8$$ߒbхnm-}x0/5)yk#JyJ 6mpi78@# L9G3?&n#*vB|Q߿"`)<0nyHo] B!zRCƮMQbbQ\9Mdavld_24a#9@K#9_d>`5 L3YH)܇J6O1=ke8GnXCWQ|cWgGQI |}3{1Bۊ3!nM^OCû+]VO/]|vIKznCuLq룩eb%Pt㡴K˷"ݩL(:e)IHX#9~3ٷ^QXB6T'<9$7Dw2U"6+ ^q蘫o9ZLq}p`Xd~ح2G d61AX̀H }}կA!'}qn\&a"=WOuvhzv~t,R}pW->w~,nqd׃<󾱸4{RA1omUUs`>c#3#*pnr+fG5#9wh]Qi )1B#vlI*UgbI/$Cm yٺۂvb;4.qEˑ8U^>ݐT]9w?[QBN) $_$xƆ f"%^y ж6qnWBmUUe[R4xmio}HG$)ן;Y;/ܟCʹϫwZ,?^Z6pҋY mR2ԕH8460LaZ؁?R#3T-ȽW?je,i,_XA[;Ά΍EJY?OP}PQj۳~@)^A Q#32d #3.܍moh#3l[}SlrU±L}M11!ßڈ}^k#ۧ/p Bn@r 38p!Fc|&$u#9Bi]}mCkK&"̦vg.fGlǻϿïbBBd#$Boz%&nk+,{DR͹˛@ΞR=_P&iWd'T`б03XQ nPjt!,yGPHov9v =npx_#32qî<*rMPxK$ܗj@lU;ǥIh&OM նАPlaHr1N!lzgo^ϳn^8AsCXBY" ݷгr ^v<J'N9yGst'#*Sl* z0F8Nh<6EgJhp'&0;L,FM>#\tpr2pxѳO6sP)$S#*iKF5tM]<#9 i5s|8HL=7rb4*H*Gb&+V]TV1@hgLm2v:c=lb*D׃ɧ$qSE((?!D9ͻQVeyX#S Wr>zt-%per*ȵ&#3x#30[Pb'_o׊{0#8<y(#9' #!ԿO.Ft;s D[!ڍ\&q1ע*:@py f'6ݶ,B@"lݬslyeˑe1;\( BjqQErdUt6"N)@SIDV d!7o2GyDhh (BlC#*R)RxЕwGYXxNf.˻$"QpAPR#TRzQc CR Lm$6&Ì57#3E#>a3!OуI#3ɃI!̴ֵz(屼v^КXNFm%Q.:3q 5Xv`Cd #3ɃrHAF#9@s#3D.,CG#3U?#9~d׆s7k&YУELJ[Hm^RWv#* \˔9QE\SAʗM|^ҭ^h#3"β;йV6RWϵ묞j֞oHcHhbI#*Hn 4tvw}&eY$Rr܉P@9c F0RqAL&HD]z|KaI&)=鵛gԸơbge3$0^{גzx.#9뜁HzOe\!Ե)_mg޿76֯6ٛ$:(;^C=jPAmċ:#9t̘~޴>i ))df%on$-e*DN0Tǁ&7^gƪ2#3ky{`0#9#ެO/#*|9Pd%LVpcǿXI*(WޒEq# b%EQAiA|vРoCБ|yMuX+/;$#SC-G!"8K~b 7Sz47] 3 [jk}:X$BiΓJ#1-܂_SQ?z\;0\Z,CǕs(ldRaVFѢ%*KM"pt0SK#9K\S#*Gr!k/@bKѻ(ʸoo#3"Bo#3m֞ڐU|Ip<k;xHK==?Xj@@#@B@|CǃߧG ߲i䴮M[q_͇mix΄GҬF#3İh;#wS|z׉4=! U*tMPJ;v[.ǗT>| (#3 |": 3p 1"+X+);cL#9ץ^%d&JSa4CJAϋ_*#9c2FdUT4yowM_F%SQ)@[ 'H 㟒)*J @'ڌFEɶl6jƒlJͥZҩ-$+YQJfUiլk2BE9 ?V}ybE#*` #*s 521(H$._mvϙ* >ɋ+w`E@늣D,跤##*;#*E1%`e; XO'L!ВE`Bg6ǂ!tl`64<%Ű`!3iBY ZfhiO\ &ڒ2ml@:T@#*7#*Ae@< |a+`nX# ,D+(Q,D]NHgGd%JuƘ2@!KƩ#*mlRm4\(VmnjL)P[3-cE}wW}= 7.4H*9 j#}v__1q()F\"oY' z=#*H# T-*' "9q #*,w/#9#3Vn%Q w4E[I҄`ϩ*!#*UL4>Ýq<<;MnT]CCtE[1>nf _bsoC̠fqWp4r!h:+ÉUhE4P#\ooNgEQ4k:ACPClBj6Qrd#9d*[_0GI56D#9#9R&I.??.bwg (#*Ri:>fVΗ΃(a4Bث+ys=D6!y=룘w/9j}<>AU%Ny5ֺ5|~̦AUBMRm#9BЃ?W"H " #*X=E~]4Jkr wM ࿇+ߕnrq;%#*ʣxȾ`UJ%R#9F9kDp`'(;7;}\s5PgF! KRz$DcmM߻՘f]֬z%s e#9(}% n(Y;˘>i#*"ug"A  ,GFɏJ,K)rKw/[8cs(* ·wY4>mi&oqszGKn:v˧cpqF;jt,FCnP(}H'mO9:mG+6#3ץ^댩 7< z A-nu&ڃM 2d|6wf#3ߥw3S(ջ(RnZ-F GFq{xbjnQ^VaL{y,22c@#3 ׷s!9gw1(R~nѶ5vTzݫNYRO0K.VrsD! #PrIkg,wgV#*ᥳƲ:$]6 㪁GCq$&%:"Tb0vvxϫ"g_MhYw^+"0F;4Y,nOmcǡEJ=|7Ȃ! HOS$Ξ?GncnSQ10Ut=2X9Mv$'E:x3nĻ aG95ԑ'"wۥGOT`%wf}eV ., t2{6ȍz= p$dflNABt+W-’˪1D.s43d\G]]Mrh,ԌR5 V* #9(X"!%CKX"8\2Ƥݴd,i1Xa2@3rHئa5Qmi_75pAȣ{#9lԘҳSkGxf?>z[){5֑e#*(H0E!@BHA ;.Cg{ Uwl)iAaLvV 3%6vՠSP#9g|uYV}J)FnIEݗ#3ShL+f@ePOL8#Q-{@S΍ǖAR q#3:"!ԱYTA`hr#9"DR@iKR@(4,)R7i9~S4l`aP#33nN``qP@̌FD$jF=/uŊe$v! wT}{1&wj&7=ܹuk`caF;1P DE7?bWm)c[bfUT& (2$$=Y#9븸O&_'"+j^2X|N60n'z0 3g׋p.;I(D\uӳ+B#3|]˜#ҐS}Iq!$ދF1?^?]p Yԡ*m\KGrAjNP8d#3wE#*sO#3pO!j g#*b:DJnA,MI(rK5PBo%JNR1F@$K dN/s{_>4E[9Uhoz .#94!(.Ef*`7cq$CHd($l\C#3#3vBQBAenQlal&匐dh! F,#*$PchFrj0b^FᝆݻOT"SңJ!,x '>fʅ#3Bm%DXxXd@ Dno^pov,"2|6ws?Ed,}G4 ~I8Z?9k$,ϳ_wkfvm66ugLx;|3X1+3A7j`~y8ЉlQ@DF|= -@0CPzNa֠]! RoN9h#*{:fJIdNM.*(EcA'ș(&K)`6>aETq $! uAr@IlL%4gk{]׉u7@f[H0ڷZj*"K_ƵtBbN~E @Ʃ?˶d0SdD6RD!uU4 <#3M,V^""sFB~(E\`<9SHJXH΄mFDǸj(v (bl!IyTW*А5$N:BXn[GjvR#AƆ-n_8dAmYϧ9,$&ј\#9m#9xa]@xDΕ_BϢҽ2, \͒TRk<Ac&Y#9b0G}C#36)͘z ̍bi9kg]5kyE!G)PfRHΚ0hfUh?o[]iy潥5ck*6JPƵR#9돢,M#3g46p"#9f50 cU{NXEBl6jV@C#9QV#w#F+|o2|wLG=zFmP\aaWsj.H ޽.Q#T<:U:}e$%NG9M(MӾOm-ZtB]#3ڃa$*LhoH9kx\U7ї%e(W ;[dvdu,!*Y8 &6F MrYe0% mZ6#32#9!&,5022l9t#zfpq-)]d'5*)Pv-"J-#3 #3 ]#9 d3+B6]1yWRxnrxVc#9z E/z#loOP@.Su9ria:22N -4+.b$n1>k48#3rϗOf:T#3˔r"i`#zO|PCCSng7l~u}N^=, @`dM ">a9mhS (&1'<4ϗQfXD15BƎ$bhC@BAe̸) J&xsMΜ(#3BPXF 1"!bo "a0^%r.9H{<2McT5.kto&+Ph#ʸYZ*_[ЏkMn#9z%0ң,`0vn$ aplY&Y.r9#m]DG~ĭ`;8Q.XހxY#3#*[hd<&>8E^4]"upߊ/AP|snHe7O ]Q&X,.q aL•!5-׵Wc$ъFRHYRTb6c-2on͵>#3o*ŀ#*&iOY<ʩ =z 0i ;D$}L#3 'G%w|Ā}M\M#*'؟pځ̬guPhaz݂%DjAY#9´" D#"H\(1zN2ھ*+"${nI*"gSqObxq FDX4b-i{ tI-ۅiqBi҉]+{15k.R]i ePӊ#9+G0'ɇ57e$ԱUk|kPK溓ksIDVC):( Q5. l6 "=K{v-$H1䙚&B#*ue~fj<[TwC)14O1W;ͅ'=uqj9Ea$x^vpf3.4E7{D;P|EG!#*2T#*L ^uXKv!RB/6I!GP;+<41uA[gU~a+Oxb6% ܏ts;Ǹ#3ͳ6<@^(*,T̉LԛdyLQ\D4WCD`jJ jo<#3#*6ld*Uar@mJnm'5#38Hf[ɭ$$JPp'ajN![2$3%':N'n&s#3Rdi3t,3|=5UjJKa!"uffasZч1%d!RR3'_H12w^M æ5ݤc\^Jrf<;fH^k* YJP4$ OUFbv(Ⱥki[{P#N/hr]ua}mM{5ēV#z7~U9栙_A:#*2M'G L`xLYӺ؍HM9e'Kp<-A[}u1v#94vL]eS4`iw| A:8+4(w)SX0:a(i̴9dNjREITiEûc _V{OhMYӃ =5c#0rOKl=Eq;5^D X}4eEK؉F҃@Tñ߈/(o^#3x>^w%xo6a 7QfmAnS$1'scQ6lzȱE-bfrkY8הS:w;BڌdΤUnނ%#|OmGJT.6巇.-B~t%&,wm#j;PFvcK.8$F1ۘO#9\ڛhIBgdwr=]^*ɒ&1w#9/Lm5jLigV4BG[:ewZMQf͓CSDЋ#3ٱbB2kfbf.YcDI4u* ,X@8jS mb#9e74VWnusGC*/Qpf"uFFD$$L&X|AfW=Nq~^ȋ'C̕<WΨ~I:a5ffz)J)\x3 .;[4U:[iafD"a:0:oNKCSd[]6s#*L$:Z/ѳUVv:nЄ1fu٭DcXKh7KxH6:b `U>G0)xݤ&.>̖aoh.3Q͖#37p}ՋyyY{lTvYǢ֘ƹNqm>;Ynjή !Ņ;Eڜ;|>oY[&&fPdx61o Mr`;9afcne2a48dGN7xš#i$#3FǜL%+8YǑ]ne1dN.kfλfH奍ͿJ:6We$>u8YU&dG=MQ\@媫0 cVRa騒(4v=7"aN(J0fD {yͩzX*mBp"8i($NV3L##*qFXrm\1&ԯEKӦtWC*(TXkap6ab]ն*<&AKiMx"`Tm)L;ڎ؛fG hPhMRAëӃ";fmK0v=IۃT .AE j0Ґ#9*R@|3+R!Asɲv}D `2I Op<6Y#,ZduHq#39 O|[bhsHlLb0i0bg5 wtV=d9$^3O@ɻ85dцkfa0A&)((3&gJ*jVS-I09Zb)!tKH#3J=Y(00u9W8#3Yl\D#9LSi *s@p7#9p)RfE(+z;)6ʹt`NLc(33љrC(*"!#҃5]N06L>8O#:nuPFjfcNn'[!͎ @:б!Ũ mh2Fvbj`ӗU#3ߊ~@4LbŐ]".kz-8;ÖQAtz殉#9í/V@ѕcwwcy[ePMSGi3P4p" aNa!]HSo*5BE#324I4 (1H#33 `$-,iXlkF ͢gw'\$]#$#jHcf-*XŬ;@D4 #9PB`qԔW:tXgű26D!.4ˆl6YriSLa64da3!vf b#3V9bP(7b$cdf2 NLn:q- #ɕE6!`hF8m\L4cwHsC98qIx6a4Ttf!bp%s3T2KߪŤРp81MT2,i4.f:2j:.܄ظ20C9,ia#*KRX`m6RC,1[sFY͆q$Hs[0ܹWY*RLѓ5fUTP#9H mf@؀q`#3*o0D3,nD~)B##*A&r( y뼫X%":AgX0S W$ #3Z[hx[m @G4@IH;ilMZO>?w}ލه@HoT԰k;ZڒC7D(hWY& "2x/].:YkƾQmEMZQZjjZj,GmrA7Hz8Fosr/Rr>sN/#9]ioY_KqhWFIQ/ $或kƳUNCQs0鴥['̧i6PAZ*A%.Uu*faތ .23p ĜdB9>X<ɜdr9kGѝf- f3mM9LNtDt88kT8& v\4Ktm528SiSk&'m)7\tKxMG(3.^' .ۙ"ӻ#f*}HyNaf]%ЭɴѨZz[NMyC;dN5j|A3>a"BtWOXE#3mC`qfr `͂$"0aĝ clJPEPb,#*Qi~t#*XⲑTXȪRR)p0u@hX26(1$4I$Y@X.#9TGwH"7B%a).G8,hX9"bcY*#QIZٯshvͺ6f:Ven(BYGm/X,r]m\9LjFDbC[u+pخFѠeN pɴD Bb⶯)[2ԒRm6eS6mmeMieVYܯXdb6TZ%ET#3-\f#*4Q쎗6[ ;(u@QK ʂ?8ى0hB'l# OaTB`TG(ca|,1:FC#3?c KCрBf>&߳4PX1m_F~8?-/ΫQs#3` ;z奍b I#3&dc6M'O#tn ԛLP!e@` R-I#**e"6AH6S #9ɔ0`Poh{_-L6!eؼ}Xl,S@ᾖp-"nom.%#*@*ԩ| w"@?,j$׎ow^ ;|#9  #32ƆǗpt?: OEo\0z)@K7G+^&xLn#9Ѧ:`+aIW!T}n$gb0 lN_#6[ $,Us.(D760gM/@VDѾ?86UYTȟ|l!]G$c,d˕$_#9hQLbIY~^[NZ*w>yIDK۵DLomRԖWdƩyJɦإ-FƤS)fdiY)K}k)dݛnM(66Z'(jWuj{N5{SAS*-JkRU@jhƓ*]mƯ~k]U^6ZHam5MIfɩ[2W*&ia T[-zvR1Dgw$Z;&̳]YJ]e,%[\HxMv1j[m,9p1ǜ1kr=7X<9 ,#A|q:pU*^Ќ\^EI4NN>0\Dl2/>s(کŴaUňRLkQ#*,@wLԴXM5mF#*!B{t,ޱHv2NYlҶUkYvZkh(TYk*%P Mvni2R*; {6dfR3UBQIMLɭѥJmC IщFQ$(m-%M#33̦(,F2QM$FIZ4XbJM)L5J2Y#jQ#3ͦd(II&Ra44RʳlcTIVDRdfieX%JRk)m&jkkҳVI mk͕ZXڲmmUj*5(VUiZҥUoh#*N*; 5OHsv~O3xqJC"A؝l+NZ=646cb0{$?ъQ5.C"a#*DĽ;yRhyOGRRWw#*TM p~? 6냅Sjn '`#3~<} g &u4FL'#9$S1<(};5njo#u.Jؘ/0`;AԝD>dE76*7P -ߨ3ۿȄT PU.FƩ)i&+!_c=NC|$M*f>wliI tg)s1{V#QFOabxfXPe`#3J/jPtR6W0ŲiF#*.#*M5T`|Ү=NέZ#ȳ-=l  AdAK5J+z=hi " d^!&yL2cVN %>LsYTb76٬x^BBa':ځ#*Cװ9M}/r8zyo;4u#39x #* j3x4H~E*堳@,PPYf-a,`0iTPț)2~MWZHʠ kKMkMFhX=3S#3#36C=,kCh6 ʹsbkXc*e)զPlE͉D6'hnɜՈ慊T1*ȣ]I $eѕLHkHt_lBaTv#*,]R沏B H#9ŹN5,fހAbVeMTLXBUgr>p|'DZD=p*W'AcsaBHV2#hfo=wKKYKh-"Jpm}C+h,Dp";g '/,Y! i1Էh`/Ww}U%O 'kYikqɹ$hXK8BJM#3QM)#9M 2,Y0n P!+]7[es=+OdAT`$"Ƞ cgyq$P#*P7'#y@"lR!94,ݙcg#9*]ͮa,7#qkrY6JjFt@7 GAnLd7_3~+Vv'۬υ}z#?;^A($k(# f!~Ƅ_3{#9g7z#9i=nr-#9ϋ9AרӨ@a$AL@c2p@ 'd?0PNp:q5E6 sHEp!!"H qRU)QDJ"P h @Ax bPLJ#"Y«*Rz6Bf1 4+K]#93_u94}>P=;UOyԞ䣨9{%)a2_*~{/T1h &hhP&Q@[x׀rdPhf| %6NYxedD"vB1XH.KmWt0~E""vY( H,TU#95-4:f(6b݄ƍ,e@2#9$#*I؅GULCЩKeRniT[kκRʂۻ5Vm嗧DQlJQXLD/CLR55Wo[,ĤDFDBʛASQ; G1Ez#ΝcbMQIW0b"0+,ITRG4#* e`ɖ@29$F2UWŸ#9lOFDX$51Ju#9Rސ3#3ezÒؤa=#*\q읳ʫ8v{6>,@Ԫ @,}649y<$!ybt<>LY\u*lדNW ,#3mvbEJ@ipz8&Wu%`{Rl㷂.@ (mJb9#*?r#*8|=)$ #9E&<b7h{Q-o_zde҅j9D#3z\XJrnaj-4I `fOˁYQY#*Σg4~#9(jcx,T쵥QQlX gNž0LO+F4L # J6HJK3b* !?_s+遨Qn"0X:(;l@,عC;/fJIa:^Q/U[]Ϡ[5xuOHzreS% ?M rr≀a`h]B" j|oW"'p4y2A@ ǰhjis>?ACG#*  匠7/,ΊcpqK5OstWJEkEi$4$pI;9ʢ,XKO.}6yFϞ2DE4ڽf@ZTÏ)It)yCe 's>0#*N+k PyqqŨV4ME$ZYlkaB7oO6#*sY{;w&⩝Yć6a)U˼&.4@M=F{7NtEX!V #'Q(c8NY&Ibi];,-|:nW\i;A$m&IJB#3X11 F!d\UU) &#*` (^hBQ`էu=R 5&?BBe& Ҫ(A#3$ D1JOvGScG24H1C슺`H>>h/:E#wQFizUXqo!ŗiY5C5[kB!9a Ӄ(q 3c)SmȷlPPh#3$8IIBA`#3!IhXpK d'aa[PyL#*Y@:&^*s&>݆[pA 훡3#3u7b!YL#*HEDP4]a 0ӞJ(l66LMJMkA6AGh0{4fvox6p&"_ol$#*F |L#3D)&n^+לn6ҶZƒlkFKY661L5W.P(!`:h}lXN' krJ4SM$$U_&!j2[ SV1׍"0l$FmXܗ{oii担\1cXd#9A l#9dfFJ2 ǦwwhǙ͎3)((DlI) ͹VuLX96E-0#33lDHݵR^#9p6]@TGwnTͲ9PêPnb[1#* 7(x' o/iL&Đb;D\t1SÓİ*oJ([ޟ@j]th#*#9ЯҸeV)Vwuv: jF}X3BZKlL6-&FEeu֩|E^+\j%D gq)?[Obc_)90.lC7rێ%]ೕJB:Of66v1JX/U#G/c|LwL/cBh A)`2AKm#3\[4S0yҁwD=`vP#9."RQU2 8,@YWdҨ#9DY!/Th"!7v^EW#3p I-G,l]6URsh!A udeqR$`i@N#J \A(7>d!QD8#C(}Wˌ"S<Ҝģ>i@{n5LŬZЇWB #*~x?O]X7WztTC_}m#3: HnV,&q4#PbKT8i0#N$[~i.>XHkҙ! jOABX $ zxġDN윚F"SPir2;,V#*#3bFJ#9K4AUZkUlhf^.^]Kun[,bSRZՋl`uSQ @J^cPen9.EIA#dB jD1BkӞ f}djC!`<NS{TjE(]O!i's d(DI'?%8Iv8hC, '{vHhlt!c#*)*0f˓|I;hd3;7(k#3ѳ#7Tip>K"OPhx\ #3Kxh i6b0<`o2,2V1HZX g6.@jp#3O̝($u S$x&{y(8.  Ii6f^B9if] #3~ݍ!2pG%[a"*dvhCbZGhC#90_IA^SQBg媼Cdc;Ih|>cי!M".uݽ[䠥6Z۔|gլGL=?Ql׭6$Aʘ L\9FL@ej+nQݗS䚏#31z`vW,@&(*Ǔ8D@Q<'ъ<9 swF!Dz5:spJfaOnihUzN5fUjјAIL2#9 6L\  Eڂf}p529#9]B@i1Ta\1THf5M]nVλJFԤͱPh]u0&}<8#3&7f0cIB(q R#*2zvIcnMb`0$B%Zb%#p61#3 FOU$?-̄5,`~B2#9@"#3yՍ\ٲZT&Fy"J޺H_.FJUatCPE#9@TV#*#3k, VcT,qƒu<53(0l&SSC)ũ$4be&FSRڹ,͹0o^ӷWi^vݞ/^M*Zj{]{=iMȆTlJPh^ 0gaXD`x7l@5D$mqM1VN\Zi48!h`kUkHlik":qy&؍С MѦ*UE 20c7$Ej"BJ(vrĎXGVJiQVwʰ))*EE!h(bEDZIDJăFC %(, %1#9Eb)45.vY#9in0-$Ii%ehCVc*5Iꠌ1B.q#Q7xcy ndjqڡǔKLMms.#35d/>Ʊ6e5F #3MڙxljE#[ҷ:N`(ڙ#3.#3V}w|K$xjͭ-`pcM"[f71*;aX))y! #3Gxn$O7Bqhv`f=i驴I#.d'Y}\'׎ADV|XWL}2 ,-tɆy cdhU6iu*LJnoY!&sYl=Pc",]Z(Ԛ"X0^/Քet,El6dށ )Eݑwih4(=D(c(3(VݹGtXi#9i8)DT @ƕ 4,T,HF-h4 4 "b 6bK($.3Hf"B;@~,$c7uKhed3SGv#3Ѳ5ץx䢌߮/8J!cO10=h<1}7j2, |= Ƨ'q7пu&qcg1rpFRD'1'c͗48BEID!#Ջ@kIbB(Ȋ207iK D #* H0@$6ʔP2'RG#dR&t*+nWMKWxmu˦nW5;s!˶ZxfFSnqݷwjũ @4%*B5)^ybU^5U6!bX6߃б҄rE%vY*#*Z@4# 1U#9Bi#* WH!H#*"R_-ܴ5xֽD0 B'#3btWKeuf[kRX"zQJUiF,m3EFET[YKAcFZ6J̦ɒmMB6Hƶ^v}7E4G_Q]qR#$*0E\ÆGc/ZK'RBȡKя]hǔ qoNbE!(L726hhU#9O-oY[NκvZۘ)-\:km6WebU^y6n?!nĘrPJ||*S y C#*@#3GBBtFR%FI#*"2#3< *IF㳧 H&h96P$51&=M'=aOOk6ŞX,p\9Q@ީ% f i#aꪏ;V4i0f3}82&#~ H͒9S842[85]&d9&y񬖽K;7BUhĘȞdqq\f[~ѶU8huKEdsA/qaKxPWIBj(!́#*ǒY qYlzT?ެxLU}&eꕵRC؞FQCPANQOIklZS-46#1\I\ rh{:j-ڹU")Ǵ:.H d@:l"![Wbbą#r SUAK1kRkc2yyy5]SD#3 >ҩY01)4ҔpH¥8 l0b+m궷JْQڱ$E"6L4F(#%XEA2##*d83Ƙh3QPFvƵ+CP9m%- Xa#9Q%TBBb@Xn#3رv۶ؐrc1-F|8gD#3s!杯P*oZFW&"UX;#*"x}$ mU:d\#3?>9 Qк0-~{Q{ 8_ /3I:3^'"#GK9}ɓO~X9hSDudlFA2˗#mv>&=]5,ٗP!{B"bL;i#9CglYk[9%! ?P} $BȻ"P)X0RH,{#34sl,@)x@ip׫^ rNI!.Vs~N ڵ5QåX*- SsI '\](Uݶ[L` %`*BQLg,]x"e MTI@S)aھq hͧm,himd;^BRdQRȖDFTZ/YjM(p،%͹\;yv㮺:bwvroMl۫UfXZEmQ[[&)ckSвm&tnݙ\R*.uEj-uf@#*u-K(O\wA܉G F=#*woxxBQ`j #9's,/S՘g{r p}E < ȡ-zG'5#3~ʶydmm#9?Wpsu,AW&0EZͲDB#9ePlm hС-O] ?%;!" D"F*#9{ڊF*5RmbJ#9ZED$G} ЁI!sɮm.ڜK5&y6WSy\04"F2BXq"UjrSFZЌJzWJL4#9{).(F(B0%NH0md^Zdj6R4]+lLQb1 HG:#3ps ~AM&w(8`0bJ!}`6Bu^#9* ,P"H*klMڦڦԑ`տ #TճcMLՍPDNvWy#R;iWdMFkCfkl%&A?H:dm2v-iv{b AN[YGQtm^Ӽ(jI&ԣ~FsYM;ݾzْd`?@25?Ib~zAw,1tj/PD!v KY4-R.#MGФBHN#3nrky ?#3{#y3^`,pД(]@PC !R Y%`Q8?Sl„M7AMjk%׼^mҷ5IW(X&m-Suf3RBWA*0 13eCf,uYhXKE;fR#*c2)x*"2iGTI$L$+Oo`ig#*!tT P@{i<.Zd#94i& B?q`U0Z KJ) (tD*H#3d#3)#CSvߠ'bԲq0 Pca֜:ʉ A!*~5ȰHD+uvb $5A~ֻKڸKRղtwU@#T+!"@*%Tj"كdj BB@NtRYՉҐ0u%3OBsp`FCTB [B9Rh .4J,6tbY [ִ#3jkxK&I#9FWYƦcm!+*ClVû˼U#9#9i|y҇Kʇ]t=wЙ(P6~ce4J*;lPC-7#3) !#9S KS#5d>sϙTn:c5J3Mr3wDșC#3VfZ\)#*c0cFӹOP[{a篿CC#34 Q%Eh&vW9eN̴}$sUOc^ϩ{PCZ*Iݙ$pYT VTKW7䘡YmVЅ9ƇvΘӗ@+77]ήƽ+Ȭ]RmAe!fG3C&40ei5j] uLKrvUzZ(hnޝ8o+LhMO#9x=gO4{֓́[ŕ]} #=2#3w e{[+oaNP4qLn#>һ< o*(KG!Pubގt#38!=dH!?H0AV#3ĂH"ȑR@߼\#*#ã"{+zS!(q;"8ΐ{Ӷ\@>G`[xq :[6G6ǀxe[i4#*AյnbZUsF@R,*~!I9XD` ;TUI? ]S{"NBgŹnZQtәӕgʺ ;R1!2OG[kV6RkE6 A@jpķ[f~|!@o76VmB#*1XH qZfVRE) HG>}T@\?$E#*("Aš@gBdn1?xP81hf}P~x_Oy#3|QA_MBg)55av_tkKNq5gv*cϕVW I%k-#9HW1g~Kڊ"s oo22A'2&2 {0UfR کeV6z#o#3?<'BTRBلt#*5.%#3]<,zoXʪq:o#*STn~[5#*-ci>碪l\TAp|mqi#9A7 5! PT~]VG2RdSّפw2UC0\E`,#99n-rϏ]3I1S % (ȣDLU U#9Q2ҘB*4a(!c?F]L(up_ bBY1#?#3_2niNW5wOZTk6d,m)Zzt`guo`GtXq -E ʚV*,m_g|פ?/#*FeRDQ 4PJmQєb#JTB&ʑPTET'./<`HwzlI#/΍}Y[ͮKq Na6"Ƣ3bF&F@8$jBa~KW)@4*T}^YcLTB"U:J|rLuCmL_mtjrrz9d9pbj6]A01ӾYp <~'wbӕMi93>i kzV6\r$B,gT;=$#9| $#3ؕLd3su6zگ7aoI6#*ؑ#3Rk$#*r#*Zgu -WkKpAc,r$M#*F#3VlTCB jR+ %aKP(#9x)[R PI*Da#934jm3k2 NAF#*Dg.{㭢ivfP2}SH"a8=Mu#3ƶ'dȬTa0ds"=0/SO<YciXe@„#9D3rz#U%!\"oc6H [y![Hm<^lQl8iF4"oUԁY `BIw6Quxy$DGOF*1,EI& hUTF8LX-4QOlxFkM` "PieCbzp(UZN*vaeuTК uH amv"6#9E)e#3-hf5 i##«5hVlΏ,swұD`E\U.($MI)M:m2[Y,A٢Nl^ra7m7R;#UBI@xMa]򲏎EaVmf.]A `lIj#3kf,F4mE1fጒ.kRPn rnbZ@<(ӄ}2 #9#3/)Tp`V81`KV*#*ʆ&X\@ lh&bf)i5!bZ(ܐDsaQ'x^J*Nj\32*Pɑ*ȡM3dUH’1. PIhU4"1Aƍ$TPl+lU70mUDK Aء) v2YR(.3D0iCP:'~ 3dY~5zN#9fMgFSE Aj+#3<14PQ'Fh5x#9J>fUٵrr}N%n$1Ԇ2#9 T{% V1k9cS\'& McV`DM1#3R qbrî44hf)W ar#9J6(@K `#9@脱%(Ȭo i+ua#*IAG"R?ĻxpݼO]12mw޸GtM[o}U(j6ͦhLƵtȶ6=RL/A )_ &QDb-DD$86>m#*.ޯd!~M@Z:'wmUF֒mF1X Q(Hr{9"{T)vBsu볌 4,ࢂ0'absQ\]i `2;#9#9&,4]"{k˥HBC=*B UAchv@bƒ056b1`Oإua75ݘCd`T"T Z4c60L6fF,MK5^4Gf򷆷 tR`6vRcpdY~@H~-vbŦ/ߝf'r}NX@x#3MI #3p`1J*,~WZkgFB#oN#3&} W5T%Qa?6HLl,d$BkmAx .^߷xkslk&[٭n]Ukbرnmt6[\KrrӻٮEFFьQQ\Yݭ "NY/{Y L#g{M2!c>&#*W"-"|U튫g>"T`ƫhiz]D@>_x D3tfO%L+D66&${YM ,) T2#3JV#* KcO`#3 #* "( " X66 J*U#9\Ļq EE* H*4-U%ج2ci&V5YK6VE<%h; :5Hz1j3s#9*G+}qf-M!jvEJ^TT_ _#*$H1"$*ܛ[fNï2:zN#*ACtE$H(U#9f$ FZ4hmIFT&II+Xj5lVm-+L-dd %=ۑ :d,*AHpl#ʲq9z^guWq؍0.5QD%DJ$+!&#916 cH D*FтC!DF$ƈ(hAE@ ]E$DZC0 ~p#R̩˧uiӻ1ph/T[D#9#*EX5*PQ"0X`!0:vݟUisE)^I R AOFv̙B>)}ËL)aqUU OxM-ȓe0#@1*!H8>˺{kBD#35s쪵#3A6=;TiL$NbۦITfwFkZ\W]zJ}~UC#*^KC"̑$ud}{d^A(V-#w$µQ߈kIK4Eu*5.jMێ#-yɥEt԰bF2VJk<;ys c'[+#3,{8 .#3g hpt;?Mϋ pP#ͪ!s.#{KMe _C{TQ7[H0r^|}Jjo|:q]?EJq^9d#3WRnIA#9lEPG-⛲ T-?\u3,ݞ]l^7/lx_n3$"QNv޹C탁h#3de3~%ͣ[VOpWq}&71l2a$3F-Mo'#ي#\4ΎԪN)nhfUbURiyʪ-g.$PtcZbi$n DŽrmL1:,7F8ʓlN6!Z8JȘzFgɖgn-QZڢ֢)ٷmvl9w[j#9w9ZQsr`x#39IƟD$Xֳ&9D$3P?Fqqi9 8cm)uUw:幩QjPwH֌"vw|&6[+>/9WWqՖfzxutY[{gs6 xpxqwb,&mB6v3Ƭbdel1s\7#3 a{NF(Ga̱&u%N=xrO]28r֣#3qJPlcfqQ>!Jf y.zUb0@F+P(y%[pa;:6c86ySɎ|L(ԡELӿㅂR#kZ&@d@r `#*5Y<%oVffE.)-B hAvc~%˓77EkPiGQ ڲIm,E:2#X{#3{#~gO"h"^Hu޽Űt!Q#9yh-J$vqV Ul6^=0#99qCjDNިDb;dpt>[b-_X~v伫Q#!f3["#3#3j}hͧQJ3 +IZ6[f hбƐ@xNȵVpTJXUKE#9tF#*kmZ+[lf;3)DQ#3iցQ2ƔTE#92(# x9_L͇;[\q,ơx.]3s*H+#7ѾHzW^*]#*QOTE$6@`(km:nik\|3_e%?3jrr4=t7rjWfG!En)dĆ\$j<1#3ܸ1Lԭ&c2ԦZ:YMiMkT7 eǒu֬zqsVdbCȅ548/%`m5f$Β59;7hiF1xlT(DawVT I8Ƙяv2mϪ{`")4H}&.wc8#3lbSvUQ&IˑDYJ doPOWeӜflNϩC_b#zBH7 j{|;x%Hg&rk6<-?lʩ\\goszz0UhiQTfy痮rZH=@r;$ y#35.U0?/__y$B4Un8s!L}=DL4b(aXUatN[[zs{Ͼ0/Ux5k9,iT=+#*}IhE&&jZ}#3Z崨ԡIыXjmexR#9U#K=~&r}^."T$ ()Hx,y .B}H֟vjWE֢ jH&"(ك&h=4, @FDLz m/>I-C4K*#9a\dQJk~6z)7LbDo[l<1wyPĊP&FEbvѻ,{Ud{e&%ݡQX#*K%mkvE&bk\Lߋ59 l،~bHjfxlДa$;,ѿ^◩AϻC_F?.>'ȹBNȓ@7'Pپ#3"E$d%v(x|:lO dg~.Uo[52UQJm]B-M2QcR BF k܉f"(Y!(p#9CY#9HK׹2en޳koj-ֺ{G3Ћ:lW@Tv}iԝV(>Eu`n EY̻׳iێ]? 4=)8.Shm 0HYd•Q*Ne]{9/gΰyށ~qNp[ȾNɱsU9喅#R BpwʤІ ?Z7Ot[~TQ *L^ľDh]*~/1b = ]"4Rb!:ݕ5Ag#ߡlyxk# _f# }_~pkc֚2@2)J) 97d<>#3Xp;IbK~%د-CVߗбG$&%➠}Tgg٬ڝ1,P,`YHmĔ4m͢8!N ?Xem)biNUcnF|p%g:$8)`&P5CHfo.]p5r%m#38 6g% #3#*m@8 nw?<ꙙ2wvҥ5BY e jz ;P܂C1>d\4f>GN=#9"*D`J#3C!Qc V(m5l*@Ke%blFR> 4H3 iB2`l  fɶ*D@E#%qާf4 pE #9b0:ŝu&0̔Q>~Pglg}Hg雇lѓ!h]d&EYWZL-$TLOF^Wum'exl뛪vJ ^z~љY'ǻK!6EtIvkbRc o~hZ3Ĥj axuGz҅"jQ %VLREL#*Qm(qECE2$֢QJœD[Xb'(+Xy!Z&'X3P:ݖ$>*ؚGRA:ꘉRpcG$)^kTb0nU#8ebe3 9 !&ZJN>,}%;!HC;"Ƣ3m&X ݶi`.G"j``F%,Fә `]Y\#cCI=C6@Oo]6.[dɈm*ܡg0ڛLi ;Kܺ{՗[9[m0Zyk.eFVzaclLçq! Ǚ͋Emo |k3Huy}[eZog3 )I $:&}z̡Bojtqv'#3t닖9X7I4:MK'R%sj8rT5[efFʈΡL@Ő#3|9֭Nb/D'eRt]˂ߊ뜢C}F&!@#96t̓sYs=85˦.˙`qh7N&26T vSb$#gKit͑E[8"Յ0/0Fbthf b6P,E*0Ul@ٚܠ* "#3PU r:wfv`BBNF##3n9-l1K "ed3ҜQ49&7f灍u{k&/٥T!{l rbs-\hb|;^/9GNI0}ii6j#9fÊ.hg.@lw<6'ˬŽW@vBݳL_{N6`bhhSpňәeo-#98IhGuЩ8kKϽzaQ#3O.0 alD26|}=#*Z(}v/HĻm"#*Wp0P-4AP=vDn'з.$ʑ8r2"diZd[Jh"$M2d폹0|r~miGR!DNq+#96 T}W۝xnhq .ɈR@ J|=O0A=x䐁@OYhлlz̟(q&1тe FzLaI[vsP΍o437Y#"Hu7[dž=T`UW]~GJ?Ck&6*Dj5RVPĖOZJTVk&ZV꭫SRns!PKы*E[$T.B\0Tn%RzWr/+"#9ɻeB%QJi3ڀ{k8z\nȣD@Y`0&Ow{ýSp3@b#*HȨ2#9N[4O.Tqٟ*8۵Ѣ񓉪x.+Z-(ʌ_PV l"kwW5%(z dAdz@XBJi`UAC]I{%6>Y=)/zOR#99x]o'T ZM*Y,S,AU6 XM"eQU^O&^\tʱc22NՁy'8Uӑx#êp&y\m'W_XLpѐID] ]>!#3<9u6DOppp̊t"Rg4̂If,ё5l0/PYDXN&2F$HB&+|)iZ5ECóDm-sK0ݸp$Ieݙț(5p0F Z,ptF#3ABiD|U{HlU&35#h"(1yODTJBi"uCu&-#9A#3i%6"Y%p3*ZWw*p|Tȃ`-VL TkAZbZa2?S.ɌJ,L`AqȊB>_%^-޳ ҁ]J]@W#9,Bd{@Xć<ۄ; J$p0pο#3æ X拗p Cw_/~kZ1#* q盧fPSkއ#*~#3FiX#9E@u#9鯢7nzuQ72$ ̏Qe]06F?ck7bJ)5(y7s\#96JUn"Y++-6ݵ5DZE6y-w E_A_my%fl$2i4*/Mq0wxx( QY-MѴmE1!=R|26P $XJFѤ)fJ}~Q[iF1j6VR[jJY%L05%qd\aO" qMW}BFD@Zn1Mak-b#T%DxmRmU!#*^܅g|{ϣ%ݝ_#*kqJ2{yNژTrQ'H #*zaC8 5G]YaS-IqУ#3hdd;Gibz2`Ld*u`D%@ޭ}#9Q$&#ђ#*TOr@$ PQkv)mItmTiP"BJJX4 H665L#9#*Ք#9mrT™ #*IeeկG]!|-/nC#3a, - ~ Uk谠9@}ȡ.8jW_f07{wG8oENnzX/DvŹb#9XɶI;tإ4Ҥ1QTl)hߑCWXh`dTQ'O}$#l$ ZČ'[tO.(bdE46(,T[>wm,+ eUfbʱmF5(Ub6a F<8ɿ+s_,%|]-VY) !ˆ$&}I(a#*QyP|1񶼚fn$ڒƩ!F)/ԝ7BEZGY)elT #bbsc0@4#9 &Ϋ4M*[1D1D*DY-n3vfUv$Ev54J]m&ʒ"`#3#9D9)V8mF*65Fa"oo.")UMI-%XИ6je-yvE2]4A#{7Vlz`!I`A-2i#3l^uU ,X_2ȨPL(#*@ydmGi[FjV}2 /|1vH (lw*״u@e]\<%Cf;" &zX3]95K wk<DfBvL&;j9}#gk##3wrɈ^2W\; > EW(g7ש1\VMN1USp">9ڬ2_GAW#ZOJ˺Rzk{lI$#*.\H17!dI&yɫB$-S2Lf_#9zTqT7y&5"gta7VC@1>^#,iy< B=OQ8yM#3h-ZNQHXG`iɐ3=&@!v!F(3⚝YWiPdb貔۩DTbX#*'Q/lŜEt~ fwr'WwN6iu4>sꇢI1XXm6u:;պ#9%`s̪zkj'IrDVv+VmAn 2U 09$ʄq}~Em\#pu~)h5BN&>ro57#DF)A{M ز$CQhsWwvV} Icо/zV`"ωˏHْl?1`afyj ‘-t<#3 M:8kP&d$4kFf0d1D<)':n^-!+rP:~#*0WߔBЀ\O`YT6So]#*#,#*#0>7u?ǧJ3hE/ J>ƘՃLAW;x?/>??~Wv|ǿb?G_;Wg/?^|?@GT0##12ȞlC!ͫyH yp`J_s1P ABJaa0xùI I>T+h#*k;/EPC8;c"QY5xql(\8nLM͐7ے/gȿeGn⷇:j d|wjf#*s2k.\ĥ[#*(@A%7eCEP1 d:-**!$ = {6/ݳ>$ј:y|4}^v ,F*0 A:^"V;j0IԤLm Dж#94V$H35]uW@==Z<#*/Ti)lRe'C(#3ʔ:GوiWFrIP9f?D25ǻK*ABhQ?=$heiNe6Hdӆm迅#3|(4gF9vjoA)*0LceCOMdq."|-9g-]2%1 D6Ga!ZW9\ŭ҅t44lsV=ZX)5[}챯Am5lm+Um(oSF&Š^r{|:Ϊv m唰qp71Fgd7NOnNN"#'@xǹme#Rx.1&%ǕIGP _#9^4@$fR珗;NhGc \T=*|#*`( @"ڎ[n\٪-,fK{ok[_DH w٩?hb0=3Q2ˠm-8@d4VOk:,'ؑG7k dIV{ )"/(z.5La?l'M QhTPw>?gԿ_1v]igtt)͇{n8A=e<Ð1/s[)@G;WaNIC٩7aS p<3 R+R?wY"ScعBĎ{Dx|@{RA((Et'DS8&5\.2`þGv;hVV?7n<#DZAxm6x_H8ExRå .BPN1`#KCE.PZQ9h+i o5L{y*s< V1$AxmrTPSڗO Ou_ȬF/Y ?"(H&#* +#BZh91AY&SY܋HP},Ƭ#200ebV{#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2#2׍Q{=hMOrw4fgTO/h]ZVO [X4>|lM<{T:of{]@b 7ozꮀg|9}9绽ës[Y#2}ww^n|G{ET}a{ok]ө{d3n&&ڷ4>Cvns.۷|#f6uѧ_ns;׫nNrvGu^7ιOlO{p4ne,=^^w6.wc)#2@&HQ#[!]`3n_E/sz)]75dvZ:uu]ΪlVix#2#2wQ#2*{sX{َ)آG9Ǜqb}g]Aڙnt5zz}y#2$zanfucjsvpz0:}=d6^}gO[ٞnv͆Cg|]9=s^y_dمl#E(V.Oz6[@8gK˦4*}ڸﻟ}#2;tݺZ#E*p6{]#[=m^3N7빰租UZrPzt==4't݈RvθwԞ 9]{|#2ac @DZ|4#2@ #2 #2#24D#2FOM@zCM4PjzS@ ! A2 CS&G&&1hh#2#2#2#2#2#2H 44ЙG钣4iiOQ#[im=h#2#2#2#2#2#2$JHjijOM50 SLSOP4iF=@#2#2#2#2#2$ #2#2#A0@h#E5=<@d A24MDA#2 2dȧ2hTbSeOS4#2#2#2#2#2rmwJGusmQWwkh̓>:HSTjʳ=[j6#X/|,gjʋ /|>s9Mc)j%ZGi#[ eے]ukoxۻkƹm׋+~<NjL$8Ի˼đ.V8J*pzsJ(­WDq$gO&-fJ+UvvL1Եoj7+\b" 4PI(C,"EtaaȀ#-HR=R`ALU1-*Z5E^ݵw#E#[ H$`YLZ 4֌Ril F %lLʄK#2J)maeKd5A0#Efɦ"b6HIQCiEE-Q$K+) IAe6H`1e3H6h&I- "f#%aiec)MM-Z*3X2 &6KI55R3d-&dHЕRe&34XFȖ6CP44I((X2#45)(؄!A"$,@#$!X!fhd"$aLMj231"JEej1ƉYHdbM RdSL%&M#E1"5%Fh3#[Q$D̒m$$`I ؉1M)mIBLeahII"KIE$DIB)ɂ("aIIc3I)5eI&($BZSd LleE"̒("b&ZQ$#JPlŋdLM &ɋER#Sd$fFhBIRKJ2m!)*e&1%K1F,L&H#[(јLPƠ#)Li# LPF2fQMc#["a#Kf,)*6iEF$$cc54Lcb4͓3%Da+#$l54"`QCSF#E51F#R2SDHlɑJeI#[X,LI&4"E#E#`LF0LiD#EIJ1fCfD%)(&jiebKI$# 6j JD2YeRXijSJM3ZPД̤ l`LhҘ0̙kh2LH)&djSl#[YRiBYRmL-1 b&)J"f&lXk7vf)Qda*iZm6Dm464ڕQeS(͢Y,mRAid#E0QjKTaFf2YM*HF3[%hiE&D-l&L6eZEEM"TdU6i*aMMfUQbȍledJe6UE M2ƪF,)QcDU!j06TRmQXbKdѵ[(,Q4M$m-حF-Q4f4J)FB$Ҵڈ4m15REQd&S5-d&ĄJZF,ԫ*RSe53eL6U,6[I$Yaaͤ-a 0Ih$hbRDTBTb2Ii+3@j+$E4QR16XSe hYd2E1)K#[EM2BE#6I#&)DąhĐdŢ,F#E E$Df4Ym2,i1f)Bj-"3j1F̤35"VKI,(%#[2Z(#[) Ě4e6e%*f &H,dD1٭*5)i5Dj@%16$*L$&k LTRji,m0DJ2Zdk"4г1)a1( *M#b5M Fl%EFUa’$i$Q&6#EeBD*2$JmƴmDMQAXm&0 MiDj5EF4QF"ْZ"1b1b2VRUř"ɤfP(3%`Ģ&m5V#E25JS4+E&KYRJR1jI! ldQY$1d5!3!j4m1R[$Z!M%54mI66LQFKPd+,Z+DV6i-R hLdfFcMHFl+F,mdeЕ mDTQ$mQLiQmE1f&3Mhm4lJԢT#4#[ZP4hD6KPk2ԕdڔISLV2cbmU*)*Q`!(ئ5L(cl[b5mֲT[)dSSl&4eDhIEPjJ3eb4 TF$)&DmIZ"|ܟWYiq,0閭J2,?Їye:b.!4%X(l0fD6O,:(|15žl{L*P <#[lZ/u \(4ZQB^?~YFrܝ5gjhM_JpfRfV:cFםwЇΜs_ٻ['?I,xڹQ#[X'mQgFѡ>IXBS#[f' e;6j4^.5E,DqKS\.YUPN0UIYC"Ҫ`K謼кTfõ&EcDETP1PXqNthxEڹ`E,8+u\,bźoM&Ω`h V>;|0zQ#EPJ^XNacXE`(#l*ڐ% ;b"h/i^\-m"RklZ5#[4j 袖(DAgHFcxûccQRmIh%.{/>O=Kd]+8uX "1Y$A?[vPاv|{RJ罗"SZ`8i(bi$2݁ʎU ﺖ"Vwլ*Х5œzY`ńQ )#E-6iU%;N%]MZMj˷|!#[#[@2(YU"N#[(~X\:!(zÈ:*}I+U"t##E.*pBUOSe(+;zÉH7͇T ]'QҡS n ?>xTC9k,5ӳ5rã,2ɞ6\@PRffF~Ox4P^bڼ4T_W:K<<13 6$ X]:Qj3tsM̼1FJ2P3T͒lYۭlτ&1mHmY~9n!BiP]~kfz/\TDN 5auljx6XsY(}SC./̍~:HTႰԦ;'xo^֫WF&؜p#ekrab=!9n;Ez[{6y9Ժ5$7CwJH1֛@83F?,bw W)DJ* Y!(.7'B4ߗ#[{AqkFoH |Cka !Cƶѯ(`q6>uXƬcȶ_f~pg0֧mz# !Mź_}Wg' VB] lP:`_cB#[:WrݟCqHf\)n_BRI&|o[OxkhE_c[y'FH(56/зm8{V=f{1A}[2H?ãw .G sHaުL/ƺ(?5L`.A-kc [avT S.A8Uf5ώY:6? Jj+{Uy6dY?s`ꚎO*ms%ltӿ;EEqQQx[1H4龜-}[1GO7~\f4ES`i=غ4x2/fH?#2rO&r2Om}P&dFiv>&Z:wæp#b)Lv_4$m;E)UN| x򹇓;./z- ӍiDQQe5a-FC#E((ꝚV!ԙ/g$&lwkV*s"1A>kAVG梳m/;<{E%#[Gq-2"#@Qh ̊5}5W65[5fC-88;J!jۥklX8woȲ31ҡ%MN0kP0Ő:!tx1KR] :YQ/"Qn5 Eu6쒈msNM";YFh5sr dkr)WZ|PvX@HהŸ՘momգ|K>rC{x2.+6o~U0$ݻKlۿ,(~^]$W9(Xhʇ{ԇV7VE8mȥս kWYK\Z7IIw,P֜9tC,b`qǟ*Kewv*e Unǿ鮬NpsfJ+Z=ҸSW rFs1^n< փ"kh6OMdGU .Kd0>!;+ P)˯]#[12Fw.3k1sUQD́ÿAr>~eho3ߪ0p$Cc ̨~8Pj'5":X@ @`[RsxE.::/>ƬF֘4s>wWxzؒ|%I$&GCdՐ2O{c>؂)&Bψ֓x#2 ѹR#2H@m}>#E.V}pمtڂY:zq&~w~UFF`H_g^&f(ҧտ"̲cEMvv(M$Q֙{h9=m/XGVέVgWT$3Yc0k;c#NMZSmwj8ީ7OZ!w|R貎]^(5$@5*(E+dX(#[b)!,gn#[W݀ߜES0lz)~ht=WQtLs|v>V1jѡkL#Wq*3>۵M.xf lr Kfm"go,br?\J1k~KV_%S}LLa˵$8}J>8 $.9. /q])qe\G_7C8t㰭q~:>xc@KMFMƥPxV\sK*ҸX#E#ESφj:wWj4.w|Sm,8q hU ;;ﴒoh-6Z\.UrMp#[TJm=2ӺpS&q@vl3iP%!˿fHt _]jUCQ\O5ϩ4z ~(w,3)=o~3&\_kĥR "#2,mr4U|){0>y~6[FMbv\>\ZE#E#H rٳ;g+[FW}]AO4. /LFncDt6 yg;bf(jlzwܾ;q+2Us:Qb:JسVUUJb)aBY|ZJ ?j;APz.#2!gGkRQX(SE D`|ѝs6@j@DQwyLmã>,Wω$f76.ʣ#2ƁIuc1@M㮢pX#[} o䣦p͚Dx4#'Jr'duvZ9_1X9^ONޞ0: wGۆ'b4)v-^uktպ/ zO}}K/8~O7]eZ0/p~`_}ɬoW Lvj,sn=fO8L]V rPןD%Sm@drYz-V)@)DȌߚ# Jg\-#2CbC `,9ȯuR@y*Vԯt:luUL8.@V۲𑑲ttKBF%a-?䯒#HNr+M<<80p !GgBF0졐rbu0(m 52Jk?OsySo҂ƸI]D$I {#>=+r˪`#EuGQlyGU)PK6cXt4 -H%ꐳɷ Mѯt?w&W0'UQP0wڃZ׏yN߻so# FCW(LoBuRB-M4D #E}+Y ւ"#2#[;?~#2i^kdBYxouwy%3喅G*v30Oz}ŵ۳of;#[7kߧ,_][ClmBL0PD*yRJ(Ȣ$03a#2c.ӠusD#ma#Ed|pY v`P[l#E5GsJ>u "vK 0΍#E~~ik"^/Ƶ 61 A!0t\lK1:m+WP\_?\#)1?<S$#EQWd#;:~>N\e;v:Pc#ECKT^FHL v?9\ѵ/P#2Ku Fq_޼=ϯcHl:\3pO~l/#~>|#Eh3sGԻ3;%_#:Cg1?el.Mm8*Th͊x'/H mv&FfzFߎf_.CEXȑuq ^%^Njjl@TƾG-6/I׏N3ŖO?` X#v΋f1-!Z\X.W?E9>F;9vm E[#[*+#E!#EuA'^nd#E4VQmY֓axy4FfbUPV4k%"2#L|`"b9} #[8aL^3g &g1:0חe=q (\*#ET,43U]'*L<#ӡ=a bCIJz#La:.X;3;T˝,PU[ה|uڙZ{,..H9ea@t̳yj\Q~@~̈́#2$Z|5aa vx mESaLc-c#޸Bg;:ܤ$XѩN^eCCGқ3ѽ2 I[Wb)a}q'MOO^mkx9DIN@<~ql&-d˃ߎ,02+M҂nhJHg{Sm]z潆h#0oɓ#EfL';~k mhJz3,PA#0N[5UdK-RzNaɝQ_Hb4"zVwc~&#ED&`%aYGGC7vWQj5E5nJh#Eԫ,abHUy>oK3Ȱ:tԄ_<~#[=F"%4LFZtU])6^Muc/gFP ۉaj=7)8oq%/>LcF#E0TztJ,]PA#%VDh\༄&/ө1$}kp/U`_PO#2,*b#EsRdnA{oPў8+vVl5 eb(_spKcl h/uuXF2D*H MFŕf1)[ XS R1SQ1CJ .W3#[XcAvA\tyAtȷ_LlxˋBLF1#[,"vNӸv5Q]YyݧH)1Iר@wis#nrsWx<^8wTvgkM]e$=OYŵ"`,j%|HU{[m.hQgjTa{ˆ@?:X0Ʊm (,[UJ[hŠQx-@Be/KoMx#EץI]k5#2f"͘=F<1K|abe7$,F2zuay_2*Pz1&S%EYbњЭ֨Cdn"gOM槽^j1}1;|v9Dnjo+Ӊ,8.ln#5H6hLu .XȆ77ptb#[ēY(C.p949BöB(y1/qP3y 4|Y^w=)HH╎\ĵdW4s7Hew|#Eӯm5.+ۑѺɷՅ>%`#tfHC acb@RxΤ-T,hAyӡeCD#21\!iyHsml#2Oqs#Eyb#2+6y6(Kv.wu1#FwnۖJʿut|ÿM4usTy!P XʅUPe"*TDkۡ4&#EeH+QU_WW|^]GxkDO.#EKJfT1D6x#,ofLcˇ 5/YccB.8P)"S"o*$#[x!1Bu:#E[q̋6fJ;b7em|w!?gܕ'y#Ӵ1JևNw+h9)i5Y=] ^u?כHLBW9ӟ3zfb/V18`$DfeZ`an:&eC!R;[#E֘Ι 4ͺB#[2J`@D(mzcjߪj4,Mh&׻o6+٢.c+cuR 'RS- *B `<^=iw$ pjdy Op,@b ILռ/oׇXc>:3!NA.sy/s?}qf|S#2{=>qd!9ż\4#[?/s([%"6}sgyzwQϽ9ؓKQ$,S#EO<1O#2K#[En˹=ッm(#eE̩NxS6Ν>w~p./%jA"ҽknW)hWm}l1󃑄 hE sB/r[GS+1Piʡ:.Sp;S)s aWpmZI$ #/^#E|][U, _<{p샣,@w-tqg?&6]^#[R';!~Xy>[4^ ;!p#j ]ulp B<&#2Oǚg[)t]$T'f(=ЙoU SQejRD4Y1@EiuH4|d_՟w(2a#[W+*}`E^YM_PԵd/lzₒ;?/ڲI?̂kgi,<=_W {z~J>^<}a~8:{$jl?,}B"¡EvLڒɢL@fʖ%8MlUEɪSDHnT}aH"c7:i|($6I=?wo7W]kD&)0(Cˈ喃%4 L1(p}wsFh"uM\ C>R7˽~AY wP>;ÁOX(ۂ05k9knmO?PDx2**He[jr#[$}LV%R뎌i5Ͱ+N ;zۑZ?vڒʩ[ m4ƝKsRƏ]ZK`Jԛ]Kۿ⏛&h(U=e\N$MSqzCums}ullH`e7I!U#EchKQXXJ}Mrx2=(T(` riaEE ׳#[2Zfd9xem$1c>~&*{Q>#["CalEa P#[A #[DRhm#[^Ϛ_`luy~oo֬GwQK4q%?OS\mzXb vo;Yii}X)Uǥ ;HO没P?PlN 8G^UJ` 4!NҚ4}̃DM]rqI}i`P~Nׄ4M܏O?|a =SG'ѿƊ4 fFCY26QEt_]wvx93>"9MMG* S1 JXTAUbzs(6oĒP<Ԡ:"w(dyX]fMSSּxwX>op$I7\k=_CHeܡXflzA!L#[dP>acQF4bA@mjEPM_qV 6 \&8K㻠}θ=ޮ}?]~}' qX2?Yz<gؖ|~m<ʣzFN _FbѺzOܳ#rw^%w|~Kħpn>Yݘ=5~[ڥ|wI';4y۷7;vlZ>o)8;юs;7\£vN~>:/>C Z6Q1Bb\b#EysUsO9QuIܞ<Î=nn;"^Vl廑ۯ;C¡1ds_1vl7>Rdxz#2zwXOg"anۻz#B| vbsGR g/}ǭf#MwcZHh12+gCһTv}}gha?gtفv#Ef>#EF?H˲O[߁wp"TF9NMSRVtN_{Q;J V8.o}=UA<8O~r:_3s#2m#2is$;;y?+ɒGv4QJ%Ъf壈rv$\=3$!Kܩ:-@DCM#E{dm:^Wry|W65ܗnF;Iױ͇E'c!IOdb.}]99+ϖRw~oM@7 7Iz^ÄyؒU?٥GY*bGuTA쒞Q|qz#2去cY|u~|/#`ydOZ,̹,0!1#EAȑFdAJbqx&(vh1 UiAQQ:Si68kMjD +HR#[kd0!XjlYYc'Ý;V &bTMFf&#ohW}*2N?wK-~;Yhfq[w]ZO!uN#[&$/[^0D[%v?Mw|ǁ#c F6,# f¾僻>3#2#2P,[2FfFDa`֗} IAb¥*26B40TUPT!( #2SݽuS;%v?+ֆчh.8`VU 8xja2s5;/sG͕뮭_N/ *>h~:~A)v~Lnk>| ? lw[~oA\We,0OdsP96GC^;a $av6?oٳNWyF Z[p9Vӧ)慛se|,$uwr8g]'5_WE=X*kR.~~~=|&r&s;- q2I|AEnӁ"M6Vz" U´[J-B:ゔ,JhQ< 1#EV4M QF&#T %TH#֡SӑDA6(VNiB@xU-p Li@e^0b:h-2TQ e e+4"dì7VbaV'vkj=J༓:tcoSwsEE]'5c""'No"U87-V-YipuKzs``K[X aĐ\S|1#>\R8@x۬P5о)s.TK2[֣F[@&$byw !NCCהj#8;q/vKzwI$"PG(cTRvRTHW43PiTR ̦H\S]y$$%ׯOy9#3#2DF>a(1*2#ER/\mFHG#[5 .ʹKі)YQK||{_0C*ww|ɠ ,``g\Xz2"cE뢴#[MɆ##D1TD|$T\P\+c0#ES릘7}UqƠՑAF4#NfhUw-F&QZ#2!{lDbk*FcTZ2}- r9p()Ne0#Ej5bLjf$dg9[bZSo֙\3+e-c2l?l(Ո#[&i.6B41@rƢln#N\ &e[C`2`.Bl˶1G2Q/-0wccWPmhǕF ;.D>t:wf<F`liZm~Gۮ/$cMPv~<_mw,QI[bT<(!c,ƛ y_ge703oPT+s 4۾|]Hi}':;nm~l) #[vcљ#2f F,XZUT4~c5DnGHҌiO| Y%ө Hȑ#u4CߪƫzV745LrHwq#Ela#[2T(qPGcE{/F04RhDŀL03 +kB!S/]M$<(-,׭H`~;?Ayqz|iF0EC78r-1 t[풄[v7ec˙`!I`8#EБWZa A oTe'hWEՐfRr7x;G#ccGR4yUE#Pm]B#EԈmଁk;o3~`isZÂQ„",S*Ip#E#Zc_H! #2PuD}N[UYo" M\шThGbG|5w.IFXKL4' dDօ#h&>h4Bb8ijF5Gs}M`rBy[`n0tE&Y#j+20f% ﹨[=U&240O04OK"vs5M cL >y9?_VdL-ۻzA!l?"{ְhz=F) ]mᶫƀO|`/#[!-ҳf&_C5-ƫ:}llc.";nfЅUL"g87#E =W#אM@of{񬰱7:XĐ;"Q@uBƮvR () 9f=cqڭtV=,9)69j#E)g#[5xoPNZ"-Dƴd"3SDP87Iq*#2LylOTf՝4#EݘF<ƨÆbnd|f3q2!Cpc(437ܦ^nюѭn:My5.ߗ8|2;I'5$%MfACx幻S8\A%g̙̈!9ʍ(|7#Et>rN\5#[#GV]Wk"wT%QvtwDydw#[6#[9c\&2]qqh5#EٌHmE|HX뫣NLyX-jv=.Xda9ɍhTr3}\sJ) n%h`XVC69vdr Z@" 6f19X؞}Ι֐8g5j:U cZN~K1IO:ۢ+JaX2E#[KЖSl#Q)SU#E%2$sw(2~T|?OUNjq a197=𝯲|(S!>vZp"6S(k I6QnB@aNuc9'^3$ޥtb^l#[Dyǫ `M06:U+3xPqEц=]z 5{_\#E)L#[?WZUyhz{zi74HFM{#"/ҭh܇s#g43bJKӭAE9McVrp5ĝF1̪]p{ uz+^]y1 k6j{\~ ?Oe>Z8Z`ޯ-u'4DEr@EK}j'zKFrq+mlO62 2‹iƴ$p#2 mHfνnvP| @xs#2%Wa>yO/ڷe{1#[3b['(d1#[{Z׾ Np牢.Wk #2aly9sd?A^68k:.v`=CwCɪW9*=d*?u0jKD£';O-d޸'4jN<ws/5|#[|x:THxP^ఖ0䌧aW9v0twۗ/$i 9~(*ꔛ/#EL\M1GD>5U5~(#Eofڥ^'躮znZ+ѺB mWfεSն|#[V!~E]7:_}tGIRN4e2E'8sl 鈐xnMU*(J 'CewQ ጢrd#'126ۦ6\#2ޣ;eGu}Ӽ%$/ 6'Ah^#[Eb薆}h]yݩQmFPid/ Qȡ]jR6j ^I됔Щ"u WppSD#E5,<&i}lGU$i4-yb o-8O "F,tvPt!'ACV>Z| BӕϤH^16KpQC=ϚVqLWo٬5'JuuK[ÍR]T(Fk4˔Jl,U'uy9ʓVElj#EB#ֶLWvZ+W.0۩GMhdMqQ綂Q-p[c1TeLߟ[B&TFYC^}[ɞ`ĐtkMBYdӚۚ-Y{S>L kEx9ٽZwɆ}ҝE{e8s!t7EMmH[N-j.4>pI0ʋѩ]CԓIWf!Pzʧ(XyXUw9ûQ[[[t9~m[~p(4ID>_!#2tO6 #[#KcEFB#izs$h^0K6b誌WSgu#"O<},mPfX|fNԭwj*a";"mu,wL 3tG(pp{פ3 l-@6-=.r*e2zxID?OSbvK'~<9k#E6Y?Uƻ2wCNDЧ+*#%[noo4$:m?Q7歹`Ȣ#Ew"j#2%HZ`e;8L}(} iĮYyx 3c+At j{#E Ʒ1x/g0*gb`eo `،CbqYL\G~$BM:<>Z `,FhZ?W5*:eqϿQTy?3صnZp*4[h!ZlUJԹYU}U}y)`nY+rt*5D. K֌i% eEA#[`VfC+DrNOUsI햼E#E!V6`A7.Y4Ubra1h(?]RAcIg`8ev#E8qϴ:s~%Ӗ6n3ՅXbU,T_[7(ZK&f]prZAHR3@gK'ܜ9X˿Mo#EQ/?NwOQ]8`oW;dz,iX,5LP#E]c\fO2BKAĆa#2^_7:OmZ0L8C8nv]%Y]@ťɺa+Gn)|lWXEQLkBV-pdJRS*;R)%{}}lkm9Ɲ`_z5Sa2y.dVFVKWE~BI1:csg{V.B-ɚ9!8=cMڱ /UؒaV\˷'ĝ|2yfcގ(6G]Ɏ6Ֆi <,6gk;Amh{\N/ͥg\WES|w[-jsT#E84ipŰ~y+9~[8R:/WcȺd<2:&eV>HmZ4´'tiJ#`>Ym|,|[&DX)XGjB<V AU`4i$)<ey¶W:'=,p.jZZ0p(Bz\`̝>zH_P9m]`˹o0cBU2:Ux7 C-nlXU=u^,[:b&ʍg=Xv|?3umS;6KnnQV|4'hhibKU#[GB0IIҶ: ׵,%F#[: ZbOqז8EE+cmH E_7n7+3o9fnI=wl:GPg5pc{ ^$&o#}ELw3u >K.PM;4Z,a}5V#6loL.\0"!s~0.`t{M'oK:#=ϋHZPu%Bu 0#E ^-~01Xӥykg!uMg(TE#[[t4ÍU V׉D-+63Hm4/}.}>ӍtT3l Mi)tAHs盳YhKuš#2Bq6Osq趿ϦzJmJ8c#2ppf4c`6LNeXSncy>g'`S:Ol&Nf$՜;^qc~'}v)`PϒӪUOKue]uЗ2;wp~`_=eXaӡt9PPI#[J(6ϡ1eA?^j*_v[P2k,<򸵬u AUp4we%ar#ZH#}/ikniT 鉖p|o$_L^tCn=N1y㏏n"C̿.>߄C4F8SR8xxq3CR?{ %EgYL?f0/VM]x}ia*M _9YIHN0wKsUMsɕJMEFc?V,R:bm!4}/k>g֋#EXUxKKM)U;,=KxSine!,8 Ĭ vCc=9)i*jt1\mB+J0S:Ѵbv0vje2@p!#2 C׷O 2)@Ġ}y¸w[UϷ6EBhP?pnC#2\70T_0,bVcv՘}9F倁PG&lx~#[;*9UkKicj%/0h>n Q!Nft3کR^"[k\d8Zn8/'SRȎ3 m5+~k#[7ӂZg*&|]D*_ ۚfa[,8T޺Gt>%W|sb}^%u<#O8{sSժp z^!R<#E9'7<GI:־3k v(Aج-MOw6^hJy`Wc,Ήyp06y\$aXթ6DrgxL7 q Xw`XmeI a}Q \ʤ^FY@a 19łyLƄ2z(0Wtg9 ѣcn'8%x.kkvDGT tF*h5MT_=*N#$ZBAO@dJ?-<ѵ%  4h`EV{#2xtruǶ IX:YEMn\kuզ_grXmb)T%mϩD絥`1MI?rd,c;#AD#ihZQ/ ;#2ŏFMR6۸ޏy#[!W י%=%%tX !5fYIuPM왆9۾R';ci!"`zXB?3SIGxgb|hO~IHYM_U+7M۵ъWMhۿlohL=0#˪M3yOtvs)#u:NJc+Nm=}\vLEYs&Sc@"9H#Et:v>/}L3X폟CNgcgӒ#>1ipNW{{ -vN}R%}5X|f8:G>qrc#䇷;(M2:P[T'ŭSdKБw~?k/\zt>\(шq49-^3#A9󤌳#Ean23ϽV2ro)R5q&á,QeӤJ7r*JL>7|gBctnc :jI))i'8012#2AOwoXn#) GwiMūrߣT QP:3c>ˇVIUOTΛ#2:#2@/EޚpVAl=(ﳗVWރfX]飥PQ snQKr5k>E8vx C[G]-',**uT4Z-tFG}s SnARySUTU9;œf8G]t{t:*a1:եO;WDҭ$2S7٢.K6wZu2h.&mJsھuLL#EުJnp{N;4f27_v͍ߧx 9zTe+WBr'Ҋ̎.V$C|C |?d/}B?MC#[Ke=Gf~Ņ܆~L˻br|1Q+L$Uz1btҩ[߶w-- K~e~jKdŶAA]Ƽ3>߻Ȯ#E}Q TxL >4X׵Ewd$c88sa5瞹&y?emKnUH ( &Sal\){b7_5`kaQ5|&j-h)挏6NϪI g_ o2mc ,XhHUUջ>(qHTi.Jz'"cHFfةk`yݽEpgH:By3Xv/aY,z1#[#[vÕ]V@[tAF]y>#E T ltTؒΔֻC."DJ0#plD'Aٺ( Μ{+"~QH.RhE8_M){Ԛ=ƵB|Am W3q*Ѓ|zj!rZ!P[6cK_#E3K$sǯRFciVy@FպЋ7Kkj8`r'IwITssE '6)͹B_aNLFT5U"Q({d0, x`KF/I{=ZPƕZD;I^A}ߐanQ sLo2kmdUq#[XzeYUM7;1nQy_l)A+w̩H ~DvϦ;4Zd8c~=PgpE1tӦ/RwtM-Sl|HZF0v4/d#EH`62 юgWs $|v/t9:"θZuQz:wjUSc$"@Ȅ$:sCHev4>#2Vª#Eܝ/(d2f8x7Ƀ9؇$6gGRe|h2C"5#^f#%3-I?wB2tC8&WC`(-3M74O>w5MR2AT&UPBJ^3; wF)]#]ufw5XmnKB\@p`؋G$(!=E,F>F,cײlvV~š+ ՆஹAD0NSu7s8 ^9Ȳ䥺#A(Ԛ"ɘm pALÝdťJo4BNt@oUc E*[Amp}QprP#j/0\%K]q(*ޯ}v"_4dRRZ"B_Њp-/W2 ~9o!ts!Nm4L_f4嫴LN, XZRzc}K~UӼD/mr!xBq;8]c5 ѽ= L=n@6Ƙs/4I;ZR'!ep[r EC͝aE4S@Q;U]{|fy_Gu !N*R#[=p bͅ*D=34V~Δd"Up5^ 7`OomFS6<" ׬4ãVB=PՇg(h'ǎ8{}EXHL#ַ.he,\ Qv-Fᓇ9wMD5V\I@d(]o)b9Ȼ`fttz"S>{yg@3T{䛷J|L* |poƚ0VVneh#E#2Sv  f˵FWgm3Bn@YIF=-l4(ۦ51t#E*0|xOOrہ** =tBFf?΄&P>Ow#2#[zO1R/x0#2I= ;"#2{/).-w5W9x#[㞩N.lJGץ kEē\j$ymtڷK>>S-Na~-UM$|s8hw ]#E?q!u4CܨوVT2#m#D%|U4ު0df=={Ha2^pK2pi-#[$eAJ?ә'Ƥ=v̯\rʘ)|nyN'lt;8=ӻM2Mi_w6xl7fY&`.}ٞlϟ깡Ab'Ļ#[.Yr#[{]@؇ۓ̬mUs By#[Cݷ/ICRxi@te-AQuCZ"a`#2;;OѶ[Z3K#2V"һa`bnK*Y D[&";#[KRA.7qbH(RP&3l!pFPĺkKnxXf[,(İl#[cfJJZ#E#[K5Pk D3#[:=WT#E۱Õ#E%a(*Ń#269|#[o}#[#[M5V.)qƣ#ER: ^9x#E,dΈQ .w$QN}(}Vui ]#[}@sbŗgModžr#2I#E4/JБɽ4;(Ka7M46&R]-1A8oE3FzvA9#Ir59gsY(vr{*~=,W$2UFP?㾭7iz*8#E6lT3M#E4:SINd8"a.5dGV#E@Wr͒S8:h/0+\ӺꩈL闘B=w=(-i 5~|fнlJQ!#[ŸıXhɢbU0i)TZfiLXo#.J**,ERwr7 mϋrwFYπl#EиN`Cm2$ T )(l՝J),=qثzwO߳]Sx^7c '7ʆ{t)l`:0o '"RTNh43n2QǸ;k @CiBPz-Pwk :(gMqQCuMל}*M5p9\ܩ+{Ɛ"v Ϟ4];&2s:fP?Ѯn#F ׷`M \DO4|Zё8(wD` jV؂KNKC ەkZk^5IZUt Y~F9f#E F#[+(.Zb(ͲĹ5x$R'e5/zl2 zM_>g sä!5 wa}nVU, twVMzf%d(Zaĵ>RS )Ҥmٕb[_-xU&}EG9xu٘djzeE;*>d2'Aɦ#E=P\jRdF[I)-{#[`'_]Pvfۊ۞\tŰè$Ė%)lmP;o[>7j׿0AZҍ.톖 lgdICX#29@%:ɐ`TEXRMFLDqђ̔l!^9(5K V֧V}2(y(Vnle'RoþyO"IS>oɋ1J:򤴡eB#E#2,|>nUUOw=WHtAN-<@ӠmA҄ҹ:*gV$-y}o\z0P*nxQ(PUz VU5)Wuz&WwJIb *ERTYeΪ8#Ehl%!%]|a6[rNA}ۻo(!gFО^L$H2P. rKq7yGjGP';KPGG~ͽp&l;@ԅP1Ie$d1M }#2za.z J KٙCkJk+f7wc'Ja33$s#E#E#[Npg!)mqC*gsN.1#E#E.x#[a}'suψe:d9&A`((zZLI߱er+ăIPm4yxY*r#uM5ITwߞ|J;ف0zqI^70=2-b ńhi> Iӑ6dDItF˥C(tLUc!T+(L$_"=IzPQн5G)ܳF#EQ1vj-,vNlAK0iأ%v 0@̬wU0'(wI CF9gޜc#1ʊ8AA,#"8IJ;Yg#E$86uxqNuW NOur!#E$F$(dф06Q18:Mio\ h|QSc5'{ #[6_o(ΔU8.$ (jځuYRfj|4Sh;4ֶxh[ѻ u~>p}LҀ#[I7ӳ;u5#EzB|QLq:?qa$};u;nU2*J ߚ& V h%n>y*Q9~#E ߳ Y ׶8q큐:,e{S9fGdLO:eV u#[O'J=y#E18v:>f)*so[#O}oQc#DdRco|&#[ n crBd7L!JY ]'_'#27y g-dD[:~RT0VRU*+LwwV7VdD߾OHO?ν̄D ]#2=_|?_0o0}):ٻkk9[&۟R=;5[G-f=c_0!tuX Egݦ} /]~v[֊\K5k0̧?O}ʽnmR0 M)^b^tݩMk7D>(}U"4'?~_Smj*8Kq9$5YHL$:Zr~3طknJŨ+ם !A6p}A,("m;=o_X%n*Zb8~RD#CܢLs!/:"tG]#2JfvmD+#E4AsQ.m;,noϸ'".햍]-9k{5>@ #[%$DNhnal:+z&&mPSh* %+u}$|_#[03!Bs>Mx uQe޻JRtOoONA$$b2%^ u[bx.{˺w#[3WiĔD&JiOyfEznxC~ϰ(g4ԟԜ1KO*#[,Y5gRUZUr fɁORNv;8gΘa4fHǏ#[m*( sK:tt5<CV Q6"N|~Bjb&;+`4LmS(]OUڹmYb3=3+Źͽ)O2#2xvt:sP'#EBs^x|E ^?)>BX"_0?˨ !Mnh#2#E:M]SzD#E\5 ;eӴ&ilԚt @76gcG`h(:w!sE{8rS[ctӎ-gp<`o0 ~OGӻ A[oLٶG#g$?zc ?#9MdWHMpx g]q*ͧϥv?R{#2$c<_u,"#EݱBh#2nSoC3ڞ}n]$#E֦?S{@]5Бb#EYۣl#EUV\(I=m֯AR#2Z|~~gd#EoIZ|`T +4C9^TB> aT>,$WvaB:0>P1D:'uF!6F[hdbFcĚY펌;r˞:E5YVyN_1e*CmP#["vJ:MCzQN%,UAD^>0{/3q"_Hv٭5E[ǯ:h%O=cr{i4.~c\C8ѰY\a#2a8q~:i0sm3p%zF"F6#E 7CyT&i;>vD>=Zݝ"V=<#J#ݵWϹ_殪^n$dE['mRRZ\-{ɶ:R(#'~E=Sˍ~x]%൚+vhYHV#0%o"`ś<;wN._D~ XX Fes+nwE?/}ߑ?t:uU(wg}lɤFgM>fQ.๿#.D&υ =V ,㚕\Hsܪ*st}yrkvBml%/f6?+Mwz:1g >k]sr(ɉ_f8G|KHMqⳮ:KњVASy#[}|8ۻ_,hiv0%Bz$W%׹J/3\lGUb_L)P亳l<#[V{#EJ*X)?G>'49u/cqI Qyk߭Qvre?m#E9w=0O'k-r)5fMأZ@ q46wfaT0rģ#2XSAfsh]a@O$ gƠ0wk/+g}ciYG%~ zw c#2C..e40p&4wt E3niP~Py#1_@YKtw[q{#[shŵMG#2o&>0q#E!*Lƽ3Ȁ),#n]c IH2?; LS`8Ep"M2h((nNC"sȶ|gZAZggϖ_c*\?|G_~(lyf#ElaL_z~%E&4DQ~%bP<bwv= BegNR)D/Kyi6\rߋ˳2O}\728zv)# .>OcJ\E/zC#2>wbPa$k'k=ÃD@UΉ ;;4I|}U7_:<W]Pp鬋)h U[/ʳZ |0|т v!=O2,,<ӿf݄rz ٤%^@yrs xdm6 +ԊQo#[ALC{ jWEw+j!OgP6ok+3) ("MRw^~kNN$3.2"jm=10rz9OV-[o&VҺ}u6?H'b;w`f6ُ,rexkBH(J;n|!{Kr"/?^#EߓĎ&F;"j CTunnNzE̲1#2 ˟oO}_i&~cqӳ%J4mz|߶!(3uu`9ͰjI;l~b?i@RFxΗfWd$>ڡO_nHtp+E TP#EJ#[Hz@zDrր??Κxr{m'_s?Y?GSǝ#[aA,*#[xHR ' tp6m#[In1;Ckumrlی[9v.3*\#E?NP1mD/FDA/-w׋lߵ,r*ǜ<Zګ].H[zԟNSK߸?rL>sD`#[]qX(#2t̴=mʶckFП@qjϾ&~a's\K% )av?/՟/pA!KFu.KA"2j0Bċh({^W.5m9z#2MY`L ,Fbݞj]:^W4;N5@A8Z+M4>RČtꜶZ;`r.rH:w(9 :ŵ$9 eZp}z\#22)$<}Ӄ)oMqFe#2z)AY`N|3{"*d{۫o`Ȝ r I#1;5M9ˤ谗4.\Q#ERI4#29l'qe;MZ1& #Eb[`+(*N9f.%T8ZI#2T-O#E?D6;B#Bi架x-hvd#EYgH]2Kc"r;6$юx=EOB20H!D$*E*<дҨLw9K5D0!CmT8#X]nX(u.+S)F8XR[[#c7>K1g`z<^4y?:W{+Ae#%q`:嶅嚾-`ݫy/BLP^કQAl/RA|)_R"##[jGHQx+У+\0IϹsS03 ]vTEx9OtGkHc[adR'G>IμLbSNDT:1AhaкPDcYqZFy#[}/ oFS]ރt:NQё:0@+hfk*dx5ч>Kt\;y#E%f3N>8x4\Zܝy37kv|C$oP]l0g(D\^S\Z@аQ=g-b 1h/aj{O>WՄQ}ʻyl۝i}_W HYThgM\er;H ๪8ze-"6#[Zu*HQxy&P`ӬXߔsE-Lj7$f.hs4|slٜ<Np:82*۪~g݇(GhI#)3HrE2 }K!b?WCl֥0z(Ɋ0W m+PS1jmIO\#2s#2`fBm_Eo8<- $=>#2AȮL Y9ӓ`Ld<1w{#El iJp4'\V~⼐M`6)`[g`?' @8ξΏaadY?I!JI<\#2@rR$x5yIP7D1;31'o |9;z#@r@y{ڪ/ 2 SP1l 1@ \#2g[$ga5X#2r^2}m-\vp LM  fi#EW ntӛr:Y:K A$$fɫgn%$3j$M1nc][ g ]E N)+^(#6#Eox:V9p1bmA]#U 4qw_eA/̌[Gp X# :#[m2Z#C1R66^DgYݪՎiam6%6&f8Y|vj(#E-s#EgNDmGs#exnВ]1D?y}ja?B+uq"E=~l\㉖ǪL΄ڴKp3{Y21qAzx79x5Mu*(]k01w|CjΌ \M%x(*6|efK@D)жot( fP.="YlzFպAcYpo:'Y\}.H":W΂{ j*`.*X#EV̡5Z ns]?^#fk18G"d a#fa~רtӅp-PE8Jd&.$zCFتs7 'a0!Z.@ ].ry1;bn[z@2b}Kd"4=SG; σV|b/^opy\13g\þW>m`"acg/ ̅C/7o0OOp<^Z(Rd'> pУ,#2zX"9ٔ(8'#E"5/XGB楪#EürUԬgk9XԜ7#2>g{rl @4^Ցe:Zc<rK:wx,l#2pMkk `uWOG#[5#E 7?_W?ʪxp~_ۏ#2YT)Q#2~9#2(@yDr|~@K:zDuyb=gWby:} eAʄ?zAb |j|:Y3Un6b}52zGΫ%Ls'y#EAë mG#EmTYRtc[I6R8Hu @K%!XQ8S]ɮV(BCGCIj TAH\W- RC\>x[ڝ0;KOs~M@eI;6jJo)#ENA㙝瓀0j,ZLHQ$Pak6ໞ+JQ $olHtNKי#r\8&#[$aiaV}JZ'uY}_J(?n40_h)=:,Ahhk2RI?CƵRfCcv-oP  M@'R.'}Q3JY-~1N6dEC 1)Q(>"pzzqVVYfH#Eژ<))Xy=PUW↴VʨI&’B*`"w#6\#2MBClH(#O۷8A@<$!DC9=5ME}#EU,F#p:̤>#2)$#E'q8D4U!n~/!,yS$a:Qc@zi"ee'm!Ka^r\tboX%I$xw.Hl7i)>g >:g6=!FA#EV~FPs:LH;53ijlBJ.a/bC{=_hfgG@#E~Kٸ.d@c1MpI?A#eR:?vl|'zi'L ڢͰŦ#[A 6O5W {;J6dbgVOO{J<ѡ#=V>A ixuOJ_UA#[oV_A=Fxյ`0h8mQ25wǨ8l6#E!#E˼n&F7yG C:CEF`BO#Es{H$(i^=JlvONZz7%7["!d95#2"o!Cp52dSt *)S<1a*/d a$s2"Цa$ Mʔk!=#2Lˆ[7#EDI?5ޮޮ!o#2+ܳDHd뒓`P{6W5׮ԛђ/\Lc`ޚcԳw5ݝnan72WYYYjѦee7O5IZ,7r6\JlɲG^I3ukZyYk #8nu:W3:֐Q$#[ qwJ"7e\D=(%'~0W'*x%hKd07kf9#R>WJ]`_SC3k#1ҝȝ#[ܻk " -Rmt2NvXMxzZU#ALPA+3/|DU&8KѬ)<#fT^2zdkwS-$|+#[*I  E0Z qOP72HH#>])$ RP5@RȆ~#[ٳ#2x}Թ#2#2 wWNWĨ_h*s78H0}6E'ʾTn/#2`Kz#[}O=F^Eϙz }?gԚ{m0,h0ȡ"B:kAcˡ7䃞uB,cN@xv: ʧ8ޟ!Н"Hð&S$Xz7y]Ǜih%nK*Z~]a&pk덍k%%/ؾ_v+gH]C=fIJ-W;ӓhnpo#t$U!*B#h??y~-~2o>u) KƇ <>_Cݰ/aMh{Ժf!!dI@76#[Y6,*tIqFoP% 45TiʌdBf^sJ6iR'y WoG`W*Pt}azw!;X_tOxM}0:N8X#2zP;w-G<ӌӺ|SA BV#Jq2lDYX&T҉džưbF_D㳱%T$)t$#!#[R#Eۦ&%f-ur6E7>ϓ8PxnłC#[ [l=Iy%%HBOð1plV#Ep9NrC#2s͠U @^"(nEX2@c,Hd!sL!d05CnQ#2BQK YJ9;7ً$8^vgO1x/l/!܅ `שÑ6DIƵEf: #ED/iFȅnM'G@;'v[lsr6ͅ@alfnz= V~-#[%IxT#[(9/XUO>mGHxosg3A_QAuϪN;Rf}uA*~*gp?ĶZ@n#EYq v4ul)h~)TW~vgiXhb0Xd&|DgՎ~b~fXTjT>UX&5ZMrOsoS~g5[ј=?β'D#2,Z[;ڰB8Tr]ؐݲ#25Ij#2uB𽐈* cn9k *?hq #,w$i#2Z!=Ԫ _qWnl}XY3BD#_XA^)y'7h^eV` Ph$@l#[ݴ!P= ʱy(b+rY6*Im +iZ܋lbTے&3qiKRv0Z@եfA~EX[?ձ|]*~@7 ^%"Mv+Ɓcѳ#~u䬁H!sh6*Jb~a$)#E?]K]C1B,zH׿Z{ HiZaYԅ`Ɍ @W?uUuj('b{;"p}!C+k?>!,q'p~g#2m0!"+wahV#2h[F$>@t\"Axm+0`]s x=(_#2jut/}%~Du6(_밮_ÚX0~,#[ݵS7eyJwxvʋ%WJahɠ$&iUˆ|(2b(@#EcxQd^y5E2+ҠZ2E6}5+~_~2^hqc~>Cy="f7?U_B,&&7wUHX>uwGO7xآr=Q &~xGك#Ez&bA"Ǻ=H4Eej&9I_;ЊKhڀ(M9T*7\{h=A>Qd҃7!jdSb #2Vʊ76@H e rxpBxx@ϱãJ?ɷK#f.Lk** r70Ԗk:o Ͻd=\tGA෨w\wBEˣ\+@^ljnt~ekүQQ!;;)%{9Ўع+[18;ztQtC%KTs4zֈ]”[^S <@k1QX:6#E:) e b#[7Vl-*m0pί0p5G_-xNp3+@K~ɒĊGIQ&PTχ[`vpзC˰[J>;>#E5Q1#EَvyDp=Wtݯ61֜]˂Gz7Uێy8;rWsm'd:~/10f2ioSٳ|PpM)*QhZPZMztS #<A6("#[s0ߟ[3V NM#2#2 9w嗟{X-s^yJ{b:pW6WufED82"t哻$򃬥X'*14gtO9p|?Ui. -$KtbfWLe炓{ vVs#3ufqHI#v-]6Q-9[1{RRv@0(S?C'v>;[My<#EVDbT[ţF(Eozt~'{ٿMqMpsq ~>0GѶ!t0bgW=9V,>Teр94:zԉNG=!&*X?{GO,F:Ǖ[5!a0/=e8GnXCq+H5OqdT@ 8_7y4.2#EUd6fƘ=vIKzCuL\Ӫbe%#q˅%%L4)Ll>NwgsGN-hwYOzj+^JaI#E1$dElnVU<11Wݪs;Dq.6-Ꚃ?dV WOd61A̱E=瘀H 1^#j O7_k!D'8_p^\i榕~_OIM>N}O#[BѓA1K SjV%U#[Q8 W3n!'5ZH92-몪`]LOav#E݆Қ#[ĭɘkPjk#[v(#"1'jevꛝ9x$T}Na0l,8k=VT>vI-efbl: !;pnmQUM@ӏsդ<ψnGa#2w=}<'HВCS"S@g,̆VScc`/HAv-RոLަlpf{I.4Uz+_̅XYS $,#vΜ}V!S!ηa-S-bbxg=r7 ГgɇC&8zjU*2SMsk"0f0j`,Mb D”j `8p}gH1<{#23vr };gHAfXWy.*vK] ؅wArOJɦd$[ 7(̅#[@ nyF;3BYd\OǪKj~Fb4\3ufgftdݨTh8iElj6\)ZcljJ$Ly &b0,*0ݿvUڷr -WvܙglRƙHbu^iu~Ae}htB>B0kKX߁#[#A,PknAfS;d`;'7Hǎ˝/xr"$Ȥ"jY{7'OMN_)#oX#3Qws y6=a!#[pW caPf1sCxƠڈBuvB;vuAق8EK;5b`?-8DSGPߨ-kɮ!6[ \yZTcl霄!D#[Z=WXj^&qmt&&M^Ce`u +#EFP{$,a=i-OLMmه#uw0;K9vhuGsG! "=<&G bu(+79-HFihvpTMn0? 7"[#Eo47vMo 62#2 !.э7qy"(;SV)k83Ȳ-77,xxrʊoR,pr2pxκѳO&sTU#2Y)j4Υ|#[5tM]<#[ i5z/MzoU#EbnLZQUDȘB 6Y ;r;vܜ#E-'NJ6C >ZJ ;:0Pyf޻wyuDђ܃W|N"V2 t՟j`!267fd侜1 y7mN;#E쪃b*D׃ɧ$qSE((ŌӢBI(Wa#E:.vGϰUԫѡi(;݃ns-U F@*(L8TK jAP*r]XlUV TeE&QP#E#[x%aGVbG{uU'#E#[G(t[K:&v;:ضB'(c{7pMNy|siQTqNmlMcIl۵m,r,a({jz=48(Ҋ"8532s]"z|h$d(#[pJ"K e}L#"|1C#[u}0kqF-FPY8r#[ha}t:*(Gf{%j}̜{G-DZa#EY2F/Tx& Dp†v1wp6vAp!$86H*`ј(4]"+΅ Em`ejEQ(Jc++'R#(/n<"'E*67]Wu&I`"Qa u)FB2Q.:3q 5hv`ENۓp ,E:]Y9:F+6@fxCyJs"%uaͺz:;<ȹRCb27x9"a[G<#p*0BWU0l~Pޕl sE0w ,(I~?z9j;yC"ʫii;+OA'V &~%mǩ.(h Beww|#ECq0Hè@LɎCHHFo譺f\$Dz[RSˏn[*+i:(00}4fBSm'ʶ*υ?N^!vJ]Vg<{AS ]I )kخ3%{#2_?$ D0j-(/Tz/#8xoe%gy$uk7T:*od-Iz~$2 #Em\*dHDI^D.@>Y #2(WSM ŌT j HNA`=Ԇ#E0" $ AM{Ĩ\ -\\lVJm!$JZSrT!|Y۷zQ#B k8.C j`]2HlCNk?׃VTTWLr_V(<qs}ӱc-=žG~n]2Kq9:{@BʮfZn=tZnBl(ַ5-XzĦf5 o:#E(ogbWķj#[zFגN1ph\5qh\X#[=҄FhJgҝ\SEWbz05u<{a=^@@(B#YUA_X#E넩_IIdp#E{X} YId?CD?w/{wJE?>T-7S6"* //_-W EbU1LR+ K넇#[ ?Fk6&ڍ@lՍ$D5ͥZljEiFTRZm5k#[z{ i-SwUc"zdUH#2#2~>q2*d^PH`<;?F˘!Yq*_&.hH9݁s@늣D,跤##2@]ǚ&j!C}Z߄C8ǿtW4u4m=. "C6\mnhyPK`4B0f 1-굦`J$ E^۽n'EB$AT1VHAEVJ @h#2r=yt2NjpU2- L 202#YPhf"'t}ޑ(R0PJ7˜2@!KoUhƳMI#[lQ%QZ6j3PBQlb#EvIE~߶.\ȁWm5#E2#[$ "jry_^Ã?z=#[h-!#22< 8O1'p=wb#2XFoMIa>c)HN<(ڀwwXPPn*xoBb/D*H~#|XD0I0A}r(ѳ<)T2V:7~5E^4A礆ǖ-dW : b+ NȒh{Bq Yd@ErȔ)JP(M~s~[.uiMf_i9xi؝Zq5 zJ8U8s{aNno~_EXdGi6cʺ :u؁#[}  (B <*XG<_MҚ#2_k$ xBzRJJJ5_C`FEwnrTd~O7;+Sעևs͑C$46/7WHy!"$tc l>ne`>%]4k&@%(iI9T&9 n(>A'R r$D`ƟmF]̥R;(&h|(uxfP8ٺ!@Z06#[zݕ< .~}(=c729ߜ`,73ViyjO&7KQt@޵㥷;WecpqF;jt,FCnP(}HSn{CF#Eu}E׷<{c*C#E8Hr8/[:m4ڸr/G`WpH7~ljm-NbdPV;Vb>x^=:yt$#v9s~|ښ9Y3YnïM׎#2ɍ68'^$Ƕn~ Ǜ!d;G#P=A#[O"#2q#E[6鍄Qu:m+GW> E獾%vr!c=R5,l _ [fϚNHE#E:.ED&ἔZ˜ʡKŅuQ!~P8yB2`P #2RBS .`ؖ$T,k͒g-l_u`C<}6 㪁GCq$$uERa{D E#Yr ; ]cc" AaoڏtW3xi΍ޚr-bC2*:YH,Ƿ@Gzl.Qyvˡ! =[?V1Q_t/fwAHR::55,?gVDyH;IS#Ot@gdE3U6NL};6DdFޞkm@T :y5׵@wwP#2r(PjbV%ڮbFlK(ȺKj0 DCd Ģ"¢%\#E KFX@FA(60Mt4pJS`0 b1  =#[ЁX]S%WFu==y^(d!BEV1@<(dBؔj$0q ,lx-ɖ^{1bOh/i$B@SBo N=ecR#+9c M#E3шP>]<cl6hD6,"PM=MꈐZ䄐^mopLE)AjYy̪b'[}lhXA"ꢄH:1WI\bzoL#[oMfN0%l7SnsY%WlDDEܝ<}8^Bj'e,u;xU4`-PXj6YBLlFFFND;O}[IٮePYGOI$`CIͥ$"Z4`u#E/#EBB kR֛gp1p}zB&L5#EjxlTf% 3Cxh\Ѐo5JNR1F@$K dN/s{ g1!&Xr(5#2u:m#Ef7c$`26k#]C#E#Ev4X10B3KZ26<ÇI M!KI}h! F,@Zb!i5lk. (%Kl%1CG-=L> BׄU*s1ZTiB%tbW5c70Po0a>_aݤChą 5٨Ɏ ɶ\O#2dIՓ߲am= 퐳Vi@,qĵeW #EܲKE9VGr%np%xEϪZrMr((P;8Í-&#[iwCA6EĊ:k=/ LYkRdst>U3ਙ!ly" -u뗵a'~fd(#[Z"q]X&1&1 c $_]M6o;Y^qX@$oU2QlM#H7I];VQu]%Wu$$;]%w@h'izhD BHPX0#2tUJiL$I¶"ًrQ]BRiR24ؿUP-PlV|Rږ*3!cE1ц4 pqOK2䬥P gc+m'hѢ[qJ CdN$نz 2c6#E#EF4`K`LBlddٰr EroV#EM6[Hpzj晹F`ʨ![&D)i4JZ+41dAR +zv,f$tB6]sʚqg<_>6mJQpm[^F+]0B1(=A#2YMh2iJN afZ@"Fj }˔r"i`#zO%A!NFw)ܝêO+̂rDw=Xڃ8ZI400[IRHЈ&Jei?aMMQi3%\LIH`Dҥ#[iM0mfd5b4Jelcf$M3i#&)"(%,M/(PiRJK20ɵ05Q"(%1Mb&Q)2S))J1#E3i4ƒ"DWoD7{h9)#[_7b2YZ*_[7o3y;ng:10Np5:,uplY&6B[6L@Lurv'f.hYL:=:s!\z-Cdd4 f]N͂G!;^Xmڍ0G[=84*.mؽ*F".kLǻI8`\GA6cGF e\C $FB1FRH٬)d*11fAEu<9nދx,ͅ,0ϹNUMaY+H]ZZCɃc#E+Ӿ'.#EK5@cr}#E\M#2'~m.WD7]OhƢo=$(so4Jٹu#EN#2kn#[l #:lGGge!U[ 7AhRJ$Q@"@#[&̠U: J?b8m`C<^E#_s着r$3w)M@̖vįX4b-izj*[i#[Ӈчf53*-hrEXN.Uyka7`3Oaie$ڱU5LD 鶣nWc.["^7LPKsM;4k]mw3XA\9b)_s9o &}ձd]+4/oo't.g!IO!W1T~r%I2rLw("Ngc7$wz;la=[y7gItn'[V:׳]v>gpA8y{HT8+xC\C>33g9i,Fġ;Q[|#EMs1mgZD"O'Ţ:25u܌qVeo$$XRW#[2yuӃ)$/|Ls iI҃O9S&24dfԺHf>*%%CZf׵/T̑;ýUeТ.#Ev`DXQ۠TI$ O :w[zɲ+92%~1 :ѻplp;&.)Ě0NP;`bL#`rL#[.8kT90:a(i̴9dNjRCTF-};e=6 g$NL+\q:8/̳|tQv`B\lӳV4!ŭoy**_vN4&sS0wM#EC`׃rQ뇁YDn>\(=}#Eڃ\ݒHbN4y>59͙;Y"H^Mk8O:(zqFUnޢ%#|OmGJT.6巇.-B~t%&,wFj5U(#;1Bh2s[|S SuҒ|3#Ez!{=T;q%j6McC`d#>g}e:,aLigV4BG[:»-m&3fסDia5&w !S S04\4ƈI4u*  5*oRE*BHҩ~NoYqPo8 WVMﺣt^ȄI1[K+{%a<%N78+yeЌQԹsiN1Զ h1/QLhfS\qP3 .m<-*>&%!öD#tîr\6%䦽e9͜ \ebq`JcTCVLֺ֢{sH0qKh3mQ)Y#J#OMPglC鵅 ,5rח+NP+ƔYh19D:Fb,1kC14qL&01sjR}iunXVȝ;qrbBZF#2$$zdb cmF8w Q bLvK0)N<]fms%pWrÝ7$ps[M5si -7׃uU6uu?S]iña(TI2))ͥ[B!`C8fmqKfs%O6(R*xq,HR*%'E)!*yD<;:-K&;T^|ydF"syL3qy1FQh8.%#+rzDc,Tf^m;FQFՑcY:Y% 4n#E2a48dGN7xš#i$#Ezev٧ 3X:̦1LdMw]D|iLH^:6We$>u8YU&tVv3P6EqX2a#[!:H=<Խ#E68pF4jfE :aQy96kfjWڢA:hHS *rK#Et1(Dwhm_b.skm#[#[ҪG[!$N`Tl)L;ڎ؛&FhRhmh)Ȏɯ#E{l7]bvžU˳;iidթHԐ!Im k $3A&D)~L*[# h`ۚV6&NoCaTa4`n'`y2cLS-WeBd<g5)&Y&,L$.RjC^XmjG4[e5tLP7aVMlff ё4bmA-R+])ʛpmDeIz֘JHaE]+dia jN,)CV[,,#E0ʎl݌*s@p$ntp,y+C:49]}O%imt@vjU`eBq1`&c<.S6pCd0m;`BPïBY.p0:!]du'f\`E hn66f4q_/= 7[6'gMX|k;3kߊ~@(yCp#[FLІӵ @9Jk ÙHL23훺$*c)|`Ҳv!0#[0bX%rjl"Ǯ 1|9!M#2a٦`a"ѦX]=QؠeԞB#8hI##ZA9Dcu48ř*F=.CE#2: ѽ#ټX2֦Q 1Ρb)S ?ޫFBB(V&in+yW "x6CB#2d ٲ r#2 l1ub?W~o=ه<#[G:6K,̽6jGTpYŵS5xɻ:(мk*ËCg/13\B{Y|T1eZ#E[U88k46CQXd:  !\r98בus"j I6kAM8Yj:eTS\,1`oCXw\UQA 1h da dD01)T27#Ez<,",Xc3Qj4zY!'XZҨk^ hASh{}Hh 6fV~#2OD*T(;kuݙsuuA\ ~Y cjH#>ayCzHaJ`o^B"H(童'Jc"4 j(=pE=XS7C3jP7X~ȸ|@#2 m=8>|3l5HFW1Vfɤ\#[ 1BĤKhńb&T@ 2&?^FQ&,FSL*%4#[!rˆh+f>'Gd2#[̤-شm!kcQbf*#[ih-mѫmx[j'n{\)#E#(B)n9n\2^%a$w $=E"e}qkm&0dAST#2ZI)'A3(f|,c ⬠BZ(8qơbX^ޕEO $)׫z-`7b$yԢ##[V$b{&11(0#E0&TP#KH^a&,ꠡ0"ɫ1IG?q+D*9'p@P,U`kTKi0`_0ޤ4y'n(pЁ0L."  NعGh8njHbG/z.aY5V@}H3CLΣjPed Cr-)RmhCt($4F+x Q#6^,[?/x#2rO3#[ )$Q#[UKiSFFKDB/`6QF #EcAM`-}D&}4E`҃0\AR~dXC5lI}6(GWY&4x/UA2]\JZ3!l=,Xj*M5jQA IrNJ֐5ے|{Ԍ|۝&rkT#E}h{܏Ӯj#[[{[֗F%+CJ/rRudKhⵇbc9 e!¹tRJ-Sm(m B җQQB3S0oF#[HmYMjN2 K,zfd2Lz5ՏUZ3ED^3JζR&x#EI"ndL8-)C`{ph]-wɩ SiSk&'"#ESn(ΖVVϕ-U!\N#2vf751UrCls#EL&K5.oMgB`roSmeM8WK-} j:f|ÊD<#[4If0!˴}^tX3`#$8p q)JI5G① R>5{jN"iHv0[#[A`C V H4I$Y@X.B4%)#!e텃t"PV2* 5CDQlT,k%Dj)-9+h\ۨ-fln8ҵ#,5#qB:;n)zfuUpQ11iqJlLimԭb5F81ÿ&I QۊڼlTlRHjRm6eS6mU55ZY2^TR[P`ڙFXJT5Izo|6E:\l.@`G]&TNH)DJDA;bϴZx$q+rT}b1Gua)h{`fy<>LWiE*(sܯoSy@-,l#ELXDFO` Ne-2!sƥzB&~u1H5TBA@) %*#2Z Y#2̙@#@ACcbf3 Dm̈́,S`p#2*LX; [xN+G8bhH߬ LU5Waè 7~r% k X\5Ř(l\N~놖O%T2r "@,էݼc|qT8Z&"\ $/HUKk9噧CZ #pYlӗ͖| % ( Ƞ{& s1jt'軅(#EAxtHEʨ#2DUa!>5nM^J>ޢpFO.7bn2У?_2.}uI Y~%lR;%h!FH]J&^ݮ12In" i-ҮƩyJɦҨ-FƤQK4ԖS%+LRh)H[]aKI7{6$(k5jh8-]MKVv٫߮Ɗ j)IUL3Uur%^$״(+6D iU\FIfjRUz•iBfF6[6zucmYIMZ;&̳]YJ]eS魮$m& A&r c9ŮivKXuz7@BqG#|{hp:ov ng\ԓD RzFS"7hSCNqSD YnXE$iǾTeV隖K*0IJi##2r^.K_JŤ"+fK[٪Mc[EWYvZkjr6k}*%H Mumi2R#2 #2qUecf)i~%tPZRke-m٦mdՊSF)̷e 0&Zb%M5$(m-%M#E3̦(,F2QM$FIZ4XbJM)L5J2Y#jQj6iY#[RbIM2M2TU#j)bfԙ$Y[ZYV(hҔ"0 *"#2JTMK|%Ŋ@D,m\zkkJ-敫"kZTVm?v";{@tGqF+"zq OwGh0ekUs@ =vߊb|ωjp"#[`b^Q=7y;# YvEgGv5ѳlf=][M &H nPRb]W҃^r9#ER{tqzB#[ /BCxC@.S1\a1TAQ;$"Q-B\A5GL؛b=H #_N*xH&"!'M5Q3?vILDs1 B."[^F= S-.y 4(nf}(|yصVv7#[8T>*#T蔴3{WoשodCIC~PR{H8d\_GJڤv7$sج$z3ep")~z0aΤ2}Tb/m^ݧH<#26QmJې8{;[#ij-=,  AdM/3qODONKdzP1Y#E^BmoqĻPLP3#2^"c2sj3(m𙙵15̇T9j˞;AN]5p;ɱ^u)jBH0{Shl @]bo9ހC@E*堳 f#[((c笳 ְ@syh)  k7 TP2S!Wk_F7Ĭ(YI#25 yTM-4A4CP"dai``N\44( t&),֊bˁ ΡcmH&ѪlƠ%R(lL2!1 ig5b9b- a#[(]@ɂC" L}U#[C\R]3Olm~,7\̈?Tשng(S &բ w 9!m@iAss^Ė‛9EM}QR19uy7"@yffC89r;zs,pbgpшTyb)p-DZ Nvݝگ?m[]RH|.Y#2'Xco#E}FL韐y6g!ctW-I=SG^VP<$f*W&`#EBKk\dLBBO[4sC3c(0H&7z[XD>5CAm*}#EH4̌FԝnQ=g[zp>;OR:4#E&A[bX#2]Z-J؆_;, 8Tl6΢dBoڧ htJq" ǍPhiF:I !%'續#En$TX#[1#[h3ѡ֟!pI0"U#Ee#<ɪW3Tm~g(WMNtfRBd`ځc8sh:ZZotQlUAx@TDR7 ϾԩyHz PdP [[%b%CLfT#[3+?_,?]y eEQhXNt1!AW8s&a9Ť;􁘠N1cD&扃nD!j:5u )6Qx~<őU\;1c9Imw/.]u,92&e"uޚ[^vɲduf_ LZm<rW7en) iLX&QF Yb( _Ml2\ #2_q8xlַCvL~*E#Efyc$,ʕZX}]fSW[8C6X+5嵆jҍY6?p0#[ª-KH$IJ#[leSfME]f$5Qj*mmȱTI[m_"" hAU*k[uϞ`b`p{kLsu .\ l@-Q#[Ð44 l(  VFRl[FAiT+ J[M!B|}u^品I!‚XzfGe{䢣EB9k@(N0D%2UGT2YAPTa)&,zz2]Q(E*)-U "31McmSV9yO#EBgȡ5b˘nG¸`k+r8#2$Q!9 ;?Ǣ9}NAgV, b5% K#[A~ܕ5iID<~aP+Qm !.D3n?%`T@Rb㚴;lyKH˼k#0Q@C`It("@Cp7lriR}z{ >#[Q!d=p'rCg*A$" mkQ[dj#[FŘ$"$FE #2)wdiS,ECq+BAiuB$(Jk44}>׬Gm1}C ڞ%!h8+, @RE#E!(HUvA2ZPH}Y}VmD̥O>SW@D^a2 &Z1#26|!z#En+imn>qkvW_Ӗ]myzy5MVy0b!#[PI@#2_i+ץ%""#Ei5! H,TU#[E3wn)g U$,%4 a?ťi#E?ꤰD@?e#E⃃:\CGD PnqRLRr,`7,8h-d"1`Fٕ$@3GƑmVo*4d4ed%1Íc]XEuP[\24޻ڮZ6b)m|$\b2.fj;&Fn׳x66k^#26ӣL j`9QF`L2тK-J+[ޞ@mV*ь9aZ56&Vt9(#E#En$l#ݹZʹm+,j+Erܾ#Eyܓ=u^7x&#ErKyXg+SgY1N,k#"4ԋk0,$iKbcG|xt4%ፁ$ &Dֶin-LQCT$GIkM;Rv ;(P3wPmOEI '"mO?'c wl۵LjUVC41\'0t4WUގ#2yrT@ xP?a}~[EEeVV#[Nn^W-y.m53I5&弚McJ2\I,V(]Mm5SAXA"Da8J"Fն-zg.ˤyD(R@^l-ȲaXzve~kDW#[,Ɇ;,$v&26BH}'r#[U#EvoE!R%v`JZ A @?-&#[Y75k")!4ZfIEgn_y~{ ѪvP(W5>xACiUq_+)aÊa6m;#E<>#IhoLH/L!!'.7셱B&!!@Z2Utkk]M\vRx6£zLŒ cwup6ζr56ō%Խ2QEDP$[k`w2L(,Hƚb0`SPafZ--"!%#2_'Y9@,E(P*x {R"*zʼCox#2EnFC&3יGN^K1:HR=趝50mHm,!#2iHvcВɒω5( "-r!z=8;@gɒ  zƈQ7V!t5'a!v(h #`y&TyQLt2 I i`q>A#ES\҂h#EDVCMGę?xFurQf\xjy!bByJ0UR8>xc!DS]ٍ\lh!ֵWds>>]Jh^p a4 v ӅpMaj>7>)6ŨV4&"-m,-FV$ ׇ~ּ'Y ,Lr`O08b&8:( hj5dX0dY0i3׽l:p%#[٨2o=\R|~ /ﵚd7&Ѭ=M1 񢁱B0ܮL*v#[HۉbLU)x`H#[S-9anTFmxıC^$S#2B(0Mjqo: 5&3U2fbDDȤT7`BRx%U)n̲C<ͦ(X)_TUDǒ#[[L`) MeP<8a6Hѫ&W$Gt.dh@/6vN/D=#[qqzf&T4Zz&Cٽ$Uȥ2c" B@ETX#E<[(x.3.| v"wUQ# 5"RK޳L\>8sibB#96;6YuJ#2N|Gd"15-$BȌ 0]PF!mH807FC!L#[AyIeb\B,@Q&2Ry6 d&-3T>6QdPĈ1T)]eK#2)vs2jQfRDGCtdN4i9&]#X9=]g[-=r+m'Iz/58Ѣ7һR9E\9k~ygޡTiI a TD#Eq[Salʼ-BK&˭(2ӣ PǑiX?t:AB#En}Y*# l4ɝd Cwh*TNi%-`v~Ɉm3 Ɠ86Nk &ԦZ-|{Q&SҭNF||v,Jɪ7UI|!6g18Ab0FKc0-*.aC/L&Gr]HP+]BնUJE{eiRZ-#2Y"*@c#2Vumt) t7qNp7owj2مj V^Y3#EtoC3Ngg2Qd!d!CprѠS)#EI%l WV6L]A(@' #E.HA{{}[ջdռӴ;HH}~^ɞI#2F>kFu]WIzF&DՓ7]玕םEuhʹcIm5k%Yɦh$q lR@LJD >?>QAl6K|-`N@\Ɗi_uU/|-FA2Ks1r`j|#[ 6FĈͽ1<7%ZB9i X0#0Z4\ \3AI#UAswCƧwhǙ͎39tAW8b`˯JZ,#[֠FEed9qKwL:--.r]KL P#[ƫ(:ƣ#[^>j!RA@jﵼ)i-2شUkجZɕZ^5xstJ!!Ӿ$R 87~c儢ޖ0p>Awn#2@t)sϟ#9(>\E}ΡRA{` >0JUoUbq61$(6 <00 D=4&m0b09_0/(](WK@K^֐(q2YlNMUY4%(I*6y!7z^%NHo 'ؖ+:Ғ(iQb1b!A udeqR$`xVy۹:WUtkv#E+DDOEX pB QCq!oY=ɋgĞɃ}'nANcQP jzS1khrCԫ#2}p?.gEW&qR@iPTĩfP&q"Bh퍥s+_payp-cMAp[(u F d#ENf@v#$0|%PAPJ+J #EŤ`Q_8`۲ʕh #2F)h ,I$:u[+w[f #[TDk:*D1JVng4eȩ0$pƢM)6Ngd}>H5!W܅x7.3 7iK|%P' hN<>%Aؖ!Z\ Mm#(SL^j#2՝Hu҃5,=+'?kˢ 2#7ξ/DɃT {4M62(EI.kGBJ9{5¾g:.z!`e~R[ՋUۮ0VaEҁ"}!Eh焹рcmp@$~8;Hrv}Y~;w_[X)jqTkÛIV3ۜcqm6A3}-IbU`6& k+Bô*m]Z0mdlAA[v,a%)`Ik$ХCiְ}`7P(8Iv8hC,@~_jGC;dLAPS4<>LlNvK3:skY~[d(cB0&(c&ȓfW(DeR:z90qlZLm#EDagjl(i] `Y)0(ϐmeVԪiݨ)={2uТHukg%x#* #[ntxރ51$) ~ 2G-?mlգ+c!}/ώrYն.o=b"y< f6%p*XT8G?#LIM*C<c!<,yb Ha@(%z(B<9&g%3@uATƮyBFBBPBM5_ǚckFգ\kU6ɍ,mZҭ\1 9˔Ӵhhir#[CN4&#E2*OBk1,.Bǯam" ܳ)v׸RkFz:PP1w8-z{}n}Tɀ_[Gh8ތH0I#E4 I_jCj{M&ú5CAH"H 5J٘x".e*)CФ:5t}>pQ.s\pE߾' AN㘼{lZ#[FCC٩僾a`}Fjr$0(}'HJ?1\$l`>EK[CHTJs|汘6e5F #EMڙxljE#9aUMb#QbY#Vnmm8m/\#4.@k1c{z,Pı9wp?a5 $/ikAQOjr-Rlg*m/&Ux:6te:d. (J|XWL}2 ,+{YL 1#2ͥ0)4ֳ:Ud&%77ГʬZ6mhk1U,T|k#E ,^{O7k/9vb ]#[l"`RS)ChҌMIP[̡[vGQ,44,ebl\ %T PFK*X0#2Aa@)#["Й.1$`!P#[8@9\l}v=-r,l'ؘE_4^ftsa#O!t&dײX8|_&[S#A# #MH'<+F9>=S Ž<k"v-!V\6=F@T<ǡ4O.Z~F!$07o)!u<p3G#E#[#EE}5xmED2kN9-|0PBS. ·WK|5td~R#Ew#28P d3SGv#EQ3=o\R&9n֬kþ0ToJeT1OE53͕#8q&/&qcg1Z[bG\co3 "'f1[-"r_b.V/F,j0FE#[0#P)V*#2yFuiF6T*填'5X %<ݮR&lhUY]kٴV+Ԧd_O\EXh65QlVZ 4m2ѲTe4fLjh6Z@65`]@(YP)`:̐>#E!PEF"u$ FH I!"ȃe:u_.Z%O}P(}gs,4dΎ/HAADi)}#E̾BmdڶR~^igTQm;:])knQQmR[s\[5WebU^y4}7dF$CSIP4LelJ#2`o":Bu.ۊ6*5#[HiT,2J6}VJ1AsGc#2B"f\z8MHk[O0zBmڞqk6wH(p\9uQ@ީ% f Y#a誏nfmdaLf7?,qew2M5 F3R-AeBa-su.ӓ2Ln#X|^^^hC&(l>A+u*;,yI]x4`xM#[b^IVsq8DFZM3-ҍJ=uɣKpꖊ,/ ^)dHwСEF0d^{B̀^.N;l>qYlz1~x`LU}&eꕵTY01)4Ҥ%52 ;0b#[wHDUc@l|n۸ם\Sws44ܷy:,&Սe)YekS7V6c5X!#2mlkRAUzu"XH`X,J٤h4V+DA2#2k+jѓHBH91x,=ac\4BRHcAA' irzx%>Jrlg31=FkIkdl۷ay]I(3j6ݿ= k̇3v= d AE-!(0@!#22L :#2ϑ:}#cUd! 0wCڍ527Γ]$x4#E)Pc+hz#2f9Yg?hABH,T [mPmzh6H0ځ!sc&Hjsמyu;fDoSky%>7yKL#[yRX*֪KdՑqLJ5/bbғ$o(FrD(71DHQKҭo25"[ dB iH@"9kC~똙i^؟\@q HP>>.ƲЀ.@Y(F$BY*[lMڦڠECzNh"k01G17mK[64ɚ!#2E9_AjAIZv9i+&*&n5hlm$7.܂ 2A#e8د#[HѤTuo%zࡩ$YGM&ר^{v?n?VH?D"Aޯӥ~kKnY[$#E`b^"#[%A0v KY4-R.#O::1)""pZ95inu~6Czy#2ZEO\88I#E"Hd#EADHVI-„M7AM큦2LBm.JPKT@`ٌԅPlX,b]`#[#[#[l6A*5 eRUnEdm3 qu|`pW%PTsNi4PR$5Hl8: Aydd&Y`#[JHYnE8b0 E`$BhTVޭ[KN2Sۢj ֫5N7ltR !SQQ$:ș{y#E#E#[UMvE1]SZk-;Wjm[,RU QY IUI(-4Q#PZVζ$b+JBT0t{" ̜aEO0&׏(|j 6,L[D Mtg_Lkꫠo<-\rښ)ɒcBH#[1xm$"uEXmYQߟ&ݛQKK\`Zek-4Bz=aw< hSIc[m4;CAA?n?\#ETD?MQQߴદZj]KV}nUS~ZokԮPE;%vDԳsU6#E8Άt^!-7o?ӏYȥ$уHX*f?kI&\Ps@PDDuG<Q_KttA_d:/? eetϼ2Ԅ gц8ZCD"2Ög4ū3:B:6."cm-LJ8';7n*e6jo\3gDșC#E28Aq)37#ED#2adƍ-!c?k 熣#EOqTr  Z1*+@R bV'f*i'#u<qr#[>U[g>$#EAahlt #3H` (._%v鏹1C},jۄ {r=RoF"*L&a}2+!#Vm1PŹ#f45M.EsH:}=n_~ʯKY{^#EcCm6`3ZS{O-;YҞi{K֞m#2>Dŕm}I#="cg9l/ؐWb鯆G4v8+,;(U^jq 邛dfj{Q۞ԇr#E|`0T\fҧm~jNHf#[GkfM敚زeY evӢq #2 I#[FPUs>*;/3&p>>~|g@܁P B=zEf#"yU{xDvD:m #[1-kkȄ4̄h|ǂX1ΥF~tHT#[&iQu63I hUf-9HV, p{Bv{عl3tk8[!ḑXPRRI5rh1JB$`$Ab#[d4WkkuV\Iswmo\llg>ns10o45?Y׎8k$lDe[<dX]kk,Fx՝<*kʾq|6p&Pphc!i @ ,@6D2241s#E۞S6ت銬5.v/doA:6vt*r׿#[͝V7󰓹$׼rUPr|D2H7&E.dthΩ*-6kP#=hWyG^M㷱p.FnBp6#[S(ooY&%kJ=A|>@+ iUEV+\#2#ٿEHqלC35P੷:4CYNq#2ss#EAn=\$JcQn I\sGk b"Um`֭vs>'98]л#[EO2dÜ$F#[QwBMpJ8a3⊇y96|ˮW>rWA9VXkb!|mՋmԚmMPX$QTPu%;ω#B>#EYUbXa 8-kǟ?̬WS/H$#>ۺ}b}J4#2QRD-t@<'O} Tbt~twuBHz=)Y:)Bo[9|u>n?h=kQE1tB ږ .Y♋i`eh`P 2GۯeFgwJo)XF"z#?O|/\cc4_*EXIT#2P瀍,dNeMZw,wܫL0̥kS~jFX$~YO'oiz*Q)ȿdU1ȹ#2:K5w.j{.p.4Є:o#2STn^[5!Qdyw,(RkQ%d7Qoc,: -dBʨr#! PT~6G2d@Sӑﯷ&j0b . H(딨D$xu,mw5rlLgCBsoIURP )t[Q 7BaD#[a<-daEFuH{nߗ}NT3]ֻU!ŭML $!!"!=XcZH#2;2zWE 7E#E[$P }o)#@&љFTfDE&!&4eJIeI#0]'6 9 ؒGyL_v)LWnl#Ec#EDɆ$D#iDg DfH#2#2 [/<Sop"ͳa2Q#[ԊFVj(%CѓQLBV̆L_mtjrr}XH|6{Xjv^vOBS3f#2JS;u'bʤTBO@I)E9rIP2M,HV*(E,C@;I@Q@k-TJRiƔjg|l-,U5I4FdDd.C5ͪwIwn],r#245YL TA-SȬ0 01 ^#[V蔀 #[J+M*(#2m4QY66mKH( Gm΋K2AZ.B:%#E[wFVxȪx0ǘ2aBhMW/SO<Yb&`7a.#[*99T|\mpX(hB0:'fi#E6EX/k[6hqiF4BЀ7sijҋcT&#EV%cy$D#ҕFؖRJa9)Q R6cD%SIm46LjhV.nyhuxPaTNYj:R\لm$!3l"š4A(F9*²1&6*e(lo3C01 2h1s-^hٔ#[4p֋B+R#Em,jh32Є1Ga%.S b#xMa]={LXaha~7iq( ]i3Pu=7kX6WK1dR0qx8B ټ1EMjJ#EBmKH'pA^KF#[Gp@.3N Xդ#[@62*4E.A& F♬FMHmFoҊ7$;豘TnuZS+j$R #I#EL!L#[:2 dIdPdaH*RF0&8e!ZLCcF(6O3OAlU8T6Ģ% وPlPȍ;,)FH|΢#E4ޡҨ?&,#EL5zN#[fMgFSE Aj+#E<14PP|EbY!滳lFڱg6y&w3\g߲f\ #c\qIźߦg^znU,`6vRcpdY~`!H~1aؾj/zۦ/b8 s8^%ze@RA!<3ޝ 8?3f'3X+4mM2y(62SrBYp|gQ"IDCeXh:>S|H,S iG#Y8 I$7!U8}(?"~';ip/VWy#@v矘 *tT2"B+N׶iFoC)D-Z1+\S<ғ:[٩9Bj묶R<9}ĪumptGiK%t#[܂hIEE/5~_#Eqw|!gOTeD@Q/e W5T%Qa?H&l6 H#[9 #[f#[썵!A+ L H24,"2Iv&ܻ6űcnZ[!mͤlVӻٮEFFьQQ\Yݬm_(/6^#EcW@riX}d>lo  "GtE#2Y(zgC*L0wU|C#2{@^hܪ#2N Z$R]$悑@*]ǏM)#!*0Hw]dH`hWz.0@V0TA#2`*2#[*"aUMTom׭ꨨR%ۈ]*/^*AQHѪ-aXe,MZ >b "܂U!s(ū8b>9_0b۹t6֫g@QTTu}z$A <=F7nJuYTC WiJkWURS3d)B-,&#E(ڊ)%b›UVƶmiZejekE޿O\ֳ&1aPF#EZ6W"D> m6aU#ש=7^:WF(!" c#[16 cH D*F E# cDQ4DB("E#[B䢒*-@VwDQSŗNiӻ1uW[^[xu*A[6J#[;#2dP&](B `+:vIʟ_EisE)^ R#2&Ȏ懭~a8gnu\Z# n! QT& <#oÌJRzqsbC4E8RXT0N اp#Et4E\;^7&˩RFVEkZ.EVo%o' Gr'S;ۺB@J/N1Td>{d^/zh.ؒ7rps~_~7!ZfҔc?ۥF@M}k_tC<%\"Mc/ӿm-ȚS窼 l㴼C#E,{퍈8 .#Eg%akBv4~#'gGࡢYU;ɗrpӀcHq }=@Te|eh|sKԻ:=Q>~1&\.*w[= &75zE M(#2`|36X:}=c8kTnmp#2AἻ5FkٕZ.x5] ppbIP489vҞ=5B#E⺻x:}N٢dJ;\z#E&1# ObSOǵ^rc=iA&; "ryw ZIqǧ<{o mA#['~î=E *'#EВnl! /ys74ׇ%.!¤Bu)-@^dAo]&V~9>TͥAACj:,=bM]dbqn// b4G09%Q"!m(#W$dxYH̓Ct+Bsr8i&r=:n!;bzz->'#f7<K[E@65&L yG&SAr<ݎ,ٶ$1SM`V'噢u^P.p.!Ύd3[FE=K6}xw[A3gε)#EgJ\۬;v(̎'%5.Oue~e$89λѬmym0k9l>D񫽞R C8̭DTg>툧Ƴ֗!"Jf u,GeNyl-+<YTG#2GXR(Y%nTl4gFg*yLls~ 1WNXi԰DF1aT9iaJ76+`cXXhf UI]\,PK՞p* =<ֻAv:m0FD=!Sف@PT0#q$ #E^[Ƥ+˳wfybO2."4q2NhkSACR5D0rp~2$٤S";KW~.r CJj#[VDg,gT3^^rx*(KbQQf +]bv:-e7ZX*gnl>K޸uv߮;KO޳z[ɷ{"S1Rғ˳!=QX*7sDӑY[8{bd8Y 7̜u36QjyLAӵQ)rTʓrz!*i3F%͝khΠu|b8g#E>\o|Ovb",|#{gk:8wc,nj]ē#1%'Lҫ"-gdPX#-ۣZwWf:a۷&٫t%U'<"B``e.v7Enpq -DZ̝d멿=ΈɐiTN港oC^Tl.ywh3q yH]}ᠥ%g3#ozVWdE6|>SB) Z`jE`LP'Z#[#[[22·y!tY#ۋp#E8`3#[u7,;ÞR>np~l ^+߳ &jBQc}km?LM8m <;P9j'#4f˧ʤ(aK/dyդ#E CזN ec8QFcӵlNe]Pے3:{iVm%4^YM[#ElBÇp%ִH+NUUa8և 0!sYX;Ϯ)-[etY,#[Pp5Y<%o+3#"! 0݉ArG+k#2#ޠE:(b^oC^9j$֘ HJ^ilϤ2aZqvkX ,r.Ĉޙ 0%pg2vx8:q)[b,204EDb$,߼fku[!?4fӨm-D3aP#E"4б(b#[QE؄Y#[4ƒHj/fTcmoMh`#2#EXB"(ڎ^-65*&PTҊX`Y,BŖƠr<3׎3}m H$&$HvΣ=5.H*"tŊj^Wbڶ-mhֹUj7*#-Sr31o]NV5]c-PRbc4BQHͳ @$$ۅQ!ѳQ+^3J{2tq1O#Ecׅ!(I ]R2AWˍ=HJo"DQNPk1j44#EaDi6K)a.+M1Ɔa 9,h墣S3U(3LGSPZs}zpcXߥaB#Du5S+$*6q+"`M,cfL"TX.tuˉ0:X#[2+M1֌d46NFFO=3jL;5:wF#E5ainmdBc"Q[ڟފ=#^f>2P(Xģ܋F:ݔpf {bib7'Sm6tp`mI#E@bof!br; Lf8wVfoRgULsa*"(R#(,n`ny&9ݾ#[OrA#DHT_Nvi+9s]mːO#[ vp?/P~D؅SgmXn’*$9gIaOYޠ^ŗNqcPAz}2C?t#2!o'4} U8I١0zQǑ7vwc_T&rkm. ]MF1F̪f|8yRm#wIܘD_w@y9;1cUS-Igºcȴkz@<@#EQ E8ߍ%Dbe~ӯû#8_MJAAfNך 25i-v6\Ս֮ɵiutH gi">_mwWzU!ckHje[aF6Lc%T-S*#[md#[J6ĕ#[4Qh͡M6I&J6RTF4"JD2BihL6#ED &Km$$E?aݫ~#/\5^G{ ԩQ&]Ś]dj~Q:"{%487`vDa"ŏ@$z8 ȫ베D%KT#2@چ`nj#[3\&x[ N!ƊPnejLn|O#E ~7p"H(EV\@d*>'fᘛL4b(aXUSy||WYSRBbsY8/V$6#[KTE%4}Vm*5(Rj4b#>ڹYj^]VvbY0ӓ $L#T 1f@ʪx v.B}H֟uvjKƢQGJ5$r[lTPAawNP+56I C(B[#2YGP%ĉؽ7 .kί3E75+I.h[_FG6\[(bEi(Q#""1/E򣖚iӻP΂*'\{N1Kyl@;{j|{#[ sjtp:[X.1$S*Li[ZVlP>-fEb#E/2b*7߭$m.8/Twh0xN:dj'9A%WK6$>?\QܲCQIZ"SA;k*)4Q$2J v(n]K2=W!B//Q`=ؤPߓGIX#2 .j`vc"x۟|`)GL71Ğ•Q*L#E||":߉tQXr<@?qe-_Xdjg4==j<УYXzb4YH&- O`:0aoQ{"ܠn,-tE`U2gQ,Wn-c0p#Jaou'98>I5csY%h dvTvx3͞.kbf e{~߮FA%5b?@ȏM IVQWiq鍔xfB?3ԏǸFr2g/z!$\:n&-bgбG$&%➠sxSpBH%m#E8 4s9,hL ƶn"6ﻍF_uC&ϮNA"4ЩL iwc' HkY F4³EJvct&ܨq*D`J#E0 HԅE1ZQkj#`*+b28\A@UCmcij"HCHRESx0T:: ^#E&1B97wΣYũGFF<,101:%bQ_zyԚ:?N6,F~v2eܦBd[ѼuEDTew\?v\gιwnL.#2a%魷=|$rn WD7f%+*0e/0B#EBRAxu#fB@3 Y03 Dh mlZUO-+c=-I5Rp+#[*hE|fPwZn<Lnkm&P1o.t@k삷#8`ʂXVFʲe.*eō!sslc ar4p$6ĶP=Em7Xv5ii2K1r=I tSc5-),id4fOȜ䘎v7״J{Ɔl޺l\Vg%mWM. S9gSN);&vt.s`\9W.d!&w|ؚ4t$!90ю+ظY+VKC-xsuZuvD#[eT;<=Dg2ɤ[ia#[׬J%XUǗC&M؜5wO.Xb.d$'5. ;HX!/U6Zexg)#ENiyK\ r"Yr-Y\[Sk#E7d.yR$1䎓H|V"ىd̓46yt֯.T.g[I#2aȱր{Ctc#S@8o{LDlCWÕņBI,k$`mHlR fy/ti#[]Hi6H"P(B&mI\aЀk|T3Fe#EX `C }U*5H$$EѬ5-fKZnRDv)Uӛ<1ymd(viU,6ddܺd\h!-_.6˝Et:"OF^.edR5LM4N:æ$ 14y({SyH'|]<1l>mCO|3"&q~<&aLS&3m͖&GCdYqUb|2A_!f栌դd0v5#Y#Es~f&K%! 6ҰUشS&z-6F݃lS3ΧGIf$LFJŚHPK(fc~y,M#[XrfP Ԇ+ˋɄhY#E-@@V*L 06S UV^v\Da4Jjrs&z"yyBn\C8Ls= 22ږvA=38L$wqWnɽ}K#E8`kcZ#E!*Cw_355[%L&IaJ.ttwR#E[BV E0eELMkI4"ݺ^w:EuHz 0͏0H$!uфaႍH`ȫn֩hI7C30l–QYl j׸̚$#E$ L}(xnqec&/͈mbRpq#EQ+@,&([v&aeHC!$#[l&.xL v 6"&dGfA3bTlB4odADt J#$#VUmȻ!1`SFΦ;Kl#[u]`v#[40# %$`g6bPyw|(@)2m#LQJ!BFCcAQE@Y' à| XU(%JמԛtM#-/sylxhdw]#[]v~-G*Z!D5,=̖xկp!yt#H`!{ɌXCYŹFDN#EI:f"+#E]&!W#E(#E5Ha ¢c#[$J#Ew&9w#[ncNL}3d*s=TYϮ4u*&YI>m$_?C8 zBb%%,0yIjE6mՔUkYT/1a8]6uLDB 8Ny9ۃvzN3D'#EGf.{/xQ {h0Y` iّf R}fk kG ;t穬YDI(w{L`(x`Iu&"IFZՔ1%KmI#"aeƅ*^jMm\o5W-WlB #[ ,]\P* R{&zMR/rSM? L ui{龆جdص$վke/'ޥ0n#21,# kewLTG#EYba]/8=CwIp2zy7IZM. $#E3\&QJ* FGlƔar`02`#2ȈTGLJ~Np857:DB{NO?9PoM=NE%"#[#2뵇"19$$ڲ~)^uUnʹk#nU6.#2(w3eWfX)hTE~d'#EkuVRQ,JZnM6wrPyR[~!%-a(|s$4(ͺuEz=0MgYCe"1B5*D3=`e>9:T*  ӆ^)&`LV8Sf)OKKmTT9;;$Jy7#E`0"tۉ7Hݔ\ّ>vDA\49|61PhTAFfa40HlU&5#h"(1yODTJBi"uCu&-#[A( (H<q#1hl~}nw#2{DȄlZ4M}$U9Ŋl8 ,ŪK3(3p]2EKBϬ8DR#2 "a[ Jw|RdH8-SB$<ۄ; J$p80#Ewg_mV#:\=IsuLyۻ)MX#[8#2<(\{i,ٮk5C#2_h#E(#P4@]X={KYFLfGj#4I#f}ͱsכ7ᐩE4E/&k^Ehs\,׋yvIZ̛*m]I#!S`7r۳wPQU+`EA$-M>U)#[~;@ê!(dfʬH^ u<@@XbJFѤYITٯ5u_F4lCflh)USIK5soMI\%-lH02.0諺Zn1Mak-b#jR`=y-I(tZ"wQ5{IܯxA5 FOjz#岜ڔ.I>8I$x{HC5`8IQx@:V1*.+~6Xdl IIT;g`ЂsNl[JB.#[!BY>Ssӯpx#EBhށ`0?6J =A#2$#[F#[J6[i45JkW@U0jlkL#2 ۔#E#[u =*ȰZ̲j2˪Dkz3.b1+#En&` #[&rVLն0ez4oNmĎ]Ͷ}0s*><+h)cvB0M$@JdTRF#Eb66Rѿ~F$$H$?2:w^=v2Q f6B$a=*ܫ|F:J(Ab0E4M#EJ5RkS{nbI"#2A(F,XZ* VmBE#2BF$n.a_={*I#a!#Eb &N6דL#EĀ[R]$!(]~,i}GXR du2!RLDRȉcOdpQ71& p]XM#E4M-{p9kwezk6%W6T[fnʮݵsȳVƦ[RTJFy[5$ISa!H6bM{v{7jרP4LPĀQ4Yl;nvV˦J_%= 0 0hFa4A?`וUkB- / v/kbg ToT1zLfgړ,b#[rrgxYT(pJƭl50:t#2j.rT.0\DNpۦ #[T!Ǔy%ąOM#EUJ]/αo&i13VBN1H+R3x\Lo5aMN1USp"^|3ww: @俔j>V]J[E(?^n#w/w6w?o?^p-s&Is zO#[d+6;"m\?ӌ#E@7W#\K_31Q azvTEdzO/s@3>ַT~`l#E)&wm$c>&aMf #l/ep#['`~鴠ssxqE@rzY'AJ(E(H-#[k.31#2AH(#'@WKHRYkC\#8y.PF\ʶPrРt!Bee}%?5rܧC#EsƗFc HڬV#2ԩU%3KL!TLf *avwjU2J 6^\I98L3 `KNSzc'48u>|1ikc%Pf\5ѽifw$%NRUxԛ͢Da$n&4KF5W#[_4^Q&kن\B!RFS#EHͮ^ `f6m#Pĝ?\cîTv7M^AȊY[N予nѳӳt5`%B(zy󲱦|uEfJ'w#EFbO#0۱L]IL|i'0 a Sӑh[•gxa#[c[һ0hѿu̡# c15xu7VE;DlbH* 1!},'Pr"B@K3/ݳ>$՘Jz9Y+Gb0H'v 5Z%owA#$Shґ1/kB*ҙmEf&,( M}(P R#['@t`€cΩ*Ә,Rؤ;C@e0ԤU W??*FPPIHlLG~W+ϙUIDjKKǻ&QU&ٽflzC=$2F c6ʆ#E} ]>֓|h |#2pǤq,J\D-y@3+]'تhx5E8٫#E D|c [+Yj?/Fg: &'THdocchV+ŶWZަԛUm0D`\D,n&볡H`nd#bNO.d=:$` 62F t)CB$ÌvfmkAA=z/uƒ\dFn+<<~QۢsGr:琾0+O,P$DX @G-n#[ )+Ve35۱-_B6hQVӻ{g>6E!xrˌ!z5X1zTGEQߦ,?f>?#[^olGQPAlC ((G#[z_~]KB'qxAP&~go?Ѭ.d.g&+0^8}vB^h|(5sN;g]wϪL<z\0O{'_r#7Xn#KBaw |J=-bh+SAMy0W#E#(f!X=T"q'%D=kG%Mob#[;?*Yh5K }#2(NY]N*pM\e|!m:v: G9bo1yl%جDârBF76TtaPt4,.b٭Yuu5[@(qh+h WP7U 1Cw?a~jb/AzsAxXmrTHS֗N&@?!S [fmR[{oR??R #2#)„_@ #<== diff --git a/wscript b/wscript index ede9efa4..f3b268f0 100644 --- a/wscript +++ b/wscript @@ -3,15 +3,16 @@ # a1batross, mittorn, 2018 from __future__ import print_function -from waflib import Logs +from waflib import Logs, Context, Configure import sys import os -sys.path.append(os.path.realpath('scripts/waflib')) VERSION = '2.4' APPNAME = 'hlsdk-xash3d' top = '.' +Context.Context.line_just = 55 # should fit for everything on 80x26 + def options(opt): grp = opt.add_option_group('Common options') @@ -19,19 +20,26 @@ def options(opt): help = 'build type: debug, release or none(custom flags)') grp.add_option('-8', '--64bits', action = 'store_true', dest = 'ALLOW64', default = False, - help = 'allow targetting 64-bit game dlls') + help = 'allow targetting 64-bit engine(Linux/Windows/OSX x86 only) [default: %default]') grp.add_option('--enable-voicemgr', action = 'store_true', dest = 'VOICEMGR', default = False, - help = 'enable voice manager') + help = 'enable voice manager [default: %default]') grp.add_option('--enable-goldsrc-support', action = 'store_true', dest = 'GOLDSRC', default = False, - help = 'enable GoldSource engine support') + help = 'enable GoldSource engine support [default: %default]') + + grp.add_option('--enable-lto', action = 'store_true', dest = 'LTO', default = False, + help = 'enable Link Time Optimization [default: %default]') + + grp.add_option('--enable-poly-opt', action = 'store_true', dest = 'POLLY', default = False, + help = 'enable polyhedral optimization if possible [default: %default]') + opt.recurse('cl_dll dlls') - opt.load('xcompile compiler_cxx compiler_c') + opt.load('xcompile compiler_cxx compiler_c clang_compilation_database strip_on_install') if sys.platform == 'win32': - opt.load('msvc msdev') + opt.load('msvc msdev msvs') opt.load('reconfigure') @@ -43,7 +51,7 @@ def configure(conf): conf.env.SERVER_NAME = 'hl' conf.env.PREFIX = '' - conf.load('reconfigure') + conf.load('fwgslib reconfigure') conf.start_msg('Build type') if conf.options.BUILD_TYPE == None: @@ -56,7 +64,7 @@ def configure(conf): # -march=native should not be used if conf.options.BUILD_TYPE == 'fast': - Logs.warn('WARNING: \'fast\' build type should not be used in release builds') + Logs.warn('WARNING: \'fast\' build type should not be used in release builds') conf.env.VOICEMGR = conf.options.VOICEMGR conf.env.GOLDSRC = conf.options.GOLDSRC @@ -68,88 +76,143 @@ def configure(conf): conf.env.MSVC_TARGETS = ['x86'] # explicitly request x86 target for MSVC if sys.platform == 'win32': conf.load('msvc msdev') - conf.load('xcompile compiler_c compiler_cxx') + conf.load('xcompile compiler_c compiler_cxx strip_on_install') - if conf.env.DEST_OS2 == 'android': - conf.options.ALLOW64 = True + if conf.env.DEST_OS == 'android': conf.options.GOLDSRC = False conf.env.SERVER_NAME = 'server' # can't be any other name, until specified - # print(conf.options.ALLOW64) - - conf.env.BIT32_MANDATORY = not conf.options.ALLOW64 - conf.env.BIT32_ALLOW64 = conf.options.ALLOW64 - conf.load('force_32bit') - - if conf.env.DEST_SIZEOF_VOID_P == 4: - Logs.info('NOTE: will build game dlls for 32-bit target') + # We restrict 64-bit builds ONLY for Win/Linux/OSX running on Intel architecture + # Because compatibility with original GoldSrc + if conf.env.DEST_OS in ['win32', 'linux', 'darwin'] and conf.env.DEST_CPU in ['x86_64']: + conf.env.BIT32_ALLOW64 = conf.options.ALLOW64 + if not conf.env.BIT32_ALLOW64: + Logs.info('WARNING: will build engine for 32-bit target') else: - Logs.warn('WARNING: 64-bit game dlls may be unstable') + conf.env.BIT32_ALLOW64 = True + conf.env.BIT32_MANDATORY = not conf.env.BIT32_ALLOW64 + conf.load('force_32bit') linker_flags = { 'common': { - 'msvc': ['/DEBUG'], # always create PDB, doesn't affect result binaries - 'gcc': ['-Wl,--no-undefined'] + 'msvc': ['/DEBUG'], # always create PDB, doesn't affect result binaries + 'gcc': ['-Wl,--no-undefined'] }, 'sanitize': { - 'gcc': ['-fsanitize=undefined', '-fsanitize=address'], + 'clang': ['-fsanitize=undefined', '-fsanitize=address'], + 'gcc': ['-fsanitize=undefined', '-fsanitize=address'], } } compiler_c_cxx_flags = { 'common': { - 'msvc': ['/D_USING_V110_SDK71_', '/Zi', '/FS'], - 'clang': ['-g', '-gdwarf-2'], - 'gcc': ['-g', '-Werror=implicit-function-declaration', '-fdiagnostics-color=always'] + # disable thread-safe local static initialization for C++11 code, as it cause crashes on Windows XP + 'msvc': ['/D_USING_V110_SDK71_', '/Zi', '/FS', '/Zc:threadSafeInit-', '/MT'], + 'clang': ['-g', '-gdwarf-2', '-fvisibility=hidden'], + 'gcc': ['-g', '-fvisibility=hidden'] }, 'fast': { - 'msvc': ['/O2', '/Oy'], #todo: check /GL /LTCG - 'gcc': ['-Ofast', '-march=native', '-funsafe-math-optimizations', '-funsafe-loop-optimizations', '-fomit-frame-pointer'], + 'msvc': ['/O2', '/Oy'], #todo: check /GL /LTCG + 'gcc': ['-Ofast', '-march=native', '-funsafe-math-optimizations', '-funsafe-loop-optimizations', '-fomit-frame-pointer'], + 'clang': ['-Ofast', '-march=native'], 'default': ['-O3'] }, 'release': { - 'msvc': ['/O2'], + 'msvc': ['/O2'], 'default': ['-O3'] }, 'debug': { - 'msvc': ['/O1'], - 'gcc': ['-Og'], + 'msvc': ['/O1'], + 'gcc': ['-Og'], 'default': ['-O1'] }, 'sanitize': { - 'msvc': ['/Od', '/RTC1'], - 'gcc': ['-Og', '-fsanitize=undefined', '-fsanitize=address'], - 'default': ['-O1'] + 'msvc': ['/Od', '/RTC1'], + 'gcc': ['-Og', '-fsanitize=undefined', '-fsanitize=address'], + 'clang': ['-O0', '-fsanitize=undefined', '-fsanitize=address'], + 'default': ['-O0'] }, 'nooptimize': { - 'msvc': ['/Od'], + 'msvc': ['/Od'], 'default': ['-O0'] } } - conf.env.append_unique('CFLAGS', conf.get_flags_by_type( - compiler_c_cxx_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC)) - conf.env.append_unique('CXXFLAGS', conf.get_flags_by_type( - compiler_c_cxx_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC)) - conf.env.append_unique('LINKFLAGS', conf.get_flags_by_type( - linker_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC)) + compiler_optional_flags = [ + '-fdiagnostics-color=always', + '-Werror=implicit-function-declaration', + '-Werror=int-conversion', + '-Werror=return-type', + '-Werror=parentheses', + '-Werror=vla', + '-Werror=tautological-compare', + '-Werror=duplicated-cond', + '-Werror=bool-compare', + '-Werror=bool-operation', + '-Wstrict-aliasing', + ] + + c_compiler_optional_flags = [ + '-Werror=implicit-int', + '-Werror=declaration-after-statement' + ] + + linkflags = conf.get_flags_by_type(linker_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC) + cflags = conf.get_flags_by_type(compiler_c_cxx_flags, conf.options.BUILD_TYPE, conf.env.COMPILER_CC) + + # Here we don't differentiate C or C++ flags + if conf.options.LTO: + lto_cflags = { + 'msvc': ['/GL'], + 'gcc': ['-flto'], + 'clang': ['-flto'] + } + + lto_linkflags = { + 'msvc': ['/LTCG'], + 'gcc': ['-flto'], + 'clang': ['-flto'] + } + cflags += conf.get_flags_by_compiler(lto_cflags, conf.env.COMPILER_CC) + linkflags += conf.get_flags_by_compiler(lto_linkflags, conf.env.COMPILER_CC) + + if conf.options.POLLY: + polly_cflags = { + 'gcc': ['-fgraphite-identity'], + 'clang': ['-mllvm', '-polly'] + # msvc sosat :( + } + + cflags += conf.get_flags_by_compiler(polly_cflags, conf.env.COMPILER_CC) + + # And here C++ flags starts to be treated separately + cxxflags = list(cflags) + if conf.env.COMPILER_CC != 'msvc': + conf.check_cc(cflags=cflags, msg= 'Checking for required C flags') + conf.check_cxx(cxxflags=cflags, msg= 'Checking for required C++ flags') + + cflags += conf.filter_cflags(compiler_optional_flags + c_compiler_optional_flags, cflags) + cxxflags += conf.filter_cxxflags(compiler_optional_flags, cflags) + + conf.env.append_unique('CFLAGS', cflags) + conf.env.append_unique('CXXFLAGS', cxxflags) + conf.env.append_unique('LINKFLAGS', linkflags) if conf.env.COMPILER_CC == 'msvc': - conf.env.append_unique('DEFINES', ['_CRT_SECURE_NO_WARNINGS','_CRT_NONSTDC_NO_DEPRECATE']) + conf.define('_CRT_SECURE_NO_WARNINGS', 1) + conf.define('_CRT_NONSTDC_NO_DEPRECATE', 1) else: - conf.env.append_unique('DEFINES', ['stricmp=strcasecmp','strnicmp=strncasecmp','_LINUX','LINUX','_snprintf=snprintf','_vsnprintf=vsnprintf']) - cflags = ['-fvisibility=hidden','-Wno-write-strings'] - conf.env.append_unique('CFLAGS', cflags) - conf.env.append_unique('CXXFLAGS', cflags + ['-Wno-invalid-offsetof', '-fno-rtti', '-fno-exceptions']) + conf.env.append_unique('DEFINES', ['stricmp=strcasecmp', 'strnicmp=strncasecmp', '_snprintf=snprintf', '_vsnprintf=vsnprintf', '_LINUX', 'LINUX']) + conf.env.append_unique('CXXFLAGS', ['-Wno-invalid-offsetof', '-fno-rtti', '-fno-exceptions']) # strip lib from pattern - if conf.env.DEST_OS in ['linux', 'darwin'] and conf.env.DEST_OS2 not in ['android']: + if conf.env.DEST_OS in ['linux', 'darwin']: if conf.env.cshlib_PATTERN.startswith('lib'): conf.env.cshlib_PATTERN = conf.env.cshlib_PATTERN[3:] if conf.env.cxxshlib_PATTERN.startswith('lib'): conf.env.cxxshlib_PATTERN = conf.env.cxxshlib_PATTERN[3:] - conf.env.append_unique('DEFINES', 'CLIENT_WEAPONS') + conf.define('CLIENT_WEAPONS', '1') conf.recurse('cl_dll dlls')