diff --git a/extensions/generators/Waf.py b/extensions/generators/Waf.py new file mode 100644 index 00000000..97d56b83 --- /dev/null +++ b/extensions/generators/Waf.py @@ -0,0 +1,742 @@ +import os +from conan.internal import check_duplicated_generator +from conans.util.files import save + +class Waf(object): + def __init__(self, conanfile): + self.conanfile = conanfile + + def get_use_name(self, ref_name, parent_ref = None): + """ + see: https://github.com/conan-io/conan/issues/13611#issuecomment-1496300127 + + * :: refers to ALL components in a package + * refers to a component in the current package + * :: refers to a component in another package + """ + assert(type(ref_name) is str) + assert(not parent_ref or type(parent_ref) is str) + if '::' in ref_name: + sp = ref_name.split('::') + if sp[0] == sp[1]: + ref_name = sp[0] + else: + assert(len(sp[0])>0) #Conan bug? + ref_name = '_'.join(sp) + elif parent_ref: + ref_name = f'{parent_ref}_{ref_name}' + return ref_name \ + .replace('-', '_') \ + .replace('+','p') #"flac::libflac++" -> "flac_libflacpp" + + def generate(self): + check_duplicated_generator(self, self.conanfile) + + output = self.gen_deps() + + #add settings, which will be interpreted and applied at configuration time + settings = self.conanfile.settings.serialize() + print(settings) + output.update({ + "CONAN_SETTINGS": settings, + #paths that should be added to sys.path (only waf tools currently) + "DEP_SYS_PATHS": self._get_waftools_paths(), + #global Conan config/flags + "CONAN_CONFIG": self._get_conan_config() + }) + + filename = os.path.join( + self.conanfile.generators_folder, + "conan_deps.py" + ) + + set_conan_to_waf_arch(settings, output) + set_conan_to_waf_os(settings, output) + set_conan_to_waf_compiler(settings, output) + + deps = [] + for k,v in output.items(): + if type(v) is str: + deps.append(f'conf.env.{k} = "{v}"') + else: + deps.append(f'conf.env.{k} = {v}') + + #python syspath from deps (for distributing waf tools as conan packages) + syspaths = [] + for p in output['DEP_SYS_PATHS']: + syspaths.append(f'"{p}",') + + save(filename, waftool_src_template % ( + 'sys.path = [\n %s\n]+sys.path' % '\n '.join(syspaths), + '\n '.join(deps), + )) + + def gen_usedeps(self): + """ + Generate CONAN_USE_ vars for all components and packages + """ + out = {} + + def resolve_pkg(req, dep): + usename = self.get_use_name(dep.ref.name, dep.ref.name) + comp_deps = [] + pkg_deps = [] + if dep.has_components: + comp_deps = list(reversed(dep.cpp_info.get_sorted_components())) + + def gen_deps(self): + out = { + "ALL_CONAN_PACKAGES": [], + "ALL_CONAN_PACKAGES_BUILD": [], + } + depmap_host = {} + depmap_build = {} + + for req, dep in self.conanfile.dependencies.items(): + # print(dep.ref, f", direct={req.direct}, build={req.build}") + depmap = depmap_build if req.build else depmap_host + + if dep.cpp_info.has_components: + comp_depnames = [] + #generate "pkg::comp" for each comp + comps = dep.cpp_info.get_sorted_components().items() + for ref_name, cpp_info in comps: + use_name = self.get_use_name(ref_name, dep.ref.name) + comp_depnames.append(use_name) + depmap[use_name] = { + 'build': req.build, + 'cpp_info': cpp_info, + 'usename': use_name, + 'requires': [self.get_use_name(c, dep.ref.name) for c in cpp_info.requires], + 'package': self.get_use_name(dep.ref.name), + 'buildenv_info': dep.buildenv_info, + 'runenv_info': dep.runenv_info, + } + + #generate a parent "pkg::pkg" + use_name = self.get_use_name(dep.ref.name) + depmap[use_name] = { + 'build': req.build, + 'cpp_info': dep.cpp_info, + 'usename': use_name, + 'requires': comp_depnames, + 'package': self.get_use_name(dep.ref.name), + 'buildenv_info': dep.buildenv_info, + 'runenv_info': dep.runenv_info, + } + else: + #only generate "pkg" + use_name = self.get_use_name(dep.ref.name) + depmap[use_name] = { + 'build': req.build, + 'cpp_info': dep.cpp_info, + 'usename': use_name, + 'requires': [self.get_use_name(c, dep.ref.name) for c in dep.cpp_info.requires], + 'package': use_name, + 'buildenv_info': dep.buildenv_info, + 'runenv_info': dep.runenv_info, + } + + def toposort_deps(self, depmap, root, i): + out = [] + def visit(n): + if n.get('__visited', 0) == i: + return + assert n.get('__at', 0) != i, "Cyclic dependencies!\n\tusename: %s\n\trequires: %s" % (n['usename'], n['requires']) + n['__at'] = i + for req in n['requires']: + if req not in depmap: + continue + # assert req in depmap, "The following dependency for '%s' wasn't found: '%s'\n\tis the package broken, or am I broken?" % (n['usename'], req) + visit(depmap[req]) + n['__at'] = 0 + n['__visited'] = i + out.append(n) + visit(root) + return out + + sortit = 0 + + #generate host dep info (includes, flags, etc) + for name, info in depmap_host.items(): + sortit += 1 + sorted_deps = toposort_deps(self, depmap_host, info, sortit) + info['use'] = list(reversed(sorted_deps)) + self.proc_cpp_info(info, out) + + #collect bindirs + buildenv = {} + for name, info in depmap_build.items(): + sortit += 1 + sorted_deps = toposort_deps(self, depmap_build, info, sortit) + info['use'] = list(reversed(sorted_deps)) + self.proc_cpp_info(info, out) + + #add buildenv info + buildenv.update(info['buildenv_info'].vars(self.conanfile, scope="build")) + + buildenv['PATH'] = os.pathsep.join(out.get('CONAN_BUILD_BIN_PATH', set()) | {'$PATH'}) + buildenv['LD_LIBRARY_PATH'] = os.pathsep.join(out.get('CONAN_BUILD_LIB_PATH', set())) + buildenv['DYLD_LIBRARY_PATH'] = os.pathsep.join(out.get('CONAN_BUILD_LIB_PATH', set())) + + out['CONAN_BUILDENV'] = buildenv + + return out + + def proc_cpp_info(self, depinfo, out): + name = depinfo['usename'] + pkg_name = depinfo['package'] + cpp_info = depinfo['cpp_info'] + + def setvar(k, v): + if v: + out[f"{k}_{name}"] = v + + def setpath(k, v): + #convert relative paths from conan to absolute + if type(v) is list: + ret = [os.path.abspath(p) for p in v] + setvar(k, ret) + return ret + else: + assert type(v) is str + ret = [os.path.abspath(v)] + setvar(k, ret[0]) + return ret + + if depinfo['build']: + #add 'build_' prefix to all usenames for build items + #avoids name conflicts while making build graph available in scripts + name = f'build_{name}' + + out["ALL_CONAN_PACKAGES_BUILD"].append(name) + #CONAN_USE is used by waftool to expand deps for usenames + + setvar('CONAN_USE', ['build_%s' % d['usename'] for d in depinfo['use']]) + + #process build dependencies + abs_bindirs = setpath("BINPATH", cpp_info.bindirs) + if 'CONAN_BUILD_BIN_PATH' not in out: + out['CONAN_BUILD_BIN_PATH'] = set() + out['CONAN_BUILD_BIN_PATH'].update(abs_bindirs) + + abs_libdirs = setpath("LIBPATH", cpp_info.bindirs) + if 'CONAN_BUILD_LIB_PATH' not in out: + out['CONAN_BUILD_LIB_PATH'] = set() + out['CONAN_BUILD_LIB_PATH'].update(abs_libdirs) + else: + #process host dependencies + out["ALL_CONAN_PACKAGES"].append(name) + + #CONAN_USE is used by waftool to expand deps for usenames + setvar('CONAN_USE', [d['usename'] for d in depinfo['use']]) + + libs = cpp_info.libs + cpp_info.system_libs + cpp_info.objects + + #warning: default waf C/C++ tasks don't distinguish between exelink and + #sharedlink; will need to override `run_str`. For reference, see: + #`waflib.Tools.cxx.cxxshlib`. this could be handled by a waftool if it's + #ever needed + + linkflags = list(set(cpp_info.sharedlinkflags + cpp_info.exelinkflags)) + setvar("LINKFLAGS", linkflags) + setvar("LIB", libs) + setpath("LIBPATH", cpp_info.libdirs) + setvar("CFLAGS", cpp_info.cflags) + setvar("CXXFLAGS", cpp_info.cxxflags) + setvar("INCLUDES", cpp_info.includedirs) + setvar("DEFINES", cpp_info.defines) + setvar("FRAMEWORK", cpp_info.frameworks) + setpath("FRAMEWORKPATH", cpp_info.frameworkdirs) + + #Extra non-waf variables from Conan cpp_info + setpath("SRCPATH", cpp_info.srcdirs) + setpath("RESPATH", cpp_info.resdirs) + setpath("BUILDPATH", cpp_info.builddirs) + setpath("BINPATH", cpp_info.bindirs) + + #Unused waf variables: + # "ARCH" + # "STLIB" + # "STLIBPATH" + # "LDFLAGS" + # "RPATH" + # "CPPFLAGS" + + def _get_conan_config(self): + conf_info = self.conanfile.conf + out = { + "CFLAGS": conf_info.get('tools.build:cflags', [], check_type=list), + + "CXXFLAGS": conf_info.get('tools.build:cxxflags', [], check_type=list), + + "DEFINES": conf_info.get('tools.build:defines', [], check_type=list), + + "LINKFLAGS": + conf_info.get('tools.build:exelinkflags', [], check_type=list) + + conf_info.get('tools.build:sharedlinkflags', [], check_type=list), + } + return out + + def _get_waftools_paths(self): + #enables distributing waf tools inside of conan packages + #e.g. add a waf tool to the 'flatbuffers' package so that you can use + #the flatc compiler from wscripts, and not worry about versioning + out = [] + for require, dependency in self.conanfile.dependencies.items(): + if not require.build: + continue #only find waf tools from build environment + envvars = dependency.buildenv_info.vars(self.conanfile, scope="build") + if "WAF_TOOLS" not in envvars.keys(): + continue + + tools = envvars["WAF_TOOLS"].split(" ") + for entry in tools: + if not os.path.exists(entry): + self.outputs.warn(f"Waf tool entry not found: {entry}") + continue + + if os.path.isfile(entry): + entry = os.sep.join(entry.split(os.sep)[:-1]) + + if entry not in out: + out.append(entry) + return out + +def set_conan_to_waf_os(settings, env): + #try to map dest os to `waflib.Utils.unversioned_sys_platform()` outputs + #first, then fallback to just using the conan name directly + os = settings.get('os', None) + if os == None: + return + if os == 'Macos': + os = 'darwin' + elif os == 'Windows': + os = 'win32' + else: + os = os.lower() + env['DEST_OS'] = os + + version = settings.get('os.version') + if version: + env['DEST_OS_VERSION'] = version + + if os == 'win32' and 'os.subsystem' in settings: + env['WINDOWS_SUBSYSTEM'] = settings['os.subsystem'] + + if os == 'android': + env['ANDROID_MINSDKVERSION'] = settings.get('os.api_level') + + if os in ['ios', 'tvos', 'watchos']: + env['IOS_SDK_NAME'] = settings.get('os.sdk') + env['IOS_SDK_MINVER'] = settings.get('os.sdk_version') + +def set_conan_to_waf_compiler(settings, env): + compiler = settings.get('compiler', None) + if compiler == None: + return + libcxx = settings.get('compiler.libcxx') + runtime = settings.get('compiler.runtime') + runtime_type = settings.get('compiler.runtime_type') + threads = settings.get('compiler.threads') + exception = settings.get('compiler.exception') + + if threads or exception: + warn(f'WARNING: MinGW flags not handled yet!!') + + env['CXXFLAGS'] = env.get('CXXFLAGS', []) + + #GCC libstd ABI + if libcxx == 'libstdc++': + env['CXXFLAGS'].append('-D_GLIBCXX_USE_CXX11_ABI=0') + elif libcxx == 'libstdc++11': + env['CXXFLAGS'].append('-D_GLIBCXX_USE_CXX11_ABI=1') + + #Windows CRT + if runtime and runtime_type: + flag = 'M' + ('D' if runtime == 'dynamic' else 'T') + if runtime_type == 'Debug': + flag += 'd' + env['CXXFLAGS'].append(f'/{flag}') + + +def set_conan_to_waf_arch(settings, env): + #based on Conan settings.yml + `walib.Tools.c_config.MACRO_TO_DEST_CPU` + #note the original conan arch can be found in the 'CONAN_SETTINGS' key + arch = settings.get('arch', None) + if arch == None: + return + archmap = { + 'x86_64': [ + 'x86_64' + ], + 'x86': [ + 'x86' + ], + 'mips': [ + 'mips', + 'mips64' + ], + 'sparc': [ + 'sparc', + 'sparcv9', + ], + 'arm': [ + 'armv4', + 'armv4i', + 'armv5el', + 'armv5hf', + 'armv6', + 'armv7', + 'armv7hf', + 'armv7s', + 'armv7k', + 'armv8', + 'armv8_32', + 'armv8.3', + ], + 'powerpc': [ + 'ppc32be', + 'ppc32', + 'ppc64le', + 'ppc64', + ], + 'sh': [ + 'sh4le', + ], + 's390': [ + 's390', + ], + 's390x': [ + 's390x', + ], + 'xtensa': [ + 'xtensalx6', + 'xtensalx106', + 'xtensalx7', + ], + 'e2k': [ + 'e2k-v2', + 'e2k-v3', + 'e2k-v4', + 'e2k-v5', + 'e2k-v6', + 'e2k-v7', + ], + + #in waf, but not in standard conan settings.yml: + # '__alpha__' :'alpha', + # '__hppa__' :'hppa', + # '__convex__' :'convex', + # '__m68k__' :'m68k', + + #in conan, but not in waf + # avr + # asm.js + # wasm + } + env['DEST_CPU'] = arch + for wafname in archmap: + if arch in archmap[wafname]: + env['DEST_CPU'] = wafname + break + +waftool_src_template = """# AUTOGENERATED -- DO NOT MODIFY +import os, sys, pathlib +from waflib import Utils +from waflib.Logs import warn +from waflib.Configure import conf +from waflib.Tools.compiler_c import c_compiler +from waflib.Tools.compiler_cxx import cxx_compiler +from waflib.TaskGen import feature, before_method + +#---------------------python sys paths from dependencies-----------------------# +# ex: conf.load('some_tool', with_sys_path=True) +%s +#------------------------------------------------------------------------------# + +def configure(conf): + #-------------------configuration info from dependencies-------------------# + %s + #--------------------------------------------------------------------------# + + if conf.env.CONAN_BUILDENV: + import os + # os.environ.update(conf.env.CONAN_BUILDENV) + for k, v in conf.env.CONAN_BUILDENV.items(): + os.environ[k] = os.path.expandvars(v) + conf.environ[k] = os.path.expandvars(v) + + for p in conf.env.ALL_CONAN_PACKAGES: + conf.msg('Conan usename', p) + + _override_default_compiler_selection(conf, conf.env) + _apply_cppstd(conf, conf.env) + _apply_build_type(conf, conf.env) + + conf_info = conf.env.CONAN_CONFIG + def s(k): + if not conf.env[k]: + conf.env[k] = [] + conf.env[k].extend(conf_info[k]) + s('DEFINES') + s('CFLAGS') + s('CXXFLAGS') + s('LINKFLAGS') + +@feature("conan") +@before_method("process_use") +def expand_conan_targets(tg): + uselist = Utils.to_list(getattr(tg, 'use', [])) + for usename in uselist: + if (f'CONAN_USE_{usename}' in tg.env): + deps = tg.env[f'CONAN_USE_{usename}'] + else: + continue + [uselist.append(r) for r in deps if r not in uselist] + tg.use = uselist + + +# helper for installing files from conan packages +# +# def build(bld): +# bld.install_conan_package( +# '${PREFIX}', # install destination +# use = 'sdl', # list of conan packages to install +# recursive = False, # recursively install deps (default: True) +# bin = 'binaries', # install bins to '${PREFIX}/binaries' +# lib = 'lib', # (this is a default) +# include = None, # set to None to skip install +# res = None, +# framework = None +# ) + +@conf +def install_conan_package(bld, dest_root, **kw): + if bld.env.SKIP_INSTALL_CONAN_DEPS or not bld.is_install: + return + + use = Utils.to_list(kw.get('use')) + + dest_bin = kw.get('bin', 'bin') + dest_lib = kw.get('lib', 'lib') + dest_res = kw.get('res', 'res') + dest_include = kw.get('include', 'include') + dest_framework = kw.get('framework', 'framework') + + bin_out = set() + lib_out = set() + res_out = set() + include_out = set() + framework_out = set() + + reached = set() + def _get(name): + if name in reached: + return + reached.add(name) + if dest_bin: + bin_out.update(bld.env[f'BINPATH_{name}']) + if dest_lib: + lib_out.update(bld.env[f'LIBPATH_{name}']) + if dest_res: + res_out.update(bld.env[f'RESPATH_{name}']) + if dest_include: + include_out.update(bld.env[f'INCLUDES_{name}']) + if dest_framework: + framework_out.update(bld.env[f'FRAMEWORKPATH_{name}']) + + if kw.get('recursive', True): + dep_uselist = bld.env[f'CONAN_USE_{name}'] + for dep_name in dep_uselist: + _get(dep_name) + + for name in use: + _get(name) + + def _install(paths, dest): + for p in paths: + if os.path.isabs(p) and os.path.exists(p): + files = pathlib.Path(p).glob('**/*') + for file in files: + if file.is_dir(): + continue + d = file.relative_to(p) + node = bld.root.find_node(str(file)) + bld.install_as(f'{dest_root}/{dest}/{d}', node) + + _install(bin_out, dest_bin) + _install(lib_out, dest_lib) + _install(res_out, dest_res) + _install(include_out, dest_include) + _install(framework_out, dest_framework) + +def _override_default_compiler_selection(conf, env): + # The following adds the compiler name to the front of that c_config search + # list(s). This activates the auto-detection feature for the compiler name. + # Names are the names of waf tools (see waflib/Tools and waflib/extras for + # available compilers, e.g. "clangcxx.py") + + # If a compiler isn't supported, they can be configured manually with env + # variables, like [CC,CXX,AR,etc]. tool_requires packages with compilers can + # provide this in their `buildenv_info`, or in the [env] section of your + # build environment's Conan profile while calling `conan install` + + # NOTE: the following does nothing if using env for toolchain selection. + + compile_name_map = { + #Conan name: (C++ name, C name) + 'clang': ('clangxx', 'clang'), + 'apple-clang': ('clangxx', 'clang'), + 'gcc': ('gxx', 'gcc'), + 'msvc': ('msvc', 'msvc'), + 'sun-cc': ('suncxx', 'suncc'), + 'intel-cc': ('icpc', 'icc'), + 'qcc': (None, None), + 'mcst-lcc': (None, None), + } + compiler_name = env.CONAN_SETTINGS['compiler'] + (cxx, cc) = compile_name_map[compiler_name] + + os = Utils.unversioned_sys_platform() # waf uses build os for compiler detection + if cxx and os in cxx_compiler: + cxx_compiler[os].insert(0, cxx) + else: + assert 0, f"cxx: {cxx}, os: {os}" + + if cc and os in c_compiler: + c_compiler[os].insert(0, cc) + + # MSVC version and targets + if compiler_name == 'msvc': + # src: https://blog.knatten.org/2022/08/26/microsoft-c-versions-explained + # and: https://en.wikipedia.org/wiki/Microsoft_Visual_C++#Internal_version_numbering + version = str(env.CONAN_SETTINGS['compiler.version']) + msvc_vermap = { + '170': 11, + '180': 12, + '190': 14, + '191': 15, + '192': 16, + '193': 17, + } + arch = env.CONAN_SETTINGS['arch'] + if arch == 'x86_64': + arch = 'x64' + elif arch in ['armv4', 'armv4i', 'armv5el', 'armv5hf', 'armv6', 'armv7', 'armv7hf', 'armv7s', 'armv7k']: + arch = 'arm' + elif arch.startswith('arm'): + arch = 'arm64' + env['MSVC_VERSIONS'] = [f'msvc {msvc_vermap[version]}'] + env['MSVC_TARGETS'] = [arch] + +def _apply_cppstd(conf, env): + cppstd = env.CONAN_SETTINGS.get('compiler.cppstd', None) + if cppstd == None: + return + + compiler = env.CONAN_SETTINGS['compiler'] + + flags = { + 'gcc': { + '98': ['--std', 'c++98'], + 'gnu98': ['--std', 'gnu++98'], + '11': ['--std', 'c++11'], + 'gnu11': ['--std', 'gnu++11'], + '14': ['--std', 'c++14'], + 'gnu14': ['--std', 'gnu++14'], + '17': ['--std', 'c++17'], + 'gnu17': ['--std', 'gnu++17'], + '20': ['--std', 'c++20'], + 'gnu20': ['--std', 'gnu++20'], + '23': ['--std', 'c++23'], + 'gnu23': ['--std', 'gnu++23'], + }, + 'msvc': { + '14': ['/std:c++14'], + '17': ['/std:c++17'], + '20': ['/std:c++20'], + '23': ['/std:latest'] + }, + } + if compiler not in flags: + # gcc flags as fallback is probably fine... + env.append_value('CXXFLAGS', flags['gcc'][cppstd]) + else: + env.append_value('CXXFLAGS', flags[compiler][cppstd]) + +def _apply_build_type(conf, env): + build_type = env.CONAN_SETTINGS.get('build_type', None) + if build_type == None: + return + + os = env.CONAN_SETTINGS.get('os', '') + compiler = env.CONAN_SETTINGS.get('compiler', None) + if compiler == None: + _detect_default_waf_compiler_cxx(conf) + + cxxflags = [] + linkflags = [] + + if compiler == 'msvc': + if build_type == 'Debug': + cxxflags.extend([ + '/Zi', # generate PDBs + '/Od', # disable optimizations + ]) + linkflags.extend([ + '/debug' + ]) + elif build_type == 'Release': + cxxflags.extend([ + '/O2', # optimize speed + '/DNDEBUG' + ]) + linkflags.extend([ + '/incremental:no' # smaller output, functionally equivalent + ]) + elif build_type == 'RelWithDebInfo': + cxxflags.extend([ + '/Zi', + '/O2', + '/DNDEBUG' + ]) + linkflags.extend([ + '/debug' + ]) + elif build_type == 'MinSizeRel': + cxxflags.extend([ + '/O1', # optimize size + '/DNDEBUG' + ]) + linkflags.extend([ + '/incremental:no' + ]) + else: + # Use GCC flags for everything else + if build_type == 'Debug': + cxxflags.extend([ + '-g', # enable debug symbols + '-O0', # disable optimizations + ]) + elif build_type == 'Release': + cxxflags.extend([ + '-O3', # optimize speed + '-DNDEBUG', + ]) + elif build_type == 'RelWithDebInfo': + cxxflags.extend([ + '-g', + '-O2', + '-DNDEBUG', + ]) + elif build_type == 'MinSizeRel': + cxxflags.extend([ + '-Os', # optimize size + '-DNDEBUG', + ]) + + env.append_value('CXXFLAGS', cxxflags) + env.append_value('LINKFLAGS', linkflags) + +""" \ No newline at end of file diff --git a/tests/waf/test_basic/conanfile.py b/tests/waf/test_basic/conanfile.py new file mode 100644 index 00000000..347df7dc --- /dev/null +++ b/tests/waf/test_basic/conanfile.py @@ -0,0 +1,13 @@ +import os, json +from conan import ConanFile +from conan.tools.files import copy + +class WafConanTestProject(ConanFile): + settings = "os", "compiler", "build_type", "arch" + requires = "spdlog/1.12.0" + + generators = ['Waf'] + # python_requires = "wafgenerator/0.1" + # def generate(self): + # gen = self.python_requires["wafgenerator"].module.Waf(self) + # gen.generate() \ No newline at end of file diff --git a/tests/waf/test_basic/main.cpp b/tests/waf/test_basic/main.cpp new file mode 100644 index 00000000..10fc5356 --- /dev/null +++ b/tests/waf/test_basic/main.cpp @@ -0,0 +1,6 @@ +#include + +int main(int argc, char *argv[]){ + spdlog::info("Hello, waf! {}", argv[0]); + return 0; +} \ No newline at end of file diff --git a/tests/waf/test_basic/test_basic.py b/tests/waf/test_basic/test_basic.py new file mode 100644 index 00000000..73609f61 --- /dev/null +++ b/tests/waf/test_basic/test_basic.py @@ -0,0 +1,41 @@ +import shutil +import tempfile +import os, sys + +import pytest + +from tools import run + +@pytest.fixture(autouse=True) +def conan_test(): + old_env = dict(os.environ) + env_vars = {"CONAN_HOME": tempfile.mkdtemp(suffix='conans')} + os.environ.update(env_vars) + current = tempfile.mkdtemp(suffix="conans") + cwd = os.getcwd() + os.chdir(current) + try: + yield + finally: + os.chdir(cwd) + os.environ.clear() + os.environ.update(old_env) + +def test_waf_basic(): + repo = os.path.join(os.path.dirname(__file__), "../../..") + run(f"conan config install {repo}") + run("conan --help") + run("conan profile detect") + + os.chdir(os.path.dirname(__file__)) + run(f"{sys.executable} ../waf distclean") + + run("conan install . -of=build --build=missing") + run(f"{sys.executable} ../waf configure build -v") + dir_list = os.listdir('build') + if 'app' in dir_list: + run(os.path.join('build', 'app')) + elif 'app.exe' in dir_list: + run(os.path.join('build', 'app.exe')) + else: + assert 0, 'missing output' \ No newline at end of file diff --git a/tests/waf/test_basic/wscript b/tests/waf/test_basic/wscript new file mode 100644 index 00000000..d6054667 --- /dev/null +++ b/tests/waf/test_basic/wscript @@ -0,0 +1,14 @@ +def options(opt): + opt.load('compiler_cxx') + +def configure(conf): + conf.load('conan_deps', tooldir='build') + conf.load('compiler_cxx') + +def build(bld): + bld( + features = "cxx cxxprogram conan", + source = "main.cpp", + use = "spdlog", + target = "app" + ) diff --git a/tests/waf/test_flatbuffers/car.fbs b/tests/waf/test_flatbuffers/car.fbs new file mode 100644 index 00000000..5bc78c54 --- /dev/null +++ b/tests/waf/test_flatbuffers/car.fbs @@ -0,0 +1,14 @@ +namespace Test; + +table Manufacturer { + name:string; + coolness:uint8; +} + +table Car { + make:Manufacturer; + model:string; + year:uint16; +} + +root_type Car; \ No newline at end of file diff --git a/tests/waf/test_flatbuffers/conanfile.py b/tests/waf/test_flatbuffers/conanfile.py new file mode 100644 index 00000000..44039797 --- /dev/null +++ b/tests/waf/test_flatbuffers/conanfile.py @@ -0,0 +1,19 @@ +import os, json +from conan import ConanFile +from conan.tools.files import copy + +class WafConanTestProjectFlatbuffers(ConanFile): + name = "waf_conan_test_flatbuffers" + version = "1.0" + settings = "os", "compiler", "build_type", "arch" + + requires = "flatbuffers/23.5.26" + + #ensure 'flatc' is available in build environment + tool_requires = "flatbuffers/23.5.26" + + generators = ['Waf'] + # python_requires = "wafgenerator/0.1" + # def generate(self): + # gen = self.python_requires["wafgenerator"].module.Waf(self) + # gen.generate() \ No newline at end of file diff --git a/tests/waf/test_flatbuffers/main.cpp b/tests/waf/test_flatbuffers/main.cpp new file mode 100644 index 00000000..1191a4b5 --- /dev/null +++ b/tests/waf/test_flatbuffers/main.cpp @@ -0,0 +1,56 @@ +#include "car_generated.h" +#include +#include +#include +#include + +using namespace Test; + +void read_buf(const char *filename){ + std::ifstream file(filename, std::ios_base::binary); + file.seekg(0, std::ios_base::end); + size_t length = file.tellg(); + void *data = malloc(length); + file.seekg(0); + file.read((char*)data, length); + auto car = GetCar(data); + std::cout << "Model: " << car->model()->c_str() << std::endl; + std::cout << "Year: " << car->year() << std::endl; + std::cout << "Make: " << car->make()->name()->c_str(); + std::cout << " (" << (int)car->make()->coolness() << ")" << std::endl; + file.close(); + free(data); +} + +void write_buf( + const char *filename, + const char *make, + const char *model, + uint16_t year, + uint8_t coolness +){ + flatbuffers::FlatBufferBuilder builder(1024); + auto mfname = builder.CreateString(make); + auto mf = CreateManufacturer(builder, mfname, coolness); + auto m = builder.CreateString(model); + auto car = CreateCar(builder, mf, m, year); + builder.Finish(car); + + uint8_t *buf = builder.GetBufferPointer(); + int size = builder.GetSize(); + std::ofstream file(filename, std::ios_base::binary); + file.write((char*)buf, size); + file.close(); +} + +int main(int argc, char *argv[]){ + //write + write_buf("car1.bin", "McCar", "Nugget", 2033, 22); + write_buf("car2.bin", "Car King", "Flopper", 2032, 43); + + //read + read_buf("car1.bin"); + std::cout << "-----" << std::endl; + read_buf("car2.bin"); + return 0; +} \ No newline at end of file diff --git a/tests/waf/test_flatbuffers/test_flatbuffers.py b/tests/waf/test_flatbuffers/test_flatbuffers.py new file mode 100644 index 00000000..603c58fe --- /dev/null +++ b/tests/waf/test_flatbuffers/test_flatbuffers.py @@ -0,0 +1,41 @@ +import shutil +import tempfile +import os, sys + +import pytest + +from tools import run + +@pytest.fixture(autouse=True) +def conan_test(): + old_env = dict(os.environ) + env_vars = {"CONAN_HOME": tempfile.mkdtemp(suffix='conans')} + os.environ.update(env_vars) + current = tempfile.mkdtemp(suffix="conans") + cwd = os.getcwd() + os.chdir(current) + try: + yield + finally: + os.chdir(cwd) + os.environ.clear() + os.environ.update(old_env) + +def test_waf_flatbuffers(): + repo = os.path.join(os.path.dirname(__file__), "../../..") + run(f"conan config install {repo}") + run("conan --help") + run("conan profile detect") + + os.chdir(os.path.dirname(__file__)) + run(f"{sys.executable} ../waf distclean") + + run("conan install . -of=build --build=missing") + run(f"{sys.executable} ../waf configure build -v") + dir_list = os.listdir('build') + if 'app' in dir_list: + run(os.path.join('build', 'app')) + elif 'app.exe' in dir_list: + run(os.path.join('build', 'app.exe')) + else: + assert 0, 'missing output' \ No newline at end of file diff --git a/tests/waf/test_flatbuffers/wscript b/tests/waf/test_flatbuffers/wscript new file mode 100644 index 00000000..4cffb912 --- /dev/null +++ b/tests/waf/test_flatbuffers/wscript @@ -0,0 +1,33 @@ +def options(opt): + opt.load('compiler_cxx') + +def configure(conf): + conf.load('conan_deps', tooldir='build') + conf.load('compiler_cxx') + + #flatc will be found in conan cache + conf.find_program("flatc", var="FLATC") + +def build(bld): + #declare the expected output from flatc + gen_header = bld.path.get_bld().find_or_declare("generated/car_generated.h") + + #generate headers using our schema + bld( + rule = "${FLATC} --cpp -o ${TGT[0].parent} ${SRC}", + source = "car.fbs", + target = gen_header + ) + + #compile application + bld( + features = "cxx cxxprogram conan", + source = "main.cpp", + includes = gen_header.parent.abspath(), + use = "flatbuffers", + target = "app" + ) + + #waf's include scanner will detect that 'main.cpp' is importing a file + #generated by flatc (aka the `target` keyword above), and will ensure + #proper execution order \ No newline at end of file diff --git a/tests/waf/test_ndk_cross/README.md b/tests/waf/test_ndk_cross/README.md new file mode 100644 index 00000000..5daf5efc --- /dev/null +++ b/tests/waf/test_ndk_cross/README.md @@ -0,0 +1,4 @@ +```sh +conan install . -of=build --build=missing -pr:h=./android_arm64.profile -pr:b=default +../waf configure build +``` \ No newline at end of file diff --git a/tests/waf/test_ndk_cross/android_arm64.profile b/tests/waf/test_ndk_cross/android_arm64.profile new file mode 100644 index 00000000..4ac6ea06 --- /dev/null +++ b/tests/waf/test_ndk_cross/android_arm64.profile @@ -0,0 +1,11 @@ +[settings] +arch=armv8 +build_type=Release +compiler=clang +compiler.libcxx=c++_static +compiler.version=17 +os=Android +os.api_level=30 + +[tool_requires] +*: android-ndk/r26b diff --git a/tests/waf/test_ndk_cross/car.fbs b/tests/waf/test_ndk_cross/car.fbs new file mode 100644 index 00000000..5bc78c54 --- /dev/null +++ b/tests/waf/test_ndk_cross/car.fbs @@ -0,0 +1,14 @@ +namespace Test; + +table Manufacturer { + name:string; + coolness:uint8; +} + +table Car { + make:Manufacturer; + model:string; + year:uint16; +} + +root_type Car; \ No newline at end of file diff --git a/tests/waf/test_ndk_cross/conanfile.py b/tests/waf/test_ndk_cross/conanfile.py new file mode 100644 index 00000000..84ece306 --- /dev/null +++ b/tests/waf/test_ndk_cross/conanfile.py @@ -0,0 +1,14 @@ +import os, json +from conan import ConanFile +from conan.tools.files import copy + +class WafConanTestProjectNDK(ConanFile): + settings = "os", "compiler", "build_type", "arch" + requires = ["flatbuffers/23.5.26"] + build_requires = ["flatbuffers/23.5.26"] + + generators = ['Waf'] + # python_requires = "wafgenerator/0.1" + # def generate(self): + # gen = self.python_requires["wafgenerator"].module.Waf(self) + # gen.generate() \ No newline at end of file diff --git a/tests/waf/test_ndk_cross/mylib.cpp b/tests/waf/test_ndk_cross/mylib.cpp new file mode 100644 index 00000000..1299a874 --- /dev/null +++ b/tests/waf/test_ndk_cross/mylib.cpp @@ -0,0 +1,45 @@ +#include "car_generated.h" +#include +#include +#include +#include + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "mylib", __VA_ARGS__)) + +using namespace Test; + +void read_car(const char *filename){ + std::ifstream file(filename, std::ios_base::binary); + file.seekg(0, std::ios_base::end); + size_t length = file.tellg(); + void *data = malloc(length); + file.seekg(0); + file.read((char*)data, length); + auto car = GetCar(data); + LOGI("Model: (%s)", car->model()->c_str()); + LOGI("Year: (%d)", (int)car->year()); + LOGI("Make: %s (%d)", car->make()->name()->c_str(), (int)car->make()->coolness()); + file.close(); + free(data); +} + +void write_car( + const char *filename, + const char *make, + const char *model, + uint16_t year, + uint8_t coolness +){ + flatbuffers::FlatBufferBuilder builder(1024); + auto mfname = builder.CreateString(make); + auto mf = CreateManufacturer(builder, mfname, coolness); + auto m = builder.CreateString(model); + auto car = CreateCar(builder, mf, m, year); + builder.Finish(car); + + uint8_t *buf = builder.GetBufferPointer(); + int size = builder.GetSize(); + std::ofstream file(filename, std::ios_base::binary); + file.write((char*)buf, size); + file.close(); +} \ No newline at end of file diff --git a/tests/waf/test_ndk_cross/test_ndk_cross.py b/tests/waf/test_ndk_cross/test_ndk_cross.py new file mode 100644 index 00000000..95ea42ab --- /dev/null +++ b/tests/waf/test_ndk_cross/test_ndk_cross.py @@ -0,0 +1,35 @@ +import shutil +import tempfile +import os, sys + +import pytest + +from tools import run + +@pytest.fixture(autouse=True) +def conan_test(): + old_env = dict(os.environ) + env_vars = {"CONAN_HOME": tempfile.mkdtemp(suffix='conans')} + os.environ.update(env_vars) + current = tempfile.mkdtemp(suffix="conans") + cwd = os.getcwd() + os.chdir(current) + try: + yield + finally: + os.chdir(cwd) + os.environ.clear() + os.environ.update(old_env) + +def test_waf_ndk_cross(): + repo = os.path.join(os.path.dirname(__file__), "../../..") + run(f"conan config install {repo}") + run("conan --help") + run("conan profile detect") + + os.chdir(os.path.dirname(__file__)) + run(f"{sys.executable} ../waf distclean") + + run("conan install . -of=build -pr:h=./android_arm64.profile -pr:b=default --build=missing") + run(f"{sys.executable} ../waf configure build -v") + # TODO: check if output lib matches profile arch diff --git a/tests/waf/test_ndk_cross/wscript b/tests/waf/test_ndk_cross/wscript new file mode 100644 index 00000000..02f1c59a --- /dev/null +++ b/tests/waf/test_ndk_cross/wscript @@ -0,0 +1,25 @@ +import os + +def options(opt): + opt.load('compiler_cxx') + +def configure(conf): + conf.load('conan_deps', tooldir='build') + conf.find_program("flatc", var="FLATC", mandatory=True) + conf.load('compiler_cxx') + +def build(bld): + gen_header = bld.path.get_bld().find_or_declare("generated/car_generated.h") + bld( + rule = "${FLATC} --cpp -o ${TGT[0].parent} ${SRC}", + source = "car.fbs", + target = gen_header + ) + bld( + features = "cxx cxxshlib conan", + source = "mylib.cpp", + includes = gen_header.parent.abspath(), + use = "flatbuffers", + target = "mylib" + ) + diff --git a/tests/waf/test_ndk_cross_advanced/README.md b/tests/waf/test_ndk_cross_advanced/README.md new file mode 100644 index 00000000..b9114493 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/README.md @@ -0,0 +1,56 @@ +This is a more advanced cross compilation sample that allows targeting multiple +android ABIs at the same time. This is accomplished by creating separate +commands for each of the 4 ABIs (arm32, arm64, x86, x86_64) + +## Building + +Example for `arm32_debug`: + +```sh +#install ('-of' must be build/) +conan install . -of=build/arm32_debug -pr:h=android_ndk.profile -pr:h=variants/arm32_debug.profile -pr:b=default --build=missing + +#configure arm32 debug +waf configure_arm32_debug + +#build +waf build_arm32_debug +``` + +Alternatively, you can also have waf invoke `conan install` for you during +configuration: + +```sh +#configure arm32 debug +waf configure_arm32_debug --conan-install + +#build +waf build_arm32_debug +``` + +### Available variants: + +The following variants are available for this demo: + +* `arm32_debug` +* `arm32_release` +* `arm64_debug` +* `arm64_release` +* `x86_debug` +* `x86_release` +* `x86_64_debug` +* `x86_64_release` + +To run it, append the variant to the command, such as `configure_x86_debug`, +`clean_x86_debug`, etc. The available commands are: + +* `configure` +* `build` +* `clean` +* `install` (warning: this will try to install to your system by default, pass + `--prefix` to configure to change where they're installed) +* `uninstall` + +Each command corresponds to a partial Conan profile in the `variants` folder, +which is combined with the base profile `android_ndk.profile` to compose the +final profile used for each target. \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/android_ndk.profile b/tests/waf/test_ndk_cross_advanced/android_ndk.profile new file mode 100644 index 00000000..08f754e5 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/android_ndk.profile @@ -0,0 +1,9 @@ +[settings] +compiler=clang +compiler.libcxx=c++_static +compiler.version=17 +os=Android +os.api_level=30 + +[tool_requires] +*: android-ndk/r26b diff --git a/tests/waf/test_ndk_cross_advanced/car.fbs b/tests/waf/test_ndk_cross_advanced/car.fbs new file mode 100644 index 00000000..5bc78c54 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/car.fbs @@ -0,0 +1,14 @@ +namespace Test; + +table Manufacturer { + name:string; + coolness:uint8; +} + +table Car { + make:Manufacturer; + model:string; + year:uint16; +} + +root_type Car; \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/conanfile.py b/tests/waf/test_ndk_cross_advanced/conanfile.py new file mode 100644 index 00000000..84ece306 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/conanfile.py @@ -0,0 +1,14 @@ +import os, json +from conan import ConanFile +from conan.tools.files import copy + +class WafConanTestProjectNDK(ConanFile): + settings = "os", "compiler", "build_type", "arch" + requires = ["flatbuffers/23.5.26"] + build_requires = ["flatbuffers/23.5.26"] + + generators = ['Waf'] + # python_requires = "wafgenerator/0.1" + # def generate(self): + # gen = self.python_requires["wafgenerator"].module.Waf(self) + # gen.generate() \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/mylib.cpp b/tests/waf/test_ndk_cross_advanced/mylib.cpp new file mode 100644 index 00000000..1299a874 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/mylib.cpp @@ -0,0 +1,45 @@ +#include "car_generated.h" +#include +#include +#include +#include + +#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "mylib", __VA_ARGS__)) + +using namespace Test; + +void read_car(const char *filename){ + std::ifstream file(filename, std::ios_base::binary); + file.seekg(0, std::ios_base::end); + size_t length = file.tellg(); + void *data = malloc(length); + file.seekg(0); + file.read((char*)data, length); + auto car = GetCar(data); + LOGI("Model: (%s)", car->model()->c_str()); + LOGI("Year: (%d)", (int)car->year()); + LOGI("Make: %s (%d)", car->make()->name()->c_str(), (int)car->make()->coolness()); + file.close(); + free(data); +} + +void write_car( + const char *filename, + const char *make, + const char *model, + uint16_t year, + uint8_t coolness +){ + flatbuffers::FlatBufferBuilder builder(1024); + auto mfname = builder.CreateString(make); + auto mf = CreateManufacturer(builder, mfname, coolness); + auto m = builder.CreateString(model); + auto car = CreateCar(builder, mf, m, year); + builder.Finish(car); + + uint8_t *buf = builder.GetBufferPointer(); + int size = builder.GetSize(); + std::ofstream file(filename, std::ios_base::binary); + file.write((char*)buf, size); + file.close(); +} \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/test_ndk_cross_advanced.py b/tests/waf/test_ndk_cross_advanced/test_ndk_cross_advanced.py new file mode 100644 index 00000000..4a744ec2 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/test_ndk_cross_advanced.py @@ -0,0 +1,38 @@ +import shutil +import tempfile +import os, sys + +import pytest + +from tools import run + +@pytest.fixture(autouse=True) +def conan_test(): + old_env = dict(os.environ) + env_vars = {"CONAN_HOME": tempfile.mkdtemp(suffix='conans')} + os.environ.update(env_vars) + current = tempfile.mkdtemp(suffix="conans") + cwd = os.getcwd() + os.chdir(current) + try: + yield + finally: + os.chdir(cwd) + os.environ.clear() + os.environ.update(old_env) + +def test_waf_ndk_cross_advanced(): + repo = os.path.join(os.path.dirname(__file__), "../../..") + run(f"conan config install {repo}") + run("conan --help") + run("conan profile detect") + + os.chdir(os.path.dirname(__file__)) + run(f"{sys.executable} ../waf distclean") + + for variant in ['arm32', 'arm64', 'x86', 'x86_64']: + for build_type in ['release', 'debug']: + v = f'{variant}_{build_type}' + run(f"conan install . -of=build/{v} -pr:h=./android_ndk.profile -pr:h=variants/{v}.profile -pr:b=default --build=missing") + run(f"{sys.executable} ../waf configure_{v} build_{v} -v") + # TODO: check if output lib matches profile arch diff --git a/tests/waf/test_ndk_cross_advanced/variants/arm32_debug.profile b/tests/waf/test_ndk_cross_advanced/variants/arm32_debug.profile new file mode 100644 index 00000000..b85b1413 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/arm32_debug.profile @@ -0,0 +1,3 @@ +[settings] +arch=armv7 +build_type=Debug \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/arm32_release.profile b/tests/waf/test_ndk_cross_advanced/variants/arm32_release.profile new file mode 100644 index 00000000..64f00271 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/arm32_release.profile @@ -0,0 +1,3 @@ +[settings] +arch=armv7 +build_type=Release \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/arm64_debug.profile b/tests/waf/test_ndk_cross_advanced/variants/arm64_debug.profile new file mode 100644 index 00000000..e7eaeaa9 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/arm64_debug.profile @@ -0,0 +1,3 @@ +[settings] +arch=armv8 +build_type=Debug \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/arm64_release.profile b/tests/waf/test_ndk_cross_advanced/variants/arm64_release.profile new file mode 100644 index 00000000..51155302 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/arm64_release.profile @@ -0,0 +1,3 @@ +[settings] +arch=armv8 +build_type=Release \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/x86_64_debug.profile b/tests/waf/test_ndk_cross_advanced/variants/x86_64_debug.profile new file mode 100644 index 00000000..efc996ad --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/x86_64_debug.profile @@ -0,0 +1,3 @@ +[settings] +arch=x86_64 +build_type=Debug \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/x86_64_release.profile b/tests/waf/test_ndk_cross_advanced/variants/x86_64_release.profile new file mode 100644 index 00000000..57b31ad6 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/x86_64_release.profile @@ -0,0 +1,3 @@ +[settings] +arch=x86_64 +build_type=Release \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/x86_debug.profile b/tests/waf/test_ndk_cross_advanced/variants/x86_debug.profile new file mode 100644 index 00000000..db6244bf --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/x86_debug.profile @@ -0,0 +1,3 @@ +[settings] +arch=x86 +build_type=Debug \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/variants/x86_release.profile b/tests/waf/test_ndk_cross_advanced/variants/x86_release.profile new file mode 100644 index 00000000..571871f6 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/variants/x86_release.profile @@ -0,0 +1,3 @@ +[settings] +arch=x86 +build_type=Release \ No newline at end of file diff --git a/tests/waf/test_ndk_cross_advanced/wscript b/tests/waf/test_ndk_cross_advanced/wscript new file mode 100644 index 00000000..ce1dafe0 --- /dev/null +++ b/tests/waf/test_ndk_cross_advanced/wscript @@ -0,0 +1,60 @@ +def options(opt): + opt.load('compiler_cxx') + opt.add_option('--conan-install', action='store_true', help='if true, will call conan install during configuration') + +def configure(conf): + if not conf.__class__.variant: + conf.fatal('must invoke with a variant, such as "configure_arm64_release" instead of "configure"') + conf.load_conan() + conf.load('compiler_cxx') + conf.find_program("flatc", var="FLATC", mandatory=True) + +def build(bld): + if not bld.variant: + bld.fatal(f'must invoke with a variant, such as "{bld.cmd}_arm64_release" instead of "{bld.cmd}"') + + gen_header = bld.path.get_bld().find_or_declare("generated/car_generated.h") + bld( + rule = "${FLATC} --cpp -o ${TGT[0].parent} ${SRC}", + source = "car.fbs", + target = gen_header + ) + bld( + features = "cxx cxxshlib conan", + source = "mylib.cpp", + includes = gen_header.parent.abspath(), + use = "flatbuffers", + target = "mylib" + ) + +#------------------------------------------------------------------------------# +# Command variant implementations +import os +from waflib.Configure import ConfigurationContext +from waflib.Build import BuildContext, CleanContext, InstallContext, UninstallContext +for x in [p.split('.profile')[0] for p in os.listdir('variants')]: + for y in (BuildContext, CleanContext, InstallContext, UninstallContext): + name = y.__name__.replace('Context','').lower() + class tmp(y): + cmd = name + '_' + x + variant = x + class _tmp(ConfigurationContext): + cmd = 'configure_' + x + variant = x + def load_conan(self): + variant = self.__class__.variant + if self.options.conan_install: + variants = self.srcnode.find_node('variants') + assert variants, 'variants not found in %s' % self.srcnode + cmd = [ + 'conan', + 'install', + str(self.srcnode), + '-of', str(self.bldnode.find_or_declare(variant)), + '-pr:h', str(self.srcnode.find_node('android_ndk.profile')), + '-pr:h', str(variants.find_node(variant + '.profile')), + '-pr:b', 'default', + '--build=missing' + ] + assert not self.exec_command(cmd), f"conan install failed: {cmd}" + self.load('conan_deps', tooldir=f'build/{variant}') \ No newline at end of file diff --git a/tests/waf/test_sdl/conanfile.py b/tests/waf/test_sdl/conanfile.py new file mode 100644 index 00000000..86be172d --- /dev/null +++ b/tests/waf/test_sdl/conanfile.py @@ -0,0 +1,18 @@ +import os, json +from conan import ConanFile +from conan.tools.files import copy + +class WafConanTestProject(ConanFile): + name = "waf_conan_test_sdl" + version = "1.0" + settings = "os", "compiler", "build_type", "arch" + requires = "sdl/2.28.3" + + def configure(self): + self.options['sdl'].shared = True + + generators = ['Waf'] + # python_requires = "wafgenerator/0.1" + # def generate(self): + # gen = self.python_requires["wafgenerator"].module.Waf(self) + # gen.generate() \ No newline at end of file diff --git a/tests/waf/test_sdl/main.cpp b/tests/waf/test_sdl/main.cpp new file mode 100644 index 00000000..02bcf9ea --- /dev/null +++ b/tests/waf/test_sdl/main.cpp @@ -0,0 +1,40 @@ +//taken from: https://gist.github.com/fschr/92958222e35a823e738bb181fe045274 +// SDL2 Hello, World! +// This should display a white screen for 2 seconds +// compile with: clang++ main.cpp -o hello_sdl2 -lSDL2 +// run with: ./hello_sdl2 +#define SDL_MAIN_HANDLED +#include +#include + +#define SCREEN_WIDTH 640 +#define SCREEN_HEIGHT 480 + +#ifdef __cplusplus +extern "C" +#endif +int main(int argc, char *argv[]){ + SDL_Window* window = NULL; + SDL_Surface* screenSurface = NULL; + if (SDL_Init(SDL_INIT_VIDEO) < 0) { + fprintf(stderr, "could not initialize sdl2: %s\n", SDL_GetError()); + return 1; + } + window = SDL_CreateWindow( + "hello_sdl2", + SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, + SCREEN_WIDTH, SCREEN_HEIGHT, + SDL_WINDOW_SHOWN + ); + if (window == NULL) { + fprintf(stderr, "could not create window: %s\n", SDL_GetError()); + return 1; + } + screenSurface = SDL_GetWindowSurface(window); + SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0xFF, 0xFF, 0xFF)); + SDL_UpdateWindowSurface(window); + SDL_Delay(2000); + SDL_DestroyWindow(window); + SDL_Quit(); + return 0; +} \ No newline at end of file diff --git a/tests/waf/test_sdl/test_sdl.py b/tests/waf/test_sdl/test_sdl.py new file mode 100644 index 00000000..20927a4b --- /dev/null +++ b/tests/waf/test_sdl/test_sdl.py @@ -0,0 +1,36 @@ +import shutil +import tempfile +import os, sys + +import pytest + +from tools import run + +@pytest.fixture(autouse=True) +def conan_test(): + old_env = dict(os.environ) + env_vars = {"CONAN_HOME": tempfile.mkdtemp(suffix='conans')} + os.environ.update(env_vars) + current = tempfile.mkdtemp(suffix="conans") + cwd = os.getcwd() + os.chdir(current) + try: + yield + finally: + os.chdir(cwd) + os.environ.clear() + os.environ.update(old_env) + +def test_waf_sdl(): + repo = os.path.join(os.path.dirname(__file__), "../../..") + run(f"conan config install {repo}") + run("conan --help") + run("conan profile detect") + + os.chdir(os.path.dirname(__file__)) + run(f"{sys.executable} ../waf distclean") + + run("conan install . -of=build --build=missing") + run(f"{sys.executable} ../waf configure build -v") + dir_list = os.listdir('build') + assert 'app' in dir_list or 'app.exe' in dir_list \ No newline at end of file diff --git a/tests/waf/test_sdl/wscript b/tests/waf/test_sdl/wscript new file mode 100644 index 00000000..4e900c72 --- /dev/null +++ b/tests/waf/test_sdl/wscript @@ -0,0 +1,22 @@ +def options(opt): + opt.load('compiler_cxx') + +def configure(conf): + conf.load('conan_deps', tooldir='build') + conf.load('compiler_cxx') + +def build(bld): + bld( + features = "cxx cxxprogram conan", + source = "main.cpp", + use = "sdl", + target = "app" + ) + + bld.install_conan_package( + '${PREFIX}', + use='sdl', + recursive = False, + include = None, + bin = None + ) \ No newline at end of file diff --git a/tests/waf/waf b/tests/waf/waf new file mode 100755 index 00000000..5cd645b4 --- /dev/null +++ b/tests/waf/waf @@ -0,0 +1,172 @@ +#!/usr/bin/env python +# encoding: latin-1 +# Thomas Nagy, 2005-2018 +# +""" +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +""" + +import os, sys, inspect + +VERSION="2.0.26" +REVISION="76393535e97b42e706121768c1146b38" +GIT="ad7b733fc60852f77eff200b79e8b6f9562494d2" +INSTALL='' +C1='#1' +C2='#/' +C3='#.' +cwd = os.getcwd() +join = os.path.join + + +WAF='waf' +def b(x): + return x +if sys.hexversion>0x300000f: + WAF='waf3' + def b(x): + return x.encode() + +def err(m): + print(('\033[91mError: %s\033[0m' % m)) + sys.exit(1) + +def unpack_wafdir(dir, src): + f = open(src,'rb') + c = 'corrupt archive (%d)' + while 1: + line = f.readline() + if not line: err('run waf-light from a folder containing waflib') + if line == b('#==>\n'): + txt = f.readline() + if not txt: err(c % 1) + if f.readline() != b('#<==\n'): err(c % 2) + break + if not txt: err(c % 3) + txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00')) + + import shutil, tarfile + try: shutil.rmtree(dir) + except OSError: pass + try: + for x in ('Tools', 'extras'): + os.makedirs(join(dir, 'waflib', x)) + except OSError: + err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir) + + os.chdir(dir) + tmp = 't.bz2' + t = open(tmp,'wb') + try: t.write(txt) + finally: t.close() + + try: + t = tarfile.open(tmp) + except: + try: + os.system('bunzip2 t.bz2') + t = tarfile.open('t') + tmp = 't' + except: + os.chdir(cwd) + try: shutil.rmtree(dir) + except OSError: pass + err("Waf cannot be unpacked, check that bzip2 support is present") + + try: + for x in t: t.extract(x) + finally: + t.close() + + for x in ('Tools', 'extras'): + os.chmod(join('waflib',x), 493) + + if sys.hexversion<0x300000f: + sys.path = [join(dir, 'waflib')] + sys.path + import fixpy2 + fixpy2.fixdir(dir) + + os.remove(tmp) + os.chdir(cwd) + + try: dir = unicode(dir, 'mbcs') + except: pass + try: + from ctypes import windll + windll.kernel32.SetFileAttributesW(dir, 2) + except: + pass + +def test(dir): + try: + os.stat(join(dir, 'waflib')) + return os.path.abspath(dir) + except OSError: + pass + +def find_lib(): + src = os.path.abspath(inspect.getfile(inspect.getmodule(err))) + base, name = os.path.split(src) + + #devs use $WAFDIR + w=test(os.environ.get('WAFDIR', '')) + if w: return w + + #waf-light + 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) + for i in (INSTALL,'/usr','/usr/local','/opt'): + w = test(i + '/lib/' + dirname) + if w: return w + + #waf-local + dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname) + w = test(dir) + if w: return w + + #unpack + unpack_wafdir(dir, src) + return dir + +wafdir = find_lib() +sys.path.insert(0, wafdir) + +if __name__ == '__main__': + + from waflib import Scripting + Scripting.waf_entry_point(cwd, VERSION, wafdir) + +#==> +#BZh91AY&SY�l��#.� ����#.P�����������u�(�(�0��0�b{���#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.��:T�������U+�9��4��ZF�u%R���g}z��j�sPiӅ��;���t{��U)�%{<����U���졯]��آ#.��a=�����q��u���Z97y�>�@:��㵾�v��`;�ד���w\#.#.#.�#.籠 �H#.#.�#.휠4U-�4�#.IG@#.���׽�z�#.�¨���+F#.� #.Qݎ��B�PP#.:�P�g�����7��ۤF=��իt跩]ْ���)$��������wƻ�}�׽�{��(^>�{f��S��;�w�I��}{��w{7{�w��v�u�/�<��g���o+utl��O���FvU�Q�#1�TRA�2�#14wgUv�=�=ΰ�u�{ox�;e�R%*n�=��D '��EA=z#.9�R;4��<.��s��d�x}���w_g��6$(T�F����^���u��3�kK���ȷ��m�#1�os)>v���=�0����cO<�s�;#�"��r�ս�t��i#���l��������{]ں˛n�n㹳�O���=�.ڝsu�{�q��׺��R�<+����ӊ��`���yw��{K��wt�5��Nk���^���g)}qٟ<��{����{wyr�{��Kv�1�׽-��E;o]���}�:�i}��ٲ|��#.;Uޯ;������ׯGx@{2�RH"�{����):h�n۸�{¶���uuc�v��y�����3���T*��=��n��]���#.�޽m{#.i��y˝f�{�x��s_Y�Ek�9��l})�^\z[��iy{��i>��b�`�P3n�]�g�yv��<��wm�ݞJ�잚�nu�Pn-v����z퍅�ow\ϭ���wv�v�r�:6OTs�֯��z���8����]g1�;1%�N�k����/{ۘ�+��Լ>vޮ��m��z�{y�9�+p���8�/Yr��n0�מ���^�7obu�w�:<�{�Qm)�!9�k��#1#.t#.4^���mխڭ�xn��=Փ���{|����@�9��j50#.F�N��y#/���h�)���g5���` ��������V������/Fl�n#/�k@�(f�ƺR�]6�Jv���7��.��L��w:;��z�}=����y�mU���ϝ/�7c�;m����g:��G/�gfme�u�ٞ{u�} ��9����î��u��_�M@@&�#.L�d����<�̨�OHmC�#.h� ����LԂS@� @@@Ȫ~ђM��dj���zzSG��P4z�#.#.#.�M"DA#.S4�AO%<����=������S�ڏҍ2#.d@#.#.OT��4#@2&��T�2S#/&C�4h4hz�P�!��#/44#.#.#.$��4#.�I� �&���Si��4'����#.����#.#.�#.I�E<�Й��ST�L����S�j�z��Tzz��#.#.#.h#.#.���>�]rO�ի�M���u��~j�w��`$��z�u�5Zd�Uk���Y'�mj�# ���1-�d=~~�m�}��I]��?\�9IթU�%O3*�����y�a|��*�ϸ��ڷV��8�'H+�]q�F�7*#.N��#.�uT�=��+�QUQ>1�Xzt������x�T[�<���Wo\� &���i q �`�b#.����@jŴ��`��E�F֭�TjZڷ��%�U�֨�UB�H��>0R�)b*0T2Pd�� �PDm]U�V���6���3&B�Ff��i����"�Z&eBAc �(Ҋm�l(��L�A(�jj-F��m�Y4�%��d�M�4#.k�404ŕ+"�d�Z��)f�K5�!e�6�`�33ԑ��Z�$�i6H�(M�4��,��1��ѩ�Ȗ��Y���2�b�4̓0�TB`�&�m��hRQ��i���-�*R�d���� �5�MJ()�Fȑ�"iE&ED�6)6a�DAR���($FdD C"2Hڑ2�������D��fAK+,��Idh��Y61���,��e!#FҚA6$�ȣ(���fLH*J4�Di$#1Ȋlh�,E2��E3��Hf�I�ҙ�L,F��#.���`JM�DD���$I���(�"�D��C!����&P�I)5eF�a �ԑ$�"қ HE�؀�,�(�Y�Q6S"�Ie ��6D�2��$�iJa�Q`,�i���DX��d��(�&E4�MH��f�Ɠ�����e53H�)"�h�kP,$��I�2E��"h&�H�3 �J��be ��E&L��#� �����eL�Y��k���Ԍ�)�+(QP�E"�$�$cc*i��ň�L����)Y��["(��ML�fAHc(�Cf�M��5*S&h�6FHɑM�(�F2���"(�TRI�I4�Ѥ�i$�c`LF0L��L���1�2�M&Q���d,ȂSd�1J �i���e��&�X �K$d6��* XR$�cc1 �2�RX�Y�J&�F�M(Z�hI�I�$2ɲ#)�E,ѥ1�4PhM&dD��U���`�Bjf��F&�RLȈ��6���,�&���e��4b��+ e�����&iBSk�6�HJ��ۢ �1�Q��X��)Jj)PѢZm!�6�MF�DdX!�c(�)��$[" ���-�mbRij6�HZ2i���bŅ�H)��d�J�h*6U�h�-)�Y2ȪU,�0�͌�f��ѢȊ�4�ȕ2�md�6�R�f5�%#j,Sh�$��JZ�T�Ć�V�����Ej+"Q�DL��,FыT �mc`-&L(���i��R �F2�4�-�5�J&��H���-�S[Yb���L��6ɢM������,�[R���6�K)S6XV�D[iT�%)jjh�����k,XT�k+*C��P�Pʍ$HE"ņi01$Ch4&LB�ѪSQC&���M&MY,R)��4l���#.�J%3�%4� AE��$&Fm6�c�S��H���,-1$dԅ�Ć�A��5Q%2)�%�P5���24i1f�3d��Z2E��l�I(�2�,�؈�I�1�6K��"�Q�E�F��C1&�e*e%,��2V)�,�� jE��5�4ECF�)6ce��0�Q���d ����T� �(�M1�HdL����#/�)SId��&�1�QIiH�dF�32�a�3AɣT�6(�Y��)�X���! �m�TTj(�X̶L)�hii��F�j#1�6,�e$*2cd���2"�6��Ũ�h���( �RU�&���(mb�!�4�!E$�fIh�*�b2��m(�-�&JH�h�fP�(�3%T؆l��j#m��ME�)�4�+֓���)�CD�%2 �Eƣd�d�&#�JCY&`�Vd#/*4�̩��ZJɶdi#1i&���(�P�%b�I,l��4`�& �ږ#E���E��kF�2�m&�D�cRQb�M �L��&4Ԉġ��$ͨ�U%��*YVJЛR-�DlQ$UE3l�ڍ�b������k+Z+iQ���QJj6�f*i�"���4�cX�*H�%lY6�L�Ti-����ѴZ�f�b�2�Q1%��4lSI6�d�h�ش�[F5���42��Y6���!mI��ME26��Pl#/f���f�5@�$�I���e�D�#c'�:����]?�H�V|��U�u���'H��}@��'N�{��̏(�&�I"H��5%Y?�,Ƴ��� �V����fd�?���B��'��9|�\Q`D����� 2��%�����Z?7���L����j���g?��_�;�#1���u>9M�)k>M���Λ�~r,��z~��}z���L�+��{'2�9�6�m�~�9��E =P����?�\<4���b!R��[\�:K��#1(��W��ib7-Q�6��h�¤kye���>�Y���$�|;\��՝3��޲q#1�+ R)$H�"��c�6����%@�)f|�ʑ��sF�_H����`jm��92<_��`��z:���s4F�>.���������r�،b����^=�3}���>ס>on��¸�E�������_��P5�H�2D�����ush� < �r�����Qo/�}�]�e�G1'��="�_Zj���9��Z� ��;�4s�E�S+�t����^;llO�u�^6�P[�����W��[�L��ȶ���A����O7�z{�B�i��n�{�;w,*t��[U��~9d:x�鄕d6�֠����[aP��+:B�j&��w��ܣ�r�J2�I�G�~/+^�]_�߽\<%'����z)dE��V���c�d��m�=yA�o���o��89H�v�3��Qn�#`]�R#1g���|�e��ݒrg@���C$:���]cd�Tx�}#�����d*�$#1��GP�'��M�����M©�f5�?m �Q����YY#1��֕b#������>*�zN� h$�]̃R�"�m���>��|?M���N�g�b&c�ы�K�3&)|�u�#f{ߓ��__/o܈����*��^��GcJ�x�D�[.x������_�����P�**(��7�&�xڹ������)}�Rm{+��g����<��)#/�*Ab���䆰��c)���wnW{�m���d���('I뗉S�W�UD ���z�Žz�"�U���w,Z+�Ku��~�ƨ£=i�{1�h��Y�Ȍ����cPi-�4Y�_��x�W~�Y���8���*!�Z[���8��5�N^���#.�B?�G� ��#'��C�h_9E�/�� ֑"E�`���&P�ԣ�=�H�JHt�i8~T�{𔬢)2�J���qds�\S����Og�ξ�e1�&��n�/�����ͤ�����A.``��V�*N�q���gY#1"�*Y����������Q���;�|)g��-N��3�Y��#�ŇT� ���뤰�(M�>��\�O0ÙU#/�\% �w �KI�{��� ����^�{|�^j�Rd�(��"�V���^A���1#�q:�R~:L�_Z�׶aĥ�QȪA$AQ;G�0p��cy ^���!:`,��`�]Ϯin�ɫmAn�&���E� q#�r���cԺl Q�d&�H0��c�s*r绹�S]#1#/[�+.$YQ�B�F��7�ֵ���8DÐ���&��������鎕Ծ�ꅙ�Y<�����t��N3ZH<��y�đ�����i�{b\����6��EA�;��Q>P:�$9�1�u& t���C��./�̗��t��uX�D���S��7����9�J��s#1��7\�箚�Q�zf�u�d�O�7#1����{�k�!i���ۿ4�g��<��ڜpy��]�t�荜�}����O�֓�;�<}�g#1VDZ�Nӿ�=��G�m�Ϗ�<�4��(-���1���}� K��R�T�oI�?D����L�Sǧg ��>>#J]�I&Y>Q �h�2ᗿI0�ߒa�l#r<��΅�f[�5a�V�s���̷�VuoC#1*�l��ϫ��E����zfN���CUF�GX~ 9���>�������-��l����e]���hbT&I���-ˁv�l���D� �T �^���]��o". _�q�%ϣ��v1<(�1�1�N#/xr�qL�'����q�5�� �˪���ouH�q��]����v��K�}JNn/T�W���?m7�\�ʁ�d�������������RL-'�!p�>(c ��QAA���#1m��eX�*A�QZs�ɟkE�����aTV~��2���`�s��gZW��w�d1BA�TN w�d����v����e��O�����#���C[�䂿z&�_\�ygd��owv_�:q��W4�:l;F���}US��`�7i�v���je���)�&���ޞ�_����Jq7��)���:�� /–'�2����f�>�8��n�=�}̒��7�u���I�qa�,Fe��p&*�������H0�9L~�:d����)��~]d#1X��.#.��R)�#��]��/�J�d�N��<97�.�o�1�*�NLmw��yy��� N�)��������/)J�X?#1O#&~-<2�DF/�Г���<��h��0�݁"� ��Ȉ�R_�$�3��ĸ�َ;��N�B��Ɉ D��C���X�������r )0���;��$�#1�u�ni��C����zx*(�^Q�F��g[5���tW{�!��da*p�o1h�fv=����^��^u׎z�eq�;�c#��M��W��<�;�Y�t�����/����i �N?/���8����HI !���J�"5O_�6�l��X�6��YF թa짔�/L�h��]m��*����L��� 5R,U'� ��^r]�er��b#1,� �Q�eV�]Eq+�9Qr�t3;�S�^^���r������:���'o�e��{S�#1x{�=�Y�S?��hK�y�Qn:�V~�#/�<�]�^��=�{`tJ�\l �߫�1�� ��q���%5.xp���D?�U;�"Sئ>�,T���Wߓ���{#/U9��Q�9ͦ��m��2�;��I�s�\���D���#.�ӎ䫑��y #.� � ����#1����Գg��j�nr 6g>���r�uBLJXx��!����a�xt��]����2��ܞ~��R�|H29b��M@�n�@�=9k��A�3��kj1y>=��C0#1���H�uҡ�.Te��2���ow#/��P�?>=s�a��Y�����s��M�Ns9�f~���~|�aP��_ә8�As�)��U}��.8�/�3gk�k�i��T��X~W�ǫ���Y� L� ��~�ݱ ����wIz��=��fJ�dG��� h8���tV�=��� <�39�k�ås�����uM�j�I�ӚO-�=�ruW�.8�-��g���#/.��3��Cl�"SG>�" ��Y�03�񂈒N��z��J8GT���U��*C��9���Ho;%�����iP/°�M&��ٚ�C ڄ��c�y>�`�Ð��@f�z��-4�ā��G!EU��I��� ��4�q�p��������_��h4�A[r�� �����B�������Ȳ��!�b"F�?�ӿ��e?���hz��6���=�?��>VXi�}�Ug�O�W�����ׇt��z�'C\eenz��E��������f~���V��CSVJ%�@t����c����Og�rC���W� I#��J9�aclyV��H��`�)j�R�zcUi�x#��#/ ��3�s��zvt7T#1^���� ,"s�8O���4��-�)�ƚ�2��PDb�b��M�噘.EX�E?��~ Y�9w�=��`_�o�c��ϵ'�`�Ŷ'����[�kZT�f=�"��#/z�=+�:d��9���(1�h���u�1��~{��.p�"[�?��M~����>V��ܕ�4.#1Kh~{}9O�=�+����Z��9�|.���3������6X������J��̕��2Y�g�"�#1��,o-���|��D���^�8��%��X�3v�� JD6[+1#1� V�J�)=�XUb�&-b8S��\���������Ѿ�o@�ʇ����'��$�$��(t�����է���(q�����kd(�}�����&` �ݛq�m�.i��`�.P�@r�ݟ���}�9F#1yf|��<�-��3�hNIy�qU �o!���A�ڴѧ�9��<��q�)������Fb���KM���n"h� �c�R������=��V�^aD<0�����m�ָv#/��j�Q˹r����T�j( ��h�������v�)�"�%+�go�\~�o��(� �B4�as��#��ݎI˸�}hv�_7mM�uҭҨ��?���,me�Ɛ�!�8:Z�@���y����*!"��P�D�v�Œ����f�G�2<1�$������ -4�D��*x^:4�����k�a�[�i�0�]�v�����������^hRZ����i�y�֌(AI-�� IuLV?�.�:I���������|�Mb��a��O�bb#/��t�a�@�w|�{�����$:^OƕA�Y��fG#/7:Fº�{t�{f7�9I�B��S:��7�"M�� ɂ�$�(:��P��� 91�MR���-2�{�"�M�cNL�,�2-K垄ɒYQ.3|te�:.^��َ��Z��OY�|�Ԓ� �� �� EC�Y�M]ٯ6��M��Z���[b�7��αU�׶eJL��~1�w��b˓պ��4�k�9.�VE�9˲��GP�+[�o׆,�T��ƀ�Ίdg��n�䦣EI�`aW����7��u���_F��̈Z�U[������S(K������•?#/�F΁1��ww�r��C�PC_#1��9�\z(p����-���ˁ*�g���N�c���ЁvQ5&i���߯�?eŚ����[ٱ��vݮ�f�O��_}��(��y�ךȖu���1|Aq��\�S��0`�o*sQ�#XyA1d���mz�x�)� w�W�-XNźiDb���zTg��Duպ/�� ��"�Ƨ`��yj-�������(���l�4zd�">+S�s�4�5#/-ރ�ƛ��E�睳8�p�({�v3��{�����p�3Af�n�4e����JN���m�� _,CȮ-S��������5���ǚ|y��_��}���W"AJ����5�u�.�WX�D+U G�Ex#/��䣜O�ж9� 5:��#/�|�~�W��>��x���)����|?�=��ã��W{��x�X�BN/I`��f(d1���X�H��pdn��R}�����m�Ϸ�v�;�M�hk�e /&ߗ�, �$A�%����Guض�-n1]���D5��$S\�<��-*9AG�(䟝:@����j�ʒ-ɓt��>?O���Өl@�����睱��Nz]�Y��:�&ک#15�+Xeu�Y�q8�'�r�1p! #.A$���o���!�M���p�Y�>6�۩b��cc��� �e[�1�?V��(�߃�L���EI���M-���vcxo��Y^�O���<E ���S�#.������Ɛ�SD�����Du?/ w .��c>����aA]l�1��=��+��[&�1#1#5@�jE0�i�i�!/��~�^�M�& .����A}F#�����#/-�?ӭ& 0%;#.b1��_��Ea�g�#1L?Oo���ܵ_���O�� �c�1�"B1#Ǒ� JK�j�]Xct��ln�X��)�nC${�3�5�#. ����Vq�r#.�"�DlG� ��K����W�͐s���P�=�H ��^#�����^lSP�d�(��ܝ�� �>[����>���:�~@`t���]q�-����]�m����d_}��TU#1/���\���_�{�(H�� �;0 g�s@W���9��P�L�C�)y��Y[��ryKԘ#/�Uu3��IUA�B�"!$��r �+���*�+���A�_��Χle�L��a#1��!'6������)z�v��vU�ʢ.�HŁe UQu�0�+��M9�!�'���y�������Κ�<��U+��!0SS&�D���K'(��!��f��í���_�ژc+�_��.��Ua7l��DQ�B�IMd u�uI�$3�\~&Q�-��g�p@���VJ��P��^�$w��t���V(/�G�R���V���F�����A��@Hk #/#.������/c|z�ׇl�]��%p�p��s{���l��#.� �&���n���$@�����E#�1JБC�l���,5� ����������S��� ՛��;�3���������G%#.�J�k�UI��w�}���ކ5lB�>�#.A�E��i��M4j��*g�g?��t�k7#ǣ@C(��3��`D䘧x�5�)�i�^�-O�`�e�#/$�i�:����F����6tj�8b�,��$�YZɟ:u���Xu���C��:=�gh��5!$�ۃo��<�����b۾~�W�@s��eE��"8B�l>�sP�̮��É�ș�v%��]�њ��x��_h�O�:�/,�a�Y���VIB�w������;�>psq;������]� :f� ��ї�F�j�s�z_"�}����^��L�7�I��P_����k�8n5Ϣ�I����R���n�L|_�n������¿{���P����"1@��`�޺~���{��!�*u�*S��z�Ԇd�d,N0�3'��b�B�")#1ly0�ܡDY(�n5A"%0g�����s��#��-�� L�}���}��#1���X"�b*�?xg3���(N?�7�8�w�� n�����ȐJ�1׊�p#��s|#.|����������䶾 ��V8I#.�+.�BV��h'�05���b�N�������ǔӏ(�t��ۛB���|0as�ˆa�FW4HqF8�]}Ql�,P~�ZI*ۖ��;J�QP�U+j��ꦪ�'*�u��a��=%T2�V� ��'�ݦ��9MhR���}��=�q��I ѳ��ꆄ�4��#/䆨6m�шv�d*GN�f��:2�0�MFb�/P�0���P�<шu S���p�ە7�*:d�|{�,u�k��p��$qJ�W&]��{�u�+f�Z9ěHe�I��ӯ�^���wKӭ�3e{�*�OLYDS�1>R�a��L{���pL��G�#/p���s a3�Fz}?<���$>�ҙ�S�;�׻�G�|ii����:�f� ohc�8ۯ*��]R������D��@ B�2e(�EEm���,/wZx�3���76��@$�P��bl�N"���o��+��}f�{g�{~���q#.�#1�+aL-��0ٚa��Rˈ���>zM�&�XdJ�kP��΅�StK�Y�T�~>����d�w���kg�-#1�qC`�ʣ�%��D�(q�a^�����˰qTG �f�hMz`M$.l1\v��!�-������'#/K�J�C���,=����`i�`#1�Y��j��� ��}�".��D�����q߮�С�0�`úB‘>��?O_yK,D"3���H�v�;�U��Mڧ;�����{z�JZv#/t_�>]J^�� ���B�b�E�Oэ�0���P"�=ё"s^�W#1�L.�:��0��6$��E�#/�ʥV&r��g w��T74�7ed���<�9�f#1�v���ñ� �b�#/f��T<�ȧ���#.%���ħD���nU�����2M��zw�9�z:+tp�<�kߞ�mI�2��I#.����W�5_y��܀�dc&��(��*�m�F�`e��#/u&eyc��5 ��!�x�7��е���F`�؎�~�����ga$o����n���q��PUo0�J��2�Lh�b�����!��U#ԀS��Ut�5�+��!#.Yw0��X�S�|��i�g|��M�(���gS����9��ǻF��C����3�{EN�5*[���C��E���fa��+��}[\S�At�#1oD�p�#."����pt��L�ɎEE 2�.X.Z6泮]���|�}�?ՒxY��lJ>�����@�j�`N'����#���Zԟ���>��X$sOq��oڎ$H$y�#1$�#�TҬ�a1г�r�UP-"��DӡG���q:je�4�D&�F���hd����|��\>�?�l��G/���]#1�F�\�s���x#. �5Z''3I*��j�=!��1]RT�b����a��~���Ů�}!v_d��\����eN���rO;NuBq���Ɵ"��tE����f�L$�C��D�w����- J0�˰ f�0�B�ͷlݡo�e)�4J��8m�ʎYZN�m)� �ǯٜ'ayh) d�C�f5� *���|l*�|R��:j�dz)�ӐN91,��8�x0�Ԭ�e��M8Z$P�$�*�B���q����Nݨ�";�#�a��*)��䡼m��ik�ߚ��㾢��<�����4��������m�LV$~��˘g(qk��^�+���I��r�]Q��NGw o�3�������>}B��>��d*-J�1C�>7��P؄4`��1u8<��W�����Hox��_��;�s���q�jpP��$���a��=N�;b��c%,)0Sr �DR��y�0vƟ�&G��Q��Jr=����p�SSo�����T�l6�w�}Q���}d�������)� Q|p�a��($Eֽ��{d�{ŧB�>�saZL�����$ � ��NpȻq!XU��zLi���&���vò��>#/�h�`Ɯ(��2�>��lV��˄`��ñ ">��_#/���x�y��:�#K�+��R$�v��h�<�*>����/�����gQ�)Dѣ?��9�L��Ԉ�/-��F/��q��d���F�ҟ��2U�T�d�$I��U�1�?��>Ӣ��=أ�?L|�#1��� �A�"B�(�}�)z{��|�>��*������|#/�g�҇�۾�OUN�KM�����,tQ�mPbX�#1U�j���|4�[��5�bM��-�Z�b5r�+F�6ۦ�`��;� �#1T5�d̴��L-�D�md��҆K_�jN���f֡����z�����i�+��m���ח�(;g��y��#.'�@J@M��Ǚo�[�L:#.�C*�ɷ���x _ljd>�����;�e� � �Ի!ԡ�H6ơX��3���6�����N}�,m`;�K�#1�)̞h������5Aë���N|F~Ah�-���5���Na���wI*�W4q ����t K�#1�*k|��?'1r��/�r�[���L9(�&�_DWdB��J���U �Z������w"��F]���p� a���������'o��#/8�$;3�y�� v8y.��q��'���V��Ǿ��麗���~�����ڻ��o�o�hU�@ha���Oq���qag�/�uO����ת�� ��z��Hg��/�Ppp���{��:cBk�?+�Jϒ�a�A* ^B�Ȋně��6h�����/����>����_���ۥ����5���q�37�G�;��ur�s�������L3��i���_�#/�2��2]h�(��q���_j!���7 pK������#/�z��#.%����V�5������ �Xjե #1@J_���k�+��S�AQ�қ�9=!y��[�����v��#aP�،�:�LڒɢL@fʖ%�q��4ث���d�%�,�I�Ϗ��цx_��4��e�������JȤ�8���G�@�[����#1:�g�g�'X�"��ӵ����i}=�P�ӟ��N����#1-��Jx��?�[P<�|?�y�����(�ygA$d�b#.TNs�K�#���#1 cyL�����WW�����*���DR@��D�`�������D�]8�>l|��K��J��4`����F/�N��8{gc�mk���酸p�{�x���Ȉe�!���'�&��k��i��e��'�{K�wg+�BV��=��J��p��5+#.�z��ò+���Y\�NU��@�r�(P��P��QP)Ksi���2{`pS��Cp� i��I��'l(����(�P��>�>���>��G� A�Œa�����7YT"v&z3�ӆ���nm����q~.���n�� ڒ��HM�P���]�e0����t�D�D���9l�9KJC'��ot=Z�T�~�C�y~O��������쀏��K����_��||S*�g������c+>��c���3g�7z�C�.�E�wK�����6��5޶����F�����˹G0��g��E�s�7�/��K��ک9�c#Ĺ�L��D�O]����G�=}\�R�,i��=y��?��m�]�S�tw�5x���&�]%k�v�������,J�pử�+���P�'�@�pT�>� B��zХ0cҀ�y�1P�#/9j�,-����c��8 S�8k�he�$��=;��9�I7���Un��;�u?��](0�:.��p.Q��O� �e�C\�W����B�Hl����������X�0����O� ���e��Ҋ+��^����P�80�z|�<������6$��K��78�Q��<��>����~��R}Y�C���(����)do��!��_O^�~/��x�I�lZe�����V�UA�b�yUHf � �&�x�5J�b�����I�I�OKe�~���M��#1�����z�c�z����EA% �S�����σ}sE\��w����g(}�C�1Մ� �����L��>����x\=>(}���T1d�&*���X7Ey���oa��b$��Bӡ��x���;OJ���O�[<��9O��;+���~��#1����%|�ĝZbX�*1=0z�����_}���+�#.�J F`9a1#���җf�_L�w#/C���+��a?z��샥u���T.!D���������@*�̻���c�tj�BE�D��d��<�J�黏������������kO����1UA�����^��֚�?���~�!e=-���0W���~9��YMej㪾�zY^�ߵ��'�o�u��E��~~�cv�t�wV!c����v�­VA��k�������? 5�§o M�4yt9�n��U�7��`�v��l�'�Wg�F^3`�;Ɇ����wދ���t#1�@������g�7�4�<�sم��7gњL2z���ڎB�"@f{��_|W�C��ᮩOa���Q�=7a���!,�8�';&��% ���l��t�N<^׾�Z��WN~W͌ae:�����h�������тq���N���:km_Ʃ��#/��g�}CLy���.[�t<�H��Ң햭\��j�](�rc�[���κu��j�����~}�WU���a�Ʊ��[]y y�Ĺ���x7��E�wB���z\����^8r_'o�p߆�;�p�f�)٤�#~�xȗ�Ѻ����uM�6u�hx�0�1`xW;y8,d7rUa��ၫ�7( �03z1�.��N*���]��)��8����ɶ��Q����L�~�ӟ���������!sl7}\����_�3���4���?㌥���]ֻw_�÷.ֆ�p9�>�?l�6�^̓��շ�D*#�ߡ�C��G]�_��M㥆���V�|z�;�}X;~�6�{�!�,��[�n���'�ֵ^8�����1�-ɑS��<:��p�/|g�~�_�J���y^�1������?�v}�5�ޘ&!®��\�^�vYg�*<������Ʒ;�!��^#/�K��7���j�w�����#1(�NR֢22������������|�rs�� Ƨ#�z���U��tr�����(?5\#.R��R�t�u��>�|���� �v5y:�&������.g��GV]�_p���v�p��K����ݟ��׏#)e}�غ�}����4�r��ڃ�����[����x���������=���`�#�����h�mr�����#/_�=�@࿶ċv��1�V���~��W=�>�kp�n�r5-����A�Pk�&�1����{���6�x|��~�L��?g�����G�0���}3`*�D���G(��9���;���Or�D(�#1�=��7�ig���#.��@T �����Ղ"�a��7�M�cO5]����w�u���/˗d�2�~���A���ȭ����I����NʼsE@#�����D�ÿ�|Q}��=�5{���><z>�D6i�7wJG{�Do�#.�MS±On�aTB4K�����}�%����½��.��#/��3$��y+�`H#/ 4ב� ��F!�0qB#���Xκ#1`��J�cɦ~J���}�2��v��u�hh�C��"C��#//�f��$;x}��$�9ڗ���x6$\=r2�$�!�%�f9ŢV���?T��=g�� �es�{��L9#.�&���f�+v��~��N�g��+^�R�T����2q�Ǒ������\�McXrȈT�(#+�����8w-uYMk�%�(Ejc�����z��T_W�^�tiàO>͆M����&�ctr�I���˔[�³٨���/���j�I������gG[�t���՚B[�je�.��5�����ˍ���a~���*��羝��OA��eֺ��I������9D��ψ(�B5�`h�4�ma ��g�8��}ro#/ZX���e~�#1=~��'�2���N��CwC��Vp�'�B{�*�l�N�{#�R�Y1�#�p��]J�_�7���GW����h#/�H7�z��#1I+�����P/���WFw��݀u�)������r#.nj�^�#/���*ݹ��~o���&O���*?hl����Yr�R�eF�� ?w�!��rd��V���� �.e�V��[4��1��ZL!���>�"�h����;g�c�DB!�*���Ys+�0�<Y�q-�B�f[0\#1al�R�3) ��cʈ�yK�i�;��MV '�CE%�����ӳ�)�Н� U��~�n�F+F\��_L�qI��lb���n��5�M?��}�7h<Ҏ���L��V�r���x �S)�(�m�D�T54~'�m=��t�N�h&���.�*��3UAk��S��ׄ�^#1m�e0��Y/��#1S2�b�4�#1�Ȫ�W�*�%6!$[m^��՚e8����xcj��Ě�?��|���y��$1p�g>�]y� �v+t�W�.]�y~'�o%y��|j�ۮ��ݻw���x��zk�>�F����?�8���g'�;䜂��w��`�4W�c�tH�<��5�(�o���c;�̲�tY5�Ut�垸�7Do���;k(�����$�3���h>�������~�>����J%��<�~�����S3Z�����-���p���^�eoN���ǃu�"}[���[��G����YaG5�� �#<~}��v�N���MaS���w��o��Ç'񳓣U���"qƿ�?�>3Id��Ⱦ��zBH��+�G�����#/��������_��:D�9��ٙ��gS0�Œ�J�$�����4���6�L&&�s0� AkXF �ADe��Ce4V��/9�G�laFS*R�� �.$�PK+��i��chba�����pҴ}e��9M����Jv# e�#K�4T%KD���޷��t�£=|�-)0�\bR�[�0��R$&ƞ��/S�EÀ�h�D������0�#1�=���!�5��7 �n�[L��|w�),�NJ�6��&�@C���A��3��u�V#1l��Y#L���YC_|�Q�K�l ��M�a���҅`Y�SƓ!P���5�R�aQK���њ8'��B� I$���A)d�,=%�ʪ���x׬���w���+�X݄�������p6�h�OoPP:��+��]4�����m��TR�Z�/��z�^����#=�a#�y�P���hFp�C�r�t�=Y��#1��m��""uq�^�꫑�8�ϺϛX�z#E�F�`����o�#��?��+�u��#.��9���;H �/�xC!�V�j����n�eb?J�)����ˁҪ��I%�U3:�{��|�\XKRVڞ~_!!�qC��S�����/�ǟ� nu|���Qn��k�y���I$"PG�4q��TU�Q�����z���D�d�����d���C�nHЏggB�.� &�.�9&,��0Ɔ*���I�ߪ�Eb��oL6UﺾYab��s�n|�Cp����=�|>#16#B�3 QY�ض���#�K*�*�i[�&X2��t�������L.xpL��#1 eEe Q�|��/�/��_Ôh��m �v �w��������D��,?����9��0EJa��/A��M���I���'g-��#1��^�N����,��ܨQ ��Q��>�LCt��B `��Y k�4!4� o#1�e�,}LȎ�ɽfogE&M��,�{ͭ�a�'�d1:m=)M�[Q�[�� ��Z#1K d���&%�L�#.�r�5��O,��:��"�8�q̹E�\4�d&��39 ��A���tQA����s���QXk��E�R�Q�Zm��C ���2t��������!�pH�$��y��g�~�j���z��#.B �7�a�����C�������{��'���O�Dӂ;7X�"g{��2��p�\"@q��AP�c���i��\?>�q5ߔ��7�����Q���V[4���ˡ:=#.��� S3��9��aS)���%I�L�&O����fB��ơ?fw��fr����gm�� ���o�ɤɶ������d-\��{���/,հ/�0�x3M\i�(w�����p��ܱ�L������ -����>hp�p�;g%2�#a��颋���#�ݸ�$�q�Bn��^���Ʒ���JE&�%B��r�� �V���?����g��9�w.��.;�Ә�=������G��'��0EB� ���������&`%[:�����P�����b��z� �#1�@PD��2�j,`��#�0�У�%c�k��]��q��m���z�IV�X��w@WP���1��3k��)2p�:�M#1^!ʘ� tO�Gy�/�ۜ�p�sMȜ�=��DcB1��8��*j��SI_�\dI��F6I'V>Y?c#1k}����)�x��AQ5|6��3�ί�w\��0��*I���.7�:��Ɉb ���Tۥ�(���8�8 �4�:������뻙w�<(:R(���jD�:��}B`���0&��tQg�}m��%[ǬɖL&L�5�(C�pI�߂�e*�!t_#1G�2x`�2I'h-��g*��>{.ծ�Ks���O0n�M�;t�`8�R>�k�������14�e� C�%b������'Ֆ ���'e`�"��VCY���$Ћ���t�$ުa�!��;ft^'���z&zLq۬��6�.��=��aȎW��0��흠���cC �תX�J�β�7���>�u���y[���m�"��n���<]SB�r�e�F#1�a��K��_����<����7�LN$�L�o��voiN���޵��`��3�� ��2b����:�SS��WN}�y����X{��ۍCp�:�t�k�Gٻ}��~ٟ���7���|_�a���fjF������ZV�ۃ���Ԯeů=�ű�.�σ-��#/;���ҩ/L�7#.x��R��@H1H� ا���O��I����2}���ƜS�����)�a���U�>!]U�#1�h-��2 �@`��u�]ܧ?�u�r]q�2;�a�pO#/���,j#.�d�wY�„2�X��j�ŦT���=�J �����,m�����k�b�Xs�c�s���f&'X�,o>b������AlvI�<��T���vs��� ^�[����G�$\�����8�m�;cV��R=��&���ܑ��*�.���9M� Y��j{ >$��ޛn�GnG&L�S�1��e�y瑲)IW �]�eː��%Xi-���dŰ�$a?���fl��#1���yh�C[����e��,\$��afQ��#.�uJ����O�H�_us�F}�û]w���KN=�hYd������U�5�ݹ ��� ������OGV��d)X���{�o$w�}����ʥ��h��B8����\�n��}G�vo]'v]Y~Q��:�+ˆ?h_ epvq�i����yL�jk��=Q�I��Gdz��׸=2RO]W� 6Q�X[�A�gBLñ��3�>�ۤ��g#/Mu����o܎������v�y��E#/54��3R����(�� ^ɴ�I��됔Щ�'7;.�Bw��1�^�Y�����ZԺI�ga@bO�_�/�N�h��� Y�0����R��f���ݏ�2p��~�ʡ9d�x9!�( �t�?DN�ʀO�\�O��{α�ѓO�zZLH���,$��P}���eXva{o}�� L:- @~佇��n�>CG�v룪��M,��pf����eL�}��J���fB�u�-3�J2b5lK�u���B=> �j"�н��+o�"#/P�X}i�0����lc� ���Ռ��"�bq*�D'q�u�GDz��/�蝌tA$�nG��An��uhseL�u��vY�|��zu�8�y֙�&;#��[�_)��@�1��|�;S ��O3\���rS��:��� .>��wrr��Wo$�H�x���E����~��{�I���s�#1N�uL�PuUO6�����EGیF�0TC$#/= �N�~3���_�t;ƛL����2��={I�@�^e~��^'�#1�ܙR.f�N�����ϮA�#.�I�e�b�[X�M>H`dY��`4@儫z��-=$D�Z�cgN�D���M��Ɍ�k#�H%�m+���~��#/Z���lC�r�#/|��(x�{K�v}v�JŠB��Ӕ��?��!'��Y/�w����ߞ^I#1���C�ռ2M��/{;[|�:0�=#/�V����&��(�\�S�:��|�z�����T�,���E�2�]N�#5zxM�SC[)��V*$���wI�=�� ���Ւ}{�;vȆf`�(4�4�&�1P�~!���0��K2/{���GQ�󙓳q��[�� ��ķ�����{�����9�55�v����.�W.��0�߃#��kEŘ��MQ}��Z E� �w�cM R�v�I�F���6� d\�#�V#/�g�-І���q1$� M�I����c=\ּo���9��"����wƓ�U�nm�C��:7���#�q��Q.C��h�v�N�|� � $�j��jm����^ `��I�{����7���NP�����7s���r��>��':��$sC�nul �\Œ=�y�A������:��A�9�Ha�`a���ӛ����3;\�=BM��i������QʓΨk�&��J8@�ვ�P��;�J�=#.�#k�o-�bX����ޢ�郅��������\�LCz�'��hx��\�ǻX�V⌳h���l�"���7�t)\��ΗK�,e`�s#1��UGg���O��x3,�%�T��L��U�*���A��q�#��e�y��:�h�ʝ*��Ŗ��],j���:/a P���,�̝v>G!�"3+V��6Mv:_�������}oC����7�^5��NWM��=�\�٬[T�tչL��k���r{�}i�#0k�mP':���_R6�1M$�׉�#�����b��v��I�U��L��#/U��1��R�Sd(��m�0݋�5�����0j�C�@L�����EM�8���D��o�jZ���(. 7�o[s�˿w*��}��LY�c�&���G�m�i�K*��'�d�-$��ku�ƅ�����ն5�o�6��#/�*�� �Z���$�UGƁ�˯ݰf�{RV�}ڮ�C��1Ơ����d���pbъ����#/3�l��UL�C�������G�6,�Qd�7��� �a���[�ݿkBր�17�.����B�p-��%~�6�*��3 C��h��v��G���"#/V���wBȼ�Z;�wyP�R �v�0n���iV��F-#/���r�7��(W�:Wܽ=����8����7��b�#5B�#/^Q�`�1:��.�n6��Y8b�v�۹#.�V-pd�x�;���t9�2`��Ě��c��ן[ӯڠ��B��.m��? Y)?.p�����E�y��f9�/�Z^�����Q�+�y��ͅ�3�e����U#.Z�%g���X�r�]�M��d��7��J�Dp��©j ����B�(�([�{>��_�~&]UNbo31d�2kex�Z�[#/u=!_u"H!��v?#18J�IQ��-t)��������s�I��ͧ��e�^�!�]�b��U���;�3��2��<�i�t�<.�?�u���X QeH�r�ǰ�����H�:4$�.q����!�s#1��z}'��2�8v��N��͸��;y�;Ƥ̬*���{_�ܦ�Ii�.%�ߒ�y@�6 Mo� 3�F���9��d�,�-KcU�ֵ�,|�\� "$EuB��M#,���`Mj1[C����a�M�iLh��Q�ц�+�Ti��������8$V�P"XBTB_�,�S�{^��:��&w�KRQm�7�@�4�1����EY���=���RL�e��߭�&;�c��+�|k\�[R C݌#/�1�/S�%#.w���.��%�ћ�.�xc�Ua[��k��Q���\������Ha���@�#/u(�����������54��F��#MJ95`�Ӧ�̝� #.�)���Vs�2�C;���#/ђr���T�^�Ġ��:��p]j�6�K���$�#/���D�/ �#/�r�N8�g0)F��Ɋ檛���pY�����Ƴ�`>|j�l��瓹i�2v�F�j��ӕ&W�ۍ�T��ע�R�<����w��`�mDѨ�����M�Vj ls�R�#1��]!Ѯ��v�KX#/��-G\{U�޼��J䜀��0g��=b�h7�x�U�6�l�Ss#/�6�I��Jҧs��D�*A�-64�b�w7e-�X!'^�M�Ъ4����AҰ�s�#.��5M�W8/��6�����0�������O����v�Q�Z!�h��:�'<�w}ζ';Y5���5��3�c��A`Q��k��U&#/V�Sپ#/����F����� b[c�+�<�t&@�8k;܏0�3���p�Aa���X�:�P��#�+e}�y3��NQ��ZA�M�i� �X\�w�`[c*L�vaX��R�U�U ��o���J�_�i��YH���<���q���;b�Y�j�=�g�#.]#.�#11#1��!A�4kw�솫��J�\Y��z]g�]5FD�V��S�vx壜ҩ�+�s�A=�S� �<�V#.�+�I$=~{��@dJ�@���4lҺ���(#1��������1#.�j�@%�����sr���|� +Z�W:ú�f����]���v.�e#/sB���6�Ԣs�ҹKU!0�z.�ӗ�#1�a�����,�uf��b$�=�q��4�aI��M�NkډaApiH;%��q�͙��2ʹ@�����ےѫ�R��9�͙fK�H$L����D��za�K�Y���k�s�ɧ;��r�p�i�o#/r���ό�{s>��q]�� �&h�^��X���ˢ��'%$i:t׋���UE��(l�U���۟��jHFc�c�p_L�N��.������o�6�'�73��T>4�̔��'��j��<�d�$��* l��ef��۪��qn�:�7�mh鮘0t��c>ӓ*�'���]h�FEH�p�c�B��J:I���Y�{�]b�g�j�z��]f��7n�F(o������d���ܣZ�8�5�h�u2*;L��m��}�r��v�ls�Knώ%3�k����V���u��k�q�64 ��[� �:P���8 f7� �]����}0xي�!�#1,����9����|\��\F�o�����^#1�E��S�`��*T F��c\ju�= �ַ�o���L�x�@��g� f5C3�̆Z9�Ӑ�#׈��#D!�q0|T)-d�ch.�,�aeӤJ8�r�j�J���$�1����LqE�}�ϗ��1��C�s�H�:A�j����-�bV�;S�9ϳŻ{���0y�2Q�)\D2��#/���l��s"����y ��ݡ��٭y@p��.F���P��Ǚ���߶�-���������O��$��#.MB�c;2�#1lj�A��6�����T���M'H�}*�hBu���4�unF.��y<;�-[�Ӌv�p ���W;#�7�b#.$��<ʧ�S�����f;&����j�{��C���~�xנ\oej�1B��������oZ򅲽���ި�j��ms���� H낶�'?v����S���'H�صV#1�f4e�,�3����[���8�ּ����u�ü͝�~P���Qrِ"2����m�o����Wbp�(�`��܏�iGEI�^ܼ�e#.��-�)S��G*%z#RI���N5��l��@�d?_���jO�!�-|(�� �g��"�F��o��zw����y��u?����p����R�{�x#.0 �}*#.�i��#.w�����,�h�=1�f•9�J�C��$��G�/J HG����'}]�X]1o�rC���u���uܶ$����W��X���-�c\�ܭ]Pe�w17�.��>L�0śJ����FkoK��vr�YŴ7��0a�<�����۰}�I+�P�����;�X ���/�}�`Q1`D�����+$G� !�#.���ˠG���Qm<\�s��y�`FZȪ��2�ZBBFFT�3q�ow��l����J�l�7҈=NT�_��6o���ڢ׸3�!#.� )q�����!����>!�)hC���f�Ë�h޺��>P��F�qO�ao��d�>t�:)鹹 �Ә��F lI �ҭk��8����-UD�|�1緑������ߴE���5"�'MO�R>4��p��&#.gd�?s쩡��!�#/K�wkS��H���1�!��k�������R�`�U�oA���c��_ϫ���g��U��-"�΁�n�����-�6� �;c;����Q�ɲ�˟�uC�H���C0�����g&�~y��.��`9q�qg�����ϵ� K�!G)*,�c��l#/�1��S�\�¢� �l�?�ڠT: h~�uPF���~�_���XGN�(��M�58�(�v���N̪�����{�A\�~x�Om�������w�H�Pz��+��<� ei�B�i���2s���b��}��o���4�?���~%Y�UO~*�m�jKBB�s脏��8u��$V��^N�$�خـ�T�%��7�bO�4����p���C[gr��A�3ֵ-�?�a*|I�53+ݦX�c��+(cH%�%6�GdS�8�'���>:W��9�T#1 �:�s#.-uzE]P���Q��;uujk�V�po�y�G�e��3���ˈVtS(;�Fـ���X?��D�eG-���0/��߿�ߑ��pat��=^�9I �/)��P<��Zo�T7��KD$���Ac���M#%�[�D7�q���0�B����E�۲6�,��~(��0��Rg|P?/��#��20��>�w��N~;O� �H*���Aa�"��ʜ�F#1�G��%�A�#.�? �#/�����#1����0��H@&���P�Cn �l��g4]]�#/�q�`��� ��l7?ӓz���'���������<�IRqQȩ��T��3��:�LܳPB!�%�{����6�4�L������1b=�Xj��D%yQ�+�U��S� ,��.��#.<�'9���5��\.3�3M�0�|�3�6p#1s�cT#/�W��\�&W���߃�/��j�!����J5:=�W_]]�䑐w}�T$��c�7�����m��y9Crp}��=��B�T�[Ǯ�*@e���s����ʃ�v.�V�a8�v�j�~��}{[���+i-8}t�2�s�>�/+t��_5Y�Õ�\�b^ZU����ˍ�����wW\����H��#/89���]�Ի/�x���4��j@YX� ��[ C�����xKu��W$�;k7g2gx vL1��ܴh�D���4����+�O2��_^�����7�,�b"��W(l���tH@l����C8v:����_���<�}#/�0�⺷9g�G�V.<�탷�����9�x�>\r�gkp%������#9�$��*i"s�Li�u< 9&h�� �/':!u�ĒY�>�Qs;tU̫�P�F���N/�|�Ybni)-!/�Exr��O&��ԯg0�w�9�|���et����1D��������I�O�2��`��E(�tzt�B��;�Ӥ=�5�����|���J�hU���ؔo�i�W� ?�xvp��j�z�������#/w�,O�9��$~��Ҭ�����2���7�:��H��4�#1-)��iU�ҪGF�:��5| _�Z]>��ydYWir���Q�5�a�ZP)~ q��%���K�ԐG���W�_:T-r 0�#N��VJP0��uU��5�j2��Y��odU1�y���v1�h�)���#/W�h�8�q�vO�����f�"�,$&~���-����/y�bEN��]�������Lj�,V���ك��~^ARk��m���s'#1��-E���Z� a4h�i�6L彭�)�:����W&"Ȏ���z|+�7�I�t����d�T,��E�#/�m5f��1C���Y�;��6�N��'�IPH�EQ�"u#/<&�of�3Bo��4@[Z��;���h�I0�Xu�a9�{���qJ>��m�?� �P�W3�.�KVPM>�>�H:� qr��������R#13MB�Hj����U�D<�}���M��m3�#��|:eX���c�#1�dH79^J1���Ԉ����;���׼��&���k\�Te�S����Rr���pXc��ya�P�O���M����d�n̟���m��(|S�ϡ�?��s#�pЌxu�l �5h*�^l�]P{��JJ/�* MG��lS�/�ޟ�^?��Z.��C1i%��܍�f#b�XJ��W��}T��F�0�~sKɍ���OБ���I$#!�^��}^=��0���USِ� ��N~��&�'������=�C���0��������^��/�H[�`�ZqC���;߸6�O���k�<��N��)o�x)��P ��-,#.�b֔�� <�Up(M���+ۿ�����R�z�P��l����2g� J���Ć��-��ٷ���G�Σ��}��^�"uN3���c�T�#1N�$o��ִ*�����8& n� �e��Zy�ΐ���O���9�n�u �3�4�ۏ#14�k~��|�q�a���ڈ�_ �賐�b�/�_G��fb\�ı�5�(D�Đ��#/-6�����?g�F�;�)t�8�dx�t�3���9[�����ș�#���X��;�b]���)H�I�qml�K7v@v�'�~~�;�7b�P׀�� ��ȉ���O���?�?��_p���o�6������>�_��/���������&�����}^��g�����������?��?������������������?��|��������?����#.A�'���4�g��q$����U �����`�������!�QKy��r⸗�JbS���QpG*��Pl��X�������|GG�(uJ#. ��"�;�`���r!L&�,����+i�M�%�R@0�)�p��jER��0 �&�����\�Q� �si�(ۈ����J΢1F%�R%��ᢔ�t��By?�� �!͹�tB��?����A?����O��2�]�� ��\J,#1�q`�(�D���GƞY���7>�X��������G��f %.z��d4!������`�i:ۥ�G���\vQ-�!(�ɖw"!A�� ����s����b���HJ�QO��=��{��syΣ:-�?�圐l o���ۭt�4��z�o��m53��i�^��A�AJ�In,\�݀��ߩ�a�e��7��ˮ��O0+]�;�� �5�U5x���m���J�I�[a� �5E���u��?�#/G���/o`u�%s�!! ��CՇ�%�ap}�уEB �i,�%3J�kL�L~�|���[kȲ�������84�&�xF�9�s���\�f�0k%a&ù��H�%a"���(����������i�����jI3��Д����lp�7�M{(v�9Ĝz+���M�q0����$�Μ�w�d.'Q����&����"{�?`�&���#.PX̛��J7����;�7��P�}g����I�~�ө��,��Q���S�2�,S ���A�����g �;\C`l�1�Ē;��#/�(N##./8�h����O�|_NP��Mk!dE�*�1�A���}?i���$d� >��L�|�\� |����z�� ;���M��W�H��^L1(�ޚ8���j�����[��A�IC:�g��QB������i�\#1b�����]�����"������~���#1��5=���>�f�cͨ4��>6,��C�l?�l7�����<� Q�Og#1xT7�A�E(#�\�yGX-A �:@���"�=�a���h�ҍ�av�UR����v���קR=l� oߨK7"f���gO��s�p�3�.��� m����?$b$��{��������8��l��9��6G��^=���+t�n�s__�d�c#/#/�v�BH �\��ߦ#1N�/<ҏ���|#/�Xӹ�q#/o�9~*?�t�P� �4#/.�t��#1a��G�=�&}�]C�Z��I���q��vp[$�ϳ}ʸK,�0��'�E#.���Ϧ_k=fyn[�-[Zږ�~��v_��0)E��e>~���s����̊&@� Ki��p�>�O��z#����T[�ӡ:���#1D8�� D� � �c(|m^�R��'��}{�*},�)1i���՜XU\hFH�x�I���X�3��d�fM�Bɔ#�(|�7���^lv(�]�C(b��T���`�Ү�a�N�xɅ �1{�+ �����{�����ZS�J4�,�Y Q�5$Nn�D�uq¸L�z�l�+�9����<�}�U����U�k�M�ź+��3׈�U��>q{�.6a�7��<���GY%�SP����h�n��Б4w�0:�|I,�wF�n�ڣÉ}P�w~��#1�$X���rn�#/���/$m�k>� n*&L:�����.$�1~��ᯄ�������; w ��7�g�#1C�Db#/^����z9=�Ζ�����&fbC���,Y��d��Vk��z��uwF�ha̱��?�����6���Ng�']$XD�O] �=���4̵&�q�P�=���;<�D�e����rb������,k��#qپi���0&�;>�ipD�1��!�ڴ ]랍��g�V"�����=��:��)�h����߈xI�����u���O�e� z�����q����Iq�b�J@�b�#1o�~��HM�Ä�n x^��dBa���H���z��]aF�ʈ"���aTM���J[,��cZ�����p& �(d`�N�a��ض��.���C4M!M���Sc-��6�Ʒ���m�y�HpwH�9�py�h�Τ$1�N#/���$�;%#/@8�=i�O><�iZ�&���Z7��m�iS�0�.z.^�a:�7x&<}#.����w�-�+�;H)GJ������m��|> �PA ���@����9�X9�)k.ebq.x����b�g[.߫���gZ�>~��y '��H#1�#.$E��_=v�5#.I���f":E�:��Ψ C30,����]�5�%���&���FV��f��B�� }>!"�¨�R���P�gͿ��� �T�~�}�/�����bH���8�����k�u6(���lܬ���&�������h��I� \��E�#1���8��|��Ί �@y�#/��p�����p%.��*i7E�BB�Jd�$X� �tnA����.u�tB]htA�6+��:�*Ǡ}�CH�Z�*AyQ��e�5�'���#.�����z�2��~��R����(��V�gw��}�#1���]�#/��/���lUx�a#.9�p zz/F�#v�ch�#.�<��'�9�����ŧ�n�#.c��^˰c���ݣ@ p���d�w���{��������P��l�v]�`=�8ÝTc! sh�|Wg��i�?��Lwo����'�h�fPD!#)�(k��l�_Ѵ8�����XC��Y��P�{�\�L���y��v�k���j�w��F�"�#ʇ�'|ɛ���ӝfu�������Qf���Q��~oN͹�|�����F����<�p><��O������PΟ�x��`���L��}ޙp�y�t@M�)�C[0!�:9R6Y #.��} �I�7#1p��ΤS�#..#���աEz.�j{˜�ᔶ����@P�������T�Q^�`�E+��0����&:�7[<�Z5�#.�ླྀ�njf;ƕ~���[v��G�Gv��%���Le�����r�p�/ɀc���Ǵ�PB)�S(�i۪Jw�m�V�m���xֈ�Ea+$�9��u#�����Ʌ//� #1F܀��F,�.����ե��ڞ�����{��Mh���¾������t�}1+#.�!�f��\v���=�b�O-�u�N#. ��M�xy�n<��ˎ��mD�z�#������]�J[�����ӧB?jz��k��}��2�'����5��#/b��/#.����k�l>J#.��xt����(|� ��¡>RЉ|I�Ü�fs�����#/}s����۞ r d�֨������H#.[d,�E�u9�ُ�A�*(9 ��w��uj�z����%P����.��#.�7-��9tHk�������߀a��#.K���P�JL�_B�W<� ��p��B�����e9M�{UR�z��xy������ۨ]��~���~��\r�J��VcO���VH2���I�t��!��3�C����G|���;#V�_�̓����Y�!��AG�4�N�r����p�o\s;��ں�}2�j�F��^f�ÞDs��?��xU*��������DŽTT:#1��vyN����h˙������_ka`+��W��)����;���W��}CDC�^-"�̯`�'�L�;�{�����6D���)�bC,�[1fV�A���5���S�eN��/I���p�I�B�;¨6��V������9��2�sdv��=˸��x�O9���?SO��{H[s�z�y�92�X��tO��?�7������[t�NT�X�,f'��ٗ!�����W��\Pc���A#1aWJoNûγ�1��\���=s���=b�=\�����c�/�N%�ǤQ߮���Ω� `ý��#.Ô�ɚ�`+Vl�H�Ш����A���b�� %.�m�������v��$�V���ځr��-���%����W��'��l�, ����/�eAɱ@��Y2���-�~�8jU%�*ě�*ٔ<�T�Q�\���;j��HǨ�۟?��ۨ�);��t��s��(w�!L �t�~���Y����.m�LS���)��9��?�je�E /��"�zu\�'u���^��Q���g��;O[�������륕S��-׏z?*%�a]4��?�<�w��(ηz��_���s��ņ����Q&���.��9�|N�c�:Å#����/-�e�n�h�D`�˺wE9�������o�۰> NO�����~�_��ѷ�� ҙ�L����#'���Naa�Qr�N��&Uu�P!ɇ5��:�pP�FO�ϝ�9��~�����-��b�1��-#.�ó�8��;V �W*�p�r��XL�Z���4Q]PgsA ���Z��i�x�hG��z�)�I��&\I�����$��]6���įĢP�m��ܵTeQ� ��QtP�ݲ����9�ڜw��:�6�y7������~�k��ۻ�c����|���KM)p�w˙xK���֡�Ǹ���O�A���������"-?�$����zM��#/�h�VT��T��u��Q�[���}���{䉂1�>۫�Wl�y��T���h�n�-����&�Z�J� ��>���� .EC�Yٓ��~C_3҄L���_EU�3a�v�?9�>r�c��񸟛0x�U:��2��uZLUg�~YcӚ���@��8d���lC�Fd�d� ��Kv��ۇ����,9B�g"�`����ѕ��j_}���\{�|���8$��0��>1��4�p�E���� @�-���z>�ז �m�jB�����9t%�����������ݦ�Tl;zkW#10&ȍB�̉�&pOF|X��T����������e10ִ��~Һ�p���"#�Du��%�q2���c�����cr\�?*>�2t)��xt��,*P�\�n(���#/�FU,~�SءA#.���� M���H%g�{ğ���5�M���\n>���J��@��K%W:�B�[�D���|��9-�9�څs�q�:�w:;>R�ؕ�2>);����@�*�BKST��#/��*[�떵/�+�ò�[�BI�9�g��8G���LF�ݒa�؋|Cf�ۈP��@T�G�C �.\��d{�v���oLS Gl�+{� �� R��xA.���&�;+lS�G0>�>���E:�����<�y#1�N4�bY�}�(��9��O�ğ� ҕ�#1�!�O?�㇝�E���g"�2�W���� #oW8��B�������i"=�NI��j۲� `���Y#.�P2Ѐg%m��h#.V~HI���+i��q�'���%A�gua0�:���څ�m��)�^#/:D)��J���r_y�H[h�f@�awL��ªH䮨mf^�D=�#����O2�C~\c�r��V~��k:e��K�1����#.O��i�c��-��W�����!b-���� �NZW�ֶ�n"6��_#1?M柃���LOv�<���j"g>�� �e���q�7߁H���'� ��-!����λÏ�o�E[�*�9%5�\TI#.��e]A�\"C���#.����@0<���y��>�ɘ+�E T��L#/*�#1|��f���Mÿ0��O�=|髸G�b=��r������"F����mYt#/�J�����9���A�@��G?@`�ӤxE�:_G>pZ��K�Uۖu�N04���"{7��B&� �"�[�9(���0�Fک |Ô}A$�T���"~��$�V]��՗$a��H+�H��s@�����z��q�6�f��c�3U����JPl��&�����g|k��ͤH}��U��~+�Oy��o����TbE�.Ǭ�:���s�1��He#.�� ����弸^9���ۧb��\L �U��� �EvE8_�=zġ�{u/勊p�;���I;+����]jc�x�������Q>"#��SH���HMPc��ʕ���ҷ��T��:A` #.X~lɌK������@�˖3�~[�D�g~��r�����^�*#��2�.�/�B�}j`|�͞#/�6� �Am!�8AЃ�c$���Ԧ���,,�`bf�� ]��ۙD5K�!�)�#.r�N&��dp��Jm����N=��#/ǰ��k���+/�`u��3I�O� 0WQ*��E���j$�k����zW-uT�=#1������/[p�%w���.!ţq����8#?o���#/#�Y��j�~[��i�k+��#1O!��e;9�;�����y"�QԐ����tcϗ��p?(�J )����ꌯ��L�O:0�����M���#.��D#/O�.n�X�j�f��w�'�QCO�4�s��x���mځR(5e��-�B��p�l�~��DNP�vRR�6�$�Y�:�α���)���QG����,��{�����; ] *��u#/��SR��*�􎧔��a�P����s��;�`SN�����7����k�����q6q�䬤�t�_��Q�3� ������=��"U�GK?�pj�cIK_�_���N�&W:��,�M��bB6q�`�5��O���d��k��r:�ID9���!A��а� _�%�t�֧��X|�^�%a0�`�nd��r��۠玒vmv��t=R�0�X�[n���djÇi��)$B8�����2�J����<��l�':�2�lYI���0 3�e���a���n�F}�Q�<�Ў�G`� `�<0� �p��텰p��S�Ss���q։�5��y-,���������:y�s�Y�h�n �.�M0�V+31=�LA.��V;���3v�g�l��d2K�.���T-�����t".�#/O��Yj{KH�G[;7���j1#/h4F��x�A�[&r���[-��V�c��nMy��o�qo�,���t�#/5�)+F��Y#.`P�a7��*9����l=R2��U �~�����ţ��"� E��B�a-;&�d���%V+�o��(����yA�$�]�TGi^�#1�*�I6�� 8F+� K�@�!o�Ջ��xz��7�^&I��wo�C��t�$�M߿Pлv]��h�@��Q۰��J�M�+��s��m�r$qk�?���Rl�]�7�XP$8x��k~�2��?��#�x����ʶiYr,��ЇY���,�`�o��iP{l��M�D�5�(�kr�� �d�b��4ˠ�E�|�������^U>���ܒ�ݟoS2�0�Q㺛j� �Ǝ�Ma3��t�G9��S=��:]w�_����E�(R���$�K�;���y���w퇱����r�����R���D?R��oo�ݟ�X�5GY)3H����m���������gL{����tΛiwi�gv��Y���m�l�$!')\�@�o����|��jxf�`�%�܆r�njz)p�Smf�b֋�{.D{��l�2���P-E�\��z����+��Ni(s�#FN�L�ڋ��jI 2I%��լ5� ��l�O��{/�.];2nU���Q��x��X�D� ����ڎ�;�� ��&�'M+�ˮ 1Pn�u��I#.]r1!��/�.��K%XItӸ�����@#�&��~ڪ�^#ɩ���O��a��4#.е��Wr�4�]����)�^�z�ɇ�#����^)s�����m�}�}�j�]��7�)$,.�֡"H8�j�E�]���¢�'��v*K�p�c������9��$���:�0�o�u�;dp�o�+��&s\�C��x�H�԰x���(����U�"��G�c)J�Wq��hv�;nW����g+��kIb/�'5y,�>^���vyd�^f��;ß s)�8vGL��#1�uX���d6�;t�=ß�ԫ�3��:�5 ��͐�P��Ck�FNܮ)���gh�h��e4l�E��%&>A��_#΋��^�&����I'��o�'l��6u9V�i����N��{���ޥv��?����z�H/g�:w�Q�����]ۣ�t$��v$^����k /�q��z���*T���J���_�C_��}�"\�KV�#1�ǬRRP���Qʡ��^d�J�EO&T{���ިR�M���*(]u���:gY�¨ͲGCՠk!�jЌ�#1. �i+�b�@u�s��{�5��>eX��C���n���e�����%I� �om���B��S ���n�m��"�y���� H1D$D��qU����OoX��t�bs8�)���V���U`���G%�#1�T)�>v�R>���N��La�N�e���� �S������;��\���}̈́�RNX��:�2M��$4oNf�$�˧�##�����o��Of{ͩ\�k����w5��dZ�e�gHB CTȎ��֍�i�\�+4�)��foj�p6T�^ ���Qs>�/g!�7# N%?j�%���H��!� �s��UCB�5�E��X�>�QhD(#/Ǐ��;�#/��,�5�dY�=Ӷ���tY�����L�"�G��\"��›�� j��O�&�#.��7�: ��ps#.Jj�_~�_��� ��:�s ��C��O�!�GӡQ"#1�e��|��ƧMuSW��L��Xυ�4!u�D�K겈��T�U�C��*�"!�����#�����cŏ���$�?,O9���6p�p�������,���9X3��̧M�3�~����?�x�:O,�_�#.��..?y����l �['݄^���O�3@��`u^��`R�����;��i���/*��o����@<�ou�Y�"��U��R���0�G��쯯���]�o�m����L̓�����\�r@ ��!�;V��=A����mJ��?�Wd.T��}J���G=��9�ĸ�Czu�1#.n�� �2;����!T��-ߝ���7,��ȸn� ��ɩl�P(��;�o 8� l��m3LP��Kv�,��B�vT�wtB2�ޜBD�D�H��䍭��!]}�QyP�Ҕna�#. �?��1��t��s\�zG�Mi� #/�0��{=~.�_/��Dr3��:Dj+�x�\+��d��'@�%�B���,~�?����e�7h?[�`�����'3�ۣ��)�/�x��?ɀ �O�󮣷��SbPu��9�����T~)u��e�1�t��r�$�%x�'�rI�VL�����\"9��#1�#.*�WQY\G0F�}�+�/?���l��|��eNn�F�/���ϐd�#/3�L�q�u�3�p�T��$ A�T���ϭ �k>S6Ș֖���������a\�0C?�F��,4;��#/u�����:��u5Qh�.!a������V�Gh�#.����ɊP:�HhA��<��B� #!&J���B^�%'�y����Jvo��^[ �G�O�׻jj�[p=� >O����|��y�u����o�7�x�����J�����HeZ pXf�Gg��#15��%Ӕ�Q�09FB�>Fu w�kW�����6�o��dĘ0Ed�O�>�)�뤥ay���=2���\;騯�#/O�zQ�����}�l15�6U�9�K�+��Z��3_x�!m�D������8M��k9<�MOؿ�gͬ?\����n @�F��]Nf�h�ג�!K�y�+I�O��9��ޱ�ߧ��ݭ�/�z��/�<��B�� $���}�����#1a 9����X3q���~�+�M�c��[��_é�Ϡw�N�7��q�J� ^���^�#�s����]��6{�txi}�v���)����oJ�v����s���Z|�٭�&Hd ����e���٪����#/�3/���uؓZ�������/�>�>����M�+�?�x��a���ݳ�����u��?�-�y��$����9?��n���(�z���ci��U�:��%��2����2�~䫐Ia�ua7�[�pO�������>�:���K�Q�jt�f q�s�;�$x��zcq��nA�����?�x�\����v�Ozj���6Ssy�s|o�?#/�������!(�n#/ ��h.����D����)�� ��3���f*t ]N�;�H�*�i1E�@��!>��`�������#1�Q>���,,���<�v�IKƪ�x�/ ��� �q]�$�Q��)�9��鸦�T��I��l�nl�| :������Ɍ���dg{|�I�0*���i'�����u�"� Ff~$=烽7�>�Cv�6v �ѡ�2� l�$F��bC�7O�9t��,\�0Z!g��Z���.��T+��Z�%���Ԓ�J��v�ތ��z��$H����v����.në�0ιV�ja�.8�f����9L����C_D��V�`s�.mS.�p���^Z㥶�n� �l�f��幆b�wy�̹�3W����q��S\y�#/�0�hnX0gZSS�gZmz�rk�Ӏ�`��.^�+���/���gk�,�ȋ�eJ�4��Va����&w�grPm�݊q���G="�d�j|�/>MS���%D�=��/�ʫ�TсDQb�0�!�O�@�@!���O�?����� ��C��p�����M���",����7�I��\?���Iu�ǯ�]�=�{]�"���Jw�=���M��H�X,� ��R�AI�}`ɒt��|�ɡd�/:�U��@��\pkV�H� �6QF!�c�A�F�o^<�j�t�um�=�lbp��J#1S�[�78��b�~#.i�|�S�����]����}��n�p�J^ulM�RIE�$R2I=��]8�ڔ�(#1�7)�#.�#T�N�˳����,�:;��}/'��q����Mu4��=�>- 'Ѩߗ�V�F#/3AaM�A�h%ո�/�H]�����7잠A�D�`B������E��2����*�Ձ����@t��w$�a �̊ �(�C9e�b&"�d̥��H)������5�74��CG�f���?�����#1���D!�QC�"H$�T1?�d1�C��hz�-g�����ȽA���n�g߀ `�F`����G� ���Mתn�(p"8�#.@���=�).{-?��$�W�#.OV���Oѳi 0�������TI>K|�k�#~��"[��"��'Om�fO�C����>�������������6�!�ےi{"�! �G$���v�~���Lv���,cN#.v�}��t��Ҩ>S*]l`���w��ܟ��!Òw#.G�S��4#W��#/�Z�I�`�F��e�R"�����]^�����ёlϻ�ۆ��j ��=�yM�T��{�9�D5]8q`t�$�� d j=�H�yΊ�g�X�T=f#.���؜￑��� B��!�rHt�!�z���a��P1��y��o�hW�;��b��?%�? 7���d����V����م��3:~�/w�G��n��4L)�OE5P-�H{�$�|P0�>��>�N_�p�Y+@]��8,�#.|{��~��I����1�+3>#�]>G_�(����yln��K/GBl���>hh`��pڤ2OV�z�D+���sG�h�]+�>%dr����s��,��n��U}ѝ�&2I�R40v���p���F0)��s�� ���u��~M�#/�x�0�a*�P]q!.*��+V�ݠ0�����'xS��><^��#.��ۺrD@;�z�f��÷�K�x& �)��Qk޿���Wο�aR؅���xU#����&~��s�a#.�����m���0w%����#1��PtkY��=7 x#1�I!B�͑�3�yF�u����ء���:�0���V_3܉]V�w��ܑ��b���>�b;L��!���S� ( ���#/=���{!+`� ��!#$*� ��LB��M}������� ��'Q�Jt�����>�ӾN����$@9� 1,2�- G�$B=�q仴�9M!<;�]9�3���>�|����J�鸴K��%�BxU�30����I�\��r$����a�.2�*�*�X0!P��a�U*�#.��F�ʀ��#1As�=`S�d�E"�9 n�dҊ� ##.`��#/H���"b�ـ*�H9&�!�R��gv����g� 8Ag��Nо�+ؓ$� B;�H@ 5���)$S����. ��Jyr7)��(��Y;��p!u#Asu#/#/�?w�~�i�X���$�"'\-���Lvܓ�� ��'�#1_>q��#1,h��Df����*5ʯJ�F�t�ʄ����מH���� 0��g�F���O���w��ۓuBp0e�)��Ӵ�PPn^�6�s��Pa �I��W���##/���6�ω��7M���� �⅐L�! a`bB�8i��0[��(k�J"��z� X�ޥ�D�:k����2��z09�:q�����.����/օ g�f�k��O����AfޠĿ�#.�J:���96r�W1�i;{U��=~��}��_Q��K@5��l��P2xi~�(�<���}�0��~9 ���I��QƮ�b� ����`~ ���!'�%I(:|z�v)��>�'�?�ҋ�=!����i��UJ��B�������N;�Ŀ��:�7�ҡL�7̣�Y%Y$������s��38y�kRrs@�����pu)Cω$��m�{w�K�&��MpH�Qp�� c���dA�i��K�T!�3�HDz���y�����(s*K�f��ע<��C"4��q���?z�:�HB:$��}������T���p��,4�p\�a\������2r�H�� H6vG�CX&4�,�|��N P����1�������u��}��s@��`*A�:}�5�`H���&9�s=' T�?�#/�N����󁯍NI%�@#1����s�l������ª|=#.���=~,Ea�9!�}(,�#/��Q�������0����l�o�8�UP�C#/�����?��$��j�m��#1#1�õG��{���������+�t�Uʥ�eQ�z�[^��ԐB�U�� �XXJ�Bd���EVg5狆:�i扗����2��Z�8�����gחp���z�U*��I�:PWd�U��Ա=�h7�ӸG,^-a���@p���#.Ġϸ�r_w��'^���k���Iz�{���"��t'��(���I6ʣy���G���½� /<9C{��8,��%��˝� P�r���€�=��n�8�X�7��n�Ӆ�$uby����EM@�v�ka�bB�A�@F�"�$D�`p6ڹ]��Bz���!����й�X;�8 U�UD�E��7;z7���/V�I�0�k)e"�?<>��xk�#/vZO#.W��Ο ����!L��np���#12P>���JO%q��V�$BC���ޡ'����C-�@>d���'����p�B���B}�H"{�N}��Z��2����5���b�c���,���h/`teE�Mk��í4�� �4Bௐ����;Χ�nx�g��٭�|��Һ��8U��&���%���U0@����G���efhyZ�p���#1�$s�Ã:���>д] �x���F�W���������>�1@��!d� ifYA\Ce$���Nd��/�H��ї�JV��d#�{�O���f�Ud.�Z���A��N"~,B�}�:��p�Á��%`��[6���Z�f*���k߾μ}r�wP�g�^F߳������w�}�����>z�|��+��� ��-`����#/z�#.jda3_>�<�Gi�nLU�g�no��F��#1���������P�1�=!pl،����>��H��?=�)?\EF��>�k����۽���W��1�D:@?�����`u�O����z|���) ]�Ba�HZeN��`PP̳"�KD�`�b �25An0O���be��<{���B�z#/� �#.���B~��{'���TϺ�a�CiiR�4�#/�'����O���p$[߃��@� �m�@�4���T�%�aP�4�k�$ ^Uq�Ǝ�����Ը���t$Hp{lwvn��o�����V�����T �*R���r�����S�LUMW.o��*M{�.1�![�o0�+P�@����2�*-1���(�:y���I$@�aybyU��J}J������Hx8+�%�_>�Б�:���Y����5@�2�Ƕb^L����0$�`���v`�� �A�-���ĬCG굉q�ury'�򥆏��s��@�J����>����@o8�j�:~�sU�*7hC?����9��� ��*�I�l#1%"B�̭(�$�� ��%Qd� ���1��q��$‰B��炆/���X\ٹ�wCB� &R9(��iU%[3�E���W���N�3�n�/FFS\u i��"]�Zf ���n �@����K�̽y�w�ٓ�����x6c��us��#�3 �z`u���-�i�U �%�u`2�A#/;0k�@��PT?7؝���_=N,7#.�=�sC��q[W����>�����Ъ1V(� ��_�/:�2�'C�\�B�_���Y��,��a�C��_�!fľ7_�P���T)1La�u�g/��{�� ���4�Js��A+y�� -a`��9wr��<#/N�=) 4U��#.��T[��z�xU�6����=�2��Q1U�e��9����~Љ���!:����~�=��Yet8h�-$@w_�y��c���WDž_����\�4\�#. D#/�#1�+P8z�۠g�@�$I۾gV��vW�~Z�S?f#1'��8����P�Jޝ�b�$#1�xW�Le�0]yǞ��n��2��v�����^�G����Fiz�n�WS$���?����QN�� �?h�ћ����-�T����M�3�}�Mʏ��A����#1kQ�"Zw��3�H�Em����do�Y��l�^s�S�oB>'����;a5_x)�<��_�_հĤ6ʈ㟦�,�M��J�@���]����#���(� � Tz�Xuܜ�]�'��)���J6Q�儛Gc1 �S��1�|�#.�q@�؉yNS]��{���������H��P(���젩u�z������E!����i�dA(1��s ��ҡ>X�`c��t�W�Ë?���.�Y��$�]���I���F�O{�uU�Z6c^�vZ�#1c��ŀ����9��ns��a(�|e�~.�{k��-��w�턋oQd|�0� �?��;��O�o�$�����D���p}�z��E�W66��\!#.l`���Dߢڴ���4CI^�C�k �b/����t�U�Ե�#N�Ny���!�2�v3��_���p����[0�Q���{���yd�OR���6�'}�l����R��²�2��χ �0��W����ߞpV�"��tM ��r��NJH�cQ��/��f�11g5e����������F" ��h�Z��t�5%D�>�c��+���gL;�}���K�q�v/жL("���~#1�t-�0ݣc���2:�&i��H@(Cx��w�]�K͎�t�#1���A�R�9�c�"f/���{�L������س�~o��哻d�P�b�$N�ڧ%*Z��"���U��B?� 4�<�#/1�r� �B�V+�l^%��$��l�掛�� �e~��f��\�@ F��b��P���, ��A#Z�����㱄ȸ����¿ۄ�z�zТ�yJx����`v�U�hc�l�3�fXń�!Pm���<���7^t�Dߒ��'��ӧ���QߗX��-��{M�vrY��e���;>ba�up���Mޑf0^�X�D "�K���?u��\>�;�|��~��^t^�@��� ��v��:2O��/��Ӫ'͇�@���zAА��#/|���#/ :刽�@���9���(���`��]˗�xjks#/��1Gή[�!𽐝�]�FQ���NIqY#.p��������(�^�S�*d!k�#/d��IpN���9�%m�:����^3;KM�bPK�{p�CwL�q���m��:�Ɵ���J+���t㡸�3�o4E�SC��B݅Hڠ<_�Q���k��U����zq��f.CY%Bp������]Cw<�Y���T�H�[�E�d�/0�Az���Q�7쐽�k ��auW�V���ά]'��n?,V� +�m��̯�~�\s.(�!�zH� ��?�����=��}^=���-��$B|_��M���J�ذL�?ti���o���s7g�����>أ� �'���U�)�qd#.Ŕ| ��^�g���?�}'���G�6G�'���/JZ#/�#�ww���>�A,��C�G#.s@uۡ��#1����6�����g�f��y�h��?0Q{{��#/ƅ����#")��ܱ��f��[l���srU��SG�a>N�Z�0�6�`�Y財��z/F=��ӧ"�d����;#.�ɹ�6\5�Ҩ������������y��s;#.;���x��x[v�Pq�j�!(�*Y�uQaR�V^~�ɪ��d�_��;�?�6�a����+�2��r�/�'��^�N�<�@X%"�^Xgu���J��}�+��o�_�B�#/#.���A] �a �v#.�;���'��Ӹ0�{ _�7�_ygӊ��%���a&A�䤐�Q�ҙv�#.�5�����}����U��z��|!���,�ɗд0�^�cq����s"@��?7f�ޘ��.����y�݉Ci>f�2$�bd���{�8��:(w���.�U��T���Z�\�������;�ʔ�kgK��yt�m:O9t�w�7�-\���!b���G+����o������(�g5�aEz.jF�! ����뫟S��� ���5���`�.��#q/!˿A� ES�i��&����w�\��8�D98„�n-�'^!(I��6����#1!��DŪ�f~p�<���L��fh�\T�4�O�'���\sswP�8�|�X(���YXj6a��Hr�&�q�N�!mɤ�����m�{a���|t�`�b�5��<#/�0=��X��v�]���,��@Y؆ ���Ģ�w��#/�w!�vtN���i�F#�O�U؋y�C�m�#1Q6���M���A6���,-�K��n�KWcͺ�-�\�!Hw�d����R���8�!��52g�daP�زp�o%pv�#Ϸ�y)�����f|�ܞ�b� IX������=� MF��7����:�3�����Q�!���1!/] �� ��#1��I��#/�8ރvu7)  ��2��ގ�nM��|X��D��==2��w.nm��i�w�P?L퍟xR�SD k6��!! u81"(���2���<�!6M�!&���o�"H��z�K9$��������#/yxw�Af����c�8 �&D�Ԓ� �gY�d���3�hC�ZBC���� �9g#.�02XID�K�`f#/�����^d����\�Z#/�Xi�%�/*��Z�é�����S�H"�}!�ñ�S�S*"��~����F zV���1��ɜ4;U#/�S)�%j�$Lx��rX�J��O6��>Ϭ#/�Ʋ ���rj�B!�̴�3��ȝR)���vW���#.���Q�)� <��E�#1�ɡ���9��S�S���_� &ӻ̃#�2"Q�m���"2#/�Ü�z�'�u�~�J̆��9=�?Ct��G��ߋ�R�����<�w|j�c�Z��d;w#.cD}�k���)K%��i�T�@�q��D,�.C�q������W��*�8OYʸ��П/�%�1g�sz#/z^�:{������R�!��t���s'�s |���އYB������� ����#/�|$ ��!��8��9�T��?>>��#.@'P�M؟���Ln�����#.�|~^x�U��T:M�S��e����}���w���3s�w�A�~0X�ǸXCt+����*�&�`%�n� G��@PI����#�0L�q����� [�o�c�ψ�H.#/D�-�{᭚��P�GOC�E�-5:�� 9K����5�>���]o<�XOD20(y�W � ���!� ��u/�)�&# R�N���z�5��ݏv#1���������M\�\��ӯ�H��+��#ŵ���Q��C���2�?��t�!δ������i)~xH;u�[���֧�SԻJQl͓(ε~�m�uux�w�h���k� C����"��`��no��.��JMR�d�)�}PHB?�U 1�DN#N� P���PE,w���� ��v���SD�_Ǽ�bج�R�|�u����)��i�g���H��#/�Đ����Jߍ�IG��=��}��oj�R#/@���J�<^)���`9��Oے��Z��$����5�|�TNla..��W�~��r݄�"���#.�#1��6=H! Du>�|fJ#1�� `��:��lT�L#.;Tΐ�FQ B@���|w��JΗ�a�K�l��1s�y�ə�X���;v���ݯR���(]�ɬL�pj�͢.���n�|� (���q���:�HI�����'}��^�#1*���["ȄH/j$=�xK}!&����Tr#.��@��#/�k/MwZ�c'xJ�QJ��e]��Qce�t#.��>=g�Q}#.w���%� ��T�6��1=���S<{'����Q�9,^Q K��\��v�d�T-=p�9"+3 C#1[�ܩS����XR`l +��b�f�#/;�!�x�3�.� ��e`�����4��R*�$�yM���{}m)p�(���x�-�V���r�{�}�a����U�UՆ�V/"`|�[:�ܐ���h~@����#1��n��;3�n,�����&�R�'z��`�Y���"J��!;4a�C��G��� iVH#����1,;p�7���Q��Q�s Q<��"��\h�%T��Rut�a�jn's#1(% Ы�zi3���<^��#@@Ԁ�@��35d#.b@���L%{�NQ��Ua�c>(}���O����#1���Xg��2�2��o����f�m�=!�77�Q�߷#/��;��z��#1�$YLJ��D���9��iJ���0�Q�ŵm�mE�`٫I��*1�VZkV&��i&�6��de@@�`D���ȉ�>���ع�%���(��o1ڇ\A�Q � ����#.X�#.�d=H�ݹ/�F=Z����q��l/�3L#/N#18ِ�)��m&���=`�U�*c�#.*�Ոʟ��p���ߧ~��?�j*�،��>�2tp�:FB���IR��9ad}�� L��J�}����w#1��t5�P�]u��?�����|�Q���.6eu‚U��*� ��w/��xp���9ʑ��T���Z��R1�`��� s����D�) ōr��*��͹��nS6��[3����� [X*����3�n�|��p�@ֻ� �BH�8*�`#.f�׍�oh�X�/C��f�馎r�42���@1 ���ux�u��f) �#.$��#/�L#Ho�{�<��v���������mC��:s�A�� #.,��� b����HjO�Fb�?.�����i��DB+#1">�����k[a�r����&r�NM(Z(i?��$4������a��/:dK��$Su�7���.����&3Hv�����:�'�C��I�R+���60�#.;��=2�wG��îF��cѣ�C�B����5S��{}�#/�[�A%O�p#1��̣Ćo�^���!,���#/#1�QC)�0�zm�y'A��9��=a�a@i� �3I̜R�&w�|� #�W �Ē5�{������߈p;�k�ۓcs�C����ٸ}���A�q:�R�V���|e�w[ap4���#.� ��n�3�u~�C�U���p�����2�tX5�P}Zx��9����#1��]:z#.b�8Ⱥ����h��^!��S�Q��Į%g�h��;��������뾈���R#1G5�5�L�)©T'��ϊ���Y�qv���Ȕ'���� ��X�+g~.��P]�z� �"  �"����xw��#.�o�A�=���#.4��X����m�! ����u�#1�A����#/Q�X?�Z������;M]ݮ�#/bM}�����!�A5D2M"@O}�N�=��Of�^0�a28@���T}Y�=�p������A�:�Wv ���N�A�I�p9v��Gc=`����#.�ڲ �b\��1s/Mu˫�_M�jׄ4��&�އ�C���P�8����a YI�F� /V9_t*Xo*�0��=����#1�̏C2���Y��q��PN�c¸���3�4�ۂ-_�S�&�aM �����#1E#1T__��_r�>�9��,BȻ���1W��z�d􇬷�.(�伇A�n۷���ux[`t����]x�Ϝ0b�7��~�*rD�}G#k�#f����}~�3�^8�k�����������1�����3���7�cv=�CU�Y���������>;�%=}OP��� ��x6Kra�M�߀Z�e:��ã]XC���t@8�#/���`��N��x̑7�Ǥ���חY�/��Q$�r�GnFI���@�5~���t�9��ӪTS�ss�Y�1�֗�u�>�2�_���$C�-��� D�H۬Ȯ'E�w�Y��;xa�22�]q!� nbI&ݾ��2�e#/�q��i �磨8�1�V&��K�/,ŽSî&|8�����s �<�5��f�M��씷 ����?���#Î9�_$V����B `\�n���#1���o�^�*���ye��g~�<�)ք��v����A�iD�E(�#-e��XPȗ),(K[&rSs5�s��y�Z�*�ըZ"X�|#/ҡ�Ip����x��8��^u6�-����s#���ZXYB ��~�8��y��Zb$v!~�/�=w�\����#/�P�!&�PY�i� CCd��#/��#\�� ��؊�0����mSy�:�s �_كI�ݿ\cI��8�|�<����y�#1�nq�>?�Y3<%�z]�PuF��Ȍ��|SY��X��'�!Xa���|�}kj�m���hCJ�2LrdQ&�����O[z�$V�|��j��ͼk���#1z.�i#/uG�����Xr*�@���%�R��˾džC���D,�(������b�p#1�<9l f-8�I�O~�iHdX��i�*��Bh�#.� �6� �}�V.��Pa��,�#1��{��p�z�1Ӱ� ؁�Q~����m�` 2��2D��'9�+���ύ�䆠Lt�_Rb�'%9�B��i���qj>#.+" @8���#.;��`�M�Kq0�#*H)G�CA)��Y r!��%�i)C6o���#1����C�4�.����0�A��'��ДN�a�(��R4��e6V�����\�D�B�17�%ڐ'ηrg�NX��#1!�S��B�z�w򊥞�ެj�6;��6A��#1J$wf�#1�^�}�>�(�W&�OS#1!5E� ��|� �V�� 5gû���8?2K�Yjޥm�#C�&�$| ���H��l���m�0K������wO.�|�0��lѾ�@sْ��+��v0��J���Ḳ}9��Ú\}� ��E�B�Q����?� ��F j��Ё����Z\�A-��r��d�7'l�-�U#.}����e���2 ��ʦEF"(��V#1�h����+A�{<�_+yTZ��p��� ��r,�P��ڔV[ �L�Z��C9���L��$'#1p(��d�*�M�6O��D�#.�ns���r�sT#.����#xt;U�m�x�l"z˟�R�?)#.�f2䴪�3���M������`ē����s���3Zip��n�!I�z�*�M��{�U�B�����#/�Wc��g-Ƹ̜�:;N�������2�7���(�}����|#/�gG�t�A�����P�a��L����{�`���@P�9��}g9�J��0���#1H>j?�31�6?�A*��{Agc'�baVm#1��<F�ъK���a�׃0J��fYG ����b�}�S�5��)Q#�'7}��7��2}!J��x��f�bWw]i�yoR��lZ� Q@VDd7��s�ώ��ِ�B�r{��5!:� ���a�1 �׭��՚%��C0����]���8{�}\/��7�b'L�G��V���C=y�rX�u��uSOÙbˌ,4i���nH �\y�ۤ�����sk�3�:lD�W#1+d��r�8}*��I�" #1]�H#1����#/��ݚG�D^dP���EډX $Kx)aP�5�3>9�lȾ6�a�nd�IML���d|�3��ʤ��-�t�� ��x$�H`M�a64�-�B��'CRx�!�"����1�4� ��r�,�@�EQI�@x\�#1�i��<�q�X%���>8���#1�ĉ�KT�<��蓡��,�+a�����H�jn>�����ßH|t�#1jd�i�/PJH�2�f5lVu&��t:��4��7��p ��J(���ͨ#/�8#L� �,��59Nf .{Qӣ��*�%��(%mK�$�O�T�ö���J!�jk�=z#1����ƥ#��-J���)�! �Ί5��PR9��fS|#.�]��1�\Ͷ�6&�2g7ñ�Huq������Nde� �jO^*%�5�N+ �I�:.����iլ� 5;�nlG��A���P�S��B,��,��ڳ�Q�l~��غ�/'�Q�m����/�N���>Ov�ީa���jZ��4�m�6��"C�gjɂ,��B۸&���:����%�� ���#/�s0۔���iA�bN.�Y����9cu#ᬭ/4t(dQE��(���2�L�N@2���,�ɱ�WSs�pR i�4(�b&�UUJ��l�1#.-V#gM�:��gl�Se�&#.Jzf #15��pL�#/�*2H�XBi�/D�#.G#/��6�67%�@��,>�Ź�����aTH���6c7�we�Ƕ#1l��vf�گDz������E�|�M�<����G�HBd��C'�`��V��L%�m�*f�6?����P�@�QS�� ~�|B����R��~%��A`mF����Q��[cm�B�TE�� #.ȠQ�#/ ��n#��2'a ��J)�1Tw��q�5[t�d�ze��;A��Yѷ�'�~������fI�$��Jd�L���2JRi�MQi2��I���1Q4�C%4DŠб�~ܡ�ZLY%�[,̘��d�$Q�E JQ4�~�"6�ȡ�����0� �F�Ң� ��Fh�2V���R(��)��J��h4ͤcI�)H�̐�7) �#1�w*E�tłd�ej���%�1���]���M�s]���ƻ%��b�f������[L%���m�H� L���Z�b@TF��7Rt��&�$�F}Tz��k��pW9Q0Y���egV�x ߀� ����]��d�3�H�Zt�Ɵ੢�$��\�M�Bu���'��$�Uawۆ�R�#1EP֚S%�:a��f�����{_�bF4ւ�l�M��%�Y@��"ûLw��Ϡ��j.��bˆ �6�o͝���S4T�nq����B��՝�=l2Һ�࿾�qq�Ş +�߬H `M��a�r>#/^�f���=��;��s8�E6ZC�i�7�og�J��͓MP��le{�P�[��!�C���/v��"}�ܘ��+ R�$(�� �0cζ��N���#�F�u��U��m�GX�R0�e�>���>�TGH� nk�{�nR�`����� ��)�`�g'�g3��ۙ�t�F�ؘ!�OVye�’�l�)��x�c��}��S��}�R��nPӊ#1rq���r�4�L9�9Đml�~�ƍWѭ�`�� L�}$���u��|f2�b%��:p���;b��O{��V�6�6��VW/�bT��~����xIJ��q8��\3��tF��ބh��1]d!%��`��/�2��[���bz�K;��3 ,.׉�kC#/(� �>���Յ�����@?Y�#/{z�3��JHC������I���X� ����!@8"�n��-���r�Ni#1�߹�ړr�cz?��'^��wݧ?�v��u8?@����T�6J�'�g�-M�x&`����_N˾,�n)���� ��!0�S����c���w�j:S�L�%|4.;#.�]��(�N��F�8�Ԙ�3�'2:�a��ى�#1;+p�wa�M�S�k����cE#/�nT���_7ڃF�_px6�SY ��Uwk���B������B��Go�a\�LgƳmF��ngg8*m��4���L� <�z��'���n7�U6j�U�����M�U8�xʜO.p�s#/�����9p���'{�l-��i�i��f��wL:�̷�����=^������o{�U/��B�A�&Z3��=ݡZ o��j�v~Za� *yx��L]L�e�K˵R!BHyZ�����7��q�� �T� ,�{P#�:N���/h��d���/RY�!���X$fi�!� ̝�0f�@�T���vH�*��7�N����مTs ��� 2�>F#���|��4�;jOӝ�a�p�6�ɪ����!�i�Lv�J��09^ipCJ��i��p����҂_S���g{�ʤ��P�џ��kh�c�%�n8(9��<Ƶ�OK9�{O�1Hu�DԔ,y95�[\o\����D��" w���)2**^ C� ��mJu6���a���o��O�e�׷�1��;�{�"c��\���$�-�z"Vn�����/F+��\W��8�������q��r�l�by�}�n��3|�����!?��t�XuД�KO��q��lzb�3�i���/U���&i��q]�SX��=o��zc0�^��|��z��%i�>͙�Y�y�,Y��>_�������#/����8��)k������DI��̚!P��S����>d�4]��a#1<"![��#/����kQK'9�{h'l�g2`��b��S�4������(��Z�G�fԹ�R�V�n"���߅[��)�!L��#/Md��g�Y�J���w{�1wn>�ܹ�7����OM���ny���f�LkK0g�2���������2&M����Y&٩'&^ nQ �q��;fQ���t�hrS^�n��Lٸ8�e�0�v��hH] A i�%?h�� ��xL;!SM&�ݕN���D�� �!��.�PN8s�zH���fnPiI#14��6I��Ӷ)���*$Yhv�����r�ח+O�m@���ݨ�8�Cf.�b�J2�E �6��z��rgrg Ԥ��C�C7,)dF�;q�8�B��+Y|c82��B P���}ю��*/H��Ž<�"��r�Ju�s��÷2�J��d����#1�pe�OV���RQ9B&P�e��#��� ��oӳ�S����q��N�?�F��,.d��P�b&fe �Jg�sr���"5˚�τZyr��i�����nGz�4��E����Smp9��5o719��/7.��њ�Z/ý������汽(�t��Qnq3��PR���<���#1M�����C���WA����K�3g�����c+D�Γ��3c�#/�9�� �Eqh�w>f�c�v%�-w޸r��GR�m{i8��-���M�9�s��cs4˺�Wk�.�5��G�yÛ���K�LҚDZ�g�����-_�<7��XM2Nv�J��X�I�;�yb��4�ڌ"�\��U�Ȧ!�ٞ�-8�b��ީ�ox��~�\k��FS�� 8�q@@;��wU��@�^M;��Zx���$�������RLͣC^m&Kh�TH��M<.#$�)�q�#���k�S�'8�:���%��نgY�^�$���=o�����X*�I3�7`�+�#.�6 d�#.�!$Ԡ2�8�;�d�Œo6vP(��C0���7���U�5;���[d�*�34���- !NO#1@(�J���t& ���=����Η#/��җpq��Br�dvlC�D7LvNa�W��v��́�o�:�#/d9�wǶ/^�ދ1��m�E$P7l�d1��1��)w��V$:@��w��i�P�0����N-���yv���� a�D@��'T&2Vx�H�|����蒋 ꕞ]Aq�jDCц0��޹g��!�����%H��'�_��+��0z�z��ў��Nٌ^3�0:I���� �<��!>�+U����~`„�},P�vh�ӦPA�-,N˹,'�� �Bv��w7:#.��� &�E �&PΔ�8{F�%����7#/��t[�D<� �7X睷M[rP�#Cs���lƟ���:[C�9'-#.�F1D243��7G#1���r�{��`V�#:�uR_4�0;e�\⣪����7 �4��a4!�� �E�sJ �� �˘H�&|�g��;t�bxjJ2[e�c#.��'�����,zٞ3��2�X;z4+��L�S 8I���DO>C�!<��#1�i��P�T-�R�#.D��2��`h�Ll�=�Ϩ��fucq�i2o���X��AV[PN���g��̹�5�a�W?�օ�D| �A��v��q�>[��2@#1���6�f�� ��rXr �N�Nsb���N�P)���z�+��ϙ8����gN�obx<���N�/p���j���,#/c1��%�q��5 �E&���Sf��D�T������55[%��pb��CgGC��äW�vkP�]چ��S��#����X^%�șNi�d7�Ḧ��2yR�RM �����C�8,tlb:�k�d5K��^�d�����rR9��\&���\t*�w����#1 d@��P͐�QT3K@i���N����H�`�#�R %#1�a@~�H�""iL���m�Mb��#.�#�J�#/n�#/�>���!寧m�n���V0�-MU��O�Y�b1I�#.�3�ɲE?zct1G(���)��@!8�Q��N#1��Kл=&! �%� �~�X�|��*�0�g҃�o -����z3����}��N�ىD��({��S;p;Km��eqm�dCI�b�c���#扁�H� �uA����o#/�V��8�p�2L��n��S�-��X䇆�E��M] ��#.v�6f~�H~{�&�K��)$��C�C�-�j(CM�ӹ�je���j���I�QB�U��zz���XE����4�;��􉠙#/�v�HI� �� �@�L� �q�بD�GR�X|�_`�1C�"�4���:�}�U�#.I��}� #.��S��� h1m��̹�麠�͒������MS s�@����p���w�P��?�>��s`��wo��o#.�$1��C��H' ÙCo"��D�ʎH��d>e�H����g����#/�e����L ���6A���#/���p���c�м���>8s�f[�|�$�0J�)����E��vy ���&�fJ���L�$R��-8z� ��ù�_�I٤ޒ;z����eT�M%B�Cq�~"I�ߎ���b����A,��0���4�z�*>H�Q"��!1э��4Z-h�1h���f���DQ["� "(�]�;}M��VJ�B#1WJ���ظ&��,�c�#.MF}B��dF��`���D��1M`��D$J�J &�N���1���;���_cӛ�D`@���E�vLW�]��`�ٳA�x�eF����pQ�r�c�I�#.N��D�����s�k�S(h�8�ˬ0۸06�3K]�1C��ĸ���p��hm[�* ��-N$#/d @�#.�d��ɪ�#.b3��N�� ����Z�2xM�J�X ��1��:F��#���!�=�*'���f���f�Ld,j�w[���6B`!��D��A4��Qʇ~9O=(��pЁ�0L���.�"� ��� ���D�Kaģ(�L���0�6��u�ۑ�f6"Qh� z�hv�g�%���“�;t���#/Gn��;�\&찈�EIs�tKt�#7ii�����>؀w�t����� $#.$1 p�!���l�Pd���� ��D.�B�"��8��U #/�Ė�O�#.,6��©(�s�X�k�̯�����3�wI�@���$IkG�ð[:rP� �!��&Z*hw�w���u���m�KA�kfWИ��ne�Bפ4��� Z�DWͪiRq#/|��xu$�g���!�\[_��$�!��M`vhU#1����@�/���fa�!9�f$�@[ak��ӇC����46ѡ�2�^�DN]΋#.��ݘt�nʷ �h�@ �:)����i���dg)2c��'r�]ݜrob ��!��shV�8>U ��V�� #1�� /e8[r�(�ʆ����r��&;�b�Xh�(y/Qѯ\CbF��B���k�DԾ��8lӶ�4K$ ԙ HkW|҂XXĵ�B�4�+������݂C$�>$�F%�laЀ�$��P�vp"�� z#.b��P��A��g&�{یs�6b��@(+�P��Z��1�MwG��&�v�외q��fǣ#.��l��B��V�=��5����|�rǃ\#��I�����#.0x�aO�`c��<�#.,6�(|'�%��"Z[mKRY�Z�[o�X��j�mE��V�P�A$HHx���%�;�UQW�s�\���5Q����KZ)}��3\c���W���:�+b�vVWѰ�ZI\�'�N�+je�ʵS0�*T����)ּ^�u<��O(r�������*�TD��x�w�K!�g ���Ӧ,\��޶�7�Ӥ������C��"J�\�wЉ%b�r"L��#/I�"ot����4�׷(0�8�s# `�˸"طg��6�rq�$��q�;�'�t��Kx�M�p�g´,�&.n�H��L˻#�y�>��- &J�u�B��M�d�|���Լ���O(y��fjZ]�� ���}���N����R�:�M�S5�i����l�CjJ !C�$"1a����7��ʥ�dU� #. �Zb�#18$�i~��~��G�"�R��®�0�9(0�&`h�C2������H�"Ȯ#/�n�����`��k C�†9'�j�ߦ�ϝV����R���%�����(Ȥ[hj#]��2܉jҖ\�psw�J$`����RJIF�b3�#/��ă`�ȁ�"�X%���lWf�h�T��߿�{E"G&T���� ejE���V�T�R��X��dS5ԵҬ��[K3e�ϛ_/�Q�A��L�TI!#.�V$H@Cqw����e�6n�( R� w�A��@�B�q97#.�bQ��( ��,@��Dx�q�|l=��{�FC����Xt�@�LC?3O���m_�[�z~�>�_�W��F���sFf����=�5@�ٳ��UE4��:r��Y�Ui�� �d��:����� T�ҧ�>w�:�-�ҥU(��Z�`��� ,��#.l��@��"���傸�9R�7�]Ia��fs��^�6Dtv��O,�#1��d|3���}1l�^΄9BRީ"@�ќ5m�����|4�#��2;�h�/�c�\��˳NY:����C�/�rn��O�Jm,�@,���\e�s��d���f�����Tt`�#v�����!�%G{�� �(](�&��L�ggb�m[ �Z��������<��w]'^5l���Y�=�( Be&{z�>T�"R�@��{�?5�����h#'i���T�3�F�O���Qo�I$�4�vKQZC���3Tȼ]J%�����̓s[\�(KD�i,V��k\�m6�R�M�ljDSL�YL��1K6���>��ڳL�fҘ�mkT�٢zqEdV�w]6�/���f�n�*b(2#1em�jRړk54cR��֫�|�D��߻d�"�T�mm�$�٪ۗZZ4��I����)��i���*j��M�I���ڛX�-6��o:��%*�&��n��%x.�W��%16�6�ݒ+4)#��]���<� ���:��>'���nK��s�Idܨ���� 2&��ͫͲW$�$�P]E��nl���,����',8x�C���|�����.��Od[�*im�3x���=��N� ���i��4��YI��Ÿ�������*(�#$�#1Q�u��bB�JSW6�{�y,�)U�V�\Y�U+���5�ڛ�YJ)��T�X-@#.$Al�ٍ-31-�P�ZRZ��֛eL�ɭ���J���[�0�"JZ�ͱ6��Q�i�$(��m���5&h�i��1Ab0Э�ScdĖ��RmcmJU��6T�2U%��ƲZdmJ!���B�P�I�&Ra)�i�RʳlF���$mE,Lړ$�5�K5�&�)&�EX0!#.�*��i,�!������&͊� �B*���Z̪��z�V+m�-�ڋV�5jjm��Z��:�>��s�?o�_�.�e����-,TBVǪs#/��n��<���{��/z'^��y� D���Ҿ"�l""Y#TS�#1�%�{�����X��w�T��HC�ߗ�Ek�+���}��#/���H_s�� ��0��w.)��-v�f�͵�1�����hd� �(��8ʡ-j�م���g���l���}�_V8N���̢}���������9N�`0�|^imF" �w���SL ��>b|��#/�9C?Ps�D�>��՝��r��H�J��#1�_����ՌH�������Qb�?G �O�tQ"�f��jp���zy�u\A/]K�Ҩm�a�, � ȡ��ċ)�����s��2R�j��?��MoLJ�B�L8��Đ$�����$-bOs��:N�[<,��#�fp���HΘC�i��T�{b���� {o��ú��˂Ҷ!׌Ni�[�zYS�ٙI���#b�"@�X!��s�a\�J�H,T�!˸#.#.[��Q�m�J���!�$̤y �Ye��S�RFD$Н�.�u=P��yh]��3ݭ޲��ʀתvۇD.E`E �fe��Bg�M"-:T8�`X8qT(f�w��ͥi���t�u�fw�O���?�M�#/��o���Ob�� �Xwx=����w���r�n;kqӳ�����:|��o�F"��~]�c�< G�l�o���& �ᰢ� #1�n܈�s�l�#/dAeL���W�sc:��fYQX&&�`Æ�ɒ0�›BĨU@���8��cMɉ`�6�Y� �R���L;�63���̥JF� 1;E�D�3%����#/�P6 V ���`�X��Hf5B�"ȱ� ���b�}R)5Sް�w��l���o�#.�m�tt7��j3�w���3�-��N���f��d��8��C��؋D�|�VZØ\F�a��{�BI=��cB���s�2�uOV��Nt668��I#.��5 ��F3O�<�Sy�1�­J���""�#.#���=C�ܭ��ٮr�$=��� Y�t ��4ѻg��|���,��B�c����F��|a�S�AV���D���$�KU#/-y��97$�-d���K�&����(�A��M�!I����Ƥ�hzIYS*#q�k�d=����֯�a�D ����/ ���(�c��0��*��s��cHd����!3H�����F���Wӯz��5ǒ@˕1� o�o���~�-~NI��z�8~��#.����q� ��-�� �@p�X�˅��|ya�N K�V���#.�W����0��:�}�6Ae�hf��C�7��d�aS�:+l�]m���fA����g����ƍ|���.���om,��6"v���,�r���tv?8�� I&L�w>�5*z� ���e�%�ے�g>6�z�x5�q�Xt@�EB��C�|)�e�%��vX�y�7!�@�PA �#1v���c���׃�GYD55��{"��"ǚp��t�$ ���E��Dmy�.6�^���~υ/������C��_>�u6�X^���*�9(��v&�#F���4����ÐlQ��)89rX�v�0: M� .u#��5�ʨ�"a͇$�@J؜^t.�rII'e$���.�Ȩ��u�4�T���Q�̩���t������b�>Qb������)`U�wl��𢘓s.�HȒŤ�@�:k5Ӓ�P�`1�Α�@^\I;�� ��Me")���,hU7�@��|8aR)�V,fR�� � ���T�] �bm�cZ��řim��,mc��_�ϓ�z�;�@A#.�����yx��T�k�D��-�`��K2¬{gy ��T�b�CV���T\.<�nK4��h��64��mIr4#/��l26�ZV���EC4��9�-)C�#/Єw��T6�T��UFb�?#1*�'o�p��_p_;MH:�7�]�4`:G�UB��B�M5�si�Q��*�JZ#.M����W�v20�t��#1�4ɜX��`�|�+�F��erQ킠@��4�F���wS�o2ud�� ��"ȸ$"��Xq.�!�}Z�#1y�;�V~���#.�E��XX  ���/��9h�#1�Q��7���[����~�ry�NB6�I! B!"+�p�=�j� ������Ϳ��=)�g0�_{�mDq���u��Fe�����/ �7e�7�#/#1��,<���4`?�����j���� =%4����� B�i��r��I Ϙx�(�xځ��E����� @�#� ����v‚���x�}�/�"��o@��D� (�H ��IU)PU#1"*�"�%DJ��H�CTy#e�1�")�]V��u��}m0� 7w?��`�ߓ�PN\pBe���6Xk]�nI�!���>����)���#/k�Z� �O�x����=IG0��2}�yW�#.v�I@6�F� |s�1 �5�Ɋ�CTWr��S��uN�ᔻ�I!b������#���a-C��a�5�<IijAZ�g�@�;u��q"|���}��H��:i�3�Ώz2�<��BH"v��lj+ߴ�'��L%���/-��g��I�C�#��Ӧ Z����hE9�L�kJC����*` 8>Y#/V�k1#1?�PX(��� �?Ӆ�ڰ*������$QCt�g=&:ܾ��I�U�\o�����.e$;@�&�IR큉����cd�I�b2�� ��Q�,����G#1(��ɗ��p�q#1"n%��Z�^]E��FT,%a��+ xa|R ,X��LO �ݡ�l`�&���8�bۆ5��6KW�{��@ĩS�1�^���h��:J�D�3��ł�Vb ^�].ܫ��PT��5��b�o9��n�|�釧)Ψ��TX�z�ݝۚ�\Ս�wA�(T�<3�1z���^%X+�,�Y����3|�:O1���i;Mfa�d��.�#�z{��Ӊ����@����غ��d/�'��P:m����P�(4�gR�b�Ø|t����%`�%�Ý1�Zo��m6�}�0���������Ƈ��K|$�ԙ��oO_G{?�~?�ݲg�L�j����ւ�)�R0e#)6H������XV�X(�x]�߿���m̜�xpS�\�A>!����'�D-�aD| -ek��{~�i����ljT�Z4����*$�x�d��,V(�U]KcV(�nn��Y��^�鴩�ڠ�P �EB@G�-9�Xh:���p�H@��\�v������>��Y�����5]��nT �*��JR��-k�i$�6%��c���% wC)8n�0����u����5��{���xz �3���lO�mUTBD�I?�W��@�J����dFRJ2e�@H�+#1��C��G"(�K�6Cm�SX�B�h#1CX/Ӛ(���![W��׍^n�(��MjR@2�wd��@8���#.`Yd;�#/��x����9A���#1s��ac| ��5��� ��B�D�>�� ��rÐpd� f =�`�z��ljW�ca��#.�������>��Y�7(���C��x�Γ]���kqI�<��$�1D����xwh_�1L�(�^���4*�EDt4sr�9#2 j���i���s ;�G���Ć��?3M#/a����]���#/�pf�#.9Q�`}�׶'G#X4� T6習/#.<�j�����_c�R���@�#/)iJj���^�cMVi���]E`�Lц!!����;�F@�yuz�3�5^0b|i��ԙ�#1ݨ�C�� ���Gph�;�$I�F��Z���� ��5��&�h�1���J�A&��2���j��S2�����k���bY*��-��Y��-���6QM���*�D�T�m�Ű�$��`���>��_�0�������/׆�v��h-�#.=1�(�smں���6�-u*��n���*0m��Mzm_>�H$ބN��;zwd �P#/ti�NE�͌Ru/ִ���� ���� ���]d$C��dkRai��P@���i�7O�8?ǡ�\�O���{��(��s2�)���>Bv�)�ܟ��� � H�DR��#.;2=I�#/�`�}S2#1"��n#.)P*!��0E@a"��*|��ź�"ų�y���/��M�P#.�<� �X�� 7���#/�)M��[_0� ۡN `Ӽ�������9�O�0��5��`laB�D+q���Sq�#1FzO  ��<�Q��˫������>g��E��#���P��A�@7�d��eU�hƛU�L��2��h(�!ALW��0ya���~)fdD)� a ����Y�L�$��N\�)�HĆ��ӹ��z�-τB�RW�X�V>��`sP����v����#/�ϸ��b��[��q�N��,IX0�#/2i":���?�q� !��ƻ�g�����NTT��*)�#.����/�A�Ki"��M r��_/��Rv��5�� b��ʔLB$Y�?3 nʱ(f7R���$d����@F,"l]0O\�~�wѥ��#1���������Ll�7� �yܙ�#1a!D1�}(,��T;��� C#�-��bE��O��tÙJ)�}�4H���4!� ��T�V��9n�����I`�#1���m�9&�:��!̃�%�vz�a�)Ʋ^|��D��@���6�H�™�kC�F 5\ �Z�A��L�6u#D�4?��JP=�� �l�)��Tt����i���j� 2���R:tj��0�d��� YF�4�f�#.}������8�bTH�g�P.t���*�gh_� �#.�49vnF� aĥ1c�"4�F#.�JQ,(`�FC0!b�@�i�l-�@�x'�5����{�x�P���#.���A :y��:���a�[E��#/�!�jL��s�_P��<��K� ��R�����J �&AYeyvD0��>S�@; �S��������JƅM5-�*�� �C8og0?W}M��s;���2S#1K�q<���c�O<3#/v����h ��E�)�L0xXw�FX%���Ñ>♑�(����t������R�B��ag밳�੐Y3s��T�wF�9g����#.$�P�SĚ�Rp�b�!a������ك�5��M�;��EY/g����b^�L�%�� ��7'Y^��˗���-1#1 �'�K�id�[a�ߞ�:�h��s����q���ٺ�I��;�c���m�X"2����#/,0`,�ݘ�fxvg�󭳦&���hL�� �PB�-0�&��#/i�9�@8!�� Q�9�-���3��Ē��u����A�'o�~H��ټ�₆��P[l�`p$��"���%(0K dŀ'$�M�EH;L��g�Aߝ2#1y��#.�#1��:>�A�ײ�� �?vf^�P �����⛎'�n��Co#>�##.�@BP7��(���Gh����B��ud����D�X;D�� ����@o���܆z���bL��u��&�E�}��C�ui-�x�a�LOA�X��Z���$dE��3(�f@�� �l�ɭ�M��n�kN�,��؅@�XR?O���8�P^����VilD�Ma������~Г�U���.B)�Xn���*�#1�r�#�/_a����ç:�y�q8ͼ7Nf��Y�$�[��dL�� � hI�4-"�b&�@oxc9o� ��"���DjP�&$�L'<�� ���R���f�<�Y���10��n}N$���s�-�~�8;��緑-Wa��]���m �#.��c�2A��N��֓�v��C��T�xiJ�q]Bz g����ืT"ŭ�a�aJ�"8�m�2�!�H�.1aB9e��F#.���4�� dDO����pr�El�D�iH9�f{�\M���3�8����N#��#��a0����UL��w�Z-9����h?�����g'ى������Ȟ2�SIR���D�26���^0*��$9�9g�#/,0tԜׅ0�8�*����2fT��v�ȏ*{�Ea"g�g W�Fޤ:D�o3P�~�f��%�%#/B3�������~R�$�F�\0�V�!� �[ R��VRR��M�����Uԛ$�l�  #1�LJ�[&'�YbĦ�jٵ��V��俑<�����JC`/��Uk�)��2�\���x+#/@��H��A`T�w��Vy^v~֧�g������+�Z���|0�_�'����8v���P��+jU�ls�����\g#1#/�d.TB�ي�d�K����{�N��aK.������3����A<� �AM8=:�8�Q��a4�>Hr��Q�\Xvz<����7��۬| =�h�8�� 4pǡ�k׺W����� 3�`:���{����������?�y-$�&�%!8��ڍи��j�d�c}\��Q���JaEp�d�k�m���g �״������_��������*)Zr�5�ͤ�5�b����z�!��|�.�(M�v�ua\5�ci`Q@�T�g{I�?���OZd��T�Ӝ���)�S6�]��JG�o�Ũv�A%Ӷ,_9:��mrA�C ��n�� 2U"��j�gh�"T �Z�J'!��,ě������ s�2`�ؼl����D��d��ܹ}��!p<ˡ1�JL#13�L�ҐIƳ� pa��4~����E�D�X��e��W�wL#1��w�~G���������&�M$�i�� ��Xm �nw�h��u,o� (z卡�6%�rA��';�ƍ��wy�8j�"`Ar��7AvD�Q� "uT�7"x�7F#/�5�΋L#1�BU��iuWps��r?Vҹ|�>���?)�@:""W���/�������T�>�v9D�^uj実u��6�V*�ֱZ��Q��4[ �RkF�X�Ƶ5Zjׁ**�"%D�ѣ q �G��\��+�D�F��\��X�cb�X��#1� C����w7�<�Έq �X��|�)�:��f(Y�)5#Lm5u<�!Ǟ��m���[4�xX2J��n��Q��=�@�SC�5���(H�3�^�x��(k4�D�u� p#1�v�����M�4�t|�:Ѿ%O���߾�dBL��s��d�A�N�㘼{l��$)�Mep*(� ���{՘�x��H����,�T'i�|5E��w�ㅆ�X�8��p;��HA[�����76vu�l�T�� �[�[j��I�����[:��k�D� f�#1��\�9�~�f)r��#.� [(SL�#��Ab���7EO��Z#14+CPP�4�>='?]�� �"�,rQ S�u��m�ܘR0ə)��S��������WP��F $p�((%H���"#1�ň�N�B~i�ߥL��� :gT9���#1;�w�����|�{����bȏ#ͦ#/8zSw����NIsG�_��a�'d�r$E�it��V���vv��,��4 �&�O'����f<�>bd��w�q6��&�V����l.w��2��_?|W�3~����Ut�ۗ kǙ�坵����LJn���]Êf�K.\���n�;p��<��-��J��~#13 $9nff�uo:�����)0�m�wh�A����,�F0,�C �J%�k}a�����y{g�$+��[�� �S����=�&� �auPhTk��I�}_@�Ɓ0���N��1�����<��$���gg^��s��..ᚄ,W�@z2c݅��#1�GG-A� !�zS9�|�C�Z�G���������n�6���.�i*#/a����50ȯz'������ ��!�����"�l&�WƿF�mm�х�hL ��'�sj��t $�ݓ� �vW �j�Z� ���Lhȳ  U��d�5��رk^u˦�֧nR��j)�e�H��T�W8�ۻ�ƫ*�A�(���A���"* !&!#.��1�J!�::ϵ��0G�aZ�[�n����S�gA&"(Q��1E#1�B�i���@'�$0�#.� ����#1B�������䅑�!���a���8���#/Q[�t�m+�{5���T�-H��u���*�Lfi�E��5��Ɗ����̴4cL��d�(fLJ�Ei��3c[f�;UѾ�u���z�ި{�0o�!$# M��i+QXJ��my������]�׏"��Ý���ޡ��X`6����0����D���ȿ����D ȏ���ji���-��w7Ͻu 4[c�Mo��n�Y�WPZ���D[N�κ�v�Zۘ���Im�r泫�ݝZ�Օ�f�Qlb�R�i(�-� #/S��Kt#i���Q�I'�P^�6��#1� ��D�fš;��E�H�Cb2-��XCY��x]�P����/�J:�����t7�CE� ��>�?,5>c��u��=Q$!��f�2|L��#1X�M ���E��ܮ!���"��?��N������\�Z�"c��� j�-�D�^.#/$b��ۛz|���1��Z\Ozyw��BMzxLlSD:1Y:��V����9�U;�"Ǒ��$���]�����с�4)�%��.a�>$vl�ڔ<4��;L���B�yA�&�'�#.���j����|i�ի�ɔdA��� �jN�#1�(��'���%��mF��V��/���+���#1��+�3Dz� ��A9@3~y7����n~�v@��d�����ƭ��m�j��E�3�!DF�9Ɩ�9$j��`2>���?@�`��+�K|�ڶ̓�mm]�_'�J�;��˼U�DF����$v��I��2OA'9�f���G1ER��0Tfc9� ���ą�̦NiL��(� [��)[i-�7PpND-6�a�t� p~�B��Q R�KD#/� ^�O�?e�H�Q� 'h��"k���V˵���c )H^�{�!��~�'�õ�X+4{�!��L�v�X�#l9���=xI��p�c/�K�ׯ/=�����#1@w�kUm����V��_MP[�" ������9W�~�1���/�~ ���g�0��2������}�y�[�y��Z��*S�>��8?JxXӐc�"=Ǟ֮�Y�voܦl���w��v9��������K�����HH�ݽ�u_#.w�47���n����s���CM)�� ������i#.z�a�_#1�f�Mm0|cW@�!P.#�ll4��+D�5,h#/rYm�2˂Y�A�"�^��a�PYEѰа����_�"�]J����/o�����;��0���}T�F0ޭT0�R�Ӛ���S���O�>���o0�͑:�ںQ��l�Wv4C�(`V"����<�(B����K����{l;E#/%�%4P%�B0L�2y��;O�E��E�D7���7-#1�X� U`����ؔ�/5�f�"i$l&ʖ��۴�%(�l`� %͹\ۛ���^M�]v�9йV�DP��1�#.Z�"L�)r�k2Ƈn�U-�����宛VM�R�n�M�d�x�wF��]ٝ5��g8r��s���h��H%)�#D��E���'#.)`�z'�c��< �m>;D�p��'�)q�#/�h�WXvB�`�j��"4�'�- #1;�t��QM���ߚn��T���p>% �#.�"�X+�!��_t'�5�|p�lO�P��N�I�P�A���'��r5��7*��RDc$$ �1!�qQ"TdQ*����L$X�C��}�"_d]�[�hR��[�M^�_�������#.��K��>�2c`#/Z[A��P��pHb#7 B O�)����;� `O��,X�Q,���A��$��^��_7k�V:ЄТ�^K�,�(�������#Hś��tJP��� ��@I׷����hs����L�� �c^�f��0� �Q��!�#.�Q �a�D���06s#/I�]�(� �,�T�f�4�J�)���eu��1�� �"9*�E����&j�[aV���� ��16��GY�݂�0�B �F"?ԈH�I"��B� �|�7�3ƞ�Ի�=�F�`��(S!�{���5$�@̣���l���8���4כ�^��_���=�@� T�����_e�ZHɗ��#/�v�X�%,��[�#���C��)va<�q�h\H[e���m�=��x����'��!��Ėڡ�=�tt��ph{�]��*}�f#@�HjF#.�l��[�J�d�_��%�e!ݠ(`XťQ���ֆ�"0�L#1!+���"��XL���Yq�������6f&A*n�2bRH���1M@� �t(�Ȍ� ����YP$�KqT�8�‚���Oo�¡�)�Χ�����!�8AD� q#.��<��w�,x�[q���0�'GL�8t���.Y�+ ����0\(6AiDBD#.�Q#1�#1!R@� f�f �A��ׂc�']E&ݛ@�A�~�~��ȩ!! G}�����|Nݎ��q�S�Ҥ��X����H�#1W)$KT-��]q�w��|h�p���A�H�@�A8*tl�EEe-#.X�1 �*@q#.�AS�@u���}�i]�Zvͭ�[`�5��l�{1�� � c��f�����^��:M���ԡ$Sԯ�P�'�o������a:���Z��-©u#1PoS3cS���|n�(rvYOS�Zk#/%l+ *�r�*�.[��IJ[k�]]e�U�if�[s�ԟ�yN�� 'Ug��nVpg"��4"4��I/���DK��<��Ǔw����k� � ���F'I�F�����+ʂ~L��c�6G�T�>�(�r�#1&��"�(!A��`*�� �C� �DC�B��O �γ��x?�#.���=Y�?�O�7^i���?�g�I���'ڐ!�H�X*f�?j�Զ*�>}��q�ߌAL��7q����Ü��������x�YB��d�G �y����k:�.&t��&Wtџ�BS�y�?]^�1�2�%AżP�C.:4�s9��i�-F�����&x��̬Z5�k�G��.EQ��j�n�fT:�]/+��ԑ4&��D���G5{�l I��ΐj#.u L�ѡ�,�j��O1@�s��GQ�>��[�7�#.�H`�2JI Pr��٨R'f�*j��s�����#189i{����Ӽc����0�U>�&�aݑʪ�٘D����W���a�޿�}��c�e���!qq�#���/�����1�.�L$ `�#5�H�`j���ZZ�-㨈�����`�#/����8Y��l5d�<-�a�OS��(r]���~�#1U[�X�Z�G̱#��$��^�Yl ��R����z4�δ�K���i�ٰ �/�v+�=�8G>���`�c?6Nj�x�>��)�� i���q��Wb�E�*��&�/;y����&������!Y9=SC�I���.f}6��Hy]h�B �}"M��!�֡?��yo/� K�����"������6� ���#1– !�L-���e� j�(n!Ȃ�,DIk�n �s#/�V���PUy��5N���*�'\y��C"���v���,@�?!s�]HX����V�,[`[x�i�z�扊@;��������E*|��X�Vb���e���ق��NCG�} ��P��؁Q������$D1M%ON����&ɑ�s����H� C��GҩY�&>ĝ������콌���ι�~����g�a*O�q�� Wm��M"LI#1&0+~�20-Vv�L�gM5E�L/U�O���.E�I@��2��(�g��[x�xD/�;y�C%�p��EӲhtNJl:Gy�!U��-�O�5����j0�q+�c�����+3��y�!� ��� #/�H��M�% ���:�;}ٝa�,UKJ����\ Xy��)��4��϶�O���j�p@���3o8wd�������+S��yF�ބ"�A2��z��$��RI3z�wn����ڋ$��D5�~��*#1)783����� O����{���a���ϯ ��>i@Chn~ f H��|#.Z ���b=�z=ol>#1��V#/��#1"H) H�H�P��Z�#����#�]��^'�`3es�#.��nbG�{GB7�ǭ:���x�fn��v�@\�Iπ��v���j �d�_�`o�o��l����@ȍ�ffN�'ٓ�,��� &��BD�j�Zx+ʨ2���D��H9[�f�V�|#/��Ly�TC˅�#.��G�ɟ�� ��t���uN' +�Y���}��SPa#.�O)"�"�SP�u�\ݮ����� �Û�2>��&g�n�L�"$�Z#/�ۮ9���{c��e0���m��u��J7%������ɀ�(y�j�X� �]")s{��1�h��S��6��V�mamt�qU9|�QI麟p#/�C �m���ccB��ԞڥЙ�P���p�����T��8#.c�#.���:����P�R�E#1D�L�o���<;�8�g0� �y����0��ߥ�w?��^�m}oOv́�e��w�aB�ᘙ�L�� 1XƤ��p��"��#1)�v��@�)T�(H�TA#1�K D��HQ�˂��$�4�x����SLT�2+#/J�rCR7�Bq#/I ���6QB��C�#.�a�mT3����B#1�Ze^6�U˥͝��ȭ&7J��:%��d9��(�a/�Z�`��E#1Y��xet�����5RմW��7S4�ixf�Y�c#/1�_��C���v�3bú�hy�jd(�ǂ����d��=��*�MN�#/�����Q@�Xs'#1tS,��7펆�K�֥"T�R6�] ��8�+eTQ���D���}�K @�.�#1 ��I)J�#1�y��0�#1S`DD�(�Ҵ���s3#^���Ӓ�f�Kl�A2�&AH�W2Q�,q�1�\��ULqt :B�l�RJ�U�B`cLLn"#V#1 �S ������`f�Ktɔd�#/�ێ�痬��5�]lQw�T]����Z\���CJ�H��ǭ��n]���p��ljD�3��C�t#1�i� �ꢶA���@�ذ�Rf�lb]�䱮���n���+�����$�_@�A^���.���2�L�����j���p���Lb�x�}��F���n�o}9���PJ�>�?���T���I#.�<_��%'Q���QXH �0���%c��Aڹ����5�y!�g�`a����4��������Y~��_�ѫ��{�bY]~�~c��ݶ���}.�#/��P��@S#1h��p�,~=���%�6�ؾ���դDP�����&��*���BZ�������X��$>�CA��;�#1p�>m��'�y)��W�a���}E`���*���#1L�( � ��R�J�kbѪ�ڮ�ݷ����,�h~�C徏� Q�q��I�-�H#1�e?�z�y�/�P����ח� ��b+��t}B�O�.��H��9���g��{O��������g���i�R��]CBL�^%�w]�f��߻�:�.8�35Ť;��m��/���@�G����{��~x�[3��B<`���C��S� ���l�|���� �qU9iN�O)����tݸ7tB#.L�Lh��x�C��ץ�+���6��9EEG���=��^)�u^�y�M(���׏3a��)��Aڬ���f��us�=���e8.I�;ꎻ]��mJ����J6b�?��������n(V1$�'��S�l�v\p�#���:U���<��r���J !�=%PD�P�����i ����~�rֹnZ� A�op�� k� �#.4�Y�ϯX�Z껻������ȃ����%��Y!e#1���P�`���&E)�� �+������(�˝(��xӻ�j_��5�D�}��w*˰j�}6 ;��F��TN����Ay.���}#1lv�ʺ��p�|�m�{ �̭�s���"<��7Is �I�!�g���#/�Q f�RT�-�#/����w�fI���V/J�������g�T#d����κ�.�i���l�*9���lg���:�ƀ�C�)�HocC)!���<�g���\޷9)���+����᷋f�� 왘���#/\�ׇ���i��ON��S#<��.캢�,�f�7�U-�װ7���ʬ����aE�P�4q�XI�\A�H�n��az�[M�㓚Uf�x�M�S��� � ��I��W ��Y[����C�`�q�ǝy祴b+2�� ڧ�+^�)]����<�s�.g��o�X�烼'$��I�񙦎#�i5�Ľ%}�^��ȇK����C�!�����]��=Do"����K����y��" �"+޻+Lg�Զ��>O9��Wo)�)׸�+ž�g�Z���EZ�@Sd�"g��ઠ����N�ė>��ʅO=�ՙ���t���8���^/[�]#/t�w������G���������{��BN�"5��U\S��|�<����� �7�;�t��c��w��3�Q�PI��#/�Y�|�U��=:���E�������ǿ��<�v�%���g�����7�R�K��6TʝĨ�-�c��߼���玃��Pڌ/y��y�s d��Ioqa7M<���mT����J[�_��8�L�WR\ ��2N�q�z1�oW=�8��[Pƹ�Yҏ��h,�R���sVXtŎ 4�7;��! ��nG~���l�'���ǟ���1�����R%�t'\=#/�F)<��O'�9�fo%-�J�Vg�P��M��^�'VZe�<- �_~!x)��rŦ�n�=@����lC'f �s�ߤ�e�*O/�{t�q���b wC�l�6���ăr��cA�pmӍ�H�Ft�(H�U�����A@w�� S8a#.P�F�:��ҊG!]�+Ï��q�\���Dn[��Ёz8�/�׺T�WA�L�7�\�#1����1�]���d��f��[52��&�/qw�T�#1>ʫ������TP(������Ҽ_�g�vu�'^��-�S��Xv5�u�_ �~��9D��&r +�L����p]�[k��9�M6�j7.�����y��;����?N�U-)>.~;GJ�ET�QSSNG�5R� �t���,��=�代�{Z���t4�o. ��0����"�0 S��}i/�#1�!���r�۷�氁�ha"�K�#/��[�y uR��hsE�UWh�����-��#X˻�y�yt)�i�;h��F����}%K��^k}��8X����x�X� �m-*�j把"�S��0!��'�oe�E���}��EE���;�rѝ�#1ǎ�ݹ5��_\��@�#/]8����=����"C�;w#/a/ ��e�������Ȼ�ķOc�� ��;�,Mc�uGk��L�9����ߛ������s^R�q���ym�y�7�(�4m ��y���Pqq y���&�G�9�x����ۥ�#1{���r�Eʉ��%�;���L J����.n�a�/v��J��TCKy�,ؽQ�tGN�5\�${qzN�p|�P�$D*X+��pY��Qn��z2y7��O�����fB���s8o��XvE��Q���ݏ≠j#1x�:�8!רX���ۡ���5�m���uy�B���N�_���vhn�J;-s �#.ǂXYl#��\H�}�aj6兆��(����s�|9~��a���+�����A S�h�2�{���#1�Ф�T/y���L�bBIgT��ù�v4�<dp�� �N�4|���f�3׺�c�U����c3D�J�V'��-Jx�$ޏ#��9�ht�'i6�a�D;`�''y��s��8���y�a�s��Js�1:J�����tp�m�,�/�7`���"�(@�`��e���a�׊��Zn;��*�cv$7�l1�z��h�#a! ��<�C��Ilc�p���_�/�@�E4$�0���h�*��$�����b���5B�h!��,�Hić� >j���������#1�UQ'����U�F�wa��Cq�;��\�u3��XrI'��#1��S�}ʢ��A�Cʂ2H�7�)��Ѭ*�� h�]w���Ϧ������0��sw@y9;�bƪ��0��us����Q0�h�0„>�#.�>ެ g@��;� ����׶����#/��ݕd���H� A0�HE�B��L�@(�T*#1{��:?e#/`��<�w��}�>��Oz����h��MP�6�Œm���&1�MD�(Z�U�i�[%I�X��X��Q�E6Tm�m#1i�4��%)I *#CmQ)ђ�SH�SF�a�l�%(I1V�AV�����r�-�1X����� =QhÍ���u����̅ν62״��&���I ��C��'E;�z�~��]gL��`[�\�v́�m#.U��~��o�2#1� ��_ &%���H)#/�_G݃���ii��۝�Y @$b������Eo�2���)�a!-���8�I q5]w�����}��]q�j��5 q�O6~9��ͰS���5�e��`�����D��6��LF�6���Z��cR�&�F-b3�ݫ�VZ��[ T��X�#.�?�2'� 22H��d�?���p�ʂ��n�����;� �r�NS��ӫ��8^(Ÿ�g�YO9 %ė���vP�Ѷ�3+� �xH�!�`;��R�d`ϵ&1hΓ e��9�20X�2pC�F#10�BT����7����3GMB��g����P a(�P� *�)Q�y�G4��=��O��E�����{0\�r�eH�J�G���oZ�m|�n“1�T�#�Jjg��lA#/����Z��85�O�� ����a��B30����P��Y@M�j�Θe����'@P:�� Ȅ�)0�~�II$�E;��>�Rd�6�2)J髄K�Մ��x�7)�����ف�B���@7�}��#/c?�*'�P�;�C�D�d1���I�hX�Ǎ]��ށ@s �>0�g���t�@j�xy�Ǧ����#�H����*���ԭ�S5x8���@�N\t+#B+�7�dz����?���&+>���̐Qϯxvp��S�{ ��+B��L��Nu#.ِ����ʵѻ��4��}��_�x3?Ϛp���ع�ڢW�q���p�y��A��iCNX�����/#1���n�E�z �s��z覕�'�u�F~��H�Q�� ��HH�`E�9j.5a�q;.��&G��&��#/2�~�//ڒI!#1�Hk<ͺ��!�`ؘ�*3��q����1�4B A�=����*ug>e�Ӝ���C�P��E���_�;����F��G�vC���s�@d� 1UM:���紧Л3��7y��(��y�tv�0]�z~ɣ���ڔ�X�Y� 9�)t�q��J��W����Qn�ӝ=ۖ#1�}O�.� #�p�'i�"�6"R�D=Vh����yW�u3�vTm�����S'#.�BE$�z�7h�IH#.�#1����(_�t�c`d��f���2�ռ�ל�wI�r$ ��{'��0 0��:Ƀ)D|JS���h����xa��t�0�;�<�a��pA�4����;����ٷקSmCm�wCv��J �%��Z��0���xЅ�H��x�ȌС�����(+"'-��3ς���g!��f�x��m�jce[�iH�uQ���b0���R�8�,ijXD� Ű�߷#/:��S[ ��Z�@�TQ����O6n�"�@�t#.�^��(�������z����#/�}�$g훇i0`)=��S!2,3�� �� 3�ED��x^BP�#/�3?��$�.8���L��I�����|e�����Rc��}|����t �޺�A�5�)YP1���f<�B�������,��A�|t|r�"�:d,6�^h�dAa�u��=G:Kɋ���O�9���k���frp3��u����!�R&�e)P!#1Q� q3n��X�&�a6�� ��ޅ#/޴���TZ��Y�o�$��l�S*B����=Φ�Ӷ�/n=�K|��IІke! �>A�9�ñ��&bv!I� ᷽�1r9RE �WME��JJ�<4��љr�Y��-�'�F���Bb:280�̦��i4���4���H� �vk)�{7t��R@�S9���m��q%�ɝ��]=�˭�!os����P�a�u����ug_;{�eǪ��Ը�ۼH�X9��s�M1T?��DC$mF+�xw��h=��{�o��xhi���&�i���+^�*f���b�Cˡ�K� N�'�0��N�'��ݩ��:��������+�¬�n움!�.I����B�n�&#/�@�L�~~9��gW�����%�O+�v&��w{��휣�����Y��b�(�p�H�L�:5���3ӑ�Z��`iR��:ۃ�`���}�רn��e��Í8�����%�r�?T������Ax5k$��#/�b�pR#�ƚP^ѐ4�]� ���0RQ 2v���β �Cƚ!��t�rW)��8Z�McX��[p:-n3� F8�#���S#/<�x�<ጹ��cmC����x�;4԰��ކ�h�d��\�l!.oLC��tr��Qv3i�O���(F^�.e��dR�5�x��ǻ��׶�W�z`�%�dq裏5N`�c�a㶞D���V~�mC�Oxv�7i���e��|6������m�ٞ���ɫn��&�#�%�9EBb������~�Fk ݐ��f,]sQ����=b�(+'�&9Nv' K����[57Փ�#]CX`\��3��r��[��Uj�Y�N D%Ҕ3B�1�y��,�o����B!�22��� P��>|^ vE�0P�#/�@L9bbm�h ��-�ko�L�W0K��m�;�Qt�S�&�,�zx)�fGNNZ���T ��3��ɟ���� 1�KjY�q#/���ol���it���N[�/�ܦ��f`&�5i��S"Ķ�z�ѝ�)��/m�1��H/D��|&���$� ��Q�C [��Pn3� �"o�[Zq-���)d>�7mh��B�Ԃ+��v������Þ�x����(�1Y��`�ǎv B�%P� b�7�yKdQ���N��;������C!����@���2w!��:nR�+ؖ3���M2����ÇK%��y����*�POB�-rx #/1 ���B�R�w�L���X���ˆ�0��X�48Xn ����x&@���ݐ9�!�S�_i�Rҳ)�Y�©��E<#.��0L�[B���ql��X��TP�G$B2�,���C"C#/��l�%�g�����~k��<3�;�#E�^ZM��7'�o|��a�_��@�Pf(�� �&�E ��vC�s�G���#.Oa�vzVo�Eu��/�m�f����ͬ�\�v$�V�ϸ��I rZBH-��/�Ķ<�9�xI�h�%T�g�S�w��H��CSa9f���� �iU�bH�0WƗ5���*���V%U>WQ�l��2�B���#.�&�!���UzZJ#1)��7D��8�-���Eѱm8����NɨZhgh����,��QU�0���A�.�xL�wwd�y~rq��,f�t��?��_���0�倶_� �(NB";�4&�f#"wI>�%���ߴ?Y�ф��&n����ڼ��@_@=+�4} ��T�Q���O��)�����mZ�(#.6 ��2�壧a����a'��Y�Ѷ��`���Q�4K#.�y�b{;؝d����29��#/d�bԴ&AX�D���L��Ym ��DiD+T�.�p�Q˦�A�bA�cV��-ZVQ���ff@}X��$�Ie�뭹��������oTɛ��vF�CSTw#.Po�$��4m����������_�vg�`���#.�T�N��[��B�>���D+73���S�28VP�0p��7Nn�7�� 1$΋bA.c����cdS���9n�a@x� �N�����.�];�� q��7��tQ:e��ٸ[�rC?����M�,ho��/ C���oqg�� ����z����1�]�!��m�a��S*�E-�T13S�}p���NWnL]�17pY#.9@�4��@z�!���_�Mw�˭$ D�ʺ���P#/�d-���o�ɒ�H�����1s 2.Gf~���NRFE��� �B�#U����i���[�zP�˜@��Z�E���V۵���Y��) ���:��6�KQ�rEEp�Y�� !��0#.�#1Bd�pK����^P�'�F�*BɁ���#.�#N�+_Y�tN7W����_3h�ii6*-F�!s��ݾ׼9>Jf�Ŷ���@�J�  �" ��~�o�ݺ�f��Q�5M(y�rh�f�@�]�1��9�iR�h�2勸���(�sD �2h[@�a��(b\7&0�H`�2Ī�č�IZوYM���)�m&*�7]���-�j@V@f�9�s���� fTu_��Ȃ�Rա4-��mw>� ����� I}\z��:f!�b_x�V��f �F^����C�17G_p��hc��u���QV$#.�rߦ��u� �r�Ŧ�Qg�����L�B,�=�T%�1��:��� ���8`���� @#.-ڠifH���:�2Ly,`,ة��Y���'h��(���PM������YFIT9ߺ'�����4]�L=��S�=R�{�?a��(����W��㼽�������T�=^�e#.��J����,�� !,��u�G�D1� �Cb�#ch�E,��lׯ�5��|�Q���mF�M3m~ S`� �&0���X�C��IH��c��a�>�#b�`������Ȣ���Zn�"���j�6dn�eb�Ql�bz�[i5�SjDQ:)@�#/�4k��)����&o_����YϨ�v��MZ�pQ�֞��ߥK���dX|n�k�����}z� dRv�Ϸ)���9��Ƽ�Ո�.���e�N\��U�o�����?�0z��#1�]�m�u�cSP#/?3��Tz��0�����k�s!Ӟ�= �!�M����Dև��W�@��W>�QU#L H,���&Ȩ�����ڤ�aKF�m��#/^%��I�H��E��Ayq;���یe�$#1B���=�lV>���� q*F�F& (�QM#Me���6�@���xc�u�j�sT���FիʱmF5��(U��b-cmQ�Z�ߞh�5[n�/8���RI����a�o�>�@@ف�5�c�3A�QL�W� F�SP�9P��T'�Ҹ���������v��&킒$�).D����`���߻���(�z�K @�1��m�i54U*[�l+���B��0!@d��jD�n�3vfUu��QW;PIl�6�.�i�mwuwui6T�2%65����R�& 2ii�C #1+*LfJ��+ח�Jil��bD#/B&P��a��e�[)k��[�ݺ,���(ˆ¤,� =�螑#.�E�* oց���t�;���b����1���w���P��{S����U䑎��@ W�“}0�6u8�Ӕ�?�'�C&y���}�D���M�����#C�<�^X��]?[�氡`��%�C��Ӛ|W�h�.Q@��?~��'�x�z�;u�����6y��\�[�^:t>��%�̅N�M#/2v�t}#n�"F��) ��>�6�| ?��� �Q����3WO:�nd�~�؀��̄H�RЎdo�ٙ�Ցw�X�)%�Y��o5�֯��풲�Ԟ���>�[�$� �.�$D�*� cjX�~�ƭª��6�x��d�qJ�Go}T�}F��@? 7ve&�v���$�y$���O��H���%kWz�FW���%#1D�G�jQ8�y�M�1�GA�0��:�L��.v Ɯ�#/���N�5��Nl":vje�-�kf|��W�p�I�WP�!"B��-JcE E�z�*���'#/D� ><���v��R܋��$�:�ޠf0������ nu�c���0Z�8�chw^S#1�.fm�̸8v��)�����%�7���}��e�S�?=���MA9j4��d٪"*|�I�%~�����@������f�K=��g%�l�Z��r�<�w�>� ��Z�:��!��B\_�= �6Î�v%����=D/���)dRS(����v� �>�Ak�^x0;�٘0����Ӟ�vg�=$(�/��&��BG�̶�}\����#/B)��g�籡��Zֵ��W�(�:����޾�]ۢ}p��O�b�?�M~�` ���B�iH�?x�C��}=�C� <'���Gү�<�ïQ����f*��e��Un�O��!���I���I#/T�"e �bo�1����� �j� �Pؼ��DS��A�D\�7L/��bV� �p�8j�! 5�z�w���?����$�$�ϟ[��-�U������!�>���z�і���XS���2%�B�t�޺�zub�ʲ�C�~�9�L-e���-�����=>�p{b��� 3��%w*F �IW���q���Q�B=T%+��WD�@ mO�������������K��s#1^-#1��r=p�L���?l<�PQ`��rC���Bv��C)�p}σ�¬*#1���\��} ��*L\��n�b�T�?�mNs��gd4:ަle� ��������w���kD�(8� 0�ӳ��0�K.���0J�J���&^a���4;;��Яv\I�11��e��x��k��<�|P��ƥ�mzN��#1t�t7%�`�#1w��љ��S�`�(�t�vNܗrA�C ��7���X��Hۻ�4A#/hwH�BA��q/tC=�C�#/_?\�Q��� �ռ.�6P�*f,$�IH�b�G���@ˍ#.h�A��؃��3�� �]�j��Pq�#/�Z�ӤlѮV�ɚ�2�U�v�m���������J��X�h{�DJ���8�q,�t���ܓ&��#1D{�!��s���t�ܱ��•�g��{�����1�{�1�5i�)�?WOn����s(�[�����II#.�� "T-�g-�A�{u�1�L!# ���%�G2��1�$����J1�m���(D��C)��4<�](�#/a b�� �� �bfp��ߖ핓>�V� �#/Ӊb0#.�*{�P��69�p/����k�幹�մ�Lj���J�lU��6��5�h��DŅ�DMe(P��ƄN11~���#.�� "��K�Z�.>��)��#/��`�5(+���#.�;�? ���DN��۵��uD٩5��uZ��M��A{=^�n'�ʇ��e3�B"���蝝ģ��ɝ'Y���p�i��1#.���q��=Q>� ����A����@@u�@o��g��{����w�O�~u�F��}Ut������_�R?��x$#.zHbg �~����>��i6f+� j�?��������g�_��yu��hMܵ�d�uuǕ�+��)��9>>2�R�o����7��#-��*�À���u~�#/x��I_����#/~��|h {E#1!�� W�2n�Q d�.P��6g��eT_�!/��a�:���F�#1���Y��]�N*��pM�j�\����|�!���t��tYX�]2���b��Kr����k���'�/��@/� BA6֬y�,�<0$E,�=z�6Gn�B[��껁�q�W�Xj+`Sy�v�zh0�3Oy���I#I��a�n�l�#/��~3����x����rE8P��l�� +#<==