diff -Nru libchronosync-0.5.5/.github/workflows/ci.yml libchronosync-0.5.5-10-gd45f888/.github/workflows/ci.yml --- libchronosync-0.5.5/.github/workflows/ci.yml 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/.github/workflows/ci.yml 2023-11-17 18:16:31.000000000 +0000 @@ -1,65 +1,12 @@ name: CI on: push: - paths-ignore: - - 'docs/**' - - '*.md' - - '.mailmap' workflow_dispatch: -permissions: - contents: read +permissions: {} jobs: - linux: - name: ${{ matrix.compiler }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-20.04] - compiler: [g++-7, g++-8, g++-9, g++-10, - clang++-7, clang++-8, clang++-9, clang++-10, clang++-11, clang++-12] - include: - - os: ubuntu-22.04 - compiler: g++-11 - - os: ubuntu-22.04 - compiler: g++-12 - - os: ubuntu-22.04 - compiler: clang++-13 - - os: ubuntu-22.04 - compiler: clang++-14 - env: - CXX: ${{ matrix.compiler }} - steps: - - name: Install C++ compiler - run: | - sudo apt-get -qy install ${CXX/clang++/clang} - ${CXX} --version - - name: Checkout - uses: actions/checkout@v3 - - name: Build and test - run: ./.jenkins - - macos: - name: Xcode ${{ matrix.xcode }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [macos-11] - xcode: ['12.4', '12.5', '13.2'] - include: - - os: macos-12 - xcode: '13.4' - - os: macos-12 - xcode: '14.2' - steps: - - name: Set up Xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: ${{ matrix.xcode }} - - name: Checkout - uses: actions/checkout@v3 - - name: Build and test - run: ./.jenkins + Ubuntu: + uses: named-data/actions/.github/workflows/jenkins-script-ubuntu.yml@v1 + macOS: + uses: named-data/actions/.github/workflows/jenkins-script-macos.yml@v1 diff -Nru libchronosync-0.5.5/.github/workflows/docs.yml libchronosync-0.5.5-10-gd45f888/.github/workflows/docs.yml --- libchronosync-0.5.5/.github/workflows/docs.yml 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/.github/workflows/docs.yml 2023-11-17 18:16:31.000000000 +0000 @@ -1,33 +1,10 @@ name: Docs on: push: - paths-ignore: - - '*.md' - - '.mailmap' workflow_dispatch: -permissions: - contents: read +permissions: {} jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [macos-latest, ubuntu-latest] - env: - JOB_NAME: Docs - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Install dependencies - run: | - find .jenkins.d/ -type f -name '[1-9]*.sh' -exec chmod -x '{}' + - ./.jenkins - - name: Build documentation - run: | - pybindir=$(python3 -c 'import sysconfig; print(sysconfig.get_path("scripts", "posix_user"))') - export PATH="${pybindir}${PATH:+:}${PATH}" - ./waf --color=yes configure - ./waf --color=yes docs + html: + uses: named-data/actions/.github/workflows/docs-html.yml@v1 diff -Nru libchronosync-0.5.5/.jenkins libchronosync-0.5.5-10-gd45f888/.jenkins --- libchronosync-0.5.5/.jenkins 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/.jenkins 2023-11-17 18:16:31.000000000 +0000 @@ -32,6 +32,9 @@ export DISABLE_HEADERS_CHECK=yes fi +# https://reproducible-builds.org/docs/source-date-epoch/ +export SOURCE_DATE_EPOCH=$(git log -1 --format=%ct) + for file in .jenkins.d/*; do [[ -f $file && -x $file ]] || continue diff -Nru libchronosync-0.5.5/.waf-tools/default-compiler-flags.py libchronosync-0.5.5-10-gd45f888/.waf-tools/default-compiler-flags.py --- libchronosync-0.5.5/.waf-tools/default-compiler-flags.py 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/.waf-tools/default-compiler-flags.py 2023-11-17 18:16:31.000000000 +0000 @@ -3,10 +3,12 @@ import platform from waflib import Configure, Logs, Utils + def options(opt): opt.add_option('--debug', '--with-debug', action='store_true', default=False, help='Compile in debugging mode with minimal optimizations (-Og)') + def configure(conf): conf.start_msg('Checking C++ compiler version') @@ -18,19 +20,22 @@ if cxx == 'gcc': if ccver < (7, 4, 0): errmsg = ('The version of gcc you are using is too old.\n' - 'The minimum supported gcc version is 7.4.') + 'The minimum supported gcc version is 9.3.') + elif ccver < (9, 3, 0): + warnmsg = ('Using a version of gcc older than 9.3 is not ' + 'officially supported and may result in build failures.') conf.flags = GccFlags() elif cxx == 'clang': if Utils.unversioned_sys_platform() == 'darwin': if ccver < (10, 0, 0): errmsg = ('The version of Xcode you are using is too old.\n' - 'The minimum supported Xcode version is 11.3.') - elif ccver < (11, 0, 0): - warnmsg = ('Using a version of Xcode older than 11.3 is not ' + 'The minimum supported Xcode version is 12.4.') + elif ccver < (12, 0, 0): + warnmsg = ('Using a version of Xcode older than 12.4 is not ' 'officially supported and may result in build failures.') - elif ccver < (6, 0, 0): + elif ccver < (7, 0, 0): errmsg = ('The version of clang you are using is too old.\n' - 'The minimum supported clang version is 6.0.') + 'The minimum supported clang version is 7.0.') conf.flags = ClangFlags() else: warnmsg = f'{cxx} compiler is unsupported' @@ -45,7 +50,7 @@ else: conf.end_msg(ccverstr) - conf.areCustomCxxflagsPresent = (len(conf.env.CXXFLAGS) > 0) + conf.areCustomCxxflagsPresent = len(conf.env.CXXFLAGS) > 0 # General flags are always applied (e.g., selecting C++ language standard) generalFlags = conf.flags.getGeneralFlags(conf) @@ -53,6 +58,7 @@ conf.add_supported_linkflags(generalFlags['LINKFLAGS']) conf.env.DEFINES += generalFlags['DEFINES'] + @Configure.conf def check_compiler_flags(conf): # Debug or optimized CXXFLAGS and LINKFLAGS are applied only if the @@ -75,10 +81,11 @@ conf.env.DEFINES += extraFlags['DEFINES'] + @Configure.conf def add_supported_cxxflags(self, cxxflags): """ - Check which cxxflags are supported by compiler and add them to env.CXXFLAGS variable + Check which cxxflags are supported by the active compiler and add them to env.CXXFLAGS variable. """ if len(cxxflags) == 0: return @@ -94,10 +101,11 @@ self.end_msg(' '.join(supportedFlags)) self.env.prepend_value('CXXFLAGS', supportedFlags) + @Configure.conf def add_supported_linkflags(self, linkflags): """ - Check which linkflags are supported by compiler and add them to env.LINKFLAGS variable + Check which linkflags are supported by the active compiler and add them to env.LINKFLAGS variable. """ if len(linkflags) == 0: return @@ -114,13 +122,17 @@ self.env.prepend_value('LINKFLAGS', supportedFlags) -class CompilerFlags(object): +class CompilerFlags: def getCompilerVersion(self, conf): return tuple(int(i) for i in conf.env.CC_VERSION) def getGeneralFlags(self, conf): """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are always needed""" - return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': []} + return { + 'CXXFLAGS': [], + 'LINKFLAGS': [], + 'DEFINES': ['BOOST_ASIO_NO_DEPRECATED', 'BOOST_FILESYSTEM_NO_DEPRECATED'], + } def getDebugFlags(self, conf): """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in debug mode""" @@ -130,94 +142,100 @@ """Get dict of CXXFLAGS, LINKFLAGS, and DEFINES that are needed only in optimized mode""" return {'CXXFLAGS': [], 'LINKFLAGS': [], 'DEFINES': ['NDEBUG']} -class GccBasicFlags(CompilerFlags): + +class GccClangCommonFlags(CompilerFlags): """ - This class defines basic flags that work for both gcc and clang compilers + This class defines common flags that work for both gcc and clang compilers. """ + def getGeneralFlags(self, conf): - flags = super(GccBasicFlags, self).getGeneralFlags(conf) + flags = super().getGeneralFlags(conf) flags['CXXFLAGS'] += ['-std=c++17'] if Utils.unversioned_sys_platform() != 'darwin': flags['LINKFLAGS'] += ['-fuse-ld=lld'] return flags + __cxxFlags = [ + '-fdiagnostics-color', + '-Wall', + '-Wextra', + '-Wpedantic', + '-Wenum-conversion', + '-Wextra-semi', + '-Wnon-virtual-dtor', + '-Wno-unused-parameter', + ] + __linkFlags = ['-Wl,-O1'] + def getDebugFlags(self, conf): - flags = super(GccBasicFlags, self).getDebugFlags(conf) - flags['CXXFLAGS'] += ['-Og', - '-g3', - '-Wall', - '-Wextra', - '-Wpedantic', - '-Werror', - '-Wcatch-value=2', - '-Wextra-semi', - '-Wnon-virtual-dtor', - '-Wno-error=deprecated-declarations', # Bug #3795 - '-Wno-error=maybe-uninitialized', # Bug #1615 - '-Wno-unused-parameter', - ] - flags['LINKFLAGS'] += ['-Wl,-O1'] + flags = super().getDebugFlags(conf) + flags['CXXFLAGS'] += ['-Og', '-g'] + self.__cxxFlags + [ + '-Werror', + '-Wno-error=deprecated-declarations', # Bug #3795 + '-Wno-error=maybe-uninitialized', # Bug #1615 + ] + flags['LINKFLAGS'] += self.__linkFlags return flags def getOptimizedFlags(self, conf): - flags = super(GccBasicFlags, self).getOptimizedFlags(conf) - flags['CXXFLAGS'] += ['-O2', - '-g', - '-Wall', - '-Wextra', - '-Wpedantic', - '-Wcatch-value=2', - '-Wextra-semi', - '-Wnon-virtual-dtor', - '-Wno-unused-parameter', - ] - flags['LINKFLAGS'] += ['-Wl,-O1'] + flags = super().getOptimizedFlags(conf) + flags['CXXFLAGS'] += ['-O2', '-g1'] + self.__cxxFlags + flags['LINKFLAGS'] += self.__linkFlags return flags -class GccFlags(GccBasicFlags): + +class GccFlags(GccClangCommonFlags): + __cxxFlags = [ + '-Wcatch-value=2', + '-Wcomma-subscript', # enabled by default in C++20 + '-Wduplicated-branches', + '-Wduplicated-cond', + '-Wlogical-op', + '-Wredundant-tags', + '-Wvolatile', # enabled by default in C++20 + ] + def getDebugFlags(self, conf): - flags = super(GccFlags, self).getDebugFlags(conf) - flags['CXXFLAGS'] += ['-fdiagnostics-color', - '-Wredundant-tags', - ] + flags = super().getDebugFlags(conf) + flags['CXXFLAGS'] += self.__cxxFlags if platform.machine() == 'armv7l': flags['CXXFLAGS'] += ['-Wno-psabi'] # Bug #5106 return flags def getOptimizedFlags(self, conf): - flags = super(GccFlags, self).getOptimizedFlags(conf) - flags['CXXFLAGS'] += ['-fdiagnostics-color', - '-Wredundant-tags', - ] + flags = super().getOptimizedFlags(conf) + flags['CXXFLAGS'] += self.__cxxFlags if platform.machine() == 'armv7l': flags['CXXFLAGS'] += ['-Wno-psabi'] # Bug #5106 return flags -class ClangFlags(GccBasicFlags): + +class ClangFlags(GccClangCommonFlags): def getGeneralFlags(self, conf): - flags = super(ClangFlags, self).getGeneralFlags(conf) + flags = super().getGeneralFlags(conf) if Utils.unversioned_sys_platform() == 'darwin': # Bug #4296 brewdir = '/opt/homebrew' if platform.machine() == 'arm64' else '/usr/local' - flags['CXXFLAGS'] += [['-isystem', f'{brewdir}/include'], # for Homebrew - ['-isystem', '/opt/local/include']] # for MacPorts + flags['CXXFLAGS'] += [ + ['-isystem', f'{brewdir}/include'], # for Homebrew + ['-isystem', '/opt/local/include'], # for MacPorts + ] elif Utils.unversioned_sys_platform() == 'freebsd': # Bug #4790 flags['CXXFLAGS'] += [['-isystem', '/usr/local/include']] return flags + __cxxFlags = [ + '-Wundefined-func-template', + '-Wno-unused-local-typedef', # Bugs #2657 and #3209 + ] + def getDebugFlags(self, conf): - flags = super(ClangFlags, self).getDebugFlags(conf) - flags['CXXFLAGS'] += ['-fcolor-diagnostics', - '-Wundefined-func-template', - '-Wno-unused-local-typedef', # Bugs #2657 and #3209 - ] + flags = super().getDebugFlags(conf) + flags['CXXFLAGS'] += self.__cxxFlags return flags def getOptimizedFlags(self, conf): - flags = super(ClangFlags, self).getOptimizedFlags(conf) - flags['CXXFLAGS'] += ['-fcolor-diagnostics', - '-Wundefined-func-template', - '-Wno-unused-local-typedef', # Bugs #2657 and #3209 - ] + flags = super().getOptimizedFlags(conf) + flags['CXXFLAGS'] += self.__cxxFlags return flags diff -Nru libchronosync-0.5.5/AUTHORS.md libchronosync-0.5.5-10-gd45f888/AUTHORS.md --- libchronosync-0.5.5/AUTHORS.md 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/AUTHORS.md 2023-11-17 18:16:31.000000000 +0000 @@ -2,7 +2,7 @@ The following lists maintainers, primary developers, and all much-appreciated contributors to ChronoSync in alphabetical order. The specific contributions of individual authors can be obtained from the git history of the [official ChronoSync repository](https://github.com/named-data/ChronoSync). -If you would like to become a contributor to the official repository, please follow the recommendations in . +If you would like to become a contributor to the official repository, please follow the recommendations in . * ***(Maintainer)*** Alexander Afanasyev * Chaoyi Bian diff -Nru libchronosync-0.5.5/README.md libchronosync-0.5.5-10-gd45f888/README.md --- libchronosync-0.5.5/README.md 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/README.md 2023-11-17 18:16:31.000000000 +0000 @@ -5,7 +5,7 @@ ![Language](https://img.shields.io/badge/C%2B%2B-17-blue) ![Latest version](https://img.shields.io/github/v/tag/named-data/ChronoSync?label=Latest%20version) -> DEPRECATION NOTICE: ChronoSync's design is outdated. We recommend using more recent sync protocols, such as [PSync](https://named-data.net/doc/PSync/current/) or [StateVectorSync](https://named-data.github.io/StateVectorSync/). +> DEPRECATION NOTICE: ChronoSync's design is outdated. We recommend using more recent sync protocols, such as [PSync](https://github.com/named-data/PSync) or [StateVectorSync](https://named-data.github.io/StateVectorSync/). In supporting many distributed applications, such as group text messaging, file sharing, and joint editing, a basic requirement is the efficient and robust synchronization of @@ -26,21 +26,21 @@ ### Prerequisites -* [ndn-cxx and its dependencies](https://named-data.net/doc/ndn-cxx/current/INSTALL.html) +* [ndn-cxx and its dependencies](https://docs.named-data.net/ndn-cxx/current/INSTALL.html) ### Build -To build ChronoSync from the source: +To build ChronoSync from source: ./waf configure ./waf sudo ./waf install -To build on memory constrained platform, please use `./waf -j1` instead of `./waf`. The -command will disable parallel compilation. +To build on memory constrained systems, please use `./waf -j1` instead of `./waf`. This +will disable parallel compilation. If configured with tests (`./waf configure --with-tests`), the above commands will also -generate unit tests that can be run with `./build/unit-tests`. +build a suite of unit tests that can be run with `./build/unit-tests`. ## Reporting bugs @@ -49,13 +49,12 @@ ## Contributing -We greatly appreciate contributions to the ChronoSync code base, provided that they are -licensed under the GPL 3.0+ or a compatible license (see below). -If you are new to the NDN software community, please read the -[Contributor's Guide](https://github.com/named-data/.github/blob/master/CONTRIBUTING.md) -to get started. +Contributions to ChronoSync are greatly appreciated and can be made through our +[Gerrit code review site](https://gerrit.named-data.net/). +If you are new to the NDN software community, please read our [Contributor's Guide]( +https://github.com/named-data/.github/blob/main/CONTRIBUTING.md) to get started. ## License -ChronoSync is an open source project licensed under the GPL version 3. -See [`COPYING.md`](COPYING.md) for more information. +ChronoSync is free software distributed under the GNU General Public License version 3. +See [`COPYING.md`](COPYING.md) for details. diff -Nru libchronosync-0.5.5/VERSION.info libchronosync-0.5.5-10-gd45f888/VERSION.info --- libchronosync-0.5.5/VERSION.info 2023-01-10 02:10:09.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/VERSION.info 2023-11-17 18:16:32.000000000 +0000 @@ -1 +1 @@ -0.5.5 \ No newline at end of file +0.5.5-10-gd45f888 \ No newline at end of file diff -Nru libchronosync-0.5.5/debian/changelog libchronosync-0.5.5-10-gd45f888/debian/changelog --- libchronosync-0.5.5/debian/changelog 2023-01-10 02:10:58.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/debian/changelog 2023-11-17 18:16:44.000000000 +0000 @@ -1,9 +1,16 @@ +libchronosync (0.5.5-10-gd45f888-ppa1~jammy) jammy; urgency=low + + * New version based on 0.5.5-10-gd45f888 (https://github.com/named- + data/ChronoSync.git) + + -- Alex Afanasyev Fri, 17 Nov 2023 18:16:44 +0000 + libchronosync (0.5.5-ppa1~jammy) jammy; urgency=low - * New version based on 0.5.5 (https://github.com/named- + * Version based on 0.5.5 (https://github.com/named- data/ChronoSync.git) - -- Alex Afanasyev Tue, 10 Jan 2023 02:10:58 +0000 + -- Alex Afanasyev Tue, 10 Jan 2023 02:11:26 +0000 libchronosync (0.5.4-3-g22eeb29-ppa1~jammy) jammy; urgency=low diff -Nru libchronosync-0.5.5/debian/control libchronosync-0.5.5-10-gd45f888/debian/control --- libchronosync-0.5.5/debian/control 2023-01-10 02:10:58.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/debian/control 2023-11-17 18:16:44.000000000 +0000 @@ -6,7 +6,7 @@ python3 (>= 3.6.0), pkg-config (>= 0.29), libboost-all-dev (>= 1.65.1), - libndn-cxx-dev (>= 0.8.0), + libndn-cxx-dev (>= 0.8.1), python3-sphinx (>= 1.6.0), git Standards-Version: 3.9.2 diff -Nru libchronosync-0.5.5/docs/conf.py libchronosync-0.5.5-10-gd45f888/docs/conf.py --- libchronosync-0.5.5/docs/conf.py 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/docs/conf.py 2023-11-17 18:16:31.000000000 +0000 @@ -10,7 +10,7 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information project = 'ChronoSync: A Synchronization Protocol for NDN' -copyright = 'Copyright © 2012-2022 Regents of the University of California.' +copyright = 'Copyright © 2012-2023 Regents of the University of California.' author = 'Named Data Networking Project' # The short X.Y version. diff -Nru libchronosync-0.5.5/docs/doxygen.conf.in libchronosync-0.5.5-10-gd45f888/docs/doxygen.conf.in --- libchronosync-0.5.5/docs/doxygen.conf.in 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/docs/doxygen.conf.in 2023-11-17 18:16:31.000000000 +0000 @@ -140,7 +140,7 @@ # shortest path that makes the file name unique will be used # The default value is: YES. -FULL_PATH_NAMES = NO +FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand @@ -161,7 +161,7 @@ # specify the list of include paths that are normally passed to the compiler # using the -I flag. -STRIP_FROM_INC_PATH = +STRIP_FROM_INC_PATH = .. # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but # less readable) file names. This can be useful is your file systems doesn't @@ -437,7 +437,7 @@ # included in the documentation. # The default value is: NO. -EXTRACT_STATIC = YES +EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined # locally in source files will be included in the documentation. If set to NO, @@ -445,7 +445,7 @@ # for Java sources. # The default value is: YES. -EXTRACT_LOCAL_CLASSES = YES +EXTRACT_LOCAL_CLASSES = NO # This flag is only useful for Objective-C code. If set to YES, local methods, # which are defined in the implementation section but not in the interface are @@ -1178,7 +1178,7 @@ # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_TIMESTAMP = YES +HTML_TIMESTAMP = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the diff -Nru libchronosync-0.5.5/docs/index.rst libchronosync-0.5.5-10-gd45f888/docs/index.rst --- libchronosync-0.5.5/docs/index.rst 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/docs/index.rst 2023-11-17 18:16:31.000000000 +0000 @@ -23,4 +23,5 @@ ChronoSync is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either -version 3 of the License, or (at your option) any later version. +version 3 of the License, or (at your option) any later version. See `COPYING.md +`__ for details. diff -Nru libchronosync-0.5.5/src/interest-table.cpp libchronosync-0.5.5-10-gd45f888/src/interest-table.cpp --- libchronosync-0.5.5/src/interest-table.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/src/interest-table.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2019 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -26,7 +26,7 @@ namespace chronosync { -InterestTable::InterestTable(boost::asio::io_service& io) +InterestTable::InterestTable(boost::asio::io_context& io) : m_scheduler(io) { } diff -Nru libchronosync-0.5.5/src/interest-table.hpp libchronosync-0.5.5-10-gd45f888/src/interest-table.hpp --- libchronosync-0.5.5/src/interest-table.hpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/src/interest-table.hpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2021 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -27,12 +27,12 @@ #include "interest-container.hpp" -#include +#include namespace chronosync { /** - * @brief A table to keep unsatisfied Sync Interest + * @brief A table to keep unsatisfied Sync Interests. */ class InterestTable : noncopyable { @@ -47,7 +47,7 @@ using const_iterator = InterestContainer::const_iterator; explicit - InterestTable(boost::asio::io_service& io); + InterestTable(boost::asio::io_context& io); ~InterestTable(); diff -Nru libchronosync-0.5.5/src/logic.cpp libchronosync-0.5.5-10-gd45f888/src/logic.cpp --- libchronosync-0.5.5/src/logic.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/src/logic.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2022 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -101,11 +101,11 @@ , m_syncPrefix(syncPrefix) , m_syncReset(Name(syncPrefix).append("reset")) , m_defaultUserPrefix(defaultUserPrefix) - , m_interestTable(m_face.getIoService()) + , m_interestTable(m_face.getIoContext()) , m_isInReset(false) , m_needPeriodReset(resetTimer > time::nanoseconds::zero()) , m_onUpdate(onUpdate) - , m_scheduler(m_face.getIoService()) + , m_scheduler(m_face.getIoContext()) , m_rng(ndn::random::getRandomNumberEngine()) , m_rangeUniformRandom(100, 500) , m_reexpressionJitter(100, 500) diff -Nru libchronosync-0.5.5/tests/identity-management-fixture.cpp libchronosync-0.5.5-10-gd45f888/tests/identity-management-fixture.cpp --- libchronosync-0.5.5/tests/identity-management-fixture.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/identity-management-fixture.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2022 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -53,7 +53,7 @@ bool IdentityManagementFixture::saveIdentityCertificate(const Name& identity, const std::string& filename, bool wantAdd) { - ndn::security::v2::Certificate cert; + ndn::security::Certificate cert; try { cert = m_keyChain.getPib().getIdentity(identity).getDefaultKey().getDefaultCertificate(); } diff -Nru libchronosync-0.5.5/tests/unit-test-time-fixture.hpp libchronosync-0.5.5-10-gd45f888/tests/unit-test-time-fixture.hpp --- libchronosync-0.5.5/tests/unit-test-time-fixture.hpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/unit-test-time-fixture.hpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2022 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -22,7 +22,7 @@ #include -#include +#include namespace ndn::tests { @@ -42,14 +42,15 @@ } void - advanceClocks(const time::nanoseconds& tick, size_t nTicks = 1) + advanceClocks(time::nanoseconds tick, size_t nTicks = 1) { for (size_t i = 0; i < nTicks; ++i) { steadyClock->advance(tick); systemClock->advance(tick); - if (io.stopped()) - io.reset(); + if (io.stopped()) { + io.restart(); + } io.poll(); } } @@ -57,7 +58,7 @@ public: shared_ptr steadyClock; shared_ptr systemClock; - boost::asio::io_service io; + boost::asio::io_context io; }; } // namespace ndn::tests diff -Nru libchronosync-0.5.5/tests/unit-tests/dummy-forwarder.cpp libchronosync-0.5.5-10-gd45f888/tests/unit-tests/dummy-forwarder.cpp --- libchronosync-0.5.5/tests/unit-tests/dummy-forwarder.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/unit-tests/dummy-forwarder.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2018 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -19,12 +19,13 @@ #include "dummy-forwarder.hpp" -#include +#include +#include namespace ndn { namespace chronosync { -DummyForwarder::DummyForwarder(boost::asio::io_service& io, KeyChain& keyChain) +DummyForwarder::DummyForwarder(boost::asio::io_context& io, KeyChain& keyChain) : m_io(io) , m_keyChain(keyChain) { @@ -33,25 +34,26 @@ Face& DummyForwarder::addFace() { - auto face = std::make_shared(m_io, m_keyChain, - util::DummyClientFace::Options{true, true}); - util::DummyClientFace* self = &*face; // to prevent memory leak + auto face = std::make_shared(m_io, m_keyChain, DummyClientFace::Options{true, true}); + DummyClientFace* self = &*face; // to prevent memory leak + face->onSendInterest.connect([this, self] (const Interest& interest) { Interest i(interest); for (auto& otherFace : m_faces) { if (self == &*otherFace) { continue; } - m_io.post([=] { otherFace->receive(i); }); + boost::asio::post(m_io, [=] { otherFace->receive(i); }); } }); + face->onSendData.connect([this, self] (const Data& data) { Data d(data); for (auto& otherFace : m_faces) { if (self == &*otherFace) { continue; } - m_io.post([=] { otherFace->receive(d); }); + boost::asio::post(m_io, [=] { otherFace->receive(d); }); } }); @@ -61,7 +63,7 @@ if (self == &*otherFace) { continue; } - m_io.post([=] { otherFace->receive(n); }); + boost::asio::post(m_io, [=] { otherFace->receive(n); }); } }); diff -Nru libchronosync-0.5.5/tests/unit-tests/dummy-forwarder.hpp libchronosync-0.5.5-10-gd45f888/tests/unit-tests/dummy-forwarder.hpp --- libchronosync-0.5.5/tests/unit-tests/dummy-forwarder.hpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/unit-tests/dummy-forwarder.hpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2018 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -17,11 +17,11 @@ * ChronoSync, e.g., in COPYING.md file. If not, see . */ -#include #include +#include #include -#include #include +#include #ifndef NDN_CHRONOSYNC_UNIT_TESTS_DUMMY_FORWARDER_HPP #define NDN_CHRONOSYNC_UNIT_TESTS_DUMMY_FORWARDER_HPP @@ -38,7 +38,7 @@ class DummyForwarder { public: - DummyForwarder(boost::asio::io_service& io, KeyChain& keyChain); + DummyForwarder(boost::asio::io_context& io, KeyChain& keyChain); Face& addFace(); @@ -53,9 +53,9 @@ removeFaces(); private: - boost::asio::io_service& m_io; + boost::asio::io_context& m_io; KeyChain& m_keyChain; - std::vector> m_faces; + std::vector> m_faces; }; } // namespace chronosync diff -Nru libchronosync-0.5.5/tests/unit-tests/test-logic.cpp libchronosync-0.5.5-10-gd45f888/tests/unit-tests/test-logic.cpp --- libchronosync-0.5.5/tests/unit-tests/test-logic.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/unit-tests/test-logic.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2022 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -100,7 +100,7 @@ { Name syncPrefix("/ndn/broadcast/sync"); Name userPrefix("/user"); - ndn::util::DummyClientFace face(io, {true, true}); + ndn::DummyClientFace face(io, {true, true}); BOOST_REQUIRE_NO_THROW(Logic(face, syncPrefix, userPrefix, bind(onUpdate, _1))); } @@ -363,14 +363,14 @@ systemClock->advance(ndn::time::hours(1)); BOOST_CHECK_EQUAL(io.poll(), 0); // no delayed handlers are expected - BOOST_CHECK_EQUAL(io.stopped(), true); // io_service expected to be stopped + BOOST_CHECK_EQUAL(io.stopped(), true); // io_context expected to be stopped } BOOST_FIXTURE_TEST_CASE(TrimState, ndn::tests::IdentityManagementTimeFixture) { Name syncPrefix("/ndn/broadcast/sync"); Name userPrefix("/user"); - ndn::util::DummyClientFace face; + ndn::DummyClientFace face; Logic logic(face, syncPrefix, userPrefix, bind(onUpdate, _1)); State state; @@ -397,7 +397,7 @@ addIdentity("/bla"); Name syncPrefix("/ndn/broadcast/sync"); Name userPrefix("/user"); - ndn::util::DummyClientFace face; + ndn::DummyClientFace face; Logic logic(face, syncPrefix, userPrefix, bind(onUpdate, _1)); State state; diff -Nru libchronosync-0.5.5/tests/unit-tests/test-multiple-user.cpp libchronosync-0.5.5-10-gd45f888/tests/unit-tests/test-multiple-user.cpp --- libchronosync-0.5.5/tests/unit-tests/test-multiple-user.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/unit-tests/test-multiple-user.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2022 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -72,7 +72,7 @@ Name syncPrefix; Name userPrefix[3]; - boost::asio::io_service io; + boost::asio::io_context io; shared_ptr face; ndn::Scheduler scheduler; shared_ptr handler; diff -Nru libchronosync-0.5.5/tests/unit-tests/test-socket.cpp libchronosync-0.5.5-10-gd45f888/tests/unit-tests/test-socket.cpp --- libchronosync-0.5.5/tests/unit-tests/test-socket.cpp 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/unit-tests/test-socket.cpp 2023-11-17 18:16:31.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2012-2022 University of California, Los Angeles + * Copyright (c) 2012-2023 University of California, Los Angeles * * This file is part of ChronoSync, synchronization library for distributed realtime * applications for NDN. @@ -28,7 +28,6 @@ namespace test { using std::string; -using ndn::util::DummyClientFace; /** * @brief Emulate an app that use the Socket class @@ -41,7 +40,7 @@ public: SocketTestApp(const Name& syncPrefix, const Name& userPrefix, - DummyClientFace& face, + ndn::DummyClientFace& face, bool isNum) : sum(0) , socket(syncPrefix, @@ -155,9 +154,9 @@ userPrefix[1] = Name("/user1"); userPrefix[2] = Name("/user2"); - faces[0].reset(new DummyClientFace(io, {true, true})); - faces[1].reset(new DummyClientFace(io, {true, true})); - faces[2].reset(new DummyClientFace(io, {true, true})); + faces[0].reset(new ndn::DummyClientFace(io, {true, true})); + faces[1].reset(new ndn::DummyClientFace(io, {true, true})); + faces[2].reset(new ndn::DummyClientFace(io, {true, true})); for (int i = 0; i < 3; i++) { readInterestOffset[i] = 0; @@ -239,7 +238,7 @@ Name userPrefix[3]; Name sessionName[3]; - std::unique_ptr faces[3]; + std::unique_ptr faces[3]; shared_ptr app[3]; size_t readInterestOffset[3]; diff -Nru libchronosync-0.5.5/tests/wscript libchronosync-0.5.5-10-gd45f888/tests/wscript --- libchronosync-0.5.5/tests/wscript 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/tests/wscript 2023-11-17 18:16:31.000000000 +0000 @@ -3,9 +3,10 @@ top = '..' def build(bld): - bld.program(target='../unit-tests', - name='unit-tests', - source=bld.path.ant_glob('**/*.cpp'), - use='ChronoSync', - includes='..', - install_path=None) + bld.program( + target=f'{top}/unit-tests', + name='unit-tests', + source=bld.path.ant_glob('**/*.cpp'), + use='BOOST_TESTS ChronoSync', + includes=top, + install_path=None) diff -Nru libchronosync-0.5.5/waf libchronosync-0.5.5-10-gd45f888/waf --- libchronosync-0.5.5/waf 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/waf 2023-11-17 18:16:31.000000000 +0000 @@ -32,13 +32,13 @@ import os, sys, inspect -VERSION="2.0.24" -REVISION="c88b74123ce8b9d1a27999f7cf96dff0" -GIT="c140c3f538c4a21f3d88bab9403b42c696759dcb" +VERSION="2.0.26" +REVISION="bbbe549153f90c006795714355b81761" +GIT="ad7b733fc60852f77eff200b79e8b6f9562494d2" INSTALL='' -C1='#/' +C1='#-' C2='#*' -C3='#(' +C3='#%' cwd = os.getcwd() join = os.path.join @@ -168,6 +168,6 @@ Scripting.waf_entry_point(cwd, VERSION, wafdir) #==> -#BZh91AY&SY#()#(Xe((00b}#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(#(7nF#*#(R$ҚJHWլe!-fgOy0v4l`=!FRHs;_hc&6_|ospܛ#(=#(CA;#(uN#(O#(ճ#(Xh֪ր#(P#(#(%AI#(()"C#(QB(J$C@4PvMU@QOV75F<^d{7VGMbRuw[ޔxov$>Nzxvk-wޞv|{ޯzۺH]٪nbTr ( P{;c/xwkC4ʩ"RlZ#( #(Яo@ U:;=z0ksuh#()st}v{^pzQYw>^m {58G@%s_v9]:o=oekr[ujnhs\,#*p c3_'\,w>& QGko{|5Pe޷rg}<];{V][)זA#*'ݎy#({y{v;C#/(#/(QH 5v#/-k48{69=m:™{rQ-]*r\z#(#(yvp#(9y.C_oh^qf{{W;{qB#(uB {<9W4 +ikO{ZQk7=}|vۤbOy<}ݷ].|^k(c{1#(=;z%#/ڑ^|&ݘO{nuQƶ *<c0U膃[Y ϵ}k@#(t(#*#(^puqJ猺FwZ{y}@>\296f{#(r[cۛ#(#(#(@*v#(F\{=#/ؕѥm[U#(4#*,:V`$W4p||Cĺw{pĈmN2V3tToY8bXJI"F)PT`"ot#*#7J#*A2<_0?=C%cDht\דGX_Ob"(#<}Y}_/B|E5q#/'ۅi">*Gy'$CL&B Ejf;&P92fw^lsES+t^;llOuoE5uj}r)r-rZK{.(vXT5rt$d6֠[aP+:BZ]v7(\%-kXI4GKV)DXhhϳޓf+#/zU̓i_3/~\A=_Xb@Gl?PdЧu%]Z*3>(qK!15#*_#xrH̦ԊbYk~0f'NT{g:d'&<^˃q3H;"迹HefEzH,BB{ #,'sIN&TΨaVOUJ{3vϊd_t[A'5*2,vٟj`cKm#*(us?CkXb{ҟu(1T0CӗDp`YEQ:k3hZ*M玮{/e7ʜ^ꅂ(7&xڹ; h1F+E#60}鬄cR|ە7NmȾ@:OlJJ aSEl^o^"Uw,Z+qQBowzJőH,3cF>E+AK6²V={b?aPF19{öPAf EFO=Lԗ ֙esFy˦9["},!|t~j{>=E&[_#*[9.)tU/3 XEFJQO ;I[yHUY<)T`7s^#/"*YQX{1b#SK=ktϾgʔOJl&'{Rq=0UCq Bm1RaT8&btY|1[dնե&E q#pcԺl Qd#m b̩˞NuР{%Ă,*;RI국w%p Q4:mak.ʝP9Ndf.0>KI5@|bk;|KqvX~Hql-\~8W]24㾚w_\^/WaXCaDI+}s:]rמkG5S&2]§q|*DBs؎Ȧa6~.I}{ܚi:tFWCC'i֞痬mϏ=uC(-1?^m&Ԡ:)wD1e1xiK$'!rZ\2#L:Mm#oNj!44_ezaJה+g }\ˀt$JCZ<)$'bbSϩu--e?_dy\&I-ˁs+æo 3>=k3_THtqcT @^Ǚ*LW&!C:k:nUCBD;d}>DR_%Cz]4T C%omm}4;3ai= q|(Q[׮|[֜3hմU!9g2;IbLbdT&#/"ۛVGgէRn'^7岓uq-~z.intvaDb{8O6S-/9L 5M5.UMɔ ?Nƪ ItYqݙ<ٞ~G[8fݰ"O;b3->c1PG7#*w7ⴃ $$e9B.?*"9pX"§OvމGJWotû?B͹$2ټܪ֚Fy=m`p;~i2 i>d|gC+ۅ&n(P1H;&B=PB6!\W9 &9gQEER8}9}:_T_xp}/]zcUf}"6Cu!r=n)Ra2g*Db 8=V,N[Lr_3#/u9s}r~)|B优佑^pBIiK#XFgcOUn[[(/c#M~;7|:F~c%KGm@cB9}aJ"B,2PX@m)e0 KeOt5vuU7)xssBLRXxcTpxxt] xgJSq Ha,0$dG׏^,n.LQW0EZ|/ƧCcl.Lb ^o=U1E{4Oª*`C?je8T!_É% ={:Q׺*]Ԙğ'=ݭ:<~Al t&C-)ZApRHVf;@w'{^{RrttDG:ܖ%0.!;(#*.V#*I nKѩp(W3˧uO"؞۾'סX:#**Vix`6LI<2Y G 3Eu Md#O52d!~-5+O*$7򉇗̾d#*]%b?{K[@!~m|HŃRmTv=?6|Ӷ4=Q?_OE^7t54kZE,/,[ Yp@h Q^@yi I#J9a E3gF9P(&#/F)#(踐 u. ׇv:T|Se%BmeO;6[#*#dT'%j2PDbbMl.EX╛stY}Һ::D$Tx6Dd/V֕:-S5O6<89xl sFĺ>V \'(~[}yO=+cn>-oDOόcG5+ޙ+d'FX[F|D/hH咊ZJ,Qj"-E.::/>}X 1*PCy3a!qP>C'TKDsJW%:p)Wp#/}[#/6a#(#('V>7-pKlO~KrB'%ۛb'ϥko=ױRsL♄^ɫ |in-b+{#eJce;qxVTB8/ZSb#*Gl&@l8wa:]ynr0sl+'`G"9S:{b$Se߼P"pc#/7{`,Vr)rHDjdP&He;bb" 8|]͝,|Qu11QPjʘ,X7cB}H$1wjCpCgEIK,JY 5s kS߻X]ӻ/pJFiB'pVaC!@k"ɑu #/x#u~v#(&6zww =^ GnS1^:?)I%o*9G(䟥:5鶉u/Q6Q#*ʽު_)ukwM##(q!C?x<#(1cC#*!!IջN5 ;4TZ+k@[Qo{k#?o6uuQ,Cdܟ[D)B0#(PFz5~~IuFߕP=ޘx*A ^+r]#osv)3C!tS66GtܤQӌP_sT71f u#(GM)Z``\"!%AZw)>B|At$iwPk mK/2eOsrBd}c0t_[fs{9մtE]5Hs9i>lv~64j]:;n>;?[nvGNb@ 2܇E3r\pw_X*`IeJܟƆ6tō?-Z)o7]Rd1"#/;lɆfZlZ^\#9ee?N -ƥY*ICw]#N"Ꮋvo^'~Gٸ>yv?.ZC=O୩~hŨ1 'O2jOox; ^6kp/mY&ϬU1k>y].?ŗѻYv&'TA1ٜؔt퀱ZJ?=?#*ֽ2G$>n} $5%m|٦(7qTX$g@!U wz;]p<$T:mZcTMa=_Mu4A9Ҥ4UCː,8)5 $׻?sP,8l`b[߬u3_ILe`tsG~d-~ầïG#*2ߣ ؙ\yB j6ght]GvQH@AA=k'1ޠV:ۅm}#*5 *0p|AvB0;VkB(; _u:B+c<HfJB 32zsª",6@zQNUH ڭ$ԥ*r-,PG;. sw%Zy3QR &7Nq&aNC|)F>#/Dys:]"P(A#MQAB4{NvldB&QZ̓ԜUsA1*iMEI*l[.h-#(BQCF7<ΨhLJnCc!R$RHtea^#/aHl+2XrP3vAOGǮJJBGܨ.>Q(HC:|%ꗗKf:7UX,}YEy{^IVx\ XC\?e,T&oXK ע=^=ֳl!?}pg֛COO㥒6S?7 `}EE#(~v`ɔMD6",U#G7Hۖ'~ǿ{N"oWRmp)1XEc,)Pf2iQ8l4"TA#*#(R#(|_B5uNQO۝̟.5MlÅmP\zJ);I0FJnίh>v#*l , ņ+s=E ݩxC)K.$B!6PCӚ'_(zH&Q:>wùLr4A #/D4E,dδР${CL&֩εv_9KNKle*a2ywg߬UqO CoՁ@V^cl:,>5X$sOqoҷ 3AgX}_}DӡG524DFHUgG{ #/!ZPj6IWL#(#(ppgI%#*Ĕst5ZJXBv;IO/nJ ݀ B$">cK`j[>X=~Y_0)0zT{FV^TN?_R,"X$Cky8YL3m7h[ 8FT#*YQ+I2H>=~; Ad1 #/ ,'mG8U")@cYjtbrbY5qZ8`9aeM8Z$RA sN(d#,\E&!>PrmC#/6^tmkTk85]!Kn.,4>yEc XG$1=*v5Ts^Ou&Lv$ & NlȻq!X<E ^7vS'Ų-X&-b}3s.V"uRoXt[+m^G sm|-g Ի!֡P7FXpttujB|_#/s"`&A/tej#/TWǷX> 'n 7`םs(]Xˀr[$.}PT=]#/ Lk+ρϲ[8_rx e?ty~}ըDl>I|c ,7=u]:z} {VAE$y˰oz4IK=@L%M#*WQ*eR,1b2O>|hrDV̦7vxg7&P席fP_h4)&6cRj?wi#(MZв%$.n}0DZÐ#=G!r[z"޻b6#/-SAͩ,$lbQ~WMj*D`J)Pm$wQ-~U~/Bi+b|Uyd#/U R=3#(!GR,90U%#/A>E'OkW(ChJvN{?U0Ot_?lZ1[Y oH#/ Ml_o^6[ԫoI#b@ --F@ϻGu}ϝƸ#"JLKt[ض3#/wPl"??j1OK[gV9\Հo@qs{K+̸HrJE+v-FK|X[Ovy0;aDPHUC_\5}_ڏŒaK*;<\+q~n U%,I :KA4h)?u/BX*ZVI'ZPqA#|P=|c9k=?G:̙S=-4VcnQ4ǜ?]> >R5||"Fӟ8^0^x~9*E,{.A`u]7 Yϕr2]=B%vtnKб{Ys.ӥi6F~Yݜ#*-] 8;od7W|FxJtƞ~$?c`uMڝlLd 89G`Em+`3c6n hٰ@Ҥz/W؃ĸ2&O.tIf Jü+ (TB%+Fq`Ocd/%MBΔ&STTzUSEf#*N#/Njz= ʇ@C`uH#*!JC"~Ah ,*$ib?"Y=NΩ濫CHQi?Z 5KPj"ZùI\@ ]Fca#.8m<뻟G}Q[y⪃~hؙMWb>9-`]F,ƒEܹk޶EOw߰o˛}L#*|O__6VIχO󝱌5Un}6#u,z9[5v˺2;'DG/G.ݕHۂ(}Jy4xy510>&; WK*fz?sޣO+3ǖ;;mpv9ۨcyվV^{=44 g K86 4=' USVotv["9SN6p]Y:2_ᯎ~(C?)K»wÿ.߄,asp/vvm3ߡC\B<]N2_j>M|]>x;6pIS;^c3kc瞧;~Kv gV͖ͿesRnNo{w:,pm#Ϸka{?P:ǟ/~!Bu6Ϯfyw`?n #/_C>KG@6aNtp95n QTlx9`횻MæG_GJ|c(<%A@!6p?o~;LJ#/>'@!Wӎ~.wRqazv}]]Xn.5s?O}bL';i(AOdE pxBQbo|z:#[#($,*)h9K#(#/1T'3"W@R^ -t`IBfHIڒ~;Akwŏ8,ȿ4%c:)WgfXkחFiG'\9CnRDv0`5>ԈrilhsEWzv\=s3$!KCp !&N4w?׿ah<-B) Y*֔Epϥ]pǛj?ZuG+eBYQV`BA 'm|A]K7Ox՞s!-s-.25 o7*4K4N/W&Fx#/<|z[m:|!$!%'q(׹U#z"3kwy_Mե{a xH ,~M7#*ÏH{4;F!cFWzNWQ3#*7z*I+͈av*?dS!/N%<@޾IG0y_dߧD2~c[O2eʹKeHVT0_T]ѳ9'\8}9~? "1lx[~{4eVMqeo950 #/0}(HAáYup{g⿧WN_yDA_pIE6*..뎿S+!g#*yçdIּ{zsZ\yz7 Mj[ ̄_g_Wq&r&K &  B(} 8 ^*ШSc.##*{36,fShۈ4& Ҟ`:Rbl3+s̥Q&5e5XC#(6#/2"…IpILW))X02pҴ}e9MNNa\EBTJ.f.mi.%)E!#/D s|fONDG%jIbwbzd{88ᙍi%&g'hqJ{轝mm&AF׬BR%pݳ#iB,xd*<#*hWKDE/f>dپǝzAI$JCCIEr3KWTdQ w3AX@g~ӸqUNׯz#:a!W$Vv+=yh \\1A=aɰQJ\ Bx{mSdΌc}@i4)Y)P^_S]y$$%#/ק#*0둀wn|#`_\jbHKfd(rدF+0%l:`Rc[] BYQYCFF?_k}®&?F$Z $#{✑yJat&u$ՓfqxaVsI؛s ehLʅqf9bSQ*;jJ<C#*700  d0yHݰzí뵡3ɓX,m sxT9w%7".=Tx9"JS$8ȌLA(28zU+ϧL}Dt?vݎtzmG6{>#/W6N) ;ts9@5l*e2$6id24cP:ճ9 Zgygm &&ۜrBZr!NG?F^Yd/ КI_NQC{kg K*ey]|$vaI M]̎OvUV>}>]ʍɪqJ\"C!5oP?~_tnP?>8פ]|؏_ʽ`CT<2+pwxdgY*89o`'0X(%(U R5󆖅+'7 eetJfWrwEca [Ja,5rsө, SeAvȄ@@9IC-rq{zp:ro08ey2h\iY4Iӄ<ي{^XsmW FBz0 NI:'ȉz3KX_\`p81L#*ʛj%YzK:#fP(h]j tA/ 3#*q#/>qq?(f{52X0j;:'>*SV4K/ 9~ٌ!&>ɺ>T"x180(15HK;6F۶ϱ)`3_n>/#/CY2;D"SB:B;p8նa Dzʳ[hYCwd;]6ϔF3F|6k̓DHiɤ͢!Ȱ,PSN[0;b/֡#* f)PbÓ;2lf PmvRa'oOsI>EtpMqؚ܁!He0V D?k#*o,T vI<4GDbknpPŹp@2W0o1#/# 4o|f#*`HH'u|YL=3vtkw.Z_}xj]O~O>|w;-}UoUt{8o"wW;t ߑm;CpQo[&ݵuD}J#*n47BQ͑lRqۍzvm]]ydw#/6#/9^[;QK.2uamk}\tcڹjhD7M]g2r3eL5Ttى3NYshTr G$dB\kEti1c94y&֤ȃ#*e{K]X󭙴BN&pXa Cv9cMI9%%#/^!ʘ j'GY/OnNX7Zau8!U6#*|%ȓȌlI'V>Y?C#/kni#/b-TM^"R".f哽u ,ʒkܣ tMA,"eM]4N4:!e`ms. ґE"}*# $+?4$ly̙dd^PP݊Mo+)UQ V942M,Su~:.Ki!>CЉgnXjG&}biRYQFAM,s Box7^|Y!#*gPc B._}Ҥy$x^3a˚cj)rm"8^fvޞݍ Hn;%HtΚ؞~ǥ_iM^p:S7E91ܧO2$D\W\6i&k|$Sݡ:@ݦ2Ҝ!5%M`3 2b9NC(#/TE#/mx>!e@`?CFl8ᆤK2`s9,Z|J;|Kwvr{#bO;iHaAfC$yCR7P3e|4ϙ;|u:jxޢ@t#(Y=?vDy-+nWWB׀g,΃NO֒^$bo#(r@HQH Q!A06b] b!Kf?>o s]e"2̶NP0eN�NԻ,/08'{b4`#(|PTP^ v=iŦU=J ˶#* ,X:+!EY ˠϬ9;OO9y7xǙ8f>ZA:9/K(.D|2Eɴ-nI`vM=@!JUC}$~N®r=Ø"[FtqdU>SP76E)*ݒ˂2P V`1l< EjX+LKqY{8_SgwP1q0oYL [摟#/ݮIHB4,tJzqU]nkt0X=TV*y:vB_aG39#/"q(8oO#*Գ^E]IݹU%[2( ٌn:m!A0)MM-er${#Nk)'vańm꘎á&`qF}'ʺrnݩnr~^H݊m=L_1PSO.5)ϝErlDk$Vy%4*gAOCD'iɛ˯EKlNRJ8/fd7Ц9Ag?mb|}ob;#!"pm<(ndÜ46bG6‚HcƒfseXtazm>X L:- @~p^Dqӗ]9B(K'[8aS9lFoazb3!m < LR! $z4"TĽ@<-69#*w1`(6BsGؗN9 A} #*"+D*̎j8@@N;GBjw'ni;ltHSwFAQ.y#/+г?K{/gq1$7jScSWLkGtz9wۜ9J_zIۚ͟ 8<*h9[܎ DQD oA0ʋӭ]K#x-&=;f^v9߅&oۘŹͰ'pg#/0T,=:Tzdd,mtӷ٤y#IJ(֚$3"!jY,#(W<)H戧)|9Pڌf| gn'jVذvy7C.n]ȧ/*(#ɧy$!G08K *q)J?H$B2^fm2&Odxr6['3껶y}H|%x;N+wD#+mͭ9yboJt?QVܘ2(u)pC{y0(f2J퓷ja עs!Q ʝP")9Etvwq&ֽ[<:jK<@B}#( {y='݌Vi@::T=E0L˂\56Hߗ~50<ʍOV}MɁtDU>9[PoQ#nO7ahJܝ\vZC#/%s;MHVRta=m7ذ+5_2PEijoUb:'20kѮMLi>湢 d~N2;WT oԕϞ߆{De[rTcAwOXT*MX)l 8˜҅Yq\j|sUfj0N)+Cg?4_S@xVKeq  pQY4E;[s䗡ۆ]S.jKr8*|7Έud]6^smw snYiF3Mm=5f|1b#*4`"wn{n)k5p8^RkM%\=Z#/:HcjG#/$mu8 >K%!k'0kg+ 5[ٲ!i\piR-A b g=3KiWƕ}ZKQdvivW#/1Yjȗ|Cq+pa!"2%$aoί\b{&S|/TBr-]#*S~43 Sjn{#wm4/}lrу. #*ӓcZ#*jZt+d$Ō'[_s=TtXZ`!` k3lɉt/Kjې#/^c mP0W=łNp\'kGSM` t)`ĂJ~ =O‹dq8=ش>-$ +#Q-!%gX7h1 UE}H#kO7hO8ÏӕERv[Txd*W6XSm‘$H/!FS 2 I`h]k^.^릭P/Hss?'g[d͓XB.=3ՎT.}Ȇi9{1~{pڦ=96z8mIXU#*cLRӞJ#haG5z`"_:-HŬ4\FDH) E;>Iv"\9=k==7Mt0äBiBެ~yfKdW$z}6_0Z^iJtQa[›9x%N$/dh'6t##*eMP\.wZ+i{^wso`RbENF-W&0ܦkz@}Op1#/ZԵ%l\6ic-/y|yLK즫YH||)c#/LxN%W9\^!"BFXlt(Wcoh.y1ӓi\7lQ8UaHAɰ)54#I󑦊8TӠz=qo\-_і9|W*r(07NtwS~E͹']h.6^#(U)AMU7E^qFTr`2eM'Ed({hH_vu?5AVIW>LlhR/%atGVk#(%u#/p^=.K$pŞ"1琦Y\%*m% AТS`掫ZfX-@D{aWv(0_gl'[b 7`ݡt<&6;.퉼{=vn󮃁%tNZS3fYRD&_}G"xTL`gX0Qk)-T4ZvrE=|̓ӈrzm$$LK猎leM55ZdȥWp4ܣy/z#@ڦu*#Y$XG-̔TOJ l |lZv<u$b[ݾ9mCe1 !~0ck|dT#/f=)h󣔞_ŞGT\&U쫜{۵ъ{Kz{Ensv4֎xY#/&x|䧆r=1ĖܟgH5ƭϚ9-lhAbTrb7 f6Ӑ|YE<E!EK/3Y ^3)#*u[xj.׃/ ,,yX#/f8|OVvJl9ꃡ".|Ϝq17h1]=/ \m_'!V :)o &_Lres4ͧ#*r{]S-PH PG;jdv9pf"Zn#/sԤo#/0yǑzۈ!ΊL!?GFᎨ6Of#sR F-Q:ވAËu.KA|a#,Ffc9‹Gzr)zLt{=wNcFya~K1Yt\:%@Nv4H=2n#**@e3Zzm`Pi-;<7kjC;1މ#OI-U#($ԍ'ސ@r*ҦO l^%@d??bjO!k.`z[ƼpAx_>xe_zھ;+7>Q7>,Zocn 2=a:jX-L[|#*h)?\ s%{eaFĤmP,s'%!D: rf⿣۰\p2Կ&:E$dV,2HHze#*e7o5*DFU_1❫8r~fGf̓쒹R@_RpT@}hQ1hD a"Upx~@>W',[PA Q%fEm=F,2L[{ng>(69[D#/3h[$׹D3!#()oiW=)hC޺fף붰#*7#(pZLF#ttԌڒzRkHs.UD|1o"Gޑf$=Bj}HC㬘Db(5.ݬmL Wcs Q1!--:#(x#*ï٧gU,#\9%;,Gh`֊56BtsTDb C\oQ۰b~C؞3gA1~sʹƛ8Dly(_ =k2 CK-kd79S>vގIon3ag炒`ԋP#/% %AWzތZRI1&~tF&҆Kc;5p%' Y˼n HN΀{#/e i$㏔ZҊwHz==(B!|>>[+>-ҏ',ˢvgr}Ht9)OJm<V@uB@%T0.]{E=M.LqoC[gp#*yLFHvو]5.0ft.wP0Kjn"ا?XNR'LA0b`γPd+ջ^ݕFPȄ"#/r2!BU 5#/#*h>/~ P bMWtILJ1=gPOm!P*.7*PgC|u;BU@$Ql7m3ndqZ  #*A%&N6?Ā}L߶R,- : D C(]A6˯6^HH [n,-M;?; IS8TrO>_zoZQ=/Ю/ c<`IßPxJe6V㷤@iCT%.T1rLyeTf p2y!c7ó )zvko(rm TqiUld2) $B%LlRnBp4c4IHQxB+jN|t_ɝ,c(Cp.x jyP{礁pxYf5wNⲂU/.GfP|%Pry7\ O '!%DC#*hB3g#*/4(83#*-Pj #/ E#/[wߴ}?.e:1}مȒZk1EP^i{[aK,M%%$%ȮX^)Js 'qCBB#/\E&e.ګoXZr.! Q\{v@Aq7E]X{lmc#*[9'rXԫyɷ6^7DӼ.~p&G7#(X%3#/,4I?r p`u8K<װ('E;Z w`0taKTǁH")|\{=bTuv~'}R\JJ fēXoR~qB'Qr͏+x"Ϝ;U̧T~w_QH틭1"zm7I3xBAvl!J81PM.Cq]ysF{R=)μ}fwiA &A7o$:TyoƚU(ul;}Cn@띂|S60O#oF3Bnۗ@[Y$#&#(ov`A+xR 6|/ >FT93jIȀ2+k16܃hFe쳗g<.o43/;e٘F;~*=!ϟC~eJ1Ԉ0Ͼ>|Mӂ5ַp lO|#*Цe*В?S\a'"AZ,*HPʑZRnj+#/ԒD?w~4jG0^II$#! ^c>(L*?! fGޗ ?# WWЯC#?3~lxҖ"}#/_#(sґnH.Xy׮o)B}{Y/ɪ5Nlu<3r^V'¼߇L~Rna#35{l9C"H ΐO9nugi~4&'ߪz%P#@q<7#(|K|]`&$iP(-v -(gCCǾ.G8G_9'+s*#/^ }:O k@I=,a>{?I~>y6!S#/-0v8?vB_?՗?>OG?f#??gOɯϗ?KTgbK#/KYR[IүPE/Yqa-Nf*DCAt#(' 2bi;:8ᲇMRD/`e7C#(@"pږ?m4)IfTL#/Ge%DbC@TQ㥋C(؆w6sYYAıDS?s4~g;h#(:XLoW5sޑ`w"DPZOt.[3quwϏbt$1TNf#keʇm!yBW p`9i*HoNد;yr#*aȡ(lh@ #/N#/kcuࣄ羬Rgռ88Sf+ 9X*F8@σ"y<$!'Wr=iIcOb;?#/c720V;fT@fd9C'D#*p#*URXoe[udVVDVD4R[#/T#/&)6bP1gLGDM@\o!R84q}d9'!gb̟3\,"F dd#*iJ7JRQ\-!j45>$$7+ "I )", H/;1 >l{6PĎp!x6#4f*JX銨5 AP2Lli^؏x#6>9q!(T$,(#/F[޾ֽ|błB$*i`N6_:Zk>>*1j#V'|$"K4ZBZo<#*xߟE/l#\h$AL پeӮ5Gt#*BIgsb%1(*BL#(?󏗣fC@m:$26;7R<#(`r[ypT-aPa#/;Q֬H] REdX L;uİ z/etaRk&o*Hٛ 3?7>J:G_lo|! # $ˆ>҂!BhB#* ]TPv/_槰*dJdž{=YU#*-юQ;eQO6u(E(#'#/%IDwD}vV{~qM`;Q];_O7 s#fa, ;Ηm0T&S+zG#*lsf&PW8M09q7M]#('"&1%E1!J̖ Mӫ'=)+*(Zyj\ܮ _,&uCo>sm䎺ggqQnG.D:= q}Ab9J~_O{O a1$5˛"_?@kB7MSIhzfaۤafy woo>ܞ/;;buӻ {aZrFr^zI7֔#/[ EXRH u5׌\Z:uY岏|w#*Q:um탖/}|'_^CO%oS0r9|&Xk.8Q$5S17h̓BN 0lF!r 7W>Nֺ'4Uy'Ǣ- ;w6hB #Ar{.O"tGKE[Q ׎Aa$o9[pNd\X]?G8m}˙#(D&;9֊F a9<'>zPxïжMհ0˕Y/Ójs $ tZzo()B/ZPLD CD K&Bc$;ȥBwH#/th~^-k8ŧ ^NW9)Ytf.d F2 >٥ۗ#(*2:̸OSO2!1CDw28{0yD;J4YvIJ#Ȉm!-bZ;E]jeEٶM&L_Jν!"h`EGs!!RnlY2HZzdwX%bj{hߜ$~/=7@$/'#(6 -tM-tIr#/3_.T`CɵY>#*1߶IQiH?Pɉ*iKXB0XtzxHR=q Gz& j(6$J2>8vj%ui#(1.|s#(NvXm΂`>V%q%IZB'^K;/21|lO_]O0clz)qE#(\i(⧜~ M6u '#/?lôOgQ0̤&ߎ%k4A YЏ.387@I ?tĬ(?#*T !$%IEiG$y=} D&&>,*#*#*VL+ӳУל@7r'(1 4N Ep"o_ngQ%dsc9Ʋޭ+:RUnյeke^:H];Eb@WAAOt& RiT#(_6=d#(1~{g)xt߉/3b#(,TB!~ÔTgl6BG3T7=_Nʓ:(y6/a`QGhI.K!-JI<}wc3MsXO:}#/Mw]E1Bj2U,X^:*g/uD|Cq|MF[jzoaj vaڃ2D:U#}#(#*?rj8lۨف0تU#*f>STwLR;쁤1^ HOeyYffn67հ#*3}gD]M'#ݧ??_0**a> Fڱ:|9IҠ݁j?G={6lOG6țeGSت7C` &˙{\0C}&zya`S1KXLnx×7VH7'0_Ns^T#(_໎|+$ #/!Z#/=U dI,i/ǵUv*BPXFvl8ݣ;7jsAj $Z b,_a#(P#(;֢߷c+=ޠ w>B>gԀ{?u#(|/ϭsܘ5(Ǡ`g=RÈk/c4ׂ"nbRmebV^jjS;;fʟU?߬fL41]-ֈIl.IHz:+Y&eZGp.Ec}+IC9}8+n]n$dE['}tGs )#/JS(VhUk`*?5_z:ies>pNc& !U;vSڔ`CnlTfPtG(+}|v6605Wŏ^H#*[X+~;Uʁk n>A>@AJXلD{luQD#/)25ܯ$V_+&"jg{# pqy2ge^H*-7Y+ n+p /.tCAc^gM:\YHsߘ̻X ٳ.C:)]]¯m8g.?i)\:ΌǖOepg +99zEz91;!_K8=q޳:1d57&So-Hr)<7k ! R솢.dž=)$L6.ySץ3\YL?DW:nS{]Bՠ/8kU,sVm5OxG6s&ɱ|)lt#*;N>xn/'$l#/j.ns/ tsZ<1tw8mU:n^DEd0O#ߵpϑr)^7b]IzYK9G|h+m~Vn?&~մJ~ȏ/Hvxd~IC@$6a3*U3$K;}bq|j't>d='촘7+pǟ}ޠf2ʼn!̌  m\D8.WSY@4X"%v{.6t)WGSQ7*#\g|X.!Ԅ#\ e_sCsZ}{oA7ÿQ5Djf?yg1jg. u|#*kO??Ȯ}\4dQK.e g'#*ciQsA&p0P\p(-#E?rP 5Y5#*|4/s_ ]A]B43`j'E?o)&%sh#*; +H{.dϽ:d1'C4Mb Tt^En(e(%c*F\p88NX8]DyTS#*YvpNK #(--8UX).@+?Bf-#/dBq#(g^I>TxYρ:)+?R?I~oKǺ!"g-"$'g!݌ux}^zc׮#*CAQpQx#( _ 5+S>v.(OM;WƙPDq^?_$ ݯNJ{9;DT`Hw@볗N' !i:?9A%5#/ jnd~M=]6%:qG'sk#3I\x/4PH Dү =@vio#(O7?[wyr="Gt{ϻRH1 tQsўQ۞(gΞƟ+ #(Q8V=^_j(ە!s#P$#/#(1DO}YG9 3#* ~#(YؓaFf#*/y?JPlo=Y"n|XJ{$FCS*1"..װ:8oe3Ľ A3vF%r0&5#(~jT:C~GJX7b~x*8jTjP]C9PgB#(f;E$ATYi0AUq1w! ,aٓ#/eA'5ނ7 ge#(~z)Aa`Aָ_!}$yf-73 P!TBY0cƩ]69e63sD5K'Ӑ#(匜MPP:1㇄0?J A\3s\u<gcE"rue*o2A xet_pp$~E Hc*?ח\ۨ Z6l#/WO9luhrm?O{ݾ}oY#( ":M_8%%zc*p/=:wۘWGg-ӫ!OZvKyxt_ĸ[…h:>cS=SwNqՇzv~6wgGi#Ze'_R¥1Cg:myby@whXBpK9:P6;{ٍ2ojxXE- ">/ӧ+L mKTA撇=Qb4f!{N}cYhb N@K2\ӹ7uPqߩ~f6wpķ͑m8hhNfCc #*h#*tD0wP.#( }[[.rvŬ6ܶd 5-{EE=G#m#9r_.gr#z0Q,3\[ME5}*>wJ~A[_Ζ d+OxgJ7?gsK#*njP8@5{kӣXۘ kcmkbq91o9˫%$vǪ&_ın-K~r~6`&O}oDo3r" ;b0z߂.hth BmOrv@0(㍉KI¶[R9(׋PI⫪&Eu/Ԍ#]z@0"ChYAlDX,;^>/*/oĜ#/Ej#*pC7ÀxR#*r!Ç+߀b{@~ÉŲ̋{"'wl;Ͽ-ZOV9fN#(B1۹yfjѧ2wwo_7/|3|vb2 nt-#*[ez#/ ?hЁ8aՃIZGӟ`UUbT?_%}>/pkU:JTSCؾ#(g,-w}&@#((O ` o?0CjvA§R(ͩ_<:䍒#(nF"#*#Alc?Yo =v74.̰fۦ@N@vFϴ*h!Kw#.Bw3-DDHsFU(k5-UGeuTz #*/XtFg|Wf+Q_ER½y:D,l/r|QC X\P5HA9[s$yՊ WQk:,@Y?ƫWg_-:e##0<2W/DqKP#()Xey{/O,YS^/L>wm[9q Pb3ib p͇h[] <f P`ƞ܆.΍sv-YR8~ 57zjζ D{#*:I 3T0zI)?RF'ȁ'gץ5\/#(~=֝g@q۰b}dVmQևOiy6c$ t612$ -f,ZR,=>2"s8#Wbz;/PCibJ @j#*A*}5zgI>/rvP`mg07i]B.Q@Ba`W@#(ְp$荨xeh0D;ďhZ{0IpwCDܸsl;H_-2*cI#/X̕(`:J<[(E B D#(Њ >owRR|Lۅ5]9χo ##*uf+OFXfkB,=^x'M߷#_>AMD"1q%9gD>'$'qg[p_)}4* *D `'CM"yN_#*t-ʿ:`2 {-)w ;Zka-iH6pgbݒK!UU;I#/lJv.(׆؏պccL:0 nGAk=, ,])>xr~yij1l$l yf}C8$*F.%7OOv֐yl]^(6'#/Qo* , şGG }4{qil)#**9ܡ7`:p`eV}9M狽5DPHSsys|oN\ìPi#(A;&g `~H0b t1PC!AOϰASa>*\(t!Yr_Z`P \: TG#(#*ie$B [͹~rp1${gOL AGMhL551-gNҽC@$JC,N>}vph6CZ/hܐ잱*B` f$GdCC.[#(؅0*I?ɁZ%BXjVwlfDYEr۔ٻ\:ZYUÛǜ26S҆S}[;ȹL ykm2fva^[f*w˘^&&S9Mq4pv!ԈZjH M)QlЪVY$ rPRm2d?ۍc94,I$NYIMgn aB:tmo&SvɎ:?-tfV.>w6 #*_ΧGSҔ:I#*0WN3v7(#/7)}OeC `|XnL5uDO?_[HNTAamh$ nC.T}`BӇWh#/$7ɲ ː /8#/"#(c -PP ~jALOٗ֕٘Bmܾ7+@,@K@1b'rޢ1H}RmE!4l d0d`#*6Y\Q.0+*oq"9#(@A,<[#(OcnH #sx*'ݏ-|_K|hh_acĹgpGY7@ ,!ۚkB ~ӒCh; cn[pӈ_3[gz}#(pa#(h"F6> 15)@] cg`B ]M{8iǓ$VAq^_: 1(]#(-A2C@t>Pt1B#B"|$z#*#/ KF>7{1A{hy_KpS%؄1I'? 7.`#(@įܑI>~S:´4=J:|B ɫfiIkFY&\."dc#(B>Fu&#/_#RVhOfArcYUc;ldh`]Y@< '#(a-Cq:`$!`"OKtձ%<=fdO֨|;MVgD32]LӮIF)Btle,\R-%י] o&.DS L$Ed0$Z̫F }M4LRg؟#oT%j#(=OQDx͓@{΁DWj;o6^x?*_ ~+" 0mCr[[ 5tkY g dd}#p'dsuJ`9DSbJZUUWGH(=5h#*~B#/V> f|~{'|Q4VS8HXCu:NAȣ:ɀyޞKR#(>-z'} YaG,-Ŀ{wi`t78tzC~#(gF!CWо/EI60$v'#*#*q#(Y$@b:! u4Vzh <@ёO`)Cb0ŀ!sDs‚j$!RvJ261;0O 2+EA;b{#(s?%;v)(XJ#/Nd֍1H4-s=>YvC朘)!Z[XsGf־E>Nl4JfQ^ʣ\VL6T& [w^ykO#/*Z%FF@#*oҋ;#* a7OؽCD8ԬPQEg }Ǫ!'^nÍ{GHV7>=5*|BH~TO@6^%NZgsJ3~ӝIk]ngZԅ#/j)0 ˁ/ !Ep&MHQ 2 @5Rʄ7 P=G̩-#6VH Pa˧%,~( !ICPT\$xK)B0c JvCR1EURm#*|]`tv{?K3`?rf#(nBY 8Ն2OBgjh2T1hp'?~Ec PMm.鐌#*C 9e5;DH[!rt+睱RZ"A ,,!< Ac|qk܏"#(nW>b*A#(u|>VKETA2]?Q9/gP)!p6qFIxZduS9K$^#(xr0D0b@`֛{GoMO\j%.$aΪTG{3ZubVHq*Ȝ V8\(Z2vw$'v%!^8(3:c?{Ni֒*7t[>-IہH`$eQnʤ$#(qAuD8:9dQ֗ >vJ}OMF4-}6#(@8U,Tp gji10U;Ă?=$JM'΋eȒ$1A$N}u)V4f/`Wra+w~? ׎K 흠UOFH&7@h#*3#*z$GRPT$#*!r#*rl$- >UJ??ay3!6(e ,`/htuEM:=m@X:DKA^ `:Nލ2h*߇۱}#*uQq/M|EyK8Zbϙ>zV؇e5w#*B[9abbt3 ֔de C0՟{#(\AFNe1RH?~O IR?嗬G 4#,㹬/Ku?0'bh1 @|ԝ[#(50=Oi5}nCȨHII!]:ꎩ'_gL@99#/cG BHHċ-!K)gWMĢ&qp/S5gk)0c&gTT (fYTmF1OJM@MD['9y?~7wT%4`84H; &잣Utɬ^4#*o4w93=i^^y7$3Ȩe@FFiK臤*MVn1#/>p-,)~K5'R(#/ 0 ,'MY#*1@uL9%z~]H~V~Mi~]#*|)V$`0=X>K. {sH+P8|3Ay9@oO\q%/xY6H#*bB3+J1"872IdTY0nVTCN"L,N.!yo.v#*32o83 9t.Dq\L^?"̜a`!)΍q0]'A10CJY@=s7C\uXOnrjla#tή-#(1eHu4q(2Y,Jt*M56@H̯]wkwQFH+"z12'CdR_Lm. !"_qIc H[9~_?kZ;Rtq 8D+՘.afN%#(&UoM"b%9~^d#aN7#* DMZ*$1B q+=oA9bB"}@ppDL/ua-U~ߧ+pgr[3#/̌DV<^YӬ /!,'IѨъ^;W3$s';0|:o#(淉 M&Y&\{"m||<Ș*6<}y}yzq=W&`ܘr 7,?خ_H)<8@g}6v6G?(0脪=$(ldilBt#(TZGnĂE6>)"2ѿPk"DE^#/^v>~CuTҺ:S7 Sj8ov0U B.W sX(-8OMdѷ(5eW.@~G$P^D89)p=v;wBEGY;L(ng7QDZ9W6W^!#(m`:8hoAzʧJ(F:ս+O#/zl{9db^_vd1cb v*b`PnZU3uk-4u2pt0gWh#/xt!Lg5kf} nZfvl^로F#/ug#* t<%#(+#E4.W!('ntZax_&69>]9#f?b^8w7 sw7vcN i/-F7W$6woj:iIRM3FtEbH:̷di2i ez+e'6Q#*Xe%saFfuL - #(|˾z2#Qf[;H9kX[45+[Zԫՙ]+}g=fSwƛYSD['#/Jteh|g˕u½fWLeZ*F Qjuq~D0,ţ:&f۩D\"y@!#(T MJm)Q(iE((iܣ<~ȃP>tZuv·w;y@"/ao}\ڌF4]sp^(^>>f3S`9rr#(= v:2O/ޚa`Ϗ!gN^}a&U[bAJ‘8ٷyV'۾ybOl|KM}O 42EhF˿2c%E3#/m 2?4!rGƘ=^M@@yd%'~|q 3Ko*?!ـ:͐$mLW#(`{5;t#/.7y4RbF?؟˼:\ΒQx$D}a0l0QsXPIlk͏Vb\:h !7&#*cۃuen*وT]8v7#7p秬x:BsSHEJ Y|B̩,}O?#(΢1W.e[V.]+p84Pc͆`svPRݵ #/#(8B#:"W-:W4'io4.G\k%j1.s&95xLlvCD;PrCYЛCa`2,N`6Tp"4^Jq:C{aܦ6cL<۹eD04LR˯ulLs$"gHM#ODN޸r9P#/3N7ΙNĢTKد8~{_Y&r79K+sBQhyr2PRaL$ @m +#*FPz,A<-OL#*6Ä:r׫4:bӁu#ȸl`g 9!d#/ `Qp}n#(!@WUD#**tfbi~DQ9 0ށ {C.IED;<:q5;9F#*'/ondzJl<ϗ|p*, {+b9BrPRCME5^4B,rxĄژlC[<@*Y"0UCCGOI6u)CYFLP*'FDդ䜖64ÕFVA8#ě;7-ru3XMHA.*~>h{twS0J"LJyܪɻvۓ\˿{3s#/@a{Y6b;TY3W\6q~=|2p;`/A#*і-_w26'yX\ǒ(ڂ2scfusOx#*bl@!4H,!#Nekqʵըۻ3] ƙ:BP!!`>3ڙEƓ~21`%e0ZVH@-9Jp[Fr#RLAX3ľ1͟N{+|?j|`) be'<ӛxi&a3`OCB **y*-N=.MuԫQi(;79UCE#/)S#(=7B'`kUrPӗ^D@7)XxӾQb52Ŝ:斊d&Qma$.KqJm@v,B@"h|oH\7,~ϼCTj"RC-WP&ɷ$xEc㑄ya45g$r:4m?Ǝ`kgx`)6=߂dJMI!X`Xbt:*+ς9Pzh,B 2̄HLQ{׀5Ԣ9h5ah)ZJC2f|r}iD+`6Fd;oM vʢISAbH%4zm{݁gu׈O%i]5ĒB:j7/T:.I@ G-HBY@A~kJk|?CNٛj:mT  6H@<ᨁ"Vyu#*HHF)~zBchE(1_#*@lIA.fk)cht5uv+;XÈkf :yI"r'MwEHB b bB <~}&T<:7Yzkn d _:7BhϤܴ;Q}}G.DC#(X+$#(۟9A]* bB(CG@ c[ETmiүyUF#/o0C#(O?nVdŽɼ)Qj#/11YhfX( 9 ̰Xe?Bl`yEE1"#[1IUzbQA%Qי&%e[BD"j"zQeEi0%/okoWfV|d%z(\3Ca NkIH:hOGL>J㩤:cDZ*idЖvaNJo 7=ebd#*i <qKz4֣-#/*B`fj*OٞN"JoF]13p291%#/Yo<<(\+3g $`(h1 ꅧ#$Efa(aCKpۥ*uv2SK#/L#*`euk0t~h7insJ?;['mpTH@@AF҃zx,op*Ș@_`ag[I gcC5W;ۧ,{dԘcK"%g ?$nAD ,_NJ1)>mU'|4t0(g/eeR('݉UԖr` 7c~~g\!AK#)Q-&ZR?t HQMbVd6jƒlJV++-MZI[[YQʭ-m*3VƱ}ﷇp9[tsF· @AЇ#(XAŀAsI~1Ŏ#*0^㙻L#*N#/8ِ)M1Ci>CE1 a;#gs#6IVNH^8ca*Y#A mZ5DW)jw"(#*^v*"㕭 AҜPK]B!?~$?#*1*JlQճu0e!P C^ <$H@Vm$sdkrL5&6dTEW]Cr#(Q$XqU:#(Go||i8\"m(DA^cN{n$\Y iIo<|~!L} BFM>k3l*22#(F ~.#E#/"XQb{ͷ>|bDT)ͥ #*sAqBkgSb? u!Ǩ”BI$T`dCc ev ze"@u^Ǹ9!Na|o / (#*SoNiA%O'%F?oFQĠ!E10MIv 9GXAu(#*qLLE!A\SV#*,azӁSʃ~aLI#m;~Op}qxaGZK驪uvs*T隵VGwUPRMcsl#(t&>>ڇj%#*] Ak yzPb+ Js^acϩBpW#Na|4wBtHƱh#/P NC>+gYC$5u el 'xm(7CȀB" )**#/;'DC_OdnCD,?#/ [i`?}}}‌WwkCEX__tPPL b<2@;:Wuy(CXPYԘ@=C9݈>pӵ7Dah#(",e#( Xϝv^Hn[1&އC2!U]i YYh,#/}da\~\( Dvu![tL0tLVMB٫ Ly694:7Wt2hPv`twz, e?vV^NM,Lj8 !PGJa\ׇ=˥s yttGD^ #*fȹ"\+хNH ΜW@g#*+ű|bF&h(t؏;U~Z 9."lCaH_fBA 6O8O)[vѺ A lKr&K-y2^%tߣNM B,aĉ%n[xBۏ8z|}f"!wNa3.#*(H~Ȱak./&}1pKč;b8c]9ng$`DdIsʑu߽!=6jr0&Q8#/|`$Y#/8ŖRaC"\,!laQV0kdдDJ,ʇI%C `=t$KjD(q9jW/fTiR&!~/' wT}\ 7Cv8:V" 4Sb(lW'M" _iK6ɽFQ3 0Bه#(GQ}jZBBϢB>h@elwu,L#*Ȝ͎NZ&5&vS$.u~1#\6Uz1*@%Cw80Č! ~4$Y}goʗͶ҉ gĒ5 >q}9?t9o'Nztkn/|+tjن!ivt=O9dt|9*v 4#Ml0BR6U;(~iS"~#*8ḋ깿/y$#*يޫA=n@(,+<58Ņp.FtE# As,9x7 fj2BNePXdw$ d ovW" 3#*@J?l "5#(BPius+%5قi8:[1RAJ70\c A,CIJ~G'8VgB)w*Za\8憄w6%X#Eb IPS-MHR]]w6ߋ*'W_g(sJ@:@hS@d5|]NIG|cYGd,.oPILٺ`46@t{I>@C΄Xe.XrL%D53aX106bڞ#rh%OF^ ,(=h!\gLN<4#*#>^LJ> R`_JJA<ޥ5bX#/b*#(Mt`Q0ܐa6Nez0Eup:f(6 Jh߉BA%YRBC=vnd"iL ^H\aaOmf䀽iQ%d:A0h鍳Ů尐;ɻ9f#xGG0TQtXpX0d$&mD%;)IPkLf|3 ّ|&mɎLN}R[dȀtdgtΏ4^O㍳0Z9Sޛj0m[R[d`:{3#*s"KBGpv͡2[-Di>f9Yl4#(4#*G/OJ>|s4l)C,o"CePp Xj (ƕDUR Yb#(ZF̽٠7-]@6l(͐+`$ hCLP#*G[&g 0; H|o}VDbw}q/>H(A:ף=TkG|C#*9Jo%ݼz9- ziz7'aĮ?&EzBS3;z`  *7;'U&xS|"I!wB-ZkFZƵs[smU #/Yzq !~ #/):d6[W@3#y32g\$#B$S&e3J,)I)5EA]I0biC%4DF~ܡZLY%[4)4̑hEQCM(R%1I),&J#*EF FhL)T&%!MAALcJhowԷ˾#(="=, ++UW!xV4 q3!#/`dS0=^&g2@ymS0wD'.CHF^s0G}OO<:#Qc0҉N#4WZ=7yU5&&UKeq*ʸ_In98hg?H?k;lԮT5& -F:آje^&1#/35h6KL$&'ۻeÊ/VAIPS4ֆ7aAfJg jj`ťrׁo 17u>vfǚ|6/ؐhq! Br,E:9X/uڙsy,PYD6b|n!ۓʄ)dRIkA)n@.3%:#/;e풬yrݥ(eZRG0Lt OYO4N:m]$!o-[OEyv0DM/^贜$2{&q>=:.u~;Y~~tbdlOw]dÝpJ̩>/;a҂H8k8qg-%|u;@] .nK9qԙ4%'2;iN鑑#/;kx &a#/ZN9o`,\$o?wOЗ/\:^W1MMQ`Qi_h^nwN5o*w+sN;2˜&e7Ç,\44 fYj陘feL[wn{g%snmM &Z3OݡB ojv~a *cuo\ a\MLhz4Sӵ)$<<<7vO4EN X@N==6yFf!Y%dֆfN@HJSĈyr4߰Y9n 2Z1=ƙGAϜ>#*Y5V\0>x$IHݘ+4!Dir ` vib_SN&_:IkhF9p@tpB텴ց=,Y?, aƉ(X \o ݷD@ﻱh8snN ]GK$8)nFR̈ 4B,KN#*X&9BUDܦaKvml6A<2id Pvw_^2s7qNyaS J*V*·U|;kL BePcUpA=yOT-!Wn>csn>9ޞw#fnHh1,AbRn&#/c U oA!CK$re[G$nu0p.{SšMzɵQ#(XQCf0vziu%HjTHʧd\:pːh+w8(̰FarJHQIL<S)eJ#*M.cFnnczrv#/hMҊAs61pQ2(dٴ#.Cq;I, RCC7 )dF;o8B0Ɇf#*Q*/HŽ<7m-JS7VZWĔPV72'uh((D_a:+z8˓͵՞tf>PwUꝌybvv -U\)ٞ-8b;J|7o#*vh:[ףm/kӾ3$paԥ#/ӸY{4,kP`TWs\g5/Syq̓YTLGD$R;NZaf$gñb"zԟ9O*U~zhw i#(6wꄓ"s@FN֤y΄#*l!HEMS*vgb-&vI݄Rgç:\7ΖiAcm8vVIB #(>1o:K*7U%BEd{9+Y#*gk.#/HV< jq|k!3+;@t>6ɘT┃B|V2˓Aۍ|9pä釢2adMN>[YNtP9*C:/Y}ݲaErCCsW7-[pS.HmWliSSF1D2436FcC우Y0+gAkqjjPLІӔ&Q(.62J11m݉ԔdֈCQPE[/0nrW(D"x?[:#L2AIPHb@ 7Lf1JrrT]MCIܵT-Ry)srkͮL* BłD| Hs~̅0q~od8&:mf aC; :;#/u<"BԌɗKq#*#*=uq,^<%DC#*#/D#(rṙ#/9Ň32Άvd'L@N#(9u:ўܻEp1$ÉP2˺sFq웄!IuGR&S@sdhقə2S9O'u0șrltr#MMqت]ir6#*C,0/'Aq `0z0%֨ F##(JAaCm();4SQB" PFͫp{y&#/5ٶ{hՌ0KRA=Fb qF#(8DNrۤR~$9F@9#*bPo N#(h'#(`")G"|mdB ';eU& P{yopcő!𝩳& .P"vveomdCIbna?5$x#sNeKZFk7 fAc##*#/p#*{A2Z!C#(zc?;xa.oĐHjЄ?ί6ժݺqs\kL #dD YP/_)@YP8[LR"b&Cb$ڐnл j}#/J1iq P_t=nC^KcSjA #*ˋK"'e V3=e? liՉ|uLK2n6WՁO;"znq[=#( %@a{s"J=ǧ'$aD`m4ՙ\0a5\bwXቒ@gkB D5#*C#*A[.\/W#* t1 Wqtt: ӬC #DIBUE#$ l1(dHpt9LS<I2_k!\AyeF}dTWSѫBO?O >EOcLt 7Cns4&H!Dd!#ՄZ@ɢk&,LHgEԝh)1 d•&2ӽF9b3B9 mR,iݤBUdAdцf{si؞wi@9&FMڋC!Da7˖u]ivB*6f"]U*SnIn"Qh3z:x|vb=ӱ&;w0 KuL"& 8f#KMuH10p@<YSrV#(( 6C@507d~$BT*+& X"dg$@ #(11fNS283wJk0T~nug ^&,*T.yۿ6t5CP21Y陦(b3[֊_>+ѫ7+aj:+7Uȡog=8k;ĭLVfFTqK-fSe6M7/#*UDN|4q0:Ν0`*,7.LKECYyrI{spr"ZV)"$)pԛ&KXQޚzwpCSdqra݄[E+7i }6R:xsxMpS,+Rb݀3\IFuP:}- (v{U31xm7ƾ}fjZ]!I5[gJ ;_h}7@jן!sCtaFEmw fTr%JYrPJ#/0HЫ]#*һ6£#*" 1`ᱮQi*^gohHʔSq H#/Y-U$f5S5ԵҴ5SUF{_/QALjmRlޟ11_li`IPQ6[@bQpPX!+"'aye!],:bYL3Wdڕuu,K93PC=5@ٳZt>"NIgf#/tʬsׅFI;#ptAzY*{~"Hr#/T" P#*d21a 4܀LbˑҊ9avzGhU{v,O@8 ER֛Yp _8q8+@9$"i#*[~v:[2<p0e}z.96k:'قF@_w#*!Ē{!.!f}*#p^'|x 5&#/|7;n`tSM߯Cd@ R*"w?CzN ӵPXΥ||?Oڷ/mDE(eQMmr,kMєe,S%*bm@XSj3#*C1$(T֩zqEdVw]6/i^ݻ*b(2#/fҌ֤֔1UU־g"XݲMElD&ٵ˭-LIm)Q-6(L¦6[6{:mb} ?q!]:I$pt,k/))iQOq qmSɬʵRեH[ YH8[ e~ ><ħ+h`<yZqm^׫mOD#* K9Oh?Ln4k-^;b# d[#^>,I!O5Im_,A('r3^nXv@EBC X&K5Xy7!@PA #/?o,^9 +Â(XNt#(Ą$yDmy)׺y#*T%5(bS{zDmP˱74h{q{惐sz}5#*4z''.Kvo& .zDsαծ\ F$#" Gpzb$#/da4&OTHYl Q"/#(=XkN?,Hm kW.oݑ3(i`Qc,%;,p!tqX&4mA˘씼WowKHf"khH$/4I#*hV>OR{ؼv+$ǒALEN섬XpێL Ni~e[kR`!s4ԝLn/3LjcxSWMF#* HƆb}IL# SoxAGZk#/~QY]z5fէtj7/5Rh4%%TacX媺Xm%{f.p#U`RDEG֟#*#(BǘwSȰ~8 g讯guX̜?j!fP$) [Z*2Ir%d8M۞&k-}9ߚy֓3T61?Lqxު"'[@JHFO;u)Rʮk6̈+XlTzŊ-HkM!X yjwQERMjFcAXҠd!m#(0,ZP~xr)Ά,v#(6Q#(O(b=@ T6pڋCL$1%A`iJmC6jMe=J613F$"`óutjxgj#/(0U `h/9|l D~+zќ\'LK6Pغ=Lf1ctuoGqQyc Ć!aB !&JsC/"D` #*fD:@!Hćm#*iaQ',DC`[} =UI$$$\No ܭP:x#*B)pD u+gI"k Qkd!/#*G=#*#/=ӨbmטFBɑrȞF#(QUT#*K<J:w&H8:#( ,O<0L8C0 S%¨M(L}x8 !j!(CuRQ5 Ӗ7)+4~08F*pi7$j;"H,"A)2YbښZcZ2Le52 Dʙig5nmjlE 3X%lS-T6Lm$J"3f4M5MUQlih3i/˜DN;#*萉+ LSJ!j*HNmFŮkvo^aQom5|wS]Iߘ&@6Q#Q#/j,QIu/iojl62OA,E# -?3#/PCO?)dDAn8p\#/:0#/4CO?zϐ@@;D3=)#*aa!#(/|࢕\D"}*zP{9^"űxݿ<ٷ2Xf"=p%Sln-#œ@yI+SS'?05X60x"^2#*#<"bӨhikZrsD py(j UXMzƛUL޼@+;Oy#/1,1֕#ң ˢ-80Txߪ)G0CM_} J7?'gZ &"zV'e$4 lcdBTo^9g4NT%*)ߙpX$$04dA#*tCeJ`j}[{ڞ""Eb1B}Zl]0O\?#(߻/"uh>+0B $c>PYP[J!aj"ߗ]:ḁ>$E+xC3r㖆9l-1ԓSI, *wh6NH@@άFs0fF z[rA#Xt,#(Td SLBNPwbyݛ:D@3C#(٪gu8chM ;fiwJz <Q%J T.hZ@NlBpwV%DFyM͒@k;;7b aȠr( #(b%(YBQ Y YGD2IpMJc21毓kwtb{ӰLw5v檏m'?zmߕQ>RГ0W58|h!fgI'W҄O}sq1 jL$VM6)bkyKe!HHHA*2 $Y(#/a> ΁D4FaPb 3Y>M5-* C8og0?W}Ms;2S#/KXY`zcON;Wô AD:.ՃZ+dwT}fTXY,ƺpT,&l\tΎ]#(d d>=_=QD~oy[ۙN<羫VHdl؈a]&sL̉Sp8-.Zbc#(b~fH#*&Ⲝ0hs6ol6Lq{{Jv8!h{ڥ4ߍ5Lfi< <0o0/V1q6g18V (` G<c2>0Eƫgw((j$ɇl#("#*!IqluK)& (<4AOY#(,]{O(76#*ϡ*1fNs`!ӧb`B etE!GnfUՒgy@\zw_ʀ#*6n;3Țm&"g)Tw`y$@1TdE eaP̣)vXm6mIXA %ePl(#.͵ !_q-`/l1FAٙ!ˌ#*f#/;i>DB-EU"HbMk0`ǴPD2&D$aDZ@D׈#* g-q-qE=EB=06X<:Rlǔ+6S&O#*V;Kz:E%N9d)h[T۝4Ic`DxNhSV"^5mmFKg}08)HL5,GaT(&zV]l#*MKKcwK*`UC)DɔĮnN}H(C-̭aVi,Jؙh-&RUA,#(,p,1T*D?g 0?[ԣm`o>!b뵚l8g?f8UOk=*Db!ޓQB,ζު2H[;8D.k\N gJI;d3K&0MW\GW-_aY#*bpp"8 #;f8F=cFHF2mɇ1Fy7; vLdl5I!̗@(%mʛ<陂)fiMA=gK.Ź6H_:m֎=;v9@xH95ݬqP綾j0/vM|QޡR#;QS.zIdøL"BU&i3۶h^,D߼)dd&F{28xQɗ,e6Ⱦ$2i/:!Qq)ۛuH仠n[ YtOC?C!Պ#`‰j?pc5 a0v}̘NwBǹTbX lIX.4d/ VQ2/#*!1(tD_溄Kg.-Hoqa6R#v,2dh#/J-i-it"FA,V.X(Ry:9093Bʰ1p쒊 UXZŭZձIOJ/j{HnT1$M?-Azk#*pZ c!lL{jx 6  !4ƐvX2J1>!r<_$P皾|0l5ҊR;#/#*eB\n|ySZxs}sdï mg;6Q80;qcd 9Ǧů!H(zh{+qQ@f?!Vb9HdH~\AdSi|5b˻EX4tMH)0a2RkÜD,w\FRZ[4T B(OΟ3s"W?{9yhM'mN=&,<`FL 6hgj+nHݗOrjnY ~q#(PUQm&YsA}'[Nuը=`` ڄ/ٿQ =ct55SXY|* vBh!Y#/m,wBar=JZRdEі"d(fn[ue[)S35F먷w{& iA&b"1RL9G$lA G5 7"IB+mH\9SR:s4N f >(O{V5VS]*̋6J\23Y2TR_lȎ7QŃ#/RrAκ,1b*3q F Yk 6je#@*#*JJ LlbԒIMK626Jv\wrH,uni۷7M*Zcrx`jUS9"#%#(6*3t̜ 2,˕]DWNYQkV#*~B٤ڌ:ff>ېoQdCRq)c85Z1)%TkJ(kVZMQLUe Z#CP8ČEpt#!!A1#/1Xtvc32LMf[ C ըeKdM-xRdo:I`7\̈eCWMb7#/S4e{`u513 3c7sb1Egex̡ķGOd]=…񖈫M=Zh )>(~8cclk2zCF̾pC4&O2Qpu5tB,tdqafYhSpL̼|#(N4q-"lp͕T6rjԜA#/@+&ZkS/#*gX.5GXld'1dU1:xa})y% D<::r`s$vwurjz1fF [=g[@]A !V))$O"N$PydnITMɋQ~2-p}hr<a a(R dP(YCd]QA)0&A! %\JoBG=>:cԁ/J>K2ÊNi~Hե'2l?m8=0HZ?OuÇ;XoFOX!?/%RĆe?ٛ9eUt:]er9g&az8\f,rL,)w#/O.[{7tn(D$幙ru7Ac #(`#/B/V6Zrkkɚ(, AП }3VH#*@:]ֽEFR_u-biQlmFbcQj-F4Rle2bU4QS2lőZ(RC #*}~ݲDSmy#*H BH#/Y}FSg/2SG+t?>#/ZvpH5P$#*z8< B$[ILWPF?$VZ]AhO7uݝun%-mTUX[s\7gVez٬Qv$#/H81j%ٳ?^*6FxLDz}]Tp";= tPFV?;lK4C(\]Mf'E=?ҖZ*^^4'e|)9quu]Hݥ@ s^w47mv<7iCHi5D FBFk#(Ho#*9|m[L79 b#lm8Ա4l;\R #(HE\aTdtMFB&"A ԯ{P(/TzeMpCݑс|JNqIޕ=@(yguHUTD d([0>a %vPE ؘe{;#*s;u]q ~z%EHЗv2*rJ:y#*Nnee46eKQmmS60xMܮU͍w^s/$JYZRmE#/G4o'n]fXmRv\ܵjmY6ewwF]ٝ5g8rshj-vm ն#(,T|`u։C8#(l#*PuP[؏^,B$b%w)9fN#*)t O{;=^7kL0=/CϗhPͩ΃azyUWϪƳ0FFS1!nT#(GJ錂+e9YL B ET#/Ą ?aYJE~VF2W/į78뻩ebkZ^I&E #/s:NJBAIbF&I#*VnۮVTM#/.IE亂Aрh LP- F 96BbE+*B,R`Љ0bJ!??4h@jLA#(@`!,bE#(H#/@HC1f?9$AG5XȌ"ͩZdQچ֢1#*#(;P$D!f0mFkBkl 6|5ZO .(#NQSU#*CRI5^WOAdz۳n`_{P@{zv#*( bG*A@NH'8—Z[ofpcFphmBpq@G1oC5c#(ĖOL;Zf#@HjDl[Jd_%e$; $"ӉD%`Qt$Rs .8#(c4f02SuɓLAI"`P%N & "rY#sU_9st򰠪8xT;~ HIJ#/'g:;yD́ÌiVArȰGX\٦ $"QUE[[նu.R hk2nݡ.cGB?6@)|ijL$(L]hEU)-PG vmӭ́oF0" Sl*#(JZ@ bAT*䪧L`$dY#TdI$",bF"03ns]ji*2!>nZ)u#/PoS3p9OЇSxrXhA+aX@Ibr*.[IJ[k]]eUif[sԟth#*)mgza pt.63ҾaOSIxjp3>H9Tfh^Qd5AuGY#($)" CLUV>R($;#/D9*=6Y0mM@Ei?oצΤ?ͷII $I Lѧk_[d7k[C(B;HO cZŋ#/zBdfz#*g]QjCDD$ g(F?Zce4J*; lPC-94#9-^`W13Ν \Vmk#Љ˧BjnfT=KQv($LUC-ӮVfS*^m)5:#*D#(Ρi4"\P?j{DCףeϪ!KW 8d(۬V'o*i'y#*s+L/;c7幅a}ݑª٘DCpJo1L},jۄ {YƇh;34MԚoc9WWs=6ikrN:m#/yM^VN#F ?r]~;{č#$⍢OZ)EAG`8re۷`(7k񿎒<-a7YyeD2*I.f}6|cIJqLB H ٌ#*u LEE7Ûk6<l<-/#/–SL-ŲȄ3lSbH)cjr;ǨWU^02_J#(s#`yyq#(Q(Eu!rzro~]#kMP#(IA)`g$Jm+9S߳d d4:ViidUanwۈ#*#VՓ#/~q>Ƕ#/Z#k;/c-s]Pa?{]`BlBhbHQ1[i[ 5.Zayqk#/hB,9[C";xTup%Ϫhzd16#(}᠆P&ƺG`d@8*8V6`V5()dN#*8<Ʉ!6\Gܴ障OnKwL0b|)J6P'srFÔ;ga+F$cvA.OT$D=8|4US[ЄP&_{XT㤉m}/ M8(ܰ QI@{#("}#*}0c1 |j_E}WKFtTh==!t> ?+y#(Q$D$H(v/WփzLFdm"ި{h!Շ'\|Ok#*þ&';[p gψkÊ;5la@z>1P=6#(a+nm{Wŷ/u$>7Q5|k2ǦNaʉ!$sW|+.F&]@4=Cٯ1A͊e#*;M粄yb6j5 ~Ta0ӈGKP;Ij {E.uS3,z;0k腰'lRCu镦e Of}˶*u+;(#( A=K\DK=tFge%g>}#*,ѷfaV ~#ᅴ^d2"$d[.Ӹ3[lD^@ zm\QOʓaUTK~č,WLZ;u0D I#*pǷ#(F"Ε)ՙ#3- )$57M.1>δ妣k(t.r5vM[lk4,%+T"umd#*$ 6rX|`QC vНՠH_^/ ḥ*HEhMDRbcDiR2Q4) 6l#/3 _~_oUmm`RGID)LS<‰TR(s5vd#*Ri1a-@8$jBa}K~dX0%*l>Kn,>2Q#/ԊFVj(*}oGDa"P!bcm1.`-MUNB7TRznG&ۨq6:ITɧC,. F#(6P{MNe9"ptD? N<*%z*woㄼ?s r/P4L&DK۝t[j+W^ aR#iQ*XZ%e#/B\a%Q1C765 2 (c4@sRDA6PaO!ӒCam#(麕DmhZe^*ARR6$|5>C1hb%#/A..Bh}P]gNljl~ 3u3Mnw7ڎҦlXwC8H&@B,x!iLc,=)UjtTBgD9ɨO;;:0B!#(ؒ+Ö[EEnI-HOiah0u0Pd7LHJT(P<qS0m+ejěYzlbj;#/CNKQ(2&AH[r3%7&1 J+4 N8GLr[*!01&91S `fKtɔd#*Jt=ĩX 3]fͳ#*Mtpe7.θoDf8_Qi ꢶA98La0${vlo:CAa0,X2nV/[.#/RzSa< CDTK=#PT758poA0OCp#/Bf]eţ:žJeZέd./St۲fhӱtw#*bE$XM`#( UAD>3뢎>*0 |䊄T5k>jrAԤy؎#eƴ5]  ~>FQ=dˉhȢőa(P!'!J \-0`%7#*X93TX)d#/PZhPjnkqPfЖ}~ߓXDl,6̙%K*;;׫ B{e[܆ZC}p4G9n|'p|+A+`(∩ NL]YI\"e :7qs$;0E 1T1&#/0V-3Muj|:uu!G%2w:q#*'u@1I;uw::l#*pf٬PJ~fSC_c{=y0Vxr#*EP@B~d,=U6t"yD-GV#(xΗK6v=P*mb59NfU#*hk@jWΎMCa4CB-8RD"؊#D@<V҇$@I;{v(8;/#~#(\"DE$Hr0|PR(fΫ#/BՒRڶFA\+KKc!T=VMVY$s-K*vsoUWڥi5EUdC̊!`Dtt##(#(~qg3u#/ɐ}SEM1*TPwPJ^#/`O$;|MXC9P=:L(ȉJ|#/?PTRZY#-MRQX6#/V"lkj--+L-RB#/HF?I iQ\f RU1BME#*hP+Fu͢U f@22PKlp"!U,،1 ``dr!J0FBJJ@bQP"y#EU #(R Y\;;kĩKnvcp'#/KS-("!bB fj$n#(vs0," 96_fd$*p*Xlfpt1<%:#/SG]Yqh {wVCsG#/tt,H0As.*1虉CC%f7zrGN_VHhs]6<䮷]J̡}˽VZ6R#/@ -#/,!>r}C]~i"#/ifտW]gyzʔ%h.D#}GJ6Tcr7OU)}jh%KEujLfL#*mYKN]IA. P);MX”q!\<e(l՝e?EIӤ Jfo$xYg;t$P1Jq7hP7 !M4R*x600#(P(nam0#Ea,#Gpqũf'ra|њWILVPlf D T#*w^&J͙uV5#*S(|ѐMPyE#/0u@:ש9xe+#/U0QfU@J2pLWJ%g>B2<˜k\Ko<[ɝDtO˔5KJOc˂~ʢQU6ETӑ#/,Tv割؁l[OX=˪8!k:چ#*rrqQgnB`8]>nU約y&f%1/6r!F~%ds-<7Zl/ȦӶQ$j㔥-^%8X=wX f֕f#1n`C4O^E} GSZ3`v][7k3\mEc2.v"Cs:u#*a.鮹f78N-ǡTu4nsx+2s\ߋ Ѯ+[rr2hS9\B^$w۾ <5zEU=/lj@:PZMiI7qbzbnjFEԇ0sj0 U]#*`fSP)NCw02)qOn"xX)ϸ+k@#(G@#*)bS&DkO;W&0xt!R\/-TQ:+.u}4y@(yRYpo52QYH@"zIYc?j`HJ[OuK:/lU%N#*H\̲Py#*f-BwXMa(@BALJRL-0BCB#(Da5UkzVnkQZܵ6Sa(sIp i,`ZY -hPt1zN/g[XC3{1=*3!IDXyذ+x܋cm*̶[EW-TkU^R"'tM8ka}M}"J28wDDPdL\sY4zZbM8k8M-`cbR~ɑ(U=9ư&&ûrvC 2ueQ&8 ;%!Y |5-sΰYY d22r'Y8+[M0Me\βF1SJ4NndCF6}H#2z*#/@Y4&w )gW4Iw-r&zrn^9x`xEnks^_CˋHtDQ%'{`v#(Er:fff^n\|o @bSwsd;AB## J2b0׬qs7NdEZR3G0Fdq_ks㞎 ^Mz];Ms~f0Jkm#*)L2`cc\a|d~YU>x;5#*=JUQ*¿O_I#WjwI=PVNs d젌ʴS7 j}=}'pwJ0ɘW`73$oSujJl\ i^́*?`gvY mtc2R#/Cd*텭HE &@8i]GFΔ0snA0by$9o1}t^Tj6BvTBߖX0:`T|#*D6RmcGZͦƥ#/MFkb3W2/#/J~IbX0ȞXB 9(#/?se`WLzh|Jd+rM_߹Ø)=e=24K/-,4mHexyO ! `#/@v7s$ě"@}1Ft[(a̡ň0J0Q%I\xM%hg Pbt bP *ڔ/Cxj~Y?c!ryf+ VARDgd;9?A:?C>Z85,S8B=10Csud 9 iB $4'fh lFOR)ֱŵ9ff.Z#*Xk>J@0BC :.7d! "6ڍ;y+@73Sq! ,2ox/\o.K?-$_#p& #w0d&Ero5:fbZH@ ؿ9[mKgU3+7&S31 ^Zۨ $#*.\Ҋ#*٭[R!#(xps)PH#(;nMW XEH&(JVRDMx\QE@bHG&*RP-h0WW4v"#/D;KB2&a̙#*(tc3#TXxĒ"‚mje3 [Ndv`;"t&p IENFm3#*m#/bz(LZ1cvL4f\ydɽ>9LG&F%5!Ҟ8dZ{ vk)m]as-e4N$3rV]lPaʹtͩ" 5wʼnw'7q$[uLU.2)Z<;ɴ;.]y'/HI͟ EdhFzDS\v'#*tݓJs&itԋ\sH`Za#*YxB˕aVj-vD8ͅ;/@ӑTCoZfƉ|Sݝo{޺g(*r5ih+B"tymmәQiDLQ9Npq:ù#*ω88oW:Gܰcshp0r;$MU}H#$m]4F%L̪0ljw+>]6ħ;e.>uK]!PR;Q}Af98% s дmesӝn(D8CX0a*'Di;@rXj,OLC[|*d#/]΋dgFDL!S&,zx)fGNNZT ܜZ43PIXgߏ&ȡƗNtbmJv18է(;Ln.n}ff w#Iu; ! QC [-4 "oZq-)d>7mh5WmP;!ׄ֌ g i80JN#* ȃA=;C!p xu<)QKCXshdaågÓUD&Jh04 Ă#/B#/K$I߭ı!#CA,koYc`t#CLɒ!%:-+2<*@6AA`0<lM V)F]ޒ&5D#(k%<jm{Z x*=z!V%, zQ5ҢHDOOoqcmQL!"ٌյDٙ'l$#(HuPA9`GywGUzvkgu7ė#/ݢ3٥d$̲cGi1mw\)%*B`DL}F5jMThӥ|7߃HX0P DTP5|0ٳݖ;t^8 &}\/Pw.ӥ0U9{sztVDiI ~#(@#.Y"%Ɍ0$̅*1#hVbT!0e,DA fUpSKcbG覨K9`жo#ǃЖ#/fAdChk}3PJ2PJ[u<}mQ2 8> %{B"1sh>i!&Փ`z2@Q°(8pAPEUjwM lY:K7դ><9]f׌y6ZiIEB"6ZEJz 81#/H ¦.R/2F9% =͸y |r,1Bhԁ[a#*Z{\ $lX à:mԩ']Q1"P)wۖI h~%έw8tҫpsI@g$܎Wx+S`)mtcԻr#VQ-#/e[>8X3CL`{xfA <9$Ӿxf8Ci uRr"C^S+@#OD19˾#Af3Li HP2f]hl~NoT*P#"D_3,əYoYf iq 8q7/Ⱥ~0΅bPc3{\hKL#*/i\Vv!J#(+⠗`"ABbzHwq0Na'GFĺcxTNAN!##G%*X٧PWw ĒK@8yJK>n‰AF`q@Xkmջ(˳S0hPO[(J]9OmV#%G+#({';w\smp5|fC谸.ٯqhv|YEC#(bȂ:@^`r" ̏QIut&i06T#/rfm$j+"1"!y7s]&Ѷ[cIA&Dd J@aVBjH (l1ٯ#/*|=v< ٞ$0O90@ $X1F*K IE R66$ie%SfF}Wh55EQL_jv(`6o@ DLPk=K Dl)HAOJ)-fQQfF+X[,m&*mJmkvZ(w(4_=FI'rը7<>adT,+kBB!$XC4v@zP]uI||_XYJYQ] 3oRm`D%rqTZ#/?~4S=j "(9#*WFԖۤ֩҄@T#*m#"ݾ9*" !E`: ʔ"k2ס?IP 2 9Ϸ)9h^Gdv03/r"~Cނ,X;6b#(Oi򀼖0johs5j28HlۉFh})\,{ڇ+WDH @bT#QKc&#*DmRm~mڼMFiĩmW8XFZ! RL!e]6@X"hTbb=35(#(JCv}r/m%R5^jŵjPb-bFb}GYc;JHj~ ~Q Q#(Cf+L3KQLW֘eOd52~طl`c%s/:|$WݰPi"DO~f0X(zK @1򒑂0( $ȨYؐ1LP"0QI11+,U["ͫ˻h]]m&ʒDƷ0e-a&40ܷ7ZaZ0I`# j2 Blm(f-w-R$XD#/##/0@6#/ݼY 1^$fWu!%TRM{1Yw~ I|lÃ֯%es=5}$ӀHz(k#/!(wwo3~ Tr8|UNnˆcNGKC"J݁',=tx3F B=4qf󂛒#*ru$*)G@i`8Mx 6waӆd=pBWs,WP-H0k#/2`0)I,۲GpN49F唙V80plަ#(%8kH|yݖ^S#/#*BGz1P%p˽RH^,<9Pyj46L"ϝ>SqqqAl'\3¶|#/\'P2z{w?F@j-ӸB|MYQQ)03p͞ b#zY-2\NBBCJ1 XCR+lȀd8>N}?q!Gy8X$${#* <Ȇ!BO#lh@VbÚ3ʿ72HMI"2bc.>$$ ŽQnw;$ 34؎ UXLz*1(yFD:6( A#z{mU u -<m cW5Hs9DyLנyބ\6PG3xݧ.;vH;{%?XIJq\8>*Ƣ ޏ|'m^1pĩbtRe R:`aA#*#*:?ӣL=N|y4cϢYjzuq Lf1i00M}|PuIռa@NΆrAN34:sOdad L֡);Dևt!XFD3i=ee3a6ye͆LńI"Zq#*? t ߔ)Bx(7fY֝#s~sP[*;dm?uA<#P0-K&efmɤ"GHX7N@`irFey=#*ax1wN=7+FypTiM~:HvO2 7ruhC@{B(wPH$`$c2(wdV b f%L mȾܷ#0㪕#*3vfݿ_}_ZJմLjJlkY3[FmDŅ@"l)B#(*9D0K,S"; v Eb({:= Ë>Lf|#f?6bK+'N#/ !~]?M#/uyQ0wPa#-g~;̋Nz !P T8d:9#/C0 daz:dS4 4}'rs7γS+ׁں@IA+ɻ,ki #*s1^6ҍ^V4ZdHQ+#(8^ a\r d=#/1!$GP@q o *p L]N4If"REOoaw~:r7ͭR23Ѵ(;H';pWEAH#6B>S<GG_% L(yߨPX@Gi٢4IB" Ģ#@0ClD"4Мˉ:igwB3!,z=^nC;3ޜ؞NCWahiv(pD=`l%عBOOXxeT/}G4RMb6Q*Q-gv8"7U,#*L;qӧm3&X߇hTK^VӘH0\3"2B[h# ؇ׯ~KP'oدMĂ$}$B eX=F(ܑN$響 +#BZh91AY&SY#-b#%Pe((00b*#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%#%﮾y÷*h5tink4:y=l}kS^Y+ۮѶ'W. v]ۘou޽t{ݳR7[=fQ#%MY=uӥg۪<|*{E0[{#%#%#%#%(t#%}@l˘)z;{^f[V#%\:=:zM#%!J#%^J #%P)=yG۸LĻ»:rQ-ۉJkkts#%[؞}7['{Ԟoowz|nݮmQ9{}}#-{#-!zbi*2jtws`uҺn7`lRDSFSր(#%R #*e{7y;[LJWW}#%(} m_]H}wq@{3`:#%k1G6ꖲ޼+s]ۺ=\wq҅;8ݵbWtwnn6]9ۊt]NKbM2­4ux.٣c>^#*Jf^ljڵslޏ^ze^xw4un@{^vN#%PTT s Z핷vn;짼y.vm%zWt;j{̤\c#%r#%#-,#G2E6vtk8ևڕhvZFz}>暭3e\+49>Jk#*=^pkܞ}>^io#nl{];_n绲>]7n:](E({uwy2nuʯꔌwSq#%}jT1ғo\ms#-Һc6n־d{ϭe(z:\Gml=:h[=t#-CeG#%ʸ{{Rڔ#--^]fzxݺ{]êj7w[t٥ ([M'vݲ.=1{Xzk>xaf|ё ;'gn#* k/s72շ{;tOt#*O񳆚 #%L#%#%4h2'jP2)&!A#% !ɡiIL@4ɡ#* #%#%#%#%D!jmO @MO$Rz)'o#t+ʆXxfZv20"M8'%ݳf‹B#-JL`I"lLhch z:t˽=*/Yϱg5r 61YeS\RJH##*۠։I^<|[#7#-`)f k{lS(R;)L7ac,/%'{8h'kb(ShR(Jg64T\م´hc72|OwsٹK(F KFEcZi(RAsnCQW6bMQ[ Q@U'4|P[Lmːukޕ?T y2FmrꠊXOUԆ\2IH#rxהq$DaJ2W4j&wܣrJ2IG}[l2sNY M{!ch43leƉe#-(ZM?SF4K̆+TRnzieTqP:@0ltՀIK51ha2dnQި͑6GQ{nZAMũJ^ݵ0٪ͼMFx|6Cl#(h&<ν!e &uoK`'nnF!9 #c*w&CbۆfR6z5\tO]J̱e$):4RGx_*uW,Z6LT >]dX_Ŕ+ d 69#*"ƛ7:cXfLR:uѳ=Abĭ^JDѧF\m0zpa58Oe_+TTQW#* ^41X?aٚ" L#-^5acR|;+A(e#*2R)trRdJr墶/]^Ȅfd{]nݏ14&z)1h6_cPi-i>v0d`4Eh;RZ?C2bfV}AY>ζ졑}]_Ӆ"˜,6m)JDChzQLUiN-wլХ²SE#-lQ MZd%7yUXTF.կ)wQ6z/ńޅiTV'Vl$#*.TKD{8:n89lXtA)\s,#V.!}yUƻbV*F2<,"#(̍)cwMWu@hkZJueJ*B#DTҾڣvW/ ߿%!4`,Ҡ\wՒW,nHrh|l>ܷdA9:_bj~ٺkѳu)ҫ‡'#-'&)^Zֻ8(Q̊R{JxF!:fsĝtN3ZH;x° gɵv;dfoȑ(^#Dž8cL@}'2_۝^E`dn$g esZ=]~Hَ x~07UXW)vT9 0D*?V1ښH3uvB㤇Dlq}|\i:t^ϕ`uMS^9<-Npp?',0#+GӔƜ-:Qٙh>A8{ƔL|"=`k\dfF5F ^aw:9dkrlhmqwq{t##*c'ն|z9Ѯak1gd#"O^~:hgh66'x0N EB#*mA8Eܻ&"nOB4ߏ#-?Ugwu `oUȴziiA);փÆm#1SB_:$nkS4}̆j2}<{|tD$)z:}׮|_!7/N7u1J*Bgi;oWWO5}wSV%T4fH*#I96D&7pp=i<$0 1,}>LT0$4ԻSTBQnCCh^VFTOv8a%c? ^ާ&.xKhG?i #28tzPs~+H08L}S#7E"/5`"1FJUzVL'v}8"<*)Ϗ`}+mnΛr<צk8S]柭q:iӼ*n(I .۵3"lwl;^S,Fg?9}R<ž\KEԒμ/H"")C m쪤<=ۘFO#^ hcmuU6G+A;Efe;\CYB2#*t4fRDb)\:'?֏MHe(+vtL영:]ƶ& :F[mݙh&-#-cz~<˩nG=S#.oO粗0xKD|!Y5HqA[kvv=D8^;[(/c#~?I ᳏X[c_s c:*!@2,S.\XJ `5zXF|) #-^rUP[7. s#-b7sC\~kWڃw=Iwb8QURfw|P9+*4"ᛉefQ 9&3yM y-_UiNャg הl\Kpp?c¡.}jZ?f.dV#%R_nuJ 4^E^j@mG%t杚F0p'5 #-F0T٧ܠ1Ħηf SʽwlbXa֮tƩ!aܻleC>3<Ҥ.jP \UpCr8]ҋEDžqluƜXȘL4{MGNڸ[$ս֮?ze8T!_lj% 29_R㋫muVFz薙;6{p:.?Z'FcZtw aĭߣ%U?tvsQGMV#*lj9;0#%Ct8FP#+t T.1bUУۚR4CL~-t7~"sUԺދ\g.rQtc1&^.u"%L'}CѷoVjpo' }Q48nqUG_p2Tk5PݥNqh)(R,Qk]R5xݹN"W\uFƬ$%1(|ogF7ē*I%"9JW%:p)pe=OQIo#%'mGN&w>9,Z7w?87(O2'ϥk[_۶N=P+^!TAN1Zhb;{#eJcdٷ=;NΨHf:`-vF~-Ũ#zs_ŧ;n-n:w",rץvơn2PWȰQ,-(8$<ŜUeq>k>bmf\rVFF0K@0럯JVF8W}>26p|{yej>nD1X틞yUT{;EңF-ULȳި"C|20t,(i5#*VG$Z>@WSq]sVTBg1A N zd`, Յ,gڨ skƐPosi#-@^mлIOq1=rӺI7*a#W҃Uz+fy޿-/wWL1ִ KL' ZZ#*#*'ns'ҠKbC(:Q(H* 'R#*<$Fʁ/U(K3!ßxsl.|IWONcnA0 h#%Ԇ(4=9 `(e􁿍5 ML_f-]3_QX:8K!Ӳu:b-,^atoO,] طM(W^uktպ/ '=Nt=`ZhVAG,A\m:I9inߺ,٢Sr9Tak 9Z_>! 4q=2 L:c&8SmEj9+r9jN@RfV9[\((vP#%6=v.8*Y`D,U GE櫜OжL5Rz#%7ce#3N<_0"?#*<ҿq"/t0)e = ^OeG&FO,*I^\x#%xn 0No$BD=ʽt@rܤf8xxWUQH]Hm#-8G$)~nqMH6mx{5y}~ꎟ^ BowD{Ju}u;xurХ6Cf׹ E@#% $e~B%l_Q2tX#a͙hzn?r/ѤGq#%/8?[ͫsrf!L7Ȣ)>~7i#-vQ}>B":]wϯH=PY :ng)=~9;"aɿI{a܏v%]5^&0(=?ƚG.#% h:`L#%7; V^|PFlO*31*bGoCdt&~0ԲlmS,V_7$&Hܾfse{:UuDZAeT]?<`mFc<ṅgoڦћ;Kv(-EYS:CkY><}CaFp:=?H lk6"/O怳sޡȏx`H#*~|ɀ`i~k&f2lETz|<].?/v#* -G8?j>;32 I[GS}1'1tk-rmX #*aa%zoJ&(7qTX$}ツgCD #*]pAb*t#*?rdI|wzZ!}gwJ2s#*Vsb S.k㧨e[}x뷩+S#%!;F4LwP~S)}o{zsN5^1t?cB'$;DZ8&#*{ZLA_xӎ ?!TڕTF,j8F's2.;FsRI}pc紳*.7%^tB:z73|ФFQjޮJH%GNV|cۡYq˛o}c+<([AOT_C\M#*x j.l#*#*l<2xe~߻f57A!_x?cc+kl70,Ox(E&IXVg7C#*uXԧFB$#*1_2"?a8k$ic!Q2˻w͋-*",1Par郭cHGGT>n%3U6EwTO6Ƙڱᝑzl_o`8hx&#-,d^yz#*/7f`Y#-h=#%j#*q!, 1 ( `2Sm[~ǿ/ms>[U)1Jh?-νyXj\gRZPuʋ0BeBv(3 ޫ]1 &{2լ);wc1:s2”n*D#G85A١tWcP42j,e 4hVKD"e͜=Iȼ]7>JYbSQRp#- Ź8zN?Thsꆄ4#*Pll;f2,I,؇F]0\bPVf]K]\K*n0TtX^=ݢ)HH╎ãobѣU$2 s4z;%O8b|{q&=t8&ab#*poc aў~_B"B)=ֳU1\(t=5Af#%O裃{k .m@BeuшDwk2wwZx4st͹hBlN"eoWǕii4&j"#*TVQ`f{pLM LA`i#%{@([7ϟq& aD$l;)QII2Pu½zȃ^JZp54?5.Ql.6Lj/77j^$$?rsK}E#-*2-¯2uAO7&#(@@P{hw;tZ2 wHXR'Ӽ^RLM#-c*ɵsl؅E.y#-?3cE . 3^~\Y{1~١~["9Mb.hgUbg)pK1K%CqLS`t%o1z%օhHԱ4 a)c#-|G x#%CEirıł6PÐ&$Co#6/.:_~H㶺 _4bW-_y^{ 6ƙbњ#- 2%Y2jb=@wU,hY8tH#-l *B#%YFk}+O۩lPVz삗hŊFi^u2tSX.#mH!U#ԀW#%R፩`0!0Nͳ?Um@^y"~IǽޛkTLϲCEn+^ͅ78<=#-*r^m#*C X.Y/:6'wny;5L[^kS"dhK-]Ta?[;|-?> j ްHwlߢ7  cmx,y>s4Qvv31h7f坸8 t0 pAd@Y"tzpV)U1#%l]N)].C=tچ@}?GU%X*;`5b"Rp;pCǍ`yQZ(A+#%Zı`q38$>^?'d"!=abGEk R7ʷܾƟ":.Mm#*2! Gyנ\hJ#*G:P#*u8.,A,;(O4#-ѸZ1r>!TNV&9Wt#%AߌfjQ\D3m˓*DbdPiOI_n[E8>׶UN2~$#-ԘxQSOv(O ^` !xK>ي^~7^^gw@#%OuZ7=;yeCi7kMͦK:\(6bZ*U=|}ͽלkFěQ[nmͶ鶚#-DP@K*5th,~ݣiւͪi wR刴X=GG #*|hh+ۋ #hG?_̽+Cͯ y8T9i|2>0PI8\z24W)A3+<;d<+Dsq_rx eyvӫP |#*/۵+,7=u]:}o<-g_\~ӳٴYcؾdX8 #$y˰otIKw[̀xJ!cfRF,5F;JS?O}9a.Gc@#-\QJ(bv 9.uUԕ,-_AGg(ԛ>4P](J@J]˿ۡ\1p#-|GĨǭ;7$JKݻzT(#=NS6hEN3FZj([nr#*s|K#*Mð[W>D&)0,}#%dmv ,PY^4snUp5t?e`ѩW)">OŽy)#%Sigd(@̌m_.eAU#*d(@bfF2~-CpMK05`[efQ(G ==[?s8kVB+珃7X30~vF(,>_*8 jPOjCMHy5g„P!j1T,jq<_#%*0QM72(8{5FX%2C3RbaQ!?Ki#*ݝ($*Rh!0VJdͭ.*S'"7f|>~ # }_W,u3Zn2&?w= uzú~ԍ_Hw~f iϜ/4>ܯ?2[t8L0u+9c#\&W͢B'_$OggM w'Mw-˼rή6||$lu#*05f/sDcsU e8*ak#P#-X?i7 LCQCab/<|peh&v';3 ,(ɦ^ *Ja:P>0L?FݍnC2>%28FsS_ܢB*Cy+e{A[eX,W[NԝzE5$Ihց5#Jn '[OAaCxH^^J'i#*1 ۩ TQ_#%igG#<,,$p_KCI%._6X_̈·ث8P(`7IP AS$!9%.l_Ǟai`hOSA:Aʹh D(Q@mJKb#%R~J1A@QDHx3ˮ糫S7Q;yuU:Tbk,<~9-`]F,ƒEܹk޶EoOw߰oK-y^yጱp`?s|MvPdž&<k}қȴuW?Ûۯӣ?)^˖zOtyM #%ݾ}OTV=:-t$O_ @2O߽E{t;/>~O㊛$%CyY1[3:^mYs}*tϯOlQƌ4u~skdt9U[_F׳Dnc[zwJwF.w;WZ|ch㟵p묲&#*JNoݕ4lS8|9~1.`sbys֮i[xٞ ww=!/2cTտ<Ͷ(Ga2|lNᯛ?Vbo~ߒ3z^P?+Wv=882m!A~:^9(`:l%rkͳgc\3ЯMt{W/~U=~ENu#%&@x+϶3gU9g}'?O~Nݣend)W7 ~9yg74?!(=ࢄ`s.r BPrxgcͫT*I&BcG#z=;o#%EQ:HW/(A#-/1HLg׭׿{:To'9|OZO.c3kc瞧;1Or"ճeoײ9 R'/{w:,p>]=aem)Gр#L8|Ed#-}[>q~ߴRnCW<9U}e|`;D|;mjwsZu.ʾv..[e+ow2/&_[❴}`YBA<;OTc㘾b7g:GSk`{E=$fw ɑ+|j/sTJ0C$3$KI? EbCd_W]tM+я#*3ٗ_ h ]֎ iP۔#*/HvqIlmLEo<́\I,t9KP)ѷ=?0M;aa4't0x-cs4P?#`%Z҈牓F\e`ӕ&H,7|g"wrEX{Z,8'CNJt]_3T*}u)8:I>_!(FMtr϶]]5ο _ҤrvNy&L,|a.vG~H#&/0q|U:mee;Uǟ-k6W^Of/0G8uE]8~q$+w?ۢϯ/٢G`D!VDžI\:ʶUdvV{#\s h8D ܂$: ǟ?uz%<HYE6*뎿g@VB:Nȓyu{zsZ\yz/u#-ԷSOɽF.nmWsOvV~S4[% Ey_XR>ސ/yqxq{۝6V*j"2J)k !etu^y)dFTXbQXCvY͕=9DcDQQ" \YJg>0s1-RDalZ-A#-2AnI&`R1nB#-)F 6`A4 {Mcm#dL00ꨴq23HZ7KkJXZkưym97FPPRDPSQ!4}ZěEs"@Pg4U]FFZF1Vtf |AI$ *Ztz z]z'z>ewruFPV/o(P:r}i{F[Nkׇ=prx$eEKwbofH|h \=ɬ[ 5XxH9~]5}G[vlьY7#"= >+#*P^_S]y$$%#-ק#*nhab;>B#`_\֌A#-́A%=ETnOu6!Fj U]7hFXv%e Q??gðh% աͽZv5یmY%5fƤ͠B%2LKDhkGL 7CN]d;u`.C(MTq^ }a{{uт.b_y׮4Q'A-[~WE;p3D8)!\,XK{}!R@!#-Tv<=/9#%:t0gjH#Wb C,ƛ x_ge703*?4`.ss#*h'~Q]ՇJtzA35DFXYm1bҪ~ hi ^1nEtH7^ZQ"TO#-Ԉ$dHm745>CF=ۼ1m@{b(oN*y4hE5 #-.01.79t;q_Glf" iHۍˆmDC<޻}r|zEj x*U P^Ȭ:#- aΰ* -+Agc@ <{{ǾKQσ\Ɗ]uq׼PqcX0 Fymuن-2xt[dXHQ"qVN#BDcMxQe8ֻo3f`qM%Z8& eXPXJe@0ߝ+#%hg~a8Lf%ӜsE2.lm8V62ءVKςj ]d#ttp@Vi%v mb'!P7ŁPӌ+grX̑FGFP2-c+P)2H`c'22&;v)b#;w:c6s5n<-ͭops#4V~4C"?ieV&Q߽lCmUo[ѷٟn>ƌ0ːz U![iKxJsQ|n5]yͶ1q}3Q&䊕uKq{Z$-Lcwd; .gh#i^x{5lfƢb$Mf2Pgb>5ejl&؅ (C~6?سVbq1f;Ģ2lf&V866-k<3z! 1I(D⌄Fkąxv#*poq6㍼Pá$9QÿUCF#-~aCۜM:౾S(;e2ם15WhM~ZԺx9VUV*Q)ǎ*;c`omFqN ! /v獦\IAƆQ#-:26#*];C⍶볺o1,QG7dR닌`'AXnZkZ:1MWG̜ٲ4rb<@.6bscdNf)LkBÐf$ RW[`XVC6n]H'mjM 0y_gcbkAߦu6Ir W 7s~t8trK9S!mD;[iG  rqB17מm[^J"N'"1$@XdL)iSnjm3ί\.0*I-7D:b"c-6yc4N*!NmHY{X>[\˿:owۚ]h#*[V8L4?I#*|qhPpjPRkPUD/aXO I4MgW,_Aֺ-`O0mB&坹`7R>5(|>Jʍ2XM,s Box7^|Y#Π.&\0ۥI&SINWd;=/fRͲcR\sk[EOt& {M鑨E?`y-vvfYcjP޴#*F#Eweyy1yK^K/+#-֛a%1 B#&(>C9ы0$-Ftǃ(LS4ﴡͨpf YPAه3TtWÿVnv{#jO':~!4 *dt{Bw~mP1bYcN=9M/PH '0>"<#%YΏ7b+rlmvk3wA~LkI/1&X^P&D3$,;.:#ГW;ɯ`zdTlQ݇b:΄aM:wfMt z6#v(|_e ȡ]jR5Z9lTk$Zzd%#*M?;K\382֥LsM ' I+ %ܻGRd=^Y1$ yA#Gi@'.s' 彧XOm-&$sl()4 &<(>eXuaz> L:- @~p^Dqן^Q&Onfʙ`4S|  h]Zg8dkژ{lI#IhEn{zvX>\x`71ߔŃ6Q1F0h\%B[iӮO_Wǁֹ#*y$[#Ꮌnths2x|XoZf ꎲ)m|3 LJvrrOGo$ܻx)kbeA=zn#-gyO{)f1r!TgqvT\diVd>ϧ|F沆EDx>VAE,dDQhtsc%[R f{3*Ak٨_:tQm|(xkK|u}uJŠBӔ~1U$BO3:_D혗ߎI#-Cռ2MV^:|S:0jx#o~ /+/gq1$7jScSLkYsZۤ9J_zIۢ͟ 8<ޜSAͽai;fF/H})S⟇~~#>KGw)[k"Qzʧ(Xy}&r~տsnG?F(3R+qnu-Nϱd,mtӷۤy#YE M‹Q+`\zq;U><)H戧)|[Pf|fNԭaaݓ wldz `TQGdyL7_q oF9#|c/="4WG(lV3"idG#o9i ),SyUy6c}H|%x<'#-:%[nmozk FG!r85mEn>)pCy9-b$LȂ߯ǭz! ]kДơإؙRĚVϓ7Zln5`U,- 0x0^W،C#*? dX?mBM#%R3. s'ʲām^b*hR5Q GQ]ucd:FNx*=$5UgOtV-ez)mCtMѝٺVݖZC#-& s;UHVRtaE}Vb#*Wذ+E_2TEkjpU:'20kѮMLi>繢 wd~N2 {C(%U1gXn-ssܕ;X]V8AmV#-y#*.8p82v9\l}|l1kYJx8X^sFw|smFK)! @c6V)Qn%l%SNΖ}/eppy(s->ӞkdZHm`.ql ޮ/![cnB>mtdmzfSshxj~ueqtk $ƾ6\uz̹&jioPۯ Z6A4I]x%ֶ/Ġ>,Ӈ\q #-3u nTgvbb'[s΅d&gV6=<yZ/rftmyi-jYt:(Һ)9GUM )'8p9=DR4)vBm%*gu#-]QЋĕ.լ)tlvIޢ-Κκm#-m2 U֍PsF婱3{N,͗1ڶ?Y#\>WM}63t}$11Bws#*'sXo7hbeuj2OM#`F\ `8X%lw7յ-QdYpQGꃅte].*~fTxx] 75X),o:}4a]{19q{}*UdfYZK4`'UV7USDyHsl/e*6;VYfeKy3"d=C#*Y^}|sda? r}MVݳ;`Dk岏m+T Q[/=7O~Ϫ\Ҭf#*#*P Rl(TEE&XǎUW_:#[ se\f8pj]sJU`HQdF#*jL[al@}tY_ XFۄ۰Z\.5,IW{VG)څ"$u‰++⭴'d-d- rcU^͑#*M˃Jj [9阒[J4|mZk%[v-\)Et~:\(+{]Y"];34?Tzv x5R"H>o/,Ud28#*.aͿX5 L=ljb#*.}/yw9d`YVPn6S\bѤ=ЬM;&0m9ѪzZC1N+g#*#E-_+g~O?_Ń~OY'75*=fL~xV-h#-iLQ*Ra ٨Qau8',V @2co-!%gX7h1 UEi’7ntq͇5KV#*n*xs56B(HT{z+O[yx%$[4w.UG$~X/Xss?'i9/15BK`ꬄ,ij{k7f9ӫrhʅÏ:/f//xN;TǯOmuW<ߍ3+#-w)̴6)0'Ez"\,z4⃞14ZFH) E5+ct,jz]77Mt0äBA:'[J!:B`-uc {L NQľ#-ʦъjWy 6KJÈG'2^4ߓB¦N#*NAS;s=CHH\I7Q1QWV窾7/zͶ><7o׈|BeRglZٶ.oɤXIb)s9c-mJɖ,Μ6=`DŽr]x{ZJ~r$$o!j{+#*@%i#-:_ tӏ""LtZW#*0TuB4G6N:Rv0<#-fygoK#-  i IȧN6s%Ηڮso5=ٷP9mĽ~Q#%e(۟1dSz 0{}YSY"%Pʡ4H^ вP i!~6ql%b= ] uPDժdV ttکY#*\/@v0ZqWPrY$5ƒx*}BepUe00݋nt]4(]4uZ6 պh7WBFZߝ(r}\Elt sIޟjtH[~7l#7I2]_{kB+&}trX,#-1C͟jISe~i{W{hdWk 8D e5}8۷`2Yok?;x.Y轵1]|Xʓ<+eSvpbr޿}[k]'湚kGL,R<{[yt_h9S;G8ؒۗ5Eqpyszg7hAn؆Uض#*W~-dvsw#%QglcrgzkK lwn]鯏"Bdp#*bu<~k1qO7)*#Sg7_ĉ:rW*z@WysA/q=nBhtRߌM~\s $q]C&v>NC"JHr lx.R$ڸGE>Vzקkj3pV>JH\>3oy}'nuP+1ѮS|j-dx~]J]bKI{e*Hړluէ@br2"Z"@46p+b@}w}Dšt"򐰑k!{mD2.%H/<{xOW#-$ۺ驕]EH/$AaXKxڻN5qBmo4OZaQIkg@2x_9/-ˡ{ >,|ji"r!~?]Y%zfʭգ>ʤ(-Jnw;mDQGoz~z5Zw ;! fR@=ğii8cm3(kl)ֵn%bRf%ER1#3$ᢜ)T;vkm† #*dEʪ"al($8&JLm~#*ҵc'K Q@T0RrM(e?v0~qٶ,- : D C(]!A6˳6^HH [m,Z"OǮc甩ĜTp*{~P#-9d7ĵB*@!&`9lVR$9>Umx3-?ף2Nr^9P#sݘ\%k1EP%^lkaK,M%%$%X^)Js 'qÚˋFR8BB#-\E&e.\ګodC0`P#- 6Dp7E]X{lmc#*[9'rXԫy*)$-}Xu/f2<͸#%m~)TH)aX'!⢮A4 G)z贁*U'N3gVS1E9&{~ȸZ*:6;EܐGpWgJP\0F$àkJz]FS6< L7/>ãcVB0ka }>A͌"$&zǭol]m穉;yanjX#- a#-QĂ??0lu8'.E8pL/Ls&sHvDs:W&"ݥL0$ݾTڤP[EFiV#-nei#*#%Sv FT,vH&T93jIȀ#N.rkZv=taDl3Z$P#*mT(sݰ=% b(P&B:߸turk[TeqXÑ@:rݑup7 #^IID߱0#*#*P\pYё*tMTћU%=hPYb|:k5T%JB#-Q ť+vNݫ<3)VT~9sker'PFTӏwzf#[5Rgi~4F߲z%P#CrMe=ֽz=l0dVA>;bϰ*P< GDsx2r:ȚJ 'ݰݙC U\V?wo>7!)w9?3K>^p$֯iM1Ke5j)Q9(d.@P,: a!f*&PC#}K#%[h00p A 0P)`?\eDSaIc"*H%#҂PҥvoGl!i@TMK`K%LmJYHBn|D3!A,PpMz'Ij]à HX'u* byy2;76l.Co=ho.cW#*Tsν9(%0Yɖw"!A EևXgQ&ޢ{{A\9gEpH 66Kmҹ$tpV"m9Hj`PF0PR(V npm"&w&$m9zE贈Ip)\uURp!eҡ`|-7JqQobabIuI\4C'U&އdGvaOqT%1uĖxì쮇n.jm5M㪲Ӻ/1c{G4/382zۭd! h_#%6uHC 82{ɸıX%hɢA0L*Y3%1cy/}jF`UUFTF?,狼 滍h#*7X&)wD5ŕDX"@6@$EPB(SY4f Ϸ\#*vZD1TNF#kg҇MG#-]ЛD\i*HkNxhW{ "#HDQ,&̒T,J3鲎#-6 (nC}ʛYIƹ"5a29O[Bzw3ޘ0 m4#23xXb+NlS#%;K"qJݕ[*V[+Xվlmkkf0 H0Ll'dD#_IzF.MF*(Qj6x"c+Z<:~p-F'cEAܛφe|8ȅ3p+4 /)I YIdX#%G@lpCoYlkjq02/iᢅ9;4hCpjQ$RJK_#-#-LƕEWb"OvfX@{lε|MnVMcmݫ{Ҷׯ_bZB C$LGۗГ|}vNޠw Ť*^UɵO%!7\/{~ymLQ5U(xQHPUzŃD#-) XQiyyUҒTCs#-`:wEqO' kz5+L9 gT6#48CNhNn}jqAg6ОO_UI(HdL릩1d^#-7z#L@8Ѱ-dgwӊyყ=t0YK7K:9kŘ$ 8#*tfFE r5ӟͺq 2r"n捙*)#-VdM"hY9J#%1AV ?(mT|84䏬M @m3F2YQbԇzB\4Qʫ#-aEl 5{N\IX(%#-&2J#*q]69`((ӟ3vwW,Fq';cSK)EwWG瑔|o-lo>mggqQnG<@{40SΩFtUt}=:$JjhJiAKY3$6!PxQ6Mfz#YA#*c4|KsϿ'btC|S|}zwdOz΄ڬ\4Qw>i- /1Ɗ8)AA,#"81B]@MuhzӪew{fm4sh/lq{.6]^CO+FǼ&`gFibL\ |X-fw!׻7B(zmt(ڄ.;}T0s3XfX%߼02NdHRA`h4g#4#EP[$<,gRqaw_@{IHm#*ԯvrl;hHP1!|64ˊ)%#-!O·sCSJ wEצ-QX"ƖKQ.1 X~Bڸ䥑Eb0#-UCh#-v~^A~N}it lϬtSgUJVzܥ#-@mMl(P$v枲!2CTxOnP39z0Qv:heCvw[L; !}O76jfl&&Scw[{m鍯4inRLdK;n}#*6 7FIt5#%@Lxp㥽#*F&ǶmK2G9n:y@4C^4=,RQUsɻ#-U)ա!ޖNagW#*r徻(A:ꎜoLIW8 J_ù]8&r1vgĤKO~<'̡$e7ӻ;c5vkP1.vwFGuИCdPğP#**V{qrI=p`҇b}6l#%d#%{,P)qEJAi(⧘@ M7H&iϨz~|>%9|L<%Mımf_>$}QI3aK3#%Onr^?Ŧ/(!laH*2AH@^P1/~ `qM$Y}.bKaQՅ!Z#-Qr1ל@7=#*?X?mxYn8 $0 _?l)ܳ*!4%dkc9Ʋޭt-r"1|QBxV$G}yeyh0@ /Ylf1;- #JDOIc|1m7BJ#3T7=z)OS(9x. bBMY6-Gʯ^vnPy3c&?g'a6OYJ2ilHS;D!V ;>Bg0 }]Q@tj٩AQß^무Ka=wz1}i%;S2\T`m(Wl g+5W5:?ko 7 &z<"z$4(CÙb#* Gov}֟*-/V?:~M+nHWc dB'`!(~<.+:dӭ,m$WPD&d\~/OD8&إBE&?:sUWIkV DE NZV@L}rpubmg^1̉>&#-n*H<\9h^=#*Ӹxj(1.*bObq1ǟ!#-Ųbm{OZG㿣-FC]ByLJHW:оJ,߀r&0$A ax._C)=<7)綌Ǫg|e!׸?^V-qQ<wf 䁣(c;YBGHG#*4W5<>Rj ahr{T@#%` __#%4\w疔à0%k1h=>>|t a>93{pӸmxg~qRh>>jNm" #% %h -ApZQ}>H|'@ݻ]: "#)4B:#6߇ҁ$ʱ`u깷ݐ<N2`xȞj+^rh;b9QAM[?%c7\WF{T6/\C4a:>&v>t>W נ9#%ciYi1g6׳iJJd 5n3u}4.Zxf#!C=;]l+Q#% uuA'z?#՞feӳWO%).Axs:#*:zo#%A{U 6ś#%Q:#%낃:Pc\0]\X2ؠ#%@=x#*l?^]9i82 eTV?1eޚvsATTȚtw `#-O0#%KAޮy}\%$P>6~vSr`ԢzyK]_?2h?}9FED+1u8ZGT3:ɓƥk?ZG|Uqws!IO(i/#-= qbxw|Uy'uI&^zF+z6^>褑掗.?_{Ӣ՜\ofQ} wZk8Bi{)5`h ,+;%d!&S"*ޙ;n4mFTGm6{\)@vqyf[hq}da'RڬăT0rz:ier}c4km8^yz#*TMbUy`[hX£2D|rgGasch+bXF#%)N#%(W#*4ak x8xm+bC,[sfVA5#eNbx!{|]SBQPT%. ,.Wh#-MJ&[, /.tCAc^gqΗuɤH"bw+f̹ ww#-{o=9t;:3y=X3;h(ɉ_f8\[Ek*λ\Ꞡx?lf}T|Lz䧈SWN~  c{2-a#%q!(OdE#-Ǖx#*}7 V|<}[~paNꇦq]Bՠ/8kU,sV$1M!#-5SzgU$J ACxmOj)QjRND:e9,j؅0.ӕ_bGoN=9OP(5(I~'r-vQsZb!|dJP3r)0i6UN_DCNۼ͌>~1+b68ߍt[i(@$IyNe.hEN t[PJܜsJPPbT;gJQm(,!ɘΛӘy?s 𒋗nE[12BL91ATd]f|^s'M [e6:D>8ZbX=;~l0zOɢ;ip5ɧiޝM&#Hq& ICo/|JLJ%Hʔ2 IȐe<:r%.ȩ=U̒úZ,\4G[+HAUdӥX@} j,dEd|`O9|Z1r)rMأOK;)`g0hŇ(U7tq~{_ۏ][\u>YCgTk2z;jwtrm*e}(bq|j'Y:d=g7+8cӎ?oP?w bDfN`4]>:*C_*z(VtAYHE6[jj9h. lc3~>,#-NjBSwBX7Đܭq~߮:F]z"pgTw+e>e>0ִ#-HvOԈ5hd!^ zrm#%H$N"ªK\#-<8?KxTP@)0qlPJD% J}@䪛s#%1)b&[_*Q:)$/Kyi6+vS7sgd-Jp8W]| z}x8җwKނE~xeKHI:NQ}`j]&6hz!C-n:(Ap\,#xwgX@O,%pRUWSRV-CIGP=i6^BHvΡVis܅ fYa咍Y IBQL6+ bOR.&{yu!;u,\x|!3RzԁeIsfi \;pĸ"@ A T|`xJ"da#%RBL{Ta.TxYkuS#*^9y2ᄣ*R\,Y XAbsq^sWPnf[HKA#I YolvQ\{?9MDZ.z>"*/#-0#%~z`υ՟_TNloc2QE{O`=<jA p 9ÒqȤX".ZCrgvqE_)IM|^օDP?UTҫNz73G#*5KY3rǀG4"(b"`jWS;u5o= 'ПΚ:۽Ǐ7OϨnW>s;I ˨^#0Wj<"O8-3JraR$#-KQA9+Wځ#-6H.^}Q$T"~O>skϋ#-0>#-#-o%i#3\/?JPlIO zeW$? in) _`9ʌH7N^\kt#%P`H#*U< D>mR1+7I UvjSA(C8ԞVK½צ9~zDsmr)DY[@A>8똿8 ,=lJg_#%UYDA 88K?3( ԡJ #%N UEF[̃8) D $`})yXY:@e63sD5K' 8x_)=(({;P'+wV_?|f@,]Ts,O > dRkЪkRgZ[qմ)F4Us3\YA}9PpM3l=نSq\%OI5] #(G@]AtFWS&n0;Cc(Jw>o=qxk6nӪi>KJ#%To}#`5M8_PM\ǭYuwn@sˏ6l~DNPVmH!|]74 R8T~_tw- #*rpaVw!աv~#- 0+c~#*@Zxǜa’Of<Z.?N#x2%#n:g] 5|[OT`ψDKP%y)UAD씁2L82Zi+ :8y] =\`zN}ˡ9)hޢ9ХtGewIzYkl:LҤ/nM[#*)M:gAP _r}:-7,+B;]!il4z>WBG;3ۿd[s[A/{ 隱≙6\{-Ksz\'qFndn V,~܉bwzxv-7e*ٹL 7m,ҍR^/뗛ouǨsoG"DC#-"QIۆa`8@!6[zH<3Ǩ¶28e`2!=}d sJomJ)a@9#*n?%}埣_+&=O oR>H8}ggZvK%LtۙWSP!c_6I*<$[#*zFz=/ PK#-'}B5&v}*W$#%NwI<^-on]I7#~3+]K{#R Lӥt/xPCTQ4U.$a LKz5j`$&!R [6x唄0 4-#%t_OA{lA2aj:;%㖣C Wv7gG0iE$iUHEe.CEQHJׇ;% GL!`{~eg@fѣ7a#b'iG+W Vj3D ijF?ģtx."Qsًs %(teFzX#*kqcm3=;K}qg 3'jh۳i9^D6{PSS&ڎPOt:qz¶kT#*,3!s(PiP+37oWaSp0"09^%&A2GOI0z SꍲٯkY,oŝѲZf68 =5DY=YPRpru06fڹ$H__!>W$RvmOW_|C_}c"UFsPhrS.W*y ;{!Z*oaQBh?D_3aͳGC٠l!i \DX#*"_/VϡT{ p vNBkc6ʲR#-LǺ{a:ha8+1 [DWw΂{GC;SLC#*83d2%֋PW|qﲈ-ضshCEj"Nk#-: ptL\mCFتs7 ϯLl#*hX60!*m V[.q`vŬ6ܶd 5-{EE=Ϣa}U#-Է\oLWODgWd zmCA|;&Bʲg(9ǑA|(D.LKkn|ʸ%6?իg}٠^GBvܿ:P(>#-PK->VJتiHcJdDtݔ(8'D@`{~AwZ-xOV9f~^^PCghӉNg㻷sIP۴s;_oW~R; >MYT*Bs)S0e(}-|ГxP", zrJ*bS%԰W?G]6%#%j#%4Іgy{q>]ߡaNMpJG G1eӵ__TA3Ciܗ ;]ݼx4/y,/UN/,!nP=`Wx.uk^nmþf^"9 #%)Xey~=?GWrkmd#*P6}unT`}ۡLCPh4;!m%7itKKP}kiI{C.^/C#`A_.֪-X Nx8JH#%#*BCi#*Naj+]XC۲4)<!f=%=>Azw`s^'_oܶOJ;j0#[GumȨ7RYdł#-0r\siJ0!dQC;hCNㆢͩ8x5&±;&vyZcXK<BEZuO}{|VC=BUނx͉]s7,2W Op>=Пc~9ـH_6Wa$Uk_pv*ZeTr:F̛Vϭ;[6;٭oۘh`ƚZ#*H)OϹ940{>*6@⚊@l}nG. ɑ:0XȶQ_r L 4!GX33_ݣ};e! B;t8A/<,$'i=gǠCO[r_)nQTU0P0v;.u3?pt.Y?w,zc VK`+1n֜tgx-$e9UU5>Ri 9>)yrl#gLר;:`K-G CrT۱#*ՂKjm}?X} ?q~GNt@K}xgi#-%X-Yu>lCݭ@/>fMM7iz齭/lh+2ޓZl8|??t b{BX/81a:C[ʵ= @o*-^ՍQhqC.k,hs`#% N!&G7G&C@]Ms`C!AtCw}#*4M9fة1s9@ eKQ}! d:5#%jO=fq/ʃJTgy$ D 7.$A)8M#%Ó_F<tXfUXSQ#-3d6!}员i uM^3*G@@C`*d~O~8@#*\?%$LT+%]=zI)2۶ lc`?Nd+ z,e3D6FOZ*r#*>r[CTF2JD4YxI$f)1S.5%fjY镘G^20txyCCZފin2#*ʂReX2L]j-[ko`#%cAP~_jrX7:!_#&wh)E7ɴ87 ^fİx1)@)2>7Ѯaw4jN+ļNc!J3@Z#-(had O2!#;<=l&X]}w#%Hj Q (Ň鷎89#% O?7% 쒺K{xy~}LJf1WA,hh_qcȹg>R{s-6shpȡD?rL"4o~ô>#*ARc'߿?AC<#)@#*zLIF`E=|:kzC{#*9Vxx)?ݻzVN}"Ȥd |s3#%@O@&=nx''ajo8vQO>޲?yd+'QLȟ9^ҳU65h|CZ }m lئjI'kU@l#*#%Y +R)'ڊvhVGg(k#-KNjh6aӿ1OA#-8W*mIX&p!;[X_3c$e#C{΀v0r`9Qjss2(0d$al;~F#*pD51QGKp2nD,pKU4pṬ*蘑)Q6i43]ԦӺIF)B;4LJ0ZmWRo}}"Cٻs,C#- [lϱ:pn\HP΢=%V XeRkӠ#%wg=wC>#%Ì@<{Kh )SjEy|>_}~̾aR7Z'K{$bTQRP#*(j68`:m _ \*TU!*ξ;v|SN(?&}D)%#*m!q$xCoP%!i>/ҝZ/Fn≥ʵ1#-57y'3?͚.8㺔J;Dt_&ZWzz,a/TJK,#-}:X,,X!*B/1tZ-o8YBu{Cz?wVD!V7r 7"1.?4bTej#%#*Xᅥ f`~ kA*n#%|#-5b!! ɀ +$T#U Dt] !9#%tMCL?}yn?C?aȚ >?:suX+Abk !:@@#%k)$SS%;(l,K%'Yw#Af R!֝[ْ!Ҭ_3J^筫î6!FFo(*+#* +-מeЃe P1?s`{?W۟IzA}O0>{#-zLg6;R9w7?fSd?A6;REF#%P .d֔p:E(ҎJXZO%/ z%^<ݼ#%Q8vOAxEiy)]'fr0Yø3qC ӊCGa=#%y:+Fy'ukۚ. 4l-*EQK'ov /̤ė=đ?`ipQ޲T?' z*zt,m'osR_$I B-312a/ |=UIv7C3f!@.* ˂^B#*tUO&e2HQ 2 @6RqMp$"=P:ʒ3xvڏ0<&;:vuDE$!?L> >OoW#\iO uǀ,+I99|AYAIgs=Hc@d1E6hn0$|}Y\E P d3##~e.24z;qCQB"JUZ*18T)jr=E +;TiX QXhM&aIӅ$$"׻e E JIp}n40ǯKe,%ZE),'xX,xǨ<#*#%~б~ y=#%w^ށl}KET‚gӞJuOw`^i#$v#%fv vo99$%H7ژHI"ub@`ޛ[G=PU#-&'a #%(BՉqfx4E8'`f,ђdȏ9YO()Ax$lI*CC2%(/^uɇl+/5浦q64cwpΠzU*dqEtOQiNK֡l8t;Kc;ˏf󁌞zHn6rVJaM#%8&BAu˪pYv3Ӯ P ʀq9pc9W7i;3@iCS`:)i8jK$D`s8^=z(ws'Zz ]ȐJʪ%[9g#)vYB<}TZO@vFsѝxTтA'Oj3%r[ (.g(ON 4-`|̡^$PPo}3<@z}}Mg?OzԞ~-\*T=]X&"$$^࣭:U:c -WL4(xDQcXY:;u?6:'<)υ8)n쬦#-Gv@v9}fڎHX!(5$H|#*C0UEɟ,`#:_#%ޛu/IW?϶C #%UEH%QJXVH}F #*۸F#?m#-3  u7lE%mh?W4~4G4Bֆ6k(Po/zU1(~: nx<"4 bL=a^ѧ3B C ."4==g3qFP~1}}GqLն%"!PRxN<<`'"2%57sX|`Z$"X뻻+wޕl(#%cBa7NυqλŽ"EZOQ(4#*تm ]hn6AnfuOŎWWBSA]O_D.?CPY?SCU*9ոS^t67>w!y>J;~S#'Æ碠Ƭo@L\ Hz-.N2_q=5HiP΀t{ɒԛO}AKuV7VBK.B4i0B X  !W}(EvU%ȑ9~߁Bۥk ϴm`X>rs F ҳ#*{zNO\qK_FcyޖyIV DHSh['y۪yKX"K(J#-+5]NxsCڳZ #-#-+Aᩅq#SߡQM!C[1׈0?ff(#-<0>,՛3~W3.%Q:#-[h%n@?`٬\#*"~!VC"yP?O۶,y"{2[W?V-qU+`/C Q̒t:NU+?Ͷ6xׯgUX'c}ǫ邯߇oʊ9ɿX2h۔Es+[ ?&#q#-UA󁌣gomP{t$X| #i@^#?<%nQ!;IaN/#- #*9_G#*SP4T9TXYz%zGW^:iYM~rG7 QK2_c{lAnLL#-#*՛ qJnqRrJNxVtěu'Yq3#*г>Kx7i3Jc;6S/glu#{ֻ3\b#%xiG30h\BPOZCi_3M;;tQ1̸#f?r˷`<0'w1#*h]ݶX@sJxLMvU૔6wozJJbh4=]B 7᙮u9VQ*8Bب=FمR9ߊ] a 7< λI$ #%!|?'~z2#Qf[;H9kX[45+[_SEpS]ֱ^V:ti?UNt3-mU6K2IL,K:S^b,&W­| v&w(Q@ VhDKHI$0,ţ:&f9.9nca_݄zݭjQ)@*@KFDl6mJ!QJ#z"})Buv·w;@po W=7yf\N  'cM>Jk?f\*f>OBb!cdo"XqB6p~#];Y8Lu}c!tǠpÅ" qSo=c8N%a|=RV}y6M{ vl@ t8n1Bۊ3!Kd^6lTV$հX;4 wMH8yzV"Q_O;mrn%0YeH)Y0R!Ny٫(Fz *00a#5R-#sra}Y#ˠF zzf*6H`صI괺0V'\@rDT$bO~OكK< (OaC}Sp>g-Ya` [^di#-u_}^Î_^w¥~"&lZwPOsn!6UX=L 6c@U lHp6Ч~F?m(4,CY*UIWIM:*``8au^CC0#*sˑ8U^;p4a9w83o ip:BsR5#-),ct=ovekr96Y5Pe\`wP#Ҿ,d7@2̢=tb_#-:vo4'io4.W\Ca#Nț !MYٔ˺l0̂D(()p`DRAZ,x@i]8@!b+Qa\Uy#*vKIօ!;8i8Gw]VT"'e)%\ YNpO)ެY#%'Ϸf!Nxr=7[GQ_TFME賷p|ǵ*ODNUT-Qk$F؋+Lm- A+Q ˫&aA@BF+\E,?oif4ENļlGWBBQhЪIl*Iڈ|b-]vmxj7(56=4#%` FΝǰ{;#*U?Sϡc$@4[.s@X6LXr8_ Vڱ␧t$/c|%AIZ8 'qwZkZv!rP^O^~Lb6$?ϰ4p Ǐroʬb^@35#*n1ɰ݄-h]XgQ^Rv1P+\/#pBg+d5?]J#*H%{IAxyQ$ E8lxEl2ft_)z!!{~n0OY<5p0;&h7Zuo*S)tie50HmohFq9-r35T!$BfTjt82rWCͅ2{rLc:#%ؽ4= c+-h#%0[ChlrK.k /hgٸ8e3=fIs0JC>|y㯎d7⅄DI$C ň_ѷ$'336R* JxMjzרQ#%nŠ٨&D.3֝HAd]#b`_޸@K >Anp׈_--qî;-)9DFr('eCh{~&m57=PK$vd+m^10XO+I#*!eaJdMcΝ:w߯<Ǟ2NzTxBB663-{uičv,y0hBan#*JB@ZoS~"SgZƀ,B@"lݬslyeˑe1>LR%rКiEzI#*p&L̜5WHH#*t'I'GS&%,(@,+}:׻KXSrƛ@|pzPTΰa_S=3NP>F.hm"-#-0#*C#*Ͱ.[N^U4Pi;8ФB";CQ(2HC~$ґDrTq8 v2}&;ӹ,HIݧqvQz}7]p&lB:3pM1dN¥ LsdY `5ƭ0kd588H3!Oșa`r83kfsMɮͻ[ˆ 395xXCzj3\Ih}ʀ%Nn_~L DHDf |oRoYI85&Vt |:M}-nfz p#{C"#aCi#*W7ҹBAeeʋiڄ]hǾU_Xm($MπS<{#%4D7W\De_ww+cjV#-Ij`(I/ >јsQ1T&a0.0Xoph%/M͕di07T#X($hݑ&ht@/(ܯYTRIu_wetE2[F'_/m֜n]*x$v_a=Hc!CA?u_S&# R{* ?\Y6;i\#LAh)ZJChaw'<,Z4@,00Gkd$*8#%NIjޚp#*1|Ad+^Qs}v#%ۦyup< bn=U+W-KIfҤ[;P;DTDRA #%$E b0SO0~W}. Q(q#-(f%P]m2.X\` #*#*бyge>k"EJI1oWvzbQA%Qmy.n9\++G$N4B %Z eG:[[+?6HkoܮF !p%#*3,o:"*{2{0/i\;PqB>,@:z{gyib^-8f|ߙ5+a=~bP:)?g_>J'0;<x,SSwZ[x+~_j7AVD}U c%&N(^(m GoݦQOL_TҀrcF3Q#2#|'Ws0C>c)(vV]4#TmB J&phk|VH$-RswTzIkl(2 .pzvuۼ64Q2T]EsNeX5ּntC $Ē6>D9ArP3w9'xAS4A#%UPbMs#%HT"|&<}Lz(4Gw?*Ӊ{4#*o/F2Woo`@ 댋iSn <P:BAHutߒq#-\F>aF(>Z{ŌaHcLFU5s#Y,7vk:.!B)2zDcf6 g'*Tg`#%!`` ]3Jz"!ҳU]?}7;8?z w2/U#-HNWhP+a^z3|W dp11Rz$ DAtA@rI&]8#%zA3d4>&nuzae_K)#*f0#%@d|uxfP8PU֒;PX{1 Rx \0'&Q)8+#-B`蘬,Y֙6PPA܎~D!kq#-FJeK.vxs8f:^6lGnl;o}Bʺ<_fFWȽ()Ѽxʖs97 μgj#*6W)ٱwcSnũڌK`e)[Z5DH#"ob#l.kbz> Nl:}x ,Ly !s7k}٣9! ϖ*CJ#pA۶Ш*RzoէC,K2<*Ax? r~~D#-dôÄ͆fYP`t]wϜ0b7P5EQ$#% EB1D#-or sH:q7?_'wѸ۫uohؖ$F4"Xmk͒g-lkq@77#*7,|yܱ1P4ls#8FȋUR"!>8Vcgr[I iIgp1z@R_#*LAaoށ^u}yp#*9! X*%6N=Lo{nxwC]fmؗa(ꞎ6HDv/gaqyC4T9_GRIjtԍȏ#^d8_ *w߶$;Wj# m6ȦN9{;7Vu $d#-)^GKUM+MVbFlK);rXJ[Q}tR5 #-01FBhJhȅ咗i˹6QKdPHB+ m0d A* 1 H;ȣk#-lؘŜ{lNy!m݊&I@:H"%Uɬ_2>l!$|(@#- =qP$ .Cg]`Qb*Аa}2$Jΰy,&5B#*Ʉka ej oE=߽:8~#%WwlC0k1POT7#Q-ʳ{[馼{FCdpPPT؂4@D@Q*R1j1*dVAJHE #-,մS0#*O#%҄;mgB0I!, sh#*;5o$ξuuL&lll8f[v-У_IrCl⧡_גܙiio|1_"$H տyehgw'`v2OAڌ3#-bYz$VW l7bXO#-H9lLz~Kd*Exl֙0vq*,G(P?]r6d4MXE֊"gьf:JST{З+}:#-jMek-FD'n;:k3հ#-?j^ V%[j;ie.x/n&jټ^5&eҊ}z7et HQTyհIk`k;6u812I!g>#-#*#*\a>pPCi|@`!PU4:AM`&}X4Мmd(oYEu0DzZ'[y3#*Bg #-ZOah! -yyzʽkVFQ L)XhۖInݝ7ߛ@pJ|$)y7a ,P(!PI,ڳm=MȒ䵒~ɹ$lq-`UN=ۉhY*^-S܏C%56rK,Y"\8X,gB& IEU"1PzNki}ܙ;>׬7>}bQ#%<(tʕUI,ɥ/0" ^&T0}zJa;Y36k/E7VKumEӅXH]egHU2"j^d"#%5yR̕82HzN}G x+ԑjt mM =E萍>aDO+L{io&p<#*yR < &D)5EzRCc6rr#*4/ BnJ㱳89g CB)xuvcmka=xfY].2[(hNG}.\@PC>gƉˆW#*e2C OramS@ioUly#9#-)SFR*E(}6yg.0]g[kɚz0^Pf*"$dT&Y)Er0 ]k,l1#*k׿{S8*Aѕy0`-"DzyCr6dՅh0 jO]7VzBXuuS$ŗXhY /zTIq>ΐL vhca7&s{Goώ)>ԞK"kbۼHL|0SJѰx@Ġ6[`ܧ&eQdvjϰc\ϗ|8lJ?2sZ9ߞڥ:[VԵ;"i"C}'k%ȳKBװ&;CKgro7e8`nw^tGѸ#*2(b!Bi'<4%6aH-Tt1G04ѠM#%$4:?)%< #-5Ġct31J#*0 䡿g6{df %@;*G11rP#*lj7oaHIL !\aU6#/` (I .@z[}uk4R}-ZkFZƵs[smUb4.%@B0QMXQ'i#-T0#-#%(QY4{z4k_L$ əLҴ2JRiMQi3P~۩0 TM5(d(֖5۔2kI$S+f2bf0FU1)D;K""aIIe 5A2Pj-*4Q03F2d1Mb&Q4)#-j Fb#*4f,#-M;o6{jq@="> -, 6V"Q[T呡){ŒL7ZSYX`%GNX`I-~e CF7)PF#7! NE#-cN\pYZ^ˎ- *J#:GC[gq:ι_Iny2_'B>#*J1\GA6cFUW\e_3#-'tɲ#-35h6I$AUg^3_ [~n_l|Ntk70ר%3z5RE2 gfsoo=;þZžWZ|HyMs!2jTX ] vM+7.#3,PYn/^!ڪi_+rm-t[m*m6|#%0(7JwvgL}cǎHTFc8--ߣ8g^|4=%򨦦 fcBT}z{N03ͯ#*AAOSM#-8P½WJRt#*8L{0snm_&ɂ2;mLe~Kt+(q5. l6+1*S䇽^RJ vEnu7%4OFOfI Y|FIj5mwN݄o>ZRG0Lq0 nG@#-'l '=FNƭj'}#% +I֐!8RqW,Cu2ce:8AVVR,hBۄnOQdS҂,]>q;;c#*Y5V\0>xɚAwHkٝ2c s4W7x=u3BOF~wXF1](8[Ohe :5% NM`Bb x$D"&dJu6aoY>}c0篩>+[ QΜ$.vވYu|TzR3΀tmVelB7cXڇ3|6'Fv(n%:dJLjT]GK$:;1d9LJnMlɠBek0,##%^N:82%pd"^!\(2CAl(jS }5l7l-K a+a[*ɾU쌦!2(1 ٞ'rT;CCI̕O,K+Thu(v[=M&f#*51LPMYzt$#-&pU Skɕcۜ#*+33vc+Cp͹k({O/ R=:%)d75Tzэ̳5(q.<8跎P8έ)(mWligKd99hXbdhg mƇ3,+Fuꤾ(5`pGE5(n45Uhkc7ь7Ӄ2qY59(4y0:q#*'wgZ! E@{W{=ng|C41zGJwLM!6Dr+xST)P# F"h1TFLh\ҔqpP6.fѤɽCbBM$˕cik#TM9rAByΖRlYt73`p ,(ДgXml.@!lym߮p0&22G6Bz0ݱulJDCst11ʬxnBa &7#ʪpp wMiҌՒ`#*!iX!337a-F, M2x$AP8&#-av3̺Eہ0u23iTp#&wM6e&wUdq[#*;Ma-00CAFGԩ[&hɚVK]m_ͼY$R6@x3;iSp…#JDJ>L:W׶7Uѫ`ϼf1I#%"vC"P!(PJP 0&@0.#%8ȃb>2@ ❲}(=ĭ6dpq}85rh2n(beomdCIbna<\s'M.i4c`md2o݄d`V׈mq. #*::ޠ g|69#G'`{P=9IrbH$cHBխUӍ;[_Zh0EPRsXbgbDLǯB$Ґi#-PMD&({ ln;~aEU* l*#%vc[˛ ?BXS u@]˰xC SjwpA#%$3CH)ˬ9jQ0)0#%xnZzɑp`y?se}6|{/۸9VM' 1%HU#-ջ!#x e Lfk M1ȅ4bޢUJhtpavΑs.7 ӖFiE#*%4xD6[󷗐\b^zo$5MǸ$b-Z+DD6 2Ѩ-c|uhڅh!qh v)o_Lbs#*2wb"kDFI0#% #EV-ރ}W2Qi<&kְE4t/V*4E-E"g)VL"@!۾;#-NGM-eu}M4S50$yةB#*BHPI)vL L*,K@#--JYMn0.!j9Ì&m#*qSP9R'p@R$F"-PAĂFLƴ0wsLw߄TwKJ22ov^_&A> t]A9!R9{)r=h.1-FoREh- nQȚp8cɜEN).$6 cSbY2#5zPg#%QeH)p g#*d.Z¡QY/_C1$@4:"MЀ2~>cQsHk̯es#k'`DQ.Fno[Dda2.>L4a :v}_yMƎk$𹆰.""(oE8a)k[Gjjhql"I8Dd9:Wfv`ǓȧcBsHKV -@B-Aben@Hdհ,39|#*21#%}' Rdǂ.OSFI%]`Sc`T&JH0cVSB#-xuXc5AGԜeք¹òKO-4hwvMKgYYڷ4$ ta(aeB2۫AK-n##-aT"#-`Phf`i Hnq]сדc=A(ՙZ(ިGd3my5$Bљ3+ӊE'M=Ft6+Oka v<`!zd!#-3Ty$Q0LH5[9bE%$BDS4>LGf/RRr>=!8P_P'لӢe8L(LM(/ Uzr i̱UeNTd:cWtn6NI:RUJ4D$)gҁZmP#-v #I#*߹ JYFWBXlF.l @vL#*Nո N:) *H"k#*4Kw=ì ڽF#-#*zMNI{EA@#*-#r,!3`ZHtQ CfIW!T}d$g> #pYlӗ͖|I*/X*|Mi4 OZ0ICȀ@T A#%_?gƺ[ɊN8IXXXs>?d&1qL&CTZeϿyH}{E!dtN+-bD`,.h#%RH$úeiiArg#*CɀQE$J]6-vk4ݮSW6{yMWKmE#-R*fb)6qJ)AX-E#%$A 6cKLKi%-S6ka4R6`"JZʢm%(JHQ)M"jLѰ1ba[(ɉ,#*#*Fڔ#*EJlJdJIT6ڋYв2RcAIJddԳU6j"FRͩ2HZԳY2hҒZSl&H T*ERK{k]6liDA D,%؁mT[Qi Bpy:՞:Ý#DP#*t;[v]q娂#@ =`\唢jdC^o""y8iΒTa#-GnF=-Q$!ǦEk=+1Hbϓ4#-.<}]]^.ڙ-L YU7rRJ*RA,7ɂ|Z͐qw]$a",$аz`sF ,ڶSL ,.v=kJ #%TJTQ[lS0@T)AT'߶5640^+9mEWown(h5q"6kQ8R6q0rD8L;N#%R#%.#%XƪoUr$%I1)VFn)#"#*dN.ryCX/ו՝X1a{.f,/1ƨq!p:~{L=eJSKlֵ#*~f:Oӫn@\xy=}oKo:{ٻƔ=5e=S@[*rYE%"qZ"BY.ʃ/ݻ!ZeF6HF1FsUIcX #UgKF#a)FIʹqbaqV ՑMVp ijFsba#-"0[Kq,TCD.XUTƺ]$ *ZqrrHǭc1cF+ 0Fq;&*6XYJ*#x`]/hbݫ]rH|~ v*K7ݹ}nc)45- #-w|0%mŧ֪žwf.+jHdN܏Xux=ӻ)pM1H##ıTZIL0Uh9;%D(Yzwܰj.FiؒMC21R.oݑ3(z]#-!1A@̥KXڵާ)xݸ$#-JbeK˱]Q@EM:i!(˩]nI܇D䀌˳Caӱk"v11ҹW%x_u ٢;&ekZhՓjP:U2df`h#-D eZr*i4]6rbK#bm~ҭňƔTr(A1V$ hZ|K\#-vX 2ipu&Y B(AKPitΨ &BJ#%p,H-ሪ0Qld5BpĥO?^婰nXG%x$ECU9l#*a쑵ja~opi&,&2_ܺnjMwv"B) JZ#%MݾW`amTk7YDy V#*|='>X=PAC VTm|>',PgVE!@XZ@?E3~X#%H;\ZTt|ƒFHT7goi#**<@H,D#Y#*J}6LףAHw3E:`bɷhOMa݃<@hsOoA@TTi$!Y(c^]~×Ȅ# |!MQM>`s;/"\vz<ȠV6%[N[m]6bEJ@hFŘ#-#% .HMC&]fehajWF#-CxۍfBą_u#u'QXryV!&'(u7$칡ZhNڪJН2ZPQ!>'0*LV~>>\XN^9eP=gBl :MtU&\?xn^c9E3H0\fGVvI11LZ81;QbiLH>#%F9[DAP*h['z^$IhTUGs'#z"F^B6M3w4FEJjh(naj2(a7jn:jp Q򝦛[p5K} lDu!$@CNJuf4pG&in@c#%Dy-! *A m*g{)YTT}Ą Ou~Rdk#*bn(:C #%v.Ja+cEv56<#C#=Τ!'_XZzC]#%\v(|A‑[["ك RRdLŵ5&ƴdkJA&2jS2fJي%jZmek2,EZQM5Yim`PI$bfH_0`QBφtZ"j#-W G)%6ZSmQkkݛWT`6ھ}a ;S'7Q#Qs6(iomi$]ȹJtwPFBD2*4eQaH Y`12O"f.! 'ˁpQۼaS!F@xSt0$)P#%D#*jtCh~#%d{kؕtmW*PDnHƕ=O0bn&@T#%1UC32B*6'ۥL!s.SKff#rr?K B'N$N(izɓ$^Bh#-9ֵ"7x!PA@8-Wc(6`#%E#*ɇ$8;&k#*ji]((w#-3P#m`LӰ*bl.TxQC~Ji"VqE? >h^p̶a4 u #-|m!/ٯ9vo:)yH{9Mf੝?x܇&orהܸܸKAɅ>/LuڵnK0oC*Lk/Xy>U"qޚ WSyyyme%JYu$qrCL*v#-HLM{~0Bϖ&TR9h r=; WdD^1,ea$ `l/;J `] Z|-c/P#*3U2Kd e#-dR c*1Av'cֱ$HLy#%McMTPSΣis2I`pj{gXGxˉDpaE@1ɁvnTQ"Q@qsfbS"==:Xd"waA"a#-(%#*h"! "SBA 8(E z>T. Qv#%~f`]jdO$dG !ETBGU4I^sFlj|َb`61߲m雰P)}{xפm\5&+$l) )koQBsd)!H7T(dV%ȵTV5zJ]6QdP5ĈQT)#DQLEFzZ8`DHbz $mqII2ܨ@xsLK@DKD}E\x6ʆҹrȠmIv4D?y$($4#*q[BqK ]F[Cl &Me֔ je 5VWE[$FBq~#enʼnɛ 7#%&xgD5NmA LF#*iegѝًOםwQFizUUq.Jۚ7=5_ʭ5sxŔ`0KegvsXjp;#*t@Jy,@U)[U-SKo/"P ,Sd&·Ǽ֙=#%#%uEvϼDp7o S-@ۏvxۭG^as !Z{|OD$5Byht9Yn @j8=#-gggT52kӴ?>q6!=n&y'S͵]u^`&ƒbjĈ&=ɶ&K/J5JeQ(XAx!B[.J#*7#-J(H/&!j2+CCU-0 3U;i]<(nm봬nZe1j}!q.% eLL9@kK-m*h`B"ZKɶ!cC^=(Mj+(lYCYy nOD65! I2^ 8kh$SB9XݸSw6CĠ2b[1Ywo_lfs%35I KU8T\TX흀]9 )islnz" B&i4c8p|'D/!|<#- xeR#-@'!yYY+bed5Jk_r+Ob%!HSz`}:crQsw[j8@D#%Y!PCJr9Q,5QEv>jU` ۽l(8<m^I&)CZYya<5L$'#-0{\Y^==Iӎ1+!#%ZQ4$n@u8$#;pޔgBlw7h4 3uHro(:cft#*1%')|eVط>f c}7;Q篑-Wa]m #%G$/F%J" z/v]gPٱJS.Ƿ{Ia4m1SCKbĦ#A12xbpLmfh3oa16mgsM%T*1^t.Y/ρ#*]ɏX;|M!#`„U*278Oxmcl}=)nc}a{D{j;<+wvsG]`m $JBA-^HZ8539Q00G#%0\lT"Ŧ k ab!A1L$AuEηsRݛmñ{4X", ZqMLOvBLZt]*I0nV*Rpڋޟ,)߷߮"#B}LIbUؘ^2#-Y{Z$*mk_t=j\h6#% -@80ޢx#*NP1hm0z·to2Q9x"iѸtSH˥@~_4P"3kt( #+<$:Pfg<mݳ#- Ф#*K =L^# sƃjo4l^6X"03zt錢cK#-eИl %&LHay>X2r#*^4HAYeȱG#-L9u<rIm$_eUlգ+c!3İ92 s様gsI;`!-h#%0,a֟^IA^SчBUYxPy5K#+ց?a@;"#-WO33˚ƽ9#-uAIjP*6/Ekm[cE&k ȣ"(Z QTEJfك]Ύ3 D`;HPF8nU^ ZH1> 9 rX^!BQIY[r#%j6 'pS!mAHkcakc$a/ܽ#-!w'm;_#%H##*OBهT7iEpܑpt?ǝ:?6L:6e\<&#%~@q^=v-|#-FCC[|C0a#*ڳͪB |@2JBjlſL"%rc42СPw+U%UIA I?zfx&qKT]" yKJdK-˄TH Z#-6?{_ HM"uA#8ČCfUH&P;|c/cc05@a#`1b2TPW8|p:gT9~#-쩔;w\Zy;rʭǤ(vUEZdvq2,Z#%f/  #-91>n<|bIf*Oaٴ>ڴ>:D&*TVk06αTHȐ>gAQє4)8{QB@jx5*@ TTPN .봤mL-#*uō#%KeA, TP$Ie#p`24KRq 1 7h5PQ8:5*bTa$9"ƴK hMi⍭نqUd?-ŒʨRk\ަE%ZRt묙RһOSnzn] !a{IL#AQ^wyy+^x֛52lf61jI$Цc%fdleyuM;sW$n4\כ&-C1o{=ɦj#*)#*66 (zo4KMlTeL̐#*AvX==Ycn#*dZ #*}Vj$qy&i@r$5LcK` 1iyV*BkR,5B$!JX6fY-V-uSB1\$b-f%`#FC U6Di6ѳmJ+dEaFb7H0lAD-ea.5DRDnf;jc ߿.q#Q7! nL@67v:VW ˉԆHG#*2l QΞ%7fޔy *n`x{5<&1dx8+skh gjF V4.#%cFٍ1*<#-XPZ1XTs2G;M.jg$%0l#s&>?wYiYp;zX_f_᎕r)2B1Ehƾ!Bi*H^"/qbܑӖB-6ҡUIRZ8١ᇸiyXcKYCHHhqad W*Vc(3*ߢM<ᆀJQ@1҈ nouh˷a#%a t@h`!XNKM@9=av ok4Q.tNDܭ..t`U0!TiLz4o8dJߟ\uB^-yuUZ:q/&#F;K#{{Nˏt{4z6\ȥfZy%8x|=:&j-sٻqFb!$-ۓټ讼6q#-B#-Uӣlduoj,#-, ɘm$G/Kl!]Wn^t8/z}0D9EFm`M#*1L(qC&?#p8=G+(~YךnxW#*M,=6ͪ#-z&ݕ2eCsOdMk! '+F?͈t׈0D+M}=~S.>9#*` +$ PȊaDl- u%>Ȣ*$ɣb#-'QQ]yl%O­]4B2$"I\ri[=F*6m\k[W+O^AQqJ@ 1-~vo*(^{\]-kۋ36h "`!|d5T.=s#~A 0vVKkl1&k%WqwH\y:ҳ=.j2Ap3ix-eFER+7v*fJF-XͅZ!`0RDIUPXŀQ#%i3*DPrb{޸3Pa$nc^F1gG݃WS9r7ksR2qewcvtLci9#%US@$ANI! !DS-3AT>gj2?? d^)N?O#%s?Tc$hc!=NM>:8 ~C8=g-#-\ PB.QP(̅ p߇ NUQK3~#*D4D5M&ްؙwí֪cBb[IAP#*Re+Hh#%"3H#d6 TL2~`ߵ}i*OuR5}6Ml#vF7F*9g 'zT#%lo1dwsmj]bIC#- p#-P#1/q(m@Te0 6~[WEywˣ.ZiG]/!)̼Vl&FljG1PA!%Aa~5yv]M#CXQeU64jBXq"U^߁ (҃b[ᘑON2LlE"7u(71hb)#-5zk[zVґfȶeQ@LF* \VLRD(Wb!V)D0|OC6&qx#-#%lAMVV-jEl@HCv_B:Amf5fԍ-2f(IB@: ώIRjKL[_$V! 7LwSk` ӜTb4#%#%5$hjQtz=]?5'#-AԵi#%3C,8j~x*m1dHĚ#*R]|d$RICΜts.8/!O#ŚNGxi X#"X$QOPM$q #*n!GLF„%0 0#nb+5!*"Ԁo3PƆ٘\.RH AL R$Љ! @X(&eIvlI$T8‚OoPʫ3p~$.*j#%.fw =DBfE#-Yf$AABIHGX #KT-ѺZƞ^v6L4~y17NjPR #*TEU9?׺؍+E3JӶm5 0lAjB)$b+CAZ؛4'S(H|Qkǜ>ضnk1mոgCAUa9gvC0#L`6v6BY2LpP4ºx553n] %cdX;wȵ/*+Xin97͚abxpyjtPO;QRH:px ꈦT]jnʪ3!V!#-'lg2;_#%z/7'xs#*C =~=Y$T>KAdQa76|# :1E7 xQOB_ұNJ#-$6vmƷK+.ދX|QD%y:nkA^/MPf#*KFZ[^"#-p~my#*Lũ%C畱.IPDbS*[P4\)#%c0cFYmVЅ$جO{(7#*t4qahc!d$p#*2`\щh"٭b1ǢM&T}!c<;UocwFGD!bIE^Yl RyiΔK޴l:İc{n}>h%p喯c`(7k񿎲<-0x"kHˌLKSxݷݐb:oZ46c8CgB~QMAR2kxNFD1#,b!,bAKՖ̆@ޅpzeWQV-#%#-#*U0ݦ`JY.YW/nm/k|ͩ`zRPDAmJ[~W;w_bLG8 y@FFR#-"ӡG};l86L[VN"%*gu`P3_#-eUZUY9ƮA"5-/JInA1" sMÕ5vw+Q|\vaRkZWԨ3En_RaqbժNMxG"]#%;J5]c02 JplTg!@EDKڅ; #*X0&˖fuw-*z-paG/7 >?#-R ܁ѹƙUcH<-ݧQ2$v+J t#-z1% ޵:q,4US7VDLC'hWy던G^MA0{{Lu3wh*}_v CHy1P{ bA$_ #%$PG!G/` *$$""@ Cyzx*G^ԙ @E8 G$zv|\@>P|p|sGټwx֚H#*,݀9ݫjxdы>Ey#-,7rHP!**?Į}S{9!GqGɯ;ro3t9YP&7lw*)0B'|@1#-F x5SmZl0'ˏA(y\/bJZ1@q+ZO3+)"SaDd[-@'Ӗ jGF(5@L?J!o8lї%Rࢦf4Z6#-iN[dFz(cCQ*pM;V6}^L4/H_l|s{og?mRJ>!#*;_s;[QU¤Rt:`#AĄIдIU|)+1MpAH!V5FX$~#s^`«Ln39/.)oo+%ˍ4!0t#%gGCϮ,BE#-j0b]d=BdV"6ݖc!emVmamtoU9 Vc%azy߱r6oI]ք@CI H/*r>çf[W a<zŪFšRH2ex؝A47H ak-y//g-{Yl-4#*e7 MguJm7WZYFBi(5.\D0L1Xa(8 ! c5C<"HdD>85KwV}UjMixW.,5mk[skəPd+1BD#*t;p ɢ.x*U7 j'F\\1HM3M]0EpB2m@k3P!BJD3rz#U%\mpXoE+mq#*Ŵ&ʱ5ٸhIU\Pe*B6IHVmDFSjH-M#* @E9)Q EA0lqGIc,jm1a4Ʊ7 "P`ՁYP؞AuʫN(6m`$#-aqhN<ێxIhi6TJT-1 0F6 !:ԯ@7q7*p]Eښ.%PH4Fٖd[Wz3c&G,6ц9Hv.rjh2[]@:jАuii&I"倎R<96"2Hv@ވiiY#ڋ'c"fጒ$֪piRiNiV^j0R;`1;#81`KCIƨ&\EfFHdEUA<c:1&0#*bb XsȱTn61)[) Y#*L!ILsC#&DT DiQ^s\5ڼk.2#-cF5Tp[|pb|ɧ Aء)"*K7Q=1AuFg. d'̓4ǸjN0fc4LXi h"-\{Edzy[[:0&AGSF"#*NV0ڼ.Zoq,([W|B̭~92#%DUb\/dV(j`DM1MR qbq1l*R#-*A6,`L.b#- ĹPHX(ȩ0`#*#bbX0$RD2#%pT* wpݼOy]1j2Z]]-:zӹ+_ |%-MLX0"jChқM#*Uuw /~ *(!"g#%H,[TF5!~4QZL9ܬUIhM3YڭiXm^$}JJr:r<66`QT"N+`Y/5Q\aH%7VC'*븱wvcc[)KדKxe1;Z2$#-4Q*~(qf滦\bl!J5$P"6 lt_ #*&mvwƺޏvʼnˍ{*;#*/'e3Rpdg`:@{]رjk%R;G>ӡWA+p#*gT'f@&NgIĹkDvnIY<x b4wfC/X,^bK\ًىpNu>};PsS̻C#-?ݬ O#*.}s-X>/S0Awy/7ALcPM=AW֝d礇Tz3/(w(*`b#%M}kYnФx T$bh9q/6ύbk _֗X "?6UQU95j#*&t0cZb8z1Vڋ #|"r:q5tlh,"k疽$U.Fɽ+d{5b[wV-pTk9[5d55\USݮEmA5W+ƫ ᆈq;e݇s;|O3 r(̭4ٌę7{d-"C|E hMCD@I;7#*h9<*/#~`}{B!t@7I,|;&O 0~^%hi#-&"FP7D"W((6C#`a#%ȠH #- $E(Y$u%ہ#-L{#-$#%#%FY#Fllj_#*GP#%O xuv[dѠ_pm 4oqk#%;f_H1"#-xzY7C} t{u ؇|$((E36I%(PXť2Ѥ١%)II)hХm6ձjZVjZ52b֋ci5[Ϻ<׮ sEM*H} l#H888cx (ƣʒBI;Z:PLJR!ۍN1'רus>X> *5yex3ƴgi6.ݙRHdyqM(#%9߽`n=u0bY|u\km '#*w;ju=s*\q*4]pX΀~GF + G˶g@-~c7;in4@$9 SĪjU L{p!&״k`"qEkviCEp=)؋k1(pq001q^9I,Q￿9jl'I!g7tVBZS/ yo#߫%&sX*77/cMr!|+NIFQtc]K=dʇhe3߿ĹW5+iųXɄtLFW5r?n&ܬ=蕇8`FV;/Ow*7:,GàE7,$. Ljڙbt6[6+g#*/+6kSb1Ĭh 0 N8u<[Fb/FL7dgyMQDZE_w8 %yxF4^٨"D:]|gR֓Q{>TdL\{a@Aq=0{Z1Vg3\uNq]Agjw}:'yOܞ}cJWjM3C#*Ƙ FT]ht;,KR|(tW+Ol=(IѼFz{FqzC50˾%Lpojs>NΌH˕.YyEc}]%`v؍豋xuӋL8FejqM@Č B7^CC'#*Rpڜ(ICx ȓX͎Hż9c'X梄QU6ETӑ#-,Teñl|dpC^[Pa'߁P):>{iv}:m!*k(Ŀȅ7@|̴5Qj1].JkZkN21D cʗ/ n,Z ;,JFJZioޜŹ'L.x[CUZ=2*-FO&s;a~MN|0,<"kC`Saމy;K\r.7 )sf\\=#@У۞R}( 9UI#*Bx#%G7vcd&ssfq~;X-T,Ǚہ#wIܘD_w@y9;1cUS-Icuyzw, h#![kHポ"!0wQ;$ZC{Z+mٶ2/.kںoj֠#-*#-5CY'BB{?vҾv`Qb#%kl(2cƐ-jV)lڱIFؒhТ*6C64ԍ)6IF)!%DhcM5-!LR"MZIa$ƭ`#%O"f{Q#-{їKwMֽ4nf*,z:xZ9|TGKHZK#%* >'ahf6ؽLKnR&#*s^;EB@Xlݼq7v[ãr(Q7^I$. kz4Aoz$jEկ~G[-ꖧ5}֭Q-m1ƏkMJgvBT,%wE$fP#-?fE6 )f.#*>P‹P1n~YtjcC82V)#fH,AXiEh'2Ԗ1b ϒKbʩB5aS]{Jxh̥lYpxcn. V#-8 ddV$F%71TD9^3bf#*~Nβ{-_`dFz3IQJpl"еGi5fL~n>#%9D: >Y!""" 4Gz j$|O L-}'5>7e1 i٥Uta nʘxg#%=Yl{`0ƿƟG~<D~TH%K<+"VGNh\%B:teC>Evk%+zCOClǹ kE,3̈́JSuUtD19Wώ<8GeS:ch` ` ?UK'9aNT]˹XF `HԤHV\0dpc#*҄QFi9Ѐ^À,ώb㳹NH:ipXƑ$@n1#*s٨mЈlA)DJeCtA$rIvE)t=! oextDR,ӡ[#-#*&im4$Ƒh ik[ yI4RB.e]o4{qY_$ˑьvvGʸH(و:@k#-삷!RAV,ᇉ$E(Ho!@3k9Ç_'LYЫz P Miqm"vnmS#$P\(fZRV2љrY#*&Ƅ˒b9dnaS^M) Ub6A:Ne;mKI1LZ)hIcgirެ m O-e23LFiIƥ{@bsqWEh4PdC=DeY,9$$φM"24#VT^)aN黧̛OIӻR-qu!h5e .W+#-U*fA.Sz$d B"9r-Y_gb`+w9t95ih+BFčfqYs<:kWL#**\\ζpq:ù_Z`ppN(7)>Q \8Z+k͛#- MArXʬF@]vv#-ԱNSu p/-`bV讒 9v5fl28%[16M&\q4柁I 5VIhy:7.mpQ.΂:f8D(˙pt#*kM'2qҶ41C0%!lz;yy9kt ƠrjΑofd'=Zb>ϗ!|Fa[&&7, VJMjfLX|rX[[#51 -kzmpTBRBY8AWa С0'SDM0Ӱ.;Y!%e;tVP%(fcn8,풵W0o 1#%Ri"4Djݖf|H'#*P#*ћZ6l*k0#*o)9Qvdr&dt嫢+aۗ֡#* LӴ^PQXgaat&nɦG Y.\տ%7VGT1DMjC:X͈(ѳt`L51#*0$p$#*"GɆd ocIWJjwݳ<]nhF[hVBf8.*n09O;q(hھXJ n#-r? ndfh&[:XdQK$.C!r6}ifB#%le\TQ!D}"#%UJv $vh'VaǮhޚd<Upw%Fdw*De"diZM3܆tGV}dM2d4tݼqOɭ+pD1PC5h *l#-9smk祝rI[;L> _Z#-$U=eNj>:Ι3| #%!'.LH dYCUREK (i"pd&|󁛪fMj"6·"RC&J-jwn#*H $H06B#-AvEF THF 8iQ)3 ǃ#I#*aS5'T8ڡ,uU,ĢA;wC x-!=PDg#0Մy1I[h@bt㹆2"VĮL+ؚ$p ߿Et Ng. -< w>9CF*SUyfB#-~"p3&#- 2p^#-0e,0yɩ5،͉ۖըqYT/1!8]7uvb#%omH|=OPcnk$ D¹KogkLY~]h/$0-,V"$%3Y ס3u!?&Ի%EVۭmkJBmRmEa$TpDXEnYq qMT#*U#* `ApB$6"P#%ߗ"F!tL"CoUՁ'M.ovdF a#%BD>aTUÌ?X$ ,Sˍx}#nޠ.<y8:><5#*fG 4aePM2Xl+%ʫEEyveۜ^+nRk&5fՋ̵BYd8ku 3@ԨJf*R&ۙ`9Z('w(oCK I'dкnci vM;١ΝF=w;187AQW$#%-r"/~$$ڲ3W:*'õnq5 ;ڡ7` @#%-P4&tMI,|zO0P'x(e[̅УJM**rD9vV`ReH?J{OзRk/zhL#7`zm(< }Q:#%M4EiC:Dq%(~zI>ȭ(^W/$jIie1Y%(-VŬbE5&߭qCFfN!y8U#06wFD8St@;ϩ#*#*޾ΰU,N=lEW6}=xǗPvF 'SOy#-d@9Rg=PϾJ#Zp#VF撁%`I#-o6^ڜKm5Cvx6٦S3 @047 G˹,O6PjaWDM.\$haH$e뫊>gn8َ@li&mn*.hea['\^:eFs;04F e#-7к{TT-VS+"9o ,ŪK,5c.- 6>^#-#*R/?ek<:#%PK"Ȑq!2=$zWZ,U!f,ʹB{C<@R#-dXȥ)E4jF}W9h55EQL_T06o@ DLJFEŅ"6wT$"'|%zw\V(ѳ#T- O^wZ66j-h䈚fWy=癇fD_lB=1T,+BB!$XC5q@sAsd&Q|OP1Ǻ+~W) Rti1;3s&#0C6TǭbՒ#*"aOz@P^!BSjtiIiݺMjjM6P&'ME¨FR(+\/*SRu.:ΕC^4$pÇL5W4&cĴL-]_K#-CiXD;^X؃|}avg!~D=EMBc?=?ί%4SD۸`X(N<}_l3໶wUHmoTkWmF-ڔ5F6XXQHD'Ȕy1VY) ~_m`Q#%CF\a\RaW,pJ_iU㸪6!ZQ?K-2!RvcY0(%Ak[[jhKzͅvӻ-wvWyuMɭW%Ef̪뛶vm^]Dl*dJlkyCE*pR$0p)o"o%i^ˈ֥4SRezV]^y֫EemK^wrݮe˦Mrn{^_" 0 hFрtA?`וUfjbɸ} FB`hٞ-Sm\[Y[Fh&X#-rɃb vΐ\M4Z`\](\=$޽Sل#-DV>:yn؆b)uFB'" t2cԉS:ghg { }^&f#-v}yD"8QH%poRcxka#%#*N$aTjIf6".a, 8;x_j>V]J[ދbx܆q&8&Z8A-E*8ʩpXס̤FȒ`>wEu 3OC0FW%#-DGTqf󂛔F 0TR'4^4=&@ՄBn@ x&lgפ9/]!p3 % T"jJ, nYƀrR&`씹 X ziő&N3\BCJ2f!T#*omyǂNV Rud\Y<89gWnFw[{}tٲ'p2R}Z TЊ9F!B2}(#-@J|erPհPȢŊr;QJaDF#-b2bsbzB$H9#|=jr;|_h2YiS,A<7@&_<&^|YY?yB-6sӟ#-"h~'v?o2mH_Oivy&VufuǓ;Oo dK7N+D?[2D?{'6#%*Qv%?%na f.PmwGg2_!/DGDRM!((~Y]N*pMp9SCD 29xFa,o4N*%+i(jR3:Ŋ/˯%k,=z l B|֯VAKJC#IBtʺBg/}XPp)„mP #<== -#-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEECzlystnjLqtCPS4PIr4MYv+/pUgFAmKKPjIACgkQIr4MYv+/\npUjn+g//e7jdxRv8RZO7ZkxklWuhFzgs31owc+2m7DiJovmBbi3/j6OHVFD6KH5b\nwGpqpbsji1Mj5L384ukPXnuMQSH73kiR4BhqZf5fllhLyNxr+fnGDBV1njwWY0Oo\nK81l5LW4kuPDrXBV+2ztnLJcDrYgZsU3J/L6DEhClwrHL2pL2qdpeZRzCKNnEfJP\nRrtkatTUgKnV+C/gWihzwUQlQbJuJA+qEFsJWrydMyi2d+QkoiqGFl6DWcD9yI++\n0JZ997+zGH4CNmCy1A1BMU2dtOHXQxcmKTwlIg4oSi0zfrbtw9MRr1mzUnVLEZkQ\nxQQykZ4fOT7S8kIMSjdeRUb3Q8SW+DcsSQxSWyQOK+W+oc4Z73d3qnJvciVflqbL\nqmqmTQm0FQN3vB18FbLgHswIw0RBI8/EjwHA6FEnh+f8t9LtN/QCVpPFRGktdAFi\n4A6UNggcawARZuwgvd5ygDOkWMVC0XKH/SjDMgFx+N94tsvmPHFtebYcrQvQA3jy\n12+PpGofCEgyD/KX2vcRWp7S80DQRwkHrXk1W2ED8z9T5BbwUeu+xzl2OkDq/q8X\nZQ8Gc89EjQe1YY7Mq/KCyLel/tsQhgUmTc0p6KBnFna3Ino5sxml7EUYhWAy+D/E\nKT5ifI8/RvdL4zhUNK2xF/VS1b/P9veJEC0xLiVBtFHHiZh9uI4=\n=jb/1\n-----END PGP SIGNATURE-----\n +#-----BEGIN PGP SIGNATURE-----\n\niQIzBAABCgAdFiEEjH6y+TsMRfVzL+XRG6xXHc13IpUFAmTW3xEACgkQG6xXHc13\nIpUBBA//X7EWVmGwG3rZIELAPfIre2RAFutwAtZwi10FhwtSSPcQDUW0oMgYgbea\ny8tCMpLXEPpPC2OQQhoxjHrMHu+xZwwKE419fBZjzHCbJ3HCfKa/K8zkJfRhFQgI\nnR4FxsCvWrV7RVoqKucmocGAsoTy4BAuPPo86cQSiAK+baHwP3Oo1O3zedXoXaBc\nJoNO1Fl6ldGSDh4xrcxonF+YomjWXgCy1Vplh2SD97c1SKREMtVpls3u0hUUg00q\nOXqfWT6MSdrAGq1zGTGWVl6/SSiFTlkRQhJfaNlA4uRdfYx37x4wuUhI1+OQpbyM\n6qs7s4pvbLG8t9tMB1onAJW7K92VkYxNjP67AeXuKD1HK9aJFw5xmPa3oIS9Cxly\nFAdoXSB99Y1QPNOgyPHqY0qzWiRyKK3melcsGE3CniKqQUosuzeNzagTY9hN0YwU\nB2DYQX6Yar7VLbaHROtk7KPs0nOnDgEezQZ0ZNdEbJXGv16n3s7QGD0w/e3tI3Ow\nC5vaBIGC/7iwoNmw0+iu//Cczw9Vjl1Ga5o++cpA2KCpwFB6/XC9OjEp3TEuPUf5\nn0p5BLFk3BsrhfGhui/mE+Q08LEFjX1yvWl6zyPEa0Gb9al+scK4uco12MslIV6H\n3GS7C2mrZVe8Mdjquttk1o/OSm7QlZ5Ej3aOlilbhiT6D3p2L1Y=\n=4SRH\n-----END PGP SIGNATURE-----\n diff -Nru libchronosync-0.5.5/wscript libchronosync-0.5.5-10-gd45f888/wscript --- libchronosync-0.5.5/wscript 2023-01-10 02:10:08.000000000 +0000 +++ libchronosync-0.5.5-10-gd45f888/wscript 2023-11-17 18:16:31.000000000 +0000 @@ -1,7 +1,8 @@ # -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*- -from waflib import Context, Logs, Utils -import os, subprocess +import os +import subprocess +from waflib import Context, Logs VERSION = '0.5.5' APPNAME = 'ChronoSync' @@ -36,11 +37,14 @@ conf.check_cfg(package='libndn-cxx', args=['libndn-cxx >= 0.8.1', '--cflags', '--libs'], uselib_store='NDN_CXX', pkg_config_path=pkg_config_path) - boost_libs = ['system', 'iostreams'] - if conf.env.WITH_TESTS: - boost_libs.append('unit_test_framework') + conf.check_boost(lib='iostreams', mt=True) + if conf.env.BOOST_VERSION_NUMBER < 107100: + conf.fatal('The minimum supported version of Boost is 1.71.0.\n' + 'Please upgrade your distribution or manually install a newer version of Boost.\n' + 'For more information, see https://redmine.named-data.net/projects/nfd/wiki/Boost') - conf.check_boost(lib=boost_libs, mt=True) + if conf.env.WITH_TESTS: + conf.check_boost(lib='filesystem unit_test_framework', mt=True, uselib_store='BOOST_TESTS') conf.check_compiler_flags() @@ -61,27 +65,25 @@ conf.write_config_header('src/detail/config.hpp', define_prefix='CHRONOSYNC_') def build(bld): - bld.shlib(target='ChronoSync', - vnum=VERSION, - cnum=VERSION, - source=bld.path.ant_glob('src/**/*.cpp'), - use='NDN_CXX BOOST', - includes='src/detail', - export_includes='src src/detail') + bld.shlib( + target='ChronoSync', + vnum=VERSION, + cnum=VERSION, + source=bld.path.ant_glob('src/**/*.cpp'), + use='BOOST NDN_CXX', + includes='src/detail', + export_includes='src src/detail') if bld.env.WITH_TESTS: bld.recurse('tests') + # Install header files srcdir = bld.path.find_dir('src') bld.install_files('${INCLUDEDIR}/ChronoSync', srcdir.ant_glob('**/*.hpp'), cwd=srcdir, relative_trick=True) - - bld.install_files('${INCLUDEDIR}/ChronoSync', - 'src/detail/config.hpp', - cwd=bld.path.get_bld().find_dir('src'), - relative_trick=True) + bld.install_files('${INCLUDEDIR}/ChronoSync/detail', 'src/detail/config.hpp') bld(features='subst', source='ChronoSync.pc.in', @@ -140,16 +142,16 @@ # first, try to get a version string from git gotVersionFromGit = False try: - cmd = ['git', 'describe', '--always', '--match', '%s*' % GIT_TAG_PREFIX] - out = subprocess.check_output(cmd, universal_newlines=True).strip() + cmd = ['git', 'describe', '--always', '--match', f'{GIT_TAG_PREFIX}*'] + out = subprocess.run(cmd, capture_output=True, check=True, text=True).stdout.strip() if out: gotVersionFromGit = True if out.startswith(GIT_TAG_PREFIX): Context.g_module.VERSION = out.lstrip(GIT_TAG_PREFIX) else: # no tags matched - Context.g_module.VERSION = '%s-commit-%s' % (VERSION_BASE, out) - except (OSError, subprocess.CalledProcessError): + Context.g_module.VERSION = f'{VERSION_BASE}-commit-{out}' + except (OSError, subprocess.SubprocessError): pass versionFile = ctx.path.find_node('VERSION.info') @@ -167,17 +169,19 @@ # already up-to-date return except EnvironmentError as e: - Logs.warn('%s exists but is not readable (%s)' % (versionFile, e.strerror)) + Logs.warn(f'{versionFile} exists but is not readable ({e.strerror})') else: versionFile = ctx.path.make_node('VERSION.info') try: versionFile.write(Context.g_module.VERSION) except EnvironmentError as e: - Logs.warn('%s is not writable (%s)' % (versionFile, e.strerror)) + Logs.warn(f'{versionFile} is not writable ({e.strerror})') def dist(ctx): + ctx.algo = 'tar.xz' version(ctx) def distcheck(ctx): + ctx.algo = 'tar.xz' version(ctx)