pax_global_header00006660000000000000000000000064152264666200014523gustar00rootroot0000000000000052 comment=a0d785fba74b2664f31edc4a29026a8b27c00f67 colmap-4.1.1/000077500000000000000000000000001522646662000130015ustar00rootroot00000000000000colmap-4.1.1/.clang-format000077500000000000000000000005661522646662000153660ustar00rootroot00000000000000BasedOnStyle: Google BinPackArguments: false BinPackParameters: false DerivePointerAlignment: false IncludeBlocks: Regroup IncludeCategories: - Regex: '^"colmap' Priority: 1 - Regex: '^"pycolmap' Priority: 2 - Regex: '^"thirdparty' Priority: 3 - Regex: '^<[[:alnum:]_]+>' Priority: 4 - Regex: '.*' Priority: 5 SortIncludes: true colmap-4.1.1/.clang-tidy000066400000000000000000000011511522646662000150330ustar00rootroot00000000000000Checks: > performance-*, concurrency-*, bugprone-*, -clang-analyzer-security.ArrayBound, -bugprone-easily-swappable-parameters, -bugprone-exception-escape, -bugprone-implicit-widening-of-multiplication-result, -bugprone-narrowing-conversions, -bugprone-reserved-identifier, -bugprone-unchecked-optional-access, -performance-enum-size, cppcoreguidelines-virtual-class-destructor, google-explicit-constructor, google-build-using-namespace, readability-avoid-const-params-in-decls, clang-analyzer-core*, clang-analyzer-cplusplus*, WarningsAsErrors: '*' FormatStyle: 'file' User: 'user' colmap-4.1.1/.dockerignore000066400000000000000000000000501522646662000154500ustar00rootroot00000000000000.git build* !build/_deps !build/.ccache colmap-4.1.1/.github/000077500000000000000000000000001522646662000143415ustar00rootroot00000000000000colmap-4.1.1/.github/ISSUE_TEMPLATE/000077500000000000000000000000001522646662000165245ustar00rootroot00000000000000colmap-4.1.1/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000011531522646662000212160ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve --- **Describe the bug** A clear and concise description of what the bug is. **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Screenshots** If applicable, add screenshots to help explain your problem. Input images and/or output reconstructions are usually helpful. **Environment:** - OS: [e.g. Windows 11] - COLMAP Version [e.g. 3.8 or git commit hash] - Capture Device [e.g. iPhone X] colmap-4.1.1/.github/ISSUE_TEMPLATE/feature_request.md000066400000000000000000000010601522646662000222460ustar00rootroot00000000000000--- name: Feature request about: Suggest an idea for this project --- **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here. colmap-4.1.1/.github/workflows/000077500000000000000000000000001522646662000163765ustar00rootroot00000000000000colmap-4.1.1/.github/workflows/build-docker.yml000066400000000000000000000065651522646662000215010ustar00rootroot00000000000000name: COLMAP (Docker) on: push: branches: - main - release/* pull_request: types: [ assigned, opened, synchronize, reopened ] release: types: [ published, edited ] env: IS_RELEASE: ${{ github.event_name == 'release' || startsWith(github.ref, 'refs/tags') }} FETCHCONTENT_CACHE_VERSION: 1 FETCHCONTENT_CACHE_DIR: build/_deps COMPILER_CACHE_VERSION: 1 CCACHE_DIR: build/.ccache jobs: build: name: ubuntu-24.04 runs-on: ubuntu-24.04 steps: - name: Free disk space uses: jlumbroso/free-disk-space@v1.3.1 with: tool-cache: false android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - uses: actions/checkout@v4 - name: Restore FetchContent cache uses: actions/cache@v4 id: cache-fetchcontent with: key: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-docker-${{ hashFiles('cmake/FindDependencies.cmake', 'src/thirdparty/CMakeLists.txt') }} restore-keys: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-docker- path: ${{ env.FETCHCONTENT_CACHE_DIR }} - name: Restore compiler cache uses: actions/cache@v4 id: cache-ccache with: key: ccache-v${{ env.COMPILER_CACHE_VERSION }}-docker-${{ github.run_id }} restore-keys: ccache-v${{ env.COMPILER_CACHE_VERSION }}-docker- path: ${{ env.CCACHE_DIR }} - name: Set up QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub if: ${{ env.IS_RELEASE == 'true' }} uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push run: | dockertag=$(date +%Y%m%d).${{ github.run_number }} if [[ "${{ env.IS_RELEASE }}" == "true" ]]; then cuda_archs="50;60;70;75;90" else cuda_archs="50" fi mkdir -p build/.ccache build/_deps docker_args=( --file docker/Dockerfile --build-arg CUDA_ARCHITECTURES="$cuda_archs" --build-arg FETCHCONTENT_FULLY_DISCONNECTED=${{ steps.cache-fetchcontent.outputs.cache-hit == 'true' && 'ON' || 'OFF' }} ) docker build . \ "${docker_args[@]}" \ --tag colmap/colmap:$dockertag # Extract updated build caches from the builder stage. docker build . \ "${docker_args[@]}" \ --target cache-export \ --output type=local,dest=build/cache-export rm -rf build/.ccache build/_deps mv build/cache-export/.ccache build/.ccache mv build/cache-export/_deps build/_deps rm -rf build/cache-export if [[ "${{ env.IS_RELEASE }}" == "true" ]]; then docker tag colmap/colmap:$dockertag colmap/colmap:latest docker push colmap/colmap:$dockertag docker push colmap/colmap:latest fi - name: Cleanup compiler cache run: | set -x sudo apt-get install -y ccache ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose colmap-4.1.1/.github/workflows/build-mac.yml000066400000000000000000000064171522646662000207660ustar00rootroot00000000000000name: COLMAP (Mac) concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} on: push: branches: - main - release/* pull_request: types: [ assigned, opened, synchronize, reopened ] release: types: [ published, edited ] jobs: build: name: ${{ matrix.config.os }} ${{ matrix.config.arch }} ${{ matrix.config.cmakeBuildType }} runs-on: ${{ matrix.config.os }} strategy: matrix: config: [ { os: macos-15, arch: arm64, cmakeBuildType: Release, }, ] env: COMPILER_CACHE_VERSION: 1 COMPILER_CACHE_DIR: ${{ github.workspace }}/compiler-cache CCACHE_DIR: ${{ github.workspace }}/compiler-cache/ccache CCACHE_BASEDIR: ${{ github.workspace }} FETCHCONTENT_CACHE_VERSION: 1 FETCHCONTENT_CACHE_DIR: ${{ github.workspace }}/build/_deps GLOG_v: 2 GLOG_logtostderr: 1 steps: - uses: actions/checkout@v4 - name: Restore compiler cache uses: actions/cache@v4 id: cache-compiler with: key: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ matrix.config.cmakeBuildType }}-${{ github.run_id }}-${{ github.run_number }} restore-keys: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ matrix.config.cmakeBuildType }} path: ${{ env.COMPILER_CACHE_DIR }} - name: Restore FetchContent cache uses: actions/cache@v4 id: cache-fetchcontent with: key: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ hashFiles('cmake/FindDependencies.cmake', 'src/thirdparty/CMakeLists.txt') }} restore-keys: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}- path: ${{ env.FETCHCONTENT_CACHE_DIR }} - name: Setup Mac run: | brew install \ cmake \ ninja \ boost \ eigen \ openimageio \ curl \ metis \ glog \ googletest \ ceres-solver \ qt \ glew \ cgal \ sqlite3 \ ccache \ libomp brew link --force libomp - name: Configure and build run: | export PATH="/usr/local/opt/qt/bin:$PATH" cmake --version mkdir -p build cd build cmake .. \ -GNinja \ -DCMAKE_BUILD_TYPE=${{ matrix.config.cmakeBuildType }} \ -DTESTS_ENABLED=ON \ -DWERROR_ENABLED=ON \ -DQt6_DIR="$(brew --prefix qt)/lib/cmake/Qt6" \ -DFETCHCONTENT_FULLY_DISCONNECTED=${{ steps.cache-fetchcontent.outputs.cache-hit == 'true' && 'ON' || 'OFF' }} ninja - name: Run tests run: | cd build set +e ctest --output-on-failure - name: Cleanup compiler cache run: | set -x ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose colmap-4.1.1/.github/workflows/build-pycolmap.yml000066400000000000000000000335431522646662000220520ustar00rootroot00000000000000name: PyCOLMAP concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} on: workflow_dispatch: push: branches: - main - release/* pull_request: types: [ assigned, opened, synchronize, reopened ] release: types: [ published, edited ] jobs: build: name: ${{ matrix.config.os }} ${{ matrix.config.arch }} ${{ matrix.config.cudaEnabled && 'CUDA' || '' }} runs-on: ${{ matrix.config.os }} strategy: matrix: config: [ {os: ubuntu-24.04, cudaEnabled: false}, {os: macos-14, arch: arm64, deploymentTarget: 14.0, cudaEnabled: false}, {os: windows-2025, cudaEnabled: false}, {os: ubuntu-24.04, cudaEnabled: true}, ] env: COMPILER_CACHE_VERSION: 1 COMPILER_CACHE_DIR: ${{ github.workspace }}/compiler-cache CCACHE_DIR: ${{ github.workspace }}/compiler-cache/ccache CCACHE_BASEDIR: ${{ github.workspace }} FETCHCONTENT_CACHE_VERSION: 1 FETCHCONTENT_CACHE_DIR: ${{ github.workspace }}/fetchcontent-cache MACOSX_DEPLOYMENT_TARGET: ${{ matrix.config.deploymentTarget }} # For faster builds in PRs, skip all but the oldest Python versions. PULL_REQUEST_CIBW_BUILD: cp311-{macosx,manylinux,win}* steps: - name: Free disk space if: runner.os == 'Linux' && matrix.config.cudaEnabled uses: jlumbroso/free-disk-space@v1.3.1 with: tool-cache: false android: true dotnet: true haskell: true large-packages: true docker-images: true swap-storage: true - uses: actions/checkout@v4 - name: Restore compiler cache uses: actions/cache@v4 id: cache-compiler with: key: pycolmap-v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-${{ github.run_id }}-${{ github.run_number }} restore-keys: pycolmap-v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }} path: ${{ env.COMPILER_CACHE_DIR }} - name: Restore FetchContent cache uses: actions/cache@v4 id: cache-fetchcontent with: key: pycolmap-fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-cuda_${{ matrix.config.cudaEnabled }}-${{ hashFiles('cmake/FindDependencies.cmake', 'src/thirdparty/CMakeLists.txt') }} restore-keys: pycolmap-fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.arch }}-cuda_${{ matrix.config.cudaEnabled }}- path: ${{ env.FETCHCONTENT_CACHE_DIR }} - name: Select Python if: github.event_name == 'pull_request' && runner.os != 'Windows' run: | echo "CIBW_BUILD=${PULL_REQUEST_CIBW_BUILD}" >> "$GITHUB_ENV" - name: Select Python if: ${{ github.event_name == 'pull_request' && runner.os == 'Windows' }} shell: pwsh run: | echo "CIBW_BUILD=${env:PULL_REQUEST_CIBW_BUILD}" >> "${env:GITHUB_ENV}" - name: Set env (macOS) if: runner.os == 'macOS' run: | VCPKG_TARGET_TRIPLET="arm64-osx-release" echo "VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}" >> "$GITHUB_ENV" VCPKG_INSTALLATION_ROOT="/Users/runner/work/vcpkg" CMAKE_TOOLCHAIN_FILE="${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" CMAKE_OSX_ARCHITECTURES=${{ matrix.config.arch }} echo "VCPKG_INSTALLATION_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "$GITHUB_ENV" echo "CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" >> "$GITHUB_ENV" echo "CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}" >> "$GITHUB_ENV" echo "ARCHFLAGS=-arch ${CMAKE_OSX_ARCHITECTURES}" >> "$GITHUB_ENV" # Fix: cibuildhweel cannot interpolate env variables. CONFIG_SETTINGS="cmake.define.CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.VCPKG_INSTALLED_DIR=${{ github.workspace }}/build/vcpkg_installed" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.CMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.WERROR_ENABLED=ON" echo "CIBW_CONFIG_SETTINGS_MACOS=${CONFIG_SETTINGS}" >> "$GITHUB_ENV" echo "FETCHCONTENT_BASE_DIR=${FETCHCONTENT_CACHE_DIR}" >> "$GITHUB_ENV" if [ "${{ steps.cache-fetchcontent.outputs.cache-hit }}" = "true" ]; then echo "FETCHCONTENT_FULLY_DISCONNECTED=ON" >> "$GITHUB_ENV" else echo "FETCHCONTENT_FULLY_DISCONNECTED=OFF" >> "$GITHUB_ENV" fi # vcpkg binary caching # !!!PLEASE!!! be nice and don't use this cache for your own purposes. This is only meant for CI purposes in this repository. VCPKG_BINARY_SOURCES="clear;x-azblob,https://colmap.blob.core.windows.net/github-actions-cache,sp=r&st=2024-12-10T17:29:32Z&se=2030-12-31T01:29:32Z&spr=https&sv=2022-11-02&sr=c&sig=bWydkilTMjRn3LHKTxLgdWrFpV4h%2Finzoe9QCOcPpYQ%3D,read" if [ -n "${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }}" ]; then # The secrets are only accessible in runs triggered from within the target repository and not forks. VCPKG_BINARY_SOURCES="${VCPKG_BINARY_SOURCES};x-azblob,${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }},${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_SAS }},write" fi echo "VCPKG_BINARY_SOURCES=${VCPKG_BINARY_SOURCES}" >> "$GITHUB_ENV" - name: Set env (Windows) if: runner.os == 'Windows' shell: pwsh run: | echo "${{ env.COMPILER_CACHE_DIR }}/bin" >> "${env:GITHUB_PATH}" $VCPKG_INSTALLATION_ROOT = "${{ github.workspace }}/vcpkg" echo "VCPKG_INSTALLATION_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "${env:GITHUB_ENV}" $CMAKE_TOOLCHAIN_FILE = "${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" echo "CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" >> "${env:GITHUB_ENV}" $VCPKG_TARGET_TRIPLET = "x64-windows-release" echo "VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}" >> "${env:GITHUB_ENV}" # Fix: cibuildhweel cannot interpolate env variables. $CMAKE_TOOLCHAIN_FILE = $CMAKE_TOOLCHAIN_FILE.replace('\', '/') $VCPKG_INSTALLED_DIR = "${{ github.workspace }}/build/vcpkg_installed" $VCPKG_INSTALLED_DIR = $VCPKG_INSTALLED_DIR.replace('\', '/') $CONFIG_SETTINGS = "cmake.define.CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" $CONFIG_SETTINGS = "${CONFIG_SETTINGS} cmake.define.VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}" $CONFIG_SETTINGS = "${CONFIG_SETTINGS} cmake.define.VCPKG_INSTALLED_DIR=${VCPKG_INSTALLED_DIR}" echo "CIBW_CONFIG_SETTINGS_WINDOWS=${CONFIG_SETTINGS}" >> "${env:GITHUB_ENV}" $CIBW_REPAIR_WHEEL_COMMAND = "delvewheel repair -v --add-path ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin -w {dest_dir} {wheel}" echo "CIBW_REPAIR_WHEEL_COMMAND_WINDOWS=${CIBW_REPAIR_WHEEL_COMMAND}" >> "${env:GITHUB_ENV}" $FETCHCONTENT_BASE_DIR = "${env:FETCHCONTENT_CACHE_DIR}".replace('\', '/') echo "FETCHCONTENT_BASE_DIR=${FETCHCONTENT_BASE_DIR}" >> "${env:GITHUB_ENV}" if ("${{ steps.cache-fetchcontent.outputs.cache-hit }}" -eq "true") { echo "FETCHCONTENT_FULLY_DISCONNECTED=ON" >> "${env:GITHUB_ENV}" } else { echo "FETCHCONTENT_FULLY_DISCONNECTED=OFF" >> "${env:GITHUB_ENV}" } # vcpkg binary caching # !!!PLEASE!!! be nice and don't use this cache for your own purposes. This is only meant for CI purposes in this repository. $VCPKG_BINARY_SOURCES = "clear;x-azblob,https://colmap.blob.core.windows.net/github-actions-cache,sp=r&st=2024-12-10T17:29:32Z&se=2030-12-31T01:29:32Z&spr=https&sv=2022-11-02&sr=c&sig=bWydkilTMjRn3LHKTxLgdWrFpV4h%2Finzoe9QCOcPpYQ%3D,read" if ("${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }}") { # The secrets are only accessible in runs triggered from within the target repository and not forks. $VCPKG_BINARY_SOURCES += ";x-azblob,${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }},${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_SAS }},write" } echo "VCPKG_BINARY_SOURCES=${VCPKG_BINARY_SOURCES}" >> "${env:GITHUB_ENV}" - name: Set env (Linux) if: runner.os == 'Linux' run: | VCPKG_TARGET_TRIPLET="x64-linux-release" echo "VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}" >> "$GITHUB_ENV" VCPKG_INSTALLATION_ROOT="${{ github.workspace }}/vcpkg" CMAKE_TOOLCHAIN_FILE="${VCPKG_INSTALLATION_ROOT}/scripts/buildsystems/vcpkg.cmake" echo "VCPKG_INSTALLATION_ROOT=${VCPKG_INSTALLATION_ROOT}" >> "$GITHUB_ENV" echo "CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" >> "$GITHUB_ENV" # Fix: cibuildhweel cannot interpolate env variables. CONFIG_SETTINGS="cmake.define.CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.VCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.VCPKG_INSTALLED_DIR=/project/build/vcpkg_installed" CONFIG_SETTINGS="${CONFIG_SETTINGS} cmake.define.WERROR_ENABLED=ON" echo "CIBW_CONFIG_SETTINGS_LINUX=${CONFIG_SETTINGS}" >> "$GITHUB_ENV" # Remap caching paths to the container CONTAINER_COMPILER_CACHE_DIR="/compiler-cache" CONTAINER_FETCHCONTENT_CACHE_DIR="/fetchcontent-cache" CIBW_CONTAINER_ENGINE="docker; create_args: -v ${COMPILER_CACHE_DIR}:${CONTAINER_COMPILER_CACHE_DIR} -v ${FETCHCONTENT_CACHE_DIR}:${CONTAINER_FETCHCONTENT_CACHE_DIR}" echo "CIBW_CONTAINER_ENGINE=${CIBW_CONTAINER_ENGINE}" >> "$GITHUB_ENV" echo "CONTAINER_COMPILER_CACHE_DIR=${CONTAINER_COMPILER_CACHE_DIR}" >> "$GITHUB_ENV" echo "CCACHE_DIR=${CONTAINER_COMPILER_CACHE_DIR}/ccache" >> "$GITHUB_ENV" echo "CCACHE_BASEDIR=/project" >> "$GITHUB_ENV" echo "FETCHCONTENT_BASE_DIR=${CONTAINER_FETCHCONTENT_CACHE_DIR}" >> "$GITHUB_ENV" if [ "${{ steps.cache-fetchcontent.outputs.cache-hit }}" = "true" ]; then echo "FETCHCONTENT_FULLY_DISCONNECTED=ON" >> "$GITHUB_ENV" else echo "FETCHCONTENT_FULLY_DISCONNECTED=OFF" >> "$GITHUB_ENV" fi # vcpkg binary caching # !!!PLEASE!!! be nice and don't use this cache for your own purposes. This is only meant for CI purposes in this repository. VCPKG_BINARY_SOURCES="clear;x-azblob,https://colmap.blob.core.windows.net/github-actions-cache,sp=r&st=2024-12-10T17:29:32Z&se=2030-12-31T01:29:32Z&spr=https&sv=2022-11-02&sr=c&sig=bWydkilTMjRn3LHKTxLgdWrFpV4h%2Finzoe9QCOcPpYQ%3D,read" if [ -n "${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }}" ]; then # The secrets are only accessible in runs triggered from within the target repository and not forks. VCPKG_BINARY_SOURCES="${VCPKG_BINARY_SOURCES};x-azblob,${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }},${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_SAS }},write" fi echo "VCPKG_BINARY_SOURCES=${VCPKG_BINARY_SOURCES}" >> "$GITHUB_ENV" CIBW_ENVIRONMENT_PASS_LINUX="VCPKG_TARGET_TRIPLET VCPKG_INSTALLATION_ROOT CMAKE_TOOLCHAIN_FILE VCPKG_BINARY_SOURCES CONTAINER_COMPILER_CACHE_DIR CCACHE_DIR CCACHE_BASEDIR FETCHCONTENT_BASE_DIR FETCHCONTENT_FULLY_DISCONNECTED" echo "CIBW_ENVIRONMENT_PASS_LINUX=${CIBW_ENVIRONMENT_PASS_LINUX}" >> "$GITHUB_ENV" if [ "${{ matrix.config.cudaEnabled }}" = "true" ]; then CIBW_MANYLINUX_X86_64_IMAGE="pytorch/manylinux2_28-builder:cuda12.9" CIBW_REPAIR_WHEEL_COMMAND="auditwheel repair --exclude libcudart* --exclude libcurand* -w {dest_dir} {wheel}" echo "CIBW_REPAIR_WHEEL_COMMAND=${CIBW_REPAIR_WHEEL_COMMAND}" >> "$GITHUB_ENV" # Edit pyproject.toml to change package name to pycolmap-cuda12 and add CUDA Runtime native Libraries and CURAND native runtime libraries to dependencies pip install tomlkit python python/ci/update_pyproject_toml.py --name "pycolmap-cuda12" --add-deps "cuda-toolkit[cudart,curand]>=12,<13" else CIBW_MANYLINUX_X86_64_IMAGE="quay.io/pypa/manylinux_2_28_x86_64" fi echo "CIBW_MANYLINUX_X86_64_IMAGE=${CIBW_MANYLINUX_X86_64_IMAGE}" >> "$GITHUB_ENV" - name: Build wheels uses: pypa/cibuildwheel@v3.4.0 with: package-dir: ./ env: CIBW_ARCHS_MACOS: ${{ matrix.config.arch }} CIBW_ENVIRONMENT: > BUILD_CUDA_ENABLED=${{ matrix.config.cudaEnabled }} - name: Archive wheels uses: actions/upload-artifact@v4 with: name: pycolmap-${{ matrix.config.os }}-${{ matrix.config.arch }}${{ matrix.config.cudaEnabled && '-CUDA' || '' }} path: wheelhouse/pycolmap*.whl pypi-publish: name: Publish wheels to PyPI needs: build runs-on: ubuntu-latest environment: name: pypi # This URL is only for display in the GitHub UI url: https://pypi.org/p/pycolmap permissions: id-token: write # We publish the wheel to pypi when a new tag is pushed, # either by creating a new GitHub release or explicitly with `git tag` if: ${{ github.event_name == 'release' || startsWith(github.ref, 'refs/tags') }} steps: - name: Download wheels uses: actions/download-artifact@v4 with: path: ./artifacts/ - name: Move wheels run: mkdir ./wheelhouse && mv ./artifacts/**/*.whl ./wheelhouse/ - name: Publish package uses: pypa/gh-action-pypi-publish@v1.13.0 with: skip-existing: true packages-dir: ./wheelhouse/ colmap-4.1.1/.github/workflows/build-ubuntu.yml000066400000000000000000000314571522646662000215520ustar00rootroot00000000000000name: COLMAP (Ubuntu) concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} on: push: branches: - main - release/* pull_request: types: [ assigned, opened, synchronize, reopened ] release: types: [ published, edited ] jobs: build: name: ${{ matrix.config.os }} ${{ matrix.config.cmakeBuildType }} ${{ matrix.config.cudaEnabled && 'CUDA' || '' }} ${{ matrix.config.asanEnabled && 'ASan' || '' }} ${{ matrix.config.coverageEnabled && 'Coverage' || '' }} runs-on: ${{ matrix.config.os }} strategy: matrix: config: [ { os: ubuntu-24.04, qtVersion: 6, cmakeBuildType: Release, asanEnabled: false, guiEnabled: true, cudaEnabled: false, casparEnabled: false, e2eTests: false, checkCodeFormat: true, coverageEnabled: true, }, { os: ubuntu-22.04, qtVersion: 6, cmakeBuildType: Release, asanEnabled: false, guiEnabled: true, cudaEnabled: false, casparEnabled: false, e2eTests: true, checkCodeFormat: true, coverageEnabled: false, }, { os: ubuntu-22.04, qtVersion: 5, cmakeBuildType: Release, asanEnabled: false, guiEnabled: false, cudaEnabled: true, casparEnabled: true, e2eTests: false, checkCodeFormat: false, coverageEnabled: false, }, { os: ubuntu-24.04, qtVersion: 6, cmakeBuildType: Release, asanEnabled: true, guiEnabled: false, cudaEnabled: false, casparEnabled: false, e2eTests: false, checkCodeFormat: false, coverageEnabled: false, }, { os: ubuntu-24.04, qtVersion: 6, cmakeBuildType: ClangTidy, asanEnabled: false, guiEnabled: false, cudaEnabled: false, casparEnabled: false, e2eTests: false, checkCodeFormat: false, coverageEnabled: false, }, ] env: COMPILER_CACHE_VERSION: 1 COMPILER_CACHE_DIR: ${{ github.workspace }}/compiler-cache CCACHE_DIR: ${{ github.workspace }}/compiler-cache/ccache CCACHE_BASEDIR: ${{ github.workspace }} CTCACHE_DIR: ${{ github.workspace }}/compiler-cache/ctcache FETCHCONTENT_CACHE_VERSION: 1 FETCHCONTENT_CACHE_DIR: ${{ github.workspace }}/build/_deps GLOG_v: 2 GLOG_logtostderr: 1 steps: - uses: actions/checkout@v4 - name: Check code format if: matrix.config.checkCodeFormat run: | set +x -euo pipefail python -m pip install ruff==0.15.7 clang-format==22.1.1 ./scripts/format/c++.sh --all ./scripts/format/python.sh --all git diff --name-only git diff --exit-code || (echo "Code formatting failed" && exit 1) - name: Restore Compiler cache uses: actions/cache@v4 id: cache-compiler with: key: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.cmakeBuildType }}-${{ matrix.config.asanEnabled }}--${{ matrix.config.cudaEnabled }}-${{ github.run_id }}-${{ github.run_number }} restore-keys: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.cmakeBuildType }}-${{ matrix.config.asanEnabled }}--${{ matrix.config.cudaEnabled }} path: ${{ env.COMPILER_CACHE_DIR }} - name: Restore FetchContent cache uses: actions/cache@v4 id: cache-fetchcontent with: key: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-cuda_${{ matrix.config.cudaEnabled }}-${{ hashFiles('cmake/FindDependencies.cmake', 'src/thirdparty/CMakeLists.txt') }} restore-keys: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-cuda_${{ matrix.config.cudaEnabled }}- path: ${{ env.FETCHCONTENT_CACHE_DIR }} - name: Install compiler cache run: | mkdir -p "$CCACHE_DIR" "$CTCACHE_DIR" echo "$COMPILER_CACHE_DIR/bin" >> $GITHUB_PATH if [ -f "$COMPILER_CACHE_DIR/bin/ccache" ]; then exit 0 fi set -x wget https://github.com/ccache/ccache/releases/download/v4.12.2/ccache-4.12.2-linux-x86_64.tar.xz echo "630c34ec94d451b200f5b14a6a25580d6a45bc80c394b7e0b93e33556eee5d32 ccache-4.12.2-linux-x86_64.tar.xz" | sha256sum --check tar xfv ccache-4.12.2-linux-x86_64.tar.xz mkdir -p "$COMPILER_CACHE_DIR/bin" mv ./ccache-4.12.2-linux-x86_64/ccache "$COMPILER_CACHE_DIR/bin" ctcache_commit_id="66c3614175fc650591488519333c411b2eac15a3" wget https://github.com/matus-chochlik/ctcache/archive/${ctcache_commit_id}.zip echo "108b087f156a9fe7da0c796de1ef73f5855d2a33a27983769ea39061359a40fc ${ctcache_commit_id}.zip" | sha256sum --check unzip "${ctcache_commit_id}.zip" mv ctcache-${ctcache_commit_id}/clang-tidy* "$COMPILER_CACHE_DIR/bin" - name: Setup Ubuntu run: | if [ "${{ matrix.config.qtVersion }}" == "5" ]; then qt_packages="qtbase5-dev libqt5opengl5-dev libqt5svg5-dev libcgal-qt5-dev" elif [ "${{ matrix.config.qtVersion }}" == "6" ]; then qt_packages="qt6-base-dev libqt6opengl6-dev libqt6openglwidgets6" # The Svg dev package is named qt6-svg-dev on Ubuntu 24.04+ but # libqt6svg6-dev on Ubuntu 22.04. if [ "${{ matrix.config.os }}" == "ubuntu-22.04" ]; then qt_packages="$qt_packages libqt6svg6-dev" else qt_packages="$qt_packages qt6-svg-dev" fi fi sudo apt-get update && sudo apt-get install -y \ build-essential \ cmake \ ninja-build \ libboost-program-options-dev \ libboost-graph-dev \ libboost-system-dev \ libeigen3-dev \ libceres-dev \ libopenimageio-dev \ openimageio-tools \ libsuitesparse-dev \ libmetis-dev \ libgoogle-glog-dev \ libgtest-dev \ libgmock-dev \ libsqlite3-dev \ libglew-dev \ $qt_packages \ libcgal-dev \ libgl1-mesa-dri \ libunwind-dev \ libcurl4-openssl-dev \ libmkl-full-dev \ xvfb # Fix issue in Ubuntu's openimageio CMake config. # We don't depend on any of openimageio's OpenCV functionality, # but it still requires the OpenCV include directory to exist. sudo mkdir -p /usr/include/opencv4 if [ "${{ matrix.config.cudaEnabled }}" == "true" ]; then if [ "${{ matrix.config.os }}" == "ubuntu-22.04" ]; then sudo apt-get install -y \ nvidia-cuda-toolkit \ nvidia-cuda-toolkit-gcc \ gcc-10 g++-10 echo "CC=/usr/bin/gcc-10" >> $GITHUB_ENV echo "CXX=/usr/bin/g++-10" >> $GITHUB_ENV echo "CUDAHOSTCXX=/usr/bin/g++-10" >> $GITHUB_ENV fi fi if [ "${{ matrix.config.asanEnabled }}" == "true" ]; then sudo apt-get install -y clang-18 libomp-18-dev echo "CC=/usr/bin/clang-18" >> $GITHUB_ENV echo "CXX=/usr/bin/clang++-18" >> $GITHUB_ENV fi if [ "${{ matrix.config.cmakeBuildType }}" == "ClangTidy" ]; then sudo apt-get install -y clang-18 clang-tidy-18 libomp-18-dev echo "CC=/usr/bin/clang-18" >> $GITHUB_ENV echo "CXX=/usr/bin/clang++-18" >> $GITHUB_ENV fi if [ "${{ matrix.config.coverageEnabled }}" == "true" ]; then sudo apt-get install -y gcovr fi - name: Configure and build run: | set -x cmake --version mkdir -p build cd build cmake .. \ -GNinja \ -DCMAKE_BUILD_TYPE=${{ matrix.config.cmakeBuildType }} \ -DCMAKE_INSTALL_PREFIX=./install \ -DCMAKE_CUDA_ARCHITECTURES=75 \ -DTESTS_ENABLED=ON \ -DWERROR_ENABLED=ON \ -DCUDA_ENABLED=${{ matrix.config.cudaEnabled }} \ -DCASPAR_ENABLED=${{ matrix.config.casparEnabled }} \ -DGUI_ENABLED=${{ matrix.config.guiEnabled }} \ -DASAN_ENABLED=${{ matrix.config.asanEnabled }} \ -DCOVERAGE_ENABLED=${{ matrix.config.coverageEnabled }} \ -DBLA_VENDOR=Intel10_64lp \ -DFETCHCONTENT_FULLY_DISCONNECTED=${{ steps.cache-fetchcontent.outputs.cache-hit == 'true' && 'ON' || 'OFF' }} ninja -k 10000 - name: Install and build sample if: ${{ matrix.config.cmakeBuildType != 'ClangTidy' && !matrix.config.asanEnabled && !matrix.config.coverageEnabled }} run: | set -x cd build ninja install cd ../doc/sample-project mkdir build cd build export colmap_DIR=${{ github.workspace }}/build/install/share/colmap cmake .. \ -GNinja \ -DCMAKE_CUDA_ARCHITECTURES=75 ninja ./hello_world --message "world" - name: Run tests if: ${{ matrix.config.cmakeBuildType != 'ClangTidy' }} run: | if [ "${{ matrix.config.cudaEnabled }}" == "true" ]; then ctestExclusions="(feature/sift_test)|(mvs/gpu_mat_test)" fi if [ "${{ matrix.config.casparEnabled }}" == "true" ]; then ctestExclusions="${ctestExclusions}|(estimators/bundle_adjustment_caspar_test)" fi export DISPLAY=":99.0" export QT_QPA_PLATFORM="offscreen" Xvfb :99 & sleep 3 cd build ctest -E "$ctestExclusions" --output-on-failure - name: Run E2E tests if: matrix.config.e2eTests run: | export DISPLAY=":99.0" export QT_QPA_PLATFORM="offscreen" Xvfb :99 & sleep 3 sudo apt install 7zip mkdir eth3d_benchmark # Error thresholds in degrees and meters, # as the ETH3D groundtruth has metric scale. GLOG_v=1 python ./python/ci/test_regression_eth3d.py \ --workspace_path ./eth3d_benchmark \ --colmap_path ./build/src/colmap/exe/colmap \ --dataset_names boulders door \ --max_rotation_error 1.0 \ --max_proj_center_error 0.05 \ --use_cpu - name: Generate coverage report if: matrix.config.coverageEnabled run: | set -x cd build ../scripts/shell/generate_coverage_report.sh - name: Upload coverage HTML report uses: actions/upload-artifact@v4 if: matrix.config.coverageEnabled with: name: code-coverage path: build/coverage-html - name: Generate Github code coverage report if: matrix.config.coverageEnabled uses: irongut/CodeCoverageSummary@v1.3.0 with: filename: build/coverage-cobertura.xml badge: true fail_below_min: false format: markdown hide_branch_rate: false hide_complexity: true indicators: true output: both thresholds: '75 90' # TODO: Add code coverage comment to PR. Currently, this action reports # coverage for the entire repository, not just the changed files in the PR. # We could manually filter the coverage report to only include the changed # files in the PR, but this is non-trivial and may not be worth the effort. # - name: Add Github PR code coverage comment # uses: marocchino/sticky-pull-request-comment@v2 # if: ${{ matrix.config.coverageEnabled && github.event_name == 'pull_request' }} # with: # recreate: true # path: code-coverage-results.md - name: Cleanup compiler cache run: | set -x ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose echo "Size of ctcache before: $(du -sh $CTCACHE_DIR)" echo "Number of ctcache files before: $(find $CTCACHE_DIR | wc -l)" # Delete cache older than 10 days. find "$CTCACHE_DIR"/*/ -mtime +10 -print0 | xargs -0 rm -rf echo "Size of ctcache after: $(du -sh $CTCACHE_DIR)" echo "Number of ctcache files after: $(find $CTCACHE_DIR | wc -l)" colmap-4.1.1/.github/workflows/build-windows.yml000066400000000000000000000256531522646662000217230ustar00rootroot00000000000000name: COLMAP (Windows) concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} on: push: branches: - main - release/* pull_request: types: [ assigned, opened, synchronize, reopened ] release: types: [ published, edited ] jobs: build: name: ${{ matrix.config.os }} ${{ matrix.config.cmakeBuildType }} ${{ matrix.config.cudaEnabled && 'CUDA' || '' }} runs-on: ${{ matrix.config.os }} strategy: matrix: config: [ { os: windows-2025, cmakeBuildType: Release, cudaEnabled: true, testsEnabled: true, exportPackage: true, }, { os: windows-2025, cmakeBuildType: Release, cudaEnabled: false, testsEnabled: true, exportPackage: true, }, ] env: COMPILER_CACHE_VERSION: 1 COMPILER_CACHE_DIR: ${{ github.workspace }}/compiler-cache CCACHE_DIR: ${{ github.workspace }}/compiler-cache/ccache CCACHE_BASEDIR: ${{ github.workspace }} FETCHCONTENT_CACHE_VERSION: 1 FETCHCONTENT_CACHE_DIR: ${{ github.workspace }}/build/_deps GLOG_v: 2 GLOG_logtostderr: 1 CUDA_MAJOR_VERSION: 13 CUDA_MINOR_VERSION: 2 CUDA_PATCH_VERSION: 0 steps: - uses: actions/checkout@v4 # We define the vcpkg binary sources using separate variables for read and # write operations: # * Read sources are defined as inline. These can be read by anyone and, # in particular, pull requests from forks. Unfortunately, we cannot # define these as action environment variables. See: # https://github.com/orgs/community/discussions/44322 # * Write sources are defined as action secret variables. These cannot be # read by pull requests from forks but only from pull requests from # within the target repository (i.e., created by a repository owner). # This protects us from malicious actors accessing our secrets and # gaining write access to our binary cache. For more information, see: # https://securitylab.github.com/resources/github-actions-preventing-pwn-requests/ - name: Setup vcpkg binary cache shell: pwsh run: | # !!!PLEASE!!! be nice and don't use this cache for your own purposes. This is only meant for CI purposes in this repository. $VCPKG_BINARY_SOURCES = "clear;x-azblob,https://colmap.blob.core.windows.net/github-actions-cache,sp=r&st=2024-12-10T17:29:32Z&se=2030-12-31T01:29:32Z&spr=https&sv=2022-11-02&sr=c&sig=bWydkilTMjRn3LHKTxLgdWrFpV4h%2Finzoe9QCOcPpYQ%3D,read" if ("${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }}") { # The secrets are only accessible in runs triggered from within the target repository and not forks. $VCPKG_BINARY_SOURCES += ";x-azblob,${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_URL }},${{ secrets.VCPKG_BINARY_CACHE_AZBLOB_SAS }},write" } echo "VCPKG_BINARY_SOURCES=${VCPKG_BINARY_SOURCES}" >> "${env:GITHUB_ENV}" - name: Restore compiler cache uses: actions/cache@v4 id: cache-compiler with: key: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.cmakeBuildType }}-${{ matrix.config.asanEnabled }}--${{ matrix.config.cudaEnabled }}-${{ github.run_id }}-${{ github.run_number }} restore-keys: v${{ env.COMPILER_CACHE_VERSION }}-${{ matrix.config.os }}-${{ matrix.config.cmakeBuildType }}-${{ matrix.config.asanEnabled }}--${{ matrix.config.cudaEnabled }} path: ${{ env.COMPILER_CACHE_DIR }} - name: Restore FetchContent cache uses: actions/cache@v4 id: cache-fetchcontent with: key: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-cuda_${{ matrix.config.cudaEnabled }}-${{ hashFiles('cmake/FindDependencies.cmake', 'src/thirdparty/CMakeLists.txt') }} restore-keys: fetchcontent-v${{ env.FETCHCONTENT_CACHE_VERSION }}-${{ matrix.config.os }}-cuda_${{ matrix.config.cudaEnabled }}- path: ${{ env.FETCHCONTENT_CACHE_DIR }} - name: Install compile cache shell: pwsh run: | New-Item -ItemType Directory -Force -Path "${{ env.CCACHE_DIR }}" echo "${{ env.COMPILER_CACHE_DIR }}/bin" | Out-File -Encoding utf8 -Append -FilePath $env:GITHUB_PATH if (Test-Path -PathType Leaf "${{ env.COMPILER_CACHE_DIR }}/bin/ccache.exe") { exit } .github/workflows/install-ccache.ps1 -Destination "${{ env.COMPILER_CACHE_DIR }}/bin" - name: Install CUDA uses: Jimver/cuda-toolkit@v0.2.35 if: matrix.config.cudaEnabled id: cuda-toolkit with: cuda: '${{ env.CUDA_MAJOR_VERSION }}.${{ env.CUDA_MINOR_VERSION }}.${{ env.CUDA_PATCH_VERSION }}' # CUDA 13 reorganized the toolkit, so the compiler now needs three # extra components beyond the old list: crt (crt/host_config.h, # included by cuda_runtime.h), nvvm (the cicc device compiler + # libdevice; no longer bundled in the nvcc subpackage) and thrust # (Thrust/CUB headers, on Windows the subpackage is "thrust", not # "cccl"). We avoid a full install to skip the large math/Nsight # subpackages COLMAP does not use. sub-packages: '["nvcc", "crt", "nvvm", "thrust", "nvtx", "cudart", "curand", "curand_dev", "nvrtc_dev"]' method: 'network' - name: Setup vcpkg shell: pwsh run: | ./scripts/shell/enter_vs_dev_shell.ps1 cd ${{ github.workspace }} git clone https://github.com/microsoft/vcpkg cd vcpkg ./bootstrap-vcpkg.bat - name: Install CMake and Ninja uses: lukka/get-cmake@latest with: # CMake >= 4.1 knows the CUDA 13 architecture set, so "all-major" # expands to Turing..Blackwell (75..120). Older CMake predates CUDA 13 # and would expand it to a stale set including Maxwell/Pascal/Volta # (compute_50/60/70), which CUDA 13 no longer supports. cmakeVersion: "4.1.0" ninjaVersion: "1.12.1" - name: Configure and build shell: pwsh run: | ./scripts/shell/enter_vs_dev_shell.ps1 cd ${{ github.workspace }} ./vcpkg/vcpkg.exe integrate install mkdir -Force build cd build if ($${{ matrix.config.cudaEnabled }}) { # The windows-2025 runner ships a newer MSVC toolset (VS 18, # _MSC_VER 19.5x) than older CUDA host_config.h versions whitelist, # which otherwise aborts CUDA compiler detection with "unsupported # Microsoft Visual Studio version". Kept as a safety net in case the # pinned CUDA toolkit still lags the runner's MSVC; it is a no-op # when the host compiler is already supported. CMake reads CUDAFLAGS # during CUDA compiler detection. $env:CUDAFLAGS = "-allow-unsupported-compiler" } cmake .. ` -GNinja ` -DCMAKE_MAKE_PROGRAM=ninja ` -DCMAKE_BUILD_TYPE=Release ` -DTESTS_ENABLED=${{ matrix.config.testsEnabled }} ` -DGUI_ENABLED=ON ` -DCUDA_ENABLED=${{ matrix.config.cudaEnabled }} ` -DCMAKE_CUDA_ARCHITECTURES=all-major ` -DCUDAToolkit_ROOT="${{ steps.cuda-toolkit.outputs.CUDA_PATH }}" ` -DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake" ` -DVCPKG_TARGET_TRIPLET=x64-windows-release ` -DCMAKE_INSTALL_PREFIX=install ` -DFETCHCONTENT_FULLY_DISCONNECTED=${{ steps.cache-fetchcontent.outputs.cache-hit == 'true' && 'ON' || 'OFF' }} ninja - name: Run tests shell: pwsh run: | ./vcpkg/vcpkg.exe integrate install cd build $EXCLUDED_TESTS = "(feature/sift_test)|(util/opengl_utils_test)|(mvs/gpu_mat_test)" ctest -E ${EXCLUDED_TESTS} --output-on-failure - name: Export package if: matrix.config.exportPackage shell: pwsh run: | ./vcpkg/vcpkg.exe integrate install cd build ninja install ../vcpkg/vcpkg.exe install ` --triplet=x64-windows-release ` --x-feature=gui ` --x-feature=cgal ` $(if ($${{ matrix.config.testsEnabled }}) { echo "--x-feature=tests" }) ` $(if ($${{ matrix.config.cudaEnabled }}) { echo "--x-feature=cuda" }) ../vcpkg/vcpkg.exe export --raw --output-dir vcpkg_export --output colmap cp vcpkg_export/colmap/installed/x64-windows/bin/*.dll install/bin cp vcpkg_export/colmap/installed/x64-windows-release/bin/*.dll install/bin # Deploy the Qt plugins from the x64-windows-release triplet, which is # the triplet COLMAP is actually built against. qtsvg is only installed # for that triplet, so copying from x64-windows would miss the SVG # plugins (imageformats/qsvg.dll and iconengines/qsvgicon.dll) that Qt # needs to render the SVG toolbar/menu icons, leaving them blank. cp -r vcpkg_export/colmap/installed/x64-windows-release/Qt6/plugins install # Fail loudly if the SVG plugins are missing: without them Qt cannot # render the SVG icons and the toolbar/menu icons show up blank, but # the build itself succeeds, so the regression is otherwise silent. if (-not (Test-Path install/plugins/iconengines/qsvgicon.dll)) { throw "Missing Qt SVG icon engine plugin (iconengines/qsvgicon.dll); SVG icons would not render." } if (-not (Test-Path install/plugins/imageformats/qsvg.dll)) { throw "Missing Qt SVG image format plugin (imageformats/qsvg.dll); SVG icons would not render." } if ($${{ matrix.config.cudaEnabled }}) { cp "${{ steps.cuda-toolkit.outputs.CUDA_PATH }}/bin/cudart64_*.dll" install/bin cp "${{ steps.cuda-toolkit.outputs.CUDA_PATH }}/bin/curand64_*.dll" install/bin } Remove-Item -Recurse -Force -ErrorAction SilentlyContinue install/include,install/lib,install/share - name: Upload package uses: actions/upload-artifact@v4 if: ${{ matrix.config.exportPackage && matrix.config.cudaEnabled }} with: name: colmap-x64-windows-cuda path: build/install - name: Upload package uses: actions/upload-artifact@v4 if: ${{ matrix.config.exportPackage && !matrix.config.cudaEnabled }} with: name: colmap-x64-windows-nocuda path: build/install - name: Cleanup compiler cache shell: pwsh run: | ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose colmap-4.1.1/.github/workflows/install-ccache.ps1000066400000000000000000000023741522646662000217030ustar00rootroot00000000000000[CmdletBinding()] param ( [Parameter(Mandatory = $true)] [string] $Destination ) $version = "4.12.1" $folder="ccache-$version-windows-x86_64" $url = "https://github.com/ccache/ccache/releases/download/v$version/$folder.zip" $expectedSha256 = "98AEA520D66905B8BA7A8E648A4CC0CA941D5E119D441F1E879A4A9045BF18F6" $ErrorActionPreference = "Stop" Set-StrictMode -Version Latest $PSNativeCommandUseErrorActionPreference = $true try { New-Item -Path "$Destination" -ItemType Container -ErrorAction SilentlyContinue Write-Host "Download CCache" $zipFilePath = Join-Path "$env:TEMP" "$folder.zip" Invoke-WebRequest -Uri $url -UseBasicParsing -OutFile "$zipFilePath" -MaximumRetryCount 3 $hash = Get-FileHash $zipFilePath -Algorithm "sha256" if ($hash.Hash -ne $expectedSha256) { throw "File $Path hash $hash.Hash did not match expected hash $expectedHash" } Write-Host "Unzip CCache" Expand-Archive -Path "$zipFilePath" -DestinationPath "$env:TEMP" Write-Host "Move CCache" Move-Item -Force "$env:TEMP/$folder/ccache.exe" "$Destination" Remove-Item "$zipFilePath" Remove-Item -Recurse "$env:TEMP/$folder" } catch { Write-Host "Installation failed with an error" $_.Exception | Format-List exit -1 } colmap-4.1.1/.gitignore000077500000000000000000000011331522646662000147720ustar00rootroot00000000000000# Custom files .python-version LocalConfig.cmake src/colmap/util/version.cc CMakeUserPresets.json .clangd compile_commands.json .claude/settings.local.json # Custom directories .idea/ .vscode .vs .DS_Store .cache build*/ install*/ data/ benchmark/reconstruction/data/ benchmark/reconstruction/runs/ doc/_build vcpkg_installed/ # Compiled Object files *.slo *.lo *.o *.obj *.pyc # Precompiled Headers *.gch *.pch # Compiled Dynamic libraries *.so *.dylib *.dll # Fortran module files *.mod # Compiled Static libraries *.lai *.la *.a *.lib # Executables *.exe *.out *.app # backup files *~ *.orig colmap-4.1.1/.gitmodules000066400000000000000000000000001522646662000151440ustar00rootroot00000000000000colmap-4.1.1/AGENTS.md000066400000000000000000000222611522646662000143070ustar00rootroot00000000000000# AGENTS.md — COLMAP Guide ## Project Overview COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline that reconstructs 3D models from 2D image collections. Written in C++17 with optional CUDA support. Single binary (colmap) with many subcommands, a Qt GUI, and Python bindings (pycolmap). ## Directory Structure | Path | Description | |------|-------------| | CMakeLists.txt | Root build config | | cmake/CMakeHelper.cmake | COLMAP_ADD_LIBRARY / _EXECUTABLE / _TEST macros | | cmake/FindDependencies.cmake | All dependency discovery (Eigen, Ceres, CUDA, Qt, etc.) | | cmake/Find*.cmake | Custom find modules | | src/colmap/ | Primary C++ source (see Architecture below) | | src/pycolmap/ | pybind11 C++ bindings | | src/thirdparty/ | Bundled (VLFeat, SiftGPU, PoissonRecon, LSD) and fetched (PoseLib, faiss, ONNX Runtime) | | python/pycolmap/ | Python package (__init__.py, utilities) | | python/CMakeLists.txt | scikit-build-core build for pycolmap | | doc/ | Sphinx/RST documentation | | docker/ | Dockerfile + build/run scripts | | scripts/format/ | c++.sh (clang-format), python.sh (ruff) | | benchmark/ | Reconstruction + runtime benchmarks | | .github/workflows/ | CI: Ubuntu, macOS, Windows, Docker, pycolmap | | vcpkg.json | vcpkg manifest (Windows/macOS deps) | | pyproject.toml | Python build config (scikit-build-core, cibuildwheel) | | .clang-format | C++ formatting style | | ruff.toml | Python linting/formatting config | ## Module Dependency Layers (bottom → top) | Module | Description | |--------|-------------| | util/ | Threading, logging, caching, PLY I/O, CUDA/OpenGL helpers | | math/ | Random, polynomials, graph algorithms (cuts, union-find, spanning trees) | | geometry/ | Rigid3d, Sim3d, essential/homography matrices, triangulation, GPS | | sensor/ | Camera distortion models, Bitmap (image I/O), Rig, sensor specs DB | | feature/ | SIFT (CPU/GPU), ALIKED (ONNX), LightGlue, descriptor indexing (FAISS) | | optim/ | RANSAC, LO-RANSAC, SPRT, samplers, support measurers | | scene/ | Camera, Image, Frame, Point2D/3D, Track, Reconstruction, Database (SQLite), CorrespondenceGraph | | estimators/ | Bundle adjustment (Ceres), absolute/relative pose, two-view geometry, triangulation, alignment | | estimators/solvers/ | Minimal solvers: P3P, 5-pt essential, 7/8-pt fundamental, homography (via PoseLib) | | estimators/cost_functions/ | Ceres cost functors: reprojection, Sampson, alignment, pose prior | | sfm/ | IncrementalMapper, GlobalMapper, IncrementalTriangulator, ObservationManager | | mvs/ | PatchMatch stereo (CUDA), depth/normal maps, fusion, meshing | | image/ | Image undistortion, warping, line detection | | retrieval/ | Vocabulary tree (VisualIndex), inverted index, vote-and-verify | | controllers/ | AutomaticReconstruction, IncrementalPipeline, GlobalPipeline, HierarchicalPipeline, OptionManager | | exe/ | CLI command implementations (colmap.cc dispatcher + per-domain .cc files) | | ui/ | Qt GUI: MainWindow, ModelViewerWidget, OpenGL painters, config dialogs | ## Key Classes & Files | Class/File | Location | Purpose | |------------|----------|---------| | Reconstruction | scene/reconstruction.h | Top-level container: cameras, rigs, images, frames, points, tracks | | Camera | scene/camera.h | Intrinsics (focal, principal pt, distortion model) | | Rig | sensor/rig.h | Multi-sensor rig with sensor_from_rig transforms | | Image | scene/image.h | Exposure: name, Point2D observations, camera_id, frame_id | | Frame | scene/frame.h | Posed rig instantiation: rig_from_world + sensor data | | Point3D | scene/point3d.h | Triangulated 3D point: xyz, color, error, Track | | Track | scene/track.h | List of (image_id, point2D_idx) observations | | Database | scene/database.h | Abstract DB interface (SQLite impl in database_sqlite.h) | | DatabaseCache | scene/database_cache.h | In-memory cache + CorrespondenceGraph | | CorrespondenceGraph | scene/correspondence_graph.h | Feature-to-feature correspondences across images | | Rigid3d | geometry/rigid3.h | 6-DOF rigid transform (quaternion + translation) | | Sim3d | geometry/sim3.h | 7-DOF similarity transform (Rigid3d + scale) | | FeatureExtractor | feature/extractor.h | Abstract extractor (SIFT, ALIKED); factory Create() | | FeatureMatcher | feature/matcher.h | Abstract matcher; supports Match() and MatchGuided() | | FeatureKeypoint | feature/types.h | x, y + affine shape (a11, a12, a21, a22) | | BundleAdjuster | estimators/bundle_adjustment.h | Abstract BA; Ceres impl via CreateDefaultBundleAdjuster() | | BundleAdjustmentConfig | estimators/bundle_adjustment.h | What to optimize vs. hold constant | | EstimateAbsolutePose() | estimators/pose.h | P3P RANSAC from 2D-3D correspondences | | EstimateTwoViewGeometry() | estimators/two_view_geometry.h | Essential/fundamental/homography estimation | | EstimateTriangulation() | estimators/triangulation.h | Robust multi-view triangulation | | IncrementalMapper | sfm/incremental_mapper.h | Core incremental SfM engine | | GlobalMapper | sfm/global_mapper.h | Global SfM (rotation averaging + global positioning) | | IncrementalTriangulator | sfm/incremental_triangulator.h | Point creation, track merging/completion | | ObservationManager | sfm/observation_manager.h | Per-image visibility stats, filtering | | PatchMatch | mvs/patch_match.h | CPU wrapper for CUDA PatchMatch stereo | | PatchMatchController | mvs/patch_match.h | Orchestrates multi-GPU depth estimation | | StereoFusion | mvs/fusion.h | Fuses depth maps into 3D point cloud | | AutomaticReconstructionController | controllers/automatic_reconstruction.h | End-to-end pipeline (extract, match, SfM, MVS) | | IncrementalPipeline | controllers/incremental_pipeline.h | Manages incremental SfM loop + multi-model | | OptionManager | controllers/option_manager.h | Centralized CLI option parsing | | Camera models | sensor/models.h | SimplePinhole, Radial, OpenCV, Fisheye, etc. | | Bitmap | sensor/bitmap.h | Image I/O wrapper (OpenImageIO), EXIF extraction | CLI entry point: exe/colmap.cc (subcommand dispatcher). ## Build Instructions ```bash mkdir build && cd build cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install ninja # No GUI, no CUDA (minimal) cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DGUI_ENABLED=OFF -DCUDA_ENABLED=OFF # With tests cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DTESTS_ENABLED=ON ``` ### Build pycolmap First build and install the C++ code: ```bash mkdir build && cd build cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=../install ninja install ``` Then build pycolmap (from the repo root): ```bash colmap_DIR=./install ./python/incremental_build.sh # Fast incremental build colmap_DIR=./install ./python/build.sh # Clean build (slower) ``` If there is a local `.python-version` file, use pyenv/uv for Python commands, `pip install`, and building pycolmap. ## Testing Follow C++ and Python build instructions above. Run ctest from the build directory: ```bash cd build ctest --output-on-failure # All C++ tests ctest -R "util/cache_test" # Specific test ctest -E "(feature/sift_test)" # Exclude GPU tests ``` Run Python tests from the repo root: ```bash pytest # All Python tests (config in pyproject.toml) ``` - Test files (`*_test.cc`) across all modules, created via `COLMAP_ADD_TEST()` macro - Framework: GTest/GMock with custom main (`util/gtest_main.cc`) - Test utilities: `util/testing.h`, Eigen matchers: `util/eigen_matchers.h`, transform matchers: `geometry/rigid3_matchers.h`, `geometry/sim3_matchers.h` - CTest names: `module/test_name` (e.g., `estimators/alignment_test`) ## Code Style & Conventions ### Naming - Classes: `PascalCase` - Methods/functions: `PascalCase` (e.g., `FindNextImages()`) - Member variables: `snake_case_` (trailing underscore) - Local variables: `snake_case` - Constants/enums: `kPascalCase` or `UPPER_SNAKE_CASE` - Files: `snake_case.h` / `snake_case.cc` / `snake_case_test.cc` - Transforms: `target_from_source` (e.g., `cam_from_world`) - Coordinates: `x_in_y` (e.g., `point3D_in_world`) ### Index and Identifier Types (util/types.h) - Generic indexes: int, size_t - Special identifiers: camera_t, image_t, image_pair_t, frame_t, rig_t, point2D_t, point3D_t, sensor_t, data_t, pose_prior_t ### Formatting ```bash scripts/format/c++.sh scripts/format/python.sh ``` ## External Dependencies ### Core | Library | Role | |---------|------| | Eigen3 | Linear algebra, matrices, geometry | | Ceres Solver | Nonlinear optimization | | Boost | Graph algorithms, CLI options, etc. | | glog | Structured logging | | SQLite3 | Feature/match database | | OpenImageIO | Image I/O and processing | | CHOLMOD | Sparse Cholesky | | Metis | Graph partitioning | | PoseLib | Minimal pose solvers | | FAISS | Fast ANN for descriptor matching | ### Optional | Library | Role | Gate | |---------|------|------| | CUDA | GPU PatchMatch, SiftGPU, Ceres GPU BA | CUDA_ENABLED | | ONNX Runtime | ALIKED, LightGlue neural features | ONNX_ENABLED | | Qt5/6 | GUI | GUI_ENABLED | | OpenGL/GLEW | 3D visualization, SiftGPU | OPENGL_ENABLED | | CGAL | Delaunay meshing | CGAL_ENABLED | ### Bundled (src/thirdparty/) | Library | Role | |---------|------| | VLFeat | CPU SIFT | | SiftGPU | GPU SIFT | | PoissonRecon | Surface reconstruction | | LSD | Line detection | colmap-4.1.1/CHANGELOG.rst000066400000000000000000005340141522646662000150310ustar00rootroot00000000000000Changelog ========= ------------------------- COLMAP 4.1.1 (07/17/2026) ------------------------- Improvements ------------ * Load the mapper database lazily instead of at GUI startup, avoiding a redundant database read when opening the GUI or a project. * Tint UI icons to the palette for improved dark theme legibility. * Show image/point viewer metadata when the source images are missing on disk. * Fail the Caspar build early with a clear error on CUDA architectures below 7.0. Bug Fixes --------- * Fix feature matching slowdown (~4-6x) caused by a process-global OpenMP critical section in ``RANSAC``/``LORANSAC``. * Fix rescaling of already-undistorted images when ``max_image_size`` is provided. * Fix missing SVG icons in the distributed Windows binaries. * Fix Caspar CUDA build with MSVC forced includes. * Fix glog color support version detection. * Fix typos in a user-facing help string and the FAQ. Breaking Changes ---------------- * Renamed the misspelled pycolmap enum ``GPSTransfromEllipsoid`` to ``GPSTransformEllipsoid``. The old name has been removed without a backwards-compatible alias; update any references accordingly. ------------------------- COLMAP 4.1.0 (06/26/2026) ------------------------- New Features ------------ * Added Caspar, a GPU-accelerated bundle adjustment backend, selectable as an alternative to the default Ceres solver. Includes rig support, GPU device selection, and pycolmap bindings for choosing the bundle adjustment and mapper backends. Caspar is often 1-2 orders of magnitude faster than the Ceres CUDA backend for medium- to large-scale problems, leading to drastic speedups especially for the incremental mapper. * Added the spherical (equirectangular) camera models. This enables native reconstruction of 360 panoramic images and is generally faster but less accurate than rendering perspective views, as performed in the ``panorama_sfm`` example. * Extended the ``panorama_sfm`` example to now convert perspective cameras back to equirectangular and added global mapping support. * Added Enhanced Unified Camera Model (EUCM). * Added advancing-front surface reconstruction meshing. * Added support for extracting gravity pose priors from EXIF orientation tags. * Added ``CamRayFromImg`` bearing-vector unprojection interface and bindings. * Estimate separate ``fx``/``fy`` in the p4pf solver for two-focal camera models. * Added a new ``version`` CLI command to print the COLMAP version. * Added ``MVS_ENABLED`` build option to compile without the MVS module. * Added ``GlobalMapper.keep_max_num_tracks`` option to bound the number of established tracks. * Added rotation averaging options to the GlobalMapper configuration. * Added pycolmap bindings for ``ReprojectionErrorType`` and additional point filter methods. * Added support for showing camera up vector in the viewer. * Replaced the GUI icons with Material Symbols (Apache 2.0). * Added keyboard shortcuts for model import/export in the GUI. Improvements ------------ * Accelerated the exhaustive matcher by using ``IndexIVFScalarQuantizer`` instead of ``IndexIVFFlat``. * Accelerated extraction of colors through parallelization across all images. * Accelerated incremental triangulator through reused BFS allocations and simplified ``merge_trials_``. * Added and updated sensor specs to the camera database. * Avoided a forced copy in ``mvs::Image::SetBitmap``. * Support incremental ``CorrespondenceGraph`` and ``ObservationManager`` construction, decoupling ``reg_stats`` from ``ObservationManager``. * Return ``std::optional`` from ``Bitmap::GetPixel``/``Interpolate*``. * Refit missing E/F/H in ``MaybeDecomposeRelativePoses`` for old databases. * Inherit all bundle adjustment options in the global mapper. * Guard against frame mutation after reconstruction insertion via ``FinalizeDataIds()``. * Move semantics for ``SetPoints2D`` (take ``Point2D`` vector by value). * Conditional initialization of Google logging. * Numerous benchmarking improvements: live progress display, ``--fast`` mode, better parallelism and per-step logging, per-dataset/overall summary rows, GT-covisibility-based filtering, and dynamic scheduling. * Added compiler warning flags and a ``WERROR`` option to the pycolmap build. * Robustified gravity-aligned rotation averaging against 180deg flips. * Clipping extreme pixels in fisheye undistortion. * Various tutorial and docstring improvements. * For other minor improvements, see the full list of changes below. Bug Fixes --------- * Fix sequential matching hang with loop detection verification. * Fix SiftGPU device selection to include device 0. * Fix vocab tree selection in the UI. * Fix broken integration of SIFT features with the LightGlue matcher. * Fix ``global_mapper`` ``point3D.error`` units for ``model_analyzer``. * Fix ``PoissonRecon`` ``num_threads`` handling and undefined behavior. * Fix ``pycolmap.Database()`` abort on garbage collection. * Fix Windows Unicode path handling in ``Bitmap::Read``/``Bitmap::Write``. * Fix NaN failures in rotation averaging from non-PD Cholesky. * Fix rotation averaging crash with multi-image rigs. * Fix missing rig pose manifold in ``RefineGeneralizedAbsolutePose`` and only set the manifold when residuals exist. * Fix applying ``refine_sensor_from_rig`` to all stages of the global mapper. * Fix ``mesh_texturer`` occlusion check edge case. * Fix SIGABRT in ``RegisterNextStructureLessImage`` when ``NumRegImages < 2``. * Fix thread pool worker processes crashing on shutdown. * Fix onnxruntime DLL copy error in ``Findonnxruntime.cmake``. * Change ``std::filesystem::relative`` to ``lexically_relative`` for ``NormalizePath``. * Fix crash in ``AdjustGlobalBundle`` after aggressive frame filtering. * Fix stale ``reg_stats``/observation stats and add underflow guards in mapper bookkeeping, and clear ``num_reg_images``. * Fix empty PatchMatch results on Blackwell GPUs (sm_100+). * Fix locale-dependent float parsing/formatting. * Fix thread oversubscription in the hierarchical mapper. * Fix mask usage log never printing in the feature writer thread. * Fix ``pyceres`` ``.problem`` attribute on ``CeresBundleAdjuster`` factory. * Fix conditional Eigen alignment for the 3.4.0 pre-release version. * Fix optional access in guided matching. * Fix reading of dynamic matrices in the SQLite database. * Fix using the ALIKED feature extractor with pycolmap and ALIKED ``min_score`` keypoint filtering. * Fix various pycolmap and PoissonRecon installation/build issues. * Fix missing mesh simplification reset and duplicate sources. * Add destructor to ``ModelViewerWidget`` to call ``makeCurrent()``. * Fix checks in the ``GpuMat`` constructor. * Add missing LightGlue matcher type to the GUI. * Log an error instead of crashing on unknown EXIF orientation. ------------------------- COLMAP 4.0.4 (04/27/2026) ------------------------- Bug Fixes --------- * Log an error instead of crash on unknown EXIF orientation * Fix crash in AdjustGlobalBundle after aggressive frame filtering * Change std::filesystem::relative to lexically_relative for NormalizePath * Fix onnxruntime DLL copy error under Windows in Findonnxruntime.cmake ------------------------- COLMAP 4.0.3 (04/06/2026) ------------------------- Bug Fixes --------- * Fix various issues in incremental mapper's reg_stats bookkeeping * Fix reading of dynamic matrices in SQLite3 database * Fix optional access in guided matching * Fix conditional Eigen alignment for 3.4.0 pre-release version * Fix ceres::GradientChecker constructor for older Ceres versions * Fix for pycolmap installation related to ONNX * Fix bug where num_reg_images was not cleared * Fix mask usage log never printing in feature writer thread * Fix undefined behavior in PoissonRecon * Fix locale-dependent float parsing/formatting * Fix empty PatchMatch results on Blackwell GPUs (sm_100+) * Fix pyceres .problem attribute on CeresBundleAdjuster returned by factory functions * Fix missing rotation averaging options to global mapper * Fix piping of bundle adjustment options in global mapper Improvements ------------ * Handle CHOLMOD includes not being in a subdirectory * Use non-deprecated SQLite3::SQLite3 CMake target * Reduce thread oversubscription in hierarchical mapper ------------------------- COLMAP 4.0.2 (03/18/2026) ------------------------- Bug Fixes --------- * Fix ALIKED keypoint score filtering * Fix ALIKED extraction with pycolmap * Fix missing reset of mesh simplification options ------------------------- COLMAP 4.0.1 (03/15/2026) ------------------------- Bug Fixes --------- * Add missing LightGlue matcher type to GUI * Fix checks in GpuMat constructor * Add destructor to ModelViewerWidget to call makeCurrent() ------------------------- COLMAP 4.0.0 (03/14/2026) ------------------------- New Features ------------ * Integrated GLOMAP global SfM pipeline into COLMAP as a first-class alternative to the incremental/hierarchical mappers, available via the ``global_mapper`` and ``automatic_reconstructor --mapper GLOBAL`` commands. Many fixes and improvements have been applied to the GLOMAP codebase as part of this migration. GLOMAP is maintained through the COLMAP repository going forward. The global pipeline uses view graph calibration to estimate intrinsics from two-view geometries, which may produce different camera parameters compared to the incremental pipeline's self-calibration. * Added ALIKED (N16Rot/N32) feature extraction through ONNX support. Support for brute-force and LightGlue matching as well as scalable matching with pre-trained vocabulary trees. * Added LightGlue ONNX feature matching for SIFT and ALIKED. * Added Python bindings for feature extractor and matcher. * Added support for reading image orientation from EXIF and auto-rotating images during feature extraction/matching for better robustness against rotational viewpoint changes. * Added structure-less image registration fallback using generalized relative pose estimator for registering images without 3-view overlap. * Added division camera models (SIMPLE_DIVISION, DIVISION). * Added fisheye camera model without distortion parameters (FISHEYE). * Improved Ceres bundle adjustment performance by ~10% through single pose parameter block. * Improved Ceres bundle adjustment performance by ~15% for SIMPLE_RADIAL camera model and trivial frames through analytical Jacobians. * Added abstract general bundle adjuster and solver summary in preparation for supporting different optimization backends. * Replaced FreeImage with OpenImageIO for ~2.5x faster image I/O, support for more image formats, and using an actively maintained dependency with security fixes, etc. * Added guided geometric verification using a known reconstruction. * Added view graph calibration as a new module. * Added model clustering to partition large reconstructions into smaller, manageable sub-models based on scene connectivity. * Added mesh simplification using Quadric Error Metric (QEM) decimation. * Added mesh texture mapping for producing textured meshes from calibrated images. * Added option to specify JPEG quality during image undistortion. * Added support for loading bitmaps with alpha channel. * Added option to control refinement of 3D points in bundle adjuster. * Added optional support for position prior in absolute pose refinement. * Added supernodal CHOLMOD L1 solver support. * Added multi-threading support for (LO)RANSAC loop. * Added support for custom SSL certificate locations through SSL_CERT_FILE and SSL_CERT_DIR environment variables. * Added support for static Windows builds with CUDA. * Exposed ``pycolmap.match_from_pairs`` for custom pair matching on GPU. * Added Python bindings for depth and normal maps. * Added Python type checking (mypy) for all code. * Improved incremental mapper and triangulator Python bindings. * Added support for visualizing (textured) meshes in the GUI. * Added drag-and-drop folder support for model import in the GUI. * Added drag-and-drop support for PLY import in the GUI. * Switched to native menu bar in GUI on macOS. * Added support for building shared libraries. * Improved patch match stereo performance by reading inputs in parallel. * Reduced model viewer memory usage in the GUI. * Added automatic fallback to BA CPU solver if GPU solver fails. * For other minor improvements, see full list of changes below. Bug Fixes --------- * Fixed guided matching for calibrated non-linear cameras. * Fixed database race conditions in mapping pipelines. * Fixed MSVC compatibility with ``isnan``. * Fixed undefined behavior in feature match swapping. * Fixed SVD computation in affine transform. * Fixed 2D association issue at ``AddPoint3D`` with ``point3D_id``. * Fixed several issues in database merging. * Fixed MVS workspace image downsizing. * Fixed pycolmap to respect ``fix_existing_frames`` option in the incremental pipeline. * Fixed transcription of image IDs in reconstruction from database. * Fixed ``BundleAdjustmentConfig::NumResiduals`` ignoring point statistics. * Fixed incorrect propagation of incremental options in automatic reconstructor. * Fixed triangulation angle computation in patch match sampling. * Fixed inverted units in ``ExifFocalLength`` metadata extraction. * Fixed slow performance of generalized absolute pose estimator verification. * Propagate exceptions from ``ThreadPool::Wait``. * Fixed empty patch match results on CUDA compute >= 100 (Blackwell GPUs). * Fixed ``filter_frames_`` usage in ``FindNextImages``. * Fixed ``model_aligner`` crash by using new pose prior API. * For other bug fixes, see full list of changes below. Breaking Changes ---------------- * Replaced FreeImage with OpenImageIO for image I/O. There may be slight differences in terms of supported image formats and loaded pixel values. * Dropped support for Python 3.9 due to EOL. * ``TwoViewGeometry`` fields ``cam2_from_cam1``, ``E``, ``F``, ``H`` are now ``std::optional``. * ``Rigid3d`` and ``Sim3d`` parameters stored as single vector. Use ``rotation()`` and ``translation()`` accessor methods instead of direct member access. * Bundle adjustment cost functors use single pose parameter blocks. * ``BundleAdjuster`` now returns ``std::shared_ptr`` instead of ``ceres::SolverSummary``. * Ceres-related CLI options are prefixed with ``BundleAdjustmentCeres.*``. * GPS/ENU coordinate conversion functionality cleaned up, breaking the Python interface. * Feature descriptors are now associated with a type that is propagated through the pipeline and storage. Fails matching if descriptor types are inconsistent. * Pose priors associated with generic sensor measurement data. * ``DatabaseCache`` initialization consolidated into a single options struct instead of scattered arguments. * Switched paths from ``std::string`` to ``std::filesystem::path`` throughout the C++ codebase. Python ``pathlib.Path`` objects are now automatically converted. No breaking impact on the Python interface. Full Change List (sorted temporally) ------------------------------------ * Fix MSVC compatibility with ``isnan`` by @nharbiso in https://github.com/colmap/colmap/pull/3720 * Include v3.13 to legacy dropdown. by @B1ueber2y in https://github.com/colmap/colmap/pull/3724 * (bugfix) initializing added_two_view_geometry_options to false by @AlePuglisi in https://github.com/colmap/colmap/pull/3727 * Update the tag of the doc submodule to the latest commit. by @B1ueber2y in https://github.com/colmap/colmap/pull/3729 * Fix duplicated parameters for pycolmap.extract_features and fix pycolmap README. by @B1ueber2y in https://github.com/colmap/colmap/pull/3728 * Document how to speed up bundle adjustment by @StonerLing in https://github.com/colmap/colmap/pull/3730 * Fix reconstruction benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/3731 * Remove doc submodule for easier maintenance. by @B1ueber2y in https://github.com/colmap/colmap/pull/3732 * Fix undefined behavior in feature match swapping by @ahojnnes in https://github.com/colmap/colmap/pull/3733 * Fix SVD computation in affine transform by @ahojnnes in https://github.com/colmap/colmap/pull/3734 * Fix random seed stability tests for incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3735 * Structure-less image registration using generalized relative pose estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2829 * Add supernodal cholmod L1 solver support and more tests by @ahojnnes in https://github.com/colmap/colmap/pull/3737 * Add union-find implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3738 * Add unit tests for base controller by @ahojnnes in https://github.com/colmap/colmap/pull/3739 * Add unit tests for PLY utils by @ahojnnes in https://github.com/colmap/colmap/pull/3742 * Inline SQLite3 utils in database implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3741 * Allow reuse of cholesky decomposition in L1 solver by @ahojnnes in https://github.com/colmap/colmap/pull/3743 * Add unit tests for controller thread by @ahojnnes in https://github.com/colmap/colmap/pull/3740 * Add drag-and-drop folder support for model import in the GUI by @StonerLing in https://github.com/colmap/colmap/pull/3744 * Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3745 * Include instructions to update documentation after new releases by @chipironcin in https://github.com/colmap/colmap/pull/3716 * Remove unused CMake warning level variable by @ahojnnes in https://github.com/colmap/colmap/pull/3747 * Import of GLOMAP source code by @ahojnnes in https://github.com/colmap/colmap/pull/3748 * Correct the spelling of GeometricVerifier. by @B1ueber2y in https://github.com/colmap/colmap/pull/3749 * Update Windows ccache to 4.12.1 by @ahojnnes in https://github.com/colmap/colmap/pull/3750 * Remove custom glomap constants by @ahojnnes in https://github.com/colmap/colmap/pull/3751 * Remove unnecessary glomap Camera by @ahojnnes in https://github.com/colmap/colmap/pull/3753 * Misc code quality improvements for max spanning tree by @ahojnnes in https://github.com/colmap/colmap/pull/3755 * Configure clang-format for glomap code by @ahojnnes in https://github.com/colmap/colmap/pull/3756 * Support two view geometry with empty inlier matches in the database. by @B1ueber2y in https://github.com/colmap/colmap/pull/3754 * Modularize glomap libraries by @ahojnnes in https://github.com/colmap/colmap/pull/3757 * Use colmap reconstruction matchers in global mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/3758 * Fix WriteTwoViewGeometry when inlier matches are empty. by @B1ueber2y in https://github.com/colmap/colmap/pull/3761 * Add support for geometric verification given known reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3752 * Enable glomap tests in CI by @ahojnnes in https://github.com/colmap/colmap/pull/3759 * Replace custom glomap Track with colmap Point3D by @ahojnnes in https://github.com/colmap/colmap/pull/3762 * Add missing option: FeatureMatching.skip_image_pairs_in_same_frame by @B1ueber2y in https://github.com/colmap/colmap/pull/3765 * Use fundamental/essential matrix utils from colmap by @ahojnnes in https://github.com/colmap/colmap/pull/3768 * Clean up redundant/unnecessary glomap rigid3d helper functions by @ahojnnes in https://github.com/colmap/colmap/pull/3764 * Add option to skip geometric verification at feature matching. by @B1ueber2y in https://github.com/colmap/colmap/pull/3766 * Fix missing colmap namespace in util/file.h macro. by @B1ueber2y in https://github.com/colmap/colmap/pull/3770 * Add missing header for the enum macros and remove colmap namespace. by @B1ueber2y in https://github.com/colmap/colmap/pull/3771 * Upgrade to latest vcpkg. by @B1ueber2y in https://github.com/colmap/colmap/pull/3774 * Add convenience method for filtering data by sensor type by @ahojnnes in https://github.com/colmap/colmap/pull/3776 * Cleanup redundant sqlite database merge implementation, consistent variable naming by @ahojnnes in https://github.com/colmap/colmap/pull/3778 * Add missing bindings for Bitmap and cleanup by @sarlinpe in https://github.com/colmap/colmap/pull/3780 * Set frame_id when reading database images by @ahojnnes in https://github.com/colmap/colmap/pull/3779 * Handle near zero matrices or identity transformations in gmock matchers by @ahojnnes in https://github.com/colmap/colmap/pull/3782 * Fix pycolmap to respect fix_existing_frames option by @S-o-T in https://github.com/colmap/colmap/pull/3781 * Add non-inserting FindIfExists to UnionFind by @B1ueber2y in https://github.com/colmap/colmap/pull/3783 * Use existing ceres function to stringify termination type by @ahojnnes in https://github.com/colmap/colmap/pull/3784 * Add convenience Python constructors for data_t/sensor_t by @ahojnnes in https://github.com/colmap/colmap/pull/3785 * Add utility function to compute Rigid3d origin by @ahojnnes in https://github.com/colmap/colmap/pull/3773 * Allow running glomap from colmap main executable by @ahojnnes in https://github.com/colmap/colmap/pull/3769 * Associate pose priors to generic sensor measurement data by @ahojnnes in https://github.com/colmap/colmap/pull/3777 * Enable compiler warnings as errors in GCC/CLang CI builds by @ahojnnes in https://github.com/colmap/colmap/pull/3788 * Remove debug log statement in db management widget by @ahojnnes in https://github.com/colmap/colmap/pull/3789 * Rename PosePrior::IsValid to HasPosition by @ahojnnes in https://github.com/colmap/colmap/pull/3786 * Add gravity to pose prior by @ahojnnes in https://github.com/colmap/colmap/pull/3787 * Disable editing of images in database management widget by @ahojnnes in https://github.com/colmap/colmap/pull/3792 * Fix and simplify database pose prior migration by @ahojnnes in https://github.com/colmap/colmap/pull/3791 * Synthesize gravities and move pose prior noise synthesis by @ahojnnes in https://github.com/colmap/colmap/pull/3795 * Replace FreeImage with OpenImageIO by @ahojnnes in https://github.com/colmap/colmap/pull/3459 * Add support on adding camera/image with trivial rig/frame to reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3800 * Rename HasTrivialFrame to IsRefInFrame. by @B1ueber2y in https://github.com/colmap/colmap/pull/3801 * Ensure that the rig has only one sensor at AddImageWithTrivialFrame. by @B1ueber2y in https://github.com/colmap/colmap/pull/3802 * Fix meta data cloning when cloning bitmap by @ahojnnes in https://github.com/colmap/colmap/pull/3812 * Remove unused includes in MVS image by @ahojnnes in https://github.com/colmap/colmap/pull/3813 * Create global mapper pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/3808 * Fix stand-alone python visualizer. by @B1ueber2y in https://github.com/colmap/colmap/pull/3816 * Remove the deprecated read_write_model.py from colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3817 * refactor: Replace OpenSqliteDatabase with Database::Open by @whuaegeanse in https://github.com/colmap/colmap/pull/3818 * Replace glomap gravity info with pose prior by @ahojnnes in https://github.com/colmap/colmap/pull/3794 * Relax CUDA requirements in Python wheels by @sarlinpe in https://github.com/colmap/colmap/pull/3799 * Fix copying behaviors of empty bitmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3823 * Don't build CUDA wheels for all Python versions in PRs by @sarlinpe in https://github.com/colmap/colmap/pull/3824 * Fix NumResiduals ignore point statistics and update test assertion by @whuaegeanse in https://github.com/colmap/colmap/pull/3820 * Add unit tests for MVS workspace by @ahojnnes in https://github.com/colmap/colmap/pull/3825 * Fix transcription of image IDs in reconstruction from database by @ahojnnes in https://github.com/colmap/colmap/pull/3826 * Towards removing custom glomap image class by @ahojnnes in https://github.com/colmap/colmap/pull/3805 * Add unit tests for MVS image by @ahojnnes in https://github.com/colmap/colmap/pull/3828 * Remove unused includes in MVS fusion by @ahojnnes in https://github.com/colmap/colmap/pull/3829 * Add simple integration test for MVS fusion by @ahojnnes in https://github.com/colmap/colmap/pull/3830 * Remove custom glomap image class by @ahojnnes in https://github.com/colmap/colmap/pull/3835 * Add integration tests for meshing, update poisson recon library to 18.75 by @ahojnnes in https://github.com/colmap/colmap/pull/3834 * Consolidate calculation of angle between vectors by @ahojnnes in https://github.com/colmap/colmap/pull/3836 * Clean up unused includes from geometry folder by @ahojnnes in https://github.com/colmap/colmap/pull/3837 * Clean up redundant glomap executable by @ahojnnes in https://github.com/colmap/colmap/pull/3838 * Update FAQ on dense stereo stage requirements by @The-Cyber-Captain in https://github.com/colmap/colmap/pull/3840 * Improve glomap cost function, add tests by @ahojnnes in https://github.com/colmap/colmap/pull/3839 * Refactor general cost function utils and add NormalPriorCost and NormalErrorCost. by @B1ueber2y in https://github.com/colmap/colmap/pull/3843 * Various improvements and fixes on glomap gravity impl. by @B1ueber2y in https://github.com/colmap/colmap/pull/3844 * Fix misleading logging for structure-less registration. by @B1ueber2y in https://github.com/colmap/colmap/pull/3848 * Remove glomap types_sfm.h and only include necessary headers. by @B1ueber2y in https://github.com/colmap/colmap/pull/3849 * Improvements and fixes on glomap two view geometry. by @B1ueber2y in https://github.com/colmap/colmap/pull/3847 * Move cluster id logic to top level and remove custom glomap Frame class. by @B1ueber2y in https://github.com/colmap/colmap/pull/3850 * Migrate glomap gravity utilities into colmap and add tests. by @B1ueber2y in https://github.com/colmap/colmap/pull/3845 * Move InlierThresholdOptions and remove unnecessary includes. by @B1ueber2y in https://github.com/colmap/colmap/pull/3851 * Minor: throw instead of LOG(ERROR) when SQLITE3_EXEC fails. by @B1ueber2y in https://github.com/colmap/colmap/pull/3855 * Add integration tests for image undistorters by @ahojnnes in https://github.com/colmap/colmap/pull/3856 * Pass database as pointer instead of reference in global mapper. Drop GlobalMapperResume. by @B1ueber2y in https://github.com/colmap/colmap/pull/3846 * Use colmap::Reconstruction instead of scattered variables in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3853 * Use temporary storage for camera centers in global positioning. by @B1ueber2y in https://github.com/colmap/colmap/pull/3854 * Fix workspace image downsizing and improve tests by @ahojnnes in https://github.com/colmap/colmap/pull/3857 * Fix bitmap copy assignment test by @ahojnnes in https://github.com/colmap/colmap/pull/3859 * Add test for BitmapColor printing by @ahojnnes in https://github.com/colmap/colmap/pull/3860 * [Improve RA] Add PairConstraint, remove image_id_to_idx and improve naming/comments. by @B1ueber2y in https://github.com/colmap/colmap/pull/3858 * Add test for spatial verification in image retrieval, fix crash for invalid transformations by @ahojnnes in https://github.com/colmap/colmap/pull/3862 * Attempt to make visual index spatial verification tests deterministic by @ahojnnes in https://github.com/colmap/colmap/pull/3870 * Minor: rename glomap cost_function.h to cost_functions.h. by @B1ueber2y in https://github.com/colmap/colmap/pull/3872 * Fix 2D association issue at AddPoint3D with point3D_id. by @B1ueber2y in https://github.com/colmap/colmap/pull/3867 * [Improve RA] Abstract RotationAveragingProblem and RotationAveragingSolver. by @B1ueber2y in https://github.com/colmap/colmap/pull/3861 * Move relative pose filtering utilities into ViewGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3864 * Fix database race conditions in mapping pipelines by @ahojnnes in https://github.com/colmap/colmap/pull/3865 * Improve stability of visual index spatial verification test by @ahojnnes in https://github.com/colmap/colmap/pull/3874 * Fix glomap track retriangulation refinement termination status by @ahojnnes in https://github.com/colmap/colmap/pull/3873 * Propagate exceptions from ThreadPool::Wait by @ahojnnes in https://github.com/colmap/colmap/pull/3869 * Catch AggregateException for ThreadPool. by @B1ueber2y in https://github.com/colmap/colmap/pull/3875 * Use DeRegisterFrame over ResetPose in view graph and track retriangulation. by @B1ueber2y in https://github.com/colmap/colmap/pull/3877 * Add Reconstruction::IsValid to check if a reconstruction object is not broken. by @B1ueber2y in https://github.com/colmap/colmap/pull/3878 * Improve the horrendous logic and naming in rotation initializer. by @B1ueber2y in https://github.com/colmap/colmap/pull/3876 * Use colmap ObservationManager for track filtering in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3871 * Centralize random logic to use colmap SetPRNGSeed. Add deterministic test. by @B1ueber2y in https://github.com/colmap/colmap/pull/3879 * Abstract general minimum spanning tree algorithm in colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3883 * Use logging over std::cout in glomap to avoid flooding logs in gtest. by @B1ueber2y in https://github.com/colmap/colmap/pull/3880 * Abstract base option manager and consolidate usage. by @B1ueber2y in https://github.com/colmap/colmap/pull/3881 * [Improve RA] Move stratified logic into estimators and only keep one option class. by @B1ueber2y in https://github.com/colmap/colmap/pull/3863 * ImagePair inherits colmap::TwoViewGeometry. Remove image id fields. by @B1ueber2y in https://github.com/colmap/colmap/pull/3882 * Further cleanup of std::cout in the codebase. by @B1ueber2y in https://github.com/colmap/colmap/pull/3884 * Rename SwapImagePair to ShouldSwapImagePair. by @B1ueber2y in https://github.com/colmap/colmap/pull/3887 * Move validity logic into ViewGraph and use filter_view in ValidImagePairs. by @B1ueber2y in https://github.com/colmap/colmap/pull/3885 * Directly use COLMAP bundle adjustment interface for glomap BA. by @B1ueber2y in https://github.com/colmap/colmap/pull/3868 * Add rotation averaging controller in colmap and consolidate glomap exe functions. by @B1ueber2y in https://github.com/colmap/colmap/pull/3888 * Remove legacy logging in global positioning. by @B1ueber2y in https://github.com/colmap/colmap/pull/3892 * Minor: improve the namings in global mapper options. by @B1ueber2y in https://github.com/colmap/colmap/pull/3891 * Add type annotations to python example scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3889 * Remove OptimizationBase and use colmap::GetEffectiveNumThreads(). by @B1ueber2y in https://github.com/colmap/colmap/pull/3890 * Simplify the logic and naming of reconstruction pruning. by @B1ueber2y in https://github.com/colmap/colmap/pull/3886 * Fix wrongly migrated cuda option in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3895 * Centralize poselib type conversion. by @B1ueber2y in https://github.com/colmap/colmap/pull/3896 * Drop weight support for different relative poses in rotation averaging. by @B1ueber2y in https://github.com/colmap/colmap/pull/3897 * Simplify colmap_io in glomap thanks to the unification. by @B1ueber2y in https://github.com/colmap/colmap/pull/3900 * Reduce code duplication in pycolmap MVS bindings by @sarlinpe in https://github.com/colmap/colmap/pull/3899 * Use colmap IterativeGlobalRefinement for retriangulation and refinement in glomap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3902 * Drop support for Python 3.9 due to EOL by @ahojnnes in https://github.com/colmap/colmap/pull/3910 * Add single-thread deterministic test for global mapper and rotation averaging controller. by @B1ueber2y in https://github.com/colmap/colmap/pull/3906 * Replace the usage of inliers in ImagePair with inlier_matches. by @B1ueber2y in https://github.com/colmap/colmap/pull/3909 * Update global mapper signature to align with colmap::IncrementalMapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3904 * Implement AddAndRegisterDefaultEnumOption and propagate to codebase. by @B1ueber2y in https://github.com/colmap/colmap/pull/3903 * Cleanup unused method declaration in GlobalMapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3912 * Refactor view graph calibration. by @B1ueber2y in https://github.com/colmap/colmap/pull/3911 * Delete legacy Python scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3914 * Add support for computing recall scores by @ahojnnes in https://github.com/colmap/colmap/pull/3913 * Add Python bindings for depth and normal maps, retire legacy scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3916 * Update and improve formatting of pycolmap readme by @ahojnnes in https://github.com/colmap/colmap/pull/3917 * Add Python type checking for all code by @ahojnnes in https://github.com/colmap/colmap/pull/3893 * Recompute F from E in the top level of CalibrateViewGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3915 * Make DatabaseCache::Load/Create args optional except database. by @B1ueber2y in https://github.com/colmap/colmap/pull/3919 * Use DatabaseCache to load reconstruction in glomap and remove the custom loader. by @B1ueber2y in https://github.com/colmap/colmap/pull/3918 * Bugfix for the rotation averaging CLI. by @B1ueber2y in https://github.com/colmap/colmap/pull/3927 * Drop database member in SfM controllers for better modularity and safety. by @B1ueber2y in https://github.com/colmap/colmap/pull/3926 * Add tests for reconstruction benchmark utils by @ahojnnes in https://github.com/colmap/colmap/pull/3930 * Use new optional typing by @ahojnnes in https://github.com/colmap/colmap/pull/3931 * Switch to colmap backend for two view re-estimation after view graph calibration. by @B1ueber2y in https://github.com/colmap/colmap/pull/3923 * Fix sign of GPS longitude from EXIF by @ahojnnes in https://github.com/colmap/colmap/pull/3935 * Fix camera prior loading in benchmark code. by @B1ueber2y in https://github.com/colmap/colmap/pull/3933 * Remove Database::Clone method by @ahojnnes in https://github.com/colmap/colmap/pull/3929 * Cleanup unused glomap includes by @ahojnnes in https://github.com/colmap/colmap/pull/3937 * Improved code for view graph calibration cost functions by @ahojnnes in https://github.com/colmap/colmap/pull/3936 * Move and type annotate model visualization example by @ahojnnes in https://github.com/colmap/colmap/pull/3939 * Move end to end regression test script and annotate types by @ahojnnes in https://github.com/colmap/colmap/pull/3938 * Delete more legacy Python scripts by @ahojnnes in https://github.com/colmap/colmap/pull/3940 * Move and type annotate flickr downloader by @ahojnnes in https://github.com/colmap/colmap/pull/3941 * Add option to evaluate self-calibration in reconstruction benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/3942 * Use std::optional for cam2_from_cam1 in TwoViewGeometry. by @B1ueber2y in https://github.com/colmap/colmap/pull/3932 * Use custom two view options for global pipeline in automatic reconstructor. by @B1ueber2y in https://github.com/colmap/colmap/pull/3943 * Add tests for estimating multiple two view geometries and minor perf optimization by @ahojnnes in https://github.com/colmap/colmap/pull/3947 * Add tests for uncovered edge cases in polynomial solvers by @ahojnnes in https://github.com/colmap/colmap/pull/3946 * Add unit tests for export to various external reconstruction formats by @ahojnnes in https://github.com/colmap/colmap/pull/3945 * Only create QApplication or OpenGL context if needed by @ahojnnes in https://github.com/colmap/colmap/pull/3944 * Simplify CSVToVector and add tests by @ahojnnes in https://github.com/colmap/colmap/pull/3953 * Migrate glomap exe into colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3952 * Add unit tests for colmap version helpers by @ahojnnes in https://github.com/colmap/colmap/pull/3955 * Use make_unique instead of new by @ahojnnes in https://github.com/colmap/colmap/pull/3957 * Early exit pycolmap windows build on errors by @ahojnnes in https://github.com/colmap/colmap/pull/3958 * Make view graph calibration a stand-alone estimator module on colmap::Database and add CLI. by @B1ueber2y in https://github.com/colmap/colmap/pull/3951 * Replace ImagePair with RelativePoseData and rename ViewGraph to PoseGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3954 * Make rotation averaging work with reconstruction with frames unregistered. by @B1ueber2y in https://github.com/colmap/colmap/pull/3949 * Replace 3-level option names with 2-level names for INI compatibility. by @B1ueber2y in https://github.com/colmap/colmap/pull/3962 * Add test for reading/writing options from ini by @ahojnnes in https://github.com/colmap/colmap/pull/3963 * Add relative poses to DatabaseCache and update the signature of global mapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3960 * Move module-specific functional methods outside PoseGraph. by @B1ueber2y in https://github.com/colmap/colmap/pull/3964 * Add tests for file utils, use enum utils by @ahojnnes in https://github.com/colmap/colmap/pull/3956 * Always try to decompose relative poses at the start of global pipeline. by @B1ueber2y in https://github.com/colmap/colmap/pull/3966 * Add unit tests for incremental triangulator by @ahojnnes in https://github.com/colmap/colmap/pull/3967 * Bugfix in pose decomposition interface. Update pipeline tests. by @B1ueber2y in https://github.com/colmap/colmap/pull/3969 * Switch paths from std::string to std::filesystem::path by @sarlinpe in https://github.com/colmap/colmap/pull/3901 * Add option to synthesize sparse view graph by @ahojnnes in https://github.com/colmap/colmap/pull/3968 * Optionally include runtime benchmarks in main project by @ahojnnes in https://github.com/colmap/colmap/pull/3970 * Refactor and improve track establishment. by @B1ueber2y in https://github.com/colmap/colmap/pull/3965 * Inline track establishment logic into GlobalMapper. by @B1ueber2y in https://github.com/colmap/colmap/pull/3972 * Minor: inline gravity cost functor into gravity refinement. by @B1ueber2y in https://github.com/colmap/colmap/pull/3973 * Store two view geometries in correspondence graph by @ahojnnes in https://github.com/colmap/colmap/pull/3975 * Support custom SSL certificate locations by @ahojnnes in https://github.com/colmap/colmap/pull/3976 * Fix database merging and improve tests by @ahojnnes in https://github.com/colmap/colmap/pull/3977 * Support loading bitmaps with alpha channel by @ahojnnes in https://github.com/colmap/colmap/pull/3978 * Reorder fields of core data structs for better packing by @ahojnnes in https://github.com/colmap/colmap/pull/3979 * Add tests for reading/writing bitmaps in popular image formats. by @ahojnnes in https://github.com/colmap/colmap/pull/3980 * Fix includes in feature index/matcher by @ahojnnes in https://github.com/colmap/colmap/pull/3982 * Do not store inlier matches in pose graph by @ahojnnes in https://github.com/colmap/colmap/pull/3981 * Setup priors when loading database, filter watermarks when creating database cache from another cache by @ahojnnes in https://github.com/colmap/colmap/pull/3983 * Fix guided matching for calibrated non-linear cameras by @ahojnnes in https://github.com/colmap/colmap/pull/3986 * Clear and log OpenImageIO errors by @ahojnnes in https://github.com/colmap/colmap/pull/3987 * Misc view graph calibration and global mapper improvements by @ahojnnes in https://github.com/colmap/colmap/pull/3985 * Do not crash but return error on unknown sensor_from_rig poses in incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3988 * Consistent and improved logging of headings by @ahojnnes in https://github.com/colmap/colmap/pull/3991 * Fix faiss linker warning under MSVC by @ahojnnes in https://github.com/colmap/colmap/pull/3994 * Make E F H optional in TwoViewGeometry struct. by @B1ueber2y in https://github.com/colmap/colmap/pull/3989 * Update Python incremental pipeline to match C++ by @ahojnnes in https://github.com/colmap/colmap/pull/3993 * Improve Reconstruction::NumRegImages from O(N) to O(1) by @ahojnnes in https://github.com/colmap/colmap/pull/3996 * Reduce incremental mapper's minimum size for small models by @ahojnnes in https://github.com/colmap/colmap/pull/3992 * Switch to Python 3.11 in the PR build. Disable mypy for Python 3.10. by @B1ueber2y in https://github.com/colmap/colmap/pull/3998 * Add missing Python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3997 * Do not override test commands for Python 3.10 on windows. by @B1ueber2y in https://github.com/colmap/colmap/pull/4000 * Rename num_iterations_ba to ba_num_iterations for consistency by @ahojnnes in https://github.com/colmap/colmap/pull/4001 * Return std::optional from Bitmap::Exif* methods by @ahojnnes in https://github.com/colmap/colmap/pull/4002 * Use database in rotation averaging CLI. Add a python example for legacy format. by @B1ueber2y in https://github.com/colmap/colmap/pull/3990 * Cleanup some includes in sfm folder by @ahojnnes in https://github.com/colmap/colmap/pull/4005 * Switch paths from std::string to std::filesystem::path (continued) by @sarlinpe in https://github.com/colmap/colmap/pull/4004 * Remove dangling declaration of JoinPaths. by @B1ueber2y in https://github.com/colmap/colmap/pull/4009 * Make reconstruction clustering logic a stand-alone module by @lpanaf in https://github.com/colmap/colmap/pull/4008 * Switch to perform clustering on all registered frames by @lpanaf in https://github.com/colmap/colmap/pull/4007 * Add option to control refinement of points 3D in bundle adjuster by @ahojnnes in https://github.com/colmap/colmap/pull/4012 * Minor code improvement in triangulation estimator by @ahojnnes in https://github.com/colmap/colmap/pull/4015 * Add support for division camera models by @ahojnnes in https://github.com/colmap/colmap/pull/4013 * Add nominal tests on reconstruction accuracy for bundle adjustment. by @B1ueber2y in https://github.com/colmap/colmap/pull/4019 * Use colmap::BundleAdjustmentOptions in global pipeline and drop custom option class. by @B1ueber2y in https://github.com/colmap/colmap/pull/4016 * Add test for and fix bitmap jpeg quality setting by @ahojnnes in https://github.com/colmap/colmap/pull/4025 * Remove unimplemented GetFileSize function by @ahojnnes in https://github.com/colmap/colmap/pull/4026 * Drop experimental modes in global positioning. Add module signature and improve naming. by @B1ueber2y in https://github.com/colmap/colmap/pull/3920 * Add option to specify jpeg quality during undistortion by @ahojnnes in https://github.com/colmap/colmap/pull/4027 * Analytical Jacobians for reprojection error cost function with SimpleRadial cameras by @ahojnnes in https://github.com/colmap/colmap/pull/4017 * Fix backwards compatibility of reading database created before Jul 2023. by @B1ueber2y in https://github.com/colmap/colmap/pull/4030 * Bug fix for generalized absolute pose estimator. by @B1ueber2y in https://github.com/colmap/colmap/pull/4031 * Clear model outputs in all estimators and RANSACs by @ahojnnes in https://github.com/colmap/colmap/pull/4032 * Move undistortion controllers to controllers folder by @ahojnnes in https://github.com/colmap/colmap/pull/4033 * Remove the iterative logic for reconstruction clustering and use directly the strongly connected component by @lpanaf in https://github.com/colmap/colmap/pull/4035 * Add rig scale alignment support for the global pipeline. by @B1ueber2y in https://github.com/colmap/colmap/pull/4038 * Performance improvement on generalized absolute pose. by @B1ueber2y in https://github.com/colmap/colmap/pull/4037 * Bundle adjustment benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/4022 * Add fisheye (equidistant) camera model by @lpanaf in https://github.com/colmap/colmap/pull/4039 * Store Rigid3/Sim3 params as single vector by @ahojnnes in https://github.com/colmap/colmap/pull/4041 * Move minimal solvers in estimators to sub-folder by @ahojnnes in https://github.com/colmap/colmap/pull/4047 * Move generalized absolute pose solver to sub-folder by @ahojnnes in https://github.com/colmap/colmap/pull/4048 * Use static Eigen array segment sizes in rotation averaging by @ahojnnes in https://github.com/colmap/colmap/pull/4049 * Single pose parameter block and angle axis for BA cost functions by @ahojnnes in https://github.com/colmap/colmap/pull/4029 * Automatically deep copy feature extraction/matching options by @ahojnnes in https://github.com/colmap/colmap/pull/4051 * Add test for rig verification and fixes by @ahojnnes in https://github.com/colmap/colmap/pull/4052 * Improve test coverage for image reader by @ahojnnes in https://github.com/colmap/colmap/pull/4053 * Abstract general bundle adjuster and solver summary. by @B1ueber2y in https://github.com/colmap/colmap/pull/4042 * Change test target names and file names by @ahojnnes in https://github.com/colmap/colmap/pull/4034 * Add nominal test and runtime benchmarking for global positioning. by @B1ueber2y in https://github.com/colmap/colmap/pull/4050 * Modularize cost functions by @ahojnnes in https://github.com/colmap/colmap/pull/4054 * Fix incorrect macOS install instruction by @sarlinpe in https://github.com/colmap/colmap/pull/4055 * Move glomap sources to colmap and replace glomap with colmap namespace by @ahojnnes in https://github.com/colmap/colmap/pull/4057 * Move motion averaging cost functions to sub-folder by @ahojnnes in https://github.com/colmap/colmap/pull/4058 * Move glomap Python bindings to colmap folder by @ahojnnes in https://github.com/colmap/colmap/pull/4059 * Add GLOMAP paper to list of citations by @ahojnnes in https://github.com/colmap/colmap/pull/4060 * Add test for reconstruction_clustering and sort cluster id by cluster size by @lpanaf in https://github.com/colmap/colmap/pull/4003 * Improve Fetzer cost implementation and tests by @ahojnnes in https://github.com/colmap/colmap/pull/4061 * Remove unused GetFileSize function by @ahojnnes in https://github.com/colmap/colmap/pull/4064 * Add function to read PLY mesh and add roundtrip tests by @ahojnnes in https://github.com/colmap/colmap/pull/4065 * Remove unused GLError function by @ahojnnes in https://github.com/colmap/colmap/pull/4066 * Modernize code using structured bindings by @ahojnnes in https://github.com/colmap/colmap/pull/4067 * Reuse sorting of initial images by @ahojnnes in https://github.com/colmap/colmap/pull/4069 * Clean up messy GPS conversion functionality by @ahojnnes in https://github.com/colmap/colmap/pull/4063 * Reuse code in camera by @ahojnnes in https://github.com/colmap/colmap/pull/4068 * Support static windows build with CUDA by @ahojnnes in https://github.com/colmap/colmap/pull/4072 * Use enum instead of #define in model viewer widget by @ahojnnes in https://github.com/colmap/colmap/pull/4073 * Extract some algorithmic logic from exe and add tests by @ahojnnes in https://github.com/colmap/colmap/pull/4074 * Cleanup outdated pycolmap deprecations by @ahojnnes in https://github.com/colmap/colmap/pull/4081 * Associate feature descriptors with type and propagate through pipeline and storage by @ahojnnes in https://github.com/colmap/colmap/pull/4080 * Fix pycolmap compiler warnings by @ahojnnes in https://github.com/colmap/colmap/pull/4082 * Update clang-format to 21.1.8 by @ahojnnes in https://github.com/colmap/colmap/pull/4085 * Update project dependencies by @ahojnnes in https://github.com/colmap/colmap/pull/4086 * Move instructions to build documentation to install.rst instead of root README by @ahojnnes in https://github.com/colmap/colmap/pull/4091 * Fix doc ordering for sphinx==0.9.1 by @sarlinpe in https://github.com/colmap/colmap/pull/4092 * Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/4075 * Extract loading of random descriptors and sample randomly across images by @ahojnnes in https://github.com/colmap/colmap/pull/4096 * Fix duplicate word typos in observation manager and rig docstring. by @B1ueber2y in https://github.com/colmap/colmap/pull/4097 * Add LightGlue ONNX feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/4098 * Improve incremental mapper/triangulator bindings by @ahojnnes in https://github.com/colmap/colmap/pull/4101 * Use native menu bar on Mac by @ahojnnes in https://github.com/colmap/colmap/pull/4102 * Avoid unnecessary copies by @ahojnnes in https://github.com/colmap/colmap/pull/4103 * Expose pycolmap.match_from_pairs to support custom pair matching on GPU by @samuelm2 in https://github.com/colmap/colmap/pull/4056 * Update onnxruntime FetchContent for ARM64 support by @johnnynunez in https://github.com/colmap/colmap/pull/4106 * Early exit incremental initialization if there are no points by @ahojnnes in https://github.com/colmap/colmap/pull/4108 * Fix incorrect propagation of incremental options in automatic reconstructor by @sarlinpe in https://github.com/colmap/colmap/pull/4111 * Fix triangulation angle computation in patch match sampling by @ahojnnes in https://github.com/colmap/colmap/pull/4110 * Correctly set the rpath in CMake by @sarlinpe in https://github.com/colmap/colmap/pull/4114 * Fix inverted units in ExifFocalLength metadata extraction by @MAX4ARCH in https://github.com/colmap/colmap/pull/4113 * Add vocab tree for ALIKED N16 rot feature by @ahojnnes in https://github.com/colmap/colmap/pull/4119 * Add track_length option in synthetic tooling and report ms/iter in BA benchmark. by @B1ueber2y in https://github.com/colmap/colmap/pull/4118 * Fix install destination for onnxruntime by @ahojnnes in https://github.com/colmap/colmap/pull/4120 * Read image orientation from EXIF and extract upright features by @sarlinpe in https://github.com/colmap/colmap/pull/4122 * Fix and improve documentation by @ahojnnes in https://github.com/colmap/colmap/pull/4123 * Optimize includes in MVS folder by @ahojnnes in https://github.com/colmap/colmap/pull/4125 * Follow-up fixes on EXIF auto-rotation by @sarlinpe in https://github.com/colmap/colmap/pull/4126 * Replace typedefs with using by @ahojnnes in https://github.com/colmap/colmap/pull/4128 * Add optional position prior support to RefineGeneralizedAbsolutePose by @ahojnnes in https://github.com/colmap/colmap/pull/4129 * Add Python bindings for feature extractor by @ahojnnes in https://github.com/colmap/colmap/pull/4130 * Add Python bindings for feature matcher by @ahojnnes in https://github.com/colmap/colmap/pull/4131 * Rotate LightGlue inputs based on gravity by @sarlinpe in https://github.com/colmap/colmap/pull/4132 * Fixing OpenGL profiles on Linux (Ubuntu 25.10) by @martin-pr in https://github.com/colmap/colmap/pull/4133 * Add pre-trained vocabulary tree for ALIKED N32 variant by @ahojnnes in https://github.com/colmap/colmap/pull/4134 * Untie circular dependency between feature and scene libraries by @ahojnnes in https://github.com/colmap/colmap/pull/4135 * Add tests for matcher cache by @ahojnnes in https://github.com/colmap/colmap/pull/4136 * Explicitly accept dragMoveEvent to fix broken drag-and-drop in Qt6 by @StonerLing in https://github.com/colmap/colmap/pull/4139 * Parse unregistered config options with warning instead of error by @StonerLing in https://github.com/colmap/colmap/pull/4140 * Revamp logging configuration and fix UI log sink formatting by @StonerLing in https://github.com/colmap/colmap/pull/4141 * Make view graph calibration a standalone module by @ahojnnes in https://github.com/colmap/colmap/pull/4143 * Refactor ONNX runtime configuration handling in CMake files by @whuaegeanse in https://github.com/colmap/colmap/pull/4144 * Relative pose decomposition operates in-memory on database cache by @ahojnnes in https://github.com/colmap/colmap/pull/4146 * Enforce compile-time type checking for option registration by @StonerLing in https://github.com/colmap/colmap/pull/4148 * Relax assertion for the global bundle adjustment by @lpanaf in https://github.com/colmap/colmap/pull/4149 * Expose more logging options in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/4150 * Load keypoints for all images to database cache for triangulation by @B1ueber2y in https://github.com/colmap/colmap/pull/4151 * Add separate trial counter for structure-less registration by @B1ueber2y in https://github.com/colmap/colmap/pull/4152 * Fix the usage of filter_frames in FindNextImages by @B1ueber2y in https://github.com/colmap/colmap/pull/4153 * Read inputs in parallel in patch match by @ahojnnes in https://github.com/colmap/colmap/pull/4154 * Improved caching for faster and more reliable CI by @ahojnnes in https://github.com/colmap/colmap/pull/4156 * Add retries for more reliable file download by @ahojnnes in https://github.com/colmap/colmap/pull/4157 * Add support for building shared libraries by @ahojnnes in https://github.com/colmap/colmap/pull/4158 * Fix missing colmap namespace in file macro by @B1ueber2y in https://github.com/colmap/colmap/pull/4159 * Fix file THROW_CHECK_* macros from double evaluation of path expressions by @ahojnnes in https://github.com/colmap/colmap/pull/4160 * Fix empty patch match results on CUDA compute >= 100 (Blackwell GPUs) by @ahojnnes in https://github.com/colmap/colmap/pull/4161 * Add AGENTS.md file by @ahojnnes in https://github.com/colmap/colmap/pull/4162 * Fix docker action caching by @ahojnnes in https://github.com/colmap/colmap/pull/4163 * Add compiler caching for CUDA code by @ahojnnes in https://github.com/colmap/colmap/pull/4164 * Improve ONNX Runtime error handling and CUDA compatibility warnings by @StonerLing in https://github.com/colmap/colmap/pull/4167 * Add structureless fallback options to reconstruction widget by @ahojnnes in https://github.com/colmap/colmap/pull/4168 * Add multi-threading support for (LO)RANSAC loop by @ahojnnes in https://github.com/colmap/colmap/pull/4169 * Add missing estimate sub-folder sources to cmake project by @ahojnnes in https://github.com/colmap/colmap/pull/4171 * Improve bundle adjustment test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4172 * Improve test coverage for coordinate frame estimators by @ahojnnes in https://github.com/colmap/colmap/pull/4173 * Improve test coverage for MVS consistency graph by @ahojnnes in https://github.com/colmap/colmap/pull/4174 * Add tests for SPRT sampler by @ahojnnes in https://github.com/colmap/colmap/pull/4175 * Improve reconstruction test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4176 * Add tests for MVS model by @ahojnnes in https://github.com/colmap/colmap/pull/4177 * Add tests for incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/4178 * Add tests for feature matching utils by @ahojnnes in https://github.com/colmap/colmap/pull/4179 * Expand meshing test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4180 * Expand pose_graph_test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4181 * Expand extractor_test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4182 * Expand matcher_test coverage by @ahojnnes in https://github.com/colmap/colmap/pull/4183 * Add more log options in GUI by @StonerLing in https://github.com/colmap/colmap/pull/4186 * Add test for EstimateManhattanWorldFrame by @ahojnnes in https://github.com/colmap/colmap/pull/4187 * Fix ONNX model path handling for Windows by converting to UTF-8 by @whuaegeanse in https://github.com/colmap/colmap/pull/4188 * Add tests for rotation averaging edge cases by @ahojnnes in https://github.com/colmap/colmap/pull/4190 * Add mesh texture mapping by @ahojnnes in https://github.com/colmap/colmap/pull/4202 * Update install instructions for conda to mention Mamba by @ahojnnes in https://github.com/colmap/colmap/pull/4204 * Homogenize undistorter options by @ahojnnes in https://github.com/colmap/colmap/pull/4205 * Add support for importing surface mesh in viewer by @ahojnnes in https://github.com/colmap/colmap/pull/4207 * Save memory by storing colors as uint8 instead of float32 by @ahojnnes in https://github.com/colmap/colmap/pull/4210 * Configure Delaunay meshing num_threads in automatic reconstruction, more logging by @ahojnnes in https://github.com/colmap/colmap/pull/4211 * Log image reader non-success status as warning by @ahojnnes in https://github.com/colmap/colmap/pull/4212 * Support drag-and-drop for PLY point cloud / surface mesh in viewer by @ahojnnes in https://github.com/colmap/colmap/pull/4214 * Fix broken panorama_sfm.py by @sarlinpe in https://github.com/colmap/colmap/pull/4215 * Add implementation of mesh simplification by @ahojnnes in https://github.com/colmap/colmap/pull/4216 * Tests for filtering logic for incremental mapping by @winterclincke in https://github.com/colmap/colmap/pull/4219 * Deduplicate SIFT tests by @ahojnnes in https://github.com/colmap/colmap/pull/4220 * Fix ONNX installation on Linux for lib64 target by @ahojnnes in https://github.com/colmap/colmap/pull/4221 * Misc safety improvements by @ahojnnes in https://github.com/colmap/colmap/pull/4222 * Improved test coverage for bitmap by @ahojnnes in https://github.com/colmap/colmap/pull/4224 * Fix 180-degree flipped solutions in gravity-aligned rotation averaging by @ahojnnes in https://github.com/colmap/colmap/pull/4225 * Improve docs regarding view graph calibrator in global pipeline by @B1ueber2y in https://github.com/colmap/colmap/pull/4226 * Remove legacy cluster_ids in the global pipeline by @B1ueber2y in https://github.com/colmap/colmap/pull/4227 * Fallback to BA CPU solver if GPU failed by @ahojnnes in https://github.com/colmap/colmap/pull/4230 * Log out BA failures as errors by @ahojnnes in https://github.com/colmap/colmap/pull/4231 * Fix dangling pointers in OptionManager after ResetOptions by @B1ueber2y in https://github.com/colmap/colmap/pull/4232 * Fix model_aligner crash by using new pose prior API by @B1ueber2y in https://github.com/colmap/colmap/pull/4233 * Prevent nested threading for ONNX by @ahojnnes in https://github.com/colmap/colmap/pull/4235 * Scale max_image_size proportionally by feature extractor type in quality presets by @ahojnnes in https://github.com/colmap/colmap/pull/4236 * Rename reconstruction clusterer command to model clusterer by @ahojnnes in https://github.com/colmap/colmap/pull/4237 * Fix CPU parallelization for ALIKED by @ahojnnes in https://github.com/colmap/colmap/pull/4238 * feat: Added global mapping bindings by @TannerGilbert in https://github.com/colmap/colmap/pull/4228 -------------------------- COLMAP 3.13.0 (11/07/2025) -------------------------- New Features ------------ * Improved human-readable consistency checks when configuring a reconstruction with rigs, cameras, frames, and images. * Improved multi-GPU feature extraction & matching performance by avoiding global mutex. * Improved robustness of pose prior mapper against outlier priors. * Improved the performance of reconstruction initialization through parallelization. * Added CUDA-enabled pycolmap package for Linux and automatic publishing to PyPI. * Make the reconstruction process fully deterministic with a new random_seed parameter. * Added support for filtering stationary points in two-view geometry estimation. * Added option to perform geometric verification with rig constraints. * Added option to skip matching for image pairs within the same frame. * Added option to keep specific cameras or rigs constant during the reconstruction. * Added option to clean two-view geometries in database_cleaner. * Added option to specify timeout for incremental mapper. * Added an abstract database interface for easier integration with other database backends. * Added experimental support for feature sub-selection for global BA. * Added testing tools for synthetic reconstruction noise and image generation. * Added official support for Python 3.14. * Added support for Qt6 while still fully supporting Qt5. Bug Fixes --------- * Fixed various issues with new rig support. * Fixed rare deadlocks in feature matching. * Support for UTF-8 database paths in Windows. * Fixed bundle adjustment performance regression due to changed Gauge behavior. * Removed custom manifold from colmap to avoid issues with pyceres. * Fixed rare crash of GUI when clearing the model viewer. * Fixed focal length extraction from 35mm equivalent EXIF information. * Fixed coordinate bug in ComputeEqualPartsBboxes. Breaking Changes ---------------- * Dropped official support for Python 3.8. * Dropped official support for MacOS x86. * Upgraded to pybind11 3.X. * Removed deprecated rig bundle adjuster command in favor of rig configurator and default bundle adjuster supporting the same functionality. * Allow one-to-many matches in correspondence graph. Previously, only one-to-one matches were added to the correspondence graph and therefore other matches were not used during reconstruction. Full Change List (sorted temporally) ------------------------------------ * Autoselect compatible nvidia for docker by @MasahiroOgawa in https://github.com/colmap/colmap/pull/3454 * Add 3.12.1 changelog to main by @ahojnnes in https://github.com/colmap/colmap/pull/3461 * Add min_num_neighbors constraint for spatial matching by @StonerLing in https://github.com/colmap/colmap/pull/3463 * Refactor feature extraction/matching to support other features by @ahojnnes in https://github.com/colmap/colmap/pull/3465 * Define VisualIndex::Read as static in python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3467 * Only find C/CXX OpenMP components by @ahojnnes in https://github.com/colmap/colmap/pull/3469 * Remove unnecessary GPU checks in pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/3472 * Fix a bug affecting feature matching on GPU by @sarlinpe in https://github.com/colmap/colmap/pull/3473 * Add command line option for `TwoViewGeometry.detect_watermark` by @gareth-cross in https://github.com/colmap/colmap/pull/3476 * Add and test GetRelativePath by @sarlinpe in https://github.com/colmap/colmap/pull/3475 * Update GetPathBaseName to rely on std::filesystem by @sarlinpe in https://github.com/colmap/colmap/pull/3481 * Fix potential deadlock in job queue by @huluoboge in https://github.com/colmap/colmap/pull/3480 * Update FindMetis.cmake to also link GK_LIBRARIES by @yeicor in https://github.com/colmap/colmap/pull/3470 * Remove check in database_cache.cc that breaks backwards compatibility with image_list_file_path by @pd-karoly-harsanyi in https://github.com/colmap/colmap/pull/3478 * Fix docker run script for GUI by @MasahiroOgawa in https://github.com/colmap/colmap/pull/3483 * Ensure UTF-8 encoding for database paths passed to SQLite open by @StonerLing in https://github.com/colmap/colmap/pull/3482 * Add changelog for 3.12.2 release by @ahojnnes in https://github.com/colmap/colmap/pull/3488 * Add changelog for 3.12.3 release by @ahojnnes in https://github.com/colmap/colmap/pull/3490 * Fix BundleAdjustmentConfig::SetConstantRigFromWorldPose by @whuaegeanse in https://github.com/colmap/colmap/pull/3501 * Add random_seed option to RANSACOptions for reproducible TwoViewGeometry estimation by @StonerLing in https://github.com/colmap/colmap/pull/3492 * Configure trivial rigs for unconfigured images by @ahojnnes in https://github.com/colmap/colmap/pull/3497 * Fix pycolmap test command by @ahojnnes in https://github.com/colmap/colmap/pull/3506 * Pano SFM example improvements and fixes by @ahojnnes in https://github.com/colmap/colmap/pull/3503 * Support Python 3.14 and retire 3.8 by @ahojnnes in https://github.com/colmap/colmap/pull/3518 * Upgrade ruff and automatically apply fixes by @ahojnnes in https://github.com/colmap/colmap/pull/3515 * Update point3D errors after bundle adjustment or SfM by @whuaegeanse in https://github.com/colmap/colmap/pull/3500 * Add option to filter stationary points in two-view geometry estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3521 * Add unit test for watermark detection by @ahojnnes in https://github.com/colmap/colmap/pull/3524 * Fix comment for FilterStationaryMatches by @sarlinpe in https://github.com/colmap/colmap/pull/3525 * Ignore compile_commands.json in git by @ahojnnes in https://github.com/colmap/colmap/pull/3526 * Fix bundle adjustment performance regression due to changed Gauge by @ahojnnes in https://github.com/colmap/colmap/pull/3527 * Bind CUDA utils in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3532 * Add explicit tests for fixing gauge freedom and bugfix by @ahojnnes in https://github.com/colmap/colmap/pull/3533 * Fix format specifier overflow in WriteSnapshot() timestamp by @StonerLing in https://github.com/colmap/colmap/pull/3534 * Change input in cost function to log scale and remove custom manifold from colmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3538 * Throw exception when image.SetFramePtr() sets a frame without the image listed as its data. by @B1ueber2y in https://github.com/colmap/colmap/pull/3540 * Avoid frame having data from a sensor that does not exist in its associated rig. by @B1ueber2y in https://github.com/colmap/colmap/pull/3543 * Revert scale changes for metric reconstruction in rig sfm. by @B1ueber2y in https://github.com/colmap/colmap/pull/3530 * Fix comment for C++20 support. by @B1ueber2y in https://github.com/colmap/colmap/pull/3547 * Clean up unused includes in scene folder by @ahojnnes in https://github.com/colmap/colmap/pull/3548 * Add random_seed to IncrementalMapper to control all RANSAC seeds for improved SfM reproducibility by @StonerLing in https://github.com/colmap/colmap/pull/3544 * Throw exception at counting registered images when an image in the frame does not exist in the reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3546 * Clean up unused includes in retrieval folder by @ahojnnes in https://github.com/colmap/colmap/pull/3549 * Clean up unused includes in optim folder by @ahojnnes in https://github.com/colmap/colmap/pull/3550 * Fix ModelViewerWidget::ClearReconstruction by @whuaegeanse in https://github.com/colmap/colmap/pull/3552 * Fix build with Boost 1.89.0 by @cho-m in https://github.com/colmap/colmap/pull/3553 * Clean up unused includes in util folder by @ahojnnes in https://github.com/colmap/colmap/pull/3551 * Retire Mac x86 support by @ahojnnes in https://github.com/colmap/colmap/pull/3555 * Update database bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3556 * Throw exception for Frame::SetRigId when rig pointer is available. by @B1ueber2y in https://github.com/colmap/colmap/pull/3558 * Fix rig configuration with differing IDs between database and reconstruction by @ahojnnes in https://github.com/colmap/colmap/pull/3557 * Removing the Global Lock in SiftGPUFeatureMatcher for CUDA backend by @yimingc in https://github.com/colmap/colmap/pull/3561 * Add option to skip matching for image pairs in same frame by @ahojnnes in https://github.com/colmap/colmap/pull/3563 * Add option to keep specific cameras constant by @ahojnnes in https://github.com/colmap/colmap/pull/3565 * Throw exception if any camera in the rig does not exist in the reconstruction. by @B1ueber2y in https://github.com/colmap/colmap/pull/3564 * Clean up unused includes in controllers folder by @ahojnnes in https://github.com/colmap/colmap/pull/3566 * Extract image pair conversion functions into type utils by @ahojnnes in https://github.com/colmap/colmap/pull/3568 * Clean up unused includes in estimators folder by @ahojnnes in https://github.com/colmap/colmap/pull/3567 * Expect error threshold for generalized relative pose in pixel space by @ahojnnes in https://github.com/colmap/colmap/pull/3571 * Add function to read number of matches by @ahojnnes in https://github.com/colmap/colmap/pull/3572 * Add a test to ensure THROW_CHECK conditions are evaluated exactly once by @ahojnnes in https://github.com/colmap/colmap/pull/3573 * Simplify and reuse feature matcher thread creation by @ahojnnes in https://github.com/colmap/colmap/pull/3575 * Increase exhaustive matching cache size by @ahojnnes in https://github.com/colmap/colmap/pull/3576 * Add option to clean two-view geometries by @ahojnnes in https://github.com/colmap/colmap/pull/3577 * Decouple feature matching and two-view geometry options by @ahojnnes in https://github.com/colmap/colmap/pull/3578 * Display CLI floating-point defaults with 3 significant digits by @StonerLing in https://github.com/colmap/colmap/pull/3579 * Make use_log_scale an option for Point3DAlignmentCost. by @B1ueber2y in https://github.com/colmap/colmap/pull/3574 * Cache max number of keypoints by @ahojnnes in https://github.com/colmap/colmap/pull/3583 * Add tool for geometric verification by @ahojnnes in https://github.com/colmap/colmap/pull/3581 * Minor perf and code quality improvements for visual inverted index by @ahojnnes in https://github.com/colmap/colmap/pull/3584 * Upgrade pybind11 to 3.0.0 by @ahojnnes in https://github.com/colmap/colmap/pull/3523 * Fix missing colmap namespace in sqlite3 macro. by @B1ueber2y in https://github.com/colmap/colmap/pull/3587 * Use pybind smart holder for all classes by @ahojnnes in https://github.com/colmap/colmap/pull/3542 * Add option to perform geometric verification with rig constraints by @ahojnnes in https://github.com/colmap/colmap/pull/3498 * Use Qt QSettings to remember last-used paths across file dialogs by @MotivaCG in https://github.com/colmap/colmap/pull/3585 * Fix MaybeLoadImages by @whuaegeanse in https://github.com/colmap/colmap/pull/3586 * Sync 3.12 changelog changes by @ahojnnes in https://github.com/colmap/colmap/pull/3591 * Document rig-related feature matching options and change rig verification defaults by @ahojnnes in https://github.com/colmap/colmap/pull/3592 * Abstract database interface and sqlite implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3541 * Share feature extraction max_image_size option by @ahojnnes in https://github.com/colmap/colmap/pull/3600 * Support for reading RGB or grayscale images for feature extraction by @ahojnnes in https://github.com/colmap/colmap/pull/3603 * Support both Qt5 and Qt6 by @zhouzq-thu in https://github.com/colmap/colmap/pull/3597 * Add option to fix individual rigs by @ahojnnes in https://github.com/colmap/colmap/pull/3604 * Ensure download support on Ubuntu by installing libssl-dev for crypto by @ahojnnes in https://github.com/colmap/colmap/pull/3607 * Update pybind11 to 3.0.1 by @ahojnnes in https://github.com/colmap/colmap/pull/3609 * Fix focal length extraction from 35mm equivalent by @ahojnnes in https://github.com/colmap/colmap/pull/3617 * Update to Windows 2025 runners and pin pycolmap image versions by @ahojnnes in https://github.com/colmap/colmap/pull/3618 * Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3619 * Add bindings for mvs::model for covisibility support in pycolmap by @B1ueber2y in https://github.com/colmap/colmap/pull/3621 * Fix inconsistent pycolmap naming for RegisterFrame and DeRegisterFrame. by @B1ueber2y in https://github.com/colmap/colmap/pull/3623 * Add Conda package installation instructions by @Tobias-Fischer in https://github.com/colmap/colmap/pull/3624 * Call Retriangulate irrespective of the logging level by @sarlinpe in https://github.com/colmap/colmap/pull/3626 * Add missing rig and frame interfaces for pycolmap database. by @B1ueber2y in https://github.com/colmap/colmap/pull/3629 * Throw exception when the rig configurations of the database and existing reconstruction are inconsistent. by @B1ueber2y in https://github.com/colmap/colmap/pull/3628 * Improve the Gauge logic for fixing two views. by @B1ueber2y in https://github.com/colmap/colmap/pull/3627 * Add changelog for 3.12.6 release. by @B1ueber2y in https://github.com/colmap/colmap/pull/3632 * Ensure min/max_focal_length_ratio and max_extra_param are piped to triangulation by @ahojnnes in https://github.com/colmap/colmap/pull/3637 * Fix broken logic of removing cameras at Reconstruction::TearDown(). by @B1ueber2y in https://github.com/colmap/colmap/pull/3634 * Minor: resolve -Wsign-compare warning for min_num_inliers. by @B1ueber2y in https://github.com/colmap/colmap/pull/3639 * Remove redundant binding of feature module in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3640 * Remove plyfile python package copy due to GNU license by @ahojnnes in https://github.com/colmap/colmap/pull/3644 * rig_from_world and sensor_from_rig in pycolmap should return reference rather than copy. by @B1ueber2y in https://github.com/colmap/colmap/pull/3645 * Also replace mask file extension to .png instead of appending by @Dawars in https://github.com/colmap/colmap/pull/3611 * Fix crash when built without GPU support by @sarlinpe in https://github.com/colmap/colmap/pull/3649 * Replace custom filtering with image filter view by @ahojnnes in https://github.com/colmap/colmap/pull/3651 * Expose image_ids filter view in frame in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3652 * Simplify and fix updating cameras with priors in benchmarking by @ahojnnes in https://github.com/colmap/colmap/pull/3653 * Fix typo in patch match options documentation by @ahojnnes in https://github.com/colmap/colmap/pull/3655 * Consistently name local BA options and deduplicate local_ba_num_images by @ahojnnes in https://github.com/colmap/colmap/pull/3657 * Adjust reconstruction consistency checks by @ahojnnes in https://github.com/colmap/colmap/pull/3658 * Improve the doc for loop_detection_period. by @sarlinpe in https://github.com/colmap/colmap/pull/3661 * Expose comparison operators in Python bindings by @jhacsonmeza in https://github.com/colmap/colmap/pull/3663 * Feature sub-selection for global BA by @ahojnnes in https://github.com/colmap/colmap/pull/3650 * Compute alignment RANSAC max_error from RMS stddev and chi-square by @StonerLing in https://github.com/colmap/colmap/pull/3664 * Address clang-tidy 21 errors by @ahojnnes in https://github.com/colmap/colmap/pull/3668 * Extract synthetic reconstruction noise functionality into separate utility by @ahojnnes in https://github.com/colmap/colmap/pull/3670 * Fix copy assignment of image by @ahojnnes in https://github.com/colmap/colmap/pull/3671 * Add gmock matcher for checking approximate reconstruction equality by @ahojnnes in https://github.com/colmap/colmap/pull/3672 * Add gmock matcher for checking reconstruction equality by @ahojnnes in https://github.com/colmap/colmap/pull/3673 * Include cassert by @FlexW in https://github.com/colmap/colmap/pull/3674 * Parallelize incremental mapper initialization by @ahojnnes in https://github.com/colmap/colmap/pull/3675 * Add timeout option for incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3676 * Implement equals operator for FeatureKeypoint/Match by @ahojnnes in https://github.com/colmap/colmap/pull/3678 * Add method to update keypoints in database by @ahojnnes in https://github.com/colmap/colmap/pull/3679 * Fix noise synthesis to consistently update database keypoints by @ahojnnes in https://github.com/colmap/colmap/pull/3680 * Add missing binding for Reconstruction::DeleteAllPoints2DAndPoints3D. by @B1ueber2y in https://github.com/colmap/colmap/pull/3682 * Fix BA convergence setting bug during initialization by @ahojnnes in https://github.com/colmap/colmap/pull/3677 * Add notice of the version of panorama_sfm.py by @sarlinpe in https://github.com/colmap/colmap/pull/3685 * Cuda-Enabled Pip Package (Linux x86-64 only) by @Tobias314 in https://github.com/colmap/colmap/pull/3608 * Update to CUDA 12.9.1 in CI by @ahojnnes in https://github.com/colmap/colmap/pull/3610 * Add test for BA controller by @ahojnnes in https://github.com/colmap/colmap/pull/3683 * Add tests for option manager by @ahojnnes in https://github.com/colmap/colmap/pull/3684 * Add tests for feature matching controllers by @ahojnnes in https://github.com/colmap/colmap/pull/3686 * Remove unused variable in reconstruction test by @ahojnnes in https://github.com/colmap/colmap/pull/3691 * Update the logic of duplicate correspondence to support one-to-many matches. by @B1ueber2y in https://github.com/colmap/colmap/pull/3681 * Some misc code improvements for ObservationManager by @ahojnnes in https://github.com/colmap/colmap/pull/3689 * Update PyPI publishing by @sarlinpe in https://github.com/colmap/colmap/pull/3692 * Update deprecated Eigen JacobiSVD usage by @ahojnnes in https://github.com/colmap/colmap/pull/3690 * Add unit test for feature extraction controller by @ahojnnes in https://github.com/colmap/colmap/pull/3693 * Update to latest clang-format 20.1.5 by @ahojnnes in https://github.com/colmap/colmap/pull/3694 * Add function to synthesize images by @ahojnnes in https://github.com/colmap/colmap/pull/3696 * Remove deprecated rig bundle adjuster by @B1ueber2y in https://github.com/colmap/colmap/pull/3698 * Fix coordinate bug in ComputeEqualPartsBboxes by @ahojnnes in https://github.com/colmap/colmap/pull/3700 * Create unit test for automatic reconstruction controller by @ahojnnes in https://github.com/colmap/colmap/pull/3697 * Add unit test for HammingDistanceWeightFunctor by @ahojnnes in https://github.com/colmap/colmap/pull/3702 * Add unit test for option manager parsing and move sys exit to call sites by @ahojnnes in https://github.com/colmap/colmap/pull/3703 * Add unit test for feature importer controller by @ahojnnes in https://github.com/colmap/colmap/pull/3704 -------------------------- COLMAP 3.12.6 (09/17/2025) -------------------------- Improvements ------------ * Upgrade to pybind 3.0.1 and use smart holder for all classes. * Support both Qt5 and Qt6. * Ensure download support on Ubuntu by installing libssl-dev for crypto. * Add bindings for mvs::model for covisibility support in pycolmap. * Add missing rig and frame interfaces for pycolmap database. * Throw exception when the rig configurations of the database and existing reconstruction are inconsistent. * Improve the Gauge logic for fixing two views. Bug Fixes --------- * Fix focal length extraction from 35mm equivalent. * Fix inconsistent pycolmap naming for RegisterFrame and DeRegisterFrame. * Call Retriangulate irrespective of the logging level. * Fix bundle adjustment with constant rig from world pose. -------------------------- COLMAP 3.12.5 (08/22/2025) -------------------------- Improvements ------------ * Add various safety checks with more understandable error messages when adding misconfigured rigs/cameras/frames/images to the reconstruction. * Recover original metric reconstruction scale in case of configured rigs. Bug Fixes --------- * Fix incompatibilities due to redundant symbol definition in pycolmap/pyceres. * Fix error threshold for generalized relative pose to be in pixel space. * Fix rig configuration in case of inconsistent IDs in database/reconstruction. * Fix missing colmap namespace in sqlite3 macro. * Fix CMake configuration with Boost 1.89 or newer. * Fix viewer crash when clearing the reconstruction. -------------------------- COLMAP 3.12.4 (08/04/2025) -------------------------- Bug Fixes --------- * Fix global bundle adjustment performance regression due to changing gauge fixing mechanism by fixing points vs. cameras. -------------------------- COLMAP 3.12.3 (07/16/2025) -------------------------- Bug Fixes --------- * Set correct version number -------------------------- COLMAP 3.12.2 (07/16/2025) -------------------------- Bug Fixes --------- * Define VisualIndex::Read as static in python bindings * Only find C/CXX OpenMP components to support new CMake versions * Fix a bug affecting feature matching on GPU * Fix potential deadlock in job queue * Update FindMetis.cmake to also link GK_LIBRARIES * Fix backwards compatibility in mapper with custom image list * Fix docker run script for GUI -------------------------- COLMAP 3.12.1 (07/05/2025) -------------------------- Bug Fixes --------- * Fix Docker runtime libraries * Fix spatial matcher bug * Minor fixes for documentation -------------------------- COLMAP 3.12.0 (06/30/2025) -------------------------- New Features ------------ * Support for modeling sensor rigs (and thus multi-camera rigs and panoramas). For more details and usage examples, see: https://colmap.github.io/rigs.html. * Automatic download and caching of vocabulary trees and other resources. * Support for converting between LLA and UTM coordinates. * Improved minimal solvers for affine transform and generalized absolute/relative pose. * Improved absolute pose estimation by minimizing pixel error in image space. * Replaced FLANN with faiss for fast approximate nearest neighbor search for improved speed in CPU-based feature matching and vocabulary tree-based image retrieval. * Support for propagating relative pose covariance. * Support visualization of models with arbitrary origin and scale (e.g., in GPS space). * Reconstruction benchmark for ETH3D, IMC, BlendedMVS datasets. * Measure and report code test coverage in CI. Bug Fixes --------- * Fixed RANSAC stopping criterion, see https://arxiv.org/pdf/2503.07829. * Fixed and improved two-view pose and triangulation angle estimation. * Fix rare deadlock during vocab tree feature matching. * For other bug fixes, see full list of changes below. Breaking Changes ---------------- * Serialization of reconstruction and database contains a new abstraction: rigs and frames. The reconstruction output contains two new files `rigs.{bin,txt}` and `frames.{bin,txt}`. The database contains new tables: `rigs`, `rig_sensors`, `frames`, `frames_data`. Reading from existing reconstructions and databases (without rigs/frames) is fully backwards compatible and vice versa reading new reconstructions (with rigs/frames) using old code is fully forwards compatible. * Sensor poses (and thus image poses) are now composed as: `sensor_from_world = sensor_from_rig * rig_from_world`. Previously, `image.cam_from_world` returned a reference to the pose parameters. Now it returns a copy of the pose composition: `image.cam_from_world() = image.frame.rig.sensor_from_rig(image.camera.sensor_id) * image.frame.rig_from_world` with the underlying pose parameters stored in the rig and frame objects. * Default bundle adjuster supports sensor rigs and thus rig bundle adjuster is deprecated. * FLANN-based vocabulary trees are incompatible with faiss. New trees automatically downloaded, if no vocab_tree_path is provided, otherwise manual download and update required. * Removed official support for Ubuntu 20.04, MacOS 13, and Visual Studio 2019. Full Change List (sorted temporally) ------------------------------------ * Cancel previous Github action runs upon push by @ahojnnes in https://github.com/colmap/colmap/pull/2998 * Fix ccache installation in pycolmap windows CI by @ahojnnes in https://github.com/colmap/colmap/pull/2997 * Use Azure blob storage as vcpkg binary cache by @ahojnnes in https://github.com/colmap/colmap/pull/2999 * Add missing openmp flags in retrieval for flann parallelization by @ahojnnes in https://github.com/colmap/colmap/pull/3018 * Separate read and write SAS tokens for vcpkg binary cache by @ahojnnes in https://github.com/colmap/colmap/pull/3027 * Define vcpkg binary cache source inline by @ahojnnes in https://github.com/colmap/colmap/pull/3028 * Fix conditional vcpkg binary cache config in bash by @ahojnnes in https://github.com/colmap/colmap/pull/3031 * Avoid absolute path for the include directory installation by @jhacsonmeza in https://github.com/colmap/colmap/pull/3024 * Add conversion between LLA and UTM coords. by @StonerLing in https://github.com/colmap/colmap/pull/3030 * Improve interface for ReadWriteBinaryBlob and add tests by @ahojnnes in https://github.com/colmap/colmap/pull/3033 * Add support for downloading files by @ahojnnes in https://github.com/colmap/colmap/pull/3022 * Add function to compute sha256 digest by @ahojnnes in https://github.com/colmap/colmap/pull/3035 * Automatically download and cache vocabulary tree by @ahojnnes in https://github.com/colmap/colmap/pull/3036 * Set vcpkg default features and synchronize to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3038 * Avoid unnecessary copy of input elements in Percentile/Median by @ahojnnes in https://github.com/colmap/colmap/pull/3039 * Abstract algorithm class IncrementalMapperImpl by @B1ueber2y in https://github.com/colmap/colmap/pull/3040 * Perform linear interpolation in percentile computation by @ahojnnes in https://github.com/colmap/colmap/pull/3041 * Avoid dependent inputs in IncrementalMapperImpl by @B1ueber2y in https://github.com/colmap/colmap/pull/3043 * Reorder destructors for better safety in EndReconstruction by @B1ueber2y in https://github.com/colmap/colmap/pull/3046 * Improvements for reconstruction normalization / bbox / centroid by @ahojnnes in https://github.com/colmap/colmap/pull/3047 * Speedup affine transform minimal solver, create python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3049 * Fix compilation with DOWNLOAD_ENABLED=OFF by @ahojnnes in https://github.com/colmap/colmap/pull/3053 * Consistent interface/tests for rigid3d/sim3d/affine2d, pycolmap bindings for rigid3d by @ahojnnes in https://github.com/colmap/colmap/pull/3051 * Improve logging for errors in masking during feature extraction by @Ambrosiussen in https://github.com/colmap/colmap/pull/3034 * Add copy constructor support for solver-related ceres bindings by @B1ueber2y in https://github.com/colmap/colmap/pull/3059 * Minor fix on using pycolmap bundle adjuster with pyceres by @B1ueber2y in https://github.com/colmap/colmap/pull/3060 * Re-enable interface support for covariance estimation from a Ceres::Problem instance by @B1ueber2y in https://github.com/colmap/colmap/pull/3061 * Only cancel CI runs in PRs and not in main/release branches by @ahojnnes in https://github.com/colmap/colmap/pull/3063 * Add binding support for invalid values in pycolmap id types by @B1ueber2y in https://github.com/colmap/colmap/pull/3072 * Fix custom quality level in ETH3D benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/3076 * Set max_num_features automatically per quality level by @ahojnnes in https://github.com/colmap/colmap/pull/3077 * Make it possible to build the MVS doc even when CUDA is not installed by @sarlinpe in https://github.com/colmap/colmap/pull/3078 * Temporarily disable ccache in the pycolmap macOS CI by @sarlinpe in https://github.com/colmap/colmap/pull/3084 * Add option to specify image list in automatic reconstruction by @ahojnnes in https://github.com/colmap/colmap/pull/3074 * Only create OpenGL context in automatic reconstruction if necessary by @ahojnnes in https://github.com/colmap/colmap/pull/3075 * Remove unnecessary braces around initializer in pycolmap/covariance by @ahojnnes in https://github.com/colmap/colmap/pull/3080 * Remove temporary fixes for macOS CI by @sarlinpe in https://github.com/colmap/colmap/pull/2954 * Reconstruction benchmark by @ahojnnes in https://github.com/colmap/colmap/pull/2714 * Re-enable ccache in pycolmap Mac CI by @sarlinpe in https://github.com/colmap/colmap/pull/3085 * Fix transitive completion in incremental triangulator by @ahojnnes in https://github.com/colmap/colmap/pull/3094 * Fix image deletion, hide point viewer widget after deletion by @ahojnnes in https://github.com/colmap/colmap/pull/3098 * Fix download functionality under Windows by @ahojnnes in https://github.com/colmap/colmap/pull/3099 * Add back detailed logs for covariance estimation by @B1ueber2y in https://github.com/colmap/colmap/pull/3082 * Fix reprojection error in camera rig cost function by @binbin-xu in https://github.com/colmap/colmap/pull/3106 * Install missing libcurl4 runtime library in dockerfile by @ahojnnes in https://github.com/colmap/colmap/pull/3122 * Expose incremental mapper pose prior options in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3123 * Remove year from copyright by @ahojnnes in https://github.com/colmap/colmap/pull/3124 * Use poselib for generalized absolute pose minimal solver by @ahojnnes in https://github.com/colmap/colmap/pull/3125 * Add code coverage reporting by @ahojnnes in https://github.com/colmap/colmap/pull/3126 * Fix synthetic prior generation when stddev=0 by @ahojnnes in https://github.com/colmap/colmap/pull/3128 * Create temporary colmap test directy under system test directory by @ahojnnes in https://github.com/colmap/colmap/pull/3129 * Minor: pyceres is no longer a must for running pycolmap bundle adjuster by @B1ueber2y in https://github.com/colmap/colmap/pull/3130 * Fix cost functor convention for benchmarking by @B1ueber2y in https://github.com/colmap/colmap/pull/3131 * Support enum from string conversion by @ahojnnes in https://github.com/colmap/colmap/pull/3132 * More robustly handle degenerate triangulation angles by @ahojnnes in https://github.com/colmap/colmap/pull/3135 * Minor: add missing empty namespace in alignment testing script by @B1ueber2y in https://github.com/colmap/colmap/pull/3137 * Add frame impl for future rig support by @B1ueber2y in https://github.com/colmap/colmap/pull/2698 * Rename RigCalibration to RigCalib by @ahojnnes in https://github.com/colmap/colmap/pull/3142 * Fix and improve two-view pose and triangulation angle estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3146 * Fix covariance propagation of pose inverse by @B1ueber2y in https://github.com/colmap/colmap/pull/3155 * [Spherical Camera Support] Change essential matrix estimation to use camera rays by @ahojnnes in https://github.com/colmap/colmap/pull/3159 * Improve incremental mapper initialization logic by @ahojnnes in https://github.com/colmap/colmap/pull/3161 * Improved RANSAC dependency injection by @ahojnnes in https://github.com/colmap/colmap/pull/3165 * Add docs on the left convention in COLMAP for covariance propagation. by @B1ueber2y in https://github.com/colmap/colmap/pull/3167 * Add docker instruction link to docs by @j3soon in https://github.com/colmap/colmap/pull/3169 * Compute absolute pose estimation error in image space by @ahojnnes in https://github.com/colmap/colmap/pull/3166 * Add support for propagating relative pose covariance. by @B1ueber2y in https://github.com/colmap/colmap/pull/3168 * Avoid using namespace in pycolmap headers by @ahojnnes in https://github.com/colmap/colmap/pull/3173 * Fix naming of cross covariance and add relative pose covariance interface by @B1ueber2y in https://github.com/colmap/colmap/pull/3170 * Camera models perform valid projection test by @ahojnnes in https://github.com/colmap/colmap/pull/3172 * Various improvements and extensions for pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3176 * Fix pycolmap ci build for pull requests by @B1ueber2y in https://github.com/colmap/colmap/pull/3178 * Change CamFromImg to return optional ray by @ahojnnes in https://github.com/colmap/colmap/pull/3180 * Triangulation operates on camera rays by @ahojnnes in https://github.com/colmap/colmap/pull/3184 * Python bindings for visual index by @ahojnnes in https://github.com/colmap/colmap/pull/3185 * Define bindings in the correct order by @sarlinpe in https://github.com/colmap/colmap/pull/3189 * Restore CamFromImg to return normalized camera coordinates instead of… by @ahojnnes in https://github.com/colmap/colmap/pull/3193 * Add Rig serialization support to reconstruction+database by @ahojnnes in https://github.com/colmap/colmap/pull/3143 * Pull changes from main branch by @ahojnnes in https://github.com/colmap/colmap/pull/3194 * Fix maybe-uninitialized warnings by @papjuli in https://github.com/colmap/colmap/pull/3199 * Fix compilation errors with PoissonRecon by @theartful in https://github.com/colmap/colmap/pull/3200 * Remove Ubuntu 20.04 from the CI by @sarlinpe in https://github.com/colmap/colmap/pull/3203 * Add support for frame serialization by @ahojnnes in https://github.com/colmap/colmap/pull/3202 * Handle non-trivial frames in bundle adjustment by @ahojnnes in https://github.com/colmap/colmap/pull/3214 * Update email address by @sarlinpe in https://github.com/colmap/colmap/pull/3223 * Change the root of the Python package by @sarlinpe in https://github.com/colmap/colmap/pull/3217 * Fix bug when toggling rendering by @ahojnnes in https://github.com/colmap/colmap/pull/3230 * Add convenience iterator for frame image ids by @ahojnnes in https://github.com/colmap/colmap/pull/3231 * Update feature/rig with main by @ahojnnes in https://github.com/colmap/colmap/pull/3241 * Update to latest vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/3243 * Update feature/rig branch with latest changes in main by @ahojnnes in https://github.com/colmap/colmap/pull/3244 * Fix incremental pycolmap build script by @ahojnnes in https://github.com/colmap/colmap/pull/3245 * Logically group image reader options by @ahojnnes in https://github.com/colmap/colmap/pull/3246 * Fix chained match synthesis by @ahojnnes in https://github.com/colmap/colmap/pull/3248 * Retire Reconstruction::IsImageRegistered in favor of existing Image::HasPose by @ahojnnes in https://github.com/colmap/colmap/pull/3247 * Fix two-view geometry pose estimation for homography by @ahojnnes in https://github.com/colmap/colmap/pull/3250 * Fix uninitialized variable warnings by @ahojnnes in https://github.com/colmap/colmap/pull/3254 * Include Boost headers on build by @jonahjnewton in https://github.com/colmap/colmap/pull/3257 * Pull latest changes from main to feature/rig by @ahojnnes in https://github.com/colmap/colmap/pull/3262 * Support rigs/frames in incremental mapper by @ahojnnes in https://github.com/colmap/colmap/pull/3238 * Rename FrameFromWorld to RigFromWorld pose by @ahojnnes in https://github.com/colmap/colmap/pull/3263 * Add pytest on the e2e python pipeline into CI. by @B1ueber2y in https://github.com/colmap/colmap/pull/3266 * Fix broken python interfaces by @B1ueber2y in https://github.com/colmap/colmap/pull/3267 * Use generalized absolute pose estimation for non-trivial frames by @ahojnnes in https://github.com/colmap/colmap/pull/3265 * Fix color extraction for rig frames by @ahojnnes in https://github.com/colmap/colmap/pull/3268 * Sequential matcher expands rig images by @ahojnnes in https://github.com/colmap/colmap/pull/3270 * Fix usage of deprecated pycolmap interfaces in pycolmap README. by @B1ueber2y in https://github.com/colmap/colmap/pull/3272 * Improved code/docs and tests for rig configuration by @ahojnnes in https://github.com/colmap/colmap/pull/3275 * Update vcpkg to pull in fixes for ceres by @ahojnnes in https://github.com/colmap/colmap/pull/3276 * Rig bundle adjuster uses default bundle adjustment routine by @ahojnnes in https://github.com/colmap/colmap/pull/3281 * Cleanup legacy camera rig code by @ahojnnes in https://github.com/colmap/colmap/pull/3283 * Store rig sensors and frame data in separate database tables by @ahojnnes in https://github.com/colmap/colmap/pull/3285 * Configure trivial rigs and frames during feature extraction by @ahojnnes in https://github.com/colmap/colmap/pull/3287 * [Bugfix] Center 2D points by principal point for absolute pose estimation with unknown focal length by @xjiangan in https://github.com/colmap/colmap/pull/3289 * Add bindings for rig configuration by @ahojnnes in https://github.com/colmap/colmap/pull/3291 * Documentation for rig support by @ahojnnes in https://github.com/colmap/colmap/pull/3290 * Fix documentation of rigs.txt by @sarlinpe in https://github.com/colmap/colmap/pull/3292 * Update feature/rig with latest changes in main by @ahojnnes in https://github.com/colmap/colmap/pull/3293 * Merge feature/rig branch into main by @ahojnnes in https://github.com/colmap/colmap/pull/3295 * improve clarity of the rig example by @B1ueber2y in https://github.com/colmap/colmap/pull/3297 * Bind missing SequentialMatchingOptions.loop_detection_period by @sarlinpe in https://github.com/colmap/colmap/pull/3299 * cleanup legacy comments for base controller. by @B1ueber2y in https://github.com/colmap/colmap/pull/3300 * Fix bug in grayscale Bitmap.to_array by @sarlinpe in https://github.com/colmap/colmap/pull/3301 * Handle errors in Bitmap.read by @sarlinpe in https://github.com/colmap/colmap/pull/3302 * Add an example script for SfM with 360 spherical images by @sarlinpe in https://github.com/colmap/colmap/pull/3304 * Recognize URIs for vocab_tree_path in GUI feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/3305 * Deterministic behavior for Python pipeline tests by @ahojnnes in https://github.com/colmap/colmap/pull/3306 * Move colmap/ui/main_window.h include to implementation by @ahojnnes in https://github.com/colmap/colmap/pull/3307 * Add Python 3.13 to pycolmap build matrix by @ahojnnes in https://github.com/colmap/colmap/pull/3308 * Add missing SiftMatchingOptions::cpu_brute_force_matcher to pycolmap bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3309 * Augment pinhole renders with GPS EXIFs of the panos by @sarlinpe in https://github.com/colmap/colmap/pull/3310 * Add missing cpu_brute_force_matcher to option manager by @ahojnnes in https://github.com/colmap/colmap/pull/3315 * Bind GPSTransform and make GPSTransform::Ellipsoid an enum class by @sarlinpe in https://github.com/colmap/colmap/pull/3311 * Update pose prior bundle adjuster to handle rigs by @ahojnnes in https://github.com/colmap/colmap/pull/3312 * Add support for running pose prior mapper from GUI by @ahojnnes in https://github.com/colmap/colmap/pull/3313 * Enable different matcher types and default to sequential in pano example by @ahojnnes in https://github.com/colmap/colmap/pull/3314 * Modularize reconstruction I/O formats into different libraries by @ahojnnes in https://github.com/colmap/colmap/pull/3317 * Fall back to P3P solver for panoramic generalized absolute pose by @ahojnnes in https://github.com/colmap/colmap/pull/3318 * Fix FLANN-based CPU feature matcher crash in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/3320 * Update cibuildwheel to 2.23.2 by @ahojnnes in https://github.com/colmap/colmap/pull/3081 * Assume prior focal length for explicitly defined rig camera models by @ahojnnes in https://github.com/colmap/colmap/pull/3321 * Fix rig configuration with partial input reconstruction by @ahojnnes in https://github.com/colmap/colmap/pull/3322 * Use reference for image.camera and image.frame in pycolmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3323 * Use reference for frame.rig in pycolmap. by @B1ueber2y in https://github.com/colmap/colmap/pull/3324 * Cosmetic improvement on some geometry python bindings by @B1ueber2y in https://github.com/colmap/colmap/pull/3325 * Add unit test for EstimateAbsolutePose by @ahojnnes in https://github.com/colmap/colmap/pull/3327 * Add gmock matchers for rigid3 and sim3 by @ahojnnes in https://github.com/colmap/colmap/pull/3328 * Add unit tests for absolute pose refinement by @ahojnnes in https://github.com/colmap/colmap/pull/3330 * Cosmetic cleanup for absolute pose tests by @ahojnnes in https://github.com/colmap/colmap/pull/3333 * Add generalized relative pose estimation and pose binding cleanups by @ahojnnes in https://github.com/colmap/colmap/pull/3334 * Turn camera parameter access debug checks into throwing checks by @ahojnnes in https://github.com/colmap/colmap/pull/3337 * Handle panoramic rigs in generalized relative pose estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3338 * Cosmetic variable name improvements to match conventions by @ahojnnes in https://github.com/colmap/colmap/pull/3341 * Add unit test for relative pose estimation by @ahojnnes in https://github.com/colmap/colmap/pull/3342 * Avoid nested parallelization for vocab tree pairing by @ahojnnes in https://github.com/colmap/colmap/pull/3343 * Fix rigid3/sim3 matchers for older eigen versions by @ahojnnes in https://github.com/colmap/colmap/pull/3344 * Deterministic homography test by @ahojnnes in https://github.com/colmap/colmap/pull/3346 * Add missing return statement in PyEstimateGeneralizedRelativePose by @ahojnnes in https://github.com/colmap/colmap/pull/3349 * Fix runtime error in panorama_sfm.py with sequential matching by @samuelm2 in https://github.com/colmap/colmap/pull/3351 * Fix race conditions in feature matcher cache by @ahojnnes in https://github.com/colmap/colmap/pull/3354 * Use shared lock in thread safe LRU cache by @ahojnnes in https://github.com/colmap/colmap/pull/3355 * Upgrade Jimver/cuda-toolkit GH actions task to 0.2.23 by @ahojnnes in https://github.com/colmap/colmap/pull/3358 * Upgrade to Ubuntu 24.04 / clang-18 in CI for ASan and ClangTidy builds by @ahojnnes in https://github.com/colmap/colmap/pull/3357 * Use add_compile_definitions instead of deprecated add_definitions by @ahojnnes in https://github.com/colmap/colmap/pull/3348 * Update Mac Github runners and fix pycolmap deployment targets by @ahojnnes in https://github.com/colmap/colmap/pull/3361 * Suppress CUDA warnings related constexpr host/device calls by @ahojnnes in https://github.com/colmap/colmap/pull/3362 * Update docker image to ubuntu 24.04 by @ahojnnes in https://github.com/colmap/colmap/pull/3363 * Fix benchmarking for rigs by @ahojnnes in https://github.com/colmap/colmap/pull/3364 * Add option to overwrite matches in benchmarking by @ahojnnes in https://github.com/colmap/colmap/pull/3365 * Replace flann with faiss by @ahojnnes in https://github.com/colmap/colmap/pull/3350 * Update docker with all major CUDA archs and updated boost version by @ahojnnes in https://github.com/colmap/colmap/pull/3369 * Retire remaining flann components and remove as dependency by @ahojnnes in https://github.com/colmap/colmap/pull/3370 * Update feature index to use float descriptors and distances by @ahojnnes in https://github.com/colmap/colmap/pull/3371 * Fix deadlock during feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/3373 * Warn user when reading legacy flann index by @ahojnnes in https://github.com/colmap/colmap/pull/3372 * expose loading database into database cache from DatabaseCache::Create. by @B1ueber2y in https://github.com/colmap/colmap/pull/3375 * minor: rename DatabaseCache::LoadDatabase to Load by @B1ueber2y in https://github.com/colmap/colmap/pull/3376 * Fix typo by @B1ueber2y in https://github.com/colmap/colmap/pull/3377 * Unit tests for image reader, remove redundant definition of database by @ahojnnes in https://github.com/colmap/colmap/pull/3383 * Fix trailing comma-separation when printing list contents by @ahojnnes in https://github.com/colmap/colmap/pull/3388 * Add missing VocabTreeMatching.num_threads in option manager by @ahojnnes in https://github.com/colmap/colmap/pull/3389 * Use OpenBLAS OpenMP version under Ubuntu to fix slow faiss by @ahojnnes in https://github.com/colmap/colmap/pull/3390 * Speedup database reads of rigs/frames with single SQL outer join query by @ahojnnes in https://github.com/colmap/colmap/pull/3387 * Introduce context manager to reset sqlite3 statements by @ahojnnes in https://github.com/colmap/colmap/pull/3392 * Add missing use_gpu options in pycolmap SIFT bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3397 * Add FeatureMatch python bindings by @ahojnnes in https://github.com/colmap/colmap/pull/3398 * Add option to set log level in GUI by @ahojnnes in https://github.com/colmap/colmap/pull/3399 * Add docs to explain the concepts of rigs and frames. by @B1ueber2y in https://github.com/colmap/colmap/pull/3395 * Allow png mask without double extension by @MotivaCG in https://github.com/colmap/colmap/pull/3284 * Propagate macros to top-level CMakeLists.txt files by @jhacsonmeza in https://github.com/colmap/colmap/pull/3396 * Add a missing function implementation by @lpanaf in https://github.com/colmap/colmap/pull/3412 * Improved tests for reconstruction merging by @ahojnnes in https://github.com/colmap/colmap/pull/3413 * Use MKL as BLAS vendor for faiss by @ahojnnes in https://github.com/colmap/colmap/pull/3393 * Fix wrong doc for point covariance by @B1ueber2y in https://github.com/colmap/colmap/pull/3416 * Add legacy docs from 3.8 to 3.11. by @B1ueber2y in https://github.com/colmap/colmap/pull/3414 * Do not filter existing, fixed frames by @ahojnnes in https://github.com/colmap/colmap/pull/3403 * Tag commit id and date in the doc generation by @B1ueber2y in https://github.com/colmap/colmap/pull/3417 * Return bad initial pair when number of triangulation is less than abs_pose_min_num_inliers by @B1ueber2y in https://github.com/colmap/colmap/pull/3418 * Add option to build with thread sanitizer flags by @ahojnnes in https://github.com/colmap/colmap/pull/3420 * Add option to build with undefined behavior sanitizer flags by @ahojnnes in https://github.com/colmap/colmap/pull/3421 * Fix the RANSAC stopping criterion by @ahojnnes in https://github.com/colmap/colmap/pull/3425 * Replace incorrect call to nonZeros by @sarlinpe in https://github.com/colmap/colmap/pull/3426 * Add deprecation warning for rig_bundle_adjuster by @sarlinpe in https://github.com/colmap/colmap/pull/3427 * Fix incorrect include in euclidean_transform.h by @sarlinpe in https://github.com/colmap/colmap/pull/3428 * Add Frame::SetCamFromWorld in pycolmap and fix comment. by @B1ueber2y in https://github.com/colmap/colmap/pull/3429 * Estimate essential matrix using camera rays instead of points by @ahojnnes in https://github.com/colmap/colmap/pull/3423 * Fix FilterPoints3DWithSmallTriangulationAngle to return number of filtered observations by @whuaegeanse in https://github.com/colmap/colmap/pull/3424 * Update to latest vcpkg commit by @ahojnnes in https://github.com/colmap/colmap/pull/3430 * Initialize from non-trivial frame pairs using generalized relative pose by @ahojnnes in https://github.com/colmap/colmap/pull/3419 * Fix setup_ubuntu.sh for docker by @MasahiroOgawa in https://github.com/colmap/colmap/pull/3432 * Support visualization of models with arbitrary origin and scale by @ahojnnes in https://github.com/colmap/colmap/pull/3044 * Fix ReadPositionPriorData to return valid and numerically more stable Position prior data by @whuaegeanse https://github.com/colmap/colmap/pull/3438 -------------------------- COLMAP 3.11.1 (12/06/2024) -------------------------- Bug Fixes --------- * Fix typo in pycolmap function align_reconstruction_to_locations interface by @B1ueber2y in https://github.com/colmap/colmap/pull/2961 * Add back some ceres bindings to use pycolmap bundle adjustment without pyceres by @B1ueber2y in https://github.com/colmap/colmap/pull/2985 * Fix setting of RANSAC max error in pose prior BA alignment by @ahojnnes in https://github.com/colmap/colmap/pull/2993 -------------------------- COLMAP 3.11.0 (11/28/2024) -------------------------- New Features ------------ * New pose prior based incremental mapper that can leverage absolute pose priors from e.g. GPS measurements. * New bundle adjustment covariance estimation functionality. Significantly faster and more robust than Ceres. * API documentation with auto-generated stubs for pycolmap. * Use PoseLib's minimal solvers for faster performance and improved robustness. * Experimental support for CUDA-based bundle adjustment through Ceres (disabled by default). * Support for reading 16-bit PNG grayscale images. * New RAD_TAN_THIN_PRISM_FISHEYE camera model in support of Meta's Project Aria devices. * Replace numerical with analytical Jacobian in image undistortion for better convergence. * Many more performance optimizations and other improvements. See full list of changes below. Bug Fixes --------- * Fixed non-deterministic behavior of CUDA SIFT feature extractor. Broken since 3.10 release. * Fixed orientation detection of covariant/affine SIFT feature extractor. Broken since initial release. * Fixed point triangulator crashing due to bug in observation manager. Broken since 3.10 release. * Fixed sequential feature matcher overlap missing the farthest image. Broken since initial release. * Fixed rare deadlock during matching due to concurrent database access. Broken since 3.10 release. * Fixed little/big endian detection. Broken since 3.1 release. * For other bug fixes, see full list of changes below. Breaking Changes ---------------- * Dropped official support for Ubuntu 18.04, Visual Studio 2019. * Upgrade to C++17 standard in C++ and C++14 in CUDA source code. * New ``pose_priors`` table in database in support of pose prior based mapper. * PyCOLMAP API: * ``align_reconstrution_to_locations`` is renamed to ``align_reconstruction_to_locations`` (typo). * ``pycomap.cost_functions`` becomes a module and should be explicitly imported as ``import pycolmap.cost_functions``. * Replaced ``Image.registered`` by ``Image.{has_pose,reset_pose}``. * Replaced ``Image.{get_valid_point2D_ids,get_valid_points2D}`` by ``Image.{get_observation_point2D_idxs,get_observation_points2D}``. * Replaced ``Track.{append,remove}`` by ``Track.{add_element,delete_element}``. * ``AbsolutePoseErrorCost`` becomes ``AbsolutePosePriorCost``. * ``MetricRelativePoseErrorCost`` becomes ``RelativePosePriorCost``. * The signature of ``ReprojErrorCost`` and related cost functions was changed: arguments are reordered, the detection uncertainty is now a 2x2 covariance matrix. * ``BundleAdjuster`` becomes virtual and should be created with ``pycolmap.create_default_bundle_adjuster()``. * ``absolute_pose_estimation`` becomes ``estimate_and_refine_absolute_pose``. * ``pose_refinement`` becomes ``refine_absolute_pose``. * ``essential_matrix_estimation`` becomes ``estimate_essential_matrix``. * ``fundamental_matrix_estimation`` becomes ``estimate_fundamental_matrix``. * ``rig_absolute_pose_estimation`` becomes ``estimate_and_refine_generalized_absolute_pose``. * ``homography_matrix_estimation`` becomes ``estimate_homography_matrix``. * ``squared_sampson_error`` becomes ``compute_squared_sampson_error``. * ``homography_decomposition`` becomes ``pose_from_homography_matrix``. * ``Rigid3d.essential_matrix`` becomes ``pycolmap.essential_matrix_from_pose``. Full Change List (sorted temporally) ------------------------------------ * Updates for pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/2672 * Trigger CI on release/* branches by @ahojnnes in https://github.com/colmap/colmap/pull/2673 * Use consistent versioning scheme between C++/Python by @ahojnnes in https://github.com/colmap/colmap/pull/2674 * Add cost function for 3D alignment (with covariance) by @B1ueber2y in https://github.com/colmap/colmap/pull/2621 * Numpy 2 compatibility by @sarlinpe in https://github.com/colmap/colmap/pull/2682 * Add fix for specifying the correct pycolmap CMake python development … by @fulkast in https://github.com/colmap/colmap/pull/2683 * Remove non existant flags of model_aligner from docs by @TamirCohen in https://github.com/colmap/colmap/pull/2696 * Reset CMAKE_MODULE_PATH to previous value by @mvieth in https://github.com/colmap/colmap/pull/2699 * Robustify nchoosek against overflow by @ahojnnes in https://github.com/colmap/colmap/pull/2706 * Observation manager needs to check if image_id exists before query operations by @bo-rc in https://github.com/colmap/colmap/pull/2704 * Remove pose prior from database.py:add_image by @sarlinpe in https://github.com/colmap/colmap/pull/2707 * Fix: sequential matcher overlap number should be inclusive by @flm8620 in https://github.com/colmap/colmap/pull/2701 * Fix table mangled by clang-format by @sweber1 in https://github.com/colmap/colmap/pull/2710 * Write out options to ini in full precision, relax bundle adjuster convergence by @ahojnnes in https://github.com/colmap/colmap/pull/2713 * Tests for pairing library in feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/2711 * Rename IncrementalMapperOptions to IncrementalPipelineOptions by @B1ueber2y in https://github.com/colmap/colmap/pull/2708 * Add support for CUDA sparse BA solver by @ahojnnes in https://github.com/colmap/colmap/pull/2717 * Rename HierarchicalMapperController to HierarchicalPipeline by @ahojnnes in https://github.com/colmap/colmap/pull/2718 * Make VisualIndex::Quantize const to improve readability by @IshitaTakeshi in https://github.com/colmap/colmap/pull/2723 * Fix CUDA_ENABLED macro in new bundle adjustment code by @drkoller in https://github.com/colmap/colmap/pull/2725 * Automatically generate stub files by @sarlinpe in https://github.com/colmap/colmap/pull/2721 * Add CUDA-based dense BA solver by @ahojnnes in https://github.com/colmap/colmap/pull/2732 * Improved and simplified caching in feature matching by @ahojnnes in https://github.com/colmap/colmap/pull/2731 * Fix colmap namespace in the macro support of logging. by @B1ueber2y in https://github.com/colmap/colmap/pull/2733 * Add callbacks by move by @ahojnnes in https://github.com/colmap/colmap/pull/2734 * Implement transitive matcher with pair generator + tests by @ahojnnes in https://github.com/colmap/colmap/pull/2735 * Provide reasonable defaults for some estimator options by @sarlinpe in https://github.com/colmap/colmap/pull/2745 * Fix mismatched Delaunay meshing options by @sarlinpe in https://github.com/colmap/colmap/pull/2748 * PyCOLMAP API documentation by @sarlinpe in https://github.com/colmap/colmap/pull/2749 * Improved pycolmap coverage and docs by @sarlinpe in https://github.com/colmap/colmap/pull/2752 * Follow-up fixes in pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2755 * Report errors in import_images by @sarlinpe in https://github.com/colmap/colmap/pull/2750 * Further simplification of feature matcher code by @ahojnnes in https://github.com/colmap/colmap/pull/2744 * Add missing ClearModifiedPoints3D by @sarlinpe in https://github.com/colmap/colmap/pull/2761 * Store shared camera ptr for reconstruction images by @ahojnnes in https://github.com/colmap/colmap/pull/2762 * Avoid unnecessary copy of queue in IncrementalTriangulator::Complete() by @ahojnnes in https://github.com/colmap/colmap/pull/2764 * Branch prediction for THROW_CHECK_NOTNULL by @ahojnnes in https://github.com/colmap/colmap/pull/2765 * Use shared camera pointer in more places by @ahojnnes in https://github.com/colmap/colmap/pull/2763 * Support switching camera directly with camera pointer by @B1ueber2y in https://github.com/colmap/colmap/pull/2767 * Add test for MergeReconstructions by @B1ueber2y in https://github.com/colmap/colmap/pull/2766 * Fix little/big endian detection by @ahojnnes in https://github.com/colmap/colmap/pull/2768 * Fix options for CUDA sparse BA solver by @whuaegeanse in https://github.com/colmap/colmap/pull/2758 * Rename SupperMeasurer::Compare for improved readability by @ahojnnes in https://github.com/colmap/colmap/pull/2774 * Improvements for install docs by @ahojnnes in https://github.com/colmap/colmap/pull/2773 * fixed typo of align_reconstrution_to_locations to align_reconstructio… by @TamirCohen in https://github.com/colmap/colmap/pull/2776 * Fix missing camera ptr for Reconstruction.DeleteAllPoints2DAndPoints3D() by @B1ueber2y in https://github.com/colmap/colmap/pull/2779 * Rename remaining proj_matrix instances to cam_from_world by @ahojnnes in https://github.com/colmap/colmap/pull/2780 * Relative pose decomposition uses Rigid3d by @ahojnnes in https://github.com/colmap/colmap/pull/2781 * Minor renaming on pycolmap point2d and point3d filenames by @B1ueber2y in https://github.com/colmap/colmap/pull/2784 * Add validity check for pixel coordinate in the Fisheye camera. Fix tests. by @B1ueber2y in https://github.com/colmap/colmap/pull/2790 * Use branch prediction in PRNG functions by @ahojnnes in https://github.com/colmap/colmap/pull/2796 * Implementation of Aria Fisheye camera model by @nushakrishnan in https://github.com/colmap/colmap/pull/2786 * Upgrade to C++ 17 by @B1ueber2y in https://github.com/colmap/colmap/pull/2801 * Pose Prior based Incremental Mapper by @ferreram in https://github.com/colmap/colmap/pull/2660 * Expose UpdatePoint3DErrors to pycolmap by @theartful in https://github.com/colmap/colmap/pull/2805 * Switch to the Ruff Python formatter by @sarlinpe in https://github.com/colmap/colmap/pull/2803 * Add mixed Python-C++ PyCOLMAP package by @sarlinpe in https://github.com/colmap/colmap/pull/2747 * Enable Ruff linter for Python by @sarlinpe in https://github.com/colmap/colmap/pull/2806 * Use C++17 structured bindings in some places by @ahojnnes in https://github.com/colmap/colmap/pull/2808 * Add RAD_TAN_THIN_PRISM_FISHEYE to camera docs by @ahojnnes in https://github.com/colmap/colmap/pull/2810 * Customized cost functions should be functors instead by @B1ueber2y in https://github.com/colmap/colmap/pull/2811 * Install and use newer clang-format from pypi by @ahojnnes in https://github.com/colmap/colmap/pull/2812 * Return a reference in Reconstruction.image/camera/point3D by @sarlinpe in https://github.com/colmap/colmap/pull/2814 * Add test for PositionPriorErrorCostFunctor. by @ferreram in https://github.com/colmap/colmap/pull/2815 * Replace boost/filesystem with standard library by @ahojnnes in https://github.com/colmap/colmap/pull/2809 * Fix selection of BA solver type when there is no cuda by @ahojnnes in https://github.com/colmap/colmap/pull/2822 * More informative exception if invalid access of image/camera/point3D by @sarlinpe in https://github.com/colmap/colmap/pull/2825 * Use minimal solvers from poselib by @ahojnnes in https://github.com/colmap/colmap/pull/2288 * Disable -march=native flags in poselib by @ahojnnes in https://github.com/colmap/colmap/pull/2828 * Make ``Image::cam_from_world_`` optional by @sarlinpe in https://github.com/colmap/colmap/pull/2824 * Remove warning in configure step by @sarlinpe in https://github.com/colmap/colmap/pull/2830 * Fix coordinate notation in EstimateAbsolutePose by @ahojnnes in https://github.com/colmap/colmap/pull/2833 * Return success status in low-level triangulation functions by @ahojnnes in https://github.com/colmap/colmap/pull/2834 * Pin mypy version for tests by @ahojnnes in https://github.com/colmap/colmap/pull/2849 * Suppress CMP0167 warning for FindBoost under CMake 3.30 or newer by @ahojnnes in https://github.com/colmap/colmap/pull/2853 * Reconstruction reader/writer tests and scene class repr by @ahojnnes in https://github.com/colmap/colmap/pull/2842 * Select CUDA device when bundle adjustment uses GPU by @ahojnnes in https://github.com/colmap/colmap/pull/2846 * Fix copying behaviors of Reconstruction regarding camera pointers by @B1ueber2y in https://github.com/colmap/colmap/pull/2841 * Use the C++ string representation for Python dataclass objects by @sarlinpe in https://github.com/colmap/colmap/pull/2855 * Various improvements for pycolmap bindings by @ahojnnes in https://github.com/colmap/colmap/pull/2854 * Use analytical Jacobian in IterativeUndistortion. Add trust region by @B1ueber2y in https://github.com/colmap/colmap/pull/2857 * Improve the conditioning of covariance estimation by @B1ueber2y in https://github.com/colmap/colmap/pull/2860 * Avoid unnecessary copy of RANSAC inlier masks by @ahojnnes in https://github.com/colmap/colmap/pull/2863 * Various improvements for cost functors by @ahojnnes in https://github.com/colmap/colmap/pull/2867 * Rename ``*_mapper`` to ``*_pipeline`` files by @ahojnnes in https://github.com/colmap/colmap/pull/2870 * Update the manylinux CI to GCC 10 by @sarlinpe in https://github.com/colmap/colmap/pull/2873 * Fix rare deadlock during matching due to concurrent database access by @ahojnnes in https://github.com/colmap/colmap/pull/2876 * Add new and missing options to automatic reconstructor by @ahojnnes in https://github.com/colmap/colmap/pull/2877 * Shared auto diff cost function creation by @ahojnnes in https://github.com/colmap/colmap/pull/2878 * Enable model alignment to reference model by @ahojnnes in https://github.com/colmap/colmap/pull/2879 * Add covariance weighted cost functor by @ahojnnes in https://github.com/colmap/colmap/pull/2880 * Fix unused variable warnings under MSVC by @ahojnnes in https://github.com/colmap/colmap/pull/2884 * Skip all but latest Python version in PR builds by @ahojnnes in https://github.com/colmap/colmap/pull/2881 * [doc] Fix path to example in README.md by @kielnino in https://github.com/colmap/colmap/pull/2886 * Update Github actions versions by @ahojnnes in https://github.com/colmap/colmap/pull/2887 * [doc] Fix typo for gui menu item by @kielnino in https://github.com/colmap/colmap/pull/2885 * Fix input type for automatic stereo fusion on extreme quality setting by @ahojnnes in https://github.com/colmap/colmap/pull/2893 * Make target with all sources optional by @HernandoR in https://github.com/colmap/colmap/pull/2889 * Gracefully handle missing image pose in viewer by @ahojnnes in https://github.com/colmap/colmap/pull/2894 * Update to latest vcpkg release 2024.10.21 by @ahojnnes in https://github.com/colmap/colmap/pull/2908 * Fix conversion from CUDA texture references to objects in SIFT feature extraction by @ahojnnes in https://github.com/colmap/colmap/pull/2911 * Modernized bundle adjustment interface by @ahojnnes in https://github.com/colmap/colmap/pull/2896 * Add missing unit tests for reconstruction alignment functions by @ahojnnes in https://github.com/colmap/colmap/pull/2913 * Do not test EstimateManhattanWorldFrame if LSD is disabled by @sarlinpe in https://github.com/colmap/colmap/pull/2920 * Custom macro for enum to string support by @B1ueber2y in https://github.com/colmap/colmap/pull/2918 * Bind the estimation of Sim3d by @sarlinpe in https://github.com/colmap/colmap/pull/2903 * Initialize glog in custom gmock main function by @ahojnnes in https://github.com/colmap/colmap/pull/2916 * Update ccache for faster windows CI builds by @ahojnnes in https://github.com/colmap/colmap/pull/2922 * Fixes for Windows ARM64 support by @ahojnnes in https://github.com/colmap/colmap/pull/2921 * Move geometry implementation of ``__repr__``, ``__eq__`` overloads to C++ side by @ahojnnes in https://github.com/colmap/colmap/pull/2915 * Consistent interface and various improvements for pycolmap/estimators by @ahojnnes in https://github.com/colmap/colmap/pull/2923 * Exclude DetectLineSegments if LSD is disabled by @sarlinpe in https://github.com/colmap/colmap/pull/2927 * Enable reading 16bit/channel (png) images to grayscale by @Ediolot in https://github.com/colmap/colmap/pull/2924 * Cleanup of remaining pycolmap interfaces by @ahojnnes in https://github.com/colmap/colmap/pull/2925 * Fix affine SIFT feature orientation detection by @ahojnnes in https://github.com/colmap/colmap/pull/2929 * Improvements to deprecated pycolmap members by @sarlinpe in https://github.com/colmap/colmap/pull/2932 * Fix pkgconf installation in Mac CI by @ahojnnes in https://github.com/colmap/colmap/pull/2936 * Make sphinx show the pycolmap constructors by @sarlinpe in https://github.com/colmap/colmap/pull/2935 * Bind synthetic dataset functionality in pycolmap by @ahojnnes in https://github.com/colmap/colmap/pull/2938 * Cleaner import of C++ symbols by @sarlinpe in https://github.com/colmap/colmap/pull/2933 * Fix pycolmap breakage for Python 3.8 by @sarlinpe in https://github.com/colmap/colmap/pull/2941 * Remove legacy boost test macro by @ahojnnes in https://github.com/colmap/colmap/pull/2940 * Drop support for VS 2019 CI checks by @ahojnnes in https://github.com/colmap/colmap/pull/2943 * Fix CI cache thrashing by inconsistent vcpkg binary caching by @ahojnnes in https://github.com/colmap/colmap/pull/2942 * Introduce gmock Eigen matrix matchers by @ahojnnes in https://github.com/colmap/colmap/pull/2939 * Prevent double initialization of glog for <=0.5 by @sarlinpe in https://github.com/colmap/colmap/pull/2945 * Fixes and refactoring for bundle adjustment covariance estimation by @ahojnnes in https://github.com/colmap/colmap/pull/2788 * Fix duplicate library warnings in linking stage by @ahojnnes in https://github.com/colmap/colmap/pull/2871 * Add test for Python mapping pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/2946 * Add helper script for incremental pycolmap build by @ahojnnes in https://github.com/colmap/colmap/pull/2947 * Fix and consistently define Qt window flags by @ahojnnes in https://github.com/colmap/colmap/pull/2949 * Cross platform usage of monospace font by @ahojnnes in https://github.com/colmap/colmap/pull/2950 * Update to latest pybind11 version by @ahojnnes in https://github.com/colmap/colmap/pull/2952 * Update install instructions for Mac using homebrew by @ahojnnes in https://github.com/colmap/colmap/pull/2953 ------------------------ COLMAP 3.10 (07/23/2024) ------------------------ * Add missing "include " needed for unique_ptr by @Tobias-Fischer in https://github.com/colmap/colmap/pull/2338 * Support decoding multi-byte characters in Python script by @jot-jt in https://github.com/colmap/colmap/pull/2344 * Split Dockerfile in two stages: builder and runtime. by @pablospe in https://github.com/colmap/colmap/pull/2347 * Dockerfile improvements by @pablospe in https://github.com/colmap/colmap/pull/2356 * Update VCPKG commit in Windows CI by @sarlinpe in https://github.com/colmap/colmap/pull/2365 * Simplify the creation of reprojection error cost functions by @sarlinpe in https://github.com/colmap/colmap/pull/2364 * Migrate pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2367 * Rename master -> main in pycolmap CI by @sarlinpe in https://github.com/colmap/colmap/pull/2370 * Bind SetPRNGSeed by @sarlinpe in https://github.com/colmap/colmap/pull/2369 * Encapsulate freeimage usage from pycolmap in colmap bitmap by @ahojnnes in https://github.com/colmap/colmap/pull/2372 * Re-generate version info on git changes by @ahojnnes in https://github.com/colmap/colmap/pull/2373 * Consolidate colmap/pycolmap readmes, updated acknowledgements, etc. by @ahojnnes in https://github.com/colmap/colmap/pull/2374 * Fix crashing pycolmap CI on Windows by @sarlinpe in https://github.com/colmap/colmap/pull/2383 * Add costs for pose graph optimization by @sarlinpe in https://github.com/colmap/colmap/pull/2378 * Switch to exception checks - v2 by @sarlinpe in https://github.com/colmap/colmap/pull/2376 * Cleanup checks in pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2388 * Add RigReprojErrorConstantRigCostFunction by @sarlinpe in https://github.com/colmap/colmap/pull/2377 * Add cost functions to pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2393 * Fix warning C4722 by @whuaegeanse in https://github.com/colmap/colmap/pull/2391 * Move reconstruction IO utils to a new file by @sarlinpe in https://github.com/colmap/colmap/pull/2399 * Acquire the GIL before returning None by @sarlinpe in https://github.com/colmap/colmap/pull/2400 * Disentangle the controller from threading and integrate the new logic into IncrementalMapperController by @B1ueber2y in https://github.com/colmap/colmap/pull/2392 * Simplify the low-level triangulation API by @sarlinpe in https://github.com/colmap/colmap/pull/2402 * Initialize glog in pycolmap only if not already done by @sarlinpe in https://github.com/colmap/colmap/pull/2405 * Adapt all the controllers to inherit from BaseController rather than Thread (except for feature extraction and matching) by @B1ueber2y in https://github.com/colmap/colmap/pull/2406 * Update path to models.h in database docs by @diffner in https://github.com/colmap/colmap/pull/2412 * Migrate Ubuntu CI pipelines from ADO to Github by @ahojnnes in https://github.com/colmap/colmap/pull/2411 * Build wheels for Python 3.12 by @sarlinpe in https://github.com/colmap/colmap/pull/2416 * Migrate MacOS CI pipeline from ADO to Github by @ahojnnes in https://github.com/colmap/colmap/pull/2418 * Improve bindings of Database by @sarlinpe in https://github.com/colmap/colmap/pull/2413 * Migrate Windows CI pipeline from ADO to Github by @ahojnnes in https://github.com/colmap/colmap/pull/2419 * Reduce logging during incremental mapping by @sarlinpe in https://github.com/colmap/colmap/pull/2420 * Migrate Docker CI from ADO to Github, remove ADO pipelines by @ahojnnes in https://github.com/colmap/colmap/pull/2422 * Simplify IncrementalMapperController by @sarlinpe in https://github.com/colmap/colmap/pull/2421 * Fix for glog 0.7.0 by @sarlinpe in https://github.com/colmap/colmap/pull/2428 * Fix typo by @whuaegeanse in https://github.com/colmap/colmap/pull/2430 * Fix RunMapper by @whuaegeanse in https://github.com/colmap/colmap/pull/2431 * Do triangulation in the IncrementalMapperController by @sarlinpe in https://github.com/colmap/colmap/pull/2429 * Only push a new Docker image on release by @sarlinpe in https://github.com/colmap/colmap/pull/2436 * model aligner with type "custom" does not update reconstruction by @lpanaf in https://github.com/colmap/colmap/pull/2433 * Define vcpkg manifest by @ahojnnes in https://github.com/colmap/colmap/pull/2426 * Fix ordering of keyword arguments in pycolmap.rig_absolute_pose_estimation by @sarlinpe in https://github.com/colmap/colmap/pull/2440 * Reduce the build time of pycolmap by @sarlinpe in https://github.com/colmap/colmap/pull/2443 * Improve bindings of CorrespondenceGraph by @sarlinpe in https://github.com/colmap/colmap/pull/2476 * Bind Reconstruction::{SetUp,ImagePairStats} by @sarlinpe in https://github.com/colmap/colmap/pull/2477 * Add bindings for substeps of incremental mapper with a python example by @B1ueber2y in https://github.com/colmap/colmap/pull/2478 * Debug crashing VCPKG-based CI builds by @sarlinpe in https://github.com/colmap/colmap/pull/2508 * Upgrade to pybind11 v2.12. Fix bind_map and reconstruction.points3D by @B1ueber2y in https://github.com/colmap/colmap/pull/2502 * Minor fix on logging for the pycolmap customized runner by @B1ueber2y in https://github.com/colmap/colmap/pull/2503 * Fix missing public link deps, break circular feature-scene dependency by @ahojnnes in https://github.com/colmap/colmap/pull/2497 * Avoid duplicate image allocation during undistortion by @fseegraeber in https://github.com/colmap/colmap/pull/2520 * Fix reconstruction.points3D by @B1ueber2y in https://github.com/colmap/colmap/pull/2523 * Fix 'std::out_of_range' error when using hierarchical_mapper by @GrayMask in https://github.com/colmap/colmap/pull/2526 * Fix binding for std::vector by @sarlinpe in https://github.com/colmap/colmap/pull/2533 * Include pybind eigen header by @tmnku in https://github.com/colmap/colmap/pull/2510 * Fix pycolmap python pipeline for multiple models by @B1ueber2y in https://github.com/colmap/colmap/pull/2531 * make two view geometry writable by @tmnku in https://github.com/colmap/colmap/pull/2540 * Customized python interface for bundle adjustment by @B1ueber2y in https://github.com/colmap/colmap/pull/2509 * Fix typos by @MaximSmolskiy in https://github.com/colmap/colmap/pull/2553 * Implicitly convert iterator to ListPoint2D by @sarlinpe in https://github.com/colmap/colmap/pull/2558 * Fix model_cropper not resetting image.num_points3D of cropped_rec by @ArneSchulzTUBS in https://github.com/colmap/colmap/pull/2557 * Split pair generation and matching by @sarlinpe in https://github.com/colmap/colmap/pull/2573 * Add ObservationManager by @sarlinpe in https://github.com/colmap/colmap/pull/2575 * Log info about created feature extractor/matcher types by @ahojnnes in https://github.com/colmap/colmap/pull/2579 * LSD: making the AGPL dependency optional by @zap150 in https://github.com/colmap/colmap/pull/2578 * Disable LSD when building pycolmap wheels by @sarlinpe in https://github.com/colmap/colmap/pull/2580 * Synthesize full two-view geometry and raw matches by @ahojnnes in https://github.com/colmap/colmap/pull/2595 * Support Adjoint matrix computation for Rigid3d by @B1ueber2y in https://github.com/colmap/colmap/pull/2598 * Fix cost functions for pose graph optimization by @B1ueber2y in https://github.com/colmap/colmap/pull/2601 * Fix python bundle adjustment example with pyceres by @B1ueber2y in https://github.com/colmap/colmap/pull/2606 * Faster homography estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2603 * Add function to find real cubic polynomial roots by @ahojnnes in https://github.com/colmap/colmap/pull/2609 * Align with the convention of ceres doc on SqrtInformation. by @B1ueber2y in https://github.com/colmap/colmap/pull/2611 * Faster 7-point fundamental matrix estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2612 * Faster 8-point fundamental matrix estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2613 * Covariance estimation for bundle adjustment with Schur elimination by @B1ueber2y in https://github.com/colmap/colmap/pull/2610 * Mac OS improvements by @BSVogler in https://github.com/colmap/colmap/pull/2622 * Update cibuildwheel to 2.19.2 by @ahojnnes in https://github.com/colmap/colmap/pull/2632 * Faster essential matrix estimators by @ahojnnes in https://github.com/colmap/colmap/pull/2618 * Remove CamFromWorldPrior and create LocationPrior by @sarlinpe in https://github.com/colmap/colmap/pull/2620 * Add option to disable uninstall target, restore CI pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/2634 * Faster covariance computation for small blocks by @B1ueber2y in https://github.com/colmap/colmap/pull/2633 * Fix optimal point algorithm by @morrishelle in https://github.com/colmap/colmap/pull/2640 * Add shell script helper for profiling by @ahojnnes in https://github.com/colmap/colmap/pull/2635 * Declare PosePrior::IsValid as const by @ahojnnes in https://github.com/colmap/colmap/pull/2653 * Add CI build for Windows CUDA by @ahojnnes in https://github.com/colmap/colmap/pull/2651 * Publish windows binaries from CI by @ahojnnes in https://github.com/colmap/colmap/pull/2663 ------------------------- COLMAP 3.9.1 (01/08/2024) ------------------------- * Version 3.9 changelog by @ahojnnes in https://github.com/colmap/colmap/pull/2325 * Fully encapsulate freeimage in bitmap library (#2332) by @ahojnnes in https://github.com/colmap/colmap/pull/2334 ----------------------- COLMAP 3.9 (01/06/2024) ----------------------- * clang format all code and require clang-format-14 by @ahojnnes in https://github.com/colmap/colmap/pull/1785 * Fix compilation for vcpkg windows build by @ahojnnes in https://github.com/colmap/colmap/pull/1791 * Increment version number to 3.9 by @ahojnnes in https://github.com/colmap/colmap/pull/1794 * Remove unnecessary /arch:sse2 flag for MSVC by @ahojnnes in https://github.com/colmap/colmap/pull/1798 * Updated faq.rst by @CGCooke in https://github.com/colmap/colmap/pull/1801 * Fixed mistake in code comment for OpenCV Fisheye camera by @CGCooke in https://github.com/colmap/colmap/pull/1802 * Replace deprecated cudaThreadSynchronize with cudaDeviceSynchronize by @ahojnnes in https://github.com/colmap/colmap/pull/1806 * Replace deprecated Cuda texture references with texture objects by @ahojnnes in https://github.com/colmap/colmap/pull/1809 * Remove unused SIFT GPU cuda texture reference by @ahojnnes in https://github.com/colmap/colmap/pull/1823 * Upgrade SiftGPU to use CUDA texture objects by @ahojnnes in https://github.com/colmap/colmap/pull/1838 * Remove PBA as bundle adjustment backend to support CUDA 12+ by @ahojnnes in https://github.com/colmap/colmap/pull/1840 * Replace deprecated CUDA sature function call by @ahojnnes in https://github.com/colmap/colmap/pull/1841 * Avoid unnecessary mallocs during sampling by @ahojnnes in https://github.com/colmap/colmap/pull/1842 * Cleaned up docker readme and scripts by @ahojnnes in https://github.com/colmap/colmap/pull/1852 * add "Shared intrinsics per sub-folder" checkbox to automatic reconstruction window by @kenshi84 in https://github.com/colmap/colmap/pull/1853 * Update vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/1925 * Log the name of the file that causes Mat::Read() to checkfail by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/1923 * check Z_index correctly in ReadPly by @countywest in https://github.com/colmap/colmap/pull/1896 * Don't re-open files when reading and writing matrices by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/1926 * Update vcpkg to latest commit by @ahojnnes in https://github.com/colmap/colmap/pull/1948 * Remove unnecessary custom Eigen aligned allocator macros by @ahojnnes in https://github.com/colmap/colmap/pull/1947 * Prefix internal sources/includes with colmap by @ahojnnes in https://github.com/colmap/colmap/pull/1949 * Simplify clang-format config and sort includes by @ahojnnes in https://github.com/colmap/colmap/pull/1950 * Handle possible overflow in median function by @ahojnnes in https://github.com/colmap/colmap/pull/1951 * Run ASan pipeline under Ubuntu 22.04 by @ahojnnes in https://github.com/colmap/colmap/pull/1952 * Fix Ceres version test by @drkoller in https://github.com/colmap/colmap/pull/1954 * Fix deprecation warning for Qt font metrics width by @ahojnnes in https://github.com/colmap/colmap/pull/1958 * Setup clang-tidy and enable perf warnings by @ahojnnes in https://github.com/colmap/colmap/pull/1959 * VCPKG binary caching for windows CI by @ahojnnes in https://github.com/colmap/colmap/pull/1957 * Cosmetics for VS dev shell script by @ahojnnes in https://github.com/colmap/colmap/pull/1965 * Enable clang-tidy concurrency checks by @ahojnnes in https://github.com/colmap/colmap/pull/1967 * [Bug] fix finding shared points3D in FindLocalBundle by @wesleyliwei in https://github.com/colmap/colmap/pull/1963 * Enable compiler caching in CI by @ahojnnes in https://github.com/colmap/colmap/pull/1972 * Set number of features for different quality levels by @ahojnnes in https://github.com/colmap/colmap/pull/1975 * Specify parameter name using inline comment by @ahojnnes in https://github.com/colmap/colmap/pull/1976 * Fix Windows CCache by @ahojnnes in https://github.com/colmap/colmap/pull/1977 * Add e2e tests in CI pipeline using ETH3D datasets by @ahojnnes in https://github.com/colmap/colmap/pull/1397 * [feature] print verbose information for model analyzer by @wesleyliwei in https://github.com/colmap/colmap/pull/1978 * Add a missing include to compile with gcc13 by @EstebanDugueperoux2 in https://github.com/colmap/colmap/pull/1984 * Speed up snapshot construct in RigBundleAdjuster by @wesleyliwei in https://github.com/colmap/colmap/pull/1988 * Update outdated docker cuda image tag by @ahojnnes in https://github.com/colmap/colmap/pull/1992 * Add boulders ETH3D dataset to CI E2E tests by @ahojnnes in https://github.com/colmap/colmap/pull/1991 * Update executable paths in documentation by @ahojnnes in https://github.com/colmap/colmap/pull/1993 * Avoid unnecessary copy in ExtractTopScaleFeatures by @ahojnnes in https://github.com/colmap/colmap/pull/1994 * Move related code under new image library folder by @ahojnnes in https://github.com/colmap/colmap/pull/1995 * Move related code under new camera folder by @ahojnnes in https://github.com/colmap/colmap/pull/1996 * Added a virtual destructor to Sampler by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/2000 * Add a few more clang-tidy checks by @ahojnnes in https://github.com/colmap/colmap/pull/2001 * Move related code to new geometry module by @ahojnnes in https://github.com/colmap/colmap/pull/2006 * Use #pragma once as include guard by @ahojnnes in https://github.com/colmap/colmap/pull/2007 * Add bugprone-* clang-tidy checks by @ahojnnes in https://github.com/colmap/colmap/pull/2010 * Avoid const params in declarations by @ahojnnes in https://github.com/colmap/colmap/pull/2011 * Set and require C++14 by @ahojnnes in https://github.com/colmap/colmap/pull/2012 * Cleanup math functions that are now part of eigen/stdlib by @ahojnnes in https://github.com/colmap/colmap/pull/2013 * Add clang-analyzer checks by @ahojnnes in https://github.com/colmap/colmap/pull/2014 * Replace CMake provided find_package scripts and modern CMake targets by @ahojnnes in https://github.com/colmap/colmap/pull/2016 * Switch from Boost unit tests to Gtest by @ahojnnes in https://github.com/colmap/colmap/pull/2017 * Fix ccache restore keys in pipeline caching by @ahojnnes in https://github.com/colmap/colmap/pull/2018 * Add missing cacheHitVar to fix ccache by @ahojnnes in https://github.com/colmap/colmap/pull/2020 * Add missing Boost::graph import by @sarlinpe in https://github.com/colmap/colmap/pull/2021 * Compressed/flattened correspondence graph for faster triangulation / less memory by @ahojnnes in https://github.com/colmap/colmap/pull/2019 * Fix window ccache key by @ahojnnes in https://github.com/colmap/colmap/pull/2024 * Consistently use shared_ptr for shared pointers for SFM objects by @ahojnnes in https://github.com/colmap/colmap/pull/2023 * Remove check on Qt version by @sarlinpe in https://github.com/colmap/colmap/pull/2022 * Synthetics for E2E incremental mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/2025 * New math module by @ahojnnes in https://github.com/colmap/colmap/pull/2028 * Simplify similarity transform and more tests by @ahojnnes in https://github.com/colmap/colmap/pull/2030 * Extract reconstruction alignment functions into new file by @ahojnnes in https://github.com/colmap/colmap/pull/2032 * Add E2E hierarchical mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/2033 * Rename SimilarityTransform3 to Sim3d by @ahojnnes in https://github.com/colmap/colmap/pull/2034 * Add Rigid3d transform class by @ahojnnes in https://github.com/colmap/colmap/pull/2035 * Consolidate and simplify Rigid3d and Sim3d by @ahojnnes in https://github.com/colmap/colmap/pull/2037 * Some small improvements/cleanup for rigid3d/sim3d usage by @ahojnnes in https://github.com/colmap/colmap/pull/2041 * CamFromWorld replaces qvec/tvec by @ahojnnes in https://github.com/colmap/colmap/pull/2039 * Retry download of ETH3D datasets by @ahojnnes in https://github.com/colmap/colmap/pull/2043 * WorldToImage becomes CamToImg by @ahojnnes in https://github.com/colmap/colmap/pull/2044 * Camera models operate on camera rays by @ahojnnes in https://github.com/colmap/colmap/pull/2045 * Ignore directory .vs by @whuaegeanse in https://github.com/colmap/colmap/pull/2046 * Use the reference of Rigid3d to reduce memory consumption by @whuaegeanse in https://github.com/colmap/colmap/pull/2047 * Inline point to image projection by @ahojnnes in https://github.com/colmap/colmap/pull/2050 * Point2D becomes simpler pure data struct by @ahojnnes in https://github.com/colmap/colmap/pull/2051 * Use Eigen math for estimator utils by @ahojnnes in https://github.com/colmap/colmap/pull/2052 * Move cost functions under geometry module and rename by @ahojnnes in https://github.com/colmap/colmap/pull/2053 * Bundle adjuster is an estimator by @ahojnnes in https://github.com/colmap/colmap/pull/2054 * Remaining base targets move to new scene module by @ahojnnes in https://github.com/colmap/colmap/pull/2055 * Vote and verify improvements/speedup by @ahojnnes in https://github.com/colmap/colmap/pull/2056 * Generate version info in .cc file to reduce number of recompilations by @ahojnnes in https://github.com/colmap/colmap/pull/2057 * Option manager moves to controllers to disentangle circular deps by @ahojnnes in https://github.com/colmap/colmap/pull/2058 * Granular CMake modules and build targets by @ahojnnes in https://github.com/colmap/colmap/pull/2059 * Fix docker build by @ahojnnes in https://github.com/colmap/colmap/pull/2069 * Remove warnings about duplicated marco NOMINMAX by @whuaegeanse in https://github.com/colmap/colmap/pull/2067 * lib folder becomes thirdparty folder by @ahojnnes in https://github.com/colmap/colmap/pull/2068 * Remove unnecessary checks in image pair conversion by @ahojnnes in https://github.com/colmap/colmap/pull/2074 * Replace flaky ETH3D terrace with courtyard dataset by @ahojnnes in https://github.com/colmap/colmap/pull/2075 * Synthesize chained match graph for more mapper tests by @ahojnnes in https://github.com/colmap/colmap/pull/2076 * Introduce abstract feature extractor by @ahojnnes in https://github.com/colmap/colmap/pull/2077 * Avoid unnecessary data copies in feature conversion utils by @ahojnnes in https://github.com/colmap/colmap/pull/2078 * Abstract feature matcher by @ahojnnes in https://github.com/colmap/colmap/pull/2082 * Encapsulate feature matching controller/worker implementations by @ahojnnes in https://github.com/colmap/colmap/pull/2085 * Some cosmetics for util/feature types by @ahojnnes in https://github.com/colmap/colmap/pull/2084 * Use std:: when cmath included by @whuaegeanse in https://github.com/colmap/colmap/pull/2081 * Encapsulate feature extraction controller/worker implementations by @ahojnnes in https://github.com/colmap/colmap/pull/2086 * Reenable VS2022 CI pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1689 * Consistent transform convention for CenterAndNormalizeImagePoints by @ahojnnes in https://github.com/colmap/colmap/pull/2092 * Retire Mac 11 CI build by @ahojnnes in https://github.com/colmap/colmap/pull/2094 * Add ReprojErrorConstantPoint3DCostFunction to speed up the RefineAbsolutePose function by @whuaegeanse in https://github.com/colmap/colmap/pull/2089 * Numeric differentiation of camera model using partial piv LU by @ahojnnes in https://github.com/colmap/colmap/pull/2100 * cmake: add testing.cc to colmap_util only if TESTS_ENABLED=ON by @NeroBurner in https://github.com/colmap/colmap/pull/2102 * Set CUDA_STANDARD to 14 by @ahojnnes in https://github.com/colmap/colmap/pull/2108 * Transform back to existing images positions after mapper processing if set fixed by @ferreram in https://github.com/colmap/colmap/pull/2095 * Update documentation with new branch policy by @ahojnnes in https://github.com/colmap/colmap/pull/2110 * Update CMake find dependencies for vcpkg by @ahojnnes in https://github.com/colmap/colmap/pull/2116 * Decouple SIFT match from two view geometry options by @ahojnnes in https://github.com/colmap/colmap/pull/2118 * Fix docker build by @vnmsklnk in https://github.com/colmap/colmap/pull/2122 * Trigger build pipeline on main branch by @ahojnnes in https://github.com/colmap/colmap/pull/2123 * Update Linux install documentation with new branch policy by @joshuaoreilly in https://github.com/colmap/colmap/pull/2126 * Fix link in camera model documentation by @CFretter in https://github.com/colmap/colmap/pull/2152 * [Bugfix] Fix GUI_ENABLED=OFF and skip SiftGPU if no GUI and no CUDA by @sarlinpe in https://github.com/colmap/colmap/pull/2151 * [Bugfix] Properly handle CGAL_ENABLED by @sarlinpe in https://github.com/colmap/colmap/pull/2149 * Refinement of intrinsics in the point_triangulator by @tsattler in https://github.com/colmap/colmap/pull/2144 * Bugfix in handling COLMAP_GPU_ENABLED by @sarlinpe in https://github.com/colmap/colmap/pull/2163 * Expose exe as libs by @sarlinpe in https://github.com/colmap/colmap/pull/2165 * Add Sim3d::FromMatrix by @sarlinpe in https://github.com/colmap/colmap/pull/2147 * Check code format in CI by @ahojnnes in https://github.com/colmap/colmap/pull/2171 * Clean up dependencies by @sarlinpe in https://github.com/colmap/colmap/pull/2173 * Move tests into anonymous namespaces by @ahojnnes in https://github.com/colmap/colmap/pull/2175 * Fix glew/qopengl conflict warning by @ahojnnes in https://github.com/colmap/colmap/pull/2176 * Update documentation with new link to GitHub discussions by @ahojnnes in https://github.com/colmap/colmap/pull/2177 * Restore GLEW include by @sarlinpe in https://github.com/colmap/colmap/pull/2178 * Align reconstructions via shared 3D points by @sarlinpe in https://github.com/colmap/colmap/pull/2169 * Add clang-tidy-cachein CI by @ahojnnes in https://github.com/colmap/colmap/pull/2182 * Disable GUI build in one CI config by @ahojnnes in https://github.com/colmap/colmap/pull/2181 * Show verbose ccache stats by @ahojnnes in https://github.com/colmap/colmap/pull/2183 * Add EstimateGeneralizedAbsolutePose by @sarlinpe in https://github.com/colmap/colmap/pull/2174 * Fix bug in ReconstructionManagerWidget::Update by @whuaegeanse in https://github.com/colmap/colmap/pull/2186 * Fix missing retrieval dependency by @ahojnnes in https://github.com/colmap/colmap/pull/2189 * Removing clustering_options and mapper_options in Hierarchical Mapper Controller by @Serenitysmk in https://github.com/colmap/colmap/pull/2193 * Publish docker image to docker hub by @ahojnnes in https://github.com/colmap/colmap/pull/2195 * Fix Cuda architecture in docker build by @ahojnnes in https://github.com/colmap/colmap/pull/2196 * Fix all-major cuda arch missing in CMake < 3.23 by @ahojnnes in https://github.com/colmap/colmap/pull/2197 * Update triangulation.cc by @RayShark0605 in https://github.com/colmap/colmap/pull/2205 * Update author and acknowledgements by @ahojnnes in https://github.com/colmap/colmap/pull/2207 * Code formatting for Python by @ahojnnes in https://github.com/colmap/colmap/pull/2208 * Retire outdated build script by @ahojnnes in https://github.com/colmap/colmap/pull/2217 * Remove mention of deprecated build script by @sarlinpe in https://github.com/colmap/colmap/pull/2220 * Improve word spelling by @zchrissirhcz in https://github.com/colmap/colmap/pull/2235 * Stack allocate camera param idx arrays by @ahojnnes in https://github.com/colmap/colmap/pull/2234 * fix: typo in colmap/src/colmap/ui/project_widget.cc by @varundhand in https://github.com/colmap/colmap/pull/2241 * Update reconstruction.cc by @RayShark0605 in https://github.com/colmap/colmap/pull/2238 * Update to Docker CUDA 12.2.2 by @ahojnnes in https://github.com/colmap/colmap/pull/2244 * Stop setting C++ standard flags manually by @AdrianBunk in https://github.com/colmap/colmap/pull/2251 * Setting clear_points to true per default in point_triangulator by @tsattler in https://github.com/colmap/colmap/pull/2252 * Update cameras.rst to fix link to code by @tsattler in https://github.com/colmap/colmap/pull/2246 * Fix matching of imported features without descriptors by @ahojnnes in https://github.com/colmap/colmap/pull/2269 * Consistent versioning between documentation and code by @ahojnnes in https://github.com/colmap/colmap/pull/2275 * Reduce mallocs for RANSAC estimator models by @ahojnnes in https://github.com/colmap/colmap/pull/2283 * Migrate to glog logging by @ahojnnes in https://github.com/colmap/colmap/pull/2172 * Turn Point3D into simple data struct by @ahojnnes in https://github.com/colmap/colmap/pull/2285 * Camera becomes simple data struct by @ahojnnes in https://github.com/colmap/colmap/pull/2286 * Recover custom Eigen std::vector allocator for Eigen <3.4 support by @ahojnnes in https://github.com/colmap/colmap/pull/2293 * Replace result_of with invoke_result_t by @sarlinpe in https://github.com/colmap/colmap/pull/2300 * Allow getters FocalLength{X,Y} for isotropic models by @sarlinpe in https://github.com/colmap/colmap/pull/2301 * Add missing Boost targets and cleanup includes by @sarlinpe in https://github.com/colmap/colmap/pull/2304 * Expose IncrementalMapperOptions::{mapper,triangulation} by @sarlinpe in https://github.com/colmap/colmap/pull/2308 * Update install instructions for Mac by @Dawars in https://github.com/colmap/colmap/pull/2310 * Remove unused ceres reference in doc by @ahojnnes in https://github.com/colmap/colmap/pull/2315 * Fix typo by @whuaegeanse in https://github.com/colmap/colmap/pull/2317 * Stable version 3.9 release by @ahojnnes in https://github.com/colmap/colmap/pull/2319 ----------------------- COLMAP 3.8 (01/31/2023) ----------------------- * Updating geo-registration doc. by @ferreram in https://github.com/colmap/colmap/pull/1410 * Adding user-specified option for reconstructing purely planar scene. … by @ferreram in https://github.com/colmap/colmap/pull/1408 * Only apply sqlite vacuum command when elements are deleted from the database. by @ferreram in https://github.com/colmap/colmap/pull/1414 * Replace Graclus with Metis dependency by @ahojnnes in https://github.com/colmap/colmap/pull/1422 * Update ceres download URL in build script by @whuaegeanse in https://github.com/colmap/colmap/pull/1430 * Fix type errors when building colmap with build.py in windows by @whuaegeanse in https://github.com/colmap/colmap/pull/1440 * Fix bug in the computation of the statistics Global/Local BA by @whuaegeanse in https://github.com/colmap/colmap/pull/1449 * Add RefineGeneralizedAbsolutePose and covariance estimation by @Skydes in https://github.com/colmap/colmap/pull/1464 * Update docker image definition by @ahojnnes in https://github.com/colmap/colmap/pull/1478 * Upgrade deprecated ceres parameterizations to manifolds by @ahojnnes in https://github.com/colmap/colmap/pull/1477 * Use masks for stereo fusion on automatic reconstruction by @ibrarmalik in https://github.com/colmap/colmap/pull/1488 * fix random seed set failed from external interface by @WZG3661 in https://github.com/colmap/colmap/pull/1498 * Replace deprecated Eigen nonZeros() call for most recent Eigen versions. by @nackjaylor in https://github.com/colmap/colmap/pull/1494 * Fix ceres-solver folder name by @f-fl0 in https://github.com/colmap/colmap/pull/1501 * Improved convergence criterion for XYZ to ELL conversion by @ahojnnes in https://github.com/colmap/colmap/pull/1505 * Fix bug in the function SetPtr of Bitmap by @whuaegeanse in https://github.com/colmap/colmap/pull/1525 * Avoid the calling of copy constructor/assignment by @whuaegeanse in https://github.com/colmap/colmap/pull/1524 * Avoid calling copy constructors of FeatureKeypoints and FeatureDescriptors by @whuaegeanse in https://github.com/colmap/colmap/pull/1540 * Initialize freeimage if statically linked by @ahojnnes in https://github.com/colmap/colmap/pull/1549 * Avoid hard crash if Jacobian matrix is rank deficient by @mihaidusmanu in https://github.com/colmap/colmap/pull/1557 * visualize_model.py: added FULL_OPENCV model by @soeroesg in https://github.com/colmap/colmap/pull/1552 * Update vcpkg version to fix CI pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1568 * Replace deprecated Mac OS 10.15 with Mac OS 12 build in CI by @ahojnnes in https://github.com/colmap/colmap/pull/1569 * Fix inconsistent between the actual executed image reader option and the saved project.ini file by @XuChengHUST in https://github.com/colmap/colmap/pull/1564 * checkout the expected version of ceres solver by @scott-vsi in https://github.com/colmap/colmap/pull/1576 * use default qt5 brew install directory #1573 by @catapulta in https://github.com/colmap/colmap/pull/1574 * Fix image undistortion with nested image folders by @ahojnnes in https://github.com/colmap/colmap/pull/1606 * Fix source file permissions by @ahojnnes in https://github.com/colmap/colmap/pull/1607 * Fixed the collection of arguments in colmap.bat by @tdegraaff in https://github.com/colmap/colmap/pull/1121 * Add OpenMP to COLMAP_EXTERNAL_LIBRARIES if enabled by @logchan in https://github.com/colmap/colmap/pull/1632 * Fix output tile reconstructions are the same as the input reconstruction in `RunModelSplitter` (#1513) by @Serenitysmk in https://github.com/colmap/colmap/pull/1531 * add `libmetis-dev` to solve `METIS_INCLUDE_DIRS`. by @FavorMylikes in https://github.com/colmap/colmap/pull/1672 * Update install.rst by @tomer-grin in https://github.com/colmap/colmap/pull/1671 * Update freeimage links. by @Yulv-git in https://github.com/colmap/colmap/pull/1675 * fix small typo by @skal65535 in https://github.com/colmap/colmap/pull/1668 * Update build.py with new glew link by @aghand0ur in https://github.com/colmap/colmap/pull/1658 * Add use_cache in fusion options GUI by @hrflr in https://github.com/colmap/colmap/pull/1655 * Add CI pipeline for Ubuntu 22.04 by @ahojnnes in https://github.com/colmap/colmap/pull/1688 * Avoid unnecessary copies of data by @ahojnnes in https://github.com/colmap/colmap/pull/1691 * Reduce memory allocations in correspondence graph search by @ahojnnes in https://github.com/colmap/colmap/pull/1692 * Use FindCUDAToolkit when available. by @hanseuljun in https://github.com/colmap/colmap/pull/1693 * Fixed a crash due to inconsistent undistortion by @SomeAlphabetGuy in https://github.com/colmap/colmap/pull/1698 * Add CUDA Ubuntu 22.04 CI build by @ahojnnes in https://github.com/colmap/colmap/pull/1705 * Delete the redundancy install of libmetis-dev by @thomas-graphopti in https://github.com/colmap/colmap/pull/1721 * Fix broken loading of image masks on macOS by @buesma in https://github.com/colmap/colmap/pull/1639 * Update install instructions with latest hints and known issues by @ahojnnes in https://github.com/colmap/colmap/pull/1736 * Modernize smart pointer initialization, fix alloc/dealloc mismatch by @ahojnnes in https://github.com/colmap/colmap/pull/1737 * Fix typo in cli.rst by @ojhernandez in https://github.com/colmap/colmap/pull/1747 * Fix inconsistent image resizing between CPU/GPU implementations of SIFT by @Yzhbuaa in https://github.com/colmap/colmap/pull/1642 * Reduce number of SIFT test features to make tests run under WSL by @ahojnnes in https://github.com/colmap/colmap/pull/1748 * Tag documentation version with dev by @ahojnnes in https://github.com/colmap/colmap/pull/1749 * Update copyright to 2023 by @ahojnnes in https://github.com/colmap/colmap/pull/1750 * Fix max image dimension for positive first_octave by @ahojnnes in https://github.com/colmap/colmap/pull/1751 * Fix SIFT GPU match creation by @ahojnnes in https://github.com/colmap/colmap/pull/1757 * Fix SIFT tests for OpenGL by @ahojnnes in https://github.com/colmap/colmap/pull/1762 * Suppress CUDA stack size warning for ptxas by @ahojnnes in https://github.com/colmap/colmap/pull/1770 * Simplify CUDA CMake configuration by @ahojnnes in https://github.com/colmap/colmap/pull/1776 * Fixes for CUDA compilation by @ahojnnes in https://github.com/colmap/colmap/pull/1777 * Improvements to dockerfile and build pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1778 * Explicitly require CMAKE_CUDA_ARCHITECTURES to be defined by @ahojnnes in https://github.com/colmap/colmap/pull/1781 * Depend on system installed FLANN by @ahojnnes in https://github.com/colmap/colmap/pull/1782 * Option to store relative pose between two cameras in database by @yanxke in https://github.com/colmap/colmap/pull/1774 * Depend on system installed SQLite3 by @ahojnnes in https://github.com/colmap/colmap/pull/1783 ----------------------- COLMAP 3.7 (01/26/2022) ----------------------- * Allow to save fused point cloud in colmap format when using command line by @boitumeloruf in https://github.com/colmap/colmap/pull/799 * Fix typos in image.h by @Pascal-So in https://github.com/colmap/colmap/pull/936 * Fix for EPnP estimator by @vlarsson in https://github.com/colmap/colmap/pull/943 * Visualize models using Python in Open3D by @ahojnnes in https://github.com/colmap/colmap/pull/948 * Update tutorial.rst by @ignacio-rocco in https://github.com/colmap/colmap/pull/953 * 8 point algorithm internal contraint fix by @mihaidusmanu in https://github.com/colmap/colmap/pull/982 * Python script for writing depth/normal arrays by @SBCV in https://github.com/colmap/colmap/pull/957 * BuildImageModel: use std::vector instead of numbered arguments by @Pascal-So in https://github.com/colmap/colmap/pull/949 * Fix bugs of sift feature matching by @whuaegeanse in https://github.com/colmap/colmap/pull/985 * script for modifying fused results by @SBCV in https://github.com/colmap/colmap/pull/984 * fix camera model query by @Pascal-So in https://github.com/colmap/colmap/pull/997 * fixed small bug in visualize_model.py by @sniklaus in https://github.com/colmap/colmap/pull/1007 * Update .travis.yml by @srinivas32 in https://github.com/colmap/colmap/pull/989 * Ensure DecomposeHomographyMatrix() always returns rotations by @daithimaco in https://github.com/colmap/colmap/pull/1040 * Remove deprecated qt foreach by @UncleGene in https://github.com/colmap/colmap/pull/1039 * Fix AMD/Windows GUI visualization bug by @drkoller in https://github.com/colmap/colmap/pull/1079 * include colmap_cuda in COLMAP_LIBRARIES when compiled with cuda by @ClementPinard in https://github.com/colmap/colmap/pull/1084 * Fix runtime crash when sparsesuite is missing from ceres by @anmatako in https://github.com/colmap/colmap/pull/1115 * Store relative poses in two_view_geometry table by @Ahmed-Salama in https://github.com/colmap/colmap/pull/1103 * search src images for patch_match from all set, not only referenced subset by @DaniilSNikulin in https://github.com/colmap/colmap/pull/1038 * Replace Travis CI with Azure Pipelines for Linux/Mac builds by @ahojnnes in https://github.com/colmap/colmap/pull/1119 * Allow ReadPly to handle double precision files by @anmatako in https://github.com/colmap/colmap/pull/1131 * Update GPSTransform calculations to improve accuracy by @anmatako in https://github.com/colmap/colmap/pull/1132 * Add scale template flag in SimilarityTransform3::Estimate by @anmatako in https://github.com/colmap/colmap/pull/1133 * Add CopyFile utility that can copy or hard/soft-link files by @anmatako in https://github.com/colmap/colmap/pull/1134 * Expose BA options in IncrementalMapper by @anmatako in https://github.com/colmap/colmap/pull/1139 * Allow configurable paths for mvs::Model by @anmatako in https://github.com/colmap/colmap/pull/1141 * Change ReconstructionMaanger to write larger recons first by @anmatako in https://github.com/colmap/colmap/pull/1137 * Setup Azure pipelines for Windows build by @ahojnnes in https://github.com/colmap/colmap/pull/1150 * Add fixed extrinsics in rig config by @anmatako in https://github.com/colmap/colmap/pull/1144 * Allow custom config and missing dependencies for patch-match by @anmatako in https://github.com/colmap/colmap/pull/1142 * Update print statements for Python 3 compatibility by @UncleGene in https://github.com/colmap/colmap/pull/1126 * Allow cleanup of SQLite tables using new database_cleaner command by @anmatako in https://github.com/colmap/colmap/pull/1136 * Extend SceneClustering to support non-hierarchical (flat) clusters by @anmatako in https://github.com/colmap/colmap/pull/1140 * Support more formats in model_converter by @anmatako in https://github.com/colmap/colmap/pull/1147 * Fix Mac 10.15 build due to changed Qt5 path by @ahojnnes in https://github.com/colmap/colmap/pull/1157 * Fix bug in ReadCameraRigConfig when reading extrinsics by @anmatako in https://github.com/colmap/colmap/pull/1158 * Add utility to compare poses between two sparse models by @ahojnnes in https://github.com/colmap/colmap/pull/1159 * Modularize executable main functions into separate sources by @ahojnnes in https://github.com/colmap/colmap/pull/1160 * Fix unnecessary copies in for range loops by @ahojnnes in https://github.com/colmap/colmap/pull/1162 * Add script to clang-format all source code by @ahojnnes in https://github.com/colmap/colmap/pull/1163 * Add back new options and formats for model_converter by @anmatako in https://github.com/colmap/colmap/pull/1164 * ImageReder new option and bug fix in GPS priors by @anmatako in https://github.com/colmap/colmap/pull/1146 * Parallelize stereo fusion; needs pre-loading of entire workspace by @anmatako in https://github.com/colmap/colmap/pull/1148 * Refactoring and new functionality in Reconstruction class by @anmatako in https://github.com/colmap/colmap/pull/1169 * Add new functionality in image_undistorter by @anmatako in https://github.com/colmap/colmap/pull/1168 * Add new CMake option to disable GUI by @anmatako in https://github.com/colmap/colmap/pull/1165 * Fix the memory leak caused by not releasing the memory of the PRNG at the end of the thread by @whuaegeanse in https://github.com/colmap/colmap/pull/1170 * Fix fusion segfault bug by @anmatako in https://github.com/colmap/colmap/pull/1176 * Update SiftGPU to use floorf for floats by @anmatako in https://github.com/colmap/colmap/pull/1182 * fix typo in extraction.cc by @iuk in https://github.com/colmap/colmap/pull/1191 * Improvements to NVM, Cam, Recon3D, and Bundler exporters by @drkoller in https://github.com/colmap/colmap/pull/1187 * Update model_aligner functionality by @anmatako in https://github.com/colmap/colmap/pull/1177 * Add new model_cropper and model_splitter commands by @anmatako in https://github.com/colmap/colmap/pull/1179 * use type point2D_t instead of image_t by @iuk in https://github.com/colmap/colmap/pull/1199 * Fix radial distortion in Cam format exporter by @drkoller in https://github.com/colmap/colmap/pull/1196 * Add new model_transformer command by @anmatako in https://github.com/colmap/colmap/pull/1178 * Fix error of using urllib to download eigen from gitlab by @whuaegeanse in https://github.com/colmap/colmap/pull/1194 * Multi-line string fix in Python model script by @mihaidusmanu in https://github.com/colmap/colmap/pull/1217 * added visibility_sigma to CLI input options for delaunay_mesher. by @Matstah in https://github.com/colmap/colmap/pull/1236 * Backwards compatibility of model_aligner by @tsattler in https://github.com/colmap/colmap/pull/1240 * [update undistortion] update dumped commands by @hiakru in https://github.com/colmap/colmap/pull/1276 * Compute reprojection error in generalized absolute solver by @Skydes in https://github.com/colmap/colmap/pull/1257 * Modifying scripts/python/flickr_downloader.py to create files with correct extensions by @snavely in https://github.com/colmap/colmap/pull/1275 * revise Dockerfile and readme. by @MasahiroOgawa in https://github.com/colmap/colmap/pull/1281 * Update to latest vcpkg version by @ahojnnes in https://github.com/colmap/colmap/pull/1319 * Fix compiler warnings reported by GCC by @ahojnnes in https://github.com/colmap/colmap/pull/1317 * Auto-rotate JPEG images based on EXIF orientation by @ahojnnes in https://github.com/colmap/colmap/pull/1318 * Upgrade vcpkg to fix CI build issues by @ahojnnes in https://github.com/colmap/colmap/pull/1331 * Added descriptor normalization argument to feature_extractor. by @mihaidusmanu in https://github.com/colmap/colmap/pull/1332 * Fix memory leak in the function of StringAppendV by @whuaegeanse in https://github.com/colmap/colmap/pull/1337 * Add CUDA_SAFE_CALL to cudaGetDeviceCount. by @chpatrick in https://github.com/colmap/colmap/pull/1334 * Add missing include in case CUDA/GUI is not available by @ahojnnes in https://github.com/colmap/colmap/pull/1329 * Fix wrong WGS84 model and test cases in GPSTransform by @Freeverc in https://github.com/colmap/colmap/pull/1333 * Fixes bug in sprt.cc: num_inliers was not set. by @rmbrualla in https://github.com/colmap/colmap/pull/1360 * Prevent a divide by zero corner case. by @rmbrualla in https://github.com/colmap/colmap/pull/1361 * Adds missing header. by @rmbrualla in https://github.com/colmap/colmap/pull/1362 * Require Qt in COLMAPConfig only if GUI is enabled by @Skydes in https://github.com/colmap/colmap/pull/1365 * Keep precision in the process of storing in text. by @whuaegeanse in https://github.com/colmap/colmap/pull/1363 * Expose exe internals by @Skydes in https://github.com/colmap/colmap/pull/1366 * Fix inliers matches extraction in EstimateUncalibrated function. by @ferreram in https://github.com/colmap/colmap/pull/1369 * Expose exe internals - fix by @Skydes in https://github.com/colmap/colmap/pull/1368 * Remove deprecated Mac OSX 10.14 image in ADO pipeline by @ahojnnes in https://github.com/colmap/colmap/pull/1383 * Add Mac OSX 11 ADO pipeline job by @ahojnnes in https://github.com/colmap/colmap/pull/1384 * Fix warnings for latest compiler/libraries by @ahojnnes in https://github.com/colmap/colmap/pull/1382 * Fix clang compiler warnings by @ahojnnes in https://github.com/colmap/colmap/pull/1387 * Add Address Sanitizer options and fix reported issues by @ahojnnes in https://github.com/colmap/colmap/pull/1390 * User/joschonb/asan cleanup by @ahojnnes in https://github.com/colmap/colmap/pull/1391 * Add ADO pipeline for Visual Studio 2022 by @ahojnnes in https://github.com/colmap/colmap/pull/1392 * Add ccache option by @ahojnnes in https://github.com/colmap/colmap/pull/1395 * Update ModelAligner to handle GPS and custom coords. and more by @ferreram in https://github.com/colmap/colmap/pull/1371 ----------------------- COLMAP 3.6 (07/24/2020) ----------------------- * Improved robustness and faster incremental reconstruction process * Add ``image_deleter`` command to remove images from sparse model * Add ``image_filter`` command to filter bad registrations from sparse model * Add ``point_filtering`` command to filter sparse model point clouds * Add ``database_merger`` command to merge two databases, which is useful to parallelize matching across different machines * Add ``image_undistorter_standalone`` to enable undistorting images without a pre-existing full sparse model * Improved undistortion for fisheye cameras and FOV camera model * Support for masking input images in feature extraction stage * Improved HiDPI support in GUI for high-resolution monitors * Import sparse model when launching GUI from CLI * Faster CPU-based matching using approximate NN search * Support for bundle adjustment with fixed extrinsics * Support for fixing existing images when continuing reconstruction * Camera model colors in viewer can be customized * Support for latest GPU architectures in CUDA build * Support for writing sparse models in Python scripts * Scripts for building and running COLMAP in Docker * Many more bug fixes and improvements to code and documentation ----------------------- COLMAP 3.5 (08/22/2018) ----------------------- * COLMAP is now released under the BSD license instead of the GPL * COLMAP is now installed as a library, whose headers can be included and libraries linked against from other C/C++ code * Add hierarchical mapper for parallelized reconstruction or large scenes * Add sparse and dense Delaunay meshing algorithms, which reconstruct a watertight surface using a graph cut on the Delaunay triangulation of the reconstructed sparse or dense point cloud * Improved robustness when merging different models * Improved pre-trained vocabulary trees available for download * Add COLMAP as a software entry under Linux desktop systems * Add support to compile COLMAP on ARM platforms * Add example Python script to read/write COLMAP database * Add region of interest (ROI) cropping in image undistortion * Several import bug fixes for spatial verification in image retrieval * Add more extensive continuous integration across more compilation scenarios * Many more bug fixes and improvements to code and documentation ----------------------- COLMAP 3.4 (01/29/2018) ----------------------- * Unified command-line interface: The functionality of previous executables have been merged into the ``src/exe/colmap.cc`` executable. The GUI can now be started using the command ``colmap gui`` and other commands are available as ``colmap [command]``. For example, the feature extractor is now available as ``colmap feature_extractor [args]`` while all command-line arguments stay the same as before. This should result in much faster project compile times and smaller disk space usage of the program. More details about the new interface are documented at https://colmap.github.io/cli.html * More complete depth and normal maps with larger patch sizes * Faster dense stereo computation by skipping rows/columns in patch match, improved random sampling in patch match, and faster bilateral NCC * Better high DPI screen support for the graphical user interface * Improved model viewer under Windows, which now requires Qt 5.4 * Save computed two-view geometries in database * Images (keypoint/matches visualization, depth and normal maps) can now be saved from the graphical user interface * Support for PMVS format without sparse bundler file * Faster covariant feature detection * Many more bug fixes and improvements ----------------------- COLMAP 3.3 (11/21/2017) ----------------------- * Add DSP (Domain Size Pooling) SIFT implementation. DSP-SIFT outperforms standard SIFT in most cases, as shown in "Comparative Evaluation of Hand-Crafted and Learned Local Features", Schoenberger et al., CVPR 2017 * Improved parameters dense reconstruction of smaller models * Improved compile times due to various code optimizations * Add option to specify camera model in automatic reconstruction * Add new model orientation alignment based on upright image assumption * Improved numerical stability for generalized absolute pose solver * Support for image range specification in PMVS dense reconstruction format * Support for older Python versions in automatic build script * Fix OpenCV Fisheye camera model to exactly match OpenCV specifications --------------------- COLMAP 3.2 (9/2/2017) --------------------- * Fully automatic cross-platform build script (Windows, Mac, Linux) * Add multi-GPU feature extraction if multiple CUDA devices are available * Configurable dimension and data type for vocabulary tree implementation * Add new sequential matching mode for image sequences with high frame-rate * Add generalized relative pose solver for multi-camera systems * Add sparse least absolute deviation solver * Add CPU/GPU options to automatic reconstruction tool * Add continuous integration system under Windows, Mac, Linux through Github * Many more bug fixes and improvements ---------------------- COLMAP 3.1 (6/15/2017) ---------------------- * Add fast spatial verification to image retrieval module * Add binary file format for sparse models by default. Old text format still fully compatible and possible conversion in GUI and CLI * Add cross-platform little endian binary file reading and writing * Faster and less memory hungry stereo fusion by computing consistency on demand and possible limitation of image size in fusion * Simpler geometric stereo processing interface. Now geometric stereo output can be computed using a single pass * Faster and multi-architecture CUDA compilation * Add medium quality option in automatic reconstructor * Many more bug fixes and improvements ---------------------- COLMAP 3.0 (5/22/2017) ---------------------- * Add automatic end-to-end reconstruction tool that automatically performs sparse and dense reconstruction on a given set of images * Add multi-GPU dense stereo if multiple CUDA devices are available * Add multi-GPU feature matching if multiple CUDA devices are available * Add Manhattan-world / gravity alignment using line detection * Add CUDA-based feature extraction useful for usage on clusters * Add CPU-based feature matching for machines without GPU * Add new THIN_PRISM_FISHEYE camera model with tangential/radial correction * Add binary to triangulate existing/empty sparse reconstruction * Add binary to print summary statistics about sparse reconstruction * Add transitive feature matching to transitively complete match graph * Improved scalability of dense reconstruction by using caching * More stable GPU-based feature matching with informative warnings * Faster vocabulary tree matching using dynamic scheduling in FLANN * Faster spatial feature matching using linear index instead of kd-tree * More stable camera undistortion using numerical Newton iteration * Improved option parsing with some backwards incompatible option renaming * Faster compile times by optimizing includes and CUDA flags * More stable view selection for small baseline scenario in dense reconstruction * Many more bug fixes and improvements ---------------------- COLMAP 2.1 (12/7/2016) ---------------------- * Support to only index and match specific images in vocabulary tree matching * Support to perform image retrieval using vocabulary tree * Several bug fixes and improvements for multi-view stereo module * Improved Structure-from-Motion initialization strategy * Support to only reconstruct the scene using specific images in the database * Add support to merge two models using overlapping registered images * Add support to geo-register/align models using known camera locations * Support to only extract specific images in feature extraction module * Support for snapshot model export during reconstruction * Skip already undistorted images if they exist in output directory * Support to limit the number of features in image retrieval for improved speed * Miscellaneous bug fixes and improvements --------------------- COLMAP 2.0 (9/8/2016) --------------------- * Implementation of dense reconstruction pipeline * Improved feature matching performance * New bundle adjuster for rigidly mounted multi-camera systems * New generalized absolute pose solver for multi-camera systems * New executable to extract colors from all images * Boost can now be linked in shared and static mode * Various bug fixes and performance improvements ---------------------- COLMAP 1.1 (5/19/2016) ---------------------- * Implementation of state-of-the-art image retrieval system using Hamming embedding for vocabulary tree matching. This should lead to much improved matching results as compared to the previous implementation. * Guided matching as an optional functionality. * New demo datasets for download. * Automatically switch to PBA if supported by the project. * Implementation of EPNP solver for local pose optimization in RANSAC. * Add option to extract upright SIFT features. * Saving JPEGs in superb quality by default in export. * Add option to clear matches and inlier matches in the project. * New fisheye camera models, including the FOV camera model used by Google Project Tango (Thomas Schoeps). * Extended documentation based on user feedback. * Fixed typo in documentation (Thomas Schoeps). --------------------- COLMAP 1.0 (4/4/2016) --------------------- * Initial release of COLMAP. colmap-4.1.1/CMakeLists.txt000066400000000000000000000445731522646662000155560ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.12) ################################################################################ # Options ################################################################################ option(SIMD_ENABLED "Whether to enable SIMD optimizations" ON) option(OPENMP_ENABLED "Whether to enable OpenMP parallelization" ON) option(IPO_ENABLED "Whether to enable interprocedural optimization" ON) option(CUDA_ENABLED "Whether to enable CUDA, if available" ON) option(ONNX_ENABLED "Whether to enable ONNX, if available" ON) option(GUI_ENABLED "Whether to enable the graphical UI" ON) option(MVS_ENABLED "Whether to enable the Multi-View Stereo module" ON) option(OPENGL_ENABLED "Whether to enable OpenGL, if available" ON) option(TESTS_ENABLED "Whether to build test binaries" OFF) option(COVERAGE_ENABLED "Whether to enable code coverage" OFF) option(ASAN_ENABLED "Whether to enable AddressSanitizer flags" OFF) option(TSAN_ENABLED "Whether to enable ThreadSanitizer flags" OFF) option(UBSAN_ENABLED "Whether to enable UndefinedBehaviorSanitizer flags" OFF) option(PROFILING_ENABLED "Whether to enable google-perftools linker flags" OFF) option(WERROR_ENABLED "Whether to treat compiler warnings as errors" OFF) option(CCACHE_ENABLED "Whether to enable compiler caching, if available" ON) option(CGAL_ENABLED "Whether to enable the CGAL library" ON) option(LSD_ENABLED "Whether to enable the LSD library" ON) option(DOWNLOAD_ENABLED "Whether to enable (automatic) download of resources (requires Curl/OpenSSL)" ON) option(UNINSTALL_ENABLED "Whether to create a target to 'uninstall' colmap" ON) option(BENCHMARK_ENABLED "Whether to enable runtime benchmarking support" OFF) option(FETCH_POSELIB "Whether to consume PoseLib using FetchContent or find_package" ON) option(FETCH_FAISS "Whether to consume faiss using FetchContent or find_package" ON) option(FETCH_ONNX "Whether to consume ONNX using FetchContent or find_package" ON) option(BUILD_SHARED_LIBS "Whether to build shared libraries (faster linktime, slower runtime)" OFF) option(ALL_SOURCE_TARGET "Whether to create a target for all source files (for Visual Studio / XCode development)" OFF) # Experimental option(CASPAR_ENABLED "Whether to enable CASPAR-accelerated bundle adjustment" OFF) option(CASPAR_USE_DOUBLE "Use double precision in Caspar solver" OFF) if(CASPAR_ENABLED) add_compile_definitions(CASPAR_ENABLED) if(CASPAR_USE_DOUBLE) add_compile_definitions(CASPAR_USE_DOUBLE) endif() endif() # Disables default features, as we specify each required feature manually below. list(APPEND VCPKG_MANIFEST_FEATURES "core") # Propagate options to vcpkg manifest. if(TESTS_ENABLED) list(APPEND VCPKG_MANIFEST_FEATURES "tests") endif() if(CUDA_ENABLED) list(APPEND VCPKG_MANIFEST_FEATURES "cuda") endif() if(ONNX_ENABLED AND NOT FETCH_ONNX) list(APPEND VCPKG_MANIFEST_FEATURES "onnx") endif() if(GUI_ENABLED) list(APPEND VCPKG_MANIFEST_FEATURES "gui") endif() if(CGAL_ENABLED) list(APPEND VCPKG_MANIFEST_FEATURES "cgal") endif() if(DOWNLOAD_ENABLED) list(APPEND VCPKG_MANIFEST_FEATURES "download") endif() project(COLMAP LANGUAGES C CXX) set(COLMAP_VERSION "4.1.1") set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CUDA_STANDARD 17) set(CMAKE_CUDA_STANDARD_REQUIRED ON) set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_NO_CYCLES ON) ################################################################################ # Include CMake dependencies ################################################################################ set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake) include(CheckCXXCompilerFlag) include(GNUInstallDirs) # Include helper macros and commands, and allow the included file to override # the CMake policies in this file include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CMakeHelper.cmake NO_POLICY_SCOPE) # Build position-independent code, so that shared libraries can link against # COLMAP's static libraries. set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################################################ # Dependency configuration ################################################################################ set(COLMAP_FIND_QUIETLY FALSE) include(cmake/FindDependencies.cmake) ################################################################################ # Compiler specific configuration ################################################################################ if(CMAKE_BUILD_TYPE) message(STATUS "Build type specified as ${CMAKE_BUILD_TYPE}") else() message(STATUS "Build type not specified, using Release") set(CMAKE_BUILD_TYPE Release) set(IS_DEBUG OFF) endif() if("${CMAKE_BUILD_TYPE}" STREQUAL "ClangTidy") find_program(CLANG_TIDY_EXE NAMES clang-tidy) if(NOT CLANG_TIDY_EXE) message(FATAL_ERROR "Could not find the clang-tidy executable, please set CLANG_TIDY_EXE") endif() else() unset(CLANG_TIDY_EXE) endif() if(IS_MSVC) # Some fixes for the Glog library. add_compile_definitions(GLOG_USE_GLOG_EXPORT) add_compile_definitions(GLOG_NO_ABBREVIATED_SEVERITIES) add_compile_definitions(GL_GLEXT_PROTOTYPES) add_compile_definitions(NOMINMAX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") # Disable warning: 'initializing': conversion from 'X' to 'Y', possible loss of data set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267 /wd4305") # Enable object level parallel builds in Visual Studio. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug" OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /bigobj") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj") endif() endif() if(IS_GNU) if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9) message(FATAL_ERROR "GCC version 4.8 or older not supported") endif() endif() if(IS_MACOS) # Mitigate CMake limitation, see: https://discourse.cmake.org/t/avoid-duplicate-linking-to-avoid-xcode-15-warnings/9084/10 add_link_options(LINKER:-no_warn_duplicate_libraries) endif() # Correctly set RPATH to look up dependencies. if(NOT IS_MSVC) if(IS_MACOS) set(RPATH_BASE "@executable_path") else() set(RPATH_BASE "$ORIGIN") endif() file(RELATIVE_PATH INSTALL_LIB_DIR "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}" "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}") list(APPEND CMAKE_INSTALL_RPATH "${RPATH_BASE}/${INSTALL_LIB_DIR}") endif() if(IS_DEBUG) add_compile_definitions(EIGEN_INITIALIZE_MATRICES_BY_NAN) endif() if(SIMD_ENABLED) message(STATUS "Enabling SIMD support") else() message(STATUS "Disabling SIMD support") endif() if(IPO_ENABLED AND NOT IS_DEBUG AND NOT IS_GNU) message(STATUS "Enabling interprocedural optimization") set_property(DIRECTORY PROPERTY INTERPROCEDURAL_OPTIMIZATION 1) else() message(STATUS "Disabling interprocedural optimization") endif() if(ASAN_ENABLED) message(STATUS "Enabling ASan support") if(IS_CLANG OR IS_GNU) add_compile_options(-fsanitize=address -fno-omit-frame-pointer -fsanitize-address-use-after-scope) add_link_options(-fsanitize=address) else() message(FATAL_ERROR "Unsupported compiler for ASan mode") endif() endif() if(TSAN_ENABLED) message(STATUS "Enabling TSan support") if(IS_CLANG OR IS_GNU) add_compile_options(-fsanitize=thread) add_link_options(-fsanitize=thread) else() message(FATAL_ERROR "Unsupported compiler for TSan mode") endif() endif() if(UBSAN_ENABLED) message(STATUS "Enabling UBsan support") if(IS_CLANG OR IS_GNU) add_compile_options(-fsanitize=undefined) add_link_options(-fsanitize=undefined) else() message(FATAL_ERROR "Unsupported compiler for UBsan mode") endif() endif() if(CCACHE_ENABLED) find_program(CCACHE ccache) if(CCACHE) message(STATUS "Enabling ccache support") set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE}) set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE}) if(CUDA_ENABLED) set(CMAKE_CUDA_COMPILER_LAUNCHER ${CCACHE}) endif() else() message(STATUS "Disabling ccache support") endif() else() message(STATUS "Disabling ccache support") endif() if(PROFILING_ENABLED) message(STATUS "Enabling profiling support") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -lprofiler -ltcmalloc") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lprofiler -ltcmalloc") else() message(STATUS "Disabling profiling support") endif() if(TESTS_ENABLED) message(STATUS "Enabling tests") enable_testing() include(CTest) else() message(STATUS "Disabling tests") endif() if(COVERAGE_ENABLED) message(STATUS "Enabling coverage support") else() message(STATUS "Disabling coverage support") endif() ################################################################################ # Add sources ################################################################################ # Generate source file with version definitions. include(GenerateVersionDefinitions) include_directories(src) link_directories(${COLMAP_LINK_DIRS}) add_subdirectory(src/thirdparty) add_subdirectory(src/colmap) if(BENCHMARK_ENABLED) add_subdirectory(benchmark/runtime) endif() ################################################################################ # Generate source groups for Visual Studio, XCode, etc. ################################################################################ COLMAP_ADD_SOURCE_DIR(src/colmap/controllers CONTROLLERS_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/estimators ESTIMATORS_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/estimators/cost_functions ESTIMATORS_COST_FUNCTIONS_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/estimators/solvers ESTIMATORS_SOLVERS_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/exe EXE_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/feature FEATURE_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/geometry GEOMETRY_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/image IMAGE_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/math MATH_SRCS *.h *.cc) if(MVS_ENABLED) COLMAP_ADD_SOURCE_DIR(src/colmap/mvs MVS_SRCS *.h *.cc *.cu) endif() COLMAP_ADD_SOURCE_DIR(src/colmap/optim OPTIM_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/retrieval RETRIEVAL_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/scene SCENE_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/sensor SENSOR_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/sfm SFM_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/tools TOOLS_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/ui UI_SRCS *.h *.cc) COLMAP_ADD_SOURCE_DIR(src/colmap/util UTIL_SRCS *.h *.cc) if(LSD_ENABLED) COLMAP_ADD_SOURCE_DIR(src/thirdparty/LSD THIRDPARTY_LSD_SRCS *.h *.c) endif() COLMAP_ADD_SOURCE_DIR(src/thirdparty/PoissonRecon THIRDPARTY_POISSON_RECON_SRCS *.h *.cpp *.inl) COLMAP_ADD_SOURCE_DIR(src/thirdparty/SiftGPU THIRDPARTY_SIFT_GPU_SRCS *.h *.cpp *.cu) COLMAP_ADD_SOURCE_DIR(src/thirdparty/VLFeat THIRDPARTY_VLFEAT_SRCS *.h *.c *.tc) # Add all of the source files to a regular library target, as using a custom # target does not allow us to set its C++ include directories (and thus # intellisense can't find any of the included files). if(ALL_SOURCE_TARGET) set(ALL_SRCS ${CONTROLLERS_SRCS} ${ESTIMATORS_SRCS} ${ESTIMATORS_COST_FUNCTIONS_SRCS} ${ESTIMATORS_SOLVERS_SRCS} ${EXE_SRCS} ${FEATURE_SRCS} ${GEOMETRY_SRCS} ${IMAGE_SRCS} ${MATH_SRCS} ${OPTIM_SRCS} ${RETRIEVAL_SRCS} ${SCENE_SRCS} ${SENSOR_SRCS} ${SFM_SRCS} ${TOOLS_SRCS} ${UI_SRCS} ${UTIL_SRCS} ${THIRDPARTY_POISSON_RECON_SRCS} ${THIRDPARTY_SIFT_GPU_SRCS} ${THIRDPARTY_VLFEAT_SRCS} ) if(MVS_ENABLED) list(APPEND ALL_SRCS ${MVS_SRCS} ) endif() if(LSD_ENABLED) list(APPEND ALL_SRCS ${THIRDPARTY_LSD_SRCS} ) endif() add_library( ${COLMAP_SRC_ROOT_FOLDER} ${ALL_SRCS} ) # Prevent the library from being compiled automatically. set_target_properties( ${COLMAP_SRC_ROOT_FOLDER} PROPERTIES EXCLUDE_FROM_ALL 1 EXCLUDE_FROM_DEFAULT_BUILD 1) endif() ################################################################################ # Install and uninstall scripts ################################################################################ # Install batch scripts under Windows. if(IS_MSVC) install(FILES "scripts/shell/COLMAP.bat" "scripts/shell/RUN_TESTS.bat" PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE DESTINATION "/") endif() # Install application meny entry under Linux/Unix. if(UNIX AND NOT APPLE) install(FILES "doc/COLMAP.desktop" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications") endif() # Configure the uninstallation script. if(UNINSTALL_ENABLED) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/CMakeUninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/CMakeUninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/CMakeUninstall.cmake) set_target_properties(uninstall PROPERTIES FOLDER ${CMAKE_TARGETS_ROOT_FOLDER}) endif() set(COLMAP_EXPORT_LIBS # Internal. colmap_controllers colmap_estimators colmap_estimators_cost_functions colmap_estimators_solvers colmap_exe colmap_feature_types colmap_feature colmap_geometry colmap_image colmap_math colmap_optim colmap_retrieval colmap_scene colmap_scene_types colmap_sensor colmap_sfm colmap_util # Third-party. colmap_poisson_recon colmap_vlfeat ) if(MVS_ENABLED) list(APPEND COLMAP_EXPORT_LIBS colmap_mvs) endif() if(LSD_ENABLED) list(APPEND COLMAP_EXPORT_LIBS # Third-party. colmap_lsd ) endif() if(GUI_ENABLED) list(APPEND COLMAP_EXPORT_LIBS colmap_ui ) endif() if(CUDA_ENABLED) list(APPEND COLMAP_EXPORT_LIBS colmap_util_cuda ) if(MVS_ENABLED) list(APPEND COLMAP_EXPORT_LIBS colmap_mvs_cuda) endif() endif() if(GPU_ENABLED) list(APPEND COLMAP_EXPORT_LIBS colmap_sift_gpu ) endif() if(FETCH_POSELIB) list(APPEND COLMAP_EXPORT_LIBS PoseLib) endif() if(FETCH_FAISS) list(APPEND COLMAP_EXPORT_LIBS faiss) endif() if(CASPAR_ENABLED) list(APPEND COLMAP_EXPORT_LIBS caspar_lib_core) endif() # Add unified interface library target to export. add_library(colmap INTERFACE) target_link_libraries(colmap INTERFACE ${COLMAP_EXPORT_LIBS}) target_include_directories( colmap INTERFACE $ $) install( TARGETS colmap ${COLMAP_EXPORT_LIBS} EXPORT colmap-targets LIBRARY DESTINATION thirdparty/) # Generate config and version. include(CMakePackageConfigHelpers) set(PACKAGE_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/colmap-config.cmake") set(INSTALL_CONFIG_DIR "${CMAKE_INSTALL_DATAROOTDIR}/colmap") configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/cmake/colmap-config.cmake.in ${PACKAGE_CONFIG_FILE} INSTALL_DESTINATION ${INSTALL_CONFIG_DIR}) install(FILES ${PACKAGE_CONFIG_FILE} DESTINATION ${INSTALL_CONFIG_DIR}) configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/colmap-config-version.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/colmap-config-version.cmake" @ONLY) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/colmap-config-version.cmake" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/colmap") # Install targets. install( EXPORT colmap-targets FILE colmap-targets.cmake NAMESPACE colmap:: DESTINATION ${INSTALL_CONFIG_DIR}) # Install header files. install( DIRECTORY src/colmap DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} FILES_MATCHING PATTERN "*.h") install( DIRECTORY src/thirdparty DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/colmap FILES_MATCHING REGEX ".*[.]h|.*[.]hpp|.*[.]inl" PATTERN "Symforce-Caspar" EXCLUDE) # Only ship the active Caspar precision tree (avoids bundling unused kernel # headers and the inactive precision when CASPAR_ENABLED is off). if(CASPAR_ENABLED) if(CASPAR_USE_DOUBLE) set(_caspar_install_precision "f64") else() set(_caspar_install_precision "f32") endif() install( DIRECTORY src/thirdparty/Symforce-Caspar/generated/${_caspar_install_precision} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/colmap/thirdparty/Symforce-Caspar/generated FILES_MATCHING REGEX ".*[.]h|.*[.]hpp|.*[.]inl") endif() # Install find_package scripts for dependencies. install( DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/colmap FILES_MATCHING PATTERN "Find*.cmake") colmap-4.1.1/CONTRIBUTING.md000066400000000000000000000010721522646662000152320ustar00rootroot00000000000000Contributing ------------ Contributions (bug reports, bug fixes, improvements, etc.) are very welcome and should be submitted in the form of new issues and/or pull requests on GitHub. Please, adhere to the Google coding style guide: https://google.github.io/styleguide/cppguide.html by using the provided ".clang-format" file. Document code, functions, methods, classes, etc. Make sure to add unit tests for all newly added code and make sure that algorithmic "improvements" generalize and actually improve the results of the pipeline on a variety of datasets. colmap-4.1.1/COPYING.txt000066400000000000000000000035651522646662000146630ustar00rootroot00000000000000The COLMAP library is licensed under the new BSD license. Note that this text refers only to the license for COLMAP itself, independent of its dependencies, which are separately licensed. Building COLMAP with these dependencies may affect the resulting COLMAP license. Copyright (c), ETH Zurich and UNC Chapel Hill. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. colmap-4.1.1/README.md000066400000000000000000000146531522646662000142710ustar00rootroot00000000000000COLMAP ====== About ----- COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface. It offers a wide range of features for reconstruction of ordered and unordered image collections. The software is licensed under the new BSD license. The latest source code is available at https://github.com/colmap/colmap. COLMAP builds on top of existing works and when using specific algorithms within COLMAP, please also cite the original authors, as specified in the source code, and consider citing relevant third-party dependencies (most notably ceres-solver, poselib, sift-gpu, vlfeat). Download -------- * Binaries for **Windows** and other resources can be downloaded from https://github.com/colmap/colmap/releases. * Binaries for **Linux/Unix/BSD** are available at https://repology.org/metapackage/colmap/versions. * Pre-built **Docker** images are available at https://hub.docker.com/r/colmap/colmap. * Conda packages are available at https://anaconda.org/conda-forge/colmap and can be installed with `conda install colmap` * **Python bindings** are available at https://pypi.org/project/pycolmap. CUDA-enabled wheels are available at https://pypi.org/project/pycolmap-cuda12. * To **build from source**, please see https://colmap.github.io/install.html. Getting Started --------------- 1. Download pre-built binaries or build from source. 2. Download one of the provided [sample datasets](https://demuc.de/colmap/datasets/) or use your own images. 3. Use the **automatic reconstruction** to easily build models with a single click or command. Documentation ------------- The documentation is available [here](https://colmap.github.io/). To build and update the documentation at the documentation website, follow [these steps](https://colmap.github.io/install.html#documentation). Support ------- Please, use [GitHub Discussions](https://github.com/colmap/colmap/discussions) for questions and the [GitHub issue tracker](https://github.com/colmap/colmap) for bug reports, feature requests/additions, etc. Acknowledgments --------------- COLMAP was originally written by [Johannes Schönberger](https://demuc.de/) with funding provided by his PhD advisors Jan-Michael Frahm and Marc Pollefeys. The team of core project maintainers currently includes [Johannes Schönberger](https://github.com/ahojnnes), [Paul-Edouard Sarlin](https://github.com/sarlinpe), [Shaohui Liu](https://github.com/B1ueber2y), and [Linfei Pan](https://lpanaf.github.io/). The Python bindings in PyCOLMAP were originally added by [Mihai Dusmanu](https://github.com/mihaidusmanu), [Philipp Lindenberger](https://github.com/Phil26AT), and [Paul-Edouard Sarlin](https://github.com/sarlinpe). The project has also benefitted from countless community contributions, including bug fixes, improvements, new features, third-party tooling, and community support (special credits to [Torsten Sattler](https://tsattler.github.io)). Citation -------- If you use this project for your research, please cite: @inproceedings{schoenberger2016sfm, author={Sch\"{o}nberger, Johannes Lutz and Frahm, Jan-Michael}, title={Structure-from-Motion Revisited}, booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)}, year={2016}, } @inproceedings{schoenberger2016mvs, author={Sch\"{o}nberger, Johannes Lutz and Zheng, Enliang and Pollefeys, Marc and Frahm, Jan-Michael}, title={Pixelwise View Selection for Unstructured Multi-View Stereo}, booktitle={European Conference on Computer Vision (ECCV)}, year={2016}, } If you use the global SfM pipeline (GLOMAP), please cite: @inproceedings{pan2024glomap, author={Pan, Linfei and Barath, Daniel and Pollefeys, Marc and Sch\"{o}nberger, Johannes Lutz}, title={{Global Structure-from-Motion Revisited}}, booktitle={European Conference on Computer Vision (ECCV)}, year={2024}, } If you use the image retrieval / vocabulary tree engine, please cite: @inproceedings{schoenberger2016vote, author={Sch\"{o}nberger, Johannes Lutz and Price, True and Sattler, Torsten and Frahm, Jan-Michael and Pollefeys, Marc}, title={A Vote-and-Verify Strategy for Fast Spatial Verification in Image Retrieval}, booktitle={Asian Conference on Computer Vision (ACCV)}, year={2016}, } Contribution ------------ Contributions (bug reports, bug fixes, improvements, etc.) are very welcome and should be submitted in the form of new issues and/or pull requests on GitHub. License ------- The COLMAP library is licensed under the new BSD license. Note that this text refers only to the license for COLMAP itself, independent of its thirdparty dependencies, which are separately licensed. Building COLMAP with these dependencies may affect the resulting COLMAP license. Copyright (c), ETH Zurich and UNC Chapel Hill. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. colmap-4.1.1/benchmark/000077500000000000000000000000001522646662000147335ustar00rootroot00000000000000colmap-4.1.1/benchmark/reconstruction/000077500000000000000000000000001522646662000200145ustar00rootroot00000000000000colmap-4.1.1/benchmark/reconstruction/compare.py000066400000000000000000000050201522646662000220110ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import argparse import pickle from pathlib import Path from evaluation.utils import create_result_table, diff_metrics import pycolmap def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("--report_a_path", type=Path, required=True) parser.add_argument("--report_b_path", type=Path, required=True) return parser.parse_args() def main() -> None: args = parse_args() with open(args.report_a_path, "rb") as report_file: metrics_a = pickle.load(report_file) with open(args.report_b_path, "rb") as report_file: metrics_b = pickle.load(report_file) metrics_diff = diff_metrics(metrics_a, metrics_b) pycolmap.logging.info("Results A:\n" + create_result_table(metrics_a)) pycolmap.logging.info("Results B:\n" + create_result_table(metrics_b)) pycolmap.logging.info( "Results A - B:\n" + create_result_table(metrics_diff) ) if __name__ == "__main__": main() colmap-4.1.1/benchmark/reconstruction/download.py000066400000000000000000000141311522646662000221750ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import argparse import shutil import subprocess import zipfile from pathlib import Path import py7zr import requests import pycolmap def download_file(url: str, target_folder: Path) -> str: filename = url.split("/")[-1] with requests.get(url, stream=True) as req: req.raise_for_status() with open(target_folder / filename, "wb") as f: for chunk in req.iter_content(chunk_size=8192): f.write(chunk) return filename def download_eth3d(data_path: Path) -> None: for filename, category in [ ("multi_view_training_dslr_undistorted.7z", "dslr"), ("multi_view_test_dslr_undistorted.7z", "dslr"), ("multi_view_training_rig_undistorted.7z", "rig"), ("multi_view_test_rig_undistorted.7z", "rig"), ]: target_folder = data_path / category target_folder.mkdir(parents=True, exist_ok=True) pycolmap.logging.info( f"Downloading ETH3D category={category}, filename={filename}" ) download_file("https://www.eth3d.net/data/" + filename, target_folder) pycolmap.logging.info( f"Extracting ETH3D category={category}, filename={filename}" ) with py7zr.SevenZipFile(target_folder / filename, mode="r") as archive: archive.extractall(path=target_folder) def download_imc2023(data_path: Path) -> None: data_path.mkdir(parents=True, exist_ok=True) pycolmap.logging.info("Downloading IMC2023") subprocess.check_call( [ "kaggle", "competitions", "download", "-c", "image-matching-challenge-2023", "-p", str(data_path), ], ) pycolmap.logging.info("Extracting IMC2023") with zipfile.ZipFile( data_path / "image-matching-challenge-2023.zip", mode="r" ) as archive: archive.extractall(path=data_path) def download_imc2024(data_path: Path) -> None: data_path.mkdir(parents=True, exist_ok=True) pycolmap.logging.info("Downloading IMC2024") subprocess.check_call( [ "kaggle", "competitions", "download", "-c", "image-matching-challenge-2024", "-p", str(data_path), ], ) pycolmap.logging.info("Extracting IMC2024") with zipfile.ZipFile( data_path / "image-matching-challenge-2024.zip", mode="r" ) as archive: archive.extractall(path=data_path) # Move all scenes to the "all" category sub-folder. category_path = data_path / "train/all" category_path.mkdir(parents=True, exist_ok=True) for scene in (data_path / "train").iterdir(): if str(scene).endswith("/all"): continue shutil.move(scene, data_path / category_path) # TODO: BlendedMVS+ and BlendedMVS++. def download_blended_mvs(data_path: Path) -> None: target_folder = data_path / "BlendedMVS" target_folder.mkdir(parents=True, exist_ok=True) pycolmap.logging.info("Downloading BlendedMVS") for filename in [ "BlendedMVS.zip", ] + [f"BlendedMVS.z{i:02d}" for i in range(1, 16)]: download_file( "https://github.com/YoYo000/BlendedMVS/releases/download/v1.0.0/" + filename, target_folder, ) pycolmap.logging.info("Merging BlendedMVS split archive") combined_zip = target_folder / "BlendedMVS_combined.zip" subprocess.check_call( [ "zip", "-q", "-s", "0", str(target_folder / "BlendedMVS.zip"), "--out", str(combined_zip), ] ) pycolmap.logging.info("Extracting BlendedMVS") try: with zipfile.ZipFile(combined_zip, mode="r") as archive: archive.extractall(path=data_path) finally: if combined_zip.exists(): combined_zip.unlink() DOWNLOADERS = { "eth3d": download_eth3d, "imc2023": download_imc2023, "imc2024": download_imc2024, "blended-mvs": download_blended_mvs, } def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument( "--data_path", type=Path, default=Path(__file__).parent / "data" ) parser.add_argument( "--datasets", nargs="+", default=DOWNLOADERS.keys(), choices=DOWNLOADERS.keys(), ) return parser.parse_args() def main() -> None: args = parse_args() for dataset in args.datasets: DOWNLOADERS[dataset](args.data_path / dataset) if __name__ == "__main__": main() colmap-4.1.1/benchmark/reconstruction/evaluate.py000066400000000000000000000067221522646662000222030ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import pickle from evaluation.blended_mvs import DatasetBlendedMVS from evaluation.eth3d import DatasetETH3D from evaluation.imc import DatasetIMC2023, DatasetIMC2024 from evaluation.utils import ( Dataset, create_result_table, filter_smallest_scenes_per_category, parse_args, process_scenes, ) import pycolmap def main() -> None: args = parse_args() datasets: dict[str, type[Dataset]] = { "eth3d": DatasetETH3D, "blended-mvs": DatasetBlendedMVS, "imc2023": DatasetIMC2023, "imc2024": DatasetIMC2024, } metrics = {} for dataset_name in args.datasets: if dataset_name not in datasets: pycolmap.logging.error(f"Unknown dataset: {dataset_name}") return pycolmap.logging.info(f"Evaluating dataset: {dataset_name}") dataset = datasets[dataset_name]( data_path=args.data_path, categories=args.categories, scenes=args.scenes, run_path=args.run_path, run_name=args.run_name, ) scene_infos = dataset.list_scenes() if args.fast: scene_infos = filter_smallest_scenes_per_category( scene_infos, args.fast_num_scenes ) if not scene_infos: pycolmap.logging.warning("No scenes found") return metrics[dataset_name] = process_scenes( args=args, scene_infos=scene_infos, prepare_scene=dataset.prepare_scene, position_accuracy_gt=dataset.position_accuracy_gt, ) pycolmap.logging.info("Results:\n" + create_result_table(metrics)) report_path = args.run_path / args.run_name / (args.report_name + ".pkl") pycolmap.logging.info(f"Saving report to: {report_path}") with open(report_path, "wb") as report_file: pickle.dump(metrics, report_file) if __name__ == "__main__": main() colmap-4.1.1/benchmark/reconstruction/evaluation/000077500000000000000000000000001522646662000221635ustar00rootroot00000000000000colmap-4.1.1/benchmark/reconstruction/evaluation/__init__.py000066400000000000000000000000001522646662000242620ustar00rootroot00000000000000colmap-4.1.1/benchmark/reconstruction/evaluation/blended_mvs.py000066400000000000000000000134331522646662000250230ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import numpy as np from PIL import Image import pycolmap from .utils import Dataset, SceneInfo class DatasetBlendedMVS(Dataset): @property def position_accuracy_gt(self): return 0.001 def list_scenes(self): scene_infos = [] for category_path in (self.data_path / "blended-mvs").iterdir(): if not category_path.is_dir() or ( self.categories and category_path.name not in self.categories ): continue category = category_path.name for scene_path in sorted(category_path.iterdir()): if not scene_path.is_dir(): continue scene = scene_path.name if self.scenes and scene not in self.scenes: continue workspace_path = ( self.run_path / self.run_name / "blended-mvs" / category / scene ) image_path = scene_path / "blended_images" image_list_path = scene_path / "images.txt" num_images = 0 with open(image_list_path, "w") as fid: for filepath in sorted(image_path.iterdir()): image_name = str(filepath.name) if ( image_name.endswith(".jpg") and "masked" not in image_name ): fid.write(image_name + "\n") num_images += 1 sparse_gt_path = scene_path / "sparse_gt" colmap_extra_args = ["--image_list_path", image_list_path] scene_info = SceneInfo( dataset="blended-mvs", category=category, scene=scene, num_images=num_images, workspace_path=workspace_path, image_path=image_path, sparse_gt_path=sparse_gt_path, has_camera_priors=True, colmap_extra_args=colmap_extra_args, ) scene_infos.append(scene_info) return scene_infos def prepare_scene(self, scene_info): if scene_info.sparse_gt_path.exists(): return scene_path = scene_info.image_path.parent sparse_gt = pycolmap.Reconstruction() for i, filepath in enumerate(sorted((scene_path / "cams").iterdir())): filename = str(filepath.name) if not filename.endswith("_cam.txt"): continue image_name = filename[:-8] + ".jpg" width, height = Image.open( scene_path / "blended_images" / image_name ).size[:2] with open(filepath, encoding="ascii") as fid: lines = list(map(lambda b: b.strip(), fid.readlines())) extrinsic = np.fromstring( " ".join(lines[1:4]), count=12, sep=" ", ).reshape(3, 4) intrinsic = np.fromstring( " ".join(lines[7:10]), count=9, sep=" ", ).reshape(3, 3) camera = pycolmap.Camera( camera_id=i, model=pycolmap.CameraModelId.PINHOLE, width=width, height=height, params=intrinsic[(0, 1, 0, 1), (0, 1, 2, 2)], ) rig = pycolmap.Rig(rig_id=i) rig.add_ref_sensor(camera.sensor_id) image = pycolmap.Image( image_id=i, camera_id=i, name=image_name, ) image.frame_id = i frame = pycolmap.Frame(frame_id=i) frame.rig_id = i frame.add_data_id(image.data_id) frame.rig_from_world = pycolmap.Rigid3d(extrinsic) sparse_gt.add_camera(camera) sparse_gt.add_rig(rig) sparse_gt.add_frame(frame) sparse_gt.add_image(image) scene_info.sparse_gt_path.mkdir(exist_ok=True) sparse_gt.write(scene_info.sparse_gt_path) colmap-4.1.1/benchmark/reconstruction/evaluation/covisibility.py000066400000000000000000000275061522646662000252600ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import dataclasses import functools from pathlib import Path import numpy as np import numpy.typing as npt import pycolmap from .geometry import vec_angular_dist_deg @dataclasses.dataclass class Frustum: # Sampled 3D points on the frustum in world coordinates. points: npt.NDArray[np.floating] # Near/far depth bounds (in camera coordinates) for the frustum. depth_range: tuple[float, float] def _estimate_depth_ranges( sparse_gt: pycolmap.Reconstruction, percentile_near: float = 2.0, percentile_far: float = 98.0, min_num_points: int = 10, ) -> dict[int, tuple[float, float]]: """Estimate per-image near/far depth range from GT 3D points. For each image, computes depths of the 3D points visible in that image and returns percentile-based near/far bounds. Falls back to (0.1, 100.0) for images with insufficient depth data. """ default_range = (0.1, 100.0) depth_ranges: dict[int, tuple[float, float]] = {} for image_id, image in sparse_gt.images.items(): valid = [ p.point3D_id for p in image.points2D if p.point3D_id != pycolmap.INVALID_POINT3D_ID ] if len(valid) < min_num_points: depth_ranges[image_id] = default_range continue points_xyz = np.array([sparse_gt.points3D[pid].xyz for pid in valid]) cam_from_world = image.cam_from_world() points_in_cam = ( cam_from_world.rotation.matrix() @ points_xyz.T + cam_from_world.translation[:, np.newaxis] ) depths = points_in_cam[2, :] pos_depths = depths[depths > 0] if len(pos_depths) < min_num_points: depth_ranges[image_id] = default_range continue near, far = np.percentile(pos_depths, [percentile_near, percentile_far]) depth_ranges[image_id] = (float(near), float(far)) return depth_ranges def _sample_frustum_points( image: pycolmap.Image, camera: pycolmap.Camera, near: float, far: float, num_steps: int = 5, ) -> npt.NDArray[np.floating]: """Sample points on a camera viewing frustum in world coordinates. Samples a grid of points on the image plane (corners, edges, and interior) at multiple depths between near and far, then transforms them to world space for more accurate overlap checks. """ w, h = camera.width, camera.height us = np.linspace(0, w, num_steps) vs = np.linspace(0, h, num_steps) grid_x, grid_y = np.meshgrid(us, vs) pixels = np.stack([grid_x.ravel(), grid_y.ravel()], axis=1) cam_points = camera.cam_from_img(pixels) assert cam_points is not None cam_rays = np.column_stack([cam_points, np.ones(len(cam_points))]) depths = np.linspace(near, far, num_steps) points_in_cam = np.vstack([cam_rays * d for d in depths]) world_from_cam = image.cam_from_world().inverse() points_in_world = ( world_from_cam.rotation.matrix() @ points_in_cam.T + world_from_cam.translation[:, np.newaxis] ).T return points_in_world def _build_image_point3D_sets( sparse_gt: pycolmap.Reconstruction, ) -> dict[int, set[int]]: """Build a mapping from image ID to the set of observed 3D point IDs.""" image_points: dict[int, set[int]] = {} for image_id, image in sparse_gt.images.items(): image_points[image_id] = { p.point3D_id for p in image.points2D if p.point3D_id != pycolmap.INVALID_POINT3D_ID } return image_points def _compute_frustums_for_all_images( sparse_gt: pycolmap.Reconstruction, frustum_near: float | None, frustum_far: float | None, ) -> dict[int, Frustum]: depth_ranges: dict[int, tuple[float, float]] = {} if frustum_near is None or frustum_far is None: depth_ranges = _estimate_depth_ranges(sparse_gt) frustums: dict[int, Frustum] = {} for image_id, image_gt in sparse_gt.images.items(): camera_gt = sparse_gt.cameras[image_gt.camera_id] est_near, est_far = depth_ranges.get(image_id, (0.1, 100.0)) near = frustum_near if frustum_near is not None else est_near far = frustum_far if frustum_far is not None else est_far frustums[image_id] = Frustum( points=_sample_frustum_points(image_gt, camera_gt, near, far), depth_range=(near, far), ) return frustums def _is_pair_covisible_by_tracks( image1: pycolmap.Image, image2: pycolmap.Image, image_point3D_sets: dict[int, set[int]], min_shared_points: int, ) -> bool: shared = len( image_point3D_sets[image1.image_id] & image_point3D_sets[image2.image_id] ) return shared >= min_shared_points def _is_pair_covisible_by_frustum( image1: pycolmap.Image, image2: pycolmap.Image, sparse_gt: pycolmap.Reconstruction, frustums: dict[int, Frustum], max_viewing_angle_deg: float, ) -> bool: """Check whether two cameras have overlapping viewing frustums. Uses a three-stage test that short-circuits on the first definitive result: 1. Viewing angle: reject if angle between viewing directions exceeds the threshold. 2. Vertex projection: accept if any of A's frustum vertices projects into B's image (or vice versa) with positive depth within the target image's expected GT depth range. """ if ( vec_angular_dist_deg( image1.viewing_direction(), image2.viewing_direction() ) > max_viewing_angle_deg ): return False camera1 = sparse_gt.cameras[image1.camera_id] camera2 = sparse_gt.cameras[image2.camera_id] def project_and_check( frustum: Frustum, image: pycolmap.Image, camera: pycolmap.Camera, ) -> bool: near, far = frustums[image.image_id].depth_range cam_from_world = image.cam_from_world() R = cam_from_world.rotation.matrix() t = cam_from_world.translation points_in_cam = (R @ frustum.points.T + t[:, np.newaxis]).T depths = points_in_cam[:, 2] mask = (depths >= near) & (depths <= far) if not np.any(mask): return False img_points = camera.img_from_cam(points_in_cam[mask]) if img_points is None: return False in_bounds = ( (img_points[:, 0] >= 0) & (img_points[:, 0] <= camera.width) & (img_points[:, 1] >= 0) & (img_points[:, 1] <= camera.height) ) return bool(np.any(in_bounds)) return project_and_check( frustums[image1.image_id], image2, camera2 ) or project_and_check(frustums[image2.image_id], image1, camera1) def filter_covisibility( database_path: Path, sparse_gt: pycolmap.Reconstruction, covisibility_frustum_near: float | None, covisibility_frustum_far: float | None, max_viewing_angle_deg: float, min_shared_points: int = 0, ) -> None: """Filter non-covisible image pairs from the database. If the GT reconstruction contains 3D point tracks and min_shared_points > 0, uses track-based covisibility: two images are covisible if they share at least min_shared_points common 3D points. Otherwise, falls back to frustum-based overlap checking using GT camera poses and intrinsics. """ pycolmap.logging.info("Filtering non-covisible image pairs") use_tracks = min_shared_points > 0 and sparse_gt.num_points3D() > 0 if use_tracks: pycolmap.logging.info( f"Using track-based covisibility " f"(min_shared_points={min_shared_points})" ) image_point3D_sets = _build_image_point3D_sets(sparse_gt) is_covisible = functools.partial( _is_pair_covisible_by_tracks, image_point3D_sets=image_point3D_sets, min_shared_points=min_shared_points, ) else: if min_shared_points > 0: pycolmap.logging.warning( "No GT 3D points available for track-based covisibility, " "falling back to frustum-based check" ) frustums = _compute_frustums_for_all_images( sparse_gt, covisibility_frustum_near, covisibility_frustum_far ) is_covisible = functools.partial( _is_pair_covisible_by_frustum, sparse_gt=sparse_gt, frustums=frustums, max_viewing_angle_deg=max_viewing_angle_deg, ) images_gt_by_name: dict[str, pycolmap.Image] = { image_gt.name: image_gt for image_gt in sparse_gt.images.values() } with pycolmap.Database.open(str(database_path)) as database: db_id_to_name: dict[int, str] = { db_image.image_id: db_image.name for db_image in database.read_all_images() } pair_ids, _ = database.read_two_view_geometry_num_inliers() total_pairs = len(pair_ids) filtered_count = 0 missing_gt_image_names: set[str] = set() for pair_id in pair_ids: image_id1, image_id2 = pycolmap.pair_id_to_image_pair(pair_id) name1 = db_id_to_name.get(image_id1) name2 = db_id_to_name.get(image_id2) if name1 is None or name2 is None: continue image_gt1 = images_gt_by_name.get(name1) image_gt2 = images_gt_by_name.get(name2) if image_gt1 is None: missing_gt_image_names.add(name1) if image_gt2 is None: missing_gt_image_names.add(name2) if image_gt1 is None or image_gt2 is None: continue if not is_covisible(image_gt1, image_gt2): # Only delete the two-view geometry, so it will be ignored # during reconstruction but keep the raw matches, so upon # re-running the pipeline, the matches will be re-computed, # if not filtering by covisibility. database.delete_two_view_geometry(image_id1, image_id2) filtered_count += 1 pycolmap.logging.info( f"Co-visibility filtering: {filtered_count}/{total_pairs} pairs " f"removed, {total_pairs - filtered_count} kept" ) if missing_gt_image_names: pycolmap.logging.warning( f"Skipped pairs involving {len(missing_gt_image_names)} " f"database image(s) without a GT counterpart" ) colmap-4.1.1/benchmark/reconstruction/evaluation/covisibility_test.py000066400000000000000000000333431522646662000263130ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import numpy as np import pycolmap from .covisibility import ( Frustum, _build_image_point3D_sets, _estimate_depth_ranges, _is_pair_covisible_by_frustum, _sample_frustum_points, ) def _make_camera() -> pycolmap.Camera: cam = pycolmap.Camera() cam.model = pycolmap.CameraModelId.PINHOLE cam.width = 640 cam.height = 480 cam.params = [500, 500, 320, 240] cam.camera_id = 1 return cam def _add_image( recon: pycolmap.Reconstruction, image_id: int, name: str, position: np.ndarray, rotation: pycolmap.Rotation3d | None = None, num_points2D: int = 0, ) -> None: if rotation is None: rotation = pycolmap.Rotation3d() translation = -rotation.matrix() @ position points2d = [pycolmap.Point2D() for _ in range(num_points2D)] for i, p in enumerate(points2d): p.xy = np.array([100.0 + i * 10, 200.0]) frame = pycolmap.Frame() frame.rig_id = 1 frame.frame_id = image_id img = pycolmap.Image() img.name = name img.camera_id = 1 img.frame_id = image_id img.image_id = image_id if num_points2D > 0: img.points2D = pycolmap.Point2DList(points2d) frame.add_data_id(img.data_id) frame.rig_from_world = pycolmap.Rigid3d(rotation, translation) recon.add_frame(frame) recon.add_image(img) class TestEstimateDepthRanges: def test_single_image_with_points(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) _add_image(recon, 1, "img1.jpg", np.array([0, 0, 0]), num_points2D=20) depths = [] for i in range(20): depth = 2.0 + i * 0.5 depths.append(depth) recon.add_point3D( np.array([0.0, 0.0, depth]), pycolmap.Track([pycolmap.TrackElement(1, i)]), ) ranges = _estimate_depth_ranges(recon) assert 1 in ranges near, far = ranges[1] np.testing.assert_almost_equal(near, np.percentile(depths, 2.0)) np.testing.assert_almost_equal(far, np.percentile(depths, 98.0)) def test_insufficient_points_returns_default(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) _add_image(recon, 1, "img1.jpg", np.array([0, 0, 0]), num_points2D=5) for i in range(5): recon.add_point3D( np.array([0.0, 0.0, float(i + 1)]), pycolmap.Track([pycolmap.TrackElement(1, i)]), ) ranges = _estimate_depth_ranges(recon) assert ranges[1] == (0.1, 100.0) def test_per_image_ranges_differ(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) _add_image(recon, 1, "img1.jpg", np.array([0, 0, 0]), num_points2D=20) _add_image(recon, 2, "img2.jpg", np.array([0, 0, 100]), num_points2D=20) # Points near image 1 (depths 1-10 from image 1) for i in range(20): depth = 1.0 + i * 0.5 recon.add_point3D( np.array([0.0, 0.0, depth]), pycolmap.Track([pycolmap.TrackElement(1, i)]), ) # Points near image 2 (depths 1-10 from image 2, so z ~ 90-99) for i in range(20): depth = 1.0 + i * 0.5 recon.add_point3D( np.array([0.0, 0.0, 100.0 + depth]), pycolmap.Track([pycolmap.TrackElement(2, i)]), ) ranges = _estimate_depth_ranges(recon) near1, far1 = ranges[1] near2, far2 = ranges[2] # Image 1 sees nearby points, image 2 sees distant points assert near1 < 15 assert near2 < 15 class TestSampleFrustumPoints: def test_identity_camera_shape(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) _add_image(recon, 1, "img.jpg", np.array([0, 0, 0])) verts = _sample_frustum_points(recon.images[1], cam, 1.0, 10.0) # num_steps=5 default: 5*5 grid at 5 depths = 125 points assert verts.shape == (125, 3) def test_custom_num_steps(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) _add_image(recon, 1, "img.jpg", np.array([0, 0, 0])) verts = _sample_frustum_points( recon.images[1], cam, 1.0, 10.0, num_steps=3 ) assert verts.shape == (27, 3) def test_vertices_depth_range(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) # Identity pose: camera at origin looking +z _add_image(recon, 1, "img.jpg", np.array([0, 0, 0])) near, far = 2.0, 20.0 verts = _sample_frustum_points(recon.images[1], cam, near, far) # In world coords, z should span [near, far] for identity pose np.testing.assert_almost_equal(verts[:, 2].min(), near) np.testing.assert_almost_equal(verts[:, 2].max(), far) def test_translated_camera(self): recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) offset = np.array([10.0, 20.0, 30.0]) _add_image(recon, 1, "img.jpg", offset) verts = _sample_frustum_points( recon.images[1], cam, 1.0, 10.0, num_steps=2 ) # Center of near plane should be at camera position + [0,0,near] center = verts.mean(axis=0) np.testing.assert_allclose(center[:2], offset[:2], atol=1e-10) assert center[2] > offset[2] class TestCheckFrustumCovisibility: def _build_two_camera_recon( self, pos1, pos2, rot1=None, rot2=None ) -> pycolmap.Reconstruction: recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) _add_image(recon, 1, "img1.jpg", np.array(pos1), rot1) _add_image(recon, 2, "img2.jpg", np.array(pos2), rot2) return recon def _check(self, recon, max_angle=90.0, near=1.0, far=100.0): cam = recon.cameras[1] imgs = [recon.images[1], recon.images[2]] frustums = { img.image_id: Frustum( points=_sample_frustum_points(img, cam, near, far), depth_range=(near, far), ) for img in imgs } return _is_pair_covisible_by_frustum( imgs[0], imgs[1], recon, frustums, max_angle ) def test_covisible_side_by_side(self): recon = self._build_two_camera_recon([-0.5, 0, -5], [0.5, 0, -5]) assert self._check(recon) def test_not_covisible_opposite_directions(self): rot_180_y = pycolmap.Rotation3d(np.array([0, 1, 0, 0])) recon = self._build_two_camera_recon( [0, 0, -5], [0, 0, 5], rot2=rot_180_y ) assert not self._check(recon) def test_rejected_by_viewing_angle(self): # 90 deg rotation around y-axis rot = pycolmap.Rotation3d( np.array([0, 1 / np.sqrt(2), 0, 1 / np.sqrt(2)]) ) recon = self._build_two_camera_recon([0, 0, -5], [5, 0, -5], rot2=rot) # Viewing angle is 90 deg, threshold is 45 -> should be rejected assert not self._check(recon, max_angle=45.0) def test_covisible_converging_cameras(self): # Two cameras angled inward looking at the same point # Camera 1 at (-2,0,0) looking at +x (toward origin) rot1 = pycolmap.Rotation3d( np.array([0, -1 / np.sqrt(2), 0, 1 / np.sqrt(2)]) ) # Camera 2 at (2,0,0) looking at -x (toward origin) rot2 = pycolmap.Rotation3d( np.array([0, 1 / np.sqrt(2), 0, 1 / np.sqrt(2)]) ) recon = self._build_two_camera_recon( [-5, 0, 0], [5, 0, 0], rot1=rot1, rot2=rot2 ) assert self._check(recon, max_angle=180.0) def test_not_covisible_far_apart_narrow_fov(self): # Two cameras far apart, both looking +z, with small frustum depth recon = self._build_two_camera_recon([0, 0, 0], [1000, 0, 0]) assert self._check(recon, near=1.0, far=2.0) is False def test_not_covisible_depth_out_of_range(self): # Two cameras side by side looking +z. Their frustums project into # each other's images, but the depth ranges don't overlap: camera 1 # expects depths 1-5 while camera 2 expects 50-100. Each camera's # frustum points land outside the other's depth range. recon = self._build_two_camera_recon([-0.5, 0, 0], [0.5, 0, 0]) cam = recon.cameras[1] img1, img2 = recon.images[1], recon.images[2] frustums = { img1.image_id: Frustum( points=_sample_frustum_points(img1, cam, 1.0, 5.0), depth_range=(1.0, 5.0), ), img2.image_id: Frustum( points=_sample_frustum_points(img2, cam, 50.0, 100.0), depth_range=(50.0, 100.0), ), } assert not _is_pair_covisible_by_frustum( img1, img2, recon, frustums, 90.0 ) # Sanity: with matching depth ranges, these cameras are covisible. assert self._check(recon, near=1.0, far=100.0) def test_covisible_identical_cameras(self): recon = self._build_two_camera_recon([0, 0, 0], [0, 0, 0]) assert self._check(recon) def _make_recon_with_tracks( num_images: int, num_points2D_per_image: int, tracks: list[list[tuple[int, int]]], ) -> pycolmap.Reconstruction: """Build a reconstruction with images and 3D point tracks. Args: num_images: Number of images to create. num_points2D_per_image: Number of 2D points per image. tracks: List of tracks, where each track is a list of (image_id, point2D_idx) tuples. """ recon = pycolmap.Reconstruction() cam = _make_camera() recon.add_camera_with_trivial_rig(cam) for i in range(1, num_images + 1): _add_image( recon, i, f"img{i}.jpg", np.array([i * 2.0, 0, 0]), num_points2D=num_points2D_per_image, ) for track in tracks: xyz = np.array([0.0, 0.0, 5.0]) elements = [pycolmap.TrackElement(img_id, idx) for img_id, idx in track] recon.add_point3D(xyz, pycolmap.Track(elements)) return recon class TestBuildImagePoint3DSets: def test_basic_tracks(self): # 2 images, 5 points2D each, 3 shared tracks recon = _make_recon_with_tracks( num_images=2, num_points2D_per_image=5, tracks=[ [(1, 0), (2, 0)], [(1, 1), (2, 1)], [(1, 2), (2, 2)], ], ) sets = _build_image_point3D_sets(recon) assert len(sets[1]) == 3 assert len(sets[2]) == 3 assert len(sets[1] & sets[2]) == 3 def test_no_shared_tracks(self): recon = _make_recon_with_tracks( num_images=2, num_points2D_per_image=5, tracks=[ [(1, 0)], [(1, 1)], [(2, 0)], [(2, 1)], ], ) sets = _build_image_point3D_sets(recon) assert len(sets[1] & sets[2]) == 0 def test_no_tracks(self): recon = _make_recon_with_tracks( num_images=2, num_points2D_per_image=5, tracks=[], ) sets = _build_image_point3D_sets(recon) assert len(sets[1]) == 0 assert len(sets[2]) == 0 def test_partial_overlap(self): # 3 images: img1-img2 share 5 points # img2-img3 share 2, img1-img3 share 0 recon = _make_recon_with_tracks( num_images=3, num_points2D_per_image=10, tracks=[ [(1, 0), (2, 0)], [(1, 1), (2, 1)], [(1, 2), (2, 2)], [(1, 3), (2, 3)], [(1, 4), (2, 4)], [(2, 5), (3, 0)], [(2, 6), (3, 1)], ], ) sets = _build_image_point3D_sets(recon) assert len(sets[1] & sets[2]) == 5 assert len(sets[2] & sets[3]) == 2 assert len(sets[1] & sets[3]) == 0 colmap-4.1.1/benchmark/reconstruction/evaluation/eth3d.py000066400000000000000000000072721522646662000235540ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. from .utils import Dataset, SceneInfo class DatasetETH3D(Dataset): @property def position_accuracy_gt(self): return 0.001 def list_scenes(self): scene_infos = [] for category_path in (self.data_path / "eth3d").iterdir(): if not category_path.is_dir() or ( self.categories and category_path.name not in self.categories ): continue category = category_path.name for scene_path in sorted(category_path.iterdir()): if not scene_path.is_dir(): continue scene = scene_path.name if self.scenes and scene not in self.scenes: continue workspace_path = ( self.run_path / self.run_name / "eth3d" / category / scene ) image_path = scene_path / "images" sparse_gt_path = list( scene_path.glob("*_calibration_undistorted") )[0] colmap_extra_args = [] if category == "dslr": colmap_extra_args.extend(["--data_type", "individual"]) elif category == "rig": colmap_extra_args.extend(["--data_type", "video"]) num_images = sum( 1 for p in image_path.rglob("*") if p.is_file() and p.suffix.lower() in {".jpg", ".jpeg", ".png"} ) scene_info = SceneInfo( dataset="eth3d", category=category, scene=scene, num_images=num_images, workspace_path=workspace_path, image_path=image_path, sparse_gt_path=sparse_gt_path, has_camera_priors=True, colmap_extra_args=colmap_extra_args, ) scene_infos.append(scene_info) return scene_infos def prepare_scene(self, scene_info): # Nothing to prepare for ETH3D. pass colmap-4.1.1/benchmark/reconstruction/evaluation/geometry.py000066400000000000000000000037611522646662000243770ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import numpy as np import numpy.typing as npt def normalize_vec( vec: npt.NDArray[np.floating], eps: float = 1e-10 ) -> npt.NDArray[np.floating]: return vec / max(eps, float(np.linalg.norm(vec))) def vec_angular_dist_deg( vec1: npt.NDArray[np.floating], vec2: npt.NDArray[np.floating] ) -> float: cos_dist = np.clip(np.dot(normalize_vec(vec1), normalize_vec(vec2)), -1, 1) return np.rad2deg(np.acos(cos_dist)) colmap-4.1.1/benchmark/reconstruction/evaluation/geometry_test.py000066400000000000000000000067531522646662000254420ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import numpy as np from .geometry import normalize_vec, vec_angular_dist_deg class TestNormalizeVec: def test_unit_vector(self): vec = np.array([1.0, 0.0, 0.0]) normalized = normalize_vec(vec) np.testing.assert_allclose(normalized, vec) np.testing.assert_almost_equal(np.linalg.norm(normalized), 1.0) def test_non_unit_vector(self): vec = np.array([3.0, 4.0, 0.0]) normalized = normalize_vec(vec) expected = np.array([0.6, 0.8, 0.0]) np.testing.assert_allclose(normalized, expected) np.testing.assert_almost_equal(np.linalg.norm(normalized), 1.0) def test_zero_vector(self): vec = np.array([0.0, 0.0, 0.0]) normalized = normalize_vec(vec) assert np.linalg.norm(normalized) < 1e-8 class TestVecAngularDistDeg: def test_identical_vectors(self): vec1 = np.array([1.0, 0.0, 0.0]) vec2 = np.array([1.0, 0.0, 0.0]) dist = vec_angular_dist_deg(vec1, vec2) np.testing.assert_almost_equal(dist, 0.0) def test_opposite_vectors(self): vec1 = np.array([1.0, 0.0, 0.0]) vec2 = np.array([-1.0, 0.0, 0.0]) dist = vec_angular_dist_deg(vec1, vec2) np.testing.assert_almost_equal(dist, 180.0) def test_perpendicular_vectors(self): vec1 = np.array([1.0, 0.0, 0.0]) vec2 = np.array([0.0, 1.0, 0.0]) dist = vec_angular_dist_deg(vec1, vec2) np.testing.assert_almost_equal(dist, 90.0) def test_45_degree_vectors(self): vec1 = np.array([1.0, 0.0, 0.0]) vec2 = np.array([1.0, 1.0, 0.0]) dist = vec_angular_dist_deg(vec1, vec2) np.testing.assert_almost_equal(dist, 45.0) def test_non_unit_vectors(self): vec1 = np.array([2.0, 0.0, 0.0]) vec2 = np.array([0.0, 3.0, 0.0]) dist = vec_angular_dist_deg(vec1, vec2) # Should normalize internally np.testing.assert_almost_equal(dist, 90.0) colmap-4.1.1/benchmark/reconstruction/evaluation/imc.py000066400000000000000000000212131522646662000233040ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import tempfile from pathlib import Path import numpy as np import pycolmap from .utils import Dataset, SceneInfo _POINTS3D_FILENAME = "points3D.txt" def _read_points3D_lenient( path: Path, valid_image_ids: set[int] ) -> dict[int, pycolmap.Point3D]: """Parse points3D.txt, dropping track elements whose image_id is not in valid_image_ids and skipping any point3D whose track becomes empty.""" points3D: dict[int, pycolmap.Point3D] = {} with open(path) as f: for line in f: line = line.strip() if not line or line.startswith("#"): continue tokens = line.split() point3D_id = int(tokens[0]) xyz = [float(v) for v in tokens[1:4]] rgb = [int(v) for v in tokens[4:7]] error = float(tokens[7]) elements = [] track_tokens = tokens[8:] for i in range(0, len(track_tokens), 2): image_id = int(track_tokens[i]) point2D_idx = int(track_tokens[i + 1]) if image_id in valid_image_ids: elements.append( pycolmap.TrackElement(image_id, point2D_idx) ) if not elements: continue point3D = pycolmap.Point3D() point3D.xyz = np.array(xyz) point3D.color = np.array(rgb, dtype=np.uint8) point3D.error = error point3D.track = pycolmap.Track(elements) points3D[point3D_id] = point3D return points3D def _read_sparse_sfm_without_points3D( sfm_path: Path, ) -> pycolmap.Reconstruction: """Read an SfM reconstruction's cameras/rigs/frames/images, skipping points3D entirely. Some IMC scenes ship with points3D.txt referencing image_ids absent from images.txt, which makes the strict pycolmap reader abort. Callers can parse points3D separately via _read_points3D_lenient if needed. """ with tempfile.TemporaryDirectory() as tmp: tmp_path = Path(tmp) for src_file in sfm_path.iterdir(): if src_file.name == _POINTS3D_FILENAME: continue (tmp_path / src_file.name).symlink_to(src_file.resolve()) (tmp_path / _POINTS3D_FILENAME).touch() return pycolmap.Reconstruction(tmp_path) class _DatasetIMC(Dataset): @property def position_accuracy_gt(self): return 0.02 def list_scenes(self): folder_name = f"imc{self.year}" scene_infos = [] for category_path in Path( self.data_path / f"{folder_name}/train" ).iterdir(): if not category_path.is_dir() or ( self.categories and category_path.name not in self.categories ): continue category = category_path.name for scene_path in category_path.iterdir(): if not scene_path.is_dir(): continue scene = scene_path.name if self.scenes and scene not in self.scenes: continue sfm_path = scene_path / "sfm" if not sfm_path.exists(): pycolmap.logging.warning( f"Skipping dataset=IMC{self.year}, " f"category={category}, scene={scene}, " "because the GT reconstruction is missing" ) continue workspace_path = ( self.run_path / self.run_name / folder_name / category / scene ) image_path = scene_path / "images" sparse_gt_path = scene_path / "sparse_gt" num_images = sum( 1 for p in image_path.iterdir() if p.is_file() and p.suffix.lower() in {".jpg", ".jpeg", ".png"} ) scene_info = SceneInfo( dataset=f"IMC{self.year}", category=category, scene=scene, num_images=num_images, workspace_path=workspace_path, image_path=image_path, sparse_gt_path=sparse_gt_path, has_camera_priors=False, colmap_extra_args=None, ) scene_infos.append(scene_info) return scene_infos def prepare_scene(self, scene_info): if scene_info.sparse_gt_path.exists(): return scene_path = scene_info.image_path.parent sfm_path = scene_path / "sfm" sparse_sfm = _read_sparse_sfm_without_points3D(sfm_path) sparse_gt = pycolmap.Reconstruction() train_image_ids = set() train_image_names = set( image.name for image in scene_info.image_path.iterdir() ) for image in sparse_sfm.images.values(): if image.name in train_image_names: train_image_ids.add(image.image_id) for camera in sparse_sfm.cameras.values(): sparse_gt.add_camera(camera) for rig in sparse_sfm.rigs.values(): sparse_gt.add_rig(rig) for frame in sparse_sfm.frames.values(): has_train_image = False for data_id in frame.image_ids: if data_id.id in train_image_ids: has_train_image = True break if has_train_image: frame.reset_rig_ptr() sparse_gt.add_frame(frame) for image in sparse_sfm.images.values(): if image.image_id not in train_image_ids: continue if image.camera_id not in sparse_gt.cameras: sparse_gt.add_camera(image.camera) image.reset_camera_ptr() image.reset_frame_ptr() sparse_gt.add_image(image) points3D = _read_points3D_lenient( sfm_path / _POINTS3D_FILENAME, train_image_ids ) for point3D_id, point3D in points3D.items(): sparse_gt.add_point3D_with_id(point3D_id, point3D) scene_info.sparse_gt_path.mkdir(exist_ok=True) sparse_gt.write(scene_info.sparse_gt_path) class DatasetIMC2023(_DatasetIMC): def __init__( self, data_path: Path, categories: list[str], scenes: list[Path], run_path: Path, run_name: str, ): super().__init__( data_path=data_path, categories=categories, scenes=scenes, run_path=run_path, run_name=run_name, ) self.year = 2023 class DatasetIMC2024(_DatasetIMC): def __init__( self, data_path: Path, categories: list[str], scenes: list[Path], run_path: Path, run_name: str, ): super().__init__( data_path=data_path, categories=categories, scenes=scenes, run_path=run_path, run_name=run_name, ) self.year = 2024 colmap-4.1.1/benchmark/reconstruction/evaluation/utils.py000066400000000000000000001325661522646662000237120ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import argparse import collections import copy import ctypes import dataclasses import datetime import functools import multiprocessing import platform import shutil import signal import subprocess import sys import threading from abc import ABC, abstractmethod from collections.abc import Callable, Iterable from pathlib import Path import numpy as np import numpy.typing as npt import pycolmap from .covisibility import filter_covisibility # noqa: F401 from .geometry import normalize_vec, vec_angular_dist_deg # noqa: F401 _PR_SET_PDEATHSIG = 1 _LIBC = ( ctypes.CDLL("libc.so.6", use_errno=True) if platform.system() == "Linux" else None ) def _set_pdeathsig() -> None: """preexec_fn: ensure child process is killed if parent dies.""" if _LIBC is not None: _LIBC.prctl(_PR_SET_PDEATHSIG, signal.SIGTERM) def _init_pool_worker() -> None: """Pool initializer: ignore SIGINT in workers so the main process handles KeyboardInterrupt and terminates the pool cleanly.""" signal.signal(signal.SIGINT, signal.SIG_IGN) def _run_with_log( cmd: list, log_path: Path, check: bool = True, **kwargs ) -> int: """Run a subprocess, redirecting stdout+stderr to log_path (overwrite). Always uses preexec_fn=_set_pdeathsig so children die with their parent. Raises CalledProcessError on non-zero exit when check=True. """ log_path.parent.mkdir(parents=True, exist_ok=True) with open(log_path, "wb") as fh: runner = subprocess.check_call if check else subprocess.call return runner( cmd, stdout=fh, stderr=subprocess.STDOUT, preexec_fn=_set_pdeathsig, **kwargs, ) @dataclasses.dataclass(kw_only=True) class SceneInfo: # Dataset name. dataset: str # Category name. category: str # Scene name. scene: str # Number of input images in the scene. num_images: int # Path to the workspace directory in the run directory. workspace_path: Path # Path to the input images. image_path: Path # Path to the ground-truth sparse reconstruction. sparse_gt_path: Path # Whether the dataset has camera priors. has_camera_priors: bool # Additional arguments for the COLMAP reconstruction command. colmap_extra_args: list[str] @dataclasses.dataclass(kw_only=True) class SceneResult: # Scene information for which the result was computed. scene_info: SceneInfo # Flat list of errors. errors: npt.NDArray[np.floating] # Number of images in the scene. num_images: int # Number of registered images in the scene (over all components). num_reg_images: int # Number of components in the scene. num_components: int # Number of images in the largest component. largest_component: int @dataclasses.dataclass(kw_only=True) class Metrics: # Recall at specified error thresholds. recalls: npt.NDArray[np.floating] # Area under the curve (AUC) scores at specified error thresholds. aucs: npt.NDArray[np.floating] error_thresholds: npt.NDArray[np.floating] error_type: str # Number of images in the scene. num_images: int # Number of registered images in the scene (over all components). num_reg_images: int # Number of components in the scene. num_components: int # Number of images in the largest component. largest_component: int # Raw errors that produced aucs/recalls. Empty for entries (like __avg__) # where no underlying error pool exists. Retained so higher-level summaries # (per-dataset, overall) can recompute pooled __all__ statistics. errors: npt.NDArray[np.floating] = dataclasses.field( default_factory=lambda: np.array([]) ) # Ground-truth position accuracy (used as min_error when computing AUC). # Carried so cross-dataset aggregations can pick a sensible value. position_accuracy_gt: float = 0.0 MetricsByScene = dict[str, Metrics] MetricsByCatByScene = dict[str, MetricsByScene] MetricsByDatasetByCatByScene = dict[str, MetricsByCatByScene] class Dataset(ABC): def __init__( self, data_path: Path, categories: list[str], scenes: list[Path], run_path: Path, run_name: str, ): self.data_path = data_path self.categories = categories self.scenes = scenes self.run_path = run_path self.run_name = run_name @property @abstractmethod def position_accuracy_gt(self) -> float: """Ground-truth position accuracy in meters.""" pass @abstractmethod def list_scenes(self) -> list[SceneInfo]: """List all scenes to evaluate.""" pass @abstractmethod def prepare_scene(self, scene_info: SceneInfo) -> None: """Prepare the scene for reconstruction.""" pass class _PhaseTracker: """Worker-side helper that publishes the current phase for a scene to a shared dict. No-op when status_dict is None.""" def __init__(self, status_dict=None, scene_key: str = "") -> None: self._dict = status_dict self._key = scene_key def set(self, phase: str) -> None: if self._dict is not None: self._dict[self._key] = phase def _scene_key(scene_info: SceneInfo) -> str: return f"{scene_info.dataset}/{scene_info.category}/{scene_info.scene}" def _run_progress_monitor( status_dict, total: int, stop_event: threading.Event ) -> None: """Render a live progress display of in-flight scenes until stop_event is set. Counts entries marked "done" toward overall completion; everything else is shown as an in-progress task with a spinner and elapsed time.""" from rich.console import Group from rich.live import Live from rich.progress import ( BarColumn, MofNCompleteColumn, Progress, SpinnerColumn, TextColumn, TimeElapsedColumn, ) overall = Progress( TextColumn("[bold]Scenes[/bold]"), BarColumn(), MofNCompleteColumn(), TimeElapsedColumn(), ) scenes = Progress( SpinnerColumn(), TextColumn("{task.description}"), TextColumn("[cyan]{task.fields[phase]:>14}[/cyan]"), TimeElapsedColumn(), ) overall_task = overall.add_task("scenes", total=total) scene_tasks: dict[str, int] = {} def refresh() -> None: snapshot = dict(status_dict) done = sum(1 for v in snapshot.values() if v == "finished") overall.update(overall_task, completed=done) in_progress = {k: v for k, v in snapshot.items() if v != "finished"} for key in list(scene_tasks): if key not in in_progress: scenes.remove_task(scene_tasks.pop(key)) for key, phase in in_progress.items(): if key in scene_tasks: scenes.update(scene_tasks[key], phase=phase) else: scene_tasks[key] = scenes.add_task(key, total=None, phase=phase) with Live(Group(overall, scenes), refresh_per_second=4): while not stop_event.is_set(): refresh() stop_event.wait(0.5) refresh() def filter_smallest_scenes_per_category( scene_infos: list[SceneInfo], num_scenes: int ) -> list[SceneInfo]: """Keep only the `num_scenes` smallest scenes (by num_images) per category, preserving the original order.""" indices_by_category: dict[str, list[int]] = collections.defaultdict(list) for i, scene_info in enumerate(scene_infos): indices_by_category[scene_info.category].append(i) keep: set[int] = set() for indices in indices_by_category.values(): smallest = sorted(indices, key=lambda i: scene_infos[i].num_images)[ :num_scenes ] keep.update(smallest) return [scene_infos[i] for i in sorted(keep)] def parse_args() -> argparse.Namespace: datetime_str = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") parser = argparse.ArgumentParser() parser.add_argument( "--data_path", default=Path(__file__).parent.parent / "data", type=Path ) parser.add_argument( "--datasets", nargs="+", default=["eth3d", "blended-mvs", "imc2023", "imc2024"], ) parser.add_argument( "--categories", nargs="+", default=[], help="Categories to evaluate, if empty all categories are evaluated.", ) parser.add_argument( "--scenes", nargs="+", default=[], help="Scenes to evaluate, if empty all scenes are evaluated.", ) parser.add_argument( "--progress", default=None, action=argparse.BooleanOptionalAction, help="Show a live progress display of in-flight scenes " "(default: enabled when stdout is a TTY).", ) parser.add_argument( "--fast", default=False, action="store_true", help="Fast mode: only evaluate the N smallest scenes per category, " "where N is set by --fast_num_scenes.", ) parser.add_argument( "--fast_num_scenes", type=int, default=1, help="Number of smallest scenes per category to evaluate in --fast " "mode.", ) parser.add_argument( "--run_path", default=Path(__file__).parent.parent / "runs", type=Path ) parser.add_argument("--run_name", default=datetime_str) parser.add_argument("--report_name", default=f"report-{datetime_str}") parser.add_argument( "--overwrite_database", default=False, action="store_true" ) parser.add_argument( "--overwrite_matches", default=False, action="store_true" ) parser.add_argument( "--overwrite_reconstruction", default=False, action="store_true" ) parser.add_argument( "--overwrite_alignment", default=False, action="store_true" ) parser.add_argument("--colmap_path", required=True) parser.add_argument("--use_gpu", default=True, action="store_true") parser.add_argument("--use_cpu", dest="use_gpu", action="store_false") parser.add_argument( "--num_threads", type=int, default=-1, help=( "Total number of threads to use across all parallel scenes. " "Defaults to 2x the number of logical CPU cores (-1)." ), ) parser.add_argument( "--num_parallel_scenes", type=int, default=-1, help=( "Number of scenes to reconstruct in parallel. " "Defaults to max(1, num_threads // 4) (-1)." ), ) parser.add_argument( "--gpu_index", type=str, default="-1", help="GPU indices to use for reconstruction. " "Use '-1' to auto-detect and use all available GPUs. " "Use comma-separated indices like '0,1,2' to specify exact GPUs.", ) parser.add_argument( "--feature", default="sift", choices=["sift", "aliked"], ) parser.add_argument( "--mapper", default="incremental", choices=["incremental", "hierarchical", "global"], ) parser.add_argument( "--quality", default="high", choices=["low", "medium", "high"] ) parser.add_argument( "--uncalibrated", default=False, action="store_true", help="Whether to evaluate the setting of uncalibrated input cameras, " "even if normal setting for the dataset contains calibrated inputs. " "This is useful for evaluating the performance of self-calibration.", ) parser.add_argument( "--filter_covisibility", default=True, action="store_true", help="Filter out non-covisible image pairs based on GT camera poses.", ) parser.add_argument( "--covisibility_frustum_near", type=float, default=None, help="Near plane for frustum co-visibility check. " "Auto-detected from GT points if not specified.", ) parser.add_argument( "--covisibility_frustum_far", type=float, default=None, help="Far plane for frustum co-visibility check. " "Auto-detected from GT points if not specified.", ) parser.add_argument( "--covisibility_max_viewing_angle", type=float, default=120.0, help="Maximum viewing angle in degrees for co-visibility check.", ) parser.add_argument( "--covisibility_min_shared_points", type=int, default=5, help="Minimum number of shared GT 3D points for two images to be " "considered covisible. If GT tracks are available and this is > 0, " "track-based covisibility is preferred over frustum-based checking.", ) parser.add_argument( "--error_type", default="relative_auc", choices=[ "relative_auc", "absolute_auc", "relative_recall", "absolute_recall", ], help="Whether to evaluate relative pairwise pose errors in angular " "distance or absolute pose errors through GT alignment.", ) parser.add_argument( "--rel_error_thresholds", type=float, nargs="+", default=[0.5, 1, 5, 10], help="Evaluation thresholds in degrees.", ) parser.add_argument( "--abs_error_thresholds", type=float, nargs="+", default=[0.02, 0.05, 0.2, 0.5], help="Evaluation thresholds in meters.", ) args = parser.parse_args() args.colmap_path = Path(args.colmap_path).resolve() if args.fast and args.fast_num_scenes <= 0: parser.error("--fast_num_scenes must be > 0 when --fast is set") if args.progress is None: args.progress = sys.stdout.isatty() if args.num_threads <= 0: args.num_threads = 2 * multiprocessing.cpu_count() if args.num_parallel_scenes <= 0: args.num_parallel_scenes = max(1, args.num_threads // 4) if args.overwrite_database: pycolmap.logging.info( "Overwriting database also overwrites reconstruction" ) args.overwrite_reconstruction = True if args.overwrite_matches: pycolmap.logging.info( "Overwriting matches also overwrites reconstruction" ) args.overwrite_reconstruction = True if args.overwrite_reconstruction: pycolmap.logging.info( "Overwriting reconstruction also overwrites alignment" ) args.overwrite_alignment = True return args def set_camera_priors( database_path: Path, camera_priors_sparse_gt: pycolmap.Reconstruction ) -> None: pycolmap.logging.info("Setting prior cameras from GT") with pycolmap.Database.open(str(database_path)) as database: images_gt_by_name = {} for image_gt in camera_priors_sparse_gt.images.values(): images_gt_by_name[image_gt.name] = image_gt updated_camera_ids = set() for image in database.read_all_images(): if image.name not in images_gt_by_name: pycolmap.logging.warning( f"Not setting prior camera for image {image.name}, " "because it does not exist in GT" ) continue image_gt = images_gt_by_name[image.name] if image.camera_id in updated_camera_ids: continue camera_gt = camera_priors_sparse_gt.cameras[image_gt.camera_id] camera_gt.camera_id = image.camera_id camera_gt.has_prior_focal_length = True database.update_camera(camera_gt) updated_camera_ids.add(image.camera_id) def colmap_reconstruction( args: argparse.Namespace, workspace_path: Path, image_path: Path, camera_priors_sparse_gt: pycolmap.Reconstruction | None = None, covisibility_sparse_gt: pycolmap.Reconstruction | None = None, colmap_extra_args: list | None = None, num_threads: int = 1, gpu_index: str = "-1", phase_tracker: _PhaseTracker | None = None, ) -> None: phase_tracker = phase_tracker or _PhaseTracker() workspace_path.mkdir(parents=True, exist_ok=True) database_path = workspace_path / "database.db" if args.overwrite_database and database_path.exists(): database_path.unlink() sparse_path = workspace_path / "sparse" if args.overwrite_reconstruction and sparse_path.exists(): shutil.rmtree(sparse_path) if sparse_path.exists(): pycolmap.logging.info("Skipping reconstruction, as it already exists") return if args.overwrite_matches: subprocess.check_call( [ args.colmap_path, "database_cleaner", "--database_path", database_path, "--type", "matches", ], cwd=workspace_path, preexec_fn=_set_pdeathsig, ) # TODO: Expose automatic reconstruction through pycolmap bindings instead # of using the command line interface. One blocker for this is that we # currently do not produce CUDA enabled pycolmap packages. colmap_args = [ args.colmap_path, "automatic_reconstructor", "--image_path", image_path, "--workspace_path", workspace_path, "--use_gpu", "1" if args.use_gpu else "0", "--gpu_index", gpu_index, "--num_threads", str(num_threads), "--feature", args.feature, "--mapper", args.mapper, "--quality", args.quality, ] phase_tracker.set("extraction") _run_with_log( colmap_args + (colmap_extra_args or []) + [ "--extraction", "1", "--matching", "0", "--sparse", "0", "--dense", "0", ], workspace_path / "extraction.log", cwd=workspace_path, ) if camera_priors_sparse_gt is not None: set_camera_priors(database_path, camera_priors_sparse_gt) phase_tracker.set("matching") _run_with_log( colmap_args + (colmap_extra_args or []) + [ "--extraction", "0", "--matching", "1", "--sparse", "0", "--dense", "0", ], workspace_path / "matching.log", cwd=workspace_path, ) if covisibility_sparse_gt is not None: filter_covisibility( database_path, covisibility_sparse_gt, args.covisibility_frustum_near, args.covisibility_frustum_far, args.covisibility_max_viewing_angle, args.covisibility_min_shared_points, ) # Decouple matching from sparse reconstruction, because matching will # initialize an OpenGL context and Mac on Apple silicon tends to assign GUI # applications to the low efficiency cores but we want to use the # performance cores. phase_tracker.set("reconstruction") _run_with_log( colmap_args + (colmap_extra_args or []) + [ "--extraction", "0", "--matching", "0", "--sparse", "1", "--dense", "0", ], workspace_path / "reconstruction.log", cwd=workspace_path, ) def colmap_alignment( args: argparse.Namespace, sparse_path: Path, sparse_gt_path: Path, sparse_aligned_path: Path, max_ref_model_error: float, ) -> None: if args.overwrite_alignment and sparse_aligned_path.exists(): shutil.rmtree(sparse_aligned_path) if sparse_aligned_path.exists(): pycolmap.logging.info("Skipping alignment, as it already exists") return if sparse_path.exists(): sparse_aligned_path.mkdir(parents=True, exist_ok=True) _run_with_log( [ args.colmap_path, "model_aligner", "--input_path", sparse_path, "--ref_model_path", sparse_gt_path, "--output_path", sparse_aligned_path, "--alignment_max_error", str(max_ref_model_error), ], sparse_aligned_path.parent / "alignment.log", check=False, ) def process_scene( args: argparse.Namespace, scene_info: SceneInfo, prepare_scene: Callable[[SceneInfo], None], position_accuracy_gt: float, num_threads: int, gpu_index: str = "-1", progress_status=None, ) -> SceneResult: pycolmap.logging.info( f"Processing dataset={scene_info.dataset}, " f"category={scene_info.category}, " f"scene={scene_info.scene}" ) tracker = _PhaseTracker(progress_status, _scene_key(scene_info)) tracker.set("setup") prepare_scene(scene_info) sparse_gt = pycolmap.Reconstruction(str(scene_info.sparse_gt_path)) colmap_reconstruction( args=args, workspace_path=scene_info.workspace_path, image_path=scene_info.image_path, camera_priors_sparse_gt=( sparse_gt if not args.uncalibrated and scene_info.has_camera_priors else None ), covisibility_sparse_gt=( sparse_gt if args.filter_covisibility else None ), num_threads=num_threads, colmap_extra_args=scene_info.colmap_extra_args, gpu_index=gpu_index, phase_tracker=tracker, ) tracker.set("evaluation") # Merge all sub-models into a single reconstruction. Each sub-model will be # "randomly" aligned to the other sub-models. We then compute the overall # error over the merged reconstruction. With this simple appraoch, there is # a small chance that the randomly aligned images in one sub-model are # correctly aligned with other sub-models and the error is therefore # underestimated. However, this is very unlikely to happen. sparse_merged = pycolmap.Reconstruction() num_components = 0 largest_component = 0 for sparse_path in (scene_info.workspace_path / "sparse").iterdir(): if not sparse_path.is_dir(): continue num_components += 1 sparse = None if args.error_type.startswith("relative"): sparse = pycolmap.Reconstruction(str(sparse_path)) elif args.error_type.startswith("absolute"): sparse_aligned_path = scene_info.workspace_path / "sparse_aligned" colmap_alignment( args=args, sparse_path=sparse_path, sparse_gt_path=scene_info.sparse_gt_path, sparse_aligned_path=sparse_aligned_path, max_ref_model_error=position_accuracy_gt, ) if (sparse_aligned_path / "images.bin").exists(): sparse = pycolmap.Reconstruction(str(sparse_aligned_path)) else: raise ValueError(f"Invalid error type: {args.error_type}") if sparse is not None: largest_component = max(largest_component, sparse.num_images()) for image in sparse.images.values(): if image.image_id in sparse_merged.images: continue if image.camera_id not in sparse_merged.cameras: sparse_merged.add_camera(image.camera) if image.frame_id not in sparse_merged.frames: if image.frame.rig_id not in sparse_merged.rigs: sparse_merged.add_rig(image.frame.rig) image.frame.reset_rig_ptr() sparse_merged.add_frame(image.frame) image.reset_camera_ptr() image.reset_frame_ptr() sparse_merged.add_image(image) if args.error_type.startswith("relative"): dts, dRs = compute_rel_errors( sparse_gt=sparse_gt, sparse=sparse_merged, min_proj_center_dist=position_accuracy_gt, ) errors = np.maximum(dts, dRs) elif args.error_type.startswith("absolute"): dts, dRs = compute_abs_errors( sparse_gt=sparse_gt, sparse=sparse_merged, ) errors = dts else: raise ValueError(f"Invalid error type: {args.error_type}") tracker.set("finished") return SceneResult( scene_info=scene_info, errors=errors, num_images=sparse_gt.num_images(), num_reg_images=sparse_merged.num_images(), num_components=num_components, largest_component=largest_component, ) def _parse_gpu_index(args: argparse.Namespace) -> list[int]: if args.gpu_index == "-1": if not pycolmap.has_cuda: return [-1] num_devices = pycolmap.get_num_cuda_devices() # type: ignore[attr-defined] if num_devices <= 0: return [-1] return list(range(num_devices)) indices = [int(idx) for idx in args.gpu_index.split(",") if idx.strip()] return indices if indices else [-1] def _process_scene_with_gpu( scene_info_and_gpu: tuple[SceneInfo, str], args: argparse.Namespace, prepare_scene: Callable[[SceneInfo], None], position_accuracy_gt: float, num_threads: int, progress_status=None, ) -> SceneResult: scene_info, gpu_index = scene_info_and_gpu return process_scene( args=args, scene_info=scene_info, prepare_scene=prepare_scene, position_accuracy_gt=position_accuracy_gt, num_threads=num_threads, gpu_index=gpu_index, progress_status=progress_status, ) def process_scenes( args: argparse.Namespace, scene_infos: list[SceneInfo], prepare_scene: Callable[[SceneInfo], None], position_accuracy_gt: float, ) -> MetricsByCatByScene: error_thresholds = get_error_thresholds(args) gpu_index = _parse_gpu_index(args) scene_gpu_pairs = [ (scene_info, str(gpu_index[i % len(gpu_index)])) for i, scene_info in enumerate(scene_infos) ] num_parallel_scenes = min(args.num_parallel_scenes, len(scene_infos)) num_threads_per_scene = max(1, args.num_threads // num_parallel_scenes) manager = None progress_status = None monitor_thread = None stop_event = threading.Event() if args.progress: manager = multiprocessing.Manager() progress_status = manager.dict() monitor_thread = threading.Thread( target=_run_progress_monitor, args=(progress_status, len(scene_infos), stop_event), daemon=True, ) monitor_thread.start() try: p = multiprocessing.Pool( processes=num_parallel_scenes, initializer=_init_pool_worker ) try: results = list( p.imap_unordered( functools.partial( _process_scene_with_gpu, args=args, prepare_scene=prepare_scene, position_accuracy_gt=position_accuracy_gt, num_threads=num_threads_per_scene, progress_status=progress_status, ), scene_gpu_pairs, chunksize=1, ) ) except KeyboardInterrupt: pycolmap.logging.warning( "Interrupted, terminating workers and child processes..." ) p.terminate() raise except BaseException: p.terminate() raise else: p.close() finally: p.join() finally: stop_event.set() if monitor_thread is not None: monitor_thread.join() if manager is not None: manager.shutdown() metrics: MetricsByCatByScene = collections.defaultdict(dict) for result in results: metrics[result.scene_info.category][result.scene_info.scene] = Metrics( aucs=compute_auc( result.errors, error_thresholds, min_error=position_accuracy_gt, ), recalls=compute_recall(result.errors, error_thresholds), error_thresholds=error_thresholds, error_type=args.error_type, num_images=result.num_images, num_reg_images=result.num_reg_images, num_components=result.num_components, largest_component=result.largest_component, errors=np.asarray(result.errors), position_accuracy_gt=position_accuracy_gt, ) for category in metrics: metrics[category].update( aggregate_scene_metrics( metrics[category].items(), error_thresholds=error_thresholds, error_type=args.error_type, ) ) return metrics def aggregate_scene_metrics( scene_metrics: Iterable[tuple[str, Metrics]], error_thresholds: npt.NDArray[np.floating], error_type: str, ) -> dict[str, Metrics]: """Compute __avg__ (mean of per-scene metrics) and __all__ (recomputed from the pool of raw errors) summary entries from per-scene Metrics. Skips entries whose key starts and ends with "__" so this can be applied iteratively at higher levels (category -> dataset -> overall) without double-counting previously-emitted summaries. """ real = [ m for k, m in scene_metrics if not (k.startswith("__") and k.endswith("__")) ] if not real: return {} n = len(real) sum_num_images = sum(m.num_images for m in real) sum_num_reg_images = sum(m.num_reg_images for m in real) sum_num_components = sum(m.num_components for m in real) sum_largest_component = sum(m.largest_component for m in real) min_pos_acc = min(m.position_accuracy_gt for m in real) pooled_errors = np.concatenate([m.errors for m in real]) summary = { "__avg__": Metrics( aucs=np.mean([m.aucs for m in real], axis=0), recalls=np.mean([m.recalls for m in real], axis=0), error_thresholds=error_thresholds, error_type=error_type, num_images=int(round(sum_num_images / n)), num_reg_images=int(round(sum_num_reg_images / n)), num_components=int(round(sum_num_components / n)), largest_component=int(round(sum_largest_component / n)), position_accuracy_gt=min_pos_acc, ), } if pooled_errors.size: summary["__all__"] = Metrics( aucs=compute_auc( pooled_errors, error_thresholds, min_error=min_pos_acc ), recalls=compute_recall(pooled_errors, error_thresholds), error_thresholds=error_thresholds, error_type=error_type, num_images=sum_num_images, num_reg_images=sum_num_reg_images, num_components=sum_num_components, largest_component=sum_largest_component, errors=pooled_errors, position_accuracy_gt=min_pos_acc, ) return summary def get_error_thresholds(args: argparse.Namespace) -> npt.NDArray[np.floating]: if args.error_type.startswith("relative"): return np.array(args.rel_error_thresholds) elif args.error_type.startswith("absolute"): return np.array(args.abs_error_thresholds) else: raise ValueError(f"Invalid error type: {args.error_type}") def get_scores(error_type: str, metrics: Metrics) -> npt.NDArray[np.floating]: if error_type.endswith("auc"): return metrics.aucs elif error_type.endswith("recall"): return metrics.recalls else: raise ValueError(f"Invalid error type: {error_type}") def compute_rel_errors( sparse_gt: pycolmap.Reconstruction, sparse: pycolmap.Reconstruction, min_proj_center_dist: float, ) -> tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]]: """Computes angular relative pose errors across all image pairs. Notice that this approach leads to a super-linear decrease in the AUC scores when multiple images fail to register. Consider that we have N images in total in a dataset and M images are registered in the evaluated reconstruction. In this case, we can compute "finite" errors for (N-M)^2 pairs while the dataset has a total of N^2 pairs. In case of many unregistered images, the AUC score will drop much more than the (intuitively) expected (N-M) / N ratio. One could appropriately normalize by computing a single score per image through a suitable normalization of all pairwise errors per image. However, this becomes difficult when multiple sub-components are incorrectly stitched together in the same reconstruction (e.g., in the case of symmetry issues). """ if sparse is None: pycolmap.logging.error("Reconstruction failed") return len(sparse_gt.images) * [np.inf], len(sparse_gt.images) * [180] images = {} for image in sparse.images.values(): images[image.name] = image dts = [] dRs = [] for this_image_gt in sparse_gt.images.values(): if this_image_gt.name not in images: for _ in range(sparse_gt.num_images() - 1): dts.append(np.inf) dRs.append(180) continue this_image = images[this_image_gt.name] for other_image_gt in sparse_gt.images.values(): if this_image_gt.image_id == other_image_gt.image_id: continue if other_image_gt.name not in images: dts.append(np.inf) dRs.append(180) continue other_image = images[other_image_gt.name] other_from_this = ( other_image.cam_from_world() * this_image.cam_from_world().inverse() ) other_from_this_gt = ( other_image_gt.cam_from_world() * this_image_gt.cam_from_world().inverse() ) estimated_from_gt = other_from_this.inverse() * other_from_this_gt if ( np.linalg.norm(other_from_this_gt.translation) < min_proj_center_dist ): # If the cameras almost coincide, then the angular direction # distance is unstable, because a small position change can # cause a large rotational error. In this case, we only measure # rotational relative pose error. dt = 0.0 else: dt = vec_angular_dist_deg( other_from_this.translation, other_from_this_gt.translation ) dR = np.rad2deg(estimated_from_gt.rotation.angle()) dts.append(dt) dRs.append(dR) return np.array(dts), np.array(dRs) def compute_abs_errors( sparse_gt: pycolmap.Reconstruction, sparse: pycolmap.Reconstruction ) -> tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]]: """Computes rotational and translational absolute pose errors. Assumes that the input reconstructions are aligned in the same coordinate system. Computes one error per ground-truth image. """ dts = np.full(len(sparse_gt.images), fill_value=np.inf, dtype=np.float64) dRs = np.full(len(sparse_gt.images), fill_value=180, dtype=np.float64) if sparse is None: pycolmap.logging.error("Reconstruction or alignment failed") return dts, dRs images = {} for image in sparse.images.values(): images[image.name] = image dts = np.full(len(sparse_gt.images), fill_value=np.inf, dtype=np.float64) dRs = np.full(len(sparse_gt.images), fill_value=180, dtype=np.float64) for i, image_gt in enumerate(sparse_gt.images.values()): if image_gt.name not in images: continue image = images[image_gt.name] estimated_from_gt = ( image.cam_from_world() * image_gt.cam_from_world().inverse() ) dts[i] = np.linalg.norm(estimated_from_gt.translation) dRs[i] = np.rad2deg(estimated_from_gt.rotation.angle()) return dts, dRs def compute_auc( errors: npt.NDArray[np.floating], thresholds: npt.NDArray[np.floating], min_error: float = 0, ) -> npt.NDArray[np.floating]: num_elems = len(errors) if len(errors) == 0: raise ValueError("No errors to evaluate") errors = np.sort(errors) recalls = (np.arange(num_elems) + 1) / num_elems if min_error > 0: min_index = np.searchsorted(errors, min_error, side="right") min_recall = min_index / num_elems recalls = np.r_[min_recall, min_recall, recalls[min_index:]] errors = np.r_[0, min_error, errors[min_index:]] else: recalls = np.r_[0, recalls] errors = np.r_[0, errors] aucs = np.zeros(len(thresholds), dtype=np.float64) for i, t in enumerate(thresholds): last_index = np.searchsorted(errors, t, side="right") r = np.r_[recalls[:last_index], recalls[last_index - 1]] e = np.r_[errors[:last_index], t] auc = np.trapezoid(r, x=e) / t aucs[i] = auc * 100 return aucs def compute_recall( errors: npt.NDArray[np.floating], thresholds: npt.NDArray[np.floating], min_error: float = 0, ) -> npt.NDArray[np.floating]: num_elems = len(errors) if num_elems == 0: raise ValueError("No errors to evaluate") recalls = np.zeros(len(thresholds), dtype=np.float64) for i, t in enumerate(thresholds): recalls[i] = 100 * np.sum(errors <= t) / num_elems return recalls def compute_avg_metrics( scene_metrics: MetricsByScene, ) -> tuple[npt.NDArray[np.floating], npt.NDArray[np.floating]]: auc_sum = None recall_sum = None num_scenes = 0 for scene, metrics in scene_metrics.items(): if scene.startswith("__") and scene.endswith("__"): continue num_scenes += 1 if auc_sum is None: auc_sum = copy.copy(metrics.aucs) if recall_sum is None: recall_sum = copy.copy(metrics.recalls) else: for i in range(len(auc_sum)): auc_sum[i] += metrics.aucs[i] for i in range(len(recall_sum)): recall_sum[i] += metrics.recalls[i] return np.array(auc_sum) / num_scenes, np.array(recall_sum) / num_scenes def diff_metrics( metrics_a: MetricsByDatasetByCatByScene, metrics_b: MetricsByDatasetByCatByScene, ): """Computes difference between two sets of metrics. Raises exception if the metrics are inconsistent. """ metrics_diff = copy.deepcopy(metrics_a) for dataset, category_metrics_a in metrics_a.items(): if dataset not in metrics_b: raise ValueError(f"Dataset {dataset} not found in metrics_b") category_metrics_b = metrics_b[dataset] for category, scene_metrics_a in category_metrics_a.items(): if category not in category_metrics_b: raise ValueError(f"Category {category} not found in metrics_b") scene_metrics_b = category_metrics_b[category] for scene, metrics_a_item in scene_metrics_a.items(): if scene not in scene_metrics_b: raise ValueError(f"Scene {scene} not found in metrics_b") metrics_b_item = scene_metrics_b[scene] if ( metrics_a_item.error_type != metrics_b_item.error_type or not np.all( metrics_a_item.error_thresholds == metrics_b_item.error_thresholds ) ): raise ValueError("Inconsistent error thresholds or types") metrics_diff[dataset][category][scene] = Metrics( aucs=metrics_a_item.aucs - metrics_b_item.aucs, recalls=metrics_a_item.recalls - metrics_b_item.recalls, error_thresholds=metrics_a_item.error_thresholds, error_type=metrics_a_item.error_type, num_images=metrics_a_item.num_images - metrics_b_item.num_images, num_reg_images=metrics_a_item.num_reg_images - metrics_b_item.num_reg_images, num_components=metrics_a_item.num_components - metrics_b_item.num_components, largest_component=metrics_a_item.largest_component - metrics_b_item.largest_component, ) return metrics_diff def create_result_table( dataset_metrics: MetricsByDatasetByCatByScene, ) -> str: first_metrics = next( iter(next(iter(next(iter(dataset_metrics.values())).values())).values()) ) is_auc = first_metrics.error_type.endswith("auc") is_relative = first_metrics.error_type.startswith("relative") score_type = "AUC" if is_auc else "Recall" score_unit = "deg" if is_relative else "cm" label = f"{score_type} @ X {score_unit} (%)" if is_relative: thresholds = first_metrics.error_thresholds else: thresholds = 100 * first_metrics.error_thresholds # cm column = "scenes" size_scenes = max( len(column) + 2, max( len(s) for d in dataset_metrics.values() for c in d.values() for s in c ), ) size_aucs = max(len(label) + 2, len(thresholds) * 7 - 1) size_imgs = 12 size_comps = 12 size_sep = size_scenes + size_aucs + size_imgs + size_comps + 3 header = ( f"{column:=^{size_scenes}} {label:=^{size_aucs}} " f"{'images':=^{size_imgs}} {'components':=^{size_comps}}" ) header += "\n" + " " * (size_scenes + 1) header += " ".join(f"{str(t).rstrip('.'):^6}" for t in thresholds) header += " reg all num largest" text = [header] def render_block( header_text: str, scene_metrics: MetricsByScene, header_fill: str = "=", ) -> None: text.append(f"\n{header_text:{header_fill}^{size_sep}}") any_scene_row = False summary_separator_drawn = False for scene, metrics in sorted( scene_metrics.items(), key=lambda x: ( x[0].startswith("__"), x[0], ), ): scores = get_scores(first_metrics.error_type, metrics) assert len(scores) == len(thresholds) row = "" is_summary = scene.startswith("__") and scene.endswith("__") if is_summary and any_scene_row and not summary_separator_drawn: row += "-" * size_sep + "\n" summary_separator_drawn = True if not is_summary: any_scene_row = True if scene == "__avg__": scene = "average" if scene == "__all__": scene = "overall" row += f"{scene:<{size_scenes}} " row += " ".join(f"{score:>6.2f}" for score in scores) row += f" {metrics.num_reg_images:6d}" row += f"{metrics.num_images:6d}" row += f" {metrics.num_components:4d}" row += f"{metrics.largest_component:8d}" text.append(row) overall_scene_metrics: list[tuple[str, Metrics]] = [] for dataset, category_metrics in dataset_metrics.items(): dataset_scene_metrics: list[tuple[str, Metrics]] = [] for category, scene_metrics in category_metrics.items(): render_block(f"{dataset}={category}", scene_metrics) dataset_scene_metrics.extend(scene_metrics.items()) if len(category_metrics) > 1: render_block( dataset, aggregate_scene_metrics( dataset_scene_metrics, error_thresholds=first_metrics.error_thresholds, error_type=first_metrics.error_type, ), header_fill="#", ) overall_scene_metrics.extend(dataset_scene_metrics) if len(dataset_metrics) > 1: render_block( "overall", aggregate_scene_metrics( overall_scene_metrics, error_thresholds=first_metrics.error_thresholds, error_type=first_metrics.error_type, ), header_fill="#", ) return "\n".join(text) colmap-4.1.1/benchmark/reconstruction/evaluation/utils_test.py000066400000000000000000000543711522646662000247460ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import argparse from pathlib import Path import numpy as np import pytest import pycolmap from .utils import ( Metrics, SceneInfo, _parse_gpu_index, aggregate_scene_metrics, compute_abs_errors, compute_auc, compute_avg_metrics, compute_recall, compute_rel_errors, diff_metrics, filter_smallest_scenes_per_category, get_scores, ) def _make_scene_info(category: str, scene: str, num_images: int) -> SceneInfo: return SceneInfo( dataset="dummy", category=category, scene=scene, num_images=num_images, workspace_path=Path("/tmp/workspace"), image_path=Path("/tmp/images"), sparse_gt_path=Path("/tmp/sparse_gt"), has_camera_priors=False, colmap_extra_args=[], ) class TestFilterSmallestScenesPerCategory: def test_picks_smallest_per_category(self): scenes = [ _make_scene_info("a", "a3", 30), _make_scene_info("a", "a1", 10), _make_scene_info("a", "a2", 20), _make_scene_info("b", "b2", 5), _make_scene_info("b", "b1", 1), ] result = filter_smallest_scenes_per_category(scenes, num_scenes=2) names = [(s.category, s.scene) for s in result] assert names == [("a", "a1"), ("a", "a2"), ("b", "b2"), ("b", "b1")] def test_preserves_input_order(self): scenes = [ _make_scene_info("a", "a3", 30), _make_scene_info("a", "a1", 10), _make_scene_info("a", "a2", 20), ] result = filter_smallest_scenes_per_category(scenes, num_scenes=2) # Smallest are a1 and a2, but the original order (a3, a1, a2) must # be preserved among the kept scenes. assert [s.scene for s in result] == ["a1", "a2"] def test_num_scenes_larger_than_category_size(self): scenes = [ _make_scene_info("a", "a1", 10), _make_scene_info("a", "a2", 20), _make_scene_info("b", "b1", 5), ] result = filter_smallest_scenes_per_category(scenes, num_scenes=10) # All scenes are kept since each category has fewer than num_scenes. assert [s.scene for s in result] == ["a1", "a2", "b1"] def test_num_scenes_one(self): scenes = [ _make_scene_info("a", "a1", 10), _make_scene_info("a", "a2", 5), _make_scene_info("b", "b1", 100), _make_scene_info("b", "b2", 50), ] result = filter_smallest_scenes_per_category(scenes, num_scenes=1) assert sorted((s.category, s.scene) for s in result) == [ ("a", "a2"), ("b", "b2"), ] def test_empty_input(self): assert filter_smallest_scenes_per_category([], num_scenes=3) == [] def test_ties_broken_stably(self): # When several scenes share the same num_images, sorting must be # stable so we keep the ones that appeared first in the input. scenes = [ _make_scene_info("a", "a1", 10), _make_scene_info("a", "a2", 10), _make_scene_info("a", "a3", 10), ] result = filter_smallest_scenes_per_category(scenes, num_scenes=2) assert [s.scene for s in result] == ["a1", "a2"] class TestParseGpuIndex: @staticmethod def _make_args(gpu_index: str) -> argparse.Namespace: return argparse.Namespace(gpu_index=gpu_index) def test_single_gpu(self): assert _parse_gpu_index(self._make_args("0")) == [0] def test_multiple_gpus(self): assert _parse_gpu_index(self._make_args("0,1,2")) == [0, 1, 2] def test_trailing_comma(self): assert _parse_gpu_index(self._make_args("1,")) == [1] def test_empty_string(self): assert _parse_gpu_index(self._make_args("")) == [-1] def test_only_commas(self): assert _parse_gpu_index(self._make_args(",")) == [-1] def test_auto_detect(self, monkeypatch): monkeypatch.setattr(pycolmap, "has_cuda", True) monkeypatch.setattr( pycolmap, "get_num_cuda_devices", lambda: 3, raising=False ) assert _parse_gpu_index(self._make_args("-1")) == [0, 1, 2] def test_auto_detect_no_devices(self, monkeypatch): monkeypatch.setattr(pycolmap, "has_cuda", True) monkeypatch.setattr( pycolmap, "get_num_cuda_devices", lambda: 0, raising=False ) assert _parse_gpu_index(self._make_args("-1")) == [-1] class TestComputeAuc: def test_simple_uniform_errors(self): errors = np.array([0.1, 0.2, 0.3, 0.4, 0.5]) thresholds = np.array([0.25, 0.5, 1.0]) aucs = compute_auc(errors, thresholds) np.testing.assert_almost_equal(aucs[0], 24.0, decimal=5) np.testing.assert_almost_equal(aucs[1], 50.0, decimal=5) np.testing.assert_almost_equal(aucs[2], 75.0, decimal=5) def test_all_errors_zero(self): errors = np.array([0.0, 0.0, 0.0]) thresholds = np.array([0.5, 1.0]) aucs = compute_auc(errors, thresholds) np.testing.assert_array_almost_equal(aucs, [100.0, 100.0]) def test_empty_errors(self): errors = np.array([]) thresholds = np.array([0.5, 1.0]) with pytest.raises(ValueError, match="No errors to evaluate"): compute_auc(errors, thresholds) def test_all_errors_above_threshold(self): errors = np.array([10.0, 20.0, 30.0]) thresholds = np.array([5.0]) aucs = compute_auc(errors, thresholds) np.testing.assert_almost_equal(aucs[0], 0.0) def test_all_errors_below_threshold(self): errors = np.array([0.1, 0.2, 0.3]) thresholds = np.array([1.0]) aucs = compute_auc(errors, thresholds) np.testing.assert_almost_equal(aucs[0], 85.0, decimal=5) def test_inf_errors(self): errors = np.array([0.1, 0.2, np.inf, np.inf]) thresholds = np.array([0.5, 1.0]) aucs = compute_auc(errors, thresholds) assert np.all(aucs >= 0) assert np.all(aucs <= 100) def test_single_error(self): errors = np.array([0.5]) thresholds = np.array([0.3, 1.0]) aucs = compute_auc(errors, thresholds) assert len(aucs) == 2 np.testing.assert_almost_equal(aucs[0], 0.0) np.testing.assert_almost_equal(aucs[1], 75.0) class TestComputeRecall: def test_basic_recall(self): errors = np.array([0.1, 0.2, 0.3, 0.4, 0.5]) thresholds = np.array([0.05, 0.25, 0.5, 1.0]) recalls = compute_recall(errors, thresholds) assert len(recalls) == 4 assert recalls[3] >= recalls[2] >= recalls[1] >= recalls[0] assert np.all(recalls >= 0) assert np.all(recalls <= 100) def test_empty_errors(self): errors = np.array([]) thresholds = np.array([0.5, 1.0]) with pytest.raises(ValueError, match="No errors to evaluate"): compute_recall(errors, thresholds) def test_all_errors_above_threshold(self): errors = np.array([10.0, 20.0, 30.0]) thresholds = np.array([5.0]) recalls = compute_recall(errors, thresholds) np.testing.assert_almost_equal(recalls[0], 0.0) def test_all_errors_below_threshold(self): errors = np.array([0.1, 0.2, 0.3]) thresholds = np.array([1.0]) recalls = compute_recall(errors, thresholds) np.testing.assert_almost_equal(recalls[0], 100.0) def test_exact_threshold(self): errors = np.array([0.1, 0.5, 0.9]) thresholds = np.array([0.5]) recalls = compute_recall(errors, thresholds) np.testing.assert_almost_equal(recalls[0], 200.0 / 3.0) def test_multiple_thresholds(self): errors = np.array([1.0, 2.0, 3.0, 4.0, 5.0]) thresholds = np.array([2.0, 3.0, 4.0]) recalls = compute_recall(errors, thresholds) np.testing.assert_almost_equal(recalls[0], 40.0) np.testing.assert_almost_equal(recalls[1], 60.0) np.testing.assert_almost_equal(recalls[2], 80.0) class TestComputeAvgMetrics: def test_single_scene(self): scene_metrics = { "scene1": Metrics( aucs=np.array([10.0, 20.0, 30.0]), recalls=np.array([15.0, 25.0, 35.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ) } aucs, recalls = compute_avg_metrics(scene_metrics) np.testing.assert_array_equal(aucs, [10.0, 20.0, 30.0]) np.testing.assert_array_equal(recalls, [15.0, 25.0, 35.0]) def test_multiple_scenes(self): scene_metrics = { "scene1": Metrics( aucs=np.array([10.0, 20.0, 30.0]), recalls=np.array([15.0, 25.0, 35.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ), "scene2": Metrics( aucs=np.array([20.0, 30.0, 40.0]), recalls=np.array([25.0, 35.0, 45.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ), } aucs, recalls = compute_avg_metrics(scene_metrics) np.testing.assert_array_equal(aucs, [15.0, 25.0, 35.0]) np.testing.assert_array_equal(recalls, [20.0, 30.0, 40.0]) def test_skip_special_scenes(self): scene_metrics = { "scene1": Metrics( aucs=np.array([10.0, 20.0, 30.0]), recalls=np.array([15.0, 25.0, 35.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ), "__avg__": Metrics( aucs=np.array([50.0, 60.0, 70.0]), recalls=np.array([55.0, 65.0, 75.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ), "__all__": Metrics( aucs=np.array([80.0, 90.0, 100.0]), recalls=np.array([85.0, 95.0, 105.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ), } aucs, recalls = compute_avg_metrics(scene_metrics) # Should only average scene1, not __avg__ or __all__ np.testing.assert_array_equal(aucs, [10.0, 20.0, 30.0]) np.testing.assert_array_equal(recalls, [15.0, 25.0, 35.0]) class TestAggregateSceneMetrics: @staticmethod def _make_metrics(aucs, recalls, errors, num_images=100, num_reg_images=90): return Metrics( aucs=np.array(aucs, dtype=float), recalls=np.array(recalls, dtype=float), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=num_images, num_reg_images=num_reg_images, num_components=1, largest_component=num_reg_images, errors=np.array(errors, dtype=float), position_accuracy_gt=0.01, ) def test_avg_and_all(self): scene_metrics = [ ( "scene1", self._make_metrics([10, 20, 30], [15, 25, 35], [0.1, 0.5]), ), ( "scene2", self._make_metrics([20, 30, 40], [25, 35, 45], [0.2, 1.5]), ), ] summary = aggregate_scene_metrics( scene_metrics, error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", ) np.testing.assert_array_equal( summary["__avg__"].aucs, [15.0, 25.0, 35.0] ) np.testing.assert_array_equal( summary["__avg__"].recalls, [20.0, 30.0, 40.0] ) assert summary["__avg__"].num_images == 100 assert summary["__avg__"].num_reg_images == 90 np.testing.assert_array_equal( summary["__all__"].errors, [0.1, 0.5, 0.2, 1.5] ) # __all__ aggregates totals (not means). assert summary["__all__"].num_images == 200 assert summary["__all__"].num_reg_images == 180 def test_skips_special_entries(self): real = self._make_metrics([10, 20, 30], [15, 25, 35], [0.1]) special = self._make_metrics( [99, 99, 99], [99, 99, 99], [9.0], num_images=999 ) summary = aggregate_scene_metrics( [("scene1", real), ("__avg__", special), ("__all__", special)], error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", ) np.testing.assert_array_equal(summary["__avg__"].aucs, real.aucs) np.testing.assert_array_equal(summary["__all__"].errors, [0.1]) def test_empty_input(self): assert ( aggregate_scene_metrics( [], error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", ) == {} ) def test_no_errors_omits_all(self): # When no scene carries raw errors (e.g. metrics restored without # the errors field), __all__ cannot be reconstructed. scene_metrics = [ ("scene1", self._make_metrics([10, 20, 30], [15, 25, 35], [])), ("scene2", self._make_metrics([20, 30, 40], [25, 35, 45], [])), ] summary = aggregate_scene_metrics( scene_metrics, error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", ) assert "__all__" not in summary assert "__avg__" in summary class TestGetScores: def test_get_auc_scores(self): metrics = Metrics( aucs=np.array([10.0, 20.0, 30.0]), recalls=np.array([15.0, 25.0, 35.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ) scores = get_scores("relative_auc", metrics) np.testing.assert_array_equal(scores, metrics.aucs) def test_get_recall_scores(self): metrics = Metrics( aucs=np.array([10.0, 20.0, 30.0]), recalls=np.array([15.0, 25.0, 35.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_recall", num_images=100, num_reg_images=90, num_components=1, largest_component=90, ) scores = get_scores("relative_recall", metrics) np.testing.assert_array_equal(scores, metrics.recalls) class TestDiffMetrics: def test_nominal(self): metrics_a = { "dataset1": { "category1": { "scene1": Metrics( aucs=np.array([20.0, 30.0, 40.0]), recalls=np.array([25.0, 35.0, 45.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=90, num_components=2, largest_component=80, ) } } } metrics_b = { "dataset1": { "category1": { "scene1": Metrics( aucs=np.array([10.0, 20.0, 30.0]), recalls=np.array([15.0, 25.0, 35.0]), error_thresholds=np.array([0.5, 1.0, 2.0]), error_type="relative_auc", num_images=100, num_reg_images=85, num_components=1, largest_component=85, ) } } } diff = diff_metrics(metrics_a, metrics_b) scene_diff = diff["dataset1"]["category1"]["scene1"] np.testing.assert_array_equal(scene_diff.aucs, [10.0, 10.0, 10.0]) np.testing.assert_array_equal(scene_diff.recalls, [10.0, 10.0, 10.0]) assert scene_diff.num_reg_images == 5 assert scene_diff.num_components == 1 def create_test_reconstruction(): pycolmap.set_random_seed(0) synthetic_dataset_options = pycolmap.SyntheticDatasetOptions() synthetic_dataset_options.num_cameras_per_rig = 1 synthetic_dataset_options.num_frames_per_rig = 5 synthetic_dataset_options.num_points3D = 0 return pycolmap.synthesize_dataset(synthetic_dataset_options) class TestComputeAbsErrors: def test_identical_reconstruction(self): reconstruction = create_test_reconstruction() dts, dRs = compute_abs_errors( sparse_gt=reconstruction, sparse=reconstruction ) assert len(dts) == reconstruction.num_images() assert len(dRs) == reconstruction.num_images() np.testing.assert_allclose(dts, 0.0, atol=1e-10) np.testing.assert_allclose(dRs, 0.0, atol=1e-10) def test_transformed_reconstruction(self): gt_reconstruction = create_test_reconstruction() reconstruction = create_test_reconstruction() translation = np.array([1, 2, 3]) for frame in reconstruction.frames.values(): world_from_rig = frame.rig_from_world.inverse() world_from_rig.rotation = ( world_from_rig.rotation * pycolmap.Rotation3d([0, 1, 0, 0]) ) world_from_rig.translation += translation frame.rig_from_world = world_from_rig.inverse() dts, dRs = compute_abs_errors( sparse_gt=gt_reconstruction, sparse=reconstruction ) assert len(dts) == reconstruction.num_images() assert len(dRs) == reconstruction.num_images() np.testing.assert_allclose(dts, np.linalg.norm(translation), atol=1e-10) np.testing.assert_allclose(dRs, 180.0, atol=1e-10) class TestComputeRelErrors: def test_identical_reconstruction(self): reconstruction = create_test_reconstruction() dts, dRs = compute_rel_errors( sparse_gt=reconstruction, sparse=reconstruction, min_proj_center_dist=0.01, ) num_images = reconstruction.num_images() expected_num_errors = num_images * (num_images - 1) assert len(dts) == expected_num_errors assert len(dRs) == expected_num_errors np.testing.assert_allclose(dts, 0.0, atol=1e-5) np.testing.assert_allclose(dRs, 0.0, atol=1e-5) def test_transformed_reconstruction(self): gt_reconstruction = create_test_reconstruction() reconstruction = create_test_reconstruction() reconstruction.transform( pycolmap.Sim3d( 1.0, pycolmap.Rotation3d(np.array([0, 1, 0, 0])), np.array([1, 2, 3]), ) ) dts, dRs = compute_rel_errors( sparse_gt=gt_reconstruction, sparse=reconstruction, min_proj_center_dist=0.01, ) num_images = reconstruction.num_images() expected_num_errors = num_images * (num_images - 1) assert len(dts) == expected_num_errors assert len(dRs) == expected_num_errors np.testing.assert_allclose(dts, 0.0, atol=1e-5) np.testing.assert_allclose(dRs, 0.0, atol=1e-5) def test_different_reconstructions(self): gt_reconstruction = create_test_reconstruction() reconstruction = create_test_reconstruction() for image in reconstruction.images.values(): image.frame.rig_from_world.rotation = ( pycolmap.Rotation3d(np.array([0, 1, 0, 0])) * image.frame.rig_from_world.rotation ) image.frame.rig_from_world.translation += np.array([1, 2, 3]) dts, dRs = compute_rel_errors( sparse_gt=gt_reconstruction, sparse=reconstruction, min_proj_center_dist=0.01, ) num_images = reconstruction.num_images() expected_num_errors = num_images * (num_images - 1) assert len(dts) == expected_num_errors assert len(dRs) == expected_num_errors assert np.all(dts > 0.1) assert np.all(dRs > 0.1) colmap-4.1.1/benchmark/reconstruction/requirements.txt000066400000000000000000000000521522646662000232750ustar00rootroot00000000000000pillow numpy requests pycolmap py7zr rich colmap-4.1.1/benchmark/runtime/000077500000000000000000000000001522646662000164165ustar00rootroot00000000000000colmap-4.1.1/benchmark/runtime/CMakeLists.txt000066400000000000000000000013641522646662000211620ustar00rootroot00000000000000find_package(benchmark REQUIRED) add_executable(benchmark_cost_functions cost_functions.cc) target_link_libraries(benchmark_cost_functions PRIVATE colmap_estimators benchmark::benchmark) add_executable(benchmark_bundle_adjustment bundle_adjustment.cc) target_link_libraries(benchmark_bundle_adjustment PRIVATE colmap_estimators colmap_scene benchmark::benchmark) add_executable(benchmark_bundle_adjustment_convergence bundle_adjustment_convergence.cc) target_link_libraries(benchmark_bundle_adjustment_convergence PRIVATE colmap_estimators colmap_scene colmap_controllers) add_executable(benchmark_global_positioning global_positioning.cc) target_link_libraries(benchmark_global_positioning PRIVATE colmap_estimators colmap_scene benchmark::benchmark) colmap-4.1.1/benchmark/runtime/README.md000066400000000000000000000012261522646662000176760ustar00rootroot00000000000000# Benchmarking ## Installation 1. Install [google/benchmark](https://github.com/google/benchmark). For example, using homebrew on a Mac: `brew install google-benchmark`. 2. Build and run the benchmarking executables: ```bash cmake .. -DBENCHMARK_ENABLED=ON ninja benchmark/runtime/benchmark_cost_functions ``` To reduce the variance, consider setting up your system appropriately [following these instructions](https://github.com/google/benchmark/blob/main/docs/reducing_variance.md). ## Running the benchmarks Cost functions: ```bash ./benchmark/runtime/benchmark_cost_functions --benchmark_display_aggregates_only=true --benchmark_repetitions=50 ``` colmap-4.1.1/benchmark/runtime/bundle_adjustment.cc000066400000000000000000000161311522646662000224360ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/bundle_adjustment.h" #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/scene/reconstruction.h" #include "colmap/scene/synthetic.h" #include using namespace colmap; static void AddArguments(::benchmark::Benchmark* b) { for (const int track_length : {5, 20, 100}) { for (const int num_rigs : {1, 5}) { for (const int num_cameras_per_rig : {1, 3}) { for (const int num_frames_per_rig : {10, 50}) { const int num_images = num_rigs * num_cameras_per_rig * num_frames_per_rig; if (track_length > num_images) continue; for (const int num_points3D : {1000, 10000}) { b->Args({track_length, num_rigs, num_cameras_per_rig, num_frames_per_rig, num_points3D}); } } } } } } class BM_BundleAdjustment : public benchmark::Fixture { public: void SetUp(::benchmark::State& state) { SetPRNGSeed(42); SyntheticDatasetOptions dataset_options; dataset_options.track_length = state.range(0); dataset_options.num_rigs = state.range(1); dataset_options.num_cameras_per_rig = state.range(2); dataset_options.num_frames_per_rig = state.range(3); dataset_options.num_points3D = state.range(4); reconstruction_ = std::make_unique(); SynthesizeDataset(dataset_options, reconstruction_.get()); SyntheticNoiseOptions noise_options; noise_options.point2D_stddev = 1.0; noise_options.point3D_stddev = 0.05; noise_options.rig_from_world_translation_stddev = 0.01; noise_options.rig_from_world_rotation_stddev = 1.0; SynthesizeNoise(noise_options, reconstruction_.get()); for (const image_t image_id : reconstruction_->RegImageIds()) { config_.AddImage(image_id); } config_.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); options_.print_summary = false; } void TearDown(::benchmark::State& /*state*/) { reconstruction_.reset(); options_ = BundleAdjustmentOptions(); config_ = BundleAdjustmentConfig(); } protected: void ReportSceneCounters(benchmark::State& state) const { state.counters["track_length"] = reconstruction_->ComputeMeanTrackLength(); state.counters["num_images"] = reconstruction_->NumRegImages(); state.counters["num_rigs"] = reconstruction_->NumRigs(); state.counters["num_cameras"] = reconstruction_->NumCameras(); state.counters["num_frames"] = reconstruction_->NumRegFrames(); state.counters["num_points3d"] = reconstruction_->NumPoints3D(); } std::unique_ptr reconstruction_; BundleAdjustmentConfig config_; BundleAdjustmentOptions options_; }; // Time column reports wall-clock time (ms) per full BA solve. BENCHMARK_DEFINE_F(BM_BundleAdjustment, Ceres)(benchmark::State& state) { BundleAdjustmentOptions opts = options_; opts.backend = BundleAdjustmentBackend::CERES; int total_lm_steps = 0; double total_ceres_time_s = 0.0; for (auto _ : state) { state.PauseTiming(); Reconstruction copy = *reconstruction_; state.ResumeTiming(); auto ba = CreateDefaultBundleAdjuster(opts, config_, copy); const auto summary = ba->Solve(); state.PauseTiming(); if (summary->termination_type == BundleAdjustmentTerminationType::NO_CONVERGENCE) { state.SkipWithError("Bundle adjustment did not converge"); break; } const auto* ceres_sum = dynamic_cast(summary.get()); if (ceres_sum == nullptr) { state.SkipWithError("Unexpected summary type for Ceres backend"); break; } total_lm_steps += ceres_sum->ceres_summary.num_successful_steps + ceres_sum->ceres_summary.num_unsuccessful_steps; total_ceres_time_s += ceres_sum->ceres_summary.total_time_in_seconds; state.ResumeTiming(); } state.PauseTiming(); ReportSceneCounters(state); const int64_t num_iters = state.iterations(); if (num_iters > 0) { state.counters["avg_lm_steps"] = static_cast(total_lm_steps) / num_iters; } if (total_lm_steps > 0) { state.counters["avg_ms_per_lm_step"] = total_ceres_time_s * 1000.0 / total_lm_steps; } state.ResumeTiming(); } #ifdef CASPAR_ENABLED // Time column reports wall-clock time (ms) per full BA solve. BENCHMARK_DEFINE_F(BM_BundleAdjustment, Caspar)(benchmark::State& state) { BundleAdjustmentOptions opts = options_; opts.backend = BundleAdjustmentBackend::CASPAR; for (auto _ : state) { state.PauseTiming(); Reconstruction copy = *reconstruction_; state.ResumeTiming(); auto ba = CreateDefaultBundleAdjuster(opts, config_, copy); const auto summary = ba->Solve(); state.PauseTiming(); if (summary->termination_type == BundleAdjustmentTerminationType::NO_CONVERGENCE) { state.SkipWithError("Bundle adjustment did not converge"); break; } state.ResumeTiming(); } state.PauseTiming(); ReportSceneCounters(state); state.ResumeTiming(); } #endif BENCHMARK_REGISTER_F(BM_BundleAdjustment, Ceres) ->Apply(AddArguments) ->Unit(benchmark::kMillisecond); #ifdef CASPAR_ENABLED BENCHMARK_REGISTER_F(BM_BundleAdjustment, Caspar) ->Apply(AddArguments) ->Unit(benchmark::kMillisecond); #endif int main(int argc, char** argv) { benchmark::Initialize(&argc, argv); if (benchmark::ReportUnrecognizedArguments(argc, argv)) return 1; benchmark::RunSpecifiedBenchmarks(); benchmark::Shutdown(); return 0; } colmap-4.1.1/benchmark/runtime/bundle_adjustment_convergence.cc000066400000000000000000000251021522646662000250120ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. // Outputs per-LM-iteration MSE convergence as CSV to stdout. // Columns: solver,iteration,time_ms,mse_px2 // // MSE convention matches the existing COLMAP reporting (sqrt(cost/n) = RMSE): // Ceres: mse = cost / num_residuals // Caspar: mse = score_best / num_residuals // Usage: // bundle_adjustment_convergence \ // [--track_length=N] [--num_frames=N] [--num_points3D=N] \ // [--max_ceres_iterations=N] [--max_caspar_iterations=N] #include "colmap/controllers/base_option_manager.h" #include "colmap/estimators/bundle_adjustment.h" #include "colmap/estimators/bundle_adjustment_caspar.h" #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/scene/reconstruction.h" #include "colmap/scene/synthetic.h" #include "colmap/sensor/models.h" #include #include #include using namespace colmap; int main(int argc, char** argv) { // -1 means "use solver default". Override only when flag is provided. int max_ceres_iterations = -1; int max_caspar_iterations = -1; int track_length = 20; int num_frames = 50; int num_points3D = 5000; int num_cameras_per_rig = 1; bool refine_focal_length = false; std::string label = "default"; BaseOptionManager args(/*add_project_options=*/false); args.AddDefaultOption("max_ceres_iterations", &max_ceres_iterations); args.AddDefaultOption("max_caspar_iterations", &max_caspar_iterations); args.AddDefaultOption("track_length", &track_length); args.AddDefaultOption("num_frames", &num_frames); args.AddDefaultOption("num_points3D", &num_points3D); args.AddDefaultOption("num_cameras_per_rig", &num_cameras_per_rig); args.AddDefaultOption("refine_focal_length", &refine_focal_length); args.AddDefaultOption("label", &label); if (!args.Parse(argc, argv)) { return EXIT_FAILURE; } SetPRNGSeed(42); SyntheticDatasetOptions dataset_options; dataset_options.track_length = track_length; dataset_options.num_cameras_per_rig = num_cameras_per_rig; dataset_options.num_points3D = num_points3D; // Use PINHOLE so fx≠fy refinement is testable without distortion coupling. dataset_options.camera_model_id = PinholeCameraModel::model_id; dataset_options.camera_params = {1280, 1280, 512, 384}; dataset_options.num_rigs = 1; dataset_options.num_frames_per_rig = num_frames; Reconstruction reconstruction; SynthesizeDataset(dataset_options, &reconstruction); SyntheticNoiseOptions noise_options; noise_options.point2D_stddev = 1.0; noise_options.point3D_stddev = 0.05; noise_options.rig_from_world_translation_stddev = 0.01; noise_options.rig_from_world_rotation_stddev = 1.0; SynthesizeNoise(noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.print_summary = false; options.refine_focal_length = refine_focal_length; options.refine_sensor_from_rig = false; if (max_ceres_iterations >= 0) { options.ceres->solver_options.max_num_iterations = max_ceres_iterations; } if (max_caspar_iterations >= 0) { options.caspar->solver_iter_max = max_caspar_iterations; } options.caspar->collect_iteration_data = true; std::cerr << "Scene: track_length=" << track_length << " num_frames=" << num_frames << " num_points3D=" << num_points3D << " num_cameras_per_rig=" << num_cameras_per_rig << " refine_focal_length=" << refine_focal_length << " label=" << label << " max_ceres_iterations=" << options.ceres->solver_options.max_num_iterations << " max_caspar_iterations=" << options.caspar->solver_iter_max << "\n"; std::cout << "solver,scenario,iteration,time_ms,mse_px2\n"; // Ceres { Reconstruction copy = reconstruction; BundleAdjustmentOptions opts = options; opts.backend = BundleAdjustmentBackend::CERES; // Measure setup/build time. const auto t_setup_start = std::chrono::steady_clock::now(); auto ba = CreateDefaultBundleAdjuster(opts, config, copy); const auto t_setup_end = std::chrono::steady_clock::now(); const double setup_time_ms = std::chrono::duration(t_setup_end - t_setup_start) .count(); // Measure total Solve() wall time. const auto t_solve_start = std::chrono::steady_clock::now(); const auto summary = ba->Solve(); const auto t_solve_end = std::chrono::steady_clock::now(); const double solve_wall_ms = std::chrono::duration(t_solve_end - t_solve_start) .count(); const auto* s = dynamic_cast(summary.get()); if (!s) { std::cerr << "ERROR: unexpected Ceres summary type\n"; return 1; } const double n = static_cast(s->num_residuals); // Ceres cumulative iteration time reported internally. const double iter_total_ms = s->ceres_summary.iterations.empty() ? 0.0 : s->ceres_summary.iterations.back().cumulative_time_in_seconds * 1000.0; // Solve() wall time not accounted for by iteration timing. const double solve_overhead_ms = std::max(0.0, solve_wall_ms - iter_total_ms); // Emit t=0 anchor so the plot origin is consistent with Caspar. if (!s->ceres_summary.iterations.empty()) { std::cout << "ceres," << label << ",-1,0," << s->ceres_summary.iterations.front().cost / n << "\n"; } for (const auto& iter : s->ceres_summary.iterations) { const double mse = iter.cost / n; // Include: // setup time // + Solve() dispatch/overhead // + cumulative iteration time (includes initial eval — same convention // as Caspar's dt_tot which includes DoResJacFirst) const double time_ms = setup_time_ms + solve_overhead_ms + iter.cumulative_time_in_seconds * 1000.0; std::cout << "ceres," << label << "," << iter.iteration << "," << time_ms << "," << mse << "\n"; } std::cerr << "Ceres: " << s->ceres_summary.iterations.size() << " iterations, final mse=" << s->ceres_summary.final_cost / n << " px^2" << ", setup_ms=" << setup_time_ms << ", solve_overhead_ms=" << solve_overhead_ms << ", iter_ms=" << iter_total_ms << ", solve_wall_ms=" << solve_wall_ms << "\n"; } #ifdef CASPAR_ENABLED // Caspar { Reconstruction copy = reconstruction; BundleAdjustmentOptions opts = options; opts.backend = BundleAdjustmentBackend::CASPAR; // Measure setup/build time. const auto t_setup_start = std::chrono::steady_clock::now(); auto ba = CreateDefaultBundleAdjuster(opts, config, copy); const auto t_setup_end = std::chrono::steady_clock::now(); const double setup_time_ms = std::chrono::duration(t_setup_end - t_setup_start) .count(); // Measure total Solve() wall time. const auto t_solve_start = std::chrono::steady_clock::now(); const auto summary = ba->Solve(); const auto t_solve_end = std::chrono::steady_clock::now(); const double solve_wall_ms = std::chrono::duration(t_solve_end - t_solve_start) .count(); const auto* s = dynamic_cast(summary.get()); if (!s) { std::cerr << "ERROR: unexpected Caspar summary type\n"; return 1; } const double n = static_cast(s->num_residuals); // Caspar internal measured iteration time. const double iter_total_ms = s->iterations.empty() ? 0.0 : s->iterations.back().dt_tot * 1000.0; // Everything inside Solve() that is NOT accounted for by iteration timing. const double solve_overhead_ms = std::max(0.0, solve_wall_ms - iter_total_ms); // Emit initial state (iteration -1) at t=0 std::cout << "caspar," << label << ",-1,0," << (s->initial_score / n) << "\n"; for (const auto& iter : s->iterations) { const double mse = iter.score_best / n; // Include: // setup time // + Solve() dispatch/overhead // + cumulative iteration time const double time_ms = setup_time_ms + solve_overhead_ms + iter.dt_tot * 1000.0; std::cout << "caspar," << label << "," << iter.solver_iter << "," << time_ms << "," << mse << "\n"; } const double final_mse = s->iterations.empty() ? s->initial_score / n : s->iterations.back().score_best / n; std::cerr << "Caspar: " << s->iteration_count << " iterations, final mse=" << final_mse << " px^2" << ", setup_ms=" << setup_time_ms << ", solve_overhead_ms=" << solve_overhead_ms << ", iter_ms=" << iter_total_ms << ", solve_wall_ms=" << solve_wall_ms << "\n"; } #endif return 0; } colmap-4.1.1/benchmark/runtime/cost_functions.cc000066400000000000000000000070571522646662000217760ustar00rootroot00000000000000#include "colmap/estimators/cost_functions/reprojection_error.h" #include "colmap/geometry/rigid3.h" #include "colmap/sensor/models.h" #include "colmap/util/eigen_alignment.h" #include #include using namespace colmap; using camera_model = SimpleRadialCameraModel; struct ReprojErrorData { Rigid3d cam_from_world; Eigen::Vector3d point3D; Eigen::Vector2d point2D; std::vector camera_params; }; static ReprojErrorData CreateReprojErrorData() { ReprojErrorData data{ Rigid3d(Eigen::Quaterniond(0.9, 0.1, 0.1, 0.1), Eigen::Vector3d::Zero()), Eigen::Vector3d(1, 2, 10), Eigen::Vector2d(0.1, 0.2), {1, 0, 0, 0.1}, }; CHECK_EQ(data.camera_params.size(), camera_model::num_params); return std::move(data); } class BM_ReprojErrorCostFunction : public benchmark::Fixture { public: void SetUp(::benchmark::State& state) { cost_function.reset( ReprojErrorCostFunctor::Create(data.point2D)); } ReprojErrorData data = CreateReprojErrorData(); const double* parameters[4] = {data.cam_from_world.rotation().coeffs().data(), data.cam_from_world.translation().data(), data.point3D.data(), data.camera_params.data()}; double residuals[2]; double jacobian_q[2 * 4]; double jacobian_t[2 * 3]; double jacobian_p[2 * 3]; double jacobian_params[2 * camera_model::num_params]; double* jacobians[4] = {jacobian_q, jacobian_t, jacobian_p, jacobian_params}; std::unique_ptr cost_function; }; BENCHMARK_F(BM_ReprojErrorCostFunction, Run)(benchmark::State& state) { for (auto _ : state) { cost_function->Evaluate(parameters, residuals, jacobians); } } class BM_ReprojErrorConstantPoseCostFunction : public benchmark::Fixture { public: void SetUp(::benchmark::State& state) { cost_function.reset( ReprojErrorConstantPoseCostFunctor::Create( data.point2D, data.cam_from_world)); } ReprojErrorData data = CreateReprojErrorData(); const double* parameters[2] = {data.point3D.data(), data.camera_params.data()}; double residuals[2]; double jacobian_p[2 * 3]; double jacobian_params[2 * camera_model::num_params]; double* jacobians[2] = {jacobian_p, jacobian_params}; std::unique_ptr cost_function; }; BENCHMARK_F(BM_ReprojErrorConstantPoseCostFunction, Run) (benchmark::State& state) { for (auto _ : state) { cost_function->Evaluate(parameters, residuals, jacobians); } } class BM_ReprojErrorConstantPoint3DCostFunction : public benchmark::Fixture { public: void SetUp(::benchmark::State& state) { cost_function.reset( ReprojErrorConstantPoint3DCostFunctor::Create( data.point2D, data.point3D)); } ReprojErrorData data = CreateReprojErrorData(); const double* parameters[3] = {data.cam_from_world.rotation().coeffs().data(), data.cam_from_world.translation().data(), data.camera_params.data()}; double residuals[2]; double jacobian_q[2 * 4]; double jacobian_t[2 * 3]; double jacobian_params[2 * camera_model::num_params]; double* jacobians[3] = {jacobian_q, jacobian_t, jacobian_params}; std::unique_ptr cost_function; }; BENCHMARK_F(BM_ReprojErrorConstantPoint3DCostFunction, Run) (benchmark::State& state) { for (auto _ : state) { cost_function->Evaluate(parameters, residuals, jacobians); } } BENCHMARK_MAIN(); colmap-4.1.1/benchmark/runtime/global_positioning.cc000066400000000000000000000150411522646662000226100ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/global_positioning.h" #include "colmap/math/random.h" #include "colmap/scene/database_cache.h" #include "colmap/scene/database_sqlite.h" #include "colmap/scene/pose_graph.h" #include "colmap/scene/reconstruction.h" #include "colmap/scene/synthetic.h" #include #include #include #include using namespace colmap; struct CachedData { std::array dataset_args; Reconstruction reconstruction; colmap::PoseGraph pose_graph; }; static void BM_GlobalPositioning(benchmark::State& state) { FLAGS_minloglevel = 2; // Suppress INFO and WARNING logs. const std::array dataset_args = {state.range(0), state.range(1), state.range(2), state.range(3), state.range(4)}; const bool use_parameter_block_ordering = state.range(5); // Cache dataset to avoid resynthesizing for different ordering options. static std::unique_ptr cached; if (!cached || cached->dataset_args != dataset_args) { SetPRNGSeed(42); SyntheticDatasetOptions dataset_options; dataset_options.num_rigs = dataset_args[0]; dataset_options.num_cameras_per_rig = dataset_args[1]; dataset_options.num_frames_per_rig = dataset_args[2]; dataset_options.num_points3D = dataset_args[3]; // Compute sparsity from target number of neighbors per image. // sparsity ≈ 1 - num_neighbors / (num_images - 1) const int num_neighbors = dataset_args[4]; const int num_images = dataset_options.num_rigs * dataset_options.num_cameras_per_rig * dataset_options.num_frames_per_rig; dataset_options.match_sparsity = std::max( 0.0, 1.0 - static_cast(num_neighbors) / (num_images - 1)); dataset_options.match_config = SyntheticDatasetOptions::MatchConfig::SPARSE; dataset_options.two_view_geometry_has_relative_pose = true; cached = std::make_unique(); cached->dataset_args = dataset_args; auto database = Database::Open(kInMemorySqliteDatabasePath); Reconstruction gt_reconstruction; SynthesizeDataset(dataset_options, >_reconstruction, database.get()); DatabaseCache database_cache; DatabaseCache::Options cache_options; database_cache.Load(*database, cache_options); database.reset(); // Close database connection. cached->pose_graph.Load(*database_cache.CorrespondenceGraph()); cached->reconstruction = gt_reconstruction; for (const auto& [frame_id, _] : cached->reconstruction.Frames()) { Frame& frame = cached->reconstruction.Frame(frame_id); frame.SetRigFromWorld( Rigid3d(frame.RigFromWorld().rotation(), Eigen::Vector3d::Zero())); } } const Reconstruction& reconstruction = cached->reconstruction; const colmap::PoseGraph& pose_graph = cached->pose_graph; const int num_neighbors = dataset_args[4]; colmap::GlobalPositionerOptions base_options; base_options.use_gpu = false; base_options.random_seed = 42; base_options.solver_options.max_num_iterations = 50; base_options.solver_options.minimizer_progress_to_stdout = false; for (auto _ : state) { state.PauseTiming(); Reconstruction reconstruction_copy = reconstruction; colmap::GlobalPositionerOptions options = base_options; options.use_parameter_block_ordering = use_parameter_block_ordering; state.ResumeTiming(); colmap::GlobalPositioner positioner(options); positioner.Solve(pose_graph, reconstruction_copy); } state.counters["ord"] = use_parameter_block_ordering; state.counters["imgs"] = reconstruction.NumRegImages(); state.counters["rigs"] = reconstruction.NumRigs(); state.counters["cams"] = reconstruction.NumCameras(); state.counters["frms"] = reconstruction.NumRegFrames(); state.counters["pnts"] = reconstruction.NumPoints3D(); state.counters["nbrs"] = num_neighbors; } static void GenerateArguments(benchmark::Benchmark* b) { // Args: {num_rigs, num_cameras_per_rig, num_frames_per_rig, num_points3D, // num_neighbors, use_parameter_block_ordering} for (const int num_rigs : {1, 5}) { for (const int num_cameras_per_rig : {1, 3}) { for (const int num_frames_per_rig : {10, 50}) { for (const int num_points3D : {1000, 10000}) { for (const int num_neighbors : {10, 20}) { for (const bool use_parameter_block_ordering : {true, false}) { b->Args({num_rigs, num_cameras_per_rig, num_frames_per_rig, num_points3D, num_neighbors, use_parameter_block_ordering}); } } } } } } } BENCHMARK(BM_GlobalPositioning) ->Apply(GenerateArguments) ->Unit(benchmark::kMillisecond) ->UseRealTime(); BENCHMARK_MAIN(); colmap-4.1.1/cmake/000077500000000000000000000000001522646662000140615ustar00rootroot00000000000000colmap-4.1.1/cmake/CMakeHelper.cmake000066400000000000000000000160601522646662000172060ustar00rootroot00000000000000if(POLICY CMP0043) cmake_policy(SET CMP0043 NEW) endif() if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() # Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24: if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24") cmake_policy(SET CMP0135 NEW) endif() if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.30") cmake_policy(SET CMP0167 NEW) endif() # Determine project compiler. if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") set(IS_MSVC TRUE) endif() if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") set(IS_GNU TRUE) endif() if(CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") set(IS_CLANG TRUE) endif() # Determine project architecture. if(CMAKE_SYSTEM_PROCESSOR MATCHES "[ix].?86|amd64|AMD64") set(IS_X86 TRUE) elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64|arm64|ARM64") set(IS_ARM64 TRUE) endif() # Determine project operating system. string(REGEX MATCH "Linux" IS_LINUX ${CMAKE_SYSTEM_NAME}) string(REGEX MATCH "DragonFly|BSD" IS_BSD ${CMAKE_SYSTEM_NAME}) string(REGEX MATCH "SunOS" IS_SOLARIS ${CMAKE_SYSTEM_NAME}) if(WIN32) set(IS_WINDOWS TRUE BOOL INTERNAL) endif() if(APPLE) set(IS_MACOS TRUE BOOL INTERNAL) endif() string(TOLOWER "${CMAKE_BUILD_TYPE}" CMAKE_BUILD_TYPE_LOWER) if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug" OR CMAKE_BUILD_TYPE_LOWER STREQUAL "relwithdebinfo") set(IS_DEBUG TRUE) endif() # Enable solution folders. set_property(GLOBAL PROPERTY USE_FOLDERS ON) set(CMAKE_TARGETS_ROOT_FOLDER "cmake") set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER ${CMAKE_TARGETS_ROOT_FOLDER}) set(COLMAP_TARGETS_ROOT_FOLDER "colmap_targets") set(COLMAP_SRC_ROOT_FOLDER "colmap_sources") # This macro will search for source files in a given directory, will add them # to a source group (folder within a project), and will then return paths to # each of the found files. The usage of the macro is as follows: # COLMAP_ADD_SOURCE_DIR( # # # ) macro(COLMAP_ADD_SOURCE_DIR SRC_DIR SRC_VAR) # Create the list of expressions to be used in the search. set(GLOB_EXPRESSIONS "") foreach(ARG ${ARGN}) list(APPEND GLOB_EXPRESSIONS ${SRC_DIR}/${ARG}) endforeach() # Perform the search for the source files. file(GLOB ${SRC_VAR} RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${GLOB_EXPRESSIONS}) # Create the source group. string(REPLACE "/" "\\" GROUP_NAME ${SRC_DIR}) source_group(${GROUP_NAME} FILES ${${SRC_VAR}}) # Clean-up. unset(GLOB_EXPRESSIONS) unset(ARG) unset(GROUP_NAME) endmacro(COLMAP_ADD_SOURCE_DIR) # Replacement for the normal add_library() command. The syntax remains the same # in that the first argument is the target name, and the following arguments # are the source files to use when building the target. # Supports TYPE argument: STATIC (default) or INTERFACE (header-only libraries). # For INTERFACE libraries, use INTERFACE_LINK_LIBS instead of PRIVATE/PUBLIC_LINK_LIBS. macro(COLMAP_ADD_LIBRARY) set(options) set(oneValueArgs TYPE) set(multiValueArgs NAME SRCS PRIVATE_LINK_LIBS PUBLIC_LINK_LIBS INTERFACE_LINK_LIBS) cmake_parse_arguments(COLMAP_ADD_LIBRARY "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(COLMAP_ADD_LIBRARY_TYPE STREQUAL "INTERFACE") # Header-only library add_library(${COLMAP_ADD_LIBRARY_NAME} INTERFACE) set_target_properties(${COLMAP_ADD_LIBRARY_NAME} PROPERTIES FOLDER ${COLMAP_TARGETS_ROOT_FOLDER}/${FOLDER_NAME}) target_link_libraries(${COLMAP_ADD_LIBRARY_NAME} INTERFACE ${COLMAP_ADD_LIBRARY_INTERFACE_LINK_LIBS}) target_compile_definitions(${COLMAP_ADD_LIBRARY_NAME} INTERFACE ${COLMAP_COMPILE_DEFINITIONS}) else() # Regular library (TYPE can be STATIC to override BUILD_SHARED_LIBS). add_library(${COLMAP_ADD_LIBRARY_NAME} ${COLMAP_ADD_LIBRARY_TYPE} ${COLMAP_ADD_LIBRARY_SRCS}) set_target_properties(${COLMAP_ADD_LIBRARY_NAME} PROPERTIES FOLDER ${COLMAP_TARGETS_ROOT_FOLDER}/${FOLDER_NAME}) if(CLANG_TIDY_EXE) set_target_properties(${COLMAP_ADD_LIBRARY_NAME} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-header-filter=.*") endif() target_link_libraries(${COLMAP_ADD_LIBRARY_NAME} PRIVATE ${COLMAP_ADD_LIBRARY_PRIVATE_LINK_LIBS} PUBLIC ${COLMAP_ADD_LIBRARY_PUBLIC_LINK_LIBS}) target_compile_definitions(${COLMAP_ADD_LIBRARY_NAME} PUBLIC ${COLMAP_COMPILE_DEFINITIONS}) endif() endmacro(COLMAP_ADD_LIBRARY) # Replacement for the normal add_executable() command. The syntax remains the # same in that the first argument is the target name, and the following # arguments are the source files to use when building the target. macro(COLMAP_ADD_EXECUTABLE) set(options) set(oneValueArgs) set(multiValueArgs NAME SRCS LINK_LIBS) cmake_parse_arguments(COLMAP_ADD_EXECUTABLE "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) add_executable(${COLMAP_ADD_EXECUTABLE_NAME} ${COLMAP_ADD_EXECUTABLE_SRCS}) set_target_properties(${COLMAP_ADD_EXECUTABLE_NAME} PROPERTIES FOLDER ${COLMAP_TARGETS_ROOT_FOLDER}/${FOLDER_NAME}) target_link_libraries(${COLMAP_ADD_EXECUTABLE_NAME} ${COLMAP_ADD_EXECUTABLE_LINK_LIBS}) if(VCPKG_BUILD) install(TARGETS ${COLMAP_ADD_EXECUTABLE_NAME} DESTINATION tools/) else() install(TARGETS ${COLMAP_ADD_EXECUTABLE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() if(CLANG_TIDY_EXE) set_target_properties(${COLMAP_ADD_EXECUTABLE_NAME} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-header-filter=.*") endif() target_compile_definitions(${COLMAP_ADD_EXECUTABLE_NAME} PRIVATE ${COLMAP_COMPILE_DEFINITIONS}) endmacro(COLMAP_ADD_EXECUTABLE) # Wrapper for test executables. macro(COLMAP_ADD_TEST) set(options) set(oneValueArgs) set(multiValueArgs NAME SRCS LINK_LIBS) cmake_parse_arguments(COLMAP_ADD_TEST "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) if(TESTS_ENABLED) # ${ARGN} will store the list of link libraries. set(COLMAP_ADD_TEST_TARGET "colmap_${FOLDER_NAME}_${COLMAP_ADD_TEST_NAME}") add_executable(${COLMAP_ADD_TEST_TARGET} ${COLMAP_ADD_TEST_SRCS}) set_target_properties(${COLMAP_ADD_TEST_TARGET} PROPERTIES FOLDER ${COLMAP_TARGETS_ROOT_FOLDER}/${FOLDER_NAME} OUTPUT_NAME "${COLMAP_ADD_TEST_NAME}") if(CLANG_TIDY_EXE) set_target_properties(${COLMAP_ADD_TEST_TARGET} PROPERTIES CXX_CLANG_TIDY "${CLANG_TIDY_EXE};-header-filter=.*") endif() target_link_libraries(${COLMAP_ADD_TEST_TARGET} ${COLMAP_ADD_TEST_LINK_LIBS} colmap_gtest_main) add_test(NAME "${FOLDER_NAME}/${COLMAP_ADD_TEST_NAME}" COMMAND $) if(IS_MSVC) install(TARGETS ${COLMAP_ADD_TEST_TARGET} DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() target_compile_definitions(${COLMAP_ADD_TEST_TARGET} PRIVATE ${COLMAP_COMPILE_DEFINITIONS}) endif() endmacro(COLMAP_ADD_TEST) colmap-4.1.1/cmake/CMakeUninstall.cmake.in000066400000000000000000000015331522646662000203440ustar00rootroot00000000000000if(NOT EXISTS "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") message(FATAL_ERROR "Cannot find install manifest: @CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt") endif() file(READ "@CMAKE_CURRENT_BINARY_DIR@/install_manifest.txt" files) string(REGEX REPLACE "\n" ";" files "${files}") foreach(file ${files}) message(STATUS "Uninstalling $ENV{DESTDIR}${file}") if(IS_SYMLINK "$ENV{DESTDIR}${file}" OR EXISTS "$ENV{DESTDIR}${file}") exec_program("@CMAKE_COMMAND@" ARGS "-E remove \"$ENV{DESTDIR}${file}\"" OUTPUT_VARIABLE rm_out RETURN_VALUE rm_retval) if(NOT "${rm_retval}" STREQUAL 0) message(FATAL_ERROR "Problem when removing $ENV{DESTDIR}${file}") endif() else() message(STATUS "File $ENV{DESTDIR}${file} does not exist.") endif() endforeach() colmap-4.1.1/cmake/FindCHOLMOD.cmake000066400000000000000000000110521522646662000167500ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package module for CHOLMOD library. # # The following variables are set by this module: # # CHOLMOD_FOUND: TRUE if CHOLMOD is found. # CHOLMOD::CHOLMOD: Imported target to link against. # # The following variables control the behavior of this module: # # CHOLMOD_INCLUDE_DIR_HINTS: List of additional directories in which to # search for CHOLMOD includes. # CHOLMOD_LIBRARY_DIR_HINTS: List of additional directories in which to # search for CHOLMOD libraries. set(CHOLMOD_INCLUDE_DIR_HINTS "" CACHE PATH "CHOLMOD include directory") set(CHOLMOD_LIBRARY_DIR_HINTS "" CACHE PATH "CHOLMOD library directory") unset(CHOLMOD_FOUND) unset(CHOLMOD_INCLUDE_DIRS) unset(CHOLMOD_LIBRARIES) find_package(CHOLMOD CONFIG QUIET) if(TARGET CHOLMOD::CHOLMOD) set(CHOLMOD_FOUND TRUE) message(STATUS "Found CHOLMOD") message(STATUS " Target : CHOLMOD::CHOLMOD") else() list(APPEND CHOLMOD_INCLUDE_SEARCH_PATHS ${CHOLMOD_INCLUDE_DIR_HINTS} /usr/include /usr/local/include /sw/include /opt/include /opt/local/include) # Some distros don't package suitesparse under a /suitesparse subdirectory (e.g. NixOS). # Search for both layouts separately so that the suitesparse/ subdirectory # layout is reliably preferred across all search paths. A single find_path # call with both names would iterate search paths first and names second, # which could pick up a bare cholmod.h from an earlier path over # suitesparse/cholmod.h from a later one. find_path(CHOLMOD_INCLUDE_DIRS NAMES suitesparse/cholmod.h PATHS ${CHOLMOD_INCLUDE_SEARCH_PATHS}) if(NOT CHOLMOD_INCLUDE_DIRS) unset(CHOLMOD_INCLUDE_DIRS CACHE) find_path(CHOLMOD_INCLUDE_DIRS NAMES cholmod.h PATHS ${CHOLMOD_INCLUDE_SEARCH_PATHS}) endif() find_library(CHOLMOD_LIBRARIES NAMES cholmod PATHS ${CHOLMOD_LIBRARY_DIR_HINTS} /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /sw/lib /opt/lib /opt/local/lib) if(CHOLMOD_INCLUDE_DIRS AND CHOLMOD_LIBRARIES) set(CHOLMOD_FOUND TRUE) message(STATUS "Found CHOLMOD") message(STATUS " Includes : ${CHOLMOD_INCLUDE_DIRS}") message(STATUS " Libraries : ${CHOLMOD_LIBRARIES}") else() set(CHOLMOD_FOUND FALSE) endif() if(EXISTS "${CHOLMOD_INCLUDE_DIRS}/suitesparse/cholmod.h") set(CHOLMOD_INTERFACE_INCLUDE_DIRS "${CHOLMOD_INCLUDE_DIRS}/suitesparse") else() set(CHOLMOD_INTERFACE_INCLUDE_DIRS "${CHOLMOD_INCLUDE_DIRS}") endif() add_library(CHOLMOD::CHOLMOD INTERFACE IMPORTED) target_include_directories( CHOLMOD::CHOLMOD INTERFACE ${CHOLMOD_INTERFACE_INCLUDE_DIRS}) target_link_libraries( CHOLMOD::CHOLMOD INTERFACE ${CHOLMOD_LIBRARIES}) endif() if(NOT CHOLMOD_FOUND AND CHOLMOD_FIND_REQUIRED) message(FATAL_ERROR "Could not find CHOLMOD") endif() colmap-4.1.1/cmake/FindCryptoPP.cmake000066400000000000000000000065501522646662000174120ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package module for CryptoPP library. # # The following variables are set by this module: # # CryptoPP_FOUND: TRUE if CryptoPP is found. # cryptopp: Imported target to link against. # # The following variables control the behavior of this module: # # CryptoPP_INCLUDE_DIR_HINTS: List of additional directories in which to # search for CryptoPP includes. # CryptoPP_LIBRARY_DIR_HINTS: List of additional directories in which to # search for CryptoPP libraries. set(CryptoPP_INCLUDE_DIR_HINTS "" CACHE PATH "CryptoPP include directory") set(CryptoPP_LIBRARY_DIR_HINTS "" CACHE PATH "CryptoPP library directory") unset(CryptoPP_FOUND) unset(CryptoPP_INCLUDE_DIRS) unset(CryptoPP_LIBRARIES) list(APPEND CryptoPP_CHECK_INCLUDE_DIRS ${CryptoPP_INCLUDE_DIR_HINTS} /usr/include /usr/local/include /opt/include /opt/local/include ) list(APPEND CryptoPP_CHECK_LIBRARY_DIRS ${CryptoPP_LIBRARY_DIR_HINTS} /usr/lib /usr/local/lib /opt/lib /opt/local/lib ) find_path(CryptoPP_INCLUDE_DIRS NAMES cryptopp/cryptlib.h PATHS ${CryptoPP_CHECK_INCLUDE_DIRS}) find_library(CryptoPP_LIBRARIES NAMES cryptopp PATHS ${CryptoPP_CHECK_LIBRARY_DIRS}) if(CryptoPP_INCLUDE_DIRS AND CryptoPP_LIBRARIES) set(CryptoPP_FOUND TRUE) endif() if(CryptoPP_FOUND) message(STATUS "Found CryptoPP") message(STATUS " Includes : ${CryptoPP_INCLUDE_DIRS}") message(STATUS " Libraries : ${CryptoPP_LIBRARIES}") else() if(CryptoPP_FIND_REQUIRED) message(FATAL_ERROR "Could not find CryptoPP") endif() endif() add_library(cryptopp INTERFACE IMPORTED) target_include_directories( cryptopp INTERFACE ${CryptoPP_INCLUDE_DIRS}) target_link_libraries( cryptopp INTERFACE ${CryptoPP_LIBRARIES}) colmap-4.1.1/cmake/FindDependencies.cmake000066400000000000000000000540401522646662000202550ustar00rootroot00000000000000if(COLMAP_FIND_QUIETLY) set(COLMAP_FIND_TYPE QUIET) else() set(COLMAP_FIND_TYPE REQUIRED) endif() # Track all the compile definitions set(COLMAP_COMPILE_DEFINITIONS) if(LSD_ENABLED) list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_LSD_ENABLED) message(STATUS "Enabling LSD support") else() message(STATUS "Disabling LSD support") endif() find_package(OpenMP REQUIRED COMPONENTS C CXX) find_package(Boost ${COLMAP_FIND_TYPE} COMPONENTS graph program_options OPTIONAL_COMPONENTS system) find_package(Eigen3 ${COLMAP_FIND_TYPE}) find_package(OpenImageIO ${COLMAP_FIND_TYPE}) find_package(Metis ${COLMAP_FIND_TYPE}) find_package(SQLite3 ${COLMAP_FIND_TYPE}) # Older CMake versions define SQLite::SQLite3 instead of SQLite3::SQLite3. if(NOT TARGET SQLite3::SQLite3 AND TARGET SQLite::SQLite3) add_library(SQLite3::SQLite3 ALIAS SQLite::SQLite3) endif() set(OpenGL_GL_PREFERENCE GLVND) find_package(OpenGL ${COLMAP_FIND_TYPE}) find_package(Glew ${COLMAP_FIND_TYPE}) find_package(Git) find_package(CHOLMOD REQUIRED) # Ceres is found before Glog on purpose. Some distributions (e.g. Fedora) ship a # Ceres whose bundled FindGlog.cmake unconditionally calls add_library(glog::glog) # in module mode. If we created the glog::glog target first, that call collides # with a "target already exists" error (see issue #3347). By finding Ceres first, # Ceres creates glog::glog itself, and our subsequent find_package(Glog) reuses # the existing target instead. find_package(Ceres ${COLMAP_FIND_TYPE}) if(NOT TARGET Ceres::ceres) # Older Ceres versions don't come with an imported interface target. add_library(Ceres::ceres INTERFACE IMPORTED) target_include_directories( Ceres::ceres INTERFACE ${CERES_INCLUDE_DIRS}) target_link_libraries( Ceres::ceres INTERFACE ${CERES_LIBRARIES}) endif() find_package(Glog ${COLMAP_FIND_TYPE}) if(DEFINED glog_VERSION_MAJOR) # Older versions of glog don't export version variables. list(APPEND COLMAP_COMPILE_DEFINITIONS GLOG_VERSION_MAJOR=${glog_VERSION_MAJOR}) list(APPEND COLMAP_COMPILE_DEFINITIONS GLOG_VERSION_MINOR=${glog_VERSION_MINOR}) endif() if(TESTS_ENABLED) find_package(GTest ${COLMAP_FIND_TYPE}) endif() if(CGAL_ENABLED) set(CGAL_DO_NOT_WARN_ABOUT_CMAKE_BUILD_TYPE TRUE) # We do not use CGAL data. This prevents an unnecessary warning by CMake. set(CGAL_DATA_DIR "unused") find_package(CGAL ${COLMAP_FIND_TYPE}) endif() if(CGAL_FOUND) list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_CGAL_ENABLED) list(APPEND CGAL_LIBRARY ${CGAL_LIBRARIES}) message(STATUS "Found CGAL") message(STATUS " Includes : ${CGAL_INCLUDE_DIRS}") message(STATUS " Libraries : ${CGAL_LIBRARY}") if(NOT TARGET CGAL) # Older CGAL versions don't come with an imported interface target. add_library(CGAL INTERFACE IMPORTED) target_include_directories( CGAL INTERFACE ${CGAL_INCLUDE_DIRS} ${GMP_INCLUDE_DIR}) target_link_libraries( CGAL INTERFACE ${CGAL_LIBRARY} ${GMP_LIBRARIES}) endif() list(APPEND COLMAP_LINK_DIRS ${CGAL_LIBRARIES_DIR}) else() if(CGAL_ENABLED) set(CGAL_ENABLED OFF) message(STATUS "Disabling CGAL support (not found)") else() message(STATUS "Disabling CGAL support") endif() endif() if(DOWNLOAD_ENABLED) # The OpenSSL package in vcpkg seems broken under Windows and leads to # missing certificate verification when connecting to SSL servers. We # therefore use curl[sspi] (i.e., native Windows SSL/TLS) under Windows # and curl[openssl] otherwise. find_package(CURL QUIET) set(CRYPTO_FOUND FALSE) if(IS_MSVC AND IS_ARM64) # OpenSSL crashes for ARM64 under Windows. We therefore fall back to # CryptoPP as an alternative to OpenSSL for SHA256 computation. find_package(CryptoPP QUIET) if(CryptoPP_FOUND) set(CRYPTO_FOUND TRUE) else() message(STATUS "CryptoPP not found") endif() else() find_package(OpenSSL QUIET COMPONENTS Crypto) if(OpenSSL_FOUND) set(CRYPTO_FOUND TRUE) else() message(STATUS "OpenSSL::Crypto not found") endif() endif() if(CURL_FOUND AND CRYPTO_FOUND) message(STATUS "Enabling download support") list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_DOWNLOAD_ENABLED) else() set(DOWNLOAD_ENABLED OFF) message(STATUS "Disabling download support (Curl/Crypto not found)") endif() else() message(STATUS "Disabling download support") endif() if(NOT FETCH_POSELIB) find_package(PoseLib ${COLMAP_FIND_TYPE}) endif() if(NOT FETCH_FAISS) find_package(faiss ${COLMAP_FIND_TYPE}) endif() set(COLMAP_LINK_DIRS ${Boost_LIBRARY_DIRS}) set(CUDA_MIN_VERSION "7.0") if(CUDA_ENABLED) if(CMAKE_VERSION VERSION_LESS 3.17) find_package(CUDA QUIET) if(CUDA_FOUND) message(STATUS "Found CUDA version ${CUDA_VERSION} installed in " "${CUDA_TOOLKIT_ROOT_DIR} via legacy CMake (<3.17) module. " "Using the legacy CMake module means that any installation of " "COLMAP will require that the CUDA libraries are " "available under LD_LIBRARY_PATH.") message(STATUS "Found CUDA ") message(STATUS " Includes : ${CUDA_INCLUDE_DIRS}") message(STATUS " Libraries : ${CUDA_LIBRARIES}") enable_language(CUDA) macro(declare_imported_cuda_target module) add_library(CUDA::${module} INTERFACE IMPORTED) target_include_directories( CUDA::${module} INTERFACE ${CUDA_INCLUDE_DIRS}) target_link_libraries( CUDA::${module} INTERFACE ${CUDA_${module}_LIBRARY} ${ARGN}) endmacro() declare_imported_cuda_target(cudart ${CUDA_LIBRARIES}) declare_imported_cuda_target(curand ${CUDA_LIBRARIES}) set(CUDAToolkit_VERSION "${CUDA_VERSION_STRING}") set(CUDAToolkit_BIN_DIR "${CUDA_TOOLKIT_ROOT_DIR}/bin") else() message(STATUS "Disabling CUDA support (not found)") endif() else() find_package(CUDAToolkit QUIET) if(CUDAToolkit_FOUND) set(CUDA_FOUND ON) enable_language(CUDA) else() message(STATUS "Disabling CUDA support (not found)") endif() endif() else() message(STATUS "Disabling CUDA support") endif() if(CUDA_ENABLED AND CUDA_FOUND) if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) set(CMAKE_CUDA_ARCHITECTURES "native") endif() # Caspar's Symforce-generated kernels use cooperative_groups::labeled_partition # and atomicAdd_block, which require compute capability >= 7.0. Fail early with # a clear message instead of a cryptic nvcc error deep in the kernel build. The # numeric check handles list entries and -real/-virtual suffixes; the special # values native/all/all-major cannot be resolved statically here, so they only # get a warning (nvcc may fall back to an older default arch in build # environments without a visible GPU >= 7.0, e.g. containerized builds). if(CASPAR_ENABLED) foreach(_caspar_arch IN LISTS CMAKE_CUDA_ARCHITECTURES) string(REGEX MATCH "^([0-9]+)" _caspar_arch_num "${_caspar_arch}") if(_caspar_arch_num AND _caspar_arch_num LESS 70) message(FATAL_ERROR "CASPAR_ENABLED requires CUDA architecture >= 70 (compute " "capability 7.0), but CMAKE_CUDA_ARCHITECTURES contains " "'${_caspar_arch}'. Set -DCMAKE_CUDA_ARCHITECTURES to 70+.") endif() endforeach() if(CMAKE_CUDA_ARCHITECTURES MATCHES "native|all|all-major") message(WARNING "CASPAR_ENABLED with CMAKE_CUDA_ARCHITECTURES='${CMAKE_CUDA_ARCHITECTURES}': " "Caspar requires compute capability >= 7.0, which cannot be " "verified statically for this value. In an environment without a " "visible GPU >= 7.0 (e.g. containerized builds) nvcc may fall back " "to an older default arch and fail with cryptic kernel errors. " "Set -DCMAKE_CUDA_ARCHITECTURES explicitly (e.g. 75, 86).") endif() endif() list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_CUDA_ENABLED) # Do not show warnings if the architectures are deprecated. set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Wno-deprecated-gpu-targets") # Suppress warnings related to Eigen: # Calling a constexpr __host__ function from a __host__ __device__ function is not allowed. set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-relaxed-constexpr") # Explicitly set PIC flags for CUDA targets. if(NOT IS_MSVC) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --compiler-options -fPIC") endif() # Handle MSVC runtime library for CUDA to support static CRT linking. # CMake's default CUDA flags use /MD (dynamic), but if the user is building # with static CRT (/MT), we need to override the CUDA flags to match. if(IS_MSVC) # Detect the runtime library from CMAKE_MSVC_RUNTIME_LIBRARY or CXX flags set(_COLMAP_USE_STATIC_RUNTIME OFF) if(DEFINED CMAKE_MSVC_RUNTIME_LIBRARY) if(CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "MultiThreaded" AND NOT CMAKE_MSVC_RUNTIME_LIBRARY MATCHES "DLL") set(_COLMAP_USE_STATIC_RUNTIME ON) endif() elseif(CMAKE_CXX_FLAGS_DEBUG MATCHES "/MTd" OR CMAKE_CXX_FLAGS_RELEASE MATCHES "/MT[^d]" OR CMAKE_CXX_FLAGS MATCHES "/MT") set(_COLMAP_USE_STATIC_RUNTIME ON) endif() if(_COLMAP_USE_STATIC_RUNTIME) message(STATUS "CUDA: Using static MSVC runtime library (/MT)") # Replace /MD with /MT in CUDA flags for each build type foreach(_BUILD_TYPE DEBUG RELEASE RELWITHDEBINFO MINSIZEREL) if(DEFINED CMAKE_CUDA_FLAGS_${_BUILD_TYPE}) string(REPLACE "-MDd" "-MTd" CMAKE_CUDA_FLAGS_${_BUILD_TYPE} "${CMAKE_CUDA_FLAGS_${_BUILD_TYPE}}") string(REPLACE "-MD" "-MT" CMAKE_CUDA_FLAGS_${_BUILD_TYPE} "${CMAKE_CUDA_FLAGS_${_BUILD_TYPE}}") string(REPLACE "/MDd" "/MTd" CMAKE_CUDA_FLAGS_${_BUILD_TYPE} "${CMAKE_CUDA_FLAGS_${_BUILD_TYPE}}") string(REPLACE "/MD" "/MT" CMAKE_CUDA_FLAGS_${_BUILD_TYPE} "${CMAKE_CUDA_FLAGS_${_BUILD_TYPE}}") endif() endforeach() endif() unset(_COLMAP_USE_STATIC_RUNTIME) endif() message(STATUS "Enabling CUDA support (version: ${CUDAToolkit_VERSION}, " "archs: ${CMAKE_CUDA_ARCHITECTURES})") else() set(CUDA_ENABLED OFF) endif() if(ONNX_ENABLED) if(FETCH_ONNX) include(FetchContent) message(STATUS "Configuring onnxruntime...") set(ONNX_VERSION "1.24.4") # ONNX Runtime >= 1.22 GPU binaries are built with CUDA >= 12 if(ONNX_VERSION VERSION_GREATER_EQUAL "1.22" AND CUDA_ENABLED AND CUDA_FOUND AND CUDAToolkit_VERSION VERSION_LESS "12.0") message(WARNING "ONNX Runtime ${ONNX_VERSION} GPU binary is built with CUDA >= 12, " "but CUDA ${CUDAToolkit_VERSION} was detected. The ONNX Runtime CUDA " "execution provider may fail at runtime, CPU execution will continue to work. " "Consider upgrading CUDA to >= 12 or using a source-built onnxruntime.") endif() if(IS_MACOS) if(CMAKE_OSX_ARCHITECTURES) set(_COLMAP_MACOS_ARCH ${CMAKE_OSX_ARCHITECTURES}) else() set(_COLMAP_MACOS_ARCH ${CMAKE_SYSTEM_PROCESSOR}) endif() if(_COLMAP_MACOS_ARCH STREQUAL "x86_64") message(FATAL_ERROR "x86_64 is not supported for onnxruntime") else() FetchContent_Declare(onnxruntime URL https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-osx-arm64-${ONNX_VERSION}.tgz URL_HASH SHA256=93787795f47e1eee369182e43ed51b9e5da0878ab0346aecf4258979b8bba989 ${_fetch_content_declare_args} ) endif() elseif(IS_LINUX) if(IS_ARM64) FetchContent_Declare(onnxruntime URL https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-linux-aarch64-${ONNX_VERSION}.tgz URL_HASH SHA256=866109a9248d057671a039b9d725be4bd86888e3754140e6701ec621be9d4d7e ${_fetch_content_declare_args} ) else() if(CUDA_ENABLED) FetchContent_Declare(onnxruntime URL https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-linux-x64-gpu-${ONNX_VERSION}.tgz URL_HASH SHA256=c5f804ff5d239b436fa59e9f2fb288a39f7eb9552f6a636c8b71e792e91a8808 ${_fetch_content_declare_args} ) else() FetchContent_Declare(onnxruntime URL https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-linux-x64-${ONNX_VERSION}.tgz URL_HASH SHA256=3a211fbea252c1e66290658f1b735b772056149f28321e71c308942cdb54b747 ${_fetch_content_declare_args} ) endif() endif() elseif(IS_WINDOWS) FetchContent_Declare(onnxruntime URL https://github.com/microsoft/onnxruntime/releases/download/v${ONNX_VERSION}/onnxruntime-win-x64-gpu-${ONNX_VERSION}.zip URL_HASH SHA256=ef3337a0b8184eb8beec310f7c83bd50376b3eefc43aab84ac8e452f6987df0a ${_fetch_content_declare_args} ) endif() FetchContent_MakeAvailable(onnxruntime) set(ONNX_INCLUDE_DIR ${onnxruntime_BINARY_DIR}/include/onnxruntime) if(NOT EXISTS ${ONNX_INCLUDE_DIR}) file(MAKE_DIRECTORY ${ONNX_INCLUDE_DIR}) file(COPY ${onnxruntime_SOURCE_DIR}/include/ DESTINATION ${ONNX_INCLUDE_DIR}/) endif() set(onnxruntime_LIB_DIR ${onnxruntime_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) if(NOT EXISTS ${onnxruntime_LIB_DIR}) file(MAKE_DIRECTORY ${onnxruntime_LIB_DIR}) file(COPY ${onnxruntime_SOURCE_DIR}/lib/ DESTINATION ${onnxruntime_LIB_DIR}) file(REMOVE_RECURSE ${onnxruntime_LIB_DIR}/cmake) file(REMOVE_RECURSE ${onnxruntime_LIB_DIR}/pkgconfig) endif() if(NOT IS_WINDOWS) set(ONNX_DATA_DIR ${onnxruntime_BINARY_DIR}/share/onnxruntime) if(NOT EXISTS ${ONNX_DATA_DIR}) file(MAKE_DIRECTORY ${ONNX_DATA_DIR}) file(COPY ${onnxruntime_SOURCE_DIR}/lib/cmake/onnxruntime/ DESTINATION ${ONNX_DATA_DIR}/cmake/) file(REMOVE_RECURSE ${onnxruntime_SOURCE_DIR}/lib/cmake) # The downloaded cmake configs may reference lib64/ (e.g. on Linux x64), # but the actual install directory depends on CMAKE_INSTALL_LIBDIR # (lib/ or lib64/ depending on the distro). Patch the configs to match. if(IS_LINUX AND NOT IS_ARM64) file(GLOB _onnx_cmake_configs "${ONNX_DATA_DIR}/cmake/*.cmake") foreach(_config_file ${_onnx_cmake_configs}) file(READ "${_config_file}" _config_content) string(REPLACE "/lib64/" "/${CMAKE_INSTALL_LIBDIR}/" _config_content "${_config_content}") file(WRITE "${_config_file}" "${_config_content}") endforeach() endif() endif() set(onnxruntime_CONFIG_DIR_HINTS ${ONNX_DATA_DIR}/cmake CACHE PATH "ONNX Runtime config directory hints") endif() set(onnxruntime_INCLUDE_DIR_HINTS ${onnxruntime_BINARY_DIR}/include CACHE PATH "ONNX Runtime include directory hints") set(onnxruntime_LIBRARY_DIR_HINTS ${onnxruntime_BINARY_DIR}/lib CACHE PATH "ONNX Runtime library directory hints") find_package(onnxruntime ${COLMAP_FIND_TYPE}) install(DIRECTORY "${onnxruntime_BINARY_DIR}/include/" TYPE INCLUDE) if(IS_WINDOWS) # On Windows, selectively install Libs to lib/. Always install core Libs. # For not supporting TensorRT/ROCM/etc. as a runtime, so not installing it intentionally. install(FILES "${onnxruntime_LIB_DIR}/onnxruntime.lib" "${onnxruntime_LIB_DIR}/onnxruntime_providers_shared.lib" TYPE LIB) # Only install CUDA provider Lib if CUDA is enabled. if(CUDA_ENABLED) install(FILES "${onnxruntime_LIB_DIR}/onnxruntime_providers_cuda.lib" TYPE LIB) endif() # On Windows, selectively install DLLs to bin/. Always install core DLLs. # For not supporting TensorRT/ROCM/etc. as a runtime, so not installing it intentionally. install(FILES "${onnxruntime_LIB_DIR}/onnxruntime.dll" "${onnxruntime_LIB_DIR}/onnxruntime_providers_shared.dll" TYPE BIN) # Only install CUDA provider DLL if CUDA is enabled. if(CUDA_ENABLED) install(FILES "${onnxruntime_LIB_DIR}/onnxruntime_providers_cuda.dll" TYPE BIN) endif() else() # On Linux/macOS, selectively install library files. Always install core libraries. # Not supporting TensorRT/ROCM/etc. as a runtime, so not installing them. if(IS_MACOS) file(GLOB onnxruntime_CORE_LIBS "${onnxruntime_LIB_DIR}/libonnxruntime.dylib" "${onnxruntime_LIB_DIR}/libonnxruntime.*.dylib" "${onnxruntime_LIB_DIR}/libonnxruntime_providers_shared.dylib") install(FILES ${onnxruntime_CORE_LIBS} TYPE LIB) else() file(GLOB onnxruntime_CORE_LIBS "${onnxruntime_LIB_DIR}/libonnxruntime.so*" "${onnxruntime_LIB_DIR}/libonnxruntime_providers_shared.so*") install(FILES ${onnxruntime_CORE_LIBS} TYPE LIB) # Only install CUDA provider if CUDA is enabled. if(CUDA_ENABLED) file(GLOB onnxruntime_CUDA_LIBS "${onnxruntime_LIB_DIR}/libonnxruntime_providers_cuda.so*") install(FILES ${onnxruntime_CUDA_LIBS} TYPE LIB) endif() endif() endif() if(EXISTS "${onnxruntime_BINARY_DIR}/share") install(DIRECTORY "${onnxruntime_BINARY_DIR}/share/" TYPE DATA) endif() message(STATUS "Configuring onnxruntime... done") else() find_package(onnxruntime ${COLMAP_FIND_TYPE}) if(NOT onnxruntime_FOUND) message(STATUS "Disabling ONNX support (not found)") set(ONNX_ENABLED OFF) endif() endif() else() message(STATUS "Disabling ONNX support") endif() if(TARGET onnxruntime::onnxruntime) list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_ONNX_ENABLED) message(STATUS "Enabling ONNX support") endif() if(GUI_ENABLED) find_package(QT NAMES Qt5 Qt6 REQUIRED) set(COLMAP_QT_COMPONENTS Core OpenGL Svg Widgets) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) list(APPEND COLMAP_QT_COMPONENTS OpenGLWidgets) endif() find_package(Qt${QT_VERSION_MAJOR} ${COLMAP_FIND_TYPE} COMPONENTS ${COLMAP_QT_COMPONENTS}) message(STATUS "Found Qt") message(STATUS " Module : ${Qt${QT_VERSION_MAJOR}Core_DIR}") message(STATUS " Module : ${Qt${QT_VERSION_MAJOR}OpenGL_DIR}") message(STATUS " Module : ${Qt${QT_VERSION_MAJOR}Svg_DIR}") message(STATUS " Module : ${Qt${QT_VERSION_MAJOR}Widgets_DIR}") if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) message(STATUS " Module : ${Qt${QT_VERSION_MAJOR}OpenGLWidgets_DIR}") endif() if(Qt5_FOUND) # Qt5 was built with -reduce-relocations. if(Qt5_POSITION_INDEPENDENT_CODE) set(CMAKE_POSITION_INDEPENDENT_CODE ON) # Workaround for Qt5 CMake config bug under Ubuntu 20.04: https://gitlab.kitware.com/cmake/cmake/-/issues/16915 if(TARGET Qt5::Core) get_property(core_options TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_OPTIONS) string(REPLACE "-fPIC" "" new_qt5_core_options "${core_options}") set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_OPTIONS ${new_qt5_core_options}) set_property(TARGET Qt5::Core PROPERTY INTERFACE_POSITION_INDEPENDENT_CODE "ON") if(NOT IS_MSVC) set(CMAKE_CXX_COMPILE_OPTIONS_PIE "-fPIC") endif() endif() endif() endif() if(QT_FOUND) # Enable automatic compilation of Qt resource files. set(CMAKE_AUTORCC ON) endif() endif() if(GUI_ENABLED AND Qt${QT_VERSION_MAJOR}_FOUND) list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_GUI_ENABLED) message(STATUS "Enabling GUI support") else() set(GUI_ENABLED OFF) message(STATUS "Disabling GUI support") endif() if(MVS_ENABLED) list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_MVS_ENABLED) message(STATUS "Enabling MVS support") else() message(STATUS "Disabling MVS support") endif() if(OPENGL_ENABLED) if(NOT GUI_ENABLED) message(STATUS "Disabling GUI also disables OpenGL") set(OPENGL_ENABLED OFF) else() message(STATUS "Enabling OpenGL support") endif() else() message(STATUS "Disabling OpenGL support") endif() set(GPU_ENABLED OFF) if(OPENGL_ENABLED OR CUDA_ENABLED) list(APPEND COLMAP_COMPILE_DEFINITIONS COLMAP_GPU_ENABLED) message(STATUS "Enabling GPU support (OpenGL: ${OPENGL_ENABLED}, CUDA: ${CUDA_ENABLED})") set(GPU_ENABLED ON) endif() colmap-4.1.1/cmake/FindGlew.cmake000066400000000000000000000067621522646662000165750ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package module for Glew library. # # The following variables are set by this module: # # GLEW_FOUND: TRUE if Glew is found. # GLEW::GLEW: Imported target to link against. # # The following variables control the behavior of this module: # # GLEW_INCLUDE_DIR_HINTS: List of additional directories in which to # search for Glew includes. # GLEW_LIBRARY_DIR_HINTS: List of additional directories in which to # search for Glew libraries. set(GLEW_INCLUDE_DIR_HINTS "" CACHE PATH "Glew include directory") set(GLEW_LIBRARY_DIR_HINTS "" CACHE PATH "Glew library directory") unset(GLEW_FOUND) unset(GLEW_INCLUDE_DIRS) unset(GLEW_LIBRARIES) find_package(Glew CONFIG QUIET) if(TARGET GLEW::GLEW) set(GLEW_FOUND TRUE) message(STATUS "Found Glew") message(STATUS " Target : GLEW::GLEW") else() find_path(GLEW_INCLUDE_DIRS NAMES GL/glew.h PATHS ${GLEW_INCLUDE_DIR_HINTS} /usr/include /usr/local/include /sw/include /opt/include /opt/local/include) find_library(GLEW_LIBRARIES NAMES GLEW Glew glew glew32 PATHS ${GLEW_LIBRARY_DIR_HINTS} /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /sw/lib /opt/lib /opt/local/lib) if(GLEW_INCLUDE_DIRS AND GLEW_LIBRARIES) set(GLEW_FOUND TRUE) message(STATUS "Found Glew") message(STATUS " Includes : ${GLEW_INCLUDE_DIRS}") message(STATUS " Libraries : ${GLEW_LIBRARIES}") else() set(GLEW_FOUND FALSE) endif() add_library(GLEW::GLEW INTERFACE IMPORTED) target_include_directories( GLEW::GLEW INTERFACE ${GLEW_INCLUDE_DIRS}) target_link_libraries( GLEW::GLEW INTERFACE ${GLEW_LIBRARIES}) endif() if(NOT GLEW_FOUND AND GLEW_FIND_REQUIRED) message(FATAL_ERROR "Could not find Glew") endif() colmap-4.1.1/cmake/FindGlog.cmake000066400000000000000000000101261522646662000165540ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package module for Glog library. # # The following variables are set by this module: # # GLOG_FOUND: TRUE if Glog is found. # glog::glog: Imported target to link against. # # The following variables control the behavior of this module: # # GLOG_INCLUDE_DIR_HINTS: List of additional directories in which to # search for Glog includes. # GLOG_LIBRARY_DIR_HINTS: List of additional directories in which to # search for Glog libraries. set(GLOG_INCLUDE_DIR_HINTS "" CACHE PATH "Glog include directory") set(GLOG_LIBRARY_DIR_HINTS "" CACHE PATH "Glog library directory") unset(GLOG_FOUND) find_package(glog CONFIG QUIET) if(TARGET glog::glog) set(GLOG_FOUND TRUE) message(STATUS "Found Glog") message(STATUS " Target : glog::glog") else() # Older versions of glog don't come with a find_package config. # Fall back to custom logic to find the library and remap to imported target. include(FindPackageHandleStandardArgs) list(APPEND GLOG_CHECK_INCLUDE_DIRS /usr/local/include /usr/local/homebrew/include /opt/local/var/macports/software /opt/local/include /usr/include) list(APPEND GLOG_CHECK_PATH_SUFFIXES glog/include glog/Include Glog/include Glog/Include src/windows) list(APPEND GLOG_CHECK_LIBRARY_DIRS /usr/local/lib /usr/local/homebrew/lib /opt/local/lib /usr/lib) list(APPEND GLOG_CHECK_LIBRARY_SUFFIXES glog/lib glog/Lib Glog/lib Glog/Lib x64/Release) find_path(GLOG_INCLUDE_DIRS NAMES glog/logging.h PATHS ${GLOG_INCLUDE_DIR_HINTS} ${GLOG_CHECK_INCLUDE_DIRS} PATH_SUFFIXES ${GLOG_CHECK_PATH_SUFFIXES}) find_library(GLOG_LIBRARIES NAMES glog libglog PATHS ${GLOG_LIBRARY_DIR_HINTS} ${GLOG_CHECK_LIBRARY_DIRS} PATH_SUFFIXES ${GLOG_CHECK_LIBRARY_SUFFIXES}) if(GLOG_INCLUDE_DIRS AND GLOG_LIBRARIES) set(GLOG_FOUND TRUE) message(STATUS "Found Glog") message(STATUS " Includes : ${GLOG_INCLUDE_DIRS}") message(STATUS " Libraries : ${GLOG_LIBRARIES}") endif() add_library(glog::glog INTERFACE IMPORTED) target_include_directories(glog::glog INTERFACE ${GLOG_INCLUDE_DIRS}) target_link_libraries(glog::glog INTERFACE ${GLOG_LIBRARIES}) endif() if(NOT GLOG_FOUND AND GLOG_FIND_REQUIRED) message(FATAL_ERROR "Could not find Glog") endif() colmap-4.1.1/cmake/FindMetis.cmake000066400000000000000000000073071522646662000167540ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package module for Metis library. # # The following variables are set by this module: # # METIS_FOUND: TRUE if Metis is found. # metis: Imported target to link against. # # The following variables control the behavior of this module: # # METIS_INCLUDE_DIR_HINTS: List of additional directories in which to # search for Metis includes. # METIS_LIBRARY_DIR_HINTS: List of additional directories in which to # search for Metis libraries. set(METIS_INCLUDE_DIR_HINTS "" CACHE PATH "Metis include directory") set(METIS_LIBRARY_DIR_HINTS "" CACHE PATH "Metis library directory") unset(METIS_FOUND) find_package(metis CONFIG QUIET) if(TARGET metis) set(METIS_FOUND TRUE) message(STATUS "Found Metis") message(STATUS " Target : metis") else() list(APPEND METIS_CHECK_INCLUDE_DIRS ${METIS_INCLUDE_DIR_HINTS} /usr/include /usr/local/include /opt/include /opt/local/include ) list(APPEND METIS_CHECK_LIBRARY_DIRS ${METIS_LIBRARY_DIR_HINTS} /usr/lib /usr/local/lib /opt/lib /opt/local/lib ) find_path(METIS_INCLUDE_DIRS NAMES metis.h PATHS ${METIS_CHECK_INCLUDE_DIRS}) find_library(METIS_LIBRARIES NAMES metis PATHS ${METIS_CHECK_LIBRARY_DIRS}) find_library(GK_LIBRARIES NAMES GKlib PATHS ${METIS_CHECK_LIBRARY_DIRS}) if(GK_LIBRARIES) set(METIS_LIBRARIES ${METIS_LIBRARIES} ${GK_LIBRARIES}) message(STATUS "Found GKlib") endif() if(METIS_INCLUDE_DIRS AND METIS_LIBRARIES) set(METIS_FOUND TRUE) message(STATUS "Found Metis") message(STATUS " Includes : ${METIS_INCLUDE_DIRS}") message(STATUS " Libraries : ${METIS_LIBRARIES}") endif() add_library(metis INTERFACE IMPORTED) target_include_directories( metis INTERFACE ${METIS_INCLUDE_DIRS}) target_link_libraries( metis INTERFACE ${METIS_LIBRARIES}) endif() if(NOT METIS_FOUND AND METIS_FIND_REQUIRED) message(FATAL_ERROR "Could not find Metis") endif() colmap-4.1.1/cmake/Findonnxruntime.cmake000066400000000000000000000133421522646662000202550ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package module for onnxruntime library. # # The following variables are set by this module: # # onnxruntime_FOUND: TRUE if onnxruntime is found. # onnxruntime::onnxruntime: Imported target to link against. # # The following variables control the behavior of this module: # # onnxruntime_CONFIG_DIR_HINTS: List of additional directories in which to # search for onnxruntime CMake configs. # onnxruntime_INCLUDE_DIR_HINTS: List of additional directories in which to # search for onnxruntime includes. # onnxruntime_LIBRARY_DIR_HINTS: List of additional directories in which to # search for onnxruntime libraries. set(onnxruntime_CONFIG_DIR_HINTS "" CACHE PATH "onnxruntime config directory") set(onnxruntime_INCLUDE_DIR_HINTS "" CACHE PATH "onnxruntime include directory") set(onnxruntime_LIBRARY_DIR_HINTS "" CACHE PATH "onnxruntime library directory") unset(onnxruntime_FOUND) unset(onnxruntime_INCLUDE_DIRS) unset(onnxruntime_LIBRARIES) find_package(onnxruntime CONFIG QUIET PATHS ${onnxruntime_CONFIG_DIR_HINTS}) if(TARGET onnxruntime::onnxruntime) set(onnxruntime_FOUND TRUE) message(STATUS "Found onnxruntime") message(STATUS " Target : onnxruntime::onnxruntime") else() find_path(onnxruntime_INCLUDE_DIRS NAMES onnxruntime/onnxruntime_cxx_api.h PATHS ${onnxruntime_INCLUDE_DIR_HINTS} /usr/include /usr/local/include /sw/include /opt/include /opt/local/include) list(APPEND onnxruntime_LIBRARY_DIR_HINTS /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib /sw/lib /opt/lib /opt/local/lib) find_library(onnxruntime_LIBRARIES NAMES onnxruntime libonnxruntime PATHS ${onnxruntime_LIBRARY_DIR_HINTS}) find_library(onnxruntime_PROVIDERS_SHARED_LIBRARY NAMES onnxruntime_providers_shared libonnxruntime_providers_shared PATHS ${onnxruntime_LIBRARY_DIR_HINTS}) if(CUDA_ENABLED) find_library(onnxruntime_PROVIDERS_CUDA_LIBRARY NAMES onnxruntime_providers_cuda libonnxruntime_providers_cuda PATHS ${onnxruntime_LIBRARY_DIR_HINTS}) endif() if(onnxruntime_INCLUDE_DIRS AND onnxruntime_LIBRARIES) if(onnxruntime_PROVIDERS_SHARED_LIBRARY) list(APPEND onnxruntime_LIBRARIES ${onnxruntime_PROVIDERS_SHARED_LIBRARY}) endif() if(onnxruntime_PROVIDERS_CUDA_LIBRARY) list(APPEND onnxruntime_LIBRARIES ${onnxruntime_PROVIDERS_CUDA_LIBRARY}) endif() set(onnxruntime_FOUND TRUE) message(STATUS "Found onnxruntime") message(STATUS " Includes : ${onnxruntime_INCLUDE_DIRS}") message(STATUS " Libraries : ${onnxruntime_LIBRARIES}") else() set(onnxruntime_FOUND FALSE) endif() add_library(onnxruntime::onnxruntime INTERFACE IMPORTED) target_include_directories( onnxruntime::onnxruntime INTERFACE ${onnxruntime_INCLUDE_DIRS}/onnxruntime) target_link_libraries( onnxruntime::onnxruntime INTERFACE ${onnxruntime_LIBRARIES}) # This is a hack to make sure that the onnxruntime dll is copied to the output directory, # since vcpkg's custom add_library/add_executable macros copy any dependencies from vcpkg's # installed directory to the output directory. # See: https://github.com/microsoft/vcpkg/blob/fb7ba3b89b0d8e3e56b0508a144fe85015edfab6/scripts/buildsystems/vcpkg.cmake#L607 if(IS_WINDOWS AND VCPKG_INSTALLED_DIR) foreach(_lib ${onnxruntime_LIBRARIES}) get_filename_component(_lib_dir "${_lib}" DIRECTORY) get_filename_component(_lib_name "${_lib}" NAME_WE) set(_dlls "${_lib_dir}/${_lib_name}.dll" "${_lib_dir}/../bin/${_lib_name}.dll") foreach(_dll ${_dlls}) if( EXISTS "${_dll}" ) file(COPY "${_dll}" DESTINATION "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/bin") endif() endforeach() endforeach() endif() endif() if(NOT onnxruntime_FOUND AND onnxruntime_FIND_REQUIRED) message(FATAL_ERROR "Could not find onnxruntime") endif() colmap-4.1.1/cmake/GenerateVersionDefinitions.cmake000066400000000000000000000057341522646662000223700ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. if (DEFINED GIT_COMMIT_ID OR DEFINED GIT_COMMIT_DATE) message(STATUS "Using custom-defined GIT_COMMIT_ID (${GIT_COMMIT_ID}) " "and GIT_COMMIT_DATE (${GIT_COMMIT_DATE})") elseif(Git_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.git") execute_process(COMMAND "${GIT_EXECUTABLE}" rev-parse --short HEAD WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_COMMIT_ID ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) execute_process(COMMAND "${GIT_EXECUTABLE}" log -1 --format=%ad --date=short WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_COMMIT_DATE ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) # Re-generate version.cc if the git index changes. set_property( DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/.git/index" ) else() set(GIT_COMMIT_ID "Unknown") set(GIT_COMMIT_DATE "Unknown") endif() # Parse COLMAP_VERSION to extract MAJOR, MINOR, PATCH components. string(REGEX MATCH "^([0-9]+)\\.([0-9]+)\\.([0-9]+)" _version_match "${COLMAP_VERSION}") set(COLMAP_VERSION_MAJOR "${CMAKE_MATCH_1}") set(COLMAP_VERSION_MINOR "${CMAKE_MATCH_2}") set(COLMAP_VERSION_PATCH "${CMAKE_MATCH_3}") configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/colmap/util/version.cc.in" "${CMAKE_CURRENT_SOURCE_DIR}/src/colmap/util/version.cc") colmap-4.1.1/cmake/colmap-config-version.cmake.in000066400000000000000000000034141522646662000216730ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(PACKAGE_VERSION "@COLMAP_VERSION@") if("${PACKAGE_VERSION}" VERSION_EQUAL "${PACKAGE_FIND_VERSION}") set(PACKAGE_VERSION_COMPATIBLE TRUE) else() set(PACKAGE_VERSION_COMPATIBLE FALSE) endif() colmap-4.1.1/cmake/colmap-config.cmake.in000066400000000000000000000071751522646662000202200ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Find package config for COLMAP library. # # The following variables are set by this config: # # COLMAP_FOUND: TRUE if COLMAP is found. # COLMAP_VERSION: COLMAP version. # # The colmap::colmap imported interface target is defined. @PACKAGE_INIT@ set(COLMAP_FOUND FALSE) # Set hints for finding dependency packages. set(METIS_INCLUDE_DIR_HINTS @METIS_INCLUDE_DIR_HINTS@) set(METIS_LIBRARY_DIR_HINTS @METIS_LIBRARY_DIR_HINTS@) set(GLEW_INCLUDE_DIR_HINTS @GLEW_INCLUDE_DIR_HINTS@) set(GLEW_LIBRARY_DIR_HINTS @GLEW_LIBRARY_DIR_HINTS@) set(GLOG_INCLUDE_DIR_HINTS @GLOG_INCLUDE_DIR_HINTS@) set(GLOG_LIBRARY_DIR_HINTS @GLOG_LIBRARY_DIR_HINTS@) set(CryptoPP_INCLUDE_DIR_HINTS @CryptoPP_INCLUDE_DIR_HINTS@) set(CryptoPP_LIBRARY_DIR_HINTS @CryptoPP_LIBRARY_DIR_HINTS@) # Find dependency packages. set(TEMP_CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH ${PACKAGE_PREFIX_DIR}/share/colmap/cmake) # Set the exported variables. set(COLMAP_FOUND TRUE) set(COLMAP_VERSION @COLMAP_VERSION@) set(OPENMP_ENABLED @OPENMP_ENABLED@) set(CUDA_ENABLED @CUDA_ENABLED@) set(CUDA_MIN_VERSION @CUDA_MIN_VERSION@) set(ONNX_ENABLED @ONNX_ENABLED@) set(DOWNLOAD_ENABLED @DOWNLOAD_ENABLED@) set(GUI_ENABLED @GUI_ENABLED@) set(CGAL_ENABLED @CGAL_ENABLED@) set(MVS_ENABLED @MVS_ENABLED@) set(LSD_ENABLED @LSD_ENABLED@) set(FETCH_POSELIB @FETCH_POSELIB@) set(FETCH_FAISS @FETCH_FAISS@) set(FETCH_ONNX FALSE) if(@FETCH_ONNX@) if(ONNX_ENABLED AND EXISTS ${PACKAGE_PREFIX_DIR}/share/onnxruntime/cmake) set(onnxruntime_DIR ${PACKAGE_PREFIX_DIR}/share/onnxruntime/cmake) endif() set(onnxruntime_INCLUDE_DIR_HINTS ${PACKAGE_PREFIX_DIR}/include CACHE PATH "ONNX Runtime include directory hints") set(onnxruntime_LIBRARY_DIR_HINTS ${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_LIBDIR@ CACHE PATH "ONNX Runtime library directory hints") endif() include(${PACKAGE_PREFIX_DIR}/share/colmap/colmap-targets.cmake) include(${PACKAGE_PREFIX_DIR}/share/colmap/cmake/FindDependencies.cmake) check_required_components(colmap) # Reset to previous value set(CMAKE_MODULE_PATH ${TEMP_CMAKE_MODULE_PATH}) colmap-4.1.1/doc/000077500000000000000000000000001522646662000135465ustar00rootroot00000000000000colmap-4.1.1/doc/COLMAP.desktop000066400000000000000000000003601522646662000161130ustar00rootroot00000000000000[Desktop Entry] Name=COLMAP Comment=Structure-from-Motion and Multi-View Stereo Exec=colmap gui Icon=colmap Terminal=false Categories=Graphics;3DGraphics; Keywords=3d;reconstruction;structure-from-motion;multi-view-stereo; Type=Application colmap-4.1.1/doc/Makefile000077500000000000000000000151521522646662000152150ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build # User-friendly check for sphinx-build ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) $(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) endif # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . # the i18n builder cannot share the environment and doctrees with the others I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" @echo " text to make text files" @echo " man to make manual pages" @echo " texinfo to make Texinfo files" @echo " info to make Texinfo files and run them through makeinfo" @echo " gettext to make PO message catalogs" @echo " changes to make an overview of all changed/added/deprecated items" @echo " xml to make Docutils-native XML files" @echo " pseudoxml to make pseudoxml-XML files for display purposes" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: rm -rf $(BUILDDIR)/* html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/COLMAP.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/COLMAP.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/COLMAP" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/COLMAP" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." $(MAKE) -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." latexpdfja: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through platex and dvipdfmx..." $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." texinfo: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." @echo "Run \`make' in that directory to run these through makeinfo" \ "(use \`make info' here to do that automatically)." info: $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo @echo "Running Texinfo files through makeinfo..." make -C $(BUILDDIR)/texinfo info @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." gettext: $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale @echo @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." xml: $(SPHINXBUILD) -b xml $(ALLSPHINXOPTS) $(BUILDDIR)/xml @echo @echo "Build finished. The XML files are in $(BUILDDIR)/xml." pseudoxml: $(SPHINXBUILD) -b pseudoxml $(ALLSPHINXOPTS) $(BUILDDIR)/pseudoxml @echo @echo "Build finished. The pseudo-XML files are in $(BUILDDIR)/pseudoxml." colmap-4.1.1/doc/_static/000077500000000000000000000000001522646662000151745ustar00rootroot00000000000000colmap-4.1.1/doc/_static/custom.css000066400000000000000000000007551522646662000172270ustar00rootroot00000000000000/* Restore version display removed in sphinx-rtd-theme 3.x. */ .wy-side-nav-search > div.version { margin-top: -.4045em; margin-bottom: .809em; font-weight: normal; color: hsla(0, 0%, 100%, .3); } /* Fixes https://github.com/readthedocs/sphinx_rtd_theme/issues/1301#issuecomment-1876120817 */ .py.property { display: block !important; } /* Better display of multi-line signatures. */ dt.sig > dl > dd { margin-bottom: 0px; } dt.sig > dl { margin-bottom: 0px; } colmap-4.1.1/doc/_templates/000077500000000000000000000000001522646662000157035ustar00rootroot00000000000000colmap-4.1.1/doc/_templates/layout.html000066400000000000000000000011451522646662000201070ustar00rootroot00000000000000{% extends "!layout.html" %} {% block sidebartitle %} {%- set _logo_url = logo_url|default(pathto('_static/' + (logo or ""), 1)) %} {%- set _root_doc = root_doc|default(master_doc) %} {% if not theme_logo_only %}{{ project }}{% endif %} {%- if logo or logo_url %} {%- endif %} {%- if version %}
{{ version }}
{%- endif %} {%- include "searchbox.html" %} {% endblock %} colmap-4.1.1/doc/bibliography.rst000077500000000000000000000050161522646662000167600ustar00rootroot00000000000000Bibliography ============ .. [schoenberger_thesis] Johannes L. Schönberger. "Robust Methods for Accurate and Efficient 3D Modeling from Unstructured Imagery." ETH Zürich, 2018. .. [furukawa10] Furukawa, Yasutaka, and Jean Ponce. "Accurate, dense, and robust multiview stereopsis." Transactions on Pattern Analysis and Machine Intelligence, 2010. .. [caspar] Martens, Emil and Miller, Aaron and Varnum, Matias and Stahl, Annette. "Caspar: CUDA Accelerator for Symbolic Programming with Adaptive Reordering." International Conference on Robotics and Automation (ICRA), 2026. .. [cohen-steiner2004] Cohen-Steiner, David, and Da, Franck. "A greedy Delaunay-based surface reconstruction algorithm." The Visual Computer, 2004. .. [garland1997] Garland, Michael, and Heckbert, Paul S. "Surface simplification using quadric error metrics." Proceedings of SIGGRAPH, 1997. .. [hofer16] Hofer, M., Maurer, M., and Bischof, H. Efficient 3D Scene Abstraction Using Line Segments, Computer Vision and Image Understanding, 2016. .. [jancosek11] Jancosek, Michal, and Tomás Pajdla. "Multi-view reconstruction preserving weakly-supported surfaces." Conference on Computer Vision and Pattern Recognition, 2011. .. [kazhdan2013] Kazhdan, Michael and Hoppe, Hugues "Screened poisson surface reconstruction." ACM Transactions on Graphics (TOG), 2013. .. [schoenberger16sfm] Schönberger, Johannes Lutz and Frahm, Jan-Michael. "Structure-from-Motion Revisited." Conference on Computer Vision and Pattern Recognition, 2016. .. [schoenberger16mvs] Schönberger, Johannes Lutz and Zheng, Enliang and Pollefeys, Marc and Frahm, Jan-Michael. "Pixelwise View Selection for Unstructured Multi-View Stereo." European Conference on Computer Vision, 2016. .. [schoenberger16vote] Schönberger, Johannes Lutz and Price, True and Sattler, Torsten and Frahm, Jan-Michael and Pollefeys, Marc "A Vote­-and­-Verify Strategy for Fast Spatial Verification in Image Retrieval." Asian Conference on Computer Vision, 2016. .. [lowe04] Lowe, David G. "Distinctive image features from scale-invariant keypoints". International journal of computer vision 60.2 (2004): 91-110. .. [waechter2014] Waechter, Michael and Moehrle, Nils and Goesele, Michael. "Let there be color! Large-scale texturing of 3D reconstructions." European Conference on Computer Vision, 2014. .. [wu13] Wu, Changchang. "Towards linear-time incremental structure from motion." International Conference 3D Vision, 2013. colmap-4.1.1/doc/cameras.rst000066400000000000000000000070021522646662000157120ustar00rootroot00000000000000Camera Models ============= COLMAP implements different camera models of varying complexity. If no intrinsic parameters are known a priori, it is generally best to use the simplest camera model that is complex enough to model the distortion effects: - ``SIMPLE_PINHOLE``, ``PINHOLE``: Use these camera models, if your images are undistorted a priori. These use one and two focal length parameters, respectively. Note that even in the case of undistorted images, COLMAP could try to improve the intrinsics with a more complex camera model. - ``SIMPLE_RADIAL``, ``RADIAL``: This should be the camera model of choice, if the intrinsics are unknown and every image has a different camera calibration, e.g., in the case of Internet photos. Both models are simplified versions of the ``OPENCV`` model only modeling radial distortion effects with one and two parameters, respectively. - ``OPENCV``, ``FULL_OPENCV``: Use these camera models, if you know the calibration parameters a priori. You can also try to let COLMAP estimate the parameters, if you share the intrinsics for multiple images. Note that the automatic estimation of parameters will most likely fail, if every image has a separate set of intrinsic parameters. - ``SIMPLE_RADIAL_FISHEYE``, ``RADIAL_FISHEYE``, ``OPENCV_FISHEYE``, ``FOV``, ``THIN_PRISM_FISHEYE``, ``RAD_TAN_THIN_PRISM_FISHEYE``: Use these camera models for fisheye lenses and note that all other models are not really capable of modeling the distortion effects of fisheye lenses. The ``FOV`` model is used by Google Project Tango (make sure to not initialize ``omega`` to zero). - ``SIMPLE_FISHEYE``, ``FISHEYE``: Use these camera models for fisheye lenses with equidistant projection where distortion can be ignored or has been pre-corrected. These models use the equidistant projection (theta = atan(r)) without any distortion parameters. ``SIMPLE_FISHEYE`` has a single focal length (f), while ``FISHEYE`` has two (fx, fy). - ``SIMPLE_DIVISION``, ``DIVISION``: Use these camera models, if you know the calibration parameters a priori. Similar to ``SIMPLE_RADIAL`` and ``RADIAL`` models, they can model simple radial distortion effects. The two models have first-order local equivalence for small distortions. - ``EUCM``: Use this camera model for wide-angle fisheye cameras and catadioptric systems. It represents radial distortion using two parameters in addition to the standard pinhole parameters. You can inspect the estimated intrinsic parameters by double-clicking specific images in the model viewer or by exporting the model and opening the ``cameras.txt`` file. To achieve optimal reconstruction results, you might have to try different camera models for your problem. Generally, when the reconstruction fails and the estimated focal length values / distortion coefficients are grossly wrong, it is a sign of using a too complex camera model. Contrary, if COLMAP uses many iterative local and global bundle adjustments, it is a sign of using a too simple camera model that is not able to fully model the distortion effects. You can also share intrinsics between multiple images to obtain more reliable results (see :ref:`Share intrinsic camera parameters `) or you can fix the intrinsic parameters during the reconstruction (see :ref:`Fix intrinsic camera parameters `). Please, refer to the camera models header file for information on the parameters of the different camera models: https://github.com/colmap/colmap/blob/main/src/colmap/sensor/models.h colmap-4.1.1/doc/changelog.rst000066400000000000000000000000561522646662000162300ustar00rootroot00000000000000.. _changelog: .. include:: ../CHANGELOG.rst colmap-4.1.1/doc/cli.rst000066400000000000000000000455201522646662000150550ustar00rootroot00000000000000.. _cli: Command-line Interface ====================== The command-line interface provides access to all of COLMAP's functionality for automated scripting. Each core functionality is implemented as a command to the ``colmap`` executable. Run ``colmap -h`` to list the available commands (or ``COLMAP.bat -h`` under Windows). Note that if you run COLMAP from the CMake build folder, the executable is located at ``./src/colmap/exe/colmap``. To start the graphical user interface, run ``colmap gui``. Example ------- Assuming you stored the images of your project in the following structure:: /path/to/project/... +── images │   +── image1.jpg │   +── image2.jpg │   +── ... │   +── imageN.jpg The command for the automatic reconstruction tool would be:: # The project folder must contain a folder "images" with all the images. $ DATASET_PATH=/path/to/project $ colmap automatic_reconstructor \ --workspace_path $DATASET_PATH \ --image_path $DATASET_PATH/images Note that any command lists all available options using the ``-h,--help`` command-line argument. In case you need more control over the individual parameters of the reconstruction process, you can execute the following sequence of commands as an alternative to the automatic reconstruction command:: # The project folder must contain a folder "images" with all the images. $ DATASET_PATH=/path/to/dataset $ colmap feature_extractor \ --database_path $DATASET_PATH/database.db \ --image_path $DATASET_PATH/images $ colmap exhaustive_matcher \ --database_path $DATASET_PATH/database.db $ mkdir -p $DATASET_PATH/sparse $ colmap mapper \ --database_path $DATASET_PATH/database.db \ --image_path $DATASET_PATH/images \ --output_path $DATASET_PATH/sparse $ mkdir -p $DATASET_PATH/dense $ colmap image_undistorter \ --image_path $DATASET_PATH/images \ --input_path $DATASET_PATH/sparse/0 \ --output_path $DATASET_PATH/dense \ --output_type COLMAP \ --max_image_size 2000 $ colmap patch_match_stereo \ --workspace_path $DATASET_PATH/dense \ --workspace_format COLMAP \ --PatchMatchStereo.geom_consistency true $ colmap stereo_fusion \ --workspace_path $DATASET_PATH/dense \ --workspace_format COLMAP \ --input_type geometric \ --output_path $DATASET_PATH/dense/fused.ply $ colmap poisson_mesher \ --input_path $DATASET_PATH/dense/fused.ply \ --output_path $DATASET_PATH/dense/meshed-poisson.ply $ colmap delaunay_mesher \ --input_path $DATASET_PATH/dense \ --output_path $DATASET_PATH/dense/meshed-delaunay.ply $ colmap advancing_front_mesher \ --input_path $DATASET_PATH/dense \ --output_path $DATASET_PATH/dense/meshed-advancing-front.ply # Optionally simplify a dense mesh to reduce its size. $ colmap mesh_simplifier \ --input_path $DATASET_PATH/dense/meshed-poisson.ply \ --output_path $DATASET_PATH/dense/meshed-poisson-simplified.ply \ --MeshSimplification.target_face_ratio 0.25 # Optionally texture a mesh using the undistorted images. $ colmap mesh_texturer \ --workspace_path $DATASET_PATH/dense \ --input_path $DATASET_PATH/dense/meshed-poisson.ply \ --output_path $DATASET_PATH/dense/textured To use the global SfM pipeline instead of the incremental mapper, replace the ``mapper`` step with ``global_mapper``. The global mapper depends on good focal length priors, so if reliable intrinsics are not available (e.g., from EXIF or lab calibration), you should run ``view_graph_calibrator`` first. This step is optional but recommended to improve the quality of global SfM, as was always the default in `GLOMAP `_. Note that ``view_graph_calibrator`` modifies camera intrinsics and two-view geometries in the database in-place, so it is recommended to work on a copy of the database:: $ colmap feature_extractor \ --database_path $DATASET_PATH/database.db \ --image_path $DATASET_PATH/images $ colmap exhaustive_matcher \ --database_path $DATASET_PATH/database.db # Optional but often needed: calibrate intrinsics from the view graph. # This modifies the database in-place, so work on a copy. $ cp $DATASET_PATH/database.db $DATASET_PATH/database_global.db $ colmap view_graph_calibrator \ --database_path $DATASET_PATH/database_global.db $ mkdir -p $DATASET_PATH/sparse $ colmap global_mapper \ --database_path $DATASET_PATH/database_global.db \ --image_path $DATASET_PATH/images \ --output_path $DATASET_PATH/sparse If you want to run COLMAP on a computer without an attached display (e.g., cluster or cloud service), COLMAP automatically switches to use CUDA if supported by your system. If no CUDA enabled device is available, you can manually select to use CPU-based feature extraction and matching by setting the ``--FeatureExtraction.use_gpu 0`` and ``--FeatureMatching.use_gpu 0`` options. Help ---- The available commands can be listed using the command:: $ colmap help Usage: colmap [command] [options] Documentation: https://colmap.github.io/ Example usage: colmap help [ -h, --help ] colmap gui colmap gui -h [ --help ] colmap automatic_reconstructor -h [ --help ] colmap automatic_reconstructor --image_path IMAGES --workspace_path WORKSPACE colmap feature_extractor --image_path IMAGES --database_path DATABASE colmap exhaustive_matcher --database_path DATABASE colmap mapper --image_path IMAGES --database_path DATABASE --output_path MODEL ... Available commands: help gui automatic_reconstructor bundle_adjuster color_extractor database_cleaner database_creator database_merger delaunay_mesher exhaustive_matcher feature_extractor feature_importer geometric_verifier global_mapper guided_geometric_verifier hierarchical_mapper image_deleter image_filterer image_rectifier image_registrator image_undistorter image_undistorter_standalone mapper matches_importer mesh_simplifier mesh_texturer model_aligner model_analyzer model_clusterer model_comparer model_converter model_cropper model_merger model_orientation_aligner model_splitter model_transformer patch_match_stereo point_filtering point_triangulator pose_prior_mapper poisson_mesher project_generator rig_configurator rotation_averager sequential_matcher spatial_matcher stereo_fusion transitive_matcher view_graph_calibrator vocab_tree_builder vocab_tree_matcher vocab_tree_retriever And each command has a ``-h,--help`` command-line argument to show the usage and the available options, e.g.:: $ colmap feature_extractor -h Options can either be specified via command-line or by defining them in a .ini project file passed to ``--project_path``. -h [ --help ] --default_random_seed arg (=0) --log_target arg (=stderr_and_file) {stderr, stdout, file, stderr_and_file} --log_path arg --log_level arg (=0) --log_severity arg (=0) 0:INFO, 1:WARNING, 2:ERROR, 3:FATAL --log_color arg (=1) --project_path arg --database_path arg --image_path arg --camera_mode arg (=-1) --image_list_path arg --descriptor_normalization arg (=l1_root) {'l1_root', 'l2'} --ImageReader.mask_path arg --ImageReader.camera_model arg (=SIMPLE_RADIAL) --ImageReader.single_camera arg (=0) --ImageReader.single_camera_per_folder arg (=0) --ImageReader.single_camera_per_image arg (=0) --ImageReader.existing_camera_id arg (=-1) --ImageReader.camera_params arg --ImageReader.default_focal_length_factor arg (=1.2) --ImageReader.camera_mask_path arg --FeatureExtraction.type arg (=SIFT) --FeatureExtraction.max_image_size arg (=3200) --FeatureExtraction.num_threads arg (=-1) --FeatureExtraction.use_gpu arg (=1) --FeatureExtraction.gpu_index arg (=-1) --SiftExtraction.max_num_features arg (=8192) --SiftExtraction.first_octave arg (=-1) --SiftExtraction.num_octaves arg (=4) --SiftExtraction.octave_resolution arg (=3) --SiftExtraction.peak_threshold arg (=0.0066666666666666671) --SiftExtraction.edge_threshold arg (=10) --SiftExtraction.estimate_affine_shape arg (=0) --SiftExtraction.max_num_orientations arg (=2) --SiftExtraction.upright arg (=0) --SiftExtraction.domain_size_pooling arg (=0) --SiftExtraction.dsp_min_scale arg (=0.16666666666666666) --SiftExtraction.dsp_max_scale arg (=3) --SiftExtraction.dsp_num_scales arg (=10) The available options can either be provided directly from the command-line or through a ``.ini`` file provided to ``--project_path``. Commands -------- The following list briefly documents the functionality of each command, that is available as ``colmap [command]``: - ``gui``: The graphical user interface, see :ref:`Graphical User Interface ` for more information. - ``automatic_reconstructor``: Automatically reconstruct sparse and dense model for a set of input images. Key options include ``--quality`` (LOW, MEDIUM, HIGH, EXTREME), ``--data_type`` (INDIVIDUAL, VIDEO, INTERNET) to tune settings for different capture scenarios, ``--feature`` (SIFT, ALIKED) to select the feature extraction algorithm, ``--mapper`` (INCREMENTAL, HIERARCHICAL, GLOBAL) to choose the SfM pipeline, and ``--mesher`` (POISSON, DELAUNAY, ADVANCING_FRONT) to select the surface reconstruction method. - ``project_generator``: Generate project files at different quality settings. - ``feature_extractor``, ``feature_importer``: Perform feature extraction or import features for a set of images. - ``exhaustive_matcher``, ``vocab_tree_matcher``, ``sequential_matcher``, ``spatial_matcher``, ``transitive_matcher``, ``matches_importer``: Perform feature matching after performing feature extraction. - ``geometric_verifier``: Run standalone geometric verification on existing feature matches in the database. This estimates two-view geometries (fundamental/essential matrices, homographies) for matched image pairs. - ``guided_geometric_verifier``: Run geometric verification guided by an existing sparse reconstruction. Uses the known relative camera poses to improve match verification results. - ``mapper``: Sparse 3D reconstruction / mapping of the dataset using SfM after performing feature extraction and matching. - ``global_mapper``: Sparse 3D reconstruction using the global SfM pipeline. Unlike the incremental ``mapper``, the global approach solves for all camera poses simultaneously using rotation averaging and global positioning. This can be faster for large datasets but may be less robust to outliers. The global mapper depends on reasonably good focal length priors to perform well. Run ``view_graph_calibrator`` before ``global_mapper`` to calibrate camera intrinsics and estimate relative poses from the view graph, or provide camera calibrations manually. - ``pose_prior_mapper``: Sparse 3D reconstruction / mapping using pose priors. - ``hierarchical_mapper``: Sparse 3D reconstruction / mapping of the dataset using hierarchical SfM after performing feature extraction and matching. This parallelizes the reconstruction process by partitioning the scene into overlapping submodels and then reconstructing each submodel independently. Finally, the overlapping submodels are merged into a single reconstruction. It is recommended to run a few rounds of point triangulation and bundle adjustment after this step. - ``image_undistorter``: Undistort images and/or export them for MVS or to external dense reconstruction software, such as CMVS/PMVS. - ``image_rectifier``: Stereo rectify cameras and undistort images for stereo disparity estimation. - ``image_filterer``: Filter images from a sparse reconstruction. - ``image_deleter``: Delete specific images from a sparse reconstruction. - ``patch_match_stereo``: Dense 3D reconstruction / mapping using MVS after running the ``image_undistorter`` to initialize the workspace. - ``stereo_fusion``: Fusion of ``patch_match_stereo`` results into to a colored point cloud. - ``poisson_mesher``: Meshing of the fused point cloud using Poisson surface reconstruction. - ``delaunay_mesher``: Meshing of the reconstructed sparse or dense point cloud using a graph cut on the Delaunay triangulation and visibility voting. - ``advancing_front_mesher``: Meshing of the fused point cloud using advancing front surface reconstruction. Supports visibility-based filtering and block-wise parallel processing for large-scale scenes. Requires CGAL. - ``mesh_simplifier``: Simplify a triangle mesh (PLY format) using Quadric Error Metric (QEM) decimation. This reduces the number of faces in a mesh while preserving its overall shape and appearance. Key options include ``--MeshSimplification.target_face_ratio`` to control the fraction of faces to retain (default 0.1), ``--MeshSimplification.max_error`` to set a maximum quadric error threshold (0 = disabled), and ``--MeshSimplification.boundary_weight`` to control boundary edge preservation (default 1000). Supports multi-threaded initialization via ``--MeshSimplification.num_threads``. - ``mesh_texturer``: Produce a texture atlas and UV coordinates for a triangle mesh using calibrated multi-view images. - ``image_registrator``: Register new images in the database against an existing model, e.g., when extracting features and matching newly added images in a database after running ``mapper``. Note that no bundle adjustment or triangulation is performed. - ``point_triangulator``: Triangulate all observations of registered images in an existing model using the feature matches in a database. - ``point_filtering``: Filter sparse points in model by enforcing criteria, such as minimum track length, maximum reprojection error, etc. - ``bundle_adjuster``: Run global bundle adjustment on a reconstructed scene, e.g., when a refinement of the intrinsics is needed or after running the ``image_registrator``. The solver backend is selected via ``--BundleAdjustment.backend`` (``CERES`` or ``CASPAR``). Caspar [caspar]_ is an experimental GPU-accelerated backend; see :doc:`faq` for details and limitations. - ``database_cleaner``: Clean specific or all database tables. - ``database_creator``: Create an empty COLMAP SQLite database with the necessary database schema information. - ``database_merger``: Merge two databases into a new database. Note that the cameras will not be merged and that the unique camera and image identifiers might change during the merging process. - ``model_analyzer``: Print statistics about reconstructions. - ``model_clusterer``: Split a reconstruction into smaller sub-model clusters. Useful for managing and processing large-scale reconstructions. - ``model_aligner``: Align/geo-register model to coordinate system of given camera centers. - ``model_orientation_aligner``: Align the coordinate axis of a model using a Manhattan world assumption. - ``model_comparer``: Compare statistics of two reconstructions. - ``model_converter``: Convert the COLMAP export format to another format, such as PLY or NVM. - ``model_cropper``: Crop model to specific bounding box described in GPS or model coordinate system. - ``model_merger``: Attempt to merge two disconnected reconstructions, if they have common registered images. - ``model_splitter``: Divide model in rectangular sub-models specified from file containing bounding box coordinates, or max extent of sub-model, or number of subdivisions in each dimension. - ``model_transformer``: Transform coordinate frame of a model. - ``color_extractor``: Extract mean colors for all 3D points of a model. - ``rig_configurator``: Configure rigs and frames after feature extraction. - ``vocab_tree_builder``: Create a vocabulary tree from a database with extracted images. This is an offline procedure and can be run once, while the same vocabulary tree can be reused for other datasets. Note that, as a rule of thumb, you should use at least 10-100 times more features than visual words. Pre-trained trees can be downloaded from https://demuc.de/colmap/. This is useful if you want to build a custom tree with a different trade-off in terms of precision/recall vs. speed. - ``vocab_tree_retriever``: Perform vocabulary tree based image retrieval. - ``rotation_averager``: Run standalone rotation averaging on the view graph. Estimates global camera rotations from pairwise relative rotations. - ``view_graph_calibrator``: Calibrate camera intrinsics using the view graph. Estimates focal lengths and other intrinsic parameters from pairwise geometric relations. Should be run before ``global_mapper``, if no good prior camera intrinsics are known, since the global mapper depends on reasonably good focal length priors to perform well. Visualization ------------- If you want to quickly visualize the outputs of the sparse or dense reconstruction pipelines, COLMAP offers you the following possibilities: - The sparse point cloud obtained with the ``mapper`` can be visualized via the COLMAP GUI by importing the model files: choose ``File > Import Model`` and select the folder containing the sparse model files (``cameras.txt``, ``images.txt``, ``points3D.txt``, etc.). - The dense point cloud obtained with the ``stereo_fusion`` can be visualized via the COLMAP GUI by importing ``fused.ply``: choose ``File > Import Model from...`` and then select the file ``fused.ply``. - The dense mesh model ``meshed-*.ply`` obtained with the ``poisson_mesher`` or the ``delaunay_mesher`` can currently not be visualized with COLMAP, instead you can use an external viewer, such as Meshlab. Use the ``mesh_simplifier`` command to reduce the mesh size for faster visualization or downstream processing. Use the ``mesh_texturer`` command to produce a textured mesh with a texture atlas that can be visualized in Meshlab or other 3D viewers. colmap-4.1.1/doc/colmap.1000066400000000000000000000021021522646662000150760ustar00rootroot00000000000000.TH colmap 1 "January 4 2018" .SH NAME colmap \- Structure-from-Motion and Multi-View Stereo .SH SYNOPSIS .B colmap .RI "[command] [options]" .SH DESCRIPTION This manual page documents briefly the .B colmap command. .PP COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface. It offers a wide range of features for reconstruction of ordered and unordered image collections. .SH OPTIONS This program offers a graphical and command-line interface. Each command offers summary of all available options. .TP .B help [ \-h, \-\-help ] Show summary of all options. .TP .B gui Start graphical interface. .TP .B gui \-h [ \-\-help ] Show summary of graphical interface options. .TP .B feature_extractor \-h [ \-\-help ] Show summary of feature extractor options. .TP .B feature_extractor \-\-image_path IMAGES \-\-database_path DATABASE Extract features for images in the given folder and store them in the database. .br .TP .B ... .br .SH ONLINE DOCUMENTATION The program is documented at https://colmap.github.io/ colmap-4.1.1/doc/concepts.rst000077500000000000000000000050421522646662000161220ustar00rootroot00000000000000.. _concepts: Key Concepts ============ Starting from COLMAP 3.12, the concepts of rigs and frames have been introduced to enable a principled modeling of multi-sensor platforms as well as 360° panorama images. These concepts provide a structured framework to organize sensors and their measurements, enabling more flexible calibration and fusion of diverse data types (e.g., see :ref:`rig-support`). These additions are backward-compatible and do not affect the traditional, default usage of COLMAP for single-camera capture setups. .. _sensors: Sensors and Measurements ------------------------ A **sensor** is a device that captures data about the environment, producing measurements at specific timestamps. The most common sensor type is the camera, which captures images as its measurements. Other examples include IMUs (Inertial Measurement Units), which record acceleration and angular velocity, and GNSS receivers, which provide absolute position data. Currently, COLMAP supports only cameras and their image measurements, though the sensor concept is designed to extend to other types such as IMUs and GNSS for future support of multi-modal data fusion. .. _rigs: Rigs ---- A **rig** models a platform composed of multiple sensors with fixed relative poses, enabling synchronized and consistent multi-sensor data collection. Examples include stereo camera setups, headworn AR/VR devices, and autonomous driving sensor suites. It can also be virtual — for example, a rig modeling multiple virtual cameras arranged to capture overlapping views used to create seamless 360° panoramic images. In COLMAP, each sensor must be uniquely associated with exactly one rig. Each rig has a single reference sensor that defines its origin. For example, in a stereo camera rig, one camera is designated as the reference sensor with an identity ``sensor_from_rig`` pose, while the second camera’s pose is defined relative to this reference. In a single-camera setup, the camera itself serves as the sole reference sensor for its rig. .. _frames: Frames ------ A **frame** represents a rig captured at a single timestamp, containing measurements from one or more sensors within that rig. For example, if a rig consists of three sensors, a frame may include measurements from all three sensors, or only a subset, depending on availability. This concept allows association of multi-sensor data at specific points in time. For instance, in a stereo camera rig recording video, each frame corresponds to a set of two images—one from each camera—captured at the same moment. colmap-4.1.1/doc/conf.py000077500000000000000000000255771522646662000150700ustar00rootroot00000000000000# COLMAP documentation build configuration file, created by # sphinx-quickstart on Wed Jan 28 09:31:25 2015. # # This file is execfile()d with the current directory set to its # containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import re import subprocess from sphinx.ext import autodoc def get_git_revision(): try: commit_id = ( subprocess.check_output(["git", "rev-parse", "--short", "HEAD"]) .decode() .strip() ) commit_date = ( subprocess.check_output( ["git", "log", "-1", "--format=%cd", "--date=short"] ) .decode() .strip() ) return f"{commit_id} ({commit_date})" except Exception: return "Unknown" # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. # sys.path.insert(0, os.path.abspath('.')) # -- General configuration ------------------------------------------------ # If your documentation needs a minimal Sphinx version, state it here. # needs_sphinx = '1.0' # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. extensions = [ "sphinx.ext.mathjax", "sphinx.ext.autodoc", ] # Add any paths that contain templates here, relative to this directory. templates_path = ["_templates"] # The suffix of source filenames. source_suffix = ".rst" # The encoding of source files. # source_encoding = 'utf-8-sig' # The master toctree document. master_doc = "index" # General information about the project. project = "COLMAP" copyright = "2025, Johannes L. Schoenberger" # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short MAJOR.MINOR.PATCH version. version = "4.1.1" + " | " + get_git_revision() # The full version, including alpha/beta/rc tags. release = version # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. # language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: # today = '' # Else, today_fmt is used as the format for a strftime call. # today_fmt = '%B %d, %Y' # List of patterns, relative to source directory, that match files and # directories to ignore when looking for source files. exclude_patterns = ["_build"] # The reST default role (used for this markup: `text`) to use for all # documents. # default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. # add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). # add_module_names = True # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. # show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = "sphinx" # A list of ignored prefixes for module index sorting. # modindex_common_prefix = [] # If true, keep warnings as "system message" paragraphs in the built documents. # keep_warnings = False # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. html_theme = "sphinx_rtd_theme" # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the # documentation. html_theme_options = {} # Add any paths that contain custom themes here, relative to this directory. html_theme_path = ["_themes"] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". # html_title = None # A shorter title for the navigation bar. Default is the same as html_title. # html_short_title = None # The name of an image file (relative to this directory) to place at the top # of the sidebar. # html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. # html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ["_static"] html_css_files = ["custom.css"] # Add any extra paths that contain custom files (such as robots.txt or # .htaccess) here, relative to this directory. These files are copied # directly to the root of the documentation. # html_extra_path = [] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. # html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. # html_use_smartypants = True # Custom sidebar templates, maps document names to template names. # html_sidebars = {} # Additional templates that should be rendered to pages, maps page names to # template names. # html_additional_pages = {} # If false, no module index is generated. # html_domain_indices = True # If false, no index is generated. # html_use_index = True # If true, the index is split into individual pages for each letter. # html_split_index = False # If true, links to the reST sources are added to the pages. # html_show_sourcelink = True # If true, "Created using Sphinx" is shown in the HTML footer. Default is True. # html_show_sphinx = True # If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. # html_show_copyright = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. # html_use_opensearch = '' # This is the file name suffix for HTML files (e.g. ".xhtml"). # html_file_suffix = None # Output file base name for HTML help builder. htmlhelp_basename = "COLMAPdoc" # -- Options for LaTeX output --------------------------------------------- latex_elements = { # The paper size ('letterpaper' or 'a4paper'). # 'papersize': 'a4paper', # The font size ('10pt', '11pt' or '12pt'). # 'pointsize': '10pt', # Additional stuff for the LaTeX preamble. # 'preamble': '', } # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, # author, documentclass [howto, manual, or own class]). latex_documents = [ ( "index", "COLMAP.tex", "COLMAP Documentation", "Johannes L. Schoenberger", "manual", ), ] # The name of an image file (relative to this directory) to place at the top of # the title page. # latex_logo = None # For "manual" documents, if this is true, then toplevel headings are parts, # not chapters. # latex_use_parts = False # If true, show page references after internal links. latex_show_pagerefs = True # If true, show URL addresses after external links. latex_show_urls = "footnote" # Documents to append as an appendix to all manuals. # latex_appendices = [] # If false, no module index is generated. latex_domain_indices = False # -- Options for manual page output --------------------------------------- # One entry per manual page. List of tuples # (source start file, name, description, authors, manual section). man_pages = [ ( "index", "colmap", "COLMAP Documentation", ["Johannes L. Schoenberger"], 1, ) ] # If true, show URL addresses after external links. # man_show_urls = False # -- Options for Texinfo output ------------------------------------------- # Grouping the document tree into Texinfo files. List of tuples # (source start file, target name, title, author, # dir menu entry, description, category) texinfo_documents = [ ( "index", "COLMAP", "COLMAP Documentation", "Johannes L. Schoenberger", "COLMAP", "Structure-from-Motion and Multi-View Stereo.", "Miscellaneous", ), ] # Documents to append as an appendix to all manuals. # texinfo_appendices = [] # If false, no module index is generated. # texinfo_domain_indices = True # How to display URL addresses: 'footnote', 'no', or 'inline'. # texinfo_show_urls = 'footnote' # If true, do not generate a @detailmenu in the "Top" node's menu. # texinfo_no_detailmenu = False # Configure how Python API docs are displayed. autoclass_content = "both" autodoc_member_order = "bysource" autodoc_typehints = "both" python_maximum_signature_line_length = 120 autodoc_use_legacy_class_based = True def sort_members( self, documenters: list[tuple[autodoc.Documenter, bool]], order: str ) -> list[tuple[autodoc.Documenter, bool]]: """Order the members by their definition order.""" class_names = list(self.object.__dict__) def keyfunc(entry: tuple[autodoc.Documenter, bool]) -> int: name = entry[0].name.split("::")[1].split(".")[1] if name in class_names: return class_names.index(name) else: return len(class_names) documenters.sort(key=keyfunc) return documenters # autodoc_member_order=bysource does not work for C++-defined classes since they # cannot be introspected and do not have an __all__ list. Instead, # we extract the definition order from object.__dict__. autodoc.ClassDocumenter.sort_members = sort_members def process_doc(app, what, name, obj, options, lines): if not lines: return has_overload = lines[0] == "Overloaded function." for i in range(len(lines)): lines[i] = lines[i].replace("pycolmap._core", "pycolmap") if has_overload and re.search(r"^\d+\. ", lines[i]): index, signature = lines[i].split(". ", 1) signature = "``" + signature.replace("->", "→") + "``" lines[i] = ". ".join([index, signature]) def process_sig(app, what, name, obj, options, signature, return_annotation): if signature is None: return None, return_annotation signature = signature.replace("pycolmap._core", "pycolmap") if isinstance(return_annotation, str): return_annotation = return_annotation.replace( "pycolmap._core", "pycolmap" ) return signature, return_annotation def setup(app): # Remap types from the C++ module pycolmap._core to the Python namespace. app.connect("autodoc-process-docstring", process_doc) app.connect("autodoc-process-signature", process_sig) colmap-4.1.1/doc/contribution.rst000066400000000000000000000016731522646662000170260ustar00rootroot00000000000000Contribution ============ Contributions (bug reports, bug fixes, improvements, etc.) are very welcome and should be submitted in the form of new issues and/or pull requests on GitHub. Please, adhere to the Google coding style guide:: https://google.github.io/styleguide/cppguide.html by using the provided ".clang-format" file. Document functions, methods, classes, etc. with inline documentation strings describing the API, using the following format:: // Short description. // // Longer description with a few sentences and multiple lines. // // @param parameter1 Description for parameter 1. // @param parameter2 Description for parameter 2. // // @return Description of optional return value. Add unit tests for all newly added code and make sure that algorithmic "improvements" generalize and actually improve the results of the pipeline on a variety of datasets. colmap-4.1.1/doc/database.rst000077500000000000000000000130411522646662000160460ustar00rootroot00000000000000.. _database-format: Database Format =============== COLMAP stores all extracted information in a single SQLite database file. The database can be accessed with the database management toolkit in the COLMAP GUI, the provided C++ database API (see ``src/colmap/scene/database.h``), or using Python with pycolmap. The database contains the following tables: - rigs - cameras - frames - images - keypoints - descriptors - matches - two_view_geometries To initialize an empty SQLite database file with the required schema, you can either create a new project in the GUI or run the ``colmap database_creator`` command. Rigs and Sensors ---------------- The relation between rigs and sensors (cameras, etc.) is 1-to-N with one sensor being chosen as the reference sensor to define the origin of the rig. Each sensor must only be part of one rig. Rigs and Frames --------------- The relation between rigs and frames is 1-to-N, where a frame defines a specific instance of the rig with all or a subset of sensors exposed at the same time. Cameras and Images ------------------ The relation between cameras and images is 1-to-N. This has important implications for Structure-from-Motion, since one camera shares the same intrinsic parameters (focal length, principal point, distortion, etc.), while every image has separate extrinsic parameters (orientation and location). The intrinsic parameters of cameras are stored as contiguous binary blobs in ``float64``, ordered as specified in ``src/colmap/sensor/models.h``. COLMAP only uses cameras that are referenced by images, all other cameras are ignored. The ``name`` column in the images table is the unique relative path in the image folder. As such, the database file and image folder can be moved to different locations, as long as the relative folder structure is preserved. When manually inserting images and cameras into the database, make sure that all identifiers are positive and non-zero, i.e. ``image_id > 0`` and ``camera_id > 0``. Keypoints and Descriptors ------------------------- The detected keypoints are stored as row-major ``float32`` binary blobs, where the first two columns are the X and Y locations in the image, respectively. COLMAP uses the convention that the upper left image corner has coordinate ``(0, 0)`` and the center of the upper left most pixel has coordinate ``(0.5, 0.5)``. If the keypoints have 4 columns, then the feature geometry is a similarity and the third column is the scale and the fourth column the orientation of the feature (according to SIFT conventions). If the keypoints have 6 columns, then the feature geometry is an affinity and the last 4 columns encode its affine shape (see ``src/colmap/feature/types.h`` for details). The extracted descriptors are stored as row-major binary blobs, where each row describes the feature appearance of the corresponding entry in the keypoints table. The data type and dimensionality depend on the feature extractor: - **SIFT**: ``uint8`` descriptors with 128 dimensions (128 bytes per feature). - **ALIKED**: ``float32`` descriptors with 128 dimensions (512 bytes per feature). The ``cols`` column in the descriptors table specifies the number of bytes per descriptor row. For ``uint8`` descriptors, this equals the descriptor dimension. For ``float32`` descriptors, this equals ``4 * dimension``. In both tables, the ``rows`` table specifies the number of detected features per image, while ``rows=0`` means that an image has no features. For feature matching and geometric verification, every image must have a corresponding keypoints and descriptors entry. Note that only vocabulary tree matching with fast spatial verification requires meaningful values for the local feature geometry, i.e., only X and Y must be provided and the other keypoint columns can be set to zero. The rest of the reconstruction pipeline only uses the keypoint locations. Matches and two-view geometries ------------------------------- Feature matching stores its output in the ``matches`` table and geometric verification in the ``two_view_geometries`` table. COLMAP only uses the data in ``two_view_geometries`` for reconstruction. Every entry in the two tables stores the feature matches between two unique images, where the ``pair_id`` is the row-major, linear index in the upper-triangular match matrix, generated as follows:: def image_ids_to_pair_id(image_id1, image_id2): if image_id1 > image_id2: return 2147483647 * image_id2 + image_id1 else: return 2147483647 * image_id1 + image_id2 and image identifiers can be uniquely determined from the ``pair_id`` as:: def pair_id_to_image_ids(pair_id): image_id2 = pair_id % 2147483647 image_id1 = (pair_id - image_id2) / 2147483647 return image_id1, image_id2 The ``pair_id`` enables efficient database queries, as the matches tables may contain several hundred millions of entries. This scheme limits the maximum number of images in a database to 2147483647 (maximum value of signed 32-bit integers), i.e. ``image_id`` must be smaller than 2147483647. The binary blobs in the matches tables are row-major ``uint32`` matrices, where the left column are zero-based indices into the features of ``image_id1`` and the second column into the features of ``image_id2``. The column ``cols`` must be 2 and the ``rows`` column specifies the number of feature matches. The F, E, H blobs in the ``two_view_geometries`` table are stored as 3x3 matrices in row-major ``float64`` format. The meaning of the ``config`` values are documented in the ``src/colmap/estimators/two_view_geometry.h`` source file. colmap-4.1.1/doc/datasets.rst000066400000000000000000000021461522646662000161130ustar00rootroot00000000000000.. _datasets: Datasets ======== A number of different datasets are available for download at: https://demuc.de/colmap/datasets/ - **Gerrard Hall**: 100 high-resolution images of the "Gerrard" hall at UNC Chapel Hill, which is the building right next to the "South" building. The images are taken with the same camera but different focus using a wide-angle lens. - **Graham Hall**: 1273 high-resolution images of the interior and exterior of "Graham" memorial hall at UNC Chapel Hill. The images are taken with the same camera but different focus using a wide-angle lens. - **Person Hall**: 330 high-resolution images of the "Person" hall at UNC Chapel Hill. The images are taken with the same camera using a wide-angle lens. - **South Building**: 128 images of the "South" building at UNC Chapel Hill. The images are taken with the same camera, kindly provided by Christopher Zach. A number of sample reconstructions produced by COLMAP can be viewed here: **Sparse reconstructions**: - https://youtu.be/PmXqdfBQxfQ - https://youtu.be/DIv1aGKqSIk **Dense reconstructions**: - https://youtu.be/11awtGWSqQU colmap-4.1.1/doc/faq.rst000066400000000000000000001137571522646662000150650ustar00rootroot00000000000000Frequently Asked Questions ========================== Adjusting the options for different reconstruction scenarios and output quality ------------------------------------------------------------------------------- COLMAP provides many options that can be tuned for different reconstruction scenarios and to trade off accuracy and completeness versus efficiency. The default options are set for medium to high quality reconstruction of unstructured input data. There are several presets for different scenarios and quality levels, which can be set in the GUI as ``Extras > Set options for ...``. To use these presets from the command-line, you can save the current set of options as ``File > Save project`` after choosing the presets. The resulting project file can be opened with a text editor to view the different options. Alternatively, you can generate the project file also from the command-line by running ``colmap project_generator``. Extending COLMAP ---------------- If you need to simply analyze the produced sparse or dense reconstructions from COLMAP, you can load the sparse models using pycolmap in Python or the scripts in ``scripts/matlab`` for Matlab. If you want to write a C/C++ executable that builds on top of COLMAP, there are two possible approaches. First, the COLMAP headers and library are installed to the ``CMAKE_INSTALL_PREFIX`` by default. Compiling against COLMAP as a library is described :ref:`here `. Alternatively, you can start from the ``src/colmap/tools/example.cc`` code template and implement the desired functionality directly as a new binary within COLMAP. Choosing between SIFT and ALIKED features ----------------------------------------- COLMAP supports two feature extraction algorithms: SIFT (default) and ALIKED (requires ONNX support). Here are some guidelines for choosing between them: - **SIFT** is the most widely tested and robust choice. It works well for scenarios with moderate to high view overlap, sufficient scene texture, and captured under similar illumination conditions. It supports both GPU and CPU extraction. - **ALIKED** is a learned feature extractor that can produce more repeatable features in some cases, particularly for scenes with limited view overlap, little scene texture, and drastic illumination changes. It requires ONNX Runtime at build time (``-DONNX_ENABLED=ON``). Both feature types support brute-force matching as well as LightGlue neural network-based matching. LightGlue typically produces higher inlier ratios, especially for image pairs with large viewpoint or illumination changes, but requires ONNX support. See :ref:`Feature Extraction and Matching ` for details on available options. Do not mix different feature types (e.g., SIFT and ALIKED) in the same database, as the descriptors are incompatible. .. _faq-choosing-camera-model: Choosing the right camera model ------------------------------- COLMAP supports many camera models with varying numbers of parameters (see :doc:`cameras` for the full list). Choosing the right model depends on your lens type and reconstruction requirements: - **SIMPLE_RADIAL** (default): A good starting point for most standard cameras. Models a single focal length, principal point, and one radial distortion parameter. - **PINHOLE**: Use if your images have negligible lens distortion (e.g., already undistorted images or high-quality industrial lenses). - **OPENCV**: A good choice for wider-angle lenses with moderate distortion. Models 2 focal lengths, principal point, and 4 distortion parameters (2 radial + 2 tangential). - **SIMPLE_RADIAL_FISHEYE** or **OPENCV_FISHEYE**: Use for fisheye lenses with a field of view significantly larger than 120 degrees. - **FULL_OPENCV**: Use only when you have many images sharing intrinsics and need to model complex distortion patterns. With 12 parameters, this model requires a large number of observations to converge reliably. As a rule of thumb, use the simplest model that adequately describes your lens. Overly complex models with many parameters can lead to degenerate or overfitted calibration, especially when few images share intrinsics. If in doubt, start with ``SIMPLE_RADIAL`` and inspect the reprojection errors in the model statistics. Choosing between incremental, global, and hierarchical SfM ---------------------------------------------------------- COLMAP offers three SfM pipelines: - **Incremental mapper** (``mapper``, default): Reconstructs the scene by incrementally adding one image at a time. This is the most robust and well-tested pipeline, but can become slow for large image collections, where repeated bundle adjustment is often the bottleneck. This can be accelerated substantially with the GPU-based Caspar backend (see :ref:`Speedup bundle adjustment `). - **Global mapper** (``global_mapper``): Solves for all camera poses simultaneously using rotation averaging and global positioning. This can be faster for large datasets with good matching graphs, but may be less robust to outliers in the matching. The global mapper depends on good focal length priors. If reliable intrinsics are not available, run ``view_graph_calibrator`` before ``global_mapper`` to estimate them from the view graph (optional but recommended to improve the quality of global SfM). Note that ``view_graph_calibrator`` modifies the database in-place, so it is recommended to work on a copy. - **Hierarchical mapper** (``hierarchical_mapper``): Partitions the scene into overlapping sub-models and reconstructs each independently, then merges them. This is useful for very large-scale datasets where the incremental approach becomes too slow but is usually less robust than the other two pipelines. All three can also be selected via the ``automatic_reconstructor`` using ``--mapper INCREMENTAL``, ``--mapper GLOBAL``, or ``--mapper HIERARCHICAL``. Reconstruction with pose priors (GPS) ------------------------------------- If your images have GPS information in their EXIF metadata, COLMAP automatically extracts and stores it as pose priors in the database during feature extraction. These priors can then be used during reconstruction with the ``pose_prior_mapper``:: colmap feature_extractor \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images colmap exhaustive_matcher \ --database_path $PROJECT_PATH/database.db colmap pose_prior_mapper \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images \ --output_path $PROJECT_PATH/sparse The ``pose_prior_mapper`` is essentially the incremental mapper with prior position constraints enabled. You can override the priors covariance (uncertainty) using ``--overwrite_priors_covariance``. The new covariance will be built based on the values of ``--prior_position_std_x``, ``--prior_position_std_y``, and ``--prior_position_std_z`` (default: 1.0 meter each). For geo-registration of an already reconstructed model (without using priors during mapping), see the `Geo-registration`_ section. .. _faq-share-intrinsics: Share intrinsics ---------------- COLMAP supports shared intrinsics for arbitrary groups of images and camera models. Images share the same intrinsics, if they refer to the same camera, as specified by the ``camera_id`` property in the database. You can add new cameras and set shared intrinsics in the database management tool. Please, refer to :ref:`Database Management ` for more information. .. _faq-fix-intrinsics: Fix intrinsics -------------- By default, COLMAP tries to refine the intrinsic camera parameters (except principal point) automatically during the reconstruction. Usually, if there are enough images in the dataset and you share the intrinsics between multiple images, the estimated intrinsic camera parameters in SfM should be better than parameters manually obtained with a calibration pattern. However, sometimes COLMAP's self-calibration routine might converge in degenerate parameters, especially in case of the more complex camera models with many distortion parameters. If you know the calibration parameters a priori, you can fix different parameter groups during the reconstruction. Choose ``Reconstruction > Reconstruction options > Bundle Adj. > refine_*`` and check which parameter group to refine or to keep constant. Even if you keep the parameters constant during the reconstruction, you can refine the parameters in a final global bundle adjustment by setting ``Reconstruction > Bundle adj. options > refine_*`` and then running ``Reconstruction > Bundle adjustment``. Principal point refinement -------------------------- By default, COLMAP keeps the principal point constant during the reconstruction, as principal point estimation is an ill-posed problem in general. Once all images are reconstructed, the problem is most often constrained enough that you can try to refine the principal point in global bundle adjustment, especially when sharing intrinsic parameters between multiple images. Please, refer to :ref:`Fix intrinsics ` for more information. Increase number of matches / sparse 3D points --------------------------------------------- To increase the number of matches, you should use the more discriminative DSP-SIFT features instead of plain SIFT and also estimate the affine feature shape using the options: ``--SiftExtraction.estimate_affine_shape=true`` and ``--SiftExtraction.domain_size_pooling=true``. In addition, you should enable guided feature matching using: ``--FeatureMatching.guided_matching=true``. By default, COLMAP ignores two-view feature tracks in triangulation, resulting in fewer 3D points than possible. Triangulation of two-view tracks can in rare cases improve the stability of sparse image collections by providing additional constraints in bundle adjustment. To also triangulate two-view tracks, unselect the option ``Reconstruction > Reconstruction options > Triangulation > ignore_two_view_tracks``. If your images are taken from far distance with respect to the scene, you can try to reduce the minimum triangulation angle. Reconstruct sparse/dense model from known camera poses ------------------------------------------------------ If the camera poses are known and you want to reconstruct a sparse or dense model of the scene, you must first manually construct a sparse model by creating a ``cameras.txt``, ``points3D.txt``, and ``images.txt`` under a new folder:: +── path/to/manually/created/sparse/model │   +── cameras.txt │   +── images.txt │   +── points3D.txt The ``points3D.txt`` file should be empty while every other line in the ``images.txt`` should also be empty, since the sparse features are computed, as described below. You can refer to :ref:`this article ` for more information about the structure of a sparse model. Example of images.txt:: 1 0.695104 0.718385 -0.024566 0.012285 -0.046895 0.005253 -0.199664 1 image0001.png # Make sure every other line is left empty 2 0.696445 0.717090 -0.023185 0.014441 -0.041213 0.001928 -0.134851 2 image0002.png 3 0.697457 0.715925 -0.025383 0.018967 -0.054056 0.008579 -0.378221 1 image0003.png 4 0.698777 0.714625 -0.023996 0.021129 -0.048184 0.004529 -0.313427 2 image0004.png Each image above must have the same ``image_id`` (first column) as in the database (next step). This database can be inspected either in the GUI (under ``Database management > Processing``), or, one can create a reconstruction with colmap and later export it as text in order to see the images.txt file it creates. To reconstruct a sparse map, you first have to recompute features from the images of the known camera poses as follows:: colmap feature_extractor \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images If your known camera intrinsics have large distortion coefficients, you should now manually copy the parameters from your ``cameras.txt`` to the database, such that the matcher can leverage the intrinsics. Modifying the database is possible in many ways, but an easy option is to use pycolmap's database API. Otherwise, you can skip this step and simply continue as follows:: colmap exhaustive_matcher \ # or alternatively any other matcher --database_path $PROJECT_PATH/database.db colmap point_triangulator \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images --input_path path/to/manually/created/sparse/model \ --output_path path/to/triangulated/sparse/model Note that the sparse reconstruction step is not necessary in order to compute a dense model from known camera poses. Assuming you computed a sparse model from the known camera poses, you can compute a dense model as follows:: colmap image_undistorter \ --image_path $PROJECT_PATH/images \ --input_path path/to/triangulated/sparse/model \ --output_path path/to/dense/workspace colmap patch_match_stereo \ --workspace_path path/to/dense/workspace colmap stereo_fusion \ --workspace_path path/to/dense/workspace \ --output_path path/to/dense/workspace/fused.ply Alternatively, you can also produce a dense model without a sparse model as:: colmap image_undistorter \ --image_path $PROJECT_PATH/images \ --input_path path/to/manually/created/sparse/model \ --output_path path/to/dense/workspace Since the sparse point cloud is used to automatically select neighboring images during the dense stereo stage, you have to manually specify the source images, as described :ref:`here `. The dense stereo stage now also requires a manual specification of the depth range. Finally, in this case, fusion will fail to successfully match points if min_num_pixels is left at the default (greater than 1). So also set that parameter, as below:: colmap patch_match_stereo \ --workspace_path path/to/dense/workspace \ --PatchMatchStereo.depth_min $MIN_DEPTH \ --PatchMatchStereo.depth_max $MAX_DEPTH colmap stereo_fusion \ --workspace_path path/to/dense/workspace \ --StereoFusion.min_num_pixels 1 \ --output_path path/to/dense/workspace/fused.ply .. _faq-merge-models: Merge disconnected models ------------------------- Sometimes COLMAP fails to reconstruct all images into the same model and hence produces multiple sub-models. If those sub-models have common registered images, they can be merged into a single model as post-processing step:: colmap model_merger \ --input_path1 /path/to/sub-model1 \ --input_path2 /path/to/sub-model2 \ --output_path /path/to/merged-model To improve the quality of the alignment between the two sub-models, it is recommended to run another global bundle adjustment after the merge:: colmap bundle_adjuster \ --input_path /path/to/merged-model \ --output_path /path/to/refined-merged-model Geo-registration ---------------- Geo-registration of models is possible by providing the 3D locations for the camera centers of a subset or all registered images. The 3D similarity transformation between the reconstructed model and the target coordinate frame of the geo-registration is determined from these correspondences. The geo-registered 3D coordinates can either be extracted from the database (tvec_prior field) or from a user specified text file. For text-files, the geo-registered 3D coordinates of the camera centers for images must be specified with the following format:: image_name1.jpg X1 Y1 Z1 image_name2.jpg X2 Y2 Z2 image_name3.jpg X3 Y3 Z3 ... The coordinates can be either GPS-based (lat/lon/alt) or cartesian-based (x/y/z). In case of GPS coordinates, a conversion will be performed to turn those into cartesian coordinates. The conversion can be done from GPS to ECEF (Earth-Centered-Earth-Fixed) or to ENU (East-North-Up) coordinates. If ENU coordinates are used, the first image GPS coordinates will define the origin of the ENU frame. It is also possible to use ECEF coordinates for alignment and then rotate the aligned reconstruction into the ENU plane. Note that at least 3 images must be specified to estimate a 3D similarity transformation. Then, the model can be geo-registered using:: colmap model_aligner \ --input_path /path/to/model \ --output_path /path/to/geo-registered-model \ --ref_images_path /path/to/text-file (or --database_path /path/to/database.db) \ --ref_is_gps 1 \ --alignment_type ecef \ --alignment_max_error 3.0 (where 3.0 is the error threshold to be used in RANSAC) A 3D similarity transformation will be estimated with a RANSAC estimator to be robust to potential outliers in the data. It is required to provide the error threshold to be used in the RANSAC estimator. Manhattan world alignment ------------------------- COLMAP has functionality to align the coordinate axes of a reconstruction using a Manhattan world assumption, i.e. COLMAP can automatically determine the gravity axis and the major horizontal axis of the Manhattan world through vanishing point detection in the images. Please, refer to the ``model_orientation_aligner`` for more details. Mask image regions ------------------ COLMAP supports masking of keypoints during feature extraction two different ways: 1. Passing ``mask_path`` to a folder with image masks. For a given image, the corresponding mask must have the same sub-path below this root as the image has below ``image_path``. The filename must be equal, aside from the added extension ``.png``. For example, for an image ``image_path/abc/012.jpg``, the mask would be ``mask_path/abc/012.jpg.png``. 2. Passing ``camera_mask_path`` to a single mask image. This single mask is applied to all images. In both cases no features will be extracted in regions, where the mask image is black (pixel intensity value 0 in grayscale). Image orientation and EXIF -------------------------- COLMAP automatically reads the EXIF orientation tag from images during feature extraction. The orientation is converted to a gravity direction vector in sensor coordinates, which is stored as part of the pose prior in the database. This gravity information is used during feature extraction and matching to improve robustness against image rotation. This is crucial for feature extractors/matchers with limited orientation invariance, such as ALIKED and LightGlue. Register/localize new images into an existing reconstruction ------------------------------------------------------------ If you have an existing reconstruction of images and want to register/localize new images within this reconstruction, you can follow these steps:: colmap feature_extractor \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images \ --image_list_path /path/to/image-list.txt colmap vocab_tree_matcher \ --database_path $PROJECT_PATH/database.db \ --VocabTreeMatching.match_list_path /path/to/image-list.txt colmap image_registrator \ --database_path $PROJECT_PATH/database.db \ --input_path /path/to/existing-model \ --output_path /path/to/model-with-new-images colmap bundle_adjuster \ --input_path /path/to/model-with-new-images \ --output_path /path/to/model-with-new-images Note that this first extracts features for the new images, then matches them to the existing images in the database, and finally registers them into the model. The image list text file contains a list of images to extract and match, specified as one image file name per line. The bundle adjustment is optional. If you need a more accurate image registration with triangulation, then you should restart or continue the reconstruction process rather than just registering the images to the model. Instead of running the ``image_registrator``, you should run the ``mapper`` to continue the reconstruction process from the existing model:: colmap mapper \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images \ --input_path /path/to/existing-model \ --output_path /path/to/model-with-new-images Or, alternatively, you can start the reconstruction from scratch:: colmap mapper \ --database_path $PROJECT_PATH/database.db \ --image_path $PROJECT_PATH/images \ --output_path /path/to/model-with-new-images Note that dense reconstruction must be re-run from scratch after running the ``mapper`` or the ``bundle_adjuster``, as the coordinate frame of the model can change during these steps. Available functionality without GPU/CUDA ---------------------------------------- If you do not have a CUDA-enabled GPU but some other GPU, you can use all COLMAP functionality except the dense reconstruction part. However, you can use external dense reconstruction software as an alternative, as described in the :ref:`Tutorial `. If you have a GPU with low compute power or you want to execute COLMAP on a machine without an attached display and without CUDA support, you can run all steps on the CPU by specifying the appropriate options (e.g., ``--FeatureExtraction.use_gpu=false`` for the feature extraction step). But note that this might result in a significant slow-down of the reconstruction pipeline. Please, also note that feature extraction on the CPU can consume excessive RAM for large images in the default settings, which might require manually reducing the maximum image size using ``--FeatureExtraction.max_image_size`` and/or setting ``--SiftExtraction.first_octave 0`` or by manually limiting the number of threads using ``--FeatureExtraction.num_threads``. Multi-GPU support in feature extraction/matching ------------------------------------------------ You can run feature extraction/matching on multiple GPUs by specifying multiple indices for CUDA-enabled GPUs, e.g., ``--FeatureExtraction.gpu_index=0,1,2,3`` and ``--FeatureMatching.gpu_index=0,1,2,3`` runs the feature extraction/matching on 4 GPUs in parallel. Note that you can only run one thread per GPU and this typically also gives the best performance. By default, COLMAP runs one feature extraction/matching thread per CUDA-enabled GPU and this usually gives the best performance as compared to running multiple threads on the same GPU. Feature matching fails due to illegal memory access --------------------------------------------------- If you encounter the following error message:: MultiplyDescriptor: an illegal memory access was encountered or the following: ERROR: Feature matching failed. This probably caused by insufficient GPU memory. Consider reducing the maximum number of features. during feature matching, your GPU runs out of memory. Try decreasing the option ``--FeatureMatching.max_num_matches`` until the error disappears. Note that this might lead to inferior feature matching results, since the lower-scale input features will be clamped in order to fit them into GPU memory. Alternatively, you could change to CPU-based feature matching, but this can become very slow, or better you buy a GPU with more memory. The maximum required GPU memory can be approximately estimated using the following formula: ``4 * num_matches * num_matches + 4 * num_matches * 256`` for SIFT. For example, if you set ``--FeatureMatching.max_num_matches 10000``, the maximum required GPU memory will be around 400MB, which are only allocated if one of your images actually has that many features. .. _speedup-bundle-adjustment: Speedup bundle adjustment ------------------------- The following describes practical ways to reduce bundle adjustment runtime. - **Reduce the problem size** Limit the number of correspondences so that BA solves a smaller problem: - Reduce features by decreasing ``--SiftExtraction.max_image_size`` and/or ``--SiftExtraction.max_num_features``. - Reduce matching pairs (and avoid ``exhaustive_matcher`` when possible) by decreasing ``--SequentialMatching.overlap``, ``--SpatialMatching.max_num_neighbors``, or ``--VocabTreeMatching.num_images``. - Reduce matches by decreasing ``--FeatureMatching.max_num_matches``. - Enable experimental landmark pruning to drop redundant 3D points using ``--Mapper.ba_global_ignore_redundant_points3D 1``. - **Utilize GPU acceleration** Enable GPU-based Ceres solvers for bundle adjustment by setting ``--Mapper.ba_use_gpu 1`` for the ``mapper`` and ``--BundleAdjustmentCeres.use_gpu 1`` for the standalone ``bundle_adjuster``. Several parameters control when and which GPU solver is used: - The GPU solver is activated only when the number of images exceeds ``--BundleAdjustmentCeres.min_num_images_gpu_solver``. - Select between the direct dense, direct sparse, and iterative sparse GPU solvers using ``--BundleAdjustmentCeres.max_num_images_direct_dense_gpu_solver`` and ``--BundleAdjustmentCeres.max_num_images_direct_sparse_gpu_solver`` .. Attention:: COLMAP's official CUDA-enabled binaries are not distributed with ceres[cuda] until Ceres 2.3 is officially released. To use the GPU solvers you must compile Ceres with the CUDA/cuDSS support and link that build to COLMAP. **Note:** Low GPU utilization for the Schur-based sparse solver (cuDSS) can occur when the Schur-complement matrix becomes less sparse (i.e., exhibits more fill-in). Typical causes include: - High image covisibility - Shared camera intrinsics. - **Use the Caspar GPU bundle adjustment backend** COLMAP includes Caspar [caspar]_, an experimental GPU-accelerated bundle adjustment backend that can be one to two orders of magnitude faster than the Ceres CUDA solver for medium- to large-scale problems, leading to drastic speedups especially for the incremental mapper. Caspar requires CUDA and is disabled by default; it must be enabled at build time by configuring COLMAP with ``-DCASPAR_ENABLED=ON``. Caspar is selected through the bundle adjustment ``backend`` option, which accepts ``CERES`` (default) or ``CASPAR``: - Standalone ``bundle_adjuster``: ``--BundleAdjustment.backend CASPAR``. - Incremental ``mapper``: ``--Mapper.ba_local_backend CASPAR`` and/or ``--Mapper.ba_global_backend CASPAR``. The GPU device is selected via ``--Mapper.ba_gpu_index``. The solver behavior and GPU device of the standalone backend can be tuned via the ``--BundleAdjustmentCaspar.*`` options, e.g. ``--BundleAdjustmentCaspar.gpu_index`` (default ``-1`` auto-selects the best CUDA device). .. Attention:: Caspar is experimental and currently supports only the ``SIMPLE_RADIAL`` and ``PINHOLE`` camera models; observations using other camera models are skipped. It does not support pose priors or refining ``sensor_from_rig`` for non-reference rig sensors, and requires ``refine_focal_length`` and ``refine_extra_params`` to be equal. The ``global_mapper`` does not expose a Caspar backend selector. - **Additional practical tips** - Improve initial conditions by tuning observation-filtering parameters so BA receives more inliers and fewer outliers, or by supplying accurate priors (e.g., intrinsics, poses). - Fix or restrict refinement of parameters when possible (e.g., hold intrinsics fixed if they are known) to reduce the number of optimized variables. - Reduce LM iterations or relax convergence tolerances to trade a small amount of accuracy for runtime: ``--Mapper.ba_global_max_num_iterations``, ``--Mapper.ba_global_function_tolerance``. - Reduce the frequency of expensive global BA passes with mapper options: ``--Mapper.ba_global_frames_freq``, ``--Mapper.ba_global_points_freq``, ``--Mapper.ba_global_frames_ratio`` and ``--Mapper.ba_global_points_ratio``. Trading off completeness and accuracy in dense reconstruction ------------------------------------------------------------- If the dense point cloud contains too many outliers and too much noise, try to increase the value of option ``--StereoFusion.min_num_pixels``. If the reconstructed dense surface mesh model using Poisson reconstruction contains no surface or there are too many outlier surfaces, you should reduce the value of option ``--PoissonMeshing.trim`` to decrease the surface area and vice versa to increase it. Also consider to try the reduce the outliers or increase the completeness in the fusion stage, as described above. If the reconstructed dense surface mesh model using Delaunay reconstruction contains too noisy or incomplete surfaces, you should increase the ``--DelaunayMeshing.quality_regularization`` parameter to obtain a smoother surface. If the resolution of the mesh is too coarse, you should reduce the ``--DelaunayMeshing.max_proj_dist`` option to a lower value. Improving dense reconstruction results for weakly textured surfaces ------------------------------------------------------------------- For scenes with weakly textured surfaces it can help to have a high resolution of the input images (``--PatchMatchStereo.max_image_size``) and a large patch window radius (``--PatchMatchStereo.window_radius``). You may also want to reduce the filtering threshold for the photometric consistency cost (``--PatchMatchStereo.filter_min_ncc``). Surface mesh reconstruction --------------------------- COLMAP supports three surface reconstruction algorithms: - **Poisson surface reconstruction** [kazhdan2013]_ typically requires an almost outlier-free input point cloud and often produces bad surfaces in the presence of outliers or large holes in the input data. - **Delaunay triangulation** based meshing is more robust to outliers and in general more scalable to large datasets than the Poisson algorithm, but it usually produces less smooth surfaces. It can be applied to both sparse and dense reconstruction results. - **Advancing front surface reconstruction** [cohen-steiner2004]_ incrementally grows a surface mesh from a Delaunay triangulation of the input points. It supports visibility-based filtering to remove faces that violate free-space constraints and block-wise parallel processing for large-scale scenes. It uses a float32 CGAL kernel for memory efficiency. To increase the smoothness of the surface as a post-processing step, you could use Laplacian smoothing, as e.g. implemented in Meshlab. Note that Poisson and Delaunay meshing can also be combined by first running the Delaunay meshing to robustly filter outliers from the sparse or dense point cloud and then, in the second step, performing Poisson surface reconstruction to obtain a smooth surface. After meshing, the ``mesh_texturer`` command can be used to produce a textured mesh with a texture atlas [waechter2014]_. This assigns each mesh face to the best-view camera image based on projected area and viewing angle, and bakes the texture into an atlas with per-face UV coordinates. The command requires the undistorted workspace produced by ``image_undistorter`` as input. Speedup dense reconstruction ---------------------------- The dense reconstruction can be speeded up in multiple ways: - Put more GPUs in your system as the dense reconstruction can make use of multiple GPUs during the stereo reconstruction step. Put more RAM into your system and increase the ``--PatchMatchStereo.cache_size``, ``--StereoFusion.cache_size`` to the largest possible value in order to speed up the dense fusion step. - Do not perform geometric dense stereo reconstruction ``--PatchMatchStereo.geom_consistency false``. Make sure to also enable ``--PatchMatchStereo.filter true`` in this case. - Reduce the ``--PatchMatchStereo.max_image_size``, ``--StereoFusion.max_image_size`` values to perform dense reconstruction on a maximum image resolution. - Reduce the number of source images per reference image to be considered, as described :ref:`here `. - Increase the patch windows step ``--PatchMatchStereo.window_step`` to 2. - Reduce the patch window radius ``--PatchMatchStereo.window_radius``. - Reduce the number of patch match iterations ``--PatchMatchStereo.num_iterations``. - Reduce the number of sampled views ``--PatchMatchStereo.num_samples``. - To speedup the dense stereo and fusion step for very large reconstructions, you can use CMVS to partition your scene into multiple clusters and to prune redundant images, as described :ref:`here `. Note that apart from upgrading your hardware, the proposed changes might degrade the quality of the dense reconstruction results. When canceling the stereo reconstruction process and restarting it later, the previous progress is not lost and any already processed views will be skipped. .. _faq-dense-memory: Reduce memory usage during dense reconstruction ----------------------------------------------- If you run out of GPU memory during patch match stereo, you can either reduce the maximum image size by setting the option ``--PatchMatchStereo.max_image_size`` or reduce the number of source images in the ``stereo/patch-match.cfg`` file from e.g. ``__auto__, 30`` to ``__auto__, 10``. Note that enabling the ``geom_consistency`` option increases the required GPU memory. If you run out of CPU memory during stereo or fusion, you can reduce the ``--PatchMatchStereo.cache_size`` or ``--StereoFusion.cache_size`` specified in gigabytes or you can reduce ``--PatchMatchStereo.max_image_size`` or ``--StereoFusion.max_image_size``. Note that a too low value might lead to very slow processing and heavy load on the hard disk. For large-scale reconstructions of several thousands of images, you should consider splitting your sparse reconstruction into more manageable clusters of images using e.g. CMVS [furukawa10]_. In addition, CMVS allows to prune redundant images observing the same scene elements. Note that, for this use case, COLMAP's dense reconstruction pipeline also supports the PMVS/CMVS folder structure when executed from the command-line. Please, refer to the workspace folder for example shell scripts. Note that the example shell scripts for PMVS/CMVS are only generated, if the output type is set to PMVS. Since CMVS produces highly overlapping clusters, it is recommended to increase the default value of 100 images per cluster to as high as possible according to your available system resources and speed requirements. To change the number of images using CMVS, you must modify the shell scripts accordingly. For example, ``cmvs pmvs/ 500`` to limit each cluster to 500 images. If you want to use CMVS to prune redundant images but not to cluster the scene, you can simply set this number to a very large value. .. _faq-dense-manual-source: Manual specification of source images during dense reconstruction ----------------------------------------------------------------- You can change the number of source images in the ``stereo/patch-match.cfg`` file from e.g. ``__auto__, 30`` to ``__auto__, 10``. This selects the images with the most visual overlap automatically as source images. You can also use all other images as source images, by specifying ``__all__``. Alternatively, you can manually specify images with their name, for example:: image1.jpg image2.jpg, image3.jpg image2.jpg image1.jpg, image3.jpg image3.jpg image1.jpg, image2.jpg Here, ``image2.jpg`` and ``image3.jpg`` are used as source images for ``image1.jpg``, etc. Multi-GPU support in dense reconstruction ----------------------------------------- You can run dense reconstruction on multiple GPUs by specifying multiple indices for CUDA-enabled GPUs, e.g., ``--PatchMatchStereo.gpu_index=0,1,2,3`` runs the dense reconstruction on 4 GPUs in parallel. You can also run multiple dense reconstruction threads on the same GPU by specifying the same GPU index twice, e.g., ``--PatchMatchStereo.gpu_index=0,0,1,1,2,3``. By default, COLMAP runs one dense reconstruction thread per CUDA-enabled GPU. .. _faq-dense-timeout: Fix GPU freezes and timeouts during dense reconstruction -------------------------------------------------------- The stereo reconstruction pipeline runs on the GPU using CUDA and puts the GPU under heavy load. You might experience a display freeze or even a program crash during the reconstruction. As a solution to this problem, you could use a secondary GPU in your system, that is not connected to your display by setting the GPU indices explicitly (usually index 0 corresponds to the card that the display is attached to). Alternatively, you can increase the GPU timeouts of your system, as detailed in the following. By default, the Windows operating system detects response problems from the GPU, and recovers to a functional desktop by resetting the card and aborting the stereo reconstruction process. The solution is to increase the so-called "Timeout Detection & Recovery" (TDR) delay to a larger value. Please, refer to the `NVIDIA Nsight documentation `_ or to the `Microsoft documentation `_ on how to increase the delay time under Windows. You can increase the delay using the following Windows Registry entries:: [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers] "TdrLevel"=dword:00000001 "TdrDelay"=dword:00000120 To set the registry entries, execute the following commands using administrator privileges (e.g., in ``cmd.exe`` or ``powershell.exe``):: reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers /v TdrLevel /t REG_DWORD /d 00000001 reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\GraphicsDrivers /v TdrDelay /t REG_DWORD /d 00000120 and restart your machine afterwards to make the changes effective. The X window system under Linux/Unix has a similar feature and detects response problems of the GPU. The easiest solution to avoid timeout problems under the X window system is to shut it down and run the stereo reconstruction from the command-line. Under Ubuntu, you could first stop X using:: sudo service lightdm stop And then run the dense reconstruction code from the command-line:: colmap patch_match_stereo ... Finally, you can restart your desktop environment with the following command:: sudo service lightdm start If the dense reconstruction still crashes after these changes, the reason is probably insufficient GPU memory, as discussed in a separate item in this list. colmap-4.1.1/doc/features.rst000066400000000000000000000077461522646662000161340ustar00rootroot00000000000000.. _features: Feature Extraction and Matching =============================== COLMAP supports multiple feature extraction and matching algorithms. This page describes how to switch between them using the command-line interface or the graphical user interface. Feature Extractor Types ----------------------- The following feature extractor types are available: - ``SIFT``: Scale-Invariant Feature Transform (default). The classic and most widely tested feature extractor. Produces 128-dimensional uint8 descriptors. - ``ALIKED``: A Lighter Keypoint and Descriptor Extractor. A learned feature extractor that produces floating-point descriptors. Requires ONNX support to be enabled at build time (``-DONNX_ENABLED=ON``). To select a feature extractor type via the command-line:: $ colmap feature_extractor \ --database_path $DATASET_PATH/database.db \ --image_path $DATASET_PATH/images \ --FeatureExtraction.type ALIKED_N16ROT \ --AlikedExtraction.max_num_features 2048 For SIFT (the default), you can omit the type or explicitly set it:: $ colmap feature_extractor \ --database_path $DATASET_PATH/database.db \ --image_path $DATASET_PATH/images \ --FeatureExtraction.type SIFT \ --SiftExtraction.max_num_features 8192 In the GUI, open ``Processing > Feature extraction`` and select the desired tab (SIFT, ALIKED, etc.) before clicking Extract. Feature Matcher Types --------------------- The following feature matcher types are available: - ``SIFT_BRUTEFORCE``: Brute-force matching optimized for SIFT descriptors (default). Uses L2 distance with ratio test. - ``ALIKED_BRUTEFORCE``: Brute-force matching for ALIKED descriptors. Uses cosine similarity. Requires ONNX support to be enabled at build time. - ``SIFT_LIGHTGLUE``: Neural network-based matching using the LightGlue model for SIFT descriptors. This typically produces more matches and higher inlier ratios than brute-force matching, especially for challenging image pairs with large viewpoint or illumination changes. Requires ONNX support to be enabled at build time. - ``ALIKED_LIGHTGLUE``: Neural network-based matching using the LightGlue model for ALIKED descriptors. Requires ONNX support to be enabled at build time. To select a feature matcher type via the command-line:: $ colmap exhaustive_matcher \ --database_path $DATASET_PATH/database.db \ --FeatureMatching.type ALIKED_BRUTEFORCE \ --AlikedMatching.min_cossim 0.85 For SIFT matching (the default):: $ colmap exhaustive_matcher \ --database_path $DATASET_PATH/database.db \ --FeatureMatching.type SIFT_BRUTEFORCE \ --SiftMatching.max_ratio 0.8 In the GUI, open ``Processing > Feature matching``, select any matching tab (Exhaustive, Sequential, etc.), and choose the matcher type from the "Type" dropdown in the shared options section. Compatible Extractor and Matcher Types -------------------------------------- The feature extractor and matcher types should be compatible: - Use ``SIFT`` extraction with ``SIFT_BRUTEFORCE`` or ``SIFT_LIGHTGLUE`` matching. - Use ``ALIKED_*`` extraction with ``ALIKED_BRUTEFORCE`` or ``ALIKED_LIGHTGLUE`` matching. Mixing incompatible types (e.g., SIFT features with ALIKED matcher) will result in a runtime error. Do not mix different feature extractor types (e.g., SIFT and ALIKED) in the same database. ALIKED Model Variants --------------------- ALIKED requires an ONNX model file. Several model variants are available with different trade-offs between speed and accuracy: - ``aliked-n16rot``: Faster and trained for some viewpoint invariance. 128-dim descriptors. - ``aliked-n32``: More expensive but not explicitly trained for viewpoint invariance, 128-dim descriptors. Specify the model path using ``--AlikedExtraction.*_model_path``. If the path is a URL, COLMAP will automatically download and cache the model. You can download different ALIKED models from the release page at https://github.com/colmap/colmap/releases/ colmap-4.1.1/doc/format.rst000066400000000000000000000271321522646662000155750ustar00rootroot00000000000000.. _output-format: Output Format ============= ================== Binary File Format ================== Note that all binary data is stored using little endian byte ordering. All x86 processors are little endian and thus no special care has to be taken when reading COLMAP binary data on most platforms. The data can be most conveniently parsed using the C++ reconstruction API under ``src/colmap/scene/reconstruction_io.h`` or using the Python API provided by pycolmap. ======================= Indices and Identifiers ======================= Any variable name ending with ``*_idx`` should be considered as an ordered, contiguous zero-based index. In general, any variable name ending with ``*_id`` should be considered as an unordered, non-contiguous identifier. For example, the unique identifiers of cameras (``CAMERA_ID``), images (``IMAGE_ID``), and 3D points (``POINT3D_ID``) are unordered and are most likely not contiguous. This also means that the maximum ``POINT3D_ID`` does not necessarily correspond to the number 3D points, since some ``POINT3D_ID``'s are missing due to filtering during the reconstruction, etc. ===================== Sparse Reconstruction ===================== By default, COLMAP uses a binary file format (machine-readable, fast) for storing sparse models. In addition, COLMAP provides the option to store the sparse models as text files (human-readable, slow). In both cases, the information is split into multiples files for the information about ``rigs``, ``cameras``, ``frames``, ``images``, and ``points``. Any directory containing these files constitutes a sparse model. The binary files have the file extension ``.bin`` and the text files the file extension ``.txt``. Note that when loading a model from a directory which contains both binary and text files, COLMAP prefers the binary format. Note that older versions of COLMAP had no rig support and thus the ``rigs`` and ``frames`` files may be missing. The reconstruction I/O routines in COLMAP are fully backwards compatible in that models without these files can be read and trivial rigs and frames will be automatically initialized. Furthermore, newer output reconstructions' ``cameras`` and ``images`` files are fully compatible with old outputs. To export the currently selected model in the GUI, choose ``File > Export model``. To export all reconstructed models in the current dataset, choose ``File > Export all``. The selected folder then contains the model files, and for convenience, the current project configuration for importing the model to COLMAP. To import the exported models, e.g., for visualization or to resume the reconstruction, choose ``File > Import model`` and select the folder containing the ``rigs``, ``cameras``, ``frames``, ``images``, and ``points3D`` files. To convert between the binary and text format in the GUI, you can load the model using ``File > Import model`` and then export the model in the desired output format using ``File > Export model`` (binary) or ``File > Export model as text`` (text). In addition, you can export sparse models to other formats, such as VisualSfM's NVM, Bundler files, PLY, VRML, etc., using ``File > Export as...``. To convert between various formats from the CLI, use the ``model_converter`` executable. There are two source files to conveniently read the sparse reconstructions using Python (pycolmap) and Matlab (``scripts/matlab/read_model.m`` supporting text). ----------- Text Format ----------- COLMAP exports the following text files for every reconstructed model: ``rigs.txt``, ``cameras.txt``, ``frames.txt``, ``images.txt``, and ``points3D.txt``. Comments start with a leading "#" character and are ignored. The first comment lines briefly describe the format of the text files, as described in more detailed on this page. rigs.txt ----------- This file contains the configured rigs and sensors, e.g.:: # Rig calib list with one line of data per calib: # RIG_ID, NUM_SENSORS, REF_SENSOR_TYPE, REF_SENSOR_ID, SENSORS[] as (SENSOR_TYPE, SENSOR_ID, HAS_POSE, [QW, QX, QY, QZ, TX, TY, TZ]) # Number of rigs: 1 1 2 CAMERA 1 CAMERA 2 1 -0.9999701516465348 -0.0011120266840749639 -0.0075347911527510894 0.0012985125893421306 -0.19316906391350164 0.00085222218993398979 0.0070758955539026785 2 1 CAMERA 3 Here, the dataset contains two rigs: the first rig has two cameras and the second one has 1 camera. cameras.txt ----------- This file contains the intrinsic parameters of all reconstructed cameras in the dataset using one line per camera, e.g.:: # Camera list with one line of data per camera: # CAMERA_ID, MODEL, WIDTH, HEIGHT, PARAMS[] # Number of cameras: 3 1 SIMPLE_PINHOLE 3072 2304 2559.81 1536 1152 2 PINHOLE 3072 2304 2560.56 2560.56 1536 1152 3 SIMPLE_RADIAL 3072 2304 2559.69 1536 1152 -0.0218531 Here, the dataset contains 3 cameras based on different distortion models with the same sensor dimensions (width: 3072, height: 2304). The length of parameters is variable and depends on the camera model. For the first camera, there are 3 parameters with a single focal length of 2559.81 pixels and a principal point at pixel location ``(1536, 1152)``. The intrinsic parameters of a camera can be shared by multiple images, which refer to cameras using the unique identifier ``CAMERA_ID``. frames.txt ---------- This file contains the frames, where a frame defines a specific instance of a rig with all or a subset of sensors exposed at the same time, e.g.:: # Frame list with one line of data per frame: # FRAME_ID, RIG_ID, RIG_FROM_WORLD[QW, QX, QY, QZ, TX, TY, TZ], NUM_DATA_IDS, DATA_IDS[] as (SENSOR_TYPE, SENSOR_ID, DATA_ID) # Number of frames: 151 1 1 0.99801363919752195 0.040985139360073107 0.041890917712361225 -0.023111584553400576 -5.2666546897987896 -0.17120007823690631 0.12300519697527648 2 CAMERA 1 1 CAMERA 2 2 2 2 0.99816472047267968 0.037605501383281774 0.043101511724657163 -0.019881568259519072 -5.1956060695789192 -0.20794508616745555 0.14967533910764824 1 CAMERA 3 3 Here, the dataset contains two frames, where frame 1 is an instance of rig 1 and frame 2 an instance of rig 2. images.txt ---------- This file contains the pose and keypoints of all reconstructed images in the dataset using two lines per image, e.g.:: # Image list with two lines of data per image: # IMAGE_ID, QW, QX, QY, QZ, TX, TY, TZ, CAMERA_ID, NAME # POINTS2D[] as (X, Y, POINT3D_ID) # Number of images: 2, mean observations per image: 2 1 0.851773 0.0165051 0.503764 -0.142941 -0.737434 1.02973 3.74354 1 P1180141.JPG 2362.39 248.498 58396 1784.7 268.254 59027 1784.7 268.254 -1 2 0.851773 0.0165051 0.503764 -0.142941 -0.737434 1.02973 3.74354 1 P1180142.JPG 1190.83 663.957 23056 1258.77 640.354 59070 Here, the first two lines define the information of the first image, and so on. The reconstructed pose of an image is specified as the projection from world to the camera coordinate system of an image using a quaternion ``(QW, QX, QY, QZ)`` and a translation vector ``(TX, TY, TZ)``. The quaternion is defined using the Hamilton convention, which is, for example, also used by the Eigen library. The coordinates of the projection/camera center are given by ``-R^t * T``, where ``R^t`` is the inverse/transpose of the 3x3 rotation matrix composed from the quaternion and ``T`` is the translation vector. The local camera coordinate system of an image is defined in a way that the X axis points to the right, the Y axis to the bottom, and the Z axis to the front as seen from the image. Both images in the example above use the same camera model and share intrinsics (``CAMERA_ID = 1``). The image name is relative to the selected base image folder of the project. The first image has 3 keypoints and the second image has 2 keypoints, while the location of the keypoints is specified in pixel coordinates. Both images observe 2 3D points and note that the last keypoint of the first image does not observe a 3D point in the reconstruction as the 3D point identifier is -1. points3D.txt ------------ This file contains the information of all reconstructed 3D points in the dataset using one line per point, e.g.:: # 3D point list with one line of data per point: # POINT3D_ID, X, Y, Z, R, G, B, ERROR, TRACK[] as (IMAGE_ID, POINT2D_IDX) # Number of points: 3, mean track length: 3.3334 63390 1.67241 0.292931 0.609726 115 121 122 1.33927 16 6542 15 7345 6 6714 14 7227 63376 2.01848 0.108877 -0.0260841 102 209 250 1.73449 16 6519 15 7322 14 7212 8 3991 63371 1.71102 0.28566 0.53475 245 251 249 0.612829 118 4140 117 4473 Here, there are three reconstructed 3D points, where ``POINT2D_IDX`` defines the zero-based index of the keypoint in the ``images.txt`` file. The error is given in pixels of reprojection error and is only updated after global bundle adjustment. ==================== Dense Reconstruction ==================== COLMAP uses the following workspace folder structure:: +── images │   +── image1.jpg │   +── image2.jpg │   +── ... +── sparse │   +── cameras.txt │   +── images.txt │   +── points3D.txt +── stereo │   +── consistency_graphs │   │   +── image1.jpg.photometric.bin │   │   +── image2.jpg.photometric.bin │   │   +── ... │   +── depth_maps │   │   +── image1.jpg.photometric.bin │   │   +── image2.jpg.photometric.bin │   │   +── ... │   +── normal_maps │   │   +── image1.jpg.photometric.bin │   │   +── image2.jpg.photometric.bin │   │   +── ... │   +── patch-match.cfg │   +── fusion.cfg +── fused.ply +── meshed-poisson.ply +── meshed-delaunay.ply +── textured │ +── mesh.ply │ +── texture.png +── run-colmap-geometric.sh +── run-colmap-photometric.sh Here, the ``images`` folder contains the undistorted images, the ``sparse`` folder contains the sparse reconstruction with undistorted cameras, the ``stereo`` folder contains the stereo reconstruction results, ``fused.ply``, ``meshed-poisson.ply``, and ``meshed-delaunay.ply`` are the results of the fusion and meshing procedure, the ``textured`` folder contains the textured mesh (``mesh.ply`` with per-face UV coordinates and ``texture.png`` with the texture atlas) produced by ``mesh_texturer``, and ``run-colmap-geometric.sh`` and ``run-colmap-photometric.sh`` contain example command-line usage to perform the dense reconstruction. --------------------- Depth and Normal Maps --------------------- The depth maps are stored as mixed text and binary files. The text header defines the dimensions of the image in the format ``width&height&channels&`` followed by row-major ``float32`` binary data. For depth maps ``channels=1`` and for normal maps ``channels=3``. The depth and normal maps can be conveniently read with Python using pycolmap and with Matlab using the functions in ``scripts/matlab/read_depth_map.m`` and ``scripts/matlab/read_normal_map.m``. ------------------ Consistency Graphs ------------------ The consistency graph defines, for all pixels in an image, the source images a pixel is consistent with. The graph is stored as a mixed text and binary file, while the text part is equivalent to the depth and normal maps and the binary part is a continuous list of ``int32`` values in the format ``...``. Here, ``(row, col)`` defines the location of the pixel in the image followed by a list of ``N`` image indices. The indices are specified w.r.t. the ordering in the ``images.txt`` file. colmap-4.1.1/doc/gui.rst000066400000000000000000000060131522646662000150640ustar00rootroot00000000000000.. _gui: Graphical User Interface ======================== The graphical user interface of COLMAP provides access to most of the available functionality and visualizes the reconstruction process in "real-time". To start the GUI, you can run the pre-built packages (Windows: ``COLMAP.bat``, Mac: ``COLMAP.app``), execute ``colmap gui`` if you installed COLMAP or execute ``./src/colmap/exe/colmap gui`` from the CMake build folder. The GUI application requires an attached display with at least OpenGL 3.2 support. Registered images are visualized in red and reconstructed points in their average point color extracted from the images. The viewer can also visualize dense point clouds produced from Multi-View Stereo. Model Viewer Controls --------------------- - **Rotate model**: Left-click and drag. - **Shift model**: Right-click or -click (-click) and drag. - **Zoom model**: Scroll. - **Change point size**: -scroll (-scroll). - **Change camera size**: -scroll. - **Adjust clipping plane**: -scroll. - **Select point**: Double-left-click point (change point size if too small). The green lines visualize the projections into the images that see the point. The opening window shows the projected locations of the point in all images. - **Select camera**: Double-left-click camera (change camera size if too small). The purple lines visualize images that see at least one common point with the selected image. The opening window shows a few statistics of the image. - **Reset view**: To reset all viewing settings, choose ``Render > Reset view``. Render Options -------------- The model viewer allows you to render the model with different settings, projections, colormaps, etc. Please, choose ``Render > Render options``. Create Screenshots ------------------ To create screenshots of the current viewpoint (without coordinate axes), choose ``Extras > Grab image`` and save the image in the format of your choice. Create Screencast ----------------- To create a video screen capture of the reconstructed model, choose ``Extras > Grab movie``. This dialog allows you to set individual control viewpoints by choosing ``Add``. COLMAP generates a fixed number of frames per second between each control viewpoint by smoothly interpolating the linear trajectory, and to interpolate the configured point and the camera sizes at the time of clicking ``Add``. To change the number of frames between two viewpoints or to reorder individual viewpoints, modify the time of the viewpoint by double-clicking the respective cell in the table. Note that the video capture requires to set the perspective projection model in the render options. You can review the trajectory in the viewer, which is rendered in light blue. Choose ``Assemble movie``, if you are done creating the trajectory. The output directory then contains the individual frames of the video capture, which can be assembled to a movie using `FFMPEG `_ with the following command:: ffmpeg -i frame%06d.png -r 30 -vf scale=1680:1050 movie.mp4 colmap-4.1.1/doc/images/000077500000000000000000000000001522646662000150135ustar00rootroot00000000000000colmap-4.1.1/doc/images/dense.png000066400000000000000000034071551522646662000166360ustar00rootroot00000000000000‰PNG  IHDRÐ#jîšôgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ< pHYs"š"š¾Ýû*YiTXtXML:com.adobe.xmp 1 LÂ'Y@IDATxì½W·�Ùu¦7wÎù䀜P@¡PÅP¤DQjSÒh·G»/zxxøøÎ?Ä¿À—ö¥}å¡v�Õ¶F7Õ’%Cå€xrÜ9'?ïÜÉ–È"KU…B×Î9;|ß ïZëÛß\ï|çŒìŸÖç�€@@ ð\   rä¹hIhD@ �€@@ �€@@ ðeE`>Ÿ["‘°Ë‹sûŸÿ§ÿѪ•eëŽ'öú�ßµõ•»þÒ+–HÅmmcÝV–«ÖﵬÓ<²û¼cãþØ¢ñ˜½ñÆ»–ŠçìÎkhkW¶ì+w®ÛêÊ’½÷á;xüÐRÓ®%b#›²ãÙi7­ÝéØÞá¡ýÝ÷¾oýþȲٜEÙ UY³ÙÌŒ6Ígs›ú&iÔ"}µÉhds‹Z,ÆO”cx>Žø(nãùÔbüÓ¹ãÙÄâј%Ói΋plÔÆ“?Î�sÌÌŠ¥’uº]Î�Y±˜³élê8Ähc¿×ç§KýsK&á˜Éhb]Ú½²ºd¹t¼.-–HY«Û·r®b¿ÿ�W-OXg0°N§gÓ±Úe–¥ åBÎr¹ mY´/—ÍZ„ö¦qKSÖ˜.Çiçt:³J1o ι·wh³y„c’–ŒGm4èY2•¶ápl#p–‘XŠzÆ´­o Ú9rèf6ôm>y}3ÊŒG„!Ýæœ íÒ³D2iiÊŽØŒr)g2�Žå2 ‡6aV–kŒÏ�:‡üí 4šÄ¹)+å 6£Ž9}ŒóºGûl£ïk1Ææ�Ú+ s¹¬mllØÚú ÇÌíôôÌËXûÑ?µÿõÿøsÛ®®€EÆv¶¯ØöÖ†ÅèÏ,‘¶dµl–œÚ£{-OÙæÎŽ]¶ê¶\®Ù 7´GÚÊÚª¥Àl4�؈6Eé_�ÏÔ¯\>M•sk5ZÖ<>±ÖÙ© ÇC»¨×msyÅjÕª5ÏëöÕ»w¬ÙîÙ`е»/½Ì13+äS|^bNN,qðÒ¬cúùO*S°ý£ ;½¸°1e&â«•«|&°Á³Ýµƒã3ÃÈ|b0ÖZö4Éf´7FqÞŽÀ|2漈噚S>Ÿ±’à;æsá“Îd­Ýjñzì}Ž'˜›Ì•3Ïv»íý­U+–Ã.s@¼¬XŒ5A4ÆŒ�Ö‘&F>ŸµJ9Ë|ÓÚ‰X³Ù²no`¥J•ã¦6ö­ÕìØˆs–——}>˜1ÖÝ,±k»;Œ1sˆs�OÎ쯾÷c;<9·L:aå¥eÊÏ;ÙÑn¶­ßi2—‡–É,_(xŸµ¾ôÐZ›RÇLó3žd¹€#sZëˆÙîýK‚�^õ™«Í:kl8Üû,<µ¶ãœ›�X$7ífÝÍè‡pžàgN¦4?èƒÞ‹ÓŽ(mךÔ�Öy\˜iµƒ»XjŒIo€¹uZmÖÇÔ2´Sk"ΚO¥SŽáhÔãºÔ£ïœ@ÿEÈë¡ë�þÉáFsYÎ$š�ÙiÚ<æ\­«�g­k.©��@wøÂ¯€@@ �€@@ ð)" ;MÖ_x�€@@ |"t[%Eª6ÓµÙ®ß÷ZŸ×pr@à)R[ФׂŒ�C^VªK¬;ˆ+H§r¥ 1Üá5dm£nHÕÄk·×ƒà„T-V!°²�P‹5*63 =€ŒµYR4 A qÆ_‘ô"ŒWQ÷¦!½ ËxÏ,ŸIQ¦ñ(,êe2lC>ìC2ꥹÙ$žøF©ÒG�–"û¥¨•Ê\?"7EÞF!Ø'œ˜¦Ü>jõ,jh‘‡|HY3Èÿ¾¥!ÉÒ™¤—=¤ÿr˜ó™¬CÊ—ºWv�Ž_Ô1uX¤'¼�]ß^µ�eí”Oƒ Ä9²Neô9?ÒŸY‚QD¼DJÅ=“zü qGm�ÍÅ ,‡Ö…œ—j\¤i§)qSù²“â"òEz'!³�rA0&c�Ór6 Í:gJ;z�ƒ¨“ÀÃ.dóˆ¿Ã1 o‘—\VÅãCƒCšº{�åôü;[žÇÁÐÉbæH%Wôq9;¿ÐE™ÿR{÷-C�ýAþŽ HEfJ­K´ÆQľ_Áù•C‘¬1¶“™Õ2+vzôÊÌ±Š«ª'`×¥Þ ¨öQJµŒÝ{ïˆê–­olÙáÞýý{«mnÒvæ8?í§0¡:Ÿ‹ž¡nF �´Î1�é5}<±è4j­ËŽ%W Ê9‡QùCó¤ùŒ‚›>D#"\!xåàæ"sçR¤s4‡{?´sD{Ç8�œœžs^Ö‰YE  ŒëˆÏÈB*€…æ‘æUÇ tÕŽ™æR‚ˆ1ˆì!ãÏРàÎp¾� NSÎIŸfkŒº8®L˜¯sÊ”â?ÊI)æ4s)Åq®„g2Š€O�¡ÈûmÒÎøkµ{àŽ�îÀçHŽ÷¯ß½aµZÙº(±›�®¯¿xç�YÎ.!ØÓé¨åÌé4²8Äpn±.s·g?ýñvyïmK¬m‚2x¯àjÀ9r|‰°PÙ3/ä@¡ë�"HÌqкP{S¬C9ØH¥îã)§ž¹Æ )D4‹¸å¬ÌzK��fØ„ñèr}�cÉ”ëN„52Äá$&§¢"øg\å £ë‹æò„c„C‚ñœâŒ"gÕŸ`­G47yø1"÷ýUø�€@@ Ÿ Øn<´!�iíÖõ/ŠÕgÿè­_|ž}*hÃÁñ׿zx�€@@ ð…EÀï›~þuŽv A¤–¸öºÃ# øÔ€<‚À+¨æ �^‚Ð,â:G¸n‘†ãab2…µTÉ"Võ7 ©Z zr ¶T°gçç|ÖuU'…Yµ«“Ò�dz¤/ªâ¥rÉIS…´á¬PîR»æsiq“ZP�<™²Ö¥F2^œâÇÀˆñÞÐ 6‘s²²†ׄ`¹X]Zug›N‡¶RG*?¥üŒy‚M!µ“‘¥„ÌNF5¯Ú(ò?«,¢_ä�«òMW½;% W,~š°îÉdÚ–V+…˜Ë@DW!¥xWÈèX, IN›/!jEüK=‡� ö±¯°õÔÄYÔâS@š B‚+uJä!„´.vÞ“R~¯Mhî¡¶¥ä—b]½œ¦¨„/ê=+B§ÀI!«uÍÌÈ!E¹.žEìN☺°þ ¹- ú¨ŽeF‰È�ŽxÙÏÓœ�ÂÈ_‘›z(ä»ÂdëQ†¿¼¼pÂR£¡0öÚ$å±ÈRE ˜ÅJd©ï¯noØŸ|ç[Ndž¶>®²ãr`àüäïG‹sî1¡×û�¼µåU;?9±B©J„��]Nö­´¾aãˆÎA=Ï8LDâ3Gã)NCDàÏ&ÑyLó¨Ü[ŒçTênˆ`a$ռƒÏpP(ðn·ÅcÎ0frJNrÞ˜á¢z4ÆRö«¥R‘y²žÃ8F´ˆ|ÐïkmÈ’–q”²YaÚ•B@8ö{„៷Pª£¾�|žy;™ì:FêlÍU=DªÇÁ¢ß’sã örj‘½›'=@"Áü£Ÿiú»PP+ÒÃdžóYQäðÁü\á;¡�ËKÂík}*ºƒ`Â15÷úæŠ]¿¾ÉxË£o›Û[ªUi³ÂÿY[DŸ`Ž ûmæ'‡á :2Ñ6é±î/-‘­@D£àöu­Q'ŵ–SÇ©¡ 'zCÈ{Í …�Á-Ç 9Åè‘bªÍ³YÁ祮 šKz!Õ½B³ËÙA¸È)D2š?Q9ppŒPD”‹pwÔÞ—3Šœè9ïyo¡è³®#ô7Y8é݇!ü �€@@ ÿ<d é¡�‚ÅcaÒêõâGGWg©�;"qE>BHˆQ7„;dlŸ¼Öª3Ú�ÐlBÐA´IaS8kŽ¢ž Ry˜",·Èç!jbå‡qóvµ ‹¥”ÕµEaÊaýPt_²ºàêÕ‰ ™GÙꇜÒ©¼mÒV‘ÖRþæh³ÔßÊu®÷:8´iÛy½á9 ›í>ï É}ž·Z±`EȽ}tu>¤ºHpµU¤_B²�€”±µ2 Ô³¶ºîdk³qé¤o„>.T󄌒Dlõr”~é+4"d#ùÌq`˜ÏÀˆëeÌDÎËIà²8Cù9œ„oƒððÊ7-u´‡½ç==ר+‡yBM·‡;OB„Š8–<™Y¨ù�”T‰\rU4uJý­ðá]HåÍVè{ÑÏÎÛ€xß¾rÅŽŽöÝACº>WÎóùå57f3µ¨õ9KaÎ5Ï\ùLtåxW˜p…L—‰4W›„Èi<Ó\eŒÆ†e˱DĬòµÇbñ"·§#æÁ‚¨wõ¾·{¡ÆŽ@üÊ¡C œ9’œ/U{Ÿù["D|’yè<ºÁˆ¹Ø¤†‚säø‘fΉ¬¦9†NèËá"IT�»´¼æáϵsá¡û™gÖÍŒÐóŠ*ÐnA°“w¯�4¡z[ÿ"ÓUBÐG!�¥ànµâÍ·>°7Þ=°å 0àDÍàÃëO$¾&ƒSâNä3çx­z½nŽK‚YŒ×¸YøÐT_Ò�K‡ÏuPªöÁTi˜´Í›#Rœ‡!4'åÜ£i(uzÄÏ9Îsµ�zDà+Ò„Ú¾ˆX (´ŽúUo„9¥µ¡×�@whï€@@ �€@@ ðñÀ&[<ü ¿0Äd$öß&ƒ+�Ñ«�azO†¡ŒH}29ý!;ïç/ž¼þüZó/ä‚\¶±ÿu_|^Œµ3Ç»2ŒÙÇðï,ÎWz�€@@ <¿è»ZÊ´›ô‡{÷¬ŒPù•�ÏZ¶´¾é€:ìéÍÀóÛ�в€Àá—í6D“Y‰¼Ö ­|Ø"{CH¸�Ôç�kºÏž²þ” ¼LøvƒpŒÆæ¨�‹( ›v~Q·Ø¸!&’‹rHVÚr% ­²2äWnnå%–*»Åyï²›¤Ú–óŒB‘Kª°ì"ºDl‰)~K¥È{åržC´*÷·òSgP`+<»Hx©Ï;´[äz2Rí� jöPÜ\h¤bíC„7! ¥¬Æ„³F‹PÕ�äyÔé…B5rÖòˆK‘šsˆ·•Õ%+èÊV’Е¶Tªоhg(œ9FFGLŠ„¦n‹œ&Ïw–üçggÔ…:Nï£KC‚J £ò&ÊòN[á¹q‡tNá¯d¢òT+Guu%Žê—RPw:(¸³œ/û‡þ‹°ä)ä.aùQÿ“ ÜzÈP°U(ë9ž%@jë8íÈ�—BËÇÁs …9ù襜îñÜCÚC`+d¿Â•K.•´ˆHõ›šPd/¬«l&Gù Ŷ¸+4¹4¾RÛKÕ-%7µû¹®–ž� ^²:¬÷ýõñ¥l93ˆ¸—AÝ�G²šìô5n]œD(gótÂVªä(Žnwó|/Õ´€P¾oEPþua UþúʦQ€7ëäh×¹´«C?EÖ C‘³¬œ7 Âé¯r¤S íH2'òË\ä¸>ΧnGe/œæà”Eõï¡ê©ß•Úà$Â]á• ÍÚê²Þú=ˆk°¾ÞVÂ�ë»O}Ö:Q*Ï™Îø*�w�¾(Ò€ˆð)Î&-" h­¨�ú^”#¹öŒ�Ö�Béëyü„�"=ÈabJdaVIÖ`F©4?˜»ë>Î GÇçÖ¡-b=MnôñÀ’ô T|M+ ÄÑiÝÞ»·Ï:g®‘² GÈu…‰/e"‡Cƒò”k�Šô†{í—Œø«ñÙŸ Mr‘Š\óPQ4­´vã úL; `c D`lä`çs‘ùª¿ZŸ æ¸È�Fu 3ï›}Í#ÖkŒs˜UŽ»ëZ°ÂJ×)�©æE п0_a¡¡�€@@ �€Àó€€ 9ì<ÿyú\¤­ 2‘¸c ÛÆl.ÅFÇÊO¡�m¶8IÕýä©^†ÇG" ¬€Ó omÚic@�…œÚ¥L�‘«�zú„TjaÃ¥–šCNæBåsíqÊKÑWT¾½‡ u]Φ¹òò_%d!H¥ôU¹CÆI¡ã¥PŽBDŠoC¾Šè%„º+ÚQ…ËnË‚©‡í¡ËxË)CŽ œ �¡“£Á¸º²ÌühÛùã=ÛÿàCëåU+*´8¤ï'€)x¸³Ä!'z¯ &×ô«G{´FN:vÚÚε []®2®8Œ°æ¥^ßÜØt‡õYN4m¢Kh.+zƒÚ&2?Î÷|'�S 'E³ðh”ßbmèx9TªÖ ýä:‘ãœã> ²€"%ÈÉA{rFмc¼�sí Ìf¬yÚ¬k]6‘ó9©ññ±å% µ~DÀ+A&�7Rø�€@@ �€@@ ð[" Ń,27‚1Beà åÙŒ‘Á‹>>'DF]w¡Žá;g*†A.Õ u~a»ë–¦£Œe¿áñO6z`ë:\2z]¢�5ŒéþPĹ4ÊÙGØB6w|Ó� ,d)liØÞ‰h3 ƒüµyð^à~�€@@àyC`ñÝ/ÚJÕ*Õè2‚¯ö ›æ®2\ܨSD!eu!ˆ=Ÿ:„9–š¸°xl0Ðß.¹µÇ<ñ™l ©rò< #w˜V?"~ RýŹÔÍ]ú(û$‚õöúuÂd×(“�í®úåzÆÅíB]äå%Äß96Z„üVxw){gÂæF»ˆ#B&¥0Óœ€�™Î±±)9Ny¾gRyóW ð9½�‡éSØ}‘¬"e<és…É—3±ÚR47Ê…®�ÖSÆJ䲆‡“±Oå,Q®*T»¨­!hç�æIê-âR$¼æF¢2)Üe›1n2‘uÞ�ñ“â\¤§ÂÜ+T½ˆÉä|©˜u‚t€“ÔyÔ…È¿l6 Q!Ö)Se)÷zkxjIìç1õÉA@ÄçøìÌvQé_íU;BÁ ~«»»8®œtVžó rŒ�ÆfÄø2Ü´•°Ýà2%G·ú=d^5pæ˜wGvJ™Ê?û��Áéœ9Óƒ|î)4'…½" P?1»lâ÷ôâ ò6êyå¥L—FŸ¨ ÊÃ\ì°7)]].yîp'Œµ?À?á3bž ã®°ô"’5~ K€1D®°”[ýþ‹ðû�ÅÌU…÷W})Ð¥ ÖçZ+;)º‡8I´ˆfÀSæ D5mŸ2÷Fà¯hy¢Ö¥R×|6Ræ+¾ÛÒÌ�ómB½Š Åz¿ßur:†SÅèIXyÐ}ÖT„¶/¯Ôl}c‰( 8—<çW¯^ÁWjÈsHN‰| úå(ÐãµÖti{‹–N6-¿)„ë ó>f>ˆ ßÞZw"þŒèMHõ$×—s$Âm·[˜ý1ÛÚ\÷¹v|zFùäFç<åœo“ï½7è2³³–cÒ-œà ÄþÇ(4� Úc¨BÒ—+Uæ Ì£@ ûÐ|~¿üúôŒª–u=£.}æÕ|Ì>αŸyÃ?¥ ¾Œ}ú” ùÌŠù¸˜Üã?³†‡‚¿Cüªu§›_áÁ=> >ç9¾ÉFÃ4k}Ã3?ÁFu …EÒÇA{‹Í•¯�•gùø¨þ~ÔgŸ´�Ÿ¤ì/ãwÝ'Á㓎Åg}þ³ìÛoS×osÌg�I(ÿã!ðE^ó¿i¾ý¦Ï?RÏ×ÑÏ[ß>I{ôͬÍüz«i=´•TÛ‰›“öÔV_X²åê2Ür�ûdß៤�Ï×è‡Öü:>¯1þ¼êýu8üÚ÷i¨–‘HÖ>äg¥\µt¾ˆzÂ�5˜‚<ÎIU Q­0ÑQH¸÷â=L©“Eèr¶Sña¢¡åª¬Ï|%ø7ŸÈ°<êåÅ%dä—B¯SnšÐèQ”¤=ˆä£ãcH,ˆn”ÒR‘Ï!Èëû'–¦ôÕ�’uN›„«æùõ]«mlAò§!Ç;ž[Äð}ÜëËKv—œÚÕÕ2JaÂ_þüÎ�çÞ°ÿäC+ ^Í#__ƒ ­Uò„ÙÎZ>-Âx†â2m‘ßE•Û…¸“Z·ÙáuacÕ•öÒ G! c„"øÔöx‚�Ù(›ó–…9 |¶}p¹¹ÀW9¸•¯{EÁ<ƒ4¥�]Ô¸)ˆÀ2*ëtŠððôUDhšåÔð1Ôð9©ˎL$2´ïÉõŽz�KáïÇØ>¥¥‚«Í}êHÌ N!TE®V4F%-›“÷DÓ:8y¾å Qxꓵ5Ç®@æFh›œ)"¨šÇC弇 îE¬RÊYe­ê‘¿bÔyI¤�ÖÙ‰–@? flådñ”b]äŠWþq…Ÿó~&ÃQ%Ÿøô/À¬Mü„SäŸ àçUïÇn0 Õ�q•&t™U*+P¬ÜMC"ÖO."TJa‘à HA‘u ßÜ� ­Tv!Q£CDŽ B/Q�*—öÒRÍF�sºpˆÂ c‘d-H2…iÌV„<ëÕQÚbé³,¹ÌÛ½3ˆÚ’Í’Y·nÚÎwâô.„|•¨Sä`Gå]*W¸÷ØÉÉ‘½tûŽXL{ÿ§¯Û÷ÿüϬ²½ãŠñ!DâupÚ�ª‚Rý¿x�Ï º Ök„[©&us]!À3�ù²Éz(´â<…cT°ÕQ*·Qáî£.ÿÉÛïâ ñ�ªzeë vGÞð¾uçÔ«ˆcQ'F•Ë]¤œTâê¿æB§‚bçŸZ§ëž]ž�¹“P«Û´Ã“}'w5%r¦oï\µÇGôsfw¯­[³qŠ¢÷-;C½>@Û#Ÿ¸TÃâcoߨµW^ýªýðíG6îuì�^»cݳþôMBç·É5/Rt¡ø•·TáR‘‹Ü•Â\aã§8LÁ¶M~øV§ŽR·äò€qUû¿úò-ûö·¿m‡õ¶^4ì•íUÈà�ýìg¯Ûë¯ÿØö2Öžx0‘è,�¯ÿÞ+öÕ×~Ïš½ íœÕPŸÿäÇ)ÖÈ-_ö65÷¢µ/NªWÿ 5ó„¹8fn®/á,Qqzf æ—Hõ�Õe»}ëáÁWìÝ÷Ùo¿gp+UË®ŠWd8·ó úÏöö¬X©Ðó(Ê謕É]¿½¶f×ÖWìßýïf�>X´WÚÊQ¯ï©pÖøÿé¿üŽep(‰2w6—Êö·ñWvFt¼Ød9€Ì¨­œ.Ø¿ø·ÿÊ®@èÞ»gÿñÏþ†××çþàæ"¾ذQ»s÷¦}íîmKå ¬µ¬Ý½qÅþæoÿÁö÷ŽìÞÃÇ8e”!œ!»ƒ¥r†t#;´˜Çe+å¶¹YÁF&_zƒ0æ8uôû(õ9¾DYßüÖKöí?zÍ�ɇ“k»Wìû_þ�õ뫬@:3ÿý�=¬5ËÔe]+cýâ0†“€ˆp¥ ³ØË„@§1ŽU´ å`ÏY!–ÊÛÇ8#0^1°� ¿CöNoìIam¹h|§Ë!GáóU‡§: zB†²&Ôc]]{aWÞvQoúz�Ë2N1EÂã7..Ü)äöK/ºâ\ju}ƒËd}kË4W‹¬É¯¾òí` 5>ÔYNWluzž5ªh•¥ ©'–‰v@ô.~Rùç‹Dt9 M�¿ÍŽ ë�¾˜&áw@ x.øÂÜ\?h…F�€@@àÙ àßÏVÚXÂîã žüXZ cm?°ìì±¥c줇rg3Ã5„¼ê§˜\ãé>Šõ…W¸Âü�§i[yáÛ¶öB“£NóóTPðlzõ«EÀ 'Œx¶€ìäð>éï[.-e±Á—)ŽÓB‘°} =çu*6%!!ÇR�œã%¿níùª‘¨ÎCÀÅPe°OösçUáãýƒ'47 _*äUÈw¿H¹ ôÝ�[–AØ v‹×íþq�0¯]ËBŠˆ$yÖŽp_*¬Cg~çxbÞ ÐDI ÿ‡öÝrÊg}|x A*U-οÈPWC,—*¨a‰¼U*’÷%mšÜÇ%Ô¦CœŒïŸØ@ªÒ'j^…ûV¸u©Å¥ªÙ>Æ^JP�‰wQû_ýkÛ$œs"óëßü«-/£T-@äŬ|r´ï¡á(Ùû¨·ûØ\)ìƒmúÖwþÄ꼞¢ò–êtÔoBà‘C²=K»·ÖD®&Q½ç 5½jÝ󛢄—Š<…@Æáy’ÌY“ÜÇr$'!Ú Ÿ*(tz”pßuËn>‹âu™ÞãyO gêKâÐ#eý˜º¤â—:\9ÚÒq)Ì +¿¾s…²Ê®ÐnLPÈn¬Y�¶¢Rï NŸ¡Þ¯Aì& c)B§–�„Ÿá´0¥üõÔó¹ ;9=· *Zô+붺Ñ7£ÏXžÂk†ÃpquËþôOVíøàÐsÏkŒK¨¸eRy¾t.±e0ÖxH5ž/•Qf§<ŸôÉáÑ"D6FV:Cë+W ˽âJê‹£sKr>‚ÌìÒ·ßÿÖ·ìî+¯Ò‡Cë¢0Ö8Š`ÍKvõÚ+æ vpx*š“È[^]CÝÏ$ÃJäì*˜(_õÞýûÓh·o;„¯î,[â:„g!‹šøÒÊ…Y{óú9Ý ÌC²•£^�`@¿|{B½Â½€Ü¿´c¦ÌáåõUˆwÂáCª+„xa¹Š- J8ôsùÅ—_´ÿ~û°¡»{ áJ¸ˆ\‘¼ Ïž¥ë[›öÕ;·ìáÞ�$×¶{eÃ6w_@å|n]r»Ë‘DÊyÍçsé•»7lig›ˆ»uýªíÜx燶�ø¾’3ø˜ò}Îsle¥j›kV¢?�Á•Äï¶±{Ýþ5Í-¾÷ˆ|ïǧ˜¿ÀUœJp4ÙÞ^·4DþÁ£G`S°2ó% Ýa�z¼ÈzÉÛÚÆ²­®á<ŽCÂ÷¿÷¶}í÷îÚ7þà÷pþHÚ%ý”Ê\!Õ:¿@d�d 'æ8]D]ŽÛx)ÚÞ„¼áI"6LF}/Kã{ÊüÓÜKေ¼ºN»ÓVÜØ$Á©§L¸ ¼~ Œ‹(³\?äx#å¼Bþ—øÎÎ_œ�¡ë!ØIÖ#?„Ô¿$t~–¨9YŽONíŒãÒ\3ŠÅŠÅIÝ¢hggçža=·b—ç {p`m‰|W>øÆÅ)÷ C{á…]k¢BÿéïøÞ@my…6‘–‚1Pû2¤*xawËÎŽÏì½÷?Ä pàyšw¾ÛiƒeÁ–j„�ÿ�ÿ†�€@@ �߀ÎËn¨KUБ—Œ ƒHû}BÊÝèCqŽAWLjëÂl¢ v'âñ 23BŽ›H7È¥˜Š$PC³I2À»^ƤHÛðøh´é£‡þöÁþðá=ËÇ” uF.AáÍ> ^î:¢ÞkX*[f³�0€Ó¾åÈ!X¨ÊhîX´C^5¼âGñ Ô&IÎCšÂà*|]!�€@@ ø|Ð÷±qå`ÕýV«Í=ÓlÍ.F8ÇÅŠV�‘žexŒ ‘T95ås�|¾ µ¾ °ð¦Ó'Ê[R­Rc�·±Y¶�pÛäªVîaUÈNå'Ïb\ Ï,Ì©�¡P^†ìëuÛ¨P!&!´ñ*vÕ¶òc+�²È:åtq®pßÊÃÝf�Ϧ1[ÝÚ¶Õõ Û½qRåaÚ¢~óR™*Ìú�oÛá»oRv„:!¨7¯Øß~÷ÿEI�Š™ëÃÅùý ÿ8Dw BúÆkßp…qž°ÐÊ©]ݽmCbÂCO[ºR#2˜Ùß¼þºýÕIƒ‹N¶»óƒ6Ž�|Êá•«,Y¢œ³þ¥¦{NŒ‹HŸv>Fžò8aÖ3…Exï(Äg' êµmË¢\nB°[÷Ò}dÇ„>¯¡À¯'N¤ÔwZoÙ¤Þ£Çû¨Œ•ŽjbÏ�ì˜0òUœrŒ‹0“*9†Úûûó̓sÈö!þÁ1;¡ÏNŽígˆ2 çÄ`Œ6I­®¼écT¹>v˜@ýAÒ”!M£ ÂУÎM+:šò}£ö0å”YÇfÝxl�Ã[‚ÜWT�÷z5ùcû”éÛ(¹3ú)Èr©¡=·=Ψ¢?<<³{ö³·–{…è5†î aAg€×ë˶ iŽ6™qY�9qtðȪ8gܽûŠm_!‚[>ƒ�GèzpéC¶BöŸCܦ •¯í¬ØÖF�¹7²Ç‡'v†}ìÀÄi‚îñœÆ£Ï„”‡ƒû{¶¾»kk[6­d�Ü1ÏÒ(òÔ‘]ßÁ™¡h} ’ǶØc’ØØ²ë8* /qäb>*gû·¸¶ÎZ0Žì²=´:dp„uQb½ÌZ�ý�ì ¯pìÀìÎïãx¿FÔ´!!É߸ÏáûND< ÿUœ˜ùT�j›qìÊ?�ʾ¬�øìI(û1!ösØÀ9ú—'Ïz–�9½�Á‡[ #¹ÌûÌ)Í­1ó,»dÖn",RÌ)9 LPŽÇpîHÓ×ù°ANG¦8o@ w{mÈsœg[Í�!× ’§þ¿l{Íû§NÄãF`Öo’üáÝS¢+Ð_ö?yëC{¼w?ÇI‡ít¾¼ºÊ|[„öï£öÎC¶ç‰,‘„lWZ‚jm‰¾0§Þ�ãäx�'ƵÜ.¤Àéc�鲌± ù>Î,ž'Qçë>" Á—ù)u¹'&\×h{7yÈò”G±È�«ýëSý룾—3Í&:FÜ/Úô/Ã\èC@ �€@@ ðÙ"€6{*„DcCÒ6F®íäø�“çÚˆh¡°˜bø.-á�O˜¼$F¬6v›„k²ñsŽb¡Õ™²Y‚’¡\³-¼¦±zÝ(Kº Z$®èßðøÇ(Ÿšvñ"l)Ï\4FØ»T ¥Ã¨ð'd{¹ŒwzA^íU>�à%�å‹dH¾¾6N ]Œë*Wé(¡Þ(n4/°qÉŽEÌ�?= <�€@@ ø|xz/$çD)Ð{„R>� ùþë?òMú?øÆ7=„¯ÍQêAßßOOú|›j|¡(J;‰òzŒªs‚óoUn«Y‡ì#¤6dk§q‰=Ó‡}SH縭F»�¹AAzi�· ÿ rEHOZÇ�t¨j±�Dx*·¸r¡w!�³µyˆIôz${kCø-olÛï¼cï¿ñ3{óǯv»„Bô'r‚C¸¯Bº% �‡$Ü@u� œ0Ì«žyB¾ôûG6àš�äø^«a‡MÑ6…¼úòWìÕÿú¿ñÓÊ‹-â8‘Í[sÿ‘‡ëNR¼T­ÙO:�¡�¾kʉ@fËKî ÆSDþ€þŸœ@òÙÚÕ +`_ÌÁçÂ6�‡0”"}ɧœâ#À§{‡6xð’UôœëÚ˜ßß#Ê¡-‚[¤q»0AhìÊÛ* uQ•-B¦Ç`÷»�—=ú6¡ßCDÂvº�¸N¬J˜ë„üœPì—Jw1µÎùN˜]¬éZFÕ~qQ³S"$@ðw ýžDñ÷Î5»5^„߃Äo]¢r?…èE­-Çë‡Æ$JcÚ]1蓬å>ó¨Z«1o£ž Æ`Àx†³É€¹C½Þ¨wQð_ú¹©„=d}2š@5ß&wúÌ ô'Íy°”cÌ §¸$Ķœàåhs޳ɽÏXŸ¤?`ž_*”;Áÿ rÓ“þáøèÐŽ�›ìŰPæŸÕæoŽ3ê¢Pß—Q:Š*áÛgÌÓGZ³r–‡8Q'RŒÇññ1׸&õ�Vß¼‹ÆÏ¯RáW@ <»ï¹†Ðˆ€@@ ügÈSÙ�EŒWöv,I&±äè±%c ð¤��¹}ý¡ï”÷n*ð`Ï?>'üêôÆ”ÐíøÓO²¶ýâË–©nšR¢ç3Ξ’?žüùÏê/ûâ !(åŒ�“gqóê-ûñl燇V-G¬ZŠÚÖVÞ®\²¡�'\j‹xŽvŒï" „ûv¾ß²Êê pM%‡äCϲù…'?›R¡/j ˆ�€@@ ðy# ½‘9©S¥ÖT˜Û1DÄ££#k³áÿê­Û®Ju] CxŸ�l%¶”£­K){÷!�Q{CV**D,"õ¬ÄœIòj£"Oò¶uyL®KˆÏ¾û³ˆDL J¤­ÈÌ„p²K!ŸÓ8_B¾Ž°‹R¨@ET¥Bθo'ª÷úÚ©²:û¨³iËxŠš÷ø2ëÈÏ™Bo_¹ÁºÌq² âV'ܳÈJļ6=¿tÙx<�½5·Úæ®uh¸œpJµek_B¨âài;à‚#Uk‚ûœ0ÒIÖ„µˆÂ ÿþ{J®ô‘Åh äÊ\TÙR@ú{„‚¯;¹›€€�¡T‡:Çn‰ñCxøL Ò½csÈÆ6Á²vwÖ­ÚÃêJÉóg‹Ñ…o¤"b‰@Da¯\ï1©a! “(û_¡Ñ'|fÑ<¸É~™ÙÒ´êªrEX[_£;#WÖ¦Š(¥i�‹c·º¦Æh·¢t•/G‘¹Ê=]„œ–+C2F¸zKå‚Wš1å‡�âi<�ìmâ ‘ÀqAã™&,z’~!·söÇ·oâ'�“¡íó±µ�l†sÂÅ}b3ƒ�U†T­Ag ä?ÏC˜B¤ÎphÓ9&œl…0Û7_¸IXðÄxв  Á?âÔAÙ1œbØÛyr�« ¸XãäP²íkWíFóåœÙ!ã/˜Èà"¸Ýº¾éŽíVŸï’º�¿ýŽíƒ‰ò²g±3µ"|s¹"aãúNšÎ±7›ûôŸ±LBº/%û>±öþ!c?€à_&’�¯ÌZƒ‹� Á–#BzÜXœñÌð=VZŹ‚ñÓ8(„»æÔÂ)%>jí«»;|0µóÇ�ÑKÓ¶%HŠè(éÕ5ß:>'3r<³)8ì‹|/¡Þ–³F¡€~›²•6¡�š]Î|‰â<Þ·žÂÁSí d¹Ï 9¶@.—远þQÆ(ËufœuBä<þ­T+N2;“Ï:šð=<Æae„³B\¯i[Z)ÆDJèARÇ´î•j ÒÝ£@°+-ÄXiX˜‡*צüåYúúàÝ÷} õ …ãNŽpýkD¢è¶›Œ'Ž8ôzCÔð]R8•œSvÄv¯_‡Ú9N-²å›‘!Úë~]i’“=Í5fcs“°ô3O ëÉå9ãÅ:êp1áÚRäÞb‰¹§‹›ÂàOHk0¢rPâìt  �€@@ �€@@ ðëОlSÿbllL >k`Iòái"Š—ôÚÖŒyì@¶:(ÞëM{¸Ox>„çç6"V8æ»vûUÛ¾qÓCü�0Üâ(6ü!#:lþþÊ!pç…'*q…Žë±–©­Ù×ÿ迲¿þ˸íñÓ@UÐÀÀØ‹7—íö�’åð(Ÿ°ù•A1±‰ZâŒÍœ)IΟ%±á�Ã�sFM7# S><�€@@ øœÐ÷±È)ËDܽ�ê¯È¦þˆ�í·ï}h¯îÞtB=�çŸó@…ê¿ø=°äÜpcפ’1ˆMTÏ7Z‡s~¤äHq Á•Eu®œÃ"_ ¶ òN¹À±–°iÖȬÛHÓ 9Ä¥õ´U„�ŸLG„ZF¥�®h]Êm¾x@ær�.5wDÄ3$Y Ò]9©u~Em22Q¬\ÅGõºí™¢ Á¥(U Í 蟋LÎCÊM ?-‚0 !Üž%ɇü†«»E¼‰˜©_FU|Ñh¢ÂnÙ›½7-Ʊœ¡?üà>í'„:öÚ˜cB>‰#€ˆo™mÊ×~�ÐÒIì�{o¿…“¹žQ�G¨[!ª=r·ÎSk©øÇ§'„�Þr•ô1Êú:$£ÈN¬K‹Ð–(SÈÙ¥;Fz(RU¬‡¶¦¬¡ÔÅ”'ò°ÜÉ[ÄŸ"o­mA S÷)!ÜSÄSÞW*Œc·x(šÖ*uÊ a ™)iD¾íF�¼Ð�–¢ÄZ�Ûœ° z'®*Wxù.”Ïsìsœ:ü¼ú•»–­²Ÿ90AÕÜã˜rd'§çVeì_B¡¯|íårÞUÿuœ4·ÆCÈzÂÄ— Ý«(°×Ö–!ãQÐS³Òrœ D€³T‡ðø]ì·D§[krzWE1È@Òg˜ʱ­°ëˆôÍ]òŽCª6 O/iÇ ŠwWi�{�éQ«ÞÜr¸Z­®íA´ñy”°ô…¥š;D™ûqú1œ €‰(ÇüêÔ1è{‘Ì"eÕŽ(ªôXŒôà.åø1†`—SÀˆùx%~ü§žß>Gù“'Žî9¯5#þè™ú3„—Åéñ!óžùÏ<’“„æšö!fâÊÏ0�ï~b鵯ç•^ '‘1iPåCÌkÜ´e?O™»r>8cþDX["ÕyÛ&íóG·Ïܘ2ßDÐS $=©Q˜‹ZŠŠ Ey»‡?šKSêP¥«ÓcÈîr®¢-(Š�œ?z„€s®œ01@�œs¼"Qxx=+9ϼpç¶;²LçÊôוõ�mœ)j\S†”ÙÀQ¾DºBéCj'!À5€+ô_Ѭ™6s¥Æ1"Çåô2‡¨ï°Ž6·6‰^@ êîAÄç˜�Z* œ=òDO`1|sê"œ<ç]’þ Ƙ%q"ȧâŒꬣ@ ûP‡_�€@@àù@`ñõó|´%´" �ú~v#+› ìÝ£JXÀ!ùÐñš/ÕVØÈ!,Æä,Z»¹k�µì¸NDT/ýe»Šê¼¶±nÉbƒÒP`ø¢>W¸3y­‡ÇG#€½í^àRhgD¸¹µë/Ú—­�þøƒwìðÑ»¶‘O‘#­pa»7˾Y7±ȆV:WB!sÈç¨C"„näýq´È†œ¼à}»ÁG"Ü�}ôX„O�€@@ ðY!àwDb xh#|„šRyZ"ÃDLñ™”yÚìãÁ‘"·üdCßO¿�ß�§÷¾"È"�r˜'¨_•Ï ²½µ¯µþ€5IÎg©J�| òQÃ�¡¾–�5ÈqJM• µB·K½UneŽ—ª¶Ó% äV–|äQr•=éÈqIòu+W±HBÕ/rxÂg*Wå(ü»ÈÒ$¤«ì$%Ô´@IDAT‚ äÚœós¼§FÌ�C«¼¸×ÉNÈí$9¢Ex+‡²Èüþ0åäb‚ºF‹RXË) CxmøE'ÀE$fèÛΕm'Å8Šü­ãjŸê/QiC7Éõ^­Tè}|BFαSD²Jq«cÇ”…`�Bøž=k阇¨WŽeÏ‹ i§>‹�BÈ&°Uæô_!ó•s:)ûGÄ9ÇÀN'éE¸S¶ÚE-öøý÷ýZèðã¨� —s>÷k$�Ñ¿9ùžá‰Qÿ¦mŽƒ´,JÝD¬®¾cŒU‘ôIŽ—ƒƒpö¾3¾gØ 2u™(/¾PÊAˆw<”wó�wIq6¶eÈæeÔõ5Hs©®‡¨•��Z±ÔCHí­­mœËó�—Ì,úÙB©¾÷Sò†_6íŒ�ä]Èä©ú�Sœ4˜�D Ë“]}Ph|9#0[xÞ£B�CPË�¡²´ ±ºÊxH¹žµe”ÓKÛë¶²�cA¿‹cAÝNÏÎèîÐò̉—oæ�¯‘K”Ö÷÷ì=ÔÇë[›¶LníÒÊ nÈsrÝÇhããû�°ßÁ�¹!ò×-xÚ2g½Äg¨hÆœÀu„²ùßüÒ¶mÖT|Â÷–Æl'žK|ÁÕInÎ×÷Úþû÷éå‰Ç�`LnsÍkÍ#>f<˜Hœ£y˜¤¬D·ÂôÓ41Ÿ&8—p„Öšogw”`MõÈSžÂn]b'ÿœ˜ŸûØrg-ˆm9/è¼ ÙA!äå 5 ¶Î¼mÌkú$bÜçï©Ì äö<úÝ!¶5k›9¥h Šf!!¤ÿiæƒW3Ç8�x{ ð×ä@?»ô%ªë8�˜óJÛ�#B‚\@Ú(Þ¤( º~IÝv~Lt”ú·n]GÔ0³#"ÔB× " ¤p´tZ¶¾¹ É~Ó£×<:À!…ÈCÚ˜âo’k®víê–m¯/[£Ùò|èj‡†!è€�€@@ �€@@à7! /l,Q6^Ø<‰“£‹Ð‚Smì`ÐúOŒÜmƒ6OlXdªVެÛW¿ý_Z åùÇrŒá¨sˆZg%š�Ù­Á úç^Ü¿© ‹Ïe~k»˜Âx,~ûÓßú—JøÇçÉ8Ç6vãÞ7Y8B¯?ÕÇ“Šµ ÿ¿i³[‡ë¡¶-zŒ±��«ÐqS6vjä\^]²ŒæÆÉköðÝŸYçìB¿ZŽ�µD‚�!™Ü„p”=Üï[¶À&S•ʼGfl¾�‹Mûïá�€À玀î¤nÓwÿ€MùDWšÜ¬K+Kúõ Ua‡0®cîÉ”§W›ú"üÆâŸÜÝ|îÝ <÷<½ßÖzŠEÉÓ,EoZJ\HA~Dîj½‰ v)¤\”¤Ëž ™µ:ž ¸ç†(„Ø“ît b‘pïN²AMiuö!Þ;[ T�¥ä3 \*ë á¨Ebë'‡êU9�#1BŽKžK~då�NBþ¥ˆ*¥å-[Êw…zÎ’w[d¡H¾””È�nRÊ«©m?‹pßÏóî�|ËÛRÈ*'òÛl¤Ðä­sÈóˆ@Äýìí·qp�-’‚Â2Q'u±Èm™EcH7øaÊ�ã4]÷¼â ¢ŠRQ¤¡lF9(„½Ú©ëØ„F ³“ƒC®pЭû#Ú®ô_3]ïT¸ŠWݺÖÏS-e:6�êS¹"9@×G©ƒ¥rŽEˆ@½Çû‡bÖ!³tr¬¢ØŸœ¶Kµ®ó"œ£Ït¾ÂËO)WDžºñçã̸c¤Š$•í*rw‰üÓ¯¼ö5Ú ‰Ió¥ ¢\ù¯€@@ ð|  /MÝ�…G@ Ï2Ʊ©Ü°�ÎØHŠ“w‚³�²1"à £oæÞÙ„#ÄÌ¡ŒÚÜÞ¶—®ü©í¼øŠ5Gs6Ø ÂxËæ}žbÃc]ÄúÞ—G·ÊzõäfÀïøåö¥lLÁñäã§Ä¹Þ’áýë}gñ�?¥^½ú¬ìÚö‹:þññ¿¾Þ_|¢rž–ëïªÞcï€Í)ðéû“‚ùèW>üc?oAèg±b³H+z÷ʉ>Áè�g‹�è%ÛÝݶ{?[Býð!ذ9¦-ÂEzÇØ(‹{8C66p¦O >H¥p~då:üuõÿÊF…7�€@@ øL³‰_‡LÉ ˆTnÜË ò˜r¯µ².2ef-ÔaqԆʅ:ä =¹”cs_ßäºg�€@@àã! {`­­ýG÷=J–Ô®"~Eè)t¸ˆd˜-±…ÚYaÉ'üD` E»ÂZç@¶ ­D²‹`óœÝJî�U‘IÅz†Ss¢Yá¥uL†0Ù"ÏeèèŸÈ^‘ë²t¦Âs‹˜£D–Â]¶–BeK½-¢¿§ÐÏ~0VmÔSýZ˜RÙR*ÇŠ(LA–)÷qåu›@ŠÕdªÚ�Ô|ôîÛ\[‚üC…Žã­ú®>¦ —H¶eƒE!×”#YÎÆ}ò +TºrzKE?¥i®GÂO*g…ƒ†Çµ"¤¡ÞS¿æ"Ã)I�ŠPtë8“?2zˆj|&LjJõiº2w2TøËfâ}Ê|J‚Ž;"=9H½å³,v© VŽîAr“1Y©úôÏI}oÇ‚äÕûRÍsª¯*GXñ˜±âƒ¯Gô¥_?´ÿÍkT¿=0«ŸÙ½#ôýùî7×j¤Õ(Zb²I:³k;×°‡·P…W=ÌþÁá„ùc{øð�<¼ï9³sÅ’ePÔ§“¨Å—~[„´°õîzÛÕ»‰”ñ8PˆÌ÷¡fŒ^^‘Ü"D:€fÆÆ#¿:sQaÝ DÐ\éßiôì�ã·ìûý÷V\®Ø�;wl“ï’Í�5B½_±Æ$-ŠäfëÒs®ë/¡‚oÚƒÇ{vyZ¾ºmUœ3V‰$·}ý¡á›öøÝ÷ìÞÿ ðà#m´0–#‰Ú„ó óI¹ç©žPâ}>]Üz-9Lp2éñ™Ö˜Î¡Ëô�#é«Èí,sT^õYÎúš"§“¯ý õ|êµk¬–]{¾x_ëVËAsO6±Èt­Ý„œ%X+ªS…{D<þzýÌ/êî˜B[R¨ÄU‡ÈfÍ%­#­A•«(‹6È¡ƒÒžÌM=�ÒN•§²Ô'="r\á߈ùÉÉØòcá=ÛÙÝÂÁá–‰R@^u°SÔ§tÂXót‰q¸p®Ö²"#d Ë>îQ?› SæHŠõ•§ß*CíÖ>Kš>ÔÏI÷@Îxäõž·]s8Y(ùIãÄŸ¥ìg� k~Ô‡„?‚Ìg^Wp º_øžty�€@@ žd°Ê”�©M…÷bKƒP›C�Š›¦P‡„›DÈ™aC&—°ÚZŠ›Û~4)´¬’ÁHÅŽ¡¤Ð_/WÆ(›$ÚœÐ=€Ûy¼Æöö�'…:s‚¢»× VV“1(X†© ’÷½¨6êS=T¾¨ï§›&zõäMž<9Rçp®6oT” tÕ­Ö(Lº6#’½Ú¬RÉ‹2yÊC†±Œs•¤‡¦òôÜßY쳉Àæ»Vîýα«E�Ô7)fô åJ’Б4BøªÞð�€@@àÙ# ¯`m†ë ùäôÔþêû?´k„PÞ"Œ®ÂóŽø’£Õ=@GE¨ÛCáwßv·¶íÕ›7üÞäw!Ͼ¡Æ€Àîµ¥n>=ÜsE¦ÒR‰`V$‘`ºŸ¢ —C‹ž§ =FyŠÊÔ 1>Ó_‘ݺw™§Ð亹æ©Û錔áqÖñ˜XÏ®NU½ ‚Ov…L…ü–2\¤µ—ÅqRáJ9.U­H`�DEÁ"ÉÔ>O…n›È®¢BUáDŸÈ3•#âPDâ�cEªËq&[ickËËJ£ .— ¨Ÿ3Ô!‹�ò¥S”×-Õ°·SV$�lŒ&ẗȳ¬¶I -k1©:±=\eL¿d³©Ý²‡CrŠÓ·¶"+ÕÿE[›Í&N¾(§QòJñ빯iŸÚ(BV¤§ˆzõCNÜRùjœäP üÐ:G6Í€:œP•}·¯§«üÖŒ‹Ôæ:³Ì¯»®D–CýTù"iûýùÁmggËjKK(yÛ¶³Q³JìSò€×÷Žl Äè?|ïöw8lîlÛ�×ìö­íkßúªµ o¾÷øÈ„�/£<ÿêÝ]é=ûðÞ}kllÚúµK•ÊV¤ž^~Ùþ¸û/í­}ß=Þ÷y¯I§t#šoîP¡1P�“ÆK*r9oȆNðžÂÁ7¤5ÀÙ@s)ÍØ¥™oš3)þæä”Aû5�âL׊®Ö%e€æzâØC¾Sžœ܆ç¹Óš»ÂTèŠ@öáe-ðÖÚÓzÖ\þøwx[e”ÇqAÇ‹~:‘Ê?È|­g9Ux{Ÿ8š³¬UrÁkôQßÇ!ÈËœ |²6!Ôg»P¡cŠ«` ôÜìÌÙKÈs©ÐåD±²ºnËäg§'Öê´!Ö[®'9©¤éÓÊuœ2¶6loïÀê¤Ñ“¢>WÌ1Žßä=ˆVóÒ+·l»½e9æè¢áŽ,ë›+vã…m] ¾òõ"¡ü/ìB}ÈxŠL¿²¹n/ݾ Q_?;Û„ö¿À!BŒÂ# �€@@ >7Øeü:i./r€lž`Àʺ�bˆG£]6"†l¶ÈÛÍ�~Ë:q‡M“–‚°Uè¹9ç/¼À²㟷1*DµlÉsÊ—É«_ 9¨ÏEvODóž¸{b7lµ¡L¾A##VÆî"i·>×Cv+´:¿†øÏà2”)TEòÔ�d�¢ *mêhGËÉn™ÿ”§ÐsXô~¬ÂžicñXú2ÖUgDT| ²âäDTÞ:•“äsÕ7ÆS<ÁûRR¨æEûÔòch*}‘J<Îm:äê—6µ’Ê¡ÆáÚøë±1"b½RÉS¦r¶±¹û\›ê(m‘Š„­@ߌÇr÷ú-Xô"ü�€@@àÙ!ÀW½îœTÒÆ¿B¹.W«–¿Q°«×wí°ÕðЬcÈ�4äV‚û¯:Jµ.al‹„w–JR÷?ª˜û‘\á| ¸—–zW!ÛÝÆàµnÇE(I9Þg½±²ÜÎÉ1 a»Pž“Oö. §ûr‘Ùº—íÇþá)ryÞU¾ñ±ë VŒÙ6 �.’Wäš9Uc}w ¦�ø¦ j�ñþš6ÈnP�røUÓ¹ê %÷÷ e.%0Õ;Q G‘ U­®qÚ)BNaÈ:|D?Ö67�pô�_ÈŠ¼Æ2࿈C·�h׌œéR×+§³ˆÑ4‘¬”¯›“±-¤Ç>‚ä~Jô«/"Õ?ÙN"<“ò¬ÖÛJf$Ð,HV‘¨ÊËÌ9"òužj³l*·é“ì]++lEÏ/M[’ª²ÉDªKùO1núÚ¼ø·S©ëÕFϹîeSa>@ؾ ³� ýÕÒ«wíÅ»¯Ú4ƒ=Kér.eïÝß·ãwîÙÕÕŠm. ^“œÑà{åîK¤ÊÊ:Áù·8A½÷Ö›ŒQÄ (}7HiF‹4ƒœH‰œÐØÉneli™ÿÈÞ‹@~»ŠÙ/ãúµˆ< ˘�ýÐsMö¡ÈY+ƒS¥/À7éýä¯J÷TÜjC§Ù·¿ùî÷ìÿöÊ×^¦íwìÕ×^E¹ß³½{¬N¤“¥ZÉ–ª/Úã½S{÷‡¯[šüØ+•š¥pœ¿¾Âs³ïí=@ˆ^PÍÌÑ8Šò ϯ4´õ4{£Óä×i¾2Q«æ–�¬•-ªålZ7^knˆ°Žáœïs�7"Ì¿vƒõfr*�%®1Ô9šZœª3ÁøÉ×ZÐ瞟óZ"[ºß'L=vøˆctŽÚ•C�­¹'$5/Õna¥¾yÄ b"h̘}^–¾«³¨ðuL·»pÊ(áü±Ø'PhwÔá´Uûjcœ6)Oü„ºäPÒ2y(CŽ1ö4â(¾3¬�Á0�rŸT(ùSÌ=#�"ýüò’ºäH1f^Aæ“6Bùâ;8ôû|BYº6LØ'�ª_×V°`ëó¾pã?Ø¢R'ZB‹èó9¹ä%Œàš�¤/j‡ÆF{=ºn4{D¤ÿá�€@@ ‰ÀÂX‹Èú‹’WB[ùèÆÀÚXI¦rx…³�‚Á…4O'×y߉ÛHõ‡G@ Ÿ)ºð(Ïú>†4*T+výåQ˜uìþÁžß‡(×±B¸öz=¿×:&7pEáµí+–+6˜÷¥Î+‰F #ª*Þí}áÖ«¤ÇºcôílÿĪä†~€¢üâÁžÝÝݰ"ÑÕú½¦5s»õªß� kCdþÕ_üµ}ÿ‡? ãYÔ*µíÒ¸¸I§Öx›t]VŸa¶U/ý¥=4�÷ô›–ó:Å8y›y©cÝVÓsÍCœ&4;œ<ç=�³lí*h·[Áˆ‚}ܤöW}žCžcpLc“¯¹3õOð¦½÷æöÕo~žñõ¯Ø�׈fF„“{ ˜’ã,ª°gä-ÃÒKÌš†ïÛ°‡ñÇË/ëË!!³ö2ØØ!Dš6•"Ž2ä2x}'1¾åÞE¡!nXaà´¹â$8L»6³Ä?'ð¶Æ2åùbÃCƶÚËvŽУñbÓ8…ñ­vK­Í^&&."Ðé”úÕç87�U'ðºNò£M$ÓÚMq£™Âå‘MD@2¯1Nù\ê‹!›lÚߢDÊÐf‡<ÞåuN˜Dö.䕞f7A^î2Fù˜ (¼ÊåOÚHÒ†ÍtõŠJâ$0†`OB¸kK݉oÈy áºp>PÔsK�ëV!1úd2°”f-Þ§Ÿ="âŽó\ÍO ò¨)T Ô Œÿ8?¹"3Õª›fù/÷¿¬\ó�á¥ÏÃ# �OÝ·è^¤…²õ1dÅ%!‚3é,©UFVGm¶thM…tÎWÊ|WsïÚæ ר׭³¶bïïC¾qÅ=Ñå‰LÈçrä2U_Ñ áüS°Pȗݳ—È­{óh\¿zZCº¹+‡UÙ>"ÔË•D×"§¹È5…”Îe.[F÷ý±"ȤX¥ÊÀ"à8Ý— «Dr.HQÑb�ÛØ"²mÚ]>ƒ°ö0ê�œ²DÔ� £µîE>ö10Ô¦ Ÿk‰g!îR(gå+D!¯¥¦.ðžÔ¦²­r^í’WŠVåÕn´!ÕèÓÍ›×lÿøœv.ˆMO3Åu¨ŠÚ¸ˆ¢ZW‘×zÈNF"eåXÜD©œJe ý^¡o„‡H” Vïy˜{µ™DÖ‰ V[’�tn7ñ™ç©–‘Fÿû8ˆ ›PmÕ1jŸò©ç3yqá¯÷!Ç鿜¦EÊrð‚¨ ÷k¥«€9N6¦"w‰°�ƒ…Ι)Âýê˯P>dðÉ©“’$mçdB×Gû¶³¹‰Í±Ëóºm¯/ÙÁÞ¡õí+77Á$c§Ç'V€`üö}�È)ûÙ[oÙwÿÓߨÙÁ™U—W�8W]ª.Rü{ä6�I»4ß<‚Ÿt\ù�j»+Ñ…7}JbÏŠ4÷¨Ì!/Èæ`)‡)†ûnBþkHgáÅ`Ü––í,Ää@Uï¶¡æ#Ï…gŽ�ízõƒïýÈÞ}û]û“?ý޽òÒuû½Õ{|‰s[Y.¡ÎNÙOìtÿÐJ7w­´¾n76Èß}ç®}øö[®¸�à´1Á‹Cv¾Ê®^Ú o/æ:øË¡ƒ€îŒQ˜k>ø¹,åxTÏ5w™cQðоƒºÞíÉWžôÁýt<ÕG}âóLEó–?¤÷¹Âß9ÞjêåÜ¡9Æ�“öŠtÇ|ÁlwÌ嬡ù¢¡‘cKûÞ�I(KNóªFöµR,LpšÐ¾ƒÖG’t qú-ç8ÞrÌålãƒÅo­ç~¿�ò~b_ã[®ÖüúrQo‘^Ø,ó8„½ÖŸ=¼§çê_ò;•Y�YÖúù÷ ì�ˆŒïã\cóc/O)r�ôR½kJ!G9%¨Ÿ¾žø­ý–©ðáý eF“¨ß/‰®à(†_�€@@ �€@@àwÙ’2˜ÿéCÑ ïmè2› ÃJ¸2~gƒSBƒ+< %ªlâ`xûžŒèk GŒ.ý$ t#ñ.F¿6y&ÖhŒíõ> ).“ú‰Á*ÏkBöe0¸c„yÃæucZÆ¡Ìü8›<ù!y­‡¡„-SþA‚nŒr’ç3gs(K¡| \9mÑF•B*v0yê›0Ú@ÉadŠ à1®:r„CUT…6­´“ÁÏg2êµy¡‡ bm ñ›kÚ¤`s‚Íy}‹P—aí¡Ó0¢•g|„ÚAj mnÈ U¯ÕÞyõ´.‡üØî�ãàÅ{2fÕ6åL02ÈõZãÑí¶ü|!1t£gw¶äšË ò»º_žæÓõòŽŽx(ÃélhÆSõ’_ãÄÖšÚprŸ „½oÐ'Ñ©—ÿÞ_�דÿz'<�€@@ ø$ð+òFßéH¨û{{ä:ŸZƒü§G{¨UÉOÌ=D¾T´<›ûº§Ð¦¿“1Ê[ÚlÛ~â¡�æO=ŸëvuÅŽŽŽ ‹[°Wnßb÷ÿI8\¾¾Ã# ø(ün»"Ïý?n«Ü"s+Ì=1N¬=ñx–(ˆ*ÈFݸC@ÏQl‹�(\5F’î¬ç² °QR„C–m!ÂØ•ÍðÆ"±¸×W�âÖ�ÿQ†}!»"¹§{ó1yع*É}}O¼�zZʺWOr^rKÄ¢Þ‡Ó·(m�Š}‚ÚvÊAÊ#-\Ýñ‹ÌNZ޾sŽmµë(Ɖ F9í¶×]‹ôa-¢;�tõê¶e±1¶ ý•�j‡0‘cð1לJeÉ*ä WŠ 7Ôè�¢iˆ”í£~Íè¨c±€š÷T™”ÂØ~:жw¹öMéL–Hê§·’p¡\—’[$êÂ&s›”s¤„WØv]=¬;Å.œxÂCöŒÔ×Cœ’Üi�ñ•ÃvšPÙ¹bU•Ø ¡ÊEZ¶qX*äsV\Z¶ÊÚ*x’«T²ÇûGV†è}ñÎ îPpvqa×v¯ÚÝWnã„жÿóÏÿƒýðï~dÙbͪ+ë´CHµ3f”/rVöŸl¿”¨á¤6‹†UT7éåÕgM<Ù�“ýõ<ݲÏåX-³Ž£ù\Ž ïïyeOp]`.Ü5ït®>]„Áw²à4&úÑ)ú±/œ²™‚¦µýûÿëÿ³‡ÚŸþñ¿°›¯¼d5œöíY­”±üKWíÍwÚ[o¾k[wnaïÏ­†£Å«ßþCÛXY!œ=s«\v{Vm2~‚Ÿò8s+šìzõEób,‡ Í)>—M¬9¢¶ÉÆW …ɈÝš¸Âi¹Zrg­!ÍZ¿oÊR_år8×\•]«æ4/|¼™M{i¢h_HiƒÖ8˜ƒµåBHã¦vé¹Ï=Ía柊Ñ\Ó¼T¹rHÐüÊãø¡ãu¬GNàs)ÔµW §E}�+½�³œö (ŽqdG˜Õ¥šzBXc”­�öù|ÑUùr´Qza#ç •'Ýœy0`?`6I²ß‘眅“Ê€¶¨ß)U¦>Þˆ(/Ë^‹:;€\×<òq§­ºöxô”ëJ£ `þÿ³÷¦ï�\Yšß@Á}KîÉÜ3¥’jí®jw÷Œ§Æ_¼ü“ãÏ~æiÛc�ýÌãéž^ËU’J¥=•ûÆ}_@,éßïY­òH-e•*•)EHL‚�@ĽçÞÜ÷¼ç¼Ç2Ú&'Ж|Ë-�[ ·ÀËb¿ìüú˷ܹr äÈ-�[à뱀ο_Qîiyí–ý ¤X ®=�¸l@_¼œ’ `‚wˆFVªÜ0êöi�Ú]ã™laïYåÍt¸ …À-’u^|•vFxŸžXÓÁt„ƒaéÑS2ª7�«€ É6š2d;£©u„T¨ ®ãGI2fuèüäVɲ0[—�5Ê%ë£ÑÄ�÷ãpiR3¬àìB<·ø¼çkD�/Kô€Ùj/‘Ø8„ôÞ½Ò~8hx_ø­T*ð•Èp>�iºÊ§qí¡‘Aœ+Ô$ĉaöù)×WO’[ Ç€Î2�#fôѧCSSeДeôÃÖéÛÝÙ C+g?h{Á‚c7£ÆwqŒWˆ¯5n¶‹Î’�‹sµ¸o¦é ƒéúÄ(ÝWÚN9G0YõÇÇåëá èp|©�š‚d©PŸ°]\·p¼ @þÇØ}Ž£‚O—oR^‚ÿû[g€› Ú¹þ ÿæ'{Çwó-·@n�ܹr äøÊà TR¥Ÿz¼ dò™ÉÙ@é§µ·Ÿ._˜†€*’�Þà+ßL9¾÷ <à=e¢uÐÏÍͣ؃3~s'ÕY{ @8Œ³ž¸vi1Ö,fƒJrå[n�Üÿ²‚$b-ÿãÿÜ 1!ÞC n‰Lm\-Hˆ€Vï(É- 3ÉÏX“ÉÚl*1.�Ýéí=+±&VÙÛßM-î_‰ê6ÙÔÇ�Ž®¥%Ô\I›!ê&'Ñ,¹%xLÀð0õ³U¥ê«ŒŽM°öö³��dÈ÷øÉç9\ª[³¸IÍâV«‘FÈf5Õ…ýLu‹ dµ²×b´ +­¾±±Štôpúèîƒhƒ�¼öÉ bëÁ//­ÅsJrQŒdÛ´WfÓ‹E´•™¿�‡Àg^CÒÒ,_ë@÷ð,®§qH~I]1]ý«Ôi j­ÓÈ*_Ý@Ö¼(mu‹éÙÒjº2IP6ªR|aa"°%Ï/ÎϦ‹—æÉÆ~˜þ¯ÿû?D°“†ÆÉ:·Íüç¸g…ÀÌtVm@‹JÈú.-æ}qx‘@‰ Îy-‰,¡,º23Z|Ùã|–ÃÙÇgØç³¿ˆ*›óÊIä',Ñåß=­—±Q&.),ZÆ>àO å‘}Îë Q¶ ØÈœçü^‡yïÜè!äÎG÷ÓÞÎ~úéŸýIzýÆ•t±¸�V—WÁÏ•ôý7®¥�>~�6?½—Æf¦ÓÃÍ­ô£ëWÒ!éÝ'X> P�ŒmsN8ð÷ÈØ0×­2¦Êµ[[Ûq @…1²ë=¾b^mä´ŽÀûM#›HÇ£Zϼ…<¦�ÃÆï9›GšØ,0L(½‰ïµK(8µ¿ß‰þÏ-g {á|B[˜í®ý³²œÇ�Ü?esÌœðP¹.#æ¡»iC'ˆw®CßNlL–8mò¼H±×ð9xŽŠ¥ð`hÈsTáh«­móe^X“|o›¶rÏðÎüÜû'ÒãÇ÷i3ÁñŒûy0�÷ˆm¤;ü †G€�Ä<¦ë%ˆs|*}àzîù%›5¤Ùi‡A4›ö)¯d9A7úEoUYX×/S 3A6±Þ©àĬ¦«—!ŠFd”‚áôù–[ ·À—XÀ{PâøÊÍkÜ—È7ƒ'̶ö¾4[¸!m°K|dЯëxׯçY´fÆ˲,ùÉ:<ÂT¹W%(·¶¶¢Þ¶õ…%­Å®ÓÍôöI` ôn—L]ï[Î%9æIb×Ü–´�€ixj” }~H”ù ©“Yjöi�…ÇÖgôò~Œ2@‘Xp|�Àä~¨B²ƒ!�{{ÓÀð{³»rðž´0¨!eí‡?æyD_9ïñÑ^´_¢7j{“®,Ž ….Ú+yÁ€£i}´)ˆ»"ÙÍ|ñ¼ƒl䔯’uDîº0X r²B0±A UÒóU0SøTHþz®·Ê” G´�Ä/âüE‚?MêOÛN1ìÀà Áߺ" ÉíÛib¬ŒSH+ë›Q2«‡¾ŽLLAï�ùݤ@Y7Ý÷¬¬¤[�çý¨—mí쥅٠izn2ýÝ/ÞJÿð÷ÿÈQ•À¹Y°RFÜ;Wޱ·�Ö62H|¡±ó�¹¦jZ"ð'GÐF'°A™:_b*ÛmY1?îv^Gý|ækÉn´eŒ5ûªüø·»¿Ãn¼Ö†HêSðª ÍÀ*猤²s^µ©\íâ~ÿ1kºòukc'ý—ÿü·»;HºßJ ‹—Ò&5á{F*éG?¸™îÜšî./C¨¿–F˜ƒ�щ433O¬8õæQ>ÏJôž€Íë¡ �Ê%§±Á:>…ÔÖö£ïÖïQ!¡�©ˆ‰‹ôÿÄ Ú¬ô~] '�?ź] {†$¹óŽ6«ðàMX¡ÏÞ¿f·7QaëÁaÙÕÄõú P�Zñ´­K{+3­½ Ü/•)§b;¸�×-!�n€Jÿ�÷k¡ÂüéE朱òok¶ÛnIî2½Æ9$¢-s§â>Fú¾ÙÚŒ±ó¼ú1 t‰2vµ¾4¿x%­­®�q1qL–ÄrˆElš9˜NÓ0™åt„C¯R£ý]k$–SÃÏÕofFÔk§�'f¾sZe$1qL“˜EŒ‘ó‹Ñe'î8_ÇßìÁ.™&ûÅ_ù–[ ·@n�ܹr |®,%ÓdÚÛ~˜F§ k X.¥��]ÖG¬qPÍQòµYhëòž²PhéÈg=¡óû°“ÆÈTíƒð+°&ʷܹž×b‚#Ö°��*;±>gñkûšRßlÝX£›y YÎq³ŠO\÷KBF +þ‚­¶ë°Žެu%àÍ å�X7+µ,!Z†|S:Z’Z,ëfÕÇ`%ß r% l@Ñ>qA£‰ÆçAo\+»žY»’v4U#3¹÷3z”u>åú•¼ßÞZ�Ìï¾þþ�5�>ò9Û$A=66šæ/Φ°NLwÚÜ�ÚÉöUR±E g•m£ @ w ½óuÏ5ItŸaRÅfÜ{¬8->ÃyTï’ÜT–Z»— ù;måÄ%ò³ ƒe© p<—`V1¯ç“Í”Q“´ç™Ø&л 6…t:E$ŇP÷(§gëÛéÁƒö×xžÞ¾w/äê¯^¾”ºŒÇù}d���¤{ÝM×g'Pè…øwãV:9ØõÒ\Çs[NœÍ¸W i äè9m(6AßO"¼AÜfDæ¾óƒ{«`­�è{ÖOƒ½|Ø+þ—$ç}‰h1u—ñ´Ýn�ò 6 ›¿ÄÌYÆ5A4Ìû5›§(G¨6§Z çÑWà˜‰cým0‹÷´¶<&ˆFDÌQÚWª� >EcßlÌC �Ï  =B…‚ïiNÀ|®¥¥¥ÍÔÀ§âx7 P10Þˆ!‚Þn½ñ£ÀþË$LÏ’}±¾ ™~Ô8d^ÓnÆÔy¡ß£�⃶1»½D„Áúr $9lbÞ ¥<&‘¾ Ò Ÿ¾zò�{„I§¯Åz*1ô öA¨÷c'Ÿ7C¡N±ƒ^EK1ä:ý&·³ûò›lB~íܹ^" <ï3áy�‰ºš7å[h�ïÊ|ü¶ôó�Õ�Ï;ïçíûÞy—¾A 8ÇÜÀ}Ù¿³?$Ö%Ï}Ok†²S^+Ù-˜7JÝhÿ‘ùJè5G€³£¨¿·Ðh ÿç>ï�ïoÁºYÞFh'knÜZ€å*uåšDÒìP¿à NM-œ>½}ÇiB^`¬ìÞ²æ‚_Qv‰u�®QÔ’õmˆó¬S€LNÇá ÀEmÅa Ã#Äw&§Fÿ¸¶Ÿ3+\àè¹t´ÉžV*ÍKÐÆ¹¡ü¢Rƒ=OA¸eÁ­e(×yãyèm3«¤§©v¯?m®c r�ºÑûF¼—ËöK¹E3@Ü7ŒãH€n´»Î �,'-¥èq’‘º/q®ä}8<¸ŽY5>s„ý�pVÕÉUý:b:Ȱ“)x×á"XîOO¶�ÒÖf‹ö�ÄX ã‹am@PÀ.™÷wóZɹžp†y�ñ dc©“j„: }8àªÔ‚cv$ª«¡>�:Ø…FáTÀÙÀç8B›0t/èp‹g�Ó˽瓒ýìŠwÝçŒãbßçÿóeïþ§ò½¹~×/r½Èkýn/ó¿r ü~Èçìïg·ßçS_jk¾Ít0>>ÆÚ¢…ªÏß�¥tDvgÓµ ÿ"Y\!{ÕŸ½õuˆ¯Öl‡ijv–Ìs¾¯÷�ˆ¶Nlö½ë7söýûû´:ÿÌ·Í_:¿m~Þþp³H`P\bÚµlUrLä:]La6§$–xD\Ð%˼B&·•õÊ›d+‹©2™gÖϦ¶Û„ä6Ó5#>YÏŸ@´BzÏì*Fh©9μË:_Ì%ñø…çƒQ¬í¦e© õYËÛΨ«l ö³ëIÎ5!ƒOÀ b ãi œKöê`Ų™×|ÞhW±çP­joo/ÚÞ?8ktÍæ9U¸jƒWÄ‹–Íê7T¤=>!•¿Í¬•ôïVÈÌå·xIœR¦?A~BÖ‰§ŽÈ„õ*{ÅÆ~q¡Ñb‰^T7 §à'³j X[”è?BíØ•óƒµ=�¶‹9´¥gdÛsü<(�£2òË2n¶�>tÉbs--?‰€ðS2ý`Þ�oD ɹϸ \¯#]šOOÈB¿ûñZºÆë™É¡ 1GÉ »0‘~õ›÷Ó?ýâ×!õžÍ ÆšvµSŸ¹ñÜ5°Ø×ô7ÈXÚÙÁARó] \åјÛ‚Ñ7ñøo±Ÿ |Ë1–Uó„Î/,ækÄ¥¾).¬b3í]ä’;}ü¨¥ºB&ÝØHK…mÀ¦`8æz—‘xâ�×¶#ÚÂ{m‚>xï½kdžÿ MLϦ52óëõjº¾8›Þ¾}?}È5{ùœA ãã£i˜öTÈê?ä:< ¾<¤ù8'*ܾ}/p©%׆©1?9�lþú2÷ß!vHƒƒdvƒÅ-›æ|öÞó»ÏùOi/ýå>´ÝÚÞ^9ÞüËŸª;pXU;gö̲±½ßàýîÍ^Jจ9&F7`¦b¶<íî2 ^$å±!ÿµ��/i+æK%ƒ*õT§D‚A –"0ðÁ¹ׯv§Ü‹âõ6ÏïmK¹U°Ÿí.qýGøU¦Q4¨QÞòmJ­’¥ÿìÙÓôÞoÞE¹b¿ôØ@©{ƒô?3äCƒyäùª´S¿ˆÒþ«Åôö÷áC¨…¯C%;ƒ%Zf§Ó:ÛˆÉbÜ{ hðÞöç��,�Á±¶™ös&�9¸¹øœRoUÀ/àPëyìSÔãó(Àc[w_{8#�³¯mœi‚ü~€·‘ùY-v� f4xm56bÜñÈÞ$ûâôt+­¯o‘‘®$™öHêÐ0SÄ,x�k‡HÍÙ_ë"–Éh³ž]‹ ˆ.&;j3¯ès™vX×]3ÖqTh �~öóÜñâ<õ|öY¯BÔ¬cÏmù3ó‹,“ï ¼Èyô"¯õ<6È�Í-ðEÈçìYæëßÿe¶ö}õf.Îͧëü|x÷aꙂh"ðÐlUkÚ–b‘DV%É1k¢&DÃÚÑ#Þ#«ìb�:ÆÛéÖü"™j5 ÙWï×ß�üŒ¯¨¾l¾¢Ýúz›ÍâUÒ×€b±à¤žYsCýižlsK‡õ1Æ”ÖxçýÓþOÁX‚ÚÀÛ$Ft³mAî2g¢Ø‹—1>–7³Ïn~Fœ&îtœ[¶ØÜ@ð^‚Й-�Áh>4œÆG – S�—I‚&«š¬h‚ÒOhsÔßvÜ "qî—Jª7°‚=TZ�,7³¼LVµ÷€ª —d%¸O™v€aŠ÷ |9á¸Je ÈåJÁÎ'ä-Î%ÍñüÓƒ¿B»zÏ�3¿)ƒ¦@¼]B‘Áñ6P¦C=4•alƒö5Xÿ¿Š¥z9¿óå¤X#Ó{(p·YíŽg‹çÃê·nÞâºÕ°—Ï“ÝÝÝ´ýè÷¾~ }Ðè/€È§­’àÎé6Ä^úkvvvh¾žKËki˜ó3Ç Ðk„Çs†ó‰õëÜÓ¶Õà˜¾�*ôOP�õŸÀÍà—⇔{N ;?ò-·@n�Ü/‰ÎÖ/IkòfäÈ-�[ ·@n�—Ãà+PœÿŽñK€“=Yd¸Ž 1Ÿî °$¿oß%›ù\�dõ“Jeõ:¿6Ž™¯mdê d}OG�ÙÐM"¡w NܽËþ.ŽØ>9-²¡8y$£%ÓCWFŽÜuõ~¤F!xÉd¥Ò®*u¶ú¨.8Ûçz}�ë¶×Œ…¢¶[È(ÿ<Ú[Y1Iø&d·„·Ù×½Ng1Ùñe"$Þu_TâñêˆhRŸ¼G í4| ^ pêgt~d¶@ž6ÉÌïÚiöˆ [¹À¨ÿŽ£ \Ñ9Õ¥^Û ²–¶w¶Ól¶Tx_lŽÑAdŸ¬&Ám&{ð© šö»{»\ÿ(Ú!ç†m*8�¬SV« ¨i+g›ÅYó¶ P¬£HG�à^ N¼£€ÙLýªrnŒ‘’lÃcý€|ë¶{,õäýÊÓÑî¹t�˜‰`í?ÇPÉ6ÉõÝ�}ìÏ\€/!_‚ôï'Àw�yÃ:5ðÚwš½Q3Íàa:)L‡dÑ”ùÌ1µÚJ8ò”£+2aM¨RÇϵ]æîÑòÙNØ‚ÞÞ<ŸÛ”o¹r äÈ-�[à;i�ø®ä QyÕ…Ù¹tŸ:©Q«—ïÒ:V ¥œ}ˆ ñÆÇS™ì¿ÖgÖCum¥òÍìÔdº¶x)¾wýÎ×9žo¹r <�À¬Á­ßlƨa-'¬íW©ÊÅ{’ŠÙÛ’vbˆ&ØGÒÊ5­X î#l¯'ÝD�€KïSJ8°;Ž“äs³<Ä>ÁÓÓÈS›Ùn¦²äþ1ׄöcý.qo�h¥¶Áœ¶,å°ØŸÐ>gým NÏá•=ÞÀhñ’XÍM’½Ö0«·JËE"~9Fü >3ÝãÅ%bÝ ‚1„5¡Uÿ:%S9»¦u­ù<ÇB}F?•So~�_˜¤ÍÈ_“u?Œ<ö™ÎçììTšœ�I[{¨¬µvÒc0NfÆm,/ Ý>“î=~’þæ¿üØu0‚�� Ú.HhŸÿ ežÍ¼¤må4رÖn>—¥¤ƒ<[pzŽóoƒì³’ì}`+3›Û`MIbq¾×s”Ý$¸�g¶ßßg°Šó|Î>Æ#ûŒÁàllê{^_Üéy•è Ž·›¾g"Ûsg*x˜W’Áfx�&JŸ|x;2Äøý3]”å¶ÓäHºN°ÁÇkkirn&Uè�šåwnšþæþ6U 1h`s{;‚¶>x¤9ÒíÖÝ´09šÆþÉòÁ¸‡*Ü bñãªô»¥àÌÌ›Ö dÑoa›CZœ’e1xo¨¨Pæf+ g½ç$»�þx}m(Q­¾ãd€/×ðµ�¡(@Ã,Wà¸zóóéÌÀ*:0¿²ŒÞsÌxV�*ÏÅ2›YÎMÒ¹Àý§¬|µ§Î÷:joŒÆsedt$õq?oíPzí¥¹>Ët‚;H»û{éá½{$2P:�lômJ³ðÂà‘ O¹²àñt¤ã^%è;$´"€brªžö™Ó[»¨epÍê'§ä¨*ˆÏÆ{¯B]óÏ…•¥eÎi?̸–Ò.×hA®ð|ÛÝIŒÁpŒ½vóY¸»{Ê 9�ÎÍòMnÞ¬Þè/b{‘×zýy×x›=ϱ/¢í_Ç5¾�}ú:ìòÇ<ÇóÚüy�ÿc¶=?wn�ïŠ>ï¾(H‹ä[D^¤%>o<òqxu,àø¹}vÎ&ÅkF/Ÿ;?ÀîËÑê'¨ soñÀ±Ë‡u>¸¼Í{d/#I¾½³…ÓAIv2Ì›dL ÷È8o ”Ó!tˆóçPR½�S…zW–ëòz·¥|;d2 ¯mSv½¨7C<¢Ÿ¹FºK¾Û¦5€óÙÌ“ÔíZßÀ‘SMS8,ÖVVÓ­ÀQ©Âc�SX%H $›Û6´+D£�mÖ{gMÇðÚj›ßHŒA#ê pæonV ´ DyO{)-í1±qψ+n2x5d͹¶YÃb ‰ÆkœÓv³t›�amð“Ø¬ÂÜÀdß—Ì6[Ö~IXwÀwÊÎKNÚ¯w¾ßXÒkôÚ(Ø ‘–Ÿr>Öôâ?Õ§ ”6ÛV¢°Ç`YˆÅ¬>3¤5Ÿµ/þŠ7Ä0fˆÛW×ü»¡.ˆ0ƒØ‹{œm8÷ fÆyØ�ëHzJº{Œ™éfj#‚ÍÛ”ñR5‹ {ìƒݶ¥xœ�)t¨; >¢]–Æz¸õ”úÛ³`£1ˆÈã4ŒÜøäy?²×’·ÍÕõ´p 5¡U@›»8—öéÿù›äøB ^tÍ&ì'VÏðd6K„;̱f\<„ºýà °mÌʉÑnÚ¤� |6û^©u?.¦öœž'æD¶3Ôg¼çrv¾8qŒ_döó1Ë–Å\äZnY“´£Ÿq<ܲ6™ �]C›: �MÏ>•íã˜lÜNÓúÆNúÕ¯~�LûdšæÇÀüžR'ÍÏOCøž¤gÛ»©~q>mpí±«WÒÏ>x÷=æa9­<[…´Ýcog¾1‡ Ε9Æ:‚?ø\à}Úf yÕühM%@•„¾*ãÇœS’_rÛrr®ß½{‡Ð¾ç77ÒG}€={PÜŽÄ„>jÌ¡s¦Óh§mæª×í@=ŽëíCŒŸ`"ÝCU`p¬ëÐ{Õçhc—ñ6›Þ{}k¯‘6vRïÚfØÎù_ h…ÆD{v÷Rƒ² %sœ®\^Lo½óŽârºyýJúä“;䲯¦Âqú'W1ÍÏÍ"g·äöüìtºwÿQêåº#Ô�ûøã�Óç»09™Þûàc¤ñÆÓ4äµ×5``|lŒk}š&‰Ø_Äžo½ýêŸVÒ$ù/ÜOó si¾ýÖoÒÐÈIše<ÖWW˜/å4޽Bn(®à2£ø�R÷·Î°:nt>{ò,²,v6·yý”vÏ„c®ÁøKÌ�˜%ã<ÃqÕK°C�lƒ‘ÿœÅBóHgŽ æn_…(¦nçŠÑûµÈƔ󿂷ÇêÄÉ&¼ÀýüÕoo•³=ï­òÏGœ½ñ%¿þÿçù’ÃçíoãwÝb�ß1ÎKøÇ‹ìÛW¹ÖW9æ%4ãwºI¯ò=ÿeóíËÞ•þeëÛWiÏù1’f¡±ž1«U2D‚Hت¥ZpˆÏ°.¹yåj|nH @øŒŽdõ‹ ô«(ç›ççü*cù<Ç~•óåÇ|½p­óªŽÑ+ÕnÛOýáŒt’DÊÈb‰Y1Y/k\ÉPÿ–”S¾½ ™&\ëM½× Ì �O’ÝÖ&‹Iü+ñ¦=$Ý­UîZ[²í„šÜ˜yþ-a�0ʳ³ˆîv ®¹÷Í —Ж+sN HßòòÑsV¨÷]B*Ú÷\ï«2U„qì�kBüCô‹õ"@’®Õ"`Ø@_Új–¹›ç³4„Ï!KHÁÍþ\¢R‰mƒš�•Öö·È:¿ ¶Ÿ8/‚É»�>B�‹ay­ò˜¶Ì”Àh66è¹�ç›Ä¾Y»A~Œ ég°o«Af­™éØÜ,iq9çÑN\KL¦0»ß ç68¶p¢Ú˜%ÄÌ>&«jí;>Ь58g|üBšžšIăg«ÂN:`ìöVÖÓ­©q”ð Ä丧—,á¿þ‡HO-¥QÈöLJ^û"Nv°8<Ã$fsÛ2¶¸®}Å4PÉxíå½õ³ xçrÙÆ1̰È?!ArUBØ,hk_ãˆãàL™3’Π+ì†ù; ìW9Ÿ*ì”û>ÆH¾¯t»sV¢];9¯$ì#H_â™�Ž‘ëç ?nÊœ‡íøÛ¶kCÉk»c»7×wÀ™o¥Ÿÿ›Ÿ§ ³séÙã�ÞåtãÊ|ÚûànZ&ཻò}õãŸÿ+pýfÚ ˜^Lk`‚„øîÞ>ão9·“´ ¡Ûá{n…º¦þl?ál²3Ò¹°×6Þ2ì2š%ìdxÌQæ˜mŒ€0l7Èkæ¾Ò,‰rÊ\òsÞ¿Ž•Áã’èQò;—˜Gfq+¯ƒ�#Q�6“#E’_¿Kà zîQ%ÚõäôÖÂÎÅ"Ï>§Ì¼*1m0³í;)4CåOÿ�ü·™áó‹‹éÒâ%”vÒý»·±í*×g.î’‰N ¾c¢ê�¶�¬7èŸ N&{�€;Ôõx_¥çœ–yqœãù…ÍÎÇÞ¾8îÞïÎ#K¸yL¦Z§!™ð‡ªâ1Î(ü9ë|Ž8;4w¾åÈ-�[ ·ÀKbžíù–[ ·@n�ܹ¾uðû-¢˜“f0 V0I€ëˆ˜÷O�+ûª‰Ç6 JÐc L‰ok¡ fBœ:^Žp4�f6+Åå~ u3ÃW×Ö‰ªÖÉÓb‹Zoëi°˜sîÈDYnQ6×êt”ÿÒ‘A¬3ÒvùA ’±YÇLGQàöðÁÃtãòå …7VÖÒ"õdj?™Ø.Là!#™ãff.R ¥t ¼NtŽˆùùêêQs›ˆî¹¹9ˆj¢Ï”óó³éŽ‹ú�^öÏBr�AJ >J&V�ºtc³“Ùó*çâø)AœÒx~n:=zò8]Z\H—/¦••edÈGÓ ïM?G:~rzrší)Hî‡Ô›K >Ø�~_ºt‘û ú4šnܸŒ„Ùfd__^œ#›~™>ô¥×n]#‚ž`Æê�ïÝDùø¡tåê%ýuê‹ÕÓEÉ}"Èk8._YL[ÔÙSZP¢_i4³8Þxó5F‚lþ¾uóZHGvp‚]»~™¬ýœEÅtéâlÚÙ\ ËÅ…)@ûV*É? ù¾±¾ŽÃ¡Æñ‹i•`†6Ÿ½HÿwÈ‚¸ÛW%áÖÉøÑÒ3œ]¤ë¦&/àŒs¬³Ì³Mö÷ÈÊíQ¯£JÙ{É� Gî­ $çÈvÓÙb6K�¹¡\å�ÃÔlõ6° N~ÍÎלëðbÎv ÈÆã�káÌ�CO-³ðÂTq†)!˜ÕÔÑà Àff‰N<¯Ž(öùwLUfo¶q¬/³�œíËåÈ-�[ ·@n�WÈñUæ:ŒŒ½±ÑtýÚµ4Ïë*k‡{÷n§åG÷ÈZk§CÖ ÿñ?þUHæþ7úçàæ:¥Ãzk‹23,]T²x|…úž7õK-ðu,q¾Žs|iC_ñ$%sK¬Ó‹¨q±À#‘µJðð1D3·d³€çž§A›-kr�µR'[*b)}m`4TÊe²À% Ù –k±N6ãVBœ/碄Ÿ¢Œus&éMmoÖᮇ]‡×ƃô²!»ë�!Ã%Z•ÝF‚šLÛ“c®'Q*� ~SªX¦Äû|4¨%ÙßC¦ª-ëò¹"¤|­™h‚lÀnAÞÒ–t€ ?âOHCð…×Ò.=�t=düJB–«ý©ÔçØb /9 Y ‰äÇHÆgÏÖïýö{‰cO ÊÖ¾´² ¶8„ì68W»ˆS×V7ÓAÕQ. ²4H`lìûbWÛƒà49édÓ÷“Sð*ÏDI@¬~�Ðä0’Tø‹¿üWé�|?mî¤åÍ�Ô×®¦åº>üÕoÒ"8qdÐàj©#;~af&½ÿñ'é×ï|ž‰Ìà  9³×�y‹Š™ ’ôb: ´›ýŽÀ®/Iˇ0‘û!ßé«çòo8[ˆsÆ ò’Ɀ ^:ÅÆnY°…D;¯9Ï)ïIÒVè¯ÂÞB!ñ¶¿='ÿCôC†r]· ^i“©mçü´Ï^ÁËõ ¦¶-6U¹KŸ8„?ÜÇIé“v›Ý¥æùüÂýô“ÿ2w mƒ}Uª»8I0øÒV*ƒÉ‘tKÈ€›>†<ø÷¿ÿF\ï1Ák+H‡oÏýÕ¾˜îÝ}ÄýÕ$8{$Ú=<<ŠOýS K¶´÷Çce™kÜkOíà|k£@i¢÷í¥­ÞƒÎ!ý§øPºøElÍ\ƶbJ³Í Zˆ9Î{e®Á§¸¯™k¾â:GHª÷äQ‡Ôï¨&®­ò¹÷! ©ÉßGݯÿŠãéfίݤdžsb€¤„²óß{ï}ú�ðIL¦.¾vP¤k¢ÖwJ{÷”V÷9Áýä<.°ïÞØð™±w˜ÊÔŸ7ó�“‡_‹k‡úñY¨ç¼óùà8w¸ç|¦iSÇØ6yJç„7ž3ã}³�7 ’Ï tížo¹r äxI,àƒûìûý%iQތܹr äø—,kxðÙ-H`íý­ß>û]õÙ×_Ôq�©àK¨’½ÐHݯƒÅsÔ 1xg>‡�ð²Æ¸/j}ðŽˆœ>œ{–2ÌÍ ßÝÞJ«�¹˜Fëw ÔCœóKto‘5¬¼çRi'8"e�Û� û8L¨#<ô ’ù¬ü9­ g�mUæû0ØIïìît×Ó_þùϸY Ôéº�lTö8àm�œÕ×.¤!ò™ï^oBY"Ý ¢SxßLgú"h•¬¶Î›Ä+°Qó 2· ø6:_)t% ͨ÷uD•Ó×HÛ*6ÓQ\æ<Ú­�hô: Ôàâÿp9‡À»†Ü»2ïÊ®I´+ƒ.>5WÙoÆ9 ÄÖ\R?²üÙc@@HòÞ QÞʦ÷׫izz"ìWÅá3` ‚Ü ƒ)vÈ:$þ­afÛ†û!×÷�¬/§9ûgKÏÂ6Ö�ßÛßçJ'itl$"�®ÓNÉû»÷?¥=)-BØß¹G=úv#¢ö—V—ħd×_H÷ þu\"Pàν;ick‹¬ô12üß!ª�à²å?ø€±hp-�’Ù^'xá¸3˜Þ~ç]¤òëix`(=yò4õÑFm¢ýGŽG°Ž8ƬZ©‡c¢!xftt^àô3bkk3­.-Ef��[8¡zqŽ�å®$�㥳lhhX\ŸŽø\ƒ}ÊM–pصNüØ­�°¤Ÿ cõ2^ø{b<´�µ#gÛâ$Q¡A7QdNh90¾óÌí«Ü�Ù‘ù¿¹r äÈ-�[à%³ë@I²�Í5Öi|_®.?I�?~7Ö]£££¬ÉXÓí¬¥ÿý¯ÿ�(Ûó£×¿�º‹äÏH0Ë•Ïé¯HÈМ}?¾d=Í›ó- VÈê"Cò°:0üŠ�Ã\¹@råºê|ýô<çøN‹} Vv�kð²¶gIš*ˆŠv7QöâÞr]+~ðþ2#TÛJèJÜ•Q0{Ó¬ÍbÂR¸[�7Ëœû’ßfŽWÈn5‹Õõåì3ik3XkÖº2ñb¾Jf™+wÞ<؂ģF1çÊÖ¾yX�(�@lö{N±A‰ÚÐÒ®šƒƒô<ÖaÇùh�° ’›6—¸¶çnÊ¡ÛO1“dú±¥¦ Ïšïoí#YlmfÏ/ÎÍj¶gA³’ö<…ØG v‰lYœJF›]«‘õÍ{{{HI O)æ9蘄¥ iÎw‰]·¼ ê¶Ô1äqŒ'\à ¡¶æµu� š=³í6›û< Ùg�ýpNøºÙh¥O?½“ :Ÿ˜L;Y£t7:Ô—�ôÉ£'éÊ•‹©Hp¾rùß{íuJ¼MÔ˜®^»B›*éù«Ÿ^'`| Ò|ß$CÜro4/rñ£ûÃWœl� °º¾ìÚFè«$ï1¾mdÛ#ŸùkÛík/øÞ$ý*Ö)ÇôÌ•lF°ijýòsMü)ô2ÚãV´Þ})J¤¨¾¶‡?¦X¬0§ëØÞû¨�¶–WÃ3>YçÜqpÞ,ôpOžÙ°Íø”>>¶ŠeÉ0gîÑ@ÚÞâ{ƒkã!#Ýûn`˜¤�e×xßòif¬›uï¨tH˜Ø#À~�9=77“êøv¼?$Ýpr9�ø6#ĈtÁ³ïk Iâ�$Äá£s#‹R§–8Ž‘:DºA‡ØÈëY×ܬrÛ¦Cë¤1Ïû}€çUj½á/^Z!3œ~n÷ž> ‡”û·!˜uŒ ã�Zyö,^CdÚ?xô0t&l˜Uбsïþ!ÓGSÏÞpòô, i½¹µM�Ã@zøøcM-y2ækHáä0 áþðშ'?ßÃÐþW Ö{û¥åæâó»ŒÅåE2êÉ@�0†ï¿÷^Z^YJßûÞëiƒ vk¿—Kc? „C-‚;tb¯6� ”Ö  6p;e®ù?jyÿvê¡$Ù߸Ž7dló ݸõ:}«¦Gw§¥§Ë�šÎc`»ð±Ìë×oÞùö$ß'ƆÀŒC!ã.™kÉåÔUapÎö¨êÀ<1€Â¹y¢úû”¹/ƒ+UÿG¨>íTæûÓÀ%Ü-%F× µGû%¾ôüØŸöx/Ey† À?®WæÜìuÁ¤ »(½xo2ðøÚ¨(ˆK{¸Gõ[œèß)çä^ÃàÀ\Úç€26ÊÔú ÇñpR’TgN|øþûàõ%|>™¬½¾eÜW¿÷=WûìÙcÈþ&k‚‚:>köš÷òûßç•sKŸc‚GÚŒ}µ[ BÝ åß Æ1X'SB_óìÒ+ePAæ_á>´o1Iòr äÈ-�[ ·@n�ܹr ¼‚¹½hGˆ×€ö"j9™´󆔖€òÛæ¸ÓÚöÑ_ëðÔeÌΨÇ>¹r0ö1úü5Ž´òÕ‚ÐjÕØfßóƒžLpƒ;Àoo{�¬æ-€˜ãèýp,x~ANƒlf£•%Ì×!iwý ÈgÁ®5²­µ¥3Bi@�wd”Úë­"UFz qTJƒYolIn í `óÉÃgéOÿä‡éÒãÀ—gg‘7Iëë+È _˜*¿‘ÆGÆ['ÝA<{¾=ˆoÛ@+ÙÒJ­í>õ˜~±'Yê8K¸Nò´ÑØÂ‰aý­"AÈ}ìê8bŽ èÁ#84ö‘Îgû’¹fpÞ­÷¥|Û>`³£Ã  2öð“öš:8uüŒ;nátbgØìf»Òõ[þ:h{ ‚[="î9™Á ‚K¥òݧœ ŽŠLÂPG×âï^¤é�$·ýƒƒƒœý”>î@à×qÕÂÁ­D]pn¶øꯛý®ÄÝ,6ïCò€èòéi^óí6=M”9ªkkéÂ÷¦B>}rüÆ�ëd÷#ŸŽ3ixq‘:óWÓã‡�’™é3ó³iii9êµ_Àq±±±Žcƒªd°üé§éâÂtHÑ[›½—ýu¢ÞïÞ±–û>ÂvºÿA½p�:tuRYæÌ>A]¤ãް�sTçÞ Î¬�ŠcR—pêé(jãL'eO0ǵ‡‘ûÛ(#Œ��‡£Ý*öïaL‰ÃǶŽÃÑ ã£§Ž€ìnMÈØ_0#ÇÄy‰ûA'^‰Ì � ç²7¦c)®ËÿÙæ‹ó÷?óò·ïŸömýå¼×ß¶çò·u¼ò~}w,àš)nϸC]_e÷êwÇßíž:ÚÖJUºvcc•R*Ûéþƒƒ$Óm­ãÛ5b‹D¥] Lóû¸Êz`céaÚxöb­•þ»óßÜx�«”YéÃù�¤îo'ÖwÛįdï�â¼ÖR®™ ¬¯%ÏÎ1ØWí”xÍíT½`1çôùöY h Ïc‚WÀCµ¸w\Ãïí¬³N…ìâµ6TúY5¤.µÄO»½à)Aù[%*å’(ùä:ß`_3ו77£[ÙmPŒ‡r<ªX²Ê¬wà0q¡d—d5 ‚Óõµmª‚Ý–~NÂNBº’×ÿ\àJ¤º¾>dm^’8ç¿ß©¯n7m3¸Ê@UeÝÅE­#T²XƒG@5×÷d’�ôˆÏŸ¤I‚]G§HX“­ 1h¬�ÈeðåÓ'OƒØá8Û¤Ò—ßc1Ï$íi‡†á3âéøÐï7‰{‰JUƔɳ–¨%-ñ'žêb‹ÈŒ¦]=Ì};/Îk’Ñïu‚¨‡ä,"m}Ô4œó‚ó6wÁ"ª´€-:Ô‹j@²Kè7öZi|XŸ[LG´k�@ãMd²ß}´’fÁl·^»éÈø£òqë{7 }§!ÜÛéÑÇàäƒb²’Ѷ-dÒù�mØŒùáúZ{º;Þ¸à›ÈìåÞ� ~‹“ƒpÕîü„(Ò~~6»Gy�£Å@ƒ®k6ºÙûâ”ü·ßf8%IŒ‰À^øÀÄzpÝ,�¹Š]%bµ!ŸŽó‹á{µ7ç·¶ÊsúŒñú^ÃÀ{^1¯$»3|Ÿù  ÁÀÎÏ.6þä“O#P{š ‹ùJ ­¯aÿVº8;š~ýÉãôîúF~}JùÕ……4Oýùý�]ÚB¹²+ ¸¡ÒB«Ÿ{‰…VS…2®™ûÞ'G``ƒ-¼Çăfhë Pþß¾Z:¬÷A ;(½xÒ�2(VwÀªGÎlV*1Ï%à§ Hî 0&(nš7îeÇ�ûô”ûÛ}]‚P¬'_2@ì.ÖUI0ð?sr–’uMlÑ‚À>!;�ÑæüÛœÓ;Ÿs®€Ý( A@\•{ñ˜9céºù¹yưJiµ‰ôôá½´JÐ}•q©¢öæx�÷IÅq³Q–�;À.·öR?×·Ä_�’UÖµÞ"�öܧ`åÆ »|›ìcƒ½÷ƒÚ¤OkƒR#ƒLd *�Ÿcp§™ÜEHk€S¬™¹rÎJµL9¥¹ÆÈö\â�] 8‡ÙGÎJêÓ¼ýÝ-N›‘ÙfþŠqÄeRn ÈØÜ$7ïÖÀnJmg¸­HÆno�kÔ$©ÿl�3k÷¨eM¿ 0ðÛúñ§’“Ê ºýžT…Êqªƒ­ú©]¾æjY>  G°x!ðîµ¢™ûMdÅô·HœÂ3dÀŸ’9}mj"]½H­n1Ûæ~úÑßïŽYjMë°˜ŽL”4U‚ê·Kìb{¯'ej`·Fé2^Cˆ=ýl†Y ]ksŒ· YÓ¾�ÈvþˆSxïùŽ}Cy‚Ïè#`"Ñ>cé�÷ùOœ¤› ëlyŽc_¡ÈœÄì^« îµ­Î?Ã9;˜Ðψ�1¢œ×1èòÌãr%ÎgP4Áä4ÁcøXôÏ9eÍó�õMê¡ßOÓ“Si‰vý âÍøzqj8í~ú82ïGƆ)7¶™�G\oü lN—/Ï1~*•‘YÎùÌòoãw¨¢à`°D—ÌroÛì ã(ÚBK´/A(* ð6T~Ý$‰d•ô7ðm{û� ˆûjôœë½Øâ^ëìho ¸÷’>ÆŽë¶PV;Dñ¡ŠòA…èûï½l)½ÞßÅgþ}Ö$ׂªÀ…ÊßÙ~ûÝAâÍPpó3õzo¨¼y�x¯]·h³½þ,-Î ,wSó9Úøí½n» ÐñÞÐç¶EPÇ1óyfl ݼ9E)»jZz„*áÆaš\èK—oLDrÄ>úí÷–¹oð-Œ@?×�¯á4ݺ›¶YC”hƒ�!F ÄØ2¼ÇM8 CRοyèT¾åÈ-�[ ·@n�ܹr äxù,pž5®Š…¹$¡àZb¨ pй"¤z‘—  %IÕÐ�è»D·"¥ÕWÚ€0ж]Àãq/Ïfë?c1™«ì¸‰ŽºGA¯G¥+h¥—Ô´·C`4¶`ㄈ_?#h”J*b >/ñª¼µŸqXg¼Å:¬]nvq�­€£®›-À×.Ž�  ×cÖˆÚY.Û9\Öárõ¼F$KZjc³ºû©gm/†ÉB¯‘1l¶Ã©Î "Š7—6ÃÑ:@Ýâœ#óÚÍëéu´Ç©=>6˜î=x˜f§ÇÓPoºû` 5ˆwˆïÇOŸAØãœÅIûŒlf�·Ã#CQóÜHtåÇt`ò¬}m¼YísSèN^2¬gÉ~6;]Ò{�óšåp@–z?d:$+݃Pµn¶5±©s>@V8í—@ »™ .ðlb'ç–‹!&ö5j~Ñ÷p2àt1A=Q�­@ù=A¡™ÕAÄ3TÚÐ}!!ϵü€W3È@[  cÁìžó’Y{›éHÆýÄ8øKëŒ+‡¯sKBÛŒ~,;;ûÈáO“�?ã«´Û0„úÒûÎ¥þþÁpš{ ³ô×7Ö®n³û��t� tœ8ðÃH½Ûö�ÈçG3hß)ñ'O–pX,‘Á>Ç5'ÂXKSß{-äá•€Ÿ™žÆöƒAš›¥vBýc;Îg­a¿E6@²zÓÔNòô)rý³d§_M}zKtÓ(óäɃ{i†>÷3>kœßŒˆq$çͼÐCÃõ˜ãÅ„7¶p¼Ãɇœó¦§Iï°ê æáˆZÚÙÂaÁŽíý«²O™Fnöõ†]ztžî“å¢Ã ç û ¥’ŒŽ9Î æ�Ž ™?ÖQd z{3Õ9½;ßí¤ˆ}ìáµïÛÆÞcüøµ¹Ó7_ÍÍ9kûuÈê¬sÎk�#>kŽq@e޲—·ö!F�axuGâåµo޲糀ßú~GŜԱ�ç;G}þј×>çxq¶®ø=Ζä³Ày“Ï_ƒ'&¦Ryo'u]û˜™Éàø”ïM¾ÛXfà�°> àrŸŒtžå¾ÜüÜ€k@'$ÿd’ß¾ŒúŠY%oî¹ÌÈu ÷7¤¡± d“GY“JÌÄãü°ÿê·£.se£²A·�,0ä»kËxvÅ'8G¾ýŽ¿r�5YÓwÁ XrKÍÃÖœ¬aëÇz_™ÈúòàBV› ~ éç=éº×€\ƒbˬ¹"cšõ«kb4ÛSÖ]mBBÙ'V9!+TB¾ÕBåŠ1‚ùûð›MùeÇ“ªF¬Ýø8ØR"M, .„亶~�“üœkk?cF©äv•ó9:\_:jª³Ž®A–wh³Ù·Y dÈH- €^¸8æÞ2 %*l£Z™kG³Ó%OO Å»ÝS2oÁœ%É6ë™#œExÏ leÆÅnÊlG¶6ý¬qªÊFä�i˜–â­*™îx- ¾joö‚%8.ä ö8=!K—¬ÞSüÚÝ€Ü>T˜c®û+”N;NÞßÀO!l¥ûŸ¤ÂÞQzì335™èÊÜÿÙOÿ„Àñ Œ…$b!¸÷P�ózQ·H:0cYò›N†mì¯Ø)“ ÷ÖçY.…Íø…š>Þ×Fî¾æ¨ÝÈàü|Â4ð­Ä·Í;b~ S‹Üo0r—â~÷8=�ó4;Ÿ'dÆðêz¼'Þ£›1ϳëfýó˜Òøkk›q�a0þSÇ2ÁÃÌ�7®_Lï|p7- Ñu!-¤ßG@Ãøü˜\Ï÷��èq~úÔ%k\? !òôÉ ‰&¤òÍ$À£ÖŸFû-]@` ú,Opz‚ì?vîï'ãû È£€ ÜÏa¼#ÂEƒß…lt[ÊàÒC®k[{!È‹5Z@RÂ>#Âñõþ<>Q9ŽsòãsÀñìòn¡˜çðù›Ó;'NÅSØÑL~�‹x…î{î£s´}@À Ç4??;í×gR*dsĽKRÄÐ$� ûÌûžð¯8ÿœ3â·ÏñÝ}Ê50¦hõ¥KWæÓÅë2¼ˆÊÛþ“T¢ÛÖA—ŸV”Á«�÷[»idž€þ)J.4ºiòŸË }øHðÝYöÏûÓëdJzé`KÚåº3'ßr äÈ-�[ ·@n�ܹ^Z ÄRŸÄGpª©ÑÈðwÝBJ,rƒÈå%ëuþ~1Ýð2‚%3¡#VänÝì­Í­42:Aö4Õ+¨„á =og¶?û÷|ß×÷ûü¼š ΢Ù?‚Û¤#ÂÍZfš03£.ÿ€�Pøº�(ø6/|¯Šýʪ�Ë)M/>ا±EV€D¼Uð¦Ã¢ÒáÑ úBÔA¤+«Ý šùâIŠ&A?ÙE=%ˆi²¶•ekà@Uf¼Y/Is�g/¿ƒ¤dL$Ÿu–íC¾šm¾8;Pî"¶–þäGo†$Z“öܼq�>=¿Ÿ®]½‚‘Š`ç¯,†£À,m‰QA[ÔèæµÀz�Lx÷+éõôÙv�›££#Ô/Câ�Œ Ð&ä3M‰úyÎS³.�-­ãÅkÏ"WîTh@F_˜§½ÈÖ“nF²Ž"¯m–G‡±Ò~½i ¿ÎÑ1*d5ãj¦­Ýe}t3½m[?€QgNÔ‹Ä!`ͱ�ÄY¡F’=#8W P­ ¾m2KZb\'‚™â4™9ƒtõÔJ´Ã¶zÞ&ÛúìåÊ·éÌ0{]r܉aûûq8–%²øÇÖSnuòYY~ë´Od×?Z�q1ò|“€�pS<{ú°ÜMÓ¼ÞTžŸúöfh›õ±±¾ž.âlÀ©´‰´üÕ+×ÙC]ìáº@öYuëW‘ƒ»È{—ÓG·?I·n]‡ŸMß¾ƒ³}b}<ýæý÷¹ÖtšE9àÙÒFÔœšžáõjóãdc¬q-³Af˜?ËÏVÓ*Yë7˜'-úÖlìÑŽé´ÎÜ{FöÀøÕÅ´ Aÿ”¶OŒOÄ�4HæGDæãÄèàÄ Ûp¼ãkô<."l2B¶‰� –@¡€{耈zÕÌtèE2ÓàŒ�Îù2Ž>•tP˜5£]t2!õg uçdS‚�q,áà8ÆÃ´‹´£�FýÔ\4£"ò…t|�Ýó:Äâ1À9ϳ?ü;”$÷¸¿\ï{7v}fÓ¹tFºfïËøR˜mõÑn2úïóIw˜ÙSî5èG óýwûùâz¤�½¶G;ÂIxÖ&÷}Sm{qVȯô²[ÀyzêýÃ÷“µMÍbò{ã÷Ûø óúÇéÑöRª â¼Ç _*¿ß óO½B0›1žx¬Ó ~|=}ôÁÛ^È­6 cÊ8»qÐ46D6žÀ|™¥¹Ù~”jFÀƒ˜ª °þ‰ï-ƒÇ'.ÄôqÝãÜŠçiþä|…fEÖÔx¦0~½Vl?ÛI‡[Ry†õ&û²çÿüm(îRíªÓ¦DRë Uëµú¬a–…úÊ™ä�Û`ì¢Ìq�讆šà­öAÌà‹ÓA±•¾xλn"7—ïžxn+å¬äñ1‚‡%Ü,±à ËPV¥ARwÀ®9•oŽ,l°¢ºí£¸$ ÿ�Q –͈#JºÖmXS€Üót%­!U%I3¹vöq»‹yz #ˇ¼GFrÙµ2˜¡ éÚOòØõ^6· ¹¶òÕÖ–“„mrþ~Ú84<óŵ£jhuÖéÖã,ùq�–©¥œt ÷ bÁ“¶×L|±•}‘W±Ëìý ms*pQV:ËÀ„ƒÝuÖì´ƒq_ Õ8/;—kUúÏÏÏ:ÉhÛ¬ò�ÿÕx&¨8|i°ú ˜ ™V· $¹^‹1j‚@ŠQ¿zçéJ…¼^¼> N)¥Õµ pÕ@úéŸþ|6F«% ³Rc;`–}N%€›á#w;O´¥ÄµÓ@ÆDÂ’�çϰ“ØSßÉ9Î�À>§cPkÜ�œÇ€— ¹9¶ÅúÂóxnÿN\ˆS±¨í³=ÇÔãv 2›‰kc^1ÿÄÐ1œÄ62ò1nbš#TMíè5Ä© [àëvÑgïñ)Uq”ô–¤.Ð&ç³µÓ%vm‡ý‰“°o“ò\~ |ž™�Žv¯��>X¯¤×¯Í¦Oî8Û@lK¶YÖ�{¼�ð^E çêðÐ×DÖü×Ë<�læ ·VÌ·¬dZ¦ò§?£ÏÏ2Nã1îÍ¡?‡L9>ƒßcü<-ü =`Në¯GÀýå%ψl`+Í ö`æ=¿=·6Ž€ îÙP`ì\+Ö ¢ë� Ò<êDpû(÷X™gÇèøT<#Zd·y¨àà HñÜŽ·ýå%Ì¡ñQ¤áüt)mnp^”wZi;îï¤ÉQî{ìÒa¼GÅ´´²™¶ZHé?â>Ä/Òmù,Q¶�s[‚¡TÙ­K0� fÜ;7�Ã>»ò tlžo¹r äÈ-�[ ·@n�Ü/§bYÎbÙšKG€Â­]$£m*ÒO.n›Fº»Àuáë:ÞÏü1·hò?VóáÌ[]_M¿üå[釯¿žoÝà%9# ³Mfq{¼„–®s ñ8ˆ¢€ë40‹Ú¶hO�÷=Á.°ç%gn€�Ù­HfN¿ƒÊ~LÐâw§EÒQ¢Ü×!-ø4²X°º‡óÃý ³•Jž ÊÌvÆ�]¸>ÆÒéi½.åÂkÔõÚ§v¶ž½€ã Èk38 ‡=i”J·oAbáh› ~õƒÇ�‘R›N‹Òã'Ò›¯]KW./uÿpÛG ê± h%á§!S×6”¨ëÄþ#�§²ë‹‹‹AnY~qaÒúˆ�ƒ4O†²}7«Y0«cEÉwí'á¹OF´Ò�’þ;´K9ðÀV"_'€$³Î»}ÈøËH†›å®óc�ll R#Í1Gü´ë„™µ.1oô¹d´6 ûã˜);¯¨å®|{H,2öÖ9‹{„ñl*7Èg=²‚½¦ä­`T'ƒÙÿ:¢tz˜•®Ãʱ1š]A?×´Ÿ.Ž^ÜoF¸í“ÜV-€ÁˆŒ k²;ŽfŽ0´«ÒªA Ü`ÿ½? pPb°‹“Ì>O!}N,>?qqgHodL]�!»l,æO©çRÔå{º² Þ¬ò§K�C&}`h8=�@?äšcÔ­ßÿåAZ!°a”ýÎk­ÏÍíO�Ë*¤ýuqÖ ¬/1Öd­/-­0Æù<íÏVø=™.]ZL|òIº|i�H÷‹éíwÞ%@ãɽÅèw•¬õ+W/¥§ý,m¥52ݧ҃»÷€Žü±È jB`´¿Î&†(6 æ—A’Ömæ�çe‰qk�`Ít�Jj¬ 3ÁZðUÒK°¥sP¥ƒ�=îXjÈyÏ(¨ƒ‡dêûy_ã0"«SÃ~jÑîÃÜðù �Ž4* Ÿ:,#ã€}: •[t"fÏgågž7¾ÇÜÐiâ–ý/ŸûŸìÌÏý±¯üûb?œï:éð…¤�–Ξ$ÌÛ’?ØÃøƒoÒI¢uµ…Ï`íêsÙï7m*^»ùÜÏ·Üߤœ‚>Û%=ü>((£ûœ Êæº kˆýej²B ÷C~rr¿ëòyþœ}©wÝyÖ@'�ðã¡Â÷•O5¥Ÿ%&¦çSÂÀuH¬sùŒë?ê÷1�¬ {(Ù2™êC¯’ñÆ÷\�yÓb½éæ³Þ¯©�næoŸ«nù¼ 3¼üÿ0vÎ ƒ9+dkîoÜMýc `‘Qöfß‘¾ÿE[�uHuw WN‹¬[YK»¹ßµ@¾}ޏGÚ` ï³Ì{û‡YDBÖ1’âÞs]©žT¾”vmë~»Î|úìiºwûvàÞŒ&x’÷è÷EJS5Զ̸ ò›óZKÛ‘>w”YÏ“…~ †›TÀ4ªH ŠñüŒÁ©%°’êJ½{§G&:ØVÕ«ßS3ég?ý ó‡ZÏôËLsÞ8»^ö8=µ&:te’|w‰î6Aù§Aª>�|Né‡à_Ní:šµ1ØYRO2ñ/dâ¹n�}ôE–_²»�½|ƹÀ¬XÜÅ~oÆ.IfÇw߀Ú*Wù¬3s�ÕiØ¢H`¬ïìµKVøð…qŽ9M�¼ îõ”çB‡@IDATYi;à ¶ÓÚn+nì¦�•�´¾´–úȾ13¡+¶/DæùÜÌlúÞkWQø2Ëž‘ÆŽQËž@÷­-Æ�ã*”‹¢Ñ<›y,‹]à1a�›îÃNÒÿó=iß ‚ ø�‡z–‰N_¸}»Övî�ÿÄ?q‹“mCðü·²+îYÉô,HœŒ 6Ë[Ñ8N>b>¸Ñ™`²³�P­Ä`eõ ´õ1Á˧’áØ×-0óåäÔ±2“žër1ÇÊ �S•pxmÿhŸ°Õô›vú*ÚÆgT^ðGŸ†>Úõ«”õY0Ft‘ îÛ´·”~ð½ËéÁý¥tç�÷Òø�+~¡ÎFV¶êxm|öÏ€gm¨ê]KÇØGÌîœî¡ŸbxýVx� €Ïûñ}¨^ÖD¾¿ÝB…¥ŽcfVµ81˜Ñ7çžmäž:íJÎ[*OìÇLƒ@7Ȩ¨]¸ž> Kdó‚1+v¸?›$7”Ét¯hâ½iâ„÷Xœk‡ã:ôÁ6ëOò™«²ƒjv>Ï;(‚ØWËà ß�jÂú.Áô¢˜x¢Ág�uÚGÕ!zè#ŽnÆ|ì·‘`/#õp}qœûµ×$÷ÔÞBÙ¢÷$ýÙŸ-òܱ^=Ýùp%Ý}{-ýð�×Òo.Æsä郃tçöž¬9¤½jÚ‡ùAû½�º<÷1Z „ó5ßr äÈ-�[ ·@n�ܹr ¼tT¹x5§‚¶��•´üè „ÖÕ4¿pñ ä^L¬ûY Û ¿ü}ö*ûýÏh.þþ:þ¡i\ 8 è5C´9üþ·ÿÂïߦë·ne$¡‹~ð? Ò*È”XË�½Á8€Œó¹Ë½:ü²Wþ>k<¿ÜÇh›x+£[6‚CAîÙ;AŒy £¹Cv àd;¼€á„ýeÖ‘2Š_P¢ýNÕ ™!Í%K»›‡¬¶Ç€$ÉðVó ˆb>޽!ß9¿™ÏG‹JxK¢îá$èXO>J¶™ â¹2Ñí|VÐl­ËpMXƒHd¿Ž³ŸuŒS[§ãE€ÓÁ¡a6ó`Ó[á8 s%Îóæë·èÇ1Rà«d!_¤ïÊÂ亂×oŽÛiÙì1d÷”\_Û@ÊÝsWŠ¡ûYö5–]g¿äŽÙú–YÓ•pflomZ�"³ÚúÒf4_^¼D›Sëf\gÑÞ1+àÝà3Ž•6ÚÃ9ÃH9áécÞX'ݶH&�¡` P¸)?ˆÛ€K½9l¤} ^Сãr ½G$8 `�V:þ¸ÏŒ‹Ìqcƒ@ßcÌÚòø o9?S…>“MM<·r�-ÆVplF¡m4[‡G‡ÈqVÌ„7 ÛóèÈ8àšÖëÓ¡¦$¹ûÌ,Ù ;\'ˆr¬fŠÛŸ¬úQÚ&«| ÎA:‰†F!ä+dŽ/A #E�sHE‚Å+WÒø…É´¶ºÎ(℘JwïÜæ:H´Ïà0z„Íw ¨ –¸7dÙÇ «ë�«‘Í?7;Á�©‹>ùã1‚²LõK—«éÒ•KéÎýûéÚ•ËéÒåKéƒ?$‹m'MCÆ?yò"Ix®·²Bæùú:„øLêòŒ,�µôúÍÌŸQ®ÿ8ýàûßù÷¥§OÓ›ß3T žÒ�¹¹jé¿|›Ìø‰PHøä£OR}îCš½§Ã2ö%#R˜óuæsR]ç¢ö1Øaj‡sAu³+¸kÉ|çÞBáA…5ZÜWfÖŒãèÓi¤�¬7_@ÞQ—›5æ[f „?NL¢üO vè�™AÐG›¹a ÃIP—à!Ú!“¦ÈóÉ穵Թ5bþ:œÃn>+|$sË+¨’½ŸÍ³ócyë+mg§þJÇ>ÏAöÍöÙ ºÊ+úȽës®àêò¯Cdj�å_ÁRgÇGßžçB_Ó±<ÂΞã8Íx¸zïµ2'â5  ý˜ù–[à›¶€ß/ÊZvš»(sl§Be8ˆ ï¶çÙÌzꮥÕÇïápžçzdÙýö!òRÙŠ~7TèíOKdå*Ûn¿Ü}’ÏP횟 œ˜ jÅÀ¹Ã”¼øoÿâ§p,ñ*W`0ë^‹qÅ–‡�Uµ†\·%,IÅ �?hweµÅÌ>â•w÷Þ, òv Ó#’ÞZŒñ²fµ~ƒ �Ë ‘ÎÆR˜õíc¾�leoñð�p.÷ÛÎsyvF#îcý‹3XY`øÝöjOƒ:Jމë öÑ4>%žUÅÔC9Þ7`@{«-xl=ñ3,ìTV²ÙéïymóVRš|þ Ei. -[æ÷Ìy’A…9raÖ’\§éÓ»÷�£týÆ9ˆ:!ãËÍ}Œ3ÉrÇ® ¸§±Ÿ *vì×Ì t†4ßr äÈ-�[ ·@n�ܹ^. °Ì²œm¼0úôàT‡äX]~œ6VVKEjÏÅÛ,J³—×rÉ^:Çl,æYn„yNþüƒ6Ï!X`e €Éœ“ããéßþüçé¯þý_¥÷ïþçô?þOÿCzóß©k‚LhÖ€°øwà$ð?[æÊ1H@ŒÑ+Â;ÛâR^ðñˆê)3·Ÿ€Ïslà„ó„S`ã¢ß>e$Ú¼~€rZ-¡îµ`F§waÚX0df¬²}zQwŽ÷f$‰ïç$¨­Ynf¹@Zàª<´¬Dt“´W#’Í,÷øÚ#˜•(m¶Ž`:8$ôRáˆ�ìfI["ðÉNÐÆFö{M³Šv‘‘Û¦>úÎöNºvér�˜Ë€¥[W ¦¸8—îß�f Ç'†Óû¢’ê½¥© ]�´IK«+‘é=ÿæð� úg!iÍ$_ÇÙzùmÉìUˆÓ:D°‘ÔÌUd¼FÈ|W¢Ûˆi幚:åŽ!,G‚TWBmòâ$Ö­´Bó0Ò¢¾QÚƒJ«ƒבÁÓ©¢œ·„­#ÐÉif¹N]åÈÍä—¤HQ®³ÁkJÜ›±žMæã䜙uÁ(óE€gmH³Â™€]œ´'%ê¤ñm¿µ×Ä:Žu ñßѯÝ%Þ­Óí5”´³Îy‚Vyù‘ÎÃ|ÚÃ1íx)•¶�ÝtØnÛf­C ]%ï�|ýDÔ7‰’߇ôW¿’öv±ùÌ|DÄoooS‡|<¤W·W¸èOŸ=ËèÿÝOï¥m‚%ɼni.!?3=Nƒu”¦_ƒ±Ã´žæçf!Ág¢œÂµk×Ó-‚)~õ+¤`éç<µ ß~çýh£™%wîÜÅy¿ÍõƘûÕ´¼´”n\¿!>ž––WÒ­›7Cv™¶X/}~n.Ý}ðiZ\XH‹—.¦·Þ~Ws¤ï½ùzú›¿þ[‚p‚ܼÁk´åÊ•ËPS[ÏáÙ$þî½ûéû”0{ãÞ§wp @¤37|èL<Á®] C(�ß2è„ñÓÉa`Ây††sÉyZ$ ¢ÁجpL'٠ΰe¤ë�ë::t¤¨ÐÏs“§bjó9•¬[sÎ�\Ηc¥'d�âYá~&h©Ë\àü>?}Ö¢nÏLjÇI8�¼Çu$ÙGƒ–|V�o>ÁüùÌ®xßóÅvþû³œþ9.ç`:~¥ÍS�j;uä¹/²Íh_'ìðƒkÏþ?öÞûI²3;ÓûÊfyï½í®¶h 1˜gVC»KjW ­B¡_õÏmHb(´$Á]R$—C´wå½÷•Y™YFÏsà(»”¸œ0ÚL ºª²nÞûÝÏÝsÎûž÷¬¤�?ü8ýð·3µµSn€¬÷Jç÷7ýúºíc¢ífÌ.++gH âÅYR �0û#úæ›oæ7Ý-åë}‡{À˜t%{ˆ«®˜?æY˜Â³ê«ðj¼“—•ÈÞ‘¸6_¦c€—Ñ;oó^)“¸ô¬û‡ÎQþÛ¯ChË ,i7æ±?”}ÕÖpÞÝßIú§ÿgdOݺ›º{ÒúÑAØg{;im˜”=�lµêŽlhæuz/N�ÓñÚ*(üyZ^¨JLÆ<ÏÐbî“Ô�­s¾¿•æ_¿Nïü³?Hí]ÿ `òöCÅ,ÐjlOm<åz}ÅVúÿõAóëÐéÿ?kã5c–iÀ>FÙ)w¸”ê[SEMOé9ˆíüÛ+|ŒWTb\]�ðª=p²õ:eš;>[cÔôaôËCÿÕ„a9h'5·´!­Ž�HÇ\@–Vþ< ÁŸ+çXËú/Öw}Kpp:ÆG“lyÿÁƒðƒ´ µ[ÂÌlõ» ¦ö©þ¦`¤ÄÑ6T¢ íÚjú ä%ü›þŠç¿æ}KM•²¾‘R§F²Ù†-øQ»˜ßó,¥/ÚO©¡ÑAHÇ-´4†;f},š¼žÀùùñþYªÜW&ÓLi,¾8¼Õ,ÏïôÒwŠ:ÙzÍØ¿Ú¾>º$¡_BÒV5 vm5{€r´6±q å·•‹ÖgÒηô•þU={’J*MU3¯½}|ýtËxy¯µ0XõÏýÊå®ñ£è{Úòɇ³iêÞ[X²×é€{m�J‹�}6öR+¥¢ÚØ_õÅß¼šMÝN€×3#Ü_ÂWÙJ- Íifz:JTé‡ègV± rka`:Nßõß4ôWõóÝ+½w‰Ö¶ñ ;ÕWÈï;âÆRdžߣ߰gí«çÔW~…þgØäÌ%}Û`HXW  "öiÈëØäž«È¸IºrÇ6~à\r´æ´q<üø¿Æ†*¸/Nþò¥ióœÁv Ä:¿%Jfðõ™TÉ1×€©’®™œ)bLon¿šÏz ÛbûheNxN± ~nmnÆ»`[ð˜f¤NÈÞSi4­QNîœÌþv|Ž·ê&ÒæÖnšü’gáqjÁ—m…$ßÎxÕ1Í�öâ”y»®k–ëÓ¨Ú&™Þø åÙvóKðW2Šk @%?ãAÞß~v}ãE¬g›ë\týyNשý�ƒX_UE ‰Œ‰e®®UIÃïd \ûÆ�®$ޏ¶™Ó’®�C¹¦}¿š±31Á}[¥@É!*8¸>$é;†Ž¯ ÷ï߇4€¥ $0ë‚”£ßi¢‡¶ÃµÏ}÷ •ÙìæKï‰Tsç!}à ¢OªÓòR–¸I ÈÝì£hM«+Ô[ç<¬jΕ¥vúQ6Ñç8=¼ÝˆÝÊpAÿ2çŒ]8VWÌAý@®Êµ!@Ðqù{ùUî�r”{ Üå(÷@¹Ê=Pî�ïTà'„Á«‘�ë�� S˵µ½;Ýyð0ýÕ¿ûÓô'ü¤þ{¿›&¦¦p¸””.ÝB©SøEüãçÃÆÆ¨/ýw«ä8•~ýGÿkÛtÜžtò°iuX&&'Ò¿þŸþ‡ô‡ÿëÿ–þÝŸüQ:ÜßM÷îÝI=ȃ“îðH‰£–©�e]§„ΆàzÁsq^�ë9]q3:qlà/‚ã:Lú{:S|ào©šà%’l*�UÃÐ.ù¬:«Z‹óRàMYÛž£;]&¼Ž¢À­q08ƒ$ Á÷•À>&k[¶à&H.j¬Ùß:bYKßËñ{-Žj%×À•¥Ì¥ptð¸åôt¶étžtú‡%°PMF¥Ù ÄèŒ  .ë<Ùf3}‡É6ëx~a6õ’1>==޼öZ"»÷ÆÍÉ`ã_ µ54H-j>{†8`*ø~ à;ØÛ¤2é}Èt[{…zcõŒI'õÇ!•�ë!ËÉ ‡mì"kAY3‰=ül­îEî[©1å÷ ©<`Æô ΰÒp�0¥u\ƒéwdµÉ¬°V¹c)Èî5%èZWLyöS‚/¸™P1ûÁ åH•9W¦­'Z"†¼Nt0ãuîtž ]P¶F¶ ¨°ªF` 2ñR6-s‚þ½4 @0Apµ�ÖóØð?‰ µf”0Ot$�/¬>Æ–;mÄ–=o�¹6îõää(έ<»YÓö·Yø¡6Àg:Íü MôA'$“F2R²(8Ï›pœ·!444”+©î¼lG`‰1?Üv ²Hnèƒè |ù!²…££5tï1Gi6 y_zñf.ú×ôkkëH±¯1fd)ÑŽ5ë¢3Þ÷ÊÊJºwû6Œ6@ó�ÉûzÓâÂbáÜCéo?øû(uÒûp¾Wpla£b.¥¥•åP3x_\ZNo±ÆÇ‘á_Z\dþõS}0}ùôi|›K_|ù8uyà<Ï:³N{/óyiþo�g'ÓýÁ}›i—9£Ìžck�=ERC5u'•¶s 9¶þݹq|b`‰G‚�’2” ´–·’›gd¨¸ŽÍ>pœ«j@)AÇZ9Ë6ˆ|8öÏ×ÞÞ²¹Î³Jö§JÿÕôý%{B‘ì‡,{Œ‘®Ò»ŸõÎk ZQTÛåÂwO’4c¹Š óðŽó¨¬â�Œ—!8%úbÎ1]Cv×?ÄË3øþ�c=ÞcK/b«‰y[ ~û¾{a阿9Xe ?ä\&‡â«“±ÿÑvçé ?ÿÛŸ"ËgVÊ,ËF|}µ¯¯çÙ¿‘7EWpÏî÷f<Ñç‘æfW xU¥Aæ¥kš�¢ýÆ[÷�tAù"¿>=3ÐéÈ"«$£é:‹´n�r%¬%­ÚGÿÐëïÖ6 Cöp9íoJ(NMmݬd×AyŽÿCý÷ëð·ÈÄd.°÷–ç!±}Ê·îò Æ6Þ@U*{z�vgÓéÞFj€¨xQë~ r~œ(6L[E.åw—±A•n…´h`R^ŽçS+˜Õ{sdéaÑ1ÛײÈyÞíl¼I�ž|œ°—ß¼HO>ù0 NÜM¿óßü÷Ad »@’gyÆ}7g•ãöä>3#‹ì3ùÓ�ÔØ èzÉñÅAÚÇÚZ‚�ñö²ÂÊðb¥\çÓÑÖlÊ`dZ‡±«Kd´8°üOì¹f­ªHV… <{ û¹6 ¾NY±ÈkßaW³ªèb…œYçs2€«RÙÛ×ú/ø > $†jÛÄù}>0FØ´ú’î÷×ø]l%›‘ìùEªkÒ=&wV…ªh (©p•€8ë;Üc¼†°��}iršM��ã½Â±ªØ3œÚÇX¶| ŸMð×Ì^A@íãñÓ©E*%ß%ˆ{ g”þûÕjôÁþd–zïfÞkËóïckr­ãÓýðãðm¿òÖ5tT‘Ç/ÔÖGƒ¸•É!]Ük…qî5S‹bYÐf¤WÕá•C*Pê_¿ 6·L_1§øû9ãg„mohhÂocM÷Áï©gLÏ™O‚û¾ÀÏñåÉv熌Åà`Ð^ú ò%×wMøß5ç¶Ã� `ôŹü› ~)nÁ¹8™×­‡ðÛˆ?ëüPAÍq­£*þH®dîÔb7Ÿ¥nâ(’1Ì8¿¢?ôÍr÷\ Qdyæ;.®!û J:0ŸTÉ0æÄh¡6s”†&›Òèp;s�¶Õ_§ãÎÇ}Œ�÷«Q€ù[a©³\¿9J<¸L ¤/p`±™f²á%¯—”iðÁ ÝI€hi‘,PÔ£ÓÊÿ”{ Üå(÷À·ß<#ÂPøö[RnA¹Ê=Pî�o¿þnOÄèÆ¤çLC¶c ?Ýzç^úìo?${ðƒ`~ �¤ÖÎnld»pütt•tSfJ@ÞM¶äñ#ç ˆ[ý»k}uÛÿ÷¿ßºZ:Rt6³8¿G'Ô ;TmÈ„c:ûê`î.rÎÖqlŒ,Û&¤¼* N(…-`­L·À—N·þ› {\2´q q<¿a C{:÷En¿Š R‘ÌDƒÊ©ÉÊÆiÂá‰÷Í�ã0àÐóe¶‹s†#b�rß+âx$Eà€ßsd°šå\I[¬‡mFq.$ÄÌJ/�ß‚¹Þ8­ 0.:”@- °VgÅŒÜ#œ�l:žßü46 *Øj À~”U2ë€õy>k]mll¤vjîÝ~÷ÙÆ;½ºÒ{ï= 'í€l¥bþm 'Sæù*`X[ksHd/¿Z �O€tÏ,oƹ‘Lè]²¥Í^êë¤ÏG–³Hf9ìAv°®º�‹ êa 6š¡½ìëO¥ÚŽ&;�ïl—Éíxé�ì…D¹RcÊ¿;7º[ûÍ>î¤þµLnû¯�1¯'C GàE™;Ç'%g_'\v÷EK®qÆ�¿¶Ëºáf5ÔÕ!iJ¿éášíÇsœ`¹Á·pPézAp�>ƒ ’%Ìs~ °_NϨ_HÆ�™î÷ȸàoâ:—²Û•—×mn¡�×­õãÛŒ~kš;–¶C/ÜÏ(ÛîK<è4Wr^`ÜMd…åÕÕÈb¯ã3¶ïŒs×áä7®;ÿÐ ¶™Íž!€e†ö)Äï}�ßW7Öø=ǹ{Ò&rü‡Ž uÍÜ2îG‘Q.h¿E@ib|RDwZ˜[ˆ¹2:2ñb=]Ì\¤ñ‰QÀígQ³®—lÿ�õU@wä׆R›€þÖéÓd t“I³ñ¢Å‹‘4h>Jùˆ²[>ûüÙôý�x&cÞJöõ˜ù…ôúù«433ƒ„lkzùâyúÑo|?ݘžHÏȨWšÞºŒ_|ñˆûª¥ìÀÍô³¿ù@"ÎxZ^\०!×–4�g\ͦðg×Lž`‹}d°FKyöX“DBŠ’¿dj�k� yLpÍy`‡m$­­®ÅœV ¾ÙÜ-î½ö2º+0. Ë™ƒPC§ž¹zÅ<Ëq¾, ®ïµå..È@p™3—Šld‚®Ø~˜ãîìÌ)aWìW.ø&Ѱ®!ÙǽŒkñÝ`PâÜ98OÔ/ç_¸¢Mþä¿߆Ì}6x}&dÌo¢>ìXœÐ#­=äæÕüì\úË?ÿ‹ nüþ¿þ ¶”2ª f¹ç–ö,¾}¯¿ Xr-Cº¥ 2œç ßÂÏWê÷�´€¿ëg|ñ$ŠlûlYUà¶ðánÜžAN¾)üÒ û–2ÔÖ׫¿Æ×pÍç°©s��é³F:áµ3îý”X€sRrkñ±q ìqk€7סFÆ>#ðçC.dÃécKhÁ@–žÌuZÔ\W"ôÔp’^Ïéæ!€À,÷úêÍ2Õ#i/WLK€èÕèvlìàœ§õÙ¥´;¿™&G{)+uŸµ3=6×vÒÍ›7ÒÃßa,ÓDäu2¥U3CùˆÏºŠŒCwâ+ BbB�õ¤ ®| —6XîÉiî}yN×À±÷ ñ¶×µá˜ûù c3Ä\”§—ì*‘DŸÝÞàDUš�_‡Ü-ɾŽ6Þd|Û›ëÉF…Ÿ¼™~øƒé¼• H¿Wôw-@}%d 3¢—VwS3kÊû¼bþ)_CûÇ̬ýs²Ïõ*êꈿà?q¶ª:ŒY¸¾ˆЯ–Vãvb�{{8=É%b‹xºqŒˆQEl�%>ÒÔˆ‚}ã¸]ð÷J€élîð™ qÞËSò¡¡b·í„'2ÄúÔw‘8R’Œoj©£ÿ2iŸ¼ÿ�Ôî¶R’Ž~](8Ÿ˜‹Eö•:žÿyÆ<ÆàÑ÷î’óòØ5µíéô²#MÎt§ýÝ“´‹ ûu}{ÚØ«æy?Ï�µU2ö{GÓ~¡*�7 ¥ÞVÔñŽ Ú�u¤ÂÁ±™KÚ£²`¿>4@º2ñ9â{YÖô)Jοò«Üå(÷@¹¾#= qP~•{ Üå(÷À/z@'K§$�¼’LÔ5�?}œVÈmikN»H8òчi~n>ÍܹEf'µŠqÍnÕ¨�ˆÉ]àXp®ZKìníþøî•txt ¢Æ/΃…/ �õo¾ãí××?‡ƒÅ/ux½'gù´°0O[~–N¨al=©cœ¢S2“uRtܰÊÑ©Ñ  ØÀ—AƒFÚYG��ƒ‚õ5ἊN*ßÌPK'³tq×8‘’|KÇ'"@Y‹ƒz‚„—Žo8¯¸k:¢X|�ˆÀP2]GU©oïÕºr‚í‚Â2ê½P)ËG§ð«»¦=JnVsmp©è³ç•(ô-È–ÇëªCÆ/wI†NT ±òÓQ;ŒëaÙˆ0ÃÛº–Àô8»É0_Afk?ýWßPž,xŽ�žš„ \Ÿx;=@"ÛY¯ÈÄŒLZ"+++Q'¬•«µÐó¯ÝããÑ®3ú`d˜lcœWÁU�X�¡���pì:�è6+ÂÌû€qeê•(ïD6["‚5· (øµOV´ŽnÇȲ¥I®c á)ò暎±Áÿ XÙ§d>™ùÜÌW˜lm´Óƒ’zÍ}‘eB=ô`ÜÓ‡Êøéä+õ. l�IÇ\çX�Ô¹h{uzÍ:VÀzç ïì¢ÿ�cÎeYýÊâlð�AguÌ'~.‘KÌ�øAp‘¿y¬ÄE<�ÜÓƒ RŠœG÷� �-†Ž Ö5d‘R-÷’2�YÕÜ/Á¦ìÙIº¦›Éˆ8Ø;H=ȱë [Ó\9¹X—ôƒ%Z‘ˆ4(!)¡—LoÛ Êf­·q.ëÖKœQ:~ž¿_PþêõÆü ¼+f®ßœžÀ™gc£#d•÷¦ ²Û%ܸ9�ÜúçôýY yö ‚½=}!OXqãF|faa�¬ó�P8xÉu!Oô¦W/_Åf¾®¥u$þGSd Ûóýï½—FÇPE€È180”n|ûø£O�GìDŸNû“Ÿ¦ÙùÅt“y½J–Áù{ï¾YöoÞ¼I?&Ø÷ÖÛ÷¨Åþœàn+ä‹é¯ÿòoboHŸ~þ8mCéïï¥oXþfT!S—á z ®ØÉB6�H‘(v�x`DÄ=É>T)¡Àœr­ jˆFœŸ!ÓÈܬã½-q̇æ¯sM•df;HJ9c}†¢�Œ¤r/ê¼±)H1+ÁùU`²YöÀÈUÞùG@†ub0ǽǽSÕ ÷×<ß×­¹èô^”´tϲÝëØB# â\öÚ‰ z ˜[ÓÒ`jdý;¥9žG0ä$ 劽‰¯È0;(«KKivviÏáô[¿ÿ/! 0·É´à:n Bþ)/N÷ûõ÷8—§ä oË{¶J¡'fuò>ÛPì­ªNOsi¢È«'ÏÓÚæj¹5�NÛhPÑý§ü*÷À·ÓÎWvföš Â1Ÿ $WÔ42‰QR¹Ò†ðYXš×1¹cIÅ?Sžc¦"Ý~¶7›v7 a ˆµ»LئÊsüÛÛ_ÎUCÇ]8$‡ñÉÏ?H¼ÿ“t�Ò9­í-Ô3N[ o !n§jñ&lW(×HÍ´u¦Ë&Ÿ1؉ì˘SÈ«V7[@Åç‚å6®xf\qÌÚödF‰}µÈ�üýìä*ía�´ÖS¢0  p–GJ¶µ6-¼ys.Ïó¡ý¿ûŸ±Qy&¡Þô Âç/§Êgùåô€óI»Ã6ôJp³üÙ>·¨H1Ÿ.®%iÆú{G5öAÈ€¬`€`ñ´Åþ©ªÂ6·lv›¾‹@llH¿œfþÚŸå«:îC`ªº¶5öùRy!ì02Ì%3šùéÞo&ª`z�1IìM Ô¾´G�±/·÷O �.¡òSϺtì³8[§ŸÐócbQ{w‹Q<[$EêÇâ¡j5†}'p­*—×Ä«àYÃÇð#x^h+ò¥ŠPDß|UÐ$¨_â“°s+ñO3�kŠ´ÿúš²dØÉµ4Êvg(¹ØžC±LP»§»�ûµ5¶4×,b™Cf3K*®áú5Yå¦�1ø¼boá}³žJ ½„€ÈǼ|ÇÏ@+BL�˜m.ýgßg¢¦Jæ¦$OÏ'ùߘDœ›ù\K#õEŸ¾\Lÿþ¯Þ'£¶IýkîºÒâòVzùìu:ZßNƒ¨¨ýð÷�h¯ ‚A–Äq‘ï¿û_ª?Ÿ~òó�Ó—�‡õ9%æÒ¡±÷ ”Ò»±.ìÿ:Ê:uwõÆÚs­„2šCǸi‡_ã/jÏjƒG;]OŒ] Ä�š Æª²–³xžR=ík®cÝpûȹæß"V�ïpAŒF¹u³Ø+±ãƒLKߟâ7jËk;+"›ÙkÒGUÎ~V’ÿ‚ÏxœÙÖúÝú>’Ï�ÇNïU$ÀsÆO˜÷±cˆ¥ØŸWq/_ùÛÆ>ô+¼WÕÂçá¸XŒYØ>ÌCIaÑã#‚®£ÏÎe= ¥9BðØ÷U-$’!¾…6ágAº×W~óz>ã» õ£�G¹³WoVÒ_ýÑŸ¥…·n¥Q÷Û[ÿfˆ)ÕÄ®›-–Z{õUšÇ!ƒ<˳�Á£=®9wDÇ&�Ê[Æg£™òÚ6ͱ,\CRá~ÝW}ßÚëJv×V1¾€öÀã$`ÓáÛI€«cMY¯>GâC I•t®±CE×%Ì£ª¤ u\óÚì{V©ýÙê+ù¢†X\1O ÄdâNÛøá-ÜŸã(U€ýÜ[¦Ò¹Ã+ˆ¬Z|Œu�6ÛÁq|´ÍvÅgq00æë— "�}Ûûè-ÎK NÈ1`ŸÎÞö&LÛ*kK �*¿-&à%l6´Ž"Þ’uGáü+^�7 c¦¸Ú‚‚[f© R›åcv± «YáÖ–\Í ¬á1…sž÷ÒàÊháÁèüêÌ–œõð�qdŠjÊéÑOÙïü¬cªóXƒãhÀ±Y¿júº çG‡Ö,â�÷ã6t5ý½6{’ëÛÈÔÉ �ž¹‘êÉ ?!`aV¸ll¥Ï'''ÛÒ*ÜW8w-Jm“é,!ar|"ï#ÀÄáÁÁpx÷ÈÈ3°±²²ÌøUP½3ä«­Ñ>1:ÆXTxï˜ÛH_.ÀÃoެóäÓ%9ôö˜™^ ±ƒ,h‰'`uêì#ï£.Ðêh³NVGçH8Ùfë7|�6[Zf¸’t8…f ×Ò>ÉÖ#DðÖ íCJ^âÁÕ‚éJür®ZOkîL‘y-C^çXiûz‚ÎAÁçï)+ç<@ôšÎègÁ#H8Æœ[ðQ@Þ ƒ!ûÍgJ’m¥ Þ€ôûëù7i|r@vŽÛ'C©�+»YÚëi||,²g^¾žMï¾ó.䌡ôêÅk$åûÒÍ[7ÓÇŸ|ŠçX¡-s´5j  ¤×oæÓøƒtçþÝôüÅ«ÈTàüƒŸ}@ �uö«2 Vh÷ótk ÉÈííôâ%€<Ùéo¨/ö6CúÞÃéÏÿì/ÉralÿçÏ^¥,$ ëǷчwÜ3œ �•Ì/æ“;g�[8wÝì1sÃàƒAI•̬è£.¼Á«‚4ÌáH¾ÜwÜø ’šI%¨Ç˜aN5PKÝ –z@‰FÝC¢Î#óE0»w]¤”Ø¢ÂÆ9{ékqi~>öZÕ*F'ÆmÒùœ‡@¡º–Y_þœ÷®³Ì+Ž÷Ÿx†D,Ña16÷H÷ÄùcMñ^©Õ\�€’:%ÄIz„2ÁG¼Ï¸�§ßýýßKÓÓôk™L¯¯nõÓ¬ò±åøåö{Á’ >¬�ë«‚r'¡ P¤üJ5g¯.xž8ù�ÿ¥Œ°ÒÚÒn¨bís›H·¿&Ø àÒÞ¦®Ÿgåׯo8zî£þÛÄüèE>ýŠ,ôÿë�ÿMjã9mYu[_jã^à™³�mt‰±Š`üÁ«Ãtz©“gT{w“ÃLÁËs€¬}‚ÛØèÚŸÚ”Md«º‡_’=i>˳‚G@˜²Çd®“¡¹Â d‡F ñäj à~5�³§ö^žÌ5��ðD8¿¿ï—_ß�p$¾TKJd’GÖ* höh=5µ�ñ eL6¬>ÎeAPU`b²²EìnêåVU×3·LõXU˜äò^óŸbý_Á)—Á5ö^5µ«µçj��. ãëéo¨4öuư¥¨Ì~mjé`= ´QJF£eÌT%1«T Ì‚¤Ì<ÉLÃØŽgËÎI�Ÿ+K³MÌUÕRîœUêL`�³ºaQ¶9/$CwAC°ú{(Õ†íŠ�Ê=øFûm“6q‘ëé› rÖàs J¶;—ůÏrs|šß±Ë°¹2€yÚ”‚á•ØË•|†¦˜-_@QC€¶N{“‡„â†ÈD××ñJOkêÖzÛŸîMÎ?mqvB>�úÇ䨝T¡r?ºdß–T­ÙÆçñ[ÿÍ¿ý ÔÔ É^’±ŽzÕ.„½4:Бn=¸ÄWNN»PÀ/Ÿ™ÃϪO;û‡é¯ßÿ }öÅ3b§á¯VWž^C´¥Qö½än*£ù¼ÞÉïE|chh �I ßguÑÖhwr8œ¬'ÆÔ±ÈHüæ÷Š @^È+õM­ÜûWÒì\Ã{•taé2»\+¸Û¡Dôå�X³Æfè7|ýÖÆFHÃô«íSËöF=v®m_Ö#ùš”ª�ªê€6‡ý+¡Ã²Tîÿ-Ä]B¡�ñrp|¬­.yJÒ¹Ïåä½¶~Œ±!˧EŠPœ2j.ã%š £’À‚õ>{Œy®-$Ú³¬“ .� ÎésK°ÝN`Ô™‹þp‚¯Ö��÷ÖƒÛ”.ÛÄÆO&ÞpkfóðŒÎ[ÞØ¥´ÖYúÑ;i°§.­®¢¦ÇZb­It÷þÏ%¥¡¬`_�½îs8 ´SXÛ9f,ìÊ5N›"VÀ}]^””cô½”6Ïs×"³„X óCÀŸD Þ12ĤßgÉ4L17�/fê;?¬en&~5$–è߸ûR¦·ëW•;U!ª=ç’PmÿÏ1fåX¸xb½:~\бRB’÷³/>Ooß©Eî¾ßê]ø¯W(valnà#S¾�8EO' �Yö¬ºqH{ÍU•ß�$p‰B^sÄCl/î熀ÀüÈq1¿3\“·Ë¯r”{ Üå(÷@¹Ê=Pî�r|gz@]'#ìf~Ðf$¹Àð_]˜ Gogh3©Í>XÇy×IÌà@µâdèôutöà­ùk%µ­m&›U2‚p4:ÿ—°n/0š[2ÿ<3`ƒÍ.ÀYÄÑ×Y«¼¡�>kF»à¦lø>¹zÀäç+�q*›pêkÍ‚.�ã8Å8¶—´UP}Oç¹ri¤ËÞ„ÖiÔa¶þÓ9àd€\8ÊŠYo\àKGEIt :0èf\ë Êž÷{ÿ²ñ­‹n0S°Ji1"ƒ…öŸŽÎ–]®£Ÿ#h©ƒi{¤ÔàðA?`<ø-Y™ò²Æ¹6ç�\ Øk½1ëTQ5¤¢·ßZ‘…¾uûÎW†€åYåSáĸ˜™ž yïù…ùîl÷‘A×q²¯ö8^Öóðà@8¨; Zp¢•\_ÛÜäœ |¾ � )Ž×í™›8~5Ô¾^‹¬g�Úýý+åôÛp€¯ÏS?ÑÊ·ïìíE6{%àÞ*ÁT�0Ú¹Ho_t!—ìKÕ‚v>Ÿ58Kë€ o"­l†@ ¥ÆÍâ!€@]<2]¿í§Îg0Åytˆi6„ Ì®é`þ Æ}8�Cú�¹�aŽªpÌßzSw ��7 ºuâe‡;F•L5¨£“,{æhÈÂ3f¢¢„AçŠïü1“ßútÎCIÊù ÀËÄw~ÔàšµlÛ›z@i³m4»Â …à³Ùóžãäø0Ö¨’õ®_û¥‹¬Ž²ÕÍfçÃÊqt³ôŸÙËÈ£Khh$hä½p¾æ‘ú°™±Ý€4ÓM¶zo% JõŒW6]âE뻎@�„Š!Àkk”Ûž €R ÞÌ/@¬éMd®oBÈ8�ïôž��à(‰ø¹7séÞÝ»iphÐ}3å‘hïfÞ¼~ó¥„m‚sý!]¿¾ºœÆ'\¿|™>|'ê¦?~þ‚,ô¾tëÖLúÛŸ~(OñàíGŽ›,ô»·ï¤þ�!2@ž¤·¼çxÎç%mŒOM¦Ï?ý<-,.¥qdâwwöÒ“ÇOÓm2Úß{裸�Ô!àö­éôìésÀóÆÈJŸ¨ñd ‚ýŽ1•�aàРIUåeô­A& Σ»ØQ "m8öZÁ D»SEc Ï”’ÊI–ã†Úb£]ݳm–ójb^4ÒÏØ¥qÚo¼¾K�ù iZUÀKþ.ð/0~M¿^éh §1$€kU¿œéBŒyŽèôd1—9&ÁXOf˜_²_#C¯BalT°]öCk¸Šu]YCAæÝ 5Ä3:)aPe­râ"ƪªõG#ëÜóÉ/ýà ~w�áâÄ+ˆç *Âñ$دxæ77ˆ.¤ãSÀoŽñþI‚èì¨')CR DæEumk²Ä…¢¬!^öQ¦‘ri¨çA `¬™Ì•Å×e=z¨üO¹Ê=Pî�ïHð¨*¿Ê=Pî�rüݚþ4¸£î­Ös-ÎñÔèP:Â!ÙüðC“Ýt„A™²8fbû©àI5FýÎæzZ[Y ™çj õ>2RÍFïèh‹Ìm¥¤šp*­zuÐ œéüå)6æï²n*x¬ë[$›J@ªV­à»c#ÿT>EAÂ;ÞN_~ñEªÄ1ÑQÔÙP¾ÌlðλÀc°fi»íõß+ Æ3*¯£a/È)#ÚzÃ\ãò`�ŸeþçaÄS¿Îåbº¯á€äj\ÒfÉœ‡‚Ìf�M3Ôm{ mÌkêÝ› o¿€ðå½ð°�:±²Õ¯¹—Sˆ A> 6:f®åõ­ƒ>88DMôÎt²0m£—¦@IDATGÀì8îC‡Y©u‰Îû³‡qkC¢\bˆ7€"ñâˆì³’œ ²ù¨ 4|U� sÉ16SÛþè!kee9d÷ÛXÓÊ®I¸è@—$cvyoO`y72xsH¹o0%:äÈßMãHwלŸ_JÞºŸ”e__]|&#}h }þÙgÜ+`?àúÎöµÐÉ.§>›rô+««é­ûo¥12Þ_¾~ ðÀ@ûÖ_Ûi EÛòjzôä)íï¦áá¡4K$ ô3?yFÖ¥v�õ¹…Åt’‰kJàþÎ�Ûi˜}nanG¿#Mߺ™>úùG¼ÏLM°æÎ‘‰_NcããÓü[‘y?scЬå/…R$ƒ7ŒÉÜü.ŸŸI�“¶w¶clÍpÓ�ÈPŽIADI:l ˜Ä ð€9åºwÎ z1é{=®1ƒ/Ì‹öÄ Ÿ°¶îý1ßÙ¦bï°¤ ¸ä *Êîº/5�%´M¿:æ’7âÝŸ\îËä2Àþ`ù�;€\â~è~*±CÒ‰Û°ëÌ œ2‰'Ô©<·®C³i$ôÑ÷'̱ZÚàº]Z¢Þ=ãe=É©{÷Ó]À›ƒz¬ãFžW Ðûˆ]:~/u!]Fû ÇÅS*öSW\d¬¸þü±Á#÷ÿ(™ €/š�(Gˆ”0A©®sÕ²Èîm¦õå$ô7Ș?d¿$‹’@ÒϲLƒÏ(.i¡Ñ:ÀÞ˜¿òåÛåW¹¾‰ˆùÆ„«À»& ¯R„ÁO'§ÏŒ«Kl&ž•WEˆhÁ~²ºŸÎ^§Ê­åTS¨H{Ü#0rêíjÇÇíŒxÀ¶o[s'äÝlû:Ô8Šéñû÷‰×-€ŠúSÚ¤áÿù�q(íq’U}6KÐnåþ´f ô�%.Tq;?3®¡¬¾eè{ìeÁ~Ÿý ‚+k Ÿ£;>wÉ"{ãp� ŠœU2·jŽ»í‰X 縶�=—J}55d!«X@k˜G¶Û>¦y¡0çøw ë·Hü×�LeÚwI̦[_œfÆsI…9�R…Ï®½_à Äç¸FÉîwõ±©µÍi“HL¸âïfW{Mã*üÊ1^Óvó‹ïsn~ÀÏ)BäÞá^ô—P&Èó7hÈl+ýB›}FJð˜}½y|ÒvåÃ&ÒðX_jÚoàÙ ¹�~Ÿé…|Þ‘V–ÖÒ§þ~ªEaOÒÀåU ;ʦþ^ÁhUº¼³Ã ­11‘kè 5‡0nsÊóÕöPÌ3ÓÛ6\¢¤4zm†ûæ}©Pv`�ëwF™+ï‘»P"½º†®UÃ89�MŒ1pý§ïv‚Ïvähc*µô“„hçT%ÒìôQ5îÖiÀšc$ND}ã˜Ážˆ}Úõ©oèü”ôTÁø¸?Ô�Íî.DˆvO¯¥Ÿ¿XCÉm€D‡îD ƒ3$æmM ó\ŽùWÚ‡ð͸x çWuÃø_;?3Ê)·KüŽf•_å(÷@¹Ê=Pî�r”{ ÜåøÖ{Àà›8¦lÙ¸vát`×âäâpÔܾÿYå¦E,ö+€ÛMlìJ2Q¨%EÍm8YíÖrRúÉÚË:Lî²’;:�0ð5¶uÖÌè¤Í ±mV³€°ìV=4c�ËR¶úuÚƒñ­‘]‹³av¹ˆ`“­Ådç38l|þ݇ï’a~”vaÐñ½�c͹jD$*� se�çÊÌKÿžë–$Ïí‡ZÚ¥¼0e8f‘†ô™>}T�“ž ¿VЂùgÐY‚’Þ¯ì~AJÁÏbARg8EÍn;@'S´6ºŽ”N¡õât 3W¾9þ€Öó´Xߨ¦V]& àÔ7RŸw›úÏíi” è€ig[; v;Î6µ•¹‘[ȳ×ô(im r�ÍÀóCd½oLOh½ €ÖŽR€Á‰�m˜ê4¤gøNÒD;ãi]vÙÜ16ÔAߨ܆½^G0¦=ØÄÖ5t×a]X4�£|ø!€TNV/²Ôrs]Iïñ0Q…Õ6̽i³—e0^~Æó)ÿmp#ê§r|ÌÌVr<x§üw$³‚•¶6ÃwÀ\iÂ.ÀVb§³µÁeÆ;²Á›ë!�™Î\iCºíŒ"Ÿ§»†ƒ[¸ç’€q[A_¿Î·¯Á½˜»´K⃮£o@°ä¼ë¸ð(eÝêX†Œ!Χޡ™Â‚ìdà‚�fb¸.$Qx�Yïç’@µ¤�õ ²cä•_ we{ºé« È % S€´™æÍüÍ@“ÙämHð×@†0;ùiFþë׳) ÜC àÅ Ê pîNÆÔzpÇÇgil &:@ùúÆý–xï¥Î™æHØö#ÝN?I|¸L+kËã#R?zô„qØg>v1~+öÒäøD LÀÇ�@ÞØž� ™Åáѱ´AMô••UäßF!Û p>ø` �C˜˜_X€ð1D�óÑôèµÈwKYè³€ßssód‘? ð1œ6™ÖL¿}ûvúéûï3/6Ó@» ÷ìì\zëÞ�4qH&ü«7©ë7¾ÏïwÔcˆ¶Ðîå•5Ú:Î|È’1ò$=|÷aºÏq/ÞP÷�ìò±É‰Ê·�zN9²/æùÛ;¦[woS«ýE*BºûöÛ)ûñg(LM�üÏC÷rÀWÛî/³ ËçúéŸqÚ ”{ ôQ¿©x¶ØF­nüŸâjR-øN–�ŸÞ_ϦŠf”¯jK6O`È€d>úú>Cã�ò?ÑÎrUF ø¤ÂoÀÆ)ù x¦Úg'Xçûq<´þ’_§ØkGØ}•|¾ïìq“¯µ?%ëoAûÓ­Ã’Xf„«ÎU‰ïfY›–Ö>K9ü�"_õ/•pl¿¾PIÍYÁ±È3eoû 2;þœå°\®²sî"Rëác玱ռ'2sñST)ò~²g�½ .öb{µt§ žmEj¾Ÿ3¯.˜`ã„÷•Mø™ørʉ›ñ,ˆ¯ïÉ.Á}( OßÐÞJ€<‰Õ•¨±Ä}Ù‡úÖ9²®)7ă�rÞPWd~[ë’ÏöþOÓÑærª>ʤþ†¶4úÞo¦¦¹¥ôþ§�‚„*¹}ŸµŽûŸž ŒU_G”›§ÄÓÂÜžÉô7*O-Øö‚¤ž\Л–~Hš$ \¼mמTÍÉý͵¦ßjÌB@Ù/ ’0I¸Þ»`·Ïúø®ú“è‚�uMر ïÕ%$H –ÒÓϯæ~Èçú›_—’ò×ø¼êÒçÖо€ ã1ú‘aμ2ÛŸf3œfuc‹ðÑ�lÁ·—H¥Ÿ 0®Âá#ÚÎ9Oµ_"&B[ôŒÅ¸¯;¾q?t@-sX@×¾ðÚU‚Þž çÚëé7ésHÀh¨£_yfññ xx.Édßíw`}‰>#k˜ªÞ îûRÁ54ûz)-.m¤™[S¨«ôAüíÃw;Çç<ŒgåÔÔ% Ûˆul¤£Õ�´�ÚZ=>ón¶;�?z�n ö1nĘˆ)ègùüÄ£�þ2¦ãsÔ~Ñ/BVÑ…©­Á÷!. !Ú¬|!r“.ÎñÔ™™1‡ë!œñKÜuA¾$lAî/öevV•/!ׯÊs>§÷uã™C]†ø—äe;)Ï<¹¼bN ‰îü3kÿõI,xMÌÁlnlEÞ‘˜SM¿Kº0ñø„ãoüìŠx‡1$X7ioϬ9Àø<7'IÁšì–ÔËvÓÜ’$ï\j­WÈ9Ú­ o†}Þdæ†ëÃq¶=ÕÆkÕkøc@�[þ§Üå(÷@¹Ê=Pî�r”{à[ëìàxaˆq­Ü’õ½5𱓋1\1¤�É¹Æø¿G–÷³§��¹ý‚¿Õþu·"¹6E}²êôæõ›p<]r`Øâd+àtá$-SÛëYoÚºä:G: -ȆëØëø  @XC;x„†Ð†,@�^A΀r‘Í|VGI#_gV�ubr,îp¾LZÂa’¥î5[ýŽ�OpT øOç„6˜q€&ïé(j¸ ú’�mLÒ€�?ëÁÈÛVŽJ&¶çµö–Ai™ãuÙ:™Aeàƒñ›y/Æ/ü/c;ØØü¢Óx ¼·¿‡ì:™é8v«+˩魛33ÈvòT#Á>ÝIVõnzøö[‘ñ»‰ü6�Kã““ÁFŸŸG&›,ƒ&¤ÍßÌÍEæòÀx,7C  9½˜�Å!¬�ìáSJH+›gvÁê*Yꀩݨ«ÈϘý##ÜYÐ8¬]Ô§Ö^l!¸"è|@–“Ìî‘¡ÁpTWq.›é£=@mÇHùnûÙ€IdÑYÆÆìWAÞ=@rºp¾¯JÖu.ÀYeÅNäë™3e¶ÉlÏâ Êì¶ïu²¬õm ÆìñšL~ÙÝ| ¬„€�6ÙöS*”H<¡f³×µNzü€g¨™Á„"c. ØÈ¸˜ %c\§•™�‹ì<税ÚdLkÐ 0ˆ££,˜éß�:ü~é¨Û³Ñ >0)"‹ N'”vàQÞ�ɉ­3LÀƒ‹^1§”ëW’Ýùå9öe|‡ÔkÑ6K¼èêê¢`ÐC°þ©`àá�J—1N�É(î®×Ù¥?”B4‹}ui…kƒL±²´L~�ò6ÝCüÜÁq¯gçÓøD6$ÌWWVbýu�ín0ÆLóŽ™Nõ¾Èðu�OLL¤O>þ�ë‘u>²íKK éá;Éx'‹œ:æãȸ¤ÏŸ§}Àz³å¯g/äw¸î0Ùp­invòDºsk&}üé±nFÉj/’©²B;<ÇôÔ$KôCG𙹙=~hzœnÝ™�òïdZ1çÌBö” ÿË—ÈÎßKãS´ýUzïûï¥wß}'=þòË´ÃÜ~øîƒ`î›%$Ñ Ž}ჟ˜ÆÆ È�½µE&ÎÒ2ŠÌOçMUѱdO¡ãì;çP(Ô8#ãÁ¬ç;Ó…  A ç°óÄ`†kµÈš­ä| @œ–�¬-TνF‚¡t$š˜�c\®´ÿ•öD•(ª ŠäèWƒ]f04ÖgOÍ›¡(í~Ø4[c}md½G Úç¾fvzÁ)³³È÷¹çïnïÐ!±­+ý‹ÿö_¥;ô¡™´1÷ ÚºËæ ¼xï¶K2oEzŸn$e{ͪÈò`§®³5”ö>Ý[ë‰"È;9Ú °\ÀÿŒ#23Ï!|U³–UÄ8fŽd2©§§ƒ=†4 k‹ì5µ¼× �®$~©6f<#€l{ʯrüê{ Ö“Í€yu}Gšñ”̨dÜo¤ü5¶$Çêºvž'G¬í]‚›{<ãVB9ÚxÒ¹•gNwߤ½õ7ì-©£÷NêºIÐCÇÅŒµU~}÷{ ö7Cv÷AÀØßGnváMZáë`we–²¾(©ÒÙDÖ÷dÚ€TésW[Àý_Ûµ”mŽÝÓT‘Z©SªõÛy ©µ© »«ÈgñxFÔ œbïù<¨¬ÉQÎ¥Òv9ÁøkHV•—'€lP-©¸MÜI‘g`ÛûÜÒv¨÷L •2ÍÿÅü>j/ãism!�ìob§Sòƒö»/<û8-¾yn&õ�1®‰çU�Ï2÷àx± x<”_ß@hoèÃXëð§šgÿÏÔ�¹ç©¾ý,5÷¿GvúX:Úý45v¥üñA:B%£ïîCæÏâì~ÚÙXNç—ølìÆ�©W~ý½ÐÖ)Õ²¶Ž´ !~-ï]áSàÐa_©:R²Õ\µ©áÇâwð`OG:™þ¶æð)¾ oâ P† Ÿ™�Ÿ&¥lù&lé¯m#m•xT4ó)`;*�=6î«Âr*iª ©6¤l»>¯òÙúåù"çÀ¿– ÜŒj… §@®ÒÙ‚zfx‡,5?k'*C. gíí8WM#vìAd:‡¯Cå£k•¹¸a÷8ýi}/ûD8JéÄg�Š×>ĽÌÓnüBAu>À~�½Ëç­!}}M†>�ÆLF} [Î>ó7l[mlߨY0:U£«½¦TYçxºÿöx�  ×öõuÏR [+«[�‘ªÓ�ÛSé”÷>]‰nß ‚þšcèeT:‹qäo*ð B†z í0´ÍÚâÞ“€¨¾aUU‰Ø1 ýKžÑ®Cç‡äK×ñÁð3ý^QS„K…9aÿ³YÓ[Øøì­fR³ð°�°!YàëÓzïöIdŠÓ/¥zéú­ô=m—˜g{\ë‚ßú·ú™�”óØÙÙOkø„7§Ç#TC¿é‹0ã¸}Ê=Ë©%k>žQ|þ;%ú˜¶KÎõù#¹A•8¼–{¼ättL¼žs¤�gÉ5uµ™}ß=¤ÁØ~«á‘9Ï5½–¾w¨#@“lkæt<7°qôaèĸwcÆl}:ý„çO_ãŸn¥ññá4:<@’GkZ]Û‰1¶ß†»c½@ >Bî}ƒÜ_üÂÙ�!Cw¥+Ö]¾“ÊŒ—<³. }œ¡¼b›ôß+)Ð ±‡6BIQÃäåÕ•ú�ºðC(ňêðQ\?ÖµoiAu Ÿ>‹" %âY~i¬€}Vß�ÏeˆU!·eÖâ·9o¢ŸX{™|†ÛO*›9¦Æè„˃ÜB’D-ãâÞâ\¾¦ýúu¡ÌȺ²\ƒcã8Å‹¹W¡ecç8íR^ ¿= ‰Y¢E5æ�™ôoC†C†ÿ脽€þ·Ÿ‹Ä¡‚¤iéŠåË=Pî�r”{à»Ð>ÐËŽØwa$Êm(÷@¹¾ÑÀ ‰6Y‹PæL6l5Fø1×ï`ƒ/,‘åÙ×IæóDÚ&ãs”ÌO³©{ÈÙß>Y±‹sÑ8(ZÙf|+ûëUtuŒŠ€ž2‚K“YáHÒ!ÙHV²ïéøÈÜÖ°Wz]žªÙÒÆv•–A�UÏ Kµœ?ãue%ë�ö�±»±±ŽcDÆMK8]‚›‚:eáh㔜RYÖ:42ÚuRq3h—¾Yï’ t½ ,<ª–Ù €@*÷( ,0.p{�cWjNAA�kn"èDGlo*s�±1œ-Ú¼ =AVîô­8j骯?�“qk�j{;Ÿ~ô?@~¯“lÜÅÔ1`°¿‡]dùŽn{ÏËK«‘]Ü ˆ)XhPE¹ìžo­S584RÌgK†ëk¤wR7ÙëžßÌÚ3‚ ãwî„Ãr€Ô(¸ºF?šù]?0@f3ÁäÍ‘w|6 ÒšÙÜOVøñf2t !߈ƒníéfXÄJn’*¡ßXUÀù2û©ynk¦“!Ûa`‡öÚ_ |&dÉ dH|h‡¤¡Ã­¬šrÔ~Yo['þöM¥ë+ŒeŠWHκÐÿȔӇJ¨™ÁÝM<^,Ù°8ž—1o!•f7 $pß#�£k€EGN§ù„{ºfŽeè3öQÓœsd0 è|17˜õÌÇÞëç˜C%év@æ¾àõ5óÖzá‘5‘úvu~*ä˜;ʼëÔg˜_Mdi†›lUYpœÌÌ\atÞ›�o? ÚFK¬¬®EûÌ4ß$›\yw¥Ò•Ü?P7°>ŠDãÒò }|ëôœL’=€™æyMÚÛÙŽR ­d¯Í/Î1ç¶Û¹v²úû€ÕS�ÚÒ2s¬�1êï…x±¾ìó^úQ©ðµõUæ{CA'€múÉHýæU:™žJƒ¬SŽÙf~ Pµ�`¹€µu͇†‘C_à~ÚÉ\¤n65Êç#sÙ=a•¶Ô+Ñ.�í÷©Siû§ÛÌK‚ €ä^KbOÛ÷ÞM7oͤŸôI(_ŒOŽd%`îu|.YÞŒû¾¶~ÖÁƸ庙õ€Ä<�Á‚¥»ÛH:ÞL5D B–žÜ/mpïfbýùc´Ëʯrü*{€¹ÞÙÑ“ÉôùÏÒ»D:F; õU7QŽ`)]ç4`˜¤ØRõdk®¦“�Ycè)»óŠ=�Œ½f³IyþB$3¸Z(~• /ŸûŸÚs"UŒÜ²Ø;ëØ�ÏŸ=FY`žl=J(ïô÷¶E@\¢ ûhkk#ij©(ûrtØ��£ýÞDо–à¶Ï¡š Ál@RxuH°±§sA>ï ¨…ŸK­Sömt!Á=Á·JÀ¶†úÎÕH© Α´«½`ÿ»ÌÀ}!MC^ëíĆkæ×ËVŽMð&€^K›ZxÖ+[»»ò"­.­¢�TdÒg ‚6ýäÞ. ]Ë1>Î�ßNÄrøÏ¾5f¢º�M½�Ù!Ù÷úÇOž¾„LÕ‡ÖËéÆ!ÊóLjäÙR��Qg&6mË冿çÃ×?ñ^�kÔ2WYÊyÄ¡Œ+€16Šý¡L»ñ$ã:–ÜS5 _F‚~”¼c~…5ÎE´í}ÙÎ3¦U|N»½ç!ÈCmnŽ¡‰»cž0ÇBŒ9n\(w–‡(ý4Í-®2×{ i­â9»õ•¢b=ñ„–ð¿V^Ì¥Ú£–ôI3¥Ç!*ã{÷òÈm¢¼I-`´÷ÞI¢I$TÐ6³¼k”Q§MW—%‰>»m5�"ÜÈdiþ`z$‡p´þß×ûp” ˆžbÝÄü1F…q‰X¢rF?‰q°\`Uå¾d âx’ýUé³6Ì~¨Cd‡†#ÆØ¾®…ìÑŽD}ýï­aN¹Æ3÷Ç×Õøx—Ì=×§ké5eËþ÷û×|–ëA0®âM©"SÅ—Ä€Ÿüå#æ­3Š9L;ÁÙSU½µç{ˆù•äî�g9¯X(¶R{ë®…öù{ùUî�r”{ Üß�ˆMú»Ñ”r+Ê=Pî�r|c= ]zÉ”Uι˜Þ¼y‘ dɶuõE`ë‰Ç3Ø®;dœ“©{…sŒ~ (g°K¹¦52)u5�}é éÜb ÇѺœ2« €uÖp“q–+ ð¾’T×8IY@T�;³ddÀ ÜTãèVÆ«@¦¡Î10R|/�âJ"-…³aýaëuï’µÝFf© æ“#Œy� š2cÔiÒ™ :mÕAѸâšY€+�ß;'S&®Î«`SÂA=ç»ØÊc)Sf`ò€`a ¯µßts§³û‘øZERò:™²c‘4È|ëÞ=þ½�Š´£&½÷ÞCßKÀÿm¤á&^´DÍ`ïw =Ë5—WV©5Ùàå&µ¢ÏGgnˆ%Pdvqg¯÷¾“r´ihp˜æ9z¥ÛÛƒ `ÍdTHë[¯CŠè P¢\ç–òd8©­XŽé¨�ݰ/˜»Žôz}lÝëÀ)35oNOEÛmiÄaÎà”`»$aF´rÒÖE—|`ðÇZè@› ˆnó™Cú¨ WgQ7H 8ñÊÆ;”ûóo9æaÀ©»òÜá€sœÙâYkÙÆ j·˜q0-8lÿ褞ÈKøÐ±sèJð�µÈvLæL[{3Î!ÇXï—öˆ1å±®ëÖÅçq/¿rD}_` ´Afçq‘ ²,tåÕu\#󀫣Ωã‹{ ȇ¬4²s‚Ó:� œD9ëAàßzuJÀ©¤`mwE†4gµ÷¸?kS» .nÊHWrß IÐ] U‰÷££îª €¸pùuŒ¯õÒ%£±îxD‡MkBÓïýLÚõÕ¥øÛøèòÆm;�@àèæ¸€ç,óDv?sœŒ¹°Â¾100Äü$(ñe\»¯ÂÆf`ø|šžœŠ±”îÜïîç¸'¡0Æ:Y]]ä^bÍL¤±Ñ!@èEj¤÷¤ñéÉôâésæízŒíâ^”ŸØž¢–Ý«7³Ô ïŸN?{ÿg€Ó-@îÚ1?ËßzºÒäÔríO ä·¦áq2â>ÚI�Ÿ>£ÄÃÈšùäejþA3’타Ï1d‘çn¾zù•ˆ›çS€÷¯CIá2íÊæ¾zõ2}ÿ?`¤¯ÒgŸ™Þ}ï{¢òñÇi9ü´É ˆíxðÎÛé·û·¸$à©ß8*±†ñ]„lÐã¾Å˜<"ë}“5s’�Ùàô ñˆÈ81{Á½É¬pçj±X×Í(Q¸‡:~VÌtD�>öà,„%¶ÝXƒ¶CÕ °f™µ±¾Üg��%7$) ´[c‘!™=ì 2®¢$¢eéÝÿ/˜£ìãÈè¿xö’=›ûº1šfPhlhF­âÕî:ïï³öl 4}[„TcÖ’µø"`Iû]ãc\[Îã _Å{f(�ýÄgœ×y‚Æ{;ì…(TäÝ«¿Z¿ÖJdIÐ.–=÷pI…!œ6”A �BÐñ™bÐöèø�yY›ÎÞž°vÞ};Ý¿}7²i àÕ‘ÑK( "ÏúÂýÁq ¦û�R~•{àWÖ®:m”Jl§É[Ò‡³žþüOþ0ý³ÿNê¿�òdbåÎ=‘Æn˜8å¹}]8Kýï¦óÃyžqó¬‚ÿÔku ,öõ ;0~-ÿóê-�¯íFŠ}Œ=ˆŒÎClïµÕTO§YžEµH·NŒöbAv‚¤�r|FMUl€"ûU„ØìáN€¡cƒåØÇÊëjÿŽ tó÷„m´‹=ƒýö ×! «VÛ<^€1±?³ÿ²§%"’U¨Ú »+’îe�ûØ«%­bÑäkXÍìÓØPH'·w@ÎÃVq>hinUú– Gˆˆ ”31c5‹ý r“öõöÞVúòã d‘iF&!þ�Ç3ʬ4mCí�è#®VžÇ1J¿’´w/Ï�Óæì ÀÖ Æe©ÑQ”-°/‹k(ë ¢…ORŸ©@aÂ+6z]5Ê3'€‹[O êpüä½ð÷xrÆþã“ïߕ׷Ü'1¶“$ÉrìúG¥ šÝ«ý.̉²~�™¥q+ó¾Y¢rüå=lú³Ô ñµ‰ñq�_c÷ܾ1 Ar-@ j\¬%vK@Ïb+ílQo��‰ñ¦ ío<ÆEÖÑJI,üèFlNɶecï�=�2S¬ÙÆ_5ü ö sJ9äx^É~W‰L 5ö”Õ®+ëyuYØö»žqñö– ­¯}B?(«®}Å!(§(‘'½z©r}œ#ìqÛ/Øm_…‚Çš©¬ì|%öm�=ÙÛÜ/êÙìØÂ¸MJþ° ¶WâŸ}MÂÖ™lÚ£-œÇ÷¾$&ÐÎýwc“«Ìt)µ�¿ g$1;^áãùhíè Ú+hn[|O_Õ¾ œñViê‚›S­DD5ó\_‘Ñ¥_ùDÁmý¶·5Á{c(*Ò˜í]Gÿ^ñl(’^a»jŸ×ž ÜVCÔÆJÅ(Í)IÛ°iv\ˆ»wªFgû½ömðYla•ü$¡¾ž_ ÂXK+Rúýøá{gø|›i—M+þÛ}|”:úÜ{¦q[ðœúÎoc^[0WEmã85 þÕÏÚ"ÙÂîn¼”ötVR^y~Ááø}zÁ8xަj�~%Rx"3Û½¦¾±O ÇÞçbd^KpRÑ¿úë¾ôkì)ã0ú1Gû'ø{”4ëu´âž÷)$éVJÀ©Ôh�ôÿàq‘½ôxéãô;ßIÖAcß(³e z|uÇ_þÑc@†zq’«*iÇþ˜eª¬ NßÔ°†¯Í¶ q Œo%Ïösæ8ä^_ž‹Ûö™YìW{MÛ�˜D Ä€wSįS=�“ðüåîX÷’ôåø?ö�zb\9žã®MU.¶ˆ™©J$iڞѓØcß` @x /9N5IoÆLºy®ÿì'/ÒöìvêiM]ìv«}ÞÂÚ¨Gù€�„: ×q¾™G£oõA\&Ž�ßÖ )…tšc�s©zì…ŠJIÞ�#x~”t ü*÷@¹Ê=Pî�r”{ ÜåøÖ{@SÝ—Ž¥õ�ÿìßÿyÈÚ¶;ÁÁ<Ô”¥»0K&7ÎÅ5ŽÏòÂ|ó:ç8‚J-*׬b¼Ù¤Ë‚‘:g:V50\‹ÅãV#Zã¼ãZHF‡¯V§‡c««�Ïæïá8GÖ¬È @%œoœg�P3•ÇÊb+É%ØY‹áo�Ni)�Wë±ë+?­3–Åñïá8ûyÎmÝ3¾…³(;X§Où´<™ŠQ RðÕìqjV¶N¹«3vaM(Lö¦µ¡uUkjŽÓƒû÷SGW;±ÔŒ$ºýÎýÒ´¼º`¦õË÷Ò�8÷€S‡ÄìaAÌþ¡d8·È¶Þ‹k p¾ž›9ëÁáadŲ´7�9ApI fûZë{eÕd¼eËÏ/.Åýy=e˜­w­\¹Ž› g{{g)«§s—L7}¥“g†²ûƒÜS©Î=ÙÜd דå´�£eÍ8³ÊÏè§m±Ž¹ÒëÇëHÝ�·à˜ Š“849í!r�fI›ù°ÆµeŒ«:`¦¸ ÷ lvIeIÍŒ³æ›d�Ú¥ó|À'�ê¡ym³Î,޹¦ÔÜ^Œ³µÅ×ÌÊp3Ã`@#×V�À©fPÂÚòû´Ñ9h¦¼`¢×”Ä@¬%‚ ÉZÉdì2÷ H”ñdÿÒîZæ°AwÛ-AÄ ·ëL°ÑÌà ^ƒ< ‚èŒ*kègN¸%{{™dÌÏS~ ¶OdáÛV3¹ëX{g®\S县ó]p½�óä�µÏÔ¶…jƒ5æ=‡™%[� Tg0“¨*@Ö,×å­eü Œ//ÎÌÞgì‡`Öx§_ ®«ðòõëXW’æçÒàeÛtsº-2xûÈv"Ãýñ“gAžèƒÐá|Úg.�M/^½œ!»|8-®¬’­¾I)€a‚³-HÍ.¥Îo%Õ^¼x 8?à�úÅÖvZ[^�²³æ_ÏFÖK7õÓ_<}šÖ›ìÉÜn„,"°ïî�4sóFzöò}Wgný|'-²îß»çÃ9¾ûNºÃ±Ÿ# ¿Áœ†ô²±CøÖí;€×w ½ŽÀþÀ¹c·ÇüŸ‚äÒ<{æ{µéÎ[÷Ò§ý359 ð? ý;ïÜO¸Ÿ/¾ø’þYO“dÊ,}©à-ÞŸæ÷/ÛOÉ~¸E;$²lB>˜¹s#ýàßãüÏØ6®è·þ¨3÷%uÛ;ZFXûCi~n.½Äï‚´ÀÜÞGÀ}³ƒŸ/Xë• ĵ³ö›•É#XÃÞìþçþ{Íúdzò»Y"¥ ‡sø U�cºXƒhå¾  ºçrd<±..ØãÐ=o À½dµîçË ËéÁû© ¥�S®INf€»Þ¬Ý.QÄ€Î)ó³€b ×°m6CÝ{p}ùò:>$¨¦É„ã%=#!xa0‰ÏI¤l´f-Ï +챂=ºpqkˆª$rŠÌµª+ ³ÆN؆§§ÒïýÁ¿„HÒËóN9TR,GºWô‰m÷ÅR‰ “ßc�Ç»åÊ=ð«êƒŸd8±Ï¾÷£ßIüU!}þÑOÒ[((t  0Âóïj�I � ‘­‚gC-ò®ÇEyÎ^^ÜfíÔP›XpÁ \°î_U“ËçýÏê¶±°Ùü3!žÇ”BÚÞ\£ÜÊl:ÜYÇ68‚°YË3š¬É.€K>ÓIIÒ^ìרygc� ¯�sÆ&CrÙàúÅê9€µ¨¨ØäPöOÁî"ÇÔS¯ôš½Î,Ò+~g±Ça§“ zž·¬’ŠMØDÌ'òPù óäŠ,¿(mƨ¬k¶ˆ%g:ð'òÙý´±ò& �ߘäZÔæ>ŠØö–ô Õ'€í*ëàv�ålÉ™£Ãýôúчi‚ïààhg®ws�d›²Ûv÷û2ˆþŸ5ÕþÁ…ŸèR݈ÕÛ;‘ö>y ˜Nígä«[šûÜ 6 6éÍQF�À®�ßM§(å³Ç”ØKC7~3u�1V€•LRg �Ìòë«øª3¢WÅ3Ø/Å?ÎQ†Ò_nÏ´C”ÞŠuZÄ&V1ªb„5¶;¹ï›ƒ­ál#ƒÎõ÷(ßU‰Š–c#ñ •¸ƒq!×:o1çCæ�ª)Úó>WT…ÒöîÉìf•Û|O[>Çu¥�¨P¤Í’ÇÏ…í#NÉ\Ã/ç=k¯×óܳ†·Ï‚*ì|ý+ýyÇAÿ¦ ŒïaºÓ ×Ldõ—ÎDÓ÷Œ‰>…~nçm¢²¬�/6¿L÷ðíŒeñIj{}”›Óixd¿l8Ý9=L5—Gi‘¬ôLj$‰Œ>åÁóÁÏ |ãy°Nm¿$äÒz±Œ½ÙÙYí4é3ß¹¡ÊÝñáYÜ·ªt®ÿZ:Üq°�.aÂUU™ÍÏìàjÆ·óPßR\µ�š®¯œƒÜ¯Þ }|YÄ>d *+”°¯IÓƒcéñŸ¤Jæ³bÈ~؉ÆÂ$e—HÌ?ÚkÌE@ÝóÕrÚnÊÚ êôZ™YaN pCÿIÊ>!îSÁZ˘xøÖ#ÝÞL\®ŽØMsG'6j3{�D™$t|~\ÑFKCTևнXÐé„ò«Üå(÷@¹Ê=Pî�r”{àÛí� j eÀ3wD†ó—HW­Sß§I° çä€TÉF³K«††~÷pxÂÐnÌÄhÖh—-o–xlÒ3œT¯c=2ÝX�d E/ lü e%£Èî ÆluÖüAf-ŸôPFJ6ºu¤eÏ øä *éõ¤pxø綔ƒt:$KT‰53ÃuLwwM”×¢60í‘E]‡CÑ@Ày ®+vtl˜šÐ]iem�@s@ÞÁ ˜×Èf*YÝOMfïcÐj„>i4Þ?8 g†¿-%V×VÉÔ>J“ã[¿wã<ôr­ Ô@ã!ä§•g^!£ÖìønÀà˜øËdÕq�@Áå•å`p�LLà\×È h‰šÕÖ?!ˆ1:Œ<&K¥´ÍÂVÖ}gw7Æe€ ¤ Žø2 ¸€ÑÿÍÞ›ýFšfé}/ƒŒ Áà¾ï{.ÕUÕÕÕ=íÖX£È0`@7†. _ùÒ7öàÿÇ€/|a@èB�m’ÝU]•™d&÷} nÁà$ƒúýNtŽeš™wmêˆî¬d2"¾ïýÞõœó<ç9Ö:7€!à5Y íïWVpX@k‚€Wc´ ~7ç^p†šòÝ€N×Ô4>M33³ô_.�Q3] ÊÌNK�'ÁUAðKˆŽW7^‰~ÐñW²Ëë_‘É4ˆã%°{ÃõœE®o¦µÕEÆB¯„C§ìt+ÒŸ~çâ¼Ì½z#0{ ûÝï´ÓG$Rô“å,˜®l_½¦s]ŠOO^IBcå2Y€y®ˆ6 #;Þ:ëM´Ñ@ˆßXÓ¡��fFéx›- aÂìXÕ ê¿ìøzÖx“Lpþ(‹V¯÷Gm1úÉàŽdA:úÎmç¹ý™ô¡Á_’N|ûÒ`ø°Í�Òq}8­m8ÌÊx+Å-Éãˆ9K#‘äïOÙÔ §Ï$Ltátû^�€EãÀ-c �0æfz]š„è„—ÈqDÀ3…®¯q2Ëû™;ëëê”ßB¶ýŒì‹®©‚*®€kæ³õ¢¿úr²ÌG×ÚuÕìU:˜››%£|32|‡ÆÆÒÊÚZŒ×ÂâË4==Y #f¦g`ù5\•{µ&ÝëïÅ€ûD¨ Œòý¹ù9Ê\¥�Í�4ç{¬¿µÕµ(ß Œú¿þWÿ:˜…€^B¦îÃû÷é—¿úUúü äÕß¾MëÅÍX¿*'lnn§Ÿ½zuÓW߯ĜyMFù׿PgNM‘muYÁ xK L1ï?¼ÿð¿Ov=räŒë›·K鳟ÿ<} 0ÿ[ÀpÙôÓ33�KîÈDÿ6}NFøeÚa¦Ì‹O^§"Äk»¿xõ*Í¿|Š­íûiznžù›ç~;Ôo•þÑ?þsj®¿¥ÿö&ÓŸ³—I2�òÏÓæ�`fÿ@š`\ß½}“Nê'è“kÊýk›9nÿ‘<¢ˆŠ"ÝìQêüc–‚Á'³;Ìù2x"aEäc<ȬπŽ;Þ3Û@ÙÝ=FÖX{Ë.÷Tmbln’3ä‘`&®÷P³ž"“�]6±³ÎÜÝÿÙéS™µ¥Ì«™M÷U³s”Up'GƉŠk²àè{ëø‘AO°£€”¡9‚;÷Ž={ „ÞÜØ@å1y0îâZo'°{M6×ûlY’=ÍŠ (ñ<¿ùõ¯Ù÷F!›œÀ¼……’†å=7×X•À•k×?žIǬgÙx5zà»ìW�³Ì©ÖÙ=˜þü¿ü¯ÓÆÒWìu�zò·é‹_ÿ& `—Ü]+iÚËùDàû¡„íR¦>&�VΤ‡‡ gJòÝuðE°¡ñúqõ€ãüQêúŽ=éyŸ³s}å©ç”óÉDÙ›)ˆ^×A¢C!ÇÀ6C©‚†gî=FÎ4¶âË×_`G?¦¯¿ú?S…=Tõ£Ê%ô@66äj˜·ð݇Dz¾¨ŸŠ ÃǰS°á ¨?°JT5‹Ô}×=ÏŒ7�øØK rkÙ XðÿØŸ!jïóËÚ,“ÑLFÙéÉaú°ô[ì3$Ù»û˜‹wØ(ƒØ’œëسȹ ¤ƒ´qïGΦ~È�C|î–>(a«�¸»’¶×—Ò0Aÿ©ilPGÊA¨µ55öûxÑÞÆ¬®wÅã¿úoMÔª"‹üæò(­/ÿ_œÉ�X!ox·´Qwä@>›9]í®1eNx|8ÎÌZ ŠÌÊ#óÒ h¼þ?=àäuÂÒÏ‚_þ©Ô NëÅ›ú T|“ òŒ‹É>œv›þJû¼\F͡ЉYÓEH3Íøûø¸ÚO*£E0÷<Àצb<+H;ÌŒÝvJ1h�“…{÷n;É3)uÞ<×::.ñ7™º(Zeè:‘~öû³½”¡wCˆÌ`€Ôø„m3Þ¤Ü[ØkÌÌ�ù…ì{;$Û™¹9Hûø+ªRG ¿“¼üľ€mªT7·á\ãšÌ¥l¬ýLÄZ ԚƷ ß­–e�iG�ªþ–¾Ømå"|aËV°a¦¦²“íKú]…¡Ú3™äÜCre;UisŸ¿¥Æº{`ûuIï½£‹ô¨nÖ¯ Læ… hÆ^Éë6q]ÏêÈ~e§Ô§Ô÷ðÖ6¶ñ`¡C-˜NnØÔŒ �0Ãý[øŽ=WÛ[ŸR"vØÎü­ ,!V[Ùñ“lßD»UrTÖßÔ�¶YHóOOþìóÔ¥ý�‚òîäEÊäð=Ìè/r–XbC2Cw‘¹ÇZÿ«ß̦³ýé¼RMÿfý*è�VËŒiŸçñò|OÒ€!š˜Ó´¥�leÛ©mÏðrÈ‹B©Ûþ–A¶?@g¥þ!ër/ÇÚïK¤ÐÏæëÌcüÞ¯‘¡,àmŸçUÝ!rGMz3ò}yŽ ŠûrNPÏ€8OãÚüÞŸý ï%™=~à= È’ÏÞ¼}Ov4%¦ð5ŠÏô/s\¢®$ø DˆHçÍ(ö3®YÖÇ9sƒx×ÌCy6nÀ½ŸPV¸¥¾·Dç‚° ª1J|÷|�5NŸ›a¶·1ƒ6H$ƒ�¬dl#æí4aö}•µÆ”d,:øb ¤}É ôzô—eµ$´ò¾ÿˆßdŸ‡|»²ð9ˆ6’MìÉ Í<_�Ø�5Ö Äw[è'ïmÓ´kÿÓÌs•(�ÓÖ¢¯û\ª˜ù¬–q‰LxîmÜ„4|öŸz©´W�ºG8>wÜËÏ»N:S¥ñjô@£=Ðè�F4z Ñ�øa{ œš€ë€qOP–ÌâÀ²3˜ÝÐÑ©y]ÐÖ:NÀÁˆVœËnêB)E݆saݧ.õK€`˜"Ÿ3;TÏq©m³�•}–Íû€ãµiqˆ;pòûúBúüèè4œ‹.dœ¬ÃtI¦ öt8~J²iP `™õ=Dv¬ÙîÇÔhÞÙÞŽŒl�ce‹+»×©\ºÌäžg€#f5O��<�ãLfÒ. ×`Oo0‡•.°�’©=ð؉C|zФ8€Ißâ¢{‚Ñ/ìîqѺ:ºµ‘iˆ2SµÓ¿HÁlk³‚•[—õ¿³»õÂfgçq ª€^Û!•n=ê2ìkûbÐq`h mò,’&äÌ‚¶¾x‘ç4kÈlW3àgòÌ53\çÔÔÖG'H� çp^·÷ö|´¼ºÈ—Ù–@IDAT¾&Ëû`‰zX84§§§Â·ô$¯³CmBœ2€à�ÖV×á>,ìèŒlgÁü �¿g`uÕ÷èAqò+˜þö7‰qøÀ¾Ã  �¦?ü÷Y v6ÞÝ0sÌïEyÀó{:?§iÀ1‘i>Á÷¬Ózɽ�›f�+•¯cf}v�S3)l¿ò…Ö€×ñR¾ú‚Ìí 2 :‹]<+û€º²³íS%Át]£&#ýð1ƒIùÁ¨“Œã–§½Œ-ÈÏë¸*Ŧ“-«=J èpó¼:†uç› Ïmö¯±cAEã/fÜÃôW]ÁL ïkp ���6œðf‚@‘õÅzÊÓ¾[Þ»#P¦¬Y€Á'³z[¨«fM@::>g‰kŸwb{7kÆ€–°à½ øXËþ‚Ç%Lo3Õ» oÔ�IÆ�yøau=È1=¬ñ¶Ã“Ñe“CÜØa.•o| ˆ°GFô íó¾òÂ1Á·1˜÷“S³éÝÒRæú�Rì óÿŒ€B/q²Äwö¿k2ÍÇÉî>$;{“úésÞÓOë§‘± æøE¬Ÿ²Õ�¥ßÚÞ‹ ûÔÜ\zón)OȪB œ,]ðjq!I&y¿J}v®ÑÏ÷ÙGüÞj³V6È€¶¦û‹×/"‹[é�~×ßúÊ:s¡32Ïß/¿OëÛ»!]_&X¸¾¾�^“M1»°À5�Dfx/U –—WâÚfÎoóFÆÆ·÷Ü¿„_¸˜Šv8—Gyî;æ÷ß{ùêïÍó3µˆ 4ޱÖ,Þ“Ñ?AÆþkÀò¥%væÅ"}d&È7ß.¥™$Ð_¿Žìûí-2ð‘ãü’‹õÝ­/713ƒn"�5ÝçÓ—öKö©­Ä�@xPQ`•ç5Óop{ÂÅòûé„~[€è£tûÆúFì§�„ü·JWåëȨü. º³ÿ1㣫› 륉eh #‚`¬ ƒž‚û‡Ì�<5ñŒxñ8VjGò2? ü™ƒ2D�õõDPT‰yS--dŽ“â`YƒfR~$ŸHª)xް¦rÌsI'’€”%Œ ]¬²8*¨80ŽAŠ1*Æ«@@Ï`›ADeOhO�,€dGØœ¿_EŒŸ±ÚÂw¬å¿W¡�"êõlrýHMPÏæ°¥‘ó–˜í=%Ñ!®»ÑÆV_ÀÔïäU,€ôÈwOô3|5®aB„`wÂiÏû¶ßmáwúÿ¡®f¿Ñç* t3&[‡—i¢ŸDƒìÿ®¦47Õ�¦Þž…*I/þ€ÏhœÁìf& }ʸ‘áߎoþôÌ5™ÛY:©ªz Ÿ ²…Ÿ³Ãìaæ%Ó‘6™q^bo÷¯kO¹Flk”tbü[ Îêó[:ÌD ûTâ¬>¿pdý³KyÙ¾�׈ìsþ}Ìï]Wìï ·óqçž~¸××'¶Î#�nìÅù’e ¨jØ–ïbn ]><{bõÕ½Û‹xžgÆ_© a±®ù®ßó U9!æ8s7ÇlGà™1k–LÁ³© a?Öž­ƒ›Ä÷üþŒ%Ú! ›½ÎÀSÒGd•›3Æ�álÎà ˜0aI–6|3ŽsÚh ‚½%í‡ýí ú,…/TÄ€ ÃQE�{3|_Õééu]^ˆî�˜ŒJm Ûâ • pTMà1ƒ\ Ó��·¨�G=F€öô÷’œ£‡]s_à¹3Õíal££ßx5z Ñ�hô@£=ðíí0 ‡Æ«ÑÿIôsY§£€1~K náÅ«¨áû/þ—ÿ±I[Ú½êÄ�| ÀÛŽ”ÛFt‰`–õsƒÅÎÚ�-m6³Ž“@Þà°À§€¢N¦ŒmåÜóþ:Gá„eÈ$Q’±-�‚êd*Ó.Hó€e/ªS7 ÈÔ�ê÷yF¿ü’ëºâ •éÌŽïyM¶3ÑñÉIdaÿæÏ¾\–øÑÁµ"'ÈRí�:ËG€Ô¢/_,ðþ-ÔQ*’É<µ0íXtl·†¹²Ífª� ¦‰é:øw 7Ü 0i¦ù5@ò,²Ófž ŠYókvf:‚›«[Qº`Q`ÿY÷~ÀÌn€öM§s2×' „ËêßçZÍ™\ ȬñúgÍ .EA�^€Ôlóؼ=d%Gv²¼½‡Žõ)€xžç8µ®»„ÈÖÂÞçY•z_œ_àwƒL^Á|ëC„ÑÉé¥eßqÍ$ßÍpµ6�ãaíiƒŸ‡d;¹!F9Žœ fзÑ&keë”J¾°º }ȼãtVnq¨™w%Ê|ï‚ç¸5£]ðKF»Yí§d±š¥ßC¶´óL•6% ï9îCý½1?trŽunµuÈž þÈ™�h‚ùÏ|ÓQÌÖé¶½ÎÁA¥ñ”ݧ#y 8xe榶YÈ^SG[×13Ž!:nv1—ˆg ÀÎÏÐ?–A�X`M=ûÔ)i3>o­ønSC+×HIgqT­gªç,BÙveå+ô!CÃZɧ£ÇúÑÁ¼bÇSòвôGôwHÝs�œuéÐÍö÷:frëf,šÉr.SR_§9î�ç;>> ù‚`5÷ž!ëY0‡ hU †û¥÷«Þ\“¾WRøèäBE_êc­míìA`¨¤‘‰ÉÈŒ6sºpx�l±¥•µ PLpÍÓS‚Ýôbq�žŒõ�CH5ý×/Òo¿ú2ÈA¬×aÚ½�,»m0sÞõÒ1¢ÒFÐÜv½$_@æý›7ïØ·riÞ5Mÿ.2ÿü³OC.þ=÷ngîÌ/ÌG_mAZùâ知Y¾÷-ß3 6ÉúÝX_G�a-}òúU%2±±¾™1fô½{·Döü:™æH­CîXY]çš…È _z÷>-¯l¦_}ùyÞ¼yrð¯_/òœ{iPÛ6z]eä p›5¸»½Ë½'ÒÏÉT_áÞëdÅOÑGfhl’Éÿ<�Ò8ïÛ—Ëô½2ó¯öIÔ`»´ÏÑO|ûö-}Ù2ñ{ÜÓ:ñÊ ¾¤½§€ÆÔ¹#[þS.¶�Ð=�¾Q.g‹Ì% û[c¯Ý¢½[»dÁ¿~™Æ¸ÆúêJZ“”Àþ9 AÅ÷ÛßÏþÓÞÚ r“ÞÓ†62¼­(Èc¶Ú#k ÏÚ�ì¢,¯AnË|¸‡»OÔÈÜhnqM)-löQ=ˆ¨JH3ÁX~Íš!(l† Ë�•Fp¥.‘h�Ä'7Ü€q!€êõXÿ ¾E ˜÷|Yo½Äú¨@øª�)uAýsïž £ÔÒÚÛߥoߥ֎z ®ˆŒýäÄT¨®l£Àð‹ôŸ#CHÝOÎHŽD–8;® l¼=ð÷€³,‚½Ì9~J}#3AºØû-™Ê_sŽvÇÜ?áü•8Ö×aVñ5ç+j ·fÉ=ÚFVùÓXkN[ϬÆìýŽî?¸¼û¿ÿwßÐrO¬`§�ž¦½J£ìn@2¼ %™‘OÉŸ±m`®”ÏÓ=îb× » Áp�=�K±µÌøÒ&‰éÁ=Ý/¯‘Võ~]2sH»_]’‰~pŒ3Xòž¶áûÔ78ÌÏ-¨ÔC°AÁ›D’a=CÎ̸®­%’ía�Y‡–ý›=7skÍóΖiì±6ì¿Cì�™ôŠç8±�Yrf˜f–�ŒÍ`_�V�•u q´½ÝçÏpžtàWô`14ÚÃM]éë1ƒ�,¿ç|€„ÅŸàË)ø·Í¿˜¡| J�p´½Ù°]ü™µ)èùqov-eA«ô[\Cw�ë$hÈé"ÏQWkËbOá?iãœ@6­¦æð­YláÕ3<뀩6RÿY°íhg¨`Ÿ° s %/'ð,IQÁli 5Àê|Õ~|8³Ö}ŸwðѬE]·×¯õ{@f¹V@Ík>ò¹ À¢öó# ÿÍù!~Ïß5>ã3çš�û~ôgÁ@Á?Àêi½ú#�w-ÉÞ°4Ãntï µ . �)HúÌÞYìê£ï:Q®’d¨ë÷èO¯©�Ú†OÕBÜᦂz¿«=Óÿ\‹!¦ óé°dÍs@bÆJ?Q0×F}ü+úGEªG@¿Vö`Ç\À\ÿ÷�5¡”É R“аäÇÀµå9à9,˜û„Ÿhf{v´²ÖH l_÷bÕF|™ÎNË1›7ö|ÈT�óU!èèªÜëÏ€J ¤Sç¡Ïª´¿$Aum³ÐŸ™kƼ¿}ï³<Ó¿ª öàWö[Ó@¡eåjUJzAÉúÙ<mH2ÅbO$ðÕØsõÝ[ùóT»`®ÏáÞÚØ‚¹ª¬)%ïܶßì�V|‡G¥¯8ü�sÔýÏúá’V]ªœ„�Í´ä�=3ø9‘mÍ`…Š>ƒ¿£òB$bÆJ6 [ǹá3Û!ÜQÕËCåhŸý @¯ÿ^"ÖaÿJæVø8-”’+ 7�ßí÷"żmåŒ eHïí¹ºc|©ö‘ €eË@ddlͬî郦¢>“2ìúFfз37Ÿ!xÞ7±.k<¿>¿ç·s«ƒyì™nòÄ]K�#a ¤>Ç:�dÒ†lÛÝŸ%»9ÏUzf¹wxEã!ÍÏ%b(”xÀ=*« ™vÆÑÑ å>)©Ã~ Iu¤ØUí—æl�$sOÙ/“&³[ü*o|_’t|Ÿ鋵 гŸÜ0o˜-4ƒk 5Ï¢åÓܘW;ýÑDy­ ÏÚУ[ÿiô@£=Ðè�Fü´z@CË?uün`i¼5^�øi÷ŽóXã8@ÓÞ¡ôçÿä/ÓíÅIZùæÿNs£Ô³}TÎ6yå)]à�L’J8¡7Ÿ2˜[ø®,jÞ­¬ÈŠðÆ—圞QpbÌÔY Ùtîw�t\ö@?™ÓdòéTpÌ$7›Yà\‡�"²ÃZÍ·n¶µ²^.Ìáà´„¤³Aå×{gû" ùø¤ÀñÄÄŽÇ#ÀÜ~°’g swvv’®Lö—dÆ(‡-(?B�ós˜ø»€wfN(ò?<8I“d‡ íìï¨8 àÏLè=$Ý­‘½8?Ãõ;¨q¾“®0)ÛŽ÷�6\Š ''G¸W¾ɯÀÇ“³ÓÈö�¶Öš€W&îÄÄ®ò3R`'‘ ÝÏgÍ7[ßL_I ‡«ôGiWöõ ™ÛfïH Yw_3�ñExÒIîå::>2¶G4 rî’¹ÚŽ“âóWp¼Ìï¬lÅé='˜¢£Ö ý„cff¼N—rm:Ifìön°=/#ÕÉ͆Q«PŽ�KÈ›E¿¹Q"ˆ–§�ç™ÌŠî!k^'éŠv¼°-÷–ʦ+Q^ ÖZÈ‘Ò&Ÿ7²$â³m_p?4r瓵æ%pæW…ݯ ˘6»?2ɹŽD3ñ;udo 8øžÁ©@~=ÕL&úVÀ>æ!c!È}OVB… Õ%í° „Qk†3ÏÏ t?e§ÓœjÖ˜QÝCúIð�/†ƒ.iÄë›lð@ÇøŽ ºŽodcðý[2fÍÀ7âs™¡T¡Ùï7áô¿¥Êdè¶26ft™QmÆX¯ê¼wÍóÚTåùwö�£ÔÀ `¸Î²êÖ×î¸-16EŠ€‰fè>1_TtؼÕñ ×±éëíb¼Ó»Ôe=§4ÀªsÔìrëÍ[§{ ØÒ–-�¸qˆ¤üðÏú(90š6¶Y;Þ§‹½žY|Ac˜v¥a®¡Tíóì’ › ~_á9× ?�Ä3Í{ïÞ,Qó|‹=a> »þ•®ƒøòîýZì£<�u½w¹¾ã2;7˳n¥Õµ�PŒ0»ø¹ö^Ô4®WÉ7PZPARÆ?›­m-¼o¿y`ø+î·0;5ܕ΃à³�tù*€û4Ò÷ÓÓÓìWGÌÕYëÓ¶›ùmþ$Yò[ôµ{â mÙ¦-Æ_pMåãÑÍF xmÖÐû÷ïÓ-Ï`mùlËQzÿnà†�E9…¥å¡P¡JÅ&J*o 3.Î׬U%öÍÎÞ#èi)ƒIÚWeþœ@’€óů¾Lìk¥jÚ÷õ¥ö/˸ÆÍdyõÉëØ{Tz�°á¸K2‘Hä^Þú³Ô€ò›ªX÷¶S²óMI÷{ö‹ž/ÕÚ©ã»�®X?±$=`<µöû%¡³”ã÷çŒ÷{\–àk?<Beˆ®Q3,Á  h™}À€[Hf²žëRÕUÔ@�—'(ÓÁ™ò@9’=&®Ç_ w÷4kEJèêëJ/_nØg—™‹�³S‚M|§ ÒÖò2{Ç]úÍ_þàÁ\ÔÓT1ÅûFt�Þx5zàûêƒÉ“­Æ:È<>¶´¤ë3”8·T9=¡¤ÌgIà Ápè1éꬒÆ^õ�õÐÊ5<¿~Нzð›–óî£?…—[Et9�¦h¤`ÏSáÃ4Ú¡—¥ƒt[.¥™™yHiŒ]kÍ›±  ³�RBÞéoO£aWh:ü‡Ð%yPÀÈ{8¶þ¬¼ì—_þ%û©åt¨•NVa û¾š?Jmƒdw±wv(ùLÆ›ûº*5ª�¬¬.‘©j&ºàÀïÕ°“²yJ^`G(¹L^úô‹ß°ýeP³Y‚°ö;ò6‡ßk£ý^sqp$½~õ96Y“ì§þζ5â´´ø’ˆ÷€ý§ý$˜!ðg=Ž+]œ�LÖxèsö Bè;¡M>o-m¬Râdõ 5Ö×Ùˇ8Ûæ9ÿFÄ ß=l²�óü§1W‰l{Ýþ´Í? Iëã|mr®eP;º/º°w„J ™±Œ¥þc�9q°ƒ}w°ƒ2Ë=àîyšü⟦þÑyÎaÚNýf>cý§öŸ�}ø{n×j”­¹FöÛß=ApY@Sb`Îlcü–NX$‹¬]öqíœSl¥Œë”¬×²º-/d¶¸$Lç’2ú®/v…ø·YÌÍÏUì¨ %™ Ë ÁߨWÍØk¸Ÿ¿s¿qJ0´½¦�*CÜÝâ£s�bwäV³âͨ¤ÅU®YðZ9ôfÀQçŠkÕu-P¨Ú�×l¶cˆrL·Ø[T‰gò¹y—Ÿë¦U(dððî9|œöAKI’1cY™k÷>á×JÅgTzš} ßE�[¢Çc¿ŠÏ[bN´5¹ÝBr»O»1KÛô{Ÿè+ÿ¶.´™òúbEˆž[�rõYÍÌ–rË‚ ÀïDùÜ»"kžþ¶FwHWG ëÒ`¬î¹w&ƒÏÇ)ÐŽ}ïªÐß�¬tžY‘ä÷\þqG ÆØ«ìýÜåù)jNìÃ<;�Á˜Ò×Ü3Ó1�æxï6öJ}gýI.}ã¸ÞCXmÍ™­nÝmË#A¤àsªè/Kö¥þ­-ÿŒÙÙñ>>5Yõ´uiýT…û4>4 ÈÙÅ÷êä�"í±¿î‰ÝHd2k^ß™-‚yœ·Â#1cÚÜö�ŸcÄh‹?³¯ó?ýk3­m¾¥þ<ÿL¦€Êß7–ÑŽ�o3)â†~‚¸àû¬ýw‰ ^Ï›Kx÷9½¦×prù¿PÏ BŠe$è¶1G!¥1Ÿ”ƒ¿åwY"úÓ]�ȦsKÛˆL{¾}‰?�Í•ç<´ÿ›‰'àâs×XCYÚ_ Þwæå9æ þ{Ö³¨)0Î’‚UÓÖŸw þK<�Äà|{  ŽM�yUpoÉJÈ—ÌP!ŽÀÌ:b²²&èÓ2~™c­ô:Ïâ9cÿÄçÜ�!pž2ã|tÞߨðÀu2´é™…q˜®'!Ãû÷ôáLz¦ýÎM–J¬]?óÈ^õL{¼ªº$OŽ)ý« ‚çW�}Èö;מY7’ç>ÎG÷>ÕLž‘Š—èâ3g‰ÅÐÁ´ÅµAŒ‘O7^�hô@£=Ðè�Fü„z@CÈlAkÅj 茴P‡N ñjôÀO¹4^ešê¨êVÉ@|ÆQššOëïßñh8ñ¹°`"j#â8'g°_«yþ Q}}BF²Û¬®’öwÊ‘éi}íÖ‹u{ñZ"{ÖzŽÞ#–‹Oû�kW�lçßfN, q�E¦1Àªà¬Ùލ£€@ß”ý=Û?ç`||œ•H›Îɺ4è�@¡ Þ!àŽàð8@Þ†¾ÀX;‡W¯q0Ÿ�kÞ 6ùìô4ŽB†ÌÝ“p­¹œŒ>”µ†ù �U€^Ç€³È* öoî"s ¿8?8ݰ¶I_ÜHÖ H³³³A£Q²Éu–Ì<í&{v˜ŒûËk¤ÚØff�ÎÐ㻀¥ ss„ H¦‡b†¬ÙÛ›¼/°=¨(lÖö@]'`á Ù¡f¼Ä;˜‚JÊ�›Ñk­_Á^ÛH´ ÀÆ� ëY_@P¶ÞŒR맯’ujPd”çÓ!¶.v7×ÑJg›åìguH� ø*É®*ÀÙî§¼ßoÆ7c]‚Њ£ÔÅ{e€0³=ÍøV"lgIRA`Ax@Ís2�”SW*Î÷·f$ O†#%©BÕ‚^€¹Xýw�:i³gÃÉ¥ÝåòuìÍ�¨È¿º>Šei½8kêL÷äÑÙˆ8óù$D)ù¦óîv®œ˜sÏ}^àÐï Àëp 0ĉö#›0qœtüt,í�Ö¨IF;Y`ÌN¥Q ,ñ?å+�yï™ÅiUÍÁw®9o�S_ŸÙµÐ¨¨´¶’…¹\³ÓÖkÖ!¿d® ¢·Ñ¯ãª&ŒF‚Pp€<»²›Ž•�+3û-[ ~w÷�~x¢®(ÒæÌOÁNû[²É6Òíô­™Òík›€Óg1¬y¸ ™Å,wÕ#¶¶wY+'€´ƒ(žEÞü-Àp@yhd$²Ü¨×ízš%ëœ ƒ€æ3A²Ø£¾ú«óij|ŒÏÚB<îOû¬Á5Ú³07;a`/æóëT"É*ï FKDÙ\ß �[ ÃPorÀ‡•U@úÅ4ˆ½ÄÏ’§­«§ìûüÜlš›Gj�Ìn•5†xÏZ³f¢¿|±È3�±þn)Ö—å"†˜¯G€Îf~KXã~LŸ4Ãõ�OÞ¯¸Îð½é�€7c|a�²î?ÖIDZݹcFûüŸ�™DR} ÷oøyiø2À7¡o£ÞûËÖ²Á7 áPç�½j—}èí›oÃQ€à�TNãwõÛk[ŒÁQÔ„2m£‚øY”>ú!lºßM NB¼Ã–ÇÖ¿P;‚PØFæçÄä„·ml<䕹ï=¶iŽÀ·’éÁ›ØWo Øm“}>?>ËçgÓY³íØŠ�ìËUlKÚx†Þsþnw9­Ÿl¥‘ž‘4;1‹=ÈÞŽ}­M6ЮMªè˜ÚM=dÚ=pß2}ÓŒ¤µ ]+™öz,BõzËøŽ´ß$–^œsl§e@�å݇Æ8ÓFð9´{œçÌúÒÙ¢ïóc{Å,þý\–¤éDŒªgð ÂIføþÛm�Ù�( dPëêÁçjôa^>C¤&SWU�N°=T“Éþ:uœéÁ¶ü±õö�¯=ú@f[6G"µóÜìq3ÀÉbÍ‘åÚŒïå< â/ÓúÇ·¬écì/él;êL}b±—ÌWîY² ß\�_æð² �­P´ŒÔ.ßÍRª¿�÷Ízl¯¢‚!`k6í#c{[ ;ëà`3ü8}AÅfA<æ®@µöš2ô-¬g}Î{Èõ¾šé,5Ácpýøä½(Å�èŽ=+ è-ÑR?¨‰û7ÑúÄÖ:�ÌeŸ�çÈê)c ÀJìyYöEs÷²ÀÎúšáùñŸîø”5äf¶A°³.ìÁ6ü@È@ć;A<²°ðÏ ”º¿š1mu¨†ÑxAoI=ר€fûìú’›a»éÓnÙÛ>‚×,dѱà?üÀe�t?�ßÑ>~]c\<l¯`®ÄkËañ%KXç¼§ŸBœ^‹"H uÛ™¶°Ï7Ó'MŒ¿©$ï­k†µ’Þ‚ýJØç°ʃ Á9¢òÿä,R­ …ú©•ñ8=|f/¯<¤wÄ^N.yƒ{tsŽð$®oÁëPÿp¿à‹f={6ÛBý,÷‰P˜cþY+=k–ù$°ìw=³¼¾Ï(È[[µo$Sð0ô�d‡|Ä—Éù¸á‰+û×çUÀ>pòmüm¾·´$œà®ã¤?›!æœ6á@Å…{;sŒà#ßkåyËŒ—@¾�qýÓ[¤Ø=g$1(;-`ëxéX*ïç:È€8=1¸f¦ºuF‘mäsžÌ–Ð7‹Í@²Ä•g `[¢à ðx€ Z7ýw†”·R�€ä÷wÔ¿Þ݈Ž1³>½u¢ûT'@‰Aùý)€hëiK‘°¡¤Ÿï9G†˜¿—™ß§€×½ý}1Vf›¿&Óq@|ƒŒcz1Ú v(g>Ϻ_DöYÍ4?aM¬®®‡”ù×4{ý˜kŽ˜…ܲ<Æú™Ÿ�äçMð”\àsWå›´ 0ÿùç?K/Ü—–>D¦û(ä ‚Ï(PLÏÌ ½Åó OŽ�S¯û�yÝ‚,:µË×7¦·ÒÜÜlò»Öwœˆ0þú›7´s<n3» \ô@w1oŽ )ÌÍL§Å…ù¨¾¹ yˆŒqo‡� ~ù‹ÏÒûÊڲͺ_¾š�ö¤ÌÍβöói�çdVjÝ ¨ö‹÷J¶oBÐy·ü�PýÕ @öýØw;•”—woóZ§E2çÙé¯Y@y!¶éO*ÚU–Xþð>²ì'x¾#È ;¼ßIÉï×åë ¸7ö_BPRÖ½ r…„ H'ŒÿS' 8{só¿ÄXûbobL/ 3ýììü\€ÐGç’“†ÇFÒxf<ÊWHé £³s"‚zu”òa &! 9Ï\�yö�YçÍèPÔ)÷Y-™!iã¾:Eð– U(òÜ_]0Ýï;Ÿ=Ÿ.·wSYÅV.\ûeúቀ¢õåO�ÏPYAa‚ue§ÂÞ‘%ˆs®Ž,ñóOþŠýh0²Ÿ”iŒ`7ë6Ãú4�Ùx5zàûêg›MÏÉ»J ›ë0@Žž1ÀÉBGÊ_¥ìÃlÚ[å<¹„XØøHðù¹0H=cÎP˜~?¦î÷Õèÿ÷Ñ_÷­¿¨¿‹:Ž€E?$AÁdÏÅ8˜?~äGò·gwä¨×&.•NØ—NC‚ù®r È;”ú'�¶—€€£=Á}Aþ´4çÃðÌ/q¾ß¢¬!¸]Fµæ†Ÿ»©Nä:ml¥c6­gl©è2öDf jRŠþ"‘Š-ÔÆ\á%2…É9K�Ìm–ì‚æfjýrnM@ü4SM@^ô@ð)ƒ¼ó-÷¬"5]ä,Q è_þî_¥N²-I”…õÈÞY£½‚7fGb7‚Ž¥;äãOOVR題D¸3H™wåÔ}Ö I²ZgjMØ=ÓÛÊë‹ôöÒúÁ½›\6ÚÃÿxF»Õ¾5s·£›L}d„G!ò·‹÷$Ñ+eÞìžÂüÒ—õóÆ}Ì@מáô#"ñ´Ëø„þ™¾¸g—>u¨ðÝ››røËMøuYqÎnD÷¸Áǽ=/ü÷u·?¹î={’€¯*tÖ ×²Ãͼ¯¶ êJŠˆ–Å|ñ»Æ<{ÄóÌÁÈ–fδ2×}Þ3ȹÕ;ú�Èã�µ1?í-Í¢z�¤± b ‚ÜAx(nv\«–šbm2–*+¨Pe^\ãó˜ˆa ¡Š«ü{–þ¤¾ç¼—,ïóÞpm׊Dïóôȵ8k3”i¡;é~†â³ú|—M�\ˆ H8‰’Š�ÎŽ÷é—&×sB{êðÝ þ¸{;ß­M.9ƹjÌ¥bÍmÍÒ~÷‹'j¶cx°yF²ñ�=A”©âgÙG7ì–`1þp�]Ê%"¾ë_ÎtÜŠûØ\›£ 35¯F4z Ñ?–àŒn¼=ðwö€óDô N#¢ú QŒó‚1¢aÖ˜Gg6>ð#ï�pܘÉǽ8Ö½]‹€Õ´·¾œ²Ô'˶b¤c\›%y Ž��ó…ăô b¢#b]0LìÈJnQn‹5"°ÙA8wót&ö–qÄeŽ_Ô& Âè,ÊÆ"KT€ò=³�€·™¾®½ó3$qòõæqH•¨*XzT5«½GìÃü ÐCƒbbG'K-E¤á0ð§³4àOâßU@åáP)|vVâ™û‚Ì”üÓ�šœCrí.²J AÎÌL‡s±¹¹ ê…/æÈÈ Y‡äÅ‹…ú=È–í¦.›Ù™70º7þú{úhÓÄçløw7à°Yï;Û»¦^ ¼+=73Ã3‘PhðÃkWé³=Þ³´™±R‘H6C~` ?mno°o0ýyß÷ R´5˜Q€pÑNÀ÷¤D¶­ïsÛeÀ5¢\´í{ ™Uƒ›®ÊfP·Œ@†™ ^Ë{ù»ºÄ)<\[Ý÷ ÌØ~×�àâ( ¨€¬A™é(¡m¬cÖ xx@–ñ9€¦ך²þºÖ¨?`6 ŒµÒðG€«®=ÿœ H`f»eЬ£�í½P=�À"€.¨»87À¹ òùÄ%¤ßSªý< ,ÌrSCýð€¹Ž<@éà¬YèC?NÓ¬¡woßAÔH3s3dÊ•’Ê dÃÏ’Qþ»oßRa? #ϽÖW×Sǧ¯¢íoÞ.§+ˆMT›PÁÁ¬é¹ù™ôí·o `s²‹7�•ºŸ!«Æ Ͳî-ýðŠìów<¿cjɃü[džgçÓôì ™Üï�Pßà:3Ì›¦X›í'&è»{æ™™Ü>“ ñ mWF\•  ¬Ý!Èý¬¿í�íô,ÎÍÅ~´ºº–2ÜñÅ‹´Ùf}}|!ýâ¿àžoƒÜò’÷:ŽÍR/£Î°¸°I¦Àg©?6žÆù›v‘‰_YOãÓãd¦Ï#‡¾Ãþ´MßÞ/. ™~�Vè'!ÌÒ¿û|^ddt,d(ÝÛ.¯*ô[_jgíîŠ 6 Ž 0QQ–8>a^‘FP^i}ç‘%'†™§Œ‰%*TÜ�ö!PÝ‘9r€šA0¼‹5㹂Úuj'ø38PL…™AöïZÚ;¹Jÿü¿ûoÓ¿üA1‚FœtfþºÆUÜà¯Æ«Ñß{è<˜atŠÈîVšg2ZK·âG a ûí`ûiðãÔΞE–z/3˜—޾÷¦ÿA7´‰±Æ8`/Âæ{J»û;ØFkég¯ M-¾À,Ô3ÿ#X�4ØÀ}™Ù/€•o8/�Ÿ’q^Žóm”3îТøÛÑ5ð7àƒŸ÷™µ5| �\\SÒâô Ýóó5 Æñàs…+Ø ac@ﱜ÷»¦ìR�ç\Œ/yå®é~¥â 4@Äç#ä:ì°,DÌGöÂj*=Øí\ ‰}’Ç®,Uìõ­€ÛØèì¯=}ƒ(úR ¶G;{bȰò5I©vì|˜Q6ÙÒ÷(•S ­H¾T:乪iíh3È-€ ~?È<�ìM½y¤Šùž¿�1æ9Ìn# >ì½øïå˜óöcïà óž,?öñ+ü‹£ÃÝ´²ôU:AÞ}ÉaígÁ$Ëo˜�ÈCE;^?ôËñ«U뙣5²sKØî‚P]øCFµ5¿�×Ç»d\WŒ»6S!O.ç¯RÏ­œ£ž÷Ìí*g·öu×ÐtêŸcœÆxïßïÓzïzÕ¾Ÿ¿�þûû߃þ`EŸÃ>*{ÿ-Ÿ£¨…¾¹{œò äê[TßTmhÁFÓ¾R)ͬÙ"Äòvˆ±g-Ùeùë’ß¶’mÎÚÖ!Ñ¿ó³Í¬©ê% ¶V/„3P»ß‹ø`èšÄ^¢DºÙ¤ÚÐÍÍØ¼ØÑ%€½ {˜YÄí{™4ÿŸyÉcÄ<‘ˆ¬‚DøOHX?±V� MÜ__5âi‚Õ|u«f¤“e[ÁŸºƒ„ݧÐI&.בÈ#aZ€9²VÙkô«ô—r�Ú‰‚ìúµ™¯¯ Æòû<}ñx_WCgšï˜Eï³`WfF¹ {›}ζ¯b³èó ÒuWÒà9¾»€§ýcF¹¤0xMÉñžWx‡ü›Ïð¢…AìÀ µÖœ ÏôW•gõgÉlÅAŠûûE¾ŸË¬²çÑ,Æ” ^b3íìáΫ™ÅÞÛïÒ…|¦Ôs;ú¿.¯j“5¸•Ú®ÒGÏÜÛg±ü‹Ñùü0>vSE¡Ðß=µRâ�zõBÏu¾~úJ&÷OÔzp÷Ùo� )Kïža"@Ìæœ>l�²f)»ç¹gøžà¾g›~·}¬�åóľ“|ŽNüEû_?9dó�ƒÌ¯£é×xñÝ+;&~®?S ²Š$ÉüÞÐ>·?ùPœ�‚¸õ1â=æ¥5Ô�-´f;é=ˆ,ø'fÕ!hU‘O—ðÒÜÌzà'%ß3<Ë- º§‹óÞ‘7 +Ts8Ÿl 7dýzÎ{}ú�õ±Î'ï/©D¿?€~ƾ™>¬qVÚ§ÎCýBq¬3Ö6$µ¦g¤äùœ$z�phç­ñ,I:’VT“ð^—´í’ò„žŸÞƒ„rHP´™ñȲv²Ü_b‚ûŽ Ñ}þÍ88.$ƒ´æèÖ¢kCÕÇŠ+9äþú*’Î.®SÿYUÁ+’8LV¨@À±? øm–‰Seϲˆ–û“ÈÝÇïŠ<{ܘK6^�hô@£=Ðè�FüDzCŬ@�� »úK§§nüMãïFü{€)ÎmƒØšƒ²À§¦fÓ¯ÿ⟦ÿý¯ÿWÈ"ù`ª_"O~vN­)³mâ”2ÃVÇ`ÄÈîì${cÚEÒÎlXeýŽL[3WºróºÉ¢¿'€Ø¢óptOPðòì0œ³�ƒÍ«¼u‰ìl3h‡ÉT¶ž³@ì°6.f|;Tƒ­Œ1¿OVw °V'¤Ÿ¬ÜKÊÞ î ËÔ.œë¬���‹^Yje·¬™læå%Ù5»»»¯ÓM ‰‰ÇSWgÎŒ �6ë>›ñ,@-mUàý/óŽ÷ œ˜!_—|SΚj±qÊñ0­ï^o3ȉCÏweã`6¸, ª£Ýlž3$Ö¸�´Î¥¿A�&úÏì �oƒ ÌT÷�Ÿõ:w€!f-ÀБ}àþÖü“H |‹­*€A#uï×�㹆B‚ý8¸+x}�Ój&}ß3@NÀMùwkÖ+]n@¤H€VÀݺÐýÌ+³{ ]”Jid 7 ÊÞOŒ ½µ½ rßâ"êHÚÜHèKã�2œû»{©ïõ+È Ói‰zã‚•®­£d÷÷£ßGY'ËÈœ¯Ó�ña@ü=€ð" Ö óv‰l÷#ÖÀslŒÚèvÚnÇϲ ŸP+|jj:½gí©*!8áb�ûw2îÓÌùwïÞÑenvy÷9Úºý6…\ºÙÖ«ÖÒg?ÿYzýÉ«ô ì>$˜9€\ƒÛ;ûi„11óymu3­¯­§ÖäÄø8óvÏÐG� î |æAžirœ¬î£ý´Â^8ñD5‰ÕÕ äÑ4O`NÒÀ›oÞ‘‰ŽœüÂñÔr]KSdÊ¿~õ*H6;Û[ôåx}�D?‡ð°XtqÑ•¶yn·íqž­yç øCô�÷Q-âÛo—ò{É&c¬Ïëª$'á/  `K™äóÊ©¯Bò‘˜1áçQG°.»J’ˆÐ׿n@ì ”.$t(ÙîÞÐGÀµ%�C2ðï«ûц)Æê‚ï°N Š)oôEBŒãb-Þ~ö“SÚ%8å:¸—k£LÀåBÉAÃ�dv¸ÖÝ뤖æÓC÷9ö�•÷(°�Ì J`FÅ»7Ë�šÙ[¬ç~F?ï‘5‘ÆÀ÷6›k~&ø PÄ\ùt¢= ô(áNVIç²£=¬G‚@œ…fÛ@¦È÷ºFºö²¹|œ#,Ù†¡ñjôÀ÷Ú,§83$=^_cÛªÔ»Ê�BjÛ3¬µÐ“òÝgî[!êUÙ¿ÇR÷à¸c]Ò×ýÃyÌbÿñ#}EÓXl7؃fa î�ð(ÉÊÒ We$‹±ñŒÿÍóüÏB_šáé¦d8ÎYUvn°µ+ Ž÷r®ÍN*aéÔ´g¶`®ÿ»ã/ÆsàœÅÇ—§i‚Ä.µÑK()±E†�ÑnÁ>0ó3ll‰*×¹Æf­H±%Z‰¬ HFE5»�:¹Øí*™E©íÔD¦«J<Êõæù|æUz÷k͘ Áví{í!�[�Så�[ØkoÉl ²–»Ëzö¡{'÷­',Ï5�àÅnjzLùVöw³Ê}KêÄNåá/@®ßÁ50Ÿ°Á(ǃÝtÊ?É _>ØL#½CiœLôÁB_êiè¨`ÙÆ€£$Ѻ A�xà=ãMîk øNìÆƒÝUάmJ¬q®ôôBô [ê™yS¥ëóçß}¿Ïi$yËøë'hó=6hi/K*\^»EUk*ˆÅÚvìv Š¸ÖœÂNbÿòw‚ì12ûUviåܽƆ¨Þ]†Ï%HÓl�k@Å» æ0ó"hš˜[Ú¬^ÏuY¿lü×4^{€. õ*ÖTk{Ä>T!°G\“fP#‡CÿBV`^³º‚â|µ”• ò16ú->P~z{¡›=�ÌbÁc|†Ë2€;°=ì�-9|ô¼2Í\_ü ÿÐZêÖ¨W)IàMÿ_5+%¥%AºŠõWòÔq“)iû ;÷¢´~­6¤™¯Ž®¤{$×ÛnkK^|F :#|w�žî)Ñ¡:ÑÖ,ís¿:†Ô)IœGŠXÀÝ Ïd¹ÞÓÆ~j Û;ö–ˆ¿Ùv2îó¨=@ÒTÎâÿ+·�… ™Ç¾Ì4£¼Âžy‡ÿw ¸©bZ<_�žñ—”.'#–¾1ÓYÐýÙL_íT»�æ°W^Ç¿%ès  fFy ÁÊ-ñAöy×cø}|®¾fÂú�½ì–ëê;Æx²‰ÇgéÛ�ĤDMÉÔ<(ë?¿ÎŸÛÙïTxtsäÕ�oí¹!ài­r�ð û§à±µ¤õWU„°¤‚û‰€©JuuYøúÞl–¼±“<$rGÉ0úSûвˆÍ@IDATøîþ  U ýK÷oíåñÑîÔۑşϰÿ6¡trÃó“ìhmâ±]‘EÌ|x¦_Y%ø·sVRS™ùä~À¯¢ýnöµ¾VU›Î—ôá;&f£›Ý,Àù :Î9‰¼<×°f¹í{bíx.db_¬æfê;NÚö®/ù§[[Ü›/ÍQÔw¯¢!ÆZ™»ªôŽùB•„•\Ö W 1Þã»®‰¿/?ý9„ô¤b�ØÇï=ËKÇ<˜dKÎ�ùŽâŒ¤ŠPB±~ÀÇlCæÝvøsH÷3Ïx4Új¹9k�×o¼!˜§öA�Uxï‰,û6Úá\Ô2fd¶»ÀÿÍïûµÃý›µ®²E"Ù%díbªC8Ö–Eðžô}îù,i€LqâDA†á~OÄ /ËÔ2|˜ß©Zg›\c1ÿi[éì*ÊÔ”ˆåSx$3�o‡m�‡|Õ‰âŒk[EÉKH3§Ç܃=€}ÎyÛ7Ôñ º:ºÇV5^�hô@£=ð÷€@Ý$ù�Ò¸ý�º"¬Ád‘™ˆ�‚�ÏiÞ˜8?ê1k4îí&tó°¿1Žq?È .¤Ï>ÿ"m¯-§ÒÁ&Ä©{Φ ä×óK Y­VœrkEé´ήð®­ VýAOÎãúå9ŒòB–å)ÙFfªO²™-. Y¸È0ŽPoúèø˜,ïÀóÑÈßÞÝ Op]Àiï`/dÝggfpŠZC–þiB§H¹eÜø4@zè´¶º*fkž“A|¸: p‡÷µ¥u¬'fÆpnj€úÈËãY‹])T³JÇÉV‚sÀêŠÚçÓ’Z¶¶¶Â—¬`Íâ Þ‹šÂ€yfÓ ®õ!'o¼ >«||?ÙðºX2’ÛèsåÜ­[_xïëÀL Tf¹×2ƒÂŒsý$3MÇmœ:ÙUvT%DmzÆÌç³Þš²_fS˜1;C?˜½nû ^ î+�v‹ó×NС ÄÅÝóã!$¤ÃáÇyÓ©7›;dBÿv‚‚èW€„ tü ‚èô:_•TÓáðv�ÔƒÃd¿ã”v0ozº‘)§�Jtö¨0nà€Ë0 E�ÆzëÔŒÇI6@iö{½¶^.È:ï^瘌p�ïNÖ£à°õÑ .>iÃ(¹®ú€*Ö¾6À%H.ÈpM‡ ¿ãq„Ĺ€ó0Û’.”x¿!¨of¹ŠªR;'¬=nŸ hïÎ:ÏGz˜“é½—((>Äu”.7SdBË6㿳³›¾øü³ØWVWÉà½KÓ\wŸÌfçÒsa�ø·_C}ô,ëcEÊ Gd ¾OŽ¥òÛ÷¼·—çgO¤õ-H,fz›i`{­‹> ˜k[·�ˆŸ�ž‰@×ëLRƒ¥–—V’ߥ×ì‚ñf¾GÙÖ”Λ¬ƒ&Ú6Í}–ÉJÿða%2Ô_¿F~ù}Ú‚­2H69 !m( Ä›5¾´´}½¸¸Èüy\^cíV¿§R'kb@ZÂÉìÌlÈÙ›µðòå j¶Ï¤÷+«Ì¥Ûº�!¥çÍh_|1O_ï¥7ß.q�߃óôå·€ìÛódȱF––—bÿˆßGF_…nc¿ÛcÏ:d§ù¾ëc—2‡ÿGæ×ûQ{À’ƒëÕò¬%Ï›ØWU ¨ö 2žÖ wÏÛã­¬kÖ+˧¢ƒ™ŒË%{Á1„™>æÁìÂ\HnBª0@7Â|p]�ñ™2à^Ù‘mØ«›Ìbº"0ÙÅú53cuu�yR�ùåûë묋f²üû¶’ÓÖ8¯V`i„u¦mŒ`²ºª0�œ^×5y q©5(³G%âHþÄ´ý—Œ»‘í;Ϩ§gÊIÑÞ,~g�¬vI7ŒÎ¸€ø³[ìö °¦Û‘¹æ{xãGáRP.¬í©‚Ðdþ«²Ju‚Æì�dœ;·´{÷è7‘Ò³c “Ô §m-Y@{и†1ÿT’¼&�¾´‰d©gè·öŸV÷Döð„_WBøv…¦xÞ¹¡›=¬r# Âö)¥¸ ºº§»†\3÷Ü×s¨ÊV¢Âž'm–=4Î(çº~܃™èìw‚øó9öh}õkGü~ §ªx jøÆ0¼�(§ªd‚¤¡¢Áõ"3™¿Ý�}Ù_¶ÇÒMô·aMzîÓVöoë‹;ïóýܳªœú«ÆKøtØíA ãr´ÿ�ùÓLÂÇošË?aÛs–Ðç�íÍÀÏž0œåßf:7Óžú}H’ ˜fv{š�¯/-Ðëœsþðÿ#~ÓÛs­ª‹”3×[#!lK÷¸¥ËêÀ??gPȰ¯�Oùyû¾‰çsŸ‘ÐðÀ8µÐŽ…óÑ~½Ä§~xrí¹aQvä÷¾¿óÉgòcúé&gH.±Tž{[ž¸”{šmç/â(Ç\Å-â$þŽÃ‘¹R‚ÇÑQ‰½ÛxÄ8l° ðpžãÍø™~ÏqP�!Ïoro¥½*3z6{$=pIÎ-žžßpܸ—%bî¡ ñ¤�Ï)¼.¸ï:”,bLBEKƒt¢îR„„ØÁþrŒè³JN̵¸·c5�AŸ“˜A[]CÕ&²õ™MŒÿa„T¨�U…þŠõÊ3x~^Ÿ9==¢?J€âÄäTD¢Ãúº•»Ï3~œ!ø£¶Íñ.[E‡ˆƒÔã)&ÚxÖUÖoð‰SK,6ŒÆ«Ñ�hô@£~ø`ßn¼=ðw÷†‘¤@ 6Y€…|ñúø÷ß}•Æ'=ð£ì¦w8,a|c¤ût3ˆ$húÅ/ÿ,ýõÿ¶Ò¼2Ê[ 40òÍØÕ3Hö„äà-ñéÅ�Ñ€e£©s†Qn]u¥ÔZqXÚuœ4…[¨³¨³k³Øâ:èfNçYtn¼gÞ¿qDu à`Xwâôéè=>p>Üâ¬càsÛÆ·ò‡:�…rdJTnîè`áÈ)oV"ƒ¶€qrz:²0ß¾ù…À`e€ü@J ÖÏšœ-ñåµsÈ €Tf~/}@C’¸� W/`”2Ç*’yêw/qR”9Ÿœ¨gê*e}~€°¨�,iäÔ�N#V YßÞÆ ¹Gªt>ØÏ«kÄÒ €�ÎÔ@šA³†u㻣C€¡‡”ºžŸ™F«ƒ,Ý÷¼üìÓOÂ9RZYy.¥°%'Xë9YSë—Ÿô+í�g8ºYÚÓÔ%nÁ›ÚYÝ'Hû ÛC›�€ë¥ß;èƒCœÉ32—ÍÒÕÓÚ•o^Ó?:Vf0tñùSž·Â½Gi¯;«ýc�À14ø£ì²¸}«ô›Œjeëe¥ï‘‰Ëp‡3®LªYÀJ޶¬µ–±ýÔ?Lv+ÃX1Ü xxÄ}$KD67ý-�"ÏœW:ßl÷y³c�—ñ_¦ëÙ:öd,¤°7äç^™E�QÑhí³�-Îu|ÏW=¨�ã³È´1¯$›ØNYö>£`»ëųGpÞ,\ç•A´< ±‘k‰01È#Pk½ÀQ2¥Í13ÅZëö£A±S€Ë~ƒªÖ˾"ûCó~楄¥üÂ%,DÖ9Rûf][Ã\pÞïY7Ýl(åûÍ^þíW¿CÂ{;½\\ˆìc•ÎŽ� [›Þ q3Ûgg¦ÓW_} ®$•ˆ"§þ=¦É¿' ]€]ÂÈÄøXd“°�„+©xˆovû0Rã—eÍY{]Pà×Z÷ÓsÓ±öɸw=ŒOŒ¥e€ðuꬿz¹@¦ú‹Û·TxOë¶­“ym�ð…Å9ôU@ö¥ô³×¯øìëôöÝ2û@ŠçgbîÓ/£´í5ï»æÞ½ìÄw]®SŸ|}}�ZñfCB, kÚ’‹ sì9§éëß}EÿLƳ"oOafv6Æfkc-äøÆ˜ÓŽó6ýi¾ý{uu�¶¾Ù æYS§ÿAÚx?DR^¢‚F££c”i8�^�šõ³þ‚ùªqXÓ}zv"ÖšµÝ{!é ²_ìѯ'¬×–õê 2íîîÅ^2€4¿²õ»;»ÔõîëÇÌ£lö†{BJ" bÖø#ëÝù[Œ6(ùau-‚C=;övöéŸm2Á»R{­{ÅÚöNš ýlVW׃Ðtr^B!â.lj%Ë‹tÄÞe­òN²î×~*ül`©Ì5ˆ[’ ù�аÚtp†ôÖë l%ã1ÛBÆë.²J¸‹¦þ3kКê¥+ä# øßòH°Ê³wôûÏ";30¥4q;ç“g[ãÕè�ï²<3Ì.3Êh ×—.‡g$'Kìuþ®ÀBÈtQn¥H¼„óý(k~_ %Á°•’2wwW¨§H¹OaC<'À^älçªÞ‚/IsýÔýïöül¿Mœ�*Ë(÷[A9H¢�™Å°Ü³Vw¶#ð?ù�í{i°v¦/míS÷=ÏÔ½Ýmö.•†FRÁp¥·»º!7T÷Å×n çœ^œ¦-²¢wKGéÚŒ:úÜ댔µUH²*o‘1mÃFkIÌ6.lo5W!–e°K Zß¾wàVêÜQ(»Å¶xf_3Óð ZÐF›:Ã>܄ͬöP ¢ ðà##�É9W£oyÂŒ f’I£%|“y‰ Ò¾ª ´{c޾°m–6 9r‚ÿîÍÝ%61ïºÙÛŸÉ2U¦9‡-ŽA„ Cf!¶l¸çŽ|§ƒ=º�¾ÂÄ„¸{‡Í|H?Q™çè¸,8/Ñ`�9?~†RLW/ufG¸G1öh}wGÉÌùΞaú® ã”3 géÙÑn:ÚãlêHŒ—ç®Òù �°Ðo­ÚAìŠæ¼ëÁITŸ~´î�Ð6e±kÈ„?1GšÈ„ŒÜl2úíYÀÙ&Ë¡ØÄ؃ÖrF¶³Ÿ˜­Ë|bNéW[¥e-dÁ¯–vzÑs’¶�©øüù»¶Ö¡´¦M Ä<û“~1vŒdds¶á[»æZ)YPÏ8gÓGú æ¶}äüÉŒãÄú�Œ©šXVÕüâ<>že´åì$ °™îºg%²ÖÈÎÆßr¯)C¤ÍÌ»VÝ0•âšÊ¢»Î”õV&Z Z»¾*ŠO¥6:8Â<0[TÙo×.>Ï> B!)M9;g€m2óü±æ½X¿Ì çKŽy”îÀG1F è˜àL“Ä!a™™ë‚ÁÆ XËì1�$k‡Ù? ¢,ƒýY_øùEæçmøYîgÞ0j3»¯ñ³„}³ˆ;°Y�y4›!|‡ý*ÁbˆYÙú¬ú �Ä: 'llo†Íî8äZ 1³×=°/ó�„7ýe½s�Nש2Õ~_…0³Íy(ž�±â U2æëdÃï]D3¢m‚–Öoæü(2¦ @Œ}­ZŸ=®=ëÝ�}~•Hõ�#‚äÚ¼ž#|�9ÅuãÞ‹f½Ó÷´B;øo|&H¼ç¨xfÉ4wOcC5Ÿ‡¹ãþä|R޽ƒëv±¿ë»–õ«+çC�óÀùæ<¶÷ìß–›±¿ý£ZŸÄ.mŒkúÎáL ˜+îi×øïÚ-¾jøÙ>g³¾xS!b5Ä$<�kA¬FŸ²}í~mv"ð³j žsÆ�<TCi¦Û¹V+ç¢[Z¹|ÃõÖ%‚ ƒÏÙŒÝÄÍh¿×cdx8ËL{Œ[±6é�o%èˬ5÷ÐèwÎ`U‚óã“?fk[–{Ú8Ëyjiù»\[gš^xAöÆ'雯þÀ[�_œ͉¬ƒV‚wCfÈ<ÍhÑûîæû²™Y1|§rÿ”ÎI]Çωõ8 fY±úq²‰;�˘Y»I–¼Ît€…޶޴~�5÷üœ ¨†»2—!£…£cFéG¢Ë �9 E¤,«©“S–íl¿ŒÔ7ì}ز™AN±d{:ö>Y_ýp]æíÄ’½dG^àílgÈá¹[ÞÞDʘ ß9�‡}€:ëò pf p Vmá<È�Ö©TZk}{ ó˜ïÌê)U®Ôºä„66�jðf…ô€”‘à6óÝl„}gyÇé0جsç·N©²êÖ ˆ÷9Îyo`Öùþ†Lh³™�+]Ô—$½â9�Gfy2ö}€Ýª ¼8> ÛѺ÷òÇÌWÁuË8w7™WŸýüç€ècé믾J+ŒåKÀ_Áæ k³‘¬+€ïf,þÙ'dv/¦7oÞYbœŒë± µÓ¹§2âf~/Qÿü«¯¾N?ûäUÌýoùì$ŒÙ™éXÇïÉ 7˜eûíû[êŠ/‘õ=Ç\Ÿ¥føuÍW¹Ç‹4É´L½ã ¹Úë+k!¥n}tÕÞ¯®EýñEÖÉÛwï"02Ã}|­¼ÿëźï5Öò>5%Û_¾XdMì³f6#Û}¼m<™µîÞØCŸIü8È–805=C á42ÞgæfþçëÙû»H ÓgÖI_‡$#azv&ö�íí�´ Á@Ùý©I”!Üg Kô#W/QãˆõY”Wò]µ³5Ϙ_" í3.ÊûI†ðP^Ý¢s¶L‰ñ¾d¿ëg\]‡g�ÜÿÈòt ¶v�ëàž¥ÏÌšØäÙ¶÷öÒí±,Ã2Yù'Ô'^X˜ÔNÔ™_N-ìÕî{ÛÔðE)�¹ö /‘ã†=¹¤ ùDÒ‡ÒÇfH ©Ž`Uê&Öîí`m¶³Ww¬îåâ¬�ïå8”ûsovìÍ|oâ¼1ËVà±¹Êì½{‚Ožhgd<4£é‘}Å’ ×9†‹=Oéòq÷÷#%¯Ï(ñEúò¿ˆç½å³ É¿áJÔX˜üÝx5zà;ë¦W€e€‹žNÎ6ƒŸMÎyÏl¨Ù}î1ý�Ò&sÞ›ÅÓDf¯eY8êÒöûß,ΦÈh탯™÷ÖÂ$DÎwª•³T戭ԉ}ÕÇœËó¿+  ¾þèÐøÝû?‚žúP‚MÊI3³ÈË+Ì…’A¨às T˜É¨]ë—þ‰õÿ7ŒQæ:w·ézÿߤ&2�Ÿ²}©kö3·:S™‡�'ËióÍ¿H×ü=ºð:ÀÁÚÆÏÒMdP>?ÛÏ‚UÔ¹½ZOí½3ø@C€2µÕRj~Dʘ,ä@÷Zn$µwO“áèØÿ‰¿\_L)÷0írIŠJ¡ëÃ4€é›ÜhITÐçhf¬#Ûšyr�­tŽÊ�~B$k ç;ÉfL‚8ˆoêü? ”@¬Ü¸À˜Dk¯¯?ì¼²Œ– úr5ü,å®#›Ù;;÷�Ïb¯k‡À±µ»E�ræã‹WZ³ÁÄ^øAK¿Eßʽ±™R >˶Mf>¹¾ÕYŠmø#n+û[¡(–ñ <êtOb›²ÔDO_žlè®÷õ㕾ö¹´ãŠô�Yì‚�õ-£f57�ó\Ì@ÖœgÐO�;°Î$Џ df9W̮޻—‘!Ï}n™§úxì+·déKÆoc?8¾GòÞ=’®‰}ÁûcºÒçõ:å~Ư¯O.P) ®]jû¢68ãìXû³ ÀNþv݃#S›ö:î¿®ï|IËìeH2ð}Õ£r<³j,D&cŸu_7K]YöYõ÷|^_§�çr~™�ìž*¨j?z.ØUš Ñ·ÄÕ“ºì:ãÀþíx97ŒM¨.˜EA‚‡ë\²£à¹e-‹˜CõQpÞø�ãèÀ¾½Íw$ÈØní�,gªï{ígâ•è{ÏbÇE’½±3 *<Ñמ۞ÇÏüî*Hô¬=ž»e‰Ú#²ùP/0yöKÒ0¹†D©&Ôô%s<¨q¥ !%_Hüƒ°ÖVìÅGƒœ€º£Šv9îïÙ–cxd bGìN Ìü×'» ¿L‰|eñ{{Š©ù¿ÿþÇÿ©ÎÒÐ(qH¯F4z ÑxÔ�Žºóæ·ûÉÞ‡�o4zàïÝÊ÷J‚3[ÃŒ©‚0„ÿÎñÆþò÷ž)?é 0€%„C§Ó#üކ¸lWchÜ·:ƒ(äºtXp6¢­F½Ž¢NœLq3Au¤d¨ë°„CÅçkõ\ û�ZဦeØ«—wÔ-¿M{ÇeÀêìž_óoÅ+2{È6¹†Í}K=³+ÿÆÙõz5œ÷ÁΦg5ïIû`pNzºÚx�ƒÐv ùª6žâ¡LGêiŠö KxCFJ3Nwæ™kã0_RC÷�«B¶t™À¨YÐûZWü¿&¤¼¬Õ¬Ìžu~e,ïP˾7ȺX¶À¦S``õ0rçÂŒÒ NÿY%‚ÛWåKžú÷«’�eû§ôœ`¡ŽIV'Ÿ€Ù-NÔÖÖfzú‡Fp¨kÜs).j¿ãH]à¨Èˆ6«Úu»¾±!•Pm2œ³MÍ4��›C¶¬ŒüñnÔŽž Üð>Ãñ™�[H}€lÿ޽7}Ž4»îô.�+2û^@U¡ÖÞÈ^I‘Í#;fŠqø‹¿ú²#ìð'ûƒ#q È\%²@çÓ[ �ëPa½÷}2tð^ô Æàófí»ÑË*Â~oôù@Ÿý7û€Jªú ׺ÏÖxŽ™¦·sœcþm”Æ4‘Æ Ö£ÙÆGMÿ¾ øk„ÉiUõþ~LÔ³ÎöÙu x«ãˆ‘ÿG¬U³$Hçqú¼EtºÎ(:Zè±n´±†!#¤�ø0‚ÚèfÇkòì^Ò„ãÄñ˜¹×`3?˜�áÊúâ~k£³ö]KSd&0Mù´°æž ñ0×x/¦ƒHC/YamT0Ì™^^Ãâ´2›Â ýÜ"Õü6㛄nFÖÜ¿ÿCA;èf¶� tÊpü:llX‡]CúЕy1¢Üÿ‹¬gùÍÂÕð.´z‚ƒŠN+óKš¬%²\0Ÿ^¯‡Öý¶dÄÖµÃYÏ3D»¡¡�Î7:ì¸6t¦a? ´›®ß4ÀFZ^°ßcî¬;9‚‚FBëëê¼`D¹¼J|�ëM©èº<¤�0œÀ´L 0²ó Ap÷�e°­ßÄ`¢aþ�vÌt±ÏØ:[ì³§üpˈ‚×)a \ÃŒµÚ?üùÇ‘‚Ø î=Hptqï–oÀ uZ…îl¥&é×[¤X?i`]ª§ÒH±>R åa™ºµ”í Þ`f¤˜^º6žn]‡¯L�duË1éà1`Ô-F÷„LF2à ”ŽqÖªs6Ô[�´±‡#gÇêk�Ÿ'‡ü¥e~?^ÙOK;D»sδ‰Ð´>Ÿ†Ñ6Æ(©ŠµñôÏÿè¿ô¿ÌYe œ£…󂨨p²ù:HÁ6{ÿûPàBî6z÷x÷q:=xHD.éf;üôÁàÉÒÏÓê�sÎŽ§1x†èã£ök~e+�QwV~Þa�k4=(;­¯!T‘ëÆ…+RsïiZÿüORcóÓt°µÂ¹K¹…A@ä´¿(÷7#˜Ûøyö|}ÌR#2Ϭ%:aÉ5´GÔ&rÏ gô—­©“ËWû²OY‹Úr�X´_–-ùðƒÒÚÒ£g²Ä$N„3ð~KX˜¾UYâéöRzÿÑ'é£ÇŸ“úw51v“8ê•—‰ëÀÇö�áqz9'NÐ[ €’ù6²5æÌ´Ø'ð?e½��ÔßÞ‹´ê:¬j¼6³é™E®–qtj § ²7 –¯°Ðæ™Êìô’‡¬÷о€7¯í7êŒûä‡Ñ=�cðÏã�aô]9�œ�ŒÏÄH®ìeD¤`…Ž®ê6§DÙ¡>ó,Jãp曞œ£ 0�T¯ðVAXA]�(ž}ï`(ÛÕgćfæÜȵx7¥·�*ÈHF… âXF}Hg�ò‹¤ÇdÚZºó #³¤}?N+þqZ¿÷ýdúCþ.�Ì“c&c�ç¯ûKž¥ìׂo»>Õ'}9ߥÏ÷Fô»wÔÓ•1uJEæÜAFþéøZÂÿ(E ¨§cÍ Ž9Ö©o²ž•ÉàÔïŽÑ7Ô}šì5e¼åÇ�ÙW8 ³®ÎÂ˲SìäÆ}&OáQò9� �ÃQýáÝÏÒ>²à[¯¿šfæ(›ÁYa&96'ý|§ß]úÎŒèä ù žÉžu/©. k$óÑΔȘxâ°®­ñlút  \ŠïÑáÎ�Âñ‚ù�Oè¤"­\³çŒMÓÒÒ¶‹NéBYl8œ`ÿtN ýtœQÊ�¹_YYÏä¢Ë…ðÝ ƒ8ÓXÎ,xÚ¦~w¯¹�´‰x�ö(ÏFm"öa [’äì×g�vífÆégŸ›Å¯€î%¸O?l†ÚÑ9’µºþ, £·vm}:§äMUàU5¾ÏÙê½zèQ G�/IÓ„é-¥"t!h_@_²©¯õåÙ²ìÞ«G�ßDÏkÁ@•Œ~où0 ü¦›^ ïBÈÕªÂÉÞëÅ¢ÀÅŒªÈ!Ç¢\Æ ïY|u1Љúü&Bú“?þ7ik0Œ(EëØšRSåHC˜êPŽ6úc‡ hÁàVÇ›½ˆñKåß”L*7\ެb‚âÂûøÎ´‰î+•gÔœVP‘ûO1«Lz½Š…^èìGAÖZmƒúi(w±7ñ*ç:=Ô­û6À9û•gåñÈÕY&’½ßgÑY�Ná™®"+CÚÄP0Txà–êÔÎÖ€…ZŽ2�O›‹wPn0Š"àïv¨ ŽSï~ÓzE*«•"§QŽQ`5P+¬�Òo hÁÕ5Àóq”k ›ösyi�ZÅãi–ïMSy÷‹Ï ó8àáljî6Óû?û RºKWSV«¬˜]õû¡Ôc@'’´  oÔ¬QÖzOï¡ô›¶^ömÚPŠPÂèÇ 8Ÿ×$¢Kµë)QôÖs?FÁÖˆzŸˆZ×�)ÔN‹UPÈPÖ5¸��.í3I¦Œ·–å²É6…&ŠÖ0@ä1óz¸´H#³óX?j(虜ÆÐ/àm4Ù&Qãƒô­_Z¡¤ €Oò]ãÄ ^¬,z£_]£Qû #ë†Î(Ž*…]ÖÐ2`°Æ•4£'¶â£zÖ70¨” „ë`°»¿Åh"š#ŠÀªýÐxiÊ@ÁR7×�Q¸Õê k&3¸4p~ˆT¥.$–¸†k-dû~o�>,8|F:2€â64d¶~½ ¯†,SuZ§NåVÀ¾LÄ® t2øÔxRàïJ©uî]ÿvÂX€¡D…]…v�93[�`}“uµ`i$± ,YPŸd%û ËKKiaáJ©MÖ¿uëfšÃÉàþ½G¶[éÆÍ›‘î\€Ý¹�»<ǽ+‘ ÁúÙ/ãåôÞ{À.âPñ*€ö¥tçÞýˆr6ey�ˆø‡�쎥ۤN?†ö®ÑWp‚ˆHsÖ§5Æ�V~õ›¯Ð'"ò ½}^LOpb™Ÿ›Oo¿õ&}|*šK/q­ ¹©é�Ü_¸z)ž+x=M„÷Í—n’? �ÝÌ£ì³Gü]ÂaÃèl½ê7Øc¦­Õ9C‡ˆ}æoŒ=x™ó›[ìÿÃÈŒp ðúÉÓ¥¸vŠèî2ëÜ{­_<:1Â~&e:À¿€ùèÑÛ«[ic‡2 ý8I`P³–ücöÿUœFÇ# �ï�ÐÑæéâ ð8A×ëºÉÞ­²F¥G�=ÿÐÇ1|áÑ£§ih|8Öì!ûúÁ£ÇiìˆhtöÃÆúv¤¶‰*ÝØÜÜãº6û‚š‡ÌÑ:†—{d›¸}|¯£O? Dç`ƒ¿‰g/t;Ô¹%út�”¢8+±Xƒ'ÉW "†Üo ö³<_#‘†ëã…ñ~jÍö*õ�›Ô“§\È)S ñ-"-±6a¨�7ÁMsØÄ`eMÙ·†«0ŠÑ_Sêæß<5 j�qÏ”ùQΫÃÏsÅ.séþÑ?ÅPvÆ%ŒKp J8f‘6±}þbÉ@ÿ¹ŽÆóÇÔ«Æwþ8í<XMÓ/ÿW©<¾€qpêÞ‡éüxàáçŠQ¾'Ô§Ýp>$3È~šˆ#ëçÃ(À®Žnw>ø1|�¬ ÿä`Ö8Ù6SßÑ�v�TdÏ�Î\gϰ‰~Š2[ƒ5`<Ä:©¦üÔYhÇÀÎõ ÆôÀrÏÐ�øÊÌ€ü!öòW5§ò I ¤¡ñÝHaÏâ Î\KL¬./ÑŸ<|!@ó!¢²¬½í]uÎmÓÖÒ¡ôÙÒ½ôé“»Dt!"Œ²uʘL� #Ѐ·òÝèOXHýDi–‘A¨ÙmYKõ“É´„¾}4bp¾·¡¹'GÊd(kœ š{ЀÁ¢˜ê÷~¨gv�<2©µ–»ÈHF¤Qs�Ž`¸>Ù¶H”£œ'ðÕ 2”Qzé¾”¡äÙ›‡;éHƒ=r� ‡ wÉÈYðmAòARQ÷´y†€„ K ‡ÎkfólZp�ÃçqVkqO�ôºÉœ#Ì·6u�÷™ÞÍš€©(Û#·l“q…~UxÚдŸë£Èœ5ÆÖG:Zçf iëh?�QÝse:Ï�>ŠóY®J=Øë/‹l.d”ÚZ%µá"�ú ýü*^6Ik¡‡¨o¨�ð'/JH±ÖÍêôvá œ§‘�¨áŽÛõ7cÍ7ѳ,‰Eç¾TWlÞ³òd²V)Íbù”.‘·ùs2-õ!Wé8s#å�sŒÄ´Ð5ó‹@úñþtÛFvôQO@þÛ]¾—†.}ƒÌQ·ÒÙÜ«ií.sð©½&ž¯Z�5þÑíK ø?Ë�1u\ÿAªûºŽ"Ê@‚gÅ�Áà!Ú|w÷œY îÃMœJÛDjW)]`ÔjD«¢3 Îu¤!´à0�ˆQ©ð%åµ#äÃ\Gedã>¢o���ìñ¬,”`�uŸÍìCTr“Ln{82Q"­ÄJ`½Ñ¬¢]ܧSª°Åéèy†[l`FÈZF>–Ÿ Ë[ªèL:× žg:¾Îùð5ö˜³myþYcY^`v0y½kÜR ÚL—.°wt؈lJ¦ï˜Ó[y™WO »àY|ÈgxfßCÖ“WºŸ¡¹× ¤u}‘YL‡}J<Ësh‚Hø6t¬UÙê�ðUeJ£’-Uç(íÿ ¼Î1ú·v G÷²¿ÃÉ…Ïå‡:}æ˜gûe m/~o»ê‰ÌâÜ/_=:à<àe4¸öÈú9TCïØÜæ<ªG?tp$ö¹Y›F^1œ9 :;6÷�€²@¿ÙæC ]µ(o÷ ¥ŽÆèpõÓ.}5êܶåKòÏ ë˜ZP:M›œ�œª”§uì2ƒžÑòÚ-üÑ!";�pN¢=nd�ÂO8ï¬Óî3\³2…xV)û„1:ïeMx΄`Í\mÇmÓ{¥±×HOõë³—9_ì¿€¼ö÷Ñ…‚¸f©2º¼„ží2¥™X_>«�3¯Ës?ø±m;7úc©„ ÎÇÌ‚pÂYpPgpÆaî|[®D`]›–öé´½·ãSÏ‘¾:N¸Ö•otæ2@«C6�DtzÔ&1Äz³ÿöÛl 1¿Ð&Ç5ÒÙ(}ùÁ9û} bì>8{ède&`t–8¥¯–(1ãž›v™p ýuŸÒ/ñôZ3ýX‚qûŽN§A/ìsôÝùsÍM¯ìáßf¿ÛG_ÜE‡5óã % ]{frÏŽò ËMp „mPÙA¾âšöåZÓž¢£3ívÙ3ÊHA—|C‘7H'¿÷êQ G�ž—™€%_ïbè£ I釠U?—‘ö^ÏO�µžŸV_÷+>Ô;ˆ‚_ ’ÈW‡�dCèñšjþ=_Tã¬U~Æ™’­w”(|À|Œ©¿Kêä×7ÒQÌÖžâЉsÈô”ç z[£mpñ‹tRhG^ Gæ-‹ÀŒ2gÔ‡¶ð¼7„z”³Ž>”šè� �Ê?¦²R±QÈ÷ÜS›Øn¡˜´�ILÔ:oQ"0À!  &Ù›&^eHƒM�ñ Õ ¢´0`¢+2>ˆ/ ¯¡N¥ Œ‚Q*Q[Tob�V‹:Õìý0rð\ÛЋü¤*"Y„žnUbÔÏh{ m¡ ŸáŒ�zù¿ÂçõÕû¡ÜÕC�èÍ»û(]x  D4öÏÒ£ã½OõÀ=@)Y[!jpKoõ}kß±÷PXŒ¶ßáû.  µ2ÛõîXÚ#µº)á‡G‰2 ÕKÝtÔýŒù>)´Ï0¶]pÔf:î*<í�·^‡¦ý¤¾þÏ÷IÒq/� ž=xL-ÏI­qÚn¦Ÿýô'¤ˆ'j`ñg?ÿ€üVºqc!”á‡Ôšl¾|ežÑJÿ°s˜¹} scÄ“'‹QÿrŽê?þÉ»iui…ºïÔ�'šì?üóðr¾2Gú|žõÙw¡Ýi¤Ã6¥ùŸÿèéÖÍÛ¡4ß¹{7­|Ÿ4÷» aLì½Ì½5êm½ÿÑÇ¡ÐÎ^šG îOïþ¿ïFýº ¢‚¼?ø¿>�‰Ÿ”ľ÷=Fj•b ÿ蟒êžÈüùË(Š•ô‹Ïî²<0xÓ'#ß{ÿƒPfõ²®c¼~ïCˆØbM=f<B¿ ”ýëðñÓÀѵ4�áUÅ÷ǀ·D˜ûeó�ÿŸËu¢ÏÇñá€e#œM¡ûƒÖÊêRˆ|?gÌ› J<ë]úQÇyÁµ½ƒLø“÷‰f}˜Ö} pó“;÷0ˆœ~ïAD»VÝ?ÿèæ¶‘|‚–OV7#‹Àëg}‹(gôU�$“8:<~ÊúÁH¥qÅõm _%®-bÌyHó½û÷Qº+ß;)=&=$ûiŒ5²´¼’ꓤˆ#*†œ±mgŒ:µl3@f5Ž1®0æCÖZ—ñµØ—®\‡.ì6xÁ‘Ò©]ÂÁ�;Œï-öE Pv•ôî®›)²+°%18Á“ž˜%nCíTG‰¦§.ðÆž{ X%åž)éhDZT‰ÚÃ!ÀtâmÓÒ·cŒ!mx™Ù8ªÃçÙç‡Gà(å`ŸvIU®³Çë³ Ïa †¡Æt—¦]ß$½¥ŒÓþíáhôx‰Ôíé:Ž<ÀqàŸßOßø&Ž­Ìb±F-xk@6g¤›¿Ÿ58a ?&ú`ñÉfŸ…ט&xšÂK0JÀ0‚±¯¦/MØ Ê~—{Ž0¬êõ¿„SÎ)49¹2<îÎ�¤t´%,ØŸÛ[û©„ÃÄøÂþΑöÔå £žò{ gS¥—Ysö Óþcj(Ã1•§‰#óHJªá×Ék�ÎÖ(Ù97Å,¼~U jûì¼ m­;�wÙOÀ_£WóD°L‡)SŒÊou6ê»/Ý£ô†Ïö®‘:ýœ&9Äi4Ó(ÆrãZÀy ¦®góõø-ÏÄÆAS$ ‚ÍRÆÐ“f­qqX9ÃìÍñGÿ*½úÚë´W‹4ñ¦6§Æ®¢Ô­óé¥y6Cé½zøJ)ëŠuåÚv•*iû¸’J�U"þÈ."¸BZwm‰ƒ€gi–õhô‘\€Ê8fµ¬Iv íÊU ;‚*QNâ`’÷îWÖ>ŸWIù{66‹|±ÂÙòVžB6 öãwñR‹B ÿfÌÐÑÌÈäš,§edµŽrè�ßO œhD�¿š©ìjK|H;øËz++Ô,_^Lôe|âRzëÍ7!Ô Nf×á÷ȼçœeôk}1=ĹÈZ³êQ�—¦2²k Þ©Ñ_×gÛ‰�6CQ w~ÄZ¹~‹1‡º:Šh’Ï”Å.ˆRœ†é†yÎY1�°9‰ìâüžbp3<š«Ò>§ÌÌÓxªÏå…ógWã> VÇÌjð¶~RÅr´òécMNIïÏ}§ð»“&ŠÔ‡0ÆW“4ŽŸóy©o(M¨¼¯l!ù} ¤†/²¸ÆÊ–Z2ƒ[V’`?‡s€§R¶íZœUþô¼UFÑ)×õ§¨à‚ó Qݱ”ùÝnCgÕ d”)æ5qŠìgüÞSàì+ÐV Ÿ#=8_Dî(#í#áÄÊ<½vùvºyé©ä‘kÐ=Œl%å{mx’¹]M;›O¡c?²7¥PNp†<ÜMåå4AÝç‰ A§Löät~}ýÍmp™ϱÁØDF«"sªé4ríêû�ïLüú[om=zó|§BuÏCÏØç}y­QÄç…+œ­ÇéÚu²õo¥Öúû8Xl�Q�µÀÒÑÐß/0ʘ̈́À‡®/AÃÊ ÀGÌem^í[‘»s8Û–ÛiêÊh*�²†nœºO‹Õ÷ž·—/èuÎËG'’rÍZÁr}–ë7á2þ‘èKç?A;A:e%3T 0çEøÂÈØtºvëfðF³˜Vû�`#Uc…2Ñ®W Tb#CÑ6@÷Ìü¥ì|P‰æ¥¼×'ÈÌŸF»Êò]'�óvºó1{¢:hªi�GùµNYZtϧþˆÏU§ro(¶)urÏAKeeö….¼î=ü”ö•ùbÁ©|äqÈDõ èÔÁ@�Z;ݧo¬ëŽ7Æ ó�ÜÿÌÈš)ø{¾¸³{ˆžfzmÀ`~,«¤¤oPG¦r°Žšq `¨YÕÂÒVþëÐáÒ‚Ê: �±ÏuæV~· jÆ�ª9�ò9²vÀ°� Þ@gë£måoÇîD œ�Ôy"âž'z–rCûý¼‰3u™³Ôñh‰û§yöy¿²{�6‘]4:X.¯­‡õÈ-å!øií&å‰HÛÏ}:Èú¬;8»Í}FæáýÌVĸtV—.®w¯Ñ �Åü£Cἤ�Ƶå‚<á|‰’gÜg—¥=â~Ö—|Ü÷RÓ3ÊÆýþ΂0²(tõ éäuq¾0æÌnÄÚe�1m~íáðÁ•môõDç‘as¿ÏqœÝÈv„>[(¦k£ÓìÅñXS‚Ø^WtOU}¼Y í›kúœ9°®{™ózšk£ÂŠtè‹3Þ½aÆAeÖ¼ú?ó{€î{&*tÐÇ=/tqÎN8oÏŸp++› `æ„\ž>r¦š¥ÐÔ÷êjFÀײsvÞ=ŒÓ²Ž#9d‚ÒÓ«à ö+Oœ¡ó[RÀÔóÊifÓ™PˆKÓc¬ös5@šûc¢£”Ð9{ ²‰Ù¢D€¬ÆÈ{þUJ:hXãžÒd£qÖZ´/¨®Í�=Á¢b 8FP¸A{¯zèQàËP@�×`…Ƨ8Äelq|™–z×JI�ÏÞ«G�ßD÷VfÌŨ€ dÍ!=a_ôWÆk0#à� èõî½^H ¸šU0Œþx–¾ ùŨ˜óE…0ß•Ç@IDAT�’yëÚ�ôÙèXúüɧðNUãƒ1¢p�ÝzÁª ËWOQnTŒƒËò�G”ìþÖsÜϱ„B&åѦÂB:zšŠ±w«Ü©tUä|rtƹ1Ò†ÿŒ8×À§qI�X½m£¾Ïo6égƒ{P¸T>TÄÎ;‡¡èù<–¨IÛ**CöeêÁ•Ї(6'PTŒUvªöyîÑØÇ£CÙ*�$P¤qO¡?”Q£…hSغo*=*æ!€ÜH«X§÷ûù9#„Q¡U™ìŒ©M4¤ŸI=ÊÞ3z¦TFÙ#º`|’äž „'Ç+aè˜Ê·wx6‘JÐv‚(Êþ©²‰ €ˆ–’ß_}‘ÌýôAãôÚâã¬MŒÖ¾ÿÙ/0yƒ’¸eë¦�tlVµ �TN�vFÓ½/>‹Hø¶ Ýú#ͪJðÓÇ#‘&Pg¿aj¿ïòýÆÎ¥G�ÒµÛ·Ó�Ï?ä]‚¯ö§­Ë—Â𻼼žjÐqo mèøðÁƒÎ.d«0o“ú{�ºë#¤H7Åò ól$üQ9O——CÉmbØDûâî½P6g/-C?ëίƺ4µ·éºï=xµ»oÞ¸ÁZ9¾—n\»�=B”2i«IÓf=°A€J££5ðÎ_ž‹´±Fl«ˆ š[�üÞ½{Ô«'¢ûòåH¿ï÷/¿üR¤c7EÿÒR–)@ú%úiîwÞ~ÇÍ•>ùø#ú7�^ûÆ«±'ÞýÉO#u÷UÚÓXiJm 4ž­‘Vtññ£H~ij1JX+úeœÍWp´0åù,׳ ÓéÇ_9»�‘¥Å½‹¤/ŸL³€À:,|¿tû&Î7‰˜ÞK_|ñEºŽ¶ØmoSû}÷»ß c×çŸß‹”n:NÀ€Ó—¾ó{o-¾÷½?M×o.¤wxö2ÀôŸþà½ôþá;Ì_>½ÿÓIé}€#Ð{5Ÿ>ÿ”4º”xû�7ƒ¿Ý½óÀ¼–Þ|ãÒ•o¦wßûÇ�ëéM¢í?Æ©â΃§é»¿ÿmæx=}€³BƼÈ@�aðóÏ>GñÀqäJ”#xððiY–èwÀ/>½“^}ã›Dko¤Ï>ù$öM›(ƒ!èed÷>D{D�–`º‹¤>7ÚÌLò¡‡wÎÒ</'ìG#ò�Û$B½¾_'â~ ÞWL#€(¦ƒ?`ŒËÌm•kê¬�,¶–cРÞ%ž.àËÊþ22 Ѭ‹öF;®‡×ŒñƒIŽè³ñaäœq�žðHX]!O$�ü›ý.6ª"œ•0rihl©­SRåMÈ4´7á‹ä­uêx:è�!s�nÁoð:3BDºC¾3ýÿ‰FEÓvã$‡¡RÃgq+EF 80*ïålàœ`£³_è;´Ó¸f¤G[œ%‘FX¶­q㑦j�—¯\»¼«:>žþññ‡iáÆmœeäÉ*ðY';8éb|Ñ ]‘½W�¿5 ¸öØgùâ`žùfjož>ŽÁ‘¬6,êîéN`€£WãŒhfpÖ¶]1~rdGAȆQHð.£D'/_%ã Ž>’æ®��5‚½Ro¤ù[oQzã12{ÿw¹È­y:€¼gf„KøÌ³ˆJö¸)B• o]»My�9ÎQÓ�ÿÍû{¡÷ÈëN‘ßÌ ²Ì9þäуt´ Íɬòê+¯qF[¶K– +œ›£á€óts)Ý]{œù-¿)‘} ^EN&“�d¹¾ÂMàc¥a¸:ðÁúFš®÷3Æ3Ë„áTJ:Ûˆˆ„‡E”:^Uº ™¢œDH!/žÑ‡ñYÒmC3 ÁôBöÉWÍF�Õ96�¯RÎhî>œ÷öéö#V‘éWÛ{õ´ÝÌã @½k� x¢‘áÊ(e@²�­zZ&îÆµkÈ€ 2¢�¡^Þ‡¬|ެ™GžÌÚ$¸~îÚT~o¶IÃr�hQKuQ�0êÚ:Ũ^GVUÞ=- ›ÃÜ�¿HC ß/!M N’ÁŠTÃdGrî#í1÷Ê¿kœY4Í›œ[ƒÔ}¦Íúm /³f<㵬1r(H‡�+²w…{�É ðÓ¥Çåo\y%]¿|] ÄTÏ#—Óêu÷!j¤ YäÇ”×Ë‹dvXNSÐ|GÀ¢Ñ–ÌiWôÛÙýëÚã.îs š�'‹ÔÓ¸�æ¯D ³+©“_[¸ó,¸8Š# `\€£PŸ)~®—}õbOík?I§È7²2 !·^z)õ½Œ£¢‘£žÿÏ䉋Þñ.þøšý† Î_š«#ëô¢eo�âTm½y�=³r¨ã*:è6òžë3ŸÇÁ…l"‚®Êe‘êŸßÕŽÀ.€ à³ÁV‚Á¦x.£3â0)Ð>5;Ï/r Av�CßÕ»3ÝOmä u‘uªþÅû蓮q"Y‘)ª-?Q' † hQ�‰5xF?�°Nìã<<‰“ŒÊFÁRZ ‡b×ørv‡ˆ]y—@ºé­Í²azyyŠ5�ìUõnAyÏk—›‘K�r½Ôÿ›�ÿ}¶g�嘔q¥£¥K|žõš-Cgú{ù“²­©Îc̶�3µcV7=¸í†=ƒ{•_Ê‚dÕC^œÖ‘%²Q°‡”%�Æg%ú¶FmÛÆ„K+KG ªógç‹ÑéY„¿2­À¸e­ TÑÉÚÌg(`¡ÓN„C›5 k^äù!߬sD™ŒÎ >�qÙok‹9 ʇì ïÓ!Ÿ1J~fš,Wã–;«át¡íƒèlîq_ZÎÃó#œup�spí8'\ÂZ!’ÝyUöF§䎿y†rw‰5æçU% ÐÚ¬wyM‘›¡OŸýc.]3Êê¾ticß–Ž øÊÔ,g+¼Ø5žã¬=gM×µað½ç?Lû%ÓXo‚ÕŽÛvÅÕ)Œ¶V¶éÇ�ÉŠ¿¥‘NÒ‚½.+×Bd>äç ‚Aè«GµA%kXSý„3Ñ€çQ~¿¹²B&Áµˆ² œþ�� Æ>³äJuÑÝ«ž¹9Úa _•>ø Ê"@»ˆgžÝ³þx¶i'ê¤#l¢£ê|¢Ž×Ïyj zÎt`mSÁ¤ÄºÌãèaô¿ëÛŒhö±Á­Í¦Ì\•¸ß5m_” ]ÙÚµ)"Õù^ÓYùº§Î)$î1^XO)Ï~j+cù./Ò–vHæ‡:æ(6-�5µÕ ±ž¤©ëL�½@�zûmÙEmp‚äÝ ºÎuì®�ß±—lOGIe3ÔhK‹´ü?üé‡]Ó è5i '©÷êQ G�ž‡2|Å…€uR¶XWD} ¾ _‰4:ÏÓPïšzøÒØ#�­ ƒBs�H;kÎj”b;ƾüÒ þ¹AHü€‡à’ –4¸PôÿŽ £×Íç @ ™? ×U„Aôx±ŽE¬ŸõÁû?Kòoþ]Z|ô‚/µÒ-Z3¥Å­C<„{|ñ‹}¢Ò�6J Ê Ó@×ðM¡ªôeQƒvô…-n5VªXeë8³°m\%YãÚQœ™÷1 ¢Š�k!˜»KUæÐhâ{•p•ÄøœûûŸçk¼ÐY@Þâ0îÑ×½´0Ò¦JmJ£Ý¦Î g# $—ªôÞý:Êê8›cŒaD4­7{§ 03‚²ÑÁƒ?‡5<à5h8°]Ó×oîe…Âb½_ÁyºÎs£Ç\“yå«°¨x T©„èÁlú<-ŸÝB!R±�(PÚשÀaŸQ«‹¡0ö6«ö›®A/þÇÜIC#½L g_ü²‚’–ÝëÜdƇ6îø¤¤i¸4öH•ÅP¾ðúwè>¿�&Bá…v^¯ç´slÔié2i)”&•:�¥Ì㤯̇+2GÔpk§…QÙhkìÑÛpRh3^Û/àu0N¹j_TÎ5Û'éê}*l±Ã9F)=ë/RÎ…W<íòaÐJ#ˆŠ¶ÉŬ½§×·†cÓ:÷Ò!¢¸NyLzŸ`ÌШ¡ñßµg Ò ‘º®óSèÑ(‡®­cwNM³fFS¼;ÛÕ~݆ö¦N´,€Y(Ç*Ö¦¡;2b�¾hpÑp¡s†‹@c•Fÿ&ŽFÕë-¯b*h)0YÅÑ$²'°NÊDr릢šX9Œ ñl­‹ÐÓˆq�(FnM“åàŒµj`é«—¹†#ßÙ{¦9´¶z“3Ãɳ~¼5ùt qnTž5Æ5h«F?Œ®"¬i»„�G¥ü€Ôïýì»qÒ’›¢o{‹ˆ}Öí †¿ó³\Dê×jE GÓdWxø˜ºvÔ ªÞ×!_?ÑVã̶Πœ÷X'¬‚â¿OmÏ~j¼ñÜ&)Ã¥I�ýfdÀ6ÀµÆ‡1R<MŸ ­‘Ьq� ¢AMa7ij5tZ`Qàyоå¼e-s¯eó]*O+ñBðMç–9ШâB45¡÷×1ò™Ù@CŸ‘ƒ~&?ež£NÛî}üÒ=Èe¤O'¢�ð}.§£cŒ�F1j(ò ¸ï]_\ Ít Ï—O…Q‡v‚ÿ3.£–¤±FS×¹Î?ž}ž›Y½È³#»Ç½Ïx?ëQÃ^\Çgñ›[ü܈G×Ÿëæ¥[·Ó&Ž󯽚þå¿ü#æ‰5A_‰ÆðUÇ ËuîùPe-º–Að͸ ÷¿~ p½†S¢¿1@®/~”Nv?„¯tÒ )ÌÇGÉÀh”²Î\¦m_~BÔ(@Q¾]dŒ+—&Å_�ǘz€‘sÕµ¼Eiˆ…k—ÓµW_â0ÖX °ÚžLCs¿—úŒb·\¶ C{î&ÙÚðÚ&eJVH×~e0š8ÎUÈ&b ;S©z¦z{­¬ì¯ó’‡ø çø¦òŒÙ8žâ0¶ÄÏ ©ÀaÜÐ|§…i2,ÀhøéÃ0é“—wVÒÇ�>%cÆbÈŠcÔá—u"þú˜ d¢j%“OÃx�T‘G¦h’*]g©âéaš&‹‘õ|u˜Ð<"ú¾Þ /¼xfj^5’Öw×(£C­dÒ:ïà¼ÖG—Û×^BNÒ© Bv I2¤ì3ßÇÐë€ 4—àÕ§èp{!# OŸ²0BXÅÌ7¤a‡É§îÛ!ëÈêê<Þ `¡ø¦óVùÉL1〠Êüǜ߂ÑòÏ:ÎVÊ/ø¼ò¥€;"S:ä|5‚´€Ž˜Ì¡ ‹2¥²?Rg¦²;¼5JÖƒ!Ú�'s³¼÷ÊÌBº<}9=\y�®>ˆ³A€Á³QhQ^|Jté!²ŠNeÎÎ6™bˆ”µ‰Ñ=Ä ù\צüÆ9}1ÃO´ñì=ãL,ãPòÑè·¦¯0Gè"žM,¢úƒÆÿœ\ëì—g»)²Ÿ<º‹|W¦ôPVÿy‚”êf/òu‘_®¥ß¼³çmœßq¾d C,Ägÿ³?Fõµ'/P6$u½g¡Ú’OPnäá·ís¿âRûL»Fãæºdh/¦ÎÎÏÓúç–Î&ÒÌÕkiÿé=èpBI¥“42w-xÏîæZ*"_Â<Ò㻋icéòdp}.ÊFôŸ1ÿ6©0„LÇ:\À©ôêßO'ùëð—Ö�cuìê.žëþ¤îþ¿:÷î#eº#xˆDࣘkþ�üZ!bÕ,'ˆ=y²˜ºì%,Ž‘Ÿþ—ÿõÿHý^£Ô•ÿæïÿÃ4¿Ÿ ôÏ0z�r•r©ÎÞêDÊ£îÑmœ™•ÙA¦®rÿõÛ·) ”›AfCÞÁaØ]hÓ?Ÿ²t~Ì#[olo¤ïýŸÿ{úÖK/¥o÷µ4‚\>BÖ§¥{Z¤èÏ!Ãç9?B…`4êÃÊ›F%›ÅÇçŽL^ ¹lóéC@uJMÀW•çò8ÐŽ¶¡2(à¨Ä°‚vê§Fb//¯¤C"_•‡ÈP5h©£‘r¯ò¢4•gšÒ^ÝÇZÐF|+ïš!!úÂ8�‚78D]IàÒ„l™Eõ"w¢Ÿ÷SzÈÌtföx°²“þõÿýïÓ$`£:Ô1v1#’MõŽœz{É—ý¨¢«ñ˜˜ƒ©‰Qþ†Ô-ƒÄy_U&ÖÙß>¸‡'9Ï'¹nh°ÎÚUOt7͸ú¥Áò kêð¡úëò:Ìï’ Ž6|fк0”àeòKù˜?î19†×©›~çÛo¦?ø{‚µ»Ýê­–5Rñ°\¬üÆ l®#×£¶u8uK�‡R]gý诌šs˜…ãzãw¾¹ºº’~ø£“&œLRò^úüŠ5NGÞíìŸ: ‹…kÐ+´»°Æß~ëmxvÞ2Àù��C”PŽ+ÒÑs¿e]>þèCt.ö í{¦hQ¿¨Â+Õ 2€œóŒç” ©%»Ìüç9"”2®›2^%x­Ž‹ÚÆ8“Õa�( 2„ƒõçëé¿ûoÿ⯢“ó92‰6õ½ AÓ³3””Ãù¶<se qõ S¶ˆÐïC§<#ƒ£g¨ze”©AŸÐJ'—à…ôQÛO[‚º¤NÀG1xöØW¾æ¬—–ê—d¬c½¨‹5лÚOé-�¨Ô‘OVWž„|àZ–F¦‡] ^NÚI´QDnpôaÏ›}€÷&g=ÛúP¦‹½‘e�À&„¬Ñ¤MÞ´ ¬¹üÊÒÓtíæmÖ‡?[`c÷^= ô(УÀóPÀÃЗ‡�¤‡XAD%A†ª�Á—¾ë½ž“Ò­G±ç$Ö×ø²‹u’)|î·Øq¬D.„Šyß)КÒJ!O:<>¿ÆkáE:G Š‘Ê‹JÆ/y£«=€U–z¹õÍ·¾ÍßÝô?ÿ�Ÿ$ H³�lôLBûöz…b!�8’Ü8²âÅéÅgÔ:ÀBq¶~[…Yod�žHïîÅh†¨³QÒ⌣U#Q|˜†¤F¯�©ÑFeB_ñ[ÐÛ}ÊŸè¯âÊ(˜Ïg«< úKðÈ—Ù&Š\ïµ7�0pJ�à˜©Q'9‡õô6MšJ¸`Ñq\ãø5B« ‹^™ºr= t4ÀP”bÆ.Ð¥q¦x @ÐYßWšê\F”7úDRñÞF�0Ú§ˆb¦«Q¶ )¨êó4X¯JºÂ½SSDQšLq§Ü 3/…˜¡5 í«¤«Ød©PÓº‚w¬Úv¬öbRK¹Â˜¹”‰ˆÏŒ26U~½„{ÇÉ©žÅ¨Ý쓵¼Œð7š_ƒä Úésίh™¶TÈWÈ<Ò�ø&<¨K´¾8ãîFŒÐB£€©ì4€Ø_3˜.̹tÞÍ Ç}77Àäª9OôÃÈzy›Î1ÎΠкp}/ñ ¢,ŒÈߨ¡À§îÞ§€öIæéâ*Дb^ô¨×ÛÝyϲ, Ò)•Më7;GFÇr7ýUI&]�´vz‘è°Ü$uë1‚s;Qö{¾Œ�ôfÅþ:éÖ©Y:9L»îÑnå¹Öµ×ñb‡ˆ°ÓhÅZÓû¿ÑBéÆë£ Œ¾A#¶K‡õíß.ä"iVÏ0Tt1Lélq‚Qå”~²>Èz êÃV)‡AÃA©4ÍzËÎ�‰ïµ)Èxx?®"5¾�ðŒÌyÁºÑF. ÔŸSS“e›Î™³ÏÐÖ_£O±fXÏÒ·Z ¨wvï¥Aöý7gX—ÀûÚëixŒ±3>r½§îávº5†×¼<‡g‘X`åžõÜi“¡ÃÙÄ”û ¬>gŒÓ3(õìÙ“ÝÇ ñöuª¬yC·‘f§4:1GÝM"ÂSºã€æ}‡©4Š£ÁHƒ•Qw8ä ÂÛÒãa�Ñþ<ч¦4"Ï5—#¨VùÇ Ás�0Œ®“×ÈãZ²Îá©Æ0ÇJ”�Ž n˜Àh#O»]Ç4ðø…†–#Ÿ¹Þ÷ÈáWÏØ·F¤ F#êìcÃ?—ÄOS ›ÏŒÖvËr¿N ]èSbþŒ�‘ǹ§4šèàr/Ò dä Qâ¼¥ ïg ò xŒmeÎM�ÄÁX4ðhŒŒßq$�oBÛ'E>O‰=`[î+yhŒ“½åsä´ÌÜ] ÚM‘}¡=w)Wàko‡²:N1Ö:iö5LúÞTûA Ö³Ïï0o*߈Pd,¦*½43�#òd5oߺåŒÀ¬•u£È^eÖùN1¿Ì]¥Íg_ö~õ(ðSÀ½êòrŸ{.»n5€^ºz-휯¥;?û2µl¥›¯¿�®_ ž°¿ºœî~ògÚqÑÁG?£–º‚§;[ìx3¼Ã”áG{[”C™O—_º ¯«§]@Ù @�Ñ)R¹h0œˆÿŽº�7]±@õ! ¶üÁò0Ö^8 ç™g·„F0¹çœ��ù¤5‰:~ mJý¨#wêx4Lyš‚ý…÷+óÊïò8g· Üp]Q¨‹Œ{ÖA>æ0háŒÑ$’sÇ#à‡„;-ൔ9W:<£ˆìÔæŒn9>xºg™un•Í<òèF®Í,ªŸC§ƒ´�ªÈkFí™N¹ O/2çam@”~øp ºöãl׼ϰ48›*¬q¦þ=0FÄìåƒL[Œ0²q‡}4Ø}€ÑÏYX*ž¥Ç–©i¦Wço’Ý¿çç›)q3YQ Ò5°Àš›�›C^fky‘tir’hNh <éÞ ÆÍˈéö¯}ùµ€šÎ¦k×Á1ÛýüâKÁ.Ï|ÁAå£:•¯\‹^£líþ�øõÏ}öå¶XÿÈ>Åt˜úN7ÒþÆeõT›¨GF4ÿÑgAÇgàzÚzt?­,>HWßüVšº4ºKº Ìío¦�&:i‡§çÒáÎaÚ£l•àËÐ¥×_˜Kzª<^ ='ä�Þ+s~_!±ÞÚDQ«3Ed.ó,ÿÏœ‘¡Ù/û{;8&7YÛ8Ü¢¿m®­#KµÓÎDU2Y¸~Ê8³TйLk.¯4«—ëk÷@¹šÈtœM}wáUêŠSd_È)²žLÇ?ˆNªnvŒN¯^›kÒ�pFf­àpÝôÐD¿02Øo�ÔêÐdȪ¦b>ôtŽhfÌ€k™�£‹ìæÞ\5½»zR… [aO"z†N¥Œß\<…OÕ"•9ÎË0!eN´-d¶IÊb XèºW¯PÔÙ¸Í}òy»òŸû£?uÕùÞýйØOÇÇÈ‚8¼p*§â!¦"@¨(� ítÞÞ%ÛÓæ1<@Y]A1\¬÷ �þñ˜àßfP?ã\‡¿Û·3ö…¡êêÃŽi›yÀ6 ;ê9-߯ ìBèÀë´%˜1ÏÏ•‰•Ïå–5R‡Ž¬ŽÓÆý~'B®æoù­ÏTÝÅ�GÇK'|Ï{ù<É\sæ t27-2Ž�uÅŒyC¬©2™QäàÚúr¤•ç:Ï4VH&¯ó¶à3ÉuÎ! Îyû€«}pu÷¾ï;‘*Y™*ô'žÑjèPÁ3�hZx¶«§ «›i›Ð9@=Ëlös'qç¹Û%C :ÜÅY ]Ö–$h�å:rvlǹ/Ä<û\qh2°îë§8b,EFŠÛW§ÉbFËu0VÖ¢ý9äæ¡H{ÒÆ²Œ;Û›aÖA N&å1�´ÃByBx(Øs8gxîKãmlû8žXRÍ}èüáü�O »’y}Nç�Øt6Èßùü3ê§Í…×P,oïû2§ýé½zèQàëMY†âõg§³´±ñY�™|é…Ñc¿_šd_ËÐB` £wæå*løbâÊ4 f¾ôêE=�( Á,ëþ ²õöN�ç…úŸ‚6öÖ¨›TÑS–Ñe«À3G�)¬NÃ8x�ˆ½…ë7ÒÎÚÂ4)™PJM%h�+ ÃîÁo…m% 4 6à')·lÝèX£zêöUü­¬/:= 5(ئ‘ã}ýzÞrýå(Q(éÜ×§‡6m{>ª°ðËúDÕžc ŒHiY;×aDqœÖ(e°‡ ¯Õ�KPˆð¤VI¥¶­RHGB)2¥U&ÿgÚBŽhPÇ"èc°Ï÷AþÓ°ÛífѺÄm̺Ë8®G[*ÙzÅ \©$ ›r9Rº[SºÚ»€¦u,%B‰Tì«í �ÃÈýŒ•1Ç8£ß\O_‹ùU® íöÙœ ¤¢ Ûû•7†¦²«±×¨Çf´@¤ÍT¹„O£t6BY凇…‚)�Œþq¿}7º¾Jm.OqŒÊ�¹†>*û®?ó{çÓçÉY™Næ$3®m­×½kAƒŽ†×Ô.(§Š¾éôCq¥\ÝtRP±ô/•=Ú¥ß-�ìÔÿŠÔjÏ5Î�¼þ#²J´Ng§›e·v©X‘¬+æ)¼Ù¹Þšy- ËÎŽ�³ý¬*‹‚ŸJJŒOEѬlO‰hˆëø»ãú‚NF�9‡æt°X’6èoSÇ€ÔSúÛ\ÖYÁ§DvæŽF1HBÛá×VŽë¹‹ï0Rh!á9�ŠdíÚ7�‚�F?ãÁÂ%¦‡éÞLÝç`Œ>Žt®1Z·Æ<Ö¶)\®3€ ôæg>0À™iB#@‘(m#t+ÏRµî4èƒi3è°â”uJs (bݘòm‹tݦü ð˜¿uˆ g ö 3®q­ûþú˜[½õPŒ7²_`¨`¼p¿š Î5åÚq}žÓŽ‘÷ŽYïzù‡ŽR0Ö$.ó¹sšcU �‚²u÷ŸÀ†´p-ÔÙÀ[·Tg×Çá!iJÙÌÚ\˜c�ÜÇX5çœp½@µQ_®%Ç'][žú¬[Ì:Ñû>ö=sçñ3×§2Î/òSHR{Tç%æX£�F4y´´�>F/„a ‚é`äºv-ºV½Î“\Þ. Î6ôKv'yuègýÊ“!Ÿdüϵ«'ö:Ÿédä^q-YßPÞ¤¡ß—Æ_##­ágZAK}˜±äöí—Ò�O—žFMFÛÓÃC^sKŸ Œ@ÑÀ¨ánîò•ˆÕðæw”‡ˆ¨!xŒ\#R#òÀ+Ö>ý—Fò É®{™\÷÷s}�¶O0¶­¯m¥Ës7¡C�ÚïãQ£Ø±kd”ç˜Â˜ˆ<×áÁùÒá©÷êQà·F÷¨»�õçY–âà×"âƒéðØDêçZúÅ�Ò9@Ä«o¿Áž úèˆ4©3�`«�Fó˜s«sN¤ìðHZ¼÷uŠiþÆuÎÐBª� ¥GOVÓÚƒ_¤S"š;/ÿ~ªÅ˜Š @tëgÃ;á+¿Ë—gx8»ÀS†‰èÞ¦üÉ2m£D|OSÒC~£ZùMǤÑ�Ê!¬ý†ŽK]ÿ“ïÈßœ·q4 Z'-ëîö6‘æSiCu™GÙi‚gVˆ×`¯#œí|±|?½{çý0öÖàƒQçðüX¹¢ C>@®–1 ˜w9ÿý±–ùgƒ5ÈgGÒ8u¡WÖ—�Gq€Û?ÞÅ MÚdþZ€_Ý}�côœôúÔI†µû1úAW) †Ãåuž)ûÈáG”ßÙÝßøLƒ,£#Ó Ÿµ>Ai’’:lÑ‘ÙGg:Òž71†7q¯‘‘…L.û�´µ¹Ž½P‡¨H|ìŽq¾`,-3'A³`˜enJÈÿÃsW8k8á�içÍ#dø>r÷بÎw¥´¿rÄsZéjx«Ù¥ßfáœFÞ>�Rd7Ê-îì§½• ê0ãh¡Låz6âé“é]«URÝSZêc¼`•`¯ àøÐTü\›½ (×"3ÀGГ¨[Î `›T$åyŸr3ýi5öùE6š¥‡õ�Ò;7ß4Èœ#J€E™ a�ÑŒ” ›š‹32Ÿpú6)1±·AmR•³>GøqÜáXì~æ'ι¿´.¹5ÖªúŠ?Ê.‚'žÑß¹PýÜ~øÓa�îñ£ãÄÀ„ý‘&qý_jû¹ÞršòŽöÑþJÚX|@*€Ã¤“õ¢�É/UqîÈ�¦›ßúÇÔ—_MõsÒ†—ÆÓîÊt'…7ëDy0ÀPdØc2aÐeÖi“ó'dÚýõíÔ<Øb“~‡ÅóæqÚ!ÛA—=\ºDI#`cS>W×_¨‹˜ׇz®N4ê+:MØû‚X €^u.4õ-u«sdè•ÕMÔdFÖŒéÛ+–2@?2«Ò! ¢Öyœnw÷Ð!Ùê521©7ê0Ë‚GÃr :ÈàðƒÓóŽF\Or>Áºw@YxJ€Yô¥~°KÔ:m¨w0 :°+c©Ááqø‰¥'"½?szÎþ$gd½ð3³}ÅÆÀ{Õ ÍdåFRŽÖÑG>¡ÜWÜtÇ»/ù“wpjÖ¤{=�ð¡ÑÛ�–AR3ŠºXn–çpÄd˜ê†%œ¯”•]§ À}Ÿ£#¦YɆpÀ¯’f:²<Èß�W+ðò‹À‘6úYþ¤œn°[/ú Ì¬Ü­Œ¨ž©Îßm”���þBgŽŒÀô\œoËû ™NžÙ‚ØöƒŒY9X Óm° û›]Äý/]ÔæÔÛuR*”;id”€dn�+B÷—®¼·òŸ3R3cŒ�»ì'|2á ¤£ƒKÁõ m•w•“�ïíÂëº8'Y®¢M #àëœ)f:èT§ŒÈ|ôºÓöq¬ßSËÆ°f‹Ì·5±÷9KÍì44:…ÃöŽÃ]Î(œ¨uF2 H}°ÛuõÐCÎïSøµ™,£62:k;tžs†3–ûÂõ–óÌç®2JDUãhQ€ŽUÎÁcœu€Ø¢ÔÝdŒÐ–3K=Îòî%38œáx&ßO¹3°ˆ : ó­m"°fÔÏxûÓŒh–Kk±æÌø3ß3c›çBœûÜëÙØaMÙ'E÷µNy¶]€îä´ÐCi×6£®9g¨öµ°•±ÎpF;ï’¢ŸytNÔ�GØÛÜŠã ö2æÑL{®íöÖ3×!ÏHñ&¼B•é�óN� >‚~n?�ÙÇf‘(sv—Ù‡–%(Õ<Ñ¡p\;FWWÏtb, Úez3Ïå>íZÚε›@cǦ.¬ƒ|…~¨û… €ÌãgMi4#Ìg¹g³Îþ:|X›ý€’söodˆµ� h‡r|Ú jœ¡ìc³ uÏpzxÿ~zûÛß!å =LÊh’Þ«G�zx^ Ȭ4†)0Yërz,˜ýóÞß»î¯RÀCB¦÷êQà7Q@¡Y#Ž‚�F÷ˆ²b/"†"@ )¡½P¯Ÿb¼¦¶R‰øè£�Óµs5ª)ô½xc~¡&ðKÆ)-¨ñæ�z¯Èÿ1Å®n§½ˆâ­PÞfL�úÑ�ß§¶®iMï¯1LAY%?Ò9£\´#M5æšLüÑ¥Ð6M) çZ2QlTý,Ò¶ñÛhBAy#�4.Ò@|¯Â2Kº,U¿µÕÕ0 fŠ%;“öTÆÑ?Cù eÚ>„B¢Á�±ð|AA�?u�\ßiR!–yˆán¿ˆÚ&ê×û­éJ3—©t†b ÝãÖÐúä¡ö‡r¤q1Œ·ŒÂñe^Ã(®Ü߇q²‚¢£¢%ð£Î¦�¸�ä¢ d œ`�_¨<óKeY~fk\§~ÇßÞï£ì«Êeâ ¼³- ,ÇÖÓ¤Ú§‰ ©´fÔôëY´½ÏVóãa�éI› é °üÔëTÈ­Û¦'´5Á A* ü3¶z[� "J%Ê¢à£ßçY£F& A°)€+ˆª‚l¿í}�‰çªŒÕÛuœ\§§µN$lË´†‚ï´PéËcƒî¹Î¡äýl‡AÿhÅØGû‡}Éèdd¹ a¶¦Ù”Óx>4�&]úÆã㚘�g}ŒTë<§L{ÎcG¸Çg˜Ú¬í«è‰��— atÒÃù³Ðð½»»e<7�ˆsnâ æÅ¹÷÷wKfø³Ï.�[º:OÙ ‚ómò�£¢ÉØÖüÏô:š�÷yœ¬;«|äÚ�è;.tœ9Œð:ã¿t£ñÒ€%²noD¿@›kÓ'¹F¥KQzQûHá¼F-ÞÍ´N§< ÕA÷~­në¬3)ñ ž÷µÒDm8-ín¦9œI®‘:¾ËúPöeÄc‹û6(# 3É÷‚&Ö]ö5 „dg¼o®¨['µBÌ|>íÕ;�?º‚+IÝ\‡o3h@,öÒizB†Ë„Ñ-RÓãÈ�|¦>>€¼`¶ N�YÄ·sÌ@˜t±Ð�2g–ÈB@ûÚÃÜóžÝC8 -¥­-Ö {Ž/½êxN;#” ãײÙà††Óì¥KaSòòýmöè.ò¢�œÿð‹Ô‡C4UOªà ¡îe6t3‹µp °�ú=ͳ/J�á1ñùRÚ±Á‡¤9ç¾üʬ :¬HÒO&uðÈÈÓ�#'çô` ›4ÛØ:H+›;16SÌï �OâˆCÆÈØZi~&¥ÙqÖýS^È¡—evƒ.gídÊïè9ùô ›bþY‡ìVïÕ£@�= |I À¼¢Ã@zÁDø,¤Þ/ÙÔ×ùò Ò}�iÐûš™è •)u* ˆ[œÛ@î·ôu¡Ü ~Q»O}¾§KK! )¬ö^/˜Rgµ­×,o°©ýÊK^°JÑ @�F«[·o¥ÿï¸Qê&1^©€m ü©Y¯*‡Æ¦ªŽ!0Ç=îÁp›ïGØVî¨ÖkXc ºeÆ% ‚BŽ_-$îó3ÿùý!© ŒÜd´ýP`èÖܵè>f©•?øÀùÑ`acq1ÔÆŽÒÄ7ÜJTbDYQêàá®U@R`û…%;Cè m ©h¨ É+¢Ÿ´[Æqó9FûÞgŽAE_#‚ o6^?Ìq*–ÑU9ßñ=TöLÞžñL�[�ié†n¸Ÿ|�í)+¨|£ÑÆw6*ÈUÆ!!‹xÉú¢a"²@c�Ö^á¸Àü_«˼b¸Âú7£¿ËüL…/i‘µgDc‡V­“µŒ¹Î¨aYçš…t¹ðäŸp|¬ _1Æ!è¨BnDŒŠ Ï•G•H.-/®µ!ûaß4æF;Ð Úa¦³§ùì¹\ŽQôÍÏ" }Cs#­œ?éâ÷%ç‰>øŠ_|ió>Ò" Ö:;‘,Zp+tö9>›5E?i-ä¶lýfï½NÐ49¡)“Ÿ§=é?aÊ€¶üëº~ÝÐF W:AáËÕY—}Ƙgà¬×B£sÇŸmRç¬#†ßGßù†ŒéáÍ9÷ÑyÚö¾œ–>oš&‘}þ>†dßkè¬dJ£ßöÏÈh0rnÉhÏñ=-»œû0b�ì{‰„;�ìÔ°ad±cÂÐã†à3Ë8#™Yýшµ­ÝnÃhÆ<ØžQU‘z�>ú<',FÁ\:§KC£±„Ø×Aι*�P &=QçÒDã‹ lìmÚÛÚ$ …00ØužéýÌM–iç F�çŒ*Z²Ï“Ïn‘rϾzÖr% `0r^c ùœÌb·Ý£À3tp:‡¦F:¶'wœ·l�ãóZ�üÎMœåüÖI haBŽ¡ï®F�+°FËÜc>_~âº�ï髾LîñN£øŒ¶]Á;1ÊY*ÁùÓpjd�g‚à“IÊHjÊó½{smù)4gÞø¡gaêg_K‹˜{ûKÛ>ß.>}ºôÕ@¦�¥F´E¬žcŸåöFôä1‚bµ†Qúf·�¦:Ê[œ3kû�Œb˜f/9¯¯¾þfºv}!äû'˜Ù' /XNÐËynclÒ‰ »Oc�œÞ«G�¯˜®+×—üôàá`í~:ÙyDZíÁt°þ MÝøoø’˜;“^·–vžŽ­t|JôX  º ø048‡xÔ(iÂCé õX‰¾?c|H8Œ‹”´‚7€S˜óÑ”8牸7U˺€ `„'Œõ‰K€åžwUêÎ+‹ !„8ð7A$ý0 w�RPË-hDt]þ_îâDEy�"èy0uŠIM6œ"@žµ�ûx~ ð®<:gM:ΌϦ—o’¢ �µáÙ£ìå>d±d2 òj›{WW‘-´(–ji|€ý¦.À\™zÚój@B¹Rp階�1B§ebl=§ã¿X—ÊÕ¦&e|‹À˜)€L^>ûbøw8ÉqÎ��7šFâüyƒµ’uÔ«žÿåÑ­\¢ Ömmx®nŽ’A§ÈøC¬ÿæÔšÖ:AŸ"gvê+ÈŒËì1Òà—ë'dä÷Ad¦Ó3ÀRÎqÁ›ÎCnÃSÕHãÞ¥Á ÖÞûõ�;”Ÿx'M½v�iGq0e� º�ûÚ½ØÓÐ1Ï^7ʶ…Î9û¶@9 ep�ýL«,ˆ.pº¿†ã N"^«ƒG™ÔÍý€bPP�uÇO8Rõ+_꜒E|�q�÷»[;´�œíÍ%Oóyè{ÊzdÐÁT^É!ƒë4² ¯™¦îøð�¼Ð2Dl£3†óûÀrKføA ž”Cf·ÝÙƒflÒÅHî&NêSFÓž7Ș¡ö¤N†Ó"cÝ7Ó1¸CùÏC�üÏáU:ñs¯@¢À QÛCœ�%œ”¹p¬nŠÔÊ•ê‹î:ƾ9#«©È‰:6}»ŽdŒ.�À7"â< ÚÒ~ÖöÒ™”ûsµÑôÎ ·O—æ‘R[Ù=€`îÑ)¸?3�¾2°íLR L]7»ÍÞ`Ýöˆ‚¶]ö]�s)†�]u^›„ÏZ¦¤6h)&ÊTÀc¥·2°%/áå=œ#®«ŽÍâ”nšp²v� tžž±ŸÑÙûá»�ËŸ ?Óþ!¥‰&/”)¡äȘó�sgÈ$%ö "ØÚX‡¿gv€ëP0ù~¿ŽC”öµ—@ôΤ2I“ð®ÈlE–€�TØC5Ös2N&˘)Àçvá+yÖ¥‘ÜÚqÊð?Tå\ÜZ¹œ4úÒF½—y+àÌn_ëœ+mœ%ä�òNÏä2kÖ²b- I]ø¼Î:¢�´lY¶�]Jqi“‚ç5paAäÃÇècd" }†ëCrpô­}†éê­¥Ùþú[i†R“Ó3ÌÕ¼Ôס«à¿ôuî*èýê fb�ŽQ>Žyîð¼Sœ•/ÐÎŒv¬a ³]žiã|Äg(äÌGŒ+žÈõ|tc€ý(¨‚ò‚Ó*�ô’vÀF)?Hg zqvI`ÕÞ«lñJ ^Ü|MÏðe€ª4÷Y^ç³lßþZCÚÄ(AL4ödi¤yžÆa@Åhé[p˜c®Œ1éYß¦æš ‡"©q5ÚÄ[C1C@ñÖ¸ÁçLX<ƒ…iùÛ2à ×p¡ÚvÊvìOÐNÂ9>ŸIŸ]�ÀÜm#”`ŸáµÎ‰s”ÝÉ'Ì_FnÆMÛ:a¨ß;O®_¨Hß & ÒA>×ìlÛ­ìÀàªrœJ©E@IDATô½×97s‚ëÓyñ3•súJ;ö+¢�¥8ýÉhän -[”8~Ç}*¿Ž;"{íÿ|ŽÏ 'Þõs�Æ¡lî ÙgîŸ� mƒ\•�‹ÕFï]sDq»·øN#�QÇ4 í™Wž¯Ò.hjêR.Œ :úã³¼Öùа`ï‹;Ñ?»/ûï^½xö³}œ‹ 9kÂzÜ1FÇáÜq½«’·AgAaçÃ=j:Aé“}-�Vç#æC„ôä%oòZ³#h܇ú\&ºFòÚ_ûV�ùaÜΉ-I Á@�åmÀìZÈè+"úI¿x–{Bƒƒi ]…gsqŠ1Á9 þȽöS:û,#ç3¸™ÁúdgŒwA,Ö9÷¹Æ¤¯<)ö*}íº¡ŸÍ'Â'­£qP^os¼ç�sìw¾w¬ö-ÀwÚ‰…ÎãcíÚ7žk­uì“1¯6›Hâ;£ãsè)ò:køiìqO9öî9TN"ãýqM9;Ô‘•ƒç @ðQè^}õf\ëÜ�OŒ§§‹OàÃÔ@§Í¨ß( p¤0BÑH"ç<àR`ÃðÊ3›|'È1cfúµ‡Amš´ð7_~•¾b¤#ºcï1÷SeáÒÕß�${K‡žÑF:ö^= |Õp…¹,áP:ßKõõŸ¥ÖÊgiðÚÍ46s9•ÆobiÇ™iCÏù ¹—3ÒŒNÍýÕ´v÷©Ü·A “‰XûÇÈÍã-R‚_F÷|<;ÆÙG‰ÆCð Îóî kCݤ“FG‰DuŒl;E‡Q €¼:˜Btr\™'¿b•õ7pÚ¨¦"ëËŒø� ó°¾HyÏ™ýu}9}:ùµ¶— #ií‰èÕùb€ : [¦)�kšwåÕ&)ÚMs=>D5NŠƒÔ$ÆéÁúÑ;ìcÓŒ«'šÂ¹…®´ZÀéê$ÖcÇê7S¢È2Yò‘sù$k¶@éâ�RGýðö�ëàG¢ýÝýtëå,ã€ûQ>âÚlR6Â…l™5#_�HϺžÀ׌Î.ÕÆ�OɦÁóý•]w¶ÖôS¦=Áæ`}ƒ½¢Àû)3öÜiaPÿi»¿�ѵ4pFR_9¥ d»ò4ì+X-Y£ø¾-XÈ Šðu/KvíQê$ÊX‡-Àù)Êϱ[È�Ü‹žÊ΂ýÒ!½áÑf>:$K„<¬‚ÃÂÉ  ¯²-}-yqF©¯š­Hº»?™‹áÊû�:ьòMê“FM«Çù<Þ0÷¸ŠŸê׈@/¢Ó*áË�áÛ�ÁgÊ×– Ó©€CœñEZø©™©x¦²¬u¾÷­ûÙo¥ Òê ãhÁf;`ì9é„Í#xkÎóQ°ÿ§»@ô æ�:ÚgŽ>ÚµŒ-a�hâÕµõDµ¹Ð,iä|:vU ùžú—²¸ó%P›ËÅÙ-Ïñl5S›™F Ùô×éwš–üi�k™»ý'!w‡þM»Ò7››Œwfe5tb�°&tª±œ`#í/³– edj�§{æXã^Ž«šúkƒ 祚nãäF3|Ë‹ÿù[Óì|ʦޯqÿ;oϧ[W,¡“E²».s8 •FB>‘ëÄPÔ©^'Êôa‹ˆr¬çÓ2`:úªá ¢£¹gk Þ©\#F¬^£Ó¶ô³/eö„™x”itž�FŽ[Ag8˰@ug ÞJ)²˜1Nðß}l¶uû6g²NN‘Ö�‰Ê£ëqŽŸ�£‘½ÈsÝiÙ—k´ÂÏ)|\'d�Ê¥µNpá¤íD»×É ã¸u|ÈÊ’Q…9XZ¡l}›AÞ8Ãy“’B�ž< ;Õø¥k8$š¦›vÖÒƒÅÍÈtQ)m}æçç£Ï»èyùq<±d>÷Y¦¹ÊEB Û>Oc°Jl–ÎZs?ËcÜËŒ¢<ƒ¿ù�¾Ò>†Cþ‚¦xû0t ¦ú4jIzi`Œ­Š1FZº·m"j¶=±õ7bHOõlt�¶œ£qUö4D!ÓW~£\¡7ò·J(ôÂè¢ãû‡y€^ÿ‚•ͺ|“>òì0vC8ç*HƒrvJÄ‘†ÿÖ8ig}KЕcøÇèýàzz$ ×h”´o¶ÏvÞœg>Î#h‹{�Œ,¥ó1¯FË×t¨�—«�3Ôh#sèàs訣F¬æ,€W‡ î·~\s÷1Îx€ôbì>Ëë²Hf 0ÏÆÅØ|YG,2 pŸ¿èc½�ᕟ £’÷›ž”(ú¨’¦7ÓOAÙ'kÅ=ä{ûç|ÉŸ]vÌuÙÅP4BÁÕ Ý=÷óÜH}î¼ð/›W×.÷ÆcžuymsMôž}h h÷ŠëÏß±¦˜»Ø—ñü¸‰å¨K kE‚ð_?kÒTŽÎq8p™+Îv3àš±/¤�ô¦UÕ(eŸ4…Ãã÷÷¬7 4È»xû„>0gÒÁ¾8¾H�§E—qñ CD‡ó[%ßÝ 3ô�™<ÓþÐ[h™•¢pÚÎáIΉà�5ƳÏsBå�ɳ»xO4h Ô:VÈà€+û ,ë Œó´r±† Fé¹GXï‚êŽÍW¤‡šyÖC?ŸÇø‰Ò‹ïy† �e�¯#å3Ö„¥l!GüZF˜#ÆåÒÕ;Îù"‹:g¼|Ñ'Ÿá�t•6¶(”~Á†yFô3:×kâÔ6]ÓÔ]ÌÃWœCéi]{v�ƒŸÃc¤ 5{‰ÏêоëÝl Áß|ŸI##^ûÆëQ¿ï'ïþ8ÍÌ�J}c«Q>FE]̉T6{Š� >oŠAÖåüôœ³Àˆ¬µ�Ñð÷{ï¥9RææšJ|föç\ƒ ¿¥—뉮d¿¡A~Ð{õ(ðÛ ëM@²ïlPð)2gzåeÒ´ÎÕY”ý<�o¤¾©Yö+^`Êññé‰t¾ÑN»ëÈr¬Ý‘Id+ øCÈiöH0RuˈSþ–ÇzŠüÑ%òy5ÝýàhDœ’Jù`õIü(寿Ày‰½ì^�ü-®ûgûn�_yË39øn콬Ù6ÄX Ïõœ¼8Ã.¦%øûÚúÜ›››ÆË”p ý,@ïq�h넳»£�ªÀ'†âȘmT÷Â�WÒ¥ùx Ffx”QÚ?}ÿ?`øÎ¥o¼öFº}õ% ßõôùÒ§ð€EÀœ!j�W‰lXð¢´t�lIÔ 6ê{mwÙ¹H]ò÷*£Ñ…~õ9yÎó"óJðó™©qxßdD› nç�õ Ëæö*|6`Š<Ïz¨ŠGÖšÕïÁ¨®2µˆ`fÖS/SÃ�gz.Mæ= °<4>�†9{ëÈdÔL#%j_ËáçqþÁ�+ùfö4=áùÊI~¯±^>LÃdå±þ/õˆ]2€>fÇ1¸`:¨¹ j9 2,´I?E´~-ΡìYãÓŒyiE æÿcïM›$½®½›Y{eefí{õÞhl�)Ä¡F"GŠÙ³8Fa}r8b¾ø8üq8äPŒg¬qˆÃ�¨�¥I#’")‘A$€nô^ÕյdV–ŸçÜJ¢R v£^ º²Þ|ß»œ{î¹g?8êá ²£È@_�àc�Þ2’œ³øˆ±ì1Ÿ®~x@x5³…Ô�iîß_æï£483Aæ†i ƒ'$Þ\ãÉÙÁI²¬„±rùÎ,Q—‹¤ÞHŸ{ñ—S•5÷ ò�‡5kÓèø†ìrÈ&Î×öáÄMÏ•àÙgŽ´Å(¼cbŒòêFyZ¦J|_…Ÿ—iòûO6qçoÿÓÚyö)_扯ƒ`8¾7õ·ŸÿY¹LòoÍ"ÏßøF:Þ½•ú'¡´ÇIM$'|&øµ…ãlm�È[ó¦,ÀØŽ£ÆÐP*ÕÙ‹¡Jc›)�··öÒçr‹c½è] ·Fš.^•Tþcì±*²¦ÖPXmÏá$ˆqµÌÞÞÜ9JC'ÒÔ€?pþY„¿ ‹…iÃx%H› Ì�ìîeïàÿÆU6XÞgà[”`àïÕµyÊìýMªÜ@æEîeïYëÒ´©a7ïQÊOÌÞÂagÓZ䙇ŽR8à@K†Ö@åР½:$ßxó|è1NŒDpc…Ó0gûõ26ál#ï%= gZö¹2J]‚ò‰ò˜2à!g–™éêD*/.ÝÇÑ"GˆË[ºþÊzÌ«G3Ôõƒoî•ÈŠÆSÖjï0ºÜçéX”4Žòrƒ²ñ›6”uÊçƒ0žK +4�c#'Y2J:nZcGRSRNBc»†M³VÔ |m#²¹ ÍH:}€ç:¤•K8‡àôclùV¸âc'tV‡# è–™0Ý{•tÛý�éîüBð•:I|+ ÎÙÂL8Ï-Ýa¹Ä0XËЕ°¿5Bk—kü<À€nZqyê>ΈA"¢Õ'ŒT:ÓÙKî-n¤µÆTÞ)¹=>„1|xãæ=Þ'J#­QÎʨ¡Sa_J;;(9²Nírõë8 ¼öÚUœdÊœ=Si#ýŽ>+D¿òò«.NwdÌ`�ͦmSIA‡_ÏÞÐá0Öbg 8a¶”iø™A¢ïïcL]¯É±7ÓÅ@Ÿqú_ÙæG dc7mî› Aùýg ËCŸ: €ãÀ×òiÒe�FÚwÐRu”;]� &૲�¸oÆÂ2p¶{–% -÷]{År-Fp‹[ÞÓÁ4ð:ƒTà†‡ÈûA™œaèž™̬Öü 0Ø!j_£²räÁ�‡gêFrÆî¼��·{BF!YF^¥ê£zÉÔ˜"Q…Ô*^¹‹¤kÚZ_Jfõôzt à‰¡@mTĆÒ}…Ÿ¨qÌy¢Ã–çŠÏø[ã„ÁŸ¸wáÜùô™Ï~.ݸö“4€ÎEŸ|þ…´@*÷7oÝ atŸÚf;k›(_ŒžQ¸'µ/Œ¿ ë‰÷÷÷G-7®ä4VòY¦ÛÎ${‰æ #J_ÇÆd~k #PlG•Y*–¦zäúUœzr¶¢g˜ÚÚ4°uª1UA# ¸B˜FE£/ÕR™BL~]‘^ÂÏzÛš®Ú>4 )¤ú¬&"=ÜUJæqA7|%R2ÚÔ`ˆ*$„'>Sœ7b_!x29†ó—â˜Þ2z \,ÿÛ/*T†�'iÇèNã ˜NÄG„‡Æi…çgTgV¸åçé*,njɱíÞÑ ˆà�Ê Û@†bC¢ýÑX¬OLŒ9ñÛå’á…€‰¸âúò$ŠamD7t“¹¶ £¶ç÷ò0u* �²Ãç„y¤',j�1¯«ÆµlÏÊ|úB@5z! µ¬ƒÔI…eD;51ªò�÷„OÐl yŽUø­ïgákt…´Ý̾ä||˜ç|ß¶è#ß²r@¥¨ó÷£„‹pw œ™#rÁ¶ÃǺÅÏgàA³ôËúrùèç~é—P¾ÔÒ믾 `=Ø7QP™´B Ei³ðИïoq²�y7)ØôîO8ŠxßúmÂÃõϳÍãÕQ@8DšnúDeʺØÏ9uþsïø´ppí�£këþs^FÃYg×Tù´ûUlP¡nÄp‡ßiáXøÇ3Tr3÷縄­ïóð¢Q>ßnÊFÁ/¤Xñh7+sXöŠik—øÖ÷¥Çç’ÇÀ»Â�{^�ä¾VÎQãpA‡#æðcÎáxÁ¸5`X¯6Gª»kÝìmûW1Ö_X3G×’ùçŒâ&ýÐ|Ù4<» ÌŽ|Âe;âŽkíóûì©?*º‹hÏ5ט¢SŒøbªcç*à¥}AW£c•ÿ¨Y¯üâ…4;;›nݸ‰l‡:±ë(ƒ0r¹R¼TdŸ °…½’�ªâ¬`?ð¾)&�Èj¡‚lb‚zzì……Å•ôô ŸIÏ~ò¹ˆ1*F<UlWÿþü:¹2®(jÝ<ý} � â›ç?w—zçoþyd?¿ç×Ó©C‡‡1^õr®ÖÖIW»þ¢$'ʳ€Hõe»ÛöP‚㌈áØˆf#ëÅ8c�Qú—úPˆb41:twc9ÕHe^<îNSД\·r|ìùÔ;8Htû5öçqiœaÅ.þÀæús’ÖIÌÙ…òœádwò’tÐ}ê%Ý‘ŽÆþ šå9ž·¨Æê�åUh ” š¿¶8‡cÂ>õK/Qêa(ó:ÐÛchâY“L‘<€�ÀHãhž~ìWþNÚ ][Û„·…ß5NNÑ‹�=•ÎN’þ›¿[ôÓÉO,¬‘f—ÒÚý»Ô—_âý5Ü©ŸN;iTÀ·Ã�È#Xަ�¦On£¹_j /r†69÷KÌ_žÇ(J£¼¥Õ¦p� 5øÅó¤ÒÖ•f樼:8‚ƒg  v [뤫o§f|•÷WW1“^¼Bf ¹¦ûÝÁÁ¢Ÿ¹Oô,÷0PËS†Qåd<Ö�5]´Q} Dêw‚OFž{íaˆèsx�ôÜLˆï0:`üó¬ò¿nÒ¶êÌ!_®�J–Æ2ý?·V(NWÀÛtÔ›oÌ2¥‘BcÆ`uüÏ™£¦+K±ÈâˆQne¢ÁË´ß? ŽÕ¾d$ýõ»'ÇÃyê.i�KÀ³£ a¤˜.LœOe"—pÆš½qƒðvÀ©×z̯]¿–žâœ_8ȃ0y 2¿=D�XK��ŠtèÛÅ)TžHç +}Ì݃ިÜà�ø¬�=ø!ÏAd.a£Ñ$ðùïs®ðŒ0û5^Æ!å6ùÿqÉ[ëúÞ QËdºL€†CÖ£‰¬¼ÚöÜÖäçò0cÞÀ›HÎ�ÚaêŸêÅÀNúhœ$ŽÚàG)Ñ‹ãF8Kcج‘Ž[üÙZ%ƒÀ&¸ÞCÝÞý ÔjÀ“ôÖD5÷M}*-n즹�î4õìDÈ2òLÂëãyeZ£Á×ým©åè 2õ¸ÞÚŒ5=²²ˆi /]¹Ìg^lk.m¬Ü þOšå;Q>HPY.ƒøl5£jSZN ÷®ñ½Ü”4U9ZÓ�¼ XKg®�‡Áy§™sSd<:N?¾v-J´I;…qµC²N²�ì�¸$YÇYž¾ Ñ¡Bˆ±Œ) ‰Ì^�6o­oñ}–«”©³,c”5 °è5k}8Ÿ‹,Kò°ŒAƒ¿²U'ç–´ÛÌ[<¥÷:‡#4ó¶ß{M�"¶+9†sàƒ]AGOùFÞÓ!­ƒ¯|ªtEÈêìbnz;4¼ÂÙ{nz$Œ�««Dg3–F³�*TëUtö¸c…bÌ,3â< ³8(éÜ.­'%:ÿYz$t1NJgàX%Í Gnèœ|½ç]8¸²Ê�:ê [áÌ lr&GæîXtdµ¶ºNªÇD,›Ýa^X§wé¶øÑ)žðŠY5Ì>(¿­¯F|3K--.§©É™ô©žÇ€>A´óä3ϱvË8t8¾†vÊDt²NÖÐ?Zµ|•2­ðnðŒŽûžãʲ:zuvR�ƒ¹| #¡d gÏ®ãàfªõvdÇ‹ÀB„Áüs8xxeg�àñÕ¡=è"gdÆ9x"�À æâŽ‚‹[¥�¿•û6‘%\c�ÕÂÔu½ý¾›þG|–&ÙÆ F0MÀŒHp¾sMvч…Óð®{8ŸX#Å7(›ã®r–l¢SóÔ}¨70³‹°SVë¡ÿ.2ºÔ�§²�gŠç…{1xw5ýÙ§)ù»”í—œ�ð4(`' ³"Û Îò}aªÔ©/“�@Ú¡~GBÃ9Óg߆:Û˜}†UbŸàúÎÄ#³7J<Û¢ ‚%:è×{ˆ€!#9K;9jô/ž‹÷”/»}+-í4Óéì7q°êÀ?D„62�´IÌf¸žV]óbºÐÅ\aO.íáÃ*ã™�E}}u5MŸ=€•yP±ñNf?´W�q˜ �€ ?nÎÓë§xÿpOÉ\¨”;€À©(Æž¦c¿½ÿ.N[8…À)ÞFPy–ED!<³ãz„8g¤ ¥Ò©îo¢ ïÍÝK?~åGé;_ûj*ü�ÿSžóé¿�\wÈ&Lv¼6íö¦JUp[E•Æuå½Ì5l„Qæù¸“hŒéôë_þ2ÂÔb¤*!*JaCÏèm¢rnÝ‚YŸh5«Ó F\þ6 o•ˆ@¸òv5‚iÜ #. ¶†™x…Ž�”Á"ÖDSˆÒ@vŒ ‘Ów#ø0�HG‰@¢PÖ†TId[ 4‘"™ï# ;“?ôYð]^ï>p]œ�?.vKÎŽq1Vß�¾ù^“ydàK×ÁègÿÓ9&"fxZ~q±†ÒñÊ<ÿËsËN(¡à¿üŽùš~Ÿ:ÚáyVÜ·_ûqF]‹O¦·'ÜKfÎ( 3�fÑYîxˆûÖ¡?*àTÂÛNÍúr4F�Ö=Û7RȨi]MÌ0±MàÅsv¡WÚˆì üéüÈìšò¸°×ð-}5µ¤÷ÜÂÑ1¿¢ÇêMžQ�—ßc : ×�¹ì‡R-¯¸ãÂUœ‹ýÀØœ˜Î>LöQ<ÍݽþïR“x”Hˆm¢Ï8—P¬�#…$†£T÷IɆ6àlZÏR/QLœE”ccc#©‚1FãNux4}áþ#¢s‡Pø¡@ã™L[~†«0uŽÏ�”Ž9Źâ½xÀÉŸ^§ø`!Іâ÷¸c(Ý^@QÙ˜G™Ý–v‰2¼÷z�Ôíç‰n …Aüps.èÛæò}Õ¦Su„4ï“W"ͬø?~é ö,éÏ¡%=(æ›{«ic»¼ÔÝë¯c&í'ÑÉ}(Š«ÃCé`g £êH* M¥%êUÞ½y-�]š&ý«º6úÜ_Òy hI¤üå^Kîúé½ç}ß­ï¥yäëÈ1"] Dö£PnÔs*ÔÞR%ÏÛXƒĺ1AMÎ µµÝ÷o�ì~ÏÏýMêˆß¼~•ˆ>²X‹¹;wÒÕ«×1(<�cÃhêâ쯓`�ˆæm )ž²ÐýsçÎ’±i(JuaíhBÃw0jëFÕM4VcsÊ÷2‘�’•Ø«]5á¥5"ëô$Oh¤¥é›5ìT0V•¡m¦ o×øÑ6‹KKk溆–#É@dáèŸbÜðÓž–(é…¨]gúÛ5 Y5"‡aAƒ—5�|ƒÚðôcd½4VþÅ”ÌÖ]-¡¨Ÿšœî¦t%Ò’”µFcê”jÔø:„µû÷ˆˆ£/Çc׆œg‹g­´þÐ3…³eyÃùta¨×@¨aø~§`JjccCÜAŒä�¬÷‘ô:½y&6F�ˆøw®fG1‹’iiŒ¶#ršˆ_Xoõ>Ra<ð :ù–™ûp/†":ç‰x_èk íÙ;·ÓÔðH:Nˆ Òý¹ùÙ´07—Î�¿Ov–³U§0œNÀ½c:Žy˜ù¡~XfÞy-•Y,WdMøÈ@Ŭä»Á#çM8cèb�ý4nÿô–ó, ñ÷á–´×£†qâ|f[“(?�D#šrC™}Ò?ÐÃÚ °þ¤[ƨµJ½m3*TIǻϞ9®!³}(¬5ç²õw‘!1Jîcüݧü@©o9+§�v (­Þ˜¾CÉâ­4G$úô§~z6|åÙcvÎìãu±Žá¬ì[ñ_g“¥¹—Òk?ø>û�¨Pù"Ö,ó'âKO"bT9 ]hÇè]Tä9¹HרuñGyN9ÁKaÓk«ßi°~‚±tl6J[Y1Ê'l³—à!Áy�Y`� º8?¤ævºsã•ôÊ÷VI/oV2ŸqÆüú—¾”ÿä§‚VÊ�³5b¼ô§c~È*Ðu ¶ÒÔö¸Q¬‘• Ü/²GtâñàO¨Á~Ô$£{:œ€iÔýŒ‚|ŠMM=8|¥YÔ”¿•劔60­º)·ýÛ}+Oî9"­Ð�݆îBYþ È|~¿�10i“Y,¢Þ•s�ŒDg<Z­K^�NuCÇr xŒ¢Œgq‰²D4Rî!Ãó­1vh‚©åu( GmæV%hÀ’Qóš5í@1 SŽCr›Ò8÷‚‘Ñ:ɲfe…_ŽÂ.Œþ̯M‡ÖDg¹vÚZß9LûM¢…�Q¿%]¨û¾ œ—Öv0t¯ÃÃjtn|/íÊøsNC:Ò‡cx°\>ñ̳ifŠ’GÐoet³šE >[‡-ynÓÒoP«Z]�Qí–ÇP_ãVX�¹íǬ7ë;Ê;dÁ`{@ŽS§Þõ]Ç”åûò�çBÈ¢à.˜CÿZÜSfpý…“²R|æ+qZ|ÒéC£°ëo­õAÊXÀ3¦ ¹L–�Æ»�§ú禽^Dæ?aO_ÒA»4ËÃÌD?çr',DfCÓYHœ‰Ó BãDåXãXîCûz0;ºÐ°N¶)P6·÷04Ùïüœ|;AíQ_=<�xLcÌ“Iò}K&ÒÎ[¦U7C™ðŽI»ÞƒœÓ>iH·4VÈ2ìK³ØÈG™ZÝzï¶ÁQŒµ�µ”(…á œô¡:S»guêð<²_Ø\÷“gzÐÖTç¿‹s˜µì‡V,,m¦Ù%JšÀ3\8 nâ¨QíÇÐp§üëßÛ¡q›;¬7ûfkc-MŒU£ÕíÓ$rž:3�&Ì+05pT°ùçÑÁ ™5•#zŒ:+iÌîá‘Å׈âÚHgZGù)­yÈÐ÷g·…ÁÈ»0÷Ô%+á jzD�¨¤æ3RE㊠»i°T i@Sþ9{þbzþÓŸIÿá�¾’†G7P¤} b oç}ž][Z &9X ë'ëykÈ.ßïÑ\>|°ÆrJ*Y…jð]Åìóï\Úˆ¨K†bô¬‚Bœ±Ê PÊ)´©S!¡€d eë­;^Ïyòô뜲QJ!= ³ÀâtUs úŸüXÍñÆd¢\¾—^éÙ#;+GÂXF?¶R´CÞ§)y3„Cùo*€‡¬ÁWáÄÀü³!:Ï#êÈÛïùY�VZ Ðh?¾6Í…óžÞë-eŽ}*¼goì“§B‘éxx¿‚¹ÊSA£r@89o…æíš�“¥lÌý�±¨�P¦ˆIµæ¨úš{ögá’íÂÑ¶Ï 7ßSÙ ¾hc¹á�¨]|p\rn�>�¥Šd* \sqÆqªœgácòÒJ÷A“½¡²Ê>"âƒß®E<ï8é?¢Ü gŠX»æ;ßg „7�D?#¤èÕÑ£dMO”*Y(EŠÔŽS-{òužT�-Lcž´Og!8÷àÅ^ÀSý<©ç1õ‰˜Cá+Eà”Ï€ÖD;ci]Bõ-ÐÊÿùm�^§ø ! J‰w*…ǨùÔ ¿™^ùÏÿµ«7Òø"@—ï¥íÙ—Óá2†Pöm':€ÀÖ©ì'rÖl(5¢vWP(K¯P [k¸†Q«FÄ\…t¯ë+igéÛÙxÚY ã|ãíî´¿°@:ïu”™©«ú4uÒ'T€÷ü¹ì‹ÿB J·‚$þ�î}ÎK¸¹)=¥ÕFéõ $ïÇЪó“u`å¡ä1=G¬l”œ g•âÓ3ç9_q28¡µ–¯2R¬�35x/æ¾Á;·n]M½ž#ü¨ïì„VZç¶H:ß]øÍ»swS‘3z´:BD4©bic^f¯›è4ΑÍm d]e¢¤I ­•–U¡Sf ‘GrDwß»ÇZc8Âa® ¥¼ßP\k˜©À«ï``_ &ñ*÷Œî&ò�þ4vëä¶N½bSÒê,!<ÆHñ¯Ñ|‡¨/Çn$á6FOϤó7ZÑôõ;D‚‡a¾¦möœßÅ)Ðz@*Vqabr~9%½ÏY³U'?Ë;�<€“‡†²mÆ@E¨8ÊÐóÈôÌ0Ò k•ë›DÿëUÆ(¥áÜu;&msWDÎÁÇÓÆiÕ×uàŒÖ©Öºõ}8–Ô1|ƒðÁ'®,¯`,!¥-ýZÞºãU4H¶µ§é2™˜W‘ç÷1†Ý[YN�Mf§‰³¤Õ=ªï�¾”º»9žŒìX¢•gì,ëzíÚÕ´8{;Ò½÷ãhQ·ä;"}àÐÅoÏ勯«c±¼ÂȈiÌ‘™€µ[Èy{ˆ (¼=¨ýÆœtzÊ£©·zpýk𙦈&;ìG}c€´ºD bØÁ!³AdýO¾õ7©˜¬ƒ©»'“Ž2óÐ@ÉÀÙòËFN։¬Sž¥ œ´&w‡‹Æ!Ž Ôô.`ŒêÁ6Ð�aov„²ããcœÝà·{êcz¹îõ¤eÝ_ñ Äg ùy•tÞc­Ý�üa¦¤0ÆŠg¼#]+¶õa”ËFænRž›Š¼FT³iºaÓxÇ,AÁÂàEÓÈÊ%Êœ°ºJð„ðä%¢«Ë¤Âv‰–�³$—†5yt©²µŒ­íÑ_D8/î©pÌÙ!�mä}öapªÀÆq� ¼Èœ¹Â DŒ˜gÀǹ*èÙ3FIú½k+ìÌþ ®™éÀuËøíÓf(�™Wv¸p_ІˆäÄ]kÇGƒ¦‚wÁZë¢ÓEÈܶáÁư¤%Òé–JJñÅ ypë¼¢'ÎßÓ¦à˜'ý0âøLNÒ¿cÉý;G#¶µ= £°s|âK}Ü|�ï¼¼ÏMÁ�È÷·sÑÑ!¦Â˜Žâœó�YúšíF3ñ¾Q•î ÏXTtèHá^ÕÈqŒ¢ð�4Û–þÒ† “¦ÊÖ0+¥²†¾/0þHMï0x×µS�cçîå##,0VõŽ€K(“ÍëÙÀ}i·tSe»¸ë{¶)6‰Np¼Ò4él|‡²H|tÏ8¶3}‡“Ä%•{Tznæ÷“‘N�ö=§L{\Á6{ûVúä/)}ú³¿Â6DAŒ²·åf‹¦ºïv1Ä€½Ø,îð?c{·'Oï�BàýAÀ=ëI¥CÚcWO}ÅßHK¯þ!õ¤1☣‘ûøˆt›ú‡0ê’‚–¨¹™Šñ c’ù’ £*[ÙëÇ(¨·¬/Iªñ¡aŒ²…ËDÝ¡X'5üÁÞ�PªvaL«¡H¾{?Õg~3=õÔ™ZÕóê½vÇû›ïÏz;èƒ4‚+öýÏxXZ$?ð“@¤Òdù Tí(®=KW‰/—W‚F™aiZeÔt~_‚Ú›wo¥ŒÓ—.?AÊ÷á U¤ï¾pùñTP± ßÓÑIzë ‘Ñd^ÚÄh¸¶z?�#úÑä‡X"5HïÍŒqLö˜~Œ� è¹Æ{�ÖV�1nm,Ý }iƒ�iÒWW–0šm†á¥%þ òç‡}UžãTêÙb6£F5Àìíˆ{ÿ~è_�®Ôùhii‘~H^l¢è–>nnãPA„¾¼¦Ø¶‹!K¸y欯a¼`¼òä.ù.Ž–@RÐ@2€A¿ùóÝ ’N'#A­I®±ª<ט«çž4\£6œã…§‚ÖÑî3Ò\y{ߟ˜¦?^ %o¼?k¨sT/‘ðFÏEt-£5mð.ÑM?oÖ,�zÀ"­/Ç‘øÊö’‘•(¨—‡(ƒ`]éZC=Yª[\wÓê÷ÒÏO\&ãÂ`z‚Ôü½8⮓²_Ùæö�[Èë8f��ÅÔËò òÀ+~‹Cˆtô2ªÎˆK–�tòåqŸ<ò�†*q[˜{¾ËG=ØK>¸`l­Î|Šèò»éú�ÿ‚±Sf€ZÉ¥6˜> eMøý œ tÊœyò1¢I‘sH·¼Ïºíoϼ,pÐC㟼@ÿÈ8kþm¯‡#K{w?¡%œ4”9¼�A­AÖ…é ag‹|ìÏßãF®79>ñ@zu„)OeJò Ƴ&¶” ûENOÆ#Òw,kƒ‹?-º'Í’ï‘JסWòëòÄÖW:ÈëòØò2-þÝû "{« š´É›ÔPîÓñ%§lVÞSdp¯É ËÏÙ€Ž¾–)0ⶉAý•gRg šŠñÈû›¬Èž6ux‘÷”ùÊì5ùUÓûïbP Þ�9„“.s C;OØŽNĈ1±öáWÝÏî·}jCËc;OñÐù˜n< õг·Ô«8æÁË´I?ˆ"çœìÁñl›2ò½‘…Zl�g'óÝ£–dÃÏïÊþÞ•“MZÙYoCkdARgSóÝ™QîûÈTáÄê7·øówÀ�ÑȳöH)Î1~ò·´@]KÈ$ÊOü­�[]G¡ÐƒÜàûÜg¿ á Ç›q�±·£�1J½HF:£Åñô¦'à¿km3˜5¤ žÀ,Ò¯(áD»½È<žÇ,eô f{2ß2{Âñ˜}ªþEYµ£ìYkF†9ëö'(WÎÝ8L�WÖ,\$ËM�J:àJûuêÒKºeÍàÐíô¤�]²¥ls~k4f=û¸·½½›ÙÂÊó[¹·�usoè\{€S+2Ê!ëagΛJ6´A04ºÀü}Ö3®)àTz,¢œÝ;®—õ:`*®Ò Ÿyç‹ 0èl“n™X#Ÿ¨ûRžÚá,µm³©x6•úȃs¢8£ŒX?¢ÆzTÇ™ˆõ÷þ6Î&x7€#êŽ0 c©¶ž} œ5JÞ5n²gÛ9»KüVÒõlñÇ}Nci{}5`¨ìè)‘Yè¸À×é”APà¶ôAÝZ7z¼¢Üs$¼+ž¤í†ü ã.4Ù3B$¬áh©ÓÛ8Îlâ�Æße*Ÿ e@ÖÕù�0ÓY¯\*À×´õÚ};:É(�e�Åå ÚÆ �1•�Q³p6ö–ê”}ìHk*œ:à0¦›õFž`iá>ü̼8%ß¶Ëëç¹yõ•tûÊéÏ=Dced‰M)p�‹úP^Œ�Ý2«~7E‡„í!žÏC¹§ƒ~ à�® ¡Ì4…U¢ÿZŒ’Š"ezÚy°øãÁÇ£0ùÓ9œBà0ôq¶¡ÀU@ŒÍÆyÇõ�žÖoA¸5~Ïn¹GëíÝŸ›Oÿïÿ1J€…482˜^½ ßíÿÐÏø­©Ÿ~8YM0ÓÚ®¯ïu¾“¦‰T1ËwØ ¤¦å™Ë¯RnF8ŒY¼/“½‡Wë0 ÄÏþò?Hó³wÀ¢4~#¬«(j�]þ6ÚÑŸ0¯ñ](q@Â0qW�xEVé5­­¾H„Íß|ç;!(¨ àÁx‹{Q� AñØÏòœ*.­‰¨0©§ÔôøV±…l…³MÄËVÚ…Ùß@Á3<6i°szñ3ŸFPéL.^Žè™Wô£ô“×ÞL½3zF«àÉ»ÅhIFÎXB¥Á¬ðªÂZ¡Ia�4øy‡Ë“&G'ÞºÎÓ±Ç÷ZøZíj|RÐÍ Aá„2…‡5Xù9 ptÄ´CP²mI‘õ½Ñˆð�¾ýá¦ðõkŸcäü£"A¿4þ¶£@wÖñ6ª±L�ê>Œâ¡†¯óy¡åÅ…týú5x:x”òp­§M3Zž‘©¡m²Äì‘Ú½C÷YR_ë”æµ€áxmi™Èê1t¼Fâ°ÄùŠ|þ2êl íÓµmøSóDµ©`Þ†ŽV©-n¹!£)¥³ë‹‹%699Æ•ôýD®›5JcƒŽŒ>#�Þø‹»:ÿýLJ~Î7ùck´zVöbȲM3ÜìAû€ÄZ9ÏQ©yK-@IDATI ó³i~î6g©ÞðZ¼Û�ž†›¹©‹>�îÎuŽ5œCFÉJedgÇö}^äCÌø¤£†§òâ¾ø®ÍÅ,òÇÖ¡–_ÕP|hm{pR™D¾Ðÿ£¦1Œ’VåSiAÈ…ðÿá8 þ‚§MŒ‹9â�s‚u‰cOÛw–1v2ÎÊàhÔ5–>A‡L¡G”€ÐxÞKyßuºO¡wU ”}# †rŒ/g¾ ¾³>õb˜•§ÛذV´ûÇæbIñNÇÜGT0, ÆU ¶ÀCš<ŠaV™É¿ÛéSÚª±PÚ´¿±Íï§|Y"0~w°§ p?i¦¾Ý�n nšûŽfõ:<&Æ=ùb£ƒ5šZÇz}½}øŽôËl}ž#Eœ›4(K\ÛpF…ö iªôÀ{rÏêù­)}x M&ƒ‡Pè“Ü»g˜á”Ë|9$h_þ ËWí¬qÎöòêf¸è%ø¡M™š¹DeóÈõ•ÐË`´­eÏÌü>t´©<Õ‡Ðõ˜¥d Ç(Kñ-sY6Ì=9<8¬©õn);9þ:S¸ÒÖÈ ÅœtêêÂØÎÆG>#¹­VæÐa½�¾zÇ©Å7!:lu',´ÁÏwu�ÇkqÆJÂ)ØÉ;Vyü@G`༳| LYouðV)Û²¶E{<ã:ÊákȾ€g¼Ìæâ~²œŸ4Z§3˜‰ÀZç:ŒôèÀ†Óq;ÛNô¤¼kDº2K7s˜q†×q:2*?œŠuj`ÿä’":ƒ‘ZŸó×ýåØÛËeâB"HÁ Í0s-€­g�óÊ_:w)o»§u@PR7 Žm/qÞ,D[[ž³®½r&éõ·<£IíϼƒTŽÔ±v‘Ú§š¥;îÏͱîiï§ÍC�[ 8or£ƒÆÉ`—3>áRÆY§Ô†S€Î‚]3L§žîݾÉ^†Ùó¸Ý œý¯]½™ž~üBÛ^úÑKߦÖÎ4 u?@<'Vbƒ»x y|Ø_Þø¹W7:«äݸüä­|åÑùuë=ïKÌdØsd €ñXtÑTüÃoµsÒ\ëß¿ÝcëæéïS|¼ àÞ“Õh�ÈÔŽ9ݘû(;¥(´èõäž”�9à`•öã®ÓÙžBàC…€ÇUœöçbV˜¸O[ˆÖ3ê@>ÄÆ�‹N9*_¤'2ž÷çî¦ýünúî_ýYš9w†:?+1‚Ó3úC\ˆ�¨iñWK�|o~)<„牼© ôÐ�qåÊÎ#Œ0ìF�誱¥ b¹6ì1¯(°`ö/Ÿ?—ž¡Ú_ëü�°Á™ž»…ÕøÌ[ÁjÞâqð-ŸkQ_ ¡Á=¥¢æ†ÿŸþÿMšœšIõͯ“Êr.��O†`§0¡‚P\mpN*\…1ÍýÉÿŽÉ{�šjÖŽT`mC9aÝ8Ÿ1�ü?ý�ÿ6=÷éÒ믽óWÑi:Ê'ŸþDŒEaû굫D�lFß ¬-šNVRgIÎ …1¸Þ´…B3_¡îˆ¹Gd†V¹Ö¥à,ß 4غ R*Þà¥ñ v.ÈuîiÔSaà~Õ%üB,䟀üw�gm' Œ@³à¨üBhÀHØGË´­PçXóØM n_cà‚Bß.ã’×PàWI£<¬ÀVç¾­}ñ8µFt¾²:S¹â ›ÙÀG6„'S¿…’•wõÏQº®»|°¯B@È®%7c]ƒ¿á»–3A¬u̾ÈuV¸Ua⋼§€éxlÛï„›NB6Vô>›Ï)XF*w•»Ü§¶‘ÛŸs ʈ^•@ztÓ7#u½ýóY¦uúðoÖ¡XERÓ£¿Œ›( 4Ø1&ñØ9û­²`²õZ#µžðe¼ñ OÈçY_R%�FDÛRaŠ->#C‡Ã…xÈ«1ÎØ+ÀÕçY¡¨�+½×Á@üõê!­¦Ñeûìw/áÔ¨9.þgN-\s”Â8ŒÉ!Ì;w•ÀÛ‡]*�Ä|ÏýbŠèxhÌÑ@Î\m�ï†Ñ>Ö_¸dù½{Àg|Áñ²�-5¨ó1ö�sò�PX°Ö| ˜ó)úw.y?d~Ù\?Ó&‘¨Y<ÓéF E×_}•»Ít‰sãÅ_ùé;þéØ=ïÞðç˜vURýcc U¼ræTQ®,.­W¸ezFñɨÓ# K×P¼«G8>s‘x^úá�ûH§ #P4ÎtC¿4èô ާÿú_üNšžš!­,YUX:ÛQ‰(ü¬+¾—[�¹Ø"Ûéu �à—{•~Ы —Î@KQð²zªCœ=|<Önš òo`æ1¢kK¼C´û%f²6€ÛM4ÌFQõ“ÚæÓ¼g]i&c¼*�5QØiKdö6Á¹¥¾Ô;ùFù‰PŠˆr‡ü¢_ް¥‘j,WQ-Ÿèv­ô�¥î’‘°ƒcª¡èö ÏÆü®ç–´•ôÉ8”.c<ÕÈ©ƒÏ=Œ©GÜß$rüîìít¼³‘F1L÷Â+ù¬4¤“zÑžß*šå“-»¢ó™ÆZ¯Uä¨m4¶šñæcÐõ7߀&ʃC‹I kÔ©ôÓ(®.Úæ_Öº‘ œÑLrï�Á¡‡:ÒQÃ~;†àÅ…h*FYÎS ŽŽŽ…“€\Sà¶ :9—äËMoÞÞI–æ/¯¤�ª‡>W¹§-]ºx>ÆÖɳò8_§Ê÷H… ï¤@¯5”á%L�{ˆQ ÂÛV�H²Þö’æÞˆÓf•>­�j}ßÞ�+4pÛ¿™bä7K8ÏVF1bÀc®–Œ’>wƒÃfyÚÁa×½áÙP#=,ªsîctg\=ÈÛdBu ÂÒŒ$ò®U rÄÂIE>WƒÍæúz8ð[†qÃmathcŒ¯üð{QþƲOýì9•ÿE`ÙM4ßÅK—b/ÎSã]cy¿È°Âo#s3ÿ“÷ ˜Á³ùžãö'_­ß'>à_î×GCHgÿhš¼x%Ö/§•{8)B:Hïîþ¨`Ì'•SD„˜>¾  û@^­†óˆ²: ÊuëØjéÇ"ïm¶*�ôaíCö0ÃPã€=(sýªct3›œïûœòk;}•H}�¹/œ&÷0Òmfw[¹7ŒÐòoâÆÙ6Ä/�ÓuÌÏgû ƒ¹pz,ÓãnÚ…íÅyJã4e83 WÞQîb\dH:„v(SDv• �8¿À›ê(%l¥�îåaà¨ñ³Á>‘›c�sR£Ÿ0F¿@»Êam7¶ QÌêœ,¯œ‹ÇZÌ?ÊvW£–�ü¯ãT�Ïh� û£¬†Ë=�±ÐÉEd¼£ÛÓªžÀ÷ 8ÀéHªÁ]ÙZ‡Ô©aö+]Þ½·…#§>tx�ôØÃƒ•´ºAÖ‰öi;²ÁAwÝ›f–0"ÝsbŸw=MK¯Œ¡³Ð ¼ß l÷ö83=ƒûÒò2Ù5V�+·�ÃHdú03‹0U†wįcñXöõ§qÆ7:@–2þ­l[‚‰Hy`pnÄämiøku ]È ±°d™’ÂðW¬¡òMÈ´È?::(ù*ðÆ£EWì3¦î>U¸ðP6 ® l…j[]£“ýüñ�Ôû›éÛTèýµsúö#�“CP&ÏZžGG¹Æ�{RFö�çàÉlBɄЋàPÇÈøÿö÷Ó_ýOÓùË—ÒòÊ t O§×# Î D æ4¸Ü¼y3}îsŸ§öù8ÊG½y³0ºn„„g÷‰(Ñ謄”÷à>ýâ‹éúÕŸ„j79É"mF—ƒýeѸ��ð"F©{QâÁŽÎžb´£ ¨€nzK=n_xñ³D§¿üó?�‘žqöé¶3•£Ê?8KïÄù§rL^Zc¯ƒ×…/ÓÙ ôâÔSݧèCeyè„t_ùŒç>ý*ÀKîy^Cdôì�ÇmÄw�³c•gˆ´bÀÎwU xmAuùÊitÌz÷Ô(d¾ú'ýÑ\Ì=Ö…¤J Ù€.ÜYÆP€6ˆ4èI.œ¥ò †Á¡±´Œbþ °ì& jøš"N9ÃÔ�⃂\Dù"� _éªß«4âƒÔøÆø‘�¤·ð4Šc•Žç"r�EÖè­‡v8%«ÐžP>+Tê áÚ+(Wˆ@ÐiÈ(3•2¦õë mLû7sAÈ.ŒC‰_�U²F$ÏÊwÝ |�šÒ0]vâÃ.mš:Ïu§¹¸gÛ!ýÐ`¾çú3NÆmJ¼‰é©tæÜy„ÿ>jkV#õªó4°³«)R•¯Ÿí*¸†Ñeì#Ó«û¹©¯Biss� (ûQÌ †ƒT¤kxø«”*°ÇXoñ°® CwYÆqU̱]8¨ °¶~Çnd‹ë¢RÌÇŒÛâ´ç(5„©Jv¼ë-¬Ì(;Öy€<Îõ í @¢M•ñŽEå�°ðq_Úd»¶)�ì»ùd¢Þ±o&Ñ•Â7¢ á•­óš�OP( ä(ˆºbýÝ$¢‘ʣՌĮâ²4Å÷�ÙÜLFˆ€½„2Ðyó¼sèÁˆ)Üs«»�IJo÷�ô(ö ÏÆ¬èœ®bžâµósÂH×tÄ÷TtÊ÷;=ß4R$ÆÉØTDjfó9ØÔÜâya�Ò&ÚÄIB£ † aŠpÆ©²°f© ÞÕY!¢ÑùìÞò½õõ­ô̧žÃXp…Êjš£&Ý+¯¾œ†¡�C“3a<‘¦¨0uŽQßü�µt5˜DÚyð; Ä³â”>S;g�²ó‹ôã…‘”*óÀFs6µo(QÂI¼oüÆ~i³A.¤N^MÖÇ5©€ë##Ôpè;›;i�(‹þßývšž>‡ac:´Ôµ<áý-ÍØÔ»]*r³aÞóEzègZõnÏŸÞ;…Àû…€ç�gÆ8ÝMÝÒRßõÎû¡�È!è¡TÒÓb—Ùu¬K .³_Wü™u~×ú>ùÑþ ºrþ²>=jóob4Ÿ"òœ, =êuT�G�×BïÁ„Èܬ�5¶Â c°ñ‚+bNð!žóð: 7À‡Ã=R ‹‡%£¡óÙ¯0VÀ®€q¨q¼˜ê«•TžÀ©˜b~´àøÈz—þÈ»7 ?�Dkkxìd_Ë;ÙyîÊGmgé|·†JyÖveF®sˆ4¿A&«Nî‚»5ŒV=e2Èã±=S¤ ò쮟4FtÕÇ-9ÎôÛÇÐÊNŒãÙ0†Ü-p�¶ƒÁMü–¦èèÃfÂâ#a{X†o…–Â×w£›–.jÈ•×Ü#AÐdHe÷¶ø¡\vçî\з~)Õ'è„m*m�¹MdÇÉ©1æ ß•éüt¨¶«³³%ÞäqˆÒ;yé:¸Ý;üB )B»,Ý£¼©s“´bij/©®Í¨af$ì·8P-BëÈ.A£¢ÎjŒ³Œq¿£ ÙÇ<$ïiP_ÁÇâ#jD'¢¿ûûËcéëââ2$äm§U&ÆÎAÎå­Md¼ƒ-"á;É’Ç\åèw�‘ÍìPšœ¡j‹3^é¡rŽûQ'õ�ŸÛuâvNÌ�uÕÁt�Ïç9ŒÎf}hbdÖ™W¹!Ë*Í8_4Îêüä¾ûfWßx#ŒúC#qFi,¶üË™Mî/Ì‹d¡#Ù@0ê¸ÍõÝ©©qdV20·ãMJÆ�士«8‚…?Ö¦­Sg™Ä™A¤óP…Tødt±:XëŽ#Œôd8À)âpÜSÖÃÁÿÄ-Þ¹†ò>ÂTYÑìxÜaþD¡Qö€ûø0æ««’¶+§¦¢YR²Ó•ERã‘!~ˆÃâžÎ#œ êÀÌþË Æl6eàCéŇËÜ#kx*¬Õ U°yb=vëŠÞâ¾�“Óüü ÏeÙwžaŸŒÛ8LOŒ¢/¶d>0 ½cu/YÞQÙ|pÀ½ÄùÙ|‹ìcÚÀžUê4X‹ýïyÁÌëô#�ècœÒ+qqhx(mm®Ãw!ó·aÛí¦Î©×;ÓÍ»‹éÂÙ©tã�—‚9ý¯}9�MN±À2nx{UDrÌ¥ç‹H$„·C«[Ýbø�ˆLš1ªl÷·D?”Llôðê‡ØˆÄ"´HésÎV6¦ˆÜ"Ï«ØtC+ðp01ÛvYñüô:…ÀÇ n´“KÁY…�û!<¸Ø*ÈeÖ%þ° qXYgJ‚ë~ór÷¸/[×é^jAâô÷)þË  f6£`´úÚõÆSA#ãðö^{¯Ö݃^?ÿÉü܃úW„†FǧaF:óò÷_"CÎ_§É³gHO·–VQ¢›âðí«5›·ïœ~z¸!x̲–QÂuh¸—ЏÁ~åñ‚_ã;yE•Fâ¿‚ÿBZƒŸ‰É3éÅ_úBúÚWÿ€gŠFUÔé�¾‰`Ó2Œºˆ"šY�ÏGö±º»žþÏßû½ôßÿË™F0zΜùbššžNÿëÿò?ÇÙ¦Á%Ú÷´SÉ€Xubˆ×&Žj\C0jèY]ƒä:ÏFiæÕô'_û£ÿsŸz!]ýÉOrjwaǪ¤Ðxûæm2EUàsZFù[EÆ|Òf£�J€n„�lˆÒ€¥qÁåD°ã© ƪÒÃ&<³ˆ5à)ÀkP’nñÙmÜÏÜ0ßÇL5Êe!QºuÒÀG6×¢€BVÁßõÔ¸G“ðÙ(hWE˜äÊ–è5.ûw>5”†“Óé׿ü()øâù, �2¾Ž±Fkx{`¬Ú±šR¯„áøœ'TVX÷ªŒ°553 Õ2^ÚÖ:ó»¥Å¥d R•–³wgÁ/"šŒŒˆÆê%L¿°ñY¿w¼:HD4“Q âsaÀ…W ¥,BšÊ(ñ><“Ø ‡þÄÔT(½�:RQ¤A}wçÖ�h›8]æJ;¼¡2Uƒ£‚ç!SKØnÐY3@Í~AÉŸf]ÓŽŽ³‘Z­%ÌJZç«ðß©" ƒ£ÊÖkW¯Åó®…+¡À©Ò¹¯ZBI3˜&§gÒù‹CèWy£ÿ¹ç>�ñ{˜ul¦»wîE:=ùÀcWþ`²T>�šØ9zDƒ{ãÊSO¥ñ‰‰04ZÇNAÛ,#ËŒÇ>¾ù�o³V}DÖí0xNPÓóÎuuŒâ¹QG öWœ®Y2þÑÉ¥§g8”âý)XuÀ’F¨¼è¥?�ïØ];×J¬ï¦õm<ÐiÝ>Œjè"âb …µ÷LÛ„öÔtVãï~†=¤›n¦I�uX$ŽÑ>Qk8F¸T2u |7BfÏþ>ÆðüO`¾4ìÛßúvš�›ÃÁÃTzY hT¸ (£2…£²ºBœ×û]Z£òLy¶È÷*O@ͬPä·}æ+ÿvŸè˜–£cœ3ï³NBÓ5 Äô#?ÙÆ¥z%Zð®ŸÅ]k#JÄ=n�G��W€7‰"ñìÆÝ�qh`çOè±QwL(Ú±¿Pà0f�-ŒlP]¦ã‡2ø¡k#í¤ï:kªìà:± pœÛI/^"åùo¥Ê hØwßlà\¤¡âêk¯¥¿ø÷_KÃÓüMD °ªRkwEÛøw_¥�z*�ÑQà„ïÚ¾ÊÜmEVé!ŸûL1L¿»ÀMx‰/F7©8=Ï<^þÁÃH"à•NûÊB–Ç;¯]�¯Ü“ÃÔ¹5JC:i½ßõËéñ'? ­Â�ÄÞ)WXsÇActðn­"Mÿ�Ë~Ì2".k@Ê{ãï4TåÜ(Ÿº¾¶ OPÁx>Ío 7ð;äËOmad”¿6r“ÈRÏs�€FÌ•¨Ñ::z¾/×Çí7th»O´ÿSO’>pja�å•3Ï ˆ<ÃZ—èöο[÷?êß®¥ëßÞMÊð‰gÒÞrgZ¿óF: ‚ù`U'7h‡Î©F:ƒ;:UøF8삃Ê2Öì–åˆó‘õñl7 µN‰í0N½}¬=–쀨^üàov�§þ+�ÿ.Ï#ÝúØ^L]þÈ} O|‘g$5œ›Å{ ©î¹ƒ(œgÜò7ýÃcÜG?Žœ\”¡»à‡W泑yÚôû½Õ1œK1nrV;(GÝPwÜSãûŽ/ë”÷�~D9ާFËv’œn¡.8q²ß�6Wö2«›¼Ÿg•c`g³¾â€2°<£?Ô?ïbœÐ"õ ÌUÙbŠA�TèÊ×Ã(�¡,¡­·ÍRLе}²yÔá�;�ʆÞÖ(¯PÁè'ól[Fx«F}„%ŠÒä€ã6ð¬Iö æÈÀ×aåëºt™Îcð½<[ÀXéø¥ß:]mšÑ‚¹ëؤ¡^z#ÔÑ^™Ýþ4ªn@û7·(Ï€á_à ËNú–š0àí�=±ÇØË8ò÷£SP¶w:²vᘬ³·â¾v¹ ŽS–ôÒ0ßËÚ»Oƒg†ÒQ\£0¼/ãWœ¡÷ “ÒïùyÆÈ³LC4í!¬nñ{#+ý7©sÝ 4:;�,`¤g|KK+Ô¬^IÏ>W¢ ÆÈR:Â7�‘ù½B™‹�‘ó”ëŸ{Æl}üÉD¢¬´mm2ì{•¡ò!ØHɈcFætJk¬½iÛ=; "œ±dÝ¥äˆß™"_ñŽW�uÀ[ €vÄ™#)rŸ ï ÷@Ý:ëà›—²±Òïkå=3ÀXË|}•²¸à¯åž8 …PðóÊ�]ŒG�AؽüÒ÷áÚ�·; Ó)ÎÏßKo¾q•u«N„7ã0ŠÜHA×N嘽NT}•{U”;*ÛqàÑùæ~é¥Û·n¥ßýßÿ7"“Çñø§.$ üp@ÙmgQ¨�ÏþíZ'÷¦ÆXÐ.•I�x~>èF–e¹ÉòþÍJBåb•QaD`,ªÝŸ10åa°SY˜%s¨'·MM©³Hæé‡´uõ"’8ë¾PÉ_æ*ò í\Pv6�°N"ö' P°èÌ�$Î ¦CÜ@)Òpb=PN*k³ÒA×\\yåzéO 9C<{î5îr†„^d‘‹—¯DªFûÓé›g&0d»ÎwY'×ш¨ê8ÑÀÏ5TáÆòÇ<Ä«Ð0ûÐGeYïè$îi”qïóf8qÙ¶óéX—[U¼˜Zßyìsö°˜ÿk5224náþBúÄg~%}ù7~‹�•ˆð*ë„ìYãfç†X×ä=.†É0Ö�xÿç½ñ �Þ>…ÀÏ�@`–ÿ°GèUtwt§�…7á!v¡­ .ñ ÿ@sÔ©ù;—Å‘åÑJcg")Û#*�wÔù¤šFÏ>“ºªìy"’8å œ}™ZýœQÿâpe˜òÏ¿ù´×Oò“£ã“Á×5Ji‚Ö]+Kizæ<ôTе44f9jdo£4‡îöö‘¶å°õ³=_»9[§§Îâ¬ó$ðÄ(°¹ÑãF�‡ÞÞT½éöÖQx‘rUšodY'©SŸ~ö3ðÈîWçƒnå'ßÐOD Na[kd �gÖˆ_ǰ&Žh >€—ÕQ‚¦êüe½Õ=œü¬/í9ÔŒ3CÇÄä üÄBÐÙ•ÅûiœŒ¦œ7ÒÔy˜²µ“ìQ¦JWÿtHŠù¼ƒ%³Ùì¢Lß\è)Æ'¯kÝpÓ«¯PóÝÚß4z1^—ä[çé ‡KÎÛ>÷FÌnÅÙV®ô¤Í¥5ÎòJD)…ÙÞƒs(°E˜ìÓˆ¤Qª]YA£{o% �NÀ{ŒÆß}È%Ê*òhž{Dõ¹7̈Ӌ‘Cùeu…hR"ò«DIʃh(W¿æYîy´‚3¡ŸG2ïìÜ�0œ¿p‰~FàŸpbdÿèH+O @/ü�øãžŠ|~¯«…{ïõýGußq©×�÷Þ©áLúú·0žÏ"T#KAc”†ñf—YtÀÈ´æˆõ—/n’²ÝhÍ:´Æ« C¼|N;Y~Š%xrÞiB›ä \�+à8á�ÚSyæ‹©2þ$OË! Çh"žËŸ>^ÿÊŠƒQVK^xt‚³þ”Áyá·¹r/5ˆÔ”ftÑ[(ìA+È®6 ݧ}åçæC�ñ�qjãl‰-G>;»K60¿â˜âÐξoìñ íêx\¯‘‘€}ÁÖÈ~À@,ï¥Ã¬ˆ®¡üY'ϺÜ_{¤DǾm-ÄþÕ±"x&ú2«Z;÷”Íu¸–gSöwÍur·„Æïê$óàYù2é�{_YÂŒJëŒV=< o ªfiÒù»„®"dàëtjö;uåïàëá±…‰Ž9r½:²ç{:ÜC/¡ÖaW¦6óuŽf¦(¯!Ó­[bï[*M:£ƒ§¼þ&œ5Õ¿�u�4Ô£ÐwéžAýüí{þÞ=²m ËÞp¸ŽL–y¶Îvu<§|«|íû¦æ£ïÉ3=ÇuêÑf‡ƒAg·òóà}’S� ש=6T–9öÁ—]~¤Û¥£ýte Ç¢C¢�•R¤íÔ­ÞÙàÜù³!�lAKœI–ÏpŸ?óô“È+Œ'd£=ä i½©ì•¯—WÓ õÖ�ƒsÒxLÏ�?:ä ×á,¡¸}š_l¤¥uŒòðò:g8W3GÝ[À ~çˆûµ þHK¬y78¥a)4÷‰ô>²X1SϽ`܇.am�30fåBÛOÄ·>2‡¬#³+·ø]x k?or¦ß‹® ª¦²ÁMÂ�sýÛŽ²ÇîÎaD¦¶>¼{Jy}fšÒ0ðâ€ÙÚÄE �“•Ûol^Ú4�ºN¾pj¬…´3Ët–°âuζœ5Fy9_h4�u,EЉ~A›ÆóÞ^3â´…NÉsÒ²�xÒE‰ôîÛQüö«.O§2ÛÔèM ž©37K0*—‰“½Ð™�môÀD{“ÙoúÑ+®íµ�¬�kTà|ï*"®cFí¨l¦ù%œ ÚSý�N�%3Ñ0e®6² ”) 6v(G|g™u&›в¶öѺRÇ;Á1·kFù~ãdƒ©&T²,¯í€` é)‚n¿ù q)}¿‹ÎTT:vnlÞ(~°¿œ —Þ<¦œ¿?‹!}=”c¤ °¾Nx7‚@áMÁ:Hp$ KæÊ4B¦A" ›@�4…b…gÓ§1‘ðé�eð…ŠÏ  Äƒ˜ ß�ÓVÀÛ“…­Íb›¦!É5êÀû¼ládÚï³¥Ó×? <ÊëóN#¶Ÿó…`ûSh y  A+À­íd4à>—† ™‚åq`è~ ¬ú$±¶Î…‘a¼îW™}™™` >Œ…ûµù(ãèÇhaYòYÐ:Z{R¡DÆ3~³—܃dúe L§× s"#àÞò á9>Ѧï´.šÊÊsçvt>SáûöóÓû¿õê‡ý[Ú ³¯N%�”¹Û³éÿÝW0xÝGøèH³÷Q’ÀêÝ‘mo ês|ëÞ‡û¡µ^n/oëï>ñ.Lu¤‰‚¡Æü–:UHq† f¥Ÿü¨€â¬8ïg/M8=¤Å¡Nð|³fú²ÁôÙÏ~>ÍÝz“šškà˜é{Ò ¸o[zÕ†!žrŸ³Í3MOd�“ h}©¿x)ý«ßû] __Æp_I¯!þÔ“O!Ä­#Ю†ð«@åøÝÍFY¶®<#.PÖ1P„ bŒY㛞ge; »{÷0ì2Ƴ�?{³yОffÎð B4¨î‘VÁäžÁNжí+øª¤£÷‹Þ¼¤õlî�¦˜~Û÷žô$‹MŽ\“yå Ël Î:¯`xz¡!Ùû˜¶""ZRS„'p/ë¥Æg÷*ýEË( Rœ§{¼áHÁÑHQé�Î ¶QÀ“[û>‚ ïÊküç…×q¦¢¶j QæXäæ«l MTqFjÆg”Ò÷¾ýdä„Ð¥ÅùôÚ«¯À« Ë0öP¨Äz¤ôæõ!G±ÔFßAi_%�ÑG(lud0…¿JݘëhŠvÇ#Ì4ä;7ç*l¥á*D\[Ö¿>3ŒœezCÓö`Ð�e|ÖRÖ¸ÐHswïÆ{®•íˆ×â”]ˆƒ «ŽM\·}ea§Ç{ 7t.xéûß ®l•¬(P^þÁb*Ƨ§LwM vF£Óô¾ÖÈ«ñÙH¯;7o ¼íJgfPÎ×ÒÚÊ5ÄfàóVè³LZ¹>³v¤V­¢˜š¤–Qss‹D’/Cª1b¢˜j4ŒÖÞ�!ßýÕ׿žnã rù±Çbí�›Êß¿ò£´‚CC‰1‹fÙÂr:„ˆG* t`ˆ•G6óßFÙÃoñ^x™þ^…ô6‘_*Ó&§§#]¿)õ²ß™Å!€Èî&c2úãòcW0n§+�?Iürì @r¯¾Jº§1ø‹‹$t>ÐÙãå|'ð‘>›8­bÀºsÒ*�tô2¢C‡ñ^¢Ç¬gzãÍëô7†ù /-sV¶ã�ù:ñ¸ÎòÎax*]À´‹{{¬·ãa;¥Š�"h…ë(~hx–®éšžÁGà)/jä´¬“u¿…�å”Q´“h`ÛeïIû;¡åæhª‘)hsép7x £;ŒøÐm>Ê`‘º�½%#`‚=gt²äGƒ¿ëôŒÚ6SAðÙT¦V×)²Áž×ج³Š4pzeÉ�ˆ6›s°¦³4¬†!šÎâÜÒ©l)ÍÐÑK¹Ê3¬ƒfµŒÑ“>·y¾§·|é1¥2Œ!ÿå+˜à[{ÚˆaÿèÀÖ¦îKãaæuuS¾Åé@çœ�ÃôË|°e1¶¬«Ð¨mªïì¨-�×hi‰#âu,ÒÁ[ã:X�Á‡™´Æ¹Ð‰>M'¨NJ:²ËË+chÌ4ú\ýBðÅÏûÐîNt�8¿ÊãºÂÍ#lrì'�½Ž}eöô0;�[*!¯»ýfY¿ƒýÇË1wåUSÞë< LíÖ²F|ð0³œr”:õdÁjÉŒ�”,™Ç¨¼ ß�‘SË.gÂÖððä—.]N¥f©Sífš£t‰{Ê•êsH½íycFÁ&ÖÏ|ö`ð/G”ç0›…ŽùíñQEœ/àü! סC§ùAè~ߨ9ÜwÄMi•EŒ­Å&xƒõ¬·YÑq°Wt¬Õ mD}Î’G'ઙ¤]– èål’çqm*ÈÓ®“ò�Nt]¦Ç×À}Œ »ÃÜÜ›àízÖŒà o$w"*üìÙ ´‡\"M+€#ྰÔÁ-ècc�hËõSg–ÿ4Õ{S~<ö̱ü‚øcÆ=÷›x/ ¥‡G8´X%tdÌIØiì>­[¯ÎàSâ«ïèàç¹ÈŒDŽSG2qX{¯{±^gNò#GŒüsÎ Þ{«zÎnaÜÁœu”wMÏæö%œØ�Û*†ò"mŒ!ËË•?oÔ éÖ¶™ÊêìQ0ãŒàܨQÞ€(œ�†ªòœ‰` ÇyÂÒ/+ûišòDÝàwáh £9{þBxí¢€Ê‚ =˜":‹ƒÂ¹:J½RYöº¡çöëås,üÿÖ½wÞ�‡Nÿy �޾5±�Ù‡·×1ï+K÷€ûÇ}&CÓ-³Æ¾óä×ëZ#“Ì~K0÷™z¿÷r•%2Þ­H4�¶é~—)°ä‚m¸÷dâ¢�÷»)’<³MAešS•òô•¯ (ÿ ’R¤qÒã°XÄi‡s;ááêå˜�Þ^¯ÝóÃÑßû��ïjdÚÄ@® %üè™Ã)4ˆñJKðÖ˜d¤˜í+|!ižŒÕ¿ó¾3�—)µ„¹?¶‚%ïx žùžF8k�‡#ÒMßü›FøLT>Š–—_z‰”ÞßH?üá�X¯>à%ÝRçmcNÖVÙ¥ÑÈJ2¨[lÚLú0j©Ò‰™9û|w·ŠJÆ@ýMgÈ(èWEë6<¾mH[³2#(]«PºàúÆ:þì½W°¦×u¦·OαÏé€n "ƒ¤‚€ ’’LjÄJÖY55º�­*U�œÊSeݸÊñÂ.W¹æÂU¾˜’G29EeŠ•HE$Ý�s8Ý'çäçy÷ù@“  @àù€Óú¾Ö^kí•7pVYw‰ hÐhà8lˆ2,\ýo�HiÏù ™%ÃAYHCìÙ3§Êž}ûp`{®(g ÒŽeþåÏ1ÔðÞ~+/w}Ä­:~ ;–ô7»ÙùOà¸ýø'>††S´k%‡>î×p<„Ãwtt4™åâB/ÓÓÈlFeß¼Ù¶•,uÚñüÑæx×½·b *åÔ™ñrÓmwÄéþ‹/–“§/FÉÕ°±ÿ¶›Ð‘J¹y;çžµ“„ÑêÒ¹‹dmQ=€ u3\^eÍ9²Jžyê©ò�o}ƒòˆÃ(è-8ã/s: +еJñ!4о°ÿr^pH…~×é«1F:l§¡QáÚ„xî™gÈìšLi8ó¸Ú;4à ϲÏÌ�-�Ÿ9}º=r$øhÖ½$��˜À ÑÏšœÃ8®¾¨sÞRã=l#ê_šôŒoq_ç…å=›[�Z# CK@‚};z¼ Œ:Á¥:æiß wSãÐ÷¾—²­î×ÒºÙ ÔR™5�ózÔèdöÇ‚ÆäëŒ2Ü;=»uC¦�)·Ü|SèKCó?üár™*/:Ìy¯ƒ�•x$ì¤MñÜ=U8Ú�xGS¡ Ò ”YÇ™¡‘Sœ“Ï5ƒËâºF³9æa¦L9 !yØ4ü[|½zùRÎs¼õî»S¶\0€)tÅkà$�AJ`ÍaÔój…®lÃYÖŒMã¬ÄÿÇ_ø<†Ž>Ž.[wl+g1–°Á¨s @•Ì÷¬óeÖK�Kze=—eï‰Gbnw4Ƴhü^�šf­R^PÇz³cá> <}è�Ч´¤aç‰'ž—àEœ1 tÒÞ<0çvžÇàÃ=;wìÄh fÖ =ê—í×Ñ‘n¡;2�rfe}Nk‚c ƒóõ‡\€"k¢Ó$YòÜïžñƒä·´ûCÚ{»~þqöõv�y³�C û|EÌо%4»‡÷—Ùá{ËüÙ¯e¯^"spÞ´:Ë­ú³N°“²†HÛô¹Âo~‡ÔòÚ¨tÈþ»n#çM²›Õ˱–ì#øèÙÞc—N#z´•�7ß ½)³T¹çÆ£~í/? 'Øï¯míÇû©áŽÊU¯~ò2dCAÝѽªLàŽÉ%ƒ�ÕOÀ¬î¥®…WÞÇ[>ê8÷Ï»½�Ö"Ø—¼º§ðMûïÈ:xè¾±ŠÜ³e ™n8 b ‚gº¯¸G¹ÿõ![S�L�@IDATÜyχØ7- [Sµ)—¹�fdŒÑ}CGLðXçÃè°q¶/xd›î×Ê7Ê&:ûgpz‰GòõöTŒ1àŠJ ÊÆôe@�r¼{©²CÝ�åïÈÁÊÅÀ cf,¾·/Ç¥®Ñ8âÆç 4�l̸»q€éÀ¶®‰ãŠÌÅoÂÝï|F¸Fæ£]3N_} K—%²¶÷úcÖÈW¾Ïf~ÃÇãDØXCÛT6ò~ûõªöò¼½ö�í6®WÞ5¾yw¿ Ñq †~2þößûÉrõì³eöÒ!�8•«É8ÕÑ'¾�Bg›ÓVVn†G¬âÜK’�q¬§K ~çÞNÃò&üU—ÖO/¯ãp!Dg°«‚U3ò€2¼Nö¬)ßoPÖ»�optÂûuqDe ¯¼ÝK[�ÁCê«V¨3�Ô~tLš•>Ï8åÕ: •ÅÎZÇ…L�«½n *ô‰êqAÓµ‚†k.ƒ²¸ pòM+iÙ—v¸8uŸvDWYwù˜ÏzìŠü0Œ“’Rô!�xŸÎÖœ¥uX"Hý‹d⦦Ã]!B¡ ŽC68y�4íf»¯VÞÝ�~k£Ûä'o nïå§‚ëìm±ç0üzåÌ^ÝüãÐCøQèR‘qoÓ #Í,"Ø„ŽùÎòA›Â”%u*óÂQ, –JV&m ²7µ¯`⹯F»VŠuïðÅø¥gù�o ò X:5¾ô_,�þý—É>Ø–ó�g ~ów üËìùîÃ{< q“`ÞáEúÉ4oÙɦ–ár…@««üµ¢”ˆï≑½îO:�TÆ4ØióR È+{œ ‡F“®6h åÒ¨×Ü÷ár%Ò§.�Añ r—³Ðu<_Cþ5Jç˶;Ê™“§¡„x®8é !•€ý7ݤîŽq�Ì”Ô/½ôÅò·ùå²m×vÆ«“»F‘;V­Våg÷ØÚ"4ÊwÒ¤Î_…öõ Õ=X3Mu�*‘£» ÄÄ1¢ÂƒRÀ�6€2À|ÝS¡ç]3zÜKuú²or¿ôE/ Œ•öÍöô^û—·8® 3^ *4õ:¦›8&½�ÿTp……ý×�5Ä£Ç( AÑ»¤iSç@Ï1ˆ».õ³´îó2„O Øp>#G¨45”J�O_ú⟑¹ÙS†ÑU„—Ž-מÖÐPÕ¾œ;x`@‘3T�qšÁ{ÆÆ�BAžhÔ£cclŽ]˜…-�ÈKüŒ•'9¿[Zç7�’6�sõ˜›™àf‡4›AÞºVN†�˜i¦?P^îÂO~G§9óýôÉ“åÂÙ³À ƒ'kÜà3Ò”MIÏ�xÏ;æ†\cOÞáX­wóÍÒŸAÚ „y+Æ—Êeñ¼ç"ÊoäÑâPå=!žðˆ8’øÝqÊK¤OŒãþhàýž�7C�c1žjÈZ^ÄÈ nÜzð`èßlŸK.–Ã/¼„1•ŒžO?„i;/«2 ³Çt`ؼ@Pà§þùo”û?ü0†¸Ó9‚7¼*4¿ñL}ò�ý«ÉÕ•ÿ% a´ymBà퀀èÚ©üŸ/üN¼†µkø@™Ã±µ:Ï1 Ðk›>ðÐó\a|1†®ÃÓä‹Òš¼‚GÝ;¡˾³±­iøç·²t°*ïÌ‘iº0­ƒ”àAd£ûï…�lcìcd fî§à’¯4.ù•—߸žúšË{7îyÍ÷ù.Ë»ÚÆµß7ÖõÚgÞ¸GzEÖ¢M3ÃÓ§Ì�+{¼ÛcŒÜ'ë¹Ãÿ7Æë³=œ7>cÆ«™é¶çÿuHã³O¯�—ô‘{êï~®ß­3¿‘Ú&·+“Ù—#RÖQNʽîµt ,ëçÆü•Ers:ò{û¼ÖiÝóU•5x›¾òÊ}ö÷ê+6m¿à·ÚÔF[¯¾éM¼ÿÑž~½‰[…­óv�Wq¬Nž¾\zùë-ÓÉôí#YVÃM8[±5æln`'AvGßQg£‘Uœœ–Ün‘‡ SÛ£])`‘„»5ôŒ8KùÆÊ Ý]TXƒçŒ'Û�g)ë«c} :¨vJ=pò°Æac áÝ¿7ê70~p–ù›½0u »¯�­ðnŒå«8¥ãXu¬Ê‹ÌòÖ¹«NmEÏ$ïFc¤¼‚c’ )¤ÎEHøTqèê§œ«$SÙ�4»D{+²«ú Ž«´…ß…c^¹ÚÄøÙå¦O�_= ¡mˆ«eÆ·€?©â‡{ø¡~ NÊ:J§®¥cö¾ÀÌ`·døâ„•7”j RίxN9oŽ _e×%œµë‹èêûüæÛú¦ &Ò§¶$t}‰úÝØõjö®çÁkËÖ.Á¶{Eø\Ó Ú5ðÀ@WuBu)õ«y²�•å-Ê–©° nË*.ÏV›»{m+º+»)A´lÒ‡?+kWËYΑoØÒí·Ý¥[G'ã7ˆ;vw`–@Ltbç/ŸY@ß.9ýÍ£ììÿìÙså6“®pì˜ÕÏ ^–GêCPïQ?Qæ@G–0ǯ^ÍzŠ|STîko§jú½2�ÎXiQ]ת+ LDï¹×²Ü}ÇÁ²{ç¶Øþ–ÀׯŒfu/õŽ&‚-¬ åñgÛ·ï*g z¾H@³øè|ÔßÔVÔi´wª/µ ;-Ô§oA�Å km*Ê+â°%ÕM–>Ú™Äcù¼�\Wð™V=ºàƒÊ‘drfXW`Ät£_ú]œY/ñÝ6âpg¥<÷[³JXôRø˜™àÂG™È±ˆ_`*þP* 0ö^ô|ÿÜù)•²ñ�LׂS;åÔÝ Åôr+5z.»çóò´Ä:3~ý.‹¿cåÇ*M´"“-‘ùî‘(M- à§Öt´rv¸:§:•<Úñ �ö÷ NFÂD¼õÏuñ{íÍ]8¸•û–¼Ïy3�iÖ×½ÚŠ3&YöôZa¥�´p®:ÓÈÆŸ#`NÚ±ê˜:ZŽñB\ÄÑÔ<Ï8ZC+òw«‹KâP/A½GM‘un ‚—¿uò›2­€ÔNÁ”øÁ 8q;ß{^úö}Ë”Ç<Â[Ä�ꇇL¯' ¡ô,Ch�4ª={èXùÐ}(ùíå¹'#ʽ¯lå 7�¦ò/‚ €·ãj4cŽÑìç9ûåô©ÓÉNµ|Ÿ›éÂÂU¥ñ CÀ¢¥¾ÂDÍ`uAÝ0«`‘ÈfïsËŒÙhqËzT£–©ÿ*Õ+%ì�>â5†1ÊBlFáy)‰rþµ¯ý]ùêWÿž²œ!tðöòàƒsÑÎŒ#ów6¯M¼ 2rL�HGã62Lêf9˜È-Èm™GÏtyþ™§Ëÿßý/å7û_Pr[5V󬪌æÑ¿ÿ*7O M─ö–1ÚÑâ¦Ìç<]"åÉ'Ÿ)÷ÜqGùø'?A¤¡pHçf�V�‘�³4θV³Ï%úL# $×à¼Ý¼6!𞄀„gyŽB§N�yö&#ûÍ‚G@»HÐÊÑcÇ#iøpÔA¤³D!Üïj”¾ $5_±;²Ù›Mi)^„hXKÉÎhö¹J�ŠB¡ÂÉ®½»ËGx {i”v¾Wù¯»é;ZG¯ÓCáEºV0u¯þ:¼ä/þèód— ‡gLq�Ž£ÊWprzÎ�Ó>ÎD{§ÇøÎÍ~³å׃€A—.Ÿ�ãεÞ3:”5wo°³g€y˜2]¢ƒ¯ÛT4Ý#4˜Xª¹ Ë"›‰†>óO~¥üéçÿß”m³¬åÐð2´Fi0p/Y+¥ž_g2¤ô¦tgC?O¦è½úP9pàV4”®c,*î¥:-¯�}zñâ…ÈÆ ä–ÚrŒ"?c�&•³ÙÞ¢À+·G=†î¥éìÏ:yNœ_e/UÞ–¶¥[ç¥ëÍõ¡Y~·Mᦒ¦Lk´¼J˜g˜{\“ý{F–<#ÊÊH Ä ¸YäÏûUàTT4w:÷(¶Z*¼Pܲ"îá9:Ó5\8®êã0W¦VQQs¬ò8åw×FÈYë�wϯÕp”ëUTÑ3lŒk²¸Ž¾UÆhTøÔBåqÞ£R�Œ&£æáYD´QáæÍUø o•"•ÞÎT"PR!Mp¥Î¸!ÂD€Âòæ8CyõÒ!©ü$Ü× ¤=ÏéR‡23Y…LVØ«00žÒ „™ot&¾2 `ßRxL½„ŸÃ‹Ó|Ðç…™�ºî L1áÌS«‘ðÒØ!\ÍÔ]&بîQ2¾5¾|û[ÿPžüîwÈúÝÉøÈxvþÀäêØårîÌ)Úâ‚mÄXpè^*gΞN_»wí.Α•}ê$^Ôî2ÁYsë«çPR;SF¿iÀÈù³#WNÌÓµ³å*{–Ñêòó+ô'Œ\Ov%p œfœ®‘ú›8áÙç‚㶃Àu‘liÏüt¯sÜÒN�'F:ðCÝÌ6-ÇçšiÐG¸+¿¹ž~‡5pj°d¿1cñ×Ëû¥‹¡»��ú €ÐÁÜoÌJ#8A-;î3Þg¿™¨g&`CÛ* ç¤1Æ9›½dÆ:oÓ¶qÊïñqŽ€‹”³d<òµj€‡6yÞöÄÁU2xÌ<42ªÀ»W.c4\§P†÷X9AºxnÙÚ5øÅK/¾Oê <Ïœ>�qwðÙ`açN4fŠÛÒ‚cÕV õ1÷ÓcM ígí“y8N³‚ bo|o»4Ã3uJ’¡pJ…æPçÆ}¨¶¡cŸùÒž4æY’òe�ÆåïÂ^¼²}�u°aƒV4‰+Ú&œ[xšÃwýxõÏój Öˆ&/¥‡|.kë½Üãy‚–à_œã^ AW(å{߇ö#Kuà¼Ù�*9>pç>P^|ñ0Y8µ²„ß­±^®Á¶„­ÛF£#Y™à¾‡?^~ö“¿Äü0ÖÉC<„S8:®�—Š+ùæ üãòì8a·ßÀ“›·lBà5ÿ½*6òF:‡&T²_�Üêä~o Þ&JÔZáe•cø÷¾æ•ữ/_óÃuÀÁ׎¸ñ;ù¿`àõP¹¿Ôß^;¶ÆsõõÚoì-Ê‚î5�ïSã½wû›ÿ׫¾yåc~müøšç^õåµ·ïç7€0Õ]õ†åÙ+eùêse¨ƒ²ø¾]DYèIÿÈîyêjîwŠmÊ2ºš‘~+{#òÝ 2”2ŽüG‡ëÄ[ä-äpx�Na+ý(3®Ìáþ‹8NzáG:k¶dsÇpi¼{$rã³$uxáûya27dB²»•“•3——9¢QÛóœñ6œ]V3Sµ­½ ûÒXÖïæT¸ZÖi�·4ã䦼¹™¨Ê+¡°¼ˆn‚#«f`³'(7r¯Î°uöZÍšzޏՔZÐs\?qÀ ­uúÖŽÕI†º2´N[eHã:å”›#¶f<ÈŽ’¸2;k˜Äö�”h"yÒ}Eü°Ä»Î{4å{ÊØÊüSìEŽmËÈœõ½èUÊ  ãPOéÄ–°ÌØ.ž9VVNÎÑE7! ZQO½Åû§&uNâÀFÆ4ƒyýQµ\{yøÁSœßÜÞ¡ÞÚŒ9Šü� xEÞ„á�¬Ot$½ŒìŸê¾KS£Z¡C¼Wߟ¡Ò[§úÏ)W {eá³ç.ð{odF‚´-@bŽ s;Žø®šá¯¾¨�C_¡>�ô ìÆÎ�%ðÛÀôÅsƒ²³íʧõ'@(e¶“-TòºDPêåK–Ôö|sæÄ:Ì܆Þ?åá2¶J»C¯ü>C@2ð?B´éU²Þ]gÏÔŽÓ_Y€õ71ÏÊ•V›~þ¹ç©dE¥/l¨¶«oXµ¦Ú -s� �‚†QÞ`¶³çÞ ‡êh¥!z…AÖ&Sh;•Ÿ$ɽGÜðXíDƒïص›¹s\ pÚ>º…±¨Ké3•o¡ç²î dd[åSû‡ø»æ3ç ~èð•n„Ÿ¾K+e9~õ/³³A㬧ååXL?ÚD8J­UÞhU?Mîèö()àb4œIP”çÑzSSõ‰ Õ^ÿS&ãGÛ[YeðZSÄIõÆåT䂲¹Iý} }wŽÀ“pÉ híÒ�6Z�çö£½*�Z8h3ÒæS·ª þ#ÖÖõUþ3"[ÛÎ*²¥º¡IeK´;ˆMcxˆLwdLá䑞kLÊõ–ø°¸h 7eݱ'¸¶ê|ê¯&|î=pÁ V©0(‡‘!ˆ÷Ñ«éGjRôK2´ƒÛŸo*½è€oéCB%¸À9˜m¯ÞÛº ó¢Î3bᜠ¼gÙyvÜyÊZªàJ�?ú×ågú…²eÛŽºÀÝv tÞ† z  ]$‘d†ìÔÇ¿ñX9òò2O:Â4=ÿ\âÒˆ®óÛô)SáÜH�:ᘓ©U”WøK wLj5 A£ ŒIFÐ †U‰A¤Ñ"�D*Rï"âŨ¥Åù‰òWþGeÏ®½Pº�…‘A¸™4æð6€c³‰M¼c�^¤£ñ‰¹r‰ì Oó†âí£Ûb$”¥iÌò!3³DçAWDŽí;°¥|ûë�–/þ韕)v A³çN3Þ…²cï-ŸѶwGyáð¡ò_úkJ{t—-ýœ#ET_+Llú<}.])¿÷?üOllf›S*þ⨞©5•²;–w©›yδ`óÐ(gæ†æ¹Ê5Þ1Pm6¼ �wFá™A¥p²�Y éìù³åôÉSÐÐ 8&8ó‡hVeY…ô&³ª¤WH¹ U\ î�faB¾qºä ]èG‡o)ÑÊ3 Š:Ð5nõ’i7¦ãAó#”yU¨UàKæz, ï,¤o•VÇŽŒUž$#ïO>ÿ¹2¸¥‡ŠDBÎ(ÔËPj¨,QÔßßÁÎs¶6¯÷¢h» Ô¾xø9dÓnªÿ€ï¯–S'O”Ý{÷¦ŒûV2C�öVxV¾Ñ%îhüÍg(F’ßsç]僕¯}ùO�Ýzã0Aá™#“Ê`1uåB3Ê•4«“C±š¿Zþê/ÿ²lÃY¾s÷ÊnßT¾2÷E”š¡Ò¿0ÄžU�{‘Q– ¯J�²¢$#¹•«�<†Ùkë^æsqı'Üææç^¬ ªlªÃÌ÷:…u&+èÛ‡Ê’Š€£¥•i�³�Ú·g*Ú‡ø*7ò û±íJ’%™ïT z -«OÉO4(Ñ÷a†äwù†ÏÚ¶Ï&"›WÏk™¯ç4û½7Û–óq͵«£2h€�J`а=ÄT¦lW>Ewißù«$1ô”éóH'yÞÎÝ{Ë(ß�RæW!ôwËÆ�ަ QæéÃ~º)}–@=úQi‹‘„y:ds4Dù¤?ZùÔ¤™Öè":ç…‰<·X.„kùq¿×¨bP¯å¹m»H˜ �&°Vªjêh0u=«#f>¥ ªšGq—ß SåÀõHYrÆT•Ì%ÀN%6F5ðââEÎ(ß³§<ÍYçÇ�Ÿ({ÁÍDLëtÕøhß(Æd5×K'<}‚×ÂÐ¥#íÑûPX5Jj¸ÂXÔ„1FpL*sÒ�m�Æ€Þ^ö²&Æ(ÝN›¬¯Ñè[F(Â3⪆-a±¼j¤|-³é|=oÐû�=ZvASw@Ÿd�Ÿ;c9 QŒÛKøú\”tƼ’=Jº©þ&Œ�Ýä¿+ðǵ·ÿ̃uK€5ø£áGZ‘Î¥1á*þˆƒî‰>£qÀ3·ÅfÇ!\u´ZJTšS›d¢ÌMÇ:�ŒÅçÄ[�­)už„—¸îܽâÔaV�|¬^€«ô¯k…v.LÔ̘NÚ³wi¤žihðjWöú5Æ�òrwÅUqIýÕµÓѬ®«Lã�ëÇTË:¸_ý·¬KžqŽ=ØuÎM_˜;s�ǘiॼªfÊf‹z…ßÑÉá·²dÇb”¿F×̳í-3¯®/äPæ”ÀÞW£¿zI›Ū~#‡YG/iËÚw¿ä¯‹5Öé7Ͳ^d&ÈÁ­º±_mc^ó”÷t<Þ§3.¼ŽûmÄñ¶¡ÓhS8úâ‹€;Àɪs Så#}� �ä^ñÓ}¥»·»ì HeûöíåÈÑãùMØõôt•m:Ï1–M“]²ëÖÛË/}ö×à£Édlg�”ÛGpÁ׌ñ¼ÙKãën´³ymBàG�€øë¾/ï[[%ÙdežP�QPMøhËÇb,54ØSÖûöTÞ•û—K¼B}EÃé*NðnΉnÂqn a ú²â…ˆJ?Ч4&_R~0“±¥­§lÙ=Xö` ÍžA&ÔZ ç_>ZºG�i_Þºyýø p#xßèû׌lc­n|¯2ãkžxýoæÞïk‰‡ëÿy}õÏî€þÿÆ®ïó�ç÷ÆZüqß%¾áé¾Ãƒ‹®Â¾¬\<9Fæ™Ã¥uýréAÆ™'ë×LV“”áÜ1ë&dk>iGÑ!bùlƒá*>ÁO¬Ú£M#Î6xØ3ó6¶fîO¢ ý®±Ö¶åƙϽt˜½FYÜ@hýFʃíÈ€êÚ©•éÔ[ý¼Œè|•‰ûûëÑ ©~.nÆ>ųõX�Ê'†ê1bmÍCÀ�lWçÆ¼„î :’U½<ƒ]g­zgüQÀ¯‰qèÑ�N¹²‚ƒ^½¹^ÝÓ½QáØqj§ûÐÁtV6¯Ï•èf†’ùÓ8££ËÓm„ü¬ Í,ï)ŽÓίÝc} š56@[G¤—z˲{2cµ}Ú.rl²ô8Ò&áêssMÕÁ´-z_âŸeôŸ?t›Évà©““ÊQD^…ÈÔ¡¤QI[9V��™³n8tiw ÿœgž�qLÓ<Áôw¸§å¼Ä}Õ8OÖ9²9íXQ*öñ�yMp&ü,±:Ò…Û®¡û«�‡Î7d™ÊB*5 ˜ $�§”æ6œ f¬Z¡ÁÌQùï< ´Ñ?–l‘ñA†ÙDo½y†ZÎŒb3š4ªk¥ üÌN6Å‚cޱÙ\-##£aL ®é¼Úhãøy3è²�?÷s��%H©°ÜRi97oþ³ �÷,ªSXãý‘^,ßúæã8=N’m~"´ÐOà‰Î€mÛ‰d¤¤ŽBVY¸�fèBá%†íìw*#Õç·ó;Ôè~Œ†È ssoŒÀÝ»�Žr¯ïDGêœ÷Ü#³ßꞦÃCáß>äFæÞ¨-ÇߨÃ-s}øùçÊïÿ?ÿ7™°SÙOžø‘rúøñrâÈ!è ¥ Q>™æW(÷Ìœìg ì*�}uĨDµ!3}ù¥òüoÿkùíý»åŸüDygËÕË—ËeJúêÄUÉRñ4 5Êr¤Ñù阑ÇãtTþÔ¹£Ì)­Vç]£C- -ý¬ò¬N3åÐD cŒ¨t£ãÜH÷.ÝéÀ�“•¶…‰ðk8¡¤•ô(1(YÊ·Fâ7£ä¨øé´-nªãÖËd´¥1Dç–ð¶¤*­Ve’`Z¥Õ¹êt”cœâæ ”Óà�2Ép"�y–òÒP§mÒcP-¡?eu•@ZWƧ§^Êp‡ÿqºÊú$J¿ ¾üCÅF%Y0è!pÆè"Ü”ÿP„œ§ð2s×(uç©bçŸÜ±¼PIU²PÉSÁó,Ê8unòKË2¿Ñæâºe ™3} ß"¨-g°�°³Òö“¾8G˱;�xŽ7N¹°e=ìÏ âè.Dyw¬kȨJ÷†�,ž!®Òë0ÁÙuKŽÁ�Ò¦†.ià>û¿lÈçå•ô¸“? !u.Ž][xhFܗƨC_Œi²§àÞ2|\½FœSÖð?+›H[f¸f«Äè ì4¨hÔñ,Ý.tžßþ�ß-» N™·-GÿØ£_‡oÏ¥4g?�ýœ÷Ûyölg}» Ú³{Gô$ç`Øg~í7¨bwç?EJºfÆØ/Œˆ³X÷øâÍ\Œ›f„Pæófݼw ˆ‡ò 3@—ÀSËÍ®Î_*M‹'ANõq�šq È+´»-¯lœ¹ÉÃ+8JØ¡ /uŒ‘;¶4·²52¢|ÞD—µUè^ )Ò¥|›¨T¸"ßÁ”I° ÜÚ,DÚµ,°ÙSÓ—VÊÈÇ}lßZu´Š(Òõæµ �M¼9HïïŠ Úwÿ’ØÇ¨^tä¹§ÊìÕKq”¨Cxé¨rKg[æªòƒd/ý+¿…p>¯/el�xkDó­!KËwlÛ>œsK NÜÈ�êNìšl¾:áêy»êMòì è[Í8ƒæ”C›pøµ*7ßÞ„]?¼‡}÷}¹6ìrö2:;Õ;�Ku¤ûÙòßë.õjWbyn"ú¶›2 ü_'©<™¤‡%Ê1HÚÑÝ�¼‹#‹öÛt¼·g²µÍ6WnjëA¦êŽópzüÙÁ”ñÇÔjÖ*GKÙ¦¶é¬+›¾À“E*néØWWìêèE¾^¡Œü–àÅ%â­*Õfu66 Eü_.£²íºÔ*Q¥­è¢ê¬V¬Š=‹Woê%³º�ýOYÜ×uô(õ,mâÌŽ{©äL@¥²œAÜê_îƒIHãKmö“ù²ï©�‰«ÜTÕÿh¥ã@ãjGÕqV9vQ;`2åôG ` ìž·ŽÀJkøé¦’�«.BÀB}„ù2ŽYH×8�Z‡÷ NôN`§³Ü};úP½¬[‚ÈcU'œÃþ¡¾ ý£›¾WÙ¯ P&»Âñ*dbsK`30„]QZ¢�9^ý-v{ôNmêÈöe‰r�ôîÕu¿®úDM(k6hSXôoP°07[�ZœÓ×Öƒí@º´òM|†ô©mB�@œq��ÈóÌKX«{Xñ+vB}ut݇¶ç€¥ð_X$[9vÅ*£è8u­¬T—ªž¬O7NwõµÀ-k Eˆøcß°L9s·úîòÏä¬eÄ™2‘Î\a¬.ipüÒòdéa-Ô�tº»>}”¸of.ÎÍ{tÐ2®Z!Î@D«µÕÌé^�)ë],ø Õ I´¥®Ói0@‚ñÍ�¿Âs“³8µ[·  "¯Q1Ð*¬‹Í;?«JCÚȬ7 ïºÅ�¥;ƒóWˆP†½€ Ȱ¨«¯€ÛíTΰ_ƒ÷Å{ȺÖÎ÷â–`kûÊŸ´k@Kl60øY~CâkÅë®òj™³OºøÎšù3ÔÂÿÄ/~¦ÜuÏ=A�îÂÊtÞžËeX ‹Õ‡‘lcéòÒKÉÞØ‘á«({F•VÆ'‘š�a‰FO',’KL:ö¨†€É%h�Õñk€¨ @u#Ð`£"ß8¿M+±{6óü|ðŸ|ê©rëwe,:-é¶ymBà½iV6àµÍœ}á)Tœ� ƒ‰$ꇛž U 4'cyþ¹",h°…N·z&i=æÀ Y† �ëF×J@Žå”z¡eék�MVCê,Œ™_ÇŽr"gØ]¥qÓþ4*;´ÁAJwÎŒ—gŸþaÄ›C�’Þ>¦ãL7¯M¼ad#Ý �7üÐëܨ#Cz±üèß}åoÊW¿ñMÎ÷ÙZ¶nõܶzé,±�BI;4熯㨖L ¹p£BOH{ÉRUÈSø¯Ž™8V²gÖÒV~–ŒÜÓÌÈTÀ<{öt¹Li¥ÝdxêÐS‰£$Ü¢ò‹×™J~r òiF…³àÚû4Æ¿ö -³ßs{:…¦#/½Xþä ˆ0Sϸž¼8M€Íó%bJgT"(|É=š¯˜K¾xm›ŸÞÓPx—t”_Ä1Ý¡ÓtëÖí‚Ò ~Ç1ÔlàgãõL�ŸZÁE3•Ñ”Ï]{ö•ìárîä!ôŽ+Âé*aè0Ÿ$R9Ž8”€/÷D~Ëx-®öã:{úTùŸûƒò¯ÿëÿ¶ü›ßû½òÜ÷ž-ßýÎåoÿúoØ×Pü;u*êD2K›ýQ|§}•“v”'3“ué†jÓ -ÆqÅXk”¹Á¡õ½°mqOXð°-•¬DuëTs•’½�ü«Ò©�/¬ƒýª&Èͽþ#*´ñ½#GcûÕù ̈¶õ9åù†û¾%×Çhey�Îôªˆè¼V™ª†Û×ÐÔp2º&ôÃ3=ÌÛg�›}©¤Û¯SÓ¸nY²ÚÑ9¾ÆM£œîYÝ/¾xýÀRþÊîW}2•G.Ça»Õ8à{Ï;T¹RÑ­ lÍPf]¹„‹0³Ä?˃lb¹2侎ÂÜö½¯1VÛ×ù¬NG¥k¥"©þâ:h<ðænçö)¼Õ-Ä¡fJЇ­õ ²PÏòñÒ@]Kû9õa×Ó~/q€—Ê:�¥ív”öXgÇ(G�.8ÆbÐHv4}‹'–C,Kgð¤�)ÂV%Xýª‡óòt ~ç›ß,=Cýeßm7•é‰é2‹Ñcq„ÌtÄd¹IƷŔݷ»ìí)GO\*O™ÀÖW†‘ÛN•ù‰©Òãùz8Îç8;lâÒ•²kßΜGnÉm³…ÿ,•Oœ¬cÔ8£RlæÿÑ#G2VÏ›¾÷̳™—géÅ൘ëÿTX ? Kþ÷ÛPüÌï@QVG4€SãƒF 1f7¨ »†ÂjÇgà ]Ûu�%´£«“Óç–Ø_íCã¬Æ1a¯¡§Âø‘ó�³k-‰˜�°Œn™ ús�5ãº:m5ÖI¯Ó¶}ˆcëR8?€�ª–M´Ývã`Ò8Ä“Á£•qO+YÍÂ2ÕxV\Ö>À\bˆšŠ53t’ 3±Jù_£œÏÚ´Ž †f¹;éÔqi€©�>u~bŸ4ä~¯Å1ºN“dÎ+c°áv1N…ù«& ˆ“ÎÑ™ðX®è2Á—©fÁ/òeeŠu`âsò)Çd;p!Þ«KÈQ…)<�ÿ”ä[u^ÐóОރL%¬f©°Uû’ôàϬ\2ýºÇ޽T~ë¿ø�rÛm©�ðryüôi‚ÿ�l˜ e�ª]9Š‚qNpÜÎ|Þ ›�»¨æ…ìb‰ÆóΖöŸÿn¹ûž& ¨C‘÷dý¨rÌÆÔ3añV®ðZæ°ÑÀ[mç­ô½ùÌû u¿3`ëYã΀KØÑ 9÷9uy�_9{@5ªÂ ݃Dfø®ö6qP<7ƒÌógå=ÝðèovŽ8ñ¿Ù,3ŽV€¯ú»†]žà92òàMòÿLîi*eÛXS9p'Ç#PWÞ/OMGa ï}¬wò´ÍëÇ �k<øÇÛífo@@ùÍc†Æ±A¼ð½§ãíĹªóP‡‡�™Ê_0î†; ?ðPä+e„åuÞ· I@9ê…o•ýr>7rfäõe|î5¨O€ï#ãáà±¥uÚב‰à p�~„³KNgÊUás?tª\…Ÿ_аO.0YµÚpÓi§ÎÓÝ?{Öç}#-r/¼ÜJC=Y·&äª%wK øWØÚˆ�ÒQÖ†ýY'º�´à<\¢ôvœÎÜ¿N5býRVKZGÿŒÃy™ i8�{†ã|[]žbk'ÙCº¨t¢™½ÊlóTR~g�Í*ש®“Í@Øô}õDý=kÊãÜ#å3o´iû§6º¡pPÿuìD6T'r/³2B­®"|Ð'iSq }©·o ÊœôkÅ<÷Æe’] R7…騨xðªç°Ÿø×ÐÔ‡¬¾eŦqJ—럲L¾åß;¨ü¥¬«<­¡ÍŒzÈCŸ”r¼ÁŸ««” G¯Ô®`�·ú­:ÊE²¸¯P�Ö=Z]|Ï®�ñ�Å /ÎS¾Z;žÕ¨,¥¯PƒÃqÆ£§Œc1#y�cY-×nió1ì4ËËW�‡ÕÒæÊ¬4ÅÞ/\Õ´=ˆ'³èãÝ›.Í ¿8¦¹OºZÇá}›Q(g¨³èÿï¨ÕÎ$;å¬êóè|¶²�÷ã±…Ü›Gú �1Iý ¤�=C½�>å-â#N‚D#Øß6(Á ÌäâÔ:ö«W‹êû®‡åòup/¡¿Hh ‚ò‹í«÷Ù‡x§ÌÔŽF÷Ç‘<ÆzÈŸ<ÂFÝH¿âcU/T·žœd­ç-_Gì4Á$¬­´fPI;´æâºú}K8Æ}[GËOÈýÎW?ŽØ—ªk¼V�D‡»G% 3^ÇçúÕ£1„5à<‘˜?Ë\™kX�Økf¾¢�󌾬”]/“ŸÔ§Äõ6õØ”ˆgý èÖΘ¨˜`å"Ûi‚¾\_“;ºI¤ò؃�­ V� ´ï7çbOXÃ.G• Æ5GUDu?çäÞÒàÿ:¾[¨:âZ¸¶O 3×tÑj¦àM+p—vfg¥CíjT»ð?àÈcŒ�¶\Á½V3Îæ@rˆÏ… í,"(Ââ-•ó§O•O|ê?-¿ð�?K$P?€ cƒF PÞÎË('Šåæ!À-CÃaF·ô�„�$ê¾>¢v·ä€Ðgi‘&ÑòŒÓLW.Jð!Ѐc©K³V$N(( Àû%0çç9Fe$£…ɺ)• ¢<ñ�o—ûïÿ`yàáé[Ï#]ð¤•÷›ÿlBàÝ HÚ•A·%£»£{¼^-”ïÅc#8=“ÙÍKB¾Ð‡ÓâÖýûË¡Ãß+žœÂˆ´o×zÙà@¦„Ç8F[ˇýcÒáNŽ>ðŒÚiJwhx�š˜@€€®@öìØæç}n89¿‘qIo– ’ÁzÞé,›“F^³�¤óŸ†+KôÓ0Ñ÷ØßNþ.Þ»9»×y~ÌYY{ví`Oªež¥ÃdBt -ó¼6zÊDjB+ŽKZõ²Ýd˜³wÅ™Äçf�²;ÐOEöv Å­ Yü¦2j©¡ž?Tì¿¥to³üŽB¡Ï��or[óYóîáòe…°×à5mû…ß©pLr<ÄW¾ôWåÐóOáàJdÊñœÊP‚*/‰–Ì…OÀ“ÖP®'7æü¦És›×»Á;Y³¨{‘O/ƒS8ò<'ù£

äj¹ã£÷Sf»§\æ�~î¹å®ƒð^œÀ´·€qâ*åÜ)WxËM[Êþ½ý”*ì*ÇÎb¤a.ݵæÌrÿ#øHp$øp•³ÓUÊÏŸ8%¸�(øAœëí(â—0º=ú"î 7+½üòÑÌÝàí·Üšy=ûÌÓ¡…8EÅAŒ_9…·Îa@¥X}Ïòwz{ɨgÎýf‡ô>ƒ2th»Æf ,#·úl*XUAÄ'­ÙÒxl/´_÷­dܰF¦XqÉ}WØKî�4åZµ�ñåÄàhPÎÁàÉ-à0bè�·�Étf\9�‘ûÍd~޵Ò<´Î{�ü!î<§Ñßû�ÏÁÛï ÚÀíã˜Æ`³Š¼Ü�…kÀ+¤«ÊÝÏ«JG–F@ƒ�üA>£–Ë-é§v­`ð(ÂÑ>å]íü1°ÀP^bV½†Ÿ´# ò°Fi�Ið¸5×d xʤeg—æ,ü”]ì94ßÑkô ßL›žuìÃO4ÄIWÍÀØ~BWÊGÀ½Ê6•~˜4ÆŸZ B:`1qž: ž¥Ô �Õ™Oà‘caýu´Ç‘gÇ|÷;ÿì_üËò¥Û_|ápù·ÿ×ÿ‰ŒtÏ/—í»ve½ �WOà ÎÝ:”³…ÕùóÊCŸþ•òÀCŸôA¯I#ò(»�Ž]áíµñR?¼‰5LÆÀ#=ØÊ[mèMô¹yëûÐtï~åñ,ÊTìÞü)§@ß­ÅõLÑUÊ{b—G—°¤¯Täò)¬Ë_ÜòàyÉââ³Æú”^å–èpŽ 9éØ=Y£®x¬�/²÷hˆm‚çõÁÏÃ#h£>yâåCìÏ—½{÷‡¿¶g} }ƒü8° pÞ�Udá×ç§á’zÕýò�ÏX6žç·7þøOôÎ×[ÿ·2°·ÚÞ5ø6ŒþuîätyùÈËÈ5xW™Ûìp$/¸Ž�ìá5‘ÇU«ýÖ_•üœ£¨à+ÊÊ�Ê$ö“lýVµM&¡{&|§fP*ï€ó|—`}äÓø˜ÀN“�n½ÿ#ðG6ñ¾ä‰ÓÑÆÏ7|q¬^ïJ*cPÂ&¬ÅåÖ—p˜)ë)Y*]è›InItm9VIR.óÜï¹Iô6ÎíVª¾Ï׆SQ݃G™¦YÒè—8Ðͬב·Ì±ZØËÜ«�Wpi‰ àçÞmphtdäLe[÷hiIˆ©ƒ©«ž¥bÙ"U¿Ô™¤a羫-~žýy‘¿Nö\�èCèRÉÎg”öf[*J®©‰qÂÎùºXÁÖÀ�ÚPü­Î¡ê¿žîžßM€³ÇO-RpÍñkÁX¤1FÊsÑÛ›�ôf$[yÀ±;_uqC:çkÆm`»ßT»C¥}x0Xm�7€2¸½ÁáêÆ?›±Uø©/ÕçrLŒüƒuÒv¢ìâX„§ºÅ2ºÖ2eÌM ¶©öɘŅʰ›DÔ´N…oޝM2zWÕÕeX ÚVÿ‘–¬¼ciöfl6ãWÇc3u^V\“÷HcÚ‡/_âY&i E'™ß}Ð�Nm‚àÑ«M´²BÁ”¡¦gLF"À_n²ÖAI‰Úµ:Ñ­hºˆ ˜+ðkYËšªk­@{Ò«Ç¥©¶Ó¯v¤AÚÕVÂ;æ ]<çuà;ðV‚�´…¨ï™õnµwî %ýÁ�º¡kCrŸ-¯Þ Œ\ÙÚ0[ßÀ‘ìV"’Ós#k±D x9èÃjmÂt‰@fƒ;©DïŒi¯®‘Uæ >ÚçìŸY¨—Æ÷Ì«ö/“FÖ JÎ9DïQËT\$pÇ€Mm=t‘uiíïfr––© 8ËôSú¡=0Ò¿µ|ô¡G(Ó‡£�¾‡È¼éaAÞÞ«"¬ÆKõ�>sãã•,|s“0#²$Œé[úÏëû”à6ÙÈ»�tbÔ†vâÐÿ~ÔË�ÚýÇ]Ø’¹gÏ](íœ_ã6â¾âžäyÉ ^Kj �ì�%ö8�¿Ò…¢â¢ûm)軇Ic«ìQ:ÙÚ„ÌÀ3šÏ½Óý¾�ÎÚ¡/Ëê´â Ö9#>ŠÒµëMÌUºlð…oiÔñ»¯{¯í‘ ªÐ*Ô8®›öì.{årxŽ{ÆÉXj¡ puRt sÜ^ö»y½ ‰ëâ«{ʞݻ©`2¥ª–ŽFñ}ö9÷�,Ò@ˆi㮆(×}^K�Sídx´|ðÁOplÐtÎ6ïŹ¨jtt¸œ9sžrÈŸ(ˆkôU<Åkù’v¹tþbyîÙçÀß.ΛރCëöœ;míïý›ÿ¦ìß Æ�²p-Ñ^éŠa†.fðÖ{™ã,Jþ‚ôŽ“E#P6Mô. “Н •—ʘƠ8À‘�“ùȼ!a(s†L\|Ó@”ÑrÜ*5Ûâg¿o8ÐsöSèSNQVeh :p£ä1&•'×Äa„¡\h4ð�çC¬‘tïþÏW¹š‘#ŽSÎŽCÉÖQê%ŽÞ§l Ÿ�'ꀪŽ3¿“ß*¯T•kÖ�‚¨‚œçiGeUEÚÏÜ™vT¬¢IÕû5r?Ù„ò ?Ò/£”sT¤£ñóµãÈ×¼w®òu 0kË×ZA^ 6�e$ºYö6,ug?ɦS[Žò*³üe‚óÈ@ÎÑÉËãýìx5˜%ãŽg«nž„AÄqèð÷ÇëÙã σS¶Ëç<œQVà]3&€b™²¤:_šÅ?v™Rˆ8’_^x9%Õʼn¯|ùKåþ�Ý_fЋΞ9Gþˆ†°Ž²'øÁ]³üéxÞ2Ì<—ÊÙK“TQh!¸eY®›³Ö ¿w,5DfBßP¯‹\¦)?‡cñæ܆<7Rž|ôÛåæ[Ä¡Üѹ, V&sÝÁ¿€×ø8Řç•‹„ÏÑ#/á�߉¡«®‰´®±ÍñHݰƒ=De=¼ƒ=Ç J 9†Œc ÒheuC/„(Às÷V�@èÁfýÚ*g€ã K·³û«Yü'\/K�k`™çœ`ûpNDã–í.Rtâª8ÎxÁ ÷:ñQ£¬ð´ßeæk6t|àÊÕ+Ì|_�¿�h<’}Ù>—ùÎr„â¼ü!Aâ¿79x’x)ÿ0xÁ  VÝX×c’R Ö°=qJTŠÛñKGð—ux^GhÅùH7Èàªðï%`Ȳ™1`@¯â—r†ŽjÇ-ŽQz°bËÄíFx£® mð!¸n`‡´îzÊ?²†ŒW§´¼Ðñ3� š­ Yu{A>p\‘=‰Õ,÷ç›&h(JƯ]Ìw’6gÈ€¢QÖ´fõˆ´$îLìp™€�}7ßZþåoþÁQw2®¥rêÔ :R‘�,àQeÂÊ3®\¹Þу®ä9�ê:3Ó3åŽû(Ÿù• žo!Ë ZÁ$¼»—ð�]ý¨WŒÿ´ì^¯ô𣶼ùüO#2õª'Ì��‘Ù£\dPš66ª6PvSYêÕr‚pªÁ'Ê^ìŠòø…tfмmf¿†v¥3YVe|€Ìi“L&x¬£Êý²5±Yß0pq'ò™�‹-i3PW$�°‹ 1/)@’j¼úÝæõƒ!ðz¬ÇpÙ´{í�rù|Ÿ~”v~سSY”Înxë ¿Ó¡f�Ÿ2±:Æ�ƹŸûý½q�{‡ºxm¼wov¯÷ .qýúËŸ”MÅRe€×»jŸ?ü¾×kãÇõÛõ�¯ pÇóºþ×:ª 0¥J’çcŸ;}¢|ûñGq�¥âûfd’:ˆǩ—òÁ8Õ9zËK‡Wdyd¸ r§¾àO�kÒŒ'N/ ?x~³�ºî—ÊS8•<ŠIˆã�ïu˜©¬¯¼4²m[ùø/þR¹íö»"Ï5ðúÚ¬Xpå<¿OÖ+<+ëÌ? ”¼ž–ü^öWAs­¥ÌçÝô�òc{G_à1§® ¿¶2À*²W+N_¤�‚‘{�Ã;©€ yvÂJX$Rp&²Sì!S±°i뀟ãëé¢ò•ιEʪ¯ñ}wÙèРͱpèU8ÒÚºXMJ²/\e-¥+Ö™=›>²»÷àhÖ½@ö{ÕäĤË�}‡µgÏñ˜4i6ò*ë*N,QÞÚàÓÈÁÙc”}é{]ù6oÀ˜ªï'ë›èǥř²…ÊCʦêÈVݲomÕÚt²E`¥/åeé_9T]ZÜZ hÀ}Ѐãè•èЈ¿èغУÝÿ„g/z‚U¹äêî .·Õí f·íǪËò eg«–¹c:ÏÓñt6*ß‹çU¶'�]CÞ£ì©mEYݹ,/©,¢Ò¯�â9 ÌmXÙ†U1›Ð!]CÁÄtR±z+�íîùÚ“cwnêÞ§~ͣ؀Nhè:3õw7�cò_pÈûÃA®ÚõKÚ§%ô­Šåe’«sЮ"l•Ôéè{+zªÕnÕ�{Iø/µëjÉi“l¡\¿:¤²Äð¿Œ-ÖÊÖ;¶Qù<—îÍœæ‘ÌÕj˜3áf™þy¢=ÒLÝÍàíœMìú"ñ,– ª°ÍnÈ:Ê(9þ‹¾"óÓàí¯17e(å›aeÖÒ€�'WÕéÄ-«ÈéOñ2‰bK™šÃg»N¢ ‰ŠMÐç*0ð�‰)Žül®•@mÌÌ|´\f� €6ÄåNÊ£k[µ$~=\;àaM­<Ð ¼,«®Ã¸…ãL цv93Ý�óTìÚI8ž�¹¸ÆÚJb£aýµaHëØ LRv¯Tß7À!õa–ÔóÅq]½Qác‚ ~QZ¼ÞB@ÿÐÁý—.±^,$㚣=ù´•)†±ËÌó6üTýðŒyÖ±×Hñ«GL$È|iTP¯‹îļÅWùIrnèèÀú~‰ð`ÆŒŸyɨ% ÿQÏn5:ßšù39Tp-K1 òµ Öt÷Œrþà`�ßrF½¿Ý—ã‘à�ÐðxetŽìµ2Ð5&,¹ª \ÒªQ@Å‚·»Hn4Gœq¹Xd7)ДE×!T@Œl0‰]!i�7–ÑãáD×,ÂÐŒÚñ¬å¾~ËèÉ‚aˆ>æ9'C£�äôä|ÙÊfê¨,»¨A­!L ¿`�ßß7¯Mü =ȬÇ9ãò»ßzœˆÂ©”ô<|虲ç[{ËG>öQèEæ†A‹û扎;vìXyúégÈZ)¿øŸ|Š Î2«žÓ±@´Ô•¼ú¾»Çr�ÊVµ­ŒÆ RkJÑðÞ¥ž«©‘ê+_ù›òÙ_ù,޳�)H_2Íç)%zêÔ©Ò­À�žÆyGýŽ�;á¡&z‘k¼?/gøþ�Ý{kÍ\ …OËMUØK¦C/N5Ši�xXÃ’tsäÈ‘rŽ£TöîÛAA$t„ÜFÿ*¨)˜*¨é(ð»5œ*:± Ø’åmŒ9BLöJ�F:×ëÙ¿f…IGÉÌd?µì¢BÍmI+ï*‰} “L ãpÿ“äºA; V*"ò”�|ìA”­ÿª|ùKTæ–<Hñ8Ã�R„ƒ{·Ñ— ½[6šßØu¯}Ú|óÞ…€xœž§$2˜‘Ï^ÒFC®º~†¢šŠ 8S…°ëïx…¯¦l.8¹Š·ìà=÷‡ÿâ�ÿZ×PÐ¥¢›=N�Úv•7Ý•£°a8ÐÁtÿÿÿçò�~õŸ”ßùÝÿ2ç7¯w¬³O~:ª?ÿ³?E–�'j–¬à�6– Iç <*_Q9TÌoœ/�È|~‹ÌóÖДåAÒº%Õ@ÍÝOâ$”†’QOÒy®rã¯sVPXmI…¥q>ã3(Ó©*Þ:µt`cvÚ€¯J‰óTÁ·oH0´¬LlÕáåoUv×)fÖî+®°×¹©cͶ�ŸTXì™ù…%Ð6?Æøå*éÂ&Ž>�Ï~™¾…—ãTÁâ4”gú*—FÆ©}M1cŒ�ðMµA‡c“¿È/·ë‘ ;ÚrbÉ*Çác‡0q²ŽÑŽý�õ±B—ƹ:n•Ex*só¬²f”pïÖªóÏñG)f®±ë¶Jdµc——p¾7ä°uæ0»ìñ È3ÑY{¥pš¾Täì[pu2£Å5î- ¯xŸãä§à¯ãw]b dhf&û›}ÈÓmãÃ?xØç<ÿPZfÎYxk¤ ï£é*eùiÓ,!uq�‡$óÇ“Þ ~Wo ß¡ô¬4$ͺGXmkmE=Cy{Õ£äËÊ!î3Û Â7HËcZq†hì5hÎl#šHuå¼G�Û·${Èi8†Ì‡Wyçµï2ùWèÃ��ëûg߸寝�çس¯w_~kŒ—®®oËßß½úý«Gu£ï_}Ïõï+ŒlÛ}@#— ¯ënV?Uδìï+£¹î¦7ðѽ!ú*kìûwêR÷Õ¹cp“sùAð¹~Ž‹7r%ØœjIòr÷ÏÀªþôš•%àüÁ1rÞ_Ûö½ïøã¾: ¥Žë.`ùšçt2Æñ»ÑBãÎ>;/Ûz5ì~ÐÜÏùš)ñ�4pí3o6>Ö/Àçk?\÷ƱHS^yï+�ïüÞ‹mšË½�ÿ¼½Þ”o”5Üë•ßÔ)WÞ"x©û nÙZþѯýgq>ýÄãåêÅ“föÄÙ2²cWé§­N$f|V^¡ÓàÄ&�ä|Ù†ÌiµËžÞAúóœèqžŸŽ§I™ xvpævÿàpô‡px�rã$C:‹”õæС$&GÝ]úùÏ”]ûfþöe ‘[€Ê8¬âçQÎÁﬤé~ý‰/ÔCsü¦Bò�\Å}èc îÞEÿ0Fá©ì•ª[ÈT:Á—uFë&Äq-Ö l�O8W[Û,7=›ìM%OåØ6|:{ç8žÓ=A^/»X#u›6ʯ/͘Žò KHë÷Üg+ )çñP`ºÎþ"¼õßèps Kì5êiÊ‘K´ç8­f™y“›ñÇÏDÙð6täžž^ƸP.b{[7Ì vQÌ0V†t_Ò†æqokØÄø—ùÒÎ*Ôð-)C†&åoú¥\_žm"ËyÇ|uèÖìe3—òbccù£#,Ñ¿´-00TeÌÈ”ìyê�‡ÆùJv¯NM'j;+à¼ë" uJª+7{TÜ4�£%$Žõ›,ŠZ>CðÁ™ýÚÉ4‰(ÞK«Ã8`Ûc降¡ê Êâ²k3�NÔ M¬¬ Íxù®‡ç#ߣ)kOÏš}­.å9Ôžao…ˆj#`˜Á…M�ùÌSÞ|¹|׎Ñr…ÀlK‰ëDï¥b•z•û½í5· A`‹“¶Ô¿¸uúôé$óÉçÅ·TÜ�-w&°»¯Ï*gîqàr÷2ß >Ç“Dt%Ǫ·1mØß׌“ZÇm ¦6²E¹EG»¸·¼ØÙ?nðL¸(ã4ÑV ì&! üèF73F×Ê «”êwlÚg:M‡vŒ¼$)wQ]ýX%Z¸ŸNüšÒ�6Í4ò[uxù§Õ{ÚZúÐ!{áoÚ¬*Š?ÝFŸŠºª:I_Ì"·¼¾ÌµœñC¯èËÝ­¨ßŒè�9ïÍÚ'S[ü_^u�Æ÷czÇÆš$‹œ1YUÁŠ ½ØÖóÒæ½VXÓ«®'lAßàø*G+8vuÊ^|AÚ¨ô7kÇU¯´æqöÚ“DÒ�¼¹cÇöòô¡ÁïñØ~Ôó„‹�(VNÔÆb•¼ÖË£!Äa‹b&–`£o«¬#];Uð[ÆÁ?Ê:®‹\Ê�ͬ-‹‹~ŽŽÜOrÕ!mvUkâïêø­“”jV©š,beD2¦]DØ,àÐÚ¶s/ )ÿLªC•Ä!ñøúv\ÙŒ™¼‚šÀ÷¼Ë—^:RöîÚÍâ÷…p‰BQé‰u²é�9Ê`À1&dt›(‘!F¡yÉ$žJ»Ž6åïÎ’BDê™éö)0-µç<×W1œ… kãÓžLRaÇ5…¬ÅÕsåô©“åö»oð¦÷×Lx7C‰Ü¾˜m3=¿àÐÈ/r/›×&~̨ ,Î9H0Ì¡+—`¬�@Ûýý+næði &üÂáÊW¿ú÷É®Û�IÚ—Y_>;F„ÕdhÊÍVÅXшº±ê”“ÚÙ4V _Ëáæ¬M²WÈQ0˜Â‘þù?øÃr`ÿ¾rçÝ÷†Æì¯Êág¾ £œ�ûRÚùC?óPÙÂ3 ÞÕp- m^›xç! /�ÐÍF:ƒQÝr.–êecW€bƒxkƒ€648‰É:€ � ¬nÕqg4¢í+d+€¸t@_£Dyº?Y†Õߣˆð³ûŒ‚¸—c¦ùî_ ÊŒãÐÁ)Ѿ“- ½º_}ñ¥2ö‘K¥{Yž¿Æ¨Úç[Ú¯2?öÑ||½¼Ì*£,sN•Ÿûô§0rO—?þÜ¿-C[÷#ÏÉ5ËÄÇÂpÂ(€9W�0;Ô,Ë uóŸ÷<”�TžÂPOœ8™iÛÖm¡ ¿Wiú�2(8fw�å�� �´i&ƒŠ�•·}€ù-eìâYôz.´�‘W®ši…B!þ¡p4�{â±ãœG¹h¦$ÕY/>T:Tz8ŠŒrà/|êÓ”-ÇŽ-ü…/d�¤2M¡¤#36ƒÏÎqzž=WãÒã>ê<«q…Ž%A#~ù^zN(ãPöÔ`€@ÌsÕÙ£ØÔ6TNÒ¦sUI ïȨ0‡&£úÌ?�ƒ}(S«Ð/#; ãöø]ƒàUµ\¶Ãgþbèà=¿ãVo¯‘I³¾u¬*hD’×x¹ŸGæ~!“¯É£lÛ¨dÞD9ZåY�vhkˆÓ±YÝsÖ, ¦¢®³’ÆøÝ,Vø"W ¢´E¯é×À Ç« ¤óQ“§ÓÐaªÂæ|5ä>Ž‘î]ç%lÔ� e;Jú…qÕ/ˆ`ßü¦Bæ¡‘gÃ^‚éÇi9cÛL;Y#ä¤�9ˆ®‹Ê°ã±×Q…ð>öã|ì_|Q�ŒÁÛä>‹™œ}å½Ã¦Mæàš8ÞÖ¶®rüØ "߇؃ºË©cÇ©üCÐ2¸´ˆž¥â¼€¢›@µGñC‘™Ó„/££kz Úïí3ÄìgÆ…ó?qi £.Ù‹²?;3Mäøð §6†µöΤµŠþ$'“XêHæX±)И™ ÜËbJ+B´°Nfd³"•I¥=#ìmØ’æüŸvTЗlk…õsñ¼ƒyº÷‹³Y_q„q¥ÄxÖÙ5æ^x�F=Ï 4èÂòx¤.R‘ “ßgpøÎ`œÐؤ!ÂséXÀXS­-c?*¬…EŽi`ŒžÛºœ—.©dW/öÜóîð—JŸVº–Õ�&¿"$#tš ׄoÄÍ@ü$S"Ñ9ŠŸq� ÷&Œ°N‹¾\ƒeæ°Æ…Qè^¼e~]ÌE<<'c‡ÇUZƒÆ¥ aÃCMÌÛ+Îtú4¨×ÖÍìÐð¡,åºu _iœC~3“Cþâ¸*_·2Ag²?ú¨†ðëÿ«òÐÏþ,¥¡÷åhŽ/|þså?|îÊÝ÷~°üÇïò�¿çNþẾ?y«pó{yí e†åµ�û"óñ»=y¯méÔðúþ¾2(žõWGÉçè½ù·Ê➬Wæâ½uŒ¾Ú�í6<ã8loc¦y¯ü×ÝZ“ÃÄk�4è-v\îÜø?÷6i¸ƽLÇ”—mG&¦ �ÏBb£§�É9e¿¡²!wè|Cš¬ökÛH[üÃeÖ­²°°—Vý/â7ïs;L¼†¶ùY’v¿ßø¥q{^í»Â@|¨}ù�0‚ڞdSz´-:ªÿù–ñø{Æ­¼e€ ²ß;åUû——(×*«4ñ^§v'Üïï:÷*kMŽtÉ™×»Ù{o»ýNlý3eÛŽˆ`+d¥_ÉXÆi~õò…Ò×…Ã�ª.fóZ~×c¡–‚Sn®[wÞTF¶ï�·�MKµŒuŽN!-:%�Ü]”–VMH`™Y?u¬…úc{«p¶¬ò2*¡k¼ëCȤ'v…£�æö¼é]t\O³Ô…éŽX�CV¢±šf"K'¼©�=¿ÂLÛ+ùÔdeë{è0 ‚ ¡„èŽö õVÖ§Q‚Ú5øI^®¦¹nxïÜ䕬E Nè%ûº†Ç/b¯-:ÔБç§�ó‘É;zIBœ&ž ´s~±òá³Â©«×sÁqêEæ6 ÊRÑU&†¦YCÏ_] ˆ¹]=×ê&®‘gp{®zg»·{�Æò7q+4,�¦3¶•£šÄ3_¬KÖ0™îÞw…#œ œ\Á–¶®ø�{‘t±Š$þd±òû9œ„îMÓTôRÎÔÙ®Œ)Œ¢Oïj L/ìΚBÝŒ§¤$?”6ôgÉc”˜Ûø®Ú=¨…nâ�Ézå¾Õ5l€ÀHØaö*úÄè ¾�.K0É‚ÎB¾PŸ˜™!“—q9v3°ÇÉÊ�¡y¬üaž2üêvÚ7|Æ9üZøXX¡L_š™Ýö£žä«ºŽŽ÷Ëcc�µg]'eO›Ì±�÷,{‹3«‰¦#8�ë½8GðD�MC”‚fô£•uxõÏlGWÞïœ;úLþéÄFÓËÚ¨ÃJ#u>–,�,͘Ç!é[�xÔS- Zë¦ò2y½Ïz´dNf˜xLB zN'Áê:ˆóÊÌ`—íb<:žÕ1\ÛœÙ�-R¸4l±²|×t�J™ÍTšZ¦Œºø§SÝ>WuXÓ®¾ÊNñ�u�–qª÷Ìb“P×òèh÷mâ½zßÇßîØ:H[àðÖïØÓd€³‰UÌxæjôÓ&ü˜ÚHzÚI„æ3ap+Ü? .ˆ�­-ØÖp‚Ë;Y'Âá tÈèà€å�î4ˆ�;ú,©¬à±sî9Mëì‘ÊÔªyf�ƒWØ9ÚÈl÷´Ý®1?Ú)ÓßÚ{ܘD0=ºë8Œ\èyâWÆ.—‚ªþ��–à~×x‘ïºxnp@ÇvÝc¬�`ð„ú“µôx�n2é oâ½61«É53/ŒaLŠ}^‘$xÃÒôèœÄcÖÔLxƒ–ØŒt¢Û¦4'M¹ŸFgÅ–ÕL߱τV£ Záòn ¯ÀY, îü·Ÿ,œ3vç½§a äIe”o÷åð�`°¬ú¹s§ÊÉcÇËýwÞ RaàÀ¸Õ ¢WA†I¸ñ‚Œ‹,¾LZ «(Ø–Š)bÎ*€)DñgÌ"®Hºà BÓŽ 7ýyDc€‚J«Ž £„fi·)ŠgîÉtd”[¶Ž”ÃLþøÃlâ” a!ÄÇS}Ò®¥1Cã‰ÌÇ÷�#sÎú¿ÝÀÜlo¯ �Á00 ¦;÷Þ\†·îd³˜/»nº¹ìÙ <�è+‡‘SW ®‘yÞ~û‚Çcd­_²ü'´t•RÊî\Ò¤Ñ_26�š0 þdRÐÊ¢Ÿ8q¢?~œ÷û‚“:�âPd*¯F)·nˆðþÃf)‰j^2bu ƒJ†™ŸýÅO—/ýÑçP,SŽ\úÑInö¸Ù…ëÊ‹(49ÉçèkšÌÜnN�=öxÙë­å^²• (SÎ{äã/·Þv°<öè×ÊIæ ÝzU£µr}5¼XÆ8r- kdUhØ{›0X3Œ¦Ö<Šgå/ E8¹o£³mÐm-C¨ìiä°Žµ¦nÐø2{´¼@¸%R™¶|¯etx P«Ê©{|Œ Èʱ¤9M£ÞÍø(j„׉¬Â] LðF×D]cU “m¤š?Ð$ßÓ7†×кʨsâÖŸÏüªQ´gïVÎ?Ó±8B…,•Bù†a�µ]T[𙬓 *ïu:ÊÏjÂ�Zvm…¥—}¯£¸ ×&JF,Ê¢QÔë™7k/ïDGp�âÿâÕç�“û‚r¹4æpÅ!è乫 ýʹ82Ëĉwh|öòIx¶¸Å«úˆ¿V<©ÏE‡q …#¿&pE[8ÆK?Ò�ãСëó+|—b¨Ññ:îx~Ãy׊b/~mׇqT\)c“8&¦“!½ g‰=gžr…*ñ:#À0Þc@¢Íî^³M˜;ʨgÔÆ`€þf™=LHu ­ûÍùó'ÊxûÊ< 9É_!ú‚O|Ìwö­þÌ­Ysƒ!4¶¹^a@¾àr {t°üÖà;C–ÉàÀåÁ·¥:“íhÐ�İ2�ã¾¥ýÖþiË—�‰¶^ öéÄ3Úk8ýTäõyôl:Œ¼°<xÓˆC ,œ‡Fòॼ™¶}§!Bx‰ŸÂÓ>!—Ü¢=Á â¸8dFæÌX5’i¸3»Þg-½X+ìÔ2ÎÒ¬÷ŠÇÞ êæ‚»:åkÅ &œWø÷v#SuÑæÕÉ™2IÖM:½*ä]òDçUç‚a‰ï•…úì}葟+÷Þ{_J¶÷ÁÃÿáño”?ýüÿOÿ™¬Õàp¹|y,|tϾ›ÀEJÂOÀÃÜvìØZvíÚ#ßEJ þêoþN¹ÿæŸ6×'0s%²,�M…._¼ —K¸³æâïæõþ‡€¸$�Ë ¤¿‚}Ü+’5ºÊ’ÝJ¨?›­äsÜæÛ�»¤¶°†}O¾£ímÝcfz©lݱ»<üó¿L:Çyà1³j§öôÄxæ×ît’Þð�. Ã4M‘Å)¿›�†ïc¼•Þ¬œÕ‹|ëŽ}ÐÜmðõ+tOdÜV€èÃÁ~Ó-wAóËìG㙋™£fò]¦”üɵr‰Ù‚] üW?ZÇA k³á©Ðø"¥|ÍÈkníNF;«J·•FèO¾+€ÉÅA!ïñ;÷Où¦,SɃ‘…̼¯{ßeÌU~p‰¼"ïƒÆøä{æ«_F¨¬çù«u•#{‹c°/÷)ù×5ªuhtê\"²†ÂÔ½+>ãwTuœq¾†™¸rðÆüâ?ò9å åû2$ÁÕw¨Î'…™\|vï7"[ð¾aRÇ�A‘�2ÿz�Ÿë¾­Óç%ÉL�óöîŒÊçŽÆJó80ÛÑSû8¿Ô1øŸãd÷OŸkàG«0€Ÿ:&÷ª §:?�²Â±ƒñ(Ëe<ÀÎ{rJ?{KdR¾cÂyïXÒ—ëÅs¶câ†ÙcÊóÊwÂÙï©\Ìš ÚÝXKç”@@:±×�x¢ŽË>bm‹Gà€s\æ�èðü¦Liå+±ä¢�Õ5öa>r—�]»@aöŠ�¶øUqÎ@³È*΋ßA• ú±"•ðRŒ—BÃÜ×,X qLX¯â|ÈÚâLÐIàÜÜ’xÉo¹§þ%³—϶%îƒf:ÈÊ1@e[ì Èͱ-ÀKÙj‰ÁêLõeÏ §÷dT^8~¸œxá‰Ü³ãÀe÷þ»Ë:v3´…@N’q*=óÍ¿+WN|‡ã¶—í7߃z$‰4®3 Lz'û¹2?vZ.eêÌéÒܳ=Ç=vcY¾öoâÏN×™+g¸ÿ,óÆÇœ1v G0wX]T8’ŽÛš�g&Æcæ˜00¢�#`” –‘}û â(É gN”#Ï|½ô¡ƒì¿çÁ²}×­àAˆÎ�u�>/ž>YŽï1œ›—Jïèî²÷Î�”Á­{á³à€8Eê–g^>T^~ö›8  ¾Þ½¿Ü|ç‡Kû–Ýq$Úœë…_ Ø"¯ëú /?‰KÄ•0ôîÖžà†‡�ÁPíœ}î™Ü:¿uf·Ào-™¿49¸tâ(7ÀA5ùÄ€Y�‡í”X^ XÂ2Ð9³‡´™Â=CÁy‘Y={‘{t̃$àNTx�:Ý•+-ôM NuyƒÕ´LˆÔù»B€©tÁ×ù^:pð±%~¿z9ûâ,Õ‘ZáeýT‡²ú²{Î$ûÓ*v§õõA|P´Mo/.Z»ò"|¥èÆØ»éDî\KB“©‹�ªƒä±U‚ÃÔŸ*ß2”û€#1(×YÅVŸsÿÒy �è—?Ä”­»)Ïêw¨†Þ«ÍÞ=º•LbC»t±Œ FÎô|ìø�Õí,Oo¯Wd~ÖB×.à™ëfÔF^ Ÿœ;^…Ýœ:»±L �A’ÓÀI¾m>ÛÕL@‹ª¬ÉÐ Ö'Á °÷:?õ.m!V(ñ¸ >ëæžî&(-7Cò^ËòG¾óNèËjnUSZ¡-èP¹A?ñ*ÕÌH6èÀ …⢟½x`´qfcg9sö¥rï=�”Ý7í籺AÒ].âí¸"ˆ1hžˆƒ©Ù©ÿŸ½÷ü±ô:;Oå[9‡®Ð]ÝÕ‰d7£(Ž$rF”4’0Ùž‘eØ0öÃbûOì‡Å~^,üeðƒ]»¶žI°r¦ºÙl†ÎU]9Þ[U·ªî­œö÷{^– •GÉ&G”ÜWjVÕ½ï}ßsžóä¯gNõ|�Sk#ûg�–fÙûTqOg›¬�þM0ãƯ!ÕÕ"+L‹30�§ƒÍL™mÛ°�~V®�#àˆ£*°a�€ l„'LØày(a`•­F짯ÒK;�23úŠÌi�ê ‚·—ÀUš èHÔèÉö‹Þ·ýUoOïÈç´> 8~gñèÿe@@eT!¯2¼Žqk•�Ù³TrÍÍN§³ç.¤M‚ËÐÍR~:c¬‚Ê!mnlW+³1 ËŸÒ­$âr%ʤt‚ cÂ�Ê·Œ.Z$¢8†ÒÁûügåS;s?žáßÌìí>;ÓŸþùWbüfËÎÓV¦+}ñOÿ!tÛÂL� [ª;>Öó_Æa?Úåe‚‚"”'¤¦×ßzß0Jáéq½_‰õÿ¿Tô=áý*j;›kéÆ#¨X46ôes¢�[ÒŠŠ·Š|e¡ ªüX¸…âÑÝÕÆHƒÁ�!³óój±È*d÷ tnO3Î*+»mã‚qˆª òRE–5 �â�x[N•q¢ë 6óz¯†¤2d–ʯýNcíÊiŸeE\Èyá¢%ó·Ñ/ß‹¶ªð•Eƒú½ŒHÙÇ`vþ¯_:@¨AaÍE›-|LuFoŒŸùµ×øèÂ�$NÐB¼·ó‚8³¹¾øsîÜmpû1f= ø¹­�OèèdC¿©:%½jˆì‚ç&‰~üùRafšyÐ_Ç�k ]ÍàíI ŒUðPƒ Bc}ÒQæœV¿ìéëJ×^ýišM�]¹×5MðÿÖí[裴ö‚uà™T&{ˆ€ ¬D}Pº�ˆ4Œ� %ûò3 Tת,õ¹a@B+: ÃpPÎryÅûA@ag­‰4ÂS=3ªT¡!ïªì7ø£‘ïç¶N•[يˬkáÆϪ#ËÙ¿�5˜³5úwhG…�.��U$¨ ÏIY�*ž4¾è¾ø8ÖæþN>wŸ¾²µ[^QMà/|ϱ/íí�éìÈ9fο�þPâ™ðD�¤|îš¼;7ˆ 6[:ËojÐ÷7a=ì�cô~Œ2çdñ•x†º¿e[‰¬Ïôù—ïeŽ7“u`mÜO°F%tìCšï»o*ìt k;¬7€áwÂ� ?åÒøkæúlÏ>  ëóoŸ•GîŸWÈx©ëàë�;ÞÇêYy¬Y#Ñ—ç®SX§«Æe+ÉÑÙ÷é–ÅÞ­ØÙ ¹�ìç¢íî9¹À� Ø€dž“ÅÞvŒ£“³QŸ£å+û©Ç©‘Ãq&>–Ñ#mïèÞ7I®ÜÂhø¬Ã¤ ªx�gM8·Š¥: ­§e‡‚ãd¨ª¤ò·»MqÄÓ³à†ú£ç �¬n„ãSÇ‚8Ž/ö,Ý6G{y³È3˜‰cžY$Œq{dü ËXÿ� ¹÷ð,V{MÄ1ùÄ«t˜è”É®—"ý5ÈËó^,nÅ8®÷Å·£ [÷ÍýxOy¬Œ7è|„á︃éâu¬•µEÇ4 {¾£]zâ '÷VÆŸãÚ"Õ2O\}2ƇMNŽ3�û"Æ‘Ùyp1kÿóKŽ ¨›sïl¿¬AG[ÒŽ §^¸{@flUn¨üô:t{¿%ól«GÂ�_ 3âäÕV¹ ÅuU©ž(_ ÝEý6(á¨IçþÚ «ÿž|QG­RÉV±[[8À QYZE bÛ3×£¯*¾å²`ǧl¬ þ2RX40¨¥.¥@l›ûxVVžÉ�ìŠ|�µZý*£Ó/£Ÿ±DÅû9OØ µÉC&†j¯îÀÿ¶HþÚdüØ]ýjÐlk­L6©@¾d€Ö H�ÊÞMàÒÛ7�ŽHÎÚ±Þ?”¯F�–u/S�»J¥p£-r;zƒßÖ S¨WYÝiW+‡íçº[àý�øpåwV*²pàTAץݴB·'4C®é ”ÏЙî뀵›µºœGfl�}àv-ßÅ ®´B¶*–¹f“ÀN‚›v)P/«á?­|Vn8Ü@r=Ï—Îöפ\©'[$ì"uvÖäsŒ�i/°atvº³qM%IÈúѬðÖ\Ǭº´ËKŽ ü>F;Z©û»æ*ö»OR3Ü/tWíí8Ûì»Îôbe¾�^®9™�ò7ck'�¥´«ÂFúf,†QŽ6d¬‡Énl©[�jÏÜ ]>1 Î @cú![B~E…7r\™k Y={ƒøÚ4c]͵‹LÜc¢ÃgîyÏrˤlígå¤û [ ²‘'8BÖÑ›&ñ5S tRIÞ@üPÜ0‰¯²œãûv̳*ž]‰Ô‚ÁMø'¤û²¸Ã[q¾Öö7!Å8_åkÑQø€³3ÑÛü®BîÕŒ>Òsé „{y¯¶¾‰f-èÚT‘L²i ú¾>ØÎv;&Ðu” ­#ÿôûh·F§_ÎÓM(_L`7ðlŒg{‹ÄkˆõÅH�ûèc-èž·øT‹?U�M¾ò”0©·r?u&²�}*µ¥[mÐÆ&üºÙ`Û} ›µ!#ñœWÿð,Ô7]Oø£Áç:èM|0ùÞâ,ZÓAc$Ù0Êg‹DL÷ézµû¥=õ†C’Ž+ñMè£rL@‰-Ú‘ôò§Ò·¾ùÒÜ4ú+ •�>ë¦.§Ÿlƒb—êêmº+×�{øŒõ-°F“v ±ÃC‹ÄIz£ Ãä§J 8»S˜¸é^ô•¹v‰k›C·P¡©±�$»LçÚQ®Vp~ø%°!e,€Ÿ:ÜK8VVÈ€8¤ÕÆO>�ª!oÖ°ÜØýâé“!{a|âaš�žM}(B"H#‚DfP„�Èâ’�V8Ï7.¿ˆ´ “ÞÚ"»…ëýg–†ŒQå6>Àrö‰Œi³Œ²J–«ÏøÁØb4DÖ2[˜–•xÎbR�.¢èÖ�ðÑ: ÇìK²Ó úuõŸ3G–Ì|Ÿ¬ÛÊ”QVGÜ…ùÒ–†wŸ|áE ÚyÄÁ|ÐP|t¿Gøõ!€~c-Sq:ŽA™ÏôÄh:uú,4^�ñü ˜ YQ:CçÒ�8áGð•+/tÉ |ɤQéàÄ™¥²à+2�ùÝ+ý]¾ãLÂ2†÷ðð„aEOW®^Mÿü¿ùÈæœeRA}óÍ7҅ǯP�Óö¡ð Xà£ÿ<‚À/�@&#Áo”U]ôáxÿZñ_‡²-’ü=²ÓT’®ˆ™ÿè×s�FžJ¢øëÖ]d/sIQÊ•aY«a„¹JRÌœÑØCPÁ’~ÌÊÔ™µÍs#[”‡yo×gò˜÷)ãHV~ªi`¨$e3�X32RǯJ§ ° ³óbß»ùnºòøã¡4«Ôä�–“W;X�°0€ð38üŠû¸v_:;4°Ìlà#”(•/×o[½M2½¿ò[n’ÏØËo²¼G×~„! Šˆ =Ò•¸Ð@BE!ÁmÐ5pÊk~/5¾E¶_|ÿWmWuÌ�C=®Â!ü™Ï%|=ݼy3Úñv’E]*u8ÁàG&ª;JwPrÒ”òÛ÷î¤oóéÔà`ê£õ |ßΦê!!äíwÞ‰ÊöŽÎzÞ£­ ÷±K‘8î¾5r"( Íhxù¾Î�Tq-ú¦?‚ÿÒ€;¿çç³ÒwTP{-ÓQ¤qdÐS#Å l¿Á?,¼ÔI…µ÷ ÁÞ‚y#ûßû°æyÑò9_e‹2hUÞ[§á$ì `ê>êÔÂá˜çûr=]üç>qVñäw\�ëg=²Ž¬}%�|t�5Yµu—Iºë ç…û6¦óWÝÃo{2�΀cöÏFâùVO¸>9¤³¸|.»ÄèîÀš‡|�÷-|ø\£K&–÷öy�ŽN†#»¥‹™–¬µ•îDÊ0çƒ+C‘Ž(Ï6â   þ§íªlˆ ~Ö¢Ì4y̵‘UÏùï¼�ü¸ªL :à3âd–¬¦!®~ËÙyœ¡¸à�ó6•k­d™÷&cdtf²ÄØ�{ú _'ÛËžðAßýÑý>*ðœåW�a„ èì†ÞnåëÊüxZ¼ý]‚=“©°OڅϦË/|–,;ZAÐWq�Àøõ¯§ãÂ;Ð72a|$]ýô?K­³Ù¾Ê«2ºÉª-7¦^'ð½�Œÿ45ô<‘Z{†2y@íð!‘Ã=Z§µÔLå–Áçý-øWÁÉÍUœµTɇ�G›ó£M~”÷@q•Ìà$¸á˜6‹X6Š´wÞ/§Áv[õ{t,ÉS4CucûHì_m¾ò‰Ô;8”ʳ¯¦Ž&ô�^ŠcVn¥™{0ë>ti0x—ö´VŠ®Ü'˜½›|h¥Ážz h Þ™¨¶H€³¾Yqú|Tum—ÒôÝki«¸˜rÃiðÒ³©’„~�Íò¾Cçë+s<ï £K©�k†Ÿx!ZÎÁ×”7H ž3iü�WÓúâC*-;ÒÈ3ŸÁ¯ržÏ87þÉLN˜¿#ç z¢ã�yòåT3r5Ñx%‚l[?s÷õ”Ÿ¼Ì%@a@IDAT*Ò©óϦ3�,UQì°‹ìß50C ~öþ[$%Ü�d…–�'ÒÙ§_¢˜–£º#ú�IKÓc洛±79ô§Î‘4òÜË©Š$‡]x  Éê|ïÝH+£¯bQí¦å±þtúê§S3rîÄåR‘`îěߠ­ò"šÖtæ©/¤îÓ—ÓŠ¾Re$ç½½–O“ïü(í¯>¤ÕlMêyì¥4pö©�èêlë»ïÝx%-ÝYPÛ{¼yÇkÊçMÒ˜¸s=­O¾™êŽI6è}<õ§ ª“7á«ò¹£�Ã47önZû1µrš­ïICWþ0õœ¾„ÿ ¤A¹³ò¿0{?ͽó�Tw°œ6¨XÛ¼ø‡©ÿâs>GAñƒ5-ÌŒ¦±7¿“jwçS‰sÈO=–.|ì�áã�µ Ì ÿ ·Œ^ÿNÚ]züßNKMCiøÙ/¦žÁ‹ì½8mÓ²úá-Ö}ÿ{aHð¾ŸK¥'¿�.=ù)Ž„Ä1�³›ãLÞý&t¥TêÛÅ�Åórts0ð/�æ&ÓèëMìñ�ï‹#éüÇÿQêºrΤ2»@Ü}í[iwñ5dPcšœ#ñá±Ï¤Ó—ž‹ÊKeû�…ñÛœï½oÔÚK‹3$L¬½”žxþsmñIƒ“&¦î§±Wÿ}ª9 p¦º>­,> Aå‹©»ïŒŠAÈÜe‚ç÷_ù«Ô°ùfjF?œ[º8ÔÍÈ×Òì­TšK+ù®”_FF‚çù‡ï¦ªòÁª(7 X¢ì¾ò­´¼8 8Úe ζ–¤–ÚCŠtðí— Ð5õ¤z|íeàyÌÌiƒ?s ê,à?3m‰ÇsÌ{¦�õö¦#„(¾VçŽÐ1 (nÓIó€$à½ÒRZ&ySùm7ƒ%h�©µù(­Q 7W(§Æî!¾[NScwC'°Øno?Ow„õÔQ¿Ÿ&¦ àú\ªG¶ï@¬ $ŽÁ”wÑ�·o“¸bÁ‘±jÒÎÚm‚òðžf®óÜñclä碂þx½œ)ï¥I’}°7½_3‰J#�‘$yj0U7uú-t”ßÞK=R=XýËYàU¡õIÙÆ}þS^�ão‚©à¾ïÚn}ÇÂC¾O8Fßua¡;FU*¸¦ I�V³¨:7!ÉgÕ7·§ÒÊ"ÏÔΠj;CüTVˆƒáG® S¿×“”kp+*ÎÁ#;bYźCp¾š@¾6ž¶½ 8Ò¯Ú¤ ð5¼oo ;­¸JðœÀA>ÛJ‡~ íÕ±žÁÓÃà_1¾>4žqp@E5ALýÒê ¾¯|Êq¿jôd× hVÆØ‚Û`¨AÀ˜™Îµ+ 6î²§#~jo¹?Ç%ÃãùÑ¥ ž` ιä&+ÔÄ®B‰4 ês£;²b�¯|Ç2Vøïð»¶¡ö…Aé}äk~Cß¡0´2œÄøµçeñÀ�Mà"/É´íÌ>ã쪠._Á:%;ÜâSß0™):8Oí)Ç– ÖÑn<‚ÿ¯¬•�ë6v�n­$ššÔÝÖÆ,o’â1ÑùIÀà¾kìiš/,-Q4GâÀ5ñ}iiÜ©Iƒƒ©rØìÓ½€5–ÅpìÁRÆ`²u÷£]åù›„ÔB¢Ðqš›²]}^d‹vƒøvôj'ÁK›Q¸[(!~›HpÄ÷Ý—ÁÖΪ®€»:¾4¹ƒ|-SØHµ¿É‚ÀÙNaÂ�zFÁä¶¶ 7Ðk²]tÖäÞú-¨Ê ;Ë33Y`¿ÌÜqÎQ_°4§M a ºòñ�ï/m±jhÌ„?ã4&Ì”wïvK«³%:ÿjÝßíû†7mn '|?à�¶Qœ=ô‰Èüm§€ü;{èRv… ›”ϵçì -ÛuB¿—ö¼z�v±¯,ÙÉdF÷ZMb�#´gkYG:‡I]d%€“ìQÁF´ó ƒÀ7žã>”«0‘ðI4p¯‹—Ð7H$¿wçvøõ?ùŒŠà Î�'ÎËXÔú:›R sƧìJ‚Ì}Hdcl™¸Ñ‚Ïây‚øZ  {"ÖcçAyÁ.{Ðn[5£y‡±±*«E³1rt?•ÕuÃÎå5··3ïëÊ)›âa'ÙÀêyqv± •%ç“­w†dŽüpöƒÀÛ+ÅÈr�èd…"Ì ¡È&šÅ# 4öCÉ £[gÙ0–MÍûKfìeÈS€™Š”*i:J ꨨ¾¼F ±<35“ΟõlvAÖŽ®²ÿ'ÒùË—`Æ0ÜC‡Q5DõöÛ¯¥ÿÿ’¹ ©%ך^þÔˬ_ïνAà·q<œÉd÷maXª$W iˆö¸mdó¬`$Èø6ÈS`-,,cuž�F¸B*‘©J§*::¿|á%÷�)I_q}üW¡ mqý1LRÇ NÔqèèì¹³Á o½÷nzñåϦ—¿ø%– c£Qõ¡ÓN>¤Ž2×OýýûOðÆß¿mýÎíHg¬ô’t¬”BU�‡ÛBðDVøSy¡£Æ |P%ƒ,GÜ�HlÊåC(xnÖ¦‡0¿¯Cg*-­¡Ôã¿Qú1ÚuÈXÙ¶Kƛ٢*ÒdÙrºŸØÅ! Z²èTÞ•ã+dÿ«èèðû¥­0×q¬2�ѬA8”ÖšI$”p”ëIÚ$Ž¢�Úb¥^¹/=‡!õkž ûñYY% T ãåOàõ·½äò ºÁ³çS?•1?ùÉ×Q˜ÉòÆðÎf ;÷*s¨(´…Ø WHªù%÷üÛžóè½�6NhN~¯*~:klƒ†YÎfËù ÿü"&Y­)|“æNhô—í8¾J†^¾òªzÒýñÈp�¦Bf«'pÒ…œb :Ä;è "†~ Èj/¨JéÌé³éÆõkº®¦?ùÒ?Ô†®ÛÒ³Ï=Gg¥;é_ÿ忉Š'é#Zrò½,`—e½f�hsè_CPç€F“ïû²…FE%ÙÑáØt>˜Eļ'~‰qB¬ÑêßöbÞȬ´(a ù’_”æx\Ü'Z”ó{[ŒP 3œ•Ùî1 ä³..ÏHÎÀ¨ÙâŸ4iH¸gAv®Á1©ž ¾APx€s® Í…çy~ÕÚüôPÕÍå¹[´…ó¿/^86ib|,`è,4+Ì?¢f È’‹ÜßþÜŽïi�iô11æ„Û;“gù�>ógçÁwOpG=ÅçËÿt"˯Ml0˜ì¹97Üû…aŸ¬Äø”QÁxý>Ac×&Tš÷· ˜r“ørÅõpïHàeA¡•+ûHÒ9!M<|óÀ³,mh@Ã\ ˜ó]e‡vP {¶zm“*í—Á®¡tùÉÇÓ'_z‰ŽbCŒíéŽì}÷Í2c1[ÍïPU± ½93R˜ëàrv[Ž jí.c€Ìö¹:vt>ûžŽ$qI< èsf•T=42âJØüºŽŠ<ÏS'LIÇ)ÎçùÍbcåçæIäœJcã8n/=ŽN:Œ#` {t™{g8Á£¡ö ü}¹_ÏHØ*WÅ{A{d;¿‹Ë&“(�܇ǹH·âl†/žCÌa”–|ŸÏ½§ÉÂÇÛ»G+Îŧ¸æý÷„½<êg8Ãç¡«ÆýÑ Ð H%cœÀWb&§êTʾçwYlÀާÅÃNxKT䱈Î'_““é6-z»;� �&NAÛø"z3¼hnò~:Z{ˆÃo"�¨�•{éÞ›?ˆQÕ86ÅŸ5*Ô'n¿–v7–pÐS!\_•VŽ-,.�ÈNlýnÎÑ,î•R¡x˜zÑéæÌÏM¦:Ê9o8 ôCƒ»kt)#[HˆÂ‘Y×RK—É%òJé$È4V´ xX­UÖc—Phõq£2šïܺþ½T"à\…Ì0¹–z:©È&€7þî÷¨ˆ�¤©ß{¤~kñU£ØU°µ“ùÞ«ßú¿ñËÑÁŽ`\(Õ¬¦êº¢¯§†®³iþÎ+)-ü(5ÑIoùÖ5‚ÔòŸƒŸZ4@ð¸˜Ow^ÿFªÞƒÖ \>¼Ÿ¦Ùãù�}>Uà<ÞEîlÓø[?HUë·ÓP›<ãvšy‡'dgŽê2+'wéœ9}÷zªZy#]èHóssw ¤âä¯'€æùàäž¿-G¿ÕkŽ™}w•À‰oTâ+;TÚ8ËÊõ;éÊ…&:ô¤¹Å›iáagêy2m"çäõk ãicì©»G7ð^Zx=MÝnJg®¾2iÿ &­ågÓ­ŸPq·Õ�•›i~áùÏâ7‰pP�:w÷§©všy´TÈî¼ïûôiµ›£ŠŸs´âtöö«©u÷N:{®?-.Òü;ßA„0š¬«?ô¸|*Œ½•Žæ˜NubÛî³�§)ü¤Wÿý~Ž­ºB ¶4õjzêr<³ ¹w;M¾M"Áã/R-­?Ø„‘±´Èýk–Z±[ο‹Ý mÐÔ¶Ž³6!uk£˜–zr¥túÂYdÑ2÷ùÁ:­v †Lðy3wßH ‡G麣Nµ±x+�½×šÏ_…ÖÀaô …Ñ·SáÁOqÂKK$Í/SM]E%+I!VÚjk¯ÌާÕ{?LCÝÚÓÿHZœ½õc*i ÄÔ˜ÛTŒ¿ýƒtº“jê3ì ¼½ž*:S;I*êÛÅ^{�*UxIÇèsÅñké=‚]§Î~ïRd6sç èn.•±£Öé"p˜'XTCñ9ü Сx——lÜOíýÄ5 á•�ôðæ�ÓôWZº‹Þ¹O÷Èkth�–�)„Aưy "¡#ï§{ß Þ\Ñ­dì;Õ›Öð�ÞG_"‰’$Yç$o ;lÁ“ è8ï—›4³î j çØKk3�3xÛúÉ8\g ²ÁÖÅà™Á·(@ Q¨Žó9ØZN+ $ñ‰½<ó`¯ÛŒ®ø!»ö+RW[=­ßè4A‡&tc#Í´”^*Бs\¦kàν~_AP×€­Œíýµ‘ˆZà¼×KèÏè¥Íè¾5$ÝÌc»ÚÊÛ€Œ#“ìê°Eeèíw˜[LàÍõ¶Õ¤Áõ•âX:*/¦ ’š/êÛÐNû05nÿ«^f�¶êÞ×µƒ´)€³ &+kj¿[„£oOJÊ|tOûС•»þÁRNÍX€•æ%Þol^dÖÈBm}¡ËÆYÂo�IM�Ø“Õüê Úz&Y÷ôÙ›ês8KÆÂîái«¿µíòtº-A3Žsu4ŒÕÝvVWzûNEå±~˜ò¾�sY_/§ ÍúLN8Ý?~MíÏð�‡™ÍO§ èÍîQÚêú�áIÊ×·²²–®]»AŸN¸Ð®‰Ûvl& Þ@2…°ÛŒ½VË¿‘…vˆÐ.Ô®Þ„gì¢U¾¼æ¡ JžîHM}<úkð‰WÝÂKP ¨?xü­L099FS‚ â¡~ƒÃ¾üݦmòÕ©²„gàŒ�޾D¶s–~ô%¾obyøŠkµ�°�¸±õmwiF<Ö�ÄMø;ë<~ì¾ïC’äÉ î(ã=ÃZŠ*-®„¯±_ïã3‘ƒÂk×R}^ú޵áöXgõ9П¬ÇÕ'L`ðúàa�ó.sTÔYä ¶¬¯eíÑY ]Q~Ò ¯_ÀG ¼ºñÓ…_û÷>.OÕöíè¬Kuø\Ž¡+(9ð\Ü5Y© ºÖ¦�q&À´üòŒµë÷=/dŒ¾�váÉÁ(œÖ—`ò§°w,„^íXÿ&讓 7óp­D{ü‰~2s6È)¦^�@ǽ• ~`/€ t­(0нˆr>ñp<÷Ùagç󺻺² ß1KBÂi8\ŒTœè¾ÜŒo‹t®u�,�ud èôˆ¶P—þ%®˜Õ“Qe¥D0>nalFË¿/!w @òf†ØÆÚ¹n¶qß&+ÎÊÜÁ¡!îƒáÁ<4¯VÉ ¹wó=©�Y‚�ÌVÑáæK§Í£×#ü6! @®V©€¶Ë8L‡XýÙ?ùJ8‚o�N LmgXŽ/[zÉÐÌ|³2VÅCú Ñ �I/*ÖªU¾*N2s¯#è[¾¡Ëàƒ×óaЫ¿Êä NÌÂûŽÎ˜ùÑw¿“*>ó™tþìj2Be)«ê�^áGÁ´|Ø£×#|HP€úò§Á(• X�2æä3ÏgfH`«Lƒƒ©„r¥ãºŽ`›=_:¶U@U¬¬’Rh?¸w—6`;Ș¶P8 Æ” Iå…q>7£Û ¢¨ð �e xTF7‰b‡0òÛj(³ã åø®-bÍJ4¸XFÁ^'ãV"m£Î!-¢ŽY‡Ê¯2^g‘Îó›×ßN.\Ž,Ã*Ÿ¶GûuÈ͵JïÒ¾{Éáü , õËÿ#Œ£e<Æä¸îN*w—g©d?ÊùïÓN ¸VÓgVE¸H·vʺÞç+¿üö�>ù]�€g îˆCY‹0Û‹5¡\g!qqÏÖo\�@¸)YáüFÔ¯ƒ¬Â„/ ‘–l­n6ôààpúÔKŸJßøÚßðF †ÎîZ‰‘pÆ}»@ÚR|ÂdåŸ8îÚn¾þFê …ï‹aü™µ«Œ{êégÒ§>ýqèý~T@û[þšõk@RCJYªÐvY5è¹È.к÷Òø©F Ö”¯xµÕ”êñE:Ë|w�2çœÙ�I]ÖxX#üHç‘ß•ƒi¤*[�q@Ê'ÔÉå8Ø#¸Œ~ì}}Éÿ ÐGRE—ë²µ*Ž5Ò梇û\sWn³í³"€çšáKpQÇï¬ßó–ØW/÷\£±è^4Zùï’I�Af€Ã$KL ' ÏvÍÂö°R‡gðwfü³nª¾_K¦³û÷v†Y ]CÓ`¡¼KžâÉër;¿¯|Ï$Ù‚s/Ç3ÐÈ=¦ªNYø€U*OmÄ è¾”lfÍ' Â_>o�Ô5dÎ o@ Y\wù¶…£òC§žÙýVhoétáV(¸w“§*Ùh%IO\z:]ýøSiäÂ9:o‘í�㤠G‘ß;i%h ÑÊÂ"ƒIÖЊs�8ù¢s ÷=ÄÒÐPÛ ¿&p€ dµ[ åâzV­Eõ ÷,M©÷ ös bq²™Ø{ú4çmËÎítö±‹!³– if|‚îHKiôÖhØ…xí³ófŸÒGÈï͹h"›¹o›:aïÙšÓsö¼„½™ù'c»µø™ôª,Ìݳøó‡÷÷Ô…§§<�—ÇÂwìã3 Þ묒>2ªá§8ë=ã Ò„¸ãÙ{O�í¹P?óåwÄ×ÎJB?ðWBþ³6gNOÏÐ�é:N÷3ýÝ!ÓÕÏí %ΉW�À#þæ8Ô”Ã<]Áx«+²ª"t÷À{.pü°]«{È6!�Á©‡ãog\K€qá$ŒÜŸ”’½-lY´Åó¼R�st�>?`à­‚S¾ÞèÁW˰Â0ƒQü™ÁÞûz¯XnP™Ë!È¡ÅÀR5˜>Öq@{á¶ôԳϦÏ~ösÁ¿ÝËüÜ •º…tÈ$�«ÕTä-..‡C±Œ¿‚›ÐÅ¡#òŽjÛ!xôþÅŸ.]y*`Sÿ©„ˆ{Y„»ù�_ì[þÊ�G¯ßgpÀ[å"Uâ?Iã´Y/áƒj€Ôšh—^ªÃERîz¡„޼•n|ë_¤A¶£?ãlàs«ÈìN¥@lA·Ú¸ÿƒtïíoG‚“ôå8Çmè}me»æ(•ëR_o;õÉ´�§ g¦-p›èγ€º°¸’Ö -$öÐ6y%åÜ è+Ë›¬úõË8Èc|D „�•T$°«\k@–9wöˆÅµkSÈV²ÐÓ@ogª?*Q]wgŒyË�ü»Ÿ¡×[ÎÃgæîüûb�0Ú�ë6©´Ü\‹–£úA:ÚRéÁ›i¡À,`tåÜ1Õ«Tg¼Ù^(¦º¼¬2 óû_ý¿RC{7v Ý0�—Å Ö­�äÐc‚ië³éÚ7ÿuª¢â4عý�¹t´E'@ø÷!ò5WWH×¾ûï˜AL Þà <gu1µol Ê�ÊÝE|æ _'nD@Wþ—ƵזÒú€ç{ˆòùóóS¥Ó½JË©bkžöì+ð»=Zª·âºA°}&‚²pYZõÄ:*ò~9­ReÞßÛOÝJ?ýê_3æØ"ÞÙ[Å°ŽºT›Cϰ‚x'-~ûÿ¤¢¸-Þ­Ý[!˜ Ÿ-Øê~ ŸîQZ}ë[iöÁ ä/˜uåîjt-x8¾É sŒâÜþv»÷nTVÀow SOÛÝMî¹Å¾LÌ,•ß¡}úD¤ "±¦ÖªÐiq¼´úùAkÛÍÝtóëÁ¹Ñn—ç©;´6¡' ½{ox’HÛ•_ÿ«4öÆ@ßáþ5•TÂP[FΔ×¼6q=­ŽßŒ —º@3ú^sÃqš]$à�®äÞ�6Òµ¿¯¬FOpî7sf3ÛÕÀ`ß6£MÐÉVóßQ�‡7£§ÚvÙûì÷ �¿ñõ4FUzµ¸Äý›ñ×ww5§»h?Ž�¤~xp°‰ œl\cðnøüpš[ÞJc÷ÇÑ™ ܱ›¦¾ù¯’eƒ�­m-ÈÇ ˜ý >W¡£m¿žî|ÿßò1:ÕÑNÀ¾XÝgôœúá- ·¶¿Op‡Q-�$8ôw¤³CM©ñÒS¡ëX‰~ÿ¸†o¡¼Å³àU�¤pù‰ÇŪÐ÷­>Ÿ\LIú1È£NVÈçSóÙSéñËÈii™€�ÁÅyð`e•™¾Ð¤Úƒ>÷ÓgúèúÕÃuÎ0†žÐSîÜç™Àˆ÷ RštæÜ�è…À¶š„�|a-½yc4‚!õû&ÆÒ1³ƒ/Ž a� ÿðòìï�-¤ÉéEh¾•uÐA� bmw Åsƒ¤j ç]3k»wŸ¤ëuZ&HÚ  Ò™ð�]>“FÎ ‚÷$±žâÚfš˜$¹€€Øz üàl·8ƒ�SíéüæªWÓÕ©öc)BO‘¨ý¶„zèbÀŠn±v#2ÁT{䌵©[™„b—€’Ì«i{¶œ4àbâ·º¦³’ã, dÙ^ÿXïïm�'Ðnp¼&×xáÖÕ/­øDc·‘c m€}Yf§"iE™u`Â"±õs¥›“½¨D€¯‚$«NîëH4}Ò¶¯æàß/mnª݉Š)`�ß­ÜÕgVÞ°-4ö¬Ÿ¡»ª[ µûP=]»Â§u?-ø®d»îS˜>8¤£"~5«ÍÑlyæ¿k¯ûø�ÑVì³ ‚˜Û‹À3-X³«�º»cc€§vg¨À¬ÙÎuËÓ±]ÃQ'Ò Ä[`$Œ�˜/j'�“¦}Kè‹Dý¤rõ¥=:ÀéCi'ÙL‚�ñRírÏUÿª¸×Äh“2ç%¾VÃS °W!WÜ»Év؆Þ]Ÿú‘íÀ b÷÷Ÿ"€î¨2ƒþŒòàúH‡övØÓÏ÷où‘8*�”®Ž \ ç?Q5o‹;švâ§Ú…OïÑ)"üS$mTakëO•ÿh³Ë_äùJñ&ô0÷ºKG *ô¨è$¤Ë¸æˆ)3�ÛV€;ÁÅuÏ—/ÄÙµ£+òÿØß–熯 ¸¸>ñuŸÅ:Ž]*ô=é‹)Ã7ü)€õydç'ÿ bœýû‘³è¿þµ¯a צ?ûòWÒ믾¸d‹w}\UÈ–”ÍðÇÀcÄñÆ(ÔË8DçÍÈĉ~¥(v¾®UÙ,ŒL´ÙAF˜¾>—W(4®îîÇöòá30�\Cöçz‘*²‰dx ”ä¹É‡�K´)"£”¸)öA½¼£Aé htt !ãÆ2»&W…bЙ^#ò›…ãêaVÉš)䢲*„Ì€—áfÕàl’…JðÙŒ%  â2�î}DÞpn@h°aÞHüŽî€¢L¶Fvkpæp €EF*Œ±„�1ÍÎÎÓâ†6(%%²Kß»{;Ý»ýNZšœ!s×A8¡>U ŽÎ‚p ~P|tŸGøM!}iš8c«B¤_þÊ?K§Hy啟f ü7»Éù[ Æ �^0“0Ê`– ­¢Òa§r"s×™%“‰dÞó%“9†©…Ó’keRÒ¸ŠÁ1Ìë¥ím˜¶s×mϺJ ùk×®G�Ϲè}cç†TŽÏÿƒ£Æ~ÿþ“Aî÷o_¿Ë;R! KR‘56ÌÂãùÒ‡]%”w*‡áLç=�Æ’ã÷v†“Šž8¦#9#%”cª ¬bmC��œ¢uŠªIbV ÖÁjr\ í ƒ_öŠÏ¸&hœõ†ã›Ÿñú;¾ë½UÀ5(�äTK¾˜&GÿyºKëÁ>æÈéÔS_Ðaà±D5K¥úÖ-Ûe�Ž_¶®Gïÿî@@ìÒÁ!îŠZ4ø N/1§C ¤5�lPïçiQ¹– ‡ß|¿FjŒÛdcŒ¾òÌ éÁƒÑôöõ7p8u @_/cô•"‰cÛÀ%t¥Ý =G{tŒ˜¡‘s©›Š¯÷Þ}7Ö¬®j`ÖVagÏžK“È;2z ì¹Zö©12“�c`±)h]‡7F ï)#Õwubwð7]“x¶º¤úª™¾ÞKÃÈlà0¾¤ Ö¥~oÇ%aé�Otà e¾o7×b¼-´ :»/•ÂR#Ï=†çžîÏ‹ky†I­YÕëUš šV$`4óL?s� Ü»G¹ êÐ>WV"?ó9&ú¸O»`ø’§fçï³q„£·‡3†µ˜�~€“j½"Ú éˆÁ Òq Þð pc°ž}þÖp�9 ,ÛÆéäŸ>“' ò€— '¡]üž±o× q®A>�~ï5ÌAÄw}v8ˆ��YíÝt.h$CÞs�º'y±ÏöÚŒ¯ g!Àm0Ô¬\5`+\–p2LMÍE›Aƒ„-àâ»ÀÄ#•äõŽÝ9¢‚ç©gŸNgFΥǮ>ÎüH�À»�Œ~óìèàÜTDÖÿ¸‡A~˜¨±^,ðœ5ÞË û°¹Ð mÃ{�Õè$çy¦3 ëpÌœH³8«JÖgÒ€NÁMœÔž¯çêsÍúVî´S Ð WḰ%¿ø•C^Éûu\?>8�{ú*íC é©�ϦÅéy*uî¦×Þx�Q%ZΉcMÒ×ïÐFX¸Z lÇg[š r‚ Þßu|Y‹4#M„QìÊ¡1q×¹nV[HPVàydÔ«¦ r[…¥³N¼1A žçyïG‡Iâ�2Lº6‘T¼“º šã�“–~Ò«˜a Ù=„íËOVšŽ_¹�ô#ZŠ¿ýƒGðåm8E PÉÄM� vЩê¡«G„=ëÇé¡ãÍ—xëˆùžxäÞ\Ÿëv:U¿üÙ’2ªG¼Vaã¨2q�Î5Ÿ­CÝÎ7Ò6·V&¢HGЛÖnJ˜ðUîŸÉíø›‡Ic:XL4áÂx~P'ßqÿ�_ÜP\¯” '´%ÞÊÿ½¯‰õÒ–xhu�¼ÌsUÇ*®fç- ÎÍ.¦/ÿÓ/§§UçìFµnßz/Ý¿{7u8³RõÉÏ@£  „S7 U&öë€+@KŸû³šžýØÈö8x­à�w Cå™lóÃ~Å#øOà™?y üáÑë÷ `UðŒüMÕSi¨�±ðä-œÃ««T…¯Á£ ƒ#gN�ÿ:>÷¨Êí ø¹Npiž¢¹·rµ‚@ô@&m€£²ª5•pôÞ¹GëbGˆãÂÊ:¶L…5gÃY*.×8¸?Î[Ï,ͧŸ~ ¾BUø”Ä5>EÛhZãB^cöÓÒòF:;<�Î w#Ç PU¦Éù#ç£ ‘­“SóØY}鉧?� e£3¿ï�ÎFÐu“Ê%«›Tºå� O^}:]yöãÈ9‚–ÈÓòæa½û^zxÿ6÷¤â�a;§ ý¤�VòK7ÿŸðSÔâhnïì†áè%9A>37·™º:H`[†ÌDÆÑÛÚAµ4= s ±=�TŠo¥â”òûˆk: µÃ{˜I>¹‰×=Ý$OM¤òÂkq&�ÌñÎ(*3Sµ8oˆ>>ØJ-GœÛìÛ´ÿÅ‘NÅz#s9ËœõÛ7–‘·Û!§šë Æ2Kz »±‰$‡Šx–ò/t4\S•NõÐâ½ð&Á_/�aí§Ò´ÕèU5¬¿°˜O§ú˜“^A7Bº‘*+[¹Ïæßé¹ÐMÆÇ7(xèL½¹20¸ËÖ¼·tëœe^í|Èe‚UcýÝ­ióAârHj:ÛÒÄÄmúéоÝXW™†‡û�'³´½^ƒÏ60óœçm%æ„Ó|ÕöÍTv¦¶&öÇHåcóé.t1Zuß›©¤'¨ÞŒs�Ø73¨'YwMj¥ÊÝj¿þØ0m~M8ܡҵºØL·n�¥Ó8®ÿïüùlšÀO+ed�2÷Áè8-Ú±ƒv³‘0}tŸ¨¯CvCïêÙŽRžÎÍäYÿ0•Ä‘Ç$ȧòùµ° Nõ å©�ç:‚çþÞB×"ef®®ßz�{Va{Ù5¦‚`I!-,Q¡J…è.ºŒ|Ð`õØÃ¹tþÒé‚®x›�^Š`ý!6€£�š[»b@{�`{p¬�OR9ÏÚÊ詽½T—rÞ¹â /ï?\ ëSgèŠk«¬w%‚n5Œ6r|kuUc$xV7i#©ÿˆ©­Œ‹ÜÓq êm-ò�š4ö`‚ \‹Xóñ*¶ë_†·W”CT·ÔšžÄnâ·îÁfž=̾›X/Ò;c�šËt„_~{µÏC}†Mð+ þYyA…ή/Ù›:f ² :°½»4ëyó¹-³Ehuörê›ÙÄÐnÛ&,pv¤…o‰ä´E&ðÉgÅC“4øþ½”.]8ËÚÑ£¸��½¨‹Ùý!ìb2Ú|&ë,HŠã3m4rŸ�³‘:¹�¹®ªùLÊ p�ÿóÌ6ªë�IŠWZ_'ÉžgWV2Æš$¿t„ÿš³7ð¬JŸ«3Àwè6£Á�ŠŠ‰ 7Ïó2pU–8ÝØl‰D7|ÇÈTg�ÇmV|È™xfúÅ¢š…ç�q9ó´WµÃ™OÇwôS7¢LEƒëëæl¤cá§Mh§’6ɇµiÇï0m1}Òã!>ðJôNqU»VÙ¦Q]ô ñãc|6ÐXŸË€2g‚m�ã‰âÏr{6×B¶å µÍÃ:ÄÁò�=JêÍÞRPI|öÊ—xþs_ÞBÃW²\¢…ÃÌÔtì€8ÈŽ€°täÛÚ]åÍ6u¶e·µ�‰Svf È†4ŒA`„Ï�hµÊ$DjƒÎ|P¡Ú§-�Ñ÷Sa7;ŠÛqˆñXʬMd³ ˆŒ/Ë\�ø@3]tVt¡$×*ÓÜÂlê�ëF)ʥ险ô½o}?m®,§ZžÇ‘q}:uÔäq¾™=*‘†ñï3yÞ£×#ü}@@LS�¡ÛeäòUÚδ3c$(…cNšZY. øÂ@`z^ë{⯿Ã$—` £`&þ«¬èà”éèD×a´Îߢy8ÌýÚ�J2zƒæøþ: ûI°dfn>Ýz÷�ôÒ'^ˆVžfiJ³:Ñ}ùüG¯Gø0!F#´MöW›™²˜/CÊÿ*}d-V¡0}ç«ß? �ó—ÒÇ?ñ"uZ°#ƒ�ñá|ñ¾ÀÎ2]Á‘³KöÝskQÔux›´b°Üİ2ó‹QÈjqìD›YäœÏs Yusì4\¹¿´!})Ÿ�Ž(ž´N"³r†$/_ó5ú}_×,s•ÔD"©³ÔÃÒàAѼýî­ôÜ3Ïb 2“ ù¨rã–Õë^^™ö¼áZÃñΗ54þ®{¨è±Ç2ÏôaTžGIîD™,F1`$ë2N=Ûy_¸0Â=Õb½~ =)?L ™žžBéÅ)ŠA�!pÓ€©´X¡Žèçw-þ'¾@ÌJž�.í¡t7·õ¤ËWŸÁ±1‰LDçd=8ÕA 'ÒƒíÚvȨVïTÕ9©±ðpl4dÕÈùóixø\,ÈŠU«¦‹ëd}ãTO5wÛy`oÎ¸ÖøƒBÂùí}¢%#ïEæð²‘¡ßªªƒ¸‚•A…a¤ eéѱ-Ê2!ÁVd­0�àò|šWövâil 'í¯ÐO#€'½"à¥)«ë%بœæùž�A; _^c`=è›uûy­µ&&§è(³€ÓÉYÔU8" üõÃ#3}ÝŠQùœ<‚/±fueõŠLwpÍh~æ½5Ð}/x_ÑȲí\ #Ô6s&D�ûéà°Å*Pà<™­¯³ ž-°Í>¶5›z|� 9¬_˜ k+ƒÃ�b>3Î{!«¶wßÚ>:1hi‹Ó£‰€‚³ZuÄ [÷â5CƒØ.-áä3è: g">>3K˜Àxå^ž“Ý|>Ç3ܧl¹²²—µQUˆ=¶ Îlá ð•UXãddoòÓÙ±Éô‹˜žþøsž ¡·�ÝC¨†¥2YàÀŶÞyfXz~Ú<«èx8OMHòþÛðÊ»©(ƒ64Ö9W[Þ¹&mgí!á£~gûUÙΔ7!Ò3ÕÑá>ùíÚ:ÃɱŠÒÌîŽ\ƒeœ:Û>»³­«›Š®2ßÅQÚÃ\V®;BÞµÙ›g¿”žýÃO¦ÏþéçÒë?üIzë{¯¤ãä•�ÐiçgÌy¶Q!¤SF\ÆÊ!×)þÖ@Ëç„^ÊOõÒ8iö©­8�“„héMYÅFƒ&„±7ó§°êd_vkņ“¦<8ïëý¤!Õ¾¯ì“ùÓçdè®C‰êªF—QÉ'ÀÔd€ ]Ö/ôh»ƒŠ•CïðàÜLu`ÉÚYE)gB¥fØ­Þœg°èÖä�üò%ÏPÝÝóÓž‡Ÿ$ðù«$L˜,oU‘÷𬹊õ²~‚Ž®°eó ]ºÏÚ´=ª�«E]·�‡àìW`™Œg’‘ÿÎwT2X@組±:NT–ó»‰;â–¯ch^~,L]StÐà§{ôÄk°1»ë;Žjò¼‰Á®Óª�hu ‚—a“˜ðÁz…Ñ�/«NÎ�Œ„Þ473“þ�¿øßÓ_ÿÕÿ›ÎŸ ÿƒø´ƒÐVÖ‡¬YÞÙD%ŽNOõ®5hè…ÏýIúÌÿœ® Mù¡‰è~Á"Yc¬˜½áŽßYô‡ö º{ÿ—køÐ÷èÆ¿ˆ×Ñš˜D“SÃ#©éè1þÞÀ÷DçŽéBÈ¢m[òð-ξ¹}‡DXª¨q6®­oäæúœË¹M¥Í,Žö‚Yú¥¶ ëUÐ_Ž º��tpMM©·{þ0;·’& wÁs¥ûè½H�êÁ§K—ðwQ… ½?àšÂAvä„í/Õ‘æ¸W-÷N*g­J_¤‚}b*•€ˆ\x]NþuæXÏ¥aªP-ð±£×ÄÄ"¾ÎQE?Ü„©ªž™¥Í<Ïï%P*_X`/«%åÇÚM{ûÙ¿AÉ÷Þ¹ŸNŸ? Û S k]¥´_bG[C8ÚX§UlÍuûØ é™þ]‚@k/ðxë­{%¡iø�Áõ9ÇóTSÆã€ïvz÷½ðL*tá-_5YÀVÓÇÈQõ·Q™áô†ÇËg—òE€çÒ…Ç.Ÿ,ëÞ}ªñ‰¸ltÚ¤’ŠG¦.äá…Ç. ‹švÈH›ñz:[{‡¡ºµUû©©½&=öÔÓ$ð ¸nšŠÝéYF  +M.¨c�Ž„9{î>J‚%¼1 •}�"*Ñ7¶ËòÎ-*lŸ `­S»øï¦[¯ÜD¼À£!T�œžã;ÏJ0S9ã\d[//€o£óÍù'®wä룃Àâ2R™ˆœ;ÂÎgÏÚq07²Ê@é83§uÈ;;»ùXUCÒÁÈôq`µX¢#p‚ËtÒQ6RÝyê ‰$›fâÈ8ç®v� nî쥶nºµ †åYÜxó9‚iènð{×mpåÊãgBözŸÉÉ<Ï1ðYG4ø9?Þ¢t²Gv� NOO-�ëèG­ò[/ T$÷÷µ‡¿Ìó<œ‡þ¬dG¢{8·»2·žFh}o�@�arf<3!α*üdÏ3‹«T5§^‚ÊÊÏÎ6O»ÚUƒiÁ$´t„\:Õ¸»Ê³ïЦ\™WO…|-mûí‚7A€z„.”‰OsK´ÂwÛ›LÆ#HÂüðyp³³¯‹ ’#S�èü�O³ó$-ʘ닞µI@KAS¢ë…Õá3tçbo�è¡KÅ Ù(�Çàh7�·2kúñnï°»E'Iö±e»^ÎÍ wO IÌ«T‰O#o©0ÕF÷ EGË!¿�[gW ‰…uéÁm2(z3 ¸·»þCǘ|)ôüòö!�–6`¼Ÿ^{å~ð‹î®¶HR0·lÕ³õát0SgyëÆ$üå˜n‚]à¯E=tj¢€ý¤£Ó w ã*ÖÒ½[3ܧ…ôØRè¤ëT+ëGAÅA7%°Ëþ6˜Í¿¯»è# µï‰9øßÓC iô“ÅÙ"ã7.¤s]gÂ×ÉÁ _:dó¡¼þîûrô¼¿ÃHOFÚÆDˆ`´—‹Ä�°-ª¨‚6.c Æ­ÑE‘èÿ¶‡×[ák W=Q/ªÆùiç1»R™\RÃ9ïÙÞÔ��L"‡Õ­VX×Û�(˜ôb»ö –È1G/Û%I˜$x«‰›êÛÒUm=ºXè¢êˆ„ ‘)a¯Å:`ãÑOWI¦r ✻*oÑ7#Q›7ÙëEëÖ“taÇÑêà›T\»vmP«›[” òË÷í@eŠ:¯ÉW' ÞÚËvf1±×à(ç,h²“ŸíŽQÉLëÚ Š5áÕyøMÀg{è£þJIà/¿]#Ñ&š93å¥÷5!Üä¤N‚ÄîóÞ³9ÖVãÇúX¿~På—]0=gãovÆr�ݹX5¿N˜h]p°'Ñ%,Š[šŸ�'Ž‘¤]Šyô_�½+ß‘î´-—òx&ÎÊÀè)d”òyzšq âÕœHöêÌÑ!¢�*68mífíz#•WÁ ¾¿K×ýúXòð¤"|Aœ¼paü èˆçèÿˆ™ãœ‡kàxÃêFŸ1(ß|v8=|8ž¾óÝ¥aùììÙª?:…6ä·Ý¾>*íXcòlùš¾ mDm¬º½žƒì¿”›ÂÖîUâXT™KñÀÄ$ÇÛœŒƒ³BÛ(õÈf“›*ñ Yñn’¹ �òÚ:Uª€›>†ð)ð~øm .ï)L•ÕàŽIÈ"cºúkï¡_ãHÿ?í¾`ÇÃå…®7MÅ8¼»«‚ÆE»@°™�9î×Â.€I»sè=ÌÄ}³&ÿ;NH:vF$Ј²œ�LÌûT‹3¬Q_�Õìܘçû”y ¼À®^êfÒÎkHXi̓Q­ûæ›$&õ¦Ë—.ÆÙe¶(:�‘ð7ØÕHYWBwاc©�ö\¿ÙІò\’V¶ .ÀG©_+ûô]qyè$è7‡ËE1™MÜ• ‡&µ¯‚àÝ�J“w)®R=  3£†7[Íöªn:6ÄÕÿy¯WËf‹[q÷4ÎJ�·Ét>hLk «tç ‹Ì1Zp�NL‘ObQQe÷„ œ/jÕH´ÜAdbf¹ ®£€0LÜß½�÷ÒHÙ$ ó*Ø»ÂU…E#à Ÿ�üVªöúûÉòìh�Ê›³l^@¡Þå³ri�ìÐB*æaZ«TT,¤–î®´ÍsdB"›0î�^� ð÷…¡³6T¦­H}ìÊS0šFŒÓÉÈîRSØ �í|åpº£À˜A'C–‰Èdl½§©ôuÈga4…cL¾š) :ƒ¤~¶9ÖYR‹ÌSg£4uÌ}ü¬‡ôjÌ�ÕÁ{ïÁƒôÄå Ñn¥ˆ@�,ÈŸÝëÑ/� ð÷åŠ/~ªd#QQT2Aïû´¤ã…JyÚÕNV)×ÙV½gª·0ûQùb€¢\.1Ëw2Ýzï6ÑCfy²i­ŽÂ�Nk•0 �¼ð •ù,û™Å3¬‚%ãB‡®2ÁN]ƒ|(|­”wÎÚ3ð¨aið\§µæ&–Y�eà]‡€¡JY�¤¶Ñ±ÑôÌÓO‡ìuíÊÏLrŸìü~ºQhZ#F¹fòMóý’ßËþûË;8€»ã¿TÖ  ï`D¿ùÆ«$›Mâħõ2ß[«€ªàY=ÓÑIµëyýõ×ù,»{<âÑ~ç! }‰›yŒ*åM3-µÔÿ¢�–z¿¤ÒPP~xÍÉë}<ùó7ú©¡jÈÃJoõÏ«Ï>ŸÞ»“~ôÃï‘åÜ }d†ŒA-qN½S£X}1tR , ¨kÐ=ýÌ3è²ÎåS g •·ÿõûßa¨vÅ,Ñ ²‹ÇÇâx&�ެ3I`'¢N³ný§’o;Ëz �#@:mW—É\ŒhLýÕ5¨£‡€-qmoÀL‡™÷‹6ÎÀÌ`¯ÁÝ„bPD�Wé-8HUz×´ñ¾a¼Y»‚ÛÀ¯k2™Êmñ•µmVWÖy¡­�eiÓñ‰/™=®þn0Uý! êeüÓì‰Ã@¾¡!ì™Ä÷º,!Ç€›ÁNÚ!?¾§ò°} D+Ïå ¶º30/ü„†ûßçïUÒ'F·Aw‹µ&ø¢:Žp� =ÉÇ2ÜÒ¥õ¶†6÷Ð~h„çj¤t6Àï™4Tï$Ù§.²ó3XkNÂÐ}¸‡Ð›x¾Ï‹ÌéZaB–µ»ñËÍ™m•žvâºÙÕÎÛìà9«T–õ÷ ¦Ïý�’žéZÜö†]²�,lf–0¢™} ­äçf¨Ä³E"óç²¾|w…çØ�+##œó\•ÛÚJœ‹8åzkÙ¿•�VÙïá°ÂGŒ�OÐ|ý�ÝŒõu"˜ÉoûÂfðû±Þ¯¥ò�~ì�3k$9�“ÂVp½Tœ‘$•ÃÕщƒxIƒm�´ËéÑÔÞœÎ\I{ééGßø^ºñÆÓ©ÓCtvpö$�®·šN‡‚¿+÷„w¥4¼ÕwÅ_aÜü²äÎ,™�íþ÷1§º6h¾@ ]T<Ö•öû©®”©4`œ×#£u=¸g\üÜíø¤@IDAT58åziR6Ñ@¼99Ó:Ú÷:çÏ®Vý/ÌÌál—Ò¸ÞCÆü‹„U׌ÎJ�`äLQ+GtD|¯Â9âLx+UÕLàÌ$5y’Ë’WøÏ6ˆüz[B<FîÛ—p¶ÒGºÕÑàsJð :Ƭá`ãc�†ë3=!øû•®\ƒºá%\¥O¿„ÕÎG¼ÇµhA�“žk-¤Zž ø©ðl�6Àô-Gnx?&PÈWb}â¥÷öo_/^ ûBgØ­wß&qð]Ú7Eµ‹'bEˆIÍ\—�„œ©hr“´uöÉgÓç¿ôªoúiϼC5%pv î¹N–ë.â?ï?Ó??èW<ãnz²Ç_xûÑŸ¿£ðŒ#™W™A`±º©'Íី;4ÐŒ“|�jkH?è´™ ‘U¾Ó7 Öá µ=éV]­túÖWDí@ÒØ¾*‚ ê}èÜ­íÕQÕŠX‹ªËÁAä ÁÁ»÷¦�!ÁÂÑÜô±�^¡Ìp UÎØÛwhe̵VŽwÓ1¤ ^WäoyÑ h¥+mwîM#?°—¨"jk£:ž •m�ᘩ¯«•àWŽN>Ì'¦Z·“¤¡ÞSÝÈ”-]‘¹¬?‡Óøü‡ùµ×ï†N28Ѓ®•‚€UèÖ`´úL%cû –l¤ë¯¾M{Xä–â˜Íµ¶5Eð_ÿ_IXÚUV*zímàÚBõªüi‰Àü±öG½|€ïá07qûÎCtô.tÆU‚«ÛTþu³ve£ïmSÑjà½�äí»2³=7©Ö—ÿËDí"“x@0|~¾YÅšqüol€ñ…þGÇî©L£÷'ÑóÁÛ•Ç{úìœR§ÜcYÇðÏ�[LÆæ¯ð—ì n„g)‹¬ž²;ËJ�–ûøSê|hSioeú:‘Q‹}„Ç»ž­*†3cƒEü>êÜ(è-è‚È ;ŒY™j¦[:�hg`Ë“a³Á�[¨lž§{žJr×$ Ü%ßž˜¨,h'�a‹õ¼õæí¸Æ*1õ¤]`™h›^�>áŒ_u×÷Þ¾z†�#‹& ”Ö©„ÙÐaKéÖÍ{Ü€ekÙâ€�uízt„Ù©EôïYôCüËøb‘¡;ØÑM8vu¼Ù›×ï#Gí¼ïgïÂ}… ²ŸÚ äŒÝMo¡[©/v ?´ :ÃU9` ·¥µ)Hd˜¸7ú^+ß©e?eÖUÅÁ™0Ø �ÒQâÕ¿øVÜ¥W;ù(ËÔi ,™øúOßAg"PƒoW+x èƒ"QÙÛI—¥<Õß÷©&÷;øÛ@×*ò×ý«©»î•÷ b¿Ã^ÿ@�’ûë—[¥¥¼'ÕlØßxõ64BÂ#»7Û7�wµxÔE<£ ƒG¶°®8–T�Óù¦¸JÒÈ×WÓ5–golD¢b;|¹vð‘ÊÒ#:"­€Ë{>�¤Uå5¶P3DzDÕ Ï<@G,¨Y'qfgÝcÑü³@Gº$u m5$?€;è{“–òΔß(Ñ:y]Û žÙÚ ¯ï�ÿR ;ª‚ÙÌ|ÇJÅ£2•Ãèµ&yÖÒ%@˜oV¥uÎé ’vÔV7B×%öE?àªj‚átW8Àn\(¨A¯ªä~5ÀÃNO«þ&Ù¹†*ÎjtÔྸFbÓúJS7\=¼š.¨o£g",®í¢Û^O½ýƒéâ¥Ë$”d�kÑ‚ �ßÖ ÞA@ºŠdela¼Ckh寡-Û æ9#¸ŽÎê¡Æ?,‘oà¶Ã’rEÙeu:Œ‹.ŽOÈtÔmæž«;›ä˛Ѓ>gõV8ô­±Å²úå!°Þƒð´«éÒa8Ñ“ò*]N¬ôSï1¨¯/ŽBƒ$om£Sòl‹Pä…ê…ú¸wááµµ}|Ç€˜÷•fa^Ëç…»„ÿ¬,ø“„ÚÓ$½4?~ÄÕ•2²™$ú!ììv‚ÿ­ÈU»³é›ä8bïSSsÈÙ%*½éêÑÛ�ž¼x&µñôºpnêÓŽe0àkB¼:��Q9`f2’ö×.ø¥?t `BÎ2òna�êwÆŠ¼;1xs~¨+ öt_4¹O\Íç±÷¸ß ÛØÉêô‡/rÏD²ójº¹p3l>ƒéƒüë X ÌÙ®’€07¿úS窌0Y8ºÅQµ,ΘÌ&O×ÒnËq]u¶³r;Y¯ì—Ìõ%9Þ$]‹›Õ‘�ïmdÄ*>ä:Æ<(·°2«H7`S žš'¼„©I"âØñ>òÃøu¬”4> ž>‚üÚ^U$¼8E\v,�´b;øcÞ�®fø!lµoG;Íy&v:„ß+SLêÖV:âzý2¯á±ê(»(]ú|OßÉ1º�~´ÖëbÅeíjmÍè¦J—‰Jä… ÌY" ÝëHRÛã^m+÷ WÖÌy· ‹)·íübœH²_!9½=Vÿ“£%L"ÙcŸGð/;ƒ¸ß“¸v¹f†þq“ÔÂßÁHGÏIÃÚ¶ŽW¨Lì¶#«ú yàcÌ…˜š™K+òu‡3F£5ô&³¼§&F£ Pœ97«²òë¾ÂözOôäÅŸáð‹hÀ(m€ ZùI–cË«¹Í‚ÙB™ÌdÇÂìh01€«@Ž OTÚi#¸Á_:ª`2:0øeÕ´:]çŒò@©¬é¬‘PdÚ¢Õ}¾<ð*2quüyZ:ï ·8ØÁ!f)‘Õ³@‹ ÛuVÁ£JÒô>ÖÍâ>Ä´™þæ«ÿå¢;}î‹’jº˜Âì…ŒÄûèõÑ…€XûëcûGw?¿2çÁCCièÀA©³ovv†À­È Iq3œÉ�€x®2bÛIiCúQØøOºÙGi  dÈÐŽZ&4¦ÓÚë ŠI³ •ÒPŽ`üþ®3\'÷שàF†F8]$yÓ‚è2_Ÿù›ðžŸßóïÒï¿�8÷»ÿ“µJ÷ž…É:t‹Ï'ÆL8¹Áë-”ƒ%ZÒÚQew—ö]´ØS~MMÍP €‘ˆ\5®C¶ˆpŸ™™ÉBÈÁÁ!œí}[Aw�C¼Y}¬³@N¦|ówÛúÚ"|ƒj�é©Été±ÇÐ+³ê†Ó§O§?ÿ'_¡�û$üƒ£¡È^ïÞ¾•~ðÝï°?õJîϾt6HsÊÐvœ­�dwkÔUcpáp2ÉÔÊ`7«óÚ…«£;CPš¹,ýç\F°�ߥE•e¯†ŽÉs¹¯‘çþC¯æ§ë`9{ææt9ƘZ‹óáN\I��[ÝÅWT²°&u~ÏÉ÷ݯz öÓû Fˆ8^|6ÿÔ—„™ÀÁ§׃2´ïÛMsSÓ·ÀCÖmÏÙ£|0ŒT~çî±'ïg"H8i€SÀ�}øò|ž¬Ã}DÕ€kæ«îaøüóϧ?÷rºüä­8v——øŒÊì‘•%ZâR¡_€~¤§ “Š r8¼”'­Äj�Q8‘+™|c„|nÏf™�Èñ|~ºŸ:œ¿¨’�#ÞÏLw�Ü¡²/«ªW©&pTçsÎe‹ŒpâËÚíQÁoƒÝ+ó Ñ:°ÇI¾n#ŸyšC§),À¡� h ­o¯~òcéìåKé™WŸOßûê7 3ZÞ�·â¬í:Å›,± ºäùÚ‡Á7ÐAMFSÆØò1œïÃÀßíNæt ·2ÖSF¦»õ×Fœ[V‡¸ÿ2rZøœÒñg"�¯Hèà§Î ÿ'�x âŒ*:³]ß ¿áoÓ­ÝQ_æùaÊ38#^àe ŽmT«º­­¬äÙ(ñÒ�Ž �üœxžã®'ø!ëõžÒ+�ŠÏt�éøîD÷°U�Õr: \Tãéíí�ùÚYwÏ]�{†Þ®T¢/ØÚ�»{’Å"&÷±åà[ÙYÐ}M}Æ5Àït8…›�@AKfAG|.�7ˆ[á˜síð3ƒ3ÞÓug8›%á¶ähÃ%n rЬ‡yÀ8Ì´eöµYL.à|õÈ'ô;xv«¶ˆ>… Êçâ<îÞ¹�¾ÿÃFÒ‡�ìÆ'¾hwT@[µàº|#æžãXÓ±RÓÑ™¾ð�5xŽó³òg¯gÂÿ\¯ÿæñ»ˆ/“D5î\ã×ï¨Þ‚Ï»3ë[º¢’ÑýÖ“°¸Ë}Ê.áx|ž#é«®©6ÖT‰c¿º{1mqnÈr’Å­.ü¯-T4ï¬á_Æ.¯¬k‰€ÀITêÝÇb¨û#1�àÝÊTäÛ™àÙ¨NµÃsä°ÒG5óÀkÀõ:‚ŸV«î FÒd½ÕæïÑáó¬ÏVÒD[×¶ñ íbÓÔæÞÔï°¯XK Q·¡³FžB€CƒtñÀæ“eÚ„«þ^ÂõWÜZ�I›Ò*oÏ¢=tWÁô½mgfgÚŽÁëTAçxn5‰:U•Ð/¿VäE_F�·b½šCu4õ¾ZŠ?ªàï»ê�Ì\¨b0÷Ï:ùý sFUð0&ùxÊÈ6‰À`TŸC×┉ÂqÖ®“5;â×äª,Èk²Žð¦�tc8FÇSè½…x޶Ÿ:¦6€:¹U´õœ«O¤)kÕNÃ÷°ø[û3:0Á×Õ/w¡cT5ìϤս=«šÁp´‚DmÏQ�qdälì·¼!�Ô¯H5.v¿÷å8ô>^H¥¡Uø·×B¶à >DèvŸöÎß6yƸ«v¬Ý–ò«KøîVÒJ[gZyç.>‰cÆsŽ@þYh{’À¿>D‹xr$ëH3Ž nVž»2’N}þ“‘lVG’�q�} ?F‡XGPèëXZ#1vÅÄ ôÖV‹Þmç ª¬6Fv§ë€BÞÈ‹îô|õã¡ËïÁ[g©j¿ùö}|8+‰>`iàô)d ãÖ°ïæ ´Oâ«P®Y=­�õ])´•SSÑ}nf–®ýŒÊ¤Cîì̱@1Ô2k@gâ,ü®¶„2@>¬}m�Ùâ… úˆ¬\7ðmG´ ÏÝ1«$&t¾Ü? ¦8·F䈉ûõuøÄÀQ“‘HPÐokÒ^th€¨Mj‘êÔ À_ «ÄGý#ž§òÊöë&ÓYi.<·Á;ÇqX´T‰Ÿ©›þ’«Ð#]„þŠý\΄ºÚ´‰JÚ2`‚³Y2‘ÏSÿ BÜ„,+ÓƒÞX[‰.vRp_rát |®P…>µß… üf¼²ª‘øª<ÉΪʻ԰Ÿz’wçáwMh´ØÌïûü†Vº�@‹;è–+t.-‘Ü¡)oßêÿ{odÙyæ}}{»Ý·÷}ŸîžéY03ØIƒ«D+’(ÉŠ$+’Â$v*®”“TÊ?S)ÿH~¤\¥J%.»ìTª\%ʶ¬04E2$A‘” v̾uOïûÞ÷öžçyÏ´)‘ Í Íf¦ûÞs¾ó-ï¾£^®-Aœ> ¢�zíö‹ƒÊ=*˜ŽYî^VÚ$ªØ"2¼È�›0×&"ÜÍ–±~¿†—Ü-Ê? Òµ“ü(—LSâ&&(üû³ÿJ´]@¼'ßûÑ·ø¹=Ê-Š$–/Y"2ÞÈÈ ÊÔØoÑÍ��€0FÁR…^‚ª1ÒÃ4sGÅ7ç¼Ç÷Áå…¾6Î=#ÌÔ@id�s &ÈqyE‰îs£eÔ"¾Â¯cAúù9¢<Ûˆ 5JÓR5+Ì0‚Y'"!Ó}Úv¬é´±A‰­‹¯¤‡zWêá$(“a;qø¬{ûò£lî½{ßôà¸ßq—KP‰î±cƒ0»ùt‹²«•ÕuT]X ‚'PÈÄE°8“³o�ZS÷%Ø:  Æ¯‰È{&áÓ ÁÇü£ñ½ �äQŸâ›Bmdñ.5q÷€¨<縉r4ŽñýÔ‰aˆ®L ‚.>ó®L ~ÇM,è�soë“æ44Èã…;•?ùŽFYy•}]–áUf”ZÖÕ¬®F„êJ¢Q¿ú•¯ÆsÈðÔ}ŒÓ-™!¦Þ÷è„Â�ˆ}þÛ/`Ø¥T4p.Bi°ÞÆ@/*…“Šì/*�P±Ÿ A]â bPà„rš|ÄRJfﮃGâ!!ìTïlŽ :pw�uiX·¬±ô@#º|ÕlD³FnݸA£ë©éÁ‡3ž+n³  ~ðÁïw¦YtÜÖ�ÝÏsüìzÞðâs#|ÍR•.¤¶Ì¿õD> �‘©ÇÓÁË-ñ(}p�'F¿ï�oøž7ýÃï·À7ýÅʞ–”Öpep‘¾â€” Í:26ÉþÛÀ˜¥¢¤3îH®ÔH†póG½„/å;P/^fCœàÁèçö¥Ïý.à†-û–YÂS9P�¶œ�'ò;�_ë(¢Ï|á À1ÙH”¥>sßÙ�1ÅE³µûûú"ÒÜà�.JMªDY>xjj*"�+0¤ðéýâ·Ñç–>­†6˜±®�gŸ°á0O `€ïµdV&½ªðHCÀs¾Ó©%½*GñÑ@ r¯-ÀqÔÏØ7³w5츟Q‚ÙÌ —ò¯B­fµž…‘ï*2*o:�¶AòÌùì‚ë<¡ÜmÙp#ŠËy§ôSÃ@ÍØ›(3�’ì8Ò­]Œ®Í}¬(ÎTC—¿©Ìh„’¶x¾FéKÿ”<3ßèš5~#®ÁÐÒR÷Ñï�“sÓYe»PÎö0:OUÅ�ñrùž ^>ÍG*d¹â3ž Ä÷s¯£U|ï ‡³ß8ÉsÀÂsw _ø^]ƒûb0ÆF‰3Ë@'´û¥CYƒ�ï(�Ýó¡�$=õá÷cØ¢çÜ6CÜ7‡?=1–J8u ç€!Ï~�3°�:OÌ”38ôÜx¿}ý<‡ˆÀæ�3Ù8ô0”n~–×)ÿEÏk¾²º@ì1óUþs ³*5ˆp¯§iV½�.–Šã]ö&dѱærŒ*à´=SK¬àYœœÁ`Œ—ó›)»{€cT�ýÛA)áBz×Ó�§‘³'Ó?ó¹ôgÿþOÒÀð r+L–ýÕë{ÝOåÏÌ€©#ý/àïîçÌÉ3r *Ílq쑼^ƒZm³Å7{̯‚×(x…§Êú4fz›ðxÁýaœ€&È[…EçákdË.`�ϽßÌé J|šÇñ{NòY+*xÏ!³ úÔ]G½ˆJÎ!Þ,«ój8®<¦.L"X i¥39ܹH×ÄEi‹p©.ju�0‚ï¶sšž!c�Mudùm¶Fs£Û �—2Ì9ô|×,0n´•aݾÛ?;¬!Ç3Ò ³ˆbÃÁ'é9;ÂZ V@ÆV€ ßã«|¯0eù|cš¥ã­”SÜm‡Ò(‹7äp¶ðãº>éC¶~霎¥÷?ýD:68LVj;iH}ñ…Ò³_ýrŽ=!³ìŸ2Öá™Å|XªÕü#ÞÛWø×?ùߤ¡‘³QV³šàü�¬™¿î^îžÔ�©Ä:Ž>3ÿ�£ñløÏŸ=û{×;cÄEq\Ú091ž¾öå/é´Î4¤œÍåôæ­ÄN¥£Bš¦�|u>s–ãðÊ�“ÆÕ™&m“¶Èó7à™kkÐ� œ€Ð�-ù£ÙJVS��—%xü=|µ±UÐ87c { ŸûŒ¼BZ¸_Ö!¥üêñØB›¶Ú滸ÀüÍ^³ä8[³5½¯G NnÐ5ךñhÃJV|Ž7ÖC¤Õ|4’wÚ[´œwÈ›í_­ã0�¬àÚ °“E$|Az›ªp¾H—S™ S0cðûlÂ"Kd¹N³@u¡Ã ðcþY§:+Ê*ZxЬ* ®‹³Ú¥Õd+CjFuzˆy”fÏhûŒ“:í·(�͹Í2¶U7+è·leLå“Y€yyt¶B ÷Ó8C-/›Ï“È8wçK9‚8q q¶¤¥¦Ê‘ORR¸¬Œ¶_ÐBiÛ:üovÂ@j~GFX 8`v‚½ÁQX%qâ¼w·xÿã@cËéw¿‘X›QÆ2 '9ÓŠÀÃÂŒ�fd¤ºqäî§kÜSÆ"ó5�;ÒúE2}—ôò&ÊãžZg|¨eµíqVRžÅbYZ˜ÜÆÀ�“§Àì{ÙÀ$"7:8÷€�E2s 8('Àa�=œà¾Š\Nƒ8shûÒ‚½M…Ij<·¼Œs€ÃœJ ¾K3ÍÚ”+Ä íºS¶@;D‡Ä ÁÍð9ø"08·Ið&xPÑV–VáÙ{E΋½¯•‡r,¶X,q¶â:ý¼`™³³BN¾ècNÚˆ—K¼x/–µ’ÉóÉLf{Áî«R°jšÁi8¦¸}±”�i¶aeVqš#¦‡;¸I GÎÛ>SÆ.| *ÏÈÿÖ‘ƒËqz570ƒ< ^VÖW§ÎfÏ3“ï´§m‚+uüÎ8«:¶ÉänéH�ù¿<,2±÷—7€#ÊÒ|×Ð Oe#S—5¯ ó„œÂ};|^Ô™ÂYzþÊtdô²ÃRjn£½Ms!uwxn¶QA&ÇŽ¨ÃMY]>ªl%íñL Lg#pU¹€1uˆûŸ6eQncl�2ì ¿È^�d÷Z9 Ë„öânÆä¡ìG~†ÿrŒÿ 'òdåZå*÷4Zá)ƒª 1^È(wß'œÉÁ!Æt¾"ó+çΤ2¹^z˜Á7þ„+-tÞ®ÑËiù·£*?) cV8ÒºGîOgΞ‹Š>òV<÷&üå†ü—úÈN {ûå¹èT/4¶ÒŽi!öËLë͵`zÞ{–¡óq:×Ôe oüw�ŠEÞðn Ðá.A¤|·I6z ö¢¸‡J)îpãöí¡‡Ü¢þº o y=b[œsc¹©HUU¯jZ)«ú/sRævŸ}ÿŠÉ.¼« û‚™Â|6f¦Ê;Ø 2³"ƒ~(iL-NÎ}ø�¸&­ ¾ | £V€òóåÞôõvGæ³Õê�Vò-)U�aÐ°í©­"`_ö1í­Ðföô‰‘ath³»Õ÷�•pkYÖj±5¹  `¿D«ž6*lÕt!\™¦MÖµyˆCÚ¤-@W¸ç��aá³�î….UAð�? 4x ÿOEÛk%XGЕýU8¤«�Qï´dÙÎ…;é®úi9�”5À„z®<ĹX`Ÿ3©–<“Ë ‚°4=¡.AÏä VëÙÙYe¼}‚€=;¤éÚ@5þ “‘|¼Ï^X,�9.üˆ�žCvÉ#² m¶Î³2^9°m`Ìâü� s©¾–À è×.v+iTTgr”¼7“¯€‚*ŽHº&PMž�s:Ü[â>ì]ØS´-X‰ÇÊ/J´–$«© �¿¬c°7‹ÆÒ –ÙA"""&Aù‘.ÃfdÙB2 'Í!»‰œo0ÊÞ´ÐCœ^!2…ï ç5;;›8a�Ò8i/•ê]¢›¤›Á ùWå׬´0€@ 5`Z&NÆæx™ñ∀UB:†Ñ"8¡†³~�Jf j$mÀ€Ã^¦VJ=Ù jCÊ8ÈTÀ9âÚ$Tœ »¬E££åõ¶w6é3šª8èê|=@h߇›W^N]ݼ×Þ ô‰ÂlDΛÊ$¤ƒ»wó;uBàÚÅK-  ƒo¹`fyæ*p\ €€žürìS¢ò©‘-„F¾ƒ†„+sk‚0KŒ¤2W‰›¸Å�ªÀÍ`¶Fª,i´SÑÎ¥$î–A¤Å÷"Y§™#$s ÈP¤Ms0eËùj¸ ¢éCñà;õ”î­ëçmBÑ�C*œÀ˃¯‰$Òl³™Ì>\0qìÂÐ1°úˆøè‰Ò%Z†[� ±�4=1EÛfÊ æÒÐñáà/“S“ádhÆFˆß`Ž!@‹á$guv)€UaDØÃÙ 5s×rfw‘B|VØW0°L“Q°ŽQ…á«ÅwkXSh×PÑ�0?KÆïÂ÷\œÎ�£ ´ç¾ñl8FæU`Ö?”ÃËýÅI!ž< :¢ì`©iÅ÷»X‘Ç|/½ürô‘Öp•¯Qî°½Ìüö€h\œ„ê¡–�:Ø%Ûãûûý^wïóŸÃ^,�fF¦åÇ^yõ•Ô�“ÃV9¯B±—0¦/¼èÀõwe9?Ó±n)´¸O¹îÀ\ÜôWþÊÀˆgÀYÛ.Ù9¢Ø|ì‰ÀçÏÿé§Â°d¿> œc›“<­1üFqÐQhÏ/Û4œA®¥|6”wÆ't´+c®Rñi•*­«šIÝ?xŒªwb,ï)Gv5rY¾êŠðO{·)ÛšÍêº4Æ™�ê= tiV®6àSYZã«k‘V¨¨ä VÙ˜èø;Ÿ+ÃZf—’g:Cu&"¹#Ÿ¢° 'W0¦X÷Xó“6õ8XåÇâ¶}ÿâ;”,?;’ù#`†'Ždl^²G ›Fw'æ™;_�b:É•Mœ£ç²ÊÌȨã]‡¿÷E¯=ÎÖñ¤�¶BRáWžq/P¶7“é1îfìGàÿ:Ǽ4NÝ${ˆÝä‡�ù¸'ÌCxÐÈfÙ®püC½ `4œeÆùì}¼“=ôÒ8/ϰ$ZÈHÐ6é­ÊŸsq †å_‚¢€?Ð9QܼÛ;,AŸG©uli¼Aãé½ï~"ýÆün<5ÌÙU¾I–ØLºsó:™À cD첕eûÃHÉ~šá,ލG•We²šÊ?š½Í:¸%æ+o^Û]_  aé\�AõáT/œ?|gÐgÖnoIé”㊷‘9$) `”ûäs³ßËÉx¨àÜ4,Æ;ÙWç-eÁ] ×g—‹T�ÇÂè´°J5Þ-~»&ù‚ëõ—�½Ç¹DiÆÿâïý}‹‰¬‘¡¡áç™/þé¥çŸ çFoébdE—A§ØÛˆÔad43dÃÞcO4?ûÆ& ÉÈXÐ>¶!æÏíqFg”ÁLLægô—ç›�ÃÏþÝ?£%¾ã^#œx:í’ø¿gÿh ?‰|±Eéêñ+”sæqÑÀvá]¹À€’½½¬ ±ßkÐÕ@¸!ýf0ñEÜ÷i•z‡tIZ¢á\)ß' nÕ$4[ʉŠó~'_S¯×I¦…xÜg,³p ĉߕ…”ãƒnò>cˆ1œ›d;ãÓápâ{âpÑÿxtHîÁ\@8ߣØê]0“Ø"ež¨)¿eGø Íö% ØðtFh_0K=*”�#m :…mNûœ{N©S›1{”É,=pÌ{Ü ÷Õ}q�Òé|œ÷I¥ÛN>£‘ÚB2úäüB.`qÖõ:†„¶ Kù9oÞË8:�˜Mì½_pzÙÙ$Ÿ÷½ò{ççÜÍns/¥£ò~y»‰{ù<à��4®‡ÎÆ8Òvów=|k·â‰sqe‚�kùҥŧ®ÝÃâ µù 6N÷ÁukÚ~X1kÖÐ.¼esñlägž¡6[�ÀÂB#¼çn�z8 xCmOˆÁ›–a?:ã#9Òßu¸.\Ýge1?—¯oF>‹óbFî\Þ�<{Ça÷wàÜiº»È3òÍWŽaÜ/ù¾gášÜk×r…7q‹üIX?BÚ`ߘóÿØæb6¯¿;gó>¾�9›mrÉYâkÈÿq¯2fÜj Œk2 ÝìTù©€¡äçÎÇùÆÞ±ïî _gófÎâ†NzÇŽ9ð™¸êÏ‚v;×fåmåVâ³ œôÚÚu†dg¼zŸlyö#‚m| ÿ»wñnp;΃3û?ó�Ÿ�œµÂpÎsÒ,wÂ5{fÚÜg¾Žï�ö"Ö꙯τà³!󬙽„tÀ3 9ýBZ¥ü®Ž÷»÷5îçýàŒ2FȘŒà~xöU&ö$2ÚCwa®AÙ*u,ÁKYÉœ0 ¼˜Lr²¼Û`UÄÄ€³2µ™:Ï·öî8«<Õ@¸Àm�“•¯Ô<ÄÔP@‡w9ÁNâŽN®¨�½ªÆWâš-:)÷…NBYíŶH”¹w[òa¾„ëšl?kõ>áÄ` ÝÊÉž‘gí»ø’}Çé…ýªL»2�PXŒ“ѸAe»*üL;ص§ÐµµI»·V6†¤{´å˜ü±Å©ÎÏ:‚A„«xhh¤2…xéØ!C3qçè¹åIJ3ØØ€�Zª@J/ԩ̦Ö!i©tmíÄCì™ tÃD8ö¤‘:d×)w½Fp”:…rhž€0õ«M2–Ýß]Æn*© ìíjgäÝ®fÔᬓ¿­­6ÍR1¤D²g+¾«–ÖÆtãÆ-‚SªÂÞ§�o…¶YóèXBÜžCu7‘•ÐÝ-‚µ¥µVr�³éðY³�t~NTÔa9K[‘Ùé)œß $uDV»YófOÛîÅàƒÈfh/RD·ê'©àÁaZR5]�\J_ñ¶Hª8Žõ!Ô CÀe7™Ï{¼®žy7âGó¼õÅYʽ�+t¸ÇÄgêšë¬Ÿ %öq› ÚfnÎ�¨D[”Vªµޝ2NUêÀyæþ3éüƒçÓSO]H·nÞIŸÿü_¦¿|ý2eî[IèÍ|’%²�ë�+H ƒ–€›Ê;“wî¤U䉦æ²û;Øs‚Jp|x¤ýfƒ=”f({ V[Ü�$Ó}&*séoYÁ¦iû7XaÐ�·‡fê X_I3×ho¶ÛEËè>àÄ#îÐær¾Ïp¥™èˆÀ…Ár'íáð.äj9#<¤yÐi¨­I¸1`^ù®¹¶ü%ƒÝjC$Oœ:ï‡o‚Û{”=g“ùZEÕÛè2Ó=p'»v€‚1Àsî�ŠìQ–aOþýÉVÐÎc€‹ÙóøÅƒ?ç‘�%ù¦-WÊ”åØ0e)ñ¬²Âê¬&Q€Eì×X Á9YyÕ¾ííðœZøÏ ú`ÐyðJ¡Ü³‹Œ°†�ªHKƒQ¢‚#û(Í©$x³*‚42î÷}ö†(ã¼ݤ‹UMÊTA9K+žØ*‚_°E”;û8¥9,‰C5ˆ³Çä ”aÑ'3°ƒ›Œ“Ÿ~˜Kfo™¤�M�AI¡_áAzÈ ”fq.@H„CØ Rå(‰DYÒò�Ódçll!AXÖ!&@rŒ³#R¶Â2 ­8¼1\†ðÂD6‹Îq¯ŽêM²–,ǹƒ¢#Œ ±@eÔY åtD0ˆˆFÕˆ˜Œ£¡³['×q€9êÉ$”0ubæ�Ìx§Š„¢’ˆ‰¢,ßOãññëéOÿh>=ùÔ‡ÓЩS!øÓg/Ø…ŒPý0|ïž{;ð#î@0Až7ÄûæÖ¶H£R‚%ž*èÙ1  ~fiœ�¸¥P®²±!ª€Ð*àJ¤ö·!| Û9”JZ5ñ³Eé¶¥]ù%¦â—Dt_a ÅÅÏT„ü¿²²„‘Š2A0f1Áq€æçèÍ3¶÷cf öó{×½øÙí€x£‚§À$Öƒà|0ëÉŸ'Æé×Mé½è� ¾ÌÌ-Qfq•¨lŒXâ ‚½•i<íÕ:AiÝ%–S2HD~'¯1ÃO…Üþšþ®‚{ä ešû0pJãó›{D[FbžÓH @é=–ÐÙÂY.¿²$ B�YæŠY G�J�Å@3íOÒ„Fœ”òëCø¤†„1*S\¿yükJ«û8JV©Oäí3ý, Є]y§J#÷fß0¯ïyŠ�¸TÄ¥9ìñõKWvV)Ûké?œAÌK§¿Žù¹‘³F€Ú7êÖ¨í&á»gãg÷®·Û¨ Üº}›ÝÑP ,—Z`VeÄHY�tH=ø0ðÁ+„åS�¡ ÌQUèÇ… pîG,Ÿ°P2 ƒÐ…ÇK£×^ÇÑò­ÔJVykF£–zàs=dÅuàVãªjè™ûÎ@ º€WJi"“ÚÇÊv �7Ƚε…©i§…L² po+�8~’œñô ßÇTš-³©CÎ2ñ™RåÄýÑ #¿fKBÁp�FïL¥rÖºŠL �QÂPžñÒ°.MSaÖ–ÉÕf…`Üç™ ¼³§¯›`¢F‚ö¶ÓÍÑñT$k)doÞá›È¸`N¶Š8Öß# MãÓôj\ £›e©…AÛel³ÇÒèîúòþ%ô÷ÌL½!@œß4 ó ½‡Otž(óÇË èµÏ}ogÌ[ÿ"å\Õ7Ô‰òèfó7–Òßý�ßOøÅ¥ö~zöa/ί§ë¯¿žfÇÇÓúâ<´`þ9‚µ`8HO 5(Цƒ‰C¥÷î…°°<º`�xÒ{ ‹Î}e3#Ý:8s>Ëa0Ñ(賀̸(¡Œ½mm¿S—S÷+]ï¥QËuºš?kLðL Љ}B7Ó¨¸Ì\rÐw2¥-øð0{¿í`”¸È:ëÈ9væ 0³ƒ½‡`äžôhÍ“•ÿò_>›&fnñ~�ᬣ–çj0f#Yk›:ÁY‹Ae®9œNÂg'�m“ù¦¢ì½„qÀKXœ/ ¸¦AÔ²îÊÆÊ1&2m€°¤AC^ëÚ LyAœ?B.ÿCg´¤ϸ¾@ša©ÐC¬)5f‰ð¬ |· £¶r±ä_¡B㤆__̪X4Â÷ ÇÌÊ¡­áý±¾cK¹8K‚‚Vš™œ£á¾šì±Êµ„i†ìCN‘13C£N°{e‹3‰|oŒÇ<Ê8Oaf‹}VÔí=”õXŸesßõØã‘ðâ ¯pö­1‡fÎ6ÛK�=ü`Èa�#à'Öæ¹>àÜ’vÌSæp“½ñýá¼aÁ1çp°^öf“ “vÊÒècK¿ó»¿z†mmmé¹o=›¾üÅ/Þ˜±šUåàœ˜¿ãGiE>—^Ôa5@ëÜ#�§�â·È˜ 2Š{ÏÚ_—{-Mòyþ~ /Oþ­�Á[¸øŸ‹Wg¼äHëþÁSò´Þèòé ‹¥z±¼jÊ”jÔo%óiq‚Ä 2€tÐ…“�A”—‚ŠÇ¦ŽÔ¬Ý‹¼ÇÿY†ØK�B›œp¬|¢¡ß­åçp�ÆÝè,8%¤EUŒeæ˜rxÈæ¥óÁ’¹eèþŽ#¾+#È¿‚f1’%à³l_Ämç�fPGÀ¤U‘Áêx<']Ò[]�&€_ÒfÞ!Õ3cX^s‰ÞÙ:U´3ð>Þ%r=®A^Ó€ñÕ€�<ïÑxmYÐ[ »â>ƒýæQÆP&1¸Y§+{wwá¬Ô&Ðvâ>ßëDqÙÄ™;²6îUä?÷ÝïÌð úÅ;Qëø›—ÆÞ"»qÿ¾ûÅX¾G¾­£X}È•y[š™KŒuÊ‹ã]ÈT:�¼×ý“Õ9ýpQ~.ïБ´8’oò–8·Hvp\Ö¨S,LÌ-Œé·}Šy09y$†Nî3` ;aO^ |š9³\ ·±'~.ï Ûð¨³$œFÐneE�èM¿û¼óæ~a…a6Zlù£^í’Û=ðrîÚ`•5ø*¾×™¬Œ²¬Î8æ ÝWXr^¾é,Íä�pú38C#?y^ü‹Ë=Ey�ÎN÷Õs1;ך¥çèœe{¹?›ØÑÜO°¶y.ØG•±T>ø™ç#ÐŽÁ½…Í�=QN¯Ô9|>ÚÖ¸!¾ Ê,±'<¨Í�1|§ç#.düÍýŽâ;åg�âÒ÷:-0<æ¤c…qʫȶ¹OAË´\ÜÄa¤Ž¾Bçëô„·Ò�Žzç“‘7 ÛÊ>Ÿ½ÄõG¼Ë Qevß­±8Ôw’¾þõÒg>óú\W¥ó÷ãýVlˆÀŒe[ÜJù9yÉ,ÕÞÔ ´ctÓ‚LÐ L,F&¾ÙÏêô+Ìá‘GÒ'ûCØæÓ¿úÔçÒ"{7�ý× }ò±E ³BK7{8xl ‚Ö …W¯OF»Ï&Ú}Ôñž ì]%`NÀ¾óÒŽ çNhÕQÔ¡ŽÍA\ªs³Qà�äà˜É¿9ÖXUÛÈžb‡Ù”÷ãÈ–O°¶TiÛ2Ô¼’ñxù‹-Dl©`•ƒÐ��síA¸èÀæè&Ï…L>ñNeT[‹†l||ÆÁ�íeª%p¯{Z®iGÐÎ#ÙǾ],a¡ê—¶“B½-Ö ×ÌÉäëCÚ9p´7a-´8™™[IÓV¯"ho¸¼®P@W]¦õ p¿�šÙÄ!øt”¹ä>âtmU`2âõÕ’l¥*ýIT³Ùãó²22{_±²4„¿’,-2G��n#'OR²¼…eƒè ™©D.9^É_opÉüëÜ$KÒ®� 1@ì!Dø��›:®ã�Cc~V²È¬…zÄb€b{ôYÁ0Ôß7ŒÑ«?u¶·a˜[‚‰+0JDö™38Êb³l ÒÓPh �“ÒF6ÉÜv þ–ØÐ™. ë´p¾ J  D¶øÙ² 7™§åˆboe_4àõŠÈNH}Í�öÁ¡LI(ɳJÏ~®¥w”™ñ ¨Å"%!ˆ„ÙX#:‡1ê\÷%.�‡~¢+F ¹Ž˜¯k;ºŽ>;úýÞ¿³v@Xc pŽ2„�QáÜÞ#˜â"nÕ!(4$bö) K™r P�Wยð¬S»×ÙU �LK£Ù ¸Š ¤‘`  ˆYdÄBg%œ Q¨<„W¥ÜÌ4£UÖp.Úsz›Re:œ«ÊÉOŒ oƒã[B2ð6XåÛcŠž…ø‘èRv~˜»™<@º>35IÏî×á—•*«Eë:Á¬Ü`YAºÌ©¯gt�[:TáI†í�û3Íäi{4L…S >&n‹íy;ÑŽ¿½§aß$£8¤â.T/m¬¦�0ôóY ×ñ½¢,/ø¬À8Æ÷òBi‚ þk¯¼–à¿Ý8,4lØ�‰0gnü+×ÑoîU&ÀêÌÏî¿rÛþèÚRzÓˆ ©ÑɳûŒªÕø#ö+´ø^ëH½þ*‹îýõ¶Û�#¾$NP21~'=ñÄ“±…`ãâšïUIi”I•i”¡üNeA§»<Î??ú•üTbÅI 7¢¨ÛÛ:Óû>ô‹TºC¥eŒ u©§»#xZ ¹¹ãñ&Á¢ydE•´¹W_M/ЖAEqíÑ•ôÄSï£O`æèÊ£$Ê žùÜgÿ}d¢Álæ†Q¹î ÖÑÈZ�rãåÚ,“m&å6ûa9P�dc•iÃȆA@'™x¤MYÇ›ÆÂØ#¾g$þh4U±WæEÎ¥|e d J´øï^kwû2ÃZ6žôËyÔB¿‚žqƒ‘Ä«ðêQ¢ª]—4QšÅÐñ¬?(;(SóWdå»oÊùÒi¤U0J%~Æ€ª‚亽4J¹>«Só0u¤iJÛ©´Fe(æ¾±VÂA¦[C†ìYÖ¾ýË\³ëÓHªb­1°§»�jÍœ‘+eÊÛ&º�4Ë+ å¾Ó¢k¬ÁÀßÖ¶¦0*¬’e3OÕ€ˆÀæ¸�—ð¿NX•Aéÿ©w´ñžœâÜ‚^E{#LZÂVçÀ´¼%7 iÕ >°÷¨åÓ·Èru/<_¿ð뿚>ôËM�ý=œÿv½~=MøxçÊ•´„îQ�¥aGÜ�ænò.ðöh�¬`ÁÓwMÊnB�FW�™Õ¬#OúŒYw4ž«¸ê$q-–Ü?�”:g,§¶EyØ Ë RnTA 9;Úöy³×X9‘ê:¨÷í�‹â¬ÌHìyóqìH@IDATwCwâ,ä£UŒ¥1<œ¡ý>«€©jdÁjz¬©«•ÐíäiÎyYõ0òà•í¬#¾ˆG~®�D§•eó"ÛŸq3Ç8Å}Kf\¹|�eZg7ðiFÌ ŽhKél QwËàI£Uw__´ÑšÈsê­™ñ�aL@ UVqžÌ�ù³ä459�.ñ®صڻO˜Þ¢Çe™*âõ�½,yžaxVX7ð¯ΨŸd™úY`0í1ð^ã£ÆïJ(n¸T¢£@sø,‚˜X³ckg¨D~X!ä©÷¿?ýÊ'>Af\{T ±¢Õ7þâëéýŸÿ§flÂP%u��CðWÆ[Ú>Ô(¦îÒ?r_ú…_ýÍÔÔÞÇýÐ5Ρ†m¨4“’GÌóÌâñøû­ù+›ÍÝu¼5SøÿV逗tà;W†yaKûßÇ]q‹ç þžå£ÙYf²ŽÁµ^Â|¡Ð M­I¯<÷Bл*`=t |àO´Ø€V1 8£óÙêÁÔù9Óóå{òy§8íT¥a~j)´Ûq]�ø¥¡Ô¾¯�¿â¿¼ ^-D[·»sÎä4葆U¾T.§"x,óN öˆû+ÀŸ*h‡‡â`-å:£o3öeå݃Ò9ÍdÒp³–t~ÙÃ3 `r¿ .@~‘O™kò�ï·U–4_Üô¿žž^š N«†ß@' ›Ò-™LÐ^²¸Žä÷ÛL?iœsµ�´Pz$õs<‹µ!3±w¢¿N=�džv¼“CˆlRÔùKµ¼Ç}ó~�lAÜ«l �ýƒvnc× ,]w›3.“w¹�gà7ÐdmŸÌeßÉGª)¡Hv–s G0cû>å»R`<Ï1ƒÃ÷yÏÉÌpƒÉ´ç¸./õ1†ÑºÉù“ ÁýÊ|Ž»ÀÀ™c�›„3¾ÏÆ–ƒrr€ðë¹ë| xB6=r2Ù«ÕÏ èŽ ä\õX¶%~wýUðüì~Ï ÙÉy0_ï‰ÒÂ0Ré¾mç"ŠeçÁ,ùEÞrìM8²yPž$Ì!œ8eE�Àßü×ÏÜø85Î>ü‰³á+ÖÈzùÁÅž�Uuf9hy³ò*ïÿ„Mçj[š£ÌD×$ )cE`p¢#,ôö,x¿S€'ø¡30ö<`%Ãeß©þÏ«bÍî¥g$®‰?lEì�“UòŒâ^î‹J¿çó WÌC%¬9ÿŒ§>_Ö ¡ì¼u¨ˆ[Ú'¬¬¥ÍCyEY£±¹!�;s=¨”.^¹žN�‹êD7¯ßI3ó«ÑæÎóîMÝ]m”€ž"py7�9=‚í…6r“q[Ð'³ÛO ÷€G¹ty««»‡f� ØÉ4>³²�:O__;mû‘a¶ÒØøT:}æ¸ÊDzýÕëi¹S[¢rD?™°�Ѐé©9ZP¤“<³†tõÚDœ´4Rýcp°šR�|8•Ê(¡ÜH&oqs gá" tf'¤YMj7Çs�nÞO=-´—ɧ[×F .Àá‹N¥³»1`m«éÎÔ|êH»7.¿v5�9>}â7þŸ�Àž|pvÄf{ÏáüŒ/ÏÅË÷뫱�ò>6Ý‚¥Ïpqs• XpEZB64µžƒY"YÞÇÁ»‡®RFiíB=Ù¡T’3P{[”ŒMø2€ÁJZü^@Ï¡9‘iJK„zfÏtÒ ¯%óüt0‡#^2ǃN$dV¼ŸçÊñI—˜·46èßÁÅÀË ²–°1ÌE „º±�ⱺ·¾íÑò4ñ@Y×1¥CUø¬š º´Ì¼ø(=Ô6á�ß!>¦vç�êAÒ“*3�œõ‚/VwŽqás¶ÿ0øHÜ<„vË¿ó¬[¼u�ò:+Œ­á�Ì´b‚™G" k ä¹º®º�|iÜ[÷ÌòåQÖ~n� äZ´!Úl”8›‘‡M«è¡ò!éÊ mšzûÓÙS§ña­¦úÁ!xiS£÷ïÄ‘)ýÚŸ‹›”´‡>[ÝOßÞГèî[È7‡ÓSÚ¬.ooïáAœ¾ ôèf/:?”î;;Ìþ•Ór"ÝÇÕki��vsTvn º¹-�)¤ZB47TA V±´ŽÞ<›FÁ§uæc`º6IiN }m�6É×^�NÍ=Èß�﮾$ µ}ÔŸ�'ƒº•$Á¡¡átj¨�÷Ó>Ý{‡úäÌ*NÖZ‡Ð6ׯkWçÓ•ÜdìmÄéß•þà?ÿµôÁ>–žyæ›é�?ý¥tþÜ©”'ù£�Êg¥öØëe2ì}�²„AÁó8Ò·Hæíêê& ;&IõnȤ#Ú ê ìÝÚ¬’NžH/]¼ÍÙ‚üÑÑÞ6+®Î-§c§‡Ò@g+~ÇÅDë /Êa&è.³öö®äŒ Û €io{‹=¯åøqœ£›ØòÀê%ì;Y+ l ¶áª_KÈp¥=åITˆÏ‘YöÐ3á9’ñ�ƒW×1¿\™I’8àQPM\ª—÷²ê‡âxàóÏ@–‘ÿcÛÀž}Îw�wå«(7/¶ßÚºµñ(‹ðÁ4Ø¿„¹�}¼ŸqøSþ@QM°‹ò§}ε \½vƒd•sð¡ØuøYuzç‘ùêêñ##Ê“ ȃ¶˜ üÞ`.ÕTuO2™Ä@iù86wõqä 艾ëù<2U+*+‘%±³ïÒJ§Œh…¨â €aäçзQZ«è¯c©²âŠ)§h�Iyh “ñ–Øþÿø_ íJ;|é™/Goè*¯"ÛÆR™³†C�! O-ukv‡6?9––†Œèå�Af�›M^B(Öá×@ôÊ&†Œ"£ˆz`“½²Rù¨¡/{¯›�‘DP�e~¡È�Ú@!Hbš ”Ä`o,8�áFBgO…U²!TêkªÖÓå]úLad±—˜³}?@þ5_B%±KŒþ¥ÌyÁàeŒ«'Ï¥z×È<‚ˆ36Ù©ÿØ—€ pçåZ#’K‰/\«óöl¼ï'}—#Ü»Þ>;àù{qü!äzþ ,–B6KÉ’-A�YGªÉ>ç0¯ Ù â  Dr×”C Tjí£†�Ø66*2 ˜ÔBÌŒÌ,¡dX>Ãh8ñLç»9FïïS�aDÃj¦Ð55>>M@ÍŸeY…Ì>ƒe!¬ÿ„øòö9½{3ýîÈ ùÍ¥b’É0hÀ44˜H;®@5†_zíõô¹Oÿ?©€àR…À+ß´å@d("\Ef”]aZÁØr¦«4¶ï}Š’®�º¸$Œ÷(wFVÁûTˆáÁÐZB¡å^³Ší`K …ÔˆWùS:Dñ?Ý›:æ)~˜A+þ€91–¼<mùÂ’J@‰ÒB VOf†ýËêùl�À•2 )kDÛ^¿q!AyW#¸å¡uýõ½—¾ø>硱F\E zì†O~Ð%�j¤çOOo0u´C1ÃSƒºQå5D¹jô9D r×¢½|.Þ¿Ýûëí¸�WÀŽ‘¡–@7hjtt4=ôð…¨Š`Ô>_þ¹¾À}á;dîÄK�dÐÏû³øñ1• Áw�þØUÂ/2Ó.89p|$=ýñO¤?ùWÿ<äá&Goss‹!ç)?‹KD�Ÿ9sνµ46z c0=+ ¾|è»ÒYŒ$òZé‡lýðOÿ�?LüðÇX7��ȵfyl wºž ¬É mñëè33DÅi�c ŠƒmÐ ¦¦±ñ'ËÓ˜˜»Ž2Ñ-‰¦�>JSòo#2¹÷*{»i*,±y쯎-K¹»ÕîwŽ,¿33¥gg¡€ñ„Kv3ÓC©s�’r(wR �[Í8ªÌ¨Þ‚ÞhÒð -1ûHºt€±7¤r¾ó‚®± žÓˆ6¿°gœ9†5ˆi`ôÌ0$2–Æu÷Iã¤r¾k×¹è:¤mÒi ÷Â�2G(v|¯ÜìÜ3:Æß®•9iävmMd¡VOŒý¶Å“=Ì”ª3'ÿaš$CÞy Cê.Ýdô«`k,ò¼,Q�÷¸dUÔ4„ò _»±Àçà^4ˆ«Óþöè�O[é}O8}ü×)5u¶]=ƒñãÅ�kiìòex�ÆS‚�'ÖMæ¦2¯’•¾Âð{Ho;zmÓOÔ£j@),P®€ ×B¤¿sƒ¨²÷(ÏÀ°ý' 5ÅÙRx6j2Ó¾@P%[A�˜Ú5�¹_ð-aÃLv×Îpq�{üãü8 Ö+,4Žï�}±NFöÆÃ•"{ L,áÈå> rìsg©}ûÙŠWòI�<ìpš¾q3m�g}'N…qsyð¾áô[ÿÕ¤Ïþñ¿¥‡ë�pÆ‹%ôB÷×s‘>8W÷YiÆ ‘üÐŒ`׌'¿†4š™…’SFNwíçËwÊÌTGëĸ¡Þºò3™"Â/´BýO¶}Þ³Öá^Ù™9 D i‹L ÷Åu1$0”ÁÍ“þ³’±|Á˜êæuµ„6Äòt³F4ú©SªS»&˜£W!*ùÃ#wl±¯­70ÈÝ&ø¢ÊsçYkd¼1®†-³-Öö)ýÈ^Ô!×tõvÑC°�±Ôg BÀ(h 8û陨ƒ× ƒa•Q„éÈbdÝKõ44éŒ(@×jÀPGužZT‘I” 1ò¡×;]7ÊBN@>�óç±G)£dÛðJ'Нtÿœ�ò�[´Éš¬~aÕƒÿá?ûýôÞ'ŸLÃÇ�Ç;Úøü ¸óÕg¾F¹¶ƒ‰‰)ÖÍ~k¼žu™Q«®%Œ¦îü!¥þþößù�Ô;È8‰Èc Ž<×=—ÿÀs˜ç[})‡¹S!wJÛÞê ý y¿0tƒW¾Wv�'„œþ˜iôÇT¦ç ÏÂ)7c€—¿˜‰–e«G‹�€M³Ðs``85þÒo³5´°øw8¡ŽáܪLãc£©Ÿ 8ò«Ë''–À=ÊnòÎ4|²ò 6ªÕt#íÖ�Æ&gÂb†xsýÚh_}j œ«Á‘½=�@xíÊM2Ú†ƒöÜ!›ð›tIÇÓ™‘nø[>½ôÊež«I]=méêÍ1èÐ*e>[öqåÊÕÈ\“çJ3 DŠ öÕ½.r-—S!†ÏL�1‹M:§œfµIGVcÑQ#­m„Á*[Ø¥‰ž«Ù¬ЩüÕɸ?³Æ[Ñ©và/S³A÷¤…:«Úš <_oA—Ä6"�žÁ¶"?Ö¡­|S‡Ìä=‹ÜcðAòÑ4cnÂSƒ.òFÛÛô¬d ,ˆAðŒ©izƒòŒò�ôAùtp 7ä�08Ñao��ËÀ&÷(›0fÄAd�”ÎEþ¼yûÐàW>¤ãÄuë\é> Ä»�ÄŒtù–¡ãÜÓGàÖ4×ìÁÖ–¦tíÆíhÏUAà�­ÂÚZp4F�¹8Ð××�jW®]G~4TGZEzèܲIb®“騱þ0Ê¿vé:8ïc}ÚšNŸb¼&‚ÜÆHôhG¦¨J¯¾~ç ­‡H´R×8ßñtêø¸2�T™ºB ›ãš©<ÐÖZŸÎ�=—ꥃÃCi'Ôµë·xNeàÂsyÏ£÷_¾xéZ:yj$)žÿöËÀ-°†\½Åùœ;3œŽ±ç7¯^ÇéCÕTœ!¯¾r‘Ï‹ðDà�9Üvßéi–ju[8†‡úÓ�›£ìÁªÌIš¡ãè=�=ÄΦË8¨xà\Ø£_|á5×ÀAæ­>õøã¤^äÑ+/ Ôá¨xþù�ƒ�T£3¹±¥­.]xø|Z§ªÖÜüïH·)k|ãör@CȽ»8KΟÅQϼəu kök¯]#˜m<ªMÇp`7QuªúôÀdÁ'i›‰reô–¯Ä)ÑQ‰CXÖ!'|™Å‰4­$ø:bæyÿ Žp*Jd·ä¹0w>7È×òíס‡ äi•íÓ¾R ¢-ú¡.k_AÆâ™Ú¦²}Ñgª”»q¢ _–#yp¤œ{ÄQÝ�œ‡•µ9€ýáØôçZp[ü”+8£Féõ] ûûâa8|sÝÀÌrûñ6‘Å©N �˜¦äu «õeŽ€`ƒ=†F†Òßúð/¤ÞÞþ(Ëœ9‡ßZ®­|§¼«ŒWB§ÈU*ßP{^…ƶÀ{�SÊöîMô>~Êãäk{Tíï#cœO´ÝÔÔSî8°y裡f-3äQ•–§–þâ/q ƒƒb"ÈzúT¬ìqH›\Ü[ÜÞ‚ëUµ áƒ9Ôë‡-º’’èfÉë)g<Ÿ·Š‡83ýŠ °\ß³§.À,…ã åÈùò\Ó:ó¥aYe³ ’Õ�Œ �—6ÙË\g³:�¶ÂÀ×#Y ¾g€–ðf·}¸# î•óõYE°“Ð-=PÜëLo°DàÖϰ—Ë�ÔIåEÒ8ù6›Åç”—ç‡MøÙR‰àÑ×n-¦m¦Ç†ScwwÚ$ Õ,ñEdðãç�Tª$¢§¼É©êÇÛ$½ÉÄ£=ôÍsŠ2ÛÀì2UØ,Ùî9uÀœ£2Iº};²B8º ÜÖi}áá‘ð#ÜšœK/¾t%ÆÑƨžc{»¶¶•×�5* SøÐ¦§ÇÓ¾ôíHÚ)Ãñ;0ЗúúT#ïª{ŠÃ�[Á¨Â Ö±oy{`O(ÃîPÃ^ɧ+ö¼Ìœ[¡Ä J¤Æú†´Åù)JŸ †²¬Iæà…ÞÊ_ñãü•}!�• ZÊò%—f&‚á5SrcCÌ¡½@šC _{E"‹v1œ‚¨ÕÔî¯ö÷aºëÛ™RC¯ƒo¿ð<‘4M#"†â"eý–)G?<Êävwõ2÷»å;ÞYW.‡á† OMoäD~˜í¬WÛB�ß@42 4–¬ÖÁàAKø4¬X²Nº3烛:ÔÓž¶×a ìY%@¹É=дx'²]”e,0wKÁïpPó5öX'å!ÆÊ0´ˆòü¾{úÛüy,:5TFß9ÎLcŽe14niœŽè*î¹E •í{×;{TìCø†9÷\0¦%™ðGì²¥‚†:{)8Hˆv€ñjð“Ú ´©‡©3Ê:Äd~a=Í ŒÑevÒ‰ÁBš%úSŪ±î 5"´èlƒ€íóý:„i-ìÑ�Á‡È& r2qDÆ­ lļ†qü"TØ-+_Žiq~'^÷°ñ;§*M Îü��²ŸàEGûôÙÑw?÷cüî›Äù„ŒO>Œuòömˆyà‘rЇÅJIK;áYUµòOa;‹¤Í²ÈÌnTØU‰³�Í&Ï"„áÊRÀâ€k £0Ñ‹fUæàa[ü±Og< £JÁÞlíZ*G(蜱¤�J¡Ê¦å}ýYÍì’µu‚×à;*':ìE% æä‰ ÖaÙ€€«¡ÀuýêU a'âYé‚N‡ï¹ØiGÐøg(œ“{çø=|çƒpÌqï&KÿÐq”oÊÓ¿HyDaÔÈà0ø³?û„fáÿlìï¼åÞO?�;pÄ› ÐZ%»[9óQÑF�*é ‡œ8é㟣_î.Jr,�®qñó�sù˜¿üM…m™ÔˆèJŒd÷?x!�ߺ‘¾ù—_C~ª …1‚*1: £ õ´BÈïêîÉŒ(’þÌWQ[pžßCŽ_pL�Þº…¢øjzúƒÏ�}ps…ϲZó Ë‘‘áú 6sý–°÷w�^z‰Bù×ýÝùÊ�ú)k¬1¢ÝÞ¢öÕTnÏAE.ƒ6uhBÓ0ëÔŽ~çü®b.~«°«ÀHcÜS�­n·2²Ê…NP• ß $Љæ>hHQÑòÞ¸Ÿ·)c¼ÚNÕˆžŽVè †´íÌø¥KL£œë÷~ Ž+ÍÐ(u4OׯÂÒÐØí1ÆÇ'b]ÒZåç‚ì'Y†ŒrÀyeÁ¬�éK£l+†±v ³Þb~Ì-Êž;Wþ‹HqÖé^¹MÎÛ,^�YÒiK½êèŸ�%òšªÁÞqtÞ9ç,ã�^¾ PqË‚9 ¾bDÎÈ=Ï!. v/3C“{eà†ÖâÞwQrZãå¯üÖo¥|ôéT†â=å0^½ðõ¯¦é›7‘Åฺ5î½JÄõA±g|c¡�VJ÷õwÕ§þn –8|¥¡qnÌÍRéÎC¾QB!ž]æ_ʘo³å•ÀŠe²QÚ  ¡úÀï.Ùxå@«qh˜Ydæt �”åmÖ7á3 K9J|�97‘¡ÑX^æŸmîQ?‘Gh@ª©²Ú=ËwãÇèUU(ݾ°A»‘ Cy‚� -±«R/ÌkD;„O­cX^Åp%ÝhëéO¬³¥“lô?�žÿZezåÅg9#OVƒ©†ÙÌ™|Øgœ,ËŒ9rìaÁ¸ÝÀž˜¡Ù+Üã9EK`B¸”Õ`8¨„ :¯ý.²8ÁM¥[L ±æbfÞ*ö:Ü�á±± žE†€¿†±”1”+„aàIÃa”%>ʰ†—°Nå`3v„ÏRÇŠ•š à>Ä`è„C*à ¹� Ìeì7Æ™.ªM\ÁØ.ŽLL°ŽÕu—1ªùG¼ñl;ûº0˜  —Üop�²Ìe4½Ì¸‘Æ01>Ïœ(î…c*Ó áŒÙ##E<-ãÌ…U÷oœå^í-è»Ä{á!ŒvèìîC†Žî{ „ibÏuˆ-â¸òa7è´ `ö¨ü»)ÒIᥛÀSï{²Ë�+±ã·Ò¿ü§˜®\º‚á†Ö4d|D¶>çýN¡5ÒÀœ[V aËÑŸ÷Óoÿþï¦ã'φ³�Ã�îd‘í£ÑZX®¼&Ïq3ßÚ+;Oæ]¹wýìvàèô噵 Ç¡ÏS~·ŽÜ-¼KƒÅ÷0 ƒ/ò ƒ7vп¥gÊÜV›Qÿ¶|¬ãÉ¢b ˆa™qåßìY¿ëÝivâvZ_˜³lH ƒFµóT«bg, T·ÂV‰”ž c1»Mþ!Í´Z‘4L{@m Ùnðämô-3�¶È^sŽ–´=œ"3œ<><Àú þZ�À;u J“û±ãµ¶µ‡cX�¬‰¬Ù™« Øü¶ aw�Aìg/F÷(ÇÌuįâœX¤…–åk•Ç4„붪Ê*þ.œk8>§”Û¬ £Î¸�îë C�õko<1Ìyì¤ñÉyŽ9ƒýØÅØÛÚÖ…“ŒÖk7qܶ’@T—V·®A;¥»–YßA–jJ#dôVâèËûú»¢íÐÆä"ûƒŠ}ÊSšôØÐ1ÖB 2vÈ‘‘ahz <Öl/ÏBûïÉÓ§¡ÁØ;qçž¹³ØuªÉ\Ô–höäàð0ÖT$„—ž¦Œð95‡á]y}søê RKº«¬»™y foC+MŠ[Ú;ÒÐñ!`™@>xÄŽäeíEô}Õöª=¨�µ?u2汈½ÊŸËq”-!+Ô‘Í*ŒÀ‰áù]ÁS–‘ú(ukVÛ,çVż!öà•{I°ûÒ6°ïŸ5âL­Ì“Ëœ4¼·ã<êìí&ÁCgr sohZH Šeg¥éMM5©…òÇÚÇÕA;{zâÞ…Z¨ƒ¾o^žbµ«JÕó>é@{w8MÄKN[�¥YX{A]àBKjã³ÃrÇ ÀI{U ©’# Ñ.×ÈœZ)õݳCð£z>gWFÀ©ú‚|§9ÞêE: ›ÚÉÔf¿„9ËZ[eGy¡ž6)UÊRœy;6óš&3]Íz5s/ >–Ö,¢ŒÓÔÚ–pTêì¿÷°Ó+ë¸6°@ÜVŸ)à«æ½V=X&ðEÙ]YÝ 9ƒ�í7ÝNÀ_-xÇ´Áÿ6ÐÌ^¶�JLÕàÿ4P�-ZH¨* èT®ª‡ïWàÀ�64ÀMëdÊ$ááh§Äp Áöòl©G5÷œëà ¬aÞmU¿jœªud9êìSŸËW™5Ìçȧ5œù6gQ*PR ÁZ¨rx@æ!sÂPxR¯”±q2e¥„³lÎfœXÊyê¬ Ôkÿá�•ÕȘdVë:Ä1ä:!§©‚ Ööö6 íìÙƒ�=E/æ ðœø|¯¬õóp)#KŸÍ¸/4XÀž©´¦\¡îWD'^Ë�[é­äI™ÌžÞcWÑúO 4!+‚¸Ám šŠ$`Çï`�Ï!7‚o,m¥ñêDdFì"ûEbø¤s±³º‹,º¾D�/Î8hp²<ð²œxØÖø^ýx•ªÈò㬬ý Žë\C PW�­oVŽt>ùj–³­O2¾¬WÑ-`o€uS+rp�Ü� Ïz•ÓÕ“½)Ý¿8sÙbKþ¥Ã4ãñ´:d} Oü¾Ë>:ö>º—6¿ðUp{µÈeåÏÇ{ x�÷ò{¯1Ø:6ö&ø÷@M´*{ñ›ÏBÚ¨8F`ÎÿŽVÊ�ÃÓWf¯bÏ ]‚Öæ�CÔ‹-Ã^^k½ ù�)Øþx�ý«Ç6ØÐˆÞϦ&¬�¾ï|êíï ›}&½ô�ËàBšKÐóÊ×Ô§3§qüð,“•~)½òÚeZØ�”וÎ�?“>ôÔ“iÁ?Û –™Õ½4½‚Ÿ^³Iùö]ð¯ :üð}­©ÃŒu¶”­¿V$à Çz%øÝÕIŹ“¤Çßÿ�T€&ÌÏ/§Ë—n¦ñgÿ74Œ’òçÏQéâLzÏ#Ç‘ƒ¨Dµ”Ƨ²ê«k;éÙo½Ž£¼Ù¨/ý£ôÉô­g_Oÿøûg>u¥Ó'�GRo‘JqÏ=÷NÜ‘HB°j·í¥#éYì=�K�-µéó_z5�Ö7áñûÍ.´À÷Òí_ÄÿX„Ÿôуœ2p|(ÚLÛC¾ QÏ=!ŒÂo…3ñ W¶Ak6.Ð;r>JÆÕ¥tØsì_ü1ðL‰Ë2ÿ*ˆK+•êFÃHž˜97¿¤Á¶˜úº[ˆ”=ží‡Ìa,ë@Ñ0 µ eôú�ÑtûÖTj�´£\µTÒ@FÍ:e?¡KQ pì=Jj†Wq ªJ{+÷OÓ·%¢S�a^ÿ„²„ Jö»2 ú[Ô�±œ#œÔé—p!‡ãò;�ÄÒvaá;|uü'ü×ìH{§93Z«©¨È{ü^¯Ñû Š™Sˆ„C’‰7 \Èû4P[†èɆŒˆôEq”;gÕKàaðK™ZE¥BEBYÃÃ>8[‹â¨@c—1öy¹å¤åÙYÙ0�IF?ÛïÆ £Qá¯Ë m˜‡ÊµÊ§Ù•ðV•„”%×1 î"@Í�b?t�PF“ëhË ¾{ç³sñlÄ㈘�súîû¾÷wçu¸[�á¡‘L“ÞtùêK,ņÏÑȜ XÅÑÈÆð~è†WÙÏ÷þ~[î€8¬â}íæí(#ØLFewwo¿*ò/ÿˆ÷?èd¹~ð=?èyBÃ^>d¿O�±y” ³v 7ÊŽÞý(À7ÒüÔ$‚y]d·¬«¡Aƒt;Ù©—/]BÑ(…͘_ýõß ŒÙ9ð㸣¢*ÿ·ÿý³U1þó¯<ƒìÝÃû÷ÉDèMÓSSá4�á_ƒ”‡•ý×Ì&Ë£ 1ñQc %™Ub4¶c€Öx¹SƒCšß™hBÃÆÜÂx$‡B{4–9·0ä°ç<›Èðbk5ôW#;ª)O�ù£¢«Î0Ãû“‹ŸAØ»³§F¢<|†B ì�؈!/ëñ\Ž2—eâêÔP%d!¬Bxö*vöTA ÍpêÀ¨g+ £èU ähüÀF# © d&[Æ@�z¾_¥|[åŒuåÊ-I¨‘Œ3Ç�ç~ # =:……%•&³|¥ÉÆ}䑇BŽ·ÊÈ,k•´iì08×=3 ß ¬ËkCO�zv=Ò÷J‚ymð€ÈØB_ð̲à*©Ú�±Ìjpíð_ÿýôÀ£ãn‹Èö©›×ÓØÕKô;' �ã5[ÿ�uY¶oi™€b2^œ|=ä~°·2ë¡O.FL{5BC7Èä94p�±×ŠGBׯݘ ûý 4>ƒâ¿’•%ìéjÃŒF0÷av~8"ú£ ¿»®- |ßL¶œtÞà‚E2÷á1–bo!cëÔ 28×ut4u!ǰ"‘°UGFvK#¼¬ c2?·÷ô¥ÁãôŒ$ zy�²u“+ilžV%Ș%ôB÷FE8Ƙ…Fž‰«×RËF Ø·0 u£ž”Œ,Îk~z!]¾þrÐÜgá5ZAC"[[‡…g ŒéàèÀà2=Cÿ9öƒiÈÒù^1wqÊòã�8 ÚÉL630Ix×Q@„F]qEƒ—p%®ú^þW…gèÀHx¾4Ï9b¼ê&ˆ%H›Áã1f;jT®F�Ô°a–�s±nîƒë”.æ_1(Œ‹~Æ/>c&µ|R£´™vÕUd.B³Z[0ªMaªa^bÀWuÞ™ Ìà ‡zŒó|8è»v)Ç©¬.®J‹åÙU|¾ìil”–a™Œªy¬(Ÿ˜Å)®‰G•%¼ß nß¿Gö‡²SŒÁ¾yE:¾¿5 ç `<Ñ> þj„uŸ•™²»ÅC³'ø^C€È7¿ñõô‹¿ô‰ ™I¬ ³¸°�¾ò¥/2Oªä´LлrU8-˜OF0Žc0jFÖ©ÅN±Ç ÿÍßL{" 35Œ¿)ll"]ÒÁ<°}s QoýuÄ'å«GûóÖÏê�?ƒÐ]%ò\Êå�ÊÓÀ¦2ºe± sC#Y÷5”¾eÏì=61�ò}­Ptíêõ Õœ<8sÌþ3™a‰€Ì½ëüK0“Õn¢’ Ñ�ÓÓ=³5P‘3¾31As:�¥Ý˜np’:o«Žì†óôæ­Ûa 6€R»g‘’ð½}ý1o³îÈÆºu{4‚°Vyߥ‹T¶a aÆV~ʘ]LNL±_è¶8¢o\»Î<Φeެq÷Ö²¨ T"X_eŸ�s§ÉžóÙÖV[nÀaû Ìfæõ22ðêrg„l@BQKkGðÇ"í·7¯^f¿¨¦Í¿ø UŠ{𓎘—zôÎ’;ôð•¿n­­¦Ë¯_”“­œHköKc·²Z‘óÝÿgiûƒ|ê=Õ´ �‡Öò”U^.¾v1ìWÂãvêåg›šÚ�ñ¹‡ñ¦Æn3Ú²ÁïFoÜ@6ëšLê»gGfWš¥š€|W™ert4ædYƒÎ•…¶·)oÎ>mò[ X�eqv!ö ±¹ ]CF_c¬›—/#Ÿe6�+OnRB¶¥ÍÊF”¥å¼ÉÒ�£òÑ.Œræ8=>A&§2?ròd8bqPo@±:7É¢lT¥µŠeβ�šá¿òÍÀc,“w&)}Nð óœâçÝå¸6x:˜Æ6@œè+ëV0À¡ÀG–WF #‚Ñ� P1³¾ƒ@í%µ�äÁo{¨Llp®r;UdqzA†"iMû¡úĸ85µ}B·áËæP‹ŒŸÊgØ“RZ&;Ú –Bðåƒ4ŽCܪÏ'ðMÐsÞ`ÐùI«¾ ýÀìpi0Ží&uøWÃ[Ô ´¸ê¹kMMÌÑO½!]xäÞ�¾ùí+TVYJ5È •Þ5àË;1Ø�heý»Ïü¿éù¿øŸ §óÝŸ>ú‘“øáÇÒŽÿO}êÏÒ7Ÿ{{ÎÉ8"[K[}×¶kÒä°Éðâå•…tñ2<:�½…hö*dõ³®Þ~*÷äÒíñäìÄàÉãNFe’ã$1‹ËøW„ÿô“…™ùÔD†ÔqéS ]T;,¸P ÐÛb p»�ñ¡Ï/á—dN–k‡²¯�Ö±;`k渑;8Gø4P“*ÅI>,P/2iGQ>€cô+°…éÃD‘= ÊÆ•i ¢‘[QU§½ïwŽÚá)G¡ÝRµ¸æëÊò¬Š‡Ÿ[uÇ }¾Ø•tê;Ÿ"–ûØ�*µíhˆ %œõ|ÏyÄ~Œ¿Ìðp�rzîÙ?O¯¾øb:qâYS§VŒºfNÍãô?ýл¹Ç˜�7<ÎãÍßûÈ‘ï^Ü»Þúð=9 Gá"@*Oè"呦x$” ™¼Îî2¢� ž\wN,igVÀ(BgDʱV g>g”¿Â©Â¾ßÂû4Üè°ܦ ÇHêùÌRNQ¥¶æmI_yYkö‘AUTKDÉ–q¯J 8®ñÀq l¡ ²·V)a‚ð=2ÿøÙ9Õ!øÊO¯\¾Ù �üþýé:¦$ßÇ>!\ƒb¥sþ‡¹Ô=ÓhZvíãgÉ3H ξ6d¹,;ìäÈpé;IðöB:;3ž®\›MGyž}\åüö�-ñ‰þV‰LPdý³7RK?å>QÄ 8F@ç'~ÿïRÎ�R¾/?ŸaC§ ½�ýWw•ãjôÌÈŠ÷×c°!‹�À±)‚Ƽ_¾“Ç€ÑÓ;Hvíd–q^½*K”&¿Ë]·ç©ãBVÕcÝH�#yx­ïí­íŽªö)_#[rÇÄ>r¯ý3¥9òøräæÐ¹…#Æ(àLê'îš@åÞx7ß¹…·®á¥ÄÝ]Î*Wf©SK““±.å\Œäï“�“M=Ù×f×[ŽX˜wÒÒûÃÐÞCe�°Žgé@lű×é½Ú ¶�AÏ߬š#‡¶p£A¢�²±÷¿ûB8¡módG*£07õkIRµÀ [pWýør<ïÒ'ƒúz°OXáb†²}⬟ûŒç£|#–pÌLOÝbZÀ%Nƒ¿ýË¿–Þÿ·žã’ ò�L¿ Úúà 8¥Q‡A �d·„AÅöº¡ÁXBù£¿ò‰ôÄ>‚c½k©¼°±!ÍÒjSüÌæ2 wåçárR³øççeR?ó3�ƒ4Acï‘�ǪNq ³|'/²š?k$—Gøy“ð¹<]û‘¿Cx2<‹ƒõ1pˆ?½Ç —'ÓÆÒBà øiVš†øE²òÄM8?ÁNyŒ�¶B*ƒVR¾=_> ß±×Hu9ᦱ€ã¬‰LJd™b»¬d4K¿1d3Ó�oä»��à%NN˜œ”¡Yîr '«Á‚•8ÉëÀïZú‘nA?\¶ø%?‡Lgò<ZŽ·Îþ àø6�)¶§°|l瘆Véf§~#ýR•k60Þê$бPÂa¸k‹þË�£‚±üÓˆã/‚ñ�wä= T“¶¢7TÀ«Š8¥5•Øj(õ™k°=r™ü…^¬X9�g á³gµ¬CªXQŒ¶Bøâ¨¤GàrOÈ,%«ô‘ÑJBRú��tû8ÿí#ªóFš¦�¤ nø›��8»J‚„ëàA{Q6Zç!:#Ï4“%— :ËþAÿ«òP¼œªxòPK{ B'j#¨«º†bëŒÏx0€§3÷”àò+ãlas-íÉx/ A¹üN�ZdP³£m§9YFÐNqå™=2Í8@ (" �÷ë(Û¡-ßš ̳§ek=z8ç´„c°‡¢2íìiÜôVo¶jMGhk4!C¹Í6sdq 7òƒ 쬭Ø�:ÛC5éÃÀÄUª‹T¥©a/@Öܪ8 ‚Ñâ2¥ê;š‘ï€åµ,Q ¨Ó­§[Á\38­•ŧeœKf®,¯‡®¼Èsv:\­Ü¤<¾º ¼—Q5^n€d8ÑÝÞ™™Ï[È6\ÀR½J�k€AÇ_¹¦ºùŽÀíY±å�k¨D‡ÓJ[»Ž‘f*uàÞü?ø|y•À–=$¹ˆ<<¡ªÇ8>'œ-¬²×ÈáÒù¾�í-&¶è f\²êVVÉ‚G®ó|eFösíÄabîê"ó­å\‘óç–iYŠ\¢]c{@-²[3«f'†ƒÂÇS×ÁÏ™“û™; H’ý0ÃÚþ³äÈí´ºAè2ˆ:t hµJCy…årG³Z­²ÇÜÁm+ÏÑ p³‹À¥ö+!¬ R?-µ² k°güʪ²9ëç�ŽM†uÀW ¯8æîNEZÇ1o5{K׋ ÌWƒ^±½òGð¤¼NI¾SæÚDÕ¨ «ƒý®Ë|ÁAÊþ «¶l8À–ã¼3GúkÚÜR!P™P{Œ Úƒªp&d`аéHÚçyȇ¬W:YÆÚÞÉ,ý2ž‘Ö{n?—üË@Êñ›W"™Ñó�ò꜓º`8ºîún ÖÓ±eb¢ç£Yz) –ðkòy2YÑ1�•±-+7 ƒVNT?ö\ ( ]‚³ŒÄ‘З2™æzÞÑÙ˹X!æœ7©î¢ó\x0ðÁgu å¬ Ä}ò5ap:¬?Êwï”�e DÙ'|¦]Õùla33XB¹4‚6(U­3×v‡:IµåY™õ Öj­)°±BŒA6Îv@Ú…0ÙºA0p€{¡¿É3š`d<ä+H_ ×Ö¹ ï´=dà ¨cµiÀ:ã®d®£õ›´Ã*V£“7R©Ì„·2ôá§33SØÇØï�ÔZF îôeÁÞã:žm选ÅÀó›Ã–�z‰n@‹Gäé¿:�—mšfhIõ¾ÇI?ÕT¦Ókôö®­kNƒ´•YX%!€ ÷Ÿía-KéÓŸýJºô«ô¯>›þÁ?ødªkiOËôàßÎS†³ÚYMï¡=´wny#u5«8òôÒ*ge žAç­ÈËЗÕM| ¬ÁJÏŒX�ìŽk5møf©èW<$¦’V4§¶Ž¤‘ùtîáw 7•¾øù/§/~îËéã¿ü±ôà¹3éøPGzö¥QÆn&£:¥ç^¤uI€ï}σéþÃßKŸûÂ_¤ò¿ÿ_éÂ…û 8´µËÕ¼&ð—ÔGe éçèØhØA:›k ú'y½�`óÞÞžÐeë�^º:—úZóéƒOž'Ø`!Ý› HëúÒtØjsà“ω?sÓKø[Ú ÷8Ë‘+¾ñêåÔI"BtÇ ¿Ú/ª 6Òc�2À. 0pm"’Ë‘§€iu^+2„㾴ÙуŽj«ƒØ±CƒäÙÊj ê¶Ú] �a§.>–T@IDAT*d–Ž‹d1à:lÜ+l:GƒË9‡Ã}ø(máøÜÈøàkãæ ÷~‚Ì¡Œ”%OŽ)÷Yú]|4Ð,O(—G®X�ˆ9Ú^d>¾�~W�,£@‹ Ý‚öcÃnĹ¯­BÞop·A*+:ÛÙ#�¬«Ÿ—…ò~Í­~"“BOøo“óU†‹æå½àvKW˜…Fy$¢Q÷Ùl#×é“Ö `KPì«Fpy—åç®>èü]cA|y÷/¿—¸Ú{ÉlVù¥uÊ<ï]Cè6RBa/ˆ DA^§wD" ™sD³º)¤l¸ ÉJ,ƒ…�=ÊGò«q#}%¸:“}^¹Jwô™ã 4Rx f•q*�}] ·KÓp¶¶½ÊF²~ -w%|ˆ�§sAb§ˆíFl`¯ñ_eߌ …b lµF ~[±9œ�FYµR¾æôƒ�¤j”t™“F€ïì)þ—û½N78J._¹HÙüñt‰2÷‹³ãVMÑÛêɧÿ29ØoäBÙÇŸæu´ÈËß�>ûi¾ç§=VÏ?íQßœñÜÏ8;†÷ÐåéJ$½N�.½ôÊ·É Ÿ!ò«üP‘Ð9Ad�÷ |tS𥂬1ub2µ´†€H4TSgÛƒç‚x*.4à<ÿÿÙ{ï OÏû°ïÙÞ{ow»{W€€�`ÕhJfÄXŽ’Èã±�?2JñL2™8™Ìd&™(“H‘F¶5r†±l5Z… �D! àp ¸º·½÷Þ7ŸÏ÷ÝyAòÌ@4^ò°»¿ßû>ïS¾½.BdìÑT€qi‘(7£rë‰TGÐÞ@Á²òB}-ÆZØV²H¬1‰23AY�¼]Ë8–¡Ó÷³Az  íúª`� âñeBV§Óõë¯Â„PÜët]ÙO‚Ý©7÷úagúæÎî x;ð†nh²e>§§'q~ÀK¤[å ¯*‹–CÔx£B]ƒ`'ó­fä ?©=TÙ•¡ÎÁç,Q“E‹î3Ÿ lb”0d>ö rž-(gò:• ÂÓã-Ó.­WÈ›J£”µ3*Ý~I! ?Šê @sÙ%y^>©²©ÃK`—¦�º‡Bn„¯Qè>¯3\¥E¥X¾g}2�Y§‘8d6†tn,Ћ³³«#� Ðϰ;ÎUƒ–²–r¢?oÄ¥l$(ëX6s*O§Œ[?7ªý‘w¾›ŠMÃé«_øåm!Ôø³žièíí!û¢1”™Œ$/½ð™b]© C·ëÑA£±@#ó.%½Öæ[ÉZ>tèp]¹ú*eÁŽQ¹åFúì_ÿ;Æ¿'ƵÅ�›4†7’½éc[Tš”£-Ën™Ajî˜ÆæhÓ , þlñì;þ4V\‡V¨¯ïã�½ ¢¤2�ˆÊ߀ƒâš2¶¥œ5NÅ#¬W¥Ìßurz�ÿ¤;öÞ¡Kêy¤_v<35"•”eÙÅÂ1ÞmQ åËŒéÞî Ï‹Ûf@‰®ö8èéë]OÖS=ta›j¯"Ë\Œ3´RÂÁžЩöÐÛ­°ay?�'aÐÄ©d`¬úBœ#ãj\atÞ�‰„u8WOXø>JLè`ÞÓ5!÷ïå¹§ÐèÓ6ÁÞkϬda°¡ãšy/|Š+Ê1¢1„LàÌæ tröˆñÃØÂžª»Û_ò=lÏi‘«Þ k[PÕ¦·¸˜ñp±hjj:hB•ã°–|œÚµ–ÉžÕ*}ÐhËpA7 Bàk€·LE••Ux²{©¼Ã:7àyÊXòï h ¦O²‹!Œ\f„VãX.( +žÉ,`/#c\ÅèJ°ÏîV "_¾W. ãªïa]¶åP®ÉÃ@_nÛœ[8Út;Ǻ`/Ø4]è^ó5xÎ6yTÛä|8ÜTMÖ~^¡öNøû\Î9Tãᦠ¸–aÄÚ»èŒ,ŒUƒíÅ>°U�:fp÷#TPõˆLmõC�ÙÚ/kªÉ^T?ôæ´ÊÜÖ6÷)ãH+«"Ü3Ø }Р?eÌ|²Í<–þ*óTV €T¥ÞÉ, pè {­£»�×ù‰ãäçöT�íX=Ѓ&ñ"™•bUvdšÁƒ¡½:O=£Z‚ò�!Õ?(]^Ê>ZÁ³(‡¸Ç…e[8¢áoœ«ãäçó9m@•+ªÈʶz!BQêmÂÁ^H§íilV¸mKÇû™•¡´[ÕSi¡­•2®ð3Ü¥ÿåÃjÖÑÖH)ŸBæ(ŽŠ�ôÅRŠ´i+×qV¥ðµŽêzà*Ó­óÀ�Ýmû[¥FªDë#J…w†�[¹Üa|·ÆD§ZªEˆGÚÄ[˜µç¤ŽPœê/#˜ÀT² +8;özYÜÔY§#DÚ’W¨­‚5³gmûA90(Hó(En+F3 †´��£…EÊr¼1p@§±=Á�ã&c e:,˜°r‡™ œ »¥í• „‰Fö2d|t;u ïPM®”*ºGÜC–2†ï�6<î³Î}LP°v�•â¬8]„C$tXŸ2”4P笼 œ–."z±™¬˜‘v„žÁoùm¸—¶‚T�Ö’gâÛèØþŽ%‚>¨ŠŽiËp-ö9×Ùt;†‘{Y»tÖ¾¾:E�ƒt\�¶JeVϹ@ ó²*H)�=Ê3ÎGü.–nrfêUÊý®Û½´Íeïñ»hcp Þ÷³/òž|S/Ï[“~÷÷߀æQþŸ=ôSy›ÎZ2Ç�3vßÅw?ãù» ‡+ÏPF‹öÀ£ÏîÒ{Úõep‘Ñql—RÛ€buŸsL+$Y<ü6ܧÜÚÞ~�=GA_ 2˜Ô Yœ›g>%æ!,èX¤êÄÊì ï· 0Gc0AùqžÚë «ÊØüR62h gª�ÑLV¤?εš¦¯JØpŸÌX žÍ÷˜Û!�²Òˆ86�&¨‹ñ6ÙˉEø/ºÎr€cuv´D»�U‚d&°Õ«_쯾«]û  œ¢zÃ:èGŸ¸‡{uúúó±Ù.ÒNã |F5¥NT^•—¾ðå/¥Ë/�O?úHzüýÃT îu¶5§k#«ééþ ±àÂÔ7½šN¶—E¥ŽÕMæüOÝßòó!A&е é#®_îÜÍÉ4<¿•š âZ§´eb+n6 ßÛ �@÷iM}T…¹6 }&hŽdo§‡�ŸJÿìÑ{ÒK/]HO>ùÕôÂsßJO|àÝé½�L}ƒKé… £¹×Ó{{.ýéŸ9=þØÝéã¿ü~œì�éÿþ�O§âzÎþÔ‚N¥SÖ€dùq}=åò¡[›$&›tXƒ ¶L[µ7~²×Ú7zz:8ch´¼ÁÙWo GPgSEðr²H>TÀ'½r¥y€þïoAhÒ{œ®:ü3•ð4qª?æxV+’ÎT(¬[®ËSÈ_©H£Ô·,‡n;Š ü6«ð¦£=8­Ü œ(~>Y:Ÿµ’MÁ³à{¿ ¾iƒÖ.®sÜ„/my?‰V¦°‚Ag+M‘ÿBåÙ�9”ÛÀ /F#P1ª„èWµr Áâó·ZÇIûÇY%ù œ· x¯¶´D%ðNìpVI0˜_�Aê›/”r+«Èdض•k¶·y>$®Eiz`yqqZbõEúº[‰˜·BDØ*€õwù ¤F=×ìB Ô Òv2%#ÚŠ)9ÐÖNŸ"ʯñD‹*œ¹Kf¤à,Q‘p„騬ÒÌ]ñ;ÿQ ¦‰Fà FŸs…a_Á§æãð “Ñgn–Š·“-#BN`”X# §|™9¤Ê>K)"�ëÑ?ʹCd¶Øä0ÄñD®ü`"çág0S&Äo�0'?��âc�h޽ˆh ,–îpÍ! -ŸD&Á05êç)ðn•ˆjL�KF»ðÓ¨[{2¹Æ†ˆâç>:ˆœj´dÏ+¬º·î…ëþQ.™y(aüT1ºyóZÚ^YD`lb/ rÓÓÑs®fc¯<3|¯WîÙ彯÷Lìó�Ðqhôuî³×»ÿíÏnokÛ ÃLƒ6%ØÈ–)¡$ÒüOcÜ�/*á92^å>ßrío»ópŸ@tÆe/ÁåÛ¹Üu¦*²Nœ:™ûà¯Ó#úkXwš QðSJÿª\)´�Ÿ{{†û¹¿nçMoßó–Ùà]`’‡EéqŒ÷œ¾³CDï`( c;̆ôŸ4á§Më…¤J¦…cMa*:X,U©¡>ÚP×�ÞûÁ�¤�þÁ4>Ü]ªŒÌ��Aú2#Ô¯3ÏÖö¬ »òë9ª™=ÿÀCã ê‰êL2ô’Z"€Sâ‹Ù\ʲK8ëj냿ZÂ˹È{ULŒ V„Õî|Å,ígº©þ‹'‘�í;�MƒŸ";Ã2ùŽRÔ(£k(6Êyñ«±ƒsØ[�&��Œ¯¢#Ûc’®„£Ô±Ý$þåäeÿ�&ZéÂ�§>#oEYA&ýó¼¥1f«ˆkxWQ '8{탖vVnȲ£œ'qÊJ—r|A_]%§Ø©«GŒSÖµïæ@ÌAuli´Wƒ«ª‘¿uÖé8-c]9  ¥«·Ó{>ô~²›é7 Ÿè>zƒ(h΋H7.^JSÃ#dhA½g&®Ùg-S/¿¸ëpEºïžÃi‚RegŸïO/ž½‚StÝ�Ö!ì±�‚§±§áôž‘í—|N£„Ž ?É 2Ù’¯€�aì#Š´F2 A, §J|ÿ±W[Ð|øˆáNf`Ekˆ>ñœ¹UPâlÜ ¥“aPSK HöA}åÒËWÓ7àùm¦¼ï=÷¥{Ov¥§;qb_K/�Hׯá}àÉp¦sW¼Ðˆ»25•òÙç‘ëWR FíÖî£Qʼnz‚¾&G‡ éóÇz•‹/Q®ÖÀ lMÀ½ç¬XØfœ¯}²_¹ø kc_ö÷È’¹fš¸lßPñ¼£[æP®X÷æ’0òqßÍ4�ÑJ'¿´Mçl88ا]”J«1hüoåñË< /qÌ€¼ËW®ùGì³°ççž•ú®ðèï¶@P&ðâŠgî½®#ªÏÀëÅÁÀ+Ærÿç1 E¥¶À)²ópÄy ²p®ßÆÆçüŒÿˆûLÚÄz�wåug.ý‰’¦ün&È60bÖ¹P&}q^Øwˆ¤#BÇ8;ϽÆùŸ´0ðƒë:ô*ªpÐ&^�ÙÐo'ÇÒßýµ_O½‡¥C‡sÀ;Æ}ƒ÷¥Yê)“1΀ÇOñsq–‘ G4rïµk×SC¼¶ŽJt�zÉC*oh§äã'қʨê!}ÒœÂļ]¼¼AZæ?‰uóãíëíøžÆä+âFࣿó/w ë¹Ï…YË4ÁR•QJü‘öE2¼è ©«k¤jI¥*g%Q¾ÝÛl$»°q³¡Sð� B«ó‰ÆÎ'ø½Çn™Áò‡Þs|\z´KF¬|Ö à(·ËX–ãÏ¥ƒ M¤cwM]��dcäÅq`¿‘m˜ådî2ímVÐI8r5~Æ|Xoeã‹5lBrYé¢ônï"ó G•û–Y†Ù\cÙ� òcßÃ2b¾Úó ,ÍÝâ;ƒ“•/l'b’@9†dûRSâû"IaDV÷2Ï Dx£åêužq.f™r8hSVÎØ¬EzšA–8‹Ô�x·2–gªc[ŠŽ$Ïs:¸Fö³ý`Í”•ŽUU[5¦¿�¤híÛ\„®h·NEéªY¯ÒR×±GõË%l Â‰”gÇ2¨Õ:~=CÎÙ¯¤�:ÒÍf´Ì¬{W�#ÝsvÞžß<‹:ÄÕ­¬¬&ÏsŸ¦(IÏŸ™§¢üV¾cõíD:¦êÉÞ6ë~ž*++è²|/SØÔ6$-/Ç©%W™ç&†ú¥-ì¥{ÁƇìf ò¨`ƒ#\9Ò`Lá�X8xÇr̳˜5é„ Þ‡|dg^DV¿ë#h'‚ÕmÄaÒ —wÊK –ÔyçžGiýìJ‘MŽ §ª£„ñúÉbÊ™àÍö1áFyFü±T¸r¡ëRÇw~–QgÈ´Å}ò^‡=fë˜+ À=ÚÃÀ7 ”;äË&™Èÿµ!­/¶Dð];¬ß»t¬¢ ¬^b–êòc曞¹ŒïBve¯ttè€6a›ùzŽrh[¶„M™—%ÂGÍÄÅQÎûËÞ±¼…�‚ý0AúckV×ju(ñC9„å#un‰=“6d´N:�-B}�Ï&‚ƒwÁ÷·z…»¿;rDIF[sr¦ôJ{‰{¨  ,.ž('YÚÙàSqËÕé¹,à\�€"ÖìÖEEÎGYH§�NNû²koq=î�~Äu*w(×;v¬KÑ XΪfA+y¿rmè)ž¿óxµCyjé<ÈylÁîÝK¸z³¯lÙDû.ÎÛäDéuÎç#èxêb¶,ÚØC3Í aYkôOZ®³*ìµÀ ‡:Û´YaÄóÜ&Õ×s�ÞšUnÖ¾åÿ¥¡âƒ -Nûwò|œ4D˜f¸ á{¯ø|Ø™) B® 8 Gâ2>¨�5|P¬a×—r†œ‹còåZŸ×VŠ­1¾çVÞ&¬ŽdH×d0‡ë>íçn ‹~-hv¶)m ü[¡Á{W‚Æ)e¸ŒjKgËBW–Ùrh�òì&‚Fà²{O*�øÅr¯6÷¥ÙI2Å¡½ÛKØ ¨žD•±ü]ö—5�KV�]$p¾|˜ ¢Í¢Ú4¿1šªZzR+m’k˜¯úŽ6Šûïº;ÍR…É#Ü` :ÃÛ FÐ΀­_])YäVµP6W�,f>A£8‡ ôË|ðà—>öÏä¥Ï}élš_ÜHMØê'çöRw{ ÙêÒÀ@_úô§?—z;¤_ùÔ'iÓš†éi>7°—ŽÑ†ãxokzOAuzi`ÞLpí#ÇVRSÉJ$Ë}ƒ,í´M¢ôq Gf-ía;êJSߊ¶r—)¾Cô�Ft/øFvÂë�/Ñî¶rÏ-Φ÷>p<-Ÿ×g²~ØRØ|ö¬¿ÅAúœç¨STß™>ö«¿’&ÆÒgþì3øÏªÓ‡>üÞôáwNg Fß�¿îÕ¦—ÏõÁGWÓ}§ïL¿õ_ÿfú½ßût´ 0 Є£Q*Ÿ{ôpo錠»Ï /Ìqa€léEJÂ}ip‚v<ÀNmMÁx,Ø«&ˆç8=Ö«±óÊ»Vp´/Õð*)Î]î£=Æ ÕP‚×LâH>ÐA°åSàV|Ù`ù°í]§�(‚µðÛ"èÀû ôÆ-—O”H*CîRN±U¶hÒÏ2l!ÆÁCå±öQ¯Ä�mq<ð=Òì�3Ñ#›œÉ„]™¤ú(Q®‚®€oµ>BY¸º´6i«!¬â?R&+(R6àŒ Ò‚.긗fÔðd;�fä”°mA„VðXAe/�v#ΖyI÷e_Ò “Дu·Ysæ3R†�ÞBßÙŸ"ÖXUE›#eðH›�ÏJÇB–Q–�‹³ÇwleàB³¼U¬ÃPÆÂ `Þ –@ZBψL�'%í2héŽe#t~I8ËX@5‰Ÿ‚�DÅh4K}DÔ=a„ÆÚÎL)³øVWÉœ€ ¥DØ((0« d¥Ãá 1[Þµðù€}�©«ˆ3ÿñ>…k EnŒ |¦ dÏJXáÀƒPÌ f’U !ÆÑ[¸c�!#tnÓ_B¨aIìºì]g/ ™¯sßÅ ä¦  D²šé¾@„ ³G°$z”2óU”ÊäE"û¼Ðí#PÛÄÞ!dy*?âå¼<'÷ÜÞHׯ½Jy ²š ‚Ž‚×�½�˜;£ñuß÷1çày»3D&©¸5àįâlèLqû1ú}ßüÓû‚£ üé½áöFVíVáQÙ1+\AÆ@ûú Óžék/áÒ}÷Þ÷¿‰è³»x˜^�CÁ°¡©„q¶ù7J¦eˆø*ÿ³¥¥-u¶XÆÝÞÉ(F›Sà§8K™ˆè.Q­–ˆ³ä�1JkDÔÕ5µ€¬àB5-! Ò `• ¯ð/• 3^S#ýB‰3[]árnaüeYfÀ J«‚FU­¥ÃŸzïHÇï¼+²�Ì.3’ª¯@w;×[åúŽtòäÝ陯}�²¾u�'âÛà€½ÆÖ ç5â�BÐFŸ/E�°w¨Æ kEü\C™0{Þö*‘Azê\q. Òù©%œÌvë€÷­Y&‹ÏÔC‚÷¼Þe@žó7s+'Ä}Üï>›QÖLAó;‡Ò@eµ‹V"²ïè±ô…Ïüa:v_ :{=PÉÐɤcC\ßgÙ—?½ÿæVðÝoxýO¿ûžÿ0þº��Ùø5‹¢¾%kí£1ÅÖ ö¡TÞlB†Ð¨¥Cê§eÎì’ØÞ€U .ðÈuxZ-¥¸r°¼‡ÌÙŽá㣿üñôÿ×o37Úò46a|\B–„‡ÂgÓ\à’s¶§ŽqeZeÙŒHeò´ sQQ],Í,•o×;::‘Ô~¡ñ3“½ <ÅÊ®a½™Xc”eÙ2\ÍŒÚ`VŒ©ò«ƒ±DÙ–õèh·Ò’2±Ø¨¡ÁU¾FQ~磠¿Ð4ôé•i$Šùð Vâ¢ïò|¶(¿ê}–Sô9Ex£òãžx^ ã°>é¸%øjÍ�b.îmÈþ¨ô�¥1G>&\(d+äp o•û‘ðF›o„ œ]²„™cKÃ\�Šž—Ùgþ®Ü¯Ö9»N•$ ª{È/:{urfå°Ý3W2ÅPÚ$Ý+& ÌyE%*æ„‹ç­&`9o3uÏKÏ\÷B�¢¸´V£Ë JÂ�8v }ì—>†¾E6Žõ6JÀ× (¯"Ç Ò¯r!M��Ð�r£iFë=u#Ý× .:Q™î¹÷xšÛ(KO>ý-"è_J­]80p@ËXgÃùñO7À†=Îhx‘ϰˌÌz|€Ÿ[: X‹2ŸN�‘*œR4|¹F/y’{º£!#ÞÃÎ"ëéØu¿3£0ÈXî›Ï©wù¸2m#)™b‹²ßõ©)ÕÇóò§_I/_ìJ¿ðóO¤ûîx(§6¾Fè4mJ8÷L‘Eöc]ì:eÜàÏCC©é@>ÑÉ´†Ãøà‘£©¥µ- ]¿FðÊÁôÔç¾H€ÁH:ÜÛ~QþULQ>vÎ�¬I£�ë7›]X2Ð…cŽã2bÍÜÆüÑaÁ[õK�:€5º¿^D¿Rô°¥Eø<Ÿ©Kº§ê­¾×€÷É},Áp(N¿g¿ Ò)$\ª3ªÆû¾ÝßÅ[÷Ôsä ÜŠxŽ“™@£ïŽÎŒÀ'³¶À?ưRšg£á0‚¸ù\<£t}~•w,ŸhƘðì•Uàaœ€%æþ³K¼š€iÎS< Ã5zwΙ¯NhIE÷I8ˆu…<ÃZÙûÜ:65æi@@g¢ÁÜM·µ‡kwcßyWT¨`N'î<™º{…ŒÒ„�ÍV],³+�ª¥]Æìt™²µÐ?³› ŠœGO%[Xdèp6š‘VMpTeuczÏÏýBºãèQð<Þ9{Y»÷Ø<‘I ÂÐùƒSX‘Öe˜ã.½5.¦¶§BÚwñÚ€í7î�oý7 7¹ëÖßýìÖ¿½ëÖ¿ƒoìó]ï�’ïþÂ%.oƒ³EÈôz  éO[¾å_êð:[5ý„‘ü²J•'´ �”2º¼¤˜¬ehåó¹rˆ<²m³°·Àùµ¸§No;-õõV–ìl÷ :k$󭌤‘udy³Ê„Ã�˜�™µÒ¢=pIÝD–Š„:YË)m]Î…ÌÄ8Ò#y“:RI º óÖa€�Aû–£—GûŒ�ÇÚ( þò튻èO5ðå$“C” ”Éøšò3é•ò:Sü„ï̺’*X…ÄmÛUB:¶6Wi¿g·±NßYì”:#C“UW�a_D©v[yYùÈ��“ßKט$ò²vEJ ïPžáå1gMæ<_u-ýâ –ttØ­³Ê*⨥}ÍÄ2KMذ* ‹ý2»ÓòåŽg™Z×ãï~¿QKogœ4¶"²Ý’mvlOPÉ>Ê�t²y&޽Ÿ^˜#[�ß…kePe,NŒNxhÈ Øu‘Bc…?û�G ð©áƒ’ܶαì²2°‰^¼&û žì>hw4ÐTYÃ~ð�Åßö*ŽlXçŒ|µAÖ2K‰Š%VªÂÁP½ßEùÔ³F†ÄÙÅK¢Ú YÒîˆû`†¼<^Y;�çlßñÖζئñ)úÃ"Ëå “8U8 öFÙžÁ êú,$`GÙ#û§C¨áüì•k€ H¨|¥ãVç´okt•Uê±èlP¿/álÅ'ßs3SØ)&™6ù2Ÿ»Våùo>ô<ägï2ž­Ü£ƒÐ`S+å˜a¾@›9“®<yoÈ.Ì5èNÈriå•L®s~öcÖ¦ �°–Ê�Øù˜{‚ŽÃºÅ±ÐWØSé‡óZ âí$voó^ƒt 2€%’)Ñ_°¨û^æ±E0޽Ëëj‚¦lr“`jæ³��VÜž�s¤ØoÇw¾V¡AÄ�1´›êŒÑG±D% ù{È®J¬F+\Zñ°€¾»Î»¡�ŒRp×@RFa¯=+BlX§6œÈ¬þ”�x�P½2(Ï3w~jV¨ôN (D>­Å!d–s‰ï½…Gpó›|y¶™t9HGWfwFþdöê›êZÒH3Æ÷XG.XGúºhè_¬š³.—ŽËžc¶‡Â�ú™{é>’Tž+'†l ÞKß$mî­4ÀjiÂp{{»šy–,XÎQ|õœ=�@RÎ Ú¹º8Œ!‡‚w›ÐÀeè§´”ãã^éD¾-“Ð�£ï·8Ç9d¼Ð{¨Vfà‘ü!èðΘ”&NïŠ÷ê¬Ó‘N É”VxÐn.¿¶å ¸ö=Ö'>Ù>Å5E%è‡Acþ>9Þ_FEˆ2Ö±ŽŽ²±B` óª€_ZÆäÉÆ¦"…¼Ö–y8�•±ÙâÐyëêI8hm‰ÊVÒŽräÞ=`´Ž…�!ó.!o »r„þ¼¦ó�! ÌÅiˆ*™UVX—Ë(ƒ~1é"{®XYÿ#8M`Înúë/žcʰáàÔ]{¨þ•Ÿžz ]ë[—±�~,Ýu×Ñ44»™ÎM ÓÆR‡èàòvªÁïP-.Ã÷˜OV¼-Z”ÿû§hIA[˜2Ó—i§Ñ@{™Ù!Z5#�w7U`ƒ¥µ³tby.5‘e�r|r)U°ÿmì{;D%šû©´»ˆO᯿q%UÕ5�sø �Û¦ÜÛCÛ0*½<}~2�ÚMµÐÓ–¦#é7þñ?IW^>›~ÿwþeúÄ')=þNô ”WŸY%x}?½É羑ÞûŽû)Cÿëé÷÷�‚?ç“ðÛ‹Žiâá"ôFOôË�Ð~Zn 8ïï ^‘öÊk8Õ–“éO»µ™%@˜¿°U‹#½­š Ýp¿gÐ-ÃÌùÌâ_kÃï° ¬èÒ×"¬mİL5qut}(“ o&;îìP¾ºí_dÇS!ExWWÕ#Ü40Oúµøfµ>˺ë 50H­&£=ìHà~Ø…>9•²@ØG ÓŽ+±²ŽrA¾UW¡­^¡#|æÄ]í+þÓqo[ž½|«ži—@ŽVwiÓXDE”Úºv²�Ahþ6i}¼ÚÕlƒr ìû¤Câ…eéå;ëd–¯‚KÒh”j>CNN¤Áó3’ÓYÚ.­ð ½OY³€Ê ì›ü^_ØgA®B=!&ö¤ØÀ`­³\gFD«2šÊ®4X r!ó0Ú&2„d CQAEEYA»«ë årÚP:Ù@�V�6 _ëe ô˜0C=/¢ùA{€O§°½“¼ßÃÊ'ºÎ,:$È,rÇ7@ Ê¢MóÓ"BÆÛ ;«d€4Lh(ðÝ‹s8÷1bIÈ‹èY¬Ãƒ1H œr0DøÕ’µkÔ¤„˨Ÿ-*û¢”ÒÓFAÛ÷×Ò— àTоv}8=rï k6§?��u›l:h�sLðÕà¸Õë_?äëx(2”Ø/{"°Ï"±ÙzñZ9Ÿj Âtfôâ1ÿø1/Šp1IÉIûWêèììŒ@mÀ˜!"ümº~üÝùI¬VdÕ‰¼ŒãçÌTB˜aŸ-ç"#¾Uéö­­g£ÐuI}WØ}óÆ•´H´¥0P�²¦ ;áVH�øÕcDR@µÂë:ý §l%z2g‰Þ eMgéM"e‘&Df’/ä]�Dsšme?X{e·ž¹8Ê“Âj¸\Û&°Â!ŠùT1Ÿy„éщ9„Ë,–GDVIÉBö|j;XÄ»‰"„áû^Ëo¨H”ÚÌ—ÝrÝú÷k÷æ–ÛþÖÿúFÂhìðköù'½·ŽçÙI³dÒÛ0nÈ 4¥˜¾2#ÐçüÔ} 3  ßKð�\—´èǺD. �Íè=:A(øoî\\³¿{_¦˜Ëë�,ŸCi²<­‘õ–Ô9xünŒÝÁ�ç§aÈy»ö?ŽËgß„ëõñîõ?}¦÷¦¿òßk'¸yltçœQ㙓¹… &*�–6ÏdDúôŸÊd/?�Jb’$¤ùSGçÌôDj¥4˜†NaÚ²ž*øÐî:q<½û‰¥¿ùÌŸ§zÊš½82<‘úûÓã�?c���¦{î8šÞÿ�¯PDô×\~&ìG� °n@h®ß²·†¡t/s*k`SV�ÀN•�p°,S%n¬#w»‡b…Æð��ÈÏ*5…t æ±$õÙN¶ÈPž8yâ¸Eöò¹ ŒF+ ÖxæÑ‡‰t® ºªâ¯Ãé¹çž#Š\doî:yyd• Î w^ê餲eë/_½Žî@Ÿ8èõ'�…üÞw³zFÄ7F#¥‡‰Êß €3@êPo<]šO6ôóùo½�.¼|>λ›Þâ]:Ò·^:‹\OÏIÖÙÕÕÁšQä1R:F¾ëäoÌ €f¶GiIä]éØ$U¡Œ¬¾óø¡”Ÿ¿pº† Å9>tï©ÔÝÓUq4àûþ .¥ _A'(OMìU+%�¯^»~Ÿk7²ù*kWO©C/8pà½àÆ)ã>{ÚÝmf ®W¯m/Eq?r¨‹ Òx˜NÓmäñjÎºŽ²¨èH‡{(±Y•ƈ€W^ÎÃp;xå•´85Bh°…§p°¶Ì1pѬˆ;§Né¾[ž>ÿÕKéåߺõròb¼CGúÈ?ù‘Æžø iœÍ¾“o øY°@¦ ]Ž¡P >tD„òüШžãW™!0ã=‘pÎF¾*CÁÝãÜ}> ÌÁ ÑPî5*úùü È\|ª� M¦ÿåýƒôßþW¿™¿çÁô1ÊCüÕ.§ëãên”#®d.è¥c·9kòed‚<Öwèä©hÑÁÔyôhš«LŸy˜²¶•Àé�àC:)PÅÂhÌôø >ˆ¼k\`|ØÀ «±_®“ËßÃAß¡Ló¾&(4’htNÔ‰ÄmËwð“ÝA`/ø'ï³0¯ c’²†ç 1Ö¾»ð5TÁÏ·á‰[ðtå úÁÔ”3Tôw™³Æ exû³aoä^ÝÚª4ØÁÓ™o8kØWÇUV1»Jƒdxkâ3ßk6€N$—jeË:8Ác¢Ã.ƒ‹‹èëa„ǨW‡±GÙfkßá Î®á[¹Ã–1î—ò†:{2”ãaÿuײïvO­Ú晸FñXY(s¸é°sï-è=î^"hüjzðÁ‡¡x?: ëªæ^:ó1îZöðÈᣩûÐQÎÏ,PYȬ×Y�±_úlÄÇ>ùÑôÐÃ¥²P•� �ñ.ÀÕIÃ,F�EZ¼…a—¤¿z‹].ynû`û†Ìï­·oȲßð—¨+…sÜonn‡$Yk!œ�P­ §‘™ý´Z@"P-ô+ÇUU-B?p {È4n«+äS¶1Ç\—À;±MýFÝ`[m ×nÀLQ3Ûœt(�SñaŒr©]í è •™ùcÅŽ­°˜�˜¿ í'èJ¸tN×µ”‘©®Yº´ b§#ËKa6=m�ÒŸ ÏmR구Ù‡¬23˜÷°yHSt„U  ü²8‡ÑÞë· 0#y�VrfYiTÕ&ç«uŒD–"ó¿µ.òÞrl-Òtͺf!›…$_Žùs¯óuŒ2è«ú¨vÕ ô'ùƒ%{K1ì7µv’•Ie>h­%d-]®S¡Íѵì¥Z„ V~��L¤ÉÄɈ]E§¿´xnÓÞÎÐ!öÍàÓò˜foZ@ZZ©¡›ŸÚvÔ—°×òHw«w²Yü ?b?·q¾ú‘öÉ925Ýo+”Ò‡¼¥=èªçïnáüÒ1¤³Õ±%ÅêìÂþ Øÿ²J©Î¶0�>$Í÷_z¤¶¤U`ÓŸî™›$e8ÿItâY+ ‹–œW']‡ÿÁF8c«¬0´WãzÈE®Ù9––5#Ø«–ØßÆF«Ìè¼Å^È{9Oì¾[;8aXKü�l2’@°³qîˆÓã##ðdf…¹Þè™äÃ(E8¯2¹Êö%Ø áe¯.\C6Í‹ªuM©Ë‹Ù¸HÈ2«ÝYÛ.�mç>��€÷sƒ›T-]ÄÖµ /¯o �ªßs9“Fæ°më$0€SùR=i›r¹«À¸üu• ËÅ[ t®ÝMn—Áq1°“Ù¾÷ûp3‰8}öN'M?DÒ–¬ÌbÕ¤:ZÉh�`îö¬"¹!ÓßYŽ ß#¼)g;fes}TÁ:ù¥;!#²é�ðÀ«Ðŵ»«0Ó�b\pP§ªý�}ùW<‹ê8dÚê«pÁÊýâPì¤ô‡û­Î„œªyùê@�³9Y�‹÷å“i ý=~'Þi›–6/±>ep�Ë:ãÌÂw­¶Q­¡ µ¼£¤„RñàžÕU‚^QIDgЩz¬º—¾3>E/ÏJo—Ö¨Ì8Ç|àJÀ))­Kyèš{”Ý^&8`½„}Ây>G £eÖ&ÌCÓ‘“'S1xw}h0h^a!�Jî5ÿf°›Ã[´:_KÖ×4ºŠ¯o�µ?¨ó°‹LàïeÈÇ¿YÞÚÊ6nœ—Ÿùâ…ÔŠN g‰óÓ»;Ä!®¦?ü£¿ÁÉÛ’~ë¿ü úÉ—¦®. w•¦»Úi�L9þáet!îi§¦U8#ƒtüŠÎ àø¥¾ñÔP¼›YómÈkËSWS%¥ê×Ó8­e«pRèc„/8€‚¾ßÏ9¬VŒ?¯»¥’Áåô̹d’ñ/,CSô ‡×úRÿHAº<�(« CzRŠßáÁÇJõ$~ö¯žLÝ=×ÒûßÿÞTƒãüÜÕidŸڻͦÏñùô‘'Τô_üFú?~û_Q)uH=p¯žœ ˜”ÆKií¹c´òúÀçS“È~áÒYíøf�S `6q¤Žà¥‘ÁÁ´ÁXúU;[›SÑÔ\š¤ú)Cè ¦ï|/°a€\Îôj2÷M¾à còC{‚+ÛQ5Ü$M½®€ å#³®··HÆÄ±¯Mfo ¹\Er.áùà›¸¥Ž¥œDì?-ÔÍðqÚòƒ½/ÂÑ-MÖ&eÅ„ŽâýÛŒ//ØÁ‰®­C›ÁÕ´sHúô×êGl3¦�B»‹´² :ÀÙ#†sä"í /[Tª«Š€€™éEÖ‹ÈsV‡“Fԑů\°ÿœÄfb¶y¦ûR�ΊÌÓ„²-઴”–<à©2ƒ¼*è’sö¤M½•�»VÚflýU›´+µ� 2¯2Ñ.t°p‘h-{»(tƒ*Ê¥ Ôs¨‡ÈëM¶Q>ÇøQ[&ƒf§ô<ÎfË®j¿1K6XêÖžæÍô™1â^&&±1Úé�žb04 ‰èF‡ À‹ô•°Ý$ÍË—^N—/¾Ä3(×,:¢ñ¸W†½†@!㪪DÀ¦W†Ñ³ 7@¯‚²Ð¥a+"Øôm€# ŸF��!XÐ5XáMA¸�ÖŒ¡>‹âˆhDzqi‹&ì 0'rzmn˜mdÖ;€�£ÃØ5×ÀPëâû†p".Sƒþ!–Íi¥Ïá�÷>žZTô™§ÌÂñœË­WFà¿ÃRýŒæ§Qö]&þd.‰�Š’Dq )DóöõÃwÀ}UÀ2ºfÅÇXc¦°;==�°¸Î,£‹%N¯ÝÙj$žüÌ¿¡ÿù×ÈBY•…a¡žã2ŒEf+±é¤ÜŽV—`ÈЃ�m„r‰4ÑÖÁìV°‚@ñã„ MP¡öŠ1²“ƒ¸†ù<”s� 38½ÄQ`akN%Ül&±blXƨ® '#ÄÝ’"*‘·ŸÕÜèÍô'ÿêw†yÇé�GßÍûÁ‹×¹2‡�»��Â\¼„»¼ÆoÿçßkÜMÏó;èõ·ÿ;·ü¿9d(:R;Ö®®öiŒR¹“0úÂÌJ6^#…‚·†ÕFcrtóõ¦æ½‚FñG)=óågSN{aA™/2jØ'—¤Ñ’nê'A«Ù)•uy‡<«BøØ]¯üF}É{WÑËÔ‘re5£‚Ÿ«“È蘒buÄ"flåSõ@�?òBaÍsRÿʧM�ð&ÓA<‹¿ ŠÒX'/ Çhxmv#`­ˆ ƒö?ývúŸÿ‡’;uGz×CT?úò`š^Íï]ÞÇð0 /‡æqÞö웤?}U:|ôŽ´³„ŽK†Ù©3g¨bR�±cm =pÿ}¡½rñbèœ�î=}�£SéÜË1vèxˆ¬Êzʨ_å¹YtÙšô}ê T»xþ¸ºIˆ¶ôø£�°ÚÀà ç.R¡æ™( ÜÔŒ3‰*ƒƒÃáXqo›[X?Õ—pø›%¸Þjpquk¤�•ê0RM"÷è`î¿ÿÞÐ ®0'÷«¨¢(ýâÞåêãü¡Còœ;Çü8?«ëÈ#´›Q^2à¥ãÔè0-€]@'ÝCÐ�Že+`¸¡m�TÓé äN oùô@ïÁtòCw¢SÖ9ÝÀ€qJ8?õù/¥¾Š15hcX׿­°Â$bVö>öÌ wé”4Wú ^ªcy}G%™ÁeT$гásm°êd:UuüÊ_«Èø3`ÈàåM2Ê” uîuu¶ÁŸ9[x§ÂŠ�B.DºãÜSÛŠ4Oú¾ˆÃpdx˜=’~¦4‡sÁ ­F‚�<»ÜÞßw^À}:ý²`m´ŽYM�Ã,s˜DïVWTcÚQ…MÞ¥,Ĭá8@™O<¥˜3t¬uÜÖá+ÒW³H�³ÿXZ8IJ8m?ÎÍ žÂ–ÉYÛÛóð¤Q‚?uâd GÍ d¸[n˜5¨@XÔQ``º¬|þ™¸SZA{˜�ÍW»ç2‹Ƹ›³íØ W>QN›£ñÙüÑÖ^¯Õìz�êÌ–¹Í>åÚ……;ç+.‰SH4?8éÁ庱Á!ôix4Ÿ™ÁÝDªmuHët7 L�ëÜ5øAùÈ`Ï­´žÊà¥~î»x™—2œÁ™Œ¬QÁœšÈÂTn°ÚgAÆžåó1˜PyÁ@ u™zŒk¥HðnKùQ|Á#â|�‡¢“=�Œ:1„ƒáš¨éa™è¼ÝgËÊ&›À—²¦óÑ�.�¨ÄÓ@õ �ÞÚI\[ȉ¤‚ ‹Ñ¦ëå¥:M¤/„À:7ù’ÏiE€ß œÌ̽=*Å`G׎}Úf‹ß}l‡yí0o~”Ë­¢``¬t¸ì»î_Ž0ùûö.åúÁ53* ԨūZUSlÓNjIùÛ1t숷L‰½2 Gœ–&…î„.Q€<+ÅÏ¥‰ñ;s“v„ƒˆOÂ�ϚĆ�½†ò“åú¡û_ò_Gá¶·ÈÅÚ8ùÊÔÒ4m:f N%K`Þü<’WÀCÝ‘È!NÚ¥åkèÌ.&äYöMºè6H£AqØñ ÀÑ¡'Œ!l’mAL2¤Åûlµ-»Ð±Žô¢¬x#ãf°"Ý6pvg_ çQº[ Ðòa[’8Ál»;02–žþyøNxè‘•�¥eÊÝ ò0ýÔ±î˜ÊµÈ¬¶Êè9NzlàòÚh(ÇIžŸ®SMŒ0ÖT./á]»ðñ&úV[•bGiEþ‰ª½4Žíî´uŽ,à-*Þä#ËTPpŠ^å3—ÇS#ã¶·d‡>¾�:Ñ]—Ff°mBëëØçyüuDJ�wVšþìßþuú“?ýwéç>ò>¾oL_{ ‡¼ÉDS+éÉÏ}%}àƒïI¿ù>™~ûÿxKÖ¾B¼Ð¦)>Kc[›ëÒÉ#øk–8³.Ú�n§CÐ[¾+©¤Ý eêåOâƒ>á`cy>CÛkµ%à —®Ì-,!—øaF8ðξßg¾VV)Ž2ü$AЦEP?‘2…0­Î©-D>)Íb†4·‰Ü·‹³[{†cå+3Ê;WÑCÑ¡„ݰ @©Äݰÿ‚È¡ï@÷¥�êJÚ¤%iÊS+<ØÚÎÖ@�Ïœß{+ÍéUæcJ|fà8âmðqU^¡ŒZ]M`/&©š`‚ôçn%Ç d!ƒAäÇÚtBVå÷îZÑ£�£¶xMm#¶ñ°§E;o*Šè/ð¹Zâ«È¬&‘ʧÄe«Šió—ŸYÁ{†=ßÄ2åþµªˆ—…F´y r*pÈtŒP4šq“^¯[{çS%¥RV1ê蔞˜Ig¿ùåœ5ÎDôªŸ²Ï:‹ê 7*8RŸVˆiʼn RªQC¥Õ2‘KñFû(‡×Š­ã²œ¸Œ T4*2EÕ~ôöõ¦ï€ç'!âÜÆÅíߦí³dBkˆ?ªQf”Ï„_�8Yuw•ï×ÇÙÛxÝmߢÑpÃÔè8¥ÅÊ*hÓCåøYC¥ä�m�kz bÓ‚¤1½ó]ïK¯¾r�9¥Vœ²C8�ìYÜ}ð ÙÖôªCö3Ã>‡ã•(ª*Ò®Iúéçaœƒ¾Z^þy ÿOÿ»ÿ1JÏ"_¼t‘ÅKà° ð[‘HyÕýRñP>Ëãwñ}3 èP~—·k¤%“€gt˜‹·.¾4'îGñ9ÐÝÁ<àBIAñ*ç9edMöZ>þ"Ë·— ŽV¦16>�MatB9Óp`�i×aF–üw àÔÔTÌA£ôÁƒ�8Ù-Ü£“­… \«gÌumF÷ "ÅUþ\›KžÀ˜õÌ©uNvÖ¨§ß5÷÷ ¥sU+Ê9Ãk7úØkŒÚÀ’Æ�ƒ�íô®oDŠ�§itFv�ß8äLŒN�½>ÿäfôpPé<Á�ØÂ^ÈøÜóöEÖaN,™í}aœ38Ù ¯ƒèIú VZgž•8a{�¦¤´Œ}Ô�8tãZ”œ&`c�1çg 8tN¼wƒgVPB9í ã÷«C9¬O/\Ð0t!µ“©ï^«è SÒXÜxEdŒ¡G©í=|Ë÷fUà<àD-ÇW¦q”ÿiÜá9ù„™Ûò"ƒ§3@…±9l³%ìh@‡U„-omäò+F¨o1ŽF]³Ìó�uŸ/âùàuì·Æµ)‡g&`—wz^î«4ªÛ¿2¡¸r°+  +ì —ÞYëÒBÖ÷VºœŽ´Yݼ˜àŽêjKR€Ècâ~§l* ÔÖ«žçç›ü.ïñÌ¥+ÅÒG g1kvÑ¡÷p¿¸°mu?ÜcF•0ö&aüÂæ5 g×ÁgtP—C;3³;fÁ_ÒevÏ`j¤? |a?µ½-®ï† ¾‰kff‰*_3ÐÛ:ð':à,ýÓ1íßQ•Ã#`®Òé Ž@é}è ¼dý¬�¹É‹tb¶f°£ÝÜçÃ^¿s/kÔ±¨~�hÜŸ�°Ÿ³zßÖ �²šÃïÛBÇ—&²Sìÿ¥"ÂvDyoq9ŽrÚÏÃ?fÐ Z‘ÿU—ã<]I_½–F·‹Ò�žt´M*$ÁBöÛ@žoœ=‹#»"59 íÝÀŽA¶38¼Þà&ã½Ì�S½L>j¢Š!NäG8§õôù/}ƒ ”&‚ƒ©pÂÙ½ïñ^mÆÒçÿê+éSŸüUªÝU§ë#TŒÃa©MïtOyê›ÙK7p¢�ÝOMåÓ$å4¦£8ÇûÀãé tšràžµˆ@Gv-AÁ;´7)¡¥tOWišY)Hóèklgâ)ôäÒíªÔ‰ó{zû*ôrdj-կ̧#ÝTí"X`s%=‚®|y8Õ÷¶ßLšï„ôtÖƒß3m¤‰¹�D•öTþž>O®ÒAÛ˜>ù©_NÏ|ýJÒ?—Þ÷¾GÒƒ§ÚÓ³çÇá­åitj9=õÅgÓO¼;ýçÿà×Òïþ?”Á6ü* âL9W«Xè_­„.V�¼²6ü¾ÝÖÊa…Â3tº¼â�ƒÇJjµmŒŒà@džìg°šÁ›0kV¹6…H �v‚Úv„5aBlgvdÿÖÑmuý‚¶:º….x)»ÀU…½*Á$}83£ÛÑ–†:&ƒåoÑ’Œ1”m¤“…ŒµGEñ]õ}`½Œ€8yk(ÖÍï`»f“±0H/´£Hë˜�:𦎻N@¥‰Ò&dOŒ’쯉ϡ½H•ä%*-Œ²J D&3šÄ ¬dÀ¿¨­Ë±NåA�õ:З‘‰v˜�4°äÉBt]‚Ò±1-‘ÑÏÆôrH«ig±šUahKÈÝì�2¯p)áŸÂw^XNôE1)ùÞŠ@¾<†y0 DÅÞ5—.¾ÌäÍ¢ Æøy²#êëqàTõò«¥)²U0Bðªi~¿vùRƤٌ»î¼+œ ý7û0°M5,�c‘qð,d7�èY"�ÍméȉÓiúé'‰<*NºQà[ÓÀ�kô–í'“à$%ýˆjÇyahnëL��Á°ž}îy"ýÚqâ�Ã¥�Y8æì;»Å&µ(�—A…�ÉC'j-"›Èi¨ñ‹U€ðö–’@nE…Äñöhh%Â’ð *ì(Ÿ‚ŒkÖw=ц ¿[ÿÎ&*Úùa`(,H‡NÜǸÛ(óCqŸQ¼ †2k }-ÇŸ:-•a?³Üë)Gçç <þßK€�݉¤Â¥Ÿ‰À…dÇÛ‹hÂÓÁ÷a@s�\û�Çï¹ÿ 2'�2aÐÉí‰÷³wßu1Ž#åÞ¯ÂPB©¦ G5ôݨÁÈlôo.ÒÌg¿gŒýo9fÇØqV>³�?â�Ü�[¿û{îŸýöïûcÜòxügì}¯YOîÙlUûïØ8÷ŒƒçmßÙï_;^îÛܳ±žÛ¼Ïg½ß½UÔˆg)ŒŸùËtù×Òó¿ýŸ06�Êù8û}¸vñ¹…ð«DV�»÷ØÉôþ<�}ö©ÔÙvؤÇåX[ªC9ÏKmÊÊ�êN„Aa@8šç^˵5­I”Ê�ÂJ(¾ÀŒ±¥7�SŸ‹È'æmù÷K#k;¸cÐÎìâZ(H|§Ð,a÷{… ÿYbɈæúHkŒUVñµ|üÌþ‰}$5¡ ùœÊAnÝ3/›YN¿WÈvß°´ÝǺº ·~Ø™}ÿóä%Ò׃ƒ˜ÀOè?·ãOhÄ}û�-!8K»�—ÌÈß=¦µ8^{¯÷¶Ü=ßooã™ý…«àÌÍî@7'B¹°¥/-ô6ö4¢zk%ej@– _亮|æû¥½¾_:zëåX·^~¯ñÂò_ KD(ˆ¥1�™n„šJ«‘ÌÈUžtJ«”›mººjvÖ8ÙD±!:g£Ûö¶ËWÌúÖ e†ã2Ÿ[YE�U>Rí…øL¸5â µÀïì�¤‚®� G\“7i\™Ÿ¥| <Ãòg~fe•xôé0tmR.is³ ƒòAœñË‘9yG�™]]]Ð…z¢.ïN##ÃQ5¦�Ì:[—ŒŽ�!¨Ï†ó]ãL¬•ùxþ–73Ѐ-e2'¡N÷œaLAÊ^‹f‚iü©Á@q€w•€“FGáÙÌUƒŽÕKV(ßþà™3±§–�õ¬‚w#›¬®h8§,ÂÖˆ·¯7aÄÐú÷žç=ÝŸ�÷äøðëMÑg5©ˆOL¡!s6·¶§1Jž·så#òÇÕi¢Ó5—ñ£œòiÈë½ô‡|æš�äƒg(§šõ3‰¬{ß½§Y°O ìî€UŸ/•€/§ÓÇ?ñwÒ—>÷ÙLF$pÆV?:‹9²TÞ@?g‡†(·Ú’J(9ê%½ÞÎËÍBÏÉ…–~øÌ£ô»šŽÒ¬fdìé?Òþóß çzÎPå¦áÑq.莙;÷IùO#´ ¶ò¤7…®âÁBî”o�Юå>DI63†�;¬ÛÅÍpfh=YÅÈ•[TŸÒáeÝø;�>`¤²2C8™‘�5žgAkl)tÂÈã�“¡9Fi G[ ÙöQ ùEG¥†(eOƒ‚tHþå«OFd½YbÊ–^Wœ«2¥s’ædNkdu2ÏtE�´Ù’´Þ' ŒÒ­Øk–=??™ï w$Œ^J¤±5л]�é¥o¾}“•j0Œz�ÎÓ”9 hYÖ Æ_àxE×,—ÛüÝOF„� ÇŽ�Hõ­5ɲ|Z5†¸jŒu¬ÉÌú9ÊÝš) A{¤¿/M£¿D–r�ÊáÐað�†Z�ÃL×;¼Õ‘†§6Ò§én€‚ÑÛâ›JÚÓ³g4vG>Ì ìpÊžáGa´m�€ÈêAA6Î~²:t+€K•É"t a "z…C¸gnþ$¯n46ë(E¤ =C ª¡*¡ê Â#1Wƒ¡Tž= ÆëäÎÎ8s`\£âzßPzòóϦ¦_~Œö ‡ÒÔì•ôr�7yTN ªœª3Ûžß–q¯±ÊÔxš„¦´ì¡ƒ-ÀÊRë�I©ÖÕ‘®�%þÂ3/¥¹¾™4½5 ©K¿õOÿûôÀaü¬@^0;G…‚Çöô­#ð©ë`wàÃö‡ÿï�ÿ5òÕ¼Ö`<ž4ÖA�~þ¿’Ú¡IyØ5¤4A4¸Ï]�¿Y~ó2[ÎþÎh`ƒ¼Ï{Þ:WÌXÊéûÂÕÛ×ÏÖëž« "Åw ú€Fa\–N«qþ¯üR#.ß¼â—&Í(ÇÈ3J mÐЂü–°›iÈW¾ˆ–Ð i¶tI½W^€& xéðÔ>¥-Âì&D_yêsèÝ‘…[J&ÒÎiñ]^`™UßïüC§„v«ð¥�72{ßeK,mÄ1˜KÉט³öÝ]ø‡$"Äÿ¹Ôët„.;vúTWíáôå9HOTºÈ«¢l·2Ï[&º�j´c2| “ÔCæPYÞ@@•Uþt.nóÆb>·rŸFY×U Ï5 AÓ®Î8¼3$ïa;­UûâääLº94J5’–ÔFðžôZ¾n¶²�[êƒsFéÈÕfçX½½=<�}#/Ë@&iG/üMþŒŠg­ fÀZdisÎåÌA`?w¢!뜧%‚©þÇY$ï5ÉHÞ¦0Ÿ˜9‚ʬšSRZOP�­HÇ‘Ù{�(7¬Á}ª.·-(Æ{ίÙ~»¶Ži¶,øS%pdÅVÀ–`.dZöS9 �Ã2u“ŒX«’*I[š]Þ+¿U?wNs3ÀWiÖkÞìríîé4ó¹té2:7½Ôщ²¬9ì,@¹ŽaEç¥}ÑG±1 ¥»ï>I¦¾¥fi�ÃÏjœ5 ÅfÙïêP&Z‡Ý¯‰Ê“ó  ÊýäÅâ¨ÁŸ¥8ätÖ�3ÅivÁÒñzeN’¶F\Л�<ª¬"»é¨ßfŸ"Ø€sßýŸ™¬9X¥B˜7ðOgHTÀVØÎýTÅ�µKËÔQ`Íö Y’D9“w §¬'-ÐqnõqÅ>Ô$@ÄØb$pè“YçJ­V3ؾ”mû¨´³CÀ‚Ÿ¯aÑ�ØÒD‹%¾7iÁ{جЕœ«óˆìaæ �ðû]÷ƒ}* È YØ;7HÙm\2x h"ãD€ ;¢\”ÇASÙh(»äBнõµo‰+&Ãéá'±b×&m )NUÈUÚr„ß°3w€ÊÌ¿p¯þ°Féh.ýLº±¦ß„1t`™"í׎N+`.dCö—A�d+~n`¼Ú&¡Š-¥ |l(oK·¢T¾ðÄ>Ñ˾Øâj÷5 KÝHÇaà ¥ögf硵d§¢ãWÀ“œ�0ïOu"�q:Ý\¾ú¢½ÉµS âß– �Ê'LÄ^Ò&mÆë­*À|·ÐC…ÇÅeé5: sT¯ß⌵ײ>ð¹Ã¾ÚÞ׊ÚºÜC�€Ò¸‚NÙöCûŸüa|�V‹dó®­-Ò>¢.¦=Ä Ä•y”J?Ü•n>s1=OðP4øÁ;O¦yhµ]l ¶@{  U·´RÇœ.áãæn‚G0V¨. Ì°“Þýø)p® }áéóØA)%ÏÞêœ}癣Цg¿v6ýêôñ´²[œ¾y û Ïžê¦]}eÖgÒü:{Më±=Z"Oâ,Ý@k¨,Jw´–¦^‚†nÒ#}n‘*Ê+‹à üš±oÜH Có©ç <°²™ìxh>ˬـŽ5pž~gÐìüçqæ­(ÏL`§h¨ØKókÒ@…tJ{W¸×ÓR‘Ú±Ïn€§×‡ghë!ä :Þ]•´�±�® ®‘‘>Ÿî8u2èÀg?ûÅôÑ�~€µ¦¯ŸI5”~¿tuŠ,ö‹éÌÃ÷¦_øÅ§óÇAò,ÙñÀ¼•E»ºZ‚†÷õ Â×¥ŸØI¨2ÓÙÑ Ýä�¼g›¤,aPø’>Úv+H |jø»::s•Lh7 L)èÝ4Òʵð%užUäíÛ¬gýJ�Ȫ^kÀ”W™ø¢—k“ÎíBƒ´=�‡&3”*ƒeþÄ"l%wÐë˜p¼N{xo©ß±F‰¡Ùó[+ˆœÊ@ò*«ÂD5>Û7#¨Q¼ÅN~1%ò ­ÒÒh…*~PÕۊ˳³“PKmU&[Š—ÈYE“UN¨®34Èóú>¥�Ê¡ä5awßÔöLÛ`ÊG«TR10Ç{¤ýÊuÚ¯¯÷õóRÿ÷ Nàsqc$ûa°¿| �õo£sŠg»ŸaLI…ÖŠ÷Ð"j "k4LD¢¶Áèƒl„ðl„„u³›AYJ­¾’Î_z…—ïÅÝïUÎq{ÓìîM7n^á݈0•á9[Ó“£±}(æGï8žî¼ûTØ* _‹P¯]¾˜NÂ8<ó"ÑšqDŒD_˜)Œ"MD×÷öôÆÜÝ8ç¤1òfœÍ”û£ �Î #cÇp¸éQhÙ† HÜ\OΉ¥DRçˆhxÚaÓe¾¥S z J@%²ªQ$Zy‡}o$nfËhЉ¢C@g߇Ä2¶eì™Ã^G¼°Œ±ÒhÚZ"O5¤h 0’i‘jZ™¿7„m!Œ(!îµïdSýæÜ`´2.öÕÞËK\yõÊì�s© 7€–½ùî‚FAhùq«Úq(ÝaÖ�ÂvöX £eÉËûs—Èë^Ô4ÅXÝÄÚ·{-&dïó~ŸÏ½×Ÿþ��éŠ`fŒ«ð÷Å'¼Ïÿs_ö]&hð{�=︎{â\Þ›‹þË핟çÞíïÙ{ãÃâü,"{÷ç”»7”¼lÙÞWîÙx¯à5Wîû[÷I¥NÊðß¾rïÈýÌ=ç ¶p©�Òhê#Gï"[È,O<0iß*ï‰LpçìCûSQ±•˜F*Ži᧸�˜MÓDÅŽN§^¢N=F…zñÄH)ËZxž*ÌkB*°*‹îË2ø �t†¨c[Âêš|±ÄNX2¡ÉÜéðu%ïíh#˜�gT†8Ä�ˆ"b 53K-ä»"ó›[Z e“�Àk" u0ªlèÐÈÁg¼Œÿ8W,Ãç?û—”àJ?üX:}ÿñœŽ÷ØýÎíuîgî r?scÞúÓýò\snœ[¿Ïý§ñíùÌç¾ÿa?÷�ñûßæysSê¿ý¾8�xñë?ëÀ·|}ë>¼öÏAaq†6M£É£ßÎ¥„¼ÖÖè\æäÊíákǸõïÀ_æç™9…¸F×\hñN� Áî½Nû5"‡�Fmïèä¼™Ã�¡äŸÀQ…aÔožÈ 8Ò£î üSqš™°dPÇÐÀM„ıôØ;ß›>üKŸ$B¼š¼•.ž;OdœÑü8X—‚A– �ÒÊxâKô^‚Ž*è9^o½paê—^¹¸#Ïp^¡Œ8þ)HçË‹ Ù ªqÒ[ZG¸×P¥Ž(Þ»*ºÒë2ú½ ݼ‰òB¹Ry�B’¼I…VRŽ9˜ û¿—>šzzz0ðÔ„³_žäÈ‘à;ݽ½1¶s—¯ZN[§›óO½ÌDÈÖl°Ý,‹Y£J)â¥tA¡ß³^c.Ÿùן†ÑG¾±!=úø;qž€VØët=ؤaWÎQmài–Œ1¾(Q¹2xO%e [œÇÓ‰‰ ð3z8 Õ죫ü�¸òî�ó—2â“ñ3k�%VAÈ9¾=wçþÚËu)Èz®dŸókƒ£ñ|!òžý¿U¸cÝÜìÏ äMtD W⯰󽣿öm·ÿ·Sµ `)ý³v0ªTRAG^eà‡�2õʉÌGS�ä…òâÇßù®ÔwýzºñꌌÝ`˜™„ÏZÙÁŠ,:o4Tš½^ˆ\8ƒ‘ÒÊ^ÒD÷M£›�œöÁÒá½µ9‡<¶Hïñg؃|"¶)Ùö²ú’sS :À÷ÁW+²`…˜ý}v¿ä³ž�CqÓŒ«D€Ñéä±#øÌ’/O‡1ÖV“‘Ë Q,ˆ–—"ËóŽ‘1ýŸþg? ŒDîøÄx¼C~«ümÜ<ÆP·Fçq3†¿eh£™¡‚‹AVö÷g7ï9HÖtÿ™—‘½!C¢Ð–@ï£7z#û½@FÉ4{u]AÙÙ u �esdKÍXQ^äáÌb­¶—‚JCœ›÷èèÂ)^‰Bþa*ÙC�ÌwNZÚm´¼üì¾Ó÷ÐΆêTdÚ¨7  …r¥‘=ú%B‹ÉÜ1�À–ÍÀp)ç^�ÔÙk ƒ­ÌzR¿2æ‚Ïå+k'fdžÓÔøHZ.Ì26+j“ÀÛ(ËÊ\4þ˜±ak -óºŽ# ÅþžcMŒQ”¾y¾/`H/+#ÐPù[q ^mÉE�yÂÔÒ~ÙmwÆsÑ`îÃÉËíî‹F(>FÆD/b9ðŒìðÓû‚ßp_9ç&ÿo•ç4^j�Ñ!³Œ‘v…¥ås²>ï½à‰Œ¡óÞŽ­Þc0мÉ*YÊÖÞg,¼8%ÜJC”­&\¨×ö’UðŸ}:ímOxôp;‡qXDF´ Š|7 ìB™æYyá 2K%pVpì ^ÑXjß¿#EÚ»»ÓéGϤݗFpÐÏ � ¸2—¦(Knöam#YKÌIX%ŽwqQ�òw>=>Ì~`àå¶ŸΤ}ß»¿¥ùJ"4Çs:àÝëÐ'Ø � Çg 2ÙÅŠìÞT ‡ç1dbö ý0ä?@ö^¯¦'ÇÒ‰S§ ðâ  Èß`µQþö€ë¤/r Y"Ã#ãY5öÙ—ú¿uŒù«8Í•ÕsúÛ:€.aõïÛöÜK™ïâò,™;�À7…ÀŠ¢I@9Ÿö^úØÝÒEiütE'¼µ![s�ò~±pîþ4@XÍ£ú^¦kTßp„+é™4‹?otÔÕ4"7O‡�Æ0•Uu0x!à†œ“4UãÉäô$gm_ÂÍô"™ç–”ÖØ7µgùžF|öîïþÚ§Ò‘ÃG¨8‚lƒ±G£Št“iqeÿeË‚¶°ÜTÄ»ÌêG9& aìzãÎù­q)÷eú‰?9ñ7hjîÖôª·ÆF¿‰³Ð9º›š¤u¿G�È$ìzÞ¢»4~c˜ïY`ÛÆï »à˜8£cH»[:‚òV ´T²>�udÉEÛ^ð\Èfœ–›²±‘©Y·Ï™ÈäýÒ1­_ÚÅÅyi5ÆRøï�tùxŒá¸Ž÷ºÉ`¤õuä=þgj{×áT ÜVýÿì½×“åçyç÷vÎ9ç4˜Á`�³(ŠÔJW®²µÞ —kËŽ¾ñ•o¶öÂÞ¿`˵®¥µ^yWZ’+¢, ÀÌ`rèîéNçp:·?Ÿç7M€b0È5IËèéÓ'ü~oxâ÷ /‹iLÇ`¯ ac@ßú¿VœÚyK]!�xž·E$%t91a€Å]QÂ÷•}*””^ô_•�ú܇ø7ãÄ�–òóÐxMè#eRu@ûM¥= ìÛXÇG0a¹µ­1}ç{v GÀ—]ZÙMOœïD§ÍQ¡ý~úêW¿LýòteÜd'ô:ûúlAšc΋ۥTÀ­¢3IG ²„˜vÀ}*Æ+ÀEÛê(˜ƒÝ«ªXÏ"Î:o«'‰ =µZF¢ô*…´Ä¾¸ïßʬ=ö®¯¹4޼›"fµÿÛ9­†}ª(Þ�¸eçŒo4¦™%0XŽû**e¾Ü£«ŠÄpèóÆ0ç¯ïœÕË‚ƒl¤€ ¹=:ÖZËx‹ÒUæ¢,ÙMOŸëIO>“^{ííôùφ}ßJW‡ñ/šÒ¥kcàé÷ÌÃØsé έt9W‘ß7©d®¬mJ¯_ »ã…S$Ö7·R¥O2´ºÃ˜Dfò€>t%þÇ:vU�GžA[ÈryÌqJG;·e|5‹ ê iä´UôÅy˹Ö.÷”®¤{m@íƒÀÕ°MvÓ�cìhj²‰† -!§ï­áhÑ®ôVÎ{v£Ó7* cyIR&¹Ù�î™±M>_U×BÔùKrÛv€f£ö‰±[þ‹È»vV(f~Ú‡ú‘µ¬‘÷ZÌMÁè`¹:ÑØ)ÆpV9ó^¹-Âoà_=p?)7äyFÁ\wÁÔ–x˜ÿö°cLÚªÆõ¸?ÊÄÛ¶éš”çâH;ØU•O!� öÄÜìô€D�÷I ‚n¶([·‹’ãkÇCMÅ“÷G©jSnÅÅ—4D™W´QhüBÊ10Á(Wˆ^¥›Eü 8sG³öª0Pæh ¹Ìy,]a•,öL�£îÊ·þœÖìý1Ñî®.„miZ˜ãœ„jÚR߯f*‹`Ýg$MŽ� œ4\SdÔ™�nkŲ¨ø+ä¸Îõøýa„i “ó W3=˜` ™ÿd|4§&‚ ѹÜbºyãFzçâûPv¦»m+$:•€„¶kO6ÖO@C€voÇ*[&aôb¤®Å@¨Á°.$ a¨¯âÌŒt�� +Ïz×`·DKëy�À“g„¯®äɆÚK×?ºDP°3@/¿ô·SÆ€À¬«oJ.<†Ò'‡D†Ñ ?¨Ê*�uüW,ØvC0Næò< ûR Ž¢æŽ®¸˜‰J`²CXJQ~À8hâ¨8zH˜f�œPá‚9æh-ÈØ²¿3ÅÁ�X³H4Y  ³¦ÊÙ‹8ƒÁØBF/´P^d5±{ˆÒ‚øÌÔ5ZÂTVÊ€‚}¾çC%d«�0–˜Ÿ-€¥E×XFÐàpßÜ[* z‰Û¬N¯b÷¨ :l®#;f�1�¿Ftà5�,⹟“¹tªTh‚L~FÚ�O4ül‘¥pÐ`ш= Ü \ø\aàšš©+c{¯ ³¸/k¯òæu×ÁÏ…‘Çà ˜+ðœƒãÑØrÌV‡vœ¤ÅñfêS Úf©ÐZ¥èg¤eJ'\€£%œ0}·ËöV%Е‹TU]Mî$5¦F^[ £| Áª¹Ê5×Q2Å8Cf»²úQ­º’›�ùcÄ[}dV¡­¹äEÛ® Ý cÏTYSEKIoæ¹.óó ´}áü™2Çx_ú3ae¥á˜΄#HZ­nò™yÎMßáõRÏOç3�̃»-¸ÿÒmÐAì�Ù�î©ôæ ri<½ôÍ?�–“®£Z~^º3 Òý#ö-¹¿ <Ææç|O¥êkҌϽvö·t¢qïß?ŽþÎÆå뾟}7{ÏúûsôÕ£ûH»¾æ{G‚ÿ]×çqI>ôñÇâ~Ž·½ÞÏzx�#^ó3þcý)_ð½`²Nk8†/½øïáÇMZŸäÒÓŸû2]B‚N½�ëóÉGŒã“/ðÜ,y 3нgŒå¿}݇Az«N7 …"”S9ºÁ6/ò˜-Ðë9ãÄL8bxôè{ñåOüã-BiÂ~ÆLu•Yéü-ݸf‘´Áó£±+!ç©ïpŽßP²jtÀqôÁüÄí”›GOðy¾ ¯iô˜‰íõ÷öfÈ�„Αed=Vct6à`/áä–`<«K Ž�W޽Áe‚ÁôÊ,=vWùâQ'š"žá÷�¾y‡ñšáÇÑ Œ¥ˆ Î :•Xu×ÛÛc°º¢cJƒ*7?²ÌÀ\œUŒ¼0 Í–­r÷2ƒÊTåœ÷[€çÊ. º«—/c|xÞYJýýƒ¼^AvÿŸu¥¬lØH÷éFóð¹³¼fj’Õ�›f)Êk½È«N*ò>¸øë½—ÞyóÍ�‡½}ý¡;&&&RÿÀ`B£Ãw´ÒØó†žµk; J’fÂéæõ§žþlðïƒ!Ä8~[þqNÒ¬:PúÉx˵þÙ|ýëš»<¡^tLkØ"òfv‡nù)“eŽÿ§�Õ—•ý›´aî ßE.PA¢eÝøöë­jiˆ žúWY‘9Ú®…òáÿû•p\¶ù‹sÑÈvUߨY©ûÉ@Ún5Núڱǘb~½¨ô!©ñ¹žÇ ˜…¼w"»{àfôÞ½°G º NwÌúh ¨#0äµä5eF8çTv™�i+fí<�u¤giß½}‡àõ}ÀÝ®pê·¡ "ìqxXYáõÜm‡àMþFˆ ÷=+™l j@X›£àïÉ'�Ö†‚vÎÐÑ©Ò6ÑþÓ¦ÚÁ�Ðþ=þ\ ›îõ×_£Bõ¶kqÂa÷¼¸·Þy7k:u§ÏœÂ1ŸM·nÞF®¥gŸz’D¶Ç‘ƒœ-IRª•fVL)sœ‡ÿ)+Ü[ÛÞŸ={&äüÄÔ Àöt$‘*ë9ƒy|b*~ìŒå^øyÅ ¬”a ‹@»ÃÃÃì c†`i#ó�>ö .lÁ¹ÌUn髸câÆµë7ðEbÑC}ý½ÜB�‰ÃÎý¯ I ‰NGto²îú&vç*jOÅ×l™öÎŽ&É&žhWî£Áb-᎘÷û«î]åsê;ºŠ¦ÇÏTQ9ß‘^¿¼”^íb$#iéü¬1Àmklm§5+€zyG¿A#H–ykWÚöÜìj÷yšÙ&€)O+ç£â™» ð ëëw*Ù7íìM|ùc Ýç±_Ê{¿«$� Ñ•&Ýß}m;èÄ5trÌ 9dyÖò�±1&¾•…8Àòu¼½Z‰s`»Ów©BïïkK=´î>w|)½{Ýjìæî\òŽ×µÃqÞÂÛxž Òº£§›„‚E€’ƒ{úÒúÅÖ­u-õédÍ™ôÐù‡ãŒðY‚͹Ü<ë陵9aàitšg„æf‘MðDw_'IÎ$¤²ç§ÏœŽ¶ÿ.® uh™»¶åÐñ¡ôÕ?üƒèP¶J"óõ7#x!í×Bk÷šL#ýº6êàMh®¬ ¹âú£ë›šš°ýëá¥yþvíö¡»ê4ÔÜ’ªž|,�zèLè:ÿò¼6Œ~±ÄÕþÇÿù?L—?¼1<ƒ�B¿úC~‚ì«AséPÞq´õÑ BHÃn8áÎ6?ò(Ú±òq¿'Ýêßutw¤?ù'’f&'£bßê‘Eæ¬/ã•�¤ãóyÐ+ßÝÐPVq¡°ôiX–’ßþÏ8¤'y{rl"}î‹_L_ÿÆ7‚·²SPP>‰¯@ƒÚðÒä›?üaÐ�ë÷Ê+/§q¾ïz¶�œn;H”W7¤?üão¤s¬a1rÛ3U½7¿²û;îÇ}dá–ò�îµN°¦’Šƒ’Ò3Ûú÷çÁXä}INÇÀÁ§}¸%®§÷'£�ìoÿͶ̫JN?>éÿ+>òÿÿó)WÀý…Ö��9ÜÇW‡Ï”’â7Êbõ˜­=µ›cÀoÒ�PçZ™í}´ ¬¢Ç)-´3A ù’€‰þ²òȳ´³ÊAhß(gR ¶À¯¼R Ö ÓÁx©ãüRxO¬CÞ�Ît¼t•b Šr�7Ž1ûÑ!ÞËqB¢qeƒ6�Á +%²-d­r°ÝŒ–ã»èæ2ÁWÖ½FŸ]Ç=ø¼ÉJÒ¨8Œ2Y�Z>á½²ûLÅÖ³}ª2Äà¿t¾™Bµ­$QF™ìk{R2‘õàpÌ1Û ã* ðÌ’¼°²ÆZ€j#Œ69Ñ$«h;ÊTlÛº п�¼;vl=I…9zI b;±<±ýU@Õ·Õ‹êò^„œ“WešlæÚ™ô´AQ"—6µ; ÀdñwxϪç<Éxí$iRQW�܆]R¾òý]tƒmu ¨XAêQM�n‹Ál6ÂÞ.Gˆ-sîy �kuÒ>v�G6Rùeò¼­Ô)=JóØ�•P=²Œ$ƒhÊQ=dÝé=öM¤â,u°O£•ÑvþéTRI`ezš[$©�êÂ.’¡6Áœ›  ô ôÍÄËìGY•�]p^ügåZ|V‘ÚÝLŸ°„y­¥‘®œ�¸mìqàØñŒ�bb'Ð÷ m-LG[é<àx g`G‹jì�®þ�”Ç�Îc³a¦íE²)8—6í˜u_/t²EYʸ—É{TaW5T ±wØC±ÔCxª„Öïµìß&Õ &†TimÿxÀ_…ìûûYÛˆÝËþˆ¥·uuÖ;Ê‘*vl‘ë8ëWÝÙ#IÜm�ãH:Hh#Ys™„Iê i|ÈyÅ«¬‡I6V=˜èh_‚7î7ÏÃ]ò%ô½­öž ¥c�¦Ä íVàyÅÒÜÝá™�'NÆ}&Ƨ¢Ûìü’þ •ø?¶ž6éÃŽÚ•2 �8¹`e‘Š÷ík³q�HÑc|'@IDAT.-§Ë4Iß\KzÚ£�ÑD`èâ„‘ÀÊþ˜¼e×} åt-ûþ ëg7#«‘½¾\ŸÛá1;ß];ûÙd�YZaRè]ªÄÁã\`�&ìX5»…ì�fô5Ë"q²ý²=’nM<á«ðŠ>»þBüo©G›îåT}›`]Aç>I±Ëø4Æ{´‰ƒÖáãt• î–o™CFí¦cƒèæZ*»)®ÄÇlÁ�»´³•´¹ÊëK 9‡ ÖÁ.ÈR÷ÃsÂMÀr¥ù‡Ïô¦�n�àƒ¬¤îî®4Màû‹ÏƒïËÓÿþ¯¾›þáþ.¾Nwºx›XÝó4È»‚,_&yÏ.x–Aé—mb«Ä�ðî> %ùªæ4¾Yœkòé…‡LÜ*N£séî­´IâZg/¦ó¥Ì”¦‰6ÛøÔ…ûiíÞlª&ùm¿´Ž 6Ým ’':�ä ~Þ¸1A r—øÛ~jgŒgÛM^¶ÛËFºqo.­`{@‡ÕeÄȸ_=2¥]YŒžœ^9Lão§BÚäKŒ•¬Ã ±ÀKw–Ò…CRåÒ»ï}˜â1ì ÅØ«ÆZÚ/ÝMŸ{¾*}á³�Æño{TjÓ;?lŒI’±Ï>t2éÝC'ÄO?dÓVˆ“6¢ å× è ƒ¯{He|*¢x ;m{‹¸�‰ãŽ™û�ø`Ź]FL¬4ÑL:òH ±£èæÃ=ìDbE·#Ú«èÿU°®%øb•n›y:#�\ÐL|4¿jL—dº]¨g�Ø×<…&Q¯Ñ©tblœ¹ƒ7 [ÄÔ}G¾ øñÉcʰˆO²N&£•aç¬a÷«¬—gï9ÁõÖff)Bö»G‰ÇvÂ/+¶ƒ«¥ßZl»²^2$¯ßº›f¹€±³sÓ<ÏÀ�‚‚Ú¨Ò)ßg±ø‚m;Œvµ›®‘Ó@Ð:ªãpvË‘«àr¡Ír0Àg»…ÖÑÅÚ,Ì9ǹÒÖ ÊV7Û.fÆ`iÄñõ<É·ß~“ÊÛSa”ÙÐÌ�ŹÑt�‰'¨±Ša:©Ó>5Êb¦tçÖ•tá±§ÓWï÷ Î¥Åà³í¼ßÛ!‹ÎÀƒž£°È\Œ´Çûüߘ£(_Ž�>ÄZmhm ØH5_ñÁº]6T²ÂTг…_‡±b…^œU )få,¼ L§cí0Žq³KW> ø²–=ÿDúݯ|`ŸµÔpUù+èꦶ§ÐÑà¨!ëP@O&–)l»aEÂàÐóH0pC6*`KDRJö®l²@à#ÆÆÜ]×@lfn>ÖD°H¢›aœ2-›m9 ˜V¦äa ·< CÆt¯<ƒÈ ©Z’¶vYª2÷¨ÐØ'à¶ÁØæ1üÍ\tl0v2ªÀ»Á'ƒk ûu XÇeå–Ì X#èæWã{:bÙ¸U¦*%«.¥™½Œn6QÇPcMú”ðU´y=÷1Úð°òfCšUf2‚FÒ´å 9&�÷ß ™pL¹Ÿ¿e(ßWq¹aj"À¢Ý ­f|(ôÌ¢3ø¡Ñ$3ƘaPA0 =.c;€BFpE+NƼX[ÍF$kkÆœIÍ]ý©ðÌÌæ<û&m¸‡ñ£…Ï5PL ¸wûvÌé䩇BèÙö«�V¹|£ã#²�.V�o¬Ñò�çV"åw=£åCpÝJšÛÚôv6@k&ݦŠ£µ£ @Ú^ÀA’êP8­´ˆò\õºFÏTÌÀÛœDé•�wÚ Ãµ~Ù€Ê-Ñšt¸Âl-Û‚(Èî ºrêȾVøm’µ­¯‘´H’‰„*8 1áú ˜Pãî™!¥p|æ¾–ú†N@{8JùK;¿è躧@* ±,›‹±Â·^Ó÷¹M¼o&·íL¥dtöu0¤3ùÍqY™Ntáõ²d�}¨ º´Å¦¯¹_^WzUnûY•@R¼¡åýpà>Ê+ô½¯ã—5š•/ŽßkJ ^ŸEàý,0ŒÍ=äc?ç�ã¾_´�‚B½¯€„ü)â½ ª˜<¥0SW_ Í0¬š�M �¡¬ª;KLpâÆ^�qÅz¨Ùù[ý�#“}u}�€S#û­cíçÿ΃±¹Ÿ®… QuЩJRZ«©Lq|8‡33 (B+”†•kk–ñ'òq8R¬‡2ÆdÿvÜŽ/ÖÙ ¯² Ì—$'2û¢`û‡ï¿Ç˜˜3¯CWù�oE+óçž~6M <âvVzïm~4à5¤¥!A\²›z ƒï ´”[½{/Úútp¤Áå+w#3½‰À•›§è¬@&­rMèY0itJÃĘëî²Ê“ŠÐrX+³G Œ‡aý[ �ûú¥?„n *uu’‰G…/Y¶*¶•¯àÌÜü\a>‚½ÝÝÈ|Z®«s¡ñ¡Þyí/³^TA?A ü\Ñ#vCñ{¼óv¹s3@œ3?Bæìã2Àõ8ûMÛ}6Æõ·"u>7CŸL°òœ=Åæç&³3˜qN¥«4„<>`{£½#Ðc•Ì*—ëÀýV=œ’†¥Á3åB ò>øÜ7ƒ"(h+oÀè¼GÔ RÊ%ù_£]Z‘oâÁGE• KØKs1–É‚>À¦ˆl·5dª¶ˆÎ�ÁvhRžýÕ<²À�¶@¶† (šËfi›¨uT!2ÞqE–=¢äüùÇàùµôæk?ˆÄ“äÀÈý*|¦ÒW~ïkÈ.lºàÕ:ôº/å”ÿÈmuUèžûðížñkeÑÿù§ßd4gs‚ŒÚe=ÂŽÀžu͕ߙ¥�£ÍúÊ›ÚfÚsG-¨  )ÿ¥%�åxì‘G"1O`¢’öOdciß… ç=(Y溓ÅÏ~7¢›Ï.Ÿ¥ÅÚ²´*dbÑêƒ$C€jå ²ÌVü&C p”ÓqlCZPr�¿@Û„ŽóÚ˜‚]~Ï9šd#h¦ljä{èÌñôö›ô�L~íiõž`Bè0æ¯î y�“6I*×Àkñ™“§O"[úœ ¶ Õl±´ðdOÌæGÅùVÖÒ�ñDâv¥I±Ï?ÿ,:‚@kÁ%C_XY^„þµA�œã=´×KÇ­|â;Øe5ØÉf?kcXYîûL.îm çØ™0 È øÌ@#YÉ„EiÊmbéÌ€ô“'ËÒÉ“]iŠÜãWߺþ„ Ÿïi¨ô�ÌÚV_Œ5™WzuoÕùÚ•¶Ø•c­pèP‡;±Ð_\K]è"ÁŒßΡðf'ಬm¡Oë}äg¸zÒŸob{J�Vh—0[iÑýaSbL¡û±aL¶*]ÛV€%lÎç(ÅÞ4áÚjùÑ pw $ÿà­ëé¿üO_HÏ=¹ €q=}tŸj,øÕµ2©Á3ûöÕ™øŸ‡5‹çFÇÒ{-€9~óvTr˜Ôf›[ýÏxÓÆdTXª‘\b»}ÛÂiO{„„ç–Gå´<ʸÝë×o¦ÏÆ>öööDU™àš Ÿœ�Ý©æô €ùul˜%€çe@¦ŠH’Vçè¤#8Žð3 i[{Úª™'O°ûø¹S¼¶™>óùÏq´Äcèv:1ah+EàŒqYåç›Tà™å�<þh:~ò8 ÅZºôÁ‡é]ô´gTv÷ôDÇ™[õ=CÕÄÆÇžx¾(I¼ÿ~ìƒ��¯þº5œ8 �DÛT|,ùÔŠ1÷I°Ü{ô·Õï±3gÒñÓg¢Mú?Hño¾•ª›*°[%ÙëÙYª¼Ükls3ÿõÓ²j!hTº€G¤¯É?Ì  _A:Dª¤S'O¥Ó\_Y,_›TìãH_.b«e²mƒêûÞHÆ®EONp:Ô�{¸n»Èˆ?üã?NÏ=÷ tÈšhû yû#ÛBºýÑçì™rÂßxT«ÀŒ1ìê}ð7ÿÄõt.®‡¼ï|~ª½ý³†ê>Ç: —ã»üívs­‚±|ùËó³.õ«|�¡…®¼ ²áf¼ô›Ö/4å£ñ~¼”G¯üìËH—h>l0 Äà%«c`°ÐÕ‚§&À% סh[žñè-+BÛ#YucŒla6d°gJ/j.cˬbw¯Pí»Å5åw’¸PèLƒ‘vê°£La)Ý,�UêLmvq }ø*lžy°Å9°%»°øÐ‡­F¶·ÒéRH{Ëä.yXØ òEZÕÚ52O¥·"òÐÖ¤t®#¼¿ò:ï»Ñ>÷óÖ.®~1óózÚnêmmŒ86‚Ï©GôEÖ8ª†û{Ü‹-mO� »Aûj� 4uꦬ �'ú[ÃöZ#xêÙ§›€ÀM‡P-|6Ÿú{;èDÓ–nß!!Ýíy§êr�î*C‡ÙÕäH“œ·sø¢®£‡êj¦ïôØ7+@Gi2;Æiç£Fl1ƒY¥¾-«³®cÚP©Ÿ`¹6áèè4ûB �váUàl³‹›�#ž>ÞÅ «ào“{�ï õâkÍáÛ®Fw¿&dâÍ[Ã\×à‰v€wÏðq ý»-üQ­•Ñ»gi[=8¤{/- ¨$À®�ªïh5µçmWa#‰_èO œ›´´W ÀOU|uM~_K*E§�P†NÌ*¥i1ŽÞèâìw£ «$GmÞóŸE.¥Ò öA•í•TMš i@ÆŽAú¸‰ä�âÒ,¹ª­³3lFiCüi�ö¡ë¡^üQ>;:‚ÝVAò#¼b‡uh 1m[Ý�˜n�Ï=̳îÒS‰¥¥ø°Ó|¶ ýF¦ ·E�¥žÊý�NÝ¡Wƒ×Sìó>¶lx8EÈq|áîÞÝ—ÁUÒ-P5‰Ä ä1¤e±ÊhÁcîµ l…œ•NáÙ‰sC$1¬�Ø9“J™ëøGq�ó¤¨ûÏàŒÉ�ÊEqÓ5`LÔ·ýuow'´ºAU9E5&0€«mH)oh¬+§è̪Ïh‡¤z’B´«ÛÚHœw÷ïꢳAÑ;7黎ñihµ\#ÃIµ5 4®,³?¬wkªÍRŽM¦Ü9$¨£æÜ �Á©— Û]xG|6Ãð ¤g6PøÈ4kpåi~ñÃõI¦°¢�TÚRœ´å�Šð �ìcòµ}Ñëv30 ´ÈóHBäºÚ¶ì�ûjâ©Ø�ôj‘Æn)û� qíì0¡½oÅoxºAÅZ0”Z’/Z:z –3™ý,¿ˆ[ƒo’€j;áx ?·—k  d!�Øš®³ôùË>2ý§}MÂrǵÎöâÁ}Ù ?øÞòNŒœËƒÅÔfA:lÿ&øû,~·ƒ†Å`ùa0мSÞ2ÇK7FC¶‹çÛ=DeòL}=…ŽÄ4´‹í<ÁBðìPº¾a«^¿y‹**•áõƒv}E$QÜÛð%˜µÇðª"é:UviëH3%¥$$-ÓIŠ×‹IÝ šµ}%Ž=Ðßœ¬6¶HÔ`¤Ç0 ƒBac›X¦ Ðe©ÂÉŽ…pœêñ8ªä‰¯x”±~¸2Àvî€MÂÓʈy[ˆ¢�®üjå·øœv™k¦\³ŽÎ)¬á#>K‘>L$z «ÔïÊ �;Þ¥[zöz&æKŸÊ'mZ“OH~š#©‹˜—>¨þÄ}¢‹{¬Se=8Ä g…?z²�`­é;/¾œžyì1*¯Ï…ž}ö!âQkûi~ ü’d7õß:2J[A¶]}~KŸ÷à‡"‚ÔÍ=HKõÚts,YuúZµHÃ3k©�À÷y¿Í«Ñ]WœîæK83�únüúÎVÇg,ØLÍt i¯-L÷¦à×b:l4ö'DY*dži§ø¡pñQĶÍilýËýL¦VP†? }”¢7؃MÖ£Zš“´@BìQÿsfe?}ösϤÿðí¿ŸâùÇÓëo] Z´øðí÷n¤ž~8=ýÌ…ôîß }"_Úµ`�êíÚZ[ósd:È.¢[ËÐò^Èe¶²oZpÝŒ-UÑar~@g&O3fª¹�ö“ÈßBõ»¼®î@@ó¾64L¢—X>/ÀSÚÿNkÞò;hX¾Ÿ³€ ˆG숿íLS\ ¯Á“v—Övà»ÃšTmo“oôsMœ_åÈoñ?»¬”rn})‰ê|FLÔÊmí}�¢ÀT È(9d®è¨}:¨nm¿ »Ç,”ñýJÎâ.¡¥|1ºh†=³È²ƒ„wYĺõëÅ·� ]hËhS£2X_?Ú#ÎÅX—²Aù.¯õôtSÜÒ .&­ìqL±´`§WÇ\Lò‹]ëvöЧ�& ”‚ù˜ÀX¬�cæ¥Æ!â.6¥§ƒ3@ÈŒjåÂ~ùÖ(ÁZ…°™*Û´x©xGã…àŒ³,`Ʀæ&ÀZ Ô²ÂBÁaPAHÅŠ¢^²ö$9Š/r:ªžsbkË‚b‚ulà4­ßë4ÛyO×3<À�0ñ³µÚ»»ÒÀñ½àóiçxßPOÕ. �­µ¶·<·k;utuýÞ¸7MBL_[3Ð[7ykoVm)Y‡*a³~‹XC ��Ex´£¿½½ Çb*œ«Ö¶ê0†"y�¯ ãBÃVeoõŽ­U§qT[º{¡ëeÎ*CIÒòÖñ›e¤ƒ]‹²7X/»Ö":V�ŹOäž'ô ­ ˜âùaVx™¨â��L£` nƒÞŽ_ Ó f«~³Œ}÷~cI º¶¶öÚ:^GdD²g;3>ÈAGÚ¢Dªx�¯¯á”dLõÛ½®òD-î0V¶Y{ ( ‘{¯#¤b’¥f #Mä-øÜù*_Tˆ!*M>ÇÚª°ls®Ó%�–#�ÙuM2QùÐØ eë5ø¿2¹Á�w×Àä› ³×òÁýûc´؇·‡N>œ.<þ$²#k‰¤�%ˆ`ɼ\<äCå�QF¸�O»!xÝ䘙¿`]ç£Ç‘3Á’…b7Q¨•Ûgyeùºg½“¤-“8¤sïã5üíãG×`<Ùß™ÌÏœ4)cUuwe¶çŽÕ8 ¬Sê8V«v®]½HZ�,]J�<ü 7Ù9ŽÎè –Ò‹�ؼfðÓýŽãEü ã6Ø,È=3Mb/A¼‰‰é��­ r¹!ò…ú—5À.ôµYl(e�²½ ›U™i…ZØûèÜRì±B‚ L‹1àÌóÙ¦3†°±olË>ÐßCûÁ%d^Öaj›Ëû™`.�Ú!$ÀäÓ×Ó¶$âDÅ :Ÿõ<„GìÎäõMŠD:ÖÖ15]å‘ëTDò'ã² ™NýC}Åéñ Ø{‡-éÿ~ãRº~í.Ý_Ú‚FHŠ©€,Ñþ•v”ûžç5]oõ½ôásn6G¬/´ã‘öH|à-^Æf`î’4ª^¯Eš`­ .¬�ŽÊp0¥WéE4‘Á‡{ë}¤mde„dm{Â-èÝ}òFþ�ªàý^�_â×Åkz<‚É9GÚc‘ت¼ÁÿûþKï’Ñ?˜¾øÔ@úüsŽçvº7C[;@£ü6~Û˜KÏ®¥g»—p?éS`­ Ûp�ϯŒ�ϨÉú•°æVÌ›=/ÈcéÐ}<ýFñæÞ9´³Lâ² �¼ÝÒÒÈç* 3èˆï›�t…||èìÙ4JÀ@Àm…®Ò�2$[;¨€…2h.m›Ôiµ•öÁèȈ›2¥�€ÉÙGÏÓå‹ }äK€¥Ð—UN‘tâ|`@h\³]®Uƒ¼hÁVb¹sçvš hïºxTZø‹ÐZ´We¯Ý}Ï�{äù'èÜðÌO{‚À9ôuȦ¸FÚÌÞÃ=Ó_ÚeßVlõ~öܹôÁ»¤IÚìW7g²Ü?«”‹ïñ{ƒqgvlv¼€]Æ +îå:»Fòp;óu}´M;±_ô‹ÂÿCÖȯê¯i°G»eon›ânúþßþ ë7 áçq¾-Éh•5 $<–Îã{»o^K [»T–ÿÙo¹RbýñÇ‘½]Jð+h‹µ.,ÿÉOþø÷~�ÁF±ÆJYõ§{ìkŸfŒñ9çÏç£Û‹áZ('\˜£õñj°Ë/ôø´cø….ʇ½®ÿš€îž8F'kòºÕ�ÒÜß÷‡Áí|éT:þù��W’)¢Ó·S�I·È=’¼‚*“¾•çú”ª&4¯L6AE{€Vžà8 øË™ú)QÍ o«K JªÓ¼†¾Zè0yÅ#a LÍÒ*ÛVÖò�¶�rvÙX�}cb Çú1!øø‚ÈÑ9ÚÐú£Ž²J±½¥ qj€ÅÀ�ãC÷a(owóèkpˆ[³Ç¸|V°[YÖuƒbyNÒ7²)ðìljÚOÂ1ä ÷ð·ºÁçsóiG ®”ç�àO T^#À×�ÁúÜ$sQMYDáO �nÏ��%é�5Œ6˜VOá�ga[¹¼Œ?&\¨½ÇOÙŒL9mâ’{²˜I¬Î-á›qàøá*ÉÕ%$nu„Wgx·°‚ÃöÈd­òÎJY±Ïm¶šÒö¸Î§ Õ aÙ½'ûS í±’ÀTubkˆ¨!ˆeGŽ*Ư¬}¥íá™ÛvPžûˆbÖC¹ß6ëyȹ5’—‘Ùž�+.rÀ‘2&C4èTÔ°JtœdOµÄøæI¢Ú€Vêñ�Ål,ð ]ÇxëwöºÃÃ�Ñà#Ø©e?s{›Ž:7©‚½YýJý¤¹yº¸��îÜ‹Áf¥ ë ¤3uˆç¸6á7çÁDç ¾º°ê—<{KúY$Á;W‹†jÀ‰Õù…Øñá*HZË$ì‹'åàÇ`AƒrÔñúC;$\˜`æ*¨Ì¯'Ð>ÇØ<§wO Ûéà�÷ì­XÍ2þ­í�«*éšÚÖx› îa)•‹Òè:˜º8¼Õži»ã‹««¶@Þ#�T�êË©Úd шyW�Ø‚V¾‘·LðŒZ ÁÆ'&ƒ¿I«X¥¿qß]äOØ—êÆ }©g \iG›0ipçY+§LzÑ·°Bpumü{™û‹K#�%ÙøóÓ6PWaµ2* Ysþ÷"hcDÂr‹ä´5l«îuPáaD‘’ºœuÜE^U`ÿÛ"[~ÚGÎÌMÑÍÿÄ@,jâ(&‹<Ä•õÄB¶À5ò›võƒß™ƒ´oâp–˜¡�‡„ñ5æø¼â^ýR…‹o[ïyð÷Fh©ŽkÅ<$8~âÒ|‹‘ýü‡Ÿ‰¸ úEê &Rí|ôˆ.»Ìj+áo^MûÈ +ç†Ç¦B?ØLúÑ>Ö/°û¹“ƒ¬!¸:”ñ3ëú�f¼.Ï‚ `Wº‡|ÐýdÂи,:I<þ€µ�–ñH•VRpƒ¼q=mõ¼µ±q"»óptAgW7-ÂéiŽ׈$Ö�G¬í¶A2È}çÈË\“`6r¥œNÌÛ$ÒÌÍÓQ LαÈÃÊ õË<¸emMV·ÀºT‘`*oŠT ›Å2=zã°‚nt$ ÙYnß½¥«/ÖLœ\ž¬Aæhïõ÷ÒÙ¢µ:½öÎux }IRž*‰½éý+7XÃj’nO§©9޹ç¬CUC[£rXP�,ª¯ažð³6‰ñœ<‰FÚÜ[È‚“=-Äl(l½=mKu|L’ñzê‹Ò…^Ú‡£s‡gÁÓ:²¨?b} }‹ m«ÑnßI“ðÙ>2¬«…¤:w,Ô¥ŽÓ¨£•{S ýÈP9­Í0‘#QޤŸ³²ïŒ­à¯Û„ 0>Fiø8G£TÙ¤]�LÂëf¢[-2ºŠî •Ä›k‹Óg_x"ýå÷ÞH¿ó…f :Ò›LpŽê[XK#cÓ$ü÷Q\0J¡ìû‚<†LŒo’ÐQ�¾+.ã'N„â±_�fRò!þRš` ÷Á�Av]ˆþs¯ÕE„òÛ®…b·&ù©ÏŒí"wÊ@ë³{´Œ4Âc~&¡—™È!Uóºt:?ÆkXÔ,í›´G/èŠ.ÝÈs»1pXz§c€~ ÇÀ”£ã, û ] _F,^�ÌI˜Óg³cÔŒMÿ# Ø#ç™‰Éø•ÐË>¼“ÇW¦x„H) :§Î=ßì¥Û—ßKËæ#v³C²DnÅ.ÊIdt¼QHwpd’˜“ø ˇÍ�þ’Þ‘Ý==èJt0<¢n2NûÑà¸ßÉb|+ˆ5b£�ÛÐb^9­½ì|L—‡üŽ-ó+vàÿC|m³ÇÌòj㌷6„¡à”Õ‘f★gÆa3ްÄ?z÷*Š‹vl\D‚Ð0×°³•…çÿ-à$/bÌä,es Ö´$ó\‹±q‚lh£…bs œ7À»H€ÌÖÎÝ}dŒÐ‚F°¡°ãÚÍ[õ[ ™—LÖ–‚i„0³ÃÁ!­†¸§àÁ„ 1ÒGæùtn-ý»¿øs‚Ád2`�+°Ì¼Û¡äêÏÂѰ=$ûÃñÚ_#IÁéæhŒï°�:è84‰…Ìc…[!ë –83°×ÄO¶wßèÓð·’Ö`˜Áw7ûבȗ70 ?ø=MP¡½³›Ê’“d‡NÒjî%Ói0A@[¯A§JÚ#(|¦Æh£SVQM^°·I»¼6Ö òFºué]Ú @»iea&u6Õ#³ �ç�ܾ”^¯¨I}ƒÇ"xQ†CR[A¯1`[ú¿yùo©„&À)ØÂú¬À¸b0ç ©H̼Ӱ9ÖÛIkì3á4}÷{›n�ͦþÖúp\ ¢ocœNNcœ Ø— ¶¬#ˆÈà#³IÂ5p,Ñ{Ía>×G¢v~|mƒ8‡�YËæY½DsÉŸf¬¬a€›ÉVÎû\×*/¬ ÿ‘ˆÐ+ÅëPy-sFK†5teÆ!Z+îážÌ 8൧Ž|5sÍBª"çã¼� ÎÙBï�ë2 j‰`ó.´°�›âZT©�EgP§¯·¡à‡ÒÓ©»yù=¸Ù–$ÐÊÙ±­“¹¢ò‡Aø Í‘]stÑž¦à Ë� e>ݾv38T�p­3§Òíáéô¿þ³ÿ9�yø¡ô!¥ÿÛ¿ø€ó×" T ÚùˆMŽÜãžd( t„3£[~úÔZMžIï½ñbT«j¤Ê›�<€�À=JXË-2¯~òT$Îí’u6khW[êVÂ��È€qÖ‰¤俉Qêù±Ñä…Ýjƒ'•‘:Ds#ì·`T>6–×ì.R‚áÚ„ÎÏ3�Ÿ†æSЋõ[ôP&„³ ý ™Xæ™}V›¬h›ly9‚ÔΛùÿºVvФÆ{†ìm‚¤¶Á³uu/Á Z„ÉkŽ™a2¾#à]Ûê#å)"4œ¶zè³6ÏöÚûè£Qû྾æúðO¶ïGzðþ§ýå¦GOT ¤5Îs{õµ›é‡¯¾Ç±X­1f×MýP�¬õ¹ArÇ¢C,™FV{ì‰Áì¬[MFòú$¬�óeÝ}~À}M˜0Hê:º†‚—ÚîÅaTÙÂÛ1ØÒv{ɳ¾{t]RGêàGU?×R‡eAPö €Kõ½»Ã¼ÿ²_áüK_|F‹.T¬Að³´Ãåì´ÇòØxg% �íiÒ³ û4@hÖ\Zp\\%ÖÑjSi«;Zºl¡Ú¾»§—³go¥UèÇÆ&ÃöÜ—®¯\ºk" é÷YÅmDÿÀ„÷îð�=w X»£`¥|ÀdDdØGmO«6kS_OWúà£÷ÒPOk!0É ù Þäóv»bêñº|œ½Í½Ys r(sLV|úÙ"�áÞ�;ø0k�?‘È͸†Ò±ö¼Ï¯ö´¾´ëêð-Tz_“³ž~þÙtá‰'°gà}ÆŒDеä±nüÁX¤D).{=÷7b2ü6ùÇ¿}ðÁç“¿Šc:Jj‰[fïñþ'‡{47Ç,½„ncþÚÈ>÷HH“ï0_}ŽX'tW\Ä5ût�Oû¹Owµ�?•]—qð*bÌêUd©ãôÅ¿Ç×^^[&©~�ãÛ�õV湪ðÛÑÜ~| ¾šíš@ÅE$¤B”››6¹VÌÀð(˜¡7HTÛ@Åy�Iúœµ‰ü0vi•*4äËgi¸° o�HùGòž�›'!�ÖßøRú›‰ Vì󼊱zG_U{Áy¸>ô…íVýd¾ ¼ÏŒI& þÞ@êÿܸ}/݉€X;A z‚¸ò¹mUÕ—”ÓC�v‹Ñ–ÑNFÎ)Ÿ±Í ä{We´-¶½•6C>)‡™ˆòOðWY¼Öà ÖÀiôoj`¾øÝ·ï� €¦xƒ9•W"¸¦KóWI¢Bm‘0^Èšg]Õ±ú¡Õ—½==Ø´ó&X¡<)c�Ôke$TUКU= ?%@¿�?7OàÔ,º�€×´Z¸¥¥-æ¤þ5ùLð×3<µ%ÄëBP  ½„éŽ|Nÿ�¾j0šÄíõ’¨³@ŽgüR1BÒ2üÐ%žÕ»»Ÿ$°1¦'&Xw|4|WÁdåi*°€�õf�«±ë'òãÌšÑåV©Ê¢ · \ŽU^؉  ŒPÿY¼Á@– ü&6Z8la8ôjÇ•‘‘IüÙ†(0Òß3À¦þ]*¤%úæ.¶óÙ$0V~@B5Ø›Çú1yºÏMƒÇ€ŸvB“ØLŒI}ÐÔJ²_-¶ºUš¼®OjGH}~¬ÆÀëë“F0ªº…‚l‹p=;Å5� ^â^aTИé¤u*X ж·7C¨N£c3q­°÷ �øb]5Á!tù!º×óÝW7 4 Ñ´ñ÷ R‘âÏínç~.ß¼ õÒñ¼Ö rl)�Ì,Ç_Ž*[èS»¡–õ�Îï/PEË:3öÙÅ ö¢’ teQ c\ŸÐ¦�*_ÆZI2Ãôx°KGÔ.ÑÈ쟫×n? áÃÅ<éÀ‰�°Îz1Þ6PÅ ��膹‹ŒØÆž0´ÁŸÉ‰ÕQÙÚÆºh£rÜ&ÝeóëÄ8”`óåzï (…~b\>¸ìå¿G>š¯~º‡€íüîþÝ‘4EW¸“È+T¨‡Ÿy!¾ösÙÚDÑ…ÉP娷í ÑúrbeÊ{íGt½lV̉uV6".‘ÉØ~|?ŽÛá;Ý$*U„óûag…ÍáU¸Ž¼ –§ï*=mút‚yÙÁĽӶÓ>×Ìo@£uèÓîÓyÁ*ÔHº"¶DnINëtMFAÈ™ýtF¥Àk퀠|ÚâìîÙyp1d—A·òŠjäO¦»Üç£?àÞøÜvîâÓêD‹?´y¥qíË‘áÉ2Û%³½-—ú{:Á<9 ž´ÒýÏŒ`ªkÆ#–…`‚ÿ€umƱÊAqK ¡êê輄Ÿ"6é^ïáÃé/zœ„~ò(Gº™ôÔLlmŽ.Re¬ƒÝ.y+Šçäq»’šToÑ�ÅKpvŠjÁ+jÁ'Œõ‰¹•âçÿÂcµ=óø1x¬w4ŽëœÈm§ß}™µ·F—ª»é�¾ñÕ´‹,ßF~¢+i«íyÝ·¨Ï-�Ûx²‹•vƒ¾M <¤íXU¼“äÜm:ÆÌåèø¹çñÈÈib.RÒȼÉ2ëé\_]:ÖFO`}¿®�õýÍUé.mØúÀ^6Õâ‡éx#…Y$�Ý™'Nüª’Îuº÷Зeìëä4GM[ÌD||v5'Hþä œ–èf�Ýñ*ü½}:nïÓ9y ¡ºÂ±‚î;-”S8e9c¶‹Ìøô2ØcSú xÄMb (¨º6¼‘ÑM…ÌñkÕ†N;vb Ú’ïÓ![lucŸ±×Ò!f?°öü(±Põˆ ãÊCeôÌÔbø®=ƒÐ%Ç�‚ËjËZ쩟§½§�.ö+Ÿ”€k˜Ø]JÜi·ˆNDÐZÈVFoœ2æO)ãì �ÉÚ°.‘ÊsÆ�œÖÛ‹–Þµ›²„l1mll†:hOš0u`õ>?ÚEÅèêbt^~¹˜J ÕívÞÚ¶]<˜¥ºŸx�ÇǸ÷l1-º�¡tŽNB\Ç#ÖÙÿÛׯÒ)p€�A’ÇùY"Žƒ=…ì=ØŸŠâI�¿1†£Ÿoñ˜ö•¼¨L�Äu=|ÚÐÔ^ßBÜ$ñiå�¼¢wŠÖÔt.l_“áôÿ¹žôoÞûIeë‚\F_›ÏïˆOr«Ò|˜‰â*ë ¯0°bÎôZ‡Q¤4ôVVfRu9BŸÌšeˆx‹ªn³¾êêËi£B–‹ëÙ?žAcÀ,³\•qšÉij=”Ï5¼w·må„’(õ¬ò�=²fø¾‚so·2MMÍFÛÁÆý»£d¬•€¶@–¿€‹-\vh1eÕ_]-í�¶¼ŸUv&hr K¥©á^C@¡0ªŠLFú›a W¢ò~¶&ñ·ÄcŨÏnµN§U$ÁІËi+»‚B¯�(z®Ï2óÈ4 N\CƒqÅaF‰‹^‹€iÆ!QèoáÅðµ´Hvi!�Ä{×lWÔ”ª2œä|œ‘éØŸ73Æ�rÐ¤É Â™ 4óÓq©oê eÖRÚ=} -$x×U†’Uís¬[3Y@¥ÝeiøöÅôÎ/Q¹¼™>÷•¯§Çžy�õ@ aÄM謢%Q%Ùª¶«ŒÊw%¼ëb¦‡Dïü¬0ìá< ’'˜Kk#íIÝ m×�±ÇÙZ¬'üGvã…2À3 & li`Ù>ï‘ãý\åc¡qÛiáÔH&i8ò\«§e„’ó¡2²ýx欒¼@¥³Ù%h6 ø,ãF ソi(ò! g›§PD †Æ9ŠÍƒ4ì…¶Òéë¤R>œ1èÑ}M˜€je�BÚ$qD�¢@Ò°Ó8Èö‹×fΜ;Ï]}_03f�¿ã�–|7× Ùêbª-R}âQ„´ÈuÏ{o½žþ›ÿþHO=èƒ8qât¾–Ξ åkv·ópª¤]»ÆE´sãÎ7?|àùZ´¡‰Ö7_3q„¿PrhcÃ÷pX4PD{ÍЬO«C0²é=Âqþ¼ÝÌú/qà *`V1Fö8«DÁ½�X-¢³^I•´‹­ƒä^-aÐ[Ådg[ÄíÑŠMCzk…öWð˜É™ífZŠÙX�Ðlò6S°ÑÀnŽàúýûã" mŒ†IÎGU9˜‘¤ð—Ž ªÐýÖ¿û¿Ò?û_þyú¾¼hëêþOÿ)ÆI¼AÛJ¬w«f¢Ê—=,”Æ5|­œµHç}%dF¦@¬~7ÛºŽÖjVô\°E, Î÷¹÷ “}0»U°`ƒoÀêd“ðí‘á€ÀÐóÆO¯ ØÎÌ-Ã@(2ÙÊ [¥A_�Uyß6ÖUZF!c�MÒ&òN ÇÌ ze�†Š™g“‹ëмFŒmVP\×3î+‘WÒ¬aÈkìaÊ]£X>RV«ì4•�Òa=Æ–‰L®õÝщô­¿z9­òý2îc„çi}ã�þ‡0ûo ÜIX‚¯6X[²µÃS:÷«+(~Æþ?ý�ÿrÌD}®“ÆÈžG¦"†¤ÎÚåK ÈäƒvÜ[�Ë[wA[ð½U¢=}Yö¼õoÂ0ÃÀ†yȧ:î‹rQž´óŠó- ƒN#¡ºZ°† ?ò£rÁöb®£g… wõØîõ0ݽs�Šë%ø—³Ý¬6àfi @í3F«÷Ýu„m“רÜ7™ª96Hò„ü¯h�7Xí.L$°•œ°ä$ݹG=·¨0ˆýÁûS1YpÛ»ëÅé­78cwç9Î×;NrÍûéâßÐÈ+ïÝÔÖ•«óü­s89>Ê嬈Ì: l Ó£šž½V§_ºø.ɽÁ‹¶¤Ú`®y²5 ]#÷ÈL{eßýÑaDŒ%äŸÝI¶“Æœcvãœß|£�ªYÖÎn"òÁ,Õ´ç]‡ …-8Åm�i�LCeŸ^™š[Ä:>4ôÂÙá^û™ýÂý·äí÷\ð ±¹%Íßæë‹Y”U#Y0?hÒÛºGŽ=»œºÜ{ñôé}ÚÐ]/|þ÷Òm’r´q�ŸÄ¦ÔÃy¬i�'Ð+›û8weTDÓž,ðl+OÌÿ,�ĵä/yü­7ߦEå-’Qé Åžk/G’<È2…¬ŽŒ[æZ9N:­ŠÛè_—ot¼‡úÓã�_ˆ*Y+�ü®UÙÚ°Ê;&�L„@¯ÈßÚÁ®’Ò%D5]wרy:Ž/ÿÎÓã�^H^ºœ^}ãMl l<ÞW~LÏþgtW"{Øc%Â,€tþMBS>š æ=LlàRnÚµD~W�¹ßÇ� !;[ÒÖïozäÒwÿ꯱q锄üv!2zÐ�ÂdlÜ%] Ð84ØûQ˜!(í;þçZë,Ú®TûÚ}UÖhë v ¶iŸ`·øÝi@Û¸4¶’G¿ �õŒNLüN ãõº®� Jè3®çýWt bíF"(éÜ¥#A@N’ÛÞK9ã›¶–jÙNÎv«…ÏÚzÒò~czñå�ÒkóJjíî Z‹½`mÜ «ëJ¸ –91/hÈý¶BBù³f¥}Ǭ¾Ò^“Ã&÷"üƺ煼Wˆ�PBÐB�i'0w)öƒß˜bð¶õ&å…­Žþ{Àá|�ýd½\K³¿£3÷CdZÄØÆ¬™~‘ã5Y¨€Ï™Äê˜Ky]Û@¿ì辎QÛ¶ÿgv~5ýë?{1ýÉ?ú©¿ë|ú�ßåŒÏË×9’l;–J1‚B¶#•Ö˜¨Ý_Ô­WÚL<|G³É½+ðK± �oc.Eð»4«?"Àbb sµR¾°ù€1HŸÁ[´çÄ/s®ª.méÉ5 ]·ÃŶâ™§‚n¦¸5ŸÉ‚ÈÊù ïåA—î›ûã˜0ÙÑ×M¢\_$ÕîÒÎѽŒä¶ 9î-€Áx¥?uí6ô à«Ý$�¦ýòÌi’shÛ>•ƒ7ñK�#ô`�IÎD˜$H0¤ý+ˆ‰7ä6üw“z¤¯Kt?dŸ@†A–š=E¦!;ô[NŸ}ˆ³¯a#Ø>Ý®mÌ…½pNwÛÁ�>!÷fò…6¸òAÀÏÄP»ÇÝćy¯»› øTºzõ Iç§é–ód+òµòËõž#AI_ÁNQ¹ùǯ§gžz4�9{>0‰'ž~6=záQÎ=¬ ^TN2ýÐOlAȆ¼r…׸,©V9í²¶&Ñ0lº(ð慎ý>ÿÿ̇×ñ3¿ÊGðá�n’í«ãÃ`wúÍ}õÁãwÈ çÊëÑÍ ¦µòNµ£·9`¡»‡j�ÝŽç¿îd#•ï<*C»ÖÙ„Í“úu�è½]HЗ³¹ù41:MÀ€À-ºÕóÿÛC>ÔF)„†CÞ£ëõ™X¾Ê{ÈRßW`U„?ƒXJ+Øè£TJåØ{ܔ؈•P¶nU™LçY×âcvšh$AR^0‘Ê ºÚ*’õ+`^1�êj便Ïõ½•_â!Ò…|í^èã ð²S%wŒ9Š%‚Ñ|VFëÌÐ!£ßÛÕN²a/>1IᇛòMÊ”¹MÐ4‹÷Ä“�sÌÙD\ú‚Î-ºÄAÊG\‚Äø¿Ð³ë¬�j0v‘ NÛ~Z5/6PU�^ÀÊQÅ´†üµ�g¸[ò®’„²Š< šxÖö:xŒí­ÛÚÛ�×´ æóžºº~CÑã‘¡Îc]Ô�eÜw“ßùU@t°·R®éuÂ6rÿ°›ÕUJÆ}²% H æÂ§ã—_£@IDAT&‘¨772†Œ\ÂFl�ŠX,(æCût:LNL\'`Íž/‘´|H@©³ <ù.R1·‚|Õ_ƒÃ^QWçñçªj°ïѵ®÷:�&ÛðZ5­ÿfëo»•�-"÷+(¾bŒ&ùVA‚÷&Dpž5´‹´cÃ"ô¦oST’uyšÄŽ +;²É5´q­üNø¬ê@ψ-ä¬ùJl#u©Arq`»;q¡ø ¡ ö€@.ô˜é|hð'iPú¯[4±»–`§�ì [Ù1À)¾±¢„¦ª ŸÂBªR™‹ç+»wâ\KtY\\Í…ífE²4bB³Á]í“ön97G̘$¡bÄ_À·Ðg9Š€ÄZWLÉ‘ �vA·Å$ŸÛÞ_q%îC›œèS¸QLaÓXnà¸8>â„5­uÑi1d ©Q1ÉuMf¬�ËÁ =Ç\L¿´‚+ƒñˆ‹x½ü(NWȽí8° Þwí�ìðõ£KtÒXÍœHNY€V ^‹˜jGt5¡õµ¢Ö„[�™ƒ³Ãþ³3�TÄOà0ðì�|˜ªÛy*¦y˜ô¡‚?WNɇ»ð A’¹É؞ʓ‚«µÏøœ;·5>ãú£Ú;üƒÌ3À›�o­ý¾kz›û˜hQ@ñ�k-^£öP86v°sR$ÇqʼnòÌôêzí%»­ié+sõµFFì¬Ð*ºƒb-h«… ¦xŽØ‰ @Jß=*:#@7ŽÁu¼¯6¥tûË<”ƒŽs–î#Ãtä]]L ]­©¿»Ëiñ®wæÉ/ñp�Å"8æ�ÍaÏ+R]3]¯XÿÌoà7þ4%¾vǃû¸ævœµÐJÚ×v�£Þ°ýLZjt€Úù?öˆë˜|…/?n#WõÓÄ�ç(ÿÝS÷j[4,ÖŠ ñÏLÐ4ùD:£ô<’ÄžšhÞÕÔ–¦''ø�AIŒ)§Ý÷â ¸#ûÜq¼™ë›°æZá 0Þí°?C„´hŶbrÌ×úç‹�ßÇ.š¦JÚN óu:K"ÚøÄ<ø…È4ýK±A‹S\'É_›JL[ׇEU¶õޤ]徺“±Ø%Äc Ä\óäû&vHê£$…®@sv±-(dÌ¡›IÈZà¸äO[ß4G1x€]zKH¶)£`rƒXRžõšÿ^¢âÜ=È!“ò$›÷¨ ±Aߥ£•ääÃõ;T¨SéŒê#‘¡:�9Ùš>¢pâÙ瞦‚»ߟÎÑ$]uóùYÚ»¯C(*ãh–*ä:ÊXÈ>Ç3ƒä¤edF)óîi®ˆ€øý9y»€Šr‚ÔT—Û%eiÓŽÃà­ET§#$ðAÇsQâËé‡v×s|ã2c{]™ÎvV¤¡ŽJZŸƒ ¬¦ÁÆCè¿Ä'»7ƒŒÃ‰¦ü1A«vQÆê1ïä¿rƒNÈu>9hÅ;éXg…Rst¶�Iƒ= éÅާݱ¼j ¡Œ•,|ÖW—#!¾Ô¿4ÖjÌC\P|´H,Ÿ*s¸ŸjDÙ¬o¥Í±9Iš÷”Õ>¤Aí ;×F2øÊwYžŒŸ¹—X®ÇMhCYD�áÐ87D6ÒEŒÀ÷.êÚ)ÑŃkX$a¢M¦—àéCŽÏû( –T:gå±]êѯËk…†-"³µCwgl©úŽ^½§à1ºYÐ…f‘âèCä·2T,%Ž9æ²á33í*.ËûΉqbKwuwâCrü,üP8µ@ò¨±Yκ òØÕBö4ü#Æí0å·èJÆ\¶Øƒ%b)…�vij‹ëºJ_yif�",9Ws(­bÀïèÀf€©SÙ‹ßÖ!|p®«†/³!noA ĬÑ5ˆB¶¬ÈŠ‚RÚÐä0àr@ÄJ‚ó 9ë\¼„ ´^ÕÔS÷ïb€ËŒû]”U;Æ‚ŠjmÓ,82÷TŒ… „FBAYƒ½Ñ¦!c++ ,”r¿2”ŠK{KC´ª©Æ°#ë$ΩÀiqîV_E“\6€�Ê!)÷UÁ™¡Sǘ½—AFÁnä}F¶Æ¶-¸žD´Sær^Û¶ |Æ$r£×y^\à™~õ!ÀÚVšå`{¿R6Û���1Á¤¦æö4D5±�(ƒ¾ÝýÒ#Á8 8fcÃ0~Y:óÈ“´JšD©Þc‹Å´n&ãS�º±µ cšìÓüJºNËÜÁ'0‹Ó›o¾“úºzc¬²4f(+H4N$JÁ4ŸûÛ ŽU#¼wòUf%kÞ`²�-@$duηN�DiàJ¥b&�€ƒJWaÏ[Ðkв1@™EpG=Ëœ1{Ël�ìs*Ñ 0Œ@¥‚#Pª¹Žëy¤à5�# ›ë©ÐãžÜC‡[F £›ýÖà¶=�ÉQ½Å5"ƒ‹1°ÄO�ñŒs¤ëÖÛ‰:_éݱ˜Eœµ¿W9ÏLQ*œ4À|ͬk•‡sr|ŽÕ÷å )QÃDúq®ÿø¿ø'é+_ý*ÁÄ‹éÊû—éÖ0ˆ³c¥_m8&Òï.câ+¼.0.ð© !s¶wˆöÔ£ìSæ�yñø^>mÄ0‘‡ Œ"Ä‹9clCø.­˜¹F;‚Gc¾Ô#ΆÁØ2⬆3K]§H9„[�}cÛo2J±v%×S£ÑÌM+u Ù !¼g&îQ¹æÙ«Å(Ïý`•#HlBŠD °j‹¹mº"DЙ¥61Ç ÍKó½ôä³Ï##j˜ôÉžk0º_ÑæœµlëDH£·®F6íiªeÛÉ~4[XÞÕ`TØJƒVNÛ.ˆBðc+XƒGÆžíçÝ/ƒfd�`¿ü¢,uÏò‚K\LzÕÑó¡&�IË&{dNÀa8hz²UJ_wŸËÞ‹ÏòÜLxé;_æ¦#èÅ¥ H(îcÕf+ Š ,è°â¬ð�Z,ù9ù(ªûB³È”¬.t*ýÊ7ÞWCçWB™%�FpNåÍ<¬r_‰¥Õ¶¦âÔÎõŽ{ƒ€»�œ=“:©p²ÛÈ¿ü—ÿGdJV¡Øu~L,Ð)ŒÞ£ÚÝç 8öL×�5woߎ*ý†‰�w·-3³Ñ…d왼á9xŽÕ E ÆîÝä ¶±ƒ*Iº©"pg¢@ÖâÉ]¥-Îø8AÛMª7[ù›yãœM�‘Jîe–Ÿß °‡µ‡c‚>x]`(x ^*�F 8{Æž:¢†vCž�t€�gpæ‡?|“츽tçÆ‡\g›à¦íöȬàZ<°šÂc¾©¢¯oj%%G2É�Ùº‚DÊ7;H×íjd|gtiP ;—GÅÀ¤WOH“\Û}»yýZt°±5`~ƒ³~H̲•ŽÀ”|§A¸—£�´ëDÇ“ñÑ‘ Ñj‚ð§bÅEŸW(ñqÖ¸ŠõðüwäÉ?ÁüúmzH±ò™UžSk÷Ò �Ó�>‰ sÿÊXoeƒtf²Oð=D¬ìù»yYšþ�è°3ö¿{ðD*DÞß»q=M�Œ§�._�Öëè“#ÒV…-ƒÌ„~ËMЄ¿ñx#áÅ‹´lðÒs¹¤Ó¬}‘´0v¬<‚DâḑXaòëâ†ló‰ ¢PG„SÀo Ÿ»&Y�&1÷æõœ—4`Ðãíä.rÐõ�À•÷<þBÞ·’â zsNÊzùÂ1èŠz9œBd�NM •*µ$X©‡"øÉÇ&ü0s;»`XÃÃ%àí ô©çh ÊÕ!+�§­†‡Ž $;Ž8ä42³•MêqOµ™L=ä·vUfá`¡'´W”-¶ÌÂ^%‘Ƥ2Áˆ*²}u˜L+âþ¶ç‚©µkËÐQ‡´Ð‡OM.R¿ L넪ß\&tM�:6Êë·o£ Ñ™žÓvêô‰8{Ù­ß#ÁÕ fõ†¼¯Se¥‡:Õ@dØÌÈv÷H=åú:¿-æ+ˆïßÚVžíé¹ÝÈù%’¨ìÒ$eèJ'¥p>o——¡ãÇXw*R¹—»ou�Ûtiâ…³¶ì'k¡÷£LÊ›h†.áþuT¹–£Onß¼™n^¹BDV!&�(ï-³4çz;æ 6¾¿špô 5“HÝ ¾†D¶<ã Q;“jqÈ*²Vwí-T•Ã/ØEµTù�Ÿ®Žo¦—Þ¼žî]½Nð¼'tŠ´§ b…‡U^‚†VJo°VÚ6®™´ÁÐbŸõiCä)¹£4–�‹l�o0>pNÆ’�ζW7¡ààÐÎ:b¹–_•µlÿë5ò�2ZnÒïŠy"#µ´)¬n÷ޱ>Èu×dšpí=ï/Ûo@QÖ³E¾�Î ƒ¶t$¡ºæì«γÜ*IȺ3šKÿê›ßNŸûÒgÒ©¡žôÐãõ~É*Ÿ�H£ã؉TF,,nÓÉÌÄ-ª9»•;/j÷Ä —~— ’F}Cz²ÍßÎÅà‹GliWÛ‘K;û�@@=i¥GßàñàwÏy,x6ƒÝy¸éh;¯ˆoUÎÑb'R7~ÈÉn—Ò«¯¼Æ^×…}¨Þô€‡›ÇÃ3Z{öéh)ìÙ½­€ î•ïÚÉg ÿXÛ——b¬ÊÃ|T“2YÈ^°WV©*N×_ÿZœG~çö�HdÃÀ�½užú?_þÚ—c_ê¤ “ |[\³h=ãSíkÛÚ Tn:™˜)=jÈÒeÈKdüЩ“éýãÿ$ŽSº?rŸ ¸›á·8/�#ÉN™­]U‡�'µ/ ÂYõ/�•áSzô�Õêþoÿ ÕÇT&¢Úîû¯|?�n& }© ÷Ø“]‹9_w•ñ¶÷�Jçž-¢;J7xB[ȸ‡Ï=Lbþ)4è¤í2"!mK£Á#؇ð.ÖpÐl´}uÍùP|.XFÛž :›2üàˆÿ¹T<2š°/ñ¢ÿÈ)?â~üÉÿÄã'?ýñG~Þ{L,æ¡ÿ蘶C–«w"Š‹H'ÎåGÃá¹c00ηâ{Ò!;”fIR~ïí‹t;Á?Ƶ’¨œùJÓ?eØò×ðLÍ@©I[že�Š-‚‘WLê7=ÆŸµ .¿{$¸¾CÕœçaZ”aa„þìøñþü”‹¸·êK�M¬�LV †²Ï¾W ýî³�ä7³68c«M; úˆ.8ÊhGþÀ×€Ý O = ÌØJBœf›€a1²§ Mý¸þ¶ŽLµc–‰ò•¥1I¾Ad�1iÄ~òû+Q¦(<©# \§m‚^˜§`ElE¬¤­Uÿ1Kè¶ÃÛÞÁRØ`+èúWvš´}þ É^Ú¼&k©‹¸§¾mŽŠÒEº$zd™GÚ)õ­`5èjÂA :0Íî¶FÖ˜J~ô]ì58›�Éö9o{yz”e_b^­à â„Ó€÷k+$ ‚�6QØ¢Î_ÁÇq&‰¬”×jÏußLpŸö=ND|‹-E¿�+¢ïÕåÊ•f0a‰R ùm—; Èi,°��€î›å:«ØˆÕYò¿8�v¦ø„g¿óqÆ öM/O�„­ë1tuɨo–¨j4¸©l6éÁNq�l©\_UøsfßK_Û Z±f[XKq6šµ_ þ°‹‰mdíì&�3Ö•"°ÍYÆÁq…ÎbQ‡Ø�˹xìT/ø,GR•½Ê±>ò™N›ðÁ*‹ÀñÅ7–éÔI Plª[æïy*• úyLi û ®Ë-[}n‚Š× ÙËÏ*{«j+ëæ– ØÔÌgYýÆØÕw¶ãU‡Ê‹Ùì<%¯i"éc»bêR>Â=RTu¢=u¼d!tl=ú¾žÎ­ë VYÇ"æ*¶'O‹qæ Ž˜üÒD²5ùÐüÌÞJÚ#â•â7{èLÙ ò >ÓΗÜSFÄçyÆÜÄØB69WÆþ”À*iÆb“Yç`•1b”âïútb]Ê ¾ˆ]Bõ!¼U>®]¯6' ܹep&°ÖÂuc±š]]XdQ÷³PD_D»%üæ‚Ùó0PdPVùâÚ*w°Ù˜Hö>Ó‡30SËĵ‘o߸“ÆÂo_N=XÉÓž^ÁÏ!cª$)Åäh‹íÊ>×I»‚å¹›­„«ñó®uئÌm‰ ã©ó$•›`~ú;�'ä2ŸöšGwtç|x;WéãX}®=¼ƒŒWT±÷Ú1ø[ž5÷³ò 4ÊpyYy]L籃^ðW�ì�޾#•xOý“[fI´QÚAØ„ùClOâÚFŽêÇÚ�¯¥íOý�J‚üÑý ½f…´³B»öº”#ÒZ –DrrŽqm°fvÞ5©×n(õÈ÷@_×kÙ�Y\/;ê1à (Øã~SèÐïüõËØ¡ÓÈÐÝôÌóŸa÷ÀGЃiÌë½?Š9*û\/i͵2(§~–޵Mô¤Oçm{j×\Áwæè�ø¢èªqµõï™8ô…ͬNƒV-\J‡¬ôeÑŒ]��;E± úl�£ÈÜ—ˆÝôÝF~å)œqíË‘¥&õØÍ·³»;øèÑÎäÍ2{ˆ.£ûcn!Ÿ¾ôÂ`$íкg ?]¾G ˆdÛƒŠ Ù‰Nù¥MO…n$X(WT‰îBöZ�~ºƒã¡ÀôoL!Ÿá%q,ÏM¯!s©?¸§�yµñör‘î)ûÊðqOvÐ]ŒÂO»¬ÖÕqŽ8t¹�RY¼Åëø÷`†�öƒÿ¢/ÀkÒ|æw¤;±rH”�@£ØŠ�?o Óõ}õ‘ÑS&—‹µ˜øèñ!%ZÏTTÕ!‡Áv²â* úlón‚™EË ýCÇæP‚Œ·šÕÝ&êy£5l‹¬»¦q6e‰a[Hµ¶è‘!ÄöЃÕUCðUuºu‡‚Ê]º,1>åL=v’»¶§˜©òC?PœÊõ2Aj‡–ëÚ'úµÊ»/ç¹y}¬#{Ë{�ü»ÇúknÏê÷e±µUÞèXDç‡ð �“-½?ÊÐEò¼�Œam½h6×R,v 8‘¶NRI'2]$™�öI8͵ÞØ.¼m´ÐÌìôì î�FKYÖZa�Y ¶(IÝ´Ä)cByh‰,§&Z9o"Ô60-ñ? §'}“jUŒ ·5^÷ÜTÏ$7 ¸�Bc­B@¹€qf5Æf9,:ö, bà:N ö<Þ~˜ßÏš½¯ ´u‹NDœu�qf½@;܈Щ_“²‚(·Èà©`Ýú»[Ȉ˜‹ Ÿ ®¯ô³-Ãé70‡5áÂhÑÖZⵈ¯g-œ>�ÒÝ»wÒ믾Œà9Œ–uÛ8/ž™ìcmmÇ,c÷ãì¾¶Ž24X_ÖïCÀ½Üì<€G+A‘6Œ»yª$o‡�T #µ¥YaL 9íÊGWÒÅ‹ßLÿÕýßRñUK%ù"(Y�žŒë˜ jä±>‚1Qia©ø ž¯-Ò€5²²·›*©züÅ $QGG†�ö9¬…t枸Ÿ¾.-hà+èRtôT†fñFuÌF:�­x²Àrpv~OÛ ‹F“Ó¡Ô¯ïËh>4Æ Ó#!èüB2œ�^Asi;œ4öË ¿cñ¡££°1 3<¸«\˱`èAÅ\C±cpdv~ EA¡øûê˜TÖ^ÿhîGÆÄcÏþÖa||÷k¿ÿûq¯wßx™xöfºüaŽ ¥®Ø'éÔvFëu.býäGhÕ¹ªD=¢œÊfǦS!/[9kÕ B%À½ ômF´dlÑ$;V[ƒéXjPV Ä0¡ š�Ád¢c|¬s>Ù?î³k¬Ñí>ØÉ@cÖ _Á0Û%nøið;Æ„eI;ÞCÅ®<±C€ìŽB)A²_¹¯.äW3ó<Ûó·Ûº:éìqî:L*7•@­$à<þÔÓÈ¡ÚtýÒ›¬åüÑ™þàë_OßþÅw³¬/ùÎæ25ÔýmG éHC>@} îe@2 ŒÕ}ªäûÎ!îázKSVܘ­íC¯Òñ0ËÞëÅwàtÂ6”î”E\4èB‚qÿÝiL3€.h0RØW �#ÀͺÚþU:•ÞÄàÞòÙ.Êñ�D%}ïàÏ3zËÎS©¨4ÃÝvç&‹d€¤ô"Ÿ˜HYðœÀ‚<ˆ1Î)ûÉEŒQ§ìÏþõ71&?Ëç97‹}ríu£:‚u:J0)%;üíwÞIýƒýìeG€�É79žÞ@öm07!@åg$×µÄk /âž(«4Ê Íîîž�êžj k�X–0tIQŠØO ªÆš¹n-׫$C{–J%[¸˜ ¤ó%ý �˜(å¹/Òp Áô@-3u(D¿þÊ+|ŸÏH 蟣ÖÀY`K¥lö;†‹|ŽAÙùЋ{²…%¦±êúi-a”�à”É%ÏѲÂ[@Ìõ¶"€$öܤ—�ZçÔãøWsÝ’¬ä xK9°Ÿ0Äž­büšL%}ÛšW‡áC§‡O�_ÌEW�­Hìâºá^G‡ÝD7�7 ží<{î�ÅË8=;Õì]Î�ÃA´«L9™™f¶ 97Ï�rÌ&oéôw´Tã¨Ô¦9‚^ ë´:Ä8ìÀ‘òœÞ©ñQöa’€Û©Ô€Í°ÇºI³êÛvÉÒ´2C>0¸_í}óò§¡+õÛñp&Ò·mý­T†ƒo2É,<¢Ã=2:r@cÓ¤ÃNŽ�XäCåŽ2Á¤û "~¹g…Ÿ|¸lG/-áÑߟüÜÑóÿ‡»ûêÑ3ýû~sfX†�œaoË%w÷ß‹þ’%¹)°l y9�“åä%ä8@NRÃ@,96bɱ,ɲÿ½m%—ËÞ†½Éápòý\ÏRr`‘[~v‡3óÌýÜ÷uý®_¯³µ…“ááB´I‰¦ôª¼xT‡‚7რéM�í�äƒeì‹O/–äõ&þ£•%ÜÞœbÍa¦Ã‰âå‚›Ó±T×K†â@‚û*£ñ=Æ ç 'z´¯/·Ùõ‹»g(A¹�pÀº‡lò^¸Mó+0j;·$ƒöSôŸ‘<ìz<[ûü뎯†ŠÉäíßÐ]hTõu?{S e¿:Ápâ’§ùx =Ô4ã\+Ôá8˜1ÂÞ´Ÿ�W%•±9¹Úm¦ÅZÁ¦B´ß`5ºö¤7¿Ý%Ë\gKíÞY`¼ÏoifI’YLf=/¹À:eK_¿#iáÕtþ܃éÇ¿¼Vì�ô÷WÓî‡3@9LÓù£Iµ’´W­M h�$¥h¨c�‚wpµ_ÿà§µç¥÷^—�kè®Ý7’u]k¦Ç� Æú$Lvëá!Wd‚ƒ܇3ôN§—ñ´Á`÷è1ßíõúÓÀ~¿ãUZ©»Èù²Eéë ¡ªVïÎÞ~%õ¡Gmã{³ë«Ô¯óÕÝæÚýÏÿãß�ÞûÚÙéßþ`zÿô�éÀéœb‡Ñ˜n@9Zrä½4&¢ º[wrׯÑܳ§%fŽ®`ñ.g¬ ýµðqÎÍ$àX7xΪ•» ÿm†^Ö/‡ê vúý¯ä$¯U\òŽÝ¤R”øììႽøÎÉÁ^4ÚæM¼ ð8x$çÁ_ú�ßÉË¿ûünI�éÙñHmñ«Yò'/ë˜ÐH�MÜ ì_gO:Ë8UžÑ˜ÏÁõµm›âÃ|ý+ÓÙ:ëpçæõºûä¬âôâ@4îà«_ûJ÷ˆwžÃÁ˹PÔY=óuU&tUú¤ û^b�ß7eck�¯r! N|åLÉŠGÓE§�><çã³µ[o—…ô-míÙ0ho$D¼ˆ8Ò! úãO­­ÿ»÷wƒÔÆôíï|{دTaTòxnêyoºvßÑ%¨×ÆñäþéÔ™w¦_û­t•öetÄVJI¼\eÌjzØ–Ãh{�U÷ç-]–³¶¿Úϼ+<½ �æWÎéþ½ª™„†Æ‡úÜLæÒ·{§Ï„µƒÿõ£7ƾü-0yàŒNû‘¼oùwöïvÉø=»×슷Ïs?û,¹ðÖî%«è–kíqÈ:ë…Ìî3ûœ›£ÇÞ¶”èAµÐZIù—§?ùç?‰®§¿ñµp@u©€e2ÐC¿¼ßì®ÿnÿµ{ôHk÷²^òÿm5 ª0TìLöõÿ�ËëùóþƒÇ¡{ ×ÛÏÝtò¦açk:]Ç>`îöoÚHÀ¥Šáàü–�1V|&IÁ06}hkÉ7lI½wJŒ¿TeœÎ-»ÒØød5�_u®Ê04²ÚV§ Y~vðbôˆ6�>4U%ý:‡µàÜ£lþITèßz[FÀ=Ù:ëh³¥Sf]§côLv,;o†Äó$¥!¨@öÓcŽÖzS"ÁJ-»o­Ü#îtïZŠW ;=ZÇñÔQÔR¶*™ÈO>CÏ£š´Û#´Ñ5hGrŽoCÒ ç±kF‚V{�K Ž�u¦ÃlJç8¶”mÒwüp>]us:†uóã,/Udl/:]UPcO­Üµ<&7_¥3˜ÎgzÓ|ölÆwN%ûS:$ºY³Ñw3[´Šê>‡«[6ÆmfÛmäÙGøkéU' èDDÏ“pΞèÁƒ-ÙŽ¢#º\ÀS8ûo]¿X˜Þ?ÓH¢‚ñ×._œž…S;ÙÒéKªÛIÍÝÉ8¼k™~âıðh–¼?TKØ6‘>ÁOBnj™n<ÚÀÿèc=�ÿe~XE:ìó­U‡üàè�Z¯ö³Nçl†¸Ži(��ûEUÀ—.\¨+ÀÑӛ탯ã›ßúVè´ú �oË|É�ŸÊº¹äÖ¶�û§c�c|Ý�Ovûöè¥Ú!3ᄎèîÀþ�=s QèT¾˜ÖÝ\^ªˆéàè ‰�8ÌÐàSN·æÈ/ä0KžËŸÖ _\-Mû¦Ë/æ÷½7}£µ¢í/>ÿ<Ý}Ìß>”îËç"ùøhTúÿZ]®våëØ±s6òMGÇWä÷œ$£ülÁcÈ¿dÛ³ü寨,Ÿh¦nxfœœÑ\ü­39/o¬C¾Þ|0ôn~çŠ?�v�ud\H>t#×Й{ô�K�iØ%d>á³tZ2JÐïÚ�fœ×¡�îÏò<6>ÃóÚÒù*ŽÛwd×Ðù·„WøŽD œ7nå·HÏ‘¨³Òî§ûîZR›áÍFu/ã÷æ+RU|½€âÑcG¢×ºEÄ‹%°“`4ľpËìw~˜-‹Óƒóèv‘Í€ŽÊÅí•¿3}ïÒ­àÓ»uõêôþ_- ~¾à ‘f4‡¡L÷|xn„ì£Y2Û &îöç{Í®§ë‰‰¼jžôh©œ""Hô2žÏæ}+'ÿ|÷üW¯ û:'�BÑdL­›Ž¥;žC~àm:¢Û§ÁF‡K¾M8¡V÷Bk€`-Ñà¡`qçÈfx•OiÉ…S~¿yëÎð›¾*îó¬˜Ç¶îÁnÛRK°oã� dÁÙž¹©$ÜáwÍ~Ô!X¡§¡Ç�n7bãQq¤:­†‹»¥ T¤Sí«b7‡jÛn\1>c„‚Éyfr,yçY µjöÙÌŒ!ûZþà%�óKW¯eSǧúÔ¾`A¡Í�>ù°çd×Å›èˆ^ä&8âKšøŠ„Ð™ƒò¿¶?~¶çUáê Œ°Ø³¾ó³�˜„ŸÃ[wõ;òÕ’«ögCèX3ü½Ñ‘€ ®w+ŠqFè™�B˜ág/p»7XÏ• I†Ý¹«ˆ©Î¾�Xßd¾ø\ÉV{¦_~š§õ?ª{ÛöP-ðÏ�»�Üx'?^]2^×–±=dK¤‹Ú[sü=]˜<1'[à”NýzËútú@ i%1|þtnzÿXUÿáèÐWÃ/Ý-tŒÞbw8C9,pÉØ(aI9¬�)Bˆ³ZŽè�Ѿ¥_¯2psÎ÷áäk…Ú‹øSbæsºïÝ[v[ÄÀ˜q_s«9{)ÛRÌU™ üì/ð¼-ÅcÜWÀì½÷N—1+#¶ÊÊnÌàNÎFlàôÉÃU[¼˜Î_¸23BúqŠ<Á´ƒ„Ð/<£|#!‚i>| ò�Sÿõ¤<¥Ô Ê· ‘ìDNFÊÏÃ{e/õœ…Özå=.KƵ`s–̦Þ2Á÷ìÝ{ šÃÙÌÁÀ�?ŠÆZ0TeƒA.–]¹#ä ŒK“ ·s`ì[:ìÈÁð‹éùŸþ‡é7ãoNGOž ÑFKº ÷åf"©z x?ùøÓ2]ïçö¶üÎïüïTöOKëoL/œ• ÷ïÖ ¿™|fnÔi½VëIƒÕÚ¼<+k(*ÉYòW›Çwq8¥(Tˆ„³Ši[vg æÂ‘öÉß=}ºõ¯Mw®å´M¹Ù‡)9Ú®on÷S„8ÇGGŸó3JR† Œlǽ1rpÁÉ`#@FË%¸’ƒ='õá/JA5A Ž!‚^YïJö�ì½–Üçwe(ÇIß×#â!ÀxGñ”8¢�©¶.˜Ay„f=…‡ ÄÅÖ›CáG7Ïe%vÝÀµ~bÈ ƒ88bD]ÖƒD`‰ r bSí‹Ún»-…¹ö[û²_•EÿøÿúÓÓû+9{›=½Ü8)¡V©=KµŠ94ª\9y¶Öfĺec[šPý+Hþ*áBi¡À0€µo¾zùq­Qû|�‚Üdb DR]cG×½ÐË)5öj+Sûª¾Wgý¢9Q1ûøÈ“”J•î ûÌ\Ù1 ‹ç1ÿ{µS”…kýxÉJã dÛS:µ @Óž”a‰7²²WcÚOë†aÞ}X³®•zº�þƒ!œ¿û+¿V¥óÁÁ“¬Ózñ†Ç´j1•7ÿàwþ^ñŒ”çÖô�ÿáß›ö8>—‚ûhPf© ƒ3t®ð .©¤õ�rC( ‡eç-0¡z�°çì|;§·/BÉÙQ˜^å˜k_o ‚e0g8!Ãoxfð’3´Ctáù~Fà FÃ)Öçúpkð™>oí*j$ÓPÈñmð"ìdd¿\‡¦Z¯= Ã<þ@˜1Z´'±>ë´~ðð?%Ž1dÖ‹>Ànë|�¸ä]H¶Öjó§#;ÞÙìªe�ਇô¿ Z‚°=¬¤(ôÑÇe÷o›þÉ?úGµê;8½{ætÏRÁ]v<88ƒÖ…ï¼*�]…¹Tßùµ¿Žî�>üå�JÂ’e™ƒ7&!°4-Û3X=«ò™âÂ)[„'øVe‘A€g:|íw$Sô|N§ÿ1�—Ux½ ñÓð®{š…ÉŽã»�>˜�5 ¶ÃÎí‘!2ÄÁrd½·f²s¼Œ¾d”j³=çÉ\í«/^]i?e)÷É%x0 ãÎ2À5éÒ´þ¼='×`äë*TC,”øÂ¸Zb ¶v šj­ç«ŸŽsÝUÕ�3g4 ,8Wøø:Çy/ïÝ1þ®…ŸûG°V;�‹nåèØS«Å‡oÖ•D@ðHg�ÞÌ×¥åæË•±¸Ü£æä©"ç ×¾êƒ¯ ßkÁ›Œ|I+”‰]-c¼œÙjô¡e?e{(ý­sÄ—×üEÿ6ÛkÁˆö‰'thé?Ï›Mû“i¥LSŽñ9ÛtÏÀ#÷쫵eðØ·/=®Ïª“‚^‘O¸‚„ÆýCÞ XõëÁ§ÆÔ^³·f?÷ï�‘ãOýÓÇ}p†áùý{7ª:ÿÉtåÜgéQÉÓŒ¶›7šÑ}üÄtçÖÍ3WJô˜Fjö.Õµ¨V¼cMá-Ú�Fº_Êù¶)g=Ú3ö@w’U;@ëÓQ�{ð´öà§7k"€xõ¬Ro yÓâ�ýÇhÀsà g‘@$½�L$d9ŸÇí3ð8\ÀüMÁLü͆)ãv*XÐïzHô ª\ë>†…9Àélƒoá!ª€Ì ô|¼„sKbâã诠ˢs"1 ŽªˆUÐ]úŒ#œaA7É@JÏ¥9¯ÁÇû>t›/ÏEн¢_G¤"A·˜éíãK]I{1Ýu´Ts÷ad§]€ ÿ€ÁëÛ‡¶låT ��Yt•ä¥.Œ�. 6UË•,ÇÉ>ì‚Ά¬üø“O¦‡ÿ2ã³=plŒ=�k_ÃéÝs†�н]ÃxÜVµ’î֯∘ìV�—ìÉé|% ‡€¿÷'øDÝ‚áBö§ß÷ðSËn-ŒDz�ö£3Gp»ï¶*â9“é†üS­­o%_þRNÚ#�Tê«€¦‘Kø6ýtomÕÏžMïÊøÞ·GËŽÞW�œî FåG÷!_Ù2:q-¤Ì¾ÉVºæ£ísUÊO_mkü gÞ£ªª|êþ—âíÚV_ͰßÞžÍÁK±›Ñ^°zÁÆ ¦F¿Ø øš¨«¦ðíš;ºwëìêóö p�¬¯ÖeóÑUM^Fò<]ïw0… 3~–8á á"ž.‰�^NN�ªÀîC/ÎÑdÍB¿9éþ!¦jrgïáÎl<·ßЦ·†‰3Ñgbk]UgäÖ¹Ö™0tþ>‡ k޽…¹=é¦ïÿ‹ŸM|ãÌô�¯¿ÓÙì(q«@L(ÇŽ4 u!§x¸Ã ‡*-پϳuìãBt�ÙT’·Ž œ’‰ág éúdW6¤6æ¡>©‹ÛZŽKxõ÷w;ÿ]É®*K‚eórÂA´ÉÞAº�ÙhלÝÇ~D�‚?œ3Æå˜ßƆÅ3þä�ÿd´ØLôAN:4ú•ôg?`ª£]Îù‚Ør–Ïìûdo¸ãïÃiÛ¹©Ž Ÿr`{©:�¼úч�}¨ š½=$ÄJôckÅ‹â7:á˜5�ëz Ð/ WèÑZãml°G9ñ‰—œžÝž¨ÖÙÑ3à'p Up/«Ù»¤›\zk8 F2zŸx�[Ïÿýÿlúäüù| µe /Ù¶âÚwNÏN©B§õìÈ®x3¿Ø5ý-9µžÓÍšW»ßbt~ƒ&ã�h•ÞC0Ìçèê�ýŸ3¨5�[×tx¸"Ÿ¶¥Wr€KÀè�ÙúzŒFåú�T=¸çæpZÁ÷m±}4xt¿Ö0îáy0ò7/ðšýØ]ñC÷¢Aø±÷ÜÛ=f+I% ŸÉD´Þ#ÇßÁ}\Þ'Æ"I+îàMdßÖÞLŸ\ø|úÙ¾?ÝÏ‘ýÝßøõéØ;ï¦×…wÁïtŸÙº¬éßÍËÞ½<Ç™ ŸG2–µ&£Uó>¨"7&S•Ÿ„Øl¦lV�Ôáû3ºÕ/ø�O�‚ü"~ª³Ëö|mdûŠÏýë/gÜí‹.³¯™éwk%»A§Èqmö³àÅëdÛ­;·§«× $UÕ fÏó¹ÐiÖãMl’û´¦”H_ºt5öûlm’Žj5š]¡úAZ•ñ—®\ÍQýhúú7¿1ø]hk~ˆÕÖ}·Ñx„õýì'?Ÿt‚9\Às5â;�h [gG:^óè%’Dub€’h(]¶Ö¸ä¹Šë;÷~Ù8ÇÃuk«%g~PÛâ)¯Jð~¦àInHÂò%<‘°Ì� ÎZ7ÏxbvF{Ü\µZb½Ÿ% ²M öE cüXŸY+ÉñÉ�ì“*ßÞ=s*þ¶wØHOÒû¶¬*n©Õ왪ÏN•¨Ã7~Òé$ ä�¶¿Ñ•1•O*Ó“@Fî hëTÌpæý³ÍSý,þl4VAƒlXrD@Pâ6£D,-Ü%EìØ©ã\ü:¼iá=ÈåÅÞ¿wweÜ͇É&>yâH×lÍ^º3~ç—Ü{ïý÷;�¥ôªnÁ>Ä?f¶s òÉIŒ`2/¨‹ÒÌ^#/T\É/© ýË’!T÷Nóµ®=yrȳ¿!(]š­²QÀc×¾ßlø/öÀrzp÷z–|½Ñ·+¢÷©*Û›\‘t{çîý±¿ûêÍïý†IÐhøAâÇt.>|\’Ǧûo»À;¾‹ç%0À{¼Kg¹½û—Â¹Æ —‡&m‹î‡w’Úu!”h2º=mÝS�êHŸ££ä¿f_¯‡Óµâ¯7o5JðN]ÖÚ£Dƒváí¾x’ H8\ÚÏž=3M§”ÈÉöAÛÛ¶KlB)qƒæå]~Me?¸?«*iÍ)^^>0ÚÑÚÛ� • Jw\j/ ™È¶ÈÓ’5RŽ¢±t(’¼ÛZw£Åíù»ÛÃÓö~1þ~³jZrXRû® ÜÀ‘o€ 6ÆÛÛw�ž, \g¤^xÎÖÅ™ÈÏtõ…ä$ýN°®ãŒ÷”„“�C7ÞÙ9¡M8ßÅÃG3n×Â_ 7 z_‰G‘MºcI�}Þí…tƒ›û‚�:–qU7*¼xéry^E¢™üLDÕÑ¢`p¥„²7:£¤:X€7wu%¾Þl”Ü0Ÿ].)öp´îkû—’åÏ ZVµ>FµÞzXÜëìtæôÙéhzÇÙ3o¦/®]ŸÎ_½2íȾÃPþR g-£îe«“‘ ?~ðª®mÍÇö_±œ³§Ž„U‹Ê6ãÛ¬ÛÌâÖ`9WöC=ïur-òûzð}%¼Ý¯G»î*;’õÃ.éå~ |ߣ*;�ÛYòEÝ­›Çrñ“›×¯ÄkNL{Î×~¼êw{ºs÷qzJ£ò‰ÃÓÅ.žEŸ‡½�oúçÆ5þ²“C§R�ŠWœxmú¨øžî"ÎýÔ©“­7zŽ&Ä<½baém Æà‡O6œ@ó[²aìù~6ý>�eð-dŒvVáâ«M�Ø�ä¼­ùÕï¯Ð²OÃ]¸ã4í<@ÙKô¯ G̉ž::5ôÜW]6ø�.eF„´áUE{ÙÞסšnξБ‘aS{Ek�?#»óé/§w®O§Î¾—¿eúדQý¾£ŽºÆ|zó‹ð»¨Ppd›=ª»ê\6´gÓO[hrC‘Ïj²¸ßØ6ñœ£'NO¯7ï2uØJÑûÓãßjqƒ— îë´87÷4H”ãKvgo. s1ìoÃéaÎ&£Ûy€½" Þ~õ«_)kk_ðž¿ñ³gµè�De3¤Cˆi§ýÊ×ëUˆö]›÷…Œl�½Û%æÆ±¹?g:¦œê*Y'<)ZË(2n´}Öò@nÏ&ΙWÖl"ëÇ'³T!í�Ú(,•ŦšI…êÞU®�+×§ÛW?éà Ò¦öÀâŽéñ�Ë)Se‰F˜2·¶§µ~ÈÍ8ÉXimBUó\Q«˜Q>w#‡„6ÛClm¦1XA�µœwo«?Ì3sOK§}{9+µ�JYë­Þûà;Ás­l¦_Nׯ߆ÅßøíßNÁ¼=àÁÙôþWË� )‹�S"Ž=QÛ‰ííªù®xœ)‹ˆKPTÜ eY#'xUõZÿ>öδ-#ãñãëSÝ "Sî8š(w£rLj8�Ò¾=CCõ¬„”ÁœÊü•…µ;%@öðCB'Ü|Óú÷ÖÚ#iPfuíµ¼[+̯—…{~Ò{š2²»�V��ÖúäÞÍѾJ‹)­|®æh�a îŒGß9dàΫht?*>65ñ4•Qè˜ÃÙß´Ì…K;.Lw0âÎU…Á²Ê`ÀÓâ{ÍÎþ�ŠºŒ,pÙR)’pÄþ={ÐC°\èwŠl€/­¡÷!­mKUZ%ùÈäB_”ž‡7Ì¿a(¤DG�h޲Ó]Æ9{Ú àØ¿gr„¡ ¼÷8({ðQÌþà¼jPX^+4³ ÐÖ•áÏQ!�gýŒá»Âû>‹ï YŸ3úé�~Òܰ»ÃI¬ª[‹{5O`žÃà`žð† ƒ'ÛããÛâ;fá¶Õ‘ä¡òðfê>|dy:ýλÁ[ˆZ�¥¼��ÿ»ßûµ³Ó7¿ý½æWÓíý¨}ÊjM±»ôEçñ¢FKKGÇÙÉŽe0?é^æÖîOHo<î<»^e‡Ã]²Š³æÜ³7•´ÜóeáMœë)Æ» $ï‹þT»©\”´€Î_x’µtë>7›#·¥ö¹Î™Äè7[G־ʈ§øVt¨’êEø°)ÞHŽìfÜö™î’Œ‘ ö¢ÐJеª¸º±¤ 2ºÍ~yõòÙ¨ ÿæ§’Í»Kh‘¹÷0yrhÈáÏ>¿œòz|úÖ7¿2[×¢Œ’ÄaÇ�ΙOߟOWpoŽlmí«G7€VBIzœA/yGuÚöð‹Žð$8„¤�¯6YµEZÉùÆœÕÎËý=Çv|vàV÷§ßÿý?˜þÛÿî¿+íõ/þ �Qâ$Ýár+ƒ†ÓëÚåœÑ×HF ×–9¿3¥r=eÝáG{fꢻý)˜¯¦²9)üî‹_ â�)®çÄÃÀ׋C-RíÚh¼ßÑ4gãÜçƒx‡O§|)7rÌ^k=�e_9KVÐrú–ÆŽd�Šº|•˜ñŽÑ~1~! ó¢=È"=R%=‰g2VrîCÆcz€µÅŽ[DÆeò_3OIš½0t­ð~z™o>±äÌ•`)¨#9ÇüG•­‹ñ¸G±&çtÙ� )¹ƒ,´ßÕhÞ˜ú›(t'³ÝUŒø }‡‡3ß}9¡=‡m*³á2þŠŽÁXÅøúºJÝ­c¬‚N1Å`4 �[·JTÆ7ãƒcÔºG°¥õâ î%!&ÃÖ·æ'×ñïx$^Ç1TûÇSñÏ�`6ã=‚åýÁºÆ—ó�Þ’ÝÓT5»Ï÷YF—ç =°ëÝÓ¾ðŸ÷³û¿uøã‰œûä>M!WèHl…™^D~y~ànÍo»é¶1ô­>K†äÎìƒÎ?¹…ÿÂÆ‘ðÌ¡1ƒLÈHìêúÅZ±$,�Õa¼�õ»——uÛÝÐz ÿæßúÏÆ}u&ùÞ¯þzÛ÷âýO§?úÝÿs:þÁÙéq�{Îþö¯–à{¼@j2)Ýp1ÞE—~^mtf†£B¿§JÞM¥©}›$“x‰Œ*xFžô@IDATŸ­ÿÃÏn%Çž š—èõ´d­¥‚ò%‡Ò×èwè•ÄZÉÄPe´¥£�‘ ÅÃpŠþÒÖÆ^í ~ í¡÷f°›94ì\l†Tì¾Fê0ÒušÒÖ_à?rd[?Ï ¼£‹qƽ÷šA¤Ú8üçõå9±v8×I"ýM'† ¸×¯»ÆS=O0NÃoË�ð]Ã…áâ–’FwëøŒ_u=]ŒL˜Ù5>È‘Tû¿‚λ² ¯Öºý‡?>Â/Ž1Ç›E÷•÷�NkKzö®Å*©ò¦Ù‰û—6OËÑäÓ%�nÍ!í=oÙzr)ó¬—Ÿ9-ÖÇLYŽ>™û�_NÿäGu‹gl¤œ}ÿøèVóÅŋӭì4k—HC?àømgƒ;²/œ¤ßû;GÇ ÆÓówÿ×ÿ-¨}é�ªº^‡Š»é.*w8gÅsð‡½9Äfüe¿çÙ£‰€ÑÙ…m gžõž3�‘õ{:F²Ö)Öí­­+1ì"øÐ™üÓäê£Ú&ïìoÖ¤›€.x\þ³ÁgtJà(:p÷Æãí•“_ÀB·üǼHöÚRö°¶éóñy J虽´9!9T  ²åèÄ£j¦÷Ù诲iè^t –½%›ÂüóÆ�Óµ«—FPofÃ�ç®ô´_fß¼®¿8-5¾ïXº»±WÎ* æÎ§sèè?¤—}ÒÛ$:ëJ¶’nÿ àÇï¾7ô#:ÀB<ÌëK�ýéògêýή¨ºsý³‰‚�­pccúôÜçu0¹ÚϪ»øçžÆC‡Þ°gïÒð{á‚h�ôI´¦¨ƒÍpîóKµ^]Ÿ¾þ�jã}$Ê/½¶î‘G¦ïÔ.øäñÁûÉ|z9å= í— l}í«_Ígd\:WÇ–ð»ãûÃ?üÃ*ÑvNgÞ{w:x´àsôª›•®3B‚à™Št Ââ·-/�û^½q7'þêt¦1Ë˪w馈f¦¼JfÐoùHÐãèd“N9‚íO-ß}”oÂ�¼ø+ù67ײÝ~®^¹–cÞ©íéä eIT¹JG]M?zìÄôλïfïÕé+R"gØ–´ ¾xw’`ÈeËa³7ƒ7»b“(P�Õ>~1<¥s0�Få1žÒkËÖàÕsFR{{¹tù‹ðˆYëáÚ¬?Öö®U°Šùãñ&´¬O�G÷ï«Ñ™¼ŠïÒå$°ƒ)z6šA÷”ëÉ9UýïåýÎ :Ï®rVfÊó‰ãÑ«%èÌ·¿Vëè�¿J`ŠÞ½ÑÙ‘sl{Û’¯X0Í=t=½vãê¸ÞæÅä´n¦4f-öéÌ#`ÝÙÿg÷Fï|ð8w%;Lûôô‰ÎŽ:+pšURZ_ÿDxÅgßÙÁCAÖë½ne»Jþ,Ý•_ áEôµÞ^ឦó„`žó¼|Ù½ËAÐ*“ù5á:ù0Š�R¸—ãQïF›«%B>ȧ�Ípùʽô•ð¯õK&9>¼ûÞ™tö’WÏÅ£¢å¹øÓèHAôùöò<sµ4…Φ÷¾ò^~ûb Åvl*A¯û¾î³ô2UœèØ <½]üÉýáô«¿ñ—Kx?<Ý¿v!¼Ñ-sqœ×«ü3Æ$ñ#£‡;öÔ·ÿ×Ëû?ûeP}|CÿžäC]¾_îœ>ùè£q.ÛO¿Ó9uOç5ì7ø·{y¦qWŠ"%…¿|ŸÊî¸qåbÉ¢ÉlÝ`éK»äÑI$¦ÿ°Ý©;Oî•Áõ$ÞšNú`寨yŽ/Ð%ùÀÀDµ*ŸÀF~ù•k—£‰—éÀxU|!Á%Q4x5{ƒ¾Éøä�]ÑY²MAä–’Çò®‡Çhxûtµ®Ïëlƶ3jãpL2Bׯ½Å�Æ=™àñ޹t |>;ÎÏ•à4*Õûðˬ4R/~º²rgœ—D‘'%ÑÛÿ{ï}eè¤x$™5K@¶¯Æ™VIJwo…’»ÜmÙ�q ÷ðzüëèኻJ»t9>˜?’~…^¢áÓ Ù-ø¹v`¶/»½¿Èwmœ�QpÄ™I2{”<囨ßûª”�»‰-Ñ?~ðªî :-�‰OKVh¤[쥫�ôˆw­mD÷Ù _={¸îwJÈ:®f—5¶ñýCôçºÙ6ëÖ]]ÓÓißTÀºÚ¼sñ©µ§$ÅÐI¿¸Yµô«tëdb,)û ?tç((ٷዹߨŒÏïÆƒ·šþÊoþÆ(TÝÚ=›|6Ú ß�·®Gs#I/<»zíêøüÒŽ…é¼?m®¨ð—Ÿ|8ݪ­ûF>ð'ŸÜ¨‹Ò­xðÞÎ{{Å=»’«Íj/ÁLZ,›åæí7Ó©#Ù(â0kùÚ ôïÞ\×¾`{ò ŸTã3J~{ü*�->¶%�E5Ú*ÿt]Ю_ ó¯¦wŽUÅ~±B–;´¿$î½Ñ œ. ½¶wè|º ‹-åY~ª¡³¶ ½D"2ÝNwP•Ôk½ÇçN†Ší±‰ÅyR±|2ñ2…�p˜, èÞÈþt[៩â5þ¶Gº‡¸˜¸œ{”`Ý8#þ$”¼)1|ðÁnعÆå“'ürÏ:o¶ÌðÏáI¸VÏ}1ñ?í) tô»÷“l;ÅÒø4•±&ÔU�ÓñøÃt›±'îˆÏŸ>aîyW›³?Ua Ÿ•âµk+q8.Kr{Q7�»Ó…õ+éþkcŒÎ¶²!Ö[‚n’dðbþ12G z$™ÚXšÖ²»,’‡45öÏèÞÛY±¢è<| :¯mDol¹…|�º ô ‚ÈlÁ½àÀ(–µ `ã…Ñí.CK;³PãËQ�h9¬6çØ\lþF`tv)á dŽGB¥¥„tÝ»�¸g¥F żb¯Ø}\ö–@Áò�*¨û›{€­fg±S2ÓgÕ¶3ç¤Ø•Òsè`D³—¡Zã@ŒI%=d±NLeæ*ý¿>¼·¢È•Sº¶?‰3™â¸¥³WµAHÖ¡„­>º™à»�1�ØOów�Ùë®Ì´�—¨1àõ «˜, Î�ðËkdö\ˆ §EH;ߺ_0^¨U "@œ›·° wápò¶pð9kŒ†Ô!Ç ˆõC/Ÿ¦(qà.î� ä¼êó[Âk÷A͘ØpÚDîV3ã=ÆÕŒAÛMáµöMô˜ž€#‡úpÂv jAS^6ka–I˜!&¿p#©ªîÜóqJæÕ Ó“Ç�ä0^ÌH½3�=ý�f›íœÎ“á]}´Š•s ¯£ЇrÖ~ÚZeÁrP˜=µôeÃê|ÞÍ€ÁÆ|½�—òU%t2Zû3Ik;Úü9˜ó ÀëŸ~)þ³Öx–Ï’³$I³ì ®HìÛ·yºtéóHéStªdŸ ;£d%wžªätæxŸ ‰TÂ¥œ¯ñ.-¸9\bEáj ’e£çÍAƉ†Çš½�N¦e¢52ÐÆ|Ù>�÷èæ"âÆZçÎs îÊPÝžãê-Ÿ?˘îÙt?:¡Ž6÷rØŠþ0D%Ú¼­°ä<“”ô<UÒϬ³JUQ92�;< ëéR¡ÎH\ü’°¥‚‰‚/±KWü ­h º6ô×Ý�etˆçŒàö ³[�±.f�I�Ï „r>Søí]ÕÕ¨äì¾÷JÖÂïñVަad@ûnpš”‡Ñœæ«à`‹¯ ½#€ø¼Êó95Á«¼¯ÎéíLrF ƒ{Åõg|ÝMŸ'†=}€.@¯Àû¡}›ŒA“#Þ÷¡¶vÏ#+F@ÃCë4Øyp(yì†Órp�® ÿFPÉùu�0ÆJß»�}yŽ]cË_û}­¤¯þ4dfwðöF‚ƒñ'ážÓ…éC†ö¼·™Îø)Þ0­�­Z–‘Ūá!–„Hë×\�‚Í1;“ÌàúÇZ­^x†g©Ž³ÿwÏœ ÃÆ(|çW~eªYI”T’]ªÝÕ•gÓõ‡s¾6ëuúìýpP¥‘s—}þ´viÛ"°ÅßÔî­´°¾Tñ$3ºÓr÷»KΣ ÒçkÅÒØ™dAëwV^ôek$si‹‘g4 £<½ºs~ÑuônW±úó€ßøno>Ø/žî™t“F{ÁosˆäZzƒÙòha{÷ÃG’á´çI8�K`-`C/p¶Ýb<�ý1àç¼Â‰,£óU×,l¨ë‚q y9”ƒÖaQΰ{HrI$޵ÒeÙe½áÜØ‚p’¾/É€n&IíYŽk÷±�ý´ÎïIFí©:¡#ŒW½š>þøÚôÏÿø\W5_mÿ¶º¥ì*YLm-l³ƒvl¯’iu.{n¦3¬oâì ײw¦ãl®uëlþb´–“f?çÚí*6þÑLÏj¿ùWšÁþµ¯÷œ?.¦m:Ø·IûÛ¶h•4¦^ýƒ}�¤Ïð…цtAï=*@ï*4UøÓÓàèöÚŠîŠþ÷eËržÑW·dwŽStÏ>ãy`+€Î™²·Ÿ=Óç÷óì9é–ñ&8âúÁ‹ú°Î0Z™Î‚2ÑsxïÃÞêºÝ–íïü}n|>x¹çöqþæ¼´6Ýœœ°Î'­ÿyðöžû�ÀÎ�†dˆûp èJ_è>è@‹¿ùÍoŠ2G�…ïÝ<;»N:�àåŒwÒË6Ò§=†­åéÃŽ»'y hV¥#ÆW{|èXœ ûÒy̔ĻvðÔcmàñ#Y%'[�Ð~¼ºQÑŽsØs2ÂïQ�Ÿ>6lŸÖÒÉÂÌÎQ˜'ˆ¡Ï·ðRÅí:¸¿PbÛ#˜ÍßÀ…#(‡Ïq‚wñøò\û�äV8í˜\«rDëÃî:äqþ×l‰VÙõ}–üx]p‚Of$9¤¿ï£S”6·¾ã6ä¡ßɺ§U:~ô³O Ìî=pbèã èÓùÀòȽ­¾½}±'[Öà1®õ²k²¦7}÷ž]&£ÀÁßF¡DÎYVö™.ˆ T¾I†s’$ør÷Ñ�7ðûá5`Ó?è]Ð|´³ÍÞøüÂÓ‡¿øEÕ“Ÿ—¤[{ô½}±@_g>`563ƒ³}€ ˜ã33;)Lg‹{ö�ê°ÿøGÓÍ«×G²ÕBú‹D=‰Žûrì“•ª�+óá=ÏïöEò»wn|½0½ÊÆx¯`�®@§NŸŽdĠûç?û|Ðûw¾û�a{<©òxånÕJ9)g¶¹„ÚýÉЂ�°Ž%7 düü翜þÓ¿ý· 6ŸJfÕÂ7ýQúÏÓüztL貪*Nø§9‘·ÅçŒrÓºûiá}vq:žïd:àŽô\3£g>ÂïÎÎø.8³QÀŽc™~ú:'ÿàiá gõ  üGn»ãZ}ß^¹Ÿl8ýDõ}ÏI#ÁþÔ;§ ŠVÝ;�žÇaÏaå…ol ›ê4CžÑ½T®šçþ¢sæËACŠmVîÜÍ7—îÜ®–|°3ŸÇ39�?I*’HI†ðgIx“m«Â^uùDŒsñ©3g?ˆkñ{õjºHÕY­OâäÒò�Ö|tTqѱQ½k=&�; }¿}(²$ÇfÉ_0·ÑL×®�Ä]üón>N¶­€¹µ³ñU”ü‡ô`úK'КøÏâ}Åv§õ>À Üé h�¾ÿÎéwâk[¦›ùîV©èﺈìÎ_µ”/˜­N'f7€'_µ…Ò_Î\ßSÚGUíé~x…ñ1tlÔëá9ñ=›§{£YÅJhçósŸŽj‡ªÙï£ÊÌ™k·ÍBJ¥{iI”PßÚÈ„ã§ÏŒä_z¸rÿAIºí^êħƒcÝØðx¥s´>÷‚ ·à%Yü2\8|¼ÑzRÀ�x[í0sŸéê%ÚœÞVà@Î8q�†Ï¼“ŠLŸK£:ÈHänϲѮ\­à,|ÈÜŸ`o­¦7³ó­{Gþ?8Fç{T'žÏ/\ ¿—^zãòµZsﮥý×§¿öŸüµ‚¤«�$ýÉ�³ËÚ#çŸ0|Q!šzœ½x%~W%2د`û¢Ä‰‚˜F‰í­àfoÅ/뻺÷7Ò÷ ¾|3\Á³o\¾4ݾ’ý+±ìPÁÏ�]ó”Lí UAÓ•gÉ ³$Åhßÿã?jÌÐ×§C�{˜�* 3 ßȉ­Ð¡ÂÝþû³ºûò÷ð–܇¿Þ"¿U‡ºâD]>næ+Ð í³_þ|$!©B}§õIf˜ù® ÄõÞö”í'7ýòeOÛ÷•4ž.,NDÏw¶òã|~§Ï¼Åk>%ç¯ØÑ9*¬º“ï‹a£½»v†KÖ#A<¸¾¿¡�…ü[�gÒŸ_ã¡k�•âŒÀ4ìCIôxŒµx}–¿·HÓ�±s%·.Ä –uMÍ/‡WÎ/”`t®"ÃÆìMgP�C+æ$köä;D Á™L·V~ïõÿ˜±­«ÂÙ³ïšW¨uþ³�Fõ9›a9^"Hˆ¾@ù+}öĉwóµïþrD�Ôý‡?½=ó‹;qbø­%ž;vrÈ…�ÑàŽä&]€?…�Û½OÕ�ЙëÆÈVA‹xሩôÝzÉ8ðóóã®í�pç(wˆÿ¤3mŽöZÿÞ‚Âç.Þ -éóuý8¹œÎ;WQÇýé·þê÷¢�|zµëÞU7¶Õü"wâÕÏ_v¦óýÎçA?-!fÚ¨Û^Ï>XêûŠ™š�ž 5ZÏf© pèf#¯U,YÃ÷ÎàÍtáQ~üiiúN°8ß¼Ý^kœÝƒô|cNÞ¾6mÉö‹ÅØ>�ûⳑ¬p¿3¹õðåt»aë ù¸ÚÓ›ðã컇¦S'ëpríFñ‚�Ó‘ƒ%RÇç–²Ÿ´æ‡ÅLç7Yy¨‹r�ݺïÍçO¾_uùj#ÀtÃ;¿#%ˆoI4ØÛ(�=ÛàZUÎɧ' �íœ~~®$“!·_'[êJ°¬ÓŽŽ�Цft²5{�Ÿ�NÆoŠÿïÚYbwvý®ð�­B&â‹|j#qýG-äÚáçN°Çg¦t°âe[W’¿é"½T_ÏW\'A�?b½ßÉæ>ï�ÎøÖƒ�€»5±­à�†‘»:ì-Lâð£Ä—ÉïMÉ- ëhjt-0ÏO#qføZ ßÅÓΑ¤H Ø’Yé`·WŒ}³¥“EؽI)„¼˜¬;�Îùµ_ûõAÏsp©5²ÝF7ïäñžèëô©ccD‡àúùó—“×ÅbøQ¢k0f{Ó|ñ¤!*vË&{Sü)ãpà™‚p#^W›ÙŽFÇø�`ÿ2Â'9ìQ,³e {±X›¶›ëò¬£âÆ3ß´­ΗDð¹oC 8Ä·'!Ä8Ùˆ9«Éi‘©ÞƒZb”®=@¹S�­½FyÁËTЪ“A“ñó¢Ì/ˆ@¤¬ª¥„pˆcŠ£…ã­Ã5‹`Ì  jÙ„e’Ò´æž >÷ÁH´¡¦€ÝI©»ß�iÁCÉÂp·«]§åÀ£G9B[C$:ë–zi™RˆÑª²Ìðˆ¡p cBf©ãö÷ùðg9–Ë6iï�T5Á™c2ÚÿÊõ/rÜIY*Ø×ß)ÚOÞk­Í·i®"›ƒ„ŽZ÷6Ç@ßÖ¹mÓZJ…Õ—·WjGBIé9ëÝûiŸá0`ÂïLÑX�XTÆh÷µ©ŠÊM² ÑÈwm.ž�’1Í —]”ÂÞÞõ8=ÆËÌ!µN¤T vŽn<­3yrs"8 ¼½µ¯�¡ L¦4` cÁ06è¤hf¤”�õôaót3¶Ú÷£În=ÆÎu_×ôf,SÖ�ó¸{ïÑÇGµp‚ÿHI ² 9¤_‡£”Жԫûô@x<žÝÏ3G¼N¹Èy�P÷—5§×ëMj í«žgœÀ0Šû¬50d9µ†BœmôU l>Áߟ‡„A c1ã`G�4uw„ëUäv&cõjó<‚�–Y›6+`;emÞØ9}ÿo±v†“Œ3£[d‰Qd Qz7…ƒèkS8B9~•€`” &ìÜ“ð­�‰Ïm+Y†s ÌFeEÆEM çJL0æ4áÈ )† @‹Tèáüïü3­Vû®ÍÏ¡¤P:_®¹w×&`v¥˜=*{ÐŒvÁfÕ¾ð¸~ñg£Ù欲W%Kh_%k•Ñm{®6B/¦Ã{ƒtü¨àÇ⢵QJÆé»öQ¯Ã‡�2ý‡ÁÝç(R3#I°x&´œ•ÃÆh $üsî n©º3èàt×pŽÄ�/mc¬E0~ÚCRæ[ÁZJØZmó%hò�gø-žGFKÈ”Aä1sJR†bðÏ •œ¢uÐë+>¡@� .¡=†Øl3:³v¿sd?ïóÎL·�ùŒl™ÂR”®QÕÑóá7c^kç«ÚF[äÇ)qà]ÉãPFeO&¿«((Ú&dN þ ´?mî˃»”¶Íª‘lä-¾ÛÞ.ý@¦+eš�ê¡290ìÿi¼�L¡À/Ì(´oKétKûŒ6i¡èhà ¾xnX˜2±X@¾DŸ%ž±w¹Y3É9óµ~ï÷¿ æËßt¿¿<Ьi„“rçµë¥T< ¯Ï¦§x‘ƒ÷2`ÑXº÷2˜µÉ ‚ üÏ—äýŽm(H sÈ•a8ã×mK6{\H–Ÿä��·Þ4NÄ|ŠLÁÈäÊÒîœèðøëÕk×�_ÊØh ÷Þ{ïT{Ý–"°^RØÁN'ü‰&%‰‘‘BfÇû�Ârúäñ¾×Îõö]h,öQ={g®D«Ã}v£$…ÏȉÁxçÄ�•ÙÎ:Š—Y5ä?'µìÇÎ:Ø0|e#Ë>`Û¾£¹e­QŒ¶>íéy]0ð��jˆ(BqÔÁ?ÞÒ<Ô dãM4ÞÀg/ôfíÑ_d‰—ý ‘—ñ]XödÜì-™c´¹�?sÞ îšc{/'“î/+ͺÂ�æ°Tiw¢–OŒz`Q%ƒw=ºw·³Ð ,ý s\§p àÑ�TœÈn|*£{Wk’­º9šÒæîîƒ4¿Ö÷&9s0§�`Ç©cG§7­Á½ŸdàlŠŸnKgX{S2JÆšJSNûÕçUªD2h)ÃðP°Ža‚&¬ãþ¶û�oüªçr”½ ’×[Âë•Æ%¨2VIø"4½VÇó¯%¥ôël­•<å\G£ø›ä84H1öÒB… ƒ §Ð-ÊÕYÈ=8{†AËr±=€çàóÁ‹C¶3X´¤Ôޝ˜É9ü¶kº�Žû9æQ  &·U �9Tvo”G GE×çnãø¢‹�Iè…s?§w¾ÑWº÷÷¦s0Â褖›#J‘¸Ýh<þÄñ£Án­¢•éÄ‘ƒÑãâè\ÀIªsýêNÆØ�`b<“ŠWÎ F¾¤Œ;9ÚÈÆ¥ ²õÑ“ñá’×Z�"zóöŠöc¯þ€'·8žéC>Ûgkw/IKk«ºSÅ�âžçYœ4à»l~º‹j[1 zd0Êvpïõºõ° ´A£ö�WéhC¾)…[à¿hÌÙ8o¸OÞ¸‰€Ñü“ß›þ«ÿú¿©úüW‡ÓS‡m>ßýê¯U‘v}¬íêå9�›)[‡Ž-ÁÿRx¸·êø0—lUU¡�GåÎ*�ÃÍ…Y—-kðü±0é °Âëðãáî;Ý.z�Lwþ*|ÐÚ«dàH<ìÃd)üšÙU_ºëÉlÚƒgw­¥kƒûbð"GȦNgàɦ6žGÉËîÅ…;ŸQ­Óçµ””V³.OnÊa/à�AÝúÑêLw�ÇÑhðØœ¾ÑYHâèñ,ÝŒè'q|öfòž“ÛþémCGȆ¡‚§DÇõG%Q†«ôEíê9gtàd–Tì,ÑÅ«¡ßÿøŒ5qRìÛ»Pbó,XLN=¾_ðæ^ɨ­ðç^ËÙ_;V�ÊK<{ÓþÂ‰Ö t sbÁ�|;˜®cnù³ÖN& ¤œz'çXÎÞÓ§ßN0£]î®ÌˆèÊx=àG0dasZøû¦‚ª~ÆW$Íj#Ng†”ô�TÙq.ö©ýg8ã�>£JÓ U|ŒéoF°‘èMÞ¸%¨Ói�3pVYkû¤ýz»‡Ã¢Ec Lñ£2‚½œ¼oœWÏræì(çÏ�€Xž‹ŸØ³³x�LãµOï¿ÕºÀmI=}pÐ�ä‹Ù3âs½N’ZX’«3éÞÖ8*"‚2’°Ú³½yáç®ÝÛÏÏÉ;sžÏU¡jŒÎ!y_ÀýéýìòtVü`¥½hg-�S œða„½+‘ _ãpß¿oyì n r�{ø‰çmIUíC¶j-Hç•ð²=™%Q!äï>ÀÏù[’Ýgà^�d(ÎØœõ°_ÇzÀ±®à8œñ½ ºá˜<8˜mtfc°éÌ:K�È:g2h&»NóŸ@º¥Q‹Á@ i5çàÍ‹U„¤ÓžùÚ4}ã«ïçœñßU :¦�l˜N?ÙÏãŠÙßè…2l]êz_co½3‚ƒmÙ>Çß[¸ïô×ÇU&�d¯Îâúõk­oeè=/:»ƒ.ÀSš6ÂÅé¸;“ÿ�ÿ—÷³’ß/°ž.'øzŽá~ÿ‡9àÏ¥‡å;*i´JÉMéåäz"GÐ ¾7ƒù:³ ŸÔùäYIŒË�nu—Ó ù/RËÐ9yU>E—% n ‡–$·£ìéíÙñ:Y|òÅ…éãO?›^ÄýÚuv;}°–­s}Ý©[G>¶`÷(:[^^I´dÉZ´Í–…v´2zDÇ m¼é%¤Àz{åÛœ .¼æœè*‚Ñ•êÐá Úã�Ú`ÿäg?ÍÉ}°$çoUýy´„¡Ý#±öiºåèl-J–0¿�®úÅ•›ÙhªÑ«H2(ÔË‚ä=¶{f¿&ר+í¾SÈ®ÖÅÆXˆ7h/Ü÷zÕœm/~>Ƀ‡vg/¶• 2^…ðfAVNØéNÞÇs#ó�í½Ö3:&¾1»›~4“ÓϺ�îÁ†’ '®^º8ÖNÕ1É3VL>i-ð›��0.à�+xðW|` ½+~A~n­ûλ[vd÷AÑP`´ž^Î_HöKLTò?s ö™jGã-Ìú~Ý—dG�A²A´@ëlF¬ÎL³1\’­‘ùÌ÷x;»›Î½»³“˜£c‹ÊþQAÉñÞbt…ã&cF’ª~ë©ô· äéôÖãÙîùÝú¢/ ârë&áø—gú�ß’�Ÿ¿�/òM ,JTÔÅÙ<‹NЙ-è%Éüöµ+ù´JÖ­õý�xœ¡?kÏ×*K>’ �¥‘.‚{#I+ú_s�sÙwàh�”fœŸšÁïïqá]²ª½Ò©jšŒ OZµñøÿË*5×Ö‚uÎ~x]ÐF‚ß+?ï•çGp#y%©ÉÌ[cìiÙtæ7ò°�d—íË—«¥6<}–?a0Ûø‡rCg�!ûüã¸÷.÷™åøgÙm£b4˜“Ó㼺Ƶ­´kßêcÉÙhJ@ ¿I/H&gÒÍù¦;sÜ[Â@Woû“è�ŽÕ÷ãMW®Þ D%ÁsøOÒÏÀKŸ¾äüÑÇ�ü5ׂƒªÜwß{/\ÈßÞçt;ÓA!�XÝ•êYÉçÏ�«Ê·âšø]åP’RŽ.Ø”Ÿ -*¨aã±�’Ý*©‡–Áß"ˆÉ÷tãþµìÌ«á›QUóUÔAŽÜY¹ÕsM«“ÁÁƧ9'IcS#O·¤¿›—.�W¥ûîàxá£_Nwªžüæw¾]’ËWò ¥ÄkÞ„ º•ã6^CNù‡ÞÜè‹pƒ�’îÌÆ÷ Sà öÐ;gy›?K‡ºë_œŸþ08nüÖ_/êä=Hvn�Ì­ãßæÅÇEg:ÒLâÍñqgù�uð™ù]);‹ˆYAoŽBŸçâ#;÷Y¬sæ Ft:û¡÷c4”ŽÙ>Ùݪâ§üjó†OÀ 7g•³ÑRÉ ôþFxÒÇÇ9ç¥ìoƉ°Y*HiýüŸ’ew4Çþ~ºÞ“ǵî/8J/W/†ó,ZâKÙQ‰b>’¶Ä f£ÅØS%@…{‚¨ºÍ7b”¸s²Ÿ9x ÑzmJÑ Ý”u"yžEרŽO_3V@·K´¥XM"›â� Ÿžm·6,Äó%u²�^42O‘p"*Ö™U ùE‰R7F">%1ĞĀnÞ˜Ùzü@Ká¨"ºkW¯ŒÄh2½/¥ÃòéÓM_DF¿~šMŽ<¨“Æ·Þ?2’‘÷Õiòÿ`gô0ÝýV{Ç>‰ï¶‡];ñZ3ÂuíP€À7›ï³¥¾z±y:}0|­rÃxˆGùb%-Td¹\‚ÆëÎñŸ}x/^trúõ¯¯ÓñÓ‘ÌÇž„ GÏ U½?­@Ë—d �±DכЦ_¾|sÚžœd£n‰8\w•Úó�±Üݶž¬’9]AL† *1ÿ=V7ÍÃûó«åk�Üq°µ\»_á_÷YˆÜ OÖëC¶.n1Rea:R"öþÝÉ‘ûTÄß$I]»òy<©äÄöûàQUâ!ñÓ}Œn�OŸ)(ÍO¡e‘ =_B&Jÿeï9C~¡·vÚ%£ùèÉA~ú[É(ºŒXËî|ÂüTä9] ¿Û*^”Q0â¾ü§;ê,ȶËSœf|Àü¼xm7Ï&Ú °ñÐ(ÿÔëâPb2sÉ :»�¼&ç׆�ÚgÄNû¸=ѱ6à{&÷ß$×Ùpä.Û‰�ÁŸ2ü/�Ýtg¾=Ÿ×Í‹Ž{·D)zÆ~ßà§Ð%ùþí›ÅwÒiKÚXYY�>ùä£Q¬'f{6Þ·?¹7)Á¿ºWx¡õn/ äQ£GÙlÅšâ´mxìßû!|0ë�èT2ÿZ¼›’ŒÀÇø8æ¶4J¥¸™»3>²@ St(H3å¦‡Ü "NÕY;#@+p/FÕsd^;0óÛó0øf b†hè`ðmªÊ„ˆÑ&0Êa €Ã9Ógã|ƒ)90J(¢ßS¡8r Ë®¿u³,3 _‡)´gÌ´=·ÎaܶQŽ4̃ÂFàpâS*‡£ÆÏ¿ûsäL;03ü(ºÛCFÂ㈠ƙ®Åà9Ì[¥”k¾–R†£åq÷¹YÐÁ æ«8yP°oÓ¦û£ ‚–3?ÖÀ›?‘â/;Z–´jôgUX;žÒÕÁŸ¿¤­ôãzœ/ \ª%uûSQƒ™�Ï£˜ÈËÑ�€óú[_y7¦VeßÝëÍŽ†|fkÎ�9ñœ,ãs)[ëëe(7 BıgÕ‘ ² Š÷ß?ÛÙl)‹ã\Œ;&ZF‡ ¦}¯,0Ĭ*�s;žZ >YTFØzJÞ³YÍ²ÎØÞT[ÄÞ ùr¶$À6•²¥Ìà« ‘�¤ ){j�³m{Õ8�) `€h8Í9-(±¸¯ ¨Ío¶NO[—ç½(¨ö¨Ù@�³‡‡‚]:€;ªïùfŒ&2ÜÁ 8 d—ZóÑcÇ36 àðÁòaÛ÷RžŽ;™R3k’&|ÞhŽ.tO³]UæëÈ0œÝÝ‹bø@+ˆ~–%;œž­Çûèj8¦Â7sP9Õ<�å8A”Ñ …C›u 3E§à1–·Ðk…Ñéj3˼L|æä|–6>¼·üÞ’R¿7£r~aOÙH÷¦/®ßšÞ?ûîôõ¯½?}qñZûþÁ ÖºÚwŒíikZßx4íŠ~„­æ £¢Â,jîé`¼®Iáļ7uýXKxµµÌÑ;÷J̈0gN~¨[šg o‡”cJ‡6a!˜Æ) }ÇßpêÕ>ßìãÑÚ¹ïŒÒØIO7#MûÜç (³Š-e€/¸þ\½v«û×FóÝÓ9BU¡•(Su8úϤìl)ô1Ë`ð0KhRP›§A9âdñ5S=oKçëþ+'?Å ÏÒþŽÀã‹UõÃÝáȰVtÙç=‡R‹_1Ö|_c4¹/e­Õ ÁC˜Ž 8Xw�³ÆaR›ãIñŸø#• ‡kסÅñ^Ï0'¥£pÃðDJ²xèc­$É#µ{PNG¥‚J‹�f(¢ÎöuÏÑB^eôZ<mHh‰ãù²²âe%µ�~‡0Æ[{Öhs”1I©dÄ Ws�V;‹ÅøÒœ �®ÓI$0Dë3aM~d6ÆC oÍÀÏhå„TÉ…ŸïÚ3ƒ‡)8E`O-á‡c¿ lÛ®Zv$™µ†žÍ]ÑYàÆ�su 95�>óÁP)›“p\õûã  =O%Àœ3O°ÂE†ª–¼×2LÁ�‘À©õ8ÃOÿè±#ƒkç÷¬ÀѽÞßW`oàn޾#‡2¤�U¿¦Ä<ÎÑôÝïÊfnVÏ…C²¢)ðÊLž¡ÕUåm_ùr³ ;Ñ®¥œøJ±‰‡«SÊÁd 'ÈÃxá[/¥ð’oÚʽwæ�øxóá‰@¢ä¨›×›1ÓÞO—±ÌѺ‘�ÁÑn[«¥­p¹ó `ŒÃ )èQùHé�ÿx*EŽ{µ·¸ëî�Ï£{Îuívt·JK‘ĵÖ`#GñÝÑÑ#~mßeŒÄèç}K9“ú»À]ßÆË³Ï~ý ûïlöŽÍçÛœqýÙ�<}ç›»’�w‡�Ï¡µ;ãm­žQ}°C�[’I Eׯf(ì0Ö�A¥÷Ž z†?Å{o2WG¯™ƒ'ã2þ½goÆU¸%9¯Š–s:†'œ~Æâ�W�Â+| ïã”ÑFk1ÚYRÉ�ºÀg�ó{_§ Þ _ɾH¹¥~ø¼ ý™ž†·�q»ôŒ™^F‰Foè!/ìô9Ž üOœ—kâ´x>~‹�á«ègè)½f± ^ݳ Öãªê`ú½tôOY¦CŽ€lhÅq×}O'|N‡A• ~/UHœüžm�à † hüæ^U”vïwáà·0WðlTs„ìd<ãGÐ O�»ÒQF#€�ßí˹ª=µû0hÞ9yl$}£Ð¯hyØvñ¡]UøGª ãC¯_sü8‡à ŸwïGáå‘c‡Æh™*iâ“è’�{ò�Óã<9qµnýù�~PbóÁA¯£š>xÖªjœ [ØsŸÈ;-—� 5fÇÓð ë~P¾+É›^!€£³=ÓyÓ©ÙÜä·’ì…¹…×ÃeíñƵÎ8Ø�ä…€0tÚžŸ/<8Ïd¬Ï÷ÖÐ=¶WX‘ ÷¼³ÉÆíüǹw#ú“`Ùp2}IÛ#Øs‰<݆Fb·VŒíq$3fÓ¡c²‘ƒ•M ‡^¬J¾éÞÛÂ+ëWÁhÖ« g’Ä>Îo¶ë�«À>Øy.äópVÚŲ‰Í$ï¿kMì”\}c¯h¯ÇÎèpÐ2›G¢Þ7£o~ˆPlÐ$zÃù”ÈUûd›ø?"Ûáb7êºø^¼éÚ•+ãZÊ®Ÿ»–=ò¸q2×ãçË%ìw‡ÎçMÎÙ=uõ€?žãŒþ}¿ÈÝgžÖÁì‹‹_LôÇÿbZ¹z£€ÿÞ*F� ‘`óZüøü¹óáE®dï°…ƒ¡³Ç�Ç€iT V:féTõÅÕ«Óð“ªK›cºT—:|3¼Ý×™�nñ@ãÓV£ƒO~ùË 3nŽd¸kLk!ýÊJ#O–,·yïôáùûá{-ØwÎæ‚²Ï/>» W5šì\Ú·?¹~`øoÑe­°ÑŒÀþ…‹ûŒŠO“[Óéö¥ä‡© k87_ëâ'ŽM�;gݹ¶ÅÏ_Wp¾˜Ÿ|úét¶–¸JX¢ó>�WŽd�|ƒR£ƒWpÝ>}1t£¤F¥y¼Q �%-æïî»ÎI âÁ�f˜æ§HÞ…§ \tCJj„Šábç°µkö—>ã;%²%Céb|NðŠ¬Œ] ~,‘m› }ü3v6ð:ÄmËŠZ ]lè|=®ó^ŽþKxÌŽ3SwóRŒñÝ%Pô\�CïÛ7ŸØµºá«ì™x¼j9�©-ù3à��i›éFÛÓ•ŽÆ/“ìl¼¯]†G³Î É ×ñ™öƒ7£7ArT½ZÁÄ–¸RSåüþΜžHbŒnLK´&ë�Ö”ôq'}kG0ðY´½-þŽ§Íø§$ó‚‹ÙÅ�kÀ°�vm†Bë#OøÍà}™\í(zu-xNž|8ä¸g¶ùþB~´·ºñmÉžy³I1H݃ÅèÒï {%��‚îˇjv¸„\öñÅè‘âäÉw†MÅG´V…áÖp®òk{FíùøYÁg2û}Ú å î=Þ´±æÙq:ôv'GI‰³]ç¬ü a˜7ÍÕr>_àæèùóx€³‘œG¾=NïPø2ù‹ï+0'WgÍ* KX®è¡PàÐ áH�S¡aUíq¶�͵~›ì6ü§ùwUHÍóý�Ä�N‡®¤ºÜYðLÙ÷|Á–¾¥‹ ÂÌl´�:nòÂk�ÌØ)àéwzYîìÖG—À›Ñº�]Š+‚í+öW7ÆÛö--%_v¾ññO~1}úéG�‚8“lÝ9�~÷lüŸ-§]t<0¸ýì§¿Èw»’®z`¿>ôk£³Ý‡?û°D¡íÓ׿õ��‹ìÔcù _åCœÅS3ZïùsŸ¢µì�Cáù™Ö›�“­t£¯»ùw÷dO‰+°µù’÷t?64ûæãøørղ߸Æ7óÍŒ�$£“Á[ó/Dó±S÷GOÝ™~üý1mm Û»ùƒæðèGŒä¤Û Bò¾à³dî’”ò9Ñœœ• ýk%D{®SL·—”uýZ],.NßÿA8ÉNÌ/=_!W¨çþ¿_3‚ëÚ®(+xÔÓG‘ž7Š*ÅE¶Fûb=ª°¦ûÐM­ïE�\黃ÇÞ䚎ůÅgùñ%çK^ Ÿé ¤è>ƒï¾ª›Wg‚žÀy+û:˜ðÁ-ÆÏð]c}øBª«�K89ŸÝ’m ©y[Ù÷kEý¨6Ï£ëO{ZŒWþì‹ %BW]�®Lvzž˜œÅ?u<–ì?’(ÒÙ<  ³ ý³cW:ø$hûñt=ù}öÌûÃÎ|V�T²:;§Ócè÷·+tÐñHâ3»—>ÊOz¯¸9@NÞ*¾pýÚµ~~Ï2’2|våÎJÉ‹uüHÒ§è^è¥Í¿Üò�¥A×xýOq€½ÐE޽ÈfýÍßÜ[pziàìõleI:Ý<¸»2Æ;~¼£Þ2?ºwèµ’ê— ?yÒ8±ƒ:,¤S”¸³òhmúÙÇ_D£án°�õøñܦì“ðkµ–íO ®/7ŠìÀ®¹|òô»&‚óËbd/Óÿ¶E÷'�÷œ‡w¦ÍÏãKïN|ñÉôdmëôÛï�Ž¶ç¦‹7nLû¡�ñ¸{ÅŒ.œÿ4¾X²~4ÿ*F[‹¥ªÛ*ìܲ°z´éð5¿RpoÕߺ´üà—×§ã'J0Œvî߸:hqÛŽåªÎ× ØÞ©Û«ÝÆÒòÑG¬ˆïEzïË®]1“¤f®Õù®Š>v‡s—[KçÖ—Â.z¬âÄNOa£ID4nbztÎ ÐøBôsˆÎ³�ãÿü O:�ׯëÐÌ'Ó~CŒa{¹çz¼Ç[‘büRÜóE|°xMzQL7™]|Œ‰Å¼ 'Ù|à›·5æ >§ßüæ:xô3ûÓË:×;óùì,öúàƳȺ›/“|®;±D'Éç3z®etÁFä¿àûØ–oEq�xÃýlíó<ô�#Çß™VâÇù|ŽŸêo.<¿Þ•D°Z‡Îè‚ň”–‘¯¨øNº®®*³nAt´a:„à• “¬\›—1/nØÞcqÎMW…Þè¬ãIÅùâpË�ô± ÝsW+ßµ3Y˜^° � EóS�‡±ÊV Ä!­ÈÃ0:ÎI‚|[̳Fø^C‰ï”žá@Œ ªtà~N�n7Sx3èCJÎÅM!íìeÖv») ãoU! ãSe´È/žÚ\‡Ö¡¬Ü¼Þfß=;¤×fF�¥�L×Âm÷fŽU™œV}¶ï‚I>7”†v�©½.ÀËpS O9rÿáŒí�a†Œ#FÙÓ˜6c›Bµ‘ƒÏȰO1r?]BB?Œ5‡×^Þ{÷sò ¤2§¨ÃX{Z–ïÝé`'LYá¤hëñ]gPÂ�;»Ÿ ¶Z匠  @Ê ¶¢eä¼Nùƒ€eêoB|F ;2 g†›Œ�Õ²Nd�hYA�íÏqù°üHˆxù¨ê²YŠö«¾¥©„ïS88p6‡”=º¬{ 1S´l²[‡œÙj0PU¼ÌžÎêüªÝ,˜ïJU‡ “x>¥r]0ìîvZml2¿»’uí_Ü›æáãÚŒTñξþÒW eó®9Ê~ åu ¾S–_¯Îoœ¯÷9 z¡™ÞeÐ0ZÞóÑ’©�„CyìÖ"Æ�ZÜonïCq 8 )›cÖL`?}twdÌ0É1CëÛ‡+×g!¿Ï©}GI ¶7�­Ä‘Çu¸yýFBißÀW[oãÆoOŸg,¾ÿÕ¯AÇj½ŒŒÖ-Ræ‘ù�ÁD0ŠcqW™;‡�Ä8; ÁNÂm ]¿/|õ½‚);fŒÍ)µÖ× ¶9×o…SÚqÌR3�§åÎýxB™]wïÏ‚ÏÏw.@IDATCÝÕLemÏî=�é9 ‚ûÅÌú8p)xŒ{†�lŸù=kÓîÚQùYKóÁ:§„[ke„2P( ÖÜí]Ü�àŠ­Ü¹?èf1¥Šîÿ0£Yvéb´:„D0ß×LiÏß}Wf�$–­Ã¸Ã¯(az—Œ€(¾Ã³¸+£)GËý;×£¡× ÓµÖ©3…c9å=L ¬áxë’a(ÙàHŠžö*\5/N¦"‡%<…MÚÖiÕ4ZòÂˌłœ‹ÇŽe0˜ÉçzÎTdµŠ2ξU<´{hiÂi�ÿÌ%àî¦Üà û ˜²A¼(P'J<º‹«%ÜrŠw�–¬„ᤵ2~´s{Ý9:ÎEíÌñ8+SpnNk¿f'µ�«¹èŸN54|æ”Ãsê$3=‹7�ÖݲǗ€Ï[ÅŒâ‚"”SÆÉÞý‚YŠPsrÞ´æ±ÆÚöX'ÃRâ §M‡wÚÜ,lÖúYL R™ŠQçpè0&ç¢)ÂÚÚ(© 1Nä7�3Ò.«øL&$Èܽ=ýô2Ö„vàƒ yv¬y锃'µù$Ì9ì¶l]-QæúÀ}n·Íse¢§\íi�»‚§'\R­¨‚S%:çèâPå8pèH{ÏÉ ÁÆS34ïå`¿sW¥wgœ½�/&¬¶Åóeð©f}òHv®¬á® 滺¿ÛçeFûœý %J¶Ù5-…œÃô` <ú€‡Tc)Œ8ØW¥†`e‡Ü¤Àx�¤©Î†ñÀ¡û"šæ AŸ猕7 ¸‘Ÿø¯êZgˆ’m íûÞBéÀå>'ç‚1‡�@ž®Bƒ©·3fk_èo­ÅõÉQò½�Ïo~ÚŽ›5�A$øÿÓkèao÷Ý÷])®œUÏʤ¾zýZü°ñ9´rl©€Ñf¼óÛš¼A»ÎÍqÔ?Ïy¾÷EÙÂÁïfF�óuÞ3ÞQ ¾û pÌ…#ήnt6†-~À¾žr¸ÅJMÈ6~‚CikŸ;]‚ º}’ÌÓZ]g3é¨h ×9Ò$z8hFþlüKIn�=ýi$”„� ñÉùø}ëmP„ˆ/ÀCÆþ�?ã§[·Ö.-xpX0è‰kp~xÿ=WÞgÉwô&TÐ¦ËæäÃ?ÛO‹×õá!CzP÷˜u•ð7Á%p$_6mÂC9>I9×’t\z+å\P’©5Ä[­E5‘аS'ŽæÌnÎæµë�ë¦cª¸ˆ×Cq(§±ê£ØLùÍéäÑæÀå¸ÔÚPööž]‡ÃÄÏ÷ @ žÓowÀü—~å›É‹@㜰ï¿÷^÷2BâV3VëPнµe¬?~4nK^p*MÓ™þŽ#q’¾sü`ºo�õæPÊèÿfz…ŠŽ‹—¯¬n¾W÷±?m´Îœ9=Þ»�ôî)aáWüØ}8SGŸU¿Ô.3¼ùÊÙw†SüFU_9sbÓ�52ËïÈ¡÷‚qI“9Ý�æX8R0ßù^ÍÙÿAŸ;Ø}ðYc$ŽÕaÌ$A|ã+ï�±Ï’…ªÚß=u|$¨6Ú/@Qšq½gº¯`û‹dˆD'ç„–F•X0?ÿÑÏsR–@ŸddêœÀ˜¤c¯&¿Ý“£åPÁ¦O>ü|õå:Îì g~¡i6~æþ’¢pû·0{�ìÚÔ<9g' ¼‚ß�Õ,©ãÍ´ÿÐþiGö~=‚xÝžïdæ Éa�nÏ@É =‹1Æ!Až¾5j ëfœK¢„¦Gèö¢ 58›SFÞ Í÷d^°=&Yl±Únm^¸„I†¾Eq–û»}¢2 ‰xñNXv¶âFÏUõÀé«Í=Xha gÇ+º“ÛY«Ï Œ�‹hšœ `ƒwíN7Ú�óôaxö42�Lê~›³ðJ/:ËÐ:sü†ü-�ï““ý¶ì]üdîB¸£sŠd0¸TbÙt«Ê¨o÷{U’›Î¥ÃTPêhôô¸@4œSÁ¦e(]‘cVàëv#kt(3ƒöî�ÖÏ;uêÔÀ‹k×nŒà¤ñ*Ü+¡ä^ýãCÎ_î™’zŒ[á|Qm´|(¾Ð3®<´K¸LÂC:Ðî­ž·r§1Ñ Öw¯„rûä‰ð?ûõVk8yâx¤�%ŽÄ‹’­GÓûT«Ž<�?ôÞ­d¼Ò}D›^UöGŽº‡Ÿé=F®q¼I”Óådoº‘J2Àç©f=ßüöÇ9Dï圖8Ó-U±©^Lï\î6§��&¨ÈáH/åäv–ð`$R[4 _Ùÿoe)½Î{xšk} †I!ã¬i$ ôøMWâÌúHt‹‡':GÒÅ ƒØ9œâw üy’�I¢§¡™ëWõ¥_•„<èšö…N“3’䘽†®Ô^ƈ„à: z>ÿÂðÁtÖd‹qZlQ0w+ZYÚ»J$r’Œ¢³=K�·ïGÙë9*Ÿ=Ëvi 3ڙѧªFú?Jçö,òuÐUûàd,Ò¾võ<Éã_\¸¢ŸÄ´§ŽD’.éúøIù cßô¿W9±£äÛ7é)#¡6Úmk%eJúâ3Ê?m-ä5£TëÖWÁ /b_�Ù8ÀB÷¾Ÿ¦cK긇;Ö�Gß]¹=}÷{ßëúYGVA*øô¤¤ì§Ï�L ,q¶Ît¥.ìåÝÿßÇ >¼lý¯âíדéÿ²Êó7füåßøÍ�;²—– ~(!×%tï®k‰†!Y­².û;^«]öþ5óñ7ÅÎáû?üÁôá�QYìüA|=; Br$Žg¼‹Õp-gô¥/.5ÚâÓéо¥º‰Æ�¥ûu“tbƒþ‡? R�)?€b�宿Zò‚nUl`�Žä\?˜ü¡w<{•OáEI‰ùÐ19¹Ò˜¦#UÓí?T�¿{^Ïo÷¼ýI”ÙÓ`Ó]ÏpØfƒóG�u;ÝäüÇŸM—ÏŸ›¾õÝïNïœ)€Ö³ùF:úسŠUSweÏ>©ÐäÓs§wަóÆ«%ùÓÉHã{ÈNüšd‚—æd¢¾Ì™¬ê{ï‘Gøã ܇%ú[è;ƒlê,ñ ¼J@ƒŸ@׉S= Û±oÑ>ÚÚGFw½1$æÂÓËØZÆsìiÏ’NUú›Ä5¶#}…^ç¡­ñ6zeo„3ùøòm¼iŸ&Éi¡§Ñ”ëÐâà Ѧ=ãƒ`Ìÿ°ºêœ£6g&áÑlfüÌç1+h’T4“íÆež={¦3Vt°#™tl莳. [jËûÞŒãá3J&áu‚†3ÞÉvP̆å4/y¢ý,vìäAÛñ½íÉÜ1F*®ÅÂÞa—Knwz �Ö«ì§ó9K3WÉ4{E5üyàmùæù##©�ÿ–Ï‹ï—},8ÇY¿uËÎ*CŒ�~aÿ ´®E3Ž/uFî·_Á�ÿêî«É®,MïûN áÞ{ïÊvu÷Ls8ô éNüº‘úbº�B 2È`phfzütuW—…÷H ‘2‘ð©ÿo�Å qÄ`ŘS��ÌsöÙ{™×>¯Yë–Ògä z°Ût žLu}A‡°"òç]2»�»v¦ƒ`b­È tÉ~VY>|®èˆ¯†.¥ßÙçªù6ä>~64Í®€qÐ4'Oïßpvò›lnßÙe°bE3|°Q±é::*t½Ê_ãßP@}tg„ÅöùÎn…�ªtLEDϳý|O­â«ìl´ö†n*‰‰�e ‚m| :»íþ¿éQ¾!ybä˜äœÑæ»oÑ™Úγù®\¹.ú°¶ìK×¾©(ÇË)›ö®êˆ×%¥aìì­S'O ¿N0Ýž=|ü°ï¼é¼¾úìq{&1%Ýþ­+ S�*8R@1YøÅÏZÂQÕíù²#‰)}ç(:<½3>Ý΢58c)LôQv’à¯ÄÅ[W¿ï<äÓ‰3uQH–¿¬3X­~;Ö¢½ËŸa§ìÎîqLÊ¿þ?ÿ÷éÞïþþô»¿û‹¨JZ««#ÜL¬ß³õG×�Ö™¯xVc�Ä6ÖK>Dœ_hŒp ´Æ—×ÝÀÏãY~¸úÃHXä«£O2øÿóÕ}þŸW 7�ßÍ÷1þ§NN?ÿìbü¬Ë‘Â>GfCuß}{J,O/üpãîtû~ÅwÍ'©8âäßùSG“BɰаØ¦ßïÕÑkæ¿ÎM‹¡,§ûÖ1ÅqµìsEeìü’4‹ˆßÖ7z&Ðî”/%¶£â­¥èçÁýÇ­!¬Êq�u¬|ú`úåŸ}×çJÀ-Ù?¹@¼îÈ×—ébÇ€�_^;£;k9KH”È—ÜjÏaTŽX{]’ ß÷Y6àHŠŠ¾ø�•Î^\Ìî‡Ï6PÔ¤wÍV0äxú ¦¯ƒ‚„E´Ý“C{¢×íÑöþöts6ÐR]=$SfØ‚=×QÅg' ,JlG[ì}ϲ¶{Â^~öó/ÂëîLÿò_þÁô“O?¾° ¥Î ©¸ßý�/F—·?ø·”Ì;Óº»înñ-]hMv…ÿïÞYbxsÝßѱ�:rxóÖ�#f$×5ï…Ö{S¦˜É¾�q‡ä¢’£ø¹+ÉzIOd.þ<˜ÿC¯>_xVbåòðm�Ã|ZÓY<4ßœ�Œ{.»—ŒIéÑ#Ûú¹Ôûtœk` H¼…¬Âfbx[Z¯WÉjºlèÚü{Ä÷—ìâQÝVž77É®ß$ -,d4¿Á}ޯȵ¿Å>¼Úë‘X ˆ6O4^1–mý�±b�›“Sn4º{·W mzF>ßñô9ò ™ºç»o¦¹øh£Pòä!G’Ô5wÃ\ Pù :\’yì…nëïN»Ž—@Ù 7m�1Žî5�ïÌ•@4_Ížd΃ >W«ÞКJëÁíOr1™FÏŠ›ŒXp8ã誘=öjÎ1âÒ»ÅÌZÓŽ±,p”A"+o¿ ·˜]ggšŒ•q*è(K…a‚ T«/œKS&_Û¬B ¥l8ÎŒ‚� £ÄFû�&)�ÀyÆH& õÌÃjAÙrƆ ѱE½iÓRž3ÁÙï³Ì •‹œVNm·Ë`É`ˈàcÜ÷oº¦‰P*@~ +SÅ¡?0r[÷ÁxlAtY>ÃàA=‡ 30Á�wµÚ™ ´"d@‹v¿kpŽˆlÚ Â}~1F$Û=‡Ã©�dNtsvÿ~ÉùØ‘áßy]¸¼oqHl"g\ E@Âu Lûº@œJ¬…Ö}wÂU[h•�‹"ë)�ö‚ªÛ UF°à]Ä.´¥søÚ…i!#A _ÿrFÂý{7‘ï\m¿OŸ ØÍ¾zãvk[ÅÈÞªå_´í©Š& 70\/#rT˜4Ìx+A¿œcCéíÙ{xd ÍÔ†˜Ê$m­qÁ³=Û[ÓFôt¹n)?m6dÉn.@®šÚzÚ3•i²¨FÕFwdŠÃ§�ÏŸ`ÊÒ“Î’n,öPÂÄBŽù`Þ–YP‘ñ¸R÷@gÆ›ÕZ~ÇXo‡’¨Êµïl`z³Pü65e¿aN–JÊ÷å“AËhèx`®ÌÐõײeº½( Ï©õ¾vÅë9'óÅ7v ‹âÎÌHøgh°â/AŒáE‹Ë� ™êX�@Æ8ħ‹ƒ¿ÉkA­ %X’ÞÔZFׇMµÑzݸ%¢�W‚üx_€W¶.Y+°-;ökë±Z%šláŒÏÆù¾¶ÿ”39"à³'%ÏAZZ óz×5Ú(K�(†¿‹—G•rk1“l ¡yŽÀÊÚÃxÇy…ª©Èìh(š¡—ªš½ç³í]=xÈwÒ“"Ó Ãk=#ˆ t16IJkɾíi$ªœ>}¼sn.ã–N ä8˜Î>R-#±a±ä——†Œ<{úÌñÁ'ƒ7›‡½»¨²ä\n¯‚]öú¡CUg¶Ž2„ÑÕÊêÍÖ/Ç5§Œ³½­ÄàŽõvo4ÁðÔvmkû®2þÞýÅä@gæöìTŒþ¨�•ÝÍ `¿¡$•·d¾2Ð-ï:ša”–`”sÑšìé™;ÒöØ}6xçpδè@u÷F3£bòÛï2ÿŸfè[?8§ÿQu :VÐÆUtš¦kŠn۱Ƈ“Gñžý¶ù4I€ÄnÚä2þSÙ° Ý÷.ù66=ÓÚíÈ0~Mö©ùŒöûÉhàã ÃùAÏ÷òØñàñïïÿ3«ÙˆþKFòŸ^Í&R `ØJøY d]‹†Ñúž*Ä2l–Ù|0PEkë¥å»#8ÆáÀ¼-áMâ"†Ý£2ÈÏ{wng¸×þ<»Œ!/+–ýµ^'€ c0hؖç‹Vy’˜Øß=ÈfÁM‰ŽŒL,ÚQÕ´¯<äÜ‘üR‰Ë60²£€)ô1@G;ÏMÝ€®½;§rTáF ý8�69 £r;þ|�ŒI:�M’SîkÅ�CÖpØ-,º6Z¶½=ëpàû‚ Qic’aÊ`÷]À§X†GRTã¤�ä'Û•þ™ÇѳsòÈF‰-;sÐZºaã’ùª­u%<ÓPw-IU¨.÷sôÂ�éx�°¥tGMÄFåöæ@ʇ9vgÌÎT�¿®ß¸3¾+h¼Üžÿ}Áè~Œâd<hvFé¾ì¾ûUa¨ªùüã�²ï6Lß|-9ý~:yîä°‡¾þöû‚ »«ê:7‚f«ÙTŸu­Ö‡¿ýæ»Öc}ú�/> Á·ß_©zok FGÚGÝ_žNç òíM—©`ßÜžŸ<}¶ ËjÀÀÃéh�3ÕçÙ€C üã§+eâ?H¶-¼+a­`ÜÓÀ†�ÏŸI^îžnÞ¾7ôË'—ÎŒ¤XG,í :rd]tÚPÎ&_¿y7î/1©ß ZåíË>Ø�ßò¨j6ºíü©cÉì­Ó�è}Oÿ뙫%ü±DëRvÇîžqêäñôææéÖWß ;P;ûW�Uîül-nµx£÷Èn2†>œøKý½æFªÛ0ÏQd³ °vß9ý NrPܯý߇{l,1ŠCÊatÝu‘Ö - ;žUu†/Uð·ìM&³Ðû¨Šn·GÇZƒFÆ´O2'ƒ³ƒ»þ$GžfSqF‡O×xØÃžÈ£A3‚wKüÀ÷ —Ùî¯r4éTká}~ƒê `Rä֔蘠&C&à=SÅgƈ¾ÆqÍ]v?›'�1ž‹�¶fëö¦G¾a ŸQ ôUsz‘¾ÚP›9À^twsÐ6‘?DÑ9ë­±nlµ!zÞ8óÝóú]¡ç°ûÆf@³z(½ÄwÀë‰ßžÕ½{�œœ%j•„Øí…n‹�¶†¯²�~úûT±I½uåûéþÍ«éû@¿�U×;˜E^“}ûëÞ°'Z”¼"#ÿÌ™³Ù燳“ñј="o?þè£Pç)€Ë¾Ÿî™îfç[;nmª�1:¨]ºpa|Oð`gíùó C— à£íƒ³�“§‚ä‚Õ3�REÕáÚ: ™ó¾tƒ³C%øÙØÓÉ¡ñû¨’nM?¹|qŒ{|vòd (%²$óµŠ=vä'c,Σv>»d Á3”¥Ú-±5´Ù;–œxŠ×²ƒŽ¤ËŽŽÀú¬*çt|éyl[‰›Òa‚Æ:Ð1’‚% ­Eoæ�.+aM˜º;HÂá£FFmotýàÕ¥dm­Ñ!:àÇâ)ã³ ôÔa rXÈì³nŸ>t¡7¶zd«½|™ŸÝø*ü��#`Žî‰¿^%C_$+%ºï.©àþË»ñõ�2¢9ïå¢#¼4�€WÕèÉrö˜ŠqàÕB:^ �ó¥Ü_rîL®ä¯ô.’œ¬¥®„ÁQ¶�aóQ¹hþÎ –¨MÆ�CÛ’�lÑû÷ë¬T�óéò–:Éd/&ÿ÷Es?ÿü³è®6àÑ‹–³ï§ñ³±8ÇR i¿öu‡ ¶$êõ"¼±à�“¤ÍQ €ÞÕ¸íÀœ�g/Wò‰ºÃ«ñ³¸I7ÛsñݯûÕà3¾Îûõ]Ñ™ D~žhm·µ·žùa-ñøÌ&@mM/Ÿÿÿñ"cøA+ùì÷Ü™¾üò7ù6¯ê÷É�ì$ ‡ Ùty°/y ˆÂžë‚2ºêp&S7ìïg­Š=_šþü7¿ž¾ûÍ7Â*šP1µo·cžCÛtþ ÿó¯~õëiS4p°£]ÎÔF�èa²a{ÉQ£*xÐr‰ÇéÏýa»j¡‰Î··ž‡ ÚïMÿž;vúã?ûóèñE²¦äêWŽç Ûª+É«‚Œk%á¿�çøAº*^8¡ Ñφ®Ý>?NkåÏ �äª\¢? 39îìs!à“éþëÿá¿ïhŒ3ÓÅ ÒñáQuJR§óÒ“�YÇ;�è«·îL‡[?÷’•ëÙÄx�ïݳ¿1ét%AµÎ>ýK^`xsv`k%À3£�ÆÕg3Û¯÷¢${AO šþü¶h¼D†òsà'ÄÉ,xMG\jýزÇO-б»Û¦›ZÉùÏa•ìrÄØ^Ijíí¡oÞîȽý Rv”]¶â çž‹oð,ßÓ?�³¹4ð‘\Öh%¤XšoµÈ$2Š P5ØÔÚ§tb7ó1æ¾7 }HâŸ%Vo­ÃåÉSGú¬ÀB<º)þP ’û_wOÝg¯õ��©Ê»uw±â�ì¸xùÁ}öHÉàÑáè²Ô:²ë'@/°ùÄdà_²?”Ÿ�Ðï|Ï|¬µýr³µW(‹ðÉeìÁV¸5ß’ÝV²¤õ´�=ëø�³á+å7o,8wìxú¬ï.g·:JstMðŒhËʰ—ék6üÙ±!~ï’äà,1«€qßa›ÙA¶˜*wÉ“l 6Ó �¾Gþ¡?ßò¼ý�Õé(räèÁ‘wrÆýîðKØ�½76*N i_çû>‡{˜Üäã'™{_"[-¹hÌýÞÿ¥·òÁ¿¡[vÝ,aÌÒ5öBr±÷ :£'á…Æ:x zQ˜Ã¦B3tì‡.® üq‰ú‘Ç�ã=¨}oȟ잯+ZÅ9žKw§…ìþÒ_þů üÞš.\¾”œ::îZ^ll>‘Öúô‡½£}ÎŽÒS7t¼ÚšoI�Í¿"£è¹ÁÃð§Ö m•í_…xîëdè–p˜‰£c$ÄÒï’�vÆ‹.�Ëpl\…ÉàU�Ä›;ëö°1Lfñѳ|‘¥éÞb m á•ù·oUýß~öù§%6ŸŽæ·GO�·ž|w\�„I>Å|søò�ÿ=ÒšþÎßý‡É=XZÇ"${ËÁh.ÙùÞÉ&AY:ÐqnãÍöO_d%�×íÈVIDzÿýñê‘|ÝîI0oSmõþõãÇhˆýpøhIœh®u¹Ö&Á‘,9�âïKL÷;ý�É2h…¿mÍüHøá òÑø;öÂýáÇÏ[ŸÕ03ÝÓ^T4 ÃQd5’T±ªÇÿÆÂ¾‘˜2—®Ø\pw–ÔXâ}˜S›8‚‰Žâ¹wçNëSKíöu.ìàQ¾é¯û]2BÒnÇcd—ê`êH|¦zžƒ šE…Ñû87½uc�¾ÊÇ{\g¨åÕdI:Eåú…K³=4‡çCž³ãè]qª!ƒ¾è l¹ÆGfÑðäÝá—ºKHŽc¯íh]ÙSl{¶°�‘ÑøtÍ#{ÎÔA’eßëÈ I´dÝó6«"÷ôé3C?>¸/ŸºB¨®�1)œ8Òçb}‡³¿%JH·Kgg˜çÓ·oF›zImxèmG4ÀEf·l ·…Kãt £TØz  ùÞ‚—äÃýÇùÏý·ºþ[ŒëD-ÕnoÕrþÎí°êõéøÅ‹ÓæŽ4øþÊ‹éóóŸN—Ïž™~ýÃwÓÕë×Ò É™xd>™q;]¾–\XˆF²œ‹½;>ÝÔ¿ßvV{ÍK „Ïbgä„)íèUUo/¨¾isvrôùèE¾òþÖ¡ûóû�¡ŠæCç?žÎUuóÞ»dgsLl+Þò¶¤Š½{k_Rˆý~¸T²Jv¨NÄûóqÈBgŸÏUÀ±Z75úÝúUE:äÕ›‚%lÝH`ÄׇG(쀃èÔ²ýõ¶l”ûÉ{—nnoÈr_wEùt®vþ;?V¬‚f;DÑC·àcêèI¶�ø»˜^²?:“E[—’ctað“‚ÇGù#d»":K€œßŒæºÝø{ϾpÆt÷ËŽ›UXÂÿ6¶­ºL7>v�‡onm%ÿÂðé»×ñ¯c7ÞFç|¿ùy]>VG‚“$%IÌ’ñ…÷CßwïFÞ±K%ŒÄcùëoÇyæGò ù¯d Ìz©ÂÊûáè»Ò!‹+é×l?>®Eœg/ _/þ±.æFÿdUŽû¿/é7ñ"þŠu²dËÄÍ)Íí´o%¸miN°G�8Ö±’Ï<¯zµ]ð ö$Åõ‹ì&àé›q~>â¨JUðôhF·ìÁ�;d1º"²a]áq ¡Ødˆ¨›7ÍZsÜ,<�C*2nœAF̲´›\›éÞä¶}1Žb ðÞ7aA •‚Gã{k«Ã�4}à3ÇØÆº…Cð0TŒ‚¾(&–�Ƙô^Ùs€¦…óG 38†ƒ×XÜË|eï8›nG�!  ö©VikU¬8ƒvTXµÈZ­ æjíCg=ïšWe-™ßÈk £Þ.FTÅas [·&s:»óp¦ÛAÀÔh�¶”á²@ö  /`ÚM)Ù¦7 R�°=ûŒVYÚíÈ©z—Á°)ge~[U5Û\‹,Ëj(ó¾K oαֆE€øÎð ø½u€¥ ý–¤ý�­µg ; ~RB›7?º@‡À½ýq^ƒò}gØR´kµò tn×ÖŽ&A °²wû˜ä¼½m¯Ü€ƒ{e\¡As4v{s|TLwrÆ"Áó¢õ—�Šéœãû¡  ³´œQ\¶#@ �h«ç|Ù¥œvYTÚè HP€F‚ x‚RÐÞð¸ýÈPk(¿m)îƒ9¸·3”Fˋƃ&_?Ù¸PØ=nß[L ®Ôåð0Vý~°êiϸvýf×iÓV«‘ÖNñ± þG8–Ðû{r¼èd�÷ÑÖ#a÷T¢¥œòӆϤÆ(‘áI™àÚ–:SV•òÅ §sŽþB»²‘9…ªRî5G1L{p4#QåðŽSÂѸ|NËSç± ÷Ó×nfðàl_{Û3Ϻ•s"#J[JágýÔѱ–ÊâÃGãN¶•b€nY÷20ö?ÿÅù�ÄV|ÎñA#7­ï=|ÒzT¡Ö¾îÚ£eÏÌI(aœªÜÒ.ïS {Ä›hDÀOt¢ÅÕµ÷ËÎçÌE€93‚…„ñ\Y ºÂ2Mµ*Y{z»Úy#­)Û”‚�U×`Š®ç£Ûg«ËU÷çôÇ/xb•ioç�¼ ¿ž®=ͧPî?-“)Àî󷵜òÒÂkóÏH.ƒ²öC; ˜9_ 6²éû\ÒÓÁZ{3dˆcꌅYEòHêÁŒ�½·|cÛ•ä8C–‚Ó2[å^n(­UY’DCé ;ùÐüÆÎ0÷\�[›}Ù¾=E™³CQ½j^@}²�L\O¦“áªèß«ÐèY2ùÉR€×¾Á·o6ÌÍZq‘§œbúcKÏÇ{ƺu³£ j´Ÿä¸„•T²Èœw¿-#RÛñãÇ� ã`Ã0ç$xÖû÷³ ~ôïøô'ƒ4¼-£frÚ}²ìZ�2sNAÏ`'‡ÈŸ)ïG%ìàoÆ.pöe{‹GÜÿ�=loröX€[%Ô¹EŒ �¶Vë âYUyãŽj[£ÝÉ-²…†Õ³=Ú�×Ïg]ªš“ö4ÉÙžkìôÆ,šúoÌe86�áYú†,dàøÞÈfd w�½óÂód9áûhÛôèæ3s2Ð�9›ûc¿ ü¬½ïÍægä3 —lqì€J Ï�}7ÝÐ}Êdè“̨-«vÊ~’DÃQæj…ô½Üy0Îø÷¿÷ÿ™Áùë?½šQL÷lLžHZø6â_ü‹`y4=Uå±D–g¯j|jœ±KŽài2]¢b«Üúptt®¡sK Ha£-0eý¸ß½¯ãH^ö~±=ŒÛQíÔ½–k–p™9–}ßJ³?8²t":$[>óŸêkÎÞ»äîÑ£:keº¢i•® \û=2>Kâ‘AßVÇ#ÉáöS­¯–£½Ñž¬A!�õ_”Åßãÿ¼òypªýËr0z¤ ÙéÆtå86B¾t¾g—xYà|ùâùÆ�Æ÷÷%ç$ߥwÅ¢%¿3&ïVáÉQ¾xál�bŽUÅUð9üóŸÖž0ùrõÆÝŽR÷n.ß|õ]2¶,ôÏ?Éx6ýê×_uæù‘!;¯4îÛ¯?¹|a€ö7nÝ*¨\«ÃO?A¦o¿û~:\pîÂ…sU’-WÝzoúøÂù@˜ÃÓ•›·Òg¯ ÒŸç\ýöÛ{À'�Œ€Ù£Ì�šÏဿ‡�““>_bÓ‰ä|•Ùœ^´z«JÛ¥¥³}f¯]¿5dš¤ÉÇU»ëbƒF%r\¿u?GóáôIæ‚éßýðC²+û+ûQwµ Ë©ªyUå±çÖ£×c�K­}üo¾ù.:ëÈž*åÙ}*àwÅ'’ªTN8‹øpöîÎl+útiÍGWŽäÓëWuéoº¡ ûq¥ÎIÏsæµÕׯVp1¤\ã¢kðܬŠ/>‰ŽðÝ�¹ñA·²’\ŪàÙ6äµ€0~°zÑcŽ àl¾jì#Ñ­{ fKÔ]ý½Òؽ$�©J{Ñg›s\ÉZ4íØüDþ¢{|ØÅÉ\`<ûif¿‚´†o2ø2[¦yá'r.€k€Èì„ÖfTc4¼ó^67&uß^öÔ€Åü<ϱK<˜_­äW’A[£ßbÿ.ÄW›šŸ³ÄÿÁƒÔɨZ7ŽÆúáþo›ó|öÜ»tä«|­´ÍhN�×x€d€5ÝPÇ3ÁvƸO¥ƒÆïÉ›ùdÈY°HÊ:ÆÇÙ'󆟔|e³tÓÚßžþ—ú¿•`wdúgÿ×ÿQð¼JŸÀ©vð­ ¹VŠ]>?lú~¸ž¢¾æ•ÎX[Ð’Ÿö–GV,>ì©x”­á˜vÍHxjžº�>èè‚ûÙÊ+#é]e¾`<^8qâÄdO¸�Øó `?�L¨Êw²`ZAP ãî]Ùìév‘¤�F|®óÎBÇŒ4ncÚZ0‹Þj©‘€/pÁÏägâÜž½ÁΈƒÁ göß\>†Ö qºh�åhî]s‘üµ3[WëÛCÑÅÑöf®`ÂR~›–Oàˆ¶ÀNö W^ç{HlgÛ¦q Êð–ë®0þÍA€wyùq´PXUsžéF¬ñ±³–° /41’g«Î!ÇD›/ÖnN'�/¸{aÚÙüöõ™=XÛÜf’!æo•aF>ïX¿þ7~ ù—ŒY]{Þ¨ßL7¯ßžÎW-‰ÞÈIÝMÈ¥6�ÃfàÓÉ“’×>È-¾í›|¿{�Lñ—¿ž®þê«Z‡fÿÅ7’U áIzè}—×nÝîlÕ«“ã'ìÉúCɲái­ Ð^Ø[ ¸‘áð¯÷íÝœnÛ;®×þÈ+Àï–àï8ÄmÑ% úÕ»däæCµH ƒ™Å;’ Kx.Ø5ÚOG§»òöØi*ÿV—«Œ¯Í¶³Âé¯;ÉSç§ï­HcÿÞ’6æ'5ÿÇKéÛž¹öÍ×£âÜÅ Ó¾Î{Ÿ›_ë2º4nG‹ˆã Üjl ;JdZ+qE5 @Šù=¼{»Dìü°A{@÷p¬ô ûpKø×Ö¢U|Z{U–‚Ÿ°T÷ÑSô ûüŽ$…xPò)™¿Ò~Á˜œµÕ}m–Ì´7¹“MÏ8–n–l'1³ r|"1p5¹dai’nìÿð•¢²é"Y㢗í1Lèƒî’èÅ_cÏØ_<ϧI2րΎÇ›ßPÙ�‘®d#}xVá‘ôws’xö0}�Άw´ÌŒÁoTáOf¡7 3+Ñ!›Kÿä}ºÎ5ügÁ¥Aóƒßú΋ÙXg~$ÜvVÉŠì ¹Wþ+FÍÖ°îc^] [Þ"°(ÀÁg7;3™^X×˹üù�áG”N¤]ò·`oú¯¦®]»QbÍbÉ0Ý;óÖÝŠ¹N77Göœž�6Ñ÷é³ç² H%�$Zí$OZ#ë¤è–˧Õ�� Á¤·ËØ›ìJÏÀ‹·ä„”…ÇÖ… 1;Êæ�ø¢[ÃôJíIþJ\ÞS¢áŽt®®£kª›³oç¢}Çw>J¾²%ø"/ÒCß|õeþâùl¾|•Æ•¥…ýç#·�Ùõéˆlôƒ ùt‚jû�9*¡¢µèÝwBšÆýÉ t [âß–dóÐý}ŸïCÎÍ9¢ò¹ý’È£û«b$qñÉbVxj¹9ïß]¢Ìëdm®Ñ[IXòe>¸äƒíùƒ':´®'íÕè>´ÙQ‡É›ä-Øh¶¥ÇÐ ZÛ)”7t ºw†=»\%ö‹®hä‹jû¦8Z`–âKñÝbÈŒ™í()¢`+±y�½º>Áx­ÙË%8:l<è¿qÍmp‰¸KsJþêFp:ÌòY´÷%Ϭ-›žMA×â…f|˜7Cwïºh_¾ÇŽÀëë7GÕ9Œd[´çXÓ»<îêœç…tª#B†¿Ø^î謗CñîÓÊ0¼ù:¾(¦mé\ðüª::ÎTAJA,5ܽx*Ì–ý±lûX²ª8[Ãøí»„föÀöh mêåâç+éà¾ßf ú¿W±Z [,NtóÊ·ƒ¶ØÉä4¹'–©óŸþ¯ÿsŸewç_áÑ�W÷¯êê‘,•-ÿöY EÙõwoÝŽ†ºª{[ïÍŽ0nìhðu|͇_¡38Úˆ�¦ Ù>Žâ�ü"!et_n^èdǘ£ãmÒ똮­ft�Íé¦Ñ9¹>óæp§³ù—ËÓ—¿ùvà§Ï_*ôû…:ÞM¿ü寇±PGîO>ûi¶ôw%Ê\/YêD4­KÆ kçsÐå’ö"ž{À|ìWÝ/M ö¾)»ìE±›÷�IÁK+Óú�Ñ|%´”¾jnâXsÑz¤šH“LSˆ,aŠ�c,«��üòe•Ž.Hˆ½|¹#­sŒn?¬­ÁÞ”ÀÁqŠ€!ŘënW� âýðÕµÎØ8]P½Üb!Ná0Œî!PkÑTà¤r‰/Bª �”Ú¸4lîV¢12vP6—QÖ® MÏL±˜PnÐÜ]>ž#¸.à �Ʀ÷}UNœj·I/ ü8Ï·4)«œä¾Da’€ÓêùÃh 1Žà/&š7„¸ «†52G&VDh Tlš%ØPƦ,±  è§KBÊÚ�Î"’”dÏlÏûÉ@Ê`âÀ[#Ïf€=r@?ÆÄi–QBQ1æÒi‹­SÕøæöRﲎž–LeÌíÚ½¯VÈl�“`PB³ÉXc@­f轋Ðö@äŒËyÁeŠ©šV­d}3æ?‚ê�önŽªŠ7”loE3 ¹Öƽ†Ô5À~4ư•Ð6±Ë­‡ h?º} ÀÁ²Þ­†è§9 åÞ}Ξ:2ÖeNÅxs2g]£ÁÁ(=WËÒñê=ƹ€´=¸pf°s«¶oïšîM©Qàh�1D¨�«" ýN£ºwÐ2ó‚¼H +ð@áù>þ`èr Eë Hü¶À‚¥`šöˆö™Âà˜Q&Ïret H ™PpÆ·`ø2�Ù?³°¥=Ü—Á6?ÿh!4ï®áüõO£¯Jĺ+7nO‹í@Áípèl8B �Ï>?j¹†pâ5Ý2À=)·À>~TÕøp°Z`žñ%÷X÷g·Nö-4µ~ŸÒâ€QÚŸs€ÇÊÍø[fZÆ[€éµ@Ñù[‚Í+’ëé>2ã‡�Ñx´§|‘’GC#ˆØ…@>mÔhHûwÎÌ«õçÓÖ„0¾™ßðæ?‚ ÀeòfS|±�"Ú–ÂxU÷ Æžç¼};«ÚÚ”•ÀHÑRfd ¢Ã掆�]`ÞûÚÃ1ˆÈ8Ï•Äè6y§:ƾY_/ë¿y>Câ}gF»»vÈ’¯â½ï’£øÀ¼©®¬ UÑÌ(�Ù…¦¶¤©Gw�€|²œƒãP2p6V@1Òç”±Ž#³=Ôþxæ4ª|’!ëýmçâãÍññ¦*I(Orho¿ãAF!·ÒÚšßÞ:Fpì|Ÿl$÷ð‡˜Cò$~ÔF �¼_/©¡û¼I6QÆ'²óG;þ‘Ð…ÒÉÉ*ä2çHB ÃQ2ð˜“4ºsë^€m-›KÄu P–aM¦ ak²}û̸`Ó!OÀîy|éóC9A(ž±IÖj!©"Kp�ü]zÔù§Í ˆ@þ˜+½ÄÀ #ë´µ"Gé]RV;G[Ü=é>ãv ‡Ê†Z¢bè.rš^³f#GnȨÆmr‚8ë-^ANGÝ'€¿kíMÏa„ªzT™�†×{&ýWšb¯ôN¼è»xqÂdd¿hú§÷r“ñöÕ¸%¬I’Y_ç°¥»@ߌ3xËÌíÓþ7ÎòíwÀðŽörÏ�Ñ·ï‘Å@8ßqÏ…Œñî8ôàW´3ËÈ&º…ÞÑÅ€-˜ mÕ�­ñ9›¸Æ_xðoÒËh­«9ŽsÍZ'zè±övÙR‚_÷ÛQù}80ñÙó'#èw çõiôWõw8£ÿÞÝ;CïHhPõÀÞbà³çÄ;ž„Û;ÆÀîΜ¼Å�]ÑðH¾éI\Ž0ðÚpÌþ¼2à?¬¹óÑ%0‰®ãàã›È/]õdÈ*vÁ°Ë¢)vÉDœq|#‰SF4`M]8÷l´j¿[¦!kT»oš�Oú­¾Ov¬7ÏhŠ¡3<#q£CôÉ©ÙZpú-ý¯{ž`™§bE‡ isØ-wÊúewž-X.È 1Ëb� õgñÿG/Tݹs­»j§“‚¸fvƃœi-øOÈ¥³oÔê™c|´¿UHhk®‚roz[‚ž õуÙ×4dÚÝÎÿâ³�†®ûÃ_þÙС?ýìÓÁ/ß|ÿC ¯§‹çÏ·¦ò¯^™²¿÷»_èT…uõfÙÞµ"üâÓÑ20ýùÇ—FÒ×힣òü÷~þ“‚M»;cüÆpF?ûôãQÑñÝ•«é£ÍÓùOΤU;<›>ÿäãì‹=ÓÕæ^eÿ}R�^ÂÞÍ+×§‡÷O/_¬Úüy•wúìܨâ¸^€\K¯ŸþäÓô}íëM{“}—»önA³k7ïÔúU«Ò@§Çµ±N�|tùÒØ“¿üõWCV�8y"Ç´NeŸ9q4PàhùÊ8'ìÄñÚyE#oÝûv> Í> È�9y|ÿÉ�2GzŽ}½@÷º÷ö²’�‚jèìè ÏÉ©Ëùc§»×^. Ù¼©3”³úú{v| üyüIéŠ$IP›íÅ~è´Êg sG`9kÿÑåð%Øtñ(øÈ oFÝCo~ÄÑY¦Bü6 à>®åíÖè{´¦o=g³ ð,‰„�ìn[³ €œæÔÁ�ãÎT§û€ClÞáybß¡«è@ç|Ïœ4ì^é…æÀ_ZÏöð&û”Fó¿Qõ�-j­ñ+ù@gxuËq_ß1w× ½ÿñM\5K”Jf÷ùÔÚÒ©t•1Ú‰»A#u °5 q¯žáæ}>kÑ={.ÀÊ:ÚǹæC6y’êØyëØ¿Dª�}6ÀÔž'‘vØr}î}¿›§Ï-�‘ŸÐC[£trô±%›Ž}\·/A›O?‹/¢—§#qµ§¶·[QÈ£�É_¸w9w´>VRÉýøšop¬$™å|àë±xõÈá* nܶ÷‘äˆIÉzøä‰“£ A5ÊéÓ§²³ÎL7oÞš÷Ù�ì"Éî�â/²Û‘ìÕsº7è,G6½Ož<~lTx=�nÇ·�ï'‡mN?:èS`ÜysgÎ�ÏÖÉîIVâÁÖ;wî;×y‹d(»èdAÕÓÇOŒy®Åkùü:{Ã�<#xe||¥c¹ãËÏîŽõpÍ�’bÑÁ¥ çG;T²Q•Ù¹sç†]®ÂJç‰ãɃ%,/½Y`pÞ^×?™¶íß=Ö�>®MOžŒÇUŸ±Ëé”}Éù‡%èÄ •¾Š½ÛU(]½qk §“/K� æ¿!ÐËzHÌuñ¨œìú%ó kÁ]M ¾êv/}B÷Ò³¿g:”D/µÏ)><ǾSi„ïÐÜèÞ�.^U­ýhCËŽ <Ø ôl)¨àßÅ@¹Y'ZÍ–h¡¯�Yäƒy ~áM6wù¸3»®÷g<�¿•îÆb‚ÐÆÎÇÛ•ý½³ªã�€¥Àäs§ÏM¿øÅÏ»7?!™—nz÷a|#àÖwñ]«ëÄèð’Liæéùì‘ÆÆ&yY•ƒ^–ÓÉl~¾ß¨noj?óíØCkÉÖ¡_ùÖ’Úà)ŽÖÐ]Åyîϳ5Μ=3ø^{ô½aUöÄ^ÁZše”b®þ�½üæÏ™äúðî»Íy­uàƒß«sšÊ)UÐ[ ΨÈÓ¢YBÒÇeÃF+lçÄÒ#ìA´˜è!üœÞÈNÛ9ð �ôüèArËÁýUÇîÍ?�vÈM¶±é*ÁAô��µî^Ã.èZ`?ý‰?‡-Þ>ĆãÙd?Þs]�¿È Š|„›7ov‡Yô—ñõabæn�È*¼­ZÐßÛ£c´¤ &ÄúdÚUÐÖßÅ›c=Çâ¦{{žEž�1}Û:“Gì‚~ê|×Y`×^£ë‘Óï’|¶¥çoÛ áèÕ玹ÝtáØãWíÇ‹Švàü$ °æ)ÔÚZÇYWX-ù[еçã¥YÑÐ óüa+´nh ö:³p‚оè†ë/Ó#ÙŠöy´{o?,žµ¤Бuø‚‹.x*ÉÍK‚Ƈä6$ÌÒØŒW²Í¨$o ÌG‡MϤ[èà]»+ÄI¶ÃŠð»1ÐKý¯‡ÏŠÜlkÖÑw†½e6]g=–aÜí+Û>k_ìlÑ�±u;“ª~®BºÉØ€$/G1ÞÉæÁ RÖ Z)†Ñº†7ß„7ÿéŸüE‰‰�ëVq6Ràà þ®Mßýu³.f;êlè»ÃØ›ÍsªÊn˜Œêjö×RI{ô³¹zŸoÉ·CoüLÇF¼(²¥crµ¶Ï�]æ—6o6Á+6Cã·ÆkÉ]G[½mß.^ªŠ7œ &×l;u¾ä^‰y+ãÈŒ¥‚Ÿº¶,$ó«È“G—¦·þÝô‹¿ý·šÃ±AÏh�¬•½#•¶u ØŸÿÁ¿ªèeWÝÆ.~ã+nίþᇆ¿!©Í{ª—é@IDAT5ß+xÖ¨ /Ýù>}ù¢„{°M-æO©`Õ-ÇÜ65‡×®OgÏœ�vœ-`gÿÝ D¿þg^.³Gæÿ®Ž»ƒöû)ZóB/ý¯§ó{`‘aÅñ•=ìÜèøÀ+à™ïë%ìák¼8dw²™¯“#Úºe7ôï‹êÐÊUµ­‘Ñ¢58ù؛Պ³¢?:†Üh¢ûÙ5�Ÿ&{^–HVתçUR¿+^uýêaŽwª€�ïOÞé°¹ÚÉOÁÌ­µª—¹6°çdl˜Å»:ô MI|Uœu·ni¯º ë(§Íº$hóp6¸ÎmxŸM6ðÂhDò õaWâ;ë6{Åñ=ìðYcò·µ×´öd~düè_Ø£]¿¤�ÉIÓ:h’¥³×U<‹õÀBf<›¬Š¦æG ³àpöÔ³Öj».ÅÑØ›uI è‹­ ³å f+vÌÃÞy±$µTÕ_�y_çŒïªX 6ºÒ1»›¶—<²fû�*÷]mtÿF�»„F&K œoxŸ ®õºjpmÂwÅW*�¿üö«á¯­Õñˆ_fouÉ�19÷V RðG_*9ZÁÃzrgüÂÖ:¾v ì‰CéÐŽY˜K 5G„LÞè:ÄÏ ãÝ—�ÌÞê1Ãï[m~kUZé:ò2ZßÒ=ð7cb£¿F+ùrü¯ÂIF÷¶ø�½�OÛ�æÓ(z~ÉœÝeø:Ñ2™+~‰î\+¹i®ûë¸B¿ YãYo-ßU¸ v�ý77ëÄ9˜Oùû§#Úë?üÃ?®»F8aöÃ-õ{[Y"ÌÒtëÖÕQ”¡àbtƒ(Áxû©céš NÜœ–;êÓ1ƒ;wF­‰$Ç‘W"ý† [6îæ-%@½Jg—TÅaÌH h@â8©ƒ�±/lVô(©/\)Ú(i9ÖæLŽÀåXFˆÍ”QºVµËñ”SʼʨçõÞ= ò’`ßÛ„‡úãˆíýƈóèÞ~dºüHÝßâk=ùïÿìëŒìw@B-:ƒ„‚æì;3û«o®ç¼>Ÿ~rùt†{gq6x†À€Àá•kµÍà=qÔy@q UÚ¯»ÇhAÆ€mL¥—´I”=pxf4DM)˜Œ�îÉ[W†ßT;Ê R…Â!µv o‚º–pòc¬F£å]í¨µšÚJõ¾àK¦4ê=~¥DéLh½Máy½mÌŸ±R( A­î8“ÎÐå #’ Õí †ÜœC¿±17ÜAì£BpŒ'`7†’QA�&›»×ls­ß‹gÀ€Y–ÓÖ”†,î'e毥ÔQ+ÆA赌oÁ€þÈÊ꽟ÍsõaÆp–ðàR³Îôë3Æó³g�ÝU¦çrç>P2P83®)Sf8Ë=·õ57»q¸-Rbæp¤(Çƨþó?Æã�b¼®³~Ýq̳Kc«.�Ác�‡ê¹2U�h‡àE˜Xƒ×TL=�"ÀKc´†žÇy0F˜¬:´�ZdÁ[ ¢Ô-9RööY„1ò% Øæõ» Gãžo#Çø<Ìz�â£gYT)þî�Ö†‚L`1˜�ßzP/ëd0 ªîÏ–Ô@ÈîÈY‘¡H¨Õ EÀY€,þÝ{°%‡º{3ªg�&È´±ÇÎ�7wüÀ{œ ` l‹Æì-e¼5š”¡c/ßGŒ9-mZî “²·Z´ôÂý£÷hf ñ¶ý´n‹UôÐÖN“²Ê¶døî�gZ‚±Ïë)OÀ¥9”îÑx ¤¬Yj=c[É" s_Øà|Z]‹–ó¦d'` Ç,|ÇÂVrª^fTËpÛY«€ß ¼ÐY»FF•–$O›Ëë€Ñ23´äüÌ€*ç£ÖZ -·ŸdcÔ5Œ“-9êŒpëhúν2œ£禸?:Ñ}àÄ Ù�%¦tOŽ�; ªjM¥}'Cb¥½ ä\YW ø²§LBÙ§x•4䪵�—N@ªõwÍ[kkÀøàHo-)†ìLI”·vT¸ƒ%¸ñ!y@†W$9�,øøM«sI�ÛGÏU'ÚÁG“>Ù«›|†£_©@#Sw”ü" ÌÞûϸu.X}QòH†Ï,+“£•<~°Ô Ï«¾â$jsf V[ßÈdøÈ:Žn'Ýw&ŸÈï|¥!Kf†ç \ ‹’Å=—c(á‚D�g `ÀP½Dã–E§5 ýäž[3^è�‘@¾Ñ!Šo‡´¬Ë‡}૾ö£’îº~ J4Û£‡ ”¨ÃÇŒ^² ßE¨ÃNwôñº=ÉLôQÀŽà5ëDGú×Ú&͆<@7œF¶r¼1E/KV1.üL6ŽIsôÐzàWK0GF$¹`U¤ YÑpZí§€ï�ÌäÀ�¸ÛÇ�=mûžƒn´LÛИǚ5"Á_‰r/ëB¾ØIM€(×Êzdh�¹ü³ñ<{û7åe¨-ñx­¦wèG2ÝóÛ¯§[7®&;uD„:ÿR÷†õéO~óÛ:£ìë÷’ßrì£sÒ%�—Å®ÁÛèX '- ζ]cïFü¾ˆîF½¯â-}ѺDTjÍ×YžÐ5x^`}#@ dKl«;Yä÷……ÒÓ¥dzùyœp&,9žˆin\³¶¤4ÉCoÓôJ7t0ø5:ÅÿãÌÒVÇ{D²ßXƒž0œƒcv¶]öÎôÍÎU2öµýViá Éýû P|蔢ºÑ1Dª1TCn(è¾+=)(díÃ$·8#=/ÇóÇ 0©"PÉ·’3x¸ïŸ((#8eO:zllæÝª£ÙDz•�W{ãúµŠ$WU’/ Pœ|>X`çî⃑áûñå�§UÜT½SÇ–C‡�ûϹÇdÐO>ý¸ÀUmÎoÝîÙ‡¦Ó?¯ê½ä®ï®\{yáܹÆZ‹÷àûs.ât Î Â= H¹[À\Åú‰ÇÓû‹cï~ö³Ÿ&“·N?\)Ÿ 9wîühãö«¯¾­à._º�ͰZ•ú­lî*Ñí¼¿ gŽ6çõé·__ ˜¯jý£´ÔÚ_8wvؘtˆsO/ž?—s]Ë÷‚Tää'?ý|€!¯š“ï‚$wî×J-¹ûÑ…sӥ˧›%.Ð~gº—ýy°x£3N¦‹/Ô¶ùåôõ7µ¡/H§â}$ZIdÐòû~HvÎÚª½H~ܸy{€"—š�@¼d€S}ÏÞÞm-“pöìÙf=,ðÎWÑJIÙQ fw>dzgÍg±ÖmÍW¼÷ë÷þ¨d­ éRGv°ÉíQQ>ä.P')ØÜÐ u^ Ù�:§ëDvÜð5¢w/ró}<…®?¸7“µ½OŸlÊ®~“�7ø+æžóK2°¼)>1~ü"ÙiÈ|]Ã6ÁS佟Â×íÐà†�Üÿ5¼~ú®»û›/B– ÐîÇï�sÓ»§µ¯ñýÙ‡ü/úÙé-Ïè6ãþ3;�j�Æ[´EÉ–Ãnï÷®“äæÅ÷b7ƒ?‡Þn�É( g©’�­IÏx ðiØ)ËMΟ»�ÝRK¿äãÆ¾œO<’;è/ë^Rr¢$ Tå û´û ýظŸ¯ô[ô}üý±a“Iž1ڃɇÇ�v&ð�éÆÕoGpØñY’aVVžF³çó�¶Œó†Ùö‡Jâ¥w}÷VÑ{øÐžD?ø.� ßÝ��™Ø®‡’ ‚5øN?Q׊ ÓW¿ýf$PIÊ9PÐøë¯¿m¬ëÓOJ´¹S¥ðW¯�dÙ¿÷÷~1}÷íwÙ‰Ë#)E°~¸2ìÌ�>¾8ɪÏÏ�?ÐwhIKOŸ:6ëÚ íIß:?zô¨õÉéãËç. ~OÖIL!#ð�.’WTŸÜ>’¼¼uóVÉ%´T!³¯KrR°ÿóO/ŽÄ×'Èðs•Øsëö�‚Û%CGOZ¹nÞz¸#¯N矬ÆÛWGUûGŸ\ @÷;Oòxríã�;Ê¢1-9ž\pþûÛŽe»p^þeküÝðÝ.5_XÄÝ‚âÚe_Î3f³E‡èäóøÁ£éïÿÃ4;yløxgË­ïðßè½€ôÇÉYI>ìY:$ϺuI‡¶®±ß4—ïJ³l,(Àǰ�öj…ã·¡³ûÞ ‘¶—}j—­­ÑÏØûqþ+¼'ÒOt-ÿk–Xï_•Wð?…+uUšaCºSÒ4Ƶ-_ªäÊæÆþö|๎HÏ›¿Â‡Ýñôð)+=L.˜ŸD•wa H–iÌ|dƒD›xˆÌñ»¥Qú|Tz÷s¡ÿñµûÑ�|°íªu®%SàUZ1óëaü¾œVPw[û<×Ü­÷«‚£Ë%©—>"v‹>ÿƒ�ÝÓ ø­­›ÅhEºd`BÆf^øØøÙ1ýÙ«µhߨ;ì íø}­À"èÑÝ%iÃT¶wþéÆ�3ìbOvµµ%�×Ö¢Érmu™³¿Ž¶ØRqSÔŸÌjìýö®ý"³|Ǹ�CòÒ‡sîÇâ�ñ6ªÖÆ ÐìþKäð·€Óx¿ñ˜ÙÌo¶7èÎ銇ísjrøÙsÙëé˜ä†ð�Ä$wÀØžJÌoðVƒ¿®à öè±”h��huÔõcÞÉFD ÖXàÁ ¶Õ�7aÖÚÜgtÔß]7ž“<€ñ]Ÿñ×t⎄¨ë�%;|G 1�U�Âú7fχ×í©ðÁÞݺu¥“Qg•‘Ó½Ö˜•œ¿‘hD?éÀù·¢³^tì×RI 4ðÿŽdßZÏå? а©�Ÿ(Ù¶û¬&Û•0<&¼#Þ _Ø‘^?Yb"»Á^�ÎTùG ì=y°öËæ€Va·æ»�œâó§%@yViÏ–”’üMIŒpŸëWòëÓm'NœŒ~~¤£F³��Éí/ÿø�¦?ýwÿ¶"‰õéŸüOÿ¤dÈãͽ#%ÓŸ_L^KÛÓúÃJùGpÖѺ@âR6Ñøƒ?˜¾¿}­sÜK0:v">„ùUtÒÑo7oßöÕ¬jtf#� ÿù?ók[œçŽ™�ÐZ9Ú” ë…ŽìUœ:ø?I�³>Nç;úݨ’ê?ØrÇ—žCÃÛ6g—¬f_¿ ÃÐ’�íJþy�BŠüz|:ëÞ>Ù¾?º{Ý`Ü&¿(}¶aË´<lúòWU`Œ~íÜ󿸒þÙZÒèÁöàÔà#x¤¤i4ŠÆÇLúE¢±nÀ Á\ƒÎ™Ãn �v5VóÞ–?îœdI~iè 2u=æƒaݼ]ïI´Ù=$#‘«x}4Éî~|@ñ­ñ~s²V®õòÞÛpiX*�BÎ[[¼Ç×Â|»Þ׈W0Ѿ. hÁÇÕåJbï¬H'�”n¾�Àq÷5±‚-wTγ+U–Ïų‡÷Æ­í ÿ ×Ë_ݵsK¾ù³iß®bg ê²û$:è 7¬ •;²¿îGû6M�o|3-]¿“MW¡Xü¢ŠyÁøç+’«ãBŒZaÃóé^ëüÃ㜳ŽýØœŒØXÑñ²ÚuÃ�~¸ñ¸qµÞÙ¾‹ù%¯úÎÂö:ùÖ‘õuzGÇâŠӱ‚û’�—³Kæz†8a]ǧsÉr�=µ«úZ~õJÎߎ֦þ:ÉÆâwwoL»O¾k;0í[z� �>Þtyõ«õ‰ß³këtòÐöÑ…ìu�MŽ_oGUY7Äž÷§Lgîhn´ ˜;Q‹üWÙp‚óô‚�qu{½­n³ââUdüëì>®‡!£É�¶çíi/¢“ìa´ç;|ò ¾F^Æ ãy¸m©ö™ÊZ>ÊæÆÀë±UDmE£=ü‰æt‰õ̵ìèQ@óãµ}c¦æ¢?Ïœ%—÷Ýä¿u£Ø%’qý®Êóǽ£/ô6ß¹ô;>U¡î¸m{”žŒ•È›nΛV§Sùfÿøü¦?þåÎéö�ûéôÏ îŸë+æS¢Õ|sý싟—`õÛé«ßüfÚ�Ÿòª5}áûÙÿ«�-Q]!jQüÖPµ¿ãbÙ€a6«ñÑUüˆ7í%?EÁ¤  !ýº„¬ë…›lN)kãþîmÉ2u®Œcà˜X›BÐ ƒË’ÕÞš“ÈÑüâó�§_ùÕ0ºç7V1kq¼uÓfí-ž–á±�bsIèµ`›–Ô¨]ªíÅ®˜xç‚vP9Œ£Íù,xü¾GkE+àÁAb8 1Ì17#åá�-`Žèlµd›A�;®Ü¼;}ó«ï§K§�O§N'Ÿ 4}ùõõ¡/ŸOiµ`*[ŸìRŠ#ƒ6f×ÎMÛ›G�õ@iK‹!çDoÉ1™¨¬ÅÊ œ6cSuƒ5©Î�]¤úÀßÎB÷ž1«õ 4fÙ@umòÁ ×�êäŒ €�NraH×3Š1‡'%ä> ó¡d�è*im>!+¨£ÒvkQZ³;KNÐÚ™Á³sxšTÔ¯R’cü ïi�ƒ1¢ûc sÚ•"ã˜ÉÞY-è8×ÚË`r âzV`mKk#ðéü EÚ˜)g%qÖ)+{Ìá&X¼ï„1Ò0Ùâ2$Na6üÞÀ¼ŸF§„1Âb¢Ç~Zæ±G#³¦ ÔPrœ}ã¬çî…�è Ý3¾8¨²½µË±Ï²“ Jžò"��‰ögï{^†pó´0¸–bÌ‘ J3öÝ2ËjUñä‘gF7=GL k8Þ&Ô:€£çQèþŒöÆN‘qºœG¾²šÓXì· „u×—8¼ß÷=—�bÝòaL-MdË´(ö}o™8‡:£„ø¶l¯»· Pk÷âÊ,?¼Ý:$ ¾<,ZFy™·„í gŽ×Ütû&¡’fj !Nu†‰sоýÍŸGGZ„°h%åË0HŠ‘/Fë`߇ƒÑœÐÇGå«�×óo\ÒW¢Á®“˜£ �j©•‚ù�ã5ÁŸ±‡íûhÝTexK42áŒyíéÈ„ê>žaݬ«¤ºÛÖÏÆô€;m�ÑŠŠ3áÈD§)³¼ßŒ»é�ÝÞKÄÊ£ÏG¢H+?2_[ËÍ­•=Pp,æVÐ_ÀRÏt~ ½tݺËfàvÆecûØšÍoóÍ’I(àŽ¿É }4þî�Ç6z¯µå ¡còƒBz¹6 ¬£}—áL¾x6Ù¦úRbˆïŽÊºþæ> c²²Ç´žä‡`æœhs>Ë2U5£µsÖB:¸6Ë0M’U5§½\kïÐ7±ç ·7Æ€ö¼ïGsºp½?h¥½Â^’wÌÙç²5µúòMk…ÿ$m¡›¨k¬š|Ò¹TƒÎÊÌt�½1w/|LDŒ:ûùbì‹Ìaœ½í·A/­žÁ{]g_|FxÎËèÎ^»—1Ïdb†b÷_{¡š]ödßk½3žÐ¿i“»äÛà§þ¶ êÑ¡ÄX8Ü]H�Ûõ2|ýéÌE>�-^3Ù�aÐý½Ú�Í:y¤K3ƒ�cO®«¸µˆôÞVÄ[î×èï¼Jn ]ÙÍF†pÉr3Bkí }—Ž9¾ëи¯N-È�Œ—UUq$(ÖghvÈ鿤�íbר³ó';—µŒðÕWÉìœ~G̺»ÌÚ´š«€ñpn¢+`õ�_ÿA÷+A 9üMy*Ù?xŠðˆ.U£ë=x¯ J¨æà”}þ“ÏÓ&[“¥�¿üåèòù* Ï&O7å$<Ç€Œ1ÉMk;œóöK•áLŽ dÚh:ªjȲÍxM_ô=tk¿ð$šžÉ‡Y¢gkýåu¼ ŸYË‚*óÐÍËW9¼ÙŽÀïµdµ=Á£‚áÚâ=�ÈUé²ü÷ÖV·Ñp© ©kè¯Ñu »¿ô0ð¨,îx9òツ §Q€{K¶šÊ7:K ê`Õ•Î8¼WIÕáHúi*Ú¨mÞT»½ì[Ù¦8‘‡B†½9ÛnGIJ*5$–Üí>Î%ÓæX•¡qsµö¦÷‡Ù2ÎÓjO�C+`aa ˜£ö9™%@pêÄñÑ6û~`•Ï%ÕiÉ(Œ??%¦Ú‹'­©–Žû ²vÎVvû‘è@‹ýÕä9{ÕÐ[mž­<ÎÉ1-1E;në*'X.@Å ŒT{¿,õÚ°¢-?Z4â3ò›Ž'I%!šúcø2’]éAÀÛ�¥}†öÙÈ®#Wéÿù0¼ÞTapœ{³gô”îË9œ¢=÷#St:¡ÏÈ:œ>bÇÐé[úãhài�üïáX{.]âÞî7t^Ï ³›ÁÐw| Ý$ v"Àì?:ÔtH÷ ”ûßl®]‡Ï=”ÍA.° Ù™3Ý7à†ÞëÞxfèÝÆ7^»{{';ˆ]18Ó_«Ö§{±‹ûÖàçýû•ŒqiºúÃwÓßý‡ÿhºüñ'Ó¿ù×ÿjúò/5Úp6³öÕ|<—®üÌO&ZóqÃ~·*„ø0ï»ÆgËñ Ûrgô²裵¶£‹Ø£ÍrkyóFàYô'¨KŽ,•HcNŽA`+,ö= &º.ܸq«kŸM—;^I@àëo®ViZÒLAëùøòÆÍ›ÓÙsgºöüôýwW†=xñâ9ªcºyýfsx7}ñ“OK†ÝÉ�§Nž˜®\¹:]ïsI¡}üQ�òÛ�:Û«0?1äü£G‹ÓåK§Ÿýô'ã¿ò™ïuûæ­‚È{Fâʳæ!yþÂ… cL³D•}v9�÷@Áúo³å7�„�åøìv2T·ˆKÝ[þí;·ú½¶ËUëßJî,?Ý8ư=?ôáý{ÁNL¿ø�Ÿ¸î˜ŠäÃömÁqG<|÷âû|ÎT�úY•`µiχ=T‚Ðþd„ëçæV@þ¢€ V…Z¶^ºt©õ|Ò×GbÑgŸ§GÔ$_ö•Luæô™daÕõ�ïgKF £n¼g/K<"o¾¿zmèUñ¿øÝß•è’l5_½^TF& øÓ�׫ðâ?¨xEãªÖ^½ˆ³‹U,í/áÁYÆ÷é�õ½;y×à³ùf¶?«. XºZb-»?’#‚rÃÞM>¯vñÖøXu' ŸþÖ•DÛ~|&Ñ�ŸÏt ÛS…>½�ùð,šKò2ð³vסOߎî€úd…uC»ôÚÒ�Á2vߨjŒï²†œ¡GBJ÷SÙi äÖ¬Õe“ëxM1  Á=6á5ó3§ìrS€wTUö|G_�àY"dhï ÏèÔÜnÔm…n½sûöô“/~60¤¥‡Ï£�¡1â;6#Ú³¾€XAÉ!_-T/üíùÿU¯¾÷×}µG®sÖýªîïÞº“ý°m:š>L˜àþM@ÿoêðøWÓßýÿ`:}î\ëO.æ·Ï¹¶…‹ÍÖ"ypw÷îÍéŸÿ³‘ý³¯ŠóäP²X"!›DŸë€sëêÕÑ¢”Œ±ÖãØ›fOR™è|ͧÆ* ·lÛQÂ]Gr­>‹ï´r-v²\ÁË®ô“cZØ@*Ä$êKà¸EïI–~} ¸ê4&bgô»ÿ�žS5ûÖ‚ó[ó›jK½¡ê¶ÃÙsï³Ãv”¤¸§ ãø„¾a¿°Q$}�à·£tŸ‚³ÏœÜ×qKkTIù¸d^q…ϲ{FR~s’´ÿ¼ïðñVמÕ2ºàVôË}=,仌€k>ZÛ[ÐÑÏ|�[þ”Da‰+�8Ô¹Ö}Fç;qKHÜ·phú«¿ú«é«Ž7Yé î‘XŸ»tñBIÞûòÝ%ŸÌ’=vØd{/ çuAU²sºÁ¼U5[cG€�a¯Ÿ¿œöäÛîŽßó©�Ô�ù|gI[�†ìFgŠ)¿.À·=&á¯ðmt™ÉoáUs!⺾3¸°y 7×�‡ì¢!»ãK2�Ððù�³ëÙSd²nvŽEcÇ/ò‡u�e[¦`ÃbgvZO92M{æëPÚ^_Þ¶oz^ðùéb�±.gß$?²Uå¾T2ÂÃGaMñ2ßqà­­‡BÖ�eµÞ?ÿìÐtü`IÌ÷ŸMOV£‡dïþªÜË癋õùöÆbGÈÔ9u×Æî §È~j½ç:oOô{ò`vLØÑ“>ßR€Û÷ž‡YØR'í�’uQ}S¡]ëµ­Dx‡d_vñZ ÃÞ:¬9®Jw×m p¬’¸ã ²rG±‰’øßº³ùèàâØYsãH†sŒÛe®$¶mp·î¹¥ä x†"UA_>ú‡ÐAØð8—„Á¥wã±â'}æz¾ÌüJˆ%õ«?ûóéÄ™“[{_ †nÂkt"…/ÐcSî÷ø<ºe[þl%œ•. æu±’†“Œc¦ƒúoÌ?±o‹K²çºŸî£Ä Û¦¢ø¡¨æ´9ó§¿÷{½>Sr¤8Ýà™lD~9y”Ïγ;\èî=Ånµj/‘¶·^"FÌ•ÜYŸ.�Ý8Hæ4 ¡Ëß7F�’èÛÓ T»vÖ–¿õKwH¤Ù8JâÅ?EMŸ;Àê„àÌ™amþr†3p€8ÊÙ²³GK“²ƒvæ$nßYÆKŠiC›ª¿=CG@qa«mxŽJ«6ׄ×ó%<j±‘ÀAŽ`uù[k…@ábbŽãÏ.F”‡EÃô㼡ͽ_¦ CY{§½-Ì¡CûGàŠ1ªâ–Á5Ãæ´+£ÎF„ª{3_ÊH¸ê³û�ŸM_]{P B¦³cÞ/MÿŸŽl%ĈˆdŠ1”-1zgß{Qk�Õ²ü%wï,–qSUoÁ­€(• ×oÞŸ漩&"Û­Q.CgGþîÚÙWXFKà_ë̘aüqpÝ×~l¨Õv™©Ë�P ©µ¾ö‘£�Úuæ6²-%$)ˆ]9Cö`TžôªcăÃðàp®T¹àŽÏÞõžñbä•~´žÆ¬*mlßÓÚz(‚¾ÇÐxñ&ç¸ê\A«�µ§O¶… Hmr3Á�ˆÑ¼F¶bׯ­=�®3E»Ö{²))hãÁdk‚9Ì Ûá0´Nà hnÃàŽnJŽn�89ÌVŒ Rø1p÷}Û=H‰³»'§Ì>Éc úW¤È7aRè½ï¼é^„ڛˀ@’*}U{}Pìëe¨b(Æ4'o<·{Á9˜ø@ª‚àmÂÀËø8$c. ‚Œ²ò€Ñ«g¯>O�¦¬¶ÜÕž7ŽfÇ ³4…´©ó Öc8` %ÝÍ'#¶y2ÐßÅ£ëo«*ÌöØY†9IeøÜÜçæf¬öäï]ŸáE¨¿Î¨1ÿq¶Sx>Ú2Ï-%Îçš,˜­�º®•£d^÷ýW.^vïWõ~ëßÏ“ûh·5Š8­!>d¬o‰ß;b¡y�uK3æ”/_õÌW� ú¢ïÜäγÕΪï?r M[ íöÞ½¯2!ÙØÐ=Ço1hÍ­�õcB=Øà7ÂèiçÃ= C7öEת’ŒýéRÕ2½?x+š �)xüÙRò¬›çë2Ø)Æa´õ¼–´ûÏèÄ÷=SExƒ‰.8½³¶ßøG6܃œêV0è8%ÎñÀ»³g¶·}LÛÔ¤!}ž×|íS‹Ý} h´V®·>(VJݬð úPIã9Œ¢F9Æã: º+d�[Ú�®K®tΔ}Œl30i -ïØG½£rgÀJd4ÎÐ~^åàžŽÏÐmbS6гäïÞ¹ Esò’q@ÎØÛø p´�.Kƒ?wWæ²å}ަ INÔž@v¤î‚ÿÎà<�QKŽÃßæÁyµDtŽÙšïE›æ¹;ç+’ÁŸþhÌ�=*˜ý40èüùCUF'U”øzüüÓx×r÷q —jo�bAèÕl5Õ‘ôÛòÒÃ!ÿðõJ:û¶Eƒl7ü²#ùÜy–=¦Ÿ3sesÏeLK:˶ÄFE`óÞ_\U:à¤BÂ/Z7çÌjÈ ²œýÈF^©]™Î2ˆ�,ù€ÝFw'›8�ºkŸPO«Jeéœt<.ˆ=^éœxâiöŸ,ýÃ=�<\YU­(@:;“êmΗ$] 8:ëéõ]’[³©fgÍ=ëÞ‡†ÜrF¨`‘ܲΜ sDÛvYÓè¥Ï´3ÓM…>ÙÒçx“M¿± ¯¬ ­›=&#É']Föµž²�¼ÙgΔ{žÊç9c9g?òk­Í$2j¯OîsnÜÛ|T=d% ì?p`´w‹�F2�¶uªCŸæli³ªd€Åï •¸!Ðîi÷‘ /x¹¤B-ÝéÜêË]* £ã`¢g@“Éxw¢A/üa\ä#Ÿá]‰>lt�z:Ž<¥Xi3€Úl#l2Ýçh�ìŽ?yßð*¡b8¾tSò~èwNIø�œdKDØ×|úÚ½ðŽ{ùeS>׆�íTc&õåô]2³]ÇýzO’èsßue×çÈ7o ‚ݰ™H^dï±�jSg>ìû"‰ȽaÃÌ&'‰ñܘ³ù¦‹Ý35—®m¬®í¹@tthÈ^cœýÁÏsß÷­/<’RØÆ‰ÎºË qsÙ8').ƒ6þ²>lo½‡.n2‹‹‹Óác'¦S§ÏÔöûn�å@‘‘¨<Ûƒ.ý�¶Àì93§\ø±ì‚ÆIÿâ G‹H\s†7Pâ…À¤ÊööôœªÇoÝŠV×FàóÍUR/Çõ{óÿØÒZøîMލªön],¤_OŸÔµ"€<àÍ17ûZ÷Õi ³mÛѪ¨/Lß~û]A³;][»ôÀ�{-7{–À¸*ïhÃ\|Î+W¯”°rt:ßYr×:va¹ŠŽóÙæ|Eë°­à”1yþ×®ä?2�¨ëÆ�Û“Ž'Ó¥øáÆÍÛCžÒKæýÛo¾G#\¾|qºzõz‰Ž�H?|öÅgÓ5§wN?‘:š $Mm80.áý~Ák× NŸ»xa«ñþ=´áÈØ+4u´1�„ù’Æ´{ß×s%òhµ~á¹tÜÉZ¶~ß^¿óá[\»zuл—€?9!™K%¿÷»®¶N'»w9’ Θ¾°ïBkþxúîêµüߟ¾¼ß/PAv®»ˆn¿þê·á‡�îEìò`ñ…ÀÔƒ‡Z÷Zv¶7½Ù´›7ÍÀwzrOÕíZé¯,¤ûξh¨M8«ýI•ÄÝrèžœ¯Ž"º�Í|R²ÅÚ8ÿ–|Å»ž 'Ùþc[A×°g@V�Œåþ’P°æW ?¿û°y㦮×2z÷àG¶Æýª£%,×÷`‰d ¾ÑÙ#Fœ6Ò)­Þ÷‹7\´\Ýâkrƒ4”j½à:}%Y1ó§aGdƒ¿Õ¸É²&9È Ç.ð à-ÚþÉ׳‡2V³ªš»nß½Õú””uåF6ð¥ü+g«?ò~~^ûrmѵö.€ß= dìácÿ5ÿgÿÚW÷&ëÖªº0»Z•îéô‹ÖíKíûh‘ÝnÞJïÄ{ªÞT‰ úܺ}³`o‰€ÙköS’ÝáÃÙêáLÚ±¯f3, Þ“.ÄÏô¶M½“lùÓ?ùÓéÔÑYàgOÙb‚O´o^/øžq0;ä³�?Šw�sÌç6·vײñòe�€¬#ž?Óz–= s”Òú»»­õ–€í‚Ž%Ë~<¡KÃâðíãì»Ûß$k¢-À7ïä?Œ–�DâáxÛë°‘o·iûîÀíõéûo›_½>}ôÑGÓŽè‚?ç(6öšJh|>äqºjwüû2Û Fð›_ÿ*Ûym$�àD{ëúw|¡æË¾à ïjý˃ÌÒ,™p¼Þ¼¡ÿøäqà;t)°ÍŸ!3g�ŒÞ„~UÂ{�t¯ŽÀc÷€ƒú>ŠâS£ßh;�Z3ü`,�dŒý}¼L Fã“}«È ‰~Ö H=îLlÝ.é!ó2ºO°$ÚñÓáªdƒgó¯¼ð•ûø¹ºž�1ü^÷i´Æo¾Æ €»à1˜ØBòm:­³‡7†9�#'ûæ;�Ää XÂ�ä#ÇÄ©6ÛZBÅòóWÓî°(I§ÃÎhmÈ©QŒ”Í3¹�ñƒ §Ӊ̉�A~ ™×÷È+r‡ÕtË&ò»ï>Ë'—|,À¸wØx¼¦}ãóYÑì@R´ óæäÁÁä’Ä–?ú·ÿ®½ ߌÌ÷ì›ùo¬E¸ÏZÁ��Ý·'Ò­‚�Ïß�~ù‡4½™Û™.ïXœ#aŽgÏ üŸÍ ×"Ÿ°ÖaG‡ŒÃéÝ›W®`›²êˆÕZ ;�.kLhöáƒÇÙ:7FÒïÒƒÚJ7’¬›¼;z¬Î�Âöu7ðx|ºE ¦ƒWÂö%ðÁ†n”X©ƒ#³\k¶¶—Oò[íßZAÊî‚ãïÓW[ó‡¬çW_UÀ˜¼ç Ñ©*sç딓/ó~ëÛé/þô—ÓŸþñ/“ãík{u·äA¶ÆÇ—.�kèö•’³µÙ>ž|~Õ܉‡¿^{Ílå óùùbÛ³¯Gƒ++ß Ì—€Hö—\Üþè¬J><-‰A!Ú‘@§JuËBgÚß]t¢Ûû{µ“Ž�$ÚÀ9uIͱj=:?½nü×ÝÝSPw³æeÌñ^üúų‚�oSUâ7uãy_Rù™êˆÎöLGŽŸšž>¼QÇ.…›�-�6�¢ùGEÉžòåf²nè‘s†áYx&!af³šß?dWvÞ·ß]ËT�:늉w…éì¹СHÜl!¼A÷‚«W¯�ý¿‚“ Ý@þ¢Åž™‚ësÁáäcþÖÆ§€mÄ$Zk¼M¾[�Û·ïOçJþTè·R�žì>7º—¨5’«;Y9°ÓþÅ뺈 yÓó†lj $ I’”OÌ Y,!|®ã ÜÐô µ\2³ço§ó£cê«lï»±JPÀ/ú�Æ—{:jïi4¸íБt½®mhÕu®ðºŠÞî/Oß>|7�ÛØyàuŽ]ßðdÚ9·¹oúrµN�äfc;wùb÷­ Ûc]{Jø{ZñPAí÷ùIo^ë®:K<ÒIà§+¼Íç\©hqG˜Îªκ :ßtÜK]\_?ë|ö’vl˜®?XéüìåéŸü¢}n-î>©5}ÇÉÐcó%c8êíÕòíéØéO’{%´ît éh„×­Á�}�g­ÙO_MG’­# óõó*Þ}ñZ,³unMèûŒ.xÖé[£— }ÆnæßÂtA]¿3,N·3º`GT¸Ò£býÇ1ˆGm-éqc<Ç7‡1ËGWí”Å&=W|l‘v™Í�€aˆ“d�¶Ž®M¶·Ï:®òUÉÆ7Å:=lþNG¢ø &€v%ÑÄúco6ÍÃîYû³ ¸d¹aȾy1è¾%Ž7Óƒ}8î•ðEò­EÇëd+À^¢ ±FK²�±±Fwïx_Uô)²�¿ß¾q-ùúl:wá|vh]‡ëvs;Û%ÁîYZÌ3°@6"¿ð矞•èó�YrÕ|É£l/] ÆË^"¿uSX-æõ.¼ÁsǺ•H’jMéhWØ€%ÚƒÎ%ª•R`à‹”Ø³Õ*S*F~:rl€F/ ¾©*T¤Þ™ÃC༟¯ÝÉ©a ZlÂ~®LŒQ5Ù÷7´k³€† £V¯Í¦HšÁ´E˜oÞä'Ô8[V*àU ½±Y]ïëÞã ª|—�†¡€K€[­ÍRí¨dl”ìh÷yÿ>�˜²Uu1*T ·�eض¶ãÞ''ñ1ÖF’A*€UR³×,ÀKɹ�ÛB ›Y‚1˜ Óȧ�jSý,a`¸· ¾6ˆ—Jø2šlæÈTIØieFQ©|¸u)aXX[è9RZQRìÖy{k£/Ø~§Ì¾ãµ«�Å»X€ { #27½å.[&¥Æа8²ªH2’eÍbf{çšÿ›º;é±+Íóû~ 28‡`pžÉœ*kRuKjɆ%K†¿{ã•_�À�!-ä†{aØív«ÔCMY™ÉLÎc�Á™ F�AÒßÏs“Z†´i-úVE2âÞsÏy†ÿøûÏþŠ­5‡‡£¾¿v\Ào},”u%¨W3\€Ê*!Ó¶·-]—T¦S Ý´½Ò’ƒ“”!éÁ­ÏÛIÁåáذ”.Æ�Zúš5LPd”¿~�^ºeÍ*¹ÑËëÚy$† óê»3áÚØZßá uáœÒÀaBѸ1ƒ ¥Ûªç=�Î)víÎ×þÉ\eS$;Û«vz tJy #¾¹¸z±†}©ï-Í¥÷ Rsaœwáƒf-m<‹’œ9=«wFö¢6Ë >Dc”œg�’g# Šÿ͇$ƒwu°–c,Ö½û=x¼=<@4€CK ç̼ÓöÈ}ºïXçÆˆG[ÖŒ’*¤Í¯½¢lÄß[Þ¯MK»ª¬™Ë‰O.l]<==–=¤e×áóhykz¯…úH|ˆOã#ë[Öc??D{Ñùh]XbMÃ4ŠûüeûLnG?ìÙãŒ2FŽ€ð¢ Ü�t3VBx&oâó!+f@!ˆËÈo †€TMP¾{[«¯Ög(œö‰ ‘¤C=íRÀÛ¬òÛ †‘Ÿ¡:sLΊi�ÛkN‘noNäFŽ&ÌJsx+)ÑDtÕÅ‚Þ^ö‹ƒç_ò‹ò16/{ƒÆ>:2b£ð3#ƒC-ЀŸÞµîå—ô{7iŒ³à4×w»1ÀaÐzs{W†úÅ7~ÐäèÎ mf HŽ,TG�qŽDón.œ.Ëd8S½G~ã@†çzÏ"çÒ&Í…“-˜=�Q@eûF´ZÁøÀx�óÀXƶað¾1=Ôõ3žf8ï:í”=ƒÒÖ~ú™`P†.yª²(¤�ð!»á�œ¼ù¾§’XÀØ^ |Ęê9 ‚*н5íÊÀÅOóÉ-wîÝ4ó³çjÃX&[øeüp»öÐwyòù¹2¸� DÎÿzH°ZÕɱåΓïÜž÷ñîBÁ�×=ÿEí�QŒ)NŽÁÖpó]A¤ôð¶À[sBóôÊû²Æ¦Õô,q ¶fz®ñ3¿ ‚ fkǰ×úìI KyµÑ(h&7Bu ÙáÙÝý�snÛ�]é5ûV×óŒìoÑ«ÁrÀÏÉü�µº½sãr4¸|æìűfOrzŸ0TÉø³Ÿþdèl2e#ž“€·kÁ?Ue|(ì×ÅKŸ ðÑf8R À°ƒû£=rk$Ú䄟:uv’‚“¾û¤ û¾Îpdߨ8Úˆt¨Ðþõlç¡$ˆ<^}:ÀÉO?ù´½©Ú:GòQï-ÖF7.:xP°Û3Grè|úY÷ª%V �HkØS'OÛS`UV<@È(�ý:Ú=x°³lKÒ"�T¸p8>ûüó$Ú‡pz• ¥JéìùÀãà*¬Ùaªo\»í–)8#¨Êqß™ÓD oíž%ÚÇœ¼Í�^KÆ]Vá½7à¯j¬dŠïhU¿¶(�9¶Dû«ž'3µaÆëª>Žw¶±OÈ2ƒLa°ßwžê-÷•0‰vUnZOë´T`ž-+ áYsLx×Þ“} ™A3œ(-úU«b†L˜²Ü‹-)ÁQ˜}ï ì'…öÚ¶ ÌI˜ÜÝ‘>üWäSë¿/õCz_°FÖº{¿ª“̳2ÕlfA§gÑÓñQÙ³;¹ó¢ux7íÊÖ^/épý¹€IA™*.U8«DÎcZSeÂ8+.úÛ–#býÉÝq.bŸ½{_÷‘ü]¯Ü%+±“9Pæ%‘„ÎÐòͽH^2Ñ$íÉ{¾„`Ý‹î?tûˆ~(`{lºÿ¯ ô$¿|²{üÎOs¿Š÷×»�¹öX“芾ù¤Ù¿ÃÆI6¨´×-ç°Yèp69~ÝVim[±A�áMÙ=Éɵ-¥=÷I¯@IDATv”ïK–´Öïrêw&#FrABF��’m�jÝZïâÖ´§7%§´îÆ®zit!éïÉ_¶‘$p]'b%S�Ù6�Æ/ã ×bÁ€ójKù ³ù·™Í¸·¶Í·o\%<ë€Ð¹›Ù£ë/ÙÙàí“ïÔNŒ9™Û¨º§}{žï=Ú‘æw¯7÷ñÖêjU¢=ž¿÷›ßþ¦½XŸ~ö‹Ÿt¯×Aã»ì¯¥oÁîwO²a’0«“§Näûx É"oòu³ó´…O·“ Ú¡ŽvñÝ•®Áß_½>ö›RZ.`´;ùpùj-vòÝáDCvJŽ]‹0¸1”tË•ÍgÓ/~raÚ]ðK6ý럜Ñ9qÖA©JÍì>¤¤@m—Ñ�¿÷”P¸%Ùùa3š�¿€£xNÇzð/ùË®Ù1�»xaè=>èÛ €�‡ $iȼéd>% À¯Ò àcFü9|²ôË&[¨kGíá‚Ó1³ ó¬[>@;C/÷òèCmlñ]O7[;?}0ÆAþöëX×=Éh…$ãšdÜÇ*dÇ(�ŸÝ<}•-P‡þ»� 6°ÚèE’ ÊX\¸ û?á³β�7R|þŸâ—±}ÈåáÓ7F4�ïí®oÇû›"Ž‚( næÓG+ìÝ]ÑÛ¡Öä}Ì‘äÖžÙP²8ŸaœßžmFAJÌc[ÓÇÂ)6¯—µö›‚ç‘'lˆaÓŒõš‰a´Þú¾Ï­¹{<*\±FÆMv¡Cóüè§.4ŽQ¨á ãþ'qv_>ÅŽlR>¤„){;WƾdßA‚¨±9ÂB—³ÉÌ� ä(ÀX­ßð9{èÎäMo¹-Ùí$PºçÌʈk=l‰‚{ö½âõqiÿ±}µ9ÌÆ¾«ctì`G 8©$ÝÖXwgS œ4Êï×!Õ“—Æ´¿ O:žam¢Ÿ<Ôq4¿K_Ð#Ù!í�`»�½ “’Ü|´N1G;‚kO+¡"t«à5_@Ç™áw7×Ty ç÷†ÌÑu*OiøoªÇás°dIy°Ï¹¹çÙ)S"9¼˜ý/ÑEqÛFòÝ�%míémvùBGÉ|úù§éWK|¼“/œïÒ*?ΗÐ�ÈüèWtõ2z|ßܬ›Í_ýå_””'àßõ7¯÷ý»U'cÛc÷z—}ðçú<êv:a3üWå2*¢â�=°=…G ž^ùæ«éL²u?ü¡{}äÇqÃÿï0G/�N_”ìµQþÁ­«ƒÇÒ¥æ7:^ô´ÇÉžAçÉ3�—7¾Ðu© ¬±¬W@t9ž’L/1ÿMó„ßÏ%wØôìôöúÕÓZß—�,/‡A$×é"Ø-Ïn¨³ñ8IÉWîí84w5¶|Ì×�çñÃæ;?=÷³h ¿deëó¤`¿ãÙ_d᱑ߊŸF2sòPL°=¡Ðͳ¤8½ãà$>3vt¥k)ûóLI´°r6›þlïÁéÄ¢$WòzdÏŽ’§1i1”YŒi&Éa×± ý-z¡-ôH^ œÅ5í« ê;Ùâì5óÀ{¨DòŒ@ª1 �–?[·yº:žW,¡R÷yþÁð_’C*ÿ÷u„pl;dú‡|sY«‚z[¶Øùã:ÂÔ çÁ«ü�ŠâCmÒÍgé@�=ùW¿›Ò¿sKÑköÞ£ªÁ— KôòÃtùΓé~-Ñ¿»ÒQLg¥³�$ŸíÂpÛß÷ÉÁû[ÍÉZÞÍŽ£¿adƒ®U3yd–[¦OOå3uï�º#?õlúþîÓð£:s«R ¾–½ðݽ�ic!Û"{‚�þÕÝl¢ëϦŸœŽÆŠc®Ô)øíî7âivâ‹’^ææ¾ŸNòw¦go+j(yäÝXŒ‚É©`üòr�ÛQ«Ó,Ù>S¡†jwX5*)äuø‚¢,¶ YËv¾WB%›ÁøÉ¤‘„Óý%Ý 1{&Ùw¾±š3kaëöÎôH7‹%ZÀ$özΠ³¾ƒ'é¤wƒ¿fÝÀu©bÏà7~z›ÒïqWë}&¶;vûÌŽŸÍÎt”±H z°ûHZ'ÜS×R1 ãK–Çœ«%OÉv éx–­“e?ÑíéšmÙùà;[Ÿa7±KâeǽdKtÝÁ6ß„I'“qÉÓ—w›ûöì¾Ó£¸q]‚Æ�€ zÃÔFÌæx£ÄT~²Äû•{û~DÞæÛwŒHfËlâYÇ¢IV˜¼žÏÖz½UÜ¡9$³­%>x›ž±­‹OÐg`Ô²}( ­Ü AçY«Âج"8‚é€Ú«ÉmN³Mmá–»{8§]@`Ú£ÌW�ÌXSy´“•Jùo/ð>œ¬’§]ÞÎ àmP‰€Øj€t@Wä0218j3ªdÚÌV²1|µ™�UÕÔh­ØE£ýÕPèÀ~™ ‰nä\Ÿ÷g�0%œçú@k Ä@NcàYÄQ‘ÐÄ9%Ú-¤Ueï)«… e¬c,°?€Nà` Uýy-c8�ó Èý‹?•‹o¦“�O̬>.X\EÂ"ƒ$¢[Éùz^ðxWë÷¸÷?9ë>»G‡€µ•kc=VP½ûh�¡úþú½²ü–ªÊ \¥ä36G,ª’ÓÖ»èIëRÕ×£W#HÊø;�x(!œb”b`̨5ÈÀ°à”9z>i±3 @2‚¬-d°`<[ߢõ.€õa€ó¦V-)ÆCeR^:ªÏ÷e¡÷/ø.­}Ü·ü3å…îT@ʆ‹(k§±s:1ÿCŲv)®1¶¾Òžµ¢½1’3º^`nµõ�šçR¿ÎìÛÖºf��#y"š�8ÆõÃÐhí0%!æù²S´P;#�C+GÂá£âÃ/æ‚Ù†±’ A÷x‘1!U{´…C’F€wÑ´g&t8y2ûýpHñ�=d¤ '€ÍæsâÈ�Ö)@#AªŠèeÕ,Ûjײ|jŒy©³õ–ŽŽŒ¸kµ‹<æätá“OGVûê½[=®¢-:/ˆ8s²3„¢,ú À ž0ög­)n_\‹¿÷6gÊY€r=EÀ©°.Û “­øƒ*v€2²vúM*Ù2sÐ쪌ˆÝñÚ£¨µU¢È¥Ñ*(¾ÆXtÊø¥œÐ&^ÔyÁ^F„íçLí  Øú·Xhl'­µ�rbí ý“û*�Ñ@ÁlvÍßݤ§¿‹V8kèϹñèVPƒ Bsœytbƒ8½®ã‚�Ïz&Ãz�ŽÚg “™ÄÄÎ@3ûMÙ‘¢ž)€Ý¤’m*"ɽ-UváÊb8¤}W+"m`Œ„!RaÖòðá£Ï®À¡À˜è‹A&õ™Ú÷¬ú÷R©i¯F—‘Κ�Vê>olÀj‰J3žIâú;|O2e´/o®Z -.j74s8}’)fÙÃøˆábÜÑ{¼cŸš´íÄ[ôÍ�îÇÔÈ4m~ ̳vºÎÖ$Ÿ>u¬Ïd†hL‹ÆÌ[;8¼w°€ 'Ÿ¹šLÑ~†Ñ3\cóé·.K˜üb¢kzväû.p“ñ£ê•^yšãqý%àÝ”lr.šß×(/’3ÎWÅÃ@!ÎÅ\:Ö÷ßD;ΖL ,0¶m{ÍJqzKÝôÌך€–½éYé–@+Æÿ– àµl]û”4h†löRA¼µ–Kž9Ö½µE«o“dèÖœ  ß?¢k`oéG�”À^d¾ÙX­º: 0°Z€ÊóœÛ4Ö»VY»r8}_•ê«Þç lnÎ*Gæ’÷C.�QýíùÏGÇ•ÁÉîúù/þ`úü³/¦›×¯Lò/ÿûi÷‰éþ•@ÓÕZ»ª“‚´k/ŸŽ5chsà÷ç@ @rÞm–D÷¢¶IÑ÷�øpO™âÖ{´‡�ÖT#.XÑj‘aL«Ø°»ŸDo�ù�5}þü¹öPP÷uûñ$€`q´‚cW©n÷}É5çΟ�®Ú¿äŒLOß±ªöèÀ“®Û›“íŒv¶Ãà½xÿPÁ€ý�ïm¼)“Ÿ,9wFqWïÖ’õ@ŸŸà É“œGI Ésg³ßTEáuzý­<\²{éðÑÁ‹Ï Æ<¬õ×ñgG‹`û£tƶíÙ¡uRyü¼ÌòàHVÍÿøi•V#(Ï&OÙ>—t²o1 ²–dsÛvå¸Ñ9ÉÇ,uNUáþÓYæy«§N�Hî+ÙK•%ËU”WG?~|d ;³¥ÚÌW9›�¡ ;³¯‰%¯ô‹*ñ¹¹€íTí&�׿OK4�Áx˜­B>ÒAÛKH Œä ] ¬ŸÎ8lŒ¸¼1—I[Âbv”,¤{€à!›HàI nðt]pv—PA·¢§-éÜí+ýõ:½ŠŽ²éý KV$iS§âžNRUGö=.9ØŽU½K2 ˆ,”é/Iè镬‹®þÙ1ìžmI8nÎ5vŽòÑ[°-ÙÝ‚½tÄ‹Ö×y𼄗¶·-Šæ@Óc‚œlŽ÷[;¯Ìt]¶õìŃTÉó¼´*I–¦(]k¯ÙIÅ¡¯_õý=Én2UKOÝ!t*`¬Ž ïaº±T%eç¶Öãø�fËQŒ}Ózà?2��H÷± G:yJÿÐÝl‹.×ìíœéÍÍ/íÙ z0À°–‚GLåñ�Ö‰ý Lf3haº]ePzžþú�žYË>”ù¦ëÈéV u4B¶O7b¶l`˜º7û²m�~gzM7,rf¾gszÑËBŸÍµÇì4Ê!v, ›ãMºl_6a${ô޹äË×í©ä[61¾¾BÏrVÞükE7ͺì÷ðÒQãh»5CVÃZÑ ÷ ²²Öm»áÐÑö…oèû€‚péö ºf iÊžk¬T]¶ƒ±Ø+`1�„qxø8 ›Wkhd"‰ KâÓRÕ~H>±ŸªÜð‡`Ûf1Ù½c{Éé2•3Æ"�ù.›—,#“ÛªdPzp{çÖ�ý®KFòŽì#ñ|Ýiàè3÷eÛ #>‡ :»/m¯û‚ª rO;èf8ä^Ël 2ü|G]Hâ¶'¯|U4î^ì0íJ}ö*´>NO•Ì#ÁoÎ*™Û‡t‡Àž—vÛjgXB·®žemT”ÑGª6ØóÇKžÅÍÁ|´†»èÍØŸŸñs}—<›Û­gúBKtÉäd؉öìU‰èX{4@þ~øP‚wþ¢€ÌH¨jÝÏ�7ÿò¹ék§— 0ëâÑ™‹uä9T"Àá-G‡-N¾¨®ÿQkÈïâëDeý�‰Ÿ‚·²Oœ<=Î ²¿ž©ú~sóÞìï蛺ž ||ãvvlÝÄ–—†- Ø–°eÉ€M‰#ÏØÈ?`*6ÃAº° î‹öÉW¶™®\‚SãÜÓh†î–$+9Æ@Ø|ð™ˆ>šåÇkÝÇ1.‹UÞ Ý‹¼@ü>5š"µÂ¶f'®+™ïÒ'ŸÕiäóa÷ÌäËL[Ÿ†ú7þúèó𿾻reºüûß�ö¥OœF#Àëm€Äð1‰Ëo6^ÖÅáÖôgÿw^úÞÑ0|Ç÷“�øwÆ1ƒ¿ûÕ_•hyµÀzÉ_ñàáÀ^kb¯žÆ‡ÏòATn?á[§ñ¥d�v$‘¿è¾ª�a@Ï»Çú­Û#_ËeË®Ü7öÿñÇ(²q4®\zÛQ>ª-uÙÙQ°ñ~>ôï¾ùfº¿º2ä¢ æ±Õñâðc³ùÎwÅ·×_O_ì�3LÅ~¢í{wï yqâÇŸM7nß™þôÏþ|úûøwëê‘|IïÏÏ¿�þàÇçKr¬CÒÕ?/žVñœ�‚ö%p»ÏƒŽh8 .¿ŸnP“Ut¼g®ñ®Ç×ÎIg–Ž}‡ý鈒íÃ쪺Î׸��ü·—|ëI_�Ýu²Öt%y;Àß±ÑVc@ãý2èùQ÷X«{—kUoT*¹¾ÁVè{}ö!Z­v-¡#g²Aé¾³ ¿™�ߦ�G‚I#ÃGþAcô±`'ÛÀ{0ˆ.¿?0|�'¹Äöæ‡Ò­Yžãï4ïo�öàûN{@ ÄX'É[‚6t‚D­FŠáÞÖýàÁÐMö¥ôûL"ª 5�µn‚ûèQ!kt„h¼d£ŒÀBLÌN€½vZþëÐÉ��O?KZh‡¢Ý�É<[¦ä³}ê½’³ßl¾6ýø¬J~Ý%×ëì¸5»’/Îvsìä›Î6µ—l¯�?­Â´¸ßn¦—­o6HŸÓõ¶McÒ¬;�i ǼÙå^C4.ãG?Î}µ5§þF_ìN{Šf¬±5sñ®¾¼¤r¾ûµædúc«£W™èPçyK&H÷ÜV‚#LÛš H5ÔžÛóz>Þ”àËêiAûO²=ç—Ómhr$‹�õ]§:�~ƒ¬·Fè ÝÌ Ì«îuí±q�Àù�ñÑGtÀŸ?V²T’—g>J^,ID{Ýmu‘ܬ²p¾"˜–lÌžÉâ3à'G¢ ç8ÿø'Ÿ7×dY<.Ñ–ŽP]l\÷2?Ö¦°U|Ÿ�‰æà‹�Óï’¯nݼ5ðýQ1ÜœuMp�äñý%ÿíˆÖÑ‘Ä7Ø¥}3wÖÿÂÅóÓ§ýû<ÿnWö�ÊÍ•è^bžŽoóÙZ£«é°sÍ£N{ÙG?,Gïë�åÀ(»{§€z~8Ûd[ûù¡õ{›~_Í¿ÿç_ÿwÓ�ÿþ?˜þàïýÑôë¿þË黯þª€û‰!«¬�{¢Eä_^€V" ¿eÇHxnNu4Ù:Á#ß³ïÒ·#°fïÿ=/²s!û†ïÇ'“h÷Oû#ìô{�íö�,!G_gw(tqÄ«@Ö–t›Vþø ï¼OÏIFv_øÑû’¦U¶²‡FÑMU¯ë­+ÿŽ}JþÍx¼€V~¢cÜ6ŸåJ„ÝINíf=ûemì¯L¯wŸ~ýëßNk%pJ¬{ýºó°ëô7Ñ—.±ld~Â"Œ«ucóóK’@ƒ¶N:bPu½c;ŲÖðE랊`Ì»Z'<°/œ†ÎÙÙ\óÑ߄żڨ("Lòâé|‰0 GovÖ¹§âàäÏï¾¹=}qþÈô݃ŽÈ Ó9ÖÑ¶Ž–[­šü|k—±3hâU¸ÎÒ‘{a8§¦+%’Ñ©ÆÖa&w‡O‡~½VÌnvŸ¾ 'Z³±/-æ¶ù 4Ú÷ÕŸ?ñ¿b>�\q?ÿ:FN`£Éh‹áŽB`#“kü;ûÓ톾Q¬J—øi«†Ý>|[7$…f$h㑎§K§�dú̧ífÉxñ®q|hÏ]@iÔÑÍŒVGbTvþ8¾™OÖs_k-à ã�ô$\�.›+™üi±=8ÉÀ@’l4–h´þî�£«òc#ÚEjÑ~“rŠ�‚/áNô•/3ìJŸmÒî=<ØQw¬nªd=: ïVªB_–Ô]7p±>#Ÿ@Œ‚=£ IÁ‚ŽÔ ,$e†d+®…Eæ?eG¼)ÆéùÖÝQ†b×ëa°ãhâ ´¹î9?ŒÜÀ8RéÐ"Ì(`™5Î8 Ò? ôž–ŒÌP=VÀ’ �A8}ÈÁËÐ`8®„|‚©AnfÌp„v¤à‡à¶ø-¨év7ÂkA¼ a¨ºßÖ ç9çtt¥,;Œ4J‚@0|Í»—¬&FXæGß1Þ­÷ŒCæŽ3+µ¹DÎD™¯’[�Q>£ú -.HeCÍ�#G€xo##n¡6J ¤j -mpf`Â?­uÛìÚõ@Ĉ@ãܧ¡ŒàßÖ !QÊ éíåÚl6g¤¹NEÂÎ6í} ë°=âUM´sÁÙ·e>bjKMIQ–Œ.-…<Ðý8ª11ŠñU•=Kò±Û§˜dTÔþ#ÂÒ†gáÝ\Tùí-¯Uưž-™Ê„–{ìì°íøzŒÓ9·`€Ýž=c-ú4ïNé`Ô• ™-�×»1vc’v0Àv±`Î,xÆxËMÈéf(Ìz¶ec(ŠéÚ½wëÄØÄ 'khc”3Ín_µ�QY• o_ªËɾ¾RÀ9�™Q°¯õ;QÀ¾2Ç(�ËúÍ‚€eíù2\S:WoÞ™ž5ÿùÀ¨çñÎÞ=[ó�,è{è2#´|ž}<É^ ¾v{¥ûh Þxšãbßwæ‘@%ašˆhNÍ@÷Œ‰'OªJhO�y�?¯xHu´*´ÕÕ‡³Œ¹m %AHPyšr¶ß—ýIæno½ÉGÎ.‹Ÿ$ƒ0t‡AMpZ8€t–@ŸÄ4:`a;ÝÑVÉÞgÑÁH8HojÅ…öÃ8Å\û!ctkÁúQùÐz™Óì@ƒhjcÆCw÷}ãЮ ]ìH6KJ8�–þ�á8·t¼DàÆrgÑ{*^eezk¯Š'Uô?_µÆ4Óß®º÷"�Zä’4Î »†PyYÖô�ï?Ìq¸ð`�?L7ro^¹<ýü�þÑt¤vûª­µæ¸F£µvgL=X}PÐ9âÉMÝ#¡åú�kC73‚âUß±ƒ^”]”`—Më´F•ç©eª þ&S®ß¼�%W\ìÏZ‹Gn4ä¹a¨âs‰^wïß�ŸÒ1µëe§I¶b0’U:h5pVKV-æé•¿ÚôÚßO?½ÔsJ°ë-Ó�óΙàÐû2lÏœ:=ì§•s-Ë´^H>¨P~Ð}$訊\×bŸ:ë—SìœröбææÙKÀê3§OÇ ã¹÷k/¼´´<�=!ÞÌ)/1 _üäÓĹsçö૳g/Œ}S)�®Õ/~qÖúëd׉ªç�Ѓ*,ÉkÙæ&@{øð‘ìÉÝý½ÚÕr°¿wå4­u70øÄ‰“usªŠ¶ìöû@Èû]e÷>IÎ!TñsäŸ>�>Î�=Ÿ³Z ½xiãÙ£éäÉ“bŽ�ÖÒ7oÝ (*¡ààѬÚ"Z{þÞ½G`ûÆ�;ûO `ÜùÀO³q>¼ë¼Ò‡9œK¦�ü°gß�Р_8Á[K@xÚüödßèøôfµó sž²Íì?�ïþƒp‡LbsV™.ØÙ–Ü‘ð¼{Œ®Þõìe�k=¿x`y´œ~­/Pڽعǭ‹ÌäñÇF²ì~•fÚž>}²{ïgO«B=U IâÄãøAïÑ£'ë“ü—‡#൴|¢ªŽûÓï¾þ~ôv-f¿Ü�žÝ.á4úæ�Ðä¢À,ªZ �@Zï/-Õê¿ýÍ·Ÿü†¤qôÎ}B÷xœ­µ±™­•íØ&fÀ5‘ ßóàt‰ké¼Hð?Ø£ìwâü^6Gkû¶D§d9ð�~v-ÑâÙÌ9è;xAvg/Ç—«ñ²çs9úÀÙ�ü™n`l3ükNäø®·ØUîþlX @†nN…õvÿée^³$¸¬í>·nø XÈ]k¿iÝ›í!ir­}\ËG 6.ßdz$û›Ñ�É*G �çX»Æê–´Óéu��€Åá_æWI¦è=Îø ,#ç»s7ý¸¶-HïZ·@ú4 Ù‡nONÏôj@`/[SÐS Ãñ|7{`~*‘³=÷õCžó¿†N&iËÉ'«v—Ä–¯"‘cTaG£ÆJì8 `¾ Ïãi_íJmv P ­« t„ßMŽ©»b“9¯�ד[ëšúp2Tt‘%Ø Þ×jŒ wì‡q„�Éd4ßeZïѹkkU÷Ïë’ѼÙLsùúëcžùÄíí³üHm-Ù#ÀbúKBÕ–èH;à'É\喝úlUaC‡ìiÑÝxðpIßñW5t×þ£|¤Î¬Í^bãT×»—³—ùG“ù‚âtËÞZ .ìÞ—œ­R?_ ÍÉžgÏKÔéwv¡ª¬Ç�w>ìA+kAG<Í^Ù:h 8£: FP,„ïmÇEíÈfFwÎ_”,´¥ZAíed��ÚL#ù¾r¿`èóÀN¼]$°óóú‰Ç%?ò÷µÐÜ·˜Þ:u¢cJ:>:hÃŽ¤ßá o²ûØòûé‘ÖmJ ÔB~$®Xg_ TtR{{ä Ùº 6Γ'Î êX%6{ˆwgç�@ÓÄZÀ£î5÷ÒpŒ½»ð¢ {ïÜhÝc>”A‹ôþ£ôú³hN‚––û/z¾ öƒû�G°ýè±ã¸ÉÃh�^ÜžÏL¯Á+V²3î?¤+;¾®jj+øl׎œÓ [²/Ïž??º„< |\­ºZu¡V².UÃÿú׿Ê~x‘®;6ÍE·è µ kúæ÷_E#ÙAUPçóѧ ÌÇkøNã·¿ùÿ�…dŒ�7Ökå à±yÙìæ­�ÀÓBû±¾V¡Ä“ #þ›JÐÍéëÕûÓ'_~Y»à¥é/ÿâ—Óƒï¾™Ž¦ß¶%#ØDZо.9ûÞ­;ã;xÇÙ›º¸5Ãi®}�¯bó^úNb ºÁ›ôóX…Ö…\´OxòZ²�®?ìºh~šãÒ`’b0®„zéÎí»Ã/¥‹ÈUIed7ù¸#ú‘îÌzöÊ`GÛ¾7Zh' “ Fâ (À¸_µæèôÞs/™ G˜ÏgQ]û¡µ3G¢�Y…·}åêt äJ8’P�+ß5IFÝzÌ� ØVÒý�·ÆG¿¬g³ÑkôÏXOÏîÆù+釸aœG;ÈDpV 2…‘-b _7nIý¾¯à¤ÿ�÷%Ȫùdôf]Žž<›U;²QYÍC²³…›á�éI®ÖRÐe­ÄKò�ަGÆÐKdñ#NµÐß0N;¹Ù>zßøpô¬ŸaƒYˆnâ™ôý›ø˜Íê¾°…-Ík(BAºø~KøÂæzã^…†!&×»tØêlñ¹º^JŽåC�»/J�âkKà´7Û¨ÛS¿ ¿�½À·’D žOŸ²ýÉ.¶ l�œ„ÝIT5-Áiv–oú,÷ã½m=bÌöÜZ›÷Ö}í›ñµ®oëº$ÁÈœíIÀ¦k­»w/_9Ì&›l$O4X€õC»Îß”ž­]6WüjßßnÓHul¸XØ>²ƒ·zþЋðYà½jWÄ0Úß÷<û C ó$¥�¤¢ö–�Ù—0úÉQ¾O_ÂØ€AÜù}éù ‡³§¯úLÓötóÀZÀ�Ø–d Ÿ°¼L÷ ,HNøh²GpÞ{xi-"ÞZÅü _’·¯ï¦Óƒ»�î(:ìªsúwô˜D–�äóÒ™³C­v_´ [£ÝÞ¿’àu¬ß©Ó%ýÃ%ØÚä‡Êl:†íÆîA3+ùìéñLI¼ÿhËñBR¤û�°’wÃý肞ãõ¢ �çÉGPP0Æ•ÌÔíe¾CÉVöZˆä‘WùÖ•n¶l¬=ÙäÀÐëÉmÝZ´dn…rû¥{V‹¥´§ÑzßØèøµ:™¢162 lÿbÉ]p™xäeúòÚõ[£ÓÍzvÍ,Ñ)y¯ãÉìOÜ�Üø¦*öÏ’)³ êÖ­3œÚsv—T`¾lUkµñFå{<Õ=àŸä¬÷&kÿ!É~?ؾí÷¿ïÅ~<|ôd�j)Ÿ,4v]ÄèˆQÙÜzàE|1+Ü;4ù6 :?ßfs°äé®å�Œ1ÒUí÷ˆUÄãö®‹ÇËßm<›¾þë ë><ýØÖ|;ñóxK6&CÞfwÌ…¾lïžrº~ízkµ:9ÝqÑñ®ù¥èÐ=’W;�´J3¹çüy|kLiƒÆÓ:ÆÃ># ëT^QÁ«*Ÿï ™G6:âðq]¢ØDƪc¯£ê$âÂþfE³®Kôùñ°ù{Ÿ%Ÿ®\½m´â�‡ïâÙt<Þ|�íØr�q4Ô~BpŒÓŸôØ¥OÎ�ʇùÔŸ}viv¯èuGë£Û‚3²ù=ô9Ùaœl-6?:ôÃOá Ð…’NÌÉÑSg³+דǑۋ»‰½�¬;Äó—|Òªƒïd_ roM¾ÃòÑÖÛ0l­–:üÑõ¯¦Ç÷n \j#ú¼q»tçL®zxµDÆëŽ ÍTìð‡? {�w¯ß®còéŽiÈϹó0ü91ÇuÚQìAá�NZç¯<*9«ud1íÝñ~:w¢D”æò*Û¶èèãGàì%þ½¯¿®ºüPº#_&¢ß·<·1ýñ_üfzÜŸ>·8]ˆùíÕhæ'‡¦CûÒ5��Ϲ> £�ضzóæ´ÔxŽwÔåýëµt³D‘g%ãonÖÙ.½b�GFEºï‘³Kágì‰'Ù]޲yZ’}‹_NT«Ã óåHöƒ�“«3½º#î.éÍ÷ö´Àózì˺–é®5¬¿)ƒ“ñˆ€dØÝ)}-|e7h�ü ÖúˆžÛ&€ž‚l¢‚]2â‡²Ž™=Р)ê— Õ�ýªþª¢ØÑ¹I“H.âÉAmÕŠÇ&4Ë.KÌÕbB¢ ôþ)•Œ,Fœ�39Fˆ…“ 8ñÙOÆ8eD”ÁX;/•|-ÿ0P�ߦƒ¥µHöŒ{ص™@m� ÛÃYk‚®‰ÑGðž2hcÌçckYÙpúé3†ŒáCcÖÎ|%a0‚>‹@Ž‚�Úéa€›õc§~Æ:-$¼9ã*"šUn÷™ujÜ2â|Ï™w EY2‚ÞÔúš@Œ'ñºç (ÑJT6#s­€àŽÆ)‹FG8ûvõ̲mÆß9²_šÌ¨æÆAD‚Ñ�=«%…×Çõj “0.Ì©%Èœ%/4ì^¢õmAßGäœý]ëÚ�»OBÑü|fldð÷ì�±j�{h{ɘš)@AÁ¢Ý-øö·õ¢d=ßãÈ€‡™Ñ¸m#�P €ll„mŸŒuÜSûb ÕÚ|”éëΰТUŽg̜ޚPë@1KRhF1©¶Z@¿˜±À.ºôb LÍ&zöycKøÙs|¯E‰)ÇÙ½Tel–ŒO6æûÕõ~çÀXWA³A/ýN@ÔTÉâ[ìø€&ÚwjÇ[æú󌅅ö†À&äœ %¡†bÏ&LW‘º?#òàñé˜*$7;çd½,±· û×þ„ÌýÕ‡ÑSG ôg4¾(ãjk}÷sV3$Té½(kQ á&á@@�À£€dÊ3-3¥°£¹Cº¿G–Tÿ ôíj¯G"Kt< éîaã99ª¹ª<g!~(X;$püƒ,ºVbÈ�ùtñ…Á Dûœ€Ù›7U|2ûBb"ã½à]ãeH[#ãÛGæô;ºÐ’Iö^«Øµî±-Ã|­5ôÝsg:ö" £•Cƒ§=wz?«–™+ÉÈÙ[—¯4%+<¼åÉ(‡“êïøDW¼ó4÷™1¼öºöRÏTétÎpô X8’RÑ"¹¶vÉÁÆžíÙeâsâ“Ù­ƒóe\½*+>fœ–Û£C)N`£îÃɪ³ÈØ›dî,�íò�ß9œ2¶�%·À’k;KÐ:5®è­äц/ž ßÈ®nÙ½Ò9Ý<’âסH[ssP‰£ÚçP{ÒÍG;/ŸûDsæšä*—œ~úSÐ@Pßþi•&�ò.Pm¡ 'åMï¢!g³8·è£þ¯3°¥õ‹†™nàO–F¯¯Ë’¥ë(v_m›ó] |� ‰­ö· 9çÎ2É 3p·«ûÝÚ†ç '§$_‘S€ÿâ=£u÷T5ÏñŽ` ®UÅš ÄÓC>GŸ‰èk×¶<Œ"ŸìÞ[-[¹±G¨—mŒ’ÖvgŽêŽœkΧ�ÚU�lyYw–dQÉ™Ž/ž³ê­¿½¯ƒà ?~bú¯þëÿfú³ÿý6Ê‘âÛ*¤Þª |_�¾ÿ¸5ꌼG7këZ°5@óeÎÁÝ‚Šûgwݹö}s­zã=Açç�¦:ˆ„ŽŸ<žÁº^päö�@+Õ8£ÛûÌÚÚŸ=‹“_Uq¼@?”s¥M§ÖèÚ|â½O>½4ôÒ‹¯nÞ¾�†ó¦B[ö'aœ<ÎvO&®ØÅ¿üv“›ÎÑe¨¯z��B¦¼lÏUažMÓÊÉKÙúô¦€»z’I>ûôh¶éúYƒpæä©î› Ξeg ¼:SN6ù½|Ö1Q�’ŸhÏ=~jdðßNwÍù~[«Ôg/œ•þ*y[rU‘*3 M¢]׫�®7þ'ÓŸÞçµM®œêè“'Ï ]úòêµÆSp0îÞ­tº–Üløuw8JP ­�iO:?Oð\ËÏqÖ}6âð?¢¿¹ì@v�Hê�yäø“æÅ®ç‹ý6²«è‚™ó™NŸ�rÈ9¶ŠÀû…~ÔÒQ•ÌÐûý�ƒx‚ ø÷¦DHö3=küZ¥«ÔÅcï~ø&¯[_v%Ì‹‰üz­#¥:{ŽÞ˜Ù2¨Š•$i8'Zþ–gv/G'u¹e’ ©×¹‡÷iœ7­ßû1é~ÚHèw~¢qû[r°ß߀d÷;Pd6—™=žÓ½—œdöݶ|U7‚ÐÏ’ìú…l þ»*ùìÛÕscîÁß@-óêka.žo>´GôÍX‹Ö—ý4 Ͱô?šÑ�`ŇRõå,D Õîdç³ä—ÄM>- SgI1ìK ñ8ê(š!C÷@+øº’ÀK 1'×-ÊW%3%¢a㎡)�-Èõçµ g K!ëŸÄƒÝÀaûÐ0† æã‘§èš ä;°ñÙ€L¶æöxø@ Zì!ë‡VøøÇ/¢Éíµ¾Û[›Y~€qKüiÒ=ªÑwço/wÆ» �Àžqà<£É™�‚êì9ëϯ: ª;WWõŒ@´soÝãCkÔ–Œª£�Þ·¦Y%7VEð·'¹Œ7ÙÍ€�à¯óU±Øë­ÙÒ¯³_^¼|Ögu. `D'’Mª:’@ˆÙZ‡ª°]ïþÎz6Oɸ‚ðÎm=�ŒÝ¿·ï§[ïw<Î΂“öt­ ¹x ¾Ó\þ¸Ž kö9ZaS½Íߥ_ ðãF‚Ã\É–Éi{ûìi�QJ¤b»Ÿ:Y =¶š®5ŸEÕvï²%£}²�ÚßQõ=¤iŒ oŒ.MÑ=~9|øL²¤ÿž›uÕZél" ^·ŸaWεÿxïu`åTu0Ý#p/ ßÃc'OO'ΜkNmU�<•NûpzЫê¼{úÜÙè:šm/6‡1$��eÛœ?aè+²Ž­{²Vô/] Ä-ÀÕ:IÐtþüÑíGÁa¶ }·/[^B;™É&uFê³'«ãh#´ÿäáêt㻫ñS¶OA…‡Ù¯_Õ� »vëÖôGú„þú,M²Å×hé£}Œÿÿf_dŠuuüa¿D7;¦=�õC>ßlï“7µ^Õ5ˆì$ƒ4×þÿþ&/ÿê—ÓßûGÿtúÇÿôŸLÅOI7Kê@ﻓ p¯³UÏ�ÿp‡éÉÁ÷d,Ö „]·q¼ ðìtò‘Až%€x¤±ñ6©pè°Ö°dN hú Ý,—ŒS"—$;ÐkΔ×Í@ÒŒ 6—þE££=q´ÄGÄÓ’-Èv=mcÉ^ím¦óçÃýØhc•ü€¦Ð�êBGë ­K=/zží'7=é\@’oiNO Níj.»â�]%‚ÐQæêH�‘°,a¦D ò›¯G—Ò¯³ª¿°«æažG‡À(­íðÉúW€-¢!~» 2»“¼ À= Î`mÉ ûêžÖC sT¶¶ü±‘hÑ=g�0þŸ'ŸºÏŸ7Á_@:»˜ÿn¼üwãe?Ó±:€Ž„£Æ g 'øfdš÷%ÒÂ-Gxc£Kfج–ߎ s�VGaNóå-²æòOÍià�}Ç^òkÍ�ÏÁ,€ÍÃëA®è® [0G2 f6ÃG²¢)6²îo/wÔm¢±9"ˆßJ'�ãc­û.šëÑcÝé A;kg=†mÓÞè†2:ŠdøÞà�¾'�‚Öײۢ_>éû·é¶d‰ åGÀ~®D%G_nÙ2kÃNÇ÷Àîß?í› ÃB2ztJVµ*c�¬�qá¿<æd¡c¢¶�–à0 òûYƒ‚…�ëüjAUÀÛ·òˆß0ªúã;üg„[Ð#ïÞ—$ÖÞ�Á¦ÍÍúZ|4„Fÿ¢•¬}œlé(Åd/�¢3‹û¿ÊGƒëŸ¯‰é`.‚lö\‚þ¬ëeÁb8W´d_Hв¿Û{†uÆ{«ñÉk8Û Î%8-ÉZÞº‚ Äoôô<ÚBŒ?ú`{I"XzóÓÑ“Mâxf‹?æ+±𳺬±£Ëþí0X,Z§GŽæ‡YCV’{ l²©Åì+9Fî †òËtkcGlzì{��¦?™ëÖ0<{[f²ýT>wû@§{سöåå‹ñdØfë”å:èÛ3GB’�‰¦Ðºk½ÓÄUà&+oîõ¬ù‘4ˆç—i-÷L¿û‹?m>a“ñ‹à‘µÐuÅ:ˆ;lÒ1: �cpdkáY­^c‡?G™À[£Ë­ùøü·×ÉPÝ�†ml0ÿ¿/÷Aw3Ú‚C#¹½{ªÀnOá<ö×Ú(ÂRŒ¨õ±n–¯êÀ{ulÐÎÖÄhZOëóQnÚGçš“Ëä¾D¾µpfûsÜ)9 õ" _—Œ`Ìk®›ï³y�¿½ºVÁÑÿ6ýþ/þu>ðò´ãW_™þà ž=ÅÏo[z–.�uà=œ?ÚEôžú ëÉ6übßøÏÇNVÐpýÚ ù7ñöâîŽY çVd¸ž-¼½Äùqd[ëcX]ßÝlž¢ácÇ–›sU¯Ñ&AçSûO{½`ÿ¢åñ~³X�½ñÙ�›Ñ¿. MwȾKÏfÓm½;Ž-¾;¼thØ*Øél¸ÿ,fÓü[?ãB´hK¢ l�|ø�|Zçy_W=ãOã _C§µQ¸½¿TLWÀÕòEð&{v±€ù‹pÚŠ¶ §y_=˜ݼÁdû7®ùݵ7/Žòa³*üÓGJŽx3ý››O§—ÍgÏüâRE�ÑŠÄ‘•æNŸ;=}Q+öÛÅ©n?\›öß3Ü–S7æ�gªXßCg8vòY@I-ƾ}ujMéœ�ò,»=™þáÏ—§“‡ÒKku Hg¼n,{Jò¿såÊô¿ü¯:ý§ÿÙ?šþóö_LüÇÿÛô¿üåô幃ÓÙ[§Ï/^˜ÞEWWn?šŽîoŸó‹žU”8ãÊtòÓŸ„ýîû¹�Ÿ¯ë²b¼%ÚÑÿâ—Ÿ×?ëØ«0¹“ÅLtÃzþ¼¤Þ0ãG«%Påk�› ¿ÐžbçêF†uÉC‰äÖe¥ �ÆÚ|ÈO¤ĺFr|N±·ì»´4ߘÿ$7$ +$}Û˜tÚÀØo²÷%èݽ{{–4Ûw¶ÄëªÃÉ|1ˆ­É:ó±•$¢ d Œ¤�ì†-Å\Yµ­Øœ.y°s²&m~äÕðÿQÙßû š%Ív›Ùçé6~'kÅ›Ù�’˜<“�/Ö1—îaÁ$£Ý-[*„$�ÙºÉ6![kW݆?“º¥µú¬¨[Éu8mÏtÕ£¾ùöûüj…)Ù5Å9߯ó[J±Ol ëýä…�N®îTIÙ¶(‹æ¼A€äB›Ëy�·µ§¸R*cîÛtùz• ¸ çOŽ �óËHó²¹;ª0¦¨TüZ¸äCŒwpKŠz]� d�µw 2ÑÑ¢ú€•)B” Æp2n)ønSBTb� ð™Ð즜)Ö�”± 7†ŒêÚ1é„õZ‹2žWõ, åCÏD°²Ê-”Mçä1 ü0T)oÂN6Iä>i¼î=S`ÞGX)uïeT#"‹ñíl€o䂤΄á<0Š¿„·*s£|­£†b·¹²�=kÓú�Œ@g�­·�52#.•´£=Hkº?BÐ:ðl­8cÛ¶L³‚ ‘ÚJ¾G@[2�ëîÝ=¯=ÆÐɈAÈŒpÙžÝòE+�e4F´œoû=žBbР�¾Ñ|fP1”EÌ%ª-ç»ö×ú†´5Ÿsà‚šòЦ£ a<5ÆÌàñ�€ Úi-í¯5ÕBÎ>H�Àl ã7tÂöž#ð=Îi.²ˆž2  ¢Öaˆ0:ÐfŒ�€éM-„€Ò[ªpõ¯$ £ÛA÷y@ÍaSÄÑÒ*Üs0 Î*B6›¿}—„°Ycކì´ÂôyíR¢œd5%Êø¶æ½U "øçs ¨îý¡Vì�µÐ%”ã!´‰DÂ$0ÁYöžàÛáÙ`cŸº7¾Ó:ô€\ža°Q¨1ñ´h´±e_ÕZ]<žŽÔº½„œ±nóñêFgÒì>XÀ´÷¯T}þp¬àßÛ„<ðVRÌ–wçòHÙßá5{–;ØÜrŠÚ`kÙãÌq€ü±ƒ‡_´ý¶à Ð,úaØR?lÊÊ g"¹¢•þ¡*$´¦yÞ> ´‰w€Õ®ã|:—‰¡7Œ†xÍqºi�!mFÚђ5&Ìñ?Ù‚‡p:ú&Û†©ÜüœÓǨÀï2M ñš�POŽó¬¥¡©ÅdD÷ ñð0v'£ ¿èìÀÐ1t%ÈOÉxyÛk<'>ٌƥ!¡%÷&Ï(3>ÈsÏ1@}ˆ"Ûé@ë1ëÊ‚ÕïãW†ýÌyÊ@j9ד7ÆÜW‡l2˜ð7¡L‹Õ}f:òCçá’C6´¶d:Ùj¯$#¹‰¿�…�ÍÉçLÏç Ls²ÞÓa­G³müDÝ»ÙÚš±_ä²j¸­ôUëÙ­z^� ³æ¶V…Õ¡ NyNß9GíÖ½Õx:YÜü6sd÷ï^_ _Ÿ‰­µ ¨uñÐo˜S7ÍÙ<5îm¿þ¶¾ðS2ôÄž*>¿ÿõ±éÊ忚ö9=À¾ùŽÌxS2É©óç¦G÷®tŽÜ©h=»&ºÙ¹µã=¶h-ëTòàÆtrI‹­ªµî< ðÙ7|[ÒñöíÖÍÀÔ^àÍí[¥gÀÃÛ*Kþ odß¹u³@wm|RÚÁ@¼ÎbïG°\†ó¡ªØ×:¯ìñãZ÷ž³¥t±¹{÷îØë3§² “q�JÐ"·9­£•|à„J`4x(àT Y�àûׯ�`>DzpèÙÚ‹IU=¬¬¬fÜîÙ»èðnj6Í�HÙ7ºg8~ÈsŽ °Œ¦nܼ3ÖW`‡TvÛ‘åT�õ%PÎ1?Z�ÒÙ¯ëWª®—Íí¬o:üæ�ëà ß;Î ßQÖpUTѤ0x{¥ª=€ŒÀªsˆU4—�žK�Î*ž¶v@çoóí7ÍkÇtéÓφ޿yãFûóaè�;µòë'NžlÜ[Få:[ób4BN©loûÆZèjtëV�q¥Ïž«j/àâÎ�{%X<Ÿ.]L¯CLÁð%±~ñÅgCF¨ú×áæÒ¥ ãó+ß_i/_öùçÙ.»§7®ÅVÎ&‡j™["ƒÝ¹ó‡#ñ `;9ðÙgŸ§ë\sõÚpT~òåÏ“¦ï¾»R»Öζ¯:”¸1¾ýÑø‰“'Ú˵:Y=ó×U‚3©]ÿòÁ府/ØT›ûœûcO�dó°½–Tqáâ…LQBÃ…sçúüÌøî�;÷G'Áú;µï<Ÿ.ðƒ~œÉêïó]«jàëËß&»×GÐAàS—4vºÀ"GJ%ö¡l,À¡D«}ûv àåa�'vÄrûLß¼/1ƒç\Wôb�È)g®+�­‚7ÚTå4Ÿ:Y•~´ýàaÕ®wž;]‰&Ñõ¹³gãyUU£;VåèñéÙO:}ûí·#9‚#Èæ`‡X{ˆÕkÑ =OÞkCÍùµßì ×ù ¨�–ì³—3ŒÉ]s°gCßÓ]/Y†ì8gk÷ëе@(t8œç>Ófw设¿£gdޔșîJ×Í�îé>É�wÉžaÃuõlºÄѨæ`“ŒòÛ«8h �Àx�íæYí.BkáGé«—�\{Ó™àÕvÕ}C—ŠÍ·_ˆ} ÐúArýáJ/JÖ:ufw`ÓãQy�w�Õ)FE¡{ò¿ŽvF) }½dYô³¼||È5öå`ÏxÒï÷²u–;šM º0 -²Ÿ¼pôÍÛb6˜Š>> Ä"zmÏ®ìØü+2 ÎÀ˪ 2éîBvJœ ¿žÕ•$q=è&lnudY}0hV¢†äDE ëu1`ë1ب‚D{’ÓÀ:•Àô9;•Ÿ�¬ñÚ½‡­éÖªƒëXP^P̘T— %~Ðt¾Ù|ûÙ]#öYÉ#Û’�“»:ª�7«uT¡{¶´îAi 5ýíÛw†žs ›x›Žã¯±EÈ ‰EÇ¢{ë·Ú-%m^OšçFUÿ [Xï<›ž>¼Y[÷SÓ§?ûEܬ CÅ ðr®yn/�Ÿ`{ý‡|¹»½Òn~9–\äƒê$ÈgàGlÏN�H‡øeý÷­lü~Êç’O/ HhCôÄ©~ްvNf¶4ùW¢€uW¡ÆÔ=Ò}gIAŠ|«l÷‘,Ù³aQ>§™Ã§�¶èº üý�nQÝk{Uß#ðب\Ïø$‹­ž¹ ý’>UY°´ôÁîè†Ï(ŒKoÐïâG�»�Kô>¿nPõÞÛäÄÌÿ¡R¨/Î|ÈÖ§=¦®Õw Eµª s‰üFrØXèv(ã‚ëèd=$5{o!üïðË%9õætî‘Þ'ËuÄ¡G½è6¯Ñ2;C†¾�Î_5&ÿþ[¿¾qÒ³|%<Ä¿cû�Vûüt+|?~¥µ£WèX÷§wùZp%öÅè¬)!(¹ƒ÷}#þ5¤¾»gµ‚${±!ð£ Î$y�ÝýàkUñI•�c\Ö°eo ŽÉ€_)žšuE�™ VÀ̺ñ¸&ày|aXùAŽ´t3}ØU¯[ü ‡0k ×ÔÕÆØ·§#áÌìWþ¥$Á‘ ‘�·£“==¯ Å™¿>KÅ!ñ‘56®ü%«²TÃmíY€&àD[æJé{ô>]±ãƒB±vü~K¶DãâRÚkMt@—Û`&ƒÚšÇ–¶vh Æg�jÍáo÷8œ æ(*‹–`#¿u¥ìå ýâ.>ƒË »£…,îXÀžQ° ¿öpo�à(ÚgãµÄ*†�Ï$u f‰TÖB[^ÂMélBæ8j ^ïú]ÙÝ‚ ìô�у}´Æðü7°·æm#Ó©ž·=Þu½7Ÿžz_«õùí¡G­ ù±%ûnjÍ­ž ¯%Ñ9+±>Â6ýú·_ Zl�#8ÊÏY�¾`?ä ; ÃÆnÜœáWƒŽÓ/ª¸ŒO0ãÝæî’µ­ñ ×$3£éîç%)‚'Pð ´§°(sÇãód´ƒßet—´þ’IàÄ£È�¶@óÑÉó’äà8ºê©@`gôª(æM¿+ì‘Hãð6‰ 0÷S�³÷}•¾ìÜ™ÀïŸnÞj ·Lÿð³ŸÎôxãÝgºŸµ™Å&´ºæ£]?&Ó³f¿Z£Ö¡õ²®øw&ë­n‰ŠÙ¤üRüMý»^n7ìÿž…?í˜ÕÃKòÄGlr/ûáxËñCß\½›ýV’]üþ®bÉA‡;ëþÄÑ:a&‡=q&7g‰ÀîeC:[úIó#Þ$×%�°ÉF¢aò|<«9J^8yÏ|Ï¤í¦¿üå¿.Ù÷Ét==)AÀšx–„Æës4ä]�íƒ šÛ)ñß´bä6 Êùâ uÍ|þ8Û"£ñž3'&«ûéÞ쵚¿%Kt6§¨cFNëNVêNgf#IšÑ-påa˜I62ÚÀnÆÙCÇ~Ú¡!ØyKÞËìsÉ)�ûL¾« ì³æ§°•œ\¹]·¼ü]ØôÀ©Ók°~º#éÄQØÍâÅáÛ_̆ƒ9òAغŠöȉ¹m»‡¯²|âĈ­>)ž�=ò´¸ÂñãµËNw-îKßž\/Ðúª¤Ô�Ãî­+ǽï.7ÇtTüÔtóëoTqU�¤¹®¹º~ó|súÇÿà\t´gºQåyç4§Ÿ÷M×¾¿]”€T°ZœÏÃìë4Üz¬äz�síãj¢ðUêO«ŠIˆÉØáRëq·êð×Éÿåäëù’|W*v�h½µàù®“¬LÿÃÿø'o°wúÙÏ~>ýâžühúçÿêO¦ßÞ­@£±:ùVã‚=¾¨›Ã�ý» Àn¦;ß=}P²ã±üºŽ"ì(š�;u"IÇd?êˆ�tÉž’$öW h¨êH@О‹É„UÕa‡ýÄÆ"¿È¶÷‘p#Ç`°»¥¨Óïª×÷÷²ü}<ÕN%¯ÃÞ£?��NŽÑCðb<ÉN^/6°£„Ø�—G£»ŠqÀ¨./ìý×íAþVØ›Â@ôH¶íÙ5;g·Ä�xåU­÷éòËØo·¦gº'Y` ÈL¶; �³iÐ[�ç¯#j|kýN‡DÃÆ”^¡{�î_]íf÷|�(Æw*}ã{ë¦æžî!qG‡¶÷�Ÿ.›Xz[Gëõà˜î¿ö*ì!_z{ºÔѤ4ºªFÑyæ�¯}"wè ¼Ï?‰{ö­@yíõ#ùÒ¿ó¬äÛ œ1ÖÌ #7Ú“Í+‹�A Œ-šçør2E%’¼Œ6¬�ÿ[S2í뀷ÇÙ¥­ñàÇÖ ºV…-ó‹ñÈES›¾ÛöÍ2]m,%Bi0PÑ?Y•õÑø¢™Æ‹¦üXK2bfð‚î”Ü,QÄ1ÖZßÖdñ0í½5øá+¡Ç~ö\Nšñu³~OÉI‚im6ª‚hŒåþdùê>²‰ßf âoÌÔÐûŒAÛšt�¢n7äù«d‚yŒ$¢Öˆˆt›æ’œm¼C)ö}"þÎjF�±“ýx´‡�µr﹞#[Õû Rû6_RyB×H¢¼˜b�…Éæö¢±ÈÆ?´´T›¬'#è5´ Ñyë1Ö–ÁN÷0{Ÿ3·­LY‰\‚Ò#Q§±3(?˜SÿÃÃý:cœ°Ùù`Ý×$�¼uóvÍ‘ ÉÈ'ðÀh‡®X¨Çœ^fø½ŒöWéÔæC¯J^úHoÆ8“Ɇ ¬šsé�×уÊ<9îÀÆFÚþ¤; /Ù} ­-œ¿� ¿¡¶Þþ1^IœnûŠ~í…YŒ#D£_Ï@Gè—á`ìYç‘ÌÖx—Ò­áÛA[½7d¡{·§³õŸ=›ýh[|ýÆ�®_�+¢ë˜p¬ÄA­û%s �S'kœ<ÔúX%㇞¯ªöPtéˆ]?®·NlíìèRö�¤‰&9œPºúÁ꣱'2ÎVys¯äŠ�BÇúûXI*ü. ßž@ çÁ£ºHd÷b¨<}òDÎö�€œŽR({ù›o†ÌÞõ@èþ¾@l¶¨öžíœeÁ{/ºu+?!Zakíè:Ik±]®bßï»#Ð’bÏdPdŸ »º¨G4KßrÌ%ÚÐûZ‡�í›çqPßtCöŒ½~EÅS’ý€)�Û-2µZf ‚ ¿¤«¬e¯°ËfI£Ù]çcÓ’yèõþ&c¼ÇÏã;:ŽÁ¾£Ý¥¼4}óõwuJ¸-M¦ÌZh ¢¨Ø8}æd´p«çt&Zkü¼ºîêZè=­Ú1|Z‰®øvT4Æ¡ó› ߇}#1LÈzYg6¾  ý¬*ùÀÁ­ñåêÐ{ÚYÏÍ'KJ á?œ œ“üsëöÝéóÏ>�¾øòÇÓ·—¿OV<.IäTt}¡N=wò):žæüźCœœ™Énûô³u�[}÷vÇ.œž¾üù/Ò÷â�Õ¾·g|~ûÖ­dßWâ«îׯ~_àüît®{]ºôùtùòådʃéü… ÉŒŸ&nFSkÉ›³£Ê·}nNgÏ]J.Uå�<­Š\’•Ö¸’gœ÷}ñÒ¥hôàôÝ÷ßÅ[ëîp¾û¼Ç€H¾Z®ò÷`¶Î³::Œ¶¤—>ÙÇÉDÝz~\rˆjW÷;{öìôÙÁ¥éF²Kpx©Àðg_ü¸`ë£éÞÝÎM (üìó/Ú£¤U¡:Ü=ô¶ŽÉ_~ñ£’O'/n·§{§ó—.ޤ¯çUåKf:V—íùøñ, ÿÃ3´˜Ð8!8™MF8¾DB�ï>\•ðõvÎÙ¼'(%QI¥«vä÷ªz>œÌ?¿TëÕd€`¼ªÐ#KË£‚PËs²‹ËU,×ÄóWÒìuíÕ÷(dÀÁnñÚä‹éÈ�çÑÐrsáûš/=CVðƒ$±wñMî³™žš' Ú¥`*?=s-Þ” &étçî: 5>]ñ¼ä+‰ ì@­oW^à�ªƒÒU|KI(‚Û“ë‡U½Ÿ÷¤õ˜J¼z »a1`ùQzþq:W‡œíÙÍ/ øßxp'®R-PóYr÷A²roÁòGï&Cfk›µhí~™—ùŽ%^ýfÈ¡=ÃÖߘö6ï½É¡íûêÆôâ^|Iož®‹QGŽüèJ|� :;¾)Õ�é ÙÖ6üÍ¿’gdX¢j$KÓwÚg’yüØ7Uh²)°y�/ÙH'Ñfø}Ï÷Ñ ŸaEÛ—]eòõ·—§%¨ DÿÎ�—²7=ḗ�ÖùÜ…3㪇ÉçÒCozîídßÉôJ !yr?½Vuvòìzúùxüt 3ÎotŒÉ�lÉÅŽz»žÉóHo.�£÷ÀDÇN�j¶ _üäü8²ìU ï'Ÿœë8„’ ®ß©åðÅ€ã—%‚~?}ñ£/ ¢¾›¾þÕ¯¦ýø'ÆüÍo~?}z±Ä½xì¯ý›éht¹\µÞï÷Õ¨?}þìômIEï{/|þi݃êZ–ì¼p±gDo+%’=P_÷�/ºï�: ÝK¦JðÂ|Z�3?×¾¿<ÖQMÇ>Çl8ª&0dès{k ù×êúB¶…ù3’£fÁ w�ÐøŒGßÂéð ̈î‚=ŒŠèÚñ˜mfº²÷Û{v¶ë$¥¤´‡M7ÓÑ‚w|�YÐZW�—ý®¢PQ¾7>E£â=ºpd"ÚÔE�~td–ndª[ék2VÏú ý*Hò’ÉÝÐüGdzýw„]ÁÇñ†�ƒïŒ–ÜÖ2�jJ67»Ò÷„±Á©$‰Y>¡.|æÉ¿tÜÔàñ’ØøÈpÀ´Àœa±ý1oA¨édÁKûKZdK8J@g6ÌÓkÙ7Úî´Hñùê^RÑ8:ºt�Ý%Ǿ P€%¡PR6ß�ã¾O²Ã{F‹MÕá uæ§?mìŽB±g�zŸ­b^º+YϽ�EÛè6p¬‰§Ðß‘‚‹’huGa3âwÉT¢q‡®¤û›ßŽlœ‡ÒvÞØŸ†X+�’�ɇCLkÙ‰‹­œ £¢¾þÐ}ëTÁk´ŽŽ4cg9^Á ¨ÜN¿£G=JúÒâýpüízÂo)Ýõ²gJw¯6§ fϹyónI„ÇÒW É’ŽKÏ¢ƒ;½ÿ®µ?q|–˜-aYð~)�OÁ-$wñý“ÖkÏôÝoþÍôbõnMTàœÉ™è  UŒÝÇõ’N¾ß8f`˜Óp¨íñÚÀt“ TÉ©O?Ϭs\6{döï~õ9NáÆ'S¬µ/âƒa»G/6/›Ÿ^ª©À†§oízßÙÏÀs¼Þõ]É|xM€LrùZ6™OU®KJ\̾DgëKäUPâûEèÈ…Zj{ô‹À´ôäöÕéÐQ{ïä°ƒŒ‰Pƒcù®ñ³ÙÉèZF¶“Ýì°‘HV'¯ÍÎaÿþ»çÓ¯õ—Ó'çÏ ý±úðñ¬³Y´>pºì+<Ô­Ç v#Ž2ßûsÑɶl)·…“”êsAïÙèë÷¦7ò‰²Ü‹ì´&ÖÓõý:öf$Bô òåÔñ:ÒEsªr­ ûÏQn2�‡_ÀõØg’ÉkÏ뫽ƻCOÁá?&sÌ7ö|Õq®ó헿ɦ{+ÏêTa^G̾|™„iŸ‡³³ë��=•<‰fÅ¢`Ñt”®«£ò:IÏI”¸Yß´ö¯Sò–º¨Ø_qI|È×ÞYLbàöñ>q˜¾‰î£=¬£ Ä9˜Ö%Çét­@TŒO ýIºK’ž:B_£{M$+™dtZMî°ýïf«Z, ñJnð’ì…¾%5C“|©€O ¶Û0ç(,‚,ZOF¢C¨âïŽðÿè_4u„_oÆÛ=�¶DÚjZdÁ Â�1³ž!Êtv(£Ðæq‚eN2"­ç¤ ÝèÈ3‚çð tíXn¯«jÑýZºâU#÷ܽ‡j“;WöYó»tˆQ�#óR×çïfg'à^¤ƒµ÷Ù¹/#0–órpã'•0&üwï DˆÏE BûGP2D7†~TrÐö”pò4ã¾adü�ôý—2ªvIFˆ5Â�‚•,EûnÏwvV e1 F22|/šë=3£åQéÿPh=)ÓbŒ½QÁδ~ªF¬MKÕúÉ„œ)=²n6ž~ëË>ÁêAµÝ*úÙ^6Áëè]Î %g»Ûz-�?ÿÐsf¯ÆÚ~›À7æão©Æ¼ýk>èÁX­ c-m~ÖHrQkÓù6Œ4ËIǺÝ NߥآƒõΣlLξ&øÞÖ{ðè»xÐ& ú!š˜rÄø-^ì"Žÿøß##R-™åº™rßݽ�s×íú™�ß<´uyµ&q¢;´ƒ~‹}ò à„`Üø|ö”ÆÐXã}> €2äø�ÎñÙàzãKºŒ}åpš÷H:jPöOØ«�Æ­ o/(¹ÙÞy�ùÝÙ›o:³kao:ƒÍQÂIò­ï;ÿ­VToœ˜1û!²Ùž¬Fo¦«%¥8cëáfÃB –éàñðÁÛœ‹ª¾ÛÏqLZ?¿=y-¦õ÷îÜŠ  @lÈxxÿN¶ÄË ÖýcdÍ㺛�+£sDtë¼àûw®>‹ˆ~�9e¾x2tÀr¾ òÓœnòŒSD—>®µ«j6�âC'ð�*szúüùó#©îÞ½€Öøá“`ôƆ‘± R™©rájAgºJ†6°P7>9™í»=§âiãx¤�X™ÃôªÒµáÝ[¶8`àz¯¶à¶ølg¬K çäœ:YKÙoÕúZ×�@uv“ªAç² J à¬>~PEd•v­£@¡yݹ}«y V�lÞo ´Ý @íï>— y7;�NøôÓKØ»sëÖ�}§Ï�²ûû+WoŸT'#¿s.\hm¢)`: õ\×YïɈ/~òãäÚÎéÛï¿ äØ˜>¹x‘ˆêl·ëÉ÷7ÓŸ\ëÿÍåï’‡/²¿OÅçªÞ¿ÕZ¬O—.œk­ ž÷<I/^ÀÑ·ßqª·�JøÅ@pàµ$‚Ï/]è,ÄÝÓï “ûªHÄ7úü}ûp¾ñî+ˆ~ùûï‡3têÔÉÜ»ûΗÀ ù*øål/ë·-çèAÁú]É𱯭ÛÝ®wœŒÛp£z€Ü´m}~G@nkìrÖ2[WЋݡ›]•3¹¹«}ùèbë�¬üxi[(;ˆLá`RÛC3z�óÁçÿËÝ›5Gš¥÷}‰=;�ØwÔÚUÝÕÛL‡íaHTˆ²#Tо±Âá +BºÐ•’B Ê$aZ¢Æâ�œµ§»«kž'‰DbI @ú÷{Þ*[Š nÈ‹Át –Ì|ßóžó¬ÿgSþܸъðg“0”á<&ׯ–áºVžÊCÚQ~ï+b›µÐèÂeø}@´ÚîF‡�Â7n~::: g_Ô±5hþOŸS…„(?¨;ÔŸò¤_VéhÔÑ%wœ½¶«6TøC¬#Ì]þ¦ÞÌì}ZÒièó/2€=M…£œ´q¤ÙqI–Š/ân摳&ÁÙH�D^I·&ɸ¶_ÌasfHèhAÿ€Ž¬Å º•°Uº:h³ë_ñ±¨éb$”÷R7Ô°IÛSËj^4*‡½È†‘è€áMrFô€ªã:æ ~ïÃ[/^¼†–—"Æ ÜW³‚¿óìÍ6¼kb¢ÚvB0I]1Aâ… Gé¨Ä³8@Œ{˜h255�–VèÒÀ½¶¶7ÓÊòýôé÷¾—6×Öƒwä›/~ðºãm2qe>þä³ÏX½¢ÚümúìÓOI¼yƺ^P9{ãÆ�­ë|ÞD%“T•=&ìXY²C…ºh5*§çæg ‚RUÿ:µŠ¹´¸ÈëœÃææF$êÍÌÎã' ôÞ ùô�ûá³o¸¿AéE@Ë ‚]!&àKÎ/òÌEÞOy%×¾?"iÆÄBAV zth³(?#ÉßÏ(ÔûÈÚCÖ?;; ¨ ¦ŠãÈVö̀ʲtœjú9èÇN&k«‘¤5 ÿ:{ÙójǘD82d¿T Ðj)ý›S@ª3|[œ.Äì1 G{pþÜsn¸Aéi‚õ&ë”àw刴fÒÎ ÝnÀdŠÈ[s:ZI½ �b |m/þ =¢omâœ²Ê |ƒy¶¨—çMk`FZÑc5fÍÜ[y4hE ‚MÛMüÀ¹Â&6]á£V l›,?9=4îó\ ‹�ýi�Önfu|eç¼kƒŒ2"ª Nb�…&•êç[1}Û²Í4öÅ­#O2�Ôvqa•3A ÀQƒ” léYrÙÛ ¿‚.•wËvX#aÞM� ‚ƒT7]ž°~*ú'»y_5åiƒßN›Ð3ºhï>zöCdš•3ŒÏ"�¡ŸG„ä°Õc¸ÚáÊŽ¹Ç/_Þ ÞµíùãÇOÒ 6Or*n‡í­ì×^×ÇÖŸWÖ¹~ížKÆ“€"°H|q„±2 ¼õ‚¯@Ò“ÇÂïØ‡ß• vÒ‘.•�&[ôÁG1¾š ½Ç9é3L SäEm}mñý�Yº+БÊÿ"�y”kú›Å©¸¾‘¶”kÔßw£ðF¹,ø™ƒv£jšµIÓß±KÒÜÒ=LP|\p¾Å‡OÑ%V@B8SW™95AàƒuŠLhëI—cã3œ »Å^™ÀášÖ?^EE[̳wxúÙ÷Ã?÷éç=¡„ÙGõ•IÑ]…} �˜ƒW�[�¨Íy€­¤|P×í‘8ðàáC’Ù›éíë7؆÷C¾­È@âŽA–ulÂåÅîÝ‘Ö�Ÿ³<‡8Úúê[èqÛ¡‡¿¿!˜?ŠÜèO[Ø:CtÞgOìø£>Uvk²“$ÇM‡M¨l™AæÁ3�æææ�g•Ì=xü8°£=lÇåådJ›j9¹÷~ÃZg°mìf¡L×~5‘k}}3aåʲW»t]�Ò$ n™V�gê€ÿ¶ØŽvãÈÀû`sÔ�u$œÍaÛÝDâ úÒÄíud¢ëç³èj�ÚJºÝ�ô£m¸÷ ˜ÚŠÊïsFQÔÏWéH ª99“yt„ÉðUª”—ÑbÑÊç6t“çfÒa}ì—ÉEì í²Ã½ítM ×±ÇØëÒ =Ù£s‰ï#€ª­/SGËdl4ƒKó3±‡v£ikNŸü�%`ª�d·¦)xC¬mw{'Õ±C‡�ÑUÎÃJn:’x|½·«ˆl£Ó&àù¬xul†3Émq[Fïv·gûVâœõ�µoMú¾kކÌ3©¥úh^÷Æè “·î¸ç k_’/+eoÑw·hÅ «<Ë~ƒò ‚ììƒçb%ôpGÛò ƒ$öðn›gBÀä–ÎÈG)ŠS çk$ ™Ü$æ«�~LNŒÔÄî:.â×ÁûìI‰}oçÞŽ8§R³Óª8Þq mðSxÀ5ò¾ _Ü@{òP‹¤K fmIÇ(ßLTŸQîñgô2úZ¼÷à÷À~ZX^ l^;Ð$[±z}Ï"´ìÏ&ö‹Z•o¡ˆ…HÚ1�é#Ç–B§\à™Ø¥�ªMf×;?DP ›aZ3ÍûLsöêR?&Ðuê$þ >J›:“{vB_Þ ¼ÙdY“¤µ]M„šÖ&à>&™¡Ûûáyõ² †K+‹AÇâºÚJâüupGÀèY©êž8úÐûXõï³ýÖ—_¦Ù©¡t´ö5#I¾…>êQ™ª-¬.Ñžgq/9¢Ð]&†('1 Cîº÷YýnÒI‹ïÊl$^zúñ3æã'û‰ÿ ŧ?‚åOÂÀ@ðÃÿ�Ṃ +åž[L^üFìÆ™îcøIžƒ˜Dà[üì§þ³ÿƒ>ÁñXx</™lqÇóŒ GÄ Ü«kl 1y÷Õ˜IWg?tw¾N¥z‘žý:’ó‘ÊÔg “®Škƒóóš2:Ã>ÅgÁ¹àa9‹GZìk7(—‡W8– ‘™©b¬­¶µ‡ÍØGPÔÀ�gщ¾¬ÁGÊ]ãŽ?Ó'³ó–ÉøP,tÊõà�h­¯±áª ³¿Á=Õ“®‹Ž3 æ‹Ãs=n” YvìU—(O/°%-ž”nΡ§~l#ߪ\’™ô¥´Éô㽘Éùcž7òçæŽD ð5«úªò5O<àçõÕ8’†°Ùðç§Šùôõ1-Û í©TÑÞƒî8«ê6 ú<gwcm¯òæ:÷?§«×1qdÔsÏsŒ<@¶Ú)Àä�}\¤Ð¨ÌˆWz¬·µêij”ġӔþãOKàméGŸ©÷À Ñ·2žÖÎÓw‡�ôÑ=Ò´U±­ƒzWÄïƒ}-ü;N1º§f±yIž<¿coH†ØÜXMñ—/ÒÏ_î¥/?{˜¾÷ƒßf/Óø³£ËÞMMOÁó´ÿ?Ú} Oá“"KÛH¦(S1_à9{ðý®ÐUãw$z1Vc�ŠsézÄ„oä âýø%°F·ÓUh|”î6ì×ÎÞ Ïo‚u=è\GÛJš¸ 8ÅØ�ÉJbCïèM€ã‘þåg[,½]cüÔXg`Øvü‘ßù»?søúôïÿç(­‹ ’V‘uú î£Øj^B3Ž»:³í†OŒ¿ëáÊiù§:p�ÎBSS¾ TØó,Y®\­G¼ª›}Pï<¾?Uîv£4éÊ5›ˆn"š{¥ß\$Qš…ß#Ží3™4 ,Õ1D!eW-Gýeq,d(?ûØ5´–�Ovì>gäû@¹ãÙä'‹FÑ«Òæ(�…ÓŽ+Wæ^ß°Bà[ šaŽmé1²þÁÃûéOÿýB&3΄3qŒ• A}’5xuÂõ i:…ÎQÐ8÷ ëU2mU<…��rD¤g>b)AF³8Íö”:7ˆÜh•‡™ |aGe"÷R@(PšNº—X݈=ë�qð:#ëµsb˜O )ðîgý[–™Ãµ¸Fö3k€9hB A€ëHë„9_Æ€µïuöÌ%sÿT1`^§…ŸÍî@��ÒâE`¹€šYÖ‚J%²@'‹Bó^åHËÈÚ¸æ½fKÚjLGÃç1[^0|†¡¥cj ÕŠN} ÏKÅ31më¢3-0¡²¨j„c†tÿ=f?êLAðíš‹øªÈ¿uâ®*rèÁhÀs*QK+75Ô"(Ïk t³õÌ®öº·(~•¨üÑbýV¢ëÐaP|øh)Þ£‘ «ÕÝ]#¹Ã¶¡yžÚ„¶]; ’­â”Ÿ,Ê=R–*Ç5ZUˆÒ·É!>ƒÁ&ŸÍ{)/åùZþi诡íÞ˜H£ó@÷ éš÷ó&Ö† ŽRưðßBƘХqê[ÃXˆuð”±’ƒ¬û^�r+ØE䕺Јs½¶ûê #VTØ0ç™4vB/¹ïþÌ…¤ŸGþ¶%NÌ[ã5åºk“g<é톄*[íŧØ7éO½›¿›­ý^_�±~ç¹…LåóQ]âu� ê3t­|s¯­ºÑÁ0`©!`eÅõ­`©«‚X¨tÁŠÝè�Ç> ¹Õ’l˜g«qv‹Œ Y†ÒÓˆä3�­˜q.p=ŸM}ÿÞép�Lª¸•¦87�?³= r{~f †AÇç”�Ò�³ŠÙÆßœo|žÞnD•y´ã™¸wßjåêë0l¤!žKY+ݨï€ëdË_‘ª±ã“¿ü†ùÊ|þ7åË=6AQþÿá—ýÿ�ÓýÑ¿À!ÛOOž}Ÿ m1ýøÏ´¹0¿•G·TŸ§íÍ}‚C ZÃçf–:–B>ÑpÀ¶¸¾¤½-º{�ŒÚkd´2¨»—�äl Šè°Ñ†<Œ‘œu–0“Ñée¬�*5ª’ûзðñmƒn=ä7E+*þV© ¦ê'XÇØ–“g´}W_;ÖÊ«’œ‘tJF«¶Ã¹òCPÅ üúê€À`H²" {æ°Lë[nÖW黂 îíNúo¥¨mTM¢±ŠøpÐJØlIƒnVUÚÚxÜ€<¶Åêêkø”*ìYÀ5Îys“@5�{«>µ6ÕV%[ág+o×1V&€N(×+Îi·:gT°Áà¶úÝ»ºÅ ,xË€®:moßà V1knnïP5ϺåçõÍ·ÐG`ñ :¯;*9å©?|ráýû— •*Ù×c6ð²~ȶ­-‚ã€VK÷:ÙZ§Ýy¬väÙ¸m¢§æff✎}Ž™ÀföÍ`¿-gYŸ•˜¶ö·ûÀ"ɯ8<&œð™Ee+ˆw Ò¼.ìNr ;˜„0xU¤šô„™U¾vÐ6°Òu‡kL°?Z�ËG^ÏÜžâ߀e…³3ÀŠWe®òM»Lýf‹P«3‹ÎR^X\�Ð}ð¨I& Ò!ø%è­æ3šT»¨M)½éÀ˜Ó¹=àl9·²²Èݰ‡ë$Œü�E¥º¶´4­f%kPÓªÞþ!Ú"cO+ Õ êm A*~ô?N˜$xÀÀÚç«Ì×?óUA:+Ñ|;�ˆÍ)À„nC×(oµa:[!ãÕƒpø¦]ݦ}m?K‹ß[N{?ÛHÇgéU®”6á•]ú_&¥È‚iþkãú¡“xŸkŽ×ÕÛ®Û8.DÙ—‡ö ¬™HïEßG"©z‰Eég™�k@Ò–×Wœ‡Á½c\|°…¥EÕ%ª¢ß¦E~Fnînm?Î/.R¡ý ÙJÜ$ƒ Ož«{;8ˆo‚ÓV°ã‡z½š.òrÀŠÕnCÑ–�À°ÁÚ™™G|ùòmzûv� õ输ѯR Y´²²€€íÜ¥!ÂŽÞð»-ë €˜h°ºÊsò\#e'V ò<|øˆ„”û¥ŠýƒG�Ò‹—¯ÒOþâ'éÞò½àQùw�„•••¥´´¼Diƒ >A'øû)AÁ öí»/"|Ÿ€“òÇõ߃Ÿ>ùäãºÿô§?#9`%äœ2î”±•Þ ‹ÐÑîvúú›oC&.Ì/Eòˆ�g·>`ýÊÐ]Þ³Ì^LDY_Û 3‰Œœ†ß�a5î" EÛW7bk8æ£z;@&Db:òÈ–ÄçÐ��äQd†„iµ¶úi �þáã¶jÞ€Ž­>«èªíí=|Íž¨ˆ×®Ô×$-è“p +ç”ùV8Lð9ý«ÖD+Lðдó�UÎÍ´jжßkëÛáß»V+“ ª�ðYn°» ÊÉ·ôMH Bõ“]Uœ%«þØÚÛFpæÚåyÕZ@i”à×H€tž› ž>æUŽÚ£'•#ìM‘ÕÐû;<‰U&§P…ĽsØ&œ×hÏÉ5Úá‰axÄä"»9¨<4Èñò›_£/¨Ä„¯‘¥ìŠcì÷7\ JqMM’ÿ´eñ ©ÇM¹à;ɪ£\³Æ>ß‘ŸÓ‹^¹¥*ï¼�ìÈÙ–›¤*ÒúH€Y¸ŸòÃ÷ÞãÈЉ©9øÎÊ-$Ï®Ï+hí>„íÍ:þ¦¾ia« ~NMÍ2C~1®¿ 9§Ñ… ·ˆdxü; >þ�Ïà§äÁnÀ~ë5ÆõG ºè³hqÙÏxƒèWØûqYðܪ.ä03ƒ.&Èçù¬A1<Aå•XE`씉¿ý´ŒÖ×Q¶*÷ôC¤«�ÏŸ‰ÝЗë®ë¯Á?¾Ç?î©÷4aÁ†ö—òšÃޱó�4 ½©ÏbgƒüV T²û— š39Z›_©¹AumõÜP´[,´°}¯˜‰ÝóØ|vÐÐõÞ½Üó„$±ÕI»up¦|0Í#¯µ'ù/®ë]€Ó<×^q-ã$ÒI+&„±�<ƒóŽdrÍÊ¢>žµ û„Jk1­ ’Kì˜!]Ý{ðˆä÷ŸÑHÈz»Ò¸‘Ê6ƒ;ÚaŽÎ‘Ž XsØ8p “gÝ }ëáwI³ŽìÑW¡‚�£í­ )Öá9<×wÕÞ›FŸzÞÊÆ)°méÊ{ °v«| hc@¦ÈaF3!ë L³Wb7ã$óy?yI;RY'/Û‘DLD»oœ`»˜¢²Õ„ŠhQ½ÄÏ<“ ÅÚ¬Úßî�¾þþ‡þ±ÉS“$y”Ö®òZ&½êþ ¯Ñþ7AÆÝUÔï÷Á¤¥ 7øæˆó—Wå9õ‰çl1cÚ´ÞÃı˜™Y¿ì§I^ÞOÜEÛÆâu™4*íŠ Ioâ�â@þlÀÒ$®`Fþÿ>×þsíòR?ó“¥yé‡ð<ˆí-ùYùGšÖ7ô=ñ>þ¦>’ÿ•9�Sñ¬üXÌ£ÿ¢%k7'e�|à{ðŸáð”ùâoÊ:»&© ,F »Y€.¨(Ãød|Î˹é\ÜUÛÓµ €‘@IDATyN¨•ØhÇj7³P®œa;ZÝî™{—v· çìžšÌâ‚^ô/ýÔ ‰dVœ?gLÛITv§m¶�ËÈBé\Ø8 .®c�^_ /ö—uˆ½ËŸlO“Z4ZÍ/¥1’•L≠ß]«Ïù_þ¿à=ŽlÑn3kjç^qñéì„-*óÙ¬5‰Î±q&<˜\*–å^¹Nå¬{Õ±È;XÔ9?±1×"íµØc±õ‹-Â�ÃÈcb›�TØ Ò§É{‡å´ùöu€ÿÅ+Hî”§å™Ða\Yù+-ªó£úýšÅƒ8'ô�ņâQÆcLp´XIÂ{¬oîN-ï‹oóÚ?:¥Ã£Ýöð5Á'´›)DE×uuUCæ6ÀX´¹N±�äI1þÎîþÉrð‡;/EB¨üv­Ò¨2NöÑÞRç[ jËnB®Ï¸€v™-éýn‚º²ºsØ®˜KasU†)“”AV²sÙ°Å^Äw<û[äm!oKwxd÷ƒrù4Ý[,¦oß’„Ù]ƒ¯o•±ùé`„??€m±E¾‹s«“¸ˆÍé,i»ž #³†à‘l´¶Ûòâ\Ì4»UKOžÎã[•ÒÖ®ä ÈTdûT¦SÅòÊ|Z™é'ྕÖ6��Q$kÒf|ay[ur•éûèÁ´¢ÜÆe4gÌ“ªØÔC”¡çi/¿Cнzð&U°ÿÿê›ý40RL¿ó[GpVûí·ß’˜¿† æÆ9þþï}BÜ‚Â;K›¬�³ÇtM'—Ä›�ÝÄ‘ðÕ%xAÏä É(ê¿›°Sšxÿþþ1øÂ I¯Œ j 0›¬´s˜ùƒè�ÉJŒdé¡KäSéÌDã Ú©ÚJ&�BfAsž¥_â5 ΰkô‘¤C(�{]F2¾¾.ÛúæÑ³Ï9†ZÙˆÎò ö :]ÊdŠ10Åó»Ü�4ºÁø¡J¬É`·öÛ XɧÏ>‹Sƒä`u¢ÏqÃZkçµh™^óRŸ¬¯ƒ‘ÝÇCŽ4�-&_š¸!MºO é«™T5L*…ˆrFÜE;Õ}u]`rE|(qiÉ®ÚûÕ´slRƒ÷ÇwçìÂæ—Ée-öÍ¥&ÜwðK{\_íò’ïFæ­t/ŽÄæ«€\…J^aç?7ß6Û“&^ >je`À> 0¸p#)ÝÍ,õ(Û{ μh`–Ûd×FÈyøÎXQH<6ðsG�ÎMˆ}”] gOÇ2”£�Dg•÷Q`Z5­r5ƒ¶Îu"È %]Qé~Fv…à« ÅBÎ 6×8ö3 ÷ŒL…Ù Ï/1¶Èf‘U fF„# ÑÊ´‰‚ÔΔ¶:î ãÀç°õ¹­ç4,T¶ÑBT±¸ö‡ê—÷S0ª\6îÍc8p² Êðº¨2“™�¶+ñ_ªX³�|T¥rL†2{Î@„ÑÄø;8¸d?ÏbŸ.u,M„°ÚL!®r €}¿®Sˆ ål÷€�ëä¬s� ØœU Š`ppþ†·dÕ¯@@(p”¤U˜5mŸ;£«Ý3ÃHgM:"’Äd÷g]7¬w‡ª2×Ç„—`5°Md°mœû©Òwÿ½–ƒÖK'í2TZG—U€Y80¿ë•ÁØ*Fri¬©@"oüa¤Ac^«rtH©³«áDà•Üwvˆûª0 ÎýR:y…ô×ÙXa°½e€% ³Jã®]Ã\ag‹?§�ê¿ïï¸;�ut¶Ûš/³¦*!ƒþó:§†u³söÚì%|1ðš�5–Jë 2îŸ,³²?9Ó; 8�ó[÷ëôíóçÇ<†ß Æ÷ # YȰà8M¦7Ì4¯Ÿ¥³£ýôŠ›È£¯ÝdäèX py �N–«gŦy;¬‚‡ƒSQyrÇXÿ®³¤¦s¯�ó,ðãêÒb?F@ ®#{ëÎVU9|ÀZ|Ö.èýa/³IhÀ“ë�Õ€Å08Ük f�W«Æ4Èt¯ˆ xz¦òŽÆ³`äñ‘{«¡Ÿè!G8»ÖyFË ‚ñðûd,³ìÍ�o6åaŒhhÌ{Æ\´wœæZœŸm…¿øì oƒÙ“4̨w>z‹ª ×áL8ÈuΘcäïÈÎõÃî‘å‡1‡2Sé@�wàQÕ8P´³£²„!>ßö^VÓ– Gî‹ï}ײ‹ƒ-ãx\èIz0 –ª49—ûJ_Ãò…|'-ÌRmÉ3 ¨1 Hšn‘Hà}}Ÿg!MyÄÒ™™Ç]t&)—u0œ…MôwÃÏ*(È6öp½Ó�B,—?4>=»;d¸|É�”ì½çe¶Æ3Íf�a„"úÐ?¡£Ø7ÛéXÚGé¤;¢siÐÙÌxE1Ƈ÷ Z°÷ò¹³ÞméŒÉ÷Ržóx>&ŸÃÑ�Ä-2*OërŽ0Ê”î‡cè›Øg  ”'­r´ [èJöÂìAƒwSÌÁÅ ÷ÙlŸVã@z˜Ëèu$Ÿµûé3˜¬49Šc @è~ÚõÀv—§7´|d¯œ‹èÌcÛ�éxuSU¹´²|l¦»sè8©�[¶ 3ÛÔ–nLî A? ¾éÙ"€ÉLýÎÖQ¶#üY?™ê€`Y0Ž=|*ÝrÑÐ}>«3t´”™j³ìçÍûrè�~ÆŒMbй¦�ýÄF>�T÷Â>PfÙ·™>iow^™†Qvê¯rŠï‚x×\G~X´è9ü¦|©ßtº‡˜]ûÃý}Z”ݤÿÛ’~úÿ>Í.>gßgÕi¼´}«Õ=8R¶ WïÔÈ‚m’œe’DÌÝ£Z½J¥x™Q­»2ôpLðû §˜¤¶NíaV¬£ÃŠZƒØØK�=¶£¢Bµ &�På™#ó³šQ¿¨ÿËÊ.AäCfÇBØ�íð Šä"�Q}‡3tNðEË#cÒU-�\•¸4ÃûëüÛ®íÇºÕ ÒÇÛ:U¾ð‡qÁ·+øþÀݪ8-�KÁúc*Õœ¤{ÛéÕNû°¥NÂÙ´f:µÕçÑW•íÇ ´úÜι¾á™�cn0ÄêNÁMm«þ5‹ÖÌÖsªÂ ÒÛ%À,Y“ÄJ|Æ hN¹Ýgi]¢ÒÌ`à$÷µmÔ¬˜me€‘çÞ ˜—�TmðÃ뾈À¸-,™ÕKV¡ÙZxŒ{»¶J¹„½MË2žÆß¬¿`Ÿ�ç¼Fá *è 6i{…]ÏkŽé†ÇŠa'—ËG8¤�´²¼ˆ\¡Ò‘ Níä)À1³Û 4×�3VØ+gv Néô ™Á‹­ºGàÉ ¾Ÿwf¦�8I£ƒû°_÷î;Ë~šÊƒéÙ™¬²:›žKKKÓ8�'T ÑŠ™,e+Š”›TRÙrÜ=®pïõuè8ãQöÎd5ï1‚,š@†JsVÈHŸ¶>dO666ž[ êZØØ$XˆÎ·z²�ßw÷¶�•$U ý|í”öÃÈW+.í€tA•Žûe¶·r»Š ³ÏNAGÑæµB÷ªpÇFÆ"`o7…ØOÒÈÜÂ"t@÷t�ïŸàß•[óó3jʣ݀áò–çbW m»w™˜dÇ/uŒÉ4ÍÑfÜ6pgÐ[úQG¶D²ó¯Ÿ¿ŽíDí,õ¢6¼º1< ˆZ€(ª ÑÏ&Ê‚ k3ÿ+ÀGdå¾�¼[¯šˆ#ÀwÊŠ,osõ¿²H¡/@ÙO_— â?™H-ôæ ³ðN‘ÚMÔâ¾ÞŽÇC~a¿Cçü2;lw¹•ËÉË9h©Û±aïä¼t p}…¬8…Fç„¶ÐWÚ#1þŠ×µ“zLrÓ¶Pæ›1ȹ`¸¤"e`XpwdœÀ û9 ÍØÒØ3²óXåx—}¦51ö¡ü¹ ­¹ÈååeNõ²É€è'³³ìóø�Ùê\£È ’É ó³Ðï@œ]èa€“È(ŠD^ŸÙy Ú‡Èl+ÜGËå¶öUôh� í�ëå¨x“Ÿ=z�ža#<ÿæyz»ºš>øà!»O«ÐÍ´¹± ¶�éׯބ¯rïÞýÐýß>ÿ–- Áhn†çëèÛ‰g™œž »îõk’uØ+KLöûå¯~žž}ô1�ðž÷¨„=Jù­í¨>_^^JŸP¡ä¼õ¯¿ù:=ùà)Éòb¿o¦_üò×W÷ÓÃاýèÖÑ9M•¼‰\œC‰„í°edC…@çÏâõ>ý”Ïoìðo3‚þŸ}úIÌM>'Hn`ѦŸýâ—ü<`þa‰$d“"?~DÀ½J úõè61ö0‚�ëȆ,“`¦sS‘ˆ#¸h`Y¾”­¦A�ÚYÂ@U麌™€¿æ‘#$ò9Ë|�kLFB—�gj[±m‚ó!ÝC´›¬¶Üq·v¾�¦|ïp£LØ6‘hšUÖjwÐ]̤á#àÛÐ\¡?�:H?¯‚ޤÝ$� ý+mŽ¡«éÙé ½ ›¯Û²Øxr NG²køÍ€Êp‰"ì× |2V¤j¹«¼»½�Q=½ :{^ƒPÀHÀDƒÒ5ø]»»Ìþm¯½¦m6ÉZȨ’j`$ÓÈMÁ*ס>µÅ¶ØƒíyMØd¶ãé ­ØÁ9´ëFi[\ƒÿLªÐ.3i®^£='×B4¥Òéaº¤%¦� Û¸¡×­ÞÉSIÖ_SÐæÄWAçàÀ[c}àH5�m$RØ Õs|Àuýò¨ÞÁÎ<ÅOêd £ <�ÍÒ‘€ÒÉF&¼,Ô:Õ—xïëim+?þ6¾”¡xžø9TãBëVË]T¶—_¹cŧ ¹r»D Fa¢='ЭÏɬ<Ëaà²}öLJÄ'°ÂR¹¯<0pçyKÃvÂÒî°Ó�úÝÎAâ;Úi̼¦‰¿Heôˆ� d… V˜ú^#Ý´rC’"iš5©wô§1¹Ï�á&ú‚bq­‚Aú Oì¦ d=þ2÷²ŠZÞÒ¿¼¢M{\×µAk›­(rï·c€Ûd1�Hü·ñyô3 XaÞÝcûl‚‚ð­zÑ�Ï© ¡]e2‡ö¤¾D¦ß°W¹¾þ“2[È×Å3#H¥²âƒF~áå¢3óÅ6³ÆNlaq éH}ç›y,t“Û!½°!0È{ÅÄÈ$9ϳI[± ƒ»á÷bO‹«z^Ó¢#LbFbf½=#áƒôñ}ásq¯&m[õáÕÛ9VVx.·ü®ì÷¹<‹èA?J[ïŽÂ� ¢Ebœ{Àg2_‹ï\ÃYäb@\-+"Á\Œë©×½§»æÖ„´ E¼RLÐ-îçf¸~}û°8g j´Ír$€pÛБi˜8ÛÉg´)Ûy�µôñÅÝÜ6¤BÈ$ïà~Aµ\Ó{³î«m•œ¬Ë=5ùÑdy«Á}~çMkKèKß²V±iý ÏËb!ƒ¾Ú;hóÖVÙž#g �Ì%ãâmq6�Lв7l#öqˆÂ&(ü½ŸÞµ¸oþn€CÌTÜH19\¿Hz�OnšÐ �¨çi…4‘ ž�¿A‹´TׯP&ˆ+»¢ ƒÏê#K_wÐ’×âežSß�÷ð{‹õeü‰ì�NŨ´;ù�5ŠÉz<ï»Z�ò¯ôâ›ä-_�g°#hì¿síNžKžg7ãu?d¢GG—ç½³—Þó·å¿×b¹A3ÚyâŠâJò§ëQÎù ø}^ý-å—ç,Ýxm Ô«Ê&íxi»Žb@m }d«~ýEÏÝb/Ï:*(ÙcƒÌâVOºQ5g:ÓæÛquÚÉž�r‚ C^”ãÚ,˜$¾g¬¡~p†uõ„¶Ðؘ&'d:GF)×<ùE9xç¾1÷ÎwЕŠ÷( ƒgx¯AµvÎË"CýAe"‡Î¾�D½¹K%ó1ÀîÅ"A™õØ=éñÿñ¸¼¢ÿåzù�³ö¹¡gÞ{ý±Ìèš"¿k»:Á­ÁSNñ}ÅXMZ�¢5¾›ŒÔÙŽŸÉìñú/ÿŸtožä<ð Óz¡+m@“°m{/ß‹—*óõ�äåT¾�ªúünè«‚‚ûˆýˆÇžÂgâ=,ù¤V£2<ÍãwwÓƒ{Ô þí3ÂÊoiIýa'_å�#qò`ôÒ¬xƒÉIVôj·…lŦD{quâØØÅ1pá?q¶­]ÁÐYq„ît¶àhçà„â¼Éð=Û hµx¡ýz@AÅÏY~¸Ã7%pÞÃ:Î�åêåøwkG©8vÏï$¬ì'>hB�ûö;Ÿ=À^'©|¼Þ�/ðU‰´Î™qýŸ·Ó¹dùxMKth­€ÍxyÞL§]$7YpGÑYýh'mÐõãW¿ø–3ª¥ƒ‹vŠñ&áì¤Í­½ôüÑŸ :W½ ýÃÿö3öùŽŠôoÒ+´§‚\Þ¢›î%÷Ù,7ÒÃ)ÀY/�¥µ1p^b�õN‚ìÌ(‡f,~}»IR-öJƒ¤ ­·ó&½]§8ƒ‡�¶èvd€öìš%ΤϫM§N+V{N҂؃±»NËH|öˆ}|×Á-ÃáÕ9èjdX�5ô¬w,²¤¥œTùYi#XÁ Læ÷<­èÛsEøÌÂ/ºLàûd4™é<ÏÒëôpý>ð\±<“ †°¯'ÁРSm¦v*èïà/í“|Û@ŒÖ‹Ž!Tìw4IÌÃNéé >P~µS°[Ç.ÍáG�ƒ…\ »B�Ñé K™È33¸Ä–[œ™O—tÈtÐí-ò\¨Lâþ9vŸ¾úQé„ê7!ÈL,Vî¸&×ëóM’Œ,¨?gž]^Äöœ¿n1Q-ý-DVF“ÚØÞ%S�?î�É›Î?Ю”¿Ä‰´#:tDU9Uœ ósÚm`ÔÊì*`GgËAO|Ï 3Ò¦&‡XØd8oJ$3Ró•“dB¨B/‚0(’hq¦ðƒ€ rª˜ î)œ²q¢¬GCA£€S©!‘csu¦ü52oX�BƇêCè¶PÌÜEg¶,JŒ�”¬¼’ÐùüH6©Ô X>Ï­ñÒúÍx7GCŠÄfªÀu˜­Ö¼$Hk SÆjÃJÎ4¶¨´B(Ø9 ”Lg€q>·†€„a†›�û UW¶½Ò)‰ F `�ï³}z6çà0Æ װĪz·Ù‹ßtj h 2 A‰<«´ÂÒ ™Gü-‡��'xžPà 2 dBõtƒÏÚó?�cÞ&Qz |i0*8½¯™)fƒ{îѾˆ¿eF3ßU:¥žmfxhòeg% ¨¡cýŸ×ˆRHèì¨Du¥¯6�] ¢v3›ˆÑÏsñ^ ¸BüM£Nj%™÷0SOa¯²2Û.{8ær¹«°…†ÌnÆ[Ý>“™îÖ¶ �6çÐ�ÊÞ@ª´f¶š»ëÙ„±‰ “ Ç *¤yÑs´fé8£ •À†DÙ9¼õ¬Ü0Öï¼ìÚ¾[�Z%ÁB€MºQ�…ÑÁjuR¤QéS±8¨ �<Wùš…ÆQäÌ)° ¡/”¾Î¯ç¦Sé>Üõy4P£uFýÙkKfâH,.œjƒzM*Å<Üc�ÏWÆGðsMÞÅéåÔ7L†på�ìÿ‰ðг�@Û³1ˆ‰ylÑh§v Ð]ÚÛ`/¨`Œ}ö…ɦæáŒðºÆHí:Ôø¤#kg9ñ<d•;·ÒÿµOËÈ?ÛK¹Qøö�“#yJkî›Jßj¼É‹Ñà�0$ØG—.Ýh$iŒI—áxs®òº²é%á¾@à±o=�Ž# x�{Í ¸B>ê�wt.äÀíÕÏ.ãŒ5Ìp~0¬TB¼…7˜dÏÂiî°‚ Â}4¢}íú¥ kÈ–X†!ü®“eVËçA9/™YhvFpŒrÏaÊS·Õnõ¹EÃý»Ï«sá=u¢kLæp�L§,Ôë°”ø»?¸¶à™0¼Xç»kÛ¸šà‰.S-Šb×Ñ0°«9€S&ï¨`bìÀ‚Ê>ÐâÜŸî6÷›{ðPUCy( ‚“*‘{¸‡@�²Àìw“‹õj÷¨ ‡ ÀžŸÆ¾ö3š*ÚÞQíypL‹x_'“º‰>}ûÕ·!Gõ_´Gšdg¿Z{ Ÿ°G€&Ãz†á|òSg£ÿ&¸'OOÍѪ9!ï\Î]*¬0�̶íò»€Ž:È_"ÀÄó¸ß!Óã)¸¯ H‘ÿ€’~‡ür†sÙð+»µóçœkSè7ùy~AnðÜ£É5ùK|8òÒ£AåÕÓ'ƒ^¥}çLÖvíPÁÙs=ßö?k÷°»A… ¢<]&ØwÎz¬B6yY0ÈÀ¡3(�I´©°è¼yÎŒ3õz¶Oµ#Ö`j7AÒyd€'{Ø/ÚÆv{c =‡O‡ #pëL86 Z"…þj\�e€%AôJ…y¿«o#x;Lp´DåÃúæVÈ4;%˜èb{ð}À¸7ø-Ê^Û¯Ú~ôúÁ"5vpú+ hÛ›Ð"ø8¿¸È*[io{'|MÛí²±ÑÁâüÂVÿ3!7µ}{®ºXû}º2ìpÿ5®5KPþö¤Âõ6�͹º{Ö»ÈøøÍŠü�õ5f}n?¼?d}´‡çÎ$ì˜P³³»í‘Fåzù¸ASí™……Eè”–ì¼®½aBˆg·Ãóh‹¹ÏÒÚÏ®ž˜„Ÿü¾K�í­Ÿ¦òmk{‹ÀùÉ3ðˆ¶£-í£rš3:âœóø7ã}î�É>5ì>“"ì a'ˆõ5:…x¶C€‰-V¶˜àc`ݽµûEޤÁ"ƒ³'\ã™1� îî˜DP ÈÓÊ8�k×0j×xÜ}™ "ÈÖÃ'yVŒ›T£ÞÝá9´EM¶œ yèŒ$�Møvh‚_n’™ &íèÛ5é9 ÕÎÿýÕWáà €‹‘l³—â$}ì«•™®¡|¼AÅrÀÖñMt«c ¨W°­œÁxKEˆàÿÖ�|öÎ`«ÃmÛë]‘$mÁ�•þ® Ë݈}�—íÈ‚e‡L¯q†V”Z•B�Ù–'WÌ"Ô‰î%8_¤‚ŸŠ¤«³­T„gÄnT¤‚áú¹-ù,¬6Ã@k´ñÖå™.i7œ£ZÞºD…yHƒÇùÜðØ8‰&×ÛÎÔñ V:“œNq €<6{›ž¬<‚7‘/ÈËa+~£zGªÕ׿‰ CåÇßæ—zà�}ò÷ÿõ¿J»$,hƒX1>Ìråš¶„´êÌÊ]èÞyÃVW•h›ØÇ¶”µÃ‰­µÇ©b*à�0ºG@pž3hX­’�Œ¯Õ×<³�t±ö‹~E†½áG�QœÁ™ˆ™´÷™ÀœU£I#V$ÕItäŒ'úHØ£m2ö“v�rÛ$Xý8u¿í>Õ‰ú{t½ü‹¿œ§µlµBB¾ô:¾—®G•²­Ó‘·$ëÚÖ¤«õ�cŠW øÅ1�mØ L²‹ ϠάcÇ¡ð 5�_{GÅÓÁû¼·‚Ég6ež ©6œØ‹:¥ÕâyøÙ×´‘ ›x ã³C¡3õG¥±m‹,¹½×ÓÿßÒ'Ê¿3PYD‰$n8(Šì·ÉÃî—à5�çdµ¡Å<Ú €ÙúÐúJê7í}ÇÔùÜ&hËk¶ƒ‡hß¿ÅÞr¬ËÏÛ…²{ÊÀÝ•{¨.V·Ëk0ÙÜ’ZzÓÚëlºÝwöôEZýn3-Òñrhl0}óIF£èÆYtãé%‰J$‘Í’�21ˆLÐ' Æ>�"‹gH®ßÙ†Þ�ùMÎjžªoöoo—à]™ì “y—gæGÑ…EìÙ 2“"dÁü‡tvÙ)ÑÒšêRèâ`�ªÖjðxl’$WìøúY ß–ñ`¥¶¶‚7±ÇÖÞ2ïzq–n ‡\ÿ6=¢’ñŽgÝÞ,§ýmÚ©rÖ&ð »ÿÁdZX›Æß‚¾œs=;7þŠl^;N÷âp Ðåƒ'3è+O ²Bc\ÙÑÙ¬â'lÚ‰ñôûëÅŸa¿ö÷*¬‡® pNáCÆðÐzû žVÚ0�] S绽Iw*æöÂW1f�3ì%X0øAõlï 8$]3ôÚÛá}®¡-.ìCpa‹ó£êuª²À–×ê H Þ à1`7œ™ô«.SÇX-l!†•ºúógؘ`bg(>ÆuH¾�&¥ç© Ÿ)9oyÿé)]ÆØ+¦´ÅÄpä “•wòƒx‡ übYâ å-e€þ‡6êÂÜ,÷%øoj_)[|.¯­}7ˆ­¦ïyÁ3Ú9£M÷£›[$ÃÎÐ-v:¬ ‡ÔW&}iëî�¥Iè¬V;ÀgBWTÊŒ 9:Æv§Âß© y9È^ƒ(°F9íÒyÝ0À™Ö¯´eñoÙÃìñÒ>/ôU £Ž*:C&™Ä«­coyð/± ƒ¬ÆTœÏ¬¾‰$$ä_õX�xCÿûî{øYåþ*;Å;ôqìáþ:ŽHz×ï3úó¢wÐn÷Ö° K¼ßЃ‰ï¾W~Ü! ôðÓï¥ÿþþ‡ôX‚…Žb0ʹ¿þKÙ‹ŒÅ'%QAì?øFzɰHlöC[Þ¹3�M¿ÃWF‡ldɶA.3~*bЃ>‡Ái1}GËÙaó<úœ8³s eöÌkˆmKÿÚ%âÎØ!v9 Ѳ´¿IÇ Zš™ˆ³°Ã‚kq\“rÊ/‹J8¢ð�úI~`Ë wgØŽŽ „é¡Gªæùi ;ßà·‰=òƒ|Ò‚nc»X³Ýöúñ¤Éåy±ìï™ydI9ƒÏb”\‰}S‡©WvÑÑâÃvuŒNœ1x¢zLùÙÎyEàŸÎnºÆ$“V¯Áú»v$Ó–vßå­HÊwm⃘h Æ ]£ÞRç4ñù£àHÝ­ˆ«)'ü¼|j¡LŒÊÁ´Óë¶¿|ÅõY'4ýñ£Ñôdž1ɨ1}È}:gÑzÝ„ý1S[ ‘¹£túâü®9?“»ÛØû~ªWGƉ£š ý³o�ÒçO&ÓgÒ?ÿw¿H¹²Wœó Ÿ ý&67ô0ÒË¡7[âÿä/¿#o!LH–!aD¬Ô¤·èˆ.‡oÀ#v¶Òú«íôì‹/S¡ø,}ÿ^¾È\œ÷|`ìaÎM^­S±¬íýåç‹Ñéç�ü"-õÁWú«œÀPð ‡í!øàƒÅâ›w'<ç'ŸrMg}Ûý„B_“bªõVzºÂ¨%b«¥ /«öMÐÕS†Ê›Ê+åƒúÜJi;PhjjIÇvf²Û‰#^¯ÂNÿ†é7~'Oõ§-þRæd1-ãs¡N2y€­#Ná8#sÎ/èD‚©Ý ,`2©w™±YVü+gÙza�Òƒ?kƒY,a‡?ÇÍœè/`ãµaËU‘±=Ø(&¬Õk(��{.gå¹Ymã ž$h�Í :É2ß ¾HĘËóYÏAåjû·1¬Óv±Ó‚œÒz´Bc=F�ÝT™—Ã�ÁÁì¢% ™Y]da *50LÖè@‘8ƒCC¹·s !ßð,yŒSyÿ »'(74‘Fû¡-äQWÏ üEp�jF%1¸TCPæŸÀƒøÊ¢VFBûìÎz×À4ð P�@�4ËYˆåV>>Ïå\Œ^þáXB?7ÍZ[l[ЉـÊÁ4eƒmÌŠv–Œ×T©f²‰œWe�ïWÁkd«DÍìÊ!7ßËiÌ•‰Eì¿íwZïŽýp�t6¤ÌNÓiV^H›>¯ˆ:| äœh ¿ œX�®ŽºªLf†%A“ÔFI68 ^hAšt^��¬¼£òDÔÆ³pò5é܌˾�wArî¯~Œ@;ûÊÆ âʈ<�e¢NƒûhB”ô+]ë\ú· ¨Èöô†À–Ï%¨#=ÉË®O:Pá+Ù›ï&xOŸÑ§ÎVvŸóé<Ú/rè�ÌÜàd¹7âìÔK:1&H¯Ò›U!ñ9d��<õŸw’š`rúY]-˜Õï U=§òD©ÚêáÐÆü˜[zA¢ý£ï¢5l‰*èfãw®?‹�»Û›qÎ?úÑßevã+ô¾-zɈF~š¨x†ák[í,‘HùÈY(9›�wÈÀ0 ‘/Ê–Œ×\.›ýs×DÅV§œ`Ãär¶g¤Ú¶‰låu7A˜7¯©Ê-´¥Q[:b“„ÌãtµÓ´%üRß)#•×òœ´of³†® ƒ¶‘¶�한U¤ØóÌãÜû¤A–ýÁȆl§`9ô¥ò’7À‡™ü€<ƒW|­{ y íH³Ê^çe´GCñìGŒ'i›ÊNdÔÕ6´ÚJCÐsbmÿçy…íd%ê™Íþè¸0â¡r‹Ïò¾sx¢R9„WM(À"@{\.DtÔõÎŽl2›Áˆão þà='¯IÎsuï²½9ÎBùä>˜M~NpÇg²ÊÞµÛ²+F‰ð(WÐ[ËÞÒõF‡LÙŠ£â‹}ÒéÒ&ì`6¬#V†I”5Vb°H²¬±{¯ \1—sÓ� òC›…=<#¡'@ed‡]ZtÔ/qzoh«Þðês97ê”užho´ÉÇœñy톀{ä8“šÛëWY€ÔªÅ‚ï¶z½‚6ïš'Ò+óµwµË[È£³ ž �)€-ٕȽRÿ"Í9*xN ¼¦gÞÅ3_œœªò¬9ø2PdèŠH4AVÖY )å&³ìy]_hx'Ùyx´�<£B€µRðmcMyÎʹzQ›ÂÀ¬vûö¯I÷¡Ë´´4‡¸oÒªnG’ìõ‘©Œ�êÇi˜Vq�—ûâŒÀ?ÓÈWìäáá¾ôr£•þÍf‰Ùc™C«})†¿odº‹„+Þ9lõ�­" ¨[ÝU¤ÓÀ­=9À�§™]!oršðbf¿*}¿T‚ÛÙOBHï {B9` û¡¬aóÞN60‘Ù"l>ë“N è¨Ï¼”Îy,›ûÙOÕ2Mq$ôÇ Yc“ í쥞�êö=ô3²ß³, Gèö$]>¾?™¾œ'@ZÚŠ€æþÝéÄrªŒ \nü»HŸüàûÃT lÐýy`ëjƒ,[L÷Žø�¹Þ ³$¸ÞÁCÎyÎÌ ™S$àÀí#qBÛp`ߊG-†úZ­«ž/Q]ÑN ÏÊ Áçp,iÝŽG¢Ó:ÁT…Û ë9=)¥Íö4ÏdõÐI¦ëÌ€Ö–2ɶÆïÛ›Ú�ØÃT»•ËÈKø“½TÆVèÈ€¨ 9›#{J+­<òF{ç¬Fëç÷<¾ÃW$ôÃw‡w^s¦´'¨l`÷ÍÛ¬=ü Áa‚î[ëœÇ$û3ΚhÓ}¸ƒœ½‰ßûÎ YÒgkU¿•Pûå��=@¶¯€�Ád+̯`µxép—.*ù©~÷žoVW‘Mõ´¼°íôWWßRݾBÛ–{;{[ µ£„ 0/_¿HËKKü›#ç5³Ú¿�öö&wékîïí ¬BEþ�#ìîlà˜dµ³E¢¯Ù~Vðqg›ÙÜÈgç�˗ήÊé4IÐÔ¦1ñÀùºÚ0È6Û›ë³êKÚ9ïpŸ=€ï�Q�-náÈ õï%`£×8(å¾V®�óûí�þ�› ΙŽ#t•«¢7¬¸¿€¶±7WɼÝ'‘By7n¥üb÷•3èªP3QP_ÆÄN» TŽ™CÎý¾ (Ö½‡mó«•VÚGçEâ6ôtJÀªÆßÔ£�$bÑ"�D0`29¨X0ø§¿`EøŒú�_º»IV›$è /DWB ÷Û¸_Å;á+u¶ºH^ž©ö¢Õ"AU“^µÍoèÀeeó5¿¬¨3~ÆB„©çð”&Lˆíëô»uŽ$ ðœ¡Éà33£$˜˜žA_�A;3$�-÷òùA»m�®ß¥l³c�ò&ú·øÒ€ÝsÄž}ô{Ó•þê'?!°ù*] Ãÿ�î”Gþl€Õà‘ÉÈ>›•B¿&�Kœ³ø–mžõ‹×-z°Sš÷8'á^¹ãÌGûì€ç{µ'mëŒÀVS¡†^ÇÎ6ÁëŒä,“*lóÚÃý,°ÈCôvoðZ;ÙÀÓ3$�Tpr•cý´×/€ 4ðù÷à¡‚‚Òð¸•dÅaG"ø2A‚1/3ÃØ€éŒvÓ?sæfÚÀ Ú“€`¢‚SJè+ƒKò®¾ˆ¶¿þ©Å (²Î�5h›„üŸöÐq€ò¶~ªû¥Ý8=5ôc`JšõL,$�&$“ªÆä;“8ÖL>ƒTy&úIîmãÚ÷ÚQ€@7ï3U¿Ú‘AV¿K]¯ïf…½þšûîg ”YgKs×e¢‹ö�ÀµòÞâ|bL&Î(׫ò:{’çç‚þ<ç¢Ô  gaa(-­øf¿ûæˆêZ-¹§‡*�NÜ¡“ç7F º•ÎÐMC¬}yq,�Ò}ìhk¹E¥×íÄ×ï\41¨�52Ëý›“´Â8Àå‡Ó$*9: lybðiù&-’�¶w@…¬g�|liì½~îpžyѬo~²7½y±‹�Гž=�AÎ�Ëi[©ÜÍÌ-Œ‡ípÝÝT*œ™ŸBæu¤Í×{Œ™&ÎþT‚Þjœ�Aæ¥éa‚ê{éò¨–ú 1‹ L:‡V† ~ãóˆ•ÌO™lC"&¶ìï¿:ìçÔ»À.•Ýy0ÐÅ™Á´8k7.’d ™ ¤®uŸ«Z…@ؾ©á\qæ3y/vçBò„¤Ë™q°èj ^`<.4#ßÒ̓¸k«;©B¢€MƒÕÑq�³¼w�B�IìÆ£«ôæ%ÏÍ›P¢€ÊACÚ²Î8.N�¬‰.×Î0a2E›ÉR<§£é´µ:Ñy£#sa{˜l£LÍü:ìYx 0f®Ÿã½MÎÇ""}¥Ñ±y:RÝ¢3ÊØb­ÜgÐÎáM�¯è—÷ÑÉc€€°Ýü¢Ís?2QÏjéã#éó•GC±ÿêà÷8F`ÖÜÏ^¼/¶"vÐÁûËGTS³Æßùh_‰]Š% ‚È'&²‰hË:–¢ÙÔÃz+‡úAÈ‘"|år°Ý®á }š1ä�>�µÝ·rè!õúï•oLxè%ðm�µ�Ïì^}–vôÑwb^&�cqCc¼.F]hÃjcËkJ¬Õâ>ñ÷;FØòYíÁn|¥ÙökhbÒgR6ˆŸ:º)dziSŒ'�õIúú«_0.e+�M›0²DÔaî—�Ý$[È$eˆA¼ˆg�h>¯™Õ‡^øä·~˜þÎïþ�ÄÅ�ûú–žU(þÿ¯û³ow,U�çòw“çlK®üö:Ú 1fÖD9í�îÂ(û„TG—“lQ&°]¸·d~@b�{ë—¸„‰A—$D\@ç}}t�‚‡cÖ08œ|Šaïó9ípxH0~¿DòÌÖï#H‡Ì­£+MÚ(Ž-Ð)�µpå±ã´�-Z4ÙZ ÷_p;^å8ÃFR~w*çÑwÐt6>ÖÖîÙh שj‡[¼›ìf—¸¼nX·ë‹1«$eI´¹Sm/i`wq]ãíVä‚£Û¡J¹¯Ì—‡ä·èRmetº’PßEŒji��î¼Âô¾mùqè—3@Ì-L£ƒ.±­ñQyhe‚Éà%xÊNak¡S¼…ÏêsÀþq&kkëéñO‚_¿úê×1JɘÞãH 2Ihz¿{"�~z¹zDÇ:bP`¾‹gÃç ]&ψþ¨U踽EÕ1ö ë½3“W6Ø9íè ÜïÏ&Òÿôû¿•^�õzu7}òhžèNcÃáwÜš\Ú3¶Pñ1za|& ž?ÿ%Aé¬ï9w|Ž/Kç�+¦ßýƒ”~ÿ)D»Ï~Šÿ2‚_253�<ÄÿÞÞIÿöÿ0m’„5=Ö—žÜŸÀ–>Nÿì�™ò£SéãéAâ#Y\ÎG;l«§"´c|¢š„uS7rp†÷Yظ ŸÖ‘~ö«ÍH•è ÄÎ»Òæú.Á]“ðíl –p„,#Áš–gÚÃþÀðàKܤ9;"š@glÒ®³Òd/Å*ˆ"Î9…ÑWÖF×Þ_Vi›[°hI<í–q‹âÞ°Šù[HV…ílÜÁ]“ÖεKÄf�q9¢ÇâZã¯Æ/» `ëÿÿ󙌌Óçï¤;Àu�ãØyއC êþêŸ;©-_„�³Ø±:¸€Î+‘ÿòć&(|ØÚOmKà Øwv',€cU�5×`6ÎNÚuôEyÜÖ(ÆV@— Q`Å`óì…�¸|v÷µƒç0�Xýqq…NaÜ‘E…&ÅÈ™>‚êøËÇ%º߆?Yè%±Y§c3ÝÝ=@Ö�4½SMÈ3ã® å"bR�e(Ø­÷/Y7d2;JZ Î ³Å˜•­�NÚ\Ôì”Èjæs#õr2 Ž“À¬Á3>w¶‰â7¢¥­Aöv &•³�!‡ÛŸÒêK0Ѭƒ³r¼Äa€ÿ˜*¸ ²&Æp œ˜iç:Ý$g;ÛÇÞÀ¾Êöà¡«l� íe-øxfŸS"Ô ®“Ù¡ó*1ÙÆ@F3aÛ܆¼ß 7ÍuxOŸ¹‡Lë7Ûµ4¹ žCÇÙ,•”ŠÑÉ>dÅ Ò¸…¨‘¦¬б‡ %ÒËZm£«’T #kBØù 2 Ž5ûÞ’íØ™CfvÝ7Îì£ÙR¶²1ƒJ'S@Ï@‹Y">·í²"€æâ¹P|w=C(6ÕÕªÙÅ…`>ˆ Õy®¨àå½¶íð}Α¿ãï<ÿʰ& µƒR‘‚&0óS`ÔÖÕ‚€Aæ· ¶*æ�9ƒ ƒ):±Où®�UñÌ î;™ê|îΪn^ÑÏA‡'!X[(Í ÏICÎï:P¬ŠueÊ%ÚoóA©0ù¬´((l Æ šlfµ™ÎœÏb@Ï ´Éü#KÊ„ ß{ �sîe ß*=’+4 ÃȾ òW‘ø�½ƒï¬„É® /�.讋Àô5†ŸY%å ©€5¾yÈøŒA» A%÷ÁóW°I§‚êf¬«˜ x,ôÔhÖð´âç–ó²Mµ´{-¯€6K¯»¸@x®I'ÂQèü)�€ >#Øß™'ƒšç¬žÐ ÇܳìÁq‘¦"€ç©aü´Ñ¸£�ÌÁ.fÒá ñ*™ÆeèØ=G¡³/¶¿nÃè»ê�þ–òŸNÀíÝ2ˆ 𬪣îÆw =éÌDœŒ_Ìž¶½Ù¬OxT:p]Ò”AÔ¡¼J9€â1ù¢Û¤¯ÏïQáÅç]¿teÄz8p'×ÂHeŸÌ¨õÕ÷‰>P\\+½¼‰À•¬¬Aíš¹dÐŒŸ÷ž:Y¥³Ùˆpk(õ>Ò©¿´)iš´ LØ�ò=~ò™´´Éë®=è’óðÆ>ŸÚGy.ï¨|#+Ÿº6åk’æäýʳî]\“åë$©ÎÞ”kp\$´¸^g ‚ÊÓ"¼rÂsæ\ä{e–2,ž‡³“v=�>t0?S9JVöeMÙM†¸òýð"2Ç*C`[¸ô²~�yζU'dú«ƒL°5Ëa�mMH-fL¦X5Û@™§ ‹ÉCî�{©ñ¯²T^º§¶€vÞÑ0Ï�HÖaRÐ9DyÇØ 4æLó7K«-ux\£m¯ÕÛ8ÒøC¶a˜™° î°êHtÿ‚žàS�ùбߞ¯Ý"£‘Ó¡8?�4eq® `X}és†žk$&Ä™ã€ðY…àY^7˜fÆw—×ò^¶�“o\;ä×r/Õ+ŽÜôá0Ó�ÆŠt´ÅŸ K“ˆ4’¤+åÚ0Ætd®³~Áx�ìí‹ ô2¨AÐß¿)[ÕÃî©�¼fþ]¢„d((èzLS‡É:�ÞÚ/væ7öK6Õ6<ï,‘7Ø7x¼ðÿ߃8„Îõ.aá̲akä§9**5¥ëµÕ7±SÚR'e²>¡g¿”7`@'çì«¶Ÿóôºº#ðáÞ:‹p~q‘ßw¡Î쬕�ccÙ<Ù^ô‹€Æ“©’_[O¿úÕÏ T1ˆÀó-<ÖN÷Ï×Ä «�M²³›�ºÊ(�¼F0Òq¤B–œ#ûOù¦-†C ?úušI5êÖÐy¾Ù¨Ž ~Ècƒbe<Þˆ8ÛJ»NGÏä8ežô†j §§"K QÞÊ÷™¼G<„,Õ8ïì"‘€÷› 溻¹F`9Kº”þå;h’¬e+ÿF�µ¬µE€VZ¶2.gû@6V»AZæé©ùC§(DZ‘ÛÙ§^íOüŽýÐŒ@ŒÓ­"ÓE:Ñòžö’ühÐ ŸÎOК¨�$!Ë»ü‚ÓIÒöQŸhcEwæ8$J|î€Z> 8IÅ`ƒ:â„ CßcÀ=±ºNüÏý•Å&"jBpžÁ½áynÑ™,ÄêKå¨ãCLHE²Ç: 0·’ðÚVøVÍ”XçÒùl›Z>Ž¥td{²ŒùuüH]g;¶¹:ù|`ÀìëŽhA¥À~ÉÙ�&§pƬ@›¼ mH/\-öÙL÷ö�Éðš?€îAkÿtAûÃØrü�pu�¯é�ñYõ²2^PŸ§ [ÑuÙRºq.é ²Ã–‹Î(ç-ao9ïN‰Š#+•mÚBÒ²6€kdëÏrHMŽäÒ²ªu ÈÍ©·onÒÊ3ì_‚{çç_Qq—æ�9MäP:! ¨ÚÁ¡ããõÔ\ü"]V;{N ªpzjfžî+Çé €»�Vàƒø¥€@uQ?®’¥­<8£å´Ýœ‰ª}„+ Ûòï ?¬“ƒ³³ØØÕChYÇ›6v·Ð·tku;6¶ó¢;س=*³Û±E:á/»Ï¢yv�Eœå1Akå[¶«•X«¯žså@Äú›ð{À™NäØÍÁêÏÂJëÍ�Uì}FÏÀ&´¼øî+侌gཻµ•2ÚIúÓç'é’¶yaÒõÁå��užy…¬2Yè¸ìXè[~DÞ9Û¯ü}{д½AQ“:¯©È~ýú%gB·tT¾:#ð¯ì´[–Éöì§û,Xís�rTާ#HšO[ë¯ÓÏYf,„Êb�¤'ÖÁY€rmó2U´¶íCHPu†6c0ø|ºb€6š¶£ufº2k”Šôë 1†ótb¢#I~‘l�ïÐ` VÄÕÏ+Ñ ý-ZÂrVÚ"êSùð„€¯…v¦mÅPZ|Vlǰú*F pMÁ¨ëKä4¿µµ½P‹ïor‚sfõ*Nñ«Ô]èÓjÇQÉÁ›xNp›Aä tQPŸ‘8Ÿ²wðDK¿ëÒ$ÆG kÛË® :œ³~_ì-Ôÿà#<§âÞîhvâJOüwô’ïõKPYBT? „êûës:ïS_@ÞÌf^£[=?Þ_è[Á~VŸ™èäû—ïÑݬ?í­¯CÛ&à£ÏnØ{lþ‹+ΜçR¦ðR$X9Šm¢ÿ¼¹¹‘?ýš­Ã+ûéÙ³gé{ŸÁ} d’påLvñއ=@7°'î§:Å=ð‹—âÿ´7½×ßô—¶¼{î|ч��MÒ~öyúÓ?ù@q«ßÄËôq&¡YþbÐJ_D0ÏÅ*‚•/&…ýB[?x‚ÊXÁl[…ú¤û6¥ ý@ϤÍI«#¾è#Û¥Cz›"1ÆÑ4vÎ1Ø«ï0ɹhw\"dP_i ³BâƒU¶Új¶×Õw©Á/ÚTvÇñ ô#ù¬ wÚ¬&n·w€ÝU¹Dõç̬ü ­ /¥ Ûu�^“,f[o�Õkt“Õ©54‰¤ZÇÔX{`/œ©�㮚‡Ø›M’‚Àôs³Ù°øpð•8ST¿‰©ãúÙ“2ôs¥5¿âØ]#:2’ÂðŸM<ã<®Ð� ™~Ž#=ñ/|fž[¬ÇÄ(ùÇêK5©úVÍʨ =ÎSP×kD‚9ç׆l‘­F4AË.Úò—œÇE=�/È/ÏÂ.%Ñe�çj ¼”ûC¶ •nk¢ ™éYžŸ³�Ά øX­Ìšu,ëPžY4•3jöõìÂâTàšî}ž—ÿMø–v&I2SQß2žd˜`Ð)¸ 3AµUÃFãÌMâ�½‚g}αy¾nôÀ1•ÙÃT�ML»�>ŽV¹"AÓs&× abßÛÅ yÞ‚ÜŽš¨ƒ1*K«ÕË4Kżþ©•å7ø:ú*ú£Åaô“£î0>9»\IWÃtNÀ\@&�‡¿©�j�­ßõþé«BÜð»a�T+ÏQ…ìÕ‡Ð@ï¥Ê9p• ]ÎÐãFÀkÑe&�Šex¾C$‹ô8¢â΄©l$× î¼nÒÁ¶.x�¸F;ÏÛ�L·U½¾ô•ɨØÛÊqåªëoƒ�¢s$tÞ�­zGgýòS’¼®øªˆWÛDkÝÕâÞvª*QL…¼°�Ë3TlÐÌäëFO™lo`M¼ÎD‹“c$·×6V?éKjohŸhÿ58å®v¤Áa+9ÅVÄ…¥kGoÜRõ"žö÷W‹¹É#êGŸQÞÑ>°›ž³™ÅÞì¬éw;t•JGÈ q×c�F?s4tŸûïkV7IÅ=ÇÎ.ƒ„íl8ЖNϱwÑ_½à19ŠóŒ¿!vÙW’Ê�¥Œ¯aÁ€öÏ1cŒÜ“ ݯ¥aiúÑžëìv×膿Úhg5 R?þàÃô;ï°ÇŽëƒoØ¿"]Fšè‚>ü  ªØ±§\ŸíDΖÓ%É�Ê(÷KÜEÁâYµ釿û÷Òßùûÿ€j{â1|ÀÄõÆýº‘k]Ò�î翨p¦Äe8S;?‰×H6@ª?áN��Dª�uÇùwôh‚NÞ¾z�Þ²7â[ê% ÛËöÒƒ:×q³G{;°þO”ãu: FÒßU†ècˆU;©b7ï½z‘ÆW"è¨ßÑg�•xrV|Q\XûG|ÙB)ííì[xê¤Ä^à�YÐBv…>Û¬�{X©o'¸küŒÒ¡ô—O EGÚ_óòù*4Cb½*‚Ì`òú&«H㎞»‚~Ô ×Mõ'1&l{éÃØE$†ðŒÆ‹º™�®…"mçge¿xG¸´6’×q ¯´¦¬h²?Êmmq÷´LªæçWœ·ñh–sW^™Èé ê©Ùy®I`r`[~/ƆIc{»Ûà˜`ô$œ½^-Óþ|8}ô°˜þü»i˜uY ·J—’‡�f±ù«®Ç‰�DªÌî¿ 9Výg¡��z¥G÷ux�„ÁÛøÒÐÿýÓýôÛM¥Ï?ù};”~úËWië�nù€ýf¼'òöârÿ;ë°eÿøƒ0.œýf•Î8{«®èY¨`/ëT:@*h³oÍFÄxc{QŠÐÌQÔ¡1q`¢¼À—ÀÂØ”À\· VIËå ÕÁl<âÚUªŠÎ.ì$€3�Ó¡a#³ Úkp(ȹa\/¤5̨¡/x³?ܳ˜E%&à&3]“Ië÷ÈÆ�0  •ÈÌìdòýzm}×Î#Y@*‰62šš#§é3öÚlžSè×,k3ÿ5Œm«¢£Ô©âd¾�-ø,ª¥#þžÆÍ¨;$¹Â¶a£ÐKœ3Æ¡ŽˆJµ—J ÷žC¸d3¦Ã¸SÂήۥ-©è(†ŽÙ~ÒMqF³YÜk�1�WAs�S[’ ¾9³Z§Â,D ü;øí×j{÷J�J&È#¡«ÁÂý�cæqFN…mŽìͺdNɽÅè×5ö$KjÒ ”.#Yº’—¬ 0W jÙæVÐEškrf‚èÒiçJ~ðó®ÑÙf“Õ!>»-“y\¸Uç—Ÿ‘W¥££¬ˆ’€•ÑdœñhÜÛ@*@JR¡å5ÍÐ5)Å@…kq/üœ T*õ+UN¥¡Ê\�@Å3 ‘I**¯'¨=ü<§ë>ê, ¸*ÃÔ#Êd¯Ív…ÌÑ1ìÀ¨Õ—jð“g¦Ó-]-ÌOñÙˆ¾sMÏÊç£R]¯|1`ãÝã•í¾xÖ†@“]‚:D4|$D»T°�L.itsM�R�eˆÁœ&™*‚®vxa�±/¶6²ÂÆNV@™e×ÁþøO'ÔŽVé(CÜB«|½‡#”ÑMB6Ò­�gÖ�Ð qo”û&U¹—-΢GP—Ï\3o�Ýäþ^³=T/gF:{Âû­Ê€”y;Ïu”c�ž�÷mb�Ú1xxüÍï<·Æ¡2Z'HÚ¶“Ëfp~i¡é>Ø"ôŽ÷GÒF<— •‰*d¹4cuY5;­· k�õMœ×ò|"»9äàû™p‚‰JÉÌïÞõ7ëËçòV½ý€,òž<,œ‡žýÓmð¿ÿ³šîML¥øÿ#ÙÎTëmoA3ÎÿÂY¾÷ ýð¿ûoȸÿðQTá­¾~ >/Ç—É:;5t¾r¥]|†±(¿»§­ê —Ï¿ :‘(å]×·¸¼DÕ!Õ£1Ϋ5ȰÄßLì(c#ˆÒ!³2P W>±í®tª>Ö™ÖyÍc¸+£ö™1牭CoÊ;ç¥5™£$ý([êu€ eüé¸ O^ÚLãí¬ ^æ»­Ø•õu‰4Ì£Žàdžyëÿ¸€Ïdër�|ù0h•ëš1+ ¬ytRb |*K$4qÆ ƒ÷ã¶Þ^Æ‘á:·&¶¹Ä1ð$}›°é¬ú J®ÉB\‹g#�œV«�šìUð˜¯Ãsˆ%œ¬Ÿ´·“Ï>ÈÃ�Ì”•OydL¸áÈ(d=w»m ı§¼;…0‰À ¦³e½¿·°2߬çDÂß‘ˆÄßn›´;î”â~~Ê ÷RÙãu�î�ò†ãáù=Âþ]÷Z!a2Žkö½¶E& ñl&×ÊçÚ?ˆa^·Õï#øbRCWv'’êre¥‹V»‡¾ã³‘|Êžkg¶dD· [®Aâ¨A!×ÝGøô÷È"KZ}xsCwÖyÝ µ,`YÌ´æº]½èôDžYiÃ"“Poè�c·-GçœôöÜD2†¤|‹N ]a_^›0@S�÷kt‰3äx‡JP¯�DP}Üzê¢�>r�´€<¦:“÷û|¶’³[�‰[KsãØ|—é53Ö&iý¨M¨£­.0a¶E2\yH¹hÅaÐ4(¨kŠI+V3öb˸× ü®Þõ|%:�÷÷òTÞÓö Û‚3Ô×Bg²œ6Õ�y ñ^?´5pþŽéQi‹Èç^+h›ë©Lô»Â>òË �rÍ/ïcž«§\M”d7ÂñŽ ½{_Ð*k?¦-m©  ÂÞ\œaåÐ >�ÙÂó3ï �£ÍÒ ÐÞo9¶ �]5i±]µ*x�r¿JZ¤òna�dKZH__|‹îÁî Ml-Ÿf˜³×$Ð×Ö~´¿0 �ŽöªÒ*6ÙuÑsÄŒ7»ü©(i£=‰ß Õ[ý52!„yåŸ!çèç›É NaAYº¿÷ðÊ:#õž“�Òø‹Î#·K89–}ød°Nß=™�†�ñö;ïL{Å+ÙÁf$øMv-›T6½Ï{¾š»ùŒÞéGsÁÇ ½ÿþ{Ë×¾öµôü·’ƒ% d>M¸éFÐm'`0̧§´ö¿}5×™ï¿ôáß~ûoä üSõL·…+WêÆ0-÷Ûg>û«jþP¾„<‚ñ=NõñQÉc?¶Ö4|²ª³}Áé­7߉Õö3[{WNÀÓUß+hÑÎzKø¢Õú‘ìÀ{uz”³þac©4Ú—“�‹íSµ?‡¶*�!ï&·žV5–{2œ]}3_T霤 wâPuYnF;ö/æ, ì>v-W«î™„§966r”VÜr³£w¶moÜÝùí¢±]/£õ:8·˜=Ɖº+úáW€›auþ™®ïi÷óMá�¶Pg:öøêK.¤¯ê¶äJ¸’˜÷¢v”�¥`I~5öâúBKá3¸Æçžà‚Üp~ÐíZ’´Â�ÂÉz)ùüE�eFOmÆø�±Œíå(œ±o‚­ª3‰Dhàyvr3ÎgSRl68ø¡´¦«c.­øMahÍáÒõŽf¸VòUk¨Ü«î-ýJŸØŒgÜmOöË«ÍmMBfW;u`ÙZ‡ŸÛ7k7ûÓË­³£,’3]¿½Îh:~V¥Õáø-yn\ÊOsíûÚëJ­ýëÍ ŸÇÏÕÆ_|™ÌѶÚrOãùtàÛÙ�·>¾½l¿˜ÎÀÿ?¾PŽ�t><Âïó�µ+ˆx´ªÆUÞ»ûlù¼vðlo 7O>£û‡� ®•:Þþ0>záÚƒdGºLbpKIŒÏú<®4¼áf8¹=çøÓäâõ/*ôê|î‡íß–ðc˾tž”¶çó6:÷ör98¢©§Ïâð`Cg§xasRõkÌ×ÓÏjÏ»õ�⬺wt¦ïÁC%,ôþþÓdê�‚¼Ý{¯¹{wó‰\ýb|ÉÛòïÝ-åYÏ¢ãl‹—ß8ÿdùð3r!ìÞ¹?]AR÷ðÄd©¬ÞRkÝçÑø½[pQ•´ã¨:¶.\{^°ÑÂw!ño ¸â÷xËžŒüG=`x7?Š6ÁÖ&8¿-[þüù‹#û�á<¾‰™Czb<}gÉ9x<ÇÓÄOž<-9;8 ¼LÅüèœôçtÈ>ã�˜ŽwtÃpÖ5ä�ïÁ’üÀÃøÐ�WÍÅ^#³au6^OÞ¢3ÏÁëù;%”O£ÎÞ8�² r -;uÎ@Xñv[]Û³•Jn}Ø^7­Š±·•Ä�KlèsO�Áíxom_n–Ðsáíý†Iñ/) ¶›`–_jlµÕ¿_Žt,�d,vÈÙ×Nµ®µPŽŽº;ž¶¯±ØaºÇ°m$áño�¾°î›^!Ó-{[ O2Ê·ûw–÷Þÿ•±—Ïœ9Ö^¹s‰ …áïþÝÉÔÖÎ$×jíÚÑ«nP ‰Eà?ƒËŸW…L*0¸[ð§yük½‚9Üúìü…ö þ÷ü\ϯSAÉôú‘¯érŠa$à\¿OiMÏ¢;] Vû.½$˜Iäâ{—€¼™nÜ—ã/žqƒãÓô¯/:Z¬�˧p8{1~S‘ZÒšò�[>åçugú¢vÊë ÷³ÿhÙ›ßC·ñ+Éúâ�âY/Ãw0gËÃ!2Á‹ŒÐNúQ~6©£Dີr [ _ù®|;¢þÒí%Ç;ÂI‚5ŸšXQ¨^“†Ù+Ñ/\ž„ý®#2’û ˜=Òé©ô±½ ù±”OžxI*G÷ÑZ|{™îŸ.:EѸñ½môøÁ>}¥ðò½À7²fеGìÁ±}ø�{èŒbWÙºZlðÓ_.¯¿ñúò­o~sùø£ƒ…cïvôá©úþÚ×ÏTõ}#ÚÌFMüÍO/äk/q¨\—¯”äùôþrå£ÏÒ"ÀŽÜKž£nÏ6ÝÌ>�p2üg×*¶ËfÙÿùÿ“�—ßÿÖf窟™ñÝŸ/ÿ—ÿæ¯:·NV�;~§x×±üKwïí\>ÿïÛëè\ G=¾Tl"]£}Ù_ ãîÍûQvid7�ðý÷Þë¾»Ëw>ûÎò—ý½â5W–ýuNú�÷ýöãåò'þÃ凿¸ºüÖ¯­8Ú±dpt²+Ÿmhò2„–ø{  °£6ÅÔ6ð¾CÇ—Ãٽײ]Ts¿,ÛéÃKÅCêp‚/�ì÷¯¼} ã³nÌVÈæv¼¢#zÞ}ýõh¤ƒlº½óÀ&Óµ=Ï3èÙ’cñ§ÚÃ':CIÚhŒÅ¥rq„+ÅÒÒ1îc±ƒ'üWñÚö]¢žø�ÂÉ–§:rPwÁ�ŽÇâJjÙýhogøõ2;�ÿàPrjwI›Z±óç�=|={K&—\ýìY6Q|Ulæ°ÄÁð–�ŽW; ›CÇÕ¥Ÿóß<í~Rùj],ŸŽŽTZGÏëaáޚثs!]þY´õökg—óŸ^˜„áÃgòCÒål–L¯~U(zN‹M;²øÌñôÝöâvIu~Û¾CÒ�¢hzYZA<ãÞÝì¨ìíiÉÞ¸b¸hÊ‘m÷Š_Må~üS—áñ�D³Jö§‹ œ?ªØƒO‚͵ÚSÁûf­LL’=3µ5Ápd ¿Œ� Bßaʂү¼÷õu®ëƒqê^øìÊTkhñæ\ ÎJFå Œ0 ÿâŸÄÈSî»ç‹›ÏCôkxËòÎWšNºxùúŒ…‰Ýèì›Í»v[D]ë "ŸÞym†j¬/š'ѯ|£¬ô”ð‹µcoRtŸ-€g¨¾Û2¿(ˆ-Põ»€ëµ²`÷ÈŠËÖzA&:Eb1¶€z(ƒÂ¼Ÿõ ŽÅ{·U×fÔbà1éÉj¶{�ï šp¸V0öV ºó÷dðQ®ÅXŽ–}¶=f}«V‘˜±Êmc(ºGkÏöE{Ù‰;1í�n7Ãåìë§{®Ö)7jÃVP»ûáCV†æ§ç/- BkÈ^–�»?¤ÛZuÏ­ÖöIí#T3©\‘5¾Û¡yËÖ £T¹‚UCFJ1ƒžC\{Rœ!'#I!u <•IÚŒpxÓÜ—’É1ü°1d6K8x–3Á»fN º�Äù@Q§ô¿þúÙ-÷ç|¶µtQM­½=£‰ Іb3ÄÍ*È}VP0!ð 1ˆìCÙ�7ú\VàéÚ^©$�ù_ïvö…­mj¬ˆ.ÅFf’€�)Œ~mânl¤”hŒJ‚I6 œ”%*hNØÝψӊ™cìÐÑÎjŠݼýñüG ”rªŒ3µõs0h×VpƒGar¿ŠØÝ ƒË×rW¤ œ Û¶•ø�9¶_”OÌK’¹’2ke‚ \£’JÅ9æIˆ²ÚÿÝÉ0“t±/¼—•w¿Žª!¶w¶FM<*› €dnª�ùîcï,OTŠÞº¼<p}¶vT€LÈÍ{æq´ì LþÖgÖÖ=E•;W>]ö}yí+_]^”·7á»Ùï›)q�Ë’¾‘rt"ÁuoóX†ÛŽhûÍQ”µ.R 2Ár™@µu|²5QöÙ³çñ‚”nt"€#ugê OLw¿ –Rvàâù hpõP8Æ\gÒ`a˜ÓìMdÔþ. ¿ý|”A)£[Vø9Þìþ �ræÌ™åxÎ-‚DV®LÆ-ºÏb�ýäHK2‚ÎZÔïòÕ�e€Ÿ�¯Ê´äí·j`1F�û_$¬8’t½J!YØÎEs%íØñãe\…[ èm1xÎשЯBáÁ•;%½Üï~ Qû­ÂLµßÔ"n†ã<_EmÖ[Aø³: (Úpó‹èýÆ�k£�+éAË0Ê©yo�7�uœ:Ïñ�ö?·þ©âŒ6糡ZR6Ÿ¥€õ£èÕ¹T×['þã¬RYÿ ™•'õ»à$÷¢\ ×l+¡Õ¥vÓ'[ãþ n{ ?§b�P0¿6™s_v4çé�ªÔ% pðÉD•¥�gã�äᩚëY ÁѼÆùÛšñH/² ¿&ñÌGÑ�ó¡T|àiœ¯d‚„–C%€i�³3äÎ@|pÎ ‹‡â-œ.h“³DB�¿óRg—ùo„Óª§½“NÑ™ÎÚèÁÜ᩽p4§/¹?®_KéM);”óJ‹;Uâ âMæ· 6GåŽË]¬÷JJ¹–¢»3ʼn#z{ãIX_9¿rŠª2’2 ~Џ—eN>.¨ó ¾­w›N4è¯ÿÈ5Î.<™SÈ~n�F¤ªXÀFfï:Òâ„Â{%«8;qcCEbN÷Æüwù—ÉÎ]íÑÛo¿Ìò s7¯~ºüâ§?X¾zæÍ@°¹|ï»ß-ø+ûoû· °ÿpœÓ\AÎ7ãµ{ÃÁSµÑýÓüße€jõ•󻳪9)öIÛZ–s;wÛšp"å½}Ò2õeôy/í³œR Ò—áɃôÙẑ<÷;ÿthï­·ß�`3&DìO{xˆ ê½ ÐÚÂÒ¹­3âgηVãpjZ»VZóCŠ-9àúwå ùC91ú·52h²t˜Èvhx4�ð•cÆ”£R{Bù*¡JÞâx˜�6ªB‰Ž9(Ñü‘LÔÍG�ˆŽ)€©UÞàx�ÁßÐNÀ6ðU)·o·ã9=ÿq×ï–ºô´„ÖYd�Ï9½«1ä,¦¸^Ðnœœ—]ÂÈfYÝÆ·»ªV‡÷S¡ÒuCý#»ù… Uë–” Û±Ýü+Ùä½ñBhrgëÀZîeÔIRäü¦‹MûÞæ²Yxœ�9 U”hIˆ?‰&Ÿ–`A÷õúj^�2✱Þ*âS)+~ ß@¾r(¯2@ë»"K]/Ž'ï­m¢v¿ô6²X#ºŽ,a¼Ë1œîÛ—ƒƒÃY°xk0 â¤Øo±OéÚþƒ7ǹ€äóŽkºŸí Aƒ£ÝZî– g� uä6¯öÎ*®‡{öàË{“³€:Åëió½ åËöâùóÎ-|ñl‰tŒÚÚ'GÃìÛéÙÈE²ÅÏÖ‹?KÒÂÛ5øñ0gß‹œ+3;�öFmV÷¶¿ü“‹U.Ë›µn S±~(»äÕQWøÿ²ÑœûYÕ²Ñ�¤§‹ÑîíŒéõ¸–Ó�9¶£*À/r~½„›}¶³¤N:’sÛžåà˜wñÀëµ�fè‚£vwjŸº·.Q�ª:Ø™óªTÀÚÒåDŒ†¿(¸ ‹wç°W)M¿çX×­æ_}¡n³Ëz)Èœ“, ¿Ì°þ¢$F8¿7ýŒ3RõáË‚ô¿½É-ôâh€Ûxî?<Ÿœ¢«ׯÙ×FGëþ£G²±ÒÇu‚Ø—´Çè’“N ¾ÚIïˆF´GðC’ÏF]“àÈ–:rlKçðÜ}{k›O„«É’„0bOH ,@ߣ·§7sdGk˶%¼¹Y€tî ýèáõžÕ\9ç–«Ë“ƒtœ¾j/wô÷f]Ú^îçÐOÏ\KÏÚ‘rŒ<ïëÇ�.„ÃÉôp ~¸ãPÇg'™¹!ÌgÉٯݥ ÑÎô’­Màeg¤˜d³�Ò7ZŸ„¾�ñƒ»Ÿ|º<(ùAréî&r¯ÄõûwÚ�þ¦‘A㉞àç >G?!Ã_f'=¨ ü©s*[7xß¾ôlGù8jæq0Ú‘3 Œ¶¥åYn×=ƒ^³¥ñž¶ç·ïäO_ÚýÛ~y±&á Ìšãt*iMí@/4‡õ®ÍGÿ†ÿyµëûìÒÅå‡?øÞtÀฟŽ᪎;KDÜŸî½µ=d«l¦ÇÑqÈù鼓�`LA±ÉröÃŽ]äLÕPéu|ì%ºÅ¾’85ãÓ»Û�ö^´×͇ì<š#z{¼–3rÚ˜‡ãðœÞŽp@ÒåF¶ü¡_Ði@Þvñìó¾èmôû†_;\õ}pÞètb>ãjâÅ;›|ÁO�äÓ9R Ôþjÿ¿ÎýÄòòDç€÷ ¦n ºyVÉþÉ›ýáØt_Iî<*p¿¶Nçcj¯»†/KñÁ$q†·æD·à¯°Xצu{ºncKB•�q4ç=ÿ¨b¶V oþéRá5Û©‹sØ×É%ûÚ±ùSò·ds“ŸtS2jïƒ7<9muÁ`ÿÁp>Ûž¼ô»RÐrøxûm¯Q«cÆöpyMг@[;pø½:Ýë,ȶ^æÉÊ·s/:VÕV ¸A:ЧŽD;KêÛ²·u6L1÷%wlc%kë>TsÙr0ŸX÷]íÚ-ãD¦¥:çÓ '¶¦ç~rÞ$k¡»-»¥õꇋá-~Óh$Ø«]Ul>kþ³wé§ØC•Áç+2Úµ«®»“eÙÛtë˜Î¸_áq·g>x�ÌÎwÔª–É6{»½ZÇâÆ#/{»¼t­ùÉ'³�òîªâ¸µ>¼ÝÞõ߯¾Ã%§y&­éa{ª%¾¢!öÛòf²‘ïaGÇëÜoÜ›7êÐ<œ›mø_dË–v§¬àe_8–ntãsG†vÔÛÁ—H“�ZÙF/µÅßÝ~¹èì§�‚ÍÍO5´üv¡ô�L¦ãÀ x´¯Ï_èo4=6Öup–¾Jfh¬2IÊñ¹Í\“|Ê—:›Áêü#QS o×¾ÚÙæÿÙ_RÜÉðct¢ø¹N)è>ñùm¤O:šfç.g±ç S}Ø:Ì«~ƒé ùÐ’Û7¯ßèw‰íÓ(‚3{‹?T"ÑhúÞQ0~ØÑáó‹�¿à;Y­¨�ÌÜÈ7;�NïÛ;´aýüRàÚV2øñ4Æ ú*ïc&éóadEŽÕ…S¼Á…蓬,À;ŸõÜ0·5âyÉ’þ}0Y¦…wýFÆJ°c³ì﨑äÏ8¨‰ŸÅ˾8ßíîÝ[Âz„„cÄtÚ�x¸üüƒŸ.ßùïÿd¹|þÜ´ ççÚmMQU÷òÖ¦T;Ö1áÔ­º÷H@3¸3>âì§›W.§Kufõé³n¸àë¬zóÿïÕMøà›ÉïXBsD#ø‹²éébx1>{4:¤ë^¿ôÉòlo㇠‹G®v­ÜJcpؾª®U·éØ¢äÙÓ:Oò•†2á^�ÊŠù8&”¿Â±fÏ*$|�nûËŸÿl9ÿá/'°.¨‡fùù-6»6dIŸ'[­=$ûu:{Xò̽»W+Ö¼:¾ÅdÐÃô[sÅ^ážþ„î㻇k!ÈÈæâ8ÇêÆ!±žíÉž˜cˆ_” ÓŠQ%$Ò ›S�wéÍdìÈéÙ„Ž�HÎì/P)¹”,>ÍòÓ±ÛTùK6#pcS¢ 4‹æù"Ø8{JØ OKF]ºßâ*è€ï‘o”/û~‡Ÿœû´9„ñÃ)&Œ¦.çwä¼W üa¶Üå‹—–·ßzcùÍoýút_PݾuËÓ Ÿ:Q‹ô·�,ÿäÇéÐ�ó ½ÿgßýåò¿úO~³c€âÛü@_�é­áqIH™Î3_:–—�KþÎÀkÛ#õÝ.œ¿²üæ7N/ÿá¿ÿ«Ë¯}íìò‹_~¸üñ?þérõ–£Svo|k ‹Îž=Sg«ËÓîÒÅ‹ÙÆû–Ï;:æv‰¶»Ÿì)¦ðÚìÛ�òÓøÍæòƒ¿ùñtù9RUùðí7óùÖiîâÕå'^YξñÞòû?þŸZë½åÿþßüá²wó~ÝàeG¦k·'|ÑpžN²Y'¨Ï’ëû*–ý¬xVöýŠüÝ»S6½GÍNˆ?MXòúakÒqh_ÝzšU±Ò=â$oó/ÓÒ§`-f÷$;zoÉ–"áú¡b„ºÝ,Vz´øÈëg�ÇG“ébÙQ{*ÒL¾8nDwë}ÙáxÙUÈpòìk}~¿®™JÆ»2ñ`Étb@öÃþÐ 3·³î@µ3§ÉB²Z’×6Õä䔿‡Ì�;*.± \Á)Á8F'á‹18Kî«ï¼1’º¿Þ98?ÿðB‚½–‘=ìHÕR*Ϥ°N@×>”w^‘ó³eC@’»9`/”mÀô0‡½ƒÌç1É@…laÂÕ›÷Æ9ÉÀ�á%ûME­35>½x%ÇÍ:?ˆ*£R¶Ž ÜKWoN»¬lÛ„uAæLeÆÍ2ݫ꘲�ê›7Œ“Á)x 1poŠÄÖŒ†;DÃLµ$ëÍ >E�0ÑrMr´åÜ å2ö,g#¶­]³cÇz^ÚÃ’z´àÍkUÃï-3xOŒÚËf Œ¶1È Zmƒ˜ose�AHÄÆ¡K¡�„· ªÛPÈÆ†ì‚‰ Üóž¥5¥¶ ›íG{>LC×®DeÙ‚[b²MzªÜÿèaë9+Q¦r¶? ìææžÂØ’-8&eÉ ÀɸJ‘ NÃÜc¦Ï+áS&£j�vfŠŠÊð±u&T»ÜFXeŒppnô½Ê]Õ“2ù&K¦u=טּk9àoŽƒ‡�«ô…E˜mÉÞ«mƒ ûé2«¤9;(/”‹ku@À˜çâ6k&ŸŽ>çÖ–)‡�À %—p»z=| ÿ(<΀™ê«îçhð½¬10¸r¥sŠ¢‡9 }-ªœ]¤MŠàƒªoJóÖUS‹^v̺;­ùµÞ&e¼¢½e7Í¡=í‘–úSá¾MiÊȶ²ÜÛoÆÐ´¿•|"KUe·vÙÝ/j㱫ýÒšääñ#µw’ùV;’œ½ÇÊ6ÆXT,oÛª YmÞÞÝ(cKÙh8¥cW0¹fOîë~BüñR2„Qx8Ô€ßZÐW¯¾•TVÀb¾�>ð7­Q·FßÖ@ic \ºRÒWx¨]÷Ñ‚3ιV••øœ=ÖQæ³Kµk N Á�Uia7‡û%Í kt8Ciaèàö5³mà‰ÿ;ùB?ÓúZû8ƒó¾×Ï,Çþ³ÿ|9˜òþ_ý_ÿÏ•—¼µl+³òO¾û—ËãI|鼦³ðŸïüÓ2²‚SERŒshϾñörñÓÓÕN ¿ÚÊðé1Æç<ß’‘Ù.¥¼rÄ26SFù½³Oªf¢`ÃÊÿF×_»œôÁ�‡ž¯?*ÀÏpxš,ß~íŒPŸ§,?ªJS‹Ü9›,<¢ke()Oõ€6p:† HÌ^'“¦}TÏã(#ËÈ©'U1éÆbßá‚ ÜfsfìH�Ã8ÊV/þAW[/ðÌ.Çj÷’£Ó%#>$»·¯ÜËÈãh¥Žƒ5y#Ñi‚Ñÿ‹hMÅn7MköI¸kþ·1ÊÿItÇé ƒ}X.yÓ-íìyðàþ îÄGéSóìè�1N.Œ*˜9�ûy×q®«"³ZðxœOU" òH(òž^"ÙnogRš®±FN¯Õ‰Ü4{c%# lZ§`ÇÃŒô]U›s�sKj]x ±�%Ì0‡´ à ËI-øÂ‰%ˆØ3çI×Ç•LÅ&“%]ׇôgɵ.˜D�ÆÓ¬íŸg‡r­ èZ=Û3š”Š~sò·_äÃV�ìV�Órs½¶ ÓE³Ó�Á¨…³IˆÎé Ó^Ãwz:¹Iåd¡B¨ºœMq°5½y†ëÍþ¨Ôį,–ëÃçæ0<�>ÐgÖ/gÇÏÜ{/@e.hhtÀàØ±ž³}%léH°¸£ó?¾Vœ8ž`­¢àä¯Õw†3Z|e�â‡5ç<Ü G{Èù‚~›éàÌ[ÐëANSNUÚyp° Ó�ÙäN�îúµÈ<�5ºFЋ؂w·.ß|÷[ËË7ÃÍþf3N ñÙ ŒsvÕ�tisÅÃÙ�èÚüÑ£Þ‹N7&‹$9MÄ8 =´¬¥&=«-]þ¢Q�“è/÷èõ”,S½|.ÐVüè’sî9 zü *mÂ<ß&í«íÜàOÈædÇèÁVséyú{uú©m}!©Fš„ANö‰ûfÿ›ÿ ¬ëòbì yØ84/ÝØk�µ=;£ãèu{-Ýá/gù‹ª‹·ðhÒÍ‹®—ÜÏ¥ojëoÈ{óÃñ-Î>Ž*|q:0ô¹%‚Lþ4�w¾ §»NÐCò ø²Á%%?¯ÂK†¾ÏËúW½jÿÌ}Ú£?ül©ê�ž=:uР³n䜧§ÀûÀØu•êzT³Z˜=±6ô/)OP—þ»lÔ ¨õâOºjÀi0ݲu�S2¸vaãàñ©ðFî£ÇÑMÎ*Î3I€ø"xàAæK[¼ip©ß÷j?mMðïeϹÔCßí1› ~ YbÞlg6°ùûÎß Ñ¾Ä‡­­¹©2š„¢x·¤"ŸãÛ–1ëž6 úã;t�Í|­žýh­Ö88ÒgèÅ~ƒ�gƒ«§Á8áåZ¸­f#ëÞà9œÿì_í7oש¡™Æ'  t¯ï%yà+Ò�1s{º;ýïXɼ_Œí�gqvKøhìæå¿úk£3Kng}zî\LÇÈ?䙌*Ê資½\~ôÁÏJ˜=³üÆo|«œ—ÇŽÕAP§§ƒÙ) õÞóû¿}3ÿ@Ö?“¬Õªü=¯Yã—ïÿGø5p ^ªš­}ª>Õ­Ñqè3ÕÒªÛülHmOuéj½+é%ýнAÑEAê»U¤þìG?èˆí'«Ô.9ù@ûtB2B¼Ûƒ�ǵ÷Þ÷Gñ[ñsÙg8±f{l裗‰€£ÃÏšy®3n2rÐ ü¬¹ ¬£'¸N¾â›hÔõt„@0{MÎÏüÂÅÁÕæ5í±GçÈ'Ó¾£;p›ùwÝì]´0xÛ€ƒ½=S…ÓÕ+Wó”8*³Ã{x< À_wìÎÏ4 ¿Éž�uuiL¢‡‹ÏdÛÈ"¤ƒmmÒ8úœ¼1_¼okúK+ù™_û¸7Y¼-ç®õ“ßc»‚±ý Näƒÿ�{È\°ŸÏÐfÿÜg¯àè=^2 Äù{ðN²Ç¾9Êì@ü® ÒKÆ~(�¦£Ø< q{þz”Zóé3ë!k¼ðwÜ…_Ìo4Jož€ä—<ÃÀÖ58Ó=ÖnhAþu}Ѽ½ŸýX_ùÉ<çËÏñœÕg±êÖöÿ…—àǼF_ŠÒƒÈ±ˆ½ÁÓq x(½_·ƒk¸Iš{çí·—w*ŒyÜQ8씇e_}P¥öoÿÖW–7N<ê±üЋ¯Þ~¼üåw~ºüý¿ÿ­ºþ䫎XxqörÛ¢uíª+ð¾ðEöî¨(´d¨ã¹ëãVá¾½I§,¡“:–ôÏÎU¡¾cy÷�#Ëoûëc×MÇë‚Ò]ø,=»ªç£Ç –ž.îXÂlg[oT…öéŸU$vz¹pûrÁñKÅnOwໞ,_{ÿÌrô7Îæ‹¼S¡í¥å;]—Ž §ÃÎþ_ü—ËïÿÞï/þOþ|¹–?òó^íÛÓuuŒ[idµ“Fïö/Jºùâüå`Rw—�ÇË‘ŽíøñÏ./œ»³«{‹ŽPï¾Q²èÙ½Ë?ý‹�戴m%ã8¨(ó@ô~uùÅÏ1ô+Ŧ_ì ÏéS’ß_ußÀûðU65z‘§(—|ÿI«�̈7Ðè"âöx&Þã«ýª1˜±tOïÙ�&_ts@;É·5.ž6÷‡Ëb†/‘Íb5ä&ùµFÇkrȽü{�jÛ¾¯Ì5ìòaø·ýÆõüwÅ/Œÿ¡7=­ÈƒpG%óä‚.Üì4�¿oW¼³ÿØë“ðE/�‚¿â¡[Ñv$øÜ)¶±óÈîŠcÏ œÛ¤`åÌÉ£ùtJ-SC!ÌÃb\ºìÐiŽ9–¯|_|#>Þú¿HG6{ý�·Ã¡³ñØ’Aâm:òñ�}úÙÕåÞ±ö!z_}ùûÍ팇Ýs4¸Õe ½�L†~· (�×SÇC™ô=<%Á^¾Zusß/ÓŠò† �fÌž)ð‹q"¨vÄôN?XðåÆÜGã<ÁP âí&O©y�óTë:Œéycíʹ)nìÞSÐ]¦”ÖÖ‚[Ô9Fœ¤îˆC `è/Ç ÆC�Q*Bšëa&¨šÐ‰‡Æäb*eÁ1Þ0Y>˜ø£.¸ÌÉbî΀‘±µfy¯Š/¤z”£V°æø¡ª0«L_Ïu(ಭimN÷bº`ñ$¥îAçóƒP�2ZmžõSžun ES0 À9¨9¦äì¥2¢T„ÁýŽ/Æ÷¾ö^…ä‹2öï¬?Ñ>ßÍØ•a+1Ó–�' {¸äÕÙ„Þý‚$œj«"³:nFQ î‡k)3Õ)pMwÞGÁô¿|IÖ<oUÕÓ¾—U}/B�•¦HVѺð]‰%ÖLi§s¬m\¢©”¢ôÅ~ª”*ƒ®8ð,ÎgÅ�èðýí~JœŒM<Š‘´/ú6ö8uÀ/Äûu°<�’8 !­ë7&+nhm‹fT“„SðNvùí c\@Þ0ü¯~Þ‘í9™bŽÇ öÞ®UŽ}Ü_›ÍËu†¸S"ÌÁ‚茹t€Qš÷¶ÿ ²<l2Ö9H8��g„ šÉ´ŸÄ§è˜‚ŒÏËøø¶'›½Çœ!¥R¯!'ì5CÁfIâ,—QoýwÃÍ{µ‚;Ç�×i#Кp2 ãóx敎ÅxZÀ[2Ñ5ºntÎܰú¬¹³&÷CŒÚ ÝOÁ;UbÍÎfW._êû«e~&ƒR”ð%2îxç¥S‚–V¬à¥c�Vµø—¤!­Ë.tïõ’Xð'<’rx¤Êƒ}ѳv¢ Š›Érø âS¢øOvs4²¶èscûÖ÷t‘Qšz«` ~¾¿³æ¼ÆàÌž?ÿ�ù­ÎkÞ¼ú‹‚œ#ãð±å?úÿéd¶þõ_üÙò¢Ä¦mLÿò�Ë©ZÂ\øeï𽿊ßJ�’tgùß¾÷þòÛ¿ó»£Ï|ï/ÿb¹«,ZÉ2ñÕQZTøÇð9¸$`s/g·d­è2íÒ‚?ô3ÏЂÒ9ßäÂýô-¸#A_D‡ºþØ3è¶¿qdN§ÛN"äF8±%cW•ŠYòÍ*ñŸ­%“à£Ü£/´_x¿òžãBIÉeƒ ­•^`þ¯œ£ÿâ˜ô&0d,Hª„_²rU„ÐÛT¢¿ŒF¶–¼6™¦EZv·Œ²2c¢#£IΘõ¨–x"šoÌI j±x®Ê*Xx5žÌa`‘à1­Ì�íâæ5Ž00�®Û"‰Îu]²QEÎßòó®Æ�™¦Yí�»Ý_é}oƒ%c¨õ•5ßp ÓóÓ7VC©z£öŒN!(´¶R<÷îë®IÁ5|JÂÝawüÙܲ#“Á°¹jë;g“çÀÄ+À[òÑg6qú²¹Ñ‘vh½2¯U‡šýM70·í9ƒLÚs% �ØÛâI«S®Oƒ£�¿—þÙWý¿bäÎŒsó�Á÷½sÏë³t]pnÆái×w�ÙÐG6UûÌúû�¤ŸèÄc– ;Ïñ‹SqpÆÝ?/_xß}i³«¾mÖákÏ7ˆ9eg�»­1 šùbÀÒý-ø¥sŠ 0^Ïàuìζ­’t_Žþ r@"šsÀЄÀ ØáŸÛ‚»Œqð–lÙ àHá°…7’ï»wÎâ öv†$˜;K‹zv \'ïñà-Ñ££gàýþÓµƒíó¦=xúíT¥WŽ�ÞZ^¯«—.'ú^Rœ¹'ôñèÎ\­màöL2*‡™ë´n&Wñ¡­ý�þG®'ß×%ƒé #Ûš|B^Æ?�]+«Ã¸Ú{ÊZñ.¬/NrÝÐà:§$9|·jFº>>#¸ÝË£Z±êÈ"±úq|æI:Žk½ìYbm^`'úpø`@> ÷аΠ*ÞéM¦{$h„Gp±kÑ.}cŽf YŒ?ÝÂé]݇|ç:ÌÄàžg�óyY@Þ¬ëˆOwŠ{•ÏŽ¼“^Á9À>¥sH^z_^«Ë×ÄHº[ÚQ3Fnª3_<ÈÚ×D—ø[Ýà]ƒ?ò÷¯ñI þZU³G¯j4×Á+szÐéE°×4g‰…GÁ}ŽÁh±sÖr÷³•Ú’í¬÷| ´Eø'ÀNp¨‚¾ÃϰVbã5óጿòÉv¬ë ÇièJ2•MÑ�ÀûýÇÖM6•„àÙÍŸ[ �oîCr·ÌÁ+Îw¸Œ/˜Þdé§k"|ã4Wv 8Ã%÷�Yƒ„¡uæè/8ÄkW•`�ëzTºè+˜õäù,Lè:<»=™W<¢k£EŽ;•‡& V`Á‘çf{­âÓ)IÛ8ZQÃ9… Á;ë0Nn¶SkÒifgš½ 3Tc,�CG ó³sñš÷Þ:ÁIâ¯O>úpù­¿÷;Ó¥î¿ökááîåÃ�>^þïuùÕoþúòÎ{ï.ï~åý¦àÿˆvÄVlrí™T\í¼øb0ž¥¿¢±6zÃ\ùoöŸyn�Àï�ûùÖ;_Y΄\ŒÖÀhU†’Žø¨T¹�o§¹Ú#É?œžbkJ&~¯|ZUSÒ€õ+Fyý�7:ãôµq¶¢ñÑ%º>~ ‘ÙÓÙ%{ƒÖÛ`¼s’U�Hn� °q½ð•IΗ…¾‡wà»òƒu| it ŸB{4¿eŸ£wø9>©æ5a Ï~ÌÕëº/ŸoŸÜÃvƒäÌ Ýuž,`¢ò¶¡/|L~M²Q�?=ì1ö4™J?5|óUÂÜ@wZv âýÏlV~:´ÕÈ=0Å«½ÀÎkìôÞÓ{Áf{�8Ìwd¾EÍ<�Õ›þ�X4¸÷åXîÝ‘×8(y­°¯àí!’8ƒEŒ£xå-`Ù³Úüг—¿�‰‡L’�çñ$¼€¼ú¹Ø§ª¡ùoÍpÖ˜\�sÖØ§áédúžÍö*à»ú ÚY“l}>_ÿh3ú{>î_]õàžhޚ؀ÓÑ¢½„öËóG·žýàHïîBOeÛã9àÊ‘>8L6³ó¯$—“ì ú¾I'eoÚÛQΘ“uÂÁ18´ÊQ0\õ§á»- .4Ô|O§;û ߌ©ä+Ý—_g`œ%dØ�Þ ¬í©ý[åôŠo`gljr”Tð-"žÈŽn¸ÙG{ WìÛÈO´P�b|Øîè{f/àÑÖ—_|÷>=mÜ�ßý¬@Ü+O×¾ ú;Ï�Í–Ì6·¡….¢¿xi…;Iä@À-þ…ºÓÂUú)ìÙ?{&XTç¿‚®Î÷Üü’¿�,´6û /á€u‚ßèÓ_Îqì"“è5ì6FPÒÜN®D÷S¤^íG›ä¢¾'ë÷xÂÐ3Þ–,çêèà;{Úø+ ˜Zß}ùñ û Vój¼áO`ß�ÊK¯ÉÇk� ~GV)&ÙšlŠ¢Úç¿üó?YÞûú7–#ùž7²±6ëêú¸ùL¨-ù‚¥Öè#—GF®²Ìºì+ ·#ß éÖŠg^§Ï¼– >´Î1˜z™ûßé5pl®Áõä±£Év|“�½úã�·7”¤±7¿öíåçUrò=vÇZxþþê{o.'òýЭñDŒf&a—]ü‹sGc Æ?ÌŸt¬c>÷įñ°wßø@{/0ðrÔèfWGíœä‘ì˜|¸ŠÎ6ɨž4Iá Ç»êŽ,@y¬8�$Þƒù`ûš+;¹©«“€\IÀ}?AÍÖŠgŒÏ||,Á]³'·MA¨®[wê¸Å·'þ%^r¤à¼5èºûªOb²4"Iíy¶ ˜Ñ£öâ*£Ú{A=~j6¿„JÿçÏÖt� zhOŒÁæ{Qâ¬ãluâe£‹;ñÃñý+¨‘xdßÐï$©„÷Ž„TíÌ¿Ï΢£Áa¾?þ·ß|=¿�ïK|¨ÒýÂÅ/òk^_~ýý£‘ä\wÉ;–ïp£¼—o~ë«%ç3%±~üñ±©*xGÅsûJÿâü…º(¼XNúÕäuþþ²³6î:ol•ˆ½d«]¹õ¸sÐ/´�Kþî±åí³‡Št$M?lŸ{÷;v÷\¾Ëâ ß|G—´íuYø¸Ž›T½½¹œh^oýZþ§ùaÃÑ�>=¿|PÅù»_ùÚò•o¼]R|ö}ÏBw~ôáò‡ÿ�¸œÞýby»ãMè„·¥¨ó�Š¢šÖò dˆ˜R?Ç^«Ò9 x~ðóKËŸþàfUõq€mŽ�ÙµüÞ·Ï.Ÿ~òÙò£Ÿ_?*Lª‹� íчà9ýJ;ÂTGŸklIFŽ€>˜?.Ãkäûñ#'ÆþB3x´Î‚h‰Mfmø 9EJ°k† �·Žð·¯ñŽ4±†�'Õ)aߎ:>ÆïF/(�Î/+nH·“ÈÊþ–﹎ç’B‚?®;s™e�ã@4õµo~½äˆdë½/–ÃÍßZ†«ã·Öþ 8ÈÕ�+hLÝž�"¹Õ»’×+ˆÝ»ç@çØ[¶‡«�:Â�¹@j{�"Z ‹\½uu9s¨nñº¦9{°)™Í¾ÛÍó‡˜ÿWòqž>s*öÅ:s~o|óû‹i(™H ÄOØ+ä÷$¢'{õ¼/‹Uµ?䙘Õá:M߬£Vß�hÛ729– FgÝ2©r~«ðU)îÜn’]s¤@Íé“Ì›¨–Àû´Ôˆà1@m wç´=ãÆœkN¸P&vÔ’çxÕn§N–�\†‡Ån$ä_l£øo-X!Èt¸¬a™Ì‡k÷'`—$žMÜ#EÜ©2QŒ¸8'�ò±¯ÏÍ•‘¿oωqäß-XÖÆ8›Šñ~¢ŠöTŸA0Œ¶F:Í/C1fîŒ_ Y5ÆIq06¤ÞQ­ëz°œ~ídÕàe457ÆÊ¦ˆC&82>¦ú æu¶�ÓþagB`R–¢Ò˜óe”ÚîûQÚƒõùþ% OÝ0<™ƒÎòÞÜ|\V-çr­äbãHj s政uÓÿ2³>âÒ¦C°ù`ÁTMŠLS˜¹ z bÎY”MžÂö²Ê‡.µïº_åàÕÎ#ÈNÁ„%?0ÒF©lNÎŒgr«â„œ[³í)µ )‚œŠÎÓ»^ åƒ]£æÅª4)Àp¼öé/­=Í�b"0 IeWmmoTó^¿^¥es Çk›î<+ hŽˆ˜âÞç‹®e|:“‘ê¼áh-Â<¿3!ÇxÒ’ý^íÌ1…U™]js| ók}–!ªÚ‡ð"÷4—�m‰šæ#•Ü Á8F$= W‚a×=˨á\�Á6¨¬Æ� ¤àã�ÿ±ðñzجœ‚«�µ@•JKÚœ¥²u?ÜéÜ´`~ЗjLÄËÞO%\{¯Êø³ZLsB2 ´?Y…¹ =§Ëœ÷Pf�Ã_ÌzëΘËÖËÃýݸ/s= ‡eÉ„˜×maK Û624™m�R‚Ò8�³¾¿,HmÙœßÈpÑúåœ__À~p†An¶7ðøpq× k—mß½–’Ÿ3jgð% (lªra.#åŠI,§@ëUYyîüÅ®_Ÿ–Cas<ØZà¨öʽh�B$hÀ9å<NN JóÞh^ð�`{’2ʹޣÃÁZ ¦QJ\z¢àå–‚“UÙÞS¨qîÂåh¯3Ã]N7Ï6�}a)2¡Þ}ót÷›y¼ Bkój;/Ô¥àHíSujÐXëOø¡8eI5Òoœnžk¶äàFØ_þø“ó±¤)‚¹µ‚ŋۈp±ýè=�¹/~¬%·V, 3ô±/™¢’úú­/¦RšA‹i­ 6-§:*¼”ÑM¸oŒ¨Ö¦¥ '¼Š<°…Ÿ›á,Gß¶7ÇpÙ}MßúcT lÒPì‡÷ö^L•{÷¬F?ƒ[Æ1êçzF×¹Ö=’'ð@÷ìO�Ágž”í(Á ÿ”(s]Õ*Ø~ã �S‰4xì3YÑÆS´…S^Ã�²â¢Á™öÕêP¡rUEÃ8qÂ/k?täè8µÝ¿×˜`N!anFx"¾D‘ Lý½:·, ßf ]ºt¹ŒØ²})>­Ñ\(Û”.§9?‹®ž¿¸‘Œ]ùö¾J^ø"EâÙ“‚¢­è Þ8‡iG¿?íšcÉÝQ¬£ë<ß?‰/ ’9X•q„»S~(tœqۻϹò�Õ¶*%ý¾ÏJxÃë9?8‡§$ë×rž²ØæM4Üd7‡è�K}¥¤•Œû; vé,áKŸ;#Oåe›Ú3l½ »æ:ìx�±è è=ª,\!ÃW/TöoéËÔ[ïßåE^¹”ƒBKÇ?øŸÿƒ Á£Ë}ÿ;%YÍ‘³ÇgÃï<»ÿÌuœ#}ï1`é3/…Ê~?GfZí8k„Ëé�ªý/µ6‰£ík2à•KxïÝÛ¨cÑwÌ‹ ¿Ù^ƒ“Çâ…ô{ª—@œ3—uýä¹ÀX �©b•c×ö<‚Á$}Ø{ói’èeÝ—æÚ öÒ™_^Æ'sïº^BåÀN0¶“mæO¼8ÃNðDuÃ$GE�ä,cÐÚÁø“èÑg›ö¢Èþ=%2,Ír/¹0Ú'›ï—�íu¤³(!á–Öê¥I`KWc� Ž™éZ•Nç˜`Öz9Úà£n9pšÌ¶0F)§ÓƒhÇþ€¥ûEÖŽC­÷®ÛI†‰ˆÎ—\/%QJäA*½æ˜žäú“tE÷«X§KÊì æ‚r“d•¾Bf9ïà¬3¯¦2{/�û æHo_�éNÆØPûG‡†{ïΕ~ðŠö<àø~o’!#›ºW v{I0ôBúðt˜gïø™{ötƒG®sûrœ>'ËѼä´B^“exÞàM|•#ŸsÑ~J¼ç�V¤ð°jòic¬ïåTûÖoý½åÛ¿õÛË'¼œ;÷ÉrñB‰Ýûé'ŸLÅ”öí§_{=ÞTÅÑÛï\ÿZ6ÎŽœc_Y®Ü¸¶¼völŽðc70[÷7øÇ‡@j…ßJS-e>óûl‡N_ÁQý�ôZw1þÏÖºþõ7ÞZ>þñ÷‚m~ ¼5Ù¤Ë >5ãn˜Ä­ðµíI×)5Þ™ý�I¬îù’.Û£á…í�ëø¯^l&›Â'd3Éà•¯fdTïç9­|:ý)_p[;&Bb™·vDk_{¯Ýn›;û¾ÊÀp`ð5j>p�ý®f¥C67<�oìJ<&½&\bã �aÛš'Ür-šÁ£]7ôÑÑÌqøyx ïÐB—¶ÆœÉñIgiÛf ÷Yr¿yY¯mcõÏàÚ"Cè¦døDâIxÁÐr2nôßw-»´»gž“(|éÖ7 š…yfx7FtÖ[É0ªÊ¶¦`ÑË¥é£ùHºÏXä#‡v³ïωã4Æüô]¼šàÀ 2ðë .o OFÿKà²F—ÅÐúÌàq�ð…ÍÔ¼fœµÒØlÎU®}¹õÍÍêÆïqtÁfðYùð Ù3ÚÛö�î‡bÀ…=kïéxŽõíʧË';kì3ptÝÀ±=²&r;¡3úÀÇò7Ù{<×NÙ>L_ák#’d–õšƒß“üÙ{< Ol2´û³G×}ìÚd �9><<¹1ÁËúЗA&à'©¢g±™éâùù($a�¿ºü¡±_ü�ß 4“]q�D“$·ÕfòŒu.�tô(p²¿€‰*Ëù?ùl­ói×<‹Fð0Þ6âMç”ï3ôÕDzk<ðHÏË—oÎx‹Ä…M{˜ï�=f¾kà¯g›&ÓŠ»¢ùž¥Cú÷²ž.™¹D>]ó¥ŽÜØÝ5ðÇàÒú|7 µ'.0Íz£¢Åpü§æ5v²ndu”ø¯ÁàïòZ© Ø7.ßýâÕgº.é*ê[Ÿ­6\G%Ûé»aútŸä÷ä›ÛÖdÐ_²�…ø-¼ÛH§æ}ZÀïàëù ¶ñQÒk%¨Ø<‰¿’.yþ³‹%Øý2ÿ^•ªÑ">%†Â;.ãöagöúð‹¾ƒ:xp÷òÉ'çê‚'É $©|X«¿Æø‡î ½ì¿å$I¤ÓJÇÃRsÇ?¢.ý&m¨xƒÊà*ÿ'i\Ѥâ(ôZ 6ßÄË瘯Nâ·³ÏweÛ86ahºq±yóÖõ��öõªV‚s+ÜT öô\Ï‘¤ŠW£3°GÃGòñÐÇœ] ΣsKI=ºJ˜éãõy-¯£§‘ÉSµŸ½�£—Í‚ègÞ§uæìž»ùç%cþúo..ÿëS‡—ÿÙß;»ü¿þä£`Ó™Ú©ýñwÎå‹Ù¾¼÷Þë%“Vaþþ»ù¦:p’ƒƒmÏ’xS˜½üúë–Ÿ_éø× •ÀBÇÖw4ÿéo}û7ê,t¾öë?Yþê§7ëÐöty­òÇ ‚ AØ7+øÙÛû¸Rk)y³=Á»nÕAûö½Í峫7–ëwž.?;w}ùÿàï-ÿûÿÃÿnyÿ«_›ãhoV„öÿý£?*pþÿœ¦ç/_YþÁ¯,yYWUñ‡}ÇŽ!Šo¦+?ßZöhq’�~Éÿøûº«ó’RŸ>Û±üÇ¿Ò1h×o,ÿð¿ýQ{v'Û¡p®#K«�>üårûæç%¶ëV‚Ï`Z’6ƒ‘�Ü{²åiöîÖâ [³._üld±B)rwGÕìüÝtî¡»ö oÇ;ñ…éHmñÑóü&—é;vƧƒPÜœäÌ`f<¼ª‰õ>ü6|zSÂ2R�ëÌ}+ïßÒÜÅ윕~á =ž8õzçÏǧJnðÜ›y}ãíåq݈/òˉílïØ3ÈÖNdùÝ£÷bù›~°üÊ»¿²œ¬’}{Çb¡'…À7+êÂwî‡ãyž›Ç‘âDuª�ˆÙ„ó+ëJ±3ã£lŒÛùEtŠ8ÖÞ�8y¦ŸSù>Å’Ö„:ÄB/=÷É'Ë7¾ñ«u±z­ývîüýåbüäj~ë/¹5Ûy^<û~:$�ánã›»—dgÈÓq¶i{µ·vŸ`„å¥ËWS jLiO1Ä…)OK Š6Ê‹2²#À HÌ–ªßÿÊ›Ã8�‹v«J[Á u´ì�”‹m-ª¬”&§¼`žVŒ{ë-·38ì�©Eaxqù~{À™J„" ‡{UoÊ`ÞÓØµ§¶¼8xœÁ}ìXgöLF¥J‹Ï¯ÞŠ9n› �öœ�O;—s}Ãà0þäbÌ+nA± xÀ¡7Ï+`$ó…/—s5¡ÖZ'ûG`´kNÂàNÄÿÙg×cÔµÁc”Á¢câ˜!@Á4èk„‚)n*ܵ:9Þ¹ÃÚ8Bì%üúïn›y®yÊÜT‘øæÑµÍu4ßøRˆ¥ýÁUìˆÀÀôé–h›1äˆÃs&Ó¼ï�Ôû„~§OnwÍZå½%zKs¤d€ù(z­/Um 2çIQîU f‚î…-xPª .egB–Q-À-½:3œR›µÚ,ô„!T�Ê×ê˜�)rNWDÄYÜÂÆ TÆ Ù÷ûŽÊÒ‚këÚžBÇ€¡”É¢ZÛ¶0œ¬µu'Ì(Jœâ[R"÷l–\`¯×ªŒ†�B°˜v3j‰ÜÆà<ådQÁý,_4'-ñáÆ–ð^8£˜"åmÄÊ.lŒæÚþì=\u7&š1ªúo{çëmئ˜Y®ÌO÷ ¹Å´$>ÀBÝ8ÖD‘sŸ âÁKsßsèTç<¥Â´ç;öŸŽ‘Ö¾éúûÒÑÓüþ6Ó O¯ŸïªW–ÚP�£}á@ê¶”€Öí}t¾Ì©îö„ø�o�Y<¢©qö™¹Èm9ñ´€æ:÷:‡Þç·Ê&ÌÀm²ËÑhöxëÏ®×ædî�àbðÔ†Oça­¹0{ŸßÿÞ‡ã¬~åèý÷ç×j�“H€‚ÉàR8�—¤?U�'%l”<Ñ1÷2 ãQ=½©ý%2Õ^¿ T�ÊÐ'£AX&^æ¥ðìoÝ÷ Žþôçê<ÒXÁwïþË7jçó¨ÌW°s&9‡¡�îÌE‹Âp¿±!”èáwÑ“ßM(•𛑣 ]†çÀ>:9y¼€o÷Jl™= �·¤Tq\ˆð4âŒ9ŽÔØøŒ©9OgꙜñ�2N(œŽYØ›§…•µ þŒý¡ÿ”8@‰$ãîw6²Ä™ý%<é¼# LdܳZš­3ÇÉc‡j)ôp¹u/yÒ<È@°-ÙˆÏSDñÓ&–2%Éb\Z=#§^<Ü9Öx‡D(¸ß^6¾9t×ði|R+,8 ›Ã«scð‘0~¥õž½'ŠCK ’œ@ 9tAéŸöuÁáIÁæýÍøàHÙ»ÿ„«ý-êÖý¢=œ*Ø6r£s°ñ«Ç� ®¤<‘;›uV±èÇ�) Vº@<.îœ%Jý€x+e’aµ+<~’d’qî–YižÇ;oÈR/ã½rbév£Ó€€%Ö,ÉOG�hQÅHÅÿ%mpT1Çàó¿Õ¯�ù¿º”>A÷`¼Ÿ|ã+ËŽŸþt¹uáúÈÈî?™Ž°oùî?û³p1<ï:´æ¸gŽ£õ“§8Ñ^ÔÖ=^ÞXçÏ}v%K‡2v[¿á§êŒ’ìÒ¥Ð!œD_èlt’ÆcÜRîWg#C4£»Y„¡s ^5 ÷«¬Ÿ·DªžvϺþxdzšî&þædᨑ�䥛ŒdEÎTº9­uº€øÓžñ�qÞÉ“ißä¹@äQc½ âq‡Ó_BÿžÅÌïùx¦µ4N;¬Zw<Ñçœ%ž….À-Ê˜Š€q?õlIt'Ïdzú( Vè‡ ©=²/�Ýí]Pg?“'é/»Îô2�£D• ~§è†>¸ÐZŒÎe¬õ»žÙXë€w3éŽZ$OÕhðgSó˜=n[{üg=—5‰¡ź_äÝÒI„ƒ\âëál&72N9dœ ?Ælpµ75t‡"žt/Ì™ÃÄœEö¹"˜�ûóèáY|lÍ›,ùY¦¶÷ã Š¿O ¢gìJIèãÑËÇFKf!‡¥su÷ÆO9,ìݾüÁïý^8úxùÅÔeàYž}“´j¯ÉÅIxËÑwãfz;˜·.A7ÇdmF�û.¬œý{V÷¨ 2ô°éRUB.Û¾êu­¤.ÕëðFgU1’tïåÔ½zéÜÈ]\$Ï2îˆFW–-ÑÝ£Î?ä˜ô©$ÉÛ›Á!:Ž oBG»¢u×±`¥¨yÏ£Íy56ùñhg0�¶×ì³½lOÐCÁåÍ®Å#´Þ’#/Å7Цkà'Å+Ú±#Ûmf{i\Š5¨B¾6^8h®¾óBsÆ5ž€)8׺|Ž®9$é\hgì —v¿ë\C¯¡søÐÜ|>‰®ëÇTè^£›°Yæ¾Fž÷}3�èÕ ž )áx³ì¾~ùŒ-ui°·«ófF�ñ\ò² ¶A†÷ö óXƒVg‚ Ý­û‡EÏü»n…ºû4is𤮵¦äž1ìÄzß* ×çÄX‡ùú<Õ³v„®�‘¾\‡[ƒmûE¹h(´ç ZLp«ûì-�õXgJ„|�3‘�ø(|èöì¢Ç·„§|Õb ³ßÖa~ûö�®èžq¬~‰Ä &œlxÜËšä¬ÜýÃ×›—ä v1g«³–Ÿ¥'9† n±u¬w…›ßøYœÚkò¬ÁXò0ü›N­Ú“º|ææ=þ¦˜b+pÅà]¼ËwÞ]6W{çFU¡Û+ã⤃G[ã;dø“ÞŒpýÚçË©ÚlîJÇã�øé¹ZÕJæÎÿ¢êæâù uQ»´œ8ujl™[µ‰¿ßÙW·r–Üvd9T@}_ÉÉÇ:Šj*lãGpCGpZƒÚ»þòÞT÷þ&`Ïÿ/ûÀqH¢ÀéS1hÇ\­þú }Bõ$üµN|vè7º#»\ƒžåØ¿vM GËž`èÜÚ3ëÄÈçEg²N¤kåîm‡cx7þƒVñ�Wô5�÷ ] ¢Ä&6 ™}g{¬ Ø€Š¯z¼ ÉU&qpfoÅ«<1Y> =ØÒžùÆõéë¾$§:¯Ù Þ®kÃ�ºwßé>Éô=é^Ö —ì}Šex{u|:‚.pq$ äϦÝã…þƒÃºÈ� <'#¬ÝC‚ìØ.COѾ@Ô8~»†žÊ¾œŸ ÒÌaõ3�]ŒW…ûœ°àGGž ¦j·g¬EÍ1—==|ª=y¥Oµ \Y+ïäo”žÜÚ{øN7·òîmýÝ2óƒÑ›Éó»U‰vé}àLg§´¯•6>]Z YGŸ £á‰t¸¼&Ñutßšé=/Œ~éŒæ¹ä�1áÔØeÖØ|Ÿó55‘±ï{"ÝnìøÆ§·¾ œJ¡oà±¾·—Æ´Vþ,c ­¯0§g·©]Z[�“-²g¡“~=YkÝ8ž‡~FO£·}©Íøü¯Ö׸ô@6¸5¥ìÌ3è,žËÎàcA;`¯°¨%e·:Ò1|ì/ò®7Ûá‡y­ö BhýÁ”/ƒÍ" ö"x‘Û‰�¡c ÆQ.[KšH ë»Ö×¾´�î¥+²¿ø„ø�Z_m©›è|oŽM1\ËI†;ËUëjó›ä§Æ·¯¯x‚qèªx�X€de4áZòãyŽf´ˆV{ò¬cö*˜ðÚk0z" ÔýÖC/cãkËëڦОôœ>ã'àŸ&Ÿ'ÐÝ~ñÓ ¢L‡±æa½b ä=¼¡‡FæøÀt<ôK–¹/,l~:�¥]<¬õ˜ Ø[ ~$¡tô²à1�H¿ôi±ßæøØ�ô�ÈÀp|qƒ»U€Š=Ä™=s ·à+Š ¬Ÿ} Î*[ã^8jÁo{¸´d‡Ê«/Ïv„žqåÂgͧb­| ¯ûöž(á¬.¿7hÅ/�VBüóºu¶´á³x1à°-Ègt3þ¨®Óîzb]࿞ÔÏ@Òtþ_déÐvü‹�¹&ÝAPÿƒû WIñ¯hý*Ä8x,lúÿTs.t±ûúaU7:xü¨ üAìµÛ×ë*šÞ°"½µk•)y¯Ëg¥È󳋒Kíó~] ×à¾óá%QéB®|ómûx’õ| ||—*¼[ï)0Zïp>M­ÐÁŒM WFwÇ6ÉÞàãpѸ #%;Þmu Ü¾ïÔè(|`û÷vβ½ŽGóÉíi“ì Ÿ¿Ä§�­íev“ó˜Wû1šnOñ8öñ¾l m¢ïß_»œšÞcbCâ*/kßÏÏožæÌÎSàÆ_xãáµàs§˜–öú%“u�.±ànïu¢dïëÐA¯š„”·ú…Ñ_]N³Õ£Ã^ÓMs÷î XÞ¬5úÿé�–ÿä?úöò÷ëõå¯~r½gç=ÑÙèuahô­w_ï™ù9÷µW%˜<¬ýöå�/,ÏK˜b§=Nè<ò¯^þð¯.æk½³ìŠðµ�‘â|µdˆ"¤Ý»ŸŽ/Ö¾û‹ÏãŠJ;0Þ§•þðË” :¹˜ß78ëJ§üÆûo-¿ù›ßZ¾òկױ3Ý1œ´‡GóÿþÛ?*qhëòï½±{yÿt~�*ÆÛ�`—NSÑ …FñÀÅ,Ï,€«¸¯#Uù‹óËþãsË�bƒü^Õ¯.ÿËß=XU÷óåÿáß,×ë0{üèþ*ó�6¿�¶ ÿ4?pIéíñËŽ¾ëãƒg3Q@_Ò·b:]ðIæô<íÃÉa…»u3¿òÙùdEÏŠFž¿p$Ô–pý'?úáò;uá«¥sçÜn)XNù¿ÿùõ娙·2FjR'FÀ –^G¸¸k£Œ<�ãªý´žVâý$1´>ŽZ¼fø ASýÇãZ�NÜ”ˆ€ÏL'¿ã pKÃǺ‡p@gð± ƲOsa qoMkJÕúGt‡oPÞµõ�–éAu ·kñŧ�Ã@¥p¡ƒ9�&EÇb{÷¦ˆµ�ªBvG+è}ÍØoß<;¾Ái1çö�À1Õ£'òªÅŽ,(Mã#*k7�æÞŲíW¥¿ûgô»/DÛgÔŽ²Øú)qãX&ð͸a ›Ö²Gžôåx¿x!ãVç86ðo®æ²Ò/š§Lsz ž`Ký��Ì«±G@ܣ⮓�Ëá¶½ ^ÕmÑÖÉ’†^dôëÞÀy–èÌÏ8˜›+:™ìù~¯ó®â­GÏ·Ây ?æ¬xF°÷‚»�sî Ší/(þɹKËGŸÝHáÔI¥Ä�:ž¼yæøÀÿõ<Ï»wÔî©d#¼Æ8é-~¬ŸÒKVrt÷1Ð÷Û¼ƒkØ[ �ŽÎå1ŸvgöJ&Ýóàò(ZbŒœÈA@ hÞœã#¾¨£Å^x–õÀ±×Μž9^ÏØ ;œ­uÐ!G~„?”(†á´· .‡ª”ßÖçÖÆ¬}Ž3ËL\`¬´©«.Õa€V*ð¦>aÏñáC}Žºhà—œ ÖÝ6ŽPpÐȵefHM’A{Š^fðíŠ×ŽÐ>ýìZ8 KYMc´žÃO{¾Cñ}ç„霂7f[ôÀô‚®?®Ö¿…/ÎtEÖ£TÖÿ:/°ã3{Óq/o¾ö^”×&0u4¥ÿ7û·—¿øó?~*I’ΤÓÏ8ƒzÞþœ·œ—o¼ùær­óØÈ”1ÈÚÉ@dä(]€(ò÷2þžfä2Ö%Nîн&^w3£¡Ô‘ÁUÇ?´²ø{r v‡_h�q¼ß§K¡Õçy°Ï²HCõù­¥È ¯ãäÞ‘sˆSQ XQú9šñðI×xcè67Ðôe$‚ñ“æ€49@{Èj¨¥ÁÙgæÔ½ÛkÏ¥õ5c—e¿{5é(Á©}Ñœ%)ßý�ÛLJø_{ú$œ*ÙÖ‹§z~ÿÏ|^”hjß%x2d#’ÑÁb †ðKÇJ“µ6|�ž=ºVÏzžî"ÀŒÐ?ÏsÑ1ÚwÎ6„ÄCŽ �¶_uX¾rÿûœœÇ¯Ý äãüëç5›#utäÆÍ�1ÇÙƒ¯Ûyè ÓôºG�¨5ËkÀæ ãÀÈakÍBzðtuÃ5öÇØáÚfóЭ‰äÀÇZHk´·ýݵ’/9òö‡‹&‚NÌï^pã.™à÷ÎæëFú«@í¬§uq€ÕÓ’üöJ¦mÿ:¸Äß»(ÌWB€Dé;PdÔ«Pç(,—(—Uû0‰t0{œÞ2Á×î{Ò9%�¹«ûÈA}�€&½£›Âçî�@: î~:™ Æ»V®ùkMîxÅ/#ÜÖ¾ñàÀúgÎû¡³—VÀZÑÞÍp|X;Hòž 6~ÓÇ\èZ|rôÔF¶ðèN_>|h¶¯$µ¿ ÚÐëÖNÑxÏ™g÷ï¼ë` ÞZ¢S÷çQÒÿŒo�sG¼�<ÙD�}2íœGž6P÷I‚£‘ ó‘g®ki¨ÙÏ"?Žä¤ƒ÷œ'ŽŒÏ½Ñ ˜Ù'½�Yãï?x¶q^.wn}®æè긓›éiwjÑ9¸,¶¥c²Ï{œ©L¤µ‘™èžI`¢O®NZ0_zìŸûÀz@ÙÆ¼éóüê‰Äǵ'|?Ç­åó+—ÖÍë{@ä ÊÑ{&‘s<Æ�FdL³Q½�ÿØGÇ‘sø×ºÝæC®ôûK¼™ãª‚Û³g}ÝãžÉ^…Ctãñ¯¤šÏÖ~ïï\Wræd�b|`äos¼pþü$Õ^.hþ{¿ÿc›p$^¾|qtŠ]8�¯º+ýf“¾8^÷6gz²/ÍDѼ…#+§lð^=þ_z�­öÈPàÓßÿê5ÿÒ ÿÆþ08ÍߟÎÎ.¨ŽŠ­²¤ ÍólR�›Ñ ’E#9ÜÕý íÞ¯³–*Ûs;FæEGk¼^5ŽÀ¬}c ~Xÿ£ðçÚµŠU²ÅOæôTH‚ ÕÑ/Â{º‹j@G2’ÃÚ{ÚS•Gl¡¦9€wú‘äh{::^ß­ q`½êpðæŒ'*ÖZ‘ OÇÖÓ|W N­cæ×¼ǼÖé¶g�Ÿ ÔØQÝ;zZûu $G)ê(õ87z °�(}çqö½š=ñ—}¯�JàØ.îÈáyµÏŽÑó»ñKS‹ãô¬™[pÛ™íc�Øàbùœë¦ïÑ.|B?ðÃx‚ðô2xÇAÌÙWô™-áíá£'‚'àèJß “…°¹ÛÔ’ ïO•éþÖ¸oöSÁ*ɺì&Õ×›ž•~·Šº;ÑòØ3áÛ� +¦3AÏû íÙ#ß“Öým¨™½Î:_Un“,-jð�ÀEº¸=à�×âŒF‡ïÞ½“ȳg:ÚíÍ?ϧ‹½|NÌþæëCà -M&lOï:RŠ Dßl>:�¹â $>úäÜL¦q2µhz»Â¾ù�3™ çð/×âÃöÀ~£ã©FïûÚ×ý£®—Lì®cu�|û­·²ø[‚O°ÀÄÌOÂÎÏ~þQ]úvtŒd~�ÆÔ¶ïôlô-i ¦=/@ÇÖà»Aûlù£ñ‰ç›�Úãká.[ {…ûáiÕ­£—“ÑÍâ%öf2¢|Ž­ú¼y©pµ—-rÖ1´o±‡Yj?¬oKë{%cÿÅ[6šê¨£{}ÑSþ­›u=Ð:bîÃÓ'vDÇjÞ`:ü¨½�ÓOëv2E}¯£±kvU�lM;«çfÁí˵ÿÉO>ˆâ©á?y5ö1?DþÄcÇŽF_kG_þEUØwîJä½¶Ü-)/!9¶ûµëU›VH§û‹g£o´�†é�›á®"¯Ùÿp�ïN(ø“¼FÖÊ>¢§>( ®‹ä$;„Ó ˜+¯"œŸDòyì?üH÷I—ä'�rðºN‚æ`ÞŽÏsïÛ%BðÁ\Š.Ö¤�æ ÆŸ:vb쪇&ðIÞïúIr‹')D;v´N=­Åwö ORä Æ÷S8œÅÍþàG¹­+&À×ÙPáÿ£å¯¿ÿÃå}º|ó_ïÌóßxߪ‹é�ý›Ë·ßȿ호öE çI-É/}ðár¯ç¼õõw3¤*ì‰_my?¼ûpù£¿ú¼³Ý‹9Ó»�·-ÿÁot¬uGÑþ£?úÁréêíå­7N�N÷¼î¬çÏŸ«SÂÏgß%ÙÒ÷ð;‰<ðVQÑÄ;ú›Ì1E®™‚àö±ôÆ8˜~ƒ—é.ê…_ñ-Ðȶ?_ù9´o"âxžˆ*JÚŸ¿�/A·lzҞ伎ž“„�áqðÑÏ%J¦¸Z¥~9ÝÛQAч®¯Ÿ:¾|øá/—ïôÃå»Ïð¢Êû“Éž:-G‡¯¿õV¾ˆpkº•K„b{m[èžps£óé?\~ñir¤øæf1©SèÎùµ÷é$›/šXbô³’6­ÅÏŽŽî{ZŒO7ë›u9?xüäòñ‡¿ˆ¾ãCñŸ»%ƒ®oF7àûÉÇŸ.?«àÈñOdŠ#éx·ðnô¸·½Ü âHŽ#v ð嫟ÀGÀÚ@IDAT%›WŸ7~®àr›à&gÅt„LƒP^q^ ¸U½±1 7«–ÜRCdLÿêÍ'ËÅkw–·Nr6P¢µZØ_`7'sÏí²ODH*uâZ;'{m &«€Ó¡ª©C [­3)YˆþE—ÍŠá.fœ51ÄOñ“ùŒ¨œq!cË\|N 0Æ9€U¤CÊ=7!çg‡m.×Ë’�í£-gÿW¿þëU�ŸI°^·ó|ç(=*#no€åX1mQµtÞ^çKɬ¡¬½l“1H¯p#î»A²x9‚ ½AÏ sÎÆÈ‘µrö�÷—=1Áͽµ¹=ýÚéŒö šˆþy ë#Ì;gÊŽ!²ÑŸ–Ñ¢]>2T ŒÀ eëYûÉÑ(ƒøõ·¿¶¼ýþo,Ÿ|ðƒæ•ðJÐP®œƒ™JF ßê$RU¶sû±”´*~[·ãþÎÆ¼Þú)fàÆT·ˆ^AÛcS¸�Còh;C·ËòVáY©×Ýú¬P"ÁDŠ•‘ròD‰9!äÜ þmUÇŽÓ8/Çjoý$A±¥õO–hkš60á>qìxðö”Á,i ÑÞùûLF<|¿ðyç•4uø+KÞëlm�ë7ßzc˜À�pû`´õ0<ØÖÙÍÎJÛ¨µÉFsÜž:0‹=¯ùêúp4%ðnUL_<9ÓœËzVëö»pSâFL;gŠOŒ‹]ÁóÉÝÚslQ½ÔNg ¢‹e”ø“‡«.y!|g|­†ªÁà'�2Îë¾aâ?x#ãúÍ7_›Ö9Û§½Ýh�2wo+aåµcË¡÷ÞN«k< _4_Æÿ¡ÿuçùcéyÞçgδ33gÎôºSwf+wI.«H±ˆ¢DɱÇF>$A#@>ä[þ�ÀA`ذ�Ø@ Å�V£(™*¬»är¹}g§·3½·3¹®ûÝqœ €)¬#®fæœ÷¼ïSîú»Ëƒáxnt MÓâZS^ç…}Wf¶˜|�ó. ¯C¨Œ<”>¤ ƒÐ+²&gJÑ Æyí2æ=”—mü›©t˜@©l?Á¡ ‘%2ËçW«y ZÏl´c�ûme¼/çé<|OGë�£¶G’OY>ÐB–AT‚ôÒ”²ÉµÒð=1Tn°ç:8®q=F�›³Œnk þ²êÉ »Ž‘k©ÓY«\ f˜Âócóá 4a<8çÖÛC te&ô®Î8qÚì—NcÀi ÈWmtùœ™àX»…tt ÃÃQ³Uï:Y{ð:¤‚3Bò™ÎzH#É`Ç&²ò$ù ËNdÖ@UÞØ.W¹i"…úÓìPë lð}�WQÖü²ZѪz�ŠÙF–ɇV* žh仆¡cÜ8›ÊUž«\‘¾¥}þ §ÙµVžJ;¨üŸ«—ô%mhoo­Rb”ÂçÃ#£!Cœ«óþÏç,¶US%m:äePþpP>ò lÖ”{)𫹿²\^�`&†½ s&¡/µ¾knËAîÄ�OÌË*7"Ëù¶å{2Ì/*3lYÈ3*ÑUUœ]RöÆÅÍBÖ+�5¸·±M ÄùŠ€cŠ}W·Æ¬xt  ¬€—”kÜ­ÍÞã`!—•sŽ4ôr«žôúù�õ0 %¨¦üul:ñ<>Ûd�•uÚñ)ÜŽ¿¹7ö—"JúÛcNîoŒ’5Õölõ¹OÊ9åf$1(¶“—{*P‡ ví™Çׄæ™P1w[w{om(eò.×ù?ƒõ&ÉF+g£™Ø G¶ÇãZA‹2ú)*øéº/ð{èmžgMgª]á·s�¼¿ÏuíøáoVî«4 °Ì+ZSr�ö 3Flk󲮌Aټɜ”1ÚeRbØþФ¯ÝS·8‹š÷”ß&(lÃ'‚ሳ£ŽÆ1;‘mÆ íFÇ®ø„99ªÿ3ºÖFÕÎ °¿EسpÕIVº9S­ô«’™€£6p G¿ –A.ÖãáÃ#žÁçñ ~»àyeÍÈè(NájÐԣΕ¹ ˜÷ Æ%woÝI“ãSŒǘ±Ï@¶­4s:gŒAºÕ¡ö™�qÔÓ©�>t_ðy�uU7¡ó‘+Ï¿øE@�íÐx$޾Ù*àL�×P{ÓöpÚÝò�öŒvÕŽö’úÒÍe~ÊOÿv\úpÑòÛϳKB†øß7€�t0¸­\ªcZ'že~ HÏ&D-ø÷S¿éT«§³¨˜‡†�¯ Z»ï®»¶U�ôþhò ¶¶Ï|#‡:h˽SFIÇK;Ї÷0Á-c,Ú…ò„òJ¾’FCžð· ÑEŠýP¦(]i7³G¡kˆCþcfñ}�aéHþ•”›'úµ†ùÉï®Mt­p¬�×›l`0Û—zÞî R«€ŽÏ´ÓƒÁÿ©·õÓôö»À»2^»O™¸„,eL�ã�¿âLy¿VhO°ò‚h‚�(ÝëÌÏ` œ‡ïÆ  ç2ƒqÇRê‹)‡œ«éú2Ö,¸è|Ý Ý �ÔsŒL`¯Œ£ß ]4pOMøu<$Ãå™YMù˜†Ú:…šÒ½[·Ð‰`ì©zÔî*> ”e>.?™Ÿ `¾\£8úËuA�kïKÃ5¬P!ÒÖÛ�¼h$цÊ1Æ¢¿bpqÛ®n®;sòÞVÿö÷¤¡‘³a Q‘3•>þèl’¡Hà»yãSìc:ï!³^~õ5t(ú{üÂ…‹i—ùz˜G ÖA‹‘hÅ|s$Ð0V÷ö/¿þÏ¿Ü�ì¥,p]ù:¯ÿûªGý ÿPçDvh¢°._ »‰çê‚䯃Up`5à>ãV—˜¬“­jë(3s$Å™¤mƒäýì%}JÊuýÛNß¹s'µSTaçÃ]’¤<‹w]¿Ö*Zm´™¹™ôÑGW dé÷cŸÐ=;Î qÈþp/]aH“ïë°ó¥ Ÿ½˜o—¸clÅMucÉBÖ3Ù.°ùr•*¾qüοóõ7˜¸ƒ÷Çnñ¸(q,“â9w°µ&&æHZø]� ¬òGÝãˆõym_Ç÷6õ„]Sƒý*ÍÌÎ.ŸèC�ON¥«W¯"wª¢¨ÃÄ/¦Á:ƒÑ)Gù=ü HDŸG¹*ßæé¨èzª$qe5Æ {Á‡ü®rnEtŸØP Œej®”ÞøÚWÒÅK�¡ H*â»!÷øÜäÏá5@që³Ûitôt¬³÷—ÏÕ?ò• Ä À�¯ßHo½õüùb:EÒµö¡�‘-dÖ>o0PUÁ:ȵ(Åjqý,ék—Ji}:2“` É5Œâ <á “$Dàif¡”¾ôêKé�}m±N K´?\õ»cz÷Ý÷Ó¹sgÁN;"¡HO\B½dTþÅ UjòG‰<=ëöIÿx‡Àï*öG.k³â̲õ=¤ÀyàÈsiÉD‚}ìv­ãÓÑ�5a´´× [ÇN˜œšçȶrúå_ýåtnä4k»>„Ü.^¬ílt�àÑää42æ|øbkB�"³´OÅQ‹$ÿ|zã³ô'o~'�¦#i'`¼v¡6×à¼úNÂ0[ÅZGÂ2ÆDõ,XÀ‘€k%t7Á)Ö{Üb íÔæÙÂÞ<•‡¶¸çÃùeªû:Ó믿G«®ÃÒ¤²ÎÖÒú4Vzæ½ûcéñÇKó¬Õ*ø°6­úZüDûMMÝLïþà‡iˆî°<”'Ë+ð<<ˆcçÉCLJˆ�•¯#¡¾´Jrg/ ̰Ø:™_Åö§:öF¼Êd1±‰yº MÌ.§sΦ‹ç΄o¦Ü÷øÔVä:–M�èŠéÚÕH\%°ŸÍÏ„2ö],FêÑ=ûúPìá!òD;uG~€ÙìP¤]¦>Ð�›šNóSãH(ÖpݤÍe@Îàt�dRýec`ã|_[¼R߯}Ù&pãQ9&Ÿ˜ÐVG‹áæÐùâÞk±×«$üdl£:\úXd¾Ò�ö„vftÄžmÑîæ>·lëokáð›Õ;ì�úÜãHµÍõé”[[iÔG¿d~³]0˜˜Ìþ‡ü¤oáü™@èu¬r‡;‡}¸Nb‹|¥ EBÏàÉ|G}jâož ÒÏú {Òûû™(žÿz×ñÚ×$=ÿÕÖÓV¹­=ßqÜð‰rÚÆk½òÖ>ç ï±7ÈJ»aØÕ­�\ û67VÁš(ÀâqMæ.[,óÉgŸ¦'Ï\$xÜ‚î Ð ]h³ëOø 1FŸmñŸ¾¯Áò#t¬6šÅ„Úò‡v´£Þ\Q¦á€wÉïÚö®¹Õ©VÊÊwß–a¦™¯ÃÂNf›è*Öt™ÊKÄgú‡†ø‰N$ÜHÓasb“ŠoŒ‡>«Eg»Æv*y†ØDÁà9kàô{¬n�øŸI/vóLmÈŠèܰ%¹?t—¾Áf O±e½Ÿ‹Ëž�¼2�¬¬ÒÞt>ÎW?SìÐ@ íôµG!8èl ;na~šûÕ¦þÁÞ«J·ïÜM}½Ñ¥zÜðW~éyì·¦¢·q¶ù2­Óßy,Žr~öù'éè†ØyJÊIÛÈ1ƒôd‰�‘¿_ÿ…‘T…ÍñßރǗXÎg|ú'Y±›¢µ"ÍÏ«·éÖcu>ÂÇÄðmt‘´˜ãom_i°‰{ öÅþ{^øüâRúø“ëéþ½qÏ¿w5½óÎ�Âæx8½�FÛkÓÓýè1ì �M‚ÊÈ$;�°ÐØe$UAƒ`¾¼µ½¹BWØ›é{ï-;)†­ ðú©§%—¾ÿöµ4¹@«ù>âc�M"ŸïÜü4ä»X•þ›<¬>·º^¹"3¹gÚã5ˆˆëʳ.L>Ii¥-1¯�ÑÞ=ÁƵã•õÒK†}‰S [¤;Æ\ÃÞ•ã™ß¢ÎöÙ&Ä›õ‚¨ÐÛÝØ%×±ŽG<ÃßËÆñº¾F%6§ró`Ÿ"*ôͼÙIGÑÚêQŠÖÖ"f² /·µøG4žÛÑUÆ =vSüÙxp+vª‰Cú}êðbf£#iìá$t˜%ÚõÕvþ‘T€.;VO7²ðYœAÌn‡BZœ>Z½£g‘ŃgϧSýý±ŽµìgwoÇ@u¡Û…]‹éñ'®¤däôôT$š´�`g2I®¼2d|z.½ÿÁ\÷D$ç„޼ÕÖ©¥T¼Nÿ3Ž>q/]|7OPHEíK EêÔ˜þßç4c²ÈÌ0œµcYF¼µRCÁÕ‚1S_°Ê³"ιêj3ÍEˆÃp9 šhÐ…q¸?*þ¨Žc"±Hü:�ŠÂ œ EŽèkiiŒ¬67C㣆6’5”G”�@O±c e’¯aŒ,B¾ÐB0¯›3 î¤•Ò Ï6c«¥\9s)=÷Ü éþý»,àÜÂ8‚ӳޭƒ¨!¾cæê˜PÑj S€bÞ‘‡¡ ³pE( .[M‰Û €sr�ãœk>ÔhP™:÷î¾A„%gG# êðYA³ØNBãÔ QNc �lk…J âDà�«a#Ö‚¶ˆõ-iêÁ"Je#½òÔÓSϽ”¾ûæ7Ó÷¿ùÛi`h-ȉàd.JƒZämáÇD*3 nPõ„A  ZYË‚ìÕÕ8ÜÌT�1 ëÈcL2c粉#½IFÒ顾Z~f†I%‘ë�q[6šœàšñüªrv~¸JÇ£ ›ÅÅåŒ ×]ÁTE; —¸ú´]�UPf°êlç ƒª»†ShV‘Á •‰UÒ”NT=çýJw-Z°@a rOǹù€Di‘ÏrÜ•ÞâLp¨íR4Ôlq©Á,X¥C£òSa™ueU}´ùfNbta ÈOû•[9£faz<®L‘'xŽé¶�—ÿ‚VXí%�y5²UYÏpÐ�µ½�YOÒ¹ÎQ™*+3Õmû¥’„Û�†äO“›ó©ž‘or¼U¦f»‚Ž’½kåFÏÏcè݈¤@ÙFQšPP‹âiå;›È3¦ì…8—�‚�‘}Œrž™~H E{ã`!¿k$”+Œ¬ <º>Ž,á¼ ­´çýë(ˆOÒ„Ž�ç™I«žEQ�Ò)1ø[úÈñœÊ Ï~Éh‰Çàð²8™&øá‘ÌO'1.³ñ}_Ò¹ïk +àÍôH*³loré‹­�ýÜà†´hBAú}ç‚r*ŒB+ÂhõÌß³q”UÊÔ,ÄÅìÐ*ò%öüó%@ç%®Ê“VY'é¿G۳̱šØKª·ÉúÔÁn¡ã�k\‰Ò×P­®Z†¦³õÜÔiÐñ2éÈi*àöÌc1²V«D6u>5\=gF¥wDÛ¨Èv…gV4ºs4‚¬¶,õ{˜£¼'‰Rd¡"°ìsxžç‘ùr˜l±uw|!ŒI Ë=Æa6^²Ì=6àÙÚ¬rо2§½�uø] ]0‡©£oÈçóUn&OÙVe9gÐÆ¬GuÍ>r¨�ÎQýÏúiˆ¹®©t`…]d¸áÌ8WÁR� Y%[›‡ÅswÖ¸g:Ñî·FQÑëV’Ì7kV9ª\•¶âž†õŒ]ùf0Q] o»þnûr�¯"À­YÛ;ðX3­†ÜåºF´ÙâQ�Àä ÙÆÍ`¹ m'„rJºa»Ée²äÙï-/•¿rJÝȃC–Ì—ÖqD2CM`Vý’%íS)>Çø9n* #€ß(²Y©Q´•îŒÍÒꨈaÝÏËüæ,ÇS'gB>v’ ¥Qì³5XZ0 ¥=«1t~ ˜¸Ïýs8?NY§ÓWFo°á†óæ Ë;¨~¯”¼~.^î½¼á\Õwï݉} CŠbõ|”Òªö›ç†uµÒEÚl%ᨪê_„óÞsåé§Óç7ÍL�§Ÿ~BeC; ÝYÎdºŽŽ:êʳÏ!× éü…ÇÒGïý„÷×!Œœa€>ér›1ù<†Åê£; �ŽÚ6ØG;`e® y+`lÑîù§-TE™$ î5˜kK-+ЬXQ÷U¢óóü�‡†ÒéÑ30¼w� `@EÓ䥩‡cŒ šÆÖÒ2ajÛ!V‹5�3!CÚê$à$òA›fãÃgØ#'t¢nV.t=â>‚ûèOßÓu6ÀTbHâþ«•?ômÖu”n•úƒÈ1€L*lEÞ3°ãÍK\θÇ}–º½žùÃn,wAg!ç‚­§m‰�A–0vþw`ðò�."ÜHçG™ �ä:ËŽ!;G�ïºNÒ‰¿(ä1اq)˜®E%øãø¢ �yÉS°Ê 5ªökYÛBºåŸö™ÚôüÇwù¿ø m…*öTùì•~_`Äï¸FÒLI�SŽru8À|Àž9FŸ¥]Í7¿[Á­C¯=é•n�I‚° yƒ¡Ê4lOŠŸ”=›ïÍ*8«´Ê÷íÖÇï{¼—Ñžm8õƒ ®ð!÷¶R\pÚgùÝøÅ{ò™{àûžÓéq/ÊËt‡¶¦¢ú%öào«Êè ½»VÏf´ç˜ 0�Q¦Z>¯c_ Ü«–Vê›ð�IŒNF Þ.®“tQ hË™XÜÖîyiY2‘ÇÀ¬Ã»êF³¶ëp¼MVÐŽP¿X-ÖÑՓΜ%qgŽkšÒ“WžJW?xð�{£¿íj"_{–l Õд¶«mýlŸê¾°qt#ÒÖÖÙ—Ö #Ô‰K×€ŽR×B1_÷M`x�ï�Œ\w`±ýÖ±Ö^òeÀ/’y¤kƒiÇ8wA_èA�Óçiÿú·ôl$å0¹ÁÿØÜXç"ó·SÒSö·k- È&Öø¢KqŒ[Z•¤cƒ–Vk›diF½sχÏ®(s¥öÂ{íÂwžï'M9Nù^’Ž�|y–÷eÁx¢#öA`â‹Uo~î%{_Bà%�h_p î˜ùX¶Ç“wôa¢S‹6*ë`¢Kæâ+ú|Þ3ÙDðÛn-†ì¡üu h5y�i‘Ø"Ç0oþùó„OåA¼ÔxW¿ÏŽMaÀû<ÛÄ×ÓyT®pöÈçâ|%ºøÃS™_´Î¹xÊ }–FÅ3½6ã¹=d{™‰×ÅÑQð¤{÷dÍ"Íþè#Ió¨ƒ,ã3=/m AKïã1 ûøBÞŸ•Œ}qüÊ&e¹]nœÜ2À^&¿Øæ¹I‡÷§ˆl‰}ÜØÃn�3 ©íkPÝuW÷JŸˆ¼ð}"Q—ç+S¤Z×=ö?ÆÇ<Ðu 9�ÚD:?œz$פ5ç@Ã�$Ou”óæý:äÊÔäxŒÅÄO}%�Ú“n×Ñu&¼‹/¨ã®¶á³:t»`Ô1«÷÷3ýÄW8ê�•¸?ûâC7¶§5aÕ#Ÿñíö!} >›Ä£ „ÌXWƇÝ.`¬�ÛŠ­ªxOËô½ÁVÇÓÞÙö¹v¯º^½f€ÁÀgoooºA¥’ëÝЀߩü$Ù¦yMLŠÄѾ^:&­³•Ž"³Ocÿ]Wßú//“Ž\'m¿èßñâÃÏy›G_øëþ@�°Î³©榲=�/�¡1ÏOù€/¿ËÜ·a"+†¬”•÷•=&—ËÏÊâèF¨xDðË–¢ÚÑ›[‹ás©‡¢*û¥ÝR}¶�.oØl€þ `©Ã=Ã5ˆä0ù…µéëíÇŸi þ2PaG(e½ò|[E©!½ *Ö)DZ‹Ðò¾G# ê”o|ÔwGÞ™ào⿦| i¡� [=þ²žß±½²‰(ç¥N†ì±m¡?0›¾S=ØMS±+ Щ×ä~×LûÐÖõ&èÉ×ê“ýs•Ì�K´Kˬ³>`WO/]�vp;ðiÈÄ…6l¿j€FÓ¦¾Hr/¾¹:D:78d€Ùge-•ñçüßŸÚ ÷YÒ}‰Át}v�¾E*¶ì{ÚàÏ4Á'îßÞ.ßgÜ€œ�ëÒR‰}ó(d syÀû¶‚µ-s:Ô"Áu§À <  ûT`ÌÕÈ殃IÊH娦FûÀö²ëœ¯¹EðD›¶•51QZù½ÊäXo�³#ã.8Õ.v½ºFÕ¬o1•úþÌÙ3ᛊEìleRÊ‘X‡VŽ.ÈIÁj9ý}õ‡¹Ñ2|]åqsè,“{ŠÈ2ƒ—®‘x’0ý[i® ¹íÚšðº{`(ôÄûl¯^ ´ç7”¦¤3¿+¶l®Õ±b¤ú›¶o×·Ð&keLê7+Õä+eŒxQ|[¬FÅ®ì<ÕÍzó¯ƒ$vƳÎs8{þ¤Å0¾¬�OYrè ™+¦ˆ\ÖÇV¾‹ï‰1ø¼uøÙ¤õ%ûßÎ÷¤1}ëe‚¨•ØdÊDmÊÀX¤;ž%¯¹—¶ÄÖ¾“î£JOœj›*Uí2å]ôñ#Ã*` MºNѵ¤;,Mèj&¡a¶´Šá}‚¯ÁM�{‘1&®�8†¡®Ñ¾T—YÐiÁóÂl+»íD× ÿj_„Ÿ!�Õ“|Ùß‹ý!ïi'‹9f¾ˆö…ïkgÙýAÄÖäžåmõ²²£1°œ¬e~tà³Å9•걑=®i›‘^#™ùr[e«Ž{«`�¶Ð}ašÆžÐÓ2í¤ÕÿÚ¤Òž¸3X‹#Vo²7«bÐg¢‘=”¦Ô•̳ºa‡µçH hÛ‚�Hʃ/­øu¾ÚÍÊï�‚ÈìOÄVxOÙ[¦TtaEíïaß²†êȾ>Š�ÓÊ÷xŸ÷­ªçW x´½‘õ!÷³¸�ö¯ö�~±¾šþ©…BÑŒ|¼Ç5ú’5$|úáGifr6]|ò©4Ø?˜jùNÈJVügy)ƒ´_ÔÑ<ž¶!ëä½ÿ‚®,ij+@¾¾-è× —¸¤í¨Å¤,0ÔžuüÊbýú’hMvØ]^ Ñ „}Ñ ?ÄfÎÞ;:eøþ®Ç6ØD0߸q“$Ç2KÀ=™»�F#±ŒûŠSeIGà•ØTÚ�ü;éÈNÄü-m«KÛ96RùºFìæwö C°aè¦\�^ÜSvÐ=Uš1fÅ&Ã{ÆÀ2ºð§¦(Vÿ&´-]èŸ9&ãUúéb{œí MÌOßJÿÁý,âI—ëØ;û±�ï­�%ª®³ �vóÉFÎqŸZ­°G†ù}âEvL6RMµþG_"?ÅÇ]óˆ×i‹²æe’¾�°‹ƒþXceV¶, ß6âì4_UYŸJóSq»’)“ÇN~7;;G@ù³ôÊ+Wb ¯Þ$± ¹Ñˆ,|çmäך^|ñqÆFA#ë!�í“ q€ì«&µ¥„6çO 7¥Ý'ÛÓ÷n‘€çéü)ÆS‹ý‰®ìK úSº[#!К�äu“:¥!eƒz°HÁNy&¦º>#½j³ÃS>šdöÉ­;ÿ¹Ü]›~ñ•Q :+ÓêÔ4ö:ö ×䨫* D›_¹Ð‘(æÝ`_ÿüÇwÒ­©}lÑV|“ÙÓ/¼4~µ›þôÍ÷éjJÛvèÉ@«±ˆ{w¤�¯¾²Z[>dï+ÓÅtMšYÃÖ¨„–ÄÄÜåyùLú„,ƒ®Å�NL¥Þ.‹X³äíi±t -ÕU5hKsâ¾ú1\繓bã(/Žè¸gù*°l媉Bò§ãݧbÛ[ý5u·I9Ž·U.ë3Fl•5¶Ã„6Ö3øžRà¹"6T 2Òø 6ÊD|Ó¢?±·MâP­àÆRßΞϭ…XÇö,²ÚÄŽ3£#aÈkÊüHf,AóbKÈײ{XyÒŒÝv\Q ]¢¿¾£#F¼§·¯?ôÀõ럄Ͳ¹¶¶8L"HWjF?,ÂûëèžÀßáAq;ã€ÆtíXóðþƒ° »pÓgÝüêà­Cdªëfb“ò *@lvKî� \†áÉÂV{ ­Q«€wce†j‚‹íÝéü_Lîж`z ë‘MCé˜I^Aæ¡á‘t奯BPõéÖµñ½Ûüc¼†EhîhI½ý#, Ò­b–€bWÚžXµº­c¥7 ž¹Ì†­§"mkj3æS™´`,ÅyÁ�m©�帊ÅÆJ�{ žAóöºÁ´¾‡¢¤ò®Cbuš*¸Õ4rñ¹tù™—Óȹ'Ó"Õ±7?þ ms дúÑl97i�Vï|ç>0U£TFÍsNŸ@« Q´E�¡U˜:‡¶¤„ñtnBòSÂËÀ | Y ¢ºÊ ¬,€tˆÀrÃôDUæ* [ßÌÒ&ÁìŒþ�þÄÓS“€Ã{·ÇX›ÝÃ¥`° ì Æ i`Ú=³�’•/òY•µ(˜Ï†Š€ì«Í wuŸJçž ãb›ù *™•%xaUð!”ÁIA5�NƒÜ¶V_Yß(Gñy~™Aj«;¤ +fe�]*‹Ž¤n�9c»w¦È~;>h å4IK÷.fh…nÕÿÍš9È0+jeU£¶’LFlIUry%�MNijU‚-§:Xá(Up&:¶�3ÛO–ý“ÎY{Ï^YÀn@ø¨p!›ÔŽÒª¥ ‚Þ£glLLϧÅeèOe†A§2\7�Ź›•hàÜ6 Vðt󬸈c“ó™vÓ¥óÃŒI!nÅ’ÕéþøCãf< doVÓ–¢mhF©ÜvØ»=[µ2¶‚MC5!÷ÞC Aˆaœ[Þw]ý?A ï¹E&NœÁɹjTà*Î8¨Ž]'Aè¥5ζܢ²G´ƒg“`DÁQÂ{ ’k(çÆw-Ù¨žI”G`à«"èlÅ ¯£Ø=_twŸöK¶àÄ�´ª]ž6IAán�µ—ì4«œwBèÒ®G~‘fŽ˜‹àj§žüHÆqœÚÞyèX~2ªð—G°k¢êDãœyì³¾+dKW[(O´.@‰ ït`àþ˜¸pHÕ¿ŠØ #ËF‰LÌfR»~:³* # [�=Þ�¿åmùTçÞ—¼¶Ž£ië¯A*®|y;/ ¨L´²©e”� ôÞî%î™mè œrÖLþø˜3µ¸�Ž»ümF‡#_Oæ4 ±2Ñϳ¬G«í‘ S’r]Ý£ìTÖϱX `†‹ ¡¯`⊀€|.õkè„ØGgƒ/q¹]XHZètp�×÷àé\;kÀfZ1“À6P#hg¥ETz2d=ªDyÌ.:àÊ_¾çK�j‚B7÷w,®çÏË˱:õµ™õ##£±'VW(O4‚?ÏË{(�äã.:sL/Ì‘Á½Žx-¦/¼ðÅØ¯��µTÿð:Æw1=óì“Øi3ÐÂJèîoüÊß�ß±—tö¿øò«A?“÷ïFÇŠm�õpJlGf²[®2 Êùü8[ ßì]÷²úÕž4©o÷x+å¡÷Þ¡¡4;E+¤•6‹Qp°h;éÕ™ð%ض\Z Ãû©gŸ� ´•ïL·n~–&ÜKè3÷ͦ÷¬+�,õ�tæxUÐRöÓªv+–ÔÃQå{��Hß3H� úÐs˜¸E’΄�b•Ü.Æç÷Êðw\ÃóÙLª 9ÆgÈ&þèÙÏSŒx†ò0hTðŽ}{�ç°×’w¶¡ºÁë´C*HŒ”W•9ê‘H$e^Ò†€´?wH†qÞV ªG½V›Óu°B^^ã�£ Nf  °Ø>ž¯07u¡kÇú@!�}Ïùcs_*s¸ÔËÕ>™ÔS¾ú,ËÚ8å­kãÕIÈõ;nò®ëâžéZiz�{�cVŸËÚʹdˆüЉ=tšC†Í2|îåØâ¾¬×!vvì1ï™ø«¾Ì3w+cCo1oRxPeò `kx„Ìs-´ßL„t¢ê(ÇàúðóDñ]ŸSI׫n¤!W# {ÿÐ|A1®Hp•Þâªøô}þ‹9)/NxÁ=u�ô¥Bq�ö¯<çšD¢6c6¬/g@–ô[Nj úS§)Ǭ”“î xû »n¸ŽlEÿÙMÁJAÛ&zÔ‚UÓÜø*sà®|OPßäÍhï ¿iE²3cp "™Ç1³f.¿Æxå—cèP¡ª�¢=mrŽÕçÜ6ìù3ä ãõüÁ5ø*9�ƒˆN[Ü'€�GtXG MypÒ¡Ã)K;îYðoD{ÂzSvólŸËãz </Ï~|0ITÚÄô#¡Â÷Xîi œÛÇ^  °_´?\e:@SÊb“¹3s„¡5í~¯ ?º±å¦É#µÕY"×.´[6 {È úìì¹GÁkP}þ…ÓÒâb€W_|íËa7˜ØPOÞ@ÿí!WñoñKÐgÚ”0AªTV?¹nòØÏòòj¦c��þþÙîâ7ÿú/±›{n§÷~ðÝ”cïd*e¦¾ˆ�$ƒw‚î«ØtQu íÖR¢nÒ&®$À‡ˆÃç+Ñ’OàzÞÔ_! ª/§O§.¶¬rAyfÀ4*Ûy†ò4|bhÉ�÷�Ž|и 7ê¥Yõ»¾ˆãT¿éyàb3É&ð[¡·…\qÌ~ =Þ' ®Ü×;Â?Ÿ'A|ƒ@»ÉeҧשçVIØÈƒÉ7Ò¤ÁiyØ€»{½�Îð8«·¬ÜŽù16¯ÝÏ�ÜÓ.ó”—ëZƒFôá* áàÆô…�„Ì1फ़ñx XÖä7+§Å|�3b4[¬ÿ”Fä7·”5&›WAÓ+t­óø*D1RfxD��ÙÔ¡¶â=©JÍü0ð&8ŽädNøýŒ[P]:W'ëóxg$È„.K‚&€¨#A¿�g$2èÔým†õ<ÒÒÊQi–Ã_wß´[ (´�0à±�ønKk»�sŒ²ØH�`¢�¾¤É¯âÒ”:À¤%qOIAýeð>… YÎÅk|é3óžíOKÈeD0Yw1C-G“ 7ªèÃvRaÕ»”VÁÿÖÖ³n>Ú!Ò‡G é„©Â*JkøÿÇˬ:A ˆ}Ô÷Ücýô{=úÅõŒVÎÜÃñ)³¥Ÿ&§(+Ý|;ý¨‹ÔµL‘kÿ‘í&ýT#wòÚal®>—Éy‘XÅz ’ÈPÇ^Óéj�Lƒfõùå m9õ³Gȵ¶±¦¬ÝÒ*-¯á/mS+ÑÅ=fHÙ©%iPH=l[h{‹µ4Ø%&ãØµç Dk¨-°R—áy1lq;�=°+�ºÛu:§`=´ëL¾lmd}À=W™¯?ÂOX%þs¿¥ ¸´í:ÀƒW9²q‘@4n{è°‘EРkÁDôÿ½*�V¬¯r€ÿ⾌۵U®hg¬Q?9þ*‚˜Ê¡©™)¾ˆÍˆîp½�ŸÇwX@ û¿•ÝÕÜ=íH…™­ëõ—z©Œí"±_V›g;:v"_“¼ï?Âü2¢‰$ ‚¯Ø‹5ëЉ ò¯Ç�Eê‚‚‘åw6ÀX•›Ú²Êgùü¤¸G;`q¡¹£Ãd'×!O¥ítå¯ãÈcŸk‹‰…E{a軵½3èÍ.U®�zT?©‚B#éS=¨m/íjC¯ K«ò»T½ÓÙÏ‚d�4®þ(—Y—[©mp8õ�E¾HÿY·E·âó¾\{“+쀂 ºÔ·R.(ÏœÛ ôÈ’†’ÕC'�`×øl>“ÄâMêð5GqÜ ûçƒb {Äz:Û™ŸUÚ™âkèÖ]ÚÒ瘜œàÜåwéÔ9„]ÑépÞµ…Ž“^›Z U6T=ªíÂ2"c-.©ïF@Ê{i¤ _e %]· 3¥Oã‡Æ'�‹«ð•ã01wޱˆáÛeÕÄ$ì õ¼‰Ø¬mÑ‚_6’ÍXs“ÂLÔ®¦HQ\Îb:ç2õð.c&ñ©€½©çè Iž•K?üéÍÐ'_ùòÓðP.ýä:­ÍÙËžžötsr5ÍÿáOÒK_áhYbN]ñTs\I{íT× ž¼;–¶¨röÇwÁ{o]_H³dHȳ& ç¨VwÞ‡ü; IP¹_l à݉O+è[cTv6Ý¢Jþv|®ìߟwÐŽQð‚‰v4åÒEºpžëDí`[õ2§³#iæöˆ��\oâ˜ÌZ �uݹ;Ÿ>þ¬ÄqÁ5ø¯<ƒêk»i½ñb?h+ýþï}+ݟÇ-pd-׈©Êû_{y��Â?ù[¹a‡e¸Çw²)ì¹r ûºv_µË•)v RohX´±@ŒÀDóS´KWUé·Éß•9»“we­ P> ,-ÃëᾓƒvóX iwý´x1O°[lVK�“ƒ¶íD:GÞc‘¨#ŸC'Ö‹+Ÿµ7àY»ŽÖ£;*)¼TþEP»Í°BÁ¿Eþ6>¡½»Ì1Yú…vÒ‚5±5Ęé Ë>62žb‹²Ð=ÅÖA¶…�/WŸ&^xªúÏ1˜t¥^U·G,…÷Ú:zÒ³/¾ß—gúIê=Õ�ÿsúʧK½�§mƾ¼´€}¼@gƒ9ŽNí ;G*Ò1¡�5—^f''I8žÃo9›†‡Ð$°—‹ÄÍTpÆ�ŒA£WÍv@©01�efJÙsœ=' Âv¼€\'曆W¾’ž}íï‘U|Šòø>¾OFÞ÷¿Ë�=Ç¡!=õÅ×Òs/¿Á7‡bS‘Î�±²»Ÿ…ÈÕÁ‘‹´ä ›” 4ÁÛb3Jk–³È<1èÕÜÑŸ[->==žŽnÞa¢daˆÔÓ*»¹s0µu ‘%YL+œq{†¶ä×~ò=†œºûÏsîVgªÈ·qÍXw˜@%UZ—®¼€"îÅxèNç#hÊæþ§ßýWTe]H/¿òeŒáb_�ž:¥»o˜k;ØÐÕTBY•ad³@ul.V+JhG*«PX¨ ë¥Vy¤pV›9#ãë|ï§8ÈË(¾Äø5T<Þ¢Ì^Wc! Œ£”T–f¹ ò*¼dPMÖpNø©�0³QÃ4ŒŒ4ž[¶ÈºÕTcHØô¼Š}œ>Ežà’Ž�à‰Æ¸kâ3�ÐÄ>Ú´¢FOUáÄx¶·ÊÁöNÒ£JÝ6÷< ¸ëTªØXœ '«â ®ÃçF5ÑVB�Þ PÙ«>g�u¬5ðƒ%¸g•gE(7Öp…h;3J­P•¾ej�+³‰÷ {8#Úd@³LŠuæ3ÉòÔ¸Õ¡lF¹ú|Al3I‘n>ª! ÿ-襖$‰JñçCC@aj…O(7dôû[F" ÊQÞµBÛ`™u”Em­\��RÙÙzå`c†¥eÍ�p¨áÛÏsFÉ!Áï2A–Ýïã²K·8¡y:5ŒÑj‹îµ¤£‡œ`Ý­Š¨­fžÜoÅÕÓ߼Èüä>ìØk�–˜Ì 2ºö—+HZXÛKEªitÆd#¨moåW߈¡„ž[ÙMƒd,¢Ií )4 ôÈ[®©s–F¤ƒ*ì(ã�–Jp¦¡�“ ÀEϧï&ëkž€ŒÎ¡N‰2F»y£pP+¼+QD!ï<샽0({Èø¥-ÛЩ…ŠÌ4¶"YÃPÞ\ÇHjFöù™ü½ @µ@làÒd+¨5ªÂ¸dìøàwË(Ñ*Æ*Á¨à€–þŸïG&#†šF–|ê>IêGÝ` x€ég~¾‚ƒ³�FÅ6÷* ¥e¸ÊWEÅë>Q�RS·�®7Àì9Mfœg f¬ºfYð\¾dìÌÇñI{ʪȠ–&ySPÃWΰM°2Á£>VP<ŽM-€K¾ï=¥¯šGót®Ê3|#�)_U¦´Œ6«MCе¯Ìq^*ü�xôKF´mUÉòt/Õ)�ì¦I Ä\W–ÄVOgqwŒ9 ò›s;€¾¥+AŠè祜ô•¿Ëœãk2M‹Á(/ &þ… fÜÒÿ—z<ËghF B�JyÊ3ÝSeíÙýÕÐ�ÎÅÂ-¬o{xªïU¹géŠr]i'‚”¾ðÊé™_g��È0~‡ä®ûi“ñòXýĺ´vö¥žînL8C‰r>ÇJ¥<2A^Êófu† „¸&‡$³ØÍB`\VU-¯°(¼gÕ‰&dÈ/-c ˪qDì*ã~ ºùýÕŽ= A‚ U€‡jލÐ)Þß3Y ù ?ÉG¶ò6йBU†zÁq°*üŽ,c]F$S¨ï"!‚õ�öcÙÇ‚8ç nþ¼X+Ç¿¸€³€<bÐcÛ$™p¾ç#Þú¼3a‰‚ŽûØëíF[Žqä]S;-ö·×Siz0}òÁ¿Ou�ýé‰Ç/Óab.}û;ßNÿèÿ“4zö,�xDËæøfvz2=Kž2zpüíü�wÕt‹iØÒH^†Þ ÈãѪga�lg»GD%cŸ')Q‡Ì¬iíI“sL¶;±ÔH­Ê•0® 8ÈOÒ¿ºœ„6ç­ a…êr‰3f¡µ×¾úOÓôäD´‹m•–ÚH$L«YUVTVBŸ:"¿|ªc¬�eÈ.º ’:�jTfÊû*ȃ8>…÷_ �AÌ /t“ò †ÖáÖa¢Ïp€X[ �!�ÄìAöm®ô9|#ªŸ—²WÙ¤�£\1  à³4¿˜û¨Ì0¯Gg¨�VHHTÇ™h’'ؤ-``‚µ™UqÎ9*bL‚§(ŸLãŠsT+Ë¿|G{ �5r<¥œ{úγ*ý–Ž»vœÙH ô}ä•I�ÚN-Tldá ~³!‘ƒÊG®QÆI�)­*Šxú£gp{oà!Gˆ P±]|‡óº±›«²Wk´ú8OQV›ÈÃ#Ð8ŠÅÂAk+taá–Ê Øg>s~>Y»�·CærI\ÃÍùÀ@#8€Îu=oqAÝï¸6ÞÈvaÜ!þI÷YE wç-;Œ„íÊ=ÃægŒqŒ *¿Š}³ÅŠÀ—ôàËe–þ} fÚâÚ@«cåÜTF&7HçÜ'ŽX/Ÿ­žužòŠô$¸âf×…^åS«"á•qÛFÓ$?“ À ìQžêKÜ»—uzTÿ;é4‡©ëne©í­@·ª_Û]ûTýÎ:ã”îëëãÙYµ@öŸö™•]ÑRžtŒv-yë{ß ]®ÌXE~˜�¢^T¶`¤~vÿ]vž!˜ã³L¼Èö‚uÃWª  JÀ§É=úvBr}Ü×ËÀ½mÞìj¢¯Æ Xü>÷ï,qÁgHýÚ3ø0ü´»�[î¹g™Ý¦��Ñ�‰£~GyâþóH¾½ÁkxaÐhöžÏX5ëW"‘’¹IÓî¡/ï-msC.€/X‡°µX|,€ 3y•Gf‰vÑí} û_™ ¢<ðlhéÂq(CÔå‚Hõt¿d�3º“÷bìΙyfïBúÜËƸ4 ´þHV0,ÆÇÞ2^î{g³k)H"=Tð¬¸'˾±´Äsµ%"`ÿˆ?”ýY¥"rÄù1~0.~w#ø\`NV `˜g{�¼åK`´ ;Æ ¸-^¥«=gØÒ¨‰§Ê‡jîi×3ˆgò;÷ÊéoñLŸRýæ%á0C“u�¤Ö/ª÷¹N¿Q›SP;¥ÙG©G[ÄýqÏCr1éÖ½ðy®›E®»�4׃ãgXCçv«Š{ð=éKÙ…ì£Avç[È-óŒŸ(4�x­g¸«_Ü+Uö�kvL¸½ô‰t$oW2írƒ‘»ø¾‚�ÎÛ3E;ÚÚñÅhˆM±T*¥ÏlµÞßÏ=Y;ƺ‚ùom/SÌ@…¼orêIŽG{Íó‡Çéò÷ø•gÃußµo´y7Á6¬ÈU×kZ)iÛEgJàÏ<ûlðÈ8ã•·±¸3³#lñØÈ:º¦!ó]ÛÏñòZ_~/Ö>û‹¿ƒä⯿ùÿs ê>d/ ê[ØA&@9å¢à¶XÙQ-º¹^Á �†hƒ)ÀìZÿ@êbƒP½è±!kAí€@+>C }òÁþC/[èÉ›¨®Íóàçn‚RWgÆ‚o¬.ÎÎc›±îjÔ�&¼( ,ÀÐFÕF«d¿Û(h¨Ã?/Ô2' èž±ƒÏ¸ f²ÀùÌú[îŒúT?¢ ÒߨÇ©ªjN³|ºŽì?+°«•c™x6€`àÀãHŠýv À:Ow‚¥þ ó60¢ÎP®™ ¦ß‡Á-zgçæãyFB�»×<'õàço74mKm#´LÈ{í�ýíŒ.*¨8³rµ•jþ<i»´m0'×x�JiÖ÷(&[ÛYÐÄíFÖ©=T>©LÓÿ±³ƒâ «Šª`|óÈGd~Ÿá*›ìиL@a;ô"ÁNÖ_,.¢®õù;QP�a¥”ÁO õuk‘}&:züe'í^;8†«Šî~ê^�ÍYGÎÌ¯ÄøÕ ÚÆm€Ú‚×]`bw&Á{ƒqtoƒ´¢E®Aõ·6¸ó2ȯ?*�ÏÎÌ o-ôØKÓSSøâ†Ü°0Åc8›°vfJ‰t@IDATgi÷;‹ãp=x†D&Õí�è 3™hUÞNñL "eè™ ­Eóàgv»ÜÅ&lm­#¸ÖL!�)¨Úö¸$“Ê †Y°‰îÙ":1PapßD‡ÐãàAÊ3Ÿ³Ó3!ûLX±ÚÊD+¹«‘Á§z{Ù§rz8>Á¾S˜ÁZ[$dò›Aì%+•üm—ÁйZ8ÊÓ$³]ÚÙl�D1¿¸J»]üat…ÉkÛåߦ&|s|a+ õ]JÚ®Töoqv«’�töǤ0\�Ýk�>3`snx˜–Ê‹´ÂŸWä\VÞ·=¸{tö»›–þê’)®Y"J‹E\Ê9ØÞö¾û©‚fOÄ2ÑBþ…5óG!mò�äh] ë8;Zéö /Öó{}=saêCyA™âÑ\jåu°0u�x³¼i{ti¹5hXoJ›ŽCÇ(æ§§‘÷Ê™ã+�å¬ÓFŒ=œ€'�kKøô5ð¬]iÄ�LÂYA¶x$Mòhm‰c�U�§é~ý´0•õÚZù:»`€sRÔxû³ké£k7Ò7¾ú ð”­Ýípöƒ]'¤—Ø#ä’É´�Ђö¤v‡vä6Œ !Y‘ëˆ>4fdPõ¢¸¨ èú ’–£¶½xµtGƒDÕ=ÏRþïí`ûÂÿúõEæg2‘ÿì ¢Ìs�ä|bL@ÿÓ÷KG�ª0®°ÿØ’°$¼'…aü-Nk§“{jØ÷K^‡�x®¡Í ýgv�q³þ²8ƒvDÎ38”Sl°þf–� Õë– Xøžø²Ïòe¦kk‡Çðñ�ì´aÇ”*’$÷)U0åŒѧbVÊë�8oíS¤�Ÿü¤ï›YŠø ð I}®Y}=˜ sÒ6ö#>SÅ-&н[H`GiR l±¹•N}ð¦v´I~¯Z_iH%ŽÊü>vd :»Lrž6Ü*2g—¤m…æ¶ÎT‰óèý” äûƒ{wÒÍO>&�>�íÑ ½a?Q¨Ùj7&lÙà7 s*X9…Ž0sã ƒ Ú sA\¯‡©oè<æŒn´³—LáÓÓÊ7ÿ+�÷ÎÔÁZ ¬˜Ú^Ç8d’Íí=µÏ¤;÷Çhí(ˆv²“Ïrí`Š×V[Ó€ÝmŒ¯©jP"]ÃLª'ˆp`ärj¼ú>o÷œ%hßÕŽM¯Jƒ#ça0�¿ à·ÝC¡ØÊ4¤¡á3i`ø\é÷KTC]ˆs6UŠ Á»�ÓçÓãϽ°<Ë&ïE6¥+a{î®>˜¢)Œ> ¿˜ \Í&TÀ „^ Ae,Á»©,!ÿ$^a]z•UÙ©`°Ó Í€3ãøžÙÙëëkð-?Öë <¯Dõfí´-¡PÑê@—e<ÆŠ”ï*ôU¤§’Yz ‰s‡ˆ&$ŒqE€‰ ÇǾËßéÞíÏBà ’ç1bÈP ƂѪ |ÔL1·cîa`]SY0;ÀYr ãzæâ<*ŠrJ Ã3v¬@©:ÜDÀ`ðò¿L2O?t5Õdà‘cP-À˜uØÈŒ�Y7™“{ØL6T�ìßsݤZ¿:E¶­„8¶ºZA₯bðºþÝ´8Z | ã~g(ò¬r“Ÿ(W(Îofî‚ùÛÛ03×Ûzê�€D5 ë.-.d •0i&¼ ÐcÄÖ0æJéñ*³·Ú(ËKk÷ó�ä ÖB�SÁg•�ʺF‚Ð ’ºj³’hu¤�…þ*8g)«f!H�ãPEv“Û/¿ëK'vhÐ`bk!e¾WK²›Ž�ÙY\Ý£@¤/Æì3•Ðgí­‚tš¨˜0Ù¤žçG+ÖÏŠ÷-ŒÏT­ã¹fð†QÆg'íàTŠ•8ìfØ[MYjËDV˜|fÛ;å‹�«.Ø"(>å"ÛåÅgAtvŽé6 òà­%0/8_Q£ƒ•ŠB‰COФÌh`…^½W¬??M�QžÖ˜�]àø�X–ˆ¹À$iþÊ£Ô^J8‘ýËçÒ(�Yd M¾4Xh€Èóø|®.¦ÈÚÙª YYÀ3åãc[nb¼œ«\û.8¸I‹úfÏX3]_ïm0Þz¾ª²Š^Åì³4üN€`÷ÎŒcå�2F˯ó<¯—ÎÑÂÕÎW€ɇµðóè�À¬óvÏ0¸¬¬wMÕî­Š[ã6sÊöÝ5q¾lü'¸ª´ažüÔ°6 C™§8~_à³ í Žž!èy‰Ö3Ã\Ý�ìÒŠ±öÊW¾A•‹´µ$û¿4ƒœ óÀNMžµà¾­Tú�¿ô4Áø�ꀧ¹Õ¹CwÏ©8ws™#=0äͲ¬¢3JEy=�^øío8»ç3äÞÈN�?øn2õÎ_zg§°­5}ð£·3§>Ršyöü“ð{wšxx?MŽÝ#óï~è8�‡ˆl}x[ïyBòhm--÷¡ƒ&•œ#(mD0Ÿ÷³LæØ¢ k¥—/×RÌ…5`¿øãoùK‡Tzôç�Û· 3õ Ž/ó––uht‚•GLís½ÜqužZÉÀ™rR;åÙß‚‘÷Ô¾ÌzU¥»Ÿ¾�õêáÁôþûï¦ßþ­›þÁ?üµ�…“‹Ò�Á6“ël;ÞÔÚ™J €_зƒQ÷ØQ¢×Ð-ôEg1ž;i©·‹¼ŠŠé}nõÌöÄXZ˜zÆ5„€ÜXcÝ7¹Åàýüf°/O†¨¶g3úko|�{ÌM„£Ö¸þgÇSó¥s @‰€ЬÀŠ“@¶: zš· Ç„ Û˜™¶v2ÐD;;="ê)�V¬DÄœmáe+mAâ†0õš`™ºû�Š�Ø}Ú¥rQ¶?‰1”å_æËÿecx´^Ž $ëäøÜO�²°ŠÈ„Ëó/Ôð“Ï=#¸¥ì9Ì‚�Ùýëà¦kØê{ú�Üß1Ä8$ ÇEE�ç"çp[IÀÈ*²uÊö� ãÃtÔ¡UYŒÝWø·¬�ë뫵w°ÿ¤[u½’DÛV¼E \]¡�Ù¹®�-ÜÂ7&NŽÕÊSDjÂOoCïJÒ³]¾ô»M„Qv‡J f µKm{þôsÏÞrýêGPvÒå'žH�]~<]ÿðƒðyL¶v\÷°G´©¿ðÊ«tf›�}hiãÌqxïôÅKØr£bÎvðV šXòø%zÕØÚ¶NÜ ]âà• Ì,~Z^$Qpz2]ºü$¾˜]'ÖÓK¯~‰ IO¬Ñ+¯}9è¶37 xžgubnP}½ÄÑB&=Ô�øÙÌÑVÚžA˜½¤—“ß½õWüˆ]b�ƒe¹òùÿüB61ˆ°;ºE ú“¦$h7¨›Õ‰búu«tî2�*K�AÆÄ€±3`îFl»eìúIÚóÖ€‘Èñ¹º šî3:è¦òZLmbßÛW ^®á+´…ô©^€CHß`�Áü:|:�X}TVlƒ–Èð#ŽÝ\Ôû&,!›Á6ò‡–޶Ó6rwÿì΃iŠ5V±ƒ¨¥úÓ.R+kÛibž£xžëf¸;µ7aëaon0ƒ3bZMÌsc~i„î[סåE ÇZ²bÅ)÷sN�€˜�РÇYé»Û’^ÒP®Y½™ç�«…žEC+v¢ÿº¶ˆv‡>¶ã´ÓG Ñ@2G#�èÜ1ɨè.~çÑ‹ÆÂ6¡…k‘îÔüjš]ZG[—Ò0k×X¤úŽ oÜj›`�Uþžw[�0)k–NšÕÐs ¥vˆ½A>�?˜�–éú\cãØí�ì•zKô€VºÜO»€X�­_™g¯±J™+G9Ð�S?»¡ ÉwJÜC_߸3½§¾.æÄÞÍ/®§›có´NßIWÒ`8o® à ¿ºGrKp•XÅ5®¡­u=PÛÂýRŸ[•?Ï®ˆA ¯Ä+6ÁZºi5+½•à{¸­a··KЦg=g-¿ Я� Õãðd;àó\*Ë(†òX°OîM&5·Ó‰ö‘AØmæmbˆrR|Û«,»‚sÞÁ ¸‡GȉñŠääÈ1|¤mRhkƒ0ÙZ}NáÅcï_»Ob.Ç‘000Àž!{¦¦K`ŒÛ$1Œƒ¿í¤‹£W|ëѹºŽ!­Ž¶%¼�m´Äý³à! Aø™Ú4[ðÌ!s”žõåçfÐÙEá«yT„>²²Ù@²kEFXüÔÍO“ÿÄõå»·V£·×V—Ò:s™iûðVzĔċ´Í²JP0Æ"ö¶‹Œr%Me¡þ´� Û¨Žb$“ 3¼!¶�]û«_Êk×ÛN oÿÙ›ÄUXó^àXì¯q&æ;Ìß ÅýŸÅVˆÎ�|×=Ѩ«õÌo1A;äó¥$æ»-Ù9Õu1‘%júÆ@lh‘ޱ÷îݦlŸ8“ǃÚEøìÙø·3’~Ä5£3úÔŽ7bkŸ£Ý2¾‚ºÓ¤!�‹²€È¤@™ê�ùb% <½�©ï¢m4?÷±¥ãh3öP-еØ‹ŽÄÝmËÍhÞԇÀzB^ê7XÌ'f¡’/´ô«ýÞ*ÅŒÞÃDïgG±Œùù<ì˜ALA{�{°©œR:Š�çY çÞ#YyžÅsv“>ô§ löÁ„Ÿm\Ȥ׸–÷í’«�ªßc¶�š<:GÓ8†þ6¨ û:þT]û†¸?Ýrš–Ó=äõÆ;½ñ•§ÓW_HŸÝ_¡¥¹É`Ç©wðTZf-ßþá5ºôÓJ»;óÙc�óãÄ„HØ©„:ò‡©m´�†[ÐÕÒAsmúΉ¬ÃºI=Ø5ÒðéÞæôòs�Çú–�Y K›éþÇ–¢E<ât‡ºíÈÄg/u£Ó‘—¥4- ÷ ëY›ˆ‰ÿ ûêMÊ�ž*Z ƒ&’x6ÒÇ×ï¦Û³Ð5×4Xô›VÚ3Ó“gšÓÍŸ¤ßúío§Zºévwp„ru=6JKš™ž¥“Û-d{m$åcÏ™°¦Œ „½Ñ¯”ö÷I¶RŸ‹mîì)þ,{ãþè�©ÃOp J@TYüÍwÙ × ðbä|=É%aŸù}ødŸ,i¯ó Ɔìêº!Œ¹?‰­ÈÜ-âwb7�Ñ@ò q"ÉÒ»c”— |ëOúÒÚGNúSA£ÿ×Fœ·™xn%q0±C ·´²8Çs�×@Cò vµ± L;Ïã·Mj06’V§t¸ÃzÈSMMüñãšV¼³ç<ÿYœ¯×¶“Ÿõ)±Ö‰��8'FI]ø÷îÞ7(’ˆ5ƒLâXœ¶ÎtãêÚSc³Z´*®$Ÿ˜Ôgú6±~ººÑªÿÇ¿’žñ¥ôÉÕ(ºœŽ’¶h-:eèô2yŠþ‹®a.5se fi43\Þ4k (&2]Pp³R½nvò P‰Ñf@CEaày ‚.«‹“éÞ§ôÞTÑW³(žmdëÖmAg'ï2([“×ЦA'@@K%¤€Sðí#«0*TrîÑÞ€g4± žÑÌú†Ò­…#ÖÙÓÍwÉÀƱk¥ÊÜ�íüßßh#ð¡hË2mg'Ò8 ìù �cõ¤ŸþôÇéáØÝ(û¿õéÇœ3ö€lYÏð2£‹–¡(ý}Œ2[ïnÛ²:ó¾2TÁ !4ÉÄ€  jfzË µF»´mY -cè<%Xð“ •­6;hgßÐÒžf—‚1køÞ­C;Ü✠úRc\˜e¾nv @�`÷!ÎFŽgT(chÈ\"ëÑlÚ:#Û-ZqkV�œ­žé+±zN1d„ågYëÌ£¨nÇÚ㙀£ìƒ¾¹ž�!ó«üg–¥çœ»ŸV*e 5†rç2æì~£p"*Üc˜U0Ñ÷3p“³3 9–:˜]¨a QôzR9ŠŠq ªzoÿO 8ìyàŽÇ _²&¸ÑÒœ¿eÆŒ†á&R‰“£bUð˜qV ó2ˬA¸(ظ>~ìX˜ÿ¬¸®=´�Š•ã¬ oÊþ‚äŽ[Í/ø øjf¤Ùü|ÀCYæí˜ŒŠKîe&ï!AÃR) ây?•¢‚Æ,Ñy²62D›ùŽÀ¡�°:×Vñ<‚,J2gÉÒµJÙÌ4ùlû˜6ûyök ƒ,G¦­³æ09=ç¾ÚÄHD�î“�|L;Y3u» ±í}ÆK�¶‘êÖ½2óày‡;«œ­{G�Ǿ´á|ú,»4šF;\*g�ÈV«…fZ»Òø"{MÆVUìµ8|yhñ€jI�ìªÇ7ô4¥™ÕŒT³vàlºÖf Vl†èØ\ FÀ#ˆBz[úE™‹ˆ¹‚ùþ3�¤<‰c¬‹`§F†Äª!l–lYcYÛ2€;žç]rùÊ=�„xB¡ÉÈ$?3{VƒÏV%՜ۢ’‘AÊ8ùеƾ`c<¥ÑnðØ{‘á-ÐkfsU®®¥`®kUqg Fi1Û ƒF°è[¹&ŽÛ}�ç\' uŸ›=0b®ÅÑt?Õʯ‰±ðùTÃ>‡AÅ|ìîa�!O¦§Á< ¬ž­6pÎwÍ4•¬Ú³;ƒÁ‰#ÎãÝÜÆ@Å9*W›àäuÊ6hнÓß`U^›¤¤,SÆß¼¯¼96‘')hC}²ŽM8€î cf¬yL(ÖÙýјµ­^œÁξ ŒTVqlrÓL83Î]“'žx~&s ÇS00i¹ÄÑ#=M��ñ<œ8HµƒV6‚µ&¸ÍLO§šÉß d†v§sŸãaiù�Ó´Dölgczù«¿íÀÇ9Ze°á½½�æÑÕ»ièìåÔ?|>hñ:€äæg§ž.ºÁÐã̹ËéÊ _ 'iðì>3éƒÿ -ÿø§€,¶çme6Ixû2�ú§ÓÍO¯¥÷~ø&²E¾PN²¾Ð�†Wäøi"RÐ<´èþñë%èϾó?ƒŠˆÂŸ›—sȲ¶åo@Bèvxä ûav¼z‘yò3ˆåsÌÌëýвEfQVšh# ¨Så&/~éëûáŸþçÔyj$=ÿÜ3T•Ò‡ü4½ðâ+èpd!ƱºÅµ· �Õ fƒ~výZ*ºP†¦È•k$²@û&Âô…â»Ê*@¢Å'2Ãd–- Vç¶€q­m°þ€ãE”òŒvßÖÆZZ$Ktü×ÿezã‰�*ÒÛßúS’/;Óè¹óé ÷—Óõ·ßD¶éøHƒvý…{D’Œj]yo†îIpVI? ‚÷³€‹•‰Ê½xD¬›Î‹¼#8i5}È>¸Ö¾à0H 3äþíð· …:O»×=0øázhÇ)µÿ¼�º>t ÷s¯ýWZÌZÕÛRwyq%í„7p;•´`§Ù•C©°Ÿ{V®çSI’ŠŠ d¦ =;ê!–ƒã`-xbЃ6–¶•»æüƒ¦O¨²L–FB™�¤“Œ ûÞû¹ÈÇÈu†Áý ö!¸ï¤¸ç‘‘DZÜÑ&[×ÎOü| ]ršç‡=Æ{ŽC:5ø[¡áÀß>73HªƒŽÊØ]È nd—Ìuõ+z£’)ú €IEÀ…ûµ#Àí” 0qsål™MõX_‘Èä|YéOår–C=oØÙÎïûtùÉìyAt$‹¤>7áNÙëË}]/'©žþ9©®ÕJö% ä}¤ù%À9;1¨+Íò�ªZ…ké:Ľø©^•F]VI»i›è(gnÎ&Ê—>z_Æ �ö±AZ*› ØB¶ß3�fç,ƒv&MØÆÎ7Ïk»Ÿ¨ §_@H?È–¨áìBç&jk`Ñg0É3ª] K׸ SàÎÝ;Ì�Áðª‡uJ‡IÊiÄF·*Ê$6Ïö>D§èwì Pq£Þ¿…™ pص9¬×g¼1Xg¿rD“ÞH�MT3"_ì„åÙkÒÏ*¶Ġûm­aCbGÆ=t€ÙW龞5ñ@$ÓöVÙÓ¬« œÍîÉ+ OÒD¼Ø‡ðC V~´^^ízD†?û!Ȭ=åž�¬ƒS—¾ÕØ!;œ�ÿãúDÒ‹óŠ`6kb'!×QÈ _Î�7#óò3ü/7E¹m€2LÿοÕ%òg=¸>öDc= öøt+cù“äå ìa|øº3~kKÜt,÷±ºQÿv�õSÖ*›œ‡óSþÀO_;€î³ãQH Çì¯ÎI›Ôý5 ¤>Û º`fÌÝñJ#ÎK:ó9^‹ âZe„vŸ6°‰-ê÷ÚñÈoþ ] ~�Ü8X?E¹/]¨#  Û‘ÄDÏ]d˜¶¯~ƒ>�Ý‚¬´êàºÖ4F5‹Ÿ6¨rò\æf ò¿Ç‘Ù�Æ}ÜAÞªŸî}v#]&ø²¾öYŽÏÎ+YwmWl[À2+=O�Ž¦Ñ‘ÓiìîÝ´ �e6ƒ—¹N1Doúà½÷Ò‹ç_ýòWÒðð>˜ϵ"º´X☖›éì¥+œ9Ø{¯�}þÂ2@¿u°÷TФ6µëv#ú¼¯¸ž½sÏÜg_ú÷Ú?ë½>ï3ÿ_×9vÁ‹  Žr4ÍÃtï“«…Ì±Ï 4×~Ð?ílC^+ï¡™(º€òÄ Ô)Ò—�š#‚Øy|cƒ�ê]�à3iÇ ;\AÆ’l•G‚õê ÛÁÛ Ã#¦ ­ˆT÷I ¶åÔ/¬ãžÕ\o`UÐ�{³ÿ¶Lø®'ùmg›*KäÉý‰Ù4»@—Cõ÷º8Ü vR™nÜì…—<Ÿûƒk÷°aêÓé¡.ô7ô}ÖP©,_ìƒÑìÓÞ]ß¹mìüÅèåe®s3Èd°ö¸l+kºaỈPFéGż:ÅDRmPe6S„? þÌ"@je˜¶î:AW/�yHB:0aL ØNNvµ˜§Íðíû³ÈWýòrºxº‹ãZÓ»“¼·Bõ0s¿vß‹g\ ƒX7R6×T4Ç^VÀ#5¨ýmèÜ `»Òxæ¬úÕD÷úú&d ñÈ,ùÚÄTƒAv}qþšYv%³x™Ê~+¯=ÁçգìÞ3ðæ:4Pq[EÅþ*vï½ñéôÕ�V/÷´Òc£]ÐP.Ýfžf¨¼#9åÏß¿›^‡¯Ï ×( �÷^ ž?¬q­Yüòëĉù…c\&0zžj…8²ÓÄP�kí�¬˜‹lñ2ƒ�vS¬Å±³Á„ñ@ä”4ÚFUÁzlÒÛüSç\öD[S]zù™Alß|z'G2Îú~ËzúÁέô5öi¨ŸÖÀøÿeð®céA;(¶9‰ÜÈ1mƒÙúŽ|œZ ”¨•V¨ü–Àä «ˆÁÑÔc€ùÊ= ÚNvRó»�3!u"� 0X»ßÇfI|à¸Æ¾w“ùxænmzò\Gj£sè�>Oó«v.ØNoýäVúêK�¥s§»Ãư[Qy,¡L'M±öbDý©Å][ÞËš> –'6ÑÑÞraúUÖ[õh€\<^úÕ?°Z[y­ m›pÙ•$2ä l°Ouð-͘K%Ǹo¤w¯Þ‡fàðáBOžïàP6hÛN§–àÑãôÌã§Á€àMžÅ*s¶.:X[Ó¿�¥»е*ÀùÄ–Õ�Ú î³x�–ƒºÔ@Evf/2 úŽ‚Æe7ƒOÊ$.c9H&…?Õ7ê{÷ */ám+ƒ %ŠmFÒ´�èÃ`?¡'åÐÃñÙôÑõû$¢²&ç8× ¿“ŸŒegƒ ­EÐÍ͇¥xÎå3Ñ�ÖMr±H(Z 3»Jž±Év“ʺ!ÿ  yÎõ6V¢îwŸ ø(qlŠʬ¨Þ—®�QÕÞ=Îq×�vÜÚé&t8oǰfæfjk.PÕâq?LÊÒþ5ؼ¾Hk•�žW¡[V±û b_‰„®è’ˆ~{õ¸ž=t—~õ*ÁÖIºGôpÌa؉`àU¢î´rs�D-®Y¦bT~ÒŸ2>PŸj×hérÊNì£|±…ÌÑŸâÿ�%Œ:Tß©O´Ñ°ØÂfÕÞÒ�1þ¤B#tïõz�-˜0h¢ï4|þPO1}±»`°öh,�Ùñx;uØeA[À$0»Ôc,“$"OkŸ™ä³º¼”zºS,&ã7!Ô€¥/éÁÀ·�te’ûoœL¿ZlºŒC߆èxm÷Ï´‚n¤5�G9E¬L¬d‰±[ qò¾E,5$ißíå‘ËŒM¹¡ÿ½CLàÎÍŒwˆÎB]à‰vQ¯§üÍßývúÊ—.¥Ë—Ï¤Žæê4Æ‘ÌkTç׿ÑWýwíÎjºúédêë-¤K†À) p·tQéŽ^_'9;³:耆G‰‘4öµó´–/צYºA¬QQ=·AЛìÖÑþÆHŽé$ž`'Ÿ»óÛégjC£í$„5s¤e]åˆe�äè¿-öÊs&;Ë‘j‰MÖ [k¨.·ì 5Æ–Òõ{vo¥èËîøËk(àS�Œw¸ˆ]²�þìÍï§÷ÞO¯¼|[ýC‹Ý=&ޱWTÔó·ë¨žV6¹è&>Xôv‚“ë÷i÷‹è¹¶ú6Q¸!Ó@Sá7ñÞ‰ýãÞ{œJ-2ZÚƒROV™TB«¶U×ßÐ?·Ó·v��áö´á[ãod«¾’~­XZ×!+›¾¬ü¬ì( Bx¡83ÑO2ƨì1S]»±�ÿEÜÅãðŸð·6Ñuv79H»u÷@>cÀ/¶è棾0ùED|Eš¬$V·OòƒUÞ�Að«>¯ëcà<â@°ªEwÎ]>r}jXC*}À=+éx3“ênÝŠäËÙ©‡�ã[¨m ¯©™æÜÇ®©[Êíà—øŠŒ¹©�®MȧŅEžW›Ú‰7�UŸñØK†2Í¿Mb;D×µ¶uëoêf‚,šl¼‹é{î�ΪÂ"Ë�Í2;TÐT—ÏÏŒA0($×b�Ö,ŒÀ©Á¬¹©{©Ä¢ÊÜõ|¶ ‘×côF;óÔÄ=’þøm]´'Ø ¸Š²Ìc”×�X¥ºÎê\',°xDÛÞZva±ê"辺ÈYÚn`¸1.¯EôÀXa�1öî;Ü‹M�‰UB{.�À×ÞIŸ\ûB6@Î9ÈToÀÄK%²~ææÒý[×£BÈK‚ifCغE BahÀ+œ~6Ò3ºmŸef‚ÆË€@SàA¤¬‡�Z•… W0Np…޲ÂZ ߊ©„lÛáÙÓÕ*ßv²±uXŽÉt5¸¦A’ý yŒ Î‚”8=×ÑñØÎNfUhÏÒC…¿TZ$Û«Ä~¡p60V0ø"lw^ R¼¥¤ðÔˆ8f­U ž­2�ý°uR´¤â9Í( sdŰ>Ç€]NO&®E™« #¨ÓÅûÜÏÌüNŒç¦d�à= zŒá«R0ƒJ9¢±áù y Ž› 1³†k¶a2«@…ßw�U²žé µ‡RgÞûojZù&dÿÃ�Bà)p¶I=²M—{Še}à^²§œ«¡0LØâš¾¾ÞlO¹ÖÌ"•æ.cÄÒ�³þI!¢Ql‹s�É{÷ÇÈPê ÑÊœdÙ;¿gµÀò �km möiãi@Ö0@öe{£ˆÈ�Tb¶‚q¸>Y–ÐáÊ4—ï46üjÌåyHܯ¦÷ŒÈΨ?Y«Úž�¾7ÙÔhé±»A†*gÐâ?7ÀGX—Ð gy™� ÍzN˜Àz)-í'ë©€!AÎ+ü€ãf" ‚ͨ܆LO�Û"Â’vY´U«#КƒöŽ©.Ö�íož¦­JôžÎ)´ê8‡VCã'­úà …6* ;‘)m¡ã”t>Ò4Ô ’�]T³, ±85œ“bÛŸ#À[…ýX›ðP F«ûòÎ}äV(™µèÙZ5öƒ$ˆ-xIE%MøËþø=ù·’u1ËÚL=#S({Øããc²™ƒ´§bp/åƒøÇs nš @›}2€:39�"&{œŒd«°÷à 3(=³GÙ À*Z“UøÇÜͦ4hdõ^ÖÎ '�µñe“¼ÃÄYæÈx�sfäq?�^ØT Z›5®òD ñSùâÚð'?#ဠk4g€Y&%b@ONM2gÖº5“›¡ñX&÷Šà†˜•„SãÓ¿ëix¨~Í2/#£™ Ï‚ä<Õi@ß„:ׂEVèà‘î•�ÊYå°r¼ˆSnÅ›€¨€£FCÎÌ@ÇXÅ�jÖG°)Œe·�®ï!Ž‘`Ê‹uÅX@f°øÌ…u`¢›2ѳÒyDÌK¹à34ª5Ê�ø§àx¥[š¡o[8� å‹:Mg1 œ ´êÃŒÔföQÝ ÝJ*)-$£Ü½ùi8d%+þO�<“ÌWÄwuZ9’D'Å ¤Ue›±»×™ïÙn�ûa `3#SH`ÝÜ×Zô±so h'+}‡Lê1®wOV–K!?ú9ßmaö>ÆccŽê«ƒtÔz{{£ªho«”1„Õç½âÌø`àôÙÔ71Éñ-²dW“h0rþ©tå ¯‡M°D…óÝûSÅ-ßå&úBÇŸ}Ó°³U“•!Ò°ôåçêVå’]LîÏûžÏ$ÿ¿·´çXÇÇÇ"AÁN<žùpì{¥l&½…MRÎ|Þ×É•ñó/}Ï{Dàš³RïÉg^”½ÓŸÿÉïÓ¯9]yârúìÖÝôGøÍôÚë_å¬ ZB«>H]8VÓӓؤõ|ï‹ici.€ i¦„>µ«ÇÒÄcx}ÄWYË=ÀBhZYTCÀÓ³´¢•üd‡Û<9.X€ùJ‡v�Q¤3÷ì>jLÒoüë_OϼðFm;@ƒ]\Ôñœ•GâÖ<ì^›�/°ášVcð äˆZ§:SÕ w$á)Øà/×Ûñà!ÄúEP½áKù+MúÝmí“Ô9Þ {Ä} ;ƒky‹ÿcqX;eƒ«¥³žÃV2Xã:¸Ö:Pa÷r…çÂñ e÷c¬Ê×2+ËÝu¤IzʉåÊ%*Of±Ã¿Êô�1mmaï©‹úqFéÿ¢î΂,M󻾿™µfíû^]U]]½LOÏhV�F B›ÁHC`;l6a_øÂ7Â�a\ùÛ7„# ^/lC„,Bh4–fí™^«»ºö}_2«2+«üý<§c;$9äS]]™ç¼ç}Ÿå¿üþ볡9Ñ‘wr6ÌÚÛsŽªžÙ-Æ›´h>ƆÆ÷ñ\a+xÆ~�Šñ®µ÷:™óœ9t�I�@{㼤óœI†w3ˆ¶áíñØŸeêýµ6öè ýhcìçø¬÷\Å(D»Ö µžˆÍ=TÌ_+›ýHÙû«Š¸Öhì�59¬ûbë‘‘¯nK'm¨³ÑJx@;ÄÅZÒ�Çéº�SãVx$°!ìë£óJ{¶¥„fžÙÞ„Wà„&þÎÛï'Ôþ’œÑö+îeج�ñö0Ì{ : Îó™¿û8nn§?Î}7çà’f®êåà“œ­£1Ás­iXÕÑ?ï½ý~íËlï¾öL Ù¥*ø–³¶f¸ Pw:ýV°3£®tÆÚ’öÄ7Ý·_©«^Äà0—IXgô�n½tØ©g¡Q²Á¡+/k6tO?# Þ>zÍPhÛÖï>ôÐ/QüìçÞÇOp ûLµÿ +ßïgëïnð|7¼Ô¯½gÍãÁî‚9ʺÁ?Û\;d¶ÏýôíFŸõŒa?µ.lñ½ÄI@0ÉHŒä`ég,±°_<‡ÓLj †#Ñ5C>÷Yï6yÏnÝšÃHâŒvƘòšhaì혵±Ç¯ÍÏþΪZjšƒl&?¬WŸõùèR÷¸Ö¬­· èY¡3‚ª�º¾ñ’ gè3>ÆÅñz°¤�ÅôèÆh�Ã_dš$stgÚ™�û¬VÀ0àƒš÷æôîQãï�O­ñ3´:0`sì¹coúw ®í¿£¶è?[_‹3ìïhŸ• Òë1hÌz»5îú� Ãô½¡".áÍg’v€ÙYBŠ=À 웳l—{�dUa¤êÌ‚<ÎVI3ÍÃK×¼Ž•Ô’OC²¥}YH·^½xqúú/ÿÒ�EŽVCËm0§µdà‹».†Í¶ yòÎÛo�„îû9Pùy¶W½²9åMgJJÈ[.áæð‘ÃáÕ|�g©†°.Éö8<:N°Ù¿ð富êw6õæœÞ‚m¢ß+ù[V²1t|“Ø* d®ë�qÜPNºø~tsbÛ#Â^dþü\?ü3}ièk¢è‡¼Çó¼ÿ§kÉ  ÉßS§^Ɇ)�÷Î�0VÇÕ%ÿèî5ñßJúX'”íÑ­$\{8ôDTâ8¤ËW¯�D`�,~Év‚RÚ„/}<'…’–%´þ˜ˆ²¾Ž¹Ø˜/G yGÁP¶Îz¶kz�3_àC�Öwud˜ 7lÍ6,äûz.Ù;»O¥üÍ‘ç.ß™ö ™½§3vnn\[$G+ÉÅmÏv·vÜç/]¯ê¹€_t¿Td9”6ð€¤+IÌ®d´-:Æ÷÷²kÖ4.:~ABI²ŽŸÏ‡žh¡aR�&<ö Þp·³>Í—Ÿ…ü”l„6?u?Nä 9”Ñõ,Ù¯kè£^‚”ªëœ‡»5ŸÜ“àôé¦�]“͹»#Ÿ£ýxÿÌÅ{²åsX·ŽäéúpK 0öhm À š;š…´¹�%ÔºGMRƒ}�ô|¯=tœ.…[÷àx\{õëw¦Ôß™ÃX‡>/˜{a=¥¤‹ÕÑ6]Kû·O_(hµ':k¯›Ó\÷f“³KÙÀ|/sMÈSwüŸª[øív‰8ü’ð`NtÆ·&Áœ,1A2žÀ+¼¼¾Ï×$¯F«Ï¶VD(è¢1ï«�ÿëß|·ŠÛ­Í³î’ö>ü0ÇG›Ï‚ü?zäPzÿþôæ»çKöÞ]‘I Í£�-¸äY6ϺüKëó99ž_bs �?öý:Ž€ê{0¾ë­ìã™ïYW¾g½?_g´&œŠC§á¡èV° &ÚP"(¬qáâõéëß|§„$ò¶n{wj¿uì\ÌÒØW§£‡|=©Šþ\Aðíù³Ã0ÍÛs%Aò.¶Þh”üôl:”°Þä¢$ɇµ|G[{âYIixÏŒ`Hó”|©+À| xܘÉþ™?6]}�@Tü4 "ÍìYÉoüíOJì#0‡ù|Æð¹M†n*iCçC cKñª{Ó¡†Ö¬}Ì?¹kÏþŽ®Ý_àôJ�ÏÝ#€¯úríp6�Çï76`G*ˆÓ±þ´füÅdàåËÎ Úó*¹õG¾ø¥x¥Ä´Æ�nÿy_Ÿ\I¿ðòK}íãã�Ú�f7b)øH¢=ÄãŒu~>|IJæNÓb´‹'*ì˜ùOù[ëNÝâÝ0W*2»zíz¸_|é|´ÓÞæ¿ÞSG“;ùû齃G^hò­ŸzÒz;Æq µÚšÊ›#¿Ú�×Ù—÷ûÙÙæðÆÞªþ%Â{5Ý@gZãAsm?Ü㎵ÄÿpΠ;׿–>NØPšŽiäö£:O<ÔªgÐ>o®h«/ >ޤ�²­$Gð+ð‘±û6ç»\|¦b¾ä–ÖtVq›M™NÁ‹7o:’Oµ­:‚²ƒî-aq2Œ<ÒéÙXa¨[ramz’Qeu»vìcû‚¾ÍqØ Ý359ÖƒnU,¦˜s1¹ù,8Ü0ì ä“Ÿß}ûÍ:’í˜N¼øbÝRTY~¼BÔ‡Ó¯ÿæ‡Ówpnú‰…¾ô©ÃÓ­‡Ï§o½}k$J‹Ýy¼nzóý‚ð~szý•%£¨ ¶„�Ã/$�âɰžáÆðäö{sÓ�½q`Ø Aú°Æ”.,Ñ $zI@k–³}æ¦Ï¿”ÿ|ñN´–Ï7~ÐÙb]ý¿÷„?žv®u6ýÜg²gÂúí¹NÁlƒû‰|çÜ­é�÷¯Mï¼w©øbMŠeò7Þ®+ïþ�§ßÿZÉl[êØ|úÌô?ÿâ7*4\žþØýòè”(.vñÂ…b™gÇ^V³ùuþÀß¶íQ¾cö_¢8]ª3b2£=E÷ÃÆHΰ³ÐÃðµÏ§¶°Ì'6Yê>¯•ðŸÙš9�wg~›a_gWðÐÝøk)ž›«8–†^ë[“LÆÀhq%zVqnOš–ºç³'³9ôá c�¼‡vö‡[¢÷èœ!V…”Áïäfáº�ùS‡…þö84ÃÒºÿˆÏ„Ni-6cnîž±P& Dç=m_צw7òí7f1Zvʽ;u#.É6†‘­ÓBUáŠÙˆy’û ¿®K>óá‡ÓõË}¿xâPøS‚›E'¦­ÓíÓrîì8úáØ±OÕê}ïô÷~éò»\ì¸ÔâÚ�EB+Ì È>ó�„…Û›Í鉽uP(�¬Õ¢ÄŒÁf=Ì‘¾~}�² 0mÄ’pCXË,�ñ¨;ÿAû42¤š¤3_0=à 46E}t¦–$—(3eoŠ´õ¹zùÂôÍoþfà:Gy÷Ve ø½Ð$ÝÃx.Ÿ/à—€64 »½ìœQu˜¸pöÝé½·~s:ù©Ë ¤u‚åÈyû{¿1}÷·¾ÞYá;ª+n·)Ö;¿@KáÇ�W§·Þünß:wë÷͵O‘½ä\wŠ\mšüî\i§Õ6ÑûÀ,�ॠ‡R ¡R°RÄp25.gún*PŽ‘Ÿ)ˆ«g™«àŠL mè瀂°»k{°�pFã³. @I›k\ <`QÀãv]ˆ×¸d¶Êܵv2“öì;Øžî-XYÅF1¡l9´BP¹y Ìš»·®79s ÀlîÏ0ޖº£ýPL·Ü:hó+Cû×çe�ö&Œÿç)”Æ–iݪkÏ Z­>ÏIšP_ÉØ@o*>ŸfTÏe?‡;…Ô‚æ|XŘ9,Z{®†å¸ÒwUì·*ÆŸ®Ö¢Ñ‹�Ëñ<�¨jÔâxPI–áV†é=ŽöîáüsÎ2ôXzHŠK}ˆ?óUm„0ÛZ º¤à[� ½Yæ ­[ï�M  ÊØ—!~ðÇGç#Á0m —úùÆõè, ‘9z=éñ;§õ�§¨ G&L[1•Ÿ´}ßM©¯ =Áñ‘ñ[:¢€ø¬sÀjAZÊnP`B•°{/ÞÊøÝ<ßYkÝ_�y]Ùe<0±½ äÛ)ò�o+U(m( ¼\Eƒ*ƒ:…T�¬ä+×nM/×Êl]­ÖŸ=×#uTö¸ª'ç~oÏɉ†pü,ûʾH†¹—ÒB‹€Ë�ûª”sfz¹ö.wk©µ?£ðwŽáãèþR-°¶×6Ê:Q £- MÉòšË�'•n¼ˆ=¬ñµ‹ÝX×ÍædµÆ‚¶U~nè>Î(_ÍPög®ÀÏ|™]Àí0„“‹ƒ“=óÑÔpz'»êCÖ>$ø›PÆqLH[ONFÈ|ra[âo@|]ßã<Z0]à%4õIu¶}”5Œ×‡üÁdJã•õDŽ4Ó>ÏèLvs:ßÄ=%óê¢a@¸?‡%ð7*–Z“‘霡¬2§vèÆß3ú‰vZdóû$à ¼-ÔÕ‰aø2üÌÏ€EgŽÈ:F§móÐÖ€#ÐÙ×›è‚èmÚ3c4¬½13ð9_vyæ9}÷ü½è~÷´«,PŽ_ù»¿0ýÍ¿ó Ó«Öä ¡SžÆ‡-V]Mún8áiF^&Þt/£�,pžø|òy>™< ÑG ý?k�!±æñÝmÌ ítGRT¤$Cä EjŸ$Ç`á}çJ£×XÈ ë³2zEt$�Eì«=u$ÊŽŒý!;ÓË›s¢é•ÖrûôµŸúC#‘ôÿæ_Žî-ÏZŸa€'è.^« fÏRÑãù‚¦öUâÉ�ß}†¯TcpT@#ÃÑÕ¼ï*Re �¹šo´ØoV¥û¦/’‰‰²îLÊ´´}>ã>o®Ì73sîß>˜g¼7ÔOÿë9ð/ÙÉ�/»‡@ã}ÖÝ£ÏZrRGr©¤"Rq¹½R9EVx¦Ä<Î;ÁÓ�탈÷NŸNãÀ期aÂdi{ÛÛá¯ô } “‘õ-õ ‘!÷�ýãYÚ[A@Ç ãµïnŒ>ͱ·[ÏŸ¿ý¢¬co�÷\@Æ©2±¦îÃ0æˆ×´?èe¾1$¦ÂÄÆoÍg÷ø¿ÏÖo¦‡ñÛºÚ‹« ÆoŸiNÉÀdðÖ#Ç^8RvíIò!9Ÿxù…9˜t¥�Èn@É3ö�°]Õ¾Íø.w|Z5n•“^è oâE÷"çÇœ`»¸ÉØ<×wØwìÞn4æ×Wº´{Fè©�{·÷»Ö½K[Õ÷Âûã.næx‹UR�÷½gœî.yšEôc�Ék{Ñc]ÕýëgkÛ}Э„‡‘´ÔóØýR %A÷Áëhf[É�Ön$S5—1´”.bËÎ÷\ömË-Ó=ü 6(ýÒ³Feˆ=iž­Àì³ÆÉÏÖcLu&×훵#«ÇÛÍmL©÷3õš«Ï“ÙcqX ~_˜7›¢±xæXçäÅàÖäškÓaðÏHÊî;^º3Áý*Ìu¹•Í6‚vѹç ôÍÙçxçûßûîtýzç‹æPåwɹñî\ßs±àýq/~ÕíåøË¯ÖòòüЯZßýðÃ|ÛâÛ(³Å—°°ÚwŸä;q ™ºì©ÕhìV�×ûUŸÓãÖ¢�ràsµüüñ¯ýþÅ�qÂéÆaþxm9Þ GT‰¨Þ‰vL}´xG�hF ŸPÄŒ¾\öÃ¼ì“ {Ô­Õ ‹ñÀæN¿ýkÉpI  *yŸWÄA¦r²«,eï { Ü.dOó¯õ•è$?ÍãÛÓÍ[U&væl‡ÓƒYU % Óÿ°Çúxh¾NðÞÙ�/oi­öç%¡eC¨.� f×&ûݼK ’ï�[w •9ùÿª âCëKÑ4;ZÒZ~¡äáõZ™o¯«"{@··å| Î*®=ØŠ“©‚`{ ._¿Ñ‘p}gwIõKUÿI4S�ng¢ÒZ�W°|4“ì+‘¼x–(cıQ†ÝÚçô®ó—9�Ù;|™tÚà­øN` ÃŽä5þ´Îdäj¾L‰}º;$4Z“ø¾çè²v» ?lnñ�sRwï¨[Jü7S¤ ÉófçSÓ7h–‰Gèd2«åÏiÉFò }ƒòƒÒ’¶GzÁØÛÇÜ`”��½¼rkЇ5°"Ûæ“媋ùßð ¼wÿQíÉoÔÁ ßáþ={G{Òµ¹½Wfw#Ù��!¡ådÿÌéò½êô§c…„qxMÐsæëc÷¯F›ð߬d 9=‹,IùÑ ›tŒ«±ÒµŠ¨`á-#ž=wÌ\>š®ñ×b LØ>3¤Óù×.Ö}wU·º­}øÁéqôÌÝÖ€»t½FçѾäÁù+/^8;2ötT�nOm]üLòuH˜U¾Ÿ×!ߌJím­U4Ó3‡¬M. ¬�±¶nôY8ªÚ’Iøp©²Q²‘õ…ÑÇú0ƒ£%¶ç3’˜w¡êÅùÖó¥S/eûÞš ìñ`ÚZ=<”ðoí6—httúÞwÐÑœ¦—je¼©½^Ÿ|_Íw“8{—Ž'?çÚgÇ3mj®Û’ç/7ŽÈ8ú¼;†Ñ·uç 8Û˜/ÆüS)™žæ¡OÌ[ËP›í ýÑó™sWkw\Eok'hö`1]Óœæ½r»êÂdËVºdM×ÖFÿdÁÇ%̇5‰>¦épòÀZ@jœìÙƒÉÝzþ£è–ïO@�Лp¯Ä:R›sAAAš5ñ!? «BTAgœ„|³œ¿'Mº–TiÎKµ”;pë»ß™žûÛÔÏ+1*:\ª âOþôW¦§ñù[ßùþôó?÷‡‡ _’LÒ5ŠCTG›³*þg«%æå×Uµ/²Å`ò š„í(²YÒU~ƒ|×}x€_ñq6¼kÈIvƒ õ†d#Q´±Tàžn¸_�•l[ZªÚ¹ ¿ë3ÚÚ[ÉÔ‘$'qz^º�Ì,þãHÑ…*ŸÇ¾EïŽCnˆÜÚYÎýŽáwÜ\¬jÑVñ½ä>öí{ÇŸùíóÁIØÞqŠ @o°Ðõ’!)_€Ä8zÑ:´ ùqóÕ¶ÖKa7ݦ+D =ÞƟ`k•:ž«‚ÕüͰæPúÍÂYà+ÉI ;û—}öÞ;o†?ovÌd�BòUžzyKÏ»7ýí_üÞtò½ Ó—>ÿÒô¹—·UxQRxºc÷ô&¿æñô�÷ÞŸŽè8ŒýÛÆÑ:›è„sñBIaË[F‡éyAÕ°Â�›n€R5ó�0‡¸$»Â¹ê§êê!�d$Q‘pÉšë�á˜ddq€Å´‰w,éGgoÔ�¢£-ëº{s1;2ÞùKÛ b˜_~cÇtt�6oÞš~íWÞ©“ŹZ–ïŸN¼âHÓ Ù¼÷ Òž‰7?êû’2ÒÁñßÚöh–DÝ'÷`ºEnmÄ%�Ð%’Øøêh-ø,¼†OÞ!«³UÄì`rËþГ|Pã;ͽV{‘=pC¼‰ÿûÎ8ò¨ûè�6˜ÉºÄƒø‘MóH¨ÆÃ?@Ž,Ð/ãxäâçå*ó% ³ð?ìÏx<™Å¥�úÅŠi6vä ?ΰëâË¥Žˆ1€�=7w|Á'0ŸŽƒÍÐÈjò ~qï§uÕ] ‡Iè$¡ÍÛëž–Þˆ>û¬Ýiaˆžõ¼dðØiÌǺ8j×Þß�üÉÊ»É 24"þ´gÏ%´Tí‰á‡�E€?têã« {‰"Þq½Î}«×o y@öãÁ=am¶´D(¿;{-¡Ç=ÆAò¬¶EÎ]^S ? 8`Ö²˜M "¡\f0L!¶ 7¯_nšx1‚¥­øüšZðe ]ºxnz¿Lf|8ÎBn³eOiÅù¤J‚qøB“Yj3Ÿd„aT úÞ­k ´ j¯$àÖ—Õ%CȦZJ€Y X0ðÃÓo—¸núƒôß@èΕÎk¸ssl€³zTLœùðýÚ¡!´¯^:Ó\;öv0"©´Îê¸uózU¡µY­G„¦ŒßÊS@Æ¥êu¹@„ÊÄ íà å&À áá˜iÁFå~×Pœ†ãLÁ6l÷î„}÷ä“Î+Ä>râ…”æ€ÝwàHNé‡UÉ»ŠÞW zw>CDñ¨ïH@(,F‘ ;w ÖÈŠ*Ó?bt4äö(c¥À¬#cöO}ú¥M—sä_™ôoÞ¹6Óx“çÚ肇÷®Wu¯juª�GtöjÑžÖ%î2›Æ¼µ³znG„—k¥âì={:¼ë8ÄÃæ€®™}ÑÊBßµ/ˆ:Bß ¤]1Rκ¡p+ç­Þëœb‚žpÊ,48Ê}msÜÔ³›Ëù+7U dH­Zu^¾qwŒÓüÓcÖ÷þ�=}wdn7ÆÃå«e‚'̆BÀ©�¦. ç/ßë.h@�aí�eåÌZ…¥lÇ•€§šö”¥ve-®—Y+ üÅùãü¢�æžðà|8¸{G×gøä: „Åè=1ÛX™.‚æ9\2H¶ˆÖu¶ø•2ñ¯�õyáè¡ö݈úNûöl¹s›Z?¯$´6­Ù>]O�q˜,Ì—ÀQưkö’*Ö6V£OæûkŸ%»�¯&œUìå”ðx'ðpwåaÝ®—Ñøíy«ñS4¦ÚxuͶ ÿ k1q/!˜iÓÚT�æäƒ T :'�¿ÐZ¬›NÞ7€&eÃiކWúÞ�’k´„"ügçQ“/^Û;•¾ràzͯͽ,ס‚p­GÛËÖÔÚ3 �[B�áqÙ‹d£#»´½ê¶=çù´¿}q­ÿÖÕZžQ|Ï™gí¿@Òí¯qã¹ûµlePKÞqo4-㜢Råá{ãvm]kíÄð”!x=C¨1Žk‚!ƒÔá»{kåkŽÑÈæÕxî•Y=·)ַ˸o>ž¥M›'q²8ž€}œÓÒLËÊßóâ¿9Ê»ª®ÀŸd•ìó<|}÷þ4Úèm×Hb�ìTÆYƒÚ�HT0oò»öÂ9 2�gÎ=ì½o�ÉÚÞm‹f@ u)ãJ°]溳"W['Šy6­;šÅ‡ö_ELl‘ÓAÁ±̓,A¿)µ-OUý€ùýö‚â°Ñƒ0°?x�L‘ ¬C^õýn=Öœ\�y½¼Ò{ º/ h?“-]¯Ò–<´®>ˆ†akÅÙ!“ÍŠ ^κž;œÃ œ!5s,sÈöê:²s$îD›ZË0æ€gô±c×Þ@túéî�ùêtâä©Ö²3�ãg­xÎZvæ<8~ò•|ñUï6Ï…dû“�Î6Ǫ7rn>©m[CˆvJ´=Ž¢*-&ç€ýf2T.]¼4?ñâ´çØ«9]/T•ê¬g�ðºi¼ûæ� tÙ0þrÞxž5uÔ‰û}xú3+«ûPÏŽz9ÇV€EâÐö»J²ÓÒÈø;rüåé»ßý^2Ú¢›Ö½ñª¼��k= …‡9�ý*øÃ`<þrãoÿ|ú{õõ .0þï¿ù½ÑqMÙot¢5w¬ ¼äÚrýïÌŒ¼3œ27}æ³_Ê80ýÍÿé/M®�›>ûúËÓ¯ýÃ_›þüþ禿øÿRíÝ¿Ò~Ý�¾ô£?Úú,�æwçhsŽ2g‚Ššk—.Œ}‘ÀA¾ŒÌÞ†Š.צÏ9ï’„ä½ÉUØxÿárº/™Kîqò3bùá±Ï»_zetuxûß/AïÞtàÈÑŒæŸ�†$_Íœ2Z}ž}ÿýŒ xB†x<�,QUI·É•§’ÎЖ[`=‘œ¼©ú=CSÒ ”–‹œPäB’{È/<º>Þ ç¼T)É~or|¯INà÷ÇÑ5<མëþÖ[ÒGíÆž;Z÷6nmÕïß»Õuá…Öbÿ¡#”§Nœlüdf�Wjë~¯ÎKζr†§89±Ò}ÜÁÄ2àÉrï1¦ThA¹¦J>I[k3çù“;`Ì�Ü2&Á/x¼Ù¥‘»G{ü<]£²›nU¡íë†î‡fUó{ 9lÍ„>Gi²Ð³èzØ#&m ÝFLÖv?-¹}èo¼×Xü<—!ÅI™°Êø¯M}ÁIX@I˜°3ƒfg•£:,}5ªÄK˜pš„M˜ˆãØTý0* 2¤8UèÒ U÷Ë‘ÝLûµ7£8?´n0–?³dƒh§}­§s”2ôzòg¬qcvDŠ—ý…=|÷’]tçúì™ÖsT“iýŸGK†iÚhb¤ëÅSjƒ¬f¿ut›éÉ7�¹’5�©Ç�äÙûd" ;º#t±ç§§ý´Ô£ûÞ­*«$FëÈ…_·$Üsù¨}c_?zöhºV¸Ý÷tqYi># ÆØ}Ìöb8\š{ÉìZ´2è!y>l×(5¢÷­�ùh¶fÞCÃxJÒ‡ux§gZ»:Ö‘C’M<[cž­×ÀéãAµCfõ=ÏA3öÂ�?­ÄÖ¯ÃÉDpàk3ÿQö•îuÖx±µÃ Û³§ÇYäÉÀ{Ém¦µŒ|\;ôååh$Ìž�-­q<MtËö¥!IVíy[4ÁSÂCÖÇ@$ÌZ'¯.™É3é=³öU×ΜÖi–¾³¾q {3™Mÿ;rkæ¤wK´:Wg¶ª� ÆqìI8óò\;àž:8—øö�[áúŽ^êiäy¿)ÜÇQÿƒÚ‚st^½X…LNÀC%ìãG¶©ã!¬k,hU%¶Ì§>ÿ…ðÚ¶Ú©?AsŽÄ½»�¦cÙ ŽN`óÌÚ5“WÚ%9zxt _°Ú°¥@Ñ‘éÜÙ³Ó®üü'júÜç¿8í,Ñ[µ9û_UþÍ[7¦ÏžÉæÛTðéµø8½�sÎ8ÁÄ/ãw4×ÚZèÑWß�apkM¡sÏð4ÿÿÿæe ³ç&Ûv°ŽSd%üaŒ0²c¬•ó’Ñ�Ï‘Èo ¸%›ˆÎ‘$²&ûÔ=a8Œ-˜ˆœò¡�{Mwz6|lÄî]ÕΆt¬]m=Ñ7ûÿiíº¥ã­}PqGör8UÅóóp…dXë¶>ü!©i]ôÁ¿U5ò®Ý‡Æ¹´ü�/ž<ԙܻk“»¾jóèùÁÅlÀ’˜£Ñku Uz‹îGËVž?áIŒ' 6W¢ÿBØÀ1…GÕssеy�HÚÞZ÷>‰A/ôxë °µRÕ/¼I>ÌdX>‡ä¼¤ƒ³JX+NoÕÑ©]­,Æ®–ô¹!Úüâ—¾œ¿ìú8O{ã–Ù¬µÅ®£ßî]9˜›Ç©—N Yu§upT_èJ-êÐÖ$ëØ^me2ª¹¥bG÷–ø] pI2…õTL Ž hÿJ^¦Óé>bRw*X‹~C°Îs]Ml‚M³‰¬),}=¹p`ÿÁŽ£<2�~ü^¸0Œ[2âæªÌwîê,ö[—†­qüø‰éÃ3ç³9µû=0Ó·Ýš |ö{Ì'Ð6mÊ÷ª“½ÿ,}8Ž¡Œn�B”Ù1-ºJí*"e€’#§9˜^ˆ¯ûƒFÑ%\â<ñ Íemsº›Mµq;‹|ÇÎ]Æ>ñb(ü3Ùñ‡wT×µ½÷ì+±öìé²YsÈ_cÞl�`›ö­LZÀËQؒ赟·Žx‹ühÌú6im삜|"$�c‚ì;”“¿¯¦Ÿr˜=KGGXNºtérmðOäW}cú­o|£Ä…üt%ŠoÞVŽ}k¦�—gÕÚ|Ü×ó�jùû˜?»[mlßVj<ëZ’<êw¾øF¾½Šª¢SAx²‰\¢»ƒÁÉâdJc¸^·w÷ YzK€LáæˆZàþq¾Žåø|�0Kæè*@jL3.Ì/ǶcýÈ5r„�$ð Ñ¥p†ã(Ô*[ÁŸu]ßZ?8ËúYŸ•gÉ�ÆË�#?_[]ªÒç#Y·y|‚q‘ð?÷«²_î_ÿ(^¬“jr‹ °¾xIbQðnzx»@z:Ja£¤ÆQŒùT™dj´Õ°Æ>;Ò)¤>ügOšßð•ù°»À=%@ñ)Ü«hÙä_ûÚ(À¹wúæ÷Þœvg’â;rޝS"Yä’OŸ+Ú¨*7Z£#�¯‹˜vï|_º†ð]Ð>Ž"³�äœ3Ñ%9>Dpöq£Ø·'ùá©›ÑÔõ°7ŒùgJÜòNÇÞµ?Ã'�o|{íq׭ͳ¡NÑýN~Þ¼›n+¡ìÓ/˜ì+Ð[§�›Ù‡÷–šsíÂ7§ ®?ë8ÁåÖš™·§Ž&Ÿ{ý@rþñô+ÿð{Ó[oŸôóòk§ÚL1¢¦.œ›>xÿÝÞß8â‰øM?ò;ÌWX¨+šÎ(ŽMuõö]u€hL‡/6™ÁÞ×QÇJ°q ¾µWt»Žœ'wÆYôé[þ2Ï’.z˜%Ú¡vÚˆ§â·¶røfÚàüÃñ@¾zw/‰lZö}“dÊ(ì}ҽѹ×>£-¾iä+X,~Â/�Vºs߃� Ñ¿åjUãðò2Û¶1)žã`ÅzÒ’î7¸Sü]¯ Qñ_üIÎJf{RÌ‚�ϼק‹%ßK¨"-½X"DsÐÍî©äŽÆ§ñÁq-m|בBuO²M‡�GGÖä0›PÒ›¹öô1èK€Ãq1³1C“ÕÌmGÝ €7_PçîÍx)ìu2vö^º==¡eG@£ë¸eÛ P§q¬3Å�œ‚H–>ü(å”)[’’]o<‹ïܨJ< ·yû¾Ñ~ˆH¶F< •&äLlÏX»A;ù@yÙe›ö6ùíãùK ¤"HŒ"ëck žCM؃µ¤Ê1¥:õîÍ‹�ãΓÍñ/°lü²D�£¾�pªF@&†åD‘YË!;ĹB‚ãÉ·fƒ¬âcÂp—ñ"�³©`+ÁG9l)Àç|+Õ"‡:ßb´4‰N´�P™gž·ÊdÞ8»gÏê^S^¯¥ZªçWw%ܪè•%»¦*A H+U:`=oמÝenNp\ë,!ŠpêüëöFåÛCU‚ \Î'â âG†lû�á¬Ý½ZW~Z€¨¿�ÀëpäöóR€íQA>L‹vÿˆ90B`ˆEê �VUº„’53fKù ÖßíÞ€‚y=ì¬ÏѦ¹o¾”G @FÍÇ„Aö’ï2ÆÇ},ãóèg´¯hh2ýŒÑ( šg�mmŒ¯™£’ó�²Ú’’Ђr´cêÂÕÕ”E릵šöuöÓX9[¨ÖR‹Âh%‡§ÚJŠçö�JêX»¦€`Ï"\øV&PÛš´ÞŒ Qc2ß–f(BcÕúÉYH›2‚"¬ÖŠa=« Ô._¾Ö˜ ìú^B»‡´n�™„cz1�ó´jÜ�˜/wN™ÊSŸáÚú™á¾®‘µ Õ {÷ÌN¹K*Lûy~ýæÎ©ÅLÏ»}Oæô†éS§Žöìö°uy 9xìD¼\à.Ey(ð'd^KÑãÝ 9x¶U•º¹yÌÏÕ~'þÜÖ_‚�X dÍ23ê{yeaúà|FaÏã$£Z?ŽÁ‡ÎÛÏhM`æ.kë̡Ǩµþ‚,@KsÎyÎÍ„â£ÖL¢`O)Î�iÎ|¾v^¶Õ½\vUqލ è£à¡7g³íÌ0Þút!þO)Ä_œï|pžî²EKœsõÒåZ)’aEûjSŠŒiÜ?#wÌ%Ú‰K}o‘×·Ê0|ð}C ¶¾#¨ŽÓ¢ÃÖâà %µ¾ VU8#ˆ�Œ3®Ûi8oÓðò®Ñµ�s7p}�ùèü sì§ò¨>(“Wjó¦¬vG7ŒNz™³×¯ßh=¶ ?®]S¥uóÞ³{Ö’ _ ›«WKœ‰'É"<Â�Læ«Ä¤ÿÄØžaF™Y/2HbG=&Á„œ¾}«3­8~Úsüñ˜Òl9 ˆrËž ~‰ÞžÊÖÕå`oUæèäaÇ“ þ.O€kÚ¸XkÆH7j�ÛÈ^î;@Hô�oe´ ƒ­qd�=átç,Nþæ6’ÈÐDkÈÚÔ ¥Ÿè~ÁKˆ];jé°C—×j�y @êû›Ò×Z×ÿã7~}úý?ùÓƒw9ltn9àKîØóëWÎw½V×:“òö{Z‹ójVôݰz~H½ïàù»erälhï'»�Y´Ààes«=V¦)ú_)ë–¨ÍÚ–n{Ãÿ9|�N{‰öÐŽ Cq[5º³gŒNÉ‹­ò±{oÙ4kž¿—_Æ×R·+sÓ¾øå±6ßùηr¼È�?>Îö"û|®âƒ œi§ß¹Y�1´^dâ GŽOòßû�¦_ú…¿6}øÖ7jßwx$bü×ÿå1=þ÷ÿÃé'êg�“=^?ý3ÿRUi§¿õ7þZ‰}‡ªNߟq{·÷Î¥:÷mÒÓÃÍRƲŠ9a< Ì«xÚšÌwVÑjîíð~�4b®³äº†³°DÌ Š_ü[}ÈW´úòkoL¯~ê�áØ@´§^~µÊºïL×SÄQÂàƒ‘[G%ñöÜÀ©:S‹K²ÄªŽ ÖÇò˜8�Q28`¹¯É„küQ@¦=�ç}%�BÅÓóÎôòÌ­éʨ¶R[X%gÐ0ŒaÓx£{8/lÝ�.ôÖpVà3v CvàÀyÝG�©…<¯å¥*ª»UúÈ4v¼F�JGXNIXuEʸâ„[é~QÒÀëÂ>ð¬y¡‰áth8Û$Hu›†¢âŠ!Æs¦\2(ÃQU Þ}ü†t= A¬ÅkfÏñ}ôÀØ*tçÆã|ìÆG3„Geo×’yT¼�¬å“Únþã`¬µêþÛs&ïÝ»wºrætU ÙÙœNkWh/£?’�Ó­ãn�¢û’|ã?Î!›Ã@¤»ÕÔÔ"aî£Ðßì´}€ІÍk«úJ�é±7èÂÚŒÁ÷¾ÿfß›a6€¬í.ú]Ù#[*1•žQüÛž8ð^ÆœU±Ì©9³=º¸ 4Ǥê‚Â@ä >èíäÀÌ‘ÑSÚÌæoÏZ;Ž(-—=¾tÿ¸éK+ÙJ*6í›{K˜°ÇŸt$Å'Í^’<ò¸÷Ѭ„DÁ–ëU#ß•ÄÔ:IpŽhF—¤}ÅLéYcö­�nÿûÿøx`¿ô]ëÔý¬ù÷™±sš›Âò¼™3}Õ›ÝKEËÚdº¶“šcŸšçLÖw�±px§ï†îáž®›’[Õ®Ákø¤õißï:4†/%¼Ìh»Ö¶áñ}ë’o£u#çt|8X�p½.ÚÞ?ÖöÄûü¾4�xñűß莃 –¾]ÒÔ£þ=zäXíˆwŽ1Ñ%ðµm�ìEãý˜Tš®ß~_ãvß³gއýÞþÿíVf&`®Å*lt¯îMô}¬ÝnÂù®Âæük÷«n&‹´–<·± Å#G�@¹„¦�U»Ž{ôÈöåss6¬V¾p¶=ç[›~¸Ó™¹Ë_·¥÷wØÞÆ�ž=ÜÚ?ˆ6n\¹œ PÛW{€6aý0?¹²�L ¿÷ù×–²“öä¿Ûµ«®Dég|+\в}´ÞŽÎ† '=¯óž{\ðƒ\7Ï8¬ñWÁHÿÆì»óSíÝ×±býîÙV„ƒù~Øåd¾N–;²ãöÀ½ðÆB„²iK~ªaË“ÍÖ$°cö¥Gù²æªà]­àe1Fo¹ºKLÈOòÀ ‚´”G‡’‘o–„â|óªPݵ£àJ•Õóóu,0†>Év:~à€t�$E’#8˜U£‘{ lì ÏŒ„—ÖhTÑ÷ï½äŽÇ�Î@?xHÐ2é’Ìeïðwë°Â/B6ÃW@Ûv̱ñz¶Î`Ʋ5>$ï$çðˆ´ò#1f~îüpÜÓUÆÙ#†/„ݽ™£<"ЉIu¶Ä+x@¡Á¾‡$ü1º�&/nݸ=Íç›öZ{ràÐáôSÕoï—JÂxÜõ7+  MÖÍ'±Úò‹Ü—ô$JPìÙÚ'ãˆIø _lØ~°'fKoÌ—–¿2ã:ÞTáO¾Ÿ|u�ròßËFl%l ±¤´º‚övG~GÔ |Þ³ð ßÍÃüB÷*þ Gt:zäHÉš»ZCÝB"ñÂÂÂíäTZ§5ù|7õÞ|ç½Ó‡¤›ÏÚWóP(Äÿº-_ï¾:ì*Úwðqüºö\ûÞE}ÞdzÌ=K¢X[‚Ã\|0W %'ÜÀmˆaÏî=­gúaàŒÙsâ·›/Õ±‚�=ÜÜz:tpø?`\{*ØG^.XÔಠª,ø¤jœî$'T£-¯±/ÉïÅŠŽÞÕQ;ó¯?™×½î­ÓgGb+Ù ¯°Ñ7ð¿èÜâœuó ÈÍÿª¢Ý»§„�öo´K&×ú¬¥¼‚æwoÙ3Ú’“p=Ï·êìf~w<«ŠTwø—¬œùMWu¬OtÅ'ɸ6›çQßõl�$ù�«íÜ»s¤ÁÆ¡Ãú#ã¶×=T5(lðwßy'vj,�Fe“˜ïHüˆ’¥Ÿ´oÏ›_·–ÆUb¹ª™“-ç�ä[ç“Á§:î?x°íLÇ&»¢ø¡g$§ÃšýÆM4ä—Ž‰[jãþ‰­÷,ûMÁÇá#¦m÷K¨ÎW/h´”ì|’O•Ìæág•è(q‚ BÖX§ ô ¨Ån„I|þC½|'>}ñä íqÁ×öA*ÉT°ÿ2¹cî^ŠÍó#Ó…Ëç¦o”œò¹/•°í¾ðeG¤svEô;Â1Pd¹=Ö™Æf‹£]þ}1ªV¨½‹ÇóñKøÇ÷×o¤g<ßáròE¬ÂjÝ)±âÜ•ûÓÕëa–dzâ{¼|^|‹-ód|ovÈðnеdV}¼¼–oß¶tŒISm•Öaw> Ÿ£_òaÿš�C–HN6fÝ£¶tl®ãf†eægކݕ|@°6ä�€ÿ†/&‹ŸŒê‡M4ŽýHÉ ›¯gð)x±µ`·YwÖt]sº]‹ãTVKxp·}®hÇ‘�«ÉŽ'% þo­Ù+îß n` ýÔÚããÍÛJæ k¬é˜‹wO_®­{?Ûò9Š¥Åó SÉD… blïûé`Áx…|&©æ_¹œî’}xôØñ‘¸ö "£ëwf>ûN6\½äØÉ[é·ÿíß8§*}GÒþ£×ããæßýù ØJósÉöpŽç áácŒŽîîø¢dþ{çêð>]È–Ù=>(À,>4Úy¯Û>�zã+}Gì‰ý7ð\tI_Ù-ò,B…”øŽÌ¶Oò.3.¹ÒÞÙÛèèÙ\2¬µÙÁœhÄI ¾¢¹ ÓRüÛ]ÂG»Š/fg¥W%óïˆ.¤9ÒS@Z¡¯üÖö|o˜@ìH�•¤Ú[‹–†íܺ˜;aæwHÖèhÔ½|Có4SI/�ªŽ'>œ©Îæ€Ù`±d[ı±O’™ëëˆ-)Ëõ0Â\“}˜¬Àkt =ƒ$a,>¨(aé^û#Î^ˆV퇵XDxºu¼WŒ!Ö%s€µ!˜—’äüí8Ú€•£ ‘´¬ÝX`² ¢úÀ‘}‰sƯŽÌ­Ÿ‡¦Ì‡AiS£ª¡¬Z›†S"ÚzpÌ>i¢3Ç@Â7P½'_<1€lÿkpY}Îa@±¼öº ªC-F›Ã?~òîÔìØ±¿³1޵ ·Ëú;Üæm¯º¼³bŠUTnŒi,òݲìΞyŒùà¡€l›çìM•r˜Yã~™Œ ÎÎ[·nDp÷ú, ºfc„’�M° Oª_Ÿ#Mff¤9z;<ãTÅ/b™ží™öÎÇT­­L;ŠT[ ógï”�¶;ð³­jùÛ1Ñ£iÿáãÓ¹3ïN§O¿[ÕWç•× ay©6‰´¤››N;0[ßÖDvÚPÔí‘ ­ÍÆ,2'àòEpë7j_õzàä©— =è\âsCÜ2W)Xgq ä )•…ˆ¸éE,Z%¨ü¯ê'Bzø°–qµnçœ6WN"D(Ûk ½?®ÑË•Îd$à·7g`Ãi–“‚€ʳïs>?Џe÷ÌîÑ{ÍCðÁýÓÊ@ªºqB'šÌ°Yn| ƒn–jë,x Äsri-BÑnÍ ã`U$hºùöß )JRÕ5G¦,2-Öwgr: Ò:ÍÒ¾råj¡ÀR¾”?¾évCÈ­6VÀndÛ4A?ÆÆç$|M¶dƒ†‚lt H?ŒÇ(`ß”“D¢…Öy[kÇv÷Æå±§“—yG†2x÷f|¦À›ã­ÚØT¢Š¶OÞ˜®·’ (™‘¨Àˆ|d uöÌjŠr톇)ëd<êlô'�`ÑøãŒÁÈ ú¸>Ý.˜¼­¶³’`æŸÕ&£@Ÿ`«ùï*YcnùظÏy›"Ym.‹u‘€/�»y×¾”^Nùœ °•5eº=8—qH6âÅüU´;*B»ùÝe ož>8{¥ 1�.8¹KrhŽ®·Ç ©ÖLÆÒr{E‰«T~”2¼;ŒÆ§OË ”IhY²�UâŠìÂ*z‰®Rd–óUž×Vð~™†Î�×â‰pÂAÂU|–8׺jÙ5ŸñO)ÅÓP1ΠWtŽ/—›'þä{_LþÉP»¬' *–õ³n?v²ˆA…a°9_)e ™‡qd}Œ‰±DƑӪ‰85îwë‚|¶à07YrŒÈ'”d`À�÷é“~‹0 ëtÉñA zVr´yàg<1ø¿g/öùµŒé�;ü0ŠyÎ…âÔ! §£*®y¢S¯1ä0CÊz&ô2*òkðAßÀ°¶+:Nh#à °;e,™ð¾—R%Tç-_¼QbJóNvqÞ>ˆ¿vU¹�>ýÁ¦2ÕuD‘Q¶]ê¤"&;�ân¥Ÿ‘’9#íeÈj‰‚~›3€%g¤`+þå\´ß#sºßÍ{8É{&ø?œËý¼{Ïî®YH¯\/¡DµKsDÄ�‚‚ë3@˜w<œwöìGésáÜ™¾3—épk’ƒ§ÏUo~û[ߊ~[§v]tË©±'ƒÌ¹.wK(“1úhh&œ }µ=TŒ�’%™h}µÄÒf‘•·Zï®ô¸µà¨{Èlm ÍÆ™··ºæA­‘ÎÐKTÙ¹/ù}wæøIßìÙ±oº|éòô½¿üßLÿΟù ˆ~zðÀºdƒ zë3äi ;“†lD›œØv\ei�ñþ,HE~ãÉßû/c„58µtŒAß뾂Ñ}²¨%÷U+1ÖówcFhņÑ�þå?ò¯O¿}üàÛ¿:½püpŽŠ=ÓòçÿìôŸ=þ ÓÏþìšÉ¼ä@ûâÉ“ÉûíÌÚC¶çá¯}ú³ý[fwíñ´ øÔ:²ë{OûÈ ï$7–äõqöæŒîÃ2Üš7ù�GÈ]‰#ª�F6FÏ3Y¹:ýòßÿ»Ó§?óÆtèÈÑžUûÒ0ØÝþÝf[¹§ÖÓɤƸ>^Hÿ‘¥d» ‡ª�Ä{É}t�AÊU'Òç1L«’ ˆg%‹ À�*�£JbȤYëÏMñ¨sìz À×wšK×sNÇzÝ^Ài‹~Nß'›Ì™áè|o:pcIžð« œ/|áËUt®c€œ|¹~å|­nOtfâ�Ñ©ær2u ›Ÿ± zY·‘ØÖ7ãÚt÷Ñà‰€äÏštØŽÖg67ò‹3wæ ˜£ë$áúnÓýMIk®‚îC¤[›†<ô£‹È}“cÏ`ºMñ0¼ m¬D0|ÖU$Y­�#Ù4y.î6…#Ö¥9'SÁÃîà ýcL™êHf3šfûBæ6ý柞0î&@OÒUø¨­sÚ•�ÊÂÆ˜ 9”`­Âˆ£j7…{�#9øÂuÝ懹ÔAà‘(ÌA±}ë¬Ý°*R×Ó·ÕhÝ?iaý±?gíútY?®í}A�ó�! ýÖ›c¿Œ/ÜzÎÉZKZgúÓYƯ]+A2ûãÐÆœŽ9o§ç`Nfúý`XŒ-¤%¡daç΃%ç¼0öm8–Óûo½ó^¸ÿb8½èMX< üLúŒùEã�ÑZ è’ñ®õg‡çâ]ôn“áã&ÇÑžò¼ïÌîÅQ5KZøèðÊ«§ÒsŽÙi->žÇå‹W» pX7šÒ‚õRgAÚ º“®}6 Ѐ$;� 6¦sñÑL—?Kaÿ=ç6]Æ9Ñ”»¦ä±ÞŸ�/Úé¾è« ½}9ZŒM$À¹R5Á#†¼À‹³„€t#‡\4ÇA¤3ÅÖ‚ùèÀº°=†®ìÙ°&ŒäYäÎLv$ ›¿e”ØiŒÖˆþ»Ÿìò⨅y�ﵜc *éu A§;ÙëñE¶”T¸· ‡v�º9¬Ë9�Âo䛟Cd&ýÜghUpÇZ� h˜íÌ® S%ŠÂŸ£Ízc"×F«Âèk$¨t½ù›œ®AýÚ[¿d©q{ÆXß>Ïïw8(Ð Þƒç¶äÐxÜ:*¼*�ãûœÒn ·ú]"¤±�Ól¬­í7|u³¤D{m…?1}ùÇ¿Êö.Py½Îkü üp©ý‰F’EË>ž)xÉQêåÿ‚X’#óÁ�÷í…öéöHÕ zC»=n´iF’iž7ï.ôz#{þåO¿1G·’÷Fç:|Ö$JNh¾Ý×: \�d�ÖÝþ8+Y€ ½sX�V áùAWd™ûxfï9‘¼‡/ØòÛÚ?²I-ÏädÞT¥;L"Çë�0Þ�kWM¶=�V¢òÖ¹ò*.Ö…ý×´Æ;°¥DØ÷Ïœ™^õõégÿÐÏ›ùANKöÎ˯¾šb{­� <ÇNÚ]ð�Ž¿×øøŠŽæü>|èð�Ç‚QhÚ˲›Î'/{âïo÷ån‹nÜÿº/2ù�¸ÿ?ïøŒ�5_Ÿ�Y–ÃUl‘ÅœºxØHq$'ß.°’‹vTé`zÕ”cÌÑ^’È2º¯àxš“xt{‰¾Ù<#Ñ>¬ÅY�ÔNW�Ñgù8C†¿�o®ÏÛî†ënâ^ë²q[üû,~p<ÝóèAr¡µÓp$®uÜॠÂfùÛÒ[ßî<èc?ûR÷z6}·³¸7T¯h=îÜÕñŒÑ$ÝÝNºŽ¸¯gÐUìxôá/>ôX³6{¸qŒ‚Žx‘ε^ ÉXûÉAJ/lèN2ÓÜ8Ö‹‘¼ÖwÙÆŽœ_ëø€l�XŸ�ø89¿˜ý#i�­Á®ôóí»ëù�lÃÆŸ?ÔÑYÕÖÖyïV2æ~Õ±»j7þ~ Ä×§Ïž:<ä€ñ*pçB·¶Ý*[ÞlLc/â;¸&1Oþ4G‘å 768#¼ÏèL8…Ï€NÕ‰nØ–]Ç�'{ÛÑ­ ¢t {Ñ• È$GŸœëLî]› ®l^?}tæZz&]Ø�;{6é½ø´€KsV4²K¤žÏ~ÜX ÄY¥´Dê:&8¦u’còé Æè@C�n lææ¼ºÚ·:fy5ÏMvì(ø‰±á4ûÍ—ö¬9¯O ÚszSPáüµÛãzgÌŸ»PuôëǦëj¯ºzeúWK>ÞÙ÷×dSüáÏ|vúì�#ÓÁM;§íµg–¸u5ê“|³|&ãxGr�Ýý«¥ƒÎáÔ4Dt�žfø–~ CF Ãnn\Öý(jà›” ÿQ!oW÷BWø‡ŽýÞ‡ç¢I‰!‹ùŒoO¾ÿá4ÿB´ñáµÎ8í9T"üÕ+ùª¯M¯œxM¿å§"ÛÞ—ZÃmÛö´f©c‹eÉ)ø³„�ømó‹êB Ñv1zü„Æa°‘ÚþÑGsó¶N MjЖN}KéîNqló†]íWôèò‰ïðÌÙËÓ�-é—:Õ½súÒàoACº£*ÏÖDWA´;ßz¬äWnS§�%i,£ßÆ,i×xÐÌ|4kíáØ…ÌcëŠ18ªP2 œ!¸¤èLù–þ*r!!ø°$ðëÜÂXÍ/o( ’ìQA9üRÍñqÍhÕÍ4†�µm~ç£+ÝeV-ÿí7ÏOû¶­N‡wmîèÖ3½?Åõ�Õ :‹™ÞÓµHÀj%ÞÓ5 —xô(Þ€“Ñý'1†ÿa`xº=í}[›8ë†Öš5þ5íëÓø.´×:4Öîφ3?û,I½íÌf“0-·4çpvÅ�pÖÐ×u#!WTCÂKdú�ý$y|G8ýÞ \9X‡Myß�ë?ìËwÐ(?~�%!¬V]nÞ’9·î-y½µ¢Sù×ñ]b�¬-_'ß<, # ÏÏ^án˜>Ûqsë¬ÂÎ|3_àj }'[›©–Þù°®^›^þÜçG¡žb³3ï½3ýñí߈æóÝ忦â7�Ò•%µ®Ëa«.và±ìNxÒÁ:—…À ú#/ûì~í›ï†a%òJ£ uÛy˜_z�ü[3†ÓBUƒ®Gg¹ö‹<üßàMº BÂþÖäù½ä~4 [³õØ¥#©ªõ´~KùS†1_Íà�b Û·¤¿Z7vÛæötSúI\fù~�ÈPE²ÖÏ­ô�w«+³®6°ì£°ïÚŽ'eKÁÁô;]0ÞÌÜ–.¸tÿêtûfAçÙ Á`˜œ¯Î\$I4«Æ®§†d€Ä:ô«B¸¥n>|vÍ´çn¨ëÓÖÉòmÕafSë“4ÈÏ2v¦õ £–éZ‘~YD­¬„XÞQ¬‹ë‚p§XÜÕŽ3kÞÓ» °³·ù%·¦ÌÖ—³kï�í2}o]oñ'jkÃM$J6cüÍ 8­?ï ùådä…Ëu6¼p½c¶�–ï°ì£³ºª•ÀÞ¸Ì[rü‹èÙžÿ}ìýº‚Ýígd2OùíW ¦£ýÑ]¤ŸF›ÄóHjÏ%K±OöåƒÓm÷öÆ ÿZgI»âxööqŒ}¶)ÞV4F�HD#ðâ'šéô͆™«»¹ølm-øw Íâÿù*ÿá@˜æ~tƒ�t™àßO*6Þ–´5f篯û€˜‹ŽYÏóÃ,K” ï˜ë\¾£¥ä¿8�ø!º— BF-Ïu¿¥ZÀ?^œu­ãƒ$ƒ`–¦9d•gómð½}ôáG­+~Å×âñmk6ÕéõÜð*zE âESG�®õãГÁ$sqÞ�~màY–×�[#ÖJ<´”F/ó1¥9NY�J{]k×Îõ§µV´À¨6R{ÚƒŸþt›Y†IHèr [ h©×hi¤mÏpâ´)ës2"Š;`GOìš^~ý ÚÎzÈy/ êQgµoÞº³ «Z1¡¸{ïÁ|ó0‚ !Ú‘{çÖµˆ‚“,¦IÀÊút]íAŽ A( ÂÞœöÚÙŸ/Ð 4ªlt|ؼe¦ÜÏÁÆy2c@IDATHÊRi ·vëÛüM ‡gÍѵÎ:Z™ªŠeåªÄ»|ùÌ j�D¼qËŒ!UE€=¸­9$|b*@™Ó�`´>IŸöj¦ÄÁ6b8/U|E£ƒH\ð.fŒ-Õ^A6�ì ó;ÙyÓöú{ßú�!¨OBH›9ijûÓ�€wó²/*Ëå PõKëQ©À!�¹>�Ù“ËH¿�³£5éýÙy¢ ¾�{Ëc¤ÄFC¹rÄy›¢�ø)>I#ˆ´(ÌÈŽI)mmT}¯í¹ 7m(õç��´Ìc> B�i\ÑçPt”ˆÌŸö3Æ^)(ö|UbH† Âè^+Ñ>'(E õ :vþÕõÀ.` ®^F'2ÂÛß®�ãNéhcäþ”?~hs«„  œóͺ͂‚ÔçO¯À”—ýš�é*Ì Í’#t´¼/+p<“}ýIöÏr�Û5¼èRñ#g^ôæh�çY…=ƒݾ÷¥áhyºx«‡”õS;Õ•ñÒã ®œi™Å ¢µÓ�K燳o}km½7¤\çjÏ\  ExëòÅŒÍF4D@:úb# ¶7³N©{7›�ìØYBŲ,Êî³¾d›ç ¼»µ^z|úÝ®6îh"§ä¶ÝZÓÎV!õ:_fm-ÜŠÔP®Z¾¶/ [§�;äŒÚ<]®WU:AÊx¬öÌ¢>«Ú °Ö‚¯Ê@ƒœáx�öÈ.)œg�)�¹ z�ØàÌRç¬�Ý1œÖ‹IÉôd<̪Þe=>/[ëÉCãØÀ÷Û×”v{O!Išx=<«½zÕN’3ËX"Íž— ©¬½Œ ÷Ÿ+€ßÇ­}NçÆHA –0Þtbx’#àQßQa‰_Œðç)ˆ;½gý·äèè’žß¼8F¢›å:9PÈ÷kËM ÚswãF°“•À1þdXk_ìF¸÷Ÿ2ŸÄ#`監Xöàhó×X9 7%õ(G(þg`t“æÑ½úŒ,dð4ð§�~[H>SØäžLâá¤ï:íW3,µ~^ª^båhûùt¾nœ»ãy ŒÊn$·¤Ã8}´?tøàø®Šcò¹Ž@>:ßWåY³˜‘Îi>sŽ3€G 9’šÏ­[÷ZC´–a0$÷%‹qv9Ÿg$=ô» ¿ŒH:ŒÈA#ª €HsßWÅ�„r|Œ©¹¶NnŒß}�cãA޳ï}óë„ãu&í‰Æ.œû`:ûÑevɅ‚'ÇF5ÀÞG§=W¯Ž#!–®\+¨Vç—î·ÿÐ eûÍßh^ׇƒT5 @�΀a (h”snÛët¿#.®O¯§ÃWÓkOâU†Àá’8æå—ÿAŽÒ}Ó‰“uY‰ÍZ¢‡f5tÿ»o}èTrúÎÍkcMÇÙ_ø¸Ÿ’¶!~’’€F�ºÄÛdxt4îw™ýÿâ…OЋ¬ÏǪÚÓ̘³¤Bú_üî¾ÈAË�ÎmÓOýìg ÿoÿí_˜>óÕ?6ý§öÏMý¯ý/Ó׿þõéOý»zúÔëo´Ö+Óç¿ô£uè<¾Œœ»¯¿ñõ4}ã×u:þâ©ðÖÂtöì¹a´w¼UzM"eÒ¶O»wîŽ�Ä–¡ëºÓ\m΢1Ž„µ9<ÐÐpz&cdïûyÈÍdXÿ•ìx{zëo–dy#šè<ð@í• Z²)S~8:Vâý­‰{9jÈ—d"'‘u}”̃}$‹ÂdséúJ6)L€W#82Qð"&˜ÉÓÞç/Å„5’#Ï ”=(¹Š±Moн@}Ü[—–dÆÇ²zˆ ×%¤6„‡´î|n=øÂ‰É»§ÏùÇGÅ ½Ø]ý¯ÿÚßí¾W3ŒwNëà@Î<ȑřKÖ $a¦†f´Ò¬éš°e°/9–͈|"p9è´G¤‹Ð+¼-Ð9ð"ÔÜÑ!,¥UàÖ2¶Qø€Êl»–ãÆfx l¡1¼°Fôµ‡óU§.Ç ›Zg Çrȼ^×ßÛu�²fŽCÚ•ó3ûsº<ŒÐÖ¤ï &Ó¿øF;?c8õòÉqÎäJº]òÝwùÊ•éô;9´KÒjʃ$ÇPÕô-5 ø’AݯµÃoèYR Ǽ;ÞC3í›÷Ì ï·A°`o L?®µ*Öך4ó‘< /½têd:£6õñG—–²t~j.œK›ë¶'y¥dë(A½ŽDÂÖW· rçZç^ÒùœHŽÞØ�c.Bã›çrÌö>§¥q¹‡9Ìœœ¦ÑyócõKX¦ç4ªŒë‘À–ùÆô· $Ç’Vsœ€;·üö çÇËãõ%ʤ´æ”lµ®uȨêÜDx¶€Só5F”çHÛK–´vpÚ¦ö{Tæú¼wm ëÉ Go”ŠAk¼˜½µ9úÂtìø‰éýw߉[¬>‹¿†¯�Í0€½I =ÇQHøZ%YË-' ÂHÆð,ÞVÔÐB:¡#9„TXàsm[7Ek»f±g©”×­K0Y·^ÂK¸º„دÿ£_KÆ?žN�|q=ïÝ-)§ÎgøÞç{Qi¬ºã«_û‰é‹ùò·ÿÎßžŽ?>�<ùÒà§�Ņ̃ L°DåŽïª"¦—}®òÙÞÓÍÖ -þ3¯™úgÞþí½á¦í” ëïÀ[ã9³þ.ÿÏ“ØäfÆ_²oÇ IœJ¯Ç{+éÝ'ËñI²Ô^Œ„‰öLËUÅh„O@×®û�µ*‘}û–t\ïGA3‹7Ò•3|}ö<žd{ÀsäÍ,‘Hp°Nû™öýx2Ù1tvßà¤�ɹ¹‚;�¦ì¢p }‡¨>vhßô›¿õn�/Î×�ÓïûÒÓW¿zjºß}~p©ãŸN‡iªî¼WaÊç^>&tΩŽÎvÎé=poÛûá # ‹E$ƒ yc�Чxuå9»Ž^e³fwu=šKéÚWë0tTs±Ä§ô~šlðñæ�¹É42Ÿí]Ì1���ЧÂ]ëÇŽÄ#ÏŸ´2WÕ׋GL¯¾v¸³Xß�¾ñ� ÓJ×ðq:>gO…H .´öd¨ï?dkþä?™$¸ûp\LÒx%çPNdµ÷Ží^äCÈ 5jÎÖâcšµf ùL–;³Ú3€3ûþáZ§¾õþ7‹™Ö•°÷æ£ù™Ÿøô´oÏæðä7§3ç³ã.œºé@Á/m×ÑœhèzIáÎQm•ªüІß#;8¹Úɞɠö$]áØ�å|1³ày˜«ï ,]JÇÚij]›É³èh9�ô0[Ö\¬ù.tšs¾óÞ»8]]qZºöp:ôå½Ó+_ê€g¦G%\»QËY~”¾ûÒÑÃÓKu XȽ h£Ý•Dq%]�¯ÐìÓ�í¸�#~0ê5KXˆžÚüA÷ضi± ÌöŽTâÿ¥¿Öd'ŒÊ¾x”ܧ[%:¬;Üo|ç�‚N³£Þž¬n˜Nœ8<}úÕýÑ�Í·J09[ùÅæ;×zwœA϶lx’ÞUÝ+I)ö4 gñ D˜‹}ha³‹U!Ægí³½ÆÞWlæè‹çñ¶—€™ÊÍ8Ö£kÚ‚�Yæ[>PX'ížÎ�»Puhø çÜíhÆ#U¡?�ÿâGùåÖOΞÉg´Ô¸«*Wc*ø…_‹ŽOÒ K%À¢qUë5£þE 3äÍr 50y�·áý¦Hb�1ãv_Û=Ò…Í¡ßá+ò –2 Á öÎçÏ“…ˆiȱÞC¿ðÿ‘»¦7ߋ΋IÀQ‡ï™^{íå饃Us¯l™n}ý£éÊÅsÓG§ß¯ðóôÙOŸþ·ùƒžF¿«ý�’Ú�ìÃèÁ Vëñ�dzÑ{|Þº–‡Ð:Ï0¤}ã 29¾óoEòñÀddq¼Î�;‚±É_ Å|g¾3E¢¿Š�ª¾UXx :ç·±†ü}·oÝɦ^ŠÿÈÄ’¢ÛµëgÇ"²Ÿ$ÚX;ÇHnÆ»#ùþèGòô3_ø±�à9‰¨KÅNT`»£5P©¬0€?U`+a5äÿ‘¤0þ5ãÂ{0ºjZv…±;Ö…ÏgO€÷<Ú~W‘[@\|Èz?Éoùá‡N{Ã!ÞS�3|“É{އµ-×zý^ ý3Ü\P61oG¯­UbÁc-Ø»�jxm›Å'f1"²¯À[BÐ_þ5Âõ^k�î ïØLI© Å‚à3ÏAä¹ùÑ`’u–µ×ÁX?c„¡fº‡Í4“ŸÖÖCð3ûNB3Ú¯ó³Ós³¶ÒW/•3üiu»½í¨žMï!¶�6¬§¤kÀgM‡óKôرO#�œ>¿ÑßÇíy1lºþ}ÖúŒ#tÚS1þÒ½»ë²Ûó�9*™bÏ+[ß�g>­æ­˜ó¨”Ž?è kÏ ›¯IVó¯óÑ‹�¸Þ˜ÅKÐ ýÈž�Y‡Mï¹F ÅuHx9Ž8*’˜` ø¦£=Ïå«F»£U~¾rö™õà«uþüÀ}-ŒµwIpŽ}ÜÐøG—Zvjçr¯Éäx`2Tƒª•b Z#vìrülO­¹uF/Æ¿øp5ìÙË·ä�Xzä(%K=þgÿ˜/‚ãøÐØ‹# ]�$©%È¡åè0»kÛöº½d<Æ£›¬1‹Ùd± ¼÷p)_MòÄZKô~¤°¾˜„0Ëêà!±ÙdwÏ&—Äm¯{ˆÀ¼ 6ÚãWàÏSØ ¸tÐR²í^ ‡=(¿V‰SÙÉôáìèÝOÚãøg•­+*_ ›ZÜÐØ$‰»YC ÑË)=û;üüÝ[ç ±\k0Í^)®ÆØ˜|ÉNÞ–DÚ¼Ø=â‡>è~°½L§:ªñÙVºª˜SúL‹ÿ…hdf!SNŸîH�ƒ#Xû=qjz5<{úý÷[ëÔºŸä­×:¦8}ÌFÝQš¹…!ÖZ4„^„ ¬«娹w‡=…ÜÆ`tçÄ ‚�1÷b xéâ…‘ña²Ó³KEÎí-‹1�Éy�^Ü›R´®c»ŸÀA¨âÛ‚ ^î.ãdïÁ£=§ªÙ®ÛRfëÍ«ª®½³,ŽŠ;€×¹˜ËUÇ>* ï t ‚óê£ÞžŽ�xyŒóNÕºÖ¸¶y4&sÓ–}Ó–í)§²Ô µOøèƒ÷úžJŽ®ïç~oßµ5à#¯Ù‘aà §;cŽÏž l^‘jY…JN¾¹J�”ûÍ‹cÄ&›¬öD·ËôlïÇûª·€›¹øwþ2¢Rmÿ° îG­-n6¯…²0îW1u¿jlÕûœd#ˆÕú¬[SÕ~‚\{M‹m½ DUžƒŠÐ,î×n[€Ë¹d9ÂΖ<PÇøàFEx G0ªS¸†’¡ wå ‹÷P‘�âËâAd}»÷çÆxŸ ‹[‡îÙ|d;ÙÛa€%T�¹%0Ý~fHdLø>|�ÆLý.3i–ÙԚŠ!;Î[i“׵£�õµcÐ9` )¥;3’õ&�µéá¨-0{†@¢ñâloíŸvלƵ¡ïËÖŽ€©•®·V”ƒ ´u}ǽ AP-·t ®ÑãµÂh¢³@½}Ÿ9Ç( F âgÀvTx5®L¾æZ†]÷Û¾}óÈŠ(Ûת ¢!·5�ç¡ÈS§ù®C¯ÔÖ¾L­Z+?[~4€ËúZ�iƒdor`šÎéÞ¶íÁÈêÒz Ýßèú-›:oïáØvG㊶rüË<�k‚¬ñÞ¹~~ÚO¯ÔVd5aýèÆ­Ž^¸Ú3JŠÈ�Î@'ü÷=5-lïÜ ²ˆ8Óƒ›WsàÌœOC1?»:íVKNXo¨Ä³&Ÿ뛣�5µ‹•T0œh*»‚,‘©5èÝ[Æ`Å�Œ¾>ÚÖÖ>z¥4LlŸgdö|™’ö¯âÿq®UsÆ…qQß³�Ì”uœÉ Þ õoßÃî9²Ì �mÚ\ેKXÁ'OƒŒc÷èŒu$Å“†Õº³}äà¯=KUöÀî‚­­µæ”‚cœ|·ié§[�8Çpì/+�ah8SÙ_Î, KÖoךh;Z±ÈãÜ÷¶]¶+/Æ0ÅÇ@Äj (ä»ñRô‚ªÎé Õ;ªt^zùõéýNOï~ÿ\:øÆè¸r⥗ꊲ¯¶Õgǘ9·Ï~øþtêÔË£Z[BšUEü �z¥ ¼ Szg2_g™ñŒZ( œ¬Ýµk×0Ré º[›núèæÍÓƒ‡6g”�sTÓζVá$ÑÆ⇇µ¼Ñ‰FF8P4ŽChŸt�Ô´(äë¶ÚüIhùàô»#Ûx´•n�U"¸g”u¤SѶ zü'ziæ|jõZã€m#0›ý{þ…ñð,ó�±d�ÌûÀþHãQ4þ»ýòŒO ºOÿÈW¦Çò?ž~éoü•éäk?2ýÌOÿ�é—ÿÁߟþ»ÿþ¯LêOÿ™éøñÎ\´vjðÎ+Ÿz}úÜ¿8ÎIÿËé¿êýäK/O·Ãi á- UØÍÎõL†4ß0In¿œ0 Y¨ò x‡kèeý‡GûxÈ¿%vp–0>°;“w‡7»Ù´!ú<‚yÈ"‡Éa}{gФBsP¹~àÐá!‹g`x¦³µu"?n¥—“}saVX  ôœ#ù®ù¨ˆ4vó‘}íÙ^«¢´ƒX²@m‰Ž9E×Äç >ndÌ?=rl8$$=I.¬¦g&w6©Â ‡nOv<í9=.£¶¬ÿäÌ‚Ÿ÷wnŒi†G8M8&È'ç°?̉ÓŽµ™.šOã…W†C½Ÿý>œŠé±'ÑdON2‰ÏÊ|H ùÖG£JßZiYÏ8f@’Ÿ¯îãÌÎ$m'Ì;�¬²Ãù�ô�Öz¬tËÚô³k­3ùÄþðiUwñ¶cS®žËÀjÎ�`è¹�É…§9¬3ý2h£áñÑE†³­õF³óâ­3ù��-xn¾,u-é‡c¾q¨þø¡k�#¼æó‚ñÛÃ.r(‚@A72 ;çÆ{Ýbû2tÕ  ϶*ÖÛÇmfû§bD2 |ÁX4äÎ “´¬ÒpðGת2»}<=Ûþ7s¶€v{œ+ZV?­½2G€öw§¾X‡‰�UÏÀ"ôi‰fÍ{tè?£ ºz‰=möA?§—Жµ%¯Ì§ †“ft ál úñhs'ß[ÍqTä^øb5ÃÚžÁ�hÅýœ'©Ãv±¨¬úÝž„Ú•6§^99½óý·GÕå“Öáòù‹r ô,]TÈ�`élÌ'ÝØ;º–s_B† p8*ÑøBŸIdiBc½ñÇ5º4X÷˜”›_:I2‚Ždœè°ØRrŠ=©Ó…ï’�ÖðKûÙT´ísnîæð!}¯*@¢1,2s†XÛÖ³ëÙÀÖOâ`—fÏ‘‚š%;?Ê¡6°dßl>*¬9®E“’6Ð=ÚYŸœòœa×d{n9±cÚ‘¼ûà½ï—Üv?|ŸÃ(' Ûí[;{šìއ$Í…¼˜œèAÂQM'ÕçvçÛ©è:�=+ATׄ•°êód¾às;2öаð4½íµ~�Ðï‚vè«9´–­úx.ûÒ:à£Í0ðÓ-­¹d!Ô3È£+g÷ÂFgfÕßî s–LÚZ›^Ú�£l{‰K©_¼_m+ÁPõ§:ç™6¡wÙ¨ñ)™YQÝ�#ô�D‚DHr˪'çÚƒå®1’ud]û„¦ÙBö�cèÔª#žöüùGwhzÅ�{Ý-Á’CêÀ‘£ÓóoþVü’ ¾ñÐãÈ%¾$#'ýIúǽÙ�h�œ_#Y¨grÜ¡å§fφc¯\¼8h~àìÖÅðU�¥6©vÌ™\ð9'q 7ÖÝ5œZl‡mª —ä�ºúVýpzã�ÏŒãf.^ºÐzH Kî³?q<ÈבƒRÅÌ�ƒ‡F5Íxnû}µäÍmWöÕîölž»={âE‡V×ÿÔëÿæ­êóÁ_Ð�ý´‰>ýÒëÿúøÙ»¿{ÿ2 §Â°0ºnW;j‰ÃWòY†v¶ÃÌ>vTÜâ8–Tô ™ÿ$Û˜Œ“ÜÏv›Ñ Ÿ@r�Îîþ, r*"�†È¹h(ú‚!øfÈ‚aKGcvbèÒ¾ëgø©®±©éžÙÓ5ëÃôÃ)ý±=ºk×öéÓ¯½2½ùöG‰´’¡ŽI"w—jÃ[èp‰¾·nfóg3mÍYû…Ͻ‘caºZ•Ÿ.1m<ÐØšþú(g³ó‡ù$>#É føžÃXñþ fIñÉ¡ÖÔ>Ïô—gûK¾‘á3 °$|ta¤*›è;… ¥ùê.Sûí£Ç 0^¾V»~ÿÒ¯Wls,ýS‹î=G¦WOÞž®ÆKòùÚ—?=ÎjÖ:VPØ13:Uªå$gõà™œ3—ö ŒÎýNk/Ž6á2?ÛI’,ÙÂæÅÖt½µ�ÜB&ÌçG`³9{öµ—_œ¾õ­· žÎç«Û:}õËŸ«#Ø1‹†ÿÔtéz….uû{ÎøÚ—>On��Ⱥ…’mŒ}t[êBÀž §çur’@ k›YB·Áç }¬»@É\r}†³Ì']×óíÓðc”5WR(-ÐB ~êÄÑé»o¾?dÝ–õ[§/¾qjZÚµfúèjÉa¾¿÷ýw§sï½ßõÓô¯üÜONrˆß»yíc@¸‰=ÞÞKLŠ楞ùhÙî Pè+ÚSµ†ïù|U¢—™ÜŒ?x2û]òø“ÁKuBJ†œº~Ãt§ç›KÝTµ�â¨SÇŽLW ̱3þÀ�¾ž_<\?m�Ž¿¸iú©[7}çíw³ûO¯¾t¤ÀîÞx/�ÑÚ r®®K?··‚xÎŒ¥[è |+Z?ï¡SºIW´�g¯´M n\ÉúöÁ«©GS0kÁ£dùüú|TáÝÎT¸rgU–¯¿vbúèïÿVIV%Œ$÷¿üÅÏVs(ý67ýÜÏo)1à­‘x ²¼ôÙWF"æãôߌÎ_λ}XpâÙÀmMr­ÂQcÉž†?ÆŒ†Lƒoêi44ª¤{C@jµÏ–¢©D±+�{ø¾š 9@F"ŒÄÈÀ\0YfïID�>+ â[ö|>½ãÇM¯¾xc:wõfAþ…éÅãG£çÓ¥[Šæ^œ~ôs Ó·ß|kº°xmúìk/N¯½òÊ´1ú¼±Ô9õéÉÇùL<[‘ÛÆíasvië?—>oGíÜö‚/u^åc†«‡�ÛžJ2Á¯£Â¼µ\ëa>i4÷4yŽRGRMתœ|t¯.ùSö—P +À6‚`EIfþøþ…›ézk=ó †ßÂ`üÓ#q¸õD/+ùž�Gã"¡òÅVÑ…ñȱ“Ù÷Š›(¬Ê?�®¿ëÚ�É ½§%3¹ú¨Žp›K̇7øÛtvuN2Á0Zš'Sà0øb2­c4¢ ïæâ/â,dÄâ×xáâŋӷ¿ó­éd…"ºœ)øt¼ßÎ=F÷~Jë�Fð1lANÒyŽ ÁäÖ O6Ÿä²íÿ'u«ëšv�Ïž‡µçy8ó©yœJ•ÇŠÇ!�à’ ò¡E[ø€Ä„ju#øÆG@t#�ZjE M»Ø`;vÊ5שò™÷>{žçµ§µùÿ®÷5‚´Ô©œ¼û¬³Öû¾Ïs?÷}Ý×<ÝÏꨠ“ë“ôë ²²¯3¢Óƒtj]%ƒŒß0Ü?x°îu†<šnï¾W–·Þ|½êÔ³É+•Àû¦+þØE˵G&V`ÓºÍex=ÙƒÿD”{âËlý9j Ä”óùëøíì]i{�èâˆgÅ3+½W{z±µ–ö½’¡ÅptíhØñ[J`täÁ•«-bσãÕËW&!!LíÝìòô`χKd\˧®¸”/üݳéŽ�­+òîèjOú3ýÕ10’-ÉKv_¼Å=|ÕŠƒ¥0>ìó§ÉTGÈní3ÛüΧÆcÇ/œ$€<PpGö|¬ÁG" ŸŠëŽÍOi¯[·P>ã'ëŠÕØñ™æêÈ<1�Ç3n|(üs2¸KFæ ,KX¡{Ããï‡?žO=ùJ¦Åó½'›èRíâèpK|ƒ½§¬¥Ä'$BÙÏõ`-7O{Ûmãûæÿ¿Yoði�&«ð,3X zwùÜÇbmax ˆ¶î©É¼èð�ûèô¥öE"ãæÆDGMuÆ ¿ÿ‚ÏÊÎ>LEkÏšs°e?8b[¡ðŽ:+*þŠÿÞ+a„b•Ôàù&²}ÂÇUÏTéîñ_1D°³ØÒáƒìÓÏœÀz<áÊÅw³#Ð×êˆZ¾ ÄÐÓ‡=£uéÔñ0zd�Ká7¸¦xRL´Çáw:“\¿çø3’çÙ—aØò$=¸§çY+6›ï(¸=\÷ü‚çU�žH8M.�'+ß¾µOÿà7ÿ‡åŸúT÷uG úßÿÞwæôëÛuãR¸³/££:f·ƒ�ýgk“¹›2ж"b7 ¸•‚¶kˆt{Œ)Ìœs›á&È.ëàê•ZwVÕÊù%ÓX íf1LÎÊäJàp@,[ �'\¨ä¨�Z‹˜­›Sf,¼ì£{¾Ë)¢L) ]¿©j×C`ÙWV†c�¤Ë=ÿF™‰�xKc]®m‘ì¦Û·›c›qàð©åêÍw'{në¦*Fy¢]˘�u 07CUËmÊ#8È”"nWá~§Š ;¦ëLÙ= RD){0'îñÎ1‡¼�Sf¶¶ßÜû«%LpDf²TÚ`™ìÎc’Å´-ÃI µ÷«¸~çÍ!$ÕÍwkÑ#“†¢ ½`Åêö-Á£f�Ú$Žû�Y¢œõˆðqNG ÆH$ P ù¥ Ú‡÷VÕóm Î s†‚ö7��¢†Ù¯˜DJåöö³VZ CTLÎZ '£Ö„ßTS£’æ|'B hPF‰7DM˜ δÛÒÃàË´áj]iwA4Yê DÉ�î眣”Ë8i”yÖ*  ÏR\ÆF‘®}„ö—[–ð–`U•0â5FxÓ¥üvc¢^p¡}†OžÂk2U9\R‚ ¥ˆ‚ê^†ƒïv8—�µ¦6\ LS¢"ÆÁ´}é7eÁçÖ€QKgqšûÐpð3ïQò<#|$¬ñ“™kó¶GÛ«Œ�ÿ²Çì1Gœö6îäL>èlU÷Kˆ@‹«óc&U�oÞÅ*6zÈ(ÇæÁaHp¤ 0 óQäRhZèTéLö3%¶÷ž­’Fk'ûO¹¢ „PÃÇ/§´R¼í¥ üãÇ+ã{g]t”0/Ïá³v°�›· HS´>?vâùåÕè2¾ÏŸy+ÚÖÖêd´¬¹Þ[Þ}ë�èS‡‡ö=Z’ØÎŒ|’ò}ûfUºgÏ�A¶³¹>R–]2Y`ÿ´îkWk‡T—[nß+k8ÙvårçYfÄ�<�‚Ùu'N>?ÐuTÐbWÕ™sâ)ÖkáúFFÅ“ððö�«ãèÅó6SQäÜÙw§2ÛË»³?’°‚O8¶¶GbËêlåëUÛ=WA#U$b`ù(‘s+z ë(Óñóö±­n�ãÙ93\ÿOÄ+tÁ§ñ³+ÁŸó=ú­U§EÉbþa­ýÁeÉg_þñŸMFìX~ñ¯ý'9åŽ,?óÓ?³ü�_ü{Ë¿ÿïýß–_ø…eùòW~4'DÉRá“ÀÞþ™Ï~ùÿÏyùû÷o/'ÓÌoÔçÝïw”ÞáÅ­ud]<]åºd™ÅmÜò(ÐG0‡öz²Tã*®ÕÌM€UEÖÍ‚XŒUKÎÃ"«Ð‡Õ¾>¸ÕæöLmžñߌ@uþv®pÿôŸþ3ËóÏ?¿üõÿò¯OÙ>K\|†Ç/èv]:n™°’7Éaμqüà)'cî�†XÐ <ÏG;x̦ãSZbI²3ðÁ8ZÞû[__>ýù/ ¿Õ3ð‘ã§_X~ï·«æ{ñ µÞ+¡"£àf†âk?xs*S´–xqcÎ>¼§ý –>¥Tá¹®Ù]Ðk4Ñ ‡Ûãtüݨ²B-º˜Ð—Ș1|“KÎÜÝ�«Páœl¼—Á¦5ã<§=¢‡�¥€2‡\û¶Ÿ:ÉÔæ|o†]ÆóÉ$¸å^AÄñpz£D­…×Óy�z¯ê;mí·Ä³9VðÊg�®ýR:Ç¡x ùp1y{îŠÖ…=­õ’uø žFfÑÝÚŽ’�Vú+:ÂSÉØ±mZø´zLhàÅs_óе¯èÈ •� p¯ã›È3˜V2=YÚ>ƒ›SÛë°Cyã5:n*m%}h唟 Æ>&]€?ŽNcÜhD+i¼�®¥�dzæìËðɆ©š?õÜ á`ÝtØ tKü¬ÃÁ ô‘T�^ðm=›FðCÂàø‰æñMÁ[|ÕZÁÍwž¹‘cbäpßÏç›�¬gÇ'‘µ“œÚõs¬Ró�Tò¯Fîcî¤7£èþ“Ùþ4ýœ3NŠI¸ÃÉØ§3~—µ†’–Ó+ÀS‡¦MÉÏ3W|ó–,±–œÙ—l:ޝ7惻Æb¤Og°Î˜–Üh48Òcè#ÖƒO�ïÒžŽ>g³qz܉µHwëÎÆ^éoé0ÁžY§àу®haßÁUÇѧgC H¿[ñ üH.òx/íß푱8Ñ�£ x &ëÏû¯ï‡¶ÿ®÷· B뺞“êIºÎÙ÷Þ™ ÈAmñÛkkUmsGV}t=�˜ž)¨c^hÄ‹³pW°Eïöq{ÑÔ½9è.^Éoœ�ô�§UxwÇØý&¯‘ä�gÝ·^å¼#ŸV4—Ž2¶©@!Ü'oà«ÛúÁ†3Ž^�+�‹½SUð´„sÉû£›§‚ͱW9ÚÚž îìÜ�W�Žäš­1;z®oÿøÚöôÆÑ_ï£ë®„Ký3ú£ 'x‚n’ìÁC—ˆ{C“Æp¤–EÎ:çQ×�ƒNp,W�«mFü)Q[„ÇfOö<¼xoº){„SL÷…=U«MÕR0ÐÉG¾ƒ÷mXGt…þÀL`sdt8p y³/{›¬¸øÖ;Ëñç_^>ÿÜóËoÿÖÿ4É›Ÿªmò�ÿÔO¦³Ö}©DÓ €4ÞŸùù?Wbþ±C'LJ`ì�ÌÞËKW sžŠ—ïìo>§�®Ï%Öü£_ÿ¿>ÿG_ýÿ4ª]Ý´Ú²?øÿïàEûø¨¤¾�%ŸB8öòDÒ�Qé´¥Núý7ßêú§µúíµìþ¸ãÐ>ˆ¯ßN†põÅB€9<Ž®ÚÕIô"¼Îçø*< åÚ¯øorÞÃòrª�ñÁ>wdÖz~2þ m‚=LÆågøð«¯.æOýôò_ÿµÿ~øÝ¹Ë7–·Î^J—ZKÖg'�Ù9é/ýóÓìzÁ[víµsB¶è¡3S žìIÜoFÇì|^[»}dþ‘ïÏDÉ‚á½]g]+9fN샞Ù"í²õ4…Õýý1ºÀð ïôêH’ ’ÀŒ“ãÑýÁàûñ×-âí߈vé>Uã^(qúÎçm鈗ï¿ùv�õO,_øÌÇÇÖ×IìQºäí*y=s{ŠÄ–ÚÒzáeàl]ø+Ÿâãø>NÈUÖ=Íœo2¸£Co —6 ±n÷’M·¢]ÇJ({�³%ðÝÃ9µ¿úStùÿ­_®cFEé)¯¿•}Ú¸‚ŒkJ¯½ñÆòs_ýÊòå/}.xã¥üVê2DîÌWºÃZL,^#ø`Ûê2f<›Ìú¼è¢ð‰bm3O8Ô{|€µ;¾ò¾ô½ŠÎ�ªÎâ¦éƒ9Ík»»Š¶Ã~æ«_^þÚßüÅe×ÓZÆg�\¸ÔY¼ß½<[žËî|7ÿc?úÅå‹Á›ÝD–= fF�l2áô®|V-5ºAl8•wŠ| ¯øDuèàÅ7Ư ¶t~º>|êæ~²[“׳ýSÖÒUóÙfkoê,ûMsà8ßø±/.û—~µœuTûì' À¢™ ñ¸µhûF6îéεÿñ/±uî_%ÏöŒõp…/ìaºÃý’.öÕ$=4¾ °:2¦ýƒÉ[K¾'´×}Ô¸t][Þ£Ÿƒu8#ÑËgèH€ž.ù0\9T @€�»¡’O—•´ðåÏß©›Âw–O”t©íwß mÿò-JBûA~�/”øòÉO|¤$Ä,%·�ÉÝü„Úð^O*3íÚ›ÑäaûïÖ¹}è¿tëis _ƒ1tö…5µ þšMekø#¡dŽ­‹œKkþ3‰<ɰÑ÷Ò‘nå_á£G/:£ `ÝÏ–Á¾ü#Ÿ\îýêï,7³;%>^»¾¾œ-IT³)n]¿½8ßûgú«Ë‰‡çÞygä,½êfëöü�Û%¼•°°3„7KÕðöF²ñØÏÁ~­û¾¹ò‰òŠ%Ò1»má÷ð�¡ã[ø:¶$èöM(ÔØ#=O¢Ê�ô!~$þÄéu|0w²\ã|e:ƒ}Ö€ïݸº”Ò=FYjðÆÿ ¯æ N޵O[·*’HGÌf¶Vþ"íÄéˆw¬ïzñ²l½uê&º¥½V­oÍø£N¼t…ŒŠ‘ÀÅot©{)ZôLså/=ûÞÙv²ÑÒaé�º ?~¸#ƒOõ¾Äî|YŠàt� ÏJÄdËN <2Þ/a»Š‡L .¸íɾe«ú7&¡äê›é7bø&ߣâ~:ºªñ·ÕAï…|Š:ï—hqðP•­eólÎöÂÌAq¨5ó­[3Yï%ôð}°ËTæ+h9}úÔòncóYwSq®«áoÙŸ³_ÑBŸ9¦q4ìuôØÊ~rü1Þ¤’¯‘t¡¨‘>騔ýÉŸ{î¹phåw^_¯›WÇα"ÅØVÇ4Öú¿q {íÚÿ·ëåݺßM`;ÞÊoƒ.É‚–èFBWä{ç‡oŽñ€% ¸wÅ1ÑÇãüܾÛ�ëXÉw9‰õí½ýÿ­»Ð[rã;nÍ«M=°_‚„´'á:Á{vçG\Ùä_v: 'uîé¡S]ÌOmþ;‚5ß]I+ïÛÑ5;]¼’ýþdãVñ¯ lÃ3óf׊Â%ûð´nÕÙûJH†ìx4Ú;Úû‡ÖþˆW9fM1€â:ú==„ͨs*€ün´†¿Y%âò«Ým~‘ú²÷©ãš³Oâ¡à|0û@!àã'unM#�½ï¬XTK}h—փ›X“›gD?é1£Sô==J|…]³+¶­ø*ßk[m�D6 Þu'íîûÇ uëð˱oÛ1‡l�»sýB4ß{Ì“çO;Ê÷QrlKr‘:%Žg·f ÓåèŒ[ú}óyŒ¯<|qt Ÿ ÝìÇ>k]ô:òîáy|–GÇGñpÕ™áƒ*þ{ݧcœ{¿äªIB/¿òãèè“ï5¾|þÜÙ奯w¤8ûéð±£óp:DÒ§ÎÅ{Äèd�D¼«É ‰| bZ-:%»�Ãä9 pÇIß÷s ­ÅÐÕ•`!!»m[Ù¯e¿{æìµC)¿R((_Z–lms¨Ù1 ŽÖ¦C+Áù«µ&|öΙQXïµÙÉÈ;šÓþÝåh†œl? �– 6k-¥ø|ÀHã (çrŒ^Ž °€m!ýÍ*ý´˜x–�ÌèTö!6m¡Ê%Ü3~<Öcè1&*:#»BÕ¡–áS­2p¸`!%™CÀY*œ‡›3—dsplÞíLÕ)‡oþ Ör)–²ÿe”0€Ú�²ç¦e@ÈX”e"hHç. PL‚ ;ÐY›Z"QÊWÁ�kÛ�z[Û'Lüv™b[ú›ßb¯[OÏÜÒ9*wî»{­+(¤à¤@ÇP0~�w/ìÞU5è0ÏÖµ£¾ž³›ãÈùˆL²†Åi„Y"‚Í•�H­i·ª¥æ6ãQq¥õ G"E–2#K…!Ç8up$pW™£”V#œ;‚ñ+?'!MÚ/­À�F k?JFÄIØbÖ~k�$zÎ`mކ°Pey«ÄŽ/N{¡Q†ÂínŸµp°s�¾”¬Ii>ý1ñ£‚j`8Œ®ûv!ÀöïABÛš(ìÖHooEÁ�‘¡åIÙqí‡äJ"ã¦'6�Zµ6ÂuÚã4V².úÈáþk¡zª–›ž&èS ­}OJ Á·wŸÌfgš9#òéræÜ¥hæÎ�¶a·kÁ�Âú ¶$èÕY8‡öSjÏÜ:µ£Þ� çŒÜUo¯‡�í‚®ÆAÓžz^L@ï« Gíæv%è7…ëï^J�®±ÛÖX†z™Œ”ÍzµçΤOÉŠ—tûÌ7ê ®9ŒöwÞuÙKGö¶?ÁnÎhl|Njð1˜F‰MAÎù)p¸rÆ6·ö3ÔŠjÚÛÆÐŸÚc19¥Ñ;a' ½ªô(J=b²¾2øœÎ„¥}ÚWUнšìºæ¯¥’6Áëe×Ò” ùgá·¬`ãœG½;?N0W’‹êtŒß³´ÔäHe˜ ô‘ùüµ×¾;‰NÔÓ§Ÿ_^xᥠ…ç¦Òü|Ib¯}û›Í�ìI銆(iÇNOþÕ2®³±t߸}~¨õ¨(ÐÎóz�!Ú�ðòÙråJ23˜ÙëÃGO ¿zû­[íK†yü@¶èc.Ú'Y¹ÎîÄk)ž”Gg[Ræ‘ B’ƒ›ã(ÿð#cpТ)|1®Ùþ ”RBÛç>·/*‰É׎²SBÞ äLÿ&ãÞ=�@/ñ ”mo?+¼ìϬ_My—pèzU+—:K‘q²çµ병‹9Kw¦"‡¸5þ0^`m?Ȥ/}ù'â‹»–ßø•¿¾¼ö�ÿqù¹?þÕÑqþÊ_ù7—¿òWþ/ËŸøÿT8°Ö~®~?ú©Ï,¿ùµß]ÎÿàûƒûòA9ÈñÙH,ú¥¨¶GɦË׫¾kQ“ì>mD_£¸†Æ]�7 /ˆN%‰9Ú"©?ßm ‡ETuãç7›ƒVrô�–GuiÑŽ�„%Û¶1ŒsJÓoÓE$š“Ó‘*ÀÒ¢ç»á5íå¾tÁ;ÁX;²M’&yf¿¯8ÿ~ùï,_ù‰?ž Þ7FúÞZ¯“5—®\^ö?Ü“~›1Ÿ‘N'aìrº?n¿©ÑŒ¤¬gœ»KNc,N’üiNÝÝhÑ›P{yôº­^Ë{s2Ñyì»®)ªŽ¶eäεðoË!†C:rsu.³Ž=‹D€º=OŸ¸[W!òþ™=nd-Ùõꇵn/A±u{.œ³U[Á•S]áœôjzs@ v4Ÿh§=FwÀ†žƒnµ[s'ùÇ�vð¼ÙopƒžÃ1àozg\ó ã�¾$>0„‡u�ËøàwèHg&¿w~tkú$'1xã-:½K…øžBGk÷Ý‘'U5®§y6}À:À‹LšµµvšµNòÝè +Ç’k·B2@RÆ›—àÈžׯÜgê‡#<´x·2|æ1:+)q3»‘ ûM×û§kB÷>Îégô2¼ϱ~ða7šïÞœ*ï�IO™gô<ðs ¤ZÆ¢n%«Ÿ¯²�½©õûÍœÄ+çOs ~ð;ë¢1Ø­¡¹�ÍW\š\òØžu[¶“c³´:~”ìÆ­ –˜-�xP[ >³?ÿ@�ýpy Б5¥·’w¾³Vº üô·j��%Aé’ñ�§c R¯·þ.o=+XâupÉØ`ôŸ¦>°”–6G¯Êp›q1�IÂà·¿ùµåõïþfUš/…GÑ\É¿c§àÍxZ ®h•£Î~0Ç Ö€MŸï@„[߃Ä�ì¬ÇBŠ…/Ù>ÍCP«¯Wô\€Ž”Üøƒo£Î-_^£/_º¼üÚßû¥ „‚­î`#ËÒ=í7Ýï:�ïbßÞ£cŸ;ºãÆÝU…�N@ªŸ6„âtjF�Ñžôù6gæ¦c;Æía8Å‘&!¢Bô¡}<?G2 ;>ÎÑ{{s ÓñÆÙ¬¯dû(ðƒß¿Ò:Ž0×ùÞíÏc—qX­7“¿épœM�–|¹V²§¹ºö‡ý(¯?”‡¿ÿèžÍ–ÒMk#ØsÞKÔÛ­èªhrdýæ’Òœ©M‡¿Z;P Ìû§·†+ÙŒsiöö®Î«–|²^ †Ñ#gâîÑúÊÖ±^ò‰Ü˜.íÿ‰þ§Ãý .²]žæ×’,…ŸãÉ|?C¿®m0QOr†¾\eç�å+é[{—7¾ÿæìµŠ$|­~ùG¾X ú•åôÉ’ów]KT}èøþ ¶E 9ÜÇ›èF=³ñ9^9ÌwÆè¨|[æ>ÌŠlŒG›«ð“„ y§}¶²;Ñ/\O_Ц8¼'˜ÕØèË ­ÐMÖöå/ÃlâuhH¢3ÿݧ>þáåG–¯}ãµ�ù±ÃûWznrDbðÏ~õÇ–Ï}ªÊÜìÞë&�:=KÅÙÆv”ä+¹l->ƒ_ó=áeží…çàæÄ®ÇSÛÄ[ë¾{'[:XàÖ&Œ¶÷Ûñj�º†.«}÷µŽ¿8vâÄò•?òÅ|.‡–ßù‡ßêùxbU£Ááò­ªº²ñþì?ó'–?Zµq[¹\‹¶'À´;¾�ü Ç¹ÄÆ]Áïþ aôz]ñp0n>ð�Ͼàp²ÛÃÕqƒ¹ýÝ^òt?b>¿|H||¼kù±è6ö᳟þø´jýÝßøÆÀc~ßµ}[–Kµ¦�ÿ©ŸýÉå+¡ùY®^>ßøé=Ùá›*"8š=‚ŸmIw„Ú“$Ú~_°Ñ<ÞÍÉÙ©Û›/šâ×Þ¯"›Ú1oüò ð òw<{–¿¬}Üž "!)ÃaìµO|"È7öÛ¿óõáw[ßîöæVmÍé_þÂg–ýÊ—N¯ VGl¤Ó ¤m©� ¼Uá|òã\=wô·ù,�#@ú‡~ù¬.ÛŸÑÏÞŸ/˜¢÷•¾µâ1]9°¾žM!yfw=ù7 * _ë~ê'¾Tw×#sdÜFvÕžüÍhåjö\ù™¯þÄò…æ¿;½öæÕˈ¦¹ç'©2ôø±:Å3tí#3WÇ*¦ƒ´8ꇾ€ø}>­�áUk  ã)O«&ïŒ æ£au ÙB7&ÏV~EôåšžÑzé<Š¡à„„~ûdÓ‹/ž^þìÏÿìr潋gE7{J¾#‡®Åg?þ™�.?óÓ?QÛúS‰¯dkÕÕ)úÜ~Kj˜N7É_z©ux �\ý'8Ÿ5ûhMxcä:£=?CÛí÷A¬<Ÿ�‹¯âs’�Ïçzã�7‡§¿wîâèðü4ë�è<Å”Š#ÅP( ižñ¼jcÆW#A$�~?à¥+?Ü¿f¦°ÿ™§5òù8FÒ³vÙl =uÕÉ Jòá›8E;þ t£*aöÄ–º+ Gºñ3öf?Û;~aôaûˆtÍÎ@IDATÙZ¶w$Âý 2Ö«V&é«·“}Û‚l=Yɇé|ûOòS£÷\¯«œ5¦Éh»âÏJÌž#’�˜X à‘5ì^ö�.Oâp ½¶¡ëIfè(†ÍíGÆÕ+*ÔQ(y«Â¨öâhrá̽÷†Fl¶¢³•Ï¿3­óÅ)háÏÐUíh6™#Lç;6uχ)î;îìÐ5\€ÏW£Ó“uòAK7K@‹ Æ^h äÿû½øœ@´Öß§OŸœ¢Œsï½›OòÀøBtqúèÇ?^Öy/¿þÁ[ÄŪk/\¸0Íï�>ù@èè¾§O>|¢ýÚ2É? L%äŠë¡ÉíÉždÞŽ]Çît¡½…+ì;º©$ Iüü´:ªá«Îx7ÿÇs’±ðg=Üzô¸$@˜’ì!3àž{·m¬b)Æí£¡¶®$BÇ ¯K^âÓÂË�â5ëâ=m&_®6ì:~Љ}àøxÀ›évÐÀxüŽéñQ+ˆœ™ÆžßlÉuh]Â!6ÀÆOYw¨‘7€‹KYÇèäøWø�½ŒŸ{hx¸¿ÉEþYzN͸Ї£¨ö†6W|§¹%jÇwLhˆð'¾¬=Ënjnž®S<§[ñK?©Øþ ‹ÛÅFœ÷M>Øç.jžùa -:ö�Œ^4+KO à>SÙ³w¸ù};Jrg±¼­§ÒgÒjÒó’©Åf˰§&ª½i=ÍG—ú�„As°×ƶ/x¦Â;eùÎàÐ ¿ ãéwgpÈè[9ŸRøúìFYw*´vc°¯¬X„{/æ!�ø,eâdÎ% ·ÖÜÆÙÔuû ÊÜkîæ�ÖQ¡¶ÔÙã�QhÌAågÈí”­;ÍïúÍwC¨�Ñ<9ªÀP_-ЬŒûkU-1Ä´ÕÃÜ%P^!»j^ÑŽ¥\ª@JyØvh”güa*íoä@¼zS–[ë�¢�XàÐÙž²m­�ó´ŸmÜ­­Ê§1#Iõ·pÍí›ëU\Dˆ'[{#F¤ÍèÎíÖ¼ÑZÊ¢�h Î#LùI4ÀIqëvŽñ«w»3œÏ׺ïQŽ tóš€éÝÉ ¤)3‚‰*B–²2 HÖÒK5ªýÄ8�­‚[¦›ó.(bÛ�ÖoæwdpÞJƒîòa4WËŠ&ÐmÍý5Ž—œBÐP€1Äóks¾­ ÉÆ"ØìoÌøË“Ú©ï®Âþbè—ký`æîÌVÆC¸­:öq™GѶ,À‹áõµsom1ÞÆÀÎè;ЙY2µ¿Õ|/VÁ÷,†Â ½‘2 Óhϳ Ö;çªê{aÙq°j�wÎ/ï½ó½ii#Kw[ë�ì{ay�S:ѵ uzcq–¾zò¥Iȹï¸yk°­âða´ÊžpvKI3Ù$á@°ºU•íåÚ™ìoÏÂNnÂk„l{+ab çp�ÂD镽‰¶8¼fü¢@vøJ9ïÖpiU�§bêIJ8¡ó0º"$œ÷F8bÔ`-þ0ã4{LÈIÐH1 TÂxÍõ2«ïñYqÚ—á{÷rH®?*8RK'<ÓYÑŸyà™„(&Í�%"WçiŸ3¥¢äê�²nÃï b£ÉÖ‹lÝ̈"`òÚ÷'˜)ì=BŸ{ÔúŸâÁí¥¶üõè/«LÒ š"IÁ ß�ª©›‚m÷÷^p6Ÿá²3SŠn”�)@¬=ãê•2žÞëœuŠ4%‚ðÔŠ=@L ¢mÚàèd¥ÜàßÓZ°¹�”Q°e<:£ÇosÓæ "‘‡sG<’�b›ÓËsA ßd²¶•ŽÏ3ûô¬ÕÙTé�Í_âh©ûžÜ|$¾ Ë®N5[¼^åïÝ*ÊZeû�,8æÓ5ÞŸ‹¤4!F¤„R¼YE,Þõ,˜ÓM…8W.¼—üYµs|ó½K“аwOúwv€$œ½éZ*eï¥'¢#òT�’ng�TU„ÒZ–’­8²À«ç6_°ÙÚ½Ã_Z“>à>0s»Ì=éªå7oËÁ^h< íãØ{rbYƒñÈ1vt>Ö`”L)IÓ÷Y°o_²#†ÞzgO· mŠ×Œ JÙú㙼ºžŸ/øÂ©#ݳ}y÷ܵ©eŒ;rêtÆž ‡ë“ÏHn5³W â z÷,/Xj¾ô ŽË12‰Á쇓œ¬% 9 Ë’WÆy\ÊO˜I„‚Ÿð¼Gô æ]ÏÈe;Î.O•q¸†X¿„ Ïß™ž9•vÝ ½‡O+^鳜�Áj¸3œÖÆ_…ÜÌzJÿšSLcæÀi�ÿp¤ë˜?9+·Õãdû5ç,§›~ï�%Ý©ãÙÒu$>Îǹg�ž9Á’êWç^Fk�³Þ^ òá¢y7ŒýYòÑž‚š«àŠÀ^{m�áJ7ÍZgíÁÕ9¯ëôÚ† ¶Z%î�³p?õÙÏ-ô+_YþþßûÅÖÑsZš$[°b·p˜K•Üt¨¯£‡·ïh4Û¶ÎaöRÇ8üOeSáû*’8…{KB¿oÈùŽÓO²§ý™3h[�}!o¥ã¦—}øcµ®¢R�Ág?÷ùü;‡†w¾þƒ×rðçðÌßs´dO-@÷¦îÓ·QÒØ]ñ…¬}ògk¶&rÇçÞãayóé᯦0/¿©çó€«xöç8F¦sÈ™×ȉèŽN¼³nr7²�ïÖ}Å‘57$kKb$‡]Ë–`[ ßn\GÖáMð3ÞÕXÃ{f[¢¥žÅöß½Ž?¡±È<Û&õ_€�ÛÓ«gÀ.vÅ,÷?9óßOrûÊ•«µ¬>¼|úSŸœÎŠ·›ë$�‡x»“I'O�`_º~eΧ•X†æÓF È]ËG” MŸ»®KÖ[=n5�æa^ªåù±èm#ƒf±Œp�<Šú3Ú÷ýxñwk†'E ¨Ùã=à&x*‰rst£U©#fœÏ®p‡“}_þª—³mö†ìÒ w7ϵ*³7Zó'?ôJ6×ÑxHAè*×óéqãíhÝo ÎOâY‚²T¦ˆ¯¹¦§Ä»8´á øª=4ßÔÛø[ïÉÁwy0‘˜Zrw2Œ�”ïiÛÎ|Zï')©vvD×Ç>òáItDØV`jK7ï*ôÇ úŸ(áZRá…sïÕ6:OQóÕb{Ïu&ðÄ럄bƒ[$]�µ óDwêSuäz¾äŸ‹Ë¶à%ØÇØ•„º̲éVÝÊŠ9 •#øÄ_j<òônñ�é`lÑàð�¾—Oþ�1â’«ÉE�>Ü‚~«N uyäË‘'a÷£z ÜÊ7¦ûðÑàÖžŠO) "›¯Ð¬èYøÙèIìªþ™ãžŠÝž<�6ó1¶¥íéÚ…ßxóRþ´«c'°aøV$¢¢�½áŠ6Ô’ó$(Š}ù•—'aêN:0¹Ò½*ÕÖµD5õ³ôFôé³Ëí—Ö“0~ZûÖìƒ ô“Ÿ­ik?æCÁ—Éð Âç=¿woëÝ¡E:¼¾s‹l«x¡=“D¤û&ÌQ¸í ½ça¾çù,Ý݈ÓL¬²½³9æ@FÓs··f1¼K§c¢¿²ÉŠÁñ7´ƒ�ÇA^µo©lñq ´&™BŒ@¬sè*> &΃·¦õu® ‘nÎo àÈšÈnêôº|Ä�«V·wå(ô6p|¬5‚9þhÐ(ðÏV>’ŽOà¯uÔ±ÎTOž®ì'ÝÖÀIL`­ùJ¬6.Ü…ƒhrü=â|}LJÎ I“ü“\þôCÝøðFVDW“\ØÉøáÙí­£‚wgÛnÚÔ¾vÝìq¢ÒkW E‡õ%6~rL—.pü4|øÕñ�=*ß›ë™Å†§6Gp¡ÓêL„oò�ƒÙýìÁÅ÷쉧Æ3æ,öèsb”ñ ´l�‚ۻ괌¿©Xüh¬á¹ø`8D?cßòQ…bãöV¸ú‹/-Ÿÿâ—–¿úÿüÏ–Ÿú™?±|öó_¬ˆíÂòƒï}gü#ŽUºqõÒìüÚ,7Š´_+! IÖ x`^xèóL¹n^e”·ãM6Dmr^2=´xÙ±mÙ¸³|ñ�þÄò‘OþHAÙký”¥Ö 7çùÔ6Nà‚Bu4Å{ÿ¡ÝÍ©C©KP`ÛÚùƧ_84Jå¹£C‡BŒ¡{'c‘±w½²ù|ÿ,çChç~þ½÷&£k#DœL¢˜úÖk—¾˜äö9¯¢ J`–6Æ9ß6‡â†°$ ܸ®ê£XesIî©í’àšÀÃÅõÚÄðÖ(£�Aõ¥wZz|úh ñù­±-&DÎhΗŸì'Øc'Ÿ�ø;/úþÕŒã(!"Ü[ö>dˆ´–#ÍÑîÉC껪„`P¨bŽ{ÖF^‹‘mUºjB!Zkî2gn`®/þdÑ]ª’éIsüsñ–SÀ¿òKÿ]™ô”“+Uï/—л|MЯÀ\ÏÛ›�…�Ròço„„#v­:`œ"”g¨ª©¸mþœMòqØ�B£¥M0Í)²3ÇçôõIlÎݳç¯WMëlÞZ�¶h-´RZ÷á‚ÓˆBB€Œ_Žîç.\)#»,µˆ^ë¹SÇÊÈ;XõRÏGO:oƒPn±2à9Ñ0>í8W ÐjYŒä$'ê9ÇÊã„Äšœ5A ¬q¾ãÁ™Aæ(ðûΙó“]jï®\I€ö|­÷¶>Dy»D>L‹#†`Ùß<1HØ—¯Ü ·‚QH²§yªd&lvíL-ŽÂ]ÌU¥+îÅQCR( 'A|Y‰{öìx« ®xôòìþ•ÖvqÙ¾v4Ú*`¾>r¨u§Ü䀿�¼_l ëØs/ż|{jíÒZḊP•o¿ýÎòèîõåãŸ(+¸ ×+ýÄré½3p}’¡ø4 Þ¿qe”†Ã×Ê{vöìTF¬U º{#çË·÷ËWî�¥ôœ^ž” £j]fÓŽ`¿ië ¦ Æ”Ê3ÉO§ä24ñ�”àM;öŒ²qûê¹åißç^xu¹”Âÿ¬s°œ‘î htJýœÚþI‚eÛë«Ã·$A¬%ܦ¥wÊ0CqZå…¿¡{°ìª"ô�=�ÿ`ñëu·ìíS˜rL’I]%úûñ}Ž©è!ãGvØæø¦}œ t|áNI—JZ!�½9½á5A7ù&ñÏp6<𔵄±kMúz´{³ù ìë^™ï‡Jva,<ŽßÊlÞHRútØ×ç*È7å`àÙ¿{2³"�ƒeïç, –[¶–]i{y3Gǘ;v¤Ä‹žÏ`¹ÿ’4ƒÆ D„oˋק#(Ñ8e‘"¢�ÊþùF‚“s“rG80f †È‘ðŽÝoí M�%NP뢸€^A°n*;ûþzÁ9²¢ñgÎUÂOTi��¤2œóuŒ©ž.æÎ«2®ó@R\)ò^ XJͳ²¿>LáiãÍqŒ¡øEœŠ`=‚ø“9 ·ùεto¯[NU�ÍÍ6¹'xiÝÜ?ÌuÇá¤jÍá\˜ Þ`„Çÿ0^ çĽì�»?ù§ÿ…plÇò+÷ÿµœ|åG–æOýÜò+¿ükËüþ‡Ëÿé_ú…9]%´cVN¤×}ï×#Íu×ЀîAOJ¼j œü‹çqäKNô°ÍÚkÄŒ8èŒ_4q4yÁ™qáÜ{}ww‚ÞèO‹6®®9N�Í}ærR¥ð‡ÃãG �Dç·«°§Fø!»–ƒ>1�oß>>åŒL7d¤f§dp?Y.—øñ4ºèŒEŽ\ZwtŽIÇɸ‘�=¸×LÈ´qfr…›tÙ DÆ;ðÌá�U¢µ�íìeJ|ÿð-óaDôg2ê­åk¿ýóÜãÏ}$e~Õ:îÐÁŽ=ÈáÈ@ПT½ƒvd>‡#àƒ¿â}{ây{3âé—®Ôf±ý™ç£§äºÑ?mf¹„ÿw�¬e]8îõ½šŽÈàX�·ŒO0¸lYØÛ½ Û1jÃS­ÀÐÝ“’bVÎ÷ŽŸ8R[×`qï¶ÏÈ‚’¯ðáiãXMnÒ'󼧾ÂQÀ°álfw¸gñAr„CRÆý»Öîôž’£‚mSmº¼Ðƒ�^nßè/œûx=^Ž×øÏÄïÁ}Ö <ñy|d„2¶8ùý�ÍY­A�óþÞ£ÆHÈaûðYí ›Ã“‘ááE8`í=xæE¦ ƒm~‚½œa0µ®ùÀÀÃÂ\ŠçÃslkgnà¬jœ£À^àÖáÚmUu)(ŒÞI·5x®:8UQþ¸F«¿icýÙÛéÂ{Öp›~[»Ÿá?í›uúîÀyóäüðûd/­‘ƒbèÝµÍ ž2äéŒV¶çv Ê\g„»œÙ*��φSñ±£îΟGüå@ã£ß·ßzwœ.ª^é<Ö']ðvŽ“§év[9Oš³ a0Öºx¬í%ï¼î1}µzÿ¤¬°\ÙqÙ~�èÙ·sÈrd[ž!²ÖÏÓèsk6‹õíîl¿ÉåµúæÌìÆ·o)pjdZsÑÕð$D¢0u�y�¥Þo-­z`ÊŽ›ä?ðh9Û |x¦ó áu ‰6V2EÝÑalBÕAW;æ`Wö;MâîÐqÏ 4Ñ¡§Ú�$í£DI4úLµy¶‹ï&øÚÄú&>¼rtÑÉnf‡?Nn¡ ú�};¸¿dr‰$á6�^Ç$°GއynkûP«W÷¦‹ ¢ù;Ù81ïáAl•tá¹ã¼K÷+I—]ý¸ýú ØaÍãÄlL2�.!ááa¼äbúŒäøÕ£íߎÎѼÐûxo�m;%I¡ëmÁï\ _Û ñ4´~Û»à! ª}ƒÎQ•LÊ�@–á)© íûÊá�nñ9ôõ'÷²]vædìÞáÑÍYpýoþÍ¿¾¼wæL•ð9ö+4�PGï¤ÓØctóÂ:ër¶ê­ôy/Éûü�èѼ؛sPßÛ;óó[d£cLüž¡2U€Ç1y\Cñô’ÝË[o½�­÷‰*2>¿üæoüúòá�~tùܾ8zßó‡Þ9vù©O~l:ý±+85ŸE£“@ƒ¶á˜M~ÿåOÉ­ã(ìzÈzÿÁ?üßóhÿk:ƒ þ47oHûà9öN«›—ìr|ô}I2‘p´¾Ó‘v†_ÇkÑʽà»båÄ•LŸ½TÂbÆ‘™vNãÝ‚ˆ¨ø~÷ð­àÍöƒƒ”/¾} ßé2ô÷n_âWÝw,{mAzƾüytxN ¢›�üê̓œ�®Û[Bþ½„%÷ Ø:ö‡n$ ²£gŸ,0:¼%<Ð^ÿà«S8BŽÛþI!]8k¢Sp¬’å®Ù^2´‘RSõ¹¤“(Žn ц3•Ÿ•,ó¬gOÀÞ„ƒ‡u�}×û=ÙtøÉöIt*PÖüÁžŽî˜;É™ºµ%Á²¯£á\|7³iÈ ~Ç�“M÷#UÉ–+TJ–uß(uí>C�Ù†iw�y¢K4I>¬øIŸ÷ÏÜV>Wóni8¸HðøÝá ·#ø<©Õ9ùN&6äø)6ìýï¤ÊÇ‚!ô×À5:С|°‚*·ë„µ»=Üs¢„ˆ¾$ëÖ³iÁ}_¾¨M«8 SUòÈÉ`_ì˜sÜ{ßôfÞ½ìŸõL‡“Љ&�غùþ¶u$Üßš­x[þ× ú™’öOä{ì»­›Ó�“ó9AK,[–cùלO?Y'°±«$nû5U¥Í?mxl–-ÍÙ‹üÁÛÂ%ÊKž#ÃìÜU7Iõ}Ïf¶óó,Ȳeoò�hÕ�‡ž|ʯB¯Ýž¼�çÛéª7¯.�òå;™-’½}½ŠL>)~Ë—_<5{È7RÅó©SÁOó±)`´VõÿöhkG2{#_ͽ[æ�ìi.ø|ÖæÜÒüúnRÚ+ɆhÙZ›ö¬�‰†$[>M(x”ï›ɨÓM¨k¶6®.¨üð'NKIGL�¦‡³ Že§9ºåÊÕË…•ÌíÃmº1;ÿ¶ Ùü‡{ýüfÿƒáÈÀè}Na _ ®¹ôuó?È �wèÞÒIñE¸:ÈÚ׺WºÚŠ^È^GJWŸ-ѧó¶Ù¬4LDÐҹ̑@hA×]5Èá}ùŠÙ ·Û—'é¢óSÊwãáJÌ„/ÏÖ±;|Ó},·ôl´�>èôÄW<º»›Ïø,>Ø;tüþ,Ľx5]n®|Œÿ国Ÿ”nµoß�’r®•À혎VÓõ7¢¿¡jmü×ëí‘ â$ñ*ü]€güTMÞ?p5Ypÿƒ¾ÜCŽLÒH4£»Ÿý¼óA <Ãt)1h#^¾¥õ­IŒM_¦Ã%m·D˼ì¨Hò}±›çÞƒ•»ÿÖu�ùâ÷áàžôyßüú×—SŸv�¢Áo¼±œü ÿììŸtSôbÝñlÁPEŽà„ïoSq|ù\§CK{�ï² ïÞƒ›×å³Þ¶£. Þ.9öN¶ÇtÍIœlΆ°wGòK\ Þ+™º¹ÄÝ Ã›¦³RóöûÊÅs­/}§;ÐX¯ [‘Öxòä éNG,;þpuöo~Ó‡øÕñª_É;q§+ùõØVp]U:™¬£²9 xï+žð±�~8Ýö\É/�u�]Ùhd!žœ¬k�7 ðó·’uŽm´~¾�üÈ~U|=loŸøt¼{ECx,ÝTæ#iÀž[±8\ql©”ºJœZïÜv�rtÞ`Þ-‰Ó�n‡ Í·òwJDZïYwßßSñ9|š~«í;�ßP cM‚³öy4‚?>ž©SŽ„�«ñ¬»wVÅh@ð™�Ã?€/Ð)ö_ëÛÔ{óÏ[¯€/�ÆŠý€ {Ýó?"sëê”�Ãÿí»'ŒÙXæbð�¼a“ƒ†…¿­t/ü,=ž,jÝà±Q`X"‰’0èywò³~:=\²ði�trBåÿýh†ÝÈÖšB†d¿²¸È7Ø´kê|õ‰íÄ+èþÎŽÇwÖ³%Ÿ&—ø„u»뺗ÿÌ^†¸³ÖØðè(¥øoÙepËz%ÊH4‹ÕÕEÀ¦|·piãÑ�lñý E"ç3ïîi%ï»àA6±mÅ-u`eËK|Ø›|· fÕÍ!»>6~“oÎ’Ú£xŽãT[N|&ý*ܧ׮—œ£ÐboGˆYíÏÞsæýÈ¿öÖ¾í–Ò1/‘t�T¬æ˜Ô�òÓËOþôÏo}uùŸ~ýW‡F¿ùµ0ëhcžTU«…/cŸ Ó>ƒÐªho®sw0N·•½p5tˆyB–6b²[cXB²&0Om²…””ª|þ,w¯LïHjÅ ÂíÁ„„1¬™ 3ÖJIæø¬ê»kdÆmÕ²$â$è•Í¢E€Ö�×bÞˆ ïbxêˆã¢v»Áíc~e9•ƒâÜon2\ÅDUB_)¨ò¸ ,=U>$={ñrLfG™]eØfàj—ð™ÏKr¸º<¼ñîròÄ #”÷$tœûq9Çí’(®Uù 3Ÿ]î¹åòòê G—S'�¨ÎñÃ{¾V\2àU �#BH»Ê~q6#HGÙÊ/¿xz¹�Ñw÷Þ£”¬µ»× ~×¾;çðýÎÞ]Uñ•…+ ODá´¶HD›kt`‚ÈÚ49ïæìÙsU§×N¦˜˜ÀØk¿ß™?þ¡ç—OâC�Ó»ùpNU¡ÎÅàTš_-x}½Ÿ›1ý-kGÏÿõß_ö^)‹?!óò §'`DRÚ)‘×sÊk;ãœUAѳ9c®Tý«…?Ó™Ç7–·kþÑ—O—…zr©÷ïi¥_RCð¸Óu‚k[2@ß{ïüòîùkUîE„áFZ-×n,}åôœ¦š~gLYµ»¹ òjÆ«íÅÃ~?zh9}¢¶m)#ì·ìÉ Ú´|ÿ;ßXÞíX„eí:ryùT™4÷£ëÍ›3n7‡ÌîÚŸ¯­žõ>¸}±ó•�.;:Ïëéã Š”´v®…÷Î_�ñu¦ã¾sµ8J!-Cöù—^Y¤ès~þÞ7´ÙÚ˜3U^ÿþ÷—ÿÏ/ýjÙ;?µ|æG¾T�íL‚:?ÚÛì^ùØË˽öyO™ÏÎZ/p猱Í[Þ9saùµ_ùïk‰³wù©/¦€qŠPç¦?ÛÔ5‡ORÈöè»6Å8ûÑbp×–'Siòõo|g9ÿî›ÃxU\mßznyµŒß—_:=†åÅ”žcÇ^c‚¾ê„ÀèJø_g2Éà‘6/”Ú;>Woe4܉ý‡ÚŒ¤4ˆöüÎòÊóÎú+Ñ¢9nÊÀÛ_ %úz™ôÛµÀ­Ã…‹7—·K ¹¡‹A›»ífŽáøÍécû—¢¸à�m º PÒvFó*ŽÞ={y9Wrˆ³ ½®—Dt3úy¥=жý(C2|Neh‰ŽàÊÖöîJÂðüõZº§äâ„ܽþ¾/;\[1U-Á�ûÈqp³yi¥|h_A¬øÊ;ç®T кããZ¬ D¶Ÿ?œ;¼3žÊyÏ>ù`eä 03ä)8£v´‡'OJœÉ Ka#øµŽ9I¶sílþ ª;Q7 ™|Ú£9ÿ[+½kÑÚ(çËä�†uòuÖøHÕhψe¤” جŒ†giÍœ7Ymã´Ê’‘:¦hûJ)%̽gTé¨Â1¨;ˆcÉȦÄI@ø@a¡ä¯çTâPrvôÃû)9É ¯8iì©ø�[ @ÕÊIšdÁ‚ó�’' ø;¿ùkƒ+*îìj›Ãùð¬qNœz1càüò0ƒà|¼_ÊÍ¥Ú7m{¾½ lzЬ)§Zp¦äq&Næk4i"ã˜V.uçãbÇ. yÿd¼Àn¨:}1>ÊHa�¨t¡\�²m��Þšõ˜�3: b|‹'~õçþl�ê}Ëßø«ÿÁò¹¯üÜòóîç—_þå_]þÿ÷ÿhù×ÿõcÚ�*iê«?ý³ã̸ðÖË_ÿ¯þ‹øÍ³åGìÇÇ@S 7•1Rü—Ã�³og•ìó{9:¶wo·”¦®ö¬q޵ÿÎMe3ލA=·a¡ìì•6îèÀs8#S'goFÈÓY‚Ï*a ñM:‚énF¯Â,–^Óƒæ¤0xöƪíüåU5¡K’Êü]Ýr >·§Î_÷ã1³Ï]ÿAи:›¾óëo‰G÷Òa9£¦sIsXx)\ÉIÝu‚ì៤Ÿr‚�c«ñFïè~üúa2ŒË ‹7Ã[Ý7Іµ¡ÛÕ~†ŸÙÖlk@çðHí»­ Ì«Z,ße’|ϼ[âÔ׿¶œ(il—=S…;=qLù›]ê“gékæGí>†�Ó·ÍÝsá |pŸÑoÑ8þo�hÎL.ð1�÷ø¦—ÄÍýñU²Úëg~îO.Ï=ÿb0Û¾|þ _Í÷·ÿæò±O~fùìÇ>Óþ%K:Ö‚íäeÞžø¿~±MÍ÷«Éý¯¯øÃyoºp}5ãÕì~h3é¹mÒÀ_ó ÕŽÇ>ç$g_OáGp¶ßt¼lZTÆ‹%Ïâ�hÉ=ÃãˆnEö†_¢!{F8ŒïÀu}Æ�7ç›G/VNï"ß¼±SD¹Ìª2$‡høœƒzwö�N>Æ£÷.Žœh÷è�È—'P?¼6»›lš.Wáëîì]ãKúSR¨cô tÄ)¾'¾í¸06'½‚Ü�¯pHÁ½ùX‰Î@_+˜¥³Í-Á—°¨ëš=µú�„Ç�ÛãÏ}€¯âgÖ5‰IÑÊšÀ�ÀOöÛÎìN•d`ÁiO‡â4_ÙZÁ‘üÉ)%ÑSòÂÎèÙù«ðè~hP"T3ˆÚÇø~Ïgú4]v³}pö™ýš þ‚ü‚JªÂØVòPèHôˆˆnñžIUj­ù+ú\=z_óؾ]²è½ëñÇžVͼs·*Ü•žIÿ’,cNŠ9$†Ñ öW*àÃ9mè�|Ë�cñÞø5Žml nü�“Œ?lk–Íñ&<°ãuôˆÆ¶ö |ÛàöYrM÷Ú¼�U¤28Õ{öóTÍÑa‚‰Dlöm_„³ù+Jî´¹uôžiÍ~(8”tkrN°^`®›úo%K÷ìÍ6n:µ<�T×÷x0”àÇ2þéû`Wû½K"Hðø -±ùLºÏ6×5Ë>‚“#6ÉÆÍ;óõÔ© …ÍÁD€ÝñåÁmAWE.’û'ÈOÚ? `¡ÎCŽ@òBGK�<àœäKðT5(9ŽÏƒüˆjƒox›iºõìmCûYü>ÖÐü\KÏò" ¨� Ú¼esþ�§�ƒ]2 “åâÇ_|U][ãíü¢‚kd`O똀|Ü­ÿxvÞàn0„`£‚q- Ú´ùñòOBgø>¼„W«ùŒ=Z!Cm ¡ÒݸsMŸÑ·Ùžè¾ á�=¤®ŽT]–ýñ-åÍ\Û©ã­ëû;ÝMš ¿º‘€ÊžìƒUç�`¼nàEkkû–]pÅ è|ðû°$ÇÍÁ§Ï¶5Uì’ýÞ_ů»Ÿ –¤ ^èøÑ2-‹»v`v@œÖe¾‘ÿÐÝŒ¢_°:zôdþ˜|pùOѸBAûº)ýV€ ¬ž´og Œ*üÓ©€Íö¸vÉÓ�döÈóø™ãI�î¿?à+yÐéÚ»kÙŽ>tŽÓ öþ]ÝÓûúlö»y"á-œ‚9 \Ñ3¬-MhöžÔÝ‘ÿYÅöƒ»�ãïÆÙ$é§ *ô�0­êB�êë—Ï,áÏýùå彺|êÓŸ]~ðÝׯÿƒç’?x‡ ·”´¥Îs·d¿ ¦�Ÿ½�‘è>Ýv‚Kÿfw(JÜÕù;Oó^½UQLvõØÓïìØí›Äoñˆî»™Ÿu•`Až=ž€.8¡C1>¡Û% `Ÿ:]êÊ`�ð]0Ýq!ìÓ_x!¿ùáÙ{pÅ¡™ w„ë‚ìô‹Ñýz®ØŸƒ5)†™}éZ>Z6S÷ÝJø=û~£|�®©¸Rögé;“ibelÞ'6ŽŽÒΟ;;| œ·\½qµ„€¡•xOþoÇì¬\b7Ú}’?È/ÏÅ»ºut¬oÞÄ3ÉÏôZxõþˆÉgü¤àF/ؘãz“¹]ƒ?+ð¨]Û3ÿxœb$¶óκöîˆÇé¢ü8½ÿQq8áxESü™xótP¢%#‡¿¤ëKðP¡>øÛ$MD3lñ§í³×Š'±qÙè2]¨kà‚n¼ì‡Ãù\$œÍöùzðÃPGIJý"_’åK¼€¾‚ÇZã³9À!Ž4‰,ö}‰C’_ø‘ <ÐÒqKEŒŽØÛ¼5~ïn{‡�-d]ñ,v6çíüŸùÄ^S†ÆŸà»ÑðþƒÛ¯b4ÙƒÎoæ3:_\Lb‡uIª&Û%H®Õmbmÿ‰åÄó�Б¦—ÎWÐ)Ù$Ü”gb¤[ë¦xÛC íùYZ³äÒW?ôrp}T÷…ëË­ð϶H–Ù]âøí3¥S×o]‹ñ¯±‘c€ö}ËÖCc_óˆïÞ,ÞªM0ýsŸÿÂðôoëÑØ¥å¥W^�näø™¯À‡^¾·d,÷g'(Ï ÄXåQÓB1'Û® ñ0쑘ýÜ¿ÿƒï.ýÄç‹ðXžÖsëöµåûßþ‡\{þ¥åìOĵºÛUÐíz’Ë—ªâN°8\Uj[lñgÞ~=Ä”%—3Êö‡”Úk_:÷fÀÌ�Bñ¨H ›\ÂÍ›`RºeêƒÃþV‰÷dDµI20FÑ ñß½‚2J™Àg«€6Ʊµ¶Ž6blÔ–š Ä”·e`«¨žŠïˆ)Ô8œ@Ò6P_úvÈŠ·a›»OàÊí¨õÆŽŒ½)0�žÆ–áw¿JÀÎ|(UùY Õ!òæy£J °†À�áM«‹¤*U&GCVí­]ƬL-œÀÒºÁH†Ñþæ)(µu#…nûáNÛ±*b0­ ŽqÌnz°¼}áÖÛælÚеÈ8Ë#e6F¸2š?ap‘ÉAˆ´yhð ã邜!�ßõ‚†˜ÎÍ‚¨‡c ›¶Ä¼nHªOKˆ‚�£I0©z笒µ«å¥–z»s¬RödvîËxzÔ™W7Î^ZžáååÏþsqùµ¿ÿw'Ès5ÅÛ™ˆ„DSFEIVÙkͤý8©>ûG~¬ä‡½Ë·¾õµ—CÃXU‡¨Ú³$¦©æ´”=mÌe3>ìùÛ«.`Ä>j’(¦š­ê�S�s´k—µåÌk9±8Ún•é)h  Ï�‡µ—O@S¨(>Ã…ì%ñí'�E>>È ¢@a²ÎqÖ'…öÙÓ-Ë©‚“±« ‹ñ¿ùÚ×—¯ó{áq-–Èizgyûõï//}è#Ë{µr?y¬ h8±QÿMÕb»w$Ì!­EàÝ*í.®§ 66%àhA9 ò­7^O� wŽ!PæÇÃéZÅHáU¼® Æ½åíw/,úçÿ¹åÏÿÅa9óî›1³Áõ;Ëí+çË’{5¦˜,\?–‚p»uÜi�‚3·âßþÆ·2FÊ\sN¢Ê¨uFë³Ç’]bR)÷kÛcÞO 8ÕB±èu•ßÑz™`§j+}»>ª×ðwJLøÖ/ýÎòÏþÜY>÷ÉE/µ½i¿œ%~#Êò³Óê.dhl¬�­ üƒå4ã?¥=ÐŒyèþXÎ_.±#Yg^w;^Äqy´àŵœï„�ór´oÚ[À7öÖšðh‚�s2!?ÊòûÕ bž>Õ|Õºýv<ýoœ ßV "�ˆ“�¼g­VP BÙ·#¢Yî;uÙˆŒF€á7›¢aü¯¡d©V• …sr2*(¨ çë°á|\U÷âùw['ZÂgT^Þh_íR=â]íyÿ8WU004e¨›×Þ®¡ €µ�CœQד4PÛñs§0›ózxw¨çíÝ[.Å…s¹!&0¥Í%^±9Z'7îw¿=ßÕœUkp¼üZAòÁ’…À^…[ðýέ#Ë)Æž-ôÝîyãõß¤å …ÏžUpìAë—Àp3ÚùfŽ\´“'O7·�ÓZJ��ñwî½wÊÄã�’y¢U-ë?öé/,GOœzÑJoùžì£h*ÈóÒ˵7¬Úd2r›³V[ë¿ý/Ç8Ú>É´F·ð…Ã�â�ɺWI_گδ»u&]Žr(d€•‡—hYF~3tfÁ£&ýãÿ?8�Ÿë¦b}ä#'µ—½[½ÚÀÒË“(¬h˜ á}zèìÙû¥û麞3Ñϼþ{ËOþä�ŽÂûïþ»ÿ×å_þ—ÿò¢íËÏ¿¼¼ú ÿêT¯ü™?ÿ—–ï}÷ÛuCg¢Ÿí;nÞÀßýÑ·ÔÓ‚K£ûõ,‰a½G 73°dЀÂך #Eµ 猪 |@6³`Ǿö½wÎ.»KΘd>ò#�ÍmD;±€†æJ—Îd¹ úT²ÆK軪Hº|¾c4ë®#�ʉº_Ù=âŪiµGœMïIaXpR2Be [ç8äšÏƒèŽ$`G¯“‰ÿ�L¡÷Ê–¼åùý7s–¡m<:!ýpOº¾C‡¢sà?*lW•œŸÁ‡ÓîÙ5ü+'þ Á2ÊѽV%¬½03ùN-ßß>ó^`ì;<­OwÓgGof´<˜¹J¶BwÌ4|‡¼B�ã|ï>ï¯>¾–.QBH{&X«JçI o ZÕ3·ï²(ÚÿtuNU0VÌ™nÝúö ð­Ê‚ÆòÎÙ*�“;»�>Å±Èøä,G{kcøíK�·‚�1Á‹“.Ùsxe6u¸JÖ>î{ÁÁÑëƒùJ±NÏN)Ù±iÎøô�TkcxÞ Wu=Ñõfœ±é‰‚„ôú!dãŽ^Ðwgs¹W�3˜SÙ¾7ùt�<Ì›½gmL�'ôžã�c<æß:[¯{‚ë3úQ÷h÷ŠŸ­`1Л÷8&eÆ2.œ3ŠkCÆ^G;pa#>>³ô–¾G`¸íøžëÉœî=wÕÆ.‡f´�_9ñtÕ´/?”zwy'=€#zÓ–µª©Ê@O¿\¥Gž`Œä7Éd_Ó�~Ò=ÂasóÌܳŸðFÐAÒî㜠³Ý´Jç®tÁÔŒ`��ÅùÀùÓû;ÑŸÀÈ®¸xüÝtOë…_ðŒ-ˆñ£ËÌþ÷uÇÛí§ûÀwÌ(‘;G»ê(]ˆ6Ï¿X9µé x ç->4NàèåC%5nÎÜt?[=}wÎ%�ö7Û¯0�öøÞÉ�H”$‰ ´½=xs‰¾Áo‚�Ü(q@ðÛY¸·ƒÏý>›äƒn+\µ?ð–Û9A½àHe§d†­ .·»ÌUì�ç Üí¹'�àUñL>½¼ìRú#šF/tí½¹™þv5ý.æ?%<�ƒñNûŒçKœ¦?]¹v«£®®ØþÑ¥í7Î,|X§#;Îñ‰ö¼ÛR76:#ú˜„®®ß\À¯�;‚CèÇî•x°Ú7º¾@Í*i½¹âÀëíJö4Ïb‡ïÍŽêã‘ hDÂÐW#£?ôù0¾)H-�Õ^\LG7?6 ±r˜®h¦Îó$k˜çŒÕl=:$¨†Wu>n¶pšómåÜz¸Ìy¯ ëí·ßîìÌ��Séb‰Žßúæ×{V2­k÷Fo+W8¶°ÂÙÙ¼ÖÐæÿÿËÿYkÓ:Àóÿ—ü//ÿ¡ýÝ´fNxæ8ñÃzø<º køM&Ù*üô#ÛÌͱN²¿ÈþGëñ‡w(]0q·†w'ëùíÈ\òg3ïÓšÇÊ;�,úG_�ÿÔ$ßC¦hFw€®aÆS"ÍMr»P"Ñãñi­hA"ðíËÙI®ml£hd’»�¾ãwlWørñJÉÀ%èòîÒYŒ æý9|ý ÷“½t<­AzŸìnÏ„${è~»³?Ñ ¾…Φ•hãòÕáµø íéØs�aL×òZ³:•Ü`ð0ÞóàVötƒ-Ògø¦8†ñ¤ ¬Ç‹ö´’¼|)=ïbÉàÆŸ@Äà7¾°¢c<€kgrZRÁ i£‡dÏ[s”;pÇqcâÿ+žŒf}ìcN¤JžŽ@IDATàøòQl~V%wcá×rüšûð¤6äÚM<¨=Iž­52ÛÞÜñ[gVo­cß™÷îÌ=t>úy: êÝÛ’?\Áqº~µÇO€©ù=NvÀ6¸£+6:F“µ§ô�†hºÁ!XÎOtè¤cÀ3w{Ž„U�V#�ɈdUsÊ…Z±Eò,Û÷áæäh8˯ñFº>]6ìèÞp#uS²X7Üzú{WÉè‡ßf0µ{ÐÙ–má>›^´£ý$Ãu½ì†K&Güf¨d|ò¤â¦®!ËðT‰¯�ÉŸº{fi÷œtäVOF ÿ{ð$¬�ÁÍ|lëÁ�"²~¹d§|̓Þö5úÌn�Fè4 Ùd;ó‘y¡kvîÀ§÷ºo�Ï XÓÑÌwt³àÿ¤ÖøpmžüÞ�o­ÚÏúšK"¯êv áRóç§'œGm†Ã ú�6áÄ�üo“¨<Ð?�jA�x~/áÊM’ô«(øšâ»è||&#G� ¦+}‰ìž×óWà6÷½úmð‡ÕMÃdæºI¼ëY†ÞÑ^KøçÛí£ü×+›ÁÅŒÑü’sÁ.8¢Á>À½`|ÝCƒáÓ§ulj÷‰ÌËlÇ^í+€‹¿ùìZzèÕø~äy»’ßsmï[ACÄÇýÕÏþ­üHƒë}†§Âuûð(½’žohlÿ¢ƒH¦·Nö!ýàF"n”˜è£}ùüø°Ù2Ï6‚ëƒv¡Çx:ûâPø§c)|ßâI«n’{ìÔÿ¾W«‹Wv6qöü–øhË ®u�*¨Ä§~ôYk�È„A÷§áŸï§»C|H¼¡åÅC�†·U—_:›í/*�iWI xä�|Ò|ô‡k#öw–þ/üKË—ô+éøuÑ-huüÄÑüBÈJ‚joí—ä[ô#È+ÙäqòQ‘žÂóòà'á÷®èJ"Uî| ì£Á»v�l9ܾ‹#8šN“£öØ.Ï®ÆCçYú`iäÔ*™5Ù2¾¨‚Ìlx¼uñð½n°ŠbÆ�?á¡^ðaìðð%°F{ñµà¥ãÛùqǃŸ(V¢UºqÝC÷ßÔ¼˜L<"ÿƒ˜ˆ ¶±ÉIŠÀvšZÙ9�ÆG-~µkW]‘{¿�ÄIz¦ptã9ûJTBÇ™Ö-Þ§øzý€õ•pTrÛG>ò±d�ã®å{¬x2Y /ßzç�á�öÇYã _|‡-‹9ž=waæ'áB?çwbï£ …ä�D:±"¼OBƒ_Ë$½ë~÷íáf|¾qèGæˆW혣WŠ“U´" ȇþÁü@\…�œÆ›WNÑUôÅ.Ôu›½ ÏÍC Î茸QÆó­Eð˜$»qíÊr³õ‘»ŠÁoJôžŒÁrrý‹)éžÇ·.'ª8— 'Îw5ؾwö½)xÚ“ êè‚é˜ÎҙƦd3Elü®Öü(šØ(¶èÙä ¯±¯äåt] ÙFÆÆóÕ!úDñ2Ià>üªn„ªø§@ëZðÅw%)>f¯ö|òA¢’Dq¶Q jõ]·-Üj}Š£ÁEò09èâ}ɧ8Ñ¡SÛ\ñ¬…}ñÉ—οÝu20†cqWö²¹Ú/?`$Ö†?N²z8º§=Ü­9ŽL­¸È“ü/—ß{«yŸžOö“‹§Ÿ;Þ:NÍXŽÝÙýü “ŒßÑê7¿^ûÅ—Ó§Og«n[^ÿþ÷âÅsâ_Žá¯šh=Úºoµ�›BlAr™ˆì⥫m¢l§’ãÁ�ljtìØ¡6(EªÖº×.�i“Möèýå�λrérY¦weÎ&í>EàáPAËí2¾û­Å¶È6ˆ‘(‹Þ¦aÀ˜ýÂ¥àá•©ZÖ®"fÐÂ!„VIWª`Võ©eÅ¡œZ²F!›@8¥awN;mÞeøGl× 8oOA7ÚB�#6€i_4m›¸Öª5ÇäØR…+¦Á!#3F5EF²!V‹âS&)ã€B9DûPûï²–2ø}6Ê Òj~’¦å|D$ãbÕúbœAœ”GAi-ÃOéÜç6_p^¦ÄåÈ—.u>»Ší‡‡YlOY8ܵ{k©ZÕ¦ Ë�;O«v=2×b‡÷óúÈîÂhÚÒkå¹Ó™ÝÎx—²I )x˜?†î<‡Ã�kç\ð=ܾL\š`£Š%c^Ó6&À“v–àI9V}™ ©1j-ØÚö7έpFÛ‰-OcQÒTÅjG¶:Ë¢qmgóoŽÁ»µ š=‰Yl­}çªå^Êpó…ÆÅŒöÄ\�u=gæÀ­ŒËQˆœè;r‚=*€Møbk�¿bûrR«<Õ‘£�ŸÏÜ0�Ká!³«5Ê€ÚT�µc~˜#‡Fe¿‰@(Rv–Éh~{º؇��[Ad¥Œ­i«h&H&¨¿-¼aðÔcTÄô1Áº�œvP}K¿7•¼²ñÄ94——wª<·v­†Ù7ÊÆ¹·jû?•Þ²£ö×öiYÏ^a#b[€òϰ8tøpY¨—–GU„¿òü�–§uô½ž—€oïUçìè^ÁÁâï½öúò‘�~lù·þí'uzùo.žçЧ>õÉå¿þ/¾ž/èWÆn4æÌ:¶gÐ;\6Ñç?÷ñ©x?~ÄžÚØ3TR€«š˜’,è·Ññ›ÊÀ]µ+Ú¹¼õö{Óyà‹_ù±åÕ�tÿ™w ¾\˜}èå“˯ÿÖ7–çžsöÔÉI¦a ¤ÖGI¥PLfU{7íÙÛŸ]?oÖUaKs{~­`Î8Â8‚›¯5lªìzg½?~|ÙÝgag ªØÃª2Ê$ þ·ïwÞRcb�VãÇÂÏð;~¥ÚÃù²›Ú—�»3¨:cú…?¦|âøÁåÜ••ó³f¸èx‡½»ëßWÅ2žº£3H´Ú¹n„íéÑ£�£u)¥ ŒUÁe-މ�Ò)ç{´¶ï IKˆ?e á›í‚Ç«ô¿�ËP€w#Ø3’wí,i$^¿¯.;Û—­e™âµ•Lc�E§2ð¾ˆ' �12ñð‡ëUj1LwTm�ncVó#SÒùT“áŸÒ‡O�AÕ=ó;^@'ˆ®ÅÊÁðMS¯× ~Ž�½ÑŸ WÓºº?§AÁJ6eª˜É8c}.íÍ8~ã‘éïÃût¡$]¯:›RHp’s‚õþhœ¢MÑw¶æ8 6e¨6À8Y‡_¯²±9WƸ�¿yž p¯I° >'3·%w�‡eø5Þ+@<]š;Ç“hã«Ì‰áÕº®0FÙiŽèû€–¤ÁäVÎ~ý´'nÁegs&sn^[ñÛóçÎèªAü®M¥êj q2ñzÿ»·|í·~½ŽïDá|Aæ �»¯}¯÷G»öâò�¯ÿF²éN0zVâMò*žz䨩åÄéçShߌØè^è¡#�'ÛÞR–9;(©1õÙcÊm::Á©Úï<Ðú‰RÚ\fŒpaªQ¦Ú³!ƒ%»¯ÿ {%+ÛN*kƒÚˆfèáa%´ICèk‡¥æÄ)À˜cI4;~êôò«¿øß.o½þõåÅ}vùÔ'?¾ü­¿õ7FøXƒ®%Ï/v^õ�t»ý±Ÿê,Õ�-¿û[ÿãò»ÿà7Kò8Tu`ò9ÜV‘é9:)Oû8r¶ç“ZyF"eš æiñe­�·ãÆ´¯teÕ¹s$BóŒWIWZ´>Koí«ºóø?¢C 3\Ÿx®öi[6IX‹gõ9|¼ZÏøŒ¹%}É’šSr¦Ð]îõtÅÆØYPð~óû�×Þ(± ý$g»Æhº$DÀ«q¶�Æ!wÀuÀÄÛ ©rPq=»¬š‹9}`g+ü¾OÓù¢Žþ…�%X‚¶T`·=³§öÙZ�çEO·�žé%;|D�é èꈚm›;æ+š¿·~»äpÜh_sž4¿©Ì뙽鮜Ñ%kš;|,e¢õÕÞ°î?‚лÓSЇãlœ�ú°ùîh¦oz §ºx”Ñn.7á0oxÜá|'›¿9B#:;{îvs…£ª½|fm«u†Ã�‰º&³1çó®ÕéÇl™ÕÙ�¡Ö€ûķ­m[uäIÏOÆIôLIï‡>ÊQ´jEº;gŠäèÿ™º?m¶,;ûÎ�ó<ÏYsa(@€¢$Rm‹òjÉáT‡ßôp„£¿PGôËÛ «Ý2[–DŠG‰A@¡ 5feå<ßœnNþÿž�I)`BA…e’:•·î¹çì½×ZÏzæi©Ò {ûÜìÍè7=kG{wϬš¶¦éÔG³Û¶°SÒÑñð�ÍÃãt¼™ ÞhÿáߎöPb_>órÆp‡™–0YuW<æZÓÃ=ãpëÞlÐ:½Ð ­óføjUÏðëþ>�þój4·»gt9ço:Ë�tÐÍ`EŸ›óþæ³W�žâiwƒï½Ö¥â�óGÇÛÿ3'õrÃ7ÂÃhÜ#£æ³wy9^|E[s{Ó3ï�}×Y—ýý¢u:~Œ ¸ûU¥:Sg<×ņK”m½çhdûræÁsº)þ‚Ïá-øÓƒö Zs¸° 9,鵜9øˆªÓ;]ËY ú»ÝûÑÅŽ�Ø’ȃÃH'üS’ q/»a[ ëÈö·ï÷ò=°ÙÀaªëÉçà„v7 Œq4�Ñ<ÿÀ‹9ív%O|# Ä[ìͤyœŸF‚"Üø6wc7кW}¾Vð߯Òú×c¯V?E7?~‹ð­jM>< ­ìÑ‘ÿFìápÎÜUâáƒ`<¶Zß�>ÞÌA¥a˜$,¾Š €¤»¤ðômsþж—NÞ€5OŸPÕe2xiîŒÑ½æ,Õg õËWMFÝ|Ôš‚Ó³xäŽx²¹? Ø U…¬{dT°³s/løÛó-Œ?¦fÒÑî6‡rpó<Çw­ÃÒ'ù"¼@÷³ÅT�F“À�­‰öVp¡…ôO7$<‚Ã)+šáõ¯lþ´GÙòè-7u4˜ü dôI/IÍó¾ILP;ø�åÈ‘pñQ‰ˆ_~Ÿ{?�‡ü[;w¬€ÀTÁ“dð“ís÷Ñ¥Áà~¾*S¼°-ÀëÁ¶±®ñý ð¦.ÚPÛ¼Â|UZNP²Åj›.8~ªôlû —†Á‘~FÞø�9´ïà5×4¸ iÀ|Ñ£vƺTm�¿¡/ð; °þ Dö[и¯zî #~,üÜ][·Âéô÷ FéL€Î=;£`¸drïQ¼SPŒ%9óW¥µŽö u±�ðL~y"‰ÖøÓÅ*øŒMÑ>Šw²•×4®®Ö»=Ï/ä t$à…P}f6ýïßçõ›?¼ú…KÑÌÓÖ§s¥ùÀiÅ{Þk³>´” ¦òu÷ÞŠáúÑúØÞí;xtt®û·+€ì(?û·§}à3¸Åcà§bºûÁÿÜGï-¿ò+ôÔÿÿ¯þ/í]tùNoÕ�çå‚_üI�¨f/Á&m]øn8ë({~,?ÕÁlÇOë~¸¥¸ÎtÊ .|{¾ßÞÑŠÎÎ}v9¸êlz*Û¿8Jß¡iÛ§R œùœ&ù>ŠGÂc1šáÇŠ'#d6êÕb5’­m7Úêq£OÚ8q¥Ýùê._ª#l{l�ð Itd¿í’ât) •%¦‚ÖœC–ÍÜ=KaM(2ržKà🸋>RבOâ{è˜�têĉppÇr¡âƒ+Ùäß°}Žg½ô 8ÍWÌ‹|§s‚‹X ½˜ÝŠVžÜ]÷N½�ÒCð%ð°·üÀŽa›²Ñl;”}¼VãëÁ·r°Î(’Ko\½\s]k;Î@"€®Õd.z?Þ¾ƒ—nìõíu óQ$¥µ÷�pO×¹ýÅ#Åôð@²7ƒ—í½xÓ–-ì«:`W͆z‘pWÑúÎæ®ûÏ¥`$Ø»³ãdU 7ðIþ‹�ü6ø9"©uμožöܼÉq�»í»ÐÕGq®DŸFüõ{Ãã> n~À ¬.ç“E_|9ßÃE…�|Åì&:� ùÄq ýá�êiAÏ'�-§J¦ ÷ UöÀØ]‹¯8¦XÌöfôk}Oóï?Ëî·÷Ûw˜ï%î+xx*#³nÇäŽÄx°#»ÿ¼QÇ3Áê={‹Ó„»óQ¼òò+Ã?F~Dçì]É|wêN~µäÜé†Ó³¶¦‹œ}éìð¬kÏ�vå3àÓ£iê ;ì[nÞܨ°ëòðzE`øòîºøª¶?¾Ÿ,Þ´QR7¸?~̾ÎgW¬)v58#F(N*n ®÷�7Þ|ý¹o|«äÈ}ËïýÎo-ï|ÿ�šw´U7æ›ÕÆÙG¶ÙkôÌ®âïïH”ZW_ø,¡Î‰²=‚“ £ªéîeîÊ`½[‹�•i'€šÀ£'Už—i°¥–êÒ�#'–?ü—¿ž3ýŸ�ó\õ̧çrÐçÈÐf�p»ÒŽi­…+§­à· 3ãNvÅåç‰Ùpoο–™àa~xLÁ9Úƒ#ôÛUõN¥ FAÚßÃë!ŠàÜ”õ·Á•ŽQB Aj™|Îð57A0@€bt—jgNÿ:‚m¯B£ÙHé}üäö89LÝ×þe_­FªÄª²´1•K—®¤´$¼&§}¤ŽŒ«J-³*$›¶Í¤,{ÕP‡œ?Ñ3(Õy’ 4]«5Çá*Í�­×ÜÚŸ¾ûqL¾³b¸ï|ïýå—zâk¯ÕÒŠc8%ža2Ù+­ ‘ª²×úc¤ íÜÛùÐíÅí €mUtS’1aïžÕ¹dïíÇ´›(³�ðVåл`–²[EFŽaÌöM»+^ˆÁÒn}Üß ‘Ù“˜[óO €& )KÆ ‡ø|†éîˆ�l”ÓˆÂ<¾­GÆ£VR*o¯µæ=U0?L�ÿ/ÿèî¾À¶‹’JÉ„à ›U1Ýš†ÃlÑõ€aäþýŽ× åÚ0]Ùnpi{x¼'Ç9¥I�—–� L8Ix©¶\`„RZ$apN>\e€Iq.6¡³-µ¤Q¶ ¢U¯p“CoÎãð-H2¦`o†‰ZDkG›£¨O�Ûþ7­¸Ù)[ë. Õ� ‚Ç úµÎ'ó9“ýÁ� êJX¸¹Q%lzœí-…—¢E‘8œâ¶£À裞q¦ îk/ŸÁ¨êÝaâ[ÃÙn›ÖÓªDÏ_þ¨Q–å¿ýïþË[_z{ùä“�†ñ~îsolywùO~ùo/Ÿ¾ÿýpY»ùÁrœ§=ëpë}òpëòvíÝ¿úVŒ¶½vž{³ª2nûœëx¬„ƒiÃÒ¦‚< ¼#}šÁ­�;ø¥ðiY.žÏRðìËÆÆ®å|t(™€±D1·FJ|—¥hŸÐ<üÚZ2ĪìwOÂé^Z4g˜ Ç8Yâx×Þxá�xâ5:‰z&�.p"kÐHŽ–xZ#ô`Mø±Dã­ñK¼OòRLi‚×�=Íëq{�X{^œ´ûãûv×Í#òÞýe[14«L‚xV|£y˜§–¾²­Ú¸p+¥=ðâ &ã›âÌ“þj?o%>)!±‰ŽQOV ó6S<ص{8Áâ[€Â/�=µœyéôªc"2PE:|~Ò>£rñOät?‡Jž˜5´ÎÝé”»ŽìëªÚÚE»¸;nª¶Œ÷b¬xÄáZÛ;Qâyû/;7 a*+�9UÈÑG³¦Ýns—@CoÀáçØ]íÂûÝ‹fŽÅ€ž…?ëSϪjhŸÂùÂGËýà°µ½8 'ÚÛ½ñ¸;²¨9Ñ]’à×w÷«ž€CËp—®ÜúéfŽ; € 9Û„ŸÔíËörNz†ÀÐ.]ϦsÚKnS¸·%ð$þ—4fnùð¾£’ÚÿÍt$sÞÝ}]<xþ¿?Á«®CÖˆ?Œlþ·/ü?á½9ïO¾f®Ï¿˜ù@À^/æúoßóÓÖµÞ±þÿ§�óo_ó“ï�eŸÁp³n‹:‘�/³§$Þ8gY±ÈÝì²6ÍäÆ9Ì—²VÍ ê°ñª,ëáp‰þ/Á›_…îÒö}êÙäšUuuîãs%Ûàϯ�\âtw(?àƒèê^´þüù©pÄ#Ñ™ÖÈ[†ïÀ‰WÑ(àšµúö´žg¬uÊ >¯ë™ýn‚¿®™�‚¼fG9Vï£Ó¿úÊ+Ãsè•ðË´Oyÿƒº§ŽtÙ¯¼Mç—yÜž�°q4°£7Ûµ¼î;Û;zKÏif³Nö»Ù&:2°�È£6v”õ‚°¿�ø íôqÏ_ÁXºBók,�=ÒxÁ„Œ�ÑÚ¼�œ:’ÍúìËÃo|i?øÙðƒ‹ù1Îòivú�åì˯�ÐÈdÇ:ð²Ç+ÞÿÑ;C¿î‘ŒIÀ#¼I°õ \à’šðë¡Ñæ æôk0a÷Ù·¶{Öÿø1úhð‰­;|>›ûÄÉ3Í—Ï® ©Å¶×ã\æ�?|¿gmÍøJóYýf“ˆÚó¼Ìû½÷ÞmÜ5H +‚ãÕË—{T>Çà0\¡=t>ëÓ¾{Nud@m£o\¸Xõ¨®~têÐ Œg–ѾôžÏkZËèÆ/Bƒå+?»v*fkGî%'ß}ïà Â+AèÕ7Þìþh§|7›× /t Ú•æ(8¨…7]Sb =CàÌØôA}ÝÿþFwFôv»ë¯_ütàÅ·:cGK sÆ»KG<žÎ§B÷L�½Ð·ûžø/v&¿$Û}øÁÇÛW>‡Ç·ÏÏy::yÜ3­áÓO>ÎßÑQ•ÍI‡BøÖ¥3ØKÚ" V�>ô¥­5±þ¡'x(HÕó9ýÅE.1§nº¸Õç‰î¾y–ÿÿdŸG“Öÿ| Ïü�—pw¥1rvõe>ñü®±þO«J•x¸¿ â˯~ݯžïÙ|^tv|ñƒ?™uóƒ(’r?]‰B¾ÁÑšáÎZ,~ù=¸ÓÛ[‹n.>÷YtdiÉß5ÐÄßÍ•­Ð5’œ6wh©9¿òú«Ã“¬k@Ö­€Â¦¹!¡³`�öøw×ýž‡»j`ã(Û@´òòîƒ'‰øá8>’]2üÄYÙöÑb$»ÌQÍYå³$¡ã7J ÐrDðlxQûÇæô ÏúÉןÌý'¿xñw€åÖâ;³YÈ­s3?ë³’¦/[‹ÊÑÇã‰á­ägø·½â ‰¶à½¯Äzø%så\<¬£l·Å{Uí®¯uv–(0ºw·NÄŸ-_/yÿpÁÒþà�Û»ÇÓÖ}’éã7 WöVüvøhí±�'ùÕ_$qÁs³j¾u¨­êÚQ‘ø³yHz$¹¹äãGÑÿ¸@ç“ì øn.l/r–=´êÖ�³K�ÈÿøR¿Û¯ï¶vò ÄFvC€çx­}Ð5Eu=ù?V;ùØröì™b\W*Ì»<¶‘ó×Lñ*× ôò ¢Õ‘_ÉH:±à=¸Nf#Â@üÓ" AHRO•ö×Òç¹=c_í÷ÏžyiãÖ¦ˆpâjḮȺP®>í¨íí$ÏõlòŽ|'k�…žÐͽ’�¯Ì¯.r¨qÙ'PEdìü!óºGåïSY}öÌÙU�oÞ[³qvíj�Ñ-[’½t±˜¤$öu°¦�Óî•«¨W%³ä¼óDø¡ƒ¿¢ ·ÊçÑ‚ÂøyÚ“�£„¬:ÿõ~wg‘=j_€LBšÂ#2i³ ߪ}?q,{sd~óÁSȾ‡ù]ð4c³ö4otèúkWkÞÈñþô]%3º~ŽÇ³_½PG0±^á%y—ï[Á–Ž‹ƒ ýƒU <fáe÷ Î?Ä|›×ø-í(ŽaN|HxJ>z Ÿc?¶ þ“9O[<~ƒé=êTݾ%ôìÛ·í¯\¹2>ýãá®hìIq ûì4M�{PžL5|sásš$„øܽuýrß»>„ÿ¹ïÅÚæ˜ðlª´‘Ù·é-ëä­kÌ£K×Ú«Ž' ÏmÖ1¤â2òÔ^ù˜vÆoàá�[ÙGÅ­ÄrŽWÅ¿·ã–éÏ’F\·go¸:±qàU.ó5¢÷3ñ[46ø¸ÿõ7_Å£¯'gFÖˆÑ5øÜSDÿ�$êeS|öéùXªf_ЍeÄ fqnÜ)˃ÑVäò…ëmnŠDŠïµkW >"ÄÈ xКóg.”éÃïxïA Éw¿�÷<ÙHqÕr×¹�ó©lmQy÷Ïb”Z§» ³* hWJ± 뎂%DSPØ&9’³ SÁ( 2ã0\ÊÌÓþÞÁÙíllÁ×� A}°û9Z^dkqâ1´�¹H�àFhתàTÅ)ûþs‚`WÊq¹¥ qᇟ]I¹Ü˜ŠÐ5�Ö™¾1§š[¶¹1˜ÆÖzÚmþq_ËPnóìKóß½`h'sî lí)ñEûÅ-) ösZ”5¹N°äåzLkמÃ�ËnÌUà߉ ›×f™CÇêñ„cöpmà÷\lBKLèlŒ;¦YBË/ÿ­ÿb`õ[¿ùO—Ë1â»�£ÌøÝ]BÜÞHXHDÀKV•µåqÁû}D~늡ÝíïË7ku^àªg„Öš]F˳*w8´¹?øöÏOûõÛ7®,o½õ…øTŠõ-³l´h7¾u­Šò=µÌfîQ6 E/Š�ýN<>Ë,Ž ~ÊÚŃy8= EŽ_‰+ÚÖß©ófkÆ;cè �¶-pKœ¨³FCpèn¯%&AÕ³ý„š5†Ï²µF©o>Ç” Éå  §�ó ’Qƒ;µ%‚/ Ý7ž–Ð’…=Ɖ <ϤðìV�ž®Ùy VA+~ùø ñú» fm [ßoßþ$Å?јø†6—+œÀJPº ¹v4­IÛ{0»~3xϺkµžÁË� ß�äŠLÏ›`×i…s'Aç…îFA¨1ðcªtßY…ÿÁ?`LGPœã5:a<~\zëÄGÐ�j¨Ç­‹[°à•d^Ÿ|vmyÿBÇ<èy÷“KµûÜ»|å­7k¯¾*z—«�¿Zè�/$0©–†hœ‚hü ¯R.ù€ö­àÚ(™á74ƒ3�Sê%Œcµßާð�=e4ŸKöÊš<ÙX{£k…ßx›çRxîu´‚ÏžpÂÚMÞ88†¶<)Qj[ËrJNᨅs¿Íœd*g¯)Á’+´²"ë(‡“apÕÙo—/œ_Î�;7Êž7-’[»¤þà{ÍkÇrî£lÙdˆ¾þæWZûõá%Wráço¾ùùÙ[üïŸÿ³ÿ5~^×€£g¢ÿÇË˧_ê ›Ï5ιÑ#T7ãi×R¬áIBdæ¨ðšD"QÂÙB2ÛWç<'™Óg–»�Ï<àÓ,/Uº ‰ƒÛÁ~Ð>«>�TVúGp½Æ0ì;ºCñûÿìïþÊò…/uùõü§»Ç‘ô�W.,ÇÃç/½õÅô•}ËǸüÁ¿úýžG—¿òí_˜=ýཎ ¸M�×b˜È€å´e¨:ãog4ŠrGæÆè‚•/šù|6s‹mà§Î÷ý49£³‡@^ elá“ ´^p‡#Â{"Þ “Ьÿ²5®ºØŽh^PÅóðxsbÄn ÷= tPZ��ia}†×á[膱pÇ$ã9öã¥3 }ºTºR²`Îúã4ëgdp2ñèÑ*ÎK¤Ïf˜ö§Gí_^õåeï™Su“)a,ç·u᳂رéIp”°ÄÙñçhŠ£u [ÉA2qœUÝÃ豞'eñ·Š¦ÓC”vö›¼õL¼ÇYO›­Uk,†–öɉ—àÜz�׌!ˆWµ¦—^9ÛÑGãg’µÂsâñ±àö„s‰!*{=ç]�g¨“o‚aŒr{¬%¨±èìÁd¥jrm_sÒ"Ù1R�ÚsC´ˆŸÛÕ@xÏ�o§Ï‚u{Ç™¿Â·9Xé®M}`‘”˜ä�ièáïŒìݳ³ÈOÕú�»�ŽLxrR0¼Öö‰�߇t�SíïK¯VyŸ,ÁÛC”‘?ŒvF6Yîs[/k~š<çèVE±ï^ÉJ«¬©J¨±½’µ6“_‡ÚÿO/—pÔs´Ú^[o7zMP¬ypvžÊ|óÍWg{Ò�è˜�t`ºØ÷«.=Üуìx�5õGy;ë|fŸÏöL"aº68�C0:šà‚À±}ÄËü5‡ýÍiôˆ¡™^<4Ñ÷ðß5öéi È»ÓqßþêW—·¾øùöºÊÿd ¾VþøÃ�ù½ô¶§OÔ©"åÓÏÂ¥m%n$K 7έ’NO— y/ãûrm»uû!o3£Më�d=Z$›ÍcÂá‚ßövhµ¿­S’Öèˆ]/íÂùË%®­Ù…¤ðmjÐ $g/a6lÉYô}ëÚÄɦ7Oß�®Ø¢Ñ}»KÂgôWÒn02ßI’a#KØ9wî|2³6~w£A8¾µ ½S"Û ½tž‘Îz$žeŸíÞt­Î\¾1úÎÑ’"Ÿ„ªTw¿tf9Ù÷Æ¢_Ò1ÌÑÏ8p‚ ¸Ãesތϟ¯:¥¿uÄB×lÛ­Ñ&'¿Ý†'Äè¹ ŸKºµuíç¿õÕæ™¾Ô5î�ǾŸÒöÁzð�•¨®Œ¦ñúðôvɱê¬p.ß\Àÿu¼@û�g[ú\|tÏF÷ü¿ï<ºûд½‡g†ÜÓüœÕÊšÀ8Ýð„»éL—.^‰/ XÒÕ£‡èÊþ�s)¼EWèA–uH&:Í_@¿šnYM ©œfàÆjXÏŽ]�´®dÙÎîjŽº(DÆË¶ði|Í}Â#ö¯dZvá¾ì+úß¹s–C%¤êH¾k9½~ñ—ÿ³º‚}3älÒŽÚ)™Ë1$œZÇ�žÈ¢+æ¼ooF¦´4ý“/c‚%ûh`0;âÚ?íꟼûÿøß?m”Ÿüþi¯ŸþÍ¿¹ãÏrÍ¿¹úù»ÆD;èJBôFþ-°Z;�dqü+›CŘ̓ùæ$õ˜2Ù¾·7ì×óÃÁ_z%=<¹ë¦½gò™\-cx0ûþzÑ?Çù&øeèÞÙÉ£WòHŸ#¯ È÷´&AIXÒ9m_:Æj‡‘Qæ0¼Í¾ã-�-eô2®¿Í�LuôáѪUßÑõÐøÓxUè?d@¿AUüà²Vð%ÛÉÖç6®õác;úÝㇳñW\#ÃØ¨…|[±{àü=Ë’ ^tŽxx UKRÁR:�Dk~Ží�+×#ã�ñ®Ák{¸&­ üƒçãx¥‚Ç£á³äËÃGâ1xŽ=0o{G9–Ço¯Ù7�©i®> òmxP<šœ8�²}wè73ïÚÆÞÐõ2~' ½{'hc3ZÓØ¤`¦=œ_užÛbè®`b?tu‘$#ÐI¸nMÌÎÑ»Ç n<žàUŽÿ|µ‡ *HåYæM×ÒÞ¯²Vº»w:5O¸f_­ÿ~þ >GóßF×Ov<�ŽÈ¯ø¨#ùnƒøÌ^áñãglá{=3ÝUu;×þZÝ{–}1ŸÑ�ÛlÍ_f�Æã÷»·Ï'¹ µŒýlFWl݇;YÀŒFg™9®-]–½½3üå§±.?¬D¢o¬cïÙ×v7xG/�“[º ¢ß6aÙ‘�ÿ$”d ÐwáÚ,Ú{¸d¾ä(¼B)VÌ|nSÁ¥ñ¿ºÈšá ¤@Šëñªßû$çw ûè€|­÷{/Ù˾D…#«ÁbW…IðÅ‹ |Òø‚Ø£‡ð#5û8Gz4WrÝûl”Ö†F¬ck8?Ä ´çs¢»ÒÓ·?—�i|ÝPéež�ŽÇnëZ:;BQ—&IÍpGW&/|âVzÓà}¾]ð"1COˆ=ÂýUî‚'ÝDZ�¯=ŽZú²„K‡ušå“U¸@7LŽöÓåÁ¸ûzz‹š{а¹Zûté­ªd0=+ûÖØ`‡¿°1éQ|*l•×^ÿ\ÝÛÞœ¼\ÒÅþ’†%Àò«²!Ø'Mex¯" ÅY|¦K…uìÌǾ¶p|ñÑ0xñû€ÉO¾þ÷Ÿüäëßt>JëØ^@íAÊðˆ§ù÷ž=‰–û~ÙÖ‘ž-pg�<é�tc݆ÇoÖc¦ËFÁfþ½Ý™uNÔÁÂs2uƒ ?á5ž‡¾¿ý×þzD«ˆëP¾®-%HêqóNò¦ûžä£d'þãÕ` ÿÛÞ±‰á.[VŒçYz° Xðx¸Y'ÅtüÀ3zŽø€ èæÖŽK, 8vy8c·É©Ç›Å7úïX[Ýéî¡£TB>BFây+/à_§d[{‡È>OIEÎ.··§ócñkß*.v3�T�nølÏÕå=¨gÝJÛßß ðgcù§À£–Ù|`=òRGhÝgou\"Zëâw…«Žd/ ]^,È1ñÄô;±0s0gÉ#ˆgÐ×üÌIôýìMk;žzöÍÖ€®-oæ«ü&¡¨µKÞ§aïâCÎǦS„£ï<+PR(›FwS~>…{§%¦—}¥ä”ëùù…NŸ:Qwä#3<§½âáKјáf-Øjþû Æ;_~£õ°_GÚ32E[xk;q¢„­ì'c€ƒ˜Î‘Æxp?â×^Ô7Û‡áÉ£1Þ$ u¿ýåÿuŒ š°w:Ò˜7›’/C¢|†3�ÃAãJæÆËðž-Ée16ëôó¨$Pq#{ȇ£[J¨76ŠEn;â…û$5·þ�Å£ð‹'uñË!3p¿ßÌk#ûלC£9…ÝhjK…Spj³ þZ¬’ ŠV÷»¿XØÎŽq£³Ý*~ –è¬æî÷ÒñÈC ‡ë`!éâüÝå÷~ï7&vôÖ[ŸÏ÷�¾y)ncoên¾Y‡�OJÞº~õÒ²]K$íˆßï½ Ä¹Zpì'�yåóC¬Œ´ÓµCDzÒCTÔlI“¿¢í?|2ĸ;™7"TÈt¼–â{ &aP˜…Ê9JÝã‡JÙÆ$ïZxŠBæ�tN�èÌÎÏi qc¦ÚhØ™&˜�ŽQ�yr�îß^@iOÂ*¤@¤)ˆó³2eÅ«àÓö[ËÌQö¤31dÁ’{;¦ -âõÖs­VÍ'HO}­n¡s@(?Á2œc¬dW ¬mŒu�=åM+bÙ#ÒÁ„É�à@c6{—³§´zT‘™rÓü(…v˜âÀxB\ÑA?Œ¤6»5iy7Šm¿e˜ËFÚÒ®™Žœ”X3„ŒÉF`Ÿ`˜³rò™³¯ôP„ˆ6L×S§¥Sc©„`@�ƒ§À¹sꇴ_æ>?ÍÍoD¹=熽 S‰È!Þ³æ—::ŠóŽZÌ=ì2 .Ç� =xDÉÙ&ʹ²™ yò4çW0§ˆÌYEÁôÍgk„Ù,†hFI á™ótç °ª"‹BÏŠâîpêPê9˜56ÎéC˜*ÓVõ�éPš ¼-œ…ÁèIíÑ­“cÌxÿûh#¦Ùƒ£=º {ÉÍCµîGUâïìY/G0Ú¦®u2GÁî¹^Þc}4íÆñœÉ|l®¯¹AÃâa%bÔ ¶,›Ce }zþJ4W%æŽÎ&¯2àq¸&˜/?ŸÀ×µZ\ìÏ‘*;ìj¸­å?§©¬»Qnƒ»$…];kÞ~o< 72^œ…H©ÐÖƒsñnB‰SŠÐ¼Ò^>íý[_Z3�¿ó�ÕÉ'kQ{ @–¯ýì·–ßÿýßiýeî”T0ikßÇ›µ[z8šNЂë=UÛ= O/\Ž�-âé£Ínõ´:@<+S.¸8·hks¸Ï™P{Þæ?)êhØ8Ö?ônq Ã­;({ÑDôÌпQæð;p§¸p„àa²|ñ_´¾/åÍ0~�U¶Ó8ö"гÈYÿ×Á— Ÿåö¡ M“˜¹N…º#È<W<‰rÌ1Ť ƒžÌ¿yNȱ¿àšµ¨3>}·6QGªã°á覄Ü1È7ªîØÖ~H{1­Î�O;ßÕÉBÀ·ò* eØ­�"®U �WS ð¢C) ÚHM€4›·3=ÁTâ“=ÀÏ)£Ð&û¶‡ÓÎk%'öHœè·Š8°½�•FœŒL-dïÕšóŠÃ¨Kf”5•û·r^O€hfºhØ´ÎW»w'…;~éL,Æ‚™Ž®uþÑÿôßÿ?“»‡–/¼õµÁ±wßùþÀÿ¥—ߥ…bEoø�ö«Í£ xxBh�Jö«WÊŽ…Ï7‚ÍÉ'²K»Êœµo®;X0Žið`=èþeÁ[ ^¸¿èÞ vxÍÙëXÅŸ2)ü�÷;1Ž� *ÃZû7øÏêÄ!}ñ;¼�/�íÞWp¤yhñ$±îJYþû L–_•`àfð‡ÿtÜÉŽBFÉ|ÙxéDáß¾öŒ>Û¡xÁ*Ÿ<|ßàx‡[p$[pmNÙÍhöè“®Êï‘y&z$vr–N7 ™±=‹C®jLk½[@ŸyÔ<D·Ë¾§Ë¡'Fÿ°£'ã?‚'„ x ?Éeœã‚u#¸PS0x?ÃÓéœ(þ ]–Õy¬Úcmë-›‡Çï”±?D1^4%<¨¿9Ïä 9œNÁ ´&Y®<�ð ²ÇãœmQèŒì7Ü›jøÆRñIþÐýbÊGžº°53¸�ž8²\¸p¹¹Ä½mO“åHT¾ÚÓ�=]ÔÏ–ž£Š�Ü&�[Àì™–š HsáІ+Úµ‘#Úã™ÿú #>Ý u¯ù©ï±éœk[/hÍ|ˆ?8c6C8š#8¡Ý /r ±¬Ult�`ÁèàÍW§‹mÙ:ðz‚P­É:-�Ã/™ÚüèXöHû8ð=_E›Ø3ú`÷´ Êìa0ûѲ“¯;Ë`¯ed0_χ Æá-Ü Ç¼T=€‘ypl�®)Ø/Á®÷ÄïÖ®Ÿ^4I�}†®à•_tÐz,\L§¿��-é\ZTçÀÆwr:qþ¼éî£ï7îðóYûZQ‡/XÓ®¹¾#© ²q˜z.ü fßì¡›�dºØ®t3�9Àp]N¼rf²øÁcxaDàÏ}ýBk^=¥/bô]—Øñ·Ó�®4æýxµMªþ�µÎW€�� f�¾AkP¾ŸaÏ\K¯Ù-)ª$˜ƒu�“¯l8ªéŠ„&ötÝå’R._¹njÃsè£OŸ¦›äçàÜ–= Öª¦B©¹:.hð£çÁoÏ–tå踭[ÏæØo u“pdÓtºKœN&­Û>>¬ �g�?"<öJüUU#ÞLÁ6þgßöØP|xþèž`lÞö¼çÒ‘U˜ØG¸Ñn¯×öŽ­%¹ŠMuÛ²¯J›û”Ÿ*èoÆÓ~ø½ï/½óáò zº|åb:g<>ûæ—ÿî¾ü'ým[pŠ/'Ãþ]/8?x×@èýù–ÿ»nùsýÎúÏGМWØýŸ=•Fo¬ÄUøQ§¬ì±»ukä»»¯ý” çmÂÇäpz{_L÷öï@IDAT—ÄÞFÛí|÷µçá ûB .0ǯ¬§ñ†x@Ÿí�v•d5�¢kºLy”¿c¨²ÏTëízå¥õØ�¾£[íëX%4xårUs:Û<ßýì _·WA¶&u�*‹zVƒš ÇJNÏy¡mêF>·»Ñè©ô°ƒŽ Ôkm�³cµƒW¡C¿ÉdÏñË·Ö7c Ápë¢ß� g-y.`‰—Lo+PC¾¹ÎþN0©§‹·ñk4µá)Ž€AS*Ó¯^¹YõhgkfnÄSžÜXõbIÿäÅÈóæ$�þ¢åöè[t„gE vœ~édò~µiŽÐO§_Ozã›ÇÐoïíãÉdÆ‘œäü–ì×›´šƒ¤¡ gö믿Þ5ŸÏ .7'É�:>«åÏ0Û�HøÀŸA/�ÃÖ-dzÀ+yÕµÆu–-œ»~5]&ûòõºG À9Vl*+ƒ‰Îr|…+ÝGìôkž£[“ŽSðOq=À(ö!µwk—…W^9›A7½>Ù$ n_.Ôm芤·Ž?²ëwóƒàë;ӇⓟÔiŒ/÷T í+~(Ð+ع?Y»µ*8�8^~étÅ,ù�‹.²'uâ§�„\›ß„á0§ú¼Â…³eè [뺈O µ]Cªj üO——ÏžLNœ˜½ ŸOQN2I‡Ô'ŸvŒh�çÈù{Ž[hvW=ƦYMûÝZù!èõM'þ»Žu§‚ž�xíÉ]OŸ9Ú~å�.ÈgÝ·½ðaŽÖúfÃ9K�—gÏœŽ&ÒW’ôUzFð"aX€êT²ß1ºFè,K*Bºx!ß[@8~¼äûh�ŸÌïuLÝ›-V感¨z´§¹Dó1uÜëÍÎLÞÈN9Z€¥ý§ßÜÎg“³¶çø%Vt¹ê_6ŽÄmIPä$†·Õ�É3uus†»‚=áÛçH8w«À>[]ŒLᬸʵôÐ2¨Ö½ï™ìä±oó]ëbÂ?´»yOG„æ¶-|ÝS—ƒ[ŸIf½�½ ¾Ð³�탞x �éét ŸÉv4ÿ¾#e�‰~¹Äe¾�I– 7ÅÞÜ�z3ëߟÜÖIúZ~®«ùx'~ízºU ûСVùø�ø ð~_ºÃ$"”hàïm%§€;ЯŽôá_F x³X(?ƒÄ/$ÒHHÙ‘ÂwÏ׋‡zï¥#.^Eö’ðÒ$´€‘`9Z‘ìv°@ôá’Ntp}Rܳ·ÄÓð>÷ѱëyM ‹ÂMº"žëÁ“ÜÖü6ÞlïøºJÂíYˆÈ8ÝÅ$óJ¢Aßâ9hesóVÏ ÙÀ–*—¯#ú¾nx>ÿÕ£: ì|¶úuQx²ån< ÞU€•lÃCèÖà*þ×ôòï™Å@Â9ÅiS]_BÉÕŽæka›*þ6·{·%¦s‡P§ƒÑõYoý'�·úÍG yã–­ÎN”áÃX•‰Û‰1ÝÛ(s%c˦ĺû¼ ]•¬­ìÚÕËŒ¾[[«´H0ß;û…ûAcOÎH¯`×rì·a 43 îµ›P˜ÞÚœ‚‹ ¤´É›Œ"Õ{%Œ@bÎ3 Iö�D+ôefíjCdh=ªåï•Í2 bÊ n(8ZùrÔR¤)ëO(a„(�;gýöÆ9{*õ‡©†€Î   Qžî”%F1ŸŒ¸®Ù׿�NIqvž*ßç>©USŸÏP5��&´Å«�œÃøˆüLy©xÀ¡y$ç†7ÎÜÖI0‚1§#„âìX«ñ eh5æ²?Fµ7Ø?ó¹�sc©Îã±7 õ…,(4`HȯJÏñ‚£w6 „¶.̲Š:|is‰Ûî•ØÀåùÑÃ�_Xff�z�¤Ð„ÁœF娛ŠÚj-áдJY+c#ôœ“M#DÏÐ�8¶nÓz?œJYq6ï­ª�ÍUëòáÓ(%Áagø†_»²fÕj%—<åPfXq(Èt3ˆ$ˆ�ï$—ØÛƒ”ƒnÉK4™6æêF”FqRÂ9bOfœ¢œ:½¿N ÒÆÜíLíàCA°îqŠ7¶VöâÁ³“ÇO´ímŒËš)j̤œ÷÷Ý2`ö–$°/<`©Òïòõ�6ׯ½àõÓ}£Ø ~èQK·‹¿[‹åo4¯íË'—U;H»p©ì¼Ý�å\¾"£¬õu$ÀæÃc9(ו g€_\vTÙÀØ8P0lk]!6:—‰rñ 8Œy=¸^[Ì‚ 9�·•5¼«ùji²3¥iïÁŒÝk—cj×Ûÿ3Ëþð_.ßþ¥¿µ|þóo,ßûîí¶L»gÓÙA§BÏ�{^”-ë[ü‡1Ívf&Þ³*›«ñmo8<Ï=Zíž8q4X”Xóemžì—”Ã"Üì3Ã!ºŒ.FX =o.ÇJ 8}úä¬Ëó8y%8¯]¹Úµ)�#ºÒÇÚ¶ob( èrN•_ø(p4e ý;� öoæ%Ù"ôê;»ä‹>?’ÃB‹™ hôÝÊ_£ÅöSÐuh1$ �ù�ØÎ`âHˆ©fß­KPœ#—ñ1Ήøë8ÌáéŒÍ~Í$-É&ÄeöÅCoä@yá£3@Ÿ�ã/Ü.Âkt¦-ñ‹gàc2¸ÜC9°w“ÑØsÐ*e–’ÖvÏžÛ ¼f…KÏš=_• 4(ˆõÂÁGðMFˆýö·ÀÒ>Ñ^“‰ªBÐðÝàñ ƒt{¼UEƒ¹í~¬ ¤D§>WE©‚ŒUòìkïžvÈ�Ú>]¸” ÎÍu{Æá‘Û:ó÷aJ3!>Aôð& /=³®#9G(�è,žm‡6v&{c d1”'“5£D%U�™u29„ÀÀY7Û¶‘÷Í)¾–öóÎ�µ­Pdïè\ ð.�fü£}-šçód0�Àç§ïá7ß*q`cùþþn�frDvžÔ�çFEŠTûúÁûï�,ÚNPXµy§°R�ví)H5 !%gÄ Pm€ö„’êÐF ëþÎQM‘ÜñLwÚëù¯õ�¿œÿG‹Öý „ á/£ö?𲞦\ÚK°~.Þˆ: Íøþ‹o}eZgýÓ_ý‡ËïþÖ?[^ãKÖUß�û0ºÙ¶|ñ‹_J¼±|øÞ;Ë»ïüpœa_ÿú7ªø»°üñ}7ºÅ+Âáý v½K \Üm�óxg…—§K4q"¼¸qƒaŸœèÆ V…?*ˆè7‚ñÃ?ãxÉf�ûÃÇŽçTÊ Ïáøy Z‡œŽ‡^¹zcZoO�ôG �ô¿©Ú‰E¡:§¶Ç£[sl>ÍÙ‹¯ÈhÁ/856ãÃO[ãäú;™N¥¢¹Ódß+‘)°�n¦M˜ÝM·âX�܉f¶o»Zi]]îŒA)¨7•Ké_÷:¢„ófk í1¦ð+íãÔhœÝñ rˆ @÷Ö3¬5ÈÒ�Ñü$G6¼ OÜ™c%÷t¬yšcwuj¬ÆIÌsÖŽQ%†ûê`Afy>‡¬qé„�Ò/BÆ+r#É2ú2¾Žÿk‰æ{ø0 ·ñÝö,{äYs' ðJmf÷rn<팸ä-žÀÈ'£E…?d#y¤«yÂJ#K‚…Äú™£5ÈpràÉ3ºG¼¬êPÆÚ§Jì\»JÅ›ÛK c«ƒªõ4-A'IY9/ð08ËŽoÂ-N 4>XÕ³œÝc´ƒE× L\ßz_8˜YJ�?æ´ÆƒÉ‚gSµ‡¿ênb ?°[m�Õ©D—A[SiαÜ/�k[0¶ßdFÓ™—œ»“p·Îtžö†0‰Ýá_+hÏzÛºÖ—‡ô4|¹=wÅð‰&ïø[ÇÚr²+ƒ':ÉÝÏ+ñÚ'`Se wÐ’öƒô2m u'aÜs6ƒ^BWë¢h±1 6í祹ƒÙZéäzά&Ý}OzÆÐacp†‚dhsvÍ8,uÞ)éoäZ{J_’l½»Í#ÓÑ»#žÐÊšð¯ŠîÉÈÉ(øž�ísð·^N‰V9ûkL<‰£†Ó¯hùÁ0¾.šÇ‰ìÈ÷»¿å y`ÿy]ˆÎ²érL¡Y2U%žÖ’œZ+Olþ€Úµƒ’àÞÞѬ¶fKÀyß©ÐXíùÖ½ƒ“ÄYŒ—.® [[ØÍóÚv¸<»ßój~x$¸Ã·€9pL˜=ï3k›öý£;²Á±p¡gHdØU¢îÞ…v¥kl¢µÓþ/êYýÌÌ¢�ªZÀÜ?�Á¾¿\Õ7>Â>vÜØ±ttkÀvE’­ìíÚýI¦…û ”�×ÝêHŽ©ŽÈÎp$Ò$ä„ãÓ¹$� eOÛóZOk|tƒoøúÓœ¨ÆS©p¢ÀH›½˜®Öþìh|Õèýͱ|¤b‰«œ¡»vÔÞ4H¦úõI·*ÉÿuxÂûÁ¯åÒ¯è�Î¥ó6x¼-¹Ý}ðÎÁß�é™ä¤ò÷8-ƒ-½’0þ´dHë;(˜pX=JÆ]ª{à¿úç¿•nµùò׿.§;ù+í¯,ßøêצ[È8à’-/ªÏ×ÍÿSþoüÖo{;óyqÕ ”yñ÷Ÿ÷oó1/¼×¿™ ¿ÿÜ&FK� ”ð=𓘙<ÁÓçóò·½¦Á3òa‰½ß̯Fg¢³µæóÇkÒ#ȸ(zð‰ŽŒÓZw’#^3 œá~‹ÎVÙ³C@ã~xâ‹=� ræä�åVzÂÓŽ�¹›ƒ·`ó•Æ0÷'‰zV<&GjÏ^ƒÚÖŠG{9j9,OdßÛ'¨N6&›žÜ-Iöa¶áZ)‹F8Mñq{‚O˜÷Tùµ6ü“Nbñ$F莡Q¾.׬òä¹�×µè==¬âëfÎÜÙ‡K²‘ì-IgË“xNóë—ê$¸½£¿š8ÙMF>�v›B#¬xºÞ7‰Ú©Cpíúƒ:\Ì/ÖlâðË¥l݇eªªCXÏ}]‡«Ñ‹¼| '¸1É^æú\‡]y®}_õEò\'ÎùTZb?ùÓÛ¯]¾·\Éßjé:ûx¼°›1zîØµý†GÃ_û¾Ë—S‡ Tï BŶ(fzCû¶¥ÀÝèníÃhôL~r ƒŸ„‰Þ“-ÛK‚¥ß‘ÙOª®–,ëˆÄ#Ç:ëõ@6t×ÝîüáKñÍ�tÞ•O´Ïáò£xų| Yû#l< ®(tÑ!t3™L�:uúàròˆ ôüYu®»~#Þ&�ž_FW"/2\$�»pÖg`ÄïèÙx: kn~³Oæ“yVç†ãu =|m5÷ðd©°ãâGkE¼ 7Ã#ZÞ fž+±D¢—êçéÈÔºÐ@ZBð®ST6ø£|rŽrp4T&z2T»øà@7è~xO7€kãûyRàº÷ä?˜ögûI¿&Gê|•�ãó¨3ÿ^:աާª­è£;Ëòñg·–óÑö@'  ôd¾|¨M=½<}XQÙvA 6Q‰Š}/qsWöÏa ju3yp/L¯k¤ã!ù w÷½f{ð=Ñó¶Üj=‚í“|…g4º‹µi ·èкKúîIóZ}P+�¨¢„gÖæš$Vã”´�¼?XÇ~Ö½u¼v¾VÑñ®�ŠÐšçÞ©*}ø½}µèpM÷�x©xÁ�ìL0”8·m_Ç,F {V•½ì.¡¿¤�ûe�•t xä†ÕFló›¯õ86rtìðdxPĵVöÉ®{~IKj<Ò¸üwŸ~òÁr»sŸùAûzb ‚¦hMbЬp‹@æ8Äôzp÷X¿ù0ÙØ*séŠ3ø÷yõÈ@4/6¥jóÍxc Ìn�O×IW×]sß]•‡Â_$þèÔ°«Ä0úÇÆ†äĤÝ8Б ûÕr»õ ¥·°©Ø²py^éµ›ñ±ÃÇ; »€¤³Ì¯´žI ‹†d“¢ßçìsp^k{sCgì ¸<ú|¾÷ILnž«mBO•²&Œ€;œÆgw6vžu÷nÕê²Éû›\Ù“¯âÌéøLûu%»ØÂáÖ£G·—·ßzk‘$ôɹsc³à…ìKú£d¡ãüÃ=ÿFñ cÝéXUIJ8é{ i­Kç¹ôX�>/> IYsf{ëS`ô"AÊÍU ]";ž!é—`ÚM÷Œ¶`ÖKNHÆ·l%x«€ŠON)¨³bip‡{€Êï+áO¸Û>ÓWThÓÙ­g³îX^œ$ŠßëžéD½íí½NP'N(hÔ9bI¶§V~ÑçºÑÐmñ8ÕÌwnUeÞø'Nžœµ:ùÞ}…t«Îf_ÕÜ«�Žªí¶½Ãx–�õäK¯/¯¿ùùŽCyy*žõ{¯gß,NÞôªá%ÙwÖ}¾ã:oéJ#»¦ ú…Â'6£Ÿvþ`Þ`ƒ[ îã]‡²'Ž;Z ¨ÎÞçÏg[¥O×mÃÉMô.ùÎókI*!�Ø™{š“DÉõ:´y©âÂp9?ß¹ŽkÇOëïøëø ñ¢Un)LÅÃñ1ð�= ~’ð‰Ð|¦p�Ð�à5™µ& @;þ\~$ñNÅQa}p6wÇÖêXú¢ˆëQ<îÓÓàˆçŒÏEŒ û8…IÒ9½M—%>kûƒW€¥Ó ö$Œ\KëÛíŸ"=Uíº¦8ªãîƒè,˜Ð•ta�ð«RŸ}޾¬yg>¿À9~…Óô\tµ{×áøA<ú±äûdG×Âw²Ù\Ä�wä(xÀ§�?|¿nÈÅ žÖ%÷~‰<ÁÞ{V�nUè�7>«0<|±¥m[LÌ|û��‰±8Zª>Wqã|Áo¥ ìlCk•PÀêa„=&€¡m�1íÚ´kyqñÂùœÎ0ÊÉݳvH­¾öî�r‚˜ gƒ`í®²n´'x!RôÓ:Ÿ#¢*<™ânè€+ëÒëñã²R"‡¿ÛJ ˜»J?’Â5Yv²„§ŠÂk)$2yÆH´÷½°ùËö~,##„æÈ…”û"t­[®\)0—ó€ »X¶íß|¹Ïk“w–óž /+>©–M�÷NN4J3 ÑB>e¸Ÿ£=˹ÏB„û%<îžS§{Hp¤Èb>¤”õxy–µ3–)sX9ç !Ž ŽTN-÷C ¿ –qHÇ„KŸ• K1¡Ä`b{cˆûrÎ�—S/½"•½™ »^ ÖÍœ·=a•7ƼtþÓåø¾7ŸHh Îi/$pÌÁ�¬S/(‚ßo,N”¼=ƒàœÖ=›1(¹€Øâdâthâ­1ê lGS¥Ó=˜;$â¢ØfN5I«’Gȉ‰ ü©Ø%ÔóôQlšWÃw¯½‹°Á�!©£À$5”)82 oÿL cŒ�»gPL$1BcÀõŽ¢"yÃù *—½}&xLE�[[ç(í˜v!¸¶­–7ôŠHyeF­í˜7Í`U(µ�·ï¨1煮OñÞV…Äö’WàÏÁðRȧ ïm[ËÞÜ™×?HX4C®$8*ûq8É!fM‚›hš³¯ä ÷Q*ŒÅ"8t¼àô ø$åÜK ÜkßÖ¬) àŠ Òê8áÔ$h ²õhÑ®)Y/zèþhHøüˆ‚�iÝhŽÛÚÛ;šCÒ�ÌJÝ.îwDK  Œï ÷CÁU‘èÍ8€ƒ…$§ ´÷T20âYœ¢x!Ü„¿2ÄO„ž'´&ÀÑ4ZƒïpØo¸ã3{ „9m ÚæÏÈzÌqÚ¸ž©’WvªÕ2Ž&a¥ßxb�ê²5|KrO¤@ÊX–ÍLa #`{Š�ÆŸ„†4Yʨ³O)¶Ž0 ­H¸o­‡óôÅ~¬ò˜eé,tEG‰ue:ß ;68¨÷Ôð�ó�c½ùwÏîðSUÈ8Ú{gMöoø\ÁÓðËуÎ=ÕðÍÏix—w_öÏ<ÙžÍ!¾2Ò#wüoGŽç ¼ ìÂküµ5£GC;‚#06^´Ü>9™¦gìZÊIÏÖì3td/ÙolÉÑ·ãçÇŽìͶà{DÃßÛ~vW=åa[r¤9Ù^ŒÝÜ:è™AÛãåœã`[gü [ :lãÀ1~zÎãtjóY÷Ÿ}¾î¼ãä|À„~ ÿí?Á tó³§%{ýöoÿÖè6ãäîžÕéýá1ѨÊ#{ëh†q.f²p°íÍ®¡§ÞÌÙî9øÙ¡>Sõƒ~US´‚ž­ºŽÌ+q¯ç±Ý·µFv¿^Çr�‰cÇðÍwÞùÁòö׿6çÏþü_ý…å+_ýùZ»\�¸ñ%¼ÏÞ?º¶7Ú ¬fßÚ"m ¼«~ñ§]ýçÿ™i�z>4øÐ{ÊrþÃN°ÁÆoÓS¶wðXUØý»¡Ñ~ÞK××å„/d p?ªºéæ$Á{²�íh/ßþü[ÃÛz·=D;«M5ÕI=+®6<ž ¯îgKjž ªEã—=Ë>sìàÇŸ^X~ø£�——÷Ü_þÓ_zkùôƒ[Ë�Š 8+¯^ÞX¾ó‡2[&™>°ƒÙ ÙSzé2c ½ž$óÐê³nï—ßl÷–Þ¹”nÍüüµßÿpyã�//ÿéßNïhNºº±b IÏÕéòÑΕ—‘kûÆw^à†ïþõ{™,ðÒ}d[Œ†î“tÑï~÷�åí7Žv„×é J8ݽÿÑ�峫ñ¯ÖdCðt9I2=ŠœF“pzd[Kö7þóÒÑÝËçsï}öþ¥é`I—ýñ'×–õ½ Ëÿå—~±Â•W›I<£ëÍu�w�äx„³“z¸œ}õÍá¯Ö0:c<’>¡‹çýë½|ôѹ嗾õæ²ãñáü”W£û’mbò?zïÃÎÓ-É1ˆ?ƒ!š['ë¾€ÅØÇÑä0[ÿàÉæýæ™§Ëg?¾¸\Ê÷IÏùàÓ›ËoþÁùå«_ýjÕÆ§ã?ôïxGx«š—Àå‹—£¥m%,UÝ0¤/œ¥ ¬¶ú÷ðãå‡uµøæÏœ\ön=³œ¿é+‚h.|º|øIÕbéQh��¤“”΀htü‰¶ptŒUgñ\þŇ~ñ�åʧ�­[‰b°�*Šÿño¼[ îØò7þæß Ö«|ôlw�ˆØ'0‡WïK‡š}NGž¤¶äöàLc\½vgùƒïüQCß[þö_{syxuµIØð�ŸÆÙ– 2‰�Áýðy�ö¼ü¦Óêuœ6F@ák_>¹¼tìþòÎ¥ôy¾‚|+ïýèÂò�÷n,ßøúÏ,§_ysx�|ü 6´?ĵºÝ‘�Çó%ókÑÓ]gOW»zkç5_\¾ÿλutËWu'ýüi óéµäíÅO?ZÞû°@E“"oÝC˜Ø»xù†'�åãÿê:6ÖdçW¾p¬˜——KÍûØÑdT:à÷þð“ºDîÿÛ™Úxo Öt!vîjë6†Aú�ƒ:0}8t> k‰¦ô�¾\N7: š#{ÙèLÇÍïÕ)åa*¿úùcËæõ�âqO[ëáåÀÎ;Ë?ÿÍ�–gª*ñ†YÍ(Ô½�MObL¶šïÉpеïÛ»oßÎcËå.�ü<~òHsݳüëßyw¹Ñѯ¿zvÙW€ËÖ²]Üè¾Yg‹P¨Çß³#ûÏçžíAþž–:ãx3Ýyúîis˜¢wýø½wGW�Cb*W¯\ήÈß×ßËGn:lYÃè“ãè¤5Ü §Øg»ƒ)]‰®†‡ÂÉÙ_cÎ÷¿?ËkÈóýJ'ŠÖÚˆÙCg];j ~²£UÌóEí9plô:í˜7«X_“B£™lvW±‰ñϪU±>IñcºŸ¡$ÇgôæôN6«à:¼î†á›|ïì”çüÿ—@?@Öžà•ürl.IQbR» NaJþ„IÆ�^ÄBàãó²éWº 9Ëý’ƒàÆ7Œv¥*rS�Ž&%;ÓùxEo+�¼}çñÇÁÇgƒÒ9çù Ú°I„WÅÜÃg�á‚®ÌÅáƒà/ýÊ^“éþà;Yy:Sµ×ôgò¶é5o~½zÑ&ƒù±ðÛ"çáøîð�ãa11ðçCu3}X*ÿéÝ»Í!y°új³["I2dE²¯#Uó±€¹˜X «“òÆrýÚÕ rÆížÃ ïSÐUòóV�è˜:6hÎll¾ó{ù~v?¾0º�ät¸+näïÐMï|œL´·x�ÚÞ¹žüìÿ»jál ² ck^¾x~àxDkù|LÛ·E¯Ç�Nà-hɬŸ¿‡]Á_cOLô`çÙz¦nvþ±ö÷P1Pßó™¡U…0ì²Èúßù(O�®’¾¸ß“Íã£WHò9U»y…ºŸt$Öé`ˆvùè';ƒëèa }þܹÙÇ©În`Ï/æh/ÇM�é(?ãMl¯=œ„ôþ®æ¡ óxt|fm󎦂Hñò�ۧZÝÂ<àñîbV ¢®ž�g �Ø/:]÷ÕÈ\>ó}&Y+¸M�stÒ+< o%Ãù²t×5 :Ô•ýïÝ•¾ôˆÿ^UúêÓnäž·Î�s´·B1öðÅy¶ç×:R2‡àú³øÊÌ1þúäq4™ÜA;Ž;\çž Û\h� üF«>�Œ6@žÒ‡éa»JVõz±° ²»â¶]%Ôo¶Þ+urÞ{hgº‹'›Þ|íÕZœ6Hºs×�åB„â@ym‡8ãžæ¨¹òÙ‡“5DñtVÞ6µ­4D¦(i-H© MÐ?Æ7ረ zˆ®E˜M&ã@FÀ˜)&p«ÀÓ�œG�&S:wVõ+€Îq®íŒ�¶â�Pe # á3v.d‡Ìç5 P `jà%Pµ» ù�˜0D þ1(Y�9ôÂWEª ãý½}°|ù­ž$�·À™u±Ê$gþÜ-ûì¨êò '’ §Þ „k›#[FP–ÓÇ�÷7û=II¹‚¸nW»akÆ/áÆ)Ap&`“‘d/‚÷dq„˜‡�œXNœ}uyåµ7–×Þüâò½?øíåÒ¹÷æÜ‡-)\ßø¹¯ÕÒÿ�–¿žÂÿ,¦€© fÈ|Ù¿ûàÌK•â~2­Î)"e›Ï0'œ®~öÉÌe54è)˜qÎ s &/iö…sÕþq|JLØZ–‰`ÐÓÖã‡s‡ò#ÉÅ/Ɖs`^pÅs]³•y²àŒÁ­ÁAŒ™Ð…�ÆwÃÙko+§xQ�úϬ� ÍÝ<ÌÖµ˜î'áC¼!|g|5ÕæÛ~··Ýö˜”lÔíÝh\Y©pÉÚìÿTà7¦vÒèúqÙ/„�`â#içQT}^*t<±g”h1Œ4˜óJÊþÞ#; ­ž'`ڈ˅Ë7§â—Â"€¦ZA†‘ó›÷…¯ª¶óÕEkç€ÛÑøÇŸ^^¾tôl4.9  g«ƒÁw‹©Ù‹p;†£²ðv̸:{¬àHûŠ–8T ÔQÆeü|OÞ^Þù£ï,g^ÿârìäÙö§ë̳ù�#! càkÕœ0G‹ö¤q»<Ü!´ÅÀÜ^?kæökp¥ß.á½*°mX×P�ƒ›¯ ø¹·(¶ÎÍ œø¡$r˜£×yN ‡±82ÃWc‚Û–-*fÌ#Aîè~ä_)~„àÓZ–Ìkp9ñÔ¡³Õø\ìÚq¢'ÈÁ-Ñ4¼G¢šôêöáɂָÅŸÁÌ( ˆáaª·¦ÝVë}’\àäe(3h¬—2aýc³ ©XÏŸ5¬Ïy˜c¨Eγ]BÞ“<Ó<Ìé@g÷Lk•‚q`È™ pí…0„ ~²BE)^  ²vÊöcF]k/Ië œÂWÕ=/OÛãñ ~<ÓYJÝ:BÊ’¨‹¬€#)fœ2�ã÷87úmÌŠb»¥±$FÜ©8åè;p„_øŒÀûàGüœ³FËч�âãÑĵçd‚6>-¨¹R@àbN�Œ: mªQñ–]eî“�2ÄÉ!òZ Oå¹ »¤1�Ä“e,¾¨HŸÀ\ÏÔúNFÀÍ*å¶m]qaœÙö½�!;´„•ÄFᆿ7ßù1pU§Êœ`š,KÊ­lzŸÉDÕöþÞ=Êq Rø ¸µ6Kæ:iö1û�áÕRžoÂxño;qÿ"Ö –±ÍѪKràß=sF]�"yì¹qqxù­_ÿÕöê^8wtùðÃ�—?ø �Í‹>ø|=\»U•oYî‚‚pj#ye:Ú8ât¶Á¥èYò›Ó@Û;AÔÝá6ºAÏd¶`žÇ­�Ü7¿õÍœ¿—–ßû�_ƒ—±+ €Ç>”¼‡&xسèmøJãN =zÚšì$÷öç4 ÇÒ�´»�n {æ£úñhú³³É𠜜št]N °Ï%]jm¯#Ä£œ×®äxHá—ÊÀ¼…‚×w“q�ÀaH1zr‡ç•„´¥¹“ów{¿=ýëHYï‡$³%C$€)ÝÞ¾èè aC5.>·=Ø{&>í÷$�3^žÎ.+Aä— Ü“w3šo^ïÈ”îÁ‹Ûrú˜6ù;–s—nNÅ-Ôxõ�Wkx&üJnæ@–¹-iÌÙdÊý’•�úåϽ^ GË…ìÌÁ ?à¤ö¹æ&XA—ùÐ5>›mI_èÂp¦•vý8æZÆaß9X¦{Oø@Þym o§ƒWtÎù`휢Žqâtà”�.A={Φë7øÛßþÆ8ln–Låè¥s9Øäß$·‘7i<2ç¯7_º©dÒÝÙ}lºÃÁpu$Æg—^C—  Ñ9¦!„tør÷pŠî5o°_�ðí[ �è|À}­¦ßúìY°ÛRüœ³îÒ½ÌÑ>ñœl�·sÆLõLß�ZÖ¡bl=ðŠŸûØñ£­MÉX]ù†9Kö2/øa5Žü™ þÏ.ÏÞX‚D¸ÀÉùJIŽ×êXõ»¿ý/jÉ{&+Æž¢I-üéòºvÑe9ù=$¨mkm°¶²à8:(œ{’I»£-gÚ‚5^¸%¾hÍxíŽüì.<ž�Ás>9w~äÇ+o~nù+9 ßúÒ–× È¾ýö—ÆžK3žfü0¸qV;¼¡ꋎ?àËÈÓàô‚gôÕ_Ê× Úûó˜àª‰UG ¼Âm0¢k UÕ6ׯ\œMcÄÉÀpôfç]ogûÇcɼµ6æÐå´oödzp`’”Ã�ñ5…Ï*V}Æi�÷ޱnÑðÅ€N½+ø¹VÆ�Ž]üÑûWâ=lÍh»{ïçˆÝ½ý³??8û�ïüËn_“n‡?…Ç#!ð¸üÎH½›�ðá�ë>Õ¼Ï]泫’½ �ùÝÔ}®Äø››8:Aó›ùíšvÏZuvòŽºTÐéЊÿÊ–lÏ!³,ŸäwØ…ñ óþî×ð~°f3^¾ó`9‘¾ùñ¹ÖVˆÏîaNÒ»±†{xW…cçyF2Ӹ׃Ì)2Z5 ï ±'gñÇŸ]�^œ-»¹ÜÜ{7ý¡ß›Ë¥«Ù,ÍïÀ!²£çDO³7½Ç×îwý®]|Š}×óñ6<Òˆ«�ŠÓ¾ç=,¸vµ–ÙÁOK×iIZ`i£=¹ÕÄv…Wä1œ¼é~/ô+Ñæ…η~Öð‹dÁ�?¹k`Ò5§ à�GËÅœÈgKšˆ£Ž¬Bÿ*añ(rT‚ÎÝû¦ƒE~;þG°€Çt\àâsºZw�ó×js|£#->ølyXå ðýôœÆ{ïFÇ Ìæ3ÏÖÏ&W-I5c›×*÷â¬è†lôóéB÷ïtÌMúºBª»ùÍ®4÷+·.,ßâ¤ë~•ÜæbÿÀœý5ÉN�1AÓ`€nØ5dÈ X  ßè8ÎKU�îî(—ké©k’ù�äÓÍåjöÍXõ¢À?;ÞÐëÌÑè2‰¡ÏøáØ“ô²»éWk_ÿ [–¯óðÃãÁüáòÙ•ÛËç[Ÿ6=ƒþ .lnˆ1Ç_Òÿg�Wyç¸%Þ=ÒÁ°«ñ–�Î]\¾÷îù‚9¯-W¯^-á÷zöFE,µ;¿ž,¿.:RÁSùvéºÁ)ÖÚ�ožÎ,K ï·l¡„³Íõ^ðtÆ1¿ù�;Úwï^®T¥x§‚’/&gÈGp ›øÞøkÈ"°]4à¬{ãêÛµ ¡pS«v-}·ïƒK­Æºƒá ›ùÑf²¯xÀoÿËfƒ͇¸m¹–®EfêfµQPæJvCm4C’p›.šŽ¨+œÜ›^äÌmlÏ7öÌ^÷êH²“/èògã5æC>îȆ£§© æ“UÄøÃï?Ú¨ÒõäËéV—êªp{*3ùU3£?¶/]Z÷ÊÃ% ŠmlÜ ÞÁ}·@Rû'1e0§ké¿æ×�Î ¾�3û¹ÿÈ©é–ð`£JÞöv*ãóqîÙw4XÇï«ÐÔ^y:I„‡:Õâ_»öç.ð:£e@}´E»‚©Nh÷*®”ÄJ'–€�Vè\7³�ñÂý‡*â¼^‡â�Ëù%4>ÍÆ.‘0›Ÿ�$90H·¼xT?ü‡º´€Ú�"#À~G›ôR„ ôm:V*ü<Ó5x ~9:Wp ÍtFæËu^¶Dö3Ï;”Íu½#¦èÂ?óå/OÒµ¸ÔTæöººù;‚ ÆO½Â ¯zÿÝhÇ÷‡ãOd;»w¬ˆkÙIôW±°z)»OÛp:7:5' kl,h¤K>6² »Ä¼:Oðcô|.U{ëÐñý6W]£éÌŠYøþT¿ã'cO¶7ö._Mÿôl±!º.?#ÛßÜøãŰ]ùHøcÆ_›½|¿J/vß•+ñÏ‚ðl9gƒ œãû]:tÙ£‡wÚ;,€à Y0úeûb.p~øäàxò5þvéÂo9ßúP¸ƒVÑÔa6r ‹Oã·n®I9ŽjcG.ø§nfC+�k7 ¶Ó Å”T ³¯Ä:$Q°ÿñw>Qû,Ð{?Ù†|3tðmÙ;â£[ÛºL„W“伨*’ØÐÃá:/³•Ù>tô=uÛµæ5¡6û ?l½ü«�x;¶‰c³\ WðHó`ט/„°o:θƒë!}s{/›Ýq†Æp|m8’\Þ®Ù ×ÉEVèÍ\wç«BaÃÛÃ;v x™y¡üÖÆçŸCëüYb.ÂÉÊÏÓw‚™²ÙgbeÖ¹¿Ø¬ø¬ù9ÞèFIÂã—òwÂv’¡ÛƒÍ®¹u#Ó}dz†Ï áXPôÍ[ás^ùß4¡¡-ñ¶½ñš�?üpù᾿|ík_Ï{}ùåÿüï,½÷Ýì­ƒéc{'ït5?U‡ö�an†ó‹(eâlM …¼˜ #BkŠ®– ìQNCâ–­B`˜JD³ø›WH´³ª_É W/¼³|þg¾™ƒéÈ0b¦ý;¯ýÔËËÛ_ûV‚èØòë¿ú?†´—ÿæWþo!Ìg Ëÿ÷ÿó–�¾ÿkËé³_lL•¿9l3æe¸`Û"@Œœ@x–Õsò̫Ϳv›á G,%�#y%-ya`ù�S|¬£éްwæüàœ7& ÷€w–¹–gc%˜`÷ÇßùÃåìë/-ëjvp‚òþ4å�Ñàí[Ù˜%ng}ö´ùb„S-Úš PBÙ™“*[B ^Í9TÝC0lsNXóÁr²U�shʸ!ª0i•ÊprR)ݰ‘²=ç¶ì^Ù˜�ç…:Ãd9?ÌOÕØ(|�±™¢ß8jv”M[½p­Pb *)†™­†˜}Šz–÷:/jß‘[e¼� ‡ (o–!W«ØÛ�[¬e¶3² Âáâ!Œrë‘ÕÍåK_ø\Œ¢s†S°Ö úöÝZ‘W¡ü8<#ŠÅ¾Ä[ª4Ülmª½Ž–q\×µqîüàû´|ýç¾9™xàíøgÿdW:¢ó½Ã9›x»6Ï;ŸÍ˜ H <–<²½ìU-Ê:Wí—ÿêWÓÙÍ ¦l�íµq?žbÍ øÛ[ö!Á¹Ý•ÈóñG.Ow^œËõé¹sË'ŸÝXÞì<2ÁyÙE£DS±ÖLSÖþìH=M‰ƒ/`‰¡S®íç–2¸ÆÛþŒ“¥k&©%ålŒ9ûØZSÏLa¶©”ëÖkÿà‰×TÕ…T§Fœ.‘i®5—9/ aüÝÿ8XO5R8¦-’l.û=Fpû3JP8jŒ ¼#�å{BTû[óÓâF@ÒœîÁÓÖÖÚÔŽ‘Þ<èñi†·Àú5_°5ßÐu¥­&ŽN9è¶–¼b¾Ö‘ؖ¶¦Æìú u¿dô4° #Ð ÒTÆÌ m§îöVBCe’czþ–œœKx …`‚ªñsí[œ·{ %TО�QÖúšH?œå�מ`] ÷ƒ­ä+ÁÆ�sÄÀ[E;�µ?PÂß½Ú¼ÙMûOá]žGQ$ˆµ|2ŸÎS•æ*BÇéüñù¹¶õ>áÙŒ»'UÊÚüÆy¤x(<À‡®çdpÎðÏ~ííî[Çf¸RÎ%IÉ®Ÿ6œí�nµZ²›ËÍ[¯³Z?_­Je³÷Î>S l�oô=9b?q�ݱyj(�äÍÞÚZs;‚oá ÛÚ$øpP= )7öØÞj-dï´£RIjGß¾¡ýà¥-�5¯gé¬3ç"QΜ酶n\»8üòqrÎöŒàäƒï ¦kÖí¾Î°{©€ãgÐó/ý ¯S¥�Oܸz¥¬âSÃÿÿÂ'ŽGãM$iógžÙå…nà׉S/-¿ø·þÞò¿ö«eÑþþò³ßø¥IŠüýßú'Ë·ÿêߨRât¸ý`ùü¾XKóWkËødùΧv—9tgâ›9*†žkw¥ÎH²FÑÎ�ðòq2@0læM9 F0F!ãý(˜ËpC³Ö:épж¼,¡ûsFÙo¼9¸{OÒe �Ã?­çÉëg›ñÚäÖ˜œ­�®€à‰ä5ç'žˆf @€ßºžq1ü QÁ ~ñr­‚£ç à GYƒpÝ�A }µrW/×m¡m˜éD¯tF¨¬hŽ–ÑÜå°d(~Ü|¦‚¢q$’Ȫfhɼ§‘;“Ýõk`<>üþ7òÎ3ÆÒ,-ÌçÞJ·ªnåœCwuW§Éygvwƒaa ‰Ø’%û—e[XòKöO[–08` Ë ³;f'îLO÷t®®®œsÎåçy¿®5ÂBbaÍâÎTWÝ{¿ï|ç¼çÍé¸ÃT§ÈeD>ã3d/|N½5æËX¶ô•öÔA /�ÁG`e‡¤MôŠm*û÷Ùÿ {Ì®Œ “Î (˜a€õÆH�âZtÂÑã1t9ƒ¶:Úl3nÇŒõ�ì åzWAI~×3Ž ‹T<Éκmb#8Uñ@¼g93ª@ÿT>Ê¿¤;�W“Œ„_ðž© ²åü”çÙw.©ìËÚæÀgMÚ‘�éð«ï¬÷ìö!ŽŽC<# çÇû¬^ª]%3 +¿u¦D…9øâùÑÊ à¨dr¡÷B%êIÚÊëó½]1_«£KƒØü<›¶]9d>óµc‘¸pÂs6°g<6Jd-‡×H:‡Øñðàâwò' œ»?ÚcêÜÊSñÁuKóvLñ3uˆà|ÆÿäŽ+ÃàÓÀMžPa!¾ð9ÊqÏ÷&0øÞ@ßA òÐõ±~“!t *gÅÃ}Æ$§*=ýì38³î#›‡ï¦»#ãè�ØuëÌ£9^~–3Î øh·qPù.ÞFâ ´¡q.=l#£�ú”vÒ6ß•–šQ¯³“ç3¦Ÿï�˜¥î'ŠÈ·kW‡‘{BpÔ�ŽNÆ<]¸¸ä±8&1¨»êôr­è÷78+®xmàeüFOá;×-,åjsÖà;áèçutiQ2ä³ïßa?Ñ«�Ÿ r&¸?Æ9\ÃQGt«�?z †²WxË#²,%÷zç?yÈ¡ç~>vâ0•ÀiÑ_u6ñB\PghikŠ#jÀã¥ÅUpüĦÝ"p¢]%®öô÷„ì¯#©N¸K‹üOu+a ò×]¤‡àÞé Éx>S<ö9ˆ_aCÁçy@üx޼N9õ1u¹Ú‹K jy—*@IDATÚ‡‘¼ÉuL%^Úáa¿ôÙc÷NþÂ:؃2ì‰*ºÔùtN¹·hçäñ58c{‚§¤[A‡Êºx¤$©›ÏÚC¾4ЩKZÑ¡ Ȳüa,wQ}Å}ìè¥Z 'ä*ãm�ô¾mB px÷Í7ÓKŸý,¾ŒF®vK¥w]š&.ˆ[ê]Ù nÊzåÚ‰GȳÀ[ƒ“É;åûÞÇgï,ÀñÆïtfe§v€Éj¯<÷\T‘NMN�Ñ™žzáÅø­>eâ‚#ñX¹VƤ´iPÒbŸu2Ê»�«?ÔË5ù#*ä�Úû éÿŸÀWÆÿSÌùÿ뀸¯ÌªÂ·´¿³�¾‚CȈk:鳤3œÕè9iD+›j0ÑÀbÄW6Öã·ééî&iÊÄ]pbS»wâŽ8<ؽgcÓø\\‘Oƒ¾�W®Wþtf—{TJ‰C³‹ éÁƒñ ­«ƒ·T—¤U ALfËÁwžñåxÆ{o! þéÐddñ-‡ž¯Þ;0˜þößù»ôùï¿úËé�wÞMŸ~¦7õSkëäÅu:º0=Ï3–?+{äf:�]“?â’¬A9îßò3Y¥”žqNLå¥eÊï•ïL¾ "ã•Ý�TMÌã«ÃÎ9ßU ]d– ïÇ<š8lG÷DÛÌ›8âË= ûZsOV$V¢ÃYÝ»I�Ë�û‹i¨› t·™å�4ɱxUØFòfçá~<¦†u|Ætê:öÙZõ_y”Ð6]wá?Þk ¢¼t=Ý#¨ÔQL=-v8Jcó›i�Àa ~§©|T7–^ Š–°›6ðµÖPÜâs„¡¾MuÅuô®;£«i¸—ysßÔÜV]Ø#8‡×yðly’|Ü}R'ð°¾QÝÏü£3‰8_õá­üR'¯#@>2¹nĆ}÷¹Ótkd1�Ïí¦VZº{T¨6¾Ç€«ÑÍ‘�:±Õœ«¶¤I?êpú‡ð+eÞkéR/gVSà4»´•î�£²býžòuw¦ g'¤ Ÿû>ÉÓ"@¼#PÈýêV:ôyûzœ>º¿žTãK®MãÓ[éÎ$�‰øÎ€ò÷}ÿ"3–)$™‹™°« Ô®Žèœ xŠ êÚÕ3$Ëæ äöµàÞ»A‡®UŽ ¬#ÏÜÁä˜k)gÉ[Yâ!lµ¿Yc›ø�¯†qƒæ¹S�Û„ä–&ŠâèQ‚o¬§%«|¼qw–#¢SXÇ`&´oâç•ËW£¥íØèÃðÍyô©û-ž‹«>Pú\ ðTàìøZ‚“‹«itv… <Ý0Áun† œgÕ ‘dðð~&R>ëçQû|6Ù¹OÚGnó#?“¾Õ ÕËÝC÷Iåg-Èaãàj{“G¿T¦Û–Ó(ï­8e�¶ûá.�€€o]s/]zV"èÈ”Y›®‰µõ­Ð¶:¹uü…… ô9Úγ6;ãÍPT6¾â§n¤êXü·S“+t¯ÂNgÁ&…û‚çÁ'6­~¼@lÀëv±5 Oy ½ ÏSùÅcã„êØvœtžÍ$ÊJêÓ&lËw,r¨'¾´BÀÓsÌ—H|–Níl,ÈeÊíΉÀ3ö.èÙãÔ�WÀèýGß¾´¯ÞãóÄïW¿ð{eRteüJŠvIÎÛÁNÔö&øÁ[ôÎLO¤±G÷!ˆŒÞä›Ý=]t‡¦›5ëWîT7ÎÒÜÔLÜ©9Ž~×6ð'X ä:•™­à©…Æ�äøP¢J€§ ÔÚKsóø'øÌ8޾ù…qLå˜zµü¡™„†JMblôóftxm/ iæ¤䈎+HûcW6P!è³Úã­Ø'þ�yÁ+MâVÖ›À£8ÞGË<Ãñ­ýåAúÞ÷ð¡0µˆåœRృ®d'?ù�A&äf¿<ªmž¤8}lÚ/[­n·Xõ!‰d7¾7ÉÔõ¡t<§ ²œD9žèÞ’ÀŸ¯ÿ7wìA´Óv3}ø(ðãÚOE§‚áá+tgÁ¯@ ^fÒhž˜Ÿ‰f ;ÔB7’“E/ÈÏ\/åìäù4ËærB¨Pl÷°‚±W£ª¥p{Ã9Õ‡R,°dÎõ²ü­bi �"ÎwƒœV·†`Ùw Z3£ÌNU™³½˜ ݬ„C¶�ÕɯƒàÀìaØ1@•X2±2SÍð¥"²jÝ »ýì T´ÈfÒ9ÔHõ�•sGÆÒ‡Æ·¶’y‚ó=$²h&§gA„€Q‡’¶M;„¬Â$ Œ©³»Ð>�9¨ kT×ÔzY‘3‘¦ ¼�ÅþØÀ�ùiDÈøx¦›¤EG¦Î[™Z©‘1.€oGö]´°i·Phe†�tÀ¢fgߌ–ZØ*¼R*m%=’)c`˜^ý0¿íR«Áu�‚¬Ž�¢ÊØBøªÂoB(¸_["©X<ñü÷¤¶îÁ@zƒ›‹³“© aí9ᵫL0{o)õõr†éE²93æYRjFÌY…@&¡£Og ï]«ŒZ'ã6 ,VV†Áp$Vµ +s ‹gú·3†Y ?òÌS>æÒÈz]ŸÎN•¶^é®àz�@*fÿäŸý huú÷ÿúŸŒFÆ3˜´fvVd�A\QÎÃT­:“¸Â#Y!*‚qÌ„âÃ| ¤ÎCœõ«pt.NMâ7!ÃLO •!ïQ9f:ìKæì1˜ä¼%T3p¸ŒqÀ�<<_æf�JÆ(ì³ IX÷¨œH/ 6¯UØÜ¥Ú©½�ìW˜¦ú¥sZx©Pºß Ûž¾v¿àœøegh€·V²itUÀ„üNahÐ >˜ŽIÜ€tÓ2Nû¶‚_ŸÆFÎ2Â1ÖLÛ˜.*¶€Þ"_ƒ"S†Â¹MŽL9ºìÒèí›éòå'Óó/¼œnYå|ÁáákÐ%íþÀ�î‡Ph­G€Û5hn}Ow[ ÛÀ»Êº–³úÕð*Õiˆ“É32À0œ>µàðx—9f­XEP¶¡Ðí’1‹ 6iÁöïƒWŸ ƒrrb,]L“SS88†‚¶Ž ù:ãU8¢‹0Ž 3ÏÕéàKƒTeK¼ üæ; qH5ƒ(òªØëTg]l„ʘgE çà˜ÁU+¦4n2œsÿuDó6Sðø-?SùS/ä)âh<@ä3ADfLæ ½ƒ=\—‡»X<‹Ýêµ¼<æÇ÷ é,öâÏQqðLlÇóY*(-{`s6ûÃ…K ²F ˆ ˃U8‰ÆtTrm’9˜y¤ðÐÉÛLYÓ 5+­šû¼_‰Ã:®m9(¾×PSø*Huœ–0?;\Ô"ÐÜÿ³�‘û|—ß â¿ G sö¥±§�"ÙÆ¨ÀyVL‘˃va¡@{‡üKÇWÄ=umÑ£Aäõ9GXðF§¶ã»O®;Ž‘QêŽD‘ƒÇ!ÛÝ(ƒm¡£ f9ÉEÒñ>´¾ˆ|63UU…ÕçÍÀÝË27¼X˜ŸKë‹S�C±IýOò?Ì›½‡C‚#ßé—ô'瓵”Wéê[yy¹<Èu5·´¦Ï}þÒÔØýôèá�ßöc-éëo¾‘†.\"y°“`=º%úäKŸútzõóß“~ë~1=ýòKTˆo‡þs~èÕJõéƒÈè†" ƒ£V¹½ -(Ïsà— ·Ý�ÐFB¾ÈCø¾ž¢óÐDu“'•ÅÍݽiräNtŸ°•m¥åÌ%Ï=à¢�’oV˜Ô¡L‡ÅÚóX�»õ%Æö˜ u"Ïçµ}as•ÿË¿=þ@¸øœÌÿ:ƒ$ø<ß�ö1ÿr—FÄ!e–wæÐ�ªS?g»//"_²¬gwÔLäê&¼“çCóò9õR$£ò³¦÷4ü‘*&Ê™8t€ãÕ ˜S^i¯ç#¿�½ç{;›Û*õgFð<-+ b#9‚O°WwWgÒ(ÞÃHŸÓ¹‰ÌðêB:3ª¡ó–ªQ(H̆ìÝô-<ET y|ŽÁ1©A:/aO×Ó£]4Ú¬hÒHŠJJ® ½ùü�:¼Ð꜒ð©qœb\=ÍÄsØs÷GGØ+à‡rKÛFÚ#»,pI�Y˜Ès•!¡£É£�‡2Ò ÆÌ²ªUßÊû•eë8Ôݬ¬9s0êqêYe/c1žÁjDZ5¸óÓ‘£óÙÑ]Ü0ô¯Éæ—u`—³ë1TÝÃhEÈÜLt |cMã“$Òæ½Û^×`åªrÛ}¶\_Äðæs«úYqðmõWÁ¡<âW| LÌÌna  µòÚë4:¼ÇûC™ùL¸ØJ=’\çº&\ëtjÄjy¯¼Ð‰¨LPw6 ÍÒ˜'A`hF$=®£»†‚5¼õ»8wšñ´!MêÔ1 dž¤™w?$Ùl< šzn¬› ÜÕ¹ î¼×½fï�‡Kú¬ˆk²änתsW+n„£zœ2ËNR&yÈ+t.:ž’­-¨Xù:s ÆóL«?#É滑°a¤'ðC™ oóN$>?ŽÊm0¾aBx8x¾°v^µT8çzZ¿ÖÃ'¬6šg�m ­“Ä$ºmù:UÃqãÕ<"x€º&ë~åX`ì…°71Ezˆj q—ï•ãò6ƒ+¶$ßÁ± í‰OVÞ5qLÀLë$ùPO÷Í5J{uÅáäå_YèN½“k�™ ø‚î݆üŽ?¹_ša®À(¦ðõG.}\P\±mbtüâù:Yw±ãM¤pw• :‘å]°Öž%^²¼˜W´Sdݶ~?<âøôZiV¬²Å3’­ÄQO\'‰A…öž¶¢6 eùÙñaNM¼rŽ!úvG%Ÿ—p¯:ÎüÄxyÀ‘Í$vu3WÚÿ#C´… Tq)]þ8î‡ù»+Ü'_vOÔ9Å=ý µÇ –X-³o]k=Õê6ícqL\…§sCçC>ûâ øfÒë=gS'šUcUÈ™<׫“êÀ”÷ÆË½v!{²OþèÝoægfƒSaK95Æ0àà}ëwâiBÜqnÿß_Ò€4xwži¿ cm«p�#ïÜÃFtuu’1Ü«Fµ±·©x:â `ñ-üAÚxÜ_¡O~&ÏêÁ÷� ÒƒÏ ~(€sÒèÝÌÄ;ç"ïÖYn°*K„¥:‹àQgz¥[£ã©³çZêähž)xßY²ä!q_}G¿6¥/“Ô®\»Žõ‚öxj—¡N‚‡�Ç•in}…OÜv>ò5÷B[9}�•t!â8Gçïž…¯’ñæLeÉRЈ¼�yd îe}m$dVcG/’a°@Y¨ŸÆdÈe’´QdáEuð@|)؃G3ø$Üp&ôqèñ¼C`Ž+O9ƒ³»c—& &~Êä÷a³SŒ¤nçm½]há¾F²ÂáÔ>Ý©º…rt2‘÷FÇ)öXŸ€>u3_âÈüÜ|üÝÖÖ|¯ž®g½=u©x0¿4I`Œûj\70—§ªJg™LQ†ò™´ÁšL w�„bþ&Ðó£¬ÈöM4z*öA{{¾$ƒq)}ä^Ûfg‰À³ÓÓè´òRµÑïm¹ŒÞm—5é:qÄJDVá%ÎJ×~gG‹ýüP|Ro•ÎsÈù¯ß–‹PŸ2Aþ_“ÝBµ¥™60x±‡.É=ê€"õI|ƒk57Áe&¦&9~áèÖ#7¨dæ^å—: rU=\ù¨œ“‡˜u_Ä+ßË#¬Ú6¾$½Ÿù¨Õí2™ ®…¹ûkwæ�� Ö=ð‰ÒuF /@ƒ¡ŸÐXŽ{155Åu ð&0NÐñ‡?ÿ]6¦ÒC:±äi¥ /Ð×ö/s’6L–ÕOhB‡-åµ�=,_ü¿>Þy:%Kå¯v[´ö†®µõ=·}‹b9»¥(�œ‚~öÐS¡ƒÆ&äpѦ×RÅ&3Ô�q&­½,ìÔKZ@«{{Œ€clb+ê‡5Y ­Ç6þ qBý¥®c“ÊØEæ: ,‚çð½~ïvtàsƒØØÕÄ fHÈŽÀô=ýØÆ ´«Ekwh7ìvÖØ‰oËB¿ÉÉ –H¦ –ÒI@½z•VõóXtÚÆ¼•Ãê î›s¢Yxzo0N$]»ñÅ@{c¹ÙMM t56²ŸŠàm3ïM(s Ç'vÄ�ÅÆ ´¶ „+·í`l)Úê3¦²Ça�±‰Ù ‘pç!Å=sü�ß—çÈ‹·è nBtxbr^�Ø–´.'1©Ä$Iùá©Gb�++øoLÆËbèoì�~mÏ…;»±ÒdtqW[ÚCGŠ–õÈã%:ïáëˆêǼTœöµ Ð(k[Çö^Àßú “á±à8Çš›[Û£Øcƒ5EñxdÈVZÖŸ},NÙ¥KkSƒmØÕµ‚tßÛÚ;ÒÀùK̃Ž2Ðê]ULÚçˆnÀ vÓåõ M’¤e#ÝR ÿÆæ6ΠULÆj2'ë˜\®¨ÄÉĦÈì‹ì&­À ¡À€Éž¥lƥƤ ”Õffm` c˜Ö6¬ªC�y0¾Ï“˜ì‰ Âêp7DA$€›©6Wj——my ~®²©·ïp¶ ÙÓ/ô¥& g3Óë«ÒÄô<È?�ñAE<@��M�ô:SdÓÁ8:ᬘ¶i:¤’Ý a¥2 >æ(ã‡çÀ{¾…™`¶éPI çQ¬‚Ù=Vv"{‡qÌÊ/m��2 –ÑaÔ#Ä@ª ‰ÙÙ2Qß‹2¯ý}²þ+{dÁƒð¶áÞç;Ïb<=f\±-må™eTÛæ�wH:p}V Âø¹gk‹¬SÌO¼ü—Rÿ¹Ë©gà c’ùd‰s§g' 2^}>’#Tª9¿dgý‡÷WÓø£‡éê“OÁ hãÏþ:WÛeêÀtoÌöóL{³NÊ£‹ ¦ÉÚ÷IÂ0ˆ¼KFšJ©¤¹Ou§˜VaGö¡Š?V?F– ð�T¼C¸S�A•è* ²Á3biZ%pòäSß�~ä¯ÿ8íbG ìΰÏO鏯™ Ó@W Ĭƒè��ûŽvözÜÑp*ohSÄqP¼ñ •å=p;å²L§Úi.-Ì…Pà¢À™ºc‹ã‘lÁ½¶ŸÈç=—<Ç©³K‹"…“wÌ.΄£F‚0�1øì lˆÞê½rŒ�Ü1Õ3l*v�ÊÉŠ¥z¯Ñ•žþeÚ-¦ßù�ߊ–½ç†.¦÷ß{;½÷Þ[aè›4R¬"ãy¥¦†Ìù ŒÿTAV,¸™>¾y#�ÿ{?“®]J^ÿ8èQÅópóà”ÂTE\ãLzQÉ‘ÿ”âx ìféZE, \ /.Ë¿(Ò%è‰0¦ ¡ ¿Ý5Š æGž¦’b¾Ê¹Yò9ð@�gó[j|r>ŒâZŒÙ#Úœyo¦øI/ÎÓÎâÁWƉ–ñ–¾žç¸I;:ÛÏÀñF¿$IÆR‘´Ý»ÎY­&a;ƒ÷à÷¬ `,Íh4ë¨Tðóž™lòeѶ,Ʋ%‰>(#Á¯¹ÇV¢ÂŒ[Vâð mF��ø®@v<³Ò¬î6 sÀ2@Z[Â�wža;ðZx»Ìr?„^2c^òq,e �*èËÏ ÍÆ˜ÒZc 8Œi›;•¯rƒÂF^æ+£Qø!s–7X}Šp t£Á�ÃÁ—?VÜ4ŸŽf~ËãKX¿Á¾€™`—^ŽÍ=&©¬h+ 8ŸbØîÓöýYh€¼:ÚwUÅ9é$~¡-át¨¤Â°çí)ûWK½b�=d}+´vR ]!¸Ö×ÓÏðˆ�0¶�;("�œM2ø¹/ Gx\NÀ�úË‹k±WÂKú²ÓËÉ ­´¶‘EÈZùµgÊE{R`(þ¤É²ûIFbM¶•®Þ¯B¯£½µ£>�âMuÉ.|_Z‹¤!õ(ä*½ed°ËÿŽ0楋=œÄ&þ˜ ´�iˆ”‘À¥SAÜÙC)v®f$V Ž{dŒ,É!6õú�ø"¾kÕ’ûNÏ•ùh¸F€,ä …É\ÿ$/8¶Ëjjz%pùÞ½[àõ^ThNO$£ŠšÄ´sÃO°§(» Íé©—>…á¹Á_�°]�ïƒ_1 56Ï5²'Ð&ŽJ3M#@¿²;‘ô,­‰Cê«;È ¼}è…�y–�ÌlU¿ åú¼šÔ9ge�üÆ@i8@Y¾ç¦{~Ÿ<Òà°�cƒÝrÄìXá£KÞÁ ÂŒÿu–h\ù£Så¾ 1~l"c*ctÚí"'@Ú¨ åh#3Ä<'Îä u [ô¶µÖñ æ�®$¿«Ã 3à,må¡=iE½Áà‘û¨�)Ã2)Çdª2xH ¼f—{uVߢ¥X9c²­Æ= M=} Ø GáQ �WP]"}j œ½†ïå—4bw|¾º‡(£^lbªr$:Q/uÖ®#Z爽g ˜:Ô =‹Ò¿5d[¼¤kuÄyx*ÃÎSÙRx­™êb/ûËÃu|D•%ó`+x2p¿�G580 @²œàOÌ,öß3 ]³{hú�ksL×ä0™˜{”—:‚t\í¨°uìñ™L*°/äÎûXžÎ|DöRmνã6¼L™Žàô‚!ó¡xȸ<�Ϭ©‚ă›òM�³™^\LíT_ë4Ú ¹Á}ñ9ëTDhä;Œ2RKÀ„¯J’‹ÅStÒž²Aùé^”SïçÝ—]'“ÂqÁõ™ÓÒ‘”±�uÿ]‚²‡å|¯®ò<Áç…¡tè‚ÝåL8«X‹/¯–n×ׇ\O“q–)ÁIa`À-K,#I½¡{Ã6‘àÀ|uú›½ÎA—´Á^ÆÞD'¥ƒ…Te—.“yu TcËúœÍ#H,Q'¦p²�`84™“ï NyL‹ôá{ŸíÜ]g%4,��=à»YòÎØ9CÀs‰§§æÐ1Ñ…|?[¨Æ¦ARØ›8=Êq „Üd}BÔ Åõ÷­Ñ$8ì�]p^Z6©R=ÏVÊ:Õäia3ˆ¶¨_'˜í¾É3<ûRâ9ÇNKµóØ/ÖeÀø ÒΉÄ^ÇU¯<ÛéšMŒãüŒõ»[®_ÞÅÛ®¢šð\¥=ªÉ1§ð¡Òü^Ú˜"9�}q¾rJ1EZ [†ñÂi¨þ ¼=—3ì`UÆÚtFgÝ€+kÐ>Œ®Œ”%p°«¬=ªB™Gù¥ î“Æ„¥U0õTÿÙo«Q&gg±·9“�N#²hñ?Ó3Ü�Š-`æúÄ7èg^IÜ#.ÊßCç÷$-qE&ùº Òß¡M =ˆKvÏ$�²T™Q“ú•º´Eå£42|¾uãç÷îíOøŸ:¤ÇSˆ‡êY&xŸpËa 1tÌGgã:�´dû^uk+ÔŽH,T¯Õéf«{ÑÖÐù²“Ô¢Œ`^[è_W­–á¿–f¥ûú�%û‚,°M¯ú½”®Ë}wþàël}𳳿ýΗ{†È ¾VØp�€Ûú‰}ýÙLͧXagb¨~3Š*Öàe|¦ ©Ì ²hkžÔÒ½¿Ñú-˜1”ÁôÓIKê §Ç ü×Á_qÚDÿ£cù¿£ÊÓÀcþÎü?ðÞËÛŕؔÓd°LÁÀM[èF¶Ø”ÿˆI¥uý©Tû§jõLðGƒRÈñJº”êê›áÕ$ÒP…VE±Š¯Ð}¡mùè=’îOOqüÛS®Øƒ=�½AÐ%wº:R$Øç¥�QT¡|…M�éøA‚òÚ8¹¹ ?µÉ"‰IXA>Bß“ E?]-­< ’675¥÷ß7ª�Ë<ЇÄåêÆ®TÓBÇ0Úˆ§Ibk}Sjlë�VÑ“N8ç” :´ÛÞÑ g-¨/\¸ÿƯÿ�4E‚W,œ�•YÛì‡`‘þâYúSH( -P.[ZjU]Fz¦¿ÉÐû#yúNv·]ƒAm÷À—8v:„ÇO©ßûMàð 9 !˜„šç~[Í›ØWŠ¡PM IݤŒ}+¤+ÏïÐà‡RÿÀ@ÌÛD�ÞÞ~zC†ïV_µ¯L?Èl–|%g'·§rð¢znÙ‹�‚|4!H½Mšs~¾ä=&tjCÊO÷'°˜¼�$×§?HýžÅ>døÇ3¹F˜…ÈÞÖghwì:x÷έvp¼Ë6±¾oå~9~*;ר×oá«2pîçÅöv3™QZÿ’oÜ´;Åm¡Édÿ˜¯³½V§so6Wçežâ¦…v(>…VôQʉY”•£[àC6¸®~[QYÃo®wü­v¨¾¢ÇãüÔÓõ)äsߌ‰0¾õñmp³‰c‘Ú±qHËìHé¸&˜˜²Œ~gÀÖóÖ <³¤ÜcN±äJìZµÇ Ës,œ<ÞC>�ðð~Úá«C¾©×»mþ(ÏôàF’7ûçs j C“•¹—/_ ûyÞéXèáºL i ÍFÛt>“~÷I˜QoÇz ‘NÔÕíµAÅy”ø ªdÉV1Ññõmê3•ø$a©,Wf´P—0ñYûYßÁ<³¦î8±n}ƒ>'à.yl±Ej×üòÓ—Òð`7:=G�Ìã÷$ ¬ {~cüÇjh}ØÒnkkÖX[NÀž õ™è)ú+ŠðõXýÊÀmuoë{ísñÈø�ñ®MæÑÖÞðX"öè,n3�êÉÚõýÁø­ÏÝBÏ„Ÿ¡ ••ÓÙkqŸÝL^ó$«ÿ77ˆ±Þcá GíÉÿ-¶ÙÝ_ÆïQÌ|ˆðdÇ�ŽõÕ¬S”?ÉcÚ:(ô€7)[›Sk[G¬aS„¦¬|×gÁBùßÂ!l1ºeÉ\ceq�X$²ÿµ¶µÏðeS&erØÆú"qÊ1â­µ<³4MÀoÛ:»Bµ-”¯ÂVªÇü=ɧO¿úr“5Íõ&4‚×ð @ŸŽó7‰†i†ÄÞœÉjùŒÉÀ9ô›êu}ø;ü$’P¸É|sƒ¾fô.æ‘CQ…®$QÄ‹y©g¾J%¼ÀíVá¾_0èíµ­÷ÐÕãì¦ØTÏžÐ1@|Uº•qº6¼2ÑŽGXx$[%¾z‹<®·¬¤© û.Oõ÷öÎ4¼›‹1]¯¾0ã9¡O‡LÄ–æÍM2µàM¾ÂMaWšü015<ÍbPã ¶‰olja_Á£VôñÅØ«-ŽUØ ¹ü¤6|†'¥èLŽnìà `¥M-Í‘M±Cë!™[N–C¶ F}´¦�:é¬\q£ÌJÙ¦•“"DƒUF“ËÃPq!©P«ždÆc¢èî®sŽ9NÛª{Î¹ÌÆj¾âùJ˜g ʶ-Ùuê�O²@´–ƺK!dÍZ¬CXo’õùhb’ÅHßd£<3•óraªµEB0åz˜®|¹‚J[àþhçÀÉ�â,r“T2uتï�¹ ƒ 's”‘YYu �fÃPŠ Ï³4¼ šGçÙz¦sžqE,•Î̪`r�‚BÅÜ*z9cή5$>ƒj‘)™ÝÌœ �¡BûÈ,¦í°Ž?Ïzïä¼ç2‚§©½%t.}üþ—ÒÕ§_Å0¾�º.°®F<�ÒèƒÛiøÊS!üd^î�p“ ú83Ķ鰤ᾎô›_øõtýo‡Ý™Jì8pó^�ÔÀË DÍC…ÇËf�(n4ÊãM ¿M»IÖ�Ži•¨žZðì!ä h÷^æ¤PÑá-ŽxŒNq[…ÉýžÉòC–|Ms±ßûÝßæ¼˜›œ¯Âe,RE¥Ì‹½ƒÆBø„a1#Aè¸o¶,©'Ë[…_EN'«kqŸì¦PIö™Õ›r9ŸAyŒ >wªÑš1ép:ñ Ÿ'A«ˆCQÉÃ]¡,¹f xlðˆyh‡EEÏ,âèTù – �met0˸ò´,·*5wh–™N0ÛõÁ˜¦olÌ&ð‡WËÌŸÎa§jºšÁ‚ì[©²¡-ÚÃ^æ\;³ÙU»UÐ=+±ƒ{AV�óÉs— ç9wÛ Ü °ÅÞö°3$ül¯B' µbÚfOÊxpŽgôu£|¯,±oG©¯o0 ô�Ko¾ùFd9?zô0]¹r-Ýøà²CÁyÖ×ÖNË0vjÚª¨ b„J*£?ø˜3›fÓë/_M�$â”XáÅÙè0ÝC˜¦ßΓáïËéñ©D�?OÆsõ'+1À&ùF)ÍO�¥ó}/§Þþ¾týæíÔÛZƒ‚�ƒMøj`³W*¼*‡ÂÔV;:ì«øÜÝ2sÎ,ØLY&`Ìû=΃Ó¯€‘9„“CZ`_M0Y~8¸PUÎÌ<³Uè:‚Ðó‘*ie¦QbkÒJªUù§|jÇDæ&=køjL;?•—R„˜NÕFÎf�ÌJø�’R§W%Ç*ç(>nô<…'é¸ÕˆÇ 4—Ò–Ä€É6Ÿ\e�5ª¼±¦#ðLe-Ø0—äÄ×Ã=ƒþ(Î('ò)�Å!dy–4É,â·üœ�C1Ò 1x{ˆ v *²&m8¿,ø!” j 5ø\âÓÈÙ˜Û&ûwÀ-a>:¶ :‚Gã¸$xŽß¹7VQ«l©„ÈË�»üÝÀ•Š�|róp�ï͔Ԉ. …°”kq½Æx:ˆâŒöÐj÷Ɨʶ °WjlæQf‚3ë0nYŸ´m0¸„s×ÌD5@ZŽFÖ<üÑàˆ|ÀŒÄìZ¸÷ ³¨`‚·°ü v�á^ ï©!`™ÍœwhÕ~8Ρmùo‚jdwuuçqNdˆ¹‡Ð§ã„ Í]d:Pz•OâdÈ x¾�®ò ÎG®G@ì1<…uNЪg©ç5ÏU'ˆVððk?“ít@Yéèò¿PžQ.Ý;ˆäóðø¤™{¶ÛqÞa@^ L‘×zþ¨­ûd_ªit¬qF„Jh.g°„jYbÕ!{ày_þúÝX»ûõçá%lCÿ�°¾Ó/沆SV„ ð)7AÂyI›Ì:pÎ]¼†AЗÞ~óKÐÎf:GV§Î¿;·H|¼^�(…£ •�êªþà�«+fŸ¢xƒ:RâÈè*‡Ž¡¯ÂÌûŒ"«L@ô=&à+i3VÉ‹«Ñ÷¡ÇCxc%³ÊayŸIv²«Ãúªí�­Î Ý�NàmTY:Ï�‡ÀCŒÀUÖfU—<ÙÎJ¿UÈN [5ŸÂkä±Ò€úi�*ïÝXU'-¦&:ÚÈûªáâ·òE=YÙ)ïÞ"ûöäT9€± Mé_‡Ž öË ­ÜÒQam%˜pÈȃxHèéÈoÇ÷\B«¾+ Y�Ñb�c˜Ln4ùçù¾ œ­>²;Æ <Ú §‰‡vrÚVá™¶Ò6p¼‰á'1àž9™52G£¨x¨ÓÈ·U¶ÔÑÊI:f êø+=Á-«ý5øt xž¯s6ÐhÛ5ù¸I”& X; ŒgŽ(�nŒ'K§ÐþYá[80¬ˆ÷œhá+ ø›lV„óQÃZ']™¦Ó ç�£ý`¿œt}fý®Öù”X7Ï·ûVµ�:MÃË}¶Ún:Tuv˜ l{ôÆæ¦�mâ½Î0ƒ¼Y@C�xéô_NŒ$áÈW…cœ¹)3|١ʹ*KÕÔ5uJïÎѱ²ñÐø.ty<ÿ‰¥$n. s¤¡Pð¹óå$òÀ/lÛ!ßœšcÊÔÑÅ qXÇ—ö�I‚e8äMJQ¯«%é@™mç‡c‚+‘…ެWnŠWʃP%¹L®K«®©‚ùX…o²¤üeYä¥:|„‹/a(/QGtbê4Ù1 Èeð"l7®aôÀ�GÒ¿ÕÝjiWY…ýxTŠÓ†=‰Ê4îSרw®kìñ&tãÙ¾¤ ãßÀGçê…‰Ž·3pÏ›Ÿ_Âζ+°÷6îaŠÌ¡œæž:kÏ@Ïyù=¿åù§ì£û\Â~HëòÛJ+yðÈ —JøS–$`Ÿë+¨¯+¸w�k D‡1& ^åýÞç¸Úqª‡<-¶ÒË1{¦þæ|}©I iG”ˆ 6ŸÕ°ÿëâ'7iÃH#%èÎY2C.-CïÂÀº¡  ÆŠJ6èX|sP»“dÏb!Ì[\4a‡ø¼ž|†z®:�:¥¶Ø.|P{>ðQþÆ{çk*Ëà…kb1:þâuÆsÏüB½/þæ­öoGOgðþUœåê{±—@H<ß÷¤[�cp™\Án…ŸØâp—ýÒaÚèDW@ð ~¾‹ 2Iüò•«q~ùØØöÐ44Á¹ÓàtuKCêîí‰6½ÇÇå©�$pý êxÎÁ½§í¤bð'%ÀþÐËUùüÿçå|ã\½ŒÈöú—”Ô�þ"¿\¾4fõ¡x£½ÉâI“Y°Ïyº³¸wB�ÂO€˜•Ê“ìn ¬Z]¤rl �r½0GõÕˆ b‰åtåM º«Ÿi[Ú!èŒ'Do¼.*£‘×Ê`?«ê Ò¶^Mí­©vwüx„NX“&ÆFÒÕW^KõG,ýþï~1ݾù>znsРøÙÓÛ|Ò7Þ'æ{¦CËÓ:/§º�gS¾q3µÏ•¥¯¼÷ÃHgôD}'&.ˆËVKúÔ¿Ôc\Û+U¦šD§|áíbR,ØŽî”K-=WR±ûJ:®"P_¿œVnަŸø©ŸfÿkÓû¯¿Ì~âÛFwêìê·HJ¤ÀJ‰]À 4úÊ’¸låKÒ-Mƒ/qô]*+ÆRaì‹iu&ŽÑòìß35Ó[°QbRNì�õfq_Ð;üÏ1€»GžiKëwä LÍöéèÕ'Mh(+pÄ(¯ l„} û´j·âÜïÔõ×—ç±ÝH‚U=¶A:P&•’|äK<�îïß¿G‘ÜÓQ˜cµ…W ´°¬"øYC\£™£ Ž)œ›p|θ_ÙôÐ]º'·1?äz¬­±�°¹Œì��"jõ£ÓÛ¡•}r;÷Ñë´É=ëÞ¤'�ÌÒÞgl îZ›ššSœ«UDo`ª·Ú­Ù*h¤ÃÙQËŠh€Øú ¤]éC_—>,�‡êè$PËw‹âõéùRŸ;+Ú´ÈU.Y|:‚ï9ßUp¥ ¾®=V�L2vfRm¾pý†ÂÖÀ¤º½AÖjöH>±‡Žl[m;šÔ Þ.¥9Ž>ƒ¶Æñ´ÉmßnŒÍøŸºt´ÝÆ^¤°§†jw-å;Êx»„­òQw¶S‡ëòžëÝL%×?H]½ƒ©½«‡ªçF®Éx±GQZ™l;zé¯ÚSþ‹«VæwRYÞ]^L8°³{ɦi×…¾‡¡/G}¡�=÷ìr“´!Ÿ{á…Xÿ2Ôêšš‚ÔbͬÝJxÆ=obj6µã#0Ñx‰D[}^ÍåÍ¢ <ü*shLþ©üw_äS"Ð!xë5v˜ÒïãþØÈNî}Ø«ð~»p‹[î—üdŸù›!¼ØNöû•÷ò;ý¹â%,;C#ÚJÊ÷Õä ç)Q×�ÇkSVrŽùÆ&E1E}A•t<¦°†u/’ôa�A÷-æ182еå¤Sõ<ùŸòâÚRÇ•ŸË_õC8}†ëtTV†ä¤YèMØÛ¡w…b´Uü3&wø\»öÙQ`qi.MŽ�„.pã£9"pš6ügr)xò ò`‹Øh ü©©³8Ññü©*£c’h×?xŸ…ƒdf;l��Æ”êA@Åp9Ôo¢µº-2yÏf¨ƒ‘xþêÒô |299‡F`*Ìè×9µËÙ®ª4¨Šd¸y0–Îõw§îÎÆT³_ ƒ£œ Ðm)wùÎIVÃæiQÛÞÑ­7 ,¬‘Íb;÷62§5$#°A•º«È¬2d PdËcz�›(ÌõÜ [ìsž»ŠtÎ�SB±aÌd7ÓQbðáhà{“†­ˆ¡" ^Á2‡¢i«ž]2Œd8·mžr8j‘*˜º^·º¼Õ [Ý-:¬dô*zÍœIÞ@G€¹éÉ4uŸŒ\*O+0Z<ÿCÅ˪½h[Oµ} ̺Cæüe”^ÖhkÔnw{�@ù³©£»?Æ3SDþ×2äM­�ÁH…ÁƒÛ¦Œ™«Ï½–þþ?LϽôL³!½óÖ×Ò¥áa*ƒgÓ×¾øk8 8gc¯¶8``ôËs–Œ 2 ˆÁßžÞ Ì… ýØ=„"C+ã�¡žŒïkbÿ.>Ið¿“=ÜF }�VAÚUZ&èñsr 0–ûÚZNõ7[=˜ü×ï×€[Yzõ•¶YÉ„y)É:¨JPlÌ¢l âyxÇ8Ž®\<—®#äÁ¦Qé°#ÓA¦óÂ}§({WºÇ:ìs<¿–ç™ÞügÐKN(£² nmçê@CS³K©µY…í\9‡!Ü™�Chß²´|m“[‹ÐÜÕÙßH—.]¾ì ÂêµO¿ž~þþUºw÷vú‘ý pzÂØÓˆáü/ç·Lwšs.ªsjrÊ-NCƒý#öO‡7”ß5‚Ò`©g”Àd/Jp O³d{»; ¤Û‚‰0 I& 3SàŠÀ² 2‰º¨¶`3ÓÈÈHnnd-:Bs�VtV©È7TXÜc.ζ•f>½´5„Vl‹S/ÓÑ™íâ%ø©‘bk3«¢…6F¼c錸z©/=ùäEÆTˆá‡ÿÉG£=x!3[+²8qòØß^€¹ß:2½žä~aš9ïtJDGÀ+("S’9˜€¡©P‘7Èk@W/DÆ–‚[EÍï=ïG#¡ÀÚ²–ìV˧³NL:xµcôw£4ðìæSœ%@–�bjF,‹À¹êå�AÞǧòDeƒ‚% ÕØc«à„t,φ½Åú¼ƒ=´ðGA2˜í Ùcy®!ágb޼/Û*³ë¨ÒØ„F¥Mù²t"ý�•aUfdì…ÌQf©(tihÁÙ Êgˆd¢Átýݯ³8¤XƒÁB•âp^ð‰J´Py±xì^oCÏVÐæH*1qJeÊJ±š¥!3ôupÉG¢r‰¹»•‘3g�|§ØØFJÅÜý€ôà¿(WÌ™Çr-U†(~¿[êIª æÑ(òUùBÈpȸ¿ H*÷*æ�]izfR0Åu⚊<b`ÐqDSQSGÛ!Þ/¨ó˜•üNœž«5 ÈºWQU�ê¬zÇ+®Ã„„d@QüY' šIâ ò@i‰Kì‘~à”¡qn¸[‹²-nXe#<åC:�ýí�:‚N=e’Š™ò²Œñ#‹•ù‰«&¥(Ã4.¤5@dz]ý'ûÅv�ÖPR�×ÙöIxÙVÓÉ–Ðeмœ>ûO89ñ/œ$ÐD5ÙÈŸý®ïÃðfú胷¨€yž³§ºÓý;×qèœOÏ<õBZ‡_ß½}'ð]I0/€¦M4¦ÁÍ`Ü6Ø[>(KІ ¢â$‡ h6�,©ü“O[ªmõ¹=e8 ´|a¼µ�˜-Æ‹à·çïÀ‡5l<2¨w¨/1=.#Ó·ÐÀa»íH¯žC¼¼ á—Hè¤Âäâ`šFáž›Žç5aüôŸëçüó¹´²hEóÆÃ×.sv³tx>ÏG9ÁÌšWæ�cÞ§³Tv61Êk�ÉUìqNõ÷ÏÎõÀeÙ&�m ÙÒuäå¹ÈeÒà9ä'¼Lù)V'×þˆc.€·F¦\C\Ó�e’{Á­8|öè„°Ìó4å½t? ÑÃÖØ‚Kg¦N㮾nÄ¡$“ítˆ§ËW/Æ:­ TçÔ�3QÂ5©ßo“Xjr©g°*ËÖÉ|–æL2ÍŽ-±“ ö sYFvY©­cÁ¤\ƒ}$5Âßo<˜�EÇL8@ ÝHÜÂf€w¢Ùyenj þl°•„G੼Q6± ÀŒ_¼t(“Å iFø�~A;:™5Õ ”;VV«Cªó»î¥N¡2”é"ŽËåÁMÔsÝye„ÊØ¼c á "@aBÇò‰´È åhåŒ)fLŠc†tJÑv”$×) MÆëÀš'C�˱E“ñÕÅÕ œÛ»$D׳UŒ¯cëÇÑ(ì� PöI<$ÓUy¬ÅrÊ>«Ã`.êl¶Y�®i¶—nøÌjª“Ð[¨l@¯0qÏ„”C`k¥·ç`+ßX×AWð�€¬˜bîÐ#V� k$­…ßqmß§,·ë†0v׬ž±"\^´‰¾ �Dp@Å€ç¨+�pjR¸{&ì|¾Ð÷l<çi•�[oˆû­ u¼¸4è@åÚtĘD£³{—¿Õ=Ýÿ-e¶ãóZÀùèšEÖ(eE{iÖ¨m ‰Œ«/Àê÷°™¸Vý4¿±»…kVWV¿5`‘Ô #I€ï»”Š…2cpƒ›è>áúqèh`:_æ¤lpŽþoeµc昷z”ãHç®Ë€Ÿ0çµiÜSùkæÀ'�ˆ½)¢»"Còƒ*œ>:È­zW–K3ÙKÀi§@_ ™0;!qÔ{�ƒüFÛA>ëå‡O?ÿ|x7}|ë&2Œ!ö5KŠ@“â:ƒVvT’W« z|�Žä8y�q\×¢»©KÔ°ò¦@òæ]\Lè8‘ªZ*ÕL6Ðah§)ÔuHí¡ÿÖ0‘pÂQ..²_ÒíYé7™DöÕ7ÿ}|é7ßÿÁ?¼ß—Z£˜VM"�…îì«¿ðÿJ*Ê ê6åùºp.+u¯_ÅM»ya;* ½Ï$'ñIÞoÀt¿Œ›æ>:ž¶28hàæÍ¯}9’»;:;˜']Р=‹qŠÅ!º?vEe•›­}81N  ü5Àî«k»T;Ý@©à;t]H·ô¸Vé@˜øÒÒf“ÿÉ‹KHFR˜¸6»Š{Ê·¬ÒÏ$àÄ\Õ÷s8Û¡yùŒ2S¢oÁçWâ©@&—WÖ²fh„å2Æv£|ô!/åžmÖmèÕ«O¤o¼ûIÆÈpžë|uë@njé šåªô$“å³îS3¥yDè—ì‹�p€øý˜xLÔ’°#ÀÁ]˜{ YAêü¶Óg]C+ôÅ4·¼0 Ý9ü�&¡ÛðŸº}øfÑM­lµbO�KÞ5x®ŸÂ‡þ(¾0�¾¢’VØ$*Úñ®ŒûƬ'ƒ;óÜÑv›y»æÐé@áâßòwþŒë…³kRÎë�§‰{ÕèÍå•TìUP¡�]ï1“»{ƒà2lCmO« m<ò`„êî¹ÔØ:À|°‘‘ûSÓ“ill4lae¼¼´´œ93fE5­¦Ñél¯¯?AÛÓ—Á–¬ûÚc¹ÃÜ•�QäÂ^ßç}Ð sÔOëgúþœ¿)åèß%}”áo.xÜò“kÔñmýªîÈÞ¨«ÊCíÔ€î¦ÏÜïÔG½GÙÃŽãSi  ‚Vô^47‘òä„6ÝÀ †ÌŽeèfhåÂYYV<†o É?êË™Þä5‰fÀ­`á…e©†B1_.\¶ÒÇw)–`NYÀÜ€Ùõo¼ÏÚ9úþ²¼¸|›iLX¾@¸õ­ç´�|ÀÞá£Þ¼Oµf34©/>0™Ëܹϗôqx |Ìtù•s}¾á{“†Œ9„ß=I<�338b ¨¹oú‡óÒ;*ªBð`"!£¾‰c'¤^¯¼úZ$,“˜í’™³ãùòßZ£[à4ômG²ßx‰ø_(ÖGì"4V@Q_W®ÚbÜb1÷ÓD�Ѓá]Á3bxd¿Ü_Ÿç5‘LHg$õSéÀõy…vIø�4e nrj*ýïßþM‚;êðtôñG{‚˸ ß!¾\“,sðiyeèN¬û Bù®ÿœÄ?æšáL¦«i#‹ÓßÒ‹Ë�ƒþä}üô;«³ðNÙØtÆW¡y¯ÇnVùŽÀðq¿„‘Áò}þÖ+låÇÄôy ÇcŠÁÔ ä1n†´g'ºà&÷ÌLO�7/XÝĶ7ñGú+c(`ënrü‡•À&.ðlù¿Iæ…*މpþ'2G“*ØÇõâ3èiV¶ºÀ)ÍâMà®7Åî¡›Ò¦=’¦™ç:öïÂüRøoÔM­ ¶[ž|Ê@îÑÑ Õ�³ª^: ™îøÚY&êË›´åÁ®÷ÛÞ æVüÁ-L ß/üCúQ7v³dyp@[ÌDüIÃ8Vt}ãZÅ…ð01S~f�^üð6¿—´+ù(lÚ=‚›â¾ã±Š\KûÎÕ“+‹t]OìÉŠ`y£¼Wßá¾åå¥ùèX+Žªk;OùP]}#v;ûF‘WOw¸‚Í<ëyoűcª;ÌÌÎź½oqÉR[Ì%+pÔÖÓG:8 {�皈b¼%Ž a~ò\èêËìÏäÄXìƒv“xg ±±qø ß�b}äÞ¯ÙuK—Kð¼é™iìMâkCC™¿œÝX]bM|•– “d§mm[ùÜé\È~' ª «Ä¤~í/q\ZZA71Ãj;Â(c}¦cÇ4Ám�ùè'lin�Ú‘ØØ ·oÝI•O]aþåÙ3IŒ�³Á�Ô=°Yð�H«Ç'vþŒÌžKokåA«Á—àêzê€Æ¥Œu "¢ÊŒ�œà¿�ó'ó†LÉ�Ë¡�¡7��Óv!1QZDÓÆ¢EPà¸>$y§…š�ÆçÂ7aœ£•˜ñÝãôå€a—Kê¼Æ\ª°Õ]ƒð’žÒñÏx¡:®EÎG~*Îmm‘ôN·­Àoº_û’OÙ¹K<Ñ�ìX&ç ãvΔ7IAUfzrœ„‹¾(’xh5�¾ïáëk¥M~×àä�xœÝ0í*¶±2“r5Èì&pÊÙ§¶ç…ÕTà�füIôT™ëÔV¸Úc § 7à¼Ã9â¬�=b3=—ö‹¦ˆi²VÛ9¼ˆr|J¶´b Ó³ø>¾ýÌ¥±ñY*Å©jÙmÑYCV‡ÁuÛFUñ™GžÓ‹  ˜!WƒÁ˜€Ü46Iã8œ/³€Veïïlp­ï Nf�R…�Œ&Ç9g:±¯å*Œá¦Ëä$ÀÒ˜­Œª™—Õ&VÁœ ˆF&"÷om›é�"ÁúdR®k“6®ßÊ™Þ ÁG`ŽÍ¶Bò”€Œs2Ø`6ŒÙ™âYµ éò“/P•Õ�††1N ‚íÕéÈ´šE Dõ3HØBE¼m:6 h�"#SÀ¨´iÔ·´u¡(eÊïg׫ܪH^ºöL¬eìÑC&UT(vž-Øá 2Ò+çˆ(�,»ô8}8¶¥‘ûwÓGï¿ ’ÃÄê;ÉòkN‹kó¬ÃÌGÐÕüò{#@võžÃáØC«Ô…´ÎÙGdi©X!†AB2S årî³í‰‚B0`´O† P�¥9ðì˜=0‹ç„3š›¸ÎV*(OŒ,pªŠõgĪcšáÙç2Ä*Îuü[¬Kg8sêA±F‰Üç\jÛß“aDV0�á›±bf¿ŒQÇÙÇÈ ò«¦m¥¬{¦s¨ ¦ÛÐ@bÄ«PÔY*îÀS¿9E±ðœõ\+U$pÖfžìBƒzV ë$>sÄ[9»ºAëhQ Ô­^µý‡ ,d¤©*ÕÛ©•DuÍ)8§´½. Eæc5  hÓì/hÛDéRAóÔÓQ9/ ˜ŸRÕžcßôWy6s)íz^ùÔ«diáŒgG4”;ØûÉɱÇÊÁ{Œ¤ÎÉ)/E¨¨Àˆ žª\ƒëdX5±¿ ÑÐÈ]5à÷ z1Óh‹³‘ípáyPØÛ]Úô`Õ°·d‰A£ΑE›9[{�O«d¾÷¢˜¬§Å•­ÔÓI7€^^ÙgaÔIðølàs3ŒÏõ÷È øÁxŽ|;‚ç( sœÇ%éêîF!ÃAÉ ¤hƒÀô\‚'dUéä�Fö ò¿à 8J˜‡ß`!ŸSA“×ïìñ9•¢ÍT¨è|¯ƒ™Iië"�2‘<Ä^(œOPH70â­(Ô®$<å}:âx i�9olç�‹Gˆ'å ‘ hª+öj�lEÏæVÁž'›SEǶÞV?›©Qnò¢9pÄd�:”¯mpq“LI qTï˜Ë>t§<{úÅÏÄþFâ ôýÑ;_$Á?•*f/-‘Y>÷“é™9kk×ÓÅËO¢Ø4§Q—µ d±²ßu�í(Çô÷?g”&‰5€¯sÜWÐ%óæ~¯œ, ìU58 ˜­¬Òú ãYë* VÔ·¾£¹Ï:]5òÀ:`lò“íº2ƒ¨ƒ]x*oJ¹þq% cF`\:@!ÖpR¡>>, ˜š¤ÓØÜÌÞТ84Ò }“=´Í¼ŠÉœF vooŠ#N qþâ8Ed´�Í�-zÈâíÚ#÷ Æ);å—^·¾�±¾¹ÆuF _´üäPD–7·Ö—=Öo§=3,Úß¼\71ž¥²çYp:óàËà¸òT¼× ­ý‰Á¯ÄiDþªÓEý– ÚoãBuBÖ°oˆm`jÂ!s ùÓ=Ä5 ð¥|zöùOQYÒI–çÃ�¹%ͧÇH´J?øÃ?ž^ÿü:ÉMÓÈÇ×ÉüïNã8Z ¶xÔÊ>†W‹�nxÃ*ŽËp1o�¢VóÔÓÀ5©Å—& ­sî¯�ß…ŽTì…¹rú”Àâ²F×G=ô{ÖœC1Ñ>Žè¢5&ã‚~Ê2õ&¡[¢3 ÓŽq룴¹°‚ŽÊ15Êt™䥎�檱«>,Ÿg‡‡/¤önu2ê*ât£ôƒËêÕâ´wGOkÀ€§Y*ÞONOcHÒMþ§39œˆÐ¦´Î¬Àôä„ëØGÖKçVVtuw„Î'/ïÔ‹­FSŽzßî.z'´j¢”ci`˜¦îT‚á²ÀúöС*¡iõ¤2¸s\wT î–ÑñDøÔ£ÛÀæÃ¨  ÜÞÝzB€ýÉœ"ÂNg¦ ¬â—¼ÝEx]8“�+‡‡œcɳÖɪ^&37Vtpß<þgrb"xK8ß4¨K}×$ŸJ֨έ¼rß[¨bê$ÃÛ.Pò%��:¹”uâƒ(®�ëœäÛÊ.iAÁ.3Xm {i~9‚�Ê›VZµzv¨ bêÎò][+./Γ¸h"Ñ>Žè^:î\ œaúáÔPîÛ*VÃÖJ6+ò .ÚQ™f1ÒA.à ¿�Že<‚ûtj([Õé��µò¼ul‘5䶆nžýp-ÕÀ`§}6åÛ]]éÅŸOwîÞK_úê[àUBà�A+U¾•W=Gí3å‰xAvðÔŒŠþcðÊä?WÖÙÒÛöø¥<6éI;IG�/[ôÉM”ŠóxyŽI /¾òzHszë+_ }.‚Æ•rÐ'B?µ{ú¸ªÍh~8˜™‡Û¶*ûa0ª’ª‰îžNÆ��à =M]S:•6„¯Ž“ëøêOÓØ.¼¶¹•€ÈÂ……®ã Î��qŒàôЬ|j ÙÜdr¯µ*ÃʺHÈæaÙ h'¸÷ñßêêé©ÇǦB7ª¨Å Ê¼Õ ì¼r¨žÏ3åÊZ×{HÂsÓ)¦òé8ŸS/Æ^lEOÀ@ç‡ %Š÷‹ƒÊÞè øYµ2ÆzÔÔÌ\Èwíq"62lždç0ƒC{èVœàÆë$µÌ9…·åHîµÛ\´µw\ø­,âèh�E‡”ñ¾gÍ:iL61g"¶tW²ƒƒŽ½²Ú{‡i噇ü[ºBÙŠu©sžLîG_7Ùîu�7�—¶€ºœ:»kÏ:¦h”Ccà‘´¥ãn E—Š*iÇÐY9|U85ÐA¤È~9?ùdޱ«à/­-Áã³Î=8nK¼t¶.rÔT)v›gòZQ®iÇ^ß…Ëa›j6Á¯·�%‚‡À xy¶}5üy‰½uý&åë—W™ÐU‹¿F}Rg¨Î$“[hæ“zÎÃoè´ÅçâŒ+m#“?wðõla‹¡Œ+dßû[G³ÅyørøÊÔKØ$�Œð8Ÿ¬²×µñ0ó>yòÐ…‹À`�îyoCïb»Á7ö“¿å©gº½,^ù&<ÜÒÐ5ø0LHž­ãõâ…¼CÞ†¸ ›[ß�¶¢Ï”ï3yþ–éOPAÿ!àí±q¾–€½¶…Žxçä}>¯»§7àóá_䌭Ï�À3d›MBãZ;°È#c|ø¿¼Yþ Þ¤ÞéÞëGgìÔ ?ì)W1&ÿòKÙ©.©Î,¼ã(.dOà�èÅzõZÑh7<“É-ŽYÃ7x>äƒÁuùe*©èw¯…¿ë^¥"ÌàU3:™Á×g[o¿7haPI;Ú ¹a[²ol"��Dz€ïL,�Ä)�Ç{ù¶ëVþdÉ^Ya…öÅÙXÑɄ˳ �üP¶ýuýVº–Sää<Å!�e3¸å½™ô!fó2OúÇz…Î߀¯rØkƒÎù<ðŠ�åÂÕÊFí}IU]•UÅ+pT^ÁxÎß=2ÈIéà”ôz4¢îÚÄ1 c�FÑ9vÓ…‹WCgSWYÞêOv x4rÿ›ú"KÉàÏeÎì™Ïb1"tИsŠãy¾´ê÷ò–/×ågêµúþ¸:îµ�Ç#²¶ñÕÙº[øH“üâ9Yb�:�´'½Šßò?}e;ø§5_Ú$âï6ã“O?º¿ëžÀvøèú‡÷:÷:™Ð)ÀÛ@Ë[ ˆÚ!ÏW){àþK‡eèOêTú-À!ý{®Ã¹IR¾k @“ü™ëàC¿çMÐ’t¬¼W¿™ÇH8wqNÿ½ÅFŽ7>6JâÈ­H>·[Ú.Á›•eô-ýbêeÀÎc[½ú´ö›°2Ö ÿÓç…? :ŒŒ/–8¡oíå~ù ñS³’d�œ‰é$‘ìÓ½ÔVÑVeVQï÷ût)õ7·°Nè…uY©îz¥y°0Ök"‡cîŸÙ~Ü­VY ÀÀg—¬©É)bHtz€LŒ£· ³hÏSt§_w‡@Ú­°7—gÞ<ڠذXi›bë—["Hlu¶>Gå·•Í�$�MNN‚ó$\@_c=*N¼rþ”Ú…Î_0éÝJÛšàÙy|ÒOAÀ|o¿=õ÷õà›´ uƒ}$H |COÝ uÌ èÅ÷µø—=[z»q�ç×2—�æQæß:x¬<§”¿õÃ8Ç¥¥¥tñâp$ÈoM.60ë1ú�›)œÕß-޽²›â¤.¼LªÓn© )Âèýa!›ÝC¼Nô¸G¯µ-»v¯Ï°#Í:݇õçkû 6>añŽ…=óÓ è%ø 1Uº�þ6îa|0óµfN£ ,¯ ~ÀGÙ`<È#¶O{C:††ð¥ª3ä)´40_RÒ‚}orDÖM[½ÁÏ=îï#`Ø?0•ò¥%ãˆ%)iqq1âwòu*‹’ÚZH‚vÊMœñe4˜Ä \Äe¨GÎyTß:±-%¦>{iå‰Â~nF|–v�·ÀÝXƒnâ[ÙUU<8©ãËxôƒ+g£»Ïõ¥È1Õ±L¤ŸË(6SóôéÈÓœ'ͧ>"Ã+Ÿ<ZTŽ;Tþ PWÑïÆ­¬Eÿ˜þ “Cü3Ï · T·÷Ú2B™çuCO�d$žkŒo‰7Žm‚p¦S€oÐc$ÍÎÎà·³Tg‡ÐøÂE†z(«JÉ<_Yæy× Oöd5àT‘ú‡ÓÊü4¼¢Bèô_|–64-d‰¶§¾�‹ÀÓP‘οڴ:ÿ(2Œ ½r0˜ BS%¾ȱºLÐ …¸¤¤�}"ªs˜xx'}é÷~ØVá¨þ±ÈœÓ�¶¸0CµÐùp´HX]=ýÌ%�¨¤€vì9-§$žã¹,מz>½ûÕßI�µ-T‘7‚Xãiaœ³~8ÿÚàR5Ÿï-ƒÔžG\’æg§im2ñ›v 37có4ÝøÆ0ˆ¹4péE:¼Ç“ü´`Ú'xW¬kFàPu@0o‡Öî=}iA==6A>a².Þ¹ùY›8Ø9‹`éFws844ZÈúE²‡P1è×BfèÔØÃÔ¼G&·0�ã‹Väá4†‰å…+spïåÄV {.Ë2NxÏ“7sPç¨ì&É“#78+”£pfèègUÚÌx«†m´u‘M­q6‹ï 衞ÊKhTwÊÔöxö)kLóÇ ‰u©{ú¯rDÁ,•(HG`V´­Ó%úÍm±x[�{–÷Q�ÄóÙ"ÖÙ�þæßø!” Û� 0¨tÔ5Ð&óRd|Ñ-b‘shkjQ*`b*ð¥(D ÌZ‚¸¶ ·=Û*'Ä}ƒtîßK¯¾ôJœ¥a"“LÁ™ldBÔƒ·]]Ac�F©Îcº DtñÙ×ßür+i{fx/‰j)èÔŠäFœŒ¶Ó|í3ŸI££�ÒW~ÿ�ôýßóZÛh3Ð�ŽCÿLE•­>&çB¸èÐ’¯TÑÆ§ EK#H!úÔó/1çû±Þ"JñÆ&LŸ€Í: ý´”› ùc�*_’!PštˆÏ�Ý@¤%u}+´‚CеAYì­AY¸Y¨²5�í½3eÝó§çöÓEPLŒOÀxÛ`ô´eYX„n4Î!X˜¸×è<Çl¹T;lâtŸ»æp`ÔPEéµàÌ> ]g§�T,ä�«¤48ª3A1…óÝd§mÎHÄÿ è¬"¨¼?*”aðQ¦FH±ÁŠèb:LÂqÌüö½EC¼Þ[\N‡­žÙ“ëůÎÔ¬­Aãže‚ΞWæÞH3:t‹UW× ¯"S<ªBEI!¦Qe�Øs m©ß>õéÏñÌÅtïã,hÁ ¶ðÙ¡¹/Ç8rýÞåOᆟû·†¸mVU6m›F·çj'[ò7¦‘Ž—( vï& |d¼¿¥…ªøþsáTÐX©.ÒNåaqvþ÷\È–ã[<"Ð ßto|žÙuÂÂc>4² Lþ0½ÆÖB›f¢Û‰ýÛ þ�S ¼¶r"«°8 '‡JÏáÎbÈŽ]pD£¶µ™ ' i´ä� Th`Ð`·ÍšßEÜG<³#‚üüˆÌD»Yä¹^§±ÁjqA§êx#ÿ—OàpŒ%œ*�Åby(#O\ŠñÖ�•¶É–Î °O¢ðö÷‘hA²†Ê†Y¬%$²±ëÇ>†Œ>u“Ä61’6È>…_ixȧ‹ù"3o~öji‘…2ºL§+0åèã�?3‚»ÈQ“¶ps„œiêʲéyÔ'þ¥¢R?�\Ô©cvµ/�$¿û³|�¶¡—Àt¢}·Õ‡Uà¦|Ïïþ´³9[�rÖäÅ —žÀØ)¦·ßúYÈ´ äQGÛ$`¡ “°r~øj¦ TYúðæé‹¿ú+é˜ Mu#]y‘[_#•<ÊAý¢ý°™Êó˜+´ï§œ¸2¯ÆdˆÞªmÛõfútÉË‘=EÖ©Ò~Ì^T‚OáàB¯ëìl ‰ë‹d1 ,d+9ËŠe�Lœ³u›²<¿�¼Ç8ßäˆ ¹VRòÈòJøÅs­F0 í˜Ò30Ȉ´±Bæ W+,Ôa¦™l€¨w™�løÂô\è$ò‡=tq¾’DA+‰5–uþø’þ1uZ²‚¨ö�¶e šî?:³\/ `Ž8Öá…:Éœ‹üQ=´ºÇüÒëpvtµ¥‡×o¥ÖºÅç£cÈ!ö’ L,˜ç,2�}Ý$™üȃ#IÒõ›`'~{ö™¼$ °-Î_Úo‰:€"€ƒ£¿�³^=ïîÞ{t}‘e�9(3š1‚¶wWhùµ¦šþoÕ¦Æn¥|�ç6‘5F?N*çjà J‡òc3 ­PW„‚�Vma羜àèê¦=*Á/ 9ƒWS$2õaõ¦#öaâÑpdOÁ;�`=ðÜtÖp"Ô'*ÐßÔ©ý¿¾¬m!S/ÐQ,­sð�Ä8¸[쑼AcÙ`¬Ùî7oÝŽýªgœéمЯì\¢îàYÝ:—‡Î 5Ê|cßÕñx4Ž®bzý»¾;Ø:5ê© ÇFG¦¡!ªUCž§46öK…?tuóãümÀĤ8:{—uˆ %å›<[Øé¤PŸ~õ³¯G’€²Åý §ð}8‚Nߟž¡«I• tiÐ�;ÇyÕn�cìcÈ*KÏŸ?Î�žÙ^ݵ™Üi{MÔ!T|›’3™;Î t+ñCY§ª ©�DƳªX^!°Ô;üí ÚX¡¤Än¸WpDQöÕƒ“&ˆyÎ(‚<®LýƒÝTѹמl û,€•þ”Ç&]ºxõdê*ê-&ƒŒ�O‡sE§© ¢¥¥ž!Êuf²òÜz3ƒ#pp¡ ÚÀêFHNìúRº�µE«a×.�Ió&ʉ¯®Ûk­lVŸ19Üä¼ÀžÉt8žŽŠºBˆãRêšHHF7ß@Ÿ+á>çÞͪ÷,ÂìŽpD¢ùù+RoO:…ú�gºbC±?<˜ÿÕmù~©Mç>™èc"‹ÏÖÁõðîHš¢#…�ß $ê�ðO¾Ã1â|¢�hôŸu”˜~ÂÞkkV‘ÜÓÕÓ�³£˜fAƒl™;�g‘|UÀØwʆE’a­2ïÄaÒ�Ýø€uo¡·É˺� uøî’üo§fI²PÉý±íCal­ûjûö&äSž)nìLùئ&'‘3Vêw!¶³}w2•áðtìpþ0F™T�Ãéú7áKX˯`gØš:­±MŸ?‚>õsØ™¡´«·[çAúƇ7ÓåKx]™°Á/?õdzæÚ³©úSß30H'bvøûÛñÊöEÛEýÖby…¯3GÝ·ã)ÇÔÒº ž« ƒ'¹{Ú Òåû3ŸUüfOH|ÙƒP¶ICêó2O•®°üSÏ�3eºœô¢M醑DíKÜòþˆŸpG|po”M¥eÚGŽaðÔÀ*òáY§å%'Ÿÿ +×ãZ†•‡ r|m(iß—²ÄùjÎÑò½_„GLé+±«�¼)�¬Õµ…þÈ~æ<'ãܡ׾Íd¨¾h›Ï H™®#Ú9˜háÂã8¿kã*Ÿ³÷¿ËÎ'÷9>3£y¡òWŸÀÏÖ#œ,êìîNo½e‹dõy,’>à÷l�Õþ÷3[ãª=™›äþ!3áò>n ]ÈÝR·ðåú#‰˜¿ÊkôE©'ÊçÜ—,8ÊÞÂ�íŠbº¼#›½÷¹·ð æ�ômq¯‰1�¹º¨²f=º ç4o™ó¾9hVx»?ާžƒ.öBÙ Žñ®q=Yâ©ÉIì$8�½æ¾2÷2ö–kü\û;묔Í×ëm=¬|°»ŸE%òÉ3ÝMþ)0Ü;õ7ñI<߈:žxÄsÄge‰ú­~á­þ&xÜe=ÛÄ€ëÂC½ŽgúPe; 3¯ÍºO%ª,�`‰‚1nvŸÝóàÃÈñÏ{ ^ø™cù™Uª¶4> &»+ÂBZ×ÇÝZ  eq%m¹¥07\&Zì­ŸóÂf|Üi¬WzᇿMr1M?€ú¤�´DKe\ãý&o;Â:-i‡¯\ŽØ~M�?Ôw¨oÆ®vVÕ~DǾ:Š\‡ð³2¿T†ÓÚ ê÷<2tÒL‡àZ>ZvÞäDw%.TÏQO´h�Ùð£/È'XÏÏ´ 2=¼æ÷\¼µpF=4´\7Ï ù{.�\ÚßL×ðQW¤t,õ‰Ñ‡£èÐt²Eîú¾~gâ†:_Æ 3MR—ˆ«Ú—ñÉN=Ìjoiû¸gvÇó8ac4û¡½RVŽ»Z^n^jRƒëÙ¡»Ç™I³Ú)ÜC�áŒsއϾÞÜRI:µÚÂ쳕Á…J“]«‚E*ÛÒ &xfÕÄ€�sÌ[#7?ÏùÓ$Ôk›:¦q5ù†‰!â‹û%>(kÏød$‰ÀnÔÁÃŽþÚCŸ+)(Œäkt-}Òb¥]³-4д¨Ößúuúûé`ÈÚíÂwrºÇþ)‹è^ûà.ëjÏö=Úï=bÖ y[¼ËŒ—Ú!Ó$ã-um¬ltœî„ÿ‡¼÷ŽÑ<½ûžé}vzï;³½ÜîÝíÝîõFŠM&©HŠd°#Ë@!Aò‡ã $I�?Ø0 ð GVlZ´HS,º;Þ‘w¼¶½ïÎìôÙ�Þ{Éçóýí0† D|GÉÈKîÍÌûþÞ§|ŸooëòZâšè$„ì^ß-°ŽFŠKÅ+ñÌ¢1×olUÞú›J{¡Ÿ–öyOOoœƒ¾Ï·Ÿkäˆû¬%¾åP@J�…õÇ_2#àæKþé³Âw‡jsŸ�§Éçåw-¸'ÏÕ—>m9�XÂÙ»‚à³2à±v„f¢ŸÅ‘vÛâžß€Á´IA•‰5ЭWÊln0 ßµó£þ}О¡º¦�ÌvØ�s¹é¹Z.%ðÇŠJü_“ØßîC9Â÷”÷ã:2&ìßøñ9Þ‹”xÆTwÝ p›mÝŠÏ¡WÀ“ �E®³¬ç¾ûK,(†!öµ‚\¾KÌÈØŽ|º ›îþ»¸Ù|‡•Í[<¨�°/¼pò ½[x��ZI,ƒÁ€à�Žr™H[ Ù(ÿ¸4heI«²ÎŸ¿@µÑ Ã…œê°×qäa�ÈuÞ¬H\0&³õóNÁöæ×aä,D�*N–PTÌ4ÛÌ ƒŒ, ±Ñ`šõbÐwa–êœ_åå ¶¾ˆ·xÆL{3H?[Œ+Ü!àk•{ÖÊ�˜·b,ô^[˜ƒM*H¶T7Ë_kVF#s·*Q‡ˆA{[2’¬‰"š)82œT]:cªj`æd¹»C'ž ²ÙB2 05�Æ1‹ËªqÈ’é»4Ì‹1ØO2>­´¶UÀ• al¸?‚¬ó¿÷�oQÅ1Kö<Õ„ãÃŽ�ôòë_ "––&¬c›àFSsk¬Yãg,SRi1«XaY]c«D•ƒm2TÓ¯ãwpÕ1Þc¿�.¼ðJºyå£tå“#è¹[E ²²$}ôáG8ÈãܼyåýÔwøYî<™Ä9Ñ�²W”^ýÊ_gO•¬*˜ŸNÖåùI2ù;ØÃÂ×< m#z½. 0X•é.Ú¾Ÿ{å«éú¥Ÿ¤¡ûÓ«_ü ph>� ÞàœÈôáÁ9p´œ{Á[¸óºÇÕÆ2-¶ Û4{giaivwG8ñ&FÁ’†wµlr(Ë*Õ\1 "Z�b 1 ¬Ž>ñŸ#tì´@ÆÎ 3uqT�Ï+óÐ=YBd Õ6�\pà8ÉT²ó|}ÕØJÉP­ª¥õpP@ëðcQr�*¼®æ.²”¶Ã#£MÓÀfœJ˜âòî&¡ª%B§„Ù»E8× ææW§þ[7xö~ªA Ö n?v6-Óeka6µö#¸º˜ªM@)AyÀE]†!+³œŸšå­„ŒÂ˜•wÓ =ˆ–,Èg9÷ÞЊϊV8n*„‘­ƒ‡÷EK¶ººút›¹uȼD`T$ý¾û£ Ôä•À‘à±·2Ù ³­9” «`½�Ú,�Ñ|hdƒ`¹4í5ò¤Ê ÚJS9hes50œ&UFý]’aÚ ®-“ÔòWiëKeÉ&?zŸghc3z;V4r¦ÛÚú Á……‡àBXµ#huèçqÞ'¨vSa–g¬’¥óRAíý7ÂÍ ’Æs%¼ÖŽeg*tVßÕÔì†'+4 ø˜1ª‘¯ÃëðÉgà��Ⱦ7�J§-<Ÿ®&JxUØáܧ'‡é ÑÂåÑØB“„#èw‹„ƒð©\²}�­ÍJzú ÷DÕi'¾ÖH;~Šöa÷Q8¶Ó½;·¢ÅXŽË¿ûvȘ /¾Ï©å^®îÓÞ÷²åŒLN[X™¡'Mšñ©a¿JB‡%+¶MÖ Z\Ų©­'y²¿ûãï¦W_{ÜØÂ)KKèxr‚ Î* ¬Jœî‡¦×¢˜®¥Gà*Eêfýø H"únðÍ\‚¡0²'ƒ.ò‰5aÀ3䊚-Æ :çꨅV4ڡب ’ãD[hø±í‘× A Ca¤Z‡nd²^y½rͳõ®bƒúÛtX°µs!g¯�ªÉ.&måâ�ÆAjðl…ìeé„~�ΘiC–I'®×ŒK“T”á¨b(#Þ{[Ïôû*l&hL’9(-�<âÚªÙ©R_]Ë,,1-õ (É�·ìX œÒQcŠã “ £ò�Ê“Š¿²Ý Z�Z¶•4¡ÅlN�#>«,ÞÊÿYÚ*»þ£xq¸ÂÚ,à:ºÈ¨Ì«ë¸§_ôKüó¥®Jq¥ŒøÌï¼·ÿY<ðøŸÌQ�" �5Ðë©§ŸÇ(§§áG…˜ôöµËðQîÎìèI%U܉ŽyãòGéÆŸ¾�šÚÛhk¼ŽÜ¢u7Ïkäé8¬…/Ãêƒ�ÚåÂVôèûwE©g&: hÄX¥¤“×,WÛ[çÐ ‡òQz)@®"‰Ævpal¨CBKÂAe;ô6�Òünu¥<ÇÏT¢µe zÚ©„ù7��ycÒ±«Ý-¡w­¢så §L¾Ô1jr”F‰F²­ã Pno@ÛìM§Ý6ßUw-µJ‡ñPõÑ­ ôêÀÞ%ØÇ~t$X%¥3MC¹ˆn2ÕwvÑ8V·3‡�ˆòñmæµj_ÃP]PƒT'Ž:zAa–5,R6è¢�¤¤qãu+:9Xq>yЧ‰n³$^µuÙ2�j4}y̧ì7¹Ðq5RÔ%‹ÔqX«ºPt ÂÛvïÊ7õ mŒPœIVݦf%· îé`’w°tªºz–ÚkðLÏ[¹fâFd˜3ŸûÌœ ØÀÜ`T8Å9ϰ5’6 |~Y?Úã;^± ¿±½8_Šä,÷Áþ0 �Çð娾S_¦_²)Wþ» ܘÀ®ø“9½u Kk™#Ésöžn‰Ïd‡,¿ ´ÞºqÝ0Û—•&ò$g‚ÞÊÞ´SæHHê ¼·êÊñÔa�ÅnM^; Þ×PÅ*¿TF±˜'Ÿ> cvz1ÙÓ„e ØF’=¦§§ÐgWH~lŸ¶pÜKׯ_l…³«ðóù§C>sðò.$* #ÖÐq+ø^¾„ x íKçñ°8ö[J’RWw¼'(üÛý¨ß°IÎÕ$~QÉÐÙE‰6%$ÕçÁG¬d*‡Gz­Zÿý{$¢Nâ$&¡{JvÝ.[â3|h‘+\“zo|´-Ñ´°ûp`Bú©â¾tx€øm{Yùÿ}’™«‘i¿ý7ÿk@®bW•ƒ vȪŮ*ÁFˆ`ãê tíòÑOí%�òÏ¿™pàæß¾ÿ)Îô©-ù9�ø¡>² ÔAçðMkø‡ôý�Ä+þçó�x¦/bÇîLÒ?ëÐo#àå�¤«ðrlÕ3ôïÁ‰blÉËdšÌ·øž>0ç Øñw¾Âá̯êï„q)2OçñÏè‡ï #+ñÖñ;ºåó¾½çÂ3žƒöàã‘3>ÎsOæ2Ð&|cߌ'|+¾«Qg6Øì òé89c÷ëgp“¯Vð³”Pn˜tí¹zöV) §ø|Ì}³†H„æ§27Ö<Â9øò—UÀ§\«ß_,°09À¿ù(ÎG{NÝT<�‡ÀšëGó ³DÎyôºÊuŠàÿYò…> +Í©äDϵÂÞ@ˆz©�E횪î¼x¸†Ø?Ÿ‡~Æ\ÚÏÊÅ}™8$í°.‹ÅÂ^xŒ›ê|”áŸëOR~ºoG}rcƒŠyäD$Öã³><†_ˆ ØÇ-ü•)ÎïÚ⫌ke³­�Uƒ’�)½ËZüy ;Ï[|�®ýÅóv{›$ÍÙž]ÜD1 ýÄg=‹Œ^2œ³p fòû¼âqé˜uåY‘Ìšôù·6·âK>| ðÕ�‘@ÙÇ÷v)àêÁŸÓ”†Í�x¬79ófCÆ|îÇäéRýÖÄñÛç2Û= ÃeèCSþî¢KM².‡Êôé@4ÇÎ~µÇâY§c$žpãú-ç-Ãþ_]$hÎZŠË‰;4¤-ü\Ó‡ÐýCž‰GÒ“T$>Ù.\|liÅž…Žõ•fG‹PèôÞ(+ŽkÑþ4 E;Wžf…´¼À3P'/ÂïÌvᥥí^€]Šýï•ÆoÎ?‘·J“!gS{× ³IdÊ£Fü ûún¾Qó¹yÓØ_´nGèêé [Ò-ýr»Ü-_5)ü°²ÑNuâ›|'‚—œ‰~“å”&“ºv“W‘ºßmNÙ ¿\œÿ6éâe [MA~ëzµÁ |—W*3”Õòg¯ÇòÚ’éûÓaóIóÊ;í– ìM+ò¥Õ9Šõ«sŽ“˜#î‚81FöC%ãèË6ÙÕ ³òÁ*ÿYŠ =3aT ï´‹–óf´�aOÚ,®SœÖ¶Ww°©ð÷…Qè>ÌgB×±¾î(d2¾¹ˆ� Ø_€¯[1�›Ùêýæ[›%Q”erÒÔ$Iô}-~²ë‰¾ó:ôí¦fñ*zwtî“&Ùÿ4…‡ú�µÁZèNeçEa1] ÷Hdc/ú4í>¥?g’b4ƒãâ­ Þ èív‘?écPç�®¤Ìáz«ØòyÏV| w:t ýâ]0n#_50mÇãbµú>ä§&â< {˜‰÷j#@ V6céx^¼·©.Cò²ÊC¶ñ.œ8|íEœ½çÄB yæÁnÙ™Íô1;äà—�G">¼é)î9Ï”…úvô¿ˆw^í­N¶A1Æ2x¬m/ï žJœÊyå3Že²u5ö×£)bÕìgÙÙ0q ¨ºW÷1ñrþÊmu“ˆ=I÷ ~l®<¦ý¦]ÆŒk Ü»™{"ô »ßT#¹‡<à }”ÂÓš)z2Ü«H-ZÎzð€�c ƒTk ”­­”™¤ÅB{G7ƒÜ&2_Ì]e*šnÝŠq³j4–5J+¸‹Â{®Ý¡r�ÖgfÀ8Ù3€³ÞŒ.ÛìÅÏ¥òS%J¥<—(³¨2i kgpÁP!A>›Ó‰Só°°VýÙ2`—À¶ÌCD0°iÕ¶‰:l¼Ë•ÊÇ*Âi`Àdu�êI¤˜Â½üñ=¤ÑÒã×ì ÷g%‰DV Rê¸Zånx5çW‘ŠÖP2]`'c8ƒÒ1‘z»[:àĪoå`ØHBª|Z>ŒÀjpôêtEÿª ²*e\õéY¯ Ëûè]{cç1ZÖ¦ª†Îôê/ý °­Lï½ý'A@®%Ú–¢ìpƒH0>6˜nWà„8Ùí-�šZÚ3æÂó2*‘P'©°Þ!Bá=õÛgi»*�.³&ƒè&<üÒ—¿NËÉ‘ÔÝw$°fe( ÀVª¦†@_Κ³¬%S§“€SYÙƒª3*Ñú£ï¦zÃϽòùÀ…�»7€Év¸c:~:½÷Ö¿‹½ÜÅIUEÖPï¡TK?¤²çˆ}†àðåôÔóoÐæþ©4òâ+éîõ‹é™—>ŸÆGÓ�¾÷Eí½ëï ¥ýÁþRw÷ɯœº ňS§ûð©t�±køÌ}�ÞÅñ„³ á·D ybl8 _û$½ðòëéµ/~=z[ź¡™VÝe+.uJx¾±„.ó�ö8G®Ð1òÌó¯†cÙì7 °H5øÛ m©Ti4غǻVnÞ¸ž©îþ#\â0è|ŒC…¹weLNO­UaH¹'ƒ\f×Õ½–~øÝK?Y7«c´ûÎe=WØkAú•ßøµtâì…h�ôã·þ$=ùì‹àqQú{ç÷Rc{G¬Ñk pØò_缌ñù^%£u,Ú»tõö²Æò44<­�<�@¨¾ýö[Ñn):þùgQ”eâf&¡ 0ö~ós/¿F;©;éÖ½;8 Ë î7#øªi×¶“Ž9ÊYs· 4?6ú ÝûPÒ[@IDAT)U$Í¢˜˜9<ƒb³„ ªÃ™-nQ°Ÿ~ö|ºx™NV\#,z©¾:Í}íS\“pãÒOIJ¡Ê°µl÷‰ÌèWø¯ÿöÿJ€ç­ ²µ’ç®\<ò§™—â†ð‘¾ä{á(„iG¢Ïû™I@õ0hÛMpÖè÷ÓoÿWÿ NÌRª²?N§žzžr7pAX]ÙFvc¸ÞgÆ¥-²uÆ.r�ˆ ÝÝ]ðãáß«p ×ÐQ`x(;ù¢Îk3ŒC`Ã;:ûÂØ½ôÉÇd`5¦£Çަ£é|°2è}àî­pºw÷� kùL8xäMòyƒBúÞ-‚^7IL ›ùôííã8QÀ*Ò èµ–¶Ku$?ØJ_xXm®ÓÚûðÎ_x>kD’ÂøA ŸìíKϽðrÐNm“)f''Ò©³çco—/~�wçÂÐÑA`@�¬Òk{:•¶hë_ÄÝ£ð§ÑßÀþìùçÓoýÍÿ2æxÿ½wÓÇÜÏl%™ß÷ +��I-¶u1ÉiiÎD�+*eMgŸy…àÞ{)>¢‚ NäD[‚5gÝûÎP«¬B ‡³èH.Ña<ÖÙ¶PFU5 «.¢Bž„ Ù‘µ÷ÒÐÒ ¤êy…ñƳ&Jßµ¦¶”_…CX˜Ô£Í \V‡ñî9 R1΄O[êŒöe{®=þÕ×ե徾4x¯¾Hö8xkðZÇÒ O€”V‘a«€¼ÿñÈ©“8XÈÊe :·vÔ“qò¨?Hž¢À^;áwy�ïëÈ(Æ¢ÎªÏ¨Ž à‰ñG$Y©Ab3›ð…¾Ã�iš¤¿áaªó«ŒŽW:Õ¡øÇÁFØ$ÇNåg‰ÜU†>Ž Öce´sÛ*R‡³ókHÉ%u¨n#[Ó)ó­ô2 ÛÍ=ê7®ßÆ‘;‰, ós+?mõè®Û-Œ4“-Ž0¯÷vŠ‹;ÀS~¥Á'ÿEµè5Œ¿ƒ½ ¡gûC�=ž½� eŒúvtùàüäíµÊácâ—íí›êI|#pœ,}Ï·ýD=ÀŒí9ôÄ&ðÎÊ8 :†MЩ |zD埶J$5ð¹ý6WqØžÝʱ¿¸úš…¶…%'îçÊ “XÊXã òfv;•9‹�¹-òlgÕåþýkÎm¥ŽzK.²LÇ®AÙBpÄÛãyáPѶ…öÕ'*ЃVè(e7‰%hY„ž&b—¸i`|Š k ÝÔ…M®•Æ´S1ûÙ7�[~W¾»†|t�n:|¬€0¿¹¹€|ÄyD2†8º‚¨©3ìþpÄ‚KÑI‡µ¬jj¨MÕØKîce‚½p cê|2™[¹Y†mœµ«Ç¥×+. rf}ðÂÇI/Zâò¾–Ö’4¿›á¼ppèpƒ÷©èì«`:eÔ¡й· Ž5ÌC�Ú¿v@WèTð0 ŒÙcë RµÅ¡%qOÚÖùQΕbVŒÍ€³VÈè(σwíŠ;ÁÏ8'`"n—ǃí�tý Û x�··Á/ð£[d¾^3ÇžIÞsßž�¼ØDƒ":ègèz´´ER=¼g‘Ê»:ع¢�{k8ÆfH`É#Y ‘n! È ÷½º @YG LLAX£ïÉKM�bMÚÒÜ!ÊØEèìKØ›oÿû𺕰W뵬è1Ч*ø<»¢³æ©ë>kçl� žÇûl ÛÑ6˜T³óý–ÖÖp"špÙuâdúÒWÿ“tüP/芞*Ü xèøÉƒ×Z¦>ÂÑñ‰ôÓ~=°°öpF3G,Ô±ùYÌ÷i¯ÿ³¯^`D>AÝyêâ¨4$Äg¾Ïÿ½ê#ªŸù[~ªLw|釙èì´h¹íö!†Ú%ªºVÖXÅÚ‚o@gµ/[Ýze–W±d…0NÅ‚XŸrB'¹Û”×a“0§ ÙQQ ­*W V¸r· Þ"¯`ùá/v4uuå”¶Ÿ<]XØ ÞÏå…›xöH 7ñ\XHãî]#Þ`€€6;*²Ù³ ?ÔÁÄÛ¬ØB{ ÞÉLvˆý³6 Øi�GÕ9ãK«Êõy|«.>ÛgȺ¢��¹¤ãv»1×ÿVÎÊWQøŽHÞÏ’m9GÎÍëiäÚ’;è>fbµ~LeµA�òñ¬ëRg,,"Pø�|ÞéœÃ*O¿§Ž)OV^h‹eÁº8¥XS$X¬@mU;ÏIÛú¦äÃþî¼!Cá+Ž£oWÊ—Ÿ™(¥¬óÌÔ?]§| qüÓ÷]­º�|jŠ5âÜLdþ'NžŽó�£¢[: ½ÁqÐAsœ§ïyNâ‘?]�ø¯ �r¨^ê^Êkýû:b$�gúfÔ»÷e¼uõÇR/3éÊ ¢g577É{Ð Ÿ-TáGœŸ²½÷`oêæßµ«×ÀC}¡ iؽcK1�8£/ÙŸ"v$�çìý©Ïñ§gêžL ñ ÕC $å46©=wÇÊ=Ï•E0�4‘á�6ûvnpÜk§Ü“Á]_W„ó3Ïœ�@Ëèøÿô=|§TaBŸÁw$”@QƒÙ‘Ý®I�Áµ¨w³àOÀGÜ7 ¤_¿?ŒwåîíQÙÈ3↸· ψ³â»üÂ:Äyp<›ˆñØ»8¬ „gýê�ÚTY"�•÷ðÀÝõHp±+£¼ma�ΡÃCÈkîªÖnä•ÙèO¡c#[� “NÙ)Ó`æ-t૯5Ã]ñFÚb�ÀC¾(@ùñOÌu™À±C·Y>æøÈXR’t ~xnaÁñ»|X�f ˜Þ¸~5�yúi|š5‘pÞ‡ÏÉÖÅâœÅV¨¼eÇÁ»åÉú�óòµãÈC÷q15K)$S/gš˜ßÿþ¼/×ìbÅIÜöSÖÎßêiêäÚ—ž§geL'ŸûÉ=�¼"¨ÙÄK|=»ø¬ÅáºûSÔÀ¤4)­¯ÐŠÝÎA+ðÉk7nàkƯ‹=uùÒ'$¥ÒZ›s·ò'þm2kQøßÕ%© æwqÀÇ^ bÊ/£Ã4§ÌñÌÄY Ù•äÁZô�±/ö|˳¿ÔEµŒÿh3b4n¡÷#[l›î—Ü£û°›¨-ÙgÐýĪ·Û®Ü«ÀÔ?=í9ƒpЛ‹¸ŠÅcò!&;@{̤ýÖâ‡weËgZ[zyŽ«FFÒî2¶~®�^#†iG”a ;xî6ô»Á}Áøô…§:Õü Y�µ¸X M]ºr ÿÒ`ظSĆN�}š¢ {y�XŠ ×+е>:}ˆú)òg@šEœM^Ìî‘=a`¢äää­EEv)ÎÿETgS Y?¶9hn¬ây Sdའ(;$+ &LJÙmëè«ð4 À*;+ V DjÐ�'‚ ÂàQšp®šÅ¤B¯º €È0Cæ4 ±¨ìÊ $x°IÃØìŽJ‚.‘�ϼ*¶Î.%‹J„ˆVÌ(õ"�Asï70½Få¯�]ŽÆ„b†p¨¬®ç¾eŒk‰fÐ??§Œù jp`Dh re sHžU!ðªo“1á€`/««(| ï•[¢Md´\ç « B«xT.e dgGwê:òû»�¡M ‡^Û±•¤‡{9Øþ4 ìûü /³V«¹t�špRBð‘*Ý»·Ék� ÓéÓO†ãJA«¡§r£céÍ7ÿ$î<:úÄ3éÊ•«<ß’Î=û¬nÝF/Ìͤëó'lµÆþΟ>½Ì ×J¾¼Ÿð¯|í7¹Oo•Vü¼íO_ù+¿ÎÛehÒ{–lAôú_ F®ìž u¼gÖ‚ó)œ_ð„ßþ�ß·N¤O>ù€ŠŒÛ¡,à~&� ï~ÿût8œž<÷<÷§ý8}ô•@´—^ÆèûÊ/9=áÅPÜÅïEÈרf|ï'ï ø¸?zÞ…‘ÿ澂ҌRY˜š`Óà˜Îù•U'QÑ¿ÐAqçÖÕ w+u4¶ä]O=óBa×/þ$xM)Ù™k ±âª,Ýeßó8Zä+í¾ H/ÂCÇÞƒ_æn*ÝU&TàZ÷hA>};ð²–jñ%x»w½Ø @Z+£º¿±µ=‚žS$wœ<}†÷C cÑéêÔsðX:ýÔ3qþV„�e½0Âà 1*$?øáyöPzå�¯D`÷Ã÷߉ w°·E³I-ƒý¾NTƒU hù‹÷‚wö¨(ÒÕàÈC’*žN]=‡yžöÿ(ë/¿þeàL†Úò"Iƒ$׌‘½ Ï& ¡a|¢¡µƒàjcê!ÑÇd¡Eð¹—{¾†‹I@ú*-÷Ø@oy(U´9]šŸ ᨂ 3G>=KÐ$Ÿä,÷V€“Z¾lP®º¾ZÓˆ\@Ö!£ÄùqNøEà…´‡ß�ðáåå9dJ 471>÷¦(§Ê0÷ø>`@añ¹N]å¡ +›½T¦ƒ7AÅüŒj7`£ìÌ'¥ñ­a¤AeË|i[£p¿Ù‰ÕÈeØÂ"A3}’hÄáBþå³à l¸ß Ÿ³;rÅ{]"»“ó•¯YI›e/zwØ&}:^p.*ú&ŒèÈѱ®SËÀÑÕ‘ž£Î¬©éL1lj¨ãê�Ì`ߣkLúÄ:{3@àå¦â�¼©H=‚qVÈTÉ)g.y?b‰î ÈY¾«ñèÝ4ëD׊ÊÙ›²Muô/þå*ÔOÿìKœ¦¾TÀü»"‡VÛ�—-¯ûE½Œqfàe€×ÐÖ #A�Ä�jø Õ^ý÷ï£ó EU®Æ£®ŸîÞ>þà=ìcÙ\ˆüЀ±RÊ �ÆŸ/õ¨h‹åïÌg"‰4Ýb–+ë�×�ŽŒFàEšÖAm«7P {åNò¸±‰jPøœŽÀ"Œ³îu4h×ü6ÈãuI:´l1F Æ€úƒ†“F¼†ë‹‡®¯†Ö�eð~ä–14ïݾG@ žÎcÛç÷œ©‡®ÕÔô8)­ÏaLN„·Ì 7‘�=bœÊ§tPêØ/,Ñ)¯Á„¡L‘�jŽŒŸ'`¥Á§ž5�¼ÒÉBoèÞòd+»$TÜWL–¾÷Í5rœÆjù6º¿ÉDðEN>ù·[Z½Zɽd }VØ!C\§w™ùÔSO"Ï0’±‘ƆG£ºXGºvLòÜLû&Úå9g{{+xè…àg˜“'O×qÈ\ð_ <�c»‘0QÀX\ ççeWÑ gŸ|" {áµÈ=~ K#<™ÐÑ[Z¨ä€Ú°Nc•³hnkCç¬L‡à›]Ý=/š‘=ðOÂìY<³�ÜG|À�­�«wÞezI!ë5hÛÒÊ�îa/óùð(º(�cÏ: íT�¸À!ù‡l>ç�ÑË<Êé[‡ÃåËCüõÿô7ÀÑMôÒþtëæ pUYm@…«ÐÃÔgLüÐ@ï4Þe‘ÚSÊ©'O¤¯~é dç8øÍ×ü&¸é^œÓ€£ëZ˜'ÐHv»Ôg @coµ’Þ|Ã`½2:ÖÍ@V~KÒ·cÙÍÇn ;ÛÈOÖgàÜÏ”µê)ímé©çΧ·Þz‡êÝ*:RUCK�|_é%v ë9ØŠNFR4øäÙú}+¶M¦Ðޤ\7Ïßµ¶'Ÿ3†çŽ pR;RÙÝÙÙ†l§¢Þ&Ü”�¹ðAïЋ€ßÕ>‘¾p.<â:´]æ�žËéVEr³üÑÃòå�?<ÀjIVÀÊü\}V›_g¨t¢ì^ãlMolâ¾Ô��´ 3žçlç OMyo÷#C! âplç ü>æDÀ\]7Y�9Ä2²0‹jUà¢ÜwÿÚ{:‘sØ»´dÒ&zŸJ[·ëdþYå)´QLuÆ¿enUµ•>­Ê’>t¦ḒöÅKƒ Ò®É�å8¹ªM �}îD0Ði’Fmá‘Bá;a™AãQaì<ñ@úŠN|èXʤ]ŽMY¢<ž%8�g©‚lnkç¹­4F°¾µ·;9ó$vSwÈ:»ï™D®ï¢@Ùšx�ç�GûÆOûâÜW4ÓñÌé0W¦åxfÿ~�ê!{å‘ôŠ}ÑÜÜšFÜF¯ Þ£. ÃÛ{=å_YàLo¨N ê4�ð¼…ó[_Nt¿Ç¥#ý˜ˆèäHaðdôÚ y�óûŸŸ�ãIÓòagàWüDzd-¾Ç\ßQ~Êß²ïòÜÖW·I‚w8²Ñ×Ô5|�ã°—&LÜ.g·h�*�è‡Ó×)fÈ» ú\왟ÝøÝÏ |$æÍä…>(ÛVg~,F`Ï!ÓåµÐ$Kø ËÇŽ_y—{òxé̽JSÚRž‡¾ ñU_Nì��vœ7#n·wm›ôcu_ø39'õšà�Ìm²SÈFö%ocÖ€…:—ó«Ãä@Ìž…ÇA4}¾¾Á;žŽüZ�Òuª—H¿îËw]·‰Ä›ÊŽC¸ épfóSØ„ÞÁHv×Ñ¿ZO—ÀáÀ—jCÆòŠ"}&wnߌŽsÅè_Î¥ÎègíÞÅ-&ë>;ðkÏA¿ˆsd×–eAšìzàCð ;ÇLŒ3Rb uyeƒ„œPwÑÉ®/μ·ˆ@›vƒ¤‹H7Y‚Ib $t™8|š3÷u~P‰g³.vÀ4€ã1�ö‚²Ñ½ˆ[ž‰A`y*GÅßÊa82–ð‹õwÏxnj&ÎD<‰ÖÐêŸ<ï¾¢ ³ãêkìòâË®1Ï´ýÔÕÿb3Àгs âƒ'ï¹n1· í‰ Ÿçê_.+ôfÖeb£çå›X €b8f2¼¿+óäâË.ÉTâöþw¿·OŸÂVX™|y�vÓ?ùGÿ `â�—1�ç®þÁ ù§þ`§¿«�ÀuÄüìMØøœ0Þ±ÎQ: ¿Jða(�{žŸ4®œf¾ãxÒJp–¯ÙÂsÍð�oÄsÒ…òÚ0~A’«6Fðý²™¿É³ð¥î膜@À×é\¹ÿ50êó.Ù€¦k�ϱýÔý]hдëâç�Ïù�4j2Ðúü%¾'o~ÂÁÙài¾”…{ДûÍÅŸãËÿŒ›l(œ„.å+&ÇÍÎLo¡Ø‡ôq s[˜›|-\œ<’[X‹vRønø��¡M’Rñ±HÏÒîÿ——<~Xnq­ªÅEÄPÖVLdç~my�ŸÁÊ ÉR®r5ˆ«~c"„úç~0�k7ÝMô�m`ê~mõn°1Æç\•Cã$;ŒFRd6�í»í*æ¹°­vÄ­!P-͆îÈYÙ…}i~æÁH+S­<¾Ø¥$£²íœE*§a ±¹²0U4o'/ý ²º"Ú˜›äÝàˆÃín£ƒ£3Éóâª0à__W‰�•„ K¥ýyâ("D$õ"›§9·iq±}˜v]âd6…>ZiÄ@ù2g[�Ÿ<ŽNÈàöz ýÈv<Þ\_Á!y§°ô¼+KžÈ¥E%6 ãé;·ƒš‰Ñc³ï뱆 e ³×&ôX;éó°ZºÒ—<ØØYN#ø2¼S™¡-b|M®1ÿ2ÏÛ}¶ŽªéL7ØÂ¯HÇ]àa!Œïéû“¦µUÄé:: Êó‹˜éƒÃ|ÔQ šïÛiá—UŽEŒO¿ü‡ØMúk%ź[èß&Fm‹¼v‰n}vÐôj¯?39L<Ó_�ÏõZò7ÏndtÝd"pE›X?¼�liÚÄ!¿£ÏI?ï,QÄY×`¬|¸™®ú¯­¤·�W¿M)>�ùyüø“"éŠ=ÉWõ‰²l|tKc­Æ Œ§ LiÆq,X�L`Ó?®\³Í¹òvYèÕ3œ+$%€ôÏ<êzÚ�òcå“:ˆ `vêS6ËŸ*Ø‹ãZ´(0N¼ šQwùE$m²f8 ¸Ìý‰NÚ‰¾ p"Â1v1,g—y- Ô‡âýñ9Ìç7<{¯ì,áœ�Í.,‚Óœ§cÕ××üMÌÖVÖ&Îî?KNb�Ú¡^‹%\Ä+a@ßp‘ç™´‘Ã~Z;Zù¬4}òñps‰ëË,j(¤{/t@§Û‚ü,±F"R&ʇ–€Wè´{éô‰>ÈÙ„w*ÖÑ_—à þnŒFz5aqª…�¡“ñcÀ¼y /‹ ¹†:Ž�†uÃ4—ÃÙm¶ˆUæÅ8k©NY¢*ÝJX�9ºç�±«7<ˆ5B€ê8�—kÜåhþrÜr ýUéÃû:MÍö)‡˜¹(òÑÖÏV춦ôðäÁ @HKò ¦TñYd…1Ÿ·6œ~UTœ.ÏŽƒü ¬';(•Kðq#R™?Æ~m/K m‚2QÁ„¿‹2§’꘽êiÃ`kð…™ÜLÛ¾BÁzôÔ0·§ï@*˜š…I£²îÆU!Ü5`OÀÃ2È«ð�‘ÏLŽFðAÁ§�¡Ze ö> *2ó#§Î“ÙÓ,·"8zðð± §á8A)—Xº;{9`îH@øÊ¸Î<ûZTž$h$³›dc„onëÎ�sßW„U($Ø%œ�ÒîÞ¼ŒÀ8Š›ZqPr&‘å!zZ2F¤ž¯{hl&‰ÀTc×S´ó<çä3 !Îâ—Êš¸áKf­Ã2ÞçoÛ›·°Ÿ$ø~íÚÅ4;0’~í#ëî3ö‚ß"È}<™�02X)ìL°=³¿wv÷F{Ëüw~7�ûo?”ð[*Ÿ{ù 1¾g)3'%¾w©z¯&ØÖÝ{˜ý˹ǼušV²½éÕ©ãT‚“7?9^Vbdy‡%ÉÓ,{“ óUîù�ŸŸjhÝ}ˆ¤ ð�,³<2.§Æ„ÃÃV-¡lƒuhÍÌÈpibàZZØ$�‚û¼óiW¿ÄýDvfhïij]]¢� ÎÇÛT„ß¿w'5#�ÚœZ]l¦µ­EZÚÚ¡)î߆iýèíFµìö©Æ&‡xǃ8§søÝ¿C�e‡@ÿ»ï¿ m/(x4 æùö[o¦��þôõ¯Gù÷ü JÊè'h/óÊç¾mÛÿè[˜¾üůeøL0f›ëTmïèâÞëîôÇü-YuúÂ~9§·0Úžû‚[eví곟€~á�f îswù~NíÖ œX-iðfbb4ºN4Òr]¼—WDЇ=*@4M<& ©·Þ| ŨþÒtŸ‹rc‹ýã$jØÁB>±Dtü{wH˜@X›ígP±Žä ÿ¶z©†@u%JàøèëžO'Μ !ÿ¯ÿàŸF×…_û­ßIW.}œÞ÷ÍP¦f¡�sŽ�<¸í A¯ð‹Þ#Ç©|9äý¢V„r.¬¡ }žCg»`¬â<Õ±h{¡5î±×uf…¢ÝZ)æK'ƒ²HEEÅ]Þæ³åt‚PØJs*¹(HU(� „G`œ—+{•3*±2V¿7?•UÉgýL™h5YîÎ�ª £Tt6‘¥Œáù×USɉÜ1l¨n†¾Ù¤^·b¨F”�p•ô–ΖP®UjUÆLP!ÝÝ¡ óë´24¯ƒ…@™‰SiÉÄ/d=x^ZÂÊ8K×USÊBN*uËÓí"`À Ê¥†�Î-$tjË(œO8ÕU¤�ÌGÆb(®¯*GUj²VqïpÔiè”Σ\ô“FÌP–wÙ²­Ì*>xÅé ¯¥yíKyÓt,!ñ¦½“ÎðïÛÂLÀy¤�®¥¥Î®2f;÷IUs5ÎòI\¶K:át¶‚Ü .z)6¡C=5m1[˜÷ÔÏÌVTW2©TgŸ|Ic $X‰Ï™ƒ€À p‹ÊLœå$<©ÛÚýH=Á€ˆß—ç¨óHf³ºþ =F (ôhÂMõøž]q–Mf…ÏÔŸ§eœÆ‡U9óTÄÚNÙö½)vÃ�7åRå(M›ðãZ5ԋܯsÈËä×þîûáÈe&¶ª_³¬€©U–$S �'ÝÿþÕ«HTe.uð çJtNuú•0l¬¬uZô<2~­ä�Oê$2#¦ÁuëtÖ‘l ãžÅßÉ§ÔØªç ‡fðê]#&ÒÊs­"@ï_EWçLëkåY\d°W¹ OX%‰lÉÏÇ9Åï:³÷¸žÂ@ŽNiõ|ïSÖbËk³¡ÍÒ6;�ò<ô�LØC.k z/–•u?û 2† ºnvÓÝÕ…~Ž=�ƒÃ€¼÷&rŒŸU0”ÒC{ƒ uõŽÂ\ëÇŠg�°îC^Ë©Ä9ìò·ºZô2“Ø4‡†è†42F†8X]R 4¦ãŒ8­MÓÎ:¼ÝŠw fšxåF[mà"ÞŒùÞw¿Íʳ—º¹v’hû/ÄÄS–¶ˆµJ[^�0 ÝÝ ýàl'èE}^¹®.­3M‚¶£ïÿÁ¿øgÑÂ.h Z°Ež­'µ¹&§l�g…¡W•pÕòP:Î'œë$‰pàŸ#èÀ„íK—®¦»ÃGPÒ5yÖͬßCØ ¥8R¬À·Ê¡]ÓVƒ&“˜=okCe›ÕàûN7ÈzÝ�ÿp"`S(cb/ÀFü‡B_~áåóéè‰CtX¤­ý�ÀkŸ“¾÷¨´yêü™H¨¨eÍmm­¡_8�²Šã`M%bßsíá”åLÔ6€ƒ�m“ÔÓýLWtéËDH.÷ï�P3íd�Ûù ²v†$ ½mn2‡òÅ+zLÀ³˜Jz”Ö­˪ÞÀAô5�fòOñR{[zÔƒ¥�¢*¬¯ï�ôZ�ž½ð lª›Wqv$xÕ�üÜ6˜åTw˜€ÑÄ=†ÂX½ `Ê8y81£Š�guÆœœ»úŠxê˜Ò)ž3QGzkjkÁð+rûï¦iº0¨3ˆÏæmu+ž%Ég&gÞÁ]†]mQY¯ëcÖ¶ëòEžÓù(ÞšlåUÑn]IY�¯¹ƒaphzr æÃ´2Ãݰ|ÇóÐ�T†lé>kç²ôìuöàù?AN>—wÚ%è…ßuƱL:ȵ£Øá Fßö*¶¬ð çp´Ý¥-)Á -cõ‚%ô9“ë¥ IÏØ6×ò#y‰{7)k�³?tô�Úú°›á|J-\‘TàÝðП³¨êgÛÆ‡ó•9<3ñE\÷ÅRùÓ{9V¦·:4…³Î¡ó|š}zKþ�ÄI‚�ânTyqÚÞ�+Œ‚xO�\\‘gˆë~&¿„ê0¶¶öðÄ�‘Œ¢Ó |ÍgÄG±¢ ’ΞCÀyþÁà#Ò AcuõQÓïJ3ò �¾Ê{«‡MÚàdƒÇëØö¥Ý¾…>£¼g;!½’ëÚÅÓÍëØèl¾ììåòe¨ sÊÊr¸~Ö¾„¼c< Àñ\d¶t«LŸâ3þ[ŵ²eK>2TýÑg]»¾H÷ß…ïY¡í&ç„£˜µÿœÇ@º;ŽûÙW�G^žÎ~d&26ƒ‰cföšwN!3õ?~‚kêþ„¹ôsªSe:ž¼Á31ðì–*è˜ã™;¿ë70#³Ý#ÙË`�çk Õ€4«bÿž³IJY]·àÓ–ëÜh!gAj;®gíæákLpTΔ„ƒ/¡¬�Òz\“è#àÄs¼ ñQøÛºú$z”º�>G}¶u]«~E-v5Ì…ßZ5j«ÿ®.|6øƒVIÔŸêy%öÀY1¨xçÊøú†àcxªC‹Èº§ô{ªsˆGâˆú¢{ô<Sà�àgCááY‹_þÏ!CœX?ªp6QMX¯9|„iäêâˆ/ÇȨ+ãíÚ úË XÑÓ’³Ð'|0tBÖëó&¯\5àí¤káè¼®-™ÀÄ*sN#BAkžë0!Á½y>®[ý]]QlŽŠÜR­à¨só8012ƒiÀ‰ïhTÎGb)c¹Fýâ�º‰4æUÃÏ`*npJ¾Í úbMÁ›²GYïºNσy|>®Ùá}¯Ö’†]³Ÿe‰ŽæøÚ živV®/ðбøŽÉ®�*)ym°Ý˜z•Éòºx�´ü3ŸšÓøMçÇÎVê»ûº·4éĮյü|¯ì9Ÿ_%Õç&#–¡].WÏ‘O,Q¨²ïª¬mæ|Ñ� �h£ŽЫÖñך(,/s�Òªv¢>T«¶‡FÆÐçõ?®‡]Rˆ?À •IÒ†wšÛ¥Lôv–xepÐ"X£Ò?j‰ZÒb  ÏØ•T^c…»ãû6â›�”Åÿ"t?m"ŸCBîɤ“ /à'±(Ÿj|ðÞk1H¤§¥öAØüòò+ =Ïâd]”Nµ…=G;#YMí³«åµsíœpâØá°‘fè¾788|!;f‚;ËÕó•Óùùh¢,WZöÂЮ Ò‡üÕ ^ïÁü{•áÓðj®2Ö³ \MŒUÞóXì±…õ†m„¥ÿÀ ¤qmyçÊd»IWìv3ÓÓüˆ«9ü  Éë+á#´ÚÚ{ÁÃç�|Ne´åÆÊ5ý»µõYàY[H?„Æ5‰¨žá>ïÞ÷é5¡¾ ®Rêg-À/‡õ㱃´�Ìb�Ê’°Y—¾iº¨ÔªyÎÎI‡ž"ï·Z^Ùá97lk{2ݹkL�k° Ôª‹�?ä.r`©õ`OgÈ,aþ€sÙÝÃo\FWd§>^“Jè‚fëùééåC9Ê2x_„ð…TÀ¯Œu¨³€HP¶æ˜d¿Å?¯Üµ():W~DÂ/¬M1àuhv×¶�ø,c»FÇðºÔB1í6üŒ½+�á�}žZð\&§Í9öïÊ#�ŒsÞ·+ü›’&žÅÇÁ¹g}.ò©]:?x�`fm<þå�êIÛð€uºˆÂ�ð¥CKà³�¼M²0ͽÉ#KàÕUU¥ÐFv½þ¬u®öÊYì&xBÉž¥ü[Ÿ™1BõIØ€^ �“³¸l„´2�³1‰ù|¡ÌÎs¬ýæµ;åµñýìF®<§ÔÏBWÁ¯ÝLÐ(< ÂØÙ톱EÿðÀÝ 7}äv_ˆd9èhwo ùG‘š­‰EïÚ¥õ«•u¥�ʉ0éôª"p§l²ÂÃR÷pÀ ³` ßa³¹ €Yû‹T¶¶�˜N‘U‚G2zËßZ2B•G�}*+d(|e"~®`ö@Ìô1Ë€¶:…ÙçnU¦“�Þ ×%ˆ¡b4›ÅÖ fÊ´ ¨´âÖuVzp2°0âøÝÌ<•¦¨f!Ú.aÅŒ/|'‘m¤’H‹ hnmG¸oÑÊ‘»—+ª NLÌ=�ž~îuswÓÄØGOeM¶ Ü`jûkn%Ûeuá03¨ zo-„Ïúò@¬�½á 6,ó0`¯òÐÖy�õ‘Í‚R齿�œÂP>*ݬê›ÚÈÄl£MVWJ *÷iPÔ*K‰Hä“éØÏï¹&a-R»`Há Ò­SÕ³´Úë ¯bðP]Í÷T,£²“±}¹Ïý—0õ%c2³±§÷Húå_á^g਀a�Ã6(®Í3öo_"þ¢•ï8ü4Þ¢úGå�ÐÑ{š*뎘?ÎxX— O…­AS[n_úä#îŒy#Æ58&±ÉÄ'I4ì;z2íßú½¿‡–*&öb嘂A¥Ós¿LÛ†sÏ( TRUŽÉ¤cM¯ÞOOŸ%�xòùô§ßþW©¸²<ÄYR˜�·ËQeMâƒwsÂwÒ‰§N¼wJ›­Æl®Ì:sôlr×¼-9ÖîlÓý%»¹£!=�h �­AÁpS(Ö»´„åÌÆ¹×ÜJñ{fx;}òý©®¹"Cqr$Õ·ô =�FÑ’çêÇïýiºúÞ·;ÜßÚ“º»ûpêÏá¬â*îa÷žÀ7¿ûM˜MN89o~øî\JOž'XkÀ¨²ê­B'ÓÈÈpæ½Iü—šhÛ*½(>DWá)üe|:¤Å?V¦«8ü*€~ÙönV³�Ž�¢Œ3_ LÆž¨ŒMqöÄà�4;1�ºÛZÓMŽŽ* Êãï|;ýô-R$õlSy« P¹%ßJ CÙÚLý·/§ÁË??8_x‡ëרÒÚÍ+'`ÿ(M ÞHu\§0zÿ�ŽÓ^“ g’sÔµ†óu‡½•È*®&¯„ /ª" ÊÌ2x™i*ôå#¡3r¹ù•œ4VbKîëá™:ªÕ£lÁbÖã8¥^G‰T ÏÐö¿£ë`:uæéCÅôè‰S¡€§ú!pz ÿ>4!y‡•ís}]ºt9ý³ñ‡é¿øæßJ]|ß c39S•¨àGÀÿ¹—ßÚ‘/¸ÎNž5HýÛ¿ù+i¾×ÜÚðÞ#G™ƒ¶{3Sñ¹gd€[Z•NÌ0SØëÜ'm«ßG‚� ÷îÝ¥bñV:ÄÛÛí(ÂdGÂ+Lªp½þî«•D'¯w<×d÷ÛáÈ/XtúàýwSWOAŒ¦t�ʶё¡À£³çž§2‡3{]]¡*�–â:ç­8‡û„¹†$qQ…ÖàÂx¤b!�æûV^nl]A~§ƒ}ÇRÿ½;ᘲÊúÆÕK±·.®{0´ïHmê×/~ü~œ�ÕDµó;(òN3æ ˆã˜t>騂oÐR1ò>z�Î)®`°Ì‚ {9´n$à#Ÿ4ÃSÅ&3äI¤â»•dŠÚÒkÙ6WÌ£Q«¼(¦zÞH´'†:]S-¼iš¬}iAÌoòe£Áoùë s¨ttÌ“ÌQ«³Çyí0ãÙ®N¬ϲØËúŠ�K )Ö¦3@£ÅjÖ�]îâœÄ _*}ÊiÙd2iÝÈÂÂ3æQdµs%ù$}U¢\±ï.+B&— øiØJ¯Îó(Y⬛Ÿfm(@ébkQ¡53~%på±X‰5üeü�ô§³Ñ�²=ä//ßÛ—‡¿È5ïÃʹØK|aÆ~æËØß¯x,/i 9Ç„®ÁÁþ4ö¨z!áë@}úü~5�£ƒÊí«—ÓðØXZ¤ÛÄÑx(IpÔ«GtjHKÒ›ºH!›1±dÔ–•�ïà’T eŽ>ø¿íM½/Ï·Ù9Œðè \�Œ~ôAÏÅ—:J´âçÕtn /eŒ²Ä ]|È;P„‘Lïܹc”rÞ[Œa¢’û­€çÈÏåî]ºÑb k“ ²AKfà3Œä†<Ð6óeп/ © ø½¹p*xá0 ãZϱ.|m1WÜΔÁîGÝRgE�‰±¬q�Ť'õ;e*˜Èÿ\�::�&ž VõËV¹bf ºÝ$ÁOþdUöOßÿ8x‘ð÷îpŸSgQö© 8¯‰5¬�'D ‡fàØà¦Î “¬8u m ƒ œŸXyëìÓ»ÿÊ ØvÚlla——§.¹Kç¢I`z9ªÜ�|Í$Ú=d‰r)tÖ¤ñ CÌ¡ƒÄä„l�CªYÑÅ ŠGX¯Nø9›7x,ïQ^˜P¤CxéÀÓ¡Ã ì[]]Ç;¤Ý¯{ ‡0kgbÆž�—Qõmm�UƒÂÚŸ:¥@“(„±rk� Ng�/üj±ÇfÍlkÜßUŠ-36<Œý²ÁÏÁ}é€ònÜè✫¬6ç<jMdÓú‘�¹gTZ¢NÍ_ü.÷¼ï^;Íû¾ÂPC:È!öÏá°5�´(½¸ÏJd°÷@–4ܵcˆãÁûçIÌUWrmÚ~®Aº¨$¸àK£WG�Ç£#c!/tÖ ß÷<´ÃÔá”%:3±ýJø{¨t˜Ž&8� ®¢‹ 5íReUè~ü®ƒ$ε‹wìE[o!/KpÑA-Þ[±§¬Ñ¨¾€ÚÚÛp˜Á_ffãžFéÔ3´â¿·¯7Õ¸öe…øe—ÏÂu¯T>&˜{®‘ ò8qB¸[aª>-LµyMf–Ïd�?”–’°ŒNâ>S€ËótÖ—bS¬³ŽM¶-.iw"A±ßÑÓÀø¦5à¨tÏ}GH–�®³8`ÿonf²V»ÆqÂyÏÓv™+ïìS1kb(÷Ð¥�*uŒh¹½»“.Ot4bn5÷¤9öm8#GmðŒó!ÉQ8ÈÉTeϽƒ=9–0ð=…$ℬ'™6âñÚ�‡£¤BæóŽÖiÅÆ^^-ªÝI€O!øgò“thåTgi;uÛTî3¤^&O�ÃÃt.zÒõŒctróÒµT$�çý-κ÷ø*Ú€'ò€÷ ’™#�ð¹(ÍùˆCÚ̺…ä�4ÔÚÝ‘:ó’?ÌÕX· æíEò®É”ÒƒðWGŸ¬­!!H<1q)ü 8Ãu”*£L¦”‡µuv!?é~ÑA"O[{М×3MMs/¯AÖ`‚·ø _¬Y\V†¸æpªóŒñ™¼Ä¡€‹gå)3S€\¼ùÌfýL¶òiêÞ¥y“¹Ê±湚jlh ä R `ö¡Înàôß²óÒσm ÿL¨¦&h¨2%´:+…ðéP[0‚-ŒmÁa3~¯ß ºñ=±x›Ö¨‘øÆsÎ/i'h z…$´û\L"ð'œ­<Ï�[&÷/#“–Ðw}™$í�¬±÷ÅñÊ*¯„ñz32èrçè»q�ú‰ ‰"ü@^j¡/ñ»t§S7ãá�LÀ![€ŠßÝ‹|RúÑVpßòV†s>Cîò·sA¾ÁÿLÌ-Ãá+Ï�€�4ÿ‰€4|Bž¤Fäºì¢&ןâû®×$xÏ5þ±+¿ä3ÂÔWáÓÊ`ÛZç3¶þÈ웬žòü–Âß­ypbïâ[jY¿ºŒWCoô Ýïù]¿#g°`JÞWÈ¡?ñYœëò<«0£µ¶cóÏd;×LMO2³>]·'•Ûž·2&2à°ëQÖ¸nׯãgœ;ï�0’0SÇÊŽê1þñ¹xçgâAàæcˆêD<sÔÔ¶Hç ££ØBºÖ¾„>�šèêùGg& ™ìº<_>Éà°e=Ì£þ‘Éì6_RÏôvq&øc xÄ.p{$¬ÅºÅð x={¹y‚Ïy¯˜$Cõ"éÊ Î"¾™sž‹ Ù7ÿÕâß¡À ?ëVB 3ÏÏW¨�,9ªs¡3¯Hˆ®9Œ¿/ûÔãÕïÅó€/óçÑîl“$Sé«8¼eÝlžý1º˜ë`±œ¥ï ‡¶ÀT÷ù•:¸ÿã æsNe ‚?ˆßÒ±Õ¿áãâûÚM‹Øzî¥úqB�´SÄyDq~·;”Õ�«˜?ÃF&óGàŸ÷\S¬“}�²~ic›¿µ L&”ßXµ+-iÃEÌ‚gÔÿ݇ûŽÄlèßE»í&ç‡ôÇutvE1H{W7~3Ï4À'/³§¤5ƒŠòÊì*³©~ N{±èO=Ñ9œI4 Üã÷Ÿç%¼³3 HK|$‡3+©¬�µØ>½ô@{fàíèW̵ŽÝ%ŽU‘o I›Ëk$׈-ÌL„?ÕõKWÂÎà§+[ÑWIXÄXÐ_\ç06�þq;¾yÿ´:Ë6÷¯_xõ%®²l@ÇœÛ-ÚMg�õ©ë•£k‰ÚÁ{èšÚl#nnÜe}Ú–ÄäßÄ�¨®–E&¶-xVÁOÇÏrAúɺ£É í|†› ¿7 <ü­]½�_¿žÄYõtý×ÓSttfNí¯°ƒð…Y]ƒ×¯­[y^ÀüÚqXò3øŠ±‹¢€5ºeãN&Ò‚qâû�ú5ôø¦:a]˜æVmy�ÿdƒ8 ó‰_2(Ô;Ó™yx o} &#ȃì(%on£”öÖ,AVñÝêr“lÉvºº1‹±Ž9v� «$#зjuu}üžX„{wƒÆËt�¦Ê×RžñÜ2_4צ¡©/í§6‰EVê.Æ·´Å-þ€«¼ì>&Ÿ×¶ôz+¯ë(áüô×Ûõ–ïj÷ø2¡Á„G»7¸Gá«/D^aríç_@¬²„øÏ2vj]0ijRþ6™¡^cœÄ+6äU%àÄ~â�ã«C©o¬`ß°n«Ça=À~+-ÏÇ\Æ‹2ùÉóØ”žÿ > _úœŒ;‡>O´ãØÉ6j-V³+·�ó©·"yâyí]ýFâ¡q_íañؽˆ×ÿ262í³åLª��û=ï:w�ƨµ©A._Дz‡òQlmkk£ÃEg�¯¥¼šªu:@˜ÀÁÙ“…ÉZä-È4mIö²Î÷L:A8š…ƒ@€8Íä*ƒ@½Ïo7‡lCp8«|_ÂõNóp~€|2ô-î´°7ý. Y ŒHh£zv–ÊN«’ÂÁ+ƒ¯û^¶}WÑÁ¸føùŒöù=šNUR:MͱZ»ž í6óm­ù]æV˜ð=ïÇðþâ ËüÔ0ëÅ0-–Yeº*È:•æ§ð™™�®­©§åø™tÿÖZyš5Ž8aJz[A=m»`„†‚Û-Vëæ.Q@IDAT©TX=cf”HL €š½SM`e]¸°&ƒÔëT¬z?|Uu=w0·§Æõ�mmp��‚¶‘Ød”2T…7¸LèìÓÏÆs¡¼‚VõŠœšsdíž„¨Î6ÉÙw%Šjö¦Òš}jþr‰dŽ´Š‘Fº“ÙÖ¹¹¹�]òâï`Hñ+¨Í|þ ¢c ¶Í~™`¶ g(�ŸÏ”bÂïûÁÈA^•xþM@€ì»¦¶6ý�¿÷?ÇßÍDf?ë$¬SÖ—ã¨t¨ÈD*˜f¦(ê=~òTú»ÿðbÜE2Óª`ò5$.è¤6~ß5)P;ÈØ7éC†‚ ø=NÿÇ?øûéìÙsé÷¬÷9‘^zí (6ÃéÚ¥ù|˜6ÐÞ´;�æ™þûwB‰:~êIžJ�0C€ã�ÆG �¥ÔKrÁ:ŠÄƒû×S;-ù»{~#Ю]»N˦y*ìhãNฬ¬6}þ…/£HM§ïÿÑ?¡’Bgºœa) fÕàî¾ð¹4óh$M q·;xdËÔà½TBð!Ú%oX#huq:Í=××È΃ÑTÖ4Å‘­8‰gs¨Ân£�LW¸u9}ïÛÿ2‚�Ï?ÿr‰ƒ{ƒ./~òm�ÎÒR²'ÎC:UHLrGÕ Ï|æ}év@8JÕ ¼’zèeàÒÅã›ã´´­'+pàÁwlŸ¤} ‚vW5ÆuJÚBãþ*YÆ�Ja�$«@CçÙÃÖÖ9˜åVj£ÒÅLÒm2óIzÿÝ yƒ: ;º�F`¶¥½‹@;w‘S-ßï&­öÃlçZ„]Îûáä4èxÕBºDëÿ<²Ÿº{�‘À1e¾êöTƒabçŒÛ7¯âD£»@UÎÎ5pëRºß7„ ÷~>¢|tx„Ä�Öôä3Ï‘PR…c™Öå8¢ƒ“G�Ÿb<7ÕêßøkßGZ{gXœpVŒ¥ÙGA>­hûï2ƒšô­?ú×$M4¥ç^|™Ïò–Ͻö9àoˆ.xƒBd'²§…áÄÄÃK¾Ò�m°Tîìô!£ÈŠ{¬‡êðÁ̱ /¼DBMÁæ�Òg®CZåDa%O1 lò…<Æ–úÒ¹üÈW(Ùò>;qêLöæ50"Ü_ýüÁ;®¸v• Æ@ºðÜ‹ÐüÙôƒ|�¶ß1s׫¤1•<•b «é¥ó3VIà1ë¾¥­•ª£Ip½ˆvDuð›L¹ºÂy,¡ìö�8ü\Þ<4П–™»ˆõ[1+ÿª„6{õr‡íÃTã2¥ÃkQ*¸n@E#Z§Ãç[ZÛ#°¢Qa›±Npc”=ÌÎN‡P¶»ËÔ¸c Ü!KU.]ï¡Ã‘D#Ÿ²=|nn¸V©°âÌ€w–�¸Ã9Ûrž.¬mvŽ»rý¼²‚ [ƒä*{à ‚"üUøt^+/=T�0 ž‹™œ:Ê+Sl•lKÜI`¦g%WΫ˜ã[;;f ‡0^uä…Áϸ»8kZZÚ0t0nàÉVÊç™@„œß¢êVqe@r�Aä5,$x¾kИ͔å�40ª³‡‡ÿ’¿Äeå´ÆŒN#7i,‚ ¬ÿß—�¿È­äë„ál…è/òµ¿_•s³¥Ûà«êR�V�}õèIÍt;i!i§¹2=1”~Hg•÷Þ~‹6ºÓ$¢Cõ÷C%ÀÙäÄ žKèQ¶3V‡õ¥³V£>œ¨ §mЭð–¯çr·­z„ 0ò&«ÑÅ� ƒ­¿:_ ö2'“Î i™Q¨%^ËÓq1Î? öhOÈß¶2F˜ñ|vž4¨agW¥-ð_ã÷L–3ˆ¬QµKÅ´’A¨ #u^f ÃCcÊ仨š€'è¼2óÚ‰Î'_:M]‡ÎÄycÅ9ÿEpжÕô\Ãè"�Ç: ‚éœs]ò+ 9×£a¥ƒF®˜5H{‰ä-‰Êai–úƒ˜vŒò.¼Y²ƒ—L&„ǨJëL¥ov4΀áÔ˜›Ä)ɘœ5¦Ý‰”ðh6�öøY?Ùæýèå!ú�†¿‰´òÒ Œ+ÔfX¯’ )¾/Ÿ÷Ü üê ÙÔo÷àõž•¹m ÕÌî6(­¿›«}¡ÁËXŒ!^� &»iØË_X�IS¬©€@¢Áw7t"ù]+Ìud.c€«—‡³ˆ5¹nù¯Ž�r:2[~«\TGц™'9Až\‰ö}ŸÓøµãÖ=Ú™k´Š#9ü|§Ð r×d£|�Dœ!Oí|¢s DDɧu{™C9ŒU`áú ÈOôášü'o—k?x–ü?ñà›ñtÏZáûê :£ƒ#ó�ýdŒpV1¢:>vn–ìâ߯ósÞ C?sÎ*™M‹[â®0v{q7:0ÑN´Ò[Ç�g-|äSê.â¤_Ò·C…r_ñ=ÛÞ_üä*�@_Œg¢”×4I‡&}˜tæ˜á˜c¿&LZmî+Mø[{�©�‡ÌÁgŽåVùtø¾xa§÷/¿ö§-ák ¾ÂýÒø1Iá UÚ:+ä)¶m.AÝx…ÁyÀõ6÷)ÿ_tZH Ú× oœ•6VÖ Ðät�Ä^ÑbKuxkÎ:W&IdyäáÀWþ*´ä/þ.¬„»{SÆ{~”·c <ë9PÓi(¬ øëO× È/ ‹Uà@Y�q8üPä{誼« —Cc‘€¡¾£®êX3dSïÛ·ê :±�K‡¹ò׳ß4PÀÚ­ZR±[O•.:wõE¸~ïAÜèÆ–7� Ý?–ÕrYœ‰‰É¿å;œ’6‰:”A»Å™Øå]˜;Й‰Þյܙ Ýïlòm`ï–lsØÚX‹O€ëG°ÙÔQÛ¸‹otd$­ OIKì ΂ä²{÷ûI^È®:ýÎ>÷|:rô‹ñ xÿˆ6ô¾ÌeŠ8çÀ#‘î3|sù†²,K°2Yâ³�÷3ÜÒðÐÚêkÓ±MgÂÕÅ UéAà¡|È;¹¥Ceüø“C1ˆ•Ûâ¬zä¾î�šd÷õõál�¿ê3^»®ÀGòÔ?óIÜ�¥wy›ü]_š±»"GrAYå³Ha\iĹtìfIÕTÈ��¤ 8¦î íµ´¶„ór`p0ॆ©£�g+Ô®­3À¨ïÌ»Ê#á$Q6)3})Ûå�ê`òçæãà]�S¬M<òé}ùâΕw±nx†z’zÿ\ݵÖMæa.ö“9PM 4 HkPù0t½AÂ`!­@µ]GÈa€"ÿPO‘¦¯s]œëͪ’”{R<kxV)|Ú5èßTïpíê ~tÇX©º)cúÊøL&s„„ÿ÷?ûv³)‹Ý³Ž[�Ö®»ª�Û®7§ÜSÔ&Ïx‰ßϪɼ�ö£ª”Ùê]òeÚà�z²•«Â¤ÝY�4d9ºL¶>$›‡þ'Nø]Q|�¾á{¾%¨}^{R}Ôg”ÁL°7Åqa ĸ¶¬Û2Â/»zÇå9+<÷ÀE;ï˜À”ñä òxÝ!žÉüàŸ»¾°Ö–·…=ÿ=Â.DÊÕý€?�ò “1aè |&>d¾TÎRÙË{Ê3·"_·�²³½à˥ȣdÏÍ›7¢þ¾??Þo\WÕ˜~üî;Œ“(@™ŠêséÏsÞáMÏX,îŠ9”…œBvæ>,AÕØ“X"\”�ò qÒ= w¡-¾ç;ÒŒ2[û¬²l`=&ØÎš¢Ö;7ó(5Õ·F`ï;ü-t°Jü¥µàË|à¬úk�˜/¸ìº×8ã©iº§TTw†Ùü¬�9¥#×Éì�uªû°&ñJ9/méß¶îËóõ¥5£d‡gãÚµ3ÂÀß²ç"s]Γñ²ŒVW�±^?$¯±{Í�kןÕõµ‹âÅxÚSž­CªÏ:pÊO< ÛÜup:þ =ž÷C‡Öêt®ß“ôŸíZ�G'uâÀ+ÎÐ=:�Äúùoœ›bñA%¾Z !~ËcàCÑOgÇ…ð“Bc{t!T§«�u·±›Ÿü[=‚Eœ,Öp²-øŒp‡ÍŠ*?›Ûùž—Ë•¯oÊ)¬tOVl»>³Ój.øXPT¾ç Å—¥ùɈiäÂOõÛ­ÓUÕ¤ mˆÒr®ÆìC}H¡üËëü&)Š“gOÒAN}©çÈ¡ˆŸÜ¼| ìñ(ÈP®­Ì>¤;r–Ô\€þ«­VÞzU�zÕêò,xæ5êØ$ˆC0(¯QÕö—B „û/d°Yg�Q´Éa™têyP4Á[ýϳf;|Þ¦�bC»šM= º›`iøœ9#“ä§Â=ÔÒ°+]—¸ªþo¡¤z™üËVã-­­à×v´WžhCÈGÔÍ¥ «ÚCfÆâ"Q =Öbig�s–çÛ!Z¸Ö”¬¥Îúüt}À8•û! Ÿ¥òƒC×v¦5v/G�¨ªÈ’žç((è^HÍuÅ©½¥žåçî.³¯®@g±#µþûQìÑ9ì2õáZø`VÉ Žëê 3ZCCMvV\¹¤\T~ÕÀKåò&uôˆ/²¾À `$ h«¸÷°;�Sî0#v�n¿Å\CRFÐ7oÚcívŠE~K­×)Ÿä�&Æ2ÿ°íÀ¿¥"ü®Å) ЦôáÈ[º»ÛðwÓÙ{ZžÜÞÖ ~®$»øýjŠ•|ßïð•ï‰Æ=¶ö즰°)ã›ðW×ý{L m‡î é×q_&H³òBñÀÀ®x'4i_¢ ÞÆw ý>¾1he?®§Ç”åÅ$ kO¬b›åéù­[ð¿¢ÒÂ>`ij^+µß,þ^q%gÓF·z[V’�=ç_ÕCír|€k äù®sŸŠ;Êù\x–E¹v4މv Ûði?ÚaN¶]¸]\È`3Ša€‘Ý8Š!’ÍMô `¹aҽܘ«�æd2@º5x]ÀŒUs£wª;Éø¹Y×HíXý2Ê鞃]ÄcH&ælô…H—ÕÕ�ġ莊þ,-¸6ëí;t(koÏgÂÙniÒø·áyîÒé8”u“Ó~ÃÿgàZg_!–øEP23pe 1àV£`…D�‡À%n•e,Fç¡ág‘VXõáøìê9HK î€å@‹„#1ŠÔf¥Ëð= °$Ãl:>Žyx3ˆÞ � 2#Ì ²µŸÏ*Ô–g—Cˆ¹&> ätƒ"£LSduçÔä8êi²]©:&ÐïazgTTíi”ƒ¬•ÕTKÌX�ÄŸ5ð£p�ц›÷Í(2øRJ…I)5>tB™cŸ‡Òàý[ôû'è¾¼c†ýÖ Ü,£ª˜Œ· ‚—fTj¨×Ö7°!h[S‡3Œ6î‹BÈ€,3~ß¡’Ÿ&$?×`H8ê ô%‚…1*|¡ÜÀ°Îyƒt3(n"‚È­±&œdnqv¼/<ݷʉsì�¹ÿ{Œïþ¿ÿÇgBèÌZôŒUê<1_Þ¾§Aå³LÏÈpÝWÏÁ¾ø®ŠÊþþP$2çu6¦ ½GÏ…ç^ •ôL¨ôìù€ F'l=÷P†œëñKEÇ Ò/íW!`”VærMŽkÀòäOñ$4AâÅs/½�c¥<G¶ê(¯ü¸ÐõÇrî”?Í8GAªGÇsž… C§”¸´¸ðJ´ ±BóGoý ]¹q=½òÒËéP_g·—.^ù˜îËÐcaÜy>:2HÐýN8BkIP¸}ûzK'ZwõN“´æÞÂÈ�¡ØšãÁ�k‘Ñ­32§ "uj fQNàtެÌU˜uß±ÓéÑP?­ÿ©6¦ý¿÷1—X// z¨” ºì%/½øâ«éÞÝ�çï¾óŒ§1ZÇk¬¨ˆ=H§Ÿ8‰586ßy÷-2ÍšĶ.��Óºýß @Óç zz_÷w¾ýG齟¼›ÞøÜÂY*¾š:0p/�;wž3;“þù?ý‡i']mIdè$+ˆK¨øÚ¥-¸&F>Ùo3»ÚõV!<½YÁ¹G²ÌÂÊBŽJÜ‹3˜Ã`.ÁѪ󺜯`˜$Ø™—¿™:¸;§´3=ž hCõ1ªÏáç_|=«´çÙzç–ôgKiKÜÒÉmv¨]6lã­ñµ@…É=âÂKŸÿZà�U¸îSpíòÇT:…4Û[dZÆgímíéoÿ÷¿8ÙÔÒJ«Êô1’zÂ�ËHŽq¼éêîþÓT«?În}ý×~3}î‹Ü=Nò‚�¤o½#G£ôTƒf´¡Àƒ÷/¿ú:ø ~0棇ãÁþ»ÿá÷qܬ$!q ¾“ýºv%+û4".›�gö㪕ãGŽ�õKÃÒ—É,¡eï8HG€­J‚†œsûSú¶5�| |Ü—û|Êà°07›O#ýõ_ú ÷™�àí�«C™s3Óùr´�ª ñ¢>kµ·òèæõ«�§*¥žÝ<ÁVóÞqË!׃`¶Â¢�ªø®X·Î”£G�²Ç’ÉèB/Ÿ<á•/�û÷ €¯DG“Åt¸˜ða¶«Ê¶J>‡È’à‹È³mUp›ZT(›g¬È_wøÜJ9�~³kûoÛÆF]¥Ü3èn2‡’£²jÅZ-¬àe¾ÌA­Bªë^Mh™¤Õ¿œXEÌ;‘t¨©¬ZÉ'ž´4roó€Úb [9éPÑ™™vœá*óê(Ѹ°m®Ê…üPgËRefq±ú�J  áëÁ8æó‡'$ƒu¹>VJh÷$éqlqî*hâ…Á8ƒªVUÌaä»>½›æ¸[hƒq`w™ÒÍóÿ1¼ÄûGhûâi/¼^EqóÊ‹¿¨—sÿÅÍJƒ[ÒˆF™:‘‰$W>y/Í>€ï�JÛÆe’]êÚÒ—¾þ[©ëÈÑô�ÿ÷ÿ• ›,W¢ ®ƒƒ›àĦÄzHiZt`n #4V¥%ÝÛÈópÐ�»à¹‰0:‹T@\7ôÕ,KðW³q•å0ùÀ+sú¨+èôÉ]Ò‚�!ù§šr¹† âЩç\£—óþÆØ±µ·€4–IàÚ%£\Ãl§‚¼"ÃÖà•Ý}ìˆA6Á±ÅLÏdy´´‰–V;ÛqÉ®Étkk\¥„z,®P% £“ž½f Cb‡ß•¯ØÂ0Xãª&�¦ðÛöÎìÊ×mñá²ê$Æ€OyO´FIÈEä“ð}³€7h}6Ax�`* ,cÁÉsØ4{‚ïXt-T ÃCt–s|yò&ŒzS¬”ðÌ69/H&cmxgsLÒaCœÑ¹�ƒî#)s¼_=‡ üuêKðv+šínáçÂÁ5Ùæ]ÀGBx ƒIøéðX¤ªÁ–z…$Ê7XÏ»\#½¬Ê5é´ÒÎÈôn;glq¦:™VÉ®¶3KØ%<«³†oð,º%Cè01` C4«í¥“Ù,qy¥Æ¿6€Š€ŸžN§±€ND´‰óW»�ÙžÚª4qEÇkã© ‚4Ÿµ+ ±Ë€‹ƒ0[šßïÔ2ýšïò¾0 g}̧«Ãg\?;amÒ�ú´º€­´ƒ~™Ò}ˆûÒA,�ß½3w£ÞJ;׬�¨íR@%’gkàIü�W¬_\MvΜãY5Ÿüy©’} g�v.÷Ð ‹ùÌ®Õu¸/~ÚžW˜ªkÄç—gIßÙ}º|\28¢#(»òž×iàK{FÜ5(m`5îÏÍœOÅ¾ŽŽ°@ˆG¬Û 9#°FÛ,1ñÄàUÈ]þV¯ð÷‚fV=*oíc¥¤üÂ@.H§ V3H--HÓûNfpÚ,êL€+Mû]aÇ÷£5$¼,ö Qô€Êʬ#‚8o‰Žäÿ›½÷ Ò+;ôNçˆè„ÎÝhä09b‚hQC‰aå]ï*‘Ô––¶«ì*»jø�Ëå*û‡«\åõVÙe{˵»ÒJZ‰ äˆÉÌpàÌpf�cèFê€Î9øyÞÛß“"Eo‘�Å; ûûî=÷œ÷¼9Û®¬‘|À3:‚í° ¿TÎäÝ<Ì¡Š7ÒS Ç“fÛ6Š;ÒÙŽBêV?Ù$ìvö]ýÏ„!…µÉyÚoâ—­”Ý“�<||’wÛb>*ùÌd Ïmn¤z¥^¹ MÏ©'BÆ<ïØ#×Ï4Ñ£‡Ók]à=~²ÂÞ:Æ:ƒøPTx'lkƒ\êGê-vÐþ�à)ùÌÌD¶/&»¨Ó¯aG-À³Êq`�=yx…8¯ž·éì²ú×N}&ÙˆOl ï–?Ñ�Wš—€µ]H‚ÐÙ«^Ó»} íÚ½‹äãé©Ï Ý`IÁ£´Ëd×jµƒüË §Elz“ÅÊq씣#-óžb‚÷żg/zh3 áý}½qS üMÞ€æõqP’eþÌ.HЭ¼”ž…K.¹àg6‰ûñE¼埰iì–¢Ž2OÀ0Žpásu�eŽ–Ñá~ðJ¾3\0!Cž6ŠƒP­¹�Š)y«4'�WÈGà&“¥<èöÙH:ÕÃÃVàY>†§º7È'Þ]ÈêÞáGã>$`ð�jp¼œ*µE*寛ÒÚÚFAÁ5îñ.ø<« |lƆ-*ãh°sñ�EÃÃW±�§Àqø0s"Ðú þz&pÈ‘†ÿåwúqT¦W¹væÃº ëóKƒÉÊ/<�¬�Yð¼� caâ8ÞgOþ,W?§Ç,†nÈs3$Û+/³`‰ïà)nÎô=ÆA>Deïµ»Ñ_¿ø5ä‚ö ú�v:ˆ]•‹[�‹¼KŸƒíÝ¥]&ä‘«t �?Ö¥Vjr!�3ø—WØ^ð¤XðÉ^ð>×.Ì”ïòz× 3~• ½ÎöÒ ª�y‡ø$nÂ#’ˆFG³g€SØ�ðV×:OÍÎXžÆÿÁñ-Èjy«|:ä1k†^ê–&c8wñJ¨f:B¼*[÷†îÆóÚ{î›ð3ˆ¼y]‡�ÜÉM̺Pî¸ä�Ê/‰Ê» ¸›ì¤Ì0·0Çgðdu�(4‚o»WÊPeRøúø×ϘpfèŸê2ÇÕáÄ å·�$íP÷<ð‰ÏýY]­x ‰kgœX'sQv«x � î]]=Ñ¡ñìéÓìuÖ%È€‰2Í}8Eðv ?Œr×½ˆ9°WÎËq´™­ÆÔvЧÇaf€É}–wЇ<2Æç„¸xâ:Ü/¿t_üL_£�äø­4ÎzÕo|/ðX…Þ^{í|ij©«s{øB®â£P¸ìJ� +<&ðŒq}¥s—¨”QêyËèöS˜Lòò;÷"ä6ïõýâ¤íücŽ ¢î¼Fju—X·Å½.‰+0 ø…�(pØ}R‡´Û�‰­À�?â§…l èÞVê¿(fê¦&5”½E±ÅIdëñcÇàS­øQÚèdj÷aœÀÿ8R†ß#™X½ødÁaùðå>ÿhëˆâ´ôócÎÂ%tNÆobŸÜ/Öí~ '¦Åçúº€ï}êù>gq ûf©ºá-Ç£&XÐq}äZà´¾µ&|ªËèƒZ[³Ë¥S í6ôjñM™8ng�hcÏ,œ§ëQΛ`f?ÁÅÍÁwy¶²v[ì—~®e‚Ó…$¿è�õ¸˜ò-u™èð*Lõ³RIZB‘ÇI$ÓÄ`–�@ÉSbÿ�5 § éY|!êP‘åÙä·áE3ØšâMt1£«d±–eøRaÞjÚÞß� „lBß·PR>È+ѧÊÐÉ3�8dò/K~AßÅïYÂ�MÝ–¡?Q­ŽMSLVz*|¸)¯P?4fg<åàk6ÕÎîeðÕŽ/'f(öпèºÍít¤$nd—õbõÊúºz|â ´¦·Ûêí4@¡�Hc—&Ï>·zVþ'L”Ûâº](M$¶M·´vãÆ­À“�ü#-‰›âº:«t—¾»¾R|qs‹ê𩯭<}@]>T^Š}À¼…-·|dÝàCÀ^yU°Öö]}é——s6ø(ÅnE4“פ™| ë#�ô6‘~i»YÊ~¤Ey©Éž n{tyf5>ñoü”_JoÚeúDFñÙvüÆ•Ãú(Ôç��‰ùèÍyØŸðÐRŽY¢^^Ç¡®•¤:޵[ÝŠïg‰Jnb+³Ø¿$­Ré N,SÐPXH— ðEù¾dt“¨ÎÆ— Ì €K“ú´« ’kŽ ßÀE ¿‹ó2yyŒŸp°èУ·o�G2q•Áeî¹rízèvXY±J<;Û{†øƒ„¾¶T€ÜÀOSË‘ža‹°úºCÆÁ‚ןe ‰½[ÐMö®ó»HêA/±”+÷™ß{ù/à XG$�#«5…·ŠGdçpƒÏٚݛýÙ½±—&ŒûiäÆ�Á‚¿|Îñb^LÉßÜ¥²ëzswºŸ×t~Î!7�¸×Q½‰ËýL†ã°Ø|¡�ÎÜ=¶¯–âpîÙÍÛâwqØ1rß ƒã*J.�ÇCááyÏÛ¾c/I 1o�MVd‰>'cʈw÷Gá(4Ë �°Wž!cõõïH~þÓééÃÏÀ�©*§†F®¦—þúÅôËC~ìpjã÷®Þ6y\êL×Fn¤+œ¹²kÏ~‚è»È~¢ªÚH…·­¿ß;ö6I§ÒÀîõN*=ÛÃø9{꣘÷Ã�>™N—6¾÷^;ò-XCQzôð á��f¼‡9Ÿ\c¸•d�§Ÿ~>ýñÿ»¸ï…_ýðÜÀh¸œZ"x.ß0û®‡Àî›oI�>þtdû|õ«½Ô¥gŸýT !hù<ëý¿þÕ¿¤uxwÚI%º õìé�žvGàÙw~ö ÿ8ýÉŸüaºMðãо}! Nœ<‰pÜH{vî„Vj#�çìÙSé£ާ½»÷Å\&#Kíß�1šU¯˜QvæìiøH~Ú{ð-Ê;ÓÑ£o¥¥âÑôi‚úò3â¹ó—Ò‘W¾g›õî X»o F�üÑÑZ ®d­éÍ3@k oláífºz½T„/$—N“96¶€+Å9ûÈcO§‡y2¾W@ˆ;ⴸ仳#PJCÙÑ�åCÏ>«²-­Øn»Süöyß»†ráU³µ!:Nç¤tàe§ߣ­“XEÌÀˆÙ_a8“¤PUm‚Î]ÚÈx�‚U……syÁy×´…$i'2@�å AY&Ä\unØê¨2maÞþë^;Oáé}Î5yN˜T­ñçï&ûhbdwWÚ÷Àçáyþá%êá:Τ/õÞ2ðPþïÞ;†÷”b€ÊÛíœrñë™!‘ZŸ…—´¶µ¡;äǘ…æä=-¢Ÿ8”k:ˆÒ³Ï?º¦ÉbJ&'X…/ï×P²Å¸kpG|Ÿ �§g�ïu‚ãòq‘èÆQ‰¬ÃéåyŒŠbåÇ Á4“_ó©È«†�ÛYCùëžØ×ÞõèC¼/ èúî˜÷&ülo¨q§!Án`“釒 p §³ç/†‘g°U]¥‚w ]JÌ]ž¹µ¾.l•\%»Ž„öŽV:%u†“ÿ*ç­¢‘O"z‚ë8Ê×ë#>²�E:mÆqrŸã½4yˆ{Rð $fàŠÝ¼ÊØ/ñ&œÅâxa¸×ç$Îå·AHÛšmõL`€–oÊí$÷Ä}wC2F¬Ù'Ú1.óÐaˆb“™¨b`PçŸò>lðB<]fÿ¬¨’cG;6Öt"˜º�\3¸o;qqΪ ƒ•‘éŽ�¿\óÇløeä÷"NŽ¢�Cìè5Ø|¬¼A6‚_:;M Ò>Ôbp¿üÎû Å’„§U,Ê5ƒõºµtÕËuMs^¦rÌG¾±6¾—oÈ3¤�jÂË�rß–h YŠþ^l¥ÏYÕ4¼ÕQµQun)Õ»VŠtÐ�TÆïâVTóÞeZø±S+ÕC4¾µ9tüâ̤¬ËµHSçÐHe²­ÈW ƒ×ÒŒ—¼BRF°…{æ™kœu¿<�.”%¥[ù.n¨—¹×Á2ËÞ®³‡à¢U*NÌuK&G�=õ9«óÝcù:—u~€`l8m ô™|âL’Èù¥þaRKÁÂ3ù!–X§m‹9'~šc[t Yñ NèÔ*D�t_=ÛR/BÏÈ"u¬Få-ï\Aw_‡FÖåã$Wð ü³nœŒmT¸à…ˆD*é M9pÃûÄiÚù.¼S×ö 5?@¯áývðY¾³ˆŸ£jÕ·¸v`¡3I�G\w?ŠIÐWß‘ÎMV]`= NÆTî°'âáô• ñNð•ïÊqꇽ6´/¾ÙV­Ÿ‘©ÁÁç{®½v¹ÉE&¹¾ûÎÑ '€Ý‚‘Eè‰vAééïIÏ=ó<‚.x"gN—²vöVY•¼¬3d< óRÉ]÷þœûì?俎ïN l_+Oñ³»3øù¶¿kc‘ï›EѮԡ§®‹ë;pSû)`'´ønƒ£’¤ùàÝ$~˜ÄÛL·ÆH2Á¦Hו &ÝÉÛÅs• ŸHÌâ_j”KÜèÆÄ;äïú¤+˜tXÇ$d4Ü¡œ.Çf°Uj)Õ^£t®“×ê;¨ÖNá>÷T^Áßì±¾±YœËœ7 Œ´í¨ÝP”›®Ûy(“¥�Hd<+%�ƒòÕN)Ê,õuÇgI!ß…cMàÏ©×iÛùGùæûœ¹|91ðS¾d,h¾b�Eyæ8X„!SäG2E‚šp“�…ÎâHÌ!’²˜ŸG®‰Ã:ÔåýùÀ"lbž/)•f|ÕÊs¸b¼Çñ,ŒÚîƒë 5�…³<@¾.¿ ]%dœ2˜0OSÁ÷Ñü]¾"�¤9ôfG]»6·lm'm¥­]ÆtFç| ‡¹Ø94Ûw §à)-øsÔ3å_ÂGùj ÞójMRPŽlöÙ%:f8¶6vFçÂ×=‚_³§òMžJ…ì�ö¢ü“Uû({O²8þOqÀïÔu½ E2”G¡ŠÏ£¼O_¶2ey#¾éÓÐ&w=^=ÔbÔǤgm•9ô0+ÆÈô,Ób˜7ϲ Þ�_ Óq´!„X´ù‰8,ÿò3÷‹ga1_»•W�àÁ|EMTÂ[_ƒÕ¿ÃÃt5AþhWo¬sLÏ¿òíoýÖQ"ü¤+4ä{Ä ù“É(Ú7ò%»!¨wœyàrÌ�™[×êNäü/Ù}ì°nÊâõ¸ƒ÷€;ÜïZ\§pöòo×,ÅGÏwßý\ºC£ Ú6åÇ@ŸþŠk¬ïõ×^Mÿä7‹bŽ>’}®óm¦7sœrØÚ*&ÓyeÒ) {¸NÁWƒÈù(ØLÙÂÏìJGFio™lŽÎH°�@«)×Òç¥ì°“£ô@þs…Ï`ã†/@˜1¦Oyôqÿ@ø‹µÁáÅ[ñ‰Šó× |»�ÊBý÷Ê ‹®¢Só¬ô‚©L ¿åXÜ«NY�®« kõôüº—H�€?•¡×‡2‘ÉD؈݇jÖ¦ü”6W (Òl•äÓ‚ÔÙT”Î^Â7 }…\„w˜Ô5>�ÏÞ6ôØ<óÓKt0ªOw5ã_og-åéÏÿê­ôâKo§$-,Ò¢ÞÄòíÛû�1GqMS~x z¨�JeÒ8�e¶’ðºc ‡ã¬ðÇ2?6&�× ÒëŸÈ|à<›(žcøoëwTR°�¶`'`ÌÁÇ-"€£“o©À^`OÜ—ÄóH‚¸=aõ³r”ýšK¤’¦2ù s v•tí)’l6ð—Rý^FÐÞ⪒2‹Ë´ñÍà+Š6à$À¹·E6Sd» _Æ©Óçðɼ•çÚ‰wHXWÖº^úaÜ‹°élÃÐ�g$uwë/ V@8×r\Ǥ3f–j+²_V0chð^ 6äð7å�ð”nlïoÒ¿:‹ò´ŠFí,;öfr…ùKì»òP9k @ß�’A™üSv!lÈ£Àm¾’}!‹ø‹;ýN[MI¢ÌËbpò4m:ø‰2šyòjnPžù[Åûâ¸-¾�ÇQ„Øâñ^ø/OÄ{Üïx‡ÄèϬS9(î3µ›_bnD•9‚¤æheº6¸¶—…/^¾Z¹ãü=VY¿ˆk�ŸH£E$;Û Ø¤ Mâ.)#.‹ßHž¢.;þß¾Åq Èmõ•††­ª©kâ^|$n´uõ¢‡gô øDíVºmÀg—ñ1蟲�£Up2§¸B^Á%£÷ü HŽEc|CÈ27L¡` ƒw~Á¶xfÉb¾Â$D�öö.„×V Q³,È,1'„ ù­æQYn6ˆŽt‡¶ÍµšÑö�*¶/ÞÃy¿ó´ýX"«`Ke}=”Ú¶´±@!mniOç—qú/Þ� ²£¤`DFëwm—|Üêá-éý㯤 Ç;%…lŒ­Fh­�1 ìqÂeÕ00Íb2ÇN´ÑiÅ&Z% ‚º…€`U¬ù#à \(rlBƒ¸™áuœ×C°…ƒè¹W£sì6A˜:‚*V¨xºë¶�²N%V˜Jÿ"¯?”-抟㧻ÝûY<÷e÷Šl<Á=ƒ»—{÷ß{Ý;¬)û,þþÛÿuïX?ÉÓ?ì~?‹YlÎ/7Î�¼÷‡¬ãÞµ*ø¼å‡=ïØ9…,÷a鞆#‚u rFB¾Ž¥b–»W¥ÄëÞŸsßËHr—Ä­byîÜy*ÉO¦Ï}î  bŒØ ;ÏóçñÇžJÿêÿþ?Ò·QbwEÀ¥¯¯�,¶fnÈOû=žví]N'O�H/]"{´+„²Gx„€s9ñRºpîRúì?úrƒ®Nž:éBig>“~ù— Á[žvï(˜òmØu /ÃwïØ�pXJ=´æÖ¸¹EÆ£†TOß@úõøéÏþô÷�4�=ózçÎìlhác›�‚ûÇŽÝIG^ýŠÄÊà­ôÅ/ý³Ô#ò {•m¿_øôgÓ[o�]n�åv)xFÕ×ܯAØ¿ý[åŒórš€é)¶ÔÔ§g©Pï')C7;~{ÿ`dêYý&ŸâÞ}‡v¥^ølÀY˜jðx½ûÞ÷¢úþÊ0�Y»ÏîF[ú«$ú,Ý!‰Á¶õ3éÕ#¯Dy<ÕÙjE£Sf�(bŸ™3FCh¨0ªD®'¿³%HÜoGN(Œ4€ ÈB�‰X\a(ˆCü®RéÚr—ïór|þÊ~áï0dyŸŸøÎL¹QŽTP¥wñZ…ÍŸW¨à¹wÜþú™c¨ÔéÀñg×”çU³?¾_ª|0›NžR‚£Î€²ÇZØea> }8^1~6çëºt”ª8×,sëqý�½? LÂLìi‚çv˜ð̪‹Î!¼¶¿×!b7 þHHxò92‹Å×bp«=º2˜±ë{Ãh�ïeNwëËx«ìž+n€N8 q¿ŽLy‡ðQ™2@íÎSÂ(pÛ2àaEÛ4Ž-ØÕ$äèü63PùçÜpF™x0`Ðâ­AÛ ®®Ï„â¨Ì6 Y"ò Båi´6‚f[ZÚ¢½­xæþ[5ï~Ûi£ˆgý\ãY§¸UÒEðkö`ï`! ª…Ê¥¡(áyi4hKØ»Þú¶ �Øãûñ/×eÇ•z8Ãõ S)îç{åœÎâç;p‰ÿÄårô£C>‰�#$j™ˆt~°-�"‘˜bÖ¹ Fê£Vrö"#åW×®šµÏù¼dã†a�îI›¬NY¬�±€3QCikc}´{÷Lt9áö¾íèŒ}~ÐZÑW­Ž’wø-Ä@2ðv‰ ª­Ê­Æ5Ø_„îkuê�!>Š=îèìL£8X‡Î\ƒqÏÞÝTö§jôbhò�"%V6··0ž9}!æ«Ó¦Ìì{¼%<¯+ZH¡�–T „?UºƴͰ0�ÿ.¡‡÷ ¤}d,ðÔ9“3x¬”²ÚIþ¸ˆ ÓQ ÃѶz&óŒq~„Ãoy ^UΣÞî.ÎÔ�#YéL`‰g¤©“L2ßËç/3ÿ%ΆnL:˜úh¹g›íh{m y™Z�ziÿ,  ×¼m†#LL`“—”˜ø«¼4)LgÎ… Ñ×oÃèjßî&(^Ï»=ŸðÎxÖÞm` ÇAEz÷ø÷¨´@nó’½ìóGÕ8†6RðGà¬Î'ŸÎÊ6Û!zN¦Æ£UÊ‘¤Äû=ËþÒ•aöŠDd‡òBr“LwmÍ8~™êÍ: ²'Ê0«£\»v¦òMƒxä<Å Iòõ�Lvº1|�Ö¬çUÔâSQB5‰Õ××®\ Y%ϲ}xqK øApJœ5‰fçÎìcî“2L¦¡Ru8{¼SÜc�ä5¼6ðQ×ùeøÌt| ¬�3Õ$‘¹ÎÇK8û.éÕ�=£;Ž�~ê¦:Y¬¾‘¶wwÁï¬HåÜgžSÏñ;aŽf8T6y3ë'C^ƒ Ï] ò‚Š#p#³ÍíØA'´}÷ te‹K�es LÀ³#ˆN�®ÞöððºH 48!¬åÙ&€„Ÿ�1¢3k6ð`ûêyöö:I àá*ÜLÂÑA>€„‘zB¼×=á»-ð£jæ<ʽ7Æ© ^ÂZú°mâ¶Ö&tI[fz±U;°¤àb�]6¦¦°WÆHænŒtºQê+:÷ÓÊI÷{kâ“t-o­ÂiX†3Tg¦v“ÁBe�I·p3æ ˜·üRŽö�c£“ ”1ÎEZÛb"°lí¤CX+¾è‹ß;z4hÃ}¨¤Â®ÇcKo7þ�§ ÄqóË` V’±v@Ê%ÿáçŸÃŲy{v‰»êþ÷ê?‡)Ý'¯Ì ¢�Á¤å©9ÚÍBÏ:”Õ ”ù–23¶rà ]œ̦nXí:ù`'•‰[p–ÚŽX¹(O�ÞL‘að8 Þƒ{ù൉0AC¼G@$ñ»èœAJ¼Õfö_eGæÛ€k3¨fÏጥŽXhC>*~É×¥Eù§¶Õ•KHæÉ:!zìƒI¯úüâLkž�«à×¢ff³ÒÚ—ž¬2I[ùhÒ‰Â/ì9Ö!J;'y§ósî<Äú òˆpðnèÔn7òqnà .>‡ã[Ïø»0 ›“g[G¸÷ÛÝ!†‰gXëÖ1~"×Éš Ú«ó™P¥/œßòrÆÒ±íê0·êÊùEb1ë²C^ŒÇû´äÛ.àçN„~ʼ¼ôø£A÷(:´ÄœÑ�˜CyÉZ´ñ– èú«ÅäqžõꞸ÷Ò <­–¹ s᧺ b-"…ÃÂ| ÷f¾ß¬ëNmø¸ïâ�ì~Ö§¬�ÊçÅQqXEÇtŒ„‰"Öaò—þXíìŒghË3Ò¼?d‰uè Öë³Î*êŽå*µÿù1`ÄcŸ…³—¸«_Z˜+'L‹î <'ï÷guDai dq�n4î%0T>(_•1êLê{ÅêHÈKÏõµ 5l[æ”KTW=úΪ?å™0`j¬%“‰î—ºˆŸ9gõƒžqñ]2ÿI†óâ´û#ÍäÖ‰ !ã� ß¹6qWÞ!}n@ôÝ<�½‡õ댤7î­AíØ1(R¦×_5ËWã~i$hm•Çê¶+/ôh Æ[ž‘•‹âˆ:ËÍÄxâG¸‘Ç1{¹û½×5©K3~c~ŽŸÍÕwC뱫îmæs�ÞŒ9¸OT•¿&ÔÕÕÛy0ÓoëêðS@›>øp_•Í^Ž!1øÅ¬â•Ž/}Z!/Ðo—Wβ׿U‡Ê‚ûò)Sa.øý\;B>âžSF¤caz°³Z_XFÒ¸•ÅU€@#É¿{ñ=îܵ;½ÿþû—·áOjˆ‚¡w�ßzÜ‚.œ'÷Ë=Ò€Üòìø„Þ%±Jóê¼ú–Õ…�A€Îøow(÷ÀäRÏ 7I ûœ0Žû™�YΙÁvUãhÛàÎ�g\»I�1ŸÖÖÖ˜wÐ7k4˜i·iט×xì>TŒëîê&X~»ñöìLÚ½³?5£Öà�6CGgj3TäÏ“ ®?Âu-#q�ÕÀËfÆÅÈ\’÷Ê{¢«“|1ÙG=Û$;:”wN(ØAEéø!_²ëó-Z±÷vT¥78¢”ÄÕÅ,¸^�î8:>“ž8Ø•=ÐA+u|ÓàOWoOª"_ ¢ýyj–âKtSü¯Îçæév ]…�šGB(û±D‚DUuæ¿S~ÛYQ;yÏ^�p¥;~÷Ñjz飒y‹G®]\L*§SlMÁ$¶Ûç×»L !NQÄuûöüË�xÉóŒU¦Î'gDH�J¢Æ8�2ÂÇifÊ?Þ½øÌÞþî£Ä /ßä2æžyeÿd?ÇOþf^TÈÄî»Wîû»Ÿp/¿ä ý€þæ*\^Ÿ|æÞßïý9nÞüË÷»GeÏž9�zz·GZÛýöòž:ðýóŸû�ÓkG^�)+=ýÔ3óޏÇy-°×îñîÝ{Ò‘#ßI/}ódz„ÀrT“)H]=½ÁÈ@o²Š[Óÿùõÿ•wíMÏ>÷… pr@™…8öèc‡9‹ýûéAùG~,Îݑɷ¶¶§'¾.5¥'Ÿ|:]¹|>ýå×þ,í?ðÎâý0J²ÀpbK›5T—«ÙjúÍ7Ž`ˆ.¤OÿÊg˜'äÌ×ö':�]ïž½qV�RÕþûé‰'Ÿ¡¥qÿÇ0@ã€NWRwO_ºH ø¯Feúáÿ”víÚÃúáФ[bðó ¨ßùÎËé;ßúΨ: z7xpæORI¬rþÚ‘WÕ-Óg~åרì XÔ2€«öä“°˜þôOþ(}éw/ ‹0°`š¹KzôR‘ûäuïÞßû³ÎH/?æ^ÎM¥Û=÷ßÑ8Îù¬¹¥üû›éÔq4Š2®ÃÅÙOþ�{>›«|áÞëã¹1ŽŽk…Q®¢JÀ†ÁÅ\tb¨‘w¨ìhœÙjYÃÓ1Âáƒ�‘maßÃ@>9:ñ�1îu½>“Í�2¨x‘K4Pa”Z9ãÑ Qà½Tv:plß“3ätþ+S–Î_Eõ ƇT!¬4ìíü Ì  _•×jª:¦t# ôsf¤Š„ß¹>^-¦\|g÷öHˆÒ² ß÷X [ð{Ÿü]�êü·µy„5¿7 W&© Ý¹çÛ‘9ê wõàìDv½ùÚ7‘}žUN'™Å|*Æôhƒñ&�|ÄqÅà¦rÔ£–ghåÕt4MàÉJø––¶0Øé ÌxÅŒ±-Z5ÒÙDYX|ñ|PÒ�¸kpÒ¶ï-­|�Ö|8?”YúxàrzkŒ¤Ô \§ò£„öcÂB€ßÅfåk_d¶„—N¼ÁÁè!§8i$hå]v4@­m¬£�!ì�&üò™òøM“.üÔg²c-šHøÃð…¿ä³�að¹8YÌŽvÝ'VŽÝ�#ƒ@”ü.º±¶ö™N#Àðø[GyíÜ®^£3g'"rm³*«4Ó\þ*ï1Ð:¸k­ï;™7AäQÌÏ”½!{8ßÞÀ€<Õ6gʾ¨D:Mi÷â€8~ôXðÕ<æ¿0› �ê°µºÁÖ‚·p‚°Àp™À†´A°Ðé·c`?Áó¿Ôo¬V�‰–áø�·NãŒ2�ÊY€V^ÊËÅ[ë÷¸QçÏ]Œ6ÁÐÂQ.ò®[ׇÙl+š�•YÞ×®\¢è¯“wî j¿‹½ÃÀÅF4Эœ“¥Ae´,[œ*p6‰‡ù$U°±çu‰#nԿ˱'»;h¿‰Îõö›ÇSC9tÜ[`¬\[ ë‰ Õµ:hµN$]¼·§¯'ޱ ]Á}Ñ償CÛüLÐÞt_”å"là+²=¦glŒ£jø¯»«“î �àñRº9"òÙw`MBé»Ç�Gu�²x÷®éÀÁýÀ}ÓéÇ\M–'°SÞÊ„�ãJGn†NX;ylÌ7¾þµÐ1äi­í­lº �B{Ái¦³e Y…çéÜÅa*h/È~˜˜¢“°Œ¬û<*ú=tˆ½¦ëº­ø¨3Ñ@‹07)Nž¢î%v¾ŽWï>[q{ûv~޵Àÿä)§¡Sc$§FÞÙî_8{‘Nø�eE ɾûÃ)Íš³N!$áXUáèA§˜ÁÄ�#7Óëß9‚ÞNRïµCP I‡C/G"‘¸VÌ�“ØõÙX™N]‰S+�ýW�·uc1sÝÿÀþÔ¼­ ~¡Þ‰ZSÏЙ+Ô©}éÂÅtì軌Ê<ÁIñÚ€†tŽÛйåQí½�Ï ±ßÎE— =Mm­é�â`$Ùˆû#¨(_ÇÞ°ë»ï¼Oç’nÀSrqéHW>Y]¡hySfÙ“dÆS¿šct‚ê7ÑÎØA"õß/ÍAÛÕÅ•i2±^±ÿ‘'HÌÚ{e ìpÇ3GÙ’Mþ““¨~ð³¿Ä[ÿˆÚ4Ò`ü{‰ó¼•YkøØ´³ì*VBbÕÒüžýW/PÒ· h"ÿó38H’NòÍàì û ì¸+ÛfÃä¸ß �ñ¦§Ž*�ÛŽw‰'òb?³â\»ßyÚ׫–êÅm´VÏŠ®U×â>S‹9z&±‰¾CÄ�f„‰°õ?éBÞsáw+´å÷®MŸµÇÎxøgGÜYô[¹§ú&jÑCoT§ÑßUC§Òzt-07t ¸CØFà’ŸçIº²¨Äd’âÜž²®Ñ*KPÝ.ï³³ˆx<“µy´Aø¡X«‰Vîy†_êYÐÁ¤–ø…•Éú× ¤([]‹rOxÈ„Ä×3©k{_úü>ŸÆéT:4t9 ß�ê¼íȹ[tðx>}ÎÃ9úÎH?2þäž°A&ªK_Î#ðËYr_0!`olÀ5 g·CÝW¼t².à²_pOà3sv¯Â_à{Yœû³äüg€^:,&üQo5°(¿óñG=óÜ™3t ݼHý8`Ì&ÀJüÑöʃß.¨—:0Úuƒplyˆó¶#®¿«sJÿ¡¿ÓŒ�B×âë vÁÆÄ÷±i"û]Ú–.ø-æbÐfƒ‚‚ö°Gòƒy(¼ð«Ÿ�1FÐAäñccà'©'¸6»©C9¿à›–Ô³véŠ×¦UøÍº`¿›(ÜÖÛM"Ùl¢(öÁ º=Õà^%Ý} oöo)µÕÜ]ãèååò4½X—fWšñÇyŒ>#n*²pØ›œm'°UxoOoOú{þÝï¾™ ‘·òúxyŠÙ¿¬+…ðÿIü™Uø…´Ÿõ7¨äÕ_()Ŧ¤«”¸¢^oGÖRÖmõ»r[f ~ÛÑ@nWRFÌäÖòTy°0ñC÷DXú}È_æìÞ/ë[�4´c¡þ”·&ßáK±›q¼ÔML »ï ø¨½Oì…q”èúIòå'›cëcr¨�EÐ\Ä.¹×}]!Ù¡Ÿ„É,Bô>aZ\J�½G¤ç¢`ÀåÏâ€2ÀwkFÒ$x#mëÇQŸSö¯³¦ dº4b"›ðq­ü=RÂxº© x$¶vµ2O?ë¢þ|>Ê!õɲ2õR¹{–èT&Œé¤ÃRY3ïe-ÚiúÐíŠkç´!º�"·-^1ÁSÝW¿5R&üŒKû „º¦<2ktz˜acå€�¬2„£N‰eÎiTÓi¥ SXiLZ­£®•mš‚ÀóK+Q$È´ÂÁ–_⣯SɾºŠ£„6 mfÄÎ<‘Q¦ªâ ³T%‚ØfF¦19q=hëõƆ¶´´¡±­QàAîV(´ âPÉWVJ¼»»7]¿6çk„Ú~D!ï9Î5´¼ZG¹]¡zÝì�‘WŸ@¸úmíéÃ÷PK1ØÛ9ã�ƒím¯n«ªT /ªŽnÚj³q ¯%Œ[ðVâ”RÐõõ†€P!P�“©™õ #Óñs�#/I„ð_?áÀ¿¡4Çn®tà3îÀ¾÷âs…‘Ïß½xDòŠq¥‚ì×OÜw÷‰ÿ¿ÿ$ÒI”Ë’üQë^*€w¯»pýAß½ãÇýäÞ9¦Âñܹs¡8xN¶J\ì÷=¸Ç2“Þž>2°n¢LéðÌœ]¾_åhmM¤¡¹5ÎÕ‚7¸>�Òûü§~%<ô §=8JïRiïϱ¬DU�{~¹‚cãÁ¨dØž­gޏo•¼¡¥­º,¥Jí6Ä áÂgPÛñ¶¢Q蘫!k͵Ûò¤««'ÞíüDE ¾QÞç¿^Šfç@,�€AÖú¾¦¦!Ž•p.ú—.]ß 6l—(xÒìU‚w´ÙÀÑ4H�]F*­È�50Ïâ>öÎÛ!ÌuÖgOfXéÇûÌ0ëííIÿößük”�žôÂg>Ïz.}ÆDÿ¦¿ô.º||§°ñ úægÿUéìrÿѨH†¿žrï&ÆÈý•©†¹ßþßÿúÎÜ{à Xýà}ÎÀiî>Ï]$:êùrsÞwy̽÷åî÷ßÏÊ�wïw~æÚ4@Ö!¬r?ä¡ÑbJ� 8¾ZB.¬ ìüÞKãÕ{”Ù¹¶& !x‡8® qî* î¯|S8û¼ŽDòƒÜŠƒæ7ßm Óù.ñû [1ø">øð,*ùuÐ�oc®:M”9�>ñL´�wïš[Û‘$•0¿�{Fµ¸íþ£# Ùm¥Ók·6D`Þ@awï”ïê�±>ôß—GuûÙ�“œ°Y¹Šã×N-Ìîµµ|woê¡{Ãå QõÖ´éZ Ø™ô& 4°k_tŒ¸xñbFŸ$8n”ï¨úGþ²ÀùCÒ½ð³"CGŒ{¶ðRARÇXCÞ ùQÈ1 ËïÐ%Ä å}!ç[e.w1“‹ò'ù—÷ø©øºD%rà3ªäü­ÈbçÛûõ’¬¤'�ãþ¸yŸLÖ­_ï§+x€2©g£,“ [jé‚–í3ÿ m$yó¥1¢1¡«‘§h+&Ò¹"ÌUpˆ:(tRAôœ­˜)Ëž«µ‚vav9mÛ¹ZlLy襰$èP'z c�`ìÎxŽesR-Ë.`0kÖ7ƒÚeÈ=¼9œ÷KõüÉn:*Õ�Ee¿N†8Ó‰õ™U.½uis(ö rÒ¡ú¦æaHz†$�zÞm…£Ïh¸ùnugñ«ÃáqÒw=|ªÎÇ>Dæã8ása§#\”YžWgö¾ç¦ß¼=–ÚZ8¯ž²ˆþ¯ÓFú #�å¡ãò“Î áåqÊóZ!/Áë_ýÛĤ“Ç?H]Ûé:€ÇY¤Ó ”?Õú—jÓ* ×ØC Ð Yu­S¤³«+ŒY�Á¶dÖ¥"ÔQ¦éYvþ«.î1R~/ïÒQìYÜê :pšÛÚÁ§¯“lÔ•ËÃd&£ßn2ï .,Ôsæ0òêë¨LƸ¾V°LáRâFò@ÖYGãÓ@wæ˜Ë=a<³·ÚZ&c„÷è;a${V½Î �ªsîÿÖ£ÓPžòCñâÖðˆÛ°R6ôõRq þi‹™ gÖ¶ü3dp7!IG•v—ŽiÏó“Ïz�ÆyÈEƵÃÉÀ@!8nÀáÄ :±‡:¢4¼µÝÞ|ã­àçV¤)|è�pº:ׂ|8xtRçÑQÃXÜ øCÖ+RynuÓ¡´�£Ìà°snmi$p8˜>xÿCh­6�\¼DB­Éòwâ—2¸ š\�s¯mK[lŒgñbеUcÃUcßyÛ0’3™X£‹UÆÒ¡íú²$2àÊý~·†±ÞØÔHû‰1ßA&—Ðòt$,:IUØ‘À¬�rœõæœûò%÷EÜÏGŽï?´8tA»òSÎ/êHðk°œ ðü¢¥=÷xÞ9 1Áyœyà#+Lݽ½éôɼÏq3¸i/ØÉN{D]N~j N¼—&<2ÀùCÈAó­Ñ!À3*Ýc�“�çyÉëœ×R9tÏ8ã·Æ£;˜ÎZy‚üQg± *2&@È—Å_ •e$^öÃ#š¢BE¸,áHvÜ‚JŽ-B‡›åŒÌco½ú®¸ç»Å^å” £èpqüó^ÝÔ V®B§·nÒÈßír ]¶÷l‡�”Oñ€ ,žÃÉÎL3½Foˆ%®oþô3ÿG^)®ûLðg>ƒû÷…™&/ 5¬Fs?­PË`–�KzÒ¡·Jp9£{lèRZ0@¦UfG&¤­eÀ.‚aI3€_>Ÿ· ¹4Çjp–¨t(Ò¥h ‰¼2žaÏ|èæÌA¹`µÕ §R\ŽÀ$Où^;µ)C K¡ö]?—G> 0àu|v몧¢ÒK§©ø,­J—ÒVÐüIb”g{Î¥Z!²Y綈ä;¡Ä#ì8~’>n|gð$æÆØü|Q~Á-Þ6Ï„¼C†I�Vƒúœ]_¸•u ×ÚŠé^~—Éqá9EÒš:”|;tNZ=ë�õ‚'³W·ÑÑ„oè“ÈÈ%µùœ‹>Ýx¼Å`™Á×lÒœ…TúVÅWu•Ѐ_dyQFY‹»ãXê�ƒâ&ûâüÕMÃÅ‹mŽhÃ,¬´ïô‘€òÏó»Å±=‘(ÀˆÊ1å�OkÛzTæt}õ½H"á;¿—²±Á~÷€"æ$¾eŸ‰Gî-øOX¹.�þ�ZÐÈ�<‚þ€©û«¼‹ ‚¸‚¬t„gwwO:álµ$Ú'Øl]èFú:´}žÀÀ1Ôͬ¤slCx*>/ÆQï®ÎRYrúâí{㼄‹x“Ó%Ôc Îe¾tnÆv-¬2ž5€2-ªkßx–q9Ý5†Ãß¡of‚„Qå—~1aW€¿Ë/”¹¾W¿€Ïö�×0_ù†puÿ„À]Î@Úv²K¹ëÚhaGùŽÀuqT½�çy‡7‰ƒÏ,S5kü Ã7†çe®]L¢V�×Ïh²®Çž?s"º±J«&zze{klÛ‰÷‰71žû¶ +áiò„:Žsdø°)õ;Ù)ÉÄN÷V~¥-#<ÜßÜ:XjðBß%�¸Ô þ§â9¾3àc"‚ß;®‰Ìƒ;S <æÌéSø…ìn -3 ÷^xøÞ  á¼è³Ø»àšÝ8-ÐÓÎ’º?¶’wm›Ër«Ë`´tTZî™Îð$â&ev䳊:|·v–f9þ·„Ø÷,MÝàýü4ß‚Èç­ž,oÓ¯mkú9㯘=ẳÉbîC¦_šP["O£ÐRÛB‘–û¼VW›Á~WXIªÏÉ¢–(æ$fe€´œw+c<öKù¹žÚ©B}1 FÀ)Û¯»‡vt“v¦ÐÛV¨rW¶2qÖ ïå]ê… ÌÓD»6*·éŽÎnlæ²t�ÄÕbÀ¹©mn!†æñ¨v|êÉÇH*nždÁ©v��£M‘W†œ¡Ü=Z_˜HõŸZ]H7FŸà(ޝ(oª*‰ ŒÍ¯¦­ÿòhª¯E?ÂGº²QÌјTx»+A÷¶×0w:ÕÓR›ᥕÂ4vír*'åéúzì’°¥®5-NÞ’õ$rÀ/llÎ ¯©æñBü‹C5¥ü-Mð:p =ÌÄã�Ò�]ÝlÙÞÖÞœ>õKϤãø%Æ)ªÇU¶ÚIÁ½«VK[a.¾Ù�jœNuêlvôïKØÿ-Ø )Ï@ôà%òŠ #à*Þšüg`Ùc«•÷³køW¹Ç1¸1`Xd|^#œÅ‹Ð‰üÄpý+ø{ò7}Bák‡‡[å‘xŸðسU ”±v30Ç{€_òí|lqíÈ�_<Ë#�«&;­â‡÷�¶ØwüyhGÞª_ÀÖñúÈ–ñÇÝ!qØN®QŸí2üL:GÄ]RäOÚ‘K؃¾W|7Ñí ^/$é@›8fz²;�ûãÝíÀ}e¥]pgàŸù%ÀÞl"¸…7ÂDŸ‹^²yø�ìÜn«[iÉ>= �„®Õ Ô[¤1=�Gs{þœjº}—= 8[Q¿ö,zúIgúþxo– r›-cvD•Ž"‚Þy°€C0{n ªˆ­ùÝ ˜bur‡VÊbCCST·Ýº~• 6„R¹‘Û6s• º8E€«¦½ !>Éâ2å@eB†±1›a¾#Cgie’�Áèf�UW±bàÜg€#sA˜"RE°¡©EgÞVž=ãëø¬«ãÌÂ4�³Í¬sÚºÔužN�MW¯Ý€X¨À˜{|žVËí +›O•ŠF»ÙT¹jòVÛH ų«nR�QÂøž‰vèáÃQh€.C¤vv@lQü ²2ëÍï²Oî~΄CY²ºEØ| 8•+‡ ~òÊ)w?wüø øÜýýïãO*‹ êÏ|éî_NùüÞ±w8[ólT¤©Š{Ò’Wî>Ö‘l€ðòå¬Õ»BÌ1¼Ç ¦{ë¹6ž÷hK˜cdžh¯¹3½~äÕô_ýç_IÿÓÿò/Úí‰=ŸB`»rùBzõ;)}î ÿI¦ À=«Øyœ?Ås’ê§}Ts¿”ž}–3˷јµ4W0� _�¶H¿ú™Ïâ4}%½úê·¨rê¥ÝÓîMüÞÀ¹x5�Äá¥:×××—®^âû=Q±"s2™ÄJ ƒìã£é¹ç?Å/RéÞFú@¼ÇóÍ (ª`Ú s�ö:.?üð=Î`  }w+燀un¾~~/ rðRn4D ¹àS¹yøRïÓ!u“îògysÚÂÀ ( Ä-Æ+¡5%çe‚Ù�<� ž&à}+uu÷E`Þyk uÑ’SGv[[;G<‚Ý6Ö�ýiŒ3²š M•,×j§½}ýR¼è�½J€•ªÎ¡°Èàx‰â’�Bãmàiõ‡ÿú_Ä^lœœÇA» çý`¬'ŒpŸ‡bÝîƒóßÀqdt8=–©†ÕRBþVRÙ[E0CiÉ(qzò^�¦hµƒ“NÅYØyžÏäâ8?ãd@Îzn¬ðÒàÑy¥Âh G£K¸Øú]Zµe‘Š ûëÛîïKLjÕ" Ì'hìç?ï{)þç?›OÌ ø"U) zK[Fç�4~g4 ÐÅá·¿üŸ¦gž9œÞ@}íþêI èxE *åqP þÉó¥Y�/â¢Aº&Q¶=FÀ$¦îžî¨.´•™­?=ž"*W˜Žª¨vÙ4Œ:Ñ[óè v“ �Þ:€åeò|ŠâïòfòèήŽ4¸wÇúTG›ã¨Žaò1ñßdUí/çW_טžzê‰ôÿæ÷SG–|ÚBå–•”Q:ªPú‹0~6ÐÍu,ÌÑr� ÝúzßöîÔGxÐkÕäzu˜Y­¬ÏqFšc©c˜ücàMÃÈN%P%P ,—צÐx¯p~8L uƒDÅtöŒÞ¼�·÷4¥(7ZÅlàv]eq:·5²tø2 5p$?gPŒai\ÞàK|®¡Žn!+T9�ÄÜ]5]¬¦±†oÞy_Éž’” _Ìd­Ž×!¿kÇ�¯"�À± ¢©‹Ç^ò^yˆ¸ §n¯î£Ó«X XἇinÁ¶ÙÊ%°Å';�ð0pÖÑN%û.�aP›dØÝÓ…£¾Å>Á yC67�ßž;¦}d¢GIâ³:…°Ô`Ö¦ G#üO~m›Ü;èGÅ$YÚº>ì.Æ^ÀмD5ÊÁJ : ÕHhvVêªÿ´uô/e*<Ÿ©èh-Ái�ÉN.8@ä­\:w”W�ßðÙp:!*c\äAq!Ž2ê§'F9Ãpk8U]ŸŽu[Dëø»}‹#5ØOí&Û¼·¶lC&•ó™Á�ï td¶£Ž6“"„¥{òœ¹¸þ2ÄÔ¡töE'AKs[zý¥ï¤pkr\9‰ÎÁÜ”Õâ—öƒÎÀΜá|qam¹Ï}ŸbÎ5Y ž­‚Û:­V)å;+ udÔQõ~×\Zê9oV‚Ó~Ì+¬#˜ß?@ û û?EÅ7í Ñ«Å�  vN×.sL�‰¯È:ÛDîØ9NÒuäµÇ_”b+Û #Luq(nHÿfúËË‚Xßül–�gòÂ…ÓP+pœÃù2;wœÎtAa¹Îþ¹Ÿòù×4 ¶™/u.iÔ�ï‰Y`]^Í»yo4U2�uø]�ðméä‰3T¿vmDbzâûlOŸ8Á-0v9hïn§ÃWcÀ �¢xcB�|ׇMéììJ#ÀæâåKᨹM;v«Z# É¸“$bø»‰$ê<o°ú² vôÖ-º÷œL7ô1°GmØ�v®ÓiYEbƒ]÷Jäi".„‰|6æÍtî‡ �Äôz?Lè>˜ƒtªso¹=E j?”ò[¾·!^B‹:_³à2¼ÉÄaðPÿZ1r«~.øÑÇéŽÕE¢Ûñ”Ç9¡ò`í]�“ c଼P�}Yž½i/Écsû¢C4Ï3Ym@Ë@¢º¸[6­|œ÷kCÀZx¾Éý£cà»rÜD“Ì‘o@¢¹ª. /Ò.ª­§¥2Ï¿ø³? 9íQ[Á«à ™sØÁ' å°±Äåà¿.C�L:W 2#¾Sû¼>ïçGxY&Ûçpºšh(OÉÙ˜NÕ¢2‘!„½Á+yN sw®Úf±nù/÷hû,[A‡¼’/ ¯€ɇ• :ѯ_»pñˆ-ƒæpö„®mlC¶(oy†}pÞþ¬ “KÄzXŸŸÊû­ðÏô%ì‰òZÙ Ñ~²ðG}J¸ø>‹ŽÄ—è0ÃÏ:£ß5ø³üK9£­i€ÙÄu÷U~뺅•ü§[¿‹¸²™‘´ñä)¹õŽ2f GL_ØêPfî[&{ ¯,éó1€œñ$e� Œá“a Y"}>8¤L±z�‘£óÒe:­ˆÏ¹`ªø¹¤N L”Ñ ³ã× n;gîU®ò^å²þd'éÞÆþ‚�kÀß5 ?ÿ¯æ»ÀÖî%Þ¬ÓÕ”!Ü>clß­ŽaÁ”í[õ)ÝÄ‘®®ñîÑ£è ú Ä«¬Ó�0¶•¸—z�²^[7ªä|7–À!ueqÁw…ïˆy¨Ÿ;ï8o7P&Ãóìs%üxäz `¢ï1Nà ¸¢¾çX±~éŠ1á7¶§50ÒÒ½=ŽÂ;qòdzïøqô–©ðe;ŽçšàçQ&yHwN&€á×¢¾¨mžñåút2�x¤ƒ'×(榌Ëd7°vÞâ*+—ekÚ Z;çì|Ôó혠Þd!^«Ñ�ä�>£>ä˜&Sèõ\Üà®Ýóèc�‡Ågõ :/qÚ#ËyÚõ#—0cK$èÉÚ¼�¿„»ë'x„ufsS¿Ïp)»'wŸóGÂ7âÏ®UÅ!þ‡‡1uа-ÐW6(Š’OmC׬%va2¨8pàɺœÅ|ôÍð‡ÖÕZ�m·]µô!ÃïäÀ¯Cùáüä5yy܃>¢ÏX<ðÊV?þ1{#ž­Ò%Å ”WIyMàqÈä„p³cÛÆ:]…¡Eß©Í0A‘•:f>¿³ÙÞ°Æb\cØ*Ó3�^;rãfßÊ+íþÏ£‡¡¾Êín¸¾ŠN„~VTÈÑ6ì/@Œ'_“†¶Ästº °e\Hþ¶j;{:°©7¹káã84tÂUtòZy”í誧›G²ki¦ssª$Áê ‰Ù“éÕc×ÒÑãWÒ¶özöÉïè^«E§_-Ôç8J›{�Ë:|øÉ¤í+6~¨-+²ã«U¿&-äS^³v-Õ”yñÀÅÎ1çÜ{öÉØ"‘×àYt[]#©ž}Xã]õÊ&>¿=~—,`ØE.}½*ÝÇ—CU€l[äâÒq¾zðƒî´p/«jIÄúî\ƶÔWœ16ƒ½äQG¸RèÜ7œÆfÆÓäBgª®ß¾"Ϙ¿°µ „Çf.hnikMO!;ß{ÿ#lÑkàœ4„÷Ø�NÖà¹éú"lgïšµEä“¥Ê#ö6º°ŸÚ„ú|ÈÄyµ~ù¬—²+dĦ,ËÉj�å‘”u ø`ÔQü£<Óž[c>úÖà‘úSõ™L¤NQú| ¶£ÿHN ¯tÞÊÈ(ô¡ x¸xmq´‰Cy$.:Žü1´3`�ƾe§1[Ï¢JyPG7 Úkè{“ØŸÆdKèzçû°Nù×#)ôœ¡›7økƒfü^Q¦³ñ.pX^bR±2&Ÿ±M¸Ñ¦ÖFÒg!-¡¼ªÇoùž{,ï–GÚ&ßim?ÿøì] ô?”q�IãVŃ À‘öڹɤg(.½tþLêìéOý;w§�¾ÿnðžæd'C“Δ󅞡SCû±ê­ TsŒ3IÛöÖD$~fŽ3Á`* ÈX™ u •J¸Á­u0P%Ð¥Šc•À€A„:ZÐÔšƒ™UpÞ€ Hc¯(Ÿ€{‘Uß´;ƒ8k¸ïúÕ‹ Š=ÿEær q'Î%r*çâÛJÇ Ä10™.¢²@ŠÂ«†àc…Ù#ã·cžeÙ¬–p …œƒ°­¹#Z¯{¦B-DŠJhñöÐ3hŠïóu̬µ­xkëÓà"!Eà€ï Œttõò«Ê{ûvbÈôãH³R—u0÷LØ25®{Î>ùñ«8HN>+r¸ùb?›+²ýâú»…àÅ‹Óé3§iSº3Î-Ÿ%ùãÔ©�ÒC¶_‡˜sW´DW‰€Èu�½ùæ+i{o?] vð;í(`’îþЕ¡x¤»«7 ½gª?òØcéßÿå‹Ð®AµÎtåÊe¼£éÙgžåâe*öü>þsÚÂ'Ò×þâOÒoüæ—â\u3ú ²Ÿ;w&9òíøYãóÔÉqô¶ÓÚý0ðÌcaýõ¯ÿYÀä‹_ür:zô­ô_þ×ÿEúßþåÿžâpèKy¬í'§uG»{… äy¯ûž»�ýD?ý¸9ý¸ïï}ÉßæÞ{Ÿûa?‹Éò¶ÜåÏ?l|Âq×=÷ª�Øþ(žÙä‡ MÿhL9ŽßÙ.ÉŸsŸña¼îcÊwb:I|ÖëÞ9¨,Êo3c�g}þã‡ù*Þ�º=Iç:–5ŠÄ«œrc;V¸¿{f•?Û–^ÅÞÏ1×Yàç¾Û–»ùÈÒ•Ž^*ËÏGÀBãÐ ¼mÍmÈhÏ•ÉÕÊafŠŠÙžõ´Ÿß=V…\¥¦Y[‚U±+@y5à¡<3A@ç³EF²ÖoâYcSsб] JY5&ÝDuc:OåjsŸ[ØlÙ#PP¾l©èp¶íu½¾_ž¥1oÀÎ6DÍž¼¸H3ÎìÈÎζ% Àp„ ð©X/Q�ªc+œhŒ¡ƒÄìeï)b¬‰;ÃÙÞ2ýûõ·T 8V³‡^.÷^4Šñ×@@øèˆ‘ŽÝoåUrq™VOòEÎ…Zøþdè­áátôõWéiƽ¼f°Zé$�š�ïå଴V×id#8Ä™F茵B4(ŠØ#×Ó}‚ Ü'´¹½¯?}åw~+×pžÚnÜJyiÂT#²�]û"“½·§—¿í,Ò1•…’pÆÆñÂ:˨„£S5%®P]šÏ„‘Uß¶ÕQà¼Ø 6:pã vïÛ•^yýÍ´� ¹É"¡gð¾bdž²Îêó«×FÀµ¶ÍáŒc©ÈW w�à…�çf0vÝ$àáK'FT¢l>£Ìhå ûNpk‚„ÓPSlyVªÀß„e´3æ_u‹ÀÚsâuÆY9S…“É@¼Ž,«×Ýe9 €îI‚/K°g�$§˜‹AslgyŒÁ éÜóuT"·æÏ]J8ËÀ¯Zl q'º_0žG¸ÉK 7µn#)Ç$'nëÐÈ%|ÀÿÚëžù'-d-| eÀpÀÃlÕ£ªpLÚÙî6Ι2ည1ñ% èwpÌp`óE†·T2¨È€¾ 8O]h-¾ � ñ½ò̬­.÷ƒ,áĆëbôÄ:øŠÎJÏ8Œ„~hÔ$ƒ7®EbèNÌÁjTÛuÚÙGžæ¾Š=Ÿìº`{}ÉÖ®? ‚Q¾ �|àî÷ʤ&hæD„¬L_»ãÙ¾¼CgÒµ«—Ó•‹+$õ?HrL;|ø&�ÁÔ�=ØH•­��œ:²t— í×} 5v¯Œæ¬èu:›ð£óV›¾$ÐÙO¯õ�‰3‘ Æž[±&¿-— ûž›Ã Î*‡ÂMêóࣲNºÏ‚ð$>× ¯—I)�ðHØê[Ú~vH, �ñáÇWP˜¡ë"Ü3øX‘Ÿ¡ä�‹[*áíÐ�rD9À@xÌü‚sð&ºÉ@C3è5YÉ–½Y0NÞ•ÌY®U ží†åý¶Aç]cè]Ò ¼Hç¬0ò^ßÕÝÀ+tu&HPÇ®+“¡�æ'ÊAe)#³fž…Ö•I:ˆcXà ì(„�Kn~~ûÆHzê¹çÒ—~÷+øvΧÿùøo8îÁ4 otÎÇWÈÞ­Ý"/yË¢}©P—W°^a.o1°óçs^Éܘ#8ôsnc/ hò¥bÕ¼K¹î±òD÷̤å�ëµ�p]}wøV”GÊz�þV:ž¼WTºÅÖç8™î ¼ùã<Ù/áíZ|·ðÓ¶SGOÝ^Í&οaÓò]¶,–¹dÎ~ŸÈO„«ÕÏêö« `5!Ë««{W}—6®Ç†é76Ùȹ*S<:ƒ�P�™s Ç;Nnç(¾û{6_hX‹«Ú¥8�sà¿úxjpÞ$ï.YU1pg_¬v³‹›�¥Ií ÄÇ®žîбìš�§¾Ã\¬ܵ{WøÃ?úðí¯G =pÍ%U¬^b�Â1t`º ó/ÜËl_³µ8ôs��Û‹À…MØ[MèäîAÜÇ>™àY.ðcøº{zÒ[o¼�îuOÛä�§ü¿“~çËÿœ¾�¾ò»_ŠŽV¬ÈÍ XÊDr8&¼ä^‘`ôÂÞóYÐÓP†…ÏRœäy‘ÿúG¼Û‰Ï¯â_à ߺ'â›òÚùæ’fÄ¿líŽ nŽoOؼ±J}r‚"=Šqžxòpà”÷º&ï‹‹1Ý{b}ΘF)ó71U»ÁŽvkÌ—å^›L¼ŒÜÃÀs8 º°0qQ¡SÆØè&è]Ò®8/¿•§Ä;y‡]zB*ÆÊZ»6ÿ|ðþ{i?é§)X²³¨•”[ki—^ë‡#á½e‰êáµU )ŽpêN° €¥ïtŸ~º‹…0?m9[ooPYž‡� PìúºI£$4àïÓÄ}Ü/“+ˆ¯è[Á7¼†l›&1c ýðæð,þëátîìy옭¡+¸„s#I�4â¬G/ZœOB5/&Ö£^Äñn؞ʞe‚ÒêêÂdjR»Ti¢¤�|t`ht|œà8üÞË®GÊy‚<�W@#Ð.ZÊ’U °Aæ±óìСNÉèÊ6kc�½·ˆ„KñQœ‡#™ÇÀ­AUýêŽ/¾yl’6Rƒò[|Þ@·õ3íÛ72gÿ5Ùlš¤�Œ¶² f¼ü²ó³|NœT2 ?‹ûدRÛ{õ1©úîá±…tùæɘ$æo-¤�{5 HI‹-/#Ieá&r„Jôñ!ð¦V\�&fÇÓÂ* �éFŽønbºGÝè͆9Ž‚5vt´¤C‡ö‡Í6:k¶Ëž:†¶t5ÝØŒ ÌS¨�77œZ*ï�ìIÇ�9lçDbEeËøiXK¢Kõô’pâ>� 9×<¯[¼ºb‚Ý6èüw“VïU„~´­i+t«“™�ÝÞ`˜ä,¯7�'È*pe•¶éï..•á#@Ö­Ø­N°ŸYO#cRS´¹Ÿ]:G¢*þŸšVô*ƒÏ&5£ÿC;®Å“‘zøzV1¼äJÄ3p…-ëÅ–šAw×WÒÙÙÞ‡7°²à ò+à*M™Ð�"ØC;eȃDûÐ Ô{ø^<òsùŒôiÉß„qó±ð!Ÿ¤JõñÂÄue©ö¤äáw‘FÔ´Ï–M áyõHùŒú›¾“ÛäCë$¬l`_¯g¾å¬<9KÚsDø;¸f=‡n¥¾aâ¤Á•ø“IÚ£3Ø�•v‚ÀGüÖ' €›!ž · =MžS&k/²¶Bd˜ð+Ʀ*äØ*! Gå&v8˜É�ðÊ-}K£¶ø/(зŽ@w=v§‡ŠVú…w`�ÙéI]Ãî%u$ìˆgÃW‡¢ó�GÍQ¬ªNiá¶¼$øŸ«TÖ!ì ˆDD±ÂË€’ˆ&á*òl× @Ìø‘pççhÏZІöÏ.`üÉt2€PiA¦Û<ÉuŒRg+bø§´lŠª¾æR“cL(«Ú�ù œJJæhMJ›ÞÔÒ�ÃôFlH1m’òh (‚È(|o5ÎO«p¬Tñù©‹g˜-N¶Æœ¥8Ø$…l5=eí©–ƒŠM �ú¢ZüÑN·©¹#­§:øÔ‡Ñz[~¯ˆÖ›¶ÜÍZ tÇñ !²‰8¶9tg…›÷|2xü±÷?pÅïbÄ/®¿3OT`­l~ù[/¥={ö¥}{÷ErŠ•QG޼øõ0çŽ+tÆÆFaö‹´ý è¶òô ŸO/óké�7ŽP�Ó†ƒ£eÄ î&åV>M’ô¢á%ó³Õºn…ø$NMÏ/êØÕ¯ùù�‘àq‘ ´ÌÞ,Çë#ÜíñJzèAÏ/éƒæÖqÀ>˜¾ùò7ÒÛo—3ÁŸ cÅ`¶�9«Ämqqø™_Šw¾ÿþ»t\h�*õ›”ÇŽ½�~ç‹¿GÏGÓOOwo:ÎgßÿXç5R…EWWO(·2¯Á�»p–Ÿ�`ü®]ûyOAƒ;|èáGSo-(붦öÖ®ôö[GL=Évì­­­qÏ…‹t¨€hT~ö…xßKýbúìç~� F=cMQ1ÿð]L> ¥®¥×^ùëôõ¿Š"Sœ8ôP$ÅØÞý½wßIÿüŸÿ·À–3»{Òoÿæ îÿiêïßÙÅÂUeøG]òƒŸöº÷ÙŸ~”Ÿöí÷Çs÷ÂàÞ¿E²ä ¹Üw?ê~•¯Ü÷9%÷Üü �FPä>¼û‹<=wÅx÷챿û½8[Gµ r1æ€2?SÜýÌïÄïw>^:š˜øý½ïñû93 �n’gj[Å£¯7Ê’ ê2†x=FâX&ðÉÜ·]’ò)*×ZÚ�C´(BþZáP…´,r:ì6!¯Ñ­­oNT®a[Èó e²çm�ïhÐj|¨ÓnIŲ�lé«8xm åùuŒçUŽá¤ÓÝ>òµ†Ð€s�„à2ËپŻ Ú˜— ƒ„ª1ÄuZý.RÅ.ß´Z¡‡Šçš©‡èè ‡zˆð23U.Þy?ÿåþÚu@cDÇ‹U€òÚÐðîç‰ßs“Ƥg«»uÈÙ€6VÁÃ%ôÊÆmíT�ï ¼åÆtäÛ߯à£5œIúv™\•eØ:¦8VÃÛ·÷SÑ× ^ã0ÄÐ['€­‚ú/÷EGŒp+|t:HQΖaTö÷öÒr¬4]Ýž¾ùW•æF9‰yÚ¾›N»÷îÅØª&Dò(xm•§Õ¨ôè̼½v‰÷jÄPœ ãðÀø‘m5¼oï!žKT·\GþüEš¸9޲®óV§ë÷5Æ[áûöLÛZ²³®5Ì!&RQ­"&hŽ©»ë4ÊŒ3¹Ðžs�ÞÕ±•5fÑG��µÜ-Ã&(&áf÷¾hQ¼Y~9}ýÏÿ‡§Ãã�Ɖ¹w÷ž4¸o57D@IDATg7†ik¥£“kc� Ê<­R‡Åã èûà=-â 1Y1•�¡·È rB¿ÂBç’í¤Ÿx²3í?HE†ñÑ£o§7�åÌyÚÇb§ô×ñØ) ÷½ûö¡oÕðƒ$ôöö`_Y9ÃB1­´­¦£‡£#Y˜gÕ_à*­ït6$u^ ÚvèPV’(K"k¼íÙÞ›~ûK_$€Ní¥‹œÅ|"hM|Ÿ©LÖ<øÜ“ÌwkêêꌀŽô¦Á¾Ä|u¤F x´Õ SŒl×(ç6€+ÔIjñ áyõ`Ïâü½ÿìŸqÙEdÙ\º6<œ–q¼é|O½?Ž3à|yƒ%ðÕ=è“:²<óu[ss&/˜§y»èˆS&é ½øH߯�ÀTÇE pX¡ Í{ ¬~þüt½+ S5344„|ÕÙÏ÷ŒºE ~ßÁÝ©“vç;û™‹‰ÔèåÌs �…¸&¥ûñ#ÚÒ2'q:èP$`.ÊheÄβÎîŽôO~ë÷¡ ¹8à§©>Öég%ª¹ØC�êúŽ¥wE«üí¢†º³4èåg¼Ÿ¹XÁg° Ÿü™µ•ÌacðñüGÈ~�Êh'ù4•&ÍTÙX�oÕ\붆Œ~äKü7 ÏÕ±ÖΜ÷íßU êàæ{+Îuˆ[•Jp¸XM¹lÇ`ìÜu„š<áÞÈÚBòãO?–ÎSáouâ,8c’¾m3=/Ö}MÀ+,)‰ä!«4]‡ÝÝ]$ʶ„î ƒÑ 9+­€fÑ™B<‚Xõ)~þIÚWž Eó,ó3¸1*0¼à " îÛ‰]Ðxnâ%-�k&:ê€g¸pž™4Ø3ÐG�™87W]ɽ©o('H´¼¡$NÆŠ™2œ‹Q q@^j'�%à"�|ðñ§ÓN’ƒò€�Uv5G×Yÿ¸"ú°”_\‡  ¼—/ز2]§­NSƒ7êëpG64KÞð‚—áT…ŸÂ?슡oëÌi»ÀñE’¬H,±¬\ºSg àG"‰•jÛÄ»9˜°�Sïæ^y¢NRqP¾&¯²=»]Çži®³QÚ±»ƒÅ&¶3_¤E§IH>”mL †zø]¹h—²Çà¬^ÀÏܯݾHE˜K¬25iÖ.8ÎË€�É�N\Y-Ô¡iD™á@ÎSŸc8Cÿ}§_És¥yÖlä;þQp¼°¹ä @Ø€Êûx&`Žþ¿ÒƱWY'¯´Ûƒz ºûŽ�鳟ÿõÐõÔ¯ú÷c{mA¡JPÀqÿnÊ_Ç�¤BǶ®Ã›ø=|¬,ǹißøõ¶Þò™ÃñHÀQù¥.è~GgÖ{Å\=¦2’‚ ß{Œ‡cÖ¢Ÿtu“0Jç2ƒ,#Ã×¢ê¹�$nm¸¦††ðÝC�e âäÃãÔ%Ô÷kÞ�…§g”Fbx`RZ8½…÷ÏgLT ��ÓýgÖñvßÄuy¢�5ê>Ü 8ÒHÛÜvð©,l¦›##i ~ïÑ([šC—¾�ïJ^ë¹â:ä•=£ƒ “çåÝÑ} X[ÁÏ,æYà‹_cŸÄñÓ$vd“&•ß GÏÇgòˤse…Nv�ëÜŠœñ�I�À"ð ãœÛ[›žã8ÅgŸÿTzù¥o¤ÿñ¿ÿï°q­öWºf³Qïeì A¢À5í\` ¼˜°W˜œ^†ûêÍÿ{ïdçy&è}�sn 3ÐÝèF$A‚HŠs‡%r† Ö;£)WÍÚåWùÊårù®Zo­×»5»£]{4#i•s $Šb&(0D$€NhtÎ9úyÞ=3RI.�f5+�p$°»ÏùÏÿßû½9úë»Û 3p#Ʀ²ou,Ç©D¢=-� €9Ù6½Ò²s«{ÕÖÖšî¼ã6µúÓ}<˜~ïcO�»º¶wÝ}w:ñú«àM�0‚Gí¡Ì‡¸ �¬ÇÐ/Ô/9Oñ™•¹¼€Ÿ8+ „\cÁ¡“²où_ÝñÄ�U÷È7²8gdzüŽûâ×ÀCiyC)ü�ìAÂcâZG/)w –ØÉ(¿\žAL�ÏÕ9¥ƒœMt ð¥ÏgS_|f»M›F L&-ÁƒÅ–Ð[AùlÉå!Ü0l½à¡î~Çw‚ozfÒ+×l�ºÖÒ‰ —Ôû¤ñÄà�|Ñ–/¿×sùbêÚ³/óßâ£?z._J}ømë›Zƒ?¨ï,t'Ï��°R‡ ¾ n¨û¯jTroñTº–—ûŒ¿÷‹¯h3ñp‰,bÖ´‰�ÙÞMôBWçGú.‹åT�oª¤r[ª£÷ØÈp¹ÂZðo“yjY126‘ÆH_bÿ}[[³àÿ̰¡°ªá ¹ÅÄy}¯ø…·ã÷v¯Ñ^›äø�`SìXÚÆn‰¾ÃYAFhmxˆÐ— °“ì,—¿~B~â0/a/v"ÕfQ/ŸœGG¥¾:<çg»z»˜èäçÈ=ýk¶6®ê¦¹›Ä»8+;O‰[~ÎqÇž„¿÷Y�|OÙnR—6wïWWXU͸HtNÛ€‹×â”ô  ©}&/•¢l�o'o0TŸ†2”�âº(ŠáÚšlo\a*’ж�Àù*ÕÖ³#Ü;‡n…øûè ¹ÉÌúÑéœt²w˜€§]˜­àžÈa¢Í9ÄH mÔy|X¶0¿çž»2ý”ç„ìžÚbvK±’¿€Ñe‹´ô¯ÚìCoâ3â 3À>\UdR±>ÎN¾<1‡-¹J§0ö022H«~Ί¸Û"¶Áʪ‰¡´µ'Épzb82²±�Î ú—Vµ�ð…`ÜW¤¢êíil¼Då3gzúÝs‘˜ÔÒ@{õ%ìL’f©ŠV™øª|Ùà^ãÄ6+ ½UÞ“†§é°¼¿h6jÆ`³cX쮦ÿSøî¿a?q—i:AÍ ÃWb‹«Ä0èP… ®�m‚l�¼þú-†@0Eð^æuæìYœâ7ã´ï:Ÿ4¶Ž½=}ú³ŸŠÀ· LGxO¡ìkÇŽöôÔïþ~úÖ·¾–žÿÑÉ~z_?fV¶á¨ó>ÒÀ]wß´yòäÛáà•ÐFh }3Ê x‡c�ûit£Ð¼øÂsÌûí70žJw„P¡U¡Ûݵ;ýÕ_ý Yi¼ûúzÓG?öGaüž;{:œu�=öDdík_DáÞ…!&=ôÐc7Ào[°ªö®àßüÆWbÿ0*ýÎ7Ý|8ög0Α O|è£éå—ž£5æÛ±çW_{)F!ìÛs ½ùæñ˜ÍµŸàú,Ìø;ßú2•êw†=tuˆ$ƒ'C€éЉhýW¿ú¹ôê+/�<°�–+'PL¦€ÑC? Ž\xéÅçÓW¾ò¹->ÿùO§z<µwt¢pŒüï"s¯.}ö³�>ýé¿Lÿü�ÿ4”Àè:�Çñý£þG£ã—}ýCÎëý®×I�*?o¥áÐQ~* ×ÒñÖK9²õ¬øÉMTºn: ?@ë\miÙJ¬ `*&»Hh�� ´ìÛ(WÛÜì¿ñætéâE*ÎUM¸f¨±2:ªm\SWO ˆHr‰ªÐ2l’,á ’rL®9óîq‚SÇBÞªT˜Õ§ìÕéb°[%]CÑÌF«4té$sn»Š•ÙõëTð]E¸tj�~'k7uæäë<ûZPp åìš+˪5 Ö –3É,RÝÃÀ¾Y†îmyq‚•ÿ<ˆoA÷ï§JåÏÄÖªãœEǺ·Îúoe¿‰O+QïP®4Aæ•b ƒÿè¥ãcc¨^d™�Ž��…´äª! �Ÿ&1œOœµS!×I$y`0a˜ qep�le«Ciåd â�¨çNÒþ½‚ ”FÈ ®±-ð Ž:Ï×Ö�XQéƒä­J1¨£a`ë¸�þAZœ�Gr§x¯‚½å<‚=Ä~ÌÌ÷=��~: ä„q =‰ß#cCQÑ©‘%îk¤©#{½Á¤ „Á�Á†)ã¥7uv«;ÍTVÇÕ�©>aâ�´ª.™åèìbþ�Kâ«I´¡oséxÞ¡#£ŒÞeåÕÑáešD g#–S5THêfŽó¾¨vÇÁN]hYØ,�y¬SÐ=83x™�‘f^ǧ�*&<[~ ¡î9 Í-ƒ¹V~Ì1o¾¿g(åvPiH7jGÎs'˜iÒàIKÀb‘YjHî׌g“�róÈ€—'wו�ð0j(¯f5è;:ÏtDˆEEVïjDFjgŠí‚“};íÞ¼÷âÙ^[~˜\ :q= k[Âè„Ñ Uz«$ûÊ£l¨D‡‰-ÞbÆ÷·zÙ½.Ó�CÙaPXCÕ |-IS& ��N¦QœÊ…ûáhsØDÚI+ã$@UÅè�¸çòפpö&Aˆú&>ÛÆQ#ÛõÚÑ FYqÏÀDeŒøµÞXA7ƒSE<ÐíêÚ….XÃ|úäÐR:Ú¹ŒµáDngdÀ-‡�Dꆈ Æ7ÿ‰}òYaãÐ0  ó1˜ü4kݪïyäˆ4)’Çh>—‹ÕÖV…Æq½¹¯OÇ_9Í2" 0tÂÓ€îäÕV"÷FBƒ/¶¹ñÞ`€x¡“Æ6u9<ËYr±6pFǦwtsˆ�\ŸçäÐÑ©•rs´ï³eë�›ls°f_·½ï(úü‘�¯ŽW܇ݟk±‚\XGU km·'NòÈ�k,þĺ‚–à¼o‡‰Z^tùbOúæW¾šæiµ(ιyƒX‡êzºãþ{Ó®ÎvžE0 üÿ¼Qæ|ñƒmVýÙYÇ�p¦HÊoÉÊ.ñÑoE»^¾o…kÛŽ¦´­¡^·œÞ:ñUx̸„ðÜ“ð¯¤ÃÑ;n�Š5�šâ¡ÎcéÎN:- ®ø['ÿâ‚A8�„®Ÿ‹X‡ ûâ§<}ž .5HijiaÝÌ/íOï⤲ú`” ³Œwê Å�ƃ<·=ö¤ôk˜D¡Ž"mErÌÚ@�ÁCù²ïË/òÁÛòå¦}ºaÓ‰-6ŽMòJ8z¡âÀG“]:÷2¶j÷®°ÙÊá1VíKóî‰8hTÇE`À~Å �íÞ¥Þæ÷M,‚éçt ÂÇÀ–3z•³ž³ÏÌ’˜¸{Ž —8ÄWÁ })7ì?€/ä ŒŒCÏÀ†ó;ò4ø{œ5w‰Ä7ూ®k5Z,Ë�ñK8¸¹—«”ïûLYz¸¬½„çú�à·8þÕ«ù˜åfIÙ:ïýÜ=•—0ñNÜ ’¬bïâqÚ-?õà#aG}ò/þ]œµ|]4�‡°9KeºÁ÷v'p�? 1 JZæîÍ—kÍ7"� l"@Êw< ÷g M�g!ÉŸ…µû¾r…¹áöê�ÑMÍÍàýjâ½-™º«k7ã÷ëKÿ‹ý¯R[w×5ݘ5�Ÿvm0ø™ ÔK•ì‹……_€¿‚Ñ™M,㱬 ]‘óÉvàçÒ®�7Ñ Qƒ ØÂ< Ê`hÌçó•H¾?B¡‹þ‚·ñ±­1*Ñ&--­ÜcZ&™ìþÓë/?g*ÞÇYó@ƒ.Þ_8ÉôzLîA{Â`³8¬lu�ÒÿÏÖ}mÅêM!¯ØŠß—–…¯zŸÿ„�x øY.�ª¤YåtvøÉî�òžAaM’|ë¾M öxÒvýv:¾ð¾&oD’ðÐiâQè¯<3¾‹®à>Ü�¶‰íyy?ÏæÜå¶ÕïâÌøÜïÊ;y4´ˆ^î}…›¿£XâzñÒµûW¥oÈ.¤WLâGÕçò¾÷Ý‘¾óõ/p~‹T@cßqëà�÷×…“6†ÏYG§´‚ÔCõ[gèdeòŒ0øe^â¹³ºY(ò8-"«ˆÙ¸ÿ¼B» ;l-ÖSѰN…..’ ]TJw5žkKdù¦¶Ï4Uº.^ÒÊcOøž€C‰—�Ï<+þi‘AðkÛ!l˜º:A˜sNÂMiE ÁÞøï ñ&|“ü Úäø•žÕÉ´=lã¾NWª2t¦ l[{ýUÂÚÿ9ŽAyWN ²ØDzŽÁ³—Üõ¬äžŽI6TÃÛ‰"ÞàbJÔ!�…­¯µÝü̺~q× ‘XÁ9›ØNd* {.K"YdÁ‘ø�½6A‚lð,º5gkæÜ__¿Md1�u3Ÿ u©²o»õü,K´–6ô'hßèÿ(£s•‰«3©6 •çÓ}€8¦9cÐ(¬PEå l‡`î"¯Yë rs’äé¾´jgêØ½žJaàú¾Éµ5gé~¶­©|£e÷º6mÓÁ›zªrrÆ8[ªÒÛ:é 36Þνð�À›S?sÝI¾žÄ?„>^Ý–ŠËèMÐ&~ÉŠš†412�&‡Ï“p1ŸZ«hsÏè\ Øà´ƒÜÃw"ï`ŸSâ¶Óá[oI¯¾üzÐ_QQ>ìöÖ‚�ØÎ>®^½Êº8 pD^ç÷ƒ—@Cž�rØD uí@å•­ÎåÝ| <Î|ò?yBtáõ²zco,aCLÀ• &¢Gûrxš¶«|G>± ýÌ![W¡3ùqà#ƒÖáwÞ[³üGÊNZê;®A}Å„w}Å®7ô%üd5àA)#X ß—›ñ™{cOÅÅïÝüÙ\˜_Åâó?Ã×_pd‘úž:]&ƒ%Xuh [cÍÚèüæÙ‹ÐgrW9²ˆWÙ…´ŒbkLd�îE^2ƒmÎñE,º1p¿­gÃ2ÁõLW�þ½�)—¡kõ[“å§ãÄÎô¿Ø‰­¹¥[�>“œIB³ Æ ÓÄ¿…S¾ÂʪrΙ ÔÃ*ƒI©ØMS½V·­å¬(AI–©d‚.2-Af[0 à Z¥ÕR±½Àë Hëì±*|d7›C@M÷{5T¬Ø*®ÅÛV®‘ù.² «�C0ãT’ïZx¿€Š"�É•eÚ?°�LÁò Pº¨FÊG9;tô^æN‡� •@”À5*:ºö3kljI‡Ž£E^gjßµ/õð£ä ·#N¬({%lýñ“?]vF)?ùþõ¿®C@è0©Á¹ÙLÐ)Æ(˜*"àænÅí(±¯Ÿ8žÚw´GÅ´J¥ eö2Ñd{ºÿþ‡Ó÷žùvúþ÷¿*å¡C‹:üÍ€SÀj¤¾ðüsQÕÚÑÑŒ^æíK¥lŠàXU9.œMñÉCýæ¨2w=¾T¬ušvtt¥›©>û—>ƒñPœ~øq˜¦íž×BÈxTF�P­n÷Ó§NGÛæÎ]Ý¡|\¹ÒÊu{2  µmG$ìÙ³/=ùÔÇ‚c=f£8ìÞ} 檿ʬÛÇ?ðÀ£(#S¹Ì?+ î¾÷Áôì³ßMÏ=÷ƒ`èyú#¸®³ÒÖpÎE߀ùcð–o}ókéíwÞ^­éQhÛùT&(H¯÷ÞûYÃõé™g¾IÅúk4¼ùÐQZµß )«Äªl—Efñ‘£·¥¿úô§pä¶¥|ðÉ!8þx‚°¼þú§ ©EÅQ\Ù2J|oë÷Ÿ·ó¿ýܫխøé?�Reþᄂ· ËLÀÄuv¡Ð¨·ÜÁÿµU€ZZvï¦ÚéF2~G‚vÁýf¦k(Ú:^¼•·8»MNÃÊ‘-Å´+„ž5Ž”¿½—.2f¡çýh• ²8c:üÛ„¹R”Fç‘IJàd‘Ö=QÆ}çàG*_-;: $N¤ï}ç‹©Žöcî2œÅ<£]G“ípÜ» ˜”Ùùò#ƒðfßœQ Ô1";-_Øâ÷¿ ¸ÿÊ¿ÿô9þÄr2 þÄ[×ÿøùP×Ì2KÁ œÈÛëŽ�Óòí"pmb|$ŒX營#°g°¶cÂ`KT€¿Y‚ 9²r… ƒãF§r±§7îo÷% ~3§M¾œÆˆ•®t@ŠqlÈWÛc¡§ã‚Ò]’›¦qpèô²û‚Î̾{öâ{iå,stÑ9ýžŽç«ƒBtaü®s�Õ—ed/ç@?üø�Š"•|ñ’À0Ǩ@žYÕ#M舑o(— Ã×^z™Š­ü˜Åm+ªhÍŽbÏeAOl8tþ†³‰•›H`@Ò÷Vª˜Ô¦!gµ•í¨½ÎLx+Ñ¥Y�‹sÌK[Ç!lXçë›o¾�NŸ»F‘´nʳÒ~°ÚÔvêêì"®W§„ìÖX±¢M£/æý©ëïÎÂZ玜°³Mc+öÜ[^£S�£±½­9�C÷&À,ϰ½§†*ß70kk²pŠE0#H§šm\ÕǼWÆß Ä™Lq-¸éT7€ŽÝu-Yƒ$#øœUqSÌ?~íÇÀŠï¹.ÎlÆìv Ñ*ZÉû¾mpu›8#L4å»&?°üÇ|¦ã‹³QÏñ;þn•’Ž� Îwç… ÉY¥„F+ÃÑM•ÞÀøõªt9ª¬D[ÄŠ´2ž Ùí·*ã¬Ì’8[ø¹F§ë¶‹à�|8Þ쿊$ÂZª˜ç¨®2¸¢³K§_ÖvÖY“s$A�e3蟜ÙvŸ|ÚW8ð�•íæü}–?†‘ ®9ËulYß"°Ì‚%:›Ä*ÔLоz‘®e5$Z³™Òci8nI!ÀÓÏìÔ* t6i°›pRV6�1–ˆ³ðà3ËðVg“¸j×ÌrÔ„�Iâ¬8ê•îÝj³að²„õéD®€Žmçmû>gÙqÎÚÅÒ«-iÅ{ùI8‡¹^�ÜJÿU�êïQa\loªü‹–Ì$<8#Y™m�M^&œ¦gÓ46°ø«cS�¢-R‘´,— pÏàŒ20=•�W‰qàšÎ¾£¼Õõêß1>�ß£Ò |�wsy­ë¶ZP½‚ŽnÚ:Ùœ�˜Á�@8ܽ�Ñn¬sš+xËSÀJc;j™™ô¥ÃE'?Xß÷=»æH¿&ü¸ᡳØÏ¼‘ŽT;PèS˜·E=g;=Å93m«=æI Ñ¦èÞ×g®3|’=˜•Yy¶º´]²¼Š€;¾ éß çé)kÄå"Z‚˜`«o¢­¥ù’Uezå8wwu’L“%4ÌÁŸä‡Þ�Ä©ÍÍ̉¬›ÜjY“\–Á#gjJÓU8Åõ[ ^¡›Å¹ ‘,­é¡ç¨>d=¶i¬BW²‹OOÿ`ªª«'™¸^°LkQù‘¸ Á[»E¨÷”/®ÎÃgá¶”ž�3dÐVç©Á }TùŸ:‚¼žmÄÚuGpX(? Â*“tÒfÁçk{äýv1?UÙ©,�öu›Lèšä¡ÈÉ�Sð#ŸÁöA”<÷ÁƒY›¾ÈMîü˜€­æ?~�N9·EÕ¡zç|@Y«~æ˜ÀpT·ŽÂ\™pFêG¶Ö—�´ô|¸$Ö_fÿž—€tÝòHy~À†{ˇ=:}¥>È= ùì˜5dð»‘<�l }Ò} ÓLÖ2Ѱ&Æ®ÈSäÛ/ß_Äþ¶2V@H+,4‰Ñõƒ‹ÜG]RÙ¦ýÝHsWW7ì,p»èYBß®I\Ô¶pm¾â¼ÀŸAj®�§u±¶sœßs©êcÂ7–Î:ÕWøLX™ºEïž™‰çêÖÞ£çb_|fb€²PC›EÝx˜ŽK&øÝB‚CÊkqÁ©» +uµBüíñ&çc²­É8[ëñì½N›@økÏÆÏ%)_â@‹ëD/õhŒšØ‡ÏŸ#9Rñ]Þ÷~ÂÅgG˜{mèRê|dÕ Sèøß†®ï𹯕©«y¦Â)Óƒ¹Ž±ò(a#½Xµ `ã~~G\¾:x%õõôн :}…±“�àLKKk² ñÔ©·X+£·V À¢‡­Åó´Û¤kõÉÿ3îﺢxâà±/áø÷zqoG,ÍOÅ9XÑ­>Ò&•Áët3X"Žãè ìé"Bð|žà­>%;8ØYEþëÜíö824]‚¤¯&s=¿ôg«¯åË‚5ôo*™y|Ê%pfR¹T”‡ÑŽ>· cF2pöÌäùò?ÏÞqE,]¡•yiض+WÅ1>Q7Õ/¶¹‰,¦êŸÚ.Ú£&|ËkÔ³ÔG…™º°÷U×óÜMnS^©«Ê»=?TUÖ‹œÆ–ÈËq´©2‡yty³ÂÆNÅðè4Ã-×¾FR¸I¹vR(!9ݵh‹™˜…ª&Ðfºš$�e~Ž�{6˜u›Ã¦ÈC�f¿ËðÏ&º)YÄ66Fl^š–®i í^0‹.ÙÄØ:ùòmÕíèTJÂØv8ÚäþWI˜ßÑZ—:Ú›SOÏ|ù­Œ¤¸�bÔV`r­BžaA�ô ÿÄ8_þÒÕÔYÛk®… T2ꬡ5’íf§Fé È3à7)‡ÊðÆJPQÍ}÷¼³û`À²§Ý½¹¹µ¸à¿oæoÚÒCˋө³©(  ï(WkI"¯ªçsÎöêÀ¥èÖ»­y'÷Ü–N¾±Å„¹èeåØÑˆJ@žjÊÂÈ׺ T� ž“Ó�.Ÿ?GRËzjm è?u–Q;ÒvtoŸŸuÉ#þÏ[G'ijn¢ûÝ #¾þùSÃömÄN��ŽÍÛe¡ÛYÞãçò¬+Ãã�õuUü�NÄúMV@уǛl/ãå�ü—çiÿÀ[a[Þ»#°+JäÈDx�ú™²(ärÈ»w²nió”Ÿ+G¹.Šä|¶ÎËÛìÖ°ˆü Þ�Z|`â³ú¤gëH×C“ôà�â™öFø|äeÊ2ð\ü�¤d#š+Ï40.¿ÏùÒ2Ù$‰%7ŸØ놰Y‡´ˆ½Ä•«ÀÈ¿µw:<Ò"*gØ�É”{‡Nè¨ð(üàÙÊ:–Ê‚´moתÜùLº)-•ÆY:›üAû[õZ~nÒ —„|åë0^‚.æÛèB\³‹Îм'ŽM_Šä ô^F‹ˆG//ãÿ4ÁT¨tŠ„3f`¦heM#QƤJkîàpT ø^d©cTû”I= [Xˆ:-Ô*/.:ïìrž¬ ÌY«{Ü”Þ$²¿²4�:3;œ[¬ò¶½ "%;FctžV2*q Ž…Á�~†»ï „X]˜ …˜tœ´ï†Cl[]ÛâÌç„�f…UTû=üØ“©ïâ¹øìÐm÷„#>Ö²Z±.J(=@Î.ö寿®CàïñG…Ó ÐS'ßÁiR”ÚZ 4ñK¼ôåï�MÍ0§ÍÈbíî&Í{¾ØÞGåN‚Ý„ù�9s:u´w„S1®ãšLÂyŒóHCVá/Á75·Ó–– ,Ÿ|ç�Ô¹« fOk”~+ålͬCÑ—ÏRú’XÙ>>:Î|σÑ6Ýçù¬F™÷7H6B5»ý(€ÛÈÀÕ`X†�i”y/:¤>³¡±-æ7kˆ8EF]‰“ÈÀÂàà@da Ÿ·ßúAºï¾ƒ—è<µºþ$ôÓT§ßtèíM§“8Íu;?ZšÕ™p–Êø¦æÖXwsóœš5é�wOF‹vƒßVðºÇí´½•´»ºvÏSé4•ó*³ÛQJ æ{� þô �…Ú ,_xñ¥´wïþÐ|ðó öBìúë· É™b‚"pêï ƒLÄdßÿYß…ÜϤ=åT í¡¥M[‘äÓ‰aÒšïYç̨¦¦62MG©k‚w0:°�¨tçX3í*+UNüÿ&´;„⇣ŒFÉPQ9{ú-ÚÖ6Æ,tïaK4�ËÌ©€Â‚#MýÀ“2ÛÄ¿'-çÒŽ rŠÊvç¤oãÞudyš5Û°³#x‚ó÷äAÛËióÅ^®RI*O”ž40ÔC4¶ Ö2ǶF•Æ¢N a¡¯òÆ<ÏR‡ùU¾¼ûÏ?¥_å“;ï-¼•�kÍË´u*Àñ€+�r)½‰á/ÿýÿ�k¶Óaå ã¨ü )ì*I%*¿Î0Òégq�C+EvŠçÒ€3çç†#º=½u^‘QŽ 4¨H … fïêL2aÅn*d¤šÍ.¦¹†‚j•T[•ákåe´ ':©4HË™ÅUi‹]î«cUýW|7)FgÝ­ì”�þnÅhÏÊz½N™¦â¯’/4¢•5Y‡�3h×dÙob4àÏ*fÏZ­‰ÓÃ}•P:«l[¥ñb¥­N$ç K_QUE ><>¯€Àç�A¾ÌöfAï´çá<[:7ÀªzâìÔiR´ú²ÏÙ‡† I눶§Ò¬A¾ÏƒÃ°YÃaó¨0@u¯a4¹W[Ú›°«S ³ëµ‚[gpކ¶+à6:£Øü…ýǺàIè“$ÆÉ4’'tvà\àçØ¼ G÷1t £ÓyóáØã¶ÅBÉÃuæcä/®—ﱡ°Öù=—ïËouÌÉwÄ©«½=Y•:Ž]¸ 9oí�á®]‡^´àäz§Óص ÷#/ó âwp–‡óÖ Ž9 eGKèAÂ%vÀXx†ž/¾º¶Ñþ~‚³©— 2_‚ÜöÏÂIœ4( 1lEÖ®#–5i-�;&QxVê©V2X�VÏ•JçYªqËêÊY ]~›Ìl ÇÄÇÁ¾+é,mÝ=¢ öåþØatåѶB³F¸ì³U<ÂïV£Gq¦&t8¦Ã ·á™ÙOÏXçUuY^ên¡º‹}™¨íøáïµÂÀç©{nÀ/Þ}ýD`–* ƒKÜ?=É&èœ9Ðv.-­ÒËP 9ðGÇ–‰ÖêµÂ̽«OëX7Ã)ˆ³#ŸõëÐRÿóŒW7I¼aÝó¬ŸÿÁ .œïãÐR�ŽsÀß ºÉ :ØäA:óÑ.� çNpœ!ÊŠêHª–¦ôÃx6F¬¬7Pc’A8õcå×ÿóë ñCª•ÿONŒ.JÚðºÔ ÖסMåƒH þJïÒ3‡Î´Ë$™Kçz¸bE$ �ÏÚ­òwéOýßêÕ~W<–pŸ½—˜ÊOe�4Çô1È85¡“km‰êÜpùµAey’ãqtžäcݹð/ƒ‹ µÕáßSwRz_éT™+�ʳ­¬Â Z‰5>©Ld)¬Ù€§÷>îÉ £AËèZ,äqëFGù‚«W‡FÚªÖãÞê)^ã=Ø;{ò³¥GRHU'R¯à.¼oàUÿfðÊk<˜åñm [XÅ•Á/ýC‡î(Iœ#´µíêÞç°ˆNebï²�Ax©ÇxAëס®�溕Çò —˜9§u–óò™×ÎÇçxÌ¡¹n¤ž)ŽÈcòènQ„ü5ȳ í»O%oðCø¤¸å¹FÐR˜ S:Y«A‰^ôõ“1ÕK£S×8"(+Z :�g¹&e…mõåon¦ŒçLSÖÛiC¸ 7u&Áåï>[§¿:”ë¶#’þbïçgV*Úžtü¯&€oPf?Ð>3÷陹ý0Ÿ¯¦ïö\¸ää�ç G»0(GÄ-» SßWž(×£Ï3‰@Ü÷}'K(á×k¿¯]Ã%×e1™A;¿zW¹na®/Ïõ®r¾Ò§:¥Ýyºwï¦KÐUlèfFÝ�Ïà�;M°Ó¿&.û‡Î/�©­mÀFßžú¯ŽGW+Ÿß¢kã>=×83¿N0Áäƒ)èü[¡u²/ƒ%â`a!ÉÀ莎f¸,Ì]ƒ²Ôuˆ×œ p�fã^=ø Áû`þ!¿R¾+ÇLî‹¢0cÝü'` LåGž»ú£ëÖO1‡n ,6‘¯Ú®)ƒ`’Ôƒ}‰#¡;r dktÍÂ&ø𠼦¸@ýD>(ì]¯Ëô3“€­Œç/þfß¼0Æ<6®�¼Ö$;¹ZØ;~èAi³ðmqÀF“°Ïœz'u0*³‘ÀÝá#·‡i"±üVZS§®±GõYÞó3Æúå ðá(/Pžè‡v[: þý^¬OÛǶìË³à…ƒ‡êwE“£Hr_Aa‚’ËÌÑÎ/©A¡}8AâµIu1®Ô¹Æðý\¼ÔI¹žÍÜ<í³)à”ÿj» W_HœG¹â‘çsŸÒ<;ƒ £¡¯ÒË  6~±­Ÿ]Ž$L=ï 74é<Ÿ¼ºœÁý)’€'I®uDˆ|_\’Ø Ñs’®ý¶ç%z–ëÀÓN&y¾‘\æ°›#ñþz:Ÿçoù¬òʳRöÉû´ £P ^ Ï,]=“u»oeš8ï˜ÑRyY> ×À+år-¯bd•~Çßvd_Ú»§1 ŽL¤½p&Í!÷°'„Ý£Ç ÚÊ?G.±ÆÙíißn|nEi`˜ä쮵µyüíƒiµˆ@°�JÛ„Ý:ï+Ë â[qÞ3<”>ñ‘Ûi¼/]êOßþÎÓ?ø�š[tàš²\ÀB¡=xg·9;˜K/óœÄˆ;ð>¿É^"A›„´¢Š†´:ÝO[ìñ4:>›Êà¡„qÓ2:~~1d[w�0*z¥êm-ð6F§qø¥çžAO>™nØQ�Êá¥uµ¥ixÛ‚žNú®\AgÞžÆÑ§ž}æÛÄ-v„%ב_LΛdï^¹˜v`â²LkÓÃiŪyùÕt0›'VÒ;¸HÁ#s³™Ý>z•„馯€¿øPí\{ÚâÛ]¦¥µ…±";RïåÞ�Ãs$¢G»|ð6ºo,ƒM"<ÂddáûøãÇ¢SÏéw/¤3§/h iSîØÙÂyÔSåL7Bdëíè‡édh�d]]eúŸþÇ�§îŽ E.Ò‰÷Ga8Vf�óˆ$lñ([\ʉÄAqÌà4r-ø�6r¦_j›Ë{¶ü#úŽÄû­"&õ}:vö‘NMøÖ–�OðY~’ǘ¤²A,i}•ä<²GV˜k¯ÌÑ÷"ÍÏ—ˆ¡ ÛÒƒ�o[¦ O?ßê¦a¢ôoS��-˜…!ßå&£™ ãµ٢+wÈCX_Ež‘²†°ï±ÀE…Ž œó�E/T�2¹Yžá¥A»›£Í.O—ß»uå–þ9V´ÑåÁù:ͺ×é¥�, %V«jrrJÂñ(ƒ_Âñ.ƒ.,#û‰Ï¦§ÉD'mÁN2/Y Î [¡kd—Òÿß±‹³ k e¢¸x9 ‘�deíåð.Öy;:r`d2ÆÚm0!n*Yš§�&ÎÒ ƒ- —Ð>ÒÃDÖïokd¾9™Œ*Xxæî¹y«¬Š]g÷~ög‹÷º0îÍÏUˆ| Hÿ]]‡À/�P!v ÌW¯Ðv} *´­·¼Æ—Ä^[[ŸzúzÒË/?ô÷¾;îþ›k¼Va8NÅhãɱÒôÊK?Jí»bF±Ê‘?iiü~çäÛÁ ß~ëx{ë éJºnÛÑ  Xžš˜%Ó߇ӟušl"óô¥’¢±°ùð“Iï¼u"�8ñZT_Kÿ—Æìo¼žl¯^V^Šóì½tñây˜Ü*·ë Q²Z¡¿qÇ Á ìW0�.¾w>ÝUN•^ŸëìvשÐÞÑŽà!¨6À½*QRò£�†ŒÐª 'há ¯™a½½—C¸:‡íVæÈ Uaf[Ÿ€íð+ä[Ûvd!‹³}W¬É}è ÃÀ·�¤ÆŸU½á4Å–qºva?L`rhh¾S—>óéO¥§?òq2ÏneËsôy×_¿]ðÄU@TÓÕ/ñK¼V~ù粊Nœèà(o„Â+�›¼¦SÍ ¶J¼Šƒ¸?ORÚq*!ô½s´"òÎmÈëu�  ”“ªz38†uئxƒ€šU›98�}o ]¡µ�yzdèÍã,Ÿ'Èf0Le¤º–Ää°–í%3eM#záÿGšàS©ñ§ÿQ›ÙìïîW¥Rô¾:È 1pä�üó™Îe•Mq½wøU½~õ§ü«Zùoò} 逯¶*>IÐüü;'�/ô§ÕɹԼ÷ZNgí}Á+'®\é�öK•Ì*ª!0±sG<�*ïžÂ°¥5ߊêÌ hÄa§sn™²¹‰Š!¯ƒÄ*A³mÍt_$�Sù˜9hqS9¬îXJ0]ƒUÙ56–-íÞ$žhˆ¯3Š@¼eÜS(úfŸ›ùAFûsÛF,³¢8åzƒåuPü  wq< îç|]ùŒô¼AV¸ô/­ªûªÀÏ#‹5 0Î$ ÷àÿ }ÈãÖ7ý.Nénƒ5h0dsÂÑ¡1>ò¸Ï&r6Œ~îë^ à2»JçL¦#s?î©ÓU‡�Ngë:攟:|y­ë�À±+ñù|ocƒd7Ô‡pôø<ÿ¹Æø–ñ,�Yü­Ó6 8è¾¥Q•ϼ6ƒÓÜ2öï—ÙJ´ûŽÞË6h:;å{±WþãÙñYk×Àô ™/~g}òš°7®ñZŸ‡«CÙ nù•ÏÅ Ä.ÒXÅd‰5Êó˜ç–k°ûÁsÒ±Z>{(pá�SϪbÃöv:"…5F÷âÁ¿ãsÅùøÉ j0Ö=_7“«qÉ=ü\ýÇ3Ž¿yž{ט­Â] ¯Nî'Êe¬‹Ï­ªö\…�:•ûñœb\ï¹E›9¥£+Î8¹ÆúíÕá°Žq/qEÊ#–_N�³>œ9—²5*³4F}‰?ž®çQ,\›0ðS X¾ûÕ‰\ˆ6K8È$«pw-%ì×¹ƒK4Å{q/s¬fzšUš^çO�v÷jõ�D ü}˜sssqò‚a:¢m*Ÿ™££Q{QùdjuEúÓñËyãtÕˆFëM¹8¼VçWD€¾€ÏÖÁÓÙH ÇÑ…SÏJpÏÉ=zÄAËÓ®8:` ÍõÂB~cÀµùnw :Òà</„ùØÉ:G ;"E¼oÅ…‰1€³°B#ÚzÖì� õœèâv)rGEÌì÷̲ê&ÚʲŸÀŸÕ‘` âx<“{@qÝCàžÕ &‡.<äp=ç/Åìè@ª»Ói„„œ)Çïa’È<²„Cô@þ†/Žq�óã…ëžêˆÖ!%NÛZVþg;Yll Ð¥§Ü(J?zæ»iî¶Û™iòá·¿õ�të·ÓAì g nêÈÂ9D{Q“} óŒãÏëÿù5ƒ€x ór–àÈ,ŽWõ”5�…Š'pOT;Û Â\‚¥‘à�,4€g OPŽÈ3óùÜ. oWAt©YaÊ*ã¨L‡ðqà¶NÄÌ!Ÿéòƒ"dzè|G™à8Ĩ†’÷€Ç¾”$ÃïÀï2eµ¾8ÇQÕSI8 1ÏÎ0ÿ™‘V¨\%ùPÚ�¶¥•˜ÅŒ`|…ö­ØÞ®E^×ø�ÖõÂçXJ|nulÈ&øÅV¢Ÿ2 q9rŒŸ~O¸e/öo! vHkòvß ¹#üуJ oá(¿òšFÁG Ò8u ƒáq7¾£œÔ/yáÜ¥ô‡Ÿøï#!‚Î~åÈ'ÃKðìb<ó€†[/x—R,'økèGèy&ºˆ&V Ÿ¡ÃØ%úeÊKÝg$»±Ç8oÎѳå¢X‹:Xz­Áí¬JÎavá*{ÉäŠ2ÆÄ æŠ?pÿ$]Hßûö7h!lІSì4åi蜑p`a<7“yFx u qÔê°H’d확á•z©rXøšh˜C«gãÞ¼'mPá—éh ÄX¨°„žñ¡'ÙñvúÒ§ÿA‡m/¨:cÑÚšµuõø©F€ÿ.A/unáåäïÊqY;Ò³´êîÛ—kq¯¡Å|ày÷�Ùbo©Ó‹Z`ã~Õø‚FèÀâcëI7‰ÁÂŒ›o¾%Fs°éHT¨  ÃquõírSÅ”iÊ7o*Ü­‚ȵƨháPÓPI®Óø[ý[Þ’B­ðôpƒó >qmò…HFá³°Y8;ÏDøy†~æÞ¥ùšï{_í¯,ˆ‹¾ +‹ï’œ*�Ø»ÿãˆn`ÜË©èœÝÔøœÅòmƒøìKüå~êfvÉ¡{Ž|K=ɱ>W}Pžésùòµý¢?®}ÇgˆkðÛp¸ö KíåH ¨ÊO$Gò{^QÖÁ,¿lÎGÜØùc€±›­Í�ÐsUºB¢£tlrä<¶uTíó饪’Y×à™¶ø*cjòµ �…ŽÌ1iÚÙèž« VòÒ%Îßó4Ë.XAç†#�ŠÀ´£Q žÏ‘D•K ®”ÄÏ}+ñÊ€àmІ]AħYì ×"?®¾œ•¾ŽÎU` œß…�É·v&+`œa¿ÀYÏÛ¶æ‘üÁ:]›g案Ÿ[ü´�÷sHì--«_�=¬ Ã�§{C¦XÝ»žƒ®ÌX·w&ûSÏÐtZ˜ZHÝ»šÓéLhFÊc*ó—�CU-ȃFø{ �™Ž°VF7R �ªÏ§‘ jÁ›ÁÁixWM›Ã~bÍ5ز³kéOï@:v´; M¯¥oœ¦pl7çD[wx´>Ÿe÷4ת¯ß@ëÆô@j)»|ch\8PìS‹�€€ék0–Vît©YDÏ]A§¡2}AzçL·5T#ÿÖbÞ´É &×é[œ›*L“ùë©ÿò�1ÏS@K2òôsEè,©ž–âÓKéêÙ³QÔPJb¶ò¡¿ �ô3–·>—Ê5�òêÒöÖb’SÄ>¨æ.³�·’8 ‰~œy.3´«ªë9{Ûy/¦ÆjVË#í&¥ÏH?êúærúèSÇÒζZÊ£LEþ@IDATóÐõ` 8FäªO©»u´5FW€)|J¥Üë]leUߥ+é�{¦>vGªbîy{K5~ÕÉtüÄÖ,/„îåз6™¯\~¢åñ2ÜÓïš?W.Jgü Þe¾Ñ-æ„suð^åh|¦Îæ5òY|)è1ù$È�àfŒý�3åD´Ÿ{­£ŒÉ¾LÞ”¦ò ¾�Ñ˪þ ä‰'Êku‹Ã à]ÚQÞK¾ùô8È…v !j°JÝÜÒÆa`lkðR]nÆ”Aö:²a  »`7*.”3KUç'�Ž*q3R ˜;#½ŒgK¼Ãpè{ JÃ�ÈÜ|É(}EF=Aô<€&ÓaÆg[ŸÇE×ÿsÿHG*6Ò�xuìØ=ésŸûëô¹Ï&ý³?úDjïè€�3#ÃÙI¶&l ¸¬rñÒKÏ1ƒïF²� 7Z+C´}ý½éò¥ ©³½=]í¿ˆ0{�ÖaÒ#�>Ï×uþYM=�ÀéêîJ½tYxõ• Z7D@@…¶½½3ܧޥ*ûÈ­(¹q� Úíï;kUQö~©mÛyûíÇRG{GzžVBg¹ÿþnŠëF¯¼ú�~ôÜbžºA_]Ã̱Âõð-GÓ{ϧ=ÿƒtÏ=B»Y›S@—†w{ûδ}[mzõµ™cþùôèòÒ�…@Òq6úówÐ~þóì÷¿…p*¥�ÚѸŸpWøýøÇ¯’´ÐCp½‰@úU®ûNúý?ü〧™D¸½}=Ì”¼€�C’°?Oû)Œµ»ï¹¥¥0榟=s:½vüUxJn:vç1‚úWÒÿõ¯ÿeúŸÿ—ÿ-ZÓ›¥t�wüˆå7ø«H�´Õû¤0€�iâ›üߨ::TÖÌ–_ðA${Hw�&¥ i¤r:J4˜hC≠»=h$T�|²¸à•*6›X×Y]]S�B_­ŠuÔ‡‚=‡“žgŽ�á‡×9+f�ùWåð¬PSr†X×z:Åø�7ÎÒ èl$�rvȘ&AÆ—º„g\³à´%£÷ðO[ÈF $ ¤€tˆ# åxj’Vb¼å¾kÈ ÷úë¯Z§Š÷â"ÝSNŸŒD®É‘!2p;Óí÷Þžd´0 ŽÒ�Ac»³kw´^/ÎÁÏMüG¦Qi‹?8?ˆˆ!Œœ˜a&T qðQ½Q|Ÿ$áG¨Šõ|ïeq*ÄÑ[u2Y´®15‹“o•äSãiüw>ôFú"t �.­Ì�×ã±F�ù(Ü:ÀÆGúƒŽ¬Â^`æ FMY©•Â諬Iü^ ’É–p"µURV&x½:µ�-�ÎÊtuØþž ¤éâ4)áû$ÆDÐyfÇ�««TÇjK—r?žçl)”íp°¬C‹SŒe"åG<† ú´U“Ò mÞ q ÃxFToAg•¥$Ç�0g°qGÓ2°ÕU„±XŒ„ï2A¶HÂE�×ÈÐõ N?Åï¸Hº¥â˜µYm½D²žÁ¦|õr¨ýaœHÓê#9ð5ãé­~“Qx¾:6„µŽ—ÉQf ì,ö`»tŠð*¯]TF³#ƒw¶Ì#�ºŒã ‡ß¹;—ð_l)<‡ ò¹M�gÑbCB]&x.÷’çŠ/:®t’„#ËðšŽ6àžý\gžð0Ølo»¬9ƒÑ„'mœÌä'_]WâÜq¤ñýe«òø\Œi§ò`�MÉ=X·ÏÕn2083Gà žoàÕ5Ä�Êv©‘éµát㾫ØXÜ&^qÞ<ÓóŠùÛÜÏu™©õî÷¬–Å7ÁoáÁTÞ“FÄë­$ cõG½´|™½�_MÈŒe²Ï¡¡0Ðã2§¢:—öÖsœ�² ÖÄÏ5‚´5(ÊÉZ½å¨ÕIg6=g<…ŸòF¸êÀß\&ù…uˆo:¡Ë5&h‹æá|Ñõ î ÏW£}ƒ=oU6¹�|*(ü®N:¸'î»6–çW‚³Öv‰âcîŠÎl[„C»Àb« Þsäê�™ü;·²�mDpÌ3Fîk“3ŒD ñÞ+9káìB£¢Žké'þòr=®ßùs®ÕŠçIÇP€ë‘@ÎÅÏËë"Xâs\gG‰ïEÐ�û �ÄkØù:ú|Ì–]íO¯ÈÜ܃÷µ‚@Üñ¥#ÏÕ¹ï,çoåQå§Ã =D<ÐÉ,nÈÓƒN]A<½†ûèˆY]óþà:p·ƒ•{À‚ÏÖl¬6‚ÀRntÂÉàêŒò^ñ,õ«ýž+t�ËËœ=°-æ}iÆó˧¢ÉÓÉ‚Y@Ûçê£�ß–8>ÂE‰­[ á9Á›ÀDä»ÂÚöÿêd: ©ÒA$˜ÄT® *§À¤‘.*v [.Ây§žÄw¬–k úÅÖñ·9ì¡à¬ëOï)]8šDÞCŒ�ºŸ;SKc}Tìs¢¬.À?¯ÿç×àŽ|(K478£\†ÞQ2IF ^"Áø‚ÀÔï#£ï Z+‡&HLiÁ÷% è31/� $ ½ÂïB³Ò¶òÅ—4à¨ï'¯òËò*e�É&ZI­úìvÂ� K䉶yð5éÔNl |‹ëè�kèS!+àÆñô÷œOO<ýtºïþÑeæ’¸Ö½{O§óWÿ`&X§�£-žkg>å¦r›Ûó^Åþå±ybÈw>ôìù?¼É ¿¾"¾ÃÁSùþ"Q�*×Ï?ƒpúG%{gЫ§ª*ÇÔ”Óè©-M-8ç›™}ÍHMÑsü,ä™â…ß1�.O4ä‘+Cåõ:Ü•M±h~dº�:pãzƒ²[0—WkFýÁ=y½¸åÙ‹k~ÏgÊÓÕUM°Û“z’ûÉGç¼�º:»Ò6ƒk8­«)Ìš¡(Âvºê:®×ÖÖÅðTmJe‡ÁŸe‚3v̼¡_ð<׿˜v"šøåž/y·É|þé;!gØ“:wtb øLöð{e‰tŠŠ „e{ªÀçmg)‹·ìúè¸ %ëâd_ºé¦?£³aCìßõ8.$p dÒ7³uC—Æ_n`;èÑÏy¶x üÔ…„aº£X?kôÒ¨§ãµâŠŸ¹Oá±Ä°À%tä¬t$Òø¬ã�ÆÓî½ûÒO~$=ñÔG¦Êë¶;"ÿhÙ—øAàìSåò õ=Ÿ]@0Òy·â‚öQè™à©I\gà:m}í÷ X¯… å{ê3Ü2> ¼Î®ôj`‚ÆOmB_‘ Á'â§kˆ{ò<[Ö«§™¨°N‹`ù7ŒïL`«ôõõ@sùƒÎÓ.æLJiïl7Ðü­søeYt¬_\ö•õ!x›ÀàÏ­½ä€Ë^ã&" Î~ý\�4Î�ƒ÷ ¥1ñQІ‘d ¼Ân™.ƒ;BÏðüM*ÑŽ5ðÝA¹¿ï«CiÚÊà˜±q#‡àT¼€��+Ï£Žö¤v£�OÀž­;»òúoÁŒn݃l+Ä ©8_Ã+^_b´R<“>x€>Uýšê[v¥fg–Ó½cŠä õÌð¦HnðòœA¢KíÕM–˜º”.ŸZ"¶±�­JÝMY²úÏ®.ƒ'Î^MÕØ†“´³@v™HÐH—´Zƨ™t\^¼�¶·Õ¦™Eì:+Úë¶§9d�þÏ«=ç�¥“i;ã]+Ë Ô³¶1ºiÕÂ?Šà ³t[Ø^I@wq˜*‚â!³à7¸‰­<˜˜vèæé’{*h­ö/ â¨�B§×>m%9g_Ôëé�…Ov…dî â®ÓÓà+k�!üT޾³œQn¼U>^QMGC\»}çÏ¥i‚ëœꨄfs´¡—ú¯„üêFòÉ8'Ök4ïéï�—*£å•&ÖÃsñQ(Ç À›ð·@SyÜÃõlâ�±«›ŸÛ�4¤¤ÿf“ë$:Dò:÷ʣÃ�ÎìòåÙD’°ÏÓÆåÉ\:+�ó%“Uà‹ÅÅòÀÌ_â(÷ïß|=Fmo°&iKŸìŒâ}Δ6˜üBU¿ë_ázV�0¾ì÷µYÕÓÜ·�xt þÎCö擌âá,€`ÂHý(|#$x°®Íôc錛Ž;ÔíèèNø°Çˆ'™Ä#¯¶+c¾íò iÉBâ†0™»•a(gìÀ¬sz*:ƒt´8· Ÿ–)Å8ÔÜpaÉrdÛÉÈÆØ¨ŽŒÅ9ÚÞÀLdBõžs3£T¥7EkL!ñÕÔ“ Fk «Kkêš™ùÕŠ’1¡LÌA›xnÔ7c$Â| b)–hUÙ¶£ƒ6 ;©n…�"Y.%‚Ä ø÷ÖKáãËCA¶þÞúüúÏëøe!øÞÍÃÄÇÆMî(¥m{rizßw¥ùþï´?DEhį#¤'PÓ ¯Yxÿø?OŸùìÿ›ž{ö™ôøž ƒfÅèÒ{¸ÏŽÔÑÑ…�@¥�ù¿þ ­Õp¯öÀa[üÔs�ýûn€1­¦Ã‡oGì�Öç·ßq,hqëi7ïîÞÛÜÙ¾+?þ2­DN¥Ý{öÁœr#�|çÌ> ÃAÚRɰ¿ôÅOÇO3mߥÍÐ{ï½ÇlôßI=üþÈ̱ÕãŸÿù¿I_ýÊæ»�¥={÷§��>2¬FÓìß–¶îûK_üLúÄŸþwQ}/Iz�öG˜U~æô;(`ydxŸM/¿ô\T«;GýÌéwÓ7¾ñeŒ’C¡œlßÕÅ,ÜÑôâóÏF[ya¡¢qüø+Q/|Úwvãõô&Fû;o¿-‘LàMoüøx(V�t:’Ž¿þrúÎw¿J©³ª¬”ÿòW¾ÈÜ‘sé±÷ ÝwßCá—Oý§Oþûôgÿ∌{³¥ÿ†ßü²ÈóSß“ceœê§>¸þço-®É/å–²N…Y¾£ñ�Èn{÷߈óf>ÚáY©m0Ýä4ewÉð`ÑMÞéë¹Dö|5üg™Ÿ—qTÔ„PŠaT¬�Ä}‹˜Å¤Ç5ŠIŠ蹜:º÷¥Ûn¿3õ\¦u빓ð&Œ[Öµ•9¸³½3 ö±R �,i./g�[çWûœ9Z€éœ¶z«ˆ*ó9‚~*è:KÈôT)ôŸÊ•U9GÝkÞ&íÉ¿µ¨ñOnãâºÁÂ2•®Eåé±GO�ÜÿH(æÉQ…ˆ^ZŒÑIWâ´nöô¤÷.œÃðC7ÅÅXïüyøy pD}OBíØÕI»Åó‘Uë9OI§œrÔ«"³}[ãY²³šDGÝ�W�ʶ’²Ý¥Ê»Êx8¾4¤GŒ–Î+�MqMüÐAgË(éV£J‡¨ÙüÊ­ipÞ¬kÞÄ©ªÓ`“±$çÒ×¾ô­TPMP‡÷ÔÉu*—áØ]â>:çžzú)Œg .× ¥i8½`8¸•éo]<ª�1LÖ³=žŽ4”‘X›‰6‹ ³qÀ¢CÈS¤¿0*tX`Á¸V¹ÌTÓ˜ô:t”é´µU�ºu´ÌãütVjYç½­RÓY¨3™Móûz³�YIT`s½Æš2uãS~sñâ¥4F qá«Ó+ ´…‹[l¤]»w2“š‘+±ËÌa¥ü4øä³¼ŸNnù¤F¥çÎ@ÎE‡¨|S¾âºµqä-ò dy”pÕ¥ÓKdžÏ�ê*Ïøèø1ãYü’GšpáüäÀ>‹ Vµ°¿p,e÷´òÇ_; dŽe�å8¹x¦�=<çj2Ü�µ6J[DK¼çÞÄ1�u§—8— ×2•Zq6oµr«§ Hx�™ó¿~Û_´?e­¼F¾{+eÿ Yà¾/?':ßw¾¬Æ| {7 »L,¾Úwâ {Ñžv&1Šs1çÜ𜽷pÖá'MØ�d•¿5pu‚#ÈÍc>=ÏÅÍ0.ÇÁe;;÷0Ï=C ãPýÙ5{¦®U|WßV×» ýkXçã\_¦hW`°ˆýK‡Ò 9_k¼gpWc?Ú0ò\�˜ð9÷2™ÛÀ°m uœ‹çfžÛÒqƃ©ÎA«mqXl·‹·Q3ƒ^"—7�•š¨“ÉIñœdVÊÄü\àìï G‘¼¦� îª#Çèyg!ÜÃ� üø �Ì:ù Ê’´�£` Z7�ìÚ ê»EqS7KòŠ2^Ÿg&î…Ó/èPVDÔŒg /W 3ÔqùØýð×n\ÈwèL\¿–��iá”ä}Û Ú†]ç¤ïq<üÍù q_篩¶ww†�÷3 WÚs^eÌßLå8guÀ8øO$ˆ|CûC,²gý±§ýØLÞÇÎ ëàΖ¾n’�öŽ­m§l€\xZÍ-,r9{ƒ&Òö&IqXçÍ:ú>teõ‰~�b`ë™N�xepBY�#ö¯®ä~Mâ ™ݘt+[å5†=—¾qû€�üÖ ”÷÷\.÷\f6¡Æ<|m0ôg+æï|ó«tW9Grò¡¨Hß³{7-á· !0®¿~�! ®Œ,†VaŒðýW8ó‘AYP’ ô*�šdáñ8œ7h’ɼk< ~%Þer þåá´ŒàzT©£Uà“0ÙäƒÒªÁé¼h fö%�VΈãÂDºS.¹V÷§2ŸÙÍòp?·{�´ä¢í®¼‡ß#0 *·"ñ :vË•Œð9‚O`¸¿/…[:tô�£t¦"ë�C·ßqWj#Ø%�· îÇÿà�Ã7ùçÿö߯¹x�@Õ)-Ü6€HÆsà׬œ=I¤òPÁà[òvåŸA6×í½ýŽ—ùOÝ$|°ðºÌaNåÛ2XeðEyd×Ïî½{#@¥1§¸°ÿÑ®h·¿�;v¦^øbð±{OÔGh `ŸG"”ºŒÎeu’ÀÎÃ`à x s¯Ï®!H¥ŽÀšÃ)ïYð–~©žz�Àå¥ìS&¯ã —×ê:|ôÖ�³Î½ëþ'"!!’²ØëλÒ|í\º÷¾¢Ý¸{¿ùÐ-éÃOÿQúÂgÿ2tU÷o°XØ s“ç0d/ÂU™ÁþÄa•xàŠ¸ \•�î)û¿Á‡•Õ•cÆ"Pˆ¼ &pÃp°[ØÑµ{_t�Ì’Lh,H�}äÏÒ#�=Ž>žéžÚ­}}½$à+çž‘°ŽØ‘ÁýˆïÒ[$ܱ¶x v?î#sîgz™¿«‡ áÌoì ˆ¸zq%“ãêÀ~.].ñþV"f#8nɵtíÞ{=šlhl}jèê !ë­‚u&•xŒ®_8«ãóÖ+ ¥Ó,ÁRœ)¤í¶ñaor~ÈkÖ,r.s$òp3ñ&Î^3]Èdš W"ÁÔ÷ Vù}aå¿­@´úƒUöÓT'„ž¦|¥ªv[Ìö.ò»•µ�÷o>”¾þ­¯¤[n°Ë+V ßÏ­­B.'ÙÅ®TîKü²%·¾Ò \q¬šdpøŽ[Ó{ƒc$Âh§ ñ»|Ê‘¿°§ÚZ^ST·D‘L!44Èõù…ËiWÇl3d"úçÎ `€Ù‰“çyîrzâ±{Ò®®vªÄ7ÓÌð£tÔ5²sU”¿†ü)IÓœ&/~À¡TÄçø(ëÊrR]#ö5z®Ituõ-èîGA‰±)ã…ÚI&ø±‡ú¢Ô\_ž¦æÖÒàg–‡ŽŽlQ¯YÄžXߨ!èK—‚ÉaðÁ":E‘ÕÆ¼u}™£Wé Ó^C!nIºÐ3lKA7,ðhp˜™èM©—XäFu'°61I9¶°ñ¿kw7zÂ8cí¦‚6í¢e�gèÈùÈ4�±zÏ\N»ÚZÒ‰.o�>ÁæMe&gF9D:s¾�¢ Fªð}ǽ9ÒL¾SUUJüâßïIys“©²¶>­•ñ�s3ùPÛWýEyµåÛ�>}Á±â§:•‰ðªbºI»~ÉƒàŠ±%eººÐ2ÏÌ|Еòו—ú,ÌP³K€²N�ù«@A}AØÅQ«wúy4áØmÅŒ7JêvÒ&‰xì_¿ðò" c=ÊNuAeÄvµövÈìÇB|ÑëtµYÐ÷†\•’óê# ±ç”�úqä‰&Á­¬·ƒ…¼S((KÔ‹•7ú«¥Ky�£Áâ3ä?¨qæñ±`˸hÏd“¸šŒç•1ü,~Æ¡ø=¿šV ~‰B'€:UU>†åÜøL(á¡Xƒ,3´š’ý+�vá@o CÊŒL«ÓUÀfS„¹®XIÛi¾AvÀ& d��—F‚m-ÍŠr&Ý:+5Û;è÷?‘0ãØ —�B,!‹ªmç®N>8NÖÊþ7¦Æ–VÖ~Í9ÀC©P®×ßeZ[ï]ûO(Y Ñõ×uü—€À¾‰Q}ÑBqÿ¾ýP¬ïlFÐ÷¾{Nß}æÛ1k[#ÒÊË;ï¼'”A™ä ¶?ñ'ÿ"}êSÿ!µ’,rí Nœ0[{3u�ý"Úà`¦ ùKÿ9=úØÉxmƒ^ª¢Úº²mô|Ù1i™õéØ2ø®sn™D”e“3´­«zÕ°=ÜèÄdš&ã¾j�Ö•Þ<Ïœ-dh�Œ¥›o8H÷•[qD?Ä£CØ‘ä qi0ª´œn0ÓVéCßêó�t�[9«SCÃI8i•±çœ áÜâ©Vؘ1lf»s§V©$© Hú¾N¥0v0TpxyŽß—ï” ‡Ä^âþ5µõaÜ8Ï6j¸jÉâ5¥#‰gih±�êí3èH _ÿf:ýæéÔÂ<3Ïœ3g ¾ž{óÍ71–©“?¸ÿ´|¹Gï[„-Àä?fI;]ƒ’ÇÄs�…¬á¦=bõñ4 G¾Ü·0 T[~gmû½mæ¸T7 ‡:0r¯ÞÐs¨Žd%GáLÅó x(òO�P&2dg,\ø/ NƒlÞoœ6bxO¢òê�·ÞN¯¿y ~ÙÂ=pV€˜á8ãZ »£÷ÜËŒä6àÇB‚&_È? :‡ÓÊt6ʵ¶·Ìª[Å%Èž“ó+³ÌqS ¬¬Â8ÕI |½NDà\c7¾ƒ³ØI£{³D ðn­Îq?Æþ ž�£!`Ï=¥+u>ÏLx„³•µüð |ßó/µ';¢sùõ×^O=Ï>N\+< Š„úÖÖøßsð&œ=µ8½IÌ`oV€([\ƒã4°=·e }�ú&bIóvT+ÀYjÐÜn|9ðFûÓ*Q�ëœ:÷rÌrפxƒ0ùR¬CǘAyiÁßMÆÐ!c5²°òyÒ„:±rQýq�™v¯|ÁŽQ� ¾‹»[Nèq)N�: ®dkÏÆÏ£ƒëÑѾ» ›€ªep6 ‚ôa¿vEÐÁ!ÞÛRö¤ã& xdAÛ¨z/“s”íÚɬx/-áÍùpöž“pñ#“HÄ­¸ŒÿXUcõ[T/²·:)ø6h׽˟›ÙƒA9gƒG�€}hãËK<+ƒr&Ù:r�*”æ ÊÏ¢õ*wtž¥kµji�3µ’¡µ¶9Σ†±W&ÏxÞò �¡ðqÝ$$m»OØ‚?K< ûôc¢‚N»èè4|À£("æ<ßñSùеp–‡�ÜX€�"7"ØH×<“ØwUÕз8'>ŽÁ»ghÇmÕ�3£ bNÒZw”I„¶˜Ï*›èˆ2™=š*ë·!ÓŠÓ=÷?�ŽÞz;tHÐ <1a²OW¹gKÛÎÔç&—¸þúu†€4%”’÷Gð>+‘w(wåm¾¼²ÈxüÃö±ò¶2“7À7ï¥= ÍæVò7üK‹çp›–ÚYÐ-d-¸(’æÖ˜Mjçå*VàŽº‚φ䟈½à¹Ê¡%ø¥òÑÄx+oõÈ_"hXC"®úÔ6ü>ô»ï—#0têä[i=¤‚®’ç‘iÒ°•è¶:5ñO>íšlÏ+½Ê—X§kP(«L„RÏ‘ï¹-uçikÁgÎÚ� ŸISò7——D°„ûI¯ÒbÀÆëù\=ÌëäwòÊ1øì~ªé}ÿã©·çRŒQééëKgO¾Mg»Ëéö;�Å·�/ÀO]£ÞÄÖ¦CZ^ç}åíÂÍ7tX{†ü?Îνm%”qiìMY£L ÞËuÊ ?‹‘Ê8ÞsݾÔ3 Zú§ŽjÒL`úàSOÓ’–ÊOöibÒñ—__©-¡eFλÖoôÖ�_ øtïÞp—×EÂ4üÇ@¨:ça•ûQƺ¶¸7¼Ô}y6$¦qf¬S\äGœ�ÁyñÍëB—9L…$rv¿¯-qˉ*wuïæ t.{óÕôèï(γY^œ »Bš/`À,…SÓÙ˜“N=§+ƒC!Ks8§<’¯ÔÑAåxŸ"j”Åbd–6ð<¬Ü&£…d®u¬Â½œúsÀ™‰�G�×@¹ ú”OeTùZœâú<ÓR’øYã¶Lôç|6*Jeœl)p£„çnR�ºÊzå_Å$ƒÊÃôa-ÌNÿ¯€‰1/œŽ³àµRQ6ø9·‰³Ò~âMö€Ý m† å¹âŠÅe/(­„‹öy¸#_s4jþÎ�]dgõñ}�X2«1@uPÏ2+–8KEdŠ äš)êA)Œ‚AqPìf¤•m� a©? Üù!ÎG5xn«µR�±4·˜ª³®ú³Ž®Õh¾Aô)ê!2NêkQ̲ùm F=VÍÉÔ¶Ì3èD £´et5mÛ=p_"òß}mý½õóï~æï™ûéw¯ÿ}¿¶ðLCª¼oßÙŒQB• ZyõÄO‘©ýÒK/¾�{ï} X+D}9¢ £á‰'žfÆÝ×ÓÙsgQÒû{"ßû¨œ(vÞ·ÁÝoëkéþûN¬À6%r•+É:;»ÒóÏ?›^xᇴÍÙ™ŽÝu/|D(séàm„V÷í»1}ùËŸ…9UQýþdjki šR!Ñɤâ|øð­T„?Ÿž}öû(/¥´a¿G]+3ÞQ�& Fw¥û –÷ôÒBý�tñÒE‚Ýï[eÒç*X*X=òAè/§Ï|æÿ¡º~'ß{á†pÁ¯¦Õ´|C§é}÷=åV•œûØÇþYT›kÀ]|ïB8•5Ò¿÷½ï¤ÙãØøHúýßÿ“¨ôbv¹ ³Î0áãŽc4Úc„ΫºûîûI"h^ë\síèÿ8}á ŸIç/Ð*…N^øÐC�¡ˆì £Qå¡ 8=ríö_ ÁôÔï}”óÉ*Õ¶ðà—â¿ýÖOr³¿}ÿúo×!ð‹@@ú5H 9JEU®%9Åî/“%UZ¶7¶„ña%Ì$•$U$˜DëW®583�°‚lŸg¾©Ž0…w†PÌBE’¶B}—ÎñÂa(0³tº8zÇžx†Yßҧζ¥y x€ÊîâÂT8iOª>á:U|Ôä\o)­™T¢4ø 8DåÏ’Ç9‡f‰ª´0ž¹&Düç�ÌϾÆû^§¹Ÿ ›ÿZeÅ(Ùà‡rc cÆ9aʬEþ‰Õ:‡˜½6MÇ,íÝKѯ Áàˆ¶ ª1Å›è䩄ϪÉò.F§5ûU¥ÙJÍB 2õB�€1p‡„Nk'$;$-�u[\"N‚-ÜHCÅVàýt0ÚþÍ—zªÕªÜ>s å+À˜›K6t¥áí#1&x4rÄì* Ì-’mm«N¿ YDÛ,�" iÏ }=ÙLd�êfþFûUnjõ�0´M<6Î5úÔéDÛX²¯¹ {Ý„æÉ¾FgÑ™U@ÀUGz%óç4äå„}iAì|xþ&�U„á.¬¶ìIÏ*K� vˆÚ¢#ùÚ™ƒAS_Ú.ÈŠ–"=ÞV#`W˜E¿JrAb\ÔŸGu?ç©*K?àZŒE�.ò…LŸ°kEIœ÷&çVÛ½pPgN-Ûêø÷?á4çLf˜AæÞm¡­�[…~­'¹®€=äbüÚÖQøi åRY\À¬ó"`éyÈ{tÜk˜ù|³Ÿ×±ÂÊ &hÈÉçlh@v«Í"oK*¯u¼ã"ÞÐXÔçµê4êUêAù%û:‰OEÒÁ÷üç]„¹AJ ãŠmå–u1ÿ\ü6ya8:KYÚZ\'­çí±A¶QnÔ×ÛçÕ@µ‹Æ­-ç :˜±U¬ÏªCæx�zª¶…·�dp€— ?ŒeÏY¶z”Σè®ÀûåVíØñ@§�†· 'ùTŽäáhÑ¡à|ÞhI ­²”žÔq…‘ÙV• ×Qpù�TÄçþ­ìz½æ´Æ{÷ïM��|�³¡…èÈ.éÔR‡x?5ÀíJ�ù,`ƒM ¼”—Â× ´I ~ßÊýBö î«OêÄ´#‘²«”V®l(Îg+1A‡«Ћ\£žo²·i€ïè0/ òÎcWQéZ!scÏ:HLz3±Æ³¼tá"0è�™Þ¢BÐ’ÈNÆÐÚq÷ÞÝ$³ œñlÄoa) çû¯Mž³e¬0tƲ8›%ˆpf ¸„~ãùmO¼§÷›Gλ_ù Xh[{Š¿ò0Q:×p$ÊÕt ëÑ4a(Zs�U§"¶ð‰³‚~œ}º0‡£�ŸV»d\Âlç3ßù>£ zqê1ºåö™Vn΢³7߸›èžp¾»wƒ:qt0Ð׉»åGðÙâ°\‹|_§¬Ý7*¡£ P:$å³Ò�û•îrxOþ#¹Ûxæ¡+xr:Õà0AN¾"Ï6€g≠‰VJ õ§|ï¹4Í/’n£ºÌûr¿u*\èØ1Ћ„ö’‡ŽÜФ…JŸÅ°ã TÛ)‚ç&»X­6ç2ž“ñSù®ç|ýõë Pl’Nì‘Ñ”çe§íîMd¬WÈ·íX0�ƒ#¼ º¤šÜä«ê{ƒ>$«Côö‰Ïw?_w>]ºðf|IlÌK�#x6ó»™[{àŽ0¾!¾Ym(¾ªÓíïSL€Ùg‰�¬‚qä%Ò¥tå‘L”F/Àg”«ò?·KÝðÐðüHŒ'6 {îéAnÍ£SEÖÀ«ÈµQº[R¸â¼£:�@ŸsÇCïâ¹ê’â€toÐKDöï�ŸŒÁŸñc€“I°ß®Œ_Yw¬Ñï0Nè"¼ÊC¼G˜uŸ!vî­‰8Uð•áááØ+Ç4ÕÝÛÇø´¸ÏzÙ¯Ù™i ÆÓ:¬"—ó3¿Ÿq;�‚îÀ1ÆŒ9€sÒ)ãË‹œ€f ã9¿t1éAÝ.VÀž‰¿âY$.g{ª¾`§«‹�2�qŒ >ÞüäI`é‘Ft†Â�kò†0„ŸzT$u0¶,¬”¸ç^Ø•�¤>hN˜;U÷»Q_›Eý[\Öi§°~¾[B¸²JÜ\��ŠótQy\V…ÍÈs#ùH×ÂÆ=ô¹ÒÍôõ™HtßO°óÔAåŽ)®8þûé^óFº>5OwU’�›Ý¨¶wй€]!ÇmÇñJt­Nyœ1*³þ –⪠eú’רrצô™s´‡(œK DîÑݤ Û}/pœÈü"ú´¥\оóØ/}WÚ EE¡›ë[PNkk;Ž6– RÊ_á$ÿÙ!9H{ÁŠkƒÐDZ OÚЮDß6`/1¨iªvNÀ›uï�4`œLÙ*-D߯¿ÐD ó<Š68ö˜÷ÔÓ~„uí¦«“:+�#Hº3`yöÌ lÌ�4>> Åoa;êæ¨‘ž£iŠJôí�äXy�Á2—>p–+ªš_øÉe Ô.DlN˜wrœƒ|Q\ z�·ò c¦&ÚVæ¦SuÉRššÏq^zajo©HÝGSaÕab×£ÁÚû€\Ô.²íÿ"vŠ ÃeU]ÑAÍnÒUeòzZ•W�LºFÒ…¼$V™Ü½Clr–¶^ErOmYjkÄN'P_ˆÏ¢°„#I–€v öäá6ªûé °¾Y»žZ(œö…Àrœ¤¸CÄ+<ºº¦ª»¬$ýôù'9®’ªbTý*÷¾ÌMº[æè€yyt5 ¦ t2-mÑþ]›„±ôyˆßúEZšS-Uú«ËœÏ�%�šÌbrؾ#m‚-lÞñ9è`Ÿ‹ÙÀÇ£-aÑ@$¨ƒOÒ+›¸¬Î"-+—kô_aKMRÉ¿G¢Ð*ø³�iSyTŒ|سÖÕ¯À9‹¦´e�ß:–G¦h)m‹^€]ãñ Ž¡¡ t�ìÊë‘�U€ !oö8Þc K°‹ð—D9î5°µÂ¯¤i“Å”¿Å©¶ýéÃ*aOŠä{àªmæµWM•¯È³õ¡ÈÛ�Gú �5°—ÜðÝ¢#ÉJeì}1šèg/—5‰j/Gb‚¬‚ÿÓf¿V…�o˜,Î�O¬]ºÔúïræËR×3�Y¾më�M0Á§±©-:›g f<zb€ø™ úäø0ÓÊlµB³itòD–g¡:•K™’ÎôÒB'ˆ¢ÀZß@às”“cñtª¬k…yPQØ¡ÊáÈ´@Õ/åÕM©¹­ å¹€¡lRé&‚)h4;»z8Û¦“ÀXWd½é`’‰z¶Œ›_M¶ªU$2?´s-iÁQQÜ÷ºö ¡”¼ãFÇòúù÷ßqËÁ¯ø[A@#dATÃT‘Q!PàˆkÕï¹çÞô�o|…Ào[8$CÁà)â¡÷ICýýGi�AjñØË{"&;0p”vèƒ*ïË ž{É”²×,;iüÚµô)ªÊ­¾vž2ëŒÛh‡àíè8�5ÂÜPò{ûCé–qWBƒŽí@ù?ñCZÊßI:Vå ­$ËÌQ�¡1t”*÷ÿøŸþ„¤ƒ'Òÿ¯ÿM8ºåM-å®EEAÓ6Z/½òRºû®�…a+”×C��´³é�?w÷ø‰“Á¬¯\½”~J¶ê­ÔU¤ä*ïÍ‘åý¯ÿRã¼ÿ“îø‡ñÞKÚ•Ö÷/éK\ß#‰EZÕ±ë:³5~=ÚÀï,‘39y-’azû�Pu1ÝŽ‚ÜfŸæ‘©Šƒ|—¾›šÛÓÈÐ`Èsùž¯ÒˆÚF–õ]E Ó©´…CXÇŠIsL:S"ÓQe„×A¯qZ —U‚|*R¸.Pʬúr]ê"á¸F¿°ò«0WçB÷—øwzý/A³§|é=! ã(Úæòªò=>1’žúÙtù�×0´ª¨Zé£-ß¡�ccV áŠlcä`´;§Å ØT‚È¢¯×—i÷7�<«âýZ}(1ÀŽDŸ…n-•1L pzFã&ø§1¬!¬cR…[Ù§ªâ¾…\4ðm{Ï-Œ[w9Fr/«žòsÔ»ü2:G�­Ð‘��+Û[™Ó%‡So•ŠúÂpB {  sn½"2ü¥¾+ gÕºYu³gÂ)� Œy¿U�:ÄÌ‚×9®e?Ÿù*óÍÌÖa(}ªçÀÚĈ7!¦˜¬ð5Œ›²Ò5Æ‹†—ÁN�s:§L¸1xnæ®Ý lœ¢8pÂ�Q‚Îa�g' ¸ÒH“4ëfšutÀÛsVuh{Ö–° —ˆü#�eaÔaGð‰\Ã!RÄ>Úâ; ôs¾WWCà•ï,1wñ‚á¢û�™ú¶ZבZŽaf°ND&yY+ëÒ!l«e+Ù s—èŽ_MÀÂߣ?ÅbÏ«oÜ‹pl’`›1uσ³ZEGQ-Õ=pPðKW °ÂÆrß|ÎÛÕ*>Kç™{<…ñ.ö�U¾â°0“wú™•iâߦ-ßIR^¥úccƒæ²âœë1ËÍØl&8á@ň4ùiðòåtêæ›OÜ›h™‰AkKxŸãúl½m2Ú B#‘=æÀ¶fÚnaìƒDªq0ž)ßö¾å¥Úm$g®Ë�hÒ¦�®ÌAƒWx}5 —·U‚ÖÌE^ïú]ƒk]±¥s@¯D ã¤( ‹^úÖ– §!ßÏ‚î<‰½fÙ±®-pÛöu{¬ŽÂ3² Às#Ьޜýè¸TŽ9€‰ZáØã[Òlg¶‘MƼpº3^þžp“®¡YhÄÄi:¤ 0”@¥8N7ò²öŽ»TFé˜Ð™)Ù)@ü3øº±¡³™dÆÑñ° ïñ:ó°zS‡ 0ÉA‹Åy$·àx�LoÙ`]ŸÂ‘’G„“>eõyŒÇ3 :íóŠ¢|ûÀ@X({£âAž)�r¥$6ŽáÄ´óÕ:U;ÚîÂÁsÆ ‚doæÉ|K¸O~§#¸ˆsu"ÆÅÜO[Éù˜&Ih{H¯¥$îØ¢·g²x­Ÿ%Û{æ…“s‹±”Q‰ÃþÕas˜ œuêo�G””è´„g1?éÒc)L>jl¦€±çfçc�%>>É+ÌIÜÕ‘O G�´NÙc 2¸³'к:”AAϰ–Uëœ çóÒobµ‹´³Zc2ŽbðÈ$_ùnæÀ�^¸ìà÷ìB²Bò’É�¥Më9îKÝIÇ®‰ÈUÎ<«#qGúæl€ái"ÅÁõK ƒ¡û��¦¶CÙÞŽ 1çÌ¡êy²¶­Ì#ñ®¸d¼ƒ%*õÀ5]‡{qT6pÞò\ЉIx¹8�\ä—âi>|F=ÚJmXÊìˆØoIÁ]ÆÓi™É»x!Á%}n¶ðϼ‚‚[¾ 6àøß\>“çù]®ñªÈv.õØéѵâ‘G Í¬*<çø22j}¶oaæÆŒý§j;’NY»:Žq ïñ›àU9ÛàÂã?âýŒ¹_ûòФT[¹»O7ÑÅ6lˆÚ�ôéöŽèvã1`ÓØÔ77œ÷x®…KÞ'þ:�ô1`åi£¨#û¾“—ýÅD±•[²ùó·,Ôué·Ô6�^ôÛr[ì™›©ž®ÿ$ÕìsÄBXO ï�AŸåŒƒN¾ÇùÆâ-c £ÀuçÜ³Ä øšp�‡eºAF“L𻘗 ÔýݦèÁâgÛЋzcÍ(£vÖÒ­Ý�i+å–{´¯4¸›h|äí×&Ç˨€^A7sßê)äÐw¼@§åâC$2•g�¯\¸˜Z?ÒÈ&•Û =½Û`»rÎý7jŽ,ɼcŸ´«,J³ ×6éä3åèâ¤íÕõc{Ô‘2Ð$²°7€i)z©Ç¹‹&t++6ÐÓäC›Œ·L55¡¸H†-ãÙ€ÛŸd† »€° ?dr ÁúÁú¨ÆÍl×áò=m"ã“vúÈ/TnK—ÈİÝhÍ�LDlG’~òC汉.XCh„?®€GVø¯;íù’pS\ÚekøB¦®Ó‘ê4Áì†4=ô“4PT¯%Y”vâùiJyÊ|+é3½–Ÿ^~úºËž'ñ­žÏ±Ià§míÍÀWþ‘u©Ž=fUá[XM…£Qy¾‰�k’ïÊ&IØÓå{ÃinìbtZÊåW§Ãý'ROÿvçÅtî•I 6è¬W.¦†ªtØBªÎé¬G€2‡ý\N¥¼ûÓóøA°�6sEi~Ù£d˜G­²1‡¼&œí¾7+ì ’r¬]CYÙTpä0ì=D‡ll©âü%ZÒOÀoÁ‚ü¡íüø¥qÐûRu]cÚÆÙÙ² 7�\HŸQ/3áh <Ÿ]ÜNu ©»s&­lÕ¥]ào÷)é_ÿ [�_¤&WÁ©=bóÄ0+ÑÓ«H:Ÿ�£¥® �èŸKE—b÷åѽ`v~9m,ÃÇà)òL}M7ûUÐòÏ3è­tUÛâ,ùµùkQE‡@*ïYttÝ‚#Q�ÜgÎМ<#:ú@3®Ã¢#}[³å5%œ!^ŠœÔ,Ï–ÉÛLÞƒ?š¤i÷Bý·ÚèÚµêUü„O—$¼­mÖ€�F9/Î{lƺ�„#(Æ^©©nöqÁÛLÊ߯W¡ŒÎ¸<¼ÛK•O,­ƒ ²$¿§_LÝ5ì}ð]¿‘GðÉG!IéµñUÀÿv0’=fASÂ^j_™¤'ï?3âÇy™è¯O;»ˆ7ôÑmãë‚c‡ÿY^*/W·�§ªȧ]˜<¬ {MZÐ'¢L-œ%UÇQ´g™–¡n€b5x1›Ô{äç�-Z*R�f˺œæ­íÝ“w]}S[­ë ×i• ½|²^Žø"8GöÏOy3Ó¡ä•–æ‚© ÖÂD5¨uê4qSl¥@aê&ù]€(ÓõrCö�7Þ埨v™ö…§·ø�P˜�Š«ò^ï¼/Þ8øçïqIÜ‘9ôU©2°+Þ¾�Kଗxvôè1Ú¶ß�^?÷S2ë&£ÕÙ;‡÷;Þ×DÆ nÛ€ÈT0¼öÇTA^!ÕD+ZÕÓ3Sh�ŒÙ4"ÕÙ2AŠBCƒd aœˆûûteKsç¯âQSSÇïV¿¬Fp^*#•—híîY~×`‹IJMÍ U�ç'=[½±N%¹-è�ô‰ÖHqöNFº.$æßÓ{$Î+?|¸‡¬ã3Цª6ÙC|ßqlßnÀÍs»tÜJÏÂCev�—s3»ñèÑ›âu ¸ª;÷GÖ輜·ïuvŠ÷mqÎðp>e­o­ZŸc�:âlÿØÆ¶fó™ÂÖK!ÕJUÈÅ‹0ª–Òÿû'ÿOú_þ×:Zá <�ï\ø»B p|}¿K:y¿»öùÅÛcñ%é0“wÒEÖò§ZÃÞ O߯��£ˆ¤ÆqMð[Çÿ‰7²UžÉpò¥føÔ‰“gøÓ9WŽ×¹Vi� Ç,FפQ¤CIG“3—i8ÃAC×9Œêªà÷Ñ�à(+(öéÍØWOÅÕÊ4iqÅDº÷…ÄÛ8øåWâ·x©£sa}>=üð×R%™¼§O�Ü{ýµWÓ—ÿê¯IÚl%Óô:˜sðë²mi¿„i Ñ I ò Ž`ùÆÙÔ mçp,TA†Èç3G2|ôÿ5œ—1+«È8ÆPPàò;Êp 0ò‰¶¿(ö^;7ôjqf†ŠxkOƒ_·N+x@òøÛ 4ñ9EЛ4ãø¶ÂIm­�!�”·Q½À3”×¥µSi¯¼ü“Ô0Æ9f¼UZLÊgخ͠ŸŽ'+È ([Ék_ƒD:ôV—Ý�¥K™óMy |˜¯´åYv“$á)/­¾Šê>)ÄÀTg/Æ ­Q£c/·c¶5†‰ þ¢¸bÇ`­‘S^ 3Pce!!ô«äÕÈ}ÇJ{ד­Þ—É] $4øàM"ò>×° Žh2­ðº¼<ps…ß‚É�|æó„½?�&thÔŠÛêb9ðÔò[5sÜêVuu5éúäu‚r7l§€¨:�F'{D0WÜ‹ï¯àˆ¶Mz F»´SÃñ\¶šf �_a4²ÇרJðŒê™ÉIŽÃÒè5‘ÂŽ#Úm8ª1F=Ûyœ×c×»�¨ià 'Íê:9ÅaF̲ç4X¥»Eª¤+¶u( S“6M<Ñ1¯|²º¢ª¶�y0ÞãÞ æÇù‰7ðÙª]«ž›9—sÚíèìg.8 �Š/&‰TT•Òaˆ£ ŠFÂØ×†µº;:˜;V”ú\*¬XY\ÀEßõX«C ¾k�WU™à….L T]T‡¥gÔÚZ5X8`e³ÁWy‚�åáúvÚS/Íֺ̜ ŒÚ À]Ó±éùq:¶u€7`ŸôÒ…U+ÂRZ–Þ ÆÚ6vya•÷·"i̽ =ü‘w)WysRÎç‘H°ÌØ:Sä 5à·:ýôfõ¬ëÎá¸R?0¸­ÃP´ô&ÝÔE¥~–`â~ŠËòƒlVcl<Úã>Ô[ÖáÑ:Jl™.ˆ£-Ðr<;·Ë²;[8é¬<¶ÎÕ½t®:iM ‘7mïX¥n¢pV°"ðÛÖî8Aùn>x”·‡Nã÷\Cðq“&¸‘ùYÕ$½ÿ‹ßéàCG+÷Èî&)ëðroç©Ò1й ̯\æ¬VÚ‹â¬vNV(›¬PR®E›Þ<‘é\¿"PÿŽà)¸ÑÚ~<ÙN£Wƒ_ÉGmÝi׊|xm)x½»ˆ³ Õž?sæÖô±{ï YþâS?N8ËåÊiÚjnñJ>)m‰²Ò‘2Z}$â¤ã�ã%œÝZˆ׿Õ×ýñ{a+0Žú‡¿«?X¹¾•uáÈl‰wøÏÛÒ•<î:�7á ¥{¶ÄÔ`~ð.ÇóÙÒºß� Ï”®­Ä¶«ˆ4_@²9G¾<#­,TYo Ê›ô%"Õ¼2}ü¾Ï}/‚ؼësƒï0öüI�Ͻ†~A—é—â%{õw×su àd’�IPòáåw\�s éÍWýL¨ü3ô&ä˜2Ä9Çÿ1Åî \ÎA™ëá÷࣬_ǵA\ȧµ 4Â$›�¯òª>ò¾+÷ŠD#ÆÎY°)ûŽÁ?q(«¼&ËÁh •‡ù}+¹¼GØõ;7çn0*‚ƒü!ü\—Û„ À\Ô=uf›È œÜ“ì}»àÈŸ�×þå6ªsûžoï㔯úf¦iWo‘†þ.õå“°v/§2Ä5šPøï~0¦{›=×"ðEx³öx>ÁqIx [êÎÛà›¶AT¶£ûªÚ�'Ó©3ºq½ÂÛŸýu¸Ç×§×N ÖÏZÛÚh—^¸"`jþÎ�´îŸ @#-WÀ•W«Ýõ¤$ï«üs/ÅÓðežÂ×÷ Bĺœ?7ÀB÷BS‰3Ù­ÀXâs4¹%C>þe"z»{zy/[›8¨i×Yf0ñH'ur'.Ì3|ËèEÝdy(L…_ؼšd,nº.u7ÂÎ^Â9º‚Å΀‹Ì?Þsl`r:ÙfåêSê”Î_]Þ ‘ú€so¢‹–Ár?Û¿ÜoŸë3ܧìr¯�$n ¹+i»¸×ÂSüÎZê«÷ø,n•Øøžº3‹¹8¶k÷ÕN?þ”„Ìtzð�µ´u¼H:à5£ñTÜçÄYæ%½Dòø(6Ñf�ï—ØçîkM}3ú`%ÅÃÐÑTè©9:p¡É.ð{u<׬Æ¢Dv*ðš—÷½v¬SýÛ½Z]˜¢j˜ãÔ˜§üÍsÂõÕÀE¼ˆ£» ÁD°Òà®ëÒ«Žd°ÚN95DIÕ-çiQoÑÃÆû°4@æ>"Ä+íõ2túºF:O°ïž¾·‹½E 4Ó¹M�B~±(q³‚àºÈ¤íáÜÅí(q¯¬„D'>—¦ÊËjy&<“÷í²l%¬ú}ñné �y°„©æ_æë][œ]�ÇžFÂ18`BZ$Á¢KÚmÌu¬]£(U;ÚJwW±­¦.«$)xE¢>{TEàV=O\;Ê�±s‘¶—ø0GÂÄAùÒ¦ú›ÄcµyØšÚj耪nôø-ä•ë/Ä­Ÿó|êooL7�8’VÑ«z;±O×èÞ4N aíC—±Oå�u-é¥×/¥+oq*gœÛ™Ívñ5øFšxvð<ô}ƒúç²D»­Ô^¿d~ú=ŠKI<`Í_´›£sÖü ÝÂæRAåáôñ»î�]Ú¦Û$y{ló vÝ<þšc�{éÔÑVðÁ÷«œoÒ>ß®[Ë$Y­­œ,3Aži[Mm±‚ Åê,s7Ë8~¿®–ŽT+çÓU ¾¾ßd5] -²Ã¶#Ê-;½08²ržóÙWgSîÚ"ÇÔ‘¤u,­ÌÐwiš“Ы9"º8Ó9�ØN‰^èÜ¥…ŒEQ/Aäuô XÀ^~ÔÈñ(ÚÖ«$t™|P>¸v¦ÉÎ5ÆuèøRß±»ÐbG-ë-ÉKo]N¯¼1û“c#¥+»×Ü~t uç)Q§)mL©»+MNÑ=cŽ#®á=õM éÔ±nô¢í4ƒ¯äúAi¢Ÿ†GãÈ œK ÚÈâÈÆű_*«ðײ×êVáû§¬²üÒg o3Ƀäå_Ðø¶~6áç|•¾’0ªlƒnåùYW3èzŽn>àmø%ø¬D{•{7ˆKk“n�¸í= Á® EàK‘tÈOðzè\?‹rD¦åøòùªÚ!øðã…½hðöÇ.e™a�ö7û^‰-vå­7�/ú¹Lç†í1"SŸ‰ÈtŠs,'Œm\Põ"Ðmð©«»AŒ³¡šŒ �¤¾ž,!嘉¢bWÁ}Ùó,ˆ)+Ol™(Ðt¶+¼Ì07 î³6ró“™´PNøýç/âý.«$~þ›2ê)2Q4,lK¨²[ÄÙ^�<<óà:€ÀûA@ü“0Uxfp|¨´Wèõ}Eñ;.ï¯~žçgêç¿ðÙt”lÛ¾¾þPRÅ;/¿kP¨ ‡ÿ¸ùƒÇ¾—ú¸_<�Ì(˜Æ€’*IÐ_ õÈKœuÿ'¡? Ê— pvžssº»{R%Îô/}ñÏ"³ÑöX>K�å¼®A¾ë£‡¢ô²ÃtÊDÕkSaÿéO_IO<ùx"þàÞ?Â^Ji?õÁ~8Æñ…ìN3•«ÝðèÃéÅ—Ÿç»/Ó¶êx$Ĩ<8•9²3´{{ñÅgÓ÷¿ÿí’·wt…2jÀĬÑçž{Åi3ÝvöÖôØF�ÒÖýžûc DzªìÊ•·¨ÄA®¦jv<=õÔãQ….Ì\§J­÷šñ;::Õ¡ÁK0x«S äe1•»+WßJX—BÇj·±±Ñ¨Ìß¿ÜÛ±±±ôê«/%Ϲ¿t©0ýÕ_!ýÛû?㬠£J¼øû\èï½_ÍïJ�^âÎþïïµ’¿+Ž„a]8RŠÿÚÕ$Ðd•¬š$´�¢"¤™v€¶°úÐGî†ÖJéHÃ=Рç6k€¼yîµp^4q ‚{‹$¹¬c䙸c¶²l¼Ž�çÁÌÄX� t ¤3ÏGŸ›ÃÙ.ÿDÓa¸Šá`&s ¹Oc¢ÀlJ&ÛU.aXaa ¹¬Ý0Ðxuà½ÀyðÙ/)ÄWåãçå¡#Αæ¹e£÷ô„qbp§„J­²ò¬…ðʬ²Œ–¾:ß쨠±\üy;]Ÿ¹N°ƒD, ‡d‡Š´rSÝt–Vy3Ó3Xo&�Ê–_s8éÂ1mZhå Æ‚��öÎŽ´H {šä+�ÒAµ@…{tHÂÁ¢ã®¾Gÿ-â4ˆJ`Œ‰�õ8ØͺÖ``œË6Á£ ÚxcÅ…=ÅG¡{ëhÕ°Pv*o§Hœ{ø»ßI+ÈpiMy§sJ¹®óÄÊé" ñžÆ5�B�fìkDD‡ *Q­�Ö‘h6¾¤ä8V‰Iw:L ²¹“ãS<«‡ƩٸÈPÿ^yðeªçdåÑ^OÇ„|½2`j€RÇ¥ŽÓ<2‹­ 28·0ÇYR‹Šy–íñLõ½FÀ^gGG•ž¶8œã3Öf"�û‰;%]º:Š�6ßÙ…÷,IT˜ÛM §‹¼n�€î*|¦£Ó*zƒæ®U‰g´ ùR>ß)Á6Q §?º�6�Î5×g�YÃŽ�Þiż:Æg*ê ±B¶‚Ä Ûrg06»;B€¡ûxþ] ílåK·øŽF®lÏf¼>2–Úúz"xëZ¡óÊTñ&ΘÆÚ]:~^zá9Œ]czháÛ:1V€c^|ÞuÚ1ÀªÓi‡#kÇà ƸgGktj¯¼·£O#-étH[ᡌp0¯³ýC]•^¬ÄÑ™èÙõâ¤x�UÌ@ ilt"mA/œQa¨Óšû*qÒ¬Ô]À‰áÙqõÍM¬•Ä-ž±Ìοq.èÄö}3Ð^mSk8Å´%MΜœš77Ñmí®£,sƬ}ýUª(Ї×m‘lšZhÿMâ´é„VCް¯…T}\¼�^`ìH°É¾IWµ$  Øf¾¶¸W.æ0Ìujj¯º×<)©“™Šœ_Í`0Þª(Q 6¸ÖéëÓèëF©PD?^e^VE‚ $)mÔ"{]C9ö� s8`Ö’òf8äL@X!»^'œÎcímu€Ï~dÕ ¦œ¯Ñ¡QæŠ3�ù‹¯Vƒ€ì¡Ьz0«¤$€Îý6nØm9¬¬µÍ¤x§{µ›ô £[�Üq•Ë2–ÕeÖ Í»çuðV]ŽVaê¼0àìÙy~ÇÄiÞýÛÿöøÌ pá¤.<\‹Á5}eÞoÀ_M¤ÅY»‡,-¡·[ù%àaýØYü¢³Æ½³rxp~|=ø Uè®QvîÏ!Ììh`€ÛùYe®|)åÈ«a¥C凉LÒ§ó÷’òÈ�)ò �¬|�÷‚˜Ì/ŽÕ?¬\óo©¬Šßb?uÎÔ£SéD×Iºpé"k¿;®)æ¥_"‚'r6x§ÝK qX ¾u95R„`r‘°RF\¹|^ƒ3ˆÿî¸ýŽÝê X8?¦rpý’C@G£ìÚ .ùž²a‹D�=äœz²XòÊ%y�4ÓÝÝ ßìŽdý±‘áðµ)Ïu"º÷aò}Õ“XÄíà<Ä´•Åò(>Šûä ònÔ•…Žàcò y—•ÅÒËúˆþ@+‘CÒM)²!Õt "_ÞïŠñx–¯ËØ õTTÉ#Åw�½:T­ô ™%uÈcç§\1ˆlÅå:¼Mz‹sÁKUÒ,'ãqLÄ@¼—óW^Ѳny0ìp G•>[i»Z-�æa÷tG¡Ý9 ]ÊyYÖßd‚ÌG;6óòr=^Ê!ᮣÖW“[¿Àû®ÑÀ›4 eó;?È�ýqÝ_Gt8¿ç¸‘´q¢[cºOÑåIe-è;¼gPͶ£ê9³8Õ39 '湎ü‘q÷çë\ßù;ÅC ê8’òGù¥Nom.ù¦•²ê€;ÖÁ@îóûñ¯òr}ÆÙÞ¨nˆÎïÊ ƒneèðònñº€#ŒªÐ9N&|BÁOM ;ÿær ŽÃÿ?sé68±ŒÞUï.!HæWõ‰›:À•9úl´�ƒûH¹Ü/ð�ŠfuR‡v|ƒ«Ùã3Ý[Ç€Ü:º°2þ-¢ì÷(4[ŸGp€9:¦×»Á<>àu÷üÚøXºôfºãŽÛ÷óI$19!t öß‘GÛÐÇ£ówöšá¾8ú�tÀüL^â>x ‘/»lm’ ¶&ÞÐggå=îðÒ�G£ S¯ Gä)ò.×%t;¦Noâ%¤“áz€ú@è%ÞïwÁqi,È�÷"€,~q›ë³c�I…Úp®:k[,ÞÜx&“¢ŠÐ·¸Oüôù‡I{ÂH]C\Õk°Õ#^Ô\«?�?®ÃýçÅDF‹µŒ�“ ~>KÈÍŽmÐÆ/ø}�<ðÕ$Çp¤ð·:¾cñã«—ñ«¼6žáç"ðq~î±ú&J|/�îVŽ Ÿè[ΛÁøn#}±øPŸ{æIî1ðë™ÏÕ¡‡˜4XPR˜Ñ „!ÏöÌàÒ²lì0l«ú¶În‚ÃT­ÊÇxÖ/rܘ· Ä3m&÷V|/%�>{ ;».«:W×ôÙ,{“Î¥<`œ“_h Ïcã¡%îë'îí?ER3è<úÇ«HöU'Šd]¾§Î«V@u¹>"ƒÕŽSJaÉMÌI[Œm´b8R-�E$ŽÁ?Õ»‘ |Ϲ‰#$“ä�odB»‰ððà$h!ºú/{ Ì´{“ÁíR䕸&›ÙY+KºgdÖÜHªEeTeùØ_¥‘OE¾—þqqE¸‰k5<ĘW Efuõµi|ä s3¦Îží�æ6cñ.]ó ›ha]™á�KÚv{[izôÕèY"o¡pv‹Ø1:ÃEÚ¯c»dÜnù;kiv‰#ÇŠ–Ð}kÒØà¾»­ÔF'ØAöñüE|ã$˜Ú•mzÜ€zû:#€•VÂP~‚~°v�6î3ØŽv@B§^ÅØ³åu­Ìe• ðD�^OGN7¿¿üÖù4ËQÑ…ÈÜB”,Ê=Ñ[“ú»ŠÂ�`›öB×C0{“äm J³YËBj§Õ¼g×/-¡CkëA‡k«¬;¨««ŽD¤�8†¡±Û$EF ‰v«.ÃfR(+XN§�×aÏåÒ¹·æ#1§µû8éø(ñUTo¦–žä>6ÀÂljä»ÍØè¹œç¤OXDÖ‰5ðp.m3,Þ¶â/D’§7�pÐÒÆ‘•ø<ú»:À3i¼8µ÷öpDuGê:ÔÁYètèÊÂCMÆÏKý½èqÄ[V ð¿rîs�Ï€oòÁ:öºƒÎ;ÈŸÉÁAÖÎQ''ºãx�²2ŠEª8ǽÜãy¯¾zŽòq$ï•¡ëi9x¢g‘gpéÑ‚ŵwwèÊ ÿ6YÂÄD(;lî-dxÞ'ýÈÊ•!×IJƒg6€Ó…$êåñ³M×é/z“!pC÷ʇ檠)�¶ƒk€7òPè9TÁýò }-˜z¡¿HËÅtcÔ¯£.©\r8Ù”Ô�Ùø"8sãùªïëï*®wmú±Ý„àWð u$»{i;šì//[´c-/Fç¶pDøŸ¡ ¹Ç¼õ=™¸^Y‘Éa夂 èKTG×3ùÍõZo†x&.›A£Á§5‹:t…–Ö8'’/ªä6¶t¤þcg|Ye‹Àp‚ AÏô»V®y.œ‹ e‰÷VPœ5*u4†°dãÌz Ç=»åþî%£ñÊÄ]üú ÿã8þì+b8cK F>ÃGWÂPnïè„$ÀÔ¨3Cáæ¥@;¸ ðn·öñã:}«À�¡àÈÐ%j?SøÊTuvxn«¸¨ƒ¾‹ŠƒÏüž~"µ·u¤ÝyW¤cz¿ ¿ õHÿ±`bO?õg‰2 ™‹g\jìôõö‡cË6Æoœ?G ùg߆‚Žð‰‰y¾4Ú-Îh@!yøá‡p|×SÅsˆg‘­Î8o0¶Òz ïH8tÍܾšNž¼%æ<<<˜¾ùÐW#¨ð‡ÿâ�ÒÇ>ö‰x†çª^½œúúBá³²ëé§ŸLúЇ#ào…hŽ3;~ôØ£´šëIÿø}1þ,÷]¦�Ë=ü­òiVì“?þgµŒÆ™i:ÿå¶F‹,Ÿ{ï}€jÇÒÍ·ÜJ+÷‡ÒuöÖ;‚9Ž�ޤ=ñÃ48t9?z2=~S:GPïÑGI÷ßÿ©¨ðw.]ºk·Uõ8?~–ÀÃc�=YTGcÏ.^<‰*ú�øMéÅžNßùö×Ó§ë3QuîÞŒóÌ/}ñ/iÓÖŸ>ùÀƒÌë, ßK}ãkéw?óûÀ¡Ê>îãÇ»áÏû½÷N~õ~÷|þ« éÞK|ÉŒ7§Tï½.•š}ùöÞw¾Ë§> º°â I²ÒçÛ^Ôk�@€çŸÝrëP r©»çHÒ:Ò—çBÙ¨¬."¡¦%:ÜM�J”2[óÝ~û‚þ=Z¢¡‘öOS&ó¨ ´ DZ•©aj&ŸÎž0F1,\³ãkë"(ÆÛ! \gd�“=¬3@Ç�rÚ$?ùíüÚ<ógÒï¯XØÁ?¿’Ð(¬@7ý§ŸþgéÅWžKÏÿà»éÖSg1žã<[¢-Ø¥pþé¼YžžÅ#XΩ[êp±Šaž*dq©’³‘t¤ض2]Ô™™¾Ž®j i )2Ÿ[›#¡ëpwOÈŠ|‹TZIZe;¶T‡SCÙyþÍ7 ƒ.hÄsÕ0&®^Eæïâ|ÕÉ�i‚.ëYlÍ­Ma ˜ ×Bsƒ;¶ùR‡¶QGøÞ.N ffgÛ)÷=cÛö\Ú°º¿ £ÈÕõQ�k—c¹ \ádâ¹:15’¼\«ÎÙøŒ'èÌÑi*ñ„³~ ¼ü¾ŽÚŠê¬šÍù(Õ TƒÁ¯L5H¦Q­¼î¾J‡¶d7óÞŽUIðW²¶A1F¹tš9u‚ Gñ~Sk£³a Wè7žUT*Ä™¨Õs´œ[ õ\9θBð+ç7càƒ§š`µkÑÁleNz–|Už¤Ó¶±¡ý¬+’{Æ'f©dvn<£SÃJžBø‰wa”ÃI`ÐÂÄ�rùÈý ’µcŠù;ÎÙã;ò©àÛ´� ~ üJák^ÂÃ,m�Åò¶þ¾6’ªøO¦±kó茣à‹pe¾ìOt â¡øµ ð½Ý4§Ã�ŒF[�Î S¸VØŠýÊð$ÉÀ3Ø2ÀŽ9jà1ëJü½ ¶¨œ˜�™AÇÉ‘Œ@¶úM7ѱh> �LQÀšt*áxŽ*cŒk» ,à�6Òª çå\¬z5p+| ,èXÝ luoCSMØOV©ÿò5ÆÑHÇaÈ\6I‚Ð3ˆ*f4åTôÜq4ÕSeþÍ«Í0�Óʤêꀇx» ìJ­gqL;ÕVö�8Mº¨`ãâÜÂ9ª³Ⱦ·šÍDçg»±þMæ-^¬®Í #_a«¨6Ò v`½v(ô[Ξ¡¢ ˜®B|ÎGKYžoÒÂüÔ8“ÈÉ!ÿÿ.Þ”u×éz244ˆ^@‡HΤ9;É'Ô²ªm}‰Ð'tÇ ÚÖÖÑþ‚çxoà;øvB1�®âޚ訯LYèžÃ+ÞzäÇÈðPèCÒbæ;þWŸöüpuAqE^!�Jn>O8³Agùy¶¸'A”ŸRt¶øëƒßÀO\ Ý¸[z•~Å1áž½Çð†øñÆv½Ùq•<…ûö;Ñ©‹™d“#N}ú üš©W8½=Þ;Åg<ðÆ;ÎE} ÿ  •‚ñwÑÅyß31$³ƒ„«Ó—ÇÚm]œÊôù©IHŽ-¿uÍþîwÄ3@ÒîüAÞ z3IWÜp^â�ˆg›Ð×ÞqÛa”¹Y|`œ$›¿]«ÔE¶èfÕ©¼Pÿˆí†79ìò[9&—¶õø›�Ãßæ~Â\ZµúÜ‚&0t¤Š�C‘Nëå xoðm’…™òÌõ{ÔÕ¸–O°±˜}Ê+¤Z•€Ô*v„¼±¬¤:ìæèFÀó¶9oY{¹–NC{Àѽµ3NÂ�¶1g\C�°&p&ã¥î¹íí7уMÎ.FŸßÚ_Ñ}¥õ]ªÇ Às«jsÌß.ZÑá>f𿔣}67éìCàZ{»�^z·“›©Ù&›zµ4–É!«®é¼ŠmVL@Ùívß·Á¿èjFgæüÒú°#w9ög“õ¸~mAÛлþ-d´]fšéš69Å1Ø»!ÇIèÂŽ¬D×Gß,_ÆgV�`K°C´fVã~±§Ÿ˜ün ¼�¶—±Éövé* Íoq¾¸þ¹ë—Õ’¤à1ƒC³è›©÷ÄÉ´˜+Nϼðl¬S˜¨SkwE¼‚Xžû©›PùSý)w¶�Suþ -åé&³–K�uòõŠTÝx2àsé�¡tuŒªmZÇP%?vþ æduð6-ÚRyÁf:uŸÕü’–´ºMg¸ÙEô_ × Vá'ò4ZˆÓE¡£­&‘_2E�¤² ZbW¡ ;_´µ×¤žÎJh /‹óæ‘Iê;ó$LLŽ!cÁ!lÜÆ’Ñ«vÓ‰>Žj"É~m}ŠÝ-ØžàYÅÈpZÆ/—�ôŒLË».®´ /óÀ÷J’ÃÀñ²¼Å´¼Ù|FZV’¬6AEF“Ó©�µ5ÕqŒ]®sLÙÉÆK샅HKÀbvözê"±\?ÉàØtºHÐûØ¡ê�‡¯ÓÀÄ“ÊRh~ëø5�à®]í&SUisê«§˜œ¿–.ÐUyh!€ö—6¡Ic&ÆGÒ’¼LÞÉÒDø¥ÀÅ�YÊèBþãyäkøµ¥ƒïúžo'}¹Ù`¢QmG"ƒ�´Ÿä+&ói3ZGlcó�GÁ¹nCÝÈöÆ5É¿2:øÅ�#?üç¿ >íNíÛ ý%|7æn�†ó—g{uÀ�mÜ«ü˜£³ƒ~$ý7g&ÍìÃè À=>G™TNb¨=ûì�ÓèÈhúÃñ_¥;n»ƒ@÷¿*ÝJpíÉ' ¡¡bö‹ϥfÖh»u™�-ÙuÎãë_an_‰¤€®®îôô3?&€ß8fÝ÷É_ù}Szþ…gÈ€m¦Mô™à?õä�ÒƒŸú�T+o½íCŒQŸ¾õͯñÝŠP¾ùíoÄY¸¿ûÛÿ<”÷nÖrö–ÛÓ¿ô‚ôo1ÇÛ ÂŸOßþÖWÓÑ#éwÞ�Ž?Âõå—Ÿ' ÿxTyéÈøÁ÷¿I ¶¹¿û£÷rÎùMqûW¾òWé™§Ÿà½{Bù}衯…ãðã÷܉EY»ùÊô¹Ï}6=úýï¦_�½…ýßàgîùÁu�wƒ€8¢"¡œÔ0 %«ZW±ðÊ�Ÿý¶Š� NÖríg?ó¯_÷‚�©¤pí˹P°à?&½)ÏͲ³Ý©•Cu»ÆT¡øéðÐð^FÁ¯&PhÕy9ô¿ SyÕȾzå<¬^iÅUÏnh¬-=y{TåjÖª˜d‰K%åÎêó0Xq$ì+Y¾¢ª`dÕç:¹ä�êÈF8ø÷‚FÀ�=e8[n:qsšŠ Wõ·eª!F†¯D°º³³-‚VZI«ÑïÙK¡ dõr8*”sf¡êl2ˆ­¾k•®Ù¨VDˆÏÊb­öå÷$²Rš«" ¼ z¯eó<ã+¯uè�ŽŽ„¡ÒÕÕ8¼€"¯!.ž:–-‹¥�JY @h€Š4£‹EšÞæœN�¶#ïîíÅ /¥š˜ŽPë“�‡ÁKuj+%¬Ö´•¥Æ�®†°Q= ™�¦t€ë¬5;Wc!(Ÿ×È1Ž&�>êç"Å8:5Ô}–÷¸VW,ôP‹.:ôÂÄýá`�?ìB³hÎm$Ðê"®Íà§m¨3ž¦C�¡˜¿%ó”=Ã4�¹;Ûí�>Þ‹£C…à‘FðòòFœDïZGϨŽ�3;¬ÏÊåÙÙ¥Ðk Nê¨PÿðläúºJôzö øé˜™^ÄÐ5ˆ†¡…áîÔ‡tk|i Yͬó&ï†NVì¶¹OO îØØc[¯G˯µ¡tÖk;Xýl æFæéz**¨h¯Ž€Ã…‹ðÖr:þ?>ÓÛ¢ZB=Ñ9iôi3•W�°Ì=ÅE©¯·•*ì' ëζ¦0&›ÛêÒÐð4Žû7q¢ÈsAóìüè0”;*û äïé\+Âá€cߥg‘Ì—¯ÛòÚ9x®——¼×jWù½ô§áY�cÿLòz2ípÀ—�c¾�SÂüñÒ�V&èxÑ0U'ÔáX‰ãÈýê?r(9Fv?Á yÎ�žšYŶ4�K{MGfŽùæ <è¹’$“mæÙÜXCÀ›€!°°z~b‚LüæZ§õ´$Í:Eè°Ü€®y7àiI… ækÕ~5Τ°ñØÍVÎ�3846:Jw éÕ¤ �=Ð1keAaÔkÌGRøeÒÆ^®APàT00ÔÁiåyžGºNDÛÁ+G…E$j3Çîî6ºuëÒt�dˆW^ŒÊå8c=‡cÇy4 âR³B�ã�ð³<Ôe$"46VB£ØÕ:¡ï…În„WzeÎhƒa:ǦӲrU' X÷^ç‚°ŽóGÜ¿ ø·[a?œ�ÀÃ5¹†|’9L¶>î¿ëãÃà%Ÿ¹¤!iB¾¦Á€u~¾G=!ßHà�\˜ñO2ÅGœõ/nŽnŽQE¢žÁ“ÂWqWMò÷Ú øÀ‚oÈÕÜÝ…ÀÂ}P§±rÌà„D�¾²ûT ôÒ@b”vÙÈÐUäApš<3ŽFÎH{H;O¾ž+`ïpJ[P îØ‘Çs�ÇÇÆ€‹gVFÚ2:° vv" <Ê`�¸§íÕ)Àߊ2;Wu÷ôAÇ/CÃ3©ÿ(úA†1ì.�Ѱ»Ï,ò¬»»�ßiÝ ¼;t¦��¦§oA—¢r�ùìëq˜ƒ~)!�éüOéX‚î,�óìÈëÓ8M¹¤S÷Þf-Idµu iÓ mÞ_ƒ>D•ö¾2ùYìR»l¢O47À—¢Jú1ˆ¨SQZS®1+£ kõUåË…È ù‰t¨#ÿ4xn£“ÿyÌzöøN÷ìÒêS&nµ‘(yâØQ|&íÀÙ$FaÜœîM?üáwÓ�wÝ•îüðGƒ'GÇä1�âÕKù­d‡¿ð¹?ƒvè2Ø O/cÞL´§‰žnÎ^!Q„ôƒm!¤OR^i< �§¹[r£ÜÛ™k²•³ö‘œÇ˜·ÇZpdp­£³3 ÜrszáÙ§ÒÉÓ§Ã!Oð øg¿Äïþ*ÏWORÇ}ä{4¸–|àÁ_JÁ£Ý\A—‚$kT¹ÑÅ…{ Új’05ðéðÊI÷)‚QÀÈ¿C^€WÎ9ö„uÔÁ{]{{;üŠ–ÄvœA·jïh…O®à§¹�Ž�=p¾[ýVøìã‚{ ,Qˆ¯o$ýî·¢Øãº`­ …ÇW¤îÇÒ5xr+]t,0qòÖÞØÍèXÊ“x“÷Õýöu° .Üø‚:›ì±;�]øÇ�[­$zÖ‘Ô¦ŸÍó�ûŽIÏ?ódø|ŽÝt“��5/O�C€ûÒŒ¶,r=óÒÕ+éûßûNºåw1Gô‡ æ!WêèÙ@° ˜7ÖÍ3 ƒ"—‘aÎ'’EØ;΋Ð7à)ÌÑg»&v{mjá£2òÚ©ÈnbìbpÉı³T¾í+�üõOãËŽÄâK.€ùˆ�NHð·° Y̯�¬üâóϦ¾£½Á#üŠm•=Én´¥à½{£^lB§0ôá…oÛ$¹C²¦Á:+ å äTå`�¡KC Ä9cÄUõ:ÎÇä;çè¼”×&aX�nF}Q¼6o¾yŽ¢ªL¹Ç1\›W௎?âo|¶GRÁzàPºãƒ·¢§Ù9 Õ&¯ þ@õ6û n$¾kCšLës<'ø'c¨où,á'¯ñ _­ãó“u³ è2NV!Ÿ Ä7i%WÁƒºû2Ýä*¯fü¾ú›åׯO1ø-ß5ÑZÝZ>POÌÆêiõ “t<Ö¨ûÁ$+aè\öÇ�AßçgšéQàmØÝ8TfÏØÏHF±:¼äSéÔ`´hhÀz‘ ôþ �Pr/Ä Á¡Lymø…L¬¹xá<ølR�‰ŽðDp ™¢ mîi’žË‰9íåeÁºêjù+I0•e:âÛ.-VÄç¨\3)]ÛÚ„ ízÇ5!Â{µ ‹&Ë×"ðF%ëö¹ÕÃUµ�W’¯g0“Ôæ¼LÊÍcœH'€går!òjÝÏ.pâ;Ô<Çý3hl0;óÕ‹+â-r þº¾i°�Jx`©ý+¼Šï(,¥ûœ:b:v}çátåÜ«©xŒû©úݤrxy‰dæ2r!‰YË™ÉÒðd’‡<úÅdÜúJtû|]7Ìo,²*{Á›Ü0‚´v5¦5ŽWxòùóÐÉÕtüøö‹g‚;&~un�¢1óÊE„)ŸotŠÜ&…°Å«Ø4ˆ÷—¶jÑ} –§ ޏ-Æsœ·ÞÚz(•× Ü]Må�7òñ¿€²õ$˜¡Î3'è·D0~‰Ê^â‚&K¤=æK2õú*Ml ·Ôã^*¨L7IJü-!¸,Íioë7¨Áž.ÙÀ~ç6…-ótŸæHFÜa½Mêðaàì.Tc[O]N9ªÜËJv©Â'é£údê'n¡¯fdð5ô;‚a«W–ÄZr«ic}%ŸN›ØÓv 0Ñâ[a§^®¾oBáúÚ"Ýðèj@rûÔØ öfEºýæÛRkèêÀp»#mƒoo^ [ÖÒFº� ~uÙÁôy|K�£vWt+hå˜+À==M·ÃqÎ�Ç_e§ƒü' ´Ö‡Ž ÙcTDô$`�yì€zŒ(xQ$–q|™´áç&ðí�$_Ž.&ÀËHê‹›´Ú_$É`ÿØ iIßJ ÷z¿rœƒŸdǶéÑžQ‘x^˜ ¦Þ*­ûžt(oˆD6hÔ䃬ÀšN_Œ·ËçŽ!_±‹�< ‚¾¥]kâ„÷úëé7>ý›œÝ~W,Ï|2€^‹¢ÖGÕº•è*8U(Ǩw�¶µòêíHwìéóŸûÓôø��Äèñc'‚˜ `¶ÞMú=ÛøñÇ�âE‚Þ·Ýñ¡¨:—©E»V˜]'‡V™?õ䆞¹›>ñéßfýýá|öýý5é·I0 ¿@+–‹´±ï§]н÷=€¢�–}R¡ùà?m>¾üÅÿŒÂ°AÀý2NÝ�ôíç­ª÷˜Š;?|w(]ß{äÛ¿)2î÷_þáawÅZUÄ„á}÷}’yý8 ×#GŽò=úÁu�w‡À¾¯Â+ÆÆÇ’•M$tÙÞÐ.|’Æ¡©}¾àh5*žïv)sUTLÞëz·oû È?ž%¿R>ÃÀx>\ÅKÅÒVÑŽï%ÿÛâ¬��²h¦Ü_àÜbÇ>}ó­‘¼b%ºÁøîîžào&Û|æ÷þUТʡã;NJ½�FŠY�êÊnõ…ȼçSe*3ÂCÃheõ†îÀgÎûàú‡�ÀIdZ(ìðéZ,¯ÛnÿHšã8 V2uŒnl,E«®9œ ‘Ð ÞÜG+$ÿá£�_:lêÅ]ŒÏU¶rFÒ ¥c› l Ý@ŠŽŒ6d‰g+ê(ñ˜ÏlÓШEy6ÐlÀúé§žoù#a§—ú­gÙŠÏ?ÒCUUÔÁm+*7ÈD ¬›xŠ8ÄÅøBOV�ÄyT‡‘wVÄë2”¦¼¶Â›�ɬž$<Ær �ö;?r'4Ÿ€/è §cJÃ:#²K�C‡¿uÖzžõ ë70©¨ƒÚ„0ϱ³k6PN…Áù7.Ï æl4æÔ‚ó¹ û20Ç*i²ˆû�ɈxÂ×Ýx ‘ÅÜæ©Ø&&�ÓÁÁQœ]↰Í¥Æ6u6xŸÎ7ƒeП•é®Ñ t8Á›Êp/o ÿQmŽ9މ(Þ+ öõrZ-4È~šýÞ#?tèaÈ;?ñÓ`Jn‡çò{5A�9kààèÈdTë7èRQ.® ?ƒ×ÜÌ: ·qößò­»Wì¦ÄY¿Žuj+ÎUøû¾SÖyå!Öp¶Ÿ��R²ýãØ þ!î&Œ4Ìí:ÜF¢$‚�YÞ:?šžé2Ž2Žr™f IÞaK;åç"t$¾¹—¾§ƒ� —Ö­À†,ƒ~  K£[8æ¢ÂNd·ë±ªRü°½¦|aÕJxªûu|¬¯ã¸á’¿IOy<Ãýè8zpâòýeÎtö�u@MëØP§À/âCS«8<çpŒ¨•xœ€w`LªpÙç’1ÜG«'¶ K»l™À“©ZœbpOÑŽ¿´-&$¯¶ÀÀÉ,íò]› ¶µ ‰ë·�– MÂr{'Î�<Žw:�³ªÇ¡ '¹T‹ü©¢ý~+#ZÛÚƒl­^†3°«»7'°22<~ƒíÊ”pHƒ‹âßë/¼”n¾õ,6Ð=ØKýi ¾®Î¤í¤#몃F‡‡H$î ÙR‡nf`ÔN`þø‰Ó©]Ñ=6×/3ô'É ¶pÐ^Åçt)äâ$A›|hÊÄT;F�„•ÁËÐ ” +­âݰSº�œÙ¢%ýWð—6’ˆäQê ¶aµ�æÞ�êIhÒAëÊ›€r�ò²N¥Ü‘B§9øƒíSw ½=î=ÔÑžzzúÐCpàÊC‘ê4 u�i¢j*}õK~Œ“t¿kïèàsx,ÏSñU�]¬|î™§ÓÃßúFºðÆOÓoýÁï§þ�#©]Cy¤/¡·§§<çÝÒ©C^üÈ2 ÀÙõDž¡Mäg|´¿µã™<²ƒŒ�(“ ÕŸ¼W›EýÃ{”Ivö�Þa´OíEhå¾Ç=ò4ù½Ò7~z.}îÏþ”® S¡×ÙÚÜc7 ’ØÉNþ¿@EY5¾ùö#'MÑÉèþ{?NRŽIUÌ]Ê~7Â36Ñ{Ô»Â7É\2“É ïQç³õ´¯^ê-¶Þv­:�M,´2Ú„‚Ó§Ná{ÁžÂ�®Œe öj¦eï³Ï¿£Ó\"‡¿W|‘W;aÖßßGrBþ’Fäz ë´H£¥¥-½òâ éì­·G�‰{%ÎÌ¡KÛêØ¿ ,êg6yÄ’ÁÑÑô¥ÿüy:CM§cŸüDÌÀ‰mªèΈ_ÌÅiõCÉ(®ÀóòUÝÄýV†dxšÉõwðÇyTQm}ô؉‹íÈ·C–”îhKO=û þ´Ç‘mTb64Ää()ž«ßÊ$re¸E%&Ÿ° ‚³#é{ ýjúŠRLÆÒ^¿ó8{öf’i¦y�u³W�Ý ’x¡¯O˜¯¯fz³z[l†�ä3å…É�Êcuä&V þ—±ÍìmÏÑ_ÕF0ýìÙ[ÒÿÉH�’2�®Nhpuuiœ¯ãÈ+šðZÛ¼¯­`¿a?jOJ#´JÒs'¾ϽÖ>ðx·Ú¢«Zxè:�0ñn½^”\_øêçPÈ6ɬe*Ö:1I'9I}è&[Qæ íƒ?!¯hÍÌQnvÕR'Ü#¨,o/0Q‰53}‚¥T³Ÿ;ðýÇòm›h-¯)«ä>Öa¢»~�ÒçH˜'8í± ‘0EâCŽ@Üú2‰˜ê²lä5ŸF©�^ÍÍ¥Ë×Þ`tôêlÁï!쨘fŽ@“8Y ß©@W¿‘ˆ ,´§µÕÊvgÑçIöF^íDžßªN«Ø“Eë—áÇ$ºíD&AJ¾RUßšfÐW6WÐwÁͦcùé"-äOßt…˜°®oæý"AàEØÚ´X#²@ºÏÑYeØðNn½�ý3¡ŽíÀÞÆ&%ØNîÉØì5pȺéQí ßR�Ú6ÎPÕ ~Að¥·mÿN»óÆÒèJw}†¤ú¥Ât¬£‚9]õ!”RŽýXΑÕÌ%Ÿ ôüÅ³Ö ‹°ð9mìr´kò˜ˆ–Às“XLÔž›N—éä¶¾y=Ír–ûñ£wÆÑTkÈ\&Dû{޼2˜žxñ�t×͇H–LiøÚòR›‘|xË … G$ �âsïJèöPWÉ1Ô$BäèLT@ל KZÊ@7i� &°ÍÜÖ U“àLðüòbt3å“úb:àoÜ£9d‘TÍ8úbAt¾i¼T:ƒ&B°kòÝ‚i™Oå»Â¥!ìµ||lâ�q»3Ê3ä‚þDr`>8a.›ïÓñ�w3Úcž»$˜Î,øÝjxý:À¹mPðd2ƒ¤ùŒk•Æå­Ò£|ÒN1¸­ÁYtY’,¼²dEX‡ü[¿€ºŒ´²X‡ÿ¾nGTy_ð‡Â†�ƒ+ËtŠ¢”Ç~)o 3&a‹8 I#þ s)+§�ž†+„ÚÙÑ ÀvP(§C�×–—߀°jÆ žï©Œ¿-@Q@;'âæ„`á}_÷[Æò'¤ñ‹_!H72ÜÞåkÃÏ”¢±‘!žOËM”t O¥ÑKǃﱫÑ¥¯o§ÄPúöw¿ŸŸ:us(5®E…óà:€€„¿�¿ ·ä ¤øž8í¸ÀÏ6)À«UèûNÄýïªØxFÊïüîï¥/ù‹0�À>ã)D¥ï•nl¨3æ…—^ üvŒìÌÀÔ0�fŽfqž8y:*Æ<›Ûêp� g�3†b,«HK0\O¤¯|õ éæ›oO¿öৃ&ÝYŸ·O7qdôÿØKwßýÑtÏ'îÇYVIvæX Fï7 ½ˆ³ûÂÅ7ÒïP^�P2 !sVÑ­¦zäĉ“a½È¹”cãé·~ówÞ¦{ /š‡QÈ vÿù_ü'  céŸx øˆŸKçÒ¡¯G�‡Si‚ŽÿõýëÈžòéÜ5ôt÷¦ËW.‘Eþý¨¹ƒ¶í*V#zL)"“ñPW7çÌ?šF†yæçÈÿ­O£ÖIå¾Ù:þÍ7_�À¹Šö´¨>Æš„ÿÏó¹>ÓjÿŽŽCQ©¢�—%9dN²xèÁ?¸ñE¼±¥Ï“Oý8ý©’n.ž1câÆØØø ú�Ö¹oÇöç(rïvé‰@Ü»}(#àÙ"§½ã yŠWædɪ8�¯—Ÿ©œø·™z&i\Ú•¦Šƒ`žóª"f ²««GÎ0U}¬-ZC{MT´8†jI:Ü=S¹£ÁÖ“yœ­¤A­ÁíC剡àà$�,âP¦X?¯K‹(™7æ¿üó ¢ž¼¹²Œ­²~¸£3õutàlÅPA¾öÆO0>†Óè[—Â(n¿†¯^!!r:ÚHbi]ºx1ª uíŸñ9‰<Ói¤€ÜÞ²ƒÒ2çKun^zëb&�áóҔΓ0çIq /åãÈžƒ0®ÇFC&Ú~N‘ŽOéh �Zç¢ômž¥¼“õ èD�PCÇuüiÀëtxó� D8¤q~jpØ K'1NŒ«±dkÉ.²ÔíÁOÑF9s²êhwL¤-+®6pT{VµÖ‹sö{: XochšüºH¥ƒUº&Äé°´Ý´-Àæ ß‹—.§’®m¥|æô‡©`±ò±>ôõ l:w]³×uŒwu„ t[b� �D"®ÉA:UK Xó™æåm¹h¥Êððhúö—¿ÎÂÂý3Ûdj�°—ÚE$°$CT£÷tÓIªgÙö¥Xƒžqn¥¾î*å­~ØÜæ*Öm€ÙûV#ÍàHðüF�/Žå†è$®cÊ}ϋԡåÙä´²ÂIL¦=êЧ˜¯AD LÏÓ§£ÅW�¸:ÉÄ+ñLç¿vS‘NYæ¶ÌÚWq„×ÒöŽÛÙ ª#Ǫ(ƒ|µµdè;¯©ë³À€*­¶æ€ÍUVnåh˧ƒe~a- ^§]aI$èð|:×ÉÐ1–ã»¶eðI‡¦ÉLÚy¶D<£¹�ʰ"Ö±½ 2r¿•LÒœÎvÝ^fæˆ7èlõŸUl™ÉçÉ�eÙµ$ ø¾²Á#ëÜ[EKEÛ/NOÏ“œÄ´wäùŽ+¼`öñqFùVXšQ�‹c¢Žê‚åQÎÅ1f2Á" V^FåÎñtòúôÅï$IÞò½Uª3æ¡iuqíëXú°º»¿ë´ÞÀ!ÎAPÊsÆu<ì‚,!ãÄ!Ö`5¶Ïv�:l�§S<',¸§Œxé˜Ó¡ CPð�)Ù+Î…vºˆWêÈVzLp¤À¡V*8H¶XZÞJ•µØËÊXžBžÝÙÙDP¤‰QtÔ­òä+ë4 <=5Ë\i?|ª?5uÖ@GðpÇ–ô�+ù\‡µÎõwqÑyD×èèv0yB\³”ç‹�Þ#ú¼© Z˜Sap½ãPNîj[¥ØKa¥ deÏÌô ŽþY.ô9°¼¯3Tœ¶³H$ý±?ëxåÔ¿ô ”ˆr¯¶á»œÀû ^ꬱU¨�iÕ#C¼<š#ºíñûåKož74µ"›ø2ϲÞ÷ps=?ýÉ«¡Ë˜hk@Â`»�p“dZR å(I¶^48f";<Ý`ýÒâ46ÅAøÁd‚ål#«!¬¤o#˜T?€2ÁCmƘÞÁ?¿¤~�ÜØ\ÛŠ¤øÕZz‚ç%T]騳cÉ.NGP�ýÜ&Á$ë^³CŦ|¯8@·x·|]\ê"@V MÈcäÏ:I=›Ó„+}za à�9옑Ó #þÐÊLuà˜z»|@z úG^UTR1ÜØ ›Å g£´ªoPy)­)מxê‰ôõ¯#uC“wÜùѸrt„cYZƒ?«wèwøÞ#�ÈH¨¿;uvw£ÇÀ«IP²E}´Í†Æ”Û!¥=áa²Œ~BŠgñ=n Ç´½­ä50ªÍ$ÿҹ뽑Ìèç|Ç$b�ó»T1í9ÛÆN”& Jsêr:Œ ÀxĆtÔÜÒœN#¨ûô¾þ66©õUsë¬U|ünXþæ3§�Ý™á{~êÁrÉ?å›Ú6òi;“ø»0+/µ˜"#TyW>{§CÛvô0 æO—¦Õ)àMè!ò¿yøVÁJõ“1­¶ÓfR–µqf«Ý0>ÿÙ?N3SÀ…j?ºýé—PSu=u˜r`ì.kÐÛÕA‚NwðvÛóÊw7ðuÈ�£Çzê€W‡Í|¡™.£^úxçû®Ã}aÓ.ølÒ`9ÏZ�¿/)‡Ù+·bØáÇäEñ©ÝÚ áW)fЗlðÐ9L°µXCþìç³³S©»g€Ä¤nèçJš¡päþà­Óà†8nœN~‹QÔÝô�Ex¥>¦+( \bÐJŸ‘E/Ó þ1R€ƒGÉ`�£·L\»ö«­y-4QV©_¸—Ò‹sÿìü“ôø#ßåXÓcÔôˆD/^yé…XcwOG)žÚúÑ¡ãéKéì>‰tëðq�Qÿ3ÃLã+Ç<&ªTQ¶E‚ zý6] –—˜#Ôd²8oúšóQ�‡ª€ù:Õ¡s/©ÑÄác’ˆÉ}Êl“"ººÚÓ¿ûßÿ·ôå-$´â3œ™™&Æñ6${Ù1vš1ìà56:œ^yæ¹ÔyôHúØÇ?z™Ç`P0x¡þ[MKš,Ç—! =ú@ùë~øc€|yjò²gvÍ'ˆèä?¥2ȸÝ|X—t­þbð.0Ìøh¦KÕ’dkðÙÀ—ßõ8ÖføÚ™[Τï�OßýæCágp}n¾<,ì!õ/~Lx>ÿƹ ý€³3×Ó‘£Ç‚Çyì—øçUIPúÔ©“éÚ¤U¨tD‚gJ»Âv‡ù;ߘ>دnò›‰»Yà‘?_„‡ú…þØÝØ¿L×,&PW‰�òò¥‹éßÿ_ÿ.düíø (�†‡†b®îƒô(´7GpÍã¨<O¿Ì:mäí,µ›GŒƒµªS‰Û~ž9JÏÒG&ba¿à?EØkîá*‰Ð%Ä…Ôa«ê8F‰ßüß ×.<@}M¼(‚׺ßBÁ zÏ—å#âêÐàUZQ—“ u(ø‘4òœñ¨;pÙ2¾‘£B<>Øõ Œ™yצœßèJeòÕ û¸GRi6‘AFm(׿o+ J<èœïü7 § )ÏVÏæ &îgOxfà´#ÍÈwÙ¦Xsðgì@f—®hÙnõ:8©þoG9mCeV--Ö•9üÃ\ÀkÇf¯•/ʶ­äÅgé×®ÈúÅ"Y^ºKëú•e‚ÈÜWC‡ò{nq5ÎÏ®Aç7¹n}‹bõgtƒ�Øc‚±Wò°eÕ«s»Ï©˜.g~#�|Tþø<ã„ÀÓ¹—^§Sî\è êÚ/¶“7ÃÄ»m¨4èíµß�)[£š@·ë(¯m�öle�íJ«óÕ…º;O`k§Ú\÷=Ã7±Ó/_7RKMAª¯¢óª­îøLÖ8û[Yip»Ä¬ ``Rñæ† ¹yi|º]Lµ½]¤ˆ`Û¬‚çÂbz™d7’èç�Ç3køI²o©!¹¢šäCøyYUÝ »È‘¥DÁ9Ý1êÑ9VØ«Iªûé*Q¡íˆžE ÜÖâK$·B®!;Á›I 2:ì› ¼€ŸOÐ{J#ì|ŽßØÙnVÚÐ8û-Mılï&¶ôcæï¥›ZRc>�©k‘�¶ÁÑ×ÚÑú·9G?[娅‰ößµ�7Ò½d+ò­ÐÏáƒ(¥c@)I+¼›6�׉*[ ›èqÍtÆ*çè5 C¤ûÌ� \0‘©�G¾Án†Ý«¬ö÷"³^“.ùZ¢óè m--Øm4å�·LÆÎqêAßìW¦0ÑœéJ›PÄ¥^f&˜?Û¤\¼x!õôôSx±‰ï|ÐÁïÿè �K¤ û}\V8ï3Ñ;Ã?Ž1À0=÷Æ5˜Ò:Uãœiùóx ÍhLÜqû8L¦"‹Û¶¯®e çTФïcH` Ÿïã¥m?š9:Agµ Da-^ûy6' ”™¦™¸×ÆF"ÓQg£Ä½W�;=5¾Æd · DG¢Aa Na ‚á³¼êj›Â¸ñ³�4‚JþòIÍ4d¢‹lΟ‹ª âý¹»¿§ƒ-„9´+ÂXg|çŸ]fé“Ôê ØY)â3¼¼Ç}ðÕÖ£:&ttöödÁ~•7¯xf g­ž€‡JfƒI ™#¡ÀXx¾65µÐît£¶2u“�_‹1µÿ\(ï1€·£šØ¶½ýo¯/ž|ðÏ?vìã±ôl¢ÉK/¿‰â²Ç èÌס›%z-"�iý˜¼¢<ÖQ´?Æ{ÁR¼“dxù™K‡† ‰R t`PØó·ww©.…^âÌA yé]g`ÑF(ÙæÇ:V–ú»AÇw.ž›'mG–9ò«c-ª+€«òl›³Ë¬v°­¥ItÊk³òÍÔ-Ça¢£A¹¸C%ÄÖ†2‘ñpžk4Y�de’F‹Uâ…¯p©Ð\›gUª_U!Ó ÄoÐ’]ÙŠK�jû¹šÚî[ghT¨²rÏJ[%³½£�³þà XA±6�V: ­"µ}¡:‹UÃfú¤¬Åyhp— `òî¥ëœ¥n«u&�ƒ lBÓàb hà̪W÷Z  'äq¿]Іø*ûÄÜÄU+fÂÑB€³œ{@.*s0Ò˜³ülzvœä>?Þ£Å�{²ÝuÉñ¤Äý†n…�ÏQ«CÏ[ ~×7¢‹0O+*Ä)ÃÑêpqþû›UÖí¤é¹µtzïPŒ·Âw—h'Ï^£¿ŠEê8w=»;ªKxV.ÇÚ”%LÒVlêw»kÌ‚eºv0[[�´:ãX¹`Ë=ñÍyXÝ >fÏ]wªxÏsÊ–©@©ŠïŽÑн³£Ú&¥::³ÌzqÔjòUœà†ÏYäÌs`&­øªCÞ§]…Ý2Žœ²³ä¡1Öô MHi¬Šµšˆep?«Ä÷;Ê�:@¤;éf§P[V‡;Î[ðÖ½Uþ­°u`³íu”‘~|O^±G²„t \“øõ¶3ðB'²ô.íØ~Îs Þ,â•�h§~d'†å|*&Ô p¶˜$áþKû&ßÅQ0à©É)òcyËv�<\ÝËýq~eЛ�Oµý¥Ñ8Òƒñ–¨à&±^|P.É­èÔ±o k•ïJ‡VÚ­ñÝÓ7ß’Þxí5*ÛgHt�Ê/mÁÁ«Wcï…_-pu¼ZÈ?y’'Û:ö<[ ôô Þ9Âs…ROww*£:¹¯¿?ø¯g‡ ”wÇúÄ-õàú%‡À [œý¶�mgq)|Îîò$å¡—¸¤ªˆ=Îδ¥r Y&Q�½^aòŸÁóš›h ÎwíðÉ[àµtæOTZ‚OÑE_€-ã×pô›HU�.n•—@žàí>];CTR§1Av7Wvþ<ølpªºö ÈS§ò ¸µ¤�|äÎ�Ó£tN——å£W�„‡Á‹/ø¼þ�ÿòRýªcƒ+ž¡®®¦ŸÑ€©t¯œÑW§Ì;E]Š‘B·@6¨GB—ž]nB¢ò h“u«ÇYéäy›8ç=Ï¿–×Ê‹·Ñ- 2XWGküRxŒÏÜ�g´5QÁúúÿ?öÞHÏë<Ô;Ûûbw±»À6`±ˆ^H°J”(REZ’}U­r�¯otc�3“I2“ÜIfn2¹IfœI�ÏÄŠ#ÇjW¢lKb§(Rb ‚ˆºÀÛ°½÷–çy?ü"l™2íȦ,á#»ÿÿÿùÎyÏÛÛÙžÚZÛÒÂ]wÁ'ðýù”sޤ)™<—p 9À÷BÇb¬|þž Èoð®;ÓÛ\Ë:ºõ¸O&ûy•üdžã¹¥VUÙ…ËIµ¶¥e'â;Î<‚Ý $D™�H^E€u =A»PèÞ={“¼"ƒ„?V"[=¯2�@k`S˜¤’‡Õá¸0™rY”�,S÷F'2ù°v}}Èÿaø¼AæLµwÜ~[$vH»ýýÝøè:9Zá©àåòhåL/¶ðEŠL ”4À³?üÑ�ïßý˜°"¼ÝcqLÔ2I‡\™("q�¹ˆãÊI+F½¬ÞVïVî­ò¾I ^Î#*Óùþ*A— ì$ý[ν‚3|Ë„g>tßýØDAßgßàÞ“GCžü¦›B^ÞAwÒÙFªŸ?û/_^={UÏúHãÙ•èg÷HµüYÂ(º8 @â· =žI]À},!`/ÆqMÈN[êœ)EWV‡Ÿe®úçÅé°ÉÀù•´IÈÂ¥¥§»9‹.„“Ÿ?ë¬")M™ØÔÔ”:8Îñkÿ÷¿KôGÿŽ$Åh1íÞwSœG}öÕWR1÷Ns„“^̦ µéÆC·¥ö-[ å²ð[ƒ§ú ¥GñÙÕíÛoˆ½É:qèSÌtrõ‹rtœel#ìúc—XŸ¶Œú�?‘ÌÌ=uØNUðãvLS”_™$ÓÝו*¯ W@߯¿v˜c$Þ|÷ìÙ³ÓЖF9~J*O’Ç(÷Å›øÜ€m ¾jÏZÁ6˜ð¼»ûÒ¹Ô¾u[èto[Wà¶Ô]ÕËLè´íx!ò§�@±6�ßêO•L†„Ü*ƒOÌP�«¾'_€‰Ä}âµ÷øÚÄ‹ìܪª,iÆ$ñðYûÏiÙ²;øÚA,¦Ï²29Kм¶û…G–±=Œ—u7ò ÊÖàC¼jÅ~®‚k&F‡Í‚îið"º· ž‹ÑûÍ€¥t¨¬Žî�-£Õ ÕÕËó©žU×ÅcÎûQA± ö�sÔF×î„1BØÍ´Ã–�'éÜØcAö™Ä³*]Ûó“D‹og§“Gð*�Ã:xÅ °´º_; X�Â×”v_ª­ÀŸ^c¼Jl­RÍ^òÜ"t}ò™bhm¶Áž­-éDßDª‘ï¸.¬¤­[É1 Â9ð˜„ÀBcý…$£Ñ¦&‘¾sÌ#÷• {†G§ TÐYç|ºíýŸH;÷ßÈJҥγð¾£lÎDÚL¢vI±G¡§7`œ�"!b�}×^Ì_Ŷ%Àî‘%CãT`O KHp²ÅT™k³ë3\Å.So‡LP@- >~e [K=•­MÿRÎ}Øh îÏL¦UÎA¯Až½ç=tž#H?7>„L¤ ¼jßëÇ$mÛs#k8›zºH2ÓÏVñ+´DP—öõÓS½Ð/ú†v p ÛŸ¹È×¼Lº±»W¾<¹ÞZ�|™ä8ºIh‡£Ýè¼�Ç\=‹½÷Êx$PO³w#ù�7±{ì…¶JÉÉàÀ4Iê7óøaJ Ëå%’7˜Ã2>¦i’'Á“pÝG}.«a$Ø‹+º¾ kJcê‡ò�Ð1 Ê,𮦅ŇCÛ!“xŽ òu¼UöHY”³ŸÄRîxžïeI=2�":„©¿ÙÍÈDi� \Ô'œÉ¼5áÅ”¥î±p”îíPÈۼΙ¿ äMå‰<$|F%øŸÌ—÷\�z�Ýœ£rË„²B˜å(¶Yø¾x–t=‡OÚ¤ÇB‚úòvyœ¾m¸Jø¨GÛ !ëêêCΪ×è‹óÈÒà7Üïc u‚«´š¥-‘[×@Ö�%ûM›vÑeodÆ��‰6GåöÍÛÒ–­;c“t¢è@rÃrL9÷Ûµ{e¯Ý‘_Üå˜:ytz\û<¶¯5úÍœ;îtTž8xsºÔÕ-ÜU®KËa>deY�>2º˜®`èjÄhEH�ààú‹¿øÂrG´®Ö° c_¿~ý !»ó2«t´èd¯Ä·kqCF#cWøÈüžzêÉT÷YÎCçÞkéD\•ÞÖãà:~üh:~ì¸×¸L›ç©$Úòïä‰ã÷BzâÏ¢¶¤ýÆØ>;Æá> Žìï‚ô ϤQMí™×ÎÍj¯ËÝ—©îþP:ýÆëQÉý±�}:°Ê‹Ž±žîsé{ßýó8“M§˜g¡8x?‡˜YˆÒœÃµœ>ýFddÚ¶ôÅŸ£ú.*·„ �€Šœ»ÞÞžP$U”mW}’¶a7ßrGÊÎ/”ážnÚÆ¿Bfk9ôØÌËJn ñLÖjVÒéS'‘ß80H~ð/á]¥8œ¶Æ>xŸJŽÕs&Îlß¾-˜ñÉÇ¢½¢o÷EA§òtäÈ+‘±½ Ç”¬’è\œS<“7UÂ<;W%Ë6QÇë ðhjj§©"Ó1å9¶Þ¹k7Â^ƒe.päZøsëÛº®s™·¦R7åè&Sæ ‰nðE\1óÛê�K„Gž¡£ÓÁJ ¹Á“ÀT$¬b×r4ñ3@�¡¨8[ÅðæV�§:€<ƒLZÒyîX×Kþä÷T= F@G€cffFœmVâÎÐîÆ€çèg‹]¾Hª�З™óAË®¿˜³�f¨š,A)õh•„!Ò“ô£Â£©ÒTTŒ“ƒÀ©Ùù•8f†Pd®SÌßuß©ûC)¯Ý2^þôò}e¨ŽÑèè.‡‹#5½„ÏÇrsO?É�…{÷à5g"â10Y�;SQe³€ad¼íŒÅÛȈe [”Îj<¢ k¼üVv(×ÌÖ�è $͉ƒžl•´¯u\ˆóZủϾg@Yg�Fy(ëÈÔL&éá�<Œ$ž™»Tô ¢kŒû oÙºþÐË0“‰#kÔ±1øÂqÏÐ9nØ×0‹�ÑV¯’ÝÞ}i�gâüeý‘¹ì §¼Ä�¥’ŠÄ#r �‰—Á‹{?t_œ=ü•?ýÖ5üƒïx¶4 Ô§°ÄÝß3à¦k�ßââØÈpn{â·‰êReeÙçSâm?k°y”ʪÖ%<–<‡Œ½Õ\ŽŒíÆô븗÷ªCªl rî·ç°ÎÏN` 7ƒîôÞã˜�Eü#®VaˆO@®[�“¢o$é;w4‘-?A`o£˜@ kÖ~?$%“t˜ÏbœÛb¶Ý…÷$p°Ç¼:*íF óZî¯áh€Fö l…•—»y‘]Ê$�ç:ît^Õ0Oãlox¹ûiU[$/ñÞy9–UŒVðÌàé… ›œ t”à<¹UŒ÷Ô–|ý}8¨ô°¶ë©¡¢I<]ÀQà|£‚0E§‚)ÖfÒ-Ô¢í°¸!ïp}Kà’ëQ&‰p#´ 7 @�LÔcŠ_ðlmy†Õœa{ë±e¸mÔ•=á\`]‡“޹žä›âb[ˆ€W“fO<�¦¢’“u‡, Á 2IÌmgƒmN}þÄÄç®O±fº¤áXš£*Éä«îת8¯ž Â8�6ÔÛRn‰óÁ\ÑêàªËl¾Ô9�6m¡+:ªc-À„b�Ñ ˜G1¯µ[¤kŸmÐߪƒ2¶c>Ú&¥Éó<ïÓÀÐöEçú?ÿè`Ëb¯Å/uoƒ0&UÑŽ5sp[ýKÀ°�ÀHÁ •âùÐôvè~\넟–D‚†ò×sL§*�#äò“ÚsçTªKx¼„ú�ôö�·Ý²>{ìZ:n”M"ÿ (ŸäMò¿ÅèÆ3D Rš–N¯p´€ü\¹ ~ ÒÙ)ïÖ©]Ízê¸W[XùAžà™C;Ú„*;U……àì0Uº®[��Üæ–æ¨�Öç‘UÅá{5Õ) X·—�7tæº^X0åæe·õé14U®Y‚Ð*òt™{ üÎÍ_‰`’�\»RŽG/ Èëć7À7”òí@\‡z•²VýCþou¡•¬¼ ?ƒ°q ÂÌY{{;e|1Þ�\3]'ókdº–04É@ÀZš¶*sT#ƒx¦Neõ=¿/¼Wþ-J‰ ‘�¤Rì\ƒò.õD'ƒêuúI¢Ä>µCÎ:ä§²ÁNÎQ!¾ˆÒz$+ðž0òùÂX9Ö×Kµ&¸dâ‹•´êW8’ÇyÙÁÊÿéÂé ;õv“í¢¥4¶FŽï«÷gg`£û]Å�œîÁÚùô¤NÎû]§„S‰gµdnmnŠÄívç+O·s~0ueõ[m$iÛg¸¿CKcB)àV�-^ÄwLJ0Ad»_:r ai‘Ž2_™çik ¶Ó�|BïÚõÉ™"Ì â;ÑìX§™´\„Þ î.™Ìg¨Ù®ÛDí7úêå•d7Ðã¶;îH7ÝrÈåÆ8á§ã…zÉžûøŽÕèè´¬[š± A|LýGš�àóŠî¬Ï„­!í©Ù«ÝCd&':ªûªN¢ŽeñÀ íÓ¥�ö±¤ŠÄ >“–ká“ê @3ø½:„5AØÛèdËÿþ+ƒtÝÀ�¢?¤4½ïž÷Oéï½ >šè³Ž$¬ºτ̨4Å¿ûÄÅx|®]*jnÙþ iäŽùòÏßzy·{3Éq˜>Ïo.ª¬Ýˆï…!ªiËk7`c`s³¸!L œ{޲vÕ 4oËuiMš$Œ‰/V|å…òŽ—oK‡}å9ÉÚ.pa`e‚¶ÌRf‡Ég�.çº_øZ§ Ø-ÏÑ).ô5÷~žEПýÿ àAòWe•ÏŸ6óŠßçß×–(ç¨(�1ð3u{ƒ†ÚaƒÒXÜ.dd�„Þ­Í&ÞÈãE áUD’Aà¸A[*— ,»Ê5ù›Ï0 ·Š< ýÚY…'!9ãyâ¦#Éû´k–ñ°¶ ðÉ೸$› žZA Øñå+v*Ê[ÐÖ ¹CX3¿2ƳsQ ¶…›æøÊa»\¸Fe¾8Zä`ð³Œn®úògR!îò¨ª¯©D®Quî^ŽM¡c�g6Jy |žh}3ç|Ë Lª-CßѦ¯$ø=O«.£ ‰Ï¼òHt IAAábÚX]pf|YiV€h§€Â" n�-õ$°'’.ÚÕ�î*Ø:Óíò _ñÀ­ïI£]ðìB`PQ[Ÿ–ñ5ºï‹Tß—¡°+×õëh{n{1Ÿ[lá~GG3`,^*‡.Õ⵩š„µ*ÇOwö§è‚ÞKSµæé˜çúVÁýX ÿØÍ¡½¥…$¡ÒÔ?@ÂD>ÝöÐ ñwT 3ºIl³åÈWî7YE9¤­º 2Ô=VÍ�_ò¾�CŒ»´¤½ Ý #„\½´©VØ{ûÅ+2ɃžÝ›¢BŽSÐÀÚmL<3¸,LÅ—eyH�Eœ¨‘½Nü1±dýϳɵÅ®—¡yõŸ%ütácW~")ç¡û" ³LDÅÛÅ>¸^t!ì?}M‘Ü|—®@à«]#õʯ=F]Ú˜O)HR”–•‘ã$$™ä', méÜÓÝQÓNcÓVü,ôw‡9)ØVWBÑo#(v…Íêå¾víCÀPÚÏD*˜SØÿ£ý£ H]}¢ŒHDW À�öòOžaîÕq–˜mgçYÖã¹:C´¦©Oíí›ÃÐwì½_YÉ»ÿÁôÀw¾ÆÙ´—Ò§>ù¹È FËýׯ_/ÄŽó�Æ-èPIâüŒ$™�JvN¡Õ`ÒyVýXÕ|… ¹K—ºÒÍ�·†ƒJȉsa`ðÝ&‚Ä:'¿÷à·¢�’I*� 53….`8¯§R¡±~7Ù­ Žÿe¨%²ÃU”Åù˜ôê�F�äå;wí�yùLétEf׎ÝiÏÞ}´¨hJßøÚŸÐ2ð`8ìubÙ:ë�“ÇqÜ&ø¼� ü}éÜÙÓé‰'æÌôMü±ÆM›ÚCáVqéïïK�=ö`ÚA®¥µ•@ÿ´i,}±í? ÇŸps¬§Ÿþ-‚Χ»îú@ÚœƒçšoÙ²5p®Óï«@«Œr®Ð… 碗û&ü­2éÃYfÕ¼N+˜ã§O¤çŸ6ýÖo}<”ì0î®Îíòå®´sçnø ­â˜‡üBüÈáFæú?¿v�ÖÅ'ëPOÌ@Ô4ÓôСCQ5 s1‹t„LH«<ŸÖó®FF8ç ZÖðT鯧µšÆ©øþ3W< EújÀPþ�]:¹5200àQœo~ö3£üÜ7rüKǵg¢{1,ë1@ƒ"ƒæ³isGÌ7ð�Z=QùK­2ÖKú¿ùÖ;9îŠm ýÍ¡ŒµmnG‰­Jo?̸(øð^L&/E@ݬc”fy– Zðèõý ûý=Û_¦ñĵk/÷(tEäÇg»o ±j({J‡”~�iéÂ=V'¸ÒËkƒ±³TW&qCžzæÌ)ø³•?•‘”uæÌiœ'ëÒ 'y$[ˆßV[i ÷wG›Ü›n:”þÏÿã�àªô÷ÈCßËR )g¡"ŸöYàÚs{�oÌ;”î¬ZJ:Ê9*Ô�uîz_à?kRþ[AáeðÍ€±Ÿ;vä¡å™FyÀƒû"ð}+£Uî�K8 €G|—ïd¯MÈÎ_2§€³MB‰àuE´Ï«ÆF°Hê°ÑTNPKGa¦· +îO8±V¤SªJø*¿l}jf±�ç\[ã^‡S'¶]UV4ñš)‡!«É9æQ½µ(l1ˆ„W–U�\EŽª�øÝp(b¼è81øjÕº]¯j Zjp|�„„’ ðNVOeú‘mL­(¸Ü3DðŠ€#ãØ~Ë«¹¥-wf¹d¿B ¼E2¾å‹îÀY§Œ¦ÚÛùéDq¿¾ð;¿‹.²Ÿ{ B�ºÐy>=òð÷ãÌåöÕ`Ù�7ßš:¶v¤£‡ã( ¹‚Žèl¥šAƒQ£,ŒC–ÊÒÀa·áFO»°£Z[›ùÙ8|êÔÉô=ÚÅnn!AJx�¡³Ò½*Áñ£Ã}‰@²!oáäùÛê#9ç�Uýãdó‡#¾lÐDÃïÓŸý\´#û.mv—4"qnq¯|Z=Îß9ç±UyÂÁê·¿ûNް¹)ôÊ_xýóòUÞí¤ Œ]þjßÒ°»L‡$÷ÓöüêTÎϹ.À«¥ ·\ šÀ_6(NPH½Ó÷ öâ\uÍ&†.§±%^ƒ›­Hg“qþÏ�Èàüíð0žðD [‚óè]¶ê—ûèÔ†vrÙH»lƒ :tÇ x˜PªóA6]…ø#ûŽüÈ„ß7k^cy5œ²›ÛÛC¯{ö¹ƒs[â~éPx„�{uŒ{Y¡&mêXÄé›9e‘“ÀÄvóŽ�9ê|€—KÀ½c×ÁtÇ»î@—>H-èéÂg–õ à^ÑNž¹ )Ã1]ÆwW ¿ÎÓR{{+r¾4õÐ"Ÿu›ŒÝØOéXú°sS¨@>a@X‡ƒ�“vt t“>ÜC“ t.«ÓË‹£úž1Å3¢3Q¹-®Ü$Ó{Àî+)£â“#ä;ÂB'ª{H• cíó¾]Ä• @<À![I‡š~‹[òù¡ó0°®hž5�2[Q²v¿¨< 8à 2Yy•Çýòâbæ<ß_ÝCñ3‚LÌOÇŒçØgAzœ�¬IÝÌ@�¸'LÜc“~ûz–ÓëÇ8އ@�üÜ.ÒRׅΰñ´”õø6’Ùyþ|:qìX¼–Vu\Þ³}¿ ¦pFó¶íé¿ø×ÿI[“æ�o5Ñ%Ëqäë:†u_¿þé@@#Þ‹3¶÷ÏtzpždYõy±:~G š´mÐÈ5õ`ùÀfºÔI»*¤·99ú"”Á⪕ëÒ€2ÔŽ2Ò¢´ì8¶oöŠÊº8U¯³ \\Š€lXç¡|¢Ÿ†¼À UuqÏp¤(E†¡#Ú„–AcÜ'Ÿð3TÔk Êãd䀤ùuðÝ–HB"†srœŠž9Ž,°AX°³”Iw¦ÁX8àßê$òÓrx›�Qé{–v§aK°FÏ"ÕimCYb7ýòá: ß±ÂO¿M5²ÎæÊ(+Nk [Aiׯ+TÉ·�30ÖæþË‹€^Œ-ì›ZšÓTÕOèÊ7»µP¹›ùwhÕ.xl%•”ÂBþ娯õêz’¿«X¯{âœúVÖ¡G }—u¹>áïzƒXƒþ9rü™$1B1 Ïàª4®nd×uQ“mfàžsí3„| ësÿMR6«k˜Œk È0¼8iÂß"C硞¥¼Ÿ€'§¬]ø~ÞFøÒ:`Uó0±ÄGÜ´ÿƨ,öé'Á�ž¨�å|>�kb<'ŽÐÕî^ùîÔ“ØšàÚsúK *³õòv\î³÷¼õ%•b{°.÷G=žLvnç±å˜ƒ¸Éªx¦|^}Í$èÉÀ{×9ôŽL’à-&0 {ÇP¦™Ì"’—O£WÕÕRᎠQËQPÒ¿É~W¼.ô ve05è¦�/zeI¥ì-úšö·ç“/�èiÛoÛ¨¯æ$†_S�®}–Ã?u)çá¾DæÏ�ÏŃoi‹¹êIåS%%¶·†q¼qÞ*:>_ZŠVàÚÌY ­ùУ ³vñŒê‚9äÕçÆÐFá3$Ø¥ÎN'-R7]Ÿ¹¯„Ä‚ÍõÈ&÷x¤ç sä'øô:’4œ« ¢òU»3ˆW°j‚»™ìb¢ðHïYáy<ƒqáld:ÛA 4mDn(\»ITÑ:~³¾®&`m,ÁÎ�ä¡B“øT™fƒëLð-áh±9:F G×ò)záÆÚ†bfÝ_;K¦fØ[Z�·6�×ÐÌ<4µº ÌÌ‚êIÐÃ&6aµŠ`úøäRêå5s›K8RŽ3Ó'Ig/§(ІUþȮԓ\.žäçiìby@ÿ8¾É |#œ‘¾@ÁzÒ<Çô™¬ ¯‚‡’´E7¾»vÆ£ãØ[p|žý©£ã¬I0 ™&¯œd›©Ô{@@IDATXf?Z7íNs#©ëäypªž sð9åñ0 0øîc^:Š”ò³cKÖ¯ö¿¤|]´¼ïA^�/«|×$ÚÐõ áÊjðUþ'÷”Sm__gW ޾¤ˆq¼ìd¿�$œ�qÌOFh ž¥½ª¯DÛ¨¶¶ŠïÖ‚c"³Ô ®j_™<¬<Ž&t2}h(+Šv Òƒú“²Ì¯ë×™Ÿ6yI9‰]$9ƒýž<`‘9Çã|6L‚À‰,ŠÏñ<`¯. ß’žM—(וUòaG\¯2Iù#ß÷ÙŽÏaÎ&by´– [ÊX…ÿCƒèËRfY( ?"ÑÐtêÃÅøyFñ-˜D²í(cõ#Xˆí<ÔÓ|ˆïëã3y)ŠX奋çð=nAnW¥®Î3‘¼e¢DaooOØÈxXIÚ²uGjÛ²•6x#é<ŽíŽm»ÒÆ–6†ÈÎ ·�“ ‚Hà½ÓW1TmµbåékG^àTëmÜ•žmbåKˆµZÙj`NåB� dæÁÐ0D�¡ ¢uóÍ·…Àøñs?H�@¼ïÞ�„“EÅÝK�yýúÕ‡@fˆhx¨Ó’¬—p4z0./v]H‡pÌK^t.S²}s{úü羘^}å¥p¾m$ã334AE¸‚g–âùÀî_KÒw¿÷ç1öîÝûB µ²aSë¦Ä;ö§û é±G¿—žùÑÓýþ­P #¬l?®2ÛÆý¶G ]­ç¥‰ë:¼}í9NMÍ-¯DnN«Ÿ]K�?þpúÄ'?мÕÝOþð‰ô›‡o&�oÂJ‚û.œM2·O|êsa°˜ŒòЃ‘Þÿ�ßÊÆþŸý›ôÊá—Òk´Ú�Â'<žþGé,­›?úÑ�§çž{:œOÛ¨®;yò$ßÿËô±�áQ�^yùE`�Ä[yÖ¹ô™Ï)Îà�¯§Ï~ö‹œÿH«hæÿøc¥»Þ{OÚÒ±=Î#ÜÔ¶%#hÿÚkGÒ-·Ü< ÓÅ‹�éµ£¯¤{¡WÏ37YÆÖë�<ôÝôéÏ|!áYžyæ)˜n>°ÿP:tóíx:×0½ÿ7>Y žGô£§žáòî;zîÛÃñë�÷-ð•s=Ï=÷,•&Àž¬P”»I”+×m³è¼8×y†Xüës…³ ~!nÛÎï~òÒ‹�7­Ð©ÖÖæVê—Ã9eK·õj ð/““´úÅy%¾[eV�¥:N†½‚ÞãK<A>’ãQoBVÃ$s–½ù^fH©ü[e–ãW×~þóþÖ± ÜW6*øÃÁÌ×âµëô GóR Ù±kšlÞ„A8Žý¨Jäû&¹ii 6µl†·§öŽm(i%ð€ó$¼�C¹Ý€“‘3sU®x¾Fˆºµòàªê†Ÿ7í_Àg×åü[1‡wþþ›/�lÕ.~ãÈ® Ü=SgœŠzTs`h›Õo‹pÏ¡ÓQaûÌ4� ð]š0Hiûg³ÚíÈà{gÏ�‹¶aŠß%²_='ɇj�ù�y[Fš°%k¶k¨ÛÞ±}Kxx%䀎u;e¼N�Là§™},ÏŠ+¯Pô‘¡êŽŽ%Nk|ùZƒ^a! &áA‰û%�²VZéHòROÐi¦¡¢ãKC¶·ûrš81–ÖÁÖXË*#�o«d|û\õ ì.Œ+^//CŒã{Ì>à�r¾S¸B¦wÐ�A“pŽ’­½@{u«Æ âG§²k—–§ & ga1¯ôh‰³:= }³Ž XoÃé¡L3ð$ý2Hg9®cÞb¶I0²�Öôõ8äVpñƒS¤ \Ôéo{àñQ*ÿ¥5èl ÃÜìpõi_8Ä«´‚'õ°sçNtð¦ôê«t9Bîª×𨩠™¦¼?çTP–‰CV ¹?{÷ï'™àPЋ/<Ëš q¼”=ˆC8¤ï¼ë®ô/þåï…Mi‚Ž{)>èà�NÐ¶Þ ç«3IÇÜíõ¥Ï)Ø¡{©�p|˜¥í¿<Áu ã´ï£Í½ŽçpÛHQt²ø¿ÖǼ°@7€–”ïÒC$^¤(¥jCä"­þL02,? {VÚÄÉf×ù dpð3ÇÍx)Ï`Þ«¬ÓKžGæÏÖÄü­\�tŠ K¶Ç1ô �^ÂT^â|—yO'§+�Zéžk2�­”¥ÛÿÉ+ ÂYåjgݵ!{ø†�ä):¡å�VDœ³½' 2[�Çü/O÷>ÿV®øw¬…çûÛƒ¯èø$`Žã5цTÿ s´ú Ü?ÖÀVÄþmòJ�Ü“ÅÀw¿&�¥M2Á’<ñxúoþÛÿ›¤"½òÒObü9Ö¬Þóä£ÒÅë†tÏ?pÛ»ÿ †·¥#‡_G޼Nü6 )-D­à Èœsgi^9[Ã÷rgŸ\ÿ÷ƒx5ÀQ3ÇŽF¯™Š V_w7zŒçdgGlÍjªŠî›ÛÒYø€�Þ €˜,ØÙy!x´UèxÅ#mÐ5䦎úJô#y¤h¼Ìku 5*šLÚÑ™o0¢©™*1|¶ö”¾£"C �ž¤µäò�Zêr/çf˜�`Ó@§øç“ÊÐPÅHÜýJo‘TÃ8uTÚ—SI¥Ã_ùhò‰Á¬ ~ëð­Ö÷Æóå�ê\Ò½:¢|Hªì®nmÁ±™Þòì^Â3Ô½Ô#™‡µ[­lÀ$Ïs2iJž`²|üMU¯÷@U¾DE½2†µØ�CØYkB¦rKY¢n§ì+.ÍŽ3±Ú]ºRê –ÿ×q¶íò³8†ŠyÉ öÚÂ=ª[��<=’›Ð¥O“„¥Õù¶RwŸÔ§ÜØÖO•Íš„^®p5Y},ÝB½Î3«K ʆ£žÈ¼x8ûB@�çëR/•g kÊ‹êàý è'‘?««8îÈ?Ö¯�ÉPàrŽyek6H‰>ÍZÔ´[åu~f‚„�í»R’buúOÅÙõèíèÖà�ì8dT]xÐoæÎ9_t‘ú0`c`Ðq ÙéÄï,’^Ä�Z*ÕåãœvöÍ}–G«—y©ßèhwýVÈd3ÁnˆÒÍøDYðS®ƒgÀÔ ’$öÄ`FTÜñܦ–†x¶Pr6„ß3€çþ©—�”è*¶?aö6xTލ*E�®­æ¬ÅðË$�Pu÷Vy`šõëkÓ" µ´MQ®(çjêèô‚Œ/*E�€†x†ö”:±ûç¾Ð3¡Ô »Á†Õ{Æ (˜4�fà³! S/´š×¹”PykB¢‘v Hy<“ß%t‰Óßès˜Zм-äK9‡Ù ¡¶Có>¸ÉF«?œ¸™©ò=uUt‘J¸Çk°ØÛÕÉÄŸ6 Üdë®&£4�î­ðÛ ¿«ÄGÂúllÞˆ,&Áa˜ø†­¿/™ÔÉ÷ä7òuPi#tpA|1ANÚÖ·àg®Ñ#6<âH8C³ê4ƒCàŸÉ¶ ÎZb[ð³ÊlÍì9îaK[K쉸¬MhÐ*Ž#`º’÷ÉÛLÎ�OJ§Ú’åáÒÚ®={°G¶¦£G^ éÝw¾7]¢²W|ÞØÔJÂÎL$cÄå@3lj`nWPy üÛŽ~ê/ýÈqµ>Èý�áÏ¿¼�=³úÓÞRæÍÆ̤#± ·åç&Q¨ËJÂV8ºŸÓ3&!(S·Îx�zÐ4:·ÉZUì�ðž ‘uœ÷a&T´uì@¿Eæ€;êi�‘ÅÑìWUÉk+Ê6»ñ`žëkðƒ7ç€åk׿*,²8Óõ¾”KÔÁvD·”6´fgAðDc 8ºI@ÃÊ3;o8+ÍEà|ü-œéž˜)äꌪ¡Krò½ˆ'úèÕËB+»ô#äçU¥Fö¯‹ÊzùœûnTyºI‘&:+«mÃïÑUv¿ÍÃW!í¢ kã£D­UPÄ"[S¦ WZ�š;6r\ĺôÊ‹‡Iø™ælvϧ[Å7êâC<Ën~ÔEGrqÈ `ÈTðs#ƒ M»(˜d`r;©-aËåißÂ÷¯ ¢>u� ÇŒs U‡_r¶<üRßJ´ÈGFÔTcÃÒz}…}3�bvf ß ¨çä,`€ÌǨˆž�v‹óá…ýó!艡ɴžvì•ëÀ“î�t÷ý»g1=ýÐé´u×FòV!{œ4G³‘¤^I tŒ½™*Jm�ì!s™åóTJ±�>ö¹«gUê«Òæ6ÎFGFh³X%=þ‰Ï}=þØ#ÑRÇ“A2U•A/«»¿ð|)}ûÛ_O/½ôç�Ý­Ãê :>}žôéÙeâÿ3Ï>�`à¬W>÷˜‚œ ¹fqzïÍ8,gùü»ù@!¯S ¡’ýÁÞ¿ß8u’J©8zoK_á,¡>ùhºý]ïMÇŽM”wîÜÆ«cï¡’}=s}õUœB0JŽg~üÃôá,m…þ^?v8`tè¦[ÒW¿úî{9‚ý:ÌU¨>ðÁûa‚ÍËá¬Ý¶m'p½H`úÇ$³Üʳ‹uÝ}Ͻ¡�lwï ‡Ùw¾óõØÏGø‘ï§û~㟑Ôp3L6Ë*©“0Z¢`©P«è OM™¼F% I*å8›J1H Ʋ ÞÛ_Í_Ÿíõ×ä�þí•Ã%ߟ¼2\`ï‘m!cøŽ<ÝŠÒ\k>«Æ8·®¿ïFÁtÈÛE‘Þ<04ˆá–9‰lK§Ñ™a6:FùÅ â³å ‚:&gÑçLÓÉÕ;ÑÅ\0˜P’3g Á1‚g£­ê{ƒÄ­�Пէ:° fëø±]¢2Yy,~Kƒñlæï:4†\›)�‚0R”Ý8\ŸÎ]/•ó<²Ë¥ÇГùŽNd��pªrŸÀpÊ¢¥û™pÕx Ǥd…P5´.½LR^óp�ÖY¬—Á€Q&K|ºí´Í^æ–X{‰ÎFØ£ÈFœ5ì�2Õ³}k‘�:t­Œ0QÔcžÃçÜ4˜t­¬z6Ï„¾u¼›ø` ÏóùlçÞ±ÝÎæAà LºÞ®¹ˆý°BH§°kÓé¤f'ÃI Ýç¾+,ÕË‹ ðÙ&e>`>EÛí§.sž í �óЩaëNqB½Fظ>[|ë„Õñ žxYQl[Ì+}Ýi#ΗQÎ:äñ±N÷MÐg Yv´û+ +¨’}èÁïÀ<�LŸ…Wõ�M?A÷M¼°¬¯·'�xýÉ>�ØLTQà  >̾ŠG&˜ “ѱ'§Ò±—Ls$ð¹.¯_¿ž ?ø |ÿâÅ Ì#ج`ì›Ñm@ܦk Ì}rÜ@D í¾ÇÒ%*îmm&—uláîó-ˆ 8¯ ȉk=— ÐÌsLÐkÀ&¥^<´¢áêüt–âdÒšàÌB·8b+îçŸ}8Ö�'SÑ5E§´ë)ŸuzzIçΞ úòŒf@m÷…ÃV:TO¬*v¯ Š›ø Îöõ�’02@«øÞ´±m«ÃÍã¬s3¬bŒžç™~:¨J P®£"÷Bg?°#韥Aá`HV{Њ§ AöÁjÏ1æžÑë*2”3QqN*‹ÜÓ+ýüÎÍ«úJ4¿+ßsâ‚.]êJ—ººèHt*‚êAïÌQzt¿ÝwÐÒÒ‚�¹‰ÒgÒ¹3gÂÉÍ-�:�³óo3Z'À¸Ã¬3ãuBUºÖ™hkf�{v-ðYÒAŠÁ1á^JE‡wkçÚþw‚N —ºzØB×@ëCZ4×VéDÇÑrÅ!.:Ģ„ÏXã˜ð#ôtp[5Â^ÀKL‚“'°g¯Î `c†´wÇoàz„—Á0÷ß}Š}敎iiԟ³ü­pËÐ~ßÀÈܤm«�7|J>l+HSžÛº¨ƒbÐN¾ce¦lƒ:¤G�wYœ<œuÈ«l*-˜ŒáœØž˜“íô�«0–`{ì‹ß (L$ðŒÖr*ªLrŽ:´å/Q%ûs]&áèè1ð"L«©˜ª('ȽY�|�ñKy¯ªº–ïaKÝÈ}5q”Ç@�ùzØ-çvpÈTu._5èÆV+gÃ)Î2 ¢ÈÓá Q-i’¡¯ ÖŠ·Î­ˆÊ·À‚dVU‰wuõv$áøÐe¿šç/ë” ®‹ãÊ?ú("I…±D=Ÿ_�êð´Â2¦¹¹%lÞ®S�ÃÏ•�V&Iÿ<‚_¸n“gM¼3ÀgPÙ`K9BÇ`nл<%«H¢j˜ûMr�„Fè «2ËñMŸ,Á®2éÀ"ˆ8‚z÷Ú1ôD+° .g°rÙ,œµX…pÆÉì:ö‘±S'k°þ.bîêm®Ýj@«Ùm¥o’�6ŽK™ZÅž Wý޹£äÝÂ#º91ŽÁ:?7¨ÝH�‡ê%åTTƒ×Ó«Ô§òi9,�6·¶ð¤5l ‰8 �½19Ä8 Û&ˆ#î32Wø°ŽÄ4õ|d³k˜ÄžàAÈ5`¼¾½¹œçƒOÉß7ÔF vý% ÙSuŸåsæÅGö<æNrj U¦q±'âN8ea[$Æò<£ø‘¼¡ì⧔難؅A^bB‚vÇ ÷ ;éÀÎ 7�ËQà]$±/™þ7�Ÿ`?9¤{ª>"‰‹võ�§Î ƒH·¢f€‰ŸCžT~�³‚�|�]žm³Ü£Œá¦œ«ª.O·ÞÒš:Ú7DвmcEj¬¥ÚœsÏ›è ¹Žàß<þ“ÚÆÊÔ=½š^=r’9à€Æä�v''µ7<Ò@¾9G‘2kµMù$UåsÃ3©ƒêð† t àŒô¥•¡ÔL¢Ýæí{è"v{»¸‰j­'ˆÌÙ`’ç—Š£cœº�ÒMX+±}TeOÓ¦¿˜cžçÍ�S�~‘ã©nüðN:RAÜ3šë oÚ�×Uü†O�ŒñâñÑ´o?G~qv:ÕÏòÉ+ÃsØŠž«N5ñÁyŽX&€ŸŸ­Â‡&©>^ëçh€Ê¢´usqzõø9‚·ëÓ~â Ò5ÃãFú9§Z/,ìâÜñÑ”G°˜æ} Í �†äð Ú§ûkÒŽ6™«‚Ä�°‚Öf¨Œïèæl÷…4NP¾h�ÉvøŸ M“ÄèÀÃX§.’0Å^päSY£NNc† Ø=�¦¸\>E§±ÓÇÒGûŸ§o¼)}íOþ(ðÁµ‡\'Â=1~€ã>cŠ€²6‰|Ϥly†ö“2×D½8ÂÛ@2|CV¯2€n[|m©yö*Žç§kÒ‘É‘ µ„¿ ò¤e’Tf‘�&QT‘(¿Ù0BgóYŠÊл´ÇÙÖ%/&ÉûÏdy‚~!åu$I�W£ø óHÑÏz¦ f¿„œ˜£µ¿Çr¹†Eà¢<Wõ i+CFqé)‰–ñÐG¾Ïfý¹‚�*Nµ�”E&6®F2b ÅÎSXêÃn¥ˆóìÇcM6Tô¥ÂŽŽ­áhª�aÙJ@àÉØœ€œ+2ú˜˜qLHnÅåÀïô¥ÓBs…*µÎógÉ&�ªñpðËÄ@fÛ©©0� `?•"¶ÀUQÏâRÚE Î×gp¨xåd ¤YïíA:‘ìQ‚ ·Þr[ÚM;]çL™~çáðNïïâós{†8¯ÀôÒ˜ð3™‹Âw×ÎÝà gâ`„³�ó>B ËÄ 2éäpFóôb×EÚMµG+>|î:¦t8ßóþ¦?ýÊ—Óƒ~�ªž;¢‚G¥×û(«!>H°ùðá— P?MkÚ�Í,“1G“>WC®µ¥�ê÷ŸÀ0 Ò{©Üö=Çs-ÎÇû Ît~ýøë¡@|é_ýAò4n¿ýNþ®:úÔo1=ñØ÷™G~´GÝ»÷@¬Ó1Ì~–©ȸá†]é[ßújþïzß½T�ïZñÜöjœH›Høç_øéë_ûÓôØ�†³ñ“Ÿü,† "‰±ÚÛ;Ph}Â\?ü‘�Gàü;ßþ-ÛÛÒ{Þ{w05×à¥!´xÞ|ó»Òƒ}ø/¥ÜûÌûÝa¸)Ü„Ý*Bóö;Þ“¾ùÍ?¾L«Ånªì?™Þ{W6ž Ÿ°k (y뭷܉óØÃþòÒÝwßþñOD§ƒr÷s{s‰=¥jX¦+Î\¿~õ!ô h´ÙåäØë¯G«aimÏž}áüðˆ…®‹�à­„ ò;ð™cbιsçBYn$ak”lC«¼¬ÐµE«ŽiÆÖ;â•4�£ÿ·‚p&ó4ˆT]ÿv¹¥¤·5¤²Î ¾3gÞü÷¹fIJ¯oõLß÷GŠ—™Ø\É: ©pWÁ�K´Ú�È F285X^}ù‚S—Ã@%Ð12r… Ý®X¯Õè~MM¨dˆü«X×OP™Äààyׯ¿?rûs-ÅqE]Ë÷uÔ æ,ŒéŽ^¨ÓÇï°›ÆèÈ*Ug8ÇmˆWØÃ!œƒQb`bHÇ÷™ekKÁpZðÛVçtO3·5¤!°(*’u¼é´°JÈ€¼ŽÅjþ¶bf ÜPC]â;(å¿:z­25[_}¶¥µ5�¤7¸e«ô!’›tLjHˆãþ¨çj�ºêjÉÏY°òM#Bœ×¸Õ9¡‘¡á¡¼¥Cƒ7Ò¢åÊua§üÕ),ÝéÈTá÷^¿£±¤2 âï̈ÍÎdŽj)Ö[‚cÜ1 šé ÐÁ]JËyÏ{þ²+gO²öryÜ«A¼ŒsÁ{¬†÷5Ó=¢§¨•í: Kã˜À+kí¬#¼ˆ4\ %+l‘†Ñª‘�QȯâBò÷ß=c�Àª�õrcDVøJ…•S:/¸-öV§�ç’Ö0¦{TÀ¬(·•¢p‘gaS…ó‰Û0”àuÌiQ.ëÈ×�º|y�}£V+ž›¢õ¬Ž-õ†%Ηóm—ï�{(nxßxh5RÎÉ¥ƒýðË/Å·ÆeËe�ºâ½?îÑílÿü�o“åßÈXeƒ{™¿A6@¬O`Kêõ…€°ÑA#Î=ýäñ“{F-�8êI&ÒAbE´ú—ð²+:[ù.Û.PyH±�eW£ÓÄËßÒ¡ðÀÅ|RûŸÿðL÷ÞÿaZÒïKÏ<õ$miçÆlýîwtT×unNà´´c�c|ã«ÿoŒí?ëp€E’¦ëÁ‰èÓ½Ç=S�7~z7Éžà]æ`ОÑëü¤¿'ÿð¬î%œ»…EY{àÿõúC’Gê"8­ó×'àÏÑmDõ=H.]ÙÖSÜšàlp“2Jðþ.âH‡Ðß„v®c‚Iò�žË=éü�~œ<ý½ý1Ó»’ñ¹-Þ*À�°y�«ø!íé\u�'ß8�íx<¾ã?êÛV®ƒ‡,&)he{Š$·ßûÒïÆ½m›ì2cRœ&¼t›%T¬P‰ÛÇ>øò <äïÀ'Ü8Œ+~ÚÚîÙ§Ž¤<Wx7¢òÞJniHÞ&>¹þ­“G^\LõYð\hÊÅj(c Jhû{É[¤=y…x§óKžl[½%_>Æ""QÈ}b|ù®2_GœÏ”ftlêÈÒ©I0žÍë3}ˆU›:+ $Ø¢Õà—ÝfXiÀz^¡£C~ËÒ9~,VY©#(¦âÊ ’ töë,S·æ¬A¹åw\˜ëױʼLb}&ÈpµóÂq à­htÏsŽj—5`P‹m`¢–NP«²láêÚä¯V$±e±WÅ<³Úò¨‡»v‡“ýò©7Ò¦Ž­iµr%8èq %$æMÛ°£ôÇ(…ß Ï?Ëšt.QÅþHT¦«ƒÙÒÙ ¤ël€äô@åŸ2Ù`†÷Å>òÚ÷„™¿¯•ó×þ7_ÿç å£ÿ×ÖÕG÷‘1º»Y(žšì&²/à.²OÜ4(×@â—¼kdxÚ)'¨R™ZÁ�AŽ 0Xn€{’ œUgêó! Ø@Gð Æbä ŸÁ‘bž¥ne•‘󽃧(»¬’”Nx7’| úFp€÷åw[ЛÄ�à ÁƒÁ!èÞùjkçž§Œ“¦Õ#tf®€³ôÇÉc¥“Ð'V÷Ižeð)<]}ÊývßCò=E]|RW1H_„oʹ/õSAÈü}¾íˆ-ŠPoX#(*ò t¨ ¨3 ×à-0;ù¬s0(¢CZØXâ^Úù€·ãYÊ íÚ¶Ãÿ\ßÕ©åû ×ï_½Ä‡ØoÞÑ”½®Ïd'iÅõΠË´W>©oTâˆw}Ι½r�wÈ¢€MÖ� ´`7Á:e°RŽ!fW¹®CÞ=°µ¸u“‘çLÆÄ�-Û¶�ƒÀ—×âL6ÏLžh‡¸�ú¥Äi×h2˜ó6('<…�ŸéügI‘„¼›À™4­>öã„ýqu®Ò˜I‚ �Sî2áÕ –çk7˜P`;m®.³?�ÉÀbcS#Iv¬`½âÜÕÏ£ ßýwÜõ÷V=†_±Nß·B[™$�”ÌZ@þ{öµ5„£saÞâDè-B9£¡RL&™äàìÕI¤iL]FþVŽ,•wYµk’¯ø‰¥ÀOyç È“§ÉWÔÔ£E²Ë]]è‡ÜäøWZ’„«û쾩g ²àaŒk°W:s/åsV7z´k{íÙÈz&Iúú¶²”yig^SÇv ìX•j5pð 與�¶‚Rz�5€see&P-I’¨­õ7l0“dxž¾–.7Ï¢' @�&Õ…>ÛÃÙÇìí‰7Î0×ÕÀEqP=$‚ãî—¼ÛA~a@_^c¥­>hí"qS¸¸ïouy�û>Bð;�Â;Dœ°�yE5U½ÜƒÑ:�­Æ}­]¼8o·¬ªK±K�Ÿ ê´WúûƒÏ˜Ð-_5+þ!½Ûn¼usÇ}d]óØ[Ï\_¦ó‡]}ÆÆLî¢*»ÜÀ·Ç�¨4Dw ‚ÇŠ%ù a¼,!Åê”VÁOdn®{‚çÚíh†¤�|& ó hR¸±ÈºìVâ|”_Ú"y¬A[C\ñŠ”ÇÙÙÈ[›[%?;/Nr, S$9y܈øìñI&†§2!tÆdÆÖ›Aþƒ}f #áG” dì+¼ÀDýz‰äŽ¥#ظʇgˆ³Ï•½ò¯ð!ËúZ;@,¥'9½öj71„uØn$G<>sñ$òåDʧJwÇÁ=çÚ‘NÒ™mÑÀ¦²µ3�þ;GøìòmyöžºFç1“s‹9RLþ71t‰ï5§ÒºLc7r>ö(GÖšd�ËÜGÐY„:y`c|˜¯DÅf/à­vG¨b/§fH.`ï©h·CV}]Ÿ€×4—g]Mƒ!wŒsÛò"¾!æuútošÒ¶\*ä<ðIx>2…à²Ç*¬rÏØ8ôËë"Žº£8žöé¼NU�ÔPmÍcg\¸4½µ¥Ûnmeº¬Mr ¼ÇÄås“ig”Ûí!oy ˜x–9¼VB�ÂôŠ�mèÊ o_€ÏKLÁ7�Ÿ<]<ÖOaW×±J }`€"ßBÛ˜ãO�&gWÀ!ÆSxŒ¡¼Ì1´€ËH’V^Ít§cB•:öЦmíi°�Ä‡Ê cP>Y$ò< œÀÍ8¾Š‰i{Åü6!÷û(¯sþ®Ë¤2“†åÁÈ×ï^ßRFhÏèÓ3A‰&ИÊ=úÂ@ø«ÏW·0¹�g/dÇÚ�g� zo/úŠ1Y|.À§>¢?�?CÆNq¦y5|VŸ“úƒUÞñaaÁ?Š"Ù¿!{g ã+)gË‘Í&é+#2ýKƒ{‘%Nëó};7˜¸U†mUNG¤R`[F2y¦ïÁ'ØS»·ôôôÑ|‚GÉG´ñ6ÒUD]šã+¹Ü’ e¤ÛnØŒß"¹Y᧤B%ý,4SÊÈp`ïôs� Œ¿ôâó îZ ùT Ì_ÃQãÒ …ÙÛÝÝÝÁÌ­þ# eK޾2S`GGG»f*M¶±=³JåÖ-Û!†‘ôÀ·¿š>ý©Ïcs¾´Š-»$Ò^¿~µ q+Ìeˆ×^â�ûí�{_�bb¥“L®!tí•13•Ç•´ë£2Çsd64fÂ5‡7þVɯ_ 0?úèâoEH%ˆ‡Å4œ“Á^&£#[Ó1ªŠö’Qø×/çå3›[Ú8ÏüÕÔÒØ™q¾çåóTzC¡ïmï9D°ãÖ÷ÞÏ÷sþ�Ê<¿£âeÅkcS[:…"·sçî`"‘ …`ÕÐö>Ÿ«akÖ¨Ì|Ë–­?óÈ�cÙʬ¹µ•€Ü™ ÉS8(7œ¤Máë½:G×?ˆáý$ 466Á”+Ù¼WÆ·{÷žhs×yþ gÄm†«gëW)öŠ1ùí‚§MâÖmQ½¯€”ázŸsW‰ßSlBX>ÿü³éÆ›‘Õv€ygÁBïqŸ¬޾톨(¶B覛næ;°Î]fìä'~oó–-áÌW©µÒÑùçöݹýM×Õ!þ¦�®¿÷KqĽ×è耳BQ¡µ¥5”fÛgÙ-EsñbWÚ_Ø»Ï.Û;gô¡qÕ“V˜7`÷,)ƒ­m›Ò©“Ç#;Û# ®kL› ‘Ãó·Q¯2nòVw½ù~°>èPB¼—®y´ï:ßÎ%®[9ëú4ºäfz×@ S¬idx0œŠ{ÜDÛ¶íÐJ?Jídjß¶Ù;EKÓ]átÑXTÙ”^áŸ: œÚîMÇÈÛ�ÏÛ™ó¯Ú=×Â&Ç{rïå^»æ,È »z圆â•zà ŽIÏ ®¢Ô¤ Ñ‘¡P¼MæpG þØÑGÔ0ûx�`µUzò×:2=½tæ˜çËñ~œ�„²íke›xâ:•:T”{:õæ0à4ÒtÙ‚“·qteÎ'ña–Œêr À Î…2˜:mh°Þy÷=ÈzþÎ-^_ÕÝ8%f™‹ŽCϧ3x(éTQž©(ÇB”CÈvù¶:¡Ì=èˆ÷ äåÓFË$˜r7*üÓüdLå A¨«¸)ÞêlÑáå:#`Ã^:lÌúvO`Œ‘x€ c)]ŸŽŽÌ™™9«ÃÈÀH°bHº¶5«tÇ1_×SŒšáëeœyœ!åÎ3б§ƒÎ ¬ÂÆ–¯¸äXˆÙöì s]šó&¬-â„pÕx³-�zó o:“£¢‰ÏtzLãȨâù•QõdUŽ5ð'v¬Yc/œL@ž¤7Öé“xœÎ‘tÿÕÛíµãGC/30Ïä½<÷»Þ >å>›þËÿúßpoæÄ� ÑG¨Hß@µh8ï¸×®=Ec6¶"�a;víŠ*rÛ…‹ÿ:^¢2E|frâª{¨cIþþÿÉNûn’ˆ¬¢9zäg˜à°ÃÑ@»~ƒf:‘ã7chHzidòw ð—>¥/† Üqí¶$ÃmŽ¡O>üöøÃÿ%pð¿ÿ·ÿ–ª FnfÄ?:žým;Åèx„#^]ÐÀŽAþõû€|Ú¶Ó7¿ùõpîÛ6ÝJácë}íÄ{>po$Zz©žE¯{™cy WZZ¥_�€n8£±mBéoî TwŸ¤úÿ�O¹æ€)ãìÆ0‚Á[—ëX^‡sr�6ÆžynõŸô£Œ4!CGg)û"Œ üÚ½¹¥5* ìÜd¢Ï�Ÿúa8 ŸO£-%û­†YHt¨guäè`s\óùìÁO÷>(^J:¨WÜKy$ëßÅË«kYKZùœã8²jÔ¤ŒBÿ É32¼±� IÌC謴âǵ…ÓŽÏuHú /u×dûõ ¯«dûhÅgÖidgN$¤ð=ß3ÁA‡¥NÛ_Ë�tʘ$|ž±�_vÙ^3“…Ù\�!¶_Wçùà‡Ò˜øü±ßù]溚víÛk¿ˆ cÅ¿“Õ7áQ�|g�„¯¯ýÙWÂo!¶Àêzí²ZGËG6·w�w`ß|w.Ú[&d ר¤b þ2†çæs|óêäÿʯku?p/sï]û÷_ùÒϼk®nÀÏ|öëð†þÖ Ìí<°ïÀ!è³4}õet'Îj†öÔ Ä}éB>ÐÞA§*ø›8SÉT ³ßïzÏÝ8M;ÁAºôŒáŸã ïõ$`©0ØíÇ�©�ãbZ�ªÇÄó™,%ô)h$ˆ8/s ~ò|ù„I_&€YM(¯³¸²t‘>«åЬ2-‚â¬CÛÜà�xå€9;:ãñ @Óâ ¶µÕJv²0‘Êm^&õԢÈ6ÙØóIÅÍœü^:}ýOüt 忎]y‚l*£yŠ ô@ƒ^òá\ËÊTשüp̬Ržµ1®ú¦ŒØ¤F‹N€tbQçò^ñò[wf Hò{†“o¨g#ƒ Eê!¾TŠ”‹p¦€�úªk3 bž$QÐaûSy™üÇŠ²MkeB<„Êoä)ÜNÀ½˜“ÛAÝÂãn fÚ­4*›Y«zµ’¿Jƒ>·ˆ1³çXý/nÊ{‘¡,P|’¢Ã�Gu[³ªWðÝ,À�uNÀðļÔ|½ðfGù]Lk^áXøÉо¢’”à‚ «Å fËÊà••#ÉÍývÍñ<ÆôYÊ9íõȸx¼cº.÷C$S6›Èì|MæS/"'„5*?±[¢‚Ÿïó¾AHõñ^ Ùe¦Ò º8Àµºª�=œÕF’ÎÔ_¼?ì.puÍKÌ#å›Ü—ù/MþÕ§Z ®:¾p° ³|ÄĤmè å¬U[-pŠyú|×â:�M6/Þ÷5ï»î¨�ÆvÝ0(ïò¨Bî1Á4ì/NòCõiJ>:Vð)Ú³—Ë¥3[ ›@WH÷%÷ÞaÎApSé:[¯�$*‰+™7A]�›Ôß3G«ïz|ê°_µ›fèb×’Í´º×žR_œŽdñ, Z½Txfxa —d x„6€4âÚs0oyÅnq¯!g»‹‚X¶‘Žâ‚]AY8cd>TˆŒ9ÑBûz�°Ñ65ˆm«äEöD»_Þ× Tõ géÐdˆ&“’‘GÅØ¤+8v¬¶Öct–°'Hþvê|ØÐ¥üÇ$êªjÏ#§òšÖ†·³ÉÔ$øG@Vù í©Íj§.ñjŒ. Ò³zç4{a¹{£mUäÐ�üA:µ ½q/“aÔ…]“°ÐÃÁOñØK]�/\ÞËjÀtÄSŽZˬŵAØ-ÝW¯¦%øèè$IÔtaÞuFø1èM7Ùö‘ž%Ø»JÀ¯>]ê�Hã'‡Ò¾�›áÑ‹tûH̤ͯ:ŸIȦ|ôlƒƒ å?£bÝíôØ0¨$x�ÉEÂÜK›Ûî�&{äÏ_J�-Y¹˜Fz¹ÇÖÛ´÷§5ûæzqrùN¢û4…O`:¨*'>0ÇÈðé<’ö�çl5û)>ðpžg�{–=/bo·l[ŸÆéD9peh�å¨N¦÷ßÙžzû'Ò©#Ó$’ô¬Ì£Åü•ÁùTMW‹�TpGU=C–�»sìô±Þhúì|è'ùeQ¿¾¡.S�>=ÙŸ6´ì?‘iÔ�šÈc2Æ|šëÞè¼íî`A¥<ÀކqÊÏÌÏ Œ�&‰›¨_LÇf¨²ŸÅï4MÒ-ÌáÅÅØ4ãˆÍÓeÖÛ;û(�_>¥Ì‚ï�0Ìqv õT©D�Û6n–ð*:öuSŒuö$vç@*#á2'Ó”�‘mMä_@ƒÈçÇ6ÂAÙ+ä-ë鹄AXÍÑ*[']÷$Uܵž¡­ ÁÑŸòo¸zý]ðÊñT äQ¶É]G Äs{Å[i4 ¼½¥©Â+GGV%´mjÇÁD2ô°¹c;’Ê<çÙMÓb»ú ç7ÃÿTÔm‡fu¤íw[ÛÚq,Ž…“øüÙ7ÂÈ`àì¿ÿŠg²¤ÑU¸òÚ·þ ⾫0,ÙÇÙwTXuΘ ¼EÑ´•—г<Â[áýü\FA7sœöúý1ŽÎ5ö¬ÂÛ€3�€úúƒçj¬ƒ%ÙóÐ!ýì"-±Ô'm9¸D–¯�D[Ii4£#ãPئE\‡S•‡Å8 'Q¸å·¼q41?Û9)74~ÅçkJƒ¼cÞö¿ž ®ÂÞÜÖJæ~T�J_¶Ëw767§A\ÊV³¡u~07�Ê«9•£êÃ:Š­èPÞ¨OH•Fs _Øk8 Wçêkå^öÚ±¬GÙç??W~„�±ÜG/ï&>GÀyš`æºgæ!ýùŒ ÿ«{ç}Ó•?®}QÙ„>üÓª楱ã\Ìš×)ä˜V¬pŒj+`­ã+Œ æhÐÓŠ$Љ5ãháYtaÃ`™ã ê œÿX¿Æ¶UKÎ5ëh£ãN|â�Ì¡4Í1~8â'ð’¹i(/O�m±ŠbÆ:¤@?>‰3<]Å8N|# ý‰ïGËdÖ«¥asc}a€óE\î�U¿¾wñâE8½˜‹è^fvëÀ4C}V{âQîGç¹3qæàÁƒð9îwíœp Çk\º|Y4ÅŒ&xH"I‰LMMMé|çyô°1œ>MÞSÐÄœ•dè3oþº48âA\:z]o?gÃiOìÝ·?°â�ŽÔsgO§z’1�£ !Žá<âÁŠÌ±ï¾—â41Aѽ/5ê5Š=ûÕÄßÝ–"C.¦ ì–*ô2“:*hÛ@„²J™1Ö3–îºçè(‡Ò7¾úgA'ùÍ–¶nÛž.œ?ý÷@Ÿeé•—±4œÅÇ^žØÏöö-i'µ&J?}ÿ{鱇Œ3Ø Ä«‡ÍR)É£€ö›xÂ~•¸—yàkíV5O¶`×I ØjÒƒ·.BŸî}){ä5£ÁËZWq”È+¢z ¼^Ä Æ–^…M!ãjkÛêr®Wl=äߟåDÕérI*>ï¾4ööÅŸcÏö‘`З^úÉ‹�cùœQè>éèjmmãì˶ô©Ï|6öG^}%ý?_þc ïMTíQ=%Ï`êùøKákððTç™Î@ñ@'»¶‚¶©—<"ø±ûÿekÖq°´‚]5øw(€U «¢�é* aâõüÁpJÊA5�ÑXç9sÌÛ•´4 ül›é“²÷¥-6�=Çô¸L¢Ž¼LÝ Ä ?h¹X‡2¿�‡­ÿu,ê ¼Ï¶:ž­7ÅÿtŽºFéÒ®ÚZ7¢í>sÚ:msk¹ *~|_š”w-ât•ŽÞá‰@IDAT…§U›þ^b]~î^¤<»JdºŠ8$¬}†áƒút0YU��σ€—¥& �Jœ>ÚHâä�îE-"ñ ¿Õq¿ŽyòÈÀky(U òEåœVÎ&QW»H;°cû ÞB Ï¡€«ÕòáÌI¿„£f;É�tèáÞÑ‘á�}Vl]Áæ²âñ<�öªàoWÀA²áÒE:±÷õõcG‚f•î�|$’ ¥†ÎÅ„ïÈ·\� ½&hºßò a(ü¤»ÀQÇÚ2Ÿ�xá”ùœùº®;³™2».nàáî彎OžNG>óýÜ=qãßóq)';ÿžCü#M"6ÐEgDöHD'“ uŽ—{†0¼Çà­ºÍºÖ �“ lˆuYqÞo�.Læ9üÒ³ÉcÙFGòq°8‡W€ÃnšAZQÒ¤Rv!p Ôe/Põr/|¦²Þ³ÀeLîÿÉ�Ê)«É˜hŒ#¬m%í:JÕ¿ÀÇ�/È?uPºï}ßgÈc¤·¨–e¼ÕetEèÔ9‹-&dªóø°H¸oÀ?õBå�kò>uRé^¥¶ˆãÇ\ugzI�ÌAú4QY¡DgÐÆ¹I烃Ã!´©C”Õ—¨lp�"™�gÚQBW®Šåê‚PÔ_}–sT? }�9Gp<*¿²sA•¯c$rŽc·xŸëða®ÃÀ~$40~ÎWáúýŽ÷eŽm‚ŸðsùµÝš„yçÂ9>C§�GgÇ’~K^(ß±�½º­:šô¯?D8N¡»øÚDAƒ"âGà ß5x#<|¶|Ð*ÌIŽÒ¹LÒWèÌÓg¨SìWÿRÿS§ðY¡/3m;ç#nDK}dœ“3™Îœ:Nêœs^ÛÀ}u~.u°[üd²”óñ>ŸãMÂÝçËí8ã~ ?d>ÃŠÂø>>#á5Ãܵ�|Ì�, |€ßúà€“ðãù®ËsÝS½AØ(£ÖÑvzŒ6Ö£$»x9¦<Ò9gº}¦×‹[v§*ÁÎW-àú‘ÕSôQ‰KòO÷"“¿1¯3f烿Ê/F‡9^î%õ»A_.˜u€,±n×npÐñ-^‘® FÛÉ©¡~=Á(’ž‡8†µ-cóIâŽì¬ð=ƒ9¹wñ|ðFZÖ.> wç(œBV„¾dðÁ¤gä8ã/S’Ïw–éX@êAà£À£FVR±´"?(àg�y0ÙÀ«Çª_'yÃê”|#ûÎQ®ë»×‡æÚÝk�ž±‹”ó3±$|·œ±ì¾ø¾íýCNñ¹zŠÕ¿™ŒÓ?¯¤Ò;p‚yÉ dzÙ½¡”¿M–+ÌÇ" •áià½sc üζBÒe£¼ZJ‘޵±Fð3a �âºýÛ‘gÍ×®oˆnžÒÑ(¾Ža|===iÏÞý�¯ÚÕ&ì¤m@G°:Rߌ }v÷÷âoñ~%ÝØ­Ë ÔV ³Üxsº…dÐFtuÊ·#ƒÁ0ÖC1Ccˆ*c‹=„ÕÈ@/�ÚVZè×@‹t}+# <3…½hÇ)…L«ùÞ ûl¢®pP_·;‘4ïžO�g÷ËOå3ëëêY 9hÛ*d�ì3IÙ³–KË 4€F÷®~GýdC•¹±�ÚM&©Û‘Ý”=³r|š#´¤}eêiqW–éê”ÛÎÒ—ÛµÖÂgMPR“÷Èœ£´àçþí\Lö’*« È›4®lØHÁ¦‰WâÞ,�_ÛÁëã0Àœƒzø¹óÖ˜0S¦f là§û(OGñD/É’Õƒ´}´á•…ú+Vñ‘(¿ÊÁ7ƒâw ß(Ãíø`cj[ñþZVåíÚ‹L>Æ”•©Ò˜÷× ÇÚ¥a¹–·Ø)“xÍ‘p0;?A²8ƒm° Ü[Ù_È êWñL‘Tv+cš¨l‚–2Ãý÷Š™ÁŸÄ];› ¿ö&Óq¡ÛàÕðc>+)Õªí—%…slC¾…óçN¥öŽŽÐ±•ÆÐŒ—Û=ªçÒ�̉/å®P¸DŠ “PfI*tTðdhÞóN^n^dú1 [6mÀq%³S±Ôa*ƒS ÂË—."€.`Ï�Z‡¹)œ*/™q¯CA´zór|&³„γ8ï­\Í*ž Ò=¸?íØ¹'TVd©è唡7G¹þ×?Eˆ ™¢ˆÀ…±é@ñòýœ²´ŽhxˆW*gÒP]<[õ7›[2eí*])­„Ráko'0~ô•ôìsϤûïûHŒ™D <ÚµkÌw%}ç�orÖø³-Aw¶Ô¯U`ÎvžKåø¾?ÚR£¼jÔzÒ‡ Rm'17„¡®þ£ão€ ¢F{5 ú42ÏŒjtb”S(Ü>Kç§8aÖ7Ú-{D0�yh,ZQ[‚±ïÚtð#StÞš¹Ï—‘£8sp6˜[J@jMY§ �[}®Ýuyþì ›©Æñ,pÁLí9^{ö˜�”É(m@wóº“Ç�‡¡ÓÙÙ´â˜ý—/¦»?xo¬ùÁ¿ŸÚÉà.eœÕ$}I‡:èt� äk<9¿šÚõè…VR˜Ùše¯ õ3› ”ˆÇÊäYŒ~·Ã�ôÝ>÷-ÚüÎh( B« z†éð0•ýОNÂeŸœÔ¿�›F žZâµ|WÃ!Nµ‹Ës/¶Z³-–é*�¥G±FÏXC§WÑ(ó¼.uòa¥FÒ�ú´{#lòxßà¶¾:ÌJ œ9ç¨6e•YÅ÷žbN:.VÑ7üÉ[Ë™~AgðYå™ÎWƒm’5•3W±Öý×ñ!ülU'­¨ Ç7øá]1žíxù�Û€Äk†Çây>úÂq:OõÈlŽç°õìÔ£àËî�É!9£Éý(fG9 à�ÿ¯?Ьcçr�Hy=3;�ŠÁauõBõ{ÄKl§OŸŠÎVá æŸ%ѪÏçb¥2g/éÁë[ßüF$uèàצê&IŪCo‹5wƒYvp¿Ã‘¬ÎÃ{:™t"ͺ?|A'~8¸}ïéxö¸Ïq{쑇"á1ÚŽó½H>qo™wüï/~¼tÔt“(0ŒÃ_Üyê‡O¦Ÿ¼øt0̱c©Šµk󍇿`­!zyg2âŽZ‡_}…³Û²LxiÂqÝ_i¿€³ëäá|"™$ª‘Á‰ Œêÿ�?#PÀÙõT…ãý*Ü„±ÆµŽ°|¾¯Q­ãj•ušý¿¬rÁ÷Y]» šÌ—­Œª!Ád˜€Ðt:2�~þܹpîE×Ö°ýÿØ;Ó½®ó0ŸÙ—of¾ÙIÎ É™áN‰’lɶlÙ–dÙ’c»±ÇI“"é‚¢¿Z4(ж?û³@�®hPhS¤IÚ¤IÜ,²cÇ’(k_IqIqŸ�œ}ß·>Ï{øÙ´âÆ–´•Ã+ gæ›{Ï=ç=ï¾àè~;7âwù¨ŽHϺwŸÂ!‹þ¬S@<Øâo¶·ó?ÛØ™\dbŽÏ™p4C"¦—ú¥ ¾æp(øN_å%ø>“JFxîkü‡Ì›¶ùâp ºdLafkE+­Y†ë¬:óýî-¨%ÍÙ2sܳb¢£CºÇ¹°få;Àá!:PËq`é0OÛ¶àeðƒSâŸNcy�-à·Èð/ãldÁeè�ÿ‘ÏÎD»GèXÇ¡z¿0‘®t’¢”¨0Œí<àz„�Nx÷Lâgòfƒü¶HÔR_OkWÖä8^Úøž k5�tú?[c n ~PŽ./ožG¦i·ÑÍÝ2bOŽ€`;ø/0ƒÅ˜Ò$ìÝ#çYÚ'÷DùNh—V�+L†™(Wqââ0óaª¿À³ÿœ£Ÿ¹ïò  ä‰ÁyeWWOZY†ó÷XÏx=ûÖÉtãúÕôY𪷯/d‰Ý\„AWÏî�ûöïo}ȱtÞÖ!uîÎSµaàÄÄ+ñWºõ¥W§š®»Ò*´ªÎä:®^¾]±NÆhá¬UõH;¨DÑv1¥¯G³t X �怉üQü´{’û•�|ÂÁDh‚'ÀOúð™ ! ®ƒÝÀ~NS/sâXðŽ€9øÂ>¹&á ÿ{~òÓL‡|ü=—wgòŽÒ“ßsË�ôKž»JÅß{‰·NÕýÿ‘/Ä â‡ç –mo�4ÚüÈ –•ˆÊ¼öu“ „òD_^Ù)CƒÏÝ}÷]‘ tcäZÐÈ� a)�–Ø TìÅOiÁÊo]”Êá­#Ô �{¡ã_yç¯Çþ kÁõ  Ö¬ü ÚÒ¥êi?Bêñ¾7*E+ÙÓ¾'ó>‚ÌðGá™ùŽ0OHö�¦Õk ü´r,S‚%h.åCÀBH nñ>1\tÞVW‰cñ³søRZ¨/©S©Ë)W=¦càÚuð½…*+‚ÉÊàdw’ØsÆ·Õ±ÛïâÅ‘HO Þ„§oE:P¿ñÕâ¾pR{–oº^á$ ,;”³1±®�àD[[+³d¾¬K�‚ð\À]òHÀR]Òq|�gZ+3/_€K—žóM›`ºðç i“ V(W„—�Dù‡“”&C^ò€÷ŠÃÂK½Ïñ·à�:×Å å¦2Æ¿;G“ l m%�´ŸƒÆnú¨äÞç˜kðü¾3ß¹@1†rDß×8z´>qÓ`ƒ¸/ŒÄ aïúƒ¦ÀQy‹I´ò"»Òˆ[^Ê «?¹1î�€{cBœ÷8פþëQF®M¼ÑÆ(@1p§Þ¢N”ƒöÊvòð&ñ X‰3"¦c‘—{™ô.ï2 ÊÄ?wœ“ësŸÕCÔÃÔÜ;í×/î˜ 'l´Ä!×­}!çîÒ”AŸM¹Å{X›ì3Ñ]Š±Ô½…•Bܽ�–´; pH7vˆP^*Ý»˜²Â£=†|ž@C$ ù~ç …ÌG™n�/ŽdÚüê÷&*«à�*iÖ­ï<1oÑštøÌ{Å=/yŠz­ûhŪW8ä17Òû"6âÐ-‹³â‘6½4ìÅEç"ýˆ#ê;�yÛ¡L\Fü!Õ|š&¹ —e\Ÿ‚(ØWñ$ó:ù*9Öɪ7ª~�•¼VY) èë3Â=õ3}…ÎKî$läsóiÖù2Wƒ<¥Ëäo»Sªû ƒH–Dgs¿…‘kßBʰvé¼@U%·¤9*6MÜ�Ä·Ñ‚­&í˜424¸oeúöˆAi÷f”³xå‰êNâtYT8ƒì“¶«kj"€h¡ö¥û.\ÅõtÅ]<…dÐÛ´i[fØ.¼v`MP’fäžë½‚|2pe2Œþ„ZÄSmZir4hgq‰µLf„ô©¦­ Ö’»Q¸›‹©T×BòÐÜ4Gy@3Ä· u8!åWê7Õø  >ƒ2ÍÈù{С{Kp×ä4; MMyæ5I´¬½ÎvÙ´‡—WØ�ÊXWè35­ìQH`ÑF {Œ êϧ]‹ºi%ÚÑ6šM“·ÊKÔØd°Ù‡úŽˆ" TR¹g_‰çž/òî%Ö.íÔÖ’äÁûÕÇWñµ�ÈÆ4ïÙè©×ÞH†9‡n¹ÌÜjåè}�EÞíFÛz6SþRÇzÄQm+ß ¨bÞÑý�} Ÿ8µ]Õ@¥/…‚¬åî‰|XIƒî™<#h…ß­T_¢z�¤ÓôGåÇÄ<ž³ÊW9jev)¥};Ž?\?IÒ @Vâ¯Òμ¹ßIèƒ;sB4A~£ô‹œ¿‰izžVëìw {3Fµö6tÖÝM’'ûÙ\¬N÷s¾û:Ýð:ÛkÓ#�ö³?òPö’ã6䱋´¯³àB]%ûIÕrG|µ·�CK´\ŸŸÄ¯ÿÚ¨L}zSa|6�\'Q�l­èëh‰^]àH�Õª‹MZ$á—ªú´9G›wŽ1«êKçN�†¦Ù{ä·xüØ [¢H6Fcž¾µæâàÄÜ<þ!:r,£?׃·ú(ìhÆÎbíðå·/£¿±�&(¤Í-ð¡†î Òq]ö7C‡eÂ�á!h?(‰ 3$ˆ0a'qSž*‰Ëg”-&·lƒ§ÛÀDÞ§âMÕÜë%¿w·¡­ìcŠ�Áx!ï•gƒZ�G†ü«%XÏ‘ÎPÞµ-B×Àq76>AñSwè¬+Œ-HëÎËvîsst½[˜A· yIÝ :“_Þ£Óïjk†&�çv_ÛØÖç/#¸®œ0QÞ÷ø%�V®9gñÚµJ£â±{$?µ Œ8¼Ž¿FÙ#_ØX'ñ‚õ—Ñ7&¸<¾» ÛzšÛªT+K§‰óXè |�$~䬾@ù³2ÿÛŸg¢¥ÏüSI1ñ³Òç´ÿïþumQ "#ä-UŠf%¢B Wâø1 Óó�U¤]� ^(lïZ‚ã†2Íçâ"ULBG€scó0íÛÝ l˜›xçzÿC@JpÿÝëV” ÷µô»ßÅñG¼P©’¨JŠÖ'údúã'ÿ$2{zp–p¿_*Ý*ÊÝ]ÝkEúgo¿ð·©†¾í1Å#/‰Ú÷é¹ÿþSå2L�÷ÎÑ>B íP¼Güó½Ç²[90}ï}éâ…sé�w.Pé½3îÑ8±uî,™v�>òXTm~äÁ�§gžþÓtü™?KŸ~â á¤1(þ­o}£¬)=pÿaT\Ãúúë/sžÖ’DŽb|Ô`¬�¦?üÃßKO|ö§Ã¼mοùͯÅë:¨YfT†>sü[iïî½ÌÃlʶȊ|ñ…gCÙïîî …Ñ³Û¿úÕß!HÓë2è/^º”ŽŠw G“ÆËÅwÎ¥çŸ6õöö…#qyµ‹sÉ_ ø<ñS_ ú_ pòò+/D¶“m6 €üÔç~:=ùGÿ+„б{\¢Jÿ‚þc޽‡ �ƒ8Q/?AUþGn5§©˜…ñyø±pX=õgO¦W_y>ÚšÊct¾*•Γ(ðö¹Ó©¯_zä‘OSév9ý×ÿòŸÒ?ø‡ÿ8Zr«Ê‹t²[…ÿð£�¡À6ã$¿NPçΪcát—ĵ;×O¤ï‰©±t•vš‡�Þ�îßtj6mckÙ1¢Qo¢FI  ø]ãXåAšyûüùpfjli$»‡ žÓ‰/.Z…h¥‡øŽæð—u…qÇ`:–tO’…мJ¾%/r òÀ÷z¹Îp¸ÜzPþgå=üPƒoŸ~3�xå8‰Ýa`éü°:KžªqÎyÆxìñÏáÜQ®ç€þ{�Ç�s¿|½£w�K ¥ìÝŸ¿ß]SÀVàÏ^%gÔw`‹²(£n­\˜”ä‘Ïlø›ßÅ{â—mþu¬˜©yùʵˆµp°Fª VêHD NÃ஭笚±=¢ITZU4=ŸW‡ŠH(âá&µŽ+vmÍ'§ ¡é{FQCUpœt*Þ*­:o+ .@îÛv™ëÀù€â­ŒÕÎdie”mÃ}¾‚ b�F:$ÂAL42ÍØÖ(¨£JdoÿA’Àö¥Ÿû6­ Ï‡nhûf3IÏž9UÊáæ% ×0S˜ï$!Sù3FðUC<à�Ü•Öt&jÌh ©¬ g žPÂùL#T˜jÔ—±V�O= Þçûj1¸Ã�­ LÃðÍ8¤Ìl ÒæþjÌ®s[‚`¾âÙ•K1p>òw�$ÎÓ*P�¡mÖ ±`«A“ú¢½:1¦Kv¹†7Ž\´ú´¢3‡¤ÙÉêîƒH¥!YLÌÌõ,c�“&0£²SÅjxa€ùŽ6i—%2ot#æ�c` AtÀÚ4æÝCÍÞkûoáÐC÷ñÝ91�ìsÞg@¿ª­Á4~„é†5aŠS ‹ÂVg™h~fo¬b]¯ØHׯ\Ž$CÜñ^°ê:(Å!«˜åZ�TrëxâqŽh¦+ÁP:ÿöYþ’¯ŽöVŒÕÕÔ �©Æ¸Šà40Ãiuí gj7al³æÃ×Ây‰L§U­#píцŒýðóîî®tñü³'S¼{“u|3€ ¾‰æ%ž[ÆÂ½®³9Àˆ¹ûEáÂþ _Ù„ÖÖ5…îìÛœË̺=TœòÒ@×Ùn+Oßçx4ˆ�oƒ·÷&âýëù/â~ÿ©©7б�·F;:6-ö¢ }õÒåËé™gžb�|©XAÛ-¼Ž#FX‘ïbƒNti¡Œ÷{¸ño�ʦ2Gç"eYì7Õx(¤µRƼŽÄkñŒÓ%Ö-?©c=Øýá ÈGÀëà1Vq±­a¤ëì|îÛÇ#ÙJÃÚÎLEä�¶¢ÎQ? >HUˆ:t\â/ëüýßýñk‘g.œ?ãŠxòE�nÑÝ~¸H°Ô`û·ŸþVð=¶1Zfºwâºë`–±·Á'¤=è,æÀß<ÃÛövÊYõQƒòØæÙŒã:¿˜_~÷oâr=s—ŽÍô¿5szq˜“pT/Ù’–øÙÀ—ü*è7¹*Ë1}X8é²… ŽJéÂwå/ù–4@œ’žìö°Åx%‡º€’¶+*bþ8²t.V‚³°½p²ƒzôyš<ÕÊ›ZðEgì:ιpüoÓy„Ž$: u�ª{«ó¨w”•ÛÌyè×±m’Mæ7:rl_®Œ’/A Á?ä•Üû ó;*nù£4 Ødg?ë…Gm¹þ¢&ü|_Ì:ìixd(èo�„Ž&l]�IfLбÄ:ÔiØÂ:jqîÎEûuÇÄ>j�*2q­�.<&î¨gµ’<²³‹®)Œo•ôóÕßÿ�èz ó]]Ç€¨I òdzX?ÉMªä‹mÒïØh´u7qÆýv.â¡ gÚ¤&ÑÝ e¤þr›½}ý$ µ‡Cw™o§/õP9MÐÖY߃]èz®]¿~ƒãò;Û+“Ô7ÜuíXƒ×%>) KÁsõFñO> l}F˜†<åg!­oE½ÂyÇ¢ßýÇ{"€<ÝC!îg?èŠ�á^óç.ù“{ìHßçÏ·påÏ=öÞ>àÅêì tû ï+r[™ÐÀÅ•VË!ï¬Þ)Ôï„çq67vt#2Æsw=6°§·?½üí§#Ùn÷Þþôÿù?@œŠ�…ú�çµ”ß�++R×QOR'1àÆÙ[Åh2�goZ9«�Ë„¼)È|�:æ)`„�´ìüt|F�\˜JK¬Å €²Ü}5©Ã1Üë`.<ìÏê£ét‚Nƒûî khB‡4`áÄÕa|Yèˆq[~ç>I÷ÊŽ<.|‘w¸>Úþz-ÃñymÏçµCO+Atq“—ÐfØ#W²#Öä2r�‡ŒçøòO—•Ç7ðn`Ïd‘\µ¯ÓW(“äé!MîQ.éw4è9t} øˆ•¾Þ+Í[x#¦mÕ)IÖA68'¿qÍQ9?ŒjY~—Omn±»ŽrÀÙóƒ–üØ"H͘®;îr¯ ey§û¬Žíä7ê~¥6âv)®ëÕ“ÄõûÐL²)uuq_Å¡ ƒbü톩¾‹ 28W ß6p'¿iXE?G¦uîè€ÿµbO̱Î\-æÙÒÂ,æ/,€›Nx9rR×qM& _mðW~g`›_±¹§¨pl ü˜Ahá=ž£:�ßD á®Ná~XU¯ÏVžar©6ŒÁuù—pX¹e“Ž2y™É“�{ðYµ…>lr¤xëYív:Pç­2`Êœœ›pu q�ü ¼Œ�âþ°ø›—÷É›Ýq*ÚDC7•È0+¹¯]¥ƒ$ÅÎ{د l+|Ùà³Å.ò>e^É�ÎL¢0˜³þߌ\¾Á™Ù—C=² {omÝ Å,ä´b›v�8UÅß ´Á–v…•´¶@µ¤­Œ¥uù¸4.ïvÎâ�ëÕî ®ÕÕøÊ™«çW._N�Œ½pßM¬"0¦žâˆÄž�,oYv7ð[ª§KƒÒƒ:ªô²›ù¨fûˤ0§±û R‰+¬´Mý{È Ö'­IS®O]JÝF Éd"Ç5¨dPÜŸã˜+‘‰›CìË‹ç|^ÝÉ$o÷OYïïÂ#ó6”^àŽ„‹¹¨æD"íFm² +“‡åQò=iSý[>±œ^zùzêëmIûöµ0;2Oô¨.*²gæ×°Õ9:¥…óØ'h Ž~^S]Œ@ìô‰)tQÞµ¾¹–ìmÆ$! ¸WTXen3ìç”76qôóÕwhï™ç ©@`·§»#µá·mm¿{¿ ŽÉëM–cÉÁÔ›Ä×WÀ#_½9N—Dø»�…´1v´RÉ\Ga‰ÎÒÅ.Z³�Ï,¦KèAð,ùŒü^šÐ#ÍÊû ^Ûµ¦9½B0þæÒIvH°c–z º‘ŸÉûôÙÊ£ÕgLq\}Kò|uOߥѮ> ®§Œù•cˆ÷OšSÞ‰+ò�|Œ{ �v­Þ«}gRv96“z‹ÝÐ*�«Ê–<°±×®yê�et[«G†‰7¿Ý[õRmÈfŽ>3©cbf¤3äÛÒ‚ÉR¾‹±PÚ NÎ÷ |7&åH³Ò¯óùCåGßm{wylþ#ö·øL…“…òcù·t© ØðAüüñ°{8^´‡¸–kh$ùÙ®DÒÖ铯“Zý®«dÄ”>VÀÿÿve£W¥0 ‚êê܆^ÀDf: žsÊ)ö3}By ÆôýWÊ! %ä³ýš0))"ê_Þ—«W³�üþ£Ýùôý‰´‰KåV&¡ T˜_'°`áÙ(2Èy²YZp&ˆ*ß]]=é¯}þ¯q.ù©0dl±££Àˬb/ïëEòo×âï 83Šd~ -c+>ÿ…Ÿ¡�Ï\úêüÏô+¿òwÂy1>v3˜¢Î Z MÛÇ>AÕÊPTZì†ÈÇ'8‹ÜC|.®‹¿ÿø#Á¤þø�ÿ€çëSŠÙóÏ=›^¡JöK_úr:BûM[¨ÉDÏ�;•~ï÷~+ýò¯ü½h§üu*Ü›0à ª_¿~%œ$$È¥"ùÛÿý7ÒÏ~ùp"7§·N¾™ŽØïíÛs±= ¯�¶­º­Ümaoàù� v``%¨ŠòÉ“§8ô ÞÕÎÑãÏ>•zèátäðÑPƬ„=vìƒéßøÃt×±@Û�ÌÿEöa.>t0`«°bÿÑO=žžú³¯EðÒDƒ§ŸúF8Ѿò3#ÝC¾N £wÝ“þûoþzÀü¾>Àœiéùío¥ècé#>Ââg¿üKéµ×^LßüÖ“<÷ÁPÔ&1ö¯ \A�­ñžÏP pOlÌ"{ãĬ¿?L«Kžî8ÕjEp$+Y:m=«Ð å#GïÜy7¿ D¹óÏû(>ÈËÒ“g"›°¥®Ñ¤Ìêîî<õLJiS~��³ß»\?Ó¸=xèPt0p\�xù„í`s€‘€'ÌJg—2ZÅ,œ(:�tœ–ää÷ŽþÞGýRÞ97ç.ß+ÉÓ÷>b~Â1¼JãÉ/uÒÈ÷<Š¢=�’9�à8lk§í|W£Ú`S8ÎxÖû¼TˆJãÅÿþQaSßÃëÖû„“—++ýœ?ȘŸ•æçFaZ’®]Q¼ñsï)�ãï¶¥ÒQí}~™(åg*ÆtÚ¸ÿâÄ‚å:î•):÷5TàS†çÎÎÆý­ò}y³×0“º˜'këéîáw{�3(¡VTÛVÍöq:YꋜÓI¦¹;+˜Ìá}èÍü¾ÀØTG ðo°åsCZ›Ð‚z™ó ½ …¾c9ä¯ò”}Ö±V¯S’9xæQÐKO)ðgPejbœû0Ðp\ ÂôáÇ>�ˆ†  ÛÒâ(Áá0J@!:'¤)/a�,žaåÏV6{l¿dz ]ºæƒ�dTÍ7�Ÿ‡]“g“…—5º�â�ϸçyß5�ÌŒ6³Ø £ìn$AK¹íº�ŸÁÿ^ikkÇQ²{3ëÞjø0²Î�¾:#á“%ø1aG%e#﵎"'º¼FïgÝ¿UŒ²%Œ1& œim†,×Àžâ�üLÃ?ªáèÆlæX †H‡Ò€t»]†Ã‚¹i´aùhDZƺ]“›ç¬PVæYkêãTvƒÇZ7‡â�N\â3èšg ro‚·MÀH'Lnag Ý¶ÈІ·Õƾ×ïVÔÖ¶„3Tü¯Fǰ]šV¡{¤qº�á¤c·šù4^É; �­i?Gkhè‰#ËÌ©'f�ÜkPV‡ÁN$2�µ ¨rÆÁŒ}ʺr0ÖgáâÑbÍ@ã Ö:‡ÅŸ�´úÓñ{Ƀâ~ ë®Á£â=:-­œ²ÒXGÍ6{Ú@æú,ï’RàÀÏ©ê�æ5d5¨—L4Þî_7˜«A÷8:ÀSÄ;/³®y ‹}^Ãñdåã¾}ûbo5Ê;ŽÝÅ[àqÜR{¨˜wOù¹Ñ@ ÷}‡Ìðñ†¯|Î J«™u Tn[ñ”ש“]zGL&ðœ5éDÑ9)ž ÷ÌŠ»@äãhýˆ¡ϱ&?Wä)ÕÞËïÕÀÆ.ÎŽ4Á"wB~±�þò”¨üâýUì‘• ë±>®`@¾¹±?øª?‡ó�=7YÈyÊ“uh×`ÝWÚ~�ýiÜ»˜ f|a'­EµÏ+CÝá+} Zù·Á/Ç+`§º_ò®XóÈÝàÀoàÆ0?^óŸ<—'h‹H×lŠÕ¸Ï :•Q:«¹'Î3†�锪åÅž%Pyszò Ï0u^â˜NCñ2ô èN>¢cB~VÁÞ[!ß«À‰$ÏžÂDÜsÞòqžÆI‡sEšæo¶V—ùl}=•8—tHÊ[t€¯Û¾‘{Ml±Êº†ÊKÂÈ;ø9~±ØGy”´©£Ø ¿Agñf‘j®àýÌ5œ¬Kþæ"œãsñXȃ”�Ú÷^&ëðÖÝÔÔ0’V¥Mßg°Ùv³Ê �ývÌQþÚn[½O[Ñ„5Û•zL�n�½‡�¡"užÞ´'_4áÉ®/QyD�z¡ÉTòéð‰F’žÞž§ÏNÆ¡2¸´ç2Ñ€†¼{‹ïúD”™VŒ=À?<7QíCZ ž=)à 0Õ ?¬`·[‹Ž( ä'¯¾úº¤KÐŽÎ^8•šY¯cHûIê>]y"à{ô®cqDÄ$ßí{…¥N©l×’äɺsëÔ&dX ø>0·ºÝ= ‘wC'â�4œ[¸ªK(k På@hIß']ŸW–³bê¾Sðéwß)\üOÞö]æ]ñDÜ.Nþ¸—c¨«š Q2wuíb}à2{°Æ1)Ó“t`ϬPÓV}™•¿W¦Kçß ÜhA&K ³Ñ›~÷7~=Hâˆs'y&èø¨2É"º °õ<ùH^£pÖ©(ýÀ{A ø³ÉjU•¶ë4Nå•ÃguÊæý‘3Hà¡òTòѱù›ÏÕÀC|W$:‚ %>(ÿðg÷ÑvæÈ¦ùÐoÑq*†³^"­š€ºspÎ~Y©é¾§µ{ì›ËÈú’÷øÌ<<ÎDõ³5xˆ2Fip�®”$²›h`õ;oÓ /Þ„ ç«r]‡àžÉàßÀI�Öµ,áqP„Šr`gâ©û%Î(’Ž  +3֨ȞŸñØB„ÌÕÄ+ùTÞ æÌ8ù½è<Ði ¿eGüQ~5ˆ¼–“z”‰ÂA9t _t_à'ê”&E§aæÚ�'?F˜·ï ù –Ǻ·&0s üB¹¥¬ÓÁMrÅüLÌÙ¹*;™8kSnóÅz*¬ºä3çèóÙÙÎ:ùŽæõ´z =D˜ø¹´¶A(d0{”õQ«ÚÜ_‡¬_©X¢w:x±‚I]Hž-v¿ ºÊ³®q|‡¸W��bǤÐyàË:اǨlŒ�Ê|=ø<Ï{tÓÌSgí~)„¥2JxY ¯\¶í«ã•y£8-3DÀÁV½›ÙgÝñ>y›s’Cçô�>Œ‚G áâÜ”'Kõ©2‚BQÑ î­,r,Ð á“eÏôYνʆн˜·?Kã‘øÊˆ ZW¡)“.ÔAíü´²L@RØ3aï¥n翞][†ü•VLæ!¾D2"¼�XéZÇúÅ­-~V>»& { °ø[öeØ ËÀ*¨ üÄæ� , Ô‹Bâúä èô✾‘Ѐi[[+hD` º�si�Ÿ8fò�rÇà†ÉYäjH»™àÛÖÞï®ê^ÂD{S�Q}$èɱÇ�“7„Nœ—{È£<“*Å3×RÁ³îYt—�‹°�_ZIí1VM;/÷È ¨ãËKÜwešt¦Îg2Œ�/ ýŵk“K&öyôŠAQyÁþGÒCŸ|4ôŠ«—/¦ŸþâWHlEVŸÀ^­B/iNׯ]EOZM}ýû V�ÅÞª³¨ƒ¸·«øú±ŸeÐYüàK<ÉòÊît#i�ð xÛð\ÆN�ŸÁg€d°®Ž5ÏM�óŒöúzºÉqVêòª%èЮYÒÕÚÊ¥BƒºŸI‚t·BoЮÿW¹TlµbØÀ?]¾¶Hª"¾Ûê»"’4–/SÄHUªvþâ²�Ázü¿Ä‚X/à‹3äËÊѱ�‡ºj{'61ðUç*Úµ7±ë J£ûªÇA þ'O²5»±ÖI X"m…½•ß®O¾ }ÇÏÄyù¯ûo¢o¶¶ÉpÞkõw z[�—èß0èh7#õÃM!„¹Hði“ ¨‚ó¼n‘.�Œ¦)‚‰Ú�Eì �l3á¶È,B°Õâ¥ö�>ùO–Sàöì3Mq¤C$©1?iÂÄåœò†HzãYåùÚ&éËÏ„e­óWI˜Ÿ´Ã tìÛ–W³\¤÷X ±ÂCç#¡¶\Úî×ÄôÝf›�=Éðè5M;úÓ,úb9UÞÚ»/ÿ"~¤Væ³KÚØxt#˜œY£lè¹tåêv\!�xk(=õôPzä‘”zv„e'¯-¦=»¨àwר³1Þ×T Ѽ‘cŠšà½|f� acÓiw7 ‡Mòn‚ã,.a_V’ˆ질±,Ñí ŽD‘wΟ\-¶í䨻ºtæÌõ´§§%u´‘ç³ÉÂo�ñåLÆâ¯�åÒóôö:ºÞ]ýœ9|§¦çÒåA:LÌÙjÞóØ‹À.w6¬R¶ñSf\`0IçG*áíT455G°*èŧßS‚Ï­€ & ‹Åc/™’J¨Õ¬äoÞ‰6¼:Ü nyŸJ¹Jã'>ùÊjuzîùgÓ©³§8÷| }òãÀ&û‰àBoß¾¨ÊQ‰;É9z_ÿÓ'£�ù(-üØ'`ð‹áÌ)¬p]wÝu7•ãï¤ãÏ>kðŒ¾O}ú‰€Eÿ>˜­ç!Í\>˜¾ù�'ÓS±]—ƹN!×wôè½µ%”Ð_Uzñ¥çaÄ0+æl•øƒœí®AØ™)xAo*—Q&uÎ \�y¨äèd²Ý‘Y¼„I@º٢ǟ{&ý£_ý§�7PäYÊ&·‚]£èįa7Ä{…›ï1»òc=BRÂxzñÅ㜷²…È Îvú•îý(­2f÷î3Ÿy"=ùµ?!àþj´æ¶Å{΢ÇÿldQËG<—ÔL&žkØÕ­³*; J|Å}½s½ÿ ëЙa«>¿ lŠC:;å'âT8¸Ñ½Váú‹ö\¥Äg÷Rýãù»*/}´ýÑØ›çY�µÊj ‘zî+ñŽuÚU)¿_>ñÌ,Ë~T¨:OÇ—§ø½Ä�Ÿ¿ÿø—|VÖ¡¡ ¯ä—v:Æ<ôÈqNµmÝëX¯k÷o~ýE°ûQæsû˜¥Ÿý®r)ünŸÆy¬štdðtl±¨R(M‡³é|'Æb}:ßÏ~1W�aþ{Íœ•W:½BîÌɺ)†­%Ö/Ê„E´²DÎ*«t2Œ”ž1y3ž0&·?ÏÀbzöö¦*-.]8°*5p©v/1ÂiƒóHHY«î±m¯phÁ+ÜejMJVIXí>DÆ=ï28¦Sc›v˶†××Éc6}E•0Zr £ yí˜yì{£ ŒÕš™½ÍÞëÀ³Õµxh+Jƒeî¥Æá²]˜ŒÆ¾°QÆW@: ÚXm <­6ÞbÏ·€‹÷wáé>hKCÒ›†Ýø*NÛ ÁjNçáù+ïþà�ølàn“µN€cŽ!îI#a$×rdºz�øh‚†Î/Û0º¯:vxw±Næ§£`c‡cH\ÑÞ�ù ïÆ"÷Ó:Ð*ï]d¯­£2£•€­yµµ¹]dey]‘sg�l˜X lC»Š±ræ2M{3ß©³Æà‰gŸ avm°BÔ*¯&œ\å8y·©xÓA¾9—Ûwº/Ê ƒ•Ë!£ ‘(ÅR–¹O/ã>tBH�¤Å13Þ ÁqtÀ¦Hóò±î‘÷ØÚr „.ÂuFÛöÍ@§"�î—®òA¢Õ�pté¸4àjìuì®ó»‘6ª¥f ®É¸�wWâD+g|éݹo0Ïy*ËÄ/[{o|Î>,ð¹gÙ6³ÎUöÀ®¬ h^ºÎÒŠÎ×$�øƒk §+ŽÎ*:0]§7 +ïsõ¾Óyú¬ðò V ¹�m¦#1É}ÔH· Îs.;°j8NžçÞëØð DíÙðI¼Ì½�${Dµ%-*k€K•IpA'Š´ë;ÃQ½é —˯ jË[W©ñlOu�‹¾Kç 7gþØ:ƒ´!Â7¿�×¹Î:Þé9­:Fëù]˜I:°­Òr�YÆ”°ª YǼt\W©g:éØjÖǼøœ×ÅüÜ{P+d¡ð>§·p¸„,©uô0Oy²�-¶2ؾÛ}·7ø2Ð�-®ºúLž1ho"Ÿà|11Uäñ½UP5g)jcuRÕçž—‚¿ŽQÂG€�©ôìî 8)WÝ›O}æ Ž6¸ÕMòxåPc´QEª½f Yz˜„lAx_8QwïíV¼(«ñ…�Õ¤îÄ“ŠÍæMŽÙvoÄIžüRÇ–^üc®ï¾¼�[¸âðUŒå??÷JŸû“÷†Lu¯ýà/áré| ¹²µÁ Tú›ÀЀ=lbä"Õp+KV§Óʸª»)ó t0“oŒ €C;c®¯#®$‰Áã�¡+›]‹fy¦0•Î\‹^/��î£gýêRõ~iÈD‹9ÚjNLpÄIž*,ý2§óR¹Õ€îÔˆgUãøè{‡³ú÷ys{cØþ�¦œ]º‰|,‡/ÇÑKòÞ*þ0“Hð© ]X'¶³ƒßàô,ãË _×Àä¡Md û£fË™¯áwwOýÚg�ÊùÝ"ú±ÁVaP…¬²ý´ëS·ñþMxˆ�.ƒ�ÊBs Tƒ-ƒ[:¿ ®Ë§�½¸QUÁ1S¬}^×ĺÅɹY�>2yª.ä}šRoßn¿$ ò.éRüfZGéÙ÷(Oäm[ó�[.Qg¯ ˆòÛs»å¤9yœs]&INYZ€ïV°`Õ|Æ9ÙØê×ѧ Bʯ­µ8AY>Æ~ªë· ?äeê×V\œšœ yäQVQ+g æzŽ1Œ¿©÷X�®ìTב¶\£Õö9é…0o?ҹɑÀ­ÓÑï±7FfÂe²“tkRèÜUÄèïæ:¨>U·š$À`PAÙ12rƒÁSÚµ£Ú_¦�õ`œmA…y+Â<ÓY�p _åU“i’sšMú©gðë‡�æ;Ë"á(Û]Ú*Êjçh¨ä­BÅÅÆ sõ ÷àâ…·£ÂT^,í(œf°#¤»æD¡00Ù¸ˆ^"-N[÷µ½�#“Ï€« }&nÌPa§¯­�h'EÚÖÂ[œ'ðhàMȆ±·ùH’HL@ÿšYñè 嬲K«âYq\66O{Üet)µuø)ZjߺAÕ*h^êþi_Ù¶V][Ú˜a�B®Ã×ãÌjÎ$nmk&øZÉÊáS‡#Üç— r¶D`R»Uz§M§k¥Ç!Iïœ;KbfÖÄ—ñÑÑ•ÄÅú.å�zƒ8g—,iKÙ =©®"¯0@"Þ€üº�>„—ôk°Q¨É„†û¬ÿ#ø?G`¸P×_¢í*�—ì2å§s‘?Ê'ýYÛ(*}/ºSøRx7¯Œyx�sö®}V:VGòþüÁÏÔCLh‘ÏŠk¾ÃqC{zŸ¿óá�G?ŠVú~õ¥ç"©ÛÄ© 7h°­ºÂòþ2ݬVÕTe»OÚq�¾«]À$Ê�?ò©ô‘�~"öɽw.?𧼉[gIÖ²ø§ŽÊYÍ‹à¤>ß鱩èîÛè@Tw{>ð2sš&‰cxpŸjN²�î&à�¶û þ¬Þž]àwC´Ú¶µ·ãêG°Æ€e9x:G…»ººÇIIÜ&o‘-€k³à³A÷œd§ᑾÕÕÉÃÇ^H‹Ð—GK4À#LhbÙ�[êGnë*cIۡÕÃÓPš×¶°gÁs“J6Á{Ñl þä>Ë·ÔuÕ÷—�}ꬑ<΂uñŒ6†²Bù¡>m�‚ôáýÈ1Þ½®¬iw˜˜Ísëèì�°‰Ì…·ºóºÂ~dŸ‰]ÚÓ�Ø­&—hÕÆÑÇaò–¶šEtr.Ë@IDAT¶Å÷åÕµ i×`Ü=[ÜŽ î½>i>d>ëWÏ@b�ãú´AHz1Ù8'mß³M sƒsÄ«8úijl&Í3V]ëžTݰz%yƒ*ûžþCð4’?I8hÃo·¹:�7pª^&l°ù9ª©‰DlÙJtMá]ldŸ�kãS‹KÄd9÷×P nbùÉ37ÒÖ!º¢ÂL‘Ü,ðå\„_N夈é;Êp>x±2u¶T§ö"I&TÊ8"la¹@•}=GÁçëèÈ¡C<_LS¹+IÖ…—9ÿºæÎ®=8‰½ŽŸ¥ÙdörYýŒJr}] ØÍÛv:3y�„~ö¦þnâßŇà±èÐ~‡f°Ù–WÙ0º�3·Ö(¹é—˜¥à4ËOgšçൡ`Fe–÷ÝB¿Ë€¬ô{ûmÏéIýèÇ`(v¼3ÆZK}}ýéç¾üóTzÿf×ÇÿG¢©;7~ò•Nƒ½_£Z¼Ÿgî½÷1gñݬóøÂøéêîÁ-£ZüÁfÚ…²V<Þ@àœvíì‰@²­ÚGF†8sä£0µÚd ½«{w´ Ò1gûž¾Þ~œ“0²¶>ƒ1`b�†4§#Îv¬øà‡ÈÞ:•ö Ü×.G�Ž0žmkÐQÁðµ¯�{úÒ/ýÒߌµª« RõÝ <�ãÀà@ºðôSJ:`–8yËHHh댿ét™§-ÛžÞ=é䉴·¿˜>ûø¨ ¾;ÚÌŸxóœ<ƒÚÚó>ÿà«¿‹ñÖ‘>ÿù/2FKì�|PCÃý{ä‘Ï„RfK-çCûmö ¦í^ºï8>ÿ¹Ï§çž=žž½1Õ„?ò÷[M—æ2YBcqs“,U®ááá¨ðÐR!(áHüñÎ?ï;€æ¼ €JH⇎ŒÛ÷÷öŸ¿ßBu©¬4b`wvv€—ùŸÕ` yÆ}a@3ˆ¼ÀÏuPæ¿9gõ—sùÞÛç]â?þèÎQ>›+õFÒŸgÍh4 ‡Pyÿ»/×yûœÞý÷ö÷Pæà?ÅÂY¾ãØV™ ÛÌkÕ‘0¢¸WãÝ÷¤ÒH2è«‚îßÌŠWnÈcMzÒùd’°p¬±o¶dô\®! M«T½Oô!¡ÈvZð/½ü5Z£Oæ¤, ›‚ì:÷Ä •fÙ*²Þo{t 4åDnM¨Ñ•Ûê©\:_çêXIÈ3×Zc³Å!FŠ·°°ÛN9J÷ ”¥Ä ƒ¬¼Oçƒ-ç Öc̪ДҀ³âXç¯pTÞ¨ š‘,Þxž±™ÝÐ ö Ku5ˆ§'2¸Õ3Ø*Ã:²ã޶_ž�´%ôܳ9 Oƒ¼}ÈyöððP†:[ Ü(‡ €˜tÐ ??xèp8«Å ÷e ƒFüf±Pߟ&`Àº„·cˆƒJ\°-Öª�ìç À�Àr�½Ð1¾¶ž�l …žñ2 w QÞås:g²¯£ãµ¨UÇXÄ¢ào¶Ý6xê9·ÊÜõ‚† �"üîØÄçý;Þg5¤-¾ØRöÏ6�à4s·"L¼ kaô ë;ÿ iøT{íü½×9 rßÉ 1_f͘dÌkðK§TËÉÓÀލRaŒltö]gžAêhÆ{léìÞ cVp ‹-â¥:·²ÃŠõ¸_¬Ûl}×åe»F–Ïšñ¾J¦vü†æš+*tRäµÚZÎjçfdùƒÿdœI>Œ“ÇDØù=rKÄZì&Æ­°^ouÄ5q>×ô;58ïïÛ·õT¼ß`³{· ÍÉŸgÁ[/+LÙ <gp¸Àó¥a°½Ë"³œ{"ˆ mß{ßhÑy%žë&xäy�3O¤Y“!jXÓ*ÎÒÀÖ­ÞzøÕÉÌ£Œýñìå¨na>j†aüò>�êGŽMúðƒ´Ò¼˜NŸ>¼2ý‹oÂÌó™mÑ-Ðø¬ˆ~2zs”=%yºµR!dÐå¦ÇGp` ³>×#©ză÷-â—‰7ꉷŽRï§ü\è½Vb;oß/Ÿ 욤°“¶†óßV ‰Ç:›k~ˆG¹{Aý-ð¸ºVÏ’›ž·’æ�—<¡Ù±Î¥-;ÜälLu,×kP±tÙYœ“g¹?V}|0+Þ.á(g½÷ïÀ|§œÎ�ÃVÔWPá°Ÿ01d•÷‰¶O·ó�ü¶ ½”býòƒ-טŸ÷JÃ&„ÓçÛ˜Ó±cÇÐ]ßdlè§<ãì€ÊÕ,›Ð…ð�Ÿd Æ \A;wh™‡L qÎ�p d¬Ã„û€}®”‘“�^ÀÖÄÚHTàE¬tbõUŒËý:[DlþÛîI°>+®Ëçt´(\�χ£š;t*ËO\„ô,ÿ×1©ƒ\½Ø®&â€8»JbO�2‰ñææá�<«ü(èÜc/|ÈgfJktNå@�´@Õ5÷Lt÷\=^g¥URø;â�ò%ñÆgk›HcÎÞ[ybRK sòÜd×%ÞÔÎ3°ÙÜÌܘ¿Évýɼ‚'$ã"Ç­pZÄ‘ÞÖÑFp�À0€°ãT>’ 6õöï#ÐØ‘F‡ÒÏ|åLèbÏzzö"g– ÄŒ¥ƒ‡�*¼ÄWJ ÝÿÀ‡8:à,É]Á�ß!˜#oЩYÿæk´£PGÚbÎÊ;�¾«8cµcíRá.d.Ê>’È$Ÿ«ß¢²cgN<V<   DçöZ§œbñ]aµG3º¥‰'Õ8>Õs._ IX�Ü£+Øðdñh+]åÌi»:ôtïš}óÍ×cì#Gï·ÐO ŸhŸŠÞ¤ƒK™.ƒqþŽ-ÏÐÙ-?Ð>V~©·(¿LÎVÑy¬~!ORIO‘ÜÀ&†ì6Ò]éRÞ‰3ʾ°Í¡Ã^xŸ€|×% ¨—Ê{üË9A Œiµwm}‘=݃“q:ÍLއlÑ®©ƒÆpVëLõLNù“Ahñwsåâè~¥‹ÀÄ88Mç#ø*Ð�Æäù“û •Ë÷!«�òƒ-ØÒ­ó�Þ¼ÏÏÕ± 7‚/ÆÌ °p0øV¥ÞÞ~ô<æ…¾¸¹µ#u÷€FžË+;vÂ×å÷•rÎ.Ê]�½ó¨Õµ¬ÞÙF¾eº7HØŸ›D§nz)x¨óܪUçæ\í\"þùœ»P¾ËÝ{gÈá#üÌÜÕ b_ùXÝR,pÏ••ž±¶Frêì°�òŸ›àeÒ›2GThÀë­óÖ pß]›<Š*pèR¼²ê+'ÑøåX„éÐeÁÖª®¬¾#óØ›*\@*Ö#ð%Êu×¢ï ì•s«�ù´°�–¨Œ§.dŒ‰0“È匼M˜LªQŸŽq¶ƒ÷{ƒGØ’_;�„ `Цz† 4P[±¼H8Qiº MYÕýä@>Uò´ÕY=û\]F�ãûÉ9¦þç/öÁK®ebò6u4ÜEiƒ¯óçÏ¥ña*ƒwÐ5Eý Ü—¿ÏËYáNUå€ ò%å¨85‡ÍÒÛ»›gÎwG© iqŒ³±»»»Ò4!¤Ö°Sõ;4’ n'ÛÏËK�°»W&(‰ pGÖU™vv¶26Éw졲fG'¼­Š@!¸%oP7‚ab°&æ^^�¯<÷Èí¡ðyÈߨ_÷K«ïAÙëÑêÏhùðPe Cq�r¥&µÊƒ%)e�¼Ò¯,#‘‰õÄ ¶IfŸJ«ÛU©¥£\kH“øàM†˜Ÿ')€9îëë‹öí;;v¥UжV† mö’ªõHÆÂ ´NÁÜÆþ!ü[MÐ7<õèáNtÀÁ46Gç)�F‚Çi¹¾³�„~óp#¡àCŸîa]éõstWäW樷•Æó»Ý"¼Ð'ª|°@ÛPùÙÙAÒÏy�0�ƒ¦sÐ]Í¥IY|ÙÎà“ŸŠ«ÊŠõrd庶iŽE™LhÞ,~6}…,$tƒ²md5új=ûÕŒnç1‹&c çTYIhçuº{ì’sñx+“Un»»•n§2Ää?A—‚âöÀÅ-8~‚`pg)1ÂÈæ«ýT:*tr©4Ü~yŸÎtÏ„ÕÙÝÛÛ•4AÅÞ®y�ÂÈJñáÁk(ieÅÖÄ¥ûnÓ# ¢Î‘ªm0YC÷öKEA#l7™.×®]Mç/œM‡ CPAý]|†•Ãh޾Ã)€ão·æäÏ*NV&šíØB»·{ï»/Z¬/á ¹4s!æÝÕÕ�zûúc:xe:+½Tä NØêÝ�- ?Âùá2\C„YdD”V¡ß³wo$£’Â÷;·>ÆWñŸÆ)ýä“ÙÞ£éÒk \´¶íÅëå—_à|ò‡¢õ»ŠW‚#,8“Q^&yÇÁÃØ3\ f�'fÚúƒvô¶YéÞNÇî¾+ÚåËçù»{3´4’r G¦çvùùí—psOt„>|ò, 65m¢HÀ™‡„�­÷|èãéü¹s@mmmƒÑZE™‘Ñ„IÀÀŒäPTø¶ÿ�W‡pøÎow~x?B@§�R^Ó`pvb©Àüp—NK £hs´J›ÇîÀ3i0Æ_ÃY<껜ª„‹%žöýéG¿ë{9ä�>N~2;4`JëÐ`/‘Eé³Ûßë„Fßë¥P“aÜ¢qÇþ�òåy{Žê\„·)ïÓ© ñ!�ñK‡Œ²@%Yd€Ö ¹Æ˜4lÛôÁAºŒ±êÀ݃C#$)íåxxd„ççqRÔÓ®j:ÚŒ·ÃW/¾s!�:D­Þ˜Æ`7¿ëWi¨8~ <3*Ç·Êo‹qUðÍÍ�L€wꈫ­&xƒRJÝe(ùÂR¦Ù¨:à jðtu,„F¼®ì¶Äš…±Ú`žÂܤ´ø §�­Šç™£öíZI¶�/ë\6ˆÚA%ºYà:I�: #ß±wo/Ý�N}ýûƒ6:¡¹ž{6ýÚ¿û·iwoo$nw[\;/÷**�oíe8· ¥mTŸþÌgã|è—_ü6Î…¥˜¿ žó.®ÉßêÙ?rÂv˜XmXÅßtØZ…o‹_Ÿqí ±l‹Gèzœå¾ø%ôVðý\ýóüöoE‚–z¥4´Í³^¸ÄaiF¹ëßÅ+ˆÕÙF©S.°¨Ì3¡ùæ´´ïÀþÐ�M2}çÂ9 õ†Ù×�Á ÷._Ð*c8÷% ôö]]éoýÝ¿GÀô|úWÿò_¤Cû ¨²&õÎuøù*pA*¦õüÐüŠ´ÉwƒÉ&;Át¡ÃuJù¼Ki}™¹WrŽ$¨�CgëUç•.Å{�Ér 1AºÓé PþnÒâÐ}öì9aàýåün»X/ý‡JXáÀÕ‡¥wq_>gR~æóVœ;Ïõï0xó†ünG�Z‚Ôª$gÑó—¸Oœu¾ry@®Ê`o�W:›MÙ±£›d˜²4:Î3ðÕø•AçØbò–2áú/ôL™Ê<¬Iï&…Ó—E™¤°D²Ü:r=‚üÀlGx;¨d‰Á.Ÿ™Á¡­cÍ* òô‰ñqäËpœÁÞN‚À‰'éèµ�cÁÎQmeëö…p¨]ºx)wâŠ*ÒÙ8{Ömµò�b ÈVqû:40õºzYMçN¿2Â.gÕÈ_ƒvÊ�ÈQÇñ\MõKg¨|°¢lƒ€“ÌzÙVŠ<´»DTZòŽÌtµ��Äb&ƒxž’•ÿáèDŸ1iA]kj†äuÞ猵¯Û@½r;’pø‹q“8®è�?ÆÓþ6p²ˆ1¥W;¨¨‡Y¡µA"€tVÙîyäÐ!Ϫc°Qñ%4©Içx$iò\à±v»éˆ¿±ÖGSó ùàVJz’Nèè$(Ž 3­,rŸ î+C¢ãÌ­÷ØáÂ$PQ ô~fšÈxãWâh58)Ž´íÒ‚.ÜpÈ7âì_¤BÜdOuçÀ?¸Uåá â4ÿ7çƒTÇCÚ¤Ó€z’xæ=s8ÓM2ª&Ø®ž®^màÑy,Áo}‘Æ–Ãc .Ë3¬¬‹Î/ÁŸÐ­Ñ <ž'ï°|ÆÞ™Äe5¼¼¶®¶9æ­¾¢SÛ}̉“ê)A¨§2oöS¥Î¹Ê8òv«#Ý“(Õ/£uíÍ Î‘–gz.¯I«Á?Å'àž;07Ñ– 4iR–òÇ ¹ö[Ö„EîRàš´=Ý+¦E,÷2‰~  Ê”›¼Ç†±Ü 9>ãüù4ä…I®ÞtÆ»;hÛ+Îkgл#tùggvÛ�B]Q~ÑÖ¾²Ýãl¬˜6‘5ds)uê2 g7ÏQ%*Þ™”¾®Œ `º&0“I÷l6:ǘ*/ØmÛb�Üœ"Ð�½Îgë$ê€ ctÐá¡JžÇ¹âÛØé¿�Û6ð4± ¢ XÂkÄ%¹™²G»P~"½ê«�“ïÍM²økM:'õaÔÉïÁñVþ"l _„�8ç~Àà�+ÅåK&ölaÛš(‰®Û ±åµ ¹KðÀ¡±‰44çL„ÎàôVC˧¬@çõÌ•õ0w†š©¶nn+¦qІFÂ�§{ˆÆ<8Ž ^[FRR#mvvàχÿ˜ fâ¿z£|L:sÞ¶¨¯¬" NBŒIžÂ²�ɲe©ˆM³sñ#TnS9ßÓI¢ :ÃÍ¡H˜Ù$ÀÞÞ½{¦;M^çø":&m®.‚“° Ü/-Cñè÷vCZ'¡³˜7šRïžæ4}Š£j¡s;¬Õ°o$aMÓ¢¿©@"À Ç'‘,1FKïJ’–ñÕ5 ç.0¿�›è©´mo/r�¦k©^§•°%Q{¨cgv™ÇN¡ßÌÓ)�ù¬m�¨SWLÍðøfxÚΞ¾ÔÑÕKÇŽ�4tñï¬âdTË.‚¯©ªGoY݆—áÒVâ md­øŠu=ÏÓ¶vÀ¼~by"dÅ2•û› ‰ò×À0b#MAþÏž9��ó]ú–m�Kîñ"8¼o¹~}$’IŠMõá«Ú  ûG]ùþ ôd Äz²Ž~@09ÛSø,¤¾BçOÖéD'G2X8 ß•‡™´·,žøWéŒ/mVm9u�« €1›åˆWÒŠ¹é‹Ðß$öB {R…Œ²0@{S]o‘=³J_ÝHöåÒ†|^|7ÁÐ@¸‰>­-Lª#™¼g2ãg´÷Â�âû¥Oþ†Ö|!p¢t|ù¶ú°:EAÙÅóÕÈ[õØH `­ÍøŒIé'©(ÇçÄܶ©Â××Ù€L�UÖé*À˜ã“£iü¹›ÑU¸™˜žz±º¬Ún\2s$h’.�yçº�ïqC"ðŠlaá»ðEº�UøGÈ8‘™œ:sŠ H{84²KÏø]ƒJày°¯½þjúÅ_üåP¥û¼Çñ²Ž6d·¼ñÆ«éS´�çåhü¯±¤R§bz×Ý÷¤ßÿýßM5T#>t”û‚¦cÞ>ãØ2†»�KÏ=÷lðÞÞ~˜‘ÿ|ß æþÜ·ŸÅÐM}½}Tt§F€Û ›«W/ã(™"X¿7ÞíºmM¬ƒ!;³#±ªJFOvíï^Î!CsVµÃRƒ Çš+œô ELçtâ�WÒÏÿõ_eæìÙ·B°Èôξ}ž5nSyñ 0Ð�OpÅÁ@ËF€A“½{{HRH]÷ÁçùG0V¾N�qÑê�€ÃáCûH½Í~q&*ÁóN-fk»&ƒ'gO¿3X_}ùÅ8k^Ø;Véòç‰ ÎÆÄ�QY±Š\CDgli}~×¹q%R¦m5aœ£ŒßIøÀoy¼üÙcdØssT«á<ð*bvR½ÁX�Ü+—oðÝ`ŽÕTN" žêˆ^­Ã‘Ëx-’šlçÜRS 瑼ÃLnÃu´Ñ�t^iˆjÈgg±Aäs:C·1,Ì¢Ö�n[`Ûš…Ó�l]f…§�[NÊ �£Ê©ŽS5ïסaÕ¦N&+­°××Y ²Z oó~•Þmœ;:äÿ&è_ÓÔ§ƒ�—ÆAA^å€-¼Ãá�7•"ÊÏMÚaóQ8Ç*0^­¨Áp3«[Ãz'ã4¬aà7˾5Ðrk'�'÷Ç HòçÞî�u¹—S8^{íµX¿Nú7^{ãs�³°ºbNÎÙ@\®0ÌqK‡»²Nxh èè G30O4à5–•ÑŸ!×X»ÏqÌq6ùëâ]Ò¯{A d\Ýšíðu|Üö™ì„1ð?Í9a&]­isa£1TC€™¹#/ ðDE·ûþ9'�­:õ¬ppÜŸ8³—ýÎ+dï:f1ˆÕ�tÒÔÔù…�Ï— Iò/«àå/Î�•kñ=}×YØŽÓ5ô´Æ [$Û½Á$e†øÎñ?<^ÀÔ[vÞp�æa±§î‘<7Ë ƒ—ì5/Š*\ðUZÒ1eõO9¸jÀeuš ññ;Ú+Ê 81†x,m;¦ís둻οˆŽ®Ì^¦5µIKV¨™°bijt€¯oò°É\ò¾ €j;YuøñQd$ÁÙø‚Ïšä•áÈkf�¯˜NœÝÒˆ{'�0@£œ6øµšðâLJé6vƒ®V’L“ŒÜ�î_„ÖBŽ‚·n¯|ëÀ¡#±~“àlQ|ùâ…H »ëî»YzYº÷÷Çï&ðyþøÌÁköxvÆÊ4ƒ…9(çnÊ+Ù'+m öëè3a  >ÍFÄÞ¹ïîU´yGîzºÓMœ·H›�!îYÈ2öw™`¾ö™rÃP>ú Ç"0ñLÛJo½s‰õCŸj¦å¤UêÈc m{ïžØyÃVͶÈ^¥ E¸oÏ‘/%ªÈ;ÆÇ'¢ Ú�ƒ¨ä Xß�ml+eÛ¿Š: HX­#~̉ òao°]þb�ãú»k ™ÎúÔ¡”åî§zЏý^ôL¦ñ¼Ü_åš¶öÄè0²†£ÌîAW_.¿ÃQmÜP¤‚нXAà�ÒŠz’uG÷t÷Òn®Ký¤�*¯é²QdËràW+¼¹غŸÊŽà¡ŒÉkƒ6M^)•ƒ:MµÝå¡ÒŽ|MåÏõ/ÆÇM B‡c~ÚÐ�8"¿ÊsáµMWšéÙ¥Ðe¡ô[¼Öv¬8A©àr|“œo+Õk‹ò¦ Ì« `ïÀÑÜʸê1Á;˜ixªÞaòeð]gÏÿÙqê{}�2 óç�·ÌÙ ” "uèÏžY ‚¿áÆX“�2+{7 l1¾•¶óè�ÊuéB]«Ú…„ƒßùü ã­¯Y) ?ä?e±Å:"›uœÓ*¬B&ón>�b«aƒA-8�‹CÑmÿ¸�ˆñ¾E*Ð<8ôOpßÎW-¬}‹ª]Û€WùN‚¢&¸hSø¨IRêéÊ íByb#[vc‰€1ïp|u€ íË´Ÿ­Å[/ÏwQê}Í$[XmX ,ä­� 8¿ Zý¨ $QØý‹}PÎÆðIÉ#NÁ&�¥º[–¿Ò‹óQnÔ“P`‹yqÉýð+tHöanÄþE"´oWíá¢Å²š¿¯­tÁ& ™ÏK…_�Ö¾E‚½Þ«¯©ÈÚù˜d»xŽ~æî<ÛÁ§"üß@˜�niÛÀ¤ÁgÛ�¯ #MÌ)§Ê0žaÏí<Ó@u{-ݯ j­,so……òÌîBâ¨x4 Ô3—6ö×Ö÷Ê…ÀUæ>¿D2ªa¥5çí3Š·”×�oÌË9ˆG3ðWáãÄ—];Ú°‡Ðá« Ù nð[fCòB9G ’Œp·â�½†9«ÿ[ÑkPÎîžyl>K]b½Ú¹RQN%›çñ ÂÉä7ñZZr¤Ëyø§2Ì@»HcହÙ ¾y€ø¤�`$õr?—>‹à–]8ùz`ïËÀ§]áãQ É­FW3q�g‘“üûª]QU‰ÞÀ½Žï3&×0ó¦Ò'?óBþǾã´)ãØ"hh–¤�¤ñVÈI€i¹a[pÿ&xo%ªëWç«Â†­äS�N$¨V°nñC;AÙäœ ¸kÃGÒcºn«.ÝWù—¶²IÅâàÌëcê•™”Qeà´|fƒ/å•6uU¥[e½²Qž¬}píÊž÷`ΛØëý¡'QøSƒ¾‰þV_/=ÓqÙçqê9@!웑¡t<üÈ:a*^þàK¨çk ÿè*8]M@ò—®Ô‰”GsœÍ|“Öü&ƉÕØeêˆ`B—:Œþ(*ÀÍZ`nÑØ6ö~]C ë�vœÏ=Ž<ÆŽ3HggšŠªæÔº£ú…fð‡ ¹†Na’Çúêà•¿[�Kq‰²ÒÕ§šIŒhioã^;ð¨ß‘pÀ¹Ö¢³�ôV¨Š®®B'F—' òÕ!Ô}07Á[Ãb¬�°àÁC‹À“ ç|FœçÍ>zö·¾y¼�ЮÊc!G‰£m�KÂÀc[l­®hb�z²¾Ãòµbs;‰´Tž£êªGw¨=ÉúCî¬Aï•éâà•ÐÓ‘meàµÉvÉj…·45,¦ótkª³Ó…Ç=ÌE—… £ø®¥%y¥x,«W—Á§#á ¸/­”c/ÑõÒè:Xg™³/Y>&|US$cÛ‡ØÉì3è‡Sìu‰EÕU ؘí”øltrƒæ�*Ð,“€UOW;ð(OçßåÝèûàÃèÉŸ´;W7_ ðÞÊyé7¦çÓîÞ� ]X"¨OðµPW–ö6¦=;ám�ب¬Ã¢±µõMTÌ£‡âóº|æpà(äL1µL`w]ƒ´F^Ú™BŸ‘¶\k •Þõ­ Aó2*ÊéüR¨Õ÷X7ä:2B:�®‹ì‡Gµ]½r >B¢>KöøÈÍ´i¥9úŠG²Ø�ÆvuhÀ/$^ÉMåÅÎK¾#þ™ä”í`™›Å…`62Ä`¾>Víf“´å êQ>ƒHrè�ð[Ù^J‘÷Zô²f'ÉŸêjËÛ-9G·àX¹ ßEט…¶´­ü»I%ºâx®x¾*`¤îUnX„¢ ëÜLøò¨7e•‰yåÀYût…/õgy±z—6ˆkV|à˜2W½]úl"ÉNý}F wκRè�Õø1rWéš!ã9uõÿ€AM´ ñÃÛ€ñ8<Êcoœw|ñ—¸¼%ƒ+~¸óÏü•€€U]VëÜPa¹ýR™’¡ø¹ç�ë³êè<‚ožx3=úȧ‚ÈDP,ÿçû%îCºß8ùfºxñZ˜?¯„•½yF“Fe__?ލbzíÕ— ߤÒt7Ì )Âå{­ö6û>ª•F €?þ4•7Soÿ¾pöÜ®ihøŸBõøño¥¯|å—Â0 F3<}êdzáùç2P"¶zÓѬÃS'u_ÿ~˜VÎR”á¸Jî¾§´¶R +;Êbå1ßÒœý® ÷Çp^®©™V<žÿíï*$±¿ø¥Ÿ¦:âWiUÒŸ¿òâ³éÊ¥w¨2h¦òiá…€£•³‚}hd �c&&Çb<+$ß¹t1ª ¥8´È¦Æ ?ŽãçÜÛçQ:ŠQE¡ãå Îß¼­ÆC ‡éêÔ¤Jâ㯧'_§2ÿ~Îò;ʾ޶Tœ�>s"õ÷î£ðÌéS$ ì µÌܵêh´MýSO?•>JÛT“Þxó5Î]ÿDÑ’ÃÁû ž¹fܶØÊŽÛ[ce^ü°Þùá¯8äMe8ªJ4ø“ŽÎ˯nçk: ¿ß¥‚¸„!©BG·Îºä=Ž/¿‹@?ÃŽQ m™ˆrˆ1£Ñ©c\¥×êSƒ“Þ«ñc Á¬Ð’c`€¡†¡÷T²u²Á9Ä:î厥²ZƒÓZCË–£: TBwíèˆw.Á‹ÍÞ"æ§§“Ì÷){<6³0q·a$ç6l:Î46­^¯#ÃÒÀV’£PÂ�"C™wX™cˆC(À:4”= (ú¾ƒ²ÞïÙXÙ€ÓA¡£F§�A\ƒ¶¸V®X-¯A‚ ŒK;4 Lá)M\RéEg…—b +­T·u8¬cÆjÙì@Èû‹C ‡ŒÊ¹ 3=ˆÃYdU°­–t€i„ÍÍŒcüYeLÛÀÏÎŽÇ^ÌqÆãôç ’-¼¯¯g_sÚè`¬©“*ÞyŒdùm81 8|q]¿6Î ÏXµµ]0^Ê ^8ÃÜ'åW8’˜ž|[…9‚–>þEF/ó�öXÀ(Œ& %ñ#órƒÀ‹çS�yT¶cÔÒê;K�ñP|ÜÓÓEU"g;â\Ô(·òG#HZèþ¹gÓ: M-â$`O¬2oª&ÓF�£ŠŠŠ5œüûèê¨ôÑ çg:uØŠ':suÔlÓæ® ç Žý¨2‘çˆNZ1Ò&`Àð·Š‚ý$ÁL‡ï°�שQc�B—ÁNÏ™Œ` ø¡ÁàxdLGᬠÌ«Á�«A·"n`$UƒD:g|#‹lài$éÖ‘°Ë�‹‰ržÙ—Ïcï½õ�Žhù©Ïhˆ•Æs�ŸùÖŸ.X1ùÆk¯sL/°ÊŽuñµz¶Å¶ú‡F²|Ãs«u&‰ÛÀCÚá„”î¤×mp«™3ÿ®\¹ �ÒõYô‰›T°HJM:¸¤Qù�Žfg-^Ô²Ç@ðšÀ�„:ø¬êÓÐ3 ‰?&.y–øm÷¢o½­æ ŒètÒiè\"ê hâlË‹/À/8”äÐ7O¼‘^!¡ÐŸ®_£’ú|T0¹— lÙ(︖z÷õÇþ¾9òZtƨö¬>ßÉ¢M.+‘ïE‚ kþ‘´  š´C‡°ÇÔ“Ã@f�òm�È.Ú¶ñõð¤pŠ2ïªEq›õƒKÜ÷È€DZÿx8ðÏàˆúÙ¡#G 3äëâ8"%, ®ã˜p>n�ô)žÉgcžìƒ{hb&·ó�Iâÿ1€8,,úúûÀ=Z'ò¼´{Å&á7&˜(âxÒ½I�/ìƒu^ëÔQ¤ ñ2¹†WÅ¥õ sC^dU�Ž3]|®Ì‡˜xàüåÝüæ(€AÇ„kâ7æa²DNtFêŸÂ]Þ¡L°‚H=WÖ™@@‘~ji}iUy¦£Ð£>Lâ“•íÒ�¼Š"x Nsp¥À:„…WÐ Ÿ›èä\„„ë×¹¾î+£åGÎ[^ArÖ݈�` ¦�A¥`›r×ËÈß8™w¸ÑAêÞ®,@ÿL@'Œç”;»Žñ)ëÊmåg ¬£ ÇŽ÷›p¥�bÐÃ.BG´{éñ:7n ÅøB§±ë>pÿaïiõõ_ä=¶!·-lî–²{Ïž4þùn;#\…˜¬ÒÎ1=&Õè/Ékñ$’�\7N`»Ï„s ˜¨ï4QÕ=§Á½km! Ü`té2ªÏ‘ßvµX^ãÆrö/Ó±ÂúÇ–V§P'†ŠxWö{ÈCìþaÕ±�º&t¼"~y.ECT;&XÝçüÑø.n9yR0;ºØˆHìˆúhT"�¼šª=ï‡3/÷Ø eN8y™ Þ«¶Y‚<òúúS~¤UÖ·¶ÂQ̈�8î> 6¡Y<°Mo=v�¸]Z¤ ô0+ÿk¨ÀtßóÓÐó2ð ˆcoüÜc œ{K‹g‘³—ÜßF‡ p¨šµ‰¬€.Ö®bâÂü8ü‹{Õó<Ý@®ô¤lö¨7+ìj`âñ ÃTUcOÆ»rÅ»÷�—óFâyì-ë�Ï›"C·T†b?xlƒ•ð⃟«–Ë+��sTŠZÀÒ€ aÀT¾4lÕת�½­ÐÕìaÀDú³‹BNœ�mdüõkÃÂT»GÚˆ@>;È—Nùÿ±/òH“?ì:#ž˜¼âœã8 «ÁmïW®®y\¤šÕ@¸ú¸{Ë–E‚m• ‘_šÐ£ýlÛßœ\ow£"G\tDÕ~>fÎÜeí€Ø¬Ø3p”ßÕñ"Ö½äŠ[Þ'dû¯%ðžÏ]vL4Ó?yú:4:‚ÝsL/R%òzW‡“— �D0©½ÿèvÙ�5æ ŽÊ?"HλÔM`ob “"5fóCüãT½ø®.ÑÚnWh›=5E$�n´Ë‘ËÚ!ŽØG5Ñ!4•à�Á‡Õ뀷zç2p�œ¡ó�›FƒÿH?¶|ŽVùw9ô#þKk¾Sܱݿ4»…N5ÇóžîÜ\«ô¨NlËðq|Kи‰�îñäö¼ ¢mÎ{´c—€oNÓ6CÏßåƒ&7cÂæ÷�Œ¢,So*‡öL” LÇzi��l"…vîÔÄ8¶o–î›üV^¡î!>®ÀóµÛ¥)u �Q[˜§"›G¿‰Jc’€L^·"Þ„[žoãƒVþµã ßÓ½;üRã¼k�D �ÿS§¸>�j˜—´(n,ZAÅöâú´fç}5”�oP•>M¥9ì›$t$øœ´i÷¤ÞÞþÔÕÓÃ~âA‡“w釒f< Ýã:´Öç-d£ c~”÷T¦öÝGзMÄ×w`bÁ牗ROß¡¶Ž^†§‘pBÄFôɹÅ9B.Ág;a ðÝl pkc“3ë• Õe©wo;ïßJ¯¿5LR=ø„<ÚX-O³àë›O*ËÄôöܳÓW‰)@f4Xkl©Kãó›in{^�Œjmß…(wi˜c�XTjí"Ñ=I€~j¹'uîîŸ8Þ �W^ÜL¥ îZw’$2xWSÿB_ŸU�®ÑLñ•X (S_µ8Îýðg µò.ÁÊÂöÍöýc³ëi„sϵ[íôbâW‰/hÓø³|¼Ž3Ü=Z­¡ })q4Gûcr…¾ õ;íau¨Íð›Jwe½¼HYßÀúê±EôÇmÁû¤E>æ-PÉ;ô·©JcÚÕÒ]$—Ø[�\“®í¦=§í'�÷K™]GãŽ]Ý¡‘ÆˆÔø„‡¾�HHËÁÃÐÉ™€°‰ðƒYà¥LÒ&—&MV›&)&w�„Ë3N<¼ƒÍµSNÁÄ5ìÀ²ó7ýmâ)ƒ¯0YÌÄy×V�<Ñ7² MÙ1gmMùaÂ�~Ú÷«—è»T¾ÚIˤ ¶�wŽƒƒ7Àß:\¶§‰±!:ˆÞ€¨’Ÿ"ÝpØ©;×ü•„€„i9;As ôv@¨øû%“²�z;ÎDï}ø³÷@–f×}ßíœsÎazòÌîlÆ.°i‰@,Á$–eUѦHYfYV‰–KE[,ÚT4eJªR (B¢HQ$%‘ ("ØÅlœ “S÷t÷tx�snÿ~盌Fär�‚$¬0˜íî÷¾÷}÷ž{î ÿ.U,_&˜}ñâyªoÆæUX¨ÀüÜÍÜN‹Ÿ?ñ?”þà÷¿ÀÙ.Ýáèú¹™uFºPˆ*ÚžîžàÛŽMGÍ—JWƒ)²iɔר|ê©O@ñ«ÿú—Ó�þØŸ%€ÜÏqŽQÖï=þèé ŸÿÝôüóϤÇÿ`|÷ܹ·Ògû³œµ;’>õ©ÿ‹s1ŽJnEVJæ�³ü½l‰ëý}ùŒ[Þü#~Üþ¿Ÿù}¿8çŠçx»ü=­¬�ÛóÏpŸ¡UáŸúáA!ÿÝôêé×R?4îëÄiih™Gñ^£•ÉH:uêÖ­0e4]¸x.î×É{xdB“qö¹•1ƒC‡ƒ¶¶�»>ŠpÝOŽ„�49à,tùà‡?F²Ã‘úÇ�ß•~ù_ýBúÞïý!Α¿7è)|îÜ™ôÄcL÷SïÚ}þóŸKÏ>÷LÆZÉ“2‚é—/_¦[ÀÉtüä]AßÑëÃÐüzµ®�JÕJö‹/òÌÃñÌêj”ë«"Že¿åå¯;¯ït ¸u|ò{ð¿ezÜ>G÷Í­/e‡ï|;þ­È6¶šË—ŸÝþ}�l�M_ÊeÁw+:²,ñ,›Ñ€¶‰B|9 ÓUrWs7¥òÌÌS“ÍM-´¶9ßÝÝŽŒ ×jðäõ~~Çö@.LD"”€¡íu–}­öõ8‰™Ü4•5|ðã4ô`’ w.— �HÃÛo[� ´*ÓÑV;«uœÐM*dbœè�=þFevdÕÁNfœÛ2€€ ”³>5juèócpì:òÿ>Ç@„×éÈòœœ*d–A�i×C0Ϭt¯5{ÙÀÐ:À¯m¦):�ñ{îØ2Ž’��:�PAíâ›ÁžmÓeª®6g1øq–<ùÝ}³\÷9[ °vžŒwŽZyîë|¬æžDLÍW�º'²ù<@¿p8S ÷—#2`Ä /�{«EÊ¢£€E¼a€R»ÊÀ°« ëØXÖçæ5 8®•gçàõ¶{Ì—Õ8L’µb­Cžh×9}Á¹,X*d²*quu‘„Ã7ã»ýƒƒ¡ó3ÈÆ pzîüÙtö­ì/ìé±™ -¼ !€£’ž :Ê#ÃØ1W¯¤ßü·ÿ&žáš8B @>ÖÚõ•^ÒÔ{p 01yîãæÞ›®%übE‰ÕöE¶fP؈Qö � ÓùârìõÎZ^£Ó�2!*»n®‡Õ:Îe$HüÛ_û×1žf*^çþä~_ü�ÿ�޼{¥ÊýÍHBoŒ�¦¿ÿ÷þßôÏ>ýóhÛ%øãk`ˆ$OøðÍ×_ã/�‘°5³‰98±{Ù‘\ev= àÙ³g’¢Ò,ªãkÆ)Ý8®Ø3ùtx fs�25,Mæ,Pé}L8^ái¢œ�2OÿE¹bÀ#æ,/#/œ®roŸ¹Yá›�Í‚é{G¶w¿ÛuCÚì ƒ"�ñª§Ê+턪Q:ºº¹§÷e,ìñîÞ~tïJ:óÆë¸½�²À³·ÑETºÔ5·¹‘#Ñ× ‘ÁZ[6€mõÏÐÁÃçTÏPÝÝÑÑÐÂyëÜG°âPè±U ø-ê¹|‡-¿wŠêp“ç\su¸>ŸUx�ŒW?A ÐÊ[´8D0d°ºØý.0æ÷\ƒyV¶è ÈêÚ¡@Ý:77¨ï¨Æò\Ï{î¾;õ–™Ò�±±¨Z¿rùò``³ _ÆEÎ $zçOB#å•ànœQÌïKа‚Ÿ®…²½†9æön¤ëããÐ[í(¿²ÒÌ¿.lŠjõ |RO"�É Vö j[�®Ü¶;�>f$ëqîºIZçÎ_ŒûH›˜˜�[€l†„g»ÀÐoÔöئÌÑjUå{IÑTTæÕ»î?­ (5Lr-HÆÙ\·Âx%‚S‡$�æLtN°Òׄ.í”Jæ¨Ý˜÷I•i±WY“|?äpìU¹7Ø9ø8þxÇÿ‰Ý»fU�î'; ˜L½rîõ8mÑîy«VIò™I?òçc1€ÝÜäù�Ygƒ$UÕu8c˜D˜éÑ«€ÈØ�lñ¨Ç 9Ã^ „Ç«ûÔ-ÀÙ˜!óØÆawDR Ÿ»�ÕÛ&Lp¯aÿ€L««Ýk~®½RIbìežçsÜ£v¨É& ™Š•µÑŽÐ¶V^što0ݵ5 @~6Ю\à f�³$AŸ¥|óY«H>¾Ï<ØòRUŒ&Í1¼ì¹¼/¯É“βdæÂ”%‘ÓÖÜäÏ¡kìXcûw�0À[k°š›œ,ÿ+Ûý×ÚÜÏ�8±Ÿ‚FìE÷ž Äîeuà ÏsÞòŽ•ë•%Øoȃ×&>›ŒVÌÏò �]Dœp<Êjçíg…YòŽº×€Ì.ûJ~ˆDZæT‚lGR ãñ']cx8KÌS[ùhnàå°;¾L&(¨PDŽG§ö¿4›˜š‰}jŠ*öfñ¼ ¨Ì/PÆd²zTù‰+Ü_ƒ¯DÍö˜Ï‘vú<ÅÈ©m]!sò¬j;KDKžé5òŸ‰<¡™»ÏÓ¶RÚ3 öW�ëãÈ÷Yb)ÏCÇÈG&S¨çYË–®¾tï£#í~CWº•EÞÏe¶1tS×Ì]Šä¶u‚® Aý=Șf¦cLÊ,«² ”µ�P¦nÓöR¿½£×-—‰—T‘8ìñ.®‡þæ$­Åm_†¸CW9±Ñ�䬃2nƒ„†“¥X_iÁ ¬,•ë²së÷wáU[­#kµ¿µ©¶ð¿ÔmL'(S—›pfRb$V¢#½Ÿ2ÑïÄ3™k=­Á›ª��¬ãú&�jt äBñaÿ*£ä'ÖÜõ©‚—휧?m‹x�†3¶c›'tDa–ìª�d¢’¾‹zR[P,Ç=£M¯O"ïYÅë:F’«z‹û{}=×ïò]õ€úXêþÞÝ{áþ§�ß:ôõ8Ñõ2qª�8²î¾Ô2E1lí[õæ<÷qîú“‘(ËZ¹oaÛðïµy˜J?ö’üËÎ/+‹v£²s‰±È=…o§Ï“#¿H�à'b#ìµòŠl¼îÍM*Æ×v�³È©šÊ¶ÔÚÑUNjܳ¡}QJ!ç’÷ô¦Iº ÉßõÈ¢ª*)öЙȳJ*ÈÕÿŬË"zdsÛšo££W7LÔÚM}ƒ$ °Ï.\BV�qôá4‰8¿+3s©µ_�1#«{šJRM¿Ç$Ò¹‘íã¹µ4»bŽšèL²Çþê^V~ã×V—¤öN鿍^°È¢±�ÂÎX_C>”U ³˜¸dö à/ ×±å<â ¯·;‡ìš§Íe‚›º¬�Äùäö(~÷"ã^Ú�Ÿù]»Ã„#“™ì£_oL¢–î2k­ ŠŽ*ð_™òJ/)_Êñ�ÊÀÖ´…µñ¢Ã Ä20l…µþŸ×e:Ç=ÀšX±ŽüE1mõ3à'�`ÑFTF-•Û©A»¼Š=XLWyɤ¦môÔ:AùƆÖÔÔÖ<þ$6ˆ¾¤¸…|íq4âµ,°nà\•éÆCÆÇ®‡^Å®píw¡ÿG%”à˜`WâXkæ Ïׂ±¶s,õk£¬/2‡äŽ=ýMh�h ѯß³2Hn·‘Æir”Iv+$EégØeÌ*~¤Eð¼�KLÊíîîHc$¦ŒÑ­yva=MÃoÞU;ĸh@*Ç~±ãŸû�× |ÇR@)ï<ßNß÷Ÿ×èÈ«<5@š›ÒûÞ÷8­7Ÿ¦�7 Š€\§Ðõ¥�b5`Owoz�`õe*ª5r| ò &hëtúOGçÍÀ‹†Yž˜=”]·�`ÓAúð“a£o¤g¾òtúèG¿;îàPlrî¡¡ó�<™¾òìÓ8 ³!Àó3¿‘>÷•çÒ?ü›=}×G¾;€õ²Á4â;7�‚pv˜Ç­¯wllÝò¥[¿#]txº»ûÂxšÜª+dxñwJA_ UPãgöo¤¿ÿ37‚ÏûØ'�9JO>ù1ν‡ ºgê-§£GN¤1ð™�Tƒ¼üòW ²,ƹœGŸŒs;:ºQ ¯¥—_x†5*#ya0�\»ëzÏ=÷ÇOÇyß}!& Òç~÷3Оs†Y3+±lùi«@׍ƒ§žú¾ôå§?�9ó‚üI”Ámø_Š ‘}èIÆVÇÜÊâÚk×®"¬×#QÃ@ÑWžþÏyƒ¶•µ$è�áæ:ø|Ü�× ÜN�àŠ›{æöϾãþ†î•hÕ�CgÀÅsx•9¾ûK�Ì÷muê>UÖĹÑ\¨ATQ"Ä™¸T?é*O•‰:»x»-F5äm»nçnòK¹muІ¸�A>3lí,ÒAV¦`‚@DS£mL©Úâ�êññÑ�5r‚S»d<{œ†Õ]a¨a€ ˜ LèpàtTLùR×4œ×è´¾yšÉW‚‘û:Ëœq.hJºDà|ç+ÎXä^Ê'ÇUH5A¬yf„¾ãÞ:‡º±”Ã�70¥x숀 ¡A0ì³¶_¸bìÐBúi´KW {ëE€Q$1ÎqëpÀ<—vm–3¾"ìðÌÛ-«Ç Æpï=.!—Öƒ<ÇŒW-V�œk!°º˜ïDÈ—û ÆdX*÷Š`�­þ²Š„ª&ænbŸN–çë f:Nù2öš}ûy–Uë‹ÐzÌ‘žò¤´^8„-âoyDýïþöÚØ£èâUèZC»­Ë¥3䋤 9Ö{Ió|vÿQœÎákW ^ÁW¼tuÜ pt­$�d çȾ˃s^‡ÿÅŠÒ÷~ß—úúÒWŸŽs|_Š@Šç @ïã¡ÙR÷ƒüƒºci~ö·~½O†´ë÷1Á„çò�ZÚ |úÏŽGÑ¡ÆV̶Ko¢‚pšã~í×~àk*œ_[upÍö½×Z�ÏmÒÖÂ3V~mÀsÅÒ�5øÌcY¹�˜x„DÏ�ÁÐÓª÷2ò'ä3!BN:èØ›µn"Ïw}ôã©­½#=��2AEýŸùñÿþdÈ¿_ùW¿ PÙõ‹$Èï‚—µû¤Ò•}ðº²Ôµyö¹gàkÎ$è.o T–2œý¬Ãu´Çj P‰›Pzö­×c.qÞ;Ï‘+#Y‡õ¬WvÍ!§—�¥ëÐÞ £÷Ý„Þ� ö¨ª`™UqQ1Åg~÷Ðᇣ:ÍäšYã¨Nâ¾åÜ£þÖ‰–§ä»ø{‰ÍÏÿåx&É2€Á(:ö¾ï,ǶÔ>ŸÂ•'^zñ«©€ 8àC0šPÁo~täô~¥%Y$׈|Œý+J#¨¸Â\"èÀ쫟üaPv©²åüó�¦ý àwœ&X­§ òy1lÁMçë<ê^:oÇ`,¾‹ç”?òØÒ‘£Çá]+_KSo__T Ë úÚ Ñûà ç¦Õßs/ùy,”Û�¿³ýå± Y°|9÷Q%²Pú F­¡ÏmùYA;Hõf úÀ�× ¥®Î6Žõ:Ní¡‹¼p}øjêÀ/]Eÿ~ö3¿]€.yÞ&¶‰-�í’¢ vO®æâ¯ª'[‘ jm½jÀ»ýðátõÒE’ i�p§ ã˜MîÓN’ç6¹·à¡rB¿Ë ¤öÇëëË3‚ÙU!ŸdŽ]‚‚´ê˜=æ§^�kC¯4•/\KƒÇ T.ïT×Þq/”ÒvU½/X_ŒNWî„íH[]MÛ[À‹ÇcŸ”’àn°m„ ¤Ûk¨üʯ…ÏR6*[´+LÚÉö‡rÀ�ìˆçáßþ{ûŸ»ùá³ì0;ðÊú¶wõ†¼ŽJÙ­=[ž£¹á#ï«lnjn¬îŒCoß@<ÊÄõ�|$ˆ¾…M¤.T©Cø3a×ð”•Ƕ¡s´~å¾e›íJÙó\´¤uóZ´à¼<Ó’·‚_6©d[¦ÂM;Æj¡ h®ý©®S§ª·]gõŽU«ž+^Kuª`ª{_) Üĵ2PyÉ3Ø'îm ïc ê™%ýµu ¢™¸Á‚nQAÎ8M&7Hg%8¨FÈ-umè<è… ~ÜçLnS †Ù \àº9_‹´E °EbG¿µÓ¤”=û#GI¬"p¶C‘�tÒ�uEWUV4ü?xb�5pÌ�Q0'4soÄZó·>–:Nÿ1t“óAî¹òz£ÚÉÅ&š¡g”Xù/ lÓnG yÙ/¸¯ìˆ¢>²Ó‡º-ÓT-C+“¢<Ó\,A¹¶3‰ù«ëK�%oleGÀ*O;»z/W–ºþú˜v ôÞò]ضÌ)’º‘/2�2yáŸÎÏ€©ÇèØ©­­#æ¯ÜBó„Lò^òœ˜Ta)]6hkžH…ÞsSœyÞÜ�zx[`291›ª›ðA¬¦Sk%8üO‡ºäw-g”·7Ùµ‘#†ª;RÃz :×#��Ýì‹]ŠA*µ»étr”ìMýôj·{‘÷W7Zylgœê*«’ë(¢¨Ž½¦ü0pZŒ½×WA*äs¹ªˆ)<™eØŒØìZŠ“œ—>¿Hç[lªjâ7=…óiqýjšŸæ°³…Ü{s‹DÔñÔÑ{„.t½,œC—Ò5`‹¢ÎÌvoëê2åq“´Ô�ê+mKm 2Üãv�Ú¢ƒÂ*²Gû¯ ;9‚Òð±‰l�ümB¸:\;ÉÎ"Q�ÜšŸ] R¾ÈÓUè^}·:›L„ç3Ù¢�.¥&ÆÉÇv¢rýytŒË.…ò‹v¬8%"$a9ªœ¶ú[^(äƒÆdbBßÙà8’iº{èÏØ•@=ζà{$¤-‚g’|QÄýìº&ö£>#³Jܽ¼Ÿ»ŸÔÊZ¿gW‰ÉI�œÂväoƒâ&dTÓ-dÛrňÛÛØ’Üs�äœ=:A˜´í>[çšÊªzäüNº<,¦Á#˜›Ï [ŽqjóD'E÷²3ä§÷R½äñ·ðO¹§ø—8ìëgþ$ÇL˜×ÿ3ÙX{g {Ì®ÈÒ{Wz—QÝ~S•Æ3îüç¾ã( @È; ·O^¥êg*ÌÌ`ÉŒ![[>üð£!@ÿ0Ä}ŠÀßLƒƒCPµêGãA!å+ÿ\¿ëstÞ5ŽÃѸ©ÌÃ1`|b>_!öQ@Î×^{-*l=ï÷òã÷§à…Y_ï{ïãqFÞ—þà‹é�7ßHÿà§ÿŸôÄû?FªãòÞ T�Ùp2SfÀ;òoýK èv:9×[_V¡;žûȾü«ŸúÛ89¿H5ù+T´¥��é1*êMVÐ |¬=yòîÔ¸óÕŸh˜ÄQØMO}ÏD ýÊŠ¬ÍRw7UìÜ»®¦9*¦l ¿H ê¾ûBY}=+SúYeŽÏB–ò™½dr"ô»œTl*ÿ'@õ^Öþ+Ï~)YM&PÐ`ó÷39Â5P‰iìÚžQàLÒ!˜?tèpŒßçÉ·ÓåVš¼›ÏÏ+ÏŸïæ¹Üû· ´‡QÊ,ƒÞfÏ`Ã}m€ò�<§|ñŸûQcU™g IÃÈ÷"ØE; ;[�»GÀÅ8j IÊ*±d€—¿UÎÜg§.œz$BºBû+ƒ¨u`fgVØãƒQá`ç�c�hÁ\A8Û–yþ¥™Äf—;;†F뫹�‚{Ô™B|G9çõ‘Õ.PÁœœ£Õl^g  áÍ{Y�DgYè"è ne¼2ßÊsƒ,ÓŽUÃ^'Ñsó4ÞÕ%& à�L à‚ëÕKêÏJ „ÏTËÚ�Ûæž5`ÜV?plsÓSéÄÝw‡¬¾t†o¤éáKëô_¸N‹[ÆÚÔÙ—Š§Ò.†lSc+ÎS})ŒÏ„1OðU€z�lßM2ž•µ§î»/Ž51@gàHym ­Á¡!”uYò“i�ß:ÉÓŒGzK;�ýœD_‚µ$cè\(£ ª9�t�Po¶Ks¬›û8 •| ã¿:—ê"iäZëˆÈgÒkNçD^H2¹À l¬9ŽP´¥f¼¶¨¯ B‡Ø~62ùqì÷ rGTøK m{• #Á ÇgQñ]i*¿Ð /xygÐ…Ìõ¹ÌUg"ÆÈë4øž<`ޫމŸ¯âàÚ‚1v®³Åý€¬“:S p'œ«w²­N¶R¥T'[ÅñY‰n¨.À(¡Ci;RNé¢Ãnv´vÑ:€–<^^©Î¨4ÈζfM¢²…Ê©FÀÞ}À?BÒÑ\¾>°çY”%86$E ëÈÝ8=îƒx.<Ã8œ·º]G[§U"h[iõϲ¤Œ ;È&ß,rΙ …Nt9c(‡Gµ8A+ö“{×ýmÒ‡ÿ‚è&aš´25:"· OpŽ£LRpÛ {™s·X¼X7ù6â÷l<&ú㜌ö=ר—‰ˆVÔ[õéÞ²]ŸU……Œ_¾õ>Nœî Íw?õ=¬aeúÅOÿ|$ŸüéûŸ8Îæh$#¸'^~ñ¶8­óÖÉã«$º&ÀþÃÿã�h©ƒ÷=÷ÄÞ¿réBzýôëéý 1ÚÓÿÚ¯ür:ÐO"#twI#åžGAyM�§Š¶£jcØPªš ŽÁ£h½Æ|*�ƒaײ·6Y4i­-¶ ::ÛÓSŸødè÷ÇëØÑ¿þ«¿Â>è[Ø`ŸÕ‘:ÌàòÒ1®�ûBW÷Š{ÎìsH�ÑšßuÞ•—£×¯§¿õ3?‹èO¿ðó?—¾øùß!‘ŠŠäš2ÃI™¼à™‹‚kVl#sLBq¯_º:¥IZ&- ôõŸú¬-Öœ™q³J™ŸAƒV$¸ÿØDAƒRZýŠLNTÄ^àsï0e½ ƒg«¿LŠ ¹Àg1&eôt�xFiÈ Ah®ÝÝÍŽÿðüPé«Ü4˜e‡Z¨þâwƒ�v¥ N`3øŽA¹ÐOÈ!墕 ì}ílå�rA I¹ô .HIZên�ð8ÿú™]Ï 0¹1ýCaNîu÷�{d½ëw "*ö¸·Á)ƒIû<ÏÊé»àf5ƒß×8 Ÿ_8{†ß›©R'Ã|Ý+Ú÷Ò¸«b d·Ç¾¬±;rM�5‚åèNå òó­7NG Ý`³ S¶á–Gå7éæ?¿#�ú/èŸx�:8|)ž©Îiº™Ì×ÖŸ@Wi­ ŸŽuë<�šÂõè‚ã'OEKG×ú~ðO‘ˆÐÉó6àÛátùâ™Ð…À­,·5xooØHÎ��9ttv€‘`²0kiåŒ@ž�{ì”RÏ܇mY Ššìl»W«rR[ûYPÞ¢jѤ+ƒö«{€‹´…§©ø*z ]Ĩê´úÑ@c–¤œ÷™Ij"0z RšÛÈÍâ1‹¶ÅV¬§µ³²Ey¹h`Úùi‡åùN0ÓÏÐ’9éK»/ ˜(‡\÷N$1¸'yO»Î÷ÿø|Ç:º¶ž”m�œa^Op|�*C“;Ö°Iì†ö|é~1aÀ½ì.#IÂŽÒzš™„b ÿç©Wa—8·M€ÚMô t.b-ÔÃðµòy‡ªMe ÌÂ=ÕÂèG6ƒúJPÚª¼}Ž`ñùž  µú^žCÚ¥9u ÝGG”=ÒF›ÒÖå&"ÊËÚ ë3t:BÆU!ë æVÁûVoZ-,¯FÀ ¹éÑ'ãßeÈWå¶Ø„üî8Ù¡ŒUPš{;jŸ/;Ψ¨gVÚ ò½ÕÒQ]ÎwÕü"¾9†5ÀuÊwé¶ Lf`Åàƒ÷3YÆuÚ¥E¹ëk"–D‹@›ãdvîÞ¢”vºË´�ÝÙã_æ_Èö£­¯U²ÚU 6+Ó0<#Ѥ†vÐîWÏ0ï?Ð�Þ$€ Ïk×jØ�À€AnN¾—_˜�CqS°VŒ8w,¤›‰,ò²Éùb!òšö�ã7ð¿æ¸´»ÕpM½GÁG;ðØ¥Ïà¡{Lš R»î„ Bê�´sô”ó¤VO¨'ëöç þËJÙÍàÄÀ©Øç!_åA×îfRÌ �áE£ëk5jØOœ…í¾‚%±'µo3¹fw ƒ¤eeò±±á)÷ »‘çˆUO¡+àK×D»5ìgÏ,îÁ0¨e½úËd;“�” —.\â{\Ïœöh#­®0@­¿`L�E Y#kMQñìÙ´¾ä×Xùi‹ë�ÐZɠͣü_[sŸèÿ­EB {[¿�刵͂®ÜžÉ« HƧto‹v²ó5–‘kî‘V’�º»:8‚çrÈò|×mðr® J»_¤©¶’÷Õ‡P†8ƒ?«ØùAWíj*MxÑΉŽ+È÷Á4“_—–”¿$1a·–AëðEG²ËV»ÚøV_›€œçÑ�"÷ƒÞ€ÉÖÈöu‚à&ñÂsÚAŽIËJ_F^qÿ+· iAv…Äæ¥ÿiÅpÇ3`ÑÜòMói1ÎxÜVsCô˜!zËÊÊO|ÿŸŽ<7¡Ñ®CC££�ÇŽ]<&°ÄñÑëñ=eIð8k�eÖXN {Ó Ë -ã01ß5t¹ÿß‘¾RæÑSš�˜Ä'ifÝ ¢3g· ún²†õ¼Wƒj‘ë§Ï‰vì'Ûê­`Ÿ."ß–ºÕ"“Ô™Êk¨L4²ã›‰y¶“6ÁÖÈŸ‰¤ ~Ðn2`îäKå¼sðŸ|lìþ�^d�v/ó§ÊT¹¿�¼Óï4iÒàZq%û!dm¤é*¸Ë~]“)_Ëxçç ÈÁkâ$&íîó}Ï¥ÏÚ¯#ûy¶˜±ö«�Í\kå ÿjñšhõ¬Íª¿UAe½GšÅ1z|^N²A–4È^†÷”wbI&/)äÄLô¯ †×PMo÷u’« =¥­ZXd’Û†µ—§ü}�äå}–0�NBv7Á;t„ŽÊ’d§û|%ºL {™·‰Võè+m)íÊž®®Xƒ©éÙÔÕË1zaÃ!Û§Ç 订3ÑÞ~G*Þ¥SÛ"]~ iUénj®ïM%G˜ÝD¬ïN¤ÁŽ `í<çÞý¾ÍÑ%7¦¯q­þ7X hÊ¿Jî)Íö82£¬¸Ž–õ†¬bƒÎ³wÁçXø­&µ·6Q1Œßÿ•ƒq”cW죓Ä,ÞXE—W–¤6Úµ¯ó¬ñë7Hú©&P‹˜‘_à)l—õ�RàæRmq�’ã<›£t55Uà×pÜÅ�ñ éÈ!Š"‹zÙ+`e`JãgSC­G�5§ñUñŸØöÁ‡‘œ‘&9C~vv>t�XÆ22ÕÄS±7ýT»ÌÙÕËAâÚ—ú`kðjɈ͠µ{öfM¨~ž¾ß׿T~«Sä-� (+j`lÈX®µK¥üà=<ÂB,pAÌ(»•„ À³2{GŸ©üã§ø—AøŠÇÎølu·òº»®»ÃbƒÚlY¸Qݤ�§M¼Abš]"µ' äÃ.â”Êñ±uß.ü§­¨=c"ø2üvcœîsàGàdå,’ˆèµòhØ”ðx1Iž¨‡ð{z9ÒúÎâû5#;Ëè0bÑQÄÏÐ÷«0Š�aÂV%ÁÓYXˆ¡�Š~étÓöØç˜&ÈØÑÈOñ¿C‡†ø}‹®ÁãA/;é,€ÇåfH d¶´6¤ƒ‡{ÓÀn¼‡íÆ|´:î¼îPà;–ogH„ 4áuëuþ®Úø© øÃ ¯ÑIðŒÙF X_^ë+¿üÏÞ ŒÝÌ‚uÙ3¾nèøž’ÙI<ð`ÜÏ{Þ:Æü}|F èÞÞÁôüä_!�?€Ñ’�OÞËYiˆÄw⿾‘ý�ÿó[ùó�¢Ñ­Ïˆ C £€ö—'Ó�ý™�óY1º9;0ßnOÚK§÷­#(v`pç¢3=úè¢j]GOÐï&¹1ðêHxx<{ •ÞÞ¬ DJ_áÔaŒ�¢*ÝŒ<[é™]«êØb] ™ÊÞŠ¥Gy,Œh�—f”£ç÷x¿üšæ×§© >�:8ƒOH:çéá]‰[_ÿñ_·~òîø]:Jƒ;øÝuÊÓäÝ1ƒ;£üv¥@ž�üiÖ£v€Å· XYêž2h­$Hªr-‚Ê”êê5‚Vú¬°åìÐÁ!2ª¯§åÉʼn•±: ‚ˆÉêI_ÎÇóª=—ÍÊB«“\WlÛ"ïѲ žÍ@cÁdôv3Œ—YÖÛþO@ÉÊqéWß²ÂÃvÙ¼ÒNlŠ37!€ëáyêV¦”à©ñ Ý_²p€(-­>Ôй�t 29¦iÀJy=[¯ììw[aÊϱ¨\ÛL ÿÊåË|Ÿ–wããèÛÖÐ?~m¾}6ãQ'ÅÚ2<¤Óǽ+*ÒéÓ¯BãÑÐý‚›³Óœ_ͽ­ps?zæä :_ôöõÇO[nO²× +/ÔéÞ_¾�Ÿ¶‡l¥‘í._yé«Ò B× X�$€Y#ŠÚ"èèÞ\ç½°EJ8מõsÿ¸Ÿöq¼­Œ0•N®·­Üá}ÙNîÂùsé 83KÉqZ€æbß„|�&!·yn1€š€¯#Þ&¹=4bÿÕb3l¡w¥µ-Ý´�3ò¤° ;� Ãã�±–òË çW�2–79zÊ€ç±'COz¾ä�¡CS'˜e·Ç2y〤Ý^4q+°\c¦¢Øc<Ó°<6ਕÇòž2Ú*tý<ƒ¾JÃ[ê„ íõ µô�™ žëäœGŸÇÎb\‡Ãg�±¥:ëóÝÂð¹ª<‡{œõ“¼l’‹Á¦!æ"?8Ç?JPÜýdPR10áý"¨ÉÕ]ˆœÐ·òÔG�hs¸¯”éÊ#ÁAß«0c¾vì²Ý¾­՟νºÒÄ*} ÏÙD÷qƒ� Ï¡÷s÷¥ÁZ“zL$jgšhr€À¢v˜ç¶pÛ¦Û=«l6ç­“öêw�ë±BÜÀŠÕºÒZ©¼T?)Ó¾îò®ûæ¼¼Nþšžº‘&ÆF¹�U/ÝF @³�ÿ}øCÛ/dÏ1¨gí;‹s¹4ïÏæn°O²Š|+O8f@=I'5 éÐ�Cq&¥|9|õR»v�@/atœA÷¼‰`þϹCaÆEâ‹RF“ò¨D¹£œ‡Nž]k€c‘Ž®™k•u")Dô–—´ YÅ%‡‰�Y"¦¶§à½ÉL®%×7hEŽè£[éVZN5fèMÁWÆ„l°C‘<Ý?t4*//�y%ø:’)±¯\ë}°�\0tä¹E<}¨l’¿b®Ê3øNZ_2Äßwjq³$"Éa“@û8�ÚIÀ¶-–V'ÍcÏîlpvlSOìEí %žkdzßYaÖLpssmfÛ Ç£‘¤qlÅ&É (MÂtºWËY{» j¿æl‹Ìs•!³91ê?éɼ˜ŸÉò¨IvbK¥ì®€ô†¶Ønü®m&Ïföí¸±ÍÝ�Ú_Êoí=×еà[ÑÝggŒýá¹Ñ‹äs ¦,�›_ Ð�r½Z[I6eÜvFT™§O Ì1YØ€š´µryï:Vcs*ów6ítaâUA$ªÍ#?”±ŽÕêÕ,à1~íV÷‹`÷„º! w- x–sm"ˆ^DÀ}ƒN6L“'õ ù€ê|¼ìþ«cŽVºm漏Šö�KVÎä—pŒ�>¥:z:Gmämu5É\è1å¨BtºiÓx~ñÂͤ‹Bhàœý|Ÿyî±Î&½ºx®™šVÐ~­€ÀQš˜×É›òU3�²L ´ë\Ç2ã# » ÀxT“ÁGý�ªúÑÿÊ7“ZZáy]¿÷vw¤Ññ1îiòD–Äj"©Ç†y_yÔÎ)ú“+ÃL*òè-Z>s�z´S1t0©BÚ‡Ý È(§J q%÷±ÒR»Áõ7èbà�‹<¶ÍM?Çy¨³}Ùß`Gþ~¾gR�‰ ëŒU1TUÓýÄêÜ-è"ÿ)S pé+h¤W_T� 816 [òª6’6ˆ<¡ÜW¯ásÍåHÚbœžë¾/FE;ß÷Ü`ùIû͵0(åç& ,˳Ôë ˆÖ‚ý±†Êý ý&ÿùž~µ•“î£ð#Yû¼^ÐÿpLCµ‘ʰ‰õ+Õ]î_}|EŒ4†‘ apZ,S?Áï¶R ì?Çx†¤»‹AJ�aX ™ZÍ\Ûé2£/k‚wÌGzA·Ržç~Wö˜œm¼ú¹‚±Ã/žëEë$/×â¿,o¡ài­ «Ç§¶:³˜}>:>ÁøHÇÎs_åé =lÜ$í,É;«â�õ‡VÚÖb/ú±UUMÈ5ðV8šùáwê§Ô³w•q‘¬Éš+´ïÅAúSwO7ë®?ƒÍÔßÙ¾Sg qq,|©n¨Á60п†-ÑLRM-k½žF¿ô9üÝSLpÚ£0(»…|Ùäå"ôL)ë]Pʱãg&S_‹]VèAæ¥ÚO‡•'®} É宫ûȵÐçʘS1a}ó&lJ÷¤Iú(ú…Ê\“µ¯=ÓÛ »üh¬@½]„Ï£ÌÞf¯U²VÊQ銊²$ZíùR’�M–™!ñFžÓ·iAÞiwär3È üTÖs‚d‰––|�S!¿œ‡zÊÎLD¯Óvò¤¬¹´•FÆ)bYÞ'8¼‚Œ*N�$ÞØ }}Ãã{8{œ.ƒÅå�¬MSÖI� y�µ½½œVÍ¡÷H@E�oÓ~—¹VQ9nÀ¶²Š®i´OßDŽoâÏå ‰NÍT¯›¬¡ÝR^N—DZtÏÎ#³ A¶�k“¶/rdQ ûOãyá{)GKùó—çÓÔk´Sž¼çA׎¥ñÑaöËNš½”ö–.ÑÑÌ^Î!ŸI̼Œm_U¶’NmK¹uŽïð¨4Ï–ç}~i¬ª>þJìÕ2ÖÕÍ­.QV™p.Ÿ›4¾eðÜ ^ê6åµG ªó«àqõÎ.ü!¯¨ÌŠY[1._ò�2Ä£«MŒ#è¼GQ‡�äy-Žqäù®C-×­š–^ÚAv¹Ðn‘' T{¿(l@f;f»å¬¯Ò‚±îß”kÅì/­­íhùP,ÄNŒúÉÚ&Çj»#jöÚÛæx(v® ïú�áS²å9eúÁÇéÄu =ûÌWÒ•ë7}µÒkÉà96];ÑC1ä9ŒÇÞÛâx‹öÔ;tþ¦бœºûP/šP²€}zù³ˆ½“OP1ÒóÒµy¤¹+ìæ¾aBèhp?0“¦Æ–HdTv´Ãûë\c2ýöfCêi¯ÇïnFZ¹_â¼væÃJßyýפ€ÛHö¸óúö¤ÀÛ9Ç*·û<>c�Ý”î¾Þîz?×ÑË¿n¿Ö¿}¦×(\½¯ÿny�N� Ô£�=ƵY`^Ã-ÏÿÒ<—îíc½õïü5ÎÉ€Pwo_Tlû·F¿Ž’óÎ_—ÿé=º{ú2Ú11�¯½•–aL!ˆ´QQp“–·ÞƒǽòÒÙ󼇒6.7iíw4Bl§(¶cÙ|–ÅuŒÃ±øÒ¹ôÓË×®ûúõqÿùFeÂ7z}þ9ÿ9~J‡k¡�@©Î†Ê?Òÿçxæ�{~gQ $|ÖÞÞ €>ÎkÀ_œ�Âj'Ae� ÷º²×½he€{T@Õ—{;ª`4„àÓ ˆæl!ŒñÐÊržw¼ b[!$.`$ØæYš‚©Ê e‡†%·âoÒ0ùÛ ùçœ��&—Ýj¡Z«48Çun†³Ïo:„s€wŠq³Ž}¶ãÞ±Ԗ¬p×1|P’7W©F6à©Qnv¨s5x" Qï Íä7hhEœgýdûÃãÑ–h¶Ñ-'Z_×É7>œ¦©¼#Ë=7r5­ÌÝH�d÷ZM½»N…]=™è8ž3¹ h`e2UüYµß>gÒÒæ0¼šª‚0n‘Ó5öU8á®OCS \Iú“?:Äq(—Ó—¿ð9œ³ítæ,þ8(v,Q·�;ó²¦"�º÷>ŒæÖà�×OŸšÈð'ìZ`+t3Lmiiƶ„–:¨ä˜Íå‚V°”ÆòŒN¾trm V˜‰/_YÁb5…Ï0Ë]BGÅÊc ……Ó8Κ4tm”‹žWè=LÌ0Éj|ܶafû4±núµèòÛ<ÏÀ™"P›#0j{ÛmÎŒR/Yå¡QoÅ”À™ü`¼*]T:VEÙq`% dÜÂS:ÄEÐZ]'`¦Ch¦î"ô±½µ-­Ühˆó· Ó&ün˜™ÉV)mUÁ«YEÁÕ×v9ð>‚ã‚{òÒs‘oq_€lß…7£ÂÍ€5÷ŸÁ5[HºG¥‘μ`p + |m`UÀÍó××w!�'Y讣fVº É¥³oDpÊóaU¨®“­þ¢e&ãYaœo¶Ðó3Ixe~ç·~pq‘Dº{Øg€UŒÁàt´‘O–VHvŽÝÇŽ‹µ˜š ðOÞ–¯#@Á}—kêK§N�¤««“@ÛËé s2@)ßh¯…]ÇZél³(høÌ¨œàýr£-ÖK§×qx×pLy†ÁC_ò‚¼ãúNr~ :875�]�kyiƒ`C"ŒÏ€½�ï®îžôË¿øé¸Goìï_âïl ‹/„�cËy×L: ŒšÜb`å·>óïÒà�´Û;LÑ‘8VC ·µ«;}ñ‹_H3t~èîîL³BYI�˜y[�¨,@^BÆÎ‘Í®Ão`My'øOþ\£Šˆ  ‘å•|Ÿÿ#c1\?Fû‡ù"d°qV¯çq ìB›Ï~Öãy ^À�ì³S'�"3y/*ÿ\�·Ý;îEùNû%³á¹¯)cóÓá¹/B\smíú�ÿQÐqphˆ@V;óÈ`ÜÝÏ=N‚KÃtœ‘¨Å|åÃN’,ϼ~:hR�¾¶p­ý®ëºÃÞqÌ’¯ìX`ãÓ2OÈþRö]€\ëOï ìuŠ{3ÀTÖ]¦Ü 5e[ͬm."Œ5Ú7© þq|µy7Ö(Õ£VOàcP �j¤Ý"€oØ$ñùü?Çîw p _„Åó¾Ñõ…ë+ÊØ£ÈL«�,ÕW‚®ûêVHÏ®¢·ŽÄ9«”³ðŒ:ïä}„\¯¥KÕ©{îM/½ð|胞Þ�tù™ÐGžsî…!"ÁΖ‚&•íB×îžž�÷£#×"1Á`Ž£úÓ½»pâ®»CÇÔ“råò¥Øc T¿ δ–iÜÍùçõ<ñËÕTU©7vh=ïzEò´ð§ûI�àþÏ’³²„iy*«øU (Ó¨Zå]7X7÷`#:Q~ÍQñ~ ½g�ÁƒGz$á#ÁÐJÀ£–öî´L Ý*ôêZ‚ÂÉV!–ptM©Ì[¾óùVaúÝZ®S¯:¶àdµþ"öÃà�!äî²e,}ð»>ÛFeþ›1u…Gi©3 ðÚö{œªu�^üd®ò“ûÕ ;�n$Qùåñcž¹ sÏ(g°Gä[¯÷ù§Ž²Å¢zË{(C¶v» O;èA÷Œºs…½ÖÚÚ œ%»;'ƒ?Vº§â8ž'JWiïšq«à-i£¼5@¨_i2¤þ›¼g5Y$ÔÄê¼ý|®÷âöt7Ũ®kŒçj i¿ăÿµµ3¬2R'xäPY�?ìMUVêIƒrô—Ç”\:ûü×IÀ�Fwöô§“§ˆµ»1F"X…IlDlÑtuß(û]wƒQê +̤½ £{¯ÊxBØu+ijšîHÛ9D‚ëå^-eÏšT&/ ð¸ç£O¬í I xÍûÐ&5´‘È`G]X1$,DE3É[¦\�5€\mHŠ|G–£+½^»×äÍ2Æíß+Ø�3ì墲X=[€ürî¨ç+>ÝŸVŠÆ.¬ƒkm@g–gK³¶˜‡ÁK�omRnBbãÕtáZ. ÑÖ»û�F/§©ËWÓÀÉØ™$¥>;^ç(°žƒ–Ic·ÃRF^�ÍeÏ‘SöáYý —ÅÊßJ‚SÊB[írälÈTu«A%•…�\zi 2y*€m†Ofk­�*ßj7fs[NϽzÑÇ¥¡žfÖ¼(��»œÝß©%t cŽD.¾°>K›`|§&ìbƒ¶ÒËd`(ÜWî%ƒ˜&®TP=¸Ë:.8ØÇWÐ�Xç:œÕ$ؽËkˆ|¶Á¹ñ{$‹A)Úßâÿ°ïMZ° ´�]“,˜FÈŒtÙ*úmžjUµº²Ýó´›ÚCnØF\zšü"i³MNbC0îjì½Rpm·œÿDP8 ?T0V˜žÇžäÒнl€m{sŸö÷3A7¾k¥�òLP];;9Cg2»…e‰5Ú�\L`1Qv�D‚‹/ŸI6 nâ Í´ nÇ2Èh“ì&aaÈÖ¶ K“|o'ªFµ+œ?f1A ‚–è½D+a�;øõ¶òÍ$ Çi•�ß³’Ôj~RM4ð¸«�}º÷ W#a>ò½©©ÙH42p¬Ý)= ~6q�¶æ• /¦×¯f>²¼sס.*);ƒÖÚ+tS¨Å†Rä¦si =SG€®˜ägýŽlf©¨»”‘4̳”�ÊNíÏ«/#–ÍE|4KTWG®®z4…zÉ`£­³ÁNÙË,CèåÇÖlæcL…|¬½ˆþä[Œo�ï{ñ\£î4xnRî4Ácg>È{öm6.lht!œ2W{cbj{p+bªi±ïõ1'hŽ×±ù]ƒ›‘øC_&Pð˜Xé±Y¶N‡ «+·‘Ó±ßy¶@IDAT&ÿéÓ诙xb`fav:�{ëôÍ£XJñSHäXìçóøºçÞ<ÍØi�ŒìÛ€Gl“lµ¶6 -¿É+ ^WÏZ‘-O©·Õ]+£‹1~CÿQ­-F²ž~g#6Æ"¼´€³hÀdÍðv9{ky0==A>ß½žà ò97 :žq^C`L½)mvv�ßè;nÇúì17’m8†ì‰_O<öhjïéf~ø”øõÚßÛøž+ü­¼ÕͱwÄ ¶�}ÃW®Ä}õå´k]Çëš™ÀÉb¼ÇÆgñÑü^]MÛë¡~l#0\x´££�ë�ÛìuyÉ@´|~}ßœ6êUe¶ì†á”ºì9麶µvL[u!W’½y„>’rAûL/‡¾´E$>ó?[Í+³¥ƒIêGåšk&Þmkw}ê>�ôX.}v»Yù=í¬ð-'ä‹õu¬ê=ÛÞëkJS7HÈ3ž©ßãçî;pÝ?aKãƒ]åÜg»ÿXy~ñâ%ŽŒéˆNhÚk‘´L"‘‰¤vå˜ß©ImØ!œ¨žÆréúÌ$ %$evC™½4rþ:ó‡GÁ– Ô5I¹{ðHT®Ï¬®$øÞ݇O–ÃÑ!þàÛìû"�,øc,¡W™_<`[ï"[ð¤²-B¯KËó´W_LÍûøòŒu|dk™±Wã3#�H‹ðˆ�7N�¥ó#{©Á€*úkÛãØfrAƒUŠ7 9c}~«.]»¾žÔ’!MŽÑ‘Á3ÔO€‚º4·Yo±ÑÜŒYý¨Ü¾v-ÖU_Ó`²/‹{Ä:|†8Ü0X¥‰vv*gmøjÈmePf“ê—ÀøUk|O@¡²¢›œRÖÍöþ›t ¯+ìý­4‹6³¾«º×c{`Q^bŸÊ_t9 �ÚÑžen‚–ã³í{5Éùâ‡eæ½gVð_f~Èkxs¹²Ÿ8�d#ï /l®/’šC.4’¨„N¦¥ZŽgY´ÁÓá¿�=ðž{BŒNÌ­Žd©?ùáôÉ’ÚØò¢ºJÛK�¤Œp?e� ±ÇgoW�mìYæa’JæéËls4ÇÉuµEðÉ𛬯û¥YP‹i2F$ØÑ�@yx+{À"!“õL^{² ‰kºF$¶d"Ø*kº¾”¥¢\Õf1ñN]þú¯øRðÝy½;) ²z'¯wz�÷úã®õs·?ßîZ%Ò9²N™ÎÿÛ]ÿNæñ_êšü85,0ûbì¶ÿôV8 Ê©|4|åïÜüÛëüçgÒ�_òg?ùÌ÷÷ÂXæ§×ù�R”×­¯¸ÆÎ­¯ÛŸég·¾'Èpû{ñÆmÿ¹mT·}úŸþù�^ÿŸÞá[ùŽœ–¨$¡åëW# Ø %ÊóVz|+Ÿzç^ßÐñ�ÃÜKÈìÜ£À xé�iixµÒÂ÷ÝÚEá `¬é\x�Å5ÎÃ1«Ϫ%my¼ÀÔY¥ž]T�aX(¤óg |è ÌX§�ÙÌ1:üȶs Ê#«)76 èS1ŽAhpß ±-k÷ït„tê#ÈÏZH F5’=. ˆF5Àé<G[Ü/ŸÙmûEA™6¶vÓiãñd¿æâýý}tη�^ˆ’“”uÓ7F£Åðà�fÎî'pÅCÌßÜõÀb+³Z¨z0“ÓsSׯ„¥S[ŒaY¡£ŠóWG¥��¢- ðÒ¡A@âùÔÉ3ªV¦Æ†ÓÄø¹È¤æ„UÆÅÙÈ9‡m¹Ö¸m›3[ø*¿<š H@¤¾utõ¼¸z”àp Œë¦Jó2~/F0YcXçúé/ÿA:|è(Ù­Ç‚þòÆÁC‡ÔU¦g Aºìü*éÕI+Z�WÏÎRuÔºwÒvËjUƒê� «=#QM‡SºKËtènÏÛ–¶çå‚kÊ:�¢hIˆ#\® ”GñçƒGb¼—˜?嫵uŸ‚ôž‡ ¾›& /O*W‹?¥…í8u–ÔL:ŽQ�,o2[¢Ú%E笄9™Aî5‚´:C‘ Á¾ðœÀjª¡è3 ­¼õLOÏç"8 ¨ƒ ÈjT!c«eŸX-µÍtt¶à~~¯©¤G„³Ê k)NHR W!íÅÙl€Ú8&tjÀ™‘6êY×cƒ=éóñmˆuâôØæ•ï˜-íx·ûUK%�Ú6V? `Ù’ÜÀ°mÈbmX?×Áñ~¶ 3¡ÅýR ø¡€Z±FÅFN�௠‚`”ëSWÕ‘úá±�•ùT.­ àE³ü¹%4‡.üb¶ýõ«Ûkéø¡¡ØOTh3ÀL”ò� äbœVÎé$Óf )¬³™gäUA‡ €�À�rÁut¬ëk¶ˆ÷]`ä=ƒtÎÛzwÀg>§ƒvw€ÛëK©‘õ7@ây­:ä‹&�8œKùÁào%A€»N �éÊ8«Ó—~ç×qªé\ÑÜÉu1¹Wu]Sj!±¤੺¼:¤té�¯¦/þ›ŽCN"ã`G¹:‘NÝWjèp�Úêâ§ò6 œƒF`€Ùº²^ÊÇkCËÂւ¢< ¨ËçîQ}¾Â=nv�@ÁÙ‘§:éò»ÀO%€ú©“Çâ>Væ .ZÁ¥]g›s÷„@´ü"í=ºº’*(Æ]ÊÓ.²‚q(_|^¬ —öáHó~=ÏÔtcª#N;ÏÈ«¡£�ºI`8€+x N†Ì� YQ¢œ(bN¶Af&! ·s^ÎÓë³¶Ý ¿Æö™§@_<år!w6èÆôÀ¡•èŒ%@½{ïƒ�P£«úÁ—Ïr¯ šÉwt>:t$~†-Ì ³¯[mcƒê¾üL™!? ¬|°;„ü+íÛ:»yN:;KôŒ/CžoíèÁÖ Z‘�ÖÐHÛbÖ£þŒ±p_héçsµ«”]Ѫ‘k¼¿÷È‚qÙø”{þæØLJ(ƒç‡Hš¹1þ¾ôÂsϰ •.ÉW9h/±íÐXO[qôºk Ÿ,��¤2ß#KLòvïi¿lqv=h<ÝÁz¢ëÈv޲¹–Ê> V„„ýf’•^€xA@ù··»‹ÏvøÞ²Œ=…nŒ€ª›ŒW=:mdt,x»�€ºz× êA÷‡sRß8gçnRd•A~7‰ÀÏm�îx Äø,×CÚ¹_þ¸WFãŒvõØ%Ïöú{´X%÷õŒNïç>òß>0ƒÀVÔ¯`gq&h²÷À‘ã1æiè'ÈØÝÓÈ{�ïà)C;íË3¯¿B"‰I™T]‘Øe5¢k«¼Ù�@w ³ †h0²†î¶¢¨ÚÀ·܇E´‘µA¬ˆÓ®�í²ˆ,5('�Ví Æor]:+'Æ`0Á´·×¸n—� �,苺&0áu;qŒ€º§†ýí yæÕs¯ñllå+Üç:Tòìè8D²€vò4‰b 3ìQÚáBKå¬�AímçëÜMÉôd– i°ç‹5²ƒŽþ¼ÝìÚQHÔ˜•Ãg€8´^…fgâ¼lç$˜4«¯b;àRå94[ yC[ÍcÈ´g�v•6›<£]¥ ¾´²…o:ûÄ&êÎhEÌú(÷ôÇí¸GSA&Ľ´é2¢ýªÎÒÏò¨šedlK;E%$°4_$d%¿�ìì4�î4!qae.½öÊóاtj˜ã˜€…i‚“CÌÍäö'þ±v†þw ÷ÙÞ&Æ3L*U6³Èɰû«I ¶×£¯e+|¨/UÁ3ü©/a¢î•Ÿ|±¾ø $x« úû{ƒÝ'eèjí“ØËjLR`Ìè‚=ô¾ YòA9>cµ&-¬šäο­‘ ¾‡NÚ£ËÅüTè8Ç®¬4¹ÓN¡Lø}<Ö"ü-è3„&¬hÓh‹Åø�IW& iWÛqãÈñCø9Ûé¹K¬ ~#ŸÛaàåÚ:º‘àì2É»úkEq¡�hÀNÓx,e~vŠõ™O3µ$ “4¥¿Œ ¼CßÏÄ2r¼ymr•¾µ×Í#›ö°mä+;Ì©¿×ö­�d»¨ �»—Áû�#ÊÌ¡þ¾ÔÕÚȳ2™b¾R÷ùbùCæ(7M ^e-µåL–Qäò”Y[ü-vP©œ"H=æ‘Fá«ñ}y+ö"úÞ�¤þ,ð»Ì*÷7Po‚Ì8:;0#è‰ü|Ñ$¡ ô¸¼gR”Uò2raÑ ‰ðeد`ÍéÂ…«ÈG*âYYrÛ üù¯dá^& ]¿6Áذm�Œ~gŽîoö›º½¿·ƒ¹¤×^¿ ?)Kf'E¢'߲˖2V½¡žtÏdIÜü„ŽL’y°¾ð¼ûEùe×?Qw»ÓÄäëŒâ¼uçu‡w(ðî €Fû;})dl³ón|9Oÿçëíæìgï亸è�¸_ÜA�DTÌP4´þ°×Û�é[qýv�oç÷Tr%fpOá8.a >óå/¥ãÇOD寷óØïŒíÝA�¼<ÐQ�³Å 4@‹0®e6ãü@Þ«* í(?uJé­‰öëÛZ…VxØ6NKlðW£1‚‚8í¨~G`HPU)4; Äýf ¦ZÍ®¶I@Ò–ïÒd{¼¯ñåÙTÁ:ºá¬càê Xe„ß�ÊÜ[§^çOÀVàÃÀ¨ÎäíD5Ö ŒÛÙ¹>r˜1[M°AåhwYš¦¨4ÂÉÖ@¶�¬Àò¡ƒc?Ž�\I¹‰1ª�‘•Ê8ææùC³c#i97…|¥Ò àrPÉÎV^º@k³æ6ª²»ä¾ARÌÄÈ5ª<'pjið™öi‡†1Qé¤ m+ªh�Œƒ ˆdvïá®\>ÿÆj%NÒqÀÚ.NCC³t&<³TùaU�EÀÛk—/8?†¼àå�~AÖÇ'Åöc¹èFðñO|2}úŸý|jg¼‚ðv È17[Õš‘ç�m×Ç–¹G�…Îõá8 d öêÙ)@Ù/Pm;×бŽVâSãc±6òŒþ=ß›:zz"ÁÁu~2‚4Ë–ãÈôrds bµÇ`²ÒìÌ z€ªY€û‹o½žîºï¡tôÄI* s©§yMB˜üc²—•J›«Íq­A«ÎÎƒÈæ‘¨ÒØwK+AeíNåƒã²[Ç vÊz_&äy­rEzËy¾”®™ßÑvX âÑÊ{u’|$ßû™k¯Œµeª`ý&6‡þŠúFzm°^&ÁEÕ=×ûŒÌŸ1hEb߉Ü�ì×Þ‘/}Ž Ž}|ø:�3% ø66µ¦ÖNô+6�`Z/ImÎgâzÛF0ÙgX1\KàÔŽ/çÞ¢#û�ÇG¿ÛÀàúkž=×£jõ¾ûï�=d�Z½02|Zn§z:1PçÌÄ}ö…:Ðd [mÛÎÓ.?ÚdÝT�uöÜM‚èÚuÐÀD«y‚¬/¾üm^û¢]0Ò`«42qËêuéc²€/÷‹‰qÒWÀZ;Рœ{΀mT:ò»‰!ýŠ º.î¥üúÅ�nû�Ÿ¹Ý_Œo…Ž-î•EŽõÉÍpˆ´G/8®ø§¬\_�eŸ­§Føñà!m™õôú+/„]"ýÝ/›$h–•ˆsºIgßx-:•Û"Õ5æál§´C[ëH„߬Všg­¦±K ¢j/dç“gÕCÚ‘®�A%ùÄ55.?H{+¡¬ò\a}‹IŽ;tô8G¦´S†õR‡fËØ‹èƒMMM$ß¡‹Ô¶TÞg�¸5�†¬ðE2ÆWIŒ¼ë®S$†´1nt(߳»ڤ>€iÏ?®¬ÂŽ`J£cW ž�±Ï–ÐÝVj™HÄ #`'@͸™¸zW×õqc9~ÁhéæùÙ2–833šÎÍ­¦·Þ:CkâÎôÿÛ_L¿ï±ôð{ =þ¼.=ò¾'àÑ«é¯þåŸLGzÛTŸ ›ÒÎËdQǪ­Á þ0iKZ þÊ7Y`�Ž ü]£­î–¤•É…D.*FÕAò¦ú×jz;–”°gÝ'òïºz o’¢>`%ˆ„�j%œvªö†r¯ŒÈ€ $…¾Rfò?ç`Ëu;ti»¾gàožä‚×_})YíëÇÿÜŸOßÿƒ?Gßx>¬¶ówÏÀ»é·éÖséÊ é˜H­þíVäúK熡Ê<®1‡ÙgóǖH8ªÁ±óŽ>_)­ ÕÓEÚ¹V/"·ëLè61ÌŽþØÛò·Gй•yv÷ñûaÃ1_ml[R_Ãxö•7Ò#?œ~âÿþ¹ô�=¼"Ï(‡®]»š^|þ¹ô«ÿòÓøkt08|$ìý³5’—þƒ¯ŽvZàÃû¡•_îkèiðCù§¼Ó¾2!ܔȨÂgÜv$˜Àgêêî¯iÊö(sÜX‡þìg×v—ñ¬+°;m»k{{yÓ‚P>Ž@�É Ê¦l�?ë-Vm¿ÙK†Û]³²RüèºÉÂK'»eÌsßÁLÜ›”bø'ÎB‡Wg8;�–Z‘aqÄ�þ7ºa;¿�äϼ0/\ú5¶"7ù Ãý«<�︃}ë3Ô%î]«(M¬Ñö7ùÍW_L‡NœŠ}wíêUüäciÿU9¯OíÙ»£rÝ‘‹d«¶±[á%�b+„¶Œ„çâ_‘ ¡-ª JÀEú&^ÅÚq9º¸±gÄX ¢»¶vYľÃpNÄ{ºÁ ØOQ¡ŽÍ§¡Í8KR�ÁsùÖ³íMnPÏÔÔØš»Œ$ŒZZ:O¦bì÷7/\♼�m¾Vð º ;WÌGßJ9+¯™€³ÇµAå9ùÜÏwèR¦ ã‘\—a,êuñ»; õtÐM¡†õ�A¶¹ŽÙ‘EêF«mM|Ê]°…x¯¥¹�{‘ Â~Ò—™çœîm’´Ó'ð©MH-u~Ø&]kŸ*÷å]Òøb¶dߨ´R&øL_̽¡^ŠDŒWGñUxœ$ xM[Ä£æ|Ù=Où£�RÁ¹îÍÕÒÞW`Œ×.zÝt0gva<’µZÑÑG��HçÐÓóó3ø mØEMÈÒN’Ø®3¦µÀ}\Ϫr›Á£ì:a°àÁ§ú_óM©§:ïƒõâÛ5ÕX…®%Èó†zps‹¹™ñÔæÔØÞ•†/¼Ê"À3T¯C””# ¾ºFΆ¿ÎÞ¨oÎ’sLúnj(O3È·úº�4ÛÛÇ1$c–�ÀàñõÈÃ>_´sMG÷ñYE1I``2eÈÜ"’ÍÄ}¦çvÒäbYê¢È£µ£+ü }y±¾YçærÈ�EŽKàHÈ:åDçw“²úº«Ò‘AlØu’œöà»a€R0üÐÁêr»°LONdz ¦— Ÿ�‰¹^39ºÂÆ`öàK婉Av’§Å 3+KúW.¸®t=M9?ƒN+-&9ŒqmÄ®EgÚÕe†ÄŽuð“ì’6 Õ®Eò}$ "÷üAbe43Ñ@ûUÆrþú^úÌb=&´¬­‘dÄsä7ù .‡R$ö`o»Ÿ÷¶ØsðoroåŒ ¥¬3øãÂÙÀ¿œ«ò×ñ*ÅX••þs®Î¿†£ûº›Ñosà=ký0™Æ¦gÃwUveZ@#i,¶ã3õ v�9ÊhíXýyíñKçQŒ­h�Æ–ú493{±Z,ûP|Ñ[u»ã2)Æî2â#Ò¡\SYdB´ �¾0ËÐÓ}}Çá±ú°A•1ê‹èPéf»óºC�;øo“*æï„—FÑ7óŠïñÝ TÊä¶NŸ/o©2ûfïýÍŒçÝþ�Œž 0m"2¿‡†bŒq J5Âor�Þít¹3þo=t8̈׹68ªcÞÐÐ|¶ŠÓ¡Ã£m`<Ú·ã@Ù Áª4«°u–ü®Îÿøø(eY|n…°­�5ö%Ì$�Ãн˜Þ`ßLn’ï ’üÃø,+˪Î2À‰–lh:ïc³F]¯F`ÍìÚîîž·m;F –Y9tçFãVÇÛŠß*e�6�o�E#ž«ÔÓs€ÏªFr“ž!WsÐÉ5àj ÌÖ–GNÞ÷¹xž úHjîèMç_ûjš8-äÜÅH×�\[œåì¿™p¼» @oL^9w#lØÃé4Õ+5¶ê#«»c`ý À£7 xÏçÈnhî!jp:2?q¨Ú9wÕ³í._¾€�ÝÂYjdâs}{WGjjëŠÌS‡¨qd=«kçubг§i©×RTFǵ[fˆh€7â»–õÈÄY�Ì[÷¥g¿„ócŒíîÈØ×È™š‰k`Õ–„ÝTµXýaVik%�à «Lz¸Á¯¶°>xä8Îî$N\Ê ÈØ¢Ò :øá+éè%0nƹƵç_™9ïš1®J ³=®-Ò yÆqÿ�ƒÈÊ´@¬ ºMÓ’N0E§9*xàA+!¬¢±µ™Õ·¾œ“ëûü‹/¦×NŸŽ X[q š„Æ5ÎÇ*$¼£–·­s³ý�¸<ó¹–ñZé°�S¢+¯nu¡™ç‚ ž)%�õ»ÞÔ¼zå Ž2`*@—A—F¿ÊyÁA[iʳ~y‹}âu&žDU;sqÏ JðسBÍýW�Óc J'�Øêo[Ð[©#¯ð®7ÇØï¹·Ô/»0êŽ�²Á÷ ÐYM Ð#�®£dÛÐ=>³ú5‚€8_ô¿ŽÏÔ_Ê�°¸Þ},¿E%@€ã)$ˆ�wz‚øÓÃÙdžf3ë´ êHäó ®2Ìl|ŒÍÜã1ö+ßSíÏgÎ[GTyæ¸�<môk8æ|ß)ÛR1€IçÊßV@ù}�Gƒè€=ïXyQDЦ¼„꺽L†¹®¾äߨL…~. 4îp˘3O‰ †@øð%•*òš€Ê.I7$hÀÛ„+/«!x6‘–8ºµ³—s ûÑT ²ÿè�&m€e¶JüÂçþ}$5­’”uôØÉtâÔ½Qi;hç:DyâýNÃô >üñ§Ò±“ñµ+Zš[c�Hr÷¤ºàø©ûà/@(äŸ�a×̬VªÔ³Jb—Övè´‚$`/h/Ð,}mñòžp­ÂfvÍ}ÀÍW¶ÿøƒ{È(ã£×ã˜*÷ —ÆÛ^*Éc¾¼O)»/BAÁ'5õÍð/ÝJ°S&ÆG ;æPÙi¦‘¹É�ÑF–1ƱTÈÖuÖϱÉëccרïTüaɃ&. þ)‡¦hµZqœ#à+÷³ò¤óxOV%G°Ý{xï®®.ö:­wù×ÕÕAx�E�™8îLT´ ˜åø üœ8q"Æh•ŸeK^¸.7nLÆú8“uL‰ïÓ—~ñÓÿ4­_NGd¯dºÑ¶Öîa4…+ûÊÊ;«)šäo*ý±­þ ,/®Eq#]†`í�«++$³Æ&TiûCs+/mO«-`À[yS„>ŸšKÏ¿òfzüñ'Âxõ¥çÑQõÌ‹ó 9Îfš`çƒ$,<ù‘�ÆZØëµW^J_þâH}�ë$< ƒìfaK÷ŠH.¨&¡Ä6Ñ«ø®êe¨ L®á}dX)Ï5Påùïú"VÂÉŽ_ùd"·t-)5é[~Ò†2 ¬¥Î6°;59›ž{æÙ”ãœø¿ô“ÿ'cüX€öqŽ7ÔSÞG21>Òƒ¿7>v4ýÍŸúk陯<›N"›kª±í!»AC;oiË黩£•«š·hÉœU6Zµ‡Î\”ivE1ÁÙ@‹]«Îž»@ph3ô§òœA#ï8/t;C¢‹öDZ´œ{Øû8ak$�X©m¨î©ð—™ï A-ùRùÍ]b^;ØÅb§³Y|Ê+ËjJROÿë÷„ÑOŠàk¡-h²�” ´…oŽ·4OˤŠztŠ6À&¾m AƒçU•tB@+wÕ{QbÚÈvR56¨v©þ¶²�$xmz½þÊ‹aÇõô‚o´¿D6¹Êî<†±Ø Áûà—AOƒ†ÊÓMä³³SwÊöFrÙ–\vRVo– ìäb)’Óàq Á1‚»ÎájäpäNçÀ¾;ÇŽcÃlÙ’"[•’Hî²láöém§÷Þîóy^ŽÂ8²¬ÜœWZîìÞÿûþÊó{Ê÷id†7耗^Ѓ]g*}iOÈsx³"hŽú:s· »¶×*�ZÚižû,t n@m:dß 9 -©ç·6Ö¥‡<‹.;•îáØWG“.”»µ·¬â,48Ì@äbJ£EpÏpN™Ã²$��®ˆƒ¬ËQŽÎkÀEÔ¹ ˆp~;ØBÒ²g0Ÿ5”[9Ç+›g‚=ÕVFé$Wh»:éÊ }êé®­t©Î¦rìgcçc¿8uñ*ƒ{îáø^f=l-Ôv¨-‚eÔÏfø�2H|Ãç@Ÿs3àì§PU�†�pož³µ˜úï^¤RÆfà"²¤‚"‚ѱ¦vÑ2Ë¡õÁ8»´7Y Ú¤ äÉö8D~ ÎVÚn1ÇqôŠË·ï Û nSžq”n¬#SȦ__!þ22n VZñTÀã±òËkSÕª(ÒzÐÀ…u*ËUV2WîŸ�J»+S©«£=µwtCh »´T¡½ÎâföèѹUih^ç9I<_[NœÂ  á�á4FpB%:Í"¥äñØÆz$32<€-ŒÝÎm6ioùê~J×VÍÓ!í�v=­rçýf{àY5pw ·‘£ ˜\2Wšµ tž•œw¾Ûê9|³Y-½#¡ø—Ø��÷ü,�͈i ñeÏ‹�õÚ‘ÚNyÐÿ.Ù÷üÈgŒ™÷‹�¨WGeKhÂ*,{8‡¸„ë`Û¼û:‰nß<ÍÍ­(¹;d”÷�~‰ˆÌ­tíòk©å®V#j‰(ÎÁ¡�tèð12ãèaxà ak¸{;ãWÞà¹5é¾Gz'úPºüÒ×S¥öG¦¤4ý1ªЧègn�áE‰ÖCé.Žwû>u*œ.GN`¨¢$z @™ž8¾Ú»(ƒ†Â:2Ô‡A³@N÷ÑÓ1�G3@7-9…r¾/0 ï0XxQÖ{¾v5dYo¿",êå:r²À÷P2lžå¼}—ß²|,gQ^ñŠû4--Ÿeˆã€‰hk&À>ÏÙ/ð £Ö¹0žp‚:pgÌ_á0�5t­|™odéP®Î¡lóŸ|ö}›³µ€•|'sìú{¶&žëúØZAÚŽ?ìŸó”7åœäbàгFöÊi÷@êZé\òež+éÚp|fgðÆ½–Õa”Ë3¥ÍÎ4š\ÃÜ54ÓD¾&(l�‡Žתðr~y–(|éÖètæÈ=ž äeÎ’éÓ‚Ôø~3§‹û¡¡ìþŒ„×EÁ[€Âù®_0›Ãý³ ¤Æ¸Ž ×(�쇤)8àÞðCœ¹À|³/§[¥uŸ¿Åy(b/5Ò}>}8YÄàÃiL€ßëâÒ‰O¸r„ç:?"ö]w¯]gŸ¹Ã¸|oì?¼Ðù ò w•š8Á¿]Cé$@=Æh:ù$—²)‚KŽ<„Æy“ÆØøÈ¬œ™šM—.¾ãð9ì²M¼Í ²_qàÉOÜ{ÇågfïeŽJ€)~gv§º²¼tš÷~ÏYqŲ|”cg^9”~�L_üÓ/=+S­†!à¬ã¼�ÞîÕd(šñ»Ï¢_+{^ƒ£Lpzœ eo{gw¼Ë ËM¶ˆ€¯•`õô’Åüf8]|ß`_OzúùwÁÿžL/þÙ(ÞÄ ±][�Dz�å8>ü“?årFiÊî#Gã\@¿þêË<›¬Þã¤ÔÔJ9tœ‘Ê‚ƒX)³\¯ä³:†AnÊu ×ÃlZ�{ê:1 f‰—û-O×i@Ÿ{¶¤ci\}@Úöžïv�áwò¯#GOÄwâ|½íþïð¡·��y ¼œýTNT2§Z¯L ÷m­rø8eÀ9�®Ï ú‚ù³äßÛ82¢¥ ãt|:cl?bÏ?uŸR@1ƒÌì·žƒ02Ћã“ßó¹ôcIcŸ¯Ãw‘à+[àHá[8ˆtº§£è ÈZ+N4ÔÕF•u÷Íu6`£€ulm(xý™Ò¤|f–µüÅòÄ5µgXÎc5h×}Rw3ërf2 šS¶š©žŸ»{ûŽHh‹ýU6çåR�‚ñ¸W®ƒûÕ%ØwQ^àwþÎ,eÏ¥²Í}s}äsž©l׿ÛNîmNv¦­Zí3�»åÌÇŒËE²ÐçØK€z¦Ô#m»#o vÀ;稒ÔÓ?Ùaç"从7×ie1« ãrzj"Öǵ7‹XrÀ4¯ µÕ’F±Í`[8‘àçÈ�¨žƒóR@UzSnjÇù]õaõ%WÄ1šAl–«%7s¹ß2ÂKØÑ Ü#}Ï¢#¯òÛå³g:7Œ!3°«÷î@êèj�€«èìô>iJÞ%àjpÇ�Û·Ña›"‹Þ¶ ÊSK…»öCèºÓ”¦7°5hšÓ‘¶µ�ó·ÄÊ 0I¾ƒ®€LS(:Î¥ûåÏÛÈtÛ_ló,ËÍËW-Ùm_O³â*×õŸþzzþ'Þ íá çÞxãWJãÊLy¸û½øÝï{ú??ó¿§W_»–ÎÝG†.¶ˆ:‘NnÏ�½}uj+�ÔqÇY#õ¶bt�äÅÙ¨^k_³h'ÆÇÃAYEõÏ©NÉúz]z³ž:6-_k°æûÑÓ?Šã`.=÷üóàžL_øÓ? ½Æ ÃCÃéÔÊO3nK=à£ãðÑóbîç¼öê«´ z4x½4oIi{[ÅEˆ Óî1 Z'©Nö­m9á˜Ó)¯“ÎLx×Ê K�™êp‡,UǽG hè…¬™khðãÆý•o]Nÿü¿ÿ¡ÛÉô¯ÿå¿^n@§AÀ^:r*Y%Ø®eާÒÉÓgÓk¯|›yÏÒ¶‰¹dÁg%ܯ–Y ~€@W�ªЕÎ]éܽpŽÏêô/GîKÛÒ®Áb%èH%Å´(À™Ð€o»€uäŠüG¾Y–Ì¡d*œç¿ôþaúë¿ð7  ;Íýïxèáó›L²®Bv*sÜ»æ–3I_ÿÒçÙèçh'rÒLA�õí±6 È¿œö3òYÖÝ˵W.ËgäïÒ�UXtfœøæ86øTûÔÞ®:Ý3§'™Ž¨öŽu¿fÈ–ýÊüzª'Pú_üwÿSzæ¹8+Ð:çLœû#ϘǶӱ׽9r$ýê?ùoÒßýÄϦ/å¥ôÌ3ç±w²Ê(ðXØ qwÍJ,A¬Ó&ûÏã¹»ªjåæ#v©$²4/"¸fr2²‡‡°6€úBv¬#¿Y`V3)+ëˆ@÷T~¡Þ*]Ì�:…�çâH/ž‹‚WîMÈ9TÇ·º�{§>¸ÂY[àþå{é¹ûhúÀÇ~:Ýí¹›n_¿’¶âL¡’[«iÿŸá»Vy()[¥U óC74hy•¬M[Àɧ·7 ‡Î ¾³ª‘Ì Šm �= Igòèut'[æhÿô¬ìƒÚ嶨³ç¹øÆ,2cdp t_u�6xÄñ3'ªÄù ýëdÖ‘_Êø×*S%º[ 6å2øÄF-ï Í¾È�­âÔ„<ÎÃ6¾ôíë8�­@„&m8`€ßNZÀy¿ÕZGůËTvÄ µ{­†"¿S/‘^ý¾6»¶šçÅóå™Õ¡lŠÁa¶B¨­±Mt­Ž#xÀóÄÉ´'”¯S¼‘ÏZ¯´ \°}¯€�ÕAµ) hdI‰n<Ì1(Û´íwx¿¦­²`§6$Çï3ùx�Љ•œŸI2ÿ'°/Q‚îVQea|x„³»Œ~3Ÿ£ý%8�A+дz�CÔŠ‹IA&Ï0Ç>è¹§¿™t\§=l@x\ŒÕìxõHmkÇÅ$ø–ú¹új”êš� ÌS-‹¹2Y¹�¶e^Øú¨ü¡šÚÒyxßðð kSH°îÉ�§ÚçÎ=zÊA“¦îhªÎs6uuu´7¡lu�Ö}×MÛ™:»ºIZ)½v$À Ê*w+öW¯Á VyfáPÐÙâ¸}·Ùb‚ÉöÅ8PY× Á­Ïýѳ£xâÞ =:œfÜÌL�âP¾ʪ%Q4d-+®ÃYP¢ãðQ€¥Æpò¶ÐKéôƒ�§2ÄéÕóæ%¨dËŠ]½t%»ÿßcÜ(ßgÏ=Dôp#JövzôÂSalZê«Ò²�(ÞòQ�@•ÛæÖCq_ßÝëaØ« ›¥]A�¤%ú¥åá€ê¢wªýÜ@º"º´ñ@{:ØÜŽ1·½Ó9Î3 #_ælOrûÌkd-j†€%èužŸH3jT‡†ådÝ ]•`×h0]@¹�eÊ œ°?á`³4¡2nÛ {· ‘Ý$ènV…À�<Ëõ½~í*†7eÝp ›©8Î3TBì[8V¡7{–ÍLN…²í³vpÄõ÷öò.¢_1Z4t–12F‚‡qÎrŽ …a!�¬(›áà<¤¯QŒ繃SAZÙ¥3CpR�JÂ0c)Î[¥Ê8A&±Žqð]C_ˆ@ŒŽ&�:¢§«ÙWÐA7FÂ,àSdµ²ö‚å:ó�«  À·ÙP–ÿÖ¸Â;½N�>�Ê9öÍ|ògÏ« ¬‹-Plù.�M3]t¶ÄÔøžFJ%`�¢`b ¢�Ñ×™Ï\ )�VADiNÛP: g¶†ÏÑÁèï4Ú4ŽÌ¶Î²`2Ç)Ö%{ü–³“û<á¨d^î½sÉJzé¤× ×x6ò9+?) ÆkùÀ†ûÁø<¯K¬µÎ÷úúèú@dØW> Èú¬fÆl šï²®þ‡?š†Ò®½á Pp}4níKj¿Ë x�ÎæMÖº FLjü;`Ò 8Úqt®‰à±Ïs]-ƒ[ˆ%SÓˆr ƒ3pm ’>£f,ºN € –™Ô)éÙ“—NÓBa@Ý·Ò£ó÷ ð!êFªK#qv…4u°ÛßR'£ŽK. ~Js±L�§ð玄¿¥µØT>üâÅ\KTž–1¸u”G«ƒjËf÷ ˜ºï:$óÞ¾8.?`�› ô‘åép$ISöœsÁE,]èç:pÜWÇ‘ùߟcÎtFßãÂûNÏ‹gV@À•B ²pìf)FßKöQ‡°÷KC–œ•—z†Ý—À÷û“´%=J£®™Yõ 2æ)¨¦ƒÏ9[ܪ%®�뤾yh‰Ï’Ö5”›ÎÓ,çåÙ÷>éÜwKëÒ}üÔslIs"l‡â|�¿AÒ�Îïw µÈ:uÌvuŽöìU'4£˜ƒï±EÎ ºpn·¤lmM'ÎÜÀµ%��ž8I6*ÿñÜ@IDATÐå‰û�¹�¤tùÒÅô~ãÊÑ+/½˜›x^%à}óú5d@#ÕCNF[“SgïÇiÔÎlåà*û~ìäi2¢‰´*°*Œ²RÇùN[?W�PŸ¾„ÓųæZ+oäiþN0s�øÙÛ¯½KÊù±ëáå{ýçßÈ>{û‡ÏñþïuïÞ»¤S¿¼—÷ZþÝ1ôÇþU’a#_Ñ!#½i÷`á=fê+3=:ØÍ¦õ9‚p5 ãl; ÜËxß3pLýÀŒ4×Âs >åúè|’ÞÕy ÚšŸžLƒwoÄ{-§>]é´´cu¯ÌN—Þåጅ¾«st�=÷Ò]8ÅØ{ùŠ}bÍDÖÉfIñt-[ûx¨£ƒÓ‚‰ý×Ö³Ê�?»Ÿ>ßó­ãE¦Û¹¸âÊçb6bì5sÛ»âÌs×÷Ú“½{ýÛ±ë�^ÄI¼0;™êqä‡ÌGXAo:™Qfíg²„NÕŽe�ãÚ›7i‹õ Jû�µõ¼ZMi’ræçÞç¿yE*àŒZ®ÒuäÁëgqÞìõë´ç¦N¶yœ²Ê³ÓåC›ðOþ”:,œ»|[gð4`±rÆ*ë8œkÙ»‚)× ÊRÏ(f_ªYw[ äB'–_¯$ðÊ}Ä´ÿpeT2"ˆŠ³`©Lƒ<Q�†Áë`f4¼›ìê ²éÐe¤g)ÆF†â|ê –L þ‰ ô¶Xdt%3ž€¬y¿ë-oSf3‘àÅQÖš}W^ª¿Xâ}’l¨Û½ÃéÓ¿öOÒ‡?ú± Y÷×=w‡ÃÁ _”gÆYôÙðuõ9yM#™?øÃÏPNF*ÁŒ¬Ÿº¯:–Î~u–fW¡s+(èTæ(—tœ <‡NŠÓ¡ŽuÕÉÂ�áòýó8 ¨Ý 3ÍtÌô Œ¦™…¬ä´™Îò¯—^úVz×O¼G’ lj6‹ú´ãv>Ê÷ž;·cÜO>ó<™“Û©çÖuJ/7ó{Pì·2H½×>Ñf¸ê<3]@y'Pè¤Ì�ÿot-ǘ“�+õ”ºV_)ÐoF_wf9óV[Qv)f°¾ðÕ‹éãŸüdú¿ðÉЩuüŸ{ð!ô¦ú(1<~ðèùǰ=xº„“z$=÷Üóᄾ}ëúþ¡ÔKP‰e“ëhi„t }^GU-�9Ž]"iäûž�CÒ²ëÎ1è!ìξ:ÿ,:é¡öœUÈøÑÑÃGB癢=–´ë:¨“MN/¥/ëµôË¿òéô©¿ý÷p2нÕþ8~‚RÁÈ#m·®îôÀj ™/ŸQ~Σk�(SoÐw¹œ>Áîµ:µ4x¾¯ìœÁ>i$ ¡[Ô lÏ¥ë>C¥3ʳžçÐ=A:Ÿwˆ‰¹²Î¤7¦FôûÙ?ŒJ,bÈ3ÕI¤-Ï׊šÁp¡�„ÀBæ{¶•1ŒÁêV%ÌÓ€*d?ïÒÆ–vfá‹fúËÍ”µ„º7Ìh®#\~1 ²÷´¼[ÝÍà`ñ&×Ož©î<ÏÆx &ÇÒ]††FFÓÔàpºÃß›ìõù§ŸIÏ~ð£éæ_�CÂŒÌÝ9ΖòÎgyfÃÞ`Í=:àÕ­<£Œ³ÿ®òEùïWÇf8×~f¯yöÜLñ²Ð7gãsÖ šÔ¡©­áxu,ë€unuÈØ¿ö7>ÏÜmx®îã«/ `/ù¾gÔ1¸ìj‘ííûùÙ}ÐÖ’V<ïm´@«¢Yè‰ß§´ò^Ï­½±¿üÅ/мT:Ô7('—*~±^êò3ù®Ž<3jÍÞt,ò$K¶ëk% F=�� š0{uàžv­[àm3ðþ‚öûîÜÁ6ÅG™q[Ñ,AÓìåìä8ÁT›!Èk…õ�ž êz‹e«ü½I0ÿÊÒ<޳©p0y{eð°<Ùêc3SЭw ÓvYc]³*XÒØ 4E…øÁ´5� õ�|`&pƒ©ø÷ö½òPg²Ï­Ä6!þ'¿Ž6ƒ 3»Q[ÐÀ®rÞÕ¹ŠX÷_ygП¼ÁŠ(ÒœÛéZê_£e�z§-¬ã^j?Äù€öÕ¹Lb�¤K×ÞõÖvW¿³ê‚gE}B:QÖ©ÛYAÑJŽQg½t¬œ7 T‡¿z {ˆÊ"èH3PèÝžF8?%ixšÒí8Ñ÷ZmÈδÅÇF'¶¹Ã3æY×k19ì¦æ—�ùjëÒV‚ý“慎¨[Y}Å3 ð³À&�Å–—¿xv凡鳗V ±’Mü× ˜JÈqé¤}W›§;ÄJK&Y"¿.2Œ„ ex |Åý¨¤ÿº^lû%ß5�S~)òntkžÍÀúïÖæñïit#y¼ß¡ó@G–Ap%ïÔæÖv½sóVº{ëVœ�)t•A’?F‡ÁÚÆX£YÎ$eû— L@NmÓ.rÜG¼shx8dó2º¯v€ú½­ t\«ó„^H–½ö�v‡A®ë6çÚ=3Î5´R!A1b%Æ©oðûFôÑЙ:Àv«ÏJ}=$Ý�øaÀö$�¹³t�«k`I_oÌ»££30F[µ(çÜgƒ€LØ¿öW`öWà¶ › ܈x0$”ÑwÖR¨ü8¦m¬Šgoß�È®4‚TÅÙ~I–­R̲EÑjsû×þ üˆ+ IJҰƤ†¦™·R—F­8`—Î (‡*šgÎ>€ò‹QŒbêsTÚt64jÚGENÐH @#vïY|‚‘YÊ#šó[—YéYMí(é”Ñ¥�ÊŸïD™ÄxWù½ðÌs€ÉË(p·q’¶ œYãE®–?C©:\FQòZx–Fv= ŠYÒö4 [$£Ó ™2"rë‰èÇÐëÇi]J/7ËÁe}þÉgc}úïÞÂÉÐÎYùÞ#O>gÑ…k ìù£�?•zzï¦?þÃßEÑ®K'î{�ñÌÓç°"=ó»9»ë©ïö›©óp¼’¨Vþg°ÂЍŽm3–ÇG‡ 8Á¸íï„Ó«‚(sž?~o†ù—¦W®¡x¶RŠ37½yùJ:rŠ>€”¨;ÄZÖ2¯ˆ0Ÿ[˜d qýÙ´p¾ñêÅôž|#ˆÌ5~ßÈzà‘ …Z‡òò‚Æ BŽAr³&_yéÛé+Ÿÿ£t˜ÞrRŠ%Ë�aPÂß–Ã*(Ø|º‰±A&&Á–è�Œ<Övw—¬:€�mM-hÚÚ\£G|å: =ÙÖã÷¦pÔt3÷.§KYö˜@^1«JJ¤a8¢D¦ :àåƒîMõ�ÚT‡ò.�½±Ù˜z{³eÖ:§uîõ÷÷c fÎíŠÚú´Œo”¿�:Ã[Z›ˆ°¦''ó×Ym™j 1 ißc™«M*'T—Õ ¸ä÷fwS’£©ñPS€/fªk ZUT¶„ãH°DG÷Ï PªÀYÉ–`€á”aEuJ8o ~Á4{T‹AÙ&‹d¬iäa¾ °WJÖreò²H{@†m7ŒªÖs`ÅŒÇ(è.°döƒe©5î-ÿ¬áj6¨…†ŽgTãHàkK¢ãŒ îèx×éÂ�b½”ñÒÊkKD�¯ã‚öÞvµÑOwÐÍ«çË&û­S\§¯Näk·î¼íîìÇŠòÒÈ>ñ_ž±v€X3?6=pc_¢Ê@"†9°÷–ÿv¿œ� ÎѲ�1Vª 8Y¢qg]Z bþÎÑòú&n”â ��ó™æ30^å÷ÜG\‰ê[V¼ñ^÷G:—f‚g‹À¼åÑôVf±ÿV:¶Ç{ÐUд¿F® –(,Ä鋼13Ñ–Ð�,Å¯Ý Ø¶†Œê»gÅ9ê`Ê–Z=�ì>ä‚¥üŽ¥á²2úÜŸ;çĹ2ÓÉŠA^••ðPæ�ÃÙ׉kÉd%œ ß7ˆféëØ;Þ¥Îå;u¤‡nÉ3³}õ„¾}·þò�‘Ô ÍµÜ¾N<{gÁƒ«i’¹«+æò.�qy„²Îþ­sð“¥åE**ü$ãHéu*¤©Ž$°˜·?5÷ 1Ú Èë8¢¶ì`û9ó‚Ûp`XÚy[MVî¸÷+dzë<0Í G'ò—÷K³:y ²ƒpòÃKàö”4€ÎQ�æ–âåÁ‘E+¸©Ãd=�,éà›PA)Nx§™Æ–øììjgp€ÄèÜ:‡Ô÷œ˜cÜ�ÄQbvu!dß1<ŒÞ‹îc%"eý"ëbö¢gSYbÿm&›í„ã�³¼Cþ)lßàÌio…¥ÊfðÊY2ÚnÝèMÿð—%½Ÿáz®ãÌñ|i8d4üV:×SÈÙçW±vÊŸ~ä'Ó@__úÌÿñoRå�ëqH/þÏ«RÞÍ�:su.£_Î’µ)ÿñ9~®ã©yVì[ÝËr2¾ttBGÏqèÔu."¸`€ª#Øeoe)Ÿ¹ïû¥#Æ`*Ÿ—z—rÉy»¾ÎÉ=íìê «Ãºàoê|6ŸZ«#¸Dþ.�PVÙûÙ௜]À“ð`�·N³j­ÊÄ,(ÉŠãy S©‡püBç²WŒ›½rÌÙÅ Jðo­c�ÀӴɤ�ì�žž‚à*ÐíÙΊçÀêF³¦Ò´Y¨ÒË0€¾ÅtJxväM–œ·¬4çÿpwWdê´7ˆÐ3¨lu};]»y'=úÈ#é…w¿'‚¢µ�Ä:Î=ôHœ=×x ¹%boaƒŒ$Lå’2éÖÍéþŒy]|ùK©þ½ïC[­]‡×,|Ͳ]m™®­´PMjph”Œm*m�Y(rìE>[„žƒ béRƘOe—šJ€ù½Ù§AxÌkyi�Rÿƒ©�±ýÿó¿JO=ó\ÐC¼Í¼Ýó¢Ð:›çƒ³Å^xùoß×ÙÙ•þÍoüfzñë_K_ø½ßJïúÀ{"àÀó‘«žÎ3ìOnk![ÊX™ÄL{¿kßvé>‡€ÛLÀ’8³¥ðÂzôCu mW«ÃäæœÃi^Oû®~*YÇÙ5Øw‰½0ØÍyEwˆ iøJð1hmŽ@”›oÞN“ð¿û«Ž¦sO<›žBÑ®6¸Y2:Žíyú�ØkOCØX½7®‡žx¸»;½~é"cÛ €NÛ0?²�ÍDW‰JS¬ƒv\ ú�ŽE×eb‚^÷ÐN•ºt…‹›~˜1•† ÙâžÌqi"6%É?‘?h¿¹Ö¸n¨¬p&Dä V­p¼—_-}éO?��ÇO�¬³·µ­• %Kðõ.uÇHà܇S�Ï 03(Î÷(§Úƒ[½7lÊ„‹«è`k¬kýG�Ä`ØA^kéÊõÛ©žìЩ‰É4pçU:ƒ¾wVÑ¡ÑQÖi¡œÔ.7˜b™ŒøÙ™ ÈZy—ñŒ,ÿQ§umÕ{ñÏÚ(#tL:žUx®™ÁåØWù @;1ŸñæsF=¦â3dØÃ÷¢ Ïa“cmå_,BØÄõس5õ¤ZÃmÔ©Ë87Ûlê d ê¼™ýGÐå[;à>xvŸº¨6®ååQŒÍ:î`o{v•VNS1˜ÌD³x}¶�~bf¬;>iUÝ RCG&Ð�WÊÏt¦«;»ó!»Á9:àÿVí‘ߪïLƒ{˜LÐH0˜ºÞ$�Òí-m|e']zùbzêéó©Û{¯õ™ú´ë‘G…¨Ñ¥�ÔR�Î\@ÀÃÔÏ;̳¨ðWˆm^CE,0¥¹eÆGe±eèvq‘Êà-]˜÷ÞîKe ÝTã9˜ +WÓê4�ÍЗ�b»»TŽ(¯Oåu耹ãQ~}}ënEê\ÂÁŒ£˜íus�LBPu]óîÍO-5Ð!;ÓøìeX¨rx[‡9ø ÕF™[IÕ}¨„±m•X‰½²)¯Üfïoï(�8à?…żÁsv!4ù¼eÇ_í*AŸTBbí V6vtv²T—L¨Pa¡àЧôdÀ“¼Î šç,ÈÿÄ´! ˆ³ •ëŸUj� FõSÏ‘Á /*;x€Æ}*,/H%Ї•hòs±¹×j››÷B?žUéÒ¾XŠA…ÛЖ²_ZQ´â�ô%mÊ´A QØ€>W©È`¥çÚó}o|ŠùBëèýðm¡sz¯ô¸Í<´�Wy�ëâ8s8sÜÀ¿¥<Æ ãQwóŒèéG~—�¢šº‚7É+=‹ŒWY�ì…©ÆÉ:Êò!f”Ñ}=wB?Ùw ³]û×þ ì¯À;sd†*0É’±2m„Í;íúQg¬@Ó8²¿Ë]˽ÑA2 î=œj–¾qûv‡‰ÈV¹Ü¿öWàǹAÜÝ=cßg«˜I‡~¦BŽlèÔ3~ÀH#P‡€¶—Š¥†]1Ƽʘ߸ÒH°Ü� ÔJo-Fàà@_ìf”gJ-jŸF�}Á5ŒT�à<ÐÀžAI3bqb|4Ýzó²z¤êe8±ì¯.€c�`ñN„«¯½”Îcd̹>ö×Ia�À$å-v-�k„ªYf“›�dÄ» ¯½Æ>Y¶�u5ºÞ½èHMT ¸ðø…TU(�ì:h ®bH¡�“s:œ/—f/é}ÕØÍ¿ÿtÜoé[wî¤/~î?^(–§Ó'O¦}0«¹7²Œprë54Ü_ �uf¦l`„±GEÈ�è—…ñ:5óÙ4ÙÏpàX“ööè�L¡Û·ÒIJ×7’ýñò7_L£ƒ}•òýgž}Ž’¼Ý˜™ƒK0SZ0“Mð}‹(_Ae/ rÏ�àVMØFòjZíÀßkHû;A³ oܸ‘>Ûs—ï`d±�7°§@kRô�K'x•N_ž³„Q½Íz껯®A”’×ÁÎ"”ãwÁCt˜sÏæ6Èzüjú»¿ø‰tŒ¬Î�êï°W´Y +âë_ÿP!mÎ_HÏ>ÿU=FÒ—¾ðùtåòéïüÒ?ˆÞÓÿþw~;}íßþFz/¥uêo²§:2vÑóá¿î_¦YFG0ss.9¹dø{èÆlë*ΕgEÀÌ?FÕg¥�ß P`FåÓ,‚Ÿ½ »MΙ%õà }[NNþ<¯¢Ü=HÀqP ø7 H{ŒØ:’¿ògNpÑcŠ_cN{W+Ž8uð ‘G ÆHÐyÛ¡Î4D A7üt '\ÿÐpŒ%‡,±2èÊ3¯wèåíÙŸŠ³'è  ñ�$œ¦ O�ôåûÊqoñ3øòY�õ:ÈÌ`Ú!»£„ù Z&RPP׬3ç/Ša_¹<2\Ö|zšife�+¥”È.¨ 3�€ö©œ,JÏV? .Ä©dïY+uLÒæÃ '圔/8g†±Y-žQ³ d[ ‹£x”UU¼0æÎ�á´iíàܱ�–Œ6 ­ž[DæÀ•Ë—" Ùþã·o½²À¥Àõèðpð?³à[š›ÂÁhæÌµ7^'£h0uCÃÊþW¯Dye÷T¾ØÅ~HËêûÊ 3sm›bÐÐ`_”Ií<|$Àù½Îq×^¹/ð¢óU‡´%ÄÍüÑÑêžéÔ >Çw¼šäa‘ýÜŸ=ŸÊk/ÿp&H?üÎw¼ýbkâ3å·´ªÜøAíï÷½ðx¹¾ÓÌsŸ/ˆëï•}^Þoõ/ƒXÔ•\ƒšºÿi.ðÆrty³µ‡‡â¾è‡Ž^’Ã8½ÜsõŸ/ÏõòoA6u#Ÿ½x:Ne‹ úæá³‚‡ê)ò^37Æ +Ò¡n€P¾»ÈÒ™¦ntãêëéÊÅo¤önœð-Ole£nÔÒÖ0†.%PÉ{Í^ÓQ-�²Pgå†ϳ•TØ;ãš®³êmOº^:»Õu¤—……iö…aÞÍD‘uœ%ùò_ÜĘùþŸ½[Âíâ€1èÄg»þ‘ÙÌò vâ�, c‚"Ó”ùùk¿ÃáüimmM_øÜçÀ)AL žãÈÖg8ßYXÀ¨Ø�½Õr¸›çdŽ…„óÏ Ëet:Û¤ø?�ž=é6xP2¾@oë() Ñi_te‹g] ¸göŠzü»Ç�Ï�·[ŠÚ¹9ež/ù…ăèd–Ò'N³OW°gçŲÆî{ŽdéMš²gí|ÊL¬r>סzæî.ï�²_ʳrí½ÉÞ°féj‹tÔGe¿ÇxbÍÚëï{=½ïƒH¿ð7?…Ý]@CÊê·.÷N}Ê}’nÜ”¹½_ð\‡3í²¥u ORÞ´Gr8øyN8àÕò!ÖÁlém³úÔ}Vpt,¦†$`4`°¼L™àº«×Í/.‡í±ÆüìÙî×�0<’õî Úf²ñÊöÕ Ð'ø~__Tb0ÀE¢�Æ.Qþ?̸?ñÉO¥Ï"§?òÓïå�gHð.l ž¡3Tçh5NñuxÀ4ÆéeÎ2ÂóéÙ1Sºg™dϼ:¥m#´ t©·+ÿ¦G§Òí�©ô�ÿùÿNgåHGgWjÇIlöyWW7¶H]¬¯¼‹€Æ3^¥SÜà�U‚Ïz�#ùØÏ¥åã'ÓÝ+ôæ>u$x¦Á6(¸å¹¶×¼%�;©ºUÊÞ˜¬ƒ[Yiž=l DÑÉnæ¹tVÀ™Ù<7MÖ:ë ÝhõßKƒcÓéÿþ§ÓÉ“§âÌÈSåÕÊBš¡!eÆððPèo– 7È@{òÈ‘£ØR÷¥î®Ãa |á󟧚Õljk®g-©†�ìÔé–Cv�AqXŠ9gat3ËÏË[»oêÒVÞ ê"Õ45àˆÖQ�9Órp©gh÷x¶¥‡izL¿AÖû§õ×"àýð9{´î<³+û!¾‡ £¬�ö#XŒsþì ïŠê/¿ÿÛ¿… 6tëó¥mÌ�8ÛÚ˜¼–ñ[͈-äÚ¡.rú‡‚$×ÓÓ‡Óªˆ “J²†çàõ{sǨ<Uk ׂÛt$)—¢BÏ©£Äû.üBÝYý}‹s>JÆk'?|ÿý©þwٻÌaûڵЅ ¬¾qíjºƒ}3‚ìŸBVø™Á–V¨S'pÌøw} ºÎ ¾œõz`¾òor ³¼·2Ælcƒ‡V9×S«¶ù²"íÄÐç­VLÅm)ƒ1”ÿÚdòSß©Ý^‰ŽgެrÆ&�ŒãØ ÿ�ò{�ÇTãà,YG›Ø}vÝ ÙûjðϺrQ»«œªoòƒA?]GNÄý:—ƒ Ùèl—÷öü»ÿí=™cþ‹�¦ügÐ1^›Z[a[‡ X‡¶�ötØ•ð÷@¼Â—:Kš˜>�C{�nk½*dAùÁºàýòYåÑ<Kõ–Zž©¾�zè˜Aÿ®_œO Üœg ó.[„(ëwXù��Õ¹Œ±¬‚4è`3|‡€þ<ž!ïÝÞ ô�Ž"xœô¼C9¡å9øòxà.ÄÈ\tëBèY§dèSÜg™ÊÑT®|ñì©GèÐS–Ç¿ ÿˆ}Q¿v�6�Yf ë,´:†÷{aÓ1àêIÁÛy.S >c0��¯b;Ò­ßÔŽ‘ûýRþ¬®”®<@¿BS�}�0@GçûºX­08oSÐ]{Ggà-î]½z=uèfûƒ«—o¤Ó÷ŸE÷EÆÂãBwd½a™HC]ÌM‡Èön.ÝL£ )§¸!uur8ÿƒÃK©±«-m¯M�áPUa›’è»al¤±¹­t¬µŒyPéŒd�õ90ÎQ}¾§¦WÉ*ï »'gvÚ�d?Á™©(˜ÓJLt>@`N~¾•}ÎA?ç $  ¶¡( -4¤æÊ™tæDJwáù+“!^RÞ<{•rí�Ý]ì?¼u˜žé¦M•Àg ð/†tÞ¡ñ &Ó«—.GEEuWùâÚSɯ œûZ]ˆ¬xí.ƒžWVÅ+x´â~z¹�À(Ûå›Ê?“´Wg‘«Vȱ/=? 3±Qù{ ýk›{ °gC‡G×Þµš�%з¤ñlèTG„Ń:3Ç9Ÿïª³Ac5ïåBë¹;Æpc´š€öqèÌK«Y;@ BP¹¸ÊÙ£Ëc ž7ÛbjSå‚ÕxÖœƒ|Ûã‚Öϰ}`ÎʗСGƒ+µ÷�·g×6ùIr<³AÚ.èYž �WÉ;Ô'€ÛbÍ#ðº*`ßý½ØÝê¼�¬y DXжÑðÏ*6Ç(:€­0ššIfa **À÷xÅÖúbºýæ«©±¥s>*H<úÄóŒÓ62Ëà’¯Àר°‡?£¤´2ôõ»}·3õDí_û+°¿û+ðŽ\•$•4™°?ï_?Ü ¨H”Õ¨A:‰Tˆ‘søøqÀš9À¶!Œ£Š(ÉÖD扙= î¯÷·Øûßú¾V N34&­…¡‰¦ÁªÎ¨ñ¥'H¢1 r&¹±aÉ4ËWâA™T)5»ÖK0O€uzj<>š9—ÂÆšÄ©]…‚Ö�»Ž"­Ó¼ @É(ÉÆƒ­(ÓEé�‡#ÚqçëgÓ—^”ï` NÑc”­m\4ƒýþGžÀµ·6ÊFN×ác’d`H jÕü¤Ù&(¤(�›(“–N/Ä©©S@ãÿêë/3Þ@² @×x–ŽL2gŸt`:O{ uvLK ,Ì‘c§#šS×ì&Kœéä³ÄS § ¥Ù>.¢ÙŽ–Rãž;W¯±<–^üÜŸ¤ äfÆÎ1{Š«Ì ‚$hAÇO;åÛ—ÈäÓÀ�d®‚]–1/Áœ¥¬i/€†À«‡Š±ýãŽà±¤ùÝ;·1`Ù ¤Ë—q˜p¯€§Š¸Ù­›8`Írn‹ –Ð[d>”›®Å g¬ .Í­ Õáø¶§Õ¶F> ¼sô9fWU“i½��'8oYZy›’`¡´!˜¼Îïj¯±oöUŠ`,h)Œ_²½ô4ÛC8úBB�‚ãØ¶iç`5J|Æ7‰¤ÝÅ)EùNå�Ʋ™ù–�>rô(™Qdê1'³„¢ª†t5ÆZ ´h[‚ÚÚ¬¼2ÖcÃxgovŠ-¹K櫆.û'¢AbôºÆ‹Óè,d|‚.žbª8Íìƒë(("*øÀk©+ÇŒk³ç}§cÐ‘Éæ…Q&Hm�Åû?øá*±´¦Àß©S§ø&Ù ¿í±Og ¹üú«â¨ÑÚÒ–~ò§~>0øw—R�Ýd½¼4bÙÎÏî�ã†/ÈWtŠ;OAlõŒ(ׯï=ËÙyŒ…1:vÿ”ÙÕæŽ]ÑïaLoõ½®åËZìrÎó‹=/|Qg�k °Çl1¬™+¼ÁÞÏžÿ•‰ú±tB£�y8¾æ‰¶þÀϾ7=õÔ3´8_�Ké`O'zäüyì+utvA‡�Œ;´<=øà9@±ŠôÀ¹s‘‰¥#Óê÷=p.æ�:‡>ü‘�¥K¯|‹ñðJÇ ¿“&v¡!4k'á¤PÔ~ݘõ³ï‹ CÞç÷êd>‚ñÁ¿9‡Ò±e$2ñt ̰Œ–>ôá�àdnçQ_€ ò¢¾ÞÞô­_ €Àˆ~³‹æ³™›U8„œOd 07÷)è‚53a|‹£‡Ñ­¤ �„Ò¼ã] ˆÉ2u•ÌS€}ú^]±ƒï<ÐSFXÿåÃØ'�^êN^Þ«N lL³ €gÈϵŸtZŸcîêÊ!uŒëù¾sõs×åPGX25E†S×Ú;�ŒóRÌïÖ ø2Ë÷†ûà·�ÏälJ�:”º¸_ÇVG÷ñplxîG8ŸnÈÌT‹’¯dÇu¢kX…Ãqú;e˜ª°?XTÏ”gZ}BY%ˆ¬œQ§R.ú{÷LžáîVGðwfyçÂ{ÕÂñü—­'Ïðrý½E�P篭Z¬ÒàgêAVJ0 Á—¡—(�ÍùVnçÐ]=´¼È¶+yÁ[ïƒç~ó_KÛ€~ê©0ø ý2ËÈ®¨£ÿ/`. YD•Kéü›�§m ï*f=‹ †À©£cg�€�žž¿ü{ZC³)«æ£ÝÚ!À@cPã0Ð˳p�Ò±áaî „vkkè²fDYÉÇñ®°æ<Öx�ꮕ{¡³ÕŠ58Ð�°ûáÊ—¤­ÆS�\i#ò˜séžÜ›ÀY˽òõuË‹œhy^ˆë:ët¼ØÏ\=AÝÎÖL7d¢ûà¥ÓÊ=.«ªKå ¥é _y9�<ó@ñ)¼b¿â§ì?î¹W!çQºð í]ñï:ØÔ”yøáÔß'uµ7ÃÛ³ö@òˆúû2‘Ÿ:žt5¼¸Ž€"ètºäâüÔ¡.Ó®Ph:ŸxÿÖ‘£.¡3f�}µ¢JSkgœ=ÇbÁæf>m–žˆ>Útˆ³1ØßOpÛhTŒyïû>Ⱦ/§+¬ª_ØÊ ›`•'ž|&ý&ôY ëËùjv>ÂiŠ~¼‹s2dò©ÝXý˜%Œu4ÀRt^¸±NœDg†� ð[>YGöêÚ.­¦®�éÿ!�ù¹¶–Xõ;VÊÐŽRçö2@ÌËyÇÅ:HŸ: çæ&£|º´ø¿Þ¼†>.%Úzb*x:ˆÎgZ>ëÓ�ø¼dõ—x–ú1U7Ø›Í5Î ÎNm�� *lᨶâ“ÿÎ͵’ÌVº�žwö¾³éIô%¦‚8~íÈkW/¿U!Áà>.8¤®"ŸtâÊgjØkmÈft]³Æ öƒ¶k«uÚ3L÷çÈòâ,6 •£øžºÇFèÜ8l–°÷´ŽJK¬6çdzêÚ01öx5džiË€’œË±IŸ{þ]á$ÓÙ¡¼ù^—t¸GïÚe��Ì�S]]éyt¤7_ûjTîÑžñ½Õ•é´ó¼oá”, Û3ìlhÇŒMζ±PÏTŽ�º«Ã÷ÞU¸ÐQ~øz¬ÙþŒ�ƒ=>:Ã1Ã>,�•ìÞëTAØ6É^ÏÔ=Eyå¿÷�~-èiýüæµkÔ P…ïhc#ÉÇ‚®¯_y•jw�œ·Dàà=z´7POÕ™J�ص5Õõ©¥ë$sO×`¯2ž¥ñ!ªø€ ¬½² ­²^5í¬ñ2®8Õ5R¥k‚ö|ªÓÊqi'{'ë¼›æG/¯œ+OóÛè”ñŒÚŠfpp4½úÊkè- è¥è¿Èë ˜äR„í2:8Äz/±¾&*È×ÒÂ8•ù87L.ø‡K•Ñ"m_àãÚoàýXik»ÐªtÒTì/ûÏv퉯ÝÀ§É¹5*^”Rý}�{_`Ò*´¤>œ‹ÍcÕ÷\`H½g¥�‡Y±ÐK L¼+ä-ó„²=å^íRq¤™‚™“6UÐó‘V��ò¯Zn`ï qÐ÷‘¤bk É^¹Ã_!û ôC‡¢þ¢Í­äÑ©o�’ÏÝÖàåCõÀ<î•^å]Ò˜rÑgz¾¥om^硌ÉõûÜ#þf�žô®=RB¯õø;¯¹µž4M;Å[èÝ´¨·Ú AèÁ55Y%ƒXê›»¢¤{qI:q%PQ.8co`´åèþKð«•ÚÆÐ?Q9÷¯ýØ_�ýxç®@—wîô,3Wî†Ñ‰Ò0Ž œÔÖYÀ½Ñ½*óýñþ|¨£ë-eôÇòêý‡ì¯À_¹áØô.ý .3*ü[#EðÔ2Mö†jmïŠßkp Ô |x� ³8±}†Î\ Kº.m+°l‰8�ii\Ùlñe”ø¦ºŒð¬üŸFr=ÈßýÁ�¦³>œ®¾ñÎ~‡²gä°†áý?¸ºªöpÄ× ²ü”ß73¼ù@cK”Y_ ï�½�žÍº²Ì²ýJ5Š4+PúG]•N3¾¤BñuŽ*Í :ßrü4µ´]{0Mòì6¶PnpkttGJ†b¤ÍòÎÞ[7¢ÜÑÌô½Tˆh†�ýßøÖ×Ó‰ Ϧ£çF9Ö§Ü›†MÎU"¿5€ÇFÉ4ŒõªkhpKç©JöÌÔ©iy%��î‹ý1² ,'ö¹?ø}²šZÒ…§Ÿ¥7ýýl_¿þf¨*Ïþ1ò]…zzÃŒuËpZF} ðОì8Å,a( A±Nä°Ne�›”‹‘€�-p«Á q¤C>‡ò·¹å”Úf¬ÎÏ€AÝ( ‹ñaÉ¿u#¤1FŠ¡��M s P�‹­m xõó-­µ„±¿7‹Ùq™=%U€IÅ:h"ÛŠýÜb>f¥”† Ž‘éBŽF·ï hÈ N™]£ÕiIg :r“™nF›ýåûqLˆ!RTÐ�e@0ô¯qö�Ö-sZˆ‹H䀦ò 4~ œÐ¡©!ã[ßpÀða�,³f´ñFžëj¦š=ôtЬI¾È˜*¡;D Ð%2/t&ë44q_YÌÈÔìðß‚m:<4by8¿ç´»ˆmüÉÅ1¯C+¢º1Œ½t¢›9ÕÙÕM™qZ ðü¶öŽ(!ûäSO§÷¾ïñl�ë¦ÒO8˜˜_ YÊ�ÔŸ�3ÔÚÞ=íµ²K°›ù1�ç‚ÉîATºq5c<º:Ix57 æç»[è; Z£·�(n�7Ë—Fð7Þo¿§Ñ+L•/ù} Köòý:±[qêöܹ•6ÉôËÅ #X¢ÞcF™<Á3%�ª£ÍñYvÔ=ö¾ñ: ´÷_ÿÓ_çÙì?[†×¾Ÿ?÷_}<~'Xê%8 SȽ؟MwläN:y¤›YgNþ¬40c€B�ž8�îNMM@'d.2¶ˆBgìÜ{&=™ÙS]�áÏ8…G¤u�M�l×/šÒin‰ÓÈ~älx¹÷±^œIù¨Ÿ9Fùäg�á+Tpà.d »¼QÝ¥£³+èÃ6��éÔé3±÷ÓÓSa„+¤�3gÏà*�õ3×~` €h‘sÆyÚ àó“÷ÝÏù s‰ [×#£ Î!7xÜS刴-8· Ýns–ó˜{tîzPk%˜ +cL$ÖŒ2•ðO(ÈàçŠ(ikÖ~A/Ê-¶� B«fU %0蚤µHe Çëº@ÆAV ò=©u¦o8]a°z¨­)u0€@‡e@‰mάٰ–'•Nâu@Ø›µœóV¯Ò¡�>ð¢<÷Þ·–KëËë“_éDÛ!ë§ïz¬·2Îâ@ühºsëfé#À.Ÿ,cèÚ¬ä-xAeÙŸù8“àO~>>nÀ=Bë©B?0SÓÌü¹©æa»5û0·6ղ΂äŒ=¤˜à_3à­œãù2H·‚se†³j"•ßé8ó�Á¨Eè˜ò8 òF§Ïã\Îqµw"ýʯÿ“ÏëLsïªÉæÞa¼ž»Þâý‹KT+âŒi‡ÈÚ9ÛÊÚ=¨ù¾ú¤vöff@ìµ²( ÔuŸ¤Wy²ïó̹×ò—eì Çé™sOüŽï¶íˆY«!Ó˜°�\6Ë[ ÒãEÜ—9üP0ù.3bìò mœà[|Ïsæ>ÛÖ«šÀTK›ËÛä ®í�†ú�gʨh ƒ#~þªx×:gQ™-Ÿ :ã­ž_u×!*¥isÙÎB>–É)Z\ ñ3­RÐw 7øÄvXrNŒ�¤KßÞM§ÈD¯$øm‰ .[AE9næCÚyº5¶Ciö­ÔR·Dòþ´T€2øÒ\ð×åéqæ¹€£\g»8 ööbÿѺ©ºƒ Vžu ƒgÔl÷‰´‹â}ð‚Oq2—UÖ¤œ›Ã·‘È *>ZÆÝÒðyìKÞ.8 í + >’^çf&R]|>Ç–`r�•®^¸µbF6-ÅæÉ-_Š ôÉ%œêdž« ©·ZÙÂã9:8’¾öå¯ÁÛi-¨O(­®šÇ�m¯‚¥¨çJWÄÈA´¬­çÅ€ˆm²äej}Z]''=‡ý2±Aç¸iäÊwiÚókàŠR–Z��€itµªª Gš¢]…m¼Öy—ôç>ÚlR^²�¿wYË\äw~ðÎ-{&N’“›ÉBirƒ1Á דWP¶Íä šV6È/ |Bçà^åÙ6k»©_n‚ååc{·‚ˆã äÁ<¤Su0Ϧ¼Ó1‰m8G�3tTϱú™XŸ‚©‚jÂkP›gÖ3å=êvž›°á=o¬«6<ä~¥­L°7´¾AÐÖæ6Õ5 ªÐc­ê£ý�n‚=_ÿ²uËÎA'eà}`:gÏ=†mnÎke»Í¦6løU)UO FðL'²óÒ‰ïØ,y*PmßS£õ_zñká0�÷dhhüNÐ'ËL K®T˜‚r¿ÊyÖiTÉû&ƒ%äÞõó�Œp�?KŽYv\'“€†jsõFm8y;»»cÞý½wq$=ßàýD‡zŸ=ÕÍ†Ô hm;Y=Žßyf¤à¥Q^{ìÌÙpêô³½5ö1oime‰2#^gŒNÀuŒ‡0qù<3RÌ'ÖÌ ¨@IDATÓÅÚ÷•SÂU£u…lmw×YG“§ƒ:l4œ*P4¨Í¶óÒ‘m–yeܯM4øME|. ŒïÑžtÈÆðŒhœ6ö@ÔP6 bŠ€�nËã ¾ ôá,ÃØ*'{ɽÜÁè7K  d_ Ißm¯Û0âùݺF|d;s�ϳ|½Q½F†kÀitiH£N\~-½JÆGi Ym”TË38€qk€Ø‡Ûµtœ>Ë,‹BhX[ȬßU;AŸ¹¹™‚T–½+ ÷˜kà‹ü½€€»Ÿ8£¬uz”‘…¦ão:8prù=‹Ì]°M@Àf¿ϵ¢@uð@Þá½ÒBV¼Å õ=ððɧ²L"�_�¦Z@:8÷ <ÀR_;éø‰a¸0‹¡ê}^‚äöø³Äâ{–]6ŒÓõ”Ìh•žü~‘¬½j¥tžY®§™-¬-*äÙ[€ÑÒ…‹F'ë™Öfkò{ùÂÆŽ¾ëœ4ºy4#´œùµåùhw`ÐÀ=Çç WW)/uÝ5ì-mYª|Ñýôìè„òyÎÏó§a-h³³ HÊ}A“¥hX€Åmy!˜§.àó::OÇ»|†çʈy��…h¡àx²òq™Q™ÅyÔ8–™:F2=÷û�8?ŒÝþmî¹ë\Âï½¢¯³{Íÿ|÷âR;¾ÍÍì3ïsnáØa.¯{ÌWXǸ^�­%ÿ>~ìX¬Qà,†&Nž:YW÷ÁGX#³=ÜÛèY ]š‰ï|Çpð™m&¿ÒycÀ†Ï·Ì¥%£¬cqôî…cp¿¥k†Ì©†~Ø;ç#¸ -»—›tàþ1NÎω˜Uî9ÓaãÞr“q§'¯ßâ{ò/�Õ"úÙñ³ç¿ç¤çÂŒ«4Xz¯¼¼:8ƒ}ÜKÇgF¬•[¢¤$g šç„_ïÓÃr…çâ ¨ü^ç…Kdk˜i[‰lõüæçÂ�¹Oǹ'»¹Áܺ´†ðx´d³4˜Í®®JÛ#ðQî­Äº²´΄ŽÎNdÉ@û½tá¹wñý¯^åü–Sw~ȹâ¹8�äG:ðಘ؆B:4ëÌgnÓ3OˆÜêf.Û+Óþ·#då5Œ›1 øT±˜3Íú!Wº79kî‘}lÙ6ö‚~Œ³Ò±Þf,D�SöCçA5�fc;^[¼¤âçúYFG–ntH ðÿ8.iý‡¹“<¿¥s#?Pñ™X(â2k«l;€{ö.Ï»€°A}>Àà•ƒMm”½lM=wâ¹Òº—Uz)û_QY‹l¯åv8òB¯Œ@µ]*ÚXÒ}fz‚ŒÂ~€Ë¾  ǧQ§Þò_]®íPWœéV½A@ç·?¿€?éHQ†0&©3Ø Q½ÎÏupzfò‘}f©'ùo+©ß© ºW,ÐÞtÿÊ¿]G[ˆ4¡[--³×ȺbJ<&f¨9>Á|—E°°�;�Ì!Ž`Æ] =v<­ÌO¤õ…±�1‚¡ ðûeèkл�¨²Šl~€gÁß‚6ô¬92øÑÉ+Bg“»VÖYN§�}_u6 *™ÓéÀÿ¬(a›ŽŽÖîá£>s&M‘¡Öû¥/¥Et“yhÁý2“ÈvG…ÈC³FÕ­ä¬ê«QÚ~d@œ¥×¥s†úÑ.e] â\âìë´t=ªèõé9R”à`Ö1¬ƒR½R=tž’§®—²RÞ — :ÕñáÐ¥4€ÆÇï‘—ÜgoñèÚ ×i‚õ¼tË…¥iƒ)•1LýÅ+h•gºo?Wòg×öCñ{Ï*W|ŸerTœ‡Os¦Xk³ÎÖX�§BÈeðc¸Dì’t—c€a<ÃÌB{±f2@Ù•‡m`pœNÔ� m+ŒèáÜý¾kÓ{—L±‘Э%ÕâÒötþ‰§#øöÍ멳³‡bI:O)÷Ñ»¯2îÃÈå…ÁÅ:Ü$û¥.°Œm�Ko㪘=>Nå')ûUàHõ¬) ¥uéË,.ϲÏò»^ÍØê:£k]}}úäßú¥| ǽ6�¯‚³öècO¤Çž|&œ¿¬[×T–è­þòèãO¤/þÁgR3Y®Ê€Ð�`Ÿòe« ìºÎìë }ÀËÑGטË<¼Y'”v×<Ž3«Ï¸>òç‰fÌÌ“5—†-ãêuìè øQyÜ£<öw=wîPâËéØÉ³Á;äYV®ÑöУçÖ¬�÷«+00Ž^`PÇŸ¹Z�H=XG3û ½«èpÈçÌéÐÒ.ÑN‘æ=cÊj×@ágC+Ã``[ФÃÁ>¸„[Äï#P“{Î?ö8UÒÚboœ‹t+ÝÇÏoãco§méÀËýŒ‹û´Õä?žìJ²A;w§�»×Ãèñ‰¡wpø"c5ÀB§Ï�¯1bƒÒåmÛ»³Œ©%*L “mê9–—Y’ȶD«‹Ë©£«ƒžçG©L2š®LÓ׸±=5@‹Œl£¨»�#ú�‡‰ %þþ}:õÄ$dè‡ ¶Ö‰ëÁ œ ³Ü=+»ÐÅ|G·åÐ!ú2ß`œpøY6åÌaé™daCÏ·?®r¦=ÊñjÈ7=ë]­®•„,[\¤uHÕ!ì–²4›OÕ!ÖÁµ0ƒu›õ�ÿICy8°8ܶU³E…™Ég Æ9|äg÷òaƒ ‘ÆÀ ‡U$Ô9· Ã¸˜ÛÆ:ŽõìÎrö‹8�ô¦îe0¨²8l¡ìßó¿ß¡ î²êˆú¤sÔÉë™ÜeΚiñ‚^¶bÿ[#×.¯iäl‘-,Ïã,ªûºvÚ¥–жu“AÔ½#І²…V­\ÙÕ ¦€¼µºÙ4Ü?<ɹ3à:�=ØÛ[‡¹U�à=ŒËŒ}u’Ì —Ùzòf[ƒñºà9a³Asž-�Úøj—-sÎ º5°QÝÀ€ +){ÕeTí=_Úvÿ $˜EvT2íÇ']ËË%yuÚ thßYVJà4¨4ÆM+ûm€»ø”6X¿“'97u)+*XmGýƱ|a€�z_vÎü>kÏÿ|îüö¶d -4LR]œ§ª:K zp×™©"øZîg´´¨ jd¨7xîÚM(¾¶N¸��%È-WlÿÚ_�ýØ_�ýØ_�iD*µ­­­8~h0¢�„´Ý4™½:ᆧ³gï¥@ÐëíFÚ�ôòý/ï¯À¸*£ÒŸŽ…‘ÉE G.à¬Ù-Ö{Ʀ´ªá–•0E=ÔPd­pµgzeUV K€ã ¯Æ„Ê"úŠÿR”2Ç ¼ßh6£Ú1è 3# -;œÝsd€˜qá;�6ÛËóå÷Œà´\¸×sPÆM-máÔ2²ÕR½7‹8õtf ~ù=�Ë‚VžI�P•W3ífq^¡ÙÔÒ ˆPY@fëYZth°?u=FÔ¿+M|6zÙ!•”~óúÕt G¶Aý}=a4ÜÿÀCÌC‚?öL¶ÿ¥€žeå5L][3íkþðcpW’1s'ŽO`ÐL�,çb¶ïá#Çè??À@Cœ#öŠÓø6ãõéÎÍrö‚Ìf(ØŸÚ²Šþl)`ûJ«€›¥…1J4¶Ý{³%Ì4Ý?�OX·ñs^d>Ù¿�½çÿQþ£GÐþ%‚k(—¬SkuešÚÅ Þ"VC@ãR c £Ã¨å†¤'�—\Ì̶Ÿålª£ šÆ¤Z–%Ö˜}ôÙb¿ÍÆ޳ŒMÀu�+³(̆ÞÄÌ ð:Œtܳn^ÎC‡¿ÆšÿÞÆàÐa-(à3Ë5è#ó €AãÑ€�í|!P{ž CDœïJwŽ�`æ‚Mkº Érì~î¾ÊÀÚZÖ•Ãý­Sö˜~¦œ%#¶}¾Ž3ÂIª-¸®1^£º�z6Ãγ! ¹†þ’ç ŽxeÀ„{©�ˆÍÜ4àÄŸ˜4Á™ùãÙoïèÚ p…{dö®=GùwþÍû|þžìÒ€ó¬›52 j/T¯q[0„¥ËuÀ߯óÜñ Hù³@]”ä9оÏÏh¼¤�-öν)xqã „)d}|†tášoò;çªAà>ÏðÌËCÌ4p�s§cÝñ �Ú)æ÷fy ô›ý !]\"pNÿ6În™õf\Ë/¥ +A¸þ΄— Îqƨ¡ƒ=`λgºYºî{TÂ`ì£,Á(ggë–eu&±&<9ë‰ëiˆâ½–;|XÐ��¾ÀŒRažfÙRi%V˜µ1óAúÐ !°é^K-®¯Ž`ß%Ò±)ð$Í6À«,ùê¥Kéýø@ДŽe€—ël/JÿæiTÎʸJ�öYö=9uÜÀǪ9Ë:¨œŸí*ÜB³¿'i-aГsÑà`q,òy³�›4�„Ê5a:œo³ôØŸuÎm!Ÿ H@Jñöz¸ö{Ò™g*ÆÃïm%!�åSjTáö6tÅ{âuþ øxÎvx¶@Ÿïrý(,y+ð%¨1_™§ÝÆÈxÚfŽóðÓ:2G7ëé«HVÄ.Nº5EõS!—t ȇ˜üОÜÒMVÆ. ’r*œ Ò6•]ˆd§˜‹Î Ÿ‘Kö[]ôõÜŽ¹ vì‘3!�!—f(éêú2EÎ4ä¹ ~ɼ‰¤QçäÐÌò„…GÉE�.t‡ŒÁM�V›ÑQ3<;ö=Î?g´Ëçÿ\¾[zÌJ³âä…>üÌ?–Ï÷ﱑ¡�=õäIk~&8™—˜ë|øc �{%’Yï¬7©4•õãtÝÔ›¬ž¢É3ƒÂ1=‹S£� ^j�-jà?Gi_#M ¼½ñêKð…²ÈDâ-È,å§ý+©`€,qmuº�†F³`9K; h“)Ä8èix¨óXЗò¶ ô(ƒ|$îUÞél‘Ÿ«3P^"ß3s\~žW”“ÈhR÷›"»¯¶¨œ¬R¯£ºyðþ¸[Úíê\;|&¿:ÔÙ�Î?þDzé[ßÄ•Bàte%Ç¢^¬N 0@õvõb�Û‡u„n-í«sÛæH;D'öÝ«d‹â˜Ï!C_žé:…³‡9(C+«-óOF-NÝr‚PÆÆ&Ëbj«àùÒ&üÔuÙF¶Ëó¥'K»®üêâ^ö öÙf~Æ:"µ!ú бU“zˆÚ£ØÒ? ò_{AþóøOÑjç4öÁÀ¼÷ �¥ùžy_ðŽØ+žïåzä0ƒ@7vÖÒvƒôd_eíž‚�vwÈî&ûÕ=3ˆDZÈ™2§’Ïs ^4?AGÐÁk/“éÿøÓ/°Î¡ËZìtxP__ØÇxȤCe�T…˜„Ïe™°×ß$ЋìÂD;ÜÐx¯çQN. ¿´`P@ã›'€k™ °ZxÙ"ñ«œ)iêÀ›™£ÕÁl�Q„~£~±E™b/ƒ5½ Ú’}‡v•­ð;õ"u¼ ÞïåÏ^¶œY‚/0-â±¾�êÌè)ë¡;ʃ<‡:št©OBHè/Ê_ê8œÙËudsïí;d Ï“YžÒéÓ'RWG{8¸ÃÑ­,¬°D¶¥Á+êW8Àú{{qŽ›…Z‰Ã½=¨«K#“!Öx‰u©Åþ\EÇ™ÀN:tæt8xB÷‡×l¢£,Á‹”èµê�º�í  ¬ë>~"ôÔBdÆkÙ’ì;�î@EÎå&:™Aíêã:¦¥ eÃ*|rë¹×FÓ†ÚÙ!X�`ÄéÉ™¨$6N6ý V�MµØŒ¥(Ö«7<µ1zž!þà÷~'ýõ�ÿb²ª'¨û°áX• öò®È'€‹}+ƒT]ig9/«‡¨ËnÔ¬ý=�½l`žç?»Ü׌–ßúà¿ø+ÎŒw±c#ƒ©1×@b+‘ +âh]‡oâ˜-F†4Â7ÂŽ4ø’ÿ¹¾™*AÖð;½GžSH ¬Á¬VW“ÇK¿î{º·ú™�t9ðJ厲U;4 ÄÒ6“wZÍÈÖCŠGô­ÝÈ´¤rõVéPzV_UñpI¯p_ö-ÓÉÖy¾Áœr¤I0KÏÙ*´™éfzþ’ú ºoÐ÷©§«c¸Ç‘ô€ÜÃç3ôÞe`ÓæF0bàW‰ò†÷´¡Mëœ|†6ºgÒõr­œ�¤6ƒ�Ìç/ö—Ê�¬_Øzî=–ÀËØãm*Z¹òeçªÍ¤�a%/+$Ì�¬ÑÔÙ« �„')¬xâ¥îb5ù‘¶šëd ¸‰P¶WpÝkù~Á1YACž¹H@ËŸ}ñÏÓ#�ž yãY÷û[ÊÆh¢qz¢Ï®¤¶­ep ’¨ •íuèÛ2/Ÿ`ÔMó Á¼jò ::ÆØá+yd³G”Á/*¡ò:¡d›+Í,�Õ€1ˆP‚~D¼V¸B öÖ¨,ÍÑŸüè±c©ùôñ¬š4•[€îC°�aiëT_ÛA4ÕØ/…Ÿ®ã€›ùÙ{ÓM¯ë¾óÖ¾ïk×^]ÝÍÞ››HJ)RÖš6eI¶’ñ’ÅqÌÀˆù0˜2�c ‚Á 0A;cÁcÉKì‘DË’EIÜÅ�약Wum]Õµví{Õü~çé—ÑÈRDF†üå}Èêªzë}ŸçÞsÏ9÷œÿYnUZÞi ž£YöLÜA'�´7oޤŸ9 3÷6tŸUû-t�p¯¹=¿˜® Ý@°{ ½>� ô™åQ2Y‚„úAISŽüO;j‘£BÖàw±9m��¾ó>Þò¡¯¨¼+wC¨{LŠ®I<Ó½VŸÓ.v(”·Ü¯•¯"öp±(“8„ ,…á÷¢ÏtÑ+›~–/vftöt³›„6©~‹Ï–?7°ÍÅ©âhTF²€òÇiðÏ�/AGÕ�ÔV·ZmÜ¥�—s®@/y�¶™ÛŠû¦6ÁîÅ5ðy:Ã$<Ÿ'� �¯ñL�¡ƒtÌ%³‡#QÙ‹„öù“÷uõÐ…æŽ-¡kb_c#~z;’ô¹§h<æÇ£Z7‘ÇϸF/¢‹æéÞ9 6¸LâÇLOD’syÅH„Î'E"+sÑ(àØ1¬ºü•§@žy ä)�§À4 4 t¬lacæ›Á/ƒrp€ (LO’5|ú�ôÄO„Aƹ»bþÊSào�€�ãñ°¢Ž…–�çOcÞñ£æl˜´ñÿ°üø- €.«�|#¸XÞO —VŒÂn€‡*y_Îx60Ö &"¡m�ä5ÚMð¾@½m ÐúYï«seàÜÀªÀÌ@ŒÎqUFÓ€J71î9j©r°*Èêš [:¶ÐVÝ ƒ€‰ñÑt�óÚv&q”¤¥¼ƒŠoåx 0¢…^ßzú+éÜk/‡c«£oÖû<Îøõë×�iÕ|ä0÷˜°Ú¬÷W^~‰³¢n¤O>ñdso¾ö*mÆprã rºôîùÔEuXVaÀ9v7o¦ƒ´q3ø¯SgõŸ£ÎÁìÌLè �7×deu1î!ð%0ÚÓÛð¼ ~�jÓEž?޲¸•Ÿß{ñùh7]^aë;À_ª#¬”±ªÉ6ûVËša›0�ü¼aÜû|£VœÝ»†ó .K,LY»iË7ù'\JÐ^ÙìzƒæŽwÅsÂ7?·uX ¦ìgšÏ–ó7L:®ÎMýiÀÑŠ&�ÏØö<» ¸`3 p€çô+Ôù#8½KE2çC7ê<ÏŠïí=tè=óɤƒV|ëÐxfVQÎ9¯̶R•$ehDõãQkKǦ&ÿ (E�pR9)Ð!ƒ&@)¼'«]°ùò* $ÿ;A°¤3Û ¸:×p@ŵ�j9žÕH€B`ÀÊ<ÁHÁ ï¡Ó/ø9÷|�.|Á”l,ðt™å(‡µ¨´Ük*]ä ¬îªolN£ccqŸœ|I3Ø™¹fTʼnfN¼<çÛjŽõhÓÎó Žû9ƒG®¿-o·q¨u D2øÿ¿$/ä‚]V¥•´0èm@Ùj?3=y }ÔŠ>ÉônðïÍ­}î»sW!ø»¼ìwÁ�}ï§^/fm—&~ êȇòšï±‹€³ë,X`àɳ½³¼*oú~AA�‡ð/›¬£Ïò¨ þòmÂêóƒ~܇–ÁÔåE+W P{OuO- %ÑÖ6A^7ˆb•� †c7¸©þµE§� H º5Áy¢tÈ€O¬��/¶¯ H¾6Ç~0>6¨[Ï~Ò�î¯Lsì9]½ýй)Ö^¾@ØèX ,FoX�›%Ád`«b±Í||Ýùš%ØÓÖÖ(HÀÞ<|âTºúîÎ:=�>úø'C� ³‡¶vÐNùÄ @AZ$2?o· éÊ�ð:`\È£t“·¨æâ5õó‰PžÉkÒ“Éž?*èe‚`º´ÛÚ")„ûV {n§û½�ùp �Rp• Ó=‹ ÐÇÀ”IC®G´Œe}2Š¥ŽŸÝ§å%_wÌ›—6Šd/eÀqÉ'îMê<ÁÊSúÃ5uÌžs®Lx9zƒ½¾îûÓW 4„¼…ž0‰� VøÃyÛÀCß+=;áï± 9æÙ3Ôù¶¨5�ÎÊœý�Ðr‘=Ú(·{MF?s¶X^צ̳S‹�„4}�v”Õƒíûºƒ÷ÕÞÇy;7ÎWýâ>é^j°¤®Þóéîئ½ò~¯Üš t r |»?jOÌcÏi÷Ôroõ¼G²¨µgØ&Ør>?—€`pûÜé·SYÁFTiÛ‰Ævš­$,•$29Åûè•ÿJ›n 5Ri>°¿>H_Jëå¼Õ`G Û æaA&+Y•®¬bŞṺÓc£´áïâs€»»Ó÷Ïþ9k8–Šyî+/<› YÏÞ㧨 ªL#ϧfìÏÏÿú?‰öš»ÝΞ=k&MìîgìÖÐ�±°7RlpÝ€[2SOeXqÉ2¶ÚAª†`¯6• è�ß© ÏN+Õ‚ÐèGu÷”W ä*Gì˜!øîq0$ýT˜ÁÛî]âÝÿÝk¤·6ñ«¯~/=øÐGRÿÀ@Ørò„ük²—÷HíFõ¢Ý[UùS}‘]ê0èÆêóå!�îHðBß{82ÁÉ€ctU¶¯E—†gŸð™W}_Tl{ãÊØƒ­l”OíVà”/÷žì~ÛÀóaìQ’{ÙÿÝkLh71äí7_KöG@ÒêGÓÿô¿ü¯q¹þ…t³ÓOA�Õú$pE °86‘¢­WßXºÿ6ëX ßÔÔAp®ž±X‡¦ÒI[s]êÞ‡ÉÑÜ„ùDEYŒ6›CzÚn/<ûíôŽÌé;˜¬>zü>Î ÓÉh3?ɾrßý¤}è}y³—ä eÝ„eŸaG¦ ‚ø®Af#ïÐ@�ç-CgóÑjëX+求mÙHò†~E–ÊàíøP±žòØ�0ÙÞÆ€¾ò©ù Á”f´AµE›Ø'VÐWCT_.ð³ë�¼oW‰ñœW{ùb:{î|*Ö6QÐóê°]tè4-ÇW7Ì^¾„öÅÆàköø1|Þöt™Ž †�M,”‡½“ÝG|m‡D‹Œ§ôéX4hh}ï9:“ í~ öxƒõ&2ÉLúfò«<#ôaŠè€£_¿j0š}¨kdl<ÝûÐÃðÓ±x¶<&O›ø>ë]kX?ýºþ‡XÓFüÃÓÐ ¾ yìöÜ$ºÌªg|]’?õw§óð~w–>îÿ£þ‘GÔ•îëåTm�Ö–5¨©†³�4Ô6׎2p Œ¤Oªÿk ±•¯9xFËU=d­ý1ÃÚ�OÍá+’ Ìš(/VopŒÉÒ6þ‰�?þs¿®­å=Ü?öldS[©mBC3Ǖıjt °ú›?/ø]?E[×À�ºÔ@ž¤£¾LµÑ¡îËVü›˜ªmægìå|שêWF”;å_š˜¤I¯Êsª0 -–ÖØƒ“¤PwV³—y)OV¶ë_;Fï'þQsÂF�À¨ÉFvì2@ÏØ¿ú Ì\ ß ¾{‡�r"�Vê0÷Î,¹WÚš¬€0Љ¼¨Gå?»÷™ü¢-�Å™ûøÏDr�IÂV{�s´@; ¯ê;º:còóå+×R‰'í]Ý`º½tWãsKA?éÿúç‘Ç?E'øÄý†áA[’$XËíí¶teævj*Oú*#®³­¯cßµöb3HÍTpëKll™(ÉQe+úÐÝ$šdÒ„>mC7ÐA‡DUy øê( 3$m �z%êÙóç7 ÆÖ¡Ëw÷ð‹éІ€ °8�S�ŸviáNf%ØÐ*<¸†ÝÊß”†Ë:y„ GÚ £—.^O/¾ø 2j8-Ì À:r(ôÔ 6ì�ÁëÑáJ½¥Ï+�5lk š/®cb<ÄÚË3‘lÍw×QÛ–ƒÒ‹� ±£ óYߣüikÊ_úõòÒ.G.RÁ/‘Ãä¹Êà.�ÿªÕ+)jð™Ò˜;p0x!ü`4“­ÞÅ·|Ö:>²ßÝŸÂÿäžÊ�ã2ùF~7¡%ãðî¼—„Nô¯{¢vK ¾�²Â'Ù·»ãû,IËÊF9óÚ%Q&áëH|Aö7i¥Ÿ½†NáÆÞ]¬.ÝsÝ”;îéñÑ �×ôG:"†ÌzŠ©9´âGÆ~Ì�íøkM` ÚøÚæ ,ö22Ö¸—².Þ°Ab›/0íÊ ñ˜)>+8Kc#vr LÙ]ALÏ ¥¶‘Ûuö·¬3)㌧çÿÉS O�<òÈSàPÀ­Ë½ßÍÍÊ»+—/§§¿úwBªÐ ÎÝÄÑÎZ– Fš]n—`�„†�FBþÊSà§M E�'/�º`d HØQÇO)»¾�?µ,ï\þ(eU¯€¢N¦‘­Û4 mC.ˆ£‘fÅ“AiÁ9ï`Æ�HÏoŠ@)·òd°HÀËó§°` ÷…!«#n[våe‡Ÿ§ |ëxÛîéÕž‹³1§¨Z¿ôÎ[iàè‰0ø@õàþs8ÜÜ›¿{†»gcßûÀƒ\ÆåÂÈÅà†ŽK§r’sÖ<£©·?A�¾ôñ§>¨K%çjÜ[­ÒÀ©sl»â³gN§ûü0-SûÓð�éó_øå,h‡ƒqêÞ{ÃÁ3`|d4ª|"©€I§ãæøx:Ð*•£Ò 4•ÒÒ×*}Áî­óiEEww_:útšæœ"@\iƒœJÕ±:;¶p3Xüð£� ‹¦øÔ!©Ä¶ÚR³ÝjÀ¨ÈfþVÕ_«2‚a¼®ó+m  ºþVjT«Â¼¯•àº-:¾f 9Ú°Ò[“åNUw‚ ~Þ áÊB*Šqý› u)÷«ä÷ãG§£'Ž„“³€¥øHð•Âm ´,»™¦qª›0 r ¢úXŸ§� <³Gž€vÍæÍ&6áÀL_? #n°H= 4‚³™ÄuÀw2'Ê¿ ãSÝD ÀÀžŽ…կʎϕ²* ­½V±-ĸ†Êðm3-°&øàÑøaܧ(ÎÏ4€æ8ÌèöÉÅ@€PþŒŠÁfÁO2ŽY'Õg»™‘,¿(“¥m9mU„.(c…žÃó²*Ã9)ÃÎÅ+káI«O-b1ãÕ¿þ�ò¨ã§*-æ�5«Ž½oêq®å)ۃʋ^:�A ÖGPÆ ä´ÒÚ*†*À:VËIs«( € 6!›ÎÉLüªÐ1‚C¶ÕÏ*Dœ³mò!-Ñ8òŽÅ¤Ž*ÖlZ•SÕ hàøu¾Ú¼§òà|¤ë­›cQY ßÊ#kÐܵ˜3häkÙ®û˳ø]�$ÛiÁç ZIC�XmÂÌu³ü l§jðÑŠ­ÛT-ËSò �ãÁ9'1fpI'×1ê\›øÁò­™Œ"qÄy`€€‚naò„WÞ¼4dUx£’ˆŸ­qí �YÏòS^ä·Æ¦ì Iî\ð‡Ù*ßÿZð‚ë:l• óÍ­¬Vx^'‰ ´™ îo•î0Uk-èÑ**˜­ÔÚö˜t�ŸW7y?V?È3Ê«¼èï¬�`@}¤™|cðL�¸ðB`d�kÕ�2¡Íµ¹¿©“¸·üà=Õ±êNóžçm`Að¾€×\?ƒ'cc“éì;oF¢CT 1€#ÇŽÐ �ª8@9ÃøøÀÁTCÀ®ž}«ïÞûüûÞ¯§W®^‰àÖmôO)ë'8'»·Ãy¡Œs Ù "çé^©  Ê’`bÖÈ© Zù´ ˜>99ž†¯ñù öÈV’¿šI6»ûâ IF¯¿ö gD?„\>R寨î.æ.0¾½ èŽlÙ†Òê¥PWè&ƒ(òˆûÎÀ]Ckðªºö ¡«g¨P€ÎòY:Xþ6¡NýUÌÑ €®Ð6g¿*OL  [™„zªª†±¢ ËÝÛs|Ib¬�@»2ï•ÉÔ‘?ÅËç)ËØÙÚfÈ.åQ€M;ÉÄ!×Mý©Ü9G‡n‹�NáÔÙA¾K/«¼­4¶e®¼¨®ÑF†_9¿^žôþò@$›@_Èñ˜4hàÛ.¶ò¶r¤ÿ¤¿Føà-ª¡Û;;ái“²²/AFÇåçwØC¬Ä‘ºêI“»Ñ··9fÇd:}ƒFvßqß׿°kŽ y“$·ÑÎѽ6‚õÌßq¾ßKšj{ú [®j?Õ‚œ#ØwcêEìA}ر“$B.ÿú_~-­' ‚gl#«ȳ ‹Ú�}È�Unßøêÿ›ÞùîwÒG>õh¬á‰ào÷Ϥl¢«QûÅgÕ9Ú �´ü§ëÅðõÁÐE´sµ+RCSYt„XgkËdH$Pç…3qùP=§Í¥�‡É^�–H(h«lH÷ÞÿÑ<]8w&�ŽŽ†íqíêåô¯~ç·Ó¿øí߉.,ÚÈŽ]½cu¬v„-–M¬ÐvµC’ãXör­ ˆ¨g Eò?g¶Š6#û´ºÄZ×qôQ;«Ïxµ¯g�c}a’àÀü ¯iw¡{Å5 Ὠ¼¼£r‰§&QŽŽ§?ùò¦/þÇÿ}C¢â‹*J=]Vjߎ¤ 7 Œ?ywŒÝ³Kõ=ÖV8‡9Ù%pàmÝ7}ÿÄþ¢�b•š²áÑÔÜ?ëßh«Dp@¬ß½}·y—°�í €ï%¿y)?Ë$×á;Íc ¥žûnT®]y75`TàXdÜø4úEÇŽÇÞš‡¶&Ãþ)!x Ùyšvžû&¶SÞM 1˜¢-bG,«Ýæ¨úw~õHŠá™ GÝ3³Ž9Ð8\˜óµÂP½àl¼§—k¬~ÖN0¨ù§ô‡éO~ÿߣ³ÖSï¡»IR&ÈOP4ŽØÓìæ3F€Ôdc}��ÓÅ‹—ÂærORŸº¶ j´5øIùÕöÕÏh@6¬t¾qõ²ÂÙ¸¶¬Çv¾Ê®�ˆn‚µ·Õ‘&Âf�iÇÕ¸üѱK¬«—/%+á½®_¹’j¡…GY´¡S[H�Ŧ½B@úñ�"èl2À¥w/¤¾þýæZÓ½?Ç’©ÇÕiê1(í‘_îaú ê^+3épÃ|j±ãšZN°wãërÍSkUºç�Ëm&MY•ìžR��Dîɾ—k¡ïx› íI×ÏŽ´¡þÔg>åáë×Óa‚âØ¿þåÿ'�'¼ãèqøn'M3ç�|,�ü~“ ÷t»~5Ç^0Ñüü…óé"÷�'ô‘LÎMßOÿI~õË„cilkõ *¥}3]LÌðü`+L‹¸ÏV9ô·šûÙJý‚=eÈqàÈÜ{ **øÓ b7>÷Oþ|íÔ﮹:Ãd|ñù¤»§�ä‰5|ú‰�3;LéšL¿ºº�bG9.tI5{—>Nt�‘Ð\±öÙ�ïëßê ÎUg/6¸«=ìXô¥L>ª +‚-Ä—8¿^û\?Ä×M¤±À KN_GŽñ  £Ý  dÍ/�€Éþ×P“%^Ø•ÊdË"�ø�eÈžŠë¯M¸½-Þ�FT‰q�:’ÊîØ°{лÞk¨G.Yíi×ÈÎò‹þ–÷ÐÞ7 \ßÊdYí‚J÷<äÛJYçKKð/б&Øj[ûš2n2¯— ¦~nŸõÁaƒ…LšõDodƒ [º\‰y¸†u$»x ÃA\;wh›l{æ†ô`œ`U§ ã–:ýPG"‰]y¼Ô»Våª ´¿ôÏÕ¯»Ø¨Ê9¤‰õQzŒ�v‹¾Ì¢­Û»‹¸W=Ï5�"ë =æ¥�lpÑyHƒàb'ÚNvWšFÆ<î¢×�ÌS¨q}p0 ìßÏç6Ò7Ÿþ ðŸÒácw1hoCŒ ·ûX){íä*GË̯§æ²åÔR¿•ëµÁLŠ¡W];º@=]JòʾÙNº‹ä‘éiìŽ=ˆóÂiã¾³±Lëvè�ÿp×�6’ý°+ö‘Üÿ1«ZŽüÙY»ŸnÀëôÅXŸáUl^ vn¥®VôÆ6ÉWœq>ºÀ±}»ðÉGåè)yo“9»”£#œóþúÛéòÕkècK¨PGŸšô©tõò`šÇÞe¯ Û_?—µ—7=¢ÔD"×];ÀÄxe¢’ý8‚ؼ®úƒµ‹®\Hkl7á…Ä#m9ÖW½ãÞïN¦üK×"‚è¥ëÙÞ£>2±X™ Ûy—ǽ‡~¤þµVn`Xð˜{3^_𦶅‰ÔúS<‰1e¸ Câ·l.êˆjîe²šö®Q`GvË3A]_ZÿM|Ìõu~æ“$�£ÿ�ÏY/‚ßÊÙgÅtröwüíäLægQ8¢lxϹ�å"Ž/À‹ð±|°ûx|Œä%î·�íj9~ÖÀû™dmÛy†{øãÒ³STœ²ƒ¼ì²™Øyo�ch”k»^ؾ?ówÙhñ^QMÇ… t· �&Ó»<ŠÔÿè‡ÌÒ 1Êÿ“§@žy ä)�§Àû¤€¥»<×Ð�¡ôÊ+/¤š ÃÍ@ŽÀð†½Ùƒ‡q\º+�£êÀÖf‚_:£ù+O�Ÿ6tƒºr�.3¶ ¢`u†ñ¨#ê{2Îþá£Ó¹Ð1ËÀPœ *Á$ÛPôõï:]‚6Ï5F#ÓÉï^„t¢W(›* „jdÚrSƒ±½³;*:—è ‹ª ÄÑ^‹ñ N ÐÎ\Çy‘L|+“› hßý‘j‚ïm8uáðÎ<Ñ Œ¾@ØÓƒ{7½ñú+بì¶²À—I0�]QIâyîžÿ¸†Ã/XÒ{ð 㤵)Fû)Z³ÛFÑg H?úØ'0.+£ÕÞÁÃG㹞g®aÚ»€ª‰†tæ�·qýý NK)Š£¨U8JGÑ€:÷p¶Š=WÉÖc¾V´ºÒÖÀº“-²,×q.<wnzÓŠ³]Ž^!¸~öL¤àX%ˆ”UiZ)bEå&k/ˆ‡sBPÇ{•—ó\r�e›Å¥•Pkœf΂‘‚û:œfëÈ :¯á¸ L¸>& DP ^*d®ò�m88Ôà‰*xx/AÝ"Œü6VRi]sÒ§oN…ƒfûg×[�gG¢¾�ç¼äOéQ†ƒbŒA Ú�¥)ôòy‚ :o:vò˜gµãó8cûiåÁÊ'æ¨ Ç9ɲá6pLš ;´Ðù³)ÓÝÃ8�¹3·r SM€ZYU:”�O�ºpˆv¨À”¿ V: «7¤»—s0ˆF€F%Ç ´À4 x‡ ^‘ð"ªú8¹s_yM Óqú¹öNƒ�ŽÎ­þp–Žå×Òä[ÀmÑZ;‚çð±Wê|wR�E|ÙTA7Öð¥œÊÛ �¼çÁèc7 ƒZÈå3ñM‘Û\¯ÀyÊaÏwŽj;ži¥dSKÁ ª(‘{+„¢õ/íŽ ÒÛYâÃýxºyã Ÿ¡Ek ª“ÊJ8ç–Äåߎ ÒÑ/”E@`”É8g@ >dò󶮢ÂJþ1C`K \i}c1h$mÒˆ™ø.t!—~åÜ{ƒ@ˆÀø@Î&ôͪOlÏX‘�ì<ϵÏÉœëúã.×Õ$£\‚Ðw¿óm>²ºnan:ÖÓê+AaÂ]ør‡ pu€ÉX¶æÝÙ!ðï¨Õ-.‚À¾g§;Þd¾‚õ�·lmp¡�t½XÈÜÿlaî9|V­EçF¡õ½ê"u•—<Uâyê5ßãzƒ8ÓÐ܉OããФPßÀ¼r¸®"õüpªÞ×C÷E:e‹JnÏ'¼{ÏöͧϳÜ}‚{÷´¢&Z27Ç`ÖçEõ�ë\�q–©U   Ú–««çg§RÝGX|¼£bѪ˜êzZ"ü´ËÊ2\M+áu&€Š@’•u•´WÝC÷Aå^iPHÞ7‰ÅäÏvo¡‹JÏþýŠ�Ž�ò,ÎÀÜ›™!!mKðÔ¤!’°‚W¤šá/ÖÌÀ�A_eÓ@�ÕfîÉ‚=vtñyòk–ÌÀ9±ðÌ3I³ 0u€cSÇý4/eÑ„ õ²c÷wÁ´h%‹¬)/C×®¢“I2�NŦ2‰4|f °ÕÊT×ÍJ]AHƒ>ÒC¾¬5èWï°Äìñ´uf¯ëÙC¥2ºAÙsT'×p/ƒçžçl«dy$’ IÈ»L辇>Š-ÕÕ‰«u«´Û$éOþ†�LÒ†°ÚÖ1HKçb@IËd5ï‰N FÛÊŠD�×Q¿˜Ï …Àa+Õéî/ò’<;žØÕ^�\h%¡¦�½ºšDY¬š©†ÏÝ—íHR€LE5 4^#šZ[N÷ž³?çôªvX$ê HJ<7‚aÌ9ºqÿ2@Ú*€é`@Ü@ŽÖ�{,džœå ÿ*ƒ¶nµc�f!v>“bÜ»¤§—¶‘ëdòÖWþó§ý¯þ·tâøÑÔ &lD÷õ{; í¬ƒšüj¡kA)¼­[(n�Y9.Ä?Юˆ`eŸu)$èàeE{��'xÍ@-²c;äDB‡6·ë�üŠß=&[ÇìóêV#ÚŸÆ?ðx¦á¡Áô[¿ùß§#‡¢KÕ½÷?”݃›IcíÓÓo½Aº,|ã?¸ÃÃÑL¡>ÉɧI”ÇÕÉêS5§{³{‡¾‚gc+·¡\× ŽÃbݼ¬r+@.LrP B\È"l6™¿3GmpeÚD }€º`Üÿ‘ÇÐ;&Opÿpª¶yýÔÝ÷E2ÝôÔdÚ?€oD–—É)‘üÆØ‚‡Ù«¼§cÔ/æLæ=ìä‚ô0¶LK[K$)ê£IS«î¤/šÞrÿÊd‰ÉGdY=å¾kÜÛÙØ�k9�~çMxm#=ý_LÿÜ/FòÙéñÑ8~ç⥋16;¾hªåí›&ôîßùÙ§�§U’¨NŸ šÂCoÓeÈ5à9 åÍ5*%åc×rÝëûLÝB¶»ûºcmWX-sfr%ÇzÈÓuuØÔQ�n¯‚uG£²öÒÙséA¤'‚‘]]ýt¤9 ×÷<øPì¡î¯ìC×Þ¢Ú�-?ÌòþŽÎ®tìž{ÒÛð^'ûë‰û?„-s(Ž QF¾û�¯¦6ö!ùÎ…v+áÈ禫©�¦ïÄÿÎÐÏ­t`â}3óK$�ROÅ,|0xízt‹ªÁîè38C—$ò6#÷'ƒ^ʸ>ø8­¨•çÝ�.�fe¡»k-½M€w& – ‹®áÔÄXìEa÷ã_™Ä'_*'~^ùuoËí=~ÿqWn¯’_ZHö« úû�EŽýgÞi@÷šÈor@cS;v~9úפéèÞª_¤ÌØñ£µ‘µD¶Æ'ðñáŒÐ3Øx#ÝÝ—ëê‘Mt!CÇv×ÇQ÷`#b/éØu$‚Áð½]bv�õŠj`‘eùß„’Œx²þ/ôsO«@–ꨚõµä¡ž2Ñ\=àßÕÁÕ%OÖ„×á7eGY �Ï>e0{‘£\{¦ :<Ãê| |ëÐ5ŒÝϹ¯6µ6Å]²‚ÅáÞv‘1‰8:Ý¡çíÞ�eH¢5yR_'ZcsiÀï,Wæ‹H³rÆaà�1t ª*t¥HeS{Žh½46:ÊX´oÀ1ò¾üÒ‹q¿Hªàù�ø®ÍÕåÑ�ÿP ɤ y_{gtøF`K½½ý$*4F�”‰âTo¿s.Bï¾çX$1žMi‡�Œð ›ew?~“¤ÁmËVY’µwFÓæ*vÅ¥5Ø2& U“<¢�Óí ãﮯÐõæF:žd³ú¶ÔÛQ‘: ~B§"ìlU·×9W�ÏÓ©%mOÁ{tðaß)*Äî[çØÂ­º4·ªïORJ¼ýRÀÜô Mè8ö2!g" ¦ú޽è~ܶ¯\oó2c݈5W/¸×ìê£@£Øwü‰ûi/ºgX`ãb·—v�û�v_pßÑÎ÷ýò®2R´çëw>Ïïêåu›õ“ÿ\{e^>·#�¼jÒ�c¬;?è³Èã¼ ŽgÃDê«þfb�ÜìùƒïŽ&ƒoô ù™g(ÿ&ëéwfz#ÛÃ}§s�e1YÈ#ê´‡´c |ónäÕ$m’º½�“õ3Œ%kW�ÔóÜBö2i ‡|w^ôÒ v,¡£ �ãPþÕµÞD_Q¾ô®EØÚ·k«Ðc¾`0dËq¸Ïǽöè’¯še‚éú:612kÅ{tÿÓ@39i2ð¯íPZЬA/1 ii‚D=zÐ}z~î<„}çÄòWžy ä)�§@ž„np±É²AÛJÑ Ží^{ú&ŽŸˆ¿ÝÓßød‡ÃÈ­Á±˜À>g �gæß›§ÀOB̤0¼tæ3£ÈjK8iþ�˜÷œ•ý$s9ãNÜÇÏd ¥¿ œ…sÍÏÅ~üŽd„üUv€hY‚ÅžkÔAe�`ú‚‚ÊŸ„¶°Õ!õuÇ[�#sôä)€æ©ŒÇsÌ-ZÎ gA]ÁýÂÔÄ=>ùägxËnzþÙïN�ÝŒ³7;5z °Ä³�<ßü¸¯˜žŽ¶túvÂa@IDATå/¥c÷ÝŸ~ùW-ÎM\ÆÉj£Jl?¾Áê\•Ä~¶‚¥šñè DßGF¼-Ú €ÙBL;G ǵ�ûŒà˜Ù™B€@°Ú`üÆ•¿˜³Ñ"–±[iÖÝÝÇØ÷ÒÓ_ûs2•/¥I*j›šqŽ�ŽD‹´Vž'­°ï¡ÕUÐëÒå+Ȥð§bÀºMÌ$×ø's–ïá,àÔ8ö u–M Uwes'žï:¤%´¸\'H¤£kÀ@@Ac>ã×Zgð™{…“…Á/è©`0ׇ›< QP¸ïõ³f7ë`]º�óÊ©èÊ3g.EÐ×d‹éYα#øâÙÝ…8¦ò‰€ ÀúÞž¦ž«K •ÁÔ0Ÿ-˜#%ÙV €z \™Õ€k±$˜/ïD%6c´ªc 'c €§DUgM'SÇHçŽXo8ÜYv2à Â:ÁHƒ}| ÿFpçN'±ÚËËÊŽ`¶]œ·ý‚"V•,qÁ+Ú]£jD«Š}ÿÉYV3î$Jã¹é̱ñ}òt¶L(±•´€„­À«>3øãØ™L†ðxéžKÌ2ÀbÐcÞs]ü7äî Ú–PùÝÁ§xsT� Èß&p[ô ¼ÊHÁ\yÜÊÏWø¤ Ù,-7åÍvZ9®´if]öqŽç*¼UKE`sÿ�4wåR€4�Ìc‹$Êžñ±ÔñÙϧ¦î.Î'<÷_&�PvGÿ9ç ƒsè#[\–PRߪÊ Ø˜ SI…ŠºÑªA«†—k;à™­� ä©»ä;`¬²? ܯÃÛ»ð”{�A¢mx>μ„Ïä§΂ßbü‚@ê*ÛxQe;_ÇA'ƒ=ã£#A—5žmËáò6ÛÔnQí§Î U2:ÄäÇî}Ôõt6Ôñl ²Ê8­:÷ ×+/ؼŸê}÷"eÏÏzæµó‘ç¼ >zY‘gÝ÷ü4® Êä%k?j§�Ù•H<ÉŽy—6âî³�轞þý±êAkÊçðè Ü!ø­"=òÈÏ„mäÞfµŽ;äÁiì—ñ±±MPó¼YƒK‚ò‚жDvÞ»½gVÑÆï>Û£gìÐcÛQ×¹£§�qÓŠþk"8èxß ¶KOÁ:„¶à»\0Ù׊fuÆÁ[«Øµ%´M¶«¢]p.k#œ%Ö8ïõÁ.t1R�±Ø€ª-ö�®1X}õò»éê¥s±Xán`J›Ï}OÛ©¤Š#X.ù}�¾½ÉÞKŽ–ôÎÔöìNçceÚ"ûƒIÛÛ€²Ví°¨Ú–ËØ³WéJá½ífcÀÀî‚ø#‡ºlV±WÀÀ¶æ¿ÍÞªr-gýZ;»Ò4�´r‚[�èËVÖà÷÷ߥÙë·RMÝ‹î½'Õ5ÙR“6ÃwŽ ]m½³o¿™ÎRw»o)ãè$õ��iXÜÐùü6Ðóvr²±ÕtîÓ@éì�Ø ¼¿–1NÄÖ½Epb‡ýŸêcµA’uôx£ùuÁ~e[[€c�Qd»±¥1õ¢CÓ¡ST ÷§«W/§?ýÒ�>L[Ö[è‰Ìî“ÎÚÒ\¾²5®If¹–ïÊ‚›ºöÍ{´C‚ß»äÁVÜó$n±ÕoÐ]ž¶›‹[úÊêyЧÅ\ØIâÞÅ´¾ÕöÐfË@tö>ã=Ο;›¾ü¥/¥#‡ïŠ=ëyª·ÿð‹ÿ‰Ví¯ÄF®_�`ÛðèDè¼ÜÀš‘)Ÿùîù³$!�DàÑý—‡Ïâsäí‹HÊ„íÔ�Úµ¼ù¡e2z‘™—¶®Iò˜´rß�gÑYÚ:!Ümñ|G­ÿFå%ÏÑV¼v-]ºônøOO~æ³ÈFqzù…gC—8n±„6ZÝ/¢ôÆw5ôë¤²Û ²A“唥=øÄý.º4ðY¨´ßæYÅ$5h£”ˆÓRºÃƒ|:ùŸöþóáî€îfaøËDìwhå%ÿ666§#tÿ"�¬Ð¥åxUpüÔÝÌíJúÖŸÿ:|-’ˆzzû‚Ï]Ïø�&ðãÞ|ó�Ô ßÌÎ̤Áë×¢#ËIÞAèsýò9ÚFßä'í/ά-ä3ÊŠG“€åi“¬¢÷Â’¸‹ñ÷±@{tFX&¡„ &¹1—Ê8šAûQ}eÀÓöñU¬w#‰X%Ì­�À_V-ëš—§±«—ÒûˆÁñìm|�6;ýÚ«i ¹^b&¡×Ð�Àê× ÕŸûî·ÃÞ·k’t1A® ?©œà½{�cWG Ao幘gy„4ÕÖTÇ­­(&É£~ªÃwq}•“/!¹´_Õ &ÕštYE ´~kÂöi$ب\Ü�cpLZ5±V¹hjíˆ$KÀ³Àè�f·}ßÿZž³¥ ¢C�ðѬLÖO1ÑÓD'åÈâÎê;[ OÝšŒ@Z1 £ú޶°º›FFÇ"‘À÷XimB¡6©t(¥:´ ˆtø¼aÛcëIw×úåÒÍýJ^™pÎ5<×ÇWLÌ·Ú]}ÀðàŸL»/¬ÒÕª‘ }%Ï‹î+ÜĶͥ$$˜ô£ôG›tžY^‰ÿÁúÆóäe„quÇ {üFü _7(éÀÔ�Õ¬µ˜€ÝìŒuõ¡MJêàüì°]Ø÷”ASu8YIq”˜˜ˆûÔ2{ŒÂi•³AÖH"àwùÀ.$¾Æ!ï;ì“aðÞX#ö çT޲o_23¼ÕÆ|F:Ö!7ÚúòMz6±�ã“xdº‡$Žeª¼íxÑHÒªã²Ëèþ¾~:ŒÒšŸ¤€10÷Cq£iFžîõtèðÁÔ;ÐŽ �#H�n»;YÒ(‘¤øff›ªÛ¾”¯âÕTU€Ÿé,{Ão³ÿ“ຉNØ¢ÚÿöràÆ5µÐµ,`Žùº6"AÌŽíÙ/# []ܔֿèô m—èÀ@’ê6‰øØðŠt±í÷.I&{*zäme}‡®'#t­z; L^0IY¼ÄŽÚ€“cã�S™pèÞ"�Õ«H¸¿Ýå9øÄ­~‰¼ä¼õcÜ#P¬"çK�sÖÞ-Ä-Æ5UÆåµ‚�7SðÇBîï·X;,ø@½n0Øgon¢ÛùÝöì­8–-:q¸ÿz<˜{±^_†ÇhWdþÐ&.c?·Mºt*Ÿg0vqï4hv<Ÿ÷ÿ°¡xŽtÌ”ÊÐ�îãÚó¥%�ð>2�OeezÇpü@9gÝG’1<ïø£«C̃}^Èt†}Gšu]¦;�º3ŽK�gå}q"åÆã=bA›B¸WÊ×®éIvdà�™lé£Ã=>ô*÷W_º·«Çœ»¸Wø|^›nl„=}àYçvt±Û‡²²¯«‡{‚­ÐÕŒ1|ŸÕÇóòWžy ä)�§@ž€fÎjÈ?ú±Ç9Ïëà-FƒšYŒU j�›"#Û^hù+O�Ÿ6Þã:Œ7«ùA ÌÏU“¼Ÿ1i„Æ…á¦A¨S‹›�‘J`Ï¿æ ]~Ƚ5^�‹Ê€�Ì1£­+Î;âAï­#fð¢ ÃOp=�ÉŽaΰ »@°Î¥NcÿÛ˜ÓÚ“¹p3Àmð/gt; C�h u«Š¬æ±ýÚêRÖ~R `ù\Çñ´òܳn‘ߟ}òIÎ-*:48±bÞªÁ]e+[¬¿…³¼@›E�Û[z†¡Þ‚6ã?úXÐÙ Í}œ�8s{ž*+ ä¾võ Ý*‡“àß `õôôÅ¸Ç bðŸÏ[äs“ãéØÉ»#اN¸2èÞ¿ÿ@Þ£##œ%w”g̬ŒGզ΢ãÑxÖ¨˜Œj‚b²Ú›­²w¾ž»ç= Z^ûÌ ²Ó#1£\{�µ1øbõ”tÕ‘±¢4;_ضò®cÖ:�žÇ¬‡•.€œnb…N¬­TuB ø,tü'HB˜Ð9¥mya7u?ðP€Ô¶[œÅé%"�ƒ Ï?8V¦dN�`¤ ±Î¹¡ÏßáKºéª¯Eå9S~Ç5§5˜@ÛUá8áLÛ®ËÊuå#«¨†7á9�¦¼WdU óðwÃýÈög.žWZ ð‚kŽ‘²¦ó(�—¸+ ·ÁìeÀr�4“'ü}Š í>Îlœ•wÌ0)Ú+OËÌM ]™*GÜcœ�ΠUN:�¥€K+ÌS¯T@ºR‡¾×mu­÷˜·Ÿ_'¨Ò�CôÝo?C`çZ‚žˆ@º‘—3P?&Å<;—óÌ€Óìu_ó}:~®§ç¡y†¢W€·¶`ãoUUˆ´¦K·¥¸ÕTÐ'Îà¹`�zÀ× 9¿DÀYež~÷µBæ >áMœ×Íû=7W§RçZå¡óìZym9OÖØ6…V­Øêlnu.í¨'À²œ¦i·¶Åß¶¡ñâÜŒ“ÈdòÝóçÒ[¯<›î¹çTÚ�îlyN,í i59Å9Þ×.¾Í9«€þðþ:]­t‡F&�“r*|šhñ7BåäJêëïçwZ\£#Â@×IdY%à(í•£RÀ'Ý{A3g¢¾r=åI¿KCi$µåÉX7ÀÛ.Ö"‹ó$ãq‹XWÛ¬X}àÿ®G$fÀ¯vih`[àùKd«oz_î$…*‘ß ~1CÀéCèFm;]àpÝs·�ñä~ÿkß];ôËÿý{¿›®¡+ÿîßûÕty^}ö;ð=φæ{¬Ük*ïTÁß�®‚‰÷!ë¾6tíZÌÙ÷EpÙP4 &=nÏÌÆeÈ�:Ìà€:× êÙYÎ…~ËKð•µU®'û€`ÃãnìH{í�©¡€vŠCBë»]xb ù«ëêM]èèye–q<ÿ­oƒ§ÑEpüÑO=ɺZY{ðz.ÖÁÊ��OÖM›QùˆäË2V’“¨I°h&Ó vĸ9{y< ²çØNݶõ¯½üU$ïDç´/ÉYSi“3g0=ÿÒÄ$6ø&ž€(ªL ’ÒÊK2RYcV7 R!×GÐó ôÎ:CxV«��IêÇrxE0I0r‰ðY' öXZVVÕqF­mCisZUÉB–2fʹ˵Uðr?W×ü´®Ü“|fvÌ42Ξ†® ¾N²„ày;‰VZ6b€›]š ;ÀÎ>Ú!ƒƒW„Õ˜%8pð®#Èõvš �áý ¼öâó$ßîçìúΘ¢Aom)é&ŽÙqÆêGA9[ÈšÌ#0Vˆ^ñ,ú¨Bbý ,”b¹�šXÈòd¶c5€®u¿ÕF±%´I�&£ø~Šv­Qæçà›]5&�©z¤ƒ<¢ž7@e÷ õ"FÁû^’lýÁ ZÖ¶ðËvþVó86+á êyþ*dŠgVtàÁªºtÑ^m¢»—ÚH™pQfm‹{íú`è²îÎ}ìI´¶mª$ñÊdÉiì>ºxðœ-ä²:õöõ=<A^–óƒ®îãŒÅ$—j:ãø¼�6œÖ®nÖ‚6ÚФ»o€„…þ ß'¨F}þÅ—ÒoýËB[ôH�� :›ÚH í¡�µþŸ�! VÙî•aÄ—ºÚ}}�$€÷æ'{;4_b½<ËU=5Càm›‹0Õ45Óú{„DíceË#AX²¸<‡YÐÛ9t*Å^²#Ò£OüRÚø/ x%MЖº}ã±cîÃKÌy—@Ø©»ïF†I`à†¾¾Â؆IÐNuÝ‚öÐ@}í¥N³ò³¥§+^s^ÚDði%Á@eê8ƒ}Ú÷ÊÿçÏ ýáÞµå‹Ñ±ÙÎç} iøú;vÏ_&¹ÍN¿ù?þóôØãOøoÒYêÔ½÷¥{îû{gé*ÕIEñƒÐw�u^ »}^>'@àQkr�A;ƒ4&±b&`wy<À:û²_&$a•@#;eÀ#Øwk¬UTåòym”yZûy�62ðíºÑã¾_!ô¬déáo^Úµ¥ ,x®ê믽–†Ñ úmTúðÃ!ú%ê\mö¨êÆÇøºâ]F®]]BŸ¢ª{÷Õ/0™©#h¹½ í±ÿ Öf€½ËMàŸqß IUµ¹¹)Àqüèlýµ!#ØŒ¼i%8âèãÈY_� [,›FüëµÝûÄ'ÓÓß|&öPuŸòî{¿ògšªšö‘Ôð*vEkºŸ=~àÀ]�—xï¿L¡E‚•¬¿‰�Û2 {tVµŸÝ§ Ð=ÀŸ=Jž\Af´‘ÜÇ|–zÅÎ6&ËììÐ1Š÷H—¨ztü\&,åÆ//š\æ½Ô­¿úOÿYzð¡�DP]�ª?ØCr«ß{)ýç?ùr$´˜X9rãZúµôO#Yt“¤1»Œhç;õ@ºI²TÖ š « fÄÑR¦ 2OƒÑËøÓS3t¡ûöÇÂüLNgÎ^ÀÞ/MwŸ:‰m¾/’ìŠcBzcs#¼^ÝJl¹<9v3ôVؼÌ]ÞPöM\›Kc7†Òßß½@‚Uw:ö/']|û­ÔÞÓ�:ûö;+O/}ëiäõï%ú<¤WÑùSØ®oŸ};äÜý@ŠI»Hä„wµ!ämåÝÀ�jPØ}ÐÄ¥Z Mðý~X™­Å®k X«NAlYg’5YÛõ5ªøÑmUØún[[t!¶íÛß�5ÄZù�kåßõIÄ”w�“Þ®¥›ÉðÚK(l"üèÓÐÔÓ�eqù…—ù›:U�õ~®l¯ –G÷ÓU ú´ó¨‚¸|#ß*—Úi•´—Ž`›:ÏG Gïf¶®û™Aòuº³]º:Ⱦk‹q[[sD¯0Ì‚“$€B7×ÑîULËc9êIØi¨# åÇê6G�Ý–*±�ÔE‘<À=õQ ”—"ãŽÅ¹8vùȽ²‰€°•ÚÒjÓEa±ö�-ˆÍƒÌó\1 ýNƒš¶¥6àn¢¯>1áóüªuo�ÜŸâ\h>_†¯¬°7qϰÐEˆ-g…Ë7â³DŠMS:êëø%-ä1ç¡í¯ 3‰W$sÀ?>K¹õÞ%e¿…?ç^‰Ï"ÿ5r¤ˆ³Òrck.l}~ÄÔ½âÈÌÜœkÉœXO“M®ÓîŸb¿ã1“#êØ÷.âßZ``÷ÀÃØr3»aò“²a'¡wÞ:Cdziº öÐ%¨½ê¸™“­;˜¸2 ùð çvMZ… c ¾QíÖkÊYër‚èÛ³Øëú)CÀV[×CRàVÖý.ì8—{;MÇç¶wIrÞ)$)c!-sŒÒnq3ëJ2.Á{mûÂBô%ë ®Q^×HÚµ³Þ˜ô•+×IX¾ŽÝ4 �6�Ï­ÔA·,“ WW6"x^PHð´³lbŽ{d¶VËÕÓÐÜ`¬ûYs“Gì”'Á‹—‚v…”mï:&ÛîwqL‹Ÿ AÑ~0èkñ†þ |Á=YþL¦ù�?ó\ƒÂú-üŽŽ‰¤`žáZëó¾>z6±°…àS–´£LF÷ñòu F{\|Þñ¢áØw óyõ›r �É+bY¼%[Käˆá).üvó&£{œCÇ¿8~é¢/ÖÖRÀÂXMª[]C†}/6Žv«|{Ï2�¡?Ïço㯷´4„Þ´8@ùá&$T,Æû|¯Ïqœê!ééÞ-ö¥ïë¸=VD¿Å#Ê|³óQ6Mè5xžé/öUäsÝ¢àç܃cfèL+Òµ…=&*“9dý— »ù+O�<òÈSàS ç š%lÐËjŽ ðƒƒ7hÙÙÉÆf›*Ú£ˆ˜µ6(u‹ó›56rú~hþy ü„Èñ­`¨@ªÓåÇè`²éd@† Vß»Ÿ¯ ´k,æ@·ÜT¢6ŽèÍÑ‘t•)J+rUhvzðó^tvt 3'-«ô-)Á™æ=ÎÉ/ÇÏÅÈÜÃ`5ˆj{J³9u l/¥cnu°F¶™Õ&Ìc,*³:žŒÌŒË _h�2�UƒÝ¶i� ¥ª�—¦fÎ }óuÎ4½™ÿä§£U³ €•ƒ¶ÞtiKÃ7DšbÜ:¾žï}=Îù ¡•�4�üRÀ[¯)ôÇ[o¼*�âvZkÙºŽLa�Kƒù¶æ¿ÁýM2Ðù=qòîôú+/SEˆÜÖÅ|¨Näg[6¶Êl› ¢Ä:íÂt0L7A6qYpP©ÔÄiÕY¸MP)œÖ^g¬ 0´† R `FfÄs^cÔÒѳE¿•O…8,‚‚¢fµZEl«¡9«,]3UÏH>Ð@KÓtðìx+²F¯‡ƒ`0ßÌÙ%‚[Êvt°2§¨0`‹{šLáš±ôá`ùì=@iêzÕÚºMG~´:*²‘qXuH*ý³·åú.ç€\“ßœ—À‡ß FáŒDÐ>ÒÅÕãKŸ·Š t� ¡H§jji÷‡³¤CUÆÙÃV{zOy2²„åmh.pb»\�i�fþVáó™sTW¬åœYûŒó2BþaµR 4êélM7FoÆ3m1­ãã…lÍRâš àÌô 4 `¸ʨ?ÏÌÌ�¥>˜î¹÷Þ ƒò–“ïø™{øÞ $6/1*Þ[ëÌ„ßIƒ=!@P' Œà/©p°Ë�¼¢Ãë4ªh× ŸyoðÎþíÃ)_[ìˆõ%Ã_Ô‡ª_øLN¬U|žSíç¬Î, °¥ƒï¹¯edÝ[õ¼Ã¹‚V÷›¢|¨KÆ•៥jº£û Õ¡Ó´îë€/éxøX蔊J€Æ� ›6ÑV‚ zé Ûš³†våEä=˜�/“!¤��ÎìgAõ•É5€yÒµžVˆK•¥i�§†ûàí¿Y{h Ž[‡wl'nÕ¥ëdu·•ÎÒ–ðÁ ~=moã”[ñßÎ0tò¥‰g׫ssU®¹€…÷ú‘²²òç~á3‘$�ew�ftc\<»XýÂ{¢ú„¹Ô€VU6¥—ß8�¶©{èáGÒ«ß}–¤™ÞÚ„9 mijå{×u—ª‹¨´‡ïM¸¨¦ý_t™CßöõöŸÞ¸Aÿdª¢º{is> Dq“©#q�ç$4Ôuvb°£È`CŒ€ƒIVw~šN&ea®Ks_¿%yð$UOT!¯!+ÒöÖåËT®¥âÊÚtsb4]¿p&ÝMûùÏ…ìXÕÔÕËÙéu3ò×™ÕÃÈŠú¹¨Ð¶èÈ ü¾K[´ë4ZÎk¼1µAOe5’VàÙ‘« Ö GâÆÏôlm«Ý/”uïc;GAÁØ£yÍ ¾^ø¸J°Å³Ï]ç=ª‹~]au$õ/€VÒk+dAK ËJ3õmu�ùª˜H%PƒþǦ°n‡�…œ·W]݈þEç´:6×®Çà|NÏdZƒùòyÇì{¾ÿROþWùîûßüßðsè1æöƒWNÏÉÃþ<…ý.à§ U¡Ûk2wîᥢð|Ÿ=zdžÄˆ¡ëWi÷Ëñ2­#Ð5ËìÏÖ¤†ž¾¾NÚíÃ}÷7ØZÇýº¸JAB“µµL¦sVÝLÖ3ˆmâÎøØ(º�=ž*å^‚À Ø\´ì L›Ðç³ô?¼L´ÂÒã¬ø6hä¼ Àdz¹v˜ �¨°ã�Ÿ5A »¶ÃÚq?H¿ö»tt_¶ÓŒû¨_Ú/õ$íDÒ1º‘�‡3øg+ÊJxG›Ïý(ªã`õœGkÈŸèühk޽QE²Pt�àýîƒîÉY°ƒd(dÜ@Bñ®•~ÈÀ¶U…ê»Ù”’¨¢^2@»%syÃäí¢ÉÙµ´ÿ~*ÍŽÄ:?íeë©§~�d´GãìgçèÙ»ê�aq~¾gš5¾IÇ¡êÞþHúŠÄAžçw»5³W�3³¿ÙÅÀd7kè®29±Ì™KÌ� Ûtö©zÆN1ìDáÛvTR/8km×=Öߤ4yÈ*´¦ö®ÔÙ{ˆµ£K:Ð6ôü¥/rlÀAЀ»´²¡kÂð ‚³G©ÞKÏüÕ_F°ùà¡Céþûà9Ùý´ÓdT÷i¤ÎPníÔá>/ö ªÂ ,»ùYþ˜¶áGõ¬‘ù™[Ø $£t-¯l$p€­åú†8b“r_REBîx˵¹Ö¨üÜ/~!ŽHS�{=@ôî{ï;fÞvz�'õ©r«g†soRW™ÔI¢ð;ÛPðã.�$õ£vYÀðŒÙ฾Â-$ú „qØ[ïtB"YÁ@ª¶Ú6äH)3°gÀÀ=KY1�çeÐÚ½´ùÔßy2ìtíÙß")® ß öÌÔ’úúö¤¯ü`B`øÜS}kÇ;=óWßLËs£<çH¶¯£/ $Ç™´tl¬ÄÖÅžåøƒ�ü]Ú«'ä½Ú�1æ;ëmv¥�­ìi%¬ ²„ݹF‚K–àLf�õoe,VcÚaÂäMƒ»Ú¤ÿýFzâçž :û “ILú…ê/„ÝòGðØwXgxo—½È q!ã3ÉPyGÌyŒÜeðpŸ`ûò!M¤«�LB°šT)?Bç�e*w³ SØÞºËqñݤÕ&ôàc¦�¦ý«ß׿Ÿ¨}éëO-ýÛóoÒ1“Âì¶ÒÔÔ@Ëýƒì—e$ \ 9W_>~É(#é{ßýü_@Ym½=‚{ð V2sA!rUô-T7 ¿¯~œò}ùêÕôêË/¤»ðw9Bâ )­MaT¡GLæ¸9>G¡x�« FZ^ÆyËï¼ñºƒJvöè&ìÕýè©öŽ®HT¾ëž{Ó’ë¬b?N‚wÛÇ™‘`ÑÀž£/dp?v«Áx�1%É‹94Ññg¤¡ûÃ.Ïeuð_ðqüè:p™¥S©û#IêUÈH rVJûp‡–hQ؃:º˜à­X˜˜#�{Önîr�MžkaÔOîìé‹sÒ[Y/÷ ×¾e_7ï)KÏ¿…-IÂãª&aÇJ~“±<ÚÆ.&£ÉEïçò¹¹«ÙsËå1÷Çe„Õ¬ËüiâQk¼ŒÜºŸ]ÐOõ ¶˜ÇÃG±å²Ç¦èãÏÓÉÈc_ X™hê^f"@$mÁë[Ø—v¦±ãÐÁÞöT_ÃQ8øæ¶íŒÖÄyØ&!làߨ½dy((Ô�d%� ìQ­Š¾S~ƒßyݽ@^g*ñPÞëÎ/‡—D·|YeD�É7’®ìˆ‡‡$ÚÊ|ÑC�®Šñד´âºyTJèþÐq¾‡=Ïñ¨aÐ$Ñ;ou°zaûP›ÓŸý¼Xƒ-¸ tÆÑ<Ï}—H_¶nè~�òÐám±˜8­¯n—$yÁýFfšš¢cÝòLx)gO_ »@§0WæÄmèLB�ýë:ì°—øÙ^|ô&ö`“ó¯‘=F%{{ØSt鑿ƒ$ ÝF‡¶’<ÛöÒÖÙƒ�%Aî&|Rû™,NÞw?ï¡‹ öHGÇ„0Niê¾»gâ=û²¼]TDbvÞæ^%�K¤&ó¢›=º ó<ƼMrQðgÿ[‡cï,« à ­LØ•†ŽÍîV|"ή.'©ÃäùÁýÑ®z+$�Ý&™x’ĵ!pꛃãqe%$ cê ù¤‰áqþ6Ék ’˜L£<`_ ×*äf*óÅ`”“²Ôõmè÷ÓY;'@OýXmE1¶eŽ›‘§Ô%2’ï:€ò7Ó[Äü›û³¼e⡾¦�ß|¾‰1&Còð�|Ž hÚ,[b¬ã2ê|½¿:^ß[ŸÜû)—ê*ƒÛÑU…ŸMæpÿ÷¸?dÁŠûƒx <_[S‘Šñ«:8®Ä×õ—•¥(ðaïóYÚAâ7Ò…q¿lo“ÇJèx(_ØIÌ¢� æäú©£Ý÷ ¢û>Þº'·6Ax_~1)D»ò †®_ ÙÕ.ƒ1ùtþÊS O�<òÈSà' €›4pÃÀMMÀqdlŒ³æêSÙÍž¨�333Æ¢�¶WþÊSào…]^ëï÷Ò`–wuV4²4ƒ�ùÛ�Ÿý¬…æ³?û^¿ëDè¼l�­éÙfa"QK[a„ò~H[?kð)˸çùÜOÅëÊåKqϵŠÐ`B%÷9~éÀxéüyÜÂ[¯½DÖ|+€èª!®â€Ÿ ³‹vœ~Þ*�ñ›#é>#øUW¥çΜŽ6c7p°Ì|^|öÞ Ë8Ìåiðêå ë"¹gÜùyƒí��lc;C8=}}€“]áxX}¢í¼ Ò 2Ù–ÕêôÈà…ζÅöè£Ç�ñ̲¨VéîíãïV=/øb`ÜçÞ çP°Ñ`£¶t.ǑߴÒ)Ь’@'^ÃB…£m»FÓ‚IM+:¸謭ŸmR‹ Èž¼“‹L’/ä%Ûq»®ê7ƒÃoÕ¬ ‹Ñ`@0k�ûXí~›³¢7ˆqMÂ1²�ê+/Vë„•ò7Gg0TYg2s Ì�'øð†÷ è' gRR‰ZŠÓHy@*ëmpÚñ fèðè(••níð< w’­ƒ ¶¾ÊœÇ’Èx¦: ˆáý I*�Vk«ž'@£¬ˆÖ™òw�3« \7ç)xh7å[[Oå2ŽŸíðØùX é�Ìó4é®#Ÿ�¯Ðˆg7p~¬àc5½k1Í, –”ã°Váz„€4€ ^Ø�¿u‘‹VYïfôÀm*Ì•QÛ¹Ud¨ž] Ja�uç_hµ<}3½{îlúÈ£�z5¥'Ÿúl:vìU…ÑŽ Ù©çü]ù·0AàÄÊáQŸŽœLO<ÈÙκs>'À¨•¤M�Í|Ž*M¾öut¦fæ-ÐØ_ØÞpâg 2ÎjÎÕ®Ÿ§e¯ÁÖM_Xž.ô¬”•ƒšÊÊ�#�gäÄ`úì"Î4I/ 8á:É&„ˆT¢ x§S~' �Clp^9 ^e­MÑq.b~ˆC<Ïêsu�`ETïðæ½ƒº.FÄbûTž©üä²ôÑ#Ç@48áÚ ÒzU³võT÷- mKøL= …åUiŠŠJ[¯ò^Ÿç8C—ø3ôr ¬´¬ƒàªQ¹g ¼^CRJ…A(*?¬¦_ƒN,‚)Í­êœì¼íUö™Mö>“wöà©êê v?³²MÀÔ.-«€õÊ€gÙW�_¹ÁÒ�ƒTb£o­µ=)H…ìOÅÈ•Á»˜xd„Á�#Í'Sowg¥Ê¬þ0õŒ5âýÒÁ±ä0•PñarG¯ ÚzÔˆm« [SKS€öeÐâ‰Ï}!*lÝW®¼÷°U4?´,•–†7Ô d1?£‡ \¹ŸZ¸o˜ `R–etw@‹ÑÝTÀ+ÛÞ¤œ{^¥*¯¶©]°~&‰ °€n�Z˜T· §m-^N�n¹ß@_`Žê‚+væè;p ‚ìL3{B0C^ $ > Úç®<ñ õÍßäû4òÙ¹=+g/ð´�?“+ �ÈÛòñûü‘S§ÒÜͱ6›¸63…~†OÔÛÎÓØ3CƒÈ?I´Ö¬E—]8óFêĶPW¨[å+ë”=u§‰‚î£ñÚDíâ^á8¬¸s ” ÷d© hl@i…ç;uo$êlB_+ËH¤Ë΄¦·�¾{�àœ¼f5®‰pêy«†ÖLðÕþ¼ô8í,V£¹/d4yb ÜqäÖ"÷ýÇ­KÐÝ#z-p¸… ï,o‘0ÐõñQ`ì„ÂùT�}æ8¦ �ô„mïêŠ ˆkeŶ+J m´$…8Ò¤ž}ÚãV6D¬upï÷XSN½­]Ðß*"ª�°=܇v‘3«†ƒÑ‘T:^ÁÇJZÌ{/eÑkll,ö@ÁâÐÉÚLð‡ 7û:;ß{MÙÏ&´WÕ'?óÉO IOãÐØs•‘-ÆnBŒ­©kà$ ŒÅsÉ­>³zÑà¡’lâWgW'v+ÝTìžÂœÊÊkÐpþw.©€b,úŸ’Ôíî�X_¡· Z©g\7�ˆÑn4ÁBššP!Xë19/œKgßy+�ÝœH¿øK_Hÿó¿øíÔM«À1;UÌÓ–¿9ðbì•cƒCéþ“3[ žóœT÷ÂJÖ Ó7Ηà& bá*kî&&š #°l`DÚD•&zÆ}É$3ç(­äíW_x3Ux{è2çcå¬ :Ïd¹Žî£ŽÓ¹û»~�²ª4ÑÄÂáC©–®"[¼& ”»x��:IÛ‚À¸sDf±Ãûº;ð#êB¾–jؾV>5ˆzÖ€W¯—Fb¦sËtš] ä Ì£ðkî:|$xLZy©�]ŽÃ¹gÉÇ�´èÎxL^u�›Ç,¬¬� C�<’3áéh›Oð ¢3ƒ_|G¦ æEð~ˆ–ÒØ2Ú‘ße{‘ãõãÙÞ˜óŸLTÖ²K *¥îØÝØ|^µ]·ÕèÊ…~�Ó÷Þó¶rð¡‡Óúwÿš½�`{NT0£«ôE”½¨Þf½<ÿ\»ecM?Ç:ÇOP‘»„o¤ns/õæ§ø'ž!Ðr� rxy¾v.Ç`¯z½¯¯=·í…m�š²÷âO±GÓ{Ó3£=·Û@Íû�Õ\ŽjX\(�¤ IšI”4,ZÒó^÷�£‰d (Oî*ü,ßÄÅwu˜>Ò£�ý XZIf´ªf/š�¥sëçñ;Vzv÷;DLÀãÅš[Hè€ÅÔ ÿ…o³Ûÿ¨ß{iœÿõ%ŠI®P¦LÖ¾t^îkYœk¡ ðö°;ø~çêJ“2«Í}‰}Šgonà ‚y¸'ÌÍaËÀïþçú8‡( @N”?ÏíJÈ�ûœ].´“l¿6WËï«° Ϫoí$`aJ9�ëZöéí±bÒÍd÷ö�a|EϽß»€$q×ù’ÇÅÜc¯V®xn1zD»Ø„ 騮TwˆM8g×-ÙÄÖ²âõªIÒ å)�§À� €ÊM!Ï_y ä)ðÃ) Ñ©Q¦7Gäô;§S@âMZÏ?ÖY5Küú•Ù4=9A 7v?—¿òøiS@¾ѰˆÕ˜ÿ WŽw5P8ÃÄX{ßü†ãÿWq<^V%é„jàEE8ŽŒYéq^:«:‚¸Ê\öLÏ^¦‚ZÀBçH`Yy´Uû÷_É:Ü]]i�³Šg©âjà|c[¤ú~«;tj}þÌÔ$†qaTKØïî¹/ä�ÝÝ‹çi¹Hë;€ÇlTB/Î ¤‚ kt`çêå ,ïë`œ) ]‹óÐ&©V÷9gO¿´­Þ,<›Î /A>«Ù· ÌH·UXÚ�ošJ8+‚uˆ^|öÛé•çžØ¿/@ξóL:ýúë©gàŸ]!¸K0m+W¬€åÞ:¡:‚:*V},ؘ°Âb�à²à‹×-B³¶Qdrï…cCû<�+@ÃÄÙZ:°Qá_ŽSo𕆶\4(c«¿âÊæ@u¿@@À4k`2Á]ý‘I¼Íú<-æoëð¨NS • W/ž'Xy$íkiNÓ;“Œ=ËþÝ%�œµ)+ŠÆ‚åÁ/ Á6³:e>ƒX,À‰áH¤[´ÕÕA_!;z`–!Рƒ ”ŽYdï³xf�7X4/ˆŠsl½,sP ·ŽgmÐÝ g%*=Øw�l)‰¯mìz 0b±ÂfD+¼ð”mx�s&§í¥‡GGqôk ßŠçë€�_ {V~*r>�·nl›µæòÌÅ@� (×çÏc�r«WÊ| ¸  Oß"»ž1õíGÌ1Ü–·.\·;¹3g³ÚM M¹•wÔ ê�KÁh/[ÇWò÷JøhPw–³Àª¡«N´à¾ ŸŽe5ÏßÄÉrÖiµ=tò œã°èßÜXàyð½ȾLU‰þ¢AñE@#ÏxeÐT°óLîï}*Œk<Ó{`¦¾µ1Í-mf <"èÖLµra�­ì;*ÐaÐÉ *y×du�`œò¢œ(/:“‚ð0pè²9:)ª—pníh`åé=÷Ü <®ûá£GÓ»GO¦ó¯<Çù¹aTEx–¬a@Ëêg«Utb‘=Ã>ø`ìµí¦@Û€CE¬mϳݬ»Ðt #²á–Öp°£’˜e¶c¦·M6Üc¤<:.Q�¹Ê¹sÕCžazïý÷§�>ú1x5Ô‡êZ×: ¾dë ýÿ¨¿l ke‡AD+e'±ƒ &yÕT�4ÀâYYmð_y¬Ä^ZSIr™|(°þëÿø7Ò3_ûÚ‚SY‰lñ‰˜�2)ƒK rè/ªà¡Z}…· ZȈÃîïî"@^m+óJI¶Böêhµ¿ùð)ûŸü«Û$#°'š�#h!/À¸X`»úhËÏû+©¸Ù†6Ìî‡Ö5Í­ÁÓ°]*ãˆ�-ÞÛû¡“ùÝÐÐNó3L´a�2‰L¾ À†Öðu€­;[€‰ÌÉj´R*Ðúw©ž³Jeƒv‹%TrP¥n‚Ko¼’>õK¿’:;; Þ,�È1HâJÓ‡7“r9W�~èêíšgGÂVŽËK™w�ÜGäIiãå/\4øæ™ñ(·àï>O›Ã€‘û’{·v”Ôq½º+=Âq_¿÷ÿ=Ïw΀åŒÍÏŒ°ÉÞŒÍ4—Jk‘º”,/Û IðYðÒdC’5�-+£´]£…1“°M·6‡÷TVÛ LMŽcM“EGã¬P­jûö¿ú˯ñ:IȨ|>A°\"èºvåjÈmúÚWÿ,ÝÿЇ9’ãW"Q@¾4HhÀ$£|Fž¶Ë‚!TqF0÷´½·n$S²×`Ë/Ê‚•·&³ ¯,rþàîc&v¡Ð ììÙeØ.þÍýRÚÇaÕÒW¹õÒ2)JšÆ>ÁØ\όػY;((¢Vý+Ú}&Ç qÌFV…™×` ’…Œ»÷+§--�±ÛÙ¬î³ �s�o¯ k$Ë@Ǩ°DÇ™$)ÿ`ËÈ‚üŸÁÎSÓSÁ7Vˆ›à*í¤‰_™¼»‡1îákòœ÷d}Èœ|]ÛWoÕjYu{ÐÌ Ì6re‚S!2lÒ!Cç³Ø²<¯«k_ÜíŠÑD%¡ö­m©]ígFv±2j—%ízí;çå¥m$�cP‘ó„ø›c÷+^çÿ,¯ì±† 9{�¿G />A2ý”/A{÷&yØÈ…òë¹ç{#ç`‚Š.p“à|�…>Ý€œWŒ ÿÀnKŒ_¹¶ã•—‰ªê|Çâ—‰¹~×&uÏýú_|-ýŸÿû¿�÷ž8q,º™ìa@T›Í%£…ž7ùËà˜wVøUÉþW ºgzŒ�4� DÐþd-¶±SLz2RG hyx-|¦(*UãÆëQV¸/,‘üÂ<ôÇñNÚKK|Vâ˜$ÿX¹[ÓÛ—N=øp$‚Ê7vɵÒwŒ0ù�X;)ÒÜ*{Ç”ñ‡] 2=7?EP?`q1(¶†í\Äû °K!zèé7>:Áþ´…�‰- ¬U¡§–©¬·#T ¯ik¸° Ä3µZöu¦¹™™tc}ÃQ/a0þ2ÿ(ÇV¥ËS¹Dú‰±‘°ŸœÃ•KBVZ ®›è¥}á¾h°Î/ù1îÅóõŸ‚ñÊ�ù'ÉÇ&b×t[_Ïlù7øÚá“Ä]ev~28èeÂÕ û”ëo�knn5’œ¸ãPŽÜ{Õ_&#Ì“8¡RKPÓýoúí¢3ÔØÉVROS\ˆ t´Hç¾~N�®îSHaéòÂ|õû|M‰÷Ài&ž¤‡ëY'Ææ°ù΂ò¬Œ�]?ï³F»i/u€6Y¦W•o�ÁŽÅÿ�g/ßï­Ô[&LñŸ¯,dÁm}2½üM½ïgö8ã[Zålé§üÚ¹!äÖ=L¿‡9´Ë„É¡ÐÕžís£SÏ‘¦ú�bKø÷K+tiá}3”Ù?YÛ®<&4ïÑñ g I &ö‹#ÍÍL…§ÎÖ/·â\,A^ ¼ù/Foh�.à‹Í�£Ë…¿ã± ÊžÇ ÎÍL’üÂq(üþüs/§óg/²oìK}}ì?úé$“çþí¾�‡ÂdIäÒ!ìøËD|Ïç^§{ˆG <¯ç¸õ®öæ&ø…•áóó èªÈ‘)ƒá³3·IÖg,s|ͦ }–×<.o“jñ6t´dN&£L�ߘÀZÀïnHÝÕ=Ag¥É2ïqŒV™ϰ1Tx ùÇ>››ŸŠcLZ›3 ËâyC›Î¹ì؉ ?Ž=Ä£-¼—xвx…�by =¢¯"mÕ‡Ê|$üÂÒÚ ~Æ× \ëk·kƒÄ¾!÷ñ¿k¤ŒË÷vÝ�„ü"ŸÃŸF‹)üÐÞñ>Mò\“`ìÎ¥ ™,ááñ?Òz³ÄP8û8ïq-Mh×·ÃÒ´ËÆöÍ�ÀyÄŽ`Çø›|€4poÖнÀ„Ʀ?&?i‹ë÷»·jûi×inÁGwØ�µ/µ�V±�LbÑfR›Y!ïjøpÚzJN[ÞIUnLΕÖqT »F¾g ;ØÐëÈ—r+ݼ¿v ˆÏdøš‹ n ïl�ç˜d˜Y¼9å)�§À_§€Â”¿òÈSàGS ç8i0˜YjÕX í»&h³5C»œ#'ïÆˆMg9 { € f7þœaÿ£ïžÿKž³�_5彨nÒQÂ�ñ5 Ï÷{åî¡‘¦™(Oÿ¤—ÀU�l<:B:>'÷¥‘©A®Ãä<ï´Ž @�àrœ.èJÏÏüõ‹{ñbU5íÝ.«dã\QŒG�Ä2òGÅ 4k¼÷и¥¡5€ �ƒ&²ÄuD~3Ÿ@IDATv Ú†ð,•è·ç'S5çž«¸‡ƒí9A:IfÇ °´�éov¯AÁ ð·ß|�öYCѪU ÜL|Ï—t»�çîi&8cuÎĹ¥cá[ErchˆñÛ†r9ø^%@`…N@u1´/¡ª­™ªëè²ÄÙ�ÒDÀO§Ü®fÛWâðêhËgVSËC>ÖÊËjÎÿ5è» ]ë�/�d´ž‰Ç�‚G øíò³4 ™ÌâxÜ€»™£¼íAÁTAìÍ'­<sU¦#1ÆSŸêÈ«s @Ø1§‡¿Ÿ&®ƒ|ªŽô3vŒ¨…�¬Þ8|ìXA*àû€VA°:Al3žeÀ•.nÔÓÛ�LH§h7::t=lvqðMª¤q_¨dük$l"O¢ËÊëÑ»8>c”ÊÖ½8K¶‘jÔ:‚T—¼úâË´ÿìLýïì¢úª»?€à™[ã´R¤ù[Ù¾ �cbËr€Nu¬[%ú}�$o|ús7*ˆ‡©ôr]ëhÕiE¹íBuÄgJÑ[åì…‹´Ž¤ŠÌ*csŒìF´ €5>|�`üAh ˆ`ìÚ›èÕ¬—ç´ 4nò!iè9¢Ê½�ô2@>Û9@fåK�à,FÏ®nëé‹6àS£²ºK^<Ý�§6Y;Ûúg•*„b¼ò̃Î&Y…ur´ê'ÚµòyƒW3CìFSrÛ¼+=ÚÙÞo²‰@©-Ÿ´-\1åp‡J´Ã²Tt>ú È@˜‘ëiÐÑýÛ½Ìß À¹fWVIbðC Èyÿ¤—tõ>w¼Üs �°Ä³‡6’üŸ³C”eõ£zïü¹3©f÷·"æ³³lëÚÙPOOO Ë„ÊLñÿ±÷ž1ºžg~ß=½÷ÞËé�çV‰MT/[,ï"Nœ›q ’OA�‚äC¾%A$ì8‰h•µ¼ÖÚZ5R"Å"REŠä©sÚôÞ{/ùý®çŒ–’¸kÒXÀX`rÎ̼ó¾Ïs—ë¾Úÿ*¥T?Q·1`Ãg >ë¼ €œqø,3 ®óþòRP¡Ë= 2ðüO�¢nd@¼FþÐÚÖÁþ/§}t€Bx à¹Og ÂìïçsTaÝÜ#y»A‰êKî‰Næe>«d‘æM̦—®|Þá:¸§‡¼Àõrò}ÿîÏëŠ}ã½¼ßÌR[šdú# 0À‡·é=q&î756Y•{¬C%YžtH/Ò€€¯ÎÇdÒ.Y·0t†­ÀGä�Ò0ä2IÇû0Ya+€8fŽ ®6ª÷•›…žÐ‘–ä'Á^˜˜éD”&Ô{ì%Y€ìjoH�Yöâ¿O�ÛÅè©íºÈkNæÑòÒ‹éÛú­È½rå²ÅZr69[Ò•nï#ßWבïì¯!cxE¸ôÇ/¾àÊÞ“ðvÏÑú»À™6¹%­W �2ãÜsÓÂqÏ”QÊ3uwƒÞÆ'ÆáçV‡À¡­.IÉÓ­JbÕy©Á�[Ëðjæc°›ü~úC:BoÒ ófîò=u¿œt6&Ïû½ægé?{»/Z7¨cd--h(óŠahpù36UµT†ð¸—™Ì‚� pN7®½ÏØ›¯Ú»¨€^è­%:ù%•,ÀÕµ7K¾¬¾&xQÌ•íêˆÜ8Öœø|öšçÈ˹»^«Ø*ƒýÁÇhå Þ ªVqfå#îŸt Íäwÿîw3Ø<Çž«cäÃý¼ò#b±ü» º¿K¿ ˜ü�¬Âc ~TF—YIF§´à: ÌJk¶n’Z1ÀªKüùÁó­1Ì~ÏźK›öÖ¶\ûÿýýOé©gŸ Ý@Ü35=5žîܼÎâlRùë -±^å³èÈ]éí·~J@Ìgƒî\ûrÀðò ù•=»€�•¦ÌêÍV@›§þÓ�å¤aÀ¹räm# róÍ‚YäF”Î…––±QŠ+ËÒÃW¦zTè~ò²qÛðŒÃìæ x{ß½~@¼Vè€þÅ€^UyÕì[ÆkB ][>�z0¹´�²½ñŒ²A×êä¬)ïQF¸uî�üÙµ2³Y:Úæ…=ÀeâîATpî£k ¾ –®¼ì¼&&f°}hÕÐHµd£|ÚŠò[…˜¯î/ÝK#êÃÙ3•ÿYëϱúCGW/Õ§cÌ]½'Ð{hO� dJ�ÞSùj€ƒpãò†Nè_zI4Þ„\1€‚hŒT„ìT~XÂÛà’2À3u�bPJ°½ Ñ¥·òµí›Ùµ¡‚g33óiŠÀüXoÆaU3å§òó3æÞÒ\­o §Øl•Š hˆ qY§¶ªÕéy­vßêH|0Ÿç›9ë‘eîGÞ»w®›´(m:Fù’ïS§“ø‘½„cÀ[¥K³T§�Í^Ý„O¸n|y&×Ù�¾Jæê=3žd0˜²ùË=¼Ô?•9¥´ùz‹@|÷FºRΩ0no­Åç¾Ú_\=‚ `Иm2”ÛÚ|%œ}5!Cã³Ú&ò7åwyjDgÒÿ°É9Q§³Ò�´dEׯ¶fÒž 2xõvKc+ß—ák«÷›…;OUù�Ñ ñ«Àëå= úƒ#æ|ª[0ÆyøÁ,%ªH‚hmÃo¿¶%‰ƱIçf$L7¯ãB·²šÀ{lUšsϧ^‚cLj°j�ךeºõ ©°Žp`”j³ð®ZZ~œb>ØÇœ-u…ñÑÑ´Œ­Ñ@‰Õ¬ ¦\[XXaYol"i¦® žÀ| \\D¯T9ç}³Â N0Hù8‰,TöɧµOËð¹ˆí˜¤­�ÁÑÐ)+±�d%ÊÖMäÖŸ3Ù̳”³Ž?/�ýgÚjSÈk”ý)êÇ‘ŸH“ÚTÒ‡/  >D‰4©¬ô×× /+ªÓp~på…oÃ{úeàšŸ ½Ú5ÈÄ÷sã8ûò2å“4,r/­dàg ÂÊ/ƒ¦¡X7\¾%ïT×÷ý™®ÇÞËW¹ŸÕxô ©ç�Ñ¢®¸p™ypf0?ú¿Á5¬�ûd°£ú‹óÓŸ˜‡�h€£s³Å–}˵HèBÛðÊ(†o;6+Üz` ™Kð­Î›ùB™-÷P_dð>çÏKq.´CÔé úή¬Ã&z‘çQÚ²ý“d-¯`ѡ彼ðRדqg•#ð¡@ˆ�#ýÁj};Z�£8Z�£ø„+Ѭ…ª ™J3-7×W�æ)W[€ù½[·Òݾë¡(:ä?ᣎÞ~´­+p¨lª¼©�jp桇¶÷1žtøy•-ï‘)ºÐâǸÇo¾}/uªÜÞß×¼ïásü®B«¡ á¥¢?�qªS×ìÇpøðž_~FC˲…í]ÇRzõ•ôÆO^LéıÖ¥³sòÓ(ÄôfÄPnni0LǵŽgË�Ynõ…ÙþjÞÏÌKŽš�®Á¨#ÔÀÑK åT¤ë¥#IãDÃaIÀ�Ï @šõ«ñi)i ÆeœÚ¾?œL(êÎÏ¿ßÅáv‡l=¥þ,³õÔg>ϳ„‹÷kÈH¯L.=B¾“8DßGùÝÃ`#£ªïÆõ(™köÀ÷GõdÜÃÀ7˰’ñÏLÓó˜ï–eW©ÖHÍ×YÔh¶¯F‚%çâù8v?ÐøQö‹…FÂ(Í�ŽÌÆ 0�µˆ2±8ÊÈ«ª(ÄêÂ4ÑÐߎ ƒy20¬0ŒÃ° #­ù±Ç#³ìĩӑ±®ÃWcÎr¢fÍéì_#»«±½�}¨�µµßì2_ƒwï¥'?ý)>_KÉ1KøYŒ2‹8(¤‡üBùÚÌÑZÈm²N'˫߿›Êq:Nܺ{iÛÝ j«ì`I/�ÚÜC  ƒq«ˆ­Xr¡‹1d6D �“88u–aŒ œç?0ܰIè#VË|0bX³}54kš:¡²¬WÉ2Æð©¤ÿÜŽ(Ïh1Æ•å÷×1úttT�ÍßÜÒ’&Ø‹Mœ){;6n8tlX »§‹Qã Ç:ßaî››ËQj\Ǿ‹8äÿ䛜.\x#¼1ݸ~]û+@{…^{ï=2^ÛØ²×¯Fµ�@Œ �rͶ~/ä ‡ ÷Õ�[HŠ{.ýh<:(�Ìþ§álĵ×Fo—a,®ã4Ô£¤£¤”Ò#8špøæ@çk¢QR‘=0Óª�>’FU—Ž`\{uþFÆ€Rϱ©³§7]ç-=E»�M^mP¢¶¤‡ÎÎRú%jœ ë œÃ©à95˜Eºñú0ßñw�j3ò]]c¬�4ñÐÃ�söÍ´ðü`x2gA­.§É;¿€&Ñx�‚ ì/{N©À2œ®FŒoýo mó�^ô\Ø”4‹Âà³ñ gÈà^â¿Ý®B'%¬ß.÷Ôé´ÌYß +A:��îm“íÏÔYU‚Álm<ÉìÅB²¸ (pœGA_×Ò/¯X£¾›7Òc�?‰¬Ðq&…dW¬ï °Îg£I ¦B³gÎ�OÏ?ÿ¹4öÖ?O§˜A»ºn¾Ï5ð''Õ�8޾ïæ>E ôÀ·aà|*(Rg¢ŽlìA s?È¥jÎ*÷k…sº�¸­êì™%‹³­«;MÏ.áØ„îq¬ÁÚpn"šq*ÕÆ¹÷:�J�Ÿ >& tô˜¥H/c�®{-?æeaœ=éfÅlSx¨` Îäeô8É\3�:i ×cz÷õWR-ýõ>ÔÔQž},óátÁgöÃ>™�ò^KOJg:¿le`�Oiá^ê½x.�ö‡œp –-®§,xU½ÑÙËUœy:9ÿhl¬­Ä™6{«ºžÊÌ£�gÚóܽõ™ö7gÁ(áKhdŒÏ�– ÂqmÖÒw8ûòÕ ø»g@0Þ ó蛼·‘÷™Ñ_�~"x`à›÷Ó)èÚª¯¸)›œCЯ‡“ºš^Ð|Vçµ` rÌòÞk¹V®ùáy?\ÿöËþ‘/E�ñ¼©+éÈ ¹Ê|tÎ×7µÁÿWRK‡kcÖŽgz‹šA^Ç™éêî @"Œu4³¿Œ:ç–ߦ¬ª™_‘y ½ þUæl3Ø ³ÂÑ«¼ƒ?©³)‡Ô)‘¤SUª Þ­ÄÒYkÀ¦Ù{ž«ˆ€7¿ùÒ é…¾�Î�=�®Pi"£G3 öM?øÞ÷bî?{ã�ôÇÿï?ŽŸÏÂÿÎ�¿@äiÀΫ©©ð„¿ _&ø\é®…½ÉÑá¹OoàÙ¹45OIçå5èy WCu k"û; ùR½„ùìð&u‰|€ð(½ ±Äõ溴�£8·�Ö!ÓìíXjë%`9ÿAï½ýó456Æß)é Ôùk?ÔG$@¥õÌ—_x%½úÊ+1Ÿ¯}íw‚÷à±»èrCý÷SßÝþø['÷U'´ˆgK@E_À»BÀ–©—ÖÔ›ÕM¬Þ ¿b›‚fÙÛÊr³¿ÒaM›|r‹3¡~ÚÒÞœþ·ÿõNÉ/®ÿïÿü] n"ä‡g÷ŸûÛñ·Ãz¢:vê,óY‹²â‹ð¡×~üãXE3Ê»t:×) Ïa@Ž]Ç7L07O)Ü5t6H�×3ùîûÔÁ-aíW”?…¾óóÐÉÔ}/·p¿uF·4Õ§ïüÙŸ¦?çËÖ —¾2ÝùÕÀËÕ™_úы黺íÈʶÎNôÚgÒ±cDZA$äÌÊGîÝ£z ×��Nu2^†<”åpb†µ™ÐÓù<Ûª(ê]Ê ù‰Á¹|"ªŸ"‡ã09õÞþàwè”_\Ï&ÀOƒC¾ÿÝïDe‹gžûLðißuB. pž”éìQk[T]°Â’;x‰ºã›oü4øùý{wÐÍücŒü·¯ÌCÞä°ŽE€[¢l±K ãÂbô "m{°¾ˆ­‚ü…7ÌåÃ9§iºþj¼–©VÛ‚V<mŒý»ÿâÛȰátå‘ÇÓIlŒÌN)ØœJÿäO¾‘¾ü; íy5@Ë3åí¬RÆ· ]éYZÁß²E�u´Í HÅ8¿´ ”ÛÕðÊr@\Ì 4¹DP Á‰U5 Ø7µÐé"ã#Ì•uåÆêZÊ8u€Ú:Ào|Òë,gaý#€cæ íYU)ìMé‹ëlÅ3ÁVƒµnÝø%Ï/Ck�jrím�©›€éWߋտñ MÐ+¼ny–jˆ· |éŒ~éuõV´} ?÷S¶NMa•q¦÷¹ Ö%8Ü~ë¬ÏÈè8O'û™ ˆsÈéuØF÷±^ø¤ "´5ò3º‘`,¶À2þ–eΠ6‹eëµ­ 0 ÚóÆ„�nU)ÛÝXUOšÜÕ.0ÐŒpyÔkn°—�úÀ­Z#mYåGù´Pƒ½MÅ)ÎŽú‡ 1…΂&äòIƒüBÖò`´%”5°+¨Î y�û­Å÷J«%œ+Û˜Õ®ŽáÅr@+ð,é’÷ɳòqØø“ùðAÐoä=Â< �&Ï.ø~È}¥�k T4@Æq--kï`ÇÄRHU9ƒöô;™^SÛ­ßÄø4ýç—cò3¤@ZgOŠJø‰³²� ÛRði¬ºU÷±�Øú/2—OÌ£ “Ôs‘ &©fm@1¼ž«­[ ˆïyT§ò¬FP"¿|ë|ôkJ#ÊªÍ e¶0ñLzø±'¸™¦äØÕñ1@ŠÊpÈK+s*#8©‡Ä† ÁúwBŒàêÚv:ÕÔ¸Q’*jëÓQáÓôí�al–j·µ†¹™:ˆòðJÜ¿uàm“ý§—-†tó,Âe@Ô¥GÅ�ÕÑE ÄÜtš%à¡:kíèÅéCÔ.t¨3¯7²àë{ã§,]»z�èä݈_¤'Ö}ì¶Ö–а/®Æ)ndÆk$ ¸ ÀÑCðƒÙ<@@}KSd­®¬Œp¦pÜ@hÊ�BŽÆÆÑŒ‘Ð:ôM%ÛŽê¸ù–Ô`ĘÓ×Ñ%ïp4­álìì&h¡:ú'ô÷§wÞ{'ÿyö‰Ì' _³Ú ò .À!°T¥cÃØ>ç¸ñ>ö£÷¬š%i•…�}Œn·}ÊþÌG°ü£¯EÔ9cBT²vŒ‘¹Ä C\/Àù›ÿ0€Å^çTøƒþ¡uÖ,œ*ü%é=œñ"î±J_LAz ç|Æaf3ðµö-å#qTp6 °0Øü‹”¹ r  c—gÉSünf’N2ä”퇬ìÃü(x'kŸå}žcÁPy’WÉîW€qZM•צ�ùY@œI.{*xßÕÔžt$o­ÒÚ€ç-ã ÔfÀAÆ[5äLèm&0�Ï(¢ý—ÈpƒÍÒ V] 4DÔ8·—N4Þ)Ž0çcÉZüj¿vb­ÐgxÆSdÊ” Ò”Ã4KOG»üEGŽ�ü:¿�}õŤç~ÿ멵˲ì[Ì‘õ‚g5µöhh€�{¾¶<ÇšÓS�à��«« Е¼>Ö“VçÒ“O?K©ëŽ�¹_ùúß ) i‹�›ïus� S2Ò$]Ÿf2›¦¦&F hå9€£ÏÖ¼0ç•ýÏî.€t•eEÒÛ™ †Î.‚ÌÚÚÓŽº|ª†ÔÈß)…?3=Æ\-åI «YŒcYG˜`A1ˆçÚŠ f‹Hò%3M”iÅ8�=kÒWà¯e••í¾ç7Ïšsk¢Ï¬DæÙûðßyð_yéæCq&| Ǥ<o´/ ã~ZÉF h'—2Úðô*²Öä�Ò¯ú…Y¨çîµÁPSè8í?{òìùÔ€\°Ò„ó”öL,ï#›Ê §5ôõ³Œ|žcî›ë�ñC3Ͳ :ßãYôuϳå-³LW2AàÇs³³ÐIyÈ[ƒ†\;ÏjºG9¡g(3<ëþ¹/íøäyUÚ›ÚK =è’óçzËÃä}®µc žÇ§õ¯ìïÞåã]ñNî#Ï’.âY‚pÀË×›²À ¾™Õiæ,0”•M-CžgÎ|y2kÂÞä³23|·¨ø dìA՜džºÊp¾ 2—@‡Õ”ª¶Š‡:�¥1­ÄSŸÓ{ ø”Í:e=ÀCxvªgÉ]¯ë×Þúë9ÞͺœØ—nÜÔþûõ«–“–zh™5_^ÁyoЙ_‡W3:YÈ£/sæ¥÷w]Î@ ƒÝï&5Xm XðwÛàÀÖ¸F&ªÕ"J2ãÅàÍŽw_/v,3ï2£ˆy0*uX[ià Êõ±‰ÐuÞVWf{ÿÆk/ðVMû”ñáQä'~œ×®žcd¤ã¢2ãýîwÿüp*ñ½¹¶8�;ÕKP_!Îy€+Æã~E`‚Žså-ëÁib­•8dϨttà`G_XBï*(Ði›˜j[è¼¶®Ž÷=ž}V™×áyÐÞ~æ‰s±ÃÓéÿü‡ÿàׯä/=]æõá|�^x›I?þÑ�"{=«=‘RGK=@uû´Â'p ³Î1^ÎÅ2Z‡³|/Ï€²Â½Zâœéx¯8T_RÎèä—džQ)ã8fÎêLÎmƒ2Í€˜ÿ½øÃÆWÜü7þyüò1dúNzý­·ÓÏùú¨Ë¹°œ”W®sŒ=FGt³â•ú°ÀdbÖ?ÓqЯøŒ™ô‚úKeÜ$6¡l³Gµçê^ ¾9nm»dõ{o|@*Í?ø?þ÷�ÖÇ~­£™±e½u8,Ï,@#¸bFÈv@€ÚÓ¸æ:ù ¨­Ëô Ç-™à{y±oÈåÓÙ ƒ ‰ŒUWO™IßäÌ~óßH5t•)C'Ÿ¤:#níhJg:ý—¤“'O³‹Ò;o½ ßl[ÍsçþÊgË©`T\Lk¥ÅUª|ÜK½œƒž&dž8Ãðnîgð…ïwÝ7i·$ˆ!Ï´¢•-£¢;¶ÂàÀPzùÇ?&çÑ�ó¶XFVhS›mʉH·®ÝHýÓi[Ê~·f~Ê›=C²TÁg/¤ƒw Ÿ̲µ…€ò/’¹Eð£íÀÎ?t1=ñä§bo~åïÊ+u†Ÿ¾öJ‹êz‚ñòc+Wô)]oì9y›€œ½©K°˸Oú‹`œe¡Ñ­× ±qøŒ°–v/)T•ú¹ CöW9ÀÀ -BЍF`À³ÏÒÖàÃ1/«�T$îÙSþÜEÖVcoÐ~‰÷*Íž4ãÜéòy¥kkÃ"¹N[oཇ— 9u%——Cò‡½½™�cò\%Ï‹Aóê6Ã;y–u£‚�ökeo{okT5mÞœ£ú�2[PÙ€&0iº†€„ÀòRʶÛÊ«¢¬6ôÑêŠ, n�€»­`dö¨4¶Ã˜XVξ²œŸy˜gÚïÚ�fâzX…ê3(-‚ª± ÞRguo¥;[ýy}g# vÀ12à»C€Ð½Ô¾Ø Þ¨¬–?B+ì…[WÀØÝwíƒ(ÜŒƒK~g`¾eís¨Ö©üWÇòK€ÐI¨‡ $}d�ØgÜBþ ¬Ô2!ûCÒ)….ipË-Â_Õïx]櫛½9Ž­Ê½å!YPæòÝŒ9ÙÆ`~+B”TÍb©0Õè>5=$ÑÚÒˆ­MVºòLÙÄÚk§¹ÿû¸æ¡[yáö�XÓb€å:슚¬hnnãm¬/ò‘è§gx¼¿sÿV{y4‚j1Úʪ•[;øKæ œÍÍx4ó±-è½þ[è»á'ª¦šL:ÕO?…MÏ 0œêd臈�ÎE0‰Á+›èµE´ÄË�î´ãÜx)— ö€õS��¦æõlWÐJF}X{n¹!­²ë“aâØ³ Œmx5ÈJ:G€€I Òƒ€oÈ}Þ£Q¿�õì:×:ã Òk ìRyÄ{û9×X¿€2b¿J1¼f‹àÝu@ge“¶¿´.½8viX=Õ½gà 8‚®9ƒê.EL3—~óòH<εüH9b`ŸÒ.ìù‰ûÆø<«‚º·—ÁúðîÁŽã‚N̸¯â|ZyA¿¡ç7äºLC->,δ´\ÌúKÃ[ÛïJÇœ#xè ŸS¾iCIw ¨UVñ[ÉPD‚f­bi;‡¢ÂÚðÿ-R9a�}®«$ø^íD“ 9åmËX]ê×àY{ì…¾åY¢óóæÆk¢�ϲ§Vr2˜¯ÔVU±Ð?݃“gN£'ͳ¾È…X‰£ŽVàh>rà°®£ëhŽVàÃ+� ^£% $è�rÎ?}íe2OÈXŰ(ÐSðØs°ÈK%ñèTÅRýó¯y>¶1ù¡q†LÅ3+ݦA«R(¢ao¹C3‰>î•9”>¾”ÑHÑUùwü:UœÍ\TÙ ‡Ut¿=?«2oÙ¼×^ü.Ž›ÌyŒˆqK§ZÞ{‹~ß'0|Í8{) ܽÎr�'�µ ¹™Äå87ºq¨T£áªânÖŒÑùkf¶wBjdkèO‘aýÆk?IW(Ÿ©aÏ«iœó:ˆ$Íz¸}c "£Z»ô¶„§F£G'q ¤óÎ/§ç¿òõôÎ�óñ‘Ñw‡¨~±77EéËåTÓÙž,íÞPeù©Ò œ1j×ÞC™Œgî×Ö}c5�ÌMJã‘͘Ÿ7š ¶æÒH?=ã[O`„ä§žžn z˳•§.Ökæ?OC÷ï§€�ñ]z]®X·t…¡qó]Jh–Û3¶ûÔ²À(ÍÔœ,ßí#È`9-ŒO¢œÛKžHúÍ|JS‘iyŸ½`ýÉÂÈY›Hƒ89Ëqˆà@9�2ÿЕGq ÑÓ“ð“#Ãdç¹»© õäôÎEJuçϧ…Éá4ôîOÒPÃÙtüáGSGwO”ú\¡éóÌÌxºIï…YiDToáZems&*¡³\ #3¤ÞyûíôÓ¿ŸþîüŸ§çìõeŽ ÓŒ�°UAsÐË”NkjïNõlè<e�eÍd—™Q÷Ë·~ÎyÁ!‰¡Ë2CÇ”~ä -ÐgY¿Ý—:qaì RîBúF:<3:ñ*j)5Ž£Ã×4Hí¹'¡óA‡W †Ze]uššÄÁI®ñ¨!¹—OùÀÚ†tþü…8»¨Ž¹í-2šžyöÙZÚè?¸v=Mô°ÅXZɆŒóg$-Î�/ŽÁïÒ£Ž� –dÕém6 &.¼^ábr¾Ç,ÏÏ:F±Æ£QÜŽÛì’Zֈ̷&Ü뜣\² 8z)wp™{à\2Ú~“g¡��öƒ®¦û pü0è!‡gn®R*Ѷã¡çÓ‰³—ÂЖ�ÈOäo@È+ ¶ùËxäáë~×)ãyógïãåÏ~É“*-SžSHvÌúh*ØՉ`zEu@-µrq¼¹v:¢g!?ëÄØ×é„S@'ì*ët ó>[F¹ö5³•Y¿î}ß}>kê—YV"ã‰uÖ¹ @Ê^™y¢£ÀçÕ”–H23Þ—ýúÂ}Ìæ4Š=&zŽŽ³vw:cm¸£ä óôGA1[jXJÑ5Ìúßyþ¦“�ï5ÇÈ|ÓéÆšää³@TÓP˜êɼ™Ÿ¤?1ŸÓq«SUšnììe*ôy®,¡‡=%¡ã6øT�r–ºÑ[Æs§¿-9ŸS_oEð¨;ƒwàsf‚3¿u2¥:»{"xFÞ™•jNéo¾ÎÏTs€7™‰ÒK‹ýïttŽ ¦Wø=2[§Üê§JDKdhzn¥7K Þ¾q-Îøó_ú*óÔ1cfŒ õ>¼m%½÷ó7ÒqªƒL�¹ƒSñ³Tèh�Rƒlb4æ.e¥ªÍ¬­ G>š5Vq~WS}äâSÏ¥‡©`¥�²Ñ,iéËèÐ{ž½üXôBº€w)-7pIÁÛpŒàöX[^O§ÏŸâgyë‘ úš5XRŠ£*ß`�H81¡§"xS²Èr’f“çíS~[pºklj�ýu-rå•_ƒ Œz@NÂø·)ósì/Ž~$êà…‰èˆ[$›Ììi3éÃyûÀ¹)mmÅ�Xd­³>ž7Ï•d÷/»tA^ ë\À–üì&žÂaxYNSy’üÛìå%ªÈË,ƒ® :ô"­«¿›nÉÙ HN©§w7õ?UÌz3»grb,ži†/Aq€8£Ã#A[ºðrŽìÎ�)¿•§® å•òÌÞxŸº‹úÖr±®Ž*8Œ×Êê…œ9éÅÀÏàØèHêîé%P+ë•®¾”éMð>rm¼—ã·ºKÈ‹kãö™þM>Î}x…Eƒ:´y ²ð3Þ›˜ÌÇù'&ÿæóÎO±Ù/ò]�ßÕ¶ÌÍNǼÌ>›Š÷vv÷Â(ý´‘ñ˜±·ÙàþH{3A“‚Õ€Pî‘:VVÒ˜À$— "ƒ·T4T!=¢Õ‰}5-£«#^¾��sÒ)c–ä…ê"ÒŽ²Çßq·„Ø‚œ²�ò €×?òAí?”©p4héíJªýȘL8¡-›nV¦r&�õdÉ¥kA�yÈÍhÈ6<ÑÒê:㥶gé«ê˜¬ÈaJ³ðŠË'ïSW°<«@‡ò/£1¤zë,ÅUòí£· �Œ¦¾k×à Yƒ"ø˜6k9uÅÈ'�²?}åUÎA~ºøÈcíœ"ûh•àœ_R ¦.]8{<ôºÖJ ßV,ž' Î4ôÁÙv ƒG2^y…g×ö-ÎYÚ±d®B%ªåC:�•OfêåäS6>úrK3\’ê Ê{³Á¬(RAË› è³�õôòYÆ„žÍ³×úÊ©=G¥´ÏÙ¢mÊNâf²¿¥‡2ÖO°Æ C�€Z§l3Wå²ü[ùä‡Cž}ó»2I9œ‹S^g¹ó³tý ó°‡ë· c0§ *€îÇ!y`©Z[G ¾4׎q�µJ^³Þ;ÐN)z�k)è=£+)3_]•¦ç)mÓ¢¾ßbÜ–n¬)Ýñvÿ£Îx¢gs�õ8L¸ò<¦ó_ B]Í!÷Ã2öê ÒŠûb�z9)í½ dÁgÔk?2ûñ+�p¶ÓíAú®’ÝŒNâ»íF T=w²Žgì¤;ÃðRÖÖ@Ëèªó˜e¨Œ9Þ^ò¼t‰; ¢ ÒC¯èJÞËÌò þ&9I3sèúKœ�&l-ç“óTZÅì™'T`;²ƒµ7£½�1ªS´5W‘Á[‚>LÙþUÛæßï pÌ—®<Œ^‡1‚œÌÃîs/_ûñ·Ò·þÉŸH‚©öÙyæ,ÙàcT@è -Íyt„þôÚËß%¥Ÿy T P¤`嘌׺Ž3² å©ÌK}½^584@eÙïÇàsÈZt� 2D×VÖÒ:¥¾wÙGyY :Ž—½ì•Ùêü›VÈAw®,<ÌIwïÝI?¢ÅÄÏÞ|ƒvï`³NÆgÿù³ö§‡?þêû™³'ÓÀí;”ÿ¥2V#˯GOU.zV3°Í³+`š^ð3Îjòjm ?×ÊÒ .•©¨e€¥û#øï8++©†<ÔÓfÙT�Îä©-�ÇìŠlß{wîòZèIoÒ¤[kV°û!xäÕNFoÙ@'pjìKçw 'eA¹Ê°`ÐLÆoB1‰Ï~¬âÃÙ;Õ]# Û¤�@@+»”,ÕB 7å÷"¼Ñ±hgå ó—.xX‡½A)}ª Ü¹s‹Ï-È Böpã#쎉^­–ÉËàÝ!{©"RIe³Ç¥#ÃŽ¬Ä°�޵IÕ³UöÜŒmù›:‡à^!AŒy k©;«7h Ps�ÒòÅÒØ®Ç.cÜg?‹ y§¶ƒ²F› êB.pŒ Ö\ΩçP~$— æÏ ½eàŠàô Ó'`Åc³Õí×må«÷ä¨SÐsÉàÙªz¡s—çíS5M½KSÞî cÈ£¤;çìÙq\±pœÏ´2Æc®ï$¸÷Uзr•:…¼"ì.æo@Œ•×V±ùVVleЉ èê!p>èúÈùH¬½U 4áæèÐÒÚÁÖç.\@6Sþ[ÃÞ.Tx¦�¦mn°•:™Ÿóµ õhb{›rþc‹«Ýe}hïTRM`Wg:ÕM¹õ|ªîá«°RƒÙÆO<©ì2�P{YÁ3¤?ÛPm¦î†lG—e>>ÇÊž#+´RUd—§¾[÷¨¸5su•á…È�ÖÊV�¬—�ÿ¡8Öƒ22}N}ÔuóüZõÐv„úx¢‡¤-vƒ³-8Q.–˜ËÊ“d·#/œ_Êl,Ì ki'tüÞÏ�z[סa@O|‡GÆ-Ñõ••Ò‘Õ7w•ýQq€õwœêQ~ÞI�UWÉx£ƒ2ð+?5TQq¬†3˜C-:Ö>¾ ƒá¥½Bô»A/´:\Ø#0[ÙÔW¶à¥*xëjS5kë¸Váÿ³ô·ÏãŒeoèç<Óu´ÂRSS]Òš‘^ƒ¾tÏÙ’n2_‚É)€îì›”žçè:t´ƒ r]åpÎ>ú ÅÌÉ2ô-Ø»®µûn0§‹§8ÐYŠ£ëhþ²�5]G+p´¿½*h:Ó,Qfv•Žëßþ£pî½óî/ÒØØO¢œ ÙI»”éë¢d´Ž—,³äèdýöнò7a¤\•-AN…*k:c5^t:^ª¼Aå¿úáð/¿þ]å9Œä_ù¯üM#Åó§ÁêíUìótÀªj¨ rãߺ�@�eÞ4ˆG‡È}ÿÝ·){u"@»*€ø–¶Žp`JÛ‡ØR¦ ��‘°J¤rtK{Y uyq–¿id5�ã 0¿³³€¼£¬!ÊüÚïTEÕÌL•ñ‰Ñ±-q)¸79FöÔâ\8Ù5²—q5·v’éÛNùJDOŽ�rNv×öSæŒ=Pù×ð1x@…VÀ¶ç}€qŠ ¾Ï¬Œ�Ž’íB–0QS#ן~£�òÌ2à2éö­›á”oë9å½,Wˆï@o:¢hUú§†GRñ�¥£p�ÕPHI9A6�¨R@Îû·o’!ñÎuJ©b¬º7»Ë–²{û§/£à7¥æšÊ´>zƒy3œYãC³ifl ‡/€Ž�MiÈñkˆUÙÃC·D0´€LŸÒü4…!¸Šq~þòXíÔ¸O}×Þ #qŽlÏ÷Þ~“õ%�±¬0Ðw3uW䤞'Joõµ¼¼ÆØšROÕÉÔÏßFïá(£Ï_e”®¦ß:ƒ= ÆŠú þ>”Nž?¯œå‰4‚ƒêSO†ÒzÅdàã@à9Ç€ú¹8²Ì0/ÁÑR =˜åoéÕÖ¶vhŽ^̯þ°�àJG³~§.?B�âÕ4|ïŽÜ�´ }5ž›é³ƒsIೃß}ØàKc1/aœ=½”ìŒÓ‘Z‚!­a$é¼ éꢧ.ÆyßÝû­8!ÝX¥{¶Áñœ¸Îe€…�f~=­3äo}ý÷¡ŽœôU.^z(¡3gÏRf¸‘Œõ;Ñcú+¿ó»8»è3Ç^ ˆ˜ñ¨£ü84¸�3a‘^Íeô]³Ôös7#@ç±²BÏ'γÁí«jy1³¦Šqè˜í`T|÷jíhK3ЃƤÞ=¾4FWæöÒ:À›ÙJe‚*8<«žïúÃë 0ƒ©`Vš5+¿ðh£篎áú`WB_æ?ò,ÁÏ0œýçc\ò?ïázJû¿yùRWàLóÞ®ÕÎΠ?½á�3˜1qïÆ{d©Ûs�uÐaÏž­màdÐ�ÍúilëPÛ•8°\Ö PœÈö]è@Ð@ãÖ1ètðŒÉotúÈÄëñ7>Ÿ‡Ã"ç‡Wù)öv:(jˆÒ€:œ“`’—{ª3Ç/¯pPÄ=u\Èfy´êñw˪B»üN.žë¾œÒ{XªWGœ_f¨ëH6ˆP�ĬvA*A'u=ËtzÞ²}ÀñŽÜ’¸ÿ¡‹ýëÿÛ;Âøßì/�¥‚{®AŒ‹3â>Ì!Í–‘^ºzŽ1rÛÍÐî€×ºu¢«ëà•·¿�®f»d_³ôv= @²_ªÙ‡DV ?;n ß̶•®œ ¤sÔÅë/V|ÙC†øak.ÇážlÂ7oXœP ‚ÙàK¾äÚXºv›¾µ°öõÍ!# iB¸tù2Õ,î„þ”ƒ£u¹°°¸–N¤éšµç ÒZÑB¾ZȦ± -.�Ùµ ó8æm†•lÛ0e2Ƚöw÷Þ9¡‡l1ƒa”ËÃã3œYªs°ÊæÕ-²‹ÉˆÒ�+ ‘}8¡�sĉÒ�³<7«4‘e­ Ðlm²Zœÿ îméÞÙE‚U˜7˺¸rÅlbÇi•å’¼Kú5¸Ã@“¦+=Q±ƒ}’'˜™ïœ 00ÀÆö9òK„ ÏÊæaF–s›žGoÄ¡î%è¨þ¿'�@[]%Ø�÷DÉYÆæ3¥ Êþwų6¹§€Óô�/è^­m�œ7*ˆÀÿ-‘lŸjy±û.w],­Üð>ËðŽm‚À…à‚1NAŸ%­^£lÌ*"`Ò =A…Ùx)ଶû¾:ì7 ‘],—ù+"óž}4cy‡,PKáæâÐ>üŒ2c‘Òα×|>2v…kå¹…I±Êxù/Á!Üˬ}°€·¥X+×]ÝÛ5¨­#8†÷î±ïê(fé¹Ç.¢À´ú›{¹¼ XÈFö1=ëÉ2öü(ë•U 8›ýÜ@ Ç8=c;²eÞ'ïEö2=Ñÿ›lsW„!áï 6¹ïY#° ´ �‹õáEu�VÇ]HPŽ�VžãÁy¬§Aþ=Ÿà8¼·73ø#¦ÅaSñ>å«úªãÄwm 8qMÊKòS=繌5¬W‡\ßZu+гöjî½´)Ý›‘ï8#(…q{>s8ŒÊHï½C)³ý=GŽ)*°w®Í.ôce"«Ax¾kñ“í¤™•Öç>ŒÏ±e:!ŸaÌþMºóì©óGeƱ‰ŸË½PNzÎýâ–¨>—¢ïípÎô_ZAÌq””P »1ªˆÅ®ýs´G+p´G+p´ŸtfE‚Ÿyþs¡ØÜ¹Ó@œ)ï’ÍWŠAw¬·A´†"QΰPæÕ$�®£ø´è‚¡ÀY^ά17I8ÁìDñóTn-�©#Pg™_‡W‡— ™K¦<¾úßUì2×jöš (‡- p�A!³qüÒˆìÀh€Õ€FÃû‹ñ“ÏòÙfÑUŒ\~âi’PRms;ãŸL7®¾Ÿ¾ú{;Às•j3¡-³­SE;êfºTP–ɬìÎîîP~ßûÙ‹©äüCQ~άq{[¦\cеäèÄ l¤½Nm×áÚÝÛYè½VÇqº›…¦c«÷øé(ù%˜¾@Égbû”«[NTDeoUjÁ±}õ—¿ÀQÿ>s²„^'ýô^O�>ùL8Ñ«Û{�Œ3Þ œÒͱW;8ìò0ŒZ&ÃÒþP•8kKÙÃÙÉ1 j@UCcc£I»½@où†0ÒpVoQ’‹õ7Ø`dh;2™ìÛ‰ÅBÆØ}·ÚÀ�¶D & †öjZ 3Ý##Þèüú3›�:Cp@-—Öêãi0ÛìøÀNÍ�VJ7»Ÿ·É`_ÄS€ÕRX]o¼úrdÏÏá´d¯hoN SƒD¼¯¦ÛWëÓ…+�¥¾ÞIo¿ôÃÔÞl <úLÓúÎÍ÷Éð"›àhyn*Ö¯«¡­«=@ë]Œµ"z<÷œ¿€ƒ`pÍL›JÀàG¿öï<•¦ ²NÌ,=t˜ ÷÷§ûwîâ�£\%ÌŒÀ7û¹²²&5´¶�é8‚¶M�²V²4ê"J¼�2õÍôÅa°µ2Ÿ>û¥Gqví¤÷ß¼gLPXCHú=À!kYy3±Nï¡�3 CÀ[ƒm{cÀ®3?u:JW‹q>ÔR.pjŒÞ§8-íUX…µBà‚%‹›éÉ\  #l‘rže´4�&Íp40EG ¥gÍxiok�×{È›¡C�q�}�v¾…#kp ?îs²ýDšœ›IM–ӭÀ!¨ ‡„Ùñ–y´ƒ´­£Ø’m:sKq".R꿜 �2öÙ K¤Véðà}5œƒ5 KË·Í‘  3/Çhtžï¾xŸ=£ÜÝ]KhQŠÜ�eŸK(£¶�£c~l.µÖÑ_™ò�:°,Göa¾ä\>É¥<÷ó¾Ç‡?¯“X~ämó1èçém8»L6 kÚÙ{ GSaº}Ý  ºpºËºä­:¾¶8syÌÛ^tÅÅüŒU¿É{ÛqR>sžcO´m²ŠkY«Mæ²È—Á.:]òq”è‘�]8<á5E:@‹Î4ƒaä?^=0“Œ3ŸCž©ó]g´ó³ad…ÿ$sÎÔé\�fäå~NÀ¤Ùß,@JžçÛî{nFþ:õL¨ ‡¤™ˆV ˜"8æáà-o¿þú™“�SX=ßspÐmm͇£†öFäçn,˜0WÇmÆk:>2˜&î߃–é'Ëèx7ýõ7Þ¡”~ej¸Oöå/-«856LIõÞàG"ÅyÃñ"hi°£ÀkÕBŠÊn P0,“1f ™U�·¶±šœL'Ï=¯_‹öfÍ6·¶½/Ïö³‡5qùÞ&€�k¥CR:¼àj)ðnøÿöš²ü¹™ŠKœÕT© µìžNtiÊ@%`[[Óûo½’vjÈjœ…׆–2‡‹�=Ã3«×É0룔ü`”ˆv?/õWå³­Dœs{w7ç[�sÇé„6Ó¡¿ÿ^¹;”zOžÂ”� ºp�9ÓËu÷>Îiý@G§.Kó4#`ä\/–7„ªÿäÃkÙëöÈV"[žA9�rÞ× G�¡úú,3ÔÕŸzz{¹åÁ9~y†uúº/‚3ìYMÂŒ.�Ó–V7û\Çe8™Yçëg‡cü8ßý¼4 ˜àÚ»®…ß•Ë:Ç•ûÈOÏ–™3fþ5ù3Ïõó^ì"Nž»Û›÷Sk{{ÜÏuô\ ííÑ?^'? žesÔÍöp:�³Í^ð\�‡0À؃wÌÏÉ] §·eúuâsqÁrf¡‰mžíXŠ�IàEö—þ·áÝÎË õ6Þ–îM̦g?{–‹c”}¾ŸfB¹ B�NÊ)À´åÔÐ_—Μ=­07èÌ9ËKtî.R¾9Yïr™‹÷ß¶½ ã‰ò¥<$œéL"*1q®sáöÈÌÍ�¿/ ·�ÒKYú0 Û{ØFFÇnœ)þ�,%f)oAÃNƒƒƒió–¥Xi߃,ÆßçÕ2öÎËE1S×Rôf&{ž]ù‚Yn¸ÊÅry–Õ(ä¾îµÎbõÝJøW1_ò þ€³7û®~á8•c€ÙÅÐ�÷”îHÔÍÖгdê„‚ãfqšñVÎwuð>3>Co[FQ…LdS)ëâ3Š)oõíí?¤Ç®CÙÌPƒ |Î!¥ãˆöäÊ3—@‘hÜ ‰åI šã¼7Ëšçc {WVY_2½ŠÕkg9ºšºPðbö¯ ¯„ NÀtôRä�ó. hÒ`Çæ: ›™<�^m_^u5×`Kà�×s©z à€ p^;Û¯ÎÚüÔD«ƒp9j<0‹½qŸ-A»F»Žƒ8ûVJ `³¥Iÿ6ãÄu­0`?‹ØOum‘åËï@Â=å)Žßrü‚‚3~�¡;4c�‰m@ ’‰2¹ŒÜiJÇÛ¹ÖQÆ2°Ö `õY£`ˆúM¦‡t¦iK(Ú”Ö´Aw÷ …YÀ=UBCluÀvÇù60qàö=Ú­Ì!{°Óxæ>Úžs×wuÝJ?{ÀïNß«M­ÈÞr2ïÍt-bÞ_žë¾ Ì{Hƒü,øãR·¶Í–ç¹” @µØ•ÓØ7S³ËéÔé“‘IhÛ$ÈGã^òh?£N ½]Xåù„‘F;:šC6(¿º žµ½ŽÕ6T¥ËúÇk?¤dF©ç<€ÆiÀ›¶©¼º¹\ÅõT5Ô–˜ÍÖù�-ï!`nòAonPºsÛ¤�FÝ+ËÇ—•#;°›zhëÕDõ«uYÚ[0uƒunÃ66ûײì}7®¦.‚ˆâ2B¶vÞW>m…Á+åræ7 ýòɽñ=Ž¿„¿ÉgüÝ1¹g¿º—Ûþ±/žÍ=\`?_Eû§%ÖÎqB[ê•ì�Ïæ�D@p¼@}i;Ï #Žu{Ï`ÊIñ¤3I  @®BOôß-  x+=Ý×KRkCej@3€ ò�Ì^ù‚Ä®/ÂÏÔÆQ‹}±îG 6žA.3S´(al&í0,*ý4‡®¨Þ¢n°h.ÈÌGYSxàö&•"¤ùÊ4fü”sÖ–•W &ÚJÅ —Ý\>OÌ+0x³8Ê� Ëi¬¥Ml°ˆ}Í Ú°â†gAÞÆÍX/,UîíZسºñš6’ò“CsÎE§ß\Ê2cÔ–¦XkíW+uÊ:þ™yÊ’Äå:…,GŽY>]0R=%ztó³còýIÁLX1«ÍP ½ÎÏFeö/�€¶|*f¸ï!_µ½rø¬¥°7 0çÓúˆ¼_Óòû*Ap[ðù³�áê×~Þ³k…�θÏpÿö)—�ºÎ[7fy~îjè)ò³Ú5méÿBlwmSIL}E&Ïõ,ûšë¡|Ïg?rr²öQÆYå}ÁïOôgm•aie¥ü™#¯DµÈ så½=q�bªÑž#é8� ]y˜»½Ïøˆfž±ÐAÐ K°' ÓÆWïq�Zšª¡É­4FОúò~µ‚ºøP£nÐ�~¶«€?é÷ðR‡²Ò†À²çÀ,rù085cÍt ïiP„º¯Á,òsý…–CºÂB4p@é­ýÄ&Àó�ÿl��LÊ?Ïæq–´ðå±§<ÓϹ‘(ÃÚxæ•s¼•ñp/ôHíaDÌ·‡ºüQÐz ÝJˆ ~xE`s·Å�Ï-F¾ªohÏÑzqlÝ›µt‘q.]ƒJÊ´‡®îçðy¹f&˜—(�k€²ÅϢ߸7êLÒ‹Š¢Jkê „s8Cop*òõÏé*ú¨•8sóàOÌG?ÓZ~ªÆQ�™ýs´G+p´G+p´Ÿp¸\dYD½ßuVŽÐËXpBGÂγc'ާ3gΉ:Î$‚Kåáè:Z�¿+�©Ü–›-Ã`£ä.4n†°Jò`Ù:=ZO�»`¯Î`#¿uœHëAóLSgŠL88xÝÈåCýÐ>\�ßÌNתë8¼‡aµXƒU4˜u‡BéÙú�Ë¿«ìjÀ¬ ÍÁÅ–2 1'õ{(²5´<×f.Õ’A�™ºOœAaÞ,İ%«p×rŽf„÷ž¾ß-a§ñ\G_sçæÜ-±k&¸y#Ã16Áˆ§Ÿûldeë°¾J‰½[ïÿœqm�fï6�”58:ç€ð³:),Óîüjd\3A·*Ãå%Ë’N“©uçÄ\ôénO½½½é¹Ï}‘Ò£ÃôÓžL·‡îâí:q–R¿5´šè ¥lôÝÛénßá\Ý£|ýì4ëµçQ÷É’ u‰ÒçÇzºe+wèÝ^ÊÚ²m½'›(KËš8ö†ú$a˜Žß#›�ªµà‚žcöÞÍ)®Jíç ÅÞ¬Ìã§Ï¤þ{wÓ ÷ï¦ å¶€’~ÈÆÞÅ1šzvàfÚ]£äZe]zè©Ï®ß�lñêÍ¥4=|ça>™¡×±_|ÈXdÔe8ñò÷¶Rß»oaÚ«°4�ÿôsôx';š,ÂQ«ó­ŽRÈÇOŸO¿ü9=äqx”R^[[nu�èö œ¬8¶GFFR=Ë.<ú8� ­8VÒ•gèÓ‡cc…‹��ÅTU[øy5½ÿÆO0q¢c„¯QfRãiŽ¬çŸ½ùëY›NÁÿ­Jð0ci°«f?Ú»{q"QOÇŽsÇɶ/¥,=ÓË«ÂpHØ| YÇÁÂÚ´UBùå2"1îÈ|z`hÏ“‰UŽUOøu ¹Eö=÷t/%1öØ{&ÎQ¢¾4�ÞÒд†œÙ3–ÌD�²°øçΜ"æDÈ4š�=úXº{ë&ôG�¯Ã*0´ä �­AŽ -DÌÀÌ!²¾”hlKþ²ÞÒ|AîdЬŽƒÌ^ÂL^ ³¬¡ƒCŽWR®3T‡ È.%,™�×—Pž Ðu N@a…ùïnáǰÜ,l‘‡H7k{«éÔ_ pE§×â•Gñd`ßâŒÆ=šÊšN¥‚ú¹A#^Á{â'~æû¡h>d%‡¼ïð»oõç_]‡oôþðá_5F;pž}òùôƒoüC¨„²h'Ï¥±[ïºaþÿÓï§–c—pvgQô:%tT(’Ct|”ÛãµBø–Ž„]øŸeòæ°1û¯gjÝÄXæþŒ€’æåtþêÌôl–à$Ø&Å �ï›”Ô ¯&hA§ñòú"ô—e�~x1Ïø'®tl„óƒ‰:7õ¿�>^: utº®­ÎŒ4ìYNpÃäÎsy€o)g¶®± ~³碣³›^kgÓ¿ýM‚ÌÁÉȺ˜)ÐÒÞY‚yeI;ümlx$u_ì…oR*ó:|�V;l”Ã+‹y–Ù´Ðãs_|@œ¾rKÐ"åõêêÉúÂq}íƒ_tr.*_X ´ þ%ð*%üüg?M×®¿ŸN�"¹w(Å®S¦ÓÞæÒ—€öó_ût>ÊÏÿ ÎòP€·–æpfŒsoš»Nâ諈`2�ï>Û~ :wlç!(-“»IÐU#u�‚äVéPv5¶´¥Û7¯Â_·sÉs sÇ}ÕÁÞÂß ÐQ©Œ ÙÏ�q> >û/>øG™}œ¡ û0Ê/*)5(}ÖÑ™Ïû]ÿ3]NoüäÇñ³²4sDx!“ͪ g2ë#(ñQ—k§ž1‹SÞ>å¹Ðcc+ÁQ¼vûæµtéáÇ)ÕÛÄ:sžp â  @[ÁÃ×ÌR6£ÕA5℞œM#ñ¸&×/”ÌÍþfÁIè–„¸O?ÝËAÏsÓã©çÄ)Ö &œü‚\‡ú�cõ|xéÌöCWgѹ؆.`Ÿ„÷÷¼¨_™‰ï3å­:¼#—±n“õŽp÷^,-|¢‹{˜És€ ð¿Xdná}t·p¶ÌÚd ‡åz•Vá1c3zŸCËf® &׳ú­7˜�Á<‚Îò8A +É?\�‹ —& p9ÓÙx–ì°üxs±*JÐÈDb]¢Ô,òJ™UL%þ6ꈮKUå‰,èúihé G²z�†ÎOüóéνáXšÚªüÔÙF¥žc)c«l‘1:˜mF\K[;Y€dîR†±¼C§µ�¡~™�ÉG¡1ò­Ð¿vi«“Þßáðáà´d¶gMw‡Jf;–ÌšÉ�Ñ 2‚À˜ÖæäÁ%ÛéÞÐXš$ˆO>#] Z»×îJ5º½<×2Ó9´ÐÈ‚S3-^ìÞuʆƒ–àDH‡µã¹¬�k§Ó6üãŒC PšqlŽÑ3ì:.Àóss§Ñ› pD»®Ò±™±V#1@É+ÊØ"÷tµ{\ àuŸŸeÓ±lì™ _.÷—"™Õq²ò´Ø È@�e[Ù8Çp”ƒÁ 8ANAHî¿òWþüüïtŒ_çµÙ�…yT3àyêP¶ûð²Üpd®37(<¸fàí p És]Ái×Yº²·mÈS̤�t=Æb ‘íMìã½M°ke%ò�±°ˆÀäâóðÛê¬AGÒ°c´0Ü/ÆSˆ.êFd##à&s0›]E9mè*3!ãLfë<™ßÝ+çiEÇYH †ã2›QÚ�žÁ;¸¯%‡Ítˉ Ç[Eà™s—¬P  &íZ‰eieƒ5gߨ3ϦA‚m¶T0ÈE»'Ó)Sâ½òè:ʬ«ÓXeB@_^¢,âÑàp}w_^ðõ(æÃ}Í”Í�þ]·ÞbûÒNOŒPk0)„R6¡«IWÃÒže§Hf>ò—Ù‚¾3;ÛÛés xêyà|:ny»ë ¿ûšü-‡ñxÊ«S[I½ “ƒÙx¼§z”ã“^½‡¶tñsFÜí“ýãG |Ž QxX16·v™ë¶„mZÅÙ÷LðVTœ6’ÁyCƒýØÞƒ4T‡n îë½¢\54 ^/Ÿó²Òˆz£mGr8+ ]õ#çª)HèçäY~Æyí1&m]f=K•Œ‹Â[È5Ö<mÔVÐfáOðQþf« ìq/ƒ=º{Ú¼±U¹¿6š<Ï3#qyŽ|–ki 1évÐÎl[ç±n”HÞ^ôW…=­º'eèRJõ­[ ‚{{€„ÎÛssxN£’�Lx…œbl‚À„Ú„ì6p�?Æ92èC^/°_\ˆ¬à&~”%ñ˽Èx#ÏdÜêIÒ¨�Aß¼× qꎂ‚Ò‡€¯òq“Jn·Ÿqœ^Yp5ûf:8_ ‹´VP.±æÊ:°´mì_Az@¹¶–ö»ÜŸ-öÂqÄ5ËþëƒÐ_`ð‘ëÁfÐŒ~:AüÍ�TÀäºi·È«JXǘ¿çZp�æY?«áY�ÑŠwÚ>ꑞ;y¶6†ôé‰Í᜛lá{êëmû…=oP�ôýÞÛ o/ŸÕ�Vr©2h›²C=0 Ëk¬.BkcÀ_ AZfH;'ù³²F¹ÁL-„X÷gÿ”A¬)+öƒ† $±]r–1kskö»¯œ¶åÎÕJô½P "è�{9õêÃç¹GÊ–Ú+äÄ:s^ 8’)±Ÿ Ìð'ý;[õH³êYëÖ€×m£aÅÓvw­h¢�YìÃ:eÚ¥�Ð#Ø‹¬m�FÐ0t“p×ùŒúÅ4›«î¢›ƒùñð®]Æ/ Dà kçØ=×Ûè {ØÏqñ×ÄÖhЙ4s(7Ö¨„ôà]Ù{�þ=Z�£8Z�£8Z�O² $/\ý÷…-�Éc99œ~(*×*™uFs³3ñ^…àÑu´“V@ƒNeX~LeX‹No•{#7ÈØ;ÙháÌB©S96»L@YET¼Z«†Šc�IÏ„?ž ?§a/Xâ3ÍfV¹ö °œ÷¢ûÅÏ~Æ÷{~>~Q+D™ÔÈÑd¹O�f¿tu¶§!Ê«Åsê,Ç~é‘O…²n&�Ž%3½8¿ûo£4›5ÇkDÄb€¶µ4¤gžy†^ÛôÎFI­#’^ bmm…2½'2£’,%#xèU,ˆ©ÃCÒ¹ `0Ÿ½p‘þœ´ƒèrô”‡ŸŠ±¶utGä4}ní�Yý]Œ0_žŸ ÜRNºrù\ª©o0z‚{×¥qx0˜vôÑ,:w†y=ñO?ý,rYÿZ�õu�\TZÆ9(㚯-‘�TMÉëÖtöÜÉTK¿^ çúÞœ"îcEd9ëX¼w“¿=†�Ø»Z[”üo$ õÞ“g?ªèÛ A[{;™žôA%kÁ²ö‹dœëx¿òøÓìó~,R>³áJà@)}ÅpÄi°ó¼“=€Ÿ”ßë»}?•ádÉÃ5Eæúñãt%€«Ï|éw_ºÃIq™Ã°87•j¾Ö’ŠþðßMÝÁh¸ë8�·È&‚)Á˜ä18‡!ŠA+¯Ò!tÈ{tÇ»ãC¼‡³,oÌ>âìù¾xÝÿ ÛO]H—>ÿ·É¶+ÇÑ1–žkÿ½tòô@Žòô÷þÓÿ>½ûú Ì€W{ÕгÎr×° \‡@àÍ‘ÿåTGØ"ëÌì–Ý5 ðǧžý|*�¿ÍÔÓŒ#È})ÈÓ‰¡³#˜ >Káʳ‹È.°:HcsW*Ç)›ÐØØšrKÛàCó¡»õëW6g_3³ç/æ«¡Î4yžüWgPö¯wþ^|øln%+ŠsK’GZÁ¹µ4·BI#½Cºq&œ:{‘ÒãmèZ9ãs¿óéõW_I‹óÓð²([YYƒó;×Jð{Î@Y]Mêm¬$ ˆ€ö²ª–8)&è§.À†�Ÿv`Ím” Æä†7¶ÃϪjÈÁqàwŸç•�ËìÕ¿âå:ÄÛdJ€ÿgå%Ý[ËÑ Tå›\çïgÌœ/ƒÿ¦U�Üò\y~6p.úžt†©Éqt>³ÑÈêD!÷-+©€?E53»ulF_jöÏ502£X‡ª_1TÐ7Ù=•NŒDnè ?yêr¹:Ý»u+=tþ!½{éƒëWÑ?–"otr!ýÑýzTWzóõWYë± /³ 0mki$H³‰Lú–à�‹³Ó” Yi0б£P³æ¶ì§ì«­iÌØ\ÄÙ…í…¾`!Hl‡²,«N�C¹ie�ÀnY„:®I‹3Ÿçý÷GY3ë,PÆÞ¯:ä›)!Šù™í5€Þ´85–îÝB;KÉú |^í¦™§·Ä‰ÅB_8Á<-¹m u÷Ýy»‹sâøVòÈÜ„¶¢„/Z¾÷ªñæì»`³A<{ŒI4—’àži36}¯gL�cG·Y’•È’ŽÎî8‡wïßçÜΣ#»V£@þRooc0–ò*‚FÃZö©Ä`@�•ñV¹pŒÒ¬ó3@!dkîÏ¡òši�ÿ䃶*à—_¯¸¸ÿk¨3ж)䪼Ǡ 3Ò¥Aù¶lH>VØ.£M®Í¦œUÖê~÷3ò‘z‚×=o¾rP™ÉµíÕý Htß'¼�ñgY¸þúÉ/ÈÿÜ&ôóuÖG;e ýÅójV¬Ì)G=W� ºbŒ¶¡`+ x\ (J]+Ÿ²ìÓñx�²ìX‚ä NCå —p~ p]«ÐõÊo¬4 ;÷ußå?¶°"Oáïym w� °|þ¶E0¹À¢¶¬û½�¿Ã,kר˜HK\G¶,A¹e¼¨ã¸" Äûqî ÷qRòBrAôÜ[«2¬#‡Ô#ä<³æyÒ)‚ù ÊL8PΪO[Ìêaö¹>�¹�û†é‚\�?˜ƒÝ. î«g óäÕòTy¿û©,VÛX#°Õà3¾C§ä>úC˜0ã…�rƒ­,y/Ð[�}³Éû bÍl:x3÷‘Äå϶â1pÛ¿ùÁJnòÊskˉh÷€œU~ª� núšsÓ_" ,o—géóuñ<ƒ,³·½ëèC³`e»�üÝßwòHŽ¢@ªµäX{î5Ï™�€4rÛ�ñÞìsÎBQ`_@;|Õ'�áö&†�ʵÌÿÒŠ6Ç|=áÚ®gð»ö`ô$gM¬Lá~™€ÓÜCÿuÚÜÌ1Ê÷<×Ò‹— °qÍÕßbŒÏyG%!ÖËÀ e¿>�:ì>ü‚Šð}ù�÷`!¯ êÉv�ßÙG—nßàqÆÍNgËÂ9`Þê&~>‚dðe0Ÿ#XìÚ¢÷�_ú 3»½¡ûæýœ�·6»k¿IÀÜ:¼a ]çþè6Qyž©ìW2Ȳ�–.ú/#p•1²ýŒúågǤ-!/ŽJè—p^ô&fߘkgZ=ÏlzëéMõ9Ê÷7§ïs~ -^÷Œd~V_B>±/ž§²€ü̧½)>Ç= d$Γ±Àï…Å’rߣëhŽVàhŽVàhþ•V *‰š®]»š¾õÍ?gªJ¥U¥ÃYg×þþ|ºöþ;ô”½c8ëlG×Ñ ükZ�L%ÿxWY68D¦_{{YöúÀ­ €Ý(ÕžO�„öPR Ó)¬’g–�ôá¥ÑaY9³¶â#"T¥Ï×qxŽ è}í=UX½²3‡²Îó4’½¦~ÄYâ>*¢ö“^ǘœ e!ޏË�>|>2-ƒwÿÎ�t‚ß5g¢—R(Ú9i� 2³Zq  ŒÜ¿†œ,bœ §NŸIç.‘±ˆãh ÇÅ J³Ž‡••¹TCÖÎÀùÎ, Ù0…PÐ 0zˆm¦Üwš©™fÛ€¥:õ0B*ìCË©¼H v -ÖÈò×Ð<ÞX ×yÞFª¦DV Z]cMªyâ©´xæ¥ÎqžÌôãq#z”Ì·rÞ'>O¶.÷> +=qó1љ³W뽋ËÒµE¹”ß[Ì,¨L5k…39”žÖÐ^[˜#² xav‰þÍ8dOÒ @lz0íÐooß`�œå4=r£=?u7áÞXNKãÈNö÷‘ˆ#Ãû©'‰ €™™™´ÒÑ‚‡Rdn: Šá›Å«dfÌcà´«,ÂX)¥L. |M~Kê¦w=}-'ªQf4¿™h^D˜¨a ´K�éÀwŒ“�õÞkgL+ © ‡úúZæ¼5»µ}µt$iê´²\ÛÎìUÖô �l¤ÜæÖ ÛèÞòœ�žmÅ�b{÷ä�nÌœÛ?襧zBöY´ÌÙdö)£$õØêdœ—õ…IÊoϤ‚=Wy­˜3:áð,`äèˆíèh ã ¤4=óÈYÖ&Qê¾Ç”evWS'ýÚŸ½@Ÿu@VË`ÖÔ”¦mçq~f}ê¥ý‹§zÒg9Íß ù&{òÅÇÎaèá¬\L7ßœ¡ü÷rúþëÿg>AÓdœON¤;oÿ ;÷pÚâÌÿwÿÞ—SÎJ?ÙÝdÌC™Á˜•PÔ0nk.5Uì§ÿèïÿáà´¯[/}kî|vUu}8©5870,mtYîpd€}€8� œËKK»Ç5$)áVFydŒgû§kÄv”èén©bnm¬­‘Ó8ˆp*6pÆt¨—Òÿ–ÞrSC}áüÉÃq^HϫjɆ!Ða¯ô.ô´“ƒˆ½õ?�Z:$ XKBâ‰Ç!¬S§„Íût³ïð<˱G Lî•Kù:kfQè81+i‡@ÕöÙõ{]eQúÜžá¯ûi~º>U5”�Á¾N+ƒgŸz$�?ÓàÚ&ûj€ÏàÖí»d/ÏÌ¥ŽçéQÙUŠàymü\[ûçxg\àg[D™/ÏÓWý³dncÈïв ®žà•Ú&€ {SVB«ñœÇUè|’³…“µzZ]x"Õ¶ŸÊÖ‚õ CLj+ÃYp®ê3:;å¹þæºÅÅïY˜»gI‡Ž3�½ðB�3X� çß×/¦ód|댲]EI9Y&ÜÆÕ«TÔ°$ž­*þàïü]œ#饾MP*µ­]ŠFÖ騄 YL&B�fí½Gvxϱ3)‡Êµ þf„/tv­ Ê�1Å K€Yc…×SuC{úêßúCœ£‹Ð4r ÇóÄÈ@O cc§»áËU¥uÌ›ý‡Vr‹+S]Uaš›>Y �lÃYZH…„uøæ,{RAF[!Î�®N2ÔŸú­(hQ�Ì8€&¬€bFkïÙlX]�?p&ò5Bž±Æ–v}�C×éÓìGVÎÐà®SÎEFÀÆÚ|zöó_ Œwë²ÁWdttusNá[òÎÎ.Ïmm£G|GO¢V8 u�‹ÈZwÏtŒ=úÄÓÁÇáÞ:å«2¹¹TÌêüòu·ýð=~wì¿}ùyÎçH ÓÌÂC9¯ãÒÏø]Ùq8&[/dô§C’ ú0«Å€…@Ž2ò[é5ZÌÜÔ³Ÿkǽ̮ô¬*?În ˆë�ýôÓŸ\&ˆ•½4�Ê`³±] AKuŽeèv§¾S1PÏJ;udVךշÀÑß«¸½¹‡oô»s4Ë_§_àÆ,Á,­�=!Çç)�ïIi bA= ©§Çñ^Ù›ešé3ïéöxEÆ¿kë�­o' ìÁlfÌ rë0,+§ÏyÎsžsÎÿ,–µb€yu*Ï^A.”&Àôæi™é"gW‰=ð�GžH·oó�=²^ÉJd½Õ_[:Ò'ÿâÇb_éÐÖ†¤ ºóœ›ÎÉS¶p™x÷­àG�¿h¹œ£.ØÖ½{~)s�ŒRÚ•=¤3Þ3ÉŒ.÷‡mŽû <t—Ë‘±+=ØÃ'Ì?* pSuRˆ@V_wV£.ö ¢ì¦;wÆÓôÕ58;,«<<:ƹ2%·hìC/�¬´àzZe‚!r­tAñ`Ü9tb³Õ¯ÌÆeÏta,)#+€ÜÊç¼zïß‚ÖÊ2Ñ…Ìz @z×w®'2†' „zý•WÓ•‡¯Q©îÄÚÒ ‚0^½s'ú)÷ _IO<÷Þ:2Øê�×!Ï­ †Ø“¥4<25séÛßz  b%Û›Œ»Àù¢“=J°³¬X¥Lðìè$ƒ{°k†ÖUP 4¸p^:ì•af�ç±óïÜØmrÆlš(;>u'=üÄsé©'žŠ>Ê_ùêWÐ=ÆÓä� îÃÐ É Ë6Ò“ÒåǨ¼Å¹þW.]IS““é~ïä9t_¾>ڸߔGeô0³ �ƒ4ªˆà‘®£¾Y]7ÛL11ìÈ:ç7grÃÊXö©Î$%càû®©|ëúMÞ x‚]ƒôðñd;­ ‚nm…µ8{'Ýšáø—¼ºr!l eÃ6AÆÊ{œkΪ¯9J+hg»/Èn‡n©£Ì¬BoeT‡òE}¾•à?ζ üA?jìÍ�Á�¬"À£ºR; }ª¬¿å³ß!HO›VPJÀ|=îÞø�tãÆ”§¥òN½ËîKð�ß� €étj/·Sùi~ò:àI>µu�„ž$¿›ééghèØîØ’xøjFNËßα� móa&»öÃg‘í½útb�lü¸¼¸ ¡�çÊË4çÚÍ ¹È|àå —°•(±�<ø¾£‘ß! ‹iÕ»?•!¬éé«�1È~úÆ�ãç÷n:Á1V3¶e3Ùÿ›Û0µ‰üôŒ¸ò\t_0îÚû¾À˜•³îÝ»­PL°‚˜vªû͹tcYõl[*µ=³Ýsf9[Aà4`È*p¸¸›xì&¼·Ë:kk²dØ3Û€å´Zá¬YëØ�‘Ðǵ\§REŽñ´#³ °䮲ž{»îd3|ì¬ÜÍÚxpOÖÂÒíÎÕê ò¾Uv È]³^Õٔћx–lZ‰ÙPC/×>6A Œ}®þà4PD I}Òà.õòcô}Ÿo¢ÚçÖ:z5vÿÓäØFo÷ü� 6Þð¶òFVõ"³ûÕSBs'ÏÛ…µµÕÓ0ö§¯Y‚ó}>Ÿ².Ž{‘ñg™×T!¼Ï×ú“ŠÜËñyΜ‚Áê@>c]00�MŽO^eJ?äŒ µò¯g¸<ម¼öºê¡gÁ.ðºówÜAwnáK½F™¥ÛǦÎU2[I;I?—ã·z‹UL,½<Ãm�S ù¥-®®çšË/>SólçÆN %#�iÂ.ã§ûõK7€ö›6Ž4�½Ï•g¯3 œQàŒg8£À¿8ˆ8¼z)kû¾gŸ¥Ôàt8°ÃaÅxw‚ÒÏ”v<4sÄÞƒþìuF�ŸNgùÝ Ué_ÿ’¿½Và\ƒFgë*¥ªUôtЛ¹¤�§q¥ò¥rnßÜã‚}ˆªá¤ÖAmù5R�‰ØD/:¥5tÐè˜óy‚r§ãôïøÇ05ý]£ûtŬ ²xþ1ƇY*yŒ�îk�†™\ò§F¾†¸Ù]òé1`ªtkÆP1‚y§ƒ¥W›¹ëÞȧ:ô0€ÁžÚ;û”k%Ã")Œâ}DX‘ÝË3‹ÐìÃHûŒãhP=‡fà”{#RV­�™Y‘q°±:‹‘D45³]#YG‹øÛôœœŸ…È&h#xÀì+ÄmÖl“5ïèë‚0*íyÕÐeæ #`Á“–gx€l¬:íLOúè‘=Ö›KBPz¯2{§— ŽKƒÝi—ïHR<×�;sTW™|޲¤¥‘Û ‘é­g á ?ûôÃ8 ÞÙ&:©£\Cüx±Ø!íuöîÉF'à!Á–·Õd4àÆ=ßD–±Î·M€�2Y ¹ŽÑðÆ­wo’åBæਙ?:XZ)�ØÒR\™"¸ç0‘êÜŠ±“­h˜¯¬Þ£ÿ;å:çE»Rn0 ‚Aø¶Ç­eÌŠMȲ޷WfàAö`ºcˆh}œ§Ê�<�â˜Û¼o�A Y¶¨46“ÓïH'Á?÷;Ä ¾o±ÙÚ8c½Í>ß ^iFfHùTd¼�î¾siw�çÎÞ†ÉÚ¾÷zjËo¦AœÀùÆ:çN1�Ñønªõn¶¥5q&¹ß— ÷þrÚ”Ò9\£ìCG®X¹�ú�3Õäÿà‘¿Ê‚¬«Î”­eJíÓ{Ÿý×Òy¾:!§àÃ�5²–àIåØÈè92ÒÔéíÊ¾ß ˆi�}hPZ/¥¡ÛZp4á÷¨€`fšN§pr3³Çy–nU䂎O×¢»—êcímÌ"ûc½üžçârßÌ("XSÏS�›8‘…ÞÏ÷¼‡ÿÓ‰èë€>‚˜<§àµï½˜s0ËÁÉÜ"¯ùò¾þóÔv£zîSg7Æ/*€ìýãžÝxŸ9$‘¹¬›@p8z¸Ç¿Ba]Ém={˜‹¬2 h KBû d9†ÕEügæG�À Áç( 4ózÏ5[¾èÌLDÕ«þe™v˜ÛCð?KµgAOÃVã,>}F/` YÊF« ꌬRfT{Æ{ bÕ óÜ‚ÿ0©ÿ�þ–®®¥™2òÓéKú8¶à Æ¡ã4ªÁW€T÷�z¢ÙÙã·n†ü¹}ëz.öö„¦Ó§?úÈ.òG‡p•µ(7óÙŒLÛ^èH7«5$ÀØÎÿ&ÖÊÒ¸+K2&³¯ìƒ)(àzªD¨«Z_Z\¡#2=¡³òq�øé§žIÿËŸ`-¨0À\|î•H熇ÓK_ÿZú�ÿþ¿…«uÒc'Î¥"à³üSŽz[Æ”Ða †“ïm c¶d´ó€¦­dÒKÛ«=D6mozùůr>¢pöÝ|çõô·ûï¤OýµßŒÀ õ Ïaå¾<áßêDf_ã�ô_þçÿI𛺳™Üèl6³Ò=-nU÷˜AYê ʃT÷·Ñ'Ÿ��4÷ìÔæ0cÏàN«ÑäÐ#¶ÉÀo%kó™çÚ>�<š¾øÂçÓ7>ó‡ál>&sX]N�õ/~ôÓG>ú—Ü30$ 8!‹€ ÷˜g©üþ�ÿ÷ÿ5]ùKÁŠ‚É:ÃËT›²¥Ð>ü'Ÿ:Öfdº`a޽â¹ï~‘WV¨ð#ÿV<�:ÕÑ bØBvìB_æËßžçþÅ�¥'ÞKÕ"t¶Ïî³éÿø_þ'nè�üew‡¾þÿÖ•žÿ™ŸË2uáU€¾@Å®�´ ”733Sé[ßü†Ããùî÷ý,(ˆõ¶J‰¼~Äó òUvtv´m+ å«6É&óR÷¶÷­€ˆ¶ˆ²3ôsl y)€ 2˜ßÿÁ_H×z8Ú>üá¿øç\Φvy ›¯�ç_z<}â7žçnèðfßÍî-@IDATÀÿ†¨h�q*cÆÇï0ª|´œ2£Õu6Pä[ µ³=‚” ê�”ö¥fMì…�ÁAd[Ö²§nV´²Üýº�¬t¯ZÎ÷ˆŒgçéfór/[Æüê_þµñ•y_úÂçcýÛ‘™T£†iè�¤_þÔûB -h·À>”¿ºðá¼ðÿqúÝðw©du™u¥º| ¸b«ˆ¥[Ñ¿×`*@† än¢ —VØ�X6ðIâ5¡ËµR!Š P–@.zú¶qþº¦îa¦Í�Òó�}}Ô å+ÏùvvŠàIö­rH=sfò^úãÏü2 �Þ€Š8%¾wëömìÖN*Ü|8ö_ÿ`zàÁ«èÀT²¬ÝF&¾ùú«éö­wÓ�ë¯1þ¶ØË AVƒ¯<‘Úóö.Î18õÇ*O¬˜¡OÀs¾»¨N@íû€rêð¶“Ïm3ÓÅ™¥¼Po6hЀõä‹— ™õõ¯}-øùêUÙy®kèO_§?Oχxóô?\“]uúÆ¿ÝO“w½!Ó Àý•»�Ÿ3‰3 ]Eš¨§�7‹=08¿ÛBCƒý4»1禌š°°)tWߨ@+³ç ¼3À¯‰ªkûè‘gÕÜ*X!‚ñû„3ÎìéФÜ;üOžVþ¸><>ž¯|µ¹g¦ú‰rÃ3K >?gÐ(J;�ÉF’÷ŽàFv'Úg¬•gàНkipV½‹ÊEð—ú©s’÷ÝÃtMÐÃÀüÈŒ…ˆXÞûûÞÈllzä‚矴<ÍŠlT§uÒÝû)/³3Ö€®Ö¤ö¬¬· ŸòNÝ&2n¡SÐŒ÷… T¯ÙãžúÊгÝXßQ>°&ÊqϨuÎϱ¨XÁ»·²¹d: �lò{´ü€Êœ¹ö£6óY=À*P‹wuÔãþf×g²à¹Á¹4C‚UÄjˆ«›±,ðù<òþfýBïa­ÝûxÆ’xƲ`aߪïì¨�k&¼�uä†g—ó·2ÏûY9êš檫¨Ïª¥‡MÀÚ –6ñ|³æC7@¦4ä;â–¼Ný=èN+¼CÖMj5Cƒg3ý”aÇ™mð„ÿs?ËÏrºk¼‡´VϳªO+AôNúß“¼,(ïüìo½}í;ñù�y*“éÓ ¹?GÆ;t—÷½V®W'Ò®ììÑFÏ€.ò§€s½qº8fF‡œ’_m�bk×VÝ£Ä~R¾D�crnE®�ÀUå {Ü€.ýNî°°ðI‹$œ„ì:N5ž©®}# ¶ÙgÇîí  Ïôy<Ãí!;¡Ž<×J"CíÓ¬ØpŒ_.£k&S<+Ìd· Œ:²¼â<”L Á½C ôË‘ìáq²ñÑ [êØçÈSùÁ$ íc÷DßñËgÚXꥢèkS>ø~ž÷"¨×L}æaëç)_4R�Ÿ¬Œ¡ümïì:Ë@g-Ï^g8£ÀÎ(ðo@�Så^EÅÒìª*çÏ�q¸í£ÍDY/ËUNLÜáÐJQ–Q'¦ gùÙëŒ?% �½‚cÔŒp�Íh«ÿÚ±œ³fi k$ªli˜Õ084Î!-Élö…Îc˜Þ×ïj¸ù�b'”Ö>PaCYÀ Cç�JœŠšÊs8¶tŽ„R—Ñ:#¼¦Â¸yx(¢FŠ †ú ÿY–S'·ŽÿÞeœUžö„�¹{ ç5Ù§¡ý“1 xeéÊõË_û“tõ±§Ã! ~óÆëéü¥«aÈ–pöi¼X‘OhVN“Ód9vv‡ƒõÈL³ÁsÈ€¥Èæˆç°Ì’¹.�¾K�±¥:È4n ¦ÆoPjôN›õpVmn?Óc”['û(ãöö\'û�ŸçÛcå• È�}J_βOwWs<:® Γù.OÜ‹rôu¢Àí={óö8™Y”„Æ Ó·ÒÖâ4÷4òœ^Û`Æ–y•^ö¹Z¥Ç× QÇö/ßX™ #¬PïK;=k”÷¬p?Ëz7‰¯>ß@�»Yz÷­!ÿ@˜Òß1{Áì±õµ²TZqû€rdÑÁMT+Ø'³á`�`¢È5¶¢\"Õ}:Â!b¯3ž) av¡FuŽúÔV$¼¯Q*–Ê”¿ÛËJõmÀ{‚›Óò°™ºa¬±o� ¥Öîücè"H,Ð+`ÚÈïy 9®ÙÅY½�^ÀÁ¬'÷¤}%ÝóÓdMèôÕŽlìc‚4¤í¹§ƒÞ(û*Îþþ¡¡àã�ð+ìÂý]5R—NL8æCØ Ïܤï»}>B }®ýa1qÌï@�%Jų±XWŒW2,,¿ïÕŒ ì§{p) lNK[6d_4ƒcöZ|+lˆ(]GÕƒÜÁ/8v¤ßבsáø#$¤&û:¢ô�¦gŸ¤û¾ëk¯C#df>9&8eçjÐWš Úo›Õ‚UÙb‰U�ûá-d.µ±ŽÈÒØ‰`�Àì½U²0uü�ÔR¿c‚–?ÔáêšèlÙEîV npßIËÈ%åí–σ¿5ŽuJ˜õaÆ]‚8ö—Ò÷Ø‚/Ãhçޘዼm�{C#ÏÅiÁõ¬—‰F¹:‘N£= -©l�Æ6d‰ø üÓÀ^YÄÑ\­ÐknÛžn[¬9Î!öæö Ï@F©GÖLÃ7 ý›ÃqžYöîpg%�ë¢ZN»C�2)–V§Œ1êg,)ÊJ+4,P„aÌÒѱç݇ÎsŸýtû²¯­‹ ¸ÎóÙø;Èb3ˆÌ„Ïõ4ËÛÞï¾tò™•àîµÿª5‰/ü9ÿÃj�Ó®rö—•2šZ�gð›�hVX¤"‡ç„h Ä*gÓid”¶+È­@U£ŽBÎÕ*¶M8)»¥G8‘‡ÊUƒa:êçYÎ|ÖÂŒ}÷¶íWì_k‹.ÛŸpÖXÖ,wæV®¨V³ÓS“Pê �¾E€tíeöºvß½©du€eÖÄ~¡V"°¾zÇòþgè>þ«é¿þ;ÿEºúÀ%t�‰ôíW¾“ZQ†~þC?ŸÆ®< HAÛdU3Yõ òƒ™Z:SZG¡L&!z‹BT6À»öëDîÕÚ»#˜Ìq :vƒKèA-ôÇ=Ü'ƒsG�Ñû ~o!O•fé·!ÿáïüidì|èÆ=è_ÃãÁž#ÎÙïœV©�§«‚¯Ùçîo�ýî÷¢Ykî™�óði¶w ˜3;±´ž'V†iïì‹€�µÅ™àQ{¸*›�„3kŸ3(t øöÚ#�¥«×sq¤_¿q=½õÊ+iôâί;L##xF Ú7Srÿ ãQÈÊUX#ÿÉêìí�q®dÀû‚ó%2x×1g‹`I32À€˜xÒÞÀÛIï+°éÌK—•ÙGfƒmnÍc{ £p�g›ûOýñÚµG”`¾Œð’:«U…¬Ø$ðfÕŒ§žzÞÍhý«mPÜ!Ê:_–‘g:àîäÍƃ®†~“ÃŽ8ßs>°]F¦çèTw­ö±/Ø%èŒ(¨L9�&y€mŽ:|·¸Øœf'ï…þ¶¸°ˆí`Éê>ïIúÈ/¤÷¾ïý1A×/þÑ8•�<Sš»{;}âcOÿÁ'?6…cëÀÙnp…4rÝõ˜1ý$ó˜ºùÎ[€9êmœ©Ø�J„[ÊÜ×½=;Ô•–.s6¶ì(£Ÿº§·�]Kxn!«<Ó¶ �µÜvð+óüä§~=ª†Ý¾u+Íc³°†H¿•Þeò?üÍôý·B6¨o(·µ�ˆ[�Õ]% þ}ù Ÿ‹j5ë<×,õÝÆ=�9Û ²ÞÁž2t}]ÒrÌ™›½çÕÑÔÏ´# ”U/70ÃÅÿ ˜:ǰÏùÆ><ÄŸì33óé/ÜEuù…qÊžm/S…§€ŒeïZ­£�ómæöÍôÔ‡)ýõßú›QmÁóJ~_‡6êÜÊö'Ÿzú'¿û¿¥^øbº„íµ‹!Ðå³Ê1&ö0{Ó Ür�–ÌÙLyélÀK»±Æž?Ñ:‡y1 V+ä©ÌÅ™»ƒ~¾¸¸üjÉ÷Þ^2êYWíÊEôp{ìj úžû;C¼²ó€éÿéKþÿúçñI°Ì™±Á 3Í0Þà,Ñ®0`ÍÏM �¿Õ¥‘SagEÛi"à.Í•5r{ЯÛÙ ñõUllai›C·¹‰üW·óù™ÎäÞÁ>B^«×Áöȫ٧ÙvaŽGûð„u¥�±h!ç—@¹>iÖÄóä±�=ìl�‚U¸Œ W¢b (h å�Á{ž]yì¨2rMàU›Ú–u‚lÊ< B—`Nù¶c‡jGèÈs3�Ó™lD6{ïM‹Â6”œ?îoÏ �Bõ)Ï<÷_”ÌMþVûÒó3ßS*§�¯mTÂï� H˜£W…û{6Y…Fߊ¥¹š­ê �å7îkS§õ\Y¿ûÉ=Í–•ð9zg±vvcOh†Äó ¨#xh•ä�*ôÑN>Bþ¹¦H ­zvh»¶Š 5Ocm°™g ¾`åá*ö+•q™�˵fV<£ QÀ>Ô–4«~¿ˆýÏœóÊc[¸™™ÏYÇ÷ TÑ‘7ƒkŽÙKøá”+Ž__] –Å€†Ø‡Œ»Xà̇†Ú}–7w¯KÓl@n»n1 hÁ­ÐFá~Ùù.(캟ÀþnÐÂÑ!}êá9å—À¾WÊ“žúô¬¸U”%ð²÷Í‚:2û]°]ûRúG% æ¶�^#=bŸ¹ÞyLð?HŸ<¢m·£-ÃX´AavÖÀ mÆË?çá?å©ë­,+Àëž—÷øyX"ÐJ™ïÜ úSç(pVÊóÚ>32Ô 2n!ÀKùW*Ö£²Ã<•ûÖWÙoøO ÿœØÆk”³¼�Yw–…ôàQq;%uÔ ¶[z/�®'ž]|F�ÔƒÍ\Ð0úÁZ)-•].Ó¾ø�—ŽˆèaH¹ÆSãÛûh¢oR2s‘rƒ}áøèö˳«´jTê8ViÓi‘�K‚§öam Pß²ïf§„óç�¥b4ðNÁþ(Å=ÌRCç‹=æ Ý“‚ÎÁï˜ùÞÀ5o¼öJºóök(­f"®ÓÃv“~’ A@Õæ2¿›d[Úgref<ÕÙ¿›k ¡¸»¯5|÷vœs#‘þãØ$78ÚÍ6^[™ÇÙ} C Ã'ú6%¹UJ—è¯ÛÙ7×Ý»õf:zÒ·Cº£�RÓüdÔS:�6PÚqì‘iz·¾Dä:F g¦­ fƒ˜6qó�t퉤#Œ¨­í…©×€ JX§\ÖÜì=À7hL�è=²]ì[–Ç™z¸8‡SìÙsd�¢à·ÝϰÀ3 ø³†jžrs dv÷âbàü]^œ%º~:uS.·È|o¾ùítáê©Æº¼ýÚ7cÍ-¬óËLj!åp€LpîÂdýßÅiò²q°¡'ZÇ/›»Í%]]T, ;XcYgþ àΔšQÅ{8'4Œê=(þ8Äp®i„¡^Ĩ´óÁy� ž½99™æ1Ê�èà PÛ³„Övºƒƒ&Á`¥|0†ÌŽ=Îá3Ël_½pžõ€O1(1±‚¾ÓŒ}•(_3ðÚÈ T¦Oß›à:2(H{±Ÿý@ÖÎ.‘¸8ú*ëd?·w¦9*�¬-@{Œš(á oF)- /3?-WØBPCiŸlÖD0û-:&tznRú¿ð±@UŽòwîCû½…‡ƒj™2}�ÌÝà—Ìq†¡¿±Ï4d ì³=¶ ‘ÎçͶÌö?�NÖ9¢‘,`¤ãB£È×Á¡À˜Ùäa‡¼¯Az€a¦AÛ€Þrƒ–ÀÓ Ü Õ-Ë×–Ts XÝìwu„T›:áz� 31ô÷ðL( ì‹ÆcÑ¡!ÀÙ ì ËÒJ{{4:F�°fØs½P NÐ�å;u<4êøÑX楬°d©¯Ž�öR¥#2×r8ß[‘= 8l9á÷¢w¦÷ç{‚¯–2Ó©PØô¶Í”<„¡/†9?eŒ:']üt^ÒÍ€uƒxÌ\5hÍ€¢ &G»2¾Ô]¸—ãwÒP Ö²í®£òphx€¤‹s*ëùë¼}ÉÛ‘±ÉwtÐ ÊöªÝøî·6`—ÁÅüK–±J‘­žÑf+ª¿y?�·>Kg¡ é`Tþ÷‘™nvÝòâ<ç÷ gáPÌ?ñcøSgú–Ç|ß9ž¾¤³<çXäQéìy´f‰z»Ì.·Dm7kÜE‹A¯²È3=Ê£rf ÉÂ>;ØÃQɵE¾c kòŽ¿£ìý>û“ê3##Ãß� ÌBÇÃèg®Žë)gVê½pïÞ�Jâ Ñ>c4®×‰/ nd$ÚUìÉ{_øüçâ{æùç3åþžQfGoQøâÂùóéòW©v@0YâVô‰àÑÂYo 箞¨N`ž×åàÇUDrv¸Ï‹­‚dða”=æ{žsûœM»8_¥±ÀŠelñ¬H¢¾ºl�é©gŸJÿó§ÿ0@G€�þâ/¥‡y4À{¤ënƒ>Y›�»<Kœ©+o²ç,Ym0X¹‰’¶T?Òö €ˆqØj¥•ßÉ�ídïÉ«–æ7€ª°§ÚšQìýtîr½÷ÜcOÆœ¿ôQCÒ©ó¨ûÿ{ÿéß|rr2Î_ºë>÷Ç‘AlÅ˽êÔôsOè–(HИÃ}„%ÌZ4­£™¬YÖȳVpÅ HõX[ý“=­.R¥š�Ù�îÃ�Ç�ì#‚+98öÜG/ÑrºkKy¦XBþã\¥•Ëô½©xÆcïy2Ý› 0ƒ ãn*èìVž)—B²_ÝÚ#VÔ0;ÓÌMÔ hnV,zû¥Ì8üN‰gÛçÜŠ)L” �îøþÁ*`tXÅéoà˜ÁÊBƒó 4BJpŒðxH^٧‚²ÊgÐ;00˜&ïÝI+¦ŒéÑŸùÕRú¢Ò…�Y™]Ïö%{Ù±Ë/Y„ͨŒ À¾¾< -|rÚ{ïô¶5†Ù¹Ê\u#õùŠú›üÄdë1•­ ÞV'<6+\0I ø‚5äÞ‘¶¶_0{NþPÎ|íË_MUt»yþö5:6ò™Çt¬‚½~ß± J÷õ† RŽ·Pe‚BnFsx¡‘€?cu÷˜Á)»›é*˜×EÛ.ùËÊhê³ À¾ðÜŠ 0èe»ð‰ùÒ:;;³ÀDØ�÷.H±¯ý˜µ¯îå§QZ⨸ŸÍÎW—m" ÆýÛןUÛ1SÓ)íçåýÝGfØûjƒçr9‚s-ww›Ðù»8 F/\B>ΧñwnÄfu…Óu3U¦­�`kìÛbE�r³½SЕ9Á?ÚÞ[Øk…Ò­‰Þ!á¤?ª©xFùòÄs~/×Ú—?ÔAkÈ�j3<€íáï"x¾A…� ¤¿AŽÊû.ªtAÀÚð¢gÇ«ÊcÏ+}lLP'UûÄ—2¯ÐÐA4ž#Ê"÷\¦«!› —ü�•Íæ}6CVØNÅ »È|t¾æy®-às(‹dLxb ’�•Ø ºnÁ«‘õ[5¨Š¿ `Û�çz6ËSÍPiÅ3Ï+’x6iƒÙjMžSwkÖƒ}Ð|l33námxZ_Žë­¾YF× “½¾¯ÜÄßqžð¬òRz»æ¡ÛG ršq{?×$@Q|¹\VM}%“MØ€ÐVyz0÷3(iy!óÝêF ÏPþ›½ïßê?‚³Ú*~¿ÿÐk•R˜»Á ‰1q?ö�ë°ÌÅb+g¬L' 9½°L°,~Ͼà} L¶â�tÓTW_"ÙÂuPÿ.#ãlí±€î3LоA.¨›9iåzNiÿ*CÕ#}¶ëö$ﹿä;}búŸÝãÎÙ³-ø:XCùm7‘éèO`”Š(Ë�ƒöÒÛ…pÌÚq™�ÙÇš…þÌØñ q}Õ¯”#Ê{U•=Žßê1v~·Bž<)Àïs¤�YòžÒB]MlŽL~i¯o¢f’ìvüyØž[ø‹"´B÷g}³öÎcG¿']RO#Àw‘ ~÷©sò9¿«¿È–ÑïÅç~œ³'y_:HûlM¿+k<œž=)ýT›åG´þkŪé`iç�3ìW׎�‚¸=ßAׄþîeõJÍô†³'Õ�Ü7®oÐ>j£µˆ¶‘¾+ï)ªœÇ�T3  š�½Î(pF�3 œQàŒn ¨Li|LŒß‡ŽQÍ*-:âå3ŸÃr„s´�g/àÌ/À_f¾6ä0šìݦÓy—¬ªãýõÔ¢AÑÓ†!*p±Fÿlîkçšîp(…]ÃR骄‘—õ}% �*× �ÀWyÇJԳˡ-Èí^JÔ šµ�0º:ê{Û/a@Âá¨Ó@쀎�€‡‚%, ¥ÍçÂÉÒ5v‡‚†ŒŸYÝ@ÃSc}¨¯#ŒûÔ•åG Œ7 ÐF KïX>�ЊñØXÁ¹ƒÀYAWµ�ªMìÒrà(ö, 9/O”æ§QDÃå0¼¶4@5`uˆèÌÐ [ £_Là$+/Ž\` –(;�"ÏA›¼ce/é4Ùшe,f_Ø› 9ŒÂÌhÍ ·÷×yâþÓ(àÐp3»Ìòs:…¢ßcÕ˜07;Z‡€À×1×™mæœI rEcOg¦{/Œe>7@ ÂðžšM“­'€­Y¶Þaê¹ ¡2æ�}ºÏ^k!@Äu9:Dð¿J­/U°uÆXN[ÇK¾ROåzoÇ‘Y Ébì´P(ëÜ”ÒÈ”Íåé˜ þ”4?=óU;dTcÑ |È~48“µÈQúÌYzNG{Èx¸¡@Ö†x²£@9o{¨»´fÅkhëÜÞçA�lšŠN$è·Lv‰>8Á I³Ëj”¶µ|óíñ{éÊC�Goq.ûœÈu¾cô¸à¬-Z;¡»f)œÐÛ–ç¡¶ºh¢/] ÇXDÞ;à{4I‡†:Ûq07L|xWšªÜï¥m/VeÀ2m)…Ï•Xç*Õ,i· ÿ˜Å×ÜÆ\�ÛVØ©S%Ãr¦:î’í�x¸h�¬jP^AKÂ긳º„åCÍFÔɬãùž.Ñ^G‹V (10E¹¯sÐ³È fçè•nßN¦:éÏye&òÏndžöw5«m…rÜÒLÈŒHK˜»nV1±|áøk_N»£WS3çÇ*ó(.Q~y`zŽ1UÒÍwï¤ÉÛo§Ë燑Ÿuh‡Ã˜=¶º8•&îMѯþaC¨ì¾ ð>ÏyJð>Ž¡iž†9à3à˜ŸA6¾÷¬s¿¯Ì‚䆨 Mì3J$¶gÁw4˜Ác¦ëi)ù*Xöñ¹ÛÑÚÎÞÆY‰Ìt|§´Œsœ{K/egÈÆ`–g朆Ð Z2k,�¨ßd `-¶€ŽÌ&²õ•ò‡–Qæ,3£X~»Ïu�^=nO˰zß}³:ç=oÔiÔÍ”�î=¨fêxö½á‹W" È}ÀQ|* i%†î«“MPØ,T÷Gå¹urzO[<„“‘ï¹å2%X¹·ã\¥ÊB+{RÀq�  eG –k¯Xuˆc•!�}ò�ÎAéb¶jgg™ciüÝRèè·‡¬ëÀ4ài2iÄ| '=´Ö)àcÉü2ç½r\PØì{³Î|†@­aZþ|hh„íWŒŒ6þÖoÿv:áRJcç/Athž§Cø›_ÿjzëÍ7SÿÀP¬•ößßý�ÿ.2‘íñ~ƒÏF»ÔS b¬SÍh>õ`ªXQG0|=u€ûGiò.Õ~xæÐ0é€‡ÒÆ=y—Š /~åOÐ7r´A– Èóž™ÏÙf‹s"œø€¹¶&R×·Žôv8ƒÜå2YEE Ò½eU“vZ7ÌL¢S°—ÙskÒ>vÍ?ð3?›žzÿ³±·^øìgh«tÝ �‚s×à€Oÿ³šžþÀsÁïV0�U½Ï@7 Ê�ìaÊÎæ3Àd‚<`–@þôwÝf›ªKe*˜°î«2aìöí"@‰U’Ž$âìÈB–¨gõ÷De+,AçD°J_ú›ë?S¸`™µnrï)¤±²I}ÒyúrÏúOÁ½ïøÌŒ,UÆ È ‚ÉêEkØêf–WÊÝÒ P)cNR®mð æYád =­�À3AUhÖÑM”§‚�îõE÷¢÷~ò}O§ÿæü{ `†q|èc¿öŽ�÷à• —. ²üsìaæà>ífïv3nù앹»1'õMƒCkž·8àD©fm)ÏO3}»�›‚ò'èÚjVd*¢ûÈ®«Çƒ|#Èc¥³rËØ5ÒQ“ð×¼†ŸhÏ1_ÊLÏ�,8à9s ìyNº, ´ß°Ú•{ÖªKžW& iWʯî3Ø)žÏ©Î\ÕÊãH >S–…o š «Ië%ªèðm¹n�S�À#2Á½¿ºÁ÷y o ¾;{Û© j›%ƒ$}®ïK+ÙxéZ:ñÌמå, V#ý±C¶À/îbÛ<}ÊiÿeAï l•Ëßoaû(׎ð™H/y\Òëð~`mÕ]Žv³}j ¬^t;Ûnh—¢0Èhí6¶ú‚tǦƒg]¯9„o´ë­< l2óz…Ï f“q|¦®ã‡Gy.—�¥�ïû·ë$ ¥ƒ|ê¸=Gý\>2x(Üþ-Ͷ¶v9S¨p‚¼ÎÎ ü?œ¯’×–<Úßí5â‘s®·ë·ÎùÍMâ^ò$Cò‘!û°¾9—2¿ˆcWªa�¾•(/ϵ³ëïì�ÀonëA¥Ï3'¤]é{Ò'çwÙgîý>Ï@†�¿Ü›ÂA?÷]ƒ ä9Áw÷r²q‰`¸ `+†ŸÑ'‡½TÒvןõ1FžÎ/žkíK\g ‚ûp« ²Äg�…þ.+¨ÿ¨ä¸µ9œ[ƒôâ^ú~ÐÝýì:˜H`¼óRÃQ†¹FÛèxî±c|Mi¸Ã½§Uý¼¯ú"·‹±è#ÛÄZ!@?³DyÿìuF�3 œQàŒgøQ)à�ãÁè¡¿0?C²¯…’<84=˺{pì Q;0È!t„a6𮀠´–‹|Òàñ^g¯3 ü$) Â)ÛY*Mþóo_§Joð—ÿ¾�7½MJåR£ œÆ(Z+8Y¢7nf”èðÕ“¿u´âú׉²�AZ$3K#j]'Žû“êô¾:ä5ˆTδçÙ~æ}uÔìâhÔèw,Q^g—Ž#(³¬’N³§e g'ÞMe6X�D ß‹,¥{·oD¶ŠÙu6§uJê°Êilà¨,‘N5–]²^NìÁÀµ/˜Í÷ŽÓpbØÓº  D–i”;1«½åÙǯ¯¤ó?…EX$¸ 7€){§oИ‘¹µ9 ÈA†Å>Õ^‰ i³ayø.íû[�d+ðñÕP~Ãy]uÌkç)ï%¤1šÌt°lvpÀHr3-Q~ rÀ– Ôú2½|ÉÈfUþ-!ær ÞÙO]§½%¦´w˜+´`Öçùe ¾p~ò“Ušíâ„lî´5ÎnJã@¯Fxùf~ž`¸Vgw¸Ï|¢ÑÏb,ÁÐ>€84†žÒO'š½O�1¦Œtב·…“)Ÿ€Â5xFg�º–º%›1,±²swQnJ^b~ Tüuô,íŒa¡ÃÙÏ2g.s�Çk8ÂÚÚqë&×>Ùfà±¼´€óþÀ@-bt7smúün¶ŠKřͼnùKÆlÉp×Òèýe27 ŒÓlôN×ÄDG„öI^�`£hZî“©¾��md±sêìjNuÊÒº§t,ƒö²¬YPÏ=E7 ¢8&ÀÀ€‹p¼º…ùÄà³U¢wsÈt̳X�šN+«”©ƒOÝ :N Jì)�®u n3ƒìg®¡r ŒA~‡.:Ìí÷Y!(&OÙj¢%øö>Y …ðn¥¹'mÏNp�ÆŸ£ÒÙÐL0…ÐfäÌj•"¬“F£ØŽEY‘Ð|Çù›Õ‰‹’²fd{L`¹ÚFø«‘¬}�T³Y›Èvnjïc¿À\pG0Ž¡È¨Ö!±_ï @³ŠƒO0ØòŸÍÄ‚lf_ë\6û·ÚéD;Ø¡! [æ{F`ïÃßUAà2e˜‘SM-ìÅ�)ÆèJäz€ÆÈ†*ýÂØ×G€ïÛTµðzåçÎê\÷y2¹›É×Þc¯»‡ðŽr×¹‡yo> ²éŠ€�” OçÉÀö½Î®¾˜_ž9ðÆ)é"?3®ËøN§¸/é ìKl†·Á2êS‚îEÁŠf«l°¿½VÞÓA­ƒ7@èN}$­à‚`ŽJ�çC¼£Q‚˜óW>(á<´ÿ­àÒ•‡K3EKoyB]Sb  nCGŸa ¡·¯¿ž¾ò¥Ï3²¹Ÿ~6²VéW~5Ýz÷Ýt—¬â ºf³,Õ¥á±aä’û]=ÌgÖ  1)ÎWÎZŸ!ÏG ›GGèeØ-.ðéš”<;qØVâ³3³„¼#£T]¦£:�EÙÑ�¿?ãkéé¹Û×?{ ëÆë¯P®}˜ìn2àý;·nòø\ú¿÷OÓßÿ‡ÿ(]eq–�k�ý¢¥Í­Šl"P6/àIy`÷jžuP2Ãvh >†ÏÖ×Þ`Ù³ŒKPÎy;ÏßӡΗB´í�rjy…2èì‘j ºëåÞr/¹¯¾óÍ—·¤¿|<7= ßï¦ï|ëEöèt\ë{ÝÀYþ§ÿ À4•B¨Ò;0D Yw\oðÀ×¾ô%‚-;�ÙÈ/Î’"ç„ÑÁ f¶³:\”­f­¬"g†µçž™ý®Ÿ{Ø «æ„\€Æ±ÖX^_‡µà€÷1kÿÍW_Iã·Þ¥ÅR–¾ßÑÅk¿˜}>qç¼µ�®“¡NI~~¿úècixôçxVV@W¾?6äž@Tžó³ƒyZ%ËÌÿy² d;à(ô\€¡¸Îu¾’žÈÇiéYuÜ£#S–çY &v=ß™¹;ÿÞŠ{_÷@òðÃ�FÀ€÷1PÉ*ã7ßAníR­ë.Á$o„¼ùå�ÿkÍfî³ì¡›7hùýî�Û5t­··ØˆÛØ�]o}{�óW0Ú@LËþט¯AÕ®õÁç=Y‚´Ü9áó ÁofCkçl"= ä¹ —¯¥¿ü¥4O›¥i?nË©wØ=26/68þÆ«¯Â_TNïuÿˆxf¬175•fn½ƒ�Ô€M“UTSÎz“K ¿¹úÑ9NæiÔ°ƒ~�nÉý¬F ,êh§Í ´ ›1 ß´r>yþXUÂlÁ<•…?tÔß,ík@õZy‰½4:ŒGþVŽŠXœ£CÃïKõדע‚–{â#¿ø—¢¢ˆ2Ľì?_þŒs™ß=+ °>ŸÐ�� Nö(ò–½©LuNU您�sÃà#Kû÷pö¨³(¯Ú¡ƒ¼äœ`´xŽö”{¡z+S´ÇZè‰,˜o¹ã#Öèégž¹÷ÿüÑg¨èÓOPÒyÆ'géã>?Ñÿd$ŠGZª~� ò=lˆÎ.ý‡R¥¬Ñ*MÒ‡Ï @•GäGýÛê¤T1¼uÊYu²šÁ¼1:ØÃÙÀ ¨Ø„Ý!ÍóTŸó&Ò<ÓE<[X!@;8 ºó;tu¯W1ü\½<­ºZ¨ÖQ&P|a‰ýËuîCƒäTÁ ´óL©RÕIàÍêµ€ó&{ŠcËóDîÂúûz'©¯íjGò™v’Á*ž—®q€˜ŒÕ¿åÛQyv†-Ͱ SÕM´3R› M±oÕ�¢¯´zó Þâ½òÅ D3†msqˆÞŸ-+k³ Ï*[¯D°g¬´P6Ç2±Ÿž'ÇìÏcu1e¬z¶KkýE.XÆc…2>yÙû¨ï©« HZeD9ÃXÆÅ|‚¹��­ŽÍý¨ß—üî÷Z°%PÌ›u÷÷ØÏüÔ_áþ“NŽ%6ùŽïí ÙÍÜGý̬imsÇi@»vuïù²r…×j£Ÿ§�x�£_ÁKwç$Gy~Œþ2Ö-²Ä™¸ûßÀ¯Îvúƒ´vÝüÜ@]×±È5!' •ë''z¶{�³7p„�ƒÐiÕ‡´= ‘¯œCüg5º÷®BKÇàzøOŸ…û‡[ó éHµÖ‚3Jþïd‰.®k\À=Ûüó={3ÇØÃ#ÀÑg+Wö¬àÁ÷�ÓÒ\^–'{üäyò•sp�8u6ׯ³Ü™¹¶~ ¾íMÜ#îI÷^$ð™1ay‹I”¶9ó¹Vlà…·¨ ߈<ßÃ�x¢�ÚP-ÏD€'÷�þ< tZiYþ|¹Äüs`¾2®ÁŠê¡e‚7¤¡ë"ÍõIâ�wý~¬¨«'»¿%¼>>>"P>4:¡Ṫ®³Ç5&—x½ßÍñÏ÷M@Ò>>Ðaò³×Î(pF�3 üèð`Öàð�œœœ§ª=¤»pÌú™€œ±Úëo|ÇÂ]�$ÛD›©~�{ü)!”º³×~’Ш÷¥C5€»û<¨2éëôóøƒÿ‡Âûÿ ŒfY a˜£ ª”ÍÍ܆÷éÁˆ3M43ÚQäî+…òzVŠ G‡Y•=ý ìûàéLÓ u(¢ *¥:³ÝK*¶îo*à:ª¼F¥6@=ŒZYÉTú}aœ[~[ðB@S%U h�¨ùÎþs©ŸLO#cðW—)½ËxTŽ;ØÇµ¶n²J'Â!¤sÐç…!×L„%’&,·îtx/S"ÝìÌfæÕÑ7ÙêÒ@ƒwuvg`­è¡·2C©ööp8nSÚ\pS›!”Ù0š!ç`ÛÆbó6Ø@Ç—Q«ëDðìÐï”hÖNÊïîïÙß pŽfb©èkDª ›É–ÙUk'»á˜yTùng‡¥àvÈäp ™á#èЂRŽbÍ,e­¡¶¾‰aª1&X+kÔø¯Ñkª ²Â+(Øø€6qØAG_QRŠ5:Ö9wŒØÄ ÑF¯4 QK}ÅX™¿í-0bÎ~oyq™Œû¶T jYeã³@J'ò �€ ON–¬–w'î¥>Êéu‘Mnße‚A+ô™4ãjgg‘õÄ_À¸2 Çûà(ÚÅÙ¨�UÄÑ\c]‹ÌK§Å±ßÙ8ÎQ¾¶«pÒW݈îUÖPÞlÃQÔÁ~À9€�fÉãppƒ²Õ«‰+�Çao)Ê}ú'ŸT=/ZSÿp-½þí¯Äzk<ÏÏ/‘=G_P€;ÈĺVpÌà,£·›÷vŸØ{Ñ@�b é¾ØBÌ7Œ Œó#™aaXûA…Æ6 -@þMûØ™)®!Êþ‘É�ÎÜT]îÆìül5às‹œgq–>Pv­t‘Ö«dðS|ºcÔÁÃÛD.Ñû]`i›žÐÅfÚ4¼A¿ql7‚5è/_¶¯+= ÕêÚë±F„c(â0‰,ècÆ_]ÞÙ;˜úGŒŒ]3ññÜG°É ,¦aVq­Uö7èYÏ[b[àвh-”Ü,Ï™±Eö´ŽyÌ} ¡¯1ÊbóV7èH¹yä…Yef™QSiÕ1C°%É• G8™,±\Æ©ÕÄýsœ«U10~qÌèˆÏá0³OjžÌÔ ü´<¯�Ê¥'¬Io ´„.!7)#c\'³�Ö Í884ÄÛú×ÒòôÍp6T;È„ 7úÌ»ðDçó¼rÆ=áz¹žÛ€ööÌ®v A¡,]g…Á 'dš îWù‰WkQì Å;26Œtƒ¸WÈ n|‚MÇø6k °¡3Ã=ÙhÆ8†¶}Æ NP~¹÷f©ÊQ†ÿÚè­[¤Ø&à ‚coù¹ÉøN g‘Ï[ h&Ë/×YËöLì)Ý9x 9w�–æ§X]œš½C8ü¶R�lú�‹�¦Ù™)xô ²}«|_ðågEGï¹ÈÌ×Q½0s/γ¼ë¤¬ÑyLεýÍ*äØ\YL[+ó* #s(£|ïíào3å x±?„Ëø2h}ÌyCðk+m- /ß1@Î ªQ°÷²²Ô”�E·ì­ °sç ÁS€&2[ù¦cDG¡ò]ùmiDêv…£ ÚzmdÀ¹þþÎÏÓ—´×™%ßú�g÷US\#Ÿ™}ªÌBnr�€—ÿÆvðóv~—�6éamö]öÜûºF<(;×½¿¼e&˜²Ö{:�ÛVj4/†�ß| Ç/ßá\.ÃÇ:ûì… {ȽìyÝJµ[1Ø?ØÞ‡®¿€¥2TÂÀ |:±7ФO–…Á�£®Á÷Ô ÐAxLðÙ&`F™}%èf¨÷Úô²G€)ŒÕ²¼©±×jè{ÈhùÂ3Pž‘F‚r_Ô½Ô ZXkŸïç:Ï”…ÚHdà.÷ï!»�Ûgc绞7:/¢ØØì0�r­ŽƒØ—ŒoŽ~�è×éè3ÌRvM-Á=8DÀËçó¨·eàõéÚÿ4~:GA.³ôïÜz;tm)ü\#.ažè‘œ1}]¡OHc�4yÁ¬HõC÷®™Jò� öUŸ˜7s7ëkö3|¬U3ëbÏlõÏ ÚÏøƒ? dËö…ÎL´øSÇ÷AŸûÌï“Åù6ú@rÆàúðG£GúÿóŸ¼ÃÞU®+G¶²eÉá!m8ßÝŸö”uoëœf¸ün` r�u_f]í‚èäy:i©6Ð7�†¯>k]@ž,°Æ]Rf%;Ö€ +Éxvy>”qXÛn̽ek�E‚»_~é«Á“f‚Zòú[üý‡€çÏ?õp<}Òž›îÁ9*&©_5 —¨_Xùdmqú,Jp£gKy+�{nû ÄO÷±D�€Sä�:´{Àsº pÞ ˜g²�À«ud¥¥Å ºU®mÐ:ç Ÿû¿Ð[Ò…‹—cMgh—!�°‡NÛ€~åþèê…†�»G»düßN-R]@IDAT¯}ç é`ç=CªgÐ2x™ˆË9¦Ý^bÕ 1#\}Úý$(±Îó-ë^eè·Ü»ò˽)HSôæÜZo�lU4 ΗpÄC#{�›n6ó§÷¤yæ¶½>EE*úÚ3–Kïy>2Ï¿üùO‡ŒB3 —–w¾ùZú¥ÿèo¤ü…�(· ­/=ø´E>«ò†ën°P 4´�µe¥ 4™ž¤�í�,^¦º‘Á-­´¹ bPK« À_Ä7#è³N¥�1õ°už¿Á ï}æ™dFóüþ?¦ÂÌTðpàõîÄ�¨T!hÓÊ=¶8›ìm-m´Q:ÈíÏ­þ`&¼cùìüŸØA– oHcc£À¦³ßRóQ=�`·Ñó—ã<Ÿ�ž¼ïüG÷b-¤½úˆzéül L'ƒ(»¥‹úo ½óx]„ït¶µ¥o¾ôµ´‚/R¥Ö« 5»ƒµv޳Ów plŠ ’Iª½úí—ÒãO=“>ö+¿{ØàÖ~LfÉ>Ân°¤¼g¨ü(¯ºF÷ƒà¾Fù y^d¼Ê*e�Èf?z½@ŒÀSÙâ>”�üײníåOu!c._}$ �Ž¥×^ùf€û¿ü‰¿’>ùë¿‘FFÆâûÚ)öèî ׿V7pJ+i¨¼�- -üÝ›ìÿ /ƾÏÊ…ã³B97c•;2ïï6(ýt@9_€/Pýdfòkz/æf@³ ‚]®Ç¬¯ö»¥øÝ'ÊAíó}�PÖï£ûÕôô³ÏØp+7Î�ŠñA~2éŸÂëûk�Ç&2ÏsEÛWÞl$À¾‚®lŸae–á/ãÅX³wß~›`‚U�§ dà±zTT¥@æµ±Güž%Â;êV¾Áhc+�´7óغÓ®“úŒÏeQƒ·ìežç0Øç™¾ï¹~'0;5½†å§�YP.xšÉŽ-¹^~¶r…z•ß³Ú”mårvÇÅ1¥ê~¾ƒÇjÆgeh.4œÒ€5s�Uùû—¿Õ "Û—ïÊî F²Ë÷µ—œo£‡£ÃHGþi‹K‡ì•ÑS™¡mÉø©n(í ´ÇAkº�åÒÚ{jÇò]UIØÓ5Ò—H }•¡EÏJÎcÁ|ƒÆõO(C>¡ÏÆxOiË÷­‘�Ñþ…{©KïFîåçúëÏSùw™'?i·Gð0Œ©�e {¿o@ˆA>ßóvŸD"˜{‡¿=Sä3Ø�ï+§ ˆÌÎZ}ÄÞâÙ>_~rnÊQõ§ØUÚ±µ3p]Ÿ…k¯/O9íýÕ«x`ð˜|+Ý`:ÎH¤®s‚Îú¸ ó1PÌuÍÚò¸à© ß‹¶а‰Š'ê4Ïcª¹Õhe§‹¦Ddw‘ö Úß®�ç�/÷¬÷—Ö$Þå?ÚI^b«Âú…•*Œ Ž`\ŒÇÊ$ø^¼�{Rþ³Š”¯ü÷@ònìõ‰-ÒG±%ÒqÑý'GXeƒ �œoÍœ™ù’:H˜hä Õ.U÷á’øžØFøeã gÿùwš²™{åìuF�3 œQàG¥€Š�–‡°¥~-㧃Ũm[•� Ë3wÈ©�¨¤õâäX¥$´tl?êCÏ®;£À�‘§†zÖ(|*˜Ù .F”8øüôýÓ³RþVÙRù«ì™}¾47ŽQ=OɾǨ®ÐÍm2ÇzV~NƒHC ƒR%ûBåÙ€ËCšñc¶U<”ëüT©�Ìžÿ§Î|îªÒïß~æËqj\9òmÊë”Ô¸Šç°7-#ÖI)D3Å-G•c…=#á°Ÿ#£ÈŒK/mmfåö¤‹ý¹6×(×®šŠÂ©3èˆ DàJl+Ž=³8TÆ#sËžJ–Wñ²hgy=Aè–¾¡pÊš ¢ÑÛÖ3„ÜÀ°F‰µ'í–ãÆi«’* £q’e¾Ævt‘ý˜õе¬²òÆÞYù£"ÏÇ€ç:ìÁeÂØ± £Yå:È¥U[YÍ92â0%öˆJ�R¨»8õ4ö05Úk8õÖç�ÚÕHöäžU,Ÿ·­á‹a´}t{ ›¹ìÚfåê5ðí¡J7 ÊÐ×�u˜f†®¾_ Él5Käkì0Æ2r�¬i  ¾Göxd`±Æ{K€Ò|R¡œ§N3�ù|#§á¹ð²�,Õ‘ÃÌ[ÃÕ(r&¸À¸Fó2mô|³×ý–Y tð½ó–?ŒlÖf’Ÿ,¿Wb>ÿÞ3‡‘Y¬æ9òD9[Bc̈tùÕŒ_mè¼Óê‰èf |h}Œ³Uc^z›‘9È �ö‘Þ¥²uà5䞥·à[Qêl€ÌŒ©~Êì®P¡³ÂveÆn¶¬€‡Î»f²ô¥g…³Hgu‰ª:ät¤h4ñ°2Àù t1 EÃË é2 «‘jOriÀ­Ã± @ )È4°-£¢A…¯:+qT(QX1²ùSGð°Àµý��ªÎSBÞ’µÜ‰2a8û-»�S>OF‚ r‘5ÕÝa=Øê£‚Á *ý7×qòv¤½ù{±·ÜGÛò°ÙíÍôíîè§,6ŽO{b Ä-M¿ËLc-a²¾›ê]±g�7Xèà8s·Ñj½ìÄ]ÃÓ5L™pþö÷fí} àŸ]‹ˆ÷ØG–Íx sçõÚÂ]°œØíåöá¸ngr �Rî�)^˜µj…²Åý°±ˆSW†@vüà¸J­ÊDV˜¶Ïþ¯õ^Èä¡<+Hˆ¼9!ãÛl°–šÁ8ç– *XòÝ>›Õ¶ø‹l4…òW°C‡Y' Î³c÷|£AÇ©ûÏ~îËsŽd#Áßr;Zr|ïL€v:|ÙWÕ½äËsÃÈ?Ë‘ánÖžrÊêÝ£ìaø•¹9ÿžáË”Â'0€µíÑBæABÍìs\ ì[zôÁà½ÃÒëx„±­§Å™qäg- QŽÝûwö�¦ |7™ÙÊá»o¿e_åÓ:™üWßóþ˜t´�]¾ŽÐ¯}zŒA7Ö€³èúw¿�[í€ç³33iwmðm-ΓÆ-�çÊÂ}d�ý–!(ûƒZð{�ñ®êláµ×c� ö\?áù%øÞ{"šc_ ø¯!·ªf1V{ãôàX­r cGžô“–üÚêô²ª:%ëå¹m–|îØ’�…FV¾ý.+- j4;5ΕÊ$žá>PNB[ÁxÏWÏ|1PåOKܪ'xþY~± °Èv(ë·Þ¾ó}ÝBòw[×`<Ëà ƒ5j=£égÀ‡ç¬U ”ñ¾¤ƒ€ˆaò|+Á€ëË€%ÐYÝÂò¢:ø,Iëø”7‚aÒÜõ Ç$ß÷ÚX+~*{=›–¢ú[¶"¬XW@÷p~§Y\ž¹Ý”Ð6ãÑ{øEâŒqÍ Vñìõ3w›²+®ƒO²s?_äs{ûOGžòÏ×*÷U÷2Û©KÀ�÷ 3ã5œ¿ŒÇ±¬±›4 ú©½8ˆ-îÓ¹™i\°£;ÍΓÅJV¨gc—×,·;5y7Æ­^h›Ë,;ççeñ„ ö°àˆkåynPƒ 0³[ðMç÷ÀÀ9*\ 0Þ¬ýÇŸxoЬ� >œ’¯}~<À›èÇm@ùÞ`ú­·_Oÿ÷3tã¯åÓÔÝñîZ¡ù&úï2´~çæ;Œ¥Âú¬¥W^þ6eÝ;§ÆxÀ]B½Ï=²É|–—im�.¥~hå%剥®û¨€öÀµG .š‹lrmÎU€gƒ†" áê¢4+çÆ5²ê¯=òúwO•-×®\ w½-½>~ûVºøô£è YŸ\å6B1d")KQ½ÅŠ<å8[6:¶šÚØ lÛàs3­×–â|q¿ "«µS¹ {àÖø8¼Fycuè&ÿ*ÿº{6Ùðw:iw;Îô!›õ¥…4Îw-·šolJ›è3V/9&HÏÊL2´ •‚UäN繇ÒI?AtèKtÀ®þ‘ø]#€¨ˆ>Z'K¸�ت EJõ*ûÖÐKv”ƒÅZÌÝHõQé!�µ;*ŒËñ¹g¤³A4V}ÒN²O»àLÕ°¯l+3qëõÔÒužÀ·Ötð\›`jjŠý�„,QEK½·�Ôaû{8ݼþ*4^J�<ÉyÖ?Ä=‹Ì™‡? «£ ŽŒ]ŒÀ^³ÞkÖÊ2�™{·‚×Û:«ôZé`; —ºû†RïàPÜ‚ÿêïMÌA�xúîí˜ëÈ¥‡BŽ|ñ³¿O°z ú÷Üôxðû2mIÊØ5¾,Ánµ–‰ñ;=,ş/~ö÷"¸vøÒÃq/1N œ]ÈËæ ´ÚÂÅñ�ô}÷_€ìC¯ægî27*7@ï}*Ó¨7í"7Ð} ¢ê�W"(™nHT»âø4е�y®¡·©7kZULÀÃÀï=ö¼v !WNßa�ʼ7 °_ ÙŠØM#/¥5+÷|EÛBY ­k %ˆÛÙÓYå"ìxÎju®5*8fXNŽ‘è ¶ÊSúY~*�J+üffwœ½Ð%²GÙ@êJîG«]Àráʃ‘en……›oÝ@E±ß< N͵E9og§&Cµì ÌÒôujÛ»×´Í´o®>ühÈPÏ,Ï Ë¯vwq.iÇiÓ*SxL»„ â,[œ €vƒ¶¹cÌlj†÷˜›¼î^²ïzk¬Îd‹ƒí ~ñY5.\¹ç›vÇOóåܲ/cn…� Ê0 ÉÖù#å=ÌÀù±É¾ŽYÖö«_ú“83û©*¢�cŽ@(ƒØ´ á#˜—ó�ý6Oä“g} ûÕÊqD„žvúž²-Õ¹o–Éžé‚ÊÇÐW@ѵ¬µÀ‡€u­ôT¯ìUÊ=�HÔ!!`‹öȾzw�ê½ÈÁCÊd7¥~‰£Š6©cr¾Ú›µ 7‡NdéëmøÕ^Ð=Ý肬©z�­ Ì6(T€ÔsÕ€÷ÌÃ->ôGíƒÔÂw'vú†üæ3µíµÕº•Ѿ¹K@b¶ŸÐ‰ø[>RçtìY!$þBÆVãsÏY&z‹ú’-"Zñ1X #2°‘�²!¿¡Þ¤ÌP�’Wõ!…6 ¬^áóò‚†|†n‡cÌxŸË³Êü@oQ³|Zâ h <{¿Cª÷ù·YØèÑÂpßEÉ|~º?ôSYÌ{ZA¥>Þ·uš¶h€¸z¸ºž€±à±¼§ç¹ÞÐHPóà‘�ÐóÇ3à h5GÞç»¶RqͽÆ1i¿fP‹Á ñ7ïkïkg«Óºn–Ù�5¡…*¥ v¥>6Å™hpŽôÊD<¥³ŸÉŸŽÓ^à‡ÌÓí×$Ê’ëd`<Û.¨åÙ(ÿËSVÜÉ‚$œ�÷ O:ÿJT ²rˆ¼áøõ¯««x«ý?\ãa�tÖÒñ:&¶‹Ìõy1 ¾ë÷]yÏ u ŸQÈþûL¾ˆ~÷®52ܳþ€ùæY�ðmr&K]å­¾;Ïh«H9–TbŸ4S¢³N¥BØOà1~…¨ä'ïð<ß³…ŸÏqŽÚ"úà j÷|p�IG÷¢àþJˆ ÍøžÁôíqé?s u䀶³´t7 T‚Ÿ\íTí+ïW5ÈßZlí†uìÜh'ÁÞY[DGCî  GÂkj€ƒüÕ‚¤ó>{ý;NöÒÙëŒg8£À�L &�Y:L<Ž=€,ßgY+V j•$3<”úúÂ�ñÀD×Ðóp×!tjÄüÈ8»ðŒ?& È{ò§J÷éK'�/� ïçÍïGD#S¶M>Ö�PÔaV(žÃ$[§øi&Ó)Ðí}ÂØà§Ê›}­Ý?5aL±‡NKnj0 z;‚Ph›ç´{ÅÞ0 ¹Æ‚ ì»È"pŸ¡XrûØsîQKÚÝzûÍ(yÛÓÛ³˜ÐM9Ó¡p@ Œ˜=®! PÖÍ5:­Íì3Â×,93õ*8Z¡ÉÁ}+QzY�ÀÜÁ©×,ÈŒò+hm´Ž•}û¤¶÷� lo‧ï9à`…^ÂË”»ÔñoiKKƒ5–ù>Šq¹™~që™ó®zZ‚ôð ² È¤Ûbì­~‘#…»(ò€%ú7  .-Î@S”gœ7*îVöÔ£ü)“…ê0èPÖÃÃÐÐÔ¨8ÂÐÝð¶T”™³–»,@ËF�'€ !žfUÙÛÏ\�®[�2¸{ŒM0©™ <רŠó­­ÿ|Zž¼È6…7¢Ò«ØÔL©Hj‚Òýž•F)'ãy?J_È-¨D CD+×ãÀKëFʲ¸°i³2ÇT”æ§}ùZÈžÑqéúhÄ%o¶+xŠ?ÿ!ú¶·«†c§ô±¿YV%cƒ>2‡¤ç)™Ž–éÈ#Ð#¦Óª »†òæjÖœ©†!htº€8‹ÊðÂÉ%ÇjZÂDÂ8³t¯`�ï¯cð”z/àL}øx¬Ê}£÷䨅‹i�ýÑH©çî‘ÒÈÕ÷’M»žÆp>äYw+3ðhŒu*<àÀÃÒ Ãæh{It&µ’A:3q+Ý~ã%žÅw¸Vg‚�^°&F¤U ¶q¾s}÷àç%à“ë.Ïç1¾šÈ&>áÚÆ¢¥Ç8×dÊi:€Ö �ìÖQ¸·Ç·hc`Åö:@šÙ¯_ÍЮR#€k[š(»Ï¾+Âû®a3àn#üi–²ÎÎ úŠkÈši{¸µ n _Å 4˜ï¾À°™Õ�è|lÈ–ŸÍDl`϶t²ß)[¾KË÷°2Í’î[¼×F¦ò!Æ ´ÓHT¾Ä>`_5 js}€YPÀ}Lçï —xù�öÌ(=¤„û@�ßà ¶{§�oâXÀ`V'h„— -ÌZòaÌq�=îšèè·zEþ-RBýš(M2í+nowß3ƒÝ©:n3«wqÒx† ¹Fú‡RžVÀåÁ~ú¿žPÎNÁb¥b÷pÐGb‰zËym¹sEæ›-äÍTtÞÒGÇ¿Ni’9wt–0—8ØØôžõ>:i¯Õ?,ïkok�{�BF°Ë:�x#žãÙ £ÎLâîÑ ÚÈ´ ±gF.WO�>û‘pÈøìcè >%p*0;víIÀø iúÎ 2Æ®¤�Ë�«žæ Û¸ÏòNgœ:²<+t"™å¸‹Ìö¬Ú^ÆùÉ¿"ãZCF”Ь t#Ÿ�3�y«H²'q´à\+ TRF_LJüfF©:¢Î}„yâ�FþX¦ÒsS‡t{ïÀý‹¡µë:c3 ÎóWúÉuÒÎ’þ¨»î8lü̵ۅ7*”´¯”QC¾»f:)³~陜öùQΜñïÀ9ÇÖ®þT¦ªˆ`9®JÆV -t¼ÞGàA.ò¹à“c÷uDR¾ào÷�/ÏírÐ’£,"×ezp|È\<Ìö›‚×[´+h¥Å‚ûÖ½®,±ÒÛ3îíµ:®ü§lÒѵËt4Åžâ}Á ÷Q@¨ƒà434ª´-ð~f¢ªª7”h! ,a`ïàÒD‰}Î&Ìê n±†Q½&ˆž9¼*œk–£Žà'>/°·”=Î׬ÿ*´Õ‰é³\³;ÜC­ð¼g\‰µñý–63\¡ŸuP=à [{^ß|ë5Ú#€«=qNKS_mP:@­h¡<ò ¤‰�¡…ë4aì^gf©ó(Н›ýÉXÕG,{íÞh6kº™ån€—™ñ~ßà¿&œ…ÌóÜ5äkæÄw ôMGÊxÉ�vªÆrÿÉXާΈbßh{DÛ�V»KÙµŽ CÔ Ç,3Ý@ @%×Ùe qùÒsÚ` ×Ý^Ôòß* ®À� ØÊrÖR�Yù°e/êþ�!2´çá+ªÍ�ý¥TYKiåý¥¥kbÀBwwWšçÚRå êÇÓó?û¡5­°Éš»–o¼úÝ´°¶ÙÁ,lZÝ % <À.§úH)õR@z àÆN�åZYõœÛëdá LÛƒ¼ƒ cuY3Á•ÑêV{œ·:>[ê€+è¯-èdeøAzy¯Släü•ð>—ä”óÎÅ=¥Žä9?8<šÞÿÁ§{·n¤›ï\gü¶Ê86ogí,Ô%Î�‹ÒSš@¿¥ù…pb x('up«›¯Ñ€­ðMF?´¶<{€p•:½íwìÛÀÚ¨= <휣¾g›>d‚tˆJü  �ýÅ/‘ŸË¡§Ý¹}‹5ò™TÀA4 ÓÜC‡ö<åouÎ}t<Á)�ðdÜs?÷ó¡½ôåb”`…&[t8ËÔ;ÆVä”Ã^$Í:û†ØkKè:è)ŒÉª"®�ü§~¾Î”=ÝÍOMÞS©Œ .i`ùÑžJ“7)éJÅ)ªQµwD`…|Ô¯¶s ¹2;õwƘ‹dE?—ž|æ¹àuù±)'©"¸ ¦t«oî2f³… dÈ®ÙÊáž4n…Þž‡§:ÆõYŠŒ¨|Uæ(ÛºðU,Ùξ4ó¾‹àžNä¬U´eÌ5E{Æ “¶pî·Ôò< ù±¸´Œ¼£gž²·§�`ä꽩»¬«x€ãÓ©O@»•ºz# Áñ ~˜œ`50é“cœþÈÑ}ìu O¶©*3‘ÖÏ�fX•‚ŒnÀ…€OƒC6Éhì#àâ©gžM/óëé»/¿ˆ�g_köv[Wêã:ƒl¬ú±‰�$XPÐ,ø¨þ5O�îh /Ã�çF·nöªmZ Q‡—W;Ñ¿–™ï:[íb\¸ü`€*‹ÜCÛI IÞâGèKÎñðÈŠ\ü�̸QÖ»¶Êe«ÛØ/Ùì\ùР-ueÏ8饎ñ* ÿÚú§R 9¤pöÌRÖ(ÆoßL‹‹ 顇‹ó@ûÍ3ÌsKKþœ\ÜM/½øU@íKixì" O9*bã(A iðÜhœ—ÊÚ]Æ»ÝJ¶AB÷0KÔ½à™dEAÏìn+O)£”OÊ?¯ täe£²ø;ßþV´84[ÛóêTßøÉ6?ø$y¼� Ÿ˜ÝãÈx+·ù?«¹…¯€€�³Gþ<‰Ö–qÿÆ×¿šÞºNÛ ì’6xÁódvû…téæÜ›�Tä¬Î…îUŒàtÏçŽΞ±jŠ•iÔ‘=·,….ïÙeËs½ˆí•ò»éòX?€:öcP[^\ `öÂØ0£Õg²›z»Èô¯§¹eõÀ PtÌÞ×@¦Ýð 5祶…‰fY«›i§(W”�–´÷wÇd�®taÀ1G³xÕ"ОQ%\!€„ ‚ÿ�SQ½ ;ßgHÏ‚-ž¿Ï½”GÚéî‘Ðõ<·y–ç;„ñÿüÎíÔáùR¿Ld[;÷¸žb¿�œ�/�ò—ºP”:ç~ò–û,ÎnZÖ¹¦ÒÓóÇ}ðNë0~×·`0”ó·½\–Íìs°9ñéÛŠ`ø¹À¸ J ‘öœ·€o`�_è´Œ¡\e>¼éœƒ×•Ýì!³£µI[Vmƒ€2ö`è´ð¤Õqô;”Õmá…æb܇ä{[ÿ€>ºª¼i9/ƒ¤¡̜ߩò·¼ÆYf� ©º Á ÊƤmt‚ÏDûF~SÇŒ sèÛŠ>ÒÔLµû}óœføÓ52ñÀ9Le ¹b¯ðY–Ý ¸¿ 5ÒÔetÝzº�ÌÏgwÔi­C ÷{Èw«™D•L’¸€ŠrÁR•°ŒÜ’ÔS\oi÷á«ÜþÛ{óçȲëÎï%€D&rÁŽ ¨µ÷N6[$EÎHšK´F!�—r8ÂŽp„±çïòOᇱ¥ ËvP²<Éî&Ù{uí+v ‘ $>çâU%P¨îªîªî–æ½*™o¹ïÞsÏ]ÎùžEÃqxå&ä%øÖ¹Ö=QDÇ€?å¹*NêŠ4h‘_Õcp)«C×.ùN”ÕäYûŠâ©·†€Ð‚~v¬V¡© ºQp4’pO¦[’0¢«³‡§n‚è:.ÍÃ4#ˆ]�ÀG>çžÄ>R�™6£#OyF£€*õÖ sYÓµ@~߇N›k¬ð¡ë�Fp;CÂ}—<À^Ž1U'R † Ê–®kòTDõäÝשÿuk$¯5öµúU p&qj2­‹k�Îî -;R|L��*GA�‚ x& äÊ--³ +æFÅ…ii‘<¥l†Gð(E¹¡M!ßPƒÓxªF6ä¯À¢B›7~'¯çF¹8 |[ÈyúÑûÙèúÏíèÓ…óÅFV‹Ûðâg³†Ð¿·§'Í|” t*ÓÝ„ºÁ–߇Qž)¸¹uü¸AÖrÔ ö.›^ÁÇGø±y¥6ì`UæÇ96†£òå¨|ñºÊ • 1kx�;>gN�c3¯Àƒw ­Ó(ÌfˆÛxƒp¯ZÁ*àø¼‚r½‰BYKe„C ëÝìXOG7–†Á Á +ó‚ÌÔ")Pà´ÀoJ^d£‹ Áæ¾9�—,À·ÀÜþþ­FÌ íæ|ˆzŒOŸÊ®á-9sf!§à¢uö€Þ­‚h w®£@3�´yòDØÈ�N…@"F8ꩬ�àiÈ÷­6žcOæhpã;†§n…"?ß»YÏ!öÿ(™ #€ÝêÒ}Àak‰Jv½Šgs)�‚qÏÖ=”\³„ì[!ÌŸÞ¯zÛô¢zq‘Ù($w+æâd¶rxEšoy�Ü @€*²ïÜ@0X�úQ¼†P°1@]Ìs¨‡¤‚"„=Úb\FPªõ#�é¹'«²¦MÞfó¶·×1|,ãÓðvU”Z z©Dd¡J„O&<ý©÷¶Ê½¹êxs*¸(|Á>ÌÔÝXU# j€3ë†H¥÷€Ìéx„O£·58øã ó <ÀmcLo½üÈ·‹â¸¯ÈÝ·ˆ0ŒÒˆ T›„€Å`cxxZ]Èöá¿@¿Fó€#Õø JxóÒô_“æ*<#'%à¼u.o®Eß ²§)t)ÜsG€à2¬ÎÁóC~H…¶Éqá‘æ"æ Æ×ʱ.ž¼ÙÀ›lw >B�·òŒsšZb¦>À~€b®…0Êwß«€ºËÞ!�³ì {mï£a=Ãæû(aªz¥sNÅU‰0«ý•}–¿¹Óû)ÊCÌ«(ñ›'àQxQa�¼ÈNå�!ðh=cG¥˜‚±ÞRÑ6¾§Ã¿Î¥óô¥ëƒíý¢#­p# s©žð>§�cB <:JŽõ=´]Ïßáá{¤EÔƒñ#oo£ÌÜ•·œKšÌwÕ±ÍQ€5(–#”`QOòm2§ F¡ ÒhÀ¯¶Êña}Tà’Ï�¾€ßFNµìÓÞ‡~õìÜå7‚÷úæÎDHuÃ}w­Œ´°ÕÔÃd ÂÒ:/¨0(aHží:2Nds©ïÓç£xdj„´DÎr׊Úè ¢‘ÌcìÁ\A¤‚7ô‡EÍdCœ„˜ Œ°† †Ý—FMÉioå< ‘h Š2ÊÑà#x‚þµ�††‰’À_•ÕŽ=(á1 á,³ÂÚ7yæ ^æCÉ¢K Þýô�¼âúitÇú †öŸå:WGßHè#G/ox�éF\+cÞå¹|ÙÚÜ„nzwÊ*á\ãr£7�€u@¨Ñ±” 8…=+Xm;V¥‡ëo^¥zrËwîEœ‡5œÐÈ̲ôÆ�õ‹z¸®Ë7ŽÕq@t•�=¿Á? à 8ëaå¾C�;®£ÈRùêgÛdªÐP…œ^ÙCÐJ–ù\"˜$OÊçzÔ'ŽÅà :´Ù?èMíÀ«Tc>÷(*Å}¤³ßåMûÂö :Y_Ÿqo#]]'œçüÌÿÊõ*”'7*m»ÞÌòìÑVô´•*x-ÇÃë|¡Œª{¯†;;”¾>”/X�¿ÂŒõOÐ_ù¥¿|ãüåþLe®àž€÷à—^|Ë`F#ñ| ížêÊ[†1>Oþc×Ié¯qÉ"F|òŽžœ¦J12Ê {D÷�Ò¡Ýôf5¶F†ž>møæ;€©ìÝT\Û·ò³ýï¹÷ßûUöù§f¯¼òF6a'¼9üû? OØmÞ+�©hð½·³kŸ_ÍVÙ#î/£ˆ¥¿æÏ�xŸ€Ùu÷ò•WY{ñ†½w;ƪm™„_æ/¾BXíÕðì pœu]P«Æ^õ#¼“mÿü…ËÌmg¢Ncã„hw=g_4Æ>‘©&h1Ë8=wábÐ3”ªÌÁzä;�ÊW²‰ó¥!ÀÿäOÿ<{ÿî*Ù«ßÿQöêëo³†|¿þ2Þ5°*/ݾq3[\5-†ûàóŸüÑÿ˜]§nÈ[õ‘I¢®\Ó>b•�x¿£¾¶¿�×µi2ç*ú'Y5 Øf~Ñó×0óîájõNÍÂÓ·¯ zàcß#Kgç5ùMi‚:;Þþò¿û²ÿåßýÏÙÃÛ7Â8CPIÙèôÙ‹ìç;ð²´ëË>ûô3ä–‘0œ¬£¹sójä"¿ôê÷²×ÞÆÐ‹yïÓ�>Æ@TÁ¤&òÚY€@@æ² Œ¦´Æ¾ÙòKL+3j´Œ öXÍ¡® žûŽ8i°égu-FP^¸ôúÙ~øã˜»>#µÂ­›×³‡·®aÀÆÌÜnù§œ:u2êòÙ'"ý2íÅ }>Î ¿ù1ÿògô¡”Êx§ÿòûlæØéÙ3lSáD c®r-égn•–aäI� K­ƒåáµïõW;Ùé3' ¹ÉwÏ<ËpdmÖSÙÔ@c/ÓÛ´![„Á+}l¼ ÿ^ýüÓèó´cºç¹�X§ºÜËîß¿2¹|aÊA÷jëðô8óƒF?ïüè'ÙÿôoÿmŒ�S~ó›÷²ì�4ÎÐû?¼j]Cädveç0Z�ç×^ÅÈul^~àöA€hÌç05��ó%üêx2ò›¼(Hï:d_ B^¸t…”‡ï¿†£ë›ÿ%íâ�þ¬ÃFrÏmýMÝ1ȹ*ò…²j€¼Ô_C�I ž4œ;…î€ùÏô*þö×Ù �žpçþá½iëÙÆ&u€*£â©+ØgÍ2*‚kq€Îî!ô< y˜q ÔÍóþtŒz§@ô åe ÖbOßOžõ3Ù hÏî:x›}612¾W–1^w½d”Ýk€ï˜s,¹­¶O†ƒ€íÒÒÞiÀ66ÙcR÷ä¹2ôHìGóY;Y^B6­qNÇ ë§<'ﱞ1!ÂCõxñRÇŽmu]jSÌ-cnwä8q?¢ªÑs\�j€�cxÏ °A7Ë\^n1õ•)\·Ò~Fok÷+æõ6™ž×î?ûã†6·.îõB6“ž|6� >;â �2DÀ€½8וWÓXdá¢~Ò,rróÎ2ë¢{3½îuª0J‘‘÷¶·IñBê"=0ÓpÝc­åÙ½ˆ=;ó—ôg(Q/ë@�q�öFì®gî ­‹†Ù%¼ ÷@b;xK(òTÔÉ:ìñž0�¤|„ü¸æYP~Aì‹ñߥn;UÝÝÇî `8áôi£ï´Þ¸˜*ÃÊ—ÙšŠ/�û”¯"Cµ0Ÿ{¶àË¢Yh´áš¢<íœeÛì'yÂõßö �Àgs¤ ².-öî“ìÇÖ©ãby‚¾”‡Õ5 ƒ¾‡îdŸwª+‹²(4 %¸GY'öcÖ„zîR†üÖñ�AéÇéÇX–ió>½µKu¹ž¾€î]øÎòµŽvl �©×T¶³=§Ì¤!†²A]PÅÉ.:¬ÚP7öÜ¥0©½yXã)eiëôb_kD  ^eÜ�RFY½œ²åjȼÏ V5öeŒÓ:w¸Õ`e›9Ãw×è/.q_ÒéY'ÇŸåSUxD`>9”ä‘OÎG|©£Ô8È&?™>§ÓÆÐ'Ž0”PÐÓÔ~KÁ$¾/t¨R ((ð Pðpq»w÷J”›l:êÙÝÛ7BÐѳ\%éïÞ7Ãi” +} 0G!€@ì³Z†-“Gí¹ÈæTN„B‹Œ5µ8 |'(ðeܘƒ*ëäéð Ÿ^x bñ«0 ‚AžÏ…Q7ây¹‚ XI\¯’:ÐlbúÞ|.)DtÐ"qP4tòy­wõÌòœÖ¢II¬@3{êtŒ7=t¦±¨¼sc!„Œ}À½s¯½“-£ Ùd£hˆC½‘^ZxB»1-£,!ŠR·6 Å«õ0ukš·á±¨®çd(QÀ¸ImŒ €Ò6Aß® 0H�SÅ£4äS–¾´Ošòž$ìð PCÄšËu�õ±i6ïl°·QªpPÙà UÐ¥ÅÎxøÄéPöëÕ¬ðZFÜGI¯·»Þ·Ã÷nøïë!а65I.aø1¼iG o›óoü$›;ÿ&Š=Ò,À NÂzoá5)Mì«ÖâmAÚË0Q¡´½�·<»G›ÛØU8ûíÂÏZ½wÊðàÈ ”…'/e«¤oØ\¹M?w³é3‚1h0'µù̇8_Cé»AЇÝÂ8@uá›UÖG½v6—QÂBjÚ°™n¶okhøÕÇç`)=âP"Ðwx¡6q&ŒZxF¨ ¸cģϪx¡öÁ ‚…}🹽ëc³!`sGÇ à_í çé[_æ8ê,ÝÌœ£~XÑÓgž|ÔS*Ÿÿ4�Ï<|Öjš�|·Œ! }´µ¹ÿà KÿjX¢áŒÇÖ4÷l-Ö�‡÷„gJÌIÓ§ç£_TN�}ãGÙ:ëû•¨œÓ `oƒ°ïÓ4f.š÷TÔmyá^¬…æq¤¿Ý¥Æ^èz�ûE:W˜ÿ**X¬¿<¼5Î¥¶Ê#z©û¬Þ{~°Ï‰å�Py@#ù[Z¦ƒ³zN9Ÿ�bˆÁ¡LÃO�ÞºŠ%®å¡º¥§k–‡@¼ô{–Ã稘îö}º$Oõ´¦‡7;5sn Å4õ(Wyj;ü±�5£Æ({‰¢Àuy|e±<LÄo#»xôñ@ðÂySÏ ¬\‹sþ°þ1¦ ˆ¼TÁˆ>Hk¼´rÞw̘SgÇŒŠQHt”†x·o|·×TTG}áÉGüG9–ÑÛÞ'hµÝ¦ÍŒIiäÜ5 `´ðð^4Ç}N(±}P¾�87TKûçé’<\“²pq�p‹´Ç±VÒµEž€Žz<†g(ïµnÈV¨D·i^³n‚4*óTŒ«ØÃ|…w³bÞr¼¨¼�û �ýömÖC�TǯŠqCß½u“p¹뱇[°t/" qó&^¦{¬ÿá©„2ÖÐП|ô!Þƒì0¸°³½¦ÁЛ³Œ¢Ót:òÂٳ粷 Ù>Ct¢dŠ宯†aàݤ‰‡´ºpñ2 Él€ÒîCÝCi¸ÉˆfŒ¥¹G¥å¹‹—²ï½óNö‹øEvõê§Ù[¯¿‘ÍÎâU�<øPzœHu£ë-½p™ÿú1^`]UA�ªÞZs§ÏQºÞb*¸ÉY�’SÙÓ=�ŠoÁ� AIÇ‘F&öw„#†¿äCyA~”³­žÓótûƒ?þ Æ2yÛ)GðAe®eÙ6=—ÀðÃfõ¿Ý @æì¥W “D§Ò�TµŠa«rƒžµŽ'6�]×Ì‘�Obð: k$ MÓ#¨nØZÇÍí¾€Áh¸ÌÁ¾8C(dnëÜú~+»üêÑ>�TÞ¹Á¼0‘ý›¿,á�‹)ãÒ:? ¼òù‹³7â'˜ÿïÞM Þ&‘§]MódFhVÇ:r¿ f•½�¡§][4š’¶Ç¹I€KZJ 0Ç00tñ:«xêi8¬‘„(‚mÿåõ_ÇýWßx+úHÐEp2öLIrüàóÒrÕø¬¡Å ‰Ñ¸õ@0�ú:Ž`axïð d_æ‹�‘J¶J”%å ÷"‚ÀÓ¹GtxÂRçü�=Ÿá]¬?Ãzæò۶ʶ޽Œ[€V½€Kx= Ü]—9²5¬ �ç@*< §éƒ5äüV Ãzô©IÖ&Êÿ ‡½ªîûO¦;‘bïÏ:¯ŽÇ½‚ãd �{WÊ4À.�9§�ƒÅ2†%²6`�Ðâ†�y�ï< ¢k‘ë*j%ŒPàkÀH Œ4J©,!×€{Ýñ!Åáoç|×ÖD3ÀSÞkßmá�/?h$+_ Ô[–`}ì™+ÚzéÓ&£lwShuçǦÆf¶U=Nì[y�s@«/1›*Âúî…ó}¨÷²ûÛéš¹‹^IyEÀ•âLÕX_cïõ5ÒhÁcŽ‹AöƒMꡃõ÷œ «K쟥'¤»sf?áÖ¥ …²ö§¼ìÖ͹LæxW· Ìáƒ<‡ÓtÖÌçdÔRÆ|ÖÐ>Šñ—@²?:B8/9cXWÇ…ûgÇ–ÆžW×ã ~s^³_”gº<ïwõŽÎ³Ž7uòŽ�v#WÞM‰ÔT§ ?(·;WÙ> ‰óÊìÊ,iDÂݦ;ØB±QÀp†XFW4À5#"ºŸW�餋}Ì3M"?ViÇÏ1%„7Dò‚/Ý'mô›æÎCyM}Ÿ FšÓhÖ¹ÞqèüÄ>-B^Â8új¤¤‘…}ë5Á÷Õ}Œ¨á�wLÿhjÈ|$ñ(K�’ày—z›o݈·¯}\èvFq((PP  À³S@¥È"JŽò“ zöÓüaæ÷Ôxmé~€@nc:(oÜU`2÷¹àØ´Þ¼öY„m,³ž=y*„Y…•!,={UŠ; ¢€›;7é/ópCÊÞ*6¦ –XØTº¹[CS$S0N!DñbàÚq¼Q7£‡õvÃè¦ÛPæÀô\�Û¾» Oe*Œºi6Ê ”+‚Ò ì~¾N~Ì)¼0 Û«‚^EŒŠl7¯ŽÙPä±ñlà± { qS`ÊÆ“g/g·É­ª'ÅPA…ÐÃH$!¼Z`ÌPuÛ(q†i“¬ò@ £:LMÀ!çÃ!êç¦Ôò–¼Uñ ÐDT ›9{ �! /;�ô+x)ï ¬׋P%?Dˆf'Á›!6¾û—*lëäVù×D¶…ò‘�9uÄ!ÈûO]|3„…MšµP,„vÔFf&ʆ"�á0 ¨J:­y” •»…�Á~`-ݦçwÁc%]OLs7õ#ŒÙ–Áêž"' µø�º Šõ¡ÌÃz¬à@NùfŬáëUÀ:§Û®„Ó­ì^šxž  *A-nûàë-xjð¼Kh­Á!fw¼_€»£'Ï&%´Øa¾B¹ªp©RÅlC€Ù†Ñ�0垦9ðH 'áÉõ@'|ÖvÛT(i„¼Ó#Æõð¯�Â\|¤ òT:¯Ðd?yOzflæ\ÜgßÉËz¯+,שÏ2 öeòÞà:Ûi-¸l.ê͇Ÿfer~n`Õ^¦ÎSsSY‹üÜÓ Ù uœ¾Ù"—wkéVvúÕŸF¹\�ñêT±Ô˜” Ûxýëq®qJiÏË„a¿{-[¸ýI(ôVñŒYEi>=ÿt¼hÍá7î§ï·ü—‚ž†Ñ¬� �áÆaÈGñš¯Áï À9]œcÚ£Ñð¦°ó‡!ªÕLE `(ðT‚v_ýHt–þ(©³WBcÿ¤÷#v lô‡ï±ž œ|<ßÑ�ÌII)Vmº–¡ŠrQz”ÅoCÒWQZÙ>D–Ÿcæ. =«ý`ŽØØÅôÞœ°ƒUyEn§dx @ÿƒºð‡‡{ê'Ò¯Tí~÷9Å»R›{nûzƒþÔL%VOÑ©?—¬c€›£=^=t_ªð£‡l¯ëƒ¯xt‰ÒÍÃùX€ÞõFÅ�e½ùƒŸÆœî®i£¤Cp~>yæø—ûX?TeQ‘?E˜xçrŸ—×ôxt}¨`ÌÑ?(#øŽ÷VÂ0~ÁaøÄ¹àÕàG*Âb½9¨ï¡¶EMžüåüæ˜Îç€ü™è�ô*Ù¨[:ò¿ùºÉ2íIÆCûж!@çC|Íâ{þü“u9z&ÆáAz FD§ù*`­›}¢—žÀ^Þ?–—Ƹ^ÑX€×§ë‡Ç‘í·W¥ex›³Î Í:¨szžßq¤qEÙ*»x÷€<O[t¡âEùoî9ÜêœP´±v†z SO|ùá;��bÞ`\EŸS¤áÃs€:B‡R”{S°ò6ÑÉ×h€ÀzÍ:cßé妡¢!¡¥MëXð’{i‘¨.¬‚ê¦Eaú Ðr€}²3€ž”�u9Œ}ƒú …½ˆ©{ÌQk˜z“*7ͳ}’=Æ—‚fÒÐ6«ï=rZúWðS�-�B¬¹Ü/�(ݸâûÕþp2L¸a€™DÂ(p#žû #%­ò9¼žáU=±&xš=#†´Ó±zýó«Ùëä07’Áéù ´!åa7¿µ{ͤw�D¡Ï4ŽŸD @€4çmS´�º©D•zå¯û3è*Págiá�^`þu•ƒ ëúö;?˜CMZ$À=ùWž1bÔL„2¿ÆœJöä>§º´f§÷´4´~Ölwbl4ǦÙëMDä™?þÓ¿ oN…уm¤ï*ê7Êþã�ý~Ì9–¿µõvìûÃ#�}Yô# aÇ–þÃëã“Ùòϲÿðó¿ p7Fms-˜`ë^cu¹?øÅ}u¢›òŠcoGê çš–kDÈôÔ]¾;Eh{£\~åUÆ“|D_zûœy§Ýgº?pnHGZÃ.¿F!ü—¥¿}4ç9ûÍ1¡øïáUü·¬?u¼ç½î?çUAsyÎ\Õö×ùÓåO�Ý:ý¢@#¤¾>ç¢JÅšá¾Á}DŠ´ ò¿ÖJSÁ@IDAT‰qR9ÁC9êÕ×ÞŒ6Xÿœ¿åõ9€j |ܧNÑÿ~¶þÒùâåWèS<–CÊ–3;;—½òÆ÷Љü&ŒAtDPFÑx¸Ä'íôÂÕñÀô‚õòV¤§B–Ræt¯íš®q°ë¢†æˆ(Ñ;úy©¥± ½ù¶Çè—·Þ~'hâÜ+~�Ó�ðøÜéyîIi4Þûõ¯²Ûx¬ÿìÏþœ¶¤÷&[Þ4ÅFýxú•b¾h°–�Ÿ$B½JØÜa $0$w¬AŸ™ÙSÑ÷†ý¾þÙGÙ@¬óšr•àRN0µ øhŸ¤m 3˜æ` {Þ0ú0ãÞ¾÷]öãë‚ôw­Œ²•ü%?ÐÁ1Ïýò?ü}¤0‚„Æ„«mS ¼ýƒwðÒ¿Ah÷ÐÝõ—½8e™Áñ,°æ<温A÷‡w�—H��Ïô ©'c¯a§‘U Ž##­hÈ3Øfþt“ÇôºüdoÄ5‡q…à[ŒêømiìÓd^^¤Ë#th„°?� ‹Ø~ç=*ë-‰±ÕApš9z]7OL�Ç81ÇóÑÓæÎÍóc—²—ˆ¢pûöƒì• ç³aæ¼~uÐÄ4-I…q'�™»¸�ôLÒÅ5Ù.–>–ÎKÊüò¶ Êi‚Ï-ê)½Z �m>k�•©ÄÂ�A£IÖ-úO€Mc-S¢^^€{ïÙNÌg¾w'›"t¶F>‚ØX”Bç ôœäÖ(Ëw ´nV™ÎÊ6»% 3�ùÑáH /Ä׸ÉõRpÛpéuŒ1L9¨lD1 Í®ƒîwøcDþfѶ|?“öcêÓ~RñŒ†•0BðD‰±äÞïq¥õVši ã°�þó OŒèÈÈœvƒ¾´ÏùVÚ*™Ôk)ÒB™}œýjÿê�0 �)×¹TƒW:8Ƨ|¹Éø3’â>cÈý¡©]§õÂwßçz¥g} ±¯!…h·]ÊøpZôƒQæÅ71`ÖÖ½k'mÔ fç“ ŒRäs«K+#9IWu.îe¶îˬ©±Ï‚ß66Xï™×ï‚íÄâ((PP  @A�‚ÇPÀÅÉ;‚×?ÿ?Ë~ó«¿G ^Dàÿ£°Ê7\õBJlhªûY$õ@œÑêÛpWÿîÝìÞµ‰œKx.Ä&�ž‹f,êǼ·8UPàY(ü©@Çf³ïÀ»ïYžûª÷ÄÆ—‡CYBÂuÅ]¼›¼‘‘d±©ÒG+^…C…dÅŸ�2ܽ–åF�}o”§{®ç÷ù×ûÜøZŠB¥ïKï!�"Ê‘ñI6ûI(­ ›zâä)¼9”×¹‰sæÎÖzV�:£§7^—º šßP�Ùœ™¶Må*[õT·õ\vc+XÂV;î5¯ªZâzø]!1þC+ù6Ö5”]nª}·ù-S`& Ú^¦¼W¥¦ÀÛâ̰[cxŸ»Ñm#ü`XÝ$Dz_™Ð¤Ðk¥“Þv–¹xÍotïC¼· ‘‚ŠXæ!ÅSòá­�ã³˾_¡D|Ãó7 ·Ê êa½�J#€ãíõÅ,@vh À¥r®Œç0á•õ�¬CÇÎ*mBè)*�SoLåÊež;™Ý¿ù ѓٖòÊ:´F銼ºÇ»õ¸oò³Gû¬B”<$íõN7Üf ØpjP,»{ýC„ð•ìÞcû{sô-(pÆOžAÀ?ðä†ÁöNÒo´) vÍ 9GϾš�ßú$æì=Þ�ô�Œªµîúƒë(ŒFQ¼;χW)ów]ÐÅü’*™\'ü=Æ…uÏË‚‡Ÿ9|ÿñï;r6/�äs¬Ñ©¬ãÚõ8T uO¤¡:Gë�_ð�èéƒ'¹ï‰ú*ôÑû#Õ#/Û1õìj¡0x‚¶�Šê‡ ôÉ÷ü¼Þ=ÃÃ¥µŸöÊ'9xna9 ¬³JqÁ¢Ñ1Án�x¸ :{MÞ³÷õЏð\x?¹Ž=åÈ•ö‰&ò¨Ê>�±Ä îoÒ‘d ÁgAöoü �ÎûÖŸ9ÏœËð ÓÇ´cÔÛÈA(n©¶ûç vpë›ÂcÖ}Ø `ºŠþíM&öcüÌÌu0äºéDöˆ´Rc�«£¬>s�r=¤¯J\¯æ|“¨ Gú~ç…­-zà ?¼ß;ã:}¡Q©€Ÿ¹¢'ð´;}š�ô~ˆ£2¢á™Ï_~Y“\í(¨ïÅÚ©,i* sð~þ¹¹¾¬Ø_±¯1"š€µâUŸÐÞ½=SR¥uÉúFýò:Ú‚5h©G÷ìÉY@�ÄS–á�‡t—#z�žÊ›ð+?¦ê1¬¾áÕ-;Ÿ_{ÿž>3{lËIïGÁ͸s< §«ážUk´a½}Ï8{£?þÓÿœö6ÓÖñcx~y7?bïd}mÛÁIiã!?çíéCqÝl&#�¼ ÒD0ôÄ4¤üó½ÖÏr”-"78cË:¹?ñàr€ŽuÀÒŒ`§‘14°î>ëážÇ�úgÎ]ˆ=�ek8,Uó=L ¥W/…Zô‡÷ê£G™Ü”÷‹ïÑSô‡?ùƒìÒ+¯Ñ.ò‹³·´DŽúC«��¨×˜tE.¬¡•€2ä$Ÿ=kU@·ìh7k–ý"ýÇö_PÖhxV[çà%î�~•¯¨ƒï“·äGÏ÷ámj”ˆƒìÏq½¡¡¯ë,ϸ‡´ýÑ?ûÃH `Ý¤Îæ'×ÃZà sC»ë€À°ä;é‰ð†¼xåÍ8ï»—ñòwßêØ‹aüB�ׇ/P/Ûi¾ÚDãÔEãëjg¸¿´ï/Ó2癃ð½\÷óÉ+o8ær>Ræ™?‰çf#ì½ýà\;Œ\©±Ás�`¾Æ,z|n�Fëì9Ò& wݺq-{÷ÿû9žØgI‹ðcÎ_ ð^ ßy¤`0¥ Ñà×:¬³—Åà‚¹Wˆ\öƒÛŽ›d0•ÀWûR°Wƒëjž[çåd¿o3ÞÚ¦o`¼aôA�†R*†=©¿BdB¹¿_Ï®~}`$=�[ì“à½s®î ÷‰(࿉|!­5 Ñ»ÞFÞrŒ9ï "Á?‚3z;ºäÁü°n‚g{€ÖŒc-çÜ·sÐ`Þ}�¨ É>¯A“6ý€1f>d#œŒC¿ÙÙÙˆ°¾žúÄ}ó$^Ò§NbL°¼Eøc ¶ió`¬´4J� ç(© †G“Îü#ø+ %À[Á'"Ë@YTùrn ÂÁÐI°7E³3|7`cD™Öû×ñv7µ—{vá?)idPÁU=XíSf—ð´6 ˆç�c6àûÌ%½ÅwAÚÆO[ïŒs�sÞt î§Þ‚ÄžË�?Sqy/Õ�:…±7Þ¬‚Ò–ë| 0.O ˆ»¥f^×Xcƒu º[Èž¾SCÿnâ³£P­ˆZ·©Ç·ã =‡œÕi­g°�1Èw�ÄÛ½�|nHuGŠùª¥�yØ�òס͂À›è º€•FBeÕ3,¶cÆ6úþ˜÷à CÆÏÌ�nŠý…i”ó©=‘?6àqÖ-xÝÃþt}4\½c[c®Aæ ËÝ¢¦”)¯‡ñm /qe: ç!èüéø(ZZQ+Œ$¸ç€†òCI@CËßÐ`�Ôz´U¯s½•ó�wŒ`¼å|`8x'ÀMh° M©mð /þv<Ë{ aêA˜{¢œ�3Gû”ÏS)�ÅvCG–äÞD ؾºBVêà B·ÀCÌK+뀹ƒ€íð_8ÑpZº†žˆÏõ2t¢ÓóY7¯I»H}¡Ç?/vØCì¸oÐxÍÞ¦?\W, úî�bG_Å^~³œCÇÁwÁø2´5ŠB¬WÜDQÌ©”Ƈ- B‚§ù\&2Ÿë˜QvÏ¥é.à¹ÊF#´”GmÐi wb4û6uÜ‘çuâ Ý<É=–Ï~ºœsN¡E1O¸Þ x?ò¹3çXÔÉ]ybŠÍÈD‚æàsƒ¤ ææÂ�Y.lzoº�MMŒ#(ž&ÜÖéì•×_Ï<¶ÅQPàëR@žSi‡;²oðp\ÄÁ{U¢ô^³n ˜¸tdÛ{;ãç±@Ý{A!ËÍ´å)œ©ðàkì>õ>ñ¯ ±¡g´ž¬§�Þ!÷¡žpý<3=w>”ÏIA‡ðÅý*hâYÊPiä½ y*s|ÏÊï×FAwj ˜¿*Bͱ¥Õg$R0%Õßð„)*>}Æ ~Ô7ªìü ‚HÁ9y( q(Ý$çtâoˆ�ÔQÁưä†4TôÈ8Â,d½Ž—ЋŻ×1˜ã!®)»„Ó†0RwZÐzLÕÈy¾xïâólÀÛÐa†ùlfþD è1¬’¦†w·âˆJ©~ÖèCÚÚ˜œx]AÐ\Á{Š~M!u CÝ¥�ôX­áU= ªP_ê{kQ®ÀG_vº ¨¿Iýg/¼‰â Ö°xÆðÓ$/|kå. @:´±•R†Ë§)Ù�‚!B‹ŸÃ/3mÚµÕÅ»ó§ OÛPD5¤UÄIO=¿#tyI š„™e#ûW©ûÉ‹ßG�·F= [)oÐ.çî!^(p¯‚¢ŠÇN€ ‰ý`’µ¼L$o Uhœàw+ê?�2øëƒKÎçzÛh -ø¸ åƒþ´'zùø§¾ÞYÆfLMGßý<¥ö<+ÏôG¿÷^ó3×�<wäsÈÑÛ‹ï�)�ÓÈ¿òIÐò€Þ9ÙϽ‡´FOÁ­ÏôŒU�¦äÌ?yÜkžÃÞÃy%Ë9¶÷zïþjŸŸ>NŽ”™×5NÛÂ{ät~±¥>¥´CmyÊ=qúëµóë´é‰g{yè þOÜsÐÏ7Uâê¥|˵ÞûCÙ†27x‘²¿ŒÇT¢K ×7 >ÜTDæ!÷X(±Õp ‡ë°ûª¨¸2¥žÜ*n¿zÒN«Œlc$9�Ñ$º×؃×Kп+ w³mòš·YãZ¤ú0Äp•=‹JýÓóW²ó® ¤q/}{?çd�~½{ßüžüotqôE¨7�—9a›y×›ß'»xþë.¹^iƒ{žÉ©&¹´/Ä�e7Ø÷4ØÏY7ó±›Ïy¨q-ŒÛ~ò‡ÿ)a¯IE€Lê:;Žç¨Ÿ{ ë,påû‡{×eë›×-x‰{Nð¼ûæ£íõÙüÞÞrŽ~¶�øÍ{}G¼‹ÏÖKƒ¤üHeRÙgÎ_žèË�“rz*SOâß?­l­~švQV*5/íqcÏÌik�×É»ò±òø‰ÇÏÄ>�SZ5KG�e`žÆ Z’â5®ÄB›“–Éý�ûü0ˆÏçwîòýzÛV??6&ê}÷ÁzÀýù‘Ó;­®5éžtÞZ¥#/WùD�o•å� &â–Ôÿ¶Ý¼­¶Áî{)FjŠ( Žw�t>•ï»õž;3Ïä€ÜgG¤Ѷ¼¾9Ïù¬ a~xÝsA9>ç÷{N€÷¢¡ÔÝ×S¯hÝìK1ò�y¸_{ë�ðèŸ�Ö(û€”ŸŒÆeD€ó—‰äE´ˆœw-? 6)Û2D9xo^—ÞúitàùHu‘W::˜èmööÎqýIÙT#ŸHÀj KçRå 'ÓFhøñ÷?ÿ«ÈÛ~bî,i¬Ñ†ù·ýþœ89N÷nßìDÐ6¯ø>rè "©ia$ Ã�/X z/ÅIïò×ß|+øO™4<1iC�ö)t‡Ö?@t®Y?çCs »Çñú`3�}yÍ2ËhLm}>F˜l£%kœ%ýG0‡ïÖ™S—Ĩ!/dš®ÁûŒ°°ø�è÷ˆüµ64~qL ?¬¯ã:˜Ä·Ð߯óïvXÛØÈ£.ÐnçSôDºÙùÌùJž^°öó‰™SÙ{¿þúb(;7DÄŒájv‡TqÒÝ‚î–oTAÕ1Àݦiá¿Skøk/e[¾ÕŒ¶@EÿŠwê «ª)ß6‘¿4pÓgPYŠzn!Ouˆf`9êö$wá—aÞÈ�õÏ5pr·4X‰ú¾ÑÏm<`ð¥]Côÿõl£ˆµ�UÐæå¯|…�~ Jt„ˆȽÎ׺Wù,з�lg¿:¥2 °F¥Èò 73D0œ`ìMbb´‘­#ƒÂÄ1f]Û4¶#Œ�÷aDϽ5ú¢uƒšðšàaß/ˆ¯�͉cÙ8FÄFMn…�1ZÂ�:4«C|Ö� … ÑV¡áÎÏzôk ãšêAcͱ?´›ïuúL½Ê×÷IS·K8½±óFfhl TV)k·ã:œÀb£žhôP…®ò�e–5à¶Ã~�ˆ?|®BW iìï-<óM á¤˜úç×ðÊ�¾µîòÔžæÃ»{Þ0âñÇ,ï¯ò_Ïfë\«kˆ´�áÜ:÷â�Lîã\ hk>ìúYc˜g$‚ Œ îC+SŽšÛïFЀ£‚_lÐ û—¾«éc**Ï”è'ó„›j­ otwփϬ“‡ ª¦ùëGwOÉ;Ð f‰6iAC›m 4èÃÈ„Ñk“^ØãXu푞é³íDÿ@]l~ä5÷eŒ#O8·h„sLtÞãºoŸºf2vb>2êûõ€ü ªS­«¡â^mM'|BÝ|dÞ$�sv…¹· ·80Q)ëh*œ�l�º:æÝcÎs{:"p¿cR££Ä޾c û‡±ÝE·F!T]+<Ïî÷œõd¶±Â¶›w  [¦ëa—h‘ÒU§…6ˆ>râÔ|Ö¤Sˆh°àa$ Sè ™Ú�ûœËï(ã¶â׋¦]Ìö¢Ë-Ê+(PP  À·E§&­Ö²‡ïþ¿„|ám6„/­ç=H %­g� �yÞ6Y� ¯¤°­§� \1A¹Š_ÿÄ)aŠÜÄ}Å#YÿT²iwÜ´+-@®€ØÅå@¥§J$-ÝÝOêI® §BK¢Š A9�Ø4sS®T9T7fêpŠïU0 ®¡üssŠ=Î+dÅËh—J7ï*AùŽl¢©ÃÑ#Þ/-¸æv<) ­OÚØ÷ÞŸ+A|fˆ0Ï*¯µ,÷Ð»Ü ¸J$�]3=Ï«CC`Q ²ü™soijõÔf*£™ËF ë„gr/nŠ: ´ºÑå‹4¡¾¾ËÜÖð-CÚÉÃ9ÍÐij„»� æÇ6ý“ÂI!‚¢ˆ—ð ê&¿„²‹"¿) ôŽÉÞww>ïîã®ùl~½·œÞÏO{®÷ž¯ÿ9�™¯_NQÂw�9Hå|úE¼ôe|èܪ2¬x[=X—]óóó¸²=Ñ b^þf)c{bí?x·kó4FƒÓxxš6G¤¡žõjÕ»[o Vb~ðzZZˆ0䜄ƈ ƒ®¹Óó‘“ù&ÊKAŠóWÞŠ°é]ºž:w‘û§bïçHú2Z~%¨럑F#DùÃwÿ!Â%ߺu¯¸zö¯ÿü/üž\ó^•¨®×§Î^ÄC~ž}ŒûD ø0@à û4çÍí­ µËCÿÛ§9_×Öóh[Ü·æ^ë>ûU�ãÞwô]Ç•-¿i|®&<T÷Õ=‡m÷# þ÷ž¸áàWο~ý²{ó礹ûŒdˆ!�ž¬¹€HÜuÀéŽ4Ï ‚†²Åtï;ýl¿ÓûüPjzQ”“ÿ:îܓמ¬Oï=îs@øpy @È_{”7<Ÿö\ŽŽüÆø˜Þ©ü“.=®ÃáwÄåC÷wýiçŽÊaŽã>öÄ4Ê´mMÆ�!ï•)*F‡B®“×û²³§£¿0óöù åæÜ|ôÝG¿ÇýôÓáózDo0£g¶€šïì½ÇÏñÞå!h/ï¤û<ƒœˆlvæü%¿ �„®hãŸy tî³ï6¯¬¼£A ·Çü%ÏÔ�ÕÌ;îÜ¥¬©Îé4óÒƒ{· ½Ü "Ón„6ØC#„>æ{*É•qúQ�­—?ŽûÞ¾�±O{rƒAã“̯ÿÉÏþ,»~õ3"bŒð(gBsÎGêÊŸ˜ÀÃ8–>Ñsшn•¨3"F€îÈç‘€_`ïÁ½;Ðb˜Pî´c<�ú ÃÙ©�­¢–ßü¯Ç\뙃M)áØ¿Oh}�+�%¶‘Y=$å Ñ%/cröܹ˜?ÆýNxÊj|¾º†16÷Õqõ‚5l¶Àm•\ÞšÖk¬'q ­VÇ °JïR�c.B7Œ"èÿ2’:Ž]i#úA´X¿ûúŒ˜FxH£×I�6?÷&ýcJ6�. M·³J„·- JÜ¿“éß”TîuÀ¦pîÛñžÔfÀTÞ;ì~EÞ }“€:Þ÷tŠiOÌ1?ÄxdoóãwùÌèF”P'dÔry‰êñ“údƒö…Q m ƒŒ ìO� ò˜}óêÅÌÙíû œßËÎ΢o‘†”ošaûu–1%€ùÌ+#D› œ•U�9,#Í;ö�´óÇý¬<Ïæ¯bäQì7TûÞ>ó/å †³’AóvÐT^³�Î9æ÷³óLè{¨ü @òîïà}¾ÄyŽöš_Ü~ ÞeÚVçp÷~Žó|æå´�6D¿ROʰWoäüœ¼ý¶!­Ïù£»t1²qÜÔhËV”‹’ózˆwû{üÕ1%êjÜ¢k ½è+Žuè³Ë>4EoÀX`Ðö»¾�CœÝýͬL¿ Æw˜;¬eµ=Òl`\ºHÚí\°¿�×9À¹ë£ú6DZ‘¬G§½ŠþŽñÄ^R ݹq-[«XÁɦƒ�ÈÉSgƒ¦ÎGæØ—;;ð%u)Ž—L™ª8 ((ðOЬdn*\hÝTݹñYlJÎ_z=6îßáBÈÝ{Ý0<¸w  ¡¸”†ÌC¢pÕ+�ý“¢Sј‚ˆMé× †@#ûÃszj‡' cÊ=†KCM)ˆûY/Ç”ž,]Bé0Ä8 “1k]øõhÜ© y4ùœ<¯4òóIi,èǫٔ³+÷y„éüxô¼'b×Îv”w>툰ï6ȃû=ŸÎù�5í`à8›l=Þ­K|Ïnºyyj_P"ÕA:T½ó£@ªÕâÔPc�Ãa²gc¯@CaÔ¿g›ÄO|�íuB‰JËh–fuo·ùŒZ†Ê9ëýÏ÷¼�¾óÌ=Šì“ âý]”+Ò5”¦üM"Mªy(÷­G~ð^ûÛç´¶ýI‰‰ ~ €‹Ë\�g{û«çs*âp¹svz•„áíõ_|áOÞ–Þ*¥û_Ë¿Ñ_ËñG!Î÷ô¶ù‹žû*×äi�æÔ¹lxúô§ÿPlŒž˜á^Áª‚ e”û1ŒGX§hzv:øÔ|ªxÏ{žvoÚ�Ú–ãy:xö)מVæóŸ—vOêi4²_ïoŸ|>•ù?ùÈsŸyÝ,¨·MÇÝ÷ľúÈÛ�{æÈ-_ë«åç¼ýè]ÒÔºó#k§óܧ¼Àý~ÏÏ�êEÍX8JáGe=cízé”±éR‡lÙS§Þ"{߆¡}ÚÊ›?W™õܥט£Èdã”™Œ&"p²"ç”cÔ#�1ЈB¡QêôìäÚ©åŒD1wæB€ÍiMã'Á ñPÌWós˜&‘† —_½žæ «éÑÛŽ8í-…§¸ ¨e"_Ù ?,ÇyÔ|ÝΗ†ß×c]Ý—é3zÑ� ïš�;�ݸöYví“c¾Ó›ÞöFß?"4DËó7|ómSðôY\^ƒ¶„­Æ«^�Õ àÕ%Z— šF+zòWõ<ˆ ã}t~u<;[ /œ J64~b­bÕ$µ£ô—fz|@êijùÖ‚†¦ÊFF)+õù’¾\ÎÓ8j Ò à†§:ë…iØV—–ãY¤ï�§Lã]¶Ê¨™zœ·Eþ8oŸúÙÐ͆ݞš �SóŽ·ˆÞ· �¦ç´m p޾²´}xN Õkò•ååF&·¬tȉ¼ú6^僀»þ‚KcEð1¼ª W½�Q€9Ó«ðD¹ˆ¨‡Ð ÊÚ¨G´ñ�JðcÃC᩾JÊ/ \;¤…ô3\x ðÔr Í=DÛŒP#íŒÈm.t$Þðz¶�Öi¸©Q„Æ ŽÐb€Påz;ë°zÊêЭE>u�HCŽc䯨\[ÇèßzòÞ @õaøaã;uRÊ׫ü`!Ï=€éö%�7 ÎV‹úJî7å…ÿôô-õ%¯þ ï6¯¶@´aÓpõ Ã. Ú„‡ÂsÀ¿Ô�‘E/dúÅþ–÷t.±ô¨7ßvð7h`Ó"ܽ†ö¹ØëÀ ;÷Xg#ÏÉÛæ¶×p!Œ}ãŸð±ò>åh1È5Çq?mØÏ ÜotF 5(SŠ£ÝŒ1#êiøzxu°²ÿBTŒ1ÔÈ›Q§ÐÏ¥1“ëÄ¢q¾—v„�9f c=𭻀;MâsÂ4`ŽhcH ÿá[øËÔÓùÓ¯Ûhd–1oˆ=È;èUÃ0!¢ ñºA,J*€ïèêN‘BD¡[×?#�i†4À‰¦FÊŽs˜Ñ"�w�ô-]ÃóÅQP  @A�‚ž›n V±*¼�@€ü“�M� +2Cë!ºN¨[½XµœÞ&„�VÂæ@rál¾oéá]¬sÍ�žª'„—ç®Qñ@A�ï.ØÞ}­#©ÃÕ„/eŒy¨r™¿G¡\ABÓ¿*(ÝÆ^Ø_=G^vœê¹æùØ×ºÛçˆwpâÐýqåè¯Ãå½ê÷Þ2z?wo~ιÃê©l±}éûãwVB>>å+…œÊÁL-z¥˜ÖØæÓÊ�d@`Ë�AÞ‹€‘–Ý�U«‚€ÊÖO�rËV ñÚÑ6æ@©Â©ÕÊ•“zÓ§g,épŽ–áQÿeøjaÞwˆ6¾?ÞâÏrPˆ¯> ×á'N{íð�Ïõí=×óÏxsNà7‚½ß é6€fðÀȾ¡:¬k*EPÚàEÎM�ßÀXSHö\R¦A{xÂ[Ò0T‘‡7Dt¿zÛ7¤¢\CóbC‰k/å'ž³ÇW®øTP  @A�‚R ”ËÈ*�U :¿&…:ó; àç[¿K4eMgï�³ÖK`ZE¢ÊàA”– ²�êi®`Œ5Â4­Þ>®zßë¹Ô‡ò{j–Ô/é£Dç‰ÈÜ÷2¼ Ci ¢gÞÊé ¼jË(‰7ÖÌ)LúÊþ@s�{ºXG]nÓìZ-æûÁ)Z/ zÖè¸ãÙåe?û/öÎ/{ÿWoÙ‹«çÓêø´ó/îÍ/·¤ïBý�«CÞç½l}ô>Far�Óžn¬|õRyùÇ]ÏÏ%àCïÁ4Ÿå™üÙ¸·§òÊ5Iõ 5g/©›ÄSéÊwDcüªTOsã`D0:r3g9Ç jÒºg4ô¯ž…>ù+�««ô2œ±÷|ÙÜo]BæåÎáÚùsL¢…­¡N™ë¾˜§wâ0a³ -�j´ Ýl;Ù9¼îO�2Àpôyjë�×õËêä½ßÄaØ~óg�MŒeë´imu-€V½Ç7¡W™³ë„â?áRvêÔé�ô"u~ž�ž /æÅÛK� }²T ¯fóÒ·Y¤]Pyb”´"€eRÓ�Ù]õ„è)LA2xŒ „¹&àupĶÿôx7kÒº>D´9ø@=£e[†Þº®Éûà•›#–r—à,Ϻ.n¤ Ü�Œ�ïs�çM€ÏÂ{“¾Y¨0Ö¨}Ye6�V%û-ò¡Ëžûh–ÿm)=Ö7ëçw�G=ì­p„Nç>C[Ó,B±“ÿ™¶X7AÒ*ù±7©“Þû^7çyÈóÔc¸Fz<ÖÍ@uc={c�CÝp Æë¹“ûšõÆ–¶‘C%íï /g@H^XN.xîóþ}òXë‰Ûá½»;€÷ò:sŠ`·cÀ½„ù뛄ä׫¼ @ †ùá×Z�Rž¶ª;X¯ÓÏæÉ¶Þ˜\â/ýz(Bõ“[ºB…­Ã&†z£[ÁVø]ÐÔs]ÎE{ÛCßcò` Ð8Àñ¡AÉö6ÞÔ”Ø!‚äÃuAæEH`|Tïñ<5Ñ4ºÐp@à :ZÂ_|Àã y'/ü8våÓà÷[vrô‚MIºA ¼OšxÙ¨wÛt¨§©+úØ� ÐÆèÁõÅ^tl¥²õ<ŒÆhÀ¹¹�ÁäžÒÔvF˜Ý†nz…÷;Èà‰4&óý·ãWšJ+ù‹ºBOGZŠŠh¿§ÈÛ[¨X?®Æ›§¾�²Ý›u@>·�æ�Oßá b¨§:ç �2œ#4”u=˜w.Ñø! èÿM *ªDQ�ÏM«áþ´]4>·0B‘F ïÇ{Òj#M‹£ @A�‚ <+\û¸×Ð)n. )¶J˜­»·®±ùÙF� |‹Õƒ»7Byã†À�õ¡ºô.¨°i2ä­ž¹RëY_]ÜWP  {?„7Äni=bCŸz©Xa°r|Õq–žNeÿŽtí›øÝûþÞÏù»�;—_ƒ@O||¬¬�–éƧ•Ï<.*=³`,N„àhϤ×>ñ@”�è=è3ùûBa|PH~îàëüy’žýÙ§ûd•Ÿrã :ÝÓ?/¨Ä/,&ï—¼ôµRî=�ÑžzäôÍû+ÿž7#)Þ|Bæ'ãëñ„}Ì‹O}eq¡ @A�‚žƒ*.#ì9ϨDÍ=Y8|ü\üÅ«·ª�Ö›Ê- JQ× •Õæ…Pò\#åvkùì! @’͆0&ØÀKrÀ:ÂÒ¢,ÔC];”©7¬¹ûŒžð;„çO ¶ÛÛx»3Uw¶ðð¦Ÿ5°ü45 ¡Q ôã5:Î÷鑾I*´!r„[ï5öÞ?8€±�åÐVçƒ @ιÍËÐÎa³CÝì³ m”?lSú�Ú?¿ž·n>o(ú]¢”ui´cÑTƒð§´5{Úøls„\×€«Û[»Ùú&F†<Ãò¼ãÕ ¿LNq¡�þº¸ŽÑböºó¤ïuHà­Ä¨§/»<Û�>ȯ[¹Îò׈è04ý¡s# �ð¾ŽO¼:0ŸÀ<Ÿ(kèèԧцm@b ¢ÏéwÛïâÕa R�-øbýÖ@8]$£hË”GŠÍÑΞao ]¥�ßåÓ ìÓ, ä7 8x8æ2Áz½ã} ÚDîzÆ3'bþ¶ß�€ÔW‚§¬;u ŠAsÇÏïp»·X§ŸJ\Û£ß;çÎMû»„RgÜYžõÛÖèe›>¦Ÿ©4tŸÏ{ÊoãÅ.ˆn}ÓÄsŸzÖˆºÐ]†—©_k}ƒöÌ´Q#“æ)j××h×~6}êL�HK£.<¸[x ðeñ§ @A�‚ž‡¬[n Ê,&†úѶ½¹ž­,/àÁ0ßÝdMŸ8a�"?›°5Bí³šWÈ¿§µ—‹¨“â((PPàù(�Ä÷gæ�"àÙû�äN&§žãùiuøy‹z–2ŽëÃgy®§ªÅǯI�¼¾*ÝŸþÜ“<ñ5«Z<^P  @A�‚ÏAççQ%¢ HŽ›Ÿ£Œïô­Iûh¿¡ÒTïLZ™­ ì¢#ôñÆú*^=æ�¬g7>ÿ¥à|(UU`ž¿üj,ø"m‚>ÐíE‹¼§2v'»úÙgÙ/~ùËììüy¼þF³ KÙßþüïÈ¡Ëwòíæ`Ù‹|QVA�‚_�Oßã~µòŽ>åÖ;ÛäŸcΈ/‡ü£õ9úüÑò_æwÁ�ϲÀ™i'ü.p›ý‚«y»Âøý Ò¹üñ2ëøUË:\•ÈÆ‰LRî7ï¶!¯«Dä €êÌÙsÙ<óöÕÏ>¨Ü�uæÜ¥ËÁÛcMºyë^6{òd¬Áuk-¼e¹o(¼�õ%RJT°”-,.aÄE¨oÀjA»6^îæ¯6”·( æa¨ ñ&% d?áª7Ä §Ý3ò6 {„?‡y\÷ñºääGÖ=di%ÂÒOöeô�v‡ ¼®Þ·ö_x wñˆè£:€YÊÌïXpÎgû{ àTp0RP–`£à¹õ7L¸½¿#CsèÓ0à/Žðˆ….zëþ^žÑpA�W€_c7éa>t×e`@ž!ÍõÞÌô}F?ØÁݜ΂¸-0[*U�èi%û�œïØÕÛÜ`ÈüÓ¡™÷M¢>Ì~Ó”ðDîPòYÐѽD—÷ª^ž�lö òµ»ÓFèEoîú*†öam²åj±¾ºœÕwÈÃNÎûÈåN‰y¹Ã%@lÚ­@�~h�Ÿ]�m †({ºØæ!<ë�¬Ã×l�ú7 ‹ÓŽC‘ ÞO´;XÏèÐ9/m‡t¥¸44�DŠÐ3˜�œ›ÊNŸ›‹È¼2T¸,ú×¶î2žÛ€º-C‰S#K éê��b°y¢../[pêCê,3éI½¶AŠRhÖg8ü.s,G”~hÞ'?û9p¸QƒÉ­>7‰AJ7ûôê�+–%(-?€MEùÆòŠ¡öŸu– OnøÀÐï%¸.}Œº¸Mú12ˆú[GÊÓè@^ÁÌ" #œ›Œ €±iÚ R¾^äqèEÏX’Ǥ9c®½Ïh›}k¸ýo”ŽhÇQ#4°YÒÚLk¯â((PP  @A�‚ ((PP  À‹¢€?¨å^TqßérT>†—ö t»�ˆô5wúrÑ¿�ÓÆ&gPfÖøYùK¥ªÑá9…ôEA}”̆½xùrvåµ×ÂcJ` #{õõWÂ1�^ôû‹ò xL¡¼ïÊŒø´zÄTU~Ú©=_|õq›_Ƨx7󚩜ÐIçÌÜJÊ'ŽGòG^kÑ·Yé#õ9îkð0;w&;�¡Ó2ú»¿ù«ÿ�6V³sç/®z#¢‡²]½úI6>1ú¾wïÞt$/úx5[$ùý‡ËÙ©AŒ42LuAn�TAn=³ï÷ã#xö@šVD€º†‡ð>Àߦ´í„/­,’´á)žÅ\ß÷û1ºF=Ç m.@/èe>e½ç W­ÃOW¯h½ÀñSº@EÀcë­íV´!êÀÖæ}á-ã7?}gƒPè›xÑŠ-—Yσ}·Q_ôÔöئþx‰Lòyz ÐúùœåïéHÄE�zÃ|w�Ïw×Bs¨GëÝ@üN+¼ëµ!Ëå» pœÊQ'ÀfÚ*XÙÆ3ws£aÄ£®Ð¶Â­SS¤¨‘—Ør Ùè©kuAQ�è « í6yºw+^Œ7·÷†ØBD^ó‰Qu¹;”¥÷³FxæŸÆˆZF¿Y8n˜“ÝôF Ï7åzÚ_ JQŸAÊÔ{œŽ�vv¶à¹]òÝ“âÆ¾µë^£.æ1ïà_Ç#y{ý!Àþ~6YÇsŸn©Á»¾mc-ÛXÆHè›Ìïð�žÐò”ï†'¡ß.?�/&ZûUà Akpa€c¯Y /q5|0ï61ŽÐXž££_~woÆ/îø€±c¾{=å}‡žà5iËßh× ¢�û¿F(aÚ=´‡HEQ¢ uïÒ*H!ß]ÇðrÓå)œ½!ê5Xž‡?,kËt?�°FÈz=Ö�¾aÿ6xo#Ÿ×ø¡AJ‹~æ‡Ö�ÛÔ£^äCg˜ÞB�ššp£àyÚw–h´ÑŒ¦ ïhhÓOõ�Ý-RF`¤À‹Kk<ÂËwH…ÁxÝ!¢…cVƒ˪V�� �Ô˜o&²ÑqR±§�oÒVRÈò¼"O� 1:�ÁÇP6{æ\62>‘-Ü¿Ë^¸ŒAÅùãn4ÝFs”ûƃž-ÞY�N—_}£Ðƒ+‹_ ((ð|p¡e¡siom¬x^êÄ{`"6·]B´{q�GåÕ*i­½*lª\ÜW—cA« 4YˆÙ̺«,Ž‚ ((PP  @A�‚ ¼ |à¹LRu¾€ ¿ "‰ –ÕÍ; @€’rlÜЩ þN„üµ­L†¸ôɵñ׆¼h‘ ϲU�Ÿ�?—½ýöÛÙ¿ÿëOhÖõìâüÙl~~>ä*: yð1@QLA�§PàE識楟vNÊ�Ë—þÂc^ ¨§Wµ^žmÒ6[ïè̇ˀ!ÖV×Èw®7fFØã©©Àì›ÙÐt#{C¨Ï¯~–ݸö9ú¾eæð�ìÓßË.Îý0»}ÿa4yн_i Oe@J½oÛèë¬K‚‘{ä#ްÏЬM.âu@ßò Å–×�¤à.®lpy‰éöK{xú³o B òyÏÏ€�}ƒxá`MÓ/xfsŸ^½¬FÔÏpôÝl VØhš‚¯YR7AéH‹ð¿zMf×(ž ÄÕ›[º ˜ûÚgìÕm¶;yÓnÚ®7¿oÖ|0€^rLø |»>v¡‡aã` 6®÷9ëg´�w Ê÷¼šötR®ø¹´”nÓž”÷}‡g7Ó«@� @0hOÆêý ê`¹Ñë[xè \Ûçëk¤Ú¤N¾S0S ‹øz£;¼sÉ[o(z=»-r—¿¶±ÝÑYŠ¼çœ¬  Sžu×h�F‹]C;ó;C‡1re7Ø�ØÿÒbKzµ[ð\3©w¡xUÛñöI ½2cJ�Vý³a¾Õ'ëÙo¿oÚnqNð:öôµ-æT¯E@ž Ç;ôÖs{€y ƒiá˜$ÇOpçÈ ôÛ0Gq”Jäž$z*<ÒWßË–ZY‹6�Ô0,€ï³¡½lq>¥NXoÐ/�†s^þ¤5-—Ç# 3€/}Bßß<æ yniµ x¹L„è-P,ˆíüÿ$6åÒ-._#ÛãøŒ{øâØÂÎ!@ø-ÀuC›'6˜pÆ(Dž)—‰¨`ÿùZ®u7ãü†îd·¹¯LjV .­[™ztöÉçNùúÅ8¦üJe?«b9TŰ¢�0ùâ ÆéaЫ8Íé-®¡Œck>›œ¦|<ûSùøm=ÆàCÝöiè`´#?ĸ¢Þzk@#¨�Ò70N(w cÉ26ZÏNLŒ›8æƒ0Pà£NYY62LŠ" yôL×ht˜†¡7¯¹é-xGžãÇž FX$ï¹Æ÷ïÞÎÎÒ/g/\*ô Rñ« @A�‚ž‹.KZÞ¶ªÃBi^ôŸ:wéѦÉp*{l")¹9<a|ÖVWX�*ÙâƒÛÙÊÒR6�'„ iq((PP  @A�‚ ((PPà»N�PÒ¢ðná]·‰"vrj‚*¿xÿ]ÚÊü j¨ïiÖAÜ‹„LÆsØ(#Ûz}ã)ZÁ{{oíõš5WvÐUÀËüÑNü@{=hõjÝßÈ6–J±¾úlß0Özg¯Æ¾Îys%›ÿÜ�éz±Kûð¬Æ+$8À°]¸foWMS‰Z Âù×Ñ �hØé”£\�v—N€VˆaHpšˆÖ“wó¬žÞm¼‡‡ ;®oÙ¶²Æ të=]ÀÛœ5÷zU�xÞây½\òMs)ø-dY<—f]ìð#_ëáÛˆÉ×7/xézmæÔÖpÃ>1 öÞÞ&÷sÎç©“ †Ô¦ª¬é®ëÔE€ÕÚì ÌO_'D¼)ºð£€{ò”—'Rtƒ�ˆ°àXpîêÃû|)è«AÂ@?t¤l?›s\^¤âÍœ‡¾ût†!ûWo܈1'øÜn/GýËð7AÖÀ ½B´Ž…‡b¾ŒwîèÃOc÷�ôã}�ÏÉ“¿ÊøÖ{_à[Ã;Ø\ñíØ35 ƒ 3ÚðäÊÚ&tX¦>¨;%éÝ�›Ÿƒ�²l“9 ÞŽ1Ù¤.Ž1÷Ón,>¼Ç|@ªƪÎ~KÂçY½9Q– ¿wõÓ '³Jq((PP  @A�礫¦V’òÍT‡ÝÂBeh-µ&±N]m­S ³Â›YsŸ¯`…*XŠõÛŸÓfÕ%Øí¢‹£ @A�‚ ((PP  @A�‚ßM ò 2¨ÄÔ»éåË0*2QÝ!o=Ë‘<¹QnRÑ&7ÖOe2ºÏ8òëÏRÖ×½•ì£w.¢<ýèƒß¡œV9OhT�±É;©¢×0­ÖñåÓòë¶èßó‚JÊÚ…‡ÿ?¾¾{Ñ5~¶äE¿õÅ•§ñO1™}ð»ß¸Õâ }Óüí: ´jçHO¸õ;BäÐrñKPL0ê»~Ø®]ÀÌ{äls®6· çÄÄTvóæ�ìÿù?ÿ:[^¸‹Þoж�e< ¤óPÖ­zðp)#ÂÉÄÄ$yƒo²ög rQoV Ð*{p˜¼Ï”ó›V ¡O4ÄòöæZ¶º«7/žßè šAÉhÞ!ö¶^ɬU@LCW r«[ÔÓØz›ÿº i?¸vz °NpZ0·C™‚È]® Ù¹< *‚ÄG¸kÁÙ:e7Ç Ç?oŽ÷~Á_žÀÜÔsœ2‡]®—·^ņºÖ©È0í«QºÅó9½û"ꦯ·`p �Ûr÷q×ø¢ë`òЀl�݃eö6Î4(]Âä < þ ¨K ç\E}] S]‘¡ Æz«÷v‰¼Ý„%¯ÐOuhd½ô\÷a#…æü©!ˆ!æã¼»ŸÜÒ®ÕïK )Ѝ9¨w1|Ø=¥mwé/Àièl ¥}Öã8þ DïRoÃ�F,êÝ`»oÄôÈ-¢›g\V~Ø¥ÎFvذÞÝÈç\‰º÷a¨Ðíê‰,° ­ü=v˜ ín¿¤zÐÓÒOàúht#O¢a¬Ñ Ïz ·C½õ˜†;¸ ½ÓGDKØÇð‚ºHƒMÀ|®d£õ„÷SF#‹‘ü¸±•mß~—~h7\ÿf›èÐÉgí¨¢ÞÏnç°¡©õo2�­¯-F¸u£9ß3_pgÜëÎHCùLðYþ [ˆ(`¼Í÷àyh¨A‚cUà^¶Ð�ÁBjðª}‘3¸g{»¾§Eäw¼’^Z ®;.œk©j¤ûé0Nõb×èÈFØa5= �Þd^ºžm¬.’V¢Jô‹�xÖ¶îtײ;·oÒnæ�á ø¬/Œz ]ÿÛ_ÿCá�NßGA�‚ <'\ØÌ»lšÜŒªôˆ˜ÅÅœ.nL6ÍÃ⺶ºÄ¾›‚á\:äLqÁl°°åŠ’oZàyÎæ·((PP  @A�‚ ((PP ( ¦Uðw%=.6/ñP1-0ð|G‚®õ>9Ký½}ÓJt¼›()oܸŠÉ‹—.g#ä½]Y\ijq @5oq¼, bxDHÞ—õ’¢Ü‚ßÒì»Xµž€¶˜×0âýßü Èðâ!uìÁ…¼K[ëílrfç½±���½û[> „%XˆŽïôì\äN¸ú˜ðì‹ ðð4lùN6=s@|ïϵìõs--âqÚÈZkeëÌõ³'O‡Wgwg+€L�*ÐÖ¬Íz™Òmê�Lo l R™§yƒ�í{Š i”†>QGn Ãs€nÐT€LÜXp¯XiT½� ß¼Ùê8ÝÀãV€ÍYÏ¥E`{«ÛNÞÏ”¯a(#fY€�€Á €Ô@Õ.€\îñmmX W«õÈ+­î(k—¬¨ñD‰2[è7;D£iÄz§×°Þò}z9j`èíÑÑF6B~gÃQ{Îðç:"©;5Txª¼X�\�vÁì`â;÷"N7^Ë€¬­^«cˆ`¾ôŒ iN¼Œ ^¡~æg—z�vžðêЫ‹Gn…º5ËÜGô¦ÜóÑ&�JÉ[‹û|Ö~T´NùzúÀrOpÃ|ëE^Á;–ÿ&#A}nŒ¨uŒ á½M]<ú‚Køqê‰q…¸¨±4.k¸ðmhþÝ}Œ@}÷hPЗçÛÐÝò+zXÓwzÅ[†kÝ6†Æ�~FGáć1Þ¤îÞ#ý /^#L½Àð>‘x¶á û~ïrX/kTõ¼¦øW©jZ Q¯}@÷mè­W}½†AC¿s}ÞO”„ 2Ïêy.»95ð‘@HîeOgé)C`øÛhC øÖ@"€{ú^Þ-Ú¨W½áñ;%mÃÊ‹cbT‚~ ¼¦�Æ:òˆ°Ì(×wS=òwè7�(4@±.zå[7ß¹Õ‚ŽÜgÄ„è xYÈÈuÏýÒg ý~D{à㤅´÷9 )¬#ú®` b4B®��fµ½ªßè i¬Ã�Uì1W½Áˆ»|^[!¼ü:Þß”×À ‡.£®””¯CÐŒ¼Oº_RÇAǺ2¿xÏü1XÑ[Ÿv3§˜jã£ÞÏÖ–à�ö ¨—é£MÓp@OÃÏkØóðÞíl|2…vïR?½éÿªDó…Þ¨ðIEND®B`‚colmap-4.1.1/doc/images/incremental-sfm.png000066400000000000000000004031261522646662000206130ustar00rootroot00000000000000‰PNG  IHDRÚë¿âûQiCCPICC Profile(‘c``RH,(Èa``ÈÍ+) rwRˆˆŒR`ÀÀÊ ÊÀÅÀÉ •˜\\ààÃ0|»ÆÀ¢/ë‚ÌÂ”Ç ¸RR‹“�ô ÎN.(*a``̲•ËK @ì [$)Ì^bdo±Ó!ì`5ö°š� g û�Í—f3�ìâK‡°@l¨½ 蘒Ÿ”ªò½†¡¥¥…&‰~ JR+J@´s~AeQfzF‰‚#0¤R<ó’õtŒ Í@áQý9žŒbgb€›#ÁÀà¿”��åB̤—�a�ÿT„˜š!ƒ€>þ9É¥EePc™Œñ JJN†€Ðª pHYsgŸÒR@IDATxì] `EÖþ&™Ü÷!! n¢ˆ, ¢x-‡Š¨(ˆ‚à"‚ ¿º  ‚ ,¢(¸ "¬ÊâÉ "‚¹¯9È}ÿ{ÕÝ3=“„$��W0éîªW¯ª¾ªîªþúU•¥ŒÄ ‚€ ‚€ ‚€ ‚€ ‚Ày!àr^±%² ‚€ ‚€ ‚€ ‚€ (¬‚ƒ p®$%'àýÄ ‚€ p©#Ð0,áô»Ð.ád é'NA@�Ú@à/�ÚÔ†Ñ!&ˆ¶Ý»wcòäɦ`9½˜h×®¦L™rÁ²¸î‡Ï±|Õ¿.Xú’° ƒû?އïýg%Wi:k¾Ú‚‹×V.‚€ ‚€ Ô�ß6¿WñZ•þ¡Váe2uô"ª ÉŠ ‚€ ‚€ ‚€ ‚@ýE@ˆ¶ú[w’sA@A@A@A@�‹‡©£Îù>|¸³—\_`vìØ��;w^à\”O¾uËvx~ì´òâ#‚@=EàÕ9/`ÿÁ=mîÛ·m�i/�¹hó'A@�‹�Ý{áÅ©ó/¾ŒQŽd«‹²Z$SÕ@àØ±cX²d‰Mò¬D[óæÍm‚rrq pôèÑ‹##’ A@A@A@A –èСC-i5‚À…E@¦Ž^Xü%uA@A@A@A@�K!Ú.‘Š”b‚€ ‚€ ‚€ ‚€ \X„h»°øKê‚€ ‚€ ‚€ ‚€ —B´]")ÅA@A@A@A@¸°Ñvañ—ÔA@A@A@A@.„h»D*RŠ!‚€ ‚€ ‚€ ‚€ pa¢íÂâ/© ‚€ ‚€ ‚€ ‚€ \"Ñv‰T¤CA@A@A@AàÂ"`½°ÉKê‚ÀŸƒ€…8²s6oÞŽ¸ì|=QO4jÑ ]®½1QþNF$•*(ëmeIÆë5%¹)8|, %ðDãÖMáçZŸõº"j’ù’\Ä>�ìâjÔ™! WúWIݺy",4 A~5É…È^ ,%Ù8r8ùÕ©ÿ ”GIVAàܨS¢­4/ q <èó@ÃfQ4è;·LJ,Aà|(IÞ�y¯LÅ®¼òZÇÅbó†w|õcxnx„ÕéQ>}ñqDÀbÉÅ·3Çbu:àqÃ,x(ÆQà¼:@íïÕ_WP²ÍØüãr¼‹üìÓ¸5:¸™‹Û‹ëóë9Ïãº÷.—ú¼¸kDrw)#pàó71á ¦ê=1å݈ñ¹”K{áË–“œ„ÓÙð CD�÷9e(gÿ7xbÚ¦jÕ™]¶ê¤ü¢®Á?Æ?ˆ˜àËtàM¤dâÉ4”YÑ I8|*á%«F²ö$*j/Ùû×al5ë¿ör"š�K�ì¤8M΃›[ååôò CÃÈê-Å]ôgàð¡ãÈ-òF“¶-P�ÞÕë4«GÖ¿‹Å?ñ ÏC&NB›s‡\ôõ/¼xÈ9úž�9† à‡¶oEÓ`wœ‰ÿÛV™OÛùÆMËÅÜÉý!¶m¶>‹ô^/Ôzé¿ œÙñ�ÉÜ´;:6�òñë¶ÍHUU±Ëg?¯©‹q]XýÃÄ;€ ADÛåPŸöΑÔ/w\ÝÙ˜Ç\~°ÂBÇ‹€]¸T+…>"üçùX‘Kh÷�¥ÃÚŸ[Imý\5êÌ&[uRY4¾yiÌ)¼²àhëùµ&%G_LV•íE,«nÕ"!T�l¬÷ Vѳ¹jç�ë†üOô‹¡>ó2tÅÙHHH¥wd+6�„ïEAvRNåäÃ3°!"C´eïýã_^K¹óÆÄ%KqõÅ�ÑjbU§íÊÕ�‘àAŸÿåÙ€«Y "V7X �b¾‰d ¾z4žvÂlã™Ax$í V¼9’(I˱à›N×»YÝdH´V �³|€ªVüz#dIÃË>׳�GÆ¿ˆ›ÙiÞ!CÁú¥¯`ùv&ƒ³°tõ6tu=\.¿w¦zS¥’QA@¸|𥲸×éPºB@ýOAVOѬbjdÔB„!Ì¿ü3s�VÚ^©®�Ú�”¬"¥Ý74Ê¡=›Ó¥Æ .³’ãq"5‡Î­ð i„ÆaåÓvˆ'‚€ p^”PßÃw¨'÷=–Bœ>~éyE4­†žÏ<­®².†dOì?HÓ#56Ç7Œú>ê¯çÔ§äs¿gõ€'¤%Æ!%½�W4CoS_¤ú¶D"(#¼ŽXÃF¢~ÑÙ™óÊëW?žÊ*¼ü"ª[ìi.3ù’ΰ­:éj\±.C–Ÿ‘ ÉÙêÒË�ûŒ Ç2pˆS9ò³Rpòd:áæß° ¦†çâŒþüFa>ò-¥$éâ · ë M_ägm©zÖ†4 C?/#[çw¤qÊh­6]Ñ#'<‚ßF-F"¥p&ƒŸµå]µ01EË?sŽÒ˜…ýÜ|T¿èP¿&Ù’¬$8xŠ ™ÉÑ8£Ù4µÖö…Sùòs]פ]æS};‘ªÚt‘÷D#Âimšœl£rÈ º %V7šQ{tªg‡öêQLuÅÍÓÝ¡� kùµÒ}dj×z`•øTÖ^\}Ñ*æ*]Kù¯hu�¥Q69 —$¡}±pÁPk}˜QÆâü üñ#¼¼h£ò:´j߃U¿‚*.�£� ” ¡'éÅáèµN‘¤!öù¶½Ó&¶Ef‘š×³¹¾öRü‰ø–ꄃ;UpI fRQ@÷€»7 €ØRY©‰HÍ*¤œy ¨AT0(ãl[h0˜~êÒ2 h=8’ö"‚"^•š~” ãô)äPšV„„вgw–Ò<œNÔâð€2(øìù9uü8Ò8"8¬þáhRegÏ�„ÖK¾üfÓuFãÞÑãÐ7&L]3¹ôõ+ñIÙýIÜ\ô…n‰Üò÷0Ào FÍ|‡di½­á×áûEï(b^0÷õAŠ<9¹s^[¸\Ÿ.¨'C‡ÝÃÈÁNëÇ&aíû³±zåÙÉuìõ"¿çEòYÿyå!¬¦|u¿g4,?ÍÇ�l½grݼ‚á·´5ùySÍrs¤‚£k¨lKèŒ0Ð ÛW,×ÊÆ�Êù¡÷È×0ðj +Í/›–ü‹·íÖe´C‹nàgŸçë*óªw¦â‹Ýüú`r^0ðoO ·Q¼.•™ë"øêa¸©ìÇr8y4Œ©Ï÷‡9Gl}»éß”§óÄ)µ½ùYŒy ;¼Ëìm¨FõeÊ®í”:FQÀ²+reÁèÖ»;v}^‘°ZHÐÈC5ñ0ÔZrã±jÑ\¬ý£|›ñ¿£G?Ž}jjÁѯ«l¯9GÀë3ß@9m^�1bìS¸.ʉ@;ý>ž7ß:ÕŸG«axõ™~²CkdYŽ‚€ pžäÓ½ƒA�Ÿ†9G·`ÆÄOQîièÝÏLzÝ£èË2�½¾ziÞ=HýTÏûÑ«p#ÞÞ˜¬rÜïù©£�çw¬ÁôÙß+âÇ\œ7ÝŽÿÞ tæÎ!¯#)¯ óê×áÌÕ ëf½Ž5ÇÍš¨{h ž¹#Úѳ ŸÎÆòÌ “ónŒOÅízŸê3¾zi‚*GÄu=Ñ;±d«V#–_ô-˜=µÐó÷è—obì¿�A8¼n1­¼0ƒÚQ™sOàÓPºŽ:8‚_Ô•øÇ3CÓ ªQ§M}%'%•ø³w~9¬mÂÕÅD�`±dãûÅÿÂÜuü)ÒÑu¾sžz¨«}ý3Âqû¿ßÃŒ/ìØ1Z\wÆ=޳⺮n»¤¼¯ywQ¹ºá4ºßûFßß‘úÔ“X2|ÖØ¬Y’1uÌxjþ7bé[}ñã‹ÿ¨°½ÞýüD„­œ®Â: �©w·4²®Ž‰[ÞÇèù¿izÞì?½®>§¿¨¼½Üãµ�îÏ/)�0ZWq¢}]źÆÒ¡tr!\¢x¹ƒ@ïúVGºÃꂘ>c01þ0¦¯‹'‰ dò»‡ó”DžZwê[²›} ŠDˆ¯£.3rù©qØ{ø”ú74i�ðJä‹3°w‚þA ‘-ZÒTIã­À¬•>ðú0îIIçgЇ#ý#�_˜}z¥9Ÿç§&ààñÓêã�ˆlÞ‘N‹›egjF ,Ï$Š '+'B±Ìi¦&FrZ›iåÉÏg°è£ƒ’åØ&G¤f>ý¬žžåÈ»*ñ!¼ÓŒ÷í‚<êÉØ<‚þYÐæê.¦DOëKÇÔjvUyk©™žjKįǔH>·ÜÕ¿ýgRL±Ý›öÄã›cËû k ™V=ÅÐÍLÒ@â¯ßbÙŠMÚN}!îhË@ ¼µ�Á•›ø –¿»qÌßν)n¿³5v}±‰…xdâhD›¬Oÿñ-X>�ˆŽ=1¨ÿM6z§ÿX�¸Á¡L*÷VxpÌhRþ«ž‘ 9Ö"ùé4iBsÁÝîA[�³¿ÅÇ ž�Ń�ôu’�^PÆ(rLó÷ï€H�4‰c¢çVÏ ¿�Q×5¢Žbä’‘»„Ís±\;µý-¦¯ùš£õ¶•{uÁÁo_Ã+Ÿm¶É{�Õœ%�v¢"ŸÃÛhý¸}é˜5c�"†ØZë‡y�cõCœ­ ¼pø¸Fyìúv*žÏµ[ðéùÚüÙ|#<é£z¾þ0Û¼bNæÍ whËœš”›4Ûæ®&+ÙÒ°Ÿdá›…Ï J_cŒÉ¿ï^Šå¶üÛ%o[a¿0ŸåÄܱã°Ëæç‡�À,¤Ò¦ ÈÛ�O¨.’{Cô—E£.Òv.Áj#èe.ˆ[ކãm}*¦Z´ÿ•¡ŠœÓÄýî‡Ä$�ÔÛûýlÌñm`è&õe$_ÑÑàw}8ËŠžBï¿´'ë2ÇgDË^Ïàµ^zlƒd«!ª|sŸÀZ"5§µ™j3œ‡‚¤õ˜ób¦Î{�©W¨ª½æZƒ1³—èºèãFx4|“i$q^,Þ�>as§¢•iÌ�°ëßvÖ‹^Fó´¾àÀL[Üÿ|¤K9ËD[r"ç„@I‘1ØIÆ"ÙÊ»|¬˜ý¢Þ˜Žî:ù“sàk žÌäœæü¢ÂàOVÁ|™{¯� Þ­¼Š‘£÷/‡×}Š·uyóáÀ— 0þßûl^~¡´hcJM†voü #ÿÈÆB".˜ÀrÈ+‘lÎ.k÷—=†I‰ònó¿ç¡m»™¸½™þüÌ9„×F̃½WõDDPÌ}öî«ÓqúÙ‰¦÷F9·®ÃC=�õ®;ëÐ<ûVC,þ¿®FhÅG&ífÎÆ‡D>j.¢ÝG;is™³âÃKO½‹7—�BÔyqmg‰L/eLqª'¬»ž >Ô& ¿|éE>iZ<Ñ"ʇã5â2ö‹�0Ã;X#¥Hö¿¯LÀÛ¿éy¢C‡¤íNPíæðÖ/1rWæ/‚ʺC]W§]Ò¸gãœXbӯẛpe·yõbɆ·ïwÃÿŒá–‘uäU ÏÞ^�6�—KˆN.ãäIÍÇËJv‹Ú±ºøüÍÍI™é²¤ÈžYÛºŠu�¥)}9.iô1eeÌ¥,•¹„Ÿ?ÂÔY«Ê½ÏGß4O�ê‡p+Û]¾{çU,XWþ¨CßÿóC{˜8¼llù`6^_[þ]0êº!ÿ„Yw6Ö<7 ËHmèuà6lÁÇ[óìÝ_½†™ÉOÀÊ·g—“ãàÎýÇá©A]èƒDÞyøI¬³=~â1k$½“ࢱñ¹Á*ͨž£Ð³ðK,Ú¨¥Ùsâ"<ìÿ_ ÿ1i‹Æ´å3ÐÆ4ÎGqæýíIl$½}'-ÂÐ^¤™]ÕøœZ3ã—Ù1‰_7 ƒ×izzo¤4—‘ž(Z£íuÓmuŒ¥Êûùýqh&秪z±Klæ›)Ø@$›³+Œ[‡¹³œ}µëëÞÃÍ_B�(m UÿæÉf8÷ÐPøf"%“–…øcÃ2,÷�¡]#”H.Y`L�jÍÙÆá+6ùQŽãÚÝÑ>À{ëØ<ÜýiRaf&i'’o×:¼v$ Ï<×Án½f¢"ÇRèýà(\ß,!>ÔXlªÔIp«ÁvOÑ ßä-o�l^ÝñĸQ¸ºÅ)IÃ×ÿz+Ø(}¯ïŽq·F¡,ÿ 6éM²í�¯àÙ¾mAÁK+çNÄqYHû1É4U¶¥fίS÷£·!È•šqüÏxsú«ÊºáðÚwðû ÿDL@ÍÊÝR§1—Ž-äõhk¶,{ ï²¥ ùãS‰Ò¡i‚¿~j'ÙÂû`ÂCÑ2Øgý€×f¿a'cLJ^F»Æê×ûNÁˆ;¯TÖegö}� o¼£êzÃ;Kq3EQT`s™ØãžŒ¶aÞÊRïÕé³UG“(ž…–Ö¤éN¿|j'ÙÂà•D#²²(Hû ¦¾¤v¬=¼ö?8A¤Wã3[0§õe*†Ã©Å³%îºÚÿÚ©^¿°áÓ©ô#Ò*°:vèˆ+Û·C³+šV8͵&x0qV–±ßé�¸È®Ï`ÂßnPø1·cõ«xó[îÜŽ ™:ÇÆæyÓzŽÍíÕ�î�åó—ØÊÒ{øÛø—FjŠõžoßÂ,…Ín|¶9ão ±É©“𻩾ï£úöAÁÉô¬Ÿª¬EÓöÅS]tUuáA®A 6èý·Ç1øæÖô|ÎſŝãµuLTä#>…³Þ4Cà >�e'Ù<ùu¥!Öe•·—üýåÓÊü­Ž±,Ÿ¤ø—&ü�ý,®Ø=”BÙªÇÃÁújßšxaY¬-¦7ñ HIQß]m\†1»Ó1�¦¤jä“aÃ1¥EðFY|ÇÇkÖB»×¾…i> 1ã>î#²ñõäa°Û[x#ºCÒwR¹ˆßJºwÅcîûc©34†á@ÊÖ�ñ±‘#ÓG ÜC«0nNÞÛƒÊPŒïf<‰�m|U(¢£½pèP¼Š»jžÊ‡ºa=¿Ë;î í†#ñë`‘“PqQ‘îS€¼b§Àü4.§·zøŒpxqsÔ[ìðA«k,�tÎïèr~ÑÏ?v·{FbÊôéxi새0«óo�!ONÄôéSðÄýÝl!»÷$ÚÎ�ÆnÓÏCqרç0éé§ñôøI˜ø¤]WRâ]&ß.]§Ÿ»ãÆGcÒ+¯`ê Ïàöö•ŒvRÁRƒdc‹4ÊϤñã1iÊ8ôl¥ÇÉü +7óÀ‰ÖÄÝiP­ð­û5þéÑxzÒtSþ3ñDZT=r¨KrNï·MÁŒiW~_UÚÇ·«u±X®íÝoÚH6¾ö�¾ 3Ÿ"æ_¹Xì8 }ÝÕ=èà‡�ãç`à�1hUn}/�V£ñêØûÓ,ŠÂðëËÕà�¿<ñò3ÉÆÊh�®>c^EoíI޽?ïF.O$ǃ}vþ~�6+ 2ï(Ü=x8Z4l�ȆЗ”Óù¯W<;ꯊdãKÿ¨.xú©|Jî6ì:‰ó+7½pô�¥¦¡òšlee´›Ïý�"RKqÇN+2fë—Ÿë>�1éÅÇÉÆAÑ=ðâøaz˜é�ö3V(2Š§å¾Œ'Má jÓ3GeØŒ�ÇèíÅÁuÀ„—S${ûD]�¡=[héû��O/D›oÿÖÈSŒ§‘l,äƒG¹[“§×¶ãTÕ;Ρ¾t‡2Z_§Ë¨70°£ž=´ }7¶o^ŽwNÀ„çÂ#O¿ˆµÿ;j�{xðO¥!=¨‘l|Éutõíéu”ˆ‰Îm™0pj¯…¦{£E¯WɦtÑ‹HÛ^#p‹>°Ù{H·PéòŸÎ˜ð“ªôNΣQ'Üsƒ½.NèV*Tþ‚@m#ÀSâFÞF$›+i¦{¿û÷Ãxú9Ê„š�µM»ëpï(�dã€2w´»s0úñŸ\ì�SÚ‰í¯'FLŸ@YÚ#ªqcµ>ÛŽÏ Â‡ÈŽ9£ÉÆâe®A¸ã™qÐD‹»y/r´®Í¦­ÃCOaÐõM™âÙà* ¹×èI<ñÌÄ¿!†;^£,¢[o Óõäê–Hi4vÛªõ’-zŽÀ3wk$+n÷WÌ{þF=�}ØQî­ 1f΢H6ò‰êŠÇî Óä“�!Á Z¬Þð¶½Ä1‰Cë¥Ñ#ŒŸµšw†?ÜÍ>­’ðîtg?ï ì?ÁXÎÝ­Ÿ?÷=2ƒµÿù2}üÒFHvÿûsè×L¯°šbBÄê¶5Æ»1}|ê¯H6αGp{ŒzÒ—ïC\õ¡+ Ù6d}—mŠhY™/zþß8<¨ñŸØýýïÈÒÇ1Fé«Ó.YÖ€> ˆ–{1º š|è@c©QEHÏ.SëÖyxp#ל—‡'ùÙ¯5_Çöf^OЈx¶c�ð!E•´—rI�Þ?Ër銇 p)"�šŠÔì|dgg;üRöaͼçðÖV� Côµhé«�ô^1H6ïÎ7w –.X€¥/Ä�ÎD¸±KY‹_k_¯SþÐN²EõÅÜ�—âõ×`ù‰è¬?~}ü9âˆ”ÊØù¡�d#K´y$;cò ,X¹ïÓuçnÄ[ŸïÓÒ¡¿üSèM˜4o V.]‰%¯ýÙwi.÷€6 ù{ñÝnͯÓðñʘ1ãu¬\òúëSõRÖýŒ$ß«)í•X8±¯®! ãhé¢�çÝOŸœÒ¤ˆ}GMÄk¯½†»Zjãw=’9©üˆt¶¿¨.>Ö;&cåÇóÐW‡!ªïDÊÿÇxÈfg¤ªëKÇäÎùJçKÏ9þyEŒ “ľ�µfâÒ·ß�÷61‘æŽ{}mtcˆð«oÃ-ßoú ú´ÅeZó év'ºF±¡¼æ¼´GŸn!X´-™hn5ÚÃ=qb µðöw=Ž^íÐ �zj¯`ZÛã dÏ™†MúýfèùcÃwÊr�§¹>8v(ÚI¸ Çп#ëõø‰âÄí:ˆ¼îÆ �b»»Á?ÀÞ©‡_Ý wí9Ž-Iôù1�_d�¬<ŒåXkx„)bA µ ò½ÚOÿ±C—ŽFŸ�G™]�³öŠœ`Šõ÷='ðÀ•WØÃûãF^­Ñ˜ægQg=ﺖZ¸1JÌı}:yLk�‘[r½,ð(’¦JXÝ]ÁR�D¿ ZÌßIçö�þŽƒ¿ôÁí×vFëhZ¸I¼ðr§µËÈnÝÑÈ)¾OۛɎh¶“Èñ¤tÚy§fåÓΔV4î¸AM¾èNÓi)ÿ™´éAYÁÄê–UÁ7Ü…+ì·‰ŠáÑìfô\‚oÒ 4ÛåôaiÚ¬…Î$'ÓÂÓX©,Åš»ï«¿Q”ܼúk¬ß0ÎVwí®Ö&¹tÍ $¿éyмyÚêëó9ðiwMõéªÈÍ ÷tl=�ú2tÚŽ´[ïQ³q3/½{7výº¿î�EªñFÁ‚45võ¢±Ø?Óîmwx0gÛÓ|¦’-ÈÍ@ÊÉ Z$;ɧӰwËÒ ­�<:¶W2R1Ýýzµ5Äô£?úÉÜYm¶ýµW…ßÐ-íU£ü¶¼ÆVYühç�iâA Ã=·8>Ÿ-^èÚ„–'8΋æ«ÞÉ¿íÕÓÀ>mòÁ¤ÉýSžFWu ÔLŽQßÓ£9 ±õ®�-™ÿ¡÷Þ-T|§OÒMnåH¼~‹¡ é”ÒFz=+,4%ÏpDÂ_a\8îÃU I‡S_fÊIг‘·¤·§´äz~—QÏÀ“]©Ï°�Ár ¸Ï°wD={;Lyg½‘í:«¿§³,(qö¬Ä¹_ƒÙÒs�\An•9égRq:9¬ÿZYÆUµÖ½OJ@þ �àIXÕ“¢dì<¨e©Å�}ÑÖG¯X=—¾íîÄœ:©~1Ð’€÷uÙˆ;»£™ÓsžÛÍU´Þ‡‰ÌMÞ‹Ù5;ÝU¯]Ò|\¿põ[�pw�«Ð¦Us÷\�©3¯7‹T}îÔ^«Žà$Qt²Úø¸q«¦#½?ÿ‰XV3W"&ÔOˆ´zfØÆ*ò~æNë§Œ~^ù‘¾b‘Oo=‡.Ì<±³† ßs3‘þôp¬�'kÞv!§OCš¶nñDcÒÔ¡6K4Ï�«1æéž6�ÃcqŒúØÜO ÙΘ9m�iúiúŒ%ݧ‡cÕ!2}øn;2ÈÎHZ¥OÆÓÞc›ªéÛ´Föÿ/¬¢Ì¤ìÇ ê¹Ç&¦A9ÿÀ`ûÛ�oSÜÿøÃøõ�/)œÖµ§gp¸/‘b´†�áøƒ-Ñæä¼1„Öbî×ÂÓæOQkàòk€Ð4Ä>¦X¼>[Å.[ëK{‘+ÎB5}++A5£Ÿ�˜?nêU±ÿnheU,C£÷ŽY²ÃRZˆ¬Ì4úe"�Øëô¤#øŽH6å¨ ñâ©ñÇt=¡èÒ‘H6“++óÂu=;cÓ‡±&ß,œ8¢ݯ€iROÃBƒÄ²2ÚM‘và &q"Ú��¥�âB½yþ�¹_GÇ» ]«fhÑ]É‚®«I»œÖ-®ÁMÆtÊïOÀ‘*ŸvI^ö¨µ><Ñ´mKäçžÑ„»¡©þEÂ!–GZ�d"„ŒðHŠo^4ßð׎ÑhAO7ýmÄBD‘›q3ç}Ž—ŸÿÜQÜ|•¾q¹ƒCSp†ÞÓݶ¦[­§³œ~š‹@Ç[îAÿ;oCc§|·nIŒ—“£mÉÞIÄ9Ó`ü|Êͪ=ÕK”}@®Ê甦ö:t¹²©SÝË„‡·�‡jµw›?k›d›�?ïM ÒÓ®×Ëj�²É™žzüâUVPPÁ�6iz€ø£YÍ‚•§ZÖ¼¾Lº*9õð G̵ü» CH†w=~h¾[³?'e©X ëæã7ÍG»â10FË;OÍ}ç½EØG/µÕwŽí•ãÙÚ�ÛÖ”1)ôo†¶zS³èÃöòr®Xz½5uòé2©•SA@8O¼\™ä²?ŸËˆÚ²?]5åyúÚ‰|UÑ=éÑ”ú0Me¹ú Y3_ÙÜn½E¾J·1`Î݆±c¶ÙdË�ùrŒ,‘šÛÜáœW[é´­‘eót:1=÷¿™ÿ:¾q 6_nþ=ƒ®´Ó>^ô¡´œsê3Ì–“%�´[ð¯yki�a£·«HêüüzÓ´ÚAí|Ô.™6MÅùH:ð3f/ÜD” ¨´nÞ¶Û;â&^{¯¦˜4w�> ²©7Ÿ”Ñn™ÍÚµÒ¼rØd»w´÷¿fùÐæ-èR³š4ûó¹s]WÔ.áÙ �Ñô\c½¿ÄÝ;ð6ý4€îwÞ‚w÷ïÑQçÜ^«ÇA†Æ ÕÆÇ!b&½u†eY�`AàòB ‡Ne#2’ßÍ2px7¿Ø“ón‹�âT$%éßbJàæåŠü�ˆ¸-¤“ñ­I¶“ˆ1vQ}B «09ߘ�˜9éZ5FÞÕeCûöª`‡Ó\}Um¤{³Ôj‰8’�‰v¦&R]<2÷}„±o¬0eÃ�¦7AYfv wÌ•+VØî“PŧFAS:ÛˆWC󥱊8A@¸Ø ˜r�àYñ³¶Æ%ð@‹CoùØyyá妛”—Ò}ò* ©0 "Šv §*º¼4:—>£BešgæZlš>ðS^¼�@(µhâ"±ì}�;‹Šjù…Á?È[íXnŽÐ Qc¼á™ƒás!ï|œL¡Áic:†&Y-L\Kõ)°À´ãõYõ¡F·dµºT(šq<Þæ_|–±˜M¨‚“VwŒÂò«à‡6cößpØÆÛe`óŸÑïWÌ|÷ ‡qOjjÇËTæ*ñ©IŠ&½u‰eM²$²‚@½E ´'fNïÛºbZI rNbã²×±v7,ŠÇ[Ë~ÁõÏñg®D¦é¥Í]‡ñ#×U^t"ÃŽ¤v"Šë,ŽvËl£ dÿn“½¶u¸°mÉ×þ¬4‹x‘�O9gú.¤B=c0rHgÛúr)»7ÒTÕ�z´PtîÛ�6q샦&¯œN“GTÇÖ¦MLÕ=Íϵ•¹Â(f|*¨ÄÓ¤·Î°¬$éšzWPk5UQò:9vvÍYøbö,ü¤�±¬»(BÉ̬I«p?°›â슬ý�Ð?~¼>„ÓË:M&¨<9w„ø™Z³“dQQCx²N¿h {åŒýÛcÁžã:¹Gò™‰ðÕ‡ðÇ-�â±[›9i�ËÚFÀâÙ� ‹³¸�°ídOÜØˆF09K6)’�» ÜÇBËUê.iN—•›âˆ’|1æ8ˆ5¢V÷hðm†bÚHú:áä,Å…ÈÈ͇•L©xM¾NËʆk@Kô؆~cP�™Œã‡÷`Ó7+°Y튋m‡2Ñê*{»Þ³ÿ4î�vl{edËÅÓ:•s³Ë¢®ÊM3(Œoü¿ï‰ÃÀ6íJK6uH7Bø"<ñOü…-I�\An& Š]áéͽ‡ó:mNÂ\I<•B¡�%ˆHÿ˜¦ åЫàU½újÛv“DuëËQ™ý*…žQÛw±Íen½«Kù6¦‹¶ê| ˆ6òpx U íˆûû†Å£î=w\Ùȶ¶Ò¶ÑfÏWõÏâ�Bëª5rüF�ƒ›VaÓ‘T¸‡vÆ@Ú¨Cœ ÔGN‚÷¯‰0}¬áRøa ¾§uI=\‰îiuÖ‚#0¿Žwaö˜kÊË–Ðl„ÜB¸¸ºÁ‡ž#5r—Wé耇ǿ€®öÙ(,¡—*õ‘µ–R¦å~Ûð³žO {þ)Üye¸}=±´íD´9æðܯ¨3­ÄyG„WÂÞÕĤh¿mM´½ Ü/:éÌ<„�>ù‰Fnèxk›ì�ƒ$kþ§ç„ëYs!4¾lé>Õ:P[9“™k`4nÔŠ~4–ÈJÁñƒûñýçßâïð†>[iƒ²V1ç7&+gæIš³i抳38ß*ñ¹ãt�tŽ]É5U«¡·Î°¬$iñ.9h‡û†!!�Eá:y²£vÈıcÔÿôpœªéŠ(Ú$¥2——Ú„Øö‘(*²‚ŽÆÙ$ë^‰¡Aúñ#¶5°ï²Åá“6ýžÃ’οcýwÿÅÆŸ¶ÒFGFp b×.¢mR´d2Úøþux4•¹J|j’ “޺IJ&YªL–²Z?]IêüÂý*9÷V·àñûo¢ÅwíDÊ/‰ëµ@ã¯QÒ”ÃH)¾µÜ¶ê‰' IÛÑhäî-{cìƒWÙü�ž²šIû�[­4-Šv(ÌÊ@~© š]ÓÑôãðÔS‰8øÛÿ°qÓ.5=-.ödÑvžÃ# r¬^äýæwcí;<3 ‹g-B“™�á §�êÿ¼l¶Z£ŒUEÞ|‹ZÇ,§m;�܈ÅúiîÄî$ïúÁ¶®Uë– (fåƒ^Ö[©+£©’:\°s-ötE[»/ÔÿŸi±šÉ0¯˜ûú düðO¼ôi,yôÁœ…�!ˆÄ=üÃÈú©Z¶ Fì“/)2ËÝ©¬‡û ¹w6w˜Özæ—ome�iITVMË]iÉ*ði€ÖÔoñ‚Ò ë6àdÿöëÆ¡M(œ,­®ÆÍ›ˆ5à/÷:¾Ü]ƒQ3—¨ônyò<ÜÎ�¯8 Î¾Š”¥w&Ó~ú ÉbhŸ2»‹ßºßnc¼i=£�ƒj\_ÚÄM»>ãÌÓ×èÀcñ íÐ9ªG”äpLMrüºu.xœ:©½$x\=}cˆH´71œü}§�ütH¸’‹ˆ¶õ{ã¶ìJFÌuv´,–£øìÃåØKqƒo¸›ªDŸx ‚ÀŃ@$OT;c&㾿¯·ßß´"->]ø=­6COÞWc˜ÓKÇRXá£÷mY[¿ÇÞG;£­ÙBÎRˆ5ÇaÉqŠå}#–.êoZ£ÍQSM¯\ÝŒÎ/Ÿn8„®÷E;¨È?ú5MüVùõ{a*†µ·�«{a$G«ßœä…rÈù]wúÅPÇbzÖ&þNã¿êê<9ϰfè@ñwÓÏ°Šª9&�më÷%n؉ÓÅ �©¾ãü +¾ç—Â\÷ ­“LÍ„-Ìb?û gîlªÆ%¶"ÐÇÌŸ6èæg1mFKLÔtÄ¿ažXÌé]ƒ÷?¢ô{ú…¢U§P´nˆ-{Wa[éL[f*?1¨À¼4ƒêÒeóà³uú ‡Ý«&ø<@±ØrFw¶öbxØ�_gÔ1–öÔäL¸Äpº•K24ÆF~P»nô†ñƒwÇ!x}ìõŽQøŠ¦ègл¿««|­mk¢H8M�NŒzÆ>|°ì;z6¹ãêÞרd÷ï?EŒ˜o9ÝÌ)h®!‚Ïåƒå-5ƒ>H´E¿¡1ô‹üŒ$Û¿ß­^‰�‡RHýnl:˜�6WWa©\.wÕð ™EN¯p¶2W‰Ï=ãz'ø*M‘©:òÒÄkP±�wÍt\é‚3éDA°sÇ�wßê@²ÑrÝØÐè2µì5ln ´â»ÏÙÐó4¾ûî€&hûKÖ1zgXøÇf2jT·Ð ñ»¹/Ón30mÖ:d•Äン0kÖ |ò«¦¿ÌÅÁ�®@×^÷£G]­ÿ¡¦"ÚÒ‘“ºB ¨Ó=è¨kÏû/?ñ|³ó(rKJ•gNÚA¬|í¼½ù°.ÔCï&¢‰œoËnh«ûn^ô"Ö«¯¥šÇ™}k0nézí‚ȯ®Mô· ]¾&‡2j¿7Ü3@�²³æ¬ÄÉB²ŽT.[þ=U#Ùèºm¯îjšHpÓ6zø×XúÅïtòÀÑ_vTNšÄ-ÁœO¶Ûv.=sè;LWD$«ëŒNÍ|ê¾Ü´ø÷^�õü¯ÇËo}…3úˆ» yæÎ|G³xƒ£Ö�Ç';OÚ3ã·àŸ3—è×�qƒ±°M¢ê&e¯½¥»&HídÆÂïlk¶%ïûs?�ÕÂoAsbEkZ_•å mÔ`ô)Û?z³>Ù‚3¦ÇVA^v|ûÆ/úZWÁuä�sÂC{÷CÁÎ�ø=MÜR’‹ƒ?|€ émY¥b 5*Ë5ÝÑ]@T›rÛ—N¦{#M»(HÆWoÍV${t¹¦©æ/A Þ àÓúèOC¬Ÿ?ÿ= ¯DU�‚¯æÐ×p½$Ý»TqÓ.¥=Þ¨KŸÀ„W× QGñF ›ÏÕH6’è|Oø™HœóË«ù xP篞‡�vð—*ÍeÆoÇt�d­ ×£ÕùöÌK;cß5U±ËÚºÝö¬=küð1F/üÍÈ«~Öš„kxª�q8’²Š¢c�1¡~ñúÞúX#÷ê«¿·ízzÏ1ãßLz‘ »Í}}Ñ�>â)Gëñ½ðÖF›¬År_MßèŽqÚ‹cM¶©{,�’”KAà2EÀÍ:èÜ€ñÝ›f·Æ¹[×âw}ìl(+ÿ1Çǰ¿‚ Ïf襅¦¬ß¢ö­³ËÒ§©�cíÆ�ظq¼E£K¨º{ÕzÛ&ovùlY¯]v¸ ­ö�êžÅýwFމáÃØô{„£M—Û0fòHxëŠ*š…ZÝ4lÓzÈö6S3âîûjµZºÞ¸FMð О¿¶¸:mb»6Ÿø6©s,ÍÉ�Ïù9Tãù$Wq ñKì>2]o£†-yiÇðÍïâÓ +§êÙšVÚDßcé‹Û‡ üÈ£è‚ÂÌcXÿñåäËh�عg7¬[²�b$bñ{ßâÉG{¡�âT²»z©Ú•u7½©ü­AhA7P‘Å|þ9ö5~€vMÕ ˜Üxü~BÏœwŽdâêÜ;áUÄ�{»”úCødáX|RaRÑ1ñYÛ•e®Í0lhŒÿ€IŽD,Ÿ=Ÿ†wF3�DìSS35%÷޾KûrK\WQ…z«öômÓuøÿÞMCŸå˜ðÄŠä4l ¼�ôÖžæ>Ñ7â¯åø‘ô»Ö¾„‘ßÑ‚õÍ‘y$VYŠ©½úàÆ¶üµÂq€yx뽡|žºú›*{jXîòªªôiö×á¸áÛX•ÿ‚Ýï`ìè�î‡Ä¤ÄJâúãŽÑ£±vú|þÍ¿ãîõ#Ò-�‘Å¢þîRÓºhÔãôþj³Úí4mç|<9j)B³�jú4s•5 ¥†õeä¯ÜÑ?£Ýj#ºö~?cé�ÜÚªÛ©|݇?¦·ÏšáÁDâ_zvÇÚ›) ±˜3á>ðÚn¹I‡Ê‘²ß¼ñ8ÜF¿�^¶AG¹\£Ì…‡GÀ®…+(�ï�áø”ò\�nª¿¦�¡¯ÞþjZåSA@øÓpmŒGž½›go¢$3ðöä—±,4Y)¦”-ïÀ]jö\ýƒgŹói'þÞùg¼Ko+7`ô#[IÐéÍ%¬FÜI}[-mLVô}ö|8þ3•±³g`¿a˜ŒŠ8 ß³ƒÐL; U¼ªþêÏèDz™L¿¿ÏœI„S|¸xE=‚—Æ<^-‹æî8õèX1m ¬Ï�Ãíçþ�®òìÑË�Ñ}Äþv ùw^AäVÍ1‰¼y |ö2V�1ZâÖÏñðÖo–�DÝ8�30lômj ŸžÐû“ŠPÓd¿Gç!HÜ}„z ÝQ»¹ÿš +?#¨ª£OëëÑÛû{¥óŠwi=¶0tnG»�ï9‚ÃF½z_ƒÜ.MV„܆_{v^‹¹MìRy{¥1«NWPÉu|øê+øP�9ý1õ�5Á‡¿‡VÔ^®sRÏ—QuŒeIŠ— py"` Pã÷ãYIùZ=qëC}±ì嵄Ç!¼<ù#Ì�<‘ŠÊÀ*� .¬ÿMdÏë‹ïèŒU èTîFLžÓ3ÇöQSP“~_ƒW—é}(Í8ò @p¿Xµˆühý·‰s¢l² ZlÍäçµi¬”rÏÛ»ØÖŽ®IÅ„4kMâœæF¼»òzZ(Mõ÷׿Œ;¬£¥[]�ïNŒ=³UÛ_Ǽ‡¿Óηšs’w†W¦ 3Mg ÃЧ «ñ¬Ë;„½˜H¶ð>˜ðòcS2YoÛîÐBOÁ~ðÃ-ƒæÐ´ÅF6¯•›bÙ§2–/›M)Ÿ¸¸†cøŒ7Ñ«©aI�e#Ù"»ŽÀ#·tТòtåuLzm�A®ñ¡$#ÐwäÛÒ)L‹G�/R¶4m!æS~ÉÒnàÌEØÑ@ÈD²yuÀà§ÙêºæõeNÓñ¼Q�1˜óìShkÔ%§ae&Ù‚›öÁˆgÑôe{ùjŠG“[Ljt\9 ƒdóêŒã߯£Ý"ôŒeaÝo T§•·W ºzæ<õ˜Í"ÏL²µè6sÆõ±MQ®q]è9‘ƒ Ô 7ZÆBsÆ‘ì¦lÓ(í~jÕ‡:Üé^,zá[a&Ù:Üt7Þé¯ú£VúëÏQS|›~"/þúÌÀ–ˆéÄ”Ϩøhöt6e£Äðà³ã1ÌÔgÓ\©;>‹3aH0z 5,ö´()Y…D’<ŒgzFÚt$$›ws<3ý9Öþr’êÇÈ I·-¶ã‰]–ú]G6ÉQÐÓWjÿ Ÿý‘£ÂkŠIYY|sFØ–0‘lÞ�ñ÷&¡_+=¡²pŒ\ø†u6Ê—�XÉÖ¡çX>Åh7çÐ.ËB1bÖÜjtƒ¹Éˆ�5‘lM®ÁÌ9C¡“lLÌ hb‚%)•>†ž½½FÜü7ÎéIÔ5–åKrn>–2rFÔÝ»w« 7®§OŸnœžÓ1~ý;X°�mÈ"ðÈÄш¦ÆU¿S°I�ÝÏP~ôÛùxoS"z#^ÛÛ¶» Å’‡ïæLSd!7 ÃØÞ-U”‚Ä_ðÞüÕö¯eº¢¦×Þ‹»;cñüÿèSÀÜ1dâ$´¡ô³Žþ‚Õ+VƒÖòµ9ÿ¦×âÖ+ËðÙÚm4µ3ÆMºÇ¶ "OÝõͬØÄåptþ´6Ü#дUÛø¨‡~ø‹×ýá(¨_u¼ýQÜ}³ êë¹~ýzlØÀøíڵÔ)SªµÖå–®œ�å«þ¥ô¶nÙÏ��VëiԪ‚LÄÇ'"=‹!E(¶ú¡qSÚy±ªÝ8‹3qôPÒó(^q1¬A�Ð:º �Çm·N­e³„658—¤X|O7?„F4ª4¼¾ÜiZ83)=‹– (&‚˜‘�£Ñ²‘1Ð¥�,¹øÏ¤‡ÔôÓ¾Ï~Œþ-Khñàãª,V¯ DFU¼ ¯*ПPî3ñq"…¢V+‚› q˜N\V‚¨*ó‘#8Ae¶Z½àŠˆÆ jµ.rÎ$!1U#;½|Blß8À)_5©/§¨å.Ó“Žâ(µOm‹n7øù!<âìí³¦xä¦Å#.�¶$§�/‚ÚÊÆzÒN&#Ÿ^ÔhCo×êµmn_‰G�MpõDhx‚hûóKŽ:çZ†`�*Îàþ�ãáûF_𢽽h ,Ö4íÛ¶À´—Æ\ö¡çs@IDATðMVTœ°/<ù:Ùü™�7úþßø|?SÜþ“a��Ы>>I?€1³ì¤]_Ò3Ðû¿<þcJÌ^N•rci.]uÏ�Ûr�mÕÍÔùÈ1 —@/z™Ô#Z=üÑzgZ’›�Ôìxxù"�v’ÌÌ!z‘ôòr'îŽ-ß|……Zœ¯o¥6U(¯A|�ú‰@‘>½½°z³ëg!%ׂ€ ‚€ ‚€ ‚ÀE€ÀeC´Á5ýuÃ??¢uØhß¡]ëVÐϱBº F¯è Öyp“+A þ @›4´ì9½i®~«ÀZ˜»\J.9A@A@A@þt.¢�  ìÐ/�ëˆØ·aç�x}›owZ”·%:všUÓÞóO¯&IP87x‡Ì˜[úÃqùÌsÓ%±A@A@A@Aàì\VDCá…ëï¤ßÙq‘PA@A@A@A@A F¸ÔHZ„A@A@A@A@A B„h«ñA@A@A@A@j†€m5ÃK¤A@A@A@A@� ¢­BXÄSA@A@A@A@¨B´Õ /‘A@A@A@A@*D VvMLLÄ—_~YaâY=î¸ãDDDTOX¤A@A@A@A@.:j…h;yò$-ZtÑ®>e¨S§NB´Õr…"55™Y(-+­eí¢N΋ üýw7÷óU'ñ/%%%زíWüôó¯èó×ëqe‡V*'Náÿž�QeŽzÝvF ¿_â—l;àÆýêìEh×¶n»¹+|¼½ª¼/D@A@¸Ô(¥×ó²²2¸ºZPRRJç@^^.ÜÝÝ`µºÃb±äI?—ú7³Vˆ6£XÝýÜ^»TÀè§ (€\”¿ƒYV檄, DÍßba@Iže]èÇGæK)XŠ<ÉÏœ}è§(®ŠOÒÊ‹d4u*–ŠÉúè§ôÓQýã#ysžŒ´lÌ'º.΋rNº Q­aЕ®òÆÉ²§¥ýNÆÿùygŒhr¬öìû ßnX‹={CQqQ-h‚€ P—¸YÝè%ôJôº¥/Úµ¹².“ݵˆÀÞýGðæ¿>BÒ©¥5˜Ó2÷@zî–!%%µZ)%§å"vÏ)%+q ¸QK¸”Ú¿æáç_v«ßŠUßbèCw¡ç­×Vëþ!A@AàrC@ñ1ŠDÑ ”z @­mnî�¸N‘HŒ‡ �Ár±ZaåQY1(2‹8§R&Úˆ0SDEà8.L¦Ñ‰««+,®,o!9¢¶È*ÉÅ¥,­X4PÜRŽÄ±X ‰ua2‹‰6"æHÆÂŒ›É$— ë§ü°>Š«È1ŠÊÌ*ÿÌθ¶lº�ûSL³¨:g}ì 5œE —›òæÊiò�<ÓS Ѧ�:ÿ?ùùyX´l>þ·cëù+ ‚€ ð§!À„ø¯¿ÿ¢~ét† OO±úøÓ*àúqë¼1o¹ê›�è?þo?g¨Ë‚Ü,Ãû¬Çà X¹þ€Ä .Ùv��–h»róòñ¯÷VàØñD<öH›¿œ‚€ —Ì‘0�œ [¶1 ¤h"âL˜óa 7«•XâKGSÁ©U¢MAÄ`h'ŠÓè&ÆN1M*L£°4&©ŠU˜"ÏTöwþ0Éöêœäü•‰A@¸`0Q~:9 Ï��*dÛ«…³'Ì–lÎ$›—(|ƒí댺yx!ªý gWD¡Vw;¡*qÁàÒÃÀêá¿ÐÆÈJI ¯ .¿^·¡!�¸÷®[«¼GD@A@¸Ô` „§Œ*~‡ gLµX\áFËɸ¸O¢úÌúË•Ô*ÑÆ€¹0‘DNƒ„=Åä৸% bšÍ¥¬D…)ÂIEâ?.Š@cc5MŠ 5º°PvKtfàJ(>3itTD›nYFrj£¬ä´øzføÂî(N)G'¶¬¬”­Ë(ˆ-锥ªÒ¶‹»²59ÂM¥MYáÆÁqØ©(ªp|¡)P±ôs¶dc‘Û�…þ(²Í)¥HþÔ�÷–Îs Ùüü}qÕ5иI¼}¼©:èƒ*�:F€Ÿ§¹9¹8AÖ¿ÒÔª¬Ìl•"æl�:zijuœQ_SJè³#Oe+svl©Þ²3ü‰H0;W+¼ÂÌ^UžKC n—ž>ˆhÕù‘HØ÷Š rÕ½ðኯpm—+Ñ(¼f÷I•7’‚€ õ�R"cø]@q?t,¥1fròi„††ÂË‹?Ä�Äœ ÉÕÇ5Ú4ö¨Ö*‚Á`2‰D$馑ItÍD‘jz'“tÍæ�L:¹¸ÁåR¢™ 21G?ÍÊŒ'‚ڭ͘l+³¸‘æA9¦1žŠ!c…K¢¸J‹¦£ò�¸Q ’ã$M?M˜ô©w"Ûø™)ò?Eáq€ñ#-lÑÈ?&à4Y=˜ü”.fê¸Ü”ˆöã¬Ñ9Y­1ÁfµÒ‘Ð.täBscaœÄ�?¼&[ìΟlŠ¢šFâÞú¢u»–ðñõQõa ”A@¸hàg%ߣ|¯ò=Ë÷®áز�ïmq[~Úe[“�sVÉvqåXr#\0áÕ®;�ý´oÜ<-æóµß_™“\‚€ We¤UŠÜÜ<«µÕ5.…ýyZ©‰Ž¹¹;¿$k•éa"K[{L#œ˜€"û-íkL©ü2€J¤{aÆ�2²X³¸¸?ƃúEü¥ÒÁDÑTO +#]eLT)‚‹È8ÒC†iº>VÎñ4¢�u8ÿ” ÓÃáFñù¨³«ŠX#-ZóNücBNcÂMM5e=êÅÕ 7W�ht¥kþ:ëJ‹}»¸ÑQolÍFe¦0[²ÝÒëFX kq‚€ Pà{–ï]¾‡ g¾· ?9^XxwQÃñtQgK6#LŽ‚€ Pw/_GDÛ¶ýï75®´yȉ ‚€ p!ÀVl%%Å´Ûh>²²ràïïO»Ž’a.¥¥ÚÌÇúhÍÆUÈLO-:bœˆpâIŠLR–[DCñÄ?Eª)‚‰-»˜ s'y&Ùèh!’Mÿ±¬+‘oÌ[�¦—Zy#²)Ó6J #Íé夨Ê�-àØrLUŸ«´5K…1éæôSi3Ù¥ÿc(˜Œ#Aõc‚�ÃøZY¨©köÓd ?Eè)ʧ*Ñ{ÌÀ±æJ›?ðüb¾f‚Í]Yµ‘¿+‡iGÖ#îÜ(,*T»‹xº¨�lrê|ïò=l8Þ9˜ïqq·eÆ/Än�hó”A@8+¼^›á2é¥âÔéêíÐkÄ‘£ ‚€ Pß`Ã%Ûf”İðTQooošèFÖm¹(**Ñù›ú˕ԲÙÑPlÏü”ª}&»˜«b31$ƒ”R>d-Æ»‚r˜aë7MŽù'Z�7Kp¥ønV JŠ Õºj..îÌÇ¥ÏÙ%‹õóZm.lÚÆ–n4Ç“©3&Âl‹¨‘”Íq2ü3§OŠøRþ*W*T3"¨•åÈŸuó_º&r�‰4vŸw3er�s •ƒÎtÒ�' *MŠlÔäUDùsN¤¦&ƒw,4¯É&Nê/æ{˜ïm¾Ç… ¡s±ÔhTdCøúùáô™ÈËËS1Ü܈Ó!Ž$?ŸøÞP’g2‡R]­m\~m'M 3(vr�…ø¿²í¢FÙ�§‹Ò´JWZ±�°õ¢i¢¾Þö/C U@^ sSáã/„X7\QQ‘Zv‹9•ôôtƒŒ«’’’®v!5Ç5âÕ‡címDNYˆtâM ˜dbʉSjžÌHòzl¼b…± VK½qþø¢¬”¨7fðl�B“!Z›�R¥�ø§ÊÉ�c«>ƒ´c?ŽNÿéGWfSÇÂâA@A@.y r3P� ¤“�h>­G#NA@¸”0“lÆyI ›Iñ¬?¦¤Jhóøøø*ŽÄÛÛ‡¬ÝJi¹0šJJk¸ÕGW«¹fZ‰we"ÍB›(2K'«PÆ›¸pD´•ÆÀ²\ m&ÀôX.½Ëæ®H6KIY‡åÉUwOw—øÃÕÓÞnñ¦L ¹(‹2Þ˜@A¨82\#rŠÈ5Ú”-Ù\�7Ëx{”!¢Qüýhí2²d;q*i)IhB&ƒeˆ;–D¦„�ô GÒÉd2!ÌGt´‚Ã\(®š5q‡§‡7“ �ž•‡¢wEЕÒF l+GUHé�Fi2IçB¤˜;Y¡•ÙVBm%²Í…64`«5&áFùfK7ž�Êä[°1!GBT6]éàÕá\É�ê3HFnLÄ¿*"Žã0©VZLéÙVB?úKÖ‘œ6é®�@¸´�Å£9Ú‡7£6Q…£¶—yzŽåÈ4’jcÆ�'aOâ«´ ŒëI0—¿MxK¸Ÿ¸äÊVOªà²ÊæÉ¤d4 »¬Êì\Ø¿Üзµ ‹üâÓØ°î4Öðyb¡µcûõmƒ64ªŠZˆëñ!‹¶BòÏ¥M0=àççCEcb޹%┘VªG®V‰6.¿•H(¦’x�6â©yű•˜+/ˆ¦H¨B"´ àa-@�_ ‚ÜÈBZ¯â2ó²w„ˆ©bÑŽdÙFÑÜ=|I™í4Jz\½hM‹bb;S鼌É @@s?"ê232(¬V+ °y`M»10I¦¬Ò”u[¸q‰¸<m§”)ÂÆn¼jœj”pÔZ5GâÊqÃ(£i©LØ)”'Ãež­â;%%õ4±Ø)hݲ]ÅõÌ×;ð/huEµr}:m)Õ’=!z„!ªÑ5ùö¾0γ<ó�{F3£[²N_ò}$qìÄÄIš‹#’´4d)°mhKKK)ÛÒÒ‹¶lÛ…ÝB˲-ÚÍRšåGî�Ûq._±Ûºoi¤™ÑÜÇ>Ï÷Ï?�$[’Ƕ$Ÿ=ú¯ï|þïŸùÿçÞ÷u;$°ˆI½ù`&™v9Ó{DBóÄU¶MÖ×5‹uY3õ…ã¿‚s&S9ï±Í�U# ø��ý�Üøæ]òî»o»l 7úQ oÀpÛ· ™¡ª(¼«ªm”_yËzq£¶Iò |›*Ì7ÏÖ¢|ƒòÉ\—- ÞM\„4Ëx.Zûaˆº �€F@#°øÙó/É5WoÅ3.|+é¤X„�\£š-�†è K”já0ì@ŒÐÂÐ \1DuÁeX¹¥RÆÇÒ××§ø–ʪJð9Æ LuÜ"â´.�Ç­Þ´º0~ãÁ˪€4Ýd>�PT‡q|®9à¿Í瘋z¥u…„[BÒ©ȱSäYmu�’ &ÓY³v-È´jELÕÖ×b?äƒiI˜ˆˆ¿ ',š‘²r»4T—¡ø�ƒblh o“qB3ŠdƒR X&�»SGFj*Ê¥±±'ýLŽB!— ˆc Ë,N(IAö𿥏áÎ�XÖ¥|«ÑÂͪ|« ²¬TÂe3 é@¶Q‰GsQ’j¤Ô¨œ#éFeHæ5â.ä*g6�cãù»Ïþ™lÞ¸]îºã—A¸m]ÚÈdrOC¿\fKTE&S4¾p)ëÜ*»ÚÞ‚XäB“zç5Š9bFÝ–Là*åu¤.¶95Û²úVÙZ�›‘E@dÍØ—‚ñÏi@:“Fà<Èà‡êÉgÈÓ?{ñ²'Ü c6“¿ú¯�Éú›Œ�¨pèb ¥@Ú‰"ÚbŠãýäô| mÓ,×ùÂ+òÛ'ËăÖ:�›óPI—3�‡ \¬öK:]™F@# XFü¿ïüTþå_¿#wÝy³¼í¶½šp[Fçv9 …V|Î%IÆgašŽfð¬ÊEjéH€pdT Ö‹u&…“ZÓŠ8vü�ð³ DÛ]ïx�lÚ°Ä 7˜J¿|ðórêRZ†¦ã¸z¨Ä„"-†|ñm'NÉ�|[Â%~xL(BDHö¤ú~š;IWj�fêKdøûòÝ`9ÎS c/u‹º>�ÀÌÌ…p«­©”D2ƒhßð­�FË9YÊ«äÞjÅ‘ÿû³ˆÜýÎ6ÙÑR.M �ÉSOž”§z'Õd6ÕÉŽZ«tíex'¹û†•R‘¨fË:y_yX^~ªKù†ú&_¾Ô­®“_ÜÛ*ëjéÊü‰˜œ9Ö#ßyfX†Îö"~Mvo­g"$ÃãhÛ0ñlÁ‹ÅÄLß�›$à¢ãÁ4oerÊM7¯‘7WK•‹÷Zi ÷c|ûNËSíÆË/Ü{Ì6žÃ®âö�ZùwïÍ›åΫjÅ‹{CÞŽõ È÷¾J^ N~±ÍgÖ¤“F@# ÐLE š�ÿóïËw~BnS¡Ñ[—ƒÊ‚I�P‹ÊÐРƒ!©­­�²Í�@—vð'c9Üâr‘Gá'QüóÃJ‘,Š™Ìº”«®E~ZR¢ \“òW–ÉÆ8ŠpS|þ€¹TþÙ sÙcâÀñt,$cc8³QØãú 4³•Ù¤ $›d›Íî—$Š[!I‹‚PK!b)ý«Y,ˆ<Š'LJ‰}Ê(ÆY}¤†@ˆáVÓ»Þ,Œ6 2sàÆ25èIÂ&x4Ó …êʆ@Ð�„�6”j)E¸¡« Ìè€Ý'±Fó×xÇáã b5$ò¸‘'®ÔrT´1øƒ, 3Šä�ùáHõÙìèwî¹Ä¼÷%9§ÓÙxýäùoŸûseJz×÷*¥ÛÙK,�£ÈfWµ\'kªê0Ò2*ý¯È‰@ß´Ò$´±q·¬­i–2°Ýi‰‡ûåÌÀ>éA$&»g­¬o¼‚áBTòUï•-Îéë?(cvø«_#–ØI9:ԙˑ[8VÊFø˜s¦úäXÿIå ­ªf·4ûÜèFÆËöÈÕ­Ä‘8-Ͻþ ¨!ãËÐU~•loÚ*N^{q™�’“Ý/J`ò¹rj;3mázÁ•5Ó‘©û�èã<.ŠD‚¯È)˜„ç“ Çš6àûê’Èq”6ÙP�ï &{�lnÞ+±×åÄȰœk\sÁÙ¨Øøk÷l”«Öì–Zz†q'S#ÒÕó3œCÃ<Ø_µ{æ¾ÒX¹}’Øð„ÂܬwEã[dK]«àw)�— §åhÇÓ2l<ÙrçÌ–è’cƒ£²våuÒì¯Ã÷n`^ =9…�Y¯^jLÎF¸}ù Ÿ”�È·?af_¶Ë–mò‹7À÷™¬—·¿_…wLÍ5²õÊ•Òö/OÈWNÐï¬[Þwï•ÊG۩쨬Ø|�¼kUî54l„µ�xùxpHÖä{®Ï »nºw�|x'L#ŠR[[“ÜúÖ€|ñ¯_�§ ¡\Q‘ÖåwÐGÛ úy@NÖLš¬N˜ۑêH(¢ÍR¾B>÷Ç;¥¹plÌÃñíl“w/ŸyÚû|p.¬K¯k4�Àt4á6½çÒ"`A 9ÆÈ¢^p=n·[l$ÔÂáq¿Ï§8*ÛbP¸‘#JChÅ�ù˜¥•Šo­Î»÷(ÆHeØ1¥Øâ6oP­P�8ìP¥ÁÜÓï‰+µ�‰€¢þÚe4’8ò•WWK2”(”nN§SêkªqŽŽƒý¬–ò ¿Ôú+¥¶¾Š8[0!³#Ÿ QIk+¬âö8Ä "À骄°Î®ÌCÓ)aT·‘¤s„•Ío-òØAèÑÏ*Qýf„R2d18âc¤To™Š6¿Œ‡ì[nã08탪ME)Å!ÛÇÉ“AYÒœP¤hF«Tk„d‰8äÄì`Fͳ„¹¥ã'�ʧÿᓲaÝf˜”Þ+[6]1·‚K1—{§¼åê[S¹ µHcí²-ôšüôµOª¼ìÛä¶kï�ª)yQ¬¼Eš›vÉp×CòxÇ Yµö¹Ñ}ÍTQ·C¶×�ý:( ú[µ·Vº†;%Ĺ™K«×Þ%WÕÁÖ¾ÐÚûOHàö�7I#ÚKÖoý'2e"0 Ç#ʶµ}PvA1%U®–5­×Ë©ã_“‡ ˆ°)™Š6pÍÉ,Ô½E®Zµ+Wx½Ä^øŠôŒ¸lÞ|¯\Qi|9z.ÛÜp6GPÝx·ÜÖ¶ÁÜÌ-k¤¶rƒl|L>-rÛÖ›fìK�}µì^¿Za>8|Úð?gi”k¯|¯¬ñMžCVZ᫇_­ræä×eÿÀ�jÇ[}ð@yy“lià �¹ÁyѰ]޾úE9*dçTQýg !p¦£Gþ쯿0k�+ñ;ù¿÷�üñÿñ�ÿ&cãs÷fx6Â-_é2^)ô=¦H¶xH޼>*¶¦FÙTGZß!·¾c�|å³Ç …¾Ó^|ö„ì(à •O$<��HT:qɵPÕŒ[޼�µòfù“dƒÒøå}�r:攫®h–6–·W�Äk–§þ­gF´óý„¯6ú—³$b2ˆÀP^¾9Ì¥$,2ðò1—èÿ–éö»·äI¶`O—ÁrÜìJ”/6ô_ywØ©’cdÁ&©¬„É6e±¶L˜¶o“_ÿÈ{ÔÅÂÅñ©¥±�Úê:ùô_QíãŸ�ÿÅoËȈA äwæV̲ÅûÍm¶õ™üKYß¶I®¾r·¹{I,Ë\0�Æ<˜éÂK%Ç%U¦Å¶QnÛ’-7¢ðØ é�ÈŠÛ¥sÐá¿Bnß<*ß9ºOåh]{cžd‹Œ•SÃ0»^'kZ‰SÛz›¬î=)½/HŸóiô¤S,Ü'ÁTHÆ9MŸ`øbCPoîÄ©p0!�qŒÊ,lã»n’d‹K,QÇW¬ùÏ“$[j\ºŽIÔ‰È{u�(ä’¶�€½ýçåÄ,ê 6•Oø^pÛ¡Á³ÒØu¦”’XНÐãòT÷¹©…ä^ ̨öÈw^{NÜuwçI¶tðEy¢»C®ö¬�jo£T¸ð•‰Ê0Ì¢ãÆ\<Û¸æŠs{×½ÿ¹9O²Å¥§ç€ŒH£¬knSŠÂ²ú[åꡇ¤{´{æ¾dZ�Áœ�mÛ&I¶äÄ)yçÔêÝ&›šZ —uÉšõï•ðø?ÈQâjžO¬*’ Jºžá±ú7æÎ¿K6®¹A½vî6£#—îï§?÷ªñÉUÎOõµj,ÍïP~ϲŸ/O(W·á7§¢¼RþÇý’ú�R–ðŸH$&GŽ�šuuµUSŽ�x£C††SöÍe£˜p»b×us)¶¬òÄzÞ��ýãÉœ çIùýOÜ,{ðvÃ^å—õ˜{o�¶óÕÓò¯NÈ—?³S}—w<û¢üå 0·…òmOQÞº­+rß÷qùÖgŸ” Á«üÇOŽËïÿáí²ª0«÷-çJ9>�ÿò©�)¹ë®Ù.Ÿ·×øíÁ÷Á¿üß^Õ—7­ó¨|±S¯ÉýÿÔ�+Ó!_=¼Uþí½«°�èîø®Ÿm<,°2W _D*YV¯—_h6úîx]~õ‹§s9zäá×·ÊçQ/ɶÛïY#|ñŒYZ-Ï…ó|£ÁN©|m¬ß}§4aþ<ùÃoÉ™ŽÞ³öìæ¯Í'Q~¶kÞÌXXÆÜ§——Qù•þÉ9{íÎmò‰?¸_åÓeD–³�ô™·Ùòêý� �9&Þ‹ó“…… —´ MÁ×6ƒx�k¡b)»ƒÜLf¤p×…¼ÁиŠFJq”i::ù\p!z\š:gzÞ_pͤ“€D[–dnÐ(#qe�ºÄŸ#´è@”O<ƒpŠK‘D34«¸v,Ë+«Åê,S!]'äÏEXð6¯ðí|¦£0ý¤o4‚Kâ©ÒŠúmt¬ÇçË´xanêñÂWN–@r˜ÍFQ>…Þ�&À¶¤ð@Áö”� `kªÌº¬ ÆhÂJÒŽoU} $8 ¾Ý@õÁWüŹñÀ–`aø1aQ²‡J½†uì6>`fÕ„¢É(Ú"@ƒ+´9&¯aá:‘V¸²´/†$.”Ùýë&2Óé2 ðØ\×Ožz]øY:É#[®ü�ÌKuðäWäÉ�ai\ùf1�»°ïyìc:Ò½Ov^ùAiƒ¢ÉQ½CZ­û¥;[!«rf�ÉQ¨¤ŽÌÁ±O^y›üÒVªþ@Ncn‡ÏÉ3�q¹óú;Ù3ÒómyvÈ0ÝÉëŒïÁ\sY¤e°ëûò$s*Y·ÉõÍ4µBŠ•G^z8¯Ž;:ü6¹sóè�G66o•§ŽùÎöÊ®[vÿÎYrÄååýÿ '0õ;ðÀR÷›²<¢£üzÙӘϚ ¹²#²ïð¸f³²ÿèÒºáò§J¼T—^¬Í¥4[†*—lx‹‹Wææ”åàÏOÈ7ª'¤*<œ'Ùh^‡·¾å Yzž‰Ä×gßÝš{Á•o}aŸ<…›à[á«ß8$o_ï�ÃOöä[)C¿w7/d¸ïTšëx®ÛÙ Ôpø�‡0I6£Ž¡W�È7ßÔ ÷µ¹ÄÝP’²ø™ia8›¥õr*–Çž4^ÈÕ×WËýï¿{j½¥Ð\V˜„Û÷~ð¤Üû‹o¹¬Æ®{ià=<‰1“p#â÷ûÀ›$È[8–�‹Ÿh$.!ð<Ü®€ ÊóÒŠòr©®ª‚ –SŠŒw”ã^`a1§’m$�¬Ê?ˆ%J”·aIºÉ ¥™ A àrl%È+-°Ú)�…žD4ÀSæS7î$±**��0ƒz ¾ÖÂÁH:ø{BdQÊå¬$ç¬`F!1Ì”lV†ª¶ŒGl¨‹ORp~¿'Ë+¡ LQ# Òð� ’�>ز¨‹@öeÉ bÀ N^R™•65·@¹gäaLø¼²9Ab2p"XÐüžR¼ñ��|]Œ+é3Ã�Ÿ1nŶ20û²‘Q±XÐ9ƒ‰¤ÓÂpAÕ¸ãŠkäç~¶° [)N :kW&—éñgó$»šÍŽÉÁ£/ÈÊk¯Ç,ÁVS.]Ccòò±Ç$Xé–Á^“d£ù�OêËòô݃É>ùðdµRÉ`mæáù.ÓÁ“$ {ë6å•G�L’l¬7>ò#yml£ì€gYÍñ�>:iþ:߆gÈO|özJwݤòZÛnÊçê9þMébÔß\âW“Jø€ëDu}æö¨Eñ¸X÷\q¦"±©ÜÀ96òdždS'ÂÌËýùGîsõ…åêë×+u" Ðäðñ©DZ<ð#yyd½ìªñˆÃ×¢È3|åRX^=ú8§�ºUN ôIÛš~!©ï«iƒ7‹.ã%#Bç˜Ð%=J*ÖΦ\ñ"tzaºóm7Ê̋ӃßþIñ®)Û õ5òî{n—¯ß)¿ô+�?–=Ï—%ùŠûJd\^,²¸ ÂÜ\¥RÜãeÃò�Çzåþ»ÖË>q…T@EïV/+KŒ»N>÷ÛësÄ—È�o¾ öNÖÛu´Kž‡‰ë=¿z½ü*‚My!_;߯ÊÁŸŽ[‡ùâ ß‘Å$å…ÆyrØ‹bÍç-›ÓÃîšUÍùþr}.ÈÌw/•öƒlcZ½²)_‡^Y~<üÈÓùA]±}C~]¯hŠ ú{~é­�Ï.Ž(.£·5ç‹€I´±ºë²XèÛ–7PI)/¯Pbîg>'„M¤G¸NaŸ÷‡‡‡¥½½[6lؤ(�°[ì$›+ÿ”.�)°»•IN àðù•Ä›æYv’jÉ1B€ª r@š’Rùf‰f…Y‰€$L8“ð1âÀÒU[M¥O&.ü€ŒV(–ò2H Q3ONj3¶ÆN2`½ìØG’+b†£ì ƒ`é‡É( ¿XŒûA'l¨¡ª"ùG–Õ›*6m¨�'–}‹ÚÇU;6ôÝí€ê- ?m Õ’ø€uÁ†ûE²mŒ$¢Jè' ç�Ò³¡�Ê®ýãƒ-ý¶©Ë„hknj•{ïþ@~ì\áøÔc4mªÕüùÍ_ý("×M¾Ç6÷sÙ×ß#_ÿ_)Ü5e�çåÖ›Þ&o»õ.éêíXBD[TNûž(ÓÂ)#26âÑaÌŒÚü²U\/÷\»3|ÃÈcs�LÉ•åÜdš?(Ýv6ØôA¹Æƒh½ø‚*ų_®™³.ÂÁ®¢ãfË.ٲ룲6>Iù�tw£o*áZ3tžEÅ‹7SÝòì«?” HÁ™þ±8Éy†ë�)¶Ož9³Nn'‘”K±‘§ Ü›£O¸\™éãš;ÎY^äê Œ¾av#¿¤�ºSù­¹­ø\¹©À÷O~¼¹â ¥&E«yòÌ<0="‘»îøU´Ò{~é?#(ÈõƒËîæÎ4VŒµ¼©yî˜�|æã;åßþšÚ?åX~ÏÒ\¡ÂŒ7ÌsMw¾ýƳÎF´lKá†fÆÁ•b§ùµVŠºf¨£þÊÍò÷ï]“'ÃÌ,©8ü”@¹¿PQÍT?ñ‡×ˆIÓô<÷‚|æ€I»³§üÎÇn�rĘÙ0îc¸ë ÍèRÒ¼›é¨ò‘‘»su%LßqŸo/ í¥R¤ý•Çeàu»Tú\òá߸WÖµ­œS×׬n~æ’H´éty ðÕ¾›è_þɇäSþáüöl+!˜É _HºÌÒÆàó_ú÷³º†0 ¶õ¹ïýý`Î~½¼ð’÷ç¦é(}µÙÀ…d2NÅçD&`å¡Ul4ý#ÙF2­««WÚÏtHýŠ&ijj)ç§Þˆ–qø°ÞÅ,ZšùÙu¡ˆ“D1ÆÀôCfƒ?2;ÌCí0 pÃ�w2=$>¨×ìTŸ\„p…õ-€‚J�7c £XÎ àœ gÈvÂ%H7+8RÑå!Ò& >àí›uPQyÚ„Ÿ5È3`H³6´Ã[Tdr¢-/ÔrNG'Š:$Ù…O 5²´û¥¹i$<¸A¢˜†¢.Š` )q–a”sªòðÐO²�j8ªÔHò¾R=ðaS‘hMf9Y8H¸Ñ4Í!åöaÃØæ¾¥�|^¿\±-gî6‡¡0 Ál©Ì3ùã_˜‡Û-7‚`»í]ˆJR^xhɬÇ;$Àé6[r®’š‚g‡s’X+.Bß[Œ‚yÌI7@15¥á»,5IlM=X²­ðÄÈ”º*Wl㱸[æQmsJP¾ŽÇÆ¡|›Svf Àü*-ô[f¤T¤3·6÷Eñ¸æ…3.{~ɤEÍí…-ñsbL2éô:Œh<Ø_LžoO/ºè÷¬j]+›7l;¯~ú|þ)åM2nÊN½‘G@ly(.ŠUÞq˪™–‘SOÈÃ?”®±ˆtŽgäÎûA޿Ѥîç×�÷þö^Ù‘›úa˜êô{EþùÖ¯‘½9’-‘G~tR~Þ•|"å­òµ?ÛŽ_˜ù'¸ù7 áŨ÷=êF­ ŸoòGï­ LG 2-óÕ8Ô{ñˆÈØ(ÞieÉ2?Ûwx|ðܶeݼÕe …X⸹àfi¦TL°Í”GïÓ\ ȇ˜Ä˜±Äo` % «Å å§m4€?}>ãƒcY“†¯j žOŸn—ë¯o�м[ŠPÉ//FÿÒFI‰6ªÔHt©Á“h‚§%3!ÉØ(‚ ô‹=Ä>€G2 ¤–Äœ¤–Êœ ˜(¯îqAªY@˜M„Fá&ªH³zD-Ñ•„ ÅàG ô &sàK%…§Î ƒ�,ƒï5v$Ñ28|Ø¥Y–�l§:eð½†õ$Þ¦2:¨"Ç�Ù�}†\Q”Ê*‰#Š’?K"¢i,–« ¢ *¹4Ô3´'ÎÐwÊ‚2Ã#0éa‹Ñc2p|Æ™ F'h¦j3BÿoL,§–Ê—›ZÕfA€¬ö­7½}Ilù¡�‹øHvÈÔÜÍø½L.?=ö*®‡ÉË4K³eÌE¦d|D²þ›¥-G²¥cÝrôÌ Ò�sÿXPR¶«å]oºu~jˆI†(ßå³­˜ª:3OÿX¯H]6ãrôÐ×ðÀ�à%æQ\7#Ò}÷ÌÉ7X¾¬YÇ9––•ò [¯Ê“lÌík½G6ô}Qùq;Géüáâqeý»çŽ3ú|¶nû«vÊj„¯Ž„�È)ø ›K‚.×Èæ€3s~u‘mN(€Í„o¨âÃæ¡ËvÉßšÂD5³NÓÐÛtLJ·'G–UÈ{�ÖòÜü:!üàéÉŸ\»za$Ûžwí‘w­Ê½étÈÇÿ©s²ÞÜÚÊÆ\pl?ö•ýò@ïäËú]My’ÍaÜ®•Ÿy<ÌÔ?F“$´íª�ZNTdÑ|aŒi÷ê\¿‚ õp·N�€F@#PB4ÁVB0uUç�_p+áør.T«%!}hp@=µŒŽŒÀeX¬“R55|ÔºAªù|^‰F#ˆTZ¥, IÐ1™DÛywìW0ù_‚†¬ œÜðùDæ‘Nêlð¿–L�ÉÀà qB‘R‹›I«½û¡@‹5•Õm6 €˜rP¯ Ä³9:: È©æ†*©¬ò�T!—މ5ŽüPÎѹðèxÑ£*`BBÄ’túÆS�x$· ahpP&¢PƒÐ,cu€¬àãh\9鹇2$ )�cY[ ehùñ¤”y c„TÑ™‚>/�ø Fÿ4Tï¡�,n/}°�Ú#“†v0©0‘ø�gG„C;úƒŠñá£0ÿ²7:Í„€"ب`»ý®%«`›i\gÛ}e~J8e†¹uÞ™ "šå=Wî‚ùhX^ÜÿEé/«2)9~øëFÄÉ\~øK3MŽr4MQÓT|%Dø¤Î4lîqÕV³Mƒ �Yø€HNQ+l»â£²þËb#�É÷ŽMú”3››¶Äe6“‚kZ¾Ü޶ wI}î’ C¡áñןì¸òNé<ð`JYÔ?—ä�Ζd4¢ÒÒBê¼UdàéÉ&,�²kë­ÂpÉQøK+$ÚÎÒ—0¥4Hµ·ÈJWvÊyK­¬D¤e•âðC‰/ŸÙ„„F¦ËðoQ0I'\†XÌ0dM°ÍJ)váÅ ùÝë€C_(NÐýOf²{USYÓå—ßùе²isëžíòû{Íà.qùñ÷;¤r•OVá»!Æû§]\¸Á(  W¬‚’¼×øæß¾k³|ì­†¯Pö7çhãaþžï‘ßÚÍ߇¼óƒ»äôg"ø‚q¿ó¾ß¸&?¦#ÏžÁ¯„N�€F@#P*4ÁV*$u=¥F€d›ù!ÑÙôýЧimmUf¡ÝÝ݈‘Úºzð2vGðë�è ®‚$¡ººZq6,¿¬SJJ´Y ô²§† úÂó dOôJ<Ö ðìReZEy™Ru�c8 ¯J�(@2Ê’ÍBŠÀ•#ԖˉÈU°=óWâ­+îVÉ€Æ@²eA’‘dKÁt3 É=ý£¹©Z#‘…›H+H3+‚€åi–ÁI Cš€ü0 _m~¨âPžAx“‰0d‡ª ë8iv«¤TrY§$á§­¬¬LQanÜ$Ûá')…GØ8n�mPÕYA´eÐŽýP�p žVõÁ¬— 6+ ?N(�PÝ)½ ò’ŒD×u*B€þÜhú¶Ûî’r?lµ/£D§û§F¤¹9ž+äöµ½òÓÓ¯x®’[¶’dcŠÈ„âÉÌÇ8pp~èb†Bªªæ-rC[‹QI«Äiž[µ�ôÉù.ÃÜ4Ž7ÊÕk¶¢MDµÕÊ›î”Z³@®ÜÙ‘áC2¾¾MDhÛ|Ÿ ¿ú€´GùÃ)-«ß£H6–�G‹L˜f«Ôê—µu[$‚€%³%ÈúÁá#’¨|§ìªËNÑ×䇯þH6lýˆì åÚ"7­>"?n?­ª¡ÂT%|çL!gk$ÿ¸|nœ³ÙÓrj$ª‚ØÊß$7´vÉ3]§k×ß¡H66Ó?ðºjm.}ì?&ÉÁpÉöí÷ÊèKJ?y~àºiÓ½Ò˜û&ïéÞb’ù:"@ß�…‰îtšDà Ÿý„’óOîÑk A`Ú·Ô^4â݉×gÛ-{ä›×ÊgþâHî;<×!¼Þ—mm¸j«Zåoÿ¦^ðõ!5Eî|mÛå�ß´Èûÿypjù:zÍvRùfrÉ[?pƒ¼ÕÜ4—©Aù“/ ã¥J½R®í¸ûyàÖ°¤œ>�Û°‚ä’ûþìñ~îq(Ó¦�çÓ~P rs5ÛwZ¾{|•¼‡&¯þzùè§n•*¢ÍŽºs×"Tv_ýùtⱨ*½©Ðh4s@`Ç•›ä#¿õŸÄôÁ6‡":‹Fà¢!`*и¤é'}µÙÀë¬_·Aº"P®ù¤Š6;8€x,Š{R;‚]¦ÀÃxÄÿäCÃJíÆ²fÐò(Š_!‘³HSîñ¬4½Ë Bgt¬¶µ>˜ˆZ%UZQ§*¼©ª°ã• œ®%<=Ü@IDATŒ(á—ºú ñ»;†F㕾†`Ø©|K\FM³ƒeK¤`Šp•™(†4}£á9ìx ë ÇH|)EÈ6üSQ>Aþa'è5*u[ æ¨L$Àøìe†ÿêd+’ÎF’�¦¦ Ú@:`«š­b¨Ù0j„q(Ê� IGeûŠvTd…²�oƹ6Ø3LF­ d�ûÓŒš�3YåªN3#ÐÚ¼Jî½ç3¼ öö¶ÿTïSʬª¦·Ê½õ×Ë8¦| š©ïÔ�¥Ÿsh¼ …ÕJ¹Öºñ~¹gõ8| V b�™“K�ìzÓGÄõâçåh¼W‚¸ܘóõkî“{[Ûåñ}Êpà Pw«…ˆUMï@›·IÊÓI ¸‰)ûÙD.eÓÇåÅŽn¹eH>{£ìÞùqÙSVqÖ¬¿�”j—}§Í"g_ÚëeûÆwœ=®ùWÆS²jóæ\¾¨¼|äGjýäÑÈê½ï–*lU´¼S¶~QE@Ìѧö±EnÙûG2Øñ yª;8u¼­NÌç7ž‘M ;yÆW½[~©!ŒïŸÂ]U?*¯�ZŽ™ú²¿èù3{N^º D"jt­–¯û¨Äðé.´äÎÈÅW†ƒ½Ö«&Å¿Áú‡‰Œ±4¥øS÷^f[¼ž˜(JÏ%õRŒëûÌcùeÁ1ÄqR‰·'F Éþ#!i»2ç(ÍU%kk¡ô/Ê÷à?í—¶?Ü-;êà3ß»5¹ìážùÆ~‘_½{•z…ç^Õ(ëdH¢Eå‹ûI÷çL<ïk—¿ÿA•üé;�úqïf¤¸<ÿƒÃ’ܵ=(Á%[7CñÖ7}úš}>¯e–ÁâƒR¿²\zzeh¤dZ¹øÀÀe�ƒ´‚ó:ܱfDD\YY¹8íQ¥ê¢9i‚²0P6|±Á±S7‹ð�ÌÓ…,ÀF`Vô�–F€úÙ±¡Òb$±²ÌŒ*HœÑݤ©è§`Eaþé–ÎŽ¨à"0=ÅÃ)Ê“šË*eïøx»‡ `Ú ®ÛNešˆÑLIaZêÆÛX7Tiv샦}‡›r”Ïâ¸E=½¡]4l(Ø0&MR9¡¨¼³!�óј­)sÕóB]^:ÌñI!Û)Oîû†\wÅ=²Ò i�Ý'à©s).=g¾/ÏöõÛˆ²ù³“Mróú jN9\9µCTN�|\Ò ·å%xdEU­E¹N(æêsfA êÁq'ÊGjåVø7Sæ¦&É–è–cqÙÐÚ6…„Â娮–ii¸ëëòDênysÛÕ—²²¤‰Sòükß’@®ü´Â Ú•²Ö7+2�Å]?€o8£"ªËž?~BîØ¸;\²±m�:ô´„F^—q��ø®`ªª¨Ñ6ë¸æ�ó+òÃ"·l‹ÔâÙÙæòåñ‹�ÊsGF€£í™úb‰åæJÀ§O|üï•] T«@‰—ŸÐ7^–'�>Š:�Jù ¦RAycGÁß³+ȶVµ¢m9œÅ ;†‡ÿíIy¸¨‰®^–wã3Sê|á%+<“¿ýÔ#…;Ôúw¾þ3ùñO|Êïfæ p Óò…äoÿûc²aË Ù†/Œ$l5ûÚòb}�‰<{¢SvTÛe00!'³ ùLQùâ~v~eúXTE3ýyæe¹oÿI¹}G•ø™ž�—ŽŽƒÎÃwÉ3Còôú ˜™&¥£Ãx10}<¨tx&œ2ò�¯?/?ùq•ü¶r� ^Üï‰tï•§Úñ´ ÷¿à�Lǹð¨^×h4�€F`© @²ÍôÑFñQ„‘ÑÑéï”–æF9uúŒì¼z§R¹õöõJëÊ•°b$¿CqýÝÃß>|¹™u-æ±<ª�7Ý.»¬lö‰×GDÐ1ÛâðÅæõ *(|¸¥`2šÙ†aª eˆ,’]6[”‹á•±¤ýª‘„„³=š”Fâ�#æœð1Ú(J¡–0Í"J¨ж,T"XÁ‰D4¬hJ†FGU`7"kÚ@ºÜY„½Ï"b ¦² ¨âÐ�„$ÐèØ�Ϻô G²�D—vÔE°­¸If~@>”adR�–5Cß’‡æ9Ät§¼ðò?È¡ò�²Â[ ‚6…ëaX†�ÓüŒ�<$ß®•ÖêU<�’DlL†Æ�|–Á“Òîo®A3’æ©Sÿ"íݵR†y˜MáÎèÛDà'ò½JS"v¦£¸„ð¥V_ë(ìÿ˜ì?ði�ÐbÖ4Ô÷�<4X)�Õm0›²ƒ4Ëx¸]†á'q.i!˜½|ræšÃCMÇ?vP~òÂ!ñ¹Ù&©‚Gð-ËÙÆ5_œ%úŠ<¾ÿ)¯Ü(4eG;áði ÀoÝ”4C_RÙƒÓúœÅwÇ©7¾&í]+¥µ²Q™€¼Œ�‘ž‰¼W=UõŒcÎ5ºl§ôw nðwbJ2øÈ)»ôÆÜ¨­©Ä�QF"ð—A¤:��ÈpXfùzšRøÄÑ91e�± Ésá^°÷?}aêwˆÑVF�œnæ?×ñ°Ž‰‘€üàééu\°±èŠ5�€F@# XT�S¢#¨ÙŒˆ£° ĺ2i°øB¼¥© �ˆšÜàQÈÃØ@¾õK8”ÖÖÕM5¨1±ø>·-öTR¢Í ¢­ 6Ef9$"pÆbJIFî‹? ŽAjë«@?9AsÁçö�‡A¬Åââöf%4—1€š@°·Ç %Þ„:`Bêw w¶»TkпJÓ”“¤<¦gé+ DWÑNS�!2‚AH§uötI0„�¸r´] ¥XQôÇŒeRŠQ%Awôèlš 6D°AYçFˆút�°"pƒ-…“›Ù†>�MÅû_LŽú˜ReIž1j)ƒ=¨D 80j)ë–lm%•l’\6c¼±62ë¿�©„ƒÇòxê¾·ÒÃÒûõâDr&ì,Þ Eè°„¦íÅÔÓ;<½ž™²žk_6=&½C�u-ÒDlBÑyŽuž8sèÁ±ãr®S8Ÿ¾¤ã�Ò>0ýœ.R˜E·Š !uzQôléuâË_ø¤¼Bè[�ÏD -½ñèk–+o½m¯Ü|ãµjxêEðr¨—F@# ˜'ä%ÀýàI ëPÔ(á Ú•Ouî¦P‡ß�Ó^Öòàe–ȹ�,3Sñ¶¹¶%óÓ/[ \MFI¢¥ VŠÇ'¤§«Kº{{¤¹¡ K¹¬Y»~Ùö"‚¸ #GK®¿V¯]«6öƒæ§T·-öTR¢�3ÞG@T%itPNµ·KKK“l\¿Fì ³,Ê�ý›Á·šÏ-úeËÀ—JY@DU×ÕÁ6·\,PÀ¸ÊZ�]Vjw9afêźUBc}ð—»^7Ê¢÷Y°p F¥’ ÛÊ/ÕmÀÞŠü�\$¾ªjª¥ Áp�ƒT‘ÑGAÐñJƒ¤KB1DBŒy3i8à£y«¡f”2ŸGÆÇ'` Û/βˆD’NKK8F¿l£˜,NDÈ€?:ôÃî´�tI(<†Éeëi—Á1šŽf2°/Ñ–1‡M”ÓozûE¢û§Ð,m oÔHøå«“F@# ¸D0`­&ø6Ÿ/‹/Dr ð?:-þøc¿–äÊCõ‘ß¡W4�i¨»@E°‘lƒHr )¼„·Ã}2 CN’B9B‡dQ!Á4íÞrZ+Ów°<—K�(*�9~î[ÈØi2ꀋ¢+F¥¥ÏèÈ‚ÃuŸx“°”¥à<ƒà—°€rCµVævÊæ�áòË%1X6šÁ– v%ý¦ , Kÿp¦žA�N.q D}:m“*˜€Úl.Lf*È’„Ÿ3+Ì0Óx‹Ëc;|¨Ùá¥Ý_釒 ѪÀtÃa°ŸðÁäwƒÀ²Kr l(É*89‹g⨠þÛ¨,³IÓQS CEž8È,’y ˜šÖÔÔˆßëCÔŠ˜¥”ؘÂŒ*ü�Ðÿ©m¸ßC=hX§¢ Ï dÀ1Ì+ÊÊüÐÔ¹dåcq«xÝ~ñ¸=Ê6ŠIaGð¯×#D9%ùG½iÔ‘!k‡¾¦àÇŽL##ž’€‹FÏ¥u)œâz]# Ðhæ‹@ñûÈŒ&Úæ ¡Î¯Ð”�õ»ï”«7ÕË/ß¶±„µêª.Wv_³ýrº·F`aPœe¾sÅó?¦ñ¬žˆ€[‘LFŃ tçäBŽ)r©�h›oÃçKTÍ·½Ræ§�ý§�ÉÄa®„É5–a=ÑhLñ0Vœêë¤Â_a�šN7^>�ƒ�Ïý`0$å¦?ûE¨©®ƒ…!LJAz’l3ÌO'v¥k)ë*)ÑF¢*…sýP³E൮¹¥MV¬hY‘r¬ �G V†H z<Ø×fR€fŸ0ð´A¹–�tÓ;R¦Ôh2¢-KÀä³B)І»$06¬Tc}Ãp× M4 ¢�&›¡EVšä³v¾™´„üªaÝ V4‚²)8NAÑFRÎÒ‹¦œ$ë(M‚Ì‚L¡_ „£Oe’ Ú09Rè3XnxóÍXÊ$’pÈBy]6©ô—©IC;3>Š:1‘I˜¹&@ ªˆ0SåEŒ6­Tñ¡ƒœ��:i4�À…C€ßó…‰?ö:- �ßüȧ$¨‘hR7\+?”â:i4‹�ËcOîSýª¯¯–ûß÷¢ë£î�F@# ¸¨gpüÉ‚? û'È€d >Ù‡GFà£:‹ûœ¤lÞ².¨(2H"’<ü˜÷�óUu1ÿ|Ë\ lŠÛT|L(¤p(‡å!ý£™˜ç�m›ã&v©H’Ùlð‘ Þ% ÀŠÑ‹`L.e M@U ‡¤m8��‡¤©y•x‘ÏÄp¡ç`¶þ]¨ý%%Ú’ —FÆÇ$‹`’ÆÁNFàk- 18™šÃ ˆ£u‚#Áfµ:Á·9A@%�Ÿ~Ñàw�&Ÿd=AJ)" £WËæ vz¥Ìš¹fÒ³ WAëº4ø€ÊÊŠÙª¸hû‹û:Sü‡v!�¥I2OáúLeŠ÷1¿¡‚ƒ œO$’†¨¢(  úúp@¤eU+‚fºe<†k.7ò¸•ßÌF7lX¯?òBK…¤,)ÑFóËáÀ”kvE¬%&¢<ñE! d •�…û ÌÂ,3…ILãQúK£ãV;¢—’ˆS&— LRløÇ‹‚R8œ,&2 �¶Éòˆì©öQ9gQ'A‘j9É'åŸi˜´&`âÉ* &•õ�CCÝøÂgHI ÚPóQ�–YFŠÎ Y>òfô!—@}v;ØnK`|‚`Ð'Øo:ó£>ŽctØA²)°¸l/ƒÈ VôËj჊Aè±J�æ‡@uUí”ýC²ruË”}zC# X:ð.LÅ×xá±¹®mêKx®…u¾)¬k[ ¢í�Úî–ʆµSŽë �€Fàì„pÝðeë(M”â|hÓ$ÛÙÓG5�@i éCá‹ò£Žgÿ,ë<�:C½PPùñ,oWþ×ÝPV1 a*+r$ÈH–ñÃ{KHJ„uîã6÷“RDÉ…‚ÄãôQFÿóYt¼ ë_5ɯ†ÎF`öµp½°ülëÄˆÉ q‘3"[ら¨—þïáO¿º¾F|ô‹“ÂJ(ج2Â�Ö‹qð'M™˜²>s}¶6Ãþ’mœ+ÚÝBeÆDíØvÂ÷šbŽAGaN+â�ö½4å¤}®…“œNl8ŽÑ^ æ—$Ñhc™ÄAEÉ.&Ä$Í4Ɇñ„;@Ô©:sÛØ©Êñ„qâ�å•E]i|ÜèûÁ # r�Ž}fŸØŽ„!÷°YöÑ ñHÆÁÊ5²Ü)ô!“Ru‘a8D+µ@Ù–†6EÂd•}Tê6�k6ÖÉ ± *6Æ£¥ÿÌÚk·­Ù §ÎœPe¿rTmóFQÐ,x ›‰×6¯ñóMÅ7:ÂÂݳû*ÙwÀ Ú¢Áa!ÙV^«_n,Q]òrB �€a£½'óCÞó¦«òëzE# Ðh. Èò …áâ* +aM`$ ­Í­ØèT¾Á|~?ÄB�pƒG š�“Iö˜„ï5ÍcôÛNŽ�ûøQƒâ¬P—oûR­ö‡ëäB°@¤y&Õk"™Ø¶Áí8Ü�ÅA:6—˃—O XFÒ:Í|EêkëdE}½x@%AÆby!úXê:KJ´qÂ9iöI® ¬8YNøO£©¨:‰ άTyá„ÒÓ}¨‘°JèL’“Ö  2 ¯â6ú[ƒ¥§•"3úAƒÄSI !3Ì8T@aж͆Ùþ—–dL9y˜ñ¤"ɨZcy‰Ñ„ˆ¾å˜/Cò ýAÏ”¿6*×H°¥@œÁå›:–ÉFRŽ&®ì_åµ”F¤¨ØH(¦ l#3®ü¡_q”±Ðáü¹±ÿìŸê#ÚRýE=:-�öÜ’'Úúzäå¯ÉŽk®Xx…º¤F@#pIàµËkØL7ì½Õ\=¯%�¦$~ë´ öÀÿÏ|ëG�ù«òýo¼¨–šl[œºÐe„@lbLz^ÿ9îe�{R¾ˆ¾óí7^Fè¡j4�ŃMég=SN—Aqt¤[/]0YŒ€¢¹(‰¶²²2<Ã<y’hf2‰6ŠzÈG„È‘ûèWŒÉ|Ögyîgyæ›vojVx–fÛì×Äq&³n\‚hcüÐl–æ·ôù–HÀŸ?È=¯Ï«ð…‚àTȱØTKÙ€ÿ„úͤ7¿ßð›GœÍ~_¨Î«‰’mT¥9H´¡KœH4‰Là†Âž2È%Z¨Åøˆ“ŠCåp3T~Qñ" §@™sR*HÅ—l2Í6I¤J´,ˆ<šh2B> äèÍÆ‡&ÔÍø�*H-*ÖÒKù{Ãv'6ƒþð¤R¹ÆIÅÄ0²$Ԕ܎äö¥°�D™šˆJd ‰q„ ¶´šˆ¦éj©zŒÃøYVÉP9V�Œ4!¥êM�šãB/-¨‡(%¨$æt:?Þ¼çfyôÉJwo§ªè¥ý¯ÊX`\vByQ^á?¿Êui�€Fà‚#DD¡ƒ?EN¿Ñžo«¥i¥¼ùº_ÈoŸÏŠú/¨À¼é)Ø¥W爀ÊñÿÆ{ä“ó¿Ôo7_€õ�Ø/ÁÁiÙ²WÕ’N%$>aøq;[µ·÷ †Ùœ.Ã{�۲þ�Ã�~™ëšŒ¦û~ùmÒÜX_¸K¯k4�ÀE@@ÝâþeddH††ð\!˜�ú tüˆ„鑾Á!9|è�ìØ±Cùd#·Ár…æ•&�d#�FÉ$‚LR�C*.{†yÖ&ÈÁ1�—¨¬¬œ2¶³žçA ›È¿X­v�—N�¢åŸŸ ~/= ú,8™˜€ b%¸!s#hfÛápI«ÇDœ‰yṘg—.JöÒm8QôƒF¶)2+5¢sÒ\ÒŠ i€KFÊP}Ä•�~Ú òV 0*¾’ ¦(Áí6ØO¸@ƒÚ $ÊZÕ3§BÃŒU“ƒ&œô’FEšû<É4ÇCA‡}æÃtÆ17ò�çT‘uÊõÒU‘g˜¨'…}2í® æš3Hʱ.|dÈ90�D"êa9š»bC™·'2ä6¨Óy!`¡ù»¿ùGòWŸþ8˜rÃ9÷é“íÂ�¿Ü'e°W§î¼ZÑ…5�R#ÀïgFw A²_˜Ê`.Êkš×v)Rñ÷¬R/—¢âË´Ž­›Ûäw?tŸüÏÿý E¶[.×cˆ6Þ}ì9®ž5Õ®Ü*5-U]FãÆ‰°ÜæA<SõYx1¼íöëåžwÞR¸K¯k4�ÀEBÀ ÿéôýErÁ_i5UU°|‹É‰ã'”âÊÓF7Ì�5. …BŠ{ c~Šwø¼Oˆf–$|øá> o¨�s¢ÍLÉG˜Ü—ç@VÁHæ1sûR,Ù'³ŸH® üÀÌÀ±€ßµ¸!¦b›©œ<'"‘*+C –À‘44¬æ´>4Ü€™8+â¾ØSI‰¶ ”^$:(þbDÍL–æžÐp!@€¦žÊ70áCM0in)p6hÁD¤¹ee`\©N8‰)N~´pˆp⤅ÅB… /òe(‡uuL©âPdœ$åùi&IÆ:�Ÿª;úqËbYf~XO¼qòX'ò ]^L¼ˆHì‘xcâ6?T¼±l~ÖȦ2" ÷q²b·ê—þØ(ƒ@¤3 …ÑR‘u³Î(l�™_§óG`E}£üéùù‡/ý� Ošžñ¾ø!þü[Ó5h4 �ºÚòÑßú|24–¬‰i÷ “÷9%kãr«èÆëw!²]•|ñŸÿC™‘Þÿž›¥uu›'âòúq»üDZs#²}]­ìÙ»AeáHœeÒ\b'Àæ‰V¦¢<18žQL¶Á‚æ§J‰Ç ‘4.@+ÚÏà$Óz¬&"£Žð3PO™pšÂRÑÆq¦¨d†±uÚ }Äò¢ïØ—B~ŠÚbTÛ¡?ù>±‹:�7ÍM+å¯ÿô³ò£G¿+�=õH^ÝvÞë 4� ŽUl·ÞôvyÛmw)éx),¾qЊ¶Ò KeÛçÿûËóû^•kwnÅ\Ã�n&::§šë}²kË •×– è2Ynó ·Ê ?=>iiZ!×îÚ&·Ü¸fEž9Íu�I# Ðh憀I´‘ì*NxôÏï5Ü>e$ b'0PQ0Cð©F³DFõWV¨¨ ì‚cRôYF�N*;\d‘�br)¿ôåÇ�÷™nCÙŒS pxÜ$´È\ÊÄöÙS¹fô…Ü9²'Lgƒ^›SþrßÜ,L ÇjÔoŒÝ™˜�§!ÇBx ¨Ùºº;$b…ø¼>ð;†¸ÊP½Å¤¦®ZšyÌCú‰øs<$ì¸ÍTØoŸ[UÑ ø§¤D‡HÓIŽ•>Ï’ ÕŒ¹EœÛñ"°ƒ|# E‚ÌÆOFE0��X@¶¹ñ!ñE2�ÉŽüôýÆ Å ?gdœ©"£I*ée¡$#CÊrlŸ� x!ñdÐŒ  O�QÒÉ~p"8ÝNqå.=>xÑç#”‚…Cÿáó *ßp4)…é+/S*Òès�‰uI½†ß8e×ʲ�ȧTn˜@Œ:ÂQxp¡R‡—Œ‘¬c4U3Ê©ªJÿ)´í¾çÎûä]oÿe9qê˜ôôH08®T”%jBW£Ð”Ã)/¯�†Ͳ¡m³úÞ,QÕSª1~I vá{Z§Ò Àb7ì½zJe;®Ü$}ãsSö�kC—Ñ,? šëä_ÿ÷§Î5ý/Èñ·Þ¶Wn¾ñZU7ï‰uÒh4Ë�<ã2mˆä"rܘâ%hiƒßöð 6|à„¿� ÊýåoUµøü^ERòP5µõ20Ї` YÛ¶÷ª†©(]fPd‹@dD2<ë«©©QÏÿ$•HÒ‘s¸”fŽì]jQàC~‚þØŒþðf¸ø†x¶ßŠÙöO…Û$Ò¸—ãæ‡ûÌ%ñâ6û’¨üô¢ )Q-Èß*˜ ÜÚÏœÂqš46(«;>ã—C GbôÑμÊO<š�$”&#”^ŠóÁ~\¬DB�‰mÒךI¶ñ¹œûÈ·�ƒa�¨j‹ã\LÀíX}]½RÒ:RñEàUˆ9‰J»Í)ãcA±´çÅÎ¥$/Õ ç𧤿À @N  ³aÎieCQÐjŠd#¡E �s2 “¡\ÉPò'i öºVšŽ‚ÌR‘Bá½Í¸Hpjh®‰ò¬Ÿ$UgQHS4Å>>RñÄðƒ ¹d"©ò°^öQùiãI[FsN’}°YU'¸Ú_¥ØÞ!µ?ƒ‹ ÄZ}EŸíˆ ªTo4'Ey¿×¯êã`IÒwÛä j�rH¶G)i¥�„Ý&½Ð¡¸0áýMMÀ9œ'�E# ÐhˆW ¿—uÒh4�Àr@`÷5Û—Ã0ô4%F€"ã~O a`­�DexxP™‡’¨i]µÜš”�Sº[*jíÒm ÎH,’Ø‚V '•'–¬%ˆ-�LJ9FŠûHJ1e3ôÇåþAÛ†=ôƒÆh˜$˜/étB2`Ψj#è4ýdž´2#¥Í38QLxy˜U ï¨h#y†ÿŒö ¥Qå–À:/eéI_lX¡’Žõ¢˜$¢I‰ÚÃâ†|”öÁãAQ‘AYóñ"u¸Ñ˜D:î#è‚�3/`ú‚CàQ:ˆ¢MCiG*Ð�1HM“cIÃüDžé+ÎJÿnj<èœN�€F@#pA Š¹0¯i ÷èu�€F@#°¼è‘ý Û˜V¯lZ^ƒÓ£™‚ÀÃ�<�ß¾n÷•ˆ–X™ßÖ+�ËòtªOë·@`ÑE#âõyd ¿O)Óêkª¥²º\CBq t¸ßÕÝ-�4+‚IcMN`“•¦–zåsÝfuÂ/[XB [ZQ¿¡Ü¢›ÏîUp+þ�“lš�°2 ..MÒk>çÊ,o’y†,˜¹’³È�¬Ï$Ù¸¿P–7ãDû\gŸ©8ã‡u³³ìÙúeöƒKócŽ™u±îLj ¤±±QUE ë·�Ê‚çihlVnÀ¨tsÀ‚�ä-iVÚÓÓ‹íŒlÜ´õ´Ð”:_gë×b8VR¢�“™2> €ÿ »Èw!º'³4X(Nt&ðl ¶@®³*/¨Ä^6ÌB¢I"Í ¤@¾q’b3ºgä+V6¼vÚù‚¨Ã(TÔPÕ4•jÈ�6p€륉i"gBÊp8@°ÑçšÃG…ÈGjaøc£ºŽÑNЪÕÈ«ÂÑÂ?ˆ?š’ª ù~¡ÔgA¹8I5¨ÖHæq|ìò¨žcÀ+I½ùGˆtÒh4� ‹¸ •Ï:i4�€F`9 ðÕ¾›ÆšÕÍšhË£¡W.wøb•¢œ$TT!R â‚YgÏë>øe'ÇÁ7¤¤¿HñCƒCÉøÕ³?I"*²bPXyÊÜ ÖÆ$O*Þ ?ò^˜ŽRÕæ—€G �ƒCpZiºœ‡qŸi’U&ñTx>Ì}æ²ðØ|×Í:L¢Ë$ÔØ r&‰ÆzyŒù)€"OAuØ$ Ç`’)á8eJ\(úXQ»Š:Æö˜—KŽ•–gÀî'ÉdttT-é�¾ÙØ&Mm-‡2)¥»-æ¥i6KW]i¢^ô ë¨Ï ëHPC¹vŒ6‹º²(7KJ´Ñ¹0�À@'M>ßX-†R�ûUð8u<D LÿãÕi8fœ\œ4ªÖpÂÈò2›ÍFÓK#O¨R³¡ŒŠ`ª& 'ƒq’I”ÑÔU£rãD“%áÅ�Œvg³áb±' V‹ªöY–] ŒÆAåea¿�ýìê±Z£j�a¥³Cªò�ûUï9äM`’p¢˜m„Æ�—ÃÄ¿ ƒC ¿L¦™¬ÁTíÔ4�€F ä¿)“Õò÷C'�€F@# Ðh4�åŠ<Çñü?6PJ¶öö3’¬Œƒdóâ¹<©¬Óz»;”zÊãõ”ä8Aä::ÎÀ7|²CTYQ©Tp �Âò-$N—õ´�ƒ�n­ÆµÔ‹ÀŠà!Ì{M.Mâ«iÖ¯xðLÌW|¿Z˜¦õÂü&Yfð&äI¬ ÙàK3HCÃ<·“ðGO‹þÛÊË}jÉ>ˆp‡ecHÖ�›™©uƒwa¬›ü‰G”$Ú˜zzz`ŽÛ-ƒƒƒrìØ1x¢jA–1¬ á‚ ‚+F5úHÎÈÀ�có@%è‡9©Ëå?úÈ<sÑ-ëàöbN%'ÚBc$ÚŠ“¡d+Þ»ô·gëÒ•�F@# XNÞˆp\|ñ¡“F@# Ðh4�ÀrEÀ �èÂi|< $xZ[›Åã(“¡ÁCxŽÙO@ZB..A˜ƒ2âh`tXùjsÂå‰·Šª �GN;v†I)-ø¼^ŸRiÕ#J©“d¡2_™"šH¢)2 ¤‰®âÄc$¥xŒÄ—Å÷ªÅeŠ·‹ó›í°m“Äc¾[Vâ$WÌcWÁ&AÄM„#øL@éça–T 8u¨ª¬Tª2b ·gn“Ì#ÉF¥ÇÂ�q|���Š`‡j°_ícŸHÌ‘$c¿Ø?Zšõ¥ fs‚¨‹ pE4SËúúF(i–käç�¼9^Ö·XSIˆ6ÚÛÞÿý‹uŒK¢_¦Íò’è¬î¤F@# XB˜?Þf—Í·Œæ¶^j4�€F@# Ð,/` ·O)©FÄÊ8Ü�€¸imñ‚ ²A)U©�òòJår* ÓÐʪ*øf�©¨DšWʲD"‡¿õ8€�Š Ö{´—‹Äâp?å™–ÊS^ˆÑ "‹d•z¥›s�5!Ä}¦êËZ0Æ`YH20³Ó•­k@ÆÑÂ�Äáä8gêϹðº˜ÇKB´555ɯÿú¯_Ì~ë¶4�€F@#07póQ˜Ì‘Â}z]# Ðh4�€F`é!`ú�'AC8åç+ ÊÑ׎ÈúÍmŠÄ¡'9pÙ¼Ò?BÍéVÁ"øWC9*«Îœî�P0&Û·m—1D(}♟«h—×­C0·ÔBñf·Ò<Ì2a^ÙÑ~R¶lóˆÓæaGe?4ub Ñ7º¹R÷ž9SL"\löHÒh!ÄQa³.Ù•fôFò‹&¢5þ@×X4쨩­“jl/S�Ã@bY�}ÒÆ‚2€ :>¿~ïQêóƒ|TA-s·Õt¯år¹Q¿ÑÛ%9ÆÃ¯¾ú²œ>uRƒæÉdLxÇp^RªŒÍóTä¬Ñ�G%›€9/üáÁweº€’ÇÊAòe³4)iŠ>  …Óä½<[ËuHY¬˜ëØ}‰Ót-ã%î�n^# Ðh4¥D@Þ)¨pòǹ`§^Õh4�€F@# XrÀHKþÓ1dÉžTAÇéGÍ)½]ÝâvÀ²ºJ©8¢�FåÕW^‘Óí§`ÒØeÕ8È«œxý8ÌK[ù•7N¾Õ}¸[åè±ãʼ´ j·�må  \lÁzºÚU°ú‡w¿�÷§àŽæ“Æ='‰(ª±ð‡‰lQQ*$ÌŠ-h“äÉ<“l3Ûæ’˜�tTæ£PàEAƱOT¼µCÙÖ?0¿u ErUVV¨ã#Ã¥p#qÈrtÃÂ>“d£ZŽõÛVÔ2¿öuõuÒÜØµZ¹¸`zKEMHIŒÆãˆô •š×ïáW¿ùNå÷ndxX‘�<žD4ØPazƒŠÐáø¦§é¸NÏsñö”DÑvñº«[Òh4�À<(º¡)ü¡žgM:»F@# Ðh4�À"BÀ%†ébZ†á€¿«»SâPJ9\éíëÑV!�+êU$ÑUkš 3 +×¶HKs³�‘M[Û$žš»Ë*µõU²fýZik[¥ÛI(°²2ÓR¶¶¢®>Ù`R Bh` 5¨»Êü0Õ¤_7qä�4ȧ8H,šU:`^i&ÃW°Ñgs_©—¼×%ÑVsX&ú…#6ô¿Æ43ZgLBaÆ`‘nDO• ‘èDT*àŸ­¬¬ ʾ EnUUW‚°K+“RöÝ�è &1ÈvÌ¥r|¹=“3gN)k$úZZš±ß*�²mëen›Éþ0/Õm<^ƒv‰Õ0‹À¬tph@‚¡1˜®VI08.•8Îþ›í™}PZ„JB´}îsŸ“'N,Âá-�.}éK_Z:�Õ=Õh4K­h»ð'‹o3‡GÆ”©£së¤Ð|>©¯­ÆÃCIn¹¬tdÝß? �óáM§K‹@"Êwàøñ×a‚5¹�? W.&¹ÑаBù®ºh _Ö åÔMdÚð?Å�þ^�gq©®®QA0GŒÀl²¦¶FãÝ©ICó éîêE4Q§¬\¹ZnË­p¾“�õÒ7Ø üåP¸Á?Ì@Ë}•ÒÓÙ.Áð˜Ô×Ô¢0¢zF#ʬÔj«“2�K¢‘”nPx ÔX0/%鄾x<åÿÍ|ïK¿g*“O$¥ø=ÍyÉcܦ57=Ð,”þØ"‡TIÊ‘´L@IæH:@®1šhBÂ!…U|Tì%éû 18’u6ªÚ0 ’qhAl¢££S"Êw�æ Ápõ„A<&ÐäB$×h<¢~G\¨Ïe›ÓæúeG` ˆË8Tl$ûl-TËA)‡qð÷‡c !W<Ö …éBë-ɯ>I¶—_~y¡}Ðå. ³Ëè+‹}‚^ht“�À2CÀO>9(†¿Ø‰o@k �_ni>N¾ó½Çeß‹‡ ù/·áéñhJ‚#×]µ}£¼ë7É–Mm%©ó\•¼õ¶½ró�תl4í)EzåÕWåßxPö8Ejë´Øøû¿ÿÌbëÒeÛú½ºöškä¾ûî•«®¼rYâ°Xîm̪¼¿Ë‚å Oit „R$›ê,È£”ø<>øã‹Áq¨Û…´¥UV­\’( õÈ ÌBkêQ>Š2 vd)Ô[$Æhõ åÕÊÖ•„`7b07U*1O9Þ¬Ø)•L#š)òò¤Rue�Ø@ò™}¤z ú2´¦ªÄ‰m2±Ofâ:?æ1c?û`ŸÏb°\Æ€Ucêoaj�ííŠc`…žÞ.éíJ”„.øÄ#©‚:­f¥Ñˆm x„ú‰B àÔ¶×û’†™jˆMæ'aÉq�p#Ù¶ØSIˆ6s�mÛî_E³¹‰%ãr9ódO®“à±g¤A%mÁd³Z+Ψ…K,ÈHƒé”6°´Á¹`Æi"OfQš�,"ÃÊæmV0¸¬TØ ¢�1OËsZ²NìæA¶ŸkG-ø‡G&¥‘\OÁ ¢šQ‚qdèÎ>pá$ªù�q± ¾Uäjg FzñéO›«uÙÓÓ#üìØ±ã¢¶{1›ˆLȳ/oÞsµ|ø7î…3èI3¢ Ñ!*èJ¥¢£3í¿ûôgäÑG»]Õuj–%$£öì³êsÛm·Ê'þèãyc¹ ø‰'ž�;ï¼ó’�Ë$‘è;,4�X$*›7®Ã ÀQ(ÛA7@en¡©©Y¼>¿ì¼z7|²¹`Þ‰gô4H&|Çù|å Õ\*ߊúV�9I˜˜&¡ŠËˆ~Ùšà»­ºª\©äÆÇGayF©Ù|ð?æÃ½,M!SðɆ`›âó4ùüOóQH)<Œ¢nòðq†¥Š_ ‚¤‘â!°n’G�¹�s…Û¼—5ïg™ÏÌËãæ~sÝăÛfb“÷`¤P®§Poc'ùè‰EU‰0ÞŸ›îî>økëV.5ˆÜJ…ÇH[2á�2o™"ØÌþÑŸÝÐаtv÷H…6‹]ùgKÓìç$�öÚa>ºyËf’ö8_T×)mØž€¹hÒšVf¶¬'ŸqU0-‡‰.ñÀH…ؘã›ËÒTö™ý5Ëâgî3±2·²,)ÑF’­²v�êílcFj‰—:¹œdo 2ËîƒàZ¬˜,è‰D×Õ‚|šÿ@Ç�lÃ6ø«´"Ú¦s&p˜‹ûÕ?4I§„…I›2a3˜4°Y&ˇ”ʼnW˜.ôÛ Ñg^Li Ìc8ÑA² H:+=+2(dÙê,êËb’)�3áóè£�ÊæÍ›/ù—£³DžzöQùæCàbÖÊŠAª«Ñ\0H€�êsìø!ùþ#ß”wßý>¹éúÛ.X›¬øRïü=ùÁ~ úЇr7 tˆ¼ò/íÛòÈOŸ½àíè4Ë �Ÿ=ÿ¢Ý ˧þìÜl+v$Ù>ü»¿'ÇŽ+Euº�Àe‰Ij ¾ðù\VÏ]¡PHüq¹ãŽ;.éy%1D¥•T#CýP¥U‚[° 8‚\ÕŠìa„L*Ìh¶X_jxÔWÉíöaŸ&¦UÊô‘&–VK¾ÖìÈGÓI˜€BÉæ´º`2I_oÝA4S’L°Ç”�ú[#´9 „ƒ©$]#C#$P)/T`.¯â;HØÈy U2!$™LN„¹ “ S„êïYAÉ)’ Ì%vHæv.‹Êcræq³.î7“¹Îc$ÅÀ°€ðBðŒÏbÍ _vÀ*#£#*óØqÜév""«]FGFU^0…ªëÀ¦¢X¢>~ü¡»»[¹x<^%vzó 7H/æ~7üå��áëî´à�¦Õ~”¥1SÑÚŠ@,ã%NàmØ×L}Iü �€ôŒaŸDÞ�²¡¹bÌqδ$Žæø �›D'�s ¬“s€‰çžÇ�˜73•-¬g¦u°X¥MœŠCµœÐÆ2N°)‘4:JMXLEøÀᢠù3OKy&KZ�68êƒ €+¯¨ËF®¢�ÜDaò}6H9 “ 4�4Ëf™Ä/Lì7XgæU*5V€.eȪîeUßIâ¨zX†CÆu�îc ufÈ B‘—EßÄV1ˆ…�¹„ëø2à›ˆ·¿ýí—°¥kú�ÿø²<þô�JW¡®I# ¸¨� ÿׯ ÎkÛå}ïùõ’¶Íß~Ÿ3™Ë’60‡Êdß¾}rÝu×Í!÷âÍòÓÇ_˜J²á·Îí«§§7b¯~OoÿuÏ4 ~×d ŠHƃ `÷²H'ßè”/þóƒò±ß}ßëÊ(è{rŸª¿¾¾ZîÿÝ j‹J¶B’Í _EÞòq¹+pû¾ø}ä,hк�Fà<0¯ûxl\&‚ýùëþèÑcJúWŸü‹ó¨}ñ=SrZH555]²Îe@†¤ !�0‡ÓÅÙI©ƒÌ|z¥ñ¼^^^!¸ñhjY 5TSPýò¶�*.~ø|O+¸4>.N©dZìØ¶±”˜&Õ`qÔÉh™ÍÍ+AÎdá¨?( ú:ƒÿ¶P8Š aXk¬„_6˜§®ò€¸!ÏÀûOŠp@–©û$ƒ1A#IE¢‡$—TDr�„·ykã3ïeÉgní÷»…ëf>|ä)T´PdpZá &¤ô)—L¤ lƒÉfÄ)}½}P²A©—I€Àì€Ù'H8–ð{¾ÚÚÏœ’¾žnÙ¶m›R¼±!�§N�B´ÖSðåæ�uë×Á$wBººº”o¼`h*µÎÓÔqmÿŸ½3�«ªÒÿ©îªê}_ÒkÒY:{ aMXd“DqÅeþÎâŒÛÌ8ŽŽŽËè8:"Œâ2(*ʪh@ a_BBö¤ÓKzß—êµþ¿ïV½îJ§“4I'4P:Uõê½ûî;ï¾W÷þÞwÎ„±*:Tr™¸ª¦ÏMqí‰ó–È9JBy(è©ö¥¦ÊÕ4Ë�/Ïd‹Ú&ªx¯Þ¶Tól¨ï#ŠÎt^ôY1á^mÙ—@½Ú­Ç­¯Î™à‹4ƒjÐ%Š éLr¯T¡í¸‚BoÓtÂ9v�¨ðKõ@O‡� kõDu–Ñ)&*‘1ýþß Ê©Sz2 JìgMtb•Ž7ÙœRô&èdH‘æ€ÛÓ†ÑîêÕ¡Š\Ì ãS_¨''b˜‹') %ÇTæ‘¡a¥þU[d‰!ÕæÓ¡<õÔSvâ‰'B•‹¦Cs» ÷?üëý [vaªeå%“iF€ó°«Žo·@ÜGËÜXû‡­£%dí�5½€˜V¹Œqvg:]u=]yÅåo¨˜mSI±ë­·º9ökq.4Ÿ—â*ŸX^pƒe �;›y8 (\“’ °Ï|=%5Ýa‰¼Ì†‰Ü4ù@IDATP`ƒ:Þ—+c$°?sú~�‰D⺷ Ž_âb³Í®˜ÅÜ~ÕV�5Ô’p�±lzz<À‡ d®Ž$¿ñ·X jdØGl±B§ŠIJ"¶¬a`D2wJ-åÁ§žãw#‰Ød¾hLÙW}JÀGE`HŸ½?oL«ÏDòê‹]ÇSÍ%ÂXT侪¨]]›ê—çÝûf\‡;ììÙsã�H:qÜär;FaÔÔÜìT�…¨Öhπ˷oßn»Ÿ�d 3r‹Po¦ß>ƒ¨ÓBüõ:%]CC£Û¿Ÿ‡5f±+Nçc ?d)ÉI–šœÊùKtÐmÅ›x‹b´ x ¼½šâÙA LÅN8S±°NÇ ÝT¿·­ç�‡W³ßW×ÊCÕ,h¥^ȉöŠÌõhþ�¼�|§÷‚Waù„òNþÊI,ã4Ù0”ÙŸ½å3o_…9s'_Üm|‰Ô;~©>�íKëDž²K$9Ö>q?Ê4HºèÔl4lš3ª[U¬U{¦Í.Fœ2k°mö±�:ˆ@a8ôÐCvÍ5×¼VM8¢ýþñѧp�ƒ¢éy³ã�íˆ,ßøÍb�Ósg[GãæQ…Ëo~·ö¨�¶©°«xEP=Ù©Ö6¾¼ µZ3û ³ŸTo»¬¬¬ ˆ–îâ­%²®K†@�jG?qĺ¨¯«£‹øl]–Ÿ_à€§Ž)¤ìÖ{ë�ˆIŠDeG »œšMLÇá;1\ÇYnâd7¯è½¶Wñ šgWo=½ª~�=o]oûɾN-hÀ¢A:y‚kj\¤D^ÇN@ª(Wʰõ[Z0léAÒ¸GG³r-)5‡›�-�?”r¾‘>öm_F÷3î $—M á\¦ÉΜ*CÓA˜Ð½t±Õø<½ö23ù¡×ìÔ­®�¼‹NÍx§ÍÝ×(ò@nlJGGÞ‰?wFfš-š_AÀ m%½öÙN@yNñæZw ¶Žkú±ü¨ ãEžZüñÇr·S¶¯ûº‡›E¤_è‰ÃÜãõ)r“š²�Ä+Š[ n�£j�q]»[ž–{•R‘™®í›ÞùÁ)Ù¯”ËÜ®]q‰r¦¤ÖëD‰V¬Xa³gÏ>¼ ^íÐÝ+rõˆQ/q Ä-0) ¶%g̰Þöj·þ ¶¸I–øN·2À$çI¼¼"wѸ’ͳFü5n�É[@×�®Ÿ®¶=n#eíÕõ%%Ó©üá°Å‹;WÇc}\IJA ÖžHëB¸rÙA›ˆ+Ö KÍ`^Μ¾ 5ÕÆW6XIi ª4Üú ð_@FËݸG¶‰V­<ÕvWï¶B �¼Óví©A)—gÛ ÈŸƒkãÆ /[r ÙÎZ³ÆA¯Z´’™³¸´ÅV‹öšì “/1‰ødu¶ný¸™–ØžêmÖÙÝA¦ÓY0ƒ\kok³x•µ�ÕÓïHD ^e¡(“*lÓ¦-6CÙ:�~Ã9A¯t€˜¶ïçøZZÚ, l–ŒK#nœÀWˆ ª=¸lfgæð0”\ô·TAH^»©£`ÖŽMl£ØtÙ—Ttâ"*UU{P§í<'‹ßhC@ÔI{åÊÚ«Ì¢$5˜5«Ü¹”ö kjjÀ†;±u«ÙÂE qãí± 8vÒÆò¿ü¥!R—½Ì8xÕÊ•–Ͼ¥xë ávË3\]+Š×¦ªÚS垎[`MT OûW cKnÑ~ÿ¨_’ :J-(o’Øm¼~»¡–ÅÂ7­¯Ï‡S¦ô—]DÔ§ÀÿÌg©Ü¿¼D”d‘¬r)•?®£�’Ó‡øŒt ßr2�VÃPå uôtXˆ ~¿:¹ (àòMWo¤n·ƒƒüã Icô ÔÉ#ÝêlÎ`j‡è0*:a×p€+Ák8ǨƩq„XË%™ÔŠ?74ÜçN¼üµ}(ó‚I>¤ªÆIôãß\Ýn¸á"àm¢®H=ï<ä(§æ«‡~Ø.\øº Щ~ôì‹cÁÂr¥ŽC¶©éñZâ8¶е«k¸~wÄÅB×ö»ßñþÃþ�‹m}äw(²Ä{lûý±~/7‹}èCcO�usµu�£[ˆÑ/q Ä-ðê,HÊÝ@ÙH›[­´¸ptÙtyS_ßà`€×Åd‹—¸â8< èú‰8�›º¾fÎ,?¼Ê¦éV}¨¹”hïòË/?æ-‘‡Œ(3; !M9qØfØ0P¦««ÝN^± Õ¼}À¹‚ff¥Úùç_hµdÆœ;{.³ýˆ[`EùkëhwàiÞÜJ§òÒçy(Ü›Z‰ïÖf¹ÙùvêªÕÀ¥dÔá#ðŠ•ól`(ă“,ÀVe]¯¥¥ø- E]Ŭ‚ÿ—¹ÈºÙßjy(¤†Ú-Ûhn®²î޽ޕ€„¬dF‰õ÷ô[?™7–2S­¥n§sm`jv·âBé@YÖëT^JP ×Mtµt�0eøÄdCPÓ÷ʪ}(F[]]�Õî%NË“lro•Âl„�ÒŠ‚|{kë]ŒüÒ’2Úç„õ �hÅì(lU;^±M/<Ã~†�«gA~žc8ÙÙÄ»óËlÀοàl’Q”XñÖ†qKUü7�Á‰¥'›æåäá*ÚϾ‰_J�� µ´0 ÐÌáX 0ÄÉK Ö¾\L ,› ¤;X'sœ ®£WAmýPŽ/bEk\ó¶Óz±@nüv“ý<¥ �&E¥×ñMˆ,d‹@A “è� )Øo©a‚ëõ¢dë±bü};zÃV½—Ø=ÐZÜ«­×K—0aÿŠ�¼qüÞôÙ1‡Í" Í›\ùD6ùs�¤�ÞLñÓKÒ™1 û‘—¨”l ˆ(„H¨#vª“ϬaN¼²¤ú vë'+jNNAÛp5¤’yÈQÛl —ÌÙ¯í§iQbź袋¦i 'nVk[37ÑŽÑ/—-^âˆ[àõk]ÃhÓµ­kn�¸n�ñ×�®¯7h“ž{î9û»¼üØBDÍÓÝ}…š²Ž&(®š‹›pÁõ�6 Oºõ —N¹J*kh~^™HQ’I#VHÄå÷ED9rÓìõ1´(Þ²�?�dÍL¥¹—�Fò˜KO òŠdÌ¥©$Þ)šQŒk%è!bÐ�{äÒ% �`)––šbé@¯aBc-;î8`Y�S…É…TÙJ»{ºH 8o~§‚“[fvq}ÙW?÷u§’Dfçd£nÃ%“ïA${Èp`Qm–2Nq·B¡A—h@I ’’’QË¥‘p ù�>ùÌóÀÇ›;g.@0Ë^~y#¿¸¾¢|Û¹«Ñºz:]‚‰ç_|H(ï>Ÿ½ô’âÙ+±D†K  �£D¹99ÀiÜ.÷Ùââmye ë¿|Ë´m;w±¬‘ú€r)ÄÊK±­[·X>ÇÐÝÛ‰ Sq �WFP¢àCi—“KæXxŠDQjW,;ØÕæ�ñ=%šÔpªOEÀMŸåbë­§åžbm2OëO¶L)hs~½€*°èVÂTâbŠ¿¦÷êÄ‚lZ¦’8¬“>dyé>è.Á÷|í–ä0ú ,òh¶}O¯uö·�ƒ @1ÑTÿ¸âÜBcgQÑï•QCÍU‘y;VoTÑ+Ë\½¼JÒ/b«â¹�ªZ�¾²p$°ÿ0M'Fÿ|Q·Ó@Ô¿9-9Áfäs!„{ Õ#V\�nõ32­º¶‹V‡€o\´^Ü^¦×?ʆ§Ä3fLML¤cqtíû“R§´K‹Cˆï#n�¸b,0þÖ5>% -ò„Çí)öÇ5f×Çüí£�>jÇ1ÈR¥×KQðÜÑ2Áïîèwñ7q Ä-0¡Æ?%×äa*Ê¿þûl˶ÝVµ§¦Þnzÿ?Ž~§6|ó+ce¥ï9O�Ñ-4\Ž_ð1房�[àUY`üõ3þúzU•M󕥨ÿû§Æa²‡*Å“mÊžÙÑ`ζŽÖv«ïj³9/¹ç+vzCc'˜µ[ŒUW-J­>+Œ niþßÒÚâÔd:gR�µðÀ77ÒeËŽÇ]²šøoÍlÓã’ öôiŽJëaßÀ£ ™Ü9s2Èrš’šŒûc·{¨¡;}n’#@2Á‰±Ûœ?¯ ßúº{œ+±BPÉõ3™!I$ègÿ‰§!’2(æ»Kè¨Rì8Õ1Â_ª0…Gé`¼¬xsC»â’r—¼@qØRÈzÚO¼µA}C@C…fÉÎɲSO]‰û© Ý ‹mä&›ËŸ2ˆJyÙŽÝJJJ�:N€x€º¤:Ó°z�Äй¦xõÚ¿@caa> ˨#ß–,]†b�Xuj×@¶;Æ?ñ“¤·S\}{û:áõ§ÄŒb:² oØn××,—Vj>Ç{&Ù!¼ëM*= ¥<�&¹–¹úAÓj]½Æ¾÷¶Ÿäî¸ÚÔR êÜGÙoÝ?‚\aˆªy˜þ4 p“Þ'»­7Ëüœ �t¯­�ÈZŸ$“dAÈHÍ·²’ÛÛÔg=¡ g�…tÿ&^Ñ×ð\ô�Þ©axé½:­û�•mÄmh*¸6ÒNð¶ÜE|¤”%Sˆ²¤!q �¦c8A� ÑÁçŽS“¡ãÓáánü¨u ÝN$1B[Ÿë4‰É9¤z`ÅiZt^ts¼å–[¦i ÷o–n±Å¤±Ëâïãˆ[àõc�ñ×ðøküp�$rï�lí~ƒ·¢)ÜN?ö<ð€]wÝuSXk¼ª¸âx3Zàºk.´Ïÿëw'uègœzÂA!Û¤*‰¯·@Üq L`�úúz{ŠøŽ«V­šàÛ£³Èƒ%Ê $3¨²Šæ“ 󳬧£Õ±Ìà´6·¡ ê³ÌtÅ.óÛ¶íÛˆÓÖíÜ-“I¶tÙRÛ¼y³{*¥™ WV�š’F°þ›’×WÇþ�^!´95V  ½£^ ˜ï!ÀÕ�Uå’Iˆ‡.X+(C•6H2àU‚ŸÈôÔ ”„õ"ê,ÕTG#®–réìF­¦D‚€¡ÞŒA¢#s@­·Öœì§¸U’eUUbý¸ÎŠy áÊ*°4¦>âÃ%â]æýÎ]5ÖM,·üÜ|ÇIôUб~¸ AõѦ�hI)(ú Q¢%£èks. ‚^rm•zM3•ãL âÕÄK'qBA^%±ÀŠ€nM¸‰fg‘4�ã—û&Z$Ž6®klh@tÛ�ɽWjÆ_ãˆ[ n�)·ÀÿøG[ºtiÔ½pÊ«Ÿ BAb¾ã™†ëcKó^æä¨ÄP¶u—Â(»yfU”37Ï$YA½ÍÈËëØ¾e™Ž;`ùʦM.n[ <¤žèïsí—‡ŸTrÊXš�KjS£²²’„@–Œš¯ƒ$C(ÓR°}CoöCGöÐ(uÂ22Ó­uÞ!¸ÔÎ ÐN1ïœ+.J¸Žvtrõ’yª´ Nþ>‹bA™—1TËt.¼zô>2 ë+ä/€Ë°bŵµwò>Ìì�Ò#Wÿáà›)mêàb‰¤qêd@A7dý§ gjs”5.Èô“7ää�$?èï郆’Z6„†BFS‚tŠab�‘ƒà±vˆ/DÈsÀ�žÁþö=øÈ§È¿‚rÚ·þ�¼ ¢…¹ðÜgi¼ )<`°…éÐ>2ˆŠÎ®Ð�±RWG/�¢ÝͲAË-"C‡?�N¬nÀ_9� ¶•ͺqÚÎGZÚjŽ9 ù'顯 �t:™Ä£G§PêI¡ŠâyE~Ëêx"È*JŒ°`ÁwA{ëÄ_ãˆ[ n�׳ôûä•È�«÷éÈ^õ4³½½ý�•Ä®£¬Gz¢¦ìI*÷ß¿}øÃv÷áCV_!n�¸â8€&£j‹«Ù`¼øâ¸âµÀÞ½{GÇ(£ 'xã�côU>Ê-©’4Æ’Ú顇²«¯¾z‚­¦~QD CÒBU®šØÀ^imŒÏ’Qtíª«%ÉA¾s„c/m (î€â Õ•²sÎ'ÂÖÛœØgï@=J¯<\3ÃÖÛÕƒ§ZØ–ê#==Ó¹IŠ=ôt+^[ªcíí­kfÀ27Ö4RæÏ@™æÜRr êCe—oƒ°†íêÞi½²™¥0„nvÛ�`CVR\‚«% >"WËávfI½ˆ�Ò€Q`™;·¶í¼¡ÈÃ�4Gê/ê$k&ÉN ®§Râ)&šDEjƒTjIɰ ¶W„-e=U–Ï4êmmm#Ûh•;9éÀHÅáPÌ:vݤ\ËÍÏþ¨â:éĸÃU‘øi!×MŸûs#–C–‚m•˜Aç ^0—Ö%$`¿ó*‰qÇqnß±U[À*}sb,I‚0dS_R‡¾2�bg© =`潨'é{¯Ä¾Wߌý,h˜ d{æÙç±*AâÍÍž;%b}™æR—l§˜¦ú,°(çÕ[Ÿ·OïuJAÛ0°f„ç‡Æ&¨%ü…‚6‚»§„މ80'Œ4[N0d™‰ø'vY’|‡‘ PPØH� \ À4²r$$†è€![XÄ�ØŽ=µi™Ÿµ#øë®tÁh_¾ˆ'Y.m²· )�‚�,¢t®Dþ|2<¢ ¤d!Ëø^Á‡ðQNOiFâ×á‚ú öwÑñºðgîwP.‰ŸC'È+ÌuŖžxÂè@ù¥ Q´õZzjöhrQŒÃ6+'œn;û«­µ Ÿë¼ùÎ-ÖÄïzpê�› ÛwÜá�ßI¿ÎŸ?ßžþy·¾.ôµk×Ú…^8éíã+Æ-·@ÜÓÙGKÑö /¸ûå«9v=•›7o�g_v›µò4ïñÇ·5kÖ¼šjâëÆ-·@ÜûXàPª6Mâj¶}Lÿ·@ÜX@a-<è2Á×.’úIîŽ555î{Â_±b…UTTL¸þT.LT 'J€¹�Äá>€˜ÏJKЬž ›ix®šPy-&n˜Ü1ˆ?–Œ»£\.áuä&™Xʶ¸$q¤ìje~�ÉCÒ&’hÍä˜Òp‘„ TiwõË-T®“�Ô+u[ /“¼ð$Ñ&« ¼D�¯Ÿd‰‚r¾KÜu¤ô}. :É–ZH\¸Ææz+Ì+"4UªK�‚.ˆ@¦‘öªuww¹ R‚)¶œÀaVv.@�d8�´ò™³€HR‘õ¸D Ç¢ãêdu‘ܪ¡¾Å–¿ HZÀò.çºYWj<Å[ëëëq 0€’-¤S¬·$çÆ —¡(¿EŨÀ²lÏîjlÜâLÌ™—Èúý(ùú€W€ÇþFì‚Ë-Û .¢1‹¸»“R€‡|×Ãw Ó"{ªÆÊ‚‰xúÜùƒgΘ“üG¿{‚br¯U�ú]† Ń_ÿ”ËŒªø}ì[µ§•j)ôéHÆÒ€Û^ͽ‡å^ûÖ 4[SWˆdæü˜i=j0!ÀHÝ~@›÷Jr‡ZZ`ÀŠrÌÊó!»ÉB ×$T�;/¯®¡t–>:Å„5ic€u’P�-™�l',ʰâü¤ @µvÅ V|9G†E¯yxcçA|­ý~ÜMù4BG¡.˜¥%%³=Y;b#ý æl¤®VìÞmmõ¯XGÓFK¬µÂÌ!›S´eó³måq3lñ¼l›WN¦‘2h²µZmÕ&K p!¡ºó'ÊÍ´› 5ÍæV[åœ[2·Üf’ ¡(ÛÇ+À�ä‰tÜ¢è4Q �EÁ¸c“ (1BR×x‰[ n�¸Þˆù}Öîk]ôä7�`³^ùóŸÿÌÓD‚ÛÆKÜq Ä-p�ªí@%®f;�eâËãˆ[`*, ¨ÊxE±¿�EâDPÌóÙ+Ã;%*hm!k&Áü;Q_µ¡6 á^2å¡Rˆb¨xn-m­NqÕDL´'žXç`U7®�¬‚EHq%8Õ¹s÷n“Ò¯p×ÖÚ Kvõ ¼ °õ"Té@!Ö­(žªªv»öÈ%²•åR�).œ2�ö B€R<·²m*¡€SŠ8%`pª°þ^2Ó–¡Èí‘Øïr³¤«—Ú�íä‰ÖÜÜDl8%_ ¹ë)ÆÚ0Ê1©ëŠ‹KPRÆÎêÆ-4Su(\¥�$ i$�ð)–° °OnеÖÛrP2Lq±áR’ÓlÑâ%´!›u#¡Âdï”fJúÐÓÝ‹½ñøƒá¤'N ›M6ï൓­UN•ý𼥨@à/Ó¹ãJ‘WØzò©§Y¯ÝeƒMOËàœõ£†â®z„ãv�5A;õGý¹iõvÒî­( kêêQ,f¹,³Cp)¹ÞJ™)å_'±ôªkj‰ß·Å�ÿ¦¦&—wàP}{JmZ"²H½xké Â#¤™õ…,ƒ £…øïã:Òa!N¢N’²jƒ$À�‰œ ];wãÛ¼Ó–.^HÜšyœ2mÐ9“S[lÞÌ4ä‘©(Ûº­™@‚݃j9œ²$ö±_N¾>}> 8$uÍq�äUJ7eÛÀµÓúø ²B¢þèÜÁ@ŸÍ€¸æåfÒI’ð'&ÁAZÀ¹ ’IÝ;È OHìgYiŠmÜQ…J­ÎŠò úWžc•3s-Å�TÒ?Lb Ò†½õ�6{V%™à{�œ@î±ýTÅ©›Ne.YYœ¼•Χ¤÷ÝwŸÝ|óÍÓ©‰ñ¶Ä-·@܇e—õÊtmj‹Tmr=ÕýV±:äBzà 7xÍ|Ó¼Î?u™]µŒŒÝ=Mö�»¶Yç›æÈÍÖ\¹ÂV(öìDeØ ©±ms�Ýûì±…°kÞºÂΜ•d;}ÊîÚ84Qã¦Õ²„²™ö¡‹+,½gï›®�?Rµ½QÕl³Éœ÷¾kWÛ‰E–‘Ä3…ë†ñzSí.[÷ÈìËÿ·m¼‰¦æsÙ2û‡O²´îíö•oò „ùÆÅï¾ÊΛ›fÛ¼Ûþë‰Hh€©ÙÙ�kñ-8Ñ>wÍb/¾ Ïªh×w[Û§¯Yþš·ûµ°ÕÁ-ÿv*, P£±Í¦M›\uOàvÆgLEõ®Ãs¨ô…zmwÕËÊHÂå0›Xl¸2Îê�‡mq¿º­¬b–{¸Y8£¡I!J¼›¿h�½üâËÀ­™¨³rÄ¢XlÃEô¸eËœ*«·ÌTàT+n�È…˜Ë+¹A•"xC 3¿TXüKå•íÔT(Ƥ€RFOÅ9kGUÔe⢙†Ë¥\4+fVtÄÒ‰ §„�Rs žñÊs ‹�(Žš2‹Êf’¹Sžhº¿KmÕß�B8æƒ%p.:PÈÑD¾‡” †KMC™À“ éf@¨°S�€°fÔzƒŒE ÈZJÛQõÕÕì%ž]50p�¸o�§ ð á�ŸXsy9Ô™äÄMÎØl &à–O…¼ÜBë(ì!N]+ü¥7Ý"“[j>¯iAì®pUŠñ¦ýZöCijs®ª¸ï*ÔW^^> ñȸ‰l¤â½ö£ k%&Û.Üeå.š•�åÀŸÀÚzGK–.ay6p2öWï  ÛâŋܹõÔžzh®> rào´ÅA–ûÁ]Ê!arÇvA²PŠáΉ’ ~kù„'›‘ÀˆiÖÕJ ÖM†zÖ¡œzñ… –?ƒÔ¹Ç-·êÚZÛSSg•óç’m´�Œrç±¢TTh#]Ô�45)˶VõØ–�Õt& ‰  I|�»*5�ð_ú›@GHL€�†û‘XvÐ9‘K†š!–Ö–’`s* ,� €‚mi©¤9'ã.œzšo·žßèd¥‹ÍâßLçöCz³óHÉûL•mÞ°ÞòVž`ÙdHMæ"iB.Zµí{éÅg±)j;ºí¯>|›K%œœ\G;° n¥(#±ÍØÄï f=¢¯Ö¬Y3éíõböìÙ¶ª«¢N$Ùïqø¤ÇË›À¾ ;kÅ–ã€ÿ m{ñÛ¶é€ãÄt;éø÷Zit~Ø×ö˜=¼õ¹co¤ô ì²VYòÀF{ð©»­Swǃ”Êùï³ãòÓ¬nË÷퉂šÆË›ÆÞ«X„£Q¤ >á„&]µ\4 ÛÍSR%EPr„E‹¹Ïo–N¿p•]¸�iâPµÝÿ“íöÒ>¹|½Ø-Á—ao»f•-9ÔHì2³Ot7Ø÷?û »«æè�k×õ‘v•·¼hk›ôN,Å®zûr[”ŸpÔ ]é’J»îôb Ä@µ¹§œ`ל[FÊ~Cö!=xê™—mÑÂ9LÌÒy>&ŠÕöFS³ù|Éöÿþã3vÃI…ûÙ#õEª•9KVØ ïÚjŸ¿áßì—ìWIÌ‚9§ži7�3Ï1PmÙ…ÙÛ/šOŸ+°_ó1{ÊWl7Ü|±-åz.oxж'¦†£÷vé™çÙ•jÇ$ÊÚõøÀy‡n·/Ûnþà¶tFð¨@CŸ¯è5±Õ$L4mWyá¥-¸A7 ·°c\fÍšåæ‡“Ým!€Eª//6í£�>jËU#­2:¥&žT6`d~å\$n$/D`3ÈÜ[qqGHX0H`ý¼|À‘ 2a*›¦\R.e¤eY>ðJª³º½µ.^—õW2î˜r‹TÆÏ>ÖäÊD8ÔN ~ i䊙NàÿdÆtºW§£ð’WÞŽµ¶ñå�$Èr¡,ÚÕÞÙêÔqr+MNÎ@½F<9ÚDc�bíìc�:‰k†bNŠ·¹s墚ŠR®ËÅÌS ¸,ö݃",„[§�â›é�m~a^vˆ…R2�o½ìIÔ³kçbÁu8ÈÖÝ�j Ï:m¿m+*®Úf+))Á.ƒN5§øv)À²Ò2Ôj)À5¹Ý¦;å^.ÐKEî¢{eŽ_J/ÁÔ$B€esÜ#„èòá±Äfí¸¦v÷lnîê�X&0K±à$¬JCÍÖÁ¶Ú—\Žýs„KâU窷[ÜF0O*;Îî²ä¹Ù?šÈ´ÞÔ\¬œWIý¸ãA™_8>”êÔŽJÚ°k÷[¶t¡-\¸€¸ü‰î¡x��l¯v ž¬jxw°m÷û§M§h c`ý‰ô& f3d¹V–« |ÃÖÒXcÏ>ÿ,~»m¶jʼnHóZm2Èœ3œÜ²™f‘Hª‚2qV'—sºé€¥ðã ë´!2•Z_þ³)$KP쵞È�ã" ñcßt2âÅù �)�°¥f ¨i–™šàC2:ÔmÅd5ü¸G¸ù<Ä ®Ì» ø¥?IJãN.â\¤¢ŠM§,¥`P—à!˜œ°BÒñ‡Fô{?Ó³¥¥¥Në%FP K‘f%Lˆ—7¸ÒVÛy'\€64R*7Ú¦uk£ŸÆ½¤_m—�<¶îÐÞ¶Ãm¾B[±ômV‘<,ø•7ë|;}ábî1™öø“¿8¸ÆWagŸq¥ÍåÞPÕõ -ò´mÜ‘Å?¾N-ÐNúv~MâG{¢²/hCz0MŠ@›ÜôõDQEqQ¤.Žu½˜&M=jÍ�‹†I�Áà-Ä£²7S!܉!•3 EâïtxHä¡ vQIŸa·þÛ5VûÎ_ØZ·àèþéàiàaì£|¡½÷êĨ6¼JH7Ù½�ÿö5v©³1P�¬foÄâ¶ŸýòAuößßüÇI�¶ñª6ÝÿÞh±ÙnûÏ/Ú Ë3GOûP{�=÷ÒNkî!\˂ŶtNHäÌ·ÏþæÓÖwöíþü½\öžkíŠÅôê(T{’±½�I–+¼FîÞ(9´èp®›Ñ£xõoFÛÁ¦r_;PÑ„»¯‡9àa|é�އиâ«<ËÞý[ÀæG¾¶ܯ‡Ïl?ûŃ.›ð—ÿù㯠h;;)ö÷ÓO?íÀ“ Äƒ>h×^{íáT5©m¼çsÊPÙØØˆ2‰D\²É~æíL싊‹¬¹¥ÝZZI<0ËÁ©�¡0À,‡å­V½§µ�þ‹íà¡§”dSæ H«iØë‹b§ à‚Šç×¼JÔgg‰?F"Á1)醸ÞïK‡K$9EZj8©¥ä6)™€æ (Y$ÒÚ»eK5ÞqÄ©G!¦˜qÐ*ö§’€Áþ!î+.fšÆ…rõTà~¹,Ê�UÐPÉŠŠfX¡2yâÙ'®Òƒ¾xF‰‹SŸIÍ<ô±EíLI�£ÀT IHR,ù4ƶxÉbçe¡ì¬�¨äörÜý¸µJé%˜(xWTTH{ú­‹ÏŠqלØD�ÄrCu׃zn˜cTO¹¯îÆCQ\AûT¬7©¿ZZ ¡žkv™]3³3�+«vÙ<inn¤mxÂ\”p@î¹Å—XÐá?*‰t!ýžÊ{DjCç:J…¥@ƸŽàe¶MÇaX�’eŒ°¾”vrh΋¶K&Ì™êRܹc Úh—“' +Ó9”�€.h�ümq%Íd¼Ø‡¿t®2[¶ï@FBŒÝKŒ¶üüh!ÃE>~Åý\>³ bˆW±ógîmÆ÷ŸßÞþvë"ûhcu“mß²ÝP§YO6èuušÜKsÒ-39è‚ *`aHç£S' ´ ÐØ.²X¤Ñi»ºð�î!ÆmL‚'“*Wô;�`K�¦pQ¤�¼ ©å .‘˜l‰€ÄDâ¼�m͵ÖÚ\gƒåyÐð4hl’ËÚ‰C¾©´¾%G� é¶ŸŒ¤AÜ\IÊ1íŠc•••¦ß*^b„ .¸`Úµ5Þ )¶€žfP¥Ú æžgyO¬µ– ¦• WŽ®§VD&ʇў´‹ìòU—¸º~ù¸‘»Âµß¯;ðm�m®þã&²±ßÆß¿- ÀvßC¿²µ~ؾø¹oYÁë ´éGZ÷\©‡U:‰ðØc�Ùyç�÷z<ñ6¦º7?n—üÓ+ûm��_b_ùÂe¶"çÏ·U'úmísGwð0î²�ðv[Z°–ÚWçÈnÑcP&7üõäh”®>�”!” ÑÙÕöû¶w¾„ ÈcktÙÑØ÷±ªs<`;œýƪÚÞhj¶Ù×~Ôn…l![wçwíß�$—ñl•³ê"ûÑ—®¶™_þ9öéÿ¾Ðî߃Þׯ굳W£#z5óñOXÂáz»ñê¿¶•s’­qç^ÖÑ äX–»óÖÛì[¾OŸï¿ìò' -ƒG“/1‡‰zSí³Q¸¡×]Çm}‹©.¯½­¦úˆ¦¾¾XÀ6õµýSQl•——Ûž={ÜÎäJ*�)¹•�2LÌv? ¯€N/¬ ­ÃšBÝxƵ[nQ.�\ÇoZ»ê-c8¥T’½ˆ«hAa)Ù4ËÙ–9=.”™åEÒÕ0çtÐNà« /‡Xn-dÂlt.�mmüÇ'S(FDRo€O"¹If�T‚�%eÚLⵈßþaÂM57¶! êç{ÂlÀ”ä@0·˜(=EÇà'>P¬®ˆ4‚ªŽD‘@ªLb©µwà µY__'Ë�l~ê¿ ÆÞ‡ €½ÞP»íص7ÔTn}ÖÔа+Dà”à@/ñâÒÒ\ }eÕ˜[I |xr IQØäço¿Ÿí Í…pi’âáW1ðov¢ra¹Âò ä˜ðVìÔ áŽÚHû¤œ‹$ž�odÀ2³•;…ƒ„àzÅš°µ¦wJn©â=8÷^ÝÂIü#ÕŸŠ~_¥F“�•HRÀMöŠßäådÒw«HD‘í¼#!¢n;ï!ø@œ Ý¡Ú ŸŸ)+:þ0N€‹' Á p«.ÊXAzØB] ˜z9`'×g%e™6ÒQŒ•CcÕ«%\ºt‘=ó̳daû ª2dŸ�Æ”⺅ýPÛ ¥âÛ›WD`AÜ2{;j¨7Ïæ’¤ ;_Ä6‹Î‹t_äd ß$vpÿä2ž*†§*)@'¤±A:Xw—ÜK“éx €/ÀVžþxp¯¿¿ùð*™ìVáÝvûOn´`zwÏ.¶:ÖƒàÉ64¾Þd, Ø$y?t;ß 00�J.YŽ4È‘ü^eݺuvüñÇ»§Ó©�Dz-L·^:ÓÒÛ÷ÚüºÕnýàé¶¢"�_åa«~éeû÷o³n_®Ýø¾“ìÔ \K 6í¶ÿüÒSû¹žÊ�ñ­o?ÁÎ;¾ÄrQ•ñ¹³¶Áyä»÷åÞýKñ¾>uÝR+GoC}¶ù‰ì[¿o´SV/²J2“ÿöѺ}Ô³%'.²\²ÐÊÓÝ@¾u÷nûÕ�^²'÷¯z¿}�.8@Œ�â}þÇ[ìÞÛPî2\-¯@Áó\ëèfró|Ç{N²Õ óœm4¾ÚðØFûîÚ†Ñubß\påivñ NtÓÕPk¿úù3ö´Ú;VæYí‹ÛlmMd²²ää ;­(`»Ã›¬v{dYVåû(±�æ0–bŒg¡{ê¾'ì[�F\K³æÍ´w½u‰*Ù•Â'ÛG²Ûì©_m°§S 9Ÿs\ µÿ¸»Õ>ôÉ3meIª½p÷ýöÕ'"†*]:ÇÞuáB[P¨ÉÃ0 ®Ûv>¿Å~ô«]V­ó¸5'Ø[E]'“sìæw®àºÙeß{ÎogŸ\jÁþ«¯Þ³Ïù¹àígÙÕ§òTÝ©G¬µºÊîþáz[ó“ãõ· ª¨oÿºÍõ«“fåYªbî$û‘ßu=íjÝf_üA�}ôÓ—-‹¹‡¸÷؃wÝm?‰±©wˆW½÷»üdæ“,èlØn?ÿþ/m-wêœSaUO<Îù=:ÀßÛÿT¿¾Þ[¬=ärª¹¤Ü2UûûÃþ°ƒC±ëMÅûà‘ŠæîR�¥¡’g#-V€šMrɄЂ YÙC‡™ó§ðÒÝ‹›"0©¨¨A .â´uáÞ9wÎÀÑ€S/IøÓ¬kE×�»ã,æôŠßC<¶þ§S_'ʵØC!±”RÙMwW×ÚŒ’R˜B†ä�! Ù¢–2³€I|7„JJî™»;È-U.¦ƒð ±„ ¬!=#�ºPÌ…¬“8lBßrkôÁM2X7 …•lÜCÛänš™�Ï+®¥›²žææÁG@²‡@]ˆ‡TFµw’q¼™Ü^Þ¸E[«ƒlÚ·2˜ª]‚Iruígÿ{ëj]S© TpŠ#§,¢J°�Ê£®Nr ÚFûV=²ß`ϯ3Â�z, ›g¡ì€ÏP‡ƒ ¿– 1¦‡PBe±Íæ)é‘ÎÛôûªvIÑ&¬¢Ïr�°8SÑ{�Ï x“x‘ûc­ëÁÁcÚ"2`[ùQ‰—£c�WØ"íйW l¦[‘»¨²ŽêwTÊÔuÓM7M·f³öÌ=ëd{Ç…eno¹B‰Çv={V‰�ròrkË&«VÌr+Í·oÞ1Ã>wã½L´"%!¿ÒîüÆùV>þ±"u,?í»ò‘ûí=ßx�”S®¼Ð¾xÝÜ}¼¿–ìê÷FW ŽÜ†Ç~; óÞóÿÞa7žÄÈ=¶Ì)·U笴Ç~ô3ûÌïºb¿9¬÷]Ä„aËñ‡�0o™Ýõù³¬xŸ/Èx¾d‘]qÙ&ûè'ÿ„º+²Ë`ÚW¾sUD終±Óª³VzŸlë=õ¶öçm è3ìï;ÇÅŽÛjÕöàö6»àýWÚß�ÃDdŸ’kåšm«Ïú‹ÝüO/ØÕħºfnd²£ÕŠ—,³«—ðpñÑ ÖzÊ©Ñó9`g^4X»ÒW, u¯]zÛµöÉÓò# Gÿ�aó̵ ¯i°¯½ï—ö»”¥öåžæÔrn®�{Ù*b Û#é³ì½×Ò_8?ÏÜ_íÎ�Žù_¿q•­,k“¶+ž‘oKNZfëþKûÛ{"Ðr¬¿­°Ë¯Ñ@{´fê+'/±Ê»Ã¾úÜÑ�mS ØbZnRµý‘„e¥3b¿®ßË­qE´« Õ<>!d=Àê?Øw9Ç>{®çÒ÷fÚw0`×܉¥6¯û@LDqã¶)»Èþù}—¹qÉ–¶'ìö¦%ö�¿¾Ì¹Pºïý…vÞÛ.2Û‰+Ü#£{qoŸn»í:£m‹m´_>­÷ø‹ì�¯_m%±}ÊæØÒå«ìšëÖÛ{ßÁ8Ã)ËŠìÖ]æ¶‘à!—*Wk£Ö�Ý¥"‹÷ߥ\e¸i>× c¤=cO�«è]}Ÿ][9ÖØâågص˹ÖàO¬<%ÇS¼Ÿ­óî†Ëh—½Å®¾aÜ5ÈœäøU«lág>iŸùcÚøæÙ÷õ×vJÞX[mÉ|;휋G�hKÚÖ}Ïïè7ÓïÍ °yÖÐ�‚m#GEcœ¿üå/¶zõjo•){E[æê�ÊØæcßéÄsA<3€hGÑÛÛ=Ê6*p2¸ ŽŠ ™ãïi°gž}ή¼â³M±ßC^㎦†f§¼ ! ð£K¬E‚%1ÐSC‚W)0‹4 P M•\ WÊ\$S�D•Øa(5Ë.k䥥M®!·Íl\ÛˆwV ÄR¼0µO‚Ÿ>|ºUG0iØ”kz(+e 1¥¥%®)f›êï'&\;~«…øn­Ä¡îî ‘�q¶eçŽç:‰«Ö̾3™3%Ý#±]‘SGW'j:}—N}‘‡YÊ„š� •ˆÀq¡”,ÝÊ>”µ´¤Œ¶!ŒBņ-ôÀ¸û$â¡Ø7IB…'ÖÒÜÔÀ1r,xú;QRíÞZê P?Ô�ÍpWÄê⸕€!‹8zŠÑ&°'ös¸Åƒlz×ðþtù��rÆ'ìܘbÁ¬³íÜY æ¶ßeUÝ'Ø»¯û‚-Aæ[ rf3‰<×~w÷ öçöÈ�ªû>y•}üæU€ô˜µ g#Ù>ÝŠîy�=¬Ä¾ »äÜ›#1Úì@Û&Ë�sµ]xÂb6ºÄV3_Ûw{Ú[¹ÚÊ~{ƒÝ_ïÁº ÚUºØŽ[rÕ莫Öo´­6�~Ž¿™ .`Û{L™fŠ6µQOíôôwçÎ�®É»ví:â{î“Oo°/}íö1¼žÞÅÄÜÒ`w¸£ÁžÞÚk OfÐ({á’P¬ãê!ØpƒeÍžeeYÜ’Ëí¯n›mk¿±ËíUï=}²µWmµGži²lž§ŸTâ€ÍìsWÛ;ïÙew¡nò�xZ dC9·y·5ørìø¹c�+4Gî‚];ÙB�öÌ“[­#³ÜÎ=AP#hg½ëmö�-?´ïn ¹FMôOôIêø¯¤ÆûÔ�K¢û°Í/EÀPBÚ»ó_€lÑ šù­~b[¯-;u±U`‡dîKßü\›]øÙaùío¾6Ù†;šíù­ÄÂ]Tae¨ð¼2Hw¯x±ã´,Áf> Ùº[í±¿lEa–ikV/v 3ééö÷k¶Úí=m+®:Ñ–]5ÝÄo©#Ðs•üúGÏçdëG-ØIü_þ"»ÅƒlœÏgsÛzÒlÅ) l¾êòϰ›?²Ð~÷?ö–:Æ|3¬Hífû]UmÖ² ›ôGÛs~>ñå1Ȫße÷­ÝeÁY í¢SyzÍùYuíÕö‘—¾oßÚNsGÛ�à‡ZíÅ õæ/Ÿ=ž ]|ÃÉ€¶už‰¦ìuÓæ�öƒÿý•‹Áv¨JßÿÑ:Ô*~ÿçuÏM¸ü` BG‰Vÿá~·lõÜÑt›{ì�Õüòû¶Oœ{µÛ&5WðŠ ã9{5¾?PÑw>_ƒ=·q§Í®˜‰žñýsçNâm‘ÆrÞ~›îWoÖJûÝÙ¢k6mÝ`ÙLC÷œl¿%—­²ÿùï;å}¿ukxÛ�A¶�u5w�Æ€Ûo‡ãä•�ð"aÇ}e]õ{mWgLl¹ÐXl¹Øuÿø›‡mÕ €ö"n¼”®ú=V‡šgW¦èx¤aõŽÕ;±±æèîCõ÷âN TmK²]ò¾·Ú~ÌyI¶/þd ²¹ø|››­hÙb›©ó-^ÝÞçéøújÛ§þá?&u§¬Xj÷×·LjÝ£½’ÔúD‚l* �¡${Š[6•Å{€ÄTÙ<32²¬½¸ÓIE„(m¨½2Éî9 €Õa55õÖ¨ðNeåvòÊ•¨¶‚€¢D7½(×:-—ØkJRÐÏ|}P°@£„Rƒµw�1žx4‚^Ý@*Á¶žžnB*…˜<ܤé ‹ÚP¡íܵ“‡¨CV\<éµò±Ë0Ì¡E\n™;�[NÕÅCü+si?ñÞ‚ÌÇ•UÂ�vBo f)ûèÜ9s�¢j�6(Ãç0ËÛ�l!ÄJyÀ7yÍ•“¡RJw…ÉAô ÷S�BÅ^h@“âL@)È68Èo*€L\i„øòJjQH‚AFÁ¨\ŽWB©!DMŠ )×OÁ@~»<àO8@âGà˜’a({©ÄM)©iNUØ?0─E…ÅÄ¿Ë!¹¤( cw\q¹ðó‰U—ˆ×£Ôb²i?c„ää´bX׫î::>=Ė˨™>{bZ¦ïBˆ¼tœ:Z_ÐM*‚sz¯í&[ÆîF“Ýâ ë ÅÙ™Ž@IDAT`�P—¥$†¬�‘pYɤ�íi‡fŽX!òÉ '`µ—ÓrA“¥ZKCz؈۸?i.¥ÙèïãÂÈ¡ƒ¤9T';M¢3ñŸN„`W¨« h†±^:”XØ þÆÉXyÙlË%‹iJR.þÂü˜ÑIÓH?+gÕ­À]TP˜ (0“�‰¯æ“j›@VŽz úšÛð’Hpé|ÃÝc·nI¸ ø‘*ã.¿»ï~«¨˜ƒ E\0‘m› ,¸ˆ ´C*š––�J¬ÎR³ -zí2³Äž¯õW"¹ò­—]TþøÇ?hûåoî²­;^™ÒÃ’Ü7^¦ÚC¶yË›‘¦ùq]™¶û[¢7”j§Ì-w;ìÚû¤Õåž hÛwÿ'ž~ý(dëj\oOí¬²Œ¼¶¼rž‹ÅVzÜMvê‹Ù¦ ¿µEÉÛÜ)tµî²¦þ6kN·Ë®ƒlýmìñ-UVTy†-ÁWÞ,ß.9ïãöÔ/¾î¶óþq�,To/ÑÇ’fœl ”昑ôêÕ7ÚÃ÷|ۭƸÒ)Y‡¢Š¦Ño,vÛԓ͘ ¨ù§DÛ•l§Ÿv«Ý�öµo»†zªmK]“å•gE1°Ñ«Ûí0þÏ[ iþ]ÿ÷ƒíP.¢ÿõ?_u?–íT’u¯(Àét,eH÷«««Gï¹�<òÈÝs§ã1N›Ú7¯·+>«LÞL|—¬²> ¶o¡êQõZn¤ßºã¶„ûQ2êq)³ÎŒº†6?FÜr´g®9Ûîý  {ªwÝßÂö‰ë< Õg¿üÂíö­ÈCxË»w¼d÷ QÞzëJ‹Ü‰ÍžùÙO쯣®s w»í>ÍÎ G®±2ÜQmßý½vwMdYÉ[#ð”hPö³¿½Ó¾[©ßw×:ûÂ7ÞëŽÅO,˜‘æ=ö·ŸÙc×üíMöW'ðÄ=Tgÿð÷:·ÒÊ·.�Tµ•úÉy³¢Ç¼c½]ò÷‘þcöŠýôÎç^°í­7¯°o�~©"Tõ¼Ýò©u®Þ[oŸÿÎ�v&1òyªì©ÎŠûÓ»3NüÝ¡-0 ÇBVµybé}*ÉOU¤•Ì+ã«æ}¾ÿ�Ç}£%\ýœ}ðýÏÙÍ_ÿš}ì$ ]h‡}ü–o87Îãn\=ºÞ�Þ¼óS—ƒ©#å©;¿`ïýþ÷Á÷•ìwÎÖ1?Y|¦Ýœu¯ýPþ`£eȶ<ðC{Û¿<]2™‰]š]ñ…¶+FëØ÷Í–;¾`oûŸÈþÝ7Þ­fßÕlî´×ßÛdk»Ñ¹�îøí7íÝw¶³–ÏÞù/SsÂ@,[�@I��M�B­¦¦µWÜ"Èç‚° §¢ò(¡€ÀVuMµk;®žúKÇÅs!É qª”µ¡0ë'ÖZmÎ&ƒ*ª;¨³Tfa`Q8Lœ{£bÆõ’}T@K¢'ñŠAìÀ €1¼9�Òˆk%c XŠ\Gû™{‹sñXrî“üdð°j˜¡Dn®ý¸ŽB£ÈTšï¼‡a,ùÀÇ §"øË%5™ØùR¿¥g Î¥°o’L+%¾PlmmwàËÛÏ‘õ s±Ø”xL@Q*:S©ÕÏÛ¼?q&Ù[ËÛ¼Ï:¯rRÜyª¶CA·è�äH›Ù^')š™æƒÄuXAë;zè(�œ° C™ë›Ú€b¬C#7oßA¢€F2w “ô#ã$#òIRÀ”ˆp�ƒìÇ5s„ØoÁ0lâHç #x¯„Ä hƒC�jÆ¥ \XêdþLÔumͧ¥>ÁPÝÄŒóã>¤ D+I½¦ì;ÃN™°,&æ¡âRä”AÜM;zZ]ª[É:éPƒ@¶*¬á'€¤ ø´¢lK²çP|%$ˆ<ã+á” � ¦»«Å’@g¦Ó&:»¼˜ôÝt.m�s²©�Ë—/?¢æÖÔí!kN\ésDF<&û­kÏZ«Zu&ê¯d[¾˜ÂžûhÖE6/:~ÙºñI ¬¾`ßù*lyY¶[Ö_ócûçîŠ~‡ýn×ßÛÎ?“Ï ,IXÒRõ=û~Õ^ûô­rOšk6|Î~°µÑ,ïÃöö¨+ÀPËŸì_îù2NÜ” ß¶UçþÔ®œCý9+luìÖòh魾Ǿôà÷#ë:(öS;]³Œ9îir�·â^û¶¿÷kÖ©8(Å·_û[�¢ÎŸQÙ>ïF[mWoõÏìóÞ­)Ý.~ëmuIdr€êã‹Óß½ý?ø¡‹�ú¸¢�» 4ÜÖÓ´i {ÏUœ¶xé³ÿgL�ãk îFßßzÿŸmmÔ@#áV[·½ûØKAý¿ýÝÇìªeA{á²!Ê`â}Vé\ÒCB©¶ŽŸtµí}ì£�M :Ÿ[ow<_ Ü‘&Ræ^P9Ÿ¾æA¶ÈwuÿÉî^3ÏÞ1—�þ¢¹6ß·mÔ…ÓÛ~ÿ×4Ü$ÇÚ¾ÿ÷f}çÉü žwBÄ]u¸jý(dÓ6:æÏ~åi»ÿ««°Q¦�q6±cJgq×Ui¶ï}îE÷Nÿ(Ô×¾ö„�úísx|qàÒÝãîÀ¬´·ü¿‹¬ígÏØCO4Ò–:ûØ'ïÆež{O÷]É{òâÇËAðlß2l¿ÿÆdÓwõ÷¯·; VÝ^;ÙRý„í˜i„Üݯ$ñ,ÔÆ�iF1¤_Î_3;êbÚc÷|̓l‘µêÖþÉî:{¶Ý¸0å_)ð치VöØÿ}9Ù´6þöÛu væ¥h’›�¬¸«N>Ξ}a×þäîsã�õÍûyÀê·z}óÀV�Ù‘W"…9IÆ$+L:ÿ”B·öЮûG!›(ÀGÿþa{òö‹�€¹¶æŠbûáÿŽU‡ì³Ÿù­��Ë7©ƒ}�VÒ„ýãuƒýæwkIèôg柇î˯QS�x·ŠU[ŽÆØ&Ò”ùwØjHê+† h )HFè(àÍ@I.¦Šƒ¦gr›ljnµÛ÷ `*ŽeÐÏTÙ€#bžuõ2¯ ë´²2b­1­¶ä¢ŠÓ{¨?ˆ3¨fgçÒ:œI"a� Øö�»aÃ6 Ul¦â�ñ-"ÅÆæv6S¼0âÌ¢4Ëa{¡�|!CIáJ„0€zL±Ò4>TVL�ŸlâŸõs\=Ä;ób…õìéáxñÎC0¤pZ©°ŒV ì©Ú�£Ý0P0Ï©óÄÒ ò NõlëÆe°Ø±nuœÚ—Tz õŒ)ÂV[[ÃçnG_à1 ç€%Ъ»·“vDÚ˜ÈÃ%,PRH ª9˜a€¢€Zà2HŸz¤ðk¬o´SO=ÝfΜ‰ –‚ ŸMÃs.?¿ïʤ*…YEâ©\’ˆFR¤,óÞ»“üGÐÐ+‚lë¨mªO0QE`MðM×§öá�4-üÓ9�jOË'ÓŽ©m¢Gü?LªÛþ�f‚C.BÊTKÅ@{qßzöé­ÕZ.>·r‘Ñ ”[hO÷°#£¢Œa.Œ~:U)U•¤ §“„Ô=ÒOªÜaqd±! Û0ò=þ@þ(_ëD:H?ñß¡•ùiH!¦�! _€z€q.îÁ>êš)Õ®–ûH²02ì¹ÏjÃ;¥ã¨ÉQÕÏEª} àÚ$(gOOJ¼×)àPm âÛÕÞgu€Ã…óÐYSèÜí\À-¶tÙÍÖ?û �Q|‰Ë,H[N~\{ìñïŬÛm¯ì©´ÍæŽÍH:º÷‰Þ´ÛïŠB6}n´'7ï¶'ÏÝ~ñ¼åÑvUÛ¯¼ƒ•¼ýwÛ�üŸ÷®›Gƒ«Šx™ äåæ#Mßw�v¤5OGE›~Ä·oß>zhrµ8ãŒ3F?é›$~ÿáS·i5ö�ÿQ‡qE“­•꺚‰WÖ€úPeëìOé+ìú¿y‡}¥[zz0z�Û²ŒX°ÑE�»£Ð(f•ušömæófÞA»ô_Þkg3†+Ća?®0XdHÆ[ Ä\†»›íåm]Œ°ÇÖñw¥7Éì(»ºúóÚ=·ñ‘w1¾û¯1uK¶lÙl_ýê—§®Â)¯)Õf-£§×½¸„[ZŒ+Ë]ßUÇî±Þbj¾ ¦%LUñϾ؞zh5óŒ±âgÂìqd?“l%IóJÓ–±ñ··ìЯ=ö‡oþ�Ý‹`/u‚•[¶V±Ô·L°Â!³ãé®¶?Õê~2ÖÖVæW®Do å³¢ãIÝ7ÇÝz|5/Û.îi¯ƒgŸéivÃuoµË/Y3)àö�[ÞFL¬¼ºëÖ?õÒøÅ¯ùg©€jkkGÛ!·ÑŠŠŠÑÏSõ&Ê`ÜœæÌr«­Þ WH²)v‰PZ Z)S¨Váœ::{lñÂ@¸ 8Dêk²)¦{"j¸b`QÀ^ÞB¬¿î³ÌïU�â˜%á)÷È*<¿`„Œù}< ´œØ^ÒnáÍ'r¶s×.â¼·ÙŠ':Õ–D?}€6õq¾v.–9@&æd±Áœ®®v`Yª¥¦¤ã×dM¨ÙÖºl*i@º&–+[©æêºjFدJaŒ’‰ë¨âà÷’…UIá Jâ°sW ‚ b¨1FHü‰‡D† .ÁÃ^\Í#mˆ„’­-­–‘•iù´1˜Âxrh©öô‘t!%šÄC> šb×wvâýǶ¥e%F¥á+A•²|¶¶'V£äA=Á@Ü�ÇxWê=©ÍJK‹�Kkcc“ƒZ‚Š‚[` §"àòà—TeÞ{gŒCü#Åšà™‡l(Øæm¯e:�lZ®ý øi^Œ6�:m¯e*Þ¶Ûí”´señÈÀÏavv�åpâü¨Û0Ê�m<õa¬lo’ßG&Ž95$yÁ\+Ì B�ÉÖ èjª¯¥{ªó°}�ŽÊáç/P†yåìÁ@�¢ÑŒGD$%Ïôc©â’i6gn®¥Ñž$‘ƒ"“Ô#Z+ˆgIa®id½@7<@§áâëã.)�Wh%=m„½® ºˆú€rtè €]™K‡RI°ÀE�™YmþÜPñCê qááÛÝXkKϱ®Þ`c1>^¶'ϵåÄäÚ¶êNÚÉÉ9øÓëƒ�¸£ý�\FÕá¼rÑE¹Îç}>Ò×9•¶Œ ôGZš[í/ë×i5ñíÇYÀ�Zì‰�ìí³ÎDİØN. ÛofŒº�öÖ=nu(C'º�´ÔþÄ^HzŸ�{Áí*âHª=Ñzãv9ú1�ëÑ•ÐN&oc-·¬ýN² Þ9ºî¨ c`§méÞwÝF$Ê®D€Œn3á›ÐÛ¤8B1Eq \‰nŸçÅ“`âVË=-v¾îÚêB€6ovSOüí‘Yà¦w~�Ý^ûÍ}?·=5»ZÙ[Î~«{28ÑJ_yÑý¸–—ü¶x¢U^ÓeUUUûÜs/¾øb÷C?U�’KÃÒÅ󦪺cW¿ñVü΢øfŸþÚ ¸MF¡×h«Q¸ÆFa˜–ósçá�Â2M£÷�è6 £ï"/g,É‹ùLöôMê¬M¦ôí~ÉnûÒ+û­*÷×/ÿ÷»í$Í+ÓsL¡Ì~™\jscö— X;PQXŒÑÄKéYVÂøpë�V>Àr¢´Ønû­}î“§Ûis¼xu‰ÄV™a«.ÐßJ{ä;?¶zt¼zm‚ àoîÝwf\²ú,»ýCËFá ·Õ0—A\Jç¶:àž§S㼉`?cHWÆŸžñŸ½Æå×\DÝrã•våeç¸-¨¬`¬œ{”[©~ºÆhëÂó$Rü6ÿÄyéù öXy鉣}°g ft£©ø²r‰Í‹½NkêËŽ³Åì³ag]̧ɿ­Z·�ÌÁZß1Î�Ö:àòcu<“`ì£YÒó­ŒyáôÃK´â„_L¸Í™]f•s=gä}«RLÖéV$$ÚðÀ„@nj󄙢F‡Ãz éã©(®8_óÿ´ì4Ë/ÈÃE3h5{ª€ZJD� h@AÒ¹„sÊ!NZh ÈRŽz«÷È> $(I@71ÌHl0Ì">Y Có{ü×D@p,’@°‰ÐR$À-T�­•ì› iU€wžse…QÈÌ9Ìv½¡âRfÍ!8H î˜âà¤%¤:e—êå œ˜Gñ庻"Ê5 ’\VU¼C€)9ÅJÃȨò Øo«KÆ�™N&r ð ¥�,�øs¡¾NU‰ºŒ¶ÖŸtŶnÝÆ>3Pà)ž^ŽUí&l¶ëÈ®ézËÎVÑ$@Y‹µ³¿.±(F]Ftð#õZ?‚¤Aâ±ÉÐ|}.f\ ,G‰-{a ±tÜ)ü®ëX·mÙN–Ó6\kç¡(+ÅÆ]¨èiÙV�]2 r)É¥^ÇÀ<Àå½N¶ ‰S©¨±#ÙÎs!ÕþtŽûÔOeg­'ð¦Ä ŠÛ&õ�W¼ºÔ·ÖŽ)R(îY"t¥¢MZéQŽ\úéˆÄM“¢,‹Îœ‚D1DfŒ®nÜAQ´è¯­¥ ÅX·Í™U!ŠtSô3IósÀêdA:f0Õ¤ãësˆ¬�it Iui…õtÕXOWŸµîm#F\6±WP’±¼'*•Q¾À ˜�b.€;«H©�xlÝd!ìaP–ÄEÒO‡ïa�·»ªÆê ¾K ÞÙÈ>S ¹º! ð$àV§‹:%)Õ]TSýC½.-°‚#’Á%hjép¾ÓII#tTžÔÖsñÒQä¢6 ‹:™@›WæÏŸo ðûžÊ2wö|»ò’뎸ÊW¶¾mGlÅ *Ð�¡ö’¹�i³�û.^x¶ý¦}–yžMÛ_ù +ŒNLGkÀåòê+¿G(žŒìS¸©18Nå&}¨2è󦻇Z3æ{žt8N3‹†Ä¬x€·‘{フ,DçJr¡iŠ=�H"ò}üß)µ€~ÀV¿ÒN\~Š=÷âSnçŸ{©“ÃOÔ€©¸ßLTïT,Ó¾b³yeÑ¢EVIH…xÁG0J Ÿx‚­ŽB¶áŽ:ûõÝÏÚ£»Ûm÷6ÍùËìÞoŸ‰»&Cósîíª±f`”�%é�“Ç_®·—Îæ#q˾þsûY�ßòFgѸ†Vk‡&Ó‹1ÁDE® w>Vg'Éup˜§xr5µ¶ÅÆr&ñ¡ªgì£_ÙD†Â±;^ˆ`”ÉQ_·–Ú6;ÿo¢78±un°³'âÀeN¼ë˜•xBN|´ÏüÝÆ:~;åÔÙvÆ síøãË­¡½:ˆGWS[‡Ú-LûIÒ€‡JOGt¿P Üå^Kj@ÅÞ×9ˆ“G‡²¼®_¿Õ\#î¬åp¥dŽ%b–Nߑʹ½ šŠ ™@šg;)ÖÔ_ûp"W²�À¡¶‘Â̓j<>¶ -Ȇ”ɳ‡VöÑ ð pÉHeåe·¹…‹ DgóÓ‰ÂÄN«G¢84Ð .v�"ÌYÏâD)°x?,!™"ÓzeM´õsò�ý¥At#Ò?ù‚�NN H¬ŒãOH¶p�÷Øf’¬LŽ&CaeœRì ¼e�¨ Œ·£*¨€¬Î(+³Dfqþ fæÙ‚9óâ·KGéG’ÙϪÌ]RÍ0¹´Ó>Õkªk\'‘ìt€vꢑÆ$LI—º®›Î[Ï0ð0€Âáô¬W¹�2�êbUQ瓚-^ÞŒxÞž«j·YÄDË.9ÏÎ\N™·Ñ§‰ Ð6¾øf\o'F!ÛPÏ6{tý¯ìe’´´ï¶þäëí³ïzׄ. ±õpåv…yâÓ}ŠÏ¿ØÎXz1RºÉ4x—E„Ó¬�Sí³òГ-WBdä_w˜„,Ç  ãwûfúüj€ÛëÍ.±O|õã¿çNÍœ‡ë»Çuîÿò¯É.9vCYvî¼QÈÔ论ÃÚøIVâ�¹§Ì5»ï…ÑF(ÑÂ{Ï蚨-Ë׋›Ê�ÕÆ|ýÉ/ßj—ó­{óc$82¥AÈs]¤~Å“# Í(LÆýekã�¦±�+{êsðªÇþ÷“wØŽZî” KéEvN™Ï¶F“ h‹%מjóGáX±ï.½íZû$RºáúçíÜÛÖÙ“OlsZç� SbÆxyØq_Ðvè1ŽÏ—¬‹ÎŠëŸ¶÷}ýÙÑ]Ëî§yAAG—Ƽ9Hõu­Bg3ê¿ 8�[·�m©7 ÚxÀº›ÎûzZ¼‹·Ÿ†pÇŸí¡m×Ú •tÜ”%öÅÿ¸ØÎýØnpýç>a§G}‡v=j_æ²Öåî•ÌœÉ ×¼ã´Qõ›·Î>¯ž˜nŸ…@‹Á<%ò]2¶—Èp+çÜ`O~a ½´Ó~pó'ì›\ÆÓ³p”ét<Ûª€7‹¹ï¤WØ…•(Ú¶ŽYî”\e ¢—÷ØÒ××»7p´ñ²¨ËúEEEvòÉ'ÅùA� ©‡ðOMmÍ€¥ ‰š E•n3gÍ´Ý»vXKcƒUÌ.çÞÉ¢YP0˹.!–Xj#Vnâ›@Ô=RI:�J™d1õñ[Q@ ÖÑü¸…uõ½’*$ÔH0�SP̵tm¸¦">ùá‰ÎET÷v?™5•РÂvÒDÊ2¹ØÍ(Â…•¸m´½¯—,™¸h¦¡¼“âmdåæ™“Çï1žR‘)Š”Y‚o�@¢.b¦ùi»b´%Â@RHÆ�è’r®]FÒ‹¨¨‹ ¥{É >Ì•}ê©+mîÜJ{eÓ&{þùçߘ9«•sV¶‘laá“’$'§:·Ú|çîÙÏ>H$ÀòD’ˆƒ(S©ÎAh€[pŸ9³ó��(ép�­Ç´¤XÀ/ÃVœ¸ÂJf–¹ä ›7o±Ý¨è$êѱ(\WKK¯âCÿŸ½÷�ë,⦅ݙ��™í½k‹š%Y²e[– 6cÓ ¡†v!—š�BÂJî !äR.äÞ@ ¦Z>‚ƒm¶1¸ËjV/«í½·Ù©ßïÿÎŽ4ª–╵’Ïk�fæÔ÷<ç=³s~óžÿ€‰R ŠëPê3<ˆ)höt +{Àe ]¸ œiœªi;š¯ôÛêßešTnZNÐMǕنæëu¼e–?ñyQo S‰yÌ pÜä —èSXãœD¢GŽôø©¥ EAr¡é7ðÍÇ€•[éŒ;9ºÉ�•l0 üšŸMéTN®ª |‹DIǤ !ÛR=‹Ó¹T@P`o &+ÞINü8”U�384PFÇ&aö²û�Pÿg øEtmƒ•A3‹ rX\ˆD´¤Ü®X�;Uˆˆ*/à˧?3ÊÉ>¸€/¹A^ˆ�Q†¬²PïÃ$%Uê·\úüÄ�ÙöíÛìþûîµ�;ÆŽ~RÚ'ì NXK­)Ç{xxøh·T#HdÙkÏÍlݵ-�ƒ ®¶;6´º Ìvýú´…½+ÊëŽÞØþæ?Þo÷¾ÏzÙX³nåõG![ææ÷ø¨¦S5Gfê#)eµâØ�±–­½ü÷íŽM¯¶çoz½-{š›Ãã·ýÌßõ#ov-Øf ŽïW݆ÿf uÔŸù޼-œ1àö‰?ÿŒ½ÿwÿÔ–5¶œqù¥>S¿œI:Ÿi·ÜrËqä3Ó½çÿBŽÖQãóguéÑ \{ÛÍö?_s œEç(a�öhOú†²ð²í‹ïhsË Ê|äS¯uê±£àÅ¡{÷…J7ÿî«ì-+Òs¥ÐzÝï½ÎA6M™<ök~z‰gþ¯Tnÿ¹u4½¡Šµö�¬9ºÑœkì«dS£n,7ö¿ú%iÉî}ÈÞøñWØ+›Òê·•ÄáÓ¯itsÎôÏÀ0_âh¾ÚuÚ,P Þ+6«ë”td¸_vœù|Ïã þÓ7Ö?ºB¹sõÔ:¹ájâþ*ç"{â6î;&SÉHP*ì©ÚÏïÙ¿pÌ{퟼Ò^² ôÑùù½�¿òèv·ß»̱t[¸ýŸÏý…Ýñ’›]©’¥ÛÛg¯g÷¹_U!V]óZ{ì»`ï¸þØ5žÓ´Â>ñ?m¾5s�ÏØw?ó#×AÕË¢Ú^ö6{Çêô ÚüªÿfŸ|å²SÄQ•/äRO¹Ð expïcƒé©•×ÙO?yë±%6¾ÈþíÏÙÔ¦­;ëG€c ]ÀW\/G/Ë‚t‘Ž¥t7ÓN]² ÄÐ~î¸ãŽã Åbï;Å=zJ?Ôch¨TG©¬d>87;…²ki�3ìßo…¸pÎñ7?#Ã�ºgºß�'"|€\¨^<@ nÐÓ{ÄFÇYÜ�)@Úœs¨ÒÃÔËCåþˆ9È Q°-E öƉ“qzPŸË¬`ÕÚSOívPMå¦féË`OΛ� MVWݤŠãÌYéR<}‰¢ˆ‘±rئjžI½¶jå –¯ƒ§ŒÐ_R8'Ç™‡ù$ê/¥] �BÈ´ ñp)³µÔô+¯,EyV(Š®zí©=»m”TÈBDBLWfàðÐ&£&&`7JÝ¿¿ƒKJ) ïz{ºmL'3qÆ"¦ý*“¯²€H¡Œ.erq7�R÷>‡ïbÁ‚b&ùmxlÊÁ=_>×,ówÓ±‡®®{üñGP±ýÆ{ìQ^?l{÷îrf�?þ¨ýç/î�¥l¡&Þëíí"�—]¤êêø£¤ò¦¨�'XvbÓôÌC÷d™úkzÖ#Ì4f³�šÀ›zjbT™åõ¬vª}º ÿd>G³§ý—_ç$m¹rj�À�Æ€hY�ž|1àEƒççåÔ¥å½0§ÜeÅ Éá• Ç07!è°NŒrˆkk©¡†Œ2AJ¨œ;dˆAåf"Îõóa˜�$À Gó!¥A'�äè©Gm4¨²�¿ªZV޼‚`¡êë´Ç{’óì·â7WÙu7\e›‘\Í,Ê·„ õõÛü(²Lèo)r ¥š6ú8ꜜCDVG†‡œk†¤ŽG·;Éã$ƒPʰŽG8ÖDr–´Ù›ÅÅ$'> ˆ;ÿ¤@dúéšä�ëÖ­s}Í.Æ­‹f1‹q?]?¼ùK/Ñþ·Žè-†yÞѶg÷ÿwôõ‰/$‘δÊêuTøÜíÞ6·ý©ý÷ëVdfqý/¼dñôG_êò˜Øa»wüÆf×½(ç·^övà;ÿ¯ífù|\?ß²) û,²Í¶#ÒÈêÖÑmŸ¯öm·ù È—ÑÁ¼äÕÿ`#?þ¨íà�eÇöÞÍkÏ×n½íž&à–�RzšEŸµÉú²q6Ÿ¹úåQ©¡úcžý™+‡ªë¯¿þYëïE¹£,�ótý?´³Ó¦ßÐè”k×¼íÍv÷oMâ£TÌ/ÎÙk†ìm_|‡|ä«öÅ/?a/ú›L·ëë^üR»ÿÅÙË-¼^øìJζÿsO¯}âÅÜÈkìÝŸ|Ÿ½ž‚ÁVP~Ô¼À"]öÙ/vžb#Ç&�ÕmÓѺ�Ýt[½}õk½v×g°W𣃠šnx¡ÝÕfëã3±®•ÇBÛõ£ûín½>øˆ}ï©ËHu•¤É>ø÷ï±f:Ísv¿ž¸g» ¿òvœIvó;ßl?}Õ° ÍçZ]}ùÐ3kÿå“î˜Üîë%FêתW¼Úî¿­Ë>þ;?9Ní—½K!ì>2gWHqW±Ê>ÿÍ&æ8*O°-¼ìf»û>{ÉǶÙÆœc¨ëíãß{Ÿí¿çÇöé�ì­òƒìÁ-óúô1—4Ù‡¿önû}h#ßLùþ·ðWgd·}ñ?–¬Œè¸Ê·ã&>—ßlû.žvç»7; lÜ`øé¿·?Œ«¬ —d:o{!B3v×'?æÔlnB ¨¾Ò6^ÁÍ“¿ÞþðŸÿ¯ý.c#dО¦=²kÀÞIýe µÙß>ø{ûO>k}˜ӪÙ×�Þë/¾c¯ºï¶šM/{þ›lÇÏ_ž¾N+Ó7nZæ©oÝ~H®—î%N\_óŸ�vâ~sr3KÕïÕ¯ÿCÛqÇ~ûðí·¨Çsâ>Ïå8SÛ¾gßÙ¾ÙÞ¡sX¸Ê>üÏ_´ŸË.²e3ÀíBu[) ã8E>]“jMªiÕÛÛ{tñ«®ºÊšššŽ¾?/R©ôÊ\@–2ÎJ1�‰Æ¦¬±ºÆV´.ãž}ˆ¦òO”°âG i޳8½Î�M×@÷\jÇËÝÓD+DŒÓ‹".—/ ®M�ÝÏÇõ ö!ö‰P» åé•2+�hZ)¦Ä4Qbžù¢¤—TX.n§í‡:(!Ud¥”ÏB�åö‘ì À(¢9a‘:~ݵ×Ú|a„,½”�M Æê/VÀGÍ7>›âq>g€TúQ‹ý Øå÷ŠŠa< zfiµ¢$QX†�,¿9„L Z„?{1j¤Mò=U*¸"L) ÆÓõÝ ¨i§Z÷ÕÕÔŸ# UõÈjjêœB 㻪Rqã¤wªž°b›GßužUçNŸ]‚�rÍË£Ë .–•éßàÐ}õ[m]õíTV,ÏÆa!ųN ¨}Ò%;tø�S”)õWê¸çfžþoÝþ �ãĘ¡†ó)ÁUYY¥55.³}ÈÕ—·á_×@æÙ¿L D¡rØOº~Z²eàXªif^gæ ¦eZ¶z-³\fžž5íTÓ³—á4,^ øb]¬P¶)Œ$WgMP¯¼d|‰[)b]=† åÅ.Ç·µ¥ س†�A1=žÏŦö™ ÚÛ»¨uÖmQ¶éòh Þ,’ÉHh!ò¾ ʲ ˆP¬IØq¤Ý~ùËû�(ºâ‡R›%©åÄË墼¢ÒòXV*»ÂÒrThÅ�ÜI»çþìß~úS,¶¿mÿyÏ}öÀ/ï·};÷ÚSOn³Ft.f{wï…NÏ[S[‹­ß°žŠ;ÇÐ�ü‚n¥H —ÕÛóoºÉÙÒ664ØÍ7?�AYd7Þp‹ÝñÒ×Û5|!^½ò2Û°~Ãâÿ4[R®ñÓ=tA©©F�ê³ešŠqg¸Ìtïù¹�”í&}ô˜ÂѤ õPè4m¤g‡-XغçÆþêÍß´�ýÎÏì÷n½å¨š�oEvÇ[`·ënvz� ¥ÅÖ¼é/íS¿ó[5s§Ýu`aŸÁµö;oÿwû‹7}ßþê5o<š¬ºë7wÚ¤rüϱ�þkôYlhü‹ösRi]£_oyÓìSïþ™ý Ç–þ-õ,¶á-²èÐ9Õp“­¢¬bÑ·.Ôߟ§û¼Õ|9µ#GŽð·1­¢Ò{ýâ›ùc¯÷Ï™Æïf®-@¬ô›tù‚“*,ð“{âôâúfvª¶°�ä�­öWß=ttA §!Ûœýê{÷Ú/lÜ=Ûú«ËLË¿æ�fÛ©£šÝö‹‡n²>Døê�íc?hŸú÷]'ØÖÄíðÿ¶}ÇDâY+{/ÿ«Ð}ùÙ|·Ô�*Ó”nxÛm·eÞž·g‰dÒ�«ª®vEüs¨Ç& ¨¦ïVR´ £ž'ÃÎ(¥Z¦Ed¢Íó=lE—àLŒ¿U2:()¥FÙlr#-‚YÈ@œ¡²˜Fm±BÄ2ù=?;�žÖQ„@dÙ‰wôRûlhxÄ©»FI™T¦›Re0Ð?ˆøˆýåÀDTx¿ºR™cI ) (×j«ª]#(å˜8ð™6Jšê,Æ‹‚?Š©ØŠTfJIÕwÏ0𰨨˜Ï xàMß�åŽZMª«ÄF3¨Ï C0“b@™œB‹a(`£R^åŠ:A:©JlI”ÔÖÖê²+º»»� ©~Ö�Ä‚©ús›€å4ÔÕR?­Á™Y–â(Jø¨U?ïjÔEDU`B±áŠ VS[äDíGÚg1µõõTŸMjÂn¸Án¹å…öÂ[Ÿo¯}ío;áO)±¿F"Už¸Ñº5ëìšk6ÙÚµëQàUñݹӶïØe{öî£&Þ<ì"âÆÜÞ½{lß¾ƒdF¢pã?© 5vŸ§bçk`f}e|æ»ÈCÍ &A.²I¹�¦üIŠúd€K=ÌÊ+j8 1òše†0ɉl‚šVâÇ/£ù~ëëîµ¾�θSõëÀÙk€ ·ÝÖb å”ÍPúflÖûå{4ò¶òµOÇ~ÔTnÍ(#üª½ˆÜ.ÎçÏ3=:þYpNDZáú•vMm�›žˆõdÅðçÛvÙõÕ~ëâó_põàN{ó[öØú•qgn1i;O/ú|ÿÚßÏ~ÔXo¯¸¶Æ óP aØÕ±}¿ýä©ÌOB龜n¼iî�»þã¤m§×òþ½ÐHm}ÐÞô[ZÛõWÙ+¯]iåüê%µD`~žxìqûáÃýtñäï,Jƒü³·~ÀþíVŒv*óm":m‡ßb�vkÙož|XÛ~f/}Á}víÕÌ‹Ú�íý6šºÛ6|/³¨Öë·w½â]™ Çž'wÚ;_÷û¶ž}ݺºc·7û]vß¿í´ö¬ Õ§÷žjýc[:å«wþ/Ûpç)g�râÎ;?Ÿµ|ºß§Úïg?ôçvçªe¶*Lúð5æ6·Ç£c=1V'÷ëX÷�?FúŒ’å劭÷Wß±?Õom«j�ryê@Ÿµç\g¿øÕóV>öCÖ±­y¯ÎgúúúœÒ)³�½èENµ”y¾žU»K�¯‚.ES"Õ7£@÷üã®X¿Œ‚FÉšuð© 4ôRúc‚¿-=d±�QÓ�DB»jãzëïíÊM8wPÊ©+PO-§æç>W÷Mi‹Ô"�’ñ|–²D=c¤P Ú*ÊOMMSÏ À§ÔL‚e`ì+�iŒ:¡åUÎ3 ¼K \“3ªÀ–E(Xls(êô9–d]�5Á¹´z+`Uü}W?”ªZqÐ>ÇJa`é­â‚srN Á&JQÝa3IZ,Ùz@6�·2x‡ú#…š>.gÉê;xè�ûÑBûSýû$ÛWé/9¥|döÉøAëóýXYf¿Œ^ œ“h%û¨Tm¸þAÜ\ÇÈöãflßÞݶvÍ*kÖéx}¨á#ÇÆZìÉm[p|Ík_C ·^k†É•t ÇÓ'·nãy ƒ‰bæéó=—ÔàŸ?2�{uð¢ßv»… ¶cÇN\E+Ï(ÎnÙ¯5vÎGó/æFCÔZlËçûW*›#»ò™ÕÊ*ÈÝ­®s’îýûÛ­ j£Õ7S]µÜ\9‡&‘8’ ´’B-EP‹ó^”6„ì2sÏ,ûØ\RA]~´$“�j©Ý¢H5�ØŽ#‡] íðP5ÚžÀ5ˆ›H.²É¬_‹éD(Ýó–[nyÚ­éƒpß¾}G—Sú’.25Q©Ù¼ö‹@äÛö7_þöÂAëËWº¥F>kýòg3o�=§ŽØ×¿ñÒcï^uìþˆýÅþµvUÛ•æÃvn¢Çö÷>”V í¾Ï¶Ômà†pÜúGv±FŽ=xÿÛíñ'ÖZ9ŸFóó�62—Þ÷#þž=òøF»¢¾Ñ¥SDç»m_ÏVWï-³Ó‘ý±?=öÃYf²{Þÿ§'Ì£¿ß>¾¿ç²~*¶|Ž�·É>ñDXZ\¿bÓíÛKìÃï~ÁÂþ�¿�;®SÞ›K.---gõ™«z%Ù?fd œOËûK.àÿ…JÎŒÚ÷ïâ î M æÑ'ÓJ5þ‚Ûûß÷j»NLú�½ç]wc�^!·r¥ý÷�‚:Ì:Ò•¥‚JÏO’Îñ“»v¦ß\€÷o9lû·œ~ǵW^k×r·Àö¯Ý>p_¦Úë>°™”Pµ9ÛòØ™«•ñ Íîùùž…5Ïü4Ñ5j;μÈIsw`²pªu&ºíîÌMþÂZ:w;œ|NOÚ(&ø÷›<¼véFàðÃOÚgyœk{ô�f©N�}ï9ÕvR©ˆ=º­óT³ÎjÚNöµóÙ‹žyÙK^¨×cûI³=ÍÎ/äñ´Þø*ûŸïßàz¶íËao»S7Üj9öŽ¿ù­…ì‡{ôW™éé¹Þ¿g��7žÕ�*—!µ›šê[eÿ€Ø„ºúê«Ï~§Ï`I¥ŒªÅIÿÌ=Ô±ïÁ~êÆ“ŠYSSå\3U^BÕy¯P©¼•ê/VTÕÎJ퉭ORr*è„9¹8ˆ†KpÍpŠ)Á¨D@:ÖÊò ÇT²JµÍ¤OªtÔÌ4³Ó”¯*F©æü,ʶa²õPŸ‘žA]UEº©Ôo£=ý, vÑÓßc-MÍÎÌ �´9ÔgªU/•]!¡…µ “¤È“³¨ &u¿îg?á´ûhDYi�F¸åÊ)îOýøbÔf¾êÏ‘+Ò$™y2WѧËv¡ZS½{¹  Ÿà¢Ô`³<®Š‹ �yCZ SÙ± ê¹”L¶#ÅØ߃t|Rä•Pß¾ŒiI ÈÅI]Ué/e/Ö½"ª£Çs)µ*±%Ó?4pß§m¶4·À&à8çˆSÎØ°N5ñTŸ¹¹¹à”fjçÚ2\`ëjx\µjåBɰ�†ÛJ¸m¹7Gÿ9¿ŸÃ‹ Úâó ¬²Êåäïæ`•­â€A ”mLU¨¼*,ßwIL¢KøI~ýTþ±N>çù¡Lˆ¬«„c.�·Y¬`5�Ôf˧è_’úpR;1n%t‚p<¬Ù¡è6 ¸œjÏ+¯Þh�õMΨ¡Aj5 ®"•3‰Â¬b*ZgO'ŽÐÑIòƒ¡³5�œ4 _ß`¿õ‘;­ ºiêŽ�; %\8¨Ò?$wÖ ”ü2ÀÛÛ'k[.n~îë?€kXŽ…„3YNbGÏ÷3|¡¢}/xÁ žv+ú`Ì€6 RÏáiCæ-pHÅwÛ–ý»³ÖÈ|�¡$í{hazfª‡éÝvÊÛ ÈVÛ~ød%GÖ†Ÿµ—Eõo±wÝz•ÛßþþûçýGöMêâMo\p*›¶=š~ìØòž.Ñ´¶¶žÕ—Q~´é—V}AÉ´¾ð…î—¼Ì{ïùÙ�€ Ò};GíºëËÉn_nÿô•7Ø#OR²¢¸Ú®º²Þ©%¤d¹ïG{ŸýÎ=Ã=öÿç~ë´Õ±�+ÞöûƵ‡l×`H«­ªMM`ÒôÕ`Ö3Ü­·º/^ÎKÚ¿ÿ¨õÚêÙú•ïþ¸ýô†í¶s n+Ö^n«kÓ©ñö‡ìs§ù!ö¼têÛ¨@ÛÙ4ýˆ˜mqd¾ÛH-¤rφjHýôRS&Ù°kh#ˆ&(F§£Î\Ð*�Çý~c£uvtºzmr-¤­_¥ �öYNJ¥ê�åR«¤¨ 8„ (ÑÝÛm[P¾®Y³ÚV,oaúðk†«’çrp €Y¬[Múg HÝw8„¶%PTŒÊL&ó°�"R(s ¢H›³:–ßùÔ6« µœn;æ¡ï—*凸ü¤¸²TNé¨*…%Òi°S|§$>·9Tõ3(Í‚ô[uÎÜr` R�…¨…�MÄ©�æ8J &c†É‰)—;źrRU)¬º†F@Y!F 8”²LìFUÏbˆ ”E¨}– 宪r^%¤£Ž%&¬!SKk›‹AGw—ƒf’òÄ�gJí¯Á4áæ›oÆ‘´Ù9˜2 æãwß‘Ý|ê°n\ù¯Ë©!?¢´VgEyµmÜx&“QØ�@®–_³f�Ð1à‰åÀ 4UKN_µ§¦&\ÌÔ_¹¨Š;)QcSpÑ­È¿ç£-*h ÃÂÚTÜOs ¯ÃjÊ­UùT|.ê6?0M· 0+j°áÞÀ& ü45À�Ï¡:S´t’åZªÜa™8‘q$“yø¬£Ü_ =¢Èó_‚sólWƒk€·X8æh¯Œ ìªë$a,°\Éîfã r. zúº1ò€×¢ÊË!×wOº¯(çº1vP¿Ùd5IݸD7ˆtSyÞº¸CÎiT9p�B|rð�RO2Ë0©¬"µá‚yß3Põ)+�ƒi^úC�•.hË|(ªRÄÝtÓM´?Þν,ÅLþ• Úªèܪçÿoû£åOØ¡ þX×m´ærÉ`ø#2x¿=8­O8¯y8}²?s%ÿ–"¸^»ðøùçî±—½ÖnnàËLa¥]wsZë•éÙ®ÿûÌ.}÷¸¸Z2uØ>J­³/¼u-æ>kºl�¬c˜h·¿þ“ÓéV²–ó^zð"àE`)D ù¨}èËì+˜a„¸ïZ¶îjYÛeñ¶ïeMð^>Èþn³iÓ&Òý„BŸ�& ¢&qÍôÔŒSi••†Q?M»{uMO €M5µ*ô_T;l¸@IDAT†X§\Àý=‚ #@·qÒK˜.e–eãˆm$Üi@„£TJ*cÙÚuk�jRqÅmÝÚµDœë§îû'�Aq‚,ª»:11¦Èà]áî¯ì;Ov¤³*msõZ[K+Ù}Ôs›†~ÈîQY|dðÁFT‹ÍìœK¥Të^µæóQ›aB@I¥žJÝ¥Œ´å· *ª¨à‡ÿ\€Z Ó4tž$�Ui´Úv’‰KäPKâ ÙÙY—¨:gÊ",( Öf-Ny-ÕR J¹F_¢˜Uòºx¥Úp‚kóÔ¾«,/wй Ö(¥+ºP�çä…H·…Á°ÞêU«Ù·X Ч¸®Y»Îš—5Âs|ˆ‰å~­”«?*9îq1Ö±‹µüúÁ‡ÜòW_}�«ù·‚4^mKŠ73)ôxåþ“Ö+†_€x‘àä¶íÛljZ†2°’s�1嬎7æjî ò©)ŽNüÅsÀ¹ÉÏèŸEmIìqUPÖ¸£Ãs€¤ –²•ˆäˆ"™PæIj©”B‚]‹;Vf)Iù8H_¥Ž:Ÿaø&uÙõ7nædSd�!‰cBv±œ¼|N„ËUÆâ=‘¢Ð!ƒ[E «*Ëm{_¥�ŽN �CF*œìoåvz³„ƒí‡]?Då"2ÆIL2€ƒÀ±Y¤�l�þ³.–<�D˜˜ä�>êÃår|.>†C\¸³],æ"™t}€¢c\x’¯Ê­C…üb(n^’HŠóqbôC¾ K­½ä%/aàŠr{Í‹€�ã#p�}í�«íÏ¿‰zu¸ç4^Ç#k‰™vçOž¾ÞRÖÞK/çÝòÞ ñÙG@˜ýà—mýõkìå››¬®Èネ wõÛ}÷ì<©ÙÙoùÂ/yà§÷ÙËîÛnozÕe¶¾©ÔByhøHåØ¿õ€}õ�Å/cqá�Øë�/—rd†±ùÇ÷Ø{ß~³]ÑVeἄÍRëiÏc�ÚçþíÀ¥|èKþØ H¼õVWÕôYëkò P ÌŒá^YQDúå0÷ò`Œ KÄ)³Ê�C2T,+©¶€ $¯“¬S]Ý@v΢(»Š‹s¬°( <Rq¿/0¦Ç8Ç©ž‚4£”ŠŠ‘©§û} jæÈšÓûÂ=†X5…ùûûûÜ~ɧêrPH*µâŠ7ú•”1ðjÍekœ³¦`šøÃÈ0§˜3¤�¤>§È?è ¦¦ ˆ"›:®`KÏrõÃ*ÈÀ“¨IÙ}ã(Âê«Ê�vþ×Ñ\ W ÇKíR€]=ʰÉIêT>ìÄJ¹9”Ã*p.ªËš—‘mˆ‰ ÁBŒ#$„æý´åRQCÇ-6#CÕ�CÐ1Õ7,³+®Ü@¬ú�Z(å€p2¸TÜÄit¼’ŸEé¤à–xŽ€—?JñŒ)¦QÄJÄÈWå³�d#–—V¡b#À> ®©.�š6;€ÓH©¦ulW¢-ÁÃ#”ïÚµk‡µ¶´±M½o§æ[ ¿BöwpMê95ÁµÅ6NXTЗv)n:ÙiYf n1¬Yý€³ÇQ�„3TR‹",—ÂÄIGwïÞ ½ cÓZ磈b!´U+"/XòEÙÑæ¢SZ©œB .ˆÝ½Œô;ã�fœK{;»mûîCÎáªYe;�¡(ª¨k[�Șt':‡�( f"e`3!Á”ý€±k¬~U×MïU«4ÅI 1Àò°éM0\P¢¥~.¼b7($G”‘ƒ³®eyå ûù ¬8=�G±âÜ °‡<Ï—¥ÔD‡�ür)uÊë‹�%�‘ýÿÃ>vx­]wùí¶¼¢Žô÷)ëÃÖÙù€=ر4R\—P¸¼®W�~É÷í·ßîRúžÍfD"÷„0SœD­%AŒþ xRHõb¥6’>ª4Îú–•V ‘Î)E[1J6Á¹ýû÷9P�¨âA¥�΢"“‰U(„Ó(™k#8e®©^šèW’ì¶êÁ…|A—æXZFyîÿÇÆzûÌöî ­¼ª ³–<“91ú¶šº:››°±IœJ^ æ hU¢¾Ÿq pf�\��qˆ˜@jóQÚq!ͱ�™èŒT¤¤Âæ»¶X'ò™nGÇâ <Ó(zë?" úsoãñ\8XïÏ[ž-ËûÅ>ý á‡+µ_l¼æEÀ‹À¹E@YÙM7…K±9»¬ŽIe ›¯yð"pîÐõ“ÝN¼¾²ç]̯›››íÊ+¯|ÖAJ)×àEaê°©>™œ>[[›€JÔr‡¥¨É®’U]]Ü‹a‚P�ð¥À¥9æaœ¨4ɺú+-Â\1LqI¡õö"´$UUÕZ{ûa²é4kT2JÙkrÉž ½QðF`(�ÏH?j6ÕrOÂÚÚÚØšü°ý8F ®Þ<¡<ÊbIU%8&C.¥K‰t´.¬!J¶ž²éÑB!àÇ4(d’‰–Ôd‹JŸL<â Œ3ç°œ=só­V!¡‘j”ÍNŒÁ&"@½zK�BÛÕÓa‡Û©¯‡ «Òe•†eÙw‚_F v�’¶IÇ-á�Àœ–ó1½VÀ ð^­¨ÕÑ3h;w>…¢°ÂõQ%À*+ÊmÓ¦k¬žýûÉí”qƒ š2 çqƒ•“©€W0Hy.X�”j:§côOw¤’”j®««ÓÁ<© Ä.B è4|¨·§ÛA¹1Î… 9†‡FP#ŽØàð ¢'Ÿã4Jïíêì$mµÙ‰¤ÊË*x©D–Ô¸—iƒb­ýêy1Ú¢‚6ÉË~QLRÉÐIuÕvàP§í;xÈ6_{=9ÃQ@†€¬©©1‚Œ©ƒªyd²Âƒ‡»ôч‘þ*—¹œâòÌr ÎbÈ( 9ùµµõ¶jÕeîìÞ!Ÿ8BЦùC¤‰¬0À,£(àŒSA+e ÈêVƒWŸw.ª|ŠäQ_)Œ»)žaû³¤·‚Ï,1å‚ 2øóE°•3Ì@J)M•èëXëD�u!HÝ›Cõ¦ |ÇCäyž Hµå¢†´3‡´TfˆÜ*¿{©´o¼§ F^d-� 1»éÃ&Mü³§z¯½x¸X" k8»�x�gÏ»˜_+­B_.¶V�ónOo:Õ0¡2 ¡’‹í¼þz¸ �óZv«à‡æ¥Øª«U‘ôXS¿(¼æEÀ‹À¹GàÄëþÄëëÜ·¸ôÖ�2éå/ùéXF…$ÁL jÃåë�D†‚¬Ê†I_œ²•R®*ÂÁ³ºÎ¦ç`}ƒdΕ¹Zî|¯A{£âúsÀ?�X�ò™Gê%ª-�R©°¦©A_XXå`S Ð#ÓFiwÁr’Rr64b¸¨rWGŽt «EUW€ùà Û‡/Äm¼’í‡�f…®~Y.ÛŸ£öÙÄø,J²–/>¨-_MH0o‚ï�E®†[„’XQÒñ¤ê’àHÇ?G_òØ7!°Á‘AØEØA0pr\h³˜7êøf©‰/aQ)°l†ºh–šuÛ•’Mé¨å€±BÔzªçÌ8«2`Pzê$ jˆx•0/ˆ  GàXÀqf&¸Ã$�ÖÔ*/­^b4 c�AÅÁCœ°—tÚá!RZ[\�4)×ä²*Å�”opŠ5ìÍ=¤,”"O”G:ÙÐHà0îRƒåô*u\ŒF5ÞÜtÒ[uNúz{í©�)[¾b9uõ4.ü˜#Œ;~43�ÎNÔùëgœ4qÎ2iÈ™�üLØÂ¢‚6Q]ÑÙ|œ1®Ú„;RL ö G‘þ9‚”oš€Ÿ¢Óöè–Ç’ÍC"Ó–°¢®Qà•�Á­üêø0îLTÞ­œ/f¡°JµQÊMCC“ué¶;¶2pGQ¿áP!p–Ë…ì€[*Ü—íE(B) ©dšóº ¸€7åB –ÍFTÐ0‚-åH±¸òƒõÁ!.7ÕY.ÔiÔk–ƒ$r�è}¹p \£q–W?E{# Fçj¡+—ÿ}À¸i¶N`0ˆ)ÒÆ¥ÐtA\¬¥Pøì6�ÁE¨ðxø–=ß{íEÀ‹ÀÒŽ€®áìvâ5ž=ïb}­ÁÏ–åýbÇhÝšåGAÛüìÎV5üMçœ×¼x8«èºÉ´úº*nþH=Z‚M7>˸éèDý¡67=ì�¶%xž¼.]Ðõ“iº®t}]jíºë®sj£ q\JTS:e œ ¯³þ�.;t ‹[ð¸é$SJ3$ TV»ÜžØò$&…QàUІœº¬©‘"ýÜFNc¨X�D�†´&ö‘V:nÝ(¥d¿Éܱ¦ºÒ0ÕF+Â@\@ÜAEÿggæ‹`TP„ûçʶ®ZÿШ+�•,¶*j¬UV&Éø#³¯×A8õ=Û4. 3ˆsrR~ú$î0iUˆ‹*QÕI©×?0âJr‰�(3oœ´S:Êù´ÃǪšJ2éx(–a^�GgƇ©c¢ègMe5|f˜~M:Æšpª/ ¤ ÈæB &6RN]9ÕɃäÐ7?a–à)ØuèˆET >268äRJ[`4e¸ŠÊ)´§çìeÎâ#éúvóôa÷žÝô³SŠÜ[á1A`æªrؤʘ!ÅÐ�´V™H õ Ö›°öŽ#¦²dMËšP»�ºúø:§ee¥Nô$5¢Jg§n¨DXwW�8ØÎ¹NÙÕW]‹¢­•ó5kQÀäÊ•+Ýþ¥*TT“2QãIüG",AC)ܤ"TËþÎ+¦“ýÞ-�õÏâ‚6ZcšA‚}ùŽpööôّ΀´w;…£i«@wuMÐiÀÏ€ ‚å1HTœO¹ÉÊ?.†¦3hdf�æ¢j«áå$�åöøc[ì �c€IQ–�ü3Å$¡é¦ l…¥…ôS~1—Ð6W�d™J?uE¤¹28   ûEè—œ(¦§0eÈ¡¶ë‰bçIªÆàTNõ Åäù¦m>¦‹ž+ÏZƒ4ʳî9D?ötû‘ƒ4ÝD¸ÉÓæM€}jþRh/}éKÝ Z }9×>HöYTTâd±Zw|� òï5/^.ÎèÎ4]ÛºÆ/¥¦?ȯxÅ+Üð‹ñ¸n¾ñj»÷éÄé$_†æ&{-\Òp1Š×g/Ïz¢(¢³£G÷«ëi)·Ûo¿Í¾òÏ_u]Œ¬‡Uæei*ð–r½¾=·#0?7NŠÛ1À®ëêRk‚·ÜrË;,ßÑ´v²Æ¸!� |‰E0ýáQMñýÃ{­­µÅ�*?Ê.@€cb‚1E°† b¡1ÊVICq&è$ؤúj%å%ÖÐØ€‘P¾ƒbqÒ'“ÓNU–®† å¹,é³=»÷ ’•£¦ZZæ2ä l7aýÔ-ÓwÂr §€Cr=j‰�(5rÿ¾ì+Lÿ.³fP 'ª¦šK©ä ¤$Ëe)ú™ÊM¸”L¬R)uE&uҔŧL/A@žœ€É0T8ÁO�T̹“èÀA2\� &áX*÷U©Õ|>Ì'Y?Â1�!l’ø¨ª²ÌÆÉDB¦us%&’á%ƒ5Mu¶ú²å(ód PÄ£Ø)ÏZH+2,DÈ<¬ ¦A�êñW×T°®à€‘cŒ¢ öûSÎÌA Ni·y¸ÔŠH .TJmXÇF¤ó(—UîÊIY^C®Káå| ’mÚ´Á^÷ú×[3ΣZ��âT “‘ê-�•È1¡~̨ÙÙÔ4¤rÔs6T€Ó2™åܧøgQAÛö=»lïáÝØÛNÑqŠß®�nËb`8švÚäL'!¯*œ'WŽyÇòÌ-.ÆB–�_޹€ÀU9'@E‡ÇP¡åYMãrki[î¶{Ï=÷9+‚\@À%ƒLú)vÈÀŒ‘-ó…”#^5öÃQtçÉ,ýÔUSþoú§‹(GPŒ:r³À5Õs�Vþ´®Â$µâ$AÌ!˜"ÅêŸ 4ïãÔ¤‘J¡§éjލÞô¬‡ËµfȤO)¦¹Ab¢y¬¸»Ðmùò嵂øÕW\k÷ÿúç.”ƒ]SüJæË cÊk^¼\TˆÌÆL×p¦]}Åæ§ý#–Yöby¾æjT h»X›m¯¸Ì¶nßë!2=Èó€v£¨Òbpò�Aׄ€m�”³ÚºõIÊ2UÁ7 �o”g@·œr—}çÀÚä(€m’¬¼Û¼y³½L’5§åýyAk@µ¥tȲá†�ZJ=•ébS…àœ¸„ÔuúO±Ï‰RMSw,‚êL5ܺP¦� RwŽp€,AÈ Š-õSb'q� Tm2ŠPí7À…s9\ ]ˆ”Òõë“(Ê0;r 6�ø ¸E„TÒKû]·~½ QNé�E¤·ú�s552¹¤¾>ÀN5׊ØG=®¡®ÆïGQ½¥à,2NP¶q@£ÒT§fÔL(GÉxRÛ˜#£Ql¦%\5Š9•S͸"RIóé«Î�X“Ì÷!õtv~ÒÕœhÌ+"nÚ—T\*\JVðL³š…qÄ4Çq˜.P§×2ÃwPÙ— xs+ŸáŸEýVÜÃ@"·ãDæ“2šò©f›ˆ"ΛÔ9c,ˆR9z‹!Á+dP@@UÌ.Žóg5Zðæã ÃÔ}Qî°€[Ue%2¿&þ¸7ØSOíAÅv˜‡…,¹€_×T0Èz¢¨1ꪉ¯Å �qÀ™d…Îz—m;ªËÀÒv5_Á•4QM4X'P'Cÿ�ØÜtÑÕ<¤º® kK Ça¸èô4·(óÜ×8i ÔŠýé„h]m[Ûd²£ÎªÏ¦ý\ȦAr) ¼üů±¾�óOŠ0†‡¶ YëúJ ÉÖk^¼\ ˜�ŠZûÎaw «¿’‚¿üů¾º~Ö}¼–÷gݹsXð}ïyƒ}è#ÿ ÷®I·–RáæçÆø•/~¨ÉÝásØž·¨�K7|óã&.†XŠt3Mß9ÿè÷ßÊ�Éüøº„›TÿèGíƒü¡…ïÀ) Aµvú1õâzW¶Çþ.»„Ãçuí99CrÓ™t×& º'Ôõ¤ëêRj*ø¿nݺ zH)¸ßFD:uw’ ‡¨¬¨¡~×,ЧÓ �„ºë0�®Ã@#¥ñÎÍ&lß�¶fÕj—ºXßÐèT[€™å­Í¨±Æ�)Ôfe6äëpÁ5aR_ÉyTž0hbjÐÕ;+¥$“î÷׬½ÌA™ ¢¡‰‰Q”u€,”r*Ô?H�³|JTåS£sš4Fõ?\�OŸU»WÙ%ñ˜C(”Ã�˜‘ÈŒû –‚mƒ±“B„F2WŒ-dËÉaT|#15 œâAÊ£ÄEªyŸàþ8xSé¬y ¤J{©›”ˆ+QÛÁ¤`S).8¥ql •Võܞڵ˩Ãa`!?J¶IÇ3¢ ÌyHæ'O…û4ó¡ÎîBL34N†(Ò´~.t[©¤‚eÄÒI ¥TÓ¶â N½Œ²/?ÿå@]åÊ‘b Š½éÔh»zïTj,+©©ú'úçžù'ÁÅ•9‘Üú¢u!Û 7Ü@~øÅŸ–UÅyí+ßlÿú㯻pF1ÄØ÷ø€•V‡­¤"ÈÍ_šð_ÈX{ûö"àEàà326Ÿ°‰‘ˆKûÎ^B×´®íK©ÝvÛmüÁ—EùÅÝT¼ýcö»öÉO…´‚±ôÁð#S,2Ž©¼×¼x8STœùýï}“]¹aõ™[2ó®½v“}âcµ¿þäÿàfHß™ùîÍMUdæX*Ü’é¬×/K4 ù‘?7]O—R¬X¢�ô=µ€H.,¢•Â÷Q€ÑÔÄ)›­V‚¹bÓʰ\î÷etè‡'ôööÀò¨ãÕkË›\šãüœÜ='¨eÆ}>b�­YÀ�Šõ×àTªTÎ5ÜTã��¡âB!ÜQ ç$pÇGzbCC-e²úà>+HÕ“29Å¶ÆØN<$B�„MÔ`<'COÀj !‘@‘ÀQ�.àœ9 C Â2LWÜÛª¬V ö!ð4 X›(ªÍ‰¹‡ Ë—rÜ‚{¨æòé· 0�(õÎdŒPY]€:®Ô©Îp �âš–“ÖYéÔ_2=8pð "§L\nÍ m6‚ûg}Mr #Ãô7í*·×\À£âYSSÏþµí€3¡Pª¥‹øÇ<Ǫ:ö¾"e0"~âNCÔyÛ³w¯«379éNN:è—Jù0^(Æ@Ù„—ØF±j²ñˆ¡b“ÐFÌHª¸©©qÜIû™&S€"ó¥H“…Œ†[VçP)°§jÚV&5T¯µ=TÓ^Ï™ùzýtmQA›¤{ÊÑÍãĺA�&Ê«ƒ•¾P’ÍR½3Qà¹Iì\É�”“„Ó,›'g7ÌvDœW¯XCŽp¡m{r;.md\äœ$�hCõ¡Å }1ÎQÎ)ÿ#MÁeø2øÃŽ’ÎRWMÆršS.w’Ü_�¼ùË©RA:Í&µ“ ø')è ”ZÊ»j²IÆèmtÇÆ 8”’M—䕼q›‘‚NÇ«â´p9ÄÃ݆h'é]¹à – ýëÃböËn…‡ìüìèfUë)»ÞÓÑÞ /^–tn}þKM×ô¥ÔdyßÚÚzÉRó²zûô'?hßüî]öËûué—ÌÁyâEàI½ipËô÷õ9ÐP]kóÓ“6G-û¤²ÚX_¦2�̇—ÈiSÛÌ�(…3¦tÎIŒ¤êÑ4½�£üáø¨Ãâ¨&©ý®ƒç!¢L@‰ƒ\í1x‹2 µŒToJm ¢¢.,.·I ò…b ½}=NE¦”N)õÂ(íDSu¬ƒE¬Y³†¿ËHáœv 4ÊÊÔbÒääFêÏI…'ˆCU˜”Á%û0èR ªúèTbpÅ+%!S^µÑ*I•A$Ð�Î+6ƒÀ¼ÛSãM ÂAú¡ý©ÿ‘‚iÚv€íèÇ+Q Q[ˆ'aU(Lê(À1NjªRˆÅ=´oÅJᢠNð%õÝ©šSªežµœ˜ŽšŽélÚ¢‚6ÝÓI—‹¨,�Rù‚8� „ <%ât�%ÀU‰„ÒMn¬k²ŠÊ ;|°Ó¢þ¸­^½òXO�Gì7=Hž3Ó8–b;4‡ÒÈýu™£Tà4²|lraÐQ<�\^º€lqJ<ãò¢e}«@+X.\ü#ÇŒdR¹Û*|ƒdq'Q®wJ„«§ÆÐv ¤…ò>xvéÔl<-ô%³Mm]Ót•NÊÑó† ��ºénùãmÞ6qÞŸ$ó½ÔÚ[ßønkjl±ïÿøÀQ]°^ó"àEàbŠ@?¬¼þÕoµ[žwÛÅÔí³êë¥ø™[BÍ ¥‘¾áµ/¶ÇžØiw¹tR•sðš/|Ûã»_iI!Å¥klÓU—[kKÃEA‚/|þ³¶Ÿ«_ÿú7ÖÑÑá rK¡à5/^ŽE@n�e(‰§Ÿ÷¼mÕÊ•Çf^b¯Të{I´…›p˜”ãº+—’,dKpÓ?1:‹Z©¢ª›Ö;ÔO:"Eõ)꟟‡¹@Î(P†�Pçý©»¬7èjÈ�NbÃñŸG0Ô“£Œ'õ4R¹«8lcfzžÚf–ŠÁ' Ì$¦ŽRy­Z¹ÂºSr7íïëU*‡ËÌ›šL§¹övõ¤áÛ ç�hIà/¦bý%eˆ†€K˜'¨N›R[§�vQ(Î$ô©(ĉËwг0|e¤€Žã²™� ¨ Ÿ´S ¡”xÅÀ¾øü óF]ݶüÂR˜Æ qPÑç�J¦ C¤�öõ:ååÚuë‘ÅÅqÁÄt¤ێ��2‹2®�TÎQbÙ‹òlùŠ•ÖÔRfqøF¬tB@-%tõ˜ ʈ`–ó€©v½œCe¡ìA©ÎŠ�úë™èu´w:V43=…E±œwêD©Ûíêêk�Ckp©r\s€»° "(Å$ÁœÄ•ãú*v#V”f/N冋˜Ohž–98Ëž§×ZþLmQA[5›Ÿ�+Řvœ¯ziPRå¹Ff[±4)£‚}q" œQŠÔq–-kæ?sÏ°íØ±@2B¡qòEfeàà÷s<ä\;2çúmöåúôq'Ñ{ãEÀ‹€/^¼xð"àEÀ‹€/^¼<}’ ®Î*ˆ—Y Š(Õð’(&,“Fî× €mùÁ'à™Ä4IZc Ê3‹z š8EÛŠUVYri•åEa—’yEÛ¾={]í°0õȤº£~™ê¾_ €Ëá^hdÄ1€0%PZZW9‡Ï)–Ë”ÍRëý±‡²Ò"W´¶Ú@w7"à°M£©i™rªç&8F y‹ ƒl7Œx©�ºõeåå6:‚ ™zÒìI &e[ýQ=±9Ò@GS£6Ï>Uï¾¢¦ÁÆGÇ(!•3Šóõé²QRFƒE8�£Æ�^“p“žÞ^WG_n¬:>¥Söv÷RÇ® îQA�º S·Nü¤óÈDBމ<ïùÏ·µk×Ùêu—[Ç ·W™EÎ#l*+«pÏry-È•r)©‚X õ n›±ø¬Åæ¡£ÊN”¡A’s•Ï>º�0©¤°˜´OÎ Æ:öÜòbúƱ¡P+Ä6£Þ?Ç[X]a•ÔÑ;Üqó‹IÎs1ó¢¶áŠ+¬^<ÕësàXã ïb0¡‰‰i'øUH;]Ó<)%õ¬‡ÀÛÓµÅmnÇ€1Æ Q´Î‡+‡ ¢&�Tnž¤–¼BÎWêòžU\õСN›‡*‡ò‘»¡¡ô³^´U*žd0q@y\)ˆÎÜ Óô$'ÔE.’ê9—FJð©æOBSuâ Ùú/z™TáAwH0#R¶1€kjªm.0r%QîsuU9E‹l”¼áƒ÷A¦WÛ$Dv oÐZ€‚5ÕõÎUÊlCc= ø|àûõá!J¿”’ª¼c™3h@ ¨ÉõCRKIåD*…]À(ó/0ö˜�kª×¼xð"àEÀ‹€/^¼xð"àEÀ‹€�sŽ@”òNj9À�<_!O5*¨!_Ê‹QpÒr¸ÿç&Üæ§f­ˆ4Ê5+×{HµÆ•5WØðà°mr»Õ`Ö(U[È# Ôܲœ;û\ꤡ6Cµ¥ûû¦ÆFDC36Cæ^’:gRR%×TV•R[ìµþÉÌC̳k7Æ À´††:›…LŒÊ�As@¶™ž! Ÿ üÖß�™Tÿ)¤2/0µp)怢i…˜Ô/t¡D“t§Ø6Äò.EÙ®jÇI¡§²(`+kc?óÀ¬ö�VZp©°Ã¬33 äÃ<`ø)¥¾Z>™}ýƒýì;—,¾«ojpÕÙnRe;;º`QÀÚ km]Aš,ܤm9µôD< ¨FKgõi œƒìÀ(ýéêé29”64Ô;åž2²¸úz�Š@½"j蓊éz*ë1žkuô=¨št›ê¼%1ÁÔrª÷ ®Aê;Ë”!œ_ä(¨Å–]†K)µé…)§Ê‚÷Ð�—R7ùà6:'ªÍ?66A?}¶rå*Ù²ÁÚéà™–)ÂTAóu¬™gûéÚ¢‚6gÕ \:<I•E«Â` Jñ¥ºkÊ‹Õ!+¨ÌLBŒ}’õA�U O M®²yåh¸hôž©Êf©–š�vÕ2)wâ¤ÃßHÉâDƨë¦KÏ϶ü~,k¹ý�´¹AŒÁîÏéLØöí�Û®]Xàëä`‘¶ñÕ‰IRÐÉ!ý�„¬ÆÙ7W€ Y b®!uZˆ¦Zs"®œKN~ÜŠ8Þ(þèÓä9ª×é¦tR@—’×¼xð"àEÀ‹€/^¼xð"àEÀ‹€�sŽ€Tj‚ ˆo|¹@$¨S’Ziºß›#å°Ôvïßo+W¬$ë.hÕ”„ ”X pÐGÚfGg§�K0˜).lþH—g½ýýˆe0@8¤l»RSìg’mŽ’2*“€€TQ x„ Œ+qjnHU7ÔZ9J±ŽÃ‡ls9cövP¼Î1‘ÃíV(¥ê3ñIû¬‚}”«6Jª¹™}¨—dÌXNæ]Mu5.¨¬똦Ï}@BÕ*kmm±pQ™SÈ)}Òq êÂ|~zkV¯‚g�YïvN¢SÔD;|ð°Kû,R�00(€U#8¡¬–`ÔJ—6*Ù† ¨³OÆ"Óµ¬Sué5ðC¬CÏjR�æx§QÐmÜx¥[G‚+M—1‚2+++Y2ÇvïÝëêç’òY]…áuèT²Kæe¨í“(ÞffP²=)ðJP¿Ig¥rbô‚í*¥ÓXCE�:õ#Ϥ^Ó~•Ù(©s#ø'GÙÌ(2Ë©ßjšª¦éGÙ3-—½î¢‚¶á¾d ðGH�m²7w�zDSËÍ�æ!Ð$•€[OÇ{M×I¦¨¦ é½$’‚tšïê iy÷^Oi€§å\ÐX,íš>éÚ�iWQæ1 TÓMËòw»í¤èŸN’ÛªÛ§ ab‚¬ÛKªïP*ô§½ê½OÓÔí—m¸AÈ2neÞ³3^§›“z:U^fŠ÷ìEÀ‹€/^¼xð"àEÀ‹€/^¼œm䨩J©¤“RÛÚÚ¸O�"À©vP)xZwùz+B‘¤L•jÂÇX§¿§Õ”ê™åY€©¼ÀSV ˜J²\Àz‡&œJª›DAÊÈ›GA&T” ¡p›DÑæ§æY0\dÓˆŠægq»¬®²bæ'vJ'm¤^ØL±ÔV «f^ý²€ìÚeS(·êšP½‘š©TÑ2 T”,>‹Ø‰j§ èÉLAEþc¨¹BÁ<ÒEG,Ž@èòõë€TÕ¸xŽÙÁö7CV‹*lx@Ž©cæKaÁ~ÃAÖG1Ö?èc½F–‘ÚL%¾T«�> †áNJ ÁŠ‹Ì×­ß`ÍÍÍŽ‰¤ù�°KšèYÍ1X‡ –ÒR§qmjj¢þ\È1ñ�) špHMM�S—É ´¤¤„ôÔÎGÔ™c ¤)MSàÏÏ9_ ¡:ÌËK:�@‹ŒšVq²%äRª«ú*q•Ü^ÕO1¡04»Ïê_#çÒ¥ý²Ì©Z昲çi[çÚ´E# ÎçÚ oy/^¼xð"àEÀ‹€/^¼xð"àEÀ‹À9D@d >Ôi*ë$±‹ÀM*IZ%™p%%e§QÛ`i¥%€›b«¨®³}¸]–’fZ‹Óè¯z˜zn£Ôì*³¼P!õÒú¬´ˆbþ¶cûN{rÛVakPÛäàò]�6õÈ|dã�b bUå%ºE�kÓÀ¦>:%è™ÆYtíe¸‘È"´<àœˆ“ ÒÊ+l’4×Tl{÷ï³åËWØú«7P“ÞO &†¤BŠzÉd lhR+`z]m� ¹ýÌ‘ò: ,µ®Zäj´©1œKQ �*;Hºæðô0uÄ…‚™EH�%fœ€©‚c•¹Ã0ý)*.¶ËQ°©FšTeåå•¢Íãd:!ð'h%!’ ”1JgI¨Gkk+±¬`YÁ7 Š=²´ež;_bt2’Ð1  a>Q�»i €-×)µî *>?&2EÈA1(ÅZ¦W¸i›Êt7SÖãûã9-²R)/�‰L?÷ÔNÔÜŒEúgQ@ÛýѹÚd‹Ô'o3^¼xð"àEÀ‹€/^¼xð"àEÀ‹€�3F@fj=¥¥%³æ\še5•L"§F{>Eô«ø�˜1p’ôͨµU( ÑoW_}��c& çÐÆÖåd�úmÇÖ-<ç[m}�S€ R¿]Åð—­oE9åcQàÝL0Yœ›¶Îì³»ÇÁ¹CííÎL±¡¾ÉÁ²œPý� 1ö¡ÂVALæQ°9°‡ÐW.+!utÈšÚZAj,�Z®¼¸Ç9 Y‘•à°935¨’ûh)ëåXOW7}Ç)´ˆWˆÓéj¶AÒK©|L‘>[˱‡©mÖÓ? ²Q÷,Šªo×îÝ@Ž¡â#å”㘡O%Ô•knnµæV¶ "+uX®‹«êÑ Þ%“ùT ^ ¸©�ÍÙ²2õÌ�ºŒçBœ_ss‹x‹sÎàT Ç×.�Ts–X©&¿àX‚ô__@@OûQ©0e$ 69ªË¯>úT^Œn¤Eji5›  ê¼Iñ–1¯P3€MÛ?UËÌ?qžÖ=—¶( mÔÔk^¼xð"àEÀ‹€/^¼xð"àEÀ‹€�g+ªi&Ø£^ÕÔS!þöö¶yóf§>K`ˆ¨´ÊrR2p•›åÜ\”ôÄbo¦¦ÆQ`µØ;Þþvœ%G�£ToaŒTô_5ÁV._îêµ�“N¹ŒeUL*¹)ê‰)ÕQ)Ÿ‡úûP‡¥P¸MYeu½•UØ�«¼ª‚íÔ†æmf§Fx�’ÀѨ˜nS¨ÞTnžb÷³˜ �ŒÚèÄJ3j5•¾’)A46ï\AU_é°á‚B§S9«ðn6s†Ž‡²IZ>µÉ‚>ÜSŽr7U�¸Ææe–_T4,ÀrЩë”*:d“AÀÆ+6ZK[ ª½|¯”Ž©NË(a–zi…¤uf›`–@–œ­­­˜i¾ijJåŒ'c@A .‰•à[œ¸H=WVZa›¯»ÞŠé»À×Ìì çjå!¨¤Ê²,qÂBóC�>ÏbTw‚«â_R±Iá&@§¦ñ À§ÔU=Ô2eÀÔ7WÌM=ùŸsj'o!=eQ@Ûé6îM÷"àEÀ‹€/^¼xð"àEÀ‹€/^¼œ�twu:ˆ"µØ µÁ¤¬Rj£SbÄ¢À'Y- �XðL…÷e°X†:¬¯¯ˆå#�@ƒ™bqN©ƒ0E¸‘V”['Ð(0'È ‡ÂVÒV‚:*Äú>«ª©³*Ò7]Ý4 ×ÊUmn_2�‚®@WA=6 ­9PV@ŠkIe•4^680l½=]víu7ì†mh×ÝÍq ÊšX¦y¨µÊ�m(¹€d‘IRFβÝÊÚ*«6¿ÍDzllœúm€< ¨¾�ÜFW®^ dk†�VRŽ¥�ŸäPô¤|À’êK@jˆ”Ï�;w:Ûå—_îà—€Xz~úl뵌&õ,›Ìy œêÏ¢°+*ÖÚ•ÔrR éü 2L-µŽx�ö¥ùe˜QäcB)�Æ,à^©,�V³ÑKQ7úz",ÓvN§`K÷òØ¿'®{lι½ò@Û¹ÅË[Ú‹€/^¼xð"àEÀ‹€/^¼xXhiiqàEÅ÷õZi‰RM)]Pê6)™‚¤„îxjuØF¨mVouõõÈÕ“ªšc VÐW·LJ3¥�Ê„@÷Et¤¤R‚d%•6bPN<@b=¥VVÕ52‘ZbM‚k@ ­W­8H�ÒPyAz–ƒB¡ÕSûŒÕœ2-‚’kfvšÕ9À}fK,H?òmb|Ä¥®Ž¡ê›œ´JjŸ‘õÉöH_E)f±\@±—H“ Aû‘.K¢+/ÁP€´Ù\eR´åæ‡]ne/ÆŠ•“²¹Ò­£c{á _„ñÁå":#Jú/ ¥Má+Á;)ÑÚäÀ)(¦‡à[=ñ”rL±V|Ò°JA,3os61‰ë*RéžJƒÍ£Æ]Úi¡P‘SÙMãLÚC}»††Fðœ9‚\Y©'§ý§RÔx#p„�õÕ3©çxr½Ôó™› ›ÚbµÓímQ@Û{ßû^ÛºuëéöáM?‹<òÈ#g±”·ˆ/^¼xð"àEÀ‹€/^¼xð" twu9¨vùúõ. ‚:®à¿è 4Fp¬ ÀóÂ[o#¥ô°uuwÙ/~q/`§ÐÊ1?XÞÚê– a$ À$™ LƒƒPh<ËåRÛŒzg@,ΑûÈD¥×¼L¦Òê*Çq˜–T>&ÛÉ®å21—eU—,×ÕM°iž@Ш˜´Öb«d# §jøŠ gQ§…0>H¼JPsÉE”�YV¤”Ò‘�Q›Äx¡P»E¨×6�‰A½ÅIOíèh·Šâ0›€± ¥xŽQÏM°­°°Ô-רØàÌJËËèG‹²�ÜX`_ÂAD¥i g¥Ó4Ói—ªÅÖÞÞîàZKK‹‹™ šÀœhég¥¼ÎÙ8i°‚d8°ÖÊðhWZpqÖrŠsègÒpƒaœYkÝ2š§s¡‡ú•�c)L%”&*Õ›”wà¦ó“YÆ †…4Mó´½Ì³€à٪ܲ·u¶¯´�íμå¼xð"àEÀ‹€/^¼xð"àEÀ‹€/‹Á=i¤¨R±I”_JíííGÅ6d›6m²×z`ܺ5«lYS=…ø+Ì›µCÛ�EeŒuîFZ��(ä–5¸i�@¾Sc©˜ê{åå¥Á�U�@�ýÇIÍŒ»râ{ü£tS¥¨ê?)ÜT�,ø–Ã4©à”ö(PçË ±xæmЕ¶ù0+ÈC�VN 'ù¡¤¯Æ1ežqŒÒcÍ�F9ƒòkdpWÓIçh:;;iÔS+Ã!´²¢Êr‰Åèü¬ÍQNuè KsIË,¥6 ØÕ¶¢Í®¸ò ŒšmµÜÐÐ p0I-;ÜG90=”Z*5tÊ©Ø_¥pJd¥×7Ýt“K)ÈÒ9Ð4=KMÈ*<’€³€•)%ƒ Õ¼s®¡8¤¦9¨â�N+ä ¡âÓ¹ØÓ6d<¡.䫜¥�Æ�ƒi‚l«ZWγgj§e3¯Ï´ü3™wæžœã–o~Ù_YUýåÇuš˜ÓÜ?'m-S¬ÎÍ_XäL¬“}N ª|ª¦}œøP85îBÈ¡``Žž‘Á3ƒ<7Eþs‚ 1U¡Añ]G¤EjOql"Î`™¦©– õ–Ì1»}ó /È~ë½ö"àEÀ‹€/]:»úìàá.ê}ðe�/ƒ^ó"àE@)-Ô¾!u§±¡ÆV¯jå&êøï€cŒtµó©§ìȑ瞧÷^ó"àEàX ”J×ÒÒlë©YuÓ È@IDAT>3ÇöúÜ~uãónp�%™wŸR`)ÕS€HiŠbq �@�Py¤QnØp÷÷|_ác¹º¦‚ÏèÕ€«Y›�Î[„ÔÍþþ– àÈ9NŠé(Ž¥•à)5S)’rÕ”)@i)Ο¾¸Tq RÀÁ%©ÞàbÀ#Ÿ†ÔSœ&©¯„ @ ¼ö¼ñ_RàvC-§ÔÑP8àNjŽàfyÀýÆÁtùŠU¶|Õz»úšÍ˜6TÓ™”«?§tZQ<õ]½Í…üIáçh{ÕtÕd“š­¹¹Ù–-[æj²e¸‡˜GæoB†ƒ¸4Ob ŽÈÀÑ9©×t.Ò*9¥� ² ˜I©&棿-i©åÓrsq�%>‚j‚oZLËj=�m«˜|‚|'¶ XK/ŸN+NïçÄ%ïý¢‚6u+ÓaŸ•™vên+BÇÖ;õ2çojvß\Ÿ ôj*Œè3ÒŠ®:Ë€Ó`кúï¤ÆE%«]µcƒÌmø¤E½ ç']í¶mÇãÖÛß uçÃ…_¼æEÀ‹ÀÒŠ€›Š(„Z_ÛhWnØdÍM­K«ƒ^oÎý}{ð¡'í{?¼Çzû†Î¸¬7Ó‹Às=E(îxéÍöʗݯûù]8ä&÷�ï~Ïþõû?pJ‘‹î¼{¸�+âo¿þuö¦7¾ÁÁ™ Ð…çÄ.çSúN’m‚5%%%Îq´¨¡žZ_õn¾îÝá3®iø <'� ©{ýB TÛQš¥ÒGÚbÔ TR› ýQΛRË ³’4 òèýððç9ì^•8{RWL;Uº¨ ´m�¿|§ˆ“8Çmz QÏm6ŽIB¯5aLVÊ(pMë‰9hi•^'™dJ¹:iê Xjyx@`-àPÍ8)àôù½bnÖÕ« ‘ÛÌ}±z¥¸�fš@]ó-¯ãÑö rµÿ4óÐ~ØtœŠM]]ýCmGË€6½XÖ²ªÝ&åŸK±eºß—¿ÀN8শ+eš‘â+ }–:PûÎnÙo}8³†Bynv¦ozÖzšw:°}<óIÇ'{çãõ¢‚6'1|Z€LB¹¸�Gq<ÊJ¦i÷tæƒ^lE›v­“šî7×#Ý9Â’÷œ1͇´R‘âˆô+ÅB^pJÀÆáh–…ž’‰�ÞLÖ¿:Ùjîyáµoú`³ô^.zºº�Ø·ð5Û³oç¢oÛÛ /ç/?þéwmÍêõöæ×½Ýš[Îߎ¼-/Jææ"ö_ø†=±u÷¢lÏÛˆ�K=r¡ûÎ÷ï¶û|Â>ò¡w[C=*‚‹¤utvÚ‡þäÃ8âu_$=öºéE`iD@@æ+ÿüU»ûž{íÓ÷·ÖŒÈk‹�Œ‚Iúyô>㎩½éžxYyеD{F œY@þøü¿âÖîÁÀ~ÃÎlçFoM怨†>öÏ7°?éP�:&¾'ÝhnÁÕDB�BƉÁ� Š\VUòWáõ±Œ,<4ï%<ûä}hêH?W#b0ûö;îR$9ô4Šý ¹ßÕ5´>Lj¸À9ÀoO¹ç«t÷½€Ôr½óÖŠwÆ œC§mø"A¥IW !@’¤¹âò�®}¯kÄ`#ª‡ò IÀ)'�Øj“òRFÚ”<œ'ìG3‰‹Ór:#UÓ‚‚|‚?Te ˜TJ‰2ª<¨¨_ŠT˜xI©2„ÐÌ�}85éÜÜDâKÎUKèÑ‚HKÊXÕºSh@—VÂy”zÅŪj¥ŒM€D $Ñ€*…Gò@çiSÃ0dM—ŸŸ§{B³ÐëEõOÉ—ŸÔ“£ðG£Oâµ<)'AÊÈOÎ…'NœPø |v-«Thâ=Z_M¬zÚŠµ(ÐFŽ)LÓNâ&;ðä: •ÝòW꩹úº®åÅh`³^è”8k¨¼Ò—Ò¯”ã$¦ÄšèlÛªÊx*€É"ÒH½hÁãD\ÓäFt� ¥]�ŠNp}A&‘LmB ègmõqëÔÒönÇÞù7ym—¿es¢zx<ÕÚSë¨mpÀàÀià€ìàU–s·ŒG ²#(÷²ˆË÷ìÖç4ôh4yªøà“Å5@6wê)øFÃìIeíe~ª�õ üŽ8PUY†’‚tT–å+£*,,Æ¿þýž{ê~ÇÇȹ8\YÃ>üÈ£5@6/ï øÉýÎÍh#08P?¬¼ï‹òÓP^š§µC¹ŸÞ}ç­sú¾¯DçnŽö­-*�ªº"mšü’¸êhÔËs­®µŠ”ÐI~’/õ´sMÝ_Ò5ÀMT#�’4q¾pìX:%ØB©²DÀ֭͂#ˆ¨í àæá!*µÒÔÔ#|®*ª˜II‰ x% “x i1q c‘1Ö kb±5'H‚ ª€•n �’^WPÇ*Rz’¯b5*ÈVÃ�1km ŸdŒÚQlÑÉOÊHš”“Ÿ>H_DгéÏ×××ÁK••n‰K;Ü `¨åi ¡¾Í†âRO«+GWzª{&òê¾"'Û³\/Rù)QõJ’\X×@(KIr0HÎksTk¶êhC�±UçÅ‘~)æHÛf«¤Jh%õ¦yƒº©åä¶Òµ®dnö hbž8Nƒ|usЧEdâ¨?é•ɨœóè NDÚ™fÄN†¥tüÆ»/’ÇNþúø{ÂËGÝÁ8™6�: œ9Èó±œ6)J U©¹—åžžÿÄèV�Æ&ŒpÎpàXF&¾_¾ÎA�ÙËþ¡íù ­ý.t2".p¸”’ûDÀ¶²Âã 7R¥)j¤—ŒxÎrgÙ²�˜”ä Ï×?‚^ëè�Ï 4Ê£ƒÂ: (/�"3”òr?É}u饭oh:ŠŠŠ•ï@†4ÀE@ x‘t ’§©kÊÚS$O¤ªä'A#ù†•I±÷&A-ƒ“vDmSÚ[emÛ¶e �ª ¨‰�²r%.Æû¥‘"“ººuíÚMšS©¼¼\„Ó!�80ÈÊʦŠ~ª¢yäHªBCnn6A»Häi¹(:,µX¡Aúo­Z6:q” ë1‡£é[~2. =¢ ø§Ž]ßÔr’&<�²¢ÎYAüCJÈ(àŸäÉø%h|ÕÚÖÎ…gTAÉ×ò¤¾éGÒä\âÈi}kyJÁ&üÑ——¸­Ÿ&T?íEZhSTGé�B?@a© ¨©b2%(’]v´Fy2]®¶ÿ©y;8sìóÈ™àˆIN¹ö ­Ðà’-Y6k9*)ÑÖ¶ ?´%'¥�6Þ,B/ÓÅK§,ÌÚ‘d2 ír¡µŸ¤i7X•}h“ËA¦9%üðãÒ½±ü‚¼h ²E§¶Ö´q48`pà4p@ž›_J ÓkP=>3È=-÷ö´Ëf�†�&O–?­Ù¤,œ¤¾,æü‚Û*Ç“mϨgpàB‷$¬åEÜÀ-V†½â§ 8—�¶o–,q\J¬úÒ#� h侩à}_YQ¤Ô“ûÊÚšÅÂF ‹Ê¥$@K¾Åsé1488HQ°M“°’²Ú7»×êkG€ä;^TD¥¬ü´oøÐÐPå\ûö—£Ù,Ògª§Qw ë�fª *«*à•´íããÍvUTC:/z,! ÀB•U_EâMùEDD(êšâåSœ1Š§Í´´£âÒé6¡K€0‘œðMÚõU¡[èÔl– „v¡Qû bŸNèÐ0 í(y’.4ûú }^J›jQ9Uƒ”—ö´£ÄÅnœô-4ˆÓ±Q§Ù{Óê -ú ñVŽÒVs‚k[Í©{&ʶ,A¾iVyhg$y¦�;À-&h“UXª0™ÌõКìw²AÒëd¿ô[g­ºwØõýòŠ::P¼€°¹I(Õ*Ôƒ®n9‰Küqâx>Ê«Ja­2£T\îR¿Ù˃Æå'”†ðjã×&«vn¢M7³Üq ’¦vëìÛA„i66lþÙQG6ds°Ãˆ8¯8 Þ¿Ü,SwÄäÞ6€¶sënÛ±ÏA�§O¨bRÁ‘`D h�²þ³ø…£('E)'v‹KJáˤs-ˆÚRBÂnY>­k|G¢18`p QÈ}/÷O~– ´É}%÷—FhÈ·¸{ÄŽ¬Û(j¬ªwVzY¥—SÆX”ñH�qÊO;Wí$]¤T5Z±µ&´Hi;‰K=)w¡†E%D�ÄÄÉ!ÁyAÔ ¥\/þ±ãLRB)'¬—Ÿ3�`–ØzÑ'(%ëÿãì˵L=7‘½º.¹H§US§ÚÛË ­Büáa.FEI)ÝéëÑb–•ÀÝSÜøÒ­•6ÝøOn,™”rCK�sùÉÄ’£FŸE4TnJù]ÈÏõJ�ì¹è­ëƒÙ\Ï5×2â œ³p½‡å7€¶sçr•8ˆ1‰›n#08Ð,ˆc-}Ççb(Èwšäú\é>i6h28p®rÀõþq½¿ÎUºÏº´om‘®Ò¾³å\‚œK¾|wkåZb\Òžö-¯µ/B;¢ *ž9Ui.(À© ¢>Z¡¨³ Èªæ« ›F�´'¶ÑlàK$ãJè­Ô‹ œ€†åix€ê T•@ƒŒeffãàÁdˆ�¶è¨HT_ȧ£wJ ùùRÊ­}ãût³RÏÃ��¶ qb§Î××�À—§‚K¨ ‡ Þ #¼:dZÐð x“t-_ËÓÊʱ®4-_êÉx¥-)×PY­Îùz”±Ö7¾Úl¶Øªü)ÞhãÎ…ÅC$¶h|¯¢žþœ$”äòð¡h#/4¯«d‹ã�*N4¹Î"àU-�?OfVÒù€�£R`ºJ?–#håÉ3·jXmD|©Û,�p+³ M¥¤Yd÷|Î!J›Ùˆ�C•|Æ<‰ —Òû oæ‹[YÒVÅÉXª‹y” {=Wš}PQU_‹ ",صi-•æ!¶ëXøø·¥÷êL‹È%Û–i*Lvw³8&”Çc:1h¸³œŒC  Å‚fÁà€Áƒ 08`pÀà€Áƒ h>DzÊ5è Q&×’'w.m‰]2Ñh“ çbóLˆ5Õš6›P è%Hii¹¢R*ÀXFÆq¦ÙЦMA·7 (UGýÛg%%%(,(¦^¹ì¹» ¨æ«[„õ(eW©HÚ‰cÿ¤}ù‰iQiÕ�/ZZcçZ9í¨ç±–¦I´É¹>®åÿÞŽr-µ9à:¶ÚDLN,IJàAg¹Ù')yÂD�ËÝB”µ„`›�7/TQ%ÓFtMP_âÂÙ( F�ØËàbAµÂü"¸ôÔÄ &¨°ÕV!x%å´R/¢ÉÆJ´c"È"ËlHf<�,ÈsSµ'Ïe¸DŸ+Ê©ö X|½¨ë\A4˜eås§·Òކ豭òR'bÅÏkÐ;¾7ÑdNvo7dçg ¬$^~qp§x¤ ÁelE½cHTÀ4±âÆÀ£Ð+]‚vs©gÆ_ƒ 08`pÀà€Áƒ 08`pà\æ€`¡›“ ÐHÐÌN‰QíÌÍÍELLŒâETâiiGÁžððp¥|aa!rrr'¢"*uı�¨q °¤”º§ B¯››Ø˜I6�%T@BÒ�pjköè\[:¹™áÚŠvNé13ñ,w7Ú3«.£‘¿rD´òBrR J‹³Ó ¾Þ~¨6SâÍZLá3N™œ”`3U ÈVI)2ê £œ Z¬åù()(…=îÛ± �aÕ~Á¨ t\%Á5³»/�,†ªg,¨—‰žCÑL18k’<EDW@6“HÌ™¨êéNI;+]Ûš(mçåC 81ȸÙf1üò£ÿáȑ݊vk÷JÒÆ�QÂÞð'z]¢Ô¥¨¦}Âj,�£~ÒêãDõÅŒ¸Áƒ 08`pÀà€Áƒ 08pq@Ãrrr°,##Cq� Ît“|áDÏ â Al EEE)?x$_&”–æ*�”iÕ*œéÕ(,TÓDÚM@:­¿ ˆÅ§<Ô†ÔBµÆÐpSÊŠ×Y}ªÅ‚H²™½¨"IuK·"På²Md¡©lÙºGJ2Ÿ zÈ BEµ7¬DsÝhÜO@6w7Ö£‚êÊBTgrBÙЫk$ÊKMØþK’öoDt»nèÖm‚BâàíA1Q€³ZÝ)()@ud òÁ$"œTÖ4Y8hOE’L+«d�²/›­œê­¢:êM � ]µ™ªªtz@èâ’2DÅÆ¡ 0ÕôÖPÍ|±»æC!¥…šž5FÅ븆ú&²›h“|Õ0¢¼¹òÎ878`pÀà€Áƒ 08`pÀà€Áƒç2D*M/%Và:)'?Ê<+¥Íµˆˆ`uTÉÉ5i»K—.ŠdšH® '`šÔR ±±1J¼  @ɳËI7 âô@@:éC‚!ɦ°¡I„W�ñKËW�KÔn¶E�6³b/�j�Õ¢7lƒ…ΪJÓqQ§P¤vǾä=(*É�7�6ÿàP„t…Å'€¶Ü¨?\UŒJ¢±ee9´ÝV†ŽmB€à@ ’’’áƒ<úU#=e ²ŽF»¶}Ñ¾Ó „Et¥›e�$èæFUQÏ¢Z*„Q•ÔD;pb%Í�’n&JË™¨Ò*nfök&ÐVR&nn Ô™¼`ñöGmʇ¶Rt¢}ü}Ð:2 >D–Ã[…!3/GA–Ý-"!'€™*‚Y›µµSä¦õQ ROÎ�pþp ~ØÃ¸â⡈ ö³͇\á $ï[�Å߾ޤrãzÖu5�{ƒZûàÀº7ð]Jj]EšœÖcàÛ^ì ”`å§°»¢nž›Lñ˜=ërJË•©øü¯#»¥$JÃ'ãÖK†Ã£d/>_ò®£ÝÐ.·ãŽËÆ ÜÛ9{ÿ‹y¿TÖY®Éƒm�‚-Éû ÇhÂàÀYã@`§ö¸etWM Üð[øþ.$ÚÍ=ÔUË-¦ î¼´-üŠ�áµ�“¸¥xþ†Q—õÃð8/\³ ïVíÍ´ÄhNW»-A›ÑÆÙá€É�¹‹ˆZ7#7Ãy‡zÑdLÒÆ•øÏÒcg‡@—^/š6w^޽K¿Æ‚Ÿr�˜^øÛ ýá[tϾ´9 <#\šjÖ©‰Â7Î�‰Î²ä¬Ì§Ï~��Í\ÇÔ¢=  ¼g ‚O3íͨQØàÀyÌ�Sù–,@T=E2Í“CBB`LÚç¢6*Òl­[·VÊH\Ô@E‚JÊxÒ Wii ±“2Åó§€=8TIm<Ûd“>$]O«éÓÎãËpÖHþ5d‡®E�6=_ˆOÚG󤦩ºTï @§¸ê$ˆ•…â|1âwy ‹@HÝÎÒ±�·{%Â"-ˆ¢ÛÛʲ<”§Ã38‚ê£4 HðÎDé1 ]×Ší·”¿áð¡ƒèÝw4Úwî /_Jµq"ÑN›êåT@6x¢.J 7QGu£´Ûò%nÅñÌ ÒPNUÔnö‚)�fF…É›.t©®ZjE‡Ž])#W w/7´ kÅ6€`Ž£¨è�bw®uH¶/×µö‡~½“–`  ß’¯ÏÚÌ0:n†á�‡ŸÂ€V”~t /?„\Ü.¾ë?û#lÜïRâ÷uÝk.¦öŽ�õÄZ¼¹|IׯOEW>iÂ�}Ê@[T¯ñÒ3Hé7àèרýKÝüöŽ¿“QÊYS¿ÀkÍ\œ64°èîÓ0fPO ͆b…mR¸íÃxþö©ÐL †pw)º{ïÚåjøòê¾.-ËûS ϨzŽsà›ïVcÔðþ Ð6Îq‚O‚¼ð^½1yLT3jV!oeSëÿŠî003ÇÄðY„¥ŸàGpýe›Ññ/êfòdz£ŸÓ±Ù{ ´LhfˆîÑ W ‹„‡tl‰v›I†Q¼ärÝ}0å(úÅwo¤äiÌî4³§Œ¢¶Kýa옑¸zæjÜ}ó‡Í—êoµù9 >p×Ä“ØÐƒË ­×„‰˜5±3ïûVXôÒÏØXÇw@ó{ª£Æ ©¸çŠQŠqÉ NÚ€Ûÿ—WGÁº“ê¤}ÖU¸öLÐN’ÚŽ/é�ó Ô3aÎ@ÏÖžHZö%þ³¾¬n©Èý7¿>Þs´²rÕÎN�:)UDRM¤Û(;m®Iš&1%Rn¢V* �¯¯%ØTûør.õÊËi'Ÿ›V^@9=ȦõÛ}F¾zm›Â/ ´¬‹gMǪ«¶Ký„Rm´^îUð#@åE ²ð`ú¸£o¯ŽhÊ]™B:($h–‡âÌ}È9¼ùGC¨wz´ @÷ö”d£]·¢¼t俤Sµ´9yÙ(©,Ce‰•`œ¼irÍË\B ï8¶lü?|ÿ:î_MûnyöhG�D½èxÁFÛnîå,æJ€´ûÆ:žæBäåÆöÍ«°yýr”f¤ ¥ šlö¤ÃjƒúÑËGÛö�ЭkwNdoNZO„†P>¦ªÇ�§Ñ–›8mPUJÉÔÿd²×õs§±IçÆ£‰`¤IA#Ôà@ƉtªìÖÔo®QàLŸ˜&ã©g^Ð�l¥8¼ÿg,[õ Ö'$ [üg(ÁC®z7v Ð~—Ç#f`D¿‘¸dÜ4t¢ZuSoG5Èfõ)†?®�¶äé2pR½­�ØË‘·mõŽx‹DêGtÛv�ÍŠ‡7ãûõkù¬k‘ÞšÔH}×¥%yß$B΃B‰ör÷¯ô< ôÌ‘øÝ²ŸñǹOàƒ�#¿ èÌu|{*ÎΦi±eRáø•;n¾ÚuéR¦Êš�ŠÆ€3zöú½„Rûƒµ²òäÖ%ãg�"�Ù .톶²3iܨ7Â9Ä�¢¢<9ÿ-üå‘ðÛ¶=g…2[I¥ã=n-.@fV®ã—[ìœ0A�Gáýÿ^~VhÔw*Vf$TRaG‚‰ÀJàñt¾In¼¼¿d“þúN®öÛŒ¿®´7£ê)�rÓ•˜6q.›>�Tû=§Üæ™hÀÔiþ8{ì½$^5>&ú5ú¸ð8Pˆ#i’‰t›p¢FªI°‰³ƒÐÐPcÐ)Hyí'[@€¿¾IM’M€ †À  �ógnÄ-*ÑæEgÞf+ZûóE”O 2’““PQÒš.j; {—HIK§-´2xX|!¸Uû¸Pth‡ØªtPŒ¼œ’lÅTô¬,b <éšÖæa¡ãP¢k”KC%Öø}ïIgnn…TÿôB~ÖlÈ:Äu*zö¿ÀXyDs=ªàI“ò¢|.¬s©þYIµÓCØ»g+2R¡´Ì„Ç“Ö*–À=s°mwNØŠ +í²yxó` ¤GR±¯æcñ J¬… ‘¸*zðPl VÙ4ÀÁ¹ôüì-Œ9 æøs’œÅ0í�BUÍÖÜÍxþ™»°ÍE]qäŒqÇpînrvÂÔûðþüÇÎ"ŧ·ëbÜ”qÒp"ršÔÕ>¼ð�™0!7ó0kœâ]ph!vLÅâ™æØáéùÖ¸\`,†t°Kæ”'`ÙÖ#§Þ¯n¬iëîÃ]»(cJw¨�–Ñ®£Š7c—®]N×L‹Fë¾.-Ìû¥øì5öóº•Ø‘ð&M˜�Ñ#&À“®Ô�À[š» ‹¾]…ïW¬ã³w¦M¾äw%á–¾æg\ÆŸ>D]v)>¹¾“JññïâÝ,}nãñß-Ç5;àËú‰��r�7w^—(,ð�÷AÊl;/ªm…¸ïŽwÑ3ÚÙiç³bíy}iê$þÀÁTpëØ>WÍœpÖ$Ü>y×PSJ+¸ÏD|øìåhÃ¥†9¢#ñ[bc J¥×É�ki¸6P¶Å²L½0u€˜ÉpK§!˜¸Ÿä7}åJ{ÂÿŽ»ý¨¹StÚyZP"È$?¨ÖvÂ9Œs>f;NU~eÛðÏ×þ�ŽC§£ƒ¹{6¾Î²Z¼Ÿ¢fãöéÌ “å 4…iØúËÙç:g¡Z±}øik ŒjÇœHŒÖkVÕTõé;qö'[ξ±ÛÜkʵðm;³uGþž7ðeBn¸þnô� @Â÷à£ãT íÝY±hÓN 6u‹V)õíƒ{Çÿ{/Å/E}tå~Ñ�$ã¦>މ=;RÊV’Kq,y.~»]æCX—Ù˜uñtU%%­…8œ¸ß,ýiRµ‘ërQ=¼Gsæ˜ûaÅ]pü½Ž¹d­*Dú¾•øhéǰQÈ9BUu ‹ ðéWïó9³S/»ÇŽQÌœôŸnž¾ºOå}^{ÓÌ-,·Nn¯Øaû÷—9¸ó�áåƒí_.Å¿“ü0z@4<˳¹ywÄa£Í�Ÿh—ÍŠÇØ>Q±ˆý• ¤Ç�?nÇâÕx±tíŶÛÀ“ü¯.ÊÅ ·õGn>ú˜«Pp‚å¿ÙŒÅIµ¥æþ0}(.�o¥H»RÂþŸoÁf„ãêA¡HÛ‘„ÕGi.CìÇ�‹�éÄ!¼ü]ºn¤Î~ýŠOà­/¢!ÆèžíqÝ„®èîÏ]uª´ÐnÌÁmûñáÿRÔg[¾hT<.ëfç¦%s®é‡Ì̼¾<=´ÅPã:dÛƒ´Ni¥?ÌÁçI4üÝ…´j䤯—ïmÀjØy²ü©1Xã¤AœmÀÍì!ï¶š@[îöï¹~™€;ºsNyGcd'6%Y0ýæK1 X»h!–&ÖÖèë§`|¬7’–.»۸!H;jÎî�œ$<ýN:æ>2ƒÚGòÞ²òÞ:‚e‰O¤œ.(6Ñî½ã.jEñ5+J²ããÿ¬§F�®P#ÑvcÆâ¾ÑÆŸÖ¬eÈ>¸Ÿ¿ü=V5“.ÚÍ¢Ye}P†ý;N Cï6¼ßÃ1éŠ8|ò¶lÖ M¦½�m÷èÿŠ4$íÈ@.�°fñÕÞmpü Ú©Ãuª&¶ÒL¬_ø5žZ¤Ò6˜ví¦ôP×-°DàÚšË8¶ó¿8ŒÑ³¦`T'oìüê3$u›Š¹{"Ì›ü*LÇ÷o¨\¿^'âÎI½éo¡@…»þ÷ú¢®qGàö'ã’T[çÚUì&o_±ó%Õ`�Ú§™}~�Äö—âV¶Ý†mWZ q`˯xö?[{!ñ}qÇ̡РÎÖ§á‘  üú~ó¯a ŒƒM䀖IqÑŽÓ}ž–.`šk�4}ٺʸÖ1ÎOž ñ×þ9zò�ëkz˜òáGÕ̽»P^|œ`T|-HË�6‘uìOµ’UOër�ñûÙÏK±iõÇŒk/¡¦_‹ ¶c0fpO`ðÅSì�@û7dE¶ƒ¦aÆ8æY»c÷æW0yæMèà €*Äç`Hªvoí­+·Ö>Æâo�=…žöõ§V-¤_ôè7KüRéí"ÌéWsÞHù¸¸1z:Þ}b&–[¾.uñþ¤æØè[سóê+tÄôÀÚeºmþ<º¦Ðx,9çvÐÄí…ʼü|ðÉXº|¦Oº ƒ ¯µ°9·GÓtê¸�Äwi~�ô<Ñ \H€›Œ¹>5Ñ#†àê 1RÃÿà š”UBi¤:DÁ-W2ÏšŠ-KSmna�ðÁ‚ñˆ­y»ðÆ�Bï¡ñ˜þãRÜôfŠÒF‡ìm÷ÃÔ™¼Ãôu¤ü€èô¯÷ñüVõKß�ÚϾ6ýBtJ%¤K �¤Æù7qaVž Å~œÐm Ú¥KjØ�»úŽ ¸º'78H÷Š/S�à¨]32ùÞ+ñÀаš‰h�ÎÔN˜0ó8^¸ík|ëÝóïê°O sÆL ®Â›+*qûm—(¶ß‘Šer¹uŽ.˜�Aº1°‡ÈÖaèÑ¿6|þ5þº0Gé³¹üq!Ô8mÎàf59K5¨ õ¶Ï®#Ì$3¯½=y�t,ÚB MºÄLÄ“·M�?[ØŸ»ž@͈µk§tfÊ8\~­Ë½Õ¾=ú Œ®ÿIÛLnñÖÿþŒ�¡ú›°3ŽWƒ®†NþôìÓ˜3ÄEÕ°sg �0 «ßz s?hºs‡›& í ¥GðÄ=+1ÿç;ÅÓ®F ä��j8`hí=¯»º‘m[±áÃ-\•5�¯BÒŒGƼ‰í%ª áhóç4+²W>S‰ž¢H„)Ìá{ÅDà`žý²·Þ9E¹ŽÓÇQÖ¬Y¶•’mÐåeJò%£]çš|l3÷ïèù"®X {ZQòñû/G”þ’qíÚ³÷`̼jn¹ú-žŸØªsô9q<û©Q]:÷À˜!m1áúϹv¾ WvræGö¾Wö¶ß ЦŒ¦Åþ×ûN>™NÊ(•nƒÎ-8Ÿ&-@—�XéeÔb.…OˆÖ¯Û ¿€  ÄY0¶ïÞMÒôëÛ ÙT#K;–�vT ¥²Yòóð² <¿€Ÿ\„¶*B9¥#iñŒŸqî(¢o«p.)òfâÞ…¿/€ü¾+§·R ÖEÅeÈ+K�¯_ 5;óq`ÏAœHõA—ö]‘Ÿ}å™p÷ sq!*í¥—Qwª—Š:ii‡ö°„ÅRE”^JÉ‹ŠŠJÚ{«@qY|耡šJý|½è8Á† îè–æ!4Ò�6äm6€¶˜>õ6q¶·¸X ¤:†Ÿ×í#}õƒ Ù ÏãIÝû_Ì�«t [ù1lÞ¼ ~Ý0²A9þ‹Ÿún<4ï"`Üužd+¢¡ÿo°á80è’èì sð<ðà#¸vþÓJó¥²>Tî`ùcÅáÝ¿â„ïEÐ6ˆçÞÙx¯0äÛ�ÄôêÑNùŠ»ø.\¶r1¾“VÏX0— ›R´™¸›“òÐqà8t …­†à‘ûþŒ_MÄæ} hÕÑL§-’¤Q2O‘«‚F‹d£j鉣{p”÷ª–§™5ñéò¤d+å8—`?b l A ›öí0 ÷öz véÄßìô)‡‚O°åØuIúbºHêÔF ¶cÉagÅf] ‡a!'ÈVF#ßIG’ajÅE—„rîžÚ¶aùê5˜2`$¢Œsðå LÖJ1µœÌ�Üúðc�­ìØf,Ý”‚XJà ˆ•kŒÉ×?…ÿ=þJçàr d³fbó/Ë‘\â‡>Ç k¿ôÍmpåì9Xþ^J“®‹ÆûS�c'oÃþ ôÔ‡êr$#’;Ã}ßÅ‚­©êXOÃߣi‡õNwqtCÛ–ît\#qÙ­sSŽn´gáçP­æ¦�*^/ù5w…¼*n̸†Ì¬ãxóýøö‡…¸|ÊÕèׇ@Áï,”òF¼ù®yÍ•+àÖìÎ÷ ;lN�­ÜZŠÞÿCŒe”¶¯fÜ2̲åNÄ�[2×ÃúG)Ïßv´ûsÍÂ|œÅꎶy/Écœ^×wìÊàs­#zDx2Á—^;€@Û¯|û˜ñ/8A¶ªü,lKÌGD·¶ˆñs‚VkZÛ:ÚØ =ˆÞŸsÝj‚ó¯)¬nÖ@6k1¶¬Ù…¤b_ôØ�…6sk̹§+¾};Û÷§£mtkDäMÊá\d'©`™bû��,�®ûç;A¶²Œ|·:žq]1qHGè‰ÁW^Ž{v¾…—�m Œ6Æ'åç_ìÑ'^=gˆÖnýz·;ít…„ÇTñD¸�Ú•wh$&̘ŠKÛ©LYÊ6,å[„6 2—À´<‡56«Ì�RJ:í8�¶}xoIÛLºí m±m æ}¢ÙŠN`SB*ºöFû ¹13{Ü ²•æ`Óúß�Ðãú·ae FÝúW<¸ã^ÌßÞx[ˆ‹‘öñgn߀�Õ[ñKJf1ÍÑ×E„GÕvšK»‰¶³•Pæ´/×,¾ºõÅmÈF>­^õ!t‚ëc!ŠKÎV½§àÉïaëîƒh×¶ ¢|É?>?<ެýêzQëOÙ¬8²crü;¡Oû’æËù îlMÄÞ|?ôí!Ïn¬^AMƒ÷RUgáÛW²©£Afâ.¬ÛW€‹¸é ×Ì3o¿qoS7•}*-�å÷`w¶ƒ†tVAK»ÑøËèEøä›å|-7”9fAzARNƒ1¾g_|Ÿæ�6‚Áƒ¿W4í ÒÄÑûzÛÐ*Øq1í±ÿÀ.TðáÚ:¢‚B)9�G`-1‘‘t5ëCÛh‡)iæï 0Tˆ÷�êJ˜¨*Rm«ùÓ“F¸CGŽ¡š7uÁBµ;3�2jò­K@Œ ˜ ´âsQqëX%Ow:6°ÐË(½Žæee!?ˆI©~çNï£6¾\¼½Ü Ìy ÌJ/¥(Žg¤R¤ù0bCâ©^ç ³m³™ªéð€vÚ¨og³‰+”ö-´ÛVQ^FÏÅüˆ#8Â>äOá‘|LëA79ׇ†òôå~ÿñuVagÂÖZ--sªÕ¸fÖ¸¹–iÉó ª(�Ò™\TAãÇ=‰ñmü)]©¿¦\ÐÉMY÷ ¾Ø— SÀl\;È.‘Ä]ÖGŸ d˜]õôãßžÄk7�ãò‹PcnÆûï¼‹Ù—Ž²/Š(Ùt‰C²iÅ/ïãÖû)¡Fµsäe¸­ë«xSp?GÈ­! uÍŸ~Ää8®F’W=‚G¯T⡃^Ä«W a܃ҙJFÍšcÙ¬Øö¥ëÖÙ¯ÉÒwpë_>$˜å Kì8\fy ÞX‚q7ÿ€›Åëgù¼ðæ]vµÁ®jcÊ_+ö­zó/´§éóÔ¤Y—�¶ç•âçw¦àµPûråMxeÞíen÷�3�]ïÚ˹ ðýæJMôaF$†íK°K•”Ó«�¦ýö­C­±¹×Bߣµ o½2k2ÕûÙ!$hz®ùæAl>ò*Þ½¾ ¾Ä\ÚÒ¦èÌ©×ÔWì‚L×· rðöAWå§âõÇãË£jB§ËìêmÍuƒ?†ÛU(ËöýŒiÿØe/°£FcñÝyîÿ:ÔTËbßüொ:¦6à±×nÀpJ®¹‡†á"¢ »º÷ǘhP+Ú·“þ¡~± wÿÓ×crucÅÞ¡ó`§Í™Ð´Xä v”u‘PŠÏþú^·{_5}ü+_p †S"ÍLu¯ê¬#øëß�`æ_oÄÝñü@.KÇß^¦ŽƒüÐS�ÁgÕå'=ü›={/>Ý>ÿ%l»lN?¼ìÈS‹4ÆŸóÕ㫞?çR\·={öœv’ÚL¼ßL¬¯›Ì›£%õ•ÐÒí«5í´Æ±,e5®¼þC¤Èú‹%_Zô FQrÍ¥ØÛÔ{*&Ĩ7J�²låÁW_Àµ½j´çzb ŽÛ4�ÆY¿áÖé¯9쟵»òV|}Ï Îk_Lºf8�¶µ®Õk��ºZS],ú¯×0ß„oV&bÖ­1NÓ7ôÄ‚§ì;»'K»zÖêÛ5Á•¯m¯¸Øn•aÑ܇ð÷Dumòìü X´ö^Ê“�:—aÌ)Ý÷â øSò®,÷ݼ@á¿H—9C>ÿóCxjƒ|ÔûðL”øþÅ”^›¯ŽqÐ�â­Ù�™ê‹˜Öì�’e×<8•òojØôÁã¸å-umbzö{,ørFElë>shÓî½{¶ÅXùÜ<ÜOU} ÁÓoÅšD"ØŒ¸ö­±ëí…˜½8«¾AQM^ò’݆ :N¥’ñÇà€ÁƒM䀠D-|}¼„™‘z$Iܹð‹„ŸO8%ݪѱsôï×—2rU¨,ÎAî‰d=°‰`Ü!Ò–GÇ Þ¨àWËZhÏÁFu¶r7‚wl+$€fÛòQM;4†¥ì”yRÚÍÃL 9–÷äQâÄÿøϤUÊÏ�íd"%2Xn<º¾ÂZìRœó •”–àxæ±Z¿¦xÕ·?ÿívJšýxúÇZLJJ\÷шï9z©ñ‹ïÙ½#x¢é�S@#ùPYö¶d“”’„¿aÑ!u‹,°]_DS²¬/�4 Åû?r€lJ-ÿ¼õög”•`FT„,eœ¡ìÐÒåsåÞ‘@Gï/Y¡Æù7gßYŸ(¡Büºââžw¬©ß9A6I°¥â­7Ú=ƒÓk° ˜ñöVAh‹4´§(ë±ït ›>Çç8ãí:UÅÉŸ:@6ɵ忇ï¶AqIò®7Ž®úÇí:t®Ò�j£¹øi�sìͺ5:¶âç÷ov€l5²t'!²k+¡¾HÖ�Áyõ$añû5Õ-—÷-Ò¸kZ\¨.þrS¾S<Û.üúŸ�ÍÇ+Ñ´­ÖZÝìUZÒþ4v]”r§0ÇdNj ›´Uºûkìkøi¤�‘£H¸iÁU R$Ø*(æ žF‹‹‹(ÄÓøs÷%Ÿ{ùq9zHkö‚?šùR›@' n¨ÂŠN�­.>ˆñÿW_§Wê7àÅ—5� ¤Ê‘Ñêó]êÕVS-ÆóU�Mò«ùÎXò«ý g—:?,ÎþüÈ›óvH1%Èfá /¬‡ȵdÈXº,Û†%ŸýèÙ|øþéÔ4i[+Pð_ \ãøÖóM:ž*ÿ¥T1¾ �ljµôÕ«ðñ>õ�h‰ŽVÀE{‹<4ÎgY#ÖðâÆ÷ÅCd3ël†<¹h®†�<øø¡�T�M±åaáO*(Cû6¼Ó€¯éoWs,À{ëÊ2oþß#]ê5zÍêïŸæ9A6©’òù[ø,IÝÜ êÏy]ssÖµY¢®n‡�²¶àïÔ›)áÃ¥Øouµ<íìíœ*í®ý7vžW¨Þ£"¥7áéûqïÄN*-¶]˜só3˜÷ô[xm™*¹Fÿqjà&WMÈ]M.ܳܲIJN�]T±4Ï=ë|~n\¼‹¶äÔ ËáÑø�ªj©5e©d“6[æ>¼\¹®´ö�QÓ"ÕŠö¿y;;@6IÊûfökC²—±E©ÕrªÚ´gƒ 4“Úgs3«Õ]¼ÂZ‰#‡Ã�rÚåÕôo…àÀpM½òŠ|,˜lUt:PFU¾T3°UW+*@\œUóaìëçK­Á­ZÁâH£ÕÅTã¤ý6³7%Ê–Y(_NI2 �Áƒï.¥ÔÊ*Ka¶Q­“_›Ò~q±j1¨š€…Ñ(ÁF ÏB5Qª†¢C‡ˆˆŠÁ¾Dªw”ÒÛšÇøauôPzô-›GïªÙ63zRõ%€çí)ÞO©®H ­º¥TC‡4üëF)6Çd"~&^KYÓ.ׯ£ò2dSªhÏ�ÅàáII8‘†X#œÄËŃG+¶ÖoZsRm4¹Rßå[6Ðù�WÑCc3,àÛ qÁj‹•ö†m6íö¢7Ò¿¬Áp®48@´×|}í_+g|ƒ)ùi¯whÿ¯ö˜îPvB1\Æ‚C{Öê ê¢ü@+Ñ�a6Þ#ú`¢MC!L6ÇNÅûOŽaÄA!Ó ^Û+¸›ízúêˆç¤ï«#U—Äç�¶„IMؤËP£K?¸Kk¥ÖwûÚ€@IDAT•°ë’ï z5Gµ«�Žsxµ[¯ªÆÚ«6çZøðžu®»Ò±?MÆêb·.JššÖ:ȾԤ4à¶L—Z™¯ã�¼nOd_ù ñþ²±¸ñ꫱`üCü°µô׿“Kݦž’÷'=ÇjÎI›­TlE+s§©ÝŸÎrzQ±÷ÙÁB3ÞoJ/×/eÛýœÎ6z÷êŒW_x¸Ñ.Du-'Wƒák€mìèÁ¸|êX„…a½’^˜!{És áåÄõ»°Ê¯fÿßÕ¸=Ä�vi)%ßè‚õKvÍB¹¹v$Û^9JÑMgzQßçBƒ)û(qR´Ê[*TÛh¿ðó¸ïÖþøôµÑô/›˜Úûáäzû JàûÌu¼’^X(oOy/¹¨´6�?J»çéŸ9×MC»¶Ñg„ú™9xùõOëíK6Íëpò�$,YüE½e["#á“gpÍŽ"Øþz´qÕÑy@ÜuÇ4ô‰àæyèEx|^?L˜×ÜU5E©XåòÏɳ¿áíÓÙâë©V.:„uGk¾ïM‡As·Ða/µ:²Q»F L{åUÚuu¾ƒ¸O³3ö•¿qìw@­6 ƒFb�}-‰°x|ùn¿ı‚]´IpÜ4áw�"íŽ~›Éý~ö?8H¡ÅÑ7?"? >d¥cÏúMxï?ßc£‹S§úš>¼©‰I;Z_=ºªãÚ[Í5·»›~IçvÎ`öõuðÙ¬xwêÚ´ÛYPb¶"ä;/WͼÓ|vï]× g�ž§¥‹Å>§OKëF£ 4•Úc»©å,—I§e^^£(�Æ�3�  k[]o‡º¦’¨Ç¼hÓ&›ßT‚[(A¿bp¤UÊ·�0-Aw¬«¼d×UVWÍ6ítÈ�Å·þ¯´Ò'ô¤k¢V4ó�Ë"Ƶ„~œ®yÍ<ÿö×ß´�d­VTmƒåNo£û7V£µæ\‹Öt,†)ñêª6\£áfœTP W <èкš� ®WU3õùV>Í \'}ÙZq=ïëš3|FÖ7Çš ´Öê³¼w:u覼SD‰µjqˆ#Gž‹ sÿ@GOñ @ô_þ©¤‹4›”—zRN~ÿûö3¤Ku”w�øÒÞÛ¸K&aܨKñÒÏ€rA@\+œÃçn0EEªR« ‘)ï.×à °¹æ_pçE…ØWÒ0È&ÞFyáZªxº~äÈz¦JÝêä[#Ïj©SAMJ  Ú(’‘¨ž�¶¿Q#GàÝ;{96[´Žª(ZÉ5•¶ £¥7åX¡m.Sº´V–+ ¶äÊ×ó¦tv•�­g÷Žg„âÔ£uö£Øê_ ÔYùT+ЏÞ.£4“ÖH6þ¸›VÂ?ü]ø2nÍÌt­@óŽMÀ†M²#/Á/ ¡�céjYÝßKú }Z°P(@‹»¹YßX¸é*Q3Õ‚/7“kj0¨9 »œkŸ ?Ó|ͩѮõÔä#%×f]÷^zl&†Ña�J«Aam0””‡NžDÕÌGkH�5¹m­`c׬StÔMQ �µúžG ΦµË£ ¼éÎb4,$¨Iïç³Hâyßõ¡O?EÌÔ©0û4MX༰1€sŽÎçy �–qüüÚµ%°–Žc'Ž¡U«PÒ�Aa‘ iǨzéNµ°R;–Î�—î@¨ ñ.Úf#´‹VÍ…Vf6?uMî�,›Û‰‚’|EZL-QT3– 6¥OÊKK�éÓ§ãÀ�4xº�RuTѤ-*¢eð¢Nƒ¬éÜ”ÝX72ÙLUVR@�MLĉQ휬LìÛ½ ƒûö¥ÇQÚgcy7:L(çÂÒÄöh‹ Z ·�HWQj¯L£›Ò¾ô)Ø™H­É˜ómà”\žWñCW}ÏR%•¼p—ºPèÙ­q51p^Ðæ °� ¶%¥Y£Ä—y¸dÌ$,úìÛz»�ý‡ ›ܲÿ®ê¢Žù§7nÀ×ü^×/D¢Ì›S´¤ð ²½®v,®(xY;øG#¬®ôÚ%›œbÊÚˆ”â›ÐS…´vׂwé1´æ чžxI!ÒÒDR­ñùÚ( #Òs…u¬9;ö�‹KÚybÿú7±&ݱòÖjÔ8–lýûf�DW¶Ù¶÷u˜Þ¶»=ÿV¬Þ_£l³®Á𭶃X-áä�à–`±HÍ è®“Wt¬`¦d[eí¤ÉG›;—{”D³PD¾²Ú„|JÖ‰í¶â¢lìK؆ø®]I ¥òÈ3Ë‹Ëd7¾ÈÍÔBCƒ¹[å…îN—h£kA:Lp‡• ¡‰ù,Λoj.„ÝmS‚ŒLú£¦•¹©©GȲ-{¾q¨�g`ÓhÙóËÈ«çt;f­]‚/Ò´kª•âÑ4÷\Ú0ˆèlzDÒ‡ï_� b—-w î~b­C5´mßI€ PÓ/^ñò(õ i›PŒÂžjõ?êeñ¥ézÖ�¯íÃxÿÞ©ÊÇÖæÏfâù�©Î.OâãM©œ•ægÇø‰ÀŠmŽ6M¦xÜtõ5èÀûyhD!Ö¼ú†#¯îÈ:¬Þ—‰®t"`i;WÚ '¯Ä†:ËZ�]‹»žø‹V´E�éÜ@àÖ«+F·5!)ÅÙ|‡÷cú¨ÎL…ʽ{£}5g~‡G>~ÞQPx4¬“¦êHvFº.:ÞŸ©9æ$ì܉‰œ>„…´Â¥ã§cøÐ1v@OŸ{áÄ €íÔ¯uǸ Ç#uéüEôœé|õÓѲy*kg^Sz>˜ÆõFW¾/ü"pIŒ ‰vçR·Ç•CÐY¿‹£o�æ6ôpn´&5¶kÃïÙŠ ´ÀglÆm/þæhÑÍ‚¡¨ßÀ3(=G 3ŽÁ�?t TÞG³\/I»Ì“@S#‡¨�ÐZ=3þžœ}€M”Usê:ÆA— _— �%B¯»Àu½>8�èS›/+ÕBÎi¿¸z°sƒ®.U9»ÖìN—éµ ÈD•‰eнÞñ8�üO£ÇÐÂ=_aØmË\+9ÎÛÍ�öö¯²}‹ÞÄÜ·3yZdöSÏâ¯#©[êÝÓ§†`[‹ÑN » |�ýÔãì? ÖŒÕè;ó#¬ZºVù }wÒùÁíâü€æª5;Õ5_¹ÚPNúh"x©Ùa±Ð©ÞN‘Ò<ªkî’k±ññQ|Òà�9÷ã¥B]^³£NµÓfW5*œ5&%Á“8Al�ˆ8ÇèØeÇܹø•㮼ín¸­† 9kô_8°o/¶Ì€$ (–F[d•”0‹Bvn&Öü¼¿¬ûž^”^£Ôدè™fñ7Ø»o?Öýº?®ü ß/ûË~XŽÕ«×à×_7P"m'¶oß�}ûö)6ÏÄsi8%ÉbbZ£m»¶hƒz2{nTS @~~.>ýôclÙ²‘êAÈÎΤºg9íµ•âðX§Ý6Ool|TR�ȃÞ!Eµ‚à›xõò¤A3æ)+§d]…¢.ZJ£ìå4FT¡œWÀó�—7#ðeh­,¤^9wœ°¹Û(¡¦Ð) žA7±Ù&›Mòsç9l%t®Z€Ä½ë±âû�ùû¤eÿ;lE¶KFLÀüÇ_ÃõWߦ¨‰žéaŠqþ/wdÚ»m…þ ŒŸZëSÓL±<êI¼:ÿoˆ³/Žô4]ç4Ø?`Ö¸,ZÝ©”2ã®úLÙ?‘ø3²lK°1¹H©n‰�…yS&)qùãÓå<ªxØäIùv,ÞvÄ‘wjªén?¦6<O\3ÇÑœ)j6þu» ²G°nSª’çi²”6ÛÂ5>8j5!Âq®Ý¯ŽÓ9O9Æ€i7ÿCÙ¤•ä«›ÐñÈÕ¿Ú68‹ï\ó©óÄkεÈÖIšÕjè6¬ýÑáÐâ’›ßÁ`»Ð•O»¹¸g¼€l Å Xw‚›Ú|òŠB'‘~“à9 ·Ì}F‘à“S>r¡I×å¬Ì1‰çLDÔG%D¶ŽÆ­7ÐÓ.Ÿ1—ŒœpAƒlã.‚ÿ¼ø7üqÎLÅÛ9s±Î7B�G*Ñ‘]œ€øÀq#ðÏQŽÑT”ên^GjÑŸ:lÖyãªy“1%V•³éĶŸ�S»²æ�ÀÜ7ßÛIÉwó ÁƒO�G;íùR»–=…mkeyìAl|îR‡ý½ë¶sµáÉu»Ú@ûK¯Çœ.ê$4íZ®#ÚÔÑrÓ“Þûx½]zÒ‚Ëæ=‚Ù±jۦؾøxÞ8�† ;¿øÕ¡Ø:ê¾qG¼Z\$¾nzìï È&)EÇN4ØÎ�Ó5©üøöKûÚ̥ƧK¶8ÌŒ žx1N•öæò5ý„Ф›#ã¥+ãœÔ™Ú [Œ*EÆ�0…ŸbºG t0#Ò-ÄáÁòMv^† Æ·O�q¶?‹�MBÝÕó0rÖ¨ãsÉñøó «�o¤œó(HL„Wh¨B§'ÅIãú÷Çàk®ÁÐo„)9미ÿ£Ó�í?Œü½{Ïùñž>ˆ&eîŽ8ðöÛ(¡Y³–Ú³¤EÚÍ/*@qi�J¹QÍ!“ȱ™ÒjeeŠý2QÕÌ+(¤Í4^ÝŠK�ÃZA»@¾Ü‰JùÐ`hYI9¼yL?–E©·#´§æK¥�tŽÌŸƒB(ef¦í¶ª¤жZ¥Ùò¿ª¥ž  ´JX+²Ó©AUP q"+Y´!çaö$]9´ßæOðÏ‹j¥•ì7X±·VF.x{›(qGï¤|• XFöðó`Ÿ´IB:•e¤� Øeù(Ì=AcÙ"‰G°�/”ÒòRÅþøª9Yª¨‘òÔÓ�àñD”Ò8keYr2Óœ…Œ˜Â:€M³Áv¶Ù²æƒGÑï¡Wh£Mn? ˜ø(Qʱ’Šúå—\t—Û©b!Þ\1�Ž#ˆâÕ×ýy¦ärçÍ'�”nTBy"Þøl £&|ñù—óðMü¥ëèGñÑð‡¬qVÒ&—Öò¶%ÿF’R?³ÔfjüÕÀ0&ÖPQdŸZ;ž xcÂêÏ^Á¸>O¡ó¢ûߎÏz]‰ã%&´v~$&¯xÑ!!–�̇POgüß¿7áðê¿áÿ¾ImPµÂ•Îo>ýãæ©’‚dœïF¹%T5âŠ7ãÝ_ö×R½'‡?Ä®‚© a˜ô´º4!ŸÅ]uͼõöׄŒ<×—§ÃƒÏwLÂJàÁ·'þ4oò Ëè4ƹ]¾{ÙËH³íG"­/÷é·€xbþJôVÕ('ÍZ:ÎÁ;ÄâÁAS¯K‹Í1ý¸Î³xlt%ئ¡UoôNγa´(¹WL×¢í]¨�%ï:‚¢+cɵþ×ÏÆ²©°zÀ¯0å�ë_�ßGÞEý²-µ9h;°Ÿ'tÅ ¢²é‹ûŸ» ÷×.æHIÞty¤Ežä±CÇcußQ°rí¥=f•‚ê7³Õ?§ÅžC¥è-t¡�ñÒG±È¢@]˜‹»Q¿®#°ì1z£ýÇvlIÊÅ RÞ…yŸß…Äþ‡Ûß+¬ñn¨>ðÇÐKC`,þúÞ­¸›¯8YiùÒœ†²÷àÕ¥§$‚¢¶cü­“‘­Ã€­Î̳�تÿDÌë_ÇǶ|…[>ຉacbâ{óeoŽÂŸÞyäÜñ¶Ô˜Ñõ7ÔPÎö…øtÇÅ|7³m¿öøë§oàϼSšÜrþF¼´x ž™ÒžµÁ/¿�«³NÀæŽ`m™HOšÏ<&’¡.k�®˜‰£öX–´Ÿä×]ζq=v�SÔ&-݇`vÊC§F»íH³øºfá*d^Ai ê:ŒºçQ¬›�ެ3"bÀäÁï—b'ש޻�ãæî“öxfíÛ¸iñ‹˜õlV�g‚6üæ?þÛ§˜¶ê^Å)C›‘WcçŠËpŒÏ¨È0m1$|ò_|M­%ùÓ?ßëËD;âé|6Šó‰.Wü ;'%â¯ãçc©î»®±6Œü³Ëh « ’zÒ!â°aʯàøq[·+ß|–ðpEµ´íìÙð!g„ß'ÄôX!MŒeoÞŒl ~e­_�Ü]»àI;�eÔ†¼”qŸ(ç¦hKpÁ­%ÑÚ;:bËÌBÕÐjÆFðÌÝ“’c´<ÌÆE¢ÌfOz%àUMË*þĦ™”—c%wBr²ò�E{i¹¹¹ H&NŽó†8qâ8R’“�”œÈø1Å ¶‰Òháá!ˆŒŒ ý´ÄÅE!®môéÓÝ»wEÏ‹z¢S·Î”„kGÏ�ª¢V쥩¨˜¦§S��*§"'^O=½èö Š†Y«hì—6Ø*iÎ,¶Úh¯GÆ"Òp2Æ@Jѱ³Љ…ä‹ÿ/|*ó�.’mbI~ÌRÎÅ®~iñqìÞñ ÒRw³=¢V{¶ÚÜÑŽƒ ?kl ú£Í¶ Ï?=ï¬MÐINÑ¡†d+ËMÀ»ÿŠ­=¢T-Ôy)ܽô:ükéGÝÀ`'ÈV–»/þó:ÈlP�˜û¼‡´rõT¤úÄð=§C.~þôvükÝ>5“‰1+¡”^wõÁJ›‚¬ôŒ›£Ë0q>s]Ê@[©­•xäï�Ð ¦½ ^N�­»W?�G–®s´r`÷:×}œE·í¦äRB•µ¶‡F�Î*“š'’‚wÿóu$sQ$ÁL [ÙŠ3ÖSÂè.¤©Y�ÿµ¥bÙÖG¹ ß9€HG¢=ÒœkQJIW%´w ¢ ïšçH#«9:p¤éÚXþþ$¼³!ÑÞ$½ ;@¶"lþþùFDÒ�=Pßuqå=ZhŽÙ ´ëªO;—ãs®» ú5@¶sù"�qÚÄPDÝ¡¸Âž§{î9KÖÌ«NÚ†Ç?KvHœXè¥\ÙJñóçËñcš¦†ä�^ý¨þ¥9¨³m{/º¼÷žxÏ/K¡œ†>T!eó.$Êþ‚.TÝ…¿¼¶ËYVÙŠÒ±ìG:§Ò••¨ö ·r-&á­|‹-vzù Ò@¶¢Ã{ðʇ{õ-Û)o»7À1]£m:ªÒÚ3Hk÷ý'>›³”>¸ýHþx:@¶¼ä]¸í®UHTI`™šüµWªyÐõY3Ã8;Ÿ9P–—Žï^zøÓ2Ç0þs÷||—b_8pe¤�lû׬ƶlu"XíË)~]¨õìG#úˆ.oÁÝã£-šÄ™d+ËØ�_ ðIÐÚ.,«ÝöÒùO Ûé°+æÙ¤�Çfþ «úÔz�éDkÀ¬Øºxm}Åøíqßl䆧B0xXšC{] 7‹¯©kñ§çVsEªÿÐ(´Ó�lGÖ|…i (™×lS+­Ï¸n1J”2JÐø©å;ŽºëâHS"º :e¸bÊlÎPWµðÐ�leØþÕk˜ýšJ‡Tm´O–Ñè±UÀºÍÚ\`ÁÓž�¤#œ/( sCM¢­>šZ·F—Ñ£1úî»ÑeÐ dý5¾íÖ Ë‡U¤›*(Äc„ó›%iiH]´H‘\\9r$¾¤ä”n<ðôÓ¨"¨Ö¶S'n܃ÑüÉÆ»Ì›–&¢{Ž%MBBæÍ›çèã©§žrÄŠÜqÇضmfL‹Žbg”\«à¦½Š–ðÃ_¼¾Yùj£$�ÅB—ÝD¡rèf¨Rž~tÕéÎz3½œöÐÄ«h9U5Eê�ï¢ò~ ðõGEÝH¤"Ùîl£´¬‚꟥ŒS$‡e´¶= „xq‡Ô—(e8ÅGHËÌÌF)A��ý ˜¶Ö–/_‰ýIlî´g»$±]qõÌkѽ ?`ýiÎÆqЙƒµšžQ}¼áîaÅ— cÓÆý0·ŠÇø)×Rx�/eîZWSL\•âÙ”Žî” ¼VÉaÙQq+?ˆµ+>öíëPU™OÏŠ„-IJ¹ DV›~üñGüôÓOJÑîÝ»ãñÇoJµÓRæ¿_½Š�¾þ�Òv—NÝñÐýOž–~jT¼Žþëßw ‰hÀvŒ£ÔIF¨*Ú—béô2Tg#)q vg60õ슑FÁÏÊ—·%6®Å¶ôÔz  mÃËÕ~(ᇂ¬ûeaÓÁ§zZm,9ºË ˆ BÕš|+S±aÛ VfpͪäCt˜‰`�iÛK�©u”©Y£Þ³=g ŒJBå(?º’€_xYokMÌhÖµhb›Í-0 £º¶¦}ÈJ1ÏÁæ„_èr¢6;õœ�ÎváBýœñi5 …ú 0{çŸ}5뺜�9ÖT6ådhSÀÿÝ÷8ºuîÙÔª-ZîŸ/ü�ïˆ=J›×^~®ŸyW‹¶2�½öÎ7xý=‘‚¥m®nðäßï>™fNºÎô«ïsÔõëÈ�4õyèH4"ÍËGEÃßÓŠÂŒ|üº>]y~‹ŠäÀ¾”ü ô{ÒîÜf=ÓÝZ…`DG J¹¶Ú¸»ѱþŠ¥ÎâÔB3µÇŸM䳨ýù‡¸k¡ó9*´\6´5,Ô,(,ÌãÆ„ö‰Ü´ uÑ�NèÁµë§í?ŠÕÔM™À˜p 7#=3;SÕM_¯N"QbU@8©¨ÝW Í‹LØ~|Åy˜m8¼#‹joÔÔ®ùûHÉIÛæÈ�ÞuƼŽ::mBdëÖm¸{’­cû9âg32hÌ ô óB>=–&oþ �Ö~wž,}íãûbJ¿nžWâèþÝøäGuµ©í™"põ´xÄpb—å!iç.,ÝÞ¼{®©}¹–k íÝp>ºµ‘õݸvü Šä™ÖN³øj ÂŒYýцë_‘$à7ͯKVbUjÍk!ê³{‡³‹ $í &�ã‹SëõÔ�½8Æti OjHee§bÕ¢]H©kíÚÌ®‚;·Ag.sK³ŽÓœ}¼™m¸?ž*R�jxå¥\ëÇk§gü˜°ç}âUG¿;yÛ?ÓWü᫯¾:%–Ž€Î�5ÑN£F5¹-ñhŸI‰§c4]•I;o­GŒ@û9s=y2Ü)4d„s—å”HËÙ²E‘VË\»9¿ýkq1cc@‰Å@ cFGÃ'ÈþQå2”ˆyuºóNô_°À%§y§®sY–i^õ–..-æ‡c?mT -%Ød£=‰òÁ*’kV9òcФ—•î>«‰ ‰PŠVe;�qîbz¬r§Ý´*z­¦#wЉ ¸æI' ~~>JÛBH5Aºª*wJ£yÐ h9íªUà8=œ–”•h£4%Ъ­Õ $cYÖ‹ÀÅ’ãK)×J‘ˆëС�ÚÀÂÒr`ر}#|<{À·[+øyÑ+)éð W/w:PÚ¼ó$}e¥´ÑVBq¡(?J½N£¬ŒA×H4mÀñŒÿ}Ø–��…ç@VnÕVíhœ Äç>(=µuë{Øz2”VìÃ�4ZÃMœ|? 7Ü`nÚ~‚y5Àüš &Geò!-S;«§Œ–ÝÈqwÂÂFJœ†ìf]‹Óп4Y@G›ôm×ÍǤ„O Bñú²ô›¹×Àž×¬ërvæXÍQg~Ÿ¨.ÎÁ—ßéå‰ÕqÊúaãVM¥yc�è3óné TÚñßÿâÞïœê•3豈lü$Äo›jÂ[ÿßÞ™@GYŸkü�}ÉLBBd_dQѺïÅ墧[¯»­ÚsOë©=G½½öj[Û{ZÛÓÛSkmm«­KírµêRÅEÜÙ!–È2ûvŸç&„H$“L`ïŸ3'“™ïûÿï7ùHæ™ç}®eÑ«Ÿ^K_�¾úÝM²ú·6ì’—~‚ç·zSߎÕÚÐ(Oá¦C dJàý×Þ—÷»v:ôïή§3¼S»b¹ü·þŽTÛùÓ/õw÷í×—µWŒèýƒ‘Œ¸¦öÉsYÜc½Ÿ~-R©°¼¿23±²Ç¤‡ýv ~Ö¼Ö}³O¯£û³}½¿·eµ}ÝX·Ë)t&1ì Š~l™ V®�˜4ÉÜâ0ýìDÿ¶ ÷ß/ï!±´âŠ+äô§žÊd:Ýv�´@PK@ça hóÒ¥ækhÇɯ¨�8‹qwõÕâCù°Å„O~!Y›^}õðf¸EV…¶];Yñ¢R Ö.žÜ¾½mÕèðŸ`(Û4•,ÄÚDç·eÚ«±¢vˆj(ɤÇÎÆÇbI Ç¢Ûâ€pÅǹ_,ÜqøÅž¦¿ZeqFç¢;ûú‘4*Æhäþ­­­˜# ‚`66í0�PÅL_5Ÿ?OJÊJÅíô dµI>úp¯ìm)‘“fO·­ÇuI"„EX#(-0^‹´µ ’¿¸ ú|Ãàijbm×:ûð¿{ VÉu4lm@éë¸ò¢èéæ4ýÝ2|½ts% ”€PJà8#°cqµ4Ah+ÇyϼáZyrîfY‡Æäã&VÉIJÎFP‰­ëä±â×q†IOW (�C°Œ>K=v£Œéü¯â[èCJàØ ÅûýŒ7vŸ�ù´ývô„5s¦¹µïÚ%Ë~û[)8ñD™v÷Ýýž3Û;vlÝ*µ�?žíi?5ß8�¾±c?õøÑz`Ùõ×K ¶V†C-‚c­bÞ<ñC\£PÚŸA�ˆ¢R¤¥E:¶l_ee¦9ä>YÚ¨— …X/ç„':Ð"û1Šb×ø�ÃáÉB«Ô1KÊ 7[UÂTÜ$‘-iMšÒ@eKAmãqìǹMi)¦p¢çƒPL*A”†&Y·É©¹ËÃòUØ-pÎY0�Õê€øC:*6ÃÜíí­è×*Ûkà:+Di‘ø½Y»Æ"ë×-—i“O•1#OÀÚ’RXä�Bm ¬77Ûž"xü²vãV>rœŒŸ4ÍÌË%ðLÍ9ã¾Í 7Ò¸ZÛPÇ[Ii‚ ´þ›? :”€PJ@ (�Þ $Sµrz£=týT´!·ÉèÉqë¶}k�«B[‰¡ìÅF7CÜ(çŒ@<³g‚’  Ë 7 l¶$Ä(ŠBPKA„¤»ÏæÀ¨Tt§Ñ–Ä„4ì áŒ"™UìÚX2š„C.aæ§œ†>è³æöºð8Ž ×X ú\κ8\r,¥ZÉ*ž _ˆCl³`-ìÇã9­(/Åècl�ËŽ¦¨ÔÔ4Ê›K>�k­PJ‡ËÌ™S¥¨¸Dü%H¨ˆÈÖê�eKõ*y’?¬Lλø2™Ž4;—ÛÁÍ‚²Vœ3úà.öÏ—²â<‰…PÒŠ^&mm”ât(% ”€PJà³ lúçré«Ðj²Ì=L«”ÀñK`ÓòË? 9½ç6¿ûº<»";=ÇŽ_ zæ¹J€‰£~ôgè`)áFôEß±n�ÌZ°@Zêê:eÖ÷/?^‚(�Í+,4λl w`ݲe2lúÑé“ÜÛù$ОlÔœ92=ôÖþóŸ²}Õ*™‘¬ Ÿ‰¡ ˜µlÈ ¨@/¾�=”»B[sóaìLJ؃Ó+bD,c/³‘ •›ÙpŸ„1;„.Êd)ŠkÚPöÉ~l1¨d帟ÇäE„Äѯ�N8>O±Î‡Z°™Çy\¶¡¢™dðBJH‘h…ëα˜Ä±¦(æLAp‹áûm¥1ô_ƒ3�î¸x ‘˜ƒ‹°Ó=Ç0hˆ…âÚiÙ[/[·7Ȇš:m…R^6BÆŽ®ÖBÈÃèÙ¹{›¼ðìcR_÷‰œvæ…R5~*zÅ%L(D nºêÕÊ®í›%‰í­^ð{ŠzûÒÇ•€PJ@ (%pö\{úée=¦ß(�Á 0‡À`¬Gçì?�Tj‡<ö»…ýŸ@÷Ì:½¾²ŽÔLÈþlù()„ÐïÐX%<¨`;��ˆ0¹(´ñGŸt’lzã )‡ÖßÒÉÞ@U¿þº”!‰5J±%‡�…6¬É �q.ÊH׬‘�þô' Î?_Xö›É ÐfÇk\vÑEòÎu×I `:Ø, #«Ž¶Ä*?Fƒ:«Õ±Ê‰¤Ñ\n®:]j�Ù°l¨_hš‹&lœènëtvñ?Šh”ÞÂè¹Æ~lF\³´¡ÍåBÁ„Ý ]n”xBƒ`GAŽ"›_y$>Æ„JRi%c8–íº=سó17\ §Ñ(¸pçW3µ¿G×›BX&0ûS ƒÍ÷š›eßž½Ò¶·]æ"xÒ¤ pÒy¥qG³ÔnÙ.«¦ÐÖÑ*'ÎÜ&&O—Ò²Q²½©Iv5m7Üm zà»pêé“i» ЦúË«½«†^ÃÝGÏk¼ûszÿÈð#Œ¨½£³|"…µt(%��$>øí>ü蜋#¿ ÿ eqÝV|x®C (�Ì ô¼î{^_™Ï¨{Š@;mc®ºJXBÚŸ±}õjYÿòË2‚͘“OîÏGt?5}¸Õ#esìܹY;vûÎ�Ò ·Ü‰W^)[kj²6o6&ŠÃÑF¡-=FΘ!ÃáîÛðÊ+òöÃËÔK/5�éç÷ÕmÐqì�”Â%׈×,\ŒÙYý�éGy%…6‹%�i’”�(Gh Â-¸ÑÂèߦ¸…Çb&ˆÅðÇ:göT£³Œ‰¡tÃÑEFQÍíBye;ÿ G9*úªA¿CÉ' ø>Ì6b!PdcI© ·ti*Å6 Ä4;D5”M otâ~Š5¥V¸Ý.$–z�«-c-\×”ÀúÐÇ )©ápД~:íëvºqlc|“í�õ(g=I&ŽkŽëÄzQ,Š'ë¥vãG?Ø(çv\(Ӧ͔mõ Ò¾¯I<.¸ôP Ëõ’�Ž�È÷4C7l\u(%04 ðî>z^ãÝŸÓûGž@éð¢.¡-é§çÐQéG~ezD%04Ä£] åƒ%Źy �À›7®/ýáGëvëõÞõÚé%� ^?éÁëŠ×—ŽìH—Žf*´1etÝ /H[c£œzÓMBk¨ŒI\ <ù¤TÌž}�5�õoX¼Ø”fv´2_6÷�ÓÑÖÃµæ€Æ3ɰ{±vÑ"SN:õ’KÄÝgš)…ÐÆ‘îÓ–“BÛ9ç�‹Ì„¬XµB¦L™ŠÄΓ�ÈÅЄ!°Eñ|§ø‚c 2ˆZqlQˆZÁ@PBµš[vËΦF¸Â:9R8¬½Þ˜> � ¢\¦<u¡|KFq�N¶H‚„2n“Âb‰Xéž,SÅ}<悎ýÒ\º\.ŠoÎÎ2T<ÏOéN¸ßnˆ`DÝí�‹X�ÅX¯DZùG‡ ¢› "] ÞtT� Áé$#K±V¯yeCuMg0Dt·4m[!‘ö’P!%)ê!H‚c ¸‡Ò1ÅEÃÍë˜-cpPÚ¼æÀ¬º«PG‹¯áô`:3¯q¹C`öÌɲ¹®Á,(l�¿ÌüþÌ�êJ”@îàß�áŽýô&M¨”:ÚX:º=ƒ©[Qu¶òo“âqãäôÛo‡�'«>¤ VÒ¿M™¸Y‚µ×½û®Çú7Ë�½Z€Dçèk®‘}õõžÈ‘{ 8¯z‹�ŽÊrßÍo¿-KyD&œwžq&~Vµ[ÚÑÆÓcŸ¶•ßþvgK³NAh@g�ÕŸ¤9'OE¿²°lÛ^-ÃGä¡?[HBñ�ƒaˆKVü‚öˆÏï•XÂ)ÐÐ$†þe 5°ÃYfu øI£ÑJFëà`³ÅŶ;%{÷Fdä˜Rì�7_)¤…BµcbhÂU6˜ß0�g ÌÙ.»wï6"Vž}ÝàjsBXc¹gGGD"Tê0M0Ä~p6S‚šþ¤Ž3§�A˜sA@ó V×�}-(MtAD£`Ç va$›†"!©(a ŸD"¨Õ©pð‹×m—Š‘Ãq¿@ê·á‡3Þ*{víƒÐƒ�—# áÒk“ؾ�”–çæ§˜ú‰:Â;Ó©8}ÊLY�þwá@ ¯_7uµá—B§L 7¯áô˜†k›×¸ŽÜ!pþ9så¹…¯':?4êØ»EüÅãð;U?àÈ�WIW’«BíMèŒôùýã¢óOKßÍɯWàMGZh‹Á‘hmß°Q9¹V]”ÈU¼nxý¤¯+Ù'€(ä,.6%€}��âTíÒ¥2íòËM?²¾î—kÛ±7Ù²G•1H"uÂÝ5�Á̉pÉQÉÅñYB×ËaÎ=×ô­£»­a ÓqÍQ�<Ô`ê¨m¿£ÍƒS_U•ì~ç)=ë¬CmžÑcYÚV®~W¼yNñXàFk�êÚãb‹‚˜B\`0ˆÃÖÑÞ�ÇÐÅ͈[SöIÕ,�rÊ<Büù%RTj—Æ&‹ø ¡¨™~k6(Œ;€X3®6öPƒðÆ3¸Ò’Ö”äADs ›×ƒMŠdPÀbIãí/QÅètF KB¼£Ǻyö‚kGÄiC8§Ç¬×—›“ #C!²±d”! ì 7|j¢ý>†F|6¼ è’üü ý°çKEy±T×l’&„(p¿¸ý-P¦js§Ä3 ¥¬ót œÀ¼ ¯èÚ˜*Û±/‚?]*¶ ­Î ŽŠl¼vy §¯m¹E ¼l¸\rñòÂËo›…Å#íÒ¶»Z¼£ð»Ó§n—Üz¹t59B �¿5ƒmx³níZQUå(9÷¬“»¾ÏÅ;óæ}^þú·ÿ“êM›Ìòí;ð÷rçãzGˆ% z'§Ñ£u»DBûº6š8a‚ðºÒ‘}]A}˜:Èê¿ÿ½ä#rúm·™àƒ>ì–³›xaüa �\S.¾¸ßëlBÊ*Gù´iýžc0wd6ŽÞmÝ�í+)‘Ón¾Yê—/—žx”֎‡×Ó±hmyz¥Ž‚(×�.ç„¶ —ËpLN·UÖ®{ß”e:\ØâánƒèeÞ?š¥�)LÀÁ;*ã{V‘pH.‡±Ô:\15”�%›èëW�hÐÔ0� wY%˜Þ»xP«›Hºeâäáâò¸MÒ¨™ª®ÿ˜2…bƒÈǤSŠh¦7T;ö‡ãqf�D)+Cv5ï�@G›tà8n㎃XˆÒÂâ)))’<_žTŒ)cªFK<‡ÀèÆüô•£�/Ö2ab¥Œ­!­ˆÇ]¿~½|¸n¹4ŠI‡·‹¢ÏœŽ�˜4aªœvÊYòÞ‡�oüb(Snm ‰;Ï�Ÿ%¦Ýâ' ó‡fàÓ”€È:ŠÙ“�å¢t²uÙxMóÚÖ‘{nü÷ùR³¹^6nÚbÇ6 íÍ5ø=Ïß“Nü››Ÿ‚æI]ѱOÿÇáCØdâàž¼ @¸çΛsÖ1�~]èhøŸ> _¹õvó·,§hÀ› ×:¯w~­C (�nð^—×|¢Çu_€K^O¹êêvCò®)�8ñ°ko®­5"[Åœ9Æùt¬¼GÎ9òö/)U§�&îüƒÃl P©~í5™>~_6?*Û0qÔ %“×l4^çR”3ä‚a t·±Ô6=ŒÐÖ­”›å£ï\{­ÌyðÁô&ýþšUGSDQ¼‡› t�¡Ÿ„,Š\1¼™JAicI5Š_L�A@cO5ŠqL)ƒ( MàS?¸Ïø¢Û!ŠÑÇì€Ä3‡}ÖàŒÃî’t@hƒ˜gCYf Î4Ê=Ý®„„,!‰ÁÝFÌ�ÌêDI¡¢ÞX!ú90§! é*uIŘr¬"Ürô‹‹CØK` jâàxœ™öB>–ïó e´Z¶Ö[Í> P°cN»î:1˜Wˆ{þ|ŸŒ?Fâî¸4îÞ!{š÷ 3’úf¤ß?¹=v¼ùºÿ�]`[»¥óSW¾a¶ü‡m�]ô[% r”À¸Ê ÂkZGn`[…û¿}»üì¡'壟t-2Åß{¸éPJ wåe%rï]·¢ò¡¸÷�r虑#GʯyXîºû?¥¡¡¡kez ]Oê% "PQQ!?yðGÂëIÇàø”£�ÕhÝ5…M¯¿.�H�ùÅ/Jqee·g‡þ]\Y,Ýôæ›2£b“K½EE9Í%'¢­�d3 ¯9“T×.\(…cÆÈ”yóÄ MÇmÃôƒ.‚0kk“öšñ�? Œ¬ m”iÚñé—I…˜Æ¨Nã\³1¥“h�ÆOº)¾Q�r8\X<œiEâ‰�$˜JŠþg¬Ô„´Q�½Ô(®Y!ÖAă0•4¥£˜×†mËÇEÄ K¢3ð q­³FÐ+.™´‰;æ†P´f>tãí6”±²Ô“�ðSÎÃP†`, Ö ÊX)–Aôs"0�ÛSTc�5´�ƒ G±�¡ÙÙ–·–5!‘ýâ°@¼ÉÀZp�ÏäûqŽpéAh´ƒ�½Ãb)z¼ÃðXVñsÇí`ÀÅ=w~_êW]ζ㆞¸Âèd£ÈÆkZGîðÀ9þ_w}UÞzçcùës¯ ÍÃîÜ]¬®L ä¿Ï+—_r¶Ì¿ô\“xŸKêóÆâMÉÿ½<ó翘RÒ6¼ Ñ¡”Àá äÃYtõ‚«äš/I<ì�uø£ß[0q´â G#ÜKÍè¿CØbù”)â‚ciå³Ï —3Ð, }Ìr•tÕgÈ[¿ø…PA—‡~u}L]­Y²Dæ^}_w9*Û1qÔÞ#q4“…”œp‚œõõ¯K ÄHºÛ&]x!2bbïV:ÊùÒé£S¾õ­L¦ÿÔ¶YUzè8 vÀ"ŸBS9ˆHì¿F÷šË�þep´Q€‚‡ÌˆQ•!ª…Ìãt¶±?¾At¸=Ôà€c™(þQãW'æ±Â¹Æûà(R9!^9\GÉ&wgòh¹ú¡ñ{;��ƒZ0¿ ½ÖX.Ê´Òú±%± KYé)s"d�BטÀÚ)„?H}p°Å±=“ïpÔQ wYÐûË‚sä¿TXBmû:ÅC¬É q.L u£d1k•¶–6ìï0ëµGÜØÖÖyÞ<Zòtd�ߘí–;å¼³>///~^Ö­_ÁS]mY¬)�A"Àÿc|ÀžlZ.:H�aZ:ÂÏ9ódsÛVß$5µõ²wÂ~ðûU‡Pü Ö*à |R1j„LšXÕÙ�xˆ‚¡HpËÍ7É�7\/kÖ®•-[¶"°l¯ùûxˆž’.[ öî.DïÊʱ2}³ø½ŽÁ'�.Ýòç? ™ùp/m}æYõÐCÚµK(²PX9VE6v òŽbK@g_}uŸ¡×-[føôÐç‰yC–ŽÚ ´qyÔ¨øsÀ>tË‘6…K®²‡s�}Ú>ùÉO$§„¶p !¼À.ôXsÙXÚi� be0¤±l�?PŠ`Ÿ¯€U¦f°WOjª�Ó‰‹âu„0ü µßÉæ…ÌÍ TT¨Yª™ˆ2…sâìׯRO–—R8c‰(¾Wœ 6Cö§3.jÅãpÙA¨³²ç¶¡ø Ìœüc‚N4ös£cÎ8ß°N&¤F¢AlËÒPöêtݱ”4„RS«Ó Ó]\:à¦ó9¼âö»$Á¶pçQ𠶆!ø¹;Ka±8‹œŽ¬àuÞ(²íÙÓŒ”×V#îfý@:¡P"`ÃÿÑùþ).nzWh2Ýù¨3º\xÓ¡”À±M€¢Á¬™3ÍíØ>S=;% † &GÅ �óc¸�Î}þyñ”•I;Ä6;‚ÎDï²–÷Þ“�ž|&·”Ož,#!´ô§—Y®3;w®,Á¹¶‚GAJ• ±õý÷匯}-×OMLé(´¦þŒÀž=Òº}»´îØ!m^[ëëÅ�¾‰pCÉæßýbU\æþúצ\ÙÈÒ/Y¢è³ïä6ýYu´JaI>Ý‚ˆ…P–_º½6ZØPJGKIÑ1 ËEÂ\å¢(Ùä/m«iVO[Ük,Ù„X¡³ E8Št1ÔZ,Ó"×ð„éï†]L¯7|oÇ<´¦K2™*ÊxÇÄ !-I­½£Á,;ít±¥@ Éù°-fV¬™i¥»Ã„$`9XKç¢À^mñXÂ|JIæ, e¿+êScv(À±u×®ÝÆ•çÀzL3~ì‹‚Q>,/�·]r:�]2e#FšÛàEgVJ@ (% ”€PJ@ (�£A £¦F|UU²âž{dì‚x?ï”gÏ6É‘—®X!v˜hÆ^u•ÌùéOeç[oIÝþ ïüþ÷â‡WŽFùeS§îh¬=ÛǤck‚6ÂÕÖ—RP–ŒŽš5kH$¯Ò©Ø—ÄÑp{»Õö55IÛîÝÒºm›X ý°ÿZ D4Š‘%¸¹KK þM�>*ó›²·Ó{Ìü¬”�¾4¾ø¢T^sM¿_¢¬ mtsY\ðŠÁÅ„ðeKAÚŠRˆr@X‚û ,ÄØ-†2MSJ §Xg�(„+”wFô¿Ñgf•\jmtŸÅƒ! JÈôÙ¶®/¸¶’pk9áì²ÁÖº}Ì pùЖ%šq1B„,(°¡Z¢±�./–…šçñÝ`t¿™0ôbsÁíÆZO†*pP´b(“K)°¥�cyP¯]èáfo˜—=×Üãè2£#ŽßÓMç€ØFלBšÛ'q?Šƒ(jRÞØãÍŽ@³VìϹ)Ô%é–Ã}j‚üžsPPL'™:qÞçqÂxÁ)&!0†¢!退gÝé5ëW% ”€PJ@ (% ”€PJ oZׯ—}kÖ˜”Èz„ÌûàƒÏV8«‚ ›ÞóCÅ[ýsÏI-ÜLëàb‡ËK)R¥ß×÷m%Gn+£§ôr8 t‰‰pdm\¼XN¿õÖ^¶©F kÕç>'h&½�Ï:Noû ÖãìÑC©k‚.Œ¨q-±°�%8�q7Ü ÅH^ÍÇkG™ JRÏxê)™ñÝïÊôh[q÷ÝÆIM‹™ýY•k×~¼³?kÐ}”€PJ@ (% ”€PJ@ (%��º'ž�Ò�™9òÒK¥áÿ Ì8¼YÓ_!¬ô}úñý_ýhˆ?ëÁÍs›ëÖÁ­·�†Ã–+#ãRe¡^yå %í]½ZxÛ—b6G "[}Ýò�¼ÝŸ‘U¡­? Ð}”€PJ@ (% ”€PJ@ (%�)�QW\!›7K>D±Hs³iù”dÅÛþï'ÙZŠ_{<ÞõžO?ǯ(›'ÊQw×ÖJ ˳PnšKãó<¨AÿU÷Ý'£.»Lfýð‡]=ÇÒë¤`øJi/‡e«Š}ƒIDAT˜ÖÓᵎ·Êk¯•ñ(—ì>"--²òÞ{�X9sö|¾û¶Gúþø¯~Ux*#+BÛ#�<2TÎWש”€PJ@ (% ”€PJ@ æüøÇÇÀYd~ �Æ¢§ØÚü@¡Üuê]wÉä;ïÚWq”£W�§¼\já|;áæ›»Ðø¯IAÝc®ê_ýJÖ|ÿûR…þdó««Å‘Ÿßµ�ÞÉœ@fÅ«™Ï¯{(% ”€PJ@ (% ”€PJ@ d‘€Ãï—Ù/ùðCiAoºEèO¶ }êÒcÖ�~$«ï¿_sä`Oyöã>i—ÛÎ7ß”аp¡\„TÖ“~ö3ÙÒðU…¶ÀÓ]•€PJ@ (% ”€PJ@ (%p´øÜp6¶Ï!E•·WÏ9Gö¬\)%HÜ,:ùd©~øa³´-O?-vŸÏ„@¶m“·,�wo¹Ef>ð€\€Þgêtd‡€ mÙᨳ(% ”€PJ@ (% ”€PJà¨�í’åË¥ œo â=”—NA9é'p°…ÑmÕw¾#3!Ä­FH‹sæHѬYòoHm}å•Ge½ÇòAUh;–_]=7% ”€PJ@ (% ”€PJภ`±XLˆÁü�Å…@‡·¾ðñVTÈÒk®Wi©¼{ÓMÒ¶aƒ\¶j•LGð� ¦:²O@…¶ì3Õ•€PJ@ (% ”€PJ@ (%pT˜þmèÑ6½ÛÜØv/Y"ñ@@Î@ùè™Ï<#ÞQ£ŽÊºŽ—ƒf%uôx�¥ç©”€PJ@ (% ”€PJ@ (�¡@€ýÛÎ{ñEÙµt©¡\Ôîõ…eù5ªÐ6ä_B=% ”€PJ@ (% ”€PJ@ š@é™gú }tPhéè `ÕI•€PJ@ (% ”€PJ@ (% Ž7êh;Þ^ñA:ß`0(ë«×Òì:­PJàÈàÿk¹<��¬ý¤&——¨kSJ@ (% rŒ@Ý–í9¶"]Ž8ö|¦Ðv/R(t(�¾¨ß¾E~ü¿÷õeSÝF (% ²@`˶FùïÎÂL:…PJ@ (% Ž>�«®ºêè/BW ²@@KG³Q§PJ@ (% ”€PJ@ (% ”€P*´éÏ€PJ@ (% ”€PJ@ (% ”€ÈK #=O �ºººô·ú5Ç äååIâzu(% ”€PJ@ (% ”€JTJ¯–®5 m™ì¨Û*% ”€PJ@ (% ”€PJ@ (%p€€–Ž`¡÷”€PJ@ (% ”€PJ@ (% ”@¿ ¨ÐÖotº£PJ@ (% ”€PJ@ (% ”€8@àÿŒû?¡¥CïIEND®B`‚colmap-4.1.1/doc/images/sparse.png000077500000000000000000040755471522646662000170470ustar00rootroot00000000000000‰PNG  IHDRY5”™C$sRGB®Îé pHYs  šœYiTXtXML:com.adobe.xmp 1 LÂ'Y@IDATxì�|\Åú÷ñl²ñl6îÚH“¦i›ºQ*´¥Z¬¥ø.p‘{‘{±.—ËťʊTh)uwMãîîÙ¸»¼s⛤‘F6É&y†ÏäÌ™3óÌÌ÷lÊæüÎóŒJK Dˆ ã†À/»÷ñsÝtß=šsA~¶}ñ LÌ­àâh�Uk×÷è—Ÿ—+kkyý…#ùò¢ÕwÊëú+TUUÂÀÀ°¿&tm(ÏMAȞϰüï[>û¸³¿ÁÆÕ ¶ž¶‹’¢b,¼}É€ûôÕðȉspuv„›‹C_M¨^É´47 ¥¹:B#ùÌvÿ¶—/¯^àŽßžFеKxü¯/ÃÎÞUUUpv�&oÛµÐÒ\ÊŸjhšv­æË•%¹0Ùô¨§ŠÞ dfåÂLd]]�ÞP- D€H‰ á-ºúÎP°e27™Te£ î:¦,½oXËNMˆÇ‰ý{ñÜï ÈNC•�•ÙùôÚ¾¥¹†¯×ÐÔëõ:U"@ˆ ÊE@…DVåº!4"@ˆÀ­ÄÄÆóM|¼.N¥¥&ÃÒ@-u0pð—±çÿ¶ÂË/^Óäu\!3%‰?wpuïVßÛ '°ÆÆEbîœE½]¦:"Ð+�ÿ=u'î}á=^híµA•œÈ*27ëãêÀ«*²îym?þ̽nœZŽ�š j*Š ¢i„ŠšzLñ�þuýìA˜Ù{cÿÿÁs¯}�€½C¨ªË2 #v3È0 D€"@&�º’l~•º";…¬öV"kCM>?Ž@ÏJ!ã‘"@ˆ D`d ¨Ž¬y²Nˆ Š&À‰«ý ¬U•eà2—JK%ˆ�CûoÏñ $Ôv›N}s ~üèC\=q eÙxùùç±(Е5Õ¸vé ~Ýþe·ö½�p¬±ÌÃ0==µ·Ë|]~fZŸ×èÂä#�•šŽ¿o;8h�•#¥�•³ãêh‹�?ü„+ò)9#SVìvïë�»~—'Rª­©Å¹óñîûðË ½pŸ|ö9vþò6=´…¯k«“> SÔºScãeŠìÜD ,:’‚›jé”"@ˆP‘×N£(']Y¦3êóÐÔ1—•â>½X¹18q•VEÑ&;D€"@Fž€ÚÛ,�ü04 D€Œ�â¢<åCln�úú:Ô1Á´¥º¥U°²µƒ…¹X>•ìì„G„C¤'@5´03pëgŽ’ü,ÔV–#`î"ˆ-¤oÐVeAÛ¨÷šå¬mÀL¹Ý› çìFMe¬œo¾Dçã„@ca*ÔõL†=[N`ÝþñG8¸û[Ø»x"øÂ)¸zùÛî` ˜šš`õš•ÈÉÎBLl~üy/ZÛÀÂ;v3õÍ�?B…ÕØØØv«/'ÜÜ-Äæ0[Œ—)÷;O-��…>·…££î¿w Y¨óêòBÔ7µ"2ürò+¡†V4—¦ÂØÂªÌ›u˜‰X?{ýŸXuÿðBÉ s¶{xL8,Í-¡'¤�xö&Óˆ D`\ˆºv¶N�ëu uòjšÚàòpSZš4Z”@@‘V†Ë’ú"@ˆP&.X™îÍ…"0 ŠKX¨M¨´µáÊÙ#P˜ÀËÝÚZÚ°p’Š]‘—Ž!5!š}x°Pªêíˆ ¾Šõ¿< 3¤!”‘@ÎÏÂlÅsÐf•"Rjb,öüø„ºZxá­+Âä�lp"ë¹ kÈ‹N€—±ëþþogÏŽï‘”•‡ˆÈx`Ó#˜=k.²Ã¯ÃÖ} lݦ i¬ávª,–zûšY×Ô¨÷Ï=‘StŒ?÷ÚŠbÔ²0ÂQqÑ8ôûa,[4Þ3áÈD|UMÚK£ ¢g-©BSm)´„=÷bí '´Û½{t?«ÙÙ)°³síoj½^KŒˆàë=¦õ¾'m¯�Æ ²¶¾BÁŒLC"@ˆ D`t „†^ƒ““Œ�÷=ttgI£"@ˆ ƒ%@á‚KŒÚ"@&�ƆZ@] ¾ àêìŽè˜H×¶ËW&4µÁ¥ó—`a〫ÇB¨oŒ©sW˯Saò°}äK… ¬=oüã•çñØýwŒ)L[;{L›±ÚÙ—0mÅrdfáê¥ËüœþÅ‚}ÜõÀ#Ð3³ÆGÌûvß®]c:×*&²ry<&#ËX9B#3˜³=s§xÏÄ?ßzêBÜaªš�ŠWS˜5—8�µ8í _ì/¯ÁvV{N`½rùè�l$°\VöTXV†ÂRix{eŸ+Í�"@ˆ:JãÐQ_¬t“ ˜C«ÒÝš D€�á OÖá3$ D€�qO ¹¥ª*jPW×BBl8+üåkÊMO† {ã–.�ö¼Ël¿_u˜ˆ/õzz¸c µL|2²â#PÝ܆|�7S[SÉ^@ˆ€×ô¹8òÛŒ×?øšªZÈÉJƒ‹»çP‡£~#@àø¡#00ÔABz6jذ~’Sðûïûpæøüqø,?êþ]¿#øÚ ì<¼wfA&J �y³ÿöëNÜ»i œÜÝÚ�Ú"@ˆÀ8"�—� k;»q4cšêD ÐÎ^žTÑAÅtl¢ÏL†´"@ˆ D`àÈ“uନ% D`ÂÐÔÐáVn�ûwnç…VÙbeëüŠ’‰¬šŽD`ðª™øÅVeL>žn°uvÅ,fV–²3Ò¡ÕhiâöÛfaó_žæ/5·µãÜ©#ÈH•î«$kÏ#®žÄ±]_u­¢ò(X¹v5æ,X‚©n^0 ðËO¿A¤Yƒwßú'¾üögèéðù¹W^Äs¯¼0J³¢an&P]^ÊWÅÇD!-!‚Ö›Ñ9#‰ééR¯ÿ1š ;ÁpkÐ¥KȈ ëwøM°ÕÑr”›€  #â§ØVÒóûºrÏ�fGˆ D€Œ7äÉ:ÞîÍ—"0Ê‚ŽþkW?h³pŸ*h‚©Èv”g@ÃMd¬[‹��ÙÓ²sQQY  Nœ»€‡ïÛ(ŸËù³§qáì¬Ys;ìPTP oÿ™hhiÃW_~}!ž|ô!y{*(�´¤4´+ÑTÕ[± Tõ, ª+Ý�U9f8ùf‘ôÛþéÉtê o¿³„œìLvÝ¡[�줶$Ÿ/ EV²*:"0Bjkk! GÈ:™�Ì8¡ÕÑ{ú˜ È�½Ž*I¼–n“ñiб#Ð^_ж’dhØÍ»IÐÈD€"@ˆÀ„'@ž¬þÓ‰ Ã'PUœ‡V¶—aC]õð�‘…IM ôªt¿S„½ûoYqLŽÎ¶ÖhilA|dx7�õÊñ£pbûµšÛZ"`öRÿuÞ}åxà¶eHMˆ…¹¡n[¼`LæLƒöOÀÙÝzÆ6¨im�š‰T4µûï0Œ«%Á»ÐRMþ·B¸gçÏà„V.qkðÅÎ8�uç/?ôi¢¶4\ÍTQ�.S"“� ¬“íŽ�ÞzGS`}ê™—±ýûŸå‹³ñž ïÎH%ò ,äg¤*ÐZ§©?öþˆàë:+F±ŠùþÞýŽØRWÑëõ_Ž‹'�÷zm4+UuLI`Mà4 D€�IJ@ím–&éÚiÙD€�IE 8ôt:ƒZwm“œ¦ø"«® íº¦é ÕŸN`}tÍmxê•7dU™™ÉË£]((.ÅáSçPY^‰�«— 63…POˆ 'aÏŽï 00Â…ëבš–�ßwý‚ÿ~ù-ŒLŒà7{:JsR0sîâÑž2�7¦fVP×Ô�Ššú z ®©¦¾4ôŃ뤤­O²¹Îž#Îqμl¿ÜNoâEÎn(aaI¯»“ÕaÞü¾—„"kpùVéûÏ?Å´YŠ{ˆ®®%€Ë”ˆ D`|°´ÃÒÂ,Ë’¶Ð@V‘ã¹ßwBßȘe…Ú××7b‘S¸ÜùÿP…Ð�1 K+<ü¤t«Œ¾šU¥A]ÇjšÝÿihlYî«ïx­ÿfëWøfë×Xsçºñºš7 D€" `.XÁ@É ·&PW&�®ÉÄx(}ëÕŽm‹öÖ&¨ªkñ“HMK…‹³Ë 'ôþ«¯ÀÝÛw=ð ß7#CêÝãèè£7(�Dˆ ‚y²NˆÛH‹ D€(ž@Nr, LÌ``J^ÇŠ§;ù,^9Ù™ÉxðÑŒùâS’“ù9TVW"*2Ö,š©H„€™ÓPUW -üû…gàéåwOè4U@Kµ Bkd¦&c㦇À ¬Ÿ~ö¶mÝ>æë¡ ô$P[%�$'NÞ·õ¼¨$5Í…PAM¯w�òìpÔ”ÁΕ’̸ÿiä&†ÂÆ#€o´|ùÝøðÃwÐÒÞNh}b‹4w‘Y“X^»fyÿ‡pµ©¡ÅùI°q&ï’!à£.D`B·”†Š× œáìÎ=Ô-_z{B­“3º8�õÝW_Äîãçx‘•½?‘utgG£)#IAÄ–ŽÊ85šÓM8‘5µ¨‹æÌ„‰°{웚Ò) D€�nHd톃Nˆ ‡À•sûá3m> ŒDƒ^T|žÌ¥{e’È:h|Ô¡œÈjçàÖÇUÅW×\¿ˆÂ�ß�ÅKoAoöBùí|yçÖOqúØü|ü"Rj€ÚìDDŸØ�ûCî•óðôõ‡­“3®Ÿ>}µ&Ìò^˜°?¸r[£UhcqYs´œãpB«Ð@Œ ³Ç�›‘‚ O¼0®VU’zzæÞÐÖ|‚Ñ^huiªX˜íš¢RØùÍDzN!||<5�RI.ßÞTl3¨~77æ„V-�þÍÕt®@áa¡ÁO>£@«dŠ(ž@ÁÇo³ïïu3lñÒ¿@Bk7$tÂ455B]]j#¸�ûX‚>|d?üšÕõa,ï�=2Úëâ ¢¦mÛa�RXW‹‰åq>l(d€"@nI€Âß5 D€ŒO†L\ˆÀÊíÕš–ž k«Î°­Ï�CzF&ügŽÏÅÓ¬•’€¡‘é¨Î+n¦3šór icÛ]dååÊd±0o¡~„ÛÌ…¸ acB®E@]E•EYøeß~øzy!]R ›ÙKPœÇB�Û�êdƒu°‚êŸYV7Ç„è¸tz?¦L•†D‰1F˦¦¶4ü­�£+ô�LØ¿‡c#V֕壅íé«©38áO×ÄêÌ«ZYRIZ8êË ¡klÙcJZ:z0YAäàMmÄbéK:=öS‘“�œŒØ:Nœ½Ù¤º†tò›ëé\q `É"p™PfÒ¬ÚQt™Ÿ¦:²›C“�[”yÚ4·1 ÐÖÖ UUU>�Áð£2¤©‰¦¦ƒÿÿó¨Ln‚ ÒZU„Öê"¨é’H7ª·T•}÷SÕf[$ikØöòhd~ 5ëέ’†e�:"@ˆÀ¤!@ž¬“æVÓB‰ }(//ƒñölíÛ"]!cO€ó`áRo+ß·%’lèéà±§žÅ™»àâµ"3ädg!!&÷­_…9‹—£®¥ )Ùù¸qù2<Ä:X¸ê.ÞîDüÁ‰¬ ÑÁ¸{óóqyc²¦âä~\3·ñ–X¹¤clÁ»þ(ÈÉÁá=»ñ—¼Òµº[™ ìïK{\uƒB'D€Œ�þ¾ŒÚ$h "@”š@fR< ™md:øHP²…µ7ÕBUKñûÜËìÓqäp"k{Y Ô]6�Ü d™�RÖ/â·vèí¹M�ÆTA””y²*é�¡i"@F“€@ <ÞR£¹nkbàŸßL*(´ØqI€DÖqyÛhÒD€"0QT&D¡±¤Ú"󉲤q±Nd�0mõ•ØøÄ_a¤Ö3t@Ø¡3øÏ™‹‚Ì8„]:�ÚÚv4eÇbº¿ ròë�“”OOh©«�‹µŽ÷Iò⪠‹¦Òs/ܺêrhj±}r�Ê%àr_"+'°?°³æ-PÀhC7Á ¬GÙÿùK‡l$>> —.^�§§Ç�mtíX˜› uæù!P‹Š‹qû’E|“Ê´X´66`õšåÐÑV‡á Â6ùÁ›(.*€—ïtÔ4s»êªìÃÐ%i õ![ƒ;R[Y©é8ôë^øÎš>¶¡Ñ‰ �@ue9¿õ��áØl0‘öX’óbŽÀÚà U"@ˆ@¿´lìÙõvö {L6l�ô¼ß.t‘(% ¬”·…&Eˆ{ÿ÷å1mÆ\øÍœ3ö“™À3àV.‘È:z7¹8?‡LKKW÷ƒÖfìùñ|µÿ ®žúqQXõð_páÔ~äeà‰ç^EyiLÚ²a(r@ªº3¼Ý� ¯ÕSô½U(j¤V ƒe•áía¤¨ÙÈìä¦ÄÂÀÄ ú&ý{=f%CGßfÖäÕ!c7�#'²&Ä'âž ëÒ\!m.œ?ŠªòÜy÷ÃC²WÚØ= 5h1Ïr.¥$ÄÃuÊðöoÒD¨SwÏ» ï|ñt…BpBë•´—YHTAˆ D€"@ˆ ’y²NÈÛJ‹"D€ Ÿ@dÈ5XXÙÂÂÚvøÆÈBŸÔu…à2¥Ñ#�™‹c{A]Q *µ•QŽy«×âòÞÏánÑ¡‰%ZªŠ±úþ-(¬hÅó{ –:°ñ€­Ëìw‚ób}ûí·ùIÛÛÛ�Þä>R;³È²ŠºÂ-Ç`uY1®MK§ÿß C‘5tõÉ£c°¬ÍÌLäÅZÇ^I=µf~ƒ¢G{W4×T¢±¡†L@?÷ã� ¡khØ£­¬"/= úÆÒë:ìw®«ëŽo¶¢¬¤n$´Êp�ÙÑÓo*¸lhb {§1› Lˆ Dà–jK€Äã€9½¨uKVÔ€"@ˆé«àjJ�ˆ “‡@LBêäYl+}ôÙWÈ‹µ6“¥º£± 핹n¹^saæà g´‡ÃÕQ 7¶¿¥®ZL|à3k.¼mˆ?µmÕ…¸çî;°åÕà:“yg Lå<.]º$/�ßW•Ì‹•ciãê-÷b--)í�7/;³GU Ž@Mq6Üý8¯Ö®)&6;wïæ«tYsûy+º^PùÕ×ÞDFFÏ{ä3sRÙ~r’ÜL˜±—¸ÜWâÖ}ßìèë2^zãm¬¾ûž>¯ÓÅØúõç îa˜X)"0ù„‡‡O¾EO ‡\E~nÁZÑ—"N ؘš"@ˆ DàÖHd½5#jAˆÀ$$°ó÷cø•eJD`²PÑÖGkGs¯¶½ÿOœÜù ’ǟظaÓÃÐe«¥-¦ÐPmGNz"Ԅƨkl‡¶Ø!¹ê8RŒšì=Xï��¬__BaøeTç¦ð™ráÂ,\¸Ï?½©ñ‘½2¢ÊáàÖ+—¯Ê�œ>~?ý÷]üñë|]Ld^yî1ùõÞ 1W�A’C/ÎÜ̦ þ ^|æ~æÑê~ó¥nçœÐ:Ø´qãZ¨k°0Ô7¥‹/ÂÀÜ?lûÞ‹Þtµû©µ“=^øßÛÝ+ÙYhhH�:ªy7Îðƒ̘9òƒÑD€Œ ß}÷¸Li|˜”«ìVqB«’§‚¼4p™ D€" ühOVå¿G4C"@ˆè‡@mU!¸ln;­ŸVti¨8�µ©£ºªÆ=L¤'Æ¡£¡Žî^PÕé;äg�ŽJRñìÆp²±ÁÌY‹¡ªR‹#/Á{N¦¸:ãzT ¢"áæ6>Ά0-NDF|¼7?‹øK‡±üµíòUÿíT”cÖÂUpòò–×÷Uøqû—0·¶ƒ‹«'œ�(´f_œz«ÿæó¡ÙÜŠ;zÅÅEhoiElT`{èö•Îìþ >sVAl;q÷m­,N�¡™k_”¢žX—.]ŠÖÖVäd¤ÁÖÑyHózäáMxêég0cHý©S'�Êêrh¨k¢<3ÕÅYð\ôPçÅ.¥Â¼tp"못ûþ=ëÒœŠD@é ¤¬_$Ÿ£pö¾¬¸z³Êë©@ˆK5ìÿÑ\ÒÓïù7ØX΋Æ&D€"@z ‘µ'ª!D€Lz%Ù¡/ò„–Žò¿åK"ëÈ\Ó/ì…Ø3B3›ƒµ§B�=¤W5¶ëqMÙ+¾øà ´Û}±-T½¦ãô•  µ¯¿ú<¦.ÚÈO¿²8:º®ˆ<¼ ®«þÊ„Öh˜ÙÚÂÆ©»÷_Eq1Ê‹%Y§¹YB×ÔÎS”Ó¨ÎOR”Ç�WQÙ½–voì¡gÖý³U��ŽC;·ÁÚÅ«ïy´ÛüªÙ�\Ò)ÿ¿]Ý&>ŒN`ÍŽ?Â>³/ Ê´kbl<¼}‡m§7q±Ò°Ä^ÞÝwzkKu£C ¥E¥@CC“YõÍìGg`…Œ1�‚�ßFáÇïõ˜…AOü�¨‚LDílûˆ± t—ŸœÈµró˜ˆd•~M1ññxõ�wp|ï^¥Ÿ«"'˜Ÿ•„üì$ÌXp'$’\ˆÅ=ÿÎUäxd‹"@&6�±ù5±™Òêˆ ãž'®Ž�•-4° /Vâ"._D- %ÚVWÅ[Ö5³î&°Ýù>yõ9´µ6¡YKw\ ¬ÜÂÊ[pœ€í!¨¨¨†©¡1Öܾiñ1 “œyd'Î~ú%.ü•yß©ð,ŒDb¹ÀzøàAÚ·IL˜223�ÀÊyøñgy[$°òºýHˆKÅwŸ}‰ã¿íBYz8*K¤¢«¬QA~ ™ëS¯ÔC`åÚäJJ�–™…ë—.ãÔÑs²núÈy°*J`=°û§e›<¢öÉøàpâ*—¹DëàØQëñMÀò¥·Á ª/ýK¾-TÕ\¿(?§˜L::ÚÆl¹)‰=òǘ�?ÙöñôÄo½5©1ÄF_G Ë”ˆ D€ •y²•õ#D€" „ëXøG-!ï]:ØéUI$È��ÆÖÿý[žËײ—Úu{5“ Wo¿^¯�‡ÊŠºzœ»~(ÍÅj_;ª#øÈTåÂÎÓöžH¸r9ÑÐÒµÁìwÀŽݖ–œ”„¤fƒ¥µ÷oá�ƒùq6Þ00¦Û„mûÔSÏ`Ã}÷ÂÚØMùPk– ¶©íjØyÌb/S¸"+!»¾ü¯oÛ!ç��žŠúê*xøMÇÞßö!>./ÿãu¤¤VÁš)ß.;6 vÞÓå}&b¡¤8‰q¡˜¿øÎa-¯$/‰ÁÇ1ýó¼�œŒöñy †«%Y¼²¬m- w'ì#ÔÝ�=R¯‰u÷n�5§ã8#Œi3ÇÙ¬iºD ;™¸Já‚»s¡3"@ˆÀD!P[š¡©3ûû š_’«ËÔ‰²4Z 7à¾×Ñwº› Ðéˆ OÖGL"@ˆÀd!PSSŽˆÐÓcº\U5ÍA ¬E!gÁe.é‹ÅØzê–-Úkû\ËxX›`¤«ƒš|4TW ¤æ’àö{ÿß™³�—‡¼ìDÜÿÖPÕÔCSC$Éq¸²ÿwTÇ]å™üúý7hª¯åÅU™À›‚7^û¤Of7_Ð7�ºÀšzå¹7OE)έ­Yˆ_õv¸°}mí¬ŒPU\µêHlÛ¾Yñ¡h`¿_\²1ÒÁŸ|ÞcÎñÄDÅ#/£zzr�•kxe÷7¸ÌòDO¦f– Y¢©ÕÐ÷¯Í�½Nh•¥ÂüTp™KÉ)ÉxüÉÇd—�W\ŽýGÎÈϹBTXŸ»UÒ‰ÒxúÑÙÿ÷‚•v~41"0܃8z7RÔ†"0> %ŸDQÒI˜˜ˆù<>WA³&DàV¸-!Rî^ŠpKõ[5¥ëD@¡ÔÞfI¡É D€�qH .1Å¥å0™ yöZZæ±eî¨ÈôϽ…ââx{yÞÒ,·?êP’&›·¾… Äæ|wU!óbÅß'42Eù°²°²�¾:¾òÈFˆ-m ¶²î«IŸõœÀZÄ<þêZQS^й — <ñ3´dH`�{Λ?†ÿ’õÐcž{Ww}w·@”V·!-< *… h7Ö‡µGb" ¶°ä³l°ââ2pA…½¼]eUýǃ5=,ÆV6èô;·±¸hd¨�ÚÊ"8:N�–‘5,½f#*·&B]Ý S±Ö6ŽÐUkCi«&lllØ~¹:046Ayy /°jj¶à/} ¦"ãnKðY²¦WOÖG7®†•�-,­m»µ'Ïn~+×­“OUWW"³áÿ¾éê›@dÝ)²r^¬Ú‚žígO�£³›||YAäè -¡¡ì&"kè1›\251…››äÎgÎœŽ»Ö¯áŠòtêðA˜[ZñY^9ĹÓlŽN=ç8Ds“¾ÛÎ]¿ÀÇ»»çÇcO=‹!ü[<éa"ÐÎû¢lï¶gì;0Ù¸¥�VTMˆ ƒ!`l;ƒ÷dÕÁeJD€(/î»�–�ý�&È}RÉÏ©Ò œ§Mߣ†„�:ýI€û6çf ø³H"+}tˆ D€0œÀŸ” /�NqáV`^}ýyˆÍ, þS˜äÚß,°&''£¬¬ ¦¦Ò°¥·²ÙÛu1Ûï“Ëf,�DâV.+2:Áö+=yw®è�e_’Ÿ‡Ûî¼gÐæ^~äXÙÚÃÝÃI©™�IƒnS: íïaBÛ´]ÿ ‚%ÒýRõ M™7žEEåp›êŠéUÿ‡9ß ¡­/êë0kÁb^`½xæ4²2Òaïä3±I7�µ,?:}„Iíkòuµ%ÐÔì)hõÕ~°õVîžJ)°rë‹­y�U¶¦‚¬XøLŸ…ŽôXø­y”‰ÛÓ!ih‚µ×t¨w´âä‰#ˆŒˆÂ‹ÏüMÅÐÒ쀇×T\º†ÆÊH2"Y;U虘áðác8|äJÂŽ ¦L+oㆢ¥½ kï¹_6ä¸:åÀoÆŒaÍ9&>g.†ÁÇÓ©‡�¢b ®„Ü€‹ƒ#­¦$‡…ΖŠóiÉg^ÑöLdÍežÑ¦ÆÒߪËÙ}èE�íjœZûK¾Óg(D`ÍLOa{-—‘ÈÚì.ײ‚��s»Þ_æ‰���„}&nY»˜ "  XßCs^³ÖÞÃÖóÐà 6åe¡&¨g8<™HË]ãÒ`ñè D`h­ËC[Û¦D šD«¦¥å%�²~ ?yµ×/@“ ­ƒ[9aÕì¥7µ‡ÒWy©ÐÌF›÷};û…ÇØ‹�?óŸÅ�ö$²Žö]¢ñˆ D@) p¬ƒX¹EH$EXºtEŸë‰ŒŒÀo¼Î<îl™÷–{Ÿínu�WGJ`½ÕØC½à7cDVn>>�Cš–¤ ËÖ®çûr{xæ²Ð¥†BT•W¢¥®éYùˆNL„ûL*™¥Æ-ä³}{ ˜ˆd Ú‹)³P[Ú€Ó»>JÅXN\å’¡qwÏI®îÜ/ÿ†ÛŒÛ¹â€RdÐ ´wT1[vj?Ñ©ª¨Bµ4¶óVCSµ GŽþIj24ÛQ]S‡ôÒøÀÇA„õ÷oÆm«ïFFZ<Î\8�¥Žõˆ‰IDè™°÷™…é3˜÷¤ \=˜è*†>ËO¯X†ÿý¼kÜbTUSæµk±ù‰'ø5DÝ8Ç9oú�&IIRã"¡S3'ßnÝ„ºB|ýùGˆ ÅÜù tú7è™1ïa]|÷»`ç膦–6š¨®®ADT:ª%,¼vÏ·›±181bÎäÅÚ;øŠÔ‹ÐÐ1„ª†¶¼�¡ÈÚ:úÐþSH—_ø³ f¡ä» ¬i ×ÑÜTÏ¢7ô/šßl‡Î‰¸5î�—ôfÏï!²ra�9�µðcö2è2kÕ]ˆ•‰´Ü5ÎŽÔV÷6¼qúAˆ <�Ž–Yé³@”„@á‹�U™vt¤”çåˆí?ûaȳ¬8;ä�¨£œÀ`=?啨 [CÝÞŸª4ò²%MP14Ù¸¹Ç÷ñÞ¦L"koT¨Ž"@ˆÀøxûõÚ*#3 ‰IñÐ`¡{,X„… ukwæø^HòsÐÜØcS3¤e¤`×ï?a†ÿÐÄÃnÆé¤OSfò×RSÓpâäi¨tTÀY=—íËZŒ”¼jÔ»aÑ]›pðÀ!œ>z…™©ðu6‚KC%,g/Eæ§ÿAEU ÚT;à|ǃ¼­‚œØ:8ô:æ`VÎ@èÕ³�”ÀÍ; W{½²¹¹mm­PS“˜˜€Ò+» ]• �…-2r²ÙË8yô2ü¦ù`Ñ=ëáhm�–Ò,‰Yd¡R’â ÞV ón1°Fpf6m~˜Ggjj‹œÀÊ¥ O=Ãù#âà7üÞ±FVRñ}8¶c£Âðè½wàþ-OöjÆÜÒSýý™×§tÖèàs0·väC–Ë:t´Õ £!*š½ïÕ*63fž§šøû»_âÁ»{ôf¤'cª£ ´˜¨êÂ< ›Õ´y�•Y÷;„åK–àÅçŸE û�˜êë‹ý`ÆÜŰ»)<ï�݇!b^Þ\hgJÊA@`bßM`•ͪ/�Uv½ëQSK²ÜµžÊD€ �÷PÐò¥7¡8¦Ì£·$Ý?–Nç³¶owk"»&`Y„T çkdÏYÙƒ%z0Ù )�"0� ¨¨i‘À:�ï/-mühE»¶ÊìâÞ^4«™<3îêùÉ}‡�ß%¹ïÁÜ~¾Ü Š!Ú�è0TAì?Û1 I"ë€0Q#"@ˆ Ý „†ÃÊÒº{åŸgFFÆ õàÀÂlZXXôh“ÅDئº*æv‚µ3FT|4ø÷Ý»©GÛѨhkªB[s5Ô4F.LíP׌#ÇþÀt©@:T;]û•——³Ð² XvŸ;Œ g ­C µu-0f�×ü;°÷çïP�œ7/{xÌ…ÀÉoüx-å5HÚAËy ¼fÌaû¯ªà×­_ÁÒÎú�{Pvk0eN\�¬+Ç©¡¾jêê¼ÈZSUЧÚ€LI=|ïx "ÂÔÙÉ FzºXµaÌmì  ¨CŽžhh¨gýk™èˆ¶²0Ì\¾ÚÆøãÄ^8é 6*b‘)´µÙMVUÌmT[m=#ŽÙ‚„‰>¸ç'Üó3æ.îîíüés›`ãìÏ©ðöõ‡Ø\*�$3¯êä˜Úv ¸2�•›¤±È "¶¯2—’b"QÊ<íEÌ+ZM�í¯¬Å×÷öƒ÷PôñfášÅˆ űÇah¤�ï·}Œ¹óÃŽô%v™X¹Ä ¬œhmooÏg- 5̘1Žö=_8àVS3òvì�ýx®#�u<ß=šûx p«‡SœhÚ—pÊÕsB-çåjöâ›Ú}‰µ]9t}8v³wl×vT&D@ù ÄÅ„¢XRÀ¶2±RþÉÒ ‰ ]Ⱦßôõ§KS**n› Ýë—bTÍ͵al2 —û”húüT¤ß½ÛùïÐ\™û $L°l$²ÊHБ"@ˆÀ ,_±Ì3’Zï{ì1X3o2.Ë’@ �{ëëêqùj0êËj0{ÉbÎ]GWXZõ.Úö0 à Uum&¨óYÁ¦‡m® 0…,+Rd­iUE]a)œ\�‘’ °õ×5µÂÔÊSðî{ÿFÀŒé(ÉM€ÿÌÛpòÒ5D\bž¯"W¶Ÿk2tE󨾩zÐQoGàÒå¨.+Æ�ÿû'f-¹£Ïõ¾ÿÿ^†©H ‘ȼÏ6“ý‚¦–¶Ü‹5?3kîºsWL‡XÕÔ4¡®¡‰Æ¦:tõ™ˆÂãÒêóÇü¬44ÔÕ˜표ÎöAÖÕЀ§ßL±6BzfÜÝ}aÀ^~ÐÖÕTTF 5'®D`å&àîåËÄGs>w��1û7ElïM -¹ÀÊ]×35g^¥B>wmÏ•ËKŠrå4œ=¦òë��?")6 ón[ѯÀ*³Ã ¬\*,(€ûwlŠ—–,[Í<ûßZ&²^¼p…ù¹ðdýdé7æ�¿—åU+ï’UÑ‘"@F‘÷pèVbm×éÈÂk££Êpã–Îxâ]Q™¥'À ¬q±aðò™œÑqnuƒrò’QU]ÚòàV¨è: D`@¸ïœµ*âæÚZí�z~Èð7âö.Ûû²Øþ«²(2ƒùîÜuz$²v¥Ae"@ˆ $ðôSÏ!· ˆß‡°¾®Ýw_¿=K™¡£oÀ·1[ ´´O¾ðv}þ,™ âæé�Àå~˜æ3-MÍhlQ�Pgtžo5×6¡½•9¼iJôö»�Q¾hÉ'E ¬ÜôµÙ:uUpæÀh×e ?+"cæí×XˆÌ¨ X3Ë–Ö&h裠¸ÇOž@mE!ž~tÜ]*¡¯b‰£'®¡±]u¥¹pññ‡µƒ+ê«ÊQ[Y¡¡IJ%L›¿ »Çb�FT!'�‘ËBßÚCl1…XÏ�ØG—)ÈÏL@yqJŠ  ¥%„‘©ˆïSV’ÄÆXÛ{àãO>�jK-BØÛ”:ú"¤×aÞìÙøþý�Q&‘À�…¶U–ĉ¬7§u¤%Ä¡……74éîʉ¬½%Û?õú•`>|ð•3'yqu݃�ôÖ´ß: K+&²Záûo¶ñí¸2—*Ùç·‘y k³qzKœ¸ÚU`åÚxMñ…{©€Ë”ˆ_ÒÙ–¥%ü–™ù6öoFXX¦Óý�ðRÆ6üû,¼[sn&Ì^zK{¨˜”qm4'"0Ùp¬“M`Íc{UŸ9uS<ò=_ÚlÛ.ß*•5µ¡œe}Mµ[5¥ëD€�IM`°žŸc +ÜRÍyl7–¹4œ=€¹þ#/�³N‰� MàâÅ‹z}´8"p3�Š‚,pY–‚ÂÃÀåçÿòYUŸÇ¤Ð $…ɯ߹n=_~ò­ÿ2‘Õ‘/ýáv^d•”Váìõ8yÛ�rs²�̼ø¸<˜ÔT׈IÕ`ºŒÛ¶§÷ýˆüÔXˆ4+‘�–ŠÊRóšÐÑ¢Ž¼¢Fü~9WcKPQ¯Žà¤h Kô0ÝÇÁØwÐ IEp1×�¡FÔ›kP_Ykæ‰\˜•‚È‹Çzes×Ý›åõ¥ò2z'àãç¡¶TôÏLM”7röš…°k×0ÕÝ%e¨®¬Bvb8 ­;“Ï\C¡‘G¯!pæl„]¿À<;ƒqý8V®[…ôìBÞVÐ�r›ÊV™Z¢¾¢WŽðÔ¢ÃÃqþÄ!"8ë|î>Ý÷‹ž=o""£û´'aýº&.l°,å§Æ£ 3Ev:¨£'Z)"0þ¤'Çãô¡½žxÀôéL`�>àöÔP9 pÇ\÷_è3 ±rΚfEˆ�°b/h$è›0/Öž/ÅöÖ×DK \¦Dˆ ‹€ià¼*S±Y6·*‹—þ5ìÅ‘'ë°’"0y <üðÃ�… œ¼h哉@aJ S¢‘SÞk¸°}��ðò‹/aÿécÈËÏG`ÀŒ^‘غ{²p´Òýe BÃcð¯w>Â�«—ñUbi¸a+ s´6ÁÂ|pûè|·ís”"2:sæÌ‘ sË£–P:ÆÊ·ë-'>ŒçïGz~ªÊ‹ kl…ì‚J8ºyãÉ_ÇŒÅ+¡a FjV.ZÕ¼s Ön~úb\¹t6"Ä%WàÚ¹3˜±p>,œ=ù™XØ»ÂÅwV·Y]>|Ùɰs“ éá×Ï£¼¬æf–hjª`‚ïqšIûwë8ÉOÒƒ�BWÏšB™ˆx/V�Æ*öR@:Ô  ¯§Iv Äv®øê£wøÐ»ó§¡µ¥S箆žŽ!í-ððtŶŸþ€‰­®^¾„ÐÐ0,[v›Ì¤Òí\Üà3kö€çÅíÍzç½ ¾®:B©Ç|×Î~~>˜æ7µk_¾zî$k/DTì5ÔÖVÁ\lƒª¢,¬¿ÿ!Þ£•kÔÚÜ[wŸ>½X{í§bó#�ÂÝÍ"Óîºýt¡KD€Œ'ö�%`î¢�lɼ޹L‰"@Nà?_ífÑt `ÊòdM»v|Ã/]lÞ¹íÎPXè벿ÏíûìšS.}ÙP[£3*Kss-ª«s!÷Ù�» ¡ªÒïuºHˆ ã�·5F}]�¡åKoÂtã–a/€DÖa#$D`òزe /²N^´òÉFÀÈÒ–n¾LT}QAWÑÊÄ�ùë6ÀËËÓ|ý`me–¹ôñç_�ûsÌÆºï‡Ž×ÎÝ@äå(lØ´–ï#û‚ïw|�c'bÕòu²ê[mÄFPG=îßüä-ÛNÖÜž�e%ˆ��Ávï´ÚêYˆY7Ä&$¡,=ö®nÐ36CijœÝ½ÑRY€ v?výç%”&Ã×ÅÙ¥ÕÐÖ7DzÕkà·py¿(e⪡©ßîÈŽm쳌¹ – ¡¶Çý ~ Öôj#:"æ}~zí4*+ SÐ\WŠ�¿BrV!|§v÷†<{ì0ª*Z•„Å+Wñ+·ì² ®³½sµÚ+QX¦cs±.Ÿ9ŽWÞûmªªÐeçY©ÉðõŸ‰“g/`þÜ@žX.ón>wî´™¨^ÉBdÊÂËpÆ\=ËÙgÇÈhèáÖ÷þB™È0�Ìô-�Gvÿ7o¿[¶ãô&°rõìÅ�ÞR=ÛÇVßPVöìÿçî|“ß¾zæö02–¾á/`b·¢Òºµk‡$°çg 39fVÒ—5²Cˆ D€�±"PZ^�y3¼Çjx¥—Y½}§c¸"ë­SÕ �Xß¹[355M~[îH‰"@&.Š‹¢¶È ‘uò}~hÅD€"0LwoØ€ÅËWÀ}ÎBÞRJjæÌš%X¹Ê à^`íMdMMdûJ2!ÇÆÂ†½¹¬…ƦZXX[󶸜+'®rÇ�z³¶4×3´tè›X1�ÈBn‹ = ‹Ä˜Î§ªtVÎ>ˆOJCMy1ÚÙ¹�±:Äξü~˜íÌcRÜ\€üê$¦å`ÞÚ`ë䎊êZ8zOE+ÚààâÑs€›jd+W}=,ZBÌ ôEsS 󴀡…ÓM=N`ýåû¯°lÕÀEöFF¹"‡‰`,ÔíPSIV,rsòÐÎnÄõ°£hh×…#ÛëÖÉÙ¹…ħ¦ãÚù8#þóaþ¢E004”çæ9•Z—ßûfÌ]ss3lûð]f!§¬ PW…¦ªªÊJ‘ÇÂãšé¨ãzÐ5Ìe¶ö}ô7è²ß›†ê&ö¶z;Ä6r»\A’“¡�¾Þö!�܆,´–3!xÆ‚Å0 L¨MŽ‹DYqQ7‘õµ¿=Î?ˆèèýßnÇc›¶@(2Á1æÁ=wÞBùÚLÅæ(ÊËDQ~&ÛWºær¶G³‘±©\d•7ÃB]M¸L"ëÞš"@ˆP(g[…Ú�Æ–._3â+ÇÅ@Ðû ‡$°ŽÇO Í™�ÉJ`Úò-ð÷q‡¥¸óyÊO?ý¨¨°ç?â1Å¢ÒÁҘ΀Ÿ°ÒCA×ÈæÎv�´0"@ˆGÀÀTŒc‡`á=woÿÞþ�ðš&õ˜ãÚßÿ;wÀÊõwãÉû¤"Ú·» <ä_ï?cìú#%9Ž?uuóâ�'v}�™KØ•L@êèh€ª¶4ä¯�P�oóø†�˜8 O¾ðBWS㦄O¿ø{w|_¸þÆ<ާóM®œ>ŠÚœpĦVãÞ'Ÿ†- û|~û›L@­AB©žüËãˆ?µ ‹žx'woc¢x9ÛȾ V‚äTÖà�—?·W('²Ö”æCÏ´�ÓÖÆ´61X+¶ÿk-ÚYx*5ÝÎ?ö‹.ÂØÎšº�¢!7Ñ—ŸÞ Ÿi3°ù±¿ö·4¥¸¶ó£¿ÀÖuæ­ybHóÉ‹» d¥å¢­¹ ê\ ‹‚;ÛuÚŒ@ü¶óGT•Blå†)î®X|ÛÒ[ŽóÔSÏà®%�Øwüëg #ÐÞP†Sá…ÐÓRG�D‚×C�~êk8Ýþ Û‹P˜ ×·÷j;;1ž¯·ó»Ï»v|‹û·H½Õ÷9ÁÏg^€7û£¢óE ®2#þ:ŒD602³AÛ³uŠ¿?r²³`kg�´‹Ûaå{†ˆ¾v9y9Øöíg8~>š·7Ò?B#®cÛö�ñöý#=Ù'D€"@ˆ D€"@Æ;�f¶u–U;‰¬=´©³bŒJäÉ:Fà'ðš}H³ôaÿp×ÜÒÚˆººhi)ÆÞpçCý‰ 2¯ýãï°µí¾ß꜀N{+.^:‡†`‰dÉeÊp™KæÌ“±½­ ³àè{P˜Ÿ W¶gasc´´ud]Äöò,++fפ"«‹÷L•”!33Õ%uÈLJ€»·7Z«Kæ¤Hª8w,­m`iÓ]|‘Uò‚ ›»5óðåŽI!Á7`ÕÅ#øæ>ÿï?o¡°¨þ~Ó‘†ì¬¬{øI^`åÚ:ø/B]cR““`ge �VTTÔÀ'`cëˇ¥­V¢ƒy šXXÃÒNê�šyM 5ÈIŽAüµp`÷ææÔÞÚÌßçöÆj¨p¡©˜˜Ø5IJË ÅV-m¦þ™Z±ôöÕL`ì)ÞËÚ(ÓÑgölïYÿ!OiïñÖÏ¡¤¶ ÍØÀö-+)Âá};±é¡GP��ƒ…K—¡¢Ee’,L›&ÌûÐD,‚‘ž..\ ‚�¥5fÍ^„*xª¹9ŒV.GQä%ÄfW 51’ ᵘ:ouŸ&£¯\Ä©Ÿ¶bÎÚ }¶ê…ÄĈ˜·é­RMžØ›"S¤&„³=UkXxéÎßõ†šr¶wmŒ-�XxåRHØgß™ýÛÂ%�¡%/°res[G¸yùÁ{jÀ¨xpcZ1/~KKþÈ�S"D€"@ˆ D€"@ˆG ˜=#ÓÕé|&ÊSQc?oÚ&Û×w*i¬�'ëXßÀ8‘µµ¥�mJo4à>Ô�"0V~üí7$Æ„"&:yâYܹ¦wQ&7' ÆÐgY–j*ËP[U ;Yd›²CGW¥Åyü¹©™5+XèRé¿‹»YXÐËç�ÀÓo*®¸ ^Sý°ë·Ÿù¶÷oÜÜÍÖD;áÖ¯¿ü?ýº{@KËNŠÁï?~‡9ËïĬEÝ="ßñ1¤DbÑÊ{QT˜‰öú ”5ëc†ÿ³û‚6Ü~׃°°wî1VqN*Ìl»ß·êâthhéB``Ž6&²†]=Å„cÅàêE&Â××á¡Gƒ§Ïtùç ±¶ÚB#´µ¶BM�{U¯{’HJpîìeÜÿÀz3�_N\¶¶˜ÝÝ’rœý÷ýwQÃ8lØp||¦"!%ê­ p�2 É qÌS[¼ùvìß…æŠ<”…ïƒÅÒ[{h¿òúC8tâ:½÷1äd$¢º9Î&vxåï/#9· !çÃÎÉöî,P›‚—ßù‚í %�ÂqéÀ.ØyxÞíÏ+KE 0wœ‚—/#/;woÜ[“ÕU¥ì>›ÊÌÉ�›7?�×^û<<\åuC)ÄDE"&*ny•ìókhဘkç™Ç½Á¥/iäåæð¦­mÆo˜º+çOǽ0a`ÔùoçPxQ"@€Oþ÷?¼ø÷¿ "Ð�@ÁÇow;× \nï*JD€"@ˆ ›@ÊúEük‚®À¿ uTË ¬ç¯^ǽwöýü¨Nhƒ‘'ë Qå  ¦ªÎ¼Š:=|”cVãsÙ…0Ô#–ãóîÑ¬Ç ?//Þÿ …Üwÿ£ÐÓ3�N=5 Ì]Ðd™¥¤È@IDATø˜‰­q|'ª+ËQR׊ïYxÜÕ«î�¶ïò33-=&*ˆðþ‡²ý<­˜X×é¹�‡] o8¸K½Ýb¢£yÑJlÖš¶‹É~‹Ù‘WùëÚ²¹÷ÛzàÃc“ºí¡°ùý`ej+Ñàç(•×Ýu·ìô–GCâyöm+aíàØ­mj| ²ÓÓ`ÔV…5�ÿ ×=}M8{zC¥"ö^3X¸ÙFhjiÀ̦{_Î�®AwOÄì„PTVUÃÄÜ1áW`iï�Çï_‡Ôüzœ8uš­Ù±qIXrûJ8ÿ¹¿+'°¥‡ÃÐܪªªÝæ';),,€¶†ÚÑ�¤äæñk}ý??c²Fãè8wÞ,^¼b¶G(—*Øž©Ÿ½óVÝó8ÊJKqøàïð›åÏ¿TƒK®±ýqÝÐT_ƒºê ƽç X1±!Œm(Þ~ùäd&3áÔ ­-hf"¹°5Ó—ÂP �‘-/BçÂÝÓ'™mIq ZÚÚqŒy­ MÌ™§rÌ,¥‚¤�ýþqÉÚÎúlOX.÷•6½òl¼a%ì¼�)ÌS½žõë.´®[·j@ž¬¹iñÈMK`û“Ú÷:¬¤¨ˆ÷Zõñ�†Úâö‚Z#l=ü`ÈDÖŒ”4„]EcK=âcáéåÓ« EVVU±ºxh+ʶ¡¡ ¬Š‚Iv&5� k×°�½¶áÞ{'5Z|O5AQøñ{¨ ºÌç²½?C/p>´lì{6¦"@ˆÀ%ÐVŸÅ¯LEMú÷û]&-‹" 'À½hW¶÷W4³m…ôçÁdãùµÑ(p¬^în£1”ÂÆèé¡0Ódˆe%p)2vEFXà×S PÖ9O„yåÄGÂÖÓo",…ÖÐ�â²"˜1Q†K_n݉Èð,,fo1¡!Z55�æz¨kêÀÀÐEyh¬ªÂµØs;yÃÓMêÉÖXWm]ä&_áí¹N™‡êšR–›ðü_ŸÁ¥3Ç ÉÊÆ�ð þze~6ÚT›°~ÃZd„샱­x`x¬†]æÎ�2¼¡Ññø¿ßÃßû5¹¡îS1ÃÃW~>Z…šüèYu÷ta"›AÐ5lyû¿òi´X –…oŽ,ÓÄ�³ ªi€&^¥„œ‡šË8iÉÛÞ\8¼ý5DæÕáߟîÄ™Ã;á7s NÜHá›E1�C]}˜;�ÀÙ å]9Vû©Kåç] ×®^Auu´ÆÐTSgaªmùܵÍpË/<ò>ýáÓášV΃uëoÁ AFl¼ýÜÙ–uˆ��AfVêÒóPW[‰˜0öâ ³Øæ‰ãùxÏ—›K¢ñ¿ÿACW =�6=ò |í Ô ÂÇâ•31{嬷Ÿ‚9‹VÂÅAŒ¹�sðý×lßÝæÅüÇ>NŸOé^É9ÌË9/“y,WgHÇ´{µÇزŠu·Íí&°rõí­°²“†í•µÌÑÆÙúå%}vññõÃîo?˜'«©“4tNâÙŸ gfh[ÃÉÍ W/IJUå6®Ÿ9—gߦø7Esr2˜·¾ûœJ¿s4—%óciš ï�&ò`•ß>*�aœ3ûX¦Dn&`ùÒÛìÁÚB¤ÜÝûw’›ÛÓù­ 4ÕH ¥'¾uCjAú!�›• ûî‘súi>"—ÒÓSàäÔýï¨hFK RQ_[[מ[·  5%Ã&pñú!,œ½vØvÈ 5×/¢ü“÷ª ÐQY;!ÛÚŒKœðÊ}7¤Ô;�Î×ê{¿NµD€L@›WúóëŽï¿—)�� ö€Ë\Úóæóà„VJ—'°ž¿~ºÛýügñçaaW�žžc-L`å2—ܧ@Oßv¾sÐÆ¼[-Ì pÏŸ!1 3âÀ ­,¼iVF& w‹Ôèˆgâ—r³òÐÔÖŠ¹³çbÊO$ÅÄ1ÏGu¨³= ô˜·�¡¹3ßn¨?ìüæÊ»Æýueùòó�®_ÄMyso'|ó~§ÀÊ]øë][ä×G³�úǧ=†‹b{µ&ÆDaïÏ? –…\­-ÌÀk/ý—�žÀs/½‚kÇ )<„ïwù8„ý•r™·ºú†8±ã„^¾ˆØ?q΀/ÃìØ^¾÷nX×c]+™l5ÛS³¹¹ •µL8œ‚Å‹fc–ÿÈ<\™0ú‚w×õv-ÿûå'Q^”‹+6`Á‚å˜6=¹ˆÊ.‡¾…#ü­Áâ =ÖÒü4¹™*IüØžºaaAX¿æ~””K0ÝÆÍ•ðs6Å?_|ßì9m#¾Ïå°Dåd"�íÍ+45„¥‹ Úë$r{œÀtù Œ=çò™»p�ý;ü·Ý쥇$vÖÊrW�æòbX ;7 ‰�Æ›•†®dÞº½¥;v"**¦·Kò:c©7­¼‚>ùèleÂðÕk—ðø ÿä/ýôý6lÛö¬¼@_lGWg>o~ìe¶kgxiö�ŒË#‘¼½ýñŧï :Jú{É«7ïI<ã’M"@ˆ>.<°ëïgy/Γ�Â�)'°–&wÿ;aèÖ¨çd&píâqöw`ê˜!àÖo·±ú”ZËo(Ä’©¥ L-ÿ÷‘šŽ=T5úŽ\£�É“‘ C +7 Ù,S"ã•÷]OsÖ<ƒFCî»'¬†[ªóÑM8–RïÔÞf©÷K“»69. ¦C­8¹©ÑêÇ#s Kö Õr…�«#æs×úþʾJ$²úN À¹Ógð6ÛCuéò•h«ã¾µ ±Â_ ¶SW@ï¦58tœ_Zô‘/|Sf-FIüE,\u6<øŒEb˜›[ÂÑÑ·ÏYA]:\ý|ðÇÑ«øvû÷˜8 S\]‘�™u�!tª¨inÅ__ü7žÝ¼nžSḭj8òË/˜ºö!”àô�kˆˆIÃú-±wûVHr “˜ŽÖö6xyzðs:üÇTTVâÍ�¾å_ž(Ë“ ÁÚB¼ýÆ?!b÷ÉÌÌŒ ¬±X¾ü¶^oÑï»BB\4¦0ÑøæÈ^¶ˆŠ FÔ�k¸ë^©{k[ òÑÆ<àCJ“ȇ{Àu¶f°ýL­-¤¿ÓF¦(--Ç7Ÿ5U5æÑ3ÒEVb *K%0d ’¸J™@®ÏlK$ùX¶¼óeU ��˜ 6D€"0¸‡e͹Y,$Üpá�{Q¹ðÀ\˜¸Ñ7ÂKuóêZBè[öþw¨O†×¼|gñÑ�F{Å’<貿[��MpÛ²Õ(/fײ¨<ÃIí yh¯I€šþ”ᘑ÷ÕÐÈËT cAÀÐÀ¾^sÇbh“(Œ÷�Ïì¥7µ5ÙwÀì¿=Ì¶Š°ƒýg?ôú=Qaƒöc¨ë÷ÕÞ¾«öÓuÔ.‘ÈÚ jN`=üÛO˜³x9~ؾ`2-,&®0R”— ¡¾Ô{£T5� �À:ò7WÀ¾ãëè²°°º#?�0b\Ý=aÂÄr.5 :HOˆ`{êÀÔÒ¾›™Ä„¶£%’b&¾ÂÁ¹Ó£,":9%¥øàƒ�á;Íjj:PQÓÂù³'ÑÐX€z �þõU&ä[añŠ;P\VÊ„N¬˜Òm"ýœhê þè °0xZÙÈÖ~Ì÷yéS¶WRPŸé=E¥>; ðBÐÑ}à| õMzÞ×%+VAln�væÝ(`(Ù2Q5ôÜQ.Z {w¿�PY^+ƒJ¸¹š¡^Å_m߆ÍO¼;&`©uU9�UR”! %Ý[Òÿsк:æ­¦Š#Áép±Paûó°­}u ®¡ -&Ô¶¨3±–PítœDiq1æ.î]°ëm,e«1A”Ë«îZ�læ%zãÊ9,Z³ ©‰ihg‚½�q÷ÏyXD8,™P>÷Ž!b/$è²ï7�LÐ3¶pê¶4c#ÆÛzÖ>ˆ¸~ w¬¹¦b3›r°÷èa¨hèâö…�°cû®8tË.Æ{Ÿ}ÂÆÂÌ_sÒSsqêÈ~ÌYº+Ö®Âé«AЬ—àÀñóÐÕ2À#�oÆ¡=Ûàî7/~¦ì¥u浞›^‹ÿýí$Vnš�’’b,\¼„¿îëÛÏ>©ì;©ˆí[+êãE@ÿé³uö,߳؛ü¶0bûÅÎ_°ˆ‰ûUX²üvÞ¾X,âÖ™LÀîšBC‚`Éþˆrvqeîzù^È>WÚºBh³—I“#qùÚILéçw¡‰½ÐÌÂls"ëTß]‡¢2 D€(î� ˜Ûk•ÛwµåÆå*Aà|mÚsU nM�(N`=wîx{w¾Èr õÕ06³òlU4ô&°yìØR™ 5m“¶¦fD€�ñM eý"~ò¿/«ÉÆÍ0å}Y9z2qµë÷U¶Ó˜‰½ýÝQY{¡Ãy°r+ŸØÃ,.Md‘õꙨ­®„9{I‰Å¨+Ë@]y& +`bFÊ¥;ºÖ†#°ÊfjaãÓž^™ß~ó /²zùxÁÄX:]Ķ §Ž3o==,÷ÕG3óR]sßcÈK�a^y�â®{ÁTæ�Ö5µ³ý:‹ÒSáÄöëôâ[o!¯ �ígÙ}Žƒ™×ÒÕË{X¿ùá}ÞŒ¥Ûg²K*�½Š²Øk0pôîR+-^eû™ÚÚv¶ßñŸÀoÞm½Š¬²ÎF¦"æ9ê&ÊyøNCcmÌí¥ž‰²6}�L,`lˆþö>ÛÇUO<û*|§úðÛÍ}n\=ˆZ¶Ç¨ØÜþæKòsÎûÕÒ '��„¦–>\œx�U›Ùæþ?.ÉÊÅåcÀž…·ÕøóÅŽÿÏÞu€GUlá?½nzï½W $¡7AE)ŠÝ§Ø{ôùôÙêCÅ‚DEy4‚¡¥@ i$!!½÷ÞóÎÜe“l²)›^æðMî½SÎÌü{w¹wþ9ç¸y�þ}Ð>9OBŽýMÝw/o˜[ZÁH¤W{ $'g )áJr£à6EL¶«V¬‚�­=Y« +Ë?ý-W–ÂܪcóB{}:Ѧ6¯äáðÉ(<¸Ô©åØuâOìÜúL� qÓÂ9D®ßLdì1$Åœ¡Ýû–¨iRÅ‘ßöB¹¾ WÜN1rUáìæŒo6~† yó±rîTÔù�œ”ÅòËp™²@è’¬1µ6Æ¡�çáìk‰Ù gH²eãâðä³�㑬”TTºÕcÎiBBBðò;ïÁ„67”ÁžCn�[+sàä?ú ¹§X°MµH>{.~3C!̈lfÂÈÕ V*gä*KLŠÉ5º1ý–õ¼ Q�6–0‚5/á4DÆß;AÿÃàp8£Ž€˜LmV6˜ú©Wµ¶“ W£Ö( àö¥×ÁÃÇ&´ÁŠ G`¤¨-ËŒN”h#'³`íL°²±XÚ»Š`Šù$]NDIq1Œè�m8¥µ¾-ÕÙPÖ8¡<œããº9ŽÀP"Àâ¯6ïù!£ zæë^•X¬’—m¤Õ„Ó­¦¦z†�¯Q«qa9ÉÚÇÈÈÕ‰L°²é;yøs‚µ�û€sŠ€ºÈÚ†xår3IqéÆ"Ñv9Ù™°¢E.ä$ĢЬËtÈ5æ}«þ7rùil"~yk¢j=;wíÐ!묌Üge¤Ã�ôæî"]²4›‹3G~"—®z¸z% ûvn'"E‹ˆ4Müü÷HÏÈEBf3Nœ�†¡¾&Ê‹²è~ �¥ž,è(N¨®.\܆Æå’ÌNú™yû²eð°nECMÔµÅnI·}õ¦wÓÐT[ŒV"”º¸-*+A&¹5&²†É¥Ø�xûqÏg˜FÄQW’U“\,«�{erÁÚUžzêqdfebÖ¬ÙBѯ{¶Â‡\™ŠÇÖµ~×kur‡Õ™`�#+ã¸È³°w‘ƺ0=7ýžsoTäç\…�Ÿ7<½<ÑP‘æ2Yâ.õ/r…[Qœ ;G8»öm­MÖ†^îÖ˜6ÕWˆ¿›–t ¿íÚŒÜÌT̹n)<ü§ }*)©vþ¸»VS®Æ/»¶âË�?ÃÊ;® tLìPS[+G_úASd 5/3k�`íœéìÜ�`ý}çwäe@"²ôÔ6²ƒ7¹n¶F°s™ KC]\ ?+:¤_A^m*i—þc=‰žøfÎY %„EÆ¢¡ª×9à›½¿Ã×Ë ·Üs”J2pè±E˜òØH�9E÷¨1¬]Åß×—Ÿ}…ä^Ø›6G”¤ÃÙÇÓ¤­l;�½¢´ uµ°¶±‡'Å]ÖQWÅåó'q)ü$œ¼¥7/Ì›7Ohjgg'�¡Ì5²¥­* 3¡kj‹ÒÒfôÝ04³FÊå¬}øQÜÿøc�»l?;�½{$WäâïK{�0rµ7‚UR·º(�µœd•Â�ŽG`Œ!À\®Y¬{�FŬæŒÊ"ÚƒdL ‡¬žÞÜÅð˜úP&ø`öþ¸‡9ó#Ï)䉧<*"òÀ3vß+Áš””W·þm‚èǧ LÞƒ8Á:Pøx;ŽG`œ!�·ñ-hdedÖ((˜ºî?>â£gk­GHDsÝ«¶�ÕÕꆷ¯&×Åv’ì1uä$ë˜ú8ø`8�‰Š#X]¼¦"œbåÍž=Ï?ÿϱ3Uz‰Ò!RN‡È>.$†C%‘¬VžD¾Áê~-®"#Xk)©wTíõìRxˆP^VTDÖ…jhin@-‘Db’5 ̲í$YŸY:¸¢�þ55« 1æÔÉ ÌÓ/‹—ÝŲT$^8‡×ßy�³ç÷H°²Ž"£"q÷½âxŒBÇcà�²ªYoêàBdý¾K—ß&ŒêPT œ-Ä.—*2ˆ`ÕêF²Ö’»ÑZ“ôÉ*ø÷¥Öw­z¬Á*™ª,‚••Ý}÷½í+»nkVRm"Ûú’¢Œ$ÔV”@KOLö²úÇÉÊøjJ"‰të,Zz†0¶u¡º†;ö ê+‹àDŸeBB<Ì)榆ž-ÚÚ„�áQÌÏó§öÃÖy }ûÇñ�¿ ¥¥Lñ3+(>lþýÊFϽŽyE¸zˆá$kjVš@HkŒÓØDôÓ„¦¦6r‰¬…éoT"†´S�¥®«¤¼?Ç*Š�êê+Mj[XAO IäuÀÏÕ 5U()«Ä¼Å ÑÒØˆ76~"Äs=½ë}hª¨ÑwWiµ¨o(Å}O=‡Óû¶#ü?@SGK7§1¡,/ —é;ih鄊’¸�…yeE%Yçú ?' æöÖäBœüÊw‘Ô¤té¡(7{Ú�o¿Ýйó!3'Õ¥¹°°s„±¥²ˆd?}ŽN‚F°vF°2q!KU‰0¢•Y°öD°²zÙ´ „%Y$«DO_GUÚðÀ­XûB‰—s8�ÑG€‘­c5ÆÕè£3z#ଣ‡ýPöœGÏä)q‘0·éycÝPö7] ±ñd9m"�¬ê"Ã1M°²y2 Ö®k6=/ÿEa^<ÜǯGŸÁ|†¼-G€#À,,k“�­)Ûˆ7Ò¤&³¢mÌJ‡Fv†”%­ác—`exs’u°woÏàpú�³`ݶm3–-[‰  ™°²²éG«‘©ÂÈUN°vÇš‘«,1‘X°²s%J� ÖŠâ4ÔÖ´»Ñdu:Ë÷DŽüüËXyÛídA¦Mq4u‚•Õi#ËÍ“G~Ù3áD.ꢩ±é±aXußãð›>§]M5‘{™d ɬÏì;ˆ’´”Tlxã¿XtãuDäãŽyS°ú‘§`bÞ»efĹsÈÉÉ�•e÷z¿þo—@YÚ Í=ÚN°^<�mßý_|ý›0¯”¼R”VÕµ“¬*šÆÝVVQ‹Èæv‚•®µµ´…$(äg"ºúC°²n2('#Yß}ë \¿|•г¹îJ°J†”ššŒ¿ìÁRréì9u6‘…U°¶5EVQ9Œ -ÑÖÒ žª%Ò‡÷´ý"X%º3®¦£•bU'“Ø•tßTaûWëqïƒÏHªDzÊ2h�7^IVUumØ;{H¬RÈES%}‰Õ`ak'´Î ï�m×Wg´; #ZÍ­œhÓB .œ�Àͳ§`ñ’•øä«op2ô"^Û¸ú"à:#}”4Ö!­  "-},}t-”uM!²°´Õ“‹ï½ÿ uUõË×ç÷Øï?ÂÔÊš… ÔÚ c;<ùès(*,¦¸Ë¾`ë—ï‰:¹÷Üuÿã´¹bÅ&ÎCC}Y+O#‹è²¢ƒ’¢Ž��œ³QWSA9Ô÷óÐ2"—ÉZ¤=s÷V‘›MƒžÝûvš>.ÑF�Äød<öÄS�³ù9G€#0�h¬%WˆMu2ÿ/žÀÓæS›äDGœ6¤ióͦ“üNÞé‹t)Ö==o ÇáíjÐÚ=}<‚u Šjè¹·©±�¼Êt~[ˆ¦Áµ©¬ªöåZYòpƒC’·æp&+ŒXe›ïFš`exW……Àðö ÍÊFO4cî¸ñ²ÂIÖÉúmáóæpF� "qèÐ,]ºŒ\Ðæ¡8?¹¹98z`?¼¼Té�K�éEþ ïL.ò®ÄBd`ÚÞF™b/²ÔU ÉÅ’šü|<`aaBçZØóý·Ø°þUÄ'¥ÁÚÊ g‘t6¡û¢�ˆÏûžû'’RãpöL(žzòe<ðà½0µuFu}¼ý¦“{áâDßÐÎ`Çæ†Z²¸õ‚oð¼®ÃèvÍÖsç8½[™ˆY5_KÝ ‘aN±SÍÍ(]‹¡j(Ò@UÁ$ædCßÄ÷Ü{7áa%¤®Ý<øÂÓX¾øF!»€,ÃN�£³§p]__�šê*™Ö€]õ æÚØÖ•¬S]‘Ÿ› ¿€ ™ªŽìÛ†šk1Î ò²‰Ë¢x²âX›ZZäÖ–L3×¼r?<ݦÀĤ ÙÕÖ*,¾ÈTÜ)ÓÔÔœ¬ªÅ»²M­\1ÑøúùkAú´*+CEEѧááé7n ÖNSôiä¹³`VªLÚjÒ(èEQÑ®+JËhƒ„F7’•êé�»kc  MªxóÍWððKoQœQch«Ÿ|þ1âÓ²pøtæ-Z�ØðóP#w×uM°urôYØP<_+\=Ž¿·~†ÜÖR¬˜e%O¨êˆð¿�ßbúüe8yâYºæÂ@_‡b¯yaÉòyxåŸkɵpÈů¯ÅA-Ç‚…×álh("2s9 w­~D X)VlmU!ò+›ÉåñhqÛYšê«+]f©Ë¤²$‡ÜWA�6}Häbô%úŽŠ× P�_@n®¹€~äLtê)~s}e64t­&úTùü8íä“Å›“»wû5?á ã�`ÈÜ ²(^«Ø#VyYÊË ¡o`2UCÖ†m ï/ÁÚÐZ†ÆÖr¨(ŠŸ‘‡l\G€#À˜ä0‹Tæv8}ÍÃÏ‘‹°­ ;E$ï|‘õêx…6’ñ2ØÉ<Î|Z¨5³°žÌð¹sÆ=ûv|"É._GâÅÜ´ú9ÄD†ãß%ÚÝÊeÜ °uÍ2,}ê˜;õ½(séR4ÌõUQK–¦‡D#üD l(òU J’"qç}·ÂÕ%q‡ŽÀÄÃÓo¼ ©—£aíâC®:‹àï?±HŽº†&(++áàÙ¿�Iîn ¡�[ï{Ç·~ŽuÏ=‡pŠ94]:fëWßoÃ÷=$ÜŒd-Èφ�¿¸#YÈ¥°®^ßߡԓ? :çÞ2,÷Z~öUA¯HW„£?ÀÊûè_?D°6µÖC‰,,[iÙÍò3ñû¡¿q!*_³S¨ôóÏ»„ã-·Ü…Š¢«ÐÐ6@cY>^^û |þUøÍ‘­lrÃOŸ´Íž9 Ú®òáû—cÚô™xü©�¹iÏ8¹MŠ:(hÒFxZÂÿBVèUpš„ô¤èÑýì75Z†¦xñßÿÆ¥ƒ¿ÀPøÇ¿Þ†ž…‘¬zptƹŸ7Cwþ͸Ñ݌܆·âì¥+ˆ¼p ЦxwÃ;8uägŠ}U€›¯_€¬’ÌXt=øAx¸Z!!î"¶þxÍÍÍŸ½…î™Vûbs�cM?ûôl\ ¬ „FrÉjà1Mf]F°þó¥5øaûO8}âwÄ_ŒÂu7ÞŽrE]¨Õ¤C—vùfÀÑÑzªâݳªâE ]"l"O>ú~ì L™*{L�yy¹dUj!¹±ce-¹GUSAEK 2£ÏbÊôyR}Û»[a×w{»­R•xQš‘(´4°u—Ò°sã+°qñœ›ïÆwÜ€5ol€‹ÇÀÉíÔÄ$üµÿõ©~„ ÁbU±[~S[#½Ü+õJ²þq=r‹ªPPZ _/ ®Ú÷µª¸éîç�Íd�È’ºÁȶٙ™Â¬†ÈÕt7�F0ãò¥ pó‘&'/ÿ¦ÚÀ¹¤:ìúùg<~“²jšá¡åJÇ"ü‘ŠÓa;ùÙçàc©ƒKQÇñøÖ¿±ö…—ñ ýÆ7”¤3hÌK‡±V^û`ò3³1sÁuXóÚ›B™Yš2¢5ùrìÈZ[ϰ»%ÀåËIøõ—ßQ^Q˶,¾y9"R›¡Jdï�÷ˆã3eŒ`ݲu6ù… »·?ŒhÕ0ì~Ï0¢5ˆ,i¹p8�MŸ~.L.úüI<ñÌÚ~‘¬�ueÐÖw˜¸ ð™�(Œ`}õáUø5ZL. eçYW“QYV Ï)üÿ²¡Ä•ë>šê+å*ê:Ã× ×<¢ü¼ÿ0¢õ߯~8¢ýòÎ8ŽÀh"À,YK?Z_ÑÐÝ©¹âÍâ=�§*4¤½(ã¶EìB5h¶.#Y;—1ÆcU¸»à±úÉt—¶Hþbwƒ�²ù)G€#0„$&&ÃØ¸Ëç6ñ ŠšCÒÓÜëoAuQ®Äž¤tÓÝ#è5¥ø™f}ÄÐ’p%ýB€�’ÔSƒŒÐƒɪcíLá5„Äêž?þ+Zˆ<¬¥­"}˜ššáÞ{WãðÞ½(.Ê�“³lì)€|C5¾øê+4VWÃÆÉ‰ú3‚™ƒ7Y ±]Õ5‰É‘!%©ñÈŠ �‘£ØU®Œ*ÈËÍÅR"]ú’Ó§C ­-‚H4²®‘ÔT”ñß�6ASI‰È›Y݆ùüÓkɽ“5ÞÙø•)ÀֺËÃí÷,A6¹u ˜u¦†ž1Xê*ºF&Ð32%BË.äŠW©4ªäF•¥�ˆ�±¦Í‘ýÿv[Kù¬eñX¥‰VF°*ÅÚ“$Ç_„gÀͽÊhDq^&üæÜJ÷“7´ÕU``.^ìVTQƒò5—°=é®|æfZ­­ÊêZÃÕňèeë7üZJµ°q[…^‰�†{à"°+à;ÿÒ ú¨D�Èf¶&ä:­ä¦Ydj�+D6ëÚ;ÃFT� E;¸ØÛàÆA062FYA>Û° w­yËo»W3òM®„�tU(N«ÅlA…bѪkháJj*ާ�›äfÚŒ~K˜¤§¦¡™,X™XëjSüW}ŠÕì@õ"°pñ|˜™u�²ææ¸yéR¡noÎE]”Šõܹ®¹ð ÉM§y55Bƒb.sápFú�±²²ÄSÏ®�%…1èK””5 ªÁ­Xû‰—÷òØuçãëúß@ŽšºdÁjb>2ÿ—É1,^•# �ܼ| Wa%eŠKÁeÄø}ß÷BŸFÆâçî¡€»‡/æÌY>¤__¯v½²NÊÒ¢QO®¤kË. IRç‹ÍßâóÍÛ%—CzüàãõXyGß‹JúƦ“!íœ+ãpú…‹Ïnm¢…ÛßDNFj¿ÚðJ�ÑD êüÙÑì¾Ç¾Ù"£$õX‰pzAà·ƒGÁˆV.CƒÀœ¹óq1:zPÊS�”dñsø ñÆŽÀ„@ ¡¢xBÌc('‘·q=ÃNe°cOˆTöŒÄŽLº>/±öºht˜¯{C¨ÃþT…u¬ujϘ۞?O¸%ëXüTø˜8�Gà–[oênÉ:Ä£Ð7µÆ‚»×±V®N‚À¹È¼üú?±rÙ­’¬a=¶µµ û쯨ÍÍ€Ž1­%ç`à0ªdÙºòúÅðöŸF$¦yûJ‹Å/Ì/¼ø"ÜÝ\1mj ")þè";™”–•!€b)2‚5ûJ<Œ-íÛÛJN4ɽp«¢l|^ VÙù´»ë†U÷àRä˜ZØ (=™Ü�–@‹ÜÈŽU™3#¨Ï¡eçgáÎe·KÕ³¶²K�eó®O0Í»o}�Ûôu>+ësÏö­dåÜ['—^‡P^’ŠJr«%ÒƒŽ®%=XXÛc÷÷ß#*ì8)nЪ×BMd$¥'íbôÍÉ’Ú�†0 V-³î÷íhŒe }¶4Ô Mõ­\ad)&Y«JŠ Þ”�Êš²V5@úÕ+Ð$‹ËU˯‡�·¹ü.F^vY�߆ôøãh«(…-™ºªšMCK]%ßd¹Lq™« qø+˜ÚO%2_LˆêS&fæ8{ù* ós¡EzÿKn¦¯»i´µD¸nÑu02Ð�޾)âh#ÐW;w@¯6…¥Â†KÇ~O•¬*dýJ–²JÊšPR!s\’•7߀éÓüû­GžŠ3ƒçÀƺû÷¶«UU°Ä…#ÀªÊ‹Euûc?¦sk›Ñùx¯ýB /7 UU°°´é±~]e>•¡(Ǧ¶•ÉQPÆ,1Ö£:ìDôÿŸšµ�­yUŽ0Å—¼ �M¯ñÑ1(Ê/ çV³qóQùùûÁßϯßãu%‹Ó®V¬WR.ÃÀІäqŠËÄEà¥ÿl@Aq1|<Ü&î$ù̆�üÈ#PÓ5¦wjñ»ô�(çJØ3O›µ­³X•õìÃÕüµW”‡žRgÖ¨ék†RØÉŒâ°Óz¬-³x­G›^UøiÍàÙê/¼)X°*ädV(+ ¡PgñYí>Ù1¦‘â$ë˜þxøà8�ɆÀ÷Nƒ›ûTz¸ï°hšl t¾9¹â8NÓ§ -áÖÓxØâMn\öü¸&Ь/"7ÀmPÑ5EBb"ôtÔáê.¶Žd:Ò“bàìá‡%7Ü S"UfÌžïÆ´ÕVA‰>o'G1¡£FnBe¬LÇo?nÁ±ƒ?cå£/@K_L°ùÍÖ—½ ÷>ö/dÄ„Q ‡�_0k2()¾’Mƒá¡ürÛ×Â8-;ň öÆŠ{—ÀÚÒ6]ˆUɤ¢bÃqàØ~ܼp•$kLu)Þ®Þµ$hšé´UÊUp[s5`êP£w]#�deõ‰°«ª.ƒ»OLLÅ¿M5PRUGUy>ì¼g�Á*™Ïps r!"×Ã)ÊjZôÒd‚´¤X”•BŸÜHdž‚‘�7Šë4PN›!‚fÍ�%Å�UÑÒÇá_¶#?5JõÕp§ßžSôý,)IÆ´7áÔ¹xÜ´l%45ÕPTPˆ&z;ˆŠˆÇýOIo¶Ñ‘kq3 !¹yùÀÑÅ�¬Z� @.ëÍi9*2 ®ž~`î}àA˜Z;Ò[†œ\{·\튓†¾¹’&‚•ÈU ÁÊê´µÔ¢µ&Šjâߔֿz´6VCQY½«Š]wÝ1 %¼G€#0¤¬Zq3<½¼abb*èé›ÀÂΕ¬CŠ2W6TÔÕV¢�\å+)«¥Û+ÁÊúlkm†ŠÚÈUl‘�-Þ~Ÿ”»¼žp‹ˆ€‚ £3°ð=éåù�á@ äÈQœ¤4ïú%á~Xtš!ììâ.Áºí“÷q1ü,¦Í–9q¥Ãƒ€)…û‘¤á鸚™ }Ú@Íe|# CžèÆÁš|ë|07¾Ld BÁ ÿ0½ì¨'ýlZ[èÉzèQ`n€aª��QÑ=»OĵX{æZXâ¸dÏw`uéjxÇ}cž`er’u�7oÎàLn¶}þ™€¹åиe+K\äGÀÒŠ¬±‚äo8Àÿ~ñe¸[é¡J‰b#zC…\¥6UBÓÆÖ6V0$÷—Fë“Éî=ûð×áš1‹ˆO�deùʶ®ÁÊλÊÑý?P,F�žB²œ«)/ÅÔ9×!§²¯î<‡,í Q™+#X™Û¹ ˆ`­Ìº$´gVn¹¸ë+�dn¢5,ò<öþþ+VÝ,¶Î•ô&òÔ4”p))~î’l¼õŸ·É2˜5nV6øÎkÊ唙ƬN)F«B‡ a5ŠmªÎÜ:òX{s"›=}¦µ¬,¯ôJÅŽÕEbÔ!h“µ£Z§Ï�•�GñôtÇôéÓaii)5üã¡!D2WÁ’Éá– d1|!ô¦ÎX gO"%•PRQ{ #ÁÚ\‡â÷2‰ŽKDA� ’s‹ýšR”7©#6:µô2ãéJ1E´Í cí{ Ïïp�›žš,ÜWb#¡B÷³»ï4A'#X™|EqIZ)~ozj ü:ý¶ébFßù¡E•v‚•éd‹Óß}ù~Øú–,[6TÝp=ŽÀ"P”ŸŽÚêrhi³ÿcº #XYâÂ(R{q¢‡î~Û¨&�ùiU§gnÓ4ò´ï\—-0ö´Èع;ÏÎÉ�.¬œdíŠ ¿‹xúùŽ+‚u´0¤}ôÎf#¤ÑïW~F‚`Ýú¿¯±pfÇ» ü£ä-8ò!À,H«÷ ;Õ dm£ÎˆÌÑÖ/³TeãÐ75)(¿œ¨ç•Û"X¾ÊOUhj?úO#a½Ï¥õkãš,=#�§ÐF2Ò�òþ8ŽÀh!CA¾ä’U9†™3:­ÎmÉêOdÀ”é��³‡ì<üìnYÃÙuÆ�é䊆�Ÿ¾ü Ó]Å„¤HËÚVÎвꈵع—øøáÒÓÓ£sv¯çŒdu$—EñΣ©¸³—Ý{±þ˜ä,4g ó¶ï?Ø«žþ2’UM‡H:²Äia$+“àiD*»¾ o?D'FÉ*& XþÛï¾Íxý•×…ãxúsþ|Ο#Kc²P¼BDë³ÿzMjøMÍ PQVkÏ+ÌNÅ®/Þ…WÐb,\~G{þD>9þ¦ S¼}ö~7ŽútNÿ€Ÿÿºmz=ž…ÀîFQ^b"áJ­‡þüIÑøú¡»pª¸ gCOã†ÛîBnf&T L8{!ÒSÎÔ,�÷~÷-‘åþh¨­€­ƒ ||Åÿ'\³NõÉ^@Ld$ýÙñ½+ãâãàpúF€¬L4{ YûÖÀkp&Œduôž'ïáq�?y�ä3åp8ŽG`,!g©\¡4[—Å9-’U‚³ªm ?]a°öU]‹uoJ²eA, &!£D ËT™Ü’µ€x1G€#0q` Æ/>ú˜0!yŽŸ}n2³²d­Œ\*+VYHk�…Zcu.ô�eó¼Q@ ¡0ùy…8·o–>÷ÅaõÅÑO_ÃÙ˜«ÛúDjÊ0vñÀ—Ÿ|@£S€¥•5Åq‘U«>^xærê…†¼”]M‚n'R65æ Ì:¬ÓÁʬXÐÂÏìå·Á–,`%bf¨‹Ü¬LÁÅXÀŒÙ’ìA¹ÚÙŠuPÊällma –ºŠ¹©™�eÖÅ}öÜÙsÁ’<w1ºÚ*PV|ìŒj²Xnl¨�*Å •Wrs³‘›“�[n[…™dÕxø—?ð築„oä(«.„Š’*”È5“šÊ2˜’ek'r]+¶Œ–·ÏñV_bÁZžŸB®xÏÁÜix6±œ={ YY°±‘Žó+ /c[_Ì™¿Aó—ÂÊYlýõí7[p˜Ü¦¥’EjNÒ%øø`éóoÃsz0*É}³�¦ÚJÒQ\Þ ýjØ» qVë[ñÛïà?>†�£+RÂ�šNåý'4/]ŒÂ‡´Ù`ñ�7Én{ÞOÌ7m©g÷�<ÒJ¹(…²^÷ï¥Õ0rµ¿žAúT6Bø/þÍ»ápFF¬½%÷@~ýy�Üm†¢Arb ÅÚ<ŽÙ³ú¿ð>ýr½#P†Š¼"X‹ÔQ�/T>•S õ¬^ûŒ)«D‚ÄÈ-ã�ɓϿe%u(q¡ÔŃßÑÞƒcÌ,,¾ïe¥' õ™ëßþû…pÞõO¹f‰KÏQlÍßþ]-m¼öÌ øüÓçaä5‘aÏ�úQRSQ ÔÒ&ýòJ@@0üüÐP�Šzñ^¸xÌ UÛÕéH“a&VŽ`)#%§íÀœW·×�è'zfÎð§4\ræÌ)œ={¿ÿ>§[YéiØýý7x”6Ù°¸¸²äéµ/â\X(¦Ï€¯›5ÊZTðë‘#˜ín+�*µ6ÀE·uÓoDF x̸UPsÛ�wÃËwJ»ÊªÒJèê÷�ÌLŒ¹@n…Åm}üŰLÑî_aF€?Å0¼«CÉÀ5õ%§}›ê+�¦2Š�G1sU ú¬Ï+p8ýG ­�–#Húç*µÿšyMŽÀäA *4D°†ÈÛ¸^˜4³¤í�§;yà3�h<·æEÏœhÓš0óI£õschitx(È䮤ˆ×œœ]Òœ·áp8cÂTòüe¾îÕ û‰pwÁö£åãpÆ;ŒdMJ¼„›oùÇxŸÊ„?#Yó“â໬Ã�kEF<*ÓŸ['¯é¨mÓ„��²RcQV�ƒ_Â�÷=‚ã‡ት/ÉÄ&!ä!ßc^ïVj2óÌaC /MìöÙÜÁcÈûxûžqß«ÿÅö¯>„§ßtÜñàÓR}0’•%F²Ö’µ«"ÅkU׿d–HC|ÁˆVk;‡>µ††ŸÃ+kA~y1¾ÿnL�ŒqúØŸ¸gå"93;WxN›�˜‹ñÃöoñág›¤tf]ßWÖN½ßWŒ`ýå»­xå£/¥Ú³‹çŸY<¸æ­ne#‘ÁHÖæª hèY<‚$ëþ_w Ó»uEÇoðHÌ—÷ÁIZZÁˆVe%�‘ì–÷ÅU*ËK £7¸MqlbËU1±Ê®]öý�äU‹`<»Âvÿ N²2P¸Œ ù¹Y0³°Pßá O/Ð$i´÷óopÛÓ�ŒèlÉz%9×/åë# <ïŒ#0£Ã…Öî~AƒÐ2±š²ç1&}¹ *�Ó?ŠãtÜ|ØŽG`Â#àâîË Ö1þ)›’ ßr m¤“»Ð®’Ÿ›.dýóÅã¿o½ - 4+(ãá§Ö¢¶ª 11ȾҽkÄÈÕ±D°¦^æ2Ùÿä^�GÔ±½ƒ†!.2+ý�¤ô0‚ÕÎÝz"}èéH[~»åK?*¬;wü@æLÊÏSl-¥„_ )²ÖêÒìn}ÌšŽ/7}Š=ó4¦“«`& Õe(mÑ÷^G~ý ñ1b/ >þ~ÝÚ3rµ+ÁºãÛoñü³ÏIÕe¬²ÖÚª«ÐUS‚•½»Tý‘¼PQ×�†1¹QA‚•Í�‘«în®ÔGrά¯èè(¬Y#C0Ò}óþ&JŠªœ`�<7Ÿé5â)Î9#Z+l1O<[P£¦€ æ~njn38Á:XdyûÁ †Ö=�‹çCåVÃV–FJb"¢ÀÒd—„sQH8ß7q'ÿ‰ï¿FaQa;dõõµˆ ÐUIWÒÛóú{Â,X9ÁÚ_´x=ŽÀØ@ÀÈÌ ,MVa„*KÌ‹ˆDØóØD Xÿ>ø›dJÝŽ<&k7HxG€#Ààp:Ø¿ë{xxûvdt9ËHK�ž¾!ô Ä»íÕõLP«ª…ä´xŠ¥ëŒKÇàîûnƒ¾.E8¬¬EUe9¦ÍÂ�+oÅ_»v ª¬VN®íZ÷ýHýùôÜ_{Å<9·çChé›AËÀt{{]Y8xÂeê¼A ¬¥©fÖö𚋎o=Š¿ËD¡¹çÿØ�„ã¿aêõ+…¼è¨óÈK¼ '{îb•ÉšËdÍËÊÎF@à L§$¯XYY�¨« P[G$$yÇ:‘ê`Þʾ­IMì¡¥§�Øä+¨©©…©‰ ”•Uz.ç.Äcæôî.'N|.Ž ¥­#¤Þ°¨nh„ªrÿŸezÓ5ÖÊ2n[TÑz² wÏzë^ž[&ÂóWZÊe”•”ÀÁÅM&äœd• Ïäp8�¡@ÀÞÑAAA`/ƒãQccpêØ_˜³pq�÷sti'X%•Š Š05p²3“pÇÍ+aåá Z(:û÷!XÙ™ÂÔ\ì‚ÔcúŒv‚5=)¡!ãÒÅh̽®çþ$} ÅñÍ7ßļyóúTe?m±ÁúǾ]pñ «5.r!ÀÖºŠ,¨jI¬�•X9¹ÀÜZì:Ì�Ü3ñŸÝ¢t�̹íñG0¥ÁM’EÅôo,Ô蟾َ’âb¸¸Ë~`¨Þ‰ÖÎÜ1X XóssÈu×e8»ºá[ÂN__�6[è·OW“^¬$¢¥-HVW/™ô£‚™™9„dÞ;1GkÍhj,§x¨úd%_ˆŠÒthŠL$Ýø˜›�ªò"ˆhãÙ˜™YPŒåÞ VqKhjj I¶&žËàp8ýA  ÕPRP“‹de {Ì‚u",ð1ŒÁÊ\çm|Õ¡'Ð��.@7Qæ'Lf‚ÿ±¦g}–†S.]¼€�Þ]�ën\ŠûWߎܜ¬v�+òô;™Öæ†R´¶ÔAQY99¹¨ªª‚ÌòŠ–žìì‚UÒÖÓÍyÐkks­ ŽÇh— Ê��ñ‹@ø…h¨‰t ­¦:~'ÑÃțѪ^~ZA3x¶:{FÉXó0y™3îŸÃô �z$XŠ=àÁ³9ŽÀ¸@`×®ŸÀùHIÏ”¿‘œ-®¦¦ÓNÛ 9[��êîdÁúê»Ê5 «WR°ýËO¡Kq¤|üƒaá?Z:FPUׂƒ§´È¢µ¼,_H¿íÞ�Ëqñ‚þôäx¦'ãµ âò™ÃB’«c9+‡„„àäÉ“½¶Ê�;…ï¾úkZ-Ô‹;‡;¾ƒNý¤Gìµ-/쎀’Š&ê”ôÑÐØÐ½°S#W­~ºS`îá=k3”ä¥IåïÙ½o¾ù.bã¥òå½xþåbéÊåò6TýªÂ+ƒj?”�k*JÀRÅŒ,X�iñ„‰�ƒ½�zkûâÞ#Ys³³ºUk£Å–ºJIq.ÎGœêšÝíZIY‹HUñXº"ƒ‘«%XYŒV‰´5׃%y$:BÇFž6c¹®‘‘)Y±öŸ`ËsácûÔfËE0öGÎGÈèuC²a�x ’}ϼ£#ŒYlYóu¯¢*ì4‘­ë)½ÕQ�Ÿq®!àsÍÊSO­AÀµ�œžh®/E}EªP!'—žÃÏGö\¹KIónÒE2³ÄÏý©±¡`‰ G€#À� pîøqœ§4E<^9ͺ.ûO´O¯*,¤ý|¢ž(´‘LÔÉñyq¼Ãê@IDAT8�ØØXa’ÞÞܪNÞOû“o"’ÀKçÏêwÓêºzhk¨·×OO‰ÇÕä8Ì_zG{;ÉÏÇ-4ëäUªÂ$¼()LÁ"`ËÊ*4c>‘¬yØýí/X~ÇÐÒT‚µC‡aq¦˜|2²qv¤Â÷í€ÇÜë¡cl&ÕWUaÉêºàˆŽ<¿iByè‰C¨É‹ƒ­�šª•QEäŽRU)ß Õ~8/bc"áí;m8»6Ý•ÕÐÑÖ�þZŠóYWUÃk–Ðo½ô"‚æÍ%×´öp£øÀãI¢)&qSâ·p[ð4D&ß÷…MQ¦˜”0¶q髪P^ZX@‹%1èÅÊ]–¢³þŽÀy ¡L›.$ÒÚX*œ*ʈgš–šGgIÕqs¬,H$ë}ŠÓªk‰ÖúrñüÔõú=þã–Éê.qiû­€WäLb2ön„¦• ŒƒožÄ(ð©s&,æYuèIhϘ;!b�MŽO�Ïr¢!PU] F²ºPh�ÎòÓîÿaÖŒ™]‹ð¢o2pëåü¼|AµYn:÷/ëü•GïÄ]�=ï©ãw#¼¬yñ<ŽG`ô¨ œdí ^ÆàpF�¯¿þJèõñÇŸ…Þ{î’¬¹yðtì°˜ê‰dݹc ¼<}(FáÄxon®BEy>ųìx©*--Dmm9ªkóáæ2ï¾ò8–¬ºz×È5G阫{6o€‘¬3®YKBöiWåw#X{¾ Ä%_¼»‹ÉõÔÑ-›`´*5UXþij}5²òW^xwýã±qK´éi©¨«m‚›—3äˆM6TýFϺuÏã÷=?_éïBg�¿íÚ„åw ý}UV˜‹²¢\²,^¢¾¡¦õ5ÅÐ5qoŸV=¹ßU&×á�IÖöÂN¶nÚ„…7Ü{göC±è ñjM ïéW¢àé·¨‡ÖÙQ.bꔎø®µå¹B¡¦žEG%~6©=z3/�Tsæ“åp&&qdÑibe н:ÔÂÕj ÇÅ‹†÷ùAè„ÿápF �ÔÄ‹BߎîþÈŠ;‚Üb5¸ùŠ7Dëê›áTÈQ¡|μÅ}ޱº² ªjê”4ú¬Û[…è 1( ¢uÉÒ%½Uë³l׿O’µÏмG€#0é�w#{^*Xµ0£ÕÔLOûÞGt-Ö½9ìFY( }ˆ‚g£³åì°w,£î.X(<‹#Ààä$FãçõÏ� ÓÈb�¥Ñ–ÒÊj©!0 ÖÎ++´söDtj»¸vTÖÐÄå´±ã Tj"Ãp‘y5™WÅ/cL}iI!ÅÞÓCCƒ9„ó‘Ñ0q°Bym%ŠËª�›‘$5ŠÛ{iTV6ˆ®¬Rëá"=-U5ÀëÖ`ùm+qãà*³j¦”•‘Ž÷ß\ÛCË¡É~÷Ão&-ÁzæÌ°Äd÷·oàÙ'žÄ_h€-ÅÅ9¸œxjmMHˆîÝ×师Qÿ»h¬.Eþ%ñ¢Jÿ[I×T×3–‹`e­;V±®çÉúýJBœp¡¥­;'qLÐ*²ŽgI–0‚õÑ'Ÿ“*ª­“¬R™ÃxÑÚT޶֦aì�«–�¬Ôd°Ä…#ÀàŒg²Ó:ž©‡š`e‹‹lñŽÅ?ýâåuÈ}ûi8:ˆ7&5·T¢µµ÷ðãW>öáC =3aa¡Ã××2O°`�µðÖ!ù}‹}à<.ÞrëVRÕ€ª–>ر?¢¬ªu-ãþTíµŽ¾¡a§r58yzÁÉà 5ÅP¥Íª×ÆS’—‚’ü™»tª/>eÿ>öðRùÊjÚPIå çEZ ¨Ôán~8ûŒî’ü,Z쪄æÝzwí»–Èù+ñ'alîÔµhT¯u á<ªcà�÷�¸˜ 8N¶¼ü¦ô¯¯Å˜DÝ·•åŘ2gñ�ÏZìz®Õa§ ÝXÿü´ §õ걎ZÛ   ,¤!ï˜+œÐ|úågØôéÇxäáÇúœgee9ÔÈ ²«çeâÂÉC°qá!“ºb3×­ô~0çde^…³× Üpû=ˆIϦ°I"8:»#ãjêë`FÏמžnB’Õ¯©±�°N¢¤¬"«XÈk­¯BAI)ŒMø;s� ñŽG`ThF«zÅ߇Zu‹u¯ËÛ�–±æa4f]…á«¢•GBÔ¬íP�6=66£ê³·yqwÁ½¡ÃË8�q�ÀæíÛÀˆÖ-Ÿ}>îç2ÜHNKƒ‹ƒƒT7wíÀÒ»VKåñ ùHLL¢¸«*øèà äVØ�?ù6¼ó¦ èÃOÄî¡å×:¸ÉD°2qñìÙ]k_=„…†"Œ¾µ/¼ˆÌ”$¨««¡¤(»¾Ûÿisáæã w_ùIܾú�¬ågΆ ¬º‘âúh`÷ÎÍØ¾óg4Ô× p\ŽK"·Á®ãš‡îº 3ãñ§;\üÊ´ˆ17Ýýˆ@´ºyË\cÎÓ=)Áúóñÿ·¬~zXÆ4¥­�D²fBd1ðŵÒÜx(4U@ßvÆ@†0¦Ûìùù{xºû IÞ�&Ç„Y�…à%wÈÛ´ÇúŒhÕÔ6豜pzC€‘¬qÑqçýõV�—q8À@úå¨Ü#Ä=5_÷Ƙˆù5 Óä*G �Èó焞§Lï6F°^¾�éÓçu+c$kqnܦÎìVÆ3�À3ÝM›WïAÔù3˜;c:¦Ï_‰¤ä$ä#;3 µ�ˆ�IÃÆÏ?:KIJ„³«ûà;æ8ŽÀ8C€Y“V…‘kð¼IÿŒÄIÖqvóòár8�áBàã-ß`颅RD+'Y�6#Xß{÷}|òñ{8‚)Ásq2ä–ÖUedeí0p’sð£z GvCÏÚŽ–f(ÊÎ…–±Οø £ÎÙW'¯©ðô�6ôO�ŸºO?÷>Ýü.Rì±ËnÇŠ[VµÏü§Ÿ~AlÜeºß^nÏ‹'«WÌê{Eð¼…046‹C”Sb´xÌݯû˜TżhkizSPRp¯�5…hª.„–©×€uŒÕ†ƒ!Y;§¶¶V²pjƒ’¢Ò`UñöŽG€#0Š0‚uÇ{ëñæw?�â(&~×W’/#5%‘\¡®œø“í4ÃÛ�+—b)äÌUlÛþ]§  —,UéÝ‰É 7½g©ÎøE76oþ ‡ö|…-[¶ÃÔqRˆ`m¥gîØøx9[àÛ�oÀ}ö-ˆ��ÁÌ é8öç|¶õG\½šŽm[w`=m¦NJIÅÕôt\ÝÂnúyG€#ÀàL<¸»à‰÷™òq8ƒD ²<UÙdu2x7�ƒʈ6ž:†úúBŸO„¹½ ¹ÔäVˆƒýüñÞ~û¿ÐÐÔ‚�¡1ŒˆT²ÖWFCy&L�†ÇZo°cL{M-ìýå¥ÅÀÀÈ µ9H8}ñÉPE òsáèâuMÑ`º™pm?øàaN66¶=ÎmzÐ,¡Ì�Ü|åæÀÊÄÚ::”t…|oow˜šÃÔÔ¨Gc¡`ᢰ°s+ÃËØÌRHc;ÉÉE!¥Áˆ¹3VÕ6ŒŠ1Û–Y±š�ÛÿÑ‘6´QÇŠ Šýî¾¾.5U©P×­1÷{¨¼â#ðÇžÝäqbâm„ayw�! gdŒy+Np••d£¬4"�ÉõN)/Ø¥%Å„S1œ\&—% )Ý_KoXŠåË¥ÉeF°þuàG «1‹<  ï�ýÁôËO6 Õ,­¬eVñÕõX¼`ŽÌ2ž)�€†º*fο‰¼ìàû­o þr>Rˆ05¦÷ø™AÁP7qAVz ì,�áé3Ko\ˆ£;_FF‰jjª0{öìܵùy¹˜,~ßÏËÍ@uUD"Áã¸t‡üŠ#ÀàpÆ=œd÷!ŸG€#0”OŸ�` ˜mE¾Ý+ Ò¡¡3¶ÉŠ�ν¬(‰‘'`n×ݽèé£àܱƒ\tÓ@Õóv�03·†èZl?F´2QS\GM(«‰¯;U÷§"]úÍAY½ìípá0íÒ.n£ÿ|óç/€¶š"Úˆ|¸t)!Çÿ‚ßnÕÊ>ôÐÐÓ°¶¶Eo$«äæÈ&Ë`Ÿo.¸I Xßò& Íí I/í­¨BuM9Ýsâ ’6£qÌÏÏFA^N·Å!5M]hji#ýJô &&É×ï¶zZ@L‹@]M54t»[ïžùelÜy¼Å®¸u½?Gñ¿-»f�©k¹V6øææj(«h iLM†fTHŽ�GxÈ ÏŸ?ªãà�s8C@CS‡~×Õ Bi¼ sX²gǰ¸404wkbbnƒ#ϵ¯½v½7´é]ÊgÚláù™mЕWz"Yíma Ï ¾žðdVªl³*Š�ja!~ÞliUÁ´€™DPσšb ÊËKáëíEnœááî 3KhÒš‘‘…+ áêêŠ:ª“™”€øèhÜ´r… ó÷¯þ'whé ×üG€#ÀàL,E²¦&' 24Ž®ž >ŽG`Â"�—•‘nÏäÔ)þ˜2ÕÊÊjˆû{ê*K``Õ�ˆ¯íÛ¿e……ÑK�±¥-4´º[Ú:ºÀÐÖ™¬yËñǾ]ð™:v\dŽGÜ%kç±Ç^< Âx" # Õ´tá¸fö®Øüßwàf¯ 5"œëh±éÏâjJôôô`ek3f ¨¯­ı;V²G‘±Íœ9§_ë}+o€¿‘)4ÕPÖR,ŒÍÊÉ�^ìí„s(@MUªªê#2îÞ:©®®Äå„KЦÏ\[$ý[S^Zˆ‚œtZ˜°ïM…TÙù ‘›—Kss©ü®I ±¸P°ïZ6Z× Êšhk®ƒ yHÈÎÊ‚~—E³Øs§¡D›. Æ�ûäÑÂðìÙý¸çžgDnÙÆ:Ñ*/Fœ`•±ÉQßÐÄ„¬“ã£æ³ì‚@CUmDÔî’;>/'ÁÊ�Ïxþ"YwÒYë°­ãíÓý曯QT\ww�13tF®öD°²Aö‡`]±p*¼ü¦ÁÄÌbÌÌk$RÞЂŸý =5åv¢UÒokkBÏž@m}úEG¥†&Ö¨­­EcC=TÕ4¢ÕÄÄ”ZSĆ�‚±�.žzé‰(¶¶ÀÞ'¨ýšŸp8ŽÀÄB`dV'f|6ŽÀ8E€¬÷líuôŒ`Í‹þÉG¶ à–àxs¯õÇc¡>=ø ‰bev–¤„¸öK'gWØ:8aöÂ%íyüdh`ë�ß~%SY+qîœ8þ£Ì ã4ÓÉÅNÎÎP7sGEM , ‰T%¢ÿðÁß4{f·Y]=ñ=.n_×-83Ò®\&WÆ9ÈËJ#ZeInz*XMyù?ôÌó°š*~Iáŵí+—¶¶ž�ØyaNª�ØùPIqy.² ’ÚÕ}½é=DFœn¿î|bff…Å7¬„©¹ôo «Ã,X}§Ëg�ÅHÖ¯¶nïÜEûù�_Ú~ÎN’c¥®ÇÂ…¦©ò KqüÐϨ¯+EScuû°TtFÖ¢÷»-›ÀÒx‘¬Ìa¨W¯& $ëx7'G€#ÀàÈ�@UÞ%Tå^’Ù0õòYr¹)Þd&³ÏÌ×½óu¯Âbݛâ¼)}å•×pËÊUÃ2ìèȈaÑÛ¥ë?Ú/ß©ý©:.êlÚô!Xê�ÜuÛ*x{J“æ±1qüØ_ÐÒÒBäù󈌺„&zO¼’ZˆÌœ\|¶íG"X¥7¶þHn‚gßt«�:÷ë5ûÆÎ—üœ#0î`¸ô�@îÆ7e¡ vïÂ>óä[çO˜ù õç1(KV溂[±õGÂõq8Ã…³`�2c¡”ú}ûvÃÃÃK*¯²¾ FVŽdq׳ūTƒqtááá)¸6RVUEÈ�ÿ #×3/îo'’‚Å 52îXì×Ó7ÒÙ¹X;`:Å%±²¶R½ãI™©¹%ݰ\æ�ÛЂ¯»Ÿ\ùÁÒrbÅæ›6gtˆX3·q¢¸ƒšˆ‹ŒA--’�úóWX飦©Tþýömз÷…¹SR×7ÃG>°²¶‘_H&�È,¡§†äÊÄÂáš%+‹w)½í§m›Q]W×.¿ènÀMŒi“Y=ÚÂΚ\Y)¹J®Å:KÌß»�Ÿs¹™Éppè\4¨sMuTÈÒŸ¥S!ä:® Q±W1oÞÜAéíOãò4°|i÷ŠK´õ÷ïûqݲ[5ìwÌÕûW•,j&ÁF"þÛkå!,d¬S‚æP}jX ¤öü„Ààþ»ÉIÍN„©¡%´5tÆ=Þý™€"Tñí÷ïSÕ¦þT—u.ÅDÇÈþæÆ&hQ˜••�sgO£E» ©N÷£­ ž,9¶cRT*Éí×”y‹döQšrß~ú1žü×k2ËG*3“Üïê‰Èß©³Ú»þöûÿÁÕÆ n.¶¸{ßÙX¸R6¡ßÞh'ÙñQ0$÷ħBNB¥¥–4–äØó¨%W[äß�bî*Àß×OJseIt eÿ&KUÀ…-DùlýIî–Yéi°¶s”»ÝP4PRRÔˆˆ< ñ›(Õ-{qbÂ^™ µ¥J[[« W�â1sé�¶–z1NJ=Wâ%“�¦*€ÝŠü~òÞ|榖nŽÀ„FàäÅ+ýšß•”$ò4qÂõkÒrV œ!g  ¤¬†zâµo_46·`ãÆ X¿þ}\ŠOD\BüpÇüe=s‚b´æãßkßÂ[w`Ê´èk) #+_î~‡³AÞÆõÐE[Fiøi=Qð<]NŒ 'Ú“G·jÐla—7¿ŸzÿÌ…÷êu½×ë¥É« ¿!­Áslµ×½f«z²‚~KÆú°G|| m$#Þ+ï�#Àà #Œ`ÍL¼ïÙKeö²áµWàêå…wÜ-³|2f¾üôCPÑÐÆ–Ÿ~ƾ=»1k¦ü/$Ã�[AIŽ@²‡î±ªsóæ¯uñ"¶|½e¬焱N—kŒWãÎcýKO ñh"þþ *6xé�Wá Z=×@¨ˆ†Ör:zç‹pºîqh›öM¤1wâ¹”¦Î�M²úrL¬½¡lh¿ÃoµÙ°Yçþ†¹™øK�3:&/üóuxÙšÁÓËuuM¸r5›è> #«CGTøú ÌXþ“ÒñÁ;oÁß϶d¥“��è¤KX|ýÍxå¥IM!ü�­ð^Ú+Ñúëo„6+–¯›ö¬dñý»÷û°öu¶©alÉ×ツëVÞG÷Þ­q;jæê§*ì´L5Ss›eæ&“½rЦ×Á¨àm9“féÌ øÉ}ðÙs8B€¬GÀSϾÀñf¢¢"‘HLml�™_…X"Z•h³“·§+,õuñûïß#â�£ØôÓ>øÓûVE9möמ�¥’©VV×¢¢ºÖfý۬ɬ«COB›Þa‡z#¥dLãñx÷Cw!�6ë>÷ÄóãqøzÌl0'oÇÎGÌ>�ŒÛU¬}U—ÿ†ôü¹p’µglx G€#Àw””#,â,nºQ>ëµ4zQs �°6|ˆ—^â/k£ýÁO™5[>Û„iþþ£=™ýoÚôž}ö™e}e2¢ÕÞ+@¨öþ{p!,?ü¸Y&Ázä·X²|u�*ùî}LŸ»–v²wqW¤ö‹`� ý›b±^%‚u!̉,ì*1ôrýÃ7›ñß oCYwà/Íe¥¥Ð7‘ü÷Ÿ‡¡§¥{G'hkjCM¯»½7ž|™…ePi«‡¢Š6¾þßa*vöVøß®½RDkîÕTDRŒ¡e?Þuº½^ç¤#éü Ì\ñ€Pïlh8v~¿ eWaIqw5õD˜·p9.ZØ«Y…—/' Ùnn.²Š•W]Ym± øJÚ¼ÁD‡¬äÇ¢¤R<Ù�¬%é1PÕÔ…ÈÄ®_Ób .LØîöÎb<»Âvÿ agrçü±z^{\š±÷‚±:D>.ŽG€#Ààp8�qŠÀ•äüðÃ�x䱇q¾ô®²wß>MõG~Â/hUwÂÃÏJo0í<Õú¦F¨«ˆ½ØtÎè9#Y™¤$¥ÀÂÜ”\› TÕ¤j÷Öwûpÿ’¹°»FNGD† óœ$‡†Ö6¨)ò ¢2ÁÆLöŽ*y?å±À‡h®ºW (œ˜)¹�—G¸Ï.yÐâu9�1…@FFƨŒ'™À?~çåQ黯N �8³¯jÝÊÁÊ„¬Ý –ŒØ˜X°Ô“\8sz̬lÌ%XY[ ÁúÍÇñÍçß#*ô(ŒMMñÁ†wpßm·áá{îdÕ�šM)F8ïé�¥-í î�`emdY°¦ÄžK�Å‚ˆÕžVVÏÊTó<ô‚µ¼$!¿íܼ_çŒ`½z%gN†ô«~×JNÎHO8…˜“¿à�ÝŸ£ 'µ½JcI.Å$=ŒÄ˜HÐF G¼·IË–UJ¿š�ˆ3aøôÃŽ< {GL[x]»Ž^OËÛ‹�,íÚ Ö ‘çp64!ÇÿD-¹ VFDªµH‰ Çö/7¶·‘œ$%'áý�>�\v;2ru8Ö†šBÂ+ ùÙiBŸŒ\«+à@VÖND1zÕ´ôØi¿„íBe‰Y­j‡Ä êæ•pÙ÷7 Ö½1nV6QF®jšÚ÷kμG`¼!ðĪ[‘/5ìæú4U‹Ϥ øG€#Ààp8CŠ@â¥óø×ÚGÑÜ*öòröÌI\N¹‚ËI‰(ÌÏÂÜÙ>˜2¥ç ¢Œ`ͯ(Иã/Él§£­ –ÁÊ¥ÿt&XY+F®öD°²ò¢&îø“á0Â,%%¬®­L�eßü’JüÈfb)œXld„\½(½I"W ^™#Àà ’Ÿ;;»k»ƒŒÌ ØÚ\Ç@:7¤øƒ’4�öÃÝFSSs¸»àú‰À±£Ç`jf*¤Aª·Í§Ï@sKtÕ[P_S&¸aÊÈLÃÒ·PÜÞY002CÀÌë…ù]޹€â‚<™I[‘ZÚ¹É?ÚŒª¡­ M­I¤«–$†ììl´5×CWßš:(,­€�³ÔÉŠT�b‹æ\MÆù�?àä9UҬף††Rb±|Éõxéõ×{­+«�YÀþu;ÜÝÜ‘�œkGOú2Cý¶T`ó{¯¢°¨n®ÞX±âf8ûH»r>sø ŒLL(†kÇxEúý°ªeky4 e'5,F°>ýÐý pG]U5Š*[ ¥¬‚Ê’Lé4SÈ@uL –¶,,))t¸¹È¶<–ê ‡‹ºªRdÅž„¾…S5:²[ZªÐXŸŽêÂ4S}=#«ŽÂ1pv…Hg‘r9ZJ¡¤Þé³h­”å¡’ª:²¯\BEQôŒ»ïºÌ¦ûO‡þÿ’%aa!ˆ¥­—óojÖv²ªŒhÞÑ£Àѱç+É`$Ï.žcÓê_2N~äHÈK �Šš”Uµ$Y²�Mež½ .¾Ápñô”ª£¨¬ EU!Ið ŽG€#À˜4øy’ãà:Ìá%&  �&zâØØ;ˆßWŒM-¡¬¢ ÚÜ0›¿øÊJ 0¶´ÇÅ“ ¶Íœb±ÎÀ[Ï>B%½`ÐåY[YI zôþ(¯4ÔÕ`Û–Ïàíå MÙÏ "‘6XâÒ?ô´eãØSkeZ8à2"IJwûVÁE°*½‹Ö™Z¬{]x/ ï¦#ïdL!ààêN–¬ò­q’uL}„|0�ɃÀŽƒ{áãã {+›Oš‘«#M°JËHV.#‹À/ûwBGG—Rÿ-µFv„ýïÍÛ×{R¬¤‚g#ô¯?a¥Þ7G˜™è!>þ¹ìõ…m§ gþúC YÝ|;B‰y�Œ\íL°JÚGEžG^n.,È%ÈÞ={r¹i—PY[ 'gOD� Ã娋p÷™"­eEy00± $MüJô±ã7›?Ãcw.Ãwßl�_@ ¦RÜÔµPRÕè\­ßçNîþpò[ˆm›>@ue#Üé70é§�°_~',œ<°pÙ*èhj@E (+Hƒy'º¤°·ßŸ}mûb#-þ«Ñýi!®«¤.E°†‡‡cΜYä:ù,[qýy‚ê5ÃÒP ©ùppðGÌÕ ˜ˆÚ°ù³-ppõ@A~>é3ƒYÚ†`eRQÓèÁÊê¶µ5²DF>}……E¨©©…––|/ßBü³kÇv”’åqCm5â/DÂÁÍG¬©©ˆß (jàÀï¿ yFFFýê…-¨ké‰5ˆ¹pÙ©±Ð£Í ?¾ü/Xzxµ­ÕÅbkh% ¸ºxbFðü~õ1•ΑE÷ùS'áæë×M]jj2¢¢Â1mZp·²®!!!X½zuGvmPGI�/8u€ÂÏÆÍ�5ÚÒ�Ú(õ¼x—|l+ �fÂÐôÚoq—úŒdåÂàpÆmÍÅ@K ”:6:ާñ�ű›Àˆ¯K éG“ž–Œè aäiÉÛ¶ï@pP Ü=½áîzmƒgk È;ΪÛnÇ‚… qÃòÛ k`*¬NC@x§çe¢¹±ÕÅ9XtýJ„†üU55ÚøÛiCæ�Θ+ãŒ>yßFuØ)Š|/¼)�­Œ\å«üŸ�ØÝò[(Ùó ïX-¿‚IÔâÿì}xTgöþ;›ød"w7âxÐ ¥H)*Û–.ÛvÛn·]~ÛÝ·Bm·Û­»—"¥¥‚»H€¸»»Mdâú?ß�Nˆ“� Üó<7÷ΕOν3¹ß÷ž÷=ŒAÝV˜wÍç,9î2LL¯ ¸ò ëôðð]å=0Q<À&Ejjèîê‚—«ûDiߎ î¹¼n¼­|óFæ�ÝÛ·ÁÖD™i©05‚&ç¢�øæ[ü÷�ÿ¡³­ ¦¦º°°³ÁÔ9K‡,´(3™ä_M†<Î\ŠŽÃo‡Žp¹s;‘�Y%”w! ÓgLGe~2â’s1mF0,éŸ�«lQW‡XÃO†âƒÞ�¿ÿ L™: ¦:*8wðgøÏ[¡,bÔkm]Ûv9½,òäÃ()-F�_Ö®²d¡P*ªº¨)LDA~6Œ¤VÊCÖ¹¹yÈÍ˃��í€c7jGÐŒ™pr÷…©µ+ttõ¡­ QÑåVVoFz `)ÈÚ`eן9~ ßñ=VÞ³S—."€ÚPQc‡ÐÖTC›šÜÂ>w5Òägw'‘h5ØÇj¶¶Ð‹¡GK“H G°²ëæÎ�Û÷r5  X…–Ij2Y45û‚ýÄB惻&é í×lMÝÞÿ«Y«³/£¹¦†NWÓ?tƒ¾›(;ø5ýªá?òà=À{`Ây@ Ô‚@@ï lámÌ`à*[ê(•Iks:æBù &#_¿éééÁÊ’RŒÐšÙöŸ~æÖ¢1«~ùá+$_9 R*+-…‡wßÀÁ=ß¼ŠúšJXÚ{p×�äOEARÂÂ-h>ÜÖSJ©™̬FrùmuÎ#�­§±y‚Ï—z[u–ï ® Š ê:‹ Z5§‹xpõú yÄY4üº½NÅÒFÄ@ÖŒ{ç!ïù�T ‚)Ü¿d%(ÛZ”Ç�Ûý�ß®ŸY¿óÉ/Õ»¶Bwzð�@+X_}þ¬}ô¯×t²^ÓEü ¼xŒ·6lØ€ÌÂBL ò†�µ=T(¿…pOˆ2ÿäçå@,V ãí¯;½¼¯¾ø_ù9ž|êÙkº")6§�€§ïø:׬œ?aTHIˆÇ¹“Çän�®ú4·5 ®Û²!ül5acaˆã'Ï£¸ª Q‘—‘•Y„À ÀAë8±ã3ÄúR[h(&°å%¹øæó�ÐM¬QK ‹JË !¯ÄçO‡à̶÷ÐJ$Ç+é7È 5•E8´ÿ „yɸ¼w+zöoðpB·¬5òbêÓaá|mV]ïÆ¥…톼¤eõMxëÝàê3 $�,6º~|YQ.žø ŽîA4�·Eqf‚,ƒæïÒÇMIPÕÒ‡ØÂ¡ÀÚ»]½·ËŠrqáÄ*ÏÍ 5Ð×ÓÆCO¼0$Àª¼–¬J»rù<\œ`ê> µµ-(+.…�»-„M•òó‚I,˜Û"-+þð)xÁ‚&,ÆÃ,Ì,À-Ä>îmQt_×,žKÏ‚ <½‚�‘�bÓ:¸Lé}ZŸm’R¶³³í³ïf~èX¯4/- µU%˜:s~Àšpé²£H¹’.ÎÊh’¦�ò?é«5£E–ƒÐcañ%öœHB qÉÔµ$=+·CHhZ ¤¼ 6ÀZ”Ÿ‡úºÚAÁ×7i‚¾O455£½½jd6œ…�= �ôZÿõ×�p&v´ç¹ÉtŒ¥Cƒ¥ZK:LíÓ!HÏ{˜kúœÌà=À{€÷ÀDõ°Žû�ak}U9ôiœÁÛøz@ °²RwíÞwW RlÀÏß~ŠÇžx/ÿç#„îü 'N]ÀÒew÷©\�ƤʥÏ�a>4Ò»»�þ×›Ú8ÑØ¬ñqQø9ôæÍU¤`a¬«üç6€�! HÑ�1w˜Ò&÷! ’édË7|Íl$iÆö>I¹jµ¡7 %”;(ÐU(`ïzw¦1Ö¥Za~y#RÛ¿¿3�0޽î*Ìm5Ùôªˆ±4›Þ#_W*­«8qDÌ$˜û[þ} 9p»6z¹…ð RD´†~úä¦&C_؈#'Ãðù¶£˜3kbB?FÔéP¼òÙN<|'¾{ŸX§ð6ÑFQU%’ÊšNyq»(çªIÊîxï-œˆM†zKb²Ë¨ÔÁL{S› 2©R{VKÔy@“â`B}émÇöïCw{.RÞÒ/¿ú b)“†ÄˆÖß~ÞÉM£› cêe\9¦–ŽÄ¥ ŽîVšs�œ¤‚¡©al Õ^¹f¹“‡ùÓP_ËÍLOGôåHœ¾œcnæ²>‡Üæ`1’§úz[WaÇ …~Î�Ž�…!0j©Dz]=Nœ ÇÚõ÷aé]C3’ûLönÿ¡´ÌY†Ê¬³œ_Ô4ÌÇæºRè ›áèÖ7 "%î^yz=üfÌÇÆ?­ƒ†–”cаö¯w¢|ié+Aˆffdâ‹Ï·Òÿ™i02·!`]U¯lë©}?âô¾­ð›µ˜ÛÅÖòÂl¨º8}:½IvTµÝêêUQ_¦$»ˆ�«7 `U¶»ÿú¥MO#=%s*úÑûø†g$°¼�¾}Á'å9õÐоþß$e97j]G߃ºúzèë÷½wýëstòì°²ãwßû°öwÔò932 ²’|Z(þ�L„n·SMcI$4Ķ¡9|xðà=pG{@Dã`½q�@xD¢#ñfÕ]褱cuµ Þ¾¾ð÷u‡Nm ’ê ñò‹ÿЀ¬� è¦÷v�¶´õ%0±väÊbóc ÍŠÔ' E"˜”¾ÿ¦BV•¤U‡b¦ hÌ$ÜaAAÒla*x `e˵L.o„›³ýµN›pÇ»º»¸¤w2ÈÊò°Ê óÄmEò 'ÜÍ›€ b,`ñºG9Ð�m· [\wòˆÀdÓK¢Á3:Ð%bìa=…LªùN1Æòe¾ikh�W¿ÝdwŠù~òà=0q<ÐÚÑÉ5FC•˜3“ØÈÚX–}Û¾ò0“¸K|Ó‡ð@ma:DzFD»y“øqÒÕT˜Ä$>Éü}¼‡hÝð»›+òP“tæóòÄè+W¸cþAƒK¯ö¾ðÀ�ƒøè½w°þþ°ñ‰'{Ñöé½Û1ÿž‡¸sk ³ðÿ_D ±óò«[±èžõè*K‚TWˆ7¾=Ca=æÚéãTfë„pÓVÅKÿûVv–øï#Ë eæJàhrëš°èÑç1o¦NìÙyQReÄÊ+ÉGv› D"!æ¸ÁkîLœ =ˆ¤´D„ºár‘9±È•ɱú®Y�JŒÐ¤ª�ަr˜ˆ\O2E2U t T�vñšd•˜;ÓM�µ0°qGDj6>þð+X¹:C^Sƒ’ÜlQ~OGvÏšaCyTGco¾ô"î]?Ü<½FsÙuŸ›ñ+ -ÝÑЮ�ˆÈ¬[·úºË:µý}ìØú#ù6n:X÷ç¿B.+ÃæÏŽÂØÌkVß…©ÓfBKSÍÍrM›;l];·m…*IdÞ÷‡ ä÷<î\11‹ò£áä¶M5%Ð20PÆÁÝ?àî5ìŸì;Ðêäìt]Ý�—')ÅŃ{áOØzÖSª?6ê2×?߀�@jd¬âX�µ½¾]*]�WfÀÈvtŒóër&ï�›èYq>W›d‚�¬�$km}ïhZAjm‡��ù8²ý+è«ÃÄК] ЦA§ž¡ÓÄBx9¡±µnS°|ÃÓ(Nއ å}êÕ·±`Å*D^< +{ê×i¸X[ÃÄÓ 6´ 1Ètà7}>^x+þ°`¼CТm‚9K‚±öîÙh«Ê' Êç.'ÁÁÊ †ºTR´ò Wm8ÙHà?g.®DÆÁV«"úý:{ôþóé7İ Ã'ÿ{ÇÃŽÃÚÔÇ킌ڸ`銮(§=§�†âÔÑ}$æ8lì\«Ü}ïlþ'/_�m_ˆmß|k['|ñÁ§¨(¯FvZ4wª‘‰)ÇeLm]áééÆí¯.Ƀùt$&+ˇ¦Žâ\Yyö:GçÈj‘�_Ï9÷@]Ð asŽÞ‡ªúFLA~nÜ<†NI"Iiwo_’/6c°r åÕÒ6 ÉUMJé%‹ …”›5ò†RH°€3å9Ì:‰Ã) м†ƒ�1±÷ ÆO�<‡ô¨s°võAæ‘O ehI~êÅ”l,FEA2Ô4蕺ýæBCÿêDÍP=nëÊ&?‘�o²¬ŸÉ‚±e0³0£ˆvZú[]üEˆ -ˆYWˆâ3;`äÜsJrüT–ÃÄ´—¼rSåÒÙóMtq*«‹aO™·jãËïäª6§€Þn/ÈI�ý6© "u­I¹šÙ2‘LEMjô¿óv¶mŸ¿ËuÏÔâÆ½÷ÝÎþãûÆ{€÷ÀÍ÷—_Žd+évÞn¾7ûÖè4eå5xñ¯ëÿ}—ÆÚ˜=/Bu-è’<-³†ÚjnLbë<0�±8'�¤ƒ�ðÈ’ùpóž£Þ*Hêê‹UYcg[·©®k°þpä,æ‘b�Ò÷¶ ’M¯ŠoÇû ?R23#%³‘Z\l ÊHÑÌ”ò×Ncìܼ¼¼±s'CÆ«�Šœ ÁÄd¥ñª•íxË—Ã{à¦y€Yoš«ùŠxðØñåhln&¹¼:üøÃ�xæ©�((Ì¥É÷´ÒìÒÌ éÄVªÁŠ{ï�TÎâÖIu»­x 78¨ì�HßH¹yCÖª”;T�À#¶îmævΔÓçºVV–š¶'/DS>Çt5—#)6Iq °wt†�‹;œˆÜ±c;žøË³× r¨¡ ©î^½vÄ+kÃÇ/¾Gعºcë÷Ûq…€Â9Kï†)å÷i¨ø&ÃW[F[m9ÉbRdp ìMŒ°/&ÍB5ˆh{ ©N.(+-ÇÅ 'ÑÒ­ ;g;ü²?ï|öü],Ð]˜‰øÈ_ .ª†…†ä©—ñÇŒ½GŽbÖ¬™˜y×:dð"'†ª¿TSWÜ a{Òbb êjESm%�“K(¿h'deuÐÖV!°�ðn º»áme„ÂFUxMq�«£=¼‚CðŸþ‡YË–ÁÂÊuÕy°“ŠñÈÓÿ`Ý`´gŠ£+$Ęe ³ÂôK(ʸ«�ƒrî„^ ˆ)›H¹‡½{å>GìD[g@ZöªêšIòXbNñŸ†¤S[Hfµ‚òÞvböü…¨©*XëŠR�rêR+[±{ç6Ì]°ˆ«)þL(šåµ04·íUóÀM°FÛ Ÿ9ÜAsO‚£„�‘$óÚG‡š Ë—ÓýÕ‚PÇŒr¾j¢½³™±WPQV]Æ,,ú†;ë³(g¨„+/ŸÀ1GgOèj+¾�uÕt_µ8€•�Ð@¾f«jc P—C@½ 4Ô{Œ\)Wÿœ:tήWwŒr«£µ eÐгëseEœwÑ„›h¹ÙfdA@¤¨�™v5ª�‘ Ê=ÛRM*&ÔF y™‰¨kÑ€1¯û[yA:ý.„“¤²KŸC ` úþõ9a>´SðGW{ TƘ.@ÓÂg�ì…¦H©� DÆWA°2 ÕcÊï }°lŒÏìèºÁ`°[gQ±ñ`+²Þº{p£jV>Yƒ�¬7ªN¾Üá=°í‹÷0%px�ux?ñGy(=°öÞp÷ô¤”à *Ïç×ãï�Œ5 a&5Î(9qT:XÞ½ñ¯ñÎ*ÑÊÆMURº+c*«²ðÙ·{2_ñN©/1¦ñØÀwíÖº ÄÞŠjšçZ°j\i\?˜±q™HÏûþñ´44ÃÒg Ìí °*¯càêí B °¶wv¢±¥ jªJWpë#Gáè‘ÃXºtYŸýõÖ-[8�uîܹµ‰C¶«¡«m$o¬~òDzçúv~¶‡t*`Òx 5- ç/\€›ëàsJ<È:in%ßPÞ“ß¹E%P.²ÙS‘N€Æ¹ã§q†ÄÎKál通ò ,YµrÜ:›Ÿˆ�oÄx`ÜÊä šÜ`Qޱ±QðíRM”õXÿ¹ÖöîÄb Ìúóþ'Ÿe¯V$1˜‘šŠˆ a0ÔnÇÞˆ h¶ÔCKU•ò$ˆut! à*5!�<þ ŠRãpâ«ÿÀ=xé n100€½ýÐ,ÊA/¢�s–/嘬ìxij,*ò3Ž#ß¿…ÊìTè‹Ô‰¥fAC´Ûa¬Z�+QiØøÔ_àá5âù¸»H‘GQÄŽ68z>ùTŽš©œ<'èv–ÁÆÆ êÆ®Èʨ‡Ð@%• ÈO‰�¦†Õ¬AÀ¦çw{ßÈ’ÉPDy?Ê‹“�_Ѐ’°í®*„“T‰v3ZºœPÛÕ�ÒÒb´ÔT Q¨'¸Í[�²j9åÁ %ù()æ/½û~Ú;3ÌYõ0´õ$¨¯.Cäá=(H‰‡µ;_dÊìÓJ€•íÓ7" YK�ò‡ ²ó˜éHú¬ùi8}`44)oOÚA\¾ŽÅ6#êJ,þøÀN�g'Ó§ÌÅêõQþX„c «¬"qñ100sAyAåÈ]ÂÕÑ&Ô€“W ·=ÜÆ`U¬ÊóÔÙ —ƒ¥+îÃŽmÛ±{w(ɸ–ÁDbˆÚŠbh¹¡”‚k^~é_Ð6p K5 îò:ò=JSªYTôv1º†036Xó’à ˆvÁ¥‹á(*,„¾& ²µ%P%öª†– ·(Û1ØÚÁ¹/�8Ø9ÃíªŠ ¢a@ÊÊ»¨8»UVÀ�¬j:76c°¶½ûþ˜AÁéI±èêbå)ÏKGNôIÔÑójè8&64éif=Øåœ_È·@Ö›À`m«-Ek]åuì ´ÚÐkìÌ%ùï€�U}Vv c°Ú+]MS_Qc°Ž `UÂ_�tý­e³øR°M?kèþÃpuqRô�ÿ;i=ÀÀÕ¡Öö¤ÃÐo¤@¤;iû7¾hå:`�Œ7Žoó-ñ@m}ìé]ÓßÏÿ–ÔÏWªô¥Nhh”®{˜*”{ùõøy +-ûŽ]„êšÃǤ&ÆÈMODmu Œt¶ÖÓØ¦¯¿õoÔv¨cöìÙ= *'Ùaö¦©®®Š¬Ÿ£¥¾V‹¡gjÅ-='ÒFƒ¬ê½ÕjzœäÛq‰ñ(«(GII Ji®ÆlFj)1E"µ~)Çþøüz¼ôÿ^£ ô�Š7Ñ5 \�Œ«Ò—*ØÒßžø¶.f¤Öïÿ™÷Àdõ@UUŒ�Œ¸e°>ð ë`^á÷ñà=0®ˆŽ»Â½<øãJøìþé'¨ ñî×ß ê°¡ P H±j\VÖ )¸^Þ^Üz\;u›–• ±ï$3%ëÍX3“påÔI­¼Gìæ+ðâ¦?cÓ«ïÃÞ#`Àu9É1øüoCBà« I©ö·ˆË‘ؽ'kWß==}b†Òà/# ™xñåÍ8qâ$ÔÛk¡+ê@6?Tåe ��ŽnòRbÑÝÑ· û;äçKû¿ƒ¥‹ß�Çs ’×ÉppÛçðž6—¤‚çaÁêû±ã·]8‘€eËîÅ3ÿþÏ=÷,f`”B²Æ -fð5SEjf!äÄFK)o$ N C©.’’Óð›ïÀÇÙ �ò l|ö°fbú}‡…“'T;š‘—”�ØœXË…hVSAgm=Ï�C~2 ŒgC�¾IºÖTØ ?'S$$U£K£ mšfHÎkAtVªó“P!Ð�…–'#R`MyV½�[QZÓŽ–ÄKøô—ƒ°¦�µ“­‘g�ÀoÖBø¸:@ƒ"™#Žï€€üØÖÜ@ùZ} ÿ{ž�¡œ4€u°kņF‹5óÀaã;ݦ3¡NòåEÉ‘055ÂúÇþ‚Õ5„íÐ#0··ILíñÂßß„D³󖮆¥­²3SñŇoaѲëËÍjLòWLâwëG›qñJ$^~óùÓQQÛ a—Ù9èVÕB+åàm«‰†¬ Öó¸fURŽ#Y'Ì<�6ÑÏ¡4/þ�Aƒ•¬Ì~ýùd]°ì>¨’l0gªcc]Ö×PNÝ’I89¢¨@ñ·?ÀÊö2põf¬�µyho©%_(¤CÃϟ®_~ÂBb _>{vÖÔvYÊkH(®»'ŽžFuy œ½¯þ†´WÆáìùKÄbWD_êC¿7ÀZ+«‚HstŒÜðˆ‹”k7›6ý½·«®¹­FÌýk¬+WÞ//wbÆ[ž½«×�ǛҎ¢»‚$“M=‡üûp�CnàÆP+«’¬Îfã÷ûx»Á=Á< ?‹ê][¸VMd–þPkFt2£ÏƒY'؃Å7‡÷Àíè�˜øHŠ*³ |Œ¥El4›î}è\Wßÿô{ÈTnï@IDATjjáéf‰ÑÈó.ŒÆO h�è¶þ¡'h²|?J‹³i²zúMi.X�ìüS ÎX¼)�¸*‘QT¦¬¢bT k1±+™-&&Å`Æò³—Tp¹*Y­,-pßêUÀª¼ÞÛ/RbŠª¢“¤xe8vû/ÄAD‘ nÆZ�wª")ê ôµµHàUIÊŠ�¯=±[”‹b¤»Ï¸KYUÏú£×^Bbø9$žú SfÀÙÃú†&x÷õÍØùÕgèhàñg6aý†Ç¹kþºé¼ôÚ›(¯oÅË| ÓIùC«p1ÑÅ‘„x»ØC@é›:D°•hó´Úš(IÏ€5IWTÖ"#=rI—Êài ‡¦Ò<Μ‡fbù›kÁ×AaIeH˯D°·ÊI*8ŸX¯úº‹L#ÿ´‘|p=šDªðpt€µ�M$�›�^WÏ)°15äò½ì9ÁE ª´�ì­5ò J`ªß‰vY ¤® ÀÙsÚÒ¬vmSH¼’¶ÿ´Þ^ Ök�#¯±¡«ockW|÷Ý—h®«ÂìE+ `céÚ�Š+ #b ®#É[MŸ=LîJi>þ~$!<Î^Š6K �¯`U–ÉÖ¿|û?’/ArT ´ ¼vòYŒœòzT××cýš•$Ü;[w”e%¡¦ŒrÀW^œ·Ù÷÷ÃÀU¶ô·é3g€-ãiÄtT!†ª*åyíoÇö|C»�ŒàûÐÿÚñøœMQó‘ç�ÂФ´…@Vú.[â䑃XK¾tñôC7I^[8<©Éq‰°÷vÂü•+ุOګ⸜Ãþƒäf'¦£½¥¹‰XçF}®êCk}1Ï ±pÅð"¹ìñ°ƒ¿ýÆÂCÀêé9Pzm4õˆÌÇ©2¾˜A< ­­MéayU9<`—‰±âY¨ª�¶¶FL›>�W{¬ì"w/ÄˆÞØ.„÷¼{!mL‡ã”éPÑÔÅþÐ\¹L�éË/¿ÄªUt\JsVÝå4ä`Á Ä@øÝjª*Ø0�ó×Ý–+ë¦�}—,X ®°*ýaL7 èek¥Ýhëîó[àn3¸Ì³² ü<ƒ•®Ë\>ñç7¢!"Œ€Ö­”“7xÂÈ¡Ÿ½pçhññþûohnM]šOÚLv]^à/â=À{€÷À=àLŒÀJÒ}&&Ü¢¼tåÝK0{Ö쀵³›Øe¤Ê§!Tžqc×»wîCJR:½+X=7¶¶¡KjšÃP,Bt\ V­¼9 'c°Þ®ëþ�^&àË„[†öúÍ9bH¹‰‹µŽ¢[EZ#À±ÜžAÓ¯J õoiNJ&‚CæÊbínïÏ d :(Ç«/å-ÁÔ¹‹ÐÕÙŠÌôH<óÊGÄÆÓ„Zg-2£N#êô~Ê•¬[Ê�:œé™qkVJ�PW’I’yû7_bzÈbb§NGQn&|ƒ—ôõÛ¶qÿàÁ§GðÌÙ°±V4-¹ xö‰U¸p9SC CbEM=L©ìªêH­-Ñ®¢Br¨Ä¸%`NLRÇ¡;vÀÆÃ 5•…ðœâ�"¹ *IšÖ°½ VÖVðš» j­eèT#¹Rm�°5Ñ‚ªŽ å«ÌDkyNǦ`¶�3ÖÔaK¤H/G+T·uÁ\,A¾¼©¹ùxÌÏ?]HF‡PAöæÐ&vj£šºÊÓÐA WjaåÒQÁ/¡ç15(Yá{)÷h ê:ÙØZ4QÏY5y)0³wEFr"Î�À º $•tòÔ „,\Ôã§‘nhŠ¥ª¡8/³A[|5";7»…§¾Ä]ë7`Î]÷ô)Ҕ䘢b)û<¼½GζîSÈ $:Ýpw°AyE%I<×¢¸ ‹úšŒú’ øhöèT=tëH ’Øp~kïjç|dfw½lÃA1Ê]J€µ›4@Ùe¿³³ScèÙ6¿e kMUå¹-Ôé÷`Ë{ÿ„ðrd�‹ºL9�í Õë„©Z¤^«1…‚)jËŠ¡¥e=zþ[T¥W®XU±#†X™»L-­G °²óU‰eÇ;DZ¡¬,¥1ys°²åZ Vå5EY)8¾óK˜h5SŸ%8~„Ô\¯þv1�•7ÞÁ,orýÿr°·›ÍáÛÀ{`\<�•‘½çJèÝ›7Þcõ@•hÓd¥º†ÆX‹÷ë¸:~«\í°²FgÑÿŠìÜ\8Žðcå?·y4QÍÞay6+óâµm4k"))UTV‘<°dÍI£Ô5Y—0=xâãb))MåR•ASÇ�«˜�€AÁ!ptWŒ¯dÝš�˜;pǶÿø uaï`KRÁ Q4–XÈzÕ$$Aì0ŒbËÕ3Þ+ëurFž~qÖ.ß0îNHÉ�CXÂ1Ìñ¾:�1î•Ü‚¿Ûz�æ% à7e˜ Ù.j_ÅüoAKù*ïtìú1�€ ‘í‡ßO˜.ÛZÛBLAPl¹–iéŠy�õZNâ�óà=ps=úëa$¦d`Š'�7Ãù0–’¦úï/Ë7ªÊN„‚¡ßNÜœÌqör<Š*j1v4 <º�­VFù-)ÿ¥hŒyE.]ºD95‹`iÙW6G.«€Ë´ùÊ…”‡’­úFCO@A.¯G&�Q›7=�å÷­´oÿõUÈäðôñDbt$E·  £;²|mjÄhdKvN6‚¦ÍÀúGžÄÂ{ÿ„ì”hlÙ±[~;ŒýãŸ(©&¹Ñ3ç`eïÔ#·��–‚šªJ Šè+ÝÉÖÏ_ÿ¯y¨§½-$?\sî¾ ‘’E‰ÐÙÑIy"ë@ j1KïÿãŸ8€µ�ÜN>ȉ�Ù¯¶âÁ7?Æoÿí�Ý$õ+ &¤*æÌ›�üâj´¶6¡ ' žM‰°š2�äzM!¦Ü«eÇw#¯I]ùp6Wƒ¥X Ye-˜1Ãçó»‘KmHNɇªrªÛÏÊ”d‰NÁ]*�š¾„d™½QQUCÍ& òhC'¢~.¶¨hd9pÊ8}*ŽDgÂNG š”CòRr—G_³…epððBYi!4U»Iõè6•QîߣˆˆN£ß+XÐ Y�;†³#pϽ÷AS[ „g+³C%ùÞ—{|8Ò��ßxƒ@cL œÅ¬½¯KKLÂÛ/¾Œ5ϽBUƒ'˜l•¾¾>Äâk¿<ö.{¸m3;oˆ¥6°" byu!ôˆ!-© •¤ e•r˜Ú9A¤k€Ð#ç ¦{¨CÒÕûŽ\ {i ‹~ßçáêêX½¬±qIУ~ihˆPž�ŒÐ·Ÿ‚wÈàß©Þåt›´HΞ™£›ÿMXeÕUÐÔÒâê—P ƒ£›/KÓ0ÝÏ ]Zf4™]‰K–ÃÌÜÝmu@g„Zæ()*…‘9ExS°XÕ´=\A7èYÇÓœÝÝ9€µ™yi ÿžëŠ©höbÔË*¹ßA»)³�_TE t5,MôˆíNy‰1Àï�‰â�Roa ²N”;·c¤HJˆ¥¼îW™C½¯»qšY�œo] TïöÜNÛÛ¾ÿŽë Š»SŒ¬:zLëöµØ˜HJë²�müó �4•šŒ`e´æ¡ôý7¡!@�æô`²êÖ1íð ä®m“×èVÆ�¬f¦X¸áQnÿ#�=A¹&gQ>ÏìÚ{¾>HŽŽ‚�Çx;Z¢\Í íÈ/,ǯ$·«onsúÞhˆ4qüÔØÚi!3§%ulž‚‰®|ý�VZI¹^d”³ çZ`goˆæ¦Füpè VÏ @å¥Í§ü85MB”ƒµœrT®˜æ+KÉZÐJu¶¨uÃZ¥–bÅ&Dš\VvöhonÁ…Øè{®ÙZ�/vGÃ"dfÃ�X�Ì|}|°tñb`ݺ‹ÛgLÏFlÌ=¼K‡È…C}óõW±ìîÜ5½ÿÈøž:gNï]=ÛF4I³ê�õ4Y54€šK¹>›é�ß^ò•³°vñAAY%„îåd�*š°16 ¹b ¸úøÁ¹»ô“XÝÜ…9s¦à·=' ¡§ 3j³.M°õ·Ô”TTQ¹1ÊÃÙ¾}?  3.®ÞD£ˆÎÕ¡ ©½Él ä ,S@¢ÑJ€U¹o°µ§Ÿ7ý`Aß¿ñ¶ógNP„»´fgçB"1€º®´Í\9€53-‰˜šŠß91´…jú(ÉNÀ�=¡¡©k{ç> Öñnßx”�·^ߌ»î^>¢âb/œZíè¾&\¹‚ø¨+$Azɼé›ÝŸúL,’Ñe,Vyq°ŽÈš—�‰}¿l‡Oà´µ—?‰÷À`000àÖÁÃï›ðøèÝ£¢¼ ^S|´•�«<À:À-ã²#!6–Ô+̸TãRà 9v,”äkui¹1hyET)‡¥!ÞîfFc0_Ra뱘<\‘Ç®­(�Þ]»¡¿öa‘îô¹Fjq,}›h×z{¸õ¬¬m?Qš–»ÁеbÑ’»à挚ú:z7çš®§¥NA¦ê° ñ³Ã;·CßÀöÄJQ^_à:˜µ·d³iO’´Ò5öÜåkZ%â\~É®mbóM¯\wKÙ´G\V>Jeu03z¼:\%奨øàã4�Fc- · w>Lá�aVv ÷ òÞâ=pã= Ì)>ÑÖÑöœYGë1þ|Þ¼ÆÍUåÅøy×.¨ ïOë× �˜a�n$9ËÙÓÇ­Ž›YÐöŸöaûÎýY0s@µj*C¬ìd‰™!ì�íðöæáü�½xøO‚šªê€rn— \e˱C¡8ul/ÂNœ@'�yËV¬U§M›6`U£89âÂ\ºpÓgÍÅUWOýš¤s£ õ'Pf(Ó£¨m K+˜[Y °*¯e+3{g×Q¬Ê2”k-=ظúSNE+b~΄µ÷,Š(킵Çt|ôÁ‡0Òj#Ù]k¨v6žä¿;(äTŸrw¶ÓZ¥Wèéé=?!ñèO$_ª…šºF´™xÁ#`&þùÂS˜3ÕIùíˆ=ËÜÀUýÉûá§í?ã…×ÞP6¥ÏZ ¢F“-êxè�OC•$‚ÑDìµ¶ jGjÛ»ÑX]Je–#hÁ<½ùª· Õ X1±A$åp5Ui€·­>R äxž$æ¤í¸"6R¿øâm”&^ÆâÇÿ‰uëÖ¡¶¢ Œ�[ßÖ Y}#º)×N€¹ôHŠ÷JJòsóàboJdX˜BKO„Äj!‚ƒ�’�Oe;@¯³ ºôlWµ‹ÐN“Föî¨K£A¶M--(--A ±zMiZZ2ºZaK€›d `eNa×±qŽß Ï�1ÿÆbçŽáÖñYŸYè÷ `´ T1uö|ê§±Ñ1øó_6Q_ŠÑLRÌmmˆ—kàÈé héÒ‡»«%l ÌþËÃá@A}'žÂÎ�GXØyÏ ¶» duv›FÒÑŠHsåÉ#X•çŽdÍÖ)ž®”Ëõªœ]SmÔD:#¹|Øs¢Oü ©… ªjpâØ^�Ô–(¯X{ QÓ†®±-±Äƒ9€µgÿ ØxlÅj”"pÖÕ �°sg±ñ± xø‘GG\£™¹9=÷´Ðz$ÆÀU¶0³´³Ã»µ®Õ.GnJ<̉ѫ®'éSŒ¦Ä|\Y¬bÊy«\úTÄà=À{€÷Àà�‹î`½º~K»8…' ‹Õ‘Æ7 `eNîìhƒ©pÜ)6V€•ù©1î _üÚ/…Õ©XÚ h °Þ¤¨µ�‚¯ ´ápu¼±ëÇWQS]BÁ‘–¤¢”� y+ÑX–ŽËgŽ"ñò9,\ó©)‚ZÏÝÃ�íÄ’¾Á£l¼ÇŒ�¬EÉܶÆSq'÷úSSšNÆÕ”+Ð G /U°l{�¢ØŒ> ˜�<ÈŸ!íágꚊ D&›^sZHV€«èj ­æöñ—Ÿ`jÀÔMg;|ó+w"ÀÊoÆd¯Þµ…— ôé¸}w†îÚŽ4J=åJŠl¼Ý\>õýŽ 8" k²ÞšûÀ×Ê{àŽ÷ÀsÿïUÚ¿Ÿò†Ã†`~�SQZ!ƒï;qÜ&¥¼)¯+ËÑ!%ùá‘Z1³Œˆ•ef&EYA&yè!xÇc�(ñ‘–9™Î;~øuBÊ·©ƒåw/…™Õµ_îÏíFø�mp›ºp@W›«‹H²ž“Ã]µl9 0söõ�¢ý wvu½n€UY–9 æ(|K’¸~S”»{ÖÅ98yp7ܼý{ö µÑÖXO¬- ÔSÒøÃßÁ‚Ññ² Çáø¡£¨*È `1Mp¶6@aq1"¯ÈˆAny=åC;×”«öÌίÑR]Œs—âááb�².m¨«©Èè�KqÉpuó&ÀC+×­…¹�wÍÔéÓ`ie Zú[9å¹É‰Ø�) Ö@ŸdluÐŒSç®@HùTKÕÐA hsm-[ZQÒ,„‘¾Ž:�Ø„4´·6$3¬N,U p˜9'ñU�xóßo!hêTLŸ1K-$ö¬7 ˆáz~ï6ddäb¦Ÿ'RòJ¡ÖÕAmtBrA1ÔÚSŽ\5¦e¤+1?¨¨ÃÔÊ-%…ôb›D¹tT(W¬3j* 1Û^Ùñq˜X`Ý¢ œ ýÖR1d¥9P‰9‡TeU$Ý;n®ˆ8¸�ÌèÖ %19Y‰°¥ü–Éô¼÷·=v«eÆQƒ¬ýýv=ŸÝé÷f´kä•K(!yk ‹�÷޵á¾g^�‰…-wœ�³ó§ï‘I,D a„$ß›‘™ ßù‹P#kDuiŒH2¸¥½ �Ä@®šàÁ‡þ0 +îîn×XÙE³f-…µÍÕ|œý j¨¯¥<_ŠA|{c ¥+¤çDiágs›úâáŒ%z4q±'r2+M¿H¬àh‘´ÔXÌ#hɉs VMŠ‚ú¯Ï`-IL+�M˜t´5CµW¾Uå±½6§<Çl± Ei6¶¶°¥…­Gc#X‡*óû­Û�TTŽõžê”qÝÏ@VÞxðà=À{€÷ï�ñ÷€H¤x—ÿ’oß[dèl®EgFN+Çb¥1o7ÇÖnÜ»º¾ÁÕ¹Ÿ²¸(äçcß�PJ!Ó { Í9òZ´l�•]J¥R]Y„oßyÉq ĸTGU¥Àq¼LÉÀU%‹µžÒƒ0€õzAÖ²¬p”’º�–ž D”+V¤Ó7 ±ÇSšôÝ£qúhL¼îQX_ÀÚ»¾áÖˤ^SLŠZC�¬½Ë¹“¶KH²™1Š«wmECDu�ÏÇ|'ÝÖW#J=ÅÞn�ŠsS9€•©õ1ãAÖ[søZyÜñ8|èʤy`Ý]ðóóÇì9sáåé@y-ŒhQü@MF'�`ÍNOGTlÚÕ4Q[ß=U® dù2z¹² •äut°íÓ�àèåCi_X[ªŠˆ©hI’¤Ö´ÐB ÌÑØ»ï}@§ ˆÕyÊópn×÷ÈÎ-FZLÎð×X]FòÌÍH‹��½ü4’ë ¡£ÞŽ'ƒJh^-M[äWâxh($"hëš@‡¤®Ô�Iæ8&ö>$MÔ…†ºj˜éé ¿¶åªØu—@ƒ˜t.–†Ä„• !�¾Ç޶\$±)’œ=ºe¥X¸r=ê« \?q|ôŒµ[QV”OÒ¹¿aÉ$[ZZ{Õ¯Ç/ecÿž_9�5pêÈÀý…KWÀÚ�–>ûþW’Ùõ%Ij1Él톆‘É{SyyH/ªE{S=I›SÀŠbÀpþÜ)äç€wí Œ‘ø'->‚î#ÉïÐÚÞTJ˜¹.zƒ¬…y™ìr‹²¼Ðo^¡\§”W—®Sc°~óÞ+�ˆÚ`h«˜Ñ7u3Àª,_¹�ô•‡›;#Ø"/3jšh#�µQVDòÇW§”ç�dÝÒXÈ�&T:b|¨r¸Ú`Už7Z€UyÝ`ësÇO"ìø)Ê3NŠiDp˜:4ÀÊ*%Àªl£rýÙÎo ¡y¶Ü³¤Ô,<À:г²÷^«ë,.hÕ’J[ Ÿ|^d¾ióÀ“ø=Úùùù¡àzŒX¯Çkã{�%©Ó)VV2²Ž¯ùÒx𡜜¬H>S3h‚ÞÙUÁ\�MÊ‚Ÿ¯b¢šÓÒÒÄ1ÇØ6½SÞvöË[ÐÜØ„ÂÒ T•壩½ªòbPÞÇ#÷ÁÍËZ�ÍØñÝG°wråèÛÎ Ô¡¶ŽDœ9ŽÀ i”“vèó-_’´kôo”ËRŒ¥ž¥\¡B’ã©„Ig*MMK�XÙg®Ž`e×…G\âds{ƒ¬E%ùÄÊT3Ðz�î+�øâëOe²–èÖDy=]Œ«È‹ƒžÑU¦k›ÒLÍ­PÓЊŒÄH”çD£´JŽƒ{vcÆœc–fuèQ°C~I¬Ý|(·ê,twv"!ò "sq÷â¹È¥¼±]ÎÔÕÕ£¤¤óW­‡+åòš5‡Æ…ä"X9y㎨lrϺ7ÀªÜYYQÁmº{z¡:/…@*cèYô¬9©IØ¿í”äçᙇfÀÅo)ªè»ãnN9Wt»wî0²Oì„‹›#Œ”\0M>4¤ÈË.Ä4ok˜iwÀÚJŠÔ‹1ГçÀÞ¨"£.b䪢©³bŠàÕUo%æ 1‚=ŒN=SºUÝØ¹ú†XrW0N C·¡››ÑJÏ­¾ŠæÚª0¶÷CSc3ºj¨!ÖïrûV¤w˜ÃÏÝIé(¥¼°µm°3ÑBå‰m¡ˆóè¨8$ÅÅaÍCÑ]�O€Yl Õ`ã5^þ�$™&ÆìÙS±8ØÚÖN4càêHVeÛ=ý¦¡ ¨w‡ÌBWk¼<¬áãã ¿©ÈËϤ`1‚gÎ… Ô`B«d¥˜< p™XÞ:ô¡CÛ#±:b·ã[¤­ßsú7¿C2Äv°qpæö©Š û¬l§•­° ÝΪ¦<Ì!J«‘™wMï?²ŠbL»ûư(cb£qfÏçÐ ÑXS‰Ô’þ )o²9�~½+kG{=×ïëY{÷ÿz¶££#ñúë/ãî»Wy¹­ƒ=IópËÿr¬�ýü3ØXÛ\7Ð:m¸ÕeT˪ÑLókZšZ·º)c®ŸYÇìB¾Þ¼Fë�Ê£(!§¤¬ 1Ãh o‚c¡[‘˜^ˆØÈL�6�XËÊ ‰Ùh–§ávYM韩 É€^¹xeòNÔÈ;p96•@­éhª‘#�äf.ÆDbæŒYÈÎΡ‰ƒÛóÅ5+)ž$‘|âÐo”»q ƒ33êvµÉ熬¥ {w|5a+›:ààâ1ÚGpØóË2ˆa|ú$f/YÒsž±ÚÆÊde…ùxÆ¥ýíÙMX¼t±ò#LMÍáãëÏÉ€²�,JKIˆÃÁß¶ã·#!/Ï…‡XŽŠÂ,ØyNCNv.¦ô*¿ÿµ£ùÌž7–/‘™–Ž.TdΉ9 ³ö:”¶kãÈÑCž7ÎÄ&“ð`ãî )1íD*”cX–Œ¿¼ýeŸê ’¢¡obŽ‚ÔÔU•BßX‘�†�dlb%ÀzyË›ÄZ,€6I/UVW#+- GüK-Ê_gJŒ5;Dœ<‚6u#bõe #+ÒÝ .©�+‘ò¤³ ¨®C|¥1r*›p8¶ºš­ÈiÒÁŽÐ³°Ÿ6$»¤©¥ŠÔzcÄçäÁÝÎf¶¶h$À­¼VNù^;±èá¿#:« yi˜2%šö0ªˆB“ª„”GU@@×»~ �0–h!âJ4ÒHjxåò¸\Ð+¨�nqi— "C ·T)‡m±&[[©Mª(£€ øú Ù0n/…±÷" $6ÀÎ�'ñØcwÃJª‡ÿ}vÓqáôŠŒöìãÓÉøÁ•™RS)å­Á¡3Ѩ¨‘ÁÝÛBuÌ�„ä3»``(ÅŒàù=ݨʖ†Ú8Nùï \�¤îUzÌå‹0' ÞŒ–k“7f+[z3X{_×\/§�üí½<¶K)è‚•=máˆhС&Ò‚˜‚ÆÃTÕõ d=‹u<êæò Ó?õÞ¿…ƒ•ŸÁíöœÍ�¬ƒ�ÃÀÕÁVvnyÎEÙ«!–ºvé¨ö©¨Rî幋\£BRÑ<À:À-üÞ¼&°&ÀÊܨ««Ç-:zºCzU‡ÔKXê¶žh¶yóf®I¶ôžÉÛ�é�»–.áÖÛüÖGÑøbÿž_°âÞõ== ýù Df–S�¤5�ñYZ”.J“¤‚�?ûÜ3 -]Z¤V¦Pp«)ˆ 0TE©gQœK×i8v> Yåòõ…•Ï´žrG³Áä�‡”MA×8×Ñz|Ô†®Q ¸ŸXn\Ýsa¸îÑ~Gø�ÑrR>Ó ñ|o žKy=Ù¢¯‡»…úMV뀦¨›ríãä¡Ãðñr•ðóÐ14i[(RÇùÓÑÐ5ÐÇÉ#G)WëÃÃ9챆†zÈd•Lé {ÞÍ8˜�˜€ |>ðW�>å¬Îë+‘|úK̹ç1Ž…&ý�aÙûš .p'xà�Þ»¯k»7Àš• YyE¡*˜—:Úºhoof«`=wü ÜŠ%C¿p=|YÄÜ\°h!’"#<<iE œ5vôÂfp“óö;x#6%ÇìǃϽˆ¸¤\K̵!¶°'¦'Ý?Xí†t�ƒ‡ß€5%ú< ÀØ|òݧ!;zxûõ¬¬:ŠÚ“г’¼4èŠ2û¹ƒƒü1!¶´‰©·°Ã `}mÓßqßÃWA×A.õ®Ú¢TÔ§Aǘ¿×£vÞmzAUefϹå½ãAÖ[~ øðà<ÀÀÕɰ6Wf�<éÐã‘ñ¼­MuL±ƒr˜QŽ{ÞxLF”‹ø ñŒÒ>ÿä.½„ߌ„PtP` ¬Œ4ð˯{°{ßÜÿô'(Š85‰%:IñH ÀÂÉ õBhJÜh,劲µwX+)•NSm%� �•Uðëkx€�"ùÏoD{ø™:ñºGo�tÏ5ÚȾ3<ÀÀ:е_ «3Yr�ÈÈÓÂwœ�‰úèί/*›oze·w¼È~7äg9vjÙs겟ß(j`@óÚGÑðëÖºN@¤NóTÕ>ƒ·Žœ/öó„í‡[úTσ¬}ÜÁà=À{àfx€1YÛ8x!÷­¾‡݆ÌÔDœº’‚8ÊÕvôÌyøQTŸ§ÇÕ¼:·ÀÊü\VZŒß¶‡fb¼ÙÛØ¢¹¶A~ÎøâCš)g í»gýÃuÖ;sÞz÷ã1Ýž¶¶Væ˜B³\‹^^$/KëÁ,99™"@¯²ö´|2´p†£›ï`§sûXþÕñXåYñ\yªš:(ÉLBZl "Iž6(diOÝcñáôisáççuÕNhi+o68cVT$#¦äÐ/þë_€ yM9ô´´0oñJ¼üÒ?¡MA/ß@E!7ñ¯ƒ‹+ÉAbd„ áQ�[€ÿûàK˜Ú“4®Ž%bÏžÀw[w»Ó[·þ@Ê ÜÿÈ㸴û;\úí{Üóìk˜·rö;‡†¶N*+�y–bf/ÀßüʽäÔœ> ÊnjÐ ÔÒÎS=Œ`uÆå<9’òŠÐ¸`vÈ»ñðk¯ =* _ýëUˆ=\ˆÚ #=$ÅPNà§¶ž=sæÈ&©ò’Ÿ.*,ƒ¦ŠUäamÐŽA–¨¡û/Ð6¥<¨R¼ðêÐ\•�gÃ1×ßGÃ#Q][ Kb™Nw¡C䂘°3(%v­&1î$ê%ÆÀQM L>D¬UµVØÒ¶úUéÈë2B§†ÔÛŠ¡ÑÙag#NFÄBWGÆf¶ø×K/Hl„Üä(�¼²&�úJ«(¦Ü­rbàÞ@�µ<'9Q§ uðRV;âu~A>åé­£g”HúW;„ZP%ý÷®nÊÅ\œ yYº4ÔQ!«Áãÿï%,!©ø^|Ë×ÜO ˆ<´…ä�Ìô¶Ú \.mF]}N Ea!ÉzGÅ#âRB Oël«†PU §îᬿOvÔ”dÃ|ø€Ö\¥gU[WLÍÊK8�Z’KíÆTΚ{î"`ÆÌÙc*çf^|:ôgä¦%#]!‘}fßwôª‚¹íÈX­ `­(+Ã'o¿ŽùKîæ¬J€5))©çÿËß|_ÿ ëîšHϪڴô•~ºîù oº>ùìsN1Åb˜|�£i”© ÜJcà*°ÞÊ;À×Í{`r{ »³*Wß=odoš dM"™ÕŠ"R‘¡÷èë±Ç7<‰å«î¾žKoè5™)ñ�U–Ã�Tix»}=`N¹W•kJâ|öáëØüÖ§“uëÿž¥|«¨.ÎBfB8ÚË0gÉ=(HICa“sJ)ðTO'vÕe£ðô;ð^õb�³Îíù‰Û®§`¾üøs°ñ™ÓsŒßÞLB—1̬>ܬûê†Í/Ìt>à†T6Á e’ÎìY4ùÛ+"Ås9°Á ˆeLס޼bø= ,d¦¨›Ûö;Ÿ±3•ò· XmA7°Ž´Œa+˜`•þfÍRö�ù é½7zØ©­»¶•·B 6\÷0ŒHŽ[sz°Èp­b»´¤êt_ÿï“=ãAÖ.áwðà=p#Æ @ ŽI?zïx÷íÿ`íý×f“°²zXøŠŠJÈ‹S�“™ [Gw0 u(c,Ö§Ÿ~zX�•1? aee5T1Ü~yv<4$¦` ë™íŸ@jaŽUOý½Ï5a—/pŸÅz£QÀÊ–³‡·Q.S he V°¾üϹr=½¯²õ”K áèäŒx ï[÷±k‹±ò¡�ˆ<ŠÔè˸‡¶³’B’µ¥¼‘ºú7f„¬Ì˜Ü÷Òu÷sÛº4k:+§ëÿô,]Ý`A90-ÙBÑ_–î~Уœ¬la¶Š&Gý±tÍZØX[¢ŒXª‰™éȯlÄ’å+QN’ÒªóîÂ’ÇŸ�å©Ý»ç(("­^Oùs�bÁ½¢žò¸>ðôó0tX©E¬pGh‘_ãÒ2ðÆ·ûИt!wÝ‹ìØ#øç«o`Íê‡Ð\Q uÔ:SÞËY‹þ?{W_ű~OÜÝÝ•Áƒ$h�bJiK…º½z_ûÔûê¥òjT¨¥JK‘…â BâîîîùŸÙpC’ Ð;ùmöîîÌìÌww÷îÌùÎù ç9–¾8üçn´ œ2¥� ¡k�´Äh€U,`=½ëK8Œí›¡–qˆr¾ZPÓÐ’ê¹X€Uf?uÚI,ƒMmMµh®Êƒ’†>nºy•°F„S âüÏ¿ÁžçRä¯*/¡É"&£],"¹�žÚ/ÀZ“— U�ÞÀ~U1øç5úœÇ°XŸ|æiÜqÛ툌ÅÞÝ¿cþÂyâ¡öE°Õr#£Ü§ŸÎ÷¯ñ.�udôJÞ ¹ä�[ Ãùb\Ã1�’ =2�.À*šRVRŽ ÝÛà7}>/ìÄÖWó]Ý]éœØÿ±¯2—c_è*è`•ƒ¬—ÃÚ#ㅥظqn½­C©K¬6N£ðÕ7ßÃÝgü§-fÜÖ¯¡­®�dª%�ò…‡žx:ô–VTV‡Ë¼îó ™$!(Ð)×kæ­X Ò¢‡4†ÞV `5¼­ºvkkj£ƒC& €õXÐøx�¾v;;Èž‰kQæõ,*À½Š'ïɬ>yL¡…Úg{Ý&-ŸAÀv£$÷+¤mû;o×vd®˜]©’�Y(äoeeÎ׿®e‡ò¹07;~ø>»+— ¥®¡”‰™èŒšà£hÊNï”C Öæà£•BZ@âí6vú hïdª ;ÊliÉùáqãÇõyj9ÈÚ§Yä;å�[`¸- ÖÜô ‚êHÎ+‡½­œ-U`ÏXŒFŒYaabŒýaibu0;p2Þùà3,]²V–æÃÝ”Q_;'ÀM—ÃÀÄ–l534·+ÃÒPŠ”utuGhÄiNÁ^YƒˆˆxLö�8Æ®´¶wíï¯ÍÍÍ’”î´Àé½²„$AWCj*J½ŽõÜ1cú 2™G¡©MÛ6~‰YÇΗ‹U¶ô—O¬Ad[Nž<¥¿,Ò~M+g `n“fÂÒ¥ƒIÕµÐ1z]Û0”�¬…ôÀÖ àº{×.ÆX$`f`‹÷Ö~Š… çKU «—·+8‰™s&u=]çç¿víľÝàÁ'ž…ׄ|óñô”Õ‡‘¾*ŠràâÝ›‘•—ˆ¤ØD¸‘Ùy©Rnb¾óyX1vbÒ_Aƒ²ž©áÇààâ�V�®`•%À*Û–­ƒ$�¯©IæNn(>¸ž�‹àé?zh)˃ã­ZðØÎ¯>€‘2°pé ð1WáqÔ—ÂX©¶nvÐ×R†-¥ƒÛx¹ûÏè �P©H@[KÙ¥˜8}6Ü|ÇA§l?\fß ωdÎyÀsÌD,XÙ1@6u�ç?ýMùp·wÄ\z²Ù)硤Ny%%xðÞ{ñæÇŸaù²å0I‹ƒm~¡$%Ü¢#OJΪ( 6£ˆª)óÊ%·� ™Y[Kä¢K~²>NPöÁk•Ê hÔ»éŽNP[€Ê*þ�úúg÷‰m#Îû 6ÉAÖÁZLž_n¹†d ²{L9¡ÙT[‹²ê&è©· !1æ”�ln¤Ì¦Œµø#LÀHL‚>|ß]bϱXãÇõÉ{n²[ïÆëo¼Ò1)N9Ý«5µ–¦@AE Jô*n­Çî�;�™š‚—?Ý„ôød,!h”’Y„’œj˜1­µ1t \éž�O7Rûmgo�¾VÑ^°êjÌ‹:-.áG÷`Ù…Xe¶(/¯€9ãðõ—ƒõBke{î÷ñôî°ܺ ÞþÓzfësû›õë1fì#ÇŠ’¢cÇúuær«nžvœðí`#4cöÜÎØÄVÖ˜1üg-é`[rgd¤I6e4µϼílÜy>T¨ÒÓׇǤ@ìßø5Ô3F�€ç‰?wÀÔκt²�¥°“'Éjµ–mv[?ÿÔƒ°÷õC½‚"TÈxÌ%@7ýÆ»QXV#³@+;òÁP?˜1VêÄ+0qñÍÈ‹>ÊåœgÝ‚ŠE8¬€†ÅhèÛ�‡Ž©=™€º0¶qFCE!¶( (ì0¾ÀÉËÌÀ_'bê�ç€*c©]ß¼x/Ú[šÐ¦a€€™óè$¢ƒêêzüuì$œ h«5U�mª�Q£¼P^–O©ÜZ8de4Š—¶ZµÔÓ8ØÐ¨+F=£ÜC{PMÜËÄÄQ)qp¶s"+WNF ©4z&â$ ü$�9]õVÄ'%ÀÆÁ³Ó>)ñ¨(+�¾aGÛ:\áe¥ùŒ½N®~¨"8\T�Lyh £¹¡¾¾žT%8FŠæÚº�� ks^-�pötCMi:êU�±dÉr„íGãß´t9ŒxíDó™h¤¡Là>ˆNçl2]×72ëXE}êZ†ÐÔ7“–žõWqò"5þ$(%ìc«‹öæ‰Í,ò霓7ïYn¸¶ëKØŠ¬~‘T‹Ói¤sV,”˜þ=Ï!~[À&�‰‚Áz5¬¢ÊT]LV“³q°Å¾˜èhc×ÕVë ÀVÈÜ$ÉÎ?Pq õ÷•G­W*‰g’�ÿíÊNmé¹=”öÉAÖ¡XM^Fn¹†l-‚ ~îvØüë.W´bñuÓ³P¿í؃ûŸxã=ÐÂØ¡ööHLÍÄÆ´X47@šlõðö“Öo¼ù*¦K1K‡Ü�+\P‘2£ÀÊv$§eh®g ÇxĤäbÃO›1†,ÅGO0Žœ)r“C‘û'*sáìsycq¥¥bÍš'ЦРW×Q�Vk$û®¢ªšMEÁþ¬?~ñ)|Çug`–磼¤N”•hºíö»èxŸhí¯®†Úl((ª@‘Ë`“`°`u/X¸”¶´´èX¿þú;ˆ¥•1:ÀÚÈÚ36±NöìfÆÜ÷÷¤œƒï„Iݺ‘�‡z‚¬Æ—f’Iר9%XJº��1L76’qJccã°ò¡'ºµåEJuF�< UX‘ÚÔØÀ˜¨…’,vh(ãk.X„ƆF4¶ª@Ä;˜¾èFlø½€‹ áf@@IDATê틌¤Xè™Ûr`v0NÏ«„ÿŠ¥óìÙ¶•e°ut’¶ÕÈ‚‹X ¢ÂuÖªN€Ud0$ÛmâÜÅR^ñïø±£°µ³“¶-Ü�p|/<l0ž’ÝNî^ç;³,aKñ:µ°q@øéhL�2éy h¾ñõ[”ÔÓj›àJ6¶×˜qHNM’@ SØÊ M”ÖÔ6Ÿ‡NSNXmmÚ°óôÇhÿéïu¡E0¼ŒÏ/?õÜ(µ#“Q¡ÇPI�Õžò‘”44u` ­Àïh$ˆÜØÀسYµµµx/šÂÅÙ ·ý‚ÃG� �ßµ5U ›WKSƒÒÑvŒE]Ѝ˜ÌfÜéä”bJiM�‰R�ze”¶"üÈnJ‘íë7�v°à÷~i_È3èèðÛ†u¨¢'¹Ó¨™ÙÊÒ"„Þ3ÊĈÙÚ1c§�¡¬%2�eLÑKý�œÚò ªèÌûÌ‚FªæãÒ7 šÌnG�ŽvŠ6b,S!U¬ÅgƒXŸ|ä.¬¾÷áKݼa­_K[§À**7¥\÷(ÞÿbÝ_JOŒãäÔÈrB语òýr Œ4 ¤¤¥£ŒÎj†Œ¡.Or Æ]ÖoÖýföžtžº²2�©Cêã#‚¬þ gñOYó]þÓò¦&ÇÂÐèÒ;É] v“Åòß�Ím–Éþ«¡ßÃÙÆÆú&4ÖÕ@�c£_6oÂßí¥2Û"œúãÌš·ï}ô!AÕŽ�‘•��ÂÜüôÓO�-Æõ nÀQ:'dÝöó&ØrŒÜX‘…ZŽ_µô͇³™—¥.ßÑ ;3ºAAA¿/ Ôèÿ¡¾º|ØU€.Kçä'éf�á!t66ƒŠ¶ ´5Ô`on‚O×oÀ=«¨òej€�¾Ûˆ%s¦w+sµmü²õWÄÆÅSioèÎÞÉ“œ%µ3!S[³õÇÊö #…ÕÙŒù¹zØÍ!n‡½âk¨ÂáTû2‡díË*ò}r È-pI,PUQ�7ßxjŒIèîd-Ä%ž†Ž¶!BŽš¯Âšç_EèáýŒo¨�©Ó(�º›L&}üuð0YmÅíëƒÛo£\çUÈb-.JCXèVØ;tLˆ·6CQI‹àQöüüæ-¾ eÍj0&­ÍÊÚ *6³S %�ŸnÄϼŠE çaË–íÐ%£w‰½Â´ QX\ ?Æ´3ê2=NÙÝÝ» :T…ÃÐyâ�¯—¨ðPæåöYu)åì5~PõÞqǪ¬±dg$ÃÔÁ_­ûTM,,LÉž:Ú ôÄŸ¿ý&ÆOƒµg�áì»åYF•`³Z�í·DHd÷ÇbíYA�í¾üÁ‡ö£½©�¬ÈPDÆÆ"9&\ê_LÈ!4·µ!2* ^¾=JϦ�;Ñs/¡$¬2¼œà0f=b@.¹q…4‰ÛÚÚŠzʲ*R>¶•ާ""ÊÆâÆå+acë 1\=½(µeŠI³®“VÑR‚¸‰!aM&«,Å“z`÷~Œ�ìsS=%Ã~Tw Y™€˜¾�·¬RBwÂЪ»„²XÌ›‡)~ΰ£LtiA&&.º–®çÊ­yé%8ÛÛÀÄ@­¥qP1òÄî¿�"5«q)¼ [afj„ñ.>¿±È*®CA¹FöUQß jõŒ«¥K¶>cÿ6–âøÁcðž4¥)Ãëá1y‘Äb]rój `�àêHXC‚ã�7ž…‹•:̃VMßYXeF@«H‡þ'…ÅŒëæÃˆ16kø½;1ö®Hö.øäÅá:f,�Ô‰øú»oaæè…3‘©¨(ÌÇ�7ߌ¬T8h©ÀÈÅG*s)ÿ}üþëÈ,jÂ,ͬ¤S©kjA�q†õ«V—ƒHEJ_N€µ¶¢±ñ9ÈÉÌÅk܇ûÖ¼$µËÌʱÀ*vÖQ6×�Î" 9Ü« `•ÞÏ¿ó¬¢È¯ßAçœ8º]`ÜRTG’¶Ü7£¾ŸÓËwË-pÍX ­µ‰ŽeÝC7„1L…X&HJ×LWå¹Ì -"YX^ÙçëÛo|Ž9s§aÅ�+åëe¾®¦ÓmÙð9 ŒL®К�“‹­¿í†‹«�‘ïè+˜Q‚ 5ì§Ò-? ‰áoD ÀHZ2éÆÙ�À¯ˆ™'–áè¯ÔÑaþWœ™D�µºT-òòöÁŒYs°kÃG01ÔFmÌ6„¤TcšL¨þ”EÅ¢•÷<ޱ^öp´gøŠùó¨ô¦ ß±°äæÛÎ2Y Êñ«XFz’±ôH/b:Šï¨ÙÖÎLÄ6ì‹Mgíæ'XGú—:€öÕµµÃcV jè` §¥I¥.[DÇ%‘µÝÈ0h¶PSªÄ·.‡ºF/2ój¿²Y’S¡¦¦ 5Uz’óÕÆÔÔ¦&CwæÎâÙªCõ;Mk»ÆºÜ,õ®rµ={;œÏ÷žuË·/�.)È|2„±´raÓ�,à¥ëÖùk.+ÈF̱½°ê#ÎÞùKÊ�Ê- ·ÀÅX ¨ „²�jÈÈ̤wž5&Œ�šêZþXQ"“R¹ÇN„°zèꙣ�`„«“#¾ûæ3LŸ9‡À“¥ ™Ÿ‡År1m»eëjË¥Ó˜š:"éÐ�Ð1jAaA+öþ¼�Þ‹3¸m†¤ð]Œ­™„°3Y8¸“ÁÀÝm0a´"Âãä�#°±0†åTOœ<�Q^¨;@ QñŸ~ŽðÐ0Œ›0~X»3š QW€UT¾ý·_áë` mÆ–uõòùÌ 2öd±¶R>º±²*šzR½ï¿ý_®¼u° {ž,,,Œ×‡UÏÝýn§æåKl:-!½Ü1Äm—~ó÷w ìø1ìøin¸õ¶þ²ô»_¬÷Ü»zºŒ1ÚÜåöv8»uüú-|ö@tT ÌÈ”¥7ÿ„´ü\8ÙÛÒãÕ­U%0ÑU…£N=¶S²åLÌœ:‰_>{©AÛ`î:^0eå‡cmI9¶ÚªRìùs'L(‡ëå7ž ÕÞ“f”9Ž9uŠ€H1¼Ébl`G'g\7o~g3¸*–žIMSº¼WÄZ¤Š¢l%cùýOIÛuUeÒ÷jbÓÿwZ–›„¼„`XyL–ÊÈþ ë­7-A4Ai_ÆãýðéE¬ÆQúÆR–EZ ùcE2ð½¦-ƒ�³+nZy3ª(›«TW Ãv˜Û˜£°NK&ø¢¡&êí|Ö‘æY_…ƒ‡ŽÁÜÄ�ŒÜ$ÔÕaô¸©(. 73Y±/X�¬`c‚gÇŽÁ[á%ª«.±l»5ä oüöË÷ÈË/À½�¿ƒ²¥ ÍÐÎ?‘D»eiÒ„ p2TD{m Œí< ÈòÞë’´5‘UÞ;JÄ—fÃÇË¿myo|¸eÙ¼Wƒ{Ðç0ò €¦¹}—’ÃÿÑÐÌK—ÍCui*45õ)[«#�D­Ã•>y÷=²•)�ßåþíYwA¶mü–ϘµðR‹D�Š=bäO›á�ð};Èþ®¦#JoÐÙÔʶgUWõv~Z<³Èî2ùÁþçÓ;Úgø1³ì¸?ÇL¼0À*¬¡¨&X¯ê«BÞø‹µ@3¥îÛ)a¨¨Ä{álrvt�¬2cÈ×¶@5ß×›k¥ç´($ÀÕ+ °Šv€Už® ¼øïÇ0“ŽzÃ�ÆMš>$€5/3™/º ¼î5:›ÔÞP)…ÀPP8˜ G‡i k 457CGS³³®�|�ɱ6ŸôŽ?ˆ¤ä$4ÕÕ!36 ¦ÆÖ041‚…™\\ºÇ–�‡#ýzhljæýh(}%\,À*Ô„óJcN†ät îဠbž I_!WÛ—‚8¡¸_*ž¼'³#NêÈ|Þ] ×ê•hã%Y·þº9¹¹”h:ËéREƒ2|BfP¬åIn¹.�6ÿò ’Ò30wÎ,Ô4Ôãç_wà†ë¯‡¦Ž1J«ê°eóHMËÄɰX¾<2aZŽú K/@NV,Z†¾ÖÌôJƒ2N!Ùm“j‹þû°ñ™w1Õœ·¬––= :^2²)oúÔš¡£kmþh[D®lôÍlÑÐØ;e”Õ«`úä:Øeç œ>ï°á'`¬ß8˜Âë_¬ÿ~úyÜ~Ç-�ÍKMIAM%ûEVì87s8j¶ÀÄË¥”=�8ïŒç‹Ý}÷Ü…LJ@g•Ô  =!Á!d…Û��×Ñ®ÒÂÐ `•å1#EÊËHŦ�ÞÄ[=Xó{µð�C Ç»yß}»{æÌ™Î8®Õt83CQY- ]œà P-;2‰Ô°óÐ)¼ôÞ:Œž4^fJ«¨wÁŒñ¨ÈNAÀu‹F,Èš�™�ÅKn‚ªB=rÓOÃÊqŒ² €µ+ÈzèèoÐà`Ës\Ç÷ÝTS†Ö¦zü°aŸÝ˜0m&Ÿ)Œ[‹»ïy�qÝ,àF \±fE¸÷�ûáûÐ{—`v773%¸ª'¬:†Ý'JÄñ‹Mé)ÉÈ%3wî¢Åç­*%*EyY¨j×Az•e‚s°l‚{mX´¥àx¯!Þ·²ç}CC”•{;4œ÷$WÁA°ªž½×dÍ=~x7ŽÞCims<ÿÀƒpã‹×OÇÝ>&Ë‚´øXɉàG�ÎL}|ØüõZ²±�¸\Ü;EUËwÉ-0b, Ä¸Ò]ÖÓ0yC®: ”§£¤(ƒªn{{ê1 œcþ�'\‘<ãUiáL[OÕ Uõ�ƒŠET6ñ¢“ñˆIgÛ]AÖ¶ÚB†ßl€"ck& pµ+ÀZ—ƒ6ÚH™ã› ¥Ò-?B€ZçcC]¨Ùq†  V°­tŸ~Ù¬¿ÉYþ˱–µG°!Uépªž–�ÙZW«`óÑ·D"¯Ž”‘™…úœh(Ô`ììe°22BvƒÊIü¹é¾Gáè=SÜÌq³ Êó3ÐP×Èqª1æG¸«êY¹24Hšê;dˆE¯G"È*Ú%ÀUñ]‰k)ó‰»$pIìlÙ¯Ó਺™dÀ«8&OWŸJËr`g©Gå.s²Uéð^[‹µÿ} /ýg ‚BÂèÔ„â&Œã‚éSÆbÛö=ð¤Â—,‰¸¤JÁG2«OS�ÅÅ”Ik]�¡3È�\öáë•*Ù™…�œâÏ2‘º^û]?K{üËÛ²A_M•⾺Ò/=švÙ6ejWÓsC¡�i(…ÄC_žä�[@n��X@€¬ MmŒÙ׆zz< ©²9�3àèhƒššjNl[áÖU·RVò Lm0w†?'H‹�–žÈI{E¼úêk˜9ûúÎSe2v”½î�Ú!í ˜±¤óØP?ìÛ²�1÷¬qÒP«p¹Ìì|„…A Ù[u5%h§lÛ�?‰ßÛ1�eÐŽ {OBŸÎ �-Šð=÷=p§Tÿý÷Ü… AˆIHìu¾;W݉G{&N�Ž}ýùG”�™ÂísìÖ3§Bñüýwà›¶KyÜ={ÕÓ׎ÜÜüN)Ûdzª%¦$báüE}e½è}y ‘°t¿²ñœӉ̸0)»�ç9;w-/ÖÓÇö Í¨cjáüó,]ËŠÏ9 °¶?|ûk·”eÚœ=³âø®­ˆ?õ7*Ú5`ÀøŸ©'¶á­ïIù>zýMœ>u�Ý>ÍʺHÌʪŠ)•¬†Uϼ+å@«‘ÙðƒK=úÜÃwÃgÌx¬º÷¡ž‡¤mñr*’x© «ß؉3®Ãi+16n£Çü•*ä¿/¿Ü„ððhÆË}G*ùÔ¼Ñø`/eF{$´ZÚ;õØ „†œÄ_~Ä”é3¡neÌø£åøsÿ^”¦ž!ûÎe_«9ÑäììŒW?øª[ùïÖ}ˆèc`|` n}à•nÇFÊÆg_|?SLfœÛ˜�t±ƒ�ǹûö³×îF£¶'T´t°rÙBIµ@´½¦€ ¦âz%¬ûì}äs¿™qx� Uñ÷ñxé˜ü6­G%�Ç¥ÃÛQõÙØÕ†9d|�ï¿1c:Íè�ýûB}“–�…ûù�–š q¼§‹~ªöݧÃCàwöù *?øëVé³–¯Ô¹NøSfîùÜ× Ê‹ ``bÞ×!ù¾+l�P:g‰$ÔTäIn¹.¿Ú °Š¤`0¼Ê [~ø£FûaÔHã.¿yGüÛ©àÓÆ™D%•sLúßèKÜÀï¾ïܵú~´Ö’ˤ4�µëXé7qDT/ú{5‚ )ñ1’ý‚íCtX0êÕŒðøSOS&ÚµÓ®'ƒƒp臱ò�Gàè7½s¿ø�—…­®çvÛ?R70R÷þ3E K–­¤üï8Ì»þºÎú-¹Çÿθ—Šp÷ôíÜ/>XY[u¬b[OG—Ì'UÓŽL±Ñ‘´¥f.XŒ\J4Ÿ&K´º]‘Œ²Ÿ0= CZëtX(,βaZ÷>¼ÇO–Ê «,Ñ sí'ïÂÕÙ�2ÏøÉLKÂgï¬AÀìÐvÓ³7ÃÒm4t(�ÚWÚúÜH'J:IP°ï|}•=ß¾½¿íƒ³‡óù²HÇ¢#ÂqDzëqû½žÍ«2ñÊȺê`…v­D0X]|&I»Œ(5k4@›¥%Å£¶º[¿ þÓ—vV)¨õ Ûª÷¹l]G!++_æ-»Ž« ÎÚÑÈʱv!6‘\µU¸á¶{al¬‹¼Ó¿Âgöj©þïÖÿÈ5%jy-å¥%J1P;O|‘Rb£‘ºÿ[èšÙáÏo^ÆòÕÿ‚‘yï{N¼”>ÿÒcHÙö#¦>þ‚®ÊX¬`]ûÒ»X¼r ²ãá×C–é"›Ø­ø¸q>d›I‹8àä3Ž’¸½hÆî+Y1\Âñ�¿@Û@í5å0±4Ç_}G[S8˜ª#)’1X¡ SS4T•ÃyÔ9€Òo¼?’‡:77›’é ûªþŠï«,Ì…JC)Šó³°õ§uЧ¤«ƒ�?ü&jÀÇÃÞî°÷œ;i‘5XUÛb1 ‹õ�®_p|}Çâ®{•˜™GölDfr4ãµúÈŠHë¨ÈÔ7´£¢¢ úÒ˜½Ûñ‘´QǶ�çn[ ç±SayVò9“Š Ÿ¼ýç\°¹ñq§ÉD/Gb\¦ÏŦG©v`ŽWÿû öìÞƒÓŒŸøÝÏ;(ÅdŠùóæò7¤ÿ ëS'�ÁÒÚî‚çìš!"ü"N�ÀXJZ�ô${>ÈÚéè9 b¹PªÏ‰G}.%‰M:lcëèv¡":üç6²àÍ¡¡5t/è�HžiÐømÇäæå ÈÚÞ”Á÷*ýA·c¤HŒ=Cv¢ÙHo¦¼}#ÌwÞ´ž^¼vz‡{�5UACbî´aý::–ާ?U0äiDZ â4U‘UhhÏ̆šJ䯆Aßbpï3—Ú©™i?';Ç!�*;=Åy™P¡ZIøépŽl¨¨¢Õo]bâ½)»C‚R¬SP”\ˆÕo¥WÁ�«µo†TUùdí‹ðd�É�×aêŒYÀºxæxŒ›#cc†¿ÉGdx$Ãß<Ùë›8xtŒ¬œ;~Î=sšŠ7¹0³8§`Ö«àEî(«©Ã±ø48Qv°©ÝÆN¿µ½]Ýè¦Õ¬h!�*ÈÅ5›ÿÁë›±íú²ýƒ=Ç`ó À&ãÉ{¥¿–O¿4ØâÌ/âsÄŸÙ–“ÙИ›¥ Xá]û&æ7£·=èH¡èw‘–R£CaåäqÁº/UÁ8.ݲQŠÃÌN»³ÛÁkdC<£3y­�Ík¹(Ç�«õ™7\_£�±/ݺAb¾…ÔT®mhÁè1ãÓ°ô]s÷J¸ùø]4К’�‚Ðãa”.í`÷×Þ”“âÀ[à¾w¾—l.ò©“©§ª®&}?ʪí꫼W°®ÿà ˜Pªd”×X˜Úžóví�³ì °ÊΩ«oÙ"XÅ1#JS×Wfâ…×ß‚�›/,]alãÖ °Š<¾»“F™ $'ñd‡¹�íÙű¡¤]?~…Œ-Y_YŽ­íµ¬ìQT^‡ù+ï�‹ï$ÄžŽ€)¯§®I R ÚZ¹´Ãvâ´nÒ*Æ|�«H럚�ñý­ù‰õ/î¾ «,õ°ÊŽõ·6¦„°XÞyï#4‘•þÍÆ­ðô�ˆšŠ2ÆdmEFa ìyÉ´kb̤GY]'L1kTD(Ì{ ä�\=ÑÞX�F ;l?t­ÿî6˜?c.&O¡<�Övîd°RB:5„ ¥½�òBç¾SÆÕ´ä³ëú…K%€µ¶¦!G73Ε.ÆK¦H Ó�±±)Þ{ûÿ�[X�<.cF{IÇ~ùæ ^Cáðâ3a$¤’¸cØÅghÈOŸbÚüEX4Ýn3Wv6Mß@Äb5äóK*=œúžòIÉÀ{tCUI™“mÇŽcÿÎ�¸óþ‡°tù�HŽŽÀ¬ù ø^Þ‚Å‹¡ °×Ï™‹ L*¿öôCÈÏÉÄXÿs×XqaÛ¡ÛÙ¶žƒu¸Váèóð]·à¦U«{žîŠl«èš �Î\--ÍP¡Ür¯OWXá¬à`ÕÀp---tªO§6á¯ÂEy°ÕÈó_B kWëÆÏÞ…�Ÿô¹ 6µ·òýŒû×"Ètø ÐêÆ÷Cy’[` «û¨Žßç�–Ž|a'ñéGocÍkï ¹ºÒ‚,Dß kgù5?d#öSð�7ߦsôqhjk‚ï|::]ÆJç7—Q>šeE8œó%eUu¨ëèS�gd©Å–sŒSÎ1ï`@Ö*ŽùÎÐLf/”ÔQTR�èÔ×ÁŠ`Üù’�ÛRÁc&«TÈojßt§¾°ÄòOŸœ?Ÿý.÷±=¿|…ŒØp’yÔ1wé­œ 0Bµ�Zç¼¹û¨1h(Œ„†r#–Üó4’Nl‘š§©×{Ž\ £r¶ñÿüMY½ýúŸ· !ÁzÈÝÕPU�ïY±LמDˆÖ×uØáð#x vëeYÀjÖÞ­89ÀìR|5A‡P•“¥¯ê ¯imרÓjI:¹«íÒB«k{úê ðÙ|üT†0$!âýìË=õ¹üõ‹0rô‚ë¬sP}f¼D;ËC`à6ñÕ.¯Vn�kÛ`ý‹,­Ÿþo¿ '+òøÑ#pr²Å3Ï>�Í7ÂÞÆUåù85=DDÅ!>6††š¸ƒ±)¦LöGlðN¤ç”"=·ë7þ€µÿ÷2æÜ¸ï¯}[è-õÐ#Ï �ž°~£}àçÛ�íÔocú9°qÇo@ë»Ïý§Ÿ¿ûsWs—,‚“›2Ó3ñé;¯@� ÓÄäLèp�WÞ5 #3F£¦ž–Λ‚ðý¿"¿YE:®«ÑS'(©êCO­�RÉcQP\Ƹ…>H�?ƒü¼|¬ºëXXž«’âcáêÑ›Ér2'�{!:ˆ�ï>…çü›ÌnE ���¿ýµhÙ¸£('MÈ«¦NçääÔstO=ól7ãd$'àȶ`ïî ×qàœÅ@VY%aAÇ8Øð�%Fz¦ì”ì>p\Úýàƒ2iÏ\—fûÔ©HœŠˆÂí7/DY~"Ф +¯s6î³~ûÕgøkÏNüëÁ'p"ø0èt0iRv çjªÊ…ªî9ÏÖ¸¨{ÀMcm9Ô¸k:"m¦S†»,+é”¶åGOj+XÙ»bÂô…]³÷úœ›–€J‹Z:S–QÌÉÛüýwÈJ‹EEú–6ÁËÅ&&¨QÒæ„B{éM©žÓüQ׬€Ý'ƒºÕ+¼=uü§÷ùry*ñ!á–‡Ïÿ®ñÍk÷âú;þ ûáa§ukàEldÅF`ý'k¡K¦[BF.ìLõÈXÍÇ”cÖÿ–jI’(`}ú‘Ûq ˜×~—T» Ú*-ذ;Œï~…hSjÃÂy31)pã ™!)ö’b"°på}ØñÍ•mBf«=Ô9V¿ié².5�ûw›¾û¯¿÷uçÎ»î» ·,¿^^0WV„‚®ê¶$íX*jãÞW~…"²¯y>÷{ÐyÒ!~¨+ÎBNi­TÚÕÝ�¥ÙP3²éV[iqÖ}ðæ.^Žñþþ�ÇbÈlÉë,ÈZ]’�]ß¾�wÞÿ ‘…Íұݻö!‹‡Ž„0–¹`�÷�þú#¼'Òy©ƒí¾÷¸M¸:†ç~#Žð7ÆÄŒ±r ú_Î$€ÖQ>£‡|Ê­ì÷Š[îrùžËËK¤]Œ�E'¡úúzIª¿g¾�lWœ�453ç󷥄rÿêtÐHQyž+d�L†>°sY¿WÈòÓÊ-pQ(/-ऱTÇÕÎ �µŒ‹Ëè©eyáÞ8N€õãOþ‡7Þ|.ÎçbóI9 ²6æÇCÅÔŠZý;�ö®õêÜ#Øt"µÝ¸ ítBWUS¢r—Ìâå%7K¸5U#ÈP³à…w¾è³“§,•!bõÙm= ˜Ð*$J…«�+I‡NuײgŸ†¹Â;ëk+�“ Ïé�-ùaÝ;�Bà´iT.2Á®­›�œ‘�‡N¢2?ˆ„#7ÔWuHDëš:âäæWà2eŒl{ÏátV:ÀNn®øiÃLœÐý=_\?"]ŒŒé›Ðo¶ê ÃÒ±Ë BÉÎ)N,Î+¶e ðË5îÞóûFÎ×ÙÁoÂ9§WÉü'æ>Dª :"I)w�©cXM:ô$U3ž¯�[Y}êÛùæ\zž¯ªªÊʪdÚŸsÒ}ííwy:ÚJ7q6~f¶5w/…ߢ{`ª£%áB†_ú­í$Køùà£Ï>ÁÏßoèVý×_)mßwßÝöÿÓ7ÄoFuð±+z¿þÓ¿ƒÁôØAÖ�žüƒ�>ÆSO<6Ðì—$_CI.Èj1¥ï‰¾KrRy¥r ü-ÐØXƒªÊB(jhBWÓˆ?´ªÓãç¯ÿGéÇ&œˆJ„¹©.22sè�jŽÛn]‰Ù3ÑX_C æ[d0þg+UG‚o‚q.âЭ_ÿ½Ëåá‡ìYË#ƒ¡OÚ^ê¯eߎ�Èš‘͘H¡Ä­’ž*r£‘œ’5‚nî®ppr@mm+ÊŠ*qPÕƒ©±Ê3 Nû5©ÚÀk¬fMž„�?ÿ߉þ°02ATXÜ'MGnò,¾åN©;BêU$˳ò‡víÂì…½Á²#wA¥¹ [ÞB0Üù•5H![*Ð÷¯yo<ýNDDàþ'Ÿ‚/cÞùø�•Ö¾@Vq¾¢Ü4˜Z�“K:I¦­H“ü§Hëóý >ø7ügÍ<_–+rL²Nö/Ê7$åpâÖz·y¼þÿذ ¾ð„TýéSadcÓæŸðìsÏ÷{Ê>ƒ›ïx¸ût€¾­�U «†‰‡T¦˜1~ÈxÝi{óWëp†Þo~ñmg�¿ýô-ZããTn9FÙ˜ ,­Êjð°×@³š3ö܇×Þý>g�ZQ0>2 Qah(HE~A ÁqgÔÔ7¡¤ º�¥(Q0Fpd<�Q¥nÊk¬šRÊzPWÒ@)�ˆ×>ûZÆ€O(1ò[‹)�¼ c2Ò¢�ÃÑçü“\yÙ”Üî^uvè*ùðæ_F[m1 :šÛÙÃþ¥5RËKæ.ÅÜï¶Žø^¤GlÇžC‘˜ïÛ„¿‚r¡Mv¹“›&-¸~ü|Ý\PWQ̸,ÚXûázìbÌÐØøxÄ&Ä£’qiÇr€;†Þ°­Í“ J*Yj)E{]u¯ïÖÿ�ë×b†�Ìu­¡È‰(CƳæuN– ‚–~ݸñg¢9!õ^·r#u#,8XjZW�µk[c¢"áå;™§ƒ)‹g½³²ÚyÈÏÏ…_–C0Ÿ³¼¿ãÆN€˜Ì|ó¥gá=)°k•×Äç¸3Qغy^~sí�úóý7?HåVßÓñ;ÙW%iYéT‹Ð¢º…i_‡¼¯µ¥‰,•Z2wº;µ ¸yÆYà8ŸÜ½}%å�Q^>ðê¢z2  þ!™ÚÎ@AQCZþ!]–wó2[ =9üòÃÀ(á߯½u™Ï.?ÝH·@rJro€u¤7z˜Û'@ˆŠ¤¼' Ï<ù8þ:tTÚÿÖ}õ%tßzútœ PÀìÞãöÎÌ]>ÈÀÀÚå�$WÙu[þùÒZ@­Zú�'yêîŸó¡çp<äù×cˆaÈ'èÛv:Tvfä‡f2Z[k  î4¯ëîaý,»H/*1S/ kFHe2;ˆæ[;>ù¢¤¸¤Í0eCI{÷Ƽë¦÷[4>)K:æLÇó¤˜3зvÀaŽý<=èœl€²»®‡²»#²YOU#0ížUÐ\u7Z©^DÏl4ÕTÚ¡ašÚ,5�åб´„¡¾6ÊŠp&§ *í(&CÚ©4µÁᕪ?‡pƸÔ`öñ `DÄ$â±ûW#<"•E98ÿû߇ðtwÃ�7,ÁC=ÉûਲŽå|î�<Ú¯­ä:, ®Ó̳+uLM+J ‹ì„ü°<�l H.øRtáÃ�>ÁН,¸©Lï ÛŽIèKÑGy�r \+h.KC}æA47’ç0èn o'--CJñ©I«¨ µµqqáð73¯[„O?ÿÓ§LÀCÿz”±öôqâȼþò  : wO|óÃר««§„„ôÚ˰bÑLÆÃ|”RŠI¬G#kꘫv´­¥†î¡Mç¶Ýâá-pŠÞh áG°õËw(ث٥h«&ë‹í�fûÍtTÉìÒ`,–æ‹Bjr<ª•4ÑPQ-R¾TTÔ(+c‚ÊêVxx�ÆìÉcQUU}N IaMƤ,.Ê¥Üði,YÁ—1­ÖLbDª+J%�5-) §‚OR*Ò¿³siIÉÜ‚™óÀÆÙón¸gbÖuóàì勆¸ãxuý¯(llÄ+ï¼�c‡þ’V!KœµmÍu|Ïyá…P–XA©¥¹©8¸sí¯‰Ì¬4ܶr1e@m²Níû3—.¾`ÀºýÓ÷1qÞ¢ æ•eÐÑ×…¥�5åm;<Û8A¿ýçõXvà ¨¥G¢.ãºö•vlü î¾`lFæ“¢¸Ï´L:³ Ye{'×Îmo¯Šß¡Yª²ôÓçR²¶£èQí¥d˳c¡Ñ‡dÒ¡)Ý7›øØ±c|‘«V­’uqĬ…7¢�æ’EF3¯GbU=ÎD¥¢¾]�Òà¥H!Ëx£‚¾ÿñ;˜Ê¤v[2¶ëHIu•yh¦DðïÛ§ ªåÇ·àXPdŒ‘AõèZð9 †ñc'ÂÞÖ’¬{gªü!IO;@C©ÎO^¸ÙùÈ*˜îÍ Å\Š‹Ê”¥â” �’‚§Vœ°ý†ÏxL™±j”uÝòØ2˜� €¶©åvu)-×ñ¼óôñEÀ{nœï;³²±�XúJ`}é™Ç±òŽ»PY œ�èœpVJJÙge›ûé3J²—ÃÊÖ99ÙRUsçÌÁø‰“0~J@_U_õûL“vú¬Þ¿ï¿þ*>àrÓí«/ØGs sJ_›÷›Ï€×[.�Js² gmI™ïz¨ÈÞ/ú-Õû€"åúUT5z�ïV ÔÕÖbï¾=ˆ=s¾t353Öú¯µÊj8Isæc�;_k]“÷ç [ÀÀÈ“æð÷ºDºÂÍ‘Ÿþ2[@¨åAW·`ª§³´ cóÉ’‘aßãÙñky]×P‡|ª˜˜zŽ–$~�nº¶ãýqÇê»:»Ý\_‰1¾^ýÌ«peÜN;†tH’&á9¦’Á}¥K{²¯óÈ÷uX@¥‡”õÜ%·à¯½»u: ×/ZмÝÿƒãØ@ΩuÜE…¹�¡;”´Í¥q�"Ç6õ•%hi¬ãØèüÚƒµ{‡|o”ÛÛÕ86ïKÒv°u^�ùev÷�6Ú …l±Á”™Pd¸± &µQÅ« ¸ì…åûOQ&ÖÅ|ÿ¯n¬€Š†6Êk*�BµÏ*†$©«i@uÇ4tðÕ?5 �aí`M}M(\·s¢hÂux-C¿ñ4�•KPVU ² ·üð)Û9�¨iƒ ÊMë¶Õ ¡¾•õ͈HÈGZ©,ÔŠ°ûP8¼gø |Ôtõç1ê&®p¶5A~vTø|æ ”ÙÇ®ö¨¯k �¦†lVõÎݶÓž!ˆ‹ëgOƒ£³+ê+ a¨« M^Ï:$‹Ü¸r)~à,[B…¶ìêΊäºY@\§"¶oå�?LŸ~᪒ÍíÖ‘ÐÆY/7ÀZWœƒæº*Nžý÷£(Î̓'çç/^€0zs&‚žkuPh«Ãáý›1wù½ôŠÓBEIl[¯ À*]^Z&-Ž®.RRcNã÷ŸE9=áRÓ3pë¿ß@^N.n[u'&O�Š9”«Hšd‘©i›¨;gÇç¿7ý¯q”®m§dX>æ-âKÔä©X¾â¤ðy²oe¸ÆKutýW^VŒàÃ{QÁE'w;Æé5‡®Î¹çµÍ²²²`gg×µXç爓'o0ôîlj,ÎFÁ¾¯¡ë1ù¼EM­,°g$¡<+ |ï¼þ ÞyãUƵ]Ý«îšêJ”•A[÷œ4² `™u9ѯ©m„gfzJpÝ÷=7•/ä2€5åL8YÐy±CÃŽüM©ß§ˆ²¼t„ÿù*éÙ¨¨¬ 7¯ní™Éx˜á)¹ð¶PÅñ]¡næ‚ñ)060à÷á�êª"h¶Öâø‘£È<ó7ë¡@{=”(#�›‘ÌØHªøûX"LP\Þ[}U„ƥ„1îR‹ËQG)0UJ€•ñšËMËÀDw hYÑé€úÂC Ç÷l§LgJÓ‘Ÿ–‚£{¶b抻»÷3Ê(ÃÐæœlRRt‚ÿú“çÜЭ²�¤�ãHâ5±ìλe»FÄZxš×lÝXY—�%�J¦n݇”Ôt¬ßô3ÔÕ ¡êæk(qPmP~M­Àü9þÐN$# EDG‘y›Kf}tÌÜ—’ Í2×U«±÷Læúy¡�¬²IS§1F²>Nî݂ܔX”5TcÌ„9X°l¥Ô W¯1¸í¾Ç¥¯Bæ7!9åÕ çžáõåh¯L„‚¾»°6VçJå´)ukæ5f£z?CF€y†­ ¦ææÀ**,VÀÚóºz†|Nt,ª U˜6}&¬ì`k7øç`Ϻ¯¶m#5ààç¯cåS/�·éý¬Û~þ�qÉGw+«Ég³Ž®!”Úþ+u;&ß90&ðþõº�é\0߯ÿËV,9�!-i¨Íƒ"U$÷OMM“ñùGµ y’[@n¹†Ë"¶¹HšZÒº¸(‹ÊUMÐ ÈðOO"滜ÅZLš‹¥¸¤�äµTÎÐFBÄqܼò6¸»XÃÆ±; $;3 zúý+b”nù¾À*˜yB¨ 9ØKÍ`û§·é¿ï˜ñp´·åxÝ_~û ,=ÇÁ” 5`�=Â9/´å†¢�ã%c7©Ê„à½Ð ªŠ†žñ@NÑ-�ÞÏ—W\ú+W«‹E\‹ÿÔÔqo´¡‘íöGŸ‡AÀZX׎¸Ø8iÞÄ„ó‹1q‰Pã}ª®ª„p:ÂæP‘Ë„!F”;ÀØT(NPÎ>ðNÓ±F=Y©­$#h2,g$ŸPˆÂ ÔÔT"+¿ŽÆœkËä¼&`­¯ƒŠª+´ÂH¥�ó¡PGNp`¸#41nsqVòS²�›�äÌ,ÄgÀmÓÅñÐ D‡î' Å -5ep4oFtxlŒÕ±ã·ý(Ž £B] LF¡�ÏŸÊ’tÎ-©¡°¤�Œ‹�›žCÑ<-²§k��S†´ò6X¨!6-ít.­ihAMa +jÙ=”1«6%‹UT¨"Å~‰u×”“�ˆ“Áœ§,'ù#¶&:øzëaÜ{óÍÈÏÈ��ù?×Ѧ«�ûY\§W[\ÒÁöñZÊÅ@Öá6b]a:6|ô_‚¨ú0µì=Y•Ëcz½@ÖbÊ®�ƒ¬Ãý�Èë»V,P�ƒ/^*”]²hçÞ€­Gà¬ùݺ˜�™ÂÙG=RaQ!¦øOƑÇ¡£ÚŠö6E²àL‘FÉ };6£1i/~Üy œ´)o‘šš˜œ›,1Ùr2óà=v4ÈŽst°ÇhÆÍ!ø§KÈÌÂë>ýF¦–,çÝqv®ž`ýxíûX¾²c²_ÖÜ÷Þz¥%%Œqê.ÛÕ¹¶052À**106�®©5RN€ÿu �(AKG MM0l(�¶ƒ3�ˆVL[¼ÁÇÊR"(‹ì‹VöC¡©u•ù°±¶à„º>­väfåÂØÔœý·aŒ[3عx œLÃñc&¡µ¥ ã&Í`|Æ»Ý÷´LÌ oØ[öЀ/n2€U´sç†o‘t:y|Ñ*/+ÁŸ7g¸:2–&ÁÕÿ<ò öíÜ�ë.†'èÀúé“wÂ�±çÄ’[T‚ʪ*<ûì ð¦ˆXD²: |–ñy[V˜×'ȪÁ¹>ÙºêªZ04¶FY¶îŒ_+K?ýô“²Nc<“¾Òîm› ²fa̤©}>ï>eþ6¨Û@¬{¦ƈÍÍÎ"(ß7¸Û5ÿ'Ÿ|"mhk84’–©Ó xØKK×¼ÑÑÑxûÍ7HF^�U–'.&šìäBx‘�çíëG¯Å"’*0âËúùRèÁ;ø2ókPKÏG÷³ò¾ŒõSÍXYqÁ"«¼žÞ~KáÏÁž,y��}·Éð»îf2È�ô×Ãh{^aPã¹Í u�]ÖBæª *Š �[ÙŽ–úFÔrÂÀž×Gaqj›ÐÖ¢†ÄLJóÞÙÂz)tÚéÝÎø„ Àì)~ŒÙ¡�Ĉ“8uâ¦,Xö«6#ªT˜X¼h9”Ì]ààéGz|[zÍè°Šö‘µÛÀ*Ž;�ò¡´õxšŽßù¼n¥œVJLŒ­íqðÐlߺ žNf|^ZÓ‹› U¬" k㜪óþÔà"¬òÔaÀ*¶Žÿù;ÜÇM¹æL³î‹Ï8á†ñtÞ9_*ÍÍ€ �pÜ&N?_¶>�Åñ:<ò÷>ΜÛy\“žÞbI°všeÄ}xâ‰'QPPˆ^~ >£ýäëÙo¨š€jê êûo¿�“”£›6]0À©1Ç©19À:â.eyƒä¸ê- BÀ*:#œ”ä빯U¬"}ýå'ˆ8Ši3¥mU‚ŹI és#UH:öIøO¬[7|/:È ÐLª]ASá¼Ù—D°XE‚Å*Ê�p“�K¾¾´«HI¡ÛaCÇîW»Uü­^¾ê!i¿‚nÇøFAM¹©qØ»yW<(Ì?¡˜”ÿÁë¼V~äµñZ·EÇ?@øÅu#b‘ʆn‘½ æ\×B^q?­\�ß~Ù=CCTUW ,. {¢ P—xêæ^X÷ùÿЮçŠáp¢3k=Õõ’¢ÆÎÁŸ)â{h "BBµ.-Úvd ӡ°¤ŽÂ¤Iªto«O„ ‰'œDALz6FOǰ$úˆc2)TßÜo//”ç$!>1‹qké1W›ŠVeK‘mºâÖ»À× D@èQFYfkk'Ëj`ÂkÒØ‚÷+' 4Tà˲¹¹¹0°r@À4Ò«SÏÂ-dq«µ´P‰Ä-O¾$¬]ÛÔõ³Š˜Fbð(0ÊŽ%†ˆ9d|öú|°¢sc­ôP±�å½Üká-,<…Œ�1t²4ž’9�d —”5P½‘ééRüÚæš”N&ãÓ’ñgÏâ²rƒY7×UÂÐÎg0E:óþøÃWøñ«·�–z {ÿÜ-ƪQÔ‹à•¤@IDAT1BÄá_ùL¶ƒ±9cE�öF�bSoÄ­ ξ¸ù¶Ø{[Ó›veÑfaÓ7_ÁÍË�Ïlþy¾ûê ,»å^G£°`Áb `±Jÿض ]c•˜ØJkgƒz|¢:� Õ "�l–ÀXÈ^ëéÍÿƒc‡À„¿Yë?zGr¨°vt¹dݾù¶åÈáoÀ¤‰¿%—ìD]*n ¬i-‡œ\Ý)mz~p]€õCXÅéLè°Ô`íÒùÇnsNDÉ–·^{Óg\°Å¯Ýw Lø¾)–k5•䢆“·:t~œ<5€Žʰ±µgwŹ<É- ·€Ür \. ¼òÒ“°·w†¾A‡3º˜¿°äï�ßkÀ*’‰¥£ô®/kS  $«Àld>q—œ5Ÿ”1ñè@£F‡à&:wM5[¬,Úò£zSvº$u=&ÿ|ù-ÐXž�šDÙúÁÕw¸ì!¦ˆ”„�ÃÒ}2çiL0ấýƒýט“Ñ‹Ù,«CÈT‹±¨W8/¤rÅ’ÿþ¥åZ—–®¯«FKsï*ŵ ª¶ jʈ F}k;CqC¡5þ£§ÀÐÄcÜ­¤ù'[S˜¨T¡¼®‘JtºÐUl¥‰ôÍM‘ŸˆÈÓGÊdç®8W#†`ÒhjFA^6òèdÞ ¤ˆ'^}‹ z#ކœArD8F�sC(Â>üx= C�v8Qiìô™DĆã\`9¾Ùô;ÁÛXXéhJìR¥FTæ%#-¯©i©(­­AçËŠÓ ±pÉ2¼K•¿´´4$¦`Ë�ç‡f†q²tqFfz ¶lá\¤ºZƒp”sBÅi‰Ò|_Td,Š3âP�u•I§9¾?È0etާ“suy>¬éðǰN |¯TÐ7Ct&Â9F+ωFz«Â˰= 071€‰‘>,ÇÍ€É3ýñ;*s’ÑN'ìf5C¶ÌÌξ��}ï÷mo1CqPAäˆ}‡öK`†•µ°£T`Q{&”há,o2UEèR¥¦KµY5sZ§'”òç3O†•»ŽÜ#¬Ãóf¬mlù9ÁÖŽj$Wª•‹΢~(Õl´Á< df碶®F†çª§å¯%þf§Å#›ççÖ÷ž! Ç:†ƒçÏðuÎw»®­¾o½eD>ßzòÇ—/_N�ÛJ~W²ÅÞ½k<œ�‘•™Œ‡o™‡ïxxèyq#�6/æÌ«-=%±Ç÷‘0”‡e7®Äšµk £ÑÏií*U Oö£1Ãci\‹¼‰Ü+WͼFz¨º²kÞü;?{OZ Ÿ9æ÷ž¼ø —߀ø?ÀÉÖsѦ»³7Þý(æ]¢Oƒf[¼ë6‚‚�HHNGF)ÕØ}duW¢ˆg'žï¾^Pb–ª%óUÝyNúå·W ÅTŸ/£U¬�‹;úÔ´ÑÇ⯰7>u(ŒMNzÔ1�¶§y±{Pœž34妠‹ç­ºÁ 2ULE¡¡�”Už‹rVwcE6Â7~DÒ@6ÊÒ"1oùR¤�<Ž’Œxô)(C•¶>Meù´*þc®£ RõHe$Å'àØÉp˜òwÀѨ}�ÉÐÖ·…"ÿõ÷v!35õ<¯†ƒ¬Ã�åìÛ`ß½§žzJXõÈ^éVœ|BÊHºÜ9Ic=NLŸ³_2÷9tÖ<¸“Øá7)t¬›_ÔzV¼NI‹Õàõê¢vr�õÒéÁ„(^+~·Æ¼$2¸~·—»˜*I�#K¾“JÛóÛ^Ì~ÿŒÛ°¶ƒ|¶þñÄ“xöŸÏpzîõëì÷US^†éK.®xyö¾®Öû\‹¼‰ñ•¼õörüɦÀñâxï�ñøãz µ®Š±0mtùØéöÖ vUV}4×0Åø5dL'ÏŒ™ †V±�WÅrv{ýÕçPËwo¬~ãm,œ7ghAÎÊDýÉ¡]&O½¬.æx­ûù;Þx',žzYº-@V¹U°øÛE!šØÉ øÚ?4_Úñø�ßµ”5tQJ7²cû¶âç½G±ÿT$L› m=F*m”ŽE€¬—ÒÄ\P�ÅüØõ—#ÜUÿè*YÅ:ƒ€êàsâ\ç–íƒÅkïÙ±Y:Cº±ý¯´ ÛvâËÝÉ0ÒVBz í|YÇÒUëFJZº;X{³B3‰�ñQ È¢£Ú~F\�ˆÍ†©j+J*›Ñ•u ½ÖS»íd'CXJ>ª R¥¬Õ”ÄL$ÆGqûz¬`­ä—uë Ý[�¨ä,¬Ý²[¶m†«¥ ©á!ÎMYÿ=R8®n€©¦"ìì°ÿóÕÈ¢ð!…û ÛsÓí´0@[ⲓ»Ñ›y‘9ˆMÍEw{+zQWI[ßütÄ’ ¼÷À>Ö:ÔQËzKÝÄ„%p¯'ÑQ1Pl­ƒ–‚"³Ê¡ÞP¯%7b÷Ž]°Ä`€–åö~ÓÍÔŒíŽ ¥¨MJ2dg@fçƒääLÚð-Žì?"¹æµ¥  r´ÚY– (LÔ€°Ÿ)¢¡²¶´ �e©ðg¤S ÁÜiÌ$^yû]ð!_KC•ÖÆ¿.¸Ôó-)6ŒÄt»KÝÍøöÃz@üÞqÃÙ†a«ŒßÖ#@VksÓÖs¬Y…À*Ž]€«ÃÖaïgL7‹mDOk3s¿Bјl|¥ñ¸ÈHŠ�ÇþÝ»à7!à"÷pþÍJèû¿ò¶[Ï»‚‹|n£¿n~j4 ¸8x ‚tiQˆ!øáèîÅüpïá5g*Zi¡ñÓ/{°tá#5U8™¯‰îF4w�´t#�lf  « NŽT¸YØ �9°ý\G�ÊÞ¾î6Úóê#‹ÊDµžFôv2¯UÛ71+5#+½„«w>É¡b?r3Rðê�có¡Ìü-Ç‹ÐFpJ� ’§§»®ÊÖmŸ½ u%æEX!%3‡¶ü ØÙ˜áØ©&dNhlÜç¶PãšS}¨B5§ IÓf3å̤Z¬�ܾ÷<ò¤´­±©9ü‚‘A ÚÖÙ Ù……8�^~Ì®Ì�Á„ɳÎy�ßz@¬bÞt©dÞûͰš¼6§íœËвiõ‰àY×ÉVÍVÖÌr…©ëD2çACO ŠÕPXQ‡ý'NAÑÐ>N–(ÉNC�³!í‚ëál­KGXPñî�·m›`˜•f~ôV5ÀîÃ5øfë~ª4…¥²œ½ý$€µ"z?´5»‘°s'•kyHÚó#úšŠ�¾ »~ü Ì@I?Š÷¿^‹SÇ¢ˆŒÐ†ê*õ´~f£8XàåçŸDÚ¡ÈO?ˆêæ^d$%£¬O´ÓI�ŠFÌÉ$’¥ZÝØ„Ä[~œÌak*ƒM�FË*EóãŽSM¦=¼¿~�Û"æxd"c⤾Q¦cGIQjiÔKƬ# E�ß+�˽èW—ª`•³‘/eð+VCs»ó¿ÕæKÈG1¿Ë]Tç§ä1/Z_ =�­pr¶¥µ¸žxòQØ9ºÐÒÜŠŠªèné†1?ëÖžÔV¤#.ê �PsMðAeÚqèdðš~•°ÎÈ9¶ZÚ:Ìåí M¶·d!}þƒ9óŒP° €U´+¥`-*ÌÅg¾B»ÍÒëôt¶“øb#Ýþ½ÿk­¦T©Ö {cZb‹LÊ+ݬ®Šå÷lʪjçÍ£½bÇÑ×IôI ]=mRº2óÞ¯¶¦Â,MùrµÛïu<™ÙTqâä Æ+ÔVâ–•·ÒiÁeèå“Ó’p0l?É*çZ’yNZï¯v£O”ªâü�oƒëôKçŠõ‡k}_¹BNV:Àz9AÖÁùêj¥­ü؆˯Ý>xð»_"9ß/-)GJ­"œÍeh'$‘dðÞúÔ–3z†sÒ~^¿²9maôQ AR-u8:X2ªL›ªÓX:Øâí·Þc”Y5<0óÖ;�D{ïÔò6”§#P™Íˆ/%ÉV¸±¾žyªõ((Îaa54²ªHÂxÉõßüxŒý§‡²ŠJÖäÔèJf O+ÄЦŽ~Ôµ! hç½®T°Ò©O“§OLPÖ¬ÿ ´�pKå¨Ý›ÑXÇh®M<óè“ÈÉÍDwCÔ•» Ìù{cC+ôueÌ•5‚™µ+ëˆýHÏÎçü»ŒT…š£1ÔZš‘{겋J0ÑA†ìœtièð¯�—wMÐK�6¦\¿‰‰0è)DCk8ì³Êš ¾çfTædÐe-oÜŠ¨íëéœW�…sÂÁ@‘sRŠÀÈq’Ó²a.SBuu33Z)ÕÖE^ç’ª;ÐÕÕŽ#¬ÅÄ<~Lìì(å·„šòå!þu’¸4ZLZlFz™}�;Í�u“s�Ð~íüû«?']OHܸÐïí_µßF€¬`�Ä彉”ª6óY¹Œ·ñ¸{àÔ‰C´õœ´ŒåøªøãYÉåbAÖ<2• ˜‡yv‹‰Œ„½ƒ=35­Î~jL÷Mmœ†Ö†êRTòu8`»ýÎ{ÑX• #}ZˆÊÐ×ÕŒÐ)AÌ�Ò’æ¿úàM…LÃÚ�^¤ýF,ºÔ�[TC ÉM¨�Ûà ž ‚,Ãa‚7î>hìÐÀc/¼ƒ;–ÏÓqý^+í¡EfKs-23ê°eo+7¼TV_EÍV/ó *™S f(´�ùÕ-‚•0mÞr™9•¨.KÃL²3 œ Ö°½¥)n[¹ ›7¯ƒ²ºBæÌ…my»iGòÓ7ïâæë¯EJz*³7™ÓÀc\ln!s̘ s#Mh ÚN�< ¿@¤ÆÄà‡Ïhs;{>•Ä!T£Å#7)}šªÐèB^ÏEoØRá*š^U ôm\¡Çe´¶oëØÃ}{2 4xñrDEF#ƒù£™+RÝÔ‚^ÿÚF&ðã€r´æE;’#GÃpôèalß½u5ÕxÿÝ÷¨îÌ‚­©>L,m°êú¥˜?ÅQ1±hã íõ§Ä��üÊŠ2‘š‡ýGŽHÀƒ.s(Dk«*†ùiå®ü5¿~`:&,>ܾùâ?iéRÿ‰ÁòU¤¿%'0;ÂÞÞNº/þ3à$X(ªwìø…÷`N€NÞ ùù52ÏV¨ÅãbiïjBlb,6lÞÍï™Õ`ƒ@kgG7–0ÖVL(/*@dlÞùøc¸˜ấ+hßl‚ÎöFÚ¬hPQ8AþR—ô7/%Š:+hXI6ÐOòsr¡Ä‰Áte¦£‡ßM3'ÚXç &&šÊÅA%ñ}·­‚²¶>JÒPÊ>·'; ¢‡™ËîB¯˜¤+ÔÃJê,*­KŠ$µ©Œ€y÷‡_ ¢±Žöà×àç/ÞåäFØVñµRÐS™�žÒ1··HÝW4LlQ -´*é`ý¶Ý8—m’”»»�K;ÝTòêõu`ÔÝI@ØŽ*_cÖ~Tɸ¬EJa+ÜIVhoj†OèDäqv‘”_†ŸhCÛÝ×ÍkQ ’"‘’”È\ØÔT”c×Ûƒ‚ŽÕܧ³�/©‡ÏÝX°ÏžÜÊ×ù9bÒ9ñŽ{ØÏN˜ËïööMk ô´S�¤Gë¢.\³ø:T¾'ó,¦œè U¯Ö©cÉf¦�½†z;MÁ:x||E^±¶®ßWGø9Ù`@ÇÁsçâHÄ~¼¶ú TÓ©»¿&:´F¢…¸‰ë5H9þ¾ØFu{4“¡Ô‘‡ôèXÌœw|§ÓÖz9•â ˜3mŒ-[7‘åß+Ϲ0·u3À*ï¿+ýW�Š0aõvZ¦IPâ�jŠJTds;Z«¯*AG[3ñ£??Ú6Wò±Ò¼$¤Ç€•£ï•|™Ë»oE¶¨d ¢µ³»�YCj—wÿ—aoU€µ½¥ =ï¨0&≧žƒ»›+&«&C�×Iï©KFôlÝKLi-–¿rëço‡O×|ó5ü'L €QË‹ˆŽ8¶�×5wÈ´eTEÔ@™9pÚR™IVÍüxF Œ·ñï� ë�«`oƒsŽ”ÔLÜs÷ýXuËÍBåÀÇNƒÁÂí�‹Ž¾>tô�ØÆ’t’‚;IÌ^Xw 36™3ÜÉÙ¸ùŸvõ·Þù7*«*9öŸG�ul×R1Öo%`ª{ãíêO¾<ôÞÅãò¹†ø+¹ V¬¤QZTÔIóÎás… ’•3ò2áîè6´ŸñW¶VÝý®»þ&ØëIÖµr`Uþ÷ʾúȽ‹saøù ž­il†k2cmrG%±¾üü;{Û¢æ4©”UµD†+ ·¼>{½³ïçå— –5€ÀÀA²|AÍþ¾>¨ #§ìÚ³‡#"áâj�´ZutÐ궘ä‚’ðd´Úm¡ó]V)­n/fF‹ßnÖ0@¡�šk‰Þ¨¡ú2!ê>_»=JÚR�ÍÏÇKš�~ùéW(()ACU#Ýâ8’ÄÝNõ§†–,]ý¨L5†j/zXÏKgýÄC±†Ó¡¯cŒ´”D©–êhc Ö, Ì̹�‚‚ƒ`cf„Î.’� œ–×u¢¥¥�¡³ÐÍšŠŽB?�ÉZø{¸#j_¦/�‡È}{Ч¤‰nÎSvìÙ‚¶êL �ƒ.>f`fˆË—‘@gÏÀ Œõ©Š¯“ˆÑftk¨k•Þk1Å3]*ÈÊ+ Cš-rÊš ¤¤¯©sh ¦Š¼Ôô—¥CÉÀš1*¡pð Æ±°ã˜@!Oí�ÍÍí¡>Њªæv¤3"¨®4�¶Æ]ˆˆ‹¥2;¾óçâÔ‘¨lèDÂáý°`_{úùÂÅ?˜d"¼ùÊ«Xþ´5ÔpÊ»™Õ©gS¬œ1›?üWó56î(ŠËªP]KÖXiúºÑIU©Èg(¦u±Ÿ·/§NE[M)­'u8¬”[*aL[WWgçgxVe¿šSQ£w>–›WÊ|XKXè+‘G5 –‘ôØ©Èp8ÚZ“‘WD+T*Žì]¡ÖßI)ÙkUTžø öž´Ž9]0f±m>A›ën¿�¹ñXpÝ dïûso½¶´0ÞµoxøadCIMK+™£H•ªûä!€µ<+akÞ‡kÈp[y ]Ú&I§ÈÖÍ[•’ŠG`–LNU’ƒvµÃÏq;&:Rû6­ÿžýU‡ysf‘é—‡ŽÚ ÜuÍDdSli�ºÆÚHàžUKáagßài¸ÿÉÕ¨&@ZWY gO¢º‘�—‡M?ÿŒÃ¶¡äøVh«(ÁØáŒòÔÜÕ²aù¦ —^À*Ž«±±‘KÓ�U¬bùö›ÿ²h9QRź¢%ÅœÄ�í›heÝ G·ÁÉj~z4:êŠ1eöæn|H�ÕJZã 8}õù±úµÕ¸ÿþ8 ­"@[FfêÊ2ÐÆ Ž£»?¿2ZѤñ<÷ Jpè|µ±ÿÿí·k¥•ÍO[´€õ›w>A”ÈNŠ€Ï㣢ÐTUˆÎÊüðÝTUT!9üôø³pte6Р6lý0ÑRFC}+ülMh_­L&®:¦¬xh(DnE®¹ûiøÝpOen�-"hû�q”Jì ÔdÀؔŕnä�M¹aG8âã’±áH4òjI.(…½•=mn*¡§¥Ç¬Òvø8Ûãúk§RlMK%”3+Ú'ГvÆ&Pa¿eQ�jhëÁI•Ì�PËI‚šzô?*md�üÎèÀÛNÆú˜îï�ÈòVì ?'Ë.¨U �¶Ú©$ntÒ¢»ŸŒ|c¡/´ÅDEŽ ¥ÈY»…T  €ôl¥©^åltÁ0�Þ» Sÿ'tuu`cï •®\³âfTTV@—9-½+n‡ÇÍ·IØáƒ]õ›î0Õ¸öz½á9¯zìÂæÈÌ|$¡¦´�Îz"�Zw­¥êY k~ÃK/<#NZ+ŠÚq³¡§z¨£¿¾ëöÃ3`Ìí¼°qÇIXÚûbå 7aÍ�[áàä¿Éׇã*œÈÉ[FFŽó;³éé—pÃ?_’?|Õý•¬ç;°+îÄ�7.;ßÓWìñ$aÔ5µPÀ sräQºDhp²ýÛlï+v@ÃvÜÌï¦XþT ëéãW"0ÕÚÙ‹@4 ê�·‹ï�oÖ| }âõõyÝ¿”Æ¢~ÒÉ$Œé‘˜çGU€!Ôõ¬`jíÂÊñÈñŸ®ö÷ñ·¸ÚTçô²¦H&þ_­õt7 �¿—­u põö„¦ž6¿�ƒD"W{ŽéHQReAñ"VÑ—`MMMæœÅç¯Öµãïw¼þô=PÅXm^OGmŒØ0%ÉÓ›@ƒø{vàª`ÏiX\Àš•žI"-©” è¥U§ •]–¿_ÀÚBÕmk!ÂüìÃõ~3ßwîÁ�0ñ¸:` æÏ' å‡–*Ú€ÒAJM{äïÙ¨o‚ €àlpl´uç ƒ¶°¤Ýè‰ùÆðùˆ]–ÆÖÑzîÊ?¦¥¡ÈV+Ý¢ ØiñÑtW:ãz%Ž@NĤÚ_û¼—-[ÀH'[Ø�\©mâôLaýÏú<õþáûsY¹ÓRGI�úù”ªÂ…IeÊt=°^È|Õ@_WXãO…£•êÏ’’ÅØ£°´ƒ\Ù(.m¤Bµ þ¡SÑκ‘éÈ=mµp°§C•¥¹™iŒ¾ ÄG«_AMÔ/˜´ðFæ‰6ã@ø $:€ïÖ~N{ä­È)¤ÂÖØaaHf]ÊÐÈí� ÈÈ/¦«^,t5™µJ—&’ýzûZàlÃzœ‰5 ³"à©ß�y7ÝAÁZ dèDQ«:Zʤ¬^o‰�hhj£¨¤’Zº†ôõÃ…Q/è\XëYÈH¯™Ó‚H>odý¥ “Bg §« º$Õš8ÙCU¦�P:¢uSiºhÞt””×Iõeu€õàfÇs†Ñ=–œFG�*µêʘæïˆ¢²ZL™‚Ö‚’ë-0wÁth¨(b¢akv�P1¶`„—3´hûk /ƒyl=½QÛÞ3m54·“–Á³´º²Œ5¶Nt‘ä®GãÔ ®XÏ82ÿ‰“�E»â’øbvï@ie ëJÖh/HAð¢[°þûïÐ@&¥Þh+õã»O?€5ëÜÅY±ÈØ»VŒ®:¹g=N�Á�_�¦Î:ÖMHÔÀWßþu¾�"Š.|Dz?7‡ß6ÐQ—ê'òóPج‹k£¨ÕT>qoSÉ{¯¨¿.ßvüöx\HŒYGÛ°Œ_ŽC?½K·™˜È‹“hJdÑ‹ü«óµ n#Ö?dÇÔCi¿®j/ÔŒìÏwˆã��÷ÀUÛººú°^ê ÖJª¸šdnëà4bw\ý-€Ul ˜V“¦L±íÙw”ÉȲâY\J."#�Á™Y�aQÈ!àbïhIPïúðGVf°¿'m#©píéÀæ�k9@ñÅ„_ÜG[Õ¹‹Î± ™Û7g°T‡†xù°PtõÐòh¥›LV˜ ®Ÿ7Õd޹9ÚÃÆg4zªÑØ5@Z%æ&cÞ´`äqrH› ¯æ¬ ÀQ5MðswEn~,ì]ðê¿ß’nuµh' aimÅp3~FEU ¦Z©Peª­Š}û ´~Ͻü bNÇÄÙ+ñáǟÄ֒b²üäÓOS-=hw9cÑæY[àË·Wãèñx¨ébãO›�œN{ã¶.¤Ý‹i K ëðϵ¥® ±´`9zô(B˜¡)š§ßH4åþL9IžŒå+–ÃÆÕÞ$¸œ™ÌöÞ»ø¢à=q2N Cøá0Xhõ1ÿ³}*úÛÐÞ¥æÌËhéìD7íFÚ›ò0wÞb¤åW¡¶Mï~ð1�®GÙb±vp&àç Ù2âî{ÿ†ýIyØsø0^{öÿpÛ]÷3+5iÙEÌñýmM…íííøÎÎm ¯]:`kØ9¹ÁÉ}pÒnvZ±jjME·g×5Ãõ×1·•�—Á/0‹–-åÀÖÛá ÊT”—C¡¿îFªT¤5!"&‘5¸ÐjyÂÄ)d?jŸ{ cx$‘–/ŠJ²Š QÛ–µðöôBuW«”T•…Å·? Cžƒº˜y-‹ÑA�d€Y¦©‰qd\vãðþ½PQVÃL/#ÚÐpfL{EX»ùBµ§wì' ï‹C¯< ­{$+«üì4õz*Õ{kÚÐÏ»ž© ­=��•B6h;ü\ÑT”.”È*5ÓÖ†A¼�ÖN˜ ´¡·0 í-MhPÐÆÒo8ب@fdG p7¤”ÕѦ˜¡T_÷*0a¥¹!³ü�QЈ.à�˜ý©I+…æ4õ)!¿Z�×:Sô0ÓwñœIèîe(Y«ýÕ|¯Ê�(UÕ¥’<õU¥ðð BQZ2ŽîÛw߉¿ÙÓâs<úáÛ0ÞðÁÓ︬;�ƒ4¸éðüØ<žeó‡rrĹêºH¢›½N# 4z1sù}’‚ØÎÁQb‹ll1!,˜ f±Š‰­p‡ïû7t”V-› _ÚUË�ÖR:lYû&‚gÜ,­ÝJ’é†ÿ¬GYy N¦–`²e œ™mÓÇïb��<°ä¦¿K k43ZžûÏ·øúí7�–•D ä(~'iÔÒO6ìÈ¢–°F›6ïZxL�»QŽìÊ>ÔÕÙŽ¾Þ(ówdxëáïO+³‡ÕÇ>xzº!lÝgÒ.Løý^M¬z¦§ú¿�n!³G'²ü^Ç3üut Ì~€5!!�×¶s‹ÀÃ�åbn pu`½˜ž¹�XíííF>x1÷zۘ߬Ee�1šI~21ç>¸zÀ*ßu>�%ÄbËqA;çÔT†œðä«\Õ“RãaÆÈƒ‹j½Mt�ìB ´³³q%ñŽ6yÊ**›m�kË3¥]«i�Œ¸�× Öq€õBzì÷Y7>>œÛ™ŸU¬ÿ=^]X'ªÓÒ|¼]ý=qpçNM0µ²Å«O>ÁqZ%ǽ~#|4€uÄ §ï´×åP]ÖM† û7üjj*Œä8ÿõë䱓¨­©ƒ¹™š9×Ó¡rꢛÕ³Ê<ç”Æv�ïjæõ‘ìa]¾ï«©ÕçGÑmÏpÌ ë…»¤V¤Ý£˜/ˆv©s†³_;•dzóóÞg¯?~°z»Z�¿‹1A!¨&¸~ž‚†ºG@­›Ö5 œ:VU®7˜£:ôôˆÅÅEXÉè„ËÑžzìñ1¬ï­–æºÊ èj/)Vï‰<Þ4<ÖF~<Ò98å\Õ¬üùóý=–^‹£ÉÕÈg\‘ˆ÷1¥Þ‰Èx$÷³æâˆ”œBÖÛáa¡Aw/$ùz$d{y¹âØñcˆÛ¿ 9ùEhæ\ÏÀÞ�1XQüŽA…µ�6 :Hlomé@(ãÇÊJŠ¡¯É’ë�½9ãéð¶ÀÓNöft2³€�› L¬�™£­KCÎzQ]RC+GΡgˆ¬C‡ªÔºÛáéí wï@LšJGªh)÷ =�µ˜‚ÞÞ^4ö(B‰Ž~­$wwxÕ26B°Ÿ7•¦é°²³Cë-º*èg<›>#2ú:Ú%‡µ¾ÖZº�)1êA ÁÓBѯ¨¨¨ÎƒŠR/ãÀTa¤«W7OÌž ™Z-‰�YƒÑƒ"¼½¼þUU5ÁgÖµ¬™LÃî�ßsþo + sÚwAÕ³¦ €¶Â�M=ho(áõÜ€Ö/i/¬«gÂ:KÌ9Fõ¡à &§}-�Ðe (P-ÌkAi-ºBâ3Ê­¥Ì¯-`D\Õ½)ˆ?´—$ÈÈ�¸w=Jé0fJ'«9óf1 L‡Šà|=¸uጧ²¦ Kú{ú$²"ë§—Òä硼–"Î_¡°æ¯GÓ€µ­¤òu²î’¡zË¥¼Þø¶½øM�U‡`©¥½fÏ=S´¹çÞ1‘Åa¡*­™Û{ÿa«±…Ìì8‘XGûhÆï�Q{À7 è€uÔÏó ‹«Ûyž9ó°Œàñuó¯ÁÞ‡þ7†Kì0}áR¤dâ†Ä+1w°– ´9‹n„†R\�©äóEDÄI<ô· í쿟|ÈmRÑOqIÜ�På`AAI…̽ѯICžçFMy14û[¡@5éåjIáßR‰Ù„¬Œt¨+¶rŃm.…f_=:ûPOPŸƒ??w˜êtáDl!KœœªkCOG“¬¹"æ�ªÐJ¸aµ^³�ƒ \³,”Ù•ˆ#k¯€9 ÌZùYé1ð ŠÓÕݾ¾>,BÚJÖ®d¦­~ëSIõªÎÑÃÿèèŒþ> OQ}¶Ÿ®Y‹‡{” ¸yô,¿ûA `­)b¦âŽÿÂÖwºÔM |Ý)s®¡¡k><�*‰õ ŒܽÉTêQùhi=äŠ †¬âþg}€èƒ[% Ï�ÕÏ?…ÅK—cî�´�¥%ˆÀ½†‰#TŒœPy~^&Ì_‹B[G¶ìØ…,*0ï¿ÿ¼úÊKøî‡5˜wÍ"ìÙö5YvÊ �†Óg@OW—ªØ¹ho«ÄM«îGWG'&M$;N…e´O©f��ùŠ´U¹\M[F›ÝÓk~ê 4¼Û´-ŒêÞApiÓ¦-ØËãŸLÕh:ô8XOIHÄ´i3�}……åèPÒ‡‘•¦Í�‡2+Ò2hl�*27-OïûBŽ×ßßo`6Ìió1¥és%BƒL½S–Ü)å´Éô�àÂI�"•ÐyG¶£œŠÖ´ÔD˜Óî:óäAXªua€@¨�³9mr‚à4$´Ånfq€yæNØ¿ñ ”e´­¡IÖ׋ õ5h›ÙÙÃÂÍááQdcÖ@¥�vcü~Xèõ“íxì -èLàΚçó™Ý\¨ÖÖÀ­ƒÃó+‘ÇÁ~ÿ9¿Úèj¬Ä‹o¬¡º]³¼�Ð#3B>‹Ée-°”éÁÚÕ ßnçõ¡·NTÙD†�B›’¿ÐèS†–¥ -0¦Ú²<7Mʦ(¯WGI~!ÚY€9Ê À¾_Ö 4îŽÐÂ}bðlNpŒ‡ºýÔÎ5Òm]*Íåmâ¤IPôVi²)ò�Înr›ßú¦FD~õôb‡V–Ê“Wÿ“–.CEÔZªÞ ¡ïúô+Ìž:â5>ûÏ’ÅÝðñkG[#¯½ªÈzè»W¡ofG»]æ1ó7E‰–LâïXš‰‰6}ð <'OçÜnh“c{6‹ZΜ;CO^†êƒÄ w/oˆå¯ÖÀúØc«q×]7üÕÞúŸæý^²‚•ïTžš–ž�ù3gàÙ—ÞüÍ÷_R\ ~?¬XHÿ3¬ÿ÷ü#Œˆ¸ç7ßçè+ðªC0µ�$Èz:¡|üÁ;¸nÅÊ!€Ul£HPB,*jšèìež¢"AŠñö?Ñ»¨&Ù½g;‘ ø{·ˆøcÌ…3Zˆ×sdŒXE›N5åÙë…ìR‘`€´0Ǽ¿»‰Ÿ?ètf8|_ tXrõp…—Ÿ?Á ÃKXå;#À*VW£z÷Ь½uè*¥Zí\òÊn‚Ï­Í 0gœÒêovÂÎ܈nADtN7™©óXåûú©†œÆ|×—å_ò_°>ÿèÃXy÷½—¼¯ÿõ<ùÐm’RQ�ZE«#A¾_Y‹ÑÔ輡Eç�³•¬M›¾'ܧ`jþä ¿ªd aÔÖïÙ•½bŽD¦Öœª.¬«À*ŽA¨UMuûkÇYX3€Æv� J¨ÕÅþ“IèîdT veÙåPæ÷Ë=p‰ê2¢(ØÇ 5T:2å ¥ù)ÈÍŽ‡­“+ªjšÐÚÎ\}�ε‘�Z€‚šn^ŽøâÓÈèª(:�M]¸ŠFµ0´´G9 Á2Õ©˜è#ƒ†r? j¾˜êl‡Ô²L¦k^Ra5£s,@`¬åM�]ôÇì@—¹"zq‹þA÷½÷_“)Â’]<ÿghâûX÷óÚ_½FüÞÇÿÂ1þ&È*Þ¤Z‡·¿=ôÀyÖáë�ßï�ñøsõÀCÏzñãWß!96†vœ@\ÆHpkòÔP ÔQRP‚™½¦Î_AeŸ9¦sàÒK†R5Yxs_�¨„ Z¿úc ‡7 *©Ä¡|ûý:Cæ«)ŽÓΣ‡Lý””L‚B¡ðp¶º¨£�&0÷ãúqâT_¿–ʴܳ¤½nê›Û��š�<ν]ÌŽÓ1çÀÏ)¹ÕT=aêÔÉXýôý(åÀ°òäN‚××Á7ppPöñ>»r&²s21cÉ P'˜RIËV-Z¬ìݶIq1Ün"U¤5ÒðÅØÎƒ�÷é8¾ç�–dòÁFW‘ ¸“´Û¹‹–âÕg£ñò klD8þõÄCXrã-Òz›?y +øB˜¯qŠÀyže¾£>Õ°/>ÿ +F̺]bê…GDÁwú8ú#¿,ë·ĉ�k1}ÁäÐ*f.mm S�âóÏ?ė߬§-ïû<~MžÎX­¡2hÆ<˜[Zcë–¡­Å\ˆOÖ1ã# Í%y˜8uÆÙ]rYîë›Ø .. ‡�FaÑâÁs+==�<öRù÷pøI„�Õio¬€ÊÒ´3P[×H:öÉ¡3ñù×ÿE=í¦¯�Ì\ÔÔ2×6hXnldä)L Æ?rÌÇ+&D¢)åç£qÆ *SÂßÍš};…$p-é¹ðCaÐàÀzó§ï@ÃÆ YiéXHû_?:ZlÙy‘Éùtåò€‘ûZ*Bgߏж�Æ´ô>Šm›6ູAH*¯Fª¥‹z’…¶ºÇŠ[ ¦ØKE5£eHLÎ@„æZ¸ã±‡Ðcàˆ_v‚+Õh ´¥éåLéƒo7Ra¨Bœê%F—!:­>ÌaQAGS'ÒË›ñÀ\*¨-ÐLêšTè6U!Ôß öýåP5sÄ7ÌÂõ"S~v ;-sj°;<ΦÊðµ·‚µ‰öÆeÒ×~Á�YV_*‹M©®tÑWç¹Ö€Òeøp’�tä(önøq1'0uØù-�\ YEç‰ù¨+AT‘‹$&�"ïúáç_bfs+næû¶ûp�4ˆ—O¸*–~¾–´Ü9_“ç,‰‰·ë/G®(㲨°uMµÒUii4êZæ°r�A6¬ ­Â¬™ ¤Ã¬fîîfÊXñ-b%êHf8¶ïÉJ@¿ª†Œ×:.ü{©­®®ɉÉ!dø¾ªiA'š·—ûð‡ñÙg_bbPàˆ1¬È—«XÀ*lØÕy^Š&Ö†ÚxQÑxv;þñ˰ ž1âáüŽÈÖÞ¶t7âTøqØ9{\1�uÄüïë8Àú¿ÿÁ+´–1"�Ä-^'’•?úuq€AKá”Xt6$ÀNƒ¬wc}(ËFÎcÇÚ[9Ù™¨'H)â0äMŒUzI0Îñ^~éEXÛÙ2BÊæA‹±{×6Ø›éC»§‰ãª.T6S)ÛÚ[ôÔ–¢€J\*XÃN„£†õÎØèt“üomkÇè¯dgd’à>€"ŽÙê™!Gµ?­�t«k(KBkeIJT²fcéÂ…P¡úµ¿¹™|ÿ3B'£Žõ•ÒŠ(Šh^c+ÊKј‹é6hTTG]oü­�‘WP‡‰^(#0ë`çˆ*qMøÛÜÙ×…òÊJùxbE‰I1P¬,„L¡Œ2nxî.ΰqq�#¯–:ê¼íƹ¶'êªêÐÏc·ázÛ~ù™¤zK˜Rl¡­Ò Sö™¨mZZ:ÃÖÆ2}ÖÔñŸ/ÖáÙߤŸ²i£œU׎_¶ü‚ÈcGP�θ™6d×¢�.j ƒí°•ÑC¹%î¨q Â~€1 øêT+ÑÉŒ§ Eb¤;²6´#™Ž.-Õ¥ÒñV€’òº‹ø+°vG†7´U—™š6‘ñ¯~µƒ¬ÂN\¸§ `XîMí>üý�ß¾r=0&�õʽüøžÇ{`¼®ª �ª½L-øãÈårµØØ¨!ÀKì3‰9�?lØÌŒ…<ñÄSÒˈÁ¥ç„AЇì®Ñ,Š“’© �”Š×-^н»·aÚd/¤¥¥Ð*׉Y®H´'¸TK°cÕ­÷°ø?ÒŽ559GŽ¢Ú  QÞ?~ñ•šFT@Ž>AzþéQJÖ™£­œìÑAÙmW'sCë EûŽú*+ùzé©éxïýOàdeJ+‘62ÍÚk ™Úw´Ñ&ȃ”u_n¢�³XõL©äã€�9*}}�(¤bCIÝ.ˆ”5˜ß@àóßoý­”Õ ¬jˆ?ú\ÊL�fB Œ†ÙˆÍYq'A´Û%Ûç}[6ã¹§GTøtõtc³[Íx.hD«hÑG÷!æd\§ÂÌÊžÇ1RE\FÖœ*­’=|å/É|ßbH°I´^ÚÃÏ[]­­­q³EK£=km]¾ýê *𢅫¾�1íI‚0Ð^�E³ƒ�ž˜D»–jÔ2£bš“)¦ùyaíÆ-p6Ó@]^òê¨Ó¥»ÈFªt+˜�ëé= !¡¡dÛÀP¡V@„M­Pºåd¦`÷wC�y–®Ò1�å?aÍ–“›E id_"8W^^ˆÅ‹—`ùâd 2Ë’À®¡ÃÅ×]/í:þÄ~ä•·è?…¿=úOèÂÀÈ„ÖǶÐTUÂìk¯'È]‡;îùÛˆC±bÁyÒäɳÆ^¸ªÿ•&m TeM™¥·�VŠ–ž!øÇŸ tÖ<Øðs¸eò$žw)»­q0ì0|½è�ÀE·A‹¤+g~ß’“ñþWkà=e:tX€Ö¥JO]ßÇîC:-€;um�ÍA­²ŠÏGC˜ÉÈBTA-3‚Ók:q½�: �‘œ]€ê†Vª{™³ÒÃÁ¾J3â1É×ßoÙkªØoCRe;6o;€ ¸ùùÂÙ݇[ $7ÑU“&'NŽ.T\;@ŸŸ[K�-‰�PH›ä*2' RÃ�©ÝœäÂÒ@‹VÜŠfªV5`ÛáðµeV;¿ŸÖV$)Duå$ÀŸçZy] L MÐBõyvI·é‚¡b­É•à9e!¬]Î\„BX(K["ΨSå£a›„…’|ð+ËÎo?£ò3Ú¦Òj£)”†Lä÷eÊ P”›�¦zž¯<ÿEk 5›Î=ÃüšÁóHzðWþûþ›5ÌÁN†²’"ªK ¶û^s'ýʃO•”K“A_%8“È‘_T7臭(Ñ.(q/‚¨ò•7oé¦XjÏÏ@›çCHH�|•˰Š�i’H!÷g7S^ÿÎXÅ:Ë–-°ž½�P°f'GÒA  ¾û”N&¨$xÿ÷¿=…oX†å®*𠞎öÝÎÿ»Ó{ ±Ÿ½*íFfi7bwý=íTs´!`ö ç¬�´àÎʈ¤rØaÄ6ãwþ¼=�A«·RŽ›Î\‹ËKKÈ:×ý󾩫éÈswŒG€®íÐõP^N~ ¥qŸXû¸(Ò"^ׯzŒã�‰°¡ƒ¢ÚÈq�Øn,-êÔ DÑIexƤ�@”ÑQÁÇÇ÷Š­c9ÆáëÄÆE⥗ŸÂŽ3D‹�:††Ò|fׇ¬âñZf|O_pÆ¡J‘®)ã*VÑ3ãíR{à©g%±³“‚CF쪼¼×-=C˜ñäø�¿LT”$`4g±|=ÇÑê0·²ùÓ½÷o¹$"�>v; {ç€Qß—Œ Zm6E®`¾òΟ¾†«×„áýin‹y� òV¼÷ŠD8½ÚÁ‰?¢c…%k-íiÛÚ»áìâÁ|Ñ,Yv]¹^ÁsÏ='RDt¬-Ï�Û\Éã-,ÈgtÐ…ÕÐ(%ÀÔËõ9w3Ö¡ƒól]=5Øt“„`ËX¢|xx{#!6•"8»yaÚ‚È眼£¡;wíDø‘½(ÏHD³O32RÐÛZúSQY�žæf‰Ü#HÍÆ25ZêZÃV³ ÚZ°c¡¢€ëô+2î‰ù­fæè¢ÀàØ ÖÈh�[Jût­ôpÖ¹œÐÍXŠŽ†r:•ÙàYÕܬM$²tgW;´5”0ÙÝyU�P£Û\ð„lÙ²Éå°r°"Ú‚�E-¨‚NY¬çéiâÚ%K1sÖlÜuëJ„>ÄÚ ´YKq0Ò# ½ùy¹¨ªŒQSÓ0A|ZªÛU`Àضî>X´ ³^ƒvÇ*pÔè@LY3z;ê¥y·PïVÅD‰Èõ}2tÕ!9·Ç#³ak®S:¨UÒ90<* ™‰  ;KÕväÔôÁ‹–ËÙé©8~äŬûy’XŸEZ+›š›¢†¹¬Nt30°b­J�m­pä<\]FG‚¥‡ìÀRÖórYË›·h%#éZ`ËX©¼¼,h Ù²æ¬Y•ngÿƲ®ëëÍ)cSŠGZ™ÛÈ(´øùL 0gb3 qç½w1ãÕ!ˆÛŽ:Æi¸êÁ–n}m ˆmVSFvƒ ZY«1!Ïg€Ó`N<$@IDAT�RÖYþýÞ'8�”�ÖúÔïÝ‚ Œ>“×j OG-‰kY1C‘'ÜqœÒ¨>ø¸ºÝ‡k¯ä×î’÷-Þ�°vÇ"oÛeó¡!àø’w>¾ƒ‹î�q�õ¢»nä†ÅY3­»½‰6],&Ó—s¼�÷Àeî�¦ª"Ôä%A—j›ËÝjª* ;¿Ë °ÆÄFKLªûï]E«àǤÃÞ½u3^xæiĦ$âç�›�™‘�**5Oüü.Ê;´Q�“ÂRí\Ki/J¶ýðæO+\3*¤D{ãý—˜¯™†%‹–3H¾ÎŽC–¨Ã·ËmwÏÀsV±ÝǾ…Üôhh2¤þä��ˆ ;„ƺ\è“=å8å¼»€àâ)†¨,ÌE;3 ò)Q10¦¬L $¥â޽AãÒkçòØÐM6^«¢&²R°c÷QÜzË=pupF4 }hé¼dîd”7w ˜ÊEk²Î £Ö!eÝšò ™‰ÎÖv4WåÃÓÓ“ «6ªÛðüóÏ¢“ªA=梉&Ö7¹×œ‘··_{o¿¾vö0$#Õ„_WO,Z¾‚Ù¡gÀùúaÇÃ%@ÐÖÍ®Nöò‡¥¿»Þ}§JºpÍ$/é¾6�Ñ,¬m‡Vqߓ֢`=» ¦œ±‰®]t-R’9!§ò·$?�5Tí¦á�—Ÿ'À3~ ïF�ŠBæßˆ’ìtÎÌÖPÑ�!·ÿÏÚï±ýë×›^‚pæoÙµe•õxäïO3§Ã�à™k머3�‘½edø1‹(‰ë¸´dÆd5s3 ôϨXÎ>Öá÷[9ˆþî³Ï0{ÁÂá# 0� ¢2³‹ë0wÁ|Ì_´ŒöÅíØµ{/4µ4a¨Ô€æ‚4ì:ŽÚç^C{·�ë7A³§ú,Ø0Ïx×O?ôÔCs,ši5ke;ØçËfMÇSTDŠVW]M»aNÌìG~#†w„…�Èœh´v@¿•3ÞxõUlß¾“Êç©Òª&@MK†ùËVâÆ»ÿe-u8O r‘¼¢òóYvÓÍ Àø•óÑùÁëP$~8ò(lœ}�SFË^fËÚê¡®� F^û#“¨ÖîA]y�¿ ËWÞ€/ ‚7Ñ2fv�Uìm8‘ÀÉG=”Z‹QA6㣿-ÜONe¼ÝÍàN«MMexɺQOðn © so¹/~º ÕÌU5á„tî4?¨ð\×ð˜€úò˜1‡Î™“£z²OmíÝa¥§[f}´6tqid†eÔi3£¤AU��=Js²�˜W#Ån¨43÷ØÉ I™•ð6êÆµöÊh UqrN)ÚÔœ<e‚žr¶îùVÑgÂFI�ç¿XÄdÔ€ »ËŽï›tË‹Õøúb£�¬=þÔ@!%ú’i1œ±ûc˜Ø{¢‚×—ÜÄ8ù�¹•çÄãè�¯Á5øZìyq'Y�Ì,øüë™'hó£O? ÐÆÙÄÜŠÀôoO䫜צãÓ ÇÉîÕÆƒÞ SWå'#þØ—&r"œ‡êêr<,Ä[–š††&¼½ýF¬òç.Çß%wÌ„�¥�´Œuñ´2Œ¥SÃÍ7ÝÈ÷qæ(ß^›9x÷ØSp¡@ë¥_qvŠs¨6m¤3UZ* Y¿(ÎIGzeÜù=Rdnª�‰5så�Ëï†LÏRU_{íe¼üÌ (ä¼³Š1AúFÖ0³uA ¯;ÊÊê I@4ÀË�‡¦ 7ÕN¨ØùÃ�dš�»ª”ÃmƬÛðÞxû_¨ËÏ�†]0l,tPO²u?çȆŒ¼QRéE>£¸Ô½P’ã“�â‹uÛ°„ äײî˜x vÖF¬G4!<>:BÔ_#‰@NæÔ¢²º©)I°05`Þk9�¼ ©ÀÝPæ,¼†±hJ(.o�@vEe=Ö¥Ü%;áòÚ2tÑnÝÍÙNQ†°§cœ¹ž&`t ¹ÏÕÒuÅ=ÐÐRƒ¾R7#�¬$>G´8u2ƒsK´³¶Ò­iˆÖ Õ4�YÛ³€…( ��±úë-(&QZGSfú:h'À<Á×�uI uuX‹lF#ß“‰�*jÛ5im]�Ö²4©ôdµ¤X¤‚6À-0@%TÚ oíU‚œåÙ�i¨2“ÕŒLéÜÂÚclÍ!SìCEC3U°´p.¥#VsoUº±hF’ŠJi·l?­ôr†�“9¸~qq!Ü}`åâˆûéÖöä‹ÿB"•¿†È&¸“SÙ�}[Ö‚¤Ê†äS(I ‡“�22ÓXÓѦÛáaZL·AG¥Ÿµ¾S©¬om�¦Û’ÆHk‡‚‰<ÊIœË¢#)±'Oƒë5W{+ºaNS×tió¨ €áÁÌí3 ñÕ~üÿ«Ç7²^†O¶•öyõ,¦šÚð"W-�¬j´þoã=p¹{ ‹Ì�®V†Š›ÙI»®+Îà€aPÑt©¯ÕN&ûi!vy¿/¾ô >Áxå•¢LOFõA&î¼ÿNü¼áªëpêT4±ïh8riãQPR‡/þûÜ‹µß®“rµÜÝRbG{÷î µ.³ú¢9@/2¹_·‚6 â]§S9¨Ú¶á<ôðÃp÷ð–ì+¥~ã¿Òâ|lüæ5 ¨¢¸‰™�¥ØôZ;;É:› {÷)TFžR¦M¶jBb‰å8€À¨›”¨N dx;3²ëU~¾õÕ¦ý(¦%¬‡ YtÊ=P6³‡-;úùš;÷Å´™“qäXí�M©TõÆö=‡�OeŸ"ßkw¿zÌÍ™·@b˜å¤%BFÕéúï óÎåEExïÍ×°lÅ�C «P°XEWL�6CÊå�?N€ozŠñÓ®#ÈÌ/–ÅvTTŠ–üßa¸ï¼¹ZbÛ=òÔÓÒãÃÿkbMll&y9â�W^E9Ù†™Yq!í³Ï>¥ R OýóyZÙºâö‡cn�¬ „‰œ×=›>Çߟ|„6!T1B›P•‰�\&„2ÿt´Ìl Õ“�Eæ\ôS6;'] h+4¡2;Š…Ògam †^zZ´ôí¦…Š��­«Ô¤, Z«š£MA9)i£`ò÷ æ¤Ê˜Å*T¬Â†ïÄ¡]\vÃ;`²´š*ºpËMË™«#eÍš±,Ö¦Ê(4s’P‹’Šf*NÄG¼‡õ?ï²–ÀÓ7€``3¢ j?úÂkÌÉÔ“–œ„S·vcùQE>>“6=UФ‚Ñ߀¹ÇmúÜ—&râ™Ó©‹Ên´´vafb4Œ3S%[Á‚”q0ÞqlT›`ÑAÞÑù¸*VÑû·ñÔQu…²â&§7«»Ýp‹ô¸ø¯¬€@o\,º›kh‘ÓBûãIE.žËˆ ‡ÏÄP¸ÏAjv!zz»áâÄ Ê™BLK}×T`t‰¼¾øaËT–—1‹Y Š}Mxò¥·¥Â�WǰŠ×Õ3´†‘™-6íØCëse92pŒ“›ÿ~÷3õ\ë£Tüo—@Vqÿ½Zqy!, ñÃëà!ëGFE-‹8å,⌬ˆã k@À̘9£¸5¨Ò>XE]ß®ßÁ pN}ò8ôÍÍ�VþöD\B"c"`îæÌüŸzk™2/‡çU{ZêÊul/¨ô? …㯡&#uë·H«nC¿£9;¿FÕ{÷ ª½¶gà;e˜NÃ*ºL0ìGaDŽ?/~O³N…1£ØÕñhÍíÄ[Ѫâ�CÛ|ðú<â‰+|G…ï[‰ïû�j ÇÃð:ÙÍ×Ü~çu#^W€«ÃVñ¤«§×8À:¢—.Ï�z% Be½½°Þsç­hçõð¡û‚/ QþþS˜÷tþ¹X: *ÚšZК˜œ3ÓÁßѱ¡ƒ£ãU§bÇmÁßl9À*î»z8ÑÉ„–ç´30³�h=íÌ0ë£Ý‹sŠŠ´oã=0ÆX³æZFó{<Æ-þš« €5š¹ôî^�©øú‹/ÑEUZDØ’C£¡ªeL �ƒ°Š¶ê‘'$€µ¹2%¹©�é›ÿ! ë@O=çò¿:Ÿ?ûƒàêùV±îK/½Äù¤ÝÙ› Ý��8!‘¯ÔÔ†ðÇ¡çŒH<*Ö›ÖKDg² B«°°”φV¾„o½þ/*O!vó—p%iYoÂóÅì^Ìm„*LØÇZ}°†äRq°Í�¿ˆs¿´Pm—BGoæ‹v*2Š@S�„¬W¼ ÿ/)ÈAscýyÝË.ä�U´¡f4’ (ܼlYg±¦ÂoʤÉxâï�]È.Ç´n$U‹O=óO¬X~ý¨ëÏœ=ûЬ-Í�è&�™ZÚ c=U¤•u"™§I5ýp6V†ó‰{z• =ÐMÛÚ ”Rå{x+s9 ´ñï×_‡‘¾A4f˜Òv›¢EªZ=aejˆ¥KgC¡³•¹Å¬©©Â#`\xÍ-ÎË#!VF€“c6=mtq^Ý^GKÝ’\Ü÷M¨®¬EUø�è×0bäT* æz°R¯AEüNl;–‡…¡~h¨ë€¦±Ýæú0—½uu RÆjj>ã…˜GªNE§1s¥Ë9ÿœ»ô6(qÜéÍ·;R“â8‡¯ƒù@”;Z`ã‚[žx�Dò F¢*ÐÚ·‚ÊÓ˜ËàçŒì¬<407UKK…5�¬]õQpRD…'´tÌhÃn†ne%Ô$†ëäIh¡�ÂÏÏ�1>†PòMºtÑ~Ø‹­•­ët³rA?ÕóqÑŒkoÅ´�©°6³€…»'ÁdcèÓ ¸¼¡ðs÷B1ݿꙿÚÐE513Rëx¿²ºËVÝAElj8/Î-ª$�†1fTÄòø Öææ#ìd ë8hgMÖÀ@6B¹Ê9o'•·2u4R¥loç‚6‚¯Þ¬eôÉŒQDPT&ÓB"çÕn“¦¢‚ wC� îîPn­ƒ©¾*6í ƒ:�l¼¹Ï®ž NzqÓÿ=‹={÷àÎÂÂ;îCçÈ�;Ô¤®®¢Å±¢‹-Úìß”ÒI£¶¾ƒ"fú«gÉ,ô”.ƒÅ”a­+®SïUâ röýѾ4âÚ,2P[8g—îG[ïJ>Výþ+’ê¶�«ÑäÐ&•Ò¢ªÚˆp½qËà+Ùëç¿õUe¬+êÆAÖsûè‚Qe1N¬¢ pu`½à.ß`Œ= N+C9À*6é À9@Ö#{öÐæŽü¡Ó~õH²Sɰ¬ä$iìŨ¥K˜ËyV![&ÓÅ"æƒz¹ûJ¯H¥ßÔ�è˜ÀØÔ‹—­@VNϦ-ÙašTCõq4emL–_߀¯olj‰QñHLL¡ª€ù~Ýõ˜5w’ã¢9&éFZz<Õœƒv;bP7›Ù�i×3»ÑœŠÀ3Çÿãÿ�ígÏnÍM ̤4ž}{Én³&ƒêß ëìÁ®œ’‚š× m²æË�x[�È‘„––jìØ¶)Ù¥Xùs uªwKPP£€ê¢L(1ע�Ãûa©s2딓QÀŒQZ„f0—–ÌVÐçࣨ¬Œ ´>¬ûi'=xèî[¡Œ^;² –6vH<² )¹ä”ÃÕ݉EÇFÚ�úãþ‡þŽšª*Z¯ècÃO?"-‘¶ÍA£3Êý'xãégžÃܹó:of]³ñV¿öŠÄ´lâä¨<+qÙå¡MÒÒ•·‘Ux.;ÛÒÒ‚Þ%0sô¤:ÐNZÄ1ŠöÎ;o!š9“ ·Á«¯­Æôi3ÄS#š�µ, ÐÒÔŽ°¯ÿÏÙ °æ«ÏÉ,T倵­ªßÿäK;° ýŠjäj˜Ñ ¿Éóðýšu¸Ž \}#s¾‡ëQ˜�’¦8Ú[ÃÞk ˜¯ál© #]ôéY#ƒ¹?nØÈ, ‚/�P¦âX,*ü¼¸ûné½ •áG~Œ[˜ûÙ×_Ò>ôoÒñ–ósÙºñL�1øÝ«híTÔv¶HJÁ‚‚B|AÐR‰ÿ:Ú¨f F*•tÅ ‡Ð]_ŽÂò|æ>v��IÖ"AÂòÂ<ܼj92Ò3%¯áï~üˆüUª‹utõy.± Ê�ª#'ò¦©¥uÀZÈìÜF~nÃAVùúâo%³>„"XvÚ~VþÜÜÅ7p°ÚˆäˆÃð™<[þðˆ¿ ,ÊîÞ¼q–vhÕV!ømK²…v:)´ö™C*©}œ ¢ZÜׄEK°åÈ ÌðñA>™ª†d—¾öæ (oìÆÑc»`¬£ ~>–ö®PáÆŽ8•œ‹º¢.ÄÖq"@+ó¥³'!-¡�àtÁ=Z|ß÷(\ °ØÏ[c PTÓ†g_}‡ìÓ84àí§ªµ‡Äˆ:âÏV˜>Áˆ2å´ý1DIezþŸ½«�«JÛo|âîîîÚ6uwo‘BÑ¥‹Cw�Ý…]—eq_¤P(Ô�º¦I÷ÆÝ=™øDþ÷Ü0mÚ¦¶´» ÎóLf2rçÞ3WÎù^k©…ZtœC™ L ’ÌUT Ξˆ˜Â^T§&2‡´—y,u0£­´•º2E:xNrª©“ú£‰“ ù¢;°ö9 l=Çâæ€WbsóþÔç/"=3ß|½ù'öAßÞ ^�üQbK¦òX¯/Ì„�×£|ãëO ¢®»?GZÌ.Ú8öbë{O3ÿ5%\÷S<yE‘ÙÛ@cL²CsÏÀ-0úÜo£Or€�{Jr$…ö²Õ¿£Ux¤d?6väßò܇¯ð@ÆñM—œJ„ŠlôÊÜ ìš .ñ0Œ-Ã%^®Þ(€õ‘5kh1T�`ZÃ_©5râ§ÍBÕ‰ý[P}üs4è¸ð<·6=u°÷{cN�äsßó3^Z”Ýô©Ê `íl¬á¼FRcç圅ú€&²ZTÒö(”׃ÐùsQ_’ 5’¼C' ƒ WygZËX8h#PA«RÏ©Ðp @k›œy½<7U5´vC}S\™+lÀͽ"PQÏsÖ¡íÐ'iÊ4Š@ëîÝd(q²®Îë_%þøåfœxãääóxç¡ûà>™§¶àÔþMxçÅ?"ûà6TìûÝA$  �C¯Ô_7òµÿ&À*¶ÃÚщ6ò¼ñþ·ØòsXXih…)­ÃFÛ…=ÐÕÙÆ1¡‚…Ú\Ì_±Ï?ûy®¨ …ãâ‹Ix-àõ¼—D­Ë+Å­X\JV°>öÌZ´ý|>·c±ó·ÓH8"io$€Ul£šIªj,öÑÍáç,ÅßζÿÿÜ’/¿ú_ñ6{ö¼›ÚCà*ç=$m޶Ë÷€P°þXÛX|/J:sªÉÚÒv"=·”×gäW0{Õ Õt«ò£ì15M}ظ†üWV±"7õJ„iåzÞÈûkq·7išD†V�¥´µìeÜÎpKË«­�øœp×Ñ<Ÿ�;^ªq4Ö”¢º[O=x7¨¸3b½AÛÀøj‹¿âël€ðÅ ÅC¿óçΑ>kin qí‡Í[á@€õdÍL>�ÖæFÆœ'ûK+þ õf´ Ö+Dñ *òÆcbbN�KêxÍ«ÛE‚\{k“ä•Q¦Bâi?´š1ÖUëYKñ#1ýɵkq*ö”Ù´ñƒ·±qç�hn¨£*röŠÚ,hcÍ$ š±Tj(o�ÃÛˇÄ7m¸Zñ|BÀÒ‰D…‡cáRŸ�€  ûÐÝÙ�žî^˜¹ø¡°ºöš�ÈÊL¡ÝmÎÖPi_�mÖB’ â65ÉI®¥[œ¦z Ö¹{¡�ã%{S}d1æÈ’ó8O;C©þdM+ܶºV¸8;Ыc�RN2ožûûKPã¼1,< Aѳ¡Ã9³šž Z+‹ h-#S†I¡\– ý¬<™Ý:hS•ko¬Ë÷3ªˆö¹â2Ñ¡ƒär:«1"¬º¨�1Lº°¡ÚVÄ5 ¨µ‘0Q@!‰/kDÞ„-àjéH5h ç¦ØÀ �„þ�n´†¸gn8Xãìã¹·,ö½uû½”‚YtaË+)� Õ± tà+/ȃë¥ÂáÎÛ×2=hõµ£D>@…-ë�\ßÃ@›êüü줖”#ÈAƒ.bUèêêBJr–͈&ˆÛ�â^ B:TôvŒ.FAA)�rº³e¦„UHdI¶jéÆâìëO\Å$Ú¸ó÷î$�» �n (§{P¦ž�týËDVB ­¡¹?eäò|éï™wÐuð(ví9‰#§�ÐYË*ƒªh.-Cá®Ï1aö|æeÁš5Ì|®Oð]÷CŸÊßv‚кZôf;›“s33éñÕþäG¹µ¶Äž�¢ þ[é]±G{°*¬‚Åý€¥•‘V@Èÿ|ŽìÕúö×öz/‰š2fó&Ú(ÈúkûG×w´†õÀåÖŽæêëμ365e¶÷•­zb™ÃiF€óz@Öa«{ÁÃm[6 õL,ü© M—*@ *è¼}¼`nn†‰´KY–&Tþeg�e¶VÔiKaJµ�Ye¼†ñ³ æÎ€©�>¾üêKlݹE,Œwq 5qÒLTÐãÀÎ ˜½ø6dî{*êúGûŠáíûõ^˜Š×2È<ûð•ÇÌ.¡­f(í'%P+jܬ{ç¯ÐQíä*šjýT†µcç/0tÝŒ€@ÔðECKQG€§ µ´GmnnB[=V¦FCÌŠê8²=Ûš+ÐNÆ—BË } Ûiy—“•32ó–¨Ì-©„ ûÃÞ͉٠‚ÉfBûZ=²ûJÐËAf& ±ýضûÊ+Ë©z‹’¢~o'öìØ-æŒÞ÷û‡áÀBô)‚ j Äà!ö8ÁbÚy�)¦lO?õ'æŸÂçÿxžÖ¾ö˜1w­Cta¥«Ž}?ý„b27ˆCqv ,œÜÑM`ó›Ï>Ã??øº­(:›Fpâàž�¨cF¿fü t+Ö˜˜“xèÁ�A ¼°¨Ö.¿ùvî¼cµr¤ûÌ”xUÑâvµfdf~Y€U|Öš@øÅ«r™ÜNg¯@’.l®ûèŸøÛ“¿G¡6­fx,Þºl9mµ³ Ð6ä~ªC–h-™¨d ª">›9/Înpe- w‡1'©‚4 XíµÝ*P¥EX#3;œÉâܵk¯Ä‚Œt5�†¢æ0k ¶-�1‘`g ÚµÈ,ë…“O0,^‚Ââè!¿Ç€V8^ˆŽˆ"Hë‚âŠrî;͘aÌüÐèð­'Ã,¥´ KW?�P¾OÎcRŸ“5S?¤3�DßÜÎþ>Ì:„¯^+ºËª¡ÊcmÍ-‹ñÎŽ#ÜN3œŽ‰‡‰ÎT@õ7ò8 �Dÿ½Oà‘'ŸÄïÉ<** ±¸“CDZ~]+Ó®ï„\KÚTt[A—Àw?3Z,nïþâM£ú´A–AØ&oýª„ãu ˜7܈ȉ3¡ªk ‡0DÑ^û¾Û¨ÖbN²m�§pÿwtóæd­œ…­ YÑâ74£=²ŽÑ¥¿�ò÷½Þû�ßmÀœ�¤e&¢úl|ëöã¥-…Àz½ËºÚû­y-�ndÖ^®åäåáT\n¿å’X¢cí?Ú"w´µÂ’¶Fgxn7ã¹®‰VÒååeç@ÖV¾ÞÓC›h‚³��õRŽf ‹'2Y?´ ymá>aMåª7sy++ QÊs‹*Ÿ»í¹wÑFv|b"\]áå‡� ±¾Ƙ)¬²;QÉIbQe)"'�¡{€äüL ‹U­h<¹y1GQÑP„ô–A p˜D ¿¡£ª?®ƒíTZ¾ó¸(îQ§Ê˜–ô&ê¨�qR�rãîyïßûjšÊÐgl‰œú>Ôð}†“ïÀgké0 Þ wæÅþÛç¿wA¦¤r­kiI>�dÊM¹ä>>&� k ™úN—¼öÿý M’ ÄMØÚÛZRý G§>D�™Îk/U™ •·á}%\SÊ Äš ë ëݷ߉ßß·óÐY³ië-ˆ¿Övæt<ΜN€ÇÕ#5‹k=¤¼i«ëŒôòès¿Âe¤Š¸~^þÚy£6k`½Q=ù+_NG%´Œl¤˜-} ¦ˆàص­©>z ¥\»¥5ÙÆ ƒ™±P!È¡lâ<ýŸnƒ]ÕWõÿÓ_{îûFR°ž{q„J⦈z¹šZjû®ýðò$Ñ:^ÎîÒ€Yñ���Ð4·‡ �šªÊj«÷àƒ�>€ÝjÊËK˜W9òuc„U¼®§†¬âƒã¢"%€µžÀNá‹O£?-þ¦+Úm¢M‚þµ6®Þl€5Ž çµœW/_qa�êZ×ñjï³#�}£Ö¹ófáOÏüå²_Ý£è“^yž•´nåœZFK è&ÖÓ^:²±–Fõ© £~üæk4–$ •5„ÄܺpÔ3"+”õ.UŒó1‚‰G´'B…V¸Ú²øøùş@7cr*ò Éºˆ]ÄT(Ú[!/̓šK8JKK©Š "èÃÏè¡¶JŽ*D�ý¢�SP G¿‰$ [CÓØ ?mÝ̸¨ô rLD]?[ÐÆÖÊP†œìD$ìÝŽ…‹g£€Q0F¦ÆtÏ:šZYò‚ºÊ ÉÚ%ÌW=Ž(7KDD2IN1…-�æÌQPLn_ �sŸH’ÜôÑŢΎ. 6“ÔÛ‡êŽ>’>taÈüÑA-8pu²¥£�§"#ÇRª¡­�N)†I�Î`­¹µ�ßÓ -ÖKUwÓ^‘ ¢¯¬ j²Îf�~-cªQ»Ð]•-'‚œ5è%ðØÖR;:¾˜�<îäé�VFr up�}}Ö´ ‚:12£†U­�-È'¸\GÑŠ‘¾ÅÐã¸ûOÏüGO02‘ýþè]·³ß4PÅyK83ÙûUÔq0.u¶‹JËoÖÉqººš¡C¢³Ÿ�1¶nÛM7®P„�™Äzœ5òN!'1޵_MX1ÆK•n…{¶l¡ýðY„G¸A·‹û�µ=ûŸËåïѧ¦Ž±S¦¢€â”ÁÎÖ¢–`ý'o£(ý4,�¢8Émó÷��ÌÁK~*Á¨5,HVaõýaïW@Ou€9!µTºÎBâѨom'¨� Ý«·V�!Ø�Röéñ¸Üóð#´æ ÒŽ9R¯¿ù âáåFûtÞ¼¹Ì�w ÀKÐ$”¬¿7?üþþìŸ42B£½ï¿õ ì Ô°à®Ç f‡zPmlh¤5lªj;pÛ‚´‘MÖ©œŒÂÓg¥Éã –æNð¥*u<ó3à`¢m� M#ª¥3PDpt¼‡š–ÐG šÊ²±nÝVnS¢¢£±ió:ÜñÀ$৘Èãß¼‹°YK%«“9‹—J}Ÿ@Ûbuf‡£{ l]ñö/B›¹Úêƒìk 4·7`Ã×I Ðäv©"lÜô1»bæ­÷@ƒ@Ü×½ŠW_}wß÷ ™›d�¢• §9êÈÔìëQHY’ó¨ýO´œ¤ä&ž‚WØy•ä)æ�nøîìßþ-<<<`l¬�±žÎÈÈÏG^m=üu5QÎÁn;óDlÍUø›TÁº«:d@VpÿmT��j2z¡ßWK�U Í%U�×Ö`ù½k`NðÞÞÆÇÒ*PGµr[ï"#‚hùË|c‚•*n˜dÎã*Þáá¨ÊIçr:PÔ-ƒUᩉ17q­�¼ðì‹oð˜¬Ô�aG¦h í‡õÕd¸ç‘‡YT HM¶ö©C‡8Øf�ˆª&CN°\x¬æVT`ÐÆ †¦â\×�ìÒö³‡E"GK‰8q¨ç~m4q JŒíÑÏ¢’zYª˜ç:e†4À,n}Wo¼¾ëtfø"˜‘²Ún~¸¸ÕѸG¦†’ì³ð›6;6®G`Uµ}ƒ„D˜Åž@çØ`8PÅVQ^N–f&ÏY„{z˜ €ÆOšrn `=÷â/xG&±P›¿ÿÎÛ<×e¢àl.&M ǘ0Wx»˜Ã*`:Ì&4ùzP�žÚ@‹öÔ­³1}Ùªk^›RNŒ¬ °0?çrM%Ñ<‡ŠfdnGïPìß±á!ö¨hë‚'�[GYÈO>±¹I‡yÚljŸ&³žÓ�žœ$‘8^|áoèíl@™­BùÖÛE€½½õ�rÔ$"ž…�~cxÐ^ÛÆÙ ©i´éW,4Ê`ªÕ™ <=¼q4…ìgª`gŽu⹜Ó�î‰TQZYÃâ-ˆI˜°t·ež·5˜­èîòùã°îÇ�è‚T­LÐÏþª'#º—… 3Sfyr¹ÝÚzh3tCe'‹eÕ\%•¿­£'òx hoF„F-,½C˜ÄãÊÆ‰×u®à¨u–'ÒR=‰™Jí$AÝœÂþ¿>yó�g•›Uw»ž¼�+.$é(_ÿoÞ×—dñëU8á²S~ûŸïÑ–Ë„·!bŒ‚ç##KiSH¢ àê(Àzõ_ñè¾�ÈÍÎ@Hø$ìÞµOb85·4òÚŸOOï ÐIv½`ØYÅ„ †øÌý*STiIq;H—±3›Ð5æF5yì1ôÜPÞ†›C–•"ŽÄhÅ�²Ë¦Ã×aÇîˆKw"ªIó–MC{ìQIU:ü=Ã;ÒÅÅÙA!¡è$ÁTŒ[j sò¾ÿâ3:|?þ$kQ×·4|ù×󸓊µæ5·H1,íq'øÑ›“+(ÖâLŽ»œ=¯gõ¤÷vs~ N‚ÜÍhT+ó‰1¬SüšP°&³žbo{yòþ˜l|sBŽ/ãjp0§ †M)Ø´q3IûyÈãœÒÅ/€–·]Tâ_ÌGMÍÈ–b ú)\ÐTÑãД¤Ô&ÖGt1oæTÖ � Íº ™È˜9=Šâ…j‚°“q(! NtŒÓ4¶Âñ½ûIšÕE:AÁVo½rF»´‘bAka*¨)bðñs‚­z5<§CSµæö®œã÷±`ަúJ´²~2ÖhCýÖ“ΖÇÂÎCZ»ú¨ê$A›dh Í~‚š¥Ï›�´Kel~þÝ ´’ÈÛ×�…ñ�¶ðr´‡¡½´Z+¡MðÔÜ%€µŠSÐÕ£ VK5Kc˜7¬Y_°wp¥x£šrT5¶‘€Û+‚Šíru:Hé¡O�JKŽûôõTQ••F�Q1±qho—Óêו¥YÐÓ³F§šk}UÈ¥RT[¥‡Ž%êð ‡ �ŒÚ0°ua¼¡ É鎨%]_ZÈZ•:Oã6p²´G|:k«¬i9Y™±þɜ־ADØB›@žÝ;K swbü”™$Š+ÐÒX„‚Ä ´xö³•AA×+~ ÒDP»–&¦¨o£ŠX�QŒo2¥Š½¤ª¡A¾8ÅsLüñÃ3y"öPèQM¢²´Wçr}l%ØÅÅeI©ˆv€Å22:·å—T@_×”±nš¬ËÊ�v6Ÿy¸Tér.j¤h†ûª€€z53eÅHW�vσó[ÙWú:Z\Ô fÿº›å¡EEŸýÞ 5ç`FG©ò2¥CGĨš9£�QA¶t¾S¶-›·³V«ÏE%’ŠÕzí³ðÜB²>Ï»ÌN8}Q”¹é÷â{…kAû¦oZûy5³‚h#®7ëí�ß@ÔT «30']uk„ÚN4#ZÉ^K«¡§}jRUTCª½+}&’JÒ‘ÖÏ>þm´QÌÌÊ1™G›à˵nZj "�Å3oO× Þ¶‡ö3qPVÝÄ ×Á´ÿô÷Âøè ´Úu‚/U{GöÀç›w£¼±‰nsÚ甓U×KRS*[1P��ÎÈÛ¸½z¨,*à÷u –àš:sc7oÚ„;Wß…'þ°¾d^Üâbc°rÙ.[6n„UðtrCCƒýQ×ÜÁÁ¥S§Î†©£;ÕoÌÆ°VeE'LM ÐG{”ï\Ï>Z…Ý{·á/O?‡…w®A!ÁV3ªçLÈì«.Çs¯½…»îÿm÷48IÐGèÍßÿˆÖŽ&xØyÑÂÕ î.°Vo„©-­V $šš™ ¡�" ‚õ¦G¥²PÉS`a  }•D�›ƒq<ž¦Ïœ…?T®äWÞÜ ©LŸ¾g)óSí¥|£‹û´!7Q*lip}®§•æeÂ7b‚°f$žÁsx ï¿ñ ª›QÌ}¶±¢®T/™9§²J¥m\1}&B½øŒV¼r4µk¡-?†öâ¦Øw2…¶>žÜŸ[©ŠÕ%±#‘ƒ{f4àl^.·£… Õ¸þ!Tž�LH`Hæ~3íÐ1ôµ)Îuÿ@¨+üÂt!//AÚéTظ›å¬Ž�;hÍ\ß@sd£XZý”è[CfëÌc§�çJI¾¨M=ßq³Ï-ëF=˜KkpQlqpt8·È'}D² –Ø<ô&MŸÊ‰šbãó±mçO´‘ÏóÓ.²�©Ð¤Òü•WÇœÙ+¥Ï ÕyU1Ïñªƒ¼¾¼fö’ÉÏÖ`ç¾à °ìãw^í |ëŽ�?2«êGS”O »WÅΟvQµå†ÍÛ÷àÉw¾Cóvƒºš@zí›YL:sp'Í9Ì]Õ‡íÇÛøÛ™[ب!Ù†“ý}\†vòVÙ³�)RÎaÓ �gU\¯Z]·u²E`V¡!&äEUuIö -7÷/YÕªTx+8UðæLÂE� mŸj‹¨Z·†:3‡ôh�maª‹úmö±ìlô™ m†Ô³•(¨nƒ5Áumèò¸í š•¬ïwuù; ª¨ñIga¬IV°�1 I˜þÐstƒèDÀä[hw­†Œ/^€eȤa}síʲÐGðš£/xújâ±T”› ÷€!gŠkÿ¶k{çÅ«øT+¯­¢9Ž™$Ýÿ/ý©/Éf޲Å9�U¬$N)›È[R¶e+ç#$(lD UùžÑûË÷€®®>¯}6Rq¬¨°kŸ}…޵è¨Ï„•†æŽç>,Æb¬âE+ªþfóxq›8}îÿ,À*ÖU�äÜi'îëHTªãq¨Y»8®"¯¡Ü;5cxíRg±RÙÔHÆX•½ñÛ¾¯¬ª$á°òƒ¬`M¢]½gĤaÆ�‹˜¬|{têDZýhûõõ€P§*o—¬½š–°ŠççÓ À‰äÒÀ@fC‡bÑ’ÛhÙƒyKW@…ñ7.ž¿`m¯«D/Ïmš_kS0jD�––¢©hÐ9HXs½¯Ð ã9Ÿ<:ÉðÜ)š¼žy�Òµ›ƒ¶ëYE�â¡5·cÅÊÕÒç•>ùúsÈXÉl¿oÎݰ:hU>V~ær÷`­ê­ç%°RØ _ hï®+"ßÒ�1Cf¯`VdÁM`ce‰cûv@A«×€�ñö›Òty}Ê�î• ² E&íå¬�¯we„‚õßXÅ÷T–$I¤ÿ›´ R뵬ò"R€)®T*\7aݸq�tÄß›ÑÀ:†ÕáMNå¢ëUu]À�#'Y/£óœ}?LjÐÁ«ŸûT=Ž?ÁH®kU2öMC˜—=jÓâàǺƒššózC¨ÚोÍF�AdöR�jjï.9V ª’¼Ý؃Ô{ ëï…Ÿf2kº‘pü8*k*1-Ê2c;|³aBXUk(¡Xc95PRZ‡Šn TæÇR½©Ã\Q9稦èn-DwŸ]s7ºY/Ób¶¹°¦Ö�.Ö.›©<ý‰.qw“8ÜOщÊ@ò ÆØ1ﵞ¯Ož ]úƒ’LäÄùti5]Þk“»—u�.Ô0Æg²�+Üü%¾�ÎÝŒ²�E[uÖ*˨(—×ÓÊW&t£²ÑRÅO'OC&@ܶi}ºIþ·ÈERy7ìB"Y ª‡g0E0=½°°r‚†Ž6ª ‹=ÓÏy)#ÇXãU4×�Ìëts!tlüÐR“EÏ¡œë¨çâdf AjÖ8ÉfÒ3—¦æØ8ÄÓŽ&oðó$Ð0*.6 o¹ÁTýºz{£K×:ìõÁ~¤TÒaLÎÖfHÊ(…9-–C#‚YãÔFbV,í=PÝÒ +KF|”pl 3'ìÿ‰Ù»Ìl­ëT—Håâûä†Èyj¥h¢º�ZKwÖÎJ–j±¦ÚÞÏM°y݇°³µEIE çÆjx0Ë–¹®--õp³·€Ÿ…Ž3z§®®^êË9²wt†ƒ›3Zs“á0f"cÈZÑ/§1 Òy…{…"‡"ÖtÔ¨šÖWWGFFòY›L@X4nŠs–¸/'¡Ú�µOþöÿ)€Uœ Äñ/¾_œ#;Ëˤ˜*aa¬8}¢UƒR>«òz¢‚¼[]ºÀ×6t`ò¼•TDT¡¹ �Y¡VPë鄞¦6Ƴˆ§£Kð” 1h©¤ƒœød›Ycîô`Ô\‘Áß ¡cvÖFÌ&èA ÷�=¾[¾ú“gÃËÛ eUÝXóØSR°ü2ˆ5µÔ1mê èhhaÆüÅR¿ikkÃÖN\L˜ãÈ\Ag7'Xº|%Ì~†z8À �'¬âCþÓ³pttÄ™ã18yø0æ.Y†¸}[h³jJÛãèk«ÜRCKŸŠëäøÛëïáŽÅóaom‰¤Óqˆ=y’©%ÐtËwàÖU«¤uQþIOMÆŸ¼KÚ›ùGp‚�±cÇñw #¨D«aà…2Ùžy•{¶IåssÍ ›x®ÆÉCû`DõäÌùK8q]EÀ´‹vµ�ؼá[dpv%HkF«–å÷ý™ñûq &·/ž‹¾ÎV®¿)ð9YhÀ˜jÛE9å xø™7Xè—Xjò.9ò¨X6uc¾Eöm_�ò¼\¨ÑâÕÕÍ]Ré>ó×ÇaÃ}íÁG•6«¶¦O=~vmûŽ–Ã6($ønn¬AežÜœQ”|Œª4”×SéǼ OT–c"YÞ'�æ6[‚ÍVFƒp¦:ÏÌ<8pò%nÊ6\eZGòÃtª½Gj�d2æœÚ‡ÊÌ3°£5ε¶ÖÆ:¤Å…“‡ïÜÆ‰É ´—å Ÿö=ÌÅøˆp¨¤Þr0‰§ô™mWß3€ôCûame�ˆæj˜Èå­ý=i¶Î²œ²RôtuÂÕËW?Êã¶Í}2ÔRªíåãÎcÉ ¥ræ˜?‚©“ÆÃÛÙ æ&º,˜¿Of«œ8¾—#æT êãñµ‚•Û)Yù„É“ÆÁÂÖQ*¨ËH¦ýTÍsGUa*‚‚|P\F»`Ç¡¾V0ãû<|‡Î�f–ص}3:äípô ÛnfÓÉh-=eúttTÅÒ:ÖeÍj8—ÏIA?ú}ŠF¸ä•`fÙ‘�]¹�2'¹“,N‘§,27­ù\In*:cvþ¢Bbоï› ·±Ž0óòƒ¡ƒÜ\LaalÌì‘vìÉ©OAFý¾þˆ§Í´Ù¤©Y3–ªgÚë°àaJ¤Ž™Ý%?ãK¿¿æ6v<Ÿ_úÚ%oቲ²2æ ßzÁ++8�“þȨ1»4˜ dˆ¬ÜD‡û3›F •-°%Û8¿¸ vªiP¤oÀã_Äà³ß"¨kˆö˜�Ñ€çŸkijdé‹’:¯×ÒĹÐÜÁ󦬗[#{§ëXsò y7¹ÜânèóFVWÐR6¥‚Uùÿðû{ï~``Þ!WxÜÝEÂIŸÈZ=o1)Îãz´>;yÇ =SSÔUU¡¨¨It�ñdþ¥!U\7«‰uuo5]%”}òß ŒLIçøøâ&@mlïgåz*ÕÉÊ{Š(�Påýp@T ŒŠûæñ ðtøm8/©~‡ÖHX†ö2šFÜôÆN„é º*]ÔŸ¯û/ù_äè–“xcÈë‚h‚„}äøV:Ä�‚ž}0J: 1#ÒMé¬o°$©º´ ÙŒ—2ç@Ï�Û‡˜½ŒÈË9eæß"ãE_0ögN›N[b'Úlp°¦¯Îâ; Þ~¨)Í 5™Uú—U8ˆÚ¶é;²á¼ñÀB‡ÌõÝjð#£)ˆê)ªín_ÀÌÍRl〮ª4…øÛ¨aë‘8æ¾ÖtÓÁÊÕ¿ÇâUÌz/:Xäwt÷&ઃÃTñ•7£’“ÜÂ*¼öÆ 8±ûGÉæ´… Þ Z†T4÷"9»wÞv'Aè¡B™*—gIÙa*T÷ð£øäÓÏÙw*ˆM:!7Ìɲ3a •RFdº©à­23ÔÇW/ª9–q0¤Î�‹²½ü׿qrX‡[î¾›Ú|$û‰–°™TžÄúí±`ÑrÌ[²wÞ¹šV˜6ØõÝ¿p|û÷�‘õF«%[=^ÿl=‚CÎÞÊe¿ôÂóÈËLaþí< | ÎåÚ¢ewq­àNÖœX÷~ú¾Þ o;}|ðá»´q–Þ²'Nž@ ÙÎú´c5!ˆbhã†r^cÆŽ•l˜S3si+M«a;nÍÈ@}y�Væ¸YûÀœ–Ä25CM¦ztÉj”5) «ÖKåds6\��ž‹’øXlýöÔ•ŸE`@ Œ­� .]p_øû³È¢}±�kÚ‘¾dÅݨ®¯Ço¿FK\W¨ v#3aV®¼9©©pqõääßÇ ï;”€9³&QIIÒ '%f6.tÉ[o½CõJ&Í_*=>öÜë)VÐÜG`tÃ7_Re¨*¸„0²8I®§í³Þá­œRá2*ò+]¨ª«hþa‘x|Í]¸{ÕíEÛPYU�Hw;�Ò±ìNåo 'º}u´~qCVM;¬ÉX4®¨�õÍ�+S÷aN‡&,ø“�ý·—_&ó³GN&ÀÓݶ´3´çñ–°o#É-xíïÀ˜y«,¤|ûÊXµz>Ö}ù Ò² qÇÝ÷aÓ§¯Â†YÅ«vÌ9½û„ø=w’˲GFìz¨éÖG뀦.¾UTßBÛšûzÀ¹Í¶ R¹³“Ù¯ÌI p6Åäéã0~êZkGcÛw;9в¤mP#öí? {T,NrsCäé“­ý-í2ËÖVÚÉÖ¢�ÇôYªÑµ¶Ž™: [7|O?IÏYÂ2c#m¨r™]QSPÝ£I;›A’*à¦Û9AÊr2g‹›º¡Í¾V#8àɼÏSdç†Ó׊¶°H÷{Ÿðsë>üA=íu&Ì[6ü©ëz<~|ô%ïÿÇÛïá-ÞV.ÚÏ.yŸ8œ]�ì*‚†Ír,_¶œöÑC€†Ž¾1ϽÆðöCeñµÃFúŽU+ã_¿ÇœœqÐ*Ö—^|éi(ÿáï0wõ‡.±�>öÈRUe_,šFå>‰/BÕžD«ãRN\{©4 Ó¶ƒÓ¡\«/Î„Ž¡ ³œe¨,( –YΙÉÈ/̇u �)^;TddǺbã§ÿD 'â^¡´2DMu� ¥iEe4º›a®Ó¯@Wæ¶ò£Úê˜+M*¨ÕXÖÖ‚63;æÏŸŒ­û“àOÀÖÝÅó&GKY[y=ò÷r¥½YÌ�*TÐóX Ãkà Ï+ú¨ãÉ`΢•ØúÕ眴Jyàã½ñÅÖ“TâÒð“Ns¦ŒÃæO^…Kô ܵöMfùÀÇSßûì+÷’ç¸z­ë%¾ÉOÄÅÆéSGàKÅøõ¶gž}�ªæº ü²ýñZ¾·�$‘94ÚnlÈÛIré…6�» ¯ýý¬0irìAâ�hùÌlÞ˜9ôd­†ô.øÜEÿ´´4IϨ³ˆüäãO>D̹èíÿ•K s%ûßá_žž|”Î :°wòÅÓ~¾,‚Û±à¢JW vIj¤Ì„C¼¾+X$°9÷Ñ÷ß}“ŵ:jXž{nôÁh\w� {%€uøòRN†µ½‹4�þüµ<î¤rÅ�ãÅÑö¿Ñ`]ÿÂCŒ9ð�òðB&ÌàXÌ߯ÿÅõ´îBóží|Æ!láÒV±%UÌÉ$[Û!RHc[ ´t™â|¸…¤Y[»óÅL}‚"`ídÞbkÚièP5b£]$ZNQ­å]ÎÕ“cp¿s“@ÖßÑ“X0¶9¿¯ «ã´¡£kÏâýõ-,¬.XÅWÚ�`ÆLBQ°Wª8…Õ£ÍÚç/Z£ëûW,Od¸ê­Xm¤T„^ÏLßzS³`šzyEä$ië›aŒ®Ì¿ûTRGÞ(eéåÖ«œnH†$P)ûF `  @i…,ÖA(¸z*J¤Å S¼ÿ?ÑÈq]/��WC•à¨E/¾ pd¤›Øý1ã¹MŽÒm(kQì•À˜ˆ[/‰ÚÚ¥¥Tñ�/’,¢•àêÍî�ý߀ª®”@È�ßýÕ�ú$ôX³Žæ‡ [*>è ´¶<žä¥8I²ª¹‹#̵ԠA¥©‰éÙù°e�`Vs7­˜_ZÚͲrwÚÐNåqc£œ,éDGÐU›.XNÎî(e\JWo;Ƹ™¢Zaµú4¨xOFëO%�­’=¬ uX¿‘i£’Àb+dÐ5°„©�+Š)’È­é‚•“#»:àC»áúñú3K•j\£ˆét�k‚…NÏgM˜7m�±H\?[Èqè ,T:‘[R+‚Åu fŠZ ’¢Šö~uè[¸Àß^–ÆZ8žÁ}’ö´^N¬ýô£�$v7wOŽQ©`=›ƒ?OL öC·ª6Z{µ°i×NLsF“Šk…Ð¥âW•n]>ŽTåN„*�éκ´Ñ²ÖÌŒõA RzûàéÌø"~3Hε¢˜Ã#<´NÊ)¥¤Iɉ$±G¢ŒsYÖL-lœ˜‹«O WƒÖÀg`A×—÷?ü„ä`uæµv°¾H!B\ k 8Ê(/;ã~ú8 « …ãFŠX‹ó Ž"èÛŒœô³˜2.‚ýlDR² œ³±¾¢Á±¹…&fz’åj­|¹Oku71ÏvPŠï¨©®�\ÝË|³f-Dqn64uHôåyÇÍÅ SÍG&wd¯3¬­z™ °.âÆªZZ7p¿r@üéãx"¤&Nð £u.­�å}ƒT­:#�ý¬mï‹€@Lœ¿…´®-χkÑAÙä¤�B„ƒÒ °›Ž‡%½2«Ø¡‰€½®fÉÚÉ&½�©\†3Úl}�Bà߉î_ºw+›Ÿ·Û¿°Êc‡¬âÿ�ã´gãºZæñ¨€Lœ? 1XÊ#KqÎðØrT:O ]W†ÖR<þw¾G¹�¿¥û �ª*8ö`ÍPÙtx�ëÅMÑÛ)=u:>Î}ÅÇî„­ýùñÁÅïÿ�‚¬#õÊès£=ðÿ âOlg 8ÃÔÍÏO^.Þl¨o$Àzñò¯ö;U›G¶lÀ¯ÿë²où›¥åyp¦íC^Jø’’±üNZðž>…¨ió ÒRƒ*w�;+*Ï�/¯½ŸC[”·ÁRwŽ*•° š¥ü�—| ¦´ÙmÎÜùX¶ê^Ú¦¨ >ÿ4ô-‡–óú‹/H€°ƒ£“ô¾‹ÿè["dú*Üuï†�{P±eŠ/¿ü˜v³§© lCä„©(?ËLH‚Ù=Ì6mc2D3ÔEdí¹[’ýÖ)$že,óêªË¡F柢¯�–Ḭ̈ ms'x""$Ä—€{)N&$!xÜ$l?Àm¦2ÕÇ/ õ9(c1¡—Y2�ÌR]¹÷§½¸•lîžÞ^8¸‡`Þ¢¹8qx?&k"ðžÆ_mø –Ž~О‰#œ´446ÂPG%E\O5²wÓ0~ÑíÐVSÅ»—T¬—üà??áu¹—¤ç÷ïÚ†¼ýñ©g$u¿°P¿RKdMsZ¦Ì]Œf~òXÒâ“•™�in°$©Ä—Ž7m¥]m þüôÓÌurº`‘d½¸½üÒë|J…êø‘É“I"ŠvàÊ&Àó-%ˆ>Fzêlv6­»—bÓ÷ë`AKóÈÉ‹¤çWP‘ßI muÚúôs:~úR)³†û£È«œ0�ÛTÈc*:Öt‰fÞsiBÆئ2º�6AÍm($[ß„ ª®»;:`£ÑS] ¨)`Kë_AªøÝ½¿Ã™¤tf:SIJ*lиY¨¥•‘½Î ²Øwªf<' 2 †yÝe´Å’2ÿ… ÷ªJfð:éñÚËå3úm¨ÛËÏ �ZçH’@=ƒHLM@ µ&ì̵ÑÇõl`‘±©¡V2*F]hãVI+$~Ü~0´ÄíKÂÕ‘×jg^wdгö`.N bÿr/<Ãgbý[bÆÀÔÁI٥ܶ7¡¿<ª&— \ð�ÿâ?"[ÜÐИçƒóûÖîoH\!Ë]›“£+5/fG765Ü�µªœY@<']®Øð!­ä/Z›ª˜{4ñërË}þÂàê%+ߢFR˜X•-ïl Žž8C˸zìù‰ñY~.¼–UT!#;—±ó`£òsÝÀz!ÈúÌŸA[µ~Ñåså2nôý�ß­ãSE» €õ»Oþ�ñ3œûš³,„oßò/̘w7UÖÒµ{ñâÛx­ª © jtgé¢-žÈ‰—±p¥I幸öÓaeÚ‚kXìÑTUÕÎ}÷èƒÑ¸Þp÷ `}åõ—¤h’+-ÏÌêÒcV¼ÿ‘‡fÑ×ý\æõ•–1úÚ�ë�œŠZ¼¼å ˆ´J¬âXjz8vtrAaÂIƘ?e,˜<÷ò›»[“üawÉ pU °ŠM9/`½‘cкœ|„Ž{Ég­�P�sY�UMDpxÎæ=›‡sJIªû%-eÿk´Žtå|Óñ‚Å<ÿØt´ª&8zÁóÿÎ?S‚‰ÿÎç‡FÓÿ�‚zS £…vþ(�~¢hvÚ,#'+„íß ×„SçÀÀከ†Ê"º�ž— _�÷qfN÷«r8ü ¾+—#€L±^ƒöŽDt@Àu=„5fÝÆodÈT�Â"S°B ª´ËT.ãzî3Î� ÄïѶ})år•Àèõ,¯ž×i]ª •à©X†²‰lÇáªPïŠí «P¦ ð}8xªü�…êµ§²LÅbí³Ìcœ¤\ÜM½�;‹MŒo™9oÇNEã€T™mªIu¢ªŠU£sà �Ì"ý½w ij‹rÚ¯–qNì0áæ¢�.N:5©˜¶xŽ�˜97 1T¶«£[›ö½šú8súŒ”ƒ:?È9¹ùL­Ñ†¹çdTVjS šRÑ�¦6FùXz╚E'L 'ºðiPu|:™¤wg’1ÚJ1&Ø º$äÕµu2ëµQþ–Ø»k/ª]¬º¨àkcjÚ(+ŠZ/Š'ÌG¡Çs‡£'œ`B¢Ä§_�ÙãC W(8gS <2sg{èdæ=•©zZ$î–¦I®_E¥õ8MP¯¾TØ÷j  ¢�U´îĺÒõ€TÈÐC§*Kksìݽ¯¿ù&☠ʼQ mUì;“Š}ûŽ`Å¢9Rm0.؇¹ŸŒ•Ñ—Äj´(îEÉ¿èªAsIôn!8›‡˜d:ju"*<ê]Uu�ÆÚ§9AÖfº¹¥¥œ…¥Ž‚$\OØè«"5»€ä^tÔTHŽ�ëÌyüy¹ºÒb¸–¶Ê*èc„Qu �¬Qª6°†TœC§*˜Ó)¯¤¬ã­»i;ÌzšªŒóc’ŸiÍkç„îÖÊšÐÛÛ+‰ôZ”C‡!‚¤:¡u¹¾Q¡ŒK‡ ÁÚFûx"9§ºZZ°$¸UE;à"cîö–0àu§,'�@w)ÉÈ6$é³/í|™•kˆÎTHªÖ¢%ò8Ö>嬇UÖ72nl f.¼�ûÅ çô*HMM¡8¦Úªª¬T°4ž}ªC1É1º‡i0VÖî¬Gå²?‚MË�x&‡û‰œèŠÖÔT‹’9cã9g÷¿˜»ÖƒO(Û[ž¸·´ø­�®ç<%ŽýnjžûeB©*ÎòÓ'%ÀU-FÛ•{@¬‰ZÃY#¼ZÓÐÔEm}E+Í<>ú(!ùkd½Z·�¾>Úÿ?{`¨Xe YŠ]©âx¡±wrºÒ[nÚk¦Vv˜~çÃÒòßzóŒåÅïâVT’J²l7 ã%põàö»�Þbllz`-++ÄžÝ? ©® ÙT?ùúÑ—¿aH¬  öõ@› ¦‘¡úi—;Øßcf9æçÑ›¿K.�;­®ÌhË–Ë"—A«2Šo_ý;…�¡òm6s`‡@³ŸŸ¾ý"­+\˜™iˆLÚŽÔ×v�ÑÕ‰ræÆÖs tËk¨>êc6„3ÂP˜ ‡“Å%•Xt˽´ª‚£›,\_‚IÕyI8è±pÂÞ½?Áž!Ìçó�´ââ.‘þ—7–ÁÕÁ˜ŒwxÒªcâÔ™ÒóºÚºTlùÈšŽ~øZzÆRêH ™ªr2‰c PL˜5}-´OªåœÕÑ ïÀº¯¿f±n�¶²1øò£`óp¼,âhK«%ݽ†ª£“dã™Â;(÷ÿ„�^1ë^ÁÜ{Ÿºà+ûzÈzæW› �h«oYŠÅM.YÅĦžï50±�Þ'þè`5 ¨ÏÐú9+VcÌøI´±Â²·QÍkNðOO•¹ ´ó<“A*™‰Š¡²¹Ó—.Å_žy‘Ö&ÅXìYc ­FC"½°ïx<+Š@!ÁùñÐ¥ÕÖ!>-�LK²1µt©ˆd±ˆª²œüR¬º÷Vä—áñÛWÂ;$K–.CJâ)Zéj ɃH×k6„=Tø`¸ flØá™GïÇËﮓ@V±-Ùûwh?mnÁ– ½N‚mÇŽ%?E¼ÌAµ!M9±Ù[K#ª%}¥ç‹¨B=øÑÓH!ÞB f`°¡‘càDkצ¶.î³úÌ‹4"�'§ÚP=¢‹ ™Á}2=±‰¸kõ­(¡�M5Yä©iÙÈÊÊÁOÛ$¸c*ÙÅX› 0Ô—g´0ƒØŠä�ɳ¦ •êV9%°5í�èû0vÒL£ÖÔÕ% ç�Ô£Û&XuV‹˜g9kî2Z¤.ÁWŸH›¡,äŸÚ�úª¬¾û!¬¼ûAÚk“�i/¬bãŒÌm˜1b%�«Â2VÙÀ*š++�µ™9ÇßØÂÆ™`ø<ÚìN„)SÉxu�‹›7�.+D�!®lI‰‰,ÀÓ:H‡*_‚”6œdìØð>ªÏl¤ÊÝKn¿ŧw ™ ½©ƒ\¼Ú»�múÕÛÐëíGž—7²ùEYë ¯®ÆÜ…é?~�.Z3.ºã^4•f3›Ú�¶#^Òä0pî­°ádO�Çayv<êû51våƒÐ ê6'ù4&G‡¡AÏ‘TÓ:1«³‚ìdAX°%qã—47Oo‡f´AžÁß$XZÔÇïþŸ¼û'�œôôˆn¢Ýn9þpÿ*DL˜"ÙüLæDuÛ�_"óL óuS0ãÎ=2=”PÍÉ Ÿ:0{îìßû1³\lGA”ë~òÄ) ` d%“¿CBxÞì8q7e;ÉkÒ?lÂá‰x÷ýOpŒÿ»Q]êf‡Ø˜8f—H“³^f± ¨j’ rŠÇ_º;»8±í%Û6€jÑfTPrÚÍ q+=š ÉúÍ?yVTpëpðì5.§™9£ÖÑÉ $ RŽÁÀ=í½Àïî[#�|?|õ­¨+i#•/fª6À-i"Y¤²Œ¹Þá( ¾™d m=fÒZ´2»§†z:8™Ñ…oÚAÓÚZÑÕ[fÅd–r}JkiEÕAÅ}ÏEý<…µœ3¸³1yL JKÊ‘›™(ey·¶‹"Â,d¥%ÐnK æF2Úß‚¶©7ž}ö Ôò³põˆI8 U'wNžÃ\=$ÅœÄ<_¬ùó_•ÝI¹üÏà‰Þ/+@ž_à…�rÉ6o¤MžÙ5ª /üô¥ÿ XÅ«ôF²v"¡\üî:NˆtymÍ”ûÿ�P± €51î <}/Lz…N¸`ë�~l#ºe Xô£íÆö@ü‰}h§Ó† AÄlFBtöô`íkiqx·¬¸ Ÿ~ù L!Ô�­ÌÎ dkÔB²�Éfʶ`á|Mèì!©õÎ;|(_¿Ù÷Y³ r ¸q\:`ßÝ\]Œô´nlüú}‚ÍŒd¸ŸŠUæ¡Uäb�E+ ™ zû»hƒÏlzª°¤6ȳ-Ç*,‚)›ò{”ÿ_|?Ð'Þ¯: ²^Ü1£ÿÿâ8yê¾'©ïö[ïø·–%Vw÷ó„Úk!£ºî°¡ý¯·š�.˜íª‰W_|±wàô��XtÏCxì…QUM2&Ý�²³rñ(Éxùñ1(à˜lçK„“/]H8ö©3O{ê¤ #¬âýœ÷]`U.ðg€UùïõÞ+Ú˜gZ´2ó¡º�÷tIÉzñrDn¡…¸]†pñûÿ×ÿïbÝ£^“þ�0Yû7£é÷<Œ1SæÁç‘§¹êçìi•”`M:¹ßõçŸm‘Gþ]GÚv1¯I�*ÀÕ‹VñyDTmüÖH€“\åÕL&ÀEÉ*w`)W%€©´Ÿßw%ðY¹>Êuªãöé`²ŠÏ‹¬[åòÅrES§Iu*ú¬”„ÈîE·!üÏ/IŠSeŸš�ßjÿÎ×2±lñÝ"gUi,¾G<¾cºò.ôqföKÐC[qmË8ï-lĆ-{`m¡(º*2‘w� @”"-)&ÐZè’æ:e2ŽÀCËç#«©.µ?¡ß”ñ:ÞATRA—©¬”,ÏmÅ®ÝßAÎzXˆ¯ 2ÒÓ±pѧioÛØŽ‰Ó§¡"9žñ?Ìl¥M¯nÙAxÏX…þV³emÌ¥J“µ�D~.ñÔnFǸ£†6¶Š ÔõC“Ö¹¦ÆºTd §©n¿XAÇ$'{’¥»Ð1¨` ÉnVÚ8Ãõùò“o™ÃY ÍßâRbå"§€@‹®Gåq±GuY÷yª9³ÎbÝÕ\Y§éêׯ©ØD 'L1‰óz-:ª´’4úÄ!Ô+èšFXTä¶Ò&²>*þµq–j^©4cÁrIa§ ¸"#=“¤y’°âÇ�È�V¿µŒ˜é†¢0 }†t:ªoATD2¹½ítÛ ›B²{qóoYéâ¸u�õ{ÚäŽá{héDñ]Ç\ñTFеµ™‘J‘s8NTE2£hBBàæa MEÇÑý(Î/ ½²6¿ fç,:FT•Z!'1 cgÕ™ÙÚÑCò°Ò âáéïÆ±¢>ã˜:ù¹NZ;÷Qa›BàX�î|mœs3 •1hÎV’SÌïþðì¢;^]Úqä'�¦"Wƒü´éŠ&”²ºhëè²^«U9Ú´ÌÐPDiÖ í8owf]ådZ.ŽØ‚ñ¬½ÊX‹­¡c[g£ÔDýa¬g Ñ_$´÷+èÄFg:5ÖØthÝI2º† "âÆo7ÃÅ–ÖÒ¹Œë1µáwé±&0–çø(N—iÃM¢l óq›¹½*Tc[Zšóº@cvžeCéðíþø­¿>Me’9-+¼ÿø=h"YÃýçãÏ„Ï ëÞÝ;ñoÑî�ìÙ€h—NÚ*J «:ó k:dز~,™‡ÑQ˜8y¦Í[™ƒ7¶Rù»då­ÙÂâVYZ‚M̦Y¶b%í�¯°Šõœ0!zDë©Sd—W!82Œ í•›7'[¦ªho©ÃäsáDЄ �{rT5T‘xìæ-]I»nÝÿcï+ࣺò¶Ÿ¸»LÜ]!ÄC‚»;m)uÝÊÖvßn½»•í¶[¡î¥@�RÜ�$$D°¸»»»|ϹaBÁ Ýv÷Ëá7Ìäε¹sçÞsþ�q0YÎ\Ûl¸Ä®% Ã@­•]š¸íÞ'�°þè´ÐA¬‚…?MõHÜ©D_áiO˜G\^ˆð 1ˆI)"øÛÉl%hÐ ¡¿µ–ES’H� µ’¥±Šd'&µ-ݰwtã½…¿7’š˜‹ÝKõ¹®¾)ïoÁPhçº,<0yæBæ1ê’PÒ€0o4œ‰…SØLãñ½ëÅט{}Q¢@Rƒâo°Šo2†÷ÚZ^§]©Þh»>TÁ2üýëùÛ€læ¡­¿« ‡;¹~U¯r uè|¿öµP°^ `ºÞb‚ðMd‹Ëã¬\ý%€5-=™9/„¢h‘&M›�' ” ]þ�öºª¬H*öüÑöKìÏæ(gçåòz5‹J„ðÐÞÞa$Ûˆvš÷÷ˆÐ0Zq±Þ¢ÈÂÿ¥�ôÔ©ÿ0\É*-,þ@ëïм|ÆH«ØtvFšt}º�,`u°ø5gáöXD2³x[AŠÊªû�™�–ÎÏFKûä|õÁK’Ê(À*øôƒw¨ns‡®_þZI™™Óì댶Ñ#p«�€­�í¯Xž\-óúVïëèúŽÀ?|/©û6<Œ*™"æÞ†í£°E ì 0{&Μ�x_ó ‡�]iH‹ß·ë~\�IJN’Z-àá;r}A�c<Ñj’bÑF·MÙ…ëÚÀæ“ÿ«rSÑ\žå6ö»õ] h4òº¯ÝKûß“ŒÉÚ>ÌL­¤ýàêÿ À*>� �›Ó:U®˜z°Å4QÄZÈ?Mp(bú"Fi †õšV‚ ž3]O–»B*Æöl¼¦ Åüj hTïïo0|æ%}.  Q¨XGjbx)š°¾Ú¶„²L¾OÔ´™Œ¾*/,/­„ÿ‰í‰÷…¢W€#bÙtSó}ö¥�÷x¬äÇP,+_Þ�¤PñÚÄçÑ[±Z½™ãaA,2håM|N$ ×âÙWå“/{¾žcwÙB¿bBëyT–)˜0’HB¹™ÊìK#8ÙÚrœ“†2ö9ºè©ÑR¼—ãW,¢õw=º¨,Tf¼’Ý®ršTø3R‡eE2jÔ[u%5ŒŠãØ­ άã8úºÑ¨ uù‰p [3…ZxÒ¸Y• ZûqÌ U1µ—²:ÍM PRYA)KÈèâŸW/9”R�©ÆZa3 ̪ õ0â8W­½:Êꬅð\7W‚oÐDìÞ± ŽæºXóݺ½ÅÉÑèb-äîESpäL&Õ¬Æð£ýî´ÐXÓæÛØÔŽ×䑈ÛI×#m�›ZkÐXQÏÜb *[ ŒUTVB ;U†íݰ2VÅxF<å–Ö`]ˆX‚A Çq‹V­Â§ÿú�êË.‚¿Ùè¯ÎF3�Ïj¾é4a£ƒÚÙÑ+­nä~·Á�`¡.MõtUJfÆizè”uàX4kÞøËKoC±5Ÿß‰>3EkñÑë LpX� C¼,iÅNqJi#㡲•fƒÞ¼¨ˆì§p¢µ©Ž@q?ëVÈL6uöQ ›‰Ìœ|é{WaÝ-�b‰ÄØ£ŒóåÚšsf(+(D-­›çÓm®³«Žn®$jŸ„†²>­áe¼7�CéØ.ÿ5Xó+aŽ­ÉÍÔww1“VUz ÿ¹íYµ)þc7î½a€U¬+ûÏÐúö=É.ý?õûþþ¨ûÊÝ0³wCS[2²2i+mqÍ]}ïߟÁÂÒ‚µŸkÎ;|†æ˜KÉ;£ ëð#4ú÷è=ƒG@XÏþÞ«Øk2GXÅ{¢ã”ž|)içq”,(²Löÿ²­,À«k©R‘:00Óf$,ÅCYIi`ëàªx\©Éhx¥VS’�M;öÑ#‹V¼«©œmÁ×›ŽÃÕÆ½M¥èQ0DBr.&Í]<4”Ò®`ëÖm’®½O=4åœ;w;f´ÅãC’RòÿŠªÍ»°`ùíØ°iÖ|ùm˜¡À}C'oäÌÌ%¨8 FRd§@Ÿ`§hùTrHų ½bZMMœ˜IjhjÍŽHBØy—¦×Õcã¾øîýáжõ˜5ÞÓæ-&[KKz߈ŠÝ�©³8�ŠÆ ‡Ý<} \�EXøÀò6ü®:Ø�Zûù{˜¶`d•­y¯Õ&Ry«õÍP(-j<¦Þª¥—ªÊÂh™¹B¢�‰º°l>yx/ R”à=¬x¿î»o�rþ4�A Ž�û1eÆ\d§œƒ›ŒY˜5(¬nì鳠@&àß»RÙ«Ícµñ§ ˜:m-r“ÈÔc¦R†ì¬êé1›G½‹jF3œˆ=�¸¸Tô±£ecm Efyç3+bâ4æÔf�á¤OeótþnÆaÕê•PÕ’!« ÷ÿéÏè¢U­¢º)¬ˆ!¶÷R!}Ïsp‚93V˜֡º2[èn´.¦¥¤ž¿3óËSFj,Î37ÂÑJ†Âó¨(HÅä…+¡Ýׂv*�ÒjæëO×ÐÚùÈ8HKf/¹ K¨ÌÔ`ÇÕIƒÌBmK|ùÝZ¸Ñž¦‰@ ³¥ÁÝ*ÚÝÐêÆ�™¾½Tô…úy¡¸¤6ö–Tí•Q±8� AB–?B¥µ=³Ht˜Ë{“gÍ“,c|=lK»TC²X¬z��Þz¨×&ñ{ÐCbÌax„-¤M‹*;çjŸ0 Ó§ÍGJf 3iiuªÈüKg÷Ë>ó•&ð»¹8½Ò¼W›ÞËÏl«¯ÊïS>^n¼n €¼ëØyÖ9÷Þ¹ŒŒØ ~öy5q˜D„W¨¢tç Y™ŒXsv¢�¾ý²’Bdq0�A–j«š)^yd÷ÃÕÊ ŽFÚÐwtGÔÁch£�´ó˜ ¸ÏB}i>b×¾ÿpóÚû·¬‡¯ß8¤“ÌPÍßãôÕ1ƒ˜Y2dY…Ó®ï¿BEYÏÇÔ74â'ªÓzüiéã±ð#†TÂæ¥���‰9VÝAÅéž=˜8e¾|ÿ’LÆÀ‡V·:´Ø±¶³ÀŸ|…ð©ÌÕb-]äg7uSý½+óþ¨ôgÞ²ÙÁVVVƒ‡sý?Jv¶5dÃîÙ½Gš.@Ïm`ù+F8^O34³…¯¯~!ƒÓ'$b›-õ•¨ç`ËU‰öS´3VeÏáCG¨>e. UÁ“¦Î‘ì4ƒƒ©Æ¥ ”Ö@Á~Þ€öáXT¦“ÒCb„-ÁËÂÚ:d—Ã/À›ªpªÇfâ+^smmdèì »·.Gjºê˜£Ä‚CssYØcho gþV¾þq´É`¶å²›× E¥^ôø«"±G�Œxa…¯Åíf×t‘ÑkÁ{F%æO d~Ž>3f÷qtz`_$Üí ¥”s»ípób& îc§%gH «5Ïï¿<÷$3Ïò¨áïµ›}ôòwkÊÂT(튬ùÛú#7°£ºÀkÜÅsç·ÜßXÚË[S‘p½M8�h’(aÍë“«¦¼ö*Q^ÖSÕ\XRŒã»vP^Æ·Ù ÐZÃ{ß™„8^L¥{øõnó?9ß+/>MuB>‚ÇO¸d³:úÆT˜ÿx•±­¦Õ±šô~Uq*ª‹Ó¨èð$3ÿ;´±@ÀÙ˜ä™å%ëLœ:c̽ìÍÑ ÿ_�’BÆOPá­K²êh=âœ?1wÃÚÜ .$ò9jöIùtsn[_•¨"Õ rH©•özzFì±^_†|öSò:á?e î{äQé`îýe#Ä#x€c�˜XA’·6kà*�Î!îÒBWøïÐ_‘ã¯áí,Ç«0í*ÍD{u)4GˆJÒ¢C’‚Š&Ô lXX×dBï2€U¬÷\J<-è-AÖ ’_¾þæSŒ?qp³ ±'©v¹öXwp� /ZI0îno!™÷RÐðùþHËÌ-…PŒýàf*€œPE•¢.³T3“O£œ — ÎWk"OT(?E¾êõ¬€¦Pn ¥­1ÁNy §XŸ¨hÊd�]­­—�“bÙáÛZ  §XžÚ´J‘i+¶'€Ù÷R X¼'òöóÆ�â4»Ä}GþÞHÏb»B±*€T¯½ÑêÎ '`ȾÖÐæ¸å°ºr¯°�ÿ·|ÝF «�ñHJÇ´U0æ'?iT[ÆŸŠÃZ±jª2¿”$B3Ks:o™ ª¹•G‘,$ôÔÁ°»†µeì‰�Åø° ÔgààñØÓ1«�×=]-4õéãÞïÇÒ»WÃÌÎ ¶n^°áøYŒ‰Œè�ÈÈMôQHqøx"�KAº-CôáC´ªWŒ·ýy˜B€nx� Æé#Û™Ýý¾vÖ�´�–_‚ŽÆ4³æV�—įÏ`eçJÅ}]ÂŒ`AÀVäÜw“Íß@°ÇºžŒ]ª¬¨•D2sOM§Sñg Ú•©VÕ ªß ü »:ÛQÙÙƒ.Þ7�©"­¨ë%È\�ÓqñÈ)-¦ƒR2™Z‘›C×2'”–”ÃÜÆ÷ß½ Ÿ½ú*´MôP\×JuìyZ%·²&cŽÖÆÌá¸Ü�"�ZŽ!Ý}}ñùGqÿ’@ŠF L0±¹¹KfŒ!™…êFZ×¶xMB/?³¥¥%˜mè£ûŸ±–" ¾é¨èÀ?| Êp�ÇÕ�õ0-Úw(h`ËáÓ”ã)±6C ˜Ÿ­�öÆ'èð¤Íˆµ6:—uRišp<FT§¶öÒÕ..–nm5ðfìÏÌéÓP^š‹>Œ¬Sº9XС¯æêUtrƹ³™$}Ó²XdíSMjjHBî.èšSýkްqæØº÷´¤upq“¬|­´‘ˆ2Y6¯åÌùnl¬€JW=ª ×r\ÕÀóç®; ƒÖÅ')))È‚†k ½ÕXèOçÖƒ÷�8M1 ÝÜÇ㻀½gÆÑiÎÞ�õ%eD9„~�NX gŽ! hñ\XZBKçVF£BŸâšª®ëh}lmg‰¢ü\h+4ãÔ‘ãTlÓ¾™–ØÊt�êе@Ï1WÖ ¯°Šß馗þËžŽFs³ë¶ùÞøí7øç“w°†ød‰ÐÞ¼.ª$6’ÅéK¯M¿åuà¿aÝ`5·s“îKÍ$K\Ⱥ`þÜ_°–] É­êÅw1 ²þ7œ%£û8zF�ÀU�€­4Å€ÇÑÖŠàX2ìÙ);—’ʸ‹I#3WÎS!¶úÞÕ¸óŽ;/Yw%�’Ö¦F|õáT#VÒâôR6fÊÞw¤N•šž5»‰¹)_Á O݇úÊBœ*<&Jdµª˜Qä³hZö�©$NÎ.EBjü|\¥AŠU‡Z½�ì�÷2§O V̆²¥m«)‡�ai:iêd 8w¶3DU=sW´™ë<‘L^ªÚ¼ƒ¨ætö�¶¡Á�ª>íµ¬½Æñ|±Ãx’Q±o@oun<âYøßõ„y˰™6áï¾÷&V®X%-ûíÇoq°Èï‹ûó�W^"“Þ ó–ÞN«“ I±*®_δ�#€¸îݧðοÞ�žR=¦à«~ƽÏÐV–™9Y%õhfþ­+í�—ÍŸw*’CÃ~»¡!pbƵ)‹(~üíXÅN(ðq–@¶¶v´È(l ÀóJ­«©½T^ lxÓãµçzÚ7Ÿ~NòŒ¯göXÿÁG˜¶l 6lØ€o½ŠŸãÒ ^‘ƒ2’/Ýö02’SP._d•fœO¤=°*óz�¢(ó¼tìBi©yt+ÁþeÌhV"¸éÈó¼*Ìh}äO�‡ó…ÈJÍÈÈ�œ¦N› } fÓ¦ÀQ@w]iX:Áñ,âµ3+ÕÊÌ„™pswá`º™q ÚÀ—QUJÕiyÚõmpžYÉFdýgð÷d¬Žói•´ fvµ¾ÁMP3r pÒK6w%úU­qâ”°ÅïF?‹oÎ6ˆ�ŠAbZ2ó•¡Hæñä™ ˜GÓ„œó§Pžq†Ûöh&ÐX�›ÂÏÙ oW„úr߼ɨ5s¼ÐËŒ;��¿ùûö7m³9¿™&Î kX¬¬H"Åg¶Ó²T*—:gd¦§ñÚ||Æ €±7³Mù²BÁÚ^D„†R¨É„ ÄïÛ¸*¢555@GCÿ|ë_’-Øò•+% ^¼'rÍ•yú#7‘ÿŸX—-¿ O?ýçë>$zºÌí’C@IDATBégÿ@Uõ¢®#I,â¡­®LbÕð$^”–àð‘¼v…IÛ±µ³§m]:•q&×½Ý[9cÒéx*Üy #G�"DS%‘P4Gæ•-�^ý¯¨ �ŸS !aÁ0Ôêe&µ8�THÞ°–Öd^k¾\óþöú{Òb`íl©$9¤’¿ÉQÐlè±}=òHMJ�Ü€FAÖ‘�Ïÿ�SÕèà±cÝ÷¼†VbéwÂÐ#ö~ìïô±ÿbÂøƒ2ýé'¸º:Bƒù¢)Ó1C[£Âü1}ámƒ‡MI¹Çö~ƒióï’¦Uœ‰Äù'PH'ö?¯`Í;w§ì†ÿÌyƒë–¿8{p+ÌY+P¢£”h#�¬bº*£<Àzµ6Æ;h`óÕ<�a77Oi1°~JÇ“…¼‡ÝhîD |è[:Ý袗Íž¶›fÇþ²7G˜ ?¡âm(p(M¸ÊÊŠ¤ƒóó›°N!MìÃ겿pøèQ*1î*}<±¡•T¡¡¯²•Ëß@éðý”¯¯ê߯w¶µ´ê‰¥„Õî•lvÅûr S¢Ú}ð=䮌•[ {b��ÉÒW,;¼…„…]7À*–Øÿ>Ú£ö«/úø[L½}µ¤ŒöƃVÁ�O€U8÷tÒvUEM ÷ZIÌŽ:�‰–|:²èª³¦�rJS'…Ó¸Œý =©F´óÀ!Ìq‡.×t³£¡¨«%Zþ€»tYÒj® y´ !ó—Þ@¨*³4½&`æ¬YÈ8uˆÀž22bNâÇqÂy¤®®y-8¦J†’éÒ“^wg+èÔœAfQ=? Çìh{[,˜6�TAjöqd­ªHÑ‚¬]�`ïáM¦ Û�ÅB­µ™àl%Õ£1t/+’H’¾a(#¸™VVŽdÚ¢«k©`Ó1‚£M´ÇUG ]ÑŽŸ:ƒ.ÖÆÒè.¤Æ™~E ~–:º5òšDW2„‚¼àìH5åÑãèî–¬œ‡ôô*„ø“D[sZØê³>SÆëâžC»ÓÅL�¹°N6P! ,¬ «êÐ\ÕDg­*èQDux7”º[(…V–æõvw£s˜ö'fPeÚÏþf’Ϧ¡½½—dÞt2Ó•Àqvf‚üQÍéuÍÝ’xai)º¹¯ûëóT³žc“X�IËÌ„'Áå\*Ž“Ó2‘ÌïKŸ"‘:*o�ÑÉÈÂØ€ª_[fØöÐ �ŠbÖAºù;Àº|­áúS²Jpöt£qZ(thÁ/ÇÒ¨N%IœvÒÆú$Ô¡š—nKÖ*[õ-°÷Àa)?5›dmÎcgª*E¬ä �®huõÌŒ¥µ²¶ í’¡‰RÙyˆÖÄS1Þ�µ˜vh òk0…TËòGGFÒÂÞ•b‹Ù8s.î®HLH€'»z{ðÆ«¯áƒþ QoÓ50åuº˜€0�-ýY»MÅÚuQYL"me9;UÕF;kºË½ö•Ú„?= Ë€`õ¡D‘+Í+Ÿ.Ä!Žc&Ð…Í[šT]œo+®q®¿•Ïò_ù\@õûùS‘¬[·ÓR|–ßûàM}A@M—¤€ëXofc‚˜£QRX(,ŸÅzĵ{d½™#:ºìèø?U©û$槪֭+Äôµ7�EŰtzÜßÊVY–O;¢0)+ÏÃ7€ê˜ñWXÅvÍh1`­*/a>B?-BŽÂÚX Ž^ÁðÓÔZ%e\ª|�#ñPV×ÅÏë¿$h¦Mö¿…ôQ>ùæ'*N¡§§—jÎè¨÷a¬·=쩆ttfx{nÂ#˜Kpr ¢¡®¹©qdâ颔5‹–®ñÐ|¹æßX¿ö{Zµã¡ÕÌì´ Å®–>VÜû4ôxÃ÷ ćÿ™Õ'š°Õx0£!l6; q(`†�hñê0?‘Þ ´ñ(#3MÜ}Þzáy²O30ƒY›ã©lp÷¹hO*ÖƒQ‘ÌÊØEËÑ_ðÜ_ž—rr3øyŒḬ́e¢ºº“§Ï¸)€U>Ðë*.DjK«þf¿ÉÍOC<-…‹C¦á©¿½J\Ö¾CXËåuÌ8´²€>³U'-^‰ÇŸú‹ôyUÔµh�ÛEk_„ &Y²¾î§õ0¤ê«Ÿ Jð˜ê’�—Ç|ÑêNu„D ²¦E²$!‰#HM $FÔœÉcðÑçðÍú}d:ê’ñÆ\_%M|µq²“X$%;qâÔ™Ìf "x®„ ªgÞ² ù%Õ˜9V&mÏŠJ»B*8«h=«ÜQ‹³ñq°u%ÐÍ|àH‚5QQÑ(,*Dôñ8u!ã§H «ø0 x¤gFÂß7ci5,š•• -olñàÝO@¹ò -NvÁrì4ì§rï‘£XµxóD-‘¼e#4øq»EgÿülÛϬ_b…UÙd)¶ MIÕ…y(ãÎeT,Ô¡³>�Àí82Õ‘KK×´¤3XºúX œ–—føÓkïc¬…0võÃ¸É Ù¡6Bin6Ù§@ms²ÉìQAPÔÖÅ“¹6Ò¸¯¿ð,­g࡞‘>õþ«™£¢ ëH«xoÛ¶M(,,Ä ş×ݸ*XÅB†T…‹œ¯p¯Wß¶„çœ*« hlk„aK2 xÕsЛH@Ç9¶ö(µ s”ÖDÁSfÂA“9«´N-¨Á¾ÃÑXL{iÖ †�Éh©åÆíÀ=/üãç®�Þ §ÚÖVRö‹ Õ¤Z› ¬ I²Àîh­Æï|‰÷â®ûÀk,Aáñï !9%‹v¼å´|Ö£v„upU—3jCñÈ3Ï£‰ο|óÏÅJغ¡Œ9Ö¢Õ vpq•@Vi°ÿlììp”Ű9sæ 8x@Q*Ÿ%í•aômmÕ…TP%nb7tò ½n ºWFöÑ;ñø+¯KËþðÅÇôî2‡m”Šø;kéQƒVÂQPEéL5ªïÿ÷Ú»øì«Ï%F®:�Feõ ªíÓÒ³p>1•uÕH$·£_�*&0%! ©2�¬ÕTD�8Äm®žæeŸç@:¾îîHίGynªÚQDõ{GŸ ùx1F(Ju{Ȳm•,žÌxŸ˜æf„^s2…yOÍ/©D ¯©Â9!1!Þždzó3ã`OAI•¿ÇFI kIu�jÙEåh'HHHSs–ÜF÷•÷óÓÂ!œíÛOðR¥*F\IâhkïÁ‚PMÒú=¿V ¢‹¡ÚP„lnëï]ãYäŒ= Sæoß±Ëhq¼`áâú.FšY€«r€U¼_•‚¬]‡`?éR^lÔ Z3�  éô‘Öy#Ó”J =¬ox{#Û¿Ò¼üí7Qñ­ÇBÓ‚Å‹©øp X~„€¸óeë„ð±;ÖŸd‰�¾Å•Öù¿:](Xo`é8Ûß‘š•ýúTH‰ÖÌß‘¨Ž[YÚI™�‚X³…™<dý=€Öƒ»¶ãÓç-b–U�°ŠìðÍ?ýH'…ËVñÎ$DáôÉ£´ÔL‡3 DÊ$…°tK•{NìÚ@üTt«’ÐW�1¾ý9eUm*àUQD;íJfÆkëÊè.qäßðý·bÕ’†ôâ ÿ�?'åתª¨g¯0ÛrrQ^>önùÞãþX׉?âÁ²¶uU±þ¿˜ßqŸ*Ùÿ¬¢Åg)‰ÉÓæÎ'ñm€À Ž…*r“І°EKaà@úaW;š+«Yø/åØÂ JTiªrì*oõµ$Pš²¯9p}Òî£-$m¾üòx9v€À'ŸøsÙá_$—©“Û Àš²ãktÒI'�¹Žß¾ú<û6Ó ³´‚¦¥+²×½m’ŽUu/ìóð^åïÎÚJ(sÜ?´³?-XÅt¡`ýëEÐØ`X’lz#M‹¤Ê[°Šm¾ûÚ³¨`]Ãw\ð5wA®ÄÅaa]+Ôž¿¶Y[1Û’@«6�Ö…óæK«é 2#ù,Þxñ9ÌZ°ô×®úº—Ù„Xmùym#M©:õ—¯¾"0*€N¹V®¦àŠéb]b®¶®‘vPÔ4†*aÅŽhc àeå@©·ƒýZsTÈjê7Dà8/M/%ݳÇ2*‰@tCÛÒ�VžÖWÓÙ¥KЍª¨¨ Enc\¬¡PžÃx”vÚ9 $z7‚Uë�˜Ê,P għ$£º¬KW¬ÀüEË Á'UuuÔñ\�9~í-]Ì-EFa5B] Gg c*S{Y—SUêg�Bzt³°u‡ ݸ9Œ5Öî h}¬ªkBûØû:A©S™sI©Š<wšdäÀì'¸ÙŪ%5XgÔ§p=üü=™IÚ€‚â$�I§q/ì­Láãfƒ’œL$%eÂÆ3 y9©ÐglS/ëu­]°7²–€Ÿ6×gŸE]+Ö/Z`¢§†Ÿœ„;ka"êÊØÄ˜ãK’@õÌ¡Æ~s3úìÓµQÒKµj-œ IPl©©%ù·/ gæ.Á×ñ¾Ë&޹Uù=Ъ·–±O$2ê ®d-D‘ÿ´Œ,ñÓ¶í˜:Žõ°Jôç�£"©g§SÒÒÃüUºÂ¹ºû�͘%’ù=ß>Ý Õ 8xà Kp´¦@A¸j8ˆ®¦Z^¡¯“5=Ömú;Å¥ƒ2ÖÿÊY·³¤‚7ØEÕMX²x¬HhR´¤à!ÇiGæk޽÷o L˜íÚÙƒ�q>üÞ�H°Q‡�fšjJaíemë­�•tšîwSqøØ)’F(Zèf ŠãrsCä硤$¯½ýÅ4]t*ªÆ¬™3él—�93gñûÉ&èJ/ÕÑWjD‹+½{ùt®ÊV±¬ ¨ÜÌõúò-üg§464ÐÁ¯œ×“)êÍÅÓž¼ç‹œó[ÙvmÚ€]›7 tÒÔë^­üÚ-H6�%vî¢ ÿÎÄwÐ�~}‘ .¬ãÅã–€¬õE)¨g®œŽÌ^Úðè£G`ôüo�Öj²šì‚né‡Q`V–Õ7 d›ÝªVWSŽÒ¢lXÙºH ë¯Yïá_Ö!å\,;#F´:ò¤md<ƒÀJE¡âC¨†Ô™o%Ê´<ݵm6ÓFXúz2«Ñš…»Š’|Zb”"77zúè2§@‹ŒÊTn½ööÛ¸kù"*U’@Ö 2Ÿjjk zu —áðÑçhSbN; ;8 QdÈ?OÄäi¨ P�…@‚Z**ÌËì>[¬ÿî I…7eêl@qmm-À´¨†;…Ò²ªä&I ëž�[òN¦A`##D�J–CAÁ¡ÈŠ�Ƈß}‹…w¬&óL†ïß~™ ·X;ºKÔ5k>ÆŒY3ñÜÿ½À�x{Ó9€¤ÒâÑÇÇ‘ý{ñѧŸÈw÷W=‹�^ÅÓ÷76ÄDª f–ig{cxAZ'q@õˆ'žCø#¢¯«�gà4v�„lÙ¼!¡J1¸«¯(‚UKš+rÑ©!£=êN¬y÷M¼þîçÀ*vLÛHF ˜*x¹ÚÁƒ7t;²é ûÉ\4…;íC -ì�Cû_} ,]º�¶{9ˆ�OBPð8ìÚ¹›`¤&;Ìvë#@Iû×^žã=,ÐCÛ_þù ü&ÌÁž­ë°þ›�h³[ g¬\6­ݘ²p;¨´xfQ¢¥œLDU-,\õÆOž…CTØæÄ„·— ´iGsdß/xå�Qw1@›�ï$ZŸc^ò¤©Ó�³5­fžyþiï�1gÕ£øî‡õÈ.mÁ#ÞIå]¶8}Ï hÑF¹±¹ÁýâSR°låm0#ûª©¶¦<'EÞd1­_ÎC‡—ÁgC�@p+Á±ÒÒ ÌX|mb¨ú£0ÍÞÓ šF6ÈZÂs‹¹:]<þuìhŠ 9È*ßAwïA€õdäqþÖô ²N‘¿}Íg¡`½žææ=“¦LÅ|Z�3VRu^ÏrCçç¡`¦‰Ž“hß²èœvþ’©èðñŸ„2? jZ‘ÍÁÌËïÞ�£Eí(ïW†AW4X¼ 7ÔFÕ¡ã¦-ÁôÅ«$€UZÑ üç2:Ì)Ú„uº¼y�ñ§ «?ÛÕÌêKÇâÛîÆKSXï[> U´E{ð‰çÑGB‹¦Ž%thÓd¤Zá6Á?Ðê¼�õ§U+¯5vÎ^°'ئOFhNV”ë2$€5’Ö@cü.¡\»/¿øº”Ù k¿þ IT³Ï˜5› ¿™|×pœà~-Žíx^ mj¼XË9xÝýý{¼~)ÃØÜnèì#¾¶§º´™ìxÑ,ÅC›ÌeתŠ�P瀿“߃JY6zï3¦í>ÿvéZf`hŒ¤øH”“ R•—†6 }DÅëÂ×[�t(úG6aÉkÿDôÑ=H>}³'…ÒÚלÛpBä¡MÜšþżީ3¢,ãMN$XXÃÖΆªFøA±³”VZÝðç‹]{�ÂTµƒ¬ãjÜwïÃG­8ØÔ¢­òOTÖV27önEô’ `agŽæZGñ³„Ld¡3ŸÇ@WRãʨŒ6çïpó†ïQ¯`NàU…2‘Ì6fÞ±.lü‚ Ò\ ¯IsñÔ“Oó·Ú‹o×m@ß+µúÊbt´6Iö1,ºà™gž½Òì—L7ñ´§”´M”­ò7]Ý=.Xûš‹Ñ•¿ÊÆ^òY~Õ³¢±=”~'€UXjªäZ·~Æù㥗_ºä3XÙØ“0Áû²2âãNâÐþ=ÌÎ`~xÈ%ó €u £í·=º¼YYÚIxvö¶ŒN`ÆÚï¤dõõ”V±CZìg 뙄“´¡£’ÕÁ‰kHû:ô¿nf2W——ACM ÆvÞ¼þô“Ä¡�Ã÷!#'‹–ß…¤˜Hö‹Ê0iÆœ�Eû;X˜ª¦ª?ŽJƒ­t—p'¡ðâïsÃßÁ›÷N9pµ¦M Oñøol�$)P``ãàð߸ûƒûÜÙF›À ăG_Œ�ßð¤P1úÒŸa\ ¡ýÜùÈh­+g‘Z¥ñû‘—Y‚�E+¡®­DÞr“¤ J¥µpæ¹Ã°ÑÒ�ÔfÊ´…”·¶Æ6Äì8€€)Ó&‘ô±uo4ó2ðÄ»ÉgCñ�Ÿ¨jÕCZV>þõ�RÙ?0Fï¡ #GäíÀöýw•›6üõ Mš�ªddTÿˆ&Vm+gT3gSËôb¿U¾üÕž˜ÛCûN5Ž!‡·¸?óšB•AW°úqû?¢ÿþg.>ûoþ÷ôyK¯ `•ïˆ<çTŒ·o¶h/rè‡Úý·<¤8ciu*Hžÿ‰ÖULÀÏÚF](O¯¥“ƒW3ÅûBÝjú4ÁÛЉ׵û¢@_øç{¤|U5Ú °·=6²³½8_]Œ-­àXÑJY<äíµ»¦Ò�(�äHKNb��4ýåw_ –/w½ÏçÒŠó3@ti™‘ÇHR.€ë;$?üåÙ?C�Dàøó¹˜:ÙŸŽOÊ(  ´²†>^óûM袺U]]ÝŒé"ë“õkÉnW‰äõ~®}ÿÒ )2t�3Ç&*­¹èêl@m3!5=%ts¬\Ùªã¦|º©¢©¡-J$nÑ1+�µ4Uæˆ6‘�®èÀuÛbÊ„ñt)s…•½=Õ‡±Ø»w;Éd9¨'Aœ*6 ¨”­F¸3-¿»Û°7*2u06Æ’¿‡@òóiáJ¤¬¶‰yö<Î&ZÌЬå¼=èèè…Š’::IBÛ|0.–z8JâAôæ‘2_•¶!Tv2’†z^ …nd‘ˆÞЪÈ1¦),i½«B@¶µ®„fÑE’GW/ǵ½´�5�¥A?4ÌžÏ*B}m=ÇxÌ$µ ±�îI?oÜ ›A¡~T«*’˜ÛÆØ 1Ì·Íbͦ[º ŠiA[„ڼĜL`ŒXI¹´¦el3ežVéK 4�£�p'£ê²O3"£š9¢´.¥Òõ©§@C9Þxk ì�]ÐMRG{;*X26TÅg-*˜é|`o¨…nª€uº¨…îï…ÌɆîµ’­o>£0Ê©îQP–.ÕÍ ‹ÁuÔ|îemÀ ]¹§¡×I —.-¥Å¹t¦qÅO›7K5žz’™ÃÆODGîa^àeÈ+,ç9É({è Ú¬·™˜›Ru[L€ UÊpCž·ê¬çþÈ㯭£Š–^=Z[á\t$�]-˜Ê0�õ¤ÖÓS“9^îÊÅóH ×£ëT;Ï»BÉ¡(++ ½"¤¦e ?'ÚmÕØu�ôÙs(¬‰C7 Ú¥T~›³^;Ú.=�T´“˜áè,�¬âÝ[ °ŠuºzyÈumQÛ¾Þ–ì$åa‹z´ ‰‡°£—ׇ®GÜÄt9{K@V =Ú\Q%$”B£môŒ�?ÖX÷ýçX÷Ã’ éõîÙßÿ|"÷ï„�ÏÞH.-ò_ï:®6ß­XÅv4胯OR;trkµ«m¤÷òÒ“*ß =vÎ\ Ì80jż\�¡-ùl"VÜù�”GjJ‹S*cÅàª65-½Ð×VgœÖìèùäÇ_ £†3T 4c\`γ¸•š’; *ó:k`Ç‹ÿK— †öŸ¯>J01Ä‹–­ªG.v†ëi•RUZ€°i‹ØÑ´‡_Ø,ô°~ŽEù8ŸB5ÙxPI(Úß_yF �Wêa¸}y½dK\Åbù�÷þ˜4ßðÿh%@â!À+Á •߈†ÏÛWœßÙ[ZÔ)$â=Õàp=£Ì#yæU²Eˆ|;Õf*øeû>vR›áEûÚÒ¼l‰ñ¬Ë,¶í_¿�³Zj±á§PÝÔ‰CѧÏÇ믿ˆÀ@²‹9¸ñM–"_ÂDGum}Ø{,ŽY½~°&ko÷¦¯Y4Ф N3D”ðÈse-ݦ´ˆa‡Ùœ¹¨¥õðäxÑÑÞ˜*d;ØhÃwæjª S1aòlX¶h­ÉÅx2çßý4¼ü‚ññc³aÊ"hjÒYÚ×"›×fFê°vñg^©rh•åæá %v¸M©È�5ï¶á‡ˆEW5|ðök¸÷‘Ç/{¯ª0‡¬n*oÛJhcâ‚éS&`L@0Æø‡ÐŠxÜÈìƒß$z\œÝ` ÜÇ ‘:‚t«aéê�³Çwa¬‡ÕæêR&‰;e›7¬'²á³—4\‰ŸiMýɧ_ò;o€Égÿâ÷%íG»¬'N‡{Pøeû5t‚ B�ªwAQ4ô½›}­§£M¥¶°Ž!ðõkšÈÈ�*1È'ÖndÞ©> FºšTƒv¢KI Ëç„¢¹UŸy4‘dV–@G— 5JO£õ« ÌÈ“¯c¤ý(É: ]*0o¦yøŽC+�½ZSË[Y1•¼÷þc'΃µ³7N%œ£ÅsnÍ(mn‡\~TûO�9[Z¤Š„KG/ª+9�%¨×‘�Ü¢Zì'¡ �JìO>ùD²J656ÄŽ-?3‡ìÛùó‘ͼ˜yófcAVѶ’t²îûï‘•“K›cSxòºv­¦£oD`ŠçŸËX�2¾z _îɇיּ‹¤ÉQûvó·e‡õ×¢Ÿ m7UîSýÉFm¬†{êaœ¶ð¦uú4¸](†€U´IT˜WgÇÀcöíÌ(íCk�"V?òl¡z|ÅC�"tÎr’+’ÐW“�� ³HŽÑÄî­›$ÒLI ³x8ýqUêÍÜÐCrDÄÄpf£æ¤öÀ,+�Y«ë<ÆÌømçÛ€ ÔWd[ñÁWßÒz9€ƒÎB”Uwbûî}´u–Ùi�Ù¸`âœ;‘_VCP;³ç­d!ÊžEĹسm ŠÉœî¢M“ZZaN{Yá‚ÐÍ{6mw·P•¯E«êææ:²jËpìÈAÚ©÷£‹ÉüÌc§ ’ûy†ƒéÍœ”†0‡•Êë’R^Óƒ¥ãs¥ÿ*è$ @V™µd5Â{Åõdˆ¶6Va'�l™“'­Âî+UeyTéÕD2¸dsý]MÒßJº N—Ìpœ9¾‘–]ztz¸xÿ”/^UYJ ÿ[ €5�Jw+‚ò>¼'ELˆ�ÈTòí}N§ëÃ7ŸAöµ>œ™7äA²ÊÐv3 Öb*¯õH–¸ÙÖ×YE¦w�”#~³ëºüWŸ}„¯?[ÃÌçÅC'_ö:¯¨ ×i!~Ù¿b‚ ïéĦ«PªÃûù[ÖÒ5¼l�ŒÍ¨@Ð�›O‹n$CµµJ¤WwOÉîÞš¶È2~6ï±�ƒýùz’<*X(ð‰X‚¸“´Eóð»d�JþµV±#ÿ� VùÔ30ø¯XÅg©b&ž*íG�Vù7;úü[�‚Â"¢sÆ”)“pädÆŽ‡>’²U¨ðÔf±Ýá‚ýz? §Šª&tß¡}¨w ivP6³…š¹ëÀ.R�$ŠÝº†°°w�ž“Ï�Å—o½†ÆÜ$L¤ªËÑÍmðãèÑ4� Ë¾õß²�§•1ãOŒíˆÅŒ}u¥¨b Fq«2Æó:fNPFßÔ2�‹¤%¡`m«*Aì[/Á™QCÛï¯Á|Œ¥ËF¾?i2Rb$€U¬#~çXÑ2X€¬r«ûÁ†$Šçi;6üDW©ƒ¯Ý‡¾‘õ^iÞ�ñx )VP ëà믴^ùtu‚ãÚâXü‡V±]ñ™ÄþßªÏ Ös¥º…üs}kש(©HoúÌ‹ê`Uïïo�+S‡¬bÙY$\¬�ö[Å­XŸþÇFܵ$lèn^öZ8}tôvbÌ~FÈÜ3OŒ‡üŒl¤°öå`ç {Æ8õc÷·…»I©¬gY1§’N6ÖæTT¶Ñݬ§3‹�™M»csc)³ÙÖÙªtÀ*o釣^/Õ’ ´„•Ñú6‹þ3Öý²ç#÷ÂÉÅ9Å5ð£s��‘Î0»3·„jÖ„ó$×Ññë­Ecql7�Gô�b¦„´¢j´òzÒQœ WFˆ9£¤¸Þ®VtÒA™Ü·–¦fôµ‘tìè‹Ê¦°ßÔ¥` Ôr”Õ²ÎVÅh$µ.ú»èUJRu¯c p·"˜hD‚½¦.–Ýt’’1*Çñ璡ψ%Cm*ËJ%7µîcjNJéjÇë[Cmr +hiì@»ÜZ¤f—‘,LR&k5 ï~ çN£mn<¼œÐ×ÑJåç~:T9£€ã³ÒÒ:˜#35º0b�ÈÕ‚u>eC,˜€¸„$ÖSŒÑS]ƒs$èv8Uìldîª:ê;;£Æ"$8ìWÑ¡E‰Çðýxm1Ö¸�J2¼üÎ?¥a€ˆ;žF¿ÏO^y“é<¦ªŒ©ãýx 2 ¢Óùl2k›ípbnjvNªñ¯7ÿ†Åóé^oF ¿½´do*Í@û¢µ5Õxäî%ŒÛ©ÂÚõ>º€5¡>•Ñ•K_“‚–JœÍ©Æñ¸$$ge¢™ŽRY¹Å((­äw|üÇú‡£²¤%ü|iåÍ�Ùºq\¢Ig *TÕ•œ?/� h›;ø’`ñƒ¡.—�!9Ñ�ŽtÅü¼}{•�ÌóqÛKÓÑYÍc•z9íÊh¦ó“:k^mTk³îgMWÁsŒëk,‘lî[™ÍÛÚ\o'{Öî2‘CðZ�ÄðÀ  Ö r‘Ïmh°UfŽwc~:úÔ¨r6Å‘=¿`êôIpvrà1('X> ²¿à¨³þSÌúD/Áwi×Hu’F‹v#«Ø~CÌ1u‘ÏÝKâ‘ø['$æÏ¼r]÷�[²Š�ެâ(Œ¶Ñ#ðÇ;>T;ÉÌ8Ààãz[/;:´š­!óÝcLÀõ.ö»ÎWœŸ$m_(QMÓàÀÊ\nd6]« €õo�?ˆÛï}HWÀ*ZsAóüu< ,®WÕ—17‚ŠÀ³§`C G7Ïqèä�ÞÊH§Ùa)ÈKD;t�>TPÑZÉNXG·�ÔTf%tÓ"¤^<þ G·aûÚ÷%E™³#t ;°�Áíáì¤5°¥Î¢±úÇb\X(í,ÓY8'ƒŒ¬7{²ýÂ&ΡÍ*™{du梼¸_|ò‚#f!»˜‰‚ê´?ÉÍ Cm*YqHˆ‹GY©è(Z2?2b`z\\¨� ´X1¦­¦P(vìÞ�gŸ}fèlÒëUà?$�È3é-)ê¬Ú¼V]Ø/ e‰ùºØ‘²þà{‰y*g -`‰Á�È­ëf§ñçÍ›Šwã�f±Ÿ¶)…ù`“hq±GÉŽ+A—ÌdÔ9zcüøpvĵàêlÉý<‚çž~O=ý$³XS |!¯¼)©H9ŸM+åd®M“2%]Ýá:Ú´CŽg1áÔÙTßFìøÛ£– = mEæFhbJ`,�}ȰNG ÙjTŠ)3¿$•ßýS¯®�‰Õ\@·1øâ³Ó’FŽ´¤µÇ˜ÐÒzKS¢PJV¢–j<ƒ¦aÞ²û¥Ï4ü¿Z”Ñ^+ øâ`iÆì©°eA!€¼zÌÖw©c݆ÍxšÙ›¦ü^mmmù½cùŠÛ èzÀYˆï¿øjí5ð±3Âd*ë„]‘íbÎÇø¥�N+í½Ž�Í…%ÓšìG„�GK} íÁHçñ�Éø ¤yèÈfabŸËKð82 q%€UäYhq°r³ÍŒƒ€_ßú$ûqÎÉÕÓ¦ÏãÀÏ�`–´4ÔiÉk'?2U•Ȉm`¾J+ÙxÌwUjGjt,î d¾ ?׫x̲ÎÅ3Ë– �Vë 6i7²¿â<ùá™YP0´åµÅ‡v~¯}d‹Û@“·êŒh(pàSÕÖÃkP?ü˜“UÄsþ mÛ×~ˆöô£ÈmTÄ‘ƒû‘@ëj G²m‹i릅5Ÿ}Ž;ªu+i@ñü ÏáŽÛnƒ«+゚×(?Üu÷}ˆÞù#Â<Èz1d~Ž>Κ„š<‚ÈC\NÒI.©)§eœ¹•|פg#3tˆl£-Ò•@Ö ^ÇŽ ”æÏNMBKk/¿#džC(˜k£§…/r”™[#3'H:2~¦tÄ^'DóŸµBº†=rYd»ÞûÀŸ`oç0h½> n¦{×|ür2³hSÔOÆjTè±ä.²j�¡FFsO{9jø]6u+#‚ç}/-�JJË©ðèáq0¦%»1ŠÙ=OIËB0Uᦠ!ñ,Ô9=tŒ;Êi¡gc%ƒ³­%3}z±çè<ícNìTÉa %õ ™Óíð¶ V ¦Ï˜ÉŒCäe¥0gö$d¼þê’m«¥ÚÏb&°êÞ§$°ÿÞûBWM¦Ì¹UEyøâÕÇðâ?ÞaöÙ^ææ¤Ò‰ÀŽÄ e—H ë?ß}ŸÆ©TvY_r pU<äíZknUð½¼�©ÈhîHÌÀ¢õÅ´­ÎAVü8ñ÷#Z/I3½ÌÎQ&ûxóÖýTÐ \Ǹôÿ|2è·}ø:ÆN™{éÃþê Õ²¹Ý¥À¥|–¸SÌ*'9ÇTf)ŸtKž…‚U¬òfÇ‚ò•š37'GLâ÷Ë‚ Yµ––·n_|ÿ mʪ™%åIûëDXXYÐuc3voßÌ{ü¤+íÒàô®ªc´îjcí[dÓ <߼ʋþ~žó$¥((P®r…K2ƒ)›�tÍ0'ÑéjíZò;ØXüf@kŒ ñ„×㵪�ê ñ‡ ÊýÑšŽ‰tMl°c×ie²Ë‹õ, ws æ°RÕ/o¢X^šOáDâ,ŸÌâsÅXˆ30¡…šŸ?Œ¨êºéÖÖ0žHîM¯jt×tŒlGÖë?\£sÞÄ(¦=eAPÝî&„«7Á|ÂBF'$Ñ.4 æ.†¾•óž[‘s|/Lœ=Ñ]UÈ{I©p•ZW7•j:ì§\( ¶—ÒŠ÷ E5¨“l¬¤m„Ãû÷£®º’Üã2<ðÒÒb%™ÉR¼CÔöµØs0 ]åÙ˜s:å$;›³Oq³MH pµ�ÎDb¼.ŠÌCÇé7»�[µ|sÌñÁ±Ù­Zç­^�pw"ŸUrây‰ÂÂX%d‚þµTµ·z?äë Ök¬tC3ÀÇï¿ C‚Œ¥ù¹¬%t£µ¼ KÍgÄÅ :çÓM+’.:¨+"PÅ÷»ª ¸œ1É^̽WQB{[–ßbN„}ÇúLèŽO’i) ¢M™6 ÌÍÊÈ€•ƒ#ÆÐ¦7‹*x+Ï@¨ÓÊÄÄ�@l/œÕú´d5NGà¬- •°2Ô€eôº&F¶—!З–À•ºzáÍzʼ¹3¡KÀ«Žý`A”W¤s‡¥�3”HBÍ*©@7û¨?Ef0—¾†Y³]¸ç‰9H?—KÖsº{:žê�c®½¶&L ™Òb|e¸̬ *2–õ”±^¾ÐTR¤µmë«´f×±ŠjJSÖúL¬ ¨‘h¬Dç!GZòvR q– ´&A¾Ž>‚Ê&ð"1ÅÄÆ‰)ÙÈežmk%çãÏ@O©ƒ¢ˆRÖÒž†��=;ú>yŽn‹¡²“vÃNvhP`ŒäKF˸†ÏÃóo¿‡7l`L#•4T ê’hNPYÁÐcHø,¡»[gGæÌ[ 3ÜÃq{fZ:&NðƒZo.&úiBÇn­´Ù}³BSÖ)8Xj#úT"U©z(«l—Ôž5Ìæ}ñ¯¯¡¹¥C}PÃü×¥w¬bÍ1‡ß^JDº©\n#‰¸Ö*Ð!ùÙ«O"£ ’1Yðõöħ›ŽÀ؈Ž}Æ„Xô"»®GX�t”$^Œ�Äú™e†‚œlܶl.‰ÌEI�>ÛŒÏÏð¢ºÔ‚ã%¶Ó^ÚšîE½Ý0¢h%§¨†�:™ëé=6HRÙ–Öü­$0—!�â½m�8•ÈóÒ�JáÊ ""Я¤MQ�–DXÌL9‹øÄóÈ͈#éœ6Ô55ˆ>¸}ªúPçwç8^ÎÖÌd-gí”c-õ*~›x;³öWsþÎÚi¡lÄz²�+k…)0×Uæ˜7‚ÙÕ x啕¬y³Nw±¯.ÿ�þÿð|–ñLûvn–œÔ䟷C¨Þ[*˜_\I»¶Ö7?“¯ûfžÅ½O8â‘°Ëk‚×Zï-Y¯µ¡Ñ÷G�ÀèøýŽÀ�¬b/Ós `ãìŽÉ3¯^Èüèã�¤ÜB#Ú0 mg““ðÖïbÖ+Ó¡ïÿ¯óó² ¯g@uÌåLÿkm¯ž–;×­ÃÄ…·_kVé}•ž`íÏ«gÂÉ͇ö$2(¶d"&> %´ I!ÃËÊ‚ö”éyÌ(¨À’%ó HÛ”þîNiöÀÉ�#¿©Ì‘ �§ ™kÚ– Ó4ij{›éx¢JåB^ Wk$%§ã—éT[‚>ÿ3$€Ul_‡6.k^y �튒¥Ëw_~H�÷Ù ¼ÿö«Œ¶´tÓ„=­Uˆ*²àæp€ZSS…Ý´´†W_OzO¬så¬ 8°{U’�‰?GlFTïÆÐ2䳯¿#+°±±qHOOq^¡^ ¢±Ÿ¤.âÑV\$e¦ˆÖP VjÅ D>àY&C3bî�6Ž6ú´–°‡ ˆfE�DÞ² r4eöü´G£NÓ²Y“ª™%¸}õ=¨$«ËNð]w¯†³9~à¼÷ïwhåb�â¼R~_™P`±øTÔqªÐ Ø�n†/«¿]‹Þ¦*îšîyðA¼ùÆ;’mM ™‰údf«mnï„7�”Âò:ä$aG^ çΞƒŒ…O;DKŠÜ GvNÉú^Fe«‡—Y™å0µò�Àøjæ9Äцµ¡¡w<9P`�®¡ÏÌ` °Š÷Š˜CzçªÕƒ³ÙÚZcÕ+ÿ/BBÇÓ†ØHzDGŸÄfÚàšÑ–�Àj/•oöN´j‹êÄCP£�V³ \´ü*$ ×ßP€ðKé­…#»·á£×žGyC7f?ÿ*´©0Ô}ðI˜ÏXpÉöN:@"@ ýšKfà Iqe¿[°ž‰=Ìß”ïðÙÿÎ"Û1öm|˜z¥öù×ßü7â5AïJ³\uºœ±<¼3¥I2ƒ´,¨<Œã9-ò¨R9Hü0ãùâähJº[��Ù”%(æg?¢Ã¼äe‹ÐÃåš©>ÀÛSwߎ*™í˜ #VCþžn´éRh倌Ôsˆ9¸¯=õ0rÒR0qöÂKVURTº†£žöÁý$(lÚq‚Ö°8ÌÜßÎîÚý4bO™£¹9T71·“¤ a±“U‚iÓg ŒåÓO?%�¬®º·Ýû ¢·m–Ÿ7p@íËAϳ òÃϾˆè­ëqr×ÏT‚›¡¦¡…ç�×�5jÏV dyÅÛ&s¡GX7~û1É ž¿ôâõÙÅËŽ®NüíTãDLR*kÐJU ºƒ-꘵SH;_e=Â"hßB2Bfr>\ó –-ø=ˆÞ_|†ø³)p¶·ÄĉS‡ïþýòˆb~Ë´ˆ¼iq¤mˆ‡~}eç�pp:uù«XT"¨—dC©£�êŠn¨Lno«Guf*ª›ala=z‰uÐŽûöù³Y�Ôƒ³�1¬i¯AeH}i ñtŒaŽ¢‰™3‹´Hæ@�£Y˜ñ7ºâ�¿ÑŽè,Î<|à±G’̾=ÛY GÄÔÔLÜ/{op‚ؾø­Ž°ƒóüŽ/Ö}÷%|èÊ1ÚF�ÀèøuG@¬iq Pa]‹®-û‹åObö”É�Qm¦EUŽ4IòÏJ$=ËÖ„C·é�ƒw¡¯ÛYOfr±vèªÈBíþp>³œ.syï³ÅÄi.PÔvGÒñÃ8ÉûJSK;ÌõaJKôöò,aÍ@ªAƒn’;HÐÛÿî30 �¯SÇ‘J'm$lûAÊ¢.¦c�^å)T·©ð ÷T³ïÖ«¢ ’EÛºyŸäŠeMòÙ�¬ÙIçqêð¸ø\ ’ýºC;âR`½mÕrlüúæÿiÖ®4ÃÛîÝÛ ²–bÜâð÷íßbÌ-ÆëÂEJŒ‡DÀ¦P¸Ioþþ“o_nÁ+jò}ûlþº71PÏx�ljý fÁ €UÞ~¯c'ßþõ<ïÚ{Œ9¡+áLG-��‰°&˜YW^€JŽ!»zZ$u§33;©<;|(gÏq¼E··StSëîVaĽ‘é२k‡�¹wá— _ÂaÌ8ì=tçRS >öp,J‡µÜ|ÖÇJѧ¤�–ŠL´õÒ~¶ºN2 ”uk£¢®oø3é7£MQ“}—ZP9X’�ɱ½>-h;QW_‹IÓæ¡›N[Š==èâ|ET£R}Ê1[/­rUiŠöãf ÷(ÑÙgª”qÊ7¤>OxH*rŠ)th¥U3yM«.«"I^ƒ ªÀŽëíÐÊ:^B.#pøº¤�N<šŠüü t êâ82z*Ì¥û maïzàql!™_Fû`-•”g%Â{â ˜ö7¢OLJ“éÜdŠÇžx‰¼~ô·5Þ¹ÉËÓUÈ¢~~IªTΖUóIЩ‘×6mFWµu·"¥ Œc·8Ðm-ƒ»,ýQÓGqD4)ÂÈË.Æ’;nCmY,_�ýÇN¢ˆ$7kc˜»b#¯Ö~÷#t鲿íîŒÎ²tÕGãÀúŸ`,³‚½W óF­‘”]ÂØ*4’`œžÆ8¶þRŒ÷ƒ�@o<úìóGñÁÊ»î‚Ýöžûë›òqÂþ'%’e_IèŽfX·+šªÝf”T6ÁÙ•‘\æˆ=� o{Ìò3F·š9æ­\�Z"·6W`ù¢å˜èc CMàxìiŽ?”%KÞ¦–¤ó;j¤;``h …»PÜÌz"‘W=5Z<¸îRÒṕw7N¯g}O ݵŴ¼nF OÖýŠ Kàm¡ŒVª§m `[1kÞ†y¯¢.m¢[)F¡Úš@±5AueÊ�xN×0wÜÑÒ}´� c¾°/ë•$ä@“.�v<®-ÊéÐ~Y�öÑ!¾á8y”Àv}°üá‡ñüìé´\瀉´§§ðƒ«x m"rKd~ÞÌõL~}ü#\cN'ÄÓþ¹CÉMï¿õ&BÂÃQQVÂGñ% « ì ‘Q8y‹WÝ=ôÐüî¯åõÀÝ‘Q�õF�Øèü£Gàè+aцƒ°Î̼3§rïZ­Ž¹A´^Þ*ª*¥Ic½}‡¿õ›ýmÁºä³ \?óPx±¾‘&,ý¨:û5mæ¢UÀ*–U5bÆAu«ËÑ˾……‹àúð÷ hVAÐ¥’�¸6fäàHl!ml[¨Ä|œ™––mì�›™„]Q d„õӎȉ`gÙ©nÌNðAfÆyLðsÇj¢õóuÒk{W/Ì¥…kʹhœI:ƒ¿½ø&íÝ0–ŒÂý;6ÁÎÅ�ìdìøòm¬ßò¡ï±î'ÚYÊðØÃ+p–®-|’’SagG›X2½Ç…Ò†c@5ö䟤±‰²«˜*v¾øì]f‘ö0£4 Ÿþ¹d…aËe¯ÔZ~^ÛhÜߟժ  kg?] X<ûêà"ò<‘Ç:4FGd¤±³(ï8,¹÷qL™5ë×~*�»2³KO"“V›†ªÖJ.ÏÁ7óúZpšÆ™äø�‹ Okøúú ¶UØ¢”@•J0a÷—”‡ž~uÌeþ™œ5�-±tõcÒg ?yð3jÑ^ÿ«w^GA#S*4�¬Pߨˆ¨;ÑY›�mã%àgÎÂù¿/~W4‹ˆð‹Eù�þýO‚€'i=~„9& ¥ckæÔSÝhdjÌN°+Œ­ì�Îs(«²�ÙPç±Se.«ûØD„ÊjéB*~Uø%zS>•$Ú hëÒ ŠÑÉh=³ûCX{M¤ ¡'’’NsPÓÌÜ KÚê—æ)eçKœ½gÏ$’%Yw{iºP°^ `3ÕRõ]ËkÏH kNj,º©Ì-*ÈcS+í—UØ!®—È Òná1Q‘0³°Áòå+pbÇ:‚«½oÝ‚ä Uø»Ð™ù%–fTé¢�õç””LfR%Ðj&9©)à°’ƒ‹|ûí·hŠþU´O:‡†ŠBª3Sa(¹Ú.  µ„ŠÆèÇáàáKu:p$¨uvÿ:iÑæè¦DíÃ�‡Ò0ŽÌÎ;ï»�Êf3ŽcÞ\Ûo᪯ë8¤cq¹Ö¡hŠ_ΖWÊí$IU— µ‘@V®Þh€UÔÚ¢µ·Bu)€C¡nuúÿ ÜT€«ýQ.4M™,× “l¯ußÿZË °¤vË&Õ•™ ‚yù¯Iûs¤×Œ9½±§·ÒE-l¤‡oØ}QçÏÓe§”}Ÿ¡ý’Á/ÐÅ?Ò â9Ðmí‹/ÖÑ]Ge¬½iÝûÞëï ¶ºš$+FœäaǶ£(*i¤c‘žBg¦¼„…†à¹çîc½ßȾ�V^»ÙcÁ’[ ÜT YK:ú4%§¶’›I’U­©Àa‚޾:í¾÷_(®)GIM/Nž;Ïú8�¹ÆîHWÄÒ`ÞJµ…ÍTf†ûòx`ÂcMç4&Œéå;èBWsímSÑÈ>Üñ31Ì%MY ·-\F§¸|¢s=ðr²€©¾)tÖæ•$±¯Ð„s±)˜7}*³V»Ñ¨aGc;Ü>—9´ÌjÕ2¶Ez~!üü¼¨NtCQòZÚú6¡ºS—D}*(«ðß/Ö0ªe–Ýy/ÉØúˆcC¦J$_’H,Í«eT�õ(L™Œç_x‘ûøK´–3ZGC†©·ÜŠ=»w`ûÎÝ8xâb'ÖI𵶪ï}ù=–.�CŒñqG&·ÃÄXOÊ�ýqóØ€.vÓÐA»ÞZ,;{¹ÂÐÎ_¿ÿ·«wÜ÷Õ˜uÒ\ýõ7ßc¯1‡¢ 3´æ�' Eií¸}’9çß5]sé+QVP€ÇŸc䣑"cÎañ²yhÓq…›­!Õ¡½$û‘„ÉgOžd=S@w*#•Ò� <½œ/6Öq�wÝ_/7,¼ëÚ07Ñ z¬õµHîV¢ûW72k¨”N Ç’P¤W¨Àv¦3œ>vŽâ6ð5´HYWѤ  �õ,–VC‰–Å:̨ §mtRB4í�õÑÈZ|×Q�›Iç*3ÈÓ¢ÐÆHŒÉÓú�WÐÅs�£½*pߊ;ÑVt�½ŽdçÂÓ7š†Ð’)ÃÜP›BŠj´)PÕÚÎÞ^ü|Çáxx•ÈÝày(¯€à Õ»�í%àíàö]ÚIÖKruOU=¢âÎá•>Æz}<ù½„û“û÷p[Ñí [k»‹¬â<ÐûÁëIõQá2¡š‘j׸ŠóHÃÓ÷æðº�8v+z¦Òúÿ·o×N|Â^ç]÷=<ðÊÂ:Z_W‹=>ï!«b§QŒ|¢`I\þ ã&Èúgøo¾‡›{à:÷@RBìO •ÕU¯!%)�*�þbÂÕÅuÄçY’}ù[¬?o„€mpÍ ëÏÏÿå·„÷¿È)8› k=2e ‘‘’Ì©HkÈĪExd ¦N›IÐÒ”Y ¥pç GŒ*2D³Ó2 öÃÕRã¼�ááÌBõ$ÖnÜMÆ”5�ŒP `íe#]™ü51êjkèû¿ãÜ ðÅaË–M˜;w> JÅ_Z6šTë3ŸÁ'pk6TåyéÐCÈÁ´=}gȲì,áo‚`¡%–z‚yó­û¨4sBis’¨Röä¹_S©Ac¨2>eªï‚.)w0#.³gODLb-d™Õ0.�¹‡ôZŠÿê¨Ô,ˈA f¶´Ò45À™áˆ;µ‡6½½ ˜ãÂÑ–8 ·.]®xÚ5_+ÀU†¼Š*U'ãf/$ø—‚ê¦Vx+L‰Áþ[YXx×G§š³GÚ°äNæEžüuØ[Ûz°å›O1û¶»8)¾ø £¢P�ß±NND5´ô¨¢Ö•ro3˜)r4Åä9:&ŽŽŒt$«Èg½Òh!‹¶!#v£CFXÅókh×ÓN+ £>X;y` 3B… \¨Ï…EÍ�cÆ¢‘Š=q1KŠÁìòbt4 †]|s7¬µù+e1×^Y„N*±48}VWSB]i÷cLÔ:¡Å‚£� £úeœ>-Ù9Sâ½Î2èYÒvÉÈ •Ñ¡C;ÇhomfaÉïüÐfŽ8êM˜2‹ ö#´ãq‡rg³†-‘°ó8Ì ��¼”H´wkbœ�ÁÜND‡C •ªÝ¬Z=LÈ’U£z¾—ªl ¤¥¤âs'üÇøÁÖÎVXS™M²æ‹Õ,°ñï—^¤R~ sGÊqôÐAlûá{îãdæSû�¤�Oß|SÊý¼ãž{±pÑ-WÜ噩±l’�,\«#ŒákEIžZ¹wïeÁUƒ22e;5Œ Î":ØÉ™E0ó F'›h®npáq³�EÒc÷Þ7g{Ú-¹A�öOÂÞõغoзy=<î~›V¿…´ƒ_Jù+‡�”¬Ýßþ|5Ê ÒwÒIUËŒ®F$¼dÃÜÕžTÓ–ä¦ÂÅÕž¹3e,xkàNP£°”@+ÙÕ–Í…sûÌ�ÑÔ«Žüâj̤¥žø¼+óó�™—kÓ—?ÿÀ‰Hà1Z41]G�“¬bWȨüØ·þKe:h§r-€MD™¶•ŽŸ07Ük¿ßŽ€À`üçƒJ5®°�?ÍïÁI¾o¿ó¢h‰úýÆCPçqJ›ª’ AÁÒ9'“9Þ·ÌÏe£6°×ÏR¹»bÅ_þ¾ž%´žÏÊËCOC|§Ñn}6,ÕHz(J¢ µ;-¡dH�:�±~nTÄoÇ{ï|J[®N²É3PKæ´Žv'T; ¤¬A¿…�\qòÖ¼ŠÞ³0úßß^qÙ+-�‘žBKƒ—_§ogB€üÝwß•2’B'…]rsnÀªXùù¸f¨^´ºtsM±ìÕ\½úS|ýŧ˜·ˆê|tL>ß_`½Òº#H òudzϿ8dÑ ñqxö™'ñØc�ÓÖ—ÍuJÇ»H\P¡�ןq4±�(šWJÔá_ðõ7? òÜ9ºWôÀ¤#nc'BŸ‘)Ù{7áÐÖoá1ûN’K'JëÚ±ïvìÚŽyT7é�˜4qîBÄÄ¥Á�Q¡Ëîe–¡¶äÀ£M;P O$Gœ!XZ‹©y”¤ ÖÞ¸õþÇQ;×­……£+BW<ŠÜ¸Ú(µR�Ûœû;U_åÅY˜4gÑEïájîàj]ÔAε!cM|-CáÒÔïô4²*Ó†«×è±#¬×òZ׳¬¨ËZÔð#)®X €PQ«+êuÎ 7«‘–¼î«¹-Ö©XÅò ‘g8 èßoâµÈ Æàí÷ÿÚê[ñ0"¶¯‰snA «´-Ä…"x0q\ܯÖÌð50•”�â>±®¬¥Ó/ Êvw6¡±&]IYCÞ§b}—ºÞ¶c‡D”¿È:Æt’H›ÐF´57v/’£O±^TÅLºªÄf¤a²».œN¢:±tìšäGG³xxÛÙ@›€e~NZ› Ž‘LhíZÎÞÿâ›050 SX6•žuìyXáž;•AÕewŸz4èHæƒRU¯¼÷%¦OòE|"•žeŒ„Q"±ÀDSƒ�áFw/g'‚”žhîá<ÐÀ‹æÎ@]qÊè%€°‡Ž ¼…‘[5ÙwMàL"»³�,ÙkÑ&¡®¸¨ìdWT¢§½M „Ÿ�C{v6Ü^s¾�ÌÜh².)ÊÆ”9 IÚ0„¥³'æÞ~/�:‹,æ¾—TAMÛ‘ŽP²zZpעшϬçû«fÿÌ›6nBfJ,]êœØ/R!1ßû�ÇÂÍÝ•`q/ªŠxÌÉ'�?3§CfH•†³E�WX…Í[~€-ëJ�n%Tç$#·¬žsí:ªO­�\D«¡³Yeçj�ùs¦üd_@_“ªÕã?Á¹©§I²uÆ‚)£á>ŽŸ)¬²“ÓGGêzí­Láj­ÁìÖ&‚~T=°&å>Œ.ׇ…Z¶mø˜*Ä:|þö*ÖÁt02D“’-JzL Ö,öÎL¤¯Úö�k…sTü>±Ð n}š½µX²èNhPi¼�öîj*K[êpäðq˜±çhA´)—jÅbtÏ9*QÙƒ´ chv3¾ŠÀ¥ >¸4Ñi%ì‹жW‹Í0!Ñ2!¯vT7ö©‘@ÜL‡—)�U¥có¹l 0 „6Ój�õt“êEu�)ÊŒNæyEý•½ú5:€À,ûmt‚ih–3Z­Œäž¸h”¡šù¬Zzœ?Ór¸G‰`´9m�IŽ.,@_]%AçVªtM˜K"ϩӴf9¿û>þ^¨¦’ÙŒï!9¥œ€l6BèV‘š„:æÌ¶¸²GÐ/ö d$¢+Æ«/¿9çëöÞ£Ì{úúd�ì½E†‡—Dž±¿V ´îƒWå½%…„Å• DßôFsÛy­×cÇ�°Šç»yzb×ÚO`Î>`_JŽo\‡3KSÇß„8GˆaÁ>äH#??‹=ík;¿Ž´žßò¾?Ⱥ†�A1¬h¿vsÜÜ7÷Àå÷€"¯õòK }ôã÷ß¡ò©Þ¾~CøÿU½›~îU°õÿ?Ý{gÅêÃL[{ŽD`J€#Y�ªT 8¢…Ê##=#Ô–3'oæäTãÇõßàã�ßÇñƒ[1cÑrZ¿QòƆ×ç¾N+;wx3Oá«5_0_ Ó§LDya6›õ•ˆ§:ë¡‹ð%A€Í[7 ‡Œâ¨¨x$Å_ ƒÎ�–-­Ø°yr9!›7�6*ÿõ& ^?‚&iÍQ�ÛiMRßÚ…;o»xéå—‘�ƒ›©fêå$ÙÅŽ‚µ7Jº;Ö› )mm­-¸õö;$@S±ÃÀ:iò$ÅŸC®ÅÉ^qÂÐà"H± ðº—س\VFÝ[Ö²‚’w7ÕaÖ§:Ÿ§X‡â9—»j¨ÿ¼÷>æóýŽ ÁÒåw`sðC°¡7R¹¥ÄÉž°À�={Z}Mp³7§ ê˜Ú¸£ýó|šZPÉüÕ c�ß*âû_FusV½õ& ’NL™à CmU6!5%{ÚÙ·Ü.¬Š×Q\g$Ç“îE;+'*AU0*p,lG¡šàajÂi~Þ=Ì^ìÁÔywaßþ£XyÏ]Ч^×õ¥V±²œóœØR9ÖDšð?2ÛR%™ÌQTî¦]M™ºPVQGÁ@ ÚæŒ¥¥N²P•‘°`f.ý ‹ÂKƒ–h-H:"5Ã-íGIÙƒe¥ýù¬ÖT´™›QíÄ,B®X×}ö$äuåpp3ì}+Afb˼’J*ÃøÝ3ö8$»s;4u*!�ªÎ1žTó¹�†�w¿}æEOø…wÔ¬\$Ä�ŽsSi”Geã’° ´°°ð°5CjU-v^ iKÆlF<.0ÃC…„„EÁvTC6C�ýÖ–vYšDµFiqí–:{‚Lafyìݺëy 0'ƒXG�BY,º2£Q•SˆZ,ЊrÂ+X�ìTUî†]g¡\™ M*q•”ÁçFB“û\WF›©EwàОÝ[¸q¹•’"´•Y¬ª´Ïrsõ¥Í®#‹öþfÊQE%ÅÌ;W Ÿàº«÷$ô’…íæêHÅ¿3fÌ]Š/hÝ@'€Yw¬„t‘ý\QÕ‚¬ÌX‚*´Ý#á¢�ŸÓ§Ÿ=å„-º:T(+±`O&Y'Ž„”™ó˜9K‹>oŸÑ’åîƒw/ƒŠY\»bñí°pnEse„~•“‚`âí9Šö´6´G7Ç‘=;iÑ[€%+VìâPªT®wDR9_RRÌ&¨§¤‚ÏÞû 3Ê'�(`.ÙΖæ¦#.ü8ö8Äc�Þ|k5\Ü}™e;7nægªBõ2ªôw*Áõ ™kévÅÍ1}ÿÉ�Y:\qÙÈsxöɧ°ìöÛ¤e×¾ý:}ü:?*¢ù|$ýZ«b㤬d²¤í˜ŸýkŒõëûÁf 2ÄØµo7ʲŽ#)äF :\Xò< 2àdz¦7b•Ò:l¹?û[\–lŠÝw߃ü>wHÒœ¿tµ523Z�¤3á_"ŽÜ‘•|Šï£Sz<>ihëó8`( ”xì ZÊï¥ÿ5�ļ(s3K‘õF‹<¹¤N ÐM ¤Ž ´¶´žœœLüðÝG"ñƒÎÛ‰¢røûý¨jëA•¯WPX.¬ÃAV÷Q>p§jíÏ8î¾ÿ¡›ëŸñƒ½ùžnØÈÊÌD�ÑŽŽ.ªÁ+ð—ûØ€Ž'È““šŒG¾ Ö–œ¬¨u/0¡E¬Mé»aHKFmS'|úÑg¸uÙ­XzÛm̬«�íOê=£´l=àáõó<½›Ç= Z¡«�(bni!½¯1c ×”O¦+c(H~Uf ×TY #-"µ`ã=Z›²¾0%�56ò0âRZ©Öj‚kSåÎfØùŽXÅJÚ~þÆ Xùô È#¨Tφþ˜)c4‘ ”Ý�ýØFÕYws=Õ^?×>-Ì;l*͇UÐt$nùZŠí‘1ºèêFï@”ލ}‡×Å…$ñ�hùkަˆ~`Tä‡^®©ß¿m½IÚêÙW¤MR€‹Bu%šäBé*@PqQ*-’ðšLÈâr)�ñjß›ØNQÿ÷+iûŸEìCÞy¦C䯖¯zCz�Áà‚Ø¾Šgî—Ë·®ïy¨WûZ׺œxïB½Úo­ÕŸ¬Bå‡ÿ‘ˆé#)Þ¶3Êe”—�b•Òu0mv/°Š…Ž–hÑ>Õ�A¨ëPF^e ÕÛÙË:ˆZ 82krÇN’ì‹ê1>Ðr.mf¯IÛÚjÌv§5¨%�SU:þTÒ9¨ÉÕ´ø-Çä9óPCÕ¹««+ûTI¦kNUìGNE"½°š+ÚHös��Jº5�9?6£µ¸>ÒÊJàHpÑœ}'eAdPgT]À>�=ëæ&Ú—#!·çã`g¢#^|­�áï` Gª3*ä˜8q�ÑräÒ¹©"¹ÙHÉ®@tF]û `A ®šñN¶Úš)C�Í›®1EÕ>ºŽ• �àY+Åqç�ÎxžhÖâRÒ1wÖ8T6ªâÃÕßÃÞÎJ쯵Ñɯ¤0sg‡¡™ñR•´%oi’“ŒÏH¨,a‰;ƒ–ç®c”¡©(�µ¥ ©¬Y ˜}›Ÿ~A"6—–QQÉ~‰‹³5Æä“l‡5f¬ò0›—•5}]Ø;¹°/U„z6ÈÔHde§Gfîû¦v„ìÀÞP‡ã,{[fŒ˜Y4Å—�·�dì+~–д  @•çaåÁ¹·V2òrÑØÙ‹ÜZ#S±ÛËÈ ’ÁÞ±ª¥ ØK%3'xQ°!F<ÒS&…²·©#©” ¢£áF/-¢«ÙK�“€ÎOÍíFñ¡J{ç ´´µÃJY™Ù²:˜ñÐ*´XÌà1\GHºM*j†¹c�U’yHT·çwJÇ�b�)3[ÔÌÇ`}_+¹$Õ±öOJdŸƒµgíßÏŸ È™M5­9{µ¨fÿ¥¸®A£Ðkôœ§m0]õT›i…,Cm^"T À R|F�óÁ5ÅŒú’Y1Û—.dì±ØYÚC�ý*[7g~ç䬩ËaJA‘üã$ˆšñ»ªLÕmOWjš$wgwÈ+JIPÈÄBö!W°ç›šOR±æÐj&õÂÌàÄþ¯è� ¢†¼´È@7Dèµ ƒÛV2¶Ï@?×òü«YvÓ×"%>Š r°´xB\,Ý.ÆÜNl_Çïs"ù›<:&ÜOõœôG$bëþãÈ#³×ÎÆ^®.ÈÍeVpè,xú�eƇ!z›+“×@f©6* d*µÖÁÀÌnŽ´0j®ƒ®½/Û�zæÂ8[1óC[ ©â Âçgå2ƒ3ÝuYp ]ˆïWŽ‚¬tªÕÌÐïC‡Ç4<ðú—´í¶=rlÜyÍ}Ú0á\…6´ç#¨’ÔÂâåËðòû_P©I˜¢µÇNœFmÞZÊ P$oÃÞÿ˜ÇæF,@Y xéX³i-vÚIð˜pÑî6¡�N!YÅÚ´vV£Jm¤q!ê0.D¡Ê³ pgnð²'ÿÉû¢F2«†y<¦†(lSÁâ'ŸDdR:ÊÛU±àÖeÌœm�©¶2´TiCg%£‚X}M%Yö^ýfmŠj¨ÚõG E1ɨ%(8†l«×ü€çïžKž­’í±}ÇxRQ /M&+·]<ÆŽq6bÎsFsŽ–™“EP3†Ù‰›¡¡§Åß“¬,m‘’œÈÌh7ìܺ;i5wJ0jÙ, }‘ �'­M•s�°ÖægoÅŒ"Ú�S�±ïÐ!ZÏbúÌ´'&ó·— }*,å´#ž¹`9Vø!^ÿàsfn†�Q»>£ýYôYTWÅéã$‹àæ¶V,[º³fÍÁäAvâgþù–<õ2V>÷ >]8FlˆË/Û¶mÆÖ­›¥œW{erM[Œòëÿ¼ˆâpýÌÑ=w=ò(ÒÞÞ˜Lí±ã§aÍÚM˜ä‹GŸ{�Âßb*Œ 0oÅcX=¯zs.°æDœ‚Ï'bœúvÊÚ€E‹RXSBÝšt úD¬ÌÇN––ùµÿÓgNô¯°ŠmOL¼@öµ¥t põF¬b}b€õrãЮ¯¤‡�hg~-c8ÀªxîÞ=û$ëwk‚»b¨±É..<îJðêdÕÔ1àqº˜ÆOr¸¯#ê.q ®P� Pb0¸ Ô¥‚köì‹’òVÚf*mïQ€�W—Åë\iˆ×‘¶!dA‚ÓCԶ⽋ç0›UìW± @X|îÇؿÃ÷¿b_wE�‘‹8¥î² éiâ5Åþ ާ§%£ººjdݾo/ct¥Ëð×ꢒ±·»“® ˆ&x[—s¡œ‹§wØ¢” Ê®º<,œIÛSf™ûx º ‚.\�Ì>íao*�í*$0н-¯•ä¯yšÑ™Ê�–µèhï"àÔŽé3æs‘œµüdTusŽš_ŠÀ±¾¬-[1oÒ88{ÓQÂAŸDÝ,¤¦¦1ÆAgÌÀ¾-[¨S¦ ’*FÎaZÚº±}ÏèÖå¢U©—Ž0šè¦Z2l|0]zH¶­ä±IF¢r¹Dr.(/¡«\Šè2U\JÀ�BV¬5ËIqðô§…n² òv²æëd¾§•‰"Oó&áYS 6$Åï?É/Æm™©õÀÉ\ÌêÔ7qfާ–ÏvÂÑã1ðtuB1ócœí1o-a­Ü ÞÙÊžP®¦hÔ/YW7öj"€î~º¯Tv²~fŒOuãêüN÷¨êâî³QBZ(³ójù~GyØ�¾C7´Öó÷ÓØŒ9 aþX;T´¨Ð�©œùß ˜8s>2Y»«ñ»¨­¥�y»$hæ1-eÓXÁÉÙ‰B…9~£øéeΰpSP—éÓ}ÀãFYA^”âR"èɧŸ`v­E-?Ÿ?$B�V1bITî`Ö­ó²¿HnÃ�ÿ#ý=Òñc¤å®æ>qÜçAîP÷Ùj'éɆ¶Ì6ëS$ªÿõ�GV×DBB-�Óºü-2"I\.1”¸ÀÀdq Ço‘amù쿇ÿvlÿž£Æ` #ËþH«xÏ:�ul@ÀŸ `M  ‘Êf±‹_-�þæô%¾¬7ï¾¹Fܱœ8YYÛŽøØÿìN¥5uõ¡Å‹Z,RÄmÅß׳]¿€Ul»L¦…<XÈîúÏÇ[$¿ÿ.ÚEî?t “ɨs£…HYY>\†Å·Ý_oèj™4cìíëPåÇI ³ ÊÈâ˦ ÌyöÝȉ9ÅL�J¼õ“´¸è Ú¯-TCi°!ïÂÉVNv:B¨2!¦®kÍFû åûhO€o×ýÀl/}¸£�M0¦;;ŠÖÃÁpóÅ ÁP›N}æÄ}ö´æ£j O|çb“pz×);çŸÿ~‘àoB'†^ÏÇtMÏ'uʼnýšžøÓÂc¹/DˆÇÔY %òÍàuÌ™3ílÌ_r•›³¤¢äÍ?eó–ù‰ëDz9]UQMK` Ì"x¦Êìs£ûLjrŸë2Ë¡¢Ž Æ�÷ ±•ÅÄœEФ"ÏÀh(ÐßÚ\M ¥w>ôO´ÑÈ##5önÁüE·¡º¬÷þ;ZF¯Y¿ NTÀ¾ÞaLÀÊØœ^_͈'H%&·žcƒ¡adÃï‘ :»Ôáä‚Ô\*®§†á6Aö}þ2Ì\°ò©gG\ípf®XH�MpÀ:ⓆÝY[×D› ZÆ\ °^ÔÑÁ鲫XöìÁ�’Ñè2,©,å;&FF’è��Ö¢–…I ™‚%ÞÐD6,‹�¡ üà×¼ÔmÑ8h47–%q’®¥A~$H¸êC“à¢.�wRMÅ0”©QP‡ñ³æ!‹ €¸¨XDdÖÂ;h vÞO;Ìgp!³€“ü.̰WfžŠY¶ÕÌvµã¤¿væ´ª¥òÙŒ“óÜœ ôª�ÔPe'ƒìËÄh*¤±àŽ˜½ü^,Xù„D®Ûl*ëAãiëý42ã#iáÜŠ¦êF¸lͧµ�™Ÿá,Š”©æÎ¯WFíÎï\4 UÙY¸ÿ¹—ðÌóÏÓ*r&†…1E�Š œ¡µÛÑ'ø=3CWO^{ë]x8Ù´?úzX ïÚ¾§OG -ÜþþÊ›ˆ¥B¾ˆ öwÜ1⮫ÖOy~[7¬GZR¢T¤(¶$P­Ã},Š©Áã8Í&2Œµ ô�B[f5*°ËÊÊÑKKnm‚£}Ìe6äñPFð6‹ö4ËW>ƒôŒó0𚎠9y˜äe/ìÙ¶žÇ‰P¶–ÂÐÖ cÉŽ�„vg ’È’–³iQÕØ‡iM°ôq†‰:‘:e´Xàç1‹§™D™€ñaPbñk«× 7WC¬©´3cvs z+‘œV„'Ÿx„j 9D**[3~Wx̘:k ÁUZåFñ37�&Ui¢!Ó¤+�²3T¿£EóX˜²™¨Fµy3u 3hÿ´ûôéÈpàǯÈ66F‰!!¡ÌA;‡D²´ãhßQÓÔatiBéHëPÜ×X[�¦šb$¦gÃy„XÅrŠëˆpº!Ù;(þ¼êëþ»—û¬�Íôp�Wg3)ç#†P­ŠF¹âE¨)¢�¤~ü¤€Qñøõ\ …“Ø>ñš¢!/F1ˆ)^[4èG‰Ç„"J�xJÐ¥íO`rÝß�³J¨l*. ½æ¥Áe±®K h*¶C ŠíË �YX€ªØØKJ[amÜIÕ¯KÅ6G/µ~q¿°;nÞº^Np¬A}ü$¡˜Ÿ—¸@íà>‰)äƒU¬MtÓåÖÿ;P¼Æ¡íqägí‚UZ«hƒÛ‡fªm=¬´ ôuà®%<u·aÙÔ œOÌ„±ÁκfXÙY2.JÓ©îÒ`IWe‚SÞ£ÝéR×c»»UH¶6D'ÅÞŽ$Ó²_b¨§IU©!Ÿˆ€¶r‚XÏ6S…šMX_Ÿ$<3ÖÃZ´3Ö×Ò@WEßk cfÆðب +c}ŒæûÖ �àðÑÓR\�£†tXÓ áæÖFxÙÁˆ¶¼rÆÐ˜i)¡¼©�¬†.[Ø!&ë4ÆLBQ|Jó²¡ÖUKв 6Ntlò�„S»6 jß~¸×Õ+©™ɬXã©“pÏÖ%¾xû%„0ªÁ‹½7£Ÿê<-‚™2ö`ŽôÑÁ@•„ë È˰ÄÏ­ú¶H®dTê±4Ä5A8�-uþþ;ZÔ±gj7ÖÓzê½diç,ãw¡’"’„*ëå<ÝTây,ê©ô dÏõðÞmŒA›A‹+¢¯s.«TŠÙ°·6á÷¸Gþ°^‡ªáª‚<8RmLr£øœrè":u"²¨ m RÖDO“ÌÚ‘TÖE\¼ šUy°¢‹CVzÚ:T�’�^þj•dø {¾:?õ¾¿GÅõžûÄeÙ³ÿ4*ÿ­¯³ƒ]ä}§+k"Ã2^¸*.bhdá¡×ÞجLÖæå…Xù9Úyˆ|Õ¡µE"û@ü ‰!²´ÅñO�Oñqâx=XN§²;üÌ!ö³æàÕ§F5ãʼfÿQÆŸdý£ìø«ÝN ž¼Œé)ßÖÜD€£ÿK}¹ç&ğ縟%x¹ånÄcûöüÈÆG =æÿœ6R7býÖñïž•lÆ mP]nÛºº+ù°',<ƒ]ÅØ°úNšL.—.õÔá€êð¿/õ¼?Òý~ã&¢®,µE©œx)£–,7c=u|ôífäáäÙ(=ÌØùLÙ(ôHK¥Ò_�> ;²v ²óZ^*‘ÅkÎÜV»˜ƒ0;s]åeøÇÖýœ°¶âÅ=ŽzZS6S WQÕÊ b6æ.û+xê%æMÔQ�JåÙ±�´!©dV@9sÆÀŸöÃß÷”ú4¨P ½Eo=mJYŽîžÈ¢”L×'˜CñÈSO¢¶©ï½» Ï=÷�_U‰3lS~ÑŸ"7S¸ ߯û ~Ø€Çþ:‡ê¼` æû±A½m×^ªriYIâØ^ÚáØÓÖ×ã~žÝ±êTäY°èÕ5` Y—:8Bà©›v—‚ýW[šMûË�´ ’Ö«AKCm]SÚªžGiA _‚ð…T±YSµEÆaw¬ì©v$›Óî Eòîõïñ\`YÒÍÕ¬bã|ƒ&À'`<•vް¶³ƒ×íBÀŒÄ?T³HùŒ[6~‹I³sB:]z?#ý'ØÀ’-Ô%¬>FzÎðû´hY,F]y&ÿW"ˆxqÃYZà*þ¿?_Ç.ü'FÐîšÅ‡h¾,^4&OX?ûà ìݾónY.-s­ÿeå‘Èâã�üÌdXSµnBۛ؄ ¨‘ÕhN€×J‹…V+-§ë“–Gf|ÈtL©2b&Hk¬˜ûo|€Õ_~‹eK–Ruz �=p¥Õðލhóûy$:)¥P£®J_'-wš Áï_'>çNœÂÏ¿É,ßÙ—Ýô¼¸dý*ÃÖD…ÌÐZ õ".9‡„�^|·ñGf‰–ÀXKU²&ï¤Uk]òiÄÒ2¨‡…âÁûqöøÔ–ä¢07“6o¡ü^ü@…v'N;ɬдÑ*wã¦Í°56@! ½Ê*›1‹óZ´ñ»µ€ŠÉ*uØVV– ³µ‰…‡ÁÀ#¦Ì¹ÙßÙYxõ…¿Ó¾¸B²/Ùºbäd¤â|d TÚcª,&§½�`§�®&�ƒ7ANÚIÏŸ5¥Üï‚LRœx¡³Aƒj±ÝUïýË_™Y} ï±÷ßµ™éÈ#+5lÞ²�åé+oæ¸tÕÁƒêâ26cW_W†îalžéÁ^_ -,,ÝXÈWË;ù;×Á¬`W¸y@ÓØ’�0ÕÓ–¦¦¸÷o/Ð:*�Õ…)¾Z½g¤­µ2™Ä9XûÍ—8O@•`‰†9.œ;÷Ñ“0šE¨¶¡öŸ:‚YS§Ó>ÑçŽâÔ©ST—/†½;ÔMÌ„­C= IM’uBÂæ`æ-wãLøÚƒÙð7¼RÚgƒÿ3ôG‚6Êö~€óŽCŸ¶£ãŸ~yð"×}»ˆ�šffåÙ8±ëÁÏÑJº(Vøñ^¦[‚«”×ëÇb÷E~¾‚ØãâìÁc�-³~KÏ|ß Oþ^U¤‹â¹ý઒¤äSÜw©ë®ìShJ<…®”3XðÝ D¬z3?Ú2°îº{ í¶ áóð+—ZÅ�û‹2’pà“÷1†Ìü:xP²°¡òÔzèyꆾÆ+KO¾€fs›²Y~£‡ I 7`m®ŠA»’1ÏÇ$ŸÑ¹cðíå-}–ÂzþÏ2z³Ñ'€e ã�·¤: Ônâ¢ÜK�ºR6=Ùô,�î...œ×™Ò*Ótàù—º‘Ÿ‹v2˹ÿ¼‘CJ¿F?�®ß|¹ÿyë’Á�Aîp©Õ\ú~ÚìI'\Z~þ‡ŒªÀ*¶ÏŠêlÿÀ éú÷¸½7·éæø_ì®*Vñú`õ  i¤aG0 ‘™wúf¶#=*T«b!Ý�IØ}ždÒsY¾bHã\±îk½ ¨Â*Xª  Q˜âo)4lT¬_(±Ä{Û©â¹xíF¯L¸e)Ê‹W½!ëp™³É׺Ú!P±]b ~Ž]ÍžyY&€_a*€hÂ*ö—Û¶c#nïàu(n‹ívÃ:Ëï1ëKêf¾ó^ßuâŠÛjÃþÇ-‹—0¢Ã–„5UIѺmû´>Õe4IQY1JP«3’ˆø Y¦RÍ’t[rðlj½;p>!Ÿb[ôÈSqŒÊÎ¥w,£ ]†e‹&#dVˆÐù°¯aă1ÁÁ$“×£8õÝwÚp*6�„Wæ£:9àøŽí¨¨®¦ 6 Ó&yÀ;Ð ±U¡ƒOdN5ªHðö£’s²5ß û#$JX2TWKÖ&HË̇† �B Î[mp>: GOÇÀXW‹ö½0Pn&iÞv^ã�}æ §NêϾAφ¬ÉŽ”Õ@Ë•Ÿ»:…Ÿ}°d�©I‘�!ÝeÝ\¢š�P[Ä^M6šªêïŽòú6dñwØHä’@ik�2ß/�°*QÌy׸ñ!´‡íƒ·³)¥ŒWbf®¯‡ã`Ô8Ó� •§]T¯šÓi©“צT®ülh¡ÃÉÅÊò<é3s:„µÁO¡$µ·4†­mÍ uáÀ‘jŸÃã®'Á>{$&ç„õ•2�Ÿ&�<Z]rÆå¨Â†ÄYW#b–$+¡‘1eÊW»eö$°ÛÁÚÞ›*Zö¤dŒ†*k!�YÁ TŒÇaöšªKHâë�"n¬i½¬JP‘,>´´ôØ¥«�*Ó"áG¢kAÖxP «ÖX€œ’*@Ù9"‰xÇöÈI‹Á]Ÿn@îÌ29?«l*” JëÐÈ8Œ9Ì�•Ó±ilE•ôçé'ñé–í‰øãàþ�(£‚µ¥"b ñÙÁxO˜M{yþÂ2ràåk„ŒÒî‹I�±y†½3·Î›å(Ï‹@z›˜ÿš@�ýÓº.Æ+QÝG_t4076‘±©HÍ+ÄØÚLiq¹9~¿{Àœ*Ö"6σ®díïŒP¨s• «¼ž`a OÐ×0Ö~÷5›«Ïbñ²;/iy «ûÝ-*lLJ2bŸ eØZpÑD2™MçŽÒγ«“yx˜ÜÛ Íæ\ Òµ3)_®:oº,7E•µ°¦-ÅRo¨¾õ:ÔsraÆIas³È–­++@bZ1â©VÊÊÍ`6Ÿ£Bhâä©,M’)ÐË„“�›“ªð œ„Ǹ_ÚOón½�dYù‡Î–g#í¼¤è³dîÒº8tôÕ”Ø0·e¦D³-&JÁÞ'Ç?âHJŒÃ8¾—[W<}Ñæ è7Ÿæ'Ž  ’µE‰àç(þíÌ J�áèP5âgj‡CÇOIli;Gf*:8áé¿=oN¤ªiAsìè,ºuÉ�õ?üسÌC´ÆÂ[WâA‚:´æÙ{"/½ñ¡°^x禵¸ÿ/·à¾G~ÞÆM_þ›¬Qgªí. ²^ÏõÞ6¦êSdo¦²úø!Ì]|ç%W%&[ŠV¯#º—|òð8´5ÕJë/Y¯V›Ìtm’£‚Lâmß~¿à0ª«áçë�Øè“(g¡éç?^±Ø¯Åû6*Ö‹oEm–M é6¦Ó’¨•ŠÐ*f§aîÂ9´.*EmÌr›iM*3Çßþõ"|'„`ÿî=²îÆúc)è¥â|UÄw?ývý¸ú–H+¨‚3 ×Îâ\²µ©H'{µ’‡–úš8Dì·[wÓ:˜MÓçÒzî·÷ÄÞïÑÍ¢CX¨5�ÉÝ*3”i!˜;i ŽïÙ‚U_|�÷Ÿÿ;Ù‡FÌÖc¡:–ªÁ4ÚŸCĉØ:g>üƒ'a<ÙÈ11ñ0#˜j¦Ù‡‡öáTd,¥ ×{|»6} C¶Q´G�ê*èùúùIÛØRÃ"Ž,YuÎbœ=² ‰gw¡¾±›6oA0èÎýÄc²\]Ü=ppç6NÎXü÷O°_úÛ#(ÎÉbÜŒò²J8©Â‘ù62ÚQ«’A­clŒ¥ çaÿÑãhêꃭ›"³K0%4„y*Ű"PZá º ìÉ–¶Âý{‰9×Q°÷`þ g0¾Z·o¼ý!.Ćs»¨xꤳr­�”q¡¼ÖÊi5ý¸úOàïã(�‰Ç¿ÞùŒjeÚÝòóWéRF/ÙªúÚê(ÈK–šŽÎn¾T�Y !9çéRbN@ÖÐÌ;öFKe9ü<­Ø@ u—j7?ÏåðcNô>d¦% ‹öÑ­d¤?ÿÌ[xœï='3ƒ؆¨ªiägIus�ML›½Pb‰ï ˆlD;ôåT–îÞ½_}½óæöƒ)ï¾û.þ¶b)j¾~‡ñ3zTœZX¯‚ÿ½ÿ�>�ëý/5éÄҤ–«XkÈÄÖºŒÍºx½êRÚ$6Õ@û*bÎ;ˆšÊ Z`�¹Ò¦þf�ç&ï„& (BÑ)¬2}Ȩ âÒ‚ ¼áãϰŠ÷ÆÓÝÌ£ýºy´ÕJüÁC²jh’ðÁ㉌ʇÄÄ)§<€s–«XÅúš‹DP@×ÔVZý¡Mk�ÂcÉ86ˆÄHŽ�C 2�þí)IYR‘Ÿ/¯¤¯æ¿†RJ¸í¿S�u¤· €ÖßzIa—/ÿóe¤ÆÃÁщó¢‹ošt³±£ †6�1öì;‚�VýÅÉg0iæé¾(gú±KâYEfrì,·±›¤ív”06"ÐÏFJ­øö»mŒ©6�!÷+ùÓR¾i^ANÇ&0Ë–1Kü†ª0¢¬‡*Ô‚ü ‡›±÷p"©:Vé)CM-ß·­2©VVU¢Í3Ôp8¦�®æ0%i¤Ž�«0R%�*Âæ–Zh·ËéØÇ|Uy1­©"®®gæ¶]Ðzùy;Òi uJ$¼Ô䢉`©�§ñ´Ÿ6µu#XïNÀYÅ{7¢$%ÌP ¥«�n|4:±—éæl‡™ ï⺙ÌãZí§ Rb /¨DM»'Îç6Ѿ~ ÖoÚ‰˜½k°ŽÊäv*F=HÞÍ¢ÅzJN)]Å|ø~›BB}XXÂù¹ô(«a¢Ÿ꘳ۡÊ<ÙpdeÑÉ/H´ml-KÒG‡¹´6×£“Jï ñ©0¥ÊÛ„±S·NðÀ™¸öPTøÙ–S|pr wQÅÝAüåö`*n‹±pé ´=tp/\m‘TÓ ïÖ38¿þ „<øòˆ¿Ñßã�â˜*ŽÏ#£Åñ[³¤P:/¶¸0 g#b¹¿§áÃw?€6¿gªá‡†KïzྀUñ~×|ñ2kZ SÝÞT�Jâ~ÓÏ!¸úGXÅû» ²*>e^Wsò6ó—MŠ­î7¿©CÇM€õ7ßí¿û,%À*.ƒAÖ5´²øzã�˜?}š´ýIÑQÌÐû¹¨àêÕ¬böT \óPV¢ÝD2¦O� mæÌýZ£:åÃê�1x¾ž“ç_ëeF\o5™jõÌ èäÉ<�jT™‰‰”ýé=Ú�EK3Ìdœ-¬ÁxÚ§¼Ým‚SÖæ²Þö^tht³€$›� ¾TN i§¨nB1‘,Áe5•0aÓuì3/aÖ´iT+BdÕœÜñš»µ˜…AÕ'lE´»˜=3 ÷Þ÷Uai¨"£·£¯¼÷-e/M(qòôádù|þñ§Tcuá�×_ÅVæ¶Ì›7Ÿ™:¶(¤íÆ�È2Q¼¯+]ßHP×—Míq— dÄ�£UÕFf³Vãá§_“¬{]<| \�ñ¨o×ñ‹PWp k¶ž¥ý¬>ŒXÏgǟĦC‘øaÃ&ª]g�é<ú"€U¼¿üÂbx;!#’•ŽÚ¨ÀIŸ1–,½ý¢·ïéCÕqàxæ?ÿ.Í­™û0ñWXoŒ°î ›>gð]Ý1aû!,?;X1ZÚ‘I樅ÁµÙeiêš\³Š5öÌ^ª'“©œ¥xù�ëÁ«¸S‡ «…�ƒtÝÒÔˆÖÊ$ÚÙãlt"¦NŸ7ð¼ËÝöÈÍ[7HÌd“©‹QÊÂqÇ_w…‘‘í:õQÊ¬Ðø éèää;­¶ }züýÌÅ[o¾/ÚǦÒØ)ÅUÈI�ÃíO¼€'�Çï••�µh7uÆkÿxas 6=Å55,bT`dn wwЇ q™‘£ ¼ÿü=¹ÔvŸ'Û¿‹_‹B33=‰ÝiÂìÆòŠRD¥å°HéÁwÛ÷lŒDAÐÄæA‰&IY\Èäü÷g_âÇ�È(¶¦2Ó�6RÅÐ¥êJƒv·5­�xü±Çh#Þ߬ù3Fæö(g>ÉØ1~,œŒ±gç^æÆ´A•–D�\¿ÎOÍ}-ZJéÒ*ÈÀÒ¥lä{zzAÏðgP\­3æ/XÅûKŒ�AJô‚Á:˜>y"Î%æÂœ6ºjl¤5ÒÆ*³°‚lW9ö‚–%‹­¼6™XTM£�•3>¦ rÇæu0Vï e³ Íue’ZöÅ7Þ…�\©BE…ÈúÍlR<øœô1 u¯+s�,uX`ŸˆÅK¯¾ÀFA�y[;“˜íìÈ.O•Àºxtår2�w`ÿ‘S¨®çw»¶{vüHKó\6Þ^£É¢fS�E°¹Jêh%ßlê�LU5Œa3R‡óõŽc‡¶Ò)šÖÇ·Ž¸Š%‹À–Šf[~§ÄHc^vZR¬Tà*Ñêtø`ûdø]×ô·ÖÜ—¡ê: ­NIÏS·px~yyîxàQY¿ŽVf…H8u áûázËÊ�eFºq£V±n=²œEÆîK¯~ŒJájásùyÔ±»‘•“I¼É�¦#mž”Á©Î†ÖÕT¸:`-(,åwc( 7â‹ÜÀ;¿Zó¡´6«ŸÎs`ÕÔ6A\\4݆x’¿q H35Ο}pU°Š÷ºuçqò3Qí«¡õÞÏÇDñ˜Á°Šáàà ]J*äÐPWe€²tÿåþ3±÷"(_�¸Ã»À†"ÝOÜû4óÇê�Or‚ƒ;IF3µ´@;IBíÍ5YÙüPR»Üj~Œî$€õç ÿmo €Õ•® 7ÇÍ=ðGÛá{w’Ô¦‡ZU}º…x¡�$ÀÕOÝ‹‰·®¸ä[©ªªÂŠ»WH$,�ŸˆXbá¿ÞCKײRÖ3Vqÿ¡[PßZe`ü”™¸ƒ7{ˆ¶Œؼc«”É7iÁ X9ºI«YÓÓaîô³UºÈœ~÷Ÿ÷Ðýã68‘ì¼ôáÇIâéŸ_˜: ¶R%bÆ¡ÒY -CKÄ­ùÊã�bÜ�ÿ€ç¼>Î&Pf ;Á\HÅŒÞiäK«³fîþ(/(@Gçw5<è¥M$ ÕågCw¢�b™á×�ßå+Åœ˜YôÏ—�âλîQüù«^+Tš|T¼P¿MíJéOÈ*šð €Vԃⶕ ÁÊ"æ§®zCñT©Y/j'‘ߪ°Õ©�?ð„‹n€WXL®”òM/zx„;Ķˆm`¬x-q[1¤ÇX»ªØÚ (¶h|¥mêXß�ÞƒX^¼¢Šý$¬-P2‹ûïsà5ù8ñª‘+jfÅ~S<~5׿ŸV±º°´üݽô3'�Ô+Æ(wW’�­Ñkîƒnæ(†¸‘ð�‚cß½ }*'õ½‘�u«?¡ãÓ,’úÔq`ç~ØšëáÌ™H�y}•Š»¨ØË‚_`0\½}±sË6è�:iör¸¹Ú „½&CM*cM)þ¡“�‰œtËILJ�®.ÉaTÑ b)�’(0,G|‹.L\|P¢£CâlëâÈÔ ¡Ëº±­W Åìc…Ÿ‹æòM¨ié„�¾ì횑ۤÁ¼W ¨iéJ$çJÕfÜ¢’„øÚ^x¹ÛI}O3*㣒(jȧb1 y…yRœV%³ds«»hÑë€ÌÌL’š+cb޶*9´Ll©æTbÏÐeÅŒñ©”cùŠE¾Z+Õ¢Ü^ªN—Lv‡ I—™ÉY0´6䶪`~Ø”ÕP ɸ—¤¬bñu©úô&°l‚ˆóIpqóAX¨/žyõsF|Q™9v2�­dÐQgQG2ï±ðXº6B“ö¿óçÌ‚-ÏJs²Iuá\XSPSXßæä‘°›�LÚ#÷pŸ‘›BB†“DÖHµÊËFŸû½ ¶.£h ­ CmMh²þkmî†3¯…åERdÌ’é>hjS†RGÆO„>§�þN¦Ø}.1‰0d ÇÙF,_{·vFêh—Éx¼ÕE×U˜WSc8:Xµc}Ïþ¦®�.éFÔÓˆÚº ˆ—S Û(§£WN%<'L¤upä4 x<ŽdW£�‘7üÚPÅZ†´øm,“ÕqǽOâð¡#HÏ)Cð2:4%¦Âgœ7^}ù%Œ³Ñ�Žc0ªªJêë_kXd퀇M;bè™,ÀåyK–3f�DMb<†ìKJ‹I¼îB}i.tL,aG|9ùB~Î ±…IBþ®V´™¦ûU £‚hM¯§-#Á†„o?_ª˜;¡D¥¯±©+ã&Ú!o¢‹”\ÎóÖL¤ç–âø¡=ˆ¡­½•½+ÝÓè‚çDç#Œô€¡ç,äEŸ‚SP˜ø9^ÕP�9®×Îüª^ä:ÇÓvôˆceü-ëWᙾ%)æsØsèøî¿(ˆbŸ´¯gÈ17+-y€d-^vlÀ `·eºVÀšMÁ`Ò¡Øâ\#.ƒ�ßâ9¿çqdôéxùþꃿ<gwf%D’éæ'ÙTŠç~O•2 C+ªÁ<©�i¤ÄÅâá[æã¶bŽë:Zª`מ=ÖjºÚ˜K°C€¬åÏÜ/±6ûlí ~퓞8Á ¶©Èd'ö_s(Ñ´6uþzÛXfÑfs¢ª sÚ±(Æk¿BdÌ ¨PK‚ zõÌóT£¥JêÉ-8»û+L]ò€bñ�ë�Þ{_ý÷ß� »PNðä ¦°ñœˆ·>øf`Å�Uï½�ñd©*Öƒ»Ö"<<‚`ÑLÅ"¿ÊucU3ýëZ·(‡‹íœÄ0àuðh¨.eB‰·¬ nÐh%ÔÊÞ�¿óþ^@+›Â�òzIùÕRY…>6ETY(†ZÅÐfã^�ÕI1ezæÞ´G|™¤ˆ.*‹nÐ(ž3øZLx;¶¬“˜Ï¢PVáo*?Ÿ6CÉIˆ-¬†=‹RS=-¾n/-eT`o¦Ë¦¸:ä•ùXºäV´¶u¡Òj[ê«ÑÛ§B+™SÈÄüQÀ*6TW";K(°‚B& XÅãU%9f‡ ’ÌÍE•ÐdA{~›d¡<†ö“Y‚‚B˜×Ó!K+ic”Ÿ_6 •ðÊ Ïàñ¼†ØÈ³ÜÞTÜyG“²¨¸ŒjÕüçÃ/ðøÓÏKûÇ�›³«;‹»Ü}÷_1Ú—E=›“¡ã'à ~_âÒK�”šOZgfÐ-aÆ=~L*ÎÇ�#“šMÎÌÍÁ]¿µf.h�;Š2y/¦‡NþE ko_/÷g7|ÉÖi”¿íö;2¥ÂU0ˆGXtã,�ÿE,„í¨|£ô¥)üŽ�ˆw:~aHüá;¿{:RÏ�ÄÊ·>B5Û7~‡ùñjpG߀«XóÐEDÓ·¢¼ŒÇk6_¯q容™ þù�ãÁ‡¾ì³Ý �ïûì]|eÞ~Ò{ï}Ó é=$@(Ò›(ˆQïÔSÏrE½Sïólwê)vÄ ˆ‚`Azï��Fz'½·Mïùžwâ„ zÞßo³›ÝÙÙ™ÙÝÙ÷ÿÚÖÍðd3{,�U€«—°ŽöBo¼» fAÿÔ@«Ød}ÿ“ÙÂB#U6t ò³hÝÖ‚*~ÆmèQÇ¿ãæ¦£Í£íÛ/õ¾� oÚº‰|¨JèÚ^r7À*.—;ÙÌjd>¹-èúh‘nlíÌ)ÿZD€õLV›€úT¿ˆãÝÃïë Ê ùƒ/CP#'…ã;¿ƒ'Õc�ÎÒ3lÊÑ„—kãÜÞL:wïµ[׎ÀÏã¬Ûð–´!ÖT‰ŽþÌw �;ÆTyÐ}ĈD-GÖ±âz´±™ysc&ò¼âÀZãüÞ€pù‘/ß»�ñ.nX�\ºª4QuúÕ]³Ìg|ÉëÌ}»÷`ßþc(-)GHx^{ö¬ÿàU,»óAi5'NƳYÎÜW:h°þ=µþØL´FþB¼-¬ªTXÑÙÂ=¯Ý*uÝ31�9³´B&ÀÚI²žz¾ûbJ’“0ÀƼiÕQôÓA"îT‰/Zˆe4ÆðÑÝÖÊ(ÙÖq�¬Kïx‚îzƒëVªIÅ0§•{Ìä)ÃWý£Þ5Ý à8h ,^L(6…�¤¨ûe�U¨2G«ÍÅówðñ;¤¹¨�„ZT€“"[u´ç�µSâ5Åed­9Öò—s¿´�\§PàʪÜKõ4Ä~—�>NU4'˜?Œb^¿Ë9ûõN€¯x•/bßGfÈÊë×-'ŒþTÚ_q[ۻʊ¤ÿ ŒÍWd}cs±èe�ý;7Òö¶Gr[èÇy¿¦ ²O�™ƒ_ó{äÆßùXЙ(‰ŠÂ˜h|òï7 ¤fÃÅÕ—®K{SÃ\Ó’Ræ³æ¢œ±1Ë—,Æü¹Ó±o×~ܱtTô˜ÁÊ>—9AAS[KªEëÕ“†L’uë¨ú<ÃcæóÖ“õMPmÌÁáÓyT¾[0þæ$ÚêëªAáŒÍûãaªÑ�”ôR¤f"ŽÛfçäŠ ZBß0%D"Ùîø*ÓËnMçþL 1/ñ\~îƧ4á›ôzäTÕàûz˜uY}s^yþ/p!1WM_•ö¼±xð®%´å6DÏ€*œØ¯3âÜ),:�ªõ}p‹b¿…q]yù0í§…²¾ š”]8“ßÀ¬e=ž‹Z°uO®_…ðY3hóK¹în8Ø3¯šdÞ¸ÓYÌê4&¡Þ ñ¹E$6ÛbÞõ7О¶“6»…ˆ Å´@WÚôzâdR&*Y—+¬-äé æzšñœêäâ #õ.t«›0Ê¡ Úf6pñòÀÑ„Bº+u£ŠäZ{’Þ"‚ýxî´ ;€#Ò3™kKg­ÂÂ*Ö©f(¤êVÉ~ƒÁU Mö\Zkù)¤ ½Þ1Óáif„æ=èò½o"=@SKÙ•­Ðä{²ýP2 89²®v°§sŠ9ÉŽ:Œ¹éfô UÊÌÄ>|,¾^v°0ÓD3] Yç¹¹@�Ûeçd=ckÚGwÂ@¥ºœ³75ÕÃÛF“uŠ”´sÏ)(Åé¬ ÒlÑÞÖ‚R:~…ø©"2’ u§=&N›‹@‚›³fÏ„:-€·lß%Å©…G†á@b1¼üxlÎbþÌÉØx$‘q>ÎØXNU¯f+t,]©¾Î€Ú™CÐqö¦Š¸Š@sÊ”Ì}UÓ&ØÜLÂÊ¬J’@?�¦¬˜Õ[NÀµé¹ðö"�ÚÊØ'kcÔ+IÞ.,@ �‘?U¿g•@Av&ŒiÍÌ� ¼Ü‘ÂÏj¿†<ü¼¡ÃÞnˆMêz-0ÁÇ-Tפ‚=“ì 7žÑwX)2L¯æyo<¯?Ö²â<™]ßÈ÷©×ßt®ïémn,ÈQÊClþÍ�‰„Aèào–X_ûç“Xpã¹>ÀÈu €uç×ß#b2Ϥ¢ÿÛðŸç‡¬Ö…›�èÿÜ@ç‘û!þ¿²ŽvT~F÷%m_�O?Z‡I×ÍùmÕµMù¥ G‚d ‰‹ °Æ}þn¸ÿ¯» »ÉKí·XW=÷7t<ùtÍ›Ðë �£ÿèÀ­º–&Ê«…õƒím.µê+z\C�¶—Ρ¸úc¬µ¥…d®v0‹‚ËQ¬�¶~þ>•Ælˆ·ÓvâJò ¤ š“….,ô$«”ÙÓ#áo<€^k‚fA+{*¯\|ÝÐ}ò(l#"´•A hCd.¼@8âûU�_êÖÔ~àƒOà…“œ`ªjkâ`N&øùáæ[W"|z \8y¶åEŒÈ¨)$àöáƒ÷WQ©5ú�\›no¬~—Eê[œüZáOù3U°÷À?0˜V”ó1cÆ i]'vµ——h‹Ì‘û‡_ü�‹Õ±2W¤ ºJÊË«q&§G©în%Cï³uë JTÃÞÚT²áÌäg<�ŒÇ'þþ,'Q:ØñÕÆœL=ñôK´@mÃÁ„|dÑîyÚ¬¹çmQdô¨vÃÖ¤ ™õœ”©á–÷ñý?Ÿ¥wü¾Ú¸Ë–ß.=¿Švš©GÞgCÀ þi`ž÷bWð�XË3ŽÓò븸ÞÙ*l–|A¥KdtìykEߥÞwm,#V±’N2+Õ9Ù/ÈZ–yTÚ-s#‡øîÉ«x¬‡@¶554©Êg�|þ¼²‚R¡¬©ËÌ5#ª¿;áîbHÆl sØ“L †˜ä‰LÉK*Æ!í»éãÏ‹‚ø|¦¤$’!y–å•ýzÝÈ,©g–R?® qÆY6 Â'MÆÙ²*t)ëP‘Ÿ�|^ŠøYìßiÌ¡MÖé|¢®QsÑZT¯ˆiг÷Àÿø„¶±ÀUh°@0Ñ€O mNY+Ù³YÑC5hgÚa(¨H4aË*¶Ýž9<6¤¥šÖBa³:²Ní£zš�n•^ P ÙÞ݇–~}-PÑÖ#3‘ÌbªïkëêEÖ†èi®EÄu qòÛ�D‚A™‰Sc'‘±hMS:°‰§O!*v3p=%« °Ð®£6.NTa©bÞ�K1uÖ,2aYà©0j€ å‹�½;v 4/ÇwoEiæA|öÅlÿökž?³ñês/K9õ•´á­éP‡‡¹AZÔTÿrÛQ81ß§­£–dÒ{0?K€Ÿñ7¢åT=ñ<³`* ©Ö�Žžn¤T°è ŠÐæFzX|ã͈ôqÂñC;ÐG»£%7ÞŠ*6!:WЂµŸê†eg�À¦^mCšzu0cáM,ríáîå�.›��E%út„NœuÞn´7aÕªU$oˆgСÕþLž[û;P¿í:6˜1}�Pqøð:x€ßMÜ{Ï`cff�Žº˜k±À¦ #?íVüþO$ó0ë( }ù)xáŸÏ¢”¶TYù%hj¨—2L«ÊJ1oÁõ¨­­Án‚¯†èk¨�Ò! .Ì-½îÙUÈM9ÈíU¡ZþÂïØy;2Ê?ÖlœŽ°ŠÅ'’¹|9ã ÌÙ´¤ÓBBr‚D Ê$#Xl—  e㣷àÚ7Þƒ�†BhG­€†¥–wüBÅj¬«‚ÊÒ"¸EО7r&š·=ÅÞ|¹f-þDkè:x899�±æ±ïVáv�¬!”ÄW2¬¨fïå¹',"ò’OŸÈóðXë%Ÿ|‰b'… ¬=ü ªª*,=«²”*Î/w¤�¬õòsOcöüE}ŠWe€U,øöê7A€Õî‡ûEJ!�!À*–içw[\~ «Ø_‘Q4ÀÚÎÌÁ*’¶Œø=–Çå(Xåeŵ ] „ŠU“ç~°ÊC­ò¨&‰OŸÍS=Ës«x�ç+Nf¥K=ç�æl š_$/i€ìu#kyµ\çd¥ãÉÇîÃÂ%7]ðص;®�kGàsÈà�Ñ@Vy‹Þø¿ÿãÜ�J+ÎëÆXŲÍÍ̺Ÿp®Æ�Ÿ/®e€ÕŒ¿Á1QQp´·GjjvîÙ�nº �á‘| :sUâÔa~„¶Âlœówj*çO¶iO=Ìù]=Ô{´è`u“fΡÝðv|óÝVÜu×Jª¸LI"¡u'£%Œ]Gß:}è[B»½�de,zð‰¡Í¬fíÒØD�jV­^_\·ô6h¹O‚† é$5Û(CËË7ø4«ü<ù:‡�`—{ŒUÛÉy¨æ¹mÄ£å&·¸P­)T¦±lž¨�*?&þ·x+Ö!Ô²#kɱ¶á‚•_Å;Ä6‰zNlËÈíþ2 �NEí×ëaÐFDuØ3fGÖ6V?€©ÃbÜ ”š‘“ŒäYa¯y1€UÔœU$²« t©9(´Eýit€�«þ «åwIàê嬉g€W‹o¾eÖeCÜüH$¤Í멽ß#ãôI°QQVC^k:vÎIÃñzõFè»úÐ×èBImq½<Ù·k„-óQ}\°7WA\&UŒœÃj±W`aªGà6 6zºð¦;T>ɇûó%×–›ki«ÛŸ)ó¡•uK§ê¡£¶UM­ÐC’sk¨4d¤V&m†«0%:šY§Ì#&Y4ÐßÖÌÖ¬þb5 If8ξÛâ{Gç¬ݽؼi ´èÆcD¢î©fcTô³Fè%iÐ�€\&¼�`éÁy b$‡²Ÿ–�UDÕîÔ“dæÈÊH”ÖVéF=E'lÀ“¹¥íÌ #‘µ¼¦Ž 4kc‚µ¶&šòw�û†V^¨¥3N]¢´uôÑßÓG`¶mT9ªtµAŸu¨5E-Úª}x“çŒ)½ñÍöý$« >«”Χð÷Go£Ý±²‹Ê˜;iNPÎt&¹°EµÝ0Ô!Ñ®¿]|íúfÄ–Öãæ…3è†g…MÛwÐ1ÉŽ„ææËjB—Ûoéh…•‚½†“™…)É—jT�p®§EÐ[AQ‘ 2¿Ÿ=A…~%ÚÔùþ¹Î âÖƒ]aib‹ƒÌ0èoFŒ¿´˜smBÛãŽn‚‘v욘g/£ –£c‘j¤¬ZCÖ\-MeÒ‘_ÔHõ2ANKk/˜0¶ÒÓ‡ƒ¥Žž©`\…¯¤j¶3T¥R–õ…¾\ Ìnøî4г˜µêƒ†¼tè0ÇÖˆv²ßFÚª¨hlC¨·ž|æßÌŠ­cÝ~'¼cø9¯CàœÅ¨kéBµ²ZÍgÑÀ÷ÁÈ;œ½€`Øj™!»@ÉþP+cˆ¨ê¶°FD$‰¾ªýر÷(ÿ7Â]·®À[¾$©“ôbßü=J8±�.`ÚT¼Vðva‚‹5ª+i)L‹jZ+ì�‘�‘žƒ=ûnÐî)gO(&¤[u%"¥A[Š} š“°ê]¤†~Þç�†—ÿ¦lÊÎ4nc.ÜdÂÅðåÓíÔ•¥¯=ÇWý\<|Ù«w[úTk듈)qþ Š˜¨=�öÕ¶=+ß-)X/°ŠéPXå'*¿ZKŸµsä‘Á}±ó§ü¼ÿõõ�¬kÞ~CôÈXðÚÿ¯·ÿ÷ú‰‰TÕÙÚ^öv뤼5*MœcU £=ñTÜ)WçKï‰Èžû-ŒôÔ38°w|ýGWãýŽÁ•î£X‡#+N\†ß…å·,A²‘‘Ï»ÿRÿë\6©½heOÖYØ´c>ň…ŒŸ·8íhO?d!8æ~¦$îÞ{7_Ø»û^t c¦ÎÀÕuÇö�¼ô:¬i%!ÂêíhÉ2 u9Yëä$±Œ™~…åõ(föCÔKz4PÉÉEÚÑxLnoPJŽŠŠÕóžè j¯Ýhª«Åïî˜VŒÎb&Ì>N»Rk­.C«¼q"st$Àºfõ{|Xul”ýù�{ñöÇki=Îü96:?þ`�Ô·¢êÙ@_OmĺŒoZ¡mùø�°ÊÛ=¼H“ïû1®ÍXÄv)Ûµï8æ\¿Ë—ßʬ…j$§ŸaŽë!(K9Ê"„EÚ,�PQÈlåX+d¸7³å9‘jdu52Ýg-‚·o¦O›Cz% Ø&ÑR68v>âv~@+ÜÓ˜�Щ³ðÊ¿^�r?Ý<™'£Â¦9¥„q3{Àªð Ü +X(DM™ 5ª Š iYFU¨ªºÊ”´‡lB �XéRõ[‹®z‚†­ZÌ)É@tTþôØcd)@ãòŠ’4"™‹h+5ÃfΚƒìô*ò ˜ ª‰©,­ý`ie�2²ŸµhE;�ŒÍŒ¸ãôu”Ãâ}?s’ 3˜YŸ?,!Cô»¯·`I ù9é¨`®Š¶ZΤe±ØÕF=Õ—¥üMrfO_­¹ > :tÒÝØ3§OE~m«y˜;);¦Å®+Œi™)Ÿµp9ÜpB–¯À«®´Ä|®á±´ñeÞ•“ 4ÉŽ�ŠŠ¡¥�:¬lÌ©¬FI­°[ÒÀßžy�LçT“ü²=‰Àm©LÌ­ð8³²�¦T’É‚¾nm‘¯ã1£—EkgG®§cÄÈQ”rYI»ÑD�èle|ì)T“�žÂfÇçdoŠ/„¶_b0“áíããƒé´ƒ6íòøæ›mdQW±¨Ñ"ë;Tbß §1 ò˜ÉÓ‡ªv³†êð´ÒG "z@o\~'Ìù9Í/<‹¼­@ÇÕ Mš¨;¾´úºëQ²Ï‹h-5>–­¼]Wëº�d• ßn%Ì §©MHN„>›é©É˜:í|ÐZ¼æ*Ö$o¾½ 7\#ú‹Qóå?¡«Õ�ùÿ�@V±LÑÑCÈ›ëöM«<ñ|âÐÅ^S({Å u±66ªoÿ®>ç=¾dá À*ß©O'ëç ]ª~�k6íã?|ï]ÄL‰•wÿ‚ëÞöZ*Aõ¤û{ZŠ¡+rO¯Âè 0$~¨Ð~oø°¦¢AŸç½ †ÈMÒà ™C€«XÅ2j$3]l˜³~ðôžÀŒfË‹-ví±kGàÚø �ÀÌK. °ŠM‰�3GX/µYöT0^j€5:2RZ¬š.4F¦fð§õîo¾�Ȉp:s‘Pæ+�'Ö¼ÿ rrqË]´‚µ³¥j.që}Àé„#°wt¡ûç�œ+ Îk íœÇXåm@« O}ðñû0·W �›Fšj CVKy)î|ø6öGŸwËë×W<øØ¶ûÖ³V×"ÒkjK{[¯H4ç@af6ÚŠ èd¡Dcs sÝOÓ}Iób<±éÛ°aR]^ªdU«Mã$ÆÍ<|ßíp#–‘]Bb:Òò‹ÐÞH¢¨¯Úée̾FÂ!ª|+S�·óUì=ÎŒÂÒ!)Ò†êÄ"ž;úX+¥“œº‡„Ö›c™ãÉÖ¾>³û»‘\T º(ÙÓÑ)§ :šªhe]â©@bríM™wªF@™d Zþ65µ£Ÿuc›p@Ó&)Ta?_+ tÓÅ.­Ú-° èæïEÀÚQ;:;ÐÌ<ÑèIS)€1F#Õú½\gJJ.-| ¬²>Qçœ÷8ª$[;Ú!‘ç9 5MªT•XAâ¬k¥RÚ/½m7ú°;=‹Š|=ø„M&€¬Þ°�îu^H=[NທQCŠLq¶°”}�STk6!4ÜÇ2« ÚKv' ¯¹ÿÂ9ÀÞ€٤ÆÐgí_UÛ mc 8әˤ· JºB¹ûø¢äL zéV5qòt*Xë±ùP*IÐVc_sÏ¡x”T7#ÀÅ"†¬±¾T,›‘^FèZÖÎê<¯ŠÞ�zO h›ìéÎ ^Ö¤ÊÚ&‡IÈ=Žä ��"ö ³Qœ[ˆwßÿ:ý¸yÅ é#ßÞÒ„»–/ºÇ=I”>ˆLz�é’ìïè⊕+îD:]�´©%ŸLóD_[d—!=ù~Ë|fWãà¡(eí¢lîB§PÍ~ü¶¤ n ¡¢¡<Ÿ}'‚àŽ°eÜ’ª†:ÛR�çoN�ÔM‘ÇžOwÏÔõMØ1amn'ƒN.W +gÌYv;ßãsçöáßÓÑn/�¡Ô ß¶°!TþO–Îqê×¥6ž<ª-UùÜ)ÎÂ]�LHÑ«t m­W÷>®Š‹øí(ÿ÷SŒ·+E³Â]ÜCö¨“˜§»™îgQÑQWôÂâ\)œ„M½ §ˆ‹8‡þÆ�¬Iñôš&Àz dß[,ÖûïûîýÝï/û‰¯¿µÑ÷¼ÀŒ·Ñ‹N°ÞF¥Åòå ÑÒÜ„~%ÇZUøók¹<¡š™ žœjØ(—_#ÈšžvFú±ù©Þ?-þŒBÁ%_F>&þÏÍLDÜ‘ïáá:ÚÃÒ}æ£d†ýóù™ëpÉÌmC¡pGu#Ù@ý´™´4#+¨ TDÉ™mÒBãøs`çWœHêRqaBR •%Fãxö•-ê4�JÙ‹ühšs"¡ª>€´Ô˜6g93,¢àO×Ââ%ËÅËâ“·Þ¤Š~1³º]ii\‹º¬“Ðëkƒ™[ ZJa¨ABG'U…Ì©ÞMîæ/¾ÄæõëQ–�ÂÂÞfUM †.¾‘y?þpgQ_QQ #‚›ÄV=m:‚®`±¤G²F÷mùî|�MI ÑçoWAç ºlp²5çf<‡i|²Ó“±+= “ jН>{O²‚ª.-†™§'SŠY4ªãîÿŒ†C;æÞD¥„/R�í¤f"½¥-¨Š�Æã´¼U!Ùìƒï�¤¡‰y´&ù�7ð[HÇ2áØ6fi§CAÛ(yìÙþ-Ï÷´�›±˜ïïïYÜ©`Ïæ÷QF;¢²Ò¸ûù²h€_ÕqP=s Û±ïË/°ïɇà=‘ömnRs"þtb N–°©à̬ /¿pùe®øúýÕ«%µòå ¿d3Í— ÜáC¨œ•´òµ%£uÁÜ %¡@]]ÝQ˜H*\D,‚¸d¿x7m í¡xᠴʽûÙLbÎoå_fò³:€ÀÛîf ª ö§7¢»&$L õÅ]ÿùhøf\ömQÜ ¥�œ½eóøß‡T—½’q,(2YÍɾ”¢õ­U¯"þÔ 2µ'¢ôl.šIÎÈÉË…Ïs„nªªÍœƒÎ{å“'OH»°°pØ`C(XǰŠçX“L:À*/)/Ãz’*æ�lrm �ºZr2ËÏg¨‡¤»­�¹~‰´î5’€V :Æ\-€uðÕy¥Î-׎ŒôÔÖTQan-=øà£ÿÇF¥%/ƒçª Ÿ1þ{®¬ã?fמqí\É8w_mÚ„(FIülFE¬¬wXÇ‹±qÝ$ÝÐþ“j·Íß|˨�ë¥ûåóDRí!©*µá2"vÂ�J:{×Á8jÕlôú*¨\‹–ž7®?œÇÇð÷i¸zTEE ºfv0vð‘V•yú°4×î¢sÁk`ÕV*œ?ŠQÆLÕÛ„ÃÖ3ì¼Esé~ròØQT°®hen¡-Õb´×³AO�¸ü˜C4É¡T ¡š@ßHµ”hn ÀP€ B�)E³e+$PTÞ¶áŠ+ù¾‘×2˜+Ï™älRñzL�‡¬’ž+k91¨ Û^1¸*E �蕞|‰?ìû*\»àÛÎÖp€U<]€©B•+©ÇJ\$…ìÄØK¼Êù‹uÕlZ+ ò:L¢§Ž`]2o&zù]ZüèSPDs{4i#›w)û÷Ja–T-–‘xÛÌù7çÁ7Ξ%mTK žNpµ‚íi#'8Ð"µ›q%âé˜6Ù-´Æ®$µ‰çŽpËH*mAŒ›  q²´ ]ÌÒ¬m膧)É˨'`Õ�í¦¼e‡ÔÂj´P]ØÁüE#f¶“Tà`DB4{ØFvNH&`gjé$ÕP;÷íå\ÒÞ_«@XÕgàpe'îÿËÓ8´í{ºõáÎ{nBQV*©`¿ï¶h¤ƒÒ3´ièÂ�5D[•—ÚjpWXm¤mpzY «ò{Ù@k ç¢+oš‡‡O2r%ÕŒ�I.(ÆÄgÚçö¢¾·žQ“ CB¢‚íÒ½q9ðô÷¡J³)9ù˜;û:fÖ·ðXAW�[Z§î;µ †ý î5+[)–jB1û‹o!àNåk"AÐ#qñ(¬h¢âµÝÍuh¦«QÉÏ]¬AÍ-YóÒ’Y8Œœ­j �Ù‘–ìŽ(æòUuups´Çª5_"ØÍ’.8M¬³J7¦t®WUÓ�uHfNìY.?Á—ÙÎ>þ$ò&Kõ¾§­sVÓð-™Ž ˆKFFu'’S ™wÛSõ‚ºZø>±VZ0Òè!ñÖ™½#æ¥êâƒÕk¨>5ÂéŒ\ZS-Kõèk„éQî´NŽ9LË\#8©PõÙ§‡©¡Á˜39E5mP¶SaÉ^G:ÁÝÒb’Ð ÊÌÛ°îÖ�9³[¿9Z@÷=KèÀ Ð\ÕB‡ž‹ÚëòÄ:¯ª¨,>#[D„øc1-…»ôé|0eðûÕßY…”3gð}|Az=Ü8o ÈÅ&¨íƒ‰axå•'àO’m�=UćßG¯º:zÕ±Ÿq\UÕUtTŤpo‚ÜšÌãu¦UuâlÇtö]iœ‘YÌ>O9�ðvtõjx/!€KÇ,GwÚ$'sZ)¤I€¸•jÖ&ïƒ�‘_†S…Mì³™‘ôãÆ>â…=÷ó¿ýçþàb]ÜQ:¦M’Î1â\"HUq‡¬ÑEÜ/îçq©}Ú‚Ø!î¿Ô¸šÊ×ϹOiõòëÚ:¹iŒ¶ÊAê¾­PýÛcÈÚ¸{ZT)ÞÐ&Yè\ãRÛ&=®L¥~ÕJÚqûøK£‚¬»vîERr2-0;‡Šìá;U^QŠ„„8æ*Ä¿ûÚíKÑp °öw)©˜!GA}T ž¤™Y™Ÿ†cŸ¿‰Š�æ†Zð²a�µµˆl¤¢Š¶Á¯d]ûéf6•L$ U0^~­ëÓO=N%é#ßêŸôÿ‹¬bCêk+™yPqQ�uøÇ3ü‰??NåR|ôÞ«ÈÊ9ƒ¢"Z1�õ#,†Û˜§øÊó÷04¼‰;¶Ó—¿Þ̪ïørípq÷áÅ–àÑjª1~ uøv6ÖÑJhD1ÔÁ ¨¨ÄLYœYÛž˜MŠ™‚´Ü¼õÞjN\©~º iÉdl1-tÊ<¨¶·"dz,¬>œá±štýrD-^Æý2ƳÏ<É ˆëð—¿¢Ûù9¸nö\¬yÿi;m ºˆqèà!²�ã±üæ[¥ÿ_~ùeéú×þGØ~ ¥Þð\N°ŠaÅ"ÀÙÅ&ê5´qE'δlÍI;ɬZ;ÚK]¨hö`F‘¢ÅËïFXH8"'ͺ$À*ã« °Šõ–”‘ŒC…Ðߟ~z*´Ãi…GŽfPÅÙEv©’@ •cV´­I'¹¥¤®¹9,Œ:Xq¢D[°¾ž~¨RéFÒ•éãO_4—÷ÃWa›%ZZÚp&(v5Gvf¦´:¡Þ«$ÐjC»–‘£«])ÝeD�v´¡M›³ç é¡~U ¨Ø£ª¾êTÞttÐZfñ­ð¤U®ht�°˜ì%ÅEAÖ¨Y×Úy–l8?•…’"„=°3AlÃç@9 ±7aÊÜhý¨ ßèiÐ12€­pŽîøUùùH£Ó±Ó)øzë.|{€6¹q©Ð.:FÅ™ Œ�|i§Ä¢TIÛWg/dqâ?qæ\ `mÄ}e™IȤ¥Ú»[vñsi�Co¾†âSG`ÁÏnSu©t–¸ìåþÅÕ"ÜÍ Åu,Xi[Rµ®©­‹ã'ŽaéœÌn@Z^6£Ì°¤Í‘I#v>á´)�@Ý©=d螥Uo' #ƒ °É³ç‘•l&mš°‘yE+(Y+ðêÛãä¡�ؼùTõvwF¨�¼íM ¯Ê²¢S‰æ¢tЪ_]�ý6cØÛ0U�ʉtìÜ™mªŠÏ^y™™+d£6¨Á°±¶Sç3Wµ�.EöñC‹íö–̾n2þõÂ?q×½÷cÑò•¨(ÊÅ¡ï¿dß«§Iê‰ñÐçû]�.-Ρl¨È"áÀ#8ÞáÓ¥}ÈaŽHíuÛÉS71ÒÅõ÷þ†±¥%rSCÎ_Œ‡úƒ´ìhªig×Px”jô<÷ìC,ôÛ(¯ÖÂí7Ì"ø½�lá:èµ—²!h†ÀP6ßì‡V“x|¿¯åŸ2t_wk%*y|üæ ¼²·ßz'²Éà>@n5›‘šâ˜™ÛÒÖ¨G‹ê s_¿~öÿ`?}>ºëJÑt`Ô½"ìçç"²œI؉^pÛÐk\î�TF̱‘Ç“O=A{¨lß·‡ä5$;‚c$ž>G ²óU‹é´À«©%YŽ k2Ÿ³kÏnJ`jp@^zéyTþ`Y»ô¦[áæBFkg#ߟÁß'ù5ŵX[iy¬F|È~þÐT­"(nW’ò¡7~+ú¬\á½dpnUÛ¯�F{æÇyÀwâ$4ì^K…ùÌø¾�w»»Ö¯Ö*ùUí²|üïdÿc¼«×ò\½À*V(ÀUâ±R†zFRŽØ%å.Ïž·Xz=Kçó^wÛÎmH#‰fËæM¸qéMç=v¹ÿ”³�¼îÝ·xþ;÷yí¹*ÌJþÇŸß $”Ÿ÷sïg5¿›ê´yvòò(æï•²¹ƆdXüЇ^~îÿ²r;ŠšSMS‡ªcShè™KG¡Ÿn *ªjWíˆ<øÈ*x¸±9LËhC€«ü8AOo°Ù_YUËcìh‹^»ïÚøE�–çÀàŒv¹œæå/aç…[UYiÙÏ dÍÙ· æ.¬¡~YEÝ%~ë8/¨¬ªãaUáoý ùGc¡°«åoFô¼%È8ðÚ‹Óaæy¾º´:nZb0lž2ž÷§žNEuUÐ¥µ¤*BöÃÈL8Ìf¼â¼¨ù1ùZ(Xe€UÜ5™¶´ìh�p¨'xÒÀË|’ød€U,¯kn}Q€uýú÷¨ô ‹þWC¨¦ú~°d f 뛑à¦x�ÁFw?è(þâ¡p•S’ø.ç;Ò»é³b¡ºÒ�š$å»  tpît.ÿUAf#@IDATÞ¡á �P» õ«¤ìâk‰×«´mCÅ#¸ñM ÔkÇ‘Y‰¹kM# x»‘~¶þ¬C<éf¤�2fÀ·tµ`ÿÚ5hÊ?K{à^ä”×à“�»à®Ù�… øê‹u¨ Ú04:g °NðF}�TZ+à¥0†¹]z¨Ö–U#„–¸IŒª¤Í±—«-tX_ö¨ê0§´vfæ„íúHè4† ç\Žî¸nút8ð8Y’ìY˜‘Iö{öƒª¡. ­põe κʆ‘_7_?‡äsmœb¦jÔÔÙHÈ.Ds[U�ítIò€«·¯dã›]V öL•ß}‹O?ý ftNpcHH'ؘ��Dnc`pºˆ Ú“àhïÌ<жv˜Ñ¶·‹ÛÜÐÐÊœVGdŸ!8êìÌ÷�Š\*£¦ÍÆö£é|•W×�³Õ J{i£K+æÒIñwâ8JX+êðÝÔ0°F oÛÑ7/¿˜€©®d3ÜMµmwc)jZT. èl!N'ÇÓ9« qy�Ìæõfô™&N™ŠO?ù _°WQC+åÒâB<ø»»aKµran6UÌ5Ìž½~¬O³D÷pÒèlkSU(Ud¬ªD]]íš —E2�!�»=Au?f±: Бdo+Ô°–wñvÃ…>JÎáÓïˆqtB½“,U])ûº¾ºŒÀ®:2�lŶï¿a­ãЬ£Ù»±ÂL]tÒ1§¬•¿NÐáçÝÉÅ µ�êè¬Ø‰'ÿä�³ÍSq2î0Ó Œwc¼‘8»gR5loÇþWRûõti°&Xß }�>œ-a=Ok?ÚXÏž }F1¢®Î ãgÙØÔ�ìk¸‘´nckŠÌ|öu—ÄPIÌx/ö‡GÇ{FûR‹ó‡P¤ŠsÀp�QÜ Va™;ü¼%–—ãõ¥†8Ïå+·F)€\ñ:7\_Zc[ÒÉh<£‘¤è½Õ�ÚûwÀí†ÛáEûfã÷^W¶—1RN¥s7|úÝBºÈëݺm93… Ä:2¿Áä©ÓðÌ3Ï@�,2exâ�¬ô3*Ö=ßm"ëbt6ôh¯ósºoã†õÒæX’í2|DM R²¿ÿ×t[€Çÿk€õrާxS±Ž\GyY™Äöô%›H��îóæMç�<-OG íJšsŽãx­?s<8AieÓÕ‹Ÿ_/¤ÐºŠŠ:k—Ë“¦-äI|Pý£¬ÅéüýûZφqRÜ~$’!tÙs&ÃvÍš58t芬‘Múçž}šÅ.'mÖ†ølÍè/¤ oOœ‰;FÖ› 238Њ™2‡w�Ô€{ì/¯!<,�jKûË94c.“ÁæöÁ}»1•L­5Ìb a“Ó¦�Ø¿} î¼~63l,°aý'xõ߯�¹ŽßÚ•g³ñÕÞTXز¸£ÕN蜅˜5•Êc3æšÐî¥I CZ+fTÙ‰a÷€=ü±Ÿú¶È>òôôÆÊ•+™Ýá‡Z¶Üw3B rP9}A³\* uaA»ÜÎfvv° 0e¦UJW¼ö!àÑĉ¦ÈŸü×»çíÂÛ�^ÚcÑWŒààHIýÒ΢íþGþHëœN6M‚Î{Îÿ�¡Ê/Ïç,Ã;„úG—¿‘–,JFXÅs´Yä�°_gñÙb|üÎGˆ™>¦ææP�I^Je€@´ óŒå ¬<©uá1yh�ù:u'Ònp³³Dí™ÃdxšBXcŠÜ“”�_0gE^TCÛ:{0¿Ó¡A�ÈH>Ž�97â£5"�¶Ô:däÙ³Ž~‘¨fÓåÈÑ#°1Ð@yú ôêXp"< áÑ1´`:ÆÉÛ�{‚d$²ì É�@’†<üÇ¿°²»Eæ©¢7ä1+©í`þLÇí,L- BÛI5Õ˜ôT"«¬Á´tª*,€ÕÁ³-Æöí{˜ ú{æ¶H¶FbÝúTp¶è ÀË~�òË ]ö+ “ÿ¼ò Šó ¬`fh¿ •™^,ö1-2nþÁ0s ”,…zXèéÓ2©°¢ž…—'´:šP^Vˆ"²y]Â'¢kß›hí,œÁè³9S… — ½îåÜëo<s×@IY�LrfÊŽÍh# ØŒî9)ǘßÔÂZ¢ù¹YøäÓu’íŸPû‹!@YÅ*XÄâ·^€¬ò˜3gÞP&h�æE æJó~§Fšd¿SŠŽêuÿÇ÷1�áÈ7ß�Ñè‚x*�mù»­˜3H24Ї½‰ ¹|~�ÿ_]?òøc “¢\<6q*d€uø6Å3«¸­³õ õ¸ãöW °Šuó¼D u*žyòAÌ[¸tøKI·ò˜á¼ŠÏ ”ìòᣯ» ú&æÃïâm©¡¢­¥9âþ_þ¿ùg‹ðüVaÖ´Xig“ˆ8À*ï©ZÅkÕêšçÏ3äå®äÚÃÍî¼\lÈ«X&8pÂÅýͤdæÀÍPŸ}þ{v0„G…LPƒƒ•pç¼o’‹2R³±1µSœ­aâ†ÄjZÁéa]z“”ªaa7•³Èn@m~5vf´&áWßÕgsaàìI"ú4†(¡Ê³½¤Ñîz°³h€ `¢§ÌÀÜiA$Â{ ­O ½$/k«©ÓÉÍe-ؽu;´(S¡k”#UŸIy%ÌwN‡5[~~>°£ú°¦¾“‘>9ÊÉÞafF•§vèm¬áwº‡µ­%Ö|ò JIîp¤=nAÍã)8zú; ^Ò†œ®E-Rƪ¦±jI–631d-m�ö9*[™KÛ„ÖVFß´é¢Ûà “gÅ Œ™³Õ4�UÐÆÜÌÜŒâé<¶xþB)c:77zê9t±žùŸÙ‰'A‘,ì"éR�$æM7R‘än‡äÄ8ÖÞ^hï#Ø×Ó‹³Ùieè¡°¸5¬íûXmÖÓ¢70ØŸ vJŠó©–í–ö3�`ª½©1 êÕ0&Àm¯p‘@á\Z#[TžâÁZÛ]êØøùÇø>9‹ÀeNR�iGá‡'�¸ò²Ó[ôG|¿÷0{Geè§Ë^m‡É6Êð{GBÕÛKàóº›ï£;V=IwhZºÂ“äa#¾'n[ë ~Ö垀Ÿ=ì{ì=’€ý‡N`ZtZû´¸Íb6¯¹!¹”Ìæ¦ÂŸÀ©:kóJ~Æ5�,‘œtš6ÆUèm*Á’?n!�¥!?ªÌÉ:[‰Ž6¾¿´7RïíF Ï»‡iżš¶^ö4 ¥—í)]<8ñž À»o­¡ÂÊŸÙ¨UçÙ€°õ÷ñÀÃ÷ÏfΊ1'è¡Ã_–Ep LºjqàdjÛÔiGl •vuØìm©+§¯%㓨¨mG" µ� (m¢B«�ìf°iY´ãí¤o ¾ýþ>ÞšHûäM͇1¿kÚ|�r Lö,6±t”2@ÌIò��?'ö_mùµTwÎdÖ£-ÕýB§’1'7Ñ´’C^ô LÐKå§‘ž.&M'˜ÇñÖß綠qšK³y^&“¸S5);©dwE7™´ßnX %ÙÒÆ&ÌY¶#@š�wÞz qÇiÑ«¢‚…‹Ñ"hð5¤ò�`+\\ bX€?÷ÂË06ÐFÒɸq%A±a«üœá×¢)`jj.]äû¿"ȪobÉl˜ xØ[²mAUc �h¨¶N:ƒ°“¡T!k¼¾’àk"îÿ ófÕ°ŸÊi6W>I,Ãíw¬À¾ý{ðÙ‡obÞ‚¥òªq’ìêè)“ñèÿ8tŸ|C(XÀêåå#ÝuøðAÔüýÝm¨!+XYY†î¼xX°ðT†ÿìÇá{q�¤‘Æ¿C`½iÖl~†üi‡<ÄÊËEEE@‹öÐc¬5§¡ñà§0Ÿ¹='?ƒºË$¨;Æ��DéiæN¥A”etgÿ]Ze+sÕ 1ŸuÂuÒÿ¡�<#¬âŸÆnààªç1íѧ™�ö:3‘Èä·WHË�õGn:^êÜ0ÖóÿÛûSi±VM ÚŠçUañÿ1/–íh—v÷íw°!Cö>-ÍÅ0&{_`½ýÖ»¡°1aømØøÉ›0¢•¶PU_îèa3«¿¯—*âÁsµ›¤†±ç !wäzttØTr›{ž‚U^F[Ï@¾9t-ÀÕ_#À*vД¿9®Î ézh‡/ã†P°^M€U¼äX ÖËØœßô"ÙiÉÈjçäü›>¿†�ço3‚6¢1¸.#›ó½BZr.Ê![ö õÈÏe䤧±yyþoåÏeÛÆ»/½º A æ3«ôöóžšp:ßoý÷?ðÀy*V±�WÅE áòŦ�Œáˆ—jWæÿeÓŽòÏO¼„%t¢é«Î•¬Ö…ÝúðÑ˹šó\;Ûš¥Hù± ~¯…=º7ÉÍ£¬òr—º>¸u+UZ¨"´½Ô¢WôøÕXÅ À³]SÓJ�Åd`ñb󩥂T¨8…�®P�¶·¶ õ«PrŠuˆ1VÝ$¿†p¶ÀbÈVÃò|JÜ7r„úJÓÊZÅì¾G‡\C†+i…³’ç–ÒwXÞ±žáClSÕc÷(…妸_|·/ç{-oçðu ÆCÐ\¶ÂXl¿WÅÇDÍÁQ;«OOÝ®¿uÐEeøsǺ-¶[œƒÄ¹èJGUxéÇ�#*v²Ôo«-)Å#Þ†V“ Ø»ãưXÃÏ´�Ì©47Ó„�Y?ši¤Â,O樞Ù}O³†:Àù ‰¶ à½w7⎛oÄŸþp7žü׫¸{~vîÝGÕJº[5‘ôÜ5Ö¾·Ü<÷>|7•�ød×hd Ï´ˆ h1ÃÔ�ñ…JZ|Ó5¥¯­»Ï*ÑG2ukc-tÔ4èöÆÈ%mFÙz@_¥ƒ¶Á¾°#Èibe�H'M(,dHp¸Ææ¦HŽOF~v.Z –u×—Ón¸KçEC‹ßIÌTèD)ÝP¬ì¡IUݬy³Ñ^Ó‚ú–Ä„øâT\tIbVÑÒƒ“Âyì} ð¶ Ï]Ù«°Ðg=C[ؼŒLZÓêò|kKºHö“4®­k� ’7‚) ÉÉ%pœ_Âc».˜[»{™kÊ\Ò^Æó0"§¨ºê*Ýpv š–ë×cÎj}M!-‰¤^Ÿ¯Õ«.>t÷©§UpþýÚKì¨ÒâRÝÝG5¾—¯mÑMPYQFùa5LöÅ%fB—µ‘…U��Tªržœ– •�)~F©¤ý¯¨Ñ‘´ýõ éµi|¼ª¹ µT ǧ$q_Í01vÚÛ{hKÌØ•ŒT¨5Ÿ%©Û€ÖØ}8ZÐ suÌvBû•�œó[Ó1HÅŒÖ Áú aªË¼êFðÂx>mÈAva :yŒJ‹Kpª(¤2¹ª–}Œ Æ¡™X1rHÎZu¨dÿóÄifÜ2B­SE“$n]4ð¸²7ifj;s},ˆ D[C 3„™={4� Ù~øy)è@¤ÊãGKg{æÔö‘ÍžfV* ì]è°Õ†‚ Zʳ.rŒ@Âñ£èo.ÇÎ] øvÇiÖ,í0¡]WK=ßKCô±r2nbÃ#Pƾ‚‚$ikKSd•°§gSFú4QL£J@Ÿ@…j´ .’ò{‹*ªðøý·áTbb&†ódØ/¹�©iR§ GO¸³ûsò9X>ÇŽWÁ*ï‹ …@&ì™íú~voÛ€†ú­xHú �×-/+®Û(¦š3{þð»~•·GYÅžú†!þà*VøÅ²vøUîüO½SiÉT]t3Pºªúƒ“âæÚl†fS9bíÉ î‹75êv<�­½I[”åHÍÌÂ{¯¾„]›>燶}õ1Ö}¹!áQ´›‹Àöo·À•¶V#¬Iê}¾’×óõó¿°Ž8p‡˜é¨ å¨•ô±7à‰þ—:Üھ퓷�ZÒm�~X»{Óç>›‘ÕTt�ƤØYCvd£¬™œL‰¡§«û“_ÚbZ|´ää# lÚÀšO¶Y|\Ü~°<°â¹Ò™€Ò6ôC£¦áí6?\ó6îýë X´ä6i{]Ø`?yl/NßËLÕA@Â�ÇäK‚¸ýôòÿãÃrB’E�³TNÕs"U‰ÎÞ´õtì,&¯æŽ •_oƼ%çß¿ÿŠ^%Âb¦!�ÅÇš?ºš/ù«X—‰"ëÂ�¬¶šŠ ª›�qãM7s²«c‚7?&À*`z„ÛPqëðÆÇCþ#Ù©§qtÏw´Û×q�k-¨ìêùü„hi`úÿŽ 2½xî‰G¿:•˜,iõûFP /2¨èëíRƒ±>“ܨøT¥“‚ �Q¡bö3.A´jñÚ–_ß1Ö��>1m¨Hm$4Àš™�‡#Çã1…`Ûh£›j¨ Ú½ì;pþd­Žg u´!Šraá4Xd÷5F[VÜ×Jæ"ºš9ùî@O;-Ä�íYžŽo^�*9'„C•ö=uUÅ(JÝFKá;áæíÃ`í‚x¾W°@ äo¼< ò‘˜O7¼´r6‰WÎH§;€�Dªk„ý–Üd]ÅÒ•œ+|'+Ô·²(ñž€éAn¤Û©£±­ž–ªèRÑg܆.8¦TÔ6¶jàLZ2˜åøàïî�.?žNå±öÓ�ðô‹/aîô¸÷¡§ä»‡®íÈîbá²dé-MX #ÊÍÖ,ð³Šò¡Í`ýþVXéón˜/et73¯uúsœ¦Ò³°”¶F̃É,j„*‹u*Ao¿ÿQ¤Äíà1.…jK;,ݼPE UÉü×ß?ô(¦/X†‚œt,\zØ€3f~Œ¥µ=mÚfIÛeB€w´áàêq‘Ç”ù·óýëâ<¸STr˜3£Ç™�ÂÉÓZÌ£½eÅ=,&#ðöëO¢��” _|‰²‡ÛÉœÝðÕ·Ø·÷×MÌ7?×|WïiƱ=yÈUYØëãÕ½€¿=÷ �-s^,ä—óÚÍÍó<€U,;•çif΄Õ祶Înüûå°c×NxGEÁ›¤šÁ�vU�õ%h'ãº81•ÙbV8•WŒÈ� ëjÑ^¸ †lHxSy®£;HÞ³'A**2‚û`?ê6Õ±˜úèÓwPI€y÷ÁýTÉ: C]ì-Ð Êvt®pï®E¯­¯˜íëàd 3xVÌ>º{© `£Å—6Áê´*¯o ñ�…Û厢¯?¥¥IC±è«-‚þ`ê“/<m£^,‰Öʼnf=tlþ–óV -;zÆгS\ð])¡“sÕ´­�ÏH€§OØ%AÖ Vòß±w÷.ˆËu©ƒ©nî aÀ˜]> Í~6áÌŒívÀ:dµ³·Å¤‰¡¨ª,—¬ª››à4úyu¬]êdÁ,Vd•—@ëµqé# €Ö‘£ŸßÁ¦W¡}ýÏe¬_·Ip¤HV±ü¹lÒoÇ–/ÖŠ]‘²­‡¯¤ƒ®$E�gpõÀ:ž#öËX6µ¦þ�<OfÍ ðD¨Ø„²n´¦áÿj�ž¼ïnæœùý*€Ö93§“håwÁ¡´¥óÎÂEƒQ<8ìs¶òŽ‘•¸ê’W-ó'Ų^Q%±M�¯¿üÖ®Áø|íûÒ³Dí&†=×/.Ï=ý8Üܽ$ õÝwVsWM�µüþ»º[�Ígù"½à8þÔ–Wq;Z¡g8¾sÒ8^bhQñ¹õÂå~¾¥åY3ŠšH¬]tÏåÐaè¬PGɵ‡¨U/V7‰õˆúsP½ú±Š1‡XÖôñg�…ZVV·ŠÚ¬5îð��¯X×¥öA<.ÜGzNQ »â]Só5i+:lž{øð!¬]û)¦L‰•¶GëžÃ û A�Íœ= <ÚêkaͦoÑÚщÎuÛIÚu1í¦£V +›y,`åòÅpV¸±w¨E‡ªlh°gcdl ·ð‰tŸ5D?kºäÔµt£–= ]~ºÌíT3¦C™!ê»U¡¥o�””𛄖þ~Z{ÑJjšºè¡[U@ \ímØ+´BñÙ³TÊ1"Š(j]ŒKÒEiE 3@UÑËšX8…eÖ#þL6z¨Ò$Òºúì8Èõûx¡’®ÎÞÌ´¥ÃÝŽTY#몳µ ro{±sÓwTòòüfo�$‚¼“&Q¡K;[#3_Oít¨i沯¿ù*8·/.È“€Í„´Lh2XؘLmÝýUsÉÞ»ÈÍ|éÍAŽ5Bƒ=ñ9‰ÍõtXêfTQdp|ø9RÒ) [YGRg êªQYÛLáL/ª«JÑÑ ÊÚ¯ÑþöH)lÇÑ$©IjéçûÚÖXGksº¹ 0+‰|OB]-Á´"h) ÉzÑØÌû÷ŸFGg~ÇáXþ&¨Ð½¥²´Œ`{Œm쓪B¯—ù®TË Çµf~¦4M÷ÃÚL§7²o9‡·;HÓ¢–D`[:ù˜brh|iKí@NfE ?GªÐ¤›èD?[œÍ/†¯]È&øb\T ªöÑÙKÉí6b¼V&ów­HZm&‰ØXGõ�X8g 4 —3—¶†ä‚Í´Ù64²@YU#&ÇFòûDàžõ§{?Ž×-„ ×3ž!Îm—:—�g}WcY±McРĤšÃ�‚ *~ÖkkjŸ^—óqDAxÿ-Œ1AV±óºü0ˆK&™,:´–Óá‰äÚ¸²# Ö§þøT{é oÚŠ~cW餜•˜@€Õ Þc®8�*©ø“ÇQ{ò#Z§ bÆRt’WR˜O{4C£ÍÑÂÿ«Ë‹h�Ko{?¸¼é"ûÄQ¡s½×¸øhT*¥y©ÖÖdqrb=¢9(?þc^þúsNT\Ù¶ ­ü±´¹ ö0?æ6�µîæšrd¥G1ó¢"C{Ý"ÉÖ·!õ(s!\0iÆœ±ž*Ý_[W/¬2ÈúÑëÏ#ùäs²ÿc°Ê£¡²˜¤cZüâ»-ë`FŽÍ�[Û9Pù6¸lIi â’siÁ©…°°0ùé ?wå± ö8Œ 6P­Z€n¹¯Ûˆ÷Ö¯EuC3æOš€˜ðPØÓÓ¿ZÉü NþõÌc­ yÛ�Mù«1„ÅêÊû~�?ÿù¯ÒêjòNA�ù†5½úˆ™½@²%¿Ò×?ÆÅ�Üu«õJ×õs~ž§Ï˜pÂ|1›¿±¶_¶,’«âÿáY."FäÀÈ�Ëë€hwéY¨Ù;1ä~…|7êhÓ(.ãYÅ äÉœ° %ñ}lÊkS¥ oÌ�5óçÏ%SS(>™sÁ¹�ÈðÔé§u!{d•‡Ùš†ÆcNs|xöžYÕJ`‹¼ŽÑ®-ÌÍÆX‹Ji=UUΊ¿¶6Öl[Œ¶Š1ï«áù¥�Ù³òùEa'ÕÁlÑ’@ĸ˜•¼bCª ›>zÕ«^†å­¿cãöüɵ.�ÓGû#ÜhlkkÏBʬ\{f¡êC“ìQ caë,”å�´­éìdI Ö>>m†ž´@râý ÒE€¬ª,DJ¶Â—Ö§Öi9RF‘`T …ò`c`pË„Mjî‰o˜-ì CæË”4ô¢®£‡9-¨î¤åRn*Š Ò±àôÐSG6­^[zÚñüý7 rƪK§Ê»ˆ¼¬Lä²hkfA}2%‹fÏäça˜J «^zÌ¡ÕÆÖovÀÒ®Öè`Á$bUÊ Ð�IÏ‚ • ÍjŽ,2u©2uEê©Ãئ�,xÌÞ¨jšQÙ‡¢¬tt÷ª (z*ÙÉT…–T°Hê…²«jÊj Юùþ‡þ$mŸœ�lKõ€`ýö°Çi¼ÃÁ;QóïÂñ�âx³6–Üy7R ª<‡$™A0Ê?0ŒLZôYüàWÐ iJ,3]}H0°Š×ÎO؃¯ù›QPÁó8?£µ´AŽŠŽ†’@•›8#ÇGツ=ýÙÉêd1_ÜZçãÞaÖM›Þ¸så½È-,B³”ÍùY4×7Á©-ïPn §¸S`«ÑW‚…T1jR ìL 1%)™@¶*äV°&øøÅÆÕ8Kw†Êµ«è6áãa€¤‰™1žøë´�ÞŠ­Ÿ„ü$ªwùÝw¤ ¶©¡:sv]è„Cv<ÿàåüm£Uð’ë—aîœùøëŸ’2ZgÍ]0´»j´%S¡¢¤uß{ˆ;u mêð$Qðr†’*Ío¸_'eìlùÄJ×â�‹‹'¢|œÑGrc}—=óÓ¼`‹ÔgV"í�àóÀÓCËÊ7LCca<^ónãüdéÏ`ÛíÏf–XåÑÙ݃_�*žgB¥ùŒEË¡ ?`•—µæ9Fd‹áÀÏîx‡&3#Öj‚¶mœ3ëœÞﺫËËઠÉFÅiŒŠaÃ͘óÌÿåHMÍ 9ÂòW²fÑ–òôAÒ�|LÀZyfLò]×®ÃG ,$”ª[i^,À“Ëo.8\}mtdéØ0oW²±6l~tÁÂã¿cáM·H«ˆ Qü†ú=/®XŠI‹Ý_ä£B@d¸1�þùçþ�§ž}Jz¨“€�£±6¬=#h«H§Æõ`ÝEžfC‚AÔ??væÌ»wÜóA�.üõÉ¿ý׫؀+XÅs‹² P”S@[âÑ箢Ɩë6±üO=dàQ¨`AÔÂBWþ®ˆíÙ«LóN+‹;â$€T1Tԙôð%ÿ ßgÑc�íŠÅÍ–ÝqYÇD¼žåãÏüP?Ó*7î,ú{‡ž[L¢ªøNÉß«^QÚ.ÏewJõ¸xþðí�7Z>WÈu—Ⱦü)V±¢>¬«*`\�%ÅÆHYšÖ¿†›ïº•.F-°v°¤˜A� •Æõ]8–še�:ë•Ò²÷4mW'�­ªÃš-$_®Û€�T¶Ö°oçè¬ÀÒ{ «ŒonÚÊyº&Ù^$åÔâDB.ôuU £äü�„]…»3 ¨"ô³ÑE IÑêü~vp®jßa6t¡HÙÊüR:2ÒZ·•µÝ´g)‡4¾¤–¶»,RÊai¢@;óV£ü ‹h7’@‰MP�ÙÏÂKCM&(ÕHؽsÑd´iè°'®Ä<ö)JšzèbÏ}ñ#¨Û†z‚…œ¯ºO^  æÛ›9£ŒÙ£ÙzÔT7¡AÙÌçòœÝOe-%™"ó´ÿÿÙûø*Ê´ûsSozsN =i*‚(ˆ ×µ¬ú¹®þÝývÕ]uÝo­k/»¨ˆ‚‚H“ÞHH'½÷ÞsÓ{þç�8˜„¡Š+o~“{ïܹ3ïÌ�;ó>Ï9Ï9 mzk(åí�æê‚'M%¼ ”ö°±D'¥t‹X1 I¡j…ú,’ÈFÖÖ^ú�Òß&�$T+}=üBÑArµ½�åpcho“BÀnÓ˜ki¤ïsNzj ‘Bß@ª1 PñÏ„9˜½Gc)gœ‡´„8‚&¨aꎃ‘ð#�VH�·wõcÙâY$Êj¢¡(žž.0¥Ê× †1:;™Ë&g݇àsoòNg ²¶ƒê‡5è[ÚÙŠ_o«ƒðc¬4kžŽŒAnQ÷]�ž ‚«.¬Êí�ºŽ>¢¨˜ŸŒ’ªzÌÄT^wU¬Òm"ËÂËßÅÅ,:ÐÕÁñèL‡Bø{»À˜UÅ% ¬­Eü ʯw4Q±ÏÿZÿΙ†ŽFQ ª@Cs'&M ‚£� L‘H«$¯ ˆKL„)­Ó¾Úºá¬25ÔUÇšYÖ(*È€ ç×VÖ°j¶ýê”6f•0}RE…ps°™U”.îÁ÷_~ˆ§þöz4ôaaíªæ’±SX±šE™ã,~�š´Àꥭ››dOÒÒÞAKŽ^ÔÖ7aAD¸Kh¬m�#+f;U•p™L"$‰´€*­©CïóŠn"ˆÄe+î³�v; t QÈk‹u‘-¨ò£Mðþ\Mä›äkbº�†JxK‹kæÅ\ϵîË™/ßgd?ìs‘fLIÜ«xŒ$ˆþï�>AÝ€)<ù4¡üô¯­�Y‹ ²ÑÜTOY¶¡¤¨.Ùbêìh£ »Û¯íØ\Ñýµ²±ÁÌ)žXÿí 4šã½·ßÂü9¬ âÅÛÞ=à¼Ûj¬)ÁVE¼³9•7LØ2¹uôЄM ǪǟemÉ)맇>©Â./õ$Œ ôPÎ2ýÌÔ4Ô—0aë{ÞmÜxsètñF¯!É'“yQ0:´jiQcž‰vñx­› °ŠízLúŬ¢ÿ†”½u˜D™‰~²½\1%l Áèóð¬È2›4%ŒRw 99AÁC‰?ñ9¹ €E@Ä<Ži(ËëÄD(Çï×  €5Ž}îL ‰Èwß|6mÀ„ °3àªÜ G²Ÿé›(¤ˆ„ç;ï¼Co„€< ²šÂÛÛ›~zß"—¾­áÓgóæíÀJ/[Ì£¶ý3%%•Œêx «n8˜Ò"eÔÚy^ÒfJó“)#~y¬ iS§1èt”ÖW� c{oL»é6DnùŒ÷ëÈ&[,ïÒ¸ÅMYTþ)*JUýƒƒ#€Àq¯ä´à¥¬b÷D`×è7“%¶ Zô¥ÀSòƒŠ>* ¶Äs!Ç$ä�†ƒ©‚IžûÎï|!Vs¦™[Ù]Àzf|24È›)�"ˆ4d% ˜äV”ŸÇqÂP•™/ˆŠsM}ó«¼ì¹Àª¢O‡>儆7´^n3äuÛÕÅå¢Vy»Z ÖÄ4܃§««Fd¹›­ìååEG<�ø$€OSS �ã W]]¢q‹ñè`\—2²ÍmôÁ¤W'õ}Ä$V¹ põ�Þ&[´–æÖô¯¨†²- â/¥“o¹eéà°¼”Þ±”áô`¢¯GX±jMÙ®oÔ ¤ºÉ�”ŽŒŠAAq#å’*P¡"û”>£ƒ� ¸´�‘›™Š6‚°FdíöRêÈÇ‘ìb’IJ釉vV9:ù‘ òÓuÖŒA\«í#(ñ~ïíw°2’ Éá÷Gz,ÄίÖ1*fe]?Y©Æ(¢ÊËŸn€�¥ \)Sêä‚^Žct ¼ZÿbÝgô«u庫ȯñø ¸¸ØÁ‰¦4úü^Šëê¡ÓY‰šNVÞR®ÇØÔô½èn&9IòL•�£xàꥬÃ×á×tPÊjÞ¼›à0Eº~w‘!}©˜ܼ”G[‹ò¼§ñÔïŸFÙéxÔ¬·`5ß¡×_Ÿï¹w°*Æšòë“ç!ûÀ.h´t+ ¿§¤ÜÎ]»ÐÄjÜ àIg6ýùGoâ&&þüY]hÎãu®V\T€Òâ"&D&¡¬ªN’¹ õ¿?_'‘²yþöÕœÆ?#4(x̯EKèÝÈ�?SV™=t'“QA0çDÔ è)°iód‘…}zÍìáϤ‹Ü¦ó%îm¯½ö*ò‹k)ŸlÔC�ÀÚä™™8ÑE~f"¥ò÷B�çcRb JJ (‘Ü‚²—�n‡о¡³äUJ�E_Bèò‡8ý¦󇿈O8ÅûéO¤'a= ÔVJÓðåÄszç:bÐ2˜lw5˜,zTZÄþÖûϬ;5`6y&tm�¥÷Ä?�aÏÏÌü=1××äï×^¹MìÏŽßNœ8�ÒRJy1‘$¼äÍè�;žöù'H‹Ùðút®ÖÖ\‡2‚ó……E¬¬ö–»‰I Íî øMâ½îWÔj*â©Dpîcu¾C!V©ñ>¯ä=Vy¢ó+/üuLbù û�žoýû^@ ïÀ*öÛÇÿl UT°Êë]‹HËŒ–-¿Øcvcù_÷¨|ý) ¿ Å�ýfs# 0ÿiüt%�Ì<Àäv1f“ÜõkhŽ ŒÍ-qrÿ6¼ú÷ñÝméÉè•×>Gy]7~p♜_Cñ”�<è8ˆæ-\&�¬\•ÖØSÇ9>Ɇ/Ç$·/œ‹ŸùãeÆà p„Lâ¸ÃöÜã¶ mÄÒÎúœ«œð¾»˜ m¼ïËñ�è‹9eP@̾ýSg: Ò§˜Äû=åÅ$ —ðùš1�ÊñnW,'䆇d†g2$SöWä#ä>޵nµÍ¬Þ{óE‚¿_Jäb±¬³óÐ$/Ÿx*ŠNT º:¿ay;—û¸ö³Ïu씬™jwÂÍg"Ž8„ªèÔ’kGeÂñã(ίƱSTtQ*X]Ù G/Gè¨5SÍÇIôµ& ”‘C‚¦’yf‚I$>FÌ ƒUÕ¦¸a¢�3”½ÕˆLïÄîãùÈ(`åZ¯’ªD LŸ< Q1'hÇA‹™ú:W·aÓ®£¸oåäÒ×sWF9êÕµàM503‚]†ŒëŠŠËYMéLYa¢Ú¦XtÓl”6Pf›Ä¿æuªu°*–’Þ¬^4ÔÑF �??oVéò7Ò§¡D-pŽ%g(í!±E ¦Ž¶8º÷0rò `kÌ}4&É�¹E7½MCIlÇ�½ûQTQŠ^ú«:y ´;öîc<++ËP* kììIôUÒ2F唯ÍJå1c.8ÐΜÀ(Õª¨Øqëøô½×ñÝö}¸ùö¥”Ì­¢¯‚$äbJ—CƒÊ{þ�¬ú& v�`\q•/YlOZ“€` «þ¬hß3m*Ïa#'Z”t!ÀÉ‚Ušu¬Ü=ÅåÌábn‚Ô¼Bä%ŸB ÇyýB9Œ”† îž,ÄŠF}S'òHª-ªmGYENõ¶×Geu‰¶&T’¢l/AGUc÷ŶVæpv¤Œ®ƒ11'`"«pÅþd¤1nr„šžÕÈ(‰¬©-ù´º1æª#QH�\�ííxè�UTnªÇž1 £$‡H…rÆ ET+ͯCÍ�¤X5ìIÐRØkõñꬡ- Ó»O塸¼v”¡®o¬G>ñŠU÷ã("nû­¤ØUU�=­N~ï”0f壒ÃáBªN vÆk¿A5Ï�š�_Kæ/4Êkm¯¦s å0í­¥G«1�m”*ÔåÃÒØ@òÔ-((D[q"AïVÔ·ÐÏ×BÑgîMxæO£†RÃ]<ß*«ËéåÊ|Ei9 ŠêXÁÛ77Z½2þ·DNf&*ªéû«Ö S=mÊ6§P5åñ´G® €S¥´�`x�‘›­¾Þw«îäœ?o‘oêûö«’ÖSQŠæè£ÊþòÒná/]%‘VÎùÁ«ü†è—�V/{ëe¥”Ïe8"¤Ð›£#)×þ×snÝÇß·¯¼ fÐ2êW°Š3d•ÁU�‘hsK}‘t•Ô@­£µ– ¸v²Ôõ¤×7þ�ïÔ¦ÁÝÖ˜zá&˜¿ôNV²²Œœçjq¼�¦“e1Åv…”Y3ÓF(;{âð%8óà_þ‰/^}–•˜Lψ:&¬�(½ºàöûÑ@°¼�àŒ/�²×E¹þ�vá#ÐN]÷n­JÞP] � é„áM¬)Ô¯¯a’ØšÒ j÷íà �,«‰ Zþç~?-=GŸ¤1ü„«Ö•Ò”XìøôºãxT4/ðöîÛ-IÕöÂÈåfxÙi°:ôÂÉ)®^+€UQÁ*VÑN³²ÍÔ óæ/¬›IóFÿઘDò‡ò$/gCFøŒÙdo…p fe+¦³*8èJ#ë¬ù%¼Þ² «C¡ÀªU÷ÀŠ>¯®ž>ÒǛ鱗ŸÅ3 —´®º}|ø i�¦ö¾ÐcB½ƒëÖâ ¤GËà’ŒÐ(1Htp2Êû~ãQTEΆ�»«ø´ ÅÊ/9`�mÑ?I pO\Å §„Õ•"`•YnC Þz ÇU–ó+¸kÞsÏÿûIÞ™?wîPŸ~déŽXëk+±á³�0}öü3__%³ ôÉ0¦?ç¹ÚÖï¿§_¦=*‡Æ¢‚u4Àz®Ï^Ì|%¯ÙbºÔ&¬âóCÇ[°YÕöÉæ3ìås­;1! ”ï�DÉ~TKßËóŒï¼O9V€/–«Ûö)«6“x¿_Ĥ¶ep¼èeý&z5Ì1qÆrVÏ¡”O¦ NèÑI ÉÁÕƒ27AÀOPô_[¶à¶ü€\Ê €UL5 ,"£è]ÙÒ %I.ú ´òéÓ3…,ù˜œRRâfêoz­˜À… #7äŃ>Ç„Ý:ôPmj ¶Y ¶gº­"dwu÷ÀÁÙUšÿÃŽ=I°²Åìß‚ãÇvÓÿ¥. §2p6uòeB«ó)U\^Ó‡æævr5ÛñÙ—[(‘®B�ÛzU+ƒª^¨z÷5ƒµ~/Ôý©aã7aëâÍÀË�A%ÁÅÒ"L†wÈTL �&‘p™\{ùå—Yu}³Ô�+ñ/`XbÞ�2RBòÉ›ÛõŸ8ŠZÑ+ÈÎÆ’ñžŸ‘ޝv|Oµ«T‘iöYÛ¹^fx¸ú#4t2« .<}ÞòõFdów±èö{ÏÚ…õk?AFJ2²sðÍ7_cÁ¼¹ôšJ�§ïÙ ÓYþqFÐ�U¯òûõåŒ [ ûãµ½²¤}=�Ÿó9«„À-´$�$¶¼Þ_òcCuêªNS�  ¦æÐEyµÊ¤ƒ¼¦^üØZ€«Xű²àõGž~ÉÇîzè»a}(Á~£Ý8—sZcãÑSE?÷Ý»s‡3cøËYçXŸ]³fͯ`û/VÑêTF´±úîU0§?cbr¦4íÚú¾ô¾•Løa8N¿  ‡iûãÊÊÒŸ*‰NœŒáø¤S§NÇò÷1öe…ß�“´‚Ëø÷È£¿•Ö�þù«·Žc2ãüóµìĉ8«Ë8I´úªJ$ÑçÞÑÓë¬�‰®ê_¯Hó‡ÆÙg-s­gˆ> bµPXïK1.ãI‘� ¬üZ,3V\t±ýë¾Î៱òh›ÑOå(¾�o¤Z”ì-{®x-„ÖI×`y÷ŸÎS©“ãøŸ”‚m»àXL4´›à3i6oÙ�SYå`5¦WHöì>Œæú T—TÁ�²´³#Ü�p(Mu�h+¯AqQ=C Iöô�1I·™YÙÈ$pµzÍC°e즨–fÒgÕ�¶¦Ðsð€�«%fÌ A¨—"S‹a# ƒº��E+–QKšêv=YŪ�ÈÓ¹˜5s ŒéÛšÍñ«…… ¶9‰\‚‹·,â¹F€­£¥^'@“Àª±×L([KÖªaÃŽÃôÞìGuQ1�耤Âbfd.Yäô‘ÛEÙWc¹šúfü VSzל•¨$P ´'@­C©X*Hzˆ×C"óuÛ·m¡Š;ÜÌPÀ8º¬®•…UÁP2_hKû( ´°l§�”’èT—3€‡­!ålMá@©e[…u™·ÐèkF6½@Ý©ÒD�ښΠ$fŒ°Ð@ä±J”„wO溄ºSÁ\*—õõ�q}3ãMG,]AyV[ì�J‚ž-Ù¨²ÖMIáb ³IŽ;‹¾Þr´²úu€6Aõô#uv²‡#ñ‰FªóÕEÆÃuÖ$èõ  Ž„Iæ¯kêš`ͯü”t�…R>Ò”•¦uÌsø8šIU­F–Tè%p¼W1X8}"�æ2Ú‘4`Ù-s‘ÍœfcoGø¸ÛÃÖÐ �}èè'Ñ›ò¾Ï=û82baý{/"1»žvzˆI-c•²lÍPÆJfwO’e¨ 6 i3‚×îÎ&´‡Êá566,ÔÉK�§ì¼ÁÛî£�­)Ì�ÕidÃï° fMÄ ú¦ºX %§sh—RR^�îú|­ ÑÖÑ…VªL©ó¾RYZC¾<œèêE,¦Œß?­u:º1ur s"Epæ=ÆšE/É Œ± Ÿ+‡»qý¶juȬèEoS!tMí˜ß­„ïÄ�sþ’¶|¥P6ë­¼ÏX¨ÙuYàœºÊo4¾õ’Ê´¬4U8 tÏïA\#Ç«p±Ýë%ÓK"‡íó~émÈ*ŒŽ…¼“¹¥Õˆý*É:EIZ{yCÉQñ¦:O6õÿ‚0bG¯Ò‹¦Â8iÍ*&¢m¬Ì`ë; Íd§ìݾIJJ‰ ð¨–Ê~!5 „{ÀL Ÿoÿ‰ô—˜ÃçÓ°Š€HwM6ýç((Ï·gãð& z`ßXÏ*Gk,¿ç·ôdµ½°Ž:¶ç{)ÀU1�¯½öÊ_iž‚›.9ßbÒ{‡öï„ýâ~) kmmjkë¯*È*d%ÞýfãbpÿýwãäñØÎdt`àD|,�Ïu@IDATùÅ:$Ó«tÁâ¥ô‰»ødÔ¿�+¼€5Aà‰A“áá3”ŒÉc’9òÛ×�’šMà ˜{ÓÈsd4À*º#ä,Å$·  _,Z<ÇŽ� <½\È�ÊÉÌCY|‹,à b¼Ë �ÅÑ=è²Ö¨Ã‘HÎË&H1‘sr7ðìÿ<¯ÐÌ]t6H!‚”sG"¨2@"è7aý;ï—¼Yεü™ þŠŸHà*VÑΤàt¸ÿŒXå&€¼Ïõöu;_ÞÇÓA77 `ˊωÁ±�£º”sßØÂ†^[”œùQ"Ò˜ò+b21³–~÷â·/š«5ÉÞDýOÿ¯t.M £/MvïøÓçÒß&>;woÇ›ï}BÆ\5åpÚ¡mMi©úF �=«"CUH_G̘ŽÁö*0!p«+m‚Ÿµ…ô®1ƒÏ° ¡½‰; Bß|ñY”f¥¡‰rKûX•⇸ƒß"1ò%òÌPZÕD]{$FÇžû¤Î€¹«‰¾¯”–íêk ¨k‡À öøhýwð%ˆCû²¤ULœY£› «Z_/+]µp<9[¶nǺOס¬V… 6Æ´îÕ&µ²¹99¼×ZÐWËUUU¬0MÂâ%g_¿†«Ëy®ÔÕ?ëã¯ðø‘ý¸ó�‡)½«N£r,\±JX“âOaÏ÷[áÆ Ãt’�´ÄGÇ¥â��×cþ’¸ë¾‡¥{�Zw ßñ ¿WzŠÑóÕŽLêñ¶Jm£|ï@¿¢X‘z¯ß¯½þ2OñEa§: LÝ¡cî‚"Ê2Y9ºâdd$¨€„êÖA¼óÆZ wkâoO?J?\*)0éâïlLˆ&YЕøè“Oñàƒ¢¡´í”ìzõÏ�BEi=á¿iïáÅ$Jüƒ}áC� >ŽM{z¾Ó“f�É…{VDÀÏÉÖ5è�v÷Ÿ^F “Aûé…ãHßæew±ºÔ×Y…]Í*‡‰Óf¡’I“#G“hðÓµcéÒgÖó—†’b„ßGÿÕÔcÐòž‰c(.É…ïÍAÓÒ­G߀™C>ôJ·¢ûä^h…ßw¾Õýlï €54lòYÛ/cõrFr"%~ÝÎzOTàYrÝÔÔ°¢æí+îÄêÕ«¥ Öñ¬ Tw 9»¥” /ËÊ‚£÷ùËØÜ šô,ŽÞù9\ýä.Ìd…Õ¯`•�¹½¶­l‡*¼NkšSR_W~û²Ë�H yía€Á €õÒé短•Ž¥‚¾oß½ý'LŒXJ¯Ö³;—¶öŸºÞŽÀæÍßá[Nsf]õ®ÉãG.Écø«¾Ñ_ÑDìBõ°ŠfKÎ[(›9¼ÅìØHõ¬ZQ„HkÖ�-19=¿ï¾÷>Ž?‰Õ«î�>r¥ÖáÛ;Ggüû‰PKpÏoúìo§'²,¨þ�sî� ²v0+š˜7º Å\óàYjF£—½V¯å>�U�*ƒ�W+1?Ö>Šm'*ˤd?Ë1²ðd€�ø�¶mùREÅS#!{|)ms¯‚€(ï.¯5ñãUœl�°á5TR�Ð6`úW)ÖŸxF]-h ’ˆ®+å~Í|àäå ­vfõÈ"h©¥gŠ ÂZ·‹îºÏ>ò' i9`ÚœxG„�Dk‡œŒb¸�¬™›–�ß?�Ô„,L!!#9‘ùX4;­•éo[Ðß=@bó ¬‚—°ÂT‹¿E#¸ë¡Ñ4€Ë”ãõŸ³¨"®fú©l´k7•xþ™' ÝÞ»¾jd5°R¶­Å ”˜­D[C -�(—KгŸ€—A_£$S\CéÖ*0õó°ÔeNÝ–óÑ£´BÄÂù˜7ÑîáhŒGZ=cK(”Òãµ–d}m âNDÁÚÝ“ñŠ)c¤>x1®èª¯b…¬Š ˜%LY¥XJ`­›1sYÚØ»ø`–Ÿ Z×7ÐÙØ ­”*F¾Œ3‹ +‘N/TuAܹê.‰ Ù@âæ´³x­Ñägš¡5Ð�ÁŽVB�VFΘ=fÆZHË)¤wh3óx!’Œs ûbã9…ÄœlTÕ×ã¶•÷#mÇ&ö½Z¶^T‡)�!A<;ÆÐÉ™”(&êlm†U+ò¼Ó&èÎ�$¥ÔÃF»’±<½aK+èK=Hß\;‚æ”mž�Zú¨²“ñ™ß§?++0gÏ[€£æ’ÓËÐÒP�l‚¸F´ Ò10£RŸ¹~Úû”°ú7=—VA­í’„´.+V#¦Q>—Þ²Si_¤¦;Sm´P¹¨�•¨6¬óêga^:ÕŒ*3ëYY«MV‰�%ùÖŽþ°ý$ûÒ¿•1uAV‘”‡ÚM°WÃЊ }Uò$IßÌœ2(ú¨®U w'3¤³vÇÉ 8�hÑÃ<€¹‰.{’Ågú¶HŽ=‰Öf’y¼[°çx ÐævÖ㇨ÔT6’�lËŠSm’“ͱìÖh#RƒÖIU<:jôó-)…¶z'z;Ĺâ'Ñ‹-A[u1fMò…j@q ñÈ+®¢-�îFT$_é鱳ݖð7k‚6‰;O¾òMDaN„ç‹Å(¬M\?E¾H3|–±+Èc‡KÉ]ðbq ¯\£¤N˜“ìC-ú&*¢]¨oÕ<Žmüíèë��+‘V0Æ?uª‰ E;a]ôKo#@Öèû˜p*Ó#æ�Ø/k'Ÿ‘«Æ €uÄ:Ï‹ÒÄݬʠ$¢… ý ¡oã²Ôì™�:kM·G&¥»ÚUô¨SÂÆœFÏg÷íKfEÃi †düüå¡e4ú¶Æ×ïþ ½9'0ÉÅ?$Uâ&TëÑY]Í’x#ܲòtñ¢®dBüzn¥L‚Q’âJ´‚|Á4¢T#Y+Wªåæe2�l1bu ßzA€5†‰Ã¯7mF%3ê ÝÐFÆ‘åÛ®÷fei~UV±ÿFÖöh©ÍCe~ž4¨qðô¥Ÿp),ÖÈÊ&‹ŠÉþЉprv¥|H¡”À¿ÞŽ[å!­~¬d.+-Áþ=»éÝÀÇ-d¡•Ñ—A~õ%–�Å%š®�)Öô¶Ø ÏÖñ´¦:bN'Rß¿úô˜qu²�vCœ‚æ2Y©�ÓgH¾b]…)ôhµÏjÏZ†÷z˜ZZPèR�‰n'éýôÄSøçk¯aá­Ë$IÈÖè!æ§ð>‘A:¹‚rô …ü­¨Â7bq–§ÑËÝx=¾# ZÃ2â¹H :V3 Ûö\ïÉ@¬øÜÐ2ËWíØ~Ø3hØðï3RIÅÙ)ØñÙ›˜xÙNyû¢‚UXßxë Dóú'$¨‡7{ðG·ÒÊi–’ÎõÒZëÊé™ñ¡ìbû•œ�ˆêJJLŒ¤¦§¢†ƒL«Qƒé ­S¬bÞ¸*¦Ñm4À:ú}ñZE�R4'4ZÉfN< Wˆm�µôÁR@ô!"‹67'5”ší¦´lVy=å„llå2x¤„‘ í#  ¦Ðd°eƒcßoDJJ >ÿð_Ð!øiM)¥Ú²\úÄ�‡�>Úù¼˜òO­j†”ê)¦—N ¡;Êí��ªÑ^Ai©Rb¯æ¼V*éÛ¨E[Š2r°ãD2šJ2ÐÓR+É9U�­¤€§‹% êêàää ÝçÕLÔ”¡¶µ‹ž®Æ”^n‡º¶.ž|úÏÒ¾Öøß´þSÜy÷jd¦D2 ä9zåÆÒF~ü·lÙm’ Ó´iCç¼ ×ˆûC(¥ïÅ$7‚¥Kn[1>pvó¦Ì“;J sÙç¿0‘6tíICÿ��‚'Ÿxò¢V±P 9(g/t66D³Ä¬Yȯ®G›¹‚¬M¡ý Jô=Ð�yoº‰Œr=,šŠ'y˜^±õX83þ§7¡×Ê .$ñÐ~¢…†Ùd#+Ôzqÿš‡Ñih,É„Ÿ3j¸)Ô uE­X´p"ÔõèWÞ5k{4°£”LëÅ«â�ÐoýKœ/Úp¶7EjF:Jx�Óµp@Ǫ†zô&š6GWÀ*š«# éë)EÛºí;*=dÂçG@OšÉ™QÇ`áä,¿”=gÍÆ©û#дùú°Î„–• ÿ6†sïcÇîPA ƒrÉÝõ„•{ééKÉ+-‡Ÿ¾¯+û_œ«‚µ… #úV‘ ?¼ pu8Àzâð D221“ÖÖúœˆ�CI ^^ã#³ €õáß=ŒGzdø¦¤ç欒—Öœ¬z“[Ó›™U VöÒ£ü�ïwmbRFEeGyÖí£¦%ô9 oW `ë,O:C[ Y‡oëj<_ûòs¬v©…«eåJó¡s•®§W£ïç]'ÇÀAA!”Ó3—¬8Äã�öß{üü|hËb!M×j/‡�á¯Õ6mÛIHÍã˜ÕlÄn{ø;ÃÎPaTUÈݽAz¯$1¬”kêìEQüüÏÊy°ó™2âsWò…Ç%bŠ òÇh€Ul'�ý±äøÏ;$ô À*æ °u,€U¼'šˆ ‡WŒͽöÿE~@>¿GÇ«roÄ|¹ŠUžwµKê(+Q51´m9Þ'1¾AÊ€þ)_чIþRÞ—‹íŸXÇ£pwáõêp9þSÀÀÊQš.ô9;Z­ht7Á†ñWGÿÂÃÄ#9 8ðõ»TÉÉDå^C§bvh&/˜ŠÌ¤T”WTÃÕ×&ƒ=HNÊ`•kI«¬ð.ƒ%n µ<ÐÙC«”ù³P��Œ©w.CAÅ &sŒîjH¯TyÓË›$OÓþÖfX+:QÚÈêÖ©xï½wäwS=ÜzSìuTøb÷qÌ™=ƒ²«ÆˆÎ,$0ÍJ@ʉö3î Råá` OÆyñÌ¥)Xi:1<ê=³÷á;ÊëiiãîU+(«M@K›zÑJÚ�4¢¹µññ™°ê¤®µòJ*$ÏLQuØÆ¸~çÁSèáqIM8MP¬ôgž U“„U\O7¨&8%ˆqŽJVjR)ª�jJy¥…ÐPcüÛS‹Î~z:[¨Ê¥ ÆÃf†Zغï(|§ÀÕÕU"–ÖRñKßÈ–§~ˆ�=Ei[zɺÐ#á8xb0ŒõÔáäh‚µ›A�¹·„Ó)ñ¼0ab8Ø�VnÓ“ç§s©ò«ùœJP´æ1Õ×B­>z>‡x[âÎ{ÀéŒ\t²Š´�ö¢È£´˜SJE'Õt §o½ê:°e,ØG©_oO¼ùþgè¡?« c+_g,˜?…€¢ð„ÍDNJœ Ûšës|iÊܵý<`maD`Ø­¬ŠUµ´ÁÉ€À8¿—ú.«?Ûp‚RÍÚšˆ ò”ž¡)bʺ�ÅõùMAyc'JXÙêHb®-AánÊúúz{�D[‡ê¬8ô¨ë",8€@+‰Ý”–  éàh…V4jQÞ¹‡~½MÍ=ô¾ÍA½xMÛ+é�Zƒ`J¾+�͹L,¿)ñ§QDbð§·œï$—Š$¶–ì»!<Ì‘—šƒnŽ÷n_~ÊËë°lÉJþVÀÇÓ‰DÕ$¸ýÉ·û}ŒÕܦ´üéG/=ku4õáçjSÌy®þðÝx»Y‘(m‚Úf*`òØ“_ ôqƒ)]ˆÂ䤿×R™ÑWRpróòeÿ)7�FK¯€ «¸† Ÿê—voÂ-kž¸ÐOýš¿/ßkÄ£hyaî#üb‡ß¤~ü—ϾX/dýoXÅ~ŒY5™´š»ø6hëŒ Å‚7Úø�@ÕE™”ã#ØÂJ»É÷PModÒ¶¢$�òCƒÁxj©ÛQÖ-ùôiJµ©Ñô›&Õ¼8ëYx“�áÄd‰õ™�ÿÝ&LÑjF¯®1jÚ{¤Ä¶kHróÒ‘“�D&Ï,¸¢¬]�¼ôòh\ÆêõÚöìÚÁY<£’cãéook%Y<­Ò¤®mÀ›kœ° �uÿþ} u¹€«¥4™@þÏÇï0 O·¤eÊ©ïÿê+/’C#q&)7oÚ†ÿ¬ý wÞ¶pÜëøo\°žÜ ¬dÍϧ7[Ç“ª,Wâ7¥+ TðÐiì„Í]EX=Þçu,Z²ôº;o¿ú”Œ®æ --ìwrbâbOàÁGžÆ¬ùK‘’œŠ?þáiV1 ª§9(xê©ßcåÊ•ôwÈyâ½uÑL9�� @VD»ÂÚ;Ö”;2¢„‹ðÊè–¦jJt´_2ÈjD€âÀî}øè½÷°æ·JÇú¡[gàžGžÄ|V#¥‡ºŸa}éD°2–¿Lýx#¾î¾¸ÿ‚ YàÖ˜¨1÷Äâ÷Ï’Õ¼N�ä€ùÓœ p+pÊ+ _ñ½63/.¢Î¥·ä e!ƒ+Ú9QnÜ�$"á/|¡VFÐÆˆÌÊá ë¾Ý;ÐÖÚÊóülPöBë»ï§î[C*wÈ@kwwÚIXÊÉÎW½wç.죷æ¢[oÁ¡Ã© Pƒ0.¶uuq»ím—%},oÓˆc °þåŽùpõöÃéÈ£ô?!@ãè…dÊgr߈QB{°7SJÇÎD_lÙ‰ŽŠ*¸3!©KÙÞJ(é~=á”ÔI�;IÏÍ4äWÔ¢œ¬F`Ú„ÓÃ' V®>H!Ø\OÖ±•�fÌ›ƒê´Pr¤¦c�.5%«ï\X†k�’Ôƒô-5CQe´-�0›ÒëÉ J ‹kôU ‘ Œ½aš¬) §Blr)n[¶”I+,¿ã^4o[+^‹ìn[Î@§¹©Iôd)’Žûï|$IÎÄß�䘃”úr»*@«#¥�„?©8ïÇÓöìÛ/oèÒ‹È‘�«Ï¤ég>öÞ{ÿ'= {Ü–FY¤ÚºXQ®j¬ÖÕ¥‚‹Ç lkeU^øß'�›`ÍÊè}ãú§j@µeuq1x¼úz:(çT‡§ HÏʧäòTxç| Í�Õ Èø-CQ}<ì—‰ Wslüj-ª)9¦Y’‚y÷>Mu›<_?Þ‰nJG;Zš¢ˆß_‰ƒ}]0?½—ë ö�J‡Žå€z$‰+mwT¥ž†eŠëw}…ô·_ƺ8z®ÚÓËœV¢É«xÎK¥Á,¤I¼–Û'¿{u$íù̘-ÏBÆ—Ðvô+–†Þ?‹ Á0˜¯t},þó<¨¢S9£ 3'ó90bb«�cz¸^�í±?®&sß^šDÿ¸:`«ß'Žìáùb 3«¡kòK­€‡“8þذ~Yýæ8ºg'ÉÉL�µ VÙŽ °_8/7Ÿú1|}ø�¡™þÂÛw­£¼™9~øžÕcß}µ¶:x±âYØ.Üh—~,<ƒ¯)À*zjbA%NƒL0Æ}ýܧ€/}/~ÞO–J$‘ä•Û €U>¿ÜÇf’O”JTœ» �õOÏ>!‘¡¬H&»ÚíØ±c¾©BÖ÷×оڸSÚMkúþ�Õ>þlð´³¹rã‹x“ü)½I õÃ÷Þ–¬-X‚ÛïyXêBäæõ^~œ&ÏF}w?R °`Ñ2h˜9JŠ1ª†rVo±šÊÈb¬._µy.^�¬z»¾ï‡"‰.ª—FÇ}".•¡B)i¬|Àðƒ6ú³Ãß»Üçrÿä>Š×ª-_ò[Æ�Ux ÊóìèEoŒ€¼/m^ä..§�—_ÁzöQ�VqœE“û'ùñÒ'QÂØ.ú¾c÷ÒWÔÎDƒþœ}¬\tÁ΄Z8êu¡)-sn^Íqº? Z Ÿ™EµŸªÄœ$ðØGà'‹y¤>üíÝw 3Uc»*Ú„”` « SÃ&1åÌq›9-qʰäÎÛ%sý»�³A ib7s9¢w‡6V`Gü©$“¶ ¨Q�ÍN­T³ÑÆñ ¯ È\>Ó‘<©Ã1b šX•ªÁ?múš³ðÈÒÁ;"H¾%é‘þ¥šZZ°2¢Ìî}[ËYA‚Æ> ÆéNHJM¥­V?+›h�×�Ž&$þ°µjæP#y[Si gWw¨³‚0"І¦†¬F4ç¾×aÁ‚›�KÏ|æÉÛ(YkIòßG|ÂÂÞ웘Â8Õ‘¹5›¨gáƒ-=:µ©F20¨@söfF:Ìõ´Rùþp,>üðMÆÊ�ôamår:”%¦�,íû&N&ù<‰¥:PÏ 5 §'ŽFÈc•¨¡æÌ�ƒ×Ü‹´ä8”dÑW­ Tä£�€¬¥ˆí-‘ÏX]—rµ�µ¥ð`aʯýë¾9ÆÊßRî—5Áa-ø:[ÀWsºôgUº»ÁŽ9áOZ@¯T;Khªµ¢ ¸ƒ$t²êÒÇÎ’Û ¬.AÕ�¿ØC)J(³Â¸³¥šŒÝ€NÆÛT÷p†=¥�?úÏ¿¡ÞV˘° 5�]°0ÔáwÞCÝyðõòº=шŒ·ò¼Š&±Û/À“Þ¼õ¨ ˆïM¢öäÉ“Q[\ 7_/VÆÖHff&¬–µÕ@�» þñþ7h¬S1>±„»«3‰køó¬¨©Cq»&ê(wìêìLÐ8�š&p§%O{fÌm,qˆ9è÷ÛAuWÚ!%e ¢®�ŠR¶¨hêA5«‰§Lö—p;Æî-Ü׊&æ¥hïî€+Õ�ĹiÇï·†¿²©¬Òõðâ±Ó ª“:öÆfÑŸÙî¾ÈãwÔDbs; „¬ñ/æJ4ééZËžfD¶“ úô0 \�9þ€Uü®ÀÚñÖßKJj+�ýBÎüÎÅ{?gë#ÈÝÙÚHƒÈÕ5qmíþv}M7Ʋ:€ìÙ*ˆ4ò5J,mM’ÀŬC[ùïø?dµ`òþÀzy_ì‡/<Š�_z‰ÚìöôkŒF€�:4mÂÏZé–µ¯Òhš¬z&?ÿñ÷¿áëõ#;ý4>øèßxä‰g¤åµÉÖëŸúÞ|í-ܵÄ9¥ÍØvè—­A!eæÝõj 3ñõÖÈ¢tÀž¼Ö¼PþóõÐÄý J5Tó‡>yÊÙ}8«S?à JÄ^`ͧѵ)+YF7$ˆ›„hdugUˆ ª~@ ˜$šÔWSÿ<0(dÄGÓ“ŽÂÒÆeļs½k"%þvïø·P¢n¼m€ !#õVÜ÷Û'Q%ä"Hq¹9b*µ÷­Ç»Š+¾\Ô‰H|øæô×£¶½³Û_ÿX+LÏÈÂÊÞúùz#zíÿr¸k€®ÎÄ”ìii¢äCBèÿZ[UËâNxS6âø�DÜägMuJ Ó º.kÕ?˼µ¯¿ˆ�i³1oáb `�(¦Ôn]C5ä{衇#‡öáþß>J�ÈQª`U¬edZÛÚX9î~?xÿj¨i¨Ãš‰QáSØKPÕˆ‰uß}»�A¡�²ötwÑh>vô(¼ÔfØ_‹%ó§Ã’þ�¢ÝõðS˜6õÇ›å�'¥�Š�;Q-©M2ǵfÑŠ›»¨¦@Ÿ*~�Mì»f…ì’˜„´‘x-&ݰsÓxú<éø }?c‚©ç;vb]µ�Ü|ò¾NÖ¨PAY^ Ž_;tµ–梛džé oc€V$Ù%œŠ9ARJ;æÝ¼J:½”4êlã}yXà £KyàêxV±þ„¸x.ï€Ð™óF¬â½ØØ(zo:I“x=º:ƒC‘ј7kl¶«»EòýrM:$1Yò>±êî1‡ÉÆ.²m›ƒnAÓ×ïÃýî5¨Ê!˜ª Ï?y?z™LÉÝý9å®éiËó5Ýd2n}èY¸ë¦W½Ûgúƒd%ó ¦{™á½�?§ô”6ŠI–êbÕêà@&ûÚàöÅ¡¨hÖ¢ä˜=|ýü(Ť†9‹xŸН·o‡ýÄ-˜XíåŽ9�a¼kÓF²º�˜ŒÑB“‘#“}ÈÏ"›^M["5Œ® °¦PúÍ×^‘”Ežÿ-ügÍ„}èì3‡¬-å8 )0ˆ¸ƒ§ö£¥“Š"7¯¡ÕF1ÔÌ ¤:Í„FÛ’4œ¡Qvʤ(Cï»nAÖªšrÞ§o?³ã}⎮²x|¾e7+š±ú7OÀPK�ЉL5 Œª†T”éWÐû‰p³ñ8Õe 8ö>U¦¬H-çt J²àÆd„)#»¨Œ É±ï´KpxÏVœNÍÀŠ; S�çÈ:Þooh¹µÿùŒßŒ‚ 6÷Á+¸´ ¯ b¬2ÀzâÀi Fô ú%µú¬“8¶7eI¡oö�ößqÀz:%Îãˆqk¨v1Ÿc–kÑŠYY$ÚìÙ³¥Çÿö©i9ŒQY~�5�Dd[Ž®$ÈúèÝ‹ÏT²6ñ¾6%,œ €½t¨3’’p(*K–H¯UmmÙj2‰Ò²%‡’UV$Šéj¶7ßz]b‹ 3®ýë3ô€¤-‡ÝõGð’�TAÀ­`%>™¬+âÆŸ£‰¼€ì»*÷Q$úk¿ýR9T}«¬ö$Þ³61ír˜?G¿Ç»M¨60ç#ÇÝâû¯m¬,ríS6GG²ÿøÏÉDR1ª,§Œóa±‚ã-CU!rò‹�²w;–Ì „‰N?‚<Ü�AYÜÓIÉC�þ˜raGïÍò’4ÓâÅÆ¬éñE¸k•)í'áà¡£xëÕW`­G`“ÀjtZ;²Ô0iòTz{v£˜ö0z.~hî×…†>É´Ž «5ˆ½©”Åm¢åŒŽúM] 1Ø… Ž5XaiF‰Þ˜S hjc âÿ@7Æ!~øá@Š ËPLSêÍvëš 35 T»Ó§=Q• µh;SX�ƒ¢²Fhj¨ÑŽA‰ c¬Û´ T?R²hì$}±ËÊ `¬£Ž/¶1.UÓaldNßUS$$¤pMàïçEÛ-è�ø*”›jyoV' ‚¼F†Ì[2ÿ6{êTƤæÐMû…0Ez6}a#n£gg-¾ßµ^VjÌ2¾6¡äpYR2N1n¶D1=¹j›�CÒi‰ {øé+»¹¾ Êæ"1·’à­9<éçÚÝÄïî7Àç¾CAì1V[–R¶–ÇïX-x‚¦–Óª‘²´”áÕìëÄ_?Ø‹¦Ú ú€jÁÌÖ jì{ûédÜBÿÕ2Jïf1F×·q$˜œ o_bŒ©‹ËÚ0/ÜUŒñÍÃ-�˜HE+54uiPU°=�¼>õ¢K[�ÎVèTè1¶ŸÏk«-N�:ÅÏÓ¿TÏ ~Nô|ÕÓ!ÐÌc8Á\Q Í󯵱 ¶ÌÛ·´ôP�°³æLEuy7êèqûÔ#«‘Ç@MajU5”÷}’yöDDï=€RÊõ:ZÀSQcgÊñ¶v"„Õª6–&ô¬¤Ü²>²‹jàíjÂê夿–!#7µùùè:ú1²*{°}Ïxê�CI³E¥Õðaœ#bTQ¸“A�ÞšRÑó™3n©Sµ1·S½>ÚÞÍ]TÆÒE¹ŠòÊ$¦î`Ÿœ¬`¨ÑO0Üônjn…ý„ L ™H&»÷¤t°?Ú¨5.|DW-瘢*Õ¬�n¬Á“}�Å'Ѭ"XíìuÖÏ^\¿HÙ§P(�ZÛ•r¡ÃY ^å¢2IEÞ”O6y’ç‰kki7SÊ;¶»^%rƒâÚz½øƒË}ý¹G€¬?wg~©Ûß¿í+ØþY6,á/@HÄ Ü|ÿC”L³�•ËD(´Ïf¨u3q©Á“×ÈÈ€òjBœ:ó¼¨ï9KvÍBÊ'XK‡cÙ-‹ééUE†Ž‚78+,šÄ‹W#œ©g®Ý%¤ÛÔ°ù‡ã¨ceƒg`¾ß²—žSå8ÊçÒ[—³\ý4ž{éyhsðøKm¯<÷<Ü|óYÝ:ê\Óð–GÓð2en¥„Ÿ5Êb’[m}Ę\½ÈÚÔÜÌ‹rýî˜Dæ }4ÀZL´æŒM†äž“N°ð­PJÿ0-=ôR’Â’ŒïvÊåÙÒc5«òÀ:d±_<ûä˜àãsQ@ëÇŒ_þ#ýCÊ0}ê¼Ñ«¼¤×_ño´¶òZLI23zíhÐFx¼Úñ¸M!ÙÉÇÏ–†j@spøh+JçñWO’PºlΞ€ÿö25_‚�Î01·@*ôÉ“BpûêûàOÅÑ ì〶ÚbÊ¿çп5ˆêù°v @کè,«DeCŒy�´¶6D™­ýZ¬z£t[go‚(!4où½0rðBxÄL_g‘�ìÊk¯e—Z°xÑräRª81å4½NlÌë#Ì…•­=†¥÷>„é‹–’‰l�ýÛ>G1—Së«e éM&í$©�=�í¨,H…Ù9ÈV $„w_†×Šû¥å¯ô¿Þ{—›a¬Ô´?kÕ¡¡3Î °Š…|¼Î °Š÷µ´ô‚�¼œŒŠ’¤à;)óÔG6yæ®õPÚ¸B½§¹õˆ)h†QQÂ) ®˜8 »žû°˜<6ý0$[×ÅÃÏ<û,PË�®±¦{bqXMýô÷LÕÎön&9Êáå`ˆ¸”"˜S–W1ØŠu¾† YÂÙ 'PZ­âØ´&'Ó;(ØÏ‘‡Ä×$#Vr \ qÕCj ûNo¦R&d¶»i<ÿ˜û7¼ÕTWIÉÊÀ‰Áˆ;r9Gϼ�ä�ÛÍ«7Â-ÔŠ w@׎L|NZddë̆ +Zºx.yówP´w¸gšÁ÷УØY^ÅuõvÁþ¤²õÍ7þI‚A-6müò'»[o&<QJoZ4”WVÀÖÉ ždž‹fÈ ‚ú¥RÊ*€RVcµò¬Òlm‚â¢<°i)I˜:]z­d’Ë�UÔÿüëŸàΊù&~‡~¬n· tvgCî¸ýv„Î^x`•ŽÖEü#i%‰I(qß²Æmû’‰ciºˆµ]ÑEOÜG7O&(9 koC ÚJÓpôTî~ä™+z<®×• $~C)¼t(lý¯×.^‘~‰ Öñ¬bc¬b»VÍÙÙù‚k2¯½?<Œà€±¿£µë6²z*�ÊFc_Ÿ¯Õ¾Œg;�^çXÅç'SòJ¬£ûäîá9b–%¥\e€U¼ad`GÎÝ®6ÀZÎÜÑ�mßÂ'xÒbž ó]ºZ$Áë8ÒÝ-i|$Æ­ Ž›ÕX%u-[Õ[/Á¤¬$UÍÚZ©"ù—ÊÛ_ÊsÇ~qüÕÈ €Un8 ãØ )ñ/¿'Àª?uéJ4_¥«Ã;_œß_þç~.ªX\^Ú-<Å1±|åÁ}Vºá3”ù­ðzìð5s9.º-8 wVMꢩׄ猊qW%Y5©`TMÞäTÔ w°©ÙÌKšIêhn¬Æ´ÒÄÖ¯7AÇÝA(êÄ Ï¹ ït?N%!íð6üù±•8“† öJ˜ßc€{îf:§zág¨ oÚá‰ñJa\Ž'&á![%,]L�P\KéZm*'QÇÉj<Ÿ›ik¢ÎüV?¥wý|œžV˜l!¡VŸÖwË‘™Wg^UÕ̹rœQÓj sÖiid¡!‹ô˜w5Eú9Ƶóð…zM)&ÍYHyÜnTTÑg´¨”5ÅЧÒ$yºÐÕÓ…›©:¦³ºu@Û{÷Böѽ(¥ã Ä8v=•yTd`{¾&�_;ªòåÃÐÈ .NŽHbñÈüù7aãV‘cuw™@yávö»”@¶ ½¬–,*ÀBJ%;‘´¬ÅÜ©´2VpjbÍê;H8J‘$ÛB"±1AÍy³Ã1AÄìf¦ð¢äíÑ„tÂ>”¿ÕF�–"OFKÀ:›½9>¤úe¯ ¦™´óöFuèl= C¥†’Þz2¹s§8¡‹ ­7Çÿy-ëÔ ‘J•$'~/6(f_ 4:`Ūâ–nM¢‘%�Î<ÆyTŠRïj„Aëþ’ì¨Î·jåRx3¦;y’jSI$`ëÁ™E!½¬†ê&@íÀX4 R§œ°»›bŽm"˜ÛO๙¹Ô|Ø2N vÒa ×OcÔï ÕÝB•�Ý0auê¾CÑ(­eN˜ç ƒÇ¶µ½6ú¬ƒ6ÖCJ>ý�ÙŸö>^#Û(�mª€ c9Ï«´ŒlVI›Q˜2δҦl²•­´µ©ØM+"t(‹¼�^Ã-õE¬˜nB€¯ÏUxºYPƸY$çeUáÉ?½€•+nÇïÿ{~/ÆT ²�슑[(¶‘Ðwü#¸R-HÇ;÷üö `M:¼‘ç䊳.)âš(*Ò‡ÈòÛ¢¸e¶üâš<ŠjÚæ?4¦Æc¬b“M�jxîåWP\”3%æÝz/Yö½ôSÕ¢qµ uéY!—Éj¿AM&A&HÉìËàÂ䈓•;?MÚ&˜=gjÊ ¡×ׂ§Ÿÿ;’ãOšrùOô ôaaª%yl˜Ù_äž^?‹�°ž¯wfdÏ„Rîbç–oPQZŒJßÉMH²Èk[C´xs«UQ V€¬&£ý;¿ß&Éô§jnjbU¡+âbbðþ»“±ÄÊ””Ÿ 赟R]¬ªñ §\ÚtP'߆€›«“+Àzpû7˜4cîX›¾äyíc8;ÒØœÀýèvè»ÏXÕ�ç_| üCF¿}Å^ €õðá<ç¥u I&QÅ*Úæ�G9è²DTdÖüæwL+9@ªÄéÓñ¼Áhá©ÿýÊ›;qêÈv»[3YçËA],J…‰û©c¼ÑvbÖŒYgÈ9GßCOG ,=¤õ_ÍßÓs5;/‹oY6´*MÈ‚êà 53ÿï�/Kr‘‚ëÃ}ïÀæ¯6 tútüΗܵää¨uwKò e”·xûõ×IéË•÷<(­sËןáãwþA6ö²Ò˜À6·¾¨m5‘Ù%è¼bp]š›£QþÃçZ™`;‰ÀFf‰ °NžDps¥PæÊU´rŸP(nðתIkøÐ âZmóJmGj"P6»sÍ™�‘ ‰�T¢�l.‡óCOKU±`­ÇÕÍß~3"µyæyé3Âo÷Õ¿?Ww¿1�Vq�l$ÒÞú“ì¯�S5f"_�^Xá¨Î OA4ÝôDõ�:ñ(·*®Ë€r=cµpV\ €õ¯Ãÿxå<ñÄcü(y{ wøzä Vy^EY˜­ÂoeHó&†œ°ŠùÖ¬Ö;À*–¹mÅð¸mÛ&zI¦Ã›àÃèVS–F©�FVÒ[BFGHθ4g%çxšü Ïd1É„€Ç½Kn×­AÊ�Æ"têtúÂQ®65ùiène…q;ƒ!z­2@3¡¬Ÿ£âSsái¥ S•ìSU¬ ÿãýwx]º¶7±"9/=í�è¥Dm[[ %W¼ùö›Ø±áS˜èé3°É`àØ hÔX0gáÍèè飤'RX«ÔÖ"ÑL�?´†D¤¤—D´¥„’.¯·Ù”ÞцDŽz”Rn8?—A’.ÔéÁãàìUO'Ù””DRj“8ÕOzzd¨Æù dTfòÿèÑ}Xvûݨ¨UaÚ¼¼7}§š¼÷œ `ÇÚ6ŒÁE1]LË¡ô®9AÄóµ×^|-mdÂR `¼~˜ç[ßxÞûä�çq’U¨‹o½ß¼ñ2ôûšà7k>ö’Ô×O?ÔºšJôQžWé;½ÿ/xÌ>´u ŽàŽ;î’6QX^�×pDæ7£ÒÝ› qmLóâ¾XÓ¨ ^ަ”îCeM Ô:kѯA¦9ÇHmm (®mgÊIÕ_�èÇêà‚¢äøÎœƒ¼(JFS^8ØË�dÐST�¯’àyRrâwïÅ`M>ÃgJ»æ‹*W° µ–RžßÇ·~ƒù¡“¡cë,õY€¥GËôéƒÓŒI«î—Vé�aÿÌ5k0ÛG…ɦ0 ¿^Ë× {÷—÷´†c0Ñî¾÷I G¶©&0þØQ<øØ3<®†xýµàÎD�ðð•›Ǩº<æÍôj6a<3º•³ú¯šò]mLJÔÒÔ”’î†L&•åÃÉÕ�’c@)ŸÏ¢£h³nºYXÅsV·ZÚ¹ˆ§7ÚE�þŽùû‘ï„æÂ (M,ÑX–�Æò"¸Sàçlþ“ÂQ«8Vê´Û)mîc’Oþ¼·ÿ*/ž KNãOü*ŽÉu¶“ÕT{©â4dminÀ×›×á£�ÿAÉößS `è;,§/_Ç`öŽNWtOþ÷ÿÞ‡•9ý»YÉ#š<¶cJ™L{­ÀÃwpÓÖï±iÛÌ™9}øì3Ïãâð—¿¼€e´•ø¹Úà@;{r Ðù{3$1ß—915×U@IïrÑ4PZqì8GTˆÄ �c§kÕÄw/ª&Û +í€`¥ó;_\Ò¦Åz„¬ð•Ì ´FU°ï�¨¦y }ŽMŸyáG9ËŸ–�IÚâÑkë‘ŸÞ¸ŽžÉ¿7Af±v[4í]è-+öi¨‚ŒñÉ�ñ»ˆ×ÿz<Mšƒ¸å/o SÍÊZ ˜zÀÐ= Mé$»¢$+‹#&#*.¯¼ú,ÞýðܺhŽT�XQI¯ªF¤Q‰ÄK¿•¾§IhèÐfõ%ýVÝâÍç¬tlªáïN� �%§ ¦W ãi+H<îÅ�w­A}~<Ü'Í@ØôiT³ëC@Ð$IzXA är‚m,H4¦ß§ÒwÝy'I©¹Ö”€©ŠqkW�‚ª—±Ì%X#S�QKª˜­†ƒ… ·Ì‰%ì�ä|ë(»Xª Ö;ˆ|ªMm?x­Ü‡PQ…KéåØèt’–k1™*šzŒ1w«ºñû?@UW-ùÍN öƒ�¹ýSU”|ÎEy]'\Ýœ‘YTÎq<ñ *BeÓ.F½¹ÆšhïÕ¤Ý�9ãöÙD ke;NfV2^¬áþä…æSFÚo Am*"UÒ7¶˜•°íéîïé§L²Š=®´™  wm'Ž.--’öQ©Þ‹rúÅŠ<Ðò…á’?jVe'ýd“0ŸÀrbrŽÞö‘€m`¬“NäŒUÊê{áæLË ö)™èêWG×€Í�‡âÜB„‡ÐZÍ�ÄÞ‚rîW=«�³0@["gžgê”RfÂNæ&<çX @fAM̦Gª+¿#ªûL™4›¿?„…Ó'“¼m„“´Ç™éeˆâúåm$ÜS"¹²'OÅÂÃÕ¥UÈË+ÂDo'T2WmÅs±5?–Ú\VÃKWÿ&vôäfëX«|ÙºŸ2/s¼D–á¿{9�#/w5¥{û©(…¸†YdzMÑ9w8žå-ËÜY/ò›f!�$ƒ5úcn>”Dz´=ûœ¯k¨)MfÌŒ™3ByBÞ>+ËÉÚ ”šeoÅ�!?j3î}êï¬2qÂ=÷Þ gzW©kë1R�×ß] W[J:ø7,éWfÌ‹PrôAti™£3'�ÐÿÑÌÆž _ŽœLf 7eGyƒù¥¶îúJ÷rÿõǵ ¢‚áèá}”2tÀÆ�ôl#ø%'›ädûú¬Ä ´Vrð¥Aj–ã¨À%‡ë˜'0uú \«hv¬R)½ƒBžÏ˜•È73™kŠªÊrÌ�¿€:þu”ye%Ð,iyáit¥V±b°:9Ž<££Ž!Ôß>þ4,)Ç>m½²Î®¬–:vþ‰ V`½ºJmÄž<€ƒG¢�ŸW R 8Š` ´|Å �ÿæ±»¹ÅeLÐòæNf§¨ÒÜøÕWÐÑ1†5¿�¢»ÈjÑjꚘ´s§´çµaЛ¼“h¦L@ŠÉR+Ü\ݤùâŸAKMD«ï½ÎÎÎgæ_Ì“âÜ4úÔ¢$ñ Êj8ÈÅWVs™Söq)åT†CBÎÓ—l)2îttõ¡ä$7€Œ–~�ß“E5šXEÛͪYAW'Ï¡×ò2c=Šõ¶mùRÕM2¨ü¾lt­¬ºMÚÚr{�¬®d.nøbš¨À”žó¦~-›ØŸk ꎵoâ;½T¹d© ¸¬è¬��—ß4˜ûM:kß&<§(wnÃóMÚbŸ| æ/\5&À*ú-@Vw’ƒ†ûª €Õ•×L!éÞG°EOçÜéÃV±¾¨Ç%Ÿë‘×7ñžÜô˜œ0%óÕŠìô‚¬—ÚÀš”%¯Aü)LÒ¹ÔU�õ9 ‚Çbݸ²rõ(_ûÓïW€ÄãXÅúˆÞs*J%‚q‘@¿‘´ê:ùa;m¥ pè‹…Ô„X<üðÿà³ÏÖ!'·„ŠMd~j¢¿« ” êín#‘E}]-xpù<|›G0S~Nzô)q‡¹¥3A«2þ1'‘Ò #V&ö+ÔááDf§'sJ ”ëS²Z² j}H/Èg€ŸJµ�"棃A ‹‹¹ßjZd ³ÂÒ†<ºJ#$íÛŒü²tÌ ŸU;�›‚LdçäcÛÞCˆI:�@7Sëd5—ÂÜ„K `ÃÌå}[ñ³Ë;zqìX$¾Ú¼›¾D®`,¬ò±�‹‹…¨¸ž2%Lž5âñbVñáu¬´o¨­‚W@0¾ÝðÎôÌ4JTÊ+¯§GïÒ«%LsÞ“Çjy±; khM‚ÍÛ: jö€®øàéá�ÔÈ혹d5ê(aõŸo@4=pg7çc{I=æN àQ XuhÇ1SEg7Ê2Y¥<ÑÎ$;›Z`Ç= z3eF퇪´ªJ<³òB› ôŽnu²®-ÐÇ@Ûœã›âò’Í(¨Åßc ÁsK²�Š>Ø“Yl`d‹)áóHL{zI•d”;øùc <UQ)¨7à-…ÕH=”½ê%ó»�I[=d0÷ À±£‡èEi*ýŽ’’’è­T…’Œ¼ýÚ«˜ÔQ…›_ûüÌ!ËÏIÅ–ÍbÉ�–ŽÎgæ�xb`OC¥Û1cõ¸\ã{ʈ~\Ä‹M»7 =7~žgW4Y àùG_Õác^ásm`ÄäÂ�ÕÓ —Ü>`›¯¬¬ÄFVG?J æER�ŽíßIYÕ]˜8e*,œüñÚK#>›7J§ñ»0:#·®M¯*; „ª�˜†·2Þ{Œ¸ýmüG §¥uÙ$ —×Ë~&ˆÚª™lb~eF<ºškaç7eü+ü….ùͺ%‚…åŒa�Ü+ÉÞû’Èôkh\½°^¿ßôg¼îÚ�\´˜ "£[\B >Y÷1"f…cõÊßœy»…õ¢BêJƒ¬5"æÍ=³‘|@›L¤í=©Ò Ÿ©”c�3 ^Æ“è>CÌÞÏàºä‚kñó™ÀØÛª’4^X�DòüðVQQIF8¶›<|ö5}®Ph�°ŠœÚó)ZhcaOOm¡r&€Vc ;4¨YÁÕƒs€¬â³õÉÆACgl V,#7+^ì÷3Ögää¿�†¼T€UôI^�ˆ!¯Dû ´ÊK÷�Qe•ª¢BÕiëQÊYÎþQië§-a°D+|¦±\áO3¯“gâø B¹ø�‰N–>nÛ²aÈGV¡PˆßÝбü©Ó‹HZÌ,)Á©�Ÿ oçzhž$QU —,c¥ž&Ö¯]‹x’¿Ýò‚}ð=Õï~èQhªÊáéîLÒ\/Uø8Î&Ñ1!¿^>�xüñÇéC޼âl˜Ö%¡L˃]Íô2øÿì]|eÞ~Ò7½÷^I'¤AB/RD@š  bÃvv==ïìÞ�]ÏvØ *]z5…„$„ôÞ{ï½ç{Þ‰BHB@P¼�÷÷›ìfgvvfvvæ}ÿO£[J(ž�5äÓ5°’Y—5P¡J¶¨®>:ð3k‚‹v‚ý}�ߢйsfb"ûŠá÷À‘ŠO…*N©Dô¢RP(¸óâÂIºdlXq9–Þ²õô·ÉgÔXò‰£$|zP�šÏúj/<='A™ê\EFé•PT edM‚'Ç:ÚÇv`Š �ZFTºÖ#¯$=´"ž:m6 Û2X1KU‰ñrmê:pµÖÄÞ¼ZŒÏ@IDATá b‚ùn³‘ZÆÜZ’ˆ}¼=Q@¢o^^ÔiûšBOÝ�¶Ç¬Çë°ïª¨¨ŽYS'#3·=ô‰ä…Œ<+Âô«~x7Êy"OÅ�Pèw:2õ’ÑEÔ0½2%.“µ6{Ž—Û‘C5o �*òÓàçfg S Jâ©B5ÂÌ{t¶4Ò½©å<ž†$+k1ç3Ÿ" QT’©b×áD^ó±ÂH57æÛоy!�òÔœ"®·Íu� šš�Š]² }cÖDŒ‘HWKÖ+˜?«C�]­^yÿ3„³NžO°;pŠ:$A‡"z™»[ZÓD«VèrŒçîdƒŠªj*9«ÛSIl74¹=tž²!\VṎ(3d&žæv— Mƒ¾†•À2fŸ¦£²¡•cH3hÐV˜ùºŒ‰iæ9'ÆÂ‚PœŸ�ã‘ aÞ ™« H¼®1ƒ:$é : Þ�8‚€és˜Ï]‡Ø¸DdçT 8È�å¹xõƒo1í¦ÛiüœHrdCZÌÇ~ø>œ-ÍñÌûK‡¬Šö¨yTðšüÎÍ� 0ë1†�ù8¥%£‚¬:Þ#ÍŸzÝb `óêà9ñ|ÄÕc"ûFÒ4Ò:Äk`Uçt)M®*±è!o�=õÔ´ ð·ç^Á õLqµ‡Ì-²´PÑò)EË–™1è�üæÌE  É©žŒ¼°Ý0wð€6ëÖìOîß»=Œ\¨VÐ@C�2ìIöÓêkA=µÆFzPaA@ËêÉö «£b;jz:acé ™û>�PëiFð$g¨ÑîÉÍà =í´®ŽG=mñ xë!»[Ÿ8Ýö:Ôvõ²dŠÒ�t{a­ÖJ’‘TuÌ$€U­zÐ÷er°]Šy÷ÿC¾Û$Dšb]bFX—<û¤ðóE‘vÊvg_¼ÊžÉÁÕ¿S•jAëo‹_�ÓÑ6ótLŽ;"ÙO q±œ´$‘üàæé‰Ûï¼kp;§ ’E›pê)*,`A¦˜¿5oœŠÅ�kï@.ÕÎâ;¼P;|xšhçlMf»h ‡‘y„¹°zëÿÛù½$°ˆIÃÌ *Tá+ÓO¬¢X;�°f¥ÆJó4Æ(ÔK \¥ÞyýE’%^¸Ï¬'S=@ n¢ã�ŒÀÂxAÖM½‰M¿…¥7®E ÉʘP¡{ÃÐfH+<’aT9ïZ»vþè# î9¢  ux³¥Cˆ lkWŸ½.‹etxM¸X€5‚™z6¸_x ÚĘa ÐÛ'@J¾>2ë§ÿ5t‘ßüÜÚÙ—}Ksº)�KÎmÅ$5—¦3‡Ðþ<�ÕÒ’D®?`Û\ºÊT©ŠI´|ê«éöâB„4´õ%pU¬¢ pu,€U,ÓC’›¦¥‹x:f`Ý€…îø,'ÅØZži*lh‡�ÅÿÃ_sF™y9Ö!öMŒEåÁ`µxâE©†!ÆÆ<=÷sÎY¹ë–X]vü2Êþq/Ÿ±P–ˆëBE&¶Bž+Wùkr…Ùð±¸øÿÍ�?fÄŠ;žüj² ‚FViÓ½® •EÅHÝK’¾-›ªpörÄ’$µÖ2 �g4�7V,šŒ®zaOgÂ7(Á𠜉ªÌHŽ3¡[Uˆçßz›@Á~:ΩÖ ½½wݶ� Ò\æQv3.ĪmÉ0ñ»¦6Š´½n¢s‘)û.»“øYE‚mߟVÙçE·!�Î*tÁQ4³'`j þöÓ³ HÚì¦ oôm¬PU�+õ{TÕ”9¦"ÀUß@°´…ŠW3®»­${Š~QO#N1kôï�0¾‹ŠÅÆy‰˜e:4‘˜_Ë1‹ ­V•r¼h�gŸy†V¾´—Ujƒ¾£‹DÐUìáºHÚõqw†�kÔŒPTÐÀñ‡óg›IÔÕA? âºjý´ ®füZ 9¦Lˆ‹�‹=Õ•6öü æšò<,¤ºWŒ={)¦ÃlÚFúíÚy˜u_+º1µ!¿²¥%U0ÔPä5ŸäD+'=~ý$gô÷ÖI–¾¶º Tg¦bóÑSÈÏHƒ»«;N ƒcóï_@+\4Òþø‰ÐºRAEÆ<Ù^dô6ÊŠ,dæüTÕ6Ð6Z‹û‘5.R^GÛâšz˜i)á»¶“èì‚\öý³sRáGU«¿ ¼¬ ;Ó톆4‰=^H�K¢jÓ†ª\D'eÀÛÕš i;…0¦¨áqÉ# Yœ[ oK[d×µ±<É(De*ù)VZºâ.ƽ#°\ˆëo¸žVÐõ܆j”szø hѾ˜Å}ÔÑöW‘�æööP£z>svm8ŽWU'QÙÄy<^ZíÙp°±F}O^.£Æó*==›ŠQ%¶0£=srF] `¨£'º§eæÃÖÖ‚îIfh¢B·¬´»(<+¤ÊPÆŒT:‰jÓõ³— 餬 ô4W#Ð˘ }c†zq:!›À.�}X×0Ð#.ÀóCDÊ4• ÊííëéGG7ñOG:·Õ££8GÂN!KÕë¹»>Å›·Ð!pñðA2kò¥¹éðá5u¤&lwÅo~h÷Þ[6I/_ 6ô}—ú|øõåR×sí}tÍy‘íÚ�ÿ�é™\ÀÚEÆP Zu½³È ßÙ´ç³’>\�Œ›Žª<äÄE2xYËW܈îæ2NåHJ)Âóô¿åŽ ,x:Ò^5·¬_Å‚§ ^ÿûd“áñ¿þƒ7¯8è´A—,•-;3s©ñÑQœNbᲕÌä(nŒo¯ž%¸:^€Ul51M©P&ž{y1oŽ…^1 %ê¾ýï“Á†iOáÍOjdÖˆs:–ö,XÙHëñ}Û�Ÿ•i~hH8­Òê�Ÿþ ¾d6Š£›³Ó¾?±ÀT*=\Ü&bów ,Ï- *7Ý´õÕ%hc¯9íjjj¥u-X0Oz¼ÜŽ¿ýô顯Î"²P<‹ƒJÅô KVöùÝÖF2½+ëëϾ¦>­¨²Pn®EuC5l�“œ!)ÚTØsè`Þ»ð¦eGsK«ÔÙé"³êɧŸ¡Â².Ìú2¥%äž];¸š,د`5¦¢|jp;3Ö—õð [c¡ knž·7àoº �´ÖÓeAør6;/ü㑇qçý÷",6�VÆd|`´u£�¸-6ô–dÙ7�ûÑ[¿þ~é8wÐqöÂVT LÄdO`W¡­jyÙ0êî‘Tª£1¨nÂùžbÝb¯ÉÏ~ÂÅ?€âP»S±ñš`s6nÛÒy¹Ô¿…¿ÿ;€6RÇëb¶Dþ=�÷=žÞ~ÌÓûóYéµ4·"�9Žfæç«j¨0ìb>‹ç¤±ÉFZ´%öññ%°`0*À*Ž¡"Õêæ¼ˆÇñ´c9Z[Z$W…ñ,±ËˆïW%h¦ž\q¬N6êÞ­[xŒ™_Ãè}  ;01h&ÜÝŠ}»wáïÿ~[>| 6N§•èòÕ·axeì/¸Ðª�Ö°¼U4ªÀÎ} �] À xÿ?ïÁÆŒ6¡<&´Sö—HHj-,$±v,œ‹Gž{jT-''Äáµ÷>£-T6t´Õ8ˆõÁú ÷@ÏÄ?}ÿ-6Þ÷önÛ†ÒÂbi08ã:?F%øáÆå·p�l…I¾¾xøñQSÛ†…+ÖcýúuœÖ³0¥AâÎÀõwÓëoà»ÄdL[¾¡{¶ÂoÚ´R! Å,MN™ÉñÈjÉÁ°¥¥ÕeX‡_Ö¶NÃ_÷ÿ#)Xss³hmT+MCòÛZ›©øì¢rõ,qa(À*>Ô‚ö[nt=X²d  ¥Uå5ÕÈѳ�Uç}vžÈÊŠC ��,é(r𕘠³ü,¨¥œ�Nn,–n�¶¿¹³‡™GŽð#@.©ÒûÕÌAâ<2³ËÑ̘M®»‚€iýc• ôÐÞÖŽ®ÚÞ+ÑQÄ”…€>f´¶°€ÀÁüüë°í³�P¦ï�ëo»—vOö0è̃’–1ê©�í§=t~U ó™ÑÙ­ˆRÖ­�BÃʶ&Á—ç…ÈI?ùŸ'¡Kg‰LÚGMò¹tà®èó— ç;ëªYÅaÂ<år’–®^)}/£ýÙüŧ8°o òòP‚ۊÕ7áÓÿ¼ˆ„´Ä“Ýî;i@õšvÒéqÑXvóíç­J¬¢é2>cúŒÙÐ's;+={øA *qÃÒßS���#ûðóžíp¶æûØZ!6Q}.YÍlèØCœœ47¸‚ÿ±'%ùé()H‡±¹íEï™’š6Ôt,ÑÍbO'mÖE1i¬–M�Õ�ýß?+È4mA#;F†ìƒïÓdm$ÀÚÙROÿ9cíú9óü§R¥BÇŽNíû{wmƒš�•DF8¾wžyè.ØZcÂäëÎyßïñOÌé<û�g±üFV0/±mÝ·õ•…Ì‹£{’Ö¹*¾è¸x̺q&ûùŠ®×ÚŸãpu8Àš‘”LÒ™)voý†6“fÈ/-GYy³LÍ.y§yò)¬]µjÌ÷ KikÚ|Ž=°ècÑKmÁ�\�Æ\ÑEÎ `ݼy3Ä´páÂÁµýëµ7ðüó/ÁÃ#yf ¾>üIrb"îY+n¾í¶á³®øÿ\Ua¤‚‚ê@ìI\l(‰cÆÈZBç C+»‹ÞAèñ4i,4C"$�gùÂÕóõMM*ÛZ[©þœ1 ¤Ï®Ü2ç�xn=‘I�¸*mkÐ@íÁp͆_‰çn‹4îå±$p16²xòÅs¸ þû6L›$j2òæ²ý˜Ddõ˜áHN^ˆ@kWeœÞ¿K�…„ÇâÁÛ)ò07D$ûaÝíMÌ 5†ëG…t–±7Õg„K6}·Ÿ*GFóô÷`øðÓH‹ß�÷?Ù�ò „~õAÊ^h;ú!»ÇõÅÙt#JÅ4cedcŠ­*ÔéPóí‰il¹bå ¸¹OF|z1Îäõ «‚«¾3�} =µ•T(#""mJ„Öj³™¡Z‹RŽ'-8V¯+'\\E×¢<|ðÅR_Ñ™¶¯mýа¡c‹«³cGq:. z£ 2oJj‰ÀMt$´£ÂU·ß¾fv.t„tãxg"ë»:¬á¦¢€Àª¦:Õ†$gºzøACÏŽøn÷qÖ}c$—,c]5:²èñži‰ÊÂ,´÷t°fëŒÃ'b¡ÂckcnÁ±'Hé&"r›öÑrRÕØ…l5ûv8K§ š(tRlCÁç^ôЩId‚vR1™ËØk#’•ëææh"©G�V>ôü»ߨpÜmGeg94 ,–ÃwÚ\”—Ö¡­•ŸMœ ŸB-' 4×VàØ‰ÖIµ96§ ˜€­mäõµéD‹¹�¾úõ5…Ø»}72i¬Á1¸×´UˆŽ=/ß@ÖRÍ4w1-YˆØ!0Q'ºÏ±¸#ÝsŠê©Â4ÃŒ;>€JWN…†Á„ßÅ�°ÌŸâmÓ æüÆ(¯¤¤¤àƒ>àM�j¯ŸwÁ/`df¿_°ŠæèàDZ)2šÈ¢ÓånyZêämÞüÁ�µT‰ Kh²³põ�˜8úàRl‹¸Y‹�ÇÀM{ä­ÊF¡Ž4 šÞØæë/“µµ6z•–gõͰêÔáú¡këóÇZfèòãy.÷uï¾Ú¨ÑÕQÙÞÒ¢'¶_4ºö–uªN™®+I‚õYþöËœÓ7âþ±“ÜØXËëÝå/Hô;ÿÇZ °@ïpûr÷+µ;7¬z� |¨‘BYÁŽ´Þ°ŒëKù\qŽŒµïªjªç¬âsDá9¿¸!¡!a|Îûè‡ï½“ʸRÚ÷œ7o´FX·mû�ì`ÏsÞæ@µ¥°­¿’møïÑ’LÎ}T­Z»R1æ ÿYó`íÀ{ƒ=}Ap+°�y0Ì'/=~·l¸ î —"—ài)Ù­5ML6Á78}d Ï_°åÉXÅÇQ«—Þt3¼ü§âùÇE.PNYÅ5Q +±´z2〱™Àn؉_ðó¾Zã‘E†êú;62K,'öîÀ¼E‹ñîï#+5¯¼üsìµ0ŸþÇÿò0fÏå€p2AYf˜Z3#]Ó¦K;;»óeõ}«°Øwæ=õ‹Yö’=ªWÅ$š®òõ?[ë¦�߆>Y´çÞÛÈîV%À:d•ï_i AOæÈôvµàÕ§62÷ü%2Áë¨h,„IVŒ§hNI€©« Ìýo@¯Ž N�à÷» ;¶~ oSx½ð_xL�;˜sMën¿ÉÓÐÄ"Ccuì­hÕUG±"Ú=ZIE‚z²© 8XîaN¯›ŠŽî$ ù ¿¿zj¼w–#³´�*ÓÅÙÌX iÇôwèô—!óXÒ:U™õd Mæ½Úšk¢‚’'úÈÆÖ ëüDr;ó„30™´«Ï<ý$¿\{LZ¹�6P-˜t"…üøŒôhºxÃU°Ê·Û?h ¯²gÇNRÒÉÜw“Ï|ôñõ“÷ñ÷$Öˆ›Øe_ÔÊ‘93i ïØ¶ö|ÝÕc€T(^ËJK$˜št^_«‘ãÙ<þÕ�Etmy�/Sdge¢®¶½õE,™Ã'`:TºYhPé «`9À*Ö-ÚÿÀÊb%ƒ­ðÕ·pïš0³– ðKX¥ôëŸ>—Ät!�ÕÂÎZºÏ)°¯øgmÖYg-Z!¬b$«Õ„‹Þ°¦$% 7=™„‚<nfK kèî¯p÷Æû‘TP‡Æ¼(’|¬s‡ÈÛo½ŽààiÃ_>ïÿ¨ìJèët• ÷R*üÉ; #–.,ÌŒÎ[×ðrID1`A¹›}‚œ¢Dõ„8·þõÞk8ƒ›è|%oi©ñT¡ÄãŽ[ïÂdÞ¯µ?ïØÃ~Ûþõ*�œº¨bâµ� ÁO{vC[K®Œâ¸Ô6À*úÕÂýHŒ«Ä˜PL¢Ð+¦¡öÀJ$¼_ €u´ýña_]äŠih[²d1Ic‹‡¾tÞsS¾Çs"û¤ÃÞ{Þ‚Wà²öÖ¢¯¥Š$Œ9°ôè£�ÁÍÕ ^û+ó´ àB€ðJµ±ÆHC?S|ïíÅù²†Œt½�¢þ桳ÿÐç„ëo%PUØUË�Gñ(?7»C0œ”=|£åã¢ñ“áïÿ­ÿË�¨DÜ‘ .°X¡¤°‘½ÙÀÿ¯ž÷â»P(-’l‚#‚Q9YJ5¡£´\%]xvû5¼Y«úžÑY)ñÌÇì…=%¶F&ðpµÃÔÙ v‚Ö°úðõñDRQT˜RZTQƒi“½Y•àeÐ'@�[HU 1îûë³H(hšõ· ¥\‰iÙ!O"-#•wEh¢FEØ›UŠ® Âg%¨e‡âþ˜µ«cÇ:slLdÁÍZ$BöLŒ‹…¶!³b]-ÐKë^³ ¾˜Æq¦·­§,ž÷±dÖüÔ`df‚2*EÊËÕJ"�\I’™™›YáºëR ÚAum �shÞÒÇþ•Úû”F� ûœÎÔ’ü§JEeuk�ÿ6ÑÅ…ù§ÝÈg¿µ¥®ÇÃ:<5V@› §k³ÍTezÓ©�*ÝÆ®~:é1#™àd?#XÚ:Û¨bêMsœI¦�°² A=*†OEÃR—JÌzZéÒ^2«Šá:¬AôuµQ-YÁzp6튕q&%—ãQxózT]׌ʺø#—ªÞy$°8|ë8úiç.„3�ÔÞÚœO%aÎìòi.p%hhC`;ŠûcocÆlÓ2D–ö²¶mEÛ\GX´×ÃÆ‡c^ŽŸ§xº`*ëýæNvøæ‡ŸÐNÑ�›¾Žj*/;qÝüt¬ª•¢AÜ­qôdf-¹ 2--fÔ¦A“ªâ.b>øüõþûð2Bˆß‰«³%²òŠ©‚î#ÉZšZ<å:k2±}3¶|Ýá†b„27I[C =*Úd¡TÐ+¾f †vs±‘<ÕS32qãªu—uoß}ýŸ’5ãXöŒâ»ÚÐÖXA¯t½Kúü=XˆiÚ´ v‡~€®>o±áÌE`@°@·‹ÇÌÉÎ�ÐN1%> ŸüY,Êì€TBÆ ƒ‹|é•^QVkvŒ�tŠO>þ�yÙ prž€»î„ª æð&éö«rG¬¾´h­˜Ä\Z.NŸ5“¹s-´£âÍ‘iNÎ÷`º½—òüdøQI{ã²y¸gã_$ëðõÀŽÅn+²‰ê+ò`K€PýW ›áË^îÿ ©@‰ "ÆËg2­›Ýa£¯Ž**\ÌX½÷‘aA�;d¼ [ª#5�ö Ú*”h¸³£ŽVÞûر1£"Õš¾ý;~>ÄBS¤2´t)ÙiìÕvHy òmª`ýjóçìBb\É笪ª’^úyÇض{xà/Ãa}5 m´$S:„ýû÷ãú…Ó%éíw>¤=H3âieè{Þû/õ*ÊÚØ�x÷¿Ÿ#1%• ¡.œ�µ fáN–•Öàjo˜éIU5 zT%‰¼‚ñ6qÀ�Þš 2q0ó¡Zf4w‘©áMcƒ³ã]ÿÅ.'¶GØet=ÐØom;²ŠÎ†P° €U E¬ú+kN…ë �ç~RrR¤²ÚØ^|qîÜ5]}ÿÉÁí«oËÎß"°ŠÜ•mT¸ �µŒ�{mm ‰™,'„„ž†�Ý�áüµœûŠÈ¤•[\‹Ç±Àösß ØÛÙ�°ŠåÌ,,˜‰B¥:§ñ´w^{“°N*ÌíÏY<5-ERVŠŽùÝŒM-àæíÏûšíÙ†JZäh¼ñ”?~wcË—Ê´£CaTZ]˜˜_¢çßÒ(å‹ï$6ö íwr9lÀ^·õ88¨!€ŽiÁ3éâ0û⦂ƒ' ”—aÁ�7aÆìµQ=Õý)±a»<F{:Qðd™Ô»É–ŽC=ó^fL�2k!ê,„báÒµ,(&Ѹw<üC‹XfÂòz!ò'¯†ÖX_I«þ<”…ï‡13g/¥ 媸iÝ:¼i ÅÄë¹óxR#Hf‡„œ:$~ð(š¿z ½�‹¥T33]4ji�ü¤‚ÔØü|øäSIþžMÔ$†î‡ü±�ÂÖX %m ãͧÂÑÖ)Àm±�J§B yÓÌbÖÆâ7GgX™Ø�Öåë¥9ȪÅ:�)]ÅcnJ Ž9‚Ÿ¾þ/–-œŠ9s®ƒ–­; èr�—™È¨8HS ‹!¬¨¼,&Ùyÿ±“È)n‚É“ååhl¥R²¥ —ߌZ+ * Öº�06ÔC|È ¨õ³GÀÉgÉZ*ÿ¼Q_˜SÞS š{¨̧õkÚË”h×jÃÚ�‚0W6Óm‘v³$»+Y›Ô‡—›…$jb]˖ćT*’Eß¿“ÊË“ipÇMŒè$ååD!ƒ£a|(Î(á¸ÑTj>uçÍã��QÀ~¥ Š ñÙg[°döÞuàìê� *þ² —•œ+Ì'ð �þV¬Z0�àZ·µ…ÊY:û0µKC‡°1··¡ ÍïvÑ-’*W¿ëP_ÅhŒ¤8éõ¼’üŒuµ`­T¯…÷Se›HB´=Tº0“çOOšétÒì¬Age:˜Žô4dêhhíeÿ‚ٵ駡¥Ðƒ"ŽËô´•¡@‚a¯évNT%7@Mì?•SñÊãÐÒÃú³âbÎ�„mg{c¸“0��VŒðˆX:ŽX"Ÿ™²=júȰnÞÞO©6Zk€› &! fXíììH2öÅŒI.tu(ãù¢ =uhÛ’<\źEëûNð²7dîª"*›ZÑÁó:!« óíøk2ÂuTâZÙ9HQl&¬õˆÈ Ežš�ut�q¢Å¶Œä7Ä1V�çm³hëh�ÜP[Yk‰el…Ǹüaª1Ò†ƒ/g[h;LÂì•7#ãà7(d�ĺ“îsUÅH;~@ÊœmVÑÀ‰Ÿw¢©0O¼ñÿ-&/XãßùZÅ­þÍM~}ûÍ+ú°‚k ëeú’Ësâ({?kåN[Ú7^~é9ù¨Ï�'›Îx�öwîH=ñ=΄쀷o06}ö Õ ÆdM„§� MÝdñðË æüé˜h© $D ´nèïnÅŽÍocîâµô\oBdt,>ýr‹zŸ ‹„¶º"͆¾z/j¢Ùù9­ªª}šå6l|òÚ Tc¢»¼ý§ñ»R!Û…^÷ Û6`á©�¾ÿ�´WÏœDè[TërÀ¥ oD†ó¹àÕåÞ5BÅ$š‰‰™ÁÌ•oK€’ß,¼n>û*•¨¬é`nO!ÇŠX8 ÕÞÙ˜5kŽù Aׯá;ióËþ�—»­bg°:MÄOïødu÷+ë"*!�ìß´³X£ÙQÌ~+•WÆÖèÉH�! !JN“˜±®OÛàVÚ57,Pf^­šTÛØ_�BécÈîÖDnq3x¯gù8iÌû1e(ð÷EVhæê’¬¡Ü‡ør\¿x üYlÍÛ{¢ôXøæhOÇ�Ÿ†Hÿ�ô禛ÖJ1ÖÖV#ÍþS¾6ÀúìsÏ£ªºŠ„@¢~æ×�Õ¸úÅÇ3O·JR³¶Ñ¦U……Žá«|Â’Õ€€N ‰„ææp¦ºjJðTùì·ïý gšZ»¡Jµe#³;CB"hlYg5iûüko!#)«îø‹”ß)"¨â�­l5˜OÝÞÞ‡<’t•””ÑÚTÉlPÊ9öì'¨ÛÁ¾‘ŒnuÕZuÔUz2 *ZºÌ8íBc7»m½íÜþ&ØÐZ6;¿žÙ° TÁÖH5üɾ^â´Dïí%hUÖFZ\ >=8Ó=D�ŸgKu雾¦Ó#MŠŠ)Þ!¹ÔÝgø6NÞö�Ì£· Ù–N\o&•ÇI$²NBvq=îŸ1 0ýþS8tuÀ¶£]]QXÁë-û¾a{a– »¼ é\´ÊKaAЯyéÒë¨ç˜±ƒB³mTË2ƒÖœ.óI¾BÒX“”êc«…›ÖÝ�i´ ž>É5�z0¦u°UèAX1bîŸ?ì@I‚?Àj/x¨xfR ËØ—¬ÌzÉY¡†ãõeT‡—¢W]AmX#â“2°dÕÌp�Au{3ÏÇiP#uÀÑÅ^rTÒ×7§àªÙ¹ˆJÍÆ®ƒ'0wÖ4 ÐöôVÅ&¶jCn�{r]$'Ñ&_É9ðáñ2s™‰» õ¥´[ÖA7k º¦hha6.ÉûŽÞAq)FãÈÖD�Šng9Såž6‰ÌDSu4Õ± ÑKl î–òèHhhh†~ž³i¬C'fç"�¤ñºævÌ›B°ßÎ BcHô5aÖq'\­ôyTƒù�âuxù¹gˆ‡Áíîæfƪ ³�JWc_”kØaý�ë�ß§Õê4”µ)bé’Eð›s=´²°6©}÷éÒ÷÷gø#®u‚”#®cBÜ ¿wü¶ý�ÚÆk ëo<ò™iÌ•Jb±†¿ÒÙù"h!PÛ®„ùsçÀÂÔ®>APâ�/2â$ç­àð¨—Á÷Pã pãm«¨)Ec�|&X¢¶ žjɧŒ=Ä‹·š´…6ppr�ž†r’cÈ àE„‚5^$Šòó ãÅÞÔÒ–Š„>Ú¸2À¼Jšº°wp‚¥�3mÎ-TÿÆÝ–ÞîBÛ“¡íõ·ÞEDd•.gb¾otCÖŽ–:ô°X«¬ª>ôíxîåYœ6±@mÄ ú¥´0æÌµ6ÖÇ�zzú,VL�V±®o¾Ý‚‚‚عyãç�“¸yé"T—aá¼DfZ �G±ÿx´d±ñøóoà�G§‚PµÍ¼q8¹ãÝ�¿aqø4³± Ȃߦ7ÿNP¶ú&vصg–/½ó—­—@âKÙþ¡ï‰� C?Ç‚--*‹Ìø}{¹y`*;&šºFˆ= ïIþ´­¢uEí:&ÍFdØ!2pª°ýÓ7q÷£gaS•>ý%Ì+¸82w …£ )3xC5BóqÓS…%ž?œ-õøžO“,“d`këLpRŸ†s‹å“|Ư*­««cåDæ9¸=ìÒs®ÊVñÂäÉ“}:†ÅZ;Xó·)V®^*À*Ö)V+gv憵SÌ Øõ­rº¤OÆì`_‚ÐY´í(�,®mm¬ø¹–Ì�`f€·ÓÜ~ØÆ÷¯øˆA‚| %n¨Wjà5¾-:){û ’e¦¼0˜uêvl߆7ßy�Šôÿôiغùÿ¿Z»s%U™Ö¼>XŸÿàW„‚u‚‹5Ï«¯¥Á¤GÝ_yó€UÚDvØ­íl©J4>o‹Å [ÉÚF&Þ;´‰‚�üÜúúÐçâœéœºÌxž·ÔWÃvóUÕ­üí�{ÍÏû�eìúÎnqd;ómêë8àñ‚yà´Áâ„|8‘6Ws3 nß@àL ƱŸ¾€™Ò* ¾õÁ§ðŸ<�„­^:@œF豃´®1‘ú1-m�Èã ÎÓÛ€¨®´ÚcÇŽ#–Ù¨ªÌ§ùø½7Æq`Tšß+QV;ú.[½ž–ú8y¿‚"výø%ï ãàïzøO›+­§(�ŠZæ³L¢5º A1:IŒÕÄ÷±ßïž/ßACM%ì\½ÇZõEÍ«ˆ AÎö¯áDÅBÍéP(éÀ(xv…Ÿ†û#Z–6tÏ(£¥ôù×û‹ú ‹XX¬fj<_I|ˆò~ô5¢ÛÔ ™EEˆ?Žäü|ZO9Ð¥›ìhOò–Uea…>ñ2“R°ÿ—ðA%«§—7Ý%lÑ«¨B²A=|­˜ÉJft_GY×½Ì÷f_…‘,˜ô×–£][ º†º(a¡ ŽQÑǺuÝr;9ÁÅÁ ÕºÖÐc¬¬8u-(on#ý> ³fÌ$“Ù˜‘ÛÙ¬€_ʻȠw`F¦úXó\�}Έ~÷~èÒÔjέx÷Ý÷EuPДs–))!رzÕ9¯]‰:È‚VféÑúÉÜO¢ ´—§3‹´ ˆZ‚¬p!{Þ¡jV¡<êa¡DƒE�ÑšWÅ$ZYäf<_Æj³‚gÿï¬cíø%Ì‹��¥Ë‹º4�d=ïcx5%xnÆéJ´þ²ýͼëï:Õµõ�“#�ƒ¾ãO°ŠI•c°–Ä¡z.ï½ÿ_lþäcdP)8}ÖÀ}f¼Ÿ3Òr"S¬·o¼¹÷>ÉÒ^¬ùeeHȤí�×§_ü»D’ÜøàFøN¸æ×ô¼ÊaÉ�k0;(`T�5æL´d¹çÐ~DÄFc*-";hg7”@3Òv�öÚ+/< ¡xu÷8«úmÙk¯_™#°ƒŽZbš슚‚ÖB4In*d±wôß©�‰JªŠð›ä'mTYÁ ’‘/'È:toE?Jô§¨%Ö¿Ü÷îÚxçÐEÆý\•¹Ár€Uþ¦‹X{z»%PE¼WئŠ6Ù/‘‘‘T6àÉ'Ÿ”^û#þŒgL!€Õ»©F¾Ò«Øÿi+VŽ`•/á$Àtñ]_Î&j "Cu(V¨;åÊT1ö�+¤Å²`ã:ñ(ŸÄÿblg4lÛ$°•Dñº8WÅ4�çëÐ&>ëBc¡Ë_Êó�ñFŸtüÄ1”ƒ¤b»å€ª’•¬mebžXÅç8n?&Û>°}@©K y¼ϵ–­…2Ç **”„²Õ–¤Q ³ Y é$¢Þ ½¦¦ªŒ¯>ûlæ­‚£9tLm¨ê«ç‘5bÿ]‹y–it#òGô�]˜ä¨:;è’�À:¢&켂¡¬¥‰-Ÿ}�î\ƒ½»wâ‡Ï_CÄñÃÈÍ)DLb3ŒeÍìû[`òºûððŠ ØûíÆÛ9¡¨¤JÑÅÓžŠÁf‚›Ì’¤�BKIA“}¡ Ó†kº•]¬I¶t£ž"‰Ü²"º¥ �ÎH2=ÌXº‚â‰Fœ9“ÀÚ¯!Ê›ØÇ' §Her=36SRRiƒÈñ£(´-˜MI%ÝÚ)z¨­ªCWŸ"e¿-„ä§EejfZªtML�Ù ÇIsP˜Ï±©«#g´ ♣š¤ZáÀÔËãV™Wgsew46(µÆ{Ÿ|˺|?bÓÊ'pn6(©jÁ‰ã¹¬Õߊ”¼bÆõQàÔÔ„©�“ƒfŽsžL%@ÜÎíoCGcí…;¡Keîõ‰±²-Å•Øß®}Z˶’ÔÚÐs.YÕ"Žs •¾KñÇ‘B*õÅk<5 woü .À'ê­­Ò$Î1ù$V±L-uü~ )ÀÒgd ˜DSç±_²3TÊpUÝ» �Ï>Ž®Ÿ�Ó>¸ •Õð 9m‚È‹é<¹¸­ y¬íª~¹ F-�°X³ÄÔ˜‘ºA­³ÓaJ‚n'ÝŽò›ZGbK°²†±1]ÈH+BÐæúÖc�¡I×�VÞ§ÊùRNË^gOdädÁ…VÁí h [Vg[=j{dX6Ýfй¨ì1&I †?q…ÐGen4š‹PßÔÕ´ö*@¡µ ñ´­®ã½)ŸµPMJK=´yž4A_¥m´{>•O[]óy#Ñ£ÂN�3 Î{ô¡ ÊØÀ‡Vfêü °ÆØÒNÊíi*Í��1¡`ÝÈÐrÑUΑß|ý=o.è£5œ°�°ãg´«cçÁ£è¥¬¾£• ‘‚*œ8g'v88ßÝwò`nèàF\¡'ÏK…P뱋û`m8È*VÏË̸֥ý—P¯¾y½ô™CÿX°ðPVPˆuënÁG/<Ž ·oàtãT©4Ñd®sP|aÅŒÜÛî¸ M´*cs*Ž— dMe£”–7­\†ãìÄÄý²ŸEA زñŸO·ÀÞÕg`ML<ƒ·ÞxI²ýÛ‘LFÚ@~ÝÙ­:ŸB+‹‘Z?oÿ{w|‹ŒÜ ‚˜S% US�¹eœÌ9�ÏâÍB€Ñ“Y «h•EÈ<ó f,X‹9‹–²3S‡JÚ…xó¼¸MFý÷É*ݼé}ƒR-ç,$�Õ�=duuÒ*””qt¨0;N†­ß~NÅK�a}æ”@fl/u ‹Éþr&h,ŠK“}챘öÙßmz�w%YvÚdµÃŠÅ …þ.hô´Œ=ˆ;55¸~ér¤1;Ì—6ÓþõêsTnTӺГ9u¹üZ™}Õ=p~¦À�#cËÅÅEZeogýس÷.à@IDATzðé7[É@Ÿ„gž{–¬½RL¦õ×åhìòušé¨áXè/8Ȭ¼Ù“= ¢Øm=#øxXÓZc &M™‡‰_ Ìí˜ÿ[Á"´½ü­ã~ƒ‘–mß6¶Ÿ ë‚®â_™ìĉNÿÕr3™„j"»q³çDsu÷‚óä…°r88¿Ðzþlóå x¯«_ÿïU½ù�ó…½Óh¹¿ªj´Ôç4R“ÄÀ]°›5žyËn‡ÓŠÕ#->øš|À/ÇC‹ ⸉ó] äŒä¡óW0ä‰Iªdá_­k6¯…1´’Ÿ<}>Üýxþ; n½Ø·â€5œøÄà_ Ö|'rš",2N#üt"2#S´šš‹˜ 3Á ETX-\º÷î$Ù$–ƒw[$�t’˜’¿À)tSø õ•ÅH Á̅ד…ìˆ�¿âà•ƒywfî»ížA€U¬[(€ÈÀuãïÕ�Y±ò&r#Å$šö…’|þåxô™zÝeXÅ6=ýÏ—¡5u>Ú“�ÿö3¨ìèG»°<†úzÊ´˜¶@ÓæçpªY™°Ës/ϱxå_¯ ^Ç ú P¤cÉAk šzûQÛÕ‡ÞÈh$YO� dß@æç˜‘$¸á±ñ8›(õ×D¶�¼iYaëgï#jÿN4P¹Zz` tÈæÞøÈ?¥Œòò²,Ú¦fCQ�ê:’%ªY|hnnäÝDÊýŠ’…An*@¹Š-¬Rs¨lU„9�5´Ñêê��Æo( (šOW‘5«V°‹õwñÜÙû5V¯sa~Ͼwàž�‘�Ïï„Ãõàì1´XYY1ÔJ¾ÉÒãpÐõœ™—éŸÐƒ{ ÕG0� õXíý÷?Àû|ˆ•+VŒµØ¸æES%mea#-Ûß[†5ë6`õªµT +1/9ƒ®7Epb±j´¶aã*tvwâúE˰gç÷°r„©�Ûh‹K¯üúËÈe¦R~V&P‰§u…~£cnÄÿèÌI¾þR¿t,€õtô)ü¼ó'Œb )ÀÕKXÓ8®ŠcZ¯�Ùêò@O4(h™Ž¹Ø•žÙÀ{MSu1æ­‡WЮ_Díðƒ•X8M…„‡ÒÊzäæçâѧž¥µ ûy¤LiÁ1þ´³^Éz+t=4€Y7܆ÍÇ+|½õÞ“hw8‘6ƒÍÒ$@Ö{ÿý½÷t1®å¿/—©³G Ç.ï<ÿÔ¨ë¶Ã‡‘�‹]{÷àƒ¯·bÑÌ™˜9%ˆcF†Ð¡`>ÕqNŽN°¶²Æmw.§õ]1­ˆ§îAEk'ZHŒÒbAÙwJ ü|}é"äËý6“¦Á¯=ù]�€pcZµ|9:©”RVՀމ#6û1‹ÔU˜à|ö;t£ÀšŸÇø£pEô™®À:ôsÅsA¤¹T€uøº.æÿöÊT�Ú Æã$$$²˜O{GìW,Y» v¼¿­ÆMKÀZ�csí�{ßŬÿ·.+ÆbÌ ÆÈͧB®šqòÅî—\hÌs±ëÇF¬öO<×(Åq¢ÎPþö«ƒ«ÊMAšc:9ñvp&ŸÈ•�bl2’rjàú޳ÏÅç ËÔ¡ïÙ¹—÷™¨�ˆã'öEdÄ …ªWõ–u<þ]ë÷63{u€X¬4]fõî—çâýò}ú\€«r€Ulq;óS…ˆ"æÝ¢]“y¦$©�ȳ«Ã þV8“ÈquO#µÔÑÙD…ž¹-RÓ³QW\ŒiTLî‹-AIa)Jš:à¿ò„æZ /k7¬ 5)„ˆÆ×Û~B ûsG�‡f{6ú*rqÇ*[ÔáJ%i2#½ìõZq$1 ny€–Äý¬õS-Z�** Y`„“'3MéJçædÊz¤>�r¡ka'9uõöð¨0“•.F'#’pèà>Ô3ꣴª.Øv Žü‚oº6£„©nWü§ÏA2#ïÒ““Q¯¨!¹#5“ÄhÇÜReŽ'TiÑ«eÂh<‚ño¼ñ.ZkÊsrEH½R¤›•Šæê�t!lDFQ‰ä¨“œš�”ät4Sqšƒ²ê8Z›¡’JK%Ö5´´PÈqn|r6ëÒngôc׉0Š£D¤†!-qË¡Èzàz+(ÑÉ©”×ñï¾ùTinÔV€¿çh2F%—l¦•3,Hx|{F ¬N �¾P�<†é½Ì¸eÍQÞjµu­n\#SxñI˜ÔVKãrù¼¡�¦ýýI­ #vº„‚U¬#5Qûè Eë�½ƒ³e¹´øÍNü_þD— cÑDm@¥·á$·äЉ&€c|ySe4Œ‘«  Ë¡�ùöv(fn©1XF�TÒ¶PŒD…²ŒÙ¸Qiyp±6@=Çš¯½÷ÎDA[} ÚºQ\Ý-‚¤÷Üû8ø÷nSáÜׯ$9Yõ´ÖÒ�ÄœWÌšL›_MEŽ,¢ZTÝTk+ôR•JP߈ãjSTQ©ÝHZr~ݯªx®YÓæXËWÞDj2ÁUUœH*¥­µ ÚÊÝXÊ>T9ÝœôéøÓ U~·¦’¸MØ[·ö«!ŽJoK5”W6HêYUMé¼ïëb¿Šuþˆ=;é¸ÔͼZ}:˜´ )63—ÒÖšÍ�}*È£›b?ï_íŒK¼qݽˆ§{faìI4ÐNzÉÆç0ùñ¼ÚEmXĸuµ´H6çWK]ø�:nâ#€çâ·_¦ ÁÈNz×@ÖßøíLpsÇÔé3ÏY‹Y�hÙccn$)I£ÉI>ú)œý`ÍÍ·Àˆvy*›†¶²UõÔXxrð@? û˜m%¬Èzhë&2Ðõi}y íT�*‘³ãæ` Ú²í>x ¹u¸ëú™ŒTœˆ°è8æ†:âï¾cgÝÆdnü^M€«XŶpu8À*^¿‹BY(X“’jš‰�’Z=™TÇ�ñB\Š·?ú"·êdD$䙞¢ ޵7¯EnA –¯Z… Ž ÉÌɦš¸§*¡Ç�à�÷ÿÄ!ÎÄÇ¡¸¢³gÁ/x’²hÅAÛ[ë%@e%oüä‰T@‰vüè hõ¢zRÞ–­¹~>^ç­yÉØþÅ»()*eÈz,=ñ»¥m’¿GþØØØ€·ß~Ë—Ÿ-ØÙSyݲÛ‹‡{ZÊJ,[1|ýß/#@ù©4ݽs+sV«PQYÂŽL ]mi µ¡TæfefÐÎC6†ÊHËÌe±‚Ì¥¬h¨1‡­¼0§NÁ�7ßAÖP¢Â"`¢Jîš1Umü-MŸsÒi‹6uÚ¬s6yÿþ½ÈÎ&kŠ€¸¼¥¤$ãƒÞcvÅ<ÞPMhÜIÀ­üm•ÐBdj?ºŸ7å›Vñ^ÚÀ�IJÆ^ª›—.\„Ë–ÿf€uëÇoIç„ɪÃ&ÚNW¦Â‚9SšÊ]Ðd1ÚŒ¬Fo?:Ò©òø”°°y¶@¯ª&»$€U웸Y {›Þþ~)÷ttÚ"fIàËh7i�«ü�›ÿ_j5,&‘yidr.™EØxËÇÞ…¡LW㾋óM JåËKÙFñ^1i¸353u]mUh*��bóÀ¹, CmN‹»å»Ïk�”i›š66g¤ÉÄ€^œórðõÏÖ™4ä@A¬c5±OòïA±¿4 vµhš¦’ÕÓ¿ø ]$Ê,b~j;í‰lìà7e*~dA¹8?Ÿ®#Ü<°{ï~’Ũâuè_¯¼Ì¬–jZÄêòû‘á?|} l=ý¸ûÞG¤ë®ô!CþLŸ9—yr#އ,uu?-/Ž¢kˆ:&&D€aâq’‹4pœä7Cf‰»«uBíÛ·Ñ1ëfÔœ‰�þ¿0Ÿft¥àåÞÛY –Âc¢?~xêèÓåá?ù¦{š¢™Ö¼mŒAx…lvE榆ŸŒÀ�<�ï6‰Ãÿ}‹y>·1I ?}ÃïÑȜĽ�~ÔÌ7âÀw[0}ÙjÐj+$·+V¯Eßé))°ÔS„ÝD/TÐ~L°’­Ì éè¢��{÷âõ7ßÄW_Ef{#zÔÐVšŽR%#T“¥¬ÊÜ'ï®bÔÆ²¦iC[eöÏŒñèc�3{I¾^Ð!9±´�ÙT¼´Æ‡@-å̲�ÃÉ6ú~³$pu8Àz¹�çhë›G«ë¹Ëo� üŒÕÉòRÖ°°0lÜx7n½õ6iõ`]¿ñ<|ï3Òÿ Šzì«NÇ©Èh¤ÉœoÊuw�¸);ü–…(oö׬§ffG »Ê‘Z.íØbÃ�1—Ù"ZE]ƒÄ¾°¸À¾Ž´®ÿµ×’“âYä!ÑÍÔü‚»–M$CÃßv½++-A�µÑ@V±ééÌ>$�õbZØÉh’jêàN»µ±šW¯$ÀZAÒ °£ÖbÁs¬&£íŸ¹ƒçà"'9n‹g.ÖæÏ7áÀ¡£TÑK¹ä$ÎΚ·PŠ!îz3øæ1ž¨(¯AЇ�¶ßݩЈ�‰‚í‡Ì¿Žï¦J…ß¿(ÐÔí¯,¾Ú˜›£¶³ž^ü]écÿÁpL°0f®ª‘´ÌÐ?Q¿ìÙӧ¸ïÐe¶Þ?ž}Ó§LÁÚÆv iY¨¨®…ŸŸ¬�<0íSWÂÅÖ–Öü¹0·ýu¼Ã§* �bº÷î{8®´¸°=Ðàó„ÄÔ³mO DÑ‚§Ì`ó…‚U°ŠÿÿlmÿNþw~‚)3–Ž{ÓU´è~Åé¾'þÊLZm‚>¸Ž êƒÀ’§�ÐgmÏk”ª. KçÖÔÆý!¿aA1þýfæ ðj"$�w·D¡XŒ/÷_1®Pž%}1âsÄq�?É2WD¾´üj­kxÓ­[¤yB¿&–c5Ñä ÒÅl£üóÅãXí†%KY󳑦±–ÏUøú¸Ã.`­yU`®¥Œ’êzZñR‘Ú\ƒÔŒDhö3'6·€nd¦HN+ QYFP®9¹y$ÙöÀ›ªtkM*^ëqë팢5q]z+²)JÒâøÁö]¥P4s$q¨Ÿ´ ìc¢¡$·ÞÍq¥š:î¹ç.*O«ymðA+U£ÕBü…È3iˆŠA3QÊh�œ™�¿¹ÚáÚé©ã¯¯o]�ƒ]òsø2âÿÑÖ‘–úšXçXë•“Ä{*I°Ójk—~�ÝÙ2KŠŒjôÍ0sÃ=Ø—|v´~Ö£ƒG³w½ébUUÖ蕟Aýt/I1fp6è‡Éï 2U:,z¿8N<ÂûöBܞϘ—ÚKöGD-XIUšŠÝTžRÌÏÑfŸÇÛLÕ�}$%k!‘™ª“¼ÝàakÂåÛÐÞÓ'�ãn¬Û�N¦åtL™ /ÎCZÖcÑ‚©°4ÓÃô@W¼ûÞg(®" ËZPs[/Úø›i¨m”òe¹PAÉwÕEUaÅx±~eÌž(Ùm wÅ*ªu›»{ào¡ŠÌÔªr+0k:­¯ëPGn_mj»™¿MR[]� ':Hx+ƒ2ÅpÚ†.P)ʆ®¾öüó䥰?ÎîlRVÏa¸N9?ú}]mÏÅuK^3ú³ÕĮıõAáª×Ö(G:&×@Ö+qä]§*­„.`ê<2Š%åªÈŽ)–Eo½Žš¢Lú“עެ¢_| �¿ð:bBö ·øômý°ióvÔkiª#�vB´Y´µ4ÄäYKabí‚ø¨CPîkGwu#´ ¦%�ŽÃGßþˆ¥ËWJ[ J»à?CËàÍì‹MÿÁ4YEë u¡ò(*¦ß²?G�ÄK/>Cïø.²dº%Pú �ÇÈÚ²gè÷¡}ðÂó¯À‹ g­R’Sîe 8/‹j“` غiõJæôÃßÝžŠVCøÌ]ŠÚêBÜÿà“dm™â™§Ÿ„›ï\èòù÷?í%èLUë¯ k{eÜ©ÔùpÓ'˜Æ¢”W‡¬bß6Þqó9«xí›þ�´>�¿?û^{ëñ2ÂBó¯m� ¤ÿKKKſʜ—Épf÷,_v¼�%´qÜóýçÌè{\“×®» g¢ðÎûIE‚e;Ÿy¨VÖ¶8thý¼®;•È<#†7°8Ú$!)Á™v&%¼)µ·µ¡ ¬Žžýù(,(€:;•öÎ R'^ÇŒ†æâº83»X�óWѲ3³f.À�ßoa¡#œÅÂI0g1c°ñxPÜÐðl!ã­7þIæ“ 3êL Cî—�_h©…m»vâ–›Óšr.sÈ´ ܘ£ª¢9,*[RĬÌN�•°®ÿ7>I9I›okŒ²vÒ²CL:´þÈLOFeu Œ 4™;щ’ ‚lfTÌ�]»˜Í“ß<Å{J71x�ëÅ|ÖµeG?UTV·òw ©9²’³�çD[kÓy «Ä¦Ž Wè쇮܂I lÇ3 }k.}Nqf šhU®ûçïíßõ9  V0»^VLòcRG›Ø¶}ÛÑ•™Æò'd]­­ƒ•qÎ�T<ÇT ¦GêP]úÑúãßùì]|eö=é/½÷�BH#��ÐB¡÷*¢XëßÞpÕµëºkokÅ^@AEQ@”ž! � ¤÷Þ{ýŸ;qbˆ ÄÝý~yyïÍ›òͼy3ß½çžsä˜TSŠ~('_ÊÞ�Ñ”s¦¼ÔŒiÓy �°q÷œ^� VÙþãéG”Šc;²Ë èÍêçæ€Í;·b�›+eõÿ†ÃL"Z²˜gñu‹© Í”×_MïF¿?g/Pê˜ÀÐ70‡ ™™Ú]5°9ÉUM°`ey#e‚“Y¡Û�œ*úŽÐ^ró­¼é^ Þ ¼ÚÔ†j²‘�bP9%±X¼TjáÌd‹‚˜Èß¼e#äwáÍïé`R ôµtXÐdRòËa�)åàæ®¬Ü;„IªRX2‰²ø�Çͱ\ê�ØšëÒF!½ìQÞ¥7mÔ‰‡‹ÏÄöâpÊAÜzëÜN}å¾G+àíÜS~»yôqmÌ9N�XæNY‰~„²Q{ã�Óÿ·­¬n^÷)aQˆ>܈÷¼×Üÿª7}Ь�;‘w ‘ŸlSúV˜–ˆ:J›Z÷ |HÎë'w/¿ï”ë¹l0''G†z7®;@« °ªëDÐsÌñ(²§çU�:ù„ç#dÝíÞþ ƱHíKŽ¡œ´ºr¼&~ɵ*žV,†°âwXèH£7Õ_#ÖhŸNwz"å݊ȾvôìŸm&k2åăºÁµþÖ[F6{#ïïÏ?{Dzް¶sîo¶ÓšæÌ*ý“¬²’å÷ßKÀœ¬Í3Z\í °&ÅïÅâipÃíwŸVßúÎTš¶_™¤odÚ÷£ß§3), «%yϤ ñòbØ”q\;& óB4õcÃÇ¢$û ;�Îd�ê¼°JSAV—ÁdødW “’‡ÃB‚(ÇnñÍ»gù½¸~é2e^õß3¯¼�ÆŽND2ÆêwÀºpÉudë/Pf}ò©‡�[Q®\£Í,mÈX 7²òÕöÕ¿’¡á×Ðáp7Ö`•dµf‘SÙ:–” 4 {DXÕåþ÷|é�M?ofÁq1BxýTÛ�·^C à&wÇðÑq{�ÇĸëI®Çê²—ú³7-[¬y^ÊãTíÀÑÃpø-n�Õ¡<›W­€ç7_aúÕWÃ9d4ýlÿ=œ-ÀªŽå¥?jLpª¾õý¼{9ʤ2NV—'[Å|ÇÂ0ß¾«ùÓÞK¢XØ—ÝRµgß …Õ«¨ªÇS„„Å)¬Vµ‰T®Åâ¥dw~t•è…�·0R@Èê�QšŽ_Rf/Sý1ã, ®Xj/ÇVæ? UÝÞÉžsi—qÕUKN6K¿ŸÉ¹#º¢Ê$MöW¼d[ãv×TÇìbIU7îS煉ÞÓú{ýêKÏcëËÏ"8n{ŽÕò'-^xå9ÑS®w.¿ ©‡Òp×�w¡˜*o¼ÑÁnê-˜6> vºµ0pñFôÞø†Lƨ°1øð�—™KËű‚ ”SÊ·ËÒé÷P!ÈÓík±ïX9¦Í›‡�.|¼ú;Ì ¦oj‰Zia×^\�ü<+dkÛàůÀ±ÌZøqDzsÅ[°ÓnFG�T2ð› ÜXäc„¬ÃT6ò„2JýV’ hgÞN›¯tH;v,CÜimeh@Fnvnß {GcLºñ Œ#óµ” ìe‹¯ÂªÈÅïÙ†l²\X¨Ûib �N;üGM¦¼ïÆ’uÌÝÙ*žÖ£"¦À†"É ±øæ«uøiÝzر=žTãÉd®,1ñ rxžû|ö£y舤X“Ü1„ç}íD:§/¡Ÿê˜¿`.•›bPTZƒ›¯¿^‘@v;.’?¢S²0÷²ÅÜv²(ì舅]u9! •J¿^{8É›|’®ÌD!p€&ë<“õ©«QX MMVw�C¾½m‹iC£F—ñèØqpìE¼õó6fÆ$´‰Ò¼T¦œ½3æÛ~Rä°ýï}S_~ÍNÃàÂï¶5q/ªh{˜DoÞ0•ŠùÂóHznP|S›:Z ˶ó¼pg|§!3Y s£FSM) qñÑh×µA -ã$BQ%ýzÑÌs=œ*�yøfÃÚi˜Ñ�;Ü܈¡~>d@7£Šl^ÏæfŒ(ϯ©õ¦iª)#îAØæÖthïСŒŸªd††!åH–R PQÝïÎ2Jëcãô¼%ìùŽEzðv5Sü]KªZ0zòH¤e“½]Õ‰s¥eãA8˜Pž8½ûSŽ2�ݬ` 6C)ÜÙ +6{ql¸ãË•há™8/%®ÉtçXpÊ’eêáÿßó_ìÈõ\ò€½‹iúîÂ_dm.‰¦™°A.£¾ý¿¤ß'Ò£èΛ¯Â�·Þ£¬ÒÙ7^xš- 8xä(iôô€ Åêŵæc?iæ­LV ¾Dz˱üî;�uDÄDe?�̬™°îXîûy=YvXùÖ{ôÐ2„%«hµuõ0nêÌKú˜ô×¹ò2ÊMq!ÒžÒÊsÐN?O�©m³Ÿõ´ &Žõuu!Œ™6gHûfÝ:,ºÐÅj+}ÊLœ…Ysf)žº ñûáãáŒ]k|õÑ;˜:ce˜‡P Ï_qÀŸ^oˆìÔè6Sz ò8åk‚ÙÓ¿Èð0`-¦$n}}-· lÛ¶5d¢ Èz²ÖPSJ–Ð^üÓB@4l%q˜ô¿ƒìµmùé+²–z@Vgý¬21·V¡ýßm7ÃÞLödÕ„�é>¯Ôõ�ÍsMU%“ò1�RÄV–˜¿hl,ÍpÕ’«{XÃIôúòõè X�"VÝB›l§L²gªÊKÑÊÁN=MÈÝLÚq˜RÁ'øãÐŽJeB„>o:вå9CÃ"�Hï_ÿሠ[$˜7¯‡º?mÙ„ð@/…AàÕ‹�!àjo€õ ÀMhþ¸áKÞhëÂ~ñük­‡† ëèݱ~=•…«ßêëÙ’1a^=&RŒÏæ8½y…3\üÃÀ´¡ úf݉ßÀá'¬›?{Vî0¤‡�Ù;°JiéL™<�’g¨oé¤%YüƒÏ¦;§µŒÜ<ä¡°Üø|6-‘ß½#®ÿµÓ?°–’U&òéjÏÛßXøF,žéËb•ù仲[þ„Feiªò¸ç;(UûtªçÔ�uïs³•°r5óØØÿvÞjôXqXÅÁ})ü)㤺$ÅGo…“FƒÚ¸h%Àñ^÷‹"A,2Ä•¿É;IßEúI*‘¥IÕ·ür\•×}䇕™þ¢ÿj  Jsuõ`RÞkW®a5¨²Y­+IúIS¦ÁÍ�Fo„ ¡\ãk1„ŽfUh Œáž»d¡‹ü¼YI͆Fߌ2Ã>Š¿Ïî˜ÝXxÙÑ£sênW442¡_x]½€rp(5ެ¦5£÷�µ©†�CRì>²{™8¨.ƒµO¨â£}ê5Ÿùo°�ooL4F‡Gô,üýq½ù½8¾4‹^�.ØkN)üÌã(euíƒï~Œ‚š´5U±²øøƒQ˜ËàÓÍÇ)Ítè`"’7~�@r##0ù«››Žæ‚lÄ5·bÒ¢«P²zlSöâ¥�œíLaam+w$ËÁš_…°°‘?.J9¿ F¯eR¤œUÆm<M¥ELø\�žx-…9ö÷f?Í \˜1�c‡#ÇÑP[/z"'f硆ã?&Y¼f]…½Ç³q”¿Ëñ÷>¡ìﱸ!Ÿ1³zöÿ?å…k°¾½âe¼ý>™ÆsNþ›Š��VÆ�}÷_Ø|ë¾[‹8*àèëëàÊ+®é;ËÞ ¸*�Þ­� o‹2L)7ýŸÞL­ì �þš0XO°Ê29¹9|äâvJ£YËq¤BÊÉÚÙ0Q{¯oÁÂËÎ`í½lï׎Œ/$‘gµUç ?ƒŒ\7uÒ€Ï …°ô»¢Ì€3öú@ÀÕ3XÕÅãÖ½ 2”ÊkZpÓ÷QE§UÅy°t¸€@]ödÏ®~ýÓ.<ºâ{TvèÖ4LjâÆk¯@òA2~¨”#ìâ+™,vúͯøùþ…-GrqçuK0‰ýµ¼üB²G*½½f ý�m0Òß�Ç|žyãU&~‹8ŒR�ôc#khl¡œ[ÎÇn ^€eXÍŒN;_Û_Wú�&v4±±±'¨õ;ãÿ&ö{Þzãè2öýqËÐÕÖÇvw Áî¸CøøË¯0“>åÎüwìÚÎ"¶ cÍ׫`e,cÏÿ„v:«ìç¢[¯¥¢†Ø“V:;ÁÅ¥8Z]€"ZdÖ×ÀϯœÞǼ™3Ç£gÚ$SìA8f�ñ¾œézd~‰½T“¸@š ¶ª±WÎá¼øÜøtõ÷b¯Ï€e¾Sý“> �—}eoe¿ÕØætû#À¢°,{K%÷–V‹²¥ÿ®ªà�º~9Þê1k,„õ)Mú’J/kQ°´²‚HSz¯ß®Ì+Dz?oVeÁsøñÇïB=ÝýìÞ€:]�e¿$6ì�»}Y…�+ —­j,~¦Ý+"`mÁm»„GZÈw»‡Åo®¨¬*ÁžÝ;èA™�‰dÒmýùG¬Yµë^~£ÆŽâÏ Vƒ†¢‚ÅDJ;Ûë1ÒE‡öÅR™ÈÇÆÂÂÁŽLRkE©¨ÉÌ�¾–ÅÌ]úA¿™À”¦Ûög Mߎd2:¶V¡KO_‘A�7Þ�Þ«8˳‘Èk”'‹|:ŒLP[Mòƒ–Ü�G×5¤Ü]ÝN2 ;‘q<“^ʦL®ó uh"ðêFWS’C’)¥:aìHèW– �G²™þª»6 éI ¼ú"€Àª§½9y=Ô#héÈÂ2;æÓv�£•$a¸Ð׳íTÊñõq¥Gj"6l�ÆÎ»YìÉû ÉNyÅeap sq|q..¯/Ä^*Q-· É8væôìôGå��òXi´ºjŒ[[•›t½£�¦ÅÒZC=µ�Vy­ô�ûQdn‡2‚’T�±íl?a)ñýMò ÔhsºqSÓ Ÿ�ΛvÚ¨íë€`Ívk Ô�™ŠæZz§®[…åk6¢!í RM�Q -{gu‚=üÍÎyêeÄîMÀâ«oƒSEŒ×�´Š9”�¨ Sqù‚E¨+«Ã«\G-YÅzzÜo^†MÄQ‚ëv”nÇ1ÆÏUTó+gŒ—Áó=ØÏvTú¬.ÊEàðp!C»˜…¯]9jQÏüº^yîqØšêaɬ|¾;ñ šì‚"´ë˜ãÀ¡£¸ýêy0 Õœ ŠCÆcä˜(‰ßÌóÑ•j)”¡öðAbIRŽB•m `Àã½?”?;*Å��È)lD'ßwjw /e#‚†ú!.™ üŒ)X²h*tš* ÕXŽ,ʺœÇж…Ìy»D,@›ù”Ö®á¹ÞE —Ådûÿ¯]ZG �cй³¦à‚ŸN“ûÖ@í/²vµ7јûÜ£�À…œ.à‚¬Õy 1wP6%2~Ùdì™YÙ žTü)Ó»¥Sôt´!>8ÍZV˜0eºâ=Q’—‰ðQÃÀºôtS$l‹èI!ÒDfí5ÐãEÔnèhL™9ü†…þ%}VD]XeGM¬ÝXìÛ…â‚ʦž:¨ï9h|±ú³�x ÆOœªHÏéP ¿¡C�Z%vÄÄÒ ÔN�GÉŒ âà€zúa£˜¦”å„§O©T4åçS¯'ÁÄ5¥ „¦3á(caSSšÆæ½ä¿²SðÚ�s±%ž~UÞƒáD+INÍšÝ]­Ü»}_W—dÑ ÿüç‹'˜(lÌ(Ç8wn÷ù"ó‡2øVY¬}—ïûþ»o¿¦\ï:Üsï(¯j ÐÛŒÉSfô�íŒÞPšc(‹Ž$‡ï¼JOxú†àÚÅ‹DðRm‹gM€µ;}8ȲG:ÉÜi¬­ƒ…¡.=ièãÚÌäÂ(ʬ!5­ñ±¹ �¾¶†IÔ*Ê[!Ÿ7¦ZŠG3@5Ðo£ënÌYt%æÌOŸ»j¸Ú™°Êmj)Õ`ei k¾ý5Vc…�À¦õ�«MŸŠÉÐ&CõHÒ>Å»itDjȦ9À`)dÌx&ÃÍ«¬£8È?Û&«óÐ1Êâ…Ûþ‰¶Ú";ÿ‘í «<ưR}ÐàžÍµÓÛÏÜÆ 1qq¨¦¼Æ5WÎ#cÌ“É{ëžy.µ°Þvó5¸ùÖ³c>\jûs±ú# ÖÞ«l÷>&çü‚$©ÐŽMß}ÂDwÁ‘ƒœ>£Œ|- sŠðüK¯`e]`­ãïHZ·GÌ2åõÅü'àêÅXeÿè…ÖPWÛ²š[QMÀÝ Ã)Ý7vìØY(mÞ,è9Í\Ä¥ºYÛRy,&yt'º§‹”•L“&•ÚÒ¤ªZšÚýÓRÙ-•ͧ›ÀPVv‘þÉù¡&Jz'ÌY!+«´üý®[·–^%#Ãqüø(eºüÛòíJ´põôÆO_}÷Ñ“5�÷9ñUÕ㽡*# LöFSZ´¨¢ž@™&ð~9”ÀgÚ“©ðp"°s¦ë¸ó›3‘!VÖdaèЗÈÐPFNè LV6½Ûs Ú¸yÃÏÃ)›¿E«±Cc­œkÿÒ£w`ßšO1dlTϪ\˜˜‘‡´½ûöa=ÇÓ¦OD}ÂÏH«jG©¾1RŠ+(÷UƒÔêbl¡§iqij�æ"—À©Ys¬É@«£þD1 [Ébmh¬GfZ*¶ÒªÂº³‘3§)‰1{Þÿ5~#pÕÝ`쬬öþÛâé­ªo‹;ïºß~÷�2“b°ûïº�ç‰?|˜ÜiL‰ƒ‘¹t[ª8žmABA-m ìÉôÕÆñƒ)0ÑÇ �’™wOÊ“5ä$ ”W,èÔàxzfÏš#Ê¡%—FÃáÓ»ù›{NÞÃ/ÀúÃÖÕ<ÂZ´é|S¾€ ðodÇ¿Éü´zXcböP�%¢ßY6ýü=½­Üq/Ùçj{èñå(!‹@ý§ÓŽ:H�µNnîÎCIãANÝçâ€3]â\uë�¬’oFĘþ�e9¥íŒŒ©v’fK�ÀÝ•ñ‹€«§°~ûízDFžýØó$]9ã�z¬²pÁŽ&לÈjl}jÛwh€8ˆÃùÐé¬�¾‰¼YŒ¨¯1BCs»’6³è?>`u˜>ÜÞT•2aòÑÞòðòÁ aå3ëý™¬«w¬¢nëB<Ëq¯|íÙš¦Ø]-ªõŽÄs¢l$û/iŽËã¾,SblU"XÎUaéªûx6ýóc1ð°ïÙÿˆðHªÅåQ!Ç\±Ûr,Ù‹FSÚ¸ÔãhzÉ å0 tIy´ÚHPÑÖaž¨NC˜Kµ°…IS%íèÀ1¾ó^õ˜uÙM ›oûŽ�ضq%F…#zÛ/ŒQÊaÎq\f«>e[ë1®³íÍ0wu€6Ù€)UTå±@0ÁÏ¢rêàïã‚lz_î%ÓÐÂDEU�B¥†Üâz˜éhÃÉÁÕMÙX»ú'ŒàX>�Ûptv¢¢ .ôÈa¬oѦìqÆFd¦!ƒEhz†ÞhËÛ‹:„eniýн÷SrÕqÛ7äÊ£­UT|®iPEÅ+#æñè' ‚mûiaä‹æÒ_UO>õþþèÓ튱”Ë´ÓÖဧ#Vò±°¨®ÆJÕ¦f”`W£7] Ç©¶(Ë>D¯Õ4‘!©kn˪ؙ飚d•&*qºíÑTåëµ¢JÓÐöZ˜S‘Ç´¡¡FØÙíÖfUÌÝëè°è¢½…y×Jø;Œâ ¨²LQÎ*±0Cæô©ØghŠÝ´Lñ"C·]È“+ÝÁŒ²Ç½[Ê/|nïFyå ØRh™µižv0a1¬}kû¡}MÆŒ¹š]ÃFiLhÓâµc›€õ°Z+©ògÈ﵈ñ©)ÁáÞMg¢¾,IÓ²�eXÌ¢I°pÛ+öí$¢X³€¬¼(±Ì¹:y¡”€ñá¢RŽwÖÀÆŒq¯™ ýs'Q�’ºG÷#¬¹^ÙTØ0W~»6,B46eñ­�n˜ë‰)›…§^x#õ; ½î5Lv„&‚ÓÍT¿j´q§%ÊuTì¤Ä3�‰.YÈ:dFï?Ìï…’çRELwÙš›Q!)ƒãó.|³iω*üúðörcvG I‡R¸ÎÈ©h†“½1Õ}±o×fèñ|éÐX¢‚çòäÈäR]Âß Y%Uðu·ä˜«�ù8s2¸=ÈJ®$þ’m#+åü7gþ¨.? Ã&Á µmÍ Ø¸v-ꫲáK¿à"þfí‰UÔ’ØÓªk‰«®»­+Ä&$s_š+h¨°2fŽî½¿Šÿ½¾HG` 0Uð5Á äù\Û_dÕ¡Ê÷_µ5©/ÍÀÕ £8pv¢tð$Ê¥Ø1LvHV&FÓÛLš•ƒ+¶ÅìCâzA^y-oÚ?C¿«¦6'€¬�>úw|üî»bgÀgôDS®64bܕϊ‰™äq&m AÖÀaÃ)}‘‹"ÞÌ=8H7áE»­­¾–˜;!:x#Ô±òRªH�Y¦EIáúºj”qÀ5qZ -ðÍæŸpŒ•M3Ã(ÓåiŽVVÈÔR°²4Ÿ¼þ0AÚpEþ6ëp <üGñŠŸ~�ÁíwÜÉŠ}¤¦„6¥ÌÌÌNÚýÿ»í~ìÙw‹¯¸³çΧ± ’>0ÔëDA½Üì»á']I¯GŽƒcéé¨å²ZÇɬóöÂóæÜ£ÆŽÃ 9ƒ™`›Àd�=ƒHiÇ�+òÄS¦ÏÄúÕ«^Ò+Âk(*y<­è1êÈ@²•æêÚ¬ 9Žò’‰016$ ] V‡ç¦¥ ª¤ "6ØÛñIG°„€�›³ £¿×ÏAJGSY~.ôpXÆ·!}R‡#)1ÿ|öYÌœ5«×QøýeÌ®­¬æ³%óö:¸¸º£ˆ7ô+—^Ï�i9>ùà-ÌZt-=Æ~òEòø\šÊH•uXøÎìX%pQ%g$€kü®MH¤)üðˆ©=›ì"ðoÄäI %XòósÐÜÔˆ¨)óz>¿_H‘ÉÅXSùÛܹsÕZ)%sîçö¥r\^³La² è_]]ƒBVûæ²*µ½­ CB9hu`Rœ¯+��Š'ŒTýJpkÍ€ítƒÓÚª*…i~©ìwï~ÈoE‚_ytï½?ýýµ‰)}yîõm>ø`À*ŸéòzlLPQšŸþŽ‘:½÷ö$iÒ ªþ^¹Þdm«;Æ5j!ýйJ0®V³+úퟺ/½×Ûûóóñ:q<~üþ; 's°w“dAÅڕʹ!燀ÆÝÀ±ÊQ”fÏåuÈœL¬ÿn=K²kð쿞ÃÒ¥‹5+3S|O™ø£ FŒM9V[N/À}ó\®ÜcÚ::èt£ÂÇãÐá£ôÅûÓÇ�À57ÞÙ»+§õZÖ[î|ÿwãU˜ÿ®{ÿNu VIPTó‡.â„6*%3é`bjƒæJæöCnê!”Q&0¯Í„ 3VÓNdÅ>•Ë`öÛ}¥ïçgú^Ô.€µ¿¾q¼z:kË^¨ióÎÂ~ü ŽÅ3&3Îñ¡/Xw¼•ʸGä̇†„žtó±1ј>} ¶ÇÇcñüþœAôˆ635Äš•Áˆ/B™x¾nÙ\ÆXò.*©«l(""�dôÐÑô\ ÿØ…´ü< ôGÔÈLFZÂÎi0‚†�Fì�ãøôÕçpÅâؾ? á#Ç"(t2Ç{ÚŠ7ëz/;ÛÙBC5¦÷?[©¬Ø‰þuç³}ôá§,²ájÐù\íY¯+.yÙ#;0t°^ÚMä×PéAVy¨îVV¶JÇdU›ÈM§S]bͺ/±äò«ÕÉxVÁÕ Ê雜¢°ÃÁÖöüîºX”/~Áòø3[ܾ8<ððr,âØ¡o;øÃ*ŒŸ2›ÅiÝį¿ù&Ç%ùê ,½zù ³ ƒõlVu%2Þí ä©ÓÏö¹;†èŽ ¨°[þ˜âÓ4aFGÍÀ(zÈž¬ öÊyF(2¨2_w|pþ€`uÛu1;NC©óõ~–¾¨¦2]b‡¾à©:¿ÏúmÊK‰5z3\ÕÏÏ€T×q>žå8ˆõ‹à ;UÕ¯>S# iéÚÏ5"kÜý�voÍdíç»›éÐExG#þ•ÂÀ•ã"ç�:Ÿ¼Wç£�ê:î¸ûv¼òÚ«Øöó.̸î~äg¢;æ5K†µ’ygIÌ0x&Ú¨‚•s8žV:0Òja~³ Õ´£KˆÝËâ \æÚŒë JðE¹õT&)éÔBl£ÆŒ�$UÖÜŽ6Ü£‡�àj#ÛØ?î ú\˜† Ç¢îEGC%ŒZä1È6g¡µ†ÁŠLÁ§_þ˜ùÒ:¸³©¬¨€‘lPc-8ÙRЏ 6æŽðä˜_×!:mõ˜Y�âú&‹£}‹\=#d›i꯺üÞj©nÔÌy"ãbà’� {Æx?š:ÂD§õ̳¹:“1ÝŠysÆÒ:¯Ÿ~ø©Œ÷Ã�LÅ�<*… a>;+5A#'(‡+‹ëI!Ç·�cœùKȾvWò NÇÓk´324$Ü‘Ý<¾(EÌwê©Ö0&51  MrÂ2*²úÓGÒC¸¢–çR>‹“¨xj€=ôhCu#=C¿ú(ªÓF'™±—Ï3+z†"=å0=ïX¤f‰Ó�–œŒ‘ã'bw4‹t™K6·2e^ƒMfʼnõ0rˆ­'Êq<·¥MŒã5ÕHIË ëÖ�uù0­É€)íåjA«sdH‡­×H4ðÜñµa.¨Á…”Üöµ·ÂŠGoço²æ<þÞÖ:ð¿ˆö�îêiô¿ç‹xN¦ž€Uvå/²ªÇü½÷ÞÅŠï‘Íwiƒ jåYWcB†ßþpY“Îä“«  Ëˆ‰.K\ØÌ9ÐÎÌÎÂ7ß�^ðÇ�K)-ú¦ÔwUԤݱwÇ&<üäó Þ”å��•‹šøGþ·´³XåØLš>‹ŒDV–`M C'”²W99™ØŸ‹'_~xC“Ø÷Ó÷^c‚™Á3eÏ>ÿè}Vly¡œ1GôµÖäÀËÙeµ:ع'n~£‘¿ ®ž¾p£/�H÷nýú]äQÒî‡þ†‰‹—ÂÒMo¿ù†’Ó¡|ƑÇÉ@ŒÜœl…­Ñû{{ë™»ñÓ†¯1}î"xP²vù]Ë0oÑ5=³Ъ¯1îyô|0À‹8Þó´»P^£»ñNËê« ²P  MVȸ²/çÚ$á'Œ:+²³Õ&ë–M?Ò/j4¤Ú''‡¸Ëcð`7²œxãÍ·¥‹'š8È aÅ•#ï|ð1éí¥Û@�50”7}[ðæÖsg�ûîÅ^Þwÿ´ ×ßóÒéÛÒHãuKkz´å(‰­ÊiI«­­å-…½¦Lèóo:åõj+JàËDÌŽm[ðÃÆ ô�ÍD0Á\íê"ü²/‰r&Ö”jÊ£‹züú¬äßJR|ÿM5"/#•Ÿm^ÞHŽßN‰3úÞÙÑg·g &æVÈLÝŽAí?ÓSc†3ÉâäìÚóùŸñ¢˜ìâzzž«ÇÕùì{YY)æY;žƒ…ófŸÏU_Ðumß´ž²7L�÷Ýèqúœîܾ‰uÖô� rÏs^c (¥íJi<X¥I�'AŸ€jð×w]ý½OŠ�æµÏò’Z%–*j© ÿ³˜¹}�—z|å××ÕŒ,Ç7ßÑÏÔ×Z:F(¦Ž4U:K]^~÷R-ûÒ«Îw®ÏEâå~×d™¯þ’#*àZç`…z‡Vö®”i?Ì Ðƒ¸…Þ¡ŽÉ#� [úá}Èb=eê,Ê9:Ó»$R‘ÇýâëQS߯ÊO{JMÆîÝ;)-˪\ªr\v½´Îâ~# ÖþV9>3§ÓïþX¥of¬~¶±sCsc=ïÁް2hUühvý² w>þ"¾X½ŽÅƒ1>*Jf?ã–r”>ݬ\·ç˜Rš�Da±úGFaÏæ�h§4—�•u�êO ÇcÎíw"þPö-ÅcÿþGnØð Â#§`PÄt\óMØÍ±M,Ï>÷"g-D‹‘êÈ�Þ½ 38Žš2m6}pº0—@©åü\YÕ@ʉãF#„ÒQ6dê©íÊ+¯åx}¡òV=ÔÏä¹rÿNJR¿NVêd2zàDy¯_³X1_Ù'J ;ÛóþßÞEïÖZT±¯É?ÝsÏß°�Çð‹•ëppï•ÔaÛö­èÊK˜™5# &Áãá0: ¿®ü ß?ÿ,ÖýóV÷wâÃù“ÑÕÕ Ïˆ¨ÞÝ8ç×>ž�§ °Æ'ïÆ_¾¥ŸñÈ·ûÅW2öìZµz%V®üœÞK•å?úøßŠÜrPð0Æ ¿û¾+—qà¼Ùsaë0_}ó=FŽI¦¹!6µ¸|Îå'ÌþŪϰ`Þe'L;—7æL¦ Àš¸o/žyä!Ì^0ðº]¾Œ¾½¾Làý>ž<—m÷]öƒ·_RÖÝ{ýk¿_�¯øQ‡�¬‰dŸ<j²Ÿ°êÒºåíÏ9Ö>íLµÈ�b¬&b¹Áä›4�Á§Xe>)L2Ó§LíWÎ}Å;o3I�ƒ,îˆ C��·,†Ì¬#”V,W 8• ½þ3€5“ë6lDè°�^Ÿª/YLIY¹tÞw—ݸ×\u¶R𱡮µÅ‰”�£4±‘ëm?f ©ždFÿ9C :´õ�[×… ëÖÀÎÑ•Ì 7u¥çç™ñ±´Kdu±wç¾SŠŸ@ÿZ“BŽ“¬²¿*‹U}–i©©I,2ÝŒ¡Cÿxn Ðz*€UƦ2>̵4EÕIì[\ˆ–_�¯¬v4‹¿ÕG¥�¿=üî}êù€U>{ã­·0š^~.ÌwýšœÌ§m ý€u4ï&Xˆ[@IDAT˽›¬ï|Áj,¥Wö.•Ï$v¨©Œâþ>PY€{÷Wâµ óóLcRuÙ3}–}é]À®./Ó¥PWÀU‰ÃtbwæÔæçZ¨ìT¤šò²ÉÞ`°,“¹ös7ÙGY—a~NN3º,Î$¾Vûp6Ï>$E¼úÒëÊ¢d2Ž;N.,�Ôª#9€vg´ Ú´õ Ú+3é^††Â ø †§ßú¡c‰ ó§M¢Tk5UvLppß§?°v{óÓ:È«hÇÞ‚¼Ÿ¯ƒé,´|ìºÛ+|�õ�n[ΧC`OÀÍBú~{qlîÀâ 3stÚÃ�E¶]6½-{T „LÚãYBRGS«6¾^¹µdQz0Ç6*dަ¦`ý–í¥š�¯_0ò Ðegf³Duæ.’)ì©RWÄbÞ"¬øl ŒL­ðÀM‹ñù—?P9©^ƒœƒæáàþÄÆ¥¢˜ ÚàcYØ޼£‰ØERFÜî$4µSžÛÃÓfÌá¼»à5ƒ†G�@³öÖ7*ÇÔz¬%†¹rWoGûÁ$|@¶á£Ÿ~3½.ø1¿[\^ ­ÎVd�±;ÒߟéÅNVU)ç¼1ÍÛã]¼ï¦Èta±„�½Ú:»(‘\�ŒúÓòÞÙRƒ�¹%0s&£”tn<6“2Μ�<Æ©d$û õE%¿/‚à.×Ýï{žD%¹˜ÃG(ý4Ö<ç±Ë.}süí±b䨑Ȥ„ñhÆØîˆûuù¨”Vì�V¿ MÇáCÊ9ëX\XÓ¨1#{¶�¿sÊÛßÿ0c, PY³Õg2x10@VQª ¦E^mE| raÀyÖÒ¯ÃÌ?F'b”ÿ`ÆeÍh#ˆy n/ªëµQÖhÀCÓŒ™9¨¨¬A£.0v•‰J Éb®$È}ï½ó&‹Îô Ï\tlQ 4Ž”¹F;„9®þ¾”�å?Ǫ a‘f¼«7<Ý\�SP׺JtP>þ°“/eªY\¦Û½®vÊ gÐRme«óaÔPŒ Ó¦ ±²€’¿ŽhÚ·Ö­50òô£ _>{øæG"æ@&Ge-(8~„êGC0uâXDs_vü¼•$!GUÒÏG2ËißfÎ÷Ýw²iL¿öÛè kÈŠ×ÅøÛò»�’MSîu5=Ï´ªíµ—ÿA '[‚lÕI=ÏëÖ¯eR7ŸlépeZ6}³Þ]ñ>òrޱZÌ—~/Ÿâê«oê™ÿl^¤¦¦ÒKx?¼¼¼˜xUîãÊj¬(o,«´OÞ| ÖŽ”Hb²Ý?pf.¸ >LÔ�7A‘ãMb¢ÕßQëv¤ÐX},X.ßÉ`ß¡XÆßLÀÈp²}Æ#%ù0½¿ò†iÊE«„j‘–‘�dúÉ™³R¬º¶.î^”ÖfÒwØ€«Ò)þûǽ·²Ân¸øûbÖ¬¹0%Kë‚®CÈt>–‘…µ_¯Å—_¡.rÒgU‚Sf’@Eó,ò™¬2¯˜0¹§Ëc"ÍÎ\Õ À|ÐpJÿž@ø™> G 8ÍÇ™„IÝËŠµñÊ2Æ¿úªbg…ƒ‡ß ›_õå§´@ñkLga‰Aö‹Õl î\ݲ °vv62¹uþ“§Y,¬I¢ zȨS—"C::|"}¼é+á}þ¦Îg“$¤x&ÿY­ª,±?}H€îk–Ú pµò²jôòsJħ§w¯Îóg>wtP†¬|a;¹PÒ¨;™@é(‘ îÝ$‰Õ·K Î.$`,¾©}Vé‡$êé#+²jb¡wÿºvî@ËÊO‘¦gˆ2æºøk^@�gçA¼OeÓ‹5÷.c#¢ Rÿjóõ@)ƒ¿qãè]íìÄ ØJ2®óqùâ«áæhG¦Û`˜±8à¿­Y,²$ÓÜŒRÂÃÇLÁ¢¥7䱯Òe×�5À*ÇðxZ.w ùêj+‰ŽÞÇuýû¬b¶2Àþ�Ÿbò5w(…³@¯¹ [ž£ÂÃ-âAÞ—�ŒAM“®f §­oB%Š1˜:y=u)Ïì ,'^HyI;qÃu×á†ÿ»‹ò´Ž ;Ž9­¬~¿¶‘±Û`íÝŸ�^7f#‹>èUF¶8œ]Œk‚¬p¬VÖFzØ›À*;üý�ÈÄ §ÂH9«ë+pôË�q´ª>þ¾h 'O^ýî)iýümËðÝ12÷[»pÃÍ7‹ã2�„�(ÏÉãYÔ3ÁbÂ~¿ùñJŒ�;WwüøâÓHxýiÞDzáI€úb´ÂÒ– ² ûú{ÿ‚#ñ ~’å:ÌƳ8ðJþ®¤%Ñ'JÖÞ ßnZ�ï6½�ÈQsNØ% þþä±`þ|Å’DúÉ“ðݺ¯pdëð=…–ÑôÉ]ÍqÏ’–=odüíÄG_ÙÙÞë€Õƒ…‹ª ¸:˜ѽ›¿ÏPØrm×Ï8º÷|§z-÷ÎK`�'¸]Hµ)tøOo_­þ ‰ ‰Š¹ã`zÍ19{6M€Ö“�NŒÁÕ�Ëo9‰ŠVsJÞ¿ æ`}ñ¥‡ñÍÎdܶô”0A)ce}^Ã;˜4ÕèëÁXcȱ³£°J¿{ìQ8ØXaÞüûÈ@jÁu”Ïód¢°¶¡æ”¥ÝzÛM¸áêkȘѦüì8EÖ×Üä÷xL™‰ÿ>úø#^/’Y�vºÏ®^*«Úç¿:ÀšÉBUK‹3+&‰O¢,õ¿þ�ù3'*‡Ae´Ê›²²båÑȪ³�ž%&ÐIäsc²’QÍd~ÀÐî˜T–™µØŸ÷£‘T88w°Ó…סޫ¬_@TÊ_÷S-\ø‡i2ï¶tñd2ˆÜà̸ûB´B¢Öq&m Øÿdëè»ï'›÷t>ë/!ý’ñ¿Œým=Ø�ibRUR¦Ëü’Û–goÀ´L]ªœ/K˜“ý)…š²^Y¿Äh²l÷ú²ø~)c¢§”i²^i½û'¯SF Q˜¤ªD¯2ÓYü“uõ–6`W¦©û(û!ç¹ôUäQe_ÔXHò1êk‰ÏÄVE˜®ªlsOw´´´¤ŸdOÖO¾x‡d<÷üËH¤"ô©S±þ×íxëá›q¤°ö$-Œ3“'ŽÆÑcÇh¹åAïx”f⣗_F9A2]Þc¼ Œí/­Åây#˜÷4B[=Y e5ˆŽ‰Åè¶]¸/¸Åô!5CvZ4–ÏŒQ“îe‡ƒi™h#ÀNÅmŽu2ëZ`Oªšq_ó¤ZímÈ/,€kÈxʦ®Ã/ûa¸¯;t̶SØË˃êq³ Þ·ßþÿwÍB8QÇÜD—`¦><\éI½“…ºÍ¼¿Õ!ýXë£4°¢â^|R*RR’afM‰Öê&z�hì2!#·Iñ>ïâ£E9YKKcúöMä7ëcæ„¡˜?{n¾“ö…ôðܲ&‰û”BaX;µ´æÈ÷_Äßvb…1Lã‹{¾Þeº6ÖÂrîÔ·µ#�à^5Y�Æ-±[áSZQÓB[Wû»îƒåÝË�·µka5‹AC‡º)R²ö”f7ãìPF.sR70Ÿ˜A°Y—9ßl¬@ÓRJ•u8�t¿lý•@¸CF`ê¼+á9t^xæI‚×>ØöÃçp¤}X‰!¢h@b••N†QIÊ–1e‹-iC0,»wüŠ*’1oZÎ|æ>£Ïšµ¼ä2ä“¢£Åøß–±ºÕª¢£cahlF`Ðßþ¸•cÄr¸²pÖB§ 6ÓŒ�‚ôû|]V�tž/M.¶$Æ …«•!ª¹î‚|ÚèQ·³¶Œê"m óŽ*:Úˆ÷��)jÛÐD¹äMÛwãpr¥�uPoh†\{[´èbýg«ÐJâ�A]™Æ�ãš¾M~ŸW¯Ü^W:¢¿…5óñz°�®ÆbZ÷‘Í|ÃònFô‘Tnƒ™n}ìY„Le[+#|¼y;jŒèÍzð&� …)¿½öfüÌóÍ�ǶYË£'Gá£÷>�5I->��Š�±¿­Î6Lœ:™¶?$9±€2Ÿl`ž9YdÜzÚ¢‚EÉùÕm¨ëÐ` •Êim7~t Ê:uáád‡àÈ©xøÚEŒÙ“°„ öˆ ´ÙÛù H´‹ºl)¬ˆ=œmË;’€¶J³8áL[á+Oõøj˲gsÏ:Ómþ·Íÿ—YW2¹R΋LPà«ô.å/N£¯�àÐP2)˜Óƒ��ìY•aÀ‚#†•Ue(â °¬8]ñ[ݳm+,4zð¦nøj€‡GŒBWs)FEý‘™5ÈÝûë~ù)‡S™ ´¥Ÿ©%ÁOOJ§ýGS]äRÂo;/¸M¬¥ù�ò†�<ø0™ …0¦¯\ ½é3f`îM�£œÕ<.v–xÿ�âý¯¶Ñ�Zþè“hæLÉ� ÌíGGº˜K/Þ_öìÁ¡„}ôhõÅôÉ‘–•OÏ�Cxŧ”«½ï´ .b…š¢¦žš±]Áʧ1cûg\UVÙ~Nn®úìs¢ÔÞ¬Y³ðÐÃ�eŽé³fbÔØ©~Ú« àe.A† à¥JTžbªI#r4jÕ–ÈëÊÀ‰ƒI}2© Y)&ko�uÛ†/ñès)ì2�¡)&‘}-,Þ?«™X˜°j¿ ¶Žî'táoÜŽ©d¸ÙÛ;`_R<Ò³¥šqò�d=�8ï ^âo„¥Å@AZye’ø»=²ç ‹Õ�Ÿ_sùMý¬ÒW&4`MHŠÅSÏÝ�'y… ¸Ë ýôó ûÀªÎp$#…þP¥L<Ø©“0fúÕ˜O¥ß¡ôÑ&‹êB¬êÆN°Ê<½¦ê2çó¹ïúîÁª5ŸP³á¾»ŸÏM]2ë€5žL±#» L/™Ž]€ŽDŽ�¢Еpt }ÏÔâ7¯¤5I5eÏÝšeÀé Àêì¬Ø‹¬ßø%&1‰&­µ£‹¾sÝj"ý-lii‡Ù³¯Â°á#1ÈΚ×ßEO@Ö¶Ž6tvuA— iµ½úúKXÀx0«D®Ó£•{Á5”"¾ýzZ£èéÐOLG™5?ŸÅ´dê3§ Ñ×eÒú�«Ì(ì\u¥ˆætÛžØX^s�îìu¾ì‚ãxý‹§)¯<ã¢n÷|mì…7Áä¨ aNµng¬©™÷�¿¨|§.¼nÛÚ:Ò=]� ™RÀý~}?Õ:åóî±j§â19úÆå'¬ò¹¬�þ#äåi (‡:�¿];hŸi+ ¶àòëÎt±ÓžÛÎ]Tó¨W ÌN{¡?yFF»�Án�ÞÝÿPÉOˆwd ŒêcwxÚ­€®›¨¹ d”ù{«ß˜ÚÛטÌZ¨ÐT�%lTU“ðñ= Jo~»N™gèå×öî‚z ª²€jä*…ç:ƒ\Ï ¼TÏeé³4”¶ò!6)j&j@aÖq¿yòvË<ËüËCö£>¦ûØØwu2{àqûn)äNØÝÿ„¦o­¬[âA‰¥˜ö|°¯¾ò î^~fÏœ�E ®P ŸøÇ#°ë¬‡íྦãÑ›òYÀ÷Ù[/!*,Í…˜6o1¾[ù!Úé]©¯¥�™“…d®ælÿi ¶ÆF]%£j2ýZX4lçFlÏlÂ;ßÇônõò¡k½ œŒÚ”ܦï-YT¥Ëm~ܵwÝA‹-1j\}¡Ïñ½–ž)Ú;€-?rLßHEkäWÖacÆŠêZ^“¬™w¬Ã£Ï¼DV¢#F“€ÔHËJ‚¼­�MÜ7{Ô3¶”ûZˆŸ´é•)Ek¶,:²g®ñX|2å…�1cR ã})Aµkn¹‡y\w<˜¸þ©‰h?°W~—ˆ'ZŽàÀ`,¤¥‰€÷]÷:×|¡œÇê¹,k­ç´ ¸·hjlëjO¸q:0ÏØ|(¦3(µL…½¸d¥ÍíLQå9TCùl/­Á¡mÄSâÝËÕƒD¶ÖÀ¦1#Ç�¥�,)Íì�ǘƆìÍæÌ;:©¨Ó…<þúœhØ@+âþ¡£1<|ó€Šu˜¬þôÏ>™ö‚Ä 6†ùU'|öÙû�šA6¬:Z›p<5…þ³”oÞ‡û¼� 5$@Зvö|üúÓz¤Õ´â—²L »�˘Ç�Ë�![AÕ¿ñ“¦Ò“´�>½Mì 7ÏÁ,˜µTìôt:[àãjEïßc(lÕáSt6×À "íFÖ´¿Ó"+ù}g�hoÈ"J~ÇÕ‹ªEŽº†ß¥6jÊéçN¢MZZŒ™çtÄ{˜Û ZÙÒ‹·�ô7eŒhLÒ€%ýXû6)z�\E[ìΚ¶ïѬ¦Âg8Áê̶N4¶vÀÝÕ‹îy u‡Ÿ~þ߈ te~™ë²¶ÁWw}oCqa>fÍ]ŸÁ”ž FsõÙ%0µtBiQcÎZþf*È´Máï„E˜Mõ˜@+¼9H>–Ivk ÇmþÌK× ùhåŸ�’êÁÜÁÙô¥åÉ �–Ï� X0�kÒ^�’êfÚÝQ¥tåç(ojÆõ_ƒMW)ŠíAÚÑ´êÐÊf0¿ÓI}÷ÿdïEÉîlVYgÎå“k9Æ—Åí²8×kîÉúx)~öÔ]K™»v¦ê˹��lÿþR « ®J•gß–žAF«3œõ]Ï…xogcŽøÍ«PHíø’¼ VB袩­ƒ’YWbñ5×39ïBÀÏ ÿzêqä—s l “…XÛ¡£°ëêkë1rl”Ò½¶*ÊA�U©cxæ• §»2P(A|ºë¸�ó:°¿Çû³ïv¦Œ Aðð0Ê:õýHyÿæ;L.–•!€’Ò"::šéŸU›¦”zÒ'øjŽFŒC©[&W󘤳î(eò?ˆ²¸fà (ÀÛ›Ì�áJÅq5�ÿøýѸឧX?ùb %†cé·1 ·ßz;ÝR‚‰føç3Oce£^{ñ)L�6‹ lêÚW–á «mŠŠºAQÛ“KÞ¬À?ÝæÆAØ›ÏÜAIÀûP@­þ”øúÔ†°úèw¶äé®K�¯†7Ó5¯?�|VY³ µ�KÅ¥%ÈæM܉7�„Äýø5f?Ü9`-N?ÊV=š9H¡á-ðôZó5ÌŒŒX5Œj²r6oÚ‚o˜ø0µ’ë¶ kUŽyS}+†ùy 42�¥`½€—Ÿü;Zº´p„•búÚ˜ˆ¢ÊzÊ_«T´&$ÄcÍê/pøp2¿ÃãöóU@LµïÕ•¥xùOðeŠ9sæ¡” ûôóÈ6?±ò]²ÀÉ@ƒæîÊÏÏ•U÷®Šì-7#–æeÓÒB©íf±-…ê_¢öKžõ-ÜNXeZ9«”}ü‡áÑGBfF6n»ó^™üç5²:[9¸4£\Ls@~(‚Î ¸*«´{n»‘,ê²òÇ÷žý/óZX¥ÃF¬è3b%gЈ h$MÊÊÎå¬AÖ³=r^ª~7}%iÏv�—úrýþΦßiiû¡Ogªœm“ûd·ŒñJÒBÀ©É‰þú+÷Uà4ž6†¬šü3›ôQígïjí@ú�OŸ©H6�3z´>�&@« °Ê{)2 ¥Ü¬´! EYA*¤í8NÓ’ôÿDY ¤¤„Rýûñíºu˜3ïÔDÊ /�Õe>:ê¢ö¤Š÷ ‘Pr9žÕÙLÞ§Å00ÂÑ'æÁýÚ'p?UÚÊ�ÃoxÇ‹N Àjib€ZÞ7Í,é››�=ï­@sn1j˜laÞ_qŽØ�¤=Ÿ3 ï†úŒýˆK/À¿žUîN¶ƒg °Ê:`­§‡¸é€GÜž�´QˆCĘ ʹ•´o®¹þnìÛ³›^‡ƒÑ¤e…&JM ²ê€qS.Gf&ÈÌ)D•0J(Yíîæ‰‡î¹ž)Ðï(€UÈLxùgewìXÔ³÷o7Á|$%«sYÒD.YŠˆ«–áèºÏQkë ç ñÁ‘°`õô—ŸÁ;"JYþRþçä8ˆUã|ð¹w++ÈP”UlÉlè¯ À*@«Ÿçï`ÐÃ÷ݦ¬ýÍ>¦½óÞ+q‰„óч�Ö1oij*Ûx™Ò£_Sä@³ýaú¯½H»‘x2Žu˜|?ÿ�zâÞ]dq2)50Pø‡Nõ™°êówäò‹�БÿkŸÝ?é[ñ7¤Ô¬¥uCcS5î}ø^ÌäoVâùÞÇÁ—ùQðø+5�Q) Œ:¡ë²âóX³ÃBÀU1$o!lTëÅË”XF�éŠêNWW»S¦»¶¡_€Q�mÔxBæ�ÙÃâ¥AÊCÞ«Mæ€UdÈ€W쓨ŸS#Eµê¼gò,1™ì_7J‰ÀªXÉby­?fœ…ø°ª@´KîË<8ViÃðqšA¯ªôéd¿X+_}¶¦+fg‰Þ˜ñ½Ï#u?¤�* ;ø_FpdÁ�£}7£ý�^¢OäX(ñýÏßã­·ÞÆ£ÃòÕG ˆí9f,WÓ‰k®½ ?¿ô/Œ»l%Zµ�ôãwø–Û¶ÔhÃvÄ$h5Õá—Uï@�…úŒ1í­�Ю£Mk�-D�®�¹w!£Ù�D'X’™§­K®ÓWÝüvÄ$P˜–>Ã�~ä8tš«)++2åz>Ô›@”¥‡ÃšjÉɉð÷¢ôË™y@G*‚ü¼s?&�$k“ãÐ̬,ªK¤*Q¨ÓmjA1É: ô0倚¨&Hʼnºv*B€´gÁˆN‡xÍZ@‹ù¿l*Íø2×PE ¬<‡çXýÅpt÷£'·›BX±­,UÎW«Šòœ¬Wþaê;y­UcÚ�”›ÌÉl¥M™[qñ 牎ŠÚ”yK+ûÒH¥C’hÊ+‘SVïÁƒáŠ-ÌãÚr„¹¡>�T#’ä7%¼Æ;˜SÈ�yü4�¸Sjéƒöšlß²‰RÿÃ1,À“ c¼‚àF¥K#mÐ[Û€¹Ïb¸{*§ŠÄÐEyøá›•,Ââ±×Ócìí�]k_§D®s‚UøÇ¿ž`^µ’…SNÈ¡ô®]D=9�¨LmÞ¼‰,Ç&Ú èÁÇÇ £BG¥xäzÚDmíÂvÆ_™d Ëxņv-íQ óS�šÍ šÑ.è=MÛ�VPI©hCøv�®‰1¼ÃÆcóÖ�õb¡ïÐ02–YLÖç¿îƒŽ>‹LŒh­WÃsJÕ•(â±³ây^[U kc ÉeM¨khCc#•8ãâ°€Sý¬r ¢çd1ÿ°¹¼I3VÓŽ9 åpO¤]ƒÛøtÔ£\ÏÞí½*S1â�p\g' $ï�£Š"ÁLÚ ùò{kjê@Æ‘C´�ÑE]s;~Ú´ ƒ™ÓqcœÙ¥Gµ{*M &>‰ÖO>d`®ÏŒ÷ì.~¿fTic’/1˜FÚàå˜n`EHƒÈÀn@óØÅ™Ùh#èjÎ>4wiS ì*uœßò*r³¦ïÛ 7Jy{]v ü š»9¹(ß÷Åþ'*ù±»ÜxjiúËC_ìþ\Ìí•`ÂÌ|“:O±]ð­œÇ ô°ÊêW¯YEµ»9P;ݶ–Ëøów¡[3õÊ·ìˆæï'eh*L¥YøŒ ƒÅ¬ÿú£×Èî‹Gc}\† áÀŒ‹ƒJVUX Ž@Oü²á{ ìJö ÀÚV•=Ëþ“(ç²?* t2Þ¹¬ÿ|-»ìªÙ9CûZ`  ûæÒRâó÷^fåÐ ´ó9,´{a ZºxQ†Â¾¬Ë²‘“gò½=¥Íaøˆpø‡Ï@ò¡$V Òc´{0¯lÃËןó/@ÜöȲ„F>à–[nÅúõkÈ `õ÷€ªg}gùÂ?8 þÁ#,ð&WQ/¿€sYE"¸ÃÔáƒé�™Fâ¡d95*Õ¨ÙGáŪ¡.]¤¤¦àÎ{À··0iÊJj'L;‚~’8ÈDUIa1öÆÆ ¯¨ˆ~¤6ðöóF;Ya9[+Ë1Âωߛ n¿ë4R.מ¯�îóf­«Cy]šÞÉ Üàµ×²ØÂAñ5ÞúëÏô02& ´t\uýM [T=t6¶d–ë脞sá”Y V?:áYõ0TV=ö7h–iÂ^•|7Ó®S©¼êlÀºcí'<—&à‡×b“�³Ÿ_¡l+ýØèQ¸¿u«�€Ušx_±äjJ+ý97fµ?ò¼mëF�ЩÐ:cö|¾j…¦2§?™Ú®¼úº¿,ÀªîCïgZ¥…†_t€U¶Û}n‘]Ë*L ŒOvîÈüÿk'�VÖ6N'N<ÃwP‹§�TÄö^T’Ê÷rŲޓÿðútÖ[oaóœYXö|OP¯aêzsªMoì¹,SVõ³ÞÏ;÷ìQÍŽ¬Õ€™Ó&âî{–+³Ø‘Í.«4VêÎ`Eðºõ+) D0¶û>ª|x ÿóðþ=©~±ºiÉû‰#åÃ5N¬¨·§÷=FÍ=†*«ô!8xZèÑ­m`¿@…ÁšÊB¯ZÊé,`!SÌÏCIÜj]¦«˜¨ÊÊ¥¯Œ¥›€”=»è5ãʨZÊ8±"™>K‘‘ã°ëë+»gÁ‚‘Ómq{¢ÑÒØ+²j™éÙ”sècD?q 4n°¡lzcò.Xú Eä´E¬ô¦ßºƒ3dà? -O…öäÛ¨^aêâ$2xÞÄ�—/� ×G¥Eeû±³Á9qÎ rWwÚµ[¾ü],Xs�„�§•«|¢f¥g¡ÕÆ�ž¹5ÈbeòDÞŸâWF©lD]½lÀþžî[ÜÄñÐéÇ#§ZoÒáDlÚù#Bü‡÷ÌÚ`•ésodfE¹®þ‹7nø¿Éž3#¨ѳž ù"~Œ"~©‚¬ õ-¨nÈ¥4]9¼Wžö¡ØKYeQp)¤tت¨H{÷ÝwÏ(}=�Ï x=ž‘®Üž Èš|0ž1’³òP:ø_þ/eû×°ó辞Ÿ)ÀšžqXQ��uÂ>~ïF5œ@¿`X�9* RyHû÷§«0:$¨dM=ž�÷V}_ohXlbD[‚¬'duûûn+Í›3š®JîSrÞÒ&”ŒÌ`<ÓÚÐ@E¦¯»ô)KKK#˜× •”–bò¤3ÛÔ®ƒUVi°ýƒ¨Ÿ_¬ç·>ø„ì“�~7w)¬ï¾ßÇ9ÿ&-�Å5‡ßÇ—"9+6=ÿxã-,š9]Ù—où™~ç–ǹì2Þ JlÞü ½ùÆÁ‡9ƒ³Xû=¸qâÙ0XOÕ½÷>ø+>üPQÉ’y“�Äá;2Ï;Úu©Œ‘‡#_¯Â±obó¯»àxh·Â>tZýño ãÀEÕ§Úî…ú¼‚9N5î<Õ6$>TŽzdž*ÃUò§¨M^KŽC Ãå!…¢2�XN‹€¯*ƒSe½óêòý=省Á£Ï.ÇKϼÖßÇ ˜©®Kú(€¦l×0|¼ri<F¨—ÂX”Üeïü¥¼îÝTµÙ7a³J즰æèʱZþä ±œôKöùtA_É ÀZ-·�ŠŸe¿ü•íUxXÌ_v•ÒÅøèhææ) «¬§‚ %aÁ>È0î@ä�äÝb•c¥ =[·oClÆqtV•c÷þŒ›5]uåxü™—©þ�䃇•\¥­ÿ(˜36L�îªÔ](«iÂò¯ ¡§ã¦O' Ú-S4çAv› ܇ŽÁüóQv,‰ê‹ÖÈ¡•YaIªÄu¬µÆÑìR”1ßg¿Š|2,Ë ½�ìW]$¥¦£¡¡ƒ ºê˜[Ã… Ô=”¥5Õ­'³ÒWÉovqü™C�,ƒG©Ž€k‹E-Ìô(¬Ãb‡”ÕuÐ.-�½Å¸í¶Û¨þ0¯¾ö*òXÔâç‰]ûSy¼ àÕ»³nYʹ#ßcöY˜ÆGÊ žz~WÛÛ£†×æ_‡�€™’&Í-½O úw6¢žD}‚‚jàI}­Ïc`´?­TåIÕ·"«x:Z ®£\l�§5UaQs8Œ*gÅÌ):£‚÷â2>ªèk:‚…BþiÌL@ ¤bR2é™îJe7X9{2/iŒÆêb²„s±;î~Zó)f/Z¢l~̯,¬*G>ÁèJ2B[;;°•€º‘1 Ä;�^TK{µ93¾#7µ­žÇ°‘òШ/8kMeoí v2WËœG—¾ÇÌ#6¶ÒËv/ñ"ˆŸ|¯È@7××rý­p…mÀtÍ]`j?ˆ ©Ÿ|ö# »¨¶A†¨ƒ°8éëagÈóÊ•ž³uض/\eRVy„§êÉØí p_ÑÐAp}:µ BŒ9ðj Dš°`¬¥Cõ5Ì`i#¤®B=Üxnñ@\ ãZž+5ì7•šáÎù…‘¼�G©ÌcŠâç^e.¸ ›ËÚDf¦Æ¸…9Ù»—?Š˜�ôî4Äzõ–UÕÑZAÑZhH®(+D~y}�«ì뉑<œÝ(ÕìJVêT“…�“U‚"]ªøh¡š¥³¥zævh%H/vQ"‰]NŘ€àѨão…1©9Í«9}!† ƒ,cWÊ0[bÖÒ¥¾ýÔMÈ‰ÓøÛ ÂÎŒÑÅnrí•k›<.õ&×w¹nª÷‹sí¯ÈÈs]Åi-ÿ—YÚ+1D®/Ï%é‡�H„…ŒÂ†ï×ÿ?{ßžE•~Ò é½R�IH ôЛt lØ»kYWÝ]E×ÞEÅJS¤I/!�@ Bzï½·ÿy'LLB€„¢èÿwŸgò}ß”;%3sï}Ï{ΡåûÐËãKÏF_¤Ü½x!}` ƒS¸gɽªòªÍÿáûoæÐ”9-Ë\ÇG©'ÏT"{j…Û¹õ‡fS u¿5áé7YIÇqäÈQf­šaHÿ~ØõÃ6œ¥äê’‡–B�¦ÊÂ`½«œ°xˆd‡UKË™WÛ«uC_µ‹y®¢…‹îí`•Åb°ZT3âàvåä}Ö~½ûw#=-®®î]j³yv­ßŒ) ê}÷Ýwˆåï�»÷œ ¡¬‚2Spêx8ú ë°ýi‚‹�=´K—>ÂLµV°ÔÖÊ’šïV0ÔÑÄÇd›8J6ެ,¦d9ö?ü�f&ꕬ±Çö�”œ .RŒLL0oþ<²6 éãÐýì}Ù6�`sYŸV̲’âdkJ¿ˆ¯è—pë×þLÉ*Mª3д�Ù¶Q±4gP3tôhêûÇÙSG�ά©zÀ�i piÅõäÜq×’ûh|�LŸNŒ‡3ðÌ tpÃXÊe˜Ñ_67̹ •”·�Á¿9Ap_7Gfé"îL"\í(¡¥�CaáÈ¡|Ö¸¡ý00dÀ°~ðæÑg÷F%³Q•ÏQV䟨ƒ�CŽdRB(¦Ík\’—ƒrºLÿDÿ^f{56·ÀÃÍM96õ� Ü.Î]?Kê:—úÜ´m£²Š¥EÇ@Ò¥¶ûÿiù‰Äcp¾ç ˜ »V%ád ;¡y°¢„͵(Uôòh¨«&½×µ¨þ‚u3söjøªƒt5ûõ÷d‹+ßCP^yE—¨¡µû{@"—A¨ôÞ>>ÿýؾª¯—B¦T03iÅSËC†0速*úDú† ùcž ÕÌO>º úL,Ò¡íßUvl߯, 3„N¿… SzJ–²È‰ŠB 3s Ö~É ÆAœ=‘ˆ‡^ÿ³|“.Ƹù‹á0 ão]ŒtJAç3Ãøý�>WN#íÔaúûPU¥Èv@a˜ªçš_PȾkë¹§$$Ñ.€ƒ¿³"Õõä³(/¯þw�ÌôõëÓ~QÛ÷úfmØö‰ZÚjø-x�#¦±M×Sd¹n¹ýnf=ë":: ó£awÛ³¨+ÏÅ�CšP å‚Ø„ýLLì‡ÄÔdèõî×ò³p0ãà—ª®ó#/�¶ö.x`Ãn4;¸aý_Cê¡ýðb²TÄßà¶ÿ¼ -J”ß°ä! ¿e148°® :FШж㻜/I‰gqôP$‚B®žï-D‘Ù3(¤ã8¡ýŠ‘”Ïb°fØð‘WÄb•:0¡R@Ö«Q*3O@×ÄöjTõ§Ô‘Ÿz ©ÑûàzYû·` µ©±…IŽùˆˆ8¨‹OòÝG9J««T>wÊ„6€U~ÐCLʨà@8XšÃì«·•ô4QÖ··³§Ÿ=¥ýX?ÁY]Þ¨®–f8v˜AE2Q¬mÈê'™V—HˆL?¬Y‡—_}÷Ý}—²}#=Ç„ár5ŠíEú1±1°cBÕµ(‘QÇ ŒmÅlzë]¯E@Ö`&m« «€«Ù °oÞ¶ � 0K ¤0XU€õtr°½ÉízZ¢bŽQÅ uü­n+ëÿ•ŽW h“iCôþgoC¿ŠêL|¼ü¬\¹‰r‘©8y`3Æs~pQÌÒSПì9µ´Zh„ª?ÿôOX= o�î'nI ¢}BHí%s»:)X%~!j;˜l/‹ÛU\£«:ÔyNlû‡�©%ŸÝ)r¬­û…¢$ã*e"ãU˜¹ŠGÊy‰Ÿpû"઀œ*¨ª.“øfÓ9MMŽmW_4€µýõR·éɧ£0X…)ÜþxU‹¢ˆ64T‚5†Ýs�¾ºO�µ_!˜q2ù-ÛV¾ö ßaš›k¯~®¦óµ­ûå×_à†1cQPDÀJƒìUžëáã‰øeÃV8uáûxààÁ°2ÒAãÇtý&ó±�²°åÊ*ðËo‡OˣܲfĉDUe5ªÊ³qKp¢ û0>©� ¶uôXu"–}þäìF²ïž@?7#8{z2YÈQ1Lø©�Ÿ;×16$Ó§¨.7zÕc¸¿�ÛváHÌiZ¬Y ÄÉôðÌ'�Ÿ¬°'ëÙgÊEȈ¡HËȃ©^ÒÏœ¢]-³È(4!@è̸ì)ª:4Ò׳�²Ç£§ÌƼ[ï€Yf~ Pè¶â(:è;¹+?g½-0!U-+´t‘ãîN9Z]$Ø8ÃuÒ$41«Ã„$µÔáG?Æymö Ÿ„œác`?jŒªËÑÌó�âN�ò†Ê\Ø�Ï!Ah(-¥]Û¤gf‘@ã WG3ø™I™dZþ±M®) Ëp ű»��x ñdõ–76²B­¦•BôrrqfRìT?Fö°6rÈ„542fh5p;^"ÔÑ 7;›,ÈS'`hæÈx¦-ëhyPsö Ä«uîmKL#ÛX—jFñH+ªƒ—›AÂ*V6"úØQÔQIPCÇV–†Š}a A}3½J8›ôBAƒ�äjla{›t:ô·5cܼ±º”v.u¸ñæ9t*¨H¸9Œþ¸ô`ÉÎÉÀ˜)óðÓ¦Ýhi(Üñƒ¨deÄÄ[^ Œ îçE»  XÓûÖÃà "91E<öÌâb²¥}00ù´ú¯8ï3ÉŸ6dÁz89À}È`TòxœOÃ…vj©9~LùÚ‹jycsÑ�ìã^G"°,!…žÁE(ˆ9-’‹|=«…ô¼rª’x *åܨbËû­AC—ÒÚµðõqAFfyò_غs‹ã/¯® ØlÍçˆ`o ½x<.–”œ5"ÈJ0�ŘD­ä´ ˜Pj¹”ªŠ“G�FE}ŽÅÆ£8%Ž’'TÜÐ5D*cè1?~�ô§PÈvgûÑ4Œ ¹ö„?õZɧ¼�Ú¿ŸÚ/»Þ¾Kl*oÞ¸´†ˆýeÂR¿– ðÁ½{�‘š ·+‹_«×ð/²FÜŽ“1Q015¥ôŸ>,ég¤YY€~”Qu6§¿âøI?]›¾J6õSO<‚>œn¼€÷Ýw3IÜVŸzA®Åçž]Ûhö| ‘Q§ñÕW_ÁÉÍ #™½�ÆÆ&›@ɤ©s0g03FØ`½ÿÑrúc= >ÐAdÖÙ9÷a–¬)žzãU˜8ô¾‡×¡NÉ$ IcØh[‡'^î°¬'?OŸ€%å ®¿BÏÊ]8�¬Ôã“ ‹x´šrêª0ƒÊ› Ö4ÑÖÐÐPX9’EÔ̺*«jáíCÙŠsk,_œ¶¶ÖJ5’öéÛñ‡vãÀ¯«1`ØX 6O?ó´â«bN€L¦ž”ƒ›W+�“˜ã‘Hc6™kï®%v`}ö‘[q+¥÷D’!!>N‘p”}‰?kV;;4#ß±GÉÌêî1„ïØŠðÛ0|Âe“Â$f°Uf29 “Ž‘¸iɃ0¶÷€ ƒµÿzíu8$ss²c¯Ž §*›ô°õ·�ì$!�×T“ÒŒ¹8±›ÌÕ=ž€YÓ¦¢˜™¿SgÎ!3¶ž™q•TPTM¹¿‘#”Œ­ØH­]ÿ+�iS´÷ÃÆÂœ ¸6¬_EÍW^w?Ö3Ñ쨷q‹â564d(¢$ÛüâYª"å¢ÊÈKP:ëíݽVo¾ú2_Ön¼¯:$G*¾ë¾}Ì´fçÓ&1Í¿lPªµ\Ð:ÈQ÷ñëêñëê0ý¦[•Y¹dNÄ?‚ºÒbv@­. ²núð!X:Rfì*Êi•ä¥2Ø$™b½`Îó²87ÉÁ­¡Ô¢d0xyù*Çz%ÎÐbèàáWRÅß~[C3&lЗûZXhõé7ð²vsˆIíß·gN1»²]ÛPšŸ¦ÜK4ÈzY'Ói#u0,�¾²‰“PÕÛSß÷¡çÎIUuZù2^ €µ†'MMMeê|ò>”ÄUVI]nÁ áQ?Ó!H£.kÿ™SX¡¬öç¤�ØF¿söÉ~oKëÏ †4µ´»|7Ô–e°Jú�j3Åö:/°pºåxÜJ…õ‰eø€à‘p>Ç}ë�ÿ òø^²=6w“¾R‘Gžx!dh¶/¶®nÊϪÚZ4ÐU�tØ�qeÆ{g€UV¼Ÿ2‡®Ü�ÈD ÀºçÀAøõi}¿»z¸_`•m#¾ÿéÌŽÎÉJƤI7Ȭåc¶�éñÑødÝV”œ�Åú0ýôÛ&dãбx®«�Q£B1ì†ùH¦BÆi‚­¿„Åq˜kŽ©³ÑÏ©ßý°•ôEúלI(N8Š�šf0O:�€‡^¢O•p{)ad©=°sžy#o]Œaœ Ù·nfÆuß¡øé¿/#ní7xð㯕õ¯ä�å U€õБÃÈÌ΂“#ƒ —QrüòÈ#÷ãQªx\ `•êM™Àçìâ£|VUæ0P“=ýßJ:¬e%”ƒ‹¢7�ëyG÷Ùûï*6,æ Úý]ËÞGs§w|F.÷\gΜ…¹³fv °ªu:0E¦ •õë~&ÈšIVZÈ…VùÃçח磶€ #ëk?½V'×ËÌú²Võ˜Â"öà ÛÊGzAƒ+àª,KM¦ÿ8ƒr«V­á/�ó’9›ø.îK%#ñ^m_¬<\0œI“.çî‡3gNÓǬ\Qíi¿^ûï?|³-�Õ7a‚2»¡Q FZÊ÷¬ÔÓL,I`í­8vü(¾øú3®Êxµ}�¿×TP9¨š‰C——èvû¢Û% Â’<œLˆ¡r�g‡]䫆 {ã °ë;¬ÜéGqqžÌ&íõXÞ]¾‚lã”b옗“› ™T�µó±[SY¢'ë!ª„ˆ÷®$°mÚ¾QTo4°ã>;ïãïú{é½s©†å¬LÝ9Çÿ¼±Œj,uxâ�³ÏÐDéô@,bRU£­ôîº^T PUäD:Wba×SZ¬=XÕë"jaxJ¿+€µ½©Hª:<ù²º©rþ*Ø6³‡_º °JµÂ² _ñˆUYˆJâjfz]MÄþ:›'^jcª‡!`�*õ+óT9`ù.­Z�ü–"Ì\d•ßrþ½ÜÎÀýË—ëÈúÝ)ê5ËNMb.dkßKüeߥáûõ€M›v+ò�­ô«î™Ë*›µÈ —­ý¶Î`è(}Iò—1Yñ´Yò›賴u,Å$AŽŸ+Ò£¶m´,,àam�eï¿1“é:©ß~@ùY ö­p(2Ñq±8ØQðȱ(¤ç馿†/[JþjÓ[³¹µZ8‘œ‹Ñsÿ‰Ó)Ùôl]EÀ“ŠlŒO¥çÀ×Ù‘¾ÃõpÃÌÉ^ÍC™‹vô…4Œ‰ÿõ¥$ Ä#òø)Ìœ1 »÷îD€úx÷f[‹^Œo‡GÒÒƒMUÿ>}Ø&Ù£¬¾ŽŒ!|&›ñÛ–-´íšOß�ØA¥Z3$çc$§*jõر}7‘°òä�"—À³þ½sËüÏÄ(ÿOÕ i Ö›„„ö«ü¿Ìy~4vE �ã¦:- 3ö¡ãyp?liKGI×Þ�ýú$j¤ë›BO“¬ZÆûõCÙà” ®‚vRJÛ¿¾‘ Wõ½}QYY =Öé‚á7ÜF"—#�6G²«q*>Eõ†(©§T­™ êëË „û߲(5¨ D¶g½6¦MŸÌkÓj3ÐDùäS$ðdµ ·iü‰hxR©(+%^‘L–8n3E–³xŽÆÆ´ª¢Š­f/¼ÃÇOÁÑð(e~ÚœE8d AîlÛ¼ 5¼BU -pq°‚Ž�>ùö&îa¨ÄmƒìU_…¾Þd\Žƒû)žT�J sÓ`&y,õêÇXŸ!Ê‹r òžÄ}Ïü ½ð&ŒJÎ*ÁÌ™³‘–O†l3%ë�jÐg¬An†bPOlg¼XÛÐådžj�)6¾^NTâ°Qì›kPBC¿¼œ¶õbqeR Çg\ן–2Úºzp Á`>CwÙª]‡ÀwV�8dª<ïêvZo Rgˆw%Îâ8f^7�,E&ï“LJ=kÔ—�Àcs«”À&뺂ÿ¯Ä˜SìgJ�ßœön¼æšdñ¬ÍãÁÛï~аßÖSW¿òØ9ñó#ÃÂÇOñw5cvÏÚµk•̘ !C{ °Êq…oY Ê'ˆ_¬™¹¥2ÉüÎE¬°64ÔcíÏ«ñ93ö[šé�×?'âNàL\³–*0gÁÍðìíÑysTÙœíúЈ]ÖòâBè±ã;øqSÉŠµtÅ:ž[tÄV‚¦ó$J¿=*Ÿ@IDATÙ�¸óÞ%H:{F‘ÿ‹=GÃïˆN,¡ôCFóÇœé™Ù–I¿…<4ë˜Á”�ÒF}Äó>7jŒ ™EWƒÕ›c)‹Q�¸Øpœ`†RJ Œ �^FøîÓé £4ô†ü½�ÒâScïæ‰ï×oÄ<‚ÇŒŸÍÕË•†X|F¤#{¡ûY¼2¤H']ÍH”u[ZèÝ%&y�Š<ª”�:¨‘Žóäg_îð²–erMÅDZ87æ_}ë 3°®o È@Ox걸vññmc^±sìIÓ™þ‡—b± À*ÓÕ,Ÿ-ÿgÈÐdÇRX#…ãO>Ì@Múõ÷'˜o×ã]¶›Ÿ�[µxóüþ®EÞÉ"ÔÕ{öbç¬Þ?á?ý€JÌTñy°¶½:L… íW¬— °nZ¿†²6Æm «¬ÿû×SðYõ•ÂÚɪr2!ë(¿×2؆TœHŽ?ÎLP{àrñÖ‹KèmÂÎ8§ë½XÛ:±óßš…|5�uÿ¶/XÛ!‹óÛ³îî'•Ù’úúLDÓí°Ië{ëÛ¶w�,” Ck¢Ç¨n�Å_Q1Àc­IU”ëñ%³ZêVßa YErH@Ö®‹´°øK€¬W“ÁºmÏDŸ<‚¿à®/Ëæ>yÿí˜0y:U*ZZy×ibÒÜÙÐd–x¹ls>ñ,Ì\Ü:Ôrï¤1˜~Ûb + Ç_ÂŒìƒQ¡cùÓ7h9²M½éAÏ{æÖ[nmc² ƒµŽ’dOH:væâS1˜Ùò<>C&Ý©ì'r?“®X؈øöL¹ëQzú£8;eôÝIcàDüº¥Üqó|Z74àƒwÞÅÐ9·côŒdèÐÛÈÀñgÒÎyy9aëÖ-°uñÀf&„-Yú0öm݉)³odÿb0~üþ; Ôi€GU>¬ Ï¢�vs`9`$¬\Ýd7J9¶7=÷ŒÙ¶Ú·›ÿR�'¼‡�‚¯ÓÙO^C)}Š<‡‡žÛêÊ?~Þ°YYCf«¥œÀ¾ƒ!#ÕYüÌà€} í$ßù¯y4³ÜsaoÙÚ¾æ¥&ÀÈì|¥Z¥h3±BWטíª. ó³p:R¶óbåÿ~ƒ‡²/wáöLÀÕë `•óÑ"øöWX?øàª$üþœ]ìq9Ë|9ŽÁDY)|oÕ“‘áJ¯Æµ?­Q0_‰ZŽLƒ&Í¢Ô£Șù~�€¯\v®�T~ð�¬Ã9NR‹X¢Èt±"-¥Œm7ïÛ‹«WãÆ©ÛVפÂ�#ƒáÞ{ ƒµ ¿Û~ÛŽ)dî\¬T¥"#á 3ø“ààÚçb«v¹ì¶…·+LV+;²…Œ”©ýŠ ¸Ê×Óc¤±‡%?_’�s¹âKmºðÎ[È&uºì„–KÕßÕòCÇ¢1oÚùR{ª/°vUÏ¥æÉ=ö§çÍWÀÕÿ_V¹N°Ò¦¥»¥°0—2ŽÎøòÇ÷<Ôaò„©|6cHÀX¬~Ê8LÆb¼•À½Œ¿[==»»‡k³ÞÉcáŒþž�# ¤Ä&TàÖþûŠ‹Ž#`•ÒlT�X€UïŸ÷(ç~µƒ×o}°LÙÍ6Ú|ñÃ'$ƒK”Ár¿û¼ø‹œKõÛ¯¦é6Ô–•ÆŸ6DÖ¤ÄPšè+>­6O¼ ¯Ž—Õó–1´‰Ó¨¥ýwužú)€-q)SbUP]Î]­W]ïj| ÀºqÅ' m}?‹ÿ¡­ûÅžï¾G±Ï`¸®ÿ¼ðà9l1¶Ô/n™þ�Y7ž;5cô?ßA QáØqê±ñã"ýÀÏ0srENRWùB/ÿ˜ÂÆËˈ#Õ âó+PL¶¡7Ùó6l&±c0¥S�±ŸŒÕz2ìl öc^’¾9ÌK³™YKÀÇ…2©·1ÉÇ×Á’LÓx&FN@/+oå¤c€�Ç ƒPZK�M²${Q2¶0+¿mÚÆ|^XöÌœ1|P_€õðp³D]³.}0mÑÜÜDe;KŒt±„dd'ÓÏ2KïyŸ}¾ùôéìãÍ„H_G|þÁ÷=a"ã�%0a¨MìÀV~õ%¶RàÝ÷–a É´}[õâ?èÇY«ÏKÓ¼ë”ýÎllÿ?”„á<úbúöëË8àXDìÚï¾ýÐç®§F/UËéSq*ó,"�Ð^�ɆҶg 9Ð?/½ñœû{ ½°-$@HNB¸K ‚AK]*á¸ù)ÌS-²¥³ÿÉd¹4 ¦5[ êè;»rÅ—dKöBV~-$ŸXG£™D/'²QËhóQІjz—ædpÜCVpK#N“(cÄ8�¶¡1,ì¼ØŸfÌ» ¶V¦lL áÕw€Tj45âdlªs%ŸIÀ Ãï¼þÔT•’¸’�“LÞòck{ì;x”6nnŒÉ&Á@»…6m±¨gÜÕœ$.MmKÊîAË�qeÆ` Ážýa0 ,n@p0¬eøèËo1wæ D†„åÙsçóø³ÇzÃÏ“ª5çX;Ø"âÈ ¤1áªN˜Ӧd|:ÃÃ’>©n<_^ #žSHðdò^u²¢¬¦Õwë7ÄĶÿ×aƒÿŒ�y ú „>ý"#ý «Ê©dh£ÄŸí�zc÷®Ðì„:>fJüBÞš>nhiŒ{’+1"z?ü{^Õ K[ôñ¢Ï+Á΂¼BÊ7àŸï‡þLJ¨k¦oltÊHòH'ZJ€ÕÛÓ L6ÒmÀ@²±Ãè/œ•_Äñ¤ $¥¤5-QQZÆä[þ¯+1˜÷ÌÖc‰H¥—mAa‰òÿu²¦r)•/csP×PƒÁüŸ[{A�±ðÔ´3”Í>¿ï*ï:5ŽÒáÂ\æ©O9$áCÞ«ƒ°µ}Ìù2«¾¦›É;Zböí“€®Å\½Z«ß_dýŠ EaA>âN§`ˆ�Ùq‰¤¡§!ñ$ý�(¿+¬¯rf›ÔÕÕ„RhÐ6†™±>,Üø…¾@v¤3–4`n¨)Å£�?«°!SÎÄQ~Ñßü°qѧÑ�rkÓn_г4E~îÅc°Ÿ7åe-`æìG÷ÖNÒÅn(ypºÄd¾Èhض´ÄŠ–¿L«§«eR‡êu �žKuH„¥tµV9. I‘à{èØÖ�®2ƒ>_þ)Ñ‹U-oÿ÷5êÃç°! ¤?ÜýJv�e£©©) âµfŠ p÷ëúŸ�ÌÀå`J}“1ÀAt/JÐ  ­Zfvå`Ú´ôÝñ”Éã±rͲ)}ÛX­¥e ZD¯ÝaÃÎ ”fãÐÎàæóûy¨çÓþÓ/dìEÖä¤3X³ê[�“yܹa%�éÍxþ_ïÁ˜ Fn^†°ÁlfC ÕÔ€Ûî¼·}õmßU6§Ú¡o[À/°FìÞŠê’,X¸ˆ„ðyó&dèÏiŇ߳A샠s’iZzøü»ÍxwÍaLO2NãSr“Z‰OVîÆé„³b,0>ئ½ÈÖÔCrz.)QqŒ š®®ú¸“íÝK e9¹ˆÜ¾‰Yp HHN§‚ŠóJé‹éD }–ÓpÜDñ¦Ù»g7E[¤çÓ×pª—¿« 6¤c&²8n¼Z½.`m¿Ns#�6¨½ßh=LOÂÇfLÅ 0åZI‘¬:iäÛ˰&Ï¢êbÇŽœ” ²ÌZvmS¾Ë øå'üó‹opÓҰ¼±¾Ãq´­|‰/W“Áªîêå—_CzJ*æß|‹: ŽÌ®–ã­‹ï¾,€U*j®Mãµ5è´¶íà_ö³èêzñÀæ6ýCf«`ª Õ¡z?¥}ý1.éÑq�/÷�^8ZúG›3ËQÍ‚ìQEÐÊŸ0W‡�?f7¦&ÆqÀ¤�éó¢öùGøÏ‡—Ö’áãO!�š8'OŸÂ¾Ÿß�V!%TŸF0Ÿ§!#Æwy´;™ÈÓ‹Ù‹M,RÚ¦©¶’‡ÓÊ;#žòH¦L¨Ñåû9�ÒCV”qùú‹�•$€ò‚LJ¹ä3ôÒàtUy“²ZN]Ä0sÿoËé 2è<�µ’ï`‘öÑ5¸ôñIÛ×`•C—{QÞYò.lõ¥xJK/Sm}==gÊ`dpáàèÔÉÚV©ÓÑ¥·òÎ’D5SRÛÀè"k+¸úW`±Êù]Íâ`fE6T0ï± _ß®öwÛÝ´¬²ÜŸý¯>}qj/=Hãè­ÄAýÊyù qÈúæ“Ὗ=õäÓW§€ž¬ëöÀä)ÓÑ—uÔÔWâ—�¿ÀÊk`—R“?ÿ ÌέgF–\f8 Ëî¾7=ßqÛõð‡€«�ÖS àüøË*ÜÌw᥊ ƒ ¥ñ”SkeÄ�IÖ{7 ·ÿð V!àªLR¾ýr9ìÞŽÉÓçuX_dHM»Xe¥¿3ƒµÃE¸Â¿ûóYSAÖ˜èãXöú¿1iòÔ5ÛØE ¥ÃJ×é•e$Aþë10søða¬[·sæÌ¹¦Wpëo?aÛöŸàá;„,2á´µ0”cB™d\·âÓ7˜øf�)dš:'£Oõ¬ic:ŽYå UkOXV™h+cGe%{Nj±d?GVµ0ÉõR«¬k`l—004¡?\«T±ZGO?díª\À*õˆLqwY¬YÙ™˜3S˜a\ üc¶r Àš•&ÁÖ ´ÿV¾øäž»í3~OLh >d²µG&q%&ÅÑC9g“’™ä”‰E7?ˆ^z6Ðe’ý “f¶ßì¼ïêí¼ðŒ^ŒcèRâRŠÄáTµñ-@Tb4ÂNme©~Ãï­“,“õå<²ØÒØ´’ýü‘]­²^íû[ï¿IéÒYJÌn“ÝgM™ãäDÔÿ÷%å$ÀßÙzIŽUØJe;·ž’EùÄËmÀwû¸£zÞ’,/ ¬ ‹ì¯:®T“E%£ž{+P;J©Wêë ¨œ›Á„¶sÉkòÿ¸T« °Êº²?‰ɧ´¥¦«¿€ÝºÏq šúvL¬—c÷h¨ÑH1Aÿ`DIŒ3r])¢ä–@ÐÓ–Éë�´ƒ¨b¢]n�>œ)ÄwN&£²ÞnVô mÆþû&žÿß'ð¢U€>A¡ÐQƒq$2Æz8žY†ÒÛéI™ ¯y´âpv@2AC-&·hj‘á=&�5¨.ÊCXãè”èu¦ý†¯»#š¹¼–lÈØÓIh!0[››�5›ö� ‘@ °7ÕLàÔÛ M$nŽM c´ »Ã´ô3bÒ8*Ý90¡SeT·×Ç ´[¨!p8uÖMJÒÔ‰ãGqÃ� Pž��—¡açvôk®U®Mwÿè÷÷F𜅌AhQ™+ÕšÆpöèƒj&fæ@us÷Á,ö\o«¾=a{1uŒ)hK ßÁ8ÝH%(Þ£NCúbJumF8üq À²+³÷o¤Tó äÒ+ÔÕÕ'÷ÿÂk˜ƒ\tHÌ0!ëöç-y2 !TøŽ±åZ‚²~´`9›p’É“a”Ð-ƒ;÷]X\@À.�@&�>¶;÷ìÄ ?Oż¤ˆqêÒJxùúÀŠÒΉôv/£ýšnK¡Â`5Ö3G Ö$Úº è[ôñæý–MÉâFSJùÆ[ÁÊ̹ɧaMÕ1“g0ÑÓ‚ìç4’‰«cd�“§bI~;ŠðCQ0ÆkZ&ì{÷E.}í“31jü8½Î£üyJz>Á]#" Œ =º/î8›>½áÆñØž�cp¶º�µ6#áÄa 5%…ù$¥ñ>%ÁHŠ1Y¨)gøl�E|¤^AÏ<‡8Þ§-óï„É„‘Ð7Ò(ó<¦ïÇÿƒ¼L‡ôG=“g‡ú£ž¸wþóÿG˜Ë8¸+¯³…±Jõ[p<æ$Jz9�¤¤Áëî€9·Ü„ƒ{áH±¥ÚF$g$AúóþŽ_i4ϱP”¡¾]µƒúáh|"P–‡|ÊÅÅåhb›}*§g3 É^¥EV‹üˆ/Ú±žL`(còrVNúÐz¢}I ñ,Ëøß+úícÉí—÷ô»Ô'‰&jìMOlUÛ”žÖ÷G®½´Ë=9ç¿4ÈZB³bSc]fMàáÅ7SîÚV޽ù‚?Iß”BèšZ�"ߌ1£GãìÙDØ[êRvà䦜¢T�3Ýóh—×Jíœt¹°‡3ËJŠè¥b¿~}`N:ù{ï}ˆ@ÓLœ8¸ ~Ý‹S”}{äÑŰñgʉù1ãßo`F�I-tkرñÒ¿Ä GŽWšÞÈà·ýÃ(À«<< ή¶íõü{rRGåÚo© éÐô¤cÒ“ý\j]Kf€È$ZõA TDÚ‘GÒÒ7böO¶²>°KúX˜sÓ­ À*uŠ|�—§÷¥ª?o¹›[ïó옑ìãëË€”6~ó.’O`à ‘JæQ^|‡ÂÁÑŽŽØðÃÿØÁÑÇ4ÊÝJIMIÄ×_¾OóTú§ù(óÚÿY¼x1üƒù²@ŸÔVéˆöË/õ=ŽR 6çX-"?, „ö2ÄkZE‰k¤å¼·S‚â"[ñØOò: â1·2KÔýˆ„¤Úqm ¾‡ª‹”Oa°ê’¡–I†‰'6ý´’¾�9pópcPO óßN�úZš�!&> aa‡(qU‡¾4D�I­€uñ;œ�"M ,áÍà®A/3ìØA v s³ékÕ„Æm¢o�”®‡ve嬬‘ÊNY%™Q·Ýqfܸ�Il€9�@ÀÕÁgS3áÈì4ƒ^zlDu1ÊY ô}tòñGÝÈP úßråiÿÂ>Í�™]Û9J¶eEeÆ)Üžq¨II•ö«l�Eée¤¸Þ­¬ßš+„—p‚YRÿüç?<ž�Fd³ähDÛ~ò-­ehJ‰“”¶yò¥€Ù{RÌ_õû~+›¯ïEö´e2þŒ²zå ÊlkÊò× ÞÚ`mi6þ²½ûŸo¥ãq9Ǩ©cÑc€uÒäixáùç.gw×|XEÆHyê¤>KrïU ÏÌTvüŒº/Ñ&÷¢Ô%żO?ØM˜~ÍÏãb;Ȉ�‚©Õ…ÁÊÉ3æÁŸ÷ì¶Í¿ …ƒ¹c‡v1s0VN®fµ1ÇõõŒñóÔ˜°ðNü´- #Ù‰;Ë>ÿã¨üÀ „Þ}»öª€µ…oÝS‘ûÐPY„ JÀ䦤!»(‹lùXŤ”^�oóYÞÃLÇìÌL dÛ*r5»¶®†;êbéÉôÖ+O`â 7v8UX£öm¤ Ab"vHl‡’0ÖéÉ�˜°ß¶ýƒ»µÙa²ÃŸ&;ü•eß�°JÅÌ’�ÕȺ[õ�=‡•¾�Á�‚½r/Ê$zuP¯VØØÔ¤´kú�°êò®>Õþˆ,“6¤}¤«õÿJóÖýð&NŸç«‰ô”ñ¦L�”tf­£ŸN3âEÓ�²Óϔآä;3È{ ²vU¿¥•5̘аóÇoQK—{^}}B:pgÃÂ�„ m2¦Í˜ ƒÆz¤QIeÙŸaè°‘øù«ÿ¢dõg ˆÅ£–òÁ¾}:ø Œ(%{ÞÆL6d“üã…Ñg޲V‰ô½¡_Rvv²Øv§Ñ_¼ —Ûm $ÿò ´íÝymšÙ_KĆ­{qÓM7aÅÿ^ä€ÞŽ:=µŒr¡,±>yoï¾LZËÇèÐ1ˆ£Ù'kö\©ðbÀm²j+0”êVLè“r”ƒu›Ì3(§W¼†µF�ƒõ�PeYOþظº]5€uÑÒ…ô+Ê";`H‡CÐ#;؉}Ëî¬ê†�V™/ Ö‹¬ê¶òùê/¨^r ·ÞþÀE¥je݃ìW»8¹É×ÿ+ݼ³n¼…�”"Aí•-$TŠš¤©üàŸ‹1XÕu®×OñÄk/7)ïvIB¼^Š““Ó5Xå\½<û2±Óšc G`•yïRÁèБ£aRé¦MëááÓƒ ’EJÀ¾šZ*)Ý×Y6X]ÖÓÏökO·íjý+X#ùÖ¾°IÿŒ2„ê:÷’•}&&.m ë‘c”Ðßô+ï· ¿Ì©Çœˆ ÊW&ÙÏÎ=;fö'Þzãe…ííÌ ¼”�›@c1>Þy4RXd�ŒÚ­€¬¡#'3©<„`È Ì™1߯úFa:;9öpßÊÞþØ?*À* œ¬©´7x×o4†ÙÃiVâ2”w±x�*Ár~—8 Ä «ëðcY/ô�Ø °»¤/.cPQËpU¶“I—^µ³#h±`ÎMqÉJÀÐ-HˆBÒÕf½$c…öqˆ$°ÿÅ“ŠÌœ"TëÐvÂÕSÇ�BDäI„Ÿ©ÃéÓiʳãàdË„3éÁ†‰pcBG¡¤V[IR/mÒÁ’i!”n®„ŸË¾Ä$Šˆ_Tä¢&(o2 �_“�C•s’?ò~¬[ó�òn“DyïuŽÑ´­Ü�/j}LÛ!ñ\ÃL6iâó¢­]Åj¤í¹ÒývãÐþ–«”•füµ™¬å…9Ð`�È”Á¥�«ÞV®uZ¦xþéÇhT }PG¢_(¡cFäi¢?¢3?í±•/C';#¾dûtøçJ`\˜B]±÷:¬x‰õdÕdeeÑë(šëQؾs7žñ5¸»¹ 3·3Þ K;;Þá¥Ìzµåƒ­ /”SþÁÙÁ†Ö zZ9^`•Ã�NŠtJ¬lmÒØHj¨zþ*Q^,nï®èЙ¹ÄáwX,õ‹Ô…Ô+õô´„…GÀ…�Nç²ñ—µe~|v^Þþwdä~�® ¶}Ž7_}=ü ßs¯Â´ð§ÖºÊb� Û 'ɪ2ý]ú·3ƒ5*òÁÐß�÷ݹH‘¯sè4¶ß¿|pµ¶¾FF& (æÑç´ŠÒr:xì©ç(ûPOÙ¼á(ÈɤM®â}7�Ìdµˆ¬¯¬*Ò�’éÇåo²á°Q¤.´nWóßûÏ‹dîf£@°²xݪ�yN¼‡èk�Ë£€VÇOÀxJæª²Ž²âÝ÷ÞÀÚZ³æHv�ΰÑf]½ØEbÙ£ÿ`lܲÿ~óuL7‰R±ýñåò/ƒ{6âÈÑCÌ–Šæ€Š^«G’mêNY GkÞYà¶Lz.¤ßÓô‰ÃQÕ¨ƒ¤”,ÉÔb‡£þÔìÏ`6jIQr dõw¡4óI‚7à•�¾…·_ ^}åEÅïØÌÈ€YU¦0 3§„Lµ�Ñc`Èç畽„‹TDÞŠcÉ¥Ìʶ;ˆÛŠD�* +åt§Ì\@�¥€6 U2B¥“.˜KI çžÞ�’âL¼½`@üåzÉs“��­€þAAA¨e6¢$,4ïÛÑz‰ù·A’Ϋ,´njÀ¬•ŸpðCÚ{ô½+‹¤n�.FYr÷íô,ð9/è®Kaa�r=çÌÿ�Ý*ËRÈ�&«ÃÝÍ]]õª} ƒõzXÕ“l\óMšÚ™ñþig *+z÷`•:É{óVÜöãúu©ûû£?3èåGÿ¿°°}”2[‹¡C;‚:r<�ìØçñ½(Y¶§è·7׃ï Óá³ì404(ÍÙ ÏÀ™2ŠÕÕ(¡ÇbFV.’ó `AÇ® ùiñà�IÏÄŠÙ˜µð삼 z{P’ôž¥KaOfÆÏ«¿Å×_}�¤˜Ó˜>k.z“Ý÷ý7+pÓ]�uÔzOjéèr>µ/y”BÚþËôMöÂÏß/GÐБW²Ú1ň‰_2u§def(«…tÊÔm\í.À*Û´’wžg§LIµ¾®>%ë·'«Ô!ï= ¦È»³5›|1w,­ ÿR‚D­ëw\~½þÊdŸ.…2Kî”sÚ¶åWLœÒʈÈg`¥€É?ƒ§Íë֡ǯË¿üA6:h4w†¥�¤ìÛµ«V|@‰Çмƒ½c‡úd�¤ÊÒwXÀñP7�ÂÏ;vÁG_›>¦3•~MûõV.½yÉÉ>çþ‡4Q£¥K‰áy´Phe;îݹ±:î°ë×À��©§šƒk Äk¥ÅRŠßË?~�ÏŽ¢cOà‹/>GH6ÿçµÙH´íçÓë1ìö§Ùîf‚H.²kšñïÿ,S¤4K£Ã±éX|ûú£7¬qê×a�›ŒAónW¹/m¤Œª|–‹@Ÿõb#–>øXÀ* Ýø+¬)¿•D°÷Xv=Ü›ËÑwî"e»?úÏG_¾ÇçLÁW·îÙ„¿û´4�€.’+fÌŸJ@“~· xJ9J+„ì¼ JŒv|ɲšÚReJ¡§Û5SLÖ¹X `?Y¦K•Gžº“>F©”2 ½ÔªW¼|ù×ïJ –}ÒßûãW\éŸTÁ»ÿû/òéýTVR† £Gâ(ÿ÷?sá@ëŸt˜—½[éÓ¶a.þn¿ìü…6´8/±IƒÀ�#'œLLB&=uc˜Ôôé×_`Æ”:œYFi-ô/Óê0ÿïðcý9iôÁí¤Ñÿçu5Îað(ÊOAç6½§u[[õoXeÛ윎k³ÿR «¬±qŒÙá–%KÈ2½¹[—A¤´SSÎÒsÜM™”�Ø~X Á‚SÇ3æ�ÅÓ�¿€ ›wÀËÃO±8Ž�¿®ÁlzE È0ûœšC8ã2ØÏwf|½éó© V3ÚñŒ¢ +¨üôí¶„[9ö¦.À¥fÆ\`•"ýqÕúH@Gx”¾º0F¯fq&@(×T€ìÖï­ýiCÔØˆ «j7êþel Ç*mMç±�\ Å_–Ë=~Ú©°¯X– ‹°T%F)ÛªåâjeêZ—þkwV©ÉÙÉ ÃBF+Ÿ�kÞ{:_™åvÇýJ�[9Ö�e =¤ÿÀ«¯!`ÆMç¬�ë�ßUu øuè¢Äj,%½zTæ— O€?fÜz7z3 IAψ’½6~ï­‡>Ç�éÑGÐÛÛÇ£NãHR*œª­‘¸; ;NîA1c8³_ª"ˆy"!ýúÃÎ@šfððô‚¿›3 Èf´%XVYY owkÔ0‰9™É¦¡Ã©ê@ŧ‚¬èh3™’–+½b�œ¬iXW4jD"ˆhA&ù’»n†%­ñªÞjµãÆõEä‰l<Àxä=?�šâl*¢9a䄱0h.Æ�ツ)íýæ5U šR´e´£1ÌHëpiÒŒ�P¤««oñø3”’+``±°m¹å�àüÖ‘eH@ä”"Ø?zŒ6Ö•ã0‰/}½Š²LâÔ$ûý Â"bÈ´¤2fB mÂ1~,årKÊɾe²\@ ¼ig6ú±‘ýÎk8C?R3g#2@ÈÀ­ÅX/DŸ:£´xÄW4c¿O=œÉUZ$…éQN¶Ù¬�*Q¦&ˆŠØNµÁýðg¢Ì¡£ÇQ„UWúÃZp-§lrm=mÞ‚GÂ�j}IÉgaH Õ�XÆ�Ë?$¶ET ²±µ¤RW3™›æ1z,´8è¨#}rØðL6©„�=g+sX“1[E&r|b"c¥yÈ),"Ñ&€ñç~Tk¤ºa3JOYðð¿ø®Ô¤ú¡5_7L(k®À»!Î`¯LöT¬Ú°möRÉoÄ >¸gɃ VÉÿ ò³óM`zܰ èš»aé] `¬¯‹²o+ ¼—29 ¶Švsúô™î¤ô�,Œ ~,d¦ÖWS��ûµ4lAhHÙÌCÑ»·ï{MÅ›V≿¬ü–ŠdÅFµpòhlxnÚ�•8N¦µ>™¨ÕL\0ÐÑDåÁ�ôè­ÁI¤†‡Â98€Iræ0â¸;�@lÙ¯-zzˆÏ-GDÔQ^›bÜH¬ýd­Ì ìºÙR ØTCô%ö¹¹¥Y”˶t¢Ÿl&Žè ZPÚ•#æLýYûSå¤/ŸËXäÓ®ÁÒTd/K’yM½2†61×Gc%V-Ü™¸�¢Ø~ÕÀ Ž®v3j¨® ~Ó±¯LÁíÊ{ 3-M¾°kû&41Ãgþ¢ÛàéæMöfÇàLŸ�Ö®êœÎh3U 5›šõÓgÍîjUzOF²adÖ³¶òò²°‡AHsWš’ÛAßÄ’^¬' r û3”¼M¢G 6\¹?³5PØe¥]Ì´"CWJiQ>BÆ`ã†õ Â.GzzåñÈèjWöí%š†è’1$™Ž¾ý)†ŒÄì­\TäADŽÀ ô �R@i--mŒdÃÛÝÒz¿4CÖKuÀW®þ “SR™¥fLÀƒÞU¥(©¦ïñ2¶¼Æõ¥˜?š¾d� Búáß:¸7™µ™8J¿ )Ã@£–fácà×× '’ó1Å›™x½ƒ±mw$>ùrÆäy‹y dǤ¦bê”Ñʳ©QæúšÐª/B Õ«›E¶� cuå™Í¡¡o�u+W"((“fr0ÇAY^v<È,�U^êóÍ4à;·õúÉ5’ˆ$.8ÙZÇ–TV»^¬³^ËAÞgŸ �’ÌY}+Ê”@¸°ËMÈpFpG #cØ*2G­A*ÙO篡Ŧ–½N–z²¥ê™9(ϱ%W�Á’ îÒí;ovͧ&žAi~FŽ�¨ìëÓO?§¯´9ßm¼¾¼ž.”)6rÔyÇQZZŠÃ{\w&@Õs†öyþA3ì ƒ‘÷Ç•µC#¹>?ï¾*{òf?ôØU©ëJÎ�Ð)7×TÖ|ÞÏb‚¨�èO%K‚¢íË)úŠxÒSx€ �ÊP´0s·¬¦ Îî”Äç;LÉ=‰òª2˜êkà©-¼ùKðöûá�eo±óß1*31¿¬[¡HوǶ­"STU]Ë JúLž2sàófh�Ík>¦÷‰!žxöeÜ~×JÍgóÐ4:¾5á%9é,2Ó)1Ü€§ž}ß|ðª²ã`Á�rZÒ„†N¢P9.y¸K€uÙó÷)އ}ˆžlTMðâ;®WûÓGÂÑíÊoCú¥t`• $“ùBk‡tó‡3Q{°v³Ú.W“öC‚$òíªÈ»QÞk¢²q¡uºÚ®«ygNSÚAùÿ\DÖ¸«m{:O�ª…%…T…0&[ú8ÆMžGß› Øm@¼ÞYÄKÃ�åÅŠiÊ6úe`OFŽÜ¥€po¼ú<ŠØþ‹m€&�´¾~;dÕÀúœC¨×ׂé€vqðÇøàÃw�N/¦'—>„SY9¼BÚÖ ?†ˆÔ³ôWâVJ#½ýÖ;8~<³fÿ.�òô¥Vý× ¸z½¬1qQTKúóŸ!XÏÄ“ÞâW~<ûQ{õabï_‰Å*7¥0Xö§75 ™ô'ŸÝ-Ã3�U-*À*¿%Yi8í/ŠËrñÔ ObÁTù&Ï™ S‚LC'âÛ5ïc�0í6xîå§ ÔEð !ju×ݧŒ#%À­2OIec# Lè¹Xi/—+qÀöž¦í·k�õ´Ÿsõ¾·X;×*ì(I`×rrí Ž'*b*Ü>à®öÕzÔ§ün"À,clµmj!Fýi‰È´^¬˜õÒE4cÕOÒ—5pútýO½J ;#‚j—N ;{ö,ã_i8xü,ÆŽ¢ò�­7z“ YHû©²Ò ÚOl«(B� ´ôLÛøZ¨˜µòç}˜èX kª&f4“]Œƒ›¿F²A ýQSÉ:-Ã�‡¼Ý'’'žxö)è–3y¾–@ kX9{Ñ®Kºš(iÐDjr***+PžS sSÆØ/*d‚sK]í, `KE#’<ÎÐ ¬²’’´Ožu#ì™zèðq4ÐjLËÐ Ú-58Ÿ‚‡¸‘سá'Ôç%Â}@Õ�`jë‰êqc ¼ï�ÆÐ!È÷&“qô(Tº¸#—²ºÙƒØ�ÄÑ4f"*ïz8¶wXt?êŽÆA=1¡ZwÑb|³f‰K´5¡åH-­FtôÌŠÃŽƒŒñê“§ÝL²L-c�)ˆ#c´‰2µ–V¶Ê˜ÒÆÖ”ç jaÇÑ2!ËaÁçïøž_�ãî*>•†«6âéLî^¶Œ@nBf�Aa=Лʚ‘©Ù¨v"ÉÖûÅ¡huº0¤rÏü[nÅíw/ENê)¤�>/g[J+Óâ‡öJzìî9tI+L¢W­6c¾ULvÍÉ+B¯à@:“Sª"yû…!es�²/šCE SÞg>¾q&j/%jKð�dOW¤3æ�›‘ GÐnê�¸ÆÀ'O¢lñnħ爵CxÔa‚¸ŸQæY[±¦1²vUnidÕa\ECCSI,œsãí”(Î$�˜ŠÞ½1qìxhTàxB#»%ÜWã5L„áÿ3Šl׊ªZÊ»’Mš‡¢ÂRªŽZ+÷ ú±N›> qÂPOÝÆš•yL0潕DO{G{†"loo‹㦠¾à4íhq@,'-%�@'¥°©ÀTT\Çm 0ñ©çÑòá›p-È*³à¯o9f:Ç­.¨$.�Ï’Ä­n]x íéx ¦O`ÂÀP‡ILO%³¸Û¶îÁÐ�¾Là�%€÷6ÉA>ýp<¹O/ž„8ó@¶Æ À¦½H)¨†žV=mîŽC›ÊéÄ:l�që­sQ›veU±«•˜¹ÇñƒG…’uÌX7½c­˪'>Õ+r�n–d¦Û*ï5¶iUk¨& ÔêÚÚiíØª¹D@yGŠZ€Ä]¤miÿ[¤„ó×|Û¡nÙ¯E„¬w-Û ¹¹âµ•ýËû[Šß_¹è–÷WY Î’îÏŒƒ„¸p”P»Š�‚gàfÄØÒŒ»ýØÐ Á¶=‘ùz¾ÔÇO˜Œá#)³‘‘ŠUk7P<k·ìÆr‚B>}ûa8�©Ãû·)þQN®žÊÿRm¤¯äfª¯(@EÊ! 1‹2&§ùLgwOL ñaA/¸Û[`ÞÂ;”`ô0Êh´/=X¥"Ì)Â2`H-ÒÉrzç+ýVùRuîÿyË‚ùV9+²�»°ÊºI”øyí*L�6›@^ 2R“qÇâûdÑe•{—>Ú°îß²Ššü)0¤krçö È+ªQ$jiN]ÏzïÑdŸ�Â8Juú÷Àu03iöaû†á<¡;f.÷ä ccâÈÖ<Žøø“”¡0Â�á£ÈÖý=ؘËÀì�ß|F&öfä�ÚCé7WfÍø‘íe¡L²¯6Bb^?ˆÌZ)â“Ö·o_å{OþÈ3Ð�çÀÍÞ'w­FÄÑ“ˆ9Ƭ¨ÁdК’ÝvcÇNÀJh•ãÇß"©íŸƒô‘ða†[äé œ>r”ìW/Üý‚©c84õì –0›ÈÈoú�ùÊŽNFúYŒ1B9ü˜˜ƒØHyâº&=&«å£Ži^ô�¨a– ;{Â"0*t,ò)ñbÌŒó-;~Ff³g/€§oúû È>¬�Å*Ï�"ëÊ�Œdò¨/viÄj-¬l,¸Ðu�ç¯y´õ«aÂën²ýW%ÁAͦl$¨Ïª€ÖíŸS9)£ èpz¸° ¾LÈ UÙ–+)'µµ1ÑÏ ãzJùýGÿ±f¢È+ÿy ÷/}DÙõ®íÛ Tg"08ø¢‡bN¶³¬vçP]ù:Y˜ž”@6Jу¬r:Ý}†®“SïÁa4p]mÁ8$ƒ˜Ààã冯¿_ o/Ï@«H»˜ó¹ÔÒ¦´?U\•©}±róCF2%~ DŽ�…þýúò^[Š­¿¬Ä†UË)ér�l¯`ýù½G0óî2øìÒ¾ ¾sL#+7¸ÒÿCJèÄ9Ì>ì�Ól‡EBÌ“ƒ¡�AmÛ‰Ìhb|\]œù¾�Qf£?ƒa½½1ØÔÒÏ>õ(2ÙáÊwˆZ¾þüS„­}.dñ�ååµ×ßæàÅááû¸Š†Ò¾Éº¹ôˆ�d0Ì�Ò«²þ_Q¯@«çµÑ°Ñ|·ªk^êS®ñY&aQ} Ž�Ú—Ú¶§Ë[šj(�kA‹€Å[Ñ‘�‡r¶U™«q(KÅë í=ñ’ kd‘6ÞÿþGZïâãU»hÏF¥xìøÑûˆ>ïƒc8¥³¥D¼ù2lbÿ M·Å;÷Qü¤ 5ަ°7¿ÃáûòþüeãFL?é_¼ó�ŽTt¸'bŽ"ãÛÏñÁæ-8z(Œ§+ÉiŸ|ú1¾üü=*gX·ÕÓÈ�--!ðÛ®ßèi–À@h@Û²gœrW:È©)G•t˜…œ‘•§x¥°OfL¿¥¦ò,Œâ€1ÄÖ ãŸ^†2JX­]ó¦>ö:¼§-l ¦VPÎWß{ ¥7û`öÍ7Q¾Ø nìoÈjÀ`“¡2µ&å9v7mÃøé ‘õ5LtÊáä=œì[}Z0|�LF›TÂd ”œšÈh÷tDêæ/á»øù¶cÿ#¿Ìš6 p<õòÓxˆÉÿxý9LŸ0 Ž t.#ØGo_\í `U×é À*ÛìܹSy·ËÕºÔÏää#ÌœÏfÒÔùǧ®#žvsgߨþ¼jŸÓ¦ÌûK¬¯ýó Ì�;bXq¢¤\ئ5øü³éåÏ@ÙÝLŒh}^\ÜÜ®ømÛ¼IX¯7�õŠOìoPÁA*d�‡§~ð¢gÓ`í¼²#“Ô©ó² ýv"C,„>‡òùw(¯¾ö*{L`;âvMNç­÷^a°”í5ÙOf몕Ÿ¢ÿ  klÜ &ÀtdTÏ!|ûJö?ûSñ¢çÛªu\Ÿ*Àz<úÐUi h}“Òº>¾.”Ül­fL›Äd‚&v$‡ÄŒ,Üw×B,ýÇ«ˆ��ãØÞyÕ:pµ5$™Èüá)‚ïõÞ(©¤ êÈ‘XKP¹´†cŒÆZ‘Ù(^Ÿ•dê³/�^6d£“ÝÚ¬ƒGþù:^{ã "î�çQ²g 4­-¡•”Äñ“´�}q‚}ìÓi�†�…óøÉùê{Š ¯€�-�õxøÕe8íàÓÄ4µ¶m•´NA�~œÆ´ëû™’ÁÍŒMæÃ@_9Œµµ�$b¡Ó@À[›±ÚØÁw’ ’s-) lK¬A—À­¾)=ÌC‘Ø Mvb-ê,�_wxŽ F®™!vds¤j¢ßŒ(C\ƒ_¶‚ �W“Ø#ˆ¦r¥•�=&M�Æ•míݨ��uë7¢o??¤ò<ã¢IØ)æ2RKjHöÑÆÎð8Ù˜’i€Á#&�ô0ŽñiÚªp¼˜›™‚œòF”3ÆjinŠcq (¯mæÿW ºfÎWô¥û/�¼^ÚJ|Ë€�n&ADc]MŽë´±mÛ^29ãñÌ Ï!!*Šñd+Ê çã§Õ+p(|+­àhOEBÑ»o½®ÜÏN|FEMîËßa?ß§ÞwÉHzˆ�Ž¡Lñ Ú¨Ñë×ÂAñò4` Î2SVQLÉc¯�SÒ’¡ç:œ¶ VÈ¥g­­™.†“uëàà€øØ£˜2s6c7çpÌ×3äçP–·¥žrÖÇaFÒJQ=lË ÚÖ£�ëi1龜Ì\í:ø“�{ïÒ‡x�meR³ù··a!LhüþsX¾ó Ò™Íõž'prïNä�œp*eÄ�„­¶}}u©´£[‡L*� 2�Íš ÈkxòÜ3âqhÕ:ìÍ"3·ZÉ™”!¦ÛÙätÞß-dºR¦XK“8P î[<gÓ p–òÄMFÖ�‹±d:ms4(»\ФècH#³øhøOpc,@/9ICØ¥** Ô:À¬"þ”¾¼ã¯®£ÊK;¤¨ð¿«&¿K,\ö+ï׫µ¿¶—a_òß~¥NüºKÃ÷ë_ŒØÔŦ×í¬ ‚¬ÒøK£Ö�I´?¢ô2#C¦¥V‘:;ûf!$3ûÁ.ÌœxïÃw樛£#U¡ÊäIvè�½»h´ äSǼø2z¼ðÌ‹˜7siëE|0s)fH­øf…™u5ÎC‹/q=j¿Üð!™pV8~ˆÀÒa²ù é‘5&lŒœ{û\�])Ò’ &7¥tF˜‘"�C'×:›'_fëõ×.¹”x•H©³¥?FIÞtJОÁúÍ¿)ÎÞuÁÖÑ'O3�ÞN¸;gíêåwA€U¶·²q"û)¯•¡ÄlW/4ä§øt¦y¹1Ã(”Ò`÷>øµéGÀ§O¿îìö¢ëس Í ÕX¼x‰";Ð~eané±Qœ1u4e€ Ș½CW¿øâK‚�­�9G—6€µý¶=ù./Þ®:þ]Õ!¬Þ–MÌ&#Üèûx®î}˜ÍÃLîiœ“q&l#3–rÑl`I ¤…>†HOË€&MÖƒ‡ C `9çý{w `Ìl˜iV"£¤V1àë¦ìVä”ãb�ãýO>€±±9n[úöoÿ ƒ‚ƒ¨ÃŸk¼+Ø™sbÖÙÈàA9drö÷cçÍþƒÇtuøÊ G4¥qQõçÕ,tU7^·v…BV*¹ïfEÆGUIhPŸ=u=õÓñãwP²rUë€�ëªY–U¡ÃÙÉv…ͤ™Ð#3ÊrÆtŒZ¿¦�ɪn/ŸûèïÁNÎÜYëê:êûZ~w>^u�+ù¹�@²ŽÄ÷JJ™­VØ$¾/ì|øÐßW-{÷îUêᅢUŽÙ”ìæ+e±ªçÞ�Oaô?zÿ�Xpë¢î¬~ÍÖ±²°T:¹Â4»taNVµ8ðþÈ&ØU�~’žâCÚ@FY.žäÝ)ž}Éü¢|¿³«YßÐÑ5@ÜÉXdœ9�"²á'×!¥@IDAT0ÉÆÄÒ!S»*vì ÛŠ »"ƒ`Þ»Æ’íØ®4VÁÃÛƒ(ÇkëàJæÉpf\&`³(C†� o¢/³oM<_Ü`U«>f2>”;%c�u2 ÙǧvoÞ ¼Ä“#|ï¸z@o‚¬ÿW~¿ÒgTƒ@¿Ï½¼o6üß™›ÓŸÒÃëò*èÁVâjÆ ¦¥•3U�س}+Û¯‘° œÃ§j½gÁØíü`nan¦8Æä@ö'(õäjR >s’0åñåãHi6B¥‘ jJ ��vîÞ}�Õ�Ü›¹÷S™e¬§ß ó²9ãasãçyüÁýÜÇ>¼ô?dÜu5ÆU>üß\ `•c€5)ù(<¨r¡2¤L» ÕñWŸ/ VX¥ü?ö®¼ª*ë®4òÒ{ï„Þ’P¡ƒ4)6@ìet~DZŒ¿Ž½ŒcAEEP‘ª" R•ÞIBH¤÷Þ{ïÿÚ7Þø £3óŸï{ïÝwß¹ç–wï9ûìµ×ÚgB/P¦�Îʆ?ýÚ7…m:dØð›Òî¿ûÿð{¸(i±íÜÉLíïG©ï+&tå8¯`UÛü#¬«×¾O±³TÛ¥f—>_{ýUŒ7^YãÓâ`Ã\ÓÝY¦NšÕmkxäÞííËë9ÖI“æ´XeÛ~ø>™¶× ´9é_°†„žV‚®çœÃ *½þ÷'˜žÃCIr¥¼Ô¯¿ý”²v‡tüK¯30šJcîcð÷,Z°˜sÖD|Ë”&GN¥*šZ˜#ï|x‚#Oá'ªPÍ`мZ`=tz†3ÿéM/4´Ø®Jà·Œª_B| ò’\ª²NÒ8‘F¦#ia¨ ÛIü ò{+Ôvت£m…ÖÂÆ�ë•obëuWÉ&ËVÊ«vµ¨€²ØARÄ©_O;HÎYÎW¾‹ú�ñmö´0Y¼TQY;©5Pþå.«â¨×øzl,ÙF®¥ ŒËü¥cù|ïq„ìÙÁ`Ƴ¸Ùòv«Ô=vì(^~õe,[ºœý�©þ5 ÿàŽÍ´}èáû©ôDÖ{}vï܃[¶`ú$JTà‡C¡¸”Ï U½{Rʵ©$g´44c�uÆr“ád8Z2·¥£©t\!ßÄóæ/F%ƒB žŠlv Á»¸¨‹(h0A œ} g˜ëÔ)䓼ÒjK ¨—†I$Lœ=~'ÃcÉø›7[4Õ4"*1Ɔ”¦­­@miÁ´8*KõGzj*ú“pÑÈ4W6o£½ßN†•Ìÿ:¾œ3S‰îµ�˜’·ùs‘”š�^V<ö,Ž™(|ï%è¬zˆ‰B|j&Ž'çb€¢©IÈ67Ź”L8ÙYB—L˨üb‘T%6·¤>‰Ø÷ /8óœj«êp1¡”²Æ p£o0›ê€O=û ¦RY %™ÌAªÜ� Ëó[ôr£¼2•w Nd$ÓןÁãº$o$ææÃ“x//t¨ X�‡ôü4êjȈ¬æéƒÄô24ë5°ŸÉF�DÄh,~ø12YËaÈ4O’­„7éd®!ÀYŒòò2²ƒMàI9æâ¢ ÄÅ“¨AUÀÚÊR4 ‡ÂD=zè(Ï�9s Ë� ÿ¡>dø¤K½Γ<P¾nÃ*<ê"+5AQ/JÍÈd îHŽ+ÄBCpöÌÌ™7ûöá^„OÖ¬'£²Œö çÎôÙN÷§¯ƒ>Æ©�~”9ŽÇ{«?ÅñûxLEˆO,ƳO?ƒÏ>úDNÏœ=ƒú{ ô©‚q~pËlޱƒá�×_ƒ+ƒYŒÈxö"cÖ€ùƒû‘Ø"2É»öýÀt�½¼›Li_^+þ[dŸ.½}.Îåøà¬°¡C ÞÏ’v/>!•ÿh SÒ0u"ýÉ¡¨`ZAv­)úÓwSUß„°Ð3Ðá~šøçÄ1°àÁ…£�{ ç3ë•q5?/nœ‡É³«]dŽ•‘ž ¦üId®Ühâ Ì-‡©÷ÜKR×V¦z+b�H¦¯¾µ'ó´V»±À–ï¶¢˜9oŸ¸t¼¬1:VÓ¿‰A Y‰HIÉPÆ·*ô²ï�ÞTÞÜGÉéÉCûñ4U|W :=�Àœ´®†MÈ!€—À40�LiMŧZÔ“ÝÞT‘ ‹ ‹1óÛ}íþªÏDúÂë鷴Ϲã²ôeEßmlëg¼UÛW¯—ìK]î¸}w—´” òæy/m7&^Ï~Tи»æÐ׳ïÎêv ²Ê`RÌœ„êÅWøÎ>u’ãÊ*쮳\¼¼˜·úã÷0¢›'æYŒ–·°ób~Ér…îž”–†÷ß1±¤{ß…ÃGŽÃÔ¸¶oݤ8uä„%ÜÞ}{H_�Ûn_Š…Kîæ�‡7?_‡x>uÊ�]PŒÏ?|óuŸ“[€Vcæ�2á˘à\F� ¦ ¬��ÈݰÊù‰S¦)3½Žœ"�6È#Q^B5—æß½81TV)+îYμ&>øû˯£�ƒwЉŒ(>zøþúôÓxôOF™ÄÁ!a8yâ81‚¦cùü“•æ:®n÷ý¹gWœŒ=é¸ Hµ‡„ ?+�Œï§,ïê�ÞçÀò<Ù›c`bf©V»áO[;{N˜Æ¥ÔÝ·º¬��?¬GTô%F Ùb!#çuô Æè–-ßâŽ;–\VÿFV¨ïõHf÷ô¬È�kLP˜ƒ &��I‚•�5ΜÜÏȤ‹˜0}&ôÍí™'™1”K`T•½1ê«*‘ž[ Sæ§£<ÄJ>Ó=ûG Á£Ѹ€uˆ¯ðÂ3¡Ñ×]�Gw¬Á- ¶077Aph(�ÝAøhÕgøaÝ·8Ìg>‡‘MµuÍ=‚ G¯þWüdR"Q3"Q#F¾ôs­@hP§—/&:B‘ŒÓe$¬yCmZuU•¥l+/e€b䨴'€­<“µtÐ4Q¶B}>¥}™¥e"‡Ãyfãg#ìÐ1è; ìS�FU¯“ŸxËÿñIÛñhOJdŸ2‘v¯ýcÂ<˜Ï?ÛyÄn[£V,½»ØNãl‚鼿oÙ ³º‘ÿWJD0jtëPNÆtàø)mùñ2(ûzòàVT7hÚ­šþÿ¯ZW ƒ­R$8èJEžIù�å~¸Q™�+µ­®—(Â1¿j¨ë®ç³Š÷sÇÖ>@Öëi£cÝAƒG ´¢J‘÷utvíøó  ¦2ÂdÞÏ"領3šË µ%Ì=ÜW‘øw专‰ëÞÃÐÑSÚíëñG—³¿™È‰×€ËÀÛ»(=3ut_¥þEÚ&Žî>íX·’§:—“ Ý;¶b8e»£”W–S©Ž8†ÝÑܲ y$ÚR ‚Ñ>ȆˆsJÔg¿i×ë®e�FƒNÞd7`p+{-.á"¥œŒ8®Ùáã�?äD¬X‘é/=¹;¿¤¼zŸÁ(c¾ðždoêê0¼ªœ“Ø*Ô0WÑÌ×W¡†ÁSë7oÁÌ[cAÁ~˜ÔÉD»V³VÀÐ�2Ô-•0:‘) Ðì8 nï:–‰Ì96/o/sÌ¡Ì&€yÚ3aLgâÒM{0ˆ`°‘k/¬zëâ> :ö.íåj{®j¬²Þ‰,áÁ<×�™«‰Àvs#¡3R~î �~Xû΋XñÄßém‘�÷îÙ ç9îWñ<‹¡[üã&8©»¸æg¤D˧gO`U70²¦<غá5j4Nž|¶œð·gÿ‚Û+Ï­,9ލò…I”èýW”,Î1„é© ²º²¯€UJXxæ.š„VtÎzSó¿K]±dvFwM¤¥Ý«a°^ `½Ú¶äßÖ|½FüÐtÜ;uûa~ýÕ²¦ÃŸ¶Ï•Šê”-Ë£ó�ε¨ëÕïÿÿùÇ¿o®\I6dó*l;Ø®¬ÁçB°�¹JýÿÃó” ¸z½ë|Ž|(»øÖù€õÝMï`vàœ¶kÜ] Ý$üæ{ÿD.Çü¡�ø®çXWSAbõš•˜3ë6EZñF˜¬êþ"##°tébÜ}÷=ꪛöù·ÿ}œÎç JB�éò>œœÝ¹QV=˜cµ«òêlã[˜z¡;ViÛ×gV~ô1eïý騷eåhX˜Û1¢1ƒ#&ÒsgÃ"ú&¢˜ç¼FΧO¹¥í°„ÁêSޢؔâ¸Ys.q^wç%Ÿø^;+ªAäÅç'yIU€VÚ¹Vàb1ÕÿŒh»ªåá§ž�»£}§~2µÎõ~š%'`ÌìÅ×µ™äYUÏM6)`P–ïÅï½¢ÈË:!�ôÜv¤-šâ ᤓ•Î:/þzr²a'Eæ` 9ER©] @øøíW”­]Ü=æ¬�Ê­ëË„i%„ÙWÇmÃÒœ”á¡»ÃåÔþ_@áævÿ¯§§§°¾òÚË8vüƒK‚:9Â_W Àjwa›V•…¤—jü©šÀmV¯ÿŽ:R-˜ä�Ò‚D\J-‚ï@oÄF§0àÔ˜öv.zØ÷$ðYGÆŸ>ÐswRaå•WÔÂÃR?lø ¢Ÿ:o;ÊÆV˜åýUYÛ„ƒ?G‰£¦Ïå3g€A½�¨ÚSM–ª)<¾ú žÉ—à´{ìb/¢¥°õÓ& ÿðÑðõ›ˆ7^ø ƒ? dž EϺjåbè°}} hᤃ¥‰~¨S±U0¡m7}|åX=q&ø8‰£¡ßÌ<±LG“[…(J»YÁVâ«õ©:8Œ~Jrdž64T)JwN 753F-ýÆ-dØê°?ðì� ‰TéqsâÉ åd5š�ú™›•Ï9_ zöàþîÑÏ‘D�shf*OÊßÚ¿{9S-o rÈ$ÝGP:¦ôëögŠ“Ô”T’r‚P]_Ã`VÞË:¼?8W3c`ÑÂ;î¬93ñúoð¢šUƒbcc�W\ŠóçÃPRV‰9“F2ýH>çwL[C&ï‘çrŽérš×�h¼ÔÁá1ÀÍMµåLÝV K®Ó£Âç¹s¡²ÓHRÊ�sÑV°éíÑ“ %ó„6ëP�©�Š  ð€jñŽÞƒ1Ø—~ŒŠ\¤æ–`þ,Ø9ºaüÔÙTÛÎÔv ØGµ•Cü°};täAFó¢% p2,öŽ”ø¥¬²»ƒ=qòHì I…¯?ý”¹)̕ݛù[™_—Çu% ¡ Ùw}HrÏF%¦À…ý(ÉbÎlæN¢q¯ÿ8Êý8Dõ§ÂjþékyOÙ™p»fxº[žÿç¾sE÷˜¸†jM«°øö»•ûF}K�=ëÀ)ØQÕ'Ššp„�¹Ã}û pËeÉ?~«ñèKnc¤R ;`ð0 œˆÒpÞ¯æõ(i6Á̡֨¹¨1#«7¦Èó¯)ãf§ àdcI0>U�¦D„Ìã+ YW+\ŒŠ`ÚA²ÉmL`ÖLæ­®>ÓRå×"£·>¹Tl›»ü µéN?UŸàÕ|Õ�nØa¥ôk¼”~SúWG:ŽI6¹i_»2†]mç2¿ÿZ+é�óhUájÛÜìß:YeБÁZ ZÁ–qí=õÀtª«êdpÔÜÎ…œQ—ªóR­û[>�ìÿ‡·��×nÆ»o½Žm»w#“ұ9f ÁÔl:1`΋(8¼Ùÿã7d6FaÇ;0ÿ¶;”ü«†Œú8s|¢ hbçfÇ(þŒÔ|$fça$ ý¡þã~Ë!^¶ífÒ.Œ21á¾ú#k×ËêÜÈ y¸T”^"ÑÐVÛ‘(/‰n3mAžùS/8ü^‹z<�}>Ǩ˜|&!ÈÈ—+•þ4‚ýüÝâvYGo&óƒC?íÁÓO?‹þƒF2G×h`•Ê™±G1ÈÅV””°°l|†…S«>óš k>´Ož2ã²}»’)súK¼ûåzTV5cƌ٘5ÿ®Ëê]ïŠ8‚j^ÖŽÛ†ò˜%b«®<“,PxR~cô¸© À*u­2“±ü™g;nvÃßÅ‘­:û®¤755å REÉ‹mèKg„�Ñ& åJ é*6fÂp*‚`õfD˜±~² (ÓéA¬È̹æFæ° Êù¥_æ*œ=y˜ÛÏøò³�™Ÿ*ƒŒ¶Œ$0ñÙWß1 Ê—âb)ùÓDÇs #‚ê 4ß…c'Q6Äc=Üzë,TTëЈ²d~ÖÎå:¥¿“—‰¬†(á8C¥žŒìmˆ9†æmÏS"¾'²-°öË�È-­Ç ‚˜±ñÉð6޾#P·ï)TzÏFê®íH*7Ǻ}!Ìc€ §Îb4åõ÷:Ήµ ¦&Ê)f…ÿ€¨�ï ÑÖ q’s§$Ÿí<�ó?ÿ„eO=ÇÜ1~œì�@oF.3@ë·‘ŠêCg‚#ó®;T¼ç±¿*ÍIJ]]=ååCyî‡)9uâ×¾‹Þ·-ïò.cx wa>œ¡­ ¶ö†Í´3f.k[uú4£« s`È »Þº…˜>v*,‡µý~3\è@VÖ° ¡Ì•”Í\Œ.m»™ÈáŒè—ÏΊ´Ú�J –š�lå�*yimì. 0ÀëàÑŸèì¬Ýÿöukׯeî½á7dÍÍÍÁ´é­Nùуb(Ó&ˆ³.�i-^yé-x­yƒÿé1ö3_£qÄpÐjéà®Ø˜b»]ɶüoÿϺrþ—â/0UçcoW¶¿‘:3&Mj°^OYt†¾ôÆ«xäþVùz¶ý�¯Ë Wï¸ÒY. Vm€565kH;vhà/CbR$â®ø»úÃþÃ{AùË!.W™PëtåssâýV€µu?ºølí§xèþÎoºr,ja!JðSw°ɾ*.. :–�Ú|»Ïy·.¹.€U6þèƒWñ=í­—ßøäŠk»�t× 1Λ=�×÷QL?Ññ!HËŠÄ]‹Áä’‡ÕØÔ+ÿñŸë¡X~׊¶½nþvA’Á ÀZq愲^Æäî(b{ ˆ*¾ƒÎ| ²ùM@FñÈ|OÖiçW•ïêoR¯+Nö(2°kê�]?ƒ¹¥ Ÿ5K¬#+2•sËÇ-ÂI›Üj3‹ßQõ=v¬«*rÈ1‰OB^ªÿH¶ïؾº®µm9�ö¥--W‹O³ç÷‡Û¾#¡§µÝfØ?ùâÓö-·‚¸V£¯ªô÷æ­“1„6®�ñ«ˆ”¦lS�™®OmŸ�´ïLPexo�_˜®¯)»»N½ÚÇÐ ®êЗ穽ú²e‘›O›æ«¸�3©[V®aÚ}‚¤qˆ:±‡ˆô27f^"|�ÌðØß߃�GÛjàÞÛ%Ù©ˆ »€ú”p`Qp¦ß0gd¦�Bs%ódںÖ9Yo[8Ӧޅ%IãFÞæ¸mfê \™i˜ô K‹H\(bžMú«¨(8aªtZÚ%Rõ©etɘÕ3#)"�€g*¨ÈãȼÇÖÖ¦ÈÈÈ€Ù}Õe ˜7e!Ìz÷kÄPàÈ Ãý{‘½| ½)™;d>ªŒmë–f� °ÊE¿ç,ú ë��«?Ĭ%K –ZâàO»0†Á‰Idæ†%fÓרanÚB’œŒÑBçcbR ýŽul»'ÏÏŒ,ÉxTQNüb| š«˜Ã–Aʦœó“Ù™SD™Wâƒ)㜑žÌkB>ea±"­kÄ9Þ‚¹3?rnAtô�°mçè.ã˜z™ )‰×�à`ï¡ChZQõÐ µ$e3Ø4‡¶`?OwŒCÛ½¥™9_�aIÆs$ðd‘86!h,Ü~UûBHVÐAƒ†*wÆ 1x ž•ИX2ý’3¥i‹è Ò# «/JîR©åôf­-/¥Ü-óå–•Ü®g@oÉy¨$@XÏèXo' ØÓßÚÏw q’#”ôµ†}ÛÆô™ö Alë«ñèƒËPHb[ Œ0xÄ0lûa/L‚›¹.,Œt™˜€4ÿÿ2JSOž6åùÔM™7Õ¶{SåÈ€l×€á}•4{õSó²É*% šÂûA�Û.X²Å•µ(%«ó–¹sqÇ}OaÔøi0b°xSSçËáܶÆÖt÷2‰ƒàííØ†>2‹A ¹ Ûv|�~”N&C´¼º™A¹°4ìpêåa�û–¯ b”>úð#D)Š$LUwr+UÓ|ɸ5Bæ�_Ã…Llö‹‰Ã4ž ì-Zr'ªsâ0{î툎8Žs—¢�YFuò1Œ˜qŸ]|´ífŒˆ“æ¨t°A&AÛrðLŸ2ħddMĬÙ12pŽÿt€©p8/OçÿÖT{ü"SË¡kîsM3×唆6Fƒ9ÇGo|ûƒìàäÝK餟”±C úQ™þŒ ^×Õ’””@öo0�z+}rù»/+N.kÄ¿¢ú�»ÚÞ•ê‰oæ·úX®Ôö•ÖËXPsúH�AfZž"ɸÝqܹҶ׳>qÏJRÚu¦ûˆ€Ñ�âTj{�‚¬ê�ò)(J^òGj¯òçJÒr j]k_LWµÖ‚¬ü´ñ}ô9A»éëZNMŒCÏ~ˆ‹M"Xb�E·ßÆDÂKñÄÓÿˈ|å•Hú?Þy—TöFèi¬P�›†UŸo‚iå1”’•Ü”ßmûžFÕ ÜҨ¥¶k¾ø“Ù©õòñe·¾×uLW«\’•Œè“û0y�F1kºÉùÙêT|­- K žÖ‡Œ ý¦ÏH·Ð=ÎAr´þËÉcG( 醼¼ ,g”µãq¾õì\üüýñÃμ¡[ó¸J=‰ˆ, $É+¯¿ÃÿÔ^Ù4<ä¤2X‰4¥•#Ù†fŒàiýM»mgf×b±Jý�ƒ†â› «•Mí9hHùüãbíÊ—©¥^‰‚*lÙ¼ƒ9‚[°ù‹W¨�?K©s¥·Øè‹XûéJŒ?I©RÈ1Õd ËYÖ0QºL äD]8Øi—é3¦R–£€×b #‰<àD6ŠZ¤ãUn�sj½ëù”ç\œ@WbE^­-{{{FUc Ág///‚™Ð0ÊÊL¢²"Ïõg?ìݳ ©)HÊȇûØ…ÌÃÖNõŒ¨ªä€Ûc½FFû8ÀÉk£Íj`EƒotÀ”�5uñzõñ¥ƒk&¾üâ+Ú(õJ>'lÞ²�IÕÃ~¡§�ñ™ˆe>ÉdèÒgX_dUϧµ“ÈÃÖjŸ&×X»£n•¦y­ �•�©3§™L2ÔI’º“[Æ ®*É Â~ò,80¿�Îñ#J[ ²áNºj¼Kô¤Z䘤¿õ|YåÁ} s]ýM>ÅPƒ^&&aVN¼&µG .UÞ·#À*Û¸*Ï•›‹;,Ò’”û(”Ñ…ýV~F/J_‡ÇD£'ÿG‘ƒ �Š"Ð]ÀÀ‚”©¢t;Ëô[æP’Æšv sÜÚs²?DYßñMØÇ÷,š@ƒTƒý»vc,�­« ë%æ*éÕÿÖòíš÷àtædÛ½Ô™QÕñýO¸V%E…>jlÛ©„QöfÎô‰xà‘?µ­»Ñ‘½ftç¼Eí#®-­Ù¿zâÃ�?Á[o½­ÈÓwXeŸ+Ÿº�`Ù`˜0P¢cñgp�¯ßTö�;‚ýøŒÏ�{ÛoX7lüJaJp‹€«ÿ©«\ßÖþ·UMÛp–±OuÆÔWU)23b �!ÎU Vy {­(öŽÿiÇïo?Üi/fd¤3J¸–ùv­ t¶Í)«Ë±fãÚ F—ÂÓÍ™9bªÐd劑Ì?Sˆ°;8!Õ`tÖ7(²oÿ©t@Sî(.^¾èíϾ{P l=pzÕZR ðÀÛïã‘ûîà¡Ô+� †ÔÛ §ZDl|¼k™Ï¸"ŒFÎ/‚ãä?áG,tÙ~<?]JƒW`�"Qæ@°oˆ·7Fж²²2GVfæ5ÇÆŽç/߿߶¦dß=uLùÙ�Á"Rô™{Y@Öœ\F@'^¢|·+AVÓk¬ÕGÑ�KçÄ}p�,à¾ü€öóýÌÙÓj)�ÿòf1,Hû+vïù‘ ¦ªeúç’$²w[à8{y»:ÿŠ/»~Þ‰l‚¬#�l·»+¬{�~�õ阷á”2¿Ò¶3Š Îl׎ú¥§W/úÖ´�:Sëý?OQË’vÝÍ,³¦Íê2À�7Þ~·LŸ~ÕC %àù¿¿€—^|¹­ž¬Ã(+§–~ëß§#ú„¨(}S1£÷ÿùþ{è·é3ö?‡¹°×ãQÛþÿOà�îÆ€Þƒÿå@ë�^{WÚÎÂbu¾† {)&ù…y°·»6hØÕcyüéEtêfÕÕMþ¥õ\•WgÅ– «-U!äóJåå7—bÆÔ»¯ôsÛzW+ÀÚÖØ ,|¼z çZœÛ;·ž«Ì§º`U¥;Vi+4ø(BCŽÑפ6}]Ÿaá§LäÖnÿ€ñ$:,m·î·~9wþ,÷C¾“ráB0FR©Ìí—àɧNÒÔ7ÄÀþC`nÖ:o}ô©ç4f2\i[8þ"•ûÆ;ïàŽ{î&Ó33g,ý¥nõ¨¾€NvwÅU2'Óæ;T ŽÛT|åhä¢ý®Úº5gŽ+ùéDX|yr ²�l+~uÎ/óþk­«ÈÀÎÌÎAC• \œ˜‚ÀOÎ{/£oÈýùš¾•]+ûÒÞŸœ£fËyVnÝXfìàP'v¸\È$ŸŸÙÊFmeš +v¸øHä|Ô¢‚Çò]$#e_rž×PåÚhÛNj{�}J=™tkµëÊyõß¶š³”+&À*9qe{¦_“Ï«�Ý2ÿh½F­-væ’_®°J¹gÔ¶Lîzzþ“°í›uˆLL"˜êƒ¦èÑ3±…oŸÞ0²pÀÉsQ“—¬¨Ç\<{ÆV}`ÂÜ�ýŒ ‘›Ž((%’]Û2Ž…tg%ÀoÒ­0!([Å` &‚ª•…T_¹ÀÀf'ôeJkw_DEÃŧ"ãR�Ÿ_‚„Ähøôñ†§³=�TS*ë™!53öV>èaу>#W…q™SVoŒšŽÌ¢æÏ,FVn5\â"äôÐ8|8|^ÿD™GË\ÎÌÁ¡¬9,DÓxøgåw•±-÷…írßËrß|UV�WÞz‡�Ø”gõé‡)Óf#9þ<.#äÂEôgª ¿?3·©½�9ú÷ë}CJþ6)¹<Ím\ÐÐX«=`cÇ”gM:Ôǃ¾ålŽžè¡«ƒÔèhµLsÆÝ’늑&è|þY�yK/æœÇgcÈ&­G¿nUó£–€©„’“ÓPSQ†�ddÞ¾d1†3صçC™'UælÇ�ŸÁÖo¿‡•F…ù™ˆNJ&3TGN…b6Y¾&zeÌ#k…zÊä–�”QTXD¹árØ›õ@�©ˆà·}êe•M° O¨‡>ü½ÈÖ/‡™•%eˆ)G[S«z23û£°Î£<´/çÈZödZ¦Lœ1?8€!ôade�HT‰ã§ÃÌÂ'Ž�äù0ÕM¿>H![=š÷ˆƒàí¨.z‘>ì%w̆.e�Eº÷ÐÉóåÜÔµ% åôu'§ä!>>� ¦F6®L»Áy,ÓÃÕ¸œ³pv­{i”sŸ:ïv¤¥¥bïO?óžä¼Ÿ�ÀÖV68DUÊ|·t©ítìÔ)úƒIÀ²íÁ|¹® n�çÚööÖp²f:=¦š²àœ³Ém÷1a'®YE†\Þ㹨ùaJ܇bÀ á8øî˜xl/Ÿd2Ûx¢¾’À+j+˜Æ21«^T˜>o>ÿ¿ÖñAú`5èGˆÕᆰHÆç4Öi t`qø'eŒP¾}üÁع}&QF[»”0¼„ókY¥ŒoY“‘ÒF’9‹þJ?&/)]í[•Ê|»ä¢¯°Ie\’r½Û+Ýà›ôë2îˆZäÍÚoÒÞaí€À[Ò§3úªGzM�µ³­åÀeP“�Fd¸|µbbn[g:._|ŽùÉ|ÚôWÛFýí ²žn�5 Ÿ~±'i,™Rz`ø<øà#ؽi5óÚ#"ø8v¬_ÅÈÀ¯`LjW: ^xá*š7â‡ï7ãà±ãؾ}â"Îðá=HC×™ZÛº”û›ÎDÖ6ØÏ›ù¯²è¾I^>�ZîÞ°"ëR¿$üdÐWÁ¹62؈q"°QfZZ"Û,ZÞ%#@½¶7ãSŽóZ7v“u{y{ñ¿²cí¤äëx,‰µyã&Ü{ÿ}ˆ%[qì˜À¶*"9cJ§ò‚E •äñã%"ÀžÁ"µèÐÑwµKðèÄÉcŒ€ñ½bµK‘aJþd­­k$0œ��ŒVyø‘'™¼Ûâ ªWßáØ¿i-z Öi{’·RJ_ßV¹©Œ&–çËÝËGa°ÎeOHH¨°vYyøQø�™Dùz3ç´?/éxä“Ò�Ôxù¯õ?*;íä­wß_¯iQ^*sŽg”¿'/dóPjD»††d·ÖÒñ\’�Ó{¾AJV6¥Ê+r"*Q_Y4bôÑ¢G™–â\è›Ú‹¹… '©ÍUˆM [Muû3±hÑÝ8|ô8�”í¨¨¨Ä²eË0cæ,È-8l$e�Ñç´;gŸ ge‡ ”v•®ã‹ß¨Ë�£fº-Œh ä%ÌÞ¦ê”rbaeëØ®å¿>óÆ�µëDŸZþñêK8uü(ÆŒRWÝÔO‘s�¡*‡†=Ss‹›º¯?BãªÍ©=.©ùg†Dwæ¼ûZÛáJŸ(À†<3êK~”>ôF#6eL°Î̓fÔT|ñõzL�<œÔÏ�w+lÜ`ãä�^ý‡*Q¾aaÁh<µéÊPÏ Ã22£çÌ» M–Nd7ŽÂƒëÎbÊÃ/ÁÊÂ'ŽSŽ‹ a9óKÌY;¾Ý±eŽ}PÔÃÍ/3Ƭ[1hàpŒ�±)œÔņ�bž£™Ü¯'RÂâqâBü¦Ü‰¿½ñ5¼y?ï0p¢¥bƒÕ"ëNTv­G4å£úRî¿+¥…ÑÅ�tLHÞ™hçrrïíéM™íJF ÷mׄ°vßyõMÔU$"#!Ÿï8�©ãGµ«£ý¥tß:¤‡ŸA¯Çè8aÔ~/++TX¸*‘íÚõ:[>süú¤GÂ…&{ÚåÌ÷Þû±;«Ú¶nÓë/aи ¶ïݱ àjG€õjíöö¨zGåÕ±^ï~�Û’j½G€UŽýĉP‚ý.¸Q�õÎûÀÂÁY½8Aå×_ûⶺ¸�Ë€isè�öAbÛ^\A'Q6\´Ú<ÙÙÙJ‹~U¿üt¬~ ƒõiæøò¦�)̱Ý$(NÆlq÷]x·tlÛÒ¤¬“~HWsÔvñ°ÿ+«-™¹ôß`Uÿ k¬RïÈɃ”ÿ;ˆ‰dDtWqtp¥ª¼ÜºÔdTÌ%¦„ ã&v©þÍ®t5€UöÝ€õfcWÚ ;¯ø�T�µ+Ûüuzõîÿ›Ö» Üû—¶CŸ9e<<=»<ßkÛð ·Ì ¤4u•²à¦Õï Àº~ÃGdåÍok!��pÇé;ìÛûŽîǼ‰SgÏÒ6yŽìEäÅæú;�À1c0kÆ.��¦l¯úÚëdA|^Ú PjY' ª €Ê\MdÅ_§3Gè4Z†gF£ÉÐ’ùþòÉD¦oƒå®ù“ÐÒo0;¢ zò9Í`Ú¶jÛWì\ €™`±o•ù ÇšVCçsÀ d`û1‡´€¯°J{&IÑp'Ø#Ǥí¿�óQSbWKvm«½Ü |Êø¦‚§ªRR”•WUý!B­~‘ÔU¥�$+=}„ß¿n ”Ƶ޴�4?EõKÎSÛæ×ª~C‹r~âK•ÒÙÿ&ëИû—¢^ߎ Rj;çÜò]ý_¢Éî|mïvø¼ñ¿ÊÿÖ•óØ‘À@Í2TgáBd4Nò:Œ ÄÞ 4Gú{; ¹ ÆÌíÈù§¥·�’ ´ª¦‚þA;˜Z¡ #�”ÄÕïÑ„êF]|ús4 HxH¹�sGL�> !öãÎY}(kû#Τ5ÃÖÌc(_|åÌÃ|.Œà`^”&7w…µ¹ãÆŒ$NAöäÙ0˜šèD+gê[œ½ˆ²L׬ÙLìÁ †¨#ûÖa‘‘°$ûÖ˜ Õ¸¤LÔT–")¿�Í=�E`Ù‚ JæN,4dwêBÀÖÓQLaGµ®±™@mS�u©1@-¯�ƒ•,ÌàìêM©û:جué5ŒÿŸ ÈSõì7>dܺó¦ôüÄóàâî +2’�8%;ÕÕÓgÁ–×¶š~B ?ù“I\���¨sGÑ×›çêè‹ï˜ËôžÅ 1n”?ªKʰdçÆ”9n:\xMÓs °hñ$ÇFSµÐ %•u˜vË,ÃÚÞI‰L?ÌœÂã'�õšÃÿÒT‘A>rch“X‘�¼lþ<Ø¢wÿa¨®©Tغ¦öpwr‡}!u °ÕIˆG%¥±óy‚¶}ûÂ|xÀîwþ8,Šóʲz˜jzóú9R¢WR ©EVY67HóÁŽƒô/ Ÿe•² Ûh„^”÷µ³jDFa%šúM†ž§?Œu�j²†ëZx¯M˜N\ɬÚ,>7µ˜8v("Ó+q.½šþ`ÑR†:3JMSÊÙýD5,+±5˜ÒÖ®h&¨ï9hŸ%;ìI¯S®m=Á_Oo4g§ÁòåÀué#(<}ÔRØõuf¦J?¦»ý»VÇé¿J]ɶ.¸ d5ˆ½‹ó§”S–þH^Ò¿‹l°ô¿Ò¦ô½êKú}ù]»ï’¾Oû»Ò˜Ö›ÊŽiõ!ki5uC‹ûäjä*¹,P‚:SZí¸Ù �¬¹Ú÷ï¿YÏücÉ0l”°ºdíjÙºcì1ôîÕŸ~µ‘¹8’ýÀ|ˆöèÑT� Çw‘jm‡çŸþ3î½c\úŽDaU ܺ�ò—.¨¤>Æ�ÔŸ5}*óvBÇ@—FY. šJ1…L8aÄÅE!%-��r>%=۟Χî(ÑEi°pó†¥ÑonÕ¨/¹é;+í#†ÀïíhפÄÈ�SŒµV§CP»C××7 ÐfÜ)À*…Á*«”¾}û¡¿¯óíã:Æ,º�ò¯æ +C’ÇËËÊúÊÑ®J#Þ ­%¯«�¬� ƒîWGŽä‹¡³¡±…ÚñÙŒPÊÁÓYX/žÇWŒÌ«jÖm'!¨îÖ–ÑÉ*À*ëÖmÜŒ1� HY¨Uàççׯb §¿ä@»Z‘ŽN¢Õ"�›Ý¹¨ûêê§³kO<úØ}H]û³ 00'NTr­Iu+²ÒóéĺcÞ4¾ˆ#g"(=áÑqÈ)-ƒ³1~câ1¼¿¥¼"s-Üè"0™=%3 sËaÀà IÜ.ùCwQvW�Ëãè õþ“ûSeýÊý©®¿Ö¹È £Íž’IB«“l©Ý(ÌÓŽN«¾¾Ó¦`•"šõiб©]QþG)Ÿ÷K”…qsqº¬¾R—ç#Ñ–²M ­Ù÷>¬´|†lÖVËk¯¿F@Ô}ÈVKì¥ ŒœËƒËp&†gøùŒ0‰àºúF»“9N•€V)<Ÿ^½à@©«Ü––VŒWÒÇÊ×ÿ†Qc'10¡u²¨îC>ÍÌŒ®*© ]W{Y¬Ú«0•�;a6ioóï¾,÷ŽÚoÊý«NRµÏK�ø©Î\ùM–ÿhÏ¿ö1k/ßÿ2dSâÄJæt(–6μOÍ(ÑcÖáJ2uÀÚ±á'ÿ´Œ Ã,FšR¾¼�r§”5�5üäOYs±bÙR ÐvÆõÐ5¶ÅЇžh°*íé€Ñ£­¥ÔøsŒzjߟ�¡”O™í• :KW¾‡‡…âØ‘C”SݶçÉÀ2í’—‘„ªòN¸­µW_s¹¶²˜s£kÖ»V…-”bØÀµªÝðïfM`þOå¥6"}°Üÿℇˆ8�Ô>Q­#Ÿ#ÏÏ•€ŽÎ&-�t,p2+¶˜<�º ÒºÐËEtô¢TÑC>ªä’8�ÎSÅþìÃÈï^Ì=Ó›RX›ÈD�¤û¯}A9”¬Ík‘ûú}˜;Ò}V”�ºöÿ¾—Q¼ñÿ|ååµ0ï=HQK(cäö`—Õq"øÍ7›é8h ãªô÷·Ý~;íõÖûýË�‘´k>ýóÃXô—gÚŽE]ˆÓµC€\ ƒõH2{[LpþÕ'_�À@«¸õº²mºu=z]:„J›é["¯¡Ãz^mú²Ï‹'ŽâàFªØÜµü²ßþÕ+d½Þ²nó& é$ˆêzÛù=êÔ÷𫾹1ÆÑ±èI›û²B0TŠË/ «¬¯¯üw-øÕ±~Ù6V|ºn5FÑ¶Ö‰Ž«Ž«ü“œŽŠúføk½÷\èÌ€5<4û(wËÜ[•6ìzTÁÕÖ[6|�Sñ(h ÅŒ=©mã±LÆ¥oRƒATµ’¶ø�Nœß‰“çÄ Ÿ1¿ó‘\¾{é�¯ä ¿¼ö¿ïšGn`=KÏõ–¤öpµ««lgOe(õ¥ÝÎÿ/ÿ¶+à7bx‹µ«-EQ9H”¡þ]Š0XµV9îô´Tܹty·œ‚6{õ¡ûþ¬0YŸ|æY:¦]Ú€VG2˜´VÙ±íøqcÆâ‹Õƒ›»sšãÀ�ŸЭ‡É§¢¾®»ÚNû*~œ««zÐê|LUB¹FÕÐhä\;pF±Gi‹ H(Eúù]X6Öù»å¶ƒ{�XKÕ4î÷±GV`ÄHæ–äÜ9”ªEÁ§ãÙ_Á´{Q¶Õ~“vUƒ´§zRGæÿWbNÊïŸ"ËÐ][me“øéäß!è3p4çÍØûã9…fCÚø¥LÕ1.”0;n ¥_uù̹ >9“Ê4†œ¿Àˆ>ô“§.t3…§+ý> M8zü4jë¨0’éû¢�’dLÚ¶¹Ì5.Bã2s>"Èr�ȼžÊ½Êÿ<5%e/?­\†Z7æÓ$³³ŠŒÈBú~ȳŸ8Ç ¬4ñTO3â<Éš~ÛK·Ü ·q·��J™à#ÇHÐh¤j^.r¨¨CL ŠJyƆ’©ôH˜,‚ �ç²j �ÑFÄÌAJF¨n¥‘Ù8p? o›8c,.ÎCyI}ÃUxäÁû8ËÅ‚£ý†z£‰u«k[ÈNÔGc}…¢Äh@)_2igÒ·™—C ´ýùÏØ·ïF2gk ¹·LK(¬Lo/7›xa0I]éɱL!‘†¤dÊÐæHþÐFxûx¢¨¨Ue”á%™ÆŒræFT ¢Ç®ö¶hn¬ÃÖöT¥’U` Ëês1 YH¦¬o% ?Óg-À…�S¨&ÙÄ•ò‰àK9s‡ #IÅ‘”½m20@]¥0aóQßd„‹açpŠÊJy ˜�ç\±²²ɉ‰È泚™“K–0åÕuȦmb œa8tä4zõbÊ73;ì>x�$5_\ [XšFê}>è«>ZEœ¥’LÚ lÚv€)áô±ÏNÚóVØwà0çŽxýбüÁ'POU‚žx­ê‘—™B°¸…À.;4Æh¢êß…¨8d—6€‰táãJÕ<žJn-³‘̾ۘŒâºÚj¦dôGVz|þö(,è¨@�Ü,)FÕ5ʽ¥_R¤|ê46iJ‡�@剟`ºkG›${C/Oõ×/\cÁûò_[‰ ”Ì.䜶‘ÿ�f,|±Œ³t4ˆCHD2,™KÖƒÊ5ôÍ6Ñ/T]Rʹ;YãỈ\›Ge¿~¶³¡[HyïÓ?a᜙ �êÃ9j(}8xDO¦Èã}:eÂÄœ ‡í�qèçî@Ÿ¶. Ê“1>`ÁccX3PÁdî"4PÛ”þ©Êï¾.ér¯ÿ‡êW>Š¿CrT¥.ŸþC5¾ ÂVû,9yµßRû?u¬�þ]dvEUêIÿ-ý°¤ÚþmQW”`é;åSÝ^¶Q‹ì£âì þ�Ò¯«ãŸú{w}*û9sT“º«Í›ÑN·�¬ñ{?bÄz1.¦´Ét„QZéä±ÃÐcgfcm7FÉu,Éq1d‰Øu\͇<Á”jhaGyûüYhäMØX‘‡¼„`Œà ~.i™i0¥~ú8ÿ¡âI¹<ææˆÍÍל@�õEZ÷÷ˆ�I„ÆÒ�šÞÀYJy¹qÀ0%£®²(›Ö}�·>ú˜Zæ†dºÙñ¡/`42iØÕ•J©Ëê:V¸‘¯~¾ÍYÞ•Áµ³æÅÀÓÒ¤Ž55¦mÔÈ:Û––øÜ3'Tè³önæ:‰Ô>‰†KŽ[Ä‹ì‰jȨ†r|°»Zü1~Ë¬ÙØ¾k~ÚKI6J[,X°PX¯ÔÆO>ÇH%Fî9\VÅÖÎîªëeü²b$�)‘æ()`t;:3JAK±¦q4>ô½ä`cÁÄá981Ï>ÿæß:÷—­ýp£ÓE•³ùu-°~ýÔŽ_‰ _}‰¡Ã™Oê 5!þ"ŠucÃ$æRV¯^ Cw/ø,X¢t„Ò!Þè=¦½ÿ›±lom„ÒF“îÝÂ‘Ó iII8¼�Ò=ÖÔÏOǹÈKÌ熾ý2OŠ5¥µ-q–¬¯£{¿¡0l©b>+o ÅëHgwb\<¥Šá;p"Ò)Ça�ä´æ_ ÂÜ[ïT@Ü̱¬Nd@‘hÒÊÓÇ`š™– ïà¨_­‘{µÍí¤ÎÕó—çN¢�d€�É…:©9vâ(†ÿõ¥¶ ‡8¤^Çk¯2Œ¿ä$j( †ÎаOeâ&Æ¼êø—z­Q¢¯]¶É²ø¤qâÝÒ¨ü&Ò*j䟱SÁäÇ-˜þÎ*å˜äü—ìÙ‹þMõðT¶ÑhLÚ=3'(Ë" «ÜצT¸Ä¨Þ÷<€“dyO�:wܹLaj¨Ó`U×›™šaá�+:XÕ:¿õs˺ϰš{/Jý'­r? �#÷mljžö5l5„Öq•*£*ËÿEäÒÔWgG¬ °¦’1gIɘ›Y9yüyÿn|üõFÜýÀŸÚvåÕwsKÁåÏýýe¤gå`\Д¶ßµÜ=ZÖRàÔ2ª¸#ȺmßlÛÿnc¤¨”y‹Àý ã€v»�-ç Îáëåߺ `•úÉQç”WÏ_X�µÑÙºªâlNÀ8ùd?|£å�ƒ‡™`RЄÍKc@IDATm¢m»òÌP4ô60n<°� j«§½ }µôÇÚN¡V6A« ¼Ldr uÔ~]Ý^�„hO`m¦ÔS'¡Q }A©>mÃNlÜ´™é "ðæÛoRÂ~º²^;¤} ÊI^øžtxܾä.å÷H:BÎoÿÃ_ü„Ž:˜3Ük�uˆŒL ¥SÝjaÑg'ÜE¸á,ì:Žõ›¾¥”Râ“(ýÄ9g�~ ¬ü-ë¿E™ÿ8œxÿ „]8ŸÞîð5ŠFeï»Qª‡Ð´,Lbäº3#}µKUU%ÞXr;&00©…’Y×ê’m«Èø°K8 �©`lY(Ò�Ýð×§Sr‰s%2ˆé“&w²Õ¯«6ñlùòLºeɯ+ÿ KûN|‹Äô(T—W#17ã1wÆüN�VÀU`• Â`½Àz–�Û~ÜŽª H eäúÎý»ÐÈÈs’m`Ç4W*‹–?ˆþt‚�9¢]':¬T€µ<' tô<ÿêûô÷ÆÚÏ·â©çŸ§=:(Ïäg$"§¼@aK´kðwþâáDàÛÌ–�¶¿ó‘\¾ûKþ”½Õ&‚#êÕÚ_¬ÿá €6ØO]õ_ó)ëÊ5_à¶Y�K‹_ï…�õFË¥èódåå(²w7ÚÆµ¶‹NŠÃÑÐÓèOGïrYµj>èßÿr¿Ù¿ËyŽêò¡Ø¿U©kÝI,ëê5+1‡Ì7í²ˆ�5ÚLVíß´—ŸyþÜu÷ÓV-æ©ä¯Õ£Rˆ€¬L&Ÿ2?ûÆ+åÆp-lUJß›ä»Ë¡JRSɶ?²ïêÓp[“ªÝYmb‚ûÿü’’qŽÎõ??ù4ÁŠP‚¾õXt×}J§ •ú®U¤Ol%X´‚–¦‹–Yv´k¥�K±è7ÚÈô>æ NtÇêϨ!ÀÒnYÿˆœŸø¥´0XÁ?�±‰ò½«ob× pÚ1`YñUº¹_æ¢À4b£ÂàR^Ѷ ñe 3K®�ª–#>X9gíù¿±Èêáˆúí¨ü’E–ãéÙ+0û¹ÚÚŠ§¼êÙ3§(¹Û0»pît¬x Pÿô�W–ÝŠ^½ûRf7HyɆ•åeØC¶ÚøÀ1H&Y(™l½Ú†&˜/}ôq¶Á—_m�wß>˜8ª7ÓtÕ!�€¨)óc.â\™›„‘‹ÿ#=”ÆyÂ`ŸF˜ºŽâýà� `ŸD¥±H¦N˜>g.4-õ°·5Ça‚j% 434hÆþ£!¸kî‚|LÇFß§…�5:ÌÛˆ Çš*²l��M )+=�à“_L!enó¦ZM°!)Ãfd¥\„ON! †Ž†&î"VnIJcu[ Ïë�·à> __øÎ�b*ž>p„Ê ý1aü0üHÉãtúΜ�a$©?´A“&áÂ9²Ä -ÐÔØ#+gŽ?6(¤j�ÙŒ†L§cÈtVÙÅ(¢\lsS3m ›˜K²'ÍÌ{0€VƒfÎÙux=õ lrŽrÉ ^Þ±ûgÖµçsy µÅeYu C€ÕØØ¾½½PLRWV~ôMì¨òÖDp›yn-Lq&,&Vºprw!`Hd¯ˆ‰eN\—�øì«Í¨*ÍÃ12�4ºrKxGiÌ]B 2Gyþ˜³sæÔÑèÅÔ‹5e¥0³´Âyb6d’V2]]ØÅx*nUâÖ¹Ó—�‚T²hΟMElß± ACûà$û!Sn×�¾Õ [vR°‚þ93î“>Ö–r4pÎäJIåàǘR-£õIô€ [wÁwðp§ŒxQI-R TSaI£ßŒCÇÂ` ×@ÿvNîc:ówWU6ÀÀÈ ÎE¢‰’¸©ñIÈ(©‚.Aј„,úÈÍQTZ C2c}65Ô#�ÿÿØ>”7®Æ9æï=}6„Á¾uy�Pùi߃|ð\“àÉë0œ ¦æ&ÌK6ï@2Ãëé»´9¸5d›$Ç!’,b\ŠÁÐø‹‘U::Š£\XÛ¼_ì8�ÿ¹¸* jX«¹�ªž¾T¨´�™°‰ÇMfpå4å�FZv™§d�ÛYáðÎMÌmk„¤¸Lóú8z1eýËÙ$ÿ5 !6 æLƘ¹+ÐDLì«�_1¶5κ|îzP•êÜ©#˜8s2UÈŒ‰�•“%]JŸv mØxT3Xà|x8ïS}̪{ßIhf€¾ô‡BN€Uú³²­•c—1G¢²²ÊL3R5--‘Ìì!A!ÓÚ'7+}¨øÀ¥“>[.…6;¿:3Ua°Êzñ'kƒ«²®µ´úÕ6:ª�ÉX¡›™VVxú¸…Ô—cÓîÓ[ÛøíﲟÜ'ïkë�eìø£–nY{˜ÚÀ�‘6}áeÒÎ[$q¢MšŠÁþAøðÃ�IÅ�¦\…©ÿQmù2ÿñÜ_àÍ�¦#ÐZR,²º¼Yo…�™z;jp6,‚ÀŒ%¶nú_oùŽÉ­sȺ Çœ™“�›…r&u>~* o¼ò&Òc`kÃäÝwÞƒ¾¤f�`þA/oÖd·�›>ç)…PÖ ‹—_z® ÆM˜ °Xåþð“UÌ1HYN¤Kg¹ä)h9},Ot¯oäfSÚà ®]`55ÎÒõƒ/É;1�ä¡iÍÃúåM¹©µ÷¥e¹Ñ´@ÕfÑrF3š¨žá‡9È+,�Æï6¤ž9a©ýpwÖ^tt”2ÁPs® 3âøÉSØè(žyê/mú·m‚c}¬íœÉRaǪ%773¦]Ý¥Ö½žOî£:?ÅÙ)pöVÙ: ¼gš˜gÍ‚ Æ �±u4´tذ¿–¼jäž 0±qdnÕö,§ˆˆpFQ2`ëvLš<?ú'ô'P¨iǘ†¥å¤|þùçd��€§ÿèßíÿV¤ o’wÖ™În=‘È©S ¼0¢Æo~H‰Nž¾Âº�߆>µõo½ëZ©ðb4O}ašt�PSæBÈfRó*Lšt æÌ_‚ìôx<ùâÌ)à«7 Ìí;¬/#Št9áá`)ƒ�jðË!ʲ<'t«Ù¨À¤<32‰ß1R^ž;1¤e"!Îzµôéß‹ÀqŒÈòTV©õ:FõȤìóì«×Á-ŒbëXDGúd•AM�èh·l·¶AÃôšq{caÀ*ëå<ÌF�b;nü¦‹Ãc`ZM9ŠuŸ(ç+ ÜÜähXž>¢Dk:шõ;^6m+½�Ëà;bYþʘK#Ì‘ÌþdÜ{ïýœˆ:�il¥ÔýðÃ÷pðð!åÜÛ6þ/¬ýìcJq8`Ù}wëžË˜'¤ŽR+]aru뎯И€ãW*òŸ¶2Öy~°N©&ý®ö=z¥mÿH믰v<ÎÞ~‘’ß>7h�õØÞ­´W¦“-ßÞ¡.dzyË·èIVâ3ϽØvx¹ÉJÿnÐ�ù)qG€õÄÉ£Hd~—•¯¯lÛ>##K:ä„mûñ N´­† yÅZìk¯`•Æ\ý-«´!ì‹îX¥-Cs—ËVY/ ëõyFä¥Ú`ò©.«íTœ¦3I‘wcßJÛE}¦„ÁªË\ï‘£˜c•ROœJ_�6z2£¶O૯×s*ØŒz¦,(ú”¹eØFsBT™fðH�º�ýG£,ô(Ü)'ûêËÇp2߆=ò,tŽ#û›×¡c‹¨„lJ´[3�Êþ=­‘#“ú&xäC_=æêcŽ˜ãgà®;– `lŒ³v æ§Lx|²ñ’¾o7òzŽÂŒÛîGøé\ÇFBwÿwX8�—NÓ‘  sæ{•"ùà�ý¼Sî[Æ`®>pï3LY¯ýVQ’Ï\K­Î¬ÊêjÔ^:ÏÉw�}¡ƒÊèÓð? .ƒGÇù�â#ŽÁœŽŒ#1ùÐß—`‡/233�OÖ®�ßÐáøîÛÍÌM8 K^|ƒFŒ„nN2’8Ñ··o »oéâ6€õÌ©c(á=îOÿ �k¬Ÿ¿„½¿A'‹93@ ¸¾ GË àHÕ…Ñã‚´Oéw[¾s�Žǫ쿎¿ÉëWcátð):�Ý•—ö†Ž¯°Jý�tØ“]äÐ\×në�²,öíãO=L©ÒM°ó¦¥ƒ[\~µËqfÒá�Å— ²ºÐöž;}ްæf%¡œ€Ž.¿²¼Õ}…0HX¶�Ç9¨³‹3¶?>¶½úÓ~oïø®olDYU­âø0‘ÎqgÞw�;w–º•d Ô@ÿ— ‘ªòbÉ%¿d}ñÑ»áÉçÎÊÆN=ÜþŒŒ Ã{k^aðÏr¤dF"=; ?îÛ¤üÎîJ»QÑaœ� xÖ~ÞrÃ;½Ž %—Ÿ“ƒ]|E\ŒÆrÑÒ¶>U» ¹œè•×[kw¬7rí.D†`éÒ‰¸ûî?Ñ »[Yú¿‘¦º´M)ÅE7²Sæ>‹c·k‡À•Îv¬ØTâ†ß�˜³Š½`÷/ìK'Ð'õ{¬™© X÷þËðŸ0£³KÔ­ëdíÉþµ3�Uò¯vX¯gç=½û‘Iæ‹ÝrHÄxü‘GéÄnÁO<†€Qñsï×°£}•��Ùd=rzîa<ðΚ_X�­Nf#ŇeÎùvsïž°‰V'‘¶Ïnôœé? qmz3­ZÜ(«Z\AÐŽE£˜lÖ=B$í㸤tdðyvñî‹‚¤†TnÒk®!àÛŒ”œtú°¼aÈÒï�Gs>’Ê1à ®dQ–ò9×±v‡�§ª)%[YVcæ -dPK1ƒLèu¬() y²gBÃ([‹5J™`Ã-”ßµA‹n*²�YI†« ó†[x¶wéÅ9œÁC¦,)«ä¼P”Žu"S¦:»Ä{K—ìÂÆ‚2ªî˜+ŒN_²‡Xqv_ŠCO²òÝK a äÄè›`Š_/ì<Ì<°Ì±K¦ì_ïMV²%Õýð?�Þ‹KÄUªéÃ7a<§gd"¹�ê~FXÿõ:Ä„ó?6‚/Aç ††ÒÄk×o†•½'Òym'M `Àv:ŽÅd#œÌØG{:dº:ûÍ$HXÄ~"T‘ò-.­€gϾXóù Í)ý›ƒfÈ…LíæÊ¹VMms}2Íjó’ã¡ÃDÅA~#0°¯ü†Q¢Øª¢ÂOÀŒ�ŶŽÈ"(mNÛ»º„A) ò >sù Hfþ^ýæ*lüöG îëÂk®ƒø„Î#¡€2Ë^q—Ú€BK›[åæÂƒ ²míúÒ’ö­rg]þÖ— µúüê3pƒŠ¦æçCÐ|d?Ÿ·LW•(Õ?øD™&»H³§Ò¡?ƒøPC wYÞ%5XúøCЫ*çñÖ£/�wc3#Ú÷%àžÍxWdf•£ÉÈeL78šŒð>ûµUexäñÇðèý˘'9 Ii¹¸ýq²ùùÜÕ4iÈìí�¼Šr²`‹Ñ¼:ïý£,#'Xã8a¡rLtÒð¡ú*–bþ©hÍ@V˜è´(篡ÒWI]é·ä¹“~Kí»Tõ;Å_~ú˜ò»ì@ê©òóÊ÷ŒTŽëØo¿¤øEòß{Eéû¤ž`"mð©¬Ò¿jû\”ï¦7ñ×ç·^é�Õs覦»½™nY ÉJ“—$€îŒ¡gHphëö­¸mÁìܸ ÿó—'±üÞ‡°eï^  ìUGf’È¿JŽ'‘žDp+�=ú%uÇÚƆZÎ2ˆH‡¨«¬Ÿ={öeÏŒZÿ�öiLÐA^V<ï>ý(šõóÜ©¦‡w/åsÁ�÷aÚìE?u)d·FçT0!=0ŠFMNÏøXØš› 7�7SF¦Ýï2lYÿ).^ ÅP˜2"Î#p:&ÍX¨¬j¤¡4.�}kÞbKÕ86¨ÈÒÛZ´èå9ƒ_9¾Éó'ˆ¼dÒ Ež­þÆÉ�‡§ò]ÞÔz²¬­=/Ï€£n3Ã~}~¥ŽXÕç_ú ür–܇$~jin‹Â’ºçédßÛh€™¢ÁÑI±Y|;÷{'Ùîo£gzAÖJ¥–œ§hëËyÞd 窈jS9«>@%#Õã‘õnn®Š ¤¬»Ø�>ñ?�ã®;—r’êMÙFËjI\«íÜìÏÄļ»rFMÅ(ËÝYò(W�W�M)ä?†ƒNúxùŸä~’—Læå‘"}¼üWÚÿWw^‹?b[A“gv;Àrö4v|ÿ ­¶�œ÷¤[æw °ÊoÖúÈNŠÇÅ ¡žŒ)�êH™r:5L­ÈD4’*JÉM‹ä„-�¤ííüôôT&$Ê¢ÜÎ8µ*ÆŒݶüÿ ¿ÿ�þ]ž;yÞ::^äè<ÜÝÐ{Œ9,Wì0±sý’sœxóõW±ñûï0Ž“·†êÍgÕç4ŸvLâÞïáXÂÈi?‚£Ö ¿A5,nY†K¼w†Ar-zJŠ„Q”~îé§ámic/J(15AbBJ[ )c7Æç÷Ââø·(jh†Þ¥p¤Ÿˆ†Ë²ÇqËÝ „’ùÖÎî¸ã®eèÉÜØQoü åŒÐý¹ºÓb÷¡zÉ3HIM£ÝàÊ{¶e¤NÃÅÓ‡ f{€õ壶¬_�ÔŒØ3Wlym3e€¿ÂÈÝ+p*�’Ci‰øâíÕ¼ì^fÄcý—[�‘�‡Ÿz†õ…X¼`ƒ¨Ì†AûQYR‰�KYpééŽçNâ³M[1}î/½ö:æÍ�«¬²�E?8öôÑnBYf($¥¤âÛo7Q>ÌŒÖb FŒ�#¬X0Ÿ² °Je:%ç×µJ %ô¬¬¬±zåJ%wrÇú°zõî×q5ÞúäMØZ3çÏ]-y”™ûlÍGLÁb€ýgVR ÏbC(kçd€õ�ÖZàY\J,NÓaÖÇëòã�}œÑ“òqd»võP:­'A»µÖ¶"%Ùñ99�,:™G0ˆã¿`íô‚ý‹W¦�‰7!hç pUXÓR.áÍ•�Qʯ >dòtW±ã½}£,ÖßoÁv¾æßvÇ5GÔ­ó? Ÿ@š m·k�¬âg;â?¥˜Óqa* ù¼Ùem£ÎÖߺߣ·*~!Q«Î܃ò’âN;OX¬UdS½üúKxéßj°J�Œ,™ÿcü•OéÄþK£ÃüÿØû ø,®ìí'îînÄI $X\Šh±¶PYê²-ÕíVw+Ûê.Ô�Òw  BÜÝ=ßs&LxB�B—~ÿ½ù½yç�¹sçÎÌ•sÏsÎsšBA=dnM Ž2”NßWÞE�lšê+QAcšuëWaÜø)7}=:®©ræŸ-×þÜ/ß’î¼k!žzú%*á‹cçþ4öçI?þôcg}•ÝþI›“zu5³%%¥C‡^lZJ�r¦é‹ÞUÖ"óJ}†è ¤Ý ðª¹ö”ãs(:ñlÝ£èd¿šÄ(]õD‡—ê³J9¢ó“r…"Øé­eÝ µˆs¾5 Ñn^tÉk‡îóëÎrEÔÉüFëœ&ê`´PŸ]iI‰’7ÐÛÛA/r¤â©ªž,÷$÷,¨�}Æ®�>‹·å“%9´…R%z�miÓn|ït¶b­(ú’llm€U-WVI†tHðê�¹ö­…®v#Þ~‡Ž$4àœ4e,u_ ×æû»ãd1ÙµªQÔ¨�ªúVœ:qmŒïèM�ÖÝ?”ªVzRº9 RKèL ¢V�Àö8zúy93v+½-s]ðí7›ðówß‘š•q\é€dbé‚¡A(iÐeH¯2xP&Э§'%–jš V¯AÃLKI….ï�j‡2>³<…ö!nv~¾þi Nszr:`L„|üBñå�ëÐÀ9¢�’ixÕ$¬j2®¯GÖàáÌÓBùÆŸ~õáNcÌ_ø7ŽÛ¿2&*uªî4 us‚ Ù1÷²½ùùÂÆœr©~ÝØž×m‹#C�u¯Ö0ÒѦqª9–o؆èÈÁðp¶F+�ÁLRìjéò³Uœf´šë‘· •ô"tã\UILÀ?4R1D<0 !Aè5V¡5r�ס ·@—ãèüåAQ;¾›„ØM8|<�ž¥ù¨¥ne|Fûü²ÅP(E×(ã´cwuž+ÏPÆ5a!ìJõàUÎg:ÕÀFæ Ù'Iôèr=ÁªÄ äjÉBR®ª#=ŸQ‘R¡kàßY/t/EùŒIu”^§Óh�¯GÊ {ÅÚk݆õ´ìÿW¯§¿ûþ{Ø—Ê@ÖÚ(e®¨"½ß'ï¿‹$R4‡R)ÞUé­–w©ßñ¼Æ3Ï<'ï`´X2N_ôIi­&ǘ8v(¾þŒqÓš›O ¤!T˜IÒ'¬¦?üPžO¦Â� çr2a¼§AƒÕÃ(¥ò£ªª“'O¦peBÁxÞ|s©B¥{¥�¦Î‹þ ç{&oþyN•Ô!+>U ŠþÚ;8ueoO*¶Ÿ{æqø2®èÓϾŒûhýãѨ ›ß…ùæM¬=iÎXäˆ0- ”,>Ä“\ Ònô‡ 'WüsÊd%“†•ƒ}¡x…J_Uú'75ÞˆLÒ/»·Ó¬“G‘}’ÄÛµaºSh×x~2HÛ€Sµ|U4îW“ôÆc< ²Æ -�–“’gä¯[PMº�ßø,Ž;¸ œ4’äÞî± †ãæ•hÿn™²OóŸô3É£zȪã‰Ü‡,„ÜUîõc ÓU¥ó–2V,ÿ;wîblÜ(Òwvù˜´ðNì�;€={ö 2²J%m³XdÚÚ^x.‹¹^O}]³ÞçÛ¶f<ŽêÚ:ëy…AVK*>¯€uÙ'±=Ô£¢YÚ�:~vXÊ.è\žï9]«û¿ýD<8¹ Às-¤Üœlz4dwYÏW¯ ¿}KJ� ˆ$]Mc�N˜~“’ÕÒÚ© Àªž¯ohÊEëÙq^ö7Vä`Å{bÊ-O¨Ùþ÷} >éošýîb«˜’ž�¼â2ä“lä}É1p¨åÀ�¿Ý #2·ä›;‚&0°§uìIù\Ü?»ìgz�ú1i­Ììúç@?ÜqçÝ0ûå-4ØXMªßÒ%••ga@T–ý²§ƒÂPOú"“m˜Ñ8Ç� @cSZ ÃÐ!cójZâï«j¢¥mZl½0ç—ôÖ£r!¿ÓH(”2pOÁM{VmX‹©ÓfÁ”@O>7Ó§ÍÆò¸0vS¸�?ÜP†ÃoO¥�/-çµ9Q´´i!j(ãÊŸ]ÿº {~F¾G(<ã¹èög¨… $øj²ìeø…ÆlRüfòóòòQôÃÇXµq=F\Ï…¬=åõøîëµ°/:Ž:†8¼mBgœ«?š™‰4‚-& µX«çŽ@>ãë_þP™³E~nmo7à¿‘¾úù{Ò_5áÃ7>í¼ü1†HÉ-*� ½ç5Óš +±výïJÖsz Œ9žžžšYþ¼mNBNŽNTr\ÄüÕâµGDbé[oSÉ=Q×áŽÙ�÷Zìg†èýqùõ‹Ù°&æÖŒG6°Ëµ„ x=�4Ó©ÔDì^ÎxÃm€s·w¢ËWsõæ[Ê9߉óœ¦Q¤fYÚ®(/ƒÐÁç’|õŠ˜và çœr>Öz›D ~Nþžvìá:sõÆŸé…›ˆf*ØFEÎÆ-3žTÀÕIÑ7t¬r®x°j¬²¯”´ßò9È*ëÀг뙔ôd|ö3Cù�9åR’ŒÉk¨ ?ãÝ£yîok7( ë ç‚šùþ·}åŸ@[M>Y"Íh ó-½ì2¹^èú^+/°�ŠÓ�ÖaæŒ[” ´´ÒæØöÃo_3–[¿KªÔôY“¨\g¬q~.7 æ:ü|ëǼ¬ëìÒQ~‡â�ëIö“~ÓæÁ{æ‚^/+L]PÉTÕ5Us½F9@[G¯×s»lmkãÚ‹ƒÉ5�þ €õjÝæ¾ý±XòúóhlªPB‚ÙÒ{J3 КÃu€¬eW¯ù®Ô/¸h¬Qª+PYTJ Õxô로šrì Ò86—–•ÁŸàj:=Óö®þž´¯»1~ÆäœLB;å®×ÞýþA¡JÌGÍkjn««ì»óÎû}cpßQ¦€Uذ¾ýî[<ùÄSȧ<ø�§Á‚>øü†Ë˜¤YÔ·FôÇØQ‘ ÀªfÖÔIjêÕã²O3‰R˜ZT}‚zLÕ5˜FŽìTþ«4ÀªL-:Ñu8¾õE�¬~RQøwè*;h‚å\‘ݤ/^® 'eˆÎCt0š1U�¨Ü£¦7”-"ñþ”$úVÍg ê/å˜êÇú�eØ�6C×ñã; €Äh_t¶bä.ùãÚ´Lž~òi ™»�`—…œzQÉÙÕ7Ò6+6f&0 ûÛ1ñ‚äÙáadûpGA¶Á#'“Ö×¥œ_÷§æ"Â�Þœ¤!­­hB^e-ú°-™SïØBã߆=°·ÔÅCÿüãAjÁÃŃGŒF¾¶#Ìh¤yrïZ„ ‰ ×�G�.]†—*§—`A³)Že §¬;câJ–½€ ¤±ßì‹I@QU¼<}éHa‰Ò¢ Œ wÆ Íe¼QOç•VâQ[ iÍzì&ÅêðÖZü¬kŽŸµÌÀ¨²èKM55I€gæI4çsþ ¾?pì$˜.$mIq6Ì›G0Ú¿­^K�À*h7SVuES³�°LHclDOm4µ3 ëŸÈPký}Hé*qN-­Qư/Ž®d)Ebà ™),zŬ£�‹7eoÆødè–ÜÜ\è˜Á/Ø ¾Þ¼‡¢r®Ÿ2PQ_‹cÇŽ£(ƒ”Ï?=}|ðÅ7?£‘^ŽÉ% ™K0ÄHAã‚€ÙPÒØz=€-Ä'Œ¹vz>á„a²£Ìè(3ÄTzÛW¡‰ÆIfn+GÕ‡²Ÿ‡‘>L¨ïlöïƒ�‡Žqì2¦ñ×Q¤gŽÐ ŸdÌûùæ»_1ŽáMè�:hÄ@ÞS CÓøô.„wP?$³MXr gá‚ô¬Ld[2Ö3‚_ÿAxî…8΄!ÀÑ;öÆ©´ 2†õa¸°‰øþ³Ô=4·3GeS;Ü==;÷4�i3`K ûåa3c2 B€±wÐ0¸OP_ä¦SW[SIboR 7ñòš é–YP®´—q3fýï {8`Ͼ£,˕݌ãZ�$zÕÖTßaÿûá³OáAãSŽ×;÷ÄâÑûé½Õ¶ÁìƒáãeÊŽËø———dz´`Ekq­º «$=¤-ã§1 ¼­Og©?|õþþÄ¿:ÖÎÜøêÓ÷0ŽJÓ2*T|hu6xÐïì$߯ß~ÅÉSG°yËNŒ��›6 /Ýé´¬—Ô“·¸rà/üÏ•±µÌ-ÌiujƒäãIeLZ7öuÒ‚Ô“:ÁDß}©L9º÷7´�xáíw+w«:œé?ÒŸd �Lj”o4…6A€GÕ»Zú„Ñu³,ÝH½­z¥ÊùÂk/¼þ2aH™’dBRÏÿÙž™üNsó…óõ”äºÒ÷äûp«6|£Fž“íÃÝqÐ¥Ò‹¿ÒÒí],'åšrž'ŽÃƒ îØÌ:e’“ ÔzÙRô!—¿L¨B!+ ÅÓñ °+§ú,4ïCö©÷$•‘ñEõ­޻ö¤§q^¾L/Lëj¡õôJß=bçNú¢ÅúWÎÛ»7VYý ô–¤L•†SÆ:Õê©·sz:VUKÃKsü°b5åž^ý˜LÇ»aѽ 0�5W;‰’&nå/(ܾ ÆôîQ„Ž™¢¸‘6+ÂÒ^Õ6}µës9å—äàÝW_dleZ±ž±Â–r>à|ïŽ�kW!|àYÅëÅ^cñƒ�"•q)Ÿ±¾ØóΗO”âš^¬ç˧î÷ cÆIñ"…’�ºÔtÛ-ó�G‹Ô�ƒ‡(»zXå€ iFÏe<¡J$§¦`ÕïË1�sÔÿ¥´‡ /RŒ_x®¢aå÷_"•ñ BþšÊr+#FŒÀœ9ó °v,‚Œ¨l“>,cž•OŸ¬Z�²¶V8�š ã°ñŠ‘_Ô¨ 2l4L_~ Á¶ô~ã‹1Y^± So‰U ;pªHÓ\ª1H/ Æö­hóG�³#wp%ö×éàäg¯#(4z”‹ÕÔðÒýÐ%½œ—¾Âï[¬ÄáÖ§!Z:¼¼}�š–ÂpÔz0Éø¬9¦µê@ÓzhW×£’Êó¬oßCö×Ëpý¿ÉzÀöóî댓ۊ:Æ´7'¥T>\ì­è èEOŽh)RI)ñqС1eôã¯ÃŒÊ�f*7ú Œa¤«»þÅ%°?“÷ ™žõß˜ÈØA>‰¨Ÿ„´·Ÿ…cï=vÓ0ØdìÃ×Yí°‰~#¢Ï”~öË…)oú¿xctÉ „<ü"ügÌUæ,QtÉœøßJÑ´Ú–�š´IË¿9f+Š/ªß�õXxØ ø“©£žÊ–3n@4律MI —ÒSlÑÏû‡RÓ þÒú•€«W`=rü ixëhïD°™Šm~þ~ÿÃ¸Ž¬ý¨ºPºnÚu�ëáÄøô‹¯02jxçiÿ ÅüºU?’’ÌŽN®�û57b6n€•ä–ÖÖø‚ž±amÏ—~^ö>\ƒ1lÔ4ô×5sî’µ‘Š7Y§&gÁñS ˆ=ûΓRNÀî" ÑÔ ¹¦p"Ÿ�~÷,~RÝ}Þïíd†ò"EŸ¤€>gç¦óžpæÀ3¯/¦Â°á!ƒ1w&�5|z_‡�¢‡º'åQùH²µ²=/À*Ç»{°–”w(«÷êRÒqgo‹ÙŒ1T0uO®^«ë›¤q733FeU{*ÕôÞ_(›. SôWNMÙ;¡kí§€«ÝV¹/K+{®Æt¬²¯ò›�‘B¯�í¤W3üüžê’·{ÊæºeÞœ›»ï¾b¿?þð‚Ãé¹~Ä•õ]wÃØó]P‘$üŒºNl¢—£Ž�É%ƒ¬õM��˜¡× Ðz¾{þ3ö?óü¿0:úÜuóÅ\;‡²¹.©-'’^Rw�õرýÔó U€{1sa¨¡ì¬üòË'”mìðæ+‹1…À©#)æø€õÕ§ï'P?‡ŒJc|öIò‡GâÎ'—(×ðòë«„C³²éJ+¯¼Äÿz÷YXÙ(aróIËI§aÒø=8 ìK;7»€šªÂýÜ£çîÑÔÈQU÷ ^KŠŽQí/\§v÷0’>¡êB4KùS�»-uý„è MÜ<�"£Ïz0hžt‰Û¢'ºÍ:å“ÚRÕEŠ'˜f£pÑY¨÷+à„:KÝ$ ±73˰Ý' fôø3//PîMtQ¢c�ŠZÞˆ¨(ØäfàÙ‚F”d¦Ãeëo�ペgÝ/˹©»³ó„»ÿÁ»PLOGOÆöŒ¥¡áÜ£7à¸Õm†Vm!2èJïC44P'BæFzÃõñ°‡¶•|† � “)†µj Ç: •EÔ™:ÑKµ ×aNoP£Üݘ6ý:ØëÂD‡×±Éô–ÝM�ÿâS|ýѰ7Óf Õt8ѳ¹®®æö6ŒsêÆ�’ãHý\2F‡úè& ³¡®f»;¼'ÈÜÐn ['$%%áWö³“drªåó®'½sä„9("ÓQ>�óüvC”•£s.5Iÿ]›NÒq�:Ù °J9͇I�’ ×a0vöDT–`%kAA. rN#ØÇ …ùÅÐmo�»·<û(L‹Ž±í-ÛÈȺ–údGÈÆM³æÐÙ°EÁªêÚtÐÜÔ ã6†"CB �S˜O6#^´ù-ÀÝ«vÀsP¤Â< ì»È#ºÀÚA£°1îÜ^*S¨âeS RdM/ÑA¨À©Œa2yTzxãôÝO`È÷uŒÛ,K€TÑ#‹ÃM÷r„MÀ)'+¦’„^ò,Š-¬*?8Áp(Ù%©ºqãUÙG9ð¿øÓ@ÖXR“=öØ„óñü³O“·šÁ¨i�òÊ˯õú„>ËÕÝ3gÎ&'{3ã²Àø #Ôº Q#ÇàÖÛnCNF&¢ÆN¥G¡ÜíPqZ8ÊKQÎA¹‰‹_]ÄöõÀþÃÉìôÖ˜I Æ;n™ƒ×ßz‹ž¯»Cá'ÄzøÑ'‘’œDK1_ÜKo„‹IÒˆ…fT>šŠªžÎ•Nq±�t ñP¥¤B¯+¿3ÙÂ(rãÒÜJúÏ ÅâK:Œ¦àÐÓuÕ}ªŸšïj}‹€¥zöJ§Tb³2¶¬ìï)‰ #À˜f§•¼ú¡á†*H&ç È:„±~p•èÙç_TÚÇC=Òѵ¨°cÇ ééR½Ï™ÊÔ�R°±€iói4Wœ&…E’#'�AÒ]}99Pèaš0efg¹…ùÙ¤ãêP.NˆÃO_½;R#Ì[x7yù}I»¡ß™W6j)$D�ŸFKÆ�J¬àÇŸxR‰u'Çΰdü'�¢äý«%7ZaI|Š…‹î¦'k5F�‹ßËXÎa˜8sž¢ÈrrvÃßî;릂£ªõŽL$H©¿æ3�þ×Ó2ZÙ-}Bíê"YŽ×ÝÁH1e²‘|j›ŒÝ»7Üp=/>ëy!‹µLõÚ›6m¤p:OÿãuW—ë»ÓðD>R®Ä ÒþE�ïÂÅUãiÈ"÷'ù|i&÷( ù­ö#¹¶l‹QƒÜƒjY$“oÀÙWF]0¨ôÅRoñ6U÷KÙR–ºðÄØ –9é�}Ò¹”1�ìUΑ‰¼£ì.·×y�rül:ké}v_ï[±ûöcùŠŸèç[‹éôt²³³¥âÒ¶ó¤çŸ;vì@tttç¾+±á@*§?`•ºÊB°O©S8o©I}Ê{$˜.Öjê{Vó\KßÙŒ…¾‹L°ö¡�¯&‰Ëø=�Nªha©­¥ÍEV¤«çÊ·#­=iå·ËïÊÇÄÊ6¤Ñù3’µ�c~“Ê’àª&ÀzÏm7#‚Æ1dPi½z«�¬…œ·[µI=̘0ÿ×@Öl*¼,ÌÍ{Yå¹Ù:8*ŸÞžá_çX‡ŒZßÖèñ˜|ë"e±,û6®þ™ééˆ5F¡·—ùJ+=µ2Ù‡†}®Ÿ [öó¬œØ{²oß7[¡�ÏtŽoöÖ"À/ Mô]øûn �5Ú,ïƒeŒ ëì¡È ÅûWÀÌÄÁ/¿Ç€ „Œ8« €UÒ“ÿ옯ÌVÿØ7Šã³Ì-Ù¤¡ªÜ·ÞI¨ �Ûä]T:»¢ z> ‹iF‹íØIˈ‘póò…­óÝ«gðˆ‰JÙò/mõXs$'IU6,j4ŽLÀó½ R�$Ý–æiAÃ*//zÉ’r«qí¨ ‹ë~† 5žpœ²zŽžp<ŽT.ʧ{ú†4XO,‡76[µm1ŠJ¡_e·#]KéýO' èŒ§ßÖcµlJËÇÓÓ³Çã=í€uùfÆ“Žˆ>ç0—T²9©×x°çœvÕwÀz”@k¿3@sÔØ@Rf· ¼‡|~ÛÂÙʘ*Jï ¥Ÿûý.ºë‘άöW[ëj0qò¬Î}š'ŽÄã—wžÇü¿ÿƒacbýêu˜LàV3}ôæ3ð QâG …ZÒ,Ú0n…uR[ifE=cïøôCLœ»V¤ú²fŒ.I°¾ðÊÛ¸qÆä.ù/ô#7ó$’éýØoÐ…²¢Žiö}.˜OÍpË]·ÒÃ$Õ¬³®^‚¼CIù–Šåk?EôÐ)j6å;åä”T’rÏ”%oexŠ?{Ÿ1½ÞÃ=ŠÛæ>Ô%¿üˆM؃®wÜh8¨™l9g«ëÞxÆîv\3¯æ¶=çÞžVÍ<×Úö¾¸ƒxø¹PGyNß@Ÿ1É;«øÞË[,ŒãÀ_d€UÆqdý¡¹Ýy³Ý6ŒÈ¶àäíÉ«3,ò¬E·b/ù§Ôµ»ÇÜ42”À*ÇD¿Ò} w¡‹¨k0ùV“iá/Õ‹UÎÕ'•åÿÖŽ§XT\¬ÄyWŸé¥|»Ò˜rÈ�¡ ¸Ú`-*ÌÁizz}²ôYRjúaöœ…Š«««7uIÞôòß�·ÿ�Œj}€U®»èo÷`"ct�™ÐÚÊ>Ï€~ÊG¶ÕôGViƒÛ^|ˆŠýücÙJÆJŒÇ×?~ ?ŽÕöœÏ'Ž={}õš—ó-}@]cŠÓƒJ5©Y–¬‹Ò]s ¯ ®j¶wõ¼Ké;’WÕU¨ç H)ºÎžÊVó\ìwǸ$†ŽÞVêy¢‹ì`9Y Œ_ê~õ[ÕÕŠîUŒðEï# «ª‹�KÏÉɇзª°²5'KàCaQ€Xꯖ#ÏW>F±[ñùo+}ˆ25u1šé�#;Ê~Ý@Öp²×-¦¡UÁ-;zk®ß•@Ö€<Ô™ E°ÑI÷ FJz%1ÖfÒü·!lÂ(dÙŒÂá䤲5iÄ®�‡ÈЉµ¶â‘ÇŸ¢A6†DOäúã4&…xcåÎýô DyQ.LI»wÿnzÀ¶‘ÉÑ Ç¨··vŠ_Öа²ãÇDÂŒz0[Kgø¹ ·¢ýƒú`Pˆ'üè��–Y€ß6í!‹‡!Š s9›×B§�`py¹æ-#˜€«€«*À*Sh„hÛÖŸ S PKì=ðØ3ÏB§¥ŽòŠ6ô �ŒAzŒõ>ˆ´¬Õô@weݵIl‡Ú†jä–6豌׭ǩœ|ì>�+Êd;É|Ù@PØ�Fo…5­(â;µt6…w€7‚©{üæçåØOïTsÊàe ó¶zÕzÔÖ2~.Ý*zš˜àÐò8~: KòÓ(ç[ÐjÇ@ê^& Ú‡ X1½omømGJe�òb¬sèC­7=ø>£1ਨ¡¤›­Aû7Ÿ#�2°çšR® bI[^YÝ„>QÃ`f¤£ÐzWÔ7a÷î}hàõ‹H‡lãhƒ´Œb>_`úí[É–Iz½VŒŸ<“&ORÞ“+ BDGfFOÞ;æMG±‘Ò9ÓQÇÉÙM Uxù¹W(s뢾Žõµ6R¨jÔC^QeÉjô§‡éæ�ÛèÝ:’°9i¤Íéìë„ô„Xz §ÂË?'N1?ÃìêaûúÕ0&}yIæ!¤ÑvXO¬^·+VîC1ïwo|N$§aÂèh˜k7À•Æ+-­Í(gLöIS'cY‚JئùnK£=ñÐ>è[zÂËÅ¡ bGƒÿËI²fŒKð°�´ÍÕŠ!‰¯ê8ðÖçøüí%ظ7î}ÂPQZÃæ 蛘bàÐ�Ä�RÝõaz•WT6£ŽÎ!Gަ! b¶nÜ s>7Rö6¡��“¬m(WOÅŠõ»Âj“¦ Z†N C£~6"F eö래7e’rKÇ�¤ÛïE)�³–¼”bo�¢Íë-e ß}ì•}âø¥kߪ€¤xô�Ó ý…%Š>F ”sÔð”26u/CÖ3Ôù@IDATÒÅÙ§=Ôg`ÒØ`è**úô?ÃsU¹ñ¿à?­v¦«]︄ܼð6xS€¥çÕœ3FŸƒ’L½$Yóó pìð>¨å¨÷¤þ–oµN½]_3¿æ³ÑܾmésÝ©’Ï—·û~õžÕ±MŽkö]Í{Vóv/C~Ëù’zÓ’ŽAPßs:X%]i�U)ô*þ«å|(ÉÄĚϾ§KJì>ô”¯(ë´ry{w/Ü¿YÙ@+EIŸ|ð6^|îYäË2éòS®5øêݱèÉ·•BBh‰~¥Ók¯¼ŒaÇ£�X$Ò²´§ôéïÒËù�žýåöd¬YIh±ú¿tež€:Ê8~Û’·ñ‹ÿ"¥.éÒìQœ—§\¤oÿ°sbˆ«W¯íÓgÿC…‚.Nüç)ôoL@Vÿ騛�É44”djÕæÌ½ýÜ{Çí´¹kBpÌ£Hq�‰È›S‹:ï·æ˜,™d^É$~pëzÊæÁˆ?¾~ÿÕm˜4a¢bñ}ðX*cOê"~_ SÒŒ=ùÏv^#‰VÀe?¾‚*z³;•…Å�>Œ5�¾„fw•}ø~ÿ×?áô®ÄË·¾FRZ¢ÇŒÁ{ŒnÍëºSõèÓJyË_z7>ý|gÙ=m|}ÿ,´�@,œ6îÃñêko)ÏT^2—©óªæ\ÔS9W{_­ÅŸ|f¸ï̘z{—Ë}òÅ{¸óöû»ìSìŽÿîTtÉçÿÇ´jÝ2|ôÑû˜4î<ðÀC˜}ó< <“Ç�¡5üQ̘vÓyo;–á]n¼c>rަŸ7Ï'¿©»ó®‡»ä Õ·_2ÈòÕÛÏ`Ì�wÑp·ÃP -åŽí]…Y·?MÆ ‘0Œ4ñ3ðÂ=óHçe�w–ï‚= „ÒÙØ°’†•VŒm¶64L›výõ]®s%$:ȵîýˆ�ÙÛk±ûìÁÜÛ¦#ãxI—|o|ðöÆÅ“rn‚}ûawÜj¼þÜH=GZ·ƒ°7 PòG�ˆÆ§ß¾�5›~Ämóï�£UÇ:}Èà¡XöÝ8L%Ïm·ÜLoìsY)Þüø5hýù“•]®­þ€õ�_ǯŸÿ®îúß÷_ô ¨ëcÕu×Å®Mþ›·¬Ö[ê Y_ÍùPîébæŒÞÖ+ÿÍ{Ô¼¶z_½­»4ó÷¶]\”Íð\³t“÷–÷b�iÊJ=­û.¶œËÍ÷ÍW¤§¤wψè1�E¬§^pÒøñ8D±ûsô– xýÕ×ðØ“j�¯Ò†æz°pü$Œ»kÖlÆ]4vžððSWäªÒT=b%´®6È`È‘?/œ,¨Fkáa“µ²¸Z µ 7–_ÓB€Žà,Á-?RW×4‘ -5ÕEÐ1±†¡¾>¬xû�3”ãµúzù ¡ð$ŽnÜËXœ³PBêb¿¿DC¡ÌJŽÃqª«MŒõñ¹•þ]x ;kÖ "3C¹Å RÝ–,~U»¶â©â êš0ﺱHÊ*¥SXüöo!u5œ+Jéé[‰U4Ʊ03C騩°'zèÀ!8Ói(,ÈŸÞ�uÈ-($¨éOä(ëjŠðP{|ôÝ6:x\‡2Ò3×UÕ`ÂŒ)h×3Åžy7͘€adùøtÅ:ê¨Û�’FMÒ*� B.óf³¼œ¼r8œ/zðú2öi&C2X’¡oÔˆHØ8ÑÈdý:Å)-4È +~_…êªV´aÔȱôÒôA ½��ò½êLAùØ�l9_ó# WŽ�ñ¨†ØŠ6"¼W1„…±)išÉèñГ�`ýÊp63B-×µ5Ú¾h«8oÒóž&â;j"°OF�Óy°fŒâ3 5ƒ1Néñ™AÏœBö¤öVDxšÂ/|$æÌ_ˆmë–cÖø“º9-9 µ1tëº 5·.Çói̧C‹å=co€-Ù††“Ñ@M2o*_6pmðÍǯÓ×YÅMôn¤Ó %ß•'Œ‰33ô�°[nŒ=E*q]Ì»q8Lè¡=ýÆ›°ôå¡[ÑŠÓŒ¡\9 ®*³PK+T jdÝœìH…pŠVÏADý-ŒÓÉ øáûŸ_u&N�ŽØëñÞß’W<.æ-hh3ä íZú°5|I‰”’žKJ·á´vq¿ßx‘¿� ¬’qEš�9x˜à@\^¤"ìo»“tMW×KF,¤±Š•�PujRQÈP…± 2M …+ƒ6…–BŸž š^�]Þ5üC,E%v�m{{šÐ²v·ì’ªÛ̹õœ-Â’ bù&ÖšrLBIêþcÇŽ‘ؾ}<0ab‡òãTz:>ûè]ºöç!�–L‹n½�4¶´J鯜ÛÛ¿^ø'Ëòƒµ� šëʸ»�¤FÈ+©†W@¨â©bG�œî)Žì–Õ? Å‚Ûn¢u¤?©ª» VûbwÓ"««õw÷rÎ÷ÛŒŒ~�¡ç;ü—Û/ƒ¹j!­YyW5V9&ýH}ßò[,¥ÿHÛ*ÏÉp�vty©ÃãS襭I¹Æ�6w?|^ ËŽzÓ[–}Z­Sí¾]H¬ôc5^�,8ôÛ3ÛÌMµÚªk«G±0R?ÒºOfÊBƒyD�ï¨Ï—çäé~ŸšÏF€È x‡öÅà¾[Ð ÏþŒ3 ™¤ÜMß~ ýG_ÀcÆ+k®Å‰*Æ¥!%Š%-»'©‹jå¥z õ�܇xþj>{©‹r_óÔ{“ç¥>')[îQhzäYK×<_ŽÛѳTM˸0nji"…’›âù#Þ?¯þûU¼úÒ«˜Ë|5ÛµùMã IUŨ¨(¤•¥#ïù«Nk¹ž*-sAOãdOyÿ[ûL,¬HÛc¥\¾¥¦L¡&±uìX[†¢XÒ^¨nÍ\ø´q‘(4k=%g?Lš½Eù9ô�ÛKZñ‹3�马óíÛ³;í •H:° .Œ5cjf®ÄÂ^¾|9úx¹(qG†�¾Ó{Ü2å(~ø|)Eu€Î=fú/í\³ñwZNæÒ“ìžSFIôÁÛŒ;5fÒŸq¹«r ×Ôñwöœ¹ EaQ|¼½aÏx—ò‘¤.nºWÂñæ;tã¨ýü=X­ù mEô€¥¯Á‰=[p<~Ö$Ѓsâlå´¦OABÂQÒ*Y£ÂïzøFŒP(� h¤(±5Ï—D^’qZÆpÅëÓÑûæõEFcúŽº-ätpJ: w õ¡W` A×�­´n9�JØkåÃÄŠVíôöЧ¢B’ua¬\iQ<ùvŒŽðƒvöl°ŸŒØSèì�Q?~ ä“ñ,¡¾ÉåÕôv�B¸Y0|* |üè¹Þ1Îÿòò ˆ¾ùV”Sadä쩜×ý_ ‹Qïã��¦"Œ½ï%Ò0;*ÏTÊ—ùI¼„e>9ZæM&Šîe]ÎïCGö)1¡z;×?Ô3§ß3S;,¼ùÞ.YÅ)}¯µµ£'E“rzå�ŽÈÊK¢ÆNùt9ñÌ�=ûbñÀ⇹˜ïh =å¹–öÍ¿y.ãàåHBÅça¼ôÚè•Є›æß©xÕ“þÙØX‡Ûس'ó2¨xi€»ë¹²± u‡F †|wOiɰ¡µx6ײÁýÉrÓ5� ­ý%%¦¥2Fn­Î+{Šq LÍ`i¢�6*0¿X±¯.ý„@ª.Þxå%ÄŬGuc+>ÿì+*7-éµjwRŸé�ÚËŒ1·lÉ®!Ÿ—Ÿe›¤¼�F�îõ»œßÎô~ §¤|÷–\IÑ6„ò­™Jé ñì£K1œ†O¾!\O{ÓèÉÞûQ^•…£”u·ÇüNåk ~üõg ê�Ûçß‹å4\þå×_pã¬Éþ´ ÇMFX¿³ëaÆŠûñ»Ÿ•KÝxý\Ü8užæe»l‹ëœés»ìûÿñÇ^* ³ó Ø6{WWòÞëN&)’¡òéRn{e1sÅ�OñX83Êø¯()›_^êX# ›Ž¬mD>Õ”ç/¯Ì«–èSTO5©³ºÞT�b©�:ghê^º×Ls½¢®íºç¹’¿+Ë éâgzÉEÊ;–ûÑ\—öTÈéS' ©w�_qÃ"dÕ§×Û•JêšñBõ»R×ë^N?2žÞ]vûRa/It�D(ßÃèeög%Uç ×3=uŽ›×aDf*ŒÙw5Û¤´A‘!Õ}êïîzCµÞr\ÚƒÊ&¬Y-ZZ Å-q¨NÁC”í,J?Qמª<«–u±ß¢ï“°7RŽ$i‹²-^ŸBO)l|оïŒn@S÷#õ•~)ù%dš°^ìuÕ|Rï:êí$<�ÃE2 uèÚúL1¶è×Úèý×ÞŸPÊS ƒ&á)ò´u OL¹�ž¥­¨3mD5åäDC ­4s3ÃIË~ëÊ®ÒJ™—ÞyZÎÔ´;6–ôÕnêOÌìÿÏ>Æš¬\ìwòÀé¹Ð®ÊÆèy÷£…1Jãã ¦ãPv9ÒOd"ÀÖºAˆ6áô5¢ŽÛÙÙýh@ ÕZOúéf¬Ý”Š�ÞY7:Œ„„Ð8},C—•bÄ„ëPsj+‚ÈRSr|/LüÚÔ3Çžƒ‰È£7dY A=‹®X¹º¤Ø1%õpfˆ‘Õ›÷Á€ñ&N …¨¦—“\C|“]€v²OÚ_À§+oö0fLXß™saÃð!³ï¹“òÛiìݺÕåyÈ/k �ª6tHˆêê$ÚËx–d©ä:ÝÚÞ%éi(§±wQE ¶lÞ‰Y³gÀJ ¨ SSÊj=7Õ�ýÚ†ô»§“éAZC*dêr©ëº~ÚT<ûÒë\˜�À­§�ƒ¢<êà@píƒS\Oé´£Ÿ`EoÚѵåÊ{²Ìˆwvcªz`­?ã'ÅÁˆ ­KÒA蘾Žß–Y'ñȪ�¨,©Á§ã‘϶¸3j*Âã©gk€'CªLøàMä¨íà_OOTÖ0&-½u‡0Íc7ß‚‘ÃSÿi�ôÈm&�± ïÉ�ôÏkV¬D­¶*I½{ÇÔ”¶ñ>[°�FyÞÎö”UM©ëÎah£ä#ñg Ø&­&EV­á½ùyz¡’4ÃÅ9id,)A/ÆQ-E»Ž.õÝn8™’B�´a}½é}é…šâ‚Á ôCG”æeÑ òcÞ:²~Æ uw fÖ ƒ-R ëQ]š ]KÔT ¾2Ã&Ì‚ ×B×¼‹Š&}ø�>¹¾Ž±r¹Îyì‰Å˜8fIÑHêá¸Ã”ßC‚A",ºy&æÌ½ ¶Œ—êC¿‚ûkVüH 9 ÛÒàçjIÝ:ÇS`S�ÝÙ‡dC—‚ îE*Ai�>Þ°žyS¥^\L¡xïçEFa×àQHt FzéŒËrXWÕé‘.ó’ŒQâùßF wæ£÷ÂÙ„^§Zv0Ó7€0_¬ÛIÖzõèÑS˜ j Ç+'p8€¯½RNœ€�.œƒÜ4$i‡v³í&";ãcë3~p;é�KØn̈GÑkôÚ­À.z÷îÚ¾“Þ¾E˜>í¬ÎÉšrûî kÐÿoÂmê,Ž�c©Wî¾¾•ñ³fù·•ƒ-´Ý< uøiÌÍÒ’±^ezRt{Õûìòà4~üd;�ê^›çY“3#™‹ÿÀ°³ ©K©ñ¶]1ضk7FÔt!…ë ðpìØƒXÒè8»s±Û® Gºì×ÒÍ\òó¥uË?‚-=�ŒÍñ+ƒf»P 4” žÂ¢b„“£ú÷–0Vë¬Þz'IƒÐ?�ôev¸çQÒGîÝ�GŸ}ƒq-aïsZaēʂAÄçÓª@»Ý;7Å Ä›tZ´\ÑÖ×¢UıSØv£m8_ýþè~i´òQ't>$dƒ––¥¦À#‚Ž*DÉ5Eh�Å� Bœ]$œÛÉþh¯ÆùrÏB¯a¾ø9µ£_Ìud1hn¬ÔNI,¬ÎÎè¤V1y~šÏ*”Ä Òûª¬1Tžóý�¸÷þ*ÚSɇ4yÁ“ gÆØ|ìÑw>µ“7¾w®†wpDgµ–.yƒœøÖ¸nÊTeŸ ¹ÿKK« g̘ ƒijÔôA¤§·ïÅç«×3væ Ì}iÕZ¸N˜ŒŒ£'}Užƒ|D©`3ûV%¾­üVë«Rÿ˜Ïœz¤èè©Å+ßò,%É3@U×Ô>¬ä?Qü÷voß}÷ã�Ô`pÄPõÆ�ˆbÜ R/ósM'Râ0P8M`•ºvÜkWšÑî÷ÐñÜ»ï½6W•�NÚцœ»«I-m`Ü{ßU$ƒ î:號m—ê1Ío‚ëW`•kˆkyî .Vò°Œ±D$>–±…56­ù º­\dÖT³Oˆfu.¸]Fªd¾tô¡1ε–\½VVy6ÅE|RŒ;EKØÿŸ’# ¾4“Èmb`'㪩ˆü"É€:—)# Í—A§BxÌý÷ÃdH4¬øUCF¢´¨�T»>УÂ3�²¯«‹#i(í RCÖCŒ#Fbh?*]( í¼fRç8{d\ΣΡ:¡%zSU>t6®$U¨½9öaPÌ—0×"°H™êæE:lÜî5q:.+‹hZ=v;Öþ{ ¢žy•�ù<°¯�´b9™p¶ÐÅߺoTîUÀÝŒ«n˜s9{w ýÕE¨àý´Sðõ`ìVI°JJzæ64äeÀj`´ò[ó_|z<¼MFß[ž€'3HÇ8ª©ùež•g, HùÈ&I�“”—øï•7#PåÚ+Ð:8båPÆ8tv®R/ãÌø›�Õ…  —�¿ò­ ²Š«€¬’öÇïC.©Æ]5Ãl*O$�ÊOQ¾5X>dÇëo½‚7Þzso¸I9þßþ' F®¤�N:±G“6ñ¹LFbV½÷‰ÎªåÑ0wÜè)°°²¥|œ‡¯¿Z‰É8lHTgu£'€UŽÅÙ…m;V¡()³n¾KÍÞåû§ï¿À�Ë¿'¥\.,¸‹«©²6“Þ­¤ŽÊÈ5pìÙ ä{qäz8RVgMO£ÊìYû+Žæã–ÛnÃÓÿ|-ÕHM؇!£'a뚟aK£0[*Ó®dºÀª^«;À:jâÌžy›ª>ü؃ؽöûœÊ´*,ÿy5*ŠkqÛ¢[q,ï7,¸þIDP6Ü“�Ñã‘ÈØô)ô8?���/} 7Ïž‡m{7Ñ»+©#˜¿�þvÑ#6óçÎÅþ„½4®ÎV à¾Zñ-¾úõ[LqyÆE¯.]Ѝ¡çöõ>¸ÑÈ�¾ºãùþ™J肬‘ÿ¼9¬�ÊZ=+ÇsŸVIª!Ÿ:ÊX(ãpfЬٺ‰ñy»]ž[P×=êü!{eûRÇQ™ÿ.õœ®5¸ø_r-o`’5œ²fáZLÖl²SçÞî%j®åºSÁKÙß�Ž´{Þ+ñûÀÞßëÖñ’�Vy7r¿ò¬WГHd+;ÛŽ9E³^K_}Ž1Û¯ Ubí^I€U®/k@yÎRÏk1]m§‹žî¹£_œ]Šá¸ªTÛ¤´é²3ƹ"?v€§ÿVŠ“ü:nOaE¡ÆUuR¦|,T÷©ÞLRi7šëNY§«Ž¢Ð—t¡>¬–#ï¹Ã{„Òß亪þOîEtj_TõR¾ê„¢ÂÔ^J;I;‹¬ìLôrÑ«\S’\GóZ²­‚ßêû�úýüugV¿ö–LÇ¢,­2CsÃ1 ÓàilǤDCy†¾t ÒLyo½Œ‚w—tFî{d1e�œÎ9O ËâwU°÷1,§WbmU‡ÂÉ£G&¦ÌÉÜñ£é5Ú‚ªâ L\°G7-ƒ¥V_ªtø�wHÁW_‘�">Æ.að —æ44èÚbÇú•ôè,'xÚ‚¯ÉÆqûãOã�WßF+×ëÚ­ú°dp4Ò"HG£E‚AǼ<=agm‚]ñÉ\W Rb�9Y „óÚ³~�¤CSXLxýâv#8ùD�«öM÷ÊBË‹`»qÒ³ ñæ«/1Þ°?>[ú´«s 0m¦žµœ4¸ˆ­-³Ú†¦¤ðv@nn6�IOຉ“aÇ8¢9t¾ òó@fQ=*{Õ¿_0)zÁþC‡ZÛÒ×–¶ ¹¥ífŽô¸¬EAq ê«ë)‹¦¢áH"·o˜´Cp,'Ë¹ÑˆŽ ›òJ�FCº…®Vð®«V^á'.¾x©¶Å\Ó�`ø…oImHzTÁIå¸^ÒhÂŽ€´¤¦M5³7~§üvfÜP'¬˜ÕÕ@ÚRéˆa†_î�gÜçãˆ>”^¤&8ÉÐ' Â�N;‰HÊ@zÄMN%D.)‘ Xs]·òâ".|?%ÐmnFuKóæL -°+}É4dDÏÏZèÛP¿Ü�Æ„uHÍÍ‚žŽ!Zè¡khmŠ:Æ®�5m B}ýàÅñ]}û Uäjò3ÊeKKÖa?#È ©ÍøªdYâ=Ûy ’``+AÚzR,—ÓáˆFv4’tïã…­1©p±7ƒ‡‹êù¼›Ûô1tp$öo;€b63n¹ >>Œ#ÜZ¯þh!nåàÆX¸yd=й7݈�k×Âû£ �rüô ©û@] ×É4"Ö6w€‘V ¼©7ê¿wìøìÕ´‚‹é z}Ÿ°£—3ÛPã¢:λ�a›t ÿ—jOƒÖòðhäž8…dʸ®^^°>qÛµÂú:Ü´HßDNPØ O¥!uífdº`oz6ÝÍØŒá(�àú‰£‰æšâpb1u�öð aߪ€µA+߃öÄ%#þH ©—ã`¬£­„©ih£1‚#Y^i�AÃŒ~4zÌ.‚…³/,[Ë ­]��áãà?ñ&„yXª·E�½ #FÓ–ÎZb¤¤»3³*'ËRs}«SƓГ¬:½ù……8å‰¡ŠŒ¯2¨-2F_hï¼øÿ6.ú œduõò½l€U®Þ—Ö°j¦`î³µ×ÃŽ{‘!�ÓÏ‹V9©ðö혒sÝÝm¨àÔâDÑ@ÅçX8Y™2®[-"��mÓæõäIﰪʠÕ&:5Œ7­:Ætw߸V´¸°qP¼mlÍaG ˆ­›W2&Üz;Ýc Þ�Ž=ñÇñÎÇôn,,Ķm[akesQ@«¦à®ZH½/§±vLæ´ �é Ö]ªÐïê`w´±®Žî�Â…\W:ˆzé(bí% L}ì®ÆË±ö’zÿ‘¤)|‰ ¢Öí|eÊý^(O÷s¥Ü²/?l”çc¿ø¹.qpx²Fû‰6--]Íg¥–!Ïì=˜#Mô`›Ÿ¡OF$ŒH{3xè¼þŸŠ0v,~%ùâWÀ„ô á#¸z7cl¥drÜÛ)ñP5c¢&ÚÉvbKZ±üñ[<î ‚ú’Hâäg§lË?{¨I‡ƒ~ãì[÷ ¶Ç¦`Ú¤qxõÕ×/ `=št›víC¿ ?¥x¡ènÍ¢^÷¯ð-‹iÃòŽ�"Gv¶yͺ˻”IO”ÃÝ“´)Ù/ŸKm_jY%%ùTTŸ ©åI_— Wú¨æb@®)¿5s9GÀвœ,EÃ.íT1u× þ—ŸXGt,d¬m ­?g)J€îIÞ©Ïby%†r\&Õ‹± NNNVb¾–——c •7Þ|®»ñ–.«”§Å¿[h1§¶ñ�ÿ…±vã«õ¤Jæ}h¦óõ_yÊ¢Œ”&úzV瀬jò eQ' Fy—âq$Iõ޽@>žJš«Zî5°JEIm -¥ÊŸ~ú©ò-ñ¤»{µ)ÖÄ‘ ÒŽíh%ïµôoÉ’ÿð^´ØfºÛ¶. À*uÍ8²]Y/hpõBë¥ÞI^.i\:�{®‡(úEÒã‡@Ÿ •åýhÍ>�tðwÏ¥U£ƒq±E)ù¬) _‹ë%ÝÄŸ”ÙžÀÄÿokO�NÆTuž’ñTÆM™?nY€Ö¢ d­2´ q‘ç”<þ<-¨ëaL¯¾¾Óçӳ߉†ðõ �AÊ"Ê1†*/(Êô¾=¥¬r]XF ê© �û*·ýímŽyû}ˆ°µBêË�Ã.5 WZ;=ßt>z§»EO€‘«§ržekI!ÁÁŠ'kMÂNüæ=´Ýpê�M©,Êþ¸ý²÷q̼ç)$W`çÑ}p7>÷þC™S*+ËÑDe„NcN“®«á×Ï`OÙÈÅS)[þ9O¿µG€UŽ…��…>!á°¶>+kɳ”çÈéLyn p™—GpW‡ç®Ì»2çÈ||1s¨\Käygªü!sòìçßë`•óÔØ¢±ûví�LÉ#ÉϧO/ÖŽ½gÿ ÀG U@[5¹»º‘º-Gh0(kw�uØ�á× À*u€U>¢P±"`�D¶™Û^7q†rK°¾ðʳXtë=p¦×I{K;Þûä}<|ïbzº©·}Áo?Ö6·‘~xÑyó&’rËÖ­Æ�CäàñH¡ÅþÇ}„{Ÿ¤,nÜ“ÖZ<ôØS Àªb`jck'Äí܈%ËÿÍØgÖO£au¨;t Qã&b�Ö+ °ªu¸œïþ Ÿ#IqGW’j¼ o|§iñÊ?ß"�o‹ÐàATüÐà”^¾üø" ÊZ°uï¬üþ;œ>yi%9È9} ñG· ^»šk} î?–ÞÙÒ€b±â�ãîîNƒèŸðÛÚŸ0sÊÆl e›tP>—Zoñêùž†ógŸßK[—…jŸù\jùW3¿€«&À*÷¢Ë°½%dUelÅh’J·|·8“À©›PoeýÑc²N@EÀù£ev?_ÆiXÒR5×l¢œT�%dRŸ�º_´º—-¿;ÖyšÞ¼=åêyßÑø8R.uèføÔsÞý.`í^^r*uX{YGè `í^Ö…~¿õöRe–ب½%™S»¯/{Ëÿå˜Ú¾¤Í¶�ì?)#R¾‘$z¿ÎuóùPd5¿È;ªw¶È9*X©œ¬ñOh#EùÞax&¯¬+ •FVeSÊý‡äKÖò2¶ˆ,«ÊHÝÏ‘ßòŽÙ쌬«ö}‘[üUûœäUû�œ£›èEŽìb€þþ»o’…�F€ƒÏ5Ä9•™‹ÄØm¨*,†9©eÍÌ{åºJí´ƒIPòvÈ�giii™7Ô ª"¿ñùüÃè¬Lå ucƒò|4r* ¸x™é¶·7¦¸xN= K—¼ 7;¤ŸÎ!èù¬\J¨8×ðÆ¥Ë�z:UåUêY�âFsxZÕa€lʨEQn |=±bùï0±³�MC:¬�ÌPfÄuAÒJ²f‘îÕ°…^$ò7¿�)3oÅ®´ ´¸ ÂßæÝÀØÅÐK=‚gžœ‹)ŒOLd©©'={c¶#™ô­–VذsÂ#0–»'"H?ûñ;ïÐk·šÆ‘­ho×£S“n˜2•ue¨$ vl_2BµZ4o»s»� ¢¬’\É€1hêõØ·åwض&DnA¶©€¯»éû"¿´–Ƥ�Œ êŽ,¾[s®‹üœ­É6åJvŸÃÜ@�Ôlß´ƒG„#›,%v¦º°wõ HÆ“ÕÕFAU)™-iÐY€‚ï7LŠØÏ>Ã�í»ñ@Ñ)Xz¹Ã#3CXÕŠ uñvRéúÑ;8kì¤aÀø‰ìjí°#Ø9 $¯òP«–¡©‡'ܪ©é5� ªy´+­í­ +èíZت ݲ"˜6Ô£•ïÍÔˆ¬ž¦fX7eža¦N‹2L¿a!ãÙæ¡�’‰¤cnm5 ìds:ñ8Ø»"ëtÌÜ¡¡I~ô2M?vžd1¼ó� ›rþ~¾(.H‡›Ÿ>ýa'2Ò’ î%@µCa…jù^´ðÙ¸Ã•í¥–àž�‹ * r°j{ rËêPGOÕ@:Ÿ­£cÜéœjè�ÕN‹qÇösÅ÷?ý†`Ùý#BV Ä!ŠO%ÃÚ¬ÙYH£>Úͦ�º}>˜Œ±ãÂPRZ {îx…O!ë£5c²V¡ÍBwýýaÓûÕ…éd¸É%x¨ƒÿ@èüÔ5Ò¥·öiœH< �ÀΙ4¦k§o;Û{ãSÒ9ÊZ‡ :ù(œé8¢]V¦>~œ ±îz+w4z¢ˆRbcÞöíëþ•‹ƒ5o6Jž§0~®…H7+#Xšês<9ˆª·:/˜�¦GûTÆNê* ‘qGb+>¬!j+1�¢Šf8–† ²4™šóÞ¨s¶jç3C' ò¥\lCúŽ®Ý£P %°Ù5³ÊuJ®-¬Û‰¼,Þ¹Csx¢‘ï¦^ÛÆÕÙŒŸ[‚Ûo_„`c…†Øì ¾À¨½¹jiõÊßàÇÎâpDmk2ÆNvøGÿþim°uù Œ™<½Ç:´×—ˆãº6nH#…AþÑm¸ž–¸ñTÚLšè?z ‰è‹Jš±¶›Ù ‰Šëáãf!…1_L`ÌÎÞ/HYöþ‡_�ªX®ìDsn¹þvæØE€ö¦…w’â`;fÍœ ×å3Š€ÛÅ$&º+Å›öÅT6Ù)‚„ÅÅ”Ñ=�f Ùáƒ�#Ôcht§`¥Æ‘Ô7·E¹ŽÐzäãßJqfTªü7’ÄT®ï†}1–Ê,TAðJÖEÊTïY³\Ù/‚"“¯·{J’'*j‡"tæ3ƒŸ"´Fò9Kš:Ñ‹ôÒ´ ±ŠÀ˜ž¤…ôj™ÓÄ ?ýô&FGÒ‹z¼’Wý§£­«O×# öã�?¯îVÖ÷ßÿË>}Zzç6g•çD4èù%¤I¨gl£€´³€ËÜ�ö"Âo9'ÎÖСp7á2Kúï�&íží¹×ö£tìk¼_ µÏH”$Ç$ Hw¹m0… K[Û|Ð`£§$eW+=Ã;¯¡^ÿ|×Tyð¥<é¯eKÿ]É>,ïËB­«æ¹RžÜ‹‡D¹ÏÅÏ{È;f_ •rœ.2fq*¹¯^½Z¡Îîß¿¿œÚcJe­fzð�Gé}ÓuŸæñÞ¶-Í(ã—kEåÿWÏ‘{6�Ý¡ü”{”ß’4Ÿ�²ã2þɳ°^m[ÄÇ_„Æi ççbRØè!øtéˆèßs;¹˜2Ô<"ÔtOjýÕïîǯ…ß{c÷`(éVzKþC§õvøªÛ½j%¢¦M‡íE*´ÒÓŽÃÛ¯¯R/¿`¥«)Ûé'1•Ô¯ƒ£. `ý#7xô@Bi-ü¿ôã ¨ãŸx±J²³³ÎÈ(ÊoÎvüô”Å#•¼§£’�ZÈ<‘5ónž�‰“§â0‹n»±û÷(ŸG|\)BÆÊª__¡åû6˜¶¶£Ýg 2¸˜Ü¢Ý†ûn˜‚~ƒaÜ h”VVÁfø’.—-åk£Q—tÕÔßû ‚\ìD¹ÿØÇ·àaç&àf^Ëw$ôSOsñhC£4g¥œÚ¼L¼ûÀXøõzDÜYveÂ.¬ Ô‡á-ÿÀ„<ß¹ÿR6ä9ªÏ²Ëy‹»üºèòšýD³}‹Q€¬Ÿe��°DWÑiÉ>U6Q 9óï|ýAÖÊ’DG!ß•±1T~u°MiÊ2²OúƒÚ'C êÑÔ$¿åÝ×úêñîßê=JݥΚI½†ì“mÑÕ1yH}4Ó †è-4r °öȯ`ò¤1X@ϸ+�DkÙÖžY9BR å9sßà¶öJùÝÓõ:Þ¡òì,¬ùþ†DEÃ7¸/¶l݈Ä#;ÑØ¬‹Ðˆ±˜8çnH/ÇøÉ“àíh�IcG£¤&5MmÐëFg£D3lÒíŒo _ƒ�ùUô&,ľ'`êDOʪŒOV1CäUÕ¡O_÷ÿŠ0U;òÍÈ#Ù'ñŸ7ÞÂl²49:õ‡ í鼤=†ê+G(�Å’ªïa`D�z߯â<„˜šŒ�ê‡)ÓèEjm…,RÑfå–ÀÇ߉T§¸iõ*l±¶Ç”Ъïé ‰:û ¶f嘴ÁMYé¤[5ÄêàOžLÁ©Œ"D÷3EZêaÆ -åæ�øRñ’©g8™NÒÒ 2�@_ ttuHQ܈Äc)ôT¥·j^>=K aOy§‰»)飒bœÎÊCn:Aî3ÕiF CI*:¼²º¶Úª�Veä#°�´Äô Ó¡ç+�Æ2 ô)ËçÒÐÅ� v5æÍžŠÆú*dýffqóîí@n†RNÃ$Z—`.�ÃV-m Æ’@À)Þ[zºr!B­þþС^®vÒtlÙvA>.4, $ˆ^Дө°ojÆ‘Œ*ØVã8Áæ>žž4‚³Ea»¢ü�‘¨cCf›4Lž5“ÖUÀ—þHþ‰HJ:ˆ)×Ý‚˜ØxÜ{ßÃÈ:ƒ#ö¢¦Í‚ k=Í{˜Ф…§w¥¹±!**àÉ0¥ ™qèÐ[ðà»ôõqb8¼jÜ?:Œrcß®�ò B[«1C?ú¢²¶ Å -xfñbXÙX#b@J«CÕ sÆ:£�kE#G¸ÚÔ ˜ï­¹M #¹N¨)ËÇè`’ò¹œµ‡)›ïÞ¿‹Œ¦µpp÷…�úm«¶‘­ÁŠÀ¸'=˜KñÿØû ð,®ìý7þÅ]‰ Á�` ©@[*TØ–Ým·î²m·T¶îíÖ[j)P¼Å%@‚‚„BŒ¸»ÿß37L>’�PhÙßÏóÌ7óÍܹsçÎÌ•óžóžõ1ù>Yâ½/¾Æ�·^‡ Æåµ —nQ�ì32`¶e5|ɰҠÕüÙŸm“®‡wää}ø5 Š$Äcõìï샅«6¶AÎÉJ¸Ó#·ÔÕŽÎ|6ð¶®@= ÇD"5vÞxã+¼x6KÜÜX­µCÒ^Õ¥Ö`PÒax>ô¾ýa½« èÙÅÓ®†—^" ZQbò píMý±zÛJÔÂÞ'µ¤€n¤áƒ0üÕVá7“NfÖlÜL/ØCc ß…Á~u°Ž‚”ekÑ`ã„ÔëÇW†tö¾÷î aë­•J@V%Õ&q¢5}sãÙ8Ð’NÆ]"ÒŸÈGÚ-ùÏûq.vv&m“`Y™ÔM›¶ÿ’þÒþhÕ“µýY´žòùgŸÑ(Y÷îÚFËXz§ØØ1FÉiØ:8‘³}'ºøØó§=»$À¿YffVvt•¦ÇÁÑl¾ˆ#vß¶ xïƒwø2Ž@;¤ˆ®�xêÅ÷°léròÚ“ŸœnÛÞ>þÈÏ<‚у#�ÀÆ¥†–þYéÉHÏÊaPòX¬úu-ö�HÇ !Ã5�­Hò®G�G^Äh¥Ô¬çü1*[Œ´¦ëi-P‘žjh)ž iÚöüW}¹ÄÚL<Ù¬�ÕåÆYÉGŽ‹å¾ËŒÛ ^�½ íkOþ3�Xõ³ópñ÷k�RõbæÝž¼¤ôõÔÒ9Z}²ž”õ™Xü)Ú8›“ ¸òñÇáääˆ.´bP@ì;ª�9iYŸ [–¢ÿè©Í²­b`ëo~œ�ÈÁ¿Ø«é˜x°^{-iYIÉ 2óö™xæŸOáŠ1c©45¦ëDë!?ÆäX仟çÓÕ¨Ø×v´óÇ›VkM^¬þDj¼Û9,ŒKçværy%kë9jƒSZ@Û iºZI+f‰ñ+´-¶é))B� ßB[ù´uÇ�Hxí;UÍTSÌœt"ÖÑB{#±ˆ¤<Ê*H,<ÅšÓTÄÊÓ6-%UâËdApP‡ùÏ\̦Qì½³ïoµxfN�ÍVI˜“° >4d|æ±µzž:°MYîÙôxyâŸs0yüh•U’¹à&„Ò;B‰¬�NïÎ[oÖÂÖôì5˜ð6˜vÕD‚�¥Ä1̸á=±è�{áßu$œÝ;6ÖR×éÈZæ²()))A57¡×Ë¢_æ!‚Tß^dTØ·ñ‰ëñÓâå˜u=ÏŽwþvÇÝš'ëÀ^“Þ¹�æ‰:xèP ä»åKF‡Ââ|ü¶îWöƒC±nï�˜2ú,^¼‹æMªr²ýqîô?¹è5 ^Ö�>þ•x×¶˜÷É¢BTSIi ´*5œ0,YSùmtéæ„•%°â5ôòÊ;²ù3£wV'¬&s�HEhwx2¬SÊIz€¼ò�>9âãp€1ÈD\é}ÖQ‘± ´ÕÊ+NÆÒj[ò’ù—Ì3”@ö¹±ÞŒlQgÆÜFo@ã8|–$i&q¤Ñ. ÞêóW_ǨIW6;ÖÞ?®þÑk{Ê–Í0—úBeõoóǯ—vúСÃÈZp¡Y]ðyòÈüòbÍŸNîßhìÃÉbðGˆz‡åý”);–èÄ \DÞmñ(UªŒCÄc©5¯U9GÍ/%­(ÚE!: BI.y;·¹H¹®7ÒûF5±¤ˆÞA¾)£*ƒ¤Qß™:GöÉ|Ü8vj8çyˆ'¹Ü£œ×‹ñÀE÷¡9W/-éB帰„(¦}zÙÎ:¼öE­…+²�Æ#™´¨×Liî(azN{ÿëÛÑûÖ™›,üƒ´A¬°¤82¬Ód†Y$Š¡Me>/úõNÊû)õûýdú?öõ€ðã·Œ‡©×™Áô;·mD^j oÀ�÷>A]6cÄÚÙ£{�¡pmÈÇ�¥8wÃêÙOûãTƒ?Šéß3ȻȤ×oäXX;ørüÞ·®‡Á¹ܺô'KŸ9¶1äHÌ·oãàñT4Væaàà¡óàSذt1í�CqIHN`WÌ$žLA¯=iÊd,þy œí­ ®y#‡¬½¡©ŒßyŠ e½u÷Å'"<$^ô†tÆXKílŸÖ§* ΙYÐûÓ‰}FðSþúÓó6¢•“6ØÓ�ôµ¥(ª¨AY0] Ú ¤´Š1d{àXÂqF´DÛ_O?êX­`V^„F2ù8:ÚÒ`/ ÝÃ8fsp�™ÐÎÒãÓ‰uæÏX¡fœyˆarF!ò:nH =Jã-)Í·2wÉî;ÌÐ3; æ¤ ^BÚ×4¶Ñ‰=bLBœ  ævíÆP­ ¤¶­GqQ9J9^,$@è¶e*Ë›^CÇüg‚½>õµÅ£¯¬ž¼;ÉPÖÝп$W{G,až_€ÂÛîeÜWsœÎ.„™«5{*àŽJÆW­¬&ÛÈìÛpÿìiH9U�_×®G½oO¦æÃ×ÝwÜu'B»…¡7Áã °`Þ³Xÿ @Çn߀µ¶báš•¸×Õ€�ùô4w¶Á· æÂʲ ÇÖBhÐ=ÃzãÙ9ÿœ9OcÁôíkcÑ/›àÊ+'duDz ç�¶ðé11 u‡ÜS0/*FX?R ç•ÃÚÜ‚@m–)„!¼*Ñ­Ê*ɰÄŬ¡'ŒCQ^&ÜÝ,q0&éñ{³o=w“Ù×p\bo€§“l½°†ïWYé‡ n>3çGS¤Or†%ùÐÐ@dçåiï_÷M«á�’ÜTï²Qɵ½v&ÁŒïÑ‹o|€È(Æ%¦­ƒ-å‘Ã"hÔiA?l[·nT”–`Ôˆá8]XÉ9€+Ò²KàB:äø¤S(( HJ:àïè.³óA¥ZŠÔ°ªˆß~B—ÊBtÚ´.¶d[%)o_뜲jêjú#’:× 2¶.�Ž'˜Z2’‹ ©yÕ ð£Î~ŸeAA)cÙÅœ:4ä!ûÔ.t�àÜø½‹C�Ÿ° ©E˜™{:Û=0Ðŵ< ÄÌ `glÝ;¶¡sž�SKw0}Eˆ÷ªþ¿6â»#í·± jÐ#œ•öרž5hm”´ïÕ ¿Íæ‹ZÜRè:}¾—ûöÅ tô~/)ȺjÍ*,Z¼ÁA�àdU†ÅŒÙ’“—ƒë&MÀº_E-a†�Ÿ9Ù82žeç.ç–Ÿ ¨ˆ6Q ¥Ê/‹æs"Ñ€›ïºWN¼½ñOtîÖ Ë~]OF+¨�@Mƒ9=k½}?¶Ð‚`̤Ièè‡~="°tÃF°­Æ´n`€kãdE:>¥ì—ÁŒ¼`­‰<0Qà«@ç^�>k�؈ÒÉêÏ16Œ/¬ìo+OýyíÛ6R ¼7·Ù5彎/.FåÕRGË ×Þ±#;vÆ¢gD�öUÁyR©�]Á;/jH}™d[�*v¤d%ƒmÙ± ]﹯)÷LR—ÕT—cùÒyðáà¤w"Ù¨-Î@ •W78ýºt£’†.þ­ÉÖ­Û0yòT.SZLr�´ë¶nÄ„Ñc[<Þž�rÏr"®¤<}ú¥öœvY¥‘{Ñ?/m‡îG¨eåû’Eó"°:zyU”—sdeff=t¤Æ=¯òÓSkë²jÚ”tÒèÁÚÁFzá˜Yr1oJ+R>yߥ=� „ªw)“´!r=µHZ1@0Æc©³*9&‹€©b8Qž‘j� �ì‘wT�Ʋ_]K½¯zš¹‰e[¼è»j‰wlìHµl´ŸHÒ¥t`}õÕ—ñÞ{oàÆo9›I·Œ“+ãI¦ ¡Ôµª7ý¤Ìôb+@­´³r_r\Õ�iZù¯ÏW&ŸÒ&�OÞ}õEd øç“s4ckéýƒÃHÛâ¦-’ÆÏ‡@ü©.ËGui~‡AVynzËyÉN&œ¦ÏO]çrZ¿ÿîÛøàÝwpÝ 3Î[¬•+�Ù¢'.6Ȫ¾A$*c„óæ< \5XÏsÊ%ˆå@IDAT;<þšiÿX/Yíþwf<þ ËØ±gî�¼p'|Ö­BŽM-¶„¸Áz`?t ëó_`ý;<¬q¨(#I™T;ÈÏ ýSÜÁD,�ennÛÿ(¢¿OA/ÒaüI{Õ{$Ö®�Æöè�¸úª«š*jÇjHÛóŠ| ¹ ãŽ"äÊ›àæÊI8ÛÃn]ºÀ�ÖÍJÒ‹¨øg›¹aÏ>øR£×©gì;K+á�_PŽQï¬j°Êy+¾úŽGÃ+(§i˜)ËŸ ²êÇ‹êÞZZŸ¢"c­y&ßö�vØŠtX×ßE ü­4:½O<ü<‚©èäãÃI}Ë Bk ëëï}ˆC‡œsY¡Ñ=À*'—æ¢g·Qçœÿ{v¤3.–LÐd×Ð{,ã‘ï?ñÔAÒh™¡OŸ+µ,NbLªž¸ëöÐH`h›ÙšÙ4w¹ã©™¤†»!FE¿:¹d÷BX8yÂܦ™.‚cú^À*é¾zo&ˆ³#K¨lœ>ýzu:þýŸO Yã�žmÚ§6–Íÿ½û¢Æ«¾pµ7Ã’¯ç£0!¶Îp6‰“«Îû½kS€UòË£§F éÃ�œš?�(†Û™M@¨ç€�L倗_xýìqßÌç:TŒ¬œL>n3Œ9EXåä¡a?øúMô#H·3 ­eºƒžÁ"În­%ù?³ÿý÷ß“H =öï½)»‡Sq×ÚÞ“ŠdS€U®ick®…°1§bZ˜—D^ómí› dì´‹)i'ök!"¶R¿Ú­;½ÄÅ¡£I4”˜©]fÍâèBCâŸ~ áӯŦ+D�ŸÜ¬ß|ð½¨àÌ9¬G@H³cíùcœ)|Õt òDE^ú4r¤óÉšß¶bÂØHÍ‘ÉÅ®–”²^»;Q+cƒ@/w¼ÿγH# VSXŒµ5ÔA�¿Šèå—ÖÏR¬r�7>ü0yµ¤q~>úÌI½;€qFËjÌ`G‡½ÛS¯ïˆm�a=‘‘F—0aa�qdÏ^4wµ·Óhdë- °vöÇá„XшщtÇ•–èÞÅâèÜE¬Œ†£Ÿ|ŠéeiW”‹ Cø¤™�!¹.+àü ²ŠŒâ1gÆyÍô Eo2Û™¬ !0é2uÆ®%+–ŠxŸN¤›­2+v)+28rܕȨîõuZ?º##¢§!Ι~Žf˜uí·þýNOÉŠ}û´41!!¸þúØ{8§ë‘–œ˺JÆ1õÄ0â# ¯‚¹¥ÆNzû6fcâ¸áè5p~¥q[ ›�ô·9ôäµFþ©8x;ÙcdžŸ`eW‡Î¤\Ž4^›~-6+,48dËð E��+ŠYw5ŒM{ËMS0‘±ZãYŸrFÐ =œàé´ë§ÑÈÉ�¡’PQoK�Îô®¦'ôÀ1¸îöÛpøØaäÑkš`¼³£=vÉ$½ô^ô¥§èÊ­qôB>�œ¬t2 •ÁÁÞöÉøqi4u@%ÛØ}‡ŽÐÃz"�Ž‘æ(ÂBÃàf׈XÆðÝ{ð©œsH©KïÝ>}Ñ'ù½I¿T϶yŸ…7AæGª{ìnÂ_âÃûÀó¥÷Jæ”í[¨›=r€ug�ÑQQ ¤��³#âìÅɤâBÓÜ�˜»nfuó¥¥Å%]tÆŒým©‡-P;t8ªùîí$˜ëæb‡Ñ£ÆÀ°aeq}FjõUÕŽ†žæuäý'öÁ±E }Bྴ”ÅÔ>VchÁï”"ìKÈÅâS%à‰©Ó(6›ctL&E¸ÇÌG2òaafOƒ*ä–6 ¢° 4˜p¶·E��›Ë‘’Jøn‰Fö>×ÚÑ2Òçççi k ì•.U{©t?bT&mO�>ôzEiÃ%Œ�´Ubh#í”ÖFs<$7¶.oÇf—¾3­�ƒt—¹,7¥?í¨ÃÍž³FÊÅÎTŸßßHS¶3z'örP*rdß^ìÝw„Ž‚¶xáŧIGTÚ¦b[åWÀ@Ôé©'p21 §Èi>(¤;â£ÁÍ¿'ò'ðâ˯ápìj:ry|I°zø�‡àåí�W_ŸÐ60¤‚#ä97Þv¯"ò0jwl)Z¼©ùŒ]]\·–´"Ê�ZQdh;[ù‘—8hÑú6)P[9õ’î–²‹[¸€RB•ógJZZú9ÞÌZ¹/z¦¦Øgç¤Ö<úìHS�?•¯ûX;åg®Þú×ýèà³€q°dgµaÍBüô廸÷G à娲þSÖúwñ|”-e%Z…Gþrõ,Ä⦵wQÝŸ’À:Ã,hÀé:íû•ïQêI>bÝ)�ŒzÆrŸ²_èuŒÛJ9aÑ—üLE•MöK~ê}Ò&7\Qlhl,j6*H(o³O§¢àí9ÅvŒÅ¡¾+ñ´•6@þ+ú_ý5$¡ P´Áê˜ä¯è�¥NÔ÷ª®§¯'I+÷/×q{äÙ&e•WGÖ›9@¹âŠ+°•ëÈHã„à|ç«:’ú‘g!¢§;ÖvœùѧUu)‡T=ȶzFúg#ûEôÏÀ¸ç쯢“çlZŸgS]>[ª¼ú�ïÛÕ§ý³·cwîdLëaÍŠ!ï¢|WúgÛ,ÁEú£Þy}vÿMu§/÷¹�r*‘ßöÜvÇäeÿw­‹Xññ»_f�–ãáã{±ç@,^|匊¢•»‹ þrÓCè>;¾x Û?�WÃ�ýSWZÚætrÅŠ×^Àœ#¥xœVï"ö÷½…I¯ß¯m«öuÛ‡oÂmÜZ”÷Ð Šä›þwF%êömÅ_ﺉ”PÞXq,ÓHÈðNCHƒ³YËÃmhÒ9ÑN?u}�¬�v×8zý³¸úŸ/`×¼ÏQîç‹1ô¢3•£[7ãåñWàéuëÑsT”éáËâ¿´;"RÒ×Ézï�]¬£-ˆúÇãMs-ÅíF¯ÞÆg%û6oúI;5æfm­~¾øòSŠ’®ž‹©l§¹€¬Ëçÿ@¥Ñ¾¦øš¦éþèÿËW.¥'ê`²²jrýÕ›¾Åï¼'C7*�uóágŸ`AŒÁTúèåhb¼ö7¼ T HÃÇvH]i,©DÒ˧}H¯kã;wkV/C5ÃwL¹zúÑ‹A/GOœÐþ†‡…éwkÛ²v#�^wRñéeçÏ_Á¿G?ôø} z}ž¿gû=ðzi +°oÿnôï×¼n;š÷—?ý¨�2ûæ™Ø·‡4Êç¾·¦y ÈIúå]4ºÌØn—³ì‰ÙˆÓ7®¾þΦbÆQ¨I]1zŸQ–7Ôm¤¦ÆSO¾Œ|CÎc( ;­ÕÍÇfÝŒ{žzaôJIbŒÜ5kÖàþûïÓè!]=}´ý G�àíW^Æç¤°©ª)Á’Ÿ—¡W¯>\Œï§€¬O>þ¨vübÿœd¼ä„cwÕ5("û˜ lô²à›Oáçn­Å$Ë®qÇgŠ�¿øõåù0·¦·Ã<ÕW—¡ŽKIy<éms!"m´šêç|—zLÚVY?{ñ1„öèƒñ×ßÖV²ËöØÜçnc¼é«ÑyÔ Xå9ŠÈ\Rykªñ‰v€?j>©þë×j>/sg•‡>�~Î «ˆdÕ§½Ðm¹þ®Ý±'µ«ºžÜ›š'µuêšržz§eŸÌõMi"UZýZÎS×Ñïom[Ê"Òѹ·v’É�~~+ß¡^ga’ô’ü­$˜ôÚߦ!�q.ïšuÆßòð9×Ñ?‡srGÛ!ûƒ[±÷…§µmGŽ¿õ¢ž…¬e¿„5“z”°Pò_é~æ&îÅ3Ÿ®�]˜zÕd˜Þ…'ó8Û‚ ›6!°8“ü=›æÎiééøáf‚uŽáØ—W‡^â©7˜žw)ñ8•Y¿ì+0¤ÿ(ÔQ§Þ�Þ–�[ñÞ�;1¸¯;ŽïJe¨œ+1ÚÏ»2¬P“rŒ1=ýÌpbÁ}†¡&k/* O£ÞÚ?¬ÙÃðPðÙ‹�â`jìéA:…”ÀNvŒ­šVŒøcé9´ÓDa©ZéûÞÇö#ûÇpÄ3È©Ì|„y9!�àÍcûcµû”Ÿåd¹ºÄ@ËvÃ?_ÑÀåz þ¼d9JÉî2j@o”¢’ŒV+8¸‘bÕÚ–ñf½QW”Í•Õp!Ωô æ¼®‘T°µèì;2MÅ%¦‘yÐVüΜ¼ºbÅš¥?v$½sã1fü8|{ßÃÅ�›Whzþ†©“QÔ}lÝBƒÎ ŠEà ÿB�¯?Ü2Ó¥ˆ°è�zR2+Yèë ÷žôº%Ý­�Ð zó··@·ê"8æ•à×ÓyZÒÉ%¹X~õ,ZÛ /'‰tÐSáDÆ�܃ÛqMc²2³p„N�î‚BzvòÀ�w?ƒñCû`Æ”!�`èÈ‘t*³ÄŽ�kÈâOV`Rò’qå8é„C#F2®l*c™f ‚®øýüÃç8�¸�øG9Ûg½ À@ΡlÞ|>……ØL¯ÑB–5õpw±GÁÞ¡cé­J–ÑäÃ{‘tÄ…æè5h¼üüÈ<´·îÄþcIèîf�¡c&#ÃÌGöãû—„¥K—b÷Ž�°âýu;ùqؽ}—§•¢’8‹§�%®™8ñ§2°˜4½s»5 ™U[ÆÔÍ.(æ’Kp±�éÆÒûµ«ÖE£¨¸½8žÎÊ&�ñÁ]pâ»VgfCêa z;» íŒSÉ'p«u òùB¦f#Á3ï~ó9þX¾ò7Ô×ñ}¯/¥{kß%ÆsµÄ±ã'Ë× ^v('åväè+Ž2v<«ÊŠP�•DVJOR"[ #¿Œs›>p Û/ ?טm¢¢FbÅÍSq-�¯âéз5 ¬¸²ÿXç�áÝèy»ƒû!fË.ÔX;qìã„«èýýÙ'ïÃ’uýŸ±­Úiy–Š2È´B!mú.˜¦¹\þû›xCÈý°_‘~ñby–¶v¯B7¥Dž¹|çÄóþཷCpyh$×;¨Ä\¨m«²\îëb*?ùñ!(¸ö“Âï` Ï%«–h1o:ù\8�b’íÿþþÎðò2> X¯ž1wÝrn ½é½w=Ší‡>Ç� à–iw£ÑÏÑuûñÐü$4Æ·/©‚Û7_â‘ïâúà>†z™ùtÆ€ÞáZ›,m“´ç�?}�Ы¯ƒô-B 'ýæ(*0Äí,®_·Öиf i˜lÑÍ¢§ž™ ¿{ŸGÊ‚¹ˆ½o6z<þ¼æÁ*Þÿ9óæ"ÝV8í–¾¶Ýÿþ(B‚»�S2á©üäeŒ ê&Ýß àsÒü™;¤m;pßÕ¨ŒË=‡�BÏȰkghmNih$wí�1ÿx✶ÛÛ»ùwL/KYbv¬ÔnçÈá�ÚÚÉÙ][K S ô÷ÇÍ×O×vßx;A@RÕûxûš&ûÃÿwëÞa/VÓBv é‹Y·ü� #‹È‚«�LÆá²ÿÕ9·#5?––.xç“Ï0ãšs�zI§—ù_~LVAž}{vQ¹ùËR*N¦cõŠ_p�±¾¬h•î@�Á¹_} K*Çzи@‰§›c�£%¿ü¢íö<zAÀÕËøÞž %®^*/Vu�ö®?ún¼©8ëäã­�â««‹öæqn:3R{c)ÁÖ¥óàÚëo87‰ÉžÒ/‹‰ó�4Xͧ×m÷3 ¡I²Ë⯟º$×ËzΣ֯^‚>}·þõ)ý¡fÛ6{²ÀÜ|^/Ö}ÛV±�ëÚìÜ–þ¸*˲?"�žJ^ŒK&Ò¥ Ûj³È»gkï€ ¿ýŠ �Pô¢ÞEÄ’ao¢‡‹·ã³1¾ÆïPÊ¥yñ•2˜²eȽHù$�ˆÌmõ⺵‰N⌷¤Óß¿è3d®,c}Qœ·wN©¾½G­µ­Í¯ŒóžDÊ ®c̦ܶlV’¶%QßVkÞÆ-�ÓÚ>+Æs<–Y€z°:®ÞÆvSŸ^æ‘âíU¹cSµè�eœ§×d‘6õX2?} 6ûw[äœ6Èù‹íЃ±3E<�K8(K3‰šx=ú¼AòïÕƒ5¨Îéd°Yü¢Ü|S‚]¤ŽºuÅwË¢¬¼³gýO»ãÄ®˜Çke}öañ3KÖ*«k�”W„ìÒFçÇЙ[z`Åú8ôöMF�˜²K2„i”þÛ¶lß}�I¢ÈlàˆqSûbûŠOqšóÕ.SþF`l î~éCœ&ˆµ•Y·NŽX6ï ˜ûEbÚ´iðïä‡F'o¬b,ô�¾ø©©ñª8î±÷C�¾C4c˜“¤¶0k CdDoEUz *,ìÉY wÆÓìÙ•zþzsz#f ‰íx×PoXŽ×øCð¨'B{FÌH‡lHNÄÏk–#½² Ó'\{Ëä”T`Ѐ¤äWÑ[µ�^‹6ðs¶ Wˆ¬üZ:2äÂÝÁ‚´½µ¨j0C ç8nÞ^dB銪z3R΃µK'¤&Ä ÖÜ€nûwaPZŽ8„áfÕ†¼.]‘L³nÄ:=þ" ˜×±ž;Y¢ÔÖ®qûUј“«m;ßuª‹Ö'¢J»vGM#u§µ¥È®·Ç ¨HÔ$-‰ÈGž†SJ2ÉZ:|”Æðsç_g£‹Ÿeú»„Õ�(Ô†÷Å Æ.�zÍ ð$�oÌ–•èâë†þ]�H+ëˆØ}IÜGcÖ‡Ÿ€�u#ñ�b‚µÙHä\ádn)’ áá` OŸ¸¸yS}”Þ‘¹èÌ6&˜ ­ƒoz÷êwo;l°vA�½Œ%{÷!‚ì#ÉRëGØöˆâX)è¤m7*�ìúñn'?Nè»óý u;Ç' Ɔ>ô,¼FD jØÿ å�|«ÒÇʤ¯5ã oUÓ03«ÿHŒla ÐtÒ†ŒSÊI¹\· K×à‡œÑBÙý·ŸQvߨÏXÇb<Óž>'=í8X-)¡0×Ý»÷¢!깫éíþå¶Ù—ÀjZ® ùße@WªƒáOÐH¬må3qÒ­9tNÛKºJ¾{mOwæõôì?XY?~ç5 ¦Õ¿㘠À‡õ+–ˆ:‚bZÃÇnß�¿þý^t# åééÙjQjkWO©™›Ÿ«¬z�µÕ“ÿ„»è�)«Y/F| ÚÉ2hè0t¢@'ö‡í“F N°†`†‡Gëuܾ¼.MªÒ’bäçf¡ 5ƒ0£·�<zéñ“¦´ °J‰, ¶Gª*ʺ�ßXÂ�õt”Jê­›ÖcÔ˜ñèÚ=œkœHH@Râqíý>LoìMëÖÒ;ƒs]œ^ñbUk{Êt)Ó¸ºu‚,J`178iñõÔ~Y ¸ªVùÿùG¯Sä�31„÷ìŠå}úË¡Vå|cBu¢¬?ÿ1¶Ç$3Lín¶îäãŠà�Pùð�à%}š,Ò7¶G)àjk«šË|ñb€KÍ ~‘þ8ÐÃçb˴릳Ý Aoó¶#‹T‰Y§ÓÑë‰W£¯>WLlš+éAV5ŸT´Ï20Îù�T´zoL ¥­èD� s{5ß¿”óg)çàÁC0xо3Fý‡RKDdì% °šJƒß›Ûlÿh"ªUähÑ+ u°”]î[òÐt_g€[ù/sNÍ œúŒöHyõy™Žgä}Uïª2V—r«y­ÌÅå)‹�¥œí¥3‘´­T·'•f�Ôû€U}gR>¹GyöRnÓZiôòΟ�Q!Ÿ<² ÎÈ9} Ù¼÷23KŽÍó1CJJ& ÍÉrш¨!x÷MÖE±ª ò`WU†ÑF"#§˜ÔÈ}Ñ5, Uœ£�ÑŸ@}äÓ9¯Œ8Љ”4t¢&�ã3+¢¦LÇS¯"`k`XËßPK69‡ñdÉHã½uzn\»”“˜þÉ\TîÞ�Ô½ûQæäƒï¿_„M|¿O`u4kÈ™jgaîlÀÛK—áÐî�ˆØûÒáng3Æî½yòDìâóÉ­sG€¿¿™FøºY#5»€Þ² Á[˜E Ü �åe|¶6("°Ú½K¬*3ÐXWŽÜJkLœv#ÞzùLœtU›ãщ©ö]Ú5ñ¢—vMú ™ÃK¿#m²´}ù‹¾×Œs¤ÍRÆ;ò-Š‘ˆœs)û¦ë6Tû-m÷ùDÒÈýÊÒÔ—q[‰ìÏÚ¹Ù[î[Úpùßž|ÕùíY_rº`)ÄWŸ¼AKÅáè7h8¾ûüMx8QÓRm‡�Îý0tx˃Y}áç¼ø‚ö÷‰ûîFQu1vl%eFJ.¹ÄgaçoK�ž[Ìá›´ Û6ön´vÉÆøÑã0nâDŒ=¾)«Ìô“Ú¶¯hÓ¾ Ý�- #2~n.¢LRT¡’VDà¥U¦Kéú|)ËÿGå-õÔžg¡)Wê¨ èÑ�.üg¨u•;½;z ¿­YOZ Tæ§aÔøëà9Õ˜¤›~Ý5ˆ6�=ö„ümSäÚýò{DÔ–cvŸð‹F±²5z;úˆ$*„ªÓ³H 2°Ír\ìƒR÷2à—ï£%Zæ ¹žéó”ŽFD¾Mé\LÁHu ©c5 “2 õŽrq¿ú¶å¿¢¸Q´¿’ÎcØH�F(Æ¥ È鯥îÕ‘Ò¥4ÑqKù.ä•üRÎPW‘ÖZèhXÌËZ„¡@D²ÊUúïHö‹¨z;N¯+¡·TlêyéëØxFó_u¾ìUÏTOw!ÇåY‰È³—‰·j䘈¼£JôÇÕ¾ÖÖ5µÕ(¥'³;iWZ}ùLÓ´õ¾š¦½Üþ›Þ—|7yÏÓ9 -).BNÏ'r-é;B-뤫' ¬ ªÅì`ýë£Óðõ‡?cc’\,±qµÄÚë1š Ó“lÛ± ;wìÃö±X¶dÞSÑ/‹²nÞ¼sæÌÁ&R€ý²7.w?t ­rk‘—‰¿¡áb-a?üø?ø×œWZ-Æ s^À ÿzáœãò�™¶�Òvª>SNPmÖ±[ÇÀqðhtzàÙ­)¯ôé´�ºÕ®¦}øîA;"ý‚ô»úöZwÊŸ¾ùÛ­Sà—Ÿ†‰XïÕsim~ÿ}wá§¾ÄK‡¢›•o÷u³á0, ·ÞrS³ý—ÓŸg^}7Oû zuïû§+vo,i�‡\ÐõkIÑ&beãÒîógÍ˜Š¹ Wjé÷î‰aLñWñèƒOà‘ï‡�—3ÆÒˆnê53Й «©¢¯W_cÿôäC÷ 7·gÒ¥š^"6öF–ÓóÚúŸz"�ñÆÎõêVçìÙaTLŒ«výîõ›ï¿…H&?c,ô»3ü?�Á篾„+¦]‡ÐfϽ�”|âyÑœfúBnwÆŒZìÚGyä¼§''&hiBº4/d=r8×Ý8³)�ßV,¥b»¯¾¾i_KÛ£·aoÌ." ÖqÅ(-I‚¯"Bý(âJ£%Gè-+Ò#¢—Úõ§¯?ùäCÜsÏýMå˜}û­Ý÷@‚(CbcwbWL îðá³Û¹#A;×kÇTß&ã\é³l–,CãvJL掊ê÷LÏ»\ûAÓr^Èÿr‚Úɱ«°æHì±V³E¿ˆ3Î'úñŠ>­Ì[škª4ê¸üWsCÙcjÍ —ý¸uü|óP•^¿–ëèߥWЧQÛªLjü¥ÎUú¹W%*�ú¯Ö’FÊ+÷®ŸÓÊq5þRi;²VeiëUζҨcúrê掠ç©ÎkïZòiM_+ãW%úzRãZ9¦¾O©3Óñ¯„³{ô9�1OêEÞi²íœ‹½+Š�%Ÿ\Ÿ lýømxe¥`GU üx…¹&%l¿Áøç3Ocag„U”iÊþ\Ÿîx`û!†‡aÚ¤ ðc|Õmk†eܯØ[c‹þŒ•ê1�Faiø†eš+äÖWbâ-ÿÀ²w_Â0†<(?µãÌŽ!�Þ|Vþý[Šíû�cÉ¢öÍç²³3ñÄÝ·“Æ””Áf ÑÁé[æÓ»/ù9YHMÊÀäi“©4³ƒŒcŽ$$’fÛ#¯¿Ïj„ÞŽz©æË-11¥nͯ.¢CSÇÖ¼;Eƈrz'ú9[Ã…qP+‹rè�ê RÃZÒµ�Æ£ù…e ¥ŽìÜ ØÌÍË/€™£;òX¯�]z!ŽÞºyÞœhåJ/Õ™G÷×u rþ¡Á¥…ÁtJ›[À{ø`ØÜq 膹åµ?j0܃û áÇ÷‹s“�óÉäÞ§;VEï†=={²½7XÔӓל^²æÈÍL�¥«?zÐ#qáÂe?n,ºú¹¢†�7W/[�GÔV×"§¸f t«D©3²ò &»¢kˆ’Ng¼Ð¬ÛºwÝu3¾[ðÆ™óúœC>‰Åó1vîpÌÆÁ‘}ý”kÇâÉ¿�;o›…%ËVÁÕÛ`;�Bíæ‰�H+솤oþðµ'ñËŠÍôŽuÃ~ÆGwpqÁsÏ<�ƒ{v`ùOóiôã͘éסß«ºgî)þ¶ÞR køü’_µzùôµ§0zÌ„9wü¹‹ýeDD_2Œ`Ͼýpå5òr³µ÷£<ŸñNI§kmcƒÛïú»w5+~+*jÍñõ¼e(£çp¿`oì%}oO8ú†ÀÑÝŸ/úw’Ž×ÉÊo}þ=cG‘²·|èý)2dä|ËoiÞ/k5]½1xÂÍXÿÛ êÂyYL"/^Š›oœŠà`¬_þ+ªí}Æ99…Õ¨,«„¿[ß« -¼Gy] ÉŠê·m;â ög ‰¿þúƒv-ùñxðIä½ÿzÓµ±ÄÂ~ÅV.îÎ -HîKÈ ˆè�,zÆØƒ+ÆN‡—§5b^ÇÅ»FöòÆü%øÎÕ!5§©Eß/®ds�»>–ñ˜ƒPO@}üUÓ‰%0¶2c¿ûŸ‘—?öìŠÁÀÁCÕåÏYKÛSñöK)B ,¥ýæGÑë¿5u¢´eZºÈ(Mç*ÛªmÓ·}Z¢ËèGß÷üž>LK«ŸÑç©¶/¹'«\èèáxL˜2M»fQ!ižÈƒÁÉé ‚<Ÿõ2hÒ¯ÿ@U¦×_|ðó(-vz?$&žÄÍ·ÜŽŸ¿z‡�&bذHrœŸf0åC ÎL*4oÜwߣÍòrdƒ&ËïélÅÊP�A¿E‰/¨¿ižBãaãí…¨ ãWד—C¬¾2™]ìBúPE‹£ŽÿkãK?‡uòíK¼‹{U¹Ç–êO]WYn´çª’— 6ŲN,;ZËWKCë6%Î)'P³o·fÝ&nâ-§ÎONÍÄO cXäºö{c-€Z¡ŽŠŒÞÒ¡söÉõÇР '�·—båœLZØ!¬Ö––p ÚsϾHk,R“þÀ—q‹ÿ‘wÕ©¶*ż¬¬J¼RõjuýÖž·:.kyöÆICC3ª9&ï¡HbY^kpÇ� àޒȵe1Z S™BI'ßµYFªö]KG%@޼'R.ñŽêoñL÷}÷kgÛÈ(ƒöý�¡RÔ[3ß­Ô­[ÝÔHŠvQ,[º)CK"ùI rë€ 3‡·ÿañ�³ iYhF+¯¬"¸9Ùt‰Æ|‡GŽÐŠ)÷$ž;"¦ß“��ï94ðÒ†âäñâüuk F‹cíÔ¦ÉCê±×ͳ8H nÚ¯žWÓŽV6ä|±Â’6ZµÍúç"e•‰®ÑR•±RèQªžƒSTÆ*ûŽP÷Ö°ï©#Ð*”"­‰±ŽÎZ+«t2`PÍjßÓZQ÷Ê7#ϵ£}‘“‹+<9©j�HŠeš±.Ûs©qƒð̓϶šXùê5L¿f:=;ÖÓKòÖ¶’ÿïX 5pêÔ)moTTT G/”ƒØ;ŸtG>xþÉ7h9€L2Lž0Y³r~çÝ·p÷Ý÷¶xј=Ûñøóà1z³šŠþû’mY´v˜í«´‹ò�h¥^2« ü_ú NWÍÒ²ÐO„LóTÿe eŒSOΆycƒt‡â¶ÀüG5µÇ’6õ³—àýù¶…�¤5/V97àÌ\Aú@™SÈ"úY7ºÓ“) ëù.ÑâqÉC<ödî©ý¼E¿ÿrØ®.ÎFæ¾åpèuAű&-³Aéá‘FV˜Ö2±¶²‚,íýxEŸ^žWKÇÔÜUÀ5áÔÜ\憚ž‡ÏCÖ2—T‹:ÖÑgc:&/U™Ã´&¦eVã.Y«yjS™¨Ïj)/™“Iye¬&ó\Ù½eeZ2u ônJ;ÕbÝ´V.©3Ó9²J+ùz=ú,™¬„�*E+“ªcÑ×%cKz)ƒä)÷£hå%ìŒÒ³©k´µÖÊF“þ©wÉÛôÛRùÈw'Þª^UÉóUïŒÔ­èäQ¬,ê|î7f2(ÄsÌ15E£ v–3Š0 Ö®]a(ÊCăOÁqæß‘š’Ž¬ÂbÜ÷÷{0óæ[H‹�ï=Œyu¶Gð,òî»Ñ-ÄI‡"íT22Ne|G{8¤ ÿ„kFzXRöž:‘‚ÎŽu`×+;k‡vF÷Áp|_4¶oÞ„£IY˜\€SÖC5P«Ø*I±+peOsØùÇ¥{÷î%sŸqÜr‚ô±Iw£Shíö¶ïÜ3zVžL&½(½,ó`Ýu,,JÓ4ZàÌâRœ<–@0­Òº\áA£Nw«jxQgdÉþC/æ@÷å»xä7Ó™‡UUÂìÆ;ÉšD°”ô¯Å¤OÎ/ª"åª J‹«ùÊÔÐ ±rÿÔʲŒ •ÅâG¨„]]‰¡QãQžÂù„›#¦Eõ¤Çµ-YMCðâ[_#6îöîÞƒ]ûŽ"rp™'¢ªŠñ”9ÞNã²QÃGp.,@°ç ŒKè˜íûÜÙC¿ü®ÔÛu«*Æ€¤¸f·Y¿k{‹ÏR;od÷dÈ!8œÏçÚ•cµ`_'4’¢ûàÑLÜ:c,ÇHa8Nf¦'OÐË»«÷d¢Oˆ�tmQTXˆâ:ÒcW!ŸTÇžÁ(Ï:�é÷ÎAÑ¡¹HM/ÄhêX‡\q­Vžó�s¤}ÕÓÿJ{g=l”‹„•kil!óoÅ)휴ÁYÄ‘Dgz1ØšUâEü#aúê3z�ålM7[\ZŽœ‚"ÙgÎwyÕΟ/Ý…ÿC@Öy?~‹wßþ·V¾«è’/ ©«g'9rœ/ù6Do\‰›ØÑX“v«%EûüÅËÉiíƒîŒCäOnýzºˆkÜÜvN¤.ÈCN:�ÖQc0xä8ü@wîEß/äOú¢€Ö'ð-]ËtŸ È~Ea!–Kò2Ë>ö%µd«—m¶Ú *ÇÅz ìç�Í:Is±E"¡íÓˆ¸Ê€À (üÑ"ƒ )ƒÄ›ªŒ‹ùÂŠç  ¼LfÚ`Š'²½ôÈR6Ä ˆ& tKe5Öá¹ ˆ<_q¥—¥"-Õ �Ô’Àõ߯2ÚP¤¥fãîðäë˜:ucË-º.ÚEZÈè{u»+ê\®xç?ZL ÓúWbÐîä æ/ù fÍšuNNF€Ú`IÒêóÑ@V‚x¡�:ewuw6 ºæúó~‡¦Ï\Œ$Ü}ÎEß*oYs8k0‹ííõÈó)ƒ¼›jð.à’éDGòu{ô_M`²tdÆ÷ÙHƒ£Ÿ œs“-ì�ü]3ÄXÞ´±kÍÆ=X³q/†ôgL‰F`´¥|â9à±§5`bÒq|?ï¼ôæ'°ñ Õ@Ö²â<Ò;òÛ;Ù,VŸ|úû�ŽŽ¦²žzòi-?õ#÷œùÍ'Ú31}v*Íï]˳’¼ ùÉ»%ÏÌtÀ¡ªM1½¶„5=¦ÿ_×PÅ €5l¬maN+ɶD½¿ú4-Îúã—ó¶Ô�<®ªoær*ó6öS½†u¦U¬9=xFµX´øØ_I-S„±“n"Ó¼ýÞ«xûý×h¨1³Åô¦;£9ž $˜+rýÌ9ÖI§ÇÐ0í¿¬·ýcîŸý¬ö_~~þí9±=:Ó4ÐmˆQ‚(Lû@]’ßµ¹=fîô�nV¼Wç1æ[hˆñ|}ØPÕ±¾¢~×5þ[O6¾×SB©{•qk{Öƒl¨ aܼ¤½èÞ\‰¬ò:ߺ€ ÏRCí8¸ ‰)±ðtW�Q�+€uGÜ|-«_–~))gƒ�~:�á4‚1”L3J{ñ~dÜêc�PÏ63×úEƒ� Ù)­‚­Çß¡•Q& cu�Æà¨¡ÞD”ŒåÛ·À<9µ¸(z«AúEQÎ)‘6$ýÃQt`¼¯º]í¾(ë8c }æ–-i}þÆŒ×f¾õU…hl¨E@gZô{…bãæ­Zý…„!:)iùŘñÁ'Zû§¨ñ "mØŒ¦ñC›ø“ö ïwɯ|ûß®A*jŽ&�¢±IÀ9 k[ضy ^|ñ9lÚº×^c4–ûà‹¯±rùRz›NoëÔV�õâÒ‹‘Pýúà­®oÀÂ% 4ÏNoÒªµ&’^¬¦iăµ£«ä‘’t]"zû“±½5ÍWþ·°Ê1o¿NèM/`YwDăõBÖ—^xE»TppëeîHY.fÚGŸ|áÝ»¶ ´žÎ̤'L~È*kd¡áçz.·§l¿,žOš¿4�޲ˆq»²Ráâá{ΩíXåDWMÖs2Ôï`[îêî…Íë~Ã1Ò_‡÷4‚§ú$#FŒÄ 7Ý„ƒb½�>7ÑëWK¸ tí3°À*ç•0~ä.T%£¯=vǬÇÂ_P™:먳±£÷…‡Gë¾s¿øŒŠÎ½Ç¢OÞÄè©3ôÅ¡�åQ|ñî+¤ì»°ïXe6‹LFªjµë]ËJúªóy°ÊüCt%-͹dŸÌ�ŒÀ�ߊ¡Qsc£?ô¦Úq1K'/Ⱥ#¢ÆT¢O“¹º,�wäz­¥UºBÇØ­¥>wGAVyÆúç+÷ÜÒ»pî•Îî‘÷LÓùc뀭Q�%ó`£¯ñ¿è7„úVÓ_˜ÌÛÏ^͸¥ž—\WDž›Òyh;t?¢ø–{”kÉýé ÐE?¢¯Ÿ ɤ;M»'#kÜ+å’ç"בíóÕµ”QÏrŽ^¡¯+¥»•²H�IZ}ÝéÓîdH�Ÿ~�qc&7±kIz½¾8@Àª¼šs~§…†“ÐP’VDô…YQã Î~‡.×ÝŠ˜�[ ¸9b"½P‡ÿõ>-ÍÏŒ#9tÈPt&¸ùý¼ŸðÐOãªÉWÒ#.Oë«l­°òçÐÊu8x*‹ k6Ã+¸Âºäl}{Óq)'J pBì9Võµ)GxïÞ8}žÝ1ìºÇp¼„ mr:î™ê«µÛ d]µj•ÞÌÃÍ1kWÓc4� žq>Â>Þ“ãäà¾C‘´e1j]ÃáíbƒÚ"Òk2NeJn.Bƒ;#;% ֌њUXÄ9CW-Þ«û!wã(© óGcc=|O$ㄽ3,FGÁpò„vx×Þpèߏ¨q Â[~�î¡>¤ºM ¨‚DR-Ç‘rµgŸŒ‹‡å¿¬'Õl ê Œ™U•ÀÉÑë‹\úvëZœÜrûÀÞ[�]œåëkð¾b2lß�õ™…HY½=Úz™^;ͪ(Ù9°H8†2Æß\Ãö×Þ §­‘µy- ô²-h°Á¤7P‚{ôFXh7zÆ:R3£" uå•ôhÝÏ�+½°ø×u($»f ÁÂ*2œxzÙc=H]i¸×PQNZZk,Š=„�Ð@¬Y·ã ä¦Òøk©`óòK³-†^¨ö¤ñ-%Ð\ŽÓˆ�‹Ã¼ù¬öÕÃG ÁöÝIØ»~®vøÛýÁÙÚqL“›wÛãNâЮx=Áø¬¤p¶ªÉƒ­•¹¼èÙ#ýúö# ›o{KÑ 5¼w7ìÚƒß6lg u üôã<-&úÍ×߀÷?ú¯ÞL–F/Ò Wpž(ú@:”t@IDAT6dòHq§çª9ÿp¬Ð½›ÑÀȃ ðæ-›Ñ�ìnôÀ,$pZÇäiÑKQ^COÛA‘èÍØÃ¤6îî}Ñc[²4£Ç..0·qÓb¥Ö¤Ž?™ G´û·¯CwÆK­Ï>ŠL™:‘ϰ·uÇ2æmGuÃÇ‘ÀI4°=s“s H‘m�ãi¥ð"}°'Árz"Oºf<öÅcÏ�#˜8õZtîÑW]…7kÕoé ÁOMûeCô�¢«Ô�hí�HÄQHމ®Sµ{ÆöIÆQZ>¢›.^ô�^Ê1eì¢Ú}-Ñeð#úoq6’¶·5§”jÆÉ–¥½ 를­?d•É©Lj{3.Ÿ7× š‹É×Þ¬ ^¿-šAµí�“›ƒ1ki•â /ZE˜Ê7_ƒa¤ îÜÁ]"°}ë:v@…øðËoÆX€%˜óƧxïí7ñÙÇïc,ã7L¿ázÓlÚü¯ò²i™3ÊMéìµÁÈ™NSV¨†ü¼Þ^0r\:Sù ÅzÀÿݯ[ðÚ,À”ŽÝjØH—³ÚuM\ŠEVG<@Û*š|¤> ð¤>ضҷ÷˜qàôü½=ãN¯ûÕ[?Ð’ç#�€xº=òìy½úÔ=c�ζÀã}ÐÂæL£dS[]ÜÉÁ>.§¬¼«@ICl^[âaˆ.(ƒcÊLž2©½·×,];錢R¸ÑšJD®¯7XŸûSÜxÕ<üÐÈ&µSß¾F+´f™\Àñ`½ñúI(¦×§‹CËF�m«§ :T»¯0`Õý©Äïü©Öu÷y˜Ö~¼ÿÖ<�Ô{!çÉ`ùLß”Ÿ î æ~R]”�åtÍô¦wRΓAkñnäšòŽIgå0ã—–pI#‹òÚS퀬­ÒR²­†�ÖÀcuO¦kã=ôöÄ�4=ÿ÷üïâÇðŽ9jõ�¿ðí^õÏá•×?güÅ�X³% Ç3R©ÜÜ7Gs¸w‹Ä•ã†" 5 oÿ ï¼ØÔ&Ê3�oAMVd€%ƒ(÷G ÙÌ ^Ê/×SŠèÖ,‘ÚºOyŽú2·–VÒèÓiV¨,§”Uè0¤]—²ktP|¦Æ´2襽ƉÚíÜ~¡µKœ³ßœq$ΰJ[$×Ö‹”ãÏP4èËð{¶¥îDI¤êÛø�ÎÕ¾• ÍWòP}ñ…äñÒ{OÁÓÝ[[äü’òLœÌXMæŒJ†HfüŽÑçdëàè YBI=$9t$=~‚¸ž“Öt‡¬W3nË“œ ‹¤¦¥aÇŽ õ¥AX�æÁªXµDœ|xºh˼_>"mgóv]ê@)Œïksƒ-�ßù“ÆïAÑá|,ÎŒ}Â-Œ“Èo×?øÿ[€µI Gö‚ßk<&àu•:-ÉÀ£àDE'}²þý-'åÞÖo2–�iLäT¼úî£øèã÷ð÷»Î}½úÚعs;œÜ ˆåýö[׊ãÏâz€Uvz3F Ï™¥¥23^¡¬²XøÃÚ…/²ËÙû“¶LÆÄ¾72ΉK*ê 90¦)¢û ލÊhäÕ�ÖÒü^¤-ÖObå—EΕ>¢à§ïQü‹Ð CiÒÿþ^éÓ«foô$¦©@½è!Ö–XXÓú™‹Èæ k±qýF8ÐjÿËo¾ãÔ¹ƒÇ Ã0z@ŠÈ½K¿öG÷ïÚÅ/ßÛnú›æÉ5<²C«ÜJxD?Ü>ëïl?;¡“.Æd?*ýýβÚ{û2'U"1§Å«S%CwsÀ Aðí x©ÎïÈZ‰¥ee¼–GNkJÛQ€µéÄ ÜxiÎ+5Šc¼³ßûfuA§½÷é½ÃúÂÝíì3TM»æª6Vs+køÓJy±ÊyÎô@|ëµWæã¦)U^í]K¬?YD$¾ª,-�¬íÍïBÒ À*‹€«l‰ͧíl˜hT{{G„uí®¦¦'„÷î‹k¯»�cøá¨&-÷éÓÇéñ¨Å<Û¶¹{·^m‚¬R�“GwbÚ­÷ ˜¶.,ŸH6�ì—ûFM¾îw¬’_=r®½®cº9¯-‘q—ÌEG"¢ÆµÚŸ øÑò£Q¸ômz=FKY©9fKýœäó{ÆÄ-]ï|ûäšÒփ¬¹Y§aOÀÝTTY¥H•y·èl¤o—Eú~µH)÷¥ê\ÀhÓëi;/ðGÆs¢Éü^®%ñéäyˆÈõ�F®ÆùŸÚ/ó2™×ç¶2|^SVËÚ´lr¿¢�ü[:¦êPô êk¿€¥§�r‹Ë}Æ,힌z‰³Šsí:,�z—ŒëäíÜÖ¤¥—g 'ŨSéÕXž—º/9¦ê§¥¢Ë¼Yž·Ì[$o%²-c½Ö˜Ù”N@¥×¯õåÓï—mUF}™äZ’Ÿñ>F±)2z‰+O/¡ó•4ŠnR=/9G�¾YÊq!�±¸Èû"u z¹¦èe-:ñT•ù�ªë&FAÖ»œ#ž½ÞìÛ?|mn}äqt®/CYf:ÁÑ€âÊÛ&âã¡2ûö&'²Åø+Æ26#�¸å«qÙg]°~Þ'èÝ-6d{ òtÅ¡Sô„=]Hjû¤£íJ©ªIáëéPƒðnŒciGãÉlDÒñ(Ô»^!ƒ‘r<¡}ú¢Ä¦3�?k´èA€(ÌË[b7aã®=˜Ê÷S1¼˜™™!±Æ U�6È?¼ {¢×Áœ19‹KGÜÎ …y¹¤À%pÖ›ô¾µìwÜœáè@ïK?oÄ8 «’BxÔñ¥ÁÍ –'ÒqÒÖ ¹ìŸVÚ¸#�àc½…‚ßüÇãâaåè…±ƒ"¨s²bìÕ‚Oލ#¸WgeÏÐ#aaaCO².Ì58úЉ*ŒWE˜yë5HIÎA'z¡úÇFcrê \]]Ï×?1$ä |ãRÆýLƒ¡KúO»æ¶p=u²x‰�³¡;ÙÇ<è‰+rŠài.)k;ùÐ;¶4fææð£whïQ&b â¶/€ÿÛ5R‡�ž‰ÔL΃S³œ±–„õlê,PRÕHOÜRtòõÁÆí»0¸gébã±ê·ßàB]±”TÜqÇlº 6"'û4ã{neüÙ2zàúá�w¿ .À‰^‘¡8v’Æ`٣܋ k=óRyÍ™7L`ÌÝÿÇÞWÀgYµÿ׬ƒ# F×hAZ Aìxínôµ[QÒD:ÇèÁ`°ÁÆÆŠÁ6Öÿïu�3ož0Ð÷÷÷|>Ïsß÷é¼ÎuÎU{4»­ýzv�EU\]íðþ¼ep£mÐÊÊr´ôq…#%Šƒƒ|QE‚¸™¶þŒ8ˆƒ"1öëGb›� )Å[\iNâo>ÚzÚa÷²…pó5Ç]�=M›°É(gßüñçø“¶W…IlàÀÓ¹B»uÓûÜ\\h?´•F`-*ȃ5$Š £¦R{î ^~-°}óZó3Õ!;!);ާ¶ ‚Äæ,R^³’©.¹%HNËËlj´ŒÒƒª�+a›sá-°!ê(z“`+ãlV”�A3žAvA>Ö®ùÖ¶øcÕ:ŽE*¶�°\M+£®<Ëmܸ‰ø¼7ÌÍÌÞ±9bÓ²0èû¬ªöÅ%°¤½]k9ÃòçTNb½!UkD±¾A8F““)Åeí;.ùgѦ“?Žì?B5Í1˜4¸Êi÷8öX4üܨF;ñ’² ‘r’Ò¬…”:¯ÂÚ�ÛÉ”P�ÄÔ,2Øûá„0=Œë&ß ó´“8Hép±]kçL ™}jkRB8áüÑU^ ¼Ušã\¹~Õþ {ƒœGÕž#a*\ÁTûä© �‡•’w}4 ¿ÚNöTU?}YÒµ§éýÕ»µ•e“XW½r#Õ‡·‡­s þªÊ�gLL Î’ÑÄÝÝ]ï}Áû5±Éª/1’:¼§Ü2‰Æ…;ò‚ÆùyEH¢8õìÙ¯rQ4Gú©Ã”®sÁÈÑ7é“Ñ8ø¼ñÒST­0 ÉóîAn…¾ø6äˆyôÉgÞ£;¶X½ñÆëX½úÏÚ´ÇÈÒ©_íw]/2Qeã'©Ø‹Ô.å#·ivU: ³®®Î‘o¥ûZé¶ËZê,“Vê©�…º]GA ÄÆÁ¥ØÞ“v:Õnád“0Ï¥.Iê×°ò-*G=««嘚\N?J�Ä °"ë7K~Å´'ÂÞÊv c.Š*³Å5–ÈšBÝðŸ|ôrSþcå2cYþ#ü¤?×øÚW7¸†TßËZ§lœÈ·²»"}k„ÅOlšŠºßºÆLâ¨^}Ä5/d‰¾{µžšÊÎ,›uÕœ´ñÏ7b Ú¿ýæ»Z?� Bþõ²Mølö› ñ S&↦`ÛÁcp·®@Û°0˜5]ö­có‚ü<¬t¾ï1?ÿ–W¤ÂÒç/¿ú2´DøÓÉ«o¼Rg;dëëcc U¿«Ã‘±8uùŽ­|ΑºÒ^©¿Hä‹Óˆ»„gªÿ ó­%úö¨ÍCeß埾¯èÛ!ýª8‚Õš”ðKék}’öRÛ/é—­þ3^ûoÌ™�¾=¢_Ÿ< bïDìÙ‚Çï}‡ã¶£(¿Ö––Tâ�wgcõŠuR仈�xó�7©^{½vèÑ5»Ôà=Hd2tϾ9 ÿ}úû ¼¥�”m¨K]/dfäc×Þ]¸eÖ-8uB }ûÝ·(íþ-¦Lzw͸ÛHŠÿ¼Ô>#-–uYŸý¬úzE¬n‹UKWÓ¶L/ÄÅïÇ+ïÜ�…Ÿï©/Y£Ã„ÈÚÒ? äœîÔ¡;ÅD`éªÏѱgU5s{Âè»Éa;ûöE`Òm#aßÌ㯯¹héÞ¥æ·#r êá�.·6b"/*¿¼\Rë¥96•¶Z{€O{S˜8š s%r#·Àã®—jç¶1x¨öµÇª< ½{Ï*íå>ˆDXç^øeéÏØCul,/ KðÚÛïrL» ª¢€ÜßIô|õÍ·Ø·? ŸÏýèr‹ü7ÝßÐb—[\¯ž2»\IU–pΈ›8aòÙ|³`>PV‚y¿ƒ;îyHû]áߣ=pœð³Up£a—ã¹{÷nìâoÚ„±pòò»œ,þÑib6¡úp ‚'ÝA=¿ùôc̼ïÁ üŒ}”ÐÞš8k;ípíº¹Ã3 Tû®ë/9!;7,ä;_¸(ŠZë“Þ¾(ÁzìÜ´RË¡÷ QÚs/qp^*úÔÁø¤Ç?ë:kHq�ÅkŸPçS-a#ÿT9r¥öÉKŇYÔEÑÔyKŒõƒX�FíAÿác/H«ï¿ êøP{º«6ê£^i{õ¸œ>_õ.m“þU8…Ô_ðn¹[h î§o¯>¾øëÇÍXª:\ÉS_¾ächË×°ú²ôõ5ouŽSñeÔn¨OUyJʶm}ëEò”³Žr’F9)W�…ô¸¸:[«xêiìNFßOrx)÷€’VÊ—zˆS÷¨rÿcl~ªþyÝÄšjA-qÓ]“±wÅJô;›ŽŽfdú¥¨¨„ÿ¾]_Ü}p]nÚ3ï8}ôÍb|÷ù'ض{–}û n›2�z_OíGÓ0°_`êE•äŽH9ƒìURmjÿÖ0wrEòÞø~CfÜ:�Ížh»Õ¾ýмz=Ó/„ © ÷/_�n}kê¯5‚[ÞK~þ™ÍÜ1Èß!ÝûcÀ�©`ì¥ VŸ–í°uég$ÐÄ)JV;£uë–(¬´FÖñdØZât…9üƒüáçéHâë9T�¡Šx;t;�Äät-¿B΢[aሹ§óðîëÏáÞÙbÉÇ/¡0¿Ey¥pl�ª¼³8�’@á�|ÄžÊÁ¡„xÜË>ð&/LJ?¬Ãð�=aoVMB«#‰®q(.ɧ”¬ n¥”¦ýÛ/ÖÞÙ˼ÓÓœAýqfèØ�<œk½üg'Wýôn“§,§ßNÂ…Ê�Þ7Œ£† Ö™ø½pv~û(ÊœC@3ª”à´GZN5‰}›Þ/ v.8KBèѸS¸‘šM-«ñÑWó0¼G(lY×ý ihOm7íç9-aíÛ"65 , ׅÃÕËUÓ4çHSSié§©î·„*w=áÉ|2*mäë�C[Ö [‡`äÑvè�¸4š6 F i(Á$¢nØ�Òâ"TUšâ¹»o‚u;àB²½³m3<ú0Ï›K—`ëá3Ø{+T±]_|5—¦�¢uG ½PB9žDÂÓÑ´ÛNI߸ô,8µé 'lݺ�C‚�”[…AZbæƒÿÑw›öž”Ú)Ž‘Ào‚Áì7å¶ïØó’lŒM‘јÒ Éù¥èÕ¿'ž|ö-Ü4i4rÓ“i�—³ú EU½¶ ðDô®øaùrŒ»óQÜû@Í|ܼy3üH<ŽØ¸Vöž¼Ûþ‚š8ÎÁ7¸5BiÓ8æ ^Þ´WìêLû´Öؽ/ㆠ­Û}¸åàÆÜæ¥ùNª^ò, ¢=T2Õ/¤MÕæîØr®ãÆÝ¯më9þù°Y¿V½öýsWŒ pA·øã(¢ëƒmÂ@Ž ,!¡wh�n(«¨B€‡?b‘"Ä•ºôì†$Jq“r�ѱX¹q:µk�Ž­|s8 Ž>­pÛÜŸpŽçðwŸ¸·�Øüê·KkË4ö¢`Œ„éḱ¸â§ö�úè)’gÞ{¯�)d‹$�á^"~ש¶ƒ­×¢|UFVâa$&¥#-1£§ß£¼µç²e54•›nª¡Wn[ð-(Lêßñ/ QלÈz’6hN&Äaç�hô£”ÓvO?žû�¯Àúe_cýÞx ¥}šÿ<ô�×·êÆ1ס}—žÈ£J?”T@¤ßŒ¹Û§ÝŠûxíÛ —æëê¢èjó„J6f!˜>þBGuÁ- °–pJ·�L#¬ÁõR6ê‹ ÿ<‘"¿I.Õ˜6(ú7Tïª)í[�V-Z#`Ù¦ú'E#j!@@œB:µ�KøS@D3ò*ë%²6&ûÓçŠàE5âòŠˆ)Ð-\¾£† @òÙBôi1G†éþÉšSN�nÕ‚øZP¼¡ñѯY•�zÖ”3™#eç+êËGÊ’¼ÔØ«öèâ§ÿVõû'ªC¿!’¤òkhÎJ>WÛ©º–³ÜÉc®A�.½ ƒ.ú–~Óðõ0ò¢Èªü8;3¼ø:2Ï”i1žyìYƒ˜À¸»�0fÀ3¡5,´7¶ó€ÿÌ_ ^”°³îŸŒ"ÂßÂü<÷Ìs"ë'ß¼¡¥|`æ3�È¡i£Ô�„ÐÚ³[O­°£q{°b姸~ðèzÞÞ`ÓÖâ'7Ã9x%dwÞ3ä~á«ÏER¸ÿ‘[©¶©fM¯Ás?þìc »nÚð2ãrÝ#ÏÜŽ0YgL½¯6‹˜¸½Ú{»ÖÝjýÔËg_¿«½Þ;ëqí9nòx<ñÈã—GhU™êž§¸?‘¡ÁgÈ@8Îz©6$sÇfDŒŠ1g*jýäEú[.±Ä î-0Îvj�º?µ© 8 jê}¡2ó0ž|æ „õº!í{ 1z|<ƒЖšZ…jÖò‚㼤øë`%õØ·ÿºRÚ¿îÚõÀ{Ÿ~�ÞÝ襀——á>üøc¡uÑ .#µñ$11‡µ€víB/ˆ°ÿ`”öÝ…Ò%ÿº+ë�ˆˆZ}ú„_YFÿSï¿®½Ö*¯á/ 6æœ=�RZ=kœVĹÄþ'à�õ ]JbœÜ<°µö"«¥Óh7[Ýó4vWø¥*¯±éTüK}#"5u3ïÍ^ÝÜ?¹ zú¶6U;eþ:9''Ý4(WîÕôa²¿ËüºÒ²ÕœU Ùú2ä]•£×û5¦¿¥¯d.)B­ä%åêÏ1�ÉGÒ]ªÓ·Oê­'BJ^†õÐç¯úÖ0ŽÔµ¾þ’vÖ®ò—<Q²¡»é?uŸ¢ÒÖIù«:Ë·~Žªpuv6ì }~—2jl%ÿm4ƒÔ‰D3U†*Sê$Nᬒ¿Øh]Tmît#eÄ”Só*ªŠ”Vº}UÖùÄ3ü=�‡”g±n˜ýÆ»p²(Áä±#‘ú$ŽSR/ï\>¼IôêâK“‡i«4®>­áíˆjÁkïtåvî𠦲ÒÐ`}v V½ñ:9fá‰5i¸cü<ñÒ«‘õÆáÃðêÛï ô¼Mn©Çš‰ÚynÝ[#ÌÁ -‚±cç.Ü÷=X=},‹NBG+8Òök ¥W3²JiZ§Ý»…cÝÊ`K-|•VŽhàL¯éd` Fª1ö¡´øoÉgM�/wSBU\Pþ9˜O½ ¹ãfáƒwÞÂã3Ç#ŠÄÒ-[w¡¼ÒŒ6¼=Ð@Ú{ÝM �®0¥MÐ"â]×kv%À—Øb+üPr.‚VmbÛ[`кŸàšš\{‡¢fä¯ò‘‡`A³•«ÖÀ-| ²žª9ý9ó?¨(/‚«›úõï�Óg’±g4¼¼ÐÜ�*|ó²qŒRÄçXÇØ½ûàÐÜ—6QÍpš‘�>^ؼ+�Ú´Biy!5ߘ¡cH0šY—cɺÝ�9ƒ�o¥iÇ9¨²°âœñÀû Öâ©GþƒQ#Gáð‘t$�'r×.ìÙ¾>®ømM$ñ�"Œ9 ì“.¼[Üs0k#öSª#ŠI`nFIfÿ ¿nöì�¦é„8øûú£[xRÖþ»¤D8%'Árê$œLÍEª�úwnOû¹ÅÈHOC\âiÜŸFæ€DCëq?™ÙãfJ¤ïºa2ÖОçþ€þá> ŽÅŸÂ¯«A~e%‰s”¾5«‚“­-â²­Ô¬’RÊ�H%£B:%é[²?-›ù‘Ö~Ô óûòÅÈ¡t¸%Õ· òƒ¯}¥Õb÷ÖÍðµ1�¯�ö5CØgï › {lùέ9" ¨`³!\–;pÛˆ­šð˜e¯~d yéo¹Ç>ìk® 4ªº6õ¹Þ°oú"«O`p½Ñ>ñúÝvûßKdݸîwëŽ%ÐtÇ‚ßaÃÚMøè“�ÖʉºèEq• \3|ôÁÇFóìS��CÄ’†ÃO¡-9i̸y=ù|ÍÅ¥>ÁÍnBhhxRÿÎYwéƒ.x—I*¡xÊå¶LR™TŠ‹ME– Tq1ɤ”tâ ‘ͳ�?Ùèe#Ö#c $ù7¸‰z@úÞ¨4QÖ—”�!pÔ#�—”‘Ad!°®Ý—„iCÛ„Ô|æ–iFÌss³‘“{þõ £™4�§I•¬DúSqÊw}4é7ýá^â‹SˆkÍ×åsßèÇåR�pU®<õy4´ééÓ]‹÷¼ÂBØXY¡d÷v­¸ –HK>…¥+£;M3n‡·®Å‹¿†Eé´§ QsYíé�™7ÃîÐn �mªùz)m–µ«àòåŽÍ¥”w¥qõ:•—a½e®(�ºìQqõOµ/‰$¶"Âê‘$=sÀß16úºêרø+NÒ£VæÚá_ˆ¬G\}ˆ“¾M†ý¦%®ãO)5gÌp,ø|%¶òòCœHò=òà¥8ßxû¿S˜¨¿n¬ûòëo¨æ,z÷êKµÃ}/H6çÓ—©¢u ö» à*}¨>Qý¸#r;¹<÷à‘û©-q'Õ,Mºe ’Od×úÕõ"ù5¶©u+yï›Ç_�g¿ƒvÔnòOszX®ú®±uܽg'�ÄÞÃKik§Oßû/$ú\”|÷ž]"«�c{àÅ+"´^”ywͼ]IX¿ûÞ†%™TßüøfN½S}6øÌ�ØŒ´�^�mâ6ø}µ¦Ö¦B«\n4ÖéÇ¡1i> ÆLÍAcó¯¡üªò’aêèWM¤VÅ)ÉÕª¢4˜ÚúÔ†ÿûri=°+j?zòª)œY»¯FB»)òûÿ)�÷ç~€H¬Åß-þŸkö»ï¾£ÕùñÇŸøŸª»À%qKæÿ¢b4Û°NûnJé…�^´‚ùWüU°¶)ëÜÈj]v4éw=ñK2R{Ec2•þ'8û•ô«–Éù?5äSG!þŠùHµ.¥®ç³oð±?êºP̘“:èëd,Εú©vJŸª‹]5ïô¸¦òSçœ/oE‡VÞ-NÕª`XO•¯œ³LÍYI ¯« *Îåô»ª¯ä}­Öˆj³”©Çyôþ&NÝaÊyK�ÕjBêþ—þhˆÈªÆGå"eKÿËØŠ“9­ê¦úHòÕ¯'I£Ö©-q#þôy©vë×�jwCYéëP_\)Oœ0éßÎCžzÁi–}æîŽÂ�ÛVÖ&•~YóÖl ¨KT•Llš¡Ÿ®èÞ¡åHrtÕî®[5ÇK/?Žu_¼ƒ9Vî''KDQ@©�Mzv Å¢ÈxŒï„ƒ9Öð¦&Èî­ì©¢µ5¾�ó1\ýÛ"ãÈ~<6)Ë÷x "£ÆLÅ ÑcðÖg?á™×¨�,þ€V¯ã&>pr¶Åò_ÿ„e~XÙ¶3F³/2rŠPþówðò°ÇŽ�>èÖ .6¦°poŽÍËæ m§Þˆ_µŽAm±}Ç.œ£ZܦÎ@ô�(æ’�IÛ¦æfvÈ/.Erj\)ÔÕµS(»·ÁëŸ| //OÄÄ'RÚׯ¾ð>ÿz1ÕÅnAªúÔµ-NODÓ—™Tâ\F6®D!.’Á>ùî7ôhíŒn]ºâ†ƒ•T€æ…ððñÁ¡}ûHÌDËþã¨Þ7¿~ð,¬h7õ^žç*©fy÷†q29{Â^ (Ì}ë|½äO¸QM²‡»-íÍa“tg( }êl%•[!=ù ²N%#«¸~$Ö^O W1ûðàÓ°bË~¬øy9{½î´™˜QÛŸ?QS˜¸›~A{ªµ&k;ž¦0 ¨2ú‰YS±6*�¶F#‘EÆs;öERRœvç¸|ñϰ¨.C÷A#±dé t zåa#úP•t<~Z´•™§ÑªC{ì¦V½ÞÚà·?Ö£€ö6ÃÚÐVò°@î¹\8¸x¡ÄÒc´D&U¸ÂžÒÀÞÉi©ˆŽ¡´lÛêîHÕÃùˆÞêo�:†óÉ‘ûâÐbçj Ì:­µÃð/ű¶‘a~ UE+÷H!mÍÚ»#¬ÏpØ”$¢kÇöð%!nû¾ýÔæ‡3™ÅD•Ý^>–ŠÜòR\ß½%~_»�¦ÛœiÓ‡Ìyi×�õÙsG_dQ"¸7áÁªõ›084Ó/Ÿèôè7>ÿ²*ºö©ú[Á6=Ü«�tþEà¬Ð»Ôb]q%^Sâ6†õÐ+دß/”ŸÄ“:*|@Ÿ®)ß… +}r9û{Cõ¸¦’¬~<%ä®5†¢äÔuþõ`ÂøaHHL£Í�–XøãTÉÕŽR%exú¹š…[Wv¯]ŽûPr:þûþ׵юÜ�åßÏÅsïÍÇœ÷߃�£ÃDÖ·žco¾ !´]"N&¨\\Ë»t²hñW›»¨„ÉV…HÜ+q‚̘îÜÚ(‰=Ãr¤^‚¨ˆ»ÚO+äß¿«Òj~] b¬'‘U!óŠP›tY%&&ÎõYår_lôž=s6@¿QHÕ¡®�ÃX?ó/®±ë]m @KY8�ô‡-cƒ?µ¦/‡éBõ¥‚[Y×~ª2¬fý™3' üÍïàâÚ ­GŽÄïöaÙ²Åð ðGENB;÷æ…¿=>çr{e¡…›%ÞÿäKäRE‰íÁíè>¥i/1 ŠŠ´zÚ“ÛKï¤Î†f ¯Ë_Ÿöï~WsBê!óQœ:\k“A÷'mTû�xËøª ]4æù¼6OUyW:÷õy7Õ»ZOêP«o›Ôÿ"£÷“ƒ´Gçž)óûÛÃ{1þÇ?ѳëŪ‹œ÷�2w�ƒv‰�%¶nÜŠ®=û`Ç®m6hÿ°º®duú_*‘õÃOæPËÆ‡ä¾ûo'²ª¹¡'=ã§Ž#׫%Ï_Œ­Û·âµ7fc-m›¬ýàu˜™›¢-Åzø'c&Næ®>¿†àޤÑÃCcêÔcª%°;º—¶Löbìø Õ²H>—Ó·÷R.Én»c"y¥¸cæ8$¥Eaî»KñíWK�Z¥m·Ü1=»÷ÁC÷>qÕ›º�ÒËâ„ÐÚ·?z„È:÷�Ͻá8 ÿÎ’ºÅ³4JÜ¿áøº2âÔ¡Rûh䟂—�Œ~Q´ ¾Ç¡C‡pÿ��G®êa¨¦í'«‹59\”øÿ€Ç–ÈÌžóÖÿ´¢ÉZÓrp/,|ÿÓ&#´6YÅêÈèí÷ߤ]ÊÖ7öÆ:b\ì�ŸYsÉçàæzq`ú|óÕwZn3ïœÑ„¹þ›ÕÕê…¿owsDß̼ÚbLÿû æÓÜÀœ/¾¯õ3ö�¥?.‹ož6Ò�äÅç¼ÞëŸ}ÙÈ5ÑꃻÞ)uÒåTƒ_©ÏÖã *�<ƒÏèã7æ]ÊRÄ%}�Ä_œºÏiªó«–éÿ‘?ÁÅ©ù¥ÇÅÔXmÛsåß¼§ßjÖŠ!Žfl¬�y£ú¼±Ý¥êÑØøOµAÞ ë&~MíÔ|Sm“¶ÊÙKˆšê©Çí¥|}ª�ô�œe%¿úp0qÆæ·ÔMõ¥áøèûH?ÞÒcå©ú¨ó²!ާÏðmú²$l{ÄNlßY£áéÇj¤Å_Áiy¯Ï©{Ÿ�¥p@¢}Öïð1ã‘óû�hoÜ9°/Îü猹~8²)y7ñ®G‘·›D6{¸§%á•ÜãZ¿Hÿ1µ‚‹e%vSuðo”. 5 o¾9-{ DUq!‰šms‡;cQÄQÚ¬÷C»>ã±{õ´§Æ•tÒíK3Ѿ×PŒœ<Ü5©GÈÀТ†>øQE~K73T%ÄéV7 ûà!8K[¦–$ô®_µ‚µ*[;"ÍÁ9kW"“ŒöQ÷Ã’*zŸzõªu-ÆŸ+WÁºº’Â-4Í-Ψ ´a.¥VÛ·l[J)º}û)¼Îe^Ôm)Ž.ˆ�r?‚ÚµCuV,\œíqìX² ÍikÕ©g‰3™Ø`h·6ˆ=~n´Sz2.‰ŒË¥ :Ù¼3´)zŽTMÜöÐØ'ŸÖúÜD‚¥¸t ë¤]ævƈ¬ßP½¯7 ½Y¹¥èMu¿Û·D@pJôDÿîíXmvZZh„°°6þØ´y Ë6°¦ÍÙèƒ{‘’y�;ô€½…‰FPnÝÜ9Îð÷÷Á¦�‘Gû›•ÕÕ07)ÁïÛcÐ?,™Eèß«>ûòcÜwçh߯�fGòqû“¯aÅ»Ïaýö(œH=�vT+üÛúhÞ܃öiíЖ}ifcGÛ·Áh ÄÑÈ=¨ÌÉFVmÜ’°Ø5Ø ¹™&8Hí(Ö¶Ô\ëJµÒm�EµÃ‰§’Ú®òr²�N¯�)|fF)ˈíû¨bxº°§iWÖÖÒn¾TŸk‹�›¶ e(Í PZóÙ»nA&é*)^ݰ�•q{"qôt6ÒŽAÚ‰t1±vlßš4C·×¬{Yÿ ©ÆË×-¨Î¸cçî¤íäañò_´ø3¦_|�µŸýJÓe>T‰½ð‹/4éæ*Ú7õ%Ø•´œý$l Œ*‰�màdjN‰êL~›ÂÆž„nÒ—mmÐÂ×v®î¨*¥Ú^Ú¥MÍÈD>%Á…“ Ú“ãì‰Ï^›‹“'R8&ypt ¤M{wtµªDÇEójÛ£ùÃÉ‹Lðý¹µÞ¿Ð¾plŸ±é9‰ë¿C;Ï ä;t¤�[+T”梂Óp;¥‚[û{S*Ù>n(„9þXA × J·‚£ƒ=ÚR˜Å„¶XsìÝ�C›¹œR…¶n˜>åf•WÑskìÙ½S§M¯-ÛðEÁýúèBGè]¢�UîÚõ4/Ãü®Å·ÔGÁmµH¹³1Øž_�z ‘UòU4Ã}áJÊ4{™îJ2¸”´40¼†”ûöíO5¾íèçKSŒ•+×P¿|.�<ŸÅÍ7ßJÚ¾äʩϥxä’#â‰g_½ Z^f2RÄÜ?¸=FŒ�C{÷`ÞWŸcĨ1Z¼,澃‡Õ¦ƒægo͵`-dî’ïK={ÑºÆØnÄ`z¹_€§ë¤F ðÖfÔÀËéŒ3°ó �\1Dœµd�‰ý¤i—¬®W Û›¤žÊõ-/ÙSÐÌõ’ìŠ6PѝaÈüÃÓbÀ¹f®]ÃÂY”5‘g§k1¨mïר² /ëÎlç–$¯9ß:ÛOšîì7ç[kýAôâ^©BÚº5ž’NÂ0 q2kñZT= ¾8m�� Ì¥)‰uÂ¥üúëpaÎrˆ(£ê‡uˆm1mA®¬ÍšXˆWßøªMæÂô/, Ž/ÙˆT»ë3P.ñ~ËuB”¥;Zº[bc�‘°öo‡.áð ªJP@{‚ô/§õŒŒj ð ²SŒôø½(¬0ÃÝ÷OG‘ÛWý;'´¥j C—v6SCâ\�� ƒêýΦú²òrØÛ‘ûñ¼“1Jçµ9Ô»?\'MÓ Ò«uÞØºK<¦¯Xps÷Q^ûSµ·fíõ¿¨þRÁmÛ·p</¨ë�c'¡uËè×k4™ í¨¹e)N¦âæI“.ˆ§>Ôoîk|4i‰Þ=zÂÏ·¹JrYÏ9½…ÅK⡟hTúð!í1rØX̼ån£ñSSSx9ÃKžÆ×«:‹W8[^¥yšS¨Ú“Äý†§JWãóÙ°PO>*8"ûgcÜ_{4/#xà|øvî ó5œÜp^ËïÜéDöm°ü÷õhN8Ò–0ÆÄÜÆXÔÿ“~I)É<z…7Yûš> ͽ¼/+¿„˜£T™æ~Yi/7Qäþ=pqt¦íú¶�Î"óT J)©èx•‰¬28ÞT[çííÕèº5eÄÝQó ¿¶-G4e¶ÿ˜¼2)å`kkßdõÑöS±–®žçÏ5YWoX ¯¬tä½ö´¶_×›ÎRío¢Ñ®C‡Ú:æÁÒ’ú œÀ;ɧ™«ܘ·m¥‘øÝXWQEðQ›¾E^.Õæ95k0;wë;ƒé3I¢y©•K¿GÇ®½õÞáCÎ?û¯_Îb‰ÄU² ÁMÎb/H£>$nÍ^ |jžÆð} Õ‡z¿úÞ%¾\"Je¯’ñVNö9ãhaºýKðb}<ÿÿÂÓXÿ‰ŸŒ‡8™�‚ojAŽ�Ü‘È8ÊÙGíûò-þjl|Ýavd/ªHì±$í|Óm¼À6ÕòSyJ|-Íù3™Ç¡¦�«jç�Ìc yÎù–eú³Œþµg.mžiç®�µy7æEµAž—²Þ“·aœZ\]7Ÿ¤ ‚¿Ë|—9(kF®–4ÆÖ‚ôƒÌEi·ÞÉ·¬/i�äg.qåb<›x•±ù­âËSp8m\ù”þ–ûVY¿’·Ü¨û ÉSÂTZUF›eµq”~•¼¤^O­i›1¬¤W36À×ýñ1»°cï!ì¦ôäTâèþ~~5‘ø/ùÉyH•/wÅæ&(U÷Pò-ïâ'õÞ$¨JÜ¡�=ƒî.hA³„sê)x§&ä>8ýížËù\,â’áÛ"´sÝ�OI—Îû�Þw?„Qƒº œöáãh!Ñ£™ m ^®Ž¸¡‹ö&žCïj¦kªR³+>pRS3°+¹q´µAu¿–æøiñ2´@~IöÁ‘ØãøxÞ ™<&íGb᜗6|*>}ña„P’½�Ä6'2Ú¦–»"‹õðpvà{ÊÌíp&á8Úù¸À©™l()8bäõ(%ܯÊÏÂiJDÚ’À•Ÿ�ò’JÄ“Xhåè„”Îasl?NP‹^z• |Ø7æ!-àì`�À?E»öm‘ß²5v­YŠpÚv./ÈA&m–ä SÇpj;Ð ¨…-•vMÃ(Ý—xx?Ì]š¡:ç Ê6lBÅÙs(næ†<îkíC±:õ,:˜þWU8‡Tkã(ÂR…&&Úa3·C²ÚôD‰�áýböCxâ‰ÿ W_ιìÓ´§é wÚêÜ´c7zõîN°iX¾fZ¶m‹LÒÚµDïÐΚ�Ñ2Gµ ÂŽ›86î$rÚcõÚ­$È:PU­;ísVàúaCqóÔ©èBõÂ<¶ÅÀ¡×ÃѲœê|ó1fÜ8¼ùáW0cܼrx²ÏCÛ¶ÁQ1‹¹Ÿ›XÙ!šŒ®þ”b­,1Çwß}�dš[‰OI§:éDÚY=�¥¿®†‡“#ztï‚¡-Iæ.GÄž¬ÜÊ;#3ª_î�l9ÓÓs°ü‡á„ŒÓ)0sõƒÕÝR–™¹èÜ—ŒÔ§NІo–®YƒO¿˜�s<ã œ8¶Dà��>!�&ùÙ4'¶qLI„÷¢:åýû"ñÆ9äÓÜO»÷ª4·Æo¿,…Ç\ˆ¬¼ËéÔ)LûÅ݇„£ûáÐZŸ{îÕTϼcÅŒ˜z#8Ö$ •QûëLõÕì»Ø A•wÔeZM iîžž¨¦Šå¢BøùÑLYkÚ¢­F:%ƒsìL™þ ó*(($�s7b£Sië÷4NÒÖfçjJ ŸJK†% ÂgN§# ¿æ®¤ðÅ”8U©g tÏ:…DJ+ÿêßl·g—NÈ=•ˆc'’`AéîàþH¥FI3+8¸5§}Y_8ð>£Sø@,øv ¾gaJ»»Îž�°¤í[K®µð°ÖØ‘xÙ)ñ8G¢{÷Þ�1aÊí8p ÚQ­õ'ï€J΋^}/Ä�ôõ;ýðí¹Õ;·fä'':+ø§—w�“6½û[Kœ¢äSÚzC8�aMù]³ÖÜ%É=¾ìœÏgNóN`ÃZ ¾ÖìM\ËuàrMQŸ TYçDlµV{SîÓ×”È*—”ãoœ@. ­_ª¹~3ÿÚhMÅÒŸÄĉSá@U+[Œ5«Ãõ#FÕÙÍýƒÐ¥k·‹ÂËK‹©ûÛ“ yˆZõ-&Ýû4¼¼}xðôÁš 1ŠzÀ?§Díûï½^ ¤MÒÕ2�'Ϩ!àpPe²ÊïJ;}{$íüÌÿ ^žìÙBȽ¼IS™ ¦º8;Ošqž|Q7\u�$n¶Ñªo<÷RRÓiý¾ÿh.–ÑPõûi_}A cNÉäÎW½.ÿ¤äÀ ‡'Aé»ÒyóOj[SÔEn+LM¬EbUÖ�s5N•ûxJ_ ¦¾>“5#ˆ±‘¢’È$� I� Ò-ˆ»<.oýýÕ 5‡€ùš‡ ÆR¾0c¨\CpCÿʱ†PÖ˜zé qúHÿ”ÿöbª­0wóAU!&6ÇîÁì×^C•‰)‘�DìØ77ª¼èëfî¸ûŽ;p.«OÏ~·ßý*N=€vD”¢vlÄÛ_­ÀTj!07'‘ö¼s°³ååŽ Î[(¯F=…¸jH`U\¸’Á•¬#é'uÀ¬ïÒ¥Q½„Hdë›Ë e'iKPí,{5¯¤ ê]͹X’9]³þù0GÚ%kcÕÚˆ5|<ö’ã1�vg|ø?äÞlÎß_\‘`Ô¥¸­Û¶bôøá<èXàx,a í ˜UšÂÏ;PcòÒçu2‰„<(ÖGdÕÇoÌ»?/'ä'nÓÜ×Ô£zõè«}£ÝÓ7ß}s>ý·L¾S&Ü‚ä”$ü¼d! CrB`N ôçžy梨Úþsþ’Q] ´™p+šoYǤ-¾!R-ÄZS¦=ü,*Þ~7ñ "N.šËúWCب½6±DqŸ!<ÐÔŒ‹Zgå‘[s‡ºpÞÿu‘U3ˆd,ÄU=�UÚ#{†šëZáß”/pHÜ…m«©LûNm¨NºÿE„Ö7Þ Ë~Y„^y gR³µ‹Õgûöï‚�wóš ø/ÄÕº¬I¬ò»R׫g_L¸iJm6ó>úó>þ#nœXë§éBÛ±�úë½.xÏçÁ]~—BdEv"LaÒïk=8fƒoƒ©W`m¾jÜeï’Ÿ8CÜ@Á�%26u]øi‰u'� 9Ù·å×Ð¥¼Jþûʸî†ñ8‡þýúò,㮂þ¿x.7%�õJ;íÍÿ<‚`^|]KBkŸ½/‰Àz`ï^|òáLžyÇ•6·ÁôB\½šVY—Âè+ëG~rñ,L ò¢™ãIZPŠŽ¥::/£p²ÁüC#H»CFÕé4£û‘‚YŠÐ×X¼Uà˜Ú_jàPM'xÓ&º9$ÌØž#±ärQO`¿ØØ(^B:ÖZUÝÓ¢Œ[å†U�†y’§ä!DÁôÄ9óÈåØ)gÄ>€öê?ï«3�À\=1DʨËåžËb\š•áÅ©rRñX.Nð !¦è‰Bõå/}*ø‘Œ‘"îHZ=Ó˜–±îOá8—rŽ�=K�©´Yád’­ì[5ßr�Ø¿¶_õx–®ø«òº÷À>¤ñRÙ‡wdWÓéç ¾ÿTŸÊ8ª=XÆQ–ÑÖÇK9c롪C78M˜ûÑS)}Fs8¼pÏ B^¥”URmé×’~Èú'ý/gx 'óCˆ¼BÐS~Z@#þ¤Ýj}ëËmDÒ ¢H?)<¨®|´>>�«+¢_Í¥ñwµB™ƒÊ ì–{*µ†”¿zj°ç“‘¾î7¸¶ Õð$&OÁ·„‰\úGŸ‡ºQý©Ocø.gÙO´<"ô’ÅUÌ?©¶Lu×£Ö«¬½4®šGZ½ØF‰'ç†ú¬RO­ý쇸¶dˆv§ºÕ{ÄÔÉXU�õx¦(*Ï3úK¸zWO•¦u?ÞIõ³¥ß#ì‰çµ5^¹­Tîpeí/]µÇOQêDï Ú‚í¦ÖÈ9—�ožŽ]¿~ƒøs¦psqÁ‰Äx8Ø8ÁÅ4�miv'õ$ÚÐ$^aq5%C��[ނĽ(µh†\žã2R�‘ Õ�ªm÷á÷™hÕÚO¿ö z ›³$ Ñ~e6Ë9çÐ[VýˆÔ­[àÒ­®k^ k÷`ÜÄûz{[+dRÊn$Íü8Sª•ê_�ŠEΩ“ØC<8=)1Ûw¡È¬™ÙyëÐ %&¦°²2ÃæÝ`{ v$$í¶sEËüs¹f\¢ýzª_/”mßM;¬Ûð™÷Ÿ}ýž'pà` lMŠQDâbsGs|FÍ!Ýû‘áœLŸÌû�g�"´e[ßÿrFx¸`Øö•U£ m7D·E4iÇlÜÐÊ× Ôd•G¦3¯¬,�jV çŒðA8ÚžÍpâäi¸úµÂø½áæê„Bžcœ~äÓ>)â\I°ëÒ¹ ��©Î¹/¬H$FvŽ$¥²rÈÿNbtò)2\z¡£¯3LIXÍ=sîîÍ�Jø“Ijtôa„uë‚ôSDZyÓ*ر_œ-�j¦=MØI‰â´ãyœt�v¡¡È¤Ö“‚ìÚ€µÄ¸!=ñÕ�kÇ>´°0GQv!Í{�€‰·�ÛûSãœ#‚Z…Â�jg��lÑ‹å”�Ž×Ôå&åV�îÑœæáœX¦ K‘B&É~úíºv@Û6žptqÇDÎ÷#Û6Pyu%œÛö¤Êâ4Ü>fÎEnD>¥�Ëh·<ÅÔÇ�"A9f̘ Ʀ”n3wîÞ�®¤ÅxP-r7âÆƒþó,Ê\{,ÿåw¡N⡇SK¢öé³þbª~è?âλîAüñcX·ýW˜YQ dó.,Z¶’ŒíþاN¥bmžQ"Ö‘­éi…$2çѯ+†„w‚•™5ÊŠÎRb6˜‹±í=áëíŠ8ª5Ô� ÕpKØÑžò©äÚquB`ûv¨Ú¿ÃHnI5Еû6ã\n1\º÷ênvdÏ_õ-+†Wy.þ …/Íí™UW!ÑÛÍhkÖÎ�RçÎÍ0¸W/Íæ®�¤}KNáX› b×XÙ:Â�ê®sr3QBéTkJy5§}VÚ€- íÜòÜ3œK)0ôBŸ¡cpçÝ÷#Äß]ÃsÆO¾¹^«TòÌâùÖ¥©§L6éñŒÚœ‘ýC`™ÀÁ‘Œí§†išú[$G“ß{•t6�w/kõQ{«½½3¼¨²[hd.{‹hêºH~R¶ô™ôK]ûëå–{MÕ:pP«gÇÎaˆ�?Ž¥Ë—Rçö/ø‚ö¨~œ?ƒ†Ý@®žT”�@šI©Ö§Їo-�©iý÷ßÍ}¯�À–mŒöʼncÑxøžéxŸ€t!uq––Àuà<³h¹_qjnÁ@IDAT µ�&þÛ¿÷òJ )Áë�@�Æ:©ÛÕ¬Wcë!ñöXÌ›û)S݇/�uÇ$åÃ3 Õçâ5›g²ÒÈÍa‰°ÖÁزe3Þzï=„…]xðúá›/ÉÕÒ•†­»^JÑÿè¸2Fr¸Ö‡¤Â ÀþÑ�bå¤]‰[_;$ŽôH¯êiŸR_ ò’€pû‰H~Jm�òWj€$mCNå©û*¾¾.ÊO=%�~=~«x†Ï]»v gÏ U®ªTql˜�J«÷—úK?‰Ó×MG½KŸÉ᡾1QqÕS6µfó–8­:™Œ–á#ðÊs/R}ÆYy8áí7©:ŒëôÄ©Lô<ˆ61ŠQFÎÄQcÆbûV¿Î�»*ÛÅù Ô0�öCÚ!ãlÊC[Ñæd‹Ñ�W›§êcìiØ/Ò'â¤_ ç—±ôÆüT_ÕäS£Z×X¼¦ôSúý%ϦT;QWåâJÁ�KY;uåw-üDïÂbª½uê½¼˜ûkpuóÀo¿®@xø•IJ ‘uë¶-0hU@mÁ;sþ �zuë‹U¿®EÔ‘Htjß벚:fÂCà)"eÊý¼ì=íuòM�ÕJ ÒàÛ_åægdhðN" ‘u{ÄvœÍ,�G~ f¾²€¼ÛÈu¼ O<ò¬Êò²žú5t¹sAæ“^u¹ä©œ‚Mïð.vî܉%ä�§Ÿƒ†péJÖ Rc&° !UGõLMOÓ^}¯ò¢*Ïð™”�KžÆó�¬2 ¢j­]´‡z ñ©…ývíDg2ÿýSœ÷ºê#óA`žÌ5å¡ö UxCO5Çd¾ŠSê͵�ó•ÕùÚÛ‘}Ñð$ã‡üþu_œÉ8 O¯Ë®Ài^:¤zÀë'Þ|Ùy4”Pˆ¬öìÁ÷ÞÛPÔ|¸¬ ¥Æ«®ÊÊ:R8]qþüeß3v¦“º¶Q¿Ç©¶]Îþ+ùkŠþÚ,4Ü«UÝõO=N¡âëýT\?Õw]O_%¼¾sZ]éõþ†õ�:î"ç£ÆÖGå'y5tÎ�8 RéóTãz©8Lcò¾’8ŸÏûó/¢}qKÜ:æ&Üç]W’]�iõã¤æ�DVý¢öjY32².µ¯JJʨ޲J#�ú�èQ½aO5¹-ž£Îzé¤.úsµúVq.õ,§Ò×5%ÜŽ¡ÊSO•�ú–üê‚W\yÄ–Ü|ž)„‘]ÊP*µÀFþI9A­)ù–ŽV´a¨Æ¨¡äªŸ ë­î{$½ÔIœŒµ1B¨š#’‡±¹ _«†åHZqÆòÕŒü­pôÇØW {—°‹B·ÐœÊБבRª…–§Oð‘wŒ8—ˆçÌñ€“ìCÃrÓ2sœ"Èû#ï»3>|Å$ªI¿*¶bÛ6£™›;V®þ$®M¸õ62RöÀc=¨eû㢅XüÉëÈ®¶E3_T”’9Gcc¨2¸~žnd¦1EZd$’Ì,1ýñ×ÐÒÅ'NçSõï)4wÖIi”:\µ#nž‚qcnATÌ”�ˆ„uH丵G½ã`IžçûÖ¯ÆcoÏ…CffÞù òϤâl… b&í·ö?�”“ æ¼8s]IÌÖ»=önÚŠßùsòhN⥣¦wH÷Nš¤§-‰ñÎT±\œ‡ë²kÎdÒ¸¸Ö!pÍ:‹S”6L»ý^Jx–s®¥aÒ(ÒÈølgmM¢2™Hô\·enèBâ±6GÆ¢¬ #üÜÐÍÆž¾¨\ôäþ0Û/À)oèHT´¥4avP#“•µ†æ¤¡QæÛÑIièÖ­;ªx`b׌6U­àW~ Ù&HN/„Ë‹ÜðÆ� Ÿv=ñÇÒŸp&=à Aó�Ø·w6mÙÂó{í£úÂŽDh_7XU žÒ¥U&8J"Ûàáp§d¤»³)%�‹_ìGéÜ$¬üu)š“¹ÖÞɾNùð¶·E¥Cª,«�••…%?ýŒô³xzÖh¸xúRú4E>èÑÕ 1T§[VYˆV”}ù�ù¸ŽÒ©·Ï¸ËWü†èà ð¦ÔôžÈí¸ëî[q/m©>ýÖg°ÌÏ„µWDžHC¹)‰õ9±ˆ-²¡­ÛÞ¨´0ÅïK×¢¼¸gy);uÊ-˜7>6®˜‡WŸx-»à�—_„y5­»$$ñØUœ'®Íƒ°ïà2®ó�Ìc'#>j7ÖÍÿ÷|°®Y Oj§ñ'Sæží›pº a~èÔcçM…6·C©™âÙg£%™»wÅo ¾…)¡%Ž˜2õã=²{ ô•È"ñÛ'¸3ÒHÐ�Ž9Œ£)™hKÂvUE Ê)mÝ£k;ÞéD“Y=“ÄU_x;XRƵE ·`›c³Ì1¤_'$�LÒT{ºxs‹°ÀÃO΄é„ÑZ}ôÇn¼Îi™ðЬaâÒ‡%S:[æH²�3’h?Ö´YÊ2¢±#®mZ8aÖm·bÏž]hѱ æ/úgSŽ!ØÇnž>$ÌçáDFû%%gO�ðë/gsDŠ�¿—+ŽOÅà>´ç{ýM1îf|þö ¸Ž}Ü&T_…ÿù÷>f Þ› Œ×ãßuí£ÿôθ¦’¬kW¯ÅºÕë(rþ'FLÈ9‘N‘íCam’ƒ¤”4XRŒ:¼woÌšu?Ž"eÿ8Ü<¼(1eUo_:»¸ÖI`•„q'NÀ’Ü�­(”t}M*“ŽeåšÄX:Zwí&£�MNÁ6¬°·�7ÉõÒI§ÚÇ0Žþ[6sAŽ –|oD:DóÚ¼�"Gɪ ›QLÕÕT ‘Iu#Ç]Ou ]pǬYÜ”gI …EY&n>'¸™ERBiô¨ �ØÂo¾Ò¬žç/?Wü²‚j×Ú6Y#T¿5–“¸) .g$Äåš^ B¤xçVMýô•”!ÀF¯NçJòºÔ´Jò´.Nux•¿'ß›í¬8h´tK~È­L9UZœ|ÒZ8DÄOâÙW#ôOO�3�$Š«¦:bKÇ̤„7èß§ê'\—J𝆫R¸ƒ�ç¡çTQõîî†æË€Á])�N$×_“ªÑ8o©Êµ>²ÆÚ u"¥’H¤¿„ûH¸:몳>Ÿš‹€5n[½}ïŸÁzuÔtè; gó2±oýZ"Ž)hÙ:î��T|<­�H£ëg²aZí@äÝ›h¤€\Žáä+±ñÄíw/>‡Jkolÿãgl9�§q]ÅÇŒ�ÖW�zÃ~{h¦Æ¹&ý"}!\å"¡$QÃÌ CM!½lX†±ïœˆMÖ¢Ò]¸ZÕz0¯©ü´uÄÃŽô›~nË_“$xty«j×XM?‰4¬H*ÌÐ.>¹‘¾—¹&Nò•xê]{¹‚¿ÕëWÀ…ûúõCiŸ]çú†÷�­ƒ9¼=›ë|/ýUÔÙôï7€ª�Ð�—n~ANpp´À¡£‘xæéq`%îš^Ã]¹eÛfÖÉCJ_Úhy˜*u�9ö…úÕ†›î~H Ҹ†$‹Ñ4c¨¹0�MnDòŸyâ9xµåÁÂ]SÜ)ÖÚòêx‘qX&ÎPbõžÇ§Sj! ]ÃzÔ‘ºÆ[ÁeIòT?å×»wLš8Y}ÖÂp�½ªí*P`š´]Ö¯H\Š“4gk8ðë†éÆò— ÇUŽÒ6u®PõQaòT°Oöå†Êª ¯ÂIdˆk¯µYIhª|ä©Ô½éË1ö.mT?cá—â§ê¡ÒH[v‹“y(ˆJY�s4íÖyRGïdÏÑîZ˜¶¾sFC}¥ÏSÿ®ÆUï÷OxïFf÷IœoTÃX^T¢x®F½¤ßŒá€õK�Ÿšj¬ê«‹Ìq9ŸHqææf¼ü6§ŠÚWpœ÷f"qnA¿Æä%é%…£K}%o5—´pâ¢�W”ª[c’ÉÂ!y‹4h}õ“y©4ÉHÄÉÜDյƷæ_õŸhã�2‚o‹¤èå8 nD€}âñ ð¤úòâ¡�šç_Zlþ/þÒ�²vå©Çõ$½ô‹ö£„©ô¡±þ«YÓ5j�õc$„6Ñü$R°²þ a_Mýú׎«À-‰çÕ!½gÝ«5-‘µ¨¸“ôñÔ¾¿ÿa> €À´[§áöÑ¡7å>mÜŒåؽ¼6­D;JÓµ eL¬EíÌ ïg]6ðz¸WVÀÔÔLƒKGRðMt"FÞˆ;Ì‹YVÚQÓ¢59ù5÷ÕÊŽ>�ÞÅ$¦e¡yÑ)J †!¤U üF{­¨–Ô“¶¼Sâci¯u(J+¨zö%·©úÕÑ¢JS‘êïb©iTrñiKÛfØ¿göíX�3”¶LL8�­w#׌Z¼ÛaäóO OÿëȘÜ™'Rñç—¯£W`+ìmO»²´}éÞÌ�Í]XO'¢ªß¸˜x€vXEcBGªh55)‡]IvÆÄ¢ˆv;E1�“¦Ý}¾úäSØ6sÂèa£Ñ±uKªÇ AZÆ9¼óùwÜ·;Ì\Ê(‰Ì¹OiW†‚‚‘ž�TùÆŽ᪦k Êm³|<ƒ\i x7BC(YœY†{n‰dÞ ­Û± ÇâàBÕÈ»£ö¢’ê„ÇÑìÐòß6cæ´Éps¶b[,�žœ†£Ñû!fG]GõÌTg»nóF«ÓàéŽ ;GÖ'GbŽáËï$ÃyRbÂÌ´š÷ôé{]_œÎËÅÓÞAúDû<š÷€¹TQ[ˆ*š ë‚,št|éíÏP�W„ÔÄc¥ÑnƒÆ UH(¾üüS¸xù¢}—Ú³%Õ?{QºÖÆÖ-Þ©c'x9¥Hû`ãš|óá;°´¶GwªÂviæLP’3Rwô0Ö¯ûÓ§ß�Ó§p‚æ@ŽŒ£Y™JtíÞ‰'â0xp8:x[Çj«-ÊHئ¾AC{Q]<• Ó¤YÛéC¢fIiM4žD~…%Üxn£­`OGsÚÈ5ƒ»ÍåQ%söÊß�ž¬ÍýŸÇÍ2/ñ4Iù…�ú—×0×J§ÒRìîØ=ºaà°ÁHLÉ@`»Î¬{RóËÉ@½¶Öv8IídÛ·E‹óÕÉÒÖ6ÎÔxŠ~”§Î?£Á�ܲrøQutyN&z„x¡ ¤�úPÓ©�¨eñ)D窤E•´âärXMÉ}nà&ä�¯¾ø û‰ü´n… Ã[PÍÄSO=�¸õ¿ ˜ê%‚)^oÌí¡MÜîäªË;v+(¹ôÌSÏâ®™·Ã‰"üï¼7§®è ú× ¸TDd˲W?§Kå†l°€:"è%y¤lM L{.ÝpE¶s•T‡ „�i�Œ¡vø ·àåÎU}»‡¢ Såè9¥íKÖ;I9´ª¾pèÕ}8 |S�‹kAœÅ©z¨2¥ µ_Ú †ÀE²¶±ý+e©~‘²$­Ô¡±ëSÒ+'ù˜îÜÚ W�йO8›å¢S·Î¿a*zß8Ë|�v´7‘²uZ„t€·¯ÖnÛAí>˜÷þ‹T%â3"ÆfnA¨È>G®I"ïÖ(7)ÀÌní�l˜u¼ i 1عìTyØ´iÓåV£G�@xß~xš°@œ_•¡¡d€ ¯«ïU¸¤7L«ò¼ZO)»1\ÊW«üºòU°DÂUŸ¨¹\WC•Îп©¾ÃGÐÅ[ йcϦÊRË':&R{>õÌ è߀vâ‘ÃÐCi¦â‚²„ÐÚ«Wß üóaØ¿’Fq‘+ø¹}GÍ%`_ª—ýø³÷ð⹸y ؼ9O>þ© KœÌ¡Ë…)r |µÇI«ä5ú“¾w9ý¡%ü›þNžŠ¦]ŸqÇ”7®¨²OÕ·—I¸Ì³†ö°èè(­¨ÒKïôóVï_lÕÇiêwÕÉWÚ£w‚“ î.Θd…¾¾ KܺúNÍ+-ñ%=ç¬øé�ä-Náú²ôñþ}¿:=ðû’Åf€nd­Ëí¼o/P7£ý­w4Éþ+{£rõáÞK~‹^ýAÌØs2§O,úv”(±ïÓ—pl¶±hÿ~ÒÁ™�7¶¥ÿ kCÁ¼úöI=,2œúÚ(éê‚9†ù\­o¥QE`¨^º³.)¸úêq$ú>‚ÉS&iÑÓw*?é 9�^­½[ÕEíÒ>½Óã_B`}öÑGñû†�ú(Ú»Ú ®V=/*�W»oŒ•iè—[TŠO¾þ óX€ðq×´i$¶^¸ï¦ù»¿õgÃõk¸fÞm¬Î‘d˜êջϗtjÿWk[Á�s*‰§Ö¶áœ‘o…¨ò ë'þ*ž*GÅ5|ªù¡ü óVuRá†O}?†5å·Z{†{¤j§*KúBœZ“’NÒ¨5¬â>¥�j|,3Œ£¾¼þ;ûel&qÓ4õ¥%sace…*'_œII Ê}{ ؇÷üAµ22s¨‚¹ͨ®6· ~TwkEIÚCÇŽ“¨fKåùðõ°‡[›0$ž<Š_~�Àm·NÂþ?×Äêh‹Ì¨�“j�ï¾ymœÇq ˜¹ù·AeU5ÞûœvH©F¶ÝÌ©4›âƒ£¼7¡ßý‡¢ñüC÷a/í±º¸ÙãÏ?wcÄ�¡øuáO:eÑb`ãdM‚º5%vY‡*3t t…£U5¶‘8y�coïîAšJl­*Ñ: N�ÉÄìW^Å/?-ÕÔ/º£Ûoº{&VÑ^éü~À��CqÃÀp,úa!¹:Ρʷ%n›<o¿>›¤Î$仡‰ËGÝ‚¾ýûãlÒÄ%œFø ”¤Ý�÷Þ~?-¯Ë÷ßþ/}òb ]±”<-­¨Â‚ ðλïR‹i,ŽD@zb,ïgc¥HׯۋXJNgçR kÈ@¸Û›s.tÀÖ#…8p8i'v"€’«¯¾ô‰Ñ'qˆLÕv®Í0îºë°ì÷µÈ8W‚â¼4Ü8(ɧ«�Ÿ;uƒü|°ÿdš;™ ï7_jsNþ’I8?—E•Ñ´«@†q1´­Ú®²FŠ=ÉÉO½‚¯Vý32Q<ùÒlL¢ôo¿Þ÷áàîoà†cÇÁÕÁÁþn”º�Ljž~HÈ2E>ù(ªiB1;7…¦Ò1rØd¥ž‚³)ëÈ~ðhf‹jökoÎ9Q<á¶ûPÎ;ÕT‘lè†)ªÂ|S߆Ocœ2 ¿VßJŠÕðÞ\í†0Pù7Ô¾kUÿÆ–“SXŒÅ«6Îý î‘G¯-ÕÕÕÇŠ_þDW>Å͘1­6ÜØKªü«ÏEÜg4xçΪ¸‹À£�½ Î?U+ó„ÀÏI�Ъv°d]œ$ŽXel|R_Ö°Y^Ö§þÀ!yK{Å‘1BÔUNÕWúO�X«p/yoLÿ®ZµqqÇ1™yiÄQÚx�ö±.NuÍ Uޱ§¬qŽq€'ë¯úÍX¼+õË/8‡ÐÁCáÜÊ[áDv)VSRéÓÁý`2xÞyävÜóä´'àŠŸ?z ïþ¸GÉø²ðûÈMJÀ½7�wûþð¶õ¥j‹mˆ·÷†-аï—Q|.];w@19Ç~záq´$×_·÷þB\ꪻÚôÕ¦úûï\U˜$@úGŸF]¶Ë<0Wÿ.„âræÂE�¿ ‚¨ÔôW¿Úù¦`Wc‹Ó8Îs�76Í¥Ä[ó—È_÷ÒøkÊ~ìЮ—V�pÚw©¬®Ä/‹×¾ ¬ây9VI'sY¹ºÖ³WÅ \zðÞÇг{oÚS±A�nùµÖ˜õšQUYZâzþÔxÊ8‰««ZàÿÈ_Cóà-2…‰{êüë�O ^o̼í/|êZ7UÆ0ˆë$Èß8�U.YdÏi¨m –;dã^BÆ7c 8hÌ�NOBFú)ÄM � (txóB"«\b©rTzQ…Ï÷õ}­žïEFãeÖG9©—Â/ô—f*\=Ö lSý©ž*ÜØÓhœósIâ–'ù+§/KùýûlšÐãljŒºÖC\•Rež$%Ä#»c¸pœä N­ �å­E4ø“xjüÇcp�¸«Wë"°ªl«xÆËç‡à�ù½‡\ã¥Ê³©žú _é/qªß ˨íGâÿÊÉÚ“¾’§ì?*Ž ÿ'>ÕÅ}}u•=ôüØkª7õí¨ ÖJœúòÔçq5ßCS+œdëëbˆ'×UþnJG…Pº£�­E$Xå'NòT®!\Pá뿱e«¼ûlhU¸ä×�ŒùƬV×|—°«áôûíÕê›úêýú_ÕðÍ.}PâÈ–*ƒ� ›ÿàu}PjFû‚ÄM»×—Åߦ‡ËRÃ9(ó]á3õ­Q!°¾:q¾>çf¸·KZÿ¥=ŒTpN¥ÑÏ?kÒo–¤9‰¯O£"¨µ¥Ö¬<ջУp!ýYCæ’8ɳ¦6×âLZÀUþSý$eëë+õQ}$U�»)é;å$�F(ç¾ïUY†qÔ·àÔªL5Nú:ëÓ{uªü½=!?TW’(fÊlM4k䎃xå…EØñ4ñÌó…É(¼x©ñÜÙ¡Ï€ï~}jáÞKå¤="@ÃïZœBꪯ§Š;�’‡ÆŒÁ²U‹áåêƒw_Þm;À2+ 6m:PU­#|ý½)ù—ŒäÄlÍÔ^UNNÅG#8¤ Õîºa÷Ž�¨ ]ËŸ¾ú­­ Qìè/'äe&á©®¦Xµ?'ã{bU ß6ýQìûþAXX høMè\q=ÆÞ‚6¼S;¾Ì_DîÇÉ„M¡ªâàS?#%·@ƒãn�H)Âldd—Á²%lIÄ2wõÅ”q#h:Î 6 rìÖGÒÏâåˆ_Tó0¾ºÞæíwÈ¡�µ~V¿,GøðñˆØöÖ®8u …A¥C5ÀóÎîÄgŸ-À¬ÌÄÚøò"Ö÷Ý[bŠaÖ¶=PÕìˆ3IØàè�M{¢rî|X‰EG2OûvD�vÞÈŒ?ŒJÚ˜­®¤-ÛJA-œ°‘’±s›k[íüi¿“ê”ã“�K;­b«Õ†}žX¼ ×÷í‚°6A´?j‹øŒLì§É-¯’8x{¸bâø!HN;D·ÆŽ +S+|þÝ" RíG»ÖA(!q­´¼”{¬%íÞš£ËŒû1hü(D:„£‡£1~âtj㋤´¤žÍ¦Bxy´$ïzQòT¤>£Ž%b耞p¤–Î6aíh i ~MHB·6`UѽG–Û¢gÇ`ì"Ávõ–íèä‹_–/À#Fb…»ò)­ëáÓÖ§âЬ$=xÏ?âÿ±wàUMûMgTÒHH!$$„Ž€€ €"M)¢Ø;¶Ï^° Q쇢"Ò{o „š„RHïý¦“úÏœ°ñäro ÅòýîóÜ{ÎÙ³;;»gwvvggf êjòà`©Óf+4“ÿÚ¬ÓGhnнÓîÅþ­;°wÏAØQÿ"‰(,|pè‡�عc?ÂIQbãöM8Bþ}‡ ЍÈcmß)—4—ÉÏm\,­AI»56&�¤ÅÊÁ£§;ƒ“™µˆ[»™´Xã‘›™HM­cçÞ8—˜€^¤³#’´@uHK˜,’ûGMÒM SÈŽV6¨*?‰#â4 h]­ ábm@‡´‘F‚ùSçI�^Ó‚ *#ž4Š™9‡)~‹[8œŠÒÐìÛ‹êa�]{�azS‚Ã"&O¾b†Y$ü–R:ÏáC°ïX$<è0�;)Ä]z÷ ˜ëõ >’‹þû"ò<™ÒvvB-i¤–“ö´§gO”š…¡®<ºu÷ê ˆÛ¶±ç>'­Û|”•—Â�„±æ°Ôi!¡»3õ“8ºµòZiÉ4.é7⎻Úè:ÓT˜7û×"NùÊsƒØ+åw�ÑOåü7óY¢{æg¦Óbž4›é©œr}åu¾™ø0¬í?¬”@Ž#íé›Z4´áNþ°ÿMVUÑÖÖÆ¾}û0lذv¯ëëkÈle+£ßîÅu<°€•kÐþU¡Šl‹òökxäq:�²çwÜõØk*O?úM�©xsáBrü}sg͹.å ‹^0 žü3ÀL`G�–¿�nAÈ6´���žyd6zw"ܾ.„oA&eFïF‹à6 펴#¹ÝôÐ*PD­³ Ál1ÑQþ.\Á”ª‚Ãïy�!¾¥ü‹:Ëû€ˆ»ž+jQŽ8!-Ú„O´3~äÄQ¹®+ùiGÆ™CGù¤JŒ� Ê�Õ‘ÓÖ,~�7ŒÑ1ÄU^¾€£ÜöJŵ{d!«7ml‹ö ¹îÖ¡ЛøðÙÂ÷ðôËo´AŒÎ,ÅYbV•É=|þûÕr=¾CÃz!ú,1Ÿú¶ÄœÔ¢¢" óŸ|†|2¬ÁäÂÈ@Ä�9O§(Ħ¥d¾ýŠú£½kçNh–¤¢¯¥ŠÉ¤…~C-Á f†|Th¯ûnî�Ϥ) ë߆ƒò ÷1ÙóâBþM”ÓŠgnoq€€¿—øþªRâÛˆ>+`ü{Ußò¹C]ªîŒu0D<�=¦“Ê‚&yßèll Xꮢðû®ôƉdzº±,àu–À‰ë#¯£ 9ü¾£öätÝ)G”'à3}´Y]}Džòõ©ï…·Gù7±Â Ú`q÷ð&ªuÁ΂VÜ&:ú¶R‚›ø'ú±ªo,¾‘(Îö‰§aóÄsÐ7wQmWù¸”ÓJ°~¸ä38»ØcÁ«¯‘ ±õðñîM?¿¶¼âFYƒúQj¯7yYjßä|ªü�¥Ÿã௫ÛAß�#o%æyÂ[�3�y<†ø¾«|´”éàO^ÿ?£:b܈²xü+�û÷ uýBðÐ\ÁGt6¿˜"oWðPNÃåqßáz]ÝX À”ÓÝÌgå9§3Ør#ÒvÔ6\'^{pø3iªT`7þÞ_ðŽ”úµ×[×'ÝÈ*%åz²Ö.?t×-ˆà/úK-¬‚i¸é‘䬃Àõ“Á'TÔÖ´ Xåï—~¾.æ XÝ��ªté•È#O'¿et–NžçÿÃ=·KWéÐÍh�³çÎâ»ÿ®ÀÌé3ñÉ’¥8µŽärò¬§É�†Ö®_‹ó_ ÿvÁxóÝw‘BDßÌ›£–¾8]/ ù¡Š¿R÷hT<ŽF] Mæ©m¯UÑ=~É|„ªy¤-#ÝA.Ï9¼~ß“ñ¹^š(ðéêœÇøÈÛ¢+xËëÐ�û®ÂVþrüºSžHËðÄZ›…Æ— �,j%èáîš‘¬íÊé9pžâ[HEB²}§Ý‰oßüË_�ŽY®0Û½[*CŽGˆ6ÂëˆÁ × Í¢ŽCNE%üÜ]áçëw�`Yž—Èœ+=òzî·åH!‘—«´P”—Eîö´ðêœþô¬‡­¿o‡¡¹9¬u  m¤O®Üñû¦m0lQ@OÏÙÕudÝÑ‘d݈Üèô3.Bl‹=ZȤ¯­³tJ³0ýþI8�Dþ*FB37oØhÕ‘oɼtolür FŒŸÇ»ïæ�Gyt+J³ 0©)�6p4iDba=¬ŒÉ-�9¿×GȰqäÓµÁ#nÇÛOÌ�i”j“¶¥Ùñ“_•-ÕMÝ_%¹X83j´uM¿su k¯À�üàZ’9ç&‚t:>9¹iøÏSóðÛ¶ý°t ç1„LÈú¹9ÂÚ §/¥¢’|rj˜ô€ ù˜ÝµïÉ7í;o<‡c ìÙþ;“°�ÌÇsú „ûºàðÁ}ÔžuÐ$ùGqY5\]œÈ×+zq³@™ë팵¿mGeu<Ýi_. I$àíãïŒôr³%!ûiÄœ<‡FMK†ãõ%ߢ_oWVWÓ7"3¾Þ¨(«…OÈm(¯V žê—Ÿ›‡¼K1dº7 /¼ö.¶¬ýÉÙy(©¾B~u�p[x8 Aâ™3ؼå~é ¸“¯[ÐXY¼h1i`f’E—¡°vtÃðˆ 4°­Í?û|9ôê 1ê®)ø~Å r‘Ûã&Œ'-$«¶4[ùž”9Á¤±[H“yiÒj’©‡«;¬é º! ¤O'd`ÄÀPü²~žyêr9™…­cÖ¤q¸”� XRÛW×_�®–&Œ­íðËÆ = ɹ ˜ëÒaã48;8ÚWÈsi&+Ð@‚QwŒ>�5JN¾‘ áxù'~ohXâ�·ç£ªQ&d’Þ½º™f–øÑ­†üœlœ#3ã=H!­’´¸\]PÙ`';ú®G·!‚L#�{îY˜‘`5ž|°~ûõWpww¡þPŠ`G}\*Ö„¹ÎBÂô€��кJ{¸p9 •Ï b}¢nÿ”ß ÚÉü¼Ì‹ñ|%—ˆw·ê*ÇE^ÓPåu›¼Žò´·â>‰| sðVc9÷FËüÛYUU„¬%¥Ùp°W¯ÕøÜÓ‘�sâ=ª@´‹ûií*éyÆ}s¤ë_ñwüØ"P‘°wpBŸ�ræì+¡O§W^ze>¼{y“_ZC,|ÿIë–_vU(,˜<ž°9Èžèàv--±Âô0§FbA}ô»oðÙw+Qdiݪzì!§Õÿß·›¹íê"[¤gSÁÊB=y[Šö×KM̨,,4W_Be¦]|O†ÇI|{9|qÏDLlÖ3±þ CÀð˜)´œÿV;í[Áø xÊWÁPr’N•ªR8¢¯ÉqLæ7ÍÒj§€4¨ Wñ®3‚,Ò ¡ç›fŒueI/ÿÆ'޲…ï`Ý–ÖqzòØa°�uíÖ?&ÔE-’ÎFܱ]hp¿ ‡Óµi³ïK(ʛދLa EÞ†ø Ép çöq±g1åþé¤í�Á÷Ü…ÚâdÜ7v8VnÜ�žtîÛÏ1û®¨^4ŸªÓ4_~ö ˜"ÕØ·�Bþô0z<ùŸ W]mLû´µ$÷C—ÉÜKÐý´õ϶jnäßK~¯&ù¿Ñ]h1>äL˜Øü‘gãVו{þNbCVÐ!Î'èßËi”<þzË”3¥ ŸCg°¸ªÖ|§¨,(0SGSnê`�!“zBü[O"ò½r?íÍïäõæçë \†˜ËUÁ¸Y娂ýWÇ­\½sg>�ý{¶K¨Œ¸}Ü5(ÉûCí[K±!=K?üèšt73‚¿‰GÊí/ÇG^¦r:~§œ–çJ1Í}ô)ìÞ»^3Z„rP%d•^ü�þ‰ñõg.ÿG›òšjqÛ w ªúæ5n0‚Ëãï(6œ:Z¬ª(¦­ÌÓŠ 6mt›Óq�ÏGRD7eøê²pz1þ•ÓÜì¶T�µ!3KÒ¾¡ æ÷ùoH¼¼rÙªžE9mQ•îVÆq{Ýl>ü(iSpL×/77†y+êÌp ´±NBVU�ËäñÀA.Hk0é…ҟȳ91E¡>›ñ:Žï‘R½A¦¯7p¿ã 61Ÿ]/œB>žÇ9È÷eøùVõ†-,d�6ûA¬"×OãfÌÄ+óŸ�´`æèJÉš�œ| ñÑQd d>‚È”§ ™õ 9ü?ó^Ð+.³«ø) YEŸæ1 螘{˜>s�ÏCRÄÕ?Ue2›Øûâ|1M&ô3Ç,ݬv`Šžy3Þùv¤á6uÎl<¬ÛÔV/NÈm®¸k6’Òq÷¸VÁñ›7üß>ä÷ò6Lp§Cì¤Âqÿ#O¡"?.öV0±wªÿþ€}=`?xÌÈLjÜöõ¤ñ—-2ÃëB~)7ŒÅòS:þžixç½÷pW¨ŠÚð ÷G]µ6Î��‡AI.|†�"sɶèá+?¤ÅÇàôþƒÐ!³³dÞt,™aÝebƒQófáÌ92ßëEÚ��uÈ)lÁþÓ)h ác/WKì:|wßÖ%šÖ7$€\J¹£Ü:š¶!ÐD�˜´<Éì|‹ž Ô­AKZ W=Êˤ«òߦisÉr\:lœ½03ö€B;-Ù,cÂ�°¶³Çú|Ú'¼ÝK°E× î-­¹'×+ƒQù|éåÿ��P]l'­ÌÂ+(,*ü9Ó¨.µdR˜üãº;àÄéÓðõñÆÙ“GQR§�»î¹¥ùYh¬¯Çöƒ ­e€ýúÀÜ5+¿úÿYð¾üz%FÜ> öº�XôíZÌ£}4 JëjÊp…Ìëj’�PKRtˆ†¥ !­mA®¹z`òØQX²|9ŠHkõÁ™“Éäp:~ßu¾=ÝàëéAþ[¯ �¾¥>™Ì­¬¨Ã¡#±°$ Ó;F†¡šâÃÜFÚ�ÅØ²g¯¤ùêí토^ž0Ð6C|B"ùmÀ�ãÇpû€0œ9uúFÚ(#¯ÚM-;z,–}² Ö$ô³Ö¹‚˜ÔBD�K%݆bœ‹'íL/OÂVÃÆÚÏ<úõ-,[ºN!´Ž^NmeŸÐ0øúùàÛ5pûè;°‚ü´V’ fŸ}± [·lÅ믽E>bÍa``„E_|OÒâlÒ¶Çã�<$¥û‰ÚÐXÏ™ q˜ñÒ;¤¥K¡� cú£œLa—ÒA…Jê+eeEä×eUuÔïaAf�ÏŸ¹ïžÖÈ/ª'·—aké'7?šÙj §ÕD %gPEmÛŸ,â\L¼#cXÑ~e™uÕ·¶$KbPEßùöƒ$\䙦h{74¼½a»r9ŒÉop¹= ©I0}ü¶Id²Ù—R.#%9646û÷ñFA£ êËÉ',ùâ9$ ¿nÝŒÅ_~GòŸSØFî"«káE‡¢K ²@–¶1tèPÌ:ÁŽp î+ Yu´H»š‚|€iÛ‘ý›`cë߀09š×ÜËó‰—L›Å<Çq7›VŠrÄ•ç(ò2¥¥?1gйýf¯‘”ŠûÓ;>æø§¡¡º Ö`Ö˜¸XÑi y8æ$âÏ�„‹ƒ# BÈúÂsÏ!œlÍõ ‚7ù>­£aF'~”Ãéè“RThX¸ò«›þüÖÛoãQ:Õ³ø ²Cþ¡ Y[‹èˆÜÂL�2…œW§ÒI‹XlÙú;òÉ?@W…¬¼T7`d› íL3ƒÉ‚W�Ì ²Îð[¤s>OϬï®è›^ÿ"@n;úuùä¹Ä0¶,0ƒ†Ô™,æÍzfи=ŒŸÝÕU¶1$o#A˜”Mÿr¥ ÚLð·g"% ¼�fT9=Ãâ÷üÌ«0©&Ê$‡ÔfÅÔÔõ#9S)òÕ±À`˜‚Éf‚ÉAÖÿ$fZ,गôÇ8ñ„` �&$-¹V!ˆ5çQƃߩÛ¹úý¸=ÌÌ#�ÄÖiH&Zxe©6¿û»†¼‚Bä"8À_B±ÿÀÖ ?„“é§Þ‡�bÌèÛ1dàpQZ“‚#0·°ÀáØd˜…j£ÿŒFXáÛ¦f8HþFBéôT=1ÆOÌ¿ºz¦x¬%[·nERü~ô?™y¥xøÅ¥D—âñÒ#w"|ðm(î{œÖì‡+�Nëqþš§Ž†¦‰=bÙ‡*òóSZœ�û�/ gò·�‚½ûâîÉ“q¥¦²m£áÛW^ƒ÷¤Ù]njù7–ßw@U?ì,Ïÿ§÷L;äí)h ·ß󢟃g|ez"o”qPÞ@â8¦ b¼2ârÄXñrúÀÌÕÍØx°‡ÖújWGŽW,`å8QOå÷7y[ÉÓœ‰»´Î™PC~­úI¯”Ór]E;Èóvåžñ›â° çe_ý&‚¾w¦ršºšrè^Ë')§»ÙϽ‡`Õ§+ѯOk»u> X9„щdûž5Æ÷N˜‹‡{± ·Ï1Œ©ÿõ1‰m{w«nø›ˆqÄ߃b^äñÄßJŒÆA>/ËǃSüíyÌÉûNDX(ŽŸ:ƒâ¯#lÅO×TåØŠpÇcd&£•ÑLؽ=‚†ÃÔÞýš´ÿÔÑ÷ÅõŸZ�¿+Þ|Xð 4ºÌÿÊëñÙ÷«ðôCsÚ4ÉÅ;îÔ¿™4fhÜpÿç9›Óq¿çÀ}_Œu›ÐòqÃùä› b��!1¦®œžJÊþ$X4�qPæ™eɤñÎÏ‚ÖÈßÝÊûŒ”XIÈêêØÆkëD íò7ãv“·Ý­ÄU›¿Ñ^‚>ÊÓÜÈý�WE¹Ê}TÄßÈ•û“Xq¿4þF`Êóª°ÊÇ‚<-ß3êãGš ZU5¸�´žv)È<}C)ñõ6(ÊNCjRzzû¶eOº‹Å ^Á7?íh‹S¾imñJ&âD<ãÜѸé:»*··èo"Ÿ¼þ\ž<Z%â®§?pù\¦¼œë�Çí¦"ÏñËöE ÊÞøxVl=ŠÉäé½÷`œ’V™"9MžUºo,Ê�qŸ0¼øê›8qèZŠR°ýË•-MD u¸“à©ÆŠ’h¦Æàä‰j´Ô(àBBõäØjœ%· Íä­SOG‹ÞíÁÈ�Á$Ü3$ÿ¢�HOª‚›™ `Ë`io‡ŒÌT4h5ˆ9Ö~¾ž¤ÕåÖÇ…Õ�xv.FÛM¦�m§“ îGÒ¦%Áj3™Ï½¢} Úë)É}´ ñE= <Lµ�[Ý„¡#{“OÕ(Ò´tAâ¹cÈN¼„ñ·"Ap>âmÌIÃÖŒö–È—éù“íêŸcí$=ge!%#ºiéØåáj6>-rJà“š�9$à�H‚(Òvô$®�…útb’‘’’�ö=BÖà`p_O2­ë‡£§£ÑÛ±þ»n+ZÈ\îÃO<cò¥úãª5d‰ÀºqÔ´ša¦£‡<--dSÝ~)4ÿ<ðRëÞÛ=[¤hã*Û7 ÍC‡ÈÿAÇBVÁWÊy?Áw˜ Ÿ|þiýžÅÆÕ_uGÌ«LåANë~ršÏô\Ìò|ÿ´û¿µ&«¼1_xåe`Ö}÷ãôùéUh_\¤7üzIWùß�«~@CqÊ+j1ÿÝ…HLJÄâ%“šö y2|õùg8�«×´‹¿U‰Ũ.¼Œ^>=é¤�®”ÂØÁ /¾ð ™ 8€¾ý|Ñ/|²/%à­…$mº…�;u¶®±b�ž�Ù˜ªL„ÒYÞT1œÿ†ëÍ`Nn!êÿXÐÌгf,3h̬±IGA •+%ˆ$åï!b�ÅÏ­„é�E»`¸9 ßËOÊeÉŸ…�UÀ”¿ëʽ ¨‚ùd†[.lé A„9­|bPfjlUm$/‡ëÒyXò+oKŽ 'y¼<ïßážMxs  Zìl¯AëñG@uMbŽî‚;MâÆdçмà6Û~_}S<ðô#Xûû~ìß½¹y('!3ž|y…5ÈÏÎÆ÷Ë^ÅŸ,G1v™—.#»(v6¦ø}ûEò3qFŒ CÁéµ(Ë¿ˆ¯öÕàÑS±rÍ:¢Y¡èí`�ž}ïÄÄ ·á©çž"³Æx÷ÍwÈ\Ç:Ù¶šü:y¡—Ÿ'|¼¼áJfmÜ=ܯ©Ã͎ȸg¸¢!êH¹®báw³Ëø§Á“Ó…ŽpçtªhÓ-Î'XˆE§ª1(gœ]á¼Ѷ´õßB/3÷º˜,9�cZ¡nCžq�y>9žò4�ÝGÑÉ×)÷ÍÆ¯«Wµ Y;ËÓ�÷‚7O»=zø]3'Èa‰´ª¾‰<�ò}^FŒ$dµ°qU~uKŸOÑA�î Xå]Úý Lìzb{ÔyÞµ k7ïo{-¾íŸ=þE¹î�êæz‘¦+W†ûõ¿€ùX=ä‚ig¶¡�"VÞ�Vä]n°2ÜŠü´ÿ)+·CW6Ò˜Öpè*-�ÿû'µ·1ÁgJ]ø;yö<øÇBVù œUŒ QOæÇ8þQ]åx)O$o–¿Ó–WÌMò´L•7‰òtâžqc˜êBGÈÊué.=VWæß!^|3Ñ6Ý_ô#é$… âHÓïlÚ¼]z>¹w#Œ=úáùW_EIr,F]ÆdÒ~“‡=dÂÕ$€•’Û�÷^zÕ:ÎíOš•Zµ°rò œ� ›4ÔËʪàìæŒ$ìLij/DV³v;ô´µHq`Yy(Ci^¦\Ž%󲩘zßt$æ+`OBçÂyÞcÏ!$$�Ž�ðv÷Âål¶jÛˆ,LZøø�ön=Μ8‰+uYH"aió ëEMb/$`ÆÔ{H tbÏœ†ž�>.�ùaGG{ ÐÉy¸”˜ˆ3SáïáSgO#sÈfF:h8Ò àiTŒ‚ÚFäVêá�93±wç6:@Š|òŸ«OÖ) t,yü"OÅ¢€³ìIXmdn�–Æ&¤çU`âÐŒºcRb²hŸ0[Ÿ—h�VU ŒKPX^ÿàA0 Ÿ¼Ñ§ŽÔÎ¥t Ç„‰µ¤Q\’s[g¼÷ú³Ø³ï™Ò½‚ódÙÎ¥¦1ôÍI³÷ÑÇD™>{â ò2Ò1ùþ98|à6nÛ�Á¡�ðr³Ãw4^"<íðÑ¢�I‰W^~---ôkÆþ½{pòôYêï¯IÝyéûïâ%iU$À~üy2m}¿¬û }ý}©?ÓÌ//Z¶‚ýaHæ¨ •¤U«‡¨Sñ8Ï>üÖ­ÿ 5••8w.w��¼¢b•UÂÁ‚Lfg¦ 3;é…åÐÒÒ'³ÊnÐjÔ ¯Úxï“EèQ–ÛŽ6ÉÇ YS¦ÌÅΨ3p()„Ée|*0€4bÏN™‡Ï>^‚�þý¨O“V°¦ mýI‘„Lz—A[›Ž9hiRßOÁÒe_c1¹ŠÔ'_¼ádþzí†ãôÝ5àlg†œâ"L'ª˜¬Îyða©ø&rÖI‡DtÈ¿.­‰˜ÎV¿¼Cž™ÞÓ”¬‘ã«ê^™¦3-æÐÏ  ŽrÜq² ë«ÝîYÕÚ�i¿|­Àø‰:Ê3w6ÊÓª»_¹r%‚ƒƒ¥Ÿº4ªâùñ;8“†ô€¡#T½î0Žë#Úö#d}÷�7p)î,|éDA*9ðîOÌaD ƒ¯�l;¬ýßàåú_['éqc ™ì£'ï\…à¹oc 9à565Áêu?¢,/�N‘ †®�#�éÔ�¶a.(y'm{ÙÍ›CÄŒ9>Aä¸y&qöø“m¤›à®IÎ�MD"tu¡!Òßì«|ÜlØ�Áãï'„¬fhɸYm91SGœD½eæX™ðrZe¡,ãËÂ*y•.üŽ™L_àÂŒ(û¤‚C™Ùæ¼b‘ª O‘O\9½XPˆ²Ä»®\å ²ºEWàÜê4«\�ØØ|²h‘Ê¢²È©ü{o>‡ÂÒfÔ°#w S8“ÉõFoDŒC~ aOþjt‘¦ ‡ëƆصg¬HX« ?¦N(²GÅþ/èü£V}ÿ1vo?€CdfÓNµ%&¥â¡¹3ÉѼ"·®À™óq¨Ðr�ÌS¦\ˆ¦“�z°eßþ!ä̽&MšŒSä{ ?™ÉÎŒ#s) Tê`7™õ|dî#Ø»÷(ú‡‡¡VØ7àš:ýúæ8õˆS_ºæ]w"Rµ2ô[ (ÐÐü;ßîÔéFÒÊÇTwÚCЯ¼™$L¨óXªæ$1¾ä OÆ_Ì ‚xiùûÁ’N]×½þêu ¤®ÊevÔn‚ÞµËÓ� hÙšFeýSßåî^…«-œJ[º4O'\8'áçë|]x–傸�jP×ÿ òs¤*½ô‹#_3O<õÌ-©¢(_¼;ãNä“�—ƒ_~Œ¯HÈúrNkD›ê6úDšÿ…+·…|î£ötEÔ»£´"ͿכÛÊc@Ì!‚Ï´·«¥ªëçÊßšáÉ…¬œOÌQœ–ƒàSÛÑ}éÍ¿�µ€˜gE:um(§]"­ª«H'„¶Ê‡FTåù³ãGÁ³t·l„ E俞u‹ÈÛÙ•…¬Iä+nü´ÙÈJ‰�•=ùe3þÃREbòü÷¿k0iÂÝä>D½fÄÁý{0œüëqXñù"Ù· Ž}û£ÿÐÑ(HKBiÈÔ4k ù2Ó64Ãè;F ¹¥�4yÔï…Ë邜.Ëé�º±ÞY½ù=ÑÏÇð”ÛŸã; œ¯³Ð‘�µ³¼ò÷òús<�+L«šÞ]Dü÷0ÔŽ •âøO>î>ÿf¥ÿÔ#sÛÞ«ºÙ}ì46Óÿ‰Ý‡HP-]<úð<Ü?õnUÉÿvqÊm$ï?]EV†˜8wÆ8Ï%¼¡Š÷R.Cžò± ðW—V¼óÓå~.Ò(_å´†Ë,ÈÉ€9Àp{óÓvÝÜêè¯(W¶ò3÷K±7#§<EYœFì ž:sVÊÒ/¤ãM|9\q/os†­ê»ˆ´7zUž¹<æ1ø{ˆöûÞVÁÚ­¼+±ðZœŽ6¥±+ø ´ú“† Ÿ¼ÿÈkAA:†gÄaxNšx%]Y˜"�àŒˆèúrT“H¯à0ä$Á¹bG¸›k‘E\-€JÆä‡³)j;z�yÕ>ä¿rÇŽí0n¨Dv³#b’²1uÜ@dQY¦¦äw[äsr¡1ž{÷ÄÓÞí¢ùi¤�âëkrwgG¦M[jšÈT-™oU�yb2}{:žÖŠzÕ0tñÆCÏ<‡Ÿ?|¹5$ÇkÔ#!a)¼È÷¤®Žº8{þ"Æ ê‹´ÔË$¼v#�ZG”DŸÂ]¤ñšA8˜“Ö©YfÙØ"Ú±'úö Äð~AØ{<}vo€}iI»¶Põ MšÀÚ3À{›Ö‘ Ñ· ˆsçOÃÓÒE¤yx>æ,Ì´5QE.­ÊÉso7ìØ²³fÞ #k{¦GÃÞòHƒÒ4áBöïB‰£ôÞ[„Õk¾#wW—aíD©aîd¶6[vî„v5)Mõp„³³Ž‹Âè1ƒ�“T@þDuȯn&<©ý‹ª}úæL™DòŒ¤¦§£²,MdÒ×ÚÚ=l`¬oƒ†&�2‚=Y†«CÜÅóX°àc<ñì+8{=è{ö ðD0™¹õòrÇ–-»Éš‰@½ÇÉ«oŸ¤]ÜŸpœ=výn 2W¼zÝNòÚH)b×®ÐÑ7�¥¹ F��ÿ®ùFÆH¸”ޝ—~ˆÿ®ý Oι «7‘EºÒÄçÑá*]M îçMy\QMÂÉòêJГF5ù=u)>8Sï�ÒjÕ*MÇ€±SpŒüðÔ:Ö×Õ@—|ór8G¦sƒCúI÷Ÿ/ú9% L™|7*ÈRŸ��NM½”' Èu MÈÏ­5 ò²Q^o€Â‚RìGCUµ¬aCî2²’PI¦‚Çé‡Ú:b3Hð©§�xÂËÃÛ QG#›H‡¹{ãJE)›špw“ÃIÑMUÈ&˜æ†zÈìŽ,2Ï{˜¾gA90nÌ@’©ê¸}Lî‹H:¨dëê@‚nmR—¢’ ˜�¦¬†±-tPEV@Êa¡¯ {[{ä(ÊQ^’Cšß#“Œ2©üØì XôùOè×Ë ËVm•Pi¹ª™­Aš°ÄüÀôEì£w—¶1]äЕ¹�ËtìFè§2}”`¨Låë/~'¯ˆušH/¿r=Xž$æ ù;å{²Î�Û1/¤œ‡Ÿ³2hï� Z»ÄÜ(x2"ÏÿŒðæ[ïáW²c½ï9'º¨JÆ‹O-ÄîcÝ3i»�üpM˜4½zõúË*Þ»·�T¶¡©�tj„¬îŸ='£¢�~)Ch2x�TñmmíÜ/ËIÛÖ«§§tºKtJÐ$΃å³Ï‡)�˜èÓÏ}Bý$X]ùû|á'X¶h)Ì­m1hpDôƒCЃ0¡Ó"] ¢£sZ10ø^݆•x/˜ )BÍ×3*j’u;Z ‚î¨n¤&×½ªÿa3]zo7ÿ­vK5Y:�ij³„‚¸2lnØÄÖ¶¼¸ PÂ�}oùç4ª\‹�*»ßö»zRŸå]=}"åÂVa¶† §e2¡¦gÉß+ÇË¿­˜@ÿŽú31ÁpZ<˜ q¿c˜¢¼Ö·ÿ;ÿ3gͤÊð¯5œ9I§Ð(ì›;“È—3·ïÉÈs "frÊtôéi‹SIY((ª!s½ièkîs'ôíé…Úƒ‡sê,ê .áØ¹“(.SÀ70ÿyšLÍháå×ßÁÏ¿…“?ŒÕW@ÛÜþ!fĤìER6ùÊ.¨Œzá�çÂÆ-Ûˆ9¬‡—YÍHÑ�™ WÛ¿þtÊL‹ÌÕèÚ¢ ¤¢#QURL4¼ÍzH!MZb“.§À‘|“X¦¼ÛzE<_ï•ûléâwJfÀ®ÞÍÌ'7®:X‚ö‰÷<îºÊ@ñãÀãS Ï“;'ãC!=\ýãº1}OÏ!â*?ÎiämÚz˜nÁÇ‘˘AÒO ÿÝ7ßH·óy„,¦õÅNòßWÓT�°>¡01ÔýÇXE}ä׎xy:q/è�en?ãbN`XÝá¤9$â�ÝîÊýJÐIå~.rY‚pÓ±niÄUà-žùªÌÉßÉ梁>"p™™ÿyXû�´w"ÇA¤Quåöf󦼟ÊÓ«‹W.‡ë*Ú^ä?EæQ¿øú r ×J?8~ÛŽ‘DEžz±H¦ò*ÚœÛ[];ªÌØ�H1/ˆ,ì7ÖuÃAi�Ñú®Õ5ãÀV’‚¹3é?Ôö�ºD`áòOc·m;ØÿáRL™Þþ€ÃÀ!ƒQN!<‡Ùc¡÷Kš"º^ËìÇZ,6-‡K½&üÈ4ìAæ‘ X;}2%Kz°D_»F”’¶èÔ~# A.X¾ûòKÜ>înØzõÄ+K¿Ä3sÆ árªÈ—dc“&2ËšH¯–ÑckršSOâžûÆ—o¾„{LJc™­5¡OaE4¨VSEdbØÜH•d¾ùî¡~(-ª¤} 2YL¾^I{ï=ó8ŒŒô¡íÞ–„“•I pµq2µ ú¤ëàä]\Á7-2CK†Ú�h! بÑ¡ç¹]¸@·�̇5ÍW#FŒÆ>ÒÜ,oJ€ ¬Ô Xs­l¥vÖ „*·Þèun79Ë=�és'WW)¸ ;Cš¿,‘œ‰ d s SKÉ<±V#)'�Ànâƒ`mÖ€‹©ñØ{à<|³Š1ïr<ꚀX:D˜›ŽØ¹SPÝ(,ì\QC¦’OŸÑ'AÛ/p'©—r® ‡N²ÈTlQqΞKÂØ�á$`³DÿÆp?s õŠ4�ö¨Óʯ`îìŠr['”–êâŽaáð²7A Þº;Îäûtîä1øþ·-Øøûn¬üa6nØ"Õñ�Wçã i·–’–õ—{èÞ~¾hѪFbJ:ö‘E ðüüÀÝÇ%çQ¯Ñw'; $mÓÊ’,ªcžš†oÖlÅœÙP»˜£©®c¼qñÂ%8‘Æï¹ô|”+JЛèFì¦ °íA¦•=Bq–¤-Muð%3¾~´ß7qÎ\Ü1v<4ÈÊÅ÷K—ÀÌÍKÂs ÔYÀZQVŒ ±§©NÎpöê�ßùÛ¶þŒç=Œ¹�<Žž¾°#|ëÈ¿ï÷ËÃÑÖŒÌ);‘À7ƒÕcЃ| W’t]™¥nnAjµ&ÎÆg£ž4HÝIhC{’ P´haõ¾8x{‘fh ŽD‘ ÙÍ ¦YÙ˜èí 2ý­¯Ùg�^¸ÒÔŒ¾ '€Ý[%\å}ásÏl˜\8£Øøûf3ÓÁ£ÉDrùm�&½'aknˆé#ýQAsS Œ›X#ƒsE¤i¬ÝTBf¼ËðÔÌш?‚L77àrn.™Ø®�•µPoB‚q/2\ˆ“[£ˆ¦õ‡ µãðñ“ÚPÂUŽô„�>{ڬǕÚvs¿ë,t‡ÇaÍ.�øÊå«Ë+è 2ýî †«u$ƒ &:s…|¨†|¾ë¬Üë°r¹Ý® \ÙZ&ÝKkN®Ó?F“UT€¯±D,9úzJ×îümÚ¸ Á­'=¨Ss8Û:‰^»èìëI{|Å«dãÞ>·ÍhËÞÏÏ ã'݃·Þ_L'2" C&!yñ?3|D»Í:Îи1'£$!«GC!?ýxœÎnΜ�ÁC<ŠaãF!#9¾dºóý�TkÉ)Ãâ�Å›~”&)RÅ3ŽXHæº~Ÿ$lS‘LŠbøb ñ¦dG&uÕÁP/gR•7^ÔåéN<×3ÓÜ>ªÊxtV¿ŽœÀK´ÃÒnÁ͈Á¶� ODù ƒó™7·d˜mØ('¦ —…¯�™�ætyOܧ0Cs†¢g¯ÀÎÊæ2å�óó"‡™wyù¢-Ŧ¿“ʺºá,`pûŠþÂLg„Wäã«ØàQõ�äéþŒû”´L$§fbìÕ/kú‘̦!€~ß}ö‘ôK%S0?k(Š_[böËîX êß‹˜×Z„øY#tÈX¬úõ™*é�K—³�K#ûî¢SËfÄhh!$"kW¯ƒ%™à°tõD/wWhµÔà‡uèzìì±k뜊>GÂÚ<Ô”åàtBbÏ�&†´%ŠÜCæƒËȧA¾BŽùÐu€´ÄtDø:ÂÐÆ¶Înä?6‡G.1…Ï?ó(NÒI;'g'xö0Áo[ö¢^Û#† £ƒ$nÝjfјñPî;Ýô'$}\ôMîÛB£½»}özÐåòÅù»ÂЈ´|•Ó ~î(?�+f¢˜�búÂéåZìªê,Æ"§åñÈáFq–€tñ�ÛHNº˜­-·ñ�¥‡þî¼g,È¿ÙËóß@ï¡U¦mÂíÅ¡«°Uû‡DîÞ¼F²ÞºÊ}U÷/ùÆšòû›ý,ða¿Qš/¼¨üÓsã¡»n=Ž.}_ñ𹩙–I=&öàíà*,ü-·�ÉUù&=ãibg§ ÇxfÊ›UŸöié†Ñ¦m?œ:sýBvX-²–”ÀÛGµp»ÃÌòK1Ö˜×ê.¿ñ'£ÚiqLw8aŽô@ÊßSÄÿ{UÝÜŽ“GHsŽªùEu®coF t4wòXUÇŸ º¨ ‡¿ê2NLW:ZÛvÄû¨ª‹ WrºÏm¦ S€FÆÚ°€¾ªl7·jíZô!“À}”ö7¶mÞŒí»öÐ&l/˜™›cY­©­¬ÂžíëU–¹oãÏØ¼ùW: î‹ï¿þ^Àô—ß‚m¸þ°ìc ö%­–&ÔÐÁ ê¦8Yèbà�áh¨¡]Q ƒî˜®î¿‘í[à$màr`A+ù¸úaýF)nö½lÆJ*þ”…¬¬8ïáGɬ¥æ?7¿o^�äv‚µ|ÂC‚1íîöe� ÒZÒ30�>i>© Œ+óë·zÜ*Óy©Ã�ãŸæyUlê*ãÊiøóXÝå+’“bÉ`÷y'�WgÚ;â ]GuT~Çõè®H/Ñ¢£$”¢P°ìÝáO$R§­$ÞwvUÕÖÑ$d=u*O<öd»ìIäÕÛ+¨]œºnWrš+Etã/æÌ òÛØÿš¼.S>ðßóÇõhq4AñïKs¯{yÍ+®r Üï/ÿÞWªÐðöçÒüØ›Lÿþþó )ÙÝÓ”®¥t(ýöAá0&=8?î´ïC𡳠jðjàDèT¢Î…´#+š�Fû¸}û Å–=0gBš››ñͪ-ç8„Š9÷MÁúõ¿bÅÚ�hˆŒ -2±ªÀé´ø9Œú¸!•4õIûÕÉõ T)ªèW;è˜!ƒ„ŽÖdR¶©®œÓ\Á´±ä‹´ § ‡D 1Alª²4ôÐP]Š�És‘vüì¨!Ì pà\ š(žlÎÃÛÓ�4ÿ®Ðá#Ô�?SK»`8ØëÀáÀ&wôÅ÷O„±sOìß°ÆVŽpüu5´.]lkJUmÛöòê�^p\ð ÅñS‡ñÔÒ×pôL>Μ>ƒ�;· á_`e…�¼‘Ux…Öâ�"†„±ñ´‡eF>4ÎËhw¶èKŠ…¹æ–0Xò=LmðŸçC_²°éFÚ§fúš´Ÿµ‹´C àæîHþpµQß@–ßòñØäáðõvÇÖM?!ƒüÐŽ®)�'™®ó0£²�ùÙ@|µr^þQ2ß[�­;’PŽüoöò@Cƒ&ÆŒ�ƒ§â`A𦆦Ð$_¯K¾ ÿ^~4‡ÂÜXvl%«—Cqžª‡…Øãç- ðs1Åã�=�£G£ÈTs.œÙ…ígr1<,;�œÂì)#ÐDßZÏІ´?ËP\Tcª±a¸‘ßÚó»HZÇ ^•tèúóÕ«hïOùYèM¾kÊ“1ˆ¬Wøø÷FQníî‡�säS3<õ Xòé2¤çdãMòÍêH~nuŒìH®¹!¡.¤Œ±eä›Õsèè?'ö­G9ùO�º˜L¶²BßJ2q\\PLBW?¨áHL N<‚·Glr™ÜµÇ©sçɬ²Ó ÐÓÓ uô­bσ}#W{Cô'ÓÊV™ÉøÚ¦'iÂ6atQªäûôRØmxàR$I,Z=‡˜¼|ì((ƒFüi”Y: ÿ¨qˆ:y>N–(&}$s+ÐæÓ³øaäãQc`…oÞÿ:ME¤¡œF³å03ÐCMc &†¸ _ƒü;Z#�”_FÐ!¨%Ë“ðÖ—Ìy÷Ä�wŒ!t° éži3¯ y^bº!çM»Ë‡^\MÓNæÙ;Û#´_Ýþ¹˜OUÃt_ÐPUs€ª<Êð”çoUynUœªùE|+þF<ïj½MáV!p«àÚÙX’�@ËNÁç%F^ÒX9ÿ1!÷"ŧcâéwQRß²q ò ‹ÈLBþ !«K߈ËÈ¡Ã;ܧu"¿˜z ñÇ H:AB’Ѱsê�ÓgKõå `“ˆ!°š2 nŸ®„““ üš `±ö´üü ¥iîò&qqi9Æ�‹ð¾�p±3GâÑß1vJëÄÞYãê‘àÄjêéç8ÿMbbZ7]gÂcˆôÓ@ ôè´/Xë³3A‚ôëÉ´é•ìt•¸rÇ-ýõ)-O Œ‹Ù”Yú7²ù-êÀqøYSä�§ôç’Ú˜Ó]O`¢Tòë ®/×AËÙE%þõ‡w+tªªÊ�¦Î2WU?&`UëT”GÔçöVZqmFyä}ýˆÁF’Љú ·%/zJ—¼«0ˆ¢/¯“´¡uDÉߤQSCßùÓ•íVúœÞvþ›úä)Áœ ®<¿Ž/Ù»MÿŠ…µ‘ŽÛ3ïù‡©ÖîúÉuZtŠªõ¤™F>üÉäMÌÈd±¾>�bìáŒÝ{wB¿¥4F.ƃDôÖd’£;!ãÙ$Aù'ÐP7ƺïV¦½N é‰#ŠF4K´€Ç�W.³•V»eÅ3ÝãþÍô™i/Ó%Üï»ä4ƒó1<1.•áð¸"_¸ ê9æL_ø'OÃmÁ´EÇ´W¦ÑLŸ¹ A¯y¼wDEÞ뽪«KWà æ¯Šh*Ó0ž‹yS¤#|g½š4ýÐáfò«b}M1 ³jý·ÕÃî*½Š>-™ºøß8ÂS�kwP–÷U^0ÏÄó fèó–,�Ú³;ÈÚ½WßQ» Sk1ζ7‚>ü «¾¿Šk+î<¿s_�)4–ë««õy”Ãm-Ÿ:'â!oŸL ïAt"Ø¥õ•ŠCCc:i«^óZE–¿,J¢gDÓ:_rT°à5»‚Ïc¢?2m–øFâ™Ý>]Õ•ìÿSiââ.¢�Ödvv6Ý®ÓoËùo¯Ú:/Õg¥«�Ÿº ü8÷Õ’_WI5¼ž9�ów4ñ»ŽàŠù�ù ±^ä1ÀüIGù$„oÁϼî¸ðúUþãuFGõUF‰×A¼&l¥Ù­}ó‹åßâ»Íqübιˆ‘ÃZ÷).Ó~€¥¹jþ_nWžìÙ‚|ö&œC€mX9Š7ÞxååeX´˜ü| †dÉjÁÛ¯^ò<¹Ùµk?Lõ5H+5 N¦@|¦æn´É^�ÝûŽÁ‚49’R o�j4kê‘?¸SL>öôh³yðØ{ ¬Åºlñ'¸t1zdÊÏÆ¶ãqÎ}‹é£ºý‚kþ‡G899Ñ|íÔV yÿïÓÛüë,‹:EÖ‚Jpß”{Ú’š¦'Â=5–Ö½0üž1l0î¢MÝ1#nƒ¿oç0¯ÔUB[G�üÌéµÁT¾á5y?WN#ž»ò]9�¼þœWðÙ¼Žs¿rQ†üÚ–�èŠ|oÊjÊœ¶2$œ®®A˜þT¸¸!S¯…‘{`ïÝW É)8zâ€gce#]¿þâ#¼÷5ûAZOgPœtuÿXâ|¿jìlmQI¦*5´´¡§Ëö̈§»ÊǨ«ãÅû#Œ“ªÀ| Ó$nwD×OЪ²Zõñû¯ úûÏQK‹ôs²l¥5\¶¹ö1&-KMm2rI°Î·hbW‹.âSÎQU4ÈÚT |)Æ3 ^ñ�ÐÜ®ì?âÿ¸ã}0m RSZr Uô´‡c„õ ûÀÕ;+lt%ˆoÙÚ&ÍH ~›C‚ž´÷Ð�ðÉÛó±eÃO7qZ[6†Íüš¼.¼Æ0:E_-C٦ߤ´â=_¹þ|åï�*}=jó¼Òsâd8…ö» _ƒh¢ƒôãCCÜwÿt2¹zÓràä‹@¢Ý嘒OfÚIÝ?Ü dq‰Ükbç¾ýxp⤓ʴ—c\U†‡Ç!7î0~?v}É?hã: Ÿ~ÕäRÊÑJåuzd^‡xZ-H¯2DV|™nA )âT“9X#]4Õd"1;—ÓŠ Eš¬=í `geŽÒtÌ¥Ã5ìÊJ_³DÓ/Ð1·#ò[˦j¤GFuQ>jÈôim:ù«Ôl€v=iºz“õƒRX›êcÀÈ»ÈÂÒT¬‚¢6i¤Yš[J>5ÍÈ×hY ¼ú¤CúåÐ�‹ƒmI^�ª¶½…« wÍجDÔWAç2Ñ r7hGsX~B:tÜ졽iBIÆÁ¸¶–øMK„LŸFí­Mª’´ßµ ¦$Œó"—["ä‘ÐÓÈÞ Þ=ÛÔ‚Ÿ×oBbÂe:´òô´šqìÄqhÓ¸Î+.&³Èºäó¶‚„ÔÕ$ÐôE€·;ÊÈ¿i) £ó³ p¶A ZÎ8ÛËF&î°"“ÝyùÙÈÌ"4HPOÂu>“�WŒºú:<ûÜs0ÓmÁ·Ÿ/!mUc¤&Ï0|²2sépTIƒ“ËÖh¬§ý¾2¸: éR ú…`iCëéÖ’fm3ì µàØ‹„ Õ2¬?\]ì�Gø“Ve\Ìø‘³¬º†�uHˆOFNêer5æ€ã‡#qôànòuZ™~n ¡{RBjµàáìŽÌÄM)Ãe� Æ�;Æ‘{‚8DŸˆ"¥‘’‰àÐþƒHÉ-Œæ K„ £}Å&XÛ»ÀÂÉ ž¤ÉªM~smØL¦õ‘–Sogä�?Õ 27CdæØœx£Ø„djo¢�š€ í�Élö òmœt9™ÌB»Ò7ÔƒVS YósÀS/?‹ŠÈ( �‰Bѵ¦áãðÚé=ÖhRôk¾R —uÙÜ‹øåÐrö¤­­Mš¹{:’¹mòíJý¡œÖå4L`lLf¯+Šq)z'|IÈ};R:™X‚ãÛ~DsN,Ü\ŒQ]UEýœüÝ:[S' ñÓ…( ÝA~Þ$pwB )§˜�u‘è“ñdm0 >ù¢2Ò3Óf¦áçIÓ›¯ÞO¼DñlåêÖñÇ\Ž(W%R)4¹:'ÉçcyzÞóÓ>�œL…Çoûôy?¦*ê0´œ\¥½ ÇÞ–gëð^¾‡)軘ã:Ìx�/¹žÊü§à'Dù šÛK´ó&|O]ô'ðÄÇçß™‡ÇaÛ'�¢òÕ·¤ŽÀ�$ÂíC#Èö½Ò£�/ ý1´ˆxý§_� -1œNqˆNjêÙÕúH,ÓD1ú4IîÙºÉW}«qgz›QÌ9b|(ð‚�˜®ÀQ–žw%ÄÆ_‹o~ˆ�¾At ¦7îš|?–­�ìJÖÓ0nüã“câǧùÇ'.x�q`|ÅIBPún,T¤:ð{6ûŧÀXëõFN¢ øÜ?˜Qåö¸‰w|å÷7#0lQOÖZ0Y`Êu�ÛÉøþyflÎTUýfÌX‹”óÈó ò+ AùT·µ€' F †\ƒLž‡ïwZ)ÒuôlæWþ.é|4ø—¸a½ô­¸íÄ©‘NjS[Œ WùÇD•ŸùG.Å—Ñ›„qꂨ+s®3§c\—+¿בëÊíÈ�Ën==òº”GŠìŸô½®ÂèBò[šÄ“„šüSî›1KÒbå÷‡"?ÊÎä—À–ÎÈKN †´#‡ $$ ÇÈŸêñHœ:q çNŸÄñí¿ÂßÁ·'SÑåÄì• —LhØ:Ø¢¬¤Ú-M(+̃™™9î Óu¦¦Ø»/GNžGFnöï9ˆ�[ɇ9b?ŽN�Ñé+[#-”’Éš2÷Û¨i€’Rôă3ïÃäÀþÐé ”Þ_~÷5†�$ó*Ä ]©«ÇÖ­»Ñƒô³Ä ¦¥ÑJÂ¥UĹt3ð7oŽâÊý›ûúß5pÿæ ‡_¦â^Jt“ÿ¤1*»=¦!/ o$0ÞLKÕWž¹M®rº/Æ6_•é Ãá´Œ_Ûh˜l>aÜÿ®AùòüƧôTÑ.å:ظöRŽ’žfû>C§ë©}”ËR™ùjäò_`ù÷Ë;Jò·z'õWšS˜ö‹qs=Êy!Á—ðüÈýVš7èÊA™¹ž²ºšGÕ\“|9�~Ã0´÷ÓxeËZdŽ B–� BöFJxúz÷—ÆwÆŸûã,�G>´#£®åßXƒ•âO•tªÉÚÕzü›Nu Èû®:¾EUNÖø—Ç >N÷¿~ÏmÇ¿¨o¿Ä·O=Ñja„ž»ÚxFšó˜ý7¨ož›D{u—оÎ0ϯ¾$õo:\/ªàËÏœ9£ØMzÃtš¯D4Vù*x“®Çíćb”C¿° ŠÒ'³xš05ªÆZ÷²€õ›5¿('íôùÈ‘#xú‰§ðâ³àÑÓ…¬ØbX€+¦Ž‰À¡�{±áÇÏÈRL(æ?:�›5Â3j7þûØtX“/63Ú¤œ5s&î7F¼î!•LǧѯOŸŒœ4 fÖ˜ýÆWxé×õp +5UtHÓœ|�ùÒFm£¢HÒPiÒЂ³»™<�µ?ü€ô”®ÝÕŒ6-7®oF´{!{à¾Õºfÿc¿@ô;î·r\eÙþV·Œ/ã)ðVÆ™ãË 3¤ßÍ@üè‰H,øìÃ6P¢\nLJvàîãK±÷ÓňŠ>Ý–¦³›B2}yEK¥_¨7ÓÊåð¼ÅAZÓÈÆ.¿ãŸ<ˆ}+¦;ÊmÂéÄ·W~'ø:±· ‡Ùѽ2ÏÌcX>.?¦E\‡<:h¶nÆ“ˆ�=…ÊË©h$ `eü?[ööÒØ’[[(eŒi]®‡Vìd]>MBL=T‘F¢º \§ã6í«œ�Û‚ëÇûc"[é´™Ø5  Ò¾ ÷£ �¦vý€¶˜Ú#wØð¯¯QLª*Tø_ˆQL:wD‘KÂek+òmL‚÷Üì$ØYZcú¤{HPÜß-ù1‰YðrsD!Él*j�š„“vmyE¹Bi#â$i/ûnví�†>¹Œd“ÚæFu¸›¯~øÁ5¸È#R.]h{T¦ím/þÄ›Ö=ÿVš/ŸKå(p±ïÇ´NX1e*òˆ9Šç|UsŸ§•øñ«û!üN!Ï×ÝûS§NIYxÞ{.rº-øNÄåËi¸¼¬¤¹`yä÷Ò¢�È!™NÜ-³pÁk.&0ÎÍ� ©±»ÏCA§œÿàzd™_xîQô ÇŒû�Å/<7³fÌ@`¿áR| › "FM$⤉ñSgb©{ßhèåëŽX‡°°þ¨è¨(Ìœr/ß>o¿ø6, 6þHŒ!¿·žT›?ÿ9Ì~`.¯:IçºëÑÉ®Ÿè°]Å‹;uwót¶ªtÜQY˜¦ß›ÍãÎʃ�¯¼ÙÄ“'3c<0ùÊŒÛÍ`¸žÌØ3ÃÕQ}oV{ðàdûÜüMx²Àµ\SÃUÑ6•'ú´h f|E=D»qÛpYlz”a*ÃåìÜs^tbˆL€pàÙ&0eD�—«Š�f¢Ê¸«ÃIÀá+×Kþ>üÜQ»‰´ò+÷-i‘Dõ’ø¿±PFŽ÷õÜýÉ»xó£…˜”˜ Òn¥“͆F¨P¢‘N&Æ“JUu5<é¤àØ ÓÉÌIV|ó-&M�Pb’.&e�/§$D�I&óçAèÐ5 Úd™ÀŽŽNdFÃézšâoŸGŒÙÎhÏ­ª�S7‹Ž2¬Žh(¿WLËD`zÏmÁôX0+L+8Ü,z/Êú3®¢n¢b1ÝÕúˆþÁmÁ0xa.ÚWÐEñügÔç¯*CÌ'b.‘Ï5׃·]Gí&æÀ-çzpã<)égñÂÓ±{÷e ÄÛo>…£t8&¯ “ÜùÖà\Ô)^ô/^O ð·Â<åñßUäBm‰×åô¼(í¨Ï^Žç<[7ü£L2ÍFü¦r�÷qåwªžù[”>1#£¸ PbroÆ\Ò Q…Ç?%NÐ?�ogí-úºèç"Ÿ¸þtôÑG•Λ7O{Ã×E3‡ãΧނOذ.Á:zäù¯Ó�ÒF ºV€*€Dž:�Å_,ÅÄáwÀfß& |ì™vc{Ágßc˱3®½ç!·áõßYIKæ7L»w²ô\VÕ@fÉN!…ܬ éšI›·§NœÄ×_E|y"Bû˜L9¶46áÂ%Ú0¦íÛ`Úäl"“�eeYà}†‹©¹ðèa�¸‹dU†4gnLZ*ÆðòƒãÏ?J¼‡œfíßò"÷nÅÄäšzàÀ�£pΟŒDcY*œÈDâãÿùK_˜‹óq—Q¡c�Þ®Fdª¯îÎödÖ³âÈD£ÿà±$¤™#áÍEiaãî×ö¬î†û§à‰8�œ¯yTõ9y?í¬O 87û*ÇA¶ÀYŒ?� ¢ûoÃfäå¤Ò:½;벡ïót¿Pi^â±G‚ÍõÒUNEó¼Ãü…ò�ßÜ&åk>{¾ß!Eªøãºsó˜ØÇßBÔ[JtõOô;ÎËë~r<¥ˆ«œ¿;m"Ï+peð;ÆKþÌq‘þpù´wž‚Á»ÏK{TÊmæ�…YgÎÃá…W_ÇLÒˆ ðo�¸ú/Öº³¨gžÃšuÞ`»4ü ÚJ]Ýåí#Ï,ú”úû"”3þ¤“‹1 à‡ñ?³F×öê›ø_Qz,•¶&0&ʘ5•°)–n¨=‘‚¹TÞ.K |ˆrÂÙO¸–ž„v¨ ðGzÌ.ž3DR¹ü|©à¤§Þ¡ýQè 7{'ê™áTBœâ½XZV„2zb† ÀÉM-eH/£²ÏÉO<µ0†é®�ô²-Ŧôp5A=>mMZ¹§‰Fo*m-,[ðó–xô¦cỎ#è-ˆlýÃøø»;£ß¬E0ª/À›=g{CTÔTÙ͵­­Èª0‚�‹9ß·ÁôÆì¯ì…TÙè)cs¥·Â‚ƒÐH…›šéÙ¿Ë,ÕóÚïʺœ‹ràBÃy'û÷@~/o 5‘uú8�úc%öf¯ _zXÃIz’þ°ý0FúÚà0Ãp-ºû6XQIYTYƵ{c³ÂÑÔ9¹Ù õÃØ!Cðåš-xà¶™ØÃÐYžìoñÜtuv@ö޽Ðg Ó€ˆ@죢±�ñ;-¬,†„ø8„õé sk”ÐËu댛œ��RÆ/MI΀³• |PTV‰Sôòt²5F¯žÁŒSšŒywÞIxßj,ùú{:Kdá‘»î b›�þùi0´v@â‘ãг²‡­ =\©Ð½…ôé›Ï?ÂòõÛáC¯ï[oºÛvþF¢œ©¨¦çâ'k×aß�(Æ­Á¬Ùó ì�[fÌÀ߉„ñÊ Ï"”Žk»vlá>6÷,ø;öïØ„×ÿù6Ö¯ú�w¡t$[N˜Üa×Ì B>•åehlnÂþ=ûˆÔЛžó鸚JTwý 82vª#=_×ü¼“^±q°'*“§i5  �IhêŒìkýúô$Íݾ{7|˶´Q�Þ£æ¨$ xºì¬öuë<^1CÓ�Á‹ã\”¬×Uäµç;äæ_¾µ°ÍƒlŒè$Ò$Æ�ôÀ·2!_5f̞ɾICKÎIœÍ¯¤W4½T‰ü��•Žk'ÄÖ½‡©ØGy±z|�;™TF‹GxN^1æ6çÀyÿ~åy]Ñ�ö é8H:™H�ûÕxâ¹—u\ý÷žÒîoEAª+ m†R]§UB×=ê¹Óß}ù¸ÅUæ¯È;®ÕjÞξ“�Æ"0b@ûåððp|ùå—„¯¾€7�LZÚÝ~:®Ã¿¯†Ú\ÿ¥ÇêË“—å&mø€q¼{+ V!Ä1±‘6®q‡Ñ§ï…^«o¿·gRNã-‚@ZØL¿õ¥f̹>þ~í=òåªõ„E8ŽÃÑÚÏ]êÁží[Xf|iu±ì«¥$Šiç1hèP̽ãNÜÿЃpvr¦•�Pzã¦]מï�wÚ,ÊÔçÚ®S�,yÔ«“‘þw ¶…ˆPPèc¾HùV”p%´¬Á*a¾|B9 Ï1š6¢˜äÄOÏNÛ¦öÁže²vgÂv'ÏÅž%וI¾�úd&i3û<\¶:*3®”ö«„Eòj“ Ù$µõ ­à"Û6 2ž%Ÿô“d™ç”|¿ üvŸ·IIÍP”¬rƒ$u \_SŒ ’Žiêü‡”S]¾íRóÊF'·õUE!®ž“o!@’Ôz*ÊmöW©c¿+ï‹åäGí ·"„MÇëºÊ’çŠÚÓÅ)>‹÷éÊóGÏI?(íaÛ»S§?ú<]÷G1øzAÜ.<ÿìsXòÅW¸‡ž£“¦§õ_ ã˜ìG=­éL­í ½’7Ʊ�ƒ}]0(Ä›£Ï ¾( 9ÅU´¼:†Wžœ‡„BSÄ44 ÜÕ“°!…he|† {TIüo7X6 ÆDŸ1&S™Â›“ô\­�c@¿¸ýžлg >ùf Ngd\W'ZÔùâ»oVÒËv,¡“nÅ”«'"íL-ù~V¬ê`l…&+˜�™Y½’箣«™™sÊX¾ÈøW«Î³+9¶.•áPë¢ëûrë%k¡MBÏä“‹WußF—ê¼tEOŠ�¤ð`Ø)SÚ£&•I>äb‚ É£"ªeh¿/·¿µeü§GdÜ {Æ­iS&æ룆èUÁõ­eæ Ÿ÷ù£õ¾Xßɼ¸’s£«úî;þ#F†¶ Í·ìZFáAzö[ãžùObáþÊ­Væ´ØÞŠðž#GÔÆž+cä»ÏË+óóÛy Yç2¬hÝ–-\¤óÑчb(TxÁµ[o›�å_ó?Eë=sy'´ó_J�ß�mÂt=!4›~þâI¥‡Â;©¼g^v:JçÞ�za�;g@(Ýp¹ü•Ì÷üü|–ÀØ_À8SÖ`u­’ú¨Ê9þ³“<[Ý#¨|´Úk�¥þR–¤K}¿rŸöýä:yâØß_‡"ŸÂñ‰Û×(ånr ‚cF~» ó_x—ûÛ÷ñÍGèÓg8~ü!,ùðÃó¬å„o•$ÊÕŽ ÖãqqÈ¿óqعº2~ã ÜÎø�ú†úJ~í?i¿ÚWJéØI{emSß¡Üß�>9z4¦Ln£ÝrOÇw,çt¥²|EÔD¯½}U°Ê»W“¬ ªL¶ýëÞ�ºªùÿè·×þmx­¥ zÙ‡ sdzž’UÊ�ä¸%«Z÷îÔïPä>ÔÑH}ذÁíïKd–²6ªr=µî2Öä#ów?×7=½r·Ö–öýMë”hb Í÷?þ�ò&]ïeÍWoÑ#Ñ=�[è5j{þÕ4XP6ã ë ?À™°¼ÎòÀbº1‚Ÿ¬0²ªœÁútºQR y·YåqÍå¹ Q ¡¹õ“FQ³3ú†xc{dFгÕ�aƒ~�I¤#�==@ýUQŒÆ@ÝŸW„þTÀº”–)íI2¶F¾­rû ÀX�’U«`=Ö¢‡>ú­J¿hÿ‰‚UMqô¸ÍbLÏA£®ÆÒeŸ£šaõ üámÙJ"OÖ“Þ·lÓÖ3-ð%œm)BÃpø`,âtÒ”±p¡r²0?-töjÔkÁ)z�ëØá‰»n¢â± 6–°ñf\ÒµèÕÇÞþˆIH†ƒ§‚|}àB97¯@Œ¥×e}m9!sÏb$c¶zõë‹5›÷#‡JØaá¾tX8‹”3YÐó%´ïoÙDŸ³F3i¼-cg÷í?涮ؾi= *Z¸×´C“±=škqìDªkJÑÌ�½‡ÑÛyûO2è:œ>q×^?å9è1å•¥ø–´úä3ÆåÂËÙ' œG�ߟW¯À tðXüÞ{¸úº9xåõבthj«KéÝl _OÆ>-©ÅÆ_ãÖEO 9—È«ðúoÁÌÁÖ6vˆ9t‘ûwº¸„4³'®Ÿ>�†Çixøáû©Ä>ƒC„+¾{Ôp†1;�]»w`ðˆqD(Ç‘”B8ÑP ˆžÅ­‡ÆÆfÈNÏ¥cI"�üáçiCHjÄÑ;׎tö(m‹"DøÞEò*ËW¬›l<‘nÊ!E%ëú€`†@ððQ6ÆX²Z ÎúaÙÆí8“�3ŽCs#œd˜µŒ“  ð€±µ*+¹ij"̵Èc“àŠ3ŒÁÚ¿W(úÞ1Õ õˆ?‘‚Êò“‡±‡^Ðóønnl(Qh…ЋËÙs‡ôº.5òd ?tÑû“8YIñ]ÑVYÏD—Pß�èN?H¹V\;%)^§Qû”ç颥J&ÿ?v'[ü%Z_yB¡ãñôlW“ÐôŽIêkyŽ‘kÚõX›÷/åɪm˜z, §0UY܈¼±vüz„âí�–ª—/ø¾ƒØ÷�®ÖhÕÓÄQƒ0èÚ;ðÒËÏÓò&3fÌB 1¸ßxí9 '®÷×߯Å`zÿ=Fe¨šÔ…ZžÙÙ %ëè«®ÆÑ¸X,[¶”îì_¨·+ß ‹ð·§ÿÆÀåÉãîBˆ† óFU«!B‡M� c<˜˜˜�wOg?T«¸Î®Ëyñ*•o�v”ïÎ’ÊÿáEDz¥~2)D‰( Õ|=½pµ|¹v©Þ¹RGUh­–Óñ™ÿÎßjªu�:Š·«ÏÚ]6*“¦LÞ07´æl€~pÛ†]m—ܧö—¼7­×¯\“~”oI¢àHÎÎÆ¡vlt$d2ŽU‚¨Î!)³cYr-cÆ„roçø³ùáêóÕ¾WçƒZ–”ñg&yžV@Õ‘É×>[ò^j½Ôò¥o¥­­V´åwçx×Û7¡÷µ á<´;ÙqúÀX’AÙ{4‘L¾)=N7ã·{pçüY0jÌÁÆÍ`éL‹ö¦2”VÖÁ)8­u­Œ�êOŸ@9rŒÖ�eH¦@ÅÐÈfŒŸ1jÌ„º:À m'¾O³ÇÙ³„ãì GB 5rý½çΛ)ø�ÅO«V!lø$Æ(e¼olÞø ¼iaVP\‚%Ÿ…äÓ§ðéW?bÜ�Pxøø1ÎÀAx{¹ g /ÁtXÚ»“þzÑÊŒAßÏ`ݶxô ¶AyUú„‡b…HÝIgRÏ(ÙüýÚݹç¿!�Œ-­àE×&õRÛ¡–ùgh/¥.RU("÷©4ZW*íÐuíJ�ë­÷܈SGÚ„¨ºÊš+IèqWtB¥ ’·;uÏÌMDdÜjÆJ™ŽKÞÂOù‰s²­}BÂyãÖËb°åùÿMI¬ÿ|ïÆ£ß/,_ú#Žþ ‡ïûóÿ¦4¥«~節²¶I’qßqÍêê¾?ëZFÁ ìŒY 7K" D %í(~øy9ÝÖh¨)Ä‚?BIq¾ZóáÚŒp÷¬ûñÍ÷‹ñÞë«t ^{oí_‰u_v �9oþíxøÁt*ZŽÅáØXÜsï}V³ÿ_–+ô@’л‹Ñ%ã_üŸ:Uáqgͽ^*†VøÙ¹¸~ê¸ÎŠíò¼¼+]4Fë�#t‡®wù K¸¨å˵·] ~@[Þ•öÿ² «–-A•©-’�i¸˜L¡d>kÂQ”ŸŽì zªÜ1«ÖíBOG¤ç–3^š=S˯­ y¥”6Ò+èÞy×y¦š°€ÇY~*ú÷ôFHp ú¦¥2öàMÊšùüã÷cì¤k`Åx“Å-ÜdŸA^I9’N�DC�!êËÎ^°œíÌ{8®6¨dü±òKzí„"ŽH:áô¢Š��Á½ãÇáפS¸aͲöþèî|ÏJivyœo3{±1'×…Ÿ–$|À¥ .…ÿ»úݽ"åIRç‰ÔQ¦w܇ޯ~¤({Ö̼}Zš”¼ê?™ÿBCuѵ­£±ê½]åWó¨ÏU¿UºÔÙuɧæQïQóvä¥;ÒW5¿ô‘šd� ‹Óö™Z¾zOw¾Õ÷£æ]ì5=ƒ}©PMcßïDŸøh¥�Õë"Cøäó/søn¼f‚‚zâ«o— ñø!¬|âõöwy6=;6ÿsÌž{·z;a8�áo?†«JR±ÆÆ oÜ|ÕT)ןxâïíù´í’“Ýi[lÜ|ºìK|þÁÇtü؇Ï?|K¿ÛÜ^æ•:8y¯¾úFŽ�ùsgqßùÞ[}×òìîòÞÒö?ƒ_’ºÈ¼�ˆ[FDe»ù¶»I¯üyw£áœáÇ`ÆBÕö}wú]ÚMEëàa#þ\~ËsÔñ+ÇÚ¤ò¯ÿãU~ö.þ¾â'å²Ð�ƒ›>ÃACîø~^®Ì¼€×xô¾»à€"¬ß“€šú:øú÷`LNs'¢\:O?ªÈ¢´Ïëxœji ¿ª Xš¢À¡ù%J–Ã'"ÊÄ gO%£¢®Ž�c 1�qšÍŸzt7’“20jô0TW–cÛ¾cÜ›X1žp{äQ즷gs‹Ì-�é d‹}Ûwa8•©†ÍµŒµ©/Ow*‹àíb‰ªÆ&”Æ3Æ¥©3Cû– ºÕc©Hýñ` Êò³©Tõ@ ‡½ 1aÞCˆŒLÄÎ[aAe¡«� ò«Êp¶¤†°»ŠÁÀÞž((ÈGEe ƒzaäÖ_ÊíËËmòi´šGelŸŒôóº ­oJ=|i,ĸÂ{·áV£ói«šù0—Gc:k5Aåäëèj‚ää,z7`Á=·à‹?�·» ÌÇØ‚0ËY™©ÈÎÌÆÔ1ƒaâèC¨ÞZ\=ØË¿]�þFã“+é êÁ=Ÿ yýô‘ßpó´ñ ¯UŽ ØØ90Žn#Ù¾RÂ/÷¦ØÞ?ÃŒ•pð ŸQG%˜ßû¡è#ìûÔÒ`*¿¨ý%Ž6!Ü�=zP/QJ”¸*u�àŠL8Ó+¶šNUõMH£ÒrÈÀ;F^™ï½/Ã|™´Rñ›É˜÷ŒeZLŒk®¾ ù¥uˆŽ;�³YYŒêG#2=äžI£3˜„øâK¢:RsÏÞ;[ˆZ7ÂÃտެF#Fô‹€�…V¬ÞDYŸ !†]PJepVfzrÝs¥üñЖTøÖcÞwãÐÎm”eºÑæl`h�÷_~�¬I¢Op 5 %«F­ÍˆvÇr>ÛÙݵMÍ0çøííëM8`#¬Û´Œ{jÉqbF<^'¦Ù1übZ ^jòhЄªâBÆ­ÍB‹‹”9ª¾kõ;ÅÔ)—W—�D‘«;R ÍàÀþ ¤'jÜý÷¼¨Ž£'Ð)Ä߯ü éi{"§ÇO&an4Pyn‚òv«гôËSà‹3éŰ´1Fi³†9ê±§_#Lóìc¼×�¡á˜Óxìˆ>‰fÆðس©}Ÿ®kÝSë{¥¿eͳvyû§®ê"4UåsºÊ§½¦Òkí¹îÐãwŸy#ʳ`K´E•êÎ}Úçȱöù*Íî˜çRÿ啬j‡œ$–õko<ë–z×ãñÇŸÀ�!ÃÕË|¯_µ‚0›å2y&ò°[’(Zå%|øÁû¸zÙg(ÜÏ)3h2P¹®e0E £Ë;Qeð´Ìòkÿx ÏþíY¥ õß÷Ë¿@bÔ6Œ‚í1Ù°`ðð 7ÎRà[­¬ì U²ž:}ë7þЧ_€Ú†Zh3µ…yè(Ü–‹ê@T3vg@iÛ×�üjÙ]}«Ì•Vè.}×xYm¹RŽº¡’¶©J°Ë™hÚr¯ä±vK½´�)¯ c_±õSTÏUªbUíy§ÂÈÉo©£ªÜTë«m¿œ¢Ýqè}Ÿê†WíGéCõKÝT(b]r]M*sÙQi«^¿ÔoµŽj]ºº_6nÒ¯’ÔñÝÙ}j¹�ÕSúA×!çKÞyYés£a£;U`Kº“ ’¢º­`•ò~[÷ C|ýË.„Œ§µ×¾e8~(6æd¨òN £¸á:Ú£7–£¦I}G±?È0検„Eí Õš`ÝÎÃ0 Å¢as+Òóª0 ·-�™ƒÑ~Èd\ÔªÊj‰OD.áÈÒ33ñÐ}÷bùŠïðô�£˜ñf²È°Ô6µÒZ«”ÁÀ Ü ydd ôèíK”ž˜0ŽÎ �‘y'âO 0�˜¦ŒeC¡ËaÆ­©Æuӯ÷¿À˜þ!ð!Cî`g×�.#S¶UÉ7qü¤nåÿoÉ$cK¸H�;»ÝmOÇòþ�´P�oºÚ$õÔ®QéTwÛ{¥ó©u–r;£rM¥ÝÝí_Q²¦çŲ5oã«7âðÝÏKiLÕGOÆÀŸV¢}zÔI{äYÿΤ¾§Î„_—R·çÞ˜C�˜¡Œïì�ú…E :4wÌzåeuèÛ§{F'�=SÖu ìêÝuvÿ9ÿö{„A: Ɯ߆”ô8¥Øß¾çêôô ê‡ÙónÄ�ÁÃðØÃ q0†ñ¶ŽQòÉøêõþ?ðns3úÐ[×:¯ÀnþøŸ’µ›õ_’í Ñ%êÿ?-©ôQê%4RåÍÔßòýG„ ¢dõ ×Dw’Ð0IZc&]ôAåiU~öJÍ9åáù'uT÷2’U»O¸È­ÿ¶Ëj�µû†[eþàƒW|¿'Ž#/å è­Ÿž oWXZ9Òû£¯¿÷ ~]õb�Ÿ"dáPÌ™9ƒ2�÷hpÝ+ûüúI£°qçNÜõÀBÜu¿W´sõS×Sµºk›ô¸æ†¸…qÍòÈ#äáÆ›ï¢ñdÖmØ‚`zè�Ý}IþyO-x€Æ�GÐPš‹ÊF# ¼ë�™Ã¸¨ÊŽÐ Þn^ŒÍ–�4ÂZ˜9 ‹Ð}ÖÖVñ´$Ò�3Zˆ^´ƒ!F|Üì`fjŒâŠœ!„Ýúõ¿r`ˆE�>Š�è5lei‰ ÂgÅÂ-ϼ�ãÇ�ãûe«Ð{L?Xyû#ØØ{·þ‚TØžeÌ»F H=J¤¹¥áÁýaÏ=€ñž È Œåè’Bµ¹]òTí™xPQ’¯ü´f¬¶î&é[-/­Þ×­ã½êÞX-£³o¡y×ÿ~‰Ú•ß@?»ˆíÝ G"“Izçí—píµ3€gÚÂð4R`^ùÌ+ðùä}ì�ŽÂ“T¢Ï¡pyRÎY¸åÿÞgÚg«õ’újé™6�öXÚ.tV+kÑ^W�uÑ:- —|B3% ß®U¤I>)¿íÚï2儿Ÿ–·–ÓÒi‡®=·æ¶v^[{Ný–ëÝ)OÍ'ßòì„„xøRq£­Ç/ë–ú‘J**W¿þŠÞ†�>�ÒÛ�G¯W÷ß~ÅÑæ\ôšy/²¸ùÎO?CXͼøÖïÆRöûƒCáOÏ1·â|¤˜ÓSðþ§PS[[S›˜`^Ï^ç=SîéN%ëa~î½ã.EÉ*ŠÖ{y¦;·v;�(X§Ý4ƒú „‹·-ö؇Ý?ïêRÑÚíÂÏeÔ*Ýu�¿K-O›_öïfìÊ1”gÌÆ�w?†}‡ÚøñGî¿¿]Éêè✿`[qzЖ¡ëXÊÓ‘¦hÛ"÷iÇçÊjæÞ>‰mÆ6j¹q�ÎAËš5êÏvÈÉ"q 2VÍÅÈ&lÔo»aje�ªºF81^æH£rŒ8p°ý¾®N†öC¢_ FíÜ€S}ÇcÔ¾�8EåÖÈ/�KDÌŠ÷1¦—3ò�ú ™PÃîÞhmiÅöŸ¾…ŸC#Îä4uÈf„v6BYuR³QÁØ¥ãF C2CL9‡ ŒF= -8œNتl4šz"Ȳ ªÇ(öV¦°³h… ŠÆ‘­šNf„¥¶÷‚£—l)7ª±§ò.õâ©p³swb¸«&„õ‡qãFá­—Ÿe¬V¢4$�†¹^9z‡�Áؾî°:ptôEZŽYh$t¨6%Î&ln]=®ÿN{ºÓãýO¾ÂØŸîX·n=u3ðøm7"*öˆâ5YÆ�k8á�‹Ê+{½¬O(Xw ŸM;…Y3îD:••&6N˜8z0|úaØÁ³ožƒ¤ÓÇÑ“ÊJgGkl ÜpfQ16ü´z4ÚræùI#‡ÐãÈ—ël½Ï๞Æî]û!za7{K%vmHWTYaåÚõ˜yÝu8¹›1O “LHc0fnum² «P\Z„ cî¹á¾ØN'‹AD¦KÍÎÁÂ{gbå–hdÐK¶„¼Fáu Øw�„[®©¬B:½™]ݽÖk0‚=zñý%¨£•-áìLôõQobÁx©ÖŒ§[K=BŸ‡ 1‡qh k¯Ý{È—T¡ˆY§Õ…ÉAŒËš•| ?oÝKT'_蛘£ÜÈt‚»íªÞH+Kæ�QäO|�œ–†q“‡a×ö8Ü8a•»‡é¥ê…dzi‹Ú”qXË ƒ\XZkz™ZÓ‘¤Wï`dp? ±‰·îÜKäL?’p¾·£`ˆî½‘ªd%Ë‚]ξôDž ÿØ]H^ÿì^„w¨0·&´³¿?VjKè o‚3gsaAG<Ãû­²iëC(hø"@ù�xåÁ!a01q׫×VT*ß%ÕÅ0k4ƒ½…ƒò[˜E-È{>©“¤óò(g.ü§¶O&¤j‘ya®îŸ‘gÿ|Ód冞Œ #IUv§>Ê çþ ³£zv²~6ìg…Iå$ÿ?¬ Ó>ë�_Œ‰”~–ÍŠªØ”çÙ¶´fˆ—¯ËÆFú_ „TåªZ¦ô©ô…š_Æ›ôKKäÞòÊE—{U!¹(rÕ÷/åJ’ëÒgô*Î0ePpž²‘üVÎÎe•¶’¿ã»Q7YrM…혇å\v’1AbK(écYS¢Úi¯ô…:ÏÔºi²*‡r] …IŒÃµuÕn&u-<’—Ÿ‹2àŸ—p&açbáj¯uǃµ�VU’œ�ñþ·bú=�3ÆéµØ¸þÄïý !¾¸¸9 ©6öd`$ª­ƒ'²i™vêD ÈÑJQŸÞ£M°p ÀC�MÄ—Ÿ¼‰kzãýŸ�`ÔÄ[Ön�A˜Ñ‡�Äâ—MáM«°   ÜFhɇy_|ø.&]s£R—¯W¬ÂÙä"xzCßȜ։H:~ C†¡W°Zh²yËôèáË ïeðôö¡Õ|^yw¦Ž‰ÀÄqãØ7 ï‰~a½•2��g Š@T1X|N>®öÊùŽÿþjÊUµ}2¶TÁ‰zî�|k…L2–…iøw'aš:ÎãssêO©ÚÒe‹1 ïÆrÉåK5ÐK_h)éâytB[˜Ð˜ŽmÒ^ïxìåÆÍDz!V­H ’˜wÝ}JQ®þ'&-ã«ÖOègg´UÍÓÕwhÏ!ÈË©ÂꟖ „”þcüè½ ?Ÿ¾¸óÍi1t4n¿eAWE\ôš¬� ¯Âyõ¯LQ£%«<ó`Ì^DÅÄàxR:î¿c¦Ï¹+?û#G´IQ°JZõÝZzKD*Ç‹—¼ŒÇx4„ŠV[ŸEíÅÌw*×®Ô¿þäcåó¿ô×è�O–~‚î{à?NÑ*ã·jh[¬iéiuó¬]“d ¸Üԫ›žƒªïø…Ÿîð|•¶IÝ%uU?•g¼˜ @)¨ÿþÌõ°�¿¤,ºÖYãÕþ»¤Âþ�™£)üÞºm¶oßAä—JÆVs†iMj¨T½�ÊR ,£7›©�?Þd!¦äÄ"Ç-g—-†ð¸–4 ´wtB@ø\5ûaœ.ÑëRÁ*M•÷œštRiuŸÛïGÖãcÃÞ3øæÅ¹ä¥�`Ð܇Pœ•†X çæ£jáíáJå«>Büzò4””×£ÞÐGŒ§ÔÛÖÿ€¤3Ç0,7¾JËG›ºšSÚ|ÝU®ÊWæò¹}¢Jg´eu”ÉÈ5¹OêÒ��ù-IÓ’ïGÊ-„?¼záÓçÝ'tN[VSn•Þtªé5é?¯†ã�m!xÆp/gùëX±Œ >ûÍwßÃt*X…¯²¢!ª¿—òœè‘sã=èÇxºº£j½¥nê~WŽ…®J;µ÷¨ò¹žƒ—.Ø tõ.ä9R–6i÷rM}ž|w…%eHyÚúJÝ$©u�ë’Tű–®jë¡¶S½O¹éÜ?•&kÛ-—ŠKŠá@ŽšÔ|ò[ö^ñÜî8ž€) � ã>Ú•È*q„>õƒ~l&üÀCsÑD^½ÇÁÅ0{lvm„>åvåô6+¯5T¬Gã"Ñwvü¶ -5E(Ÿ:-�ØýÓ„înB*½žn¹e>ªíÂÖ´$|ó1†íIT«Õíï„^•�¤cä�ÇE]pïѸCxôáùس¿�Ö\�á"'†Ž:zÐí?°Ž)öÊØ’+\‹'>y‘;»YÞ¥:&”q;´mNv¿„ÎsªãC¬‡ˆÞÜw4¡T‡(õ.É#c…Ïöéî>Yh�$©·¬ƒ2îUZ¡¶G¾ÛÆ1ÛCºT‘›�q�.ørébÜyŸpøm©ïûß#æT"ôé(IÊz3|ø0ås×sÖÃ’+c§:šRáJøu£ìk0C ž«i¾¨7k×Ç‚l8UÕáx+p(€q ‹s�wû,d7èa*‹Œ!t™Ç([zÊ2F§aV­Ý //w{˜ãÁAµx%²†òg”TÕPñi€ÑT(Y3U+ @m�' òP,Ì_<9ß=}qªÎžž°¤§c}V:‚ì܃< × öEC}5222à@¸nè;#ØÏ ¹uÍØŸš„‘³ïA|l"‚ú…akªJ³±~ͤž8 gÆ&··4G«� cÄ:Â…0ÆGÒ¡çèȾpF|yÆ&¦R³MžlÚÚJ0{=ŸÞ«¾TúöbÿvX;À|øPûÖbMì/Š<*?;ï|¹v„’õqiF5 šHØ ­Ì”¸™¹EèFÃ&[[8½ŠˆLQT^‹£‘û±vm.®8˜Èµ0&TïÏ[wCoÒhì?\Ãõ›JMo÷F ½4'N‡£‡ãáìm†ÔºjÂ$ÐKµ±8Ñgò0iÌüºç JG2Þh3†cëo¿Ñ£·I'·PyëŽÀ~Г±ØÃ›ëé_!q{•Øíyìksk;Å#ØÁՙŭ¼îˆÔê TèÛcQ3mÍ,�_RJ/áB̼aÊ©”®£7è~†H$Z!ÆŒL#*=üðËf8›ÁÃ…JCzöZ±Ê U­×l�£ AæßBÈ\Â7P‰àƒ«®¹ŽÐÈ¿ ùÄQX²7^;ž4Œ|ïŸèË�Üñ˜HXÒRDÒœ»Äñ]+°zù·HOO…=ã¢hÓÏ6àå_ÄO?þ€ZÔxôâ¢ÕÍÔÙ€Òu»,úêFC×õîžSûD”y=­X“tyÿj.wz(ÌLÝÁ}¶êýêæ_­¢¬$ƒ£¼�N ø]Ð5áU‚¤½¦ôѹX§Â$è/z>¼?ûŸIé/õ�X.Ó×ó©ºiŽM ­Ä"Á¾¨I=ícåG¸ nzHl|ZkâF&OUFcØh)¬ãûFPpÑk†� ·¡ [Ò9æÑGT^ó+:üS7MN_öOy‡j™2w¤Žë¡þ–qÐ�q*åe½ój¸Û¼{Ï«—v'}×1å䆂ÉÝͶã¥NçbK>ä.+QÉêÈMù¾½ûá<øjìOÊ…YÎ6ìÞ‰)c¦Á¤àüç"dîw±Å;/½ˆÐ^ð÷ &h…ª³»‘}h+òªŒ0� ص?ýŒq£Çz|,Z6Ü�Ü< ØU%ˆŽŽVêøÐ½÷`ñ’e´XKGZV>¡?špÝ�sàN‹¶¤”T$�H@æ™41n“‰i+½TëAÏûDÁÛÙ–„ 7vRÓÒQG«º2|ÍdDn¸n"Faç¶ðì9¶(ìøõ;Z)ŽÄ—_G¥n ÜÃé) Ü:yðeõ×ãMê|V× {„Ö ý“$óA6�êüøwö�•‹K¹ ZËØFŸ+YŸÇ^š«4kñK+ñÍúgGŠ1ƒÚέZÿ&Œ½<(©£Ð"ÙДªËÔ�ö¼ÿñÛX¾r FM�½6â£w^ï²Ì®.~óýˆë‡>´Nþ3Ò‘ãÑèÚ6ÿT:¨ A.ö¼ïÖ¼…ðÞà 8¼Ó¬³¯‹?y�ð8CÛdz¦?„þç¼Wë›ÿåh,–ÿ4·Íe|¹,Ã:-õ Ý˜\xçåŸYûÃ�í7/þäUÓò×Ìz“Çà%Æê,=þÜÜ UâAfXõÕ.%[¡÷ÅFßÇ_B �c¨°½crÚ~ʶû|^gÏüßù¿N¼óÏw/¹1²ît‡v]rÁ¼AåÁµ÷j×5]|œ6ï•>–g«´Låó„¦I=:KëáGe3/I—²¶³rÿ*çÕþÔ® ÂstL2ÎTÞF— ¥c~]¿?xÿ#<òh›’J×õîž{jáSôqÁM7^O/Á³Tf¹ã‰§ŸFin>ÊÊ aMÚZÛT@!³>Nä1¾ãz5z¯ ° vúÅH&¿ûL³9ªëÐx"ߦ'�·5ÆéØ0³¶ÇGo=ƒ¬ì\|óÙ‡8ƒyw=BOR3*xJpèH ¡(U•±stÃ::¸Ðy*Ï͸o¾7›V~¿Ðþø†ÐsYô¦õt´Aq>½7¸ŽèÓ{%=í¡›hØH¤�š›áÁ<­ÆôH5‡©©©âÍ1›¡�<{„ÀÉî…¿ª^ÑÃÎMDQìœZX gzV ÷Å÷6âªA=ém¤³¦ íqõÞu°yö)š=ÂÊ|.kbCG´÷ vëÿ¸§³ ßzVfMxdÑS0ôñÇ‘õ?ÂŒBûÆd{#·4ÐH”Є/mNj\{û/•ÇUé•|Ë|Sï—ßíŠ? »Ð•‡¤:&µcW©X‡2¿eL‹rRQ‘fÄà ñŒz¾ûÜyÊ )Kõà�b Ï•e�ž06^NYQ›Â’ùRVüL) ó �¸—ЛWoX�³nͺUèãlCÑÆ8܇�·ß‰Þ¤QÿK}¾+óIè“|Dv žSù}©¯Ú6…Þ�ëmŸ)4« úWTS�\* XßÎ’¤Ÿ-A\âI$8»c"aWí8_ã{FÀîÇ/Ðrì¬7nCã�Ïã¹éô€bÌÈRÆ Œ�^KhW¬º1fŸ¾ýôu˜®û½í{ñPN"˜w ë3 àÇIƒÀu®*�~¤Bûýw^Á÷kÛÞ·6ã<…¸˜áÚSÊñíó&áÁGŸ¿àü¥œøÛ3Ïà½Åïâ¡{Æß_}[¶íÀ«¯½ŽrÆ«TÓ¢ïõêÓ½ù¹Ô$k‚2o¾Þ�†Û'”sŒœ'¼ÔòºÊ/ðÀº’2–4´CWí9OâT Nî�²™I9ÊHÊè伌Yu^ˆŒ®äà>«5cl&ß8-Ï?†’è'‘S]¦ä•ùP^U‚†7Þ„éÔkµ�À‹ã$¯¦Œ;ùèóŸálî�HMO!ÍoFáTÇЃôçœ3xº:ƒj =¥ÏTG)Hö¯Ú�¸Dúõ„%a5%Nw¦�¼J‹Û³5ÓhÇ>½ Ç[Þ„wÿù î4‹Áƒ+îFXZ4JLÂnÇdP1;Ó%A6ÈIφ£‡3†�‰ÒÂ"˜•$ ˆëCemö$”…–ºZ$�§°µ´¡¼‹žÁ„kv¤wr-¯¯_û3Ì<àÕ3~µÅ¨ùfš7êcà„ið �«g(¸·�?`lj‚#ôÎö÷õ'¦ßûhû£¤B_¯DzzÁïF1—RÞÿ¸àÎ:åHL4¾øøC|B¿6‹>¤ü,iic“ý\¬é>Ÿ‚Pºä¿ý�×±bývb—gàŽ»ïÃý÷Þ­(Yå†ØØƒT°i/Je…�‹²ÌåÇßÚÌŸ}þÖýð5ÆÿüÉV+÷,ýàmlY¿Š Æhd܆Ÿ÷Ç+ç÷m^�_V‡ˆñS1wÞííå ”Ç?ÿù6Ö¯[‡×^y7R8„°Æ—’V|³”Ôý0rÌÄK¹í²ójûD]ÜÔ…N;‰dÔÝ "y%I~9– —¥“]yUa©�”­ æVò§Óâ)#1£ ÷r)I uÜ@\J’W-Gñ6:ÊG+€PÛ!„BÝ8iËWûQÎÙ>¸�l³v"ÕYßiûI[Ö•8Vë#ÄRÍî¾»‹=[m‹Z¾äÿ£ýÞÕ3å9²)Õ¾ ÉŸ”˜È8¸y+À�›Ÿëªˆ?t-##�ð¼Ëðü3/·—óÔœ«PU˜‰žãç 8"û"ã·ó'XÒÒ«¤ ¡}Á“±Rý°ý— èM¥i^^!™ó2¤æÖÁÙ„Š‹“ypuuƒy.c$åY£"7 Eè¯kàbe‰˜ãù´¸«ÁO.Âo»7ÂÁÖ×O›Ašö»Ç“(Ysr21÷Æ©H+ÚÞ4*5a2âO&c×Öuà4`X¿Æ­�F ‡SO#ŒV@vö®(,.¢2%O=ó<,íØ@-ƒ#s]ý­¥…ÿíý sJõÌï*Ntgí\»õsô è�ÿ~„j‰S²M»åjüã¥×°ô«÷àO+Ì«F�EXÀõÊ5_�0å{Ë®¶uýê±ó:+ú¢çUúsÑŒɰø£7°aÛç0bärnXî½ûaÜ1óò¬Á<û n 0Ó¯²âŠÐÚ3çd%þ¶m�<=K^Y�¨C±6x$úöV@ÚV’«#C¬6ÿÉ—§aÞŒ'/P²¾ýþ[0 Ô°ÁÃ)¨2ÂC‹æ0ŽŠ>ܼ­Çù. è3;÷DáÛ5KáêÝDoŽ!ˆ>²¿­JU‹V¾gÜ|=Ö¬XÞ¹Ž?d¼ug :xh?aˆàÑŸêXÄý­]»dŽ.|o½ý7¼mÐçO¾zÖˆÅÏmÇzôë;HyþWôNܼk+­îâªq“%kuÚ<þÌ;—¥d=~òyض²¯hÿWX—= 4Dh¾¤Îæ�rñ_øOå=e�zjß±Œ{UÙ¢¶AÛOêuÄt5/¢¹ÿ�JÖïV.W‹¹¬ïXÆ >E�ëÖ÷ßÀó¾Ž ¯5Ï­?Lé ÑR_‹isoÁàñWá‡W…�×ì& ®9tFzÕ ›Ð“ÔŽ†ƒ¹ðµå^]‰âÚ&ôîáBhE_zÁÑÃÓ@†4Ž^üù ¼ûâBæMA+÷òA ¡q˜ð…åµ5ˆgœ¶åôŽÛÉ:I¨ÁS8–x Dc¤÷�*ècajDÈ3zQ4У™�À6èÙ“ÞþôŠ9‚¬ld–Î�!�ƒ{>­|±}Í×Ò?;víÄ-3¯Aƒu0òNì'b=¸Æ0NÏ€�­1¼§NÇÀá£qö½·àÿÙOH£P;iñ3p¤"ÖÔÂщ™èãm�ÔÆÇ£Ô}ÃPy¼›Š®"Bù8v îöi­C …�¯öj§ Ú½b…ý¶TæêJê8Qyc5�J»Túª¥5’G;ÖÔ{º*KöÙB§;–£Þ{¹ß¹6Öȵ±C?ÂNª©™Ð‰!¯|€åì#*ÌmMðÉW+)Ð ¦Çñ1Ü:ëVèUT1Î-FŽÄð!mÆ j[µóE¥åR¶Ú'êsdnvä…´óUòéÚkH™5Œ¥(©96J)Wú§]™­\9ÿŸ<»c-=�Ü{¶\W“ì‘TÙ‡´[ûìŽíTï),,T�œœÚŸµvȵH%\µµQ#÷ªSÐJî[n¿O‘•nû´q5B¬0ç- iÇ� Œ£ÝàŒOåÒÜ›ïC�ªRúâCØe$#ïòìæÖ˜Â˜�jºï±9¸ÿ®PšW†�ÛÄè9�|–;š›�aÁð^ú÷CTTJÉСÃÔÛ.ù[”¬#÷â±EÝWšÆÆˆõˆK~–®öíÛÇ=A$Þ¡ÒÀ�TJHh��.@&!Å/WÉ*Ï’÷^Õ— x"^iÙ‘®¶tvNÆ™öùò[’öœr‚ÿ䚬okO‚ó»/`òÏ(ë˜:VeŒšPSDd=™cr~Ç]³àMe–$•>uœêùh*´$ ¦÷°¤É£!+‡†íV.È++%¢�ajõ©à d\ÎBœÞ¼ÿÜY&ÕƒS•­Ê9I?ô…a©‰ç)Wå|�³ ²©ôoèá‹”Tz=r-ÊÊ«¤Ñ² 6l�Ä›sGÁ")Ó碀òŸyKV¡W/ÜuÏ�(Î>‹À4k dêÏôÔs±Ð‡q%½/³Ë(OÒ'B‘ʳ3 §ß€ÓY¥T¬Ã…ž§#{úp�H…!e—½ÂúãtR1�‡JÑ#0µÅˆ9“ND‰2Æ ï‡Ð¡½Q’Ÿ…ŠÒZRx6/�=ñ,üh¨’ÊH¤ïÜJ£"º‚8bâØØu,‹Î¾�Œ¥Ù¢/è7µÂ‹Yyj¬“&+Iï…çÐÊëøq�ò;Ž0ºµ-¨vÜ\"íF¯žƒ‘OgªáÃéP` kA�ðÀ®‘T Úú»–¼@)×AŒž4 Ï=ù c`8+^À{"é}kj€‰ƒz!.=O?t7~ܼ§Âpò¤ÉHMNE¿ðpžÛ{lÝIoYG<^pºÜ«¾FQ’=ü -ÝQOåz=½K ô›?×)Éɰ&lyrz:¡•�"õT ö ÅÜkG`Û¡4zÞõ"¬mš œ ñàôj©XM!ì®#œ]Üà"øÊ-ƌ͑Gq,�ãÂÙ ¾�ƒQKší¡-„�¶Ç»Ö~`Œ÷“gs[\‡ù¤uIÉÔM× .–°ÂnÞT´âõú¦6ŒO€�¿ü Ü~+•¤>Œ%KvBÇD…�×l­MNÌɇ ˜kÌðÑS�‘œ€*¾ŸIÃC°ãp1e—ÆDu°¢¼Ä7¯^Ê‚¾°¡lTMËê q;åš]¥;{ $ïÄØÀS¯»'sêÑ'È[ø®]\\D„_8•T«$ÇQç€*Í_ýàs$œ: 7s ¾û}(¤CIê‘ ³¦�ø¬\N0 ð C åšÙI©°u2BNƒ=ãÍÎÀÎÝÑŒ3ì�7ÿù¦M¿žP¶HIË€½™ò ?7# ׎}}c̹ý!¥ -ôS§‰›Îæ¼Mç»aC‡3Ñå¯: æI…îê�ww–ÿJŸ%«”)º Ž¼‚ú,Õp­³ëj>í·ÐZ]4[›ç_qlðÓ¿âAÿ©ÏÈå‚%©ß ÁçUÑÕÓƒV#xý±X;¸Èùr¢ˆ»ý„)×Ñ{Ë�/X„ ëÖÂÃݽý^wwÏöc9�—\¹ 5™gMí>oë8ë¶öëýûÂ�7QÐhaO¿åüÆäš=ÿôéƒIS¯# ¨‡r¾œ�‡vïF5ñïÇ^5¹½ �š={¶ò{ßÞhÅ“ÕÉɱýzwÂ#À‡Ö0ÿÊÔ�™¦ô‰úLÈšÊRQÅ«¿FÆãw‘�ù;™ûQ0ñòU²ÊÄiÈL?ïwÆc·£ä½WË ¼¼Måþ¶>nAÉŽm´)i=Z§§gç¼ð²n¦²Â\”æÀ·÷ïJ¤ s]x&�u“$ípÐ¼Ó sê>#„M6 Yg• ´B³uà¦JK¤Íî _PÊWÛ¯-MòJ߯^Žº˜(4Ü[^¹ËTê£+¿Ü+ç;»¦-»«cõÈ;³xõ7�þ¨"¤¡$ù–:iß[Wåu¼öé§Ÿã³O¿Àµ×]£0¥jŸÈ»UŸaÌq¯žïxÿý-åv|§/¿ö†Ôýƒ/¿ÁX*äÉ Raðg$[BŽøzÓZ�ßjZýí7p¥Õ”M@8¾ølò¬¾èx,cs¾Å@' PL&ÀžÌM19g¹ˆ›‘Iðq…^“!ax=ÐJ˜ô˜”3ƺÓ°ál)ôœIÏÆÒ’²ÑöŒƒ ±4llÝ·æ´® ï7ööv´Èn¦W¬™ÒfGþîA†gIÒ.GÆBheŽA£®B2!o K+YæI¸¥ÆñÈBA½9ã>¹áàÁC´æ/ǘñ£OÄ„kw³·‚•‹7ƒÈ'b7Ÿ¾žnJyj»/ö½ŸWo/¯‹eû�¹.´K潌c™ûêüW+(¿ec&ß2÷ÿ•i­ŠÆæ(ÎBrJ úŒ ÀÓ�^™:Èœ2:ÊÔkñW¦ºæmá‡Ò86œ ¤+ý´�VÒT²:Ù»aé·/áýÏ_†-77µ-Üd˜3¦Ñ”7Ñ3°/¼\CÉÀ»´Ð#ò¹œÔ¶ñ%ìÈ»âÉðût9eÉ=œ§¶VN„ÝŠ†1a‚†ô…ðÐËSx…��ÑW•7Ä©¯:u\¡ù—[/õ>3C@>’îžýÜœ=‘�’Äx.ùè×»�r^Þ�úQNðßÒo^ÆÒåÇu“æ+§®b|g'oõ²ò½?j?¡� çKcØEfî1|ýí¯ðæÆ¼¼¤¿íÚ†Ÿ·|��ÞX�—^x_~´³®½óozô¼r䇗§?ç—ß1“ÔQ]ç"÷nFԾ͌Ýs>�'÷dQ8°þ—ŸX^òqm¼VDz.÷÷×ß¿Go㶸¬²Nªs]¾Ï’HîIÒÚŸVcx¿)xý­X±rmãÕ—V÷3gÌ�‘�½~3Ú^^xƒ1_‡OdüÝt¯mCÒ¢s}¼÷± ˜}c[Ù—Û®ÿÝ×½>IxSá�„†Í—Ï• %Ý«A×¹Úxœ8Ììœ_캄®¯ªtBÖ1ùH»µûŸ®ïþ﹪´“m“ïÿ´TZQ„ºú˜™´­«2&Uºx%ë*¼¹ì?,Ñšo4l´­Ú²G(¦q°69̼UÙÃÉÜ�y!ôðbó“{ñnœŽÂ}J2"L¨¨h îÄ‹Dy …Uô|šYˆwaC±V�}QOÙ´ƒ£-£ž(Ì-„oè0üX=aƒ[© ´µ4Åð0/ôt7G�±=22³Q]WÁ}�==išèQÓÄ{]‘x"�±éµ�áWOÇUÜÇoàÚ'ÒÆÆx®þû¶aØ¢ÑT6bMM3--p‚^ª[ *rÕ$Xy0ž]Œv£µ©¦TœŽ™1›J¡H¤Œì ¿¤÷ýçˆ3g\Ø*ž;·W4¿ãAÂC„�Ðy¯U˃©ë§6ƒ cø©û]íþPÍ#cM;Þeük÷Ýj>ù–²Ü½ÔÆßp>˽mûÌQÐãG×óµ÷k�KiÌjVUÕ~ªŠÙ**ZÇͺ®ÇBàNáq=ØB®ŸÆf;°ú}Æ[´G\f&µ2u #1óïy/ÿoÓø~(�ÓÊj‘TŸ„>4b“ÔQŽ ç¤žÚ½ƒÌEµ¤ýÇ(ý.yO-Ê¡V¶bLY�‘Ç’¯ûdûÂW¡ßBÇuõ‹(‘$�$¹.ïV’Ü«Òù-ïIΩ×)åo¿¾lÙ×\'Æ è†ÙÊ9õÝÊ}Ò†¶vµ(ßò®$I›´õ¶àžT>r^dH’ze�†ßÄÁÙŸBqŒ5†y,•2m‚Âhìçð!¸qÚTÞ³•ñ‰+¿s÷Ñ|å5rýMð›6 nóï‡k½ YºiÕW¨¦wù‚SQ’Æ£PYV=ÜÿÀýt\„/ûÎÝÝM©ƒù5ùü‘äÉ>Bƒ”KIî]óÊ—R–•eúÃ[7üÄ™O…O=å¹ÅŠñö]÷=gŽûËM2Fzø¶�U)ç J=0Û£©\ªå:f‚üŒpt½x?ªs]dˆê‹O8JÙIž¢`‘ò;&õ5¿\We‘Z¾MòÉù†¬teÌ»¼÷\ S*cZä½UQ{Ø9#¹¬Ä´ð¾ð¨ªT÷zF1¼Êó ‘DõÅ_)sXkÔ!ûul{zzB>ÇŽQ)æJ”03ÄÄ'’VÛ#ël&in÷’&˜<~6ÓKºÚ˜ˆ “gšfÚÙ›zŽkKüh¾%ÚiRhn†òìb®µ„‡5çº ©šóá÷Ð�U…Ð76g×À�P§-ŒË:hÌd¬Øs­FÂ�^”–îv(*N‡­£Ã@ò×Ùǧ¸Ü°ª©P+.-%ll,HërÓÓ+Ÿ…zsGz¢–À†FK“¦]ƒz=#"œÕpY„äì®[–ô¤qûÑÉZeMæp´5A_×zR6ÀÊ0%Y©(l0çº×®‰™4ào1qÆŽM›©MĈ~A¤&Í8œZÍ5±)T9`gf9܇öG Ãöê‹B*¬N4µ ˜ðÉ…ä-,‹™HfX€Í§K‘ÒâÂØè„žÕoD_:”‘!,46ØùÃ`ÙÓ°ÊÕY娴-Ù¹y ‘¥�!á½°eÇ^¤å–bÔèaŒ‘ÚŒ&Æ>ïÛ?�±lÍQ@#Œ}ãqó´Ñ02·C,cuÂ�ñãéÄ•k'k*ñŒÑ'¢ze§Ö;ëç7Ô7Ønò AfF¶ì�EïÞô¾,¬a|Ø8œJÍ&4q4Ž�NEî_�iôTVSK%¼#èI|üt$ÎP!]P鋿ê4 ˆ^Ôg”Òø©”1~KéÜãh4,÷ïE.eƒÖ#†ŠV`q@IDAT"áD:] M´º0X²¼u†öä�,H/iShŸþ°åx9|2 ´“&Tnc¢z¢Ž°Ñôh>t`?—#€’v ó'JMÇÖÖÓÕÙgMÕ¾é¬.—{^ÝÐɳä#}-ºŽ›OUIÔqƒÛÝçèm1\øþÓ íòÜK±féî3»Ê·gï~|óÝJ Š_ÙDøÛ øö$c·ƒÌFhW·^ò5[²at¦‚RMñÇcˆI3¶ž8…¤$Áý¯ƒGñAxôŸWÓÔ”—2,4%´º“ØÍQGâÐ/0Õ´²�<œ ,ö=¼±a:fôð@¾] ¦VÀg ãÑú¼©Gœ£ce&¹Û¢7ጂéomi…lZ–Ù†PQjŠÞ6´ ÓǶ­ëaÉkfd}|½àéd‹³„G;rp½úïC#-gŠíDÂ>¤–¶2¦‚%\-ÌqôT2™“$Òê+ñäiøëåaÓŽ=„5IC4•F®bPB¨Ð×o "f Úü.¿û OÒð2õ¾Þ>]æýO¸(óUhžú‘¹«æˆð¡�±´„.tF³®t;Ž�Œ¤Ò' 7Ü:•Þ²á‰Åü’AŸ¼¾]>Nh‚(�$ÞŠV�¢ë¦®ÚSÝÐH´)n¾CCuµ©|TAcwêÐY­‚U›G”«ª‚U{^{< bL»‚õ–»n‚'×8�s뜚ïþÇï#\R#Ö}¿ ž» 붬 ·Œ&Œdìnà’“O’o1'œP^{ñDÞÍXS#ÔÛÏû¾˜‚õ¼ÌüáEa—µ�=�G.ô’ñ¤*ŸñgÜI{®¤’õèñ(lݹWjH’Eð¸¤9˜4Óæ?†q4ª:…¼½�ðéQˆOˆ¦àªwÜþ ãûœ¯|_øÄƒeaìÆ»£ É�eyRÙÜ1Éø�5RèÈǑǔ˷̟ÌÍÝ@ Â<þ§`íØa—ñ[<|ÚŒì~ë*Fæ©x^uä�.—/ÒõŒ?zNhö¥kݭÿê9Ý­Ï•Ì×�¶ÉÜÞN«¸’uÐU–Ov�1²ø|ÅÀ‹B`Ù]É$ãH„%ö _l7$–y¢îã´Ï’ñ¯KÑÕÙ¼HI:©Ä;•2DÉ*|gG%ëAÆÁú¨‹&>pï�øô“%0µ´Ä Ï=�k¦Nź3™˜LOƒôº&d2ÞZ(¨�¥8q:‹qÂp&-'3¾q˜¢T(-É¥™}<ßS½bI8�Á"�Cáj%ùqýæJò$™Šqc —Ši˜doïÈ�§¨0+¤P³šBÍ*˜Ó°0»‡vñÚØ‰×Ã:âZŒð€WŸ7¶…[Ä@2Ëÿzåô&2kÁäáa|¶'㿦#—Šá½�q�µC=#Z)o1  $yîÑcÆÀˆp¦1ÜÎyémxûù¢æl:œl©�Öo�- »L)Tw âMUF,ê3¬˜�{"tM:~ é§b¸Fº ?+ëéiSÎ8oéÕ÷áGâ`t‰ÕŸ¾‡V3Œ›r æ�é‹)Czâí%Ÿ`Ó®]ˆIHÆÓ aú”éŒ?@ãTzϘÙ+e«ré‹6>ðV¥Ý�Ñ#¡=Z©z�&²…wàžDîWúŠóZÚ¯~$Ÿö¼VŽ£^S¯«²�Žr )K’Ô£Mòµò[þ‰’µo߸¹¹¶Ÿëx ÷Ë3$ �Q 5t»+õ`[Ôö�¹�£§r¬Ò»‹ m2cXIcÇ�ÁbÂyû�‡ŽãçUs,½_%½¿ø¨#\ðà!càA$™ÇÝCos¼úÒ?¨”e\Î�p WO‘I@C„/—ü;W¾Eþy‘R¼ì?ÕñÔñymåµ ñà`m˜£¸¦ õ«¬¹èê«9ÔE˜» Jkt ÓÙFɆAGf°1³D{mZ©ÔÄj ôÖ¡¡ÇŒò´­ðeÊ+ŽyƒJ Þ…²oMJ‰C)�ÑÙ;™…Í$V;¡¶(5”%nle4+Ñ2!#¹ûx£’c³>£[µ;q‚@˜– /9g(q\Y·©ÛØÐfîB˜’80…ªá1‡žê™cëž}GpèH< KÊ™ƒÔ„óïf‚œ•ˆž4 vž]Ø¥èõèa×þ£´O:`k¢‡¤SIJ“™•Cзîì×ôÍ„ðÔN¿]=¼]è£M�[€# §aÎ+ÑCBN*çÃIÖî†zÝ–ŽwÝ�£ š°¥1hFÀf"þtü'xSÅ€4ctÈ5fL ¹F;I®ª`ŽÑÎ;à.¨¯J£´t(Ré#<�š __/œJˆG sÄÎÌM‡uKS�O[“á.C *‚MdÊ 75B«¦)”iN1´TT9 �-˜£Ugè‡t³ã~«*PF ÖÌÂéùõps±%h,¶ï�eßx?£P�ÐÄ(Q´·àPb.ÛDŸ¤¿ù7¬@ �Væ+'Á«¸ª"üà鄞—RÞ^^¾°wõ ¡¬9ŒÜý´“¾G» E£˜6—;•Dú—2‚ÑûFÌć&¶¨`„ogøx˜8zÂ\·•é ‘˜�€¶ÝÑ8¯# 4¥Å°&±iÒè`øùP�ä€,*0ÊØŒcD~Ü1ìØ±:¼–ýe´L°eãfFõ:2ušÊyÏ–5éP2;˜Q´xLxŽ Í‘˜Y†‘#�—žŽz‚Õííæpô Á‰$†nm=¬0vÆ5¼ç]Ùgêðu6¤ylÅ*äò¡”tSbHZ Êêø:ÒK?(¶„æпaçú¯ÿºÿM¿ÿ¿— ¾Ø‹‘Áˆ­SÎöR ÀK§iììSÈÆùîчAÍBÔ¾úBßX‡””ddr�op„²»ƒAd7: f,¹õAø…ü¨h¶ç‡¯>ƒ#L÷í#+ŠyË´›‹˜ ñ ^zk5Ìl{AÖãL’¶ÜhŒKVÁвÁ—� ¡³>Œ¹ `Á\ IdT–2 |ôedáåf¢œ ѪòZØ2?�o@£Ö²±c×a,¦1ýÕ×_3êÕöï¦l™' !õÀvü“NcÅ•Šö̵QNÐ!=ö$®œÓ;©•sÓNðMŠ>ûÀ�Jn~sHäшœ8Ðß.;Ç€uɪ9d_Ó«ß…òÂ6ø†˜Áßm >xõ‡slÙ;A-¹cY]{y™"õq©Ï»ì,·$ÇöãûÍãšËoGCw.‹\FižPæ9Œüâ“øzã[Œ2ñGj\ n¾æ&2jë±ÿNæ,ßuÎö^èŸjß�EG©îó«1�“ýK)G�¡d÷qìÜþ&ξ Ž½Žž+¦ýeÀj��<¨,Í|ÅR¤ïç´fÑ5—ÿQßß\ýoÜuk¯ýñô³½¶À“|žRâì@Ì~iTe¥?ßþÏœ¹þš`‘¦�>н!.6©Ø_¿¡P½o¥îÿÔ˜¡ylr,ªM©ų̀ëô—3•vJ€uë†p×Cï] ñ¾sÓ�ðöDFJŽ1_uZv.¾ùú;e�3\¶cÓzFŽvaÓÎ=”·|á#"ñøS�b1‰Z!œ�o[÷^|çcb…-ÐjkD9£cžþ9æ*c”NIÖ~·Ž‘åhf$GCM&Ïœ�yKW"áø.¼óüÓ˜4i #Q9Ãh?’¤�tM`jkŒùó`߯ÏQÓÀSãè¬+¤Ó°•v¬§³ZýÕÈDrÞ>ÃásJóŠsrïÁ#;>ÚågHZ¬D.ÁÎ&’n¦PêÓÁцÎI-43vô©^Çê§–#.91—¡¥�=ŠèÐw¤MîDϳ.�ÿ‚ ULIpd×^¸ZQÚ˜ûkÕ"ÖªeŠH:óRò8=PRÕ„e &Q½¤�Œ$©¬©Í”¯k3ƒ‡»1å’u˜6‹íîÀl:ðõ85> eU�øêÛ-˜@@ªEÛùéè 3òž›ç¡€9ú™üàÆOÑÒcÂH¤f¬,L… �²rO×Ï\óíë•k%shÍ{BãŸõU�ãÊÂÁlÍ–šbÔ|ü>ïµ^`ð¬ ÎñCîÃOæ!,ÎÂæÍ»áH’ØŠ›ïêÛbÑ�Ë062÷Þq?ÊS÷*Ëíƒ8_ãvªMvŠ6tvTº¹®oŸµÊðY¾ëA^¶€rÒq˜>i š˜Ç¯“’•õ¹h2sÂ~ÚFNt´wvuáþ¼ŽüÜ\<ÿ"e‹Û´iKÝŒxÊ.G3¿\XÐïç4=ßs¨È¾Õ�\ ÅÊÖî·úê—Òî7lD`@_¿DOo^6Ž{·¢ø¶û�F¶Ã0Ú¢•uX¹|)Š_øæ~÷-^{çŒ!UOW—ÑgéT¸ zƒÿ ×<«´*Š÷ØPËñ¸#øö£—pŒ~ŒÎ:-ø»xP©ƒóšË1‰ó$™ç*š¾YOóùWÿk¢Ì¨3å©+]¼ðÖ›ˆ::Õ f)ÕΟ»ô¬gOJ¿"ESF[~K}uí=Ð>yH~*ã�øzäÞQŸ]å�ŸÿSsªõ¨ó@äH[Uߟ²àoêX¯î+sÜLÔ¸ûaä×o�5÷߇º±ã_zofRZ´–y´Ý­ñÀí× �©Ÿj¨‚0"lÚëà51/7Ç/gVíHM>Åœ¦®¨oébŸ=–Ñ�mèÎ80z.¨»V†ŠD§Ks“…fó‹ÆŽE£› ÁÙÞÕ#Š!ô >!•×ulH„™õuM<u”Ê÷FL\: H*:ŸªH;y ã1·!';›ä'k’òë�úRx“Ì:aÊ$˜´]¿î# ÏLC±…¦’Tµ•~… Fó&zÁùŠ«°#&³B±fË^,¿nâN$¸3€Çï¨á¾Ø´…ítqÁöýqáuè e0>ØlŽA%k³3R`gA'œ®ûúNt1"¼•¶‡5}k:$yœ¢?-:ا˜Î jÔXdçå‘Pf†Ñ¡ŽøjÝØÛ å1;Ú[#‹÷Bð°@Úi\nƒ×.¢$­ì:�Õk6 G[�2¸˜59~~ñçP,ò˜6`I[¥Æè>S€\;OLB¦3à"¨£G-,Ãó<1$Ö[7¡‹ Ý·FVhK>†:úkÈС¥MbW\�ñì�³°sϤ×é�¸Åõt=«Å”uÖ=Ø¿g?ìܼeºaN¦8Ç4þ]½Fe‹ÂülÚ:3p„¾Ê†ºF^+ª Ðn±¢ªÕ!ÚMŒz�=gJJy�ôh㥣ºUåtõ™ì}–�ÉýÌ’ÉèÒ3Ævèf”rèÒq‚籡¡Šà¸¬tÛé_ôFmÁ¤s\5`ôkQ“>ë)„Õ°ªyïøÛ(ÏJ|A-ý¦¦ð¢o×)å�(bÎ×nÚB6Z••í‘”›E…\Ýœ�I›fÊÜ«™ƒ»=� p´4Rd‚kjÚ0sîTlü~¯倗_‡�›¶!„¯ÎX·é0Ir°2ÖÁ¢Ýݼ4ÁKþ. «�ææ‘4ögùãÏÀÿ÷‘¬ç»[ÞyÖÎ^ŠL°æº6¶ö ‹ÄD†Žg~üZ½¼1g”/ê^y–WÌ…ñÆ�u»¾ýÚpóÖ-ˆcé¤½ß 3#ž’š³‘ŸO¹8¾/[1(À*ûÆh6a�1ü‹rC빸».$äÕ"lÄHÀºbÅÜyç½JÓ,É&ñc.ÉEñGa#L« ¯Îrñʳ$*Î×ÙV"0…Í r*û_>U™DƒSœ,ªÑSb©QaÂ2æ˜8Àˆã´]hDçᅢHæ>J‘öJÔ(Z5Úv°mÃ"ÇbÚ‹ûû¬åb� SN ¬¡YWeƒœoµ~1/dR¯·ú’mÕ—\7¹>Â*•"ÈzÑ“,eÝ‹-RŸé¢–òRÙ°r^TÆ­Ü'²ßK)r ²ÓóZÒOk _=©I'±üæ(çNÆe'böaíê�ðÆúMpµè ÓËI§O“5~ ×/½ö‚›P‘•L€Õ�C¯¬‘Dd«÷|áÄ™xž[llZ(Ûelã�‚ÖVxó¹6eòoÊjä’e–“Íü0yYX°âzxDÎĉ´˜ju :3k(þÙsO‘á—ÂH9#�s‰ æRý ¸S®�‡œ˜”¦ Ö8ÙhK}3|ž_޹´×ôhá“‚,;®”|‰¦RR||}<é r%žeÅ%ŰupÆñØ“'øjDcÓ‚c£¥ÏÖ¾[¿‘HHMÁÁØ X™j!Ÿ`ñªe‹Q[W…k®œ†]'²`anη.¬¼i2ÉÖ»}Õ�˜>}z¿ó©ÅÜÚ|ñÁ H¿÷¿Å:@ÓÿðE9”¨iÑŽEI¡HÇt rŒ5szÐ8öâ$ʇÇ_µQžµÈ}æo†ÆÑÖ®ô?[°/š¾t:�OaþäÛ±ëÀdÿµS2öV`•zói˜ß~ÿ�”yÑb^¥PÝ{š“-Nª9›Ñ èGY")—Òç(üü&}�ô/:Óæ¢¦º’ عšÛöÿ®¬ÇŽà‰'bT¥ê8é}øÎçáïÝK¼ê¿¾ü.*ÉgNÒCPAÖÞã’è¹^©5uÿ[ï@m¸Ðe££~!œLž8YÙÜÓÓ9¦¿àäL Zì[]w#®À8æzu¶AÙœ“xàÎqóògHâèRwÌ»|é…îzÀõå^•è�ßúIÄ”È÷ɧ€ÉûìW¢Á�UÎs$¦åÈ�6‘Î[Pæ1ò»àßÏŠäáùî3�]þêkï½Ö;?’º‹ýÕ†¹@ΙØÖÉ*û;C¹b-’õ¢¿ÛÖ×Wl¤l¬MÈ8_¾ oYÿÝY =®—d¤þ—AÉÇ*öGq”—=|8¦"”^{ý ¤¦œÂê·^AÁé:îôpåµËpçý¡²²·Ü÷8å,m͵RUeu9NÆ'AŸù�Ù>!ó•0Òc #Þš²â˜G¬ŽÒ†m @)©3ܬ�QZ�‹�_} =FvtHNT™sfLCÓw¸2 cÇ„<æmL¢3{ü„©°`* Ú­IÌ èÁ‹rz�Í­xø±Çà„”¸ƒ¨­¬ÄäÈaØHuœ’¢B”4jÃ�ŽËÙ´…=œìA£‡Ñ¬ô‡÷è¢�NÎ×>Y�Ôœ2ÊÏêaÉe>p¢–VO;Z™;†ùÕ,µ�7FÜ&ÑQkHyþ³6îX:WΞ�\FƇÇô©cèˆ 'JÜy�+\55.ö–hh§¼-Õ–¼�Í0v¤�GOŒ °FÃÊÊ9Ùv˜ÑQtX›ñܤd£¢8VVvÌk{ʹ{Ùìùð C*çiNœ»¬¥SýÖw>T›l™ÿO�;Ê}=”¾Pî'uŽ$QfšÛ¨c‹ ¥_¥^ÍÿÔûæ\Ÿmff¨®(FÌ‘]xûÓMXEéÓb¦:qá|'‰çpõ‡«ñù½ ©‰�—RU[b"ömøº”ˆÕcôM™–ŠÇÏFD ?ì(3mÈù™¦•9@©ÅCáë/?aþ¶dD°ýIɧñÈKï`!Óâ̘»€êH^øá‹wñíw?b÷ñ(bj…ü¼j‡x1Z¨ìwYå|]ÌySPãmÏî J(ãG_¼oÚ-%/�Ü=5Öøm¿^J»ç_Å÷G÷2âêv\·l%JV^ ýƒ»•î#aÃ’Äßëî{ÆÏ>€Œ˜�âvÂ,Fq[ÓÇe¿äFe=‘ßþ_/~ú ·ä5ÔRÌ|˜§ÒPÁgf|ÈDæBéF A¨¶nÅOiïtîºÄO(¾:µH´q/pù´b#ÉܦÌÁÞZøfí§ 49Êç¡Í­:xäÁG•ÍäÚkú ¥>y©}ƒ:n‹êˆçRj‘>DÖ‘û]s{o» óÛ|ÖíéóÉ6²žø¢ÄÖ“v©©Ôú”íúIòªÿɾdì–ñV”õLcöÀˆþFT“ÿzëdÄ'χªú`æàP§ÕÜÔ&éÏNéSö}ãTæí"Ac%¨½qìàaʬjQÚÞ£G„¢…Êj¾Þ~(n&�Ëÿ˜ãrÂxT0ª4‚ _%ÁÉ„äLÔötãDK7lC£�UP`h:\ÏÐŽ’¬F­¨STðåªCÝV§Cûà�œ óâ2„�…/…‚«Êð÷݇åî‚qÇw3°u¾Væ†ížTV¤œn]w7Æz;Ó†,ú™šŠSѨo…™‘,Ge—-–͉dÞÑ*EÉlÚ¢Ñ\M…JúÖ×W¡�`æä (¬)ä¾È+nfäg9>øá0ü}|„D|8�>vgä•´ü5G]#Ï�Ó`uv£ž€W,ûÓ;“áìʱs óÇ`ÎæC?‘SF—êuµÁƒã¯q;sË^~?¬lŒqÅÔQøì«5°m°§¦öîH²s‚.A9»Î4@³>zßW–è#tjijÃ�±mã!’‡Jö2/ij6årÝaÌúK«*)C«�ÚŽ÷Æú””¥ Å™,è˜QC †T³£rÆ�ciè`Ú.cÎ$þrûƒ(çr˜>#F§63}’Ùq“™«”d+wΪŠáÌ´_ú$m™›ê`Á•s9öš!‡ª“ ”6#íßûžé ܘÓÕ’óÐñÌ�ŽJ¦“Üí3ëJ0¶¹­Å°£ ±àŠ©7nC`n¡r»º¶µ!š~ç´4X1:=�sõ®À@æÊA‰\*Ü1¿«-ç€Ýí­TZ ¤·Ô‘ò¾å PI m0;Ô—å Ž>GS#ƒðýÖÈ;•ô‡”½æy·eôpqq‰W†hctk=Sh™¹p^ë +F|GÚŒkó0’ŠfÍ7ËÎdÂ�ÛL t…UNþZ“†dF�7ÒGŒÏ(T‡E¡„vYœµŽfg¢†D97’^¶¯ý §ŽÅÆõ_Ð^¡Z IM]:†¨¢:‡¡®í0#xÓ>r0î‚ ©l³î§22Q’W¤äë^¸r×íBÕK¦�¦$vr*mI¢#yÊÓƒÊ~€Ïˆ´­º°ùÇ-˜96 u­ ÌqÅü¼­ŒæNÅÜ«¯BØð Œ$y奾H™÷ŽçYJ.â´´Ó¸ýæ›<|pÿ�Ú‡\è§-ÏãoÅ*}©fÄ¿WÔèÿ mßÿoëÿ ²žçŠ ÀjC&Õ`EúÈ›îÆ§_~ oV&áàñØÜ®o¸}ï\ÝÙ×öμî°(Ë<2Btzº0eÎU˜0�úÓ|ÎWŽ~ó*2T<ûƇøþÇé�úÖ.d• €¬"ÏpØ{ï¾ûXÕãƒäBVu[õSÛb‰á¥‚¦âxДEÓ ’meß²�å¢åJî?µ¾¡~~øþ»¸bî•C]]1¼ r-_û¸òÆçXñ—œ)ç–£;Gƒþ%NQEr™Æ¨!z. —ŠÕ ­ÜûšEÓè¥ÝPw>àYsÛ�¾K}ò`U paÊ= :8åPå[Ú~(Ëd (ß¹ÕR€¢]”³j51�›oÃ;S¸ ÅEňˆˆPÚQ³ ¶!6Xuû]È#ÛÔ­�­›..ÚÊ’rY°ª×CÚÚµð¬nx›¶n¦áXŽ&³ù°®‚Óèaþ‹]Õ€½ü†�†vî h×”"`ü4LŸ9÷íEü™"2îÇ¢ŠíΪ¤Ä ó�jSÒ"ÆÜvdiG/»žòZðÞ¹ÖÌõ´¹¨ɰƒm™�”‹rq–�éæŒpÂΖÌ�aÿ“¨ˆÝ‰ÂDJZæ•A—²@ZÎÌ¿pâ \Ș7d�Ã~b‚ûJÔ55„]s4Р\´ ù”>ILMÆ Êby{x¡¨¸„€•?.¿ü œIMÄêwÞÇ„Ëf*̼ Çÿê² ¸:Àú«•ÿ\0ä3pàðA²&�#-ã%Hõ(ýl Ÿa–xøÖOÈÒÖÇúí/ãЉ ŒX(DˆÿXNRQ²{ªV,©ǯôµ2I”çPî]饨™LnûçÔVVàmýîÏñ£/¢8Cq©[qÍ‚eø‚‘í:Uâ\`EÆ¿;û‚Šæt¸yv¡ˆ¬È’Âò~¬nJBr9'û?mUÆ µì梉LÒPÖ“qÇ騥„ÖW(}Ö±ø“ØDùÁ«®˜Oö{4Ne‡¶q¥Èj°ãð¸rú­ƒ¶ÉÕÙ£`UWRÆ8žgqLÊ8ù[–—WßE¹?ö'>#~³j`•ròÔì>öt,Ï0"]Õ•m¸õ:æq¥-”’vZÆ•xéõ8?†ËÆ/T¶ù-ÞdbÐKü¹°±ô䞟PB94g¯À¾f¼üòót$ÂX’O¤À*E“W\·üœ«²òÏoÁÃ0‘6 ­R¬,í™{ YÉÌå¦Ó Ž]Ý]ˆŠ«€¬Îœ¤._y/|HHYMiË—ŸRž-¹†ý6U3çìHóŠÃýçÝ ú!ãŽJ²zûµÕŠÑÅÕyÀõ·2²£´¢#ˆh™h‰cHÒ7¨ áaFøŠl¦ûÏçF]_ç4×UÿS?eq¤‹C«¿m¡®óGö¶«¬RÛ2T²—€¬ÒWŠýò{ƒ\Ò¶ÜœLæ`´V›ù?ñ©Ú–òÜþ‘÷�:†©ùt/ä”gT�ψ<¦DʨcToÞ{?I>ÓN--CÕ¾•Oõ»\<¹ÏÄ^•r1ÄÙ§ÚuÿJeƒ¼É9¸P²§ô 2î«v�T½ÁÔÇŒmq`Ž9sçöí­�¶€ÐȾßçú’@’ß6ÚÄÃéÐ�?mrå2r4Ž;Ä|ª¦à«�Ž;)!wòÀ.ÌY~ í•L™1S©¶¼¼’²¹æ¸ûŽ[p,6GìÃöMßãtzƃÿÄ è¡¬m‰@ž£g�hf�WÞZ­DØ2ò#3§œR–LKÀ|z:ôùê!‡êUæ&FŠÂJó…5“™Ÿ—�†ê*XÛXaòäéˆ9¸Ÿ •hç\aâÒ[P’–„‘cÇQB±ë¿^C›ø$iË;QFë;SÙàLÍ(£‚½ ”G&Xìj£EÙÒ„†2Êñ‰¸‚Q¯=:úð#°èìâ _¿a(,-�›ƒ9rróIEcœÆ˜:f®¹z•@ê¹å0_x¸Ú1*À¹íé8­+FSU5˜�à-#I(¯ØÅ¨”îVæ©+,ƒ³•D{8Á„€êö“5”Gf4n]5ô,i£„ø2‡e ûÛ=8“‹Úé|/*'”¹M´óŠ pÅÂEˆšwUßeÎÎÈ@MUÝ6}ËÎõEž•þ÷¯úœ&{®ú4ÿ+/-„®ž!n}àf|þ SÃŒŒÆŒ™S0&j$sêc£¦%úhTT¯Œ¿¾‰Žõ6šj™'/OëYÃ�J:Ï~øÎ$' “,æT®ZKòj|I)ý採•”“ ż«–¢¾$�9ܘOÖ¨ vV&h¤d¢_@ sÁYq¾g€ÓùgÝU‰|ÊQ®ºá&جòÙ‡QB‡z ¯“�ŸŸfó/ú»Œ¹Cé ÛÁ–¿FÎé#pt!HÆg�­ˆM8‰ƒj´´´1›r¯ÿM¥‡D--N¨Yâv¯Åå$Ìõô†¯cÛ§«ûš@ðcʳ¯(ùkU?ƒÓNÿ®Ja} øùKiQU¢r˜�ó×·þë^ìo‰`½€UöãB}Öô…X¹ì.ädp^ȯ¤¬|’7JØßÕbî•óÏÙ¹çÔù£¬¨¤_Jeß:aÑø-XŽ‘—¯Â³Ï­Ã8‚�¡Á¸ŒòÚa!¡}u«à§º@!&1ݘŒ“âç’q[ŠÌOeìIpÙW¯„ô/੬#�Ö÷?6 "�Ø}Ò÷¨¾ILÝ>ú�Yéi`Ù¯ø�¬ òú$y¥N)òŸ¦6‹V*㢬jÐVò¯ŠÝ+$+ï%Œ´E|žnÎ6¸ù¹'ÑÙ\ϼ¿ŒB �ÀLÎ%ÇN¹œ$û|ÊËVàŠyó0&È ûcsñã÷?Á�rô hDîàÉ8øØ™Ø1‡“›?scÂsd¶WÃ{˜Nçu“Líh˜Z[chÕÔе5}þ5SæŒÕ,—ëwÃôØ~$:xÀ^§ÇÐ�Ò¯N‰p&ÈÛµ|íFÀÌÃÈØWƒ‘ד´]ƒ¸¸´èÛ!›îú°~Ü‘À{͉ò½m°&ñÞ‚ã×° ‚S>ÈÌ̇§oz¬¡ÕY�„Ü:˜¡’²·“¢CIdb~Pž˜NþÖk®$1ÈC3«Z»IÔ=�`?S”3x ‹×¤<ÿ4I¡Ž”1¶"‰ª�u“�ľ8ÂÏ™�yŒ>¤*„mÂ|m9ÇŠf;tè—*Ff~)2øÒ!hiie�„aÒí�ѪÛðîëpâ£w=oZË›@ é¢V†å gãÄ™<*NXØ,„%1ƒÑÃýacပ & ÿôNøùÔ“±–d«a”3ÎÉ-F8#W}ý|q*ñ8£ÁPÝØŠ[{ ›Ï‘Ž�r韩¨+§ �6š˜óuñ-SajÀãd”íñ“‰ÈÌʦ¯Æ�¶%ú™†kÚô)¸vÙ¤§e1Ê—‘¡^˜ho�az ðfzž€òrDðxäåJ[Ħ Xó+ßóŒtÁ wÖÛL[GG*R2ºíÌû>gÑ"FJŸÆ[w ,؇ijH¤qEƒÉ²(µ;–÷´'å +YB_ª£¥13êÐØÐˆ„¤tx¸#3‘Æ~TÛ¨@‰]Uµ­h&‘xzi–ÒËÖ&øç`rP |¨j•Êñ’¶Ö'—AÏÍUÎΨÕ1BÁc-÷a°ç>lù*̧�󲱈`„÷uwÜ÷ F™2?/ÙøvŒ\-&q XúS¦Šò²D˜‹ ‰cîhc.Û}›·ÒFÀü“7,]>§¨èÎ|¼ .i×G+ïY[´q¼ ò Eí²FÌæ¦0åsȦSÒ›½‡o%‡ I„3`sf0G¯Ü§Ž6æpaºI[/ÿßlÿÕEü�È|¬ýèÁ:é“d"dáÞþtåíébæ´ƒÿ•ÿYÏsQŒÍ­”5â7½‡øÍïÃ/ú—I¢ºéÁC™£a,¬C¢0fþb$ÄÇH3}„PÆÛƼÎÈÛÛðd[‡á]Öt[ÛÿâÌÚôý·Ø´þ[8™éà‡çn$«§û¿}çôNFŒ,8±vSô¸õ �PHÐEŸ Ú Èhu÷|àí)±ª|>|ˆÚüî}ÿ�ï‹:I£äRŒm©§×u¾=žý¿úÐõw®I]½íé†<Øb¨È–bÐȧü¶à1C5ÂQ–I‘í.¦²í…¬ê¾ÄèºØýIýKïùø\Y,Æ v¿UQ®5 Oµtå_p´¯8Qª_}¶®ní眆wªìCÕ!¦:�Hô±”e—rOI;Õ6«àª¦ÓIþ¨£/Žy[ùÇÀÂE1¥�*H+F·ú#_îÕx¶cÞ: k;å%u7QGt4óÐX•’|ü˜0º�J|ÐÙÑ…O¾üœ J± (+i¼��'zðÉ‘[5¯’S^r®¶‘ɶkÇ6Üvûí8�FGÊä©(mªÆX2Ïê² hR· –l3{N̯¤Á´üF´W3Uàp$ýø-µþÛ™3ÑyÆ£ nf(¡œ‡Uv2òÉârs§1±kÜõºaÃIG(5L#5�y!ÇF¢(| å]¦cåÌ©'þ‰|ž�ï<®§<°æÌ™‚’×_„1�ÒNª*ÓRaAƒÁ“Ì.ÿ`F 1ú±¼¬„€¨Z™£ lÏv4“|‚†ÔH²ùb8÷v!ó½2Id�In‹ö™�<ú(#&�™ì>�Œ±²¶+>xjœÉKÿ*çú·zN5ŠKoÙ¾†¿YM©¹ˆ9ñ=’2·Q~ºG‘Õ³°7„v£sG·"8Åd)W·Òñ¹s7öìŠç=P+“•ÌÓÙ]K3Ê]›;A¯Ûš5ë0cô*øc1eò$Ô´1§H'Œ°9VyŽ%|…üÒ$²S™�÷¶æ÷}ß´ùd|ÿlÉä7ÌNËKٻòuâ 2Ž£”‘ÅY^ž†•KîÁÜ©7Ö,ÌÁÊoy϶�¸S±”ìe�KnXk'¶É q Ç Ö�›�>X�ý—/XˆŒ¥�ä3Ý@ ÉIm�™ãpüX2NÆžÁS¿J)ÝÑt(ºö¯â¢‹ÃßÖÁ>¯¥±Ñ²wlZU®þü9¦k„±¥�²‘ ®*ê"ýª¹Ðþêñ¿?Ê>®`íW客x ìÉžL‡R¤ò·ô9B2’gή§»o“ä/ß‚NZ:&–UÀgþµxiÍjJ,!bÄè¾u4¿¼ÈüzãFõþ§:¡>?v㯹ƒ�¬®öX¥N4‡ÐÑü|Ã`:°¾!ƒX@Öq75‹êD2ìé©eŠþ}q/Àú¬BŠëB®•æ~þßeœÖtŠV~÷?¦þmQm#±Yı¦YzëÏ~3`QÖý{¶axD/( ¹¯ÿôwéÇ4YÐý÷¯þ¯š*@÷{ÜCéS5ǰ^{o‹»Æ¯}ô¬½åê4ðó,[˽!÷�Üò©YzwClfW%ŠUœ¯j¾DQ.�—Bhàœ@Î�¼ÄެMšõ÷ÿ®yŸÆÇ�`ú‡bæ@tî#Oʵ’~SοìóBö!óÈú…7ÀlÁRpì–ó—®oŒè–jÜñ�çÎzFœÝ½û7­ï·ä ûhõ+8¸w'ìÙE)¾ÍÈË/bnVÄ3J ;ç ¾þä Fx8!ØÇ ÅÙ8rì(šëYº`1òèl]ÿå‡�À¡¿A �†.$2¢tëîƒØñãzø22´©‡']ò¢FÀ²©�²ÀLGÂa6�2?Úú%•UÈ¢3Ûƒ°#™?œ¶R7£¬½˜âŠàa9íÚ)5u0§Ä\)åw;Ù?···hŠgTk),iÛFLžБgÙS¯8+ ‹ŠX�.å„Û0kæ\´v´ã‰'Ÿ¢Dñ·hfî±â²ø»ZRå…±¤Œ*éêj…�#ó¥R‚5˜i{K®˜1‰`\5‰–$3z#$È 3'„!œ€³eë)ìéO''‚¦ÍÌ9î@IIgFpØÃP§•)"´e”NÞ…Eœ+X顳¥û“³é 6Çè0'X0 ÜÑ£ñˆ sÅñÄ|ŠI°·¡³šNGOkNÅ»èä쪇�nFWhµ$l†–©3.›|ó±•áðÁªØÔcéu×1¢å›BÖõŒ Ëõ’hk–—•ÓIíÐw öEóþÕŒ—{íbçË;vlæ9/ÂS÷?ÿ ^[í’iߢ”ñ¸qãÉhÞ=_~g™œù¬HIÍMAU~%^NÊEïÃÉsgà‡ïÉIòj�ä’ÓéÁ§”)�tû_ñöê÷±{×6ÅÏSDE³Òêj43ß᦭ûpïßžb^[ÔÖ3^O"F�VdÌŒ hoþ‰d.J€’¸'‘”yt6{`õöûEâVÚrÕCó)Q‚œœl¶c>«_vme?×ÛçÊ\\æ,ê8/ß½{ vSæüGíX·ýô1ðù™2}Žæ¡ünßãc�PòÔí‚êÏ&Èzä8%E x¡®¦Ã##áL"ö¹Jïs|6aMl#{ÒÐŒbö+×@H>ój³°óx,+/{]ö¥¦(n6`ʬøRš7£Í•$ù”µiÃÇÑŠË›ü[2¿zêÛz0<À‘|�Fš­QRV�vªAŽî�@g*§0v±½›y5mI¢ GÒúo�M‰×¶ØCŒÆ´$0jÊ(a'.k#�ɱMí(¯nBÊþ ÈgŸÝÈèÕ¼’fd¤e£�V[%#WE©aïqFv×6À'0’}¦L‘ÚÙTÏu«á`Äy$Cæl¶ÐµAaU¬-JžÓ Çñ½±±ž`œ.nZv-´)»›š’�N.Ó2°RT´†y»TÏÁ±íñôÅY£±¢™R»'¨(ÑÈç­žj_ÌÇK;ēѤ®ôÉ5Òçæïäˆ÷ÀòC;áÄœ¯VLY0”’ha«þœê�Ø�QLÛŠ’¹Œ4�yÙb]065C8ñˆìRiŒŸŠíÛ¢B“%FŒŒ$¸�Í®íx,v3¦Vä °“ Ýp$�[B¹ëœš*D‡ø!�í‘Ì\´µµ¢’ê^­nŽÈ²€ß�"Ó=ë™Ï6aüè|µ²udt9:ª)× Tóü›3J˜ä¤)—ESÑi>6PBŸÁ$u MH<m+t1JZ»…×ÊV‘�6Ì�Ë|½$#4ñ&¬#9N×}2ºè‡b¯iuê:Œ8þnBmQï5}>jàVSTÀ­Œ®�:�Ò1¼¦þ8ÂHicÓ.bª ERÜŠ«¯Ä¶mÛyo�¼CÿmjÒqÚ>öŒR6&@.²Ëz¸õžû†r9þðudÎ$>=µO�þUЦ"�²àMÓŽ;ϦƒþÝØP‡|¦]°¦õkùdâ•qò�‚©�3Ìøê_n»ýæ4–R&G—¬ÇšŠœa"g�å7ã¹ä*C¯ù G’�õìÃ÷`ÂŒy [U­ÃßÛ‘ùV{ðÈ ï2?YV>ö2r™Ï„ƒ�««+µ÷3põµ‹ñÀ½÷¡Ž“€ Ê^åå�•AÝpJ)�ŠÝG‡(;¯âü»û®ÛñÒ¿A™˜ÎŒt=WCEm"yÛpô –�p®múO­G½Ž¤�Öx™QÕ¯<[g–Ÿ—ÑáΩá ZÕ‡œ®Œƒ.üUCiàšÿ7—JÇ#F•öbì_H‘ë `¢”þ˜z�”?~^ܩ֚ËÎ÷]œ/¸'�ËAο¼¤ÓÕtˆIGšUVˆÕÌ·Q²ñiÕ¨¢£Å™d€ -rr_ ¸Þ-7Q™HËþ¤“—¢yωƒLl`•—¹ÇUC\Yðó›8ª4'åš«¬âáåƒÆüx˜‘qüäÒPÚ4àÛ¸V•Œ¨£áÔD©0Ý®ìÞ·›“ËȃN ÏŸkÁÃçPTTJ£rDß2Í/rlÒvõZ½óÖk<ŸûáË|N¦ï½‚JKS¤�Ã(J|¤š ™r¼5ô EkÕ"”“÷ƒÔí{h4Œ¼G×¾ŠY‘dèºN@bÌQèéÑ�4³„E™ye-Hdôè2‹64hW¢ÍÀ¾žZpL®E$eÈòÉ„/'“oÙnã¨çßM&^ÇKO*Mµhi†§�œ]�µe ÚÆM†Ï¦/áÊhÖ6³±úØq4�Q3'…åï¦ZXÐIÕ¹b>,ò²8Ñr‚ÎâU"‹kéÕ‹èÄ¢AnÎÈÀˆñ¨§�/lù.N’¢¡ðõº�”KÛ̈ÚVLž4YóT úýæ'ÿŠy—õ—î]½™õÔ’‘\´är… )=h…CøC5.¦¿Bõÿ‘UŽÅý¤œkmêÌèAwßùwÔ´gâôÇû‘ÅÏò–ÃL->÷Üø¦°J£¾]4 myUðªëí7d’(Ì``•uzÉ:Ϛ䪬aù_-žó W~–”å1o>.ýìp˜}ŸáZ8sªEd•úxy#ÈwÖ|û4"£2�òB‰¿Äé‚ÃxôŽÏ‘¯M‡­¡�£H„š¬Ôkaê@'áָФc)ÔÎ^q‚ë„EXnÈÍÅ´;`no_õæw÷¡¾¡?|³�ÿõeõtüêó$eÁUGºfõ«/qÁ–?!ž@k &®ÊKÊ3/ü]ë"‡_HÃ<º¯¾ñ�Å@Ê©<S€læQA)ÅÅ$!¦Ÿ:Á~ïGœfnKOw\¹p>AHSÄ‹AÂÊ2ë “Š*µ­ºŒ¶`¾ÌÆ.¸1·æ‰½›±àªùHLÉD£Q)úËÜk”gdÔ¦ä`ÍËÎ@Uc#ÏfªmX¡‹*VVæ´qkacÎhW=´SJ°†/ Tɉ߻C±yKËkh—+R�†z:<þXqÓ­”?>L§2ËÖ2zÚÐîDi-å‡ùP>�NóŠrŒ‰ŠÆ:ÆŒ€ Ex ÃÞ°55¡ó¼†Ž>sÄŸ.D�‘º)Å8*Ší¥³¶‚ŽÈF:ű]UÕÆügFˆ�KV€VbÂhåº�È弯– ìîi<Ÿºpµ3�~w=,HÞ4ÕjÁÄÉÓ!�€u–(L>Œ F·Ô04v燒ˇI,-­lÄÕ f+J=-trJθ'ž{ <ßß¿9thjii!0hþzÏítÆŽBJÒiìÙ¾ SgNìÖpy¯mÔÍç€@çÓ_|üþ«øòó÷H(4¡×¹ÅÙ¨,Ê…“«'mãnäge 1~´í<ЈäÈŸ s~aÑhbþ¾“%éxôÖÛÐF™À�¾£S¶­ŠNz[|v쮽þfÜvÛÝJ””vçŒÍíÌù€éW,Åþý[é7¢„g™)bvo¡ì%ŸîÎF¸ðzîܱ›²ŸtO™¢·3ÁϨˆÑ˜:{NÀúú;¯áÎÇnGFA ®ž±?­[‡ €P89{¢�ó½hFáj–—_ùå�g”m^¦2/–ÿ«j ¬¸×­¼Ždý`hõ¬-…îÞMØÈ(fÊ®0Gp2³ ¶6+„a•œˆ=ƹœ9í¸%È&‘DàO¡tõ€ý¤Fcjš;¡­Ý·¤›ÇÞCå-mݾe¿õ—Læ öçü@ŠåªCCÔOéßä%Ä'¹¤íjû5¿ÿÖí9_}¦ ð>rÊï°nÜú¹’3RÚsÍŒ11jì­Áá‘8vx72Ïd0ÒÝHÜ[k©ÂE5­(ª TJr™ÏÒRµ9Zíø ËKŠ\“�÷Òw°øzÞ›îN~îUüAhªþ'•ŒÔ¸kk›šº¦ÿ>%}Õƒ)ù–%t"Fê÷þ+ö¯Ô#óWIC&c×…¹?ÔñY|oÒ&Í"vƒŒ£r,b“H%íUí�í/? “#{”È0™ï Td[ΙT€U]çÈÞ ÐmkÀÖÇáé`� §Á@:<ùü«ìÃ*Q\_;æÊÕ&0çÄûh‚‘hÒ­…¦ú Øt¤Áß?�~ÁT°‚YH´<ƒ†¶•¥çô ¸ª¬ìÂSú«õ­…�±è’·ÛØçÕ‰Q¥'’Π©œ’Ï„pƒØÏøúú1ZÓV$ç$ÆaÂÜùT’ 7BßFÔÐ-bÍÒÒj˜˜ÛPʽ™¹%ðr4çýU =Ž¡Fºçýe`ãɼÉUð¶µä©Ñåxׄ /d‘hUBÒ¿—‹�’»ÔÑÞ9”Ömmcf�©w£©²—_{ Þzý%¤q|õdÔfMÁéÐ $¦åÃ;|–Üý8 :ê�F•¶Èa^è¬/‡qHGTu`\¸7U4b±hÁÕÌ›Û@5·dK´#ço§ÓÓ(÷[ISÇWmd¦ ==Ûfa8Òø¦ÐZ±ÿ|o |]l H»á©—?£D¿ʘ‚`þÜ™”T[ÅeôÝñø"¼x>êÛaCr´¡A7�ë)ðõòbô*}wL}p:¿žýu5ÓTc#fm(M;”’aÀÜí¼z$šù­¼l^d 1Oª#m0wEÁò(ƒ.„3'¯¤?ª&°^U׃´œZØ91-‚>ÛÌëÔÄ¥Ñô'¸1£‚9T�lC@{3¾áh* 7Ž7�ƒŒZ`@ÿcU=Ü™7¾´ºuX+]ƒ‘ç€ =3FÌnFlZ ºx¾ëZò\cM É>ºÐ3µ@]=Œ·¶¡ &0‡0#«xŽí?€úš¸1ºX‰–-ÉÁecC)\A@<…D1¦7¤�&yf�MH0k®C¤‡)ª:™û·’*”u®Ë=Cl…Q¿–&´Çêh'µÀÕ°S¹G¬Üè/1cdu‡6vlÜŒèisÐeê‹ÊÌ“8žœŽÉŒ¨mlìAjâIåüÄ%¤ÑwHBï¿ÀLMØK ʵù#ב>NÓÎ’ïÒWIv¾¹”f»¥ÿSKo_'vÛduÑE}¶“T"Å”¾îÿÖò'ÈzWf €õØÑ#ÈJÏ sµ³.çCÖFÖ Ù«µMXtã=”ü Eô¤ñdÄQ+Ýc§^NÒF:Û@6-9 Y‰±dÂ6âúU÷À�†ý3Ï¿ˆ#G¨EQQ À*Íܾqö­[ƒ¥7ÜJ¦Œ«6èPKt6%n/^ªD°^»d)Y¯À• ®QŽìMF.Œþ9r¡ÿ¡Ê .†F[Q¾–Èdh:Ëû¯;ØoÅ‘ò³SÂÜÍã¢ägË¿ûÜÐhìDCËE+•§Jê–<Ðê€^Güë—ö\úƒúK]ÿß.ưW¯ƒbxjÈ÷Éõ:“Ÿ=ëà4å=Ïúƒ?¤.iÃ@E:U‘H–ë!EŒHM°S¶giaxT[‰»‹á¬éAHxêU$×4#„Ñ—ƒÕ«T6À›ÔGËTéäåþ”{V€yaØ+ò*Ì¡Q³WaŠ„ZîÎ×9èvÃmÞýJm½û릑»R4wq®s çLÀ´C9_Ã1hbË 0éÚ{™›® qñØ»ï ´)‹[IƒäDBаNO™ OϾ]lÙq�FG5%1§ö-ëÿ¥‰†J3_’çôÝ·_È�?Ö54·ž ñ8ÛŽ923êl«ªÛìZ› Í9÷øû•ææHµòB �Å�ûŽ0Gƒ é”êºÓ°,†YÎÆf¨"ëýX|*œý|h4Ôc %Éì�Z`Áï&Vºdêé+Æ�M·¢n}†#%`TK Ìs3qÒ7oQj¤E‹ W6™ª”[ó7Æ”pÕ%Sµ³£ö”89C[edª´-Ѳg-Bo¼™†÷f5eg‡å&CŸÄ“È•· •ñÏeÍ:*lH#²ñRhHÎQ°<üž˜;3µ[Ï ~ôUÎ/àl-9³`±dDíø1Ñ”ªtU~w�m–ÿâãhùq-$çˆÖØI¿"q(+^À›Ü�êdHž�^ãcð d}5ŠGÖÊý¯Þ{ê$p(ÛÈ~äþŠŒ Y±¥eÙ(ªÌE w�Õ¬ÛðÁLk\�F#y†;å�GSçii²R¤MŽÛöÀ¯¾S¾ßÓçVבOuÂ)çE^Ò_ 4®¨kß¶t�FÐ!øÅÆà¡{EYq²’¿³›×Ñ#æ2G˜¶ìy×]ý~Ú°[÷~ Ÿ`+æ±â½MR¥³Ç�XFízT¶¤`Jä çX5¯Ë¥zr ½÷ŧÊ}+Ž|)Ò/~Ȉ•)‹®ïY_~å9žÛ(L}#;ÇØ×J]Ò‡Z9Ø— @x¾{LÙÙßbŽ€7Ü’7T")\•WÿrŬ¸T€Uêü–‘9O>ñ$Ú)ùI§]†��Ô´­êÄý“nÌi1•ªš³8¡.Ä´‰ ú7å’~«@¢œÃþÏ‘8EÔè°ßò_hƒ�?ʈ׳@ÖþuHÛoxå1L|æu„“�'í­¢Ì¢í,ʪM›kyÆ'ÐÒ}ôx:XÝú6½vÕ•¸zî’¾ßîŒ:€U-â`Rû2±”ºÐó žÓ%×.cÄϵê?ÕuúSþVoÎÕJ}®uÚþ?¹L@yÕ™&Î}‰~ȹ¯Ù�ä«ípKŸŽ_Ó9 Ïʦþÿ¿ò©ö«Tªqµí•2>ˆ±—ˆ3‘ãG/X"ÛhÊêªu åS‘¶úÙ>•ºeLT�^q¶ž/�…ÚghîKúòþÑÇêÿ®^ ÀªÖ3Ðçš5Ÿs‰ë óOBȽ#äžGàAgøPÊaÎQ¿xíE,úË50�ok¯¨Uî1©ÓqïVø1ÊQJ¹bµî¡’=“€�9ÂÈŒNFÊ0· výK#%èÞzi5��*<øÐ=¸ë®{ID,Tò­øÁj¬ùì:!3aGyC]FÖÖÕ!‡ŽÈ‡þú°2Ïn¤­ž­ÊꥦgÑÆ­„]¼û�Ä„™ ñà_LJ|3+ ÄѹØÍùx{S)�ÎeTÁè M`„âÂ<œ)«…1zU§�ÒQiIIX#èØ¸#zì8�ƒ.×P,éÏ(3F†2Z¨÷ßyB8>•2’ãLÎiSŽØT¿‘¬vh £¾§§ ……Œú…¨F.ºegNL)=WPZÏ}é1 DŸ@d=Sus´D`pj˜cÖF·áŒêð�žSÊÙy“ø2"œ6;¥zuy:z„?â™û´�Q…•ŒF2Ñ×c´F1£ õáåëI©_dWRR˜~¶Ìl�™ï5¦~ÝIpur4…3�Ô†&ÆÜw+¾ûq¼|ÐIg¯£³U´êáçl�ÚF¹v63Cv<�ÑœsåW3kq:™[´�yéZÚuB¹Iqh§SöБ’„)G÷ÑѪÏqÝ ‘”Õ½ùÆ¿2JÖÎçO;Œ�k×À„uK++82bU¸n¼íNÄ0çbtt._ÙÿvÒoÕæ¨>_ñ|6Ê(¡¹ì†[àã3 ¯üû <ýÖßNð?bôdFi0¿l% ä/[¾ ³/¿²¯Ê“ŒÿøÓñÔªðÙkN»â¦›nÂ[o¿‰S§Nâ¾GþIÀ?OÉ <þUA_Î8ÎO&ϼŠÒŠùx‹¤ZGS·27q Á‡ñÆè¼æVp£’‰%„‰Ö¿Üsë*<óìß©éá¡£A Qg;dе’ îžûþ«Ô!2Ž»_O¿÷ ÓÁ:yŒÎ=š�…ë/AæT€ùâ l\ó Œ3“áB'¶ñð`ÊäZ`æôy5i4íÖhFOÕâ�7Þ ÊMïMm¤¥§"ü»÷á¿c»B¸Îñ æóßKrîßþø”tôÐ!_ÓÜ…DJDÞpÛmÈË­ABì~lûþ#2bË€?¶Ž}›–�QOU)‹¾eúÅ/ è¬Mh;C}�õçôcíúõâîø�¤ýJÍ:‰w>ùŽÇï`ª‰HX›9àFB/4’UNÕ¬+®Â!J£w“`-² ¾¶Œ¶´À˜I¿&@7À¯*Ë‚�£oŸoJõ#©r¾â›‘yã3‡Ž¡ÖÕó¢ ¦`•"ón•4¯Žçž¯} ûžø™ Ö ÚªjwbSˆzç{#‚¾ ±Ýä?! DVvr‘oª=-›Ë1I‘c¦³È®úÎä?Î{5Ë2Í"*QƒÍO÷oø”yq‹IÊaŸnŠYSÇcÉŒ‰xòŸÏcF˜#‹;™/³œÊn°7&ñ½¡¯´æÎþwó}$þÔA×ʺ$ïG5'’…õ_N3’ÏS»»Î¹£­LaÃLŠjk÷t6ÔÉ+FòÔ©JJ- ÊÎJé`•åÖ“+òÒPãåÇ '¸TOÐokL2ÉÛ.K ORŽ%ƒk(…\ÞBpŒþ,+c=Jàë@¿†„ïÌ „ììÔ2 Q* ÓÆùÂÝß•ã(ÇMcmhóþŠKHGwU6¥ì àDéÖÚ‚Ê–7QÅ�ÚÇ=-$ ×ÀŒyÃ}(©K߯µEH%©ª2y/ŽïÝN% m$p^ÜLÒ¯ÈÌSâU‹ �]ÑiÜóüK(L�gz¢tè1Çì©”TæµdŽÛtEæ¾¶¦†ã}Z´mX;‚Õ64H2ròàÇ9�vw,I¸Ñf¤¥©VÇ#ú]jpej0-ÀlЩ”Š×¦oN›ßµ©Xááá†;öþ„änö�Ä´éã?L2XÕ.@¹~'’½‡ÁÕÃ�ª=X¿i7&Ž£�Ñ?o{äV0Gn;¼øœPÝÀ¬8F<'IhIÝaX$V¦x’öÎ÷¹Õ¸ÂH®ð¥•�"ÕmM¢ûëŒt6qv©Óªk4Î|¼�–6pæW¦08r*–Æ´%8æXÓž¢‹Ù{̲“P–p„)Õ‘�]Œ½<·#ôZP�’‚¤.-¤xá“Ⱥäùµ§ì½ Õד¨ÔèCÕ‹ZF2óÁ´Ó!˜š§CàÌéYg8v`ØÈËðê‡ï`3ý¾5¥¹(`ÞûæVmt4µ¡‚*h=dfmÎó2e§ÐþdÚ#w‚¾ÜÞŒÏ|CKŒ;»‘]ÝŠœŠÌJ‰_}Xvr¹óürNçäå�<ú·Êi_ÎYx-zªs™–2À¼^ɹ¥0âucj‡ŒÜ|xúÓïhn†ºvælOƒ>óý–rŒš4f4îyä4V—�¼§Ã¾°™¹Ø÷(6� INLßæB[Ë�×ÎÃ; ÷Äÿ�¼«v–Œ—ê¼m ¾Iˆ³ª:†zh2VçÌê2é—Ú^ý(Ÿú$ü7¬r Z=,C9˜?×9û |ðöëÊ‚°ÈQxãµWÈ 5Ác�<¢,+§BqA&®¼îåwFî)¸:zcõC«˜“ÌËïý«´:¹úáë^çÃË£$c–?{WOe›Õ«Ñzú–_=þBÃgDx(i„ÞFÆd„§^~ñÌaäì’¿ÜÃðø¹8rô^}í,[²×/ZL­zvcR/__|¶F©s°7qŒ\ÊÍ.P euÄ0ŠÜÆ`íè¿\­W–‹QÄÀ¹³,l‡žžSµÚZ!E�g-ï_Ïÿ¥ßr­$úFŠè¢ËyQ�_œ&Ùéy åå–š«×"ÙE·ï܉áçôÀ“Êõ–ºÄÑl6:ŠŽ‘FœYr�RoÌïÔ›á¥Í0ib´²LóM½.ƒ]o©÷ä¬ûp ¼ƒƒpïŽÏú®ß`F£Ú–ƘýŠsMÚ.Ç#Ç(EÚ­J«Èº€jÞêq¬yA96·ëþ¦l§¶UþWë’?ÔmÕåò©qîIé~ù§Ê´´Â\Éô/óˆ&«¼ ÇbvsRžI#̉Æ�ærY±æÃïýÄ´b�KÇÍK/S«ð“ -4à ”ÿä˜�‰Q¾‹ ûs9Eû*ŒÆŒ°Í,'NÇã¬ÛÒÜÁÞætÔ8R*„ÛÓQĤ vÔEs ߃6-æ’2‡å‘˜~ùLèÝCæCJɦ¤‡wsvós�‘n¦Ô‰µômtDß÷0jøÌël>‚Ö/>¢Dz""^£ÉW¢ø¦ÅhõöÕ_oÄGŒN0#Hk>nY‡#`š•Žã”çxéÝŸ°b^º×}Žê)³Q°s/Yþ�ðeÔî<7›¾æ©×\Èu—2X_õ›o) ë8Ê”h¹>¢üéô»ÅFÐ]JQï=©c°û_³~¹ž’Ë@d2Öíö¬íý·a‡ºöò2x¬Ý5`ŽÍõå»zŸ¥MšÛÞ÷èb$¦‚Ò–dòOa”þ¦Ì2OÝ÷•æªÊùJûÏÚè~¼÷Ù¿™ö-èrõú“k‘”Ë P†ùDÒQ¥Ë‰Ë Ì™rK_�}ö&]F‰¶-o §ä ýFL›6Ã}9-ê/}ë ôeS¸-+jòê å!}’ÂBfߣö�ms®ebXšQ®ª¡¬ÌÂÕÁîTaYE˜Ú·¨×d÷þ/°æ«7ñÆŠ•>|]f"|)±5<|L_ߦ¹�óÝïšë^È÷ý°_Ÿ8à&Éi1”ìšó~À 4Æ�(öò«/c:YÃr?Oˆ�Å,S‹µ_ìDô¨Þý=±òºbö<0—‰“B,Ө撾Êó'ý¹:Je¥•p´õÇO/܃ußs2M¶-m—j¶!7#NÕõØõãFlgâœ/\5÷¶³¶¿¤]䯱”²JM- “ôet3CÀ)òÜK1cô¶<›rϨÏhjz2#[B”ÿ{Sû ¹wµËJk�xÜCó\ ¶Ýÿ…åçz¾ä?±³úß;šÇ-çN=ïšËÕïbwÉw±[¥/ÐËÔu4?5¯�æòÿæïÒfµïÔ´¯Ô6Ëq«ö”,û=ï-õ^V÷-Ÿª½)í›q(×A­GÖ•r¡c‚ì«‘s¤–¡žƒS§±æËÏñâ ÿî³…Å©ì[Üå¡Ö5ÔOiSkCt ,`5yþ¯6“cÖ´½µÂȺæ�çÐM§åžéøàµÀkX8É\ª¹�´uýuì÷GQfm&‚ðÈßîF#E–qCõ•E g2¿ªxðïøîÛo0i,#I×ÓÝJ©:æƒÓï¤c­‡€LZè0 "Ùñªk`a Ã´Íxíõ78ßýˆ2ÌiŒ-·àÃ÷ßExD¾¢4­¯›3 ábjjgO|ôΨhÒÂ’þb(ï;�ªQMGzØÃ�y³�Œd–O×o„'ú)¡KçYuu3NR®oîªàìˆô”8”ÄïB�tB¬¼ïчaCóý+VàtÄ�WŽ�£@ZºôPÏ\wÙ�õ|ÐÕÞ@ _S˜Ñ®¯¯mC@Øp´`Jd”àxFçZ‰*FQêxÜåerõŒaïÀ\d”j 1m‚7÷QbèÎsÞ‰–êZddå°}ú©-�p"ž*YZð9F‘¼st¶czˆ|¿qô騬«ª¹•»õpgt°‡½1Ö}ó�Ýž3y¢B"¯kh¡ÿAÏ<ñwL?–’ͺtš‡bXh^ó Ùç+ÁýÕ:rÊ´!Üe¾ŠÜû꘨nýá‡*_uåO™éB:ÃSÏÄà“ÖÂÞH Övn<÷®‚øÇ8#ÔÆŠUw¼šÈHí³ç9}öû"Ç/c™fÿ¬µé£PÍàO0TÊ KfÃåÐ.E¥I¤1wº�„w]ÆGC×’UHK:�¸Ä,æ̤Tw ΜΧs9 O=ý4þõ¯ç�¿ù lã×@•çs÷å×cLX0:x³Œâý¦ìçÍ-'�Ÿx”Nf7\Õ<œà¹y÷Ý7©­�'¹ Eg’q˜‘Ý :¥C#Ç3ór™˜¹�¬qÛ +•zþ¯¾ È»ú=T¡ððA0#M3XVs»8ÒÆÈU€ÊQ$FœN…‡'‰*Ùé?}>?ö¤�_1C)AçÚc ”{fÿÞV¡´û=GOLçu¥"„ŧÛñņýHùé#%Ÿî”+fà²é³ajé…¬ü-é þWŠ:w’öª~/ù®¹\~«ý¶|ÿ¿^þŒd½È+9j ÙÀÈÑÑÌ#â‚�»÷aó�ßaöœ¹ŒJ3À†¯>Ç´y×*µÛXÕc'eéÂðtêœÛšhÁ•IŸ¥ÜºòZ,½ùÿ±÷`U\Û÷‹~é½÷"*XPì-F£&ÖĨñ¥¿$/¦÷Þ{ï=�Iì{E)Ò{ï½ý×2äJ0š˜ä½÷û¿ó}pï�zfæÌ9ûìµ÷ZwbÌüÛH‹ *+ˇ�êeë�Ÿ`Ð�Hœa‡²;f''ŠÃðÜ ¯Á‰bÒBCT«£!…Ì,`öª9÷5âD­Ž Ï�w¯€‹»›r×@|úöŒÌ˜ªüîëŸD&\N‘ LFÄÜ·ê',â$µ‰Ô/—@û"FP_™W²¼bÍŠK"Ãd@—ú‰kwôC7e»®ŽF@ˆË­¿ûÏ*Ý�É…)/÷®Ñ;_ÒÜÕj¥£kŠÏÝñzQu…šðÚ»ïöY]yÞÚjêóRI²~£i³ÎÃXNâ­6­¸P¡ÑŽTŸ¿dH¦�RGfUëwuµè¹{iÔŒ0©„\¯dÚH„LñÝËk亸’k’ö!ZV²};uvî¦3ﱞºkgTˆá*Ç2qtl1 Ó&YŽ•ù¹Ž¿dÆRܛюҾ¤Þíƒ=nì…¢²&F�wbo\¦L›ãœXN$ðƒò.FPõg—vq²3Gxˆ·ö¢>¿ëé‰ÙÙ "Ê58H”ÿ´‹£^÷/[‚a)ccØô‰¤gÌÇÒ+©oQ�ÆìýtT�ÒØÕ¡a¡øì«]ð³¢3+[6lÅLÝv¸¥2–�ÑÃÅfú8×¢ï£p,+ÅìÉ y¡výPÎÔ²|Fo’ŽÌÅà ¤Ïª°0Å=ö60�%¨O‘{;ÞƒfÞŸßtFOÀ:Ò£ 8u ÉŒ> ˆ€óÕsð]R2lèœ ÕiA�U«¯ßB õ5&Üó Ò7lƒµ¡Jó `_œ�ˆ�«‘OÊ�åÔ   ¸¼™pÈó(Šž ÉXû5š_zLi#ò,¥íõ~ç<ŒC|öÕí¤�aæ‚ô+Ò¾¿gĵû¤+‘Åla7fŒytßÈ?ø_ΫFqõ•¡Ùû°’ÁÔtdK»ŽŽFh5{¯ïë·¼ÇEŸ¿¯éKsº÷öò)uêõNöÞ®¯ßIgI÷ejˆC¤ãDPÕÇÛ WÞó#ÿì‘�‘�©œ·›œçhÜAŒŠ»nà¼uÆ�ý ß0ú¶×g�NxôÊH\7ØR Õß{fÍ�†ù×,RNWÏ U�š gÝŽ+ÆÞ„ãqG般GÔ°9̬pí³J2Á–,«}CBQgb¬ãP^¥‘l'¡7jk©‘û®Ýwôy�>Jßdafªdžv…†;J£öÑÒ—È1}¼‡´ÍŸ~ÐݾٗIñ›½èWN@Y.÷[þ.TäZ.–!××¾Ò•mo¾oŒdà†{_»þ®eB­;ïšùèÏÉ�æõ4Båu½ƒ;ÝýxÏqÜ\¼�•Ÿ†{6ÂLÏ�‘‰Ìjù} ï+ï³ÖµïãoK{»ÿ¤ïb»iÛ£jÝT;KìM'å^ÉŸ¶­(ö¢ú'ë.·T¾údMGAn�ž˜öD^ì©Ë¥d»I]¤¿–måï÷<iW2–È{¨ý'c€üIï:¨cxïëw$87qâde±Ø"‘a:oñ¦54õcjL÷U䚥^¿ç9$'�"…¡SÏátH«ÖR�DÔ!xéí÷ÐÜPg/_<ôàýعm+Ñ}H¤3ü‘§ÅŽç|ÎÉo0'˜†‰‰‰Ða–d!iîbH«;tØPœ:y+VÜE=Êj|y*ô³Ó¦NÄò›n¦ÎV2³²1“,N·1³/S@Çðáxúé'¨6 ) ó Ñ@›3‡cq8éwïÙǬ'Ür×½(/,ÆÁŸÖâºåË0ÄÛk¶ h¶ö¨¢6è(ÖÔw’ZxŒL-1fÖ\|»ê;:k‡Á†YC™¹Ùpæø¶Ÿ¶«©‘‡�Ÿˆ¢ôãÌÖ©¡ó®tª­ýôSLŸ2A£ç ÐÆ¶–ΞL£î¹‚Â&@¿³žšb†ð ãÒËÕ™ÎZ�þ¸µ¥©¤û+£SP­•ÅX·/�2>HÏÌf&®úíÍŠôJ-ií¬Ü`f¢Ç,ÓR4PªÃ‘Ôˆ’‰£OÝØÚ„´v­(Ê/ÄÞc–�t•k)ªn&PJGª�ƒ;58|hê™edKº×PÑì«©‡ðPlÛÇÌ4]cTÔV‘Žy0Våxñ9ØÁÓ^ŸZqðòñ�§‹ ,¨ÅìGçkv6³“ôɨåCÚÇø‡…!ÔßÁ¤>,ã3°¥¼I[}.3›º5n¼4LŒ‰—?ü®d¤ù£%5ù4ìF÷UÔ÷QÆ8í÷.Œu“2mÖl¬ÙµE¹÷¶F0åõó™›Zàë•k°eû^|ôÞG®�øçL”� 7A¥¥7ÜBÊ¿!p"pª]–/¿™”¾ý 6¥1ø4 w0 õlf :Œ›o¾îvÆ ˆ–I½º¾_�úŠ\fK‡Ã|Àp|ýöصþ;¼ðè ¬úv ÎÄÇPׯ)gÒ™uÜ�`XFN¹Š÷«,L�µOû«ïÒ¯¨sëol<á:Ï”Pb¦ t»ñ8_}ú) qí½�Û Sa!µ‚-Ì0“H�†Ðcv®eD$A.OlÛC†´Ù¸yù�¸÷�qŒÇ¯b®¡‘öç5À›YSþ·Ü ΜG|¿Àpø¸:’Ô {™ÙkϬ¹µß­„—^-3t©MÜ€÷?xåy¹Ô¬ÀÌ«¯¡Ö`!Ážrø�ºS¯˜È ÔQR&—A GŽÇa݆ xœà5Õ„q<þ(ïÛˆ_]÷ß± ˜}„�öv€ÕÞÞþÏ>lŸÇ‹c G}A:ê)yTÚDýìævô÷È~à—>½ÏûXhÅ€sOß@,ýÇ­H:~Õõ-¨*/Åðú"¾þ^~ý �•âæys1oé22¸ÓÇà�0R`˸¨–Þ¶Ö¦u?àÓO>FôŽzæSê¶ò)s7Ÿd‚KYƒ´�Ö �ÛÒˆÏÌáž'.:éÕg92Jû”}~Ϲf‚’ÛçÊŸŠ¨½^@ñgÊõ‹}(ö»ø²Ôíºç�}3õÕò}Ùñå³ H6ÈÈ(ÜÈ~¥‹>”¢üzÒÕÆãXR ©\+qÕ´h$¤W‘ÕÉìjùLt Ûàæí [&ù$íú Õ­:ÌØ£–+Ç {w?˜‘za?-b¨ƒÚJ€õ¬ž)Fp®ÚQV®Ô_ê(×!>¸Ô€A%‡¬”fç8ÖÖÔ$j¬œ;;j¬Œõó,órô˦/Õì主fÕ×è¨L%ØUÍ(;9|WO'“S› }ÛÛ©ã<N6fÐX9àÔîu0²§ö.½oi§³�KfÈÑ£ÂÀÃÓ~ê$�» ÙÇ42±ÀŒY£ÁöæØ¸ùÒŠ™h a¿H@±¾…¤Ú7·qU²-›9zX’ƒô´zd”4dBB1�j]·@ìæ®WÎLüA¡¤Ÿ5&p1å«’~7q;wPô“Zí¤ÄŸzÝbìÙµWóžº9Ù’»Íz Tñõ¤¶:ƒ�÷÷õ@aq9yZa×é\¸÷·¡ÑÈŠ¥Ž)û¿–úb¸ ("uðvjçö‹šŒ\êiPjá@­Ï%¹êdn í›B˜ðZnA¹… 5`ST˜…*&dˆЗcªsFŒŒõ‘œ[†)F´H¯\ah?o|ÐnƒãÔT�J¦hÿj”>õ2‡¦¨ðWÛª â[éìv¦=5 }ñÂ{ùIƒ�/Z;qêl|û#*2U �‰Æà0_ÐPx$‘†¼8ÞCÍahŽ4÷þx>£[Û nÒ‚ØÑ3a³èVjéæÃæê¥Ø«ï€ÍÕ:˜²d!Yã)óìîzŽw?�–KМžÂ ŽJ”3RkÈБØ5l†¸Òiä†ލL�LjVepòvؘa¤.~hñ‚eÎø.&Í]èO@Ö‘à ޽ƸÃÊDJ§ä9-/ÁfD¸ÑèS‹:±’ß@VvõFÆâ½[nCç®�èzöîî¾…í±#d0"ÆOQ2XU€Uú¹ç´��¶¯ÝþÕzõõ)í]&t— °Ê1äØÒ¿É¾*jÛ‘wHU.µNê1™è?9§H/­‡}‡wãþÛ^ÇàÐQ¿X¯Y0™‘z×) uİQ8‘v@¡ñ¶c‘Znzt:é›Cˆþ²L]w)ŸÎtºŽ�œM=�éÜåZ”þ“m\ÚÊŸUæÍ¼çOXµë#íRò8!÷¦÷ý éG:/Ç�™ˆ¸ã‡Ë~ /@Pû˜Úß_yçIˆÿ‰ZoÙÈÌKÀnF,Š?®Œ}åšr{èáä™ý¤yOÇ?—?A­ŸV\9ùjøx†(�œbJ3¤•b3Eƒ9A¶¥ž”G˜5DwÞOm¸†Ù#nt8‹P>ßûðM‹�eÖm„²í_ùÏ•�!ב¦HJúº/kÃ,­;åtR�­Þ¶‡››;Ô¿¾ê)ÏCÆlq:©}N.)Ðé©–w>ý?û†……+ ëÁ£ÌFù™–]Ýæßù)ïC_{ª“döˆí#ã½và×/Û“Ÿ«üVûˆ_Ö]Ú7µï—ãËù¤ï‘q§wû¿´£ý}[]ì^ÊzqÞK°Š:V÷®�,—öÈÙöyãXz„_Mõáî 6±å¯/à±÷ñ.å·í²³ê…–-(¤;¸ðûÜfRÉ–’ʶ(;• "õù’É 2v 3S@??_Ü{ÿ½ðõï�wÞ{ÿZ±5ytêÕ`ëæ­Ôåö`\6˜–G«‘KJÁ›o½tæÝ{ÿ“DõÍZÉ„’K; ®¶ŽÔ¹µ´=ÃñÜ›¤Pwq!ˆu 3O]°÷nRÑ“Z°ˆiäVŠÓkâ˜16é˜'UÞʯ¾Æ†Ãñð"³«a¬Ç^OJ?SìXû9nS¶v¶ö ð”–]ÌLX#ê¬0ȬŒÀjé’ o8ˆSÉiÌP­€3AÈ#x¿ü~ i†›BçÓ�Ø‘‘£PÄ•¾�Æ.]ÒÿVâ‹çbü¸‰8°{âN&13ÈùÙù¤SlD)�g'ÃZjÂzq¶SCG¢šª¨_†œ‰;Am¼R2ZbñM·#~Ç2‡‚«/©c ¶—0½¤ŠxÖ6æ (·c6¬+Ç3ËÉù’Û\ï `}õéGqåÕó{¯R~«óHé�zÛIÎ?Ÿ·œÚw夿\8eΞ:… ·Ro”‘qÕ5×ã®»î•ӯÂZfúL˜6›Z²¡ ²�©ÿ›ï>Aâé̪îmÕJØXZ)€eÛßo¿Ëñ—mÇ̓Ã#h—¸ãµ—BÂÑ“´A<`ggƒSñq0 –�AWê‹‹IúÇ!¤cž5„i4tLêA�;L˜µˆ™â§QG}¸,Ò!®\û#|ºí9¿Ò¯0@¡hñôžþ¹„Ok@âQ”èê“ñÓ—2: iéô]>Æ`Žñè`{ê` p3®Z£§¡žA–õ´Í"Â"ëØh8À ‰)œSnùþc:¡¯$›¨>¦N›Žp‚Ö'cÙ—3ëéù× œ2ãìª+§`WÌVfK_�‡ž ¯�:�”ˆÙµm=Òêí§Æò)Ö}0†’a¨®¦¥EÙ¸btb7¯ÁO߯¥ôV NÇÁÈTÕºfس¯¼ñøz‘vÑ�ï¼»rËãO‚‹³‡òýïø÷=™Nœþ õï¨ÿŒ±XF@t3×?ýp=ÚÑÊÌÇ6ú8~ÄÁ=ÇpƒW~«”åfÀ””æÚE€V)ƒé øðí×IOnGŸd¬™IVSVÄ~TÌÚ a¶þ–Í»(¡æ‹èÛäݾ,ÙWü}ê8XR˜‹Š¢l\Ç@` äꫨ¶›—Ÿ!†Î1笾¶W—]Ê\ùç+ßñ¼þwuÛDzÏ;o=ËCèÀÕÍS=”òÙtxO‹A~N‰ýŸ·‚?ć%~$u�ØJÐýS*ø óG)½m±�äþôF³ `çÞ/ã&OÇØis”}÷o]K³çÀm”…²Ç¾8RÛ’zלú¦Å¥•˜³l9–Ü~ ƒœ(Gw*‹™€mÈ'+ÙYJLù8Z�ºÜZcËOAõ(Ì È�F:WCèG�Gð �h¥¯«ÑÓUÓbi¡© vÖœ=“le1p*ZꬒM̬ÎÂËÇ5AÓgÙî°óÖûaíÎúL=Œ·?[C�VöáØ²s?rÅ·Í~lËν°¡¯»Œl fMéd‘è��w𜑠vbŸ˜‹ ¦ ö]�õQω”î5ML9¶¦1á`ä¸HTW´Tmƒ£~!�‰•ˆˆš?g;$�=ÃÆÕÆD„0drÌÞs$ ­Ìú$-~mQé‡ ¸1àÈ…ýt>©~MHÿZ“]FFÚñiS8 É¸¬9væ–5¢‰ý¹%UÐo­"#€1éúû“Ak’¸­†:yoºæŠL@YÜÌ`Ì€žÑØw€Y�´ òhÃ8Û›10ªÎÖ@WC#œ�ÊPM˱¼¢í¤R®©§TBz:¼¨í9õÆ»™°´{\:Û{€xi[¶¥šÑõ•5vU¥%†ÕåVû §ÑOYË@ãQ°îªF>3SMIY\ÞÙ÷Òâši'[<ê«4)� ¾j…Û³�±¬%°†v„3`�m`Õ �™ ƒÃâI‡l…AéIp«©"¸¬WãSS¡11µ†µsµK5%N3(n‡ã¼¹f ‚(Ý€½ÛpgÀx8m0µbBG0ÜM ¦ÁöÕ_(6„µ§/Ì»:(ÍPÆ16�͵8¸sª™ˆq.9>6&Þé3tê$³Y2„¶Ó¿èÄçkÈyz5 :�HÝyWϬE'ÙÍÆ0mjê€Ûz+í›¶ñÞw;ÍÄ k/'´Ñ\§<…õ€s’ÏòÙVbÛöjl}"#GO!‹C’S2˜Ë é~´�¨ÜL3>Þè`ð›­“²óRŒe†xÄ–ô;2¨.�nž^Ú·é¢ß\ýoX¥�”y¯ö\EµÁä‚Åÿ#8ŽY.vYï8eåÿ¡œü¯\î5*GFEàðþÝÔŽ¹WÜ †S¤3ÏÂÅ'ð¼ÃOýGw‡­·7ÓÈÏ2¶;» öÈh�{Ãy›+?²“âðÖ+¯3+-ä×+{-¹—™bÚ%á8)§�Ò^ô—|ð¡G•ãnO(FFQ3n�fDŠŠlÉi=ÞÉ”Xê#XárÿvåDDõi”¨•Š5N~“f“ë'–6݆œ‹Tn—Dµ©žëµ×ŸbM4A²huÑïþ”¦/Ê“ß} ‹ì ”c¿E;vÿýaÔ¨Ñ=G‘z)åg�õ½÷ßBLbÎüLG:ÙÝÁœ¨N¥†Û†¬œM?‹‡÷!ìgêÜžõñEhÆ´‹„r¾™ÑÑØÊ(e—�?ìY-—ös°Tb²�ãéO*cù.E å ÿuŽˆòÚ6Yg1Ú²…°´r�WKíme¹j¼Êþê:Y.ûª÷Mœo?×…V@÷vê1eŸºÛî´Ìr2´¬È΃Í^Æv9•MÔ8ù#,Êcq@ 1„û{âܹ4üÄÉ—9ìåËo—¯’Ã*‘¢Lêáóôé\²\ñ$œiØÛôÒp¹NnÄÍ÷œ ¥}oÜ�ò·^@,çV]·ÏFÐPf*s™Èȳ6´gsµŸ�²Nþ~‹î±gÇËüÒóî]æq´w—÷àç¶«½ø}öÁ/º÷[Ñ÷îG�B,3üÔ" ëËŸoTUu™|®Xö<ô‹�QÚûh÷rî¦Ó^¦~—g'eQ—<Ýîòð=wãŽÃ{þÕý±dÞmçýÖþ!ÏA}òî«ý€l#ŒüíΣîÞ«[[¢»-]Œê³{�îÿÝíê×ôO²VÚeù‘Ê ]­‹ö¾—ú]¹–ŸÛø¥îóïÜNîŸz?ûªG0�yRîüç=ç­ž0y}øQÒŸ?&¿ôÆ Ô7…ãg×Aߌ€XUž{ø_ìº0{ö\8øêºðövLjþó�Å «Åóf3B9JùSO"÷q>žEÚ' ›f¯Žž1%D7:ÎÉeŠñ/ÁiY¥47Ó[ß«¼ôêk íåºÖ ?;CYëæE§úe”£¤JŠ`–‹¼ïʘÆI[£±û*j»ë½®/Àú3KNœ:�åÔp“Ò»-Þwï¥V¹ý†1Œô„»hãN�?‹”ö ظú;:H»ï‡¼Ÿ½�¡µû_úUÚ•Œ×2¶_j¤=Ò±4dÍ´ûµ¢²LƆË)êx£ÝOËûÿŸXÔþUµM¤Ž¿eÇŠ-£MÜ×5‰Í£}oÕs¨Ûʽø½T¼ê¾}}ʳéŒÞmQ»}í÷g.™yOÕçü[×§Þki»ºGöW³žÇî,[¶„TœgþÌjõ«�,%ùE¤„ïß³ì�~yì¹WÎÛÕ�t�…Ô 5#-n µ(¿\³7_5•%Y°§ïÊ+§c"Áªã¤±µ±0¢óÉÏ¿ôî}ò%¼ÿÑ'¤ =‰Ó±G˜mêŒRÇE€3áÈQ¸»ø`î¬ ÈÌ.A6>ýìs´�~2s415­ ¸êÇkúæëoabi FE¤Õs°&ÃAY)u]³‘Á9ÍgŸ~ 7 �Ž.Kgœ,i"›K ¦NöC½uÒ¨Ÿ×^žƒ+I£Z[Y�QsË+á@I•òT:õJI»\‡s£QKPµ,ó®]4ŸC{RkPOÔØ¤ …e¨ê®˜@IDATØ·��0ÌR$*‚gN‡1Øý›v!,r4�`aA§6uØÚh÷p(a=ú÷�ÆŽð0R5>1‡Ž¯D؈±ÈIË$Ȥ‹q££™´‹NCÊ#4šÓÇPˆ “†ÓNgq—9üú@9³, �/f^�Gî¿t.Æì;KNMÙ¾Š€«Õ¥9ÈNÚ¯�¨ó62tmêÆ1Sðæ›±KÍ-�¨›øã³éç®K€ý$)°×è"$Ä�2O¦Ð­/‡¡¯â’:f%ëÂwx ü&âÝ�¾F\ÅKŽ ¤¹ùG »¤ ™Õð+&°*´ÀMMйþN¥.'ºtH»= 3ù«Žïá¼~>(Yòl�Ù†Çöc ³·K+«0‘@éšo¾`à” ³ÐIZjRL²ñ�rû j ñÀý�P‡Ð^9nèð±D„Ìðô³Ï3s«Y ûP[” Ç cpÛM7á©Çc[î¯èÛàïg@Y­§°â®h§óÜ›´˜nIœìáÌLà~Þ¸fÁ5df§dT�ž� ¯¾ ]fL;ZiðÝñ LŠ…ð~î¸z"ÏÝ«|ôÉËnáÆå÷õZó×ü\Jªèÿæòìëï!©v'Šsk6h4NÄ¡©¢þÔ¶Ö»è¥øî}Œž ìî+Ô’NÄã�[oB%í㘸x~·à¦ëæC�4ðÅEùL"é¶~üq‹ºK·]ûó/±•T‘ø… 2²°÷õçгu÷u|UÇöc‰ë1câ½½¶º¼ŸÌ»~í6¥>(} 3«û*âÓ¤�néø³Í¨ØëÅéʦ6NýÄ&�ù¥RäÅFi;¼¯†c�KVþÌÎÖ³­,Sû.ÙO¾«6…'3ßH%ÄÀàa£‘²o ü{ò}¬ÆÄ1CP@0‘8Îz¤©‡:˜%Î ~)væÆxë£Õp$(RTRÎgŽæ¶.QcÜ|ôd¸ÌO܋Ժ.öÆX³®ÅçàÇ} Ä—­¬Þ¸ £ÃC77†ÌÎ3%Ù¹rÌzè~|ºï (š0“ Õ¸ñÑÈáalï…»ïü'&L�kè|æÅ7qõ¸P,¹f y{%ì°cïäMê{gôóÄÍÿ\Š]ÒIGkÏqÂûáðñDj³† ª¦‚ d# ¨+z¼*�½ü&²8Wà㇘hTi@J_»p²B”¡‚É>öú-hÕ˜cÏ¡LŒDBü÷¸–AÛWÿD–_ÄÄÄàö`?œM:I&F]ö�'1(ÈŸÚÐmðgpL ¬`imˆˆk¯Gܪ±76f­õÔ¨žÈ¤"f»8ÂÍÏe̦žõÐøéÍÇ懆Oß„û¼%œŸ&à£7ñ=ÐCU%³ u�8V‡¢µ•ÁI´_ü]­HAO™€³ùL¨ kn‚zLÙ’U _`žøqŒá5äýå `©ú+•Ï–6Ë6Ó,£ÎmløX4rÜ2µÓÀnÈ\˜R_ýLz*î¬Ê‘ÇoÉí‘<˜Y¸È-­@™1›ë `XÓŒiãtµw!^?–“'âøAÒ铺÷t9‡3&nÌâ4–ï¹AC`ôxC=jiCÜNÿáõ¦®óða�» ¬³‹˜aþ0çë‡hÆÙÐá‰K<ñÌsÐ¥n°Y�J=ìÂ{<$W-¾…vàAJÐïJ–Gj¸×2ø«½µí ÎÚ‘Z͉fÝ-­ÌP›•Ii'40E&rÄP*`z$™?çÁ˜Ï¾ß˜ÔËygr¨1o„—ßùжÃjÚšzhm©c°}%*Ë™=^–�6ÚUÖŽ”P=FîûlØ_å •~SõÇ«saéÿ¤H?~±y¤²áñ¿ÿi²þE¯«½]ué(ª³à¤E†¦ß.G¡ÞãÜIÇqï’šœ¤¬«W£ ÎÓ<(þ=f:ò2SØAtbþüŽwéù}Çò0˜Y®Ká{¡"/˜Õ`Q~üÁ5u(¯ç€~æ^9resfoý„€O Œn} ã'`8iJ/tNyùÄ@ù=/¼ì£:,´«ý[N"ííÔïȪ«¯Ï?rm}çr—½øÒs`@†Ž#]=Òl’þ@£ƒ½›×!+é /FÿX:b')X+ +.z:y–j'ªn,kCô•H§“xÚM7*‹e»ÊמQth\ö|ŠsTÄPï“”ÚÀ$‡ÆšjG�MƒÖ‹mEÀúf+9ެ}9KtRΩìW¨�îRÔö"º¾¢»ª,üùŸïöv#Ï™·Üˆ¸Ø}ˆ$u÷†cɤÖ2DJZ³É]1ÔÏvs`êÛHubMŠ-ê�0:¤Hf¨å;:$¾mÓÅê÷W`õö“hã÷±S¦#ı1Ô4_}ñ#:sÒkg‹ #½‘Z¡a¤õ92\Yž4åÕÔL÷ñ‚¦³YMHÏÉÀ¹ì<\3{&)°Î rÙË8{xltaabA=Šl…zühü)xSƒ`ø�¾Óy°ç1‚èx2f}3 ´øSIÔµ RhTt¸–•Ò,ݺ NÂÝÌXÈ`[‹ŠŒâ¤›zT4°WuY Éפ Ž õ–A©Z’ÑÄl�ìÅ·â£�Âþ¿{ê=�¶¡íH—6µëåW¦×¤´§_”Mš¯÷ŸWvQ�,ò£w•ejÆKbê!ŠÛÇ̈VÜ÷Ï'”~Vú!iƒj{û³�ÂrþË-½ïÇåïbû¿úþÓ4*_Ä�ŸoÅHNì.§HÝ¥h?OeAÿ´:u‚­>õö±Û^$u“‰µÚO]l,Ñv ¨rµ½ITÇVõ¸ÚËþp%ÿàŽ_¬üK.ýƒ{ÿþÝS/~$QyWå}Òîëû:Ú› Š%5ÜÊO¿ÁSÏ>�Ç~Ͻø )£¢0š}ÈÁ£pÕüé¤÷1ƒ¢é¤£=TXDúB tFW­#–,ø'NÇ#$`¾úæ}\¿èf Ò×é”eÒ¾¤ý”›/wf1ÃG»g–ÖRªå™çžGÔèQü;ÿ8D.räÄîÛ�üìL̹þfu—ßý)ëB2Jdò^h¹�ª}¤¾Cêzi{Räù­û¬‚¬.Œˆïç¨ü©Çø­Ï÷?ú€Úz­¸û¶;z6“úôÕÖ{6¸Àíýþè;¬¾Oê)亥_øw¾_j]äS®QŠ:Ž\ì¹(ÿÍÿ´Ÿƒö©ÿÈ3‘çq!û]û<ÿ‰÷AûÚ/ç»úN^ʸ&÷DµsÕ1B€Ö¡C‡^Nþ-û¦0r?›¶op žz Œu;ÑPYBv ò”PÃjÆ5 ‘Â,’?üœ]|üñ[=õܵýGlܰ{ö�d^—2¯Ád3£vfSž†‡�†úâëo72ëÁ ~£ÇÑq[ƒÀÁa˜L'^,ƒbž{û-$Ò­¤¤Åú•_´Ì@YkÛ"f©bÒ”©èN'¦?éåMðJ €…óf!—):tÒ öC|‰!šIÓ[–wŠs!´¶w2c¯ %%©¤·�»¶ Äç–BÃL®B²¹ ¢Ó¹€áÃfŒØ° #¯‚T™ñ©Ôá²E;i8 sΡ’óßÈAýàîìNºzRIJfæ]Iu',Ì;©=Ö†ìÔ“œ—1CÌ™Y¬&(m±¢Mž c êèš™@—×ÐÐ¥Á§O=Œñ#úØÎ;C3{4×–£º¤ætd„O„�^;)›G(÷öާNC+çnztÀ×¢£¹O?z>ýöe í@ÚÞ�<“\pÃM·‘®µ {·®Çë¤|ÞB*¼m›~d�;1el4iö«áB�5sÝJìN(§öj jÊóqÓ­K™Y\D]ÛdXÓÁ:yÌ(¸2ÓJ@ÖCë×Á�u+ è}âlÆNš*ɼð €Go¾訟ÿ�zÚBï/kIÓÜÂyË¢%Ëz¯úS¿ýÖøàÝ70et8 ŒÑfÀŽ´~'bÖbü‚».x®ê’hí ²^p­Çw}ÊûåÅûk†û–χ�‡†³�ê2Û§ÞÀûRJБ~�¿ü,ö&”¡I׃xÑîiÄÑ=‡5f4‚Sâ‘·s'ôc•q_¯Î›mg]AšÅmZ»í”÷ï¸ q­º˜ÄýZùÀ¯_8O©ÍGŸ|Jà< /¼ð"³§RàMºãwßz£ÇLCÜ�Í 6;�a[—-ëÊúü¹ë�‘ׂþ¬ï¾ì:5"‹m~Ü´(d‘êÒÉÑ�Ú³ÿ`æÙ&¤P/ò=ìØw‚ìfå˜8i³µHB©±ÂÀ�ƒ˜-T�9WM@s‡^|öÊ]ý‹}�xùùWêZ �™SF6.xò™g±øª«0yö•0çû³ôæîºhÝÎ ~McƳ0�ˆ‹Å f,¿Ãì⯾ùâ‚Ûÿÿ°"·,E¹ÌvÊ®<ôì�(ç»mª§[;=XÔ{Àˆé/¾÷Éy·¢¶¼€Í6002>o¹öZÛÛ• °Õ_~€å‹ … ��-mÍ�#I•=@{ó PËF9NÈ8:æÀ¶óöQˆ�r°é$2‹NaPð4ö±×¨«þ´OÏU»ú÷Ø•i?~L»ø „½ümÏþR© GØ20B-b 1È*‡d¸žê2õS|Q&+õ{_­ƒ¬Sç£Âr¸iÓ:Ü}÷¸}f4ª:©Úlj�Áƺh´5D^M;È4`wô¾j7À´ûã¶÷*‡�ç»�EÒ5ß­GP¿`”gA˜ŸÞY·‡Ù€žp&ã@ i‰Ëj[ÐÁÏÛë‹àÛØØ­Ëúɻذ/¶Æbî`;\¦H ÏÇÄÐÞ(0óAYnõ·ƒÈ0…àa|œ½O*ךÜsÃ<Ì#Û^€—%n¾ýn´»aÇÖ­ %zqY3�qøØ9êg–`€·'’N`ö¢ëaB°ˆ´¶í�µèb_8`ð0Ÿ�CI›tªEÝÓì#åpC‡t$âb®K�NC r5@½ž=Î0¹ÉÝÑ•ô´ÔŽ'Mn û¢¨QÃéÏê�ªüT8z #®˜%ué˜bïÎ=ð"€ÜÁ\}…Æ´?tÈݰuçj¸ž‰èñÓÈ6P…&‚‚…Õñ,aR•‚rcwŒ"@Ø4q'px×fè™ØÃ…Ò[í�5Ìî.¥¶«-)�FýróÎv‡Ù  º–Ôs­.o‡1íŽÈAÞdŸhF\V îd_|Šš÷g‡ ذÁIñjSáó¦<ƒbàPÙi‰«k²Qçé‚c úˆ£ÝÍg=•´¼ŸÑþihhÂ#ÚgNnÌÌ­Ày5¸ÑF“«ŠzŽ'_>›w3ì¶üÈw0©éÙ08Vdü0àX±·¬˜@t0¥åHÝb`G£z¬Z·-LšX>oVîˆ%Sƒ®œ4ùUç�àL°Û�6§èÛ[µj È8PN Lñ%ÞtÍ8RÄ“e/žiÔÍ­ª ½•˜ÀÑ@Ý×ss+:ôQÀëžJ 阽ÇÑ G­Ù�Á0·²A~E9^¼ÑN°³­µ™mXCúì\2VÑ·W®H‘ÎăL„uµµ(ÈMFCE ®Zt-ƒ©ŠQÀLê’ò ‚¿�LkB{z;+dr ja.º� ˜•ê =Ú³ºzF´[îÁvÚH¿ûF�Œ ¾å Âk¢ÌÐ�ác¨Ë«�B¼w¬8?ùí¼›üoþ!s�ÆWŸÎ‘D¦ßò\N5µç~d^y9çþwïû?ºà¿è èèáÈÖŸÐD OÏ~}ž¥˜Q’ÂÑ-E¢úB‡�€®)à 2`B¡g)ÍL„2XŠ Ø‡Ò²àØÚT¯«Ñ¬üúSì‰ÙÅHÓ½˜CAeµ¬\õ�òÕÑÑSgÌ$È:T]õ«Oµñ =¯6mï¯6¼À‚O¿þa4”…ÆÝÃýhœ7Ÿ8HúˆœZ·Í) ˆ%¥SÉÀHŒ}õ3ìÚ°JYÅpêË ¡¦›Ëç¥ÙVÒÓŠMÒÞ …ˆ|ÿ=Ç�sI«»›×¥ž¶g;1Â.å\¢ó%÷YÏÝ£‡–¯ç Z_äx¿‡úNk×Kú:íÊiÌD9ˆeK–R›غm;’3ÓÐUU†1.�ŒÎ±†aé!|üÕ&Ø8yý꘽¯Wž£¤üKê¿&„Ò7ðÕ4ý†tg(Ér1…6… %òŠË:SÔ½_7%Š€Ÿ•¯?£PÊ ¥ŠºŸl#z[&nž-�q™šj>§R‡xÖV(:UBɪRÊè46´´‡„{Z®Ýƒì ߢ¼?u“‹³Š U'K­kƒŽŽ£Ϊ6Fƒ§oÍÆ9KóÛ�PÊå‘v�hH£ö� é±ìÛaçì�Š ê&u™À ‰Ô¤~©5C- S:**aSX PIU�X¸ý[RvPOŠß{#ê¸:³ÆFô?CMˆ³¨·5Àé¶”‘&â0)&ŠIâàdB`xª¬®lŸÃ'Ñ!TØ„ˆÁHKMä ci´’¶,é(vÏ‚>;Ÿ ñŠS£ŠQþ)¹u0¡6À¸ñc`æJ áÒrdí‹E lIsž ??/(!HI:‹PjEXÙêbù‚ÙÔèô&…V*ö8†ÉœßýÏÛ‘K06ƒ†N)AeC#K…œ)²Ô ü1z×°fÿ¹ãIøàpx-_|„zRMdÁœn ±1Î2⛄}ô Zz"Ç2r”ûô.Úï™´C¡tÐiWÚ‘LVœ&^½q¤-~í#¬Þô êðeZ7íÐ0{’5͈zçEÏEÚîco,ƒ�=ˆì¢¨Û>O©c�W§Øî~o‰?yŒÔ…Ìqý½»öl’‘ºÛwoÔñS{–ýU_Â#}ÙR€å7.ç„D•Œ>A9Ï´3Ê)/Ô^Ú8I~úÙ'ñÀ=ôd°8´ž´/äoåšo›H‡@è0¤g2ˆkæ$Ž9­PÕU”Ô0“£wýãy  g:|==])Ý CÃ_÷'êµ—:[¡É?·þs.æÎ¾–Tt^ê*RÛÇdc(©ÌCøÀaÊògŸ�u4�}¾_ăvœÉ` ô («,ü�ÿÜØÿÝy㯉ҖÔ{'ŸÚ2gU×ä—äkÜñëwI­‚3³ŽÂ†#�[f§È_<O=ÿ ¦O½BÝì¼O¿ßúàmüë¶;I�”�ðÑCpß]÷’º3Û‚|áY�›£[Sg%¶˜”£GÃ’´rj]•…ZÿŒ{H(Ò.fiívÞ×îcw*ã·ÐÎ Àjçè�Sºs«UozÈóvü›~ȳ’?Õ>UïÍßtúK>�ôýiÎ/M²š¨æj¿®]±íÔ~»ûSžÛíMþO|WßÇK¹µmhßW×?Þ¿_Ê9ÿìm2ÓÓ™�Q‰äc‡±ùûUhf§ïçb‡s©¤ŒÖ1S#‹™µ¤‹4CÒé$8QÂ�ýë[ï~†9³è dyô‰g=f2³ré䪥£®mMtŠ™“8‚30°"½,m».fp$$�Æ}|ÆL¾43(ñ_f¤üøÓ�¨ ¦Ø#O>�?û .®Þ˜n�E“úcÍÎdD §ÃóÈalÜ‹‚ŒX››ÁŒÎ¹ ˆqð±&HJê?Û8P›ÕÉÙ›·ïb�âYD…‡ÂÚÎÙ%(¡üŽ£�5³+PßiÌl ´5VÂÊÜ–Ôzæ :¬…—�!éQËàa׉ˆqãà6¥¤•Óa�a9³]››¨�ªá\‰™¬9jçBúÔ”cp§Ö[>é’k‘S©�Ûï]� RÓùôŒ&¥_²²·‡{`̬¸]= j;ø „©kµl#­[¹ɧplÿOœÇ0󣽕Àu;nùç}Xxý?(QŒ ›7㦛n%�ãVØYZÀŒA�'�Å!3'—Ù† ´õsé¶Ç¢y ø= ÇxßÊIEì@M4C„††"�´z§OÃÇÛc"ÇbóÖ=H?—…)×,aD¬>î¹ùŸF]H$¼M:±á‡˜U\DÝS`ç�«yÏ qý¿î‘ê^°…ˬ?Rôõ¹ã_T 9wÚ·i �f'©Ï&¡”‰ ÂÇÌÆŽk™E� _ ÷.3+X‘±¯r2�4‹Î¶;\|©™ÀçÎuß¡µ‘Þh_81C6=Ÿ÷6»ƒ†DÃÔy AÐlôs5ÆœÙsfSÇÑÓGí&0ï™W+ó¡#—1Fú釽÷a�y"99YÑúL­nà³ò¢ùstŒÔÓ'•j�ñÉŸµ­�²ìÐ�ä§Åòݮé”s¤NAMU-@†!í\%AËJì§.êØ‰Ó°÷ø̘um¤*L˜r¥b�JLÅ;¯¿ŠDjÙ“vrêôi<ã'OÃÜ…×òhU¨¾g; ë¿~�`l*³Ø]0›27ÍŸ†ãQR”G@O)¤½>~"ºÆFp ~^i§Î˜®Ô³šŽu ³ÁshËXÑŽé«Þ¿‡TÐ X´xiÇ Í>ÖÕí¿«Ÿíëº.g™%)Çã�Ū•_a¥`(avŽÔ©:öºh×ÉCI~æÎ½ËnXŠú5$ð§ƒ}ˆÆÄB9í©S‰¸öº%X¼øÚóªáÈöîæê†FˆoÙ´žÔµÞHIIe"™’” µ2ç¤ÃƒlRºÇ>²Ð~Síõ€Ô‡ðYµ?¢.:ïSì ¯eì#}G+ç­Ôú±/á[q;‘ÔQké¥}•÷HæÃªO@æu—b[V‘Îþ£÷¡“—U#TÂRñwíž [»˜4´)�kV©„{×H–Ë}‘{$ç'cBbKc£¦’fγ‰~ËQX»é;Ž�©|ÿH››•€1gÎR[»þ¤è®(ƒ �&ÒOBªXÑ^—ã¹ð¹Rò#ŸŒaCx ‘PoFv.Šªbê+”î³fÌÆ)‚j³˜0cme�çîéøüžꨆpŒ)ƒ=ýK� ‰bâO™2šÌ € D}ciy�¡’s€‘¡n(;·…�ìïçL#«ƒ¢#Fbó�³`8?¬HSI¤Ÿ=w&éj]p0f'ô”™[Ùa@05}+²¬;œ”ýð$è¦ÛQL0­‹í¬… áè€u;s¼N@Y%eü8ŽŽ ò€­³R*ÛqŽ×¦Ï~"5…‰ÌŽww°PXÏFŽ�ýº\jnê1�ª6Žî0b°T uÞÇ]{;NPþ/;¿ažfÐg&¨Oµt0HÄÜ:Eh£>iÂ>f9R Õ�㥱n¬Œ •ŽÜ”³8vâ0J3N‘µ¢�zì¶ð°0�éq5œøtu�*›€^]S3¥ܘ¹O]JÒø¢“öO%uh=¼x=Q^TŠÝ¶îÈ Ç{ë7ãÈ[/’Ä´6P«Âß^™y(c» ãs�gnYPˆ6Òá·�¾~na:Rõ�a̹ø�æ¸V±žÅÔ�¯G Ù–6+MJû_ )”“møì ¬Q¯1TäŠk›QÖBÐQו¥¹dÎh™³Ép%ý¾ �¿Ö…9¨e ˜ ò|mºÈðBÖ‹q¨Ìc KVŽ:Šý‡ã¨±[��‘ÃP_T„)C<¨W[…BÚFMuؾ?›O•áÊѰg–ª‰^ ŽœÍV$ÑŒ;ÚÀŒmÐø¢,b )€�ÐÔP§ÜS7g ÚTô}+±æÜߺÿpiécסXÖó mOD3ÐæÄѽÌ|…,Ú9ÍŠCöGQv6Ü ô7Ò¯üɪ�˜ õRÿüÒdÓ>µuu@-%,HÝojn�’œsèßω6éY d ¶ê¢GE㺥72è{(Ù@FkßÒ¿ì»øÉºûÒßw ™‡“]�óöÅhÿK9›Òß“‘~ô�ÔñRÎñŸºÍÿ@Ö¿ðÉ”æŸã ÚÌ(Zc<ûøƒÔ©(!€šÅ"ˆ40Eؾs …†)5($Í@JJ >xðVTå�a'Oê7_ägžDã—ŸÐaû$¬Zš±Î̉¢ÌÅšˆš"|†4DÌH›H ³ƒë…»_ðªUß’v&T1˜_óU/Œb%i_¥»Áw*º�Ú�¿•æzP¤¼ñNwıNÚåDâIréoÓ¦(9 h8+ÀǼ‰0/Ëìûĵϼ„Ť0¾ážbʸÑÔf€üÂÒ”:iê¢ßå¸bì\¬(ïÁ¥l{±c]ÊzéØŠï^^“÷êSš‹k>u’ú§«Åjî’_iÉjŸ«bÍ x¤‚öµÈ2€ô¶ ñÇGÇÈû}†Ïž» ÕŒ€J®5C•�³+ÐŸšŸ¾ƒ¢µ«¦d!Š#­÷µ � F € ¢±*`ªõ¿VXµ7§0jÛQi>Hg.†¦öA”0C®²¯]WWšîÈ(G9¦¶cNö3q÷l±š·DcO킚2©”v+Gi(¾V\…IöVi/uu9Ö¶4à©o †EÃéÁ5Iß|‚·› kÆv(çÏ6%Q{KMGWW@{ÔßM³ýd2£m1‚pûFl‹GPnj�Qn¹ÆzÎ"§&À”“½”¢L�:‘Æ:H Àú S‡0îÌqø¼lã»êGCÆ=4Çó àHQ»˜Ñ Ð.ÖÕõ8Ëp¯ˆ9QèG}—„T¸Ñ`Ûié�O>¼�Ù³¦¨6 ÀPË8û ¡VÍiè;†àÀ¡Sp ÃÜÉ…Z…¥¸÷¶™h(:D]ט§ä³1Á½MY°INA8£ûÆga²N3vÒ‰Eª“qÑC±déu4½õÐEaFn‹qøîgß +»ç²ÊÐÆLÕqŒLßH-™pß±t)ìͨ9T„¤o¾„;ƒ8|Hç‘Åè¸&Gl=~”Cñ8ÊìÝ¡V½ã_(-ÌE.3ï]–¨¥ÉÄ ƒ¾«?šh¬xy1;váM°!xÞÀªî§~JЂv#A²AÌsÎ)šq­œ$Z5uª±KÉlMàõ»à5m!DÏRúˆ«®ž‚U_oEKkæS»ÁU�ÑŠ4~­šÙÚziÛ¶s—üm}K¯Óÿ¥?¥mÍÏî3å]MÕ·€Ë��¨�Ý s?¬KÚMªžéˆü9ƒUŒ³]©‰ˆcfÃhË‹O8" ®:‘>£¯K†#4¾<‹¥|ö¾PíÞÞëäwo ʾ¶ù#ˤO¹T@Tô}¥Øýìà’ïÒGªý“ü¾Ü²iÛ::}×!Ú‚ÔB#´ÇëK=¶“£Óß°J}‘ê1'?õÍœ�ò½Ú0±y…(ݳaÎN¿ªÿ‹/=£\†d¬ Àª]d™´)/¾ò æÎXÀ(YìÝ·‰¤J×05¦m0¶4Åäèqˆú Px vÆnÆèˆé¤È=€-GWaû�õ¤ºš„›ïœKPñ¼´ö1 ŸŒÇ|ç<€UÎ'ZnîΤÕ*èY¯[´Hq$ÆÒùSP˜Oº¨¾í+Ùÿï,öŸ05hIŒ£™2éꋞZ²X`•"úq4Îì°Þå-Ò^‰¶�õ9ÚÙaáüEHLLbPš;|MÍÐI›ÀÃÝOÇ÷‡==c{)9�V„v-Û´÷qK×|¥è _Î;¬Žÿb/ˆ¶rkCƒFô¼ÿÈûÑ»~åo±Õ Uwëדּôùð"Z±NK¿,cœ ¶^Š#QûþH¨Ãȱz;#UQݧ{Ûî9‹ºì?í3>ñ8©ò·£ 4qgèØ:ƒð ómâÿ´:ÿÝõ9‹j‚¬S¯YÀh;íÆ\l‹‰Á# ¢pÕ‚…Ì2*ƒ«µª èÈt²¥ÝXF†˜Xœ¢näæõ? …N5KRŸ:uIB&MŸ…ØØ£´ð¯5ÐÌ4P·­J×£—?O_”œKFuÙêòÒ0sâxöav‚RÐʹͫÌHl#U^na1©‘s‘UTIJÕf´š»b@È ŽtXfc.ƒK™“Àñcåç)”vft$æ0#¯KcŽ :–½Ý˜éD{_ƒN䤧’V�Q{-È8s>Á¡«’PÑHÚ\êh=qWÝK÷þp¢/- /´·¾BCL½ÙÕc¨fs{oR+gÀѼƒZ§Ì@¡N\ ¥¡á‘´I;1ˆ´‰éÌÈMÉ'ýð>êN’žn7©Úg�W{k:b«aãæ‰µ;a݆�˜7¯;3ñ(ÑÜ‚êÝr®à‹úÚ*‚ƒàÅ  'fØV!— aáõ ÕЧã5%§”€–¥>ZàÅ졺ÆlÛ}�†�¤Ö¤YöE+³T|©ãfÉ Ó†ºè0д“¾‚·lG 3sDjÇÌÊ’Î÷Ó8z<™Žhg„xkPÓX�”‚RL ÂÜk¯£.©�ÊÏ9ÞlÚ² •èpÁ¦k¤1ùKÖ•ß~�Å×ß@:ß›H9èf¾ø1›+É ƒâŠ:·�≇îíYWÁìŽßò'«v¹áÆ[Ù<˜im€èèIxæÙW€U¶±%5¢?i•Í©Uxã�w`hø0\1c)¹©§ŒQc¦BŸÙh§ ¶3üäÉS>jH%|=i¸Iû�–F0e^Ï9Ý9÷|÷³5H>“?¶¯LÎã› S©Ü Òº¹ ¡�™]'ާžá{��¥K—)ÕM¥ôA Ç›æ¦FE[PûÔïB+=’v!A"eÑ¿`�‹;‰‚‚b‚½Nj×gå/^øf9&]ø»öë½qV6µ'NgÀ]†† eÆÝqäÄÓwàA}FK]‚>&ˆ1™3g�Í~=lÈðžC8992@;”A3ç·uƒ\ê}®üîk¸Ú™³iFZbÎÒ72”™ÿ%¤˜võòÃ˯wSÎ{2“Ðvîõhb†›j‡Ô›š2ø¼TI8袿´¯"s~ç‰s-V±g.ä+Ûr%DŽFY“2Ž“®þÂÁ½ÏÕ}Ü_´cU_kïí´Ë|W@`ã‘у‘ÑVâã’õþ§øÎý °joß×wñ�‰OLŽ#÷¥¶¡‘¼eÐˆí¤‚¾².C/Sñ·™ãš3‰Ê¡Ü bÙ——ì¶FI0�…VÜVöÛL®Ach�a‘KsÈT‰L²™ &cD@Øp‹K PÚÂ9¿7^= …QW"¹³Óñ­ä|[CqúxNçWãhfýeN¤çÏ…½‰>)qIOlˆ„ñ˜8*‚™›fÌà´Â¡Ôê�꣨²‹PëØ7ÄbêØ!øâë/‘QXƒysç`€]ÖŒÅþíûÝï)WÌàþǪ¨I=œº¡æè0÷�«£�ÔYç2”T oŽMö–ÚVÈÚ l�Ãw?®ÇÞ“gѦ£ÁC·/Ã:RõOa GlBy[”2ðÃ’žÊ ´UBûy2³¿• žÐñÖãDJ!œüÁ€”¸–&F°ÒoEogzY1X@É xqê*Ã`êÔ £FW#S²m47ÕའmÌì­­n‚™0„!ÂP¿� L�wõ"‚­<65Ð͹ŽA ú¹!€t¹& )05c澡Œ¨ŸZÛHwž×Ê‚YÉ?›ÛIŸ›Šú5]«˜[•�ÚÀ@Äå•Õœöð×´lÝ�Ú-“H!mÃmÕKMÕ]z¨vqC3Øç[·uü²ÍI™�ó¯ú ”�F·œÏvdJ¨d°DõØÉp!Xš›q·>ðö籠\�?¥Î�–·:7 øíÌ ´c§ÎÑ/Èà&mXÚÙÛ8Ǿ£û¨ÖN92ì;DJò–v”2(¦’Zôú:M¨®®Ã”QC˜ÐQ‚Z}s1HÍÕÁ qé%låë|p,) [cöcÂðp^{#ÌtæO»¡“ç®.ɦ¦¹'�o}ð�AàÀ@ ŠœFöj}2Ñ«±Ã: žò ±ãñ7ªÙg !°\ËL .Ò38`|Y>8ÂûZßNùˆØ¬[ûµ²]ïqY �]}C�Ö°Á±sûÅOâç‰ÇŸxšÁ ¤ôgV«0–°Ÿ*`ß&šÃÂñw™K ›To¿ü¥œ_朗ê纔ãýÖ6êŸkŸ ­ËÎ:+ú«ÿÓËÿ@Ö¿ð i,8¤ÁÙ²“Ôž]èÐ1D*iKôÍ,©ÁаQ(¹ž)æ4"#ÇOA2©$’ÓÎÁ�éÿžý‡)ô[ÝŠoàQSŠ|Òuc´éqNZ&1°³|Ð .Ê­9~ä`ˬwß×<ñäsì )Wv”7â»È*©N*õVˆ±ROÁïú7ž«)xí Í”—^%¿~©�¦n#ŸÎtØ À*%’NP) Ù9œO°ƒà—ö 52r4³ïFáûõÛ cÄÐîú);]äŸ!ÿW�Ž9ýWË}’L:1zd#1zTÇ”²Ž¬l®W;>¹Ïjß—¾® *Øñg:Þ>ÿòs¤d§£²¾WM¦þlÔ¨%X™H'[' ÷CI[{զи(“ '­É—8ÒÔÈ:íë�ïríJ-Á³¹×[yÐòÖû Pªf8ÈõŠá(Ù+ê}ëý)Ù¥bPÊý”O¡°�»XÉ"tã �꜔õª±›|2]þþŒ®=¯áû‚†áÌ©#È¥ÁÙACª•™OžÓfƒ¦‡&°( °~áïê’ÓȱšCŒò:M #ê!…�ƒqø R(–=ÿª_¡Fê�8H³›F«ÆÚ‡qæ01ÐŴʘ}ñ>†×—Ôx1øA¶“²‘ “ÑÏ¢4(ÁŒ6¼”Dº¿éÓÑÅÉ×›Ù54w:\©kS_Šã窡߀¶š<|³5ž…AüžC=�Z8jjÙ¯œetq:ô7ï„ËÑ8ø%¥Á•ÚÁ%Ì&¬aDœv± ‚�¿Â~R˜¬[ƒeË‘BÅŽ†ºu( ±uou¥0gr(ÊxÍ匆:aãN(˜ÓŒb-g\ 8WFª%{#‹Ñرt0 §ØüŒÆrXå3’Œ›�1F�*,0f{O9‘ÞÉL3/:d»1-Ű Ý'_icàI»Wß#ä]RŸ·´Õ¡+U² GŒQœÆÒ֤ݸ*B­£¾CU…°³÷dzoÞŽ¾¿ŸQ.¬­54 »pǫ۠ŒS.V¸ê¾×”6'íNýëݧõ\ÌÉõ½é-4/Ë¥Sï§J‰>LÀngè�^ÖqÑR|¶w –ͽ㼫µùìLðí³?oe¯j!Ï07jVœ>†;o»§u©u5o½ÚÌ£½›ös@²Û¥ŸQŒBö3òlØüwi_jSë¢Ý?ªË.çÓŸYï! tø¥/ýÏ(^}ã!F·zr¼/d„s!Y=À`@ú¦’r¸ÞûVÿ¸#I ©–_z£Hìñ3˜ª.×þŒ=vú*#HM˜‰_D½½L…nÉÕ‡Ž*�ýì‘Îñ­¹¡�ôrÏàDò.ê©¥"„}Í`f¾>õò-p²ö �áÕ¤¤† ³‹Â�€�•Z˜YqÛ� hqó `è¡}Z:–ýq×í+z€^uåO×R_.Ÿ4ê#ÔEÿÖO}hfÜpÏﮇ #‘ûXOàÎÛoÃ:îGð:Ì�¯<£ –”Cãå�ÈG^Vlí“.ã¤X�ý¶Ð÷×ïÚÚ"lÚï„|W0$ær‹OØXä¯÷»x¹Çþ³÷WmGõ¸bSµæå(cß_Qw9ŸfHК:–ªö•Œ•j‘ï²ÊŸÌ9´Ÿ—ºÍ…>¥ÞÝöï/ÎÈîßÝ{ȱÊÇMcF_>L8A–Ò=æüçõc7Þ¹”ô•µÌôÎÂj²¡D0{ËÉÞÁ~‘°¶°ï¾ Ÿÿ§çœ‚­•ÓyËþú‘É Ì:fÐM^ynìks˜ñØBG«ò˜]cÂùîP2ÚTÒe ×I0/ŸQ=Þxã%øû¸âé§ž¹,ìܲÃ#F`ú¬Yغi†ÓÞ  Äá¯Þ¥Ë¶ ¶NÔúj)Âp?WÒf"ÈÝQ¡·œrållZù1ZODsI&\ èÖÓtBW… ˜Ù{ü‹¤¶š ³ntQA»Õ”t— ¤'ýä«oàêfl:‚“‡#mêŒ?Šújytø9*’¡ÔÊl,?Í,NsÒÎÕ“¦—Ì5Õpõå\ ³ŽÔõ®0¶ñÄ}�z÷}XÛØ(}­¿œeï¾ñ^»”ÀrNÆ‚f=Hs,”Ô ½ýþ©#xçX¥^S¦^I`Ї¤�dÔyUDZ]{„2HuëÊ·PohGJhs2ÓiØ´)8³{ŠJëp.ñ0yk2NíAmÞ9�M îé&«ŠÑå4ævîsónV´O?yaÌÔbÏÌç)®v0xïiØ/\‚:æ¥$3<�Áø°JÉNŽS>s²’9dF·‹>øl|ܬ™5º�ó¤_šæìïä½]xí2fDoÃ| Gj>ÿúÛp¡s~¯éñ‡˜aØ?ºÌ>Öãß�w¯@ ûÒ6êzó;ý´ßDÀàÃw_G#³‰Ž2#v÷¾ýôI0ë‹A]f¼&Ô ndÚIE�1.‘�Û†ÿ�½·€�êL¿ÇO|â“„¸»"!w(-P(P HÝ—Ô·¥²õRowë^¤@J�– � �@qwwÿŸç†›C‚´ÛÝîïÿ}?ŸäÎܹ6wî}ïó>ç<çØñ*B\\œ¬º�hðàc�vW¨žÝ®òeþÀ¿dæœxÿÿm=%œd{éy0Ýã°·qæïÃ{‡ÓKi‰WóÜDœ³èº=oÂÁ‰^ˆC{æ»Øyh#š– _w+äSŠ5¤ÿ„°Zº”ñ^V¯ë¶¾VYÆÛË #xÍ9š„#ûŽQŒŠ)¼†Â TH3"Ï.@kdh82‚Á5$ä c*´¤ï `•ñ Ä(ÓHn@â‰'U«nì20pBÀ*ÇvóóSásЪÆHjîA–Ómߨñª]5YAý5Å$&ºòzï­Éþ%Ö’c¹ßî|UoKö=OÍ�éÆhúKËgA샯ÿ;š>X_’–t›lCΕAAnØ*ŸKì%Ǵ(rrPª«›Œpäd*­ÄF2ö9wsÞkNoiè�ê‰O~ÚFñ23ú 3?TÙŒáÁ*¦O˜4Y]ÞØÜ…œâr„ðÙlbË8‰ ≔,þœ†h­®A2}ZÜ©TYÈg{:IäÖ�sôöÄ›_¬†•¹#†�…ΊbªQ<�7^~ µm\?ÿ”Õ¢ˆ:û÷í!(—‹j’„"¨ÜPUQB"R>ùÙà™çßÁìy �ÛhƒÜCñT„4b%¿;Õ5(—;bÇ‚»ake…êÆzÑ3•`c+å‹gÜp/Ì\üD€‡ÖZQ¦0+? ãüƒÈbE«�y'¥•¢²¸¡$´ä—•Á#z UÝX©I:ªkìJ:�Ž?“³« HŸ8š@å VxrìëìŠö†"j,�L/õXW‚Ü&ð²ƒ9ã›ÊÒ d‘•°£ú{8ö`\ÕÇöBzõ6ðyÍñ ÇÓf´þrN9†“™98L@y§‰-ݼYLÂçôiÊk›0ç]WÕs ¼íJ�ÐbDL´¡_w§¡9‰!tP±°xÎ"³q¥¢¦»L´( ‘­J¤”Iä.a>ò+*ˆT’ã1 ¹9Œåøl¯¬*A Áhæõì)uìÎïåÅ{Ý”-fwa¯µD:¿_&¯3˜™Ð§5�U¤­Õ‹»p•+X¢53dÿ×ÁÞö¬œn¤?m¬ ÚØ×w °¢öŒOÓúbÓì+¼½XeìŒVcc’*,è� Sæ�œAf‹9b#|Ð�Ï,“¶*ªe”‘Œ /’GR÷á‘¿ÿõÕÕ”ÁvŸ¸�¬”¶#éã ¶nÙÎØ*|ı`l3I_ÆîÇ#PWWŒVo×Úôÿ‘ÒÔCù $�ΚŽ6ñ°­ÆÁãiНxX¨öìf¡‰q¥¼~º›<Òó#üÉ/¤oœárÆŽ«¿Z‹Úeü¯¶ ß~¥Ä$u ÕèI¶ÿÕ“üW?ns +8Ú“ÅAÉÌþq“i¨Ý�Í¿Ä+²ë_¾ Vd�:±”½žì[²E|üaçè„Xè è¯|=‘ >eh‚+îÃÒï¶`ijoâÜN“‰BÖÅŠÁýQãåŠø¦®–+B‚m‹è�ñÅ—Ÿ“åw£²þ°¡qXõÏ¡òÕ¾ñ2 öï.©ËÏ×"Œ�ñ¥´|V&ý°{�žÏe{{œMZ ¸z9«$ÙUXÙÿ¿t¼”ïÔ×2’´R� YFÀÃê};4(J•�y~N‡î5]žÞÚKíüôA…wåÜ®�[�N9';²œ¯ üOJY6âéébÕLV,¥p•3hJC—‘ªkë0ÁÉ]¼&•ïLJª| b%€”*y­ÿÝ„Á§&óä·Ó%èSƒG þ„�¨{•��ý'çT¤u+Ä$6JØ©œ[©Œð½…‰�-Ù`G¾…­£ %ºÉ';N˜Gv6p çlÔ�÷ bÛÚnŽ]Õ%xÛ%@s˜ ó1Vxž1M™ á`¤ŽØþk<61ÙÓ>Xè­ÙKfq¥rË Úhº0iüŒ™pòwÿŒ¼iÓ5ac¯À>ÿ�X[K™QÞùÙ0>s Ay™è03­1ìè® •¯VE)²d9îdAé¶Ö� ø”„ s+Lºa.~úæ#ìxbè /´RöìÖÛȈÅ[ŸýŒÑü`{æ#¤2Ø ªJ%PÙ‚ðÒJÝMž÷Ú,*éôzÊ  \TF.4žÎeBŠ ½Â¼|J—t"6Èñ I &ê�p )§R1ŠÌ²Éƒ(ŸAFœ™ïe•å”[±¢lÌ <ûì?`äàŠœÂb¸¥Ã%™ d4V1‰bNO''v¬dP�‘ÙnŠhã.bf]<�í hÞ´E©j–ëA~WýDp÷uÒÉÏžQ7¥Le¾ºì9ð�Jr�ù�¬žx] Y¹9¤S²ÍXÀÆ�‡›—,g"ãGÎT®o¹Æ�0!ìÔù×KëGý÷BLÑ¥ås¹'e %ÌX¬V×S€*ÀªÎ—s¶ê>‚ž»Ñd!W?:›€ï¼$€µg%¾�þÂè(ÜsçCÊk!Ý¿ì~ÝE”×Òª¿³ôú~rlò÷Wnò<ý#Ǩüåœ)Ï›µ_ô ”Õ{D÷úþ+œ‹]»vÑw)ß®ù/¿üû2†,)gUŒRVMø)|òÉGðc‚Zd]0_*\XÝr�V][È„¯?Yö¬ÜùQI†’hâdÍÁÚ@V@ã­áá”U"ÃúÔéŒ�»æ&0eŸ}ý‚)}xo¾÷)õ~åäyÊÞ~¤ô�÷ÞÈD”–ßóðyG rz†DN ­i¢Eo9L0ÜsÇù×îy¸ÀŒ?z�èoú�\oúÛ€õ®ïÀÍ×Ý„QLö¿öêëÊoôú»¯Ò‹0’rVåœnÂ4VCè79IJÕ�>¥T–öF†�XIˆÓßFoïå|IŒ¡û=uÏ¡îëÞÖÿoÌ“cRAN5!¨{#ÉŸÜÓÿÎûY}Hÿ.ÛV÷#ý© ¦êOå¸ÄÓ¯·ßK=fõûèÇ~òy÷¼Nåw•ßH–í®ê '×�~A˜üÅ÷\Rž«£”>þr¯ÙÏŸÕ2²Rð9A»èèXVDvfîºñ~nA½¬o~~?¦ŽZügÎ_~»õ‹š2vlì`¥gf};™H�ˆàx”è+„½5=­2RP̪€­ûö±Â£Œ‰O/Äï=„#ÇS’òZ|¹fƒâï™F¢`{=% ™è?ֵͪÿ|ÃE¡†^iÍ=sO¿øÚë$ÔX ³±LQä14hAUÉ�™aTSŒ0V“쌲6K¸9{2QY…wøs\°…ž¯öJËè'–ÄßUª:[ê›àÁçÓÔ´s!¸4‘r9™Ù”S¤jÞi²åµ¬Îͧ÷˜,9wu£×j]3Ÿiý�Kû�÷¿ÚŠ÷>‹Çó¯¾D@"ß­ßH/Ê|þñظq=:ZÛXÁ:] ¬`qrÂ?¿ø– Y=+,ŒQWÓˆ•/®Bz^1^yý’{(‰ïBßÓ.,^þ6«EšP‘_‡GžyLÙŽ++J—Ì›�è`ÊóÆ`ïaª °ÒÒÙŵç:I<²—Ö=žˆ&y(‘ é²Â\‰;·P‰}»~¥Tb‚ýÁŸò·¬v‘vœ J'Yµ<è,ÁJÀÕ¾Ö7Þ}‡ê9U˜Á1ÆŸÑ®œ±€ÀÑ Þ¿� `ýáEÒ ´Èèh‚óCqòؾ3 Ü}üʇ—ñÏÖÖ£F�íu W‚è‘l‘@IDAT¬ÒÖ}ü9ŽRþ² ù9y& aÃJÐfžÛÖ¦J|÷=Ç¡ím¬zòcõN1- è]lÀŠ­ ãaeBG ¾Þ>¬;„Í›¾'xæŽ}‚^§Ó•í¯ÞËZíqlëO¸éö›‘rò4V>üæ,¸Vù\þUÓ QCò±€¢ýœ(%êæŽáô89v*¿žåä…È ññû¸ç�‡�DE _ʃG…qÿ)ÙŠ¯«,SD�~Üøñ˜½`1®¦°‡‡†ŽžŒþQ#zVY΄ ´%¯ÇO?ù�Åðóô@”íG2ˆImV›ŸÎ†7×/fpûÂYÈ/©¦4ø·Xö·e² ¥‰ÜÕ3ga_Â^DÇEbù}ªý®éŽøm8ÉçUDø¬þf->ÛBIUOÌ_¸A$ »‘€ú{›€«½¬é…'ñuü[ˆ îýzÑÝߥ¬É¨w0o0NwuØX8œýû <ÐôÇŸ×Ñ#1‡ät”3g™O9ÍÅóo=`U7–GÂÔ/?�¸ñSÔY=SWæ ä:úbÍL7I§²àB©u?öE”×JÒ «I†±9Û?tÇIÝDéž é½�øEš~~I�¡¤ºSb˾Úü‰·Ÿ°Êr«HîSâ$¬Õ�oº·Ù !ûoÞò£¢þ282ª¯Ý(cp%îâñȱýYM¶�—ÍVæIeß› vέÌç Žd£°™ ëýýËyû Vù³uÜ`tPíôizl{‰Ec3(»ÁJ“6´“ŒvàÈ)7›ÃÕ� 3ï™3©$D%�!^ŽÅ×^…©[I¡Êó×Sú¶‰$…ÄÓ²,¯Ã˜Òöæ W¤�»ø›ÕòœµQbÙŠ¤›Û5n$kYÃ'0Œ÷˜=Úü|�Cû¾ñhЉÁªo¾F—1•'(ç­¥šÈ¸@o$w!›B1 �r?ÆH6´CËËÌd±g+Ü] èÀ>ÃÆ‰j#ƒ["�ÇÛÅshÃØ¡¬¨#çΧÄr1hA7“q„™a"X+d­£7�ŠvG)e«ËYÌßÞÖÒm¬ Lµ2óËñúŸ¡³µ…^…TÑB k™œ¬Í¢F! ?r Y¥MŽ%=Ë¢Æü¦—9½Ÿkê:áççË>Œ÷Ÿ�{~¡ÆÐÃ5z@ +_µô¤¥_+‰G›v¢\p}y› !¼¬¡$éL»ú:¥’¸�¿OU%Š™/,/Êçó× nºeÅ)¨©oÅP’�˜Ç-eÎgºq‹K='—ºÜI*ƒ8‘¸v©Í ‹íRÖ_NðÒd@.2�ÿ×Î?)ô¼�8Ÿ­¶þãWHf†ý7ijäÐ�}ÊÊÑ:•º[[:{ S^Å'j4|àÜ·üaDPá_‚ÍÂEø�FÌcÉ6”*´÷þõ.öíÛ‹{î^†n¸Ew3—ôZ’Û•¯>Ómp~v ÕhýR6�p&�U¸6¸Ú^pñ>d:ùgbåÑërºIvY@×ûŸ8›Äéu•ÿèÌÃnÆçíO)ÔcWߟ·`3d½ú};/ø=�IÀ—®Â o¯éc+½Ï®Û�¯m…†<·òj´®[�-C(éçˆ-¾BU›5š�é§dÏ ÉÕ­4'êÝ݇” Öðzè!3ÕtuU‹a¶ÈÍI“ßH^Ëg-]°Uß+êýS °å¸ræLP¶Uo9g*¸ÒÛù“å0R÷i2bLÍÁɳlmø'­*ëÞ‚#g*<õ„‘�µ{û6œhÔ Ö¨§�ÃäàŽz!$kl ï^‰¿x> :‚‘ž¸b$Sz¨¤¦™‰##ìÝŸ@ós7‚o18tì8‚Ãcá‚yèϤ‚49ij@þò ÏSÞ«�u58HoŒ;šÓKf–~{ŸûÛ–? þ Ì7®U>^M¯Óæ˜ôPpÁÒk¯Æ&ù©•fX¼h.ýž\é•Í Èž} ©ép*)TÖ[Éßnœ—#‹òôwsÎ{ÛÛÉØ£tÆÖÓIüñ\è³S‚lÊ ÛR~%л%Ô¦2�ð&+�„�ý°ä@«øØOð´í¶†‘X»qÖ¾¾�«×â3\;{ìÉøàã/à>/¿�íxáé°¥gTc},(7fKFX{{;v5˜T~î1V1¨´£äf_M½–zû¼ìÞ•ÀëYîÝ&Ï$a�JSå ÿíNˆÇæ—Wâ½£{0˜2ÎvV&°°6c ?K©°çÃç”Eý«I8ÛÊ|“—=¡ø�ª×¦zýªËü•¦Ò7©çM=NµO’{R°Ô¿†å»üë³7•¯¿+#È’»ãÆß—û]Õ}Ëzê³Dö©þ6òZȺq„Ú¿öÖÈvþêM=~õüÿžã•KíçúêKÿŠçgÓ O!Ò¸O?ó >¥,âÏ›·áxÒZ¼D9ÈIH=ZˆÇ{¼Çsµ¯s³ÿJS éùøÞ— vH$BF�ˆ�Ûî��ÌÜ&•Ý9H¦÷si|,YÝj«'¾¦ìù™ãÕ8ôÙ«xi߇˜5í6Ê�À�C»ñÒÛ�cÙí�bÇÖD8¹»âtÚ<ýð*ä °EP…`ã¨q¿ žY: ˜„y…UBp„]„=É=÷.»� ÙaxóŸ«”uㆎà`+Fy}¡rݫʽݗZ÷Ïüì•!>üôm¼½êÓóv³êí×ðÖûo ãXfÏgoÿóuåõ�·žßGèÞç=+\æ Ù†<ó¥]è~Pï‘¿Ê=¡Ûï)‰ÿô¯õûËw×ýn;·½í_wýK<e1ÝcP×Ó?Nu¾îTÿ~ïþu·ùg¾^±òn|¿î[5†â†Û¯A�wúô§ß×·˜9ivÏ®7îø3Ç.êyÿÿç§NÇǼ†Xg´±Š5p(“·”åëdâÌQkN©¶ƒ¨–$‰xV”Þ½iÑ&u­ñÎK+q†R¸VvîôH³GTD€"‘;••%M"»º:ðôc+‚KŒ=]S2Ñjh-“yf�5¤ø1®&0jjí„âôLV+4"0Зòô¬pH-`å©A#Vv8PIÊe´°È)®bb’Rƒù¥ô)5`¢�2¸µe¬Ä3Ä’½êëZ™(L‡¥%ÕH°k«-¡ÏZ2H¨ihh@ -~Îþ~Ñ“Y±kƱûQìÝwÇN$à�ûîÃ{o¾‚Å7ÞÊe›ðÙ'ì?Ûêqû}OÂÚ¸“¦ÍÀM‹ç¢¶¹�¨î1é V�vòü$ò9´ þLðMš:•€Ä08¸W\1 Ù”ܯfR±¤ALjJ3À×—I꟰gÿq4:bïÎMç]~3& AP@ ž¶Ü_î¼í|öÏçHœ$Ù0‚Ò{Lç—ä°:Õ ûÛì( ÂûŸ~Ίs   ¨n»ãæEHI>¬�—Üô7œ¡l¶x UÔ3ÜØ«öj„”œCÄõo?Ëd+­G¼C‘Kù؀дS…#’€¥›O�îf/úúºnÀݷߎ!Lÿ§Ú?Ÿþ®Z|7‰º�Ê.ߢ2Δ+g+•¾—s Koº…²�qË�‹`Ʊ’~ûáÓÇ7ùdå–áŸo¾Aj4¶È§æä8æDZ:‘�Z-=HÍ´(È+!Ù6€ÒØÆô�£__c-eÌéÚè©€VkÖ®Åê÷_`âw¯�Cpµ'XJ¯X zÆJü ­£b£!pÍ6ÞÝ1Žþ1©ïß|óuÆYCUg]Òô“Ï¿"p`Œ[—Îísù^¿âÛ©ÛVõ¾á_CS-¦Í˜«(¿¥ïÞH�v,ÇòÅHÍÉ¡œ§Ñ™‡Å ±äñѦ†’”½5Zã†ý·é/3yìX,z�U|ž(tÛIˤ…ó>W[Æ©ãøä³/1|ÒÖjµaì¸IêG—4Ýq”^ÄÅôxŒšƒOw<�'æ}Òëz²¦&Ó£p^¯Ÿ_hfüñ ”EOÁÒ‰�\h± ~–Kïei7ß´”Û*Fô_ØÐ¯Ù½Ù�ýã�žu+gËßɆÈ œ„Ã;�ã—�û©NðBÏ2Ùy'±3a5–Ì}Š9‚cøêË�q`_Á;Ê “ü>bD º(%mã€c»Ïgo1†ŒŸtó==;¸À‹ú'ŒÞÕ�¹Àbè(/QH å_~ŠR–ȾÔx\]O¯ªï{›ÊqËXV=~É?¨Mrj̪ÎûwLÕñ½º-‰«¤IÞ#3ãEthÇð°+éɨËêOk©4XµðU�Xóí:슧œ}m5¨ôŒ)$,œ.jeŽÄ¹éÇðËÑ,klª�%=NmæEº³:´“`_ «9ýPRQIö:l‹?„“b¨0—gÚ»„±bÝ9'X­ÞfŽ/iá<€D,kÌ�qÆÉü<4›!̼þ®Ô‡Þ²84m¾`å]VŠ^»ôn$=¶‡Iºh!HxÓãw"¾ŽùÆÛΘ‘  EjAÌÊy-w”¡ÞŠ}¦Y¾Ý‘Œ«FQy¢©•ìK Í´´®Ç©Â:z9;€ @y];Îì݂ظ±Œ H k¦¼q æÄØcã¾\HE²r™cM>o‹i©NP�9Â’¿ÆŽ‹À‰ÌZÔ,õpq¯”Ë0a1ÆG{r z[~X‹jö}“§MASA>Z�±‹¤”á,v0²²@ã”,>/ëëšàÌÂCËfÆ�ˆ‹ DYfN·õC)�ÆÎf~îLÛÀ‚TÂɦ¨ªo§g{8s”¶¬.æo”snohÜxlÝ´žä g¥Z«ÜaØVAòJL¬q’Ï{‹¥U5h*Ëà÷¢ì®²“~æåa„ªß ŒðÅÈá£Q\ÝŒc¡ÝHÂÐ:º¢2çÒò :˜±›=2Oƒ¡­;ªˆ6›6—áJþæ¿ÊB>ÇOœŠ.”-:«bIk› >‹O†7=uDzb·¾¥•tK*yn6ibŒ—�²Vc*gºÀœ$³ƒñ» ¡*b'nk&š«N1¯Xg*%’PmíèN¯Wúþº"—…6毉=4S!ÄÂ''ö0Vãx}ûwß±šÞ…c}?‚µTÝí¿v0ÿá£RÊ �ˆ?e¯e¬`ÿá1£~ëß/¶£ßUÉ*›<ˆ„-�7ûúbý¿ôùûoœ=ûš>¥,ôwÐÔÑŽæÎ2NŒ”`A¤Ý|^ûHa£_*Ëü™gžÆáÇq8»±”‚6Ó…ZWG P-¬ ;"�„HXJGŽCþ„Ev9l� íû�~&Ç'UµríKS�SeÿKÀ%l¸zV©2y’0/¢«ú^YQw±ïYBF ŸI0x˜ÞÚç¿UÎãYÙb©fØ�–‡V2–Ì=ƒqÊ3L1šW¤Û50ïg�Û&ÚaИ¹˜Á߆Ri†d1Ž¥ÿ‹M`h÷=Oð”ye凕©¶‹Ïµü\g[t)•¥µù¹ZymÕ…ñU0§œ ï®[–¡–ÁÔ2˜C¨«¥�=îž;Gù=[ó²Ñ”—¥‘ŠßNv^�O¾ÖsÝÉùÐor ˆ‹ø¯Y ©iÚ·KsªŽ ±îÂÜkç£ùèÇðNs@Ô£O1*ÄÇ_­AÌ�ÈÆJ ½›Ó¤±ýÛcó©×ààáDX0xÉÛ+&dÄDQRë¬)ÅãäâIé¢�d­8Ðw޾ Æ”õ°²ÃÒ% 1 ÿo�¸�îuéDFæQÊÞ¾÷þÇØ½cÒŒ,±™•VŸ~ˆ7¡$=*vVQú7*®ŽÎ°‚4©¶Î8Ö?÷,‰C~«Þ}ùu”5aê˜PŒj‡ÛPvIƒü7ÿ‰HÊOYêøºŽ1j…w=Ni?YØ �n5å˜D6ý$\Mq‚~VNd”kX­ÜÑZ[—‚‘‡I‚¨C½‰‡âQÛA`zú•ãèOèŒ o�·õË–ï±—Œug7¤2�”êÝ&²! ÈRÉ1#Ð?Ô\Az{x¥ÇZ�IXËïЂñ *÷ÏžŸÀffkØîñðƒ'É'NôhP›z½©ïe*÷ÛæÙ·"cßnŒ»v!ÒcÇaðŠ'æ¨Êf•ûS½e¹äZ³LˆG8¥ƒ³r°¸ÉÁÁЪVp€¹wÿ.ÄF’iíè‰ce¹(32-A°þð.|xx'ìr²¡e²MšHÕêþîÊÌ¿È?é{Œ<¼•>\½‡d*UR"{¬ßô¯aù\ú+3V%ìe²Ò—ìs‘~o“A²Y[K�AcC‹øW«UÊRÍ$±„ÜË]ûv–˜ ­•c‘CúÖ¿zBþBçC¾£´ß«¾ ׫H«MeBËàÚ˜äY¹/äµxJË3ã¯Ðö‘�rײ»±™•ª©{váfsÀ—ÕÍö¶¸åú»�IöoâAJ·{úâ…×_Fks‹âÅ«{ìïþëm>Þ X)àŽåËW ?_<€†*‹Üºl>„Åý+nÂï¼Çþè¤d$#ùhûfCŒ=,6¢”Ðý§Ymßëìãpí5xW4`ÒÜ{á:pvRm£­¹ ‘d]Çoÿ?ð4%ˆìXµã�˜_XõBƒð�_F.±~ Û”ëtms":›á—–�7SsÑ–—CJ[™xø Ž÷‡�>B®Ý{ »"_–ènr/¨ó.æñ*Û”Š µoT·¡;•c’�ê…–Ñ]¾·×²¾#ê.Ï0õûè&óå<éKûÊr²=‰ÉÕó"ýŒú§®#ë‰ÊHÕs±žŒóàÄ�=»¸\ifõ·éM)BÆ€ë{ôÏÁÅ~›žý/¼ØÅ~!™>ã"1wüDŠkNÃßÛ-mØshFÄŒRŽêtVöÝŠ‘—–l‡žÆ1¬~ÿ_lY™¨®ª:G.Tÿ{¼÷ú«h`ÅŠ'mp�ÊÀ±S'1yâdzˆQ¾—’›eTÅÑX[ÁÎÄÇ’Óñõw»`kÚŽI#£ aõÇ$‚í­Íã:�K×j¬Uuõ°Ëõ3áÁ¢�lì¬(™GïL3¤�Ρ!Ÿ»´Rb®¤¨„Ï‚<&¼ú¡«­Ö–äd¥)Õ§¹eTS°2BS'+& ZÑÏ >”„s·í@9-7óùì†Ï¿ØÈêc�†ÈÏ¥Š É†¤¡wP"1ëÌiÔ2ylÌq­�ó ¼ñì#¸åžÇ .lÅ5×ÌT$oq<ž˜œŒîYFIÃb'x:tìZëØã­wÞg"v€ôšsæ6Õ¶eÓ¬€­ÇôñCXAd„ކT2îëΪ›tž×˜ÓC1ÈË>!ý È&ÓÿÕ‡`· ýç´Lz:q|e k‚…—Óf͘ÁdkïÏÐËÙÎå,ëÆÄ¬ °Êz±Œ™¥ŠõRž²|bb1<ù,¤—;As//_™}^‹ßü2ôµdÅüÏ?MÀšà>þÊéfX/o7'PÑÅÜQ«›ýÑ?"\©räùt¥T¢›W YÅäìêɸƒ >ެl�L¥ îW*˜4 À*;¶bìqï#pœwƒRA}ÞÁèÍHL<w‚rü}µ¯7þÌ$sFN¼š$ÌÜ}÷mغ};ì]‚QZV‰”ÌÔoß|õ ÒimS^QÊk§Ä–eä>X¿æÜy÷Xzý-”NЀä�Ã)X0>J¹G}Xá:qæÕørc>X´t©òږצÚâãã‘�–̘pr9F\¹b9½£�³’=e'“˜'8AOÁ*ÄŒš@OAu­‹O}]à%°áë §zéöëu%{’EÜ~Ë-ôºP3}¸m­U?þ9ž·DQE&¬-ìΛ¯ÎÈÊÊdÿn‡ãGöáIü#(­êèIଠ]u¨í(@Ú±4 >AYEògBÛŽ�z-r°Ï^m•®ÔVM⊜"Ï8²îÀáãØôÓvÚ†Ð[²¨œÕ…RÁn‡lÊS?õüÛ¸öÚ¹JL(±‹n\Ô[ܡ©CðàóbÌÞ–5¤Ú wæâYÊÇ’g”Tb,±¹PÇ«WõçHŸ ŠnÝã4zjóØÕœ¸lCl ¤é~‰û$nÒ�§,t™ÿÔ¼ˆnîQbU‰«].„kpÕÂŒ1}ã/XÖV}Æ¥6v4ÃÑÜ&ŽiË@[ƒ²N'XPF½Šªx¥…9<ÿÑìi CVƒþ´á;Œ s@RJFű¢›*{&–Œ‹ŠŠáïc�ÁTßèèla|QJÉÜNÞ/´ Íç'‰7&®8C:YK{=\�PQÓB²R0¥™;ÐÚÎãb_wUÜ`’r˜S”ÊOž íÊD!ÀȘ•˜ÌíÛk Y•L04# Žæô"5¨"YÍ’|N9+²¿"åmeX©øVkíµ0ghå‹ëkËÑÕÚŠ9×ÌÆßz€ÊT-¨¨¢‡¼Í(>褽­6à†(Vz±pª03�¢ù|ŒÌÆ6zª›ÒÇÛà ‡2h%fÜE GP�„>«Õ(g|mÂ>ñØ‘ûn }—†±Óa^ ®hdõ´·Ö˜2ÃW¢½­™Õ‹NºhÃH‰øè(¤?° µG ‹E¼ýƒâ‹*ªuQ•Áܰ™røô€® ‚ÈZø°ß—²Â"ö9ƒ‡Ž`unÌ� )��J ¹“g,Tr˜%Ź´Œ˜ÉjÕJæ]/ú�Ô«(anElÅŠV %¼O9JK€q˜}ý}—y÷þ¹‹KŸ$Uþ•|ŸûmÏÝúŸUÁ*{±dŒ+qíå´ËYÕŠ*ßÚ=À^¬<�~OÂYQͼyÍÉrøµ�7õ<€U÷»ãçRÉêFÉĤÝ[»Á³aãtQ^‹4OЀNÜ�¦êJüë£O0ÔÀ69™ô^‰00»þ�+ë‡^�œôt²Ïìñ  çÏïÙV5%š)ÿ¡11ê™§¾014„–†ü“¦›S—¹ØôÙgŸ¡/Ì|jã»SžÉï¼Åók(e@v¦ ä¥ràÚÀ*ŸÉþåá/�Íï9ÙÆŸÙ䘺“oÝ’gjÒP=V¹W*W=S£íìÊióòVF«ò^ŽIäo/7q'Û€H¶/ƒªKXP—Iz]/†Ø‚…ü­Í³Ó‘nÚF¹Ûi2°À{âÆ‰>¸BŒÙs"§€^Ž1úè^vÖŸ)I<9v5°“×ÒÄ?U6Ëy‹µ£´ák“ÑŒ.­ÍýO8«Ÿ3“K®¸úÆv“ÌvS–‰âasÉðå÷‘?ù�åoO~]|èAÉ� 4YGÀjÙ‡ÆÍX:’E¶ÿKô_ò"vP¤ºÅ|@V’�ÖÄd~C“�ÏË ±¦¾?%±¶Oãõ÷ë€�7“eô#hh§ JŽ<Œ#IGH<0€»�1e†!’lêûV<¨°È.phJ²eê´éXóÁ›ÈOÚ‰{O¿[¢ÞÖ qWŽ…ýÐìi0&ƒÓžšt˜2ÀŒ…ZßLÔ‚–<®L¢œÅ„9³Éüì@2e¸<¬™üá÷¬£¼¸¡×`ÊT£µ D9”3`·ÌZ€L2¼ZBÑ J´é6IBׯ Ó„L�‰Ï¿ýẢ3®ƒ§nˆÁþ.¶ BÂCÉêr¤„F9N¥¤TuC¹E%9û)>¶D1Ê(«qŠ,®Tú2‰OÂÈÑX©vy¹ÙdoRÙgÒÒ1—!{Èz¯«Æn�ÔÛÐãø[Yù�Î hÀüë‘Z–�P&õ¥ýdï…™A¼&ô\¨É@ÁïÀ¯ˆñrS8¦ë>í¹FÕõd�#Ég ©�r-Ë|Yßµ»«SW¦.ü/Ï5i?TÀŽÁµ ƒ²ÉËÃÖ¢\J錆¥n%Q¬ à*+üEþI_ÁÑ�2ÈÔ?F¹o.¥:zñþ7±®y·¶Uóýº�=«©àÃåÒ?}ü®æp� ¡üÒd~»��¦tÍgšn à e¾Píè¼ìþRYYçŸÚê+ò=.·ÖÙäE_Ê÷P´¼V~Ï~¤¿—ëUmrÿZÑ¡h?Ý]Ð¥]„d¢_•¬.?ca½H£IqSgýéÓ<¢{Yý9úškq˜y—‡“Ò‘ßÕˆ/×}„뮹oüóÛ0súWSnøy>§ï½ÿb˜ÎÌÌÂʧWâ»�±{ïÅãéÞ;ÃÐØQ(Y ££‹É þìOŒ¸lüBíXRŠ~fT•¢8¿>ZX…hQDÐvOK fBð�ùȦ„—›§ûù:J MÀÌ«æð¸Ü• ÖE×R:ØÍ æ]«T²Nyh9Ÿ!M$c4£ÛNì“‹ 4ð52®Y´üAMŸ�"{-mð ¡xòÁgûXe™Gžy„~Ð…mndEQ—¦`Ù+B–¿XSïIÝëL®ùîÁV7à¦ûÙŶ÷Ý÷›ðò¯ÃÑÙ ófÍ;gñcL�¼õΫ°IÜ…œC ÜpÛʧék׉Q”Uî«IòL‰Eòs[´sŸãϪ�6y}7%ìjOU9võ^•û@äßä^R›n¢&Œ`•{D>»�'ÛîV$�ømŒºYe*çR!~°o’þ©¯Û9+õòF9ÿ•ûjºß§·eäsu™n²É߆ÄÅÒ�ËyrŠî¹Pב©»9ƾë?S*ÔåÔg¢š4ÜK¦÷¾½;ãüFÕ½vÔñžzŒêù–礢¡wþÔåt§òûÉò«é?“t—ûo¾Þ»oîº)ê*òáâ‚'}¿lß…õ?"ÐêŽ[/ï9¼~v.ç¬×Þ1×Lëý·>xä¾ÛÌ*Øi¿UÁölèàÅJ�VQ‚Î�@�n»óÞûÙ_º(£ÇODjz2û€.V#X ‚ɱ|ÆŸY9ÙŠšalfI°­Òs+Dr*“ƒÎLØVæž`7_nÞÁ�‘!\i+¡µ³…›Ö¾ý,±pò02Ñu ñÌ,µèG™®tªCU•0É$iM}5É1&J’nltœødt`‚®�ê Í|>²bd¥Û4fFL¬£|aÇÍ8”ÝÂ*?GüÄŠŠŠìÌ[p=º3ÜÇŠÒÖ#dp$Îõ 4pUe=RkDòsÐ�ñ¬ €wP8¦Í½A9/¼ü<Õ¥Äð¸a˜IPpù½÷á…•+°fÃôø¾�òÂ.8AyU! q”�}öÀ3 ùBÐéìÂ�KæÈm„ÆÆ ‹ߌ]‰12Δ"¬6èGà¹Y‘ûsñ E?’µ*%™ÚN&QPh–Ì¿F9Žr²ì?yï%9:uúL8“ðòÓ±zíwLpšAˆÔS'Œ%¸Ý¡$(++˰âáG©zµ‹þš/`ͺuˆŠŠÂ#�=|ÀZ”“FÏÖPiÜ@gSÆ5+·nv$‡æ`ü OW4+R¶8|ì(�דü­\�Á1€ƒ-÷Í:£�ÑÝ$½4úÈ:0ñüWm½ÁêXZúTéûj°.]<wÞuŸ² ÐÚWK-éÄÀ¡±xkÝ,¹Ž˜É 0&Ñ˘‰uæò‘STKàš™”À®)gRy# èÃgHàÆ'È•¬¤Ò6¡«|ÊòÓPLÿ̬“'1|äHe—²ªM†:êŸ:ïBÓ!C†ö °¾ýåOLØ[cýúM´â GAúaQ¡˜;{vï܉©“'á‘îì`U÷ç î!Œ—t›¥ýÄïS«%€Ìëö{>Ÿ_éÆué¨.MÇ�‡sXqîA9à+Q[D …"% ¤Ž][”MY“È«ß^|öØ»{7e�»÷W’}W­ÀU×/£Ü7þ'ÓIާô·p$¡âi*D9›""z(ÞyûM4¶Rò<+‹²â”ß$iƒÉ‚„­8@ðeô؉ÊîÞ{û åäº]�–í΂Ÿ}¬²ÌñS‡Y qî5óÓÁµØrp†„Œ‘E.ØzX¥þŒ�ÇÖ"*¸ûx{ÛÀË/¿ÈþÝ™«‡àðÁÎ<äüÔ±‚®Eð³ g?æÁë’RãéYøüƒu (yÀ*ûÐÚ:)«º¿½{÷aûö_èU©Ec»lÜšàééÃfCJ>�…×-FöéCèøu›+H #±†©Û¹”©¬£ŒõûGu·aD�L#ºVòÏ(c·ÔS-¢Æ&E6žÞ5Vó–ž“”’I·ÂVúýc•÷ê<õ»èΓãPcVÝcÒ­Æúq°,'@©nL%ñ«—Œ¹†�Àm±¡™·ÄÙé�'2®ô_ò™J¶–q¼üÉ:?±ú4<|,)%_NoÕ@x2Ÿ;<&¹Åü½Ú²�\AÀkêX @"þÖŸ•{Ð’ž¡×_¿'NPRØÈ�þÖ§4”ã$SÃöy@û(’¡šÒÕ‘àZP’NâPNžÉÇ©üf̸f*¼Âð÷§V!¥ íí+Èë‰o�žx �|H·nߪœ—ÊJ&‘»PFŸ×Qie ê©,‘“‘A©áxøZÔ"Ÿk;²êÓμ�Eì'«[©~kKæÎ9¶ññ!aˆJnö¾0lHƒ�•jXØàMùóÝûN 2Ò‹ ¶”Á/D�»9òéSëLÅ�äì\Þ´p±GID ûmSK),0lôxü´7gŽþ íøüÝ×ù}ŒÛ"n  Ê©˜•v»Htºýºi¨eΑ�>Âü Pò9™˜SÉêýT$͆…�/*Ih3b ¬Üh `ÝÎûÇÑÌCÅ B1 ZIÒòðdAÈ®Ý0·¦‚¤£=*¥«j'Ù˜yQ­FM½ƒb†âXJ+Š™Ÿ£÷ie‡NÊïÒVÁÍ‘¸ A¼(Ah‚6#4Ð{Ý�ERvp~xÿpªýùÒ‡–*TÑ84)„žÍ;ãéuo‚à–*ÔÐoþ8I)#s•—2¾¡ï²†ýéU±Î˜ã†Í{3aÄüeó±g6Sýã$cÊì2×H›ƒŠ²˜Ð»õê¹Ó(Õ~Ó&Œ$pí@iñ2´Ó£¾±0 ŽþýÑXÛÌïhÌítÑö‹^¹¬`õdñŠ'½aܲU­Ø‘¤SUS [’½Hâ)£õ×Âyãp:;ã¢böÍ!”²ï£i»0€•õ3¦óÌûu+R“ާÀÄ »vÒÿ—¤Ow/$Szš»D ó«O½ù!&O‡+¦MÄ ö“Vâ?üoh·þˆÂŒ3p÷úC[“±�ôiúcÛ?´ÑÿâÊÒ×^jîò¿x˜½îú’AV鸥²P}`ÈÖäµ0uäáô{~Ìb^¼EdÊ¸Š¾÷ÿ5üøíט0k1™º}37ÅŽäƒ�4Vè ôæ¢M¿Âõ†ešÀ�0vˆ† ìÉÀNN /¾„wÞy÷,»·çÌ‘�dN€µ7�URÖž.óÅ¢E‹áíí�¸Áadåt!ŽºíÙIJzز§ú É�/Ì5IBI€¥[±$ 0S âF;‹¦t’<”¿Ë½WÔ{Ojâù* º‡Goþ¨ÝI4úƒ²ÒS÷t;2IjÇäCÿS§YAØŒÈßæCŒ^yu8z*—o&%É4w:Cà áÅ n\(­*¡$öUUyÿš‰ƒ¦6Ð�þ�І\­ôò}õ;ÅO?þ3o½ƒ‡Ò‰pJ@iG_¡{XÊë°È1 ÀšËjÁÍ?næÀ«Û›ø¼9Cw~”ð­¢GCã‰ïÑØb�çÖ£ä@²‚»ÿË:&è7z&{ޤ0€ÉǤQCìQæÊœ 1s¹ÉÝ_‹ŒôJD˜¢�àZ?\“'�ÅÝw­ ×Ò 3¾·ÃèsÞ#Þ…zÊùfS£‘¦ösç]�)óïÀ‘wžÅ¼�¿bÍëëºÜp Ø�4°òs1‡qsŒìɘ#ñ¤�’–&í°¢Ìñ®ÃÅH§4T Áïz jÛ[ }pr,­ðMãw9ögõkÜ‚ä†|¤Y{cÈMw ½�òÂdÌK€&½ËHk7\’&ô ƒ1cFãÃ�VÓOi0 \Õ6uÐSÂÉdŠ"s5˜ò1Öd ¥r@µ‡æï†¬&ØO/ª Å_:dP4†�(r8a~fý×ë6aç¯?s ®E^a šl´˜õ÷•(½b6ÒÛÑDùಊ2\¿x †�õjÈ�m‡E’í<ѯ¾¦¦ìtºf`î™S&Ê嘭׭F刻ÊÊåíyM}ÉF½&õR—Qçë&‰%ñ«ÿ'Òm……”šã •�vÓmL¬<‰9³–ÐKtŒr}_î=¬îû?1UYlÒ']@°7qò r)ç…B‚ÞÉdU.9^óðýöÜËJ_Ã8@¶-¨êA}±ï% †¬ÓqöwU§êzò^�'¿—:ððÕ¸««%ãÞ›”êWµbKúiú}ŒŸ ÎÈçò^úbé/%~Ñ='¤ôV9'ëý;š de 1À§¯}u·nVµ,#÷o³��öNÛ M" S Z•k¾¯kQÖˆÐ(a‚·ˆ}¾«ŽDÛ›ï¾J_ÒWÉlÍá– Xu^ŽÏÖ>Ç„ÙÔ¾ç‚ówïÙM¿•þxïíw0ŸÀäèQ£±dñb$Ñ›ùùWøasH {ö k´ˆ érÜ}Û24´ä’-{‚ò‡¿1àg\9SIH{qÀôðC)ûíÙŸ·‘ Ð*39ˆ¹³æbü˜+1nÄ•¼^“‘Hy¦¥ónS¼ƒ×|³ \Ñ�ÀêÑCÙ6õ&„òœe ³:5ƒé9x땯à3Ó§\…ø]Û( ÌJ5™/õ ï?˜ˆà�W!‡lý_8 ]kãŒj/{Pîr š4³)gláF9µ§QJŸ©´´L$� 7,v¨º‰s¦rMÞÿò'˜ÓH™"z¹¨RbrÝËõý{ا’ ‘8D½?d*מlSþäºïëž9çàξ‰f²½“”ß3™(ÊÍS*KÔåI¬.k`ì�Í~£ÃÈŠ¤Å*ØÐ?5˜„—_’Ø7^¯A!Hb´`•U*òNÁŒÒ‚ž†ÀÜÜ–U"Ô”Ói ®]¨óŽ 'bïÆ¡„•žâ7ÖIàÙßM‹‰£¢qÕ¬¸qÁXÄï9ÎçD:b<¶“ôªup'@m€zzØn!éÁºµ ”=³¡Ÿi[“‡�Až×ºŠ"j¿ÙÛ RÁ*르/¿Ý‚êÂL¼—ÀÖ¬œà°.np"ù žÞ·f�´²9“ެÂ2Æ ”´nÄ=÷Ý‹ÉWÌèX{Û¿Ao3uæedgã¹×W¡2-QÑøèŸ(à¡«›kÏRe™øà¥QVo„�¿Ä#ŽDÝ_~àøzúôé˜>ãêžeåŬkfH#PÁ?i¹yŒqrRÈûKZjÊ |òþ*hí�H¦[Cå'(¬h ?z86ÕU`{b&´”˜-íb%Û`*•ppèîêŒ,’8^æñÆÑoÝúõLʧÐSxˆ²]õŸ®ò‹{��K¬´ýœ¶Áƒ}�´*V}Yਠàs2i/û*N±8ž”þ"qúÀŠÐU_ŠÓ™Å¨ÎM‚q[%�SV†jðÆ[¯“È‘‡ÈÁT-¹Èš’´ŸÓà}v¿êñÉ4»(™àŒ“°.êV,ºæÝ�è~nÏê©‹µÂЬó*VwÜ„¨ I¬Ê÷èsõñã'(•¬ú TW•³R/ •é­”ÕmÇ‘ã|ö³pÕ«oãÝwߢÊL/œ§Tz믫ÿ~ÄðáØÿ+2òŠ)§ÊªÞѨ;MÅO?úíº`Ûæ�°ÉâXÝ%§,…; ¸Pœ¤—úûRßwÇ/�çÅ)¨¸³âþû1{ÎeQ5.‘¸MâTŸ×>QHü’Ó«Û¿Û */×YbTùLšÄIÒ'èÇGj|¥,¤÷OYõc56Sß÷6•s q®ì_rîºÛ’ÏÔcëK»�KâE‰»ÔXQw»2Oú55ÎVâKÆ{–Ùg¶ìQJr'Ag:yŒó7ENy+rYÍjOU·±“gàú›oSž‘·ßµ >~pfåê+¦aûêÏ‘N‚�“gI¨¿qr$ÞÝ~ ʾ†Ðó[®ÉQWåg½¤)óË:„xÒ/ÕÄ™'öPŒ›6eÎ>ÔT›ÊZ%TíFÉÝô\hxLº­„ãÛ\s Sª¿•±éEåpÛõ+´™Ròµ n¼�¹ò|þá7¨&Ù+†ÏA›:¥J·¨Ú�ýQ9ì\lQÁb K;Å æ‘wÓƒy5N¤¦2Ø‚(’êÍH|Éd…¥ χHï79aáò!3þ Š5ÃŽ`/:ëÑdä (v8Ø[!Ü«L27ÁÀÌ éeÆô@'€ËŽÁýé êì+’`Œ¬ûQn™RºVNh¨¯€{P}å«ÐlІVÚ ´›´ÁOkB ØÙÅyô[m�)�éâÒRV’Z°ßâù´3¥ß{) ¨ P^’Çgº/Ñ08ÚhpåU3°éÛÕ8œž�í?üŒ(Æ÷,¿§ÒÎ�uF!Œ8zøÂÞÊŠ .ù<�y¬J¥Ü? m¢FyÛw †c܇yŠØ¯>V“Vd�dìå…¸P/bœFPpöç0Vâo�›WH³äÑ÷tÄä«pßÍS`éä‹?Û„@G;Æk�TI¢×xK=œ=`ÇsÕLoßf*åUV6¸5BÕ1þÛŸN"‘½Xù]ŠÙÚy‘ÀØ.�d Gjûº¸»£ ;‹q-)ŽŸdØ{âwPeƒEÔ,8©ðÕ7ß­%јÖv–öp02¤üx„“b@ùäS'øœiD·3mú5xâ±qä@"½HÀN/T*®Ã™¿§|qAj[pÇ}�£™û=š)¾º—ä~mmO¯lþýѦöit;²¾Ú/v÷/+•~åß±ÝKÙ†ì[ ÔDïB±×¥l뿱ÌEAVéˆÕ¤­z€ò`“_þÔN\ýìr¦RºÿëoglÜ´YXÕ%� Â^9cËÿíPO]ö'O#åôIL7™LÔhÜJ Kd^2ȈxõåXéÚŸì@w²yøà!Èúg·]»v*U( ž;ppõ¯°f�9óÍ3w#fÚüË:%zJp¢&1Õ•u“éÒÁIêR’Pêú}M¥c@CüOEŽW^«ÒšjBÒ./çxqÂnºÝ2r2_íd{c¿É=ÜŸƒ”åXÁ¼‡Lþ¤­È£)x“ÏÓg ŠIŠOéS‰�Ú’kVóˆ ©ZÝ bØÝ+à¤q€¯ýJ¸½ÞÚë¾ÄþÄ#˜»É;œÀuK®ÃI2$«ëjy_y¡˜làqdtu´5ÀYkCcl;tư##ÛР�’#Idì7òçˆ+É/Ö‡|!¡ä0à¸ÜVRF‰�¼TøÐãÖ�‰âê ¼÷ÝiŒ)ØçòššÚ…wi(qòø<7ÇLdžŸw"dÀ¥ÂiÀÀ@øZ6°"€²…¦ˆ¥4øpJÖF¥Fpq´ „:Vo€ÍÑã0klDøÒ¹(*HF™í`Œ� †‹ åGÈä:Ω�…’�È  µ K++§‡Å#«¶An]øyG"n]öZ³×cý¯ð�e¥@!n½å&‚~00µÀâ È4]ÄÁ”Þzï=ز¹ã¶%È%»«8?V–È/­Ffúj¶ÈÊ£™)¨Â*ÊÙ�C‰ûåúé|é�.§IòEî¯ 5ù\ö-×ä¥� †1aéëá…úí‹\`»ò‘Œ™dP¨&Ϥϑï ®�BP›»T!çé>£úÚ¤Ú7Êç˜Jߥôgì»äœéKëÉrÒ?Ò©O©ºP�AæK;÷}§ÒoʵãÁ¸HÆyÒTÒ‘�–TP[�Jòñÿ•öÔ‹Ï`çÞ]d²�¢|êOز‹‰‚pÍôˆ*+jÀK¬î±°µÃ‹o¼Ï¾„¶ ã®ìùêGOew7øPXTĶ+«ïcãæO•eú9¸ô,û¿þ¢àÔ~åÙ`Æê%Ýf¯iå[‚Ž4¸b3m©ÄêïI «m˜MCdˆ7�Ñ@&Ó<`dnM9¾Rª,ÙbÚø1hj7%ðp –ZÚC0©šœt•E˜ËÄ·3“îI¬É!P»ãh&¢#B˜ŒsDNa É‘å8’–…-û3`llƒÃ)å¸kùc=qFMž…€HV›zø3ÎïÂàa£é­…ý‡�BÛ\ wV¯d!ÀÛƒ ÔfÞ’L¹b «JiÙc_ú£…†Ó»¬‰„”ÔkmG>ûèvc+’púчÿŠûîæó£GŽ¡jËoÏTå$🃳;¥cøÌÍÇ­KçáhÒ ÜÊDe?#JøÙãŽegeL&+R¬q˜²º‚<ÃØŸYѬšÒ|õ‹§Í˜�þôTÓPõ)(,å5•¨«ª@{s+½�·aÎL&‹C‡ö¬ê¾è9Ê1Á\7ܰˆ’²¾¬Âs‚‹³3cñn`ˆ•-Ò›c0tÔ8e7ÇH–*¦O�ˈåúÇóGß×W0ª#¨iÍëΙ×Ç@eÚ×vå¹Ò�Üç¸.¥ßíkÙK�ÿÁÁ‰£‡ÀÇÕž•ÙYhï4!™ E§3æÑ‚�³g¥¿!“Ø3ç^‡HV–:]l©.¢ò›�:¸EŒ¢Ïm ¥7ÓHnB)L³KÝ}¯Ë 1Ö”Ïu;N½Høè_ 2z0sG¿�¬A�¬rˆÅ‹ ›•ëZ­É%·ã�W^€ —xöZRw ±Ã¼¹óñÆËÿ@6“Ø�>v? CŒ›ÔÝ—östfå¹³"á(}Éò‡WÒÛù_xìùWájDM¬N#j^u ²ºž>‰ÃÐPš û€�ØJÃ1“®âry­ñÅ—F“qåœk Bà™_á'Œ={V9¦¬3ÉXóÑ*Œ»j>Ê ³±fõרðãˆtøž_w"ãøQz:û)¶W"wl€v’5Z©ð�[¢Ù'•°©%`¸ƒª%X¶üÊÕ…š#m(¤:ЂúmÕ7·pÌ~­RÁª°ªË^ À*ÀÅæ�k)yþ%Õâ:M†­¹*ó*©Î2”e]] ç3íÕUÏbâ„nòû‡¯>̾ñj„óÚÚ°î;ø÷w‡‡¯ eZë1wæ ÌÍÄÊ'W*ë¶øWèA]Áx?ø{«o€µä!Yñ¦5°¥T¨a!ά`KçoåóÏ?†IM­B(“8LÆoj—Cɽ+cÁ-›¾Ç¯$U á8£ ?Ÿ›5ÀÐaÃz6/ãHµ`Bâc) h%©Mµ �}©1t_û=7¾êÙôe¿oX‰ót›ŒWel߃Ñ+œy@uê±éŽ$Ž»Ð8¢;nî[ªû±§$®ºN3ó7)Ç9Ž¡�º­A~Ú‹w˜"ŠìÁý»É û`μ…Jß3’ç2?õ(Ú,laH ¬”ã({‚tö)å$HÄ ƒ6V¶¶�àŸUTM�e*W0.°4náó”d+l…gò9a„Næ_¼ ü7ˆÕ.Yíð)Ø3”e!DcRcÔÜÜÂÔaKД-'ÍûiJ›5öw‡©±1N°�Çמ¶WÍ|OOx-‹¼Ã(‘v§ÒÇÔ�€g«>-áIË€ÌÒV”ÓŸ×JKËo_ü²ç½ÄÁÞ²u˜:e Snð;‘þ£ù´kÎÃöÝû`_ψA(¯jgmSî+~Ûϰf<´ùL«ié¡ê q’=ÂÃñË·¯3¦(£t>½å­¬Q^VÂ~>˜ö5­xëã/DØ Úºù»Ò—•ùÉ!#SÉ"¹Iô363æo’Dr +eSO!%§±|–¶ÓrË—ÜÃÆL$é)�Äœ6œ|xo˜��Õ{Hš˜Hk ³¹ ýÏôß ¸ú{VÉ+Hÿ Þ»úÛý#ïëöu�g¥XKúék.—tü{÷/û2‹ÚÏ]JÞâ÷î«·õÔÜ¢Œ‘/5· ¿� ‚¬²µzUV…]$I•îZsÿ÷^ÿ ¼þækò,ïUzEÙË}¯15E†�9èIBkU¾|î8‡Æ(r+²--o½ó&^yåueÓßlÝ‚ÿ€ËÝÍe/?oþuÐXÕ�KN… ¥Wqp½æ›µÊl5Ѧ.óŸšVQrFZÙ‘—Úä¦ï+ð“`N÷¾(fÅ¡•�32?yRÙ¼¹‹�2íퟲ]&¹äf@B÷†–×"™i7Z+ƒ<“¼œ’xK’±•ËË<ñE•íJç§À’$”ûUÖר$SA‰__{ßs˜RZÜ6uÜóî¸ýNepH9ž¤£‡p:%×}ö­Æóªk”¤ªtvj@çƒæç=»�ó‹z0§´ìèÑ£ù°a²ÅÄBX?øðcøº°ú´âý‰§œsZl™ˆ¹T€UV,f0lÙŒ£= ?GJžPNãû?ÂÚÌ#F£÷ª°ç áiO©å(˜v4¡„ÒÄ–Zw& Ú)�\�0wó¯…»W¾M@b0nºñ>¼�Î9®K}s‚Qú“wa �]O‚vÛëM¨lb $’lxžM«K5_i]ajEƒö6l%³ÝŽ’fiéXþÀ]LîT#áxj¿ÞDfÞϬ<îNZ÷¶ÿz2ù>oÖâL£3rÓNâ�[o!ÈêŠ/¿ûÁ^øþt:ì®»vq!ˆ ÷&ū۾ÿ žöyK›è?匭ñ»‘xŒ~ƒ‘Ãy.jÑTC6AÚL²N“É6ŽÔ�LòF~~1ŠŠ*yœ÷r�õÚ;jè aŠq#aËÏ[;A1‚wìçBÆ\:%I:èÅò3%¯J™ˆDp…•ø”m>z(�¾žð£ŒK—!å“é‘Ð6–¼†cy†_µµß­ïí+÷Ì3¢ä™U ö³ ™ÊŸnSßË5/íb�HLL,ü|ÈôdŸËÁóí·Ý©»¹¿ükéƒ$àR¿·Ü§2 )^Ý਄¬øâÒ2^k�”AŠ÷?zÆ&4Y&€ÿ¶H¶Æ &(=ݺϛúÅ»û&�§àl;wÉ9²Ÿê2ºSa¢ÉàU²V��îL9…¤%ÇiÑÚ\baeYSÑÐèÇßÞ¸./×V–56ÊY@ùÝÌóI“$H¡[g§Òï È ÛV¿«¬'²ÃRÑV¿oç¹ëñ Ô`MújékåÜÈŸîyÑ=ö?úZ¶+RNÒ¿Ë@¿ûÜ�ëA)ûÐ}nèïSÖ‘ã•©üµ<·¶­�z¦E~ú½þâ缟¿dãÜvóoÕ-ûöïÆ¬yWàÞ»¤O[.XHÉ WlÚ²û&`XÌo‰‡s6ÖÇ/od uÉâ¥=K� ¸,• ^n l¡T±{øh1}æÊö܆^}ˆlý°hþí¸vÎ|dUWÞ½o7}[ϽîÔÏô§.LjO™8‘”›{’2¼ÁÁýðìc`Öô9”×1�S��?[ /_+”W§â}¾ìm‡ H$÷ª2QG±©‘5Þ§o¢‰ YÂL Ô‘¼ù—ox¥û"ŠçûzÊ*Å®úî“âUzÂ>÷Äóü]»“!!MõsÛ=ʹ€¬ºíèñƒèúâ}€h]�mW‡V®Uòå5'j«ðÀ¼°ÞýK�¬cK)]õ:ÑÝÆ…^ÿëý/à“qìœEdûêõ.¨ïe*&¹¦.Ö¤EüÑÎÌ�´}{) ë³ý«$9:(ý+êúÛ‘Áµ ‰/º «î2Í-ÍŠÿwo±Ÿ€¬rÿ¶0„í Ô“ûårÏ‘îþåÙÂä�Vε®Ôšî2rïšO›­Õ—6V—ÉN’ššª•Yâ?(MŽ­ö••%âéÕØÐ õ_·]ñ›÷_÷«¢B¢Ž©”…{ù§[é*çX9Ï$³©Óî}t'Ðê×|ZcßÖt¦¶¡ÑY•”“>S�ÍzÙ|Ï,YF~K™J¬(¯Õg¤È«Ííþ'{úý~L]æu*}W%H=õ ì¢<Ÿ)×Í\DðlaE¾¿"öóºÿ�½ï€¯ªÊ¾^é½÷ÞCB*Bh!t¤HPTPÆ:êØÆ^F�ѱ�l ‚‚Ò{ïÒH#$¤÷Þ{ûÖ¾áÆG¤ªóŸòÍá÷x/ïÝöî»÷œ}öZ{­=ý_QÖ‡ž}€©Ân„… eeFÀ* l"ÈàN@ͱùÿô�´s€u ȪLlùåÚé¿fÈÏŽdõj vôs&xY[ßBÿÏVra°m/%";±wûA ‹ÎÊ }Z`d 6•¤ÚR”¸ð÷qcRÖ£‡GOO­(Î#+=™•¤ç9nàцòšzX»ø3Ù„Ó'�ò.ÖÆý>‚ÁAÁ?;Í/Ýs3ÆßÀ .J쎟8C¨Ì£kb†®ª³”¼ëÁ„ñ¬Pé¬D!UYÚ»õèOZA@ÓG7­'ù³—à¸!‘عÿühé# äŠ+0yÚ $3GFj2gDýœ€'ÒÀ3YAšÅóáí7HQ†Ñ1ªÄk�¿†%÷<ˆõkW³2ÑŒû£%Ëø$&œ`E�6ýÖêù�€ÂŒshbÒu2½U¨¸cÆooIpT¿— ]&\=)£¬û³nW9’,//RÀÿë¬}téR¥:D*D4›Ø†dž/¢o“­ÅÅŠpOO'*™ˆ­©ÊÆÙ¸ÓLfk“Ø�οKÑF�ÕðàHs¬´ÐŠ%i`°=þè 8aô0|µf=+‡Ï@¿­‰”{Ô¢lv%ÉÀã–ÍæüÙ �]ôúËÁÈ!?\iÉØ¿g‡¹^¼øð-8Ë¿kKI®M䕨s~x©–WPŠè ã•�¦ÏšqÀª./ÀèM³'2 _† ª¤Èýâ5(ûìÄ—Ÿ}J?û÷ðÆ_ÿŒ´$ª˜¼ñÁ¸I°±rÁãˆ#q¹™Š"³#©­€€×Ý÷Ý…·ßþ@yËÄÊ– HÆ †…Aª›Û‘œW V“š“}>é8 .X°h9¢Fôf͞Øv1•23Ʋ¹˜=m¶²ÊF˨ÜejnNBµ½°Ê{™I”§MUä-³s àHê§_ØpŒ�xƒR);bÌEæ¼®<^žƒ”ʨʒœc¢¾¸¼³gÎ# mDYÉn ë#*Èv/×.°Ê²°þ­�÷¦n— Φdá‰'ŸÂ£·Ï@vêIt’0Ù÷›^i?åô�–k#44BỶý¦AÉÙd¦Qž³†ÚìÓÓabd‰™SæöoNâø¾‡Mÿ{—zq„DþFö 9<‡TÅjÐ"QÚ$/’ôô{lð徃˜wÿà �(qTr\,Lò³/µ©kzOòÖ’¤—Ç*é$%έë]˜Ãreõ¾¬M åôe<�¶U«IΡ¯©±Ñ™Ò2Ö7ÅànF£M�¥5ÞúÍ^J'y=9ͦÆj*Ø*ä@!jÎõey5~ÔŒ�%nS瘚UiÛ©ëËzšëG 'É¡“úG(… ¤æ‘HßM»2k„£š�³}ä!ˆ=–™�’rK‘~.“ý’•B¦âÀJ °úœ?¹ÒZ`û¾#´`8ˆ æ¹jÊ èS?œäT^ ìSf�‰`%j=tµY˜H•Ÿ2JÈó^N§hêÖ�ƒç`’G,Y%^Î*nú©äÚU­•å©(hµÂ’9HJáØ˜xž•³ð3ÛVÊ~¬ yÙYì×Y¥YŽ,*wtTeaÓ&Z;Ùã\B,6oÛŒ**$å16IMN�Ç`OW[h×�Eí ÕÌ*מAiðÍÌÏ[³ò8›ïÏ „üºZ82WØIE¾ÞÖ¤¹�ÑçÍÇG+¿BÁç6ÊP¥º+K( ÝAµ!•´>ƒ½açLŸH¢€1åßKX™;š€µ1c×2”ž%áÍ�•Õ:Т•„‰mmZíôŒµAiQ>nœ1Ÿ}òwÚ� }ô%vò‚ãOÝÎF…`x5�õégžB1«©##G(÷Ì/ýOîa!Âü`•&ýÃ?#�%ý†¦b’ô©‚þ_´¾>ë'¬AúÄkÉ[üVÇ&ÅýÛÌU ÉEíG¯u—YÕS’—*¸ª«×»ƒk=�¿½ÿ>= ÞW*jÜÙqÿ·´“”�[0oÁoúuš[PV’‡“‡v`PÔ$ÌûÝ“ð †Ó»7`É#êß—’ #kKžÿþÞ;X»g'åÒC°ë·l5­­(æg}¦Ü»¯E¥¡ŸcîX|#6íÚ‰c‡Ž *jD5ÃoyLײ-k'÷~€õ8Ä#ùâ±ç¯œx” šT•Š5ñ/ÊÀdݺ×'ïTnúVá1¸È*Û•ê•-¢v$ÝEk mÒŸä’I^Õñƒ–RÕ Ë Ð 15 S�Mýþò÷¥*Y•„“­’¸sì¥õ¸…©á=/½†I‹¤OB'�|w²ˆ¤ óù¹ç_äÄÚþBU{°!�¦TfÛ¯€C¦yç•ãØÑ×2x_»òc)ýêX�$ÍŠ¬ñ‰œÌÙ:ü `•Ï333P}÷M , Q™ànüá[ìÞ¾ŠI¯�HܱÚnЬ¤,>:I«^�–Á±ÌX¦ƒnðdøøGè¶f¦^Ž÷rÑÒi€šVúÉÜL8y;ön§%‚6Vm8 ÷ð ²¹«¶J&~âw­�GP¤ H¿(ýfê_$½ÿ2ì .:“QfE6½=™jIdÇ…“ ÛÅJàõOá «=»g¾ßtõô �l[ ¤? <™c(D‰_ôGF[ªLdåÀ/ü' ‚ÚgÊ[ÒO~BGÿû’‹W¿EBMíTY&Ù¯ôgê„^ŽAö-ï«™ô ¤/6„øfÌïæ¨¯›o=ÿVK{Ju_©äIßSÊ-©Í�•“�?òŒRyø»n%‘€þ[ü\ÀÕ¿½ý7&J³1vÌXuñ«>ýí7”,áÄí' B]IÖã±ÇðÚë¯"b„# Œò»qŒýIu]%9_G$'Ä㦑HÔÝ�ÃÇŽaÌÈQÂ×Gpëâ%ꦔçÇŸü=ïQ'2”û’„�á�ˆd’[$¨ÄOÕÜT ›ÖïÂÌ7á-Æ“eL¿æG¸£è XŽØ“Ç1æ]ô”ËFaY&ü=†Þ…?zŸ¤›r¬øðÛ~€Uv(RŸ¿ÿÝ#7o1rH8 ¥7³ü¦Å¬^sduÂØ9 ”$…yg[¾µ©qAfK“àù·^tÌòÇŽÝ›éAmŠÀ°¡–wÇ%Y†3^~äYûÞ]�±œ´DÏ»ùÛ È=fö—>‰B¹¤j’c°–ÿÉ‹6?´mݨT7Ê=Õ]\Ðnfo_'àŸc¨{|ß6æ²*Æ›“T�¶û�¿àᄼ.dö¡Òß¾ZR÷Žör¯‡žT¼×5W^Ú1ir9€Uðñõ½lÜ'çWí_n÷·ú[ݾ<_®Éq¨�Ë-£¥­M¢B›"#ª¹Œõc/Z¶47*çXö¡¹¹ß€5jæ©G.¬Ü7ßúR郤o�¾NíïÔgYT~é/Oå6479ÈX' 2õÜÉo+qX×÷_õǨÚ;O)mšýžìoà)Ë2ýöGBÈ“~Kbyàµsáðÿ#žR“â0'2r¤°þþчàåiJ›‰&ĺ)ÉÖ‚÷Þz�=ô "5àЍ që®]»()>Ciá@/bG{狾ó˜¨iÿU«|9s;×K¬¼0Éà€5íàF¸1Þµ};ZjyIs�–^ ”Ñ7µ�±£%“¯-ݺøvãxÇowVÐJ¢³ ¶ô÷›sãØê¶‘àbS{_lÞù‰xÞ0ê©�¾¥+âöoÆÐÈQ1q=Uƒ0zÜ$…¹nËn&}kñêŸ_¹è7Pÿð¤¤ûÞÝÛ˜0£W×…œÂºo¾ÆÎ}‡ ¨–`ÇžCØðãitunCsc=&OŸ�ê’Æ®CÐX• +EÆM™7Æïi)ÉC“0�J,Ã(Q:Šc¤%çVÖÖê.ö¼y=¶8V #±ó–ÛC •[ăÐÁÑ_¬ùŽqîle�ãÇ�1Ù™ã®Z’~:0jD0æÎšD›Žbžg’  ÐÕÎ Þ„x˜0v÷ è|¥ÖÈùxfV6Fr~}=­¬¸Sçþž¨ëŠtqkm%lõ™È6d‚·’DDgŒa¥ã)zê:»Û3A\†SÆ"Ô+‚²¨˜ÿûG�J ­—×”±œ´²ª¦Á}µO?úœlۘ͡˪Ýü9*àŸÃe@õX~í³¥™U€õ×nëZן~Ã,¥*{ìØ1Ê*ÇY ÕÛËj>´ Ÿ¾Ù¬ªh¬‚)•‡j9tqr¡ì« â©òQÍùcu%Õ‡²[PKÖ�çýöys™ômƒ÷à ¬~õu¤ÆîÃÁ½›pd߸yzã//üqŒuªI ¨*.Eà`?Å×n«£¥•Sf²‚��çÚ×o¢Ç�¡"IŸ’‡²ð…ÿ¶ïØJp&=ã’QÇcÜ·ÿ+Û´éßgЉ3¦áëõßÁÎÖ‹©`ÖAòÑÎ={ðäOã“÷Þ¢´õX’+¢hÇ“¦ØH IBmbcÁûCµ³8·ïS8ó~;{®‘ž8OàÞP¬¨åa­ c'4RiIÛ î¬TÍKÞKïAŽÁ¦Jë¸1£ ç_€ñç(>¨W¾�ÄØÃôés„7úõ\·½¹‘òã5ˆKÉfe¥.²¨îTÚ® G …0r/½”µz;°í»÷�®X982^vǸ›–c2¥¶ÿøƒrív[(Y!ƒ/Ž™ÔïvµçÔ´8’ÙC¾ÿáC¬ç¼SäÍÇÑó8�ÀôqVÏæ³ÖFìsH’‚‹û¦4VÞܳ�ÕØüþ&-\àd�‰ã£ ka„±SnǠШ«†ò¹ÄÕ°æÑzÃ’ ‰‹4ÊK {x‰ÆOàçZÉÉç©¶å�ă´–É­$o¬²®© å×ù¸Z›>Ê ™É'Y=�gÒiËSF,VsŸÍ'9Éæž˜øÄŸû7ã»` :XßÊÊ嫵*Æÿ‰cg “Š3ÖÝ�Êâš±�ÄÆ3çYhÆb$7Hküô£‹â åMþW¥­ƒJ&E‚¬š±˜ºì¯}–êU)Š�<¢Ì?5�]sÛÅgŒÍ¤i.+±™f.RæŒJÜv$ÐÌ3JLg³p™2•õ$~ÔlƒI²ö©)BO)s0.ƒààî§x_Ny 3ŸDµ®:è[;Ð�S Ë~çí�¡•s ‘H/«¦×¹«‹•ªÂé7ø£…ñ–±™ ¬,Œ9¦8ÀÈ&„U¡5¬‚¬¥¯g9,�Üp�À >I(y~~H¥eNSx8E+ ÃB(]„•ß\,'a–Ši–ô[OÊÍǬÉÑʸ^HU²’²<Úƒµ`ð�(Æ%5$úÎ#±¢‰J E˜Ë1¯ƒ}‚‰û÷%�I‡’»Áˆ‰‰�Aw ªZ�8Ÿ1A=Aܼ›òà‘ B\vJ[ÍPͼâ�ðÁ¨%ᥣK›¾Y‡Ž–˜™èÃZ¿�V_µ,î‚ +¸M©¼ÖÞ¥�fVo÷vÔ0QC’Óªt)É/²µüÎVvØÃþµ›s 7GCdÇî—ŸŠ„fmÍàîdÇûÓ÷-_DRE2¼œ, $Rf—1L "ô ÐÝV mcKxÑÊÆÝ…6 Ôí#LL5Ë.T²Oõu2ƒ-û#íö©º( �}n(çæ†0óõFûøVªä�ç<}<}×ÛZ¨ed€s±ô±gìÖªƒ^3zŒè§í/Y¬Ô·9uîÁ*]’˜œœláfÀ¹²Gj˜o5ÒÓGC—1:7º8è¡âü1úc?D{c¤WQ>º¶fÎ!¸aã­Š* ÖÀÓËÆ:-T¦ºŒi7D9j kóûVg§ÂÝ?Ì·:ÙZ +· wܶ@Ql×ÒÅ-·ßÃc2ƒ¯� qÎR.y(ÉjÖð§õCýÄk*Hhò5ÃùÌ"œ8|˜²õTÕ¡|éÉÆ&hì6Q*°k:uÁblÆü˜Ï‚i¶ÎW­b•åæÎeî¯Xe;°ª€Ÿæü«/§$K°`®ï·È[õmí§ÿe›2ŸTÕkúäŸÿJúë¾ïÛ—ÏØGý3�@òpê|YúX™»Ë�¨9†\mÿ—Y;8°ËFÔúù¥Ïÿ‰ávµƒÿOø<ŠBÿŒfÊj¸oÖ|�²ÊzŒædÏÐØ­Í ­œ(meÙ¿KX¥YZ˜áíçž%€áF�öYýŸÿ/Œ.°RÕçKmÓÕÙÃ8 ÀšW×�m~øûã7_6Ñv©mü3ßsóô¼,À*ILéà$ÑÔRDsÀê…H÷Jr_’šRe:ðÆ2饒ÕiÚ²‹VÙžT5ISï-¹ç¤ÒLÞë�bÐÛ�‚žª}жë›ÉgÒä8Ô O@#ijG ¯%q&„xɳlSXoÒYI_@Z‘F˜|“ºCëïú*ËtèOà0e'+Ù\ÿo$ÁšfÕ˜ƒl[öU{Ûp¢ “�f€'ë›r2°cï6¤��Ã3z¶áB‚bžÞ¾Zc2ÆQyn%[j;“ í”ý0%ÐÖ÷Ýz�Xž�Œ=›°7…Æé k:1uÚ4eùÏ‚w¹ fj)�][ìÊ6b¢7;MÐk8˜÷ �Ç9!Ê—ÞP)÷±a�¡ƒ7ÿþ9Ðk¯Zmi¨á<‡a �œ²G§èÅ÷uÀü¾ †Ôs¯\Yú©dÈ Ðá=艩“&+:Û¶n…�›3l(ëåf †L¬0Wêÿ‚~\< )Y&íR«v@PýžÐQ†3Þ}ãG¥‡ ýRÂÙÌ\´·5chX0Âí¨6ôÂó/&[º«·Šl+¶î?‡ˆ`˜8*2-µ íd(º#$З¿ª)²Î¥båª/‘IßØØØDÄ�ŽSä8N�<ÊЂ`ÅQøÕ2àž„ …î¾á8C&Y=\ÚLùxºAG›��÷©“bðÆ-‹à�— çƒ<V†¦žB3ƒ£àw)þN­-õhn©SÞ\V ÑÆcæ| yüù~¦¥z.e²$×Þ³n¬8 ÇÐ7?VÆ+¹ÿ4š¤"DnU˜›—kï²¢»‚„æ>ðÅ—+)ç5 CÃCú¯ËË­÷ïú¾œ é_ä<!CúiøI`&ý€š<ÿøt"“¹Göv«îyðQ&&Ý~õW“~S’~S3”c”J8Í÷d§rÜ)I‰xêáqï'«Ð=g.ª™ j÷ €þ‰£ h$ý¯,+ý—~ÔX ‰WT†�lWú:58TïMÛ‘cë])ý©OÔk)ž=ú&/bŽTú9f9GšÁ¬ìë—4éÛEþT=j_-û–cWˆ*ÜŸÚdß²Œü>Ï‹üvÒz»»-� ö¹º õy Àª¾¯> Àš’~˜÷úë˜1õìÞ¿•RÿXtÓ"u‘«>G�íóJÕ”‹Õ\I¼Þ¶îØÄþ·ÎŽÖ”³ƒ¯{ }è ~�iú -X H´Ù°zH@ÖgZ‘ö`¥Ù¬Ù”ç6ÆŒÃÄ}¦NžÑ¿yXå!->‘Õ4¶¬ "q`hDî¼ûjC±º¡›“!‘‰‰ãæ±ÿu¥_\ RÒŽãСʵÒ{/�Õ¾pŽÄ½¼›˜PüÃÃãáþ€ÏÖ|ŒS§cñü_¡\\+1j)½¦ƒ|¨ãé¬òḚ́Ô2ÌáÅó¸ç®‡û�O}1„ò�ëÒ—“•˜›nQ®qù\­Øý3��hJâ]O“XB2�íõZ-,ù`3ìy·w¿Tb‰.8Lœ Ó…K-íÿ“â ¯:”¢Ÿ_´Ûu\£ôdekV]w¿ùü 2áŽÞúzWWÃÎßýú>ƒ0}ùƒ–Çú؃›•íš[Ú^´}õ9^5æQßûO}€UiLp+IOž7ͦö¿šïõ}÷t45)Õ­BqèíMnÖÒr�¸M¤ì¥])ɦnO–Wú7^Sû YFöEÁE˸æ&CÏÞ@ã.ÿ¹7cýwkaL7…9ç³à{ßü.£/Š!Õ}ȳËHŸ$û”kGý 5cãë�|jîã·x‹?þñ�XÀ¾äJmÿÎm ÈÚØÑ‰·Ý„´SÉØ¾m7l­Àz&¶60Î|烿qü�ÄñÓûÉ‚_€óçÏÓƒï]&² š�À®ƒß*»q´ÿõã䕎÷ßù³ ›·1i9œ‰?¥Ò3…’sfL°z{Ø`x¨X@€É³b%n}¼=ÑÑÛ mÊZæ”Ó¿ŒUL~Lšæ²z.§�*'TY¹aúxLŸíæ*xÑ#uêÜ[±ìÑ?#42šUhvÊC·¹ �Ý:–X² OÞrày²sÀþS© Àª‚¬vöŽ�Ê—Ί=&jÞ8ñ9©˜2e*²rŠðÒŸ_嵑K�ÇCFŽ!àŤur`ÿØúðƒ÷±üww)»»À* èrì9q”¶¬À]~ÇJè¼ysp˲>òPrr ¥N× ÐÏ�C‡áfÎjÐs9ÅÓ× �ÕÜ\œQWY…ŠÂ èÒ–åÖÇ#xdà×½èo9¯×°Þ¾ô4Tæ"2ÔƒU’½ô€³»h{]-¨Ê8€žÎvZÔQádAr©#îEýwm- ^ÕÖcÁ—J¨FP"ÚÅÇIiô?/ªÅ’y#éS~š2ŒÉ°±¶D5+`ÈŽŠŽQVÙ™~A¿‹‚láÜ¡‰¤SgömÿIMT™ÚX‘uü`&eoƒ°`þV¶²r[OP©>Í9\=ƒõiuÐÄsdƒi1ÃPÏ>*'¯·Ü0å´›Ñïí¢×{ \|IRæÜ‹X£ILíínÂWŸ¯„;A‡;î}�u�T ŠÇüç,¾� @!�Lž5_²÷íÞN�µ !a�Æ^xò’k%’-]ÀçLSÏœ†¶¶øš±ò(—Ào" æ�Qêa´{üî"9jL4ÎÐraÃÖ�ì7pøÈ^Lžr#ްÊ6=9AaC•ý7V#v÷Fø‡EâÐ×+PDõ¥p%$ÚÚ[#:f2Áù¡Ti@lz,ÌŒPZß Æ’¦&U|ú¿‡‡‡&…ÍWVyÓÌʆ•èáô\v'H �ÊÜs¨ÈÉD¯�7òÓãiÑÊvmÅ¿OäH“’³H$ U„¶Bæ&ºøng< Ê‘Îʰu_†V}�±13>Õµ¹(¤®˜í<<:†þƒ¹Â‹ø„<ýìÝç98u:å¬ >B’§¨É¤dæ`ñÜ…”)N§’X"rsÒ© ¢KŸFn�1såSó~œÊ*ó YOâ³Ï>ŠxsG¸f&+ùKÉÈg²¼äóÔ¹ñ9ÎýögmÇЩËäc¥Éú%÷ß ‹ôLør~•Aðý«Çx[ÁÐÞ³o!�ÿWÐ2FT’Î`ùý�ÀË?¥”§Õau «•)‰ùß¡¬E�$�2ŒH¼�ÆbŽ Z†(*( Âá9V� ¤\p)‰%fvnð´Õ�ÚQ^MœIã'@—ùdW÷`عzâLf!j®ZµS&Œ Ò…60ïÕÒÄÊL‚~ -°aì0wc¹Ä,§“ñàýw)Êö%¸k�×ìBY ½Z ÚÑÔÜŠÖ¯cEd(ŽÙÝöJ èÂÓΈ€__Œèí¢ÌõŠvêR££ GöŸ„­W0+AJim»¦³Èk Ì¾Ž1 R�¸oI4sôô[mhÅ`ÿÁô6¦'tu+ó¢Éè0ðDk·mfrž;šýÝ(¢˜Á”À®…‰L:ó enEYfÎù§åfÃÄœÊL%­íÎX%�ÒÎe%,Œ°E·kZIÓ#ÈÚXE•?*f¸…MEj&+öÍš+o*MœÍ.`Uy «yýã]Ãy¹ö$õÀƒÞ²ÐB{‡¡a¾qm°ëd6ºÒžÌ+Ãøú2xM™ GöÉ!~î”$Ï£�w \|ѪmލÊÀS©¯Ž®Õ¬(mëÕV¼WõLœPJ_í {aD‹„§_XÉ*Ûª 0OD¢ãÝK¢#/�z&$xÞÚÑŒÍ;ŽbÙ�÷‘Tã�ÓGY‘î`…oGtSù£UßË©"ê'Û·üÀÜgÉhé$êyÁŸ6wá¬,ΤêH.ýU}|±úËUp¢·ð÷[?AÇ‚bʩǞɡ¤ºt)‡\GygŠ>£˜Õ»ï}ð2ss±Ž¢™³Ý´ùG̽év�+þÿîeßO¾èþû[ö.9*@›Ð¬Dÿ­�Lí›~ëí^ëö.5Ÿ¾ÖuérjQó›�Œé璘e»—Yådþ_ŸPIª�1âZŽùÿûettt!�[—.ÅC·Ï�#=ÒGÜ(1£G3myHÛ²e ¶nÝJ¶Ù(¥ Q�Aã(Ã~�?\¿ÕɼÀ*û073Qv%ƒvýSËáÔT· ”÷þÝÿ“„£#Ò´rÎÕK‚L’aÒ±Õ¯[Õ."– ûüÄ®å»Hµ£{š¬ˆ¾û­�©¡&.µ(ã:`•ó§E}ÀÑ‹–Šwƒ-i8IÆ‹Ú$™ßzâp{±1½àù¦5¥tå¸EVSOIò]X_d9c�hy¾øNßE¤n„Ïj‚_}K’ƒ]ÚZ†®ï|nd†“-¦�Á�dÔfÓ'Áƒ¾ž¨L9„#OO�ï„Å8p¶€ìµEÂ"ÀA�†v”'ÓCf^!:(]›OŸ 'é Ó€ø¼FÜyÏݘ8qªæá^õµ 3;7_äß4©^”hn �¾†=��¨ß“„À oDô¶ îô9{âŽes8ù3Gg~2Ú¬†À—`¥ÙÎ�d�¦ÂYØl ­ŽzØôð׺Ðä7=0~¡…éM ùð^ô4–¢ºM— f'Ïåðus€ýtó ‹1{ú$NÖ΢4ï Êé¡D¦ùx‡4T˜ÅÀ‹¾LpE�C9[ØØ» V¼Zƒ†áð�}ôuHb°Zj<Óã døeqÂiMg])·WÍD€)ý%,Ÿ�.mC„ r§DQ'n½ùfT1!ÒýÍǰ¤§yAŽ2!P'>¬šÒY³ã(qÃlV�Uà3ʉ)§Ÿp”Ò”æ$L&›r 0íËõʵ/×l2tη?Û áBÙ[u¼’ûC}­�’üÄ•V9­“&MCÏLà‘EHo‡Ââ2<ÿÒ+T#˜wáÌÿç=©çAž5“÷êï }QhOŒ�ïÅÌ¡Ã`8<š ·Û/Y°Q�\uìý+x»w]�ª$Ü–,»S9áLÜZòaDúdóVÒ<erªÛÛKÉÒ/+±*׃$ Ð$«^†r-É$�:‹×‰4éC…„"ŸýR�µO"ù+åÚ•þ\SnEe,‹$jwo/ÁïàB®Ó¾$ÈnE½ô«êµ¬˜ò_Ÿ�€³×s.ZÿâWRÁ6Fñ ÒÙ(¯`U·6`ýó«¯à¥W^¦|ðRVpä3q牴Œxs²=™ éƒ÷?�í;Äö]°|) :”ü½gù ÀÚ¿M™PÅŸ$Éã(}ú+¬02í5›T°ªmËÎÍX»á]ÞÃþðt Â_¿ÍIŸÁ‘TèiaÕÚO(½ØH2ÈaJ=µbÍʬ”½)?t +Iï{àAeS3§Ì‚-'´«¿X‰(V­mÚþ#\ ÌúpB»ø÷ĉøÝL®•£ö½÷0lý° 7‹}O™À_@¯:é¯ä^»TSÀL’™di*ÙêdQ){îI;F³Úð§ï¤,tá¿6öËÒ„e-Mú:¹ÏäëhnîË…™®^7&Æ”ùÔˆç3³R°öðFV7÷�õ™q”3Båß ÂÅ©×ÏHk²—È‹¾õ²¡$ždû°Ê>›FN5ôš=Ÿ2ª“ú÷ÑÄDœ¾¾�|ŒØC›)íIož «Úȵ-Õå¨W —e‰Ç·Ê™Úƒ–Ê›ÿ–ÿITÅã²^îPåÚ�ï®Nškc�(¿�ª² }‡füv¹í¹íjòE5¬îÈ%cü’»ѸӧñÎzcÏZ€€Ÿ‚ýâ;áNÙCÍqárû“÷eŸrüB�¨Èõ¡&ì~iy¥}^î³ew-W*Ø]œû@°"ÊNJ<u¹U”÷ƒÉô—‡Hz?òû‡±reäJJðÕ'_Ò{}N¥ï'Ã�‰d&ÝV¾÷)Îfœ¢J’ÎRÕÂë~ ºŒ‰N'lFxÐ(‚nWÜß뇩©©Ø¿?æ/¼YùŠÞ}+tÌìÉü�fâð5É«Y‰ÑŽ'Ä&¦ã\~–Ì�!O�=�YC|˜k§ºL«MMXmᆎ† lß½“ éYÃÊuÈ%O_Á‡ªŠ øЂâòóÙQ¼T€U6T–µ±q©ôï®CBJ*l)kèNÖPJãùºêâ cn­„$´b_þ··ÞÃ�s—ÐKòi‡„²êÌ7RšÔÎÎî’Ç5ð͵k¾ÁŒ³9ãÐ�Ƴ”J¶³î_¬œÕ¾¼dÑT� ?Ãì9óYÑÒ‚Uëv"Ÿòɬ <{†~ãLüéë›P ?/üõƒþõÉ‹—^¦ñ¡ÃT´Šî_= 0çÓ¡M¢££­ «}ú?“2þ£ÅÏV)¹R&¸ÙLï:ž S'?E q\4Õš86Ù1¹ÊYœù=­S4QöñØÞC$"å4_@òe/I¬:l.¥÷™6ŒÌ~:íô˜ñ7Q?ÉÕÅd<Ô$©ï|Ž?}’oI% ùÀ�~“¿Ï$Ÿáu”¬TϨ<“˜Àù„Aûj8Q~¯µ$3ÆžNFàØI$—–¢¤¡“^«upÕp åMHÊõg¢ŸÕÀýÊyß8Yé#fÉ}ô™£*QÚyäì߀üì306·Çƒ�?�;yç(q:9f<«³M‚w^}.n”õ|þ5¬XùÁ÷(’f^°ßµEN ,HÄ‘ó(}»Çœâ˜QÆ>þËO?Æ-‹bÇö-8ŸJùèl<ððc|pø¯ñ^X˜uã$¬ F ߉€o_ß]ÍêÒzÚ¯#Ù¥§¾iÅm¬05d5“èÕÕæH>c¥êÉ´bx:[±Z¬w�èðÙ;ïRõd É}±‚(.ýò/XùÙ*´ttÓŠ§K‘óýè£ÏqüÈALœ2…ýP†Œ�€Ý‡ ^æbÇþøaÒ&âO2N4`%ï8’ðŠè­ÍÏ‹Y‰^BP—`¥"›;QÓÐÆùr ãݰfeV碶¼O[ªaÏ"ÍÖÙÕMÙg‘Ùæ÷ X°æ›MLâ×)’¯V¾ƒ´ÔÔ•eÃÐÌŽg|ûõzıZ=—„�É“§¡¶$�ÁA…oV‰S‰I¸yÉ�h $‹²ÉEe ”5·eæ oV+WRzµÃAƒ‡+‡±éÇ0•D’õëVP9.³Y±w¥&¬*À*Ë™šY(«¼îitÁÞ;Ilé¥d‚ÆzàÇÊï?Ù€³Ì©ÜAòEê ̘qî>°áù �Vªm‹‹‹ñ—WX­Éß§•:œÁ¬lÝE«¡ôsY°3íBbzž{î9ìßµ1S ›A Š×à3®Á(×6ÀðÚ²�›‡qS#üг/ °j.,s,Ù–´�¬ .‚NV3ZQV}_sù_ûZb£+mwhIâHL7!àSÿ#Õ#_ÉCH¶WZoàqIl&MbBY_šÄi-Þ¨Õ3"Èz¦~©|vá( ò¿B77´ÓÚ™>èÒdÞ ë«„dyoP^:B—,Cóñ�Ñ^‘Ëày»¿-^8Ÿ}Ët,¹u©2^ʽzŒÁ*û½°#Xo­[ s—áX´ø&Ü¿a>T i„A·”´<øyx³z´’•†�”ëfÝÛNù]wx# …]˜=„c‹ óò9ŽíG"óe1#C™3JÅÄé£qîÈQz+'À©¹¯½÷< â¡gE_q‡p4×faÜP$0füâ㌼Iûq¬2­ \аqØ{ôºë~ü�w#ä3_X[Êfûyô ›„—ÈQÓñWö'»öíãñYÃ�jl­ç©öሞ.~þã§·ÔEAd=kwL;žU—°g¥vV~ ;:`B°ôhz.fÝp#Æ�‡“{}¡}Y ÇÊÜphQžºªé<ü�<虪�&mZT3ÏJL3ú‘ZÐæÌŠç² 7�qP ÎR6ØÛÉÝzæ´ÍêfLéÛ·ÁßÛúœ÷FÍYŠS´Pó º_ò™"L›„£ #éw›št&6�¬ô5ÃøqcìïCs’2 †Ú²¶®a¼”ŸÍ>Êã+Ëê“ÜÝ ­˜×œ½˜ã9Ô öEï½ù>�Oz¬rßéIÊÎgE©-aY}öŸZì#²a@û¼ÞvV±’$c¬Û‹ÌfW’6Ì`Ä|j‰AÍݦ$Ï´ wû?—š†SÙU0Óîij¯~¨\cñÇwãÐÞ-?9Ö·+çlÂ�}ñ§!å tõ(ÜÊ|²>ÇËR¨©¾Äë ìüi¥Z×ÙÕ‘ÖŠÌY²D7ÿ NdV`XT4†G�EqF"¼#&!-=í½z˜Brr@P�B\HÒ¹÷ ª‹ü‹VõSûõoõYîUõžWßûßóo{Ôs,Ï×Ó. ²^Ïþ·ì¿æ œ8ÄàÃÁ€ƒB4œ™Ô’¦ °Ê߃ RÖe·Îgr€LY2I È™8íÒÌ_Yç·h)g3°�]'nšMn’d Ï$ñH½ÞÈqôÛóÔ\äßîµL84ALIfJ0# 29v©Â²¤Äåõ|ÍàI*»ÔD™t’WÚŽ$ß$©%M’ðâY(•[2R“ó 8pAT•3n¿ ÓiN†4‚}âñ* ~ âä!ÛPA²TÕ”ÆÉñ 4ôbЮ69*¸+A£œñ�pQ­S—•烇2Hʃ§§§òvGMá)»{ëV²]£ÈÀ*G™Ï��ƒÉj ý¼·&µd]½úù>Œ÷ˆ”Rîò+kÍo\‚Ã�л�’b¨DZ6+“èÝcÕRˆ¬ÊVNš¦�}ª�pr•ÙeŽ ={6ŠoŒmeišÈ«,Ä)2åjŒ�‰Á>.øý£Ïc “þ¿´Éï¯J›Ê廒3šÛ+fàaLŸÀˆ˜qؾybF…bØ”(–îvÃÊݺ{âaö§§hOé,§˜¾ÿ<åYJp�ŽfÝ�DN2PD’„­ñ€[äpÃoõ3v(¼¬‘YRc{wè‘|ád©?;v”,^kÌä„pë†o˜Ä²¦üšZ)ÿ‘ÝFiš¾¦D†¾N¾[¿�p‚þþ»o’Ø‚½{vãðÞX)«$“�®.„ЯUÇ܉>R£ÉT÷…qU3Ò{(ÿ™Æ‰‘èOÓÜZ£0¤“Ï$â–[nÆ©S'˜„¤·•µ¯s£ V5'r�Їœ~X˜â]Böàæm1>: ß·�ÒÐ'°ôÍ÷°)§3ï¼Û9pJOb5%E‹)#µâu¬=‡£Ÿ¬€ý®ï•û£�‘ÚƒC5-ô]ô럴hþ&W{íǀ؅²ªU .%ûõ_B’¾F½�5Ï�ü&îLoHŸpã;Ÿü"€µ¯�ø’ ûŸú(¥OáŽ`µ~ô9‹«ÝrL©é°gp>°™@»ºR9~©HµXt;AÐ?)ÃWê7Õíh.#çA˜ÒÿJ_¦yM Øaÿ(«kÞ~ÅþXÝîÀg9*øÐ×/<]÷u_ÿÊ…UŸl6Dê]üwÔàYƒÅòRA³¼×Gêéó’¼!f$VU€Èþ5¿«z|G�U*/�=ŠûïÏ%êG ÈzøÈ!J¢yö¿÷k^>r·ßz¥£±† D7Ͳ›*ÑÜÔŽß-£ä/Éá#0}%›*b_%÷™½]ŸšÀü…³y º#žì\/oo, «ÿjm+ªæÏZÆ­°kµ°Ç®=_bÚ„)?je•^¢ÏY(¥—ñÑgïcÙô£G�U6éÉïìL’Ÿ³ëOàæ?n RÇm¤§�Ã;¯¿’E„ýîO §òZ2Ž Æóú±ÈÏ%ÈÊêDÞCòh¯(¬w¸ó!¼×<æ>àýkL¬ê�×12¤¿û²Ÿl5òÝOYI§ÏJÝzË×\­ÿu¥¼`•‡Kõxá…ì¿Om#fàGÊßÕL€2Úë¾@IDATÉ ò÷ Qþîbßnbã¬Ä ®ªd!õ¾UÄO´zêBö�Âí÷.»hÛgÏ&P‹ý;�ÖÁô²-¢’„HGÚ1Ž`UÛ®à!†ÃF¡iãw}±c¹Ž/u� Èêäæÿ² ¸z­«zâä•D¶�÷Ôs­ö*¡O]v೫I¬!D�Kõê:–¬â e‚ö­7^'“›¾S”ˆ¬%`ÓÜÜBÕ† &Æg¡ /I;6ã8?_È+j|§Ù'ªÛ“¾QbxC4?W_ ñðR¿©ºþåžÏÒË©ª¦vÖŽý‹dææPR¼–Ì}«þ÷2H˜¨â5lkmOƒJÍÎîÿLü}¯°ö/¬ñB@Ö{HqbU”£ƒ3¼ë�Lœ!,Œ ½DM�-˜îfL{Û6}†�?û‡×¼öä»ÿ߬rúìíí)¯gB€š^m™¬8ꨥUE5“ñåȤ,¬HâUTQj¯ŒÕö¶H;—‹³%í(¬îÂÇ�Ææp·1@g¯!‚|Üá`N­Þ¸FÄ`hÌXÚûküJ?½Ü³éløabXÁ7n|4;£Ÿ>¼ð*9){wnWÆFÍ Œ,ðñ—ßS^Túƺ°eµcë6¸SiæÀ±3L>¦‘äwËn�=ö·¶nƒø{¯ìß„€«× °O‰HcxÐwp\„¢,H¤Í�OHJsRè‘—Ï9W&ͺ‰Éâ‘èâÁÓkœþ~¦øö›oSC¯·Aá#±`á"Œ Èߘ¾•%çqð»àƒ·þŽrúàf$žTl^ÊíDòÓ÷ᯅ�È©-‚�ž)n{ì1ìÚ°3XÉs3+žÇ³ê»­®’¾tƒèO<‘#G+À™œ·ÕŸ}ŒûﻋD{d¥�Åwß­¡e« l8ðÞ™6s®â±'ઠ°Êz6$IëçŸ~¤z%Ê-‘p6�•ðœ8P3­^›$—Ê‚RáI�÷-ûC‚‘œ÷ûñ8¤­ûö[¬_ó-¦-X‚¨‰3êgâõ7Þ¦/PŽÐ¨©¡�À�øšÇHKhض¹ô>îÔÒ#Kõˆ²JLŽý\ÖËË‹r¥¥HÉȤt³#Ú[*)�¬ƒâ2úBœ¯(.@VF%QI>.8 KßHBà,åi­¶¾�•¦)° ª¾®>¯ÿª_ôrûž¼GzPÉŠË;—ÝOP7›U|q$)ݳüî¼Ã~ç‰'žgµV1+eÛQMâ¸øBŽƒœ´d$“H˽�bçFÆÆ°àX/UÞfH9+üîènnB( » &Û3"•¦šÖ!‡zÕ—e¼Nœù;µ±œÖÌ´N.æÌÇa”˜öt Â]´˜1&0sß½÷áÏz÷Üÿ‡‹¶9x°/¢££±mûV<õäÓJ_ð³$¯„ Á®-$þE ÇÔ ÃPZ×Ä<is—ýî´3'Ôœ��,;äY£°Í† o'üyî~}c%~E9Šè-ì’‘Ò¿9!ïª9µþ7á 56ºÜê’¯ÈË+†Þ}Þ±j ¥�Õxïrë«ïË~$>ÓœcK,æÎ|ÛpE–ž×ž‰0‡)ëh~G‰ų̀åÌq[¾·Äw Á²0÷g„¿Àþ÷¥/þ `•m>óìsÌï�€¦Ïµ#ÉÒ2j Ül|ý”C'Ñ¢e n[¶Göîc¿5Šc8Išmô_Î�Ç«×ÃßÓ••üÃá×¾�¼¦Qb¾RÇ–th;NUµ¤” GXýÙ£KàžJ-�”Úe*ïáùÓÆ¢ í tõU¾3[J%$úÊÓdz–1f"ç¦UÌ)fPúüž¥‹±cßqö±xÿ£o±hÑ*³å�d—ÏêÓR‘­ŽÂîÌ]íØ›Œ ´çù�U²uGvã–’Üú�²ò KHøraïäæ…y¾%î‡A^>Ь<0bÎ4¥ÿ7#(ìlmˆé“Y˜SEe§Í{0nôH’ZÌéïÜ��û€—§'|XŒ"¤–êÆNÊë7Ñ«8�9<;нp¶0ຖ±„#‹¦ŒàM² cŸáC1vÔdÓ縆E$K–.‡%eýÛ‹â`ªUƒ¼ZmVƒsðZ›tÀ¦=1£ýÙi±~JHxðaÌÕMÏëˆw#xÌôšRF˜²Æ!®&p´4Cvñ9´»ðwuAg€¯¡“a>Ýû ³Òðч£˜^·#Üôè ëÄß¡ç«X ªÃývè�R‡ó9Åhk$¸Ú®‡¹ôDßÎ3Cöƒ£¢Ð­mÌjéÁÊgù¹™T¥Ù�QcG#œDkm‚·qGw“ÀFË ªïq>±}ïA¥€¢‘Åõ+)im¤Õ…|ú´vñu �´yÞϧÇÃÓ×—2ìC•mÿï¿ÿ��_zþ²þÒ3÷/Z¯¨  ”M?sÆdÉ$&%c$ƒ.i¥™)8´ê]ø�œ¤ü­þWL©½9ó!’¦Ï¦mdH²ã‘ä—$yU¶¢$X¥âD’¬’Óµ&Kz™h”¦ÅÒ*($�� k_2ˆ ¬”€Pþ¾žý(ÿ'þ'ß{àw–ªÓ�ARßß×§Ë­yØ’àùH©F¹8 h:�¨°V–#kµÚC-Y^Γx)È:’”“d¨T@)ïsõåsÙ†,cÙ‹‚ž‘Ñâu(çÚÔÅSyÄ2Ù®óýýÁ“$R¥ªU¶©ãêa¨·ü!C‘^ÑY…!,Á—f"I Ç•dç�^+&è¿Æc¾ÂÓb|øÙ×(i¬¡!¤)ºªò`Jõ!#§bß¾]Šç%éï¸íþ÷P[‘‹¸cñH-«A0�Ý °ë¢—rDV¼æÝ(m´eÝZ4×upÂÓ‚ê¬ÓFqÓÞcLº|‹ÂÒR¤æTÀ7 <þÜÊÓZ›àdv-™rELBB·3-z}˜zpãÍw‘u;\9Þ_òŸZ­&—½œßsdÞÓ8¶?¹Þ5çVühæŽ[ )Š?ßD‰'Ê£Ú™€ÎBnm'ó%Z7nVvoLÑêèÖþC·h)2™4ì…q55¥\Xë­¿‡{ÚiÊ¥¸ hü¼ýÅר$Ówá‚›{ê$ÎÛ‚›ï¸—Ý Ø×‰lØ,lß~£nX†˜‰ã(u4ùô_hh¨C°E. ­}9Á™+‚L~OÈâ­M‰©Jmö(ÉXñ "ãw,ü<�ðÄÓ�!¢&Y&V¸mÉR²ø,`ne‰¢ê*J8Ù#—A¦=ÁÕž¯?¤3'P5d"VýˆÆ¡p¤œ€ps 9yP_­2îô˜³µµ§Ï¥Ž‚‘K�Ävʬãæ3}Ò¶°J“ë]½æ}+¡4˜çÁˆ¹4¹Ve²ÒDi¡jú{ˆü–Ú.uŸ«Ÿ |V·Ö7ß| Ç�ŸPˆ+—ûOù[½�Õã• ÓN€O}²»âÝ*ÄõóëyV+ôÕu¤’í[÷öfK?t-R&Ÿ|üÞxûüñ™Ç)Ó€sLÒ}¶r5`Ê|··¡‘×Yø_ßW€Õ¾ñDÝÛõ=K%ë YFúWéƒ]ì’µš›Û<~8 �Ž׺é“e{Ò¤¿”I¯Tªë È*Ë+ש<Ôþ^%ï Ü·\³j•†|¦~.«<¤©Uƒ}û¾x|€õÆù7âÉÇŸTˆVÒg�¡Í€f[ýÍjʹFôØqšoÿ¢×ÑÑã‚Í(Jàݳü:¼‰}^5%¬)q—Kiâ¹ýÛýì«‘@ ºJsª kQa!±B*’‘<®§ À*-žI«ŸúƒûÎ�£ƒ«"Aöü‹¯`÷ž=øzíûÈ!›uÙÒ/XeÝÏ¿ZÅ õDz��Æ„q1ˆ2œðN߸ß±š¶o OaïyW‚èü ?çÕþ­¡Yý­·.·8odL?š‹¶2fŠ¬ïˆÆªòq�ùÈÉÝ Èš•‘.1}Míq‚‰ÏX>F2‰¤¶c'÷Sz•Œ~Á” ÿå±›º=yž3VX×°Âü«o?Å«¯¾ƒï¶lG—v%¥.Oà†É·`Á�E ⡇ž%lƒq‘¬¬ú7m…¬8HKŽ£�h_bêŸy˜›7­Çf‚žæŒ·7þ°Ï¿öâÓaOù¿h¢ì\XäXV[‘ùÍÓÓ/¼ðÂ5­™wŒ!î¬p+Žh:¿W±ý±£Tð6 ƒ= Ü9úr¼â<�Ä/ÿkÚÊ2Í--ô©«FÒ™TöþƘ9o>}Óc9ŸsU@YflÌ$öëå襗刉³ÐV‘7ÿ0–£­&eM\ˆò©µm]Tº±‚‡*¿ÀPz´éRf¹ÑaN(fß‚€ëˆñS�Ç|Åø™‹ÐÂóïËY]çϵظë0+ÈøûÜ$±•rÞÙÛ¶Ð&�¢Eôí«o‚çèI0¡šÄ¢ûîÃ+ù+¸úÆ ™7N˜6óæ/dõQ ïN”NRȵe%ÅXºüZ28ÃD«/¾ôgÜ0ãFÜûû?`U®ÔV~òª �v&•º Á:)- ŽƒÂ¨VÓC" :™¿ê  b¡ß‹#YšC&XIkhbÊÊo;Ä%§à“|@ ™@Î2 ™L¾{ØéâƒU0„ánVyO=‡S¬8¾uÉä¦Å£•sÍĬÔŒ­' |&�úvæ-Šr àë?ˆD’4Üï2çú”diZ‡ILCݶزhLæšIG�Q¡0—*=öذú}tq|ažrçþXV;Ó·Ö€“$Î%ºšéñ[Ý€y3Çñº1†-¯�8ƞݴgsäƒATñ[ ’bwo%ÙÒËxîr—óÿÞÿ߸æ3ð_ ²Æs‚ìÌ›ñ¿©¥§&Ð"7lihhĺ5_¡ˆ‰�‘cbÈØ¨À®µŸÁ!ˆ›_}À�ð%¼±ú[}ý9ß{IIüêÝÛŸØ•T’:RQ°îÐzìˆ _ô% ^{²½fUAVV! XÕß@|Ù® Έ—€BËÿê¦2a5}ðä=5Q�OIF)õU'ŽP~ôâ ôiÊ¡”äÁÅÃS]ügϲMƒÄA‚' ¶l{{3¥šOÇÍS©ìP+]å÷‘‡5’Ä’ªÕOAÞ VªO¤2XŽId´¥HLJ”,o¸h©Réªy{ßz•Õ8ôX(ÊW¼’¬€ÕcÝ^ ©H•ßÂ�’Œšk#}‰j0pf€d29•Ç�zþNîNxù üLÊŒm°sÇN&òg2aÕCö'ƒìÅËQ¸ã”èÚ1Á—‹ÔÄ<&­Óé·`ŽáQã -ño�ÖÑÝ…½”i"˜ØI9 oèê葉ÕJï{dÒ3¥½† ¤~E;4Ó#(оŒ¬¶$åL¥Ä›°«ë+K O6ðù‚VYÁ+dù BWKêÈô�8e¦OŸ¡yj®ùµ:±I?åwPòå~3lníßNs =],­aKæovZFyY¢…”ÙxmÅFÊhÕ¡×Äö™9ýëÈ‹t]Ügé�ás ÃÎGñŸ9Ê„öHJmšÐ³!—ÒC¦LĤ2ˆÁ*°X‚šôJéi§ïñpÔ•çããUë°ô¶Û°ßžÜÊg´cǺUh+á²½¨ÌO¡Œ°¬µ ñÎ7q"üù¼FúE ‰†:úÖŽcâÉÑg$“>fÜüihâ>ŸrÇAÐ9{‡yþC‡DöUtñ˜¿øz-Ìt)ÇÌDPO�e×t`œ�†ú9IÒ4Ç3 YYÙ¸õ©§à}÷T­ØKNËàdÍ_¬þš2| ¬`KÆú ?°Úl4zRâÑròõµ±†•‘LÊü¼1å=¡ÙœXéÜŠ„Õ+aL!–ÈDC*ÓN@4×»Òk77ÊèòñŸØ¤ïQ«LÕãgÔD}- üKKÔªK\ùY&^ª„¸ômÒWbd´K§›‡ƒê5x¥-eòbå§+™”Õ%ó=¥”uÙ½~#eª‹QÓÒI)}˜èër¼+‚ë2Ç•¶w­Ÿõ–ô¾çqñ®TÌk]àr²¾ <¨@’ü-c�TÍ6�8¤<¤ïP„Ц¢YNsÿâÓæÂuÔD¢œcx“u�sÎ)€­J¶‘±@È5Z£Æ)$&é«ü–d©aÄÊü‘­?õ†Ÿ¬²-W-ÀúÁÛ¯q²7V6§4ñõ=KéÈV|Œ¦ÆV ‰½»vM„®^#+‡ÎaÇ®m´? #>x~ܲ™RtqôB}XÝ„òüæ{ïÒêàúÀÖ©ç\´ ùC¼UKKK艶P™<ç¤"ùüœËÍÅÉ„D<úò»Ìoõâ9Jï �yPñ_Læ„Ì�UE£)Íw×¹De»òûÉï!@—ø�Ìäи›n6tb2úÜŽ;(,-�UU’ T'_¬0t�MOÔ/ùI�R1ݹøNCss YTiò›É˜/ õÞ�†Ы‰ ‰9:8a5fâîrÊ }1ËÅ û…M_öÉÆ¶OµÂ˜ã¸Äho$žGø­wÀ}ÆÜ‹®GÙ@ýxL8ÿÛ[Ÿ`ˆ˜9ûe»=÷­ÿ oPXåÍWž¸ ƒ'ÍfÕƒ‡"íªÆjâGYñÿÓÿä>—‡�'Ô~YúM9š¢·\•E—÷ÂKºïjU=C¼Q/w““â Íø)ƒI§üÜ<ªÜèSúÏœUD}„ÙžÚÜ=½ |y²r§ÅBê"!Ib£Ý›”ýKòNõ»¾T¬®~Í~KÝöµ>ú…1ñe‚­Û×äŠTâ&Z5VÙ–€«òX·u;^ûëk°·±�ø6_©�ˆK„Áý«6~çnV |öùZCnÅ´I3pž±Y$¥*UòàU·ño°€�påñÏYׯùùçóñÖß?DCm-�+ŽÕ$ÒX›*ÕvS¦NÂøÃ;bËŽýLpMb%–>Â}m ×P…MÇSð\9�=rü8FD % ÕmaW<‹^T¿ù ×3ë¨CvUÁ¨h|·i++›KÁ„iã†âwwÞŽ&‚%š ë¸ÑÃàåá�öÖf‚õ ˜9Úž²®Þ¸ûÏâ ¯“¸ÓÇ0„Õø‰¬v ‰P¼foY¼X‰ù\ÿ‰qŸW@ˆ°¾øÔÓ´GéÀÄ ¡Ýc@àHŸ2ùƒp$á,>ýt ŠòYÁã=ƒƒ®xŽ®÷Ãí;v‘d�OVLV4´£¾±O?ù†’È0”Iâ��P´±ú££>Ÿ ÌÓLÂT-­†®¹=nsPFâk`h=[»8ßhE%“ÙnºC™×å—¶Áб[a«õqÏ/À‘ œ±v+ ,œXi1aAâTÕnb`<¤ù½dœTåòÕ÷ÝêÊEß¼KõSê2—z– Öß `•í7ôäÜxöM}`¯³«=òÎ%cú¸QJ¥¤.è­š›‚Z­Lc•ÙùøÃÈ-¯ËFV wÃÎJ‡j•H8•N?@-ÊW¡±±«·G�¯'ÆÓÚeè8$Íêr¥¬p &QÕDÔ.‚!ž„W޹ÿøø3̘³Ÿ®x‹ãôM¸ù"̽í>Å'/ƒÿøäsV‡aËÎÝôÚ+„«�nglíŽbÿ`ÜüÀCTA뛣«çÍ‚’͆Ê0…¿¿ý\�E‚­“oàüßÙYyD�O¹H{^¿îêªW|î¡W󇯿Ž�‘Ø·c ¦ C7% k¨¸àëéÉj7J¼¼Ú,„GŽÆè‘#yÏaþ¾aÃÇ H è—�wßÿ&±Â¶¢ªž×t-ï#’9bO°œ$Mx�IšHÉäõKâu$«îîY¾œþ…Ŭ&ï$!À‚ù }'} � ž²?2dB¾‹@œxý“ˆ àA-tî_Áж’<ýÔ³ð`å]eÚAœ=—‡™sç)ß³§»�* nä éðÁJ½­�RÄï¾µ€DÑP’b¢càëbƒ_½g‹Úè™]Ǿ¡‰EOàL¥Þø~ƒ2öîß½ ³¦… tü<æ^G ‚¾÷s˜¯”qYáž6°¨‹E+˜=ýÃè‚p’q¤u0_èæÁ~“¶‡Zœ#�¡ýDrB,6ô Ž'¥aBT“Ö$Ã4£¢±åÙ(:Ÿ†ú×÷°´ÞÅ{É`Õ´2«Qªdó3Î".«˜¹É^’Ô aD5D�AA°uõBð L�2)ç q<.�}ÑPÅÇÖÝ7”’Ò�{ÊÁý ÿ“¢É!¨÷Ô¿ðPþ·ëë8ÿµ «¬wßq%+½ŽÓñ│«»7‡ô1»Ý88Ýt˲þJÖr&“Ó2Ù1Öô±™4@Ϧ8NÚ?}·Ýô’$Dk2\d°—}Æ“/bõ×…=%�aoo�*çûõ?þ{×U™vOú¤÷^I%$@��Ð{ï ‚bA±°–UW×UwÕÕU—U±PQT”.„B'�BzHï½·ÿ¼7Þ8„@tÿÝýÿ�g˜ÉÌmsçÞï{¿÷¼çœ¿¢²¼ž¾ý°‡UµE þÝY]©6WU€U}¯ûóÜ…3�ÃA9rX”ò‘€2@+�A·Är÷u뿵Á9I~J Ñ]¶MÎK•ýÕÄ—$9,–ï"�­Ÿ¯CY=ªÇCvŠ€ÚFGbRêttRrë‘§5u´¼1Ž©ÐY¶Ù Ht²cÔ I’K=gê{j &Ç#5é&�°úP—UŸ+æ��Ú³õë|Ú¬cy®MG3ú±§5* .§>'%¥³ê×v¬<Ρ'âî�^FLf=ª²ª0ñO+è­”j·âË q�6’À>’k-LRŒGÖ¶qœF÷†ô:ÌJÖVzÇ—H¥úäéÓ•ÝÌ 7Ç¿ÄÑKÕ‘ ”¨a£1š•²ù™Ç‘~á$b/ä#‡ÕJÀÒ?‚’1ð `—œWC¦[jв�^ÔÁÄ@½’<) ˜Q\ȰÅ¥¬^‹b�Ƭ–jë0Äc�Óûnâõ¬-”¥‰OLÅK¯¾Jf®á{ùr-k¬òž]6¹ihŸ w{ ú‡ÃÑÓ…AŸ.ÄlDÒ>_ß ÉîH¶@ÙœYHð Bº‘%Š)u‘HCöè(&zècʀɋ^‚:ë>„‹*¤eàhHŸšxzó´’¹*’wNÅ`Û¾C”Ù«EkÉ9°èÝ“Š¨Áv¯|1)˜~'¥fˆŽJé¤f² <±x/3dÒߥ�‡+>þð=ô•DÍ<2¹ìÐVó÷ª¨m¡Í!<÷ܳˆ˜:•ÞVg0}Þb&«*X%CïVÉ1ÁâĪ2WgGX°ú.›>R¦ 8í|’ ›Á°àµdñSy|.½T™Ü5'ÀàÑÇyá%¸™ ˆ¥WÇ>Ìš5•d»JNGEX$ú®|nL‡ &Ó‰À† nåÄÙëÀήÊÐ42Êô=|ï‚ѳgÁðÍ•{Y~#yˆÌ¢‰£c“Tu^m‚ œànÿý'¬òUºOžÄ©®«wTœN«?¶ºZÒ¾Û©èñO€Üà\Æ›Gþl¥nô¸‚Ö›‡íÇ—_|ŠÊDr‚} œ\›´ÕÀÞ/Œ2¯N¬€ŽåÄü<ÆOOƳ�ÖÚ7ÿR¾÷ÕúÌ_²õîÛR™«2¾¨OØÆ` Ë-Ôþ[{'y½öå=!ÕŸ�cÓÏg+d¼N nDA mìVì¨î_Vir݇q’áÃ*Λù�µ�­ûëãœô»i=f/X¢|tôçÑCPH/±Ô‹ixö©Ç™pÉ„‰q=¥‹ŒéýœÉÊâ N&±�…S'ÍæäYäÌ\@NÝþÑcǰñë¯Y?O}ë?»R&pÞœ”?¢4=ÙQáÓÈÐ#ëÞ� ”>~ý N˜³à@‰&?NÖÖ|²ïÜù;¬yþiô'Ó?ÄÉ^9—Ú çVb† KáÉ¢¾!C†)«HEæååã¥Õ/³ ‰’jáÃöŸšV¯¹¸·ÀŽ~_3ke³òÛIb¤cÀ G)z�ßW-^�‚¸&&ÿôè=c@i»f#�É (þ¦#QüHçú¼®„-ª¹ë>æBYÅ}�MVµùx÷!ë¢�úçeÏY¹dŽ”£ÒÀ¦Í”îÜþ-ncAÏóO­@EÁi¬'›lú´8E°<ö$%¶&�¥¬èå÷k}}ÇÁÎDíeÿ/ü#•̾ÏÞ~ CGMF‹“¬í�”o)I¨îìù@µ‘£4U–VV®“¦Ãa9å—L€Æ£3î—eä¹ZË¢lV-¯í>>�ŒË�äÄDzãQIbÐÏë÷´®ŒËâCnEE G2 ¥ÿ–ñQúðÞö×Ó¶nô½þöÁÕ`² ÈÌ �¼æêò½ÊÈ–€õZ ëÓÏ¿‚¾ý!–Ýڻ丣ƒ3=åÑ�Ü}ý°~ãzPÞvîìÑ”'îüÍ.$²¯°¿æñý«È¢š•µ5U&èÓGúK&æLÈÈ §“…¿aëÇßËÞÁ�L#*ð9Iô�½»È®`ñÌÅt‚ü:d½7àÈ™dzJê#ŠÒΆdFØ6a¨/«Õ0"cËßFžîzôØ»ôÜçtÿ —Þ…”â&Z dbæÌ)ØøÝ÷”†IñþŠ‚Ê˜±caFf•6À*ÛX¾döÄ%¡¼®áƒQHùÏg–ÿ Õ5édsæã³¯¶bÍ[o(଀ԆƦðöõÃÐa×¾&»ã/ù»¼¤»w}GU3‚›¡,6µ‡µ¹9ÎÄ‘ñRF9N{^�Óþv^�¿d=­‚©“'QVPgg•f“Ý < k‚"áÊ*‰œß‰‚�¹AYÇÞ°Ò4¡(/‡sƒ2Ñ"X˜Û‡LÄL0Ymd`€sgÒ1š‰Ó¸Øãðòp¦ìb;�FJ¾…RÚÔ.”Ý7·ìódÒªÅdÊù_oEØÒ'Iÿ$ÅJãO‰AÕñUÝÆÿƳ Ç]=^ój+--¥ü ?6ŒraœaÜ(J>mÈ¡gyâažËvœLf0Á6'‚âi¹hF”ÂBªnh!»ÊÆîQGû’°�.¨°â9¤¥ÉŸ|‹ã'⮥ àH_Ð!CB9—òˆ1ã1œìÂbÎ?ƒÉþ™B ÕÖÎ ßAæ©“â¥,…_"ß*m.™Ë÷¯|3î}P9^d¹Zv¿¦Vù˜ñ“< ”þ®¡”£½üšÜ´g6í]‡Qƒ')û¸Ö.,bH8K@�1b?*0 €æ}ÌmèÛ¯/«Û'îA`€'}£(á^Å¢ídØp 00>,–¨'‹Y€‹‘£F1–tÄá;©D2%éñh%�ל×óéÄt8pnkÆÂ#cÝ&ýý€´ìL2Y[©zT‹1“§ ñôE¶À•}kô¸IH dvcc†P¶tdx0YªyÐM‹!cþ{²†S)¿_Í~˜rÞì{w}ý‹s¨Êu‘#Ç+_;‘,¶˜D¿àN 3îÄ)J7VVYÀÍÅC9¯•b/wG„p?,¿ƒ¿íx‚ÜTy†‚vŽï‰)ÇhÍä¦ìWîû’ªËÆï‹,¼ºÖüé0m¾Xÿ9/YªlÇÂÔVXå�þ}"Ò'Š…4y´:‰@_ªŽ±¤¶”žºå,θã®åða|Ms†ô�gލ€€ö-‹—(Û’ÿ¦M‹Q£ÇcççÒêȾþao,Ajú’r>¿ŒýtA÷,¾yæ…ÕÊ2•+æãåÈýËr•¿¯õŸ¬bÇÒŸ÷¾´€�êüª÷%;?íiy)*–<œ(ÓÔç^º,¸€Õ|(™§|_æ}jîîjû’~Lâ~Ù�ÎÄ™h#ÓS^Kß&¿ig‘ø•k+RÀÌíio_ö§’3d QW¥ù¾¢JbE�v|GðÏÁƒ†*@ŽZÜýœtÿÞò·Ä‡=µÎ¾|�’# ½}U,˜ïdŒuêÇí$d|�Ó[×ÂÐÁ‡$Ólª©ù0×�]úPàÌ™³ôYe¡sKVFd¬–—bËž8Åû¦®€à»n �aÛ‘ SSsªÚÅ3Þi¥*B ûØ#)5Y…ðe>ËÜ´Îèãbƒ’œJØç!>% 3'�ã2ô]¾D¯kyûYÜ=œý‚ Âúà"™—.\oöÔɨXG¯Üo¿W¾æ?iXæÀ̹<éÂpÔXx»Ó{¹’ÅÌ‘Å�ÂÔ9ó)¥>�…!fȼxþ$1;vVTý³tç|wÇNÚo…ðþðæœ˜c-‰ÎýBqñÜa�Œ�‰shÁ”ä} k?úþ¶f”%4¥ÂF‹Ú�Áüf_æëûôŒàQKp*>&MÅðs+GQ í-гè�NYñd„Œ›…m‡R¾˜lÔJ£w ±¼/N=K•¼d§¤Ñæ% o®ß‰=ûb‘yf? ,fœßÓ3üš›pÛýÏP¸žT Ë=¶Öô &îÐ`ôgQš¹€Íy…ð¢%Ù¯=�Ñœ+W4±pĬÉ/¿ƒ‹©U&Ù™]ù¶Ì‹q¨©lÀ€°að5å89 "xzÙ‘¥ZÀqË‹ �8ô Îþ‘ñm+.¤ä2Þhd�W!m¡–ÒËòÙ7Ñó:˜9ÑJÙ›ó¢o 3÷Â…s¨áø9ÚhDFE"?«“–>€Tî“Ü©•±ÖR pôô[8W/P@VW)À*1ŒÍþÚ9Ù®šë‘¾á×h¿Õ±þÇöß´�ÿZ�U¬ÿmëµ.<`:…g™ 7èÓç#xÑí{¬sò!<ÿih‹ðŠx²JNÛ�· Þ’,_>I¸Ëþ¤Ãp›6Ÿ,3{åñù¦­Øºkpb{#Í�Á£òàdZštBêé×î�dû®Ù…Š:„2ì­i¬êr”i�ÁÍmŠžvÀ&ËÈßê#°ðRÕˆ?<ӣϘl[’â9ÙEÍ‘#TÉ5ùî8©ªü’P×öð“ýË{Ú ¯N¸ ÛASIÖ_-Ø‘ï(Ûï<Ï�r͆C£-½V‚@^òÐn¥g ž•‚&N^hÉ<MsŒ)é LÚb˜œÄ×¥f¨i²Eff)Œ·�™Ç÷ÃÍ’þ²~î˜>q ì˜,1N=ŒR$úôJ6j+ÐZáfÖ‚l‚ôæ9ÐÛÿ é�0dÆsGÝ;ï"¯O0ˆÀ’õ‹§W-G«”Önü®ö®Xñøëؾîï¨(Ì¥!=é¬Ît§_¨L[êQG…JAlQZõipž�ÙÓ†P�ƉÁÁ w‚Þ)#0•2@×jo¾µoñ1gölÔæŸgÀA6ˆ‰�â-*Áïõ¶äÁ(p BX8+;ôwä'Ê5I¿—$Ä؂سE°œ0ÜJkŒ 2pGÂjݬýv/Š pU¦£Ê')#Çâ+› ÉúÊ׸àxB6VÞ{7v³¢´Cלþ[QF¿À¹á–¶ÎBIU+u£)‹ÂI—¥¦ÍNزõGœ>“„! ò¬Þ†Ó×& 8E'ÿ‰çþ±c)áãëï©H›¸hÈHN ŸÒ‚=ð×gÿÄ©j;îýÝJÄìß‹óÇbPHö‚ÅMdX%§¤òq‰UïŬ†«¤g‹~ÌÈÆ4‚²âÍ‘IØ×›7á�~;èÍ’Îå'O�†<ÇÇOŸGi]+î½ûö&\ÌÁÞÓçèÍú½ãfãð‰x¬Zõ¨r§[à­‡1yòTX‘¥ªN" é==g9œ—܃¸î&‹ŠþÚM& ª/‰$g~íVSYJ¶Y='ž×püÚÇÐÓöšx k÷_¦¿{˜lGŽ µu{s7Óç‘]*2;2†ÈC¶Õ9žôt$W¾çÁÄ’'M�.aœ¤òº­aâf ,œúÀÅÊ€>@ð$ÉÝÓI‘¢s÷ðºr#ÿÆïÈ¹è Ž.ž‘þ;0.CñTT'ÏÝ¿‚¬Ò¤‚Q­ny'ƒºÚ*µZY>WÇåj(Çh¦$-µû*¯:e`—É*W45èþy¬¸b‘^߯­ °Ê‚Âb64Ra ÊØ‘”|’ž}©hom£ÏŒ>|k7α þ±‡'°2”I÷ ‹ˆ¤¬p6î¹ïn¬ûüÜvëíÜŽ›°ŽŸ8^d!yòqÓ�}h‡~66nù”•S¥0iõÀ÷Ûvã,Aü¥³áã�>!õ6¬ûJaø´›âýG&(Ô&ã°ô'r_YÓWË7Rªç½”�eìˆ`•þrzäHBójͧoˆò‘>¯µ5qŒ’¸Ì’·“µrÎÿø˜ò°£(#iN�Uz&Ö0%£ÃqÒLXF�U–“ã�k¡xÒTÇ dRüíÅç1›…07Ú¬™\”–�N¿1Æ~¬.n'("òñMÅçèßÓ{úsåæaÁ¢¹Š*……… ÇoÄ< 1ét4!!5‡‰ù$*:XSáâçX¬°�…A-däšX^óÐ’Î2ièäÖµ\NÆY<4â$ù?¡•—ò0upáåG–»/å)·',¬îMVù�Ó(YØA0¢ß‚ÛaìÛ_Xã/$‘)bß}\LbÒTËú’žˆâÅêêêA+ʉË8¯„óW¬ÛÓï½ÿ®�&ódÕK/’Y¥0ÙzZö×xïÐáƒøü‹ÏqÿЇ˜ú*›ßèÞPöd°ŽˆŠVÖ$7?y7æÌèù:¯U;zbëìKµ�ùÄ©3ÈgÂÆ¼™IšÊ|Êе2ñÄ*wž? STT¤cÿñu˜1þÀúÕW›=Øõ10´÷×ÞÔM½~ñÕW”õ=9OºÞváÌ ¬§¡°�ê Ó^߯ý’ìŽ>L¹üæ «§°òyÙü鼿pÿ#O ½°=ö$“wIT�郤KÅE“õšIàí YʦìòÓk`gBVFC3.ÑKmÄä™×ûÕ•ålù›FGƒ�­ FG £®­òþÚ œWð~Øî-5= ™ÈL=wC& õ2Œ ¬¾ÁpáòNV¦8yêãÑŒœ5ŸªÆôj,à½ôsÿÓ}›¿ÖßÈÔùvÃ'œ/1Þ¡wyeFRâO)ó'ærÑÏ߃ª1d¼ZÀ†š¿V[¿n-¾øtÆMœ?Uç(÷y)§Xék¬Í55JÙ•0GÎÚ ÁÚÄxøÃ¯ÿPÊÒîgbÛþdÒd¥¥ ;/ 6^~ÐeÁe kOž>I¯q}¸y±ÀÒ #§LÇ9ªãåe¡Ž*Iß~¼º³Re§R€&ýáÕšŒµêx{µe´ßWû•XJùJ\!í•Õo*Ï?ý­üñ+ÿWÃòìûxö#ϬhÒA¥›'ÿ6AµµœªaJ Í^Ÿl=3Sr‰×³GÃÁ3ýB­ªªzÔ°xXÃq³æÔ÷ˆ&ëSÃÂßÐÐp¤_L \. ´šô¡òž_ß˙Ϯª«ÖâW¼4¡MŒ‹eI ò Q<¶S.\„‡§W�›ÈÉʦ|´Ž�¥ìt.çɃ8<…½Ç1l€6îŒ�®Æ…ÙH§”°†~­~d·Uóü¥¥§“ù[A„Žr˜£'â(Ç‘[æÍ¤5Œ Ǽþôš¥|è‰8åçQNÒ…§4ŸþL•HÊ*â#�ùˆ&2¡Ú j æ½ï‚¬Üžß:|óÂÞôœ Dh_ørÞ›“™Ë"íVŽ#ô-*F~eçx|´u žüÄ"¢CX BŸÃÚ’$¢Z .ÂÐo€ò½KЋɮ*V@Ö?ù­[�[æÏ¾âœÈ±Šâ„´ÅwÜ…g. šsþÏ>û„’¡ü�_±N÷7øSúù íZ³«k–ÄaâìɸcÉmxç½·ðÇG¥¯©lÞ‹ò†Ï×’vQ÷MÉ44ÔCxH :ÚšùÞ•ý¨ìÓÕÉ‘Å=•Z�ó·+Fv.Åœ¬/Ú1Ðßï9ÂïtúR߆üôdÔ°è¼Á ʇKs£ºÚL9vdd]¢…Ô>˜hôiUNë ^³oÍ«™ç™*c{;|‡G_6‡U×ïéYÍÏuÿ¬;P(ŸKÞM;ç×}õoRmù“U3óR¬-±¿:`>SÇmõLJGŸ%ÀÚi¹!Û”Ïeý#Y`½äyE‘®ØÍï½�Üâ³ð›qû¸—}/™·5¾°ov˜"’àa+AÖÎãcþ޹<íy¼l[x嵓<Ë÷´hiÌÖ­­mðWÞ“&ëªßUr°ÒºðÑöåG”—NS”¾d9¨E¡G–Qç‘êzò¹49o=±ë$ç(ùJY^ö's_GcÉã\BŽÜC@Îfý(�_c (±ÉâC^禔AîGÐ1ÔÏuÍmØöãq’%ŒQNiä‚ JÏò¾3±±b±„5²JšÉ å\¤¬�²ÝvÈÊLÆÐ@2Ò�©u]ªÝ½ûñ×xÿ‹­Ða~åΛÚ;È í {óz%“èp!^!ÕWç ¶,Öƒ·�N%ea|il(K«¶±”p—9 yK+ôÙÿT±ÿí Ì¬5ÖRr|ï¡C(¥RGc QÕHÛ±ž²øs Ë1¼¡¶o<õ lXX¼ê¡¸ _nÄŌ̞>�]}Ï'1þÞ�ܲfú°;ã1Z0¼üÚ[H¢­Gcc-I>”áuÁ»YœÃÜâ*HdžÚ†IËžB׫6õ£Ÿ1‹XaGª6˜ù  |ÒÏ”¢Ý¸'ÏW!:ÀŽ^pr÷…7û·AdÙÞÿàÃÐimÀ˜±‘ pCM]ìô«°tþŒ™»�þáµèV$Ĭƒ�÷$×ðÚô󣬻Ñ™ � êìÅw1&t…]íJãЖ”ƒtG_Ø¥gi¬[[”‚(¹ÞIž¸˜p–ñU;ZÜ¡åÓ5ÊõRÉ8@ˆa?”#hèL_¸Þ^Ïb“€A¡ô‚6ÇÈ1‘´&³¡ŸvÈ`’èR£Zñàïnc•n´R‘õÝ®Sð±o!\È ßF¸i(‰Üß�²’ÓQÙÐF¯ŠLìJ´ÄÞ˜¬¸w'È S)g†'Ÿ|§S3èy“„º†ZVîm¡gï ¤gd0ÿ¥‹‚²Jœ¬«bqrÏ`e‚?xç-¤\L‚¯'ë][à¤ÓŠé&º¸çËÍdµÎÂÒ[â‹/ м�ˆ¦€¶â•!}–ü&íÕU¦å%š±cG�_Ž»7ÓµÚ´ïiyOÚÂ0TòÛÊ=S¶q­2‘‘e~IÿTZ�M0©LaèÈfþ×›Ò�)¯¶Îþn­rõ—|Ou[¯¿öwü¸kY æ”ñuWß¾áçúñé[›â}÷\í-QA¯•˜}1”Ú± ;"—¶¡"ƒø¯‡è‘#9œÞÉÿò r­JP+ãŒx_ïy—å: Ú-@IDAT“�휨ÕZI”lC‡d-r¢²\A^:eÚ\•ëZ�Ë×–ß\|¼¯¶O¹îERJ+®¶¾þÒ_0,zd¯gT€VIfŠì÷ôió( ÿ#Ξ¹H9ÝÇ(‹W�¯6~…E „tÁÝÃJ~O,_±”÷ûBܺ�^YYYðõóU¼íÄGZ“Ò$iäÖCâû(ä>ÿ&MÓëq91é–ɾ´(·«~÷W¬% ÛД�²ê ì£âÛïÀs«Ëc[øÓùjG,™¹t™îY¥?‘b%IË9“1¡ó|·ÿô[õz—}¨ °Ê™©‰°&«Ï˜¬UùÝ{ºG…Í*‰µ©×–ÁÌùVµ”e7õFý À)¢êb=>O#;ꓘQÃ9iµ5/­‚§O?XZZ¡­ªˆ•æ:LêÚÂŒ~ìNŒ¦ÍžA‰ôy,¯ÞFéO2ÿn™…¬Œ$¬ýp-‚†á‡oÞ„#Ù›{ö±J›þEÒJ ˪·(jZ»ëñåaú|%3 ª|^]QÈäƒo�Ëþ;¾iËâGaoI³sq";‰6ôo3ÜòM|«®Žb!÷¦Þ©÷¦;ïyh·×ßø€þˆ¥@¦¿Ú`}å¥W0söÏÕ’ùóè 7–þBNêb]Ï™AÎ�U’.ê›_}õ¥ÂDuµ¹¤KOO£ l mßú•²Œ �€_»ÅÇÇÑ_5 ­­Œux­Î%`÷Òß^Âð¨(¬|p3±Ó½%0fˆ‰Ù‰ &âìíÉnê¯!ãQWOsæÍÇsO>Eϵ|x:Y ÃÎ.&:db塤ž…–vfè‚ð°hì£ ® 0Z ÌaËëÏÖÖ¾û¦¯ú·€«òèÞÖmØJ&XßAÖmÛw1oï¬Øº44 D¹D�”V5¢¶¶{wïŘqÑH¿” ƒ¶Z¸SªpÜ„1LÀ ¹*к…Àh_=Þl ‚†ê¤ÁÊÌŒJ3õ°µ4E% ‡SyÆ‚ó„ÚúzèPBÕÙÝûfw×µ¾aH_¡ö�ÍŒ*˜4õ;ù#†ß»N®�ý�°ßt˜˜ô¤�G}}\'ÍÅ&�M)éìN gã�ǰ€Ê�*FÃ1>ÔuÅøž@™!Y�c'Žfbõ<íìgxÿìÙ·�,&’Y|Ó�ó ™[wtÆ<]‡zÃ/8//¯®õV®\¡xÒ»u ²²2•¸äȱã {ý·YÓ8ïÙûÃ.L¢ FÑó"²½5fŒ&è½ÉBa–¶³ÈÐ&ó/žŽ¡‡m3Å�fŸ¨OÐÊ Û6m&hEÆ_=åoe­zJYÖò¼êЧ¯‰,òXèé¶ÁW)Êêúº ÀÚxýùÓÞ_陘“ÙÜN`“èÀ ¶ƒ;·3Ž?†‚C½õß¹¢k ñ§±}ýjdœ?Ä9;}f9ŸSü"¸„>¥|‹2óqœ´$Sª˜^ÍÆ@žºÕ,êîÀ¸h±Õ\Bâ™#È©î€/ç†Td{òî»0máb�˜0y"RRR¨EmÊqRýÈÄXGaJ6ñû¤“¡%LkOWúù±ð[C¥-}ì9{‘ÞÐ,hÔ×� ìM@£ õµõÈLKC Õ(f,ýÕŠp€,Ͼ}¬ŸUNö‹úùÒ·;ÉG¬ÉÎ-®#ëJ£0À~ºwìÙ·©,Ö°Ðþ=¬r‚¾%{T dhMIIÃ�ûda©çW»ñíÎ<¾fŽ•�qP× íöbÞÔU]«|TVRL» KÊ!±J¶ðY¤Ôñ¶&N�C^C¬Ûð1™mÇPQYE�Ä‘€p!¾!kÔÃÓΔÕì©Y¸OØìì|…Yæ`O™øÜlù†>Ý[¿%3z%ûg;Ð�";õqh÷6esÆj7ïc{AíÃ,n²r1ÆÉc ´T*¥ä² Ç7øÌ^¨ÄÂ�ò·Úk^ßk5Ç'yÍîM;Ÿ£~&ñ½(Í Ð˜mm‡JÆÚ–vöŠÕ‡äò$'s0ÉÃɶ}¾Þß5Ÿ“~Kò¨2�\/]˶}ÑöÊw𜼄ÞðŸñ;åoeùÛW¢xß÷Ð/+U€Y�}?h¬(�ì;cê·nTKæ�ó3õ(;ŸµATQ¦QÄ«¯«¡Ê¬zú~’G”œ¦47`•ùŸ,+u(ËÈœUÔ’˜•ºŒ¡«,K⎜QêS¥‰e›êqÊ~´ûñ~diϘ{‹’K¼ðä}C©+ó7!-y§¢™Ì�˜+n¬+…�—#AÕ&Z…•P­®œLqþ«Ë Y´ã„‘ÁdR»ã³-GQFu¢ä¤TŽû¦h4°‡AS ZjqñB²ünp¶·ÆÜ©c(UÏ¢Q²3ÍhÕ•Ïmf¤À†1ó…6”Ž�¦D9etëå7¨ÁlÊÔZ%¦È×¹¢©Àv-³âËj°oå:°è֥̆áóõŸá¯z¾îöH¥_ìþ˜côh6B ^|ùï8°gmUB±hÑ"œÜ÷-­1‚Ș§­Xˆ/.f×*9®YdÄ>òðcH`®pË? Ã6Yç�"›j€õÕdø2/2dèóÞ~ïað¨!ðq6Dyµ°>«1|ìxì>ËBØEè7Ø‚1–6o=Ì*ªZõñEVz£G)ñ˧þ“àr3&P…(;¯'Yà!Eh-zÖøòÛí]6Y¡Sn‡~krÒ/À×Ë aQÈ/«GÙÅ1fÖ2ر,¥(“¿E:œôlPºç(t‰6d!¨7³@;ãõ*ÙÖ°ëàÉ‹¸pžª €‹)WO¥oæ Í-†©µ–.œ s|¸²lcÐ�™‘ކºzœ={†”]X2k<4,Ü53#�ªF´Q¬¤ºU4FD 9»˜×J ü¾Þ„¾,òÈIÉD ‹Ždm­-ä\/†GŒ…»ÏÍÏ'•Üá¦Ïtä^¿òFùkÏUå>|wÓµ€Y™ªóÃ+.Æ|C°õþìM-äz6ëʾC”äùÿb;Ìâû[µTºŸƒÿY»Ÿ‘ÿð¿«KKJY°[ïy¸Ço"ƒÝíœ8yD ¿âs¹ñ¤šT•” Cdƒµ}ê\ÉÈ€õo¯®QÖ÷pwíÚNSK> ùôI¬üßÌÈš±á ­JVˆ¼†<ȳ€2ɤNä†t”¬3h§LAG—ä‡P2)Ty– B\¥³’eŒÞæ( foíj�¤œwíFûµöö”À�Éy |ä;œ Œ IË £<Âh¿7éð(ßµÉqÊ:=�¼ê2ò,àª<¤5™y ­B)¬ �=‡Gz˜ƒúPÊßZÁ(f+�ˆSVeaþGZ->¯hG_'Ke‚- Ózçp4S~â8'ØñÉ0Ï;ÛïD¹®.ÖÕÀ… oòà°£´–IïL‚†ÆxoÕ$dTÖPƒžJ¶NHÎJCÙ4©§Î¡¥3JégZžMY_÷üý;¦ÖNêaRšô3²3vý­ýâÓ ××ÁÕÃKy[< @H{cÓwÊubû#’›™4e¾M`•evµéÃbÞD„DDØÌ¹øqã°lÉEqEª ÜQKY·ÍÇ“Hyc&¥„سuº†8™�ƒ€ÖrÊ&—ÒŸ§¶Æ¨ä¤Î˜ÇQ›”€ÆÂl,¿m!Âúѯ5,ûwljêa™éô(¥QpžÝ„ù�­8™WNïÕz„O½ ¶Î¾œ˜¦ 3§ ®v¬@uq€‹W%—½v¹.r†¬Œ3åï$lSµýã½ÏРk†`_La2Å�Á¯ÙKÚ͉ïmÙº�^È8GùÏK”Ý(Äé¸xô�0¶”¶œéç)MÞ€t+úÛ0ÈšEÙ¸3'N ÷B ꊊ(UlÎ$ñB&Báè¡£ÈúðM¸U•deåî£OÁqütüƒ¬â} Œ&sAþ?ì;Èk šÞÏÊáHñHGS“æë²rTÙ{™-wkÝï)é´]}ƒÜ'|\Oð‘C`ß’ÈñçJqŸÖö ÀjN æ‡&ׯZÄ!ç@úÇ·7S’ò×8¾�>x{öî¥çÓ¬^ÙG×Ú×1ú&99Ø ('CY¡oi`‰&ZÄ©¡Œ^[Cú!bÌ^³¾”ØI¥wÚÍ'6Õcª«®à¤¥‚û" þ7nê8sµ± ·Ý«c�º�T/?Þo—þú]¸¬E9iX@°uSWµµ°f{Û§¶œ´2¦±ºZóz:¦2Jàùö»â#sGKD³â\ @/±O�*¿ Æ&Ÿ|²«_ Ï?÷8‹9æá÷«éZ?;7‰I§†ÂçŸl"cÕ O¿ò'Üyçˆ`biäOÒv²ÂˆI£q�É.ñ‘>ìçX&§ ˜cµ†¢"Â5Z`@fRíCW){ê/ᾇ–À­O3Æ�Z€[ ‹¶³¿“óÐçÈJµg) ¹�$ybIi쯌¬xm隴ȹ“JvõÜY¹ÙPø5}×¼ý1Nœ8C¹ýP&¶¼€Uû+lߺ•E(Éêìó´?“×ê}î¸x9Ç®ÎIcÇךÊr&Í �A ;÷«$ÌXÐ#¬oßÀË6;bÂ\…ɪCϾøFfðò Tsê‚°J³w²!ûÃa<©ø¼qëÒe£Œ�Ç�†êlJKE)ËV0‘”ž’È导~”~ú¯¢´˜ÅUý™|v¡Ä�½ò®¥Ö8®½ìÂk'7ÈCîÃ:}G‘u–˜íz<«Ç�‰¾ `•ï+ Vm€UÞëO°F=µÊò2Vì—]²&$\@eÚai@ÏÒƒ¾˜.صcY娫)Ãqz_eq —b«_díO¦»>uä¶lû[¾ÿZak kÛ4“) Å`QìKº·²ƒå! «4ZI›2u:NØ�gþööì?„Ý{ö)‰õˆÐèïwß§¬²m O˜ó¡K+} Ú²°¯arí¾FY°—ÿ¢Y„r=kÆÅStzÑÁ‘�ɲ-AMi&¥Æ�‚,*»”×Sš=:µ¹”ʽÄÄ\ ¶8�!}˜t5ÅæM_ÀÓV�,Í`F‘eGvîÊ® °&_8ƒÃûw jÌä›:îwݪ“ùù¸( ä˜ÈøûÒoÎ;>œcë“Ù8jö2ØМ½p 4¦7µ?YY�×HlèH Y56Щ/�Þ†÷áO­￳íúÊn°éc4ü°]Ùoà’»Hµi,äñè‹~ƒ"°íË÷ ›’Yä�”œlï‹`Ú)¥��U7áØ¨æÜƈj¶†EHÍi€§�9¥kék謜ëÊÞ–ÑÃõÎÂ�ãhÄð‘—}‡Ô gégZ¨$Ö/ûà:ÿë/Xeó‡¿~Û¶îÁÑcéÞ—ž¥~°c±‘´’"2Fk›1ÿŽG2�óP/ÆFîÊÃ……sfRh¡£‡óÇ9G¤’•åë�ƒPCõeU5nfÝ~7n¿ónÎ&ái2½f0)/�‚2[+1nÚL…©;jœÈíºñ<³PÙ¨…×q!ô) lÈxF|‡eœY|Çr<ûÒzÖ ‘óÆ*2éaDxck*u,¿ ÷Pž„«Nj陚K‰QCJYêð·ŒOI‡©±.-&ÌÑЦa|ØL…­@œà|xˆÖo’—|v?÷Ëi 'ɲʇ Y´j88¼‹ÉêD°s\§�ÆÑ†‚²ì”?Ž;}ÃhG!sàžZÎ…ƒ(�?B_J‚F�)^±çý=bÅÀñØ£Ð7¤cD½lG(›q•æí4̽x`–⼩æÒ}J¥wÆl=íï¾»nÃäi3O&` ïq��.R˜«Ð?·/»C3d½öí£UXgœ. «§O€ÂxÕÞæýmÀ»i9ðñõƒï`g¤é#ïb1α@¼�ÇÖ¼.:¾x¿+ÎÖ^÷Z¯%?'1–2o"`(ó~í&Ÿ×>ô ¾ÐËÃü¿}©|.1þ‘£‡1æï«5o!ü‚pçæïÈ¢l§âÎÐÎmq^ ä™�ëÞd_òYÙäéš>3¢ÌËœž×—Çe•Õ(*IEnÑYdæ@è˜;”}‹�§.¹U% ñ¢ûöåo9nÉûi7X……*óytW°R—í´\¥þ©,+Ç+€ªä>T–ªŒå$p´å^ê"~t­Ä²É+ªÇ¡þ²ï—¿¥�]rµ×‘×.dB»ïÝZÕ–÷Óv+ê•ßöÕqôC�^Cæ2ħ• šÅ&N¼þC8&W1~•¢M_o:+èÔW£žŒß¡8|ò¼xºa2½¯�Øßºˆu!ñÂ¥_Ï›F/ñ‹œ_æ“àÁB4�=é}í@?Ö¸Óñ”µ¾=�‡|˜£cbYà͘ª§–KðÛ¨¹ÅJáTì©+g Ã¥tt 6–ãñ'ž‚) CḻžòðÑ")_>‰Œ×ODe½0ʶ;+�ÇWÞ‹¸ýû)OÞ'ö…1G“p–÷è¦ìúË•£±åóÐjë3ægNÅñšcDj)úŸÜ‰ê¯×£ü ×ooAµ“r+ÛÉPõGZZ:ó„}ñôßþ©¤ßmÝ�o¿ÞŽGç7ÑWÕ�9?+T¶·aþÒÎqœ_€çØ Ùɧ¨†—�AœË�fÑÞ˜Yw\v ÎýðOìØµ#ƒÍ�V¤�™KïÇÝ·ß ÿ�¨(/F^âŽ[µd¹3Ž¢Ì»«i=Öì=‹ÈðÑãà)+âO †…\îÎV”öÕàTQ<™G³³µFc ‡~>TX«€Õ˜d>¯G�ÜÓ,|¬/ÍeN¨£y>Ã9DZæñ=|­Ìݤ¦\Ds„:FFŒ[¼1xä4¼¶f=|ëéÏkÆ’…˜#æÎCàü[•ïÓÒÜL’sCLÜßl“"õŽ£1EbÙ$øÀõ¶ôùã”" )ØPs×»îÍ,×¹?±[XÖûõ´=Á…®u\7°¾÷é›,î)‡c„ß²‰µô…×ú.7z ÑTTê­ý?ÈÚÛÙùúl÷[”£=G½{&èäq½M&[*u\ÖF¦näG=7O�HJ@r5J¹6ÈZst/ÚòËz½a¯÷˜nv9W¥bMzuðpA‚" UÆ9Ù—,ù³Â:U'—ê>å&æˆjuµSÞ¿Ö2êvÕçî�–üÝ™˜U—øùYŽY‚=yG^ è�¿ñ3+ j¤Ýºv3+ßÂØšÅka+«%YÞúÓwWúé?Y_˜²Wû-µ—U_Û1P e�½�ƒÓÂÙs•·u¿úÍ�Ó»…¬Šîͺµ�‰’i(¤Œ…¦OÒX5é:bvïÜÆ?ÖÆLZ<÷4ji߇IÓ“ в˜ª%³±‰ƒ§A–bÊødTbÿá3Xr÷ &øÈ†¬©ƒ 9³o]†Ô¬85£ïà‘[.1`rEÿì,xsP–ÖÄ Èˆ¿¼†Ñc'q‚õóF®sa-¦œûqߌ7AY^ýïTÜQ¸�yõ==ZB¦S2euÏ¡ù¶©Ð‹�É–óÞçènTÜù{S*ò_ú¥Ažœ,XàD‹.Úû£�^I¶«þ �~Ã`Ü\„O?ù40@i¥Eò`EvJ|“š¥U°ŽŒÆŽÇ•à lÜärRÖè5¦dìýóÑ™p¿¸§[ý)Ù˜Š N¬¶í? ®“øÓƒËQ•Ýì]<‡L°ÕQ‡„ý†ù¶"¡Ð€“»ñ8q:;Ö¯Cäˆ0x˜M`•_EÞyœ‰‹Åý?Cp“ARzàNê)èzNHºˆÔÌ<÷ØØÊ»”€w|rŽÐ_É�“ÖMûް4³†s¬¦Ö×eàÓB¦³X÷†﹕޳}(ë1ûßx£Ú‰Òá“è‘ˤ-Ï¡TßvÛ"¬ÿôþ~}èáJ¶0A•¡C#0„¿¹\£Rü º°˜ÙÄ'ë·áá•w(LWux´?É$Ê}(��L¼³Ò»¾G÷Ǹf)aÑÄàíMú ^{»_>øäsˆùè“�QÌä�l[IXý›0X¥oQ¼ž ü¨ýˆÙéîøfãg¬n§7«�ž{i5ìþ¹¬ liëàµÖÎBÏž6yÃï‰, "Áú`tÃø_ZÁ�à`àü¥=޹RD¤kdDUƒW°fÅ7MÚ†µïÈÜŠÕóî—MÆ¥úXš:îíb…ó²­"Ùg©M`•¾U&²¼¬Ñ‘QÊb_|±^X�ìžSv1jH"É~]~÷pæIÖ“±Z‚ßÉ�¼‚1£f`Å=«Ô]°ï£·™cÇ�VîwWWw峇î{PIàˆ‡•<Ô–w‰ÊyÝØ�ßH­´{ïz >ž0}òå¾~õ�Õ¸åîøý}¿WвmÝÀ$¼]“Ñ€0�¬—¢'aó–͸ó•·.K4Èx.c´üc0±ÛK¢J=NéÏ\]�•‡ú^÷g[²‰äѽißçÒ_ÝzïL܆ ´€ªV6LjõU@[aÆJûø�·•g]4ÂÌ‚2¿¬ÚöLˆk'ï„ë©Ù3™!i>~Á,rê”Êspòd·1%…C Îvn߆cOë¦ÏßAbüIVx‡+ÛÉ¿$ ¶:l¡ïkYY ®Ê*+ý›ÿW‘ÇJî3p™yy†žÌËz=â“dí¸8ÿ|�÷º0?Ti=-gmc{À*Ëx:[+ Ò¼Òr$'Ÿ‡Á·aúÂà¸;γxè–ÿ�»ïyðWX(á_RR„),ØÜ²s ôÚ¡Ë$ÓiÊÉöïN ß,,`Åù"Þ;ÒÞÛøwÆv°¶ì¼ö¨t¢¬Êü/9þ ™µ¨ªà÷HËfÿðsÁ˜,“O¦öÅ„x\>f˜ñžpöðBÂ9®_[‹Õï~HÉB=lúìÙ³ í5è#S+ä1�,E rO¹8QÎóWXÕãïí95ù ŽŒÁ¹ØoàâéO__T×·ácäþ–(j±dÁ =±<\Ù±Pñ·/R�·47M u´�£¬ •EâÆ¤˜0Dx¿3‘§Ã–”- -þ>”³OÉ+FBV1ü]­0nô8 9žLÖ+û6u?¿Ö³½�-%ñÆà¾•w‘5wOϘÛõÈ&ð1sY;Œ×-MŒÑJ6›©•-6n?ˆ„”lù_~ípt³«|¯‚ü-Oñ>ïì»eÜ•y¢H:ÊX%Iu5ÕLù7½¼,tлQ>k™¿ Y,å´ú¹®}Éœ·û¼yþ¼Ù°!+.�^Ýó¨Ñwà0Äíûw­zˆuíœG|NöÎ> ‹ ûðË”X¹k£¿Á‹eË–Á–¬¸w>|E)J ˆw>x“>|´ øôk²¦<:Ž×ß¿^ïaæQ.;‰EÎ�?ÅL›¿ù}Ýíp˜òɧ/G4䜾£f-æo¾ Ïmñ¥Ä)©<È>,F®'¨jÔZCéÃöM58—ˆð€>('#\WדgÍaÑsDWLÐDVgAa ?­€5–…¸–”üµ²µ½ÞÃþU–5‘j0¦ÏšGÀÁLXU�UÀ… ‚ Wk›É::L0:…* ídÖ·é2GPŠÊF9™Ìy¡�s|)ãõë6 0¿P‘ÓŽÛOF$š¼¼¼ºv‘˜Æ<“ì¬ý ç³rán«¡'¼½ÊÃðÊÛë0|x$eŽAt³´ÑèbB¨=-²Øè¢YÏ Ç8÷¶¶1€•At[+àKu-G�>ô`¬d¬éEÛ¤|d�!ÛÊ‚‘Töi&:­¨ã¼fØø©Ê1Ô”RŽž@¡6È*­±©¹òè:Ð^\ÌHDZC?²_7§Wr1­Sê`FP×ÞÁ튥 Èr·pî�uÏEG`Š*Ãò{ïcÁÛЮõù› "À‚8±’6wÁâ^VY&€ÛÚ¶m+¦hõó÷Á®#»`ëèÀø&�Û É…¾Ù‰ØÿüX0bI¥²,ÖêÎb•mI1ÄQæ`jÉT+¿Ä"w}Kä—V6!ã½=‚×d"«ê=²NO £¼ß½‰ÚŒ45/(¯Ó9G¯ÐÓCЪ?²ÿË&Hî„ù/õS¿&E’#û�É�>�)&áÀÁƒ ‹¹£ƒÅ_œ_ˆJϵZ7^|þ~,úý_sfBü&áù�gÃŒ±N ™|Ådüed$`ÛÑïä3*µ™Q�­4ö�U�ŽNk‘,Õü¥Ìɺç ÕÏ´�CXtÝ�M!Îè³(T úÔud[Ò�woÒ¯KL*ªxÂÒUÆæBÚ~ÊCªËK>Q¶)ï «*úȳ=z#ÔuÕg=w/MñÆO&°z\þ~ˆ%xÚ?Ð%dˆZqüfËäe ¾ß}�®z€Þ¦öˆŠÇÑ÷ãpr Ο;E�5mÒ(ßÝ ½æJ2\½QY–‹¢êzª^éáí?ÄÞý'XÄ`‰tOÜ»|%ó‘°áØ? d$F��F2ãCÉMÍI<»Òj¤1´!‹BX«’7à;Ž9ÅCþ,„†þÉ‚ç½èÕ—EQXÀó¶kÇwøëS¨ÌàœËC‡�ÁÎo7ã=go»}íËÌ0eÆl¤¦¦¡Œ÷ɶ­_³˜o—„fzÖ§S1ÎÈÞ›ê1[¨\S¬(“œgž.¨ÿ ŒÖ¥ÌºÿpnçN(d«ÖfÈÃS�²Ôší—êáíd�½;줠“c²ç[‡÷ìæ¹Ô°_‹Êf íÃêpïßR `={*çï@ ‹?<(5|îìaô2ÞyÁááØ÷ÝZ*1´ÃÌÁ…‰¨ê°…¿�.±�JJHÂÖÝà¥)Åè9·aÃÆý°æ¸æÝ†ØDª<µ2OÊcOMJDÚ¥|Î M9.xá‚}\QÎ~4—EÍmTìÈ( uGM-ëé¿Û‚r‚¾†Æ|(™û³0h…™�;rŠAe¼R„zÛ"5·’l\ZK Åùg( ubàÒ×–+Å�g^íÊgÈ—vàœ*4"úWXe{’{”ûV®ãÞr†²¬våIéÓ®vj¯s£¯%?ÐiOÓYü-÷¸äjäÑ=ŽÓÞ¶¬§¨›1—q­yªöz7òÚ†÷·<¬9§ú­šï‘¾Lò2¿Õwééøÿdíé¬ü¿=uÞ ¬òU;o²Ÿƒ‘0€U›ÙhpU`•›1çálwÚûјxèÎ;°�Ì¿ªÉM$�¶¤¢$п´UGGcÀjÅ;áç#’QÅÒäœÈßÊõÖ ) ßÀ"©!€]æk±R;béœåæï¨ÊñJ#À°U.UAÇ“U=Š©½âÁʲÝvšŒüVî8£ÝÓ cc Ñb¯jšd]‹Éª½NO¯µOÝ?O Šâ±S9™wÂ'Ÿ~Œ�gKPPžŽ±�Öøvû~˜ÚZÒƒ©–^«i¢Þ =Êû4Ù8*²³¹L‚UQ.¢”LÈ»¤ eÅXÑæÞ/�m”ój"³³çŽ!8˜�W_ù;žþãS˜;�Iì{yí±óL®ª¦—™¸<†þswe¢‚M®O›ä:ö¡×Òä;Ôê­Îo ëNtss²áCÀpÿWðÙî}L.Ä! ©‚LÔ&å¼çÒ$¹]KžX £Â½hdòãhý5X­o6Øeôtò$k+˜"…‰;àa‡�ÞhkÍAR…1«»ÚàØ@·¾îdþ4P®Ša"¯�l´ßÝÃÊÙJ<8ž qCs¸ K‰átú˜x#æl:·åŒ?Ü}e:RáådÀó2 § L0aÊ , =…Ïfä˜ ¥7dgšñ'Jî•èÛãÔù8éÖ(­'x삳†aÅï߀“‹Y¹?‡uµÅ_ÌÀëîÏM¹�ør×”±2! ÕÁJÞ3 ÛÉËÛ‡‹ë •¾¹¬ºQ#ÇÁ—“·HzÛT•W`ö¬iŠô[ye,XÉÛÁ`'ÃÜ_>Ho¿:T—”£O?¼½æ}Nt�8öVê1´5”¡ÃˆEAQxý�¿2Yê‰QÑQЬH'Û!•EU€U]O¹_ÿþl¯¯8Oo²dy\ײªÛí�Ñ94kÖ¼ÅY†%KèsÁŠayü;49R�ªN^Ôc’~ÆyXtQ‡»—ÕÍömO>¾ «{Ba ø³:ÿ—´úz)e-«/f¦ÀÜ Qã§Q^vÊx µ·qAÉÁ‰Ç †zýŽ:ä7éÓǪ„Aº‹âÑúKöÛ}‘_ýoi»¾ýTñ“k Ïé ®Ãd5'¸–D¶ƒ¬òÐîו`ô§€TT L8F™³:Ú—‰µi�—Š——¢w·®ÉL«ü„ÅZ’y�ÕµdÎûü|�¨}²\Ÿ²?mö§º�aTÜë[o¿Š&gT�U>ï°Ê{_ýûÐkDÊŸ¿¨YÓÃZm/¾ö¥m+  jÎ\¼ÂÄiãŒEš)/¿­|G‘,ž?{ž²¸Ä2©÷›<Ëx´`Éç_ݾöó/XOœ8F¿0´ìú¹”V‹Œau‡�ÃØB¶,rU@ÖÄÄ‚[%ŠW§ìûؾOáȪ_GŸ°«¬çÎ�E<™g�ÃÛ?œ÷œr)SeÁ¢§«µœ¬T$P*Ð�ý|<™�¥eup!�սɄۖ µ ã@O{&礉ԡ<†óºûoXå;[¸1YlÁó}õó'Ë©íÏ/ *ÈŒY° )ûjiiû‹Ö/>ùOP}dØð!ܾƒö©íõµ…­#ä¡¶V2(){øÄ´ë›bæœÙøþ›�-5¸�”‰ãd$œãu–ÃĨ)+'Œ‡[ßÐ Àª£<ï$[[îÁñ3o�¹s}kêÏ@{»6müVaÚ³o4И(«9ØÒŽ�_³}ðî|úÑûxêÙXLf„øø$ÚýP†OŠIÚ+qèLã~Á«îGÆ¥xq:9’ÑÅDõÁ]h'¡Ãɘ¬þ-¯µç¯÷Ü? Gc”¼ûªŸz’Ëy^6VÉ,sR[Î�ª?y§òòáKöYØcÏ(þÇ2>Kâ\’øê>Ôs‘A%›=1‡ÉR̦Ϯ>YT=e.j‹+ðöê÷é×K«‡Jz`2M�M)Yû}ÛqòŸ/âý’2L=^Ý̯ö|ôØQlÚôåvÛðÈ_cÒ„iØËäw€ß^{ô¶æý9œ^�Y€U¾ˆ™w*À*³e2™\606¢¼2‹¯"†!;ã"™ƒîTýðý÷ß‘ ¨OmÑf’¢L™\ÖÇ{_t·÷ÀÂ1ý±'. Ó£‚±äá?bð”éˆ?vT’bYµéÓ«]ÂAyÎKK „f}I�Sfº^¿0>W·}£Ï"“/�€à0d½Þõ‡†à¾,˜©Bã®FÊfdŸ�ˆ#;r9ú ŠºbSNd Ë#ˆ} ¬Úí4û¢+VâÑÇŸ$hS�ÜÔ³èàœVœJYèQAµÖ5DÒE^i‹†õÀâi{?ÓrÇ>ZÑTÃÝ ')ÑiE¿üâj¸Rî¶¢¦Eñv®o¤ô¸»jj1st Âtm$8<|ÂtåPdŒm yú™ƒp¢¹´ÞÖJªˆL²´:úžfPbb2Z8o­§wxSs;¹ò<Ã]e°*+÷ðŸ5-‹¤‰_¤Æ¸³o;yò,‹¨œ9ÎÓ'OÁÛGæø |~ª?*üô_VaåÌ;LJJɧvƒÁ˜}×ãx•}KŸNô 'Û–}e]y#=Âé)oa€þž�ã·ö¶´_£ìéíƒ+W*²óýÇJ»›2wÒ��£­žU#òöÇ Ïù{ç|¡“E)Ûhm]­Éò‹«±¹€³…T5�œ¯«Å&jN.ŸÞžÍTéé3e>ýŒ²¯/¾ˆ¥·.¥úçœÏ¸#2"²W�õå-+agîŒ@ÆÕsæÝ…ØÓŸÂÒØ‰ŒäìŒùœ�SxõÍå>—E3\6»N~ˆè%QúagqÊ1«M\VßÓ~¶stÈn«¯Ó±RÖ[ÛªH_-ïÉ£3÷÷s®·'�UÝfÃÑýŠšßÕ€lÉO*9U® €¬ –)ùV—GžU7Ñõ,c‘yºïOŽMÞ3ä³ÕK¾VÀ¦ã§àÌ�o«©V£ 9[vü/.:0;¨¨àjØ‚dÊÚ:s>ÒZÍß¾¹�ôüÕ!HmÄbwæzöŸ¡²Gs5cË$z�f³°×¼sšË Ÿ™‡æv\¤Š†“�†~ìúˆæõæ½s+<vV“]ïÌ|dÚ€þ(ö °rÊË®*tõ°JåoïèæÀxÁ‚¨ Î;Eå­þˆ¥jóÏý…g ìkƒIn‹³§ŽÁ\¯�V,ÙĹðyz”Š¿ô¾í_ãɧŸÁÜ…‹Ñx)VQë@éळ'p".�ªp (.$›˜lùúÖèÚyˆlÎfô{cuUKI™B¼é:Á|Qda¡©ç\jøäÑ0ko !"˘ýàåçP^Zƒ, 7UÃÅÎ)ùdÂ2e#/ÎÑ23.`Úô9”'߃Á}àë öiGÓ�EÆìY‚£N,†ÐóÝ÷ÞgßDu±³1ŠÆÊxÆÈf8s.ž>´~X:)7ÿ€aã&#!9{NáØyË6Ò»ºšý%•}\í•BÁ62{#ú:üŽ¥œrŒ"ÜØÑNИ¶T.ŒÈ1Ä g©öàh¦_ÊG›0MSÔ@ÛÏ~,€qF²ªªËá<Õ´J AÖþhåÔˆ�·¯üƒVÐ>g7òZò’#‘kµ{ü#ÛQ@K‰ŸxËëëm²¬äzÚæõn£·å„Á)E$jžEíãz[Gý¬˜UûÙN€Výì×zpõ·Xå8%VûÒÎ1à·ù.=�“ÿY{:+ÿ�ï‰÷�<~IS&c¹YJõ‘Ü€2w÷-�JžwO««ur3Jò^˜–Ý—ËÉÎb•G \¿]IØÞÈMþK¾�ºŽtZj&¹úÝôÜ=4î«×^6H© _@kr²º¿® L«òA:,ù=%„Õý^íYö!ÁžTCÉ2ª<€šÜV jTi©<6±ß’Êz²œõ°è&ç|léÐ7'¤ž€ÿᘮ R–“Ö§ûô#£m-Þ¦À›Xe›�ß_^]ÙþN¯67VÚkŒM91H&˜UŽæªlèR–Aãà‹Å‰'°á@,òh@>êàÇ—À‚UðÖÑÑd0-EMU)*(Áã`oCp�ZïÎôv%[²†þmž6öJ嚆 ¹/o&ß#àÊ@Hm2PµŽžŒ—rqê\ÍâÿS&~ UÊïØµAu@‹‰9B©�:<õØÃ”²µB`K\Ö¼߬$Œ.`…>+ÎÎÓÏD_·Yó½­ìn¹#ÂÜé�p}¹““žNŠ[(wPL ½žòqøT “ÚÈ)¨¢Q ²*uY±_ Sßñ” ³ƒcÈp6xuí4ëZaêmË�§ñE':Íœ7‘1ñ݆�ÐcµêŬl\HΆ9+ó²Jªè»Ó�øìlÞ}ÛO— ¡¥ öM1d§�¡zåôd5"ë�jÁ°d@omY‹»ÏÅÑ3y8’X@6ÑHzªFÓH~6>úôsÜ~ëBø³‚º¡à8Š>‰›QLsë`¥BHµ¤×AvNžáyrTõ°€~oÁþðvu¢,‡%eú(B†ÛPþæ,¼e ܽPˉáH‚¯ýɦò%8£ñðÁÖïwâ½5ïbÊä©ôfMÇGëÖÓom!íxô•ŸæÔ©“xþùg0cö"²ZŒù0QVw·NöÀ¤ñÑ]«ú[ªÏ/¿òV¹÷¼ñž"‡-`�4¹—$)$@© ®޾ؒQ™Ð©.uW{–ÊÌ«õ{Ê::dyz�Á=CX•þTÔ×*A™Ê¸Úö«÷%°Pûqé›ÕþEúƒÈ‘VÝ«]{;ŽœÌt&ÉXl@G»ýù¹?+¾hÍ n‡�Òþ蚯‹Éœ:~¦30/**D!†R©>0$œÀ‹3¯-;ìݶ�R§Å8CFÕ�wÝc+ ʬµâl+ûV®f§§`ð Ÿé×Üéÿ‘¶ÑOIÏÐÖ½‹I3^ñ­ER؈ɸ�Áô6&À*M®ÓÎD+¥ïJÀJ1�Œ;rí8rä‘>Vm2>J•£¼ªïw&@.bÍ(÷ªÇ‚ŠîM•¬‘ñYúdí¤°ö²sf-¼ `ÕþLûµ€«7°joK^/ž?«î¿�¾ƒ”�æÒÃ*",¢ûb]k­æŽŽUÆuµEªÝÂ~N`³²2X`Ò™ÀêZé§⇣««×ýíËþ~öOO‘ÁàH;-„ñVsC?Ÿ„œ¹·cßÓÇœrI¥/�Ýù56|ø' Í”dAÖ1ã'0AàŠCÆ+LVu'›¿þPyiÏûOZcC 'Þû)ûw 9Q}{õzŽ…ÆôR»Hï&µÆ_eþwš€ìÅÄó”ÐcB¿¢‡Ä)�ñœü«mæ´¥LÁ7þú¼ýÁEÅ@” \UVuÙÿÆçëXå»Ï˜²è¦Öç½­¼vê,:;|ä¾øê+2:Ÿ2f Ë£ê½7z<Ýj¬Úã‡×ùæûkÞR–táuÄÂ9²ß~ûEL3E´EHgá\KR2Ó(ýO«^¿ÊqnØ€ÛÝ©¬+뻾…©g]±×ÙKîDç/,æÌœzÀ* ›3–k+ðÍ­íqŽ÷ËöÁA}±aÃW¼¬˜T'À’Å}ÞŽ´TðAÔĹм² YK—x\O=ú üÃ3ø'‹¹j«°ôŽß]q7òF<å4¥É¾{k¶…†F_FÝ¿©³içÑÆ"�6 xsã`ÿÐP‚† úz@ÖÜó±Š ‚‘©åe‡n 1ƒg`\ º3N·$cáÛÍéÁ]­ÈyNž1C)špì–Ü:ß|û†Ž£ôU—mè:þH 0¾b9 x—ßH‹�=†-”ò1|0ú‘�¢GŸGWM!“ˆ-h&{Õ“¬¹³Ç~Äà±ó”Íþkçñê``Ø`Z¢°”–ÒxU�º024ƒ>‹ÛÛ›Ðj`GÖ�)œ GéÄÔK0¶u…�“’G VÆ^‰u;ãÝö®ùªŒå…d" KHMlOuõƒñ?þ�Ží;•]÷ÿª÷¹Œc ÃÇ*•±%1°:oê~®7Òâc0¿‡€ÿÕ%”ôƒ• ðîëÏp (ÇÔ¹óPRÝD™æ,4óþªæýoX_ ½‹çáËi¯ñu÷�]åïí”3N!sLü¯7`}}õ«èëOo¿òV<ý‡×1}ê­òpUÖe;y*o¾õ& …1Yl�ìçŠX°aDe‡í;Àð‚ŠèH¬ƒ¿‹f�‰P6íô¾Ó#ðZ¯Cˆ…A˜µƒ½Xë°ƒ @Áœ·9i©xÈ÷É>±U™OiÈúwdQ›•­FÍ\ð/XoöÜÚ1Æ=i*æ/º#†| To³Ž9�¼zÜ´3VyôÔœ��±|¹äl€ó§ãp‰ÊX¹eM¯@V2ãQæ/¢GL„‡}À5S[Î1Œ 㣔L¹ëVN™Ó’Ü&N�ÇÀ�¡°dŸÁÂ;ú¥J.®&-¥W�µûÎeNopøÜ9윯t.!‰ôqeÌçH³£ìòˆèœß{²ˆ|ûý#8AÀ[ ¹<¾Z€µ¯kçx\V™Mðtd&Q^šq™ÝõõdÒ9:r¼µbA½5÷G«5B|Æ*›”c�G÷¢Í«íOÞ¯¯«³’¹½šã“y™|7É}ppU¶'ÛÔΉö¶=a™Êx �:”|мVÿV×—¿%× ûë‰)&sEùLÆ)5ÿ+1§¯ò·:¶¨ÏfææxúÁûáÀ±â®ž¤zq ™;{ ~'œ?Žsé%˜=aöî‹Å¢å`ñô HÍHÃÞ#§3�§GêÌŸ2 ü‘÷�ƒ,Ì�adiƒÝ±ç`Ç¢ES2Ö­lHú(¹ÈÏÝÉ(΀Ý_Ÿ§�m3°_ òRBÐ œó A±Q.†�²úF<‹)Û¾ïD iMÄk±¿�NnY‹4fX,™+¼uÆp|±™V^©‰TËK‚ø'OœÇgv°èG-ì3Î3î{ÿƒwáAÙìƒô¥×¡'ì‰ÓçÐÏßIQT t da’Ê8ÇÊÈÉåÜ× "¡dÝú�pÌIorn¦á¬Ž9±�²Òf/� ™¹ASg¢¥±–Ä–˜¹ú¢�vV-ÍmèÐÕ¡gêAô‹CEiª˜²À „û㎦5HâNœ…qG3êõC0dÂ]8KU…ß�q=ˆXF¨m3DkÁyZ´µÃ¸­ÎÁCP¬ãÌ9-I3Tý BŽá(5ð¤gö1ä´Û‘Q\‡ÊìÌs85Ó �I_k�K%CÓ¶R¥_®'¿gc�â:]Ù³_¦õ€? É|ÏNeN‚…%•åuTí°F:UêúQZÿÒ%ÌYò ‹Ñ:‹¶w~÷ýzYp¤1ÀäÙ·©—%^øëyÏ#š¹È›iÒ7I!†ÄLjŒÔÓöÔû¶§ÏþÕïÉý%÷�zÜj.ôFb-¹—ÿ‡½«¯êʺ+þâî®$„(A‚)N)…m©M…z;Õ™uê-UÚR¤”"…Bq,X�@ÜÝ]ÿµïË �´23ÿô|ß³{Ï=WÞ½çì³×Þk©Ï»€Ë—²­îù&;HàÞÇgÝzÔw¥ßc?#ý»øƒ/÷<.çøþY/çªý?ÛFœ+ò ªŽN¹!UPR:…g\( ÎUd lÌÍÔ˜_‹�n$S5{VÌLZ»�@ë.ÙÑèéåýgÞäê1«`oûV³Ieà@©£Fq¨ ‹tZ*h¡AgµP «m_Ìg÷>XY:<‰Ø’kß²g‡€¨”r …¦CÚT'Ââè¶éèÌnÒÓ³1ÿçs¿Í׈CÚ™|ÈšEpÏÊ’êJ@EuŒ“íÆ^ÀXTäüu‹€¾J’ˆ¬»^ý~Š¢Ïeoo×¥ãó�º 5ÜY3wf ànúЭêrqÒq3ïÆ5Ó§£”“>�â¬IÌ‚‡a:® Ò„;#‘vúE`|Y#Ý„¤×¢©ié$˜ZŽŒtÙW%š½ènïŠÚÊ|NÌkQDj GN‚è\ö‰¾É{w¢$?¥ñp˜ô¾ÕoË™kÚÞnˆýÛA?ÇN6­a·y5,¾xW9ÞŒØ8p/ÀcÂUÊשּׁl¦øü~‚“vÜgä–°/Î…)£ØÌ¬ô«  jLü­PÌlŽmÎhk)„«�ªª±çX9r™y;(Ò‘¼à5-Ìn8{…ý#cPȶõ¡ö͆4BhÑXÒ™�´=¿ °ï`´™ÙÓ¸c# îŸ5™Ìº°¦hÒT?'„9Ó°ŒD;³ü’ r–ÐùÒÆ¨;GNœ5ÔI1`t^¸}¶ì8‚ñÑ6(3ˆ²¼&œ"x]Mš7FØyÛÃB?o½µœ×5ƒ}-‘WTN ËK—,„#ªëŠ~aæk$5¨úƒdFT¢0ÇDf2(V9ßdu!ýOtt?} ÅÂVGŒfäÞ‰ãÇI›ä¡8åjIeUÎèÛz~îÚ»…üo»(¡>ýðLœ0–TWÑÉH¼Ç{šFe3'/Ãéä†ö3ŠÖ…¤á\€´­ÆÔGۅȈp­çw>*$ßD·M2憎èZ¤�º— Çê}ûðé© “^Z(a›e(ý[=5ÁŒô_¨ÈdNJOHúYÖ9w,8a-gÖ¨ ȤFú ‰<Õn—}8¥,üÞÔ‰�ìJú™€…íËPŽ¥·>ð\‡´—“Ý×^~¦l¤_TÌÕ*é@  3ú¡‡=cùÅü¨— VþáNÌd’ÏBRa5·vTÍ'}^."#ûcû¯ËQÉeøQý1²:i'â¹ ™ì—^šóÜÅìêÿU�ìôTRb–÷J¹¥žè�1SÔ7²W€U­ÓóSî‰âѰ—Z-ÖÞnÐ�ßFWi'Õ¡õœ¥®:.Yü­²iû‚ϺÇ'µ-Õ�¿_1|¹OÙ¯|—ûU‚šd"®:†ÕvÏ÷™›•†ùß|‚ÄÇ0�ýo-·ÝBMSöŸºTó—Ò¦LFÄÁ¡×Pß|ÒT_ÓqÓí3Þ¿-œü橇»—Ò\9#pͺ²dAKSë- 9�v•¯¿ù’ÚÃZgÍꥋIÈfÖËÎ$›�oÇÆfŒîÁËwÀs쵘uã-¸çÞÙ À*MH« �KG'„„!nÔôíª6ÎOY`=°g©Sõ1û¾Ç™íQ�ðþQ¤Ö4!…;ƒjôÌ™­s:‹Fm,/eÇ�*ji ©©wÞó7è¬R/,,!¡}1‰ŽW‡ ©n~Öç;ÿz“cK93YƒÏZ÷¿²`Óúuì#õHYhwÖ)Q·^7›é¬ ß~7@IDAT\PZÌ ¶qWw¯Ê¡M!:x¶¤zU)ôT[³»’Îun ³è ªïKOd•²�Ùl%å™Ôóta&‡x_7ÖV�N¶Í´uòòóHÉëÆ,€\ Þµ/‘ô¼1øâ‹ʲ¡C./[}Dzytv—áûU;©aZ†œSÇHq>�}]5 h™—#+gx÷D­¹DÒÉѱA=zj!Ò¦qaÀØÕ´§ÇŒÃÀ:Ž]½”ýñ«[ÆÒÆAY[D�ì:‚I´ñtK�Fg‘]dÕÝF¾—礠pÿJúû2«©!Antàu …””m­­¤ ìÙžüÎæÂ…ÙþZÇUout—Õ€0±°"�²µîâîï9ÔÇþì˯pû]÷`úÌ[°bÉ7´ç‹P——¦€„<ÿhÔbð°‘Ìî3åõÒïÞöb¿ˆ£Z2¥äóRŠ'Ù^ev’9pÕä±(¥FGºrj´ê3ƒ"0j$Lâå¯Í:»”¶/TwÉüÏ”*N®nŠÝ+¶ouPdõò…>3=Âý©YZ‰&f�yõ%Õm#êþ6Uä`ÄÔfžž™M2O—¹ŸHÂÈw Œ’Éx*Î2±IÕg\Æi±eÞ.s|i«'ͤ€«*Àz¡sŠ6šY„ÑHڲ͔mÙ}4 Ó¦_ƒú‚dÔ·µÀÍ?‹.$Uð(¶éŠÙ Bõ #Ø‹ôŒr¬ªãýBû9ïzÚ�Jö$Ç.£vìÞ‚Õ¿$à_d}œH ìFÚÄBΡ:•ìp¯àˆ³1{ÿjظ÷aæ ¶ß11³ä<øÒŸ«³þ7.°£s¶oHÆMžÚ�ÝÙóp–ÿ²YYT˜“Ž�ë~Æ+oÎÅßn» ÿøç?ϨÃ,´–/£é |öù—˜NE4Á+j/û2(ÄÙ‹:ò70°Ž×ÙÌxmaVqc+)Ã9÷15e†¶~'N•Ö14ŒÚÌ¢*©@#}V†dPÐë`v˜iÛ )g±¶ h/ù�]Š…�ã9VñÅH°½�kÂL·ÊOßUžWy>ú^? 7>òÁ‚Q ͬq[ÿ¸’ k4Ü=<”öÓɲòÚs�1€xŸÃ•p:?kcë€ι�ŸÌBqæqÄ �zfN›qƒÒž+ÇÞ¿Ýv׫¬ˆ I&­PÔPû6Ä·?Š®dÀ R€úôůÄäq3`Ïìi¯7¶•16ˆþO¥Ís½Éù«Ù¤ªí¿àûÅœ –„÷oaA„G ™ L2³�='NG¯‰±=êW-9 ø;×¾dùÚvôQô,*k•€«òRËüóqÝͳ°�Y¾Þ{/gê~kÇœWß~séãXO ªiS´™ËV§3Rßš�™ÌŒ4àúzèã;±QÓàç1Þný‘�w.޽�¹ê\B=ŽžŸÒ�KŸ.�Nf'kS�kD‚Bü2qîìLªÈËq–{H~_J?«ÎÏìi먉²/yÉ\PwüQÇ9> Ì­JØÊ,\­?DIH‰©ì_ÖË5–û\;ç#ãÇù÷íØwÎÔróì‡0ŠZ¶V6Zúju¹|fÝÅ Ê*¬ÙÂûŒÁ[Íû›ö§�-€lÌÎöePœ7Ö~ý ¼é3l³²‡©¹�ÑÖNÕØˆ>ÌØtG&}x¦ÌÍùü°4GÖŽ­ÕŽííÍž š:_dÆô#ë€3L,�p”>Èæ†JúÜio‘Í'¾n /A£Æ�Bî‚_6ïÅuC}ÐJšq õ*˜ȾæíOy2 xùzSžÂ“sø"”äœ"›† †‡ûÃÙÕ ‡¥À�ýEVöQXµ"ÀÝÊ-áÄ~ª�v|hH B«>‚�‘jq¥m¥¼\µsuù¥~Ês(÷­ŽçÃA.µÝ?ª¾€ÂjЃЌKŸ*¾Pyæ.¥È³¯¾.eŽ×sï|ü2ûK×;Ðz©çßó<.ç7ÍÍ¿Êÿú‘t×Ç^8ë2ÈC%/]Ðô¬J] Ôº=×[›Rw„”=»n¹…¥e0I?îÍWÊÁ#Ô‡äëo·ÜHî÷$®ç7 •�þ 7õ-cGZ«�‰tNü­\1¥ˆ�»€¥ROYp o’õ#E £ Ÿ¶*Nª.Jf¥-¡–IrGÂve²,u$h-Ëä³XO/Ürðp>ð‚2ÉVÛ“zºEêÊ>úq,Ö‰ŒTJ|óuÌ&]ŽC]ÇO£þe?<k9?õè¶õåCWÂuÜ}¢N‚ÙV·Xqgjûw^¯Á#ÕŸXGðéäÏ¿R\Œœ�0žÒ·#¨¥wè×â¥cѯ±ÂÚˆ™~C1ó–;ñý·_(Z}H”³Ÿ:¡þ˜ÚŒ·bdnØ ˜êqÒie†ÜƒöÈ$ÕÔF_†ÔW)ׯ½‡ê€ôñ&­[EâRÆ ­zý*í,ðíêyHdVO'±3Zª1µ¢°:ÝÚÎÚƒ:[´É�“‹–€P5Þz?³ƒ¶fÕcú x ¸& )xaG¡Q�ðëÓ×þíN,ùx.�M¦0%À¬�- :+HYb�º–\\3u ª¨ÓÒÉ?¥³�Yªøî£7`Oª![ßðd4×SO>Ž÷?œGC¡©.µ°oÍÇÑFk|ô÷§àíèŒ7Þ|ï}õŠZHBºåþÁžXúíìɬe¼'L]°øÃç0íºëaTo… © ¼ÅÁÃÙØ´ð[�dÑb�‡_ÿÏ}×Ò@öõ×:¬HãE2&å?sC€¹¶ûÿS¿Ô0ªÓÔØS–®C2µmW¯Gâ`_Ìÿä_xò¥×qìÔI\1,YÙH ­Ç¦�{i¬0BöD…õ£Æ Øâ,ƒq)%�Ïü±'Ó©£è¤Æ?nÄÀð¾èЗö¯ÈšCg°7£`KYúÃ—Êæ‡âãq×#ÿ€_`ˆò»¬(•ŒÈ±.ÍÐØû£'c~Z¥²né5Õ¢Ø t ™RËI3p'·¤ý¤½ –º’ j·ø©?/êS(¯ ŠŠ«9N…$()%nô” n[P^ƒ‚Ô\H©*”ÂÎþ@ÒžMH9@M Ÿ¨Þš@TH °äûxÿã/”:ͤ…’b -)ý²ªå|«Ô¹òʫԪ}ö¸°®_¿·Þªu8öXÝýóÚYt—/’Áºúºñ8¹sóË{û¡ØÁ|®Åv”"Îà.»Uù-ß{³••:oýE[�åfË&&îņ­;ÑŸ¬ møðó/ðàì»pèÄXðõbB>Z`ÀÊÚŠòZÇå´Ywaå‚/°rÙO:­^ú×Iw=§l5†ÎÖCðÆ3aî³÷!~{9) aÁaecÂ6èÑ>0 å\^K¬Z¨<ê:f.œ~>ܼµ6qoGP��Š–¶:jÜÆcôø» kQn:&\OÛR§Œ½æf�_÷µ$û¸âl¶AÁ8·¾QØþÓê¼Y¢€R ‘#Nƒé×¢¶–€¬R¼}|”Ï ½y„�¤8P^îGq6'©9jÌxÊqä!ØÉ€@›‡Ò¼ƒ×¹¯á…ö¯®Wmõ÷Å~62[:¼_ êJÛQv²ÕÌæ*j‰ ~ݼ¿bÖaê³õÃ_ÍÇ`Ú)Ë~øAbUþ”òú›Ÿ 8˜&K()'¥´1è|؈IhNØ ïX_”îJ‡!3§*)�3mô0êW�9Ì$tÁæ½ü1‹2À-dEêÕíÁî}j޶-¾*ßHýš—Ây±#"¦=®,ÉÏÎdv»¾¢…kÄLXÉÔúo.º¬½�lj“ ôÅŽÍë‘Bà^´•YwÚV•mÖ/ý9œ‹—•ÕaÊÔÓÏ_AARw�ò3–Á^HÍ( þõ:T–çð¶€Ù´ªî‒VJœÝ¿6Ò”š3°¥‰ÒE9ht´G]l�)”v Cø Ø‚t±ƒã°|ñW 2ù›rاöü {�Øñ¥[Z¶Wë*ܽÃ[–÷œ»éÖ54Ò§Nm5Pñäc÷2›9=ò8ÁÕA¸—vü±´L ž˜?ï#f¢ž9îë¶cAšÆkfÌD@P Ò³”gôŠ®tÝz=¿oMþ£ú]‹�ýÆ(~(Y/ý‹ø†ˆ j®ªn@›~ ³b=±xù{”›Hä±<س©îßâgûå³kék/?�é3¦‘n÷fl!µû:Ú z´llm°`ÑB“îTŠ3³~eÿÒç9~¹ ¥wž¶©»š:ãCÖ ú\÷nV®s:™’ôIwLÐN9�„³û£»MAV¸rX¶V""Tû,«�ãø�wÞ†‡›~Xñ©®CøôíöÑÉq¿:9eɸiØËêfÝŸ}'wïùEúÅþmŠí¥&}èÖ‘9}×¼Þ:ï_¯(“rÕ—'vK¸%ý‰jÿ¯øþtæhj[²MëÉœ®g_,ëz+âÃ0gþÁ$\Ó¬ 5J5ãÁûÇYÐÓ¢½Wv(>¹6b; ÀúÆ•WàÛµ›ûRÎé|6e+™ª;ò©�:‰,CC)7¶�™®Óѯo¾üî[fÿë!=õ$ŠŽ‘n¸�>§«I¯ÞLÿÖ‰¤DÔ2m?-]üðéW‹QP¹Ñáýè`}S?” aàw¶âÍølÜ›º/ϼŸT¹Â�²]­5õôE¶"åx,;Ê¡×hÈä‰~˜N?wȺUh."Kq9µ™;É”×Ä`ˆpd—W+rz Úè59\_[O~8‚ïE ¸54Ô‡™£\ôè$(xøØ ÒZ+ÔÙ»¶VbtôQ,Ýv¦¬Ç@¿L²ô2xÁöŠ) ì8Iñ\äÒÖ*¤`$ý“UÅ9HÎÚÅ »*˜˜4³ CG[2, ±äèìða�^\Œóqø24¤?g€û¡C‡1%Ö“ÌÖØ™”†>ý‡"…²BîoÅÞfä2p*’þ��vUØ™X/ê,GG£6n<éÓ)×ÖÙ‚°œ�0i¹ ®ƒÂa`1¾¤]o*σ½­YöZQC�êÚ6Ld&³©²C#9�mnE| P|j3<†À”º´7̸R¹§žó$îÚ€âô#ÈNËFUm�RV)o3oº 'nÇU7Üuz!¿EGkçg,¼ŒòLô|..£™?mõyWŸ¯?mÇ];êiÓ½ýâ'݇ðÓm�áŒîé^öÿùË_™¬ÿŸÿÝ‹<7é<þH„ßPŸNl|§^‹Ð×>Ô¼¿x‰B-YX\ÂèáDG„á–™·R|<..ÎÊQËC*™-âБˆ(‰|ú£;¹ž×A~KD˜PZH$˜P õŸš*Ƈ-ç2\äDŽó<Ž2[µ•ç�[›‹zJ\ŽO—UÚ,VF…©EÀ@ÉV•È3É íØö.Ý1´$ M®£’}ÊãÑ-FaÁ0pvfÍF`WÔŠº¾€ÑZn^Þ°dÖ‚l«—‘Z]8ÿSÅBõû‡‡Æ~ê´Ô;)×Z½ÎrnríÛwlŤ�e¯Íbmáÿ ×B-bÈ©¿í)@îvÍm°t÷QVŠáL*—)4Ü®zð:z½»£Ùœè8Ð3²À;7êg-ÅÉ¥ qtÃz¬?pÞ7ið•çFj55Jl™õp˜t CQÚf‰äÄ�h×8a¤#—Ó“«mÛÚ”¨í ¤³ÈÝ» Ç©ƨ³~ÙYÊqÈ5”/6Îð»"ŽT¤õ ðýÍe¹h61n¶©¯ÓZëJm �Ù"™>}P|ÍllZ¿ æÔ†µ³é@°§Bc¯Beá F©ÖÃ7¸/)¼j±lýNÎç„`"j˜=äCš*?$P�Ö¬³ l:A#¯‰ÁžG�ÊL K3êÁ8"lØhšK O]Z‚L­í­´0 Û—`ìõÏãŠ+Æ0*Ù™åNf™ (¼Ì;Ra\�Ce~0w �H%6oÞƒŒ&cw‚·VÚÏ+)ÿݲml7˜Q¸íxèñçàHŠ1s:n:¸O+sCfºõG‡õe òáΈ/)¦Œª“’¿�#çYØH¹—w¬‚Bá�=—Q×Á)¤ê Û$éèÄÐyïÆÈ|?FéÙÑ1ZJª•:ÒéY�"dçž½X³ni³qýõ×áç•«I é�œìtênN¡Ó% cÇP‡§+â×ÎÞ–�î¤Ò1WŽåRß~Ý”À Xê‹×2;#×^ÃheÒÓɽ(Ñ—'H™¹£ŠÑŒÌ„±ÍË¼Ôæ/ª¾ñ©F}þÑ}WσÒöŸß!™“G§ÎHëåFày0ã©¡±�:¹f(¯(ÇØñÙO»(»¬­¯W2Ìlmm{Â%ÿ.*ÌÇ–_– ˜÷γ¯| ôuBŸºöçŸ`bØ©PÛš3멃A;e¥i:(ƒ»3—/ywÿµ¸3äw9~'F6JXËJ‹˜¹»ç f\vâñ9ÿ¢N®ÜûDi€ò2N‘2º8Ž;9»(6ƒD9V;Ù„‘ÇóËÈ °Ñ11O˜…S]„Ÿ¾|O‰äõî£åuº”™P٤@-¹ó?µ±zü9g5Ö†Tmò:_±¦³hì豘ÞE¾àÛï�t䃶䙿ô2ð2VÙSAa.úG ÁÓO?Œ ·ßÏŒÏ8F�ªÊŽKlÚ°ËIS9ŽTxA?ÎUîœ9 #G�ƬY·vWq#È*ã² ³ç2š©)¸£I]%Ïw03ˆ¼i[¸ŒI†…,Òßß‹™¥¤ˆÞæ¡c©X½q+®™v•²ìËyßSã:‰™3ZÚ2ea�73f©99{2³­ßkò3N ,Št„§£õ+Iijn¥ÔÓ'UÚ¾}d-`fâµ×“ÆŠºq œ`ËËÜáÒ�½ö�×¥–øxFi$ë­äÑÚ0’![K�/KÞCÿÉÅ�šçjk~5ä� &®d°F^æ}~ìÑ;«i]4'ëék¨òØ}ú21ÿ…”`BÅ·š¶cPö)Å—ÈhɆÐÍZP7:W†Dâá½((ÊgFêég\lØd:ÂëI{9lH,ž|äY<4{6,,Íp3‹D>àù—^ÆÐÁ±È⽿{'↠ǓΆ3Ì¥ì�‚ã’”Ÿº“ºŠnÊKYp o.´Yžó†Óa-,NÞ¸!.‚Atƒ±�A?ó¯ï`fkž;cSÝ]qA6>ÿðyħX,²G±g×fŒ™t“âè§uøä1K¡¦š6˜�v®£n1Ÿë~ùf¤^32Ñ`×þƒÔZ¬¦ö×H,ÿôfÁ·ÁÓÏ þáÃ/¦©³ê¸*¯ß«ìݶžYûî�X(Ñ#ܳw?bG�ÃþøUÄL²”’²þßUô?|ð ’N¤"zÔ@=œˆ…ÍÌj-¥Ã’ϵX�|~÷Ã=q*$‹U·ˆ½&óLy¾ÄNÕP[ÒÌÎÁFá»-ÂÊÄŽó�þX·ã'x®ß¥l*Ï¡€¦Úì«[”çU2Þ8–�VRK‡ÅôרŒHê¾zê…Éx¢HâpN§f�©u{û”ãìÍWÐPš‰Ýd«:‘‘‰Î´¸ýÚ[pêã·p�  3~l ’[œJª|f͘ y߸S NJoí)+.ámáÂX¸h%ÞÿUäädcذÌ8Ò^ãØ€Uš“Ì\�®×ùšOHئ¬¶¶¶Q>/çÍ‘s$yÅ�ŽëÞ¼�s¼Å›mHmxå„(|ÿÓŒ']úwüì pV¬%KRˆFÀ—s¿öN=ŒˆñSôÌk«+˜1ÙŒß}Cö(s8ù •r;ÍM´Í[ø,Q�“/XW}O@1ã¸Ö‡ ŧ©e÷1ü·a¢5‰ÛqäÀ!JÎ|«œÎÍ×_ GÎ÷'ìÀœ·>@ÿƒ©¿ëKúï:jÑ[â½¹o1øÌ†}®A‚"Lž:•Y^&)g3˜ÂÞR+óp¢€4õ¢QJ*ç¶ò¸»:²Oä=Ké {¿hÔç!“ÌZ­Ìâ,È)"Åh>‚ý˜áÖH»Ì+6$`Dl(šø_:Q€TRûn\»Wöé£<ß*Š‘Æ9TDì(¤;ÊW23ÛüÐ�—¥©Ý³ƒ\\P²Ðå¤dÖfN�IoFíFÑfm)ÉDG§>ö²{ûí¹Êu°#Í鈑écR3´!/Tä9 ¤-Ú'4œc°Ö†;×6Y%)8œµQ¾#•*âû’9µ§;çìW<ò$u/ÉœbãªT;2Ó¯‰Á,ùÅ”P²¶å}ܧצ¥èé“ ÿzfþ�3/½ö>ùð4òÿ´Òo'¥¶9v>Áû€´£¯<©´)ý¡5u‡×¤‡÷y®âÂñHtUÐ-‹Šƒa#1yÓŠîê’Ñß³ÈyšíÚŠœ,²Çñ_?šjóøÐ·æf‹_Öþ‚uL*¸•6»µ1¥Žøô„Y`ðëKacæD]r§žM“™ã#e®ëvžl;¹>ed�ê8´OÉN­×Ó² ‰ïM}Éý¢Í"�×s�Ì÷嚊ÿÔ4�βôµwv’ØçŒ>WëëÓ²¨Y¥º)~@ÛÜì$C=þ•”:“ý ŸSšoN,[ˆ¾|&Å(6£Ì eÿ½Ù‰ÂÖ§Ê¥I;êJ;z˾AT¢–ÚX"9'õúê‹úýð®-0©ÉGJ^5>þü{l�߇;ÿFI ^wgy'  æ×tÂ̸ M¤¬­à|éDÒ~ŒÖ£�ú9šYÑEdÞ #fX6¶wÐ&kĤÛf!ÛÎõ¾vpá¼ñËù˜‘{¼Ú»¶BsTOƒÍúh¬¨ÀÐ(ÜtÏ“Xµy?#gšܦgM+~üe+’qÅŽ~ìàà`¸øxÓWâDÿI3û—Ø0ázöóÔ-À§ß.gdI:[f—�D3ßÓÓŠÈÜUʬòþÈÈÉg¢>NÖðœìq‹FNòžqbðÝ÷ÝO=Ói¦ƒ•ýP˜èrVi _ˆ¿²Þ:ûY¸ÛÔboR:¹Ê=\;¥Ñ#°&a/Âf\�þ<™$ ý�ô7Rä^–Ico“u"¡ÐoС•2d Ÿ{Cy©Ëz~þÙ«œƒ<ëò\n¡3†7xuô»_h~Kß)Ë’µ7r4©HÈ.¨tˆ4ÁâïÔ©ù=ŠLjÉÓfâãÞÅÊÁ—÷ƒ‰‘¶nZ�ªºxð?™J�è«�^âsøø4tØï±ëÿ¹6Ê2’áêá×/£Í•ó73·/7AP¯³Bø¼×Ö•°?YKm©F ~<ü´ŽQõ‚IÔkJR2é4£ñ5fÆŒ«Pƒ‰¬)-áCÆ¢7€U¶ï s03i×k³Ã2¨ù›Fºß�÷<ª41«zºŸ’©"AÎ]�ºë.çû¢Åßr3=EoùBÛ À*%aï<ðÀ£H¸ÿz˜®ú M¤Á¹ávƼÖ<¾ˆ. àsµ×‡Ùò’¢jUiÎ8Fÿø]uàµ7iFv6¢úÕçдi\ˆÃè$“*q³T€Umß?0¸`•e²zx93h¢ˆY¥ÊóÌýôÔ$F o„° U-Ç““ñÈ=³ñÀSÏžAGúþ›sÐZ�Él�n 5‚ÔÞú-�g:õä1îËíÔÔÐá9gÎŒ9Rmö¢>%óñùçŸÆÔ©ÓϪ?oî㼇©f¯ üP+Ô××Á‘Lç+Y¤]>™t€Ùº1ç«öo]·yíÏÊþm»€fXó$&NÍË-¹ ‹àhj¡i;r¤Ù–Ž7ÝvdÜóo¨AÇÂÏ °¦uÛàºuÔ1RÆMïÎ5Æ Àšxxi~uož_XH{&“úÀeHMÏ<˜šr6 ³åK¼ðÖ ñY±À�ÓoRÖ� ;Io쥴!«h<þãqí¸SDçͤ±S»Û?ß—©“§„ÉÁW¤Š”ë×Âà¡�@:‚ íñú‡_RÿÉ=ú"b1ꪺ›:%nw~I§ýõéwocÖÌQš“�¶ºFD™ˆúBÒãzžî7�ÝÌ>s ³ÛÆèn~Áïi'S°7~ ‚}¨'æà�ìì ê~%ÈÙ®~ ¢¤X̘ëI½lzÁ¶.µÂÆÕ?!ƒt”þÔ%¼Ø’Ï75\ TîZ÷+NeäaѢŤKm­2ÄR¯ ûw•"Þ‡¥Ô‚·#ëŠ=ª`fë W{KjïR›�Ò$m­uðëÆÏwŒó?}�þkŽ9nç«ÖëºÚ„mŠ­&«Zäy2¦>§¦¶Ÿ/û BãP\]ˆQ#fÀº ­BÞUdn(4pºÏŸ íyy¹º¹)sG©£¾tëI¨å|Nm­&Ù·]r9Úù º�|Vg‚‹�ú¹ Q™ç"XÝ∎#Ç`E¶“¦€(¸ï݆�üïû†‡r¼àüíw*á¤ct&Ý뀘þÊÄFS[�¶ %u²òJ8Ç9†˜c`ÂÁŠ4εdc;”J™¢ÊJ¸ÚZr^�I=S”V×cƒê–¯Z ?þŸµÔvÎ"8’•q Eåup_öµUÛÐfaŠ|ýV‚£�ˆ¢æ±ØÜf &–ç² ”©Á»éüOÍž}-C¯€)} ”ðØG›ò³Ï>Rö]Âl\{O_’�›`Ò¸!xíÅGÜ8ŒŒ?Nxø¡GÈ4ì¢VõÿßµáWEØŒA[ç+6æŽÝ«Ô“㟗¼ä{fi2ò—᮫¨©§�Š–ltÀ¼©ÉœsO˜>ë|ÍŸµN$…DUж‹ …\¯íûS0ñŠáˆŠªÈ Yf�Rê(sxÚÂâS;_‘k,ýf ý,ìº ÈûásúSÆñ^ÿ•ØÚ¹û°%;O?ûLeð’lKa€A[µÈ£©þ¾È€þpô·Ä€þýQÓ¶Îv´)>ýT þŸ�\›žë¼�ßW±¨¸ï¾ý*n½ýîó23þ4 µnÑî½µb·µw%¨Ò.Ò ø;=½ 2©#A9Š_�Ëeü‘ µÈý'Ǫ[$ñ¢ž Ãâ“»Ïø_óÉ*§íš…Ú=RäÚ‹ÏAü…ª4ôº~`•úºÚˆê8$uerüj ­ÔíY¢ðI×àÊ©Ó0ûž»1ˆ�±ÒÿK‘ Î�Ûwchtv'g’V6£‡ CZêqÔ’~½¢ÙÁ^8~¢.ÞÁ˜4)o¼ú2¦L›Ž%‹™!ÍÌÏff›Î}ïäò^ò¸z¼Æÿõ¯ðÈüŘtå4ä‘’|éê-X·êg]”bpÜ@ÄE¡¬Ž�àÎz°vñdÐE-ô˜\´|-…¢¾¤Ž2á8””ÄÿHÅù§0ó¦Yèä7G;Œf¡9“N4–­”É#[Œ:ÕåÌšo ­€°ÐXúC,h³Öc )æ?[°ùÔ….­m&%·#ý¢z¼òLž ÜCeþq&GÀÖ•­5�œç5ð™� „û ¯ÍS‘^«il‡+û 7¸óúy;cH„7êÚ4°ñˆ;Œ¦0óÅõó�ÆÞ‡Ì,S`X“†ú¢dÚ´;C 䓯Þ"c;mkä6ØÀ–AÚÍÕu¸òž§`É>%€,Yú  ïã�¼ÔC¼)­0eæ�pì;ñññX°`jjkàå†>dÅ2µu'£Èʶ�?�[QY’‹¸±Ó–�ž÷„0üUÀÚeKJ¿s¾lð?êZIÿ©b7…WÀdÒ´3@Öÿ%€U®ñ_ ëu§ý—µ+à˜ntÖo9|5ó³uO|µiìˆ.}€oplÉwø:aœ‹²EMÝÁü•�¾…KgœBC»ÁÝc0ª¯«CAwÝõµŒ±Ê,­‚£áÏWĨ°ïR1¤ÄvúûógÇ—.ĺÜRu-ȧ“ÙîÐ^�•ú²%9îuŸ�WMgµwcçI½!qŠ‘´uí*|­ŠAÈ(±fÕ@2im®=7Ù§ê±ÖÌÿ «~9ëô$Z®éèq�Þ7ßd�üûs6Í?h'à —,ýN#ÿCãîøfO/æºh£UmF=òëËKí¥ñ¦PÒe\u³¢±+F�j<éKB©¦LÎå‘ë*›düÅÆ�ˆËy`]w8õeÁÜç$æÀÏz¶¨¤.‚ÿä+%v“—謼üzNl©ýÖBâ‘F€¦ÃŒš³1@”u ¾_�>C‡À«¾ÁŒdd¤œ~c³ÍmVÌ&mk@cd ÇÜ#FvöÝ“@:û¤Ö†Fg3#,´ñF䬉H¬jŦBNžZ€¨ûîÖè“nÑ’Îåˆ{¬Y¹��þ((m‚5Á_G ¨Á®d£Z0V|D®UL“õƒ�›%³ü&`óú5Œ «$]\+#ŒÛ©1[‹ØÈPıŸ˜«K`Èž÷^‹>~\Î{€šwGÝu$+ƒü¨/À ƒ5$–oß_¸;º ½è0NX�QÞGÐgø­ÔÇJ¨Ax÷LFdÚùÃÎÝ ™½ZÀ,^sjOØjªIâ†þïÁî)Ç�ΈÉëneÖ‡w @Cdb4yt÷ýÔHý™R9›1›UXxø)D�êÊŽÀw`` JJJpÏì{Ñlaƒ;î7Íš…CwÑØòâº2NrµÙÒèŽQLú�©·ß|µÚ8Ù0Æ`vúG3ªÜ�>ôp7ÀªÌmwÞŠü‚ Œ9Ýžºîb? ZVg®Dqê¡l¶çh*VndðFMÚ˜6óÕ·»'ˆ29P�ƒÇ_BÄ×˸M‡âD– ƒ8¿TÃ?…´rŽöÌ 6ƒóedY]ì9\N=µ/—mûèðíl+– |µéÙæÑ䣊ÆLÏ庿%ªX^ž]ÙC²Î•uwÜ~‡nµßüý«O>DMM�ðÌ>„¡q£±+~³âPöcÄÐc1�¹ººzf"G$³,ÿ*—~ÚI�)NeµÄ¯ü f̶db3#-në‚Jê8VÌ™tõMŠ–Æ'¯=Å uj‰E$¥Ð>¬]·’Që^Øž�€=‰;ñÊ«ï\P{IÝŸ|¶4Ö)à­3éΤüôÃw|×Ckk+™ ¶áç¥ 0”™O½•Ì´´î̾žë\í °Êx¬Þÿ1}1¨ÿÒ{�¤*%x#}é¢ÅßQC4ò¢@VõXöÒaÓ¾àSØo\#fÎP›ÆïÙ× þº^`MJ…mAŽ'&fÐY«`õÒöï5tì"%ŸõÁz¬Ÿ<~35íò 1‹Žã—¼Ü¼ýÿ£V9ÙL^/XU�U2X À*m¶1rsƒ)ŒÂúh|èì•q¯·ÒL°FœcbûÉKì>õ¹êm{É`ÕX¥Î£O>†eËVáÎÛî¡ÆÙV$ìÞ��›VaåŠÅØ�TŽØþ‘XôÙÔÕ6v«‹X„;î½–4#êž�X¥½¨‹È?ýä#ìܾ™¶G,¶oYO]ÃiØ»g7rÓ3m}Šý‰V¯$k‚ÙéÀiÿ|%?ój©ïjeëÀÌ9w`•ú.ÌÒ ˆ"…:VrN€WßÝÍxz‡�°Î¹ãê.ö… �eç*’¥4p`,‹OáxâZfrÇJö™× yã½y8á†�kó‹^.Ž©¥íõD´ã±©9g¬ÔùqäÀ~Ìš:·Ü}ŸAÒkdS^ë€ÓÈ@Csøø¸#"ÐK罇ØÉ7élýç~-Ã9Ï>�™·ÏfƾuŸËGþ†­ñÌ”¸Ž^AdY8ÿ!G,×&2fð^ì2)êó’=cTuîÜWà 0ZgwPŸ¢ª/OŽ­Õ‡aæµO*¬õ/þ£Zæ‰ò\ê:©•†»Þ\™ím‘}R™ÏK;òÌžë9•¹›6{iD·m+Í莗ò½âÝW”Œ,Y'}ÅæÜ"¬%h2|Ô(¥né«/ñ^·…³óÔybuAK¬íIØ„üh"˾D˱ÔìÝæŽ6§M;§¾¦ìãrŠ3™œ6n^��[VcòÄ«•&Ì-ì«}]J›žœ«î¢D†5Š{+ÇRRPÊŒ#ÉœºPÙ¾j)vîH@ì˜1Ô t…¿—;ÌŽ|„¢V²$3aPD%�ÓÆ¦j¸X3@–:ÙÌ–Âl¦RfórM&PÌl}ksÄ^s-JõmQ_]E�Ò)ðfà[aÆQXêØsÇwÁ´½ådš©«È�wߨ æÌúå˾Be þ5÷=vž~®xßã–»îÀ;Ï=Œ#Á¨±ã§Þ ØhF (Ë:Bug¸d!óø.èµ7¡�zÕàœsÆÌÛ±nÙ÷(¡~bFz 3ÀªaØZ� :ýí\°ø»%x™Ù aíÚê˱}ózØ[›0°aíÜMÈålÈË%&Ž õÌ*l`5(¬i¦‡1n�XWê´jš9w6Þ¼V´°žûÿÇkrð™£/ŠœÜ‘ÂlÚÑ£Æ îº{”ë}øÈAΩ¼is×ÃvÄ8å9•qõÕU+ñÕÇŸ")1‘þ„Õøú‹oPMÊõFúAìß w:–ö“!Ê'ЋöÃyäâÖ;f_öØPWG=è‚ÂX¹tmU€UêÔ1[¼¢0;¦¡‘ô²?¬X�¡´ùú†!ˆŽ³È�ôgY×Ïþ7‹„ íG‹vúŽ­d×� &a8^ÀùŒn¾z“%V¡‚sî^.¸eÖ-8qð³O;IånÍd‹\JNÇóïOýaÄÍGCMç¶-ðð…¡�13W›qˆÔÔDz˜ÉI�tÍ/˸.”þ9/Ž™M É@*}0Å%Uô6ã�w?‡-Ÿ?Ú{aÞð÷t@ç-øÅ,ö6ª¦všaDÿ`&H8¢¯o0¢™XÐÈ{µƒLVúmȬ¨AL˜? * ê: @Çå™7Þ@ŸÛ ˜Ù° CEEž~ì 2‡íC3Û6‚ 1æöp`°X Œ™Ü?2!†åÔ�f 3Èëë[àã¨O{{øtf¢É†sijZdž… ¯°%£1þö‡Ñæè�ZJ 3N”„p¢¶}kò6d¬úz¾‘X½# r>,E‚(F�›Œ'Ÿ{ã#)KE`úš{È”¨¬WßV­ZÁ¹Ú`„„�öYªëþúÔ½ZŸ¥ê«Ô]óg|W±±Q-9Ç{ø…?c·ÿ±ûø dý�ýkþÜS#‰´®‘¿qçZ°Â6vx³Óãs�UÀ7š¿‰ÔÑzÕ†��Í6×ßÖA/"åý®½AÐeÀ•—L>ÕÈ>—÷¾VhzÏu`-mb‚ë1ÚФ×*bÀ©tLbhÛïµj¯ {›¤þðˆ}oe„ŠÈ±ØäLêS¬úz‹\,‡9Y"5^YQò²s`ïîƒ:©m�k^SBÁù x3ó ¢Y‹×ïÀèƒQÌ(ªrFEÇùw¢Jãa£_Z‚j7TN¾¡'Óaw`;œ+OÁ†±°Ê1×û¡4ÈËêÝëïµK3/ÌafðØ‹ÎXךZ¡hÄxÎ# ܃OŸ¦öç¾Xø=’vºøéç¸ç1žd6Ï?߸W޽a‘î˜B{+:25-9° ]š½«3Ž$åS.`þõÚËL{pðÄ)¤Åœ‡§þþ”ÒÜ0fæ åkÍ–µÊkÊ­VSÏ}�ï÷KÏ?‰Á”˜ aŠG½‡R�v¯ÖöÕ¶ 6¤Ö óï‘J�ª„­Ý1gè‹o*23rùgK–“ÌuEKOÎGJ¦§é«ãÐ?y"~E3Õ7ØyØÜñÌã XuúÝAVÙg4Ç;WÒnºÒF‘r9ëó>ÄÜ�ÞöÛ nß ´Óóm{üvlcÎȸ¸ž«Îø�Íપ²RÔÔ7cGYÙã­´´ˆÏ³5Çê4R>‹ÔX)iT-з�Œv)Ôé*° Í¨ìÑ@�ŸÒO©~À}û÷ã¾Ï¿%Õï øŠÇ¬¿?B7³�Ÿxcn¼µÇ–§AŒ…‹¾ÁÚÍ+p%³*¥l é·è@IDATܳ” 6uR|~j«ËË’/µL½ú¥jý1°Î~æf¬c[“ÇLW«ôú)Y¨Âf£éì¬2Ža£öËâ7ì- Tõ»‰�Ðì±ç¼%ËTµã¤¯—"ý¼ø6tÇe…Λ\S})ÅoàRþO±Ì`¤_³·¢ž·¬“}ÉKÆ)꘢üÐySëÉ1©Ç§³ú¢¿š1ë;Š:­q"\q34]sÝ뮜ˆ™<Ž}’ìëŒÏ毢ÍdˆO?ý„�´Kàålgj�nd?2‰òU^æØºc?<û$Ó|àòùJ8t”LZÙ7’Aq®”‚±d€²ý‚ÕÉ¢æ€~\JàÝO>]ègòð÷„Ÿg8¾[ø vNÇwßKæ¹t¤9Ì �2T¶cÞw+ðØcOÂϯçáÎH\K­ØºfÙ‘¾˜òHeÔ né¤~i é‡ùL¦”u¢¸¢3n$ dþ^4éaä¤ë�̾¡º¡÷=ú"cÇSVÄã'OGeV6ïI"‹HÙì˜ààÍlkÎo¯œq3bôG%ƒŠE¬¢º�Ú©vð8¾a:FVN8žS kƒFG7à`Z9Ü'<�”ÜJ\só�(â8¶qÅÜúÐӨ͈¡­#3ƒ¯=ã?Û•°GS’ oꈙw=@‰¢àîõ5±ÇŒ»UÛ"8v*ú’q®gÈ`?^ÿ?²È½§úù~Ë=øGã…Ú>×óu¡í~¯õ²éWåyWŸùsµ=ïó÷”Unöÿ¿–¿@Öÿ¯ÿì%Ÿ×iÃá’7í±�¤ 2üh, kÑ…èRÑuÐQMƒ"’DiYåøäË%¤8šÆ{F�0f™^�&LŠD Ë›’8 wA�»*J;XêÁ/|–ýº3bQÒ¢!…�5¬”k ‘m2atvR0çîë"_¶ÓyàÓEÑÍl§””dO9©Làš`Œºš:Rô” �vÛ6¬Áø‰ãyW™aΫoÒx ÁÂùcûÖ¼;÷ <öä38LCò×õ땬V¦�*YZº;¬­¥>/0Óöb‹C’)®j«ÛÉry¶�eî@c¸Ë—-�¯·µ~ïâj=~X´Û8am è™p2êÀ ìi§¼(à}^O†‹® ño=ô—ç¼ÌÀƒjj(À{oí53’tß–5DŒèˆ '¸w%ÁÕ~XÄL&}}ÒüðYô¤Î[ÊÑD œÁ6t–üU~Ûpt÷ïµ%3�ý• —®ÊKŠ82‡ !•)B®–l^ˆgH@…ú¦:F´º‘úÔZ6(VÉ$ õÀîõ¤†§vщTlX·ŽY¡¤UïÀž¤4<þø“ðöñS›ìþ,£ÃòXÊQRµÇ`õòÅÔ®FWÒ3Ò”¬r=ö$–¤ma6®1uÈÄ¡fNÐÄbõ�J2ÎϘy^g‚º3oNv»tÝÔeûÙ[”·ì»ÏKº’tqtúøv7'Tpîž|yÀ¯O Ì--�Í,Ðà†bøãJ‡�ã«ï¡.ãu»‹•1TÆe±#”…-Í-­×|öóÜïl¥]]€õ¡{Ÿ@3¢º2úëÉü aš�л0FVÝ"àjO€Uwý¥|¿îªÉ8šžÅL�V8›ó¾ æò¼yŸ“!�ÚÂ1 ¦Êb¿¼•Y' Ôï-Á¬‰CðÄœ7°î—Uøañt0ºÛÌԈム²�–‘ËîÓ Rfz:‘ÊîÌæÞV9^Wå¥ÞŸr­ ôõ0ñJmÖ“vEïï$RAÚ±pä¸ûß^¾øâK%øá·LÇQ^ÿOñ9¤^íb%;.n¼ –¨Ñç;_·ÝœI³Ê׹н­úø÷£ãƉtžCpÍŒÇ ¡<Õ­^¹œº¢íxâ‘§ñÊsÏÃÓÍ•Z­ÕŒú?€Ÿ|?ÿ:ŸTÿ©·ø%xâEŒ�›ŠWNå>Oÿÿ²ßC‡㺙7âŽÛz:Dåq)V´k ;šxœŽhjlÅìcà³Ê™A²…@3m�gž{‰g%P†Â�¯j:NË©-´yÇ6¬\²ÃÇŒÃñÝkáÀû)8fô¹NýŒå ¤C“âàæ…”X�¢Ò¡õ–ÁZ@mKK;¥žú–s2n}¢à2¿þ²ÃFÇaÈÐPŒšr«’9±a uPÙ¯\.È*¬=Vußû)«þG“®ûu¼*8F;Ã�l+M­�Ì&/ èCGqe9üHË\›{‚4©´, ÿ™¥½­‰º¹©¨¦³þéGnETˆ7ªj¨ç½›·mA GG7Æ®¿é°Ä&6)2Ÿ’çLæs=�K™3 H ‚£Êœ�“…Èw(s'Y®Î%Õv”FÏñ&v°ìGæ`–9k8†8tt(Çp¾íµscñÌénYûºv¥d"‰V»œ[mn–âè—6Õy¬Ìuó‚b�‘Ÿ «Ð>76ìÇ-b¢™ e®€^®]C÷N~§/*ÀzùÍé!–ãO<|nŒÐ¾}€5‘�:?¯XÎŒ´A½îΆTŒ> ú*cÖë;oÍÅj&0 u;\Wd¦�µÂ¼f6‰Àñ2êóep�,ð*}뉒fþU‚‰Ì[šEV Ú_Ôž{üV,Z“@[­‚™°Mü?\�Ÿ^B]ûÝp¶2G"eyòÊjÐHmÖ{gÍ æt²Šò�_ÙÂL³&è1{»œàbi܇Ž+GQZgãO:ë~L»þF d Ç{�f\ßÇíÇkoÌE?'kü¸r%N�:†_Ö¬FæÉdÔíODñ© \WœŽŒÆ´1(©šÔÑ5ÌX+.*‡ž‘!�ø*¦&ó¿×#€L2\ ølË{OczšÙ-)5I'31xð`å¼uß`ݽûë ZSЩɦ¤Ù>^p˜÷Q3üÝúêV?뻟ǙAF°J±´a&%ƒ<œ‚ñêïSé8Ž�Ú�ðÐe}xX?øÖ–uKÿ!ýcoʼn—Ñìsúô ÃfÎJéçhmmÂàñ±8�á7Þ©l&}’Ê<%ŸÒ¦ >ªý“Ì‹Å~V÷åÎ9åƒ÷߇¢N€Á�“Ÿúç9ýŽÒ§J¹{o툻ðÖ;P×W;æ… „¼Äg ž‹Ò÷X{;¿¢’|^'D…�iƒô¬+í C °S‰NÍl•zJv­~~CÜ‹ŠC=g9_ñŠ�@+ý¥e¼“k$EÆ •îW¾K»ºþÝýH›êxÐóÚJß/c‡üÚ±Di^yëùûôí7™7I�¸‡Œw=ëoú^Û®y ýˆ¼Rd?r½åÑ-®ª«,�&+š�½ò®ƒµg¤ìÞ‚GŸ}…@·;¾ûþ{²€ ¥p6²�¶%0éèìCg<ðÈc¸ñF²à0pÁž¾¢Å?ÌG´O<ì’žz&Æh"ým�ÿ†š6ú+¼qdÿN„¸ a0¸ö>„ý'‹ O�÷–àŸÅÜâjÊZ1#54åÜîñȸÇdˆ¯¿]¹_Â�ûyýÆ|„„FA¿4Np_xê%˜t”¢‚T¿ƒ,R}l#�“ qN>hª­ÃêM[è÷Û�¥+Ö1ˆÑ“AÈÑT�ô•‘� ^¤Æ±G`$²ÈTË,ßN#+ê{çÁƒZ²‘á‘ �0…­ge5¾ ‘9)OaÚ«Æ Cø”Ûho'â–;ÀP²òIÙ°îgø›à—o¿Å+Ï~£2DO˜¡¬Sßú¤ýbæ� ”Í çs¬[¬-ÌàébÏà+w„^ È@w»ßã»Üsê½/÷´úÒÅ'~�ýü;ÛH9~Í“¬¬þ\ûBçœx`}4ÊëBuÿ[×ÿG€¬Ýw�öùˆŠîÝPýo½¸ÿMÇ­¿×1« n{²ÝlL¨ÕA½ç©»]oßÕ�UÕ)“ žQ^öyi1eêyžJKË/¾Ì,œ ½5QËdâÙðÕG(¸z$DjJ*#�Ñ1þØoâ„õ-â_ðÈ8¥8EÅ0’óPµl÷XÅQŽ‹…j´ÈÎU#PÑhe}©£  ¨†�Ñ�8ÿe[cQÀh1LtÛ‘¶Ä¸’ ¶LB¢ÐÒ€’hèö¼ì¦†üMùðQGwo©Þ]”úü�t‹¬r,ºeãF¡gy^v6Õ–µuÙ±#¼ÅøS�W¥0Q·‘ã)›¿;†ÜŠ›¿ù�¤uÝBj&F šv´Ñè $«A#3{††B5'Œ¥•�Ì„ÚÌ ÐÝ”• oêxÆï>DЯWY[Âäà X1C‘3X22=·¼œà¢ã¨£¬ i)Ê!d=ü:Ÿ*Ä�Ña¤Ž€Aœ5ÛŽ“ÄqCý¨�Ú ¿¨‰yúCÏέå™ð´¨F[Y Žç62»)ŸzGˆ­+„¯§mK3:騑Rw$¥Ó‚YgŽ0¢LÏØŒÑp{ðî;ï �Žõf¨ö¡Þ]e=Eä©7pû�÷!ˆNîfÖkÐX!ÌÙÀåFW�£¦Œ«Ûxl8•V…)ãÜàY·‹ú1¾¸û¦ÇH#âNz³FO­D”+'D'1Úˆ“ï6fì’&Š´rµR'M�FGº·°¶Ñ™ØÒÖFm­ãÈÂüìà†¿Ýu'éY³éÕFi—² ›ÃFP»—ÇmÏk-T#ƒä¤LŒ¬|øÉü´Š”(Ga:AŒë®»·Ýó �éo3ꮎ  5×8!úàí¹"P&t˜jii©WhU.d£ºeûF¼×:Ÿ´­3«þS¯Q@ÖJ:òÖnø?ö¾¼ª3ëz…¸ww#F,PÜK¡BK½Ô}Ú™é´Ó™NuêBK ªHqZ‚»$bDHˆ»ë¿ö¹œp :óýÓ÷y®?çžó¾{ïµ÷ZÐé ‘€O �Òw>\€TêB•Ô“&Α÷u[,qf5qÎh ‰0²¦þ®¼äwoMž-ëÉñd¥ªú�ƒ¬â<©Uâr¼’„Ñͺ€«ò’–H`ÎͳHÅ;”4:6Ê4yK;�Ž}‰Ép´³éZ7oÞˆC¤«j%s€PŸþšV×Z‰±ãF!*2º×ÕŠmÛ²‘ “$XÙãÔÛ·n$MøYé©9GPÍ„ÏóÖ Ë”ÂPÒÉþ²öz9¯É XM«ª&í“7ÜHcȪ�:‘ÍM ¬.4Áíso'˜ª©ªpgõ—§*¯°ÈHxùã¯/ü�´E’´÷mbbŠƒ[–#œ[AxÑ!íÍZ¾’i°§¦23øl:éÔ[°qi~£ãQW^ÁM0ÁŠ4«"I »£µ�.}íMÿ¦ï¹ b[°úR»u‡%ø Í7.žškux”YË®tðå5pÐ`ôS×wtrV´­=HZO*²µ•ÅÅݾåKp¢Ã�ýBŒvwplgÚöæð1Fõ÷?b4þî‡0sÆtT——àãO>"u™)rX òܳâáGƸñƒyΚ\'&—ô€µ{æ§+‘H°ÁNh‹µtY»/ÛÛïft‹Ï‡¹�+’ôk!¸bFj,é+ï¼ïQÒkAÎé38xð êª+•Œï ûèõA=i·LèkbˆŒ3¹UsÐÎÿÊMtì¾[„ Ûö`ÚM%ãw˨ÉĬ¬ÓièÏÀå•¶ï¾gÖõÝsÑ/, #FŒèuµªÊ2å]µx‰bŸ�þõj{v¬ç¦©éDËkÙT[YµÛˆ«B?g+©’ýa;–™I Jz2‰Mϼö2v³*$)å+N'\ö0\½Àªn@Vi.d1ØÏ„‚¸øaøú³o°ÿx2NÌý¶)ã'°Êà©›0švìêµ+0göJBš€¹³gLa2�búk´ÊÏ¿9±'2"œlŽÚ“€uëÖÍdCøŒÕQIˆôóàØÂ~€YôùÔÿbÿ±dÉböM})[ðPçº5¥d¬H:€£©ù�†‰�#ôML(a„Ó‰)¬È †[@úÚ\üütn¤ÛRí ÀªÝT�U{šú=á‡/‘E:I?VöªÍ�Q#‡47V]ìg¢”GX<ŸE!:6¶`?~<Ò3s¨ÇUEª¼Þ+Ùöì"ýëšïÈA^ 'Ï $9‚2&³”œ–@ãý÷Ì„ Á VdRÇðJ[ƒçú @Ö3)ïíömK¿„�« H�™À \ Š¥?.‚;é.Ý|»é¯t=-WHf›å+—]6I@—ÿe}C+ìL”€£gð”å2% gÞ ¯`êr^|¯õ´ÏKM_XlT K”Æ—“gR^¥‚Uæ«Ï§²<},™f9ë í:™/~•*8p©ýªó4>6 U‚ðâwËX¤îO]N‚�j`^`•ùrLêväw_7�ªŠ} F{³û«™‰VŬ*ͧìˤGÿ ÷ɳТ…Õšóß{—Óó1šåÿ�Md.'% wƒÔòê dU—ó"øÕØÒJ[Õ³¦M¤]¦è×ÛéV¡¯~;«Ä-¡ÓÖ�ö_ô# LÌQ]ÁJH&ù:Ûé`HÿAÈb ÔÖÂLññZ[õ7–ôþ%¤uMG+$Oø»Öý„ʶˆÖß™ŒãÔtgrƒ?ÁEò:Ÿd«×ÓçD²R…Eô‡C7›ä }3Ñ O>qŠc�æÄÂÛ+žýÂHå» éY§H‘ÙŽi·?„˜øñL N‡Ÿ[3&^3Q.,j“ð² 0[°êÌ Yy”D¨®ƒ§o Ö-ü7RÒ²¹] &— a«)%l©�[L€‚Ég íX�K¸¥± -m´Uš˜\´œÏq¬xo=òèSØÍ ø´´S‚ ],`µup8ûz&–ºÅÀÑÅ W/ÃÐñ2¤û ò‚?éÖ?�?Câ†cÅÏkàíj…ÊÚ:ö:ø–:ÕÖd’póòÆpô!-ò½÷=ýŽöƒÖŒ#fbòÝOãÅ—_ÃÍS'ÁŽ ­"#6 lÒ’Ó‘¼ò{øR«ÞŸ>¸ÚÚÚÛP¼ðo°eBÏÿ|c&(ê|ùLûæïdpˆ"uxï¶^_gOíU~—ïE3G)‰ÊjŸ ;Uïãßå~‡�ˆÝ®¾~‡Ý]ñ.plþÿ¹ŠU.ÄÈêèäÊÊÍëŠÿ�?ü?{´ *©ÄhÙ·³Êúé—~UôJ“‰¥1$d@6<ÔÈtöÑböv‘l8˜ü€5…y‹¼9W��Ã-Ì.-©$…O9ƒ‚Yذû$ÎPgbj€/œé48Ñp–\œ[y‰Q£T ÐèS›"2]ÍÓîð5¨PŒ#Õ0MUi嬦=³ò™ »äå'`ÈàQ�ÊvCzåeêæÑ·¥1§xóz%ãX®W}^®†þ‰™ÒRkëBmÏóÇ#ÆŒz}e2àÈ1Èñ p*Ç*F”€°bÄÚo^Sɦ (¬9ÆöÎìDÙÆ‚VcDQ+ �¤M}Ðì‰üúVVÿ–"‹‘Å5¤>u ¯??þýÝn¦2›ÕʘÙMÌæuT@žŒ´$Ìš<1t\v1�OM¤Ê¹÷A<.ó†zÙJ<ŒYQLŠ VŠŽ�ƒµ9Ò}ƒ0=d‘CáýÀc¸aT$)/ó¨–M#äf¡Ÿ»û9àçCÕpw²!µM_œ<¸•ô†I¬vì‹ÌBjÞ�<�þ‡vaØÉ0¥ö‹´£Aü�I­#­ÎÓ i®ÎHâ$´É*…$ÅØ<¸›:Àu L€ cJO‡G~®°€ô¢Exê©'é´Úá ÿj3ã^»’“”çEûyÔœø…w 0ÙÎyü?°ÊuÇF½r„j"Ç…£½ø[ïµ¾6¦ÈÎÉ$ ´Æ¡>ÎÊ þý#€w>x;v‘¾úê+&[X…TB{½í"tÿÒÁÒAè©…÷‹„‹ZI¦µÀ‹>ÅWß~‹u›·#È�T;K×0“Ô˜Ž€Á:'RC0K}j ’�âÿ#`ýÚ5Ë`F*FG'7ê1ön´kíæª¾¦œLF)鬺Ӥ^ÕÆþGV²dpB»éë‹î˜H:vDmlíP_–£8}ÎO °Z3KX^=µ Ò¯5R·Ê˜úžµ§y�‘fÒî<`Q\’�7Þ^ÀW#A'D ¹>ÁƒØ¿z!;7ß/üNc§bà ¯*cׂùŸ"Âß�¬ùøä½714~LO»üUÓæúo> Þ�@«&°Ð®Œ÷ÒHD<¤o™¿‡Öaý‘F*òï¿¿Çý$;N€Â¬Òno¯Pœv{oTºz!xö\üÒ§ë§Iƒ×ÜÑG¡°ÛDš;Ooø¸80X‘xžJp%ªÀõ׬rÒq±C {¡³—1¨·vh_6’ AªhãH}=[^N�,fsk�¬Ù¤Œ^½ôk‚Ò±¿j×ûöíU*E-ó2•,m±;%À(¯bV™0mö!H{ùYÔ’ž»|ù�ʸ‘J[‡zŽÖ”ˆŠ¾î]jçÿ~ãï(%�\m�+i¢Ã>ˆ•_ò¹bÍJLŸ0‘•µÇ•±äž‡ç¢€ ·ƒrâ@miÁ,gÝ¥êT^n´“Ô¶g5 :ªM`=|t/–,ߢTÑO7†ý·¶RoÍÕÇ_apØJ¸º 25�^÷‰'ždum×jææzV¥%¥ç®Nªs}VÆ›²ò zè`>—Žên¯êSÀÕK¬²Q Ž}:|ν|;÷ÑÂãp°‘•ÕµU•p&Ðê¬Tuó¡#üZ­ƒ²=Ï;´u”ÉêÑS;zô¾ ]^Ü�Xø’²Ø”TÛw1)oËÏkQÈqw45}™;bTA6&?ê�g.èi[ÚÓ2“÷C§²%IÈ`Bk=�wÜ­ÑÎ å)ÇwG2¼ ïþ¬Þ´êËŠ§k—X`ff~I€Uì$µòÅÐD‡I¥¤CêêµÂÀ’€X}-’R÷àÀžå0×aU‡ã…ûLû<¯ô»ŒÈ–dñ³Ä�ÐUlÕÞ˜šdy‰/¦ÅɈ$Ëj7ísÑžÞõ»†¥ê‚ÏÙµJU]VŽOö#}E÷*Ù�¯f z† 3æ"iboʶ–ãS_¡°~í*‚NѬøÖ<·îøŒŒ?“o¼‰Z’Êúÿ—ß였£±™/w[†)S§Â�ÉgòÌʸJqÝêµ8˜˜� ŽÉ#FÞ€â¼S¨+cn}¶'æÂwÀ$V§¦Rú¥õmõÔû«@YE5‚|‘vhí Wj¹6#›úƒÒ�Ö”å“âr0rSŽ b¬ ²–0 xÇÆ ‰p¹ÃüÝæýÕB,üzagFÖÐHM’«öAlÚ´ß~¹QQ¡Ð³ ³@S-ôLŒQE ¤‘IÃ5çrÐ?~ÂY©V˪T[#ü¸h)¦ÆÇ é@�Q=…øâ«àâˆpÒ@Šž¶hZ702p Récãä‡àˆ�Øð™V‘̘IÍfL2qQl©â²*ä‘b¾”Um¥Ôu•ʳÐe’NÁͤÌ´5V“†³[&#û\9“ˆXEÄøFNZ2%Z™  &¾T`D|<š©ßx.·€Õ©�ðr¶ \ƒ5VoÚ‹¨ð~øôë%ha¨èÇ“Æ�6st¨ jêZ(‰`A·Žàe€Â€âè×�‰-~Ùð �œ0…ÉRźc÷öëý˜¼fÈ¡+ó¯ûè+—ß”÷§¼®U+¯*¹²$¤œ!@šž…%ß­e²�ò‹pbl)ä]zö¶o'&!îܾ•6j †„ă{p–q¤tRdÇ�ùEmÒ×jǵTß^G鳤í­ À§$‘÷¶ÄÅÓ‚ý ÒÇše‹q¤¡‰ì:Fˆ7å’ûQ·RMÍÖ~® ûŽÛ'ÁÆÔ˜‰þáêì^?¥¿•IÈéîÿk¯$ý´Ä¥Éw5®'c‘³26IœO¶§‚Ñ*ÈzÄYOiåš ›‚|ʵ”ëX;zɉÊvÕ¡š@¤I,¡Ì+¦ô”€¬õ U¨(gÁ‰Je¨ÄÇÔ¦ù?Ú•óéžè#cvàæ�»,¬™˜�šÂ•Ú}uL’ã‘i—k-dT°§-)‰¦Ò- áh©ùžtdv¬ü¶ž¡° ÿ2†4»®ç¥¢YY*/ç¾8ÃØ_]ÊN´9° #žþk4íYÆòؾøôR†[cd,ûZJ‰3Émý¶]XÈþÎÅRŸzáãñÌsÏcùòå˜9m<IÄÝO¾†‘Cb0nì8d2†ìCi?ýÄ�íS6§8Ÿ³;waýçwŒ½ù^Vœ†Qv¬�I¥‹=°fÝ&ìܲÛ·­Âœ»ÃTŽ5¦ÆºLÑAÒþ8�_KŸ7›ôêiX¹lŠ)gVÇ~êî¹sñÕü÷__^e¸vµ‘3iŒïd‚œÍ¼G)¹Ÿzê)$çW!©ŠÒŒ�»Ñ±µ¶„áù¤a¶Zž§‡‘·>Ȥ–þ¬e‰ 8»y¢ïú«r�þ›Þ Þù'= (1z¹Ÿ%¶®ö—:N5~%Ë^j;¿Ç<X›™„~©þî÷8ŽÿÅ}üW€¬¬ÿ;·ž:ˆŠs)à„h¹ˆ®€ ìÒiI¶” ð’•$ƒ¿¼dp•¦vâð‰C'ƒˆ¹Ë¼ Y]²ždÚõlbd§ôËj¯St7ò K09Æoþë1¬ÞšÌŒ)ê=¦Ÿ¨Š˜s»Ñ¹€ ˜>¨ŽtârìÚMÎGj.Bóþ]]1„¤—k#°Úä‰Qa|6'G·º2·q`¨C%)mû³ÚÐ f4jæ¿VuÆ\ÏȶQ‚/ eW�¥|Êþu]=H©¬ÑDUÁ#1TÔL0¹æª‘$ëˆá¥:󒹬j’-ײ§ØÊrÚM5|dÚ±{_ÀiÒsX˜"ë® ?v2Vì<Œ WŠ»3+“µ•x(bŒHõ³÷ ÅâÍÚ«1$ÌÆQã§Ã5gŽAh.¢Y‰x„ôÄnÞ¨aÌÌ¡1ðbÅŽ[utùŸH;;þ®Ö(ÉÏ"g™tm½‘åް[g¡ÑË54~·­_�`OVeÒY3  êBÚÂ3p&˜*�·�‡ŽaÇ6£+ó°jG.Œ­CançŽ)~m°ÝsLÙ�¼­ˆ„]¦Ž0ÐïÊ$…FãX³)\H3îý:8‘vãßï}„{æÞ…W_{zþ/¤DÝcfÁ3+Î/ O›¿Œ•&© "þˆ›ÇÑÈe†›N:{¥©‘Ÿ‘F§ÐF ’Ymª/ÁV�|ùÁ«¸é¶{ ×‡Ax‚£×®)6 nˆ§Fl”²ÙV¹†ÜÅèÑ“©‘…6:ÃBŸüñ§Ÿà‘G…¾AlÛ¸Ÿ|ôÿÓÁ’ƒKdz™†[_ìÙ³[ ¸f²‚©‚:ÖVÊ­«lw ©�Å0!€ªÞÃrO«Y˜²Ðѳx›º¾>^0ìk«T¹IeÕÀU ái¬‡¡4£’†ÎwZJ¯O Öý²–ûÏÇ�=߆e_ê›$B·­}O«ódßNO¿ÔÙ7©Ó¯O©>�Dµ©�;Õ‰êËiJ–øzž¿µ­3)eL1妱žtLQ x8*•A:Š~ë�ÁCèԞŚի�I�µ!q#àãíÕ¹)Xßÿm¬guN;|è æÝ7·Üvgç´î_~$Èj„†Ù³f¢²’šCôëë@ÎÍ/TÀ¹FRLoض�™Ÿ:8}òÝ–(HOCZî9EkÝꕸùÖÛ»oöšüÞ½}‡BõÄ@õ­÷+°gßa�Þ–t%¨%«´:ÛÈërMÖòŠbö¬|Šc@1 _¼õ7Ä<­`µa}} «Þ¦3p?šc¯¦»²8�UÐàሩ3.Ü“ÞU4 ˜Á6wf¾[ZY£ºø �Øc�^硬Zµ��šä’Ή½|‰‹Õ °ªÎ×�ƒû`AÀPÆXuœ•ÕmXå?ú–¹˜õXÈH¢œ#;4à*Úó­¹±^I 'KË¥VY܉¶«‡'�8yø¡©¼Eg޳J.£ÇO‚3iÝ%�öùâ_0ÿëÅˆŽŠPú«’aŽ<Œiñqߣóä–Uš£O(+ðŽa±:�5°sgÒ`â˜,©¨®Aä áضîGêÚ–ÃÅÃ÷üZ×ïC‚Åò<ˆ-'Y}}””aÏ¡Mè<¬Ü2³°U^~ÑL¶ô' ]ý›@Öš½ Jµ�ä>ïg‰O'/ñ{/×Ô "… ’ëh7ñ�ìT}fùÝ=è'¿UßYÖUçËq©¾µ|Š?§6mPlLñû$à®&Ûj¶¡I"¸û>Ôíü´�×:^ÓoU&?v cH÷=Š;ÒÔêY±éµ�Q™yßRRNàëÏ?¦ôÊÈ^÷’wúªËŠ™�Üû³^ÕÜ®øSºê€ÝëÖ€˜‘ãŽ]H&øó“Oà'öI­†¶Ðg"ÕäY·£�–kÖïD¿ÐPên¦P²&çØÇUPktÛž´OLÈ"Tϱµ u5ådè1BᙓJÅ0Ó¥aiÏÊU{Úa¤Þ7ëkÅ´ 2Bغ0¹Uy&/§1\Î±ÎØ„ìun?~û R“OP†æ¬Øø1FÒ½‚U=Ñ<²'Jr±aë!l;’ƒØgô0ˆ€¢rŠZðÝ¢ïÂjÒZ¯üãCD÷f•ë&ذï� {O&�˜êaëÆ�hml 5hŒÄOš…ác&’ÑÀN¬²O ë‘ÁIóê“bÿ¹ãäa40‘‹ž¬:î(dv-ã�܆íEs#=Å×6'˜‘WVK*a&mPR¨¯½¦Œ�#'N"„É»BSo̲¶‡n¢¯Ê{ ¥¥ Fúˆ&€’ÅDÀñ±þLúK“>xjÎ(E*åtz&ånt`LÍG[úÀÒ/Y[ãtFÁ;=X™´#ÐÕ§2 Ñ̤úŸ~Z KVËvnæxjLpf0n½m<úë’Ab@œz9{üܳg'ÇÒúÝÍ?º;[VåýÆû"ŒÕ±aý!­è\-¢pÃÈILξ‹˜ËàãkVÓ^i+¦¾ôªU+ù<õEsUp™Ô_XƒF%YH´2»7é_$v%ý¨T¶^®¿±:›uÙeºïãoý›RÉ?fÙ±öc_E"ÆSÞ€E —kn6¬€>ßÞùôMxÌŠze  r.oüùAø »T“1HÎ_Æ>aô‘&ëÊ8¤Ž 2M®“,+ý½ôÑ2ÈoXEw[Æi2-Cîgw¯ßÜ3¹-îšíjÆÙ�z�ë¾|}h H«gÌ0…]̘Ϛ6È*Û”ãÐ>™¦¶:@R,¢ÆE%ö¡ITÒœ“º/uùž>\UV™oÆgXmŽÎž°%`hØ×ƒ‡Ž #€Ÿ2K|JկܶyÁa”çd¡âl&Þó8i/$#ŒÅÿ¬6[ŽP׸„¤˜:&§ßFíÔSÐk­ÅëïIòrX8z²¯§~«?¥2ìñî'óÑ?"Ãçl¢äMʉãL²­%»A û€�´Ÿ�qï�w"{û/”;£ËŽŸ æš"ñè!^<L™1‡´Úšd•&V ç“Í(q{ÆN›€4J«�½a‹FìñÅ÷?⇅‹Hm^�ï—®F@GsS¿¢#]&€ €\&|>ùð]¬’§\±K¿ý é뎞zô˜<­Ë—ÚDžKš�­æS�.Ÿ&z}ÔbdV³ ª¼˜YêÍw/ÃÔƒXUc k3,Þx§FùX �^~î}Q\VƒÜ¬X»- {ùeV‘6ãà¡“ê4yËmm�“~‘VÎJ¢”:®«Ë¨ŸµÔ.”& ë•4IœII:AúÝû.Zü�wÞ�··¦M»é¢yÛùoÑÙzë½ÏÂ~øzµÕË¿ãX‡H5[iÚ@`ÅHzrlÌYu�ˆpþF¦=×~±ELœ:vø2€ðð�7£´¼߯XǪ�¾HHØ îã�€¬õ|múe )]û+ôƒ×ëüþ¯l7ý…y¨þê e¬Ü`íŠö¥·Ï™CÚ6jä’u õÏ+÷eîÐqxxßIJ(P>aíºë~zûXåü6Í}àÙG^ÀN>[ûhœ¡ýu|Ýêkºÿ—/ÅÊõaÛQ}&Ã=ýÔ(¨Õ�A[5«K1ä| I@Ö&\œÊ(aB@÷íÀȱ3áèæ«Ïý7ŽEX ;nyˆšm¤j»ÞíÑ{nG$+´î~ðÑ+ÞUm•&ÙP‚òWÚÊXñžÅd«ŽÂS0fõxèÔ¹�«–ç&ÁÚ= ß“ &?÷4«#Lðð3=W$ÐÚà€Îu+XA&•yö¶æ0±ò#Ó ¤Rö᧯¿@fF6žü÷|‚]ïâå׿w®s½¾h÷ÍÚ6ÒiV¦Ro7À=+~ú˜tɇ°xUò5; ñwÕ&êk鯪¾£º}ùìm|Ñ^FlXñ{jrmä8Íé_‹ªúëÚ>xoAðîÛ[6-Þ5ôÄ2o³µh}÷Êì0P©úžªMÞ}ýßú[ªâ¥93p®Ý6m\‡µ+—áÃOiOîò}ïšï•ßC¦ÜÖeºúcÁ‚ÏX9zDÑW§uÿüüÓʤûæÝ�ã‰ëaÀŠÆà¸[”i�Ï#(âå C&œçPó9%#'rÏb&mñâðÌëó`§�C»ÁË¢�ÉÆ–¬rÊÃ#s†ã“¤RŸ;Õ¹¨.ÊÁ„i·!·¬ Q¬¼+HÞ�2¦ÍŒ¼õQäß·ˆøÎÃú÷¼�L ynAƒ;§i9¸w§Â&"Uí×»�d²ôɴÚZêÊØ‘=ß�r£÷§ßá KfîžÎ*¤-ñ.«Yͱ�€â­÷?Í*ÆDVë6‚ ¬Þ�AÑñÍ>H�ì=”£9{6K—.Ç>J ŽާŸ{ú¢ÓI’�ßxþžvx‡ ÈŸ_ü+ò’y=ÜBàìéMÆ?¤œÌÄæ]ûéï¥oIÍ×f ò�yŸ&$±Òø4ýÉ@§>+‡™À$ÔT¤°t!ÀÛBJho…–üýo×¢�Zˆ&˜Az{&§¦¤Ó¦±Àø18šx‚•d§É ¤O-ÕtR­‡ *Ø•Uty¬j&Xf`€g¥÷aüÍ÷áýwßC+c …Œ•˜Ú›ãð,:¸á)§1!©”ôò–Xºd5ã:Ï=ãÔa¤Sã~% KŠÏaåš�ʼ"úU¢eþ-eF¤N%óÔSO?ß¹Þoù²ýÈ x:1Éú ¢¥þÑûï^Õæn¹mÿ�“ãõ·¤ ¿{ëvR¹àV&[>ôÌo¤o*ç•*ƒAC-~‹�ÿéÇï`ÞÃO]Õù]ÍJÚ}ê¥Ö׎õõÖ—Ë¡ÝÿËöd=‰{h|¨ã…öt™Öýºi�UÚcÔÎ^ƒãŽMÊ6Õq@Ý÷¥Îá?5¯©2˘êÌB†R’–žHNNƤIT(w_þËÃðgˆ> <:š*1 Ô £f?ƈDå°I8ˆÒÜLl¨A “„³2Ó°·_ÿ;|Æ(ËÌ_0›~^ŽY3¦ÁÆÌK–­`2œ?ާœÁJ&Ön[ò-âgß®,»–:±ÖL"9B´˜Øáˆ!SŒÚŽ3ÞÖ|î¾¢ÎtĬ{0ï¥ÏÈ”O­Mxàî»”ÅÖ}ñ6ô3Ž¢--CŸyùv®ÊôzÛ1Òµ×_—¸™ {:¾ mþã÷ëÕÍÿêÏsµ{™]e'j¶_ISím›íJÖ“e®×}$Û• j#]éñh/×Û±©Ï°joi¯s5ßÕí©ë^«íªÛûãóÒWà¿¢’õÒ‡øÇÜÿ_®€t*Ÿ/ÙOÝ›smçuXF¡PتËHçªM³$ÙTò[2¦z3Ôu¯×gC}RèÌüóä ÿN( ®g©¦¦3+²žy æ¤�™6y(fÌ�…#á0ÌM³\ Kçí?+ço•—“Tq6ÛAôÔë!çߥlOÌÒ½ –M¤w�¬1½Ü\”2#±B_ÇÈŒ Jeª\µ‚O–·ioÓÉ jtú“·áʪL¯ÈØNphâžCðavTuA:ú=þ"j<<ñÝÏߣŒôƒã–nU2×$3G²¼å%U‚âh·êQo’@—zŒÚ×S=V™V7vbU+:ŒôYÔv®ÀHûÿÌ6 I%­øiÕOäû§®Œ³* SaKÊŽðHwdÐhè„fѰjDCm éxé7ŸÃ®í#ƒ˜©ØÄù Š"Ðǧ& Ÿº%A5•„…4ú‰A¡È1×AfQ3Œl½�_ÑÈŠ¸2Xl.Î:É šΜ܉>¤aœ2~+O[ ¼RËÕ’Õ*gO#Â×C°j‚”“ÅÌ`øég >NjU¶Ð¡Úÿõ÷p42ŧ[’pÆ>Iyç0v.+C�¼Ðꊧ”Ãð$Íñ)R人º3sv++S#H¥ˆ¤ŒLÒ]öÅwÞFp×ññ£¨W•�w¿[Œ‰fëñÚÂ<4¶ó¼;šå‡‡&L½ùA4@UÁ)Ì|l}™}O½½î¶( ŲWÄ8D3+Ô×ðf�Áž3†ØËf?Vßµ3·�š‡qCâp˜4‹©IÇaËŠâ³çJIµXGª!gY÷ *Îåà†é·\°¾ùÆkJ%MO®Ú÷Bk3) j]0íé[Ö®& î�_zCP ÉŒŒÓ8ÌªÇØ!Cð�7¿ hL-L­¬àIíÆUËVb³Œ¿øòs<öüóxæžÛÐÔªC½îH%(cöÙ°äòj“ûTšþ¸©ü?�aKðØ�Õ¡¤Ré¨/&èlÏÐ {J£/+ä3Xí ÀØÎDSféºîÞ [Rlwo'‚¢Q7q:Î’Z*´ÿ@Ü?ïVÄœCzmÜÆO…Ïý�_—Ì:íã¸ñ®aèAÝI{²ò]z™aªÞÿêò¬^.[-„zFEÔ®L?uˆ‰!Ѥ¤ªV´V'Ϙ‰‡R©räó©¶·Þ|›7þL½�İ¢5&:š”¢!êì^?MÍÌÑ�Ùøv¬vº\3föµ¼º7¡› �b5_?ÌàñéôÅ–í{ñÃÒ˜uó>k 0#}˜‡§g÷Uÿøý;\�ÔÜ"ä²ZÝ2mõ�ð²½æ{=à æJ�¬¤JƒÍÖѬv«©©bŸC T ðœ<:–÷KX08eVŸ¿�ã/:žM¨¹ÃÊ覲B8°ZQ»‚õ¡G@(ÁÇ›fÞDÚóŸ•à““‹'«êñÄ“�#˜T¿!Ü·vÛ½�Õ÷n2t÷áø© ÎÊ|yuÓRéŒ1 àÛ_.ù\3àvñý¯½íï[¨YùÃçóÙÇ™!„z”Úmß¾}˜@JØž¨~½üü”ý…ª½ƒƒöj¿éûòå?)°¢ãúÏW^Á�ÔÄ–Ë @IDATº4bõƒ KOo˜4c'LR¶ÿÙ¿>d–©ñì¬áàìÓë>#XÁ¨Ï¬s¡ñ g¿“_XÆì÷6®ãJwc8›ÕÂ�Ùß;÷Ÿ`¥¬f8W”Í ±3«ò�XíSÉñÍ«×íÿÿ2#‡R‰Çwãéþ“U›.̈×HÔóËž3Mù*÷¢Ø‹Æ¤?»ýþàdc‡HöåÞ÷=ÎûsŸú FG±zL ª¬³—4cK~ZÁjè Au»¿åóÈQÒ—‘JÖšÔoù粡Gêù·þý&õ‹èçB�Þfl£íK*À˵£G±"óˆòêë¯áÕ×_GÙ>J©'oÀÈûO‹¿…›q3 Û›?8L©°#Húä#wÓÕN!¤ˆ”faeÇŠ&„Ñf³³§Ñ?ŽD’‚)uà>.Ôúû=šÙ]”—ÈJ\a302�¼®´5U¡:)ï¼³>M™(§9íO-hi ¤xÌ;±ïÍ_€ÜÔ ‘Þ2**©§N"0äâ 'Þ[ÚÍØÄŒ•!^0¶pÁ¼´Â+¨ŸNø‡cÀÐQðbàP­Ñ^÷Z×å9P}G[R?ú†“òº@Ô/¨•ý* E¾¢k_¼|µôë:´e~]Ÿ)UBâ¯J•„ºÏkwníʘb3ëîÃ]ùÞSµ‡*µ«E…9IX ºÛŽr\šJ§¿+•#²œËÚÇÁ#ÿ]©f¥“º=MïeE>FûüÄßo÷ŸÈ'³ÂÇ•u^ùâH?åþ‡”ÓWíWù!>½øÂr­~kË?w5µµÔß4Gjúi¤“vþø¡C¤Rý¬8ŠñÒª0­ 1Qæ�žöéÀ~‚¯ÞZTÔö;Îçéº{[ŠÀ©�…¸°H(�KàA]:iã'M²kÍDÛ-›7`êÐ0&àæÁÃV�ɵU8r,Ÿ“&üãÏOÀ‚cšž©+Žž<ŽC Ðû¶À°ü,f<õ*ÆßýÚ ˜g¬CêKVƒ'¥æ 0'00Ç›Ï=‚á£âaDFiU”ð4Wª×• ÝÞ\èOY_�­Þmµ+þ)r‡™&ìEö”êG;ªÙ-RNDfÚI…Ú¶ûÆÖ ­®ˆº€pñ Ã=�<‚Àº†&xòÏ/b3Ywî¾ÿ1²b9À„㉡¾Ì} g¥é3ut ðÅë/�*9ùÇ¿ÈÀ£1¤R¬²,ú}ôPU’Í1ôu>ó¨±iÉÄ/K<ñ·WáåʪTʹ¢´®#nKzãñ¸ç¾ûQ’—Š"&aÇ ôAEîaœÊ©`Õj¼¬)kЗÙð}ÈàÔ�u˜ï�È@¬ÛžD†„=S†�Ž!((�ŽFøyË8™†½ÈÒål�%k·3 ª Uµ�¤õdƒº¬ï¿ý*Ê*+‰øQãÈýdS�Z˜“ÒwèÄ™h«-CEA&)ÞÇ*´ÁñVÀ'7~” ’çò©'Ÿ‡ïýWÞzÃb#‰ O>0Æ}ÍÑÜ܆èßJE{½O ÂâÀÿGnª™3g+‰¬{-š—s¬ÌíP«“ÎçÇ‘UÚ¹rëRÃÒFÙ¼H´\‰<ËÌg°úw0öíZ‹O¿XŒµ«~€#“y–ÿÂjU‚RfL¦²â=q5Mú&‘÷Pl&ö­å<ÀÚêJV<+á¹+Þä€�šd†ìòɦáJûìz6ùŸ5¾¿¦’Tö¥‹S÷-ÕŸåï¾RU¼ô£ž¨á¥ß—?E¶'}²RåÇ ¸Z_W�ª\*øŽù�Fó-s�ÄÝùœZ¢ŒUÊti2†h*Z5{”± vÙ7U¬èNkª¯7’êA©L”ýt,^Ø_TÇaÒ“jZÙ¦ö˜"[“º0y1L¬Ùø5~•*CgÜÞëVõŒ¬Y §<3†v7~"eì°gï^LŸ6�Ò(‡(ƒV ×�pøøú0·Ÿ4çŽ3}ikÈK�}”‘5‰ NÃÅÞgICnC쾇.$øyybûvÊ4õ¡ÝJ?è\½¦N¿Q9®ØØXxõ Çí·ÞŒýG’ÑX”‰ôœl ŠcÑN")³Ïƒ¬uô�Ü�Œsuð®;K÷@&ùLV*o(&¸g23�›¸—ñëè ï¸Èä[kÊáå+ö§!í¶)÷> ïÐd*›Óëµ¹¢5º(;ËB²öÖä~‘{Cl±?ÄæÐ¶Ùz[O{ºØ%…OÝ[U¹w»Ñµ°+´·-6–Ü—=ÙZÚËõö]»²T½Ï¥Ï‘—$wˆ]&Ï’TžÊó)íJ÷%×N»êWóü´óqÖ°‡Jÿí÷»€¬¿ßµþŸß“pê ¬}1Ä� N´“FÉ´"=‘t ÒlfÝ©t2ÒÑH‡Ù}àÕÞÞïñÝŽºšÎ;7âp+Ð6e*²ó3šºº&$¬\�þÁ>hè0ɤ$Ä3£Éä¾§IIºCêJ•Ãkí£c$´½Ýé�Õc—k!ž\/¹>BYºt‹Q‹3£v%0(¦©®“ë tÒù¹:m#ã,j¨#à;}|¦ÍRœzh¤½¹¶´ÊûÉç�* r ‹¯§Ä ÍÑï.üOþéEÅa–�Lmê¾�™1)ß{kîʱ��ldBý°¯‚Fa™ž#|¦ßhÔ1f6þ�Ú„ŸÓ“ÑN€Ø!` ³Ac0hÚ$žS+¶ï*Dy ¶…ÇŽÇc·M¤P|%Žíj`sV�ž@m}×”Á¡¶¾£UK‘–‘Ž�›7â\ð4ÔU�Ô7ÅÒÐH˜ ›Œ�;ay/õ³ Ê„À‚Y>özèëˆõ›wax¨xåá`ÚN¥º&”“v&Ð7’_±ù i36!Æ\>ï¾ãê*å´½s2á¹BJJàÀàÒ˜ÇÃ>, 6C16¦–úö€”¬Rt4Ô²Z¶„AÃVVà%e“-Eåï#Í R^ºº2°MCýà‘ƒø‚Aè@³Lè•�Áž¤JÒ ’ŽmE:bÜ •« ‘ÑD-Ö]8C†ÄRÇ"ö¦mèO�½±£FÃÔsBã¦(ǹ÷ð4ú ¤?N=ŠvÒ¶T#‰ÀjXÿØèÕbö¼ç!Ž´ž™ +ŒÑÙ�†wÔpåeea~ñß|ÞŽ�õÑ7Þd…¯3xéÐwk}tõ/Xe‘bVHÜ~ï}]–NcæìŽmÛ©7±ýÜqâd"Ü<|ðì ÿ‚‹“; ©[UW“ºÔ7¶ÏÄ “§cÂ;?`ÂWßQ§ÓšÏÿ0å%‰b|¹Ž›ÑÐnæ Ž®ç3§£c€‡z˜º> °îØI:á:H¦AÚ°u=̳³´Wéò½ßºÝ8]R† èX¥ºÒƒà­K‚‚‚XEéÑeÙëõcö´»zXeªñ$}„šp!ýå•£©X³y+�}S…–sÌø ðõóçKcøj¬²¯¶ÖVìÚ±›@óC¬Ž›~ÙÀ’¬s½š§§'+¸ïèÜ|Tô ß`­-b_XW³‹ïÿ΃ùüâî`�¬Ò&T6V!‘}Öä{‚aìð¯a;¾u-AÖxÑÉS›ŽŽž¨i¬2OVjP­XºO¿õ¥ºx—Ïpö<|ý€µË þ8Ç íÄ “•ɲ¶ÒéÓ\Áñ½ÓnÃJ¯&¦¬ÍÔRêzדNòY&‘¸Ð+geB�GÌÀkge„4¿Í¬íŒrüÂðËÏë¨u¬ ²*3¯ðíÇe_âØþM°wt¦¾·•²V“Q<<Ý1áÆ›.Ú ó‘àA� Ê²"˜š_ »¦«ÀŠËŒsì3|ò2©Ó.f³gLÁ,ÒÔ«Í7ÈU©@¶±uT'õú)A©h lį́í7 BþéÙçðÈÃ�ürà˜ñiñsØ�ÁÃÓ‰6¤cðuÇ–ººê}_ÛŠœãÇ“H¡~u�»^O²‡™§OâÈžíðabÉåZUUµK)ƒ@ÊìÙS/®Ú']µ»Óy�Z1H{×Ý÷Á/8”:§ŽJb‹êÀ{pœWVÙ¯d¼ËKdýêLjdRÜoio¾û"¾g•̃÷?�ØACðÂËOàéÇþŒ%ßü¨°)ìÚ³ééi¸ù¦™xì¹Ypt ØèàÖã.§M‡ûîÓ7²Àи¡X¶|9)Á+0›‰m ·3QKì@ÚÆÔ×Í.®§dÀ@…Æ^X{Üx·‰Ö¶ö!z®¼î¶è5ùéÄ`×kŒ©³'Ô¾×£ýý�ø%!•àª.æ<ñ(N2hšu*AQ±¬ú5Còîu Ü%‡I›ÿzõ-\í `íéØ~^µP  ƒr6.Ði®E&�¢£‰)p£®v;%3¼hwH«Ù›ÐXë)¸ª,ô›Þ.<4–{>ñøÜvëÌ�û,û D[K³R]¦K›V»¥�>VÖ_ ²ª>X÷`¶ö¶¯ö»Ø€ròR¿wß–ì_ìd `ËuUµWÅÏüV)"ÅoßOÞÊ6.øïêtÙ§€×ª¿¨JÎÈv$Ð'>eßæf¸�]à§‘qˆá³(�DYO^*  ÷¥½¾lã×´²ÒJ40ÉkíüœÌtô�îGUE”¸hcòÓÖ„m8p�²ºÒŽWÖoßx^¡Ý6³ÐŒ«Ý÷)íë{ã¦j’U´çkô�µ§tý.óÕeý:Vu©‹¿Çæu+q¶´Î^¾‡«ø|õ‡ÐÏ–å$¡±¸ˆþFŽ9…–¢Sxú®‰´ð;pßS÷"“ò0›Ö®„©"ëJ³�Åþ²…>f;“KÃ#C3LÐôŠ@.Ç“ÊÚ:ÒÝf) OêþÿŸÎ¤Šw!ƒ‚vûö«ù˜Di 32-$l^Oz|¿ÎÙŽžè(Û� ˜ÉŠîjDT´R)*ôµI{wÁÛ¶/†�›¤°I ÀÚSrÃ$,Z8ŸÕ®d¡b’œ4==²dñ•Nêèm¶‘ͤÁ‘1dWÊBIa6̘fhn�ìôTʘœÃÂï—+I¶hlPƒ–R&éeáèé³0ÑkÀÙ[Ú2¶ÔQj�Iy­Íhh®¦†kÆÆ1‰ƒ,Z«w&ÁÊÌü¿¢<éWu ²¼P‘ÁÈ?Ç$ýø¡hlmA-+žÃIL�Ã�¶œ-õ_)—4b22’� ùÈn8qÌO`"RRvš[Z¢�¹-J)¯cg1H!x[~×CN�577�~ž Ù"öaþã�`V,©Ð©/F[ôFJ4Œ£ÿ§5è_“N4zâTÅ6 W®ÕµX•��ûvã?y]f!%÷ ²™ä^Y]'j6øJ˜Üïò¶�­�#¦Þ¨ñ+˜4žH ©†¦fd&3öQ‡È¡7hï²Çï2îhúª…Jß(ô쪽$+ˆþhFJ"ÿ“*&`yʤ_ÝV¬^£€¬’œü{4é[e¼‘x€gìÓþZíÿå\Ì‘—ÄEŸUÕæÖôÏÀ¾“¹xgö=0 nAÿ[ŸÃú·Þ±¾A0bšÝ SSRZ3.«…$6!ñ9M“ñ©•Q½Ž°^˸ /9í&¿Õiò©‰m SÆ7íåäûÕ€¬'YùüÁ‡²À!¾ûæ”$~›Jós>óB|á¢ÏO�D_ ާòÜX4ÕaÔy‰ o_Œ=–€¿=%Ã"áKÍÆÙ9Ê*×Å‘v÷‡ÿø ¬X½nçDí÷ƒˆ§z2¥9G¥�lÈBij’Ÿß€áÊïkñfH‚K¬²¹¦rÊ= ö‡Ø$Ú÷Ó•G˾U-{wTŠ$¡¶í%Ï»Ü�ÿɦ>'r ê}.÷º¼ÔçRæI\¯™4ÆXì6y¶4û f9ï'aOÜäZƒÍrŒ=5¹Æb/jÿg »vþnqÓžŽé?5í�õ?uåÿ÷«�I¬ž¾ …êRXÕéÒÙ(ÙSÏh:‡ëÑ)Jv樂yqNÅ!U—‘ßšshW:�Ÿs3PÀª ‹¾N8y*��ÛÍ Ám[ö`œnaÕÞ3åF®F%𫨧fh)B7¯PO� šÄø©ÏËítt¥C•ʼå™t6‡P»•/É6–ëc2x¨‘t´f­9èhg£HF±pÊÛ�žŽÍ_¿�—.Æ„;îe•�=¿è¶Òõh´›9×R78 ï=;ñ/}‚ûÿòаÊAÉõW¶Ýgl<š:�U™ÏÿI:ù¿´±tä·Å¡}hféŸ7m…»(¦Ý÷ ]½‘ÖØ‡Y§^È¥˜º³K=ÌšáïBЙNÁñC[aÓoÂn˜ŽÌ}ádm [ï0ØyGb )ëvïøö®È§ZÏG”�Z8èÚÑQ2knGØs/"ôÉ·`LgÄÝ»?ëj È¥A·2 ieF¤âȇ1µãÙe(cë0V0 ±BQm;/¾;Ò²ËálmŒãYE¬, aõÂj@¶AïÌÂ~ÐÉèjª×!»ÃÖH'0aá!ðò¢èݸñWë`ù²oŠÞx:K‰§R7z6ùÊ`BÍ/fU ÀúÁûïágRU%¦¦aËšä�6Ãý³C§­ 7?ðŒ KÏPxG£¸ð$6í: gÝ,ÒS�–ut *1{ÎÝp Œ£ãd‚â‚TdÝŒ¼Ôm�» �Ìz-Ì< oO:[ý`éêg:µÎÔòsdÐÚ/‚Ù•Ô…5v\—ÿ¸§®ÊkÁêMXÝ1¼¿ÆéêiÙîÓ¦Îz“¦NÂ�óÿIÀù0d°*úèÎ_X=bC ¼ÇáÖÑÃoÀ�q³`O�‹¸#©�WŽO¿] 7WGÄHÎ&x¿sûzŒ�� ûàG L¿i3•gPúí�\ûú2h2yêt 1B™,Hmí}ÐÐØAúéBcF¡þ=Ìî3ÛÖ+Ë(t8Ò÷|¹®†rZ¤ef‘B1 6Ѐ¬�¾Ê²ß,øáQ@eâïô¦1b<éÎ}mÌlv?C1¢z»Ú‡V*”R Zü Á _‚þ M˜ö2ÚߥJô–ÛnS´rµ§ÿ/}/ËJ�•4Ú» î²âÕî–Ð7'Uq ÌÐQd:ûËZ¯ÀÕÞ~oÇÐ}ú_ßx†UäÁðñ ìYe]´ º¢„ÙÑ]�Ÿ˜ØAt˜©©Ìcì dí¾ý«ù�’’„lÒãY0�è,Áz& HëAöõ?~÷5n¿íNÆ3q~ý5;•—9—WÛÑCÛ”ŒùÝ »�‘vZÑ'W穟§SŽàßÿº÷<øü Ȩ:IGw­d6xið|ÈŠaÏÊ�zêš°ïÐQøz¸bÇ–µÔ«næ7 ÀúøSÏ¡è\Ï7o¿÷\8žJÖ·´¼Ôã8rèï�Àß¼¯ 2iTPÏéJ@VKŽs––öBн§v:™´ƒ™ixŸÕ„A¬Žd‹úV]VPÅ^ÄðÙ÷?a_“oÐU4š¾¶+:�…Å¥W²Ú° ).f“\0xð�'8Æ»+�ë ›Ö*ÌýIõÑ/·‘íãã÷Þ¥Ö°»°F†i*Bäü*˜ì²ŸÁTS3S÷̺¬êùß2{6«v\•gÍŽ÷FS uûH|$=aîìŸôZ°dõ°:xßÖþ*à¼�É$ gÁÀò·%Z-æ3²ä»…ˆ¿a¼zØ=~~·ðK<üèã=뽨‡|Ç�Oò¿p�¹i3lÍ1|êƒ�›ö ]ÝÜ~ç¼Îi—û’ÅêyÚZë¨ÁíÈJ.?n— "d¨a¡ØŸ•ROœBÔMe™v`Mõÿ.·Ÿ_3_ì"Å^¤Ÿ£ÚHŽL4€Umm¬æÐé0`LN‡zc]›à@ú&¿²ŠU¶+ûßJ‚Ð×£©¶ zNÝ÷qjíôILî æIPO ÞñSÛŸS›Õíˆ/(Ár±1¥©ç!`­ø©’ø¬©Ê|“ŠZÕWÖªSº†Ø¡×ƒ«1üóŸ`@ÀJ(‚»ƒ©”¦½¾2áo ÜfkkÁ5ÃÎ¥²ÒOâtj*êHã(�î‚‚B‚‹ÔÊ´¶À@Úê&¦XÏÊÇúî7²nÞÃ�*«¥\¯XÍíè@Õ–S7ZÈ 4Ɉ¸É$&,¶§câ�·)´åT4de·¢F݈Œ³å˜2a<««u¨Y\Š/œ!`÷åWË‘•–ƒ#c‘»u 5A­¡ßT�„uëQ––7ÒXê’îÊŒ•œnÔU€u÷ÚáÜ%‰»¨}]ˆÝ [XROñwù\óÁƒ‹‰grOÄEûyÃD`ÍfbV⑈ H¨ÝŒLì`gmIŸX�Ö§á0àŽlOÀhÊÊxø)öfrâ1´uTÑÎJ¥n¢»ö&?zb'ÀªÎÈÉÎ� Ùs¬m­QÈ{Â5v,Üh­'»’�!iâ=éãû3±®·L„Üœ",[øXgR3�Á2MÅ  J8›ëÃ�r<}ØW¶$1aÒ¯¯[K)ˆ]±ykÜœ©GÈ„Ž¿ ' P×nÈ1Ì7Ž€7?'“ØéC0ó¢�M�Õð¨¸3æÑφ *d]ècî $ø´2aeõOßaßö-dí*AÔˆ1ˆˆˆ”´DÚµ¾(9W‚¦ê| žy'5k�ÑBºä]{~VüoG&DúøŸJ^žAZÕ&q$y毴ŸZ¼ès®Êç…ööÕ4§~ðp Fˆç`¸¨yÉÄo ÅÃâG^ÀÚ}Ÿ™Œ·•4Î}õ¡×VO njÕ¶3C’Ç(>AOMúN‰éIÿ#cŽô�÷‰#põjVÙ¯€«†}Ú±aÝ DDÅàý�?TúW2U\¯–jh€°'þ¦ÄTPÇéíÌNíÃÓ:9y]hšXgß¼xŸ9ë±÷ཻg#;¯Ëêû`ŽNÌÖ.å8pF{à=%×RÀ]‰›JSÇù.�45ÖÙu_ʬ.o²\w€IÀÕ«XeÃÅdJáÁ‘åí€/q`Ö[öשׁki1rg|,çæq�•´²žö9Èoijò”œƒ&¹ýNeºúfNö;aH²'s_ýc·C©Îå=¦‚_³ßùÞ,šØýå—˜;4Þ§a2 äøvìÛ�o–.�3m§M >�>“gž|áE˜vóóŒ Z0}âhämýÃò8Bݽòiae‹Á±ñ8Îdÿè‘|ç_Xè¢I<•{_ÆïÀ£áM¿ÊÝÉn´ÓT€µË†®áu¿=]Su7Ò©6�<—Ú ©ºLoŸ²}ø*÷î0Ò¬rI;”ÿX®½z¯ö¶þï1]’´ï}õy� ±QÅ’—Üû¿m]ºH)|’ó�k×Ó½y½ÏQl¿îÿÛ¾AÂî�1ôÚö×û<®ÅöÿY¯ÅUüc—½2�iw*ê = öRéîèp¢ÖÊÆCuøÔå¯Å§tªCß[¤X_QÊšý»tìŸ~ÑHŒ11À$K:ëRÈdVÕ’:0 töIw³ÿD[´chjFQX]‰å‘â ø�:™£¿w‡FÊñË6;�T|6·3J#�¬è>J‡zšFt�w š¼½Hñ×E�[¦î×D�&KêÞ£¨õ„´ýØ»kœÄ¢eûzK±…®ãTM…Qu[&Ür÷E—òQ?|õ&3ÏvRI©§üOrŒ®ï~eTVSs;jÉÐÑÞ2ȨI ¬¶èðØúÞ2µÔˆùëË1›“4޶†0f%MdT(r“qüÈ~ÜõÐ<%¨µ~ëVƒÆÂ¬£ ‡V,EÔÈ‘\Žt®t “SN¢´‘ŠA+ÌÚ`é;ž‹^ÂFå¸�u�ÜÓЇ:z6ú5¬j鋃Ôuh#�°)Jk*Ê0,:�ªgàk¯‹ 74µ£¨¼ ™yµ¨>›‚Ö’\æúQÑO§/«o*I/·‡º±†Ì°g%ek>öGŒG¥wš²:o0ÊuÈì%.g _Všž)&]G*9� íPU9&O™Éê¦zRúŒ¥¦¬©}óYQ« ÄîÛ·Ï>ýLQ‚sg+™ÉßÄêV{:efè31Ã'bÑ¢oñÒ¿–"ÌßEU@Jv)ûRgô4òÊth¤Åè Ó•ëPRt'wSûnéñÄGpr€#)x˜!·sÇNtè™± 6Ö¬>5m-¦v i¶nضzª©·àâéÑ}ÐÓ„k6cLL$ÌHOÔÔ@ŠN‹žë2-/¯‘Á.He�—ù”xúO“:‹�ŠVÖvâŽÜ‚sÌ4Ï'0†Ø¸X»uô"0~pÔŒˆ‹sI`giBÇ+4ögÜDŠ”-KYÅLŠ•nÕ-û¶oUô}ºÈùõ �Xý¯—1°¡›+ žæÁÀØ‘aøSòYD½þ>¢î|Kt°íd"6¬ÿ©iéx{þû¬È-Äò•Û0iâ(:®¶ÊHfFJ²ß»©Æ½1â([ôƒ�¾�BÕGÐÃ� øåšè†Hujy}æÝsÏåÿc>¯€¹£{'ÀZÎ$q†ôYEð¿ÞöíÙ�¹³nÁø‘1ðóõ%%ºŸ¼8ÿ…Ížý�)«äu%­¼ðûèØ9{“öé(ûàl̘̤:¦ÒlyOD�:ª’¬)|•gOqÃbÏ;Gí°~ú%K \I%ÚÕ¬²Ÿ[¦ÏExèà.«Lpµ;À*ÓŸ~’ÔN¬ùµkya6uµ-e—m¥¥EØs`ª«XB½ò�HÅ7’t÷õp4ëÀ™¬,<üð]8}" y�Ø9y’6ÿBpãÆ›&¢ôì è·× ¬¦ž•ÑJ¢ÇÑ-«p„ Jþ œJ³¥­1eÆ ž'cͪÅ'F(ÓÝý"QÌ ˆŠê Úf¼÷q”ß:} áëh OéRÕq¹vüØa¦fƒ²¬^;FeÖÔa¤ |\YõÇÅËÚ/D±Yîš;GÑ=;›q•¸O¨/+YQ²»¶ã›ïÉNA0Üù|ð,ít2A¦ x{ËYöú u­’ë~ŒR-y%k÷õzú}˜÷劔S˜0óf2W A³ÚÿöÏ70‡º¬ÝÛê—;;Ø)¯îóä·Aû«­b€56&ºËfwÒé~ùÕ`úä›Ö/õõ刃PÓ‡ÆÆdõ¸¨‚µ�¶æ�÷ÝK[†”õáÊö>þl�òéÂÊ1µ¹�¯–Ú·ÿ í&Àý´Œø6&�ôå|œé Œeë’*¿Š÷^(’3óQZÈ$>Ò¨]ª�KÜ ]cRJZõ¸½Ôºê¼�?¯FA^.&2YLh3/Õn¼i¶2»:û�ò©Gɉ«i»˜8™›�Í`»g—ÕÓ¾ÊÊ9�á±£HKê{W EªTÌ�¡æó›wÜÿk&*63ñӫ˺…góH£XMÆ–®ý©è«W0‘kܤ›�UVª¡Öm~âøõ�/>™�ˆAƒqÓ�š «ÌßG Ëïî@œL»­§à^my>mÁ¾hm""†ZÚIqlv-v§l£§}^«�«­Þ®WŽ‹ÎLì�~ƒÎ¾4ÕâÏi'ùjW‹¨>eO¾¦ÏÕê YNû?ÓFÛ•S“ïþ!¨"@äÏq¥ßkŸ(Ó»9² %¡ú|uñ¯¹.}èséò%MWO—Ô©&Ô½;…Ò�7`9°å4760yV�}n<°›:ª‰°Öm¥1 Ö>¨×3';�NR»RÖî «$¦^€U=Ï0Ò3ú†`@Ü(&rýƒG“JŸ}Á„¦Þ7¿`z#áDZí3å8Lªõœzôè)æsv&#UƶƒkÐ|úœÑŠ8ú‚r?¯ýáÞ·co~€t�¿¬^Š�6á¶ûæøy†LR'Ié}yŸA=Þ+ýÌ<² Öζkãâ[R±wo{þI±¥ª‹Q|zŸRýe~^°¬(�~^5ó�©]jlÆ×ËÒÒ'�E“úŽ?Ž»fß„“üïyøO¬Ý÷©þ^üýwt« »Sc«Ø²ÐBMk;+˜2yÉÅ+e¨ã˜é䎂£o¿ó6V­ÝKsc䦧�j~n¹å|ðùç´{y*&&ÈNKA-&*Éä1sâ`jºz¡´²–± Ê­ †!û™>:˜5e,F°‚ÍÑÁ />ÿ&ß8ñg`øèq�vª…=iÀúw2(Ø0Y{âŒ[1ëî‡�ñŒÈõ ÅñûLÝú�øjñ—8�· ¦ôÕo™ùŠË³‘É$m½­Z�MZI¢¡|—7õ™ïœp™/‹}A)˜¨«Y-Í4~tn>}©ŽvJ?hÀŸËìö’³%áM§�ö“º5·°%9¼–ã{YåœÀÑšM«1I鵋.¹ã+˜YH}èW^ÿY¢‘›Gíåi=±Žô¾¡„�LaŸ`i­¹n½/©™3nò<ôÀ³Ê\jÌÏÕ�Ùžb±=mO­H5¢…Ãä™()+Ãúãd˜#Ív£™þDýh¹v*{–št#Û—éÚ€–\ku¬�å5×¶ëµï~ cT‹\džÄn5ÿY÷%¯ì·½½}€U¶'´ÉòŸKáK‡³›‘.ý€–C{•xµœƒŒcrÜ2Fuo*(çÛÓ|uy9í{L½®Söe²�‹HbÞÿBY\;bÇ’­ëŒ`?pÏŸ^ÄŒyO_°ÓO*úîS´&%Â{Z]=aåì©î²Ëg4mi¿(ÆYÁ*MÎ[M.PÎmÜTØö‹Tæ]êmÓ– Êlk« ‰²—Z¾û<5v%÷…Û²omº\Y^þ_í{E¦i®�ð—cïíP·¯Ü{üOÔ&ÿ�<Ïî;uÎæSl]y&H•Jyù­L2¢óü{;ÇK±¬ÓH•`9MÿõÕEI —ZÿZÌ“ÿG°y¦ä8ÔgGÀÕÞÖ½PêÆõZìþ¿n€¬ÿuÉÿÝ’‡KÀKíAQÎF:>¡’¦>øÒ±tÏæPà›‚-¡ý=ÔLYÙ¦p³wß®ºü•|jwÌÒ©Z¨½ Žâ\ÊñI&ŒýÓ/Iɽtª&Y¿ú¤^ e¥ÄÄI7Â)ˆt±©yXþã÷ÈgV©ï´~–Ͷ&gÁŠJ0L˜·XmhKÈÆííúƒ‡Zº¾GÀ’¸džÍm W9ÎgîUJü½ž| 섵;ÛâS{`jÇ`àù¶üñþ°ó‹B}vÚ@9T_�"VÒ$Ÿ8Ê ]D‘ö%�ÁwVÒn4è_Ÿ ‚ú�=5ÑE2«.Dã·ß(•¶r®R…CÃNG*i–cIß±Š×"ÈÈBrq J˜­ÕACÕ#ÖqO¿EœD÷…Ð5±„‰…;~úâ-L�4Þ‘‘ð'EÝú¯cñÖHß»“º£†h«,‚)³²Ï!'¿ˆT¶¦Ôem€)ipL,ma{ìb¼�=p6©äPOúà,ÿÄF@µSÜÇìÜJ®E(dåg˜‡1­%=L‚µ{N10hͪ^7˜4!+¿¤ ¶±²DQ«ã�Ƥ�ŠÂà |»ò(†tˆ9ó‘òÿØûÀ*ªôû“ÞCH!½Ñ„4B•Þ›Á†½bYݵïZVE]v@@EéM:„�BKï½÷žÿùæ1áåBDÜ¿?× “7oæÎ�;åÝò�ïœ/»±çâaæá ËPJM&cÇß3ׇîã{`„e+~f|ªPŒ6_~õ#½1�¡ß$r=”ˆ"‹W�,H#³€Å[±eãN„övBbj:,_n@7sÐ…g/eQÚiêtÇPúcÖXo¼òáOô¤—­™>ãûNÁw{bà`×ÿxþå–Çgaí€.A0\³E¯¿Ú2ÐsòðATxº÷f\¡Î–ÈaìM=;zÃÒ@gßÕ�r�ƒ: °Êɦ ¡W��ⱌ½Zk/á– i­ DF™†Žš€×ÿþ0lÉ0àþÍ›× #ƒïã©í”¹Ê‚•÷`E¶XëPÊ8§+’H6ŽŒOÛŸ/b' CàÕ—=˜YXséÄÉåã^:¥Ï�Žfì�¶å8«Ÿ¾ƒRbáB ÍDÆ%šŸcü<±#ƒqÇ2’ÀÛ„ kYe-¾_»ƒBú�yeÏûÔõœè?÷Ô�d—ÂÙÍ[©j{k$ÙT®.7n„Õ¾ºëÂN—vK’êù/ ëÚÕ«ð—¹óïÒ=¤Íï_|û-Ž�"ã-]ìlñÄ�Sñò £ñÙ€õAmó×F 4ùªŠraF€+.>‘d¹4”;þOÞš,¾‡gè�èïŽ;'õÞ‡wööQ¦{ÀÐáÈ{ÒQ€U*ïNƒMü(Œøésæ+ñwDòH’+ U’j(é$ÉËÓ“Rg¹Jìiù.ãµÿþ~å Ù¤H*+À?‡×;'Ï­ö4öSZ³Gï¾8v”q¾sðÝÆ�('ÓÐÄ@•UOÙzа„ÅË?%�Fv­£¦]<¸Ù ÍÔÏÙ¥F9j¢rGª+Ë‘_Z¦€¬_¼÷cŠ'Àƒ [!™�bdêAƒ´š,©±aëvÊ ú úä)²³àãf�?}Š>F’Íc¯f½æçî][éÌTAöÌ@%Oì©ãP›ª S)]]SO€ÜžÎ+îŒot oüã1¸ØšbþýOðw¯¹–°#èӦϼ�J”ǤŒ—¤W_xŒì\Jõ_Z·mÙˆm[·¡¨¨HÙß™ýK[©¶P¼ãiþ« ÃcÊÉ"©±¾‚ÞñÆ8}‚uÒŠï,z[‘ÈU2\þspÛ,þ×ÓÃE*1äçâ—ƒû0yÚt ;­-€U]¼ø̘6U»¨›¶. VÝ$ ª,ɼ×ûçkغk žzô1\º� \“ì“ôŸßaL÷[”u‰7Ú½{Oʾ}…Ô´4 »åD�µ�ï`/LÜVd%u  k['Æ �wÞ_„`†_H½p±TT9|�JV´�™'�‡s››Rjyv"ì|û·Šã¬uº­ú²þv�» §ß§ƒëXN�Õ˜#rC¼<ùUÙÏìû¹ì›œ¼5Î º~øv%™X)dw�hµËÇC˜×z i¡1Þ&'§0<‚ .Åž äúçðäXÑ+d¬9~uíáeËÈôÑÜuŸ-óyûrܬ•ê(›uñNn\�9Ï@§•c”¤•C¬Šñ_ –º_«Œ7ñ‹¬ñ‘?£k·ô±0'¸j{SÖŽTµ¬4�@ EG²¶Ê#sk™—JRÇ‚­2ð‹»}¬ƒ[1Qeü(GõX�r�î¡m~—¹°Ìçe~¬m,T ÎR¦QåõÃÈD¢ƒ¤åÅóŠQQžéÍz®®&\ŒG8�I‹ôÚ÷ vmù�Fvh"°—”†^Ý<áß·/er3ðíÊeHãõ§Ÿ.æïÇ 'àPF5瑊²=|é©dˆ†\=(£Ôkmu%-Ú~FËÞ{�ʹðî©qPh󯵳q-Ç?ñ÷9aÖ\L™9�ŽEöгŽö!ÛyÏ¿~ëUz;[ (#CF†26y%ê :ãáY£qÛ�Ã�ªPFîtìͱÝ;aV™Ž[f±¿òèFFëiìYû%ÇÎBj>UŸ*Êɼô@’hËh+‰#‘ôCTyVäxÛÊ£»­†¿ód:Jï;p !ÕdnÝY]%¡”+ !á;Ö#'#�sJª• &�jA'^kdÄŸÅÑM+PI…§N]\_ÓG~þÑlçšš¯¶±dûÆ0öö©èh>×OñÌKW!´}3„€n*ÌÍÀðQã`OÖocU–ýøÆŒ™Æp2¦èda ;o�ù&±8{ù÷glo¼ü÷g8wMÓÏ<‡{±!›°—cÞ/–ýˆ—_|–cˆPÔòúÝè8“\Ò„×_zæ”þåà ÎómñÒëïâ�¿Êز¾t ‹*}yû “[Oøx¸¡÷à1-Õ¥!Y y/´ÓÑðdkÚ)¡DN^;õêÑ�m·í3Ü/A¡=лg¯‡ñ­àÀßßeã¾8þi§M‘+p1ó4zº^l‘ãFM˜¢¬§9Ù¹} 9�¼‘töâ>”–çÁÝ¥ï�ÞêY›· �%öQ‚5ˆá+Ö¬[�åK—`Á}´Ê«ýEm»´·Iû%÷*�¡ŠJèÐÍ>ñ·$'•°š[˜ÓQ¯=/3 ;ZæÁ_¶À“Ž„Úã’öŽUVÉ#si«ÅÆ(vT½¤K¥u••¦í/û¤Vç/ò½øáÙxýèiX3Öhh/{Œëm�¢½-ùÄV«Ú&¤O±¬™ øÚjÇ ÒH_"D— :Ç4v郂9 ãp¾¢ôMR–Ôµ¶²\±ÁêÆØ”þOì!Â|Ô®§RH;ä8¥Ï¬NOVbﲉ3µðð‚^N†Ò7jT®° uË—ï*x­¾+j±ã éE®OíóT{w÷õ{¶¸&Ïw-µl¤mɤµ’|KŸÒÚ3g «fõwXI`à=íHÒÔS#'-¶xIjÝÛ;~ÏÞÝl¯|)oÞzx­cä¥\•-,ÏZÔUç.yGTij7ÈïP^Õ÷H-[öË>5�8Gè^oîm£O£®¨§b U•)e_G®W-ã÷ø”óÿu�{"ï’üÞoVùw?0�s+Êüsi+©ÏYöÉ9E\žµ8IÈûu½z„Ž…Á¡¡J U�¤›Ûºimûëüš; éìþÝêiܘ“}’TÙ!Y—¥trm%é`%¯v™Ân•¼¾Y�«K[¶±M-C€L:ƒ³Zå’zè6Ô­2\þ"�ªÕ¤ÖOý®~®Yý½¢÷_\Z‚ïžE‘qúf–a �¶Û >ýåÌ­-)µ|òÅNãÿþªr¤Ñ—NF-SaüF)u{èñ’ó–úƒžýû÷l§¤ØdÀziÖ(ø<ðb˽ÌO8{ßD~ù:Šßz1”a˲udðõxÑÝ n/¼EþMèyæš8q x`!ü´$bÔºë>#õ¾É~¹wVoAüÀ�Ü#*‡H�Õ4]ÑŸƒú’c+9ÓÂûö㵿½€Œä,Æ6"+—Ò79™Å7môÊÉ *ªÇù‹gñþçP¦¢’Òóp>�ŒôŒ{cñÆ €±�¬Yͺ2î¨A`ïÚH8sÁÃÆÀÒÛ„ÓiH®íФÜZŒî¡‡ód #ÕÛ“’8FM¸Ô© ¥¢šh81¦<�Ê(]ÖDZgÏ@âøuõô†Ê”‰T�±5=zãP“} =Ç? ‹jÆí,Uâ’¼÷îûxþé1{Îd,Zso?à„qSÿ�šª L¿m.î˜<ç²ë1}ÚX¼óÖ+|VÓZÅE(//`Œº/àÝ´‡3ìé=œ‚ éµXxgòÈh´¤œ°-JËê‘›vžqyJ`Ž D§6bå3®(1‹�'S0•¯“Ç�GJÒ%œÞÿ!CÓvª•<~2®Nöß¿ÆÍ�¥cÛºµ+—"%9Ï¿þ Á¯ƒÈ̈‡)Ù,3fÝ®…áƒûàñgžÇ�«61$@°Êñ�—?lÙ/+'OR*öD$zxa«í×û²Œì”[† £œz�–¬ß-ÿwß÷pËwY™3÷6<õä3J¼¤ûæÝ‰G ê5V*2©®^WúÜÅŸ~¬´­ùƒ»÷è¥,jAI‰‰Êª7cI�U¥ˆd¼¤¹w,PBÀZ_™ÃØï%XñÍ×XüùR%ߤ)“°cÛ¬úá{åû�wÜ…æ†*l]û#Výø YP“sž17+*±sã&%Ïöí»PPQƒ{æNÇÛï.RX£Æ¤áÈúë•<ÇO�Fh`€²þßø…÷?|±d,?ýØ“xüÁG•Ó†s¬ùÁGï`ÃO;Zª1vÊ z Al�ÃY\B">úŒÏeî Ò2ìËgbãñCd8QÎÛ‰XµoïÄ%§ãѹcš¢¯RÀΨ�?ùÓ´ï=ñwe{Eqã›(Î_­2þÞ_ë¶u[§Éa¿$ɉì«k¥¢ül²äZ�Utó~³|¼<=Q��ŠÆ¤CÛí÷>§›í†¾—d£–ñKëšbî%Cã¯DµšØ°îD‡>·_º‡·žCëÎmå¾6ÖUÃÀØL¹ÅmÍuÕ1±:ÿT2êüIK¼ˆ‰ »±lé2þ¶†({å8Iê|CÊVç²²]ê"sÙ=É)p"{Ò³¦–i�=@ö«IæÕmmW÷_ïóýû_d«�¡ÊD²s21lÜ9ðtsÄŽo#ÏÍ]Ø;±iú a�B•Ó””U*ŸÁÁWƒ¬ 税”‡^”\l+%“‰$É‹lÂ_›N�:…ˆ�ßÃ�ŒL¿Ð‘BéHÝtéb,>ÿÛ]h¢®1�qëK aØ\CéúŒ :Z'¤æÑ¬‰ìü* ›8 (©:€ØF¶JqçöoBFR*ê–ÅÈÆûw¯cx£1xè¶qH*1BC}�’o0çf_/ý†ŒÙh¼ñÚ˰¥ÓA~E=šù.u&{3›ìõø ±0ÕË`ÌË9tBsk©nE~:¥˜ Â8u§£³¹¦¦e§ÖÊÅãëabá¯Þ6jÿƤíAæè•~V² Пt½û % çŽ’LÆ�%,sdÓ'ˆŒ¯ƒAs#%€C”vxæÜùZgЬ À. �ƒZ�?dïŽï ¶ÓÚÐØ tÐ:pÇ §àÈX¬½ú#+;›m¼Ò2òŽ. /þ‘QÇAÇs÷Ń�?©9‰Ößמz†€„B1hØ8¸v뇬ÔžEâø,éâù³œïþú÷D=M)Ÿ½ÄW½Ùébæ)¥Èž.�ÈÊ�‡³ý•qK{ç�Uœ¾î} ãròí•w­}_,Y†þÁAÊr­<êöe_…o–|Š.îÝ =ôÐÃxê±p(â´š¥Õ§´UªM+†êfŠ—4cÍv©ÑSÖ'�҆ʗßðçbÜy*d�Çô)·!‘òØ>޻ϿᔭM�5²”ê|ü}BñPWm£­2i}‘¾A’Õ ŠÍv%¿‹Ì…�)ç&‰Ñ¸eà e¿ä)xIj"ý‚ØyÛ:‡šŸ¡>R róÚµë&ÙÚbIÐ,Ú·M)_€J0uϧììÀõyK9bÿm«oì@1-YäxIjY©³Ç(öfÙ&}¡Ú_êÚlÔzH>õžÉzGR¬‹a©ä“ç(}h×gÿÕ![vGʾyÔ±…”¥ûüu¿ßÈùÚ7ÈsPï½î=Ñ®�œOwÿ�Ôáå˜Ï¾úO<òt›—«Þ×뽿òlä7«ŽÛ,ìO¸ñ/&ëŸð¡þÖKZ¶Jc�ïêèÒ¡¢Ô™vfiD/³3•ŽGé5Gâá£jók£ù‘þSñò‘írœêý#Þ)ÖϾê(Û~mÏñR’ãt½…®ça!ÇÈõ©¿ª’lWÓøñ•AÓ·4¸{ØìÎx`n[ˆ�Qs‘NYÔ3gÎ`Ê?^ÃzÈú̾ÃÔïö{Z:uñ6o(Õ«P¼ÌÌ 35>ÑÆkú=HIMFtøA”æ¥áô÷+ÑoÐpYò%ú>ý2ŽÄû‹^†—(>àçÎÎN0ññBU©z;ä<‹rS}8Ð ¯iädÜÊx—®KÕ”øÙk(x÷uz}ËeL“.¦VU–ÛÈþ×öï¡åP9ù�{÷ZaeíÒCûMkÓ(¿›™¦¡|ÞÞÍ­Ôñ®ûL—|³ÙdLˆ—SßþãacÊ ÆéßOa'2I÷¡�‡1úÏ}E�#·l…ïUzY† †#=û« ï,-‡v®c<Ò è9Cß1}»¹CoÃÇ8ã6þ£(›hbÁ Ù»�t’ñ>“ãÑ?;Þ©i8�Œ’ìj¸RN‰±S²Ê-PYÕ„{Æ;âlbì(/lEéÜ9£}áÚÕ«vE‘`…šFrOÉŽÌ¥„’I'z “9ÓÕÓ?ö0ã½q €Bôñq¢×¥5^ýç«4¬ÎňA¡8{&»‚+Y™YùÈÈäµ6“±ù¥­!êÔ9NÐ!6›ìƒ®¸{æl…9.pÎÖØÒë÷Ìm�qäp÷±C/+ 8 M˜æ—�&§áxèÑ—ÐÝÇW¹ß¿û"B†LEm­1%‹ T÷R~+Ú¿�ìü|Ü7. þ­äÀ×�ñ]«ŠÏ0¦¤='•È$Û¸$?‰±a¼ÆÞ­ž§ö—%˾áW½«@Dí<Úë°.¸g6âoÚ›áîÑ�Œž@ÆŸ±¦!É é8àÌx1ÃÇNÄ+�݉^ý‚aÏï’ê)Ÿ’ÀIü¹s ”šŒRØÂÞ© $g&'ø5|9|÷Ì—º‰Ä°šÌ­¬)³¤YÔmòùÍòo‘¾c3ìsZÇ\‘}ó¶íF (_|ñ!5c 1³gOxmüÎ{7•šn[kjbbˆÃÅåðâd¨™Á’Ž„…‘±–�ø„x²´§*Û´ÿ,|ìþf²––×1ø±f’§]¦öºq’q*ÙŸ_Yõɨq£av�Þnnë͆¦v ƒuâd:$Ðl†»îZ œÃß¿>ÿê+:†1æ}S�ÊDYÃ…z�pÛŒ[áÁ¥t,«©«GA®•›vc.åï?ûâÜ1ÿÊ öbœÂÛZ껑lth jÍlI¡¼¤ YüI‹>ù”Æë¶¢äøçþù|<=p)þ’ò\ê¨ÒÀ¸ésÙv¸tÕÌ?Üè =wö­Nw÷ü;1|¨ÆÑEvt&s²;…;]Mw>ú<�£Êp4:¦Œùuô ÈŠ:Ÿ†ÜôTŽÝáÚ3ˆá ‚P^‚ŠÉø×âåðt¶c¬Ã%”á‚]ß.†%c7Á¡CÔ¢¶•!CUüדþµÇÂÚ¾s;ƒŠ7´v¦ÚʵR�ò¼¼¼°bÙ L˜6cØt$y{zqÜ:�,~×kfsÖsëwŸrÜé _†:ø£¦ó�3kÇæÀ¿õì¼²vì7¥žKæ®ÂìP“öܶ¸ O#ëÓÙ¢<*¥PæÜ*ûTŽ£Wç›Ú2ÁjYÚŸñdûºw%Ø•ŽAƒ5¿ªó )G`•y¼:> KËB7*t&³LŒÀºóm©¿. HûÜ×[?}î"zº[£˜’ßf†Æt„�G)pÊ_çf3Þ£û{Ü{ïlXÔåÑÉæ ~Z¿§#³M·#sþMtëÝ›¶lGAL+*O©×—’p ½ùFNÐŒíE’ßž²Ç’RãΆ@¥v•Yn$I�2ù‚ÉúêCùW5Uç*¹°¾ýÆk0 0j\[J¦dÃÓÔ!>En p÷ƒw3fk9*)�Ÿ“]ˆ“§’àæ4íh(ŦŸ~DÔ‘½0¢ÌhIjÜÈàïÞÓãÇ´·Á†MÛñ¯�¾¦ónãŠG¢owOŽi§ÀT¿Æ 9 Ͳ =|ø®¥§!šÎÛ¢ÚRÄ÷«ÿ° ­V©wê‰ÝH;Mçª:xöÖØ~Y¹ˆÎpb'Š®®N(bÜQƒ¾ýñΙ$Ó˜éÙÙåæ¶h¬©`\QÆõ4AscãÇ™ ŒÞwéͦ°£7æ‰cöÐ-“b9¿èáס¬;Yׯ¨¨)8vÄF:½’ìôÒ¾q”�‚ìshªÇ¿ž}ÞÔ=â°ZÕ–Oý¢ÓÓ5Ðu÷DVa R'á\,'ZÆèÝÃåÝÿ�Ôs(£ÌZc½Þxî!<4½Rs`ÏOÞž.˜8`0§zˆ#Ç�`ÊŒÛaĨ¬¦}|]ÑÙÚÙo+Ï£–ÒÀÞ·Œ†aJô0âÌ1X0n‰9å‹-ë‰n2YVU’�X ƒq3±tõfbE�8“�n>Îxöé‰È(2ÄîC18_N ’§Æ:xi(æ}]³~»2Q‘ïo¾þ:ÌÍÌ‘“|=);õ4ßÅ©Sg �qg--D Ø >~ý(�t±±§ðêK¯`#$%g~Do�8›gaÛ¾Rœ‹‹‡§£)™¹Œ{e�ùsæÀ•qV&Þ:;›öRtšM0yÂ(¤¥e£¤ÒAý°ú„)’²Ê0zÔ˜–û=‚’FÎî={ÔGYZvh­“Áª&‚—¦–V1½øi¯lΊ�áÖL‘¿²upS³^õ¹dÙrµ ²Î;”2'½œXh ±.”ÔÓX·ïß�þd�  ¢Ú…cOJÞYÓ€Nà·ºž2t®°aÌÚu¯<Ä{Ò}E2‰’΢÷yÆIË Ž‹ã ŽÆiŒ<}ºaÓË(‰}–òÇŒe{Ùó<#écÒú( «î…ØÚØÀðÂ.1­|Ò&ücÅ—”Úý)™žu Ýv¬E#{i¿¤œ.]:#’,½³dJÛÚ{�t ™?ãÇUbͪï}*šòUµü­`íº54¤_1ÆêÖãzß`=WÂø4×ËÚ¡ý¥Œ$±ÕvîÝÏ &c ÑpíÀIªËe)ã�¾XŽA¡A Ȫ]àâOþƒ½âûï~À±c‡h„JÀ¶m›p<ú,ÖoÞ@yáÎèÞ­;ÞÿàC‚ ƒ´½áõ3”||–ñŠ7nØ 8…\Û8¯}’[7*_uA í<ÿ­u{Ì2§¤õŸ=Yw²BUm%ãmFcù{ÓpGãDIöü´“2ïؾi+fÜ6çO}2ɪ—4€Ì†ö’#caû÷m;Ovv2“Ì1iüX:3hŒúgN&¡0¯ ^žíäÚ;§ö¾“7Ü€¨£5�}eQQ1å?m[²í?´_‘:®£t^�Þ�ð ðèàtmƒÖš5kðÚ;ÿÁÂ'žÆíŒÙ�¨V––ŠÓ‘_w<¸ð9èšãÐþ]8ÅG]9†1¢”Û�°Ìšq'eÜ~ ¨zV‘ ²'»n-�’ (3w=»µ¸8�Àj'Ž#Lñá‡0¡™4ýCü0`( Yv#™=ógN¦ÃÈpÆ{ß ?¿ÞJÜoXhõ§„£·†N™‡`¶'Edºú]i¯*—\–k�¬rsbNF‘1”GJÑ©)/+�÷²“úónŸ§¬-¸¢Í`•í_‘%ÚD1XG"U=FÀU`U·É§¬m%X ¸¨éTL,¾[»…J ÃÈRÚƒ{~†¬-W˜1f¬;¥ŽÓ'ÎÙÃFët¬[¿ÛWd{»@‘å½ÿþ{(ÁK&‘Ö5†\•EMΜÆaJPÆ_#Ð�ƒõÛvr—ÔØ§j>õ3,ò8Vo؈ù³fª›®ú€ÕÇËë(3-ÎiÆÆÍ(d¼¯….¼*ïõ6Ъ�2³sñØ}·£_ɇ‚~i rRãaÝÕ �Ýуl"GWO¤�…öãª�[ÕˆTJj†‹b ¼`ÆÑ뮼¾µ‹ý?½.àª.ÀZ^LgÆìó”OvÅò—ï Ü°æ«1mÚdìß¹ …tjøiշмq{ñc`Ç­Ž¤Ò¢| I¸É*ÈZÏʹ´ ¨e óQ ¹×2æ¨ù~맬o¾{7ãæ=Á0–© ðbÊÐ$í%1$©¡mÄÀ,s¸ß;ÉÜX¹GÖ­Æ”;æ¢dñ?ÑÿÁ§9;�“á{QJ™Ó¼ÏÁ¼¢â²QZ#³§ÆrÕ–Ý‹`\moìÞ¾¬c¬Ê~œ›EU]#]øìU—£Ïd©&m%�¥z@tØ/è}ûðám†–)bÛ|¥?‘c5q!¯8+vàÏ)2ü—0³°;[š"·\�}…éà³yë¸Ø˜`Hh? =)\“RRqæR>/œC ÉL›~+ÇÀ.ˆ<¼õ%4¶v¶"�aƒEO8ûQ‘ÁË—¡Lê¦Ï^¹Œ÷­ ´êæ»Ö÷šª:ǘBâ�ظ ì·BGÍ@7�£ÏÅ3Q8±ö|¿Ñ8Çï]- ÐÍÏÖV†(ªÑÇ™ä\Ô3¹‰…%ã¬V0.» {¼PÛ†Z)DInü{#»° ßû*2‘F‡ÐŒê\Ì$ãÐ•Ž¹Ig"9~ÿ‚ª?#°jÅL3š¡C‚°sÓ&Ñ‘‘š€.¾ö5h¤‚‚…[°rI¾Ý<Ћì_SsMÿwzËصnêšá?r¬8'vë3ñÇ×"æÄ>è™9RF¹�FͽÌLKB�=LLŒpálçq§°kûAª9YÒÑÀ–êz\;›Š~}”sºò�¬ç}+gx™:ögS¨dÑ#p0*KŠ`N'Ø^|¦×s0QŸGi~&û�8¬Þ´“΢&t²é‡ñ·Þ†{ö#Žs¼‡þö*º÷ Àì{�ëlfE'ÔË}°+ßWÛX¥üÞT~p`ˆYn4½úæ¿É¢ÍA>‹_“ŒÈX—ÅØ¸ý6´#eöðÐ!€µ#eu4Ï:Cø÷ ¼&Ð*àjGVõ|’rq4ò,hÀztá3°£ýLÖ¶@VUUOHsÓb>(;Í1^¯Š¡˜–ÔÓ„+àèFì�j�ä3x@úÐfÄx¶#…íÌ÷éZiÚÔèÅq™«Wk†÷µòwt»ôM²H¿!ñ»47ÇÙV#áÑÄÞ§Ú>Z—פ€$Ç­ ¨Z“ƒú÷§ÊÝÔ83ÅQÚ`[®�6¤m[¯ ˜ h&‹ô7*ÀÚºü+ßÄ.#}¨šO>`UA:É)ç–¨\CGŸ‰v­ÚY¯œ-²¶RGIr�n$©}²Jž‘òôÃ¥WC¯³¦ÏÑR¬\gÃOߦJ˜¼_c£–º)ça[ýGIr5qyWò¹ŒPÞõª`°9NÒkߪch£Ã’£½†xãÎŒ5O<þ8ròËà½üC¥ Ò¹èv¨rÏ*Ö­*5mn.±œs��Ú½·HcDt'P)éý·Þ†¯ƒ~X½gÎåÓ�åDƒv3~ ‹ÕÕÝ™€Þ%º9+ÆKKs#xœJå$Ê×Ý–FFôºuBì¥"Œk(„Ç„ñpºçI¥\õü2¨ªÔÓk±à*±W™C:zyŽCkkcJ9Ȥo@­ÝÓ/w*}󥌃lHq‘é�ùƒOÂî‰ç1þ¹aæê‚Ã~$`FÆhä!4T¤Ã�“À°M›ÑÙ€Òº÷=ƒcaÈÆ0ãÕQ‰œÜ:;aÑkochH?—’U± NvV”Úé†jC[…íhÀÉU>ct‚€ª ‚¡žŒØ|sœ¯¯FFúyœžx;Ì  ý§ç`¸—¡sC-ªm»¢hÀÆU›‰æò4ôo.‡wâyT­f,¸µËÆy]{¢‡ƒ©ÂÈš;g†ŒžßÚ ’…ãèˆ)ŒÙ%Ì\1¨J|–æf#Œ7‘螨-#šÅXC]<‘ÇI‘ëÝ×ÏÃû–²þ¬‡Ï~Œ�¹^),|1jô8Üw×]¸ë¡…xdá£È¥¡iØðÑXµh!šlœafnJ†n-cÉ�GzN &ß: óçÍo°*àWþ±gý­iü«šºÐÓ¶Y¾í¬’wêäIm¬²¯¥·î¼ç¾€U¶I:Ccì›/þ�±QQY]C�Ò‹À c,eUw¯û}\l0nÆ|2rºâsÆZ;°g7½À)û̽®!ƒáêáI@¸+ãùÚQÖ/ë¶ròKVë÷Ë—`è-9gÜÔÂT#«uÿ�0ÅX ç=¸ákÆ,¦´ÔÕ“S‰1–ÿÀm’M¬É@N<ݤM0 áÅ…¿™™™çaCY³.—ØJfþɶcñž�KÁ®}ðôp +È ÎdzÏ¿ãNæhÂÆ�ë8 ææ¿ d�½ C}Æ}uºbÐWë¡û)¿e™j&7Ùn[éêêLÃgÒ²�I  ”1a´Óìé“®Xeÿ¶í?#�·â`PWU…æÊÆ/6¢ΑzdA2Þb%>ûês,ùô#‚µ @zæô : daßAþÎõõ¶¯Ê4þlñ»”tK¦¤h?í*`ÍêxìÁX³f’ ^0>ËÐ[F¢/�lÝôÅ'á¿Yþ5~ô ew|ÜEɺ0nöÿ/ßÿ¬kiI>j) kJv�¤ì¬\Ø»;öp�mb‚ó§QVÔ·¾4ðõBv^%¼½=•øbé,!ñ�ÿlI µí¬UÕ0æïF;5°oÒ×7lÙw ñq§l ’È¿ì §jÇ1LœE‡ÈÀ Uê,yÕüÚ÷óZë‘aG_Ó„`œ êØQ474"6.�±à÷£¢´'£Âð�üÞT”*Õ³ P$Ž=Õ0©ÍÅþ#Qpå˜=“óÈ(JUëqÜ^T^�!#Æ!hÐhxò·”M§ä)S§(§o `•æÌï0ÀzzÏOpòéÝêrÒÉ84#`oH7N£¦jDÐÑ·œÎ¦Ý/KÒ‡íÙÄy}SÇã‘—>Âæíûл//^Ψj6ÄôI£ú6£·•�!c KlV3ÆAv‡;UŸlŒë`åà‰Ù÷.Ä JÔoÙI—QK‚Ï–Œa‡gÿùQYË‚ŒÓÎiùtý•KçHä2RUñ~rxö…�)ÌOituýh¹"MáðÜkJ'+ ¬ü(Õ†V§è–¯ÒyH§˜ýá¿apìPj šm®wLËÁX‘ò¥A—ɱxs•„n%åÐVrÝ*°¡6öj>Ùç¸k«ŽA:›¢ßha­Jýe�&«öµ¼·èM :œŒO�`íªñÔ¿?¦„[o{ô�GïÏþAþ¸˜˜BÛ§ã§4ÑèC^J÷οûQÊ�R&‰|ü1æÍ[€)ãÇ!Ÿ %Ȉ3¡×©=óÕ$�Þ‹2ÒÕïò)àª,².Ï‘DXÕ›­>/Ç´™À‰q~Ni’�~­Ÿ¯Ÿinuê Í`áÉ@ñ®ž(NJÂßß[ #½zt넪Ê<ÆZ‰˜ðX ÚÆú–УwçŒG -'»7nÃð‘£±àÉ'0wî xuë ²M£Â�a óìØ‰NÝÆ2†k&cÒþ‚cÇ‘Eùácõð8˜ñ`ª8!<‹t,–4šÅÄ£vüÄ_ŠA §;’h¶4šõ<{½ØÉº$%Â*3 Íôô•ÔÔPƒ�·û ¥Ø¥d÷ö F]=A‚~}�Ë‹·fLסƒBPR߈¢Ì lÙ²ˆܵk/ÆŒÃg‘…ô˜()�ÁpÿB¥ Ñǽ ß}µ¹ˆ’”(Œd†ð3•èÕÇ Á·Ì@?±M \%gVð±Ïž c§”Y¾w\¬ß£Í7£ÙÌ ½CF!9á"~\ú1qRúGK×b9Ù¿aa‡è †ˆðƒ˜3›,JÈ}ðᇈ`\…-Ù°k=÷õü eTÕ”:çÐà8L#Çq¹“¶)öB< ÁC£€«º«”ëݯ›2ÉsuvmušQ£Æ‘mlƒ˜ã”*/£¼¶³™áUðòq¥T–V.[ÊØB±¥Ñ¾žRmѧO* Iue¶nÚFcyömۈÇ+¢ää$|ùÅÇp¢G¾›W7O®°ŽúÐ{ùÇo—¢‘íœ!å�hgíÛ/AA!­ê$_ŽEE ŠÀ¢7ÿ�×^ÿ'²0ïÎûþ0ëUþmÈËI#ÀjÞ²VWÃÊÚ›±= Ú4aέ#ÈÐòêÌ1xü4þNSðË– ˆˆŒÀ¶�[0ƒ ÓÿZJ£|¼±±a+ µªº„à`Ûåvtuö"‹P$åÁ–Ò„#ÇlXk«ÊèÌ“Dv°}Ëí牡)ñ©+ËËaù+e™\ÕX¥`7þÆ è±dŧT]pÄâ÷_Æâ•?Ä?H/¶É… ž0½¥²äß§Õ÷@²E{û)Êä-ÿðM¥o¯àxÁ�*�t�*¡t`tDçN¼VkD?�‚BMŸüï×_Æ"Æ5¦Q«º²„ò‰ÃZÊ;z÷.xˆº=È’Úg7è”a‹ŒÃþ�r¸Ê�£*H!�±:³Ïl+�gßê¦ì©þ“l‡E¶Ø‚qæ<|ºã«ÿ¼M£q€b\LMŠÃ°c°ûàaôèîK†„\ Ä2±�x¯¤žâ0!IÖC”±Ná;u&Ö¬ÀŒ» ‹£­]lÇù»öÙg–O[ÛÙSGÀܲ5€¥~ùO||–¬ÙÀøµ¥ð%“WÀUY<Èw;Ï<õŒvve½3Ù(šåJ";bNQn�Ž[ÚiÐ�¡Ø°b ââ“POG³FÖ»1ó,ӳщ÷Þ«›F‘å\OÈC�Òš‰—bàÊŸ~÷ßA=<ôä³d”ç*ìÚÎtì 5%5§È’$Kúz)•ãb:¹ÝÈZ™M–Úy†M8�sñiü ^T3Æã<ÃTøhÆõI§v(U1³Ò¼ON…þ«û5AÖ¦ê 4Ò±¤²Š1iauÓAV¶š÷,‡*3I/À®+ÛöÒxÌžw*È.{ô±‡ðà4®wZï¿6À*ùTƒ\]e¥2ÞÑž?i—Çß�¬Y‹3΢Žïžegwí"Z­[ÙQIG `MOŠåû”¢ä±¶¶n%™¦(†Z™ãþ©<üj£j%ޛدԗ•¡˜ÆŸDÆ˘‘©Ù¥Hذñç[ª"m¹—b “$ót“úÚÒú¨Ó1ßncüH#ŽË]aEås +T6Ôó™/¤ói•2_ÖfsI9òd¼)‹î3ér™ÑgkÜ€©Ã{¡Gð•ö¼¥B\É bÔ…ØX:2šSÚ6 ›¨Ð$ñ-ó¨ZPÍ÷Ù°¹þžN éüÑŒðÝèø˜�¾=æá^:þ=õÀ\ôd4çλ¨ÒàLÙôfÎ 8ÏÖ´…âäž¾¾×¬UVÂXµÑg“�ies¥=OŠ9ˆâ iã9ç³l)ïAáõ|&¡œ� ô1jòl`-Ì¢“&û”žý‚&ü ™ô=ðÈ#�Á€àè�ófAÊß{ìönÙˆZ:·°Ì4:{åçQÈ�TÊOÉÀ%2øª«* ×h‚£ ãÓ1œç ?› k+DÄå¡›ƒ9NDžÂÙ I8J{C@h0AÔB‚½5|� P•�Ô‚JÌ™15%X·#…9ñd¨†ÂËo0í ° lÚ�ÏQ^k‰ X¡Wª$ÐQµ³G.ðß±æ3Tç&#tØDxÓQõìù‹lws Ÿ˜ †¬×õ·¢ª¦#‚'º ã4ëÑ1¯�ÌMP^Y͹r0~úñ¸:rÌiQÃûg¥Ø4DVß̈±T –žýe#¦=ôœâüÕrƒ;°ÒÔØ äºmÁÓð2 6Žî8°éKXS�Æ”`~Šðð0Ú-ê0lÔdärîÿÛe>ùòuö�zû=Û¬åfΙ¢È_»êK:йÀé²C›š9� Ü={7ÐÞ3^Ýô‡øÌH=…:J[Rñé�–ÈÌ¥ƒ|&„DêYMï¾õzöéA€uú2„—´eÒ¶J»Ø·©w¡óJ�aa]zÉÒÖ4 /Câñæ6»y(¶;É+¶CÉ/‹€=Âê@Aʺ^pµ=€UŽwd¥�î¾oټööß².m¶ôURgiÃð«˜q�²0 “¤šÊEZŽxú´+”yy ˆv+±ïrk x*yüÔ?‰o½€ê-k `�lä<.…Á°¨µ›~¢q-jaÀˆ­T-K1©�^zr©~zj‰¶mRŽ“$6é‹4,d�“¹fÏÕ5Ïu¥òlÄÎ+9TÅíܲJ}¯ô‘+•Ýêó”rÔuíãt×U•¹&Yä¾JºÖ±²]î�j_Ö©äXõ´Ë‘mrýš¾¼ý{ ÇýžIóZŸAÆrým]�šS7”Så}ÕÐ*¨ªæ“OX—um‰ïöØ‘òލ ½ÜguQï·àRÇßzÕç£=>’zÞì”Ilåû¥"”6ÿß#ÅÄžd{™ ÇvBŠ´u^íç¯û<Ô÷[îùÿÕ´…!î¶r 6Ö†ü-sœÝ‘dðSG2þ•ç�ijCžßûE–Ƥˆ�‘x�È"´4”JcÉ‘ü d›4¬6sîV:WÙÖÑ$å«àªÚвW,5<¼0ÙÑòÚÊ'�™ �D'_:vµs—ë¹VRêÅcHï<"^üâù¥æ•ò¤±V=­èéÈ?È~ˆ¸¹+»z]Ò©@�<³‡>[®¬’ß�’n·ßy‡¬ÂÖÑ�ìF}$Gü‚s™Å”¿ë‹s©Ùð¢}Ib}D3Þg3½îúÓkïÝ—'KÌ�¬Id1ææö­;bÓ}6}(uëàèÀŽd%—UJÙ*8®íQ¦ìàõ~¨ßÃ)3{FÏÔô?Õͦ{ÈfJvÄö&3äqÂx$7;ÎÇcÒèAp¤!õÇ¥?.§!* 9Eq ÜzyQ‘·‡Ö¯��ž<$¶Ö&ª2ñÊý”<.¢dë÷°7«b<WDlßMÓ2Ì¿m<PöèÑ'ÿ†ØˆýèM/m™UsòZRaˆèýÛ0‘ïš±…=œyœ%AÃ>”¹ç…ÑH7ÿލs©°÷ï‹4k[NKщ`š’èÁ^mL¦èH¤T�™è ?Æ0ºT\¿¾D¿‘Ã`ëãMPç4–-]†�?û n>=)+g€˜c»qšò|©QkìR‡K‘¿Ð+¹¾¡Cñþ§[Ó&„ìboçQ–žÆfÝçB#cÉ‚•ÔPxiÑ{q<&�àîãÉT®ƒ‰µ9Êëôɨ�K0Ò…¶ 4ÆÑ›q¸rÜÍøŸE¦/eov*ÊÍ a¼ŒrUyß(1òƹ ºÉT‘Þ;v,eéÒááÝ ãÆMवìi°•EÒW½Š¿½öŽ2jß¶} ¦N™F&TŠË(‡e܈-¿Á€[Fáë•Û0éÖÙðîÞ ŽÖFX0e0¦ÍÎ6Æ4:QB«m£®´‹j;$ƒ`i[Ôö¥­{‘>ý.DÓÐŒè‘ ÔÉXÓ&OÀ-Æc_Ø)2™›‘@oØ!Cú·ux›Û~ذþ~ƒŽv†¬ìl¾])×Ò!€UŽ]BC�ca¶©KQ®2ˆ”kQ'=Òö†Ñc\€Ö¾—Ï7aø(øR>“,/5=õ蓜ð»b)AÓ`5´ÓñsqdŸÅÀ¿Wo8;Ú¡‘ÀÇù‹IÀ÷ÒMOrT#”R[f4aüòØšÈé #¶5yEdçðÞH,lI�-|BQ :d(ÊÊJq"b ±#•}º¤4Ü´•r(o_œ§1I[( «—_¥à»R‘âŽí_ wŸ- k[e¨Û„ÁM'‚í×còÌÙêfåóù—^æõ‘‘pȪ‚«&t¸RÓ¹3'±™N AÁPN)ɰcŒQKYvz �N®£NDaÓæ-8v«×¯¥´]:ÙFC¨T�ƒÇu…™¤«`à˜©(dß™Fp¢g/?Êy÷¦qe·¬ê¹hµ#Ó\Xe» åõúöDÿ€¾Ê2ýŽ{€õÝßÅQÖmè ¡˜={v “5§´–¦ ìرHDGSÎ+ kêùƒøü߯ÓXNYKOõ´xö™Ï`cT„Nt†Û²-‰U}•})))tôT––Ì—WD¸†!9Ê)* júà�·‘Ëgë¨qX�íŸÒXÜñ™©(!X}æôy¸˜•!“lŒCá‘ð"(kű…!‹-›vPÕÁ… =Raûq%W�Șª­®dl¾Ù-LVcØÎ£2DgöCí%OoŸX¥Pc¶åÉppé¯ËN깄ᥬ²­˜ˆs·�ênxtësM€U2éÀ}Y:™ó鉱pómí,áÕÍ»~ÙŽ±£GcôˆPä$ÃÀÑs~G€µ¥êí®¨¬‡¶ w|ð�ÒŸ ¢ÃEGV9‘€«í¬mUfé{ÂÀÄkÆäª�Fêo˜büŽ:Öl« Ù¦T�a¾<üŠQUÛpyxÃr*á0Ž`b.v cŸkAµ—b|òÉ—yÞö£&*†e©—¦nWج\K�Tc°¬«ÉÕÉM©«:_V�‘C2A™ëK½Ú»Þz‚wf�º’1|å÷ª–ßÑOk¶é~Ê<Ö‘Î~>Ø´f=;Û±êG' JÇë™ÓA#á”Æ?wžÊ-SSRáêæ o‹TÑ©¥¨ CÆ£O8fpUœ`$$ˆ¤¢¢"JèÛ)‹n½"éè›™‘‰#ß|ˆà‰3Zí>¾~^©ÈÌRY©�“T 1Ó#x}šámRjf¡¼¬†¥•h*ÎÇÂGîGr å‘Sàáܦ]Ù?d¡¸Á“& Çc3°;Š. çàía�J:Mš:œásJ¨äKv¨ãÆC¯�a˜uç£(ÊÉF^N ¦Þµ€ÊY¾£‘Ej…=k¾†Çén¼o&Îd¤þøÇРú|6Çû‡Ùî÷GfnãÈÚ£¢Áž”«¿OVüaÆzþ�?õìÞ�C¡† ë°1c(ßÞ‡}”? �ÏE@ÖèÈ0ª¹PjØ•÷Û�ç/Vî»�³²Òã86èCû„VÏ¢½/y™ÉtJ+��ƒ+Áo'T—汯M†�µ¬X×^ãøPÚØ·{ª‚¹`èˆñ¨®oÀ�#{H%�ßš>ùê ì?¢d�>ÑjlП}¿,{è scÇ·STTUàLL8†Ÿú[«rS�·•vô°~øáÊ5Μun%cU`•cÆ�ÁpÎå=ioS“´aÒ®ª$±‘½§ßÉ4&¯½Èx¶nj´‘¾Gú! óðŸ—ÁM bÿ›g{m¡z.õsÏG‹à@§ËŽ“™™ŽÓoWý]>Õz4 KðiAQþæ%]¸¤,]h €U’®�P¶ øi4…TSí+²Mì/TŒ°íÑžÕô#· a$Éü‡“¥b  *¨ÔCدúªÌC¹÷j’uõ»úL¤/•þH;‰]\ˆ:Š­÷²ª¢ìo«ß•cåùKŸ.ÇH¹*ø&ÇÈvÝòe»nRÇ)²]ÔͧŽ´z9§®Zí÷eŸ6€%÷H®Cî³z�Û:GGë­{ì¯ù.d"Õþ¤'`µ\‹úNÉuˆ Zê#€¶ºT;Ô✠ žªå¨Ÿrýê¸Gƒshˆía²Ož™Zµ,ùÔå»”/Êtí•'ù$ɳSUY×µu>Í‘7þWî_ê¸þpáswÖqx¾ñR[¹gß6dõïûëú;y.j›Ø‘û×ú¬üo!tŸ6v2ì�Ña€U®ê/�õ�ÿl;TCùñ©�B[¥ÒÁLÒxH£% a{2’ï×64J#2{L©Qz*‘‰¤©ñ’ù ¡ö߬¤6®Ò©Û=û*Á[zÒ(n¯¾š}MÈ�8l£?h˜£x¬) éßPX°R7©¯css ɦ¦Rg™x sµ"ü�ò|¤3P³tÝwµ´Üº¾&5oÏNµãhëú’9IÚ�»<€=d!ˆü¦[/Êëf&R²1ÓÔ†ÆÜÚÌ 8FÈ`f> oññ™x0á|é ½RSOK ¨&�$©ƒHfȺz�e]7I>Ù¿ÁØqWŒ­œöÐ(äˆM«— –Ž ¦Æ¦44ô……H/—–óÙæ ¡©çɶ2c}Íù›,.,‚“½ !Æèjï@€Z¥dIVvj2�>bQ^\@/z²œj‹X¦.‘­mkgK6r™ä�|N)t¸!dÅé¦B“ââYVÛ #ªÌPOOûá£[{v?Ao_WÝÃoø»%ãÿ/¬Ú7nùŠå”=Höñr#ó‹@+ß[W_„R�a×ö­×+18È'O\Â�Ü…2~ïíß“r²+Øy(@ë7+¿QŒ=étógN$ËP¥á Ȫ{­uÕUd* «î>ùnH ‡}V ¾�ÄràïE˜¬Ž…nÀª{^'w_lÙ±ƒ}}=Z[‰^(Yßzûm1‹Àã²�*–Š ñ‰Ép¿ l–•RZšÌ§€þš~+ˆLz5­û~%æ/¸ ÷<8OÙTTHÙÒæz2]½‘xæ¦Þ: #FOT¼õmÉ´½Ìöœ?o`•T[Kùr~:Sö¾­¤ÝvÓP]CV«Ùe@³ ¥&_}åEJ NQN‡OVV)§²‚±"ÙWyø l«Ø–m£~¡,o"º¸ø0Ö¬ëU«d¼•²“Çi ÿæûoq×ü»ZŽUW>_ö]f¿FEëÏ=H£ê4:Q°6;ƒ¬bCü´f |ä©VÌÿJÁîøe’“±ñ§� À*eŽš4BB2d>^³9d`QúÓ™ïHþÆî ÒÃ¥ ç4d#4´ýëSë~„ ù#˜?÷Nu>á:xH˳–‹—¯Æk‹>"Û)!}\aÞXD`=ž²Ó= DvFâÅq�1lâô–rŠ€W/O^gŸg�Í–?4ý�¬%ìKÞyí ܱˆòzA¡”›LÄÙGÈŠòÇ…„D`UAÖÞûwÞ5cÇŒ€[ï�°6ÓCYÝ<½p&6žã {øaËžƒRípçÝÖõ”nv×ò/Ñÿ–‰>~"âSs’Ãó피 Pi'q ØO™ÉÕßþ€IŒíø»&K‚­�®{ Û®GÉxhߎm °hø×* ‹“ûU«šwÉן¢!ÿ<�e†ÂÙ·?Yp]Ô]í~ÊN i¿ÕÐÒ›qE)ÃÅE3¦“re\£a‰Þ}•ì^!Ùðƒn·n7cg­Q Á¾@ι\”âd.,‹\¯º´7�Të ÎAeN¨‘R¡îºæ§Ì·5F_ÎÛ(ý*qÏ èijò§uHOMT“îžÝ8?²£#€3‚Sň€äà‡Ÿoõ<ä^JÅªŽƒ¯e¤U+#çm¼<—uu)F^±=ÈVž»jx”ãT#²ÝèI°”°×HŸ½õ:�#ZíÍM¥J‘MëwnÃÏë8Ô°®_'­¯¯«2ÆLÉÊ"¨hǹ�÷…§›“Âί¯«‚ çsç² àÞË%œƒ�=F9�•Î]�Úf�aJºz¶ °VÓ¹.1!‡…a#�TÞZö]«zQeâ‘�˜óìG ­QFftì=ú «w¢y޵kV+Òâ_ô?e*û9Dìü¨*‚c»–1äŒ8¢õ?WX¥ðZ2s%~ºÄ…žG€3�Ž#qEtnÑ8:8ò÷mçFÙÛ&öaö¸óÎÙ; OÎErÊ#¹ ·Oƒâª&¬¸í.–ma‹õ›¢™�ŽÃaIõ‘± dÛRê×Í•q@K±ì› –Ú›ªN±Q4|wr¤³ñl%.©CØ2”GRäϜ˛ÉN­‘öì,Áø“(¡ž‚MáÉì�F »¯'çÇ [Äù2Áñæ*²|+0šñ(½éD5xIJèëPà û­3n#@n¦0~�éÀ²‹ÎáÃÇŒåœÀNQ~²$*keQ2ŽÒÐoU$ø~T!�ó¶R2y  dÊDG´«Ù¦ÕyI0º¼]Ö¼Œ$8¸z+ϰ¡¶ 5•- «tÃvn#ƒÔ A© ÄÐ4Â`½«œð¶[ïA\ÂIåܶugLŠ ��­€VÙ9nÂL:G%""b/ÁÁJ~ùcoïü‡X[*÷[9v옢²¡ÆÓíhõ¤]”ö\€/i›}+‹aÃvÄ¡©yzDÙ 2©`˜¦ÝÓ´‡Vo�ªØw­ó] -ÌÞQÓwH;\õô‚ËmúõÁ�P:®v4å^ÄÏûŸC¿îWÆ\=VÂ%%§ Ó¬¹È ó�%Ù�jR $Òþ‹ý”Ã'šè4*x’GXƒ9-¨äSs,9”$ý¤ô;rŸõû…ÐñÔÅ×Ðú¥g£ JÊó�E€9yºIµQÊvÙ/ý‘J6’îê1ª6O5¯Œ'¤•�M¬u3�ÔéÌÊsé}Ò7ŠÌ¯äm+]:v�1µ=[viƒ¬r�R¦nðW%¼È>±‹¬°¦?n�[s¼&Ìž0>µ“È[K’÷QΫ9w“ÒK_,ä¹êöë�ËÔ>»=›´öùÕuΛÃ) ¹ºM–m2>¨úàÍT‰ý+uÒ^dL!ÏNîIG‡ÔªÊJµíOí±ÒÚ™¼éqã銣™”!Nu�S°bw“uI2>’2tŸ‘²ó&üÇ6IzçbÚ|O4cä”6ß·Žž^ÀÕ_ °JÙòŽÊ»ÕÖ»ÞÑsÿ·ó�£âžÃå¶ø÷:÷_ ëïugÿËå*/8'9º0¿W5äÇ,“DµaT;Ù. ©¤ù±É$RÀGé¸Èð@팕BoÒMGÖ¤°Q¥óìhã �– ÄcMê)ŸNÍPâ—ªÌP‰u*ƒ1ˆ®¼tÒ™¨ƒiˆe‘K1ðRòÉáZ�Ÿ³³ N´‚�¾ý' ]ñ±"Uv ¤Qa‘e¤&£¢¦)ŒëN�0·°”E 8Ћ¾³½¹éÁž¡ðýf±b �zSîÓ®w?SyWäù]+É`ÊTöñq±ù–±3Ò8Zª ¬ë@¸Ž˜‡çŸnçÄËŒÊþèÔ;¦uÅ”ÏÍ¡§,Ǫ¦¤Ážd�¾œ$Sê5ž@“»«' óŒËjk©/CFŒf,‚Œ%¹H¡ˆH==eÝ]=ðø£¢º('ËóÇï—£&÷º”)ž®ß½I™¹¸ÿ�°}ß>”¸q1)€©µlÉfEYÌ{ – œ0x Ê›qû($Q®è"�Žcgbc\&¾Gg¤VUÀ•÷äç�›(!Ø…2¾µ”4,†3½ñ’**q1>¦œìôŒ�ÚŒ|Nä‰õ ;r9&Þ1ö½úâƒêF9-‚Þƒ'>Aù"/ ìŽþÞÍðó6ÅPzžv&ûWb9ØuBiâQ¼ýñt¦'®ÿÐ)¸çñÉF…Q'WÊØqrz9.ÚÐñw(Þù7+ž¡0X€UÞ!;G²a¸h§ŒSÈ­©C~I5R“�ñÓÑaèÙ“`¥±Ôä×·7‚GÄÒXÚiËšo±eÿú×½@IDATí·˜ÃØBtG(Ï;t¦N�}?"“ÝЃ2Õ ”|r£�¼õñjY?ÿ¼²HìN•%#ûä7§G°¢­ß�µ�)RÍ­ §ßˆ‚zCì;pA½ýi<>�cGãõ×ÿ�EォžÛvíSÖ;i+9Rº·-€U7o)åw�(×y­4�† ×�ÔÖh8{ªÅSRÓ~h�mÉÕi3XÕ²ŸyëI‚¢N˜6ñVlÚ¾ùÿ±wpU\é÷€ ôÞAlHQì½Ç^¢©š^vÓ{ÛÔÝ�éjbL±—Øk4ö‚ MD‘&½÷Îÿ|ó|P4&›ýoîï÷Þ¼7åÎ�;3·|ç;ç#`Mcª!29Iò÷í‚…ó?§ã„ÒrËv&S(‡ïF�HŽgLÄ:¾Û]:Ó£Ü�òeFÒºP‚­†F}/ħ¤ñ~¡Kg?tîÜg¢Îñ¹f D¾ÿ:¤õåg]eÜ]3 Å ‹¿Zß”bô”ô<Ü�ͯ–U–uõºX¼t¾œû &q( Öï¿_ˆ'þöœönxýµ—y¨ž½B­—?Ù”@7~<º@cÊ_©õ5p$ô0ÒÈŒsgl^ˆ¼º0&v†ÂŒoCfeïùÊÅ+ØY¢º²íLlhl#ƒµ´µ4R8wè†ÊèÐᄎ#�éps'R߃Ü,ö;¨þlIŸ}ûª%›éä 104-Ÿ> Âb½Qª©&+„« ²ªûV‘)YËv° �šKé)‘XóÃÃèsOs›o¸nØÐáͬrPhh( »÷)ÇŸ=sï¾ýr)êÕÿ‡—º﯌i2Û,Žñx3Ò38†Ñ€%-kаlɾ٠¹t~ùqé¶-WáEãîÞ}á ꮀ«5ì‹�Ù7Mâ¬%ëKO§“V%¼|ZöºÍ`¾ÿ|óy|ùå:ªÍÂâï¾% ;œ±@…ÐØeljGÉY�¿é9›þ72µb|ðë’µ±œøÚ�^¿rÖ®X†AÃGÒ™¨–,žl#»7:ü8AÕu×cúäiˆ‰=‰ezdÛ&J¯3~a!ÇÁKúô‡Á&I~üOÌ_øOÆîƒÐ0¨ÿÆ]�‡ ¥¿]²ç){ébdˆ‹ÏaİÑpdRVVJéþ#r+¨x¢ËxÖÓçÕ僯¾†-Ù`òi.IœqIýXI…yY˜ñÀl̘v7ßñöÊ:ùª®(€9ÙsVíô�žEg«2¬ :ˆ‰w+ ëGs –1çÂŽáãC’;ŠWŸ…¾ÃG£¦¼)”3=sì(�6Ê)÷ßCÉ7ƒêÑì3œÈd êH†OèV‹Ìmšòœ¨«ìœÉzÖ·$fhoo*0ëiòäÉ8Ë1§^Y6:Ñ™jÿ±0ŒÜ�Ò÷EØ¿o7zŒaÀ€ 3Ñ™ª ÂL]¿~#|øÅñ§€2‘±,ƒHägÈ‘$1!Ï�8Œb:Æ ¹k²²îv¿¢Oìᡌ�J••;•`Â[I—cN"?û*e;¯�ßFè°3ÖÅö='1lÜŒVg§Jå‰ñIpku×v€Ub«Iæ“2Ï”OÓ¹RØÞí0aCëL'¸ß#ɼV�φíÿ–ó¯ hkøëvéVÎ-E§)cµé³ò¿Q*È*†èt‚…Ùdg;‰,4¥S/ÇP2·^]®…ïÔúÍÛè¨ÖÞ�g×™`½Vç`í9§Ô§|Ä(-ÆXÕÀªÎçeŽ,å•ù£$™ëªkun+óa1ôÊG5«@²Œ¯%O9¯jW‹z›V,Ťû¤ÌìE E.Žoÿ& Ù¢­±t9zPv’ñC•xÇìg¶îÞ«Ä8ws¤ªåo](á^Ãxâmh4÷ïè#/¤f“ÑŸ”Šõ«—Á–àôZ:ˆås|àß &lÃДOs©‚ýëº5ë8¦í„W8®lš ©Ââ4W¢ORÑ…ñ=}CvIaûٞθÝ9w€UME¹™ð”ù2Ûýôø”–øtóS7ã•t>Ãúš|̹³t¼IB5å­«Íœ0sâ8ÔЉIœOím�qµ Žc/ΟËôQ‘w•Âùð<›ƒ›�%ÇÂéŒú3GÄA·®m‹RƒÁÁÝ‘[XG ZÎ�tñÔc�°�ìÇ8Í¥T‹*`|æntfÔÚU‹97Ŧ՛y=†JÝî;Iç:]Ú )6ž('XºmÇ!<øÀƒÈ¤£PûÄe‹~Dÿ¾ÝaáìÍ1Z.UpôàìæBu­nXòÝ|Ž'ãamTO&­+ê9¡°ä½wïè‰Ô‹'ÉÆ¾ 3k”eDSñ£[7í@}qŽâ$-ò÷÷ìdzï|€¢¬DŽ5éÜÙ Èš¶5eù0´ë¨´³*À*•-ãPa±j§äKÑõšó“öú;õ{ÓÖå”Væø† ë#�?§¬ó¿þ‚ŽO½N±fÃ|… ]SUÝdmØá¯7­�Þ½û( ëMwla<µâØ»3CKÙÖÕâiÓü]zhe›(€Š´wB¦h`Õî;r8çM¾r�j^šy�ÚžK´ÛÍŠtK«MŒlÈô÷�,o'¹ÐIÙ–ê.–tŽiã½Ü,¥ýÛ¬Ø7kiÔ¥|´ó—þ@®EM²Ÿ0e, éꔥ z½ó LØok@@:N^%Õ¾GC©¥9;�QïþrÎ3œ‹ží×Ã{ÖjÁ±Êz)‡N •"�) °Ú�ÉRî³�«•†t”�ì/}a£þŽ «:æR-“ì+iÉ‹³‘“šˆNt0Ñ”ûº]UíûÔñƒz]Ú«ä!u¦ö»ò¿i’óËØG;I^êNêX{½ä¥~š®Wûfíõêomà÷V±)Ÿ„ôÓ¾÷MAÖ¼ÏÞ+¬KMªhų́çWï‹6ÀªÚÕÕ}´ež‡÷FpH®ÏEÔýZ³ÔÜS�ÍLžQU²¸é±ÉñqœûäœöC5©Ï¢öõÊ6�¢É u·;¶lú\5}V乕6}ÇNþÿ0#XÿñÚlL¿÷)\ˆŽÀ�ß|@励wüJÿYïx•þç2Tñ?¢ªG…œKí¨äü°æ}þa¡Èãª�Ò­”Gs uià;É\m® R¾[©3iÄT�ñŠ’Î]&šu½ûw0X™ü³ÃV¥F¤^ä#`¥°ZÍéäÊ BÓ�Õ±¾4¬&@ø¬FÅ”Oã¥T‡NSïU¶‰¼‚á¥8¥mÓ­;FÝ}7®¤f1nW Y ÞÈ �‚=emÜÝ]—ŒQýFp�Ô ~~¾Ê¹$“ØáaüÈsðì§ñ&“NWàh@:B)÷S{6cì& ¦ÄÊà)OáŠi'”¥Sj�Ò¹d¥}òñëQ.`ßê¹èÁaWJ~%"O%S‰qÕÚ[ š1dëk«9yr§«� c‘ž£çõU\M<Jÿxuˆw^/<4�|:ÃÛ†ù2¾X@ÿ10¬¯ ±6�Ò6dHvŧóÃÂÛ É—q&âü\(Ýš�}GÁ×Ï�“±<Í¥ ê‘éZŠ.ÎÆ¨ÖåÕB`iÏXd”$úzÁ81šÄP²cºtv§a2ŽRPñÈɯÁÊŸ~†AG?dÓH$1£(ìÁIa«1% «W¬ÄÚmÇñèŒa8—b„_Äã³·†#úL ‚úO ÐkÁs €ƒ[­\�*=WÙàsžóÕ7ßÇP¯Äø!l¡3§B1ç£5T»€«*Àª®l Àú˜»¼Cèmçâ¦ö§XšÚÙ¢¦4óm¦§8Y|.¿øú[deàcŠõ!#æ4cÐø7ð<}xJòÓ`jLYjJŸ­Ú²‹çù8¼sã§UìÎÆ‰`e¤O¹h xø·ìåÙ‹`Û”)S±…†§ÏæüýCÈά¡,Óø�š¨¼“¥cïÁæè«0sªò߉L–a#Gâè±ã°4Ô¥\p[¤&%3þïö VŒÖ ­ÈØ”tñ½" °¶²¶ö†X�i%i÷ž£¸œ�B¶¬k£C]ÈPX²d%Ž}·#_|™e}·aûÆ ‰4ètSœ;¤=wï]tXpU> ;iýÈ «iÔ€1°c<>s‚ÿ©”#*¦£D&×w÷ @_¼²bü¥©Ó¦+ñÇ‘6qü8¬_³Š¬d3ؘ›0Žì2®'“5O<õ�*k8 ]Çí$ïAi娣q(ŽF™#gba@ÈÄ@êFVIy5|ÝìáêÕ��ÁèÒK«¤šŸi4¢'0ÝŽ½ñÂó/Ó˜_Œ-K¾Á“/¿ÝhßI“§2–Rä’mçÖh[YY™â„2š÷¶µé±g_¡‡¿lè]ÿ¿œÎž ç³Bc�{{œÀ‰Ð#èßÇŸ²šÆdÖ]e{IiQWJœ!ñJ&\Lé`ŒR*,(…^EbrÂ%:®\ÄÙs±8ÊÁÿÖ$ë…¨øÐÀügKçÏ\ÀÞ�G0|t¿Û.š>Û`Íäµ hÖ–ëÊhP�µ™yÍ%S2Q“3üºOö;@)P÷Ž­$’£1ïË'1pÐÝ8²o É…˜|m<"y‰ªÄ´»¥Æ ”e‘y«¯°o%^uqq‘òY»b1~úqJ(‹LâއEg²š[ÛaÔ¨Iìz2&š™&;³�“”ÍvÈÂÜZùÝÜ—;eN3’# ¸z¡%_›K„íäï®!èàæ†µk×Óxo®ÍÓèÔ1kÖ}ŒGWCIëö8~.Œùz³$àjS€õ#:ÝLžvâ/D!=1ƒG�§Áß½`ý~ñÆ®>MIË`HÌUX%=öäÝøjÞWtD(F^n2f?üwTecâ}OP’4½)Ë+lŒ�>þ—â˜Ð� í»ÿšÃ¸«ì÷Úèbü„©8Mù^2¢�¬ž<¹ûG¿îŒÕ燘³ç™_1fNŸ†� ti¸¼lÆÇÒ³áÓ®�T€U¶…Ó©ÎÂÎY1¢kï{êàÆte\»5 ‘–S„=¡gPLùwg·ؽs+/ÄáÐÉÓˆ‹9‹@:“�`(]êÔøxuÀ¨±cpäP(,¼ÆJÔ8J8PÙaĘ1ðfÿ% «$‰Õ[SQ#ÆÉÔNÝ|4 R ÏãééMvÔÝ ›÷>…õdü† aÌtJ_R64—R“¥ 9Ѷ*ƒGkîƒz}v «‹=åÍË9n-£áß� k:�ªpdíBIÇß °Êù¢ÉT²£³À�Y›2X/ž>k'7õò²!‰N%ÏïCÇÕÖŽî ડ–$ù…èHd\Ø32�óJë[4XŸ:soýk6&Žž¥œC�K(F¾ütDQBzñŠ�BIÐ[I*ƒµµÇˆ·*ÃÝÚcZ³Ÿj¼’ë’¹’�„JJ’:™)ŸÖäÑÜ>2>S?­�‡Ê~R™»nß³ÑçŽÁ‰ÎŠžd[o߉_ö©£Ç0vÌx îˆ Æñ2b<™ˆ×¥æ¥,b°–¼´Ï+ש ÅP'IŒâ²N zrNÕ°¨1$ʺŠÑZæ¶R.9N5‚jç'yɱ2Öœ£®ÁhíÌñ™¬’Ž‘9/á&:uòEÇnýVÙfËq¶¬šDÒÌnÎŽd‰:Òáƒ!fèœâíÛ¯¾ò8™þ{§{™ñݱû8Ûcâ„1ðw1!s»+ÛÜ5n<Ö®^޽?S{Ø`:Ò9™1h3’ãp,ôŽg®Àƒa-ÚQI"$¤wCœÖu+V(ý¯-ÛڦɀïÏÚE_(Òän^�€ÕĨ vm\Ìq®ccÛ*‡ÀjN•˜"ÊWTdñdý™LÝ­«¾ƒ?A>:v‘I)ë«Ï¿Âþ_‡ýC.ÆŒ†Îž®ÈH£ó¯NÛÑ:TÔsŽtá Ã0áÁ'c5A,³!cŠâÀ¡ýé=”J@aX¹jV­Ý[Ww*ΔRu)—³*‘–_‚¸è$çVbøØÉXéË~®0ó"�hJpŠÊºfv¶f½wtc]û¡ßˆ»›ÕŒpêâøé$*LõÇÁs‘°Ö«CCÇtbXO¿`:TR ªN—ÈŽ00·ÄO¾Â° ¾dŒögßÈ6—q± tfåÀÂÖ†e>¥ŒÊ †[±ý­*¯ÂÚoçÒ>à‰ºŠBJqU —*8™7úÞu_³«T¶™{�°6½W-ýwå»ô{¥¿=ó0:„ž}§áa”Õß¼y¾®÷Cò,Míñ̳6ì÷×�?¶Ô¶Vœ…Ôvqze~Àª�&R“©ÁQ×lH4iÿšQDíIXåjäÒ¶J»)í§v{|'®¶)Àºáðý°5÷…±�¦jÍ9Œ�ŒiCì¬ôUR)ÃZ¸RN\êDê€è^Q5§*‰$Zؾ2Õ¤2û„‰*¤!©È6•+`¦ôƒê¸Ae—ŠCNɺ…õdG&ìÞfQÅ9¤NĉB±»ŠýT>r¬$qT²Š8 SÎMÞÈ.C*Mw„'`‰eú÷pNBñúJ%LE©oõžÊùly~Yµ“”I½÷ªÊƒÜS•ÁxòôøN•}€>Óf)«üÖÜÃëÏŒ¬“¾Oîoñ±ƒ @«Ú‘e›š¤žD6·©’º½¹¥œKóüiìÊjÊGí§›;FꬥsÈz©)‹æú›Ë¡åu2F�çY=¿Ô³¬SS›önÅ)‰ ±H¼åÞɸ@; à)×!÷ø×àúõ±ÃÓϽtÛ«z>)ßÍÞ½¨°£(Ê£s�—�r˜8G¨v~5Y¦Õ4º^ím¿õ·Ük)§Ú^ˆã›šä¹RU*ov-ê1ÿëKa° À*)';]q:ôé|çíG:õLÿë•ý×õ·®äE–$�¥W“4ÈÞ4��º®µKñœ•$�ªvcÜÚãïýrR/ãØúÿܧʩøT¯]¼‰U€Cê¦i½ÈÊ ¤¾¾ ÎÞÁ¢83Ó¼¹ëT;nímê:å¤üR·ÉyTïàuú&ÈdÝO˜9 GïEÝùpÜK� 9§Õ o™ë?ôl-Ô,/eõ�t’šžGÖÉý”k<ÕÞFþÂ1¿g&?ެCûPȉnV•!BFŽÁ¹Ñ“ñVëuªKãzn %#)«àãÆQ—.²÷¬¢0�=z~Þz§ã®Pa¸žŒ´#Кz)–bz˺õ@`¿±èÓÕ±O¿Elì% ìl“œR¸Oy.Žöøñ‡/�_aˆaƒB(mä@¯ûBè×cóŽ-”4u†aE&c+9aâ¤Q¨0ñ&hzó¿[ŒIÓÇatư9y-‘A‰^++lÙ²"±6aä@x:WX݃“¡[ðÊÛßÀÇ/&† ô­yˆ8¸}ÍÏ"³Ö:†ð6‰Ãþ£ExsE™(+¦”T�)ž¹/Ó{•Yq0ªHƒon¥ñn2 žG&ÄÁ·sg^§'†PúÖ°æ*Ük#p¦º/Ò)±;˜Ò¨Þ´þO{ǰÁ½ñܳ/€¹BIà±:´yl¦N¿6ŒãB€ŒÌ$Täg’ÁÒQaL%Ñ© =·„q ë©Ñ¼B ¥¡ÁÙÅ‘§Nñ¾š0ìUt>¡'cχ†mÍ`H»Nߢú¡£§áéb„—_y ~=z“-9�½úṿ?£ìAæm@�íÔßhŒÙµw’Rrp÷Ì8~€lÖãð£|´»�?Þ}ïƒ_s»+R¯&ÃŒ†3a5IêèáÚ(«sÑÇÿåÙl䋯*Û¦ß7ÁmŒ°ýr.zšê!Ã΄±„*hhˆ×žy­Ññ­ù“CP[RI~Ö­_�×ßú�q·)ëî;ZYŽì¨81ddãî{g3Ö¬?^xá¾[[#Ù#�ÌÆáÇÈܶÁ A½)]FÃ.Á5_ï8aô®/'½†@�gG‚/mPP®‹#û“Y;Žq\�•óÜÎW?˜6QÉ·sø¯Ž‰£žOvHzvg›êŒ¾þšìŠ*²°ÍaOg3;1ð‰C‡èDÓåÙ”{cìë./ŽEŸ# ÚK©¾îd±KŠ¢”´$mÉjeÅïøµqùB%÷É÷?þ;ž¥ù¬%^©šŒLÌ󷌬Ê>Ü$%$^"{Å�àfó ¢öá©É 8¸gÆ�ŸI9ueSì™c4H‡aöÏiïÚªß9YÉX¹f-†0¾_WöiMSaÎU´#óT ÊÚéRìYÈ'pÀHeµ-Ç Í¥0¾·?ý´Ÿ±@Ù|!VóLø�U¯¦<Æ‹ÍÌÈdŸªa‡¦$œCi…ûí_—G$÷$¹RþUMÙ™™”k³Wþ%«1�ªs>ùß/œO#î‡ø”1å+jt1﫯°bõjõ°[Z¦_ # ɇ1¯×Cø™ÓJç#"”åì‡ÃIÆòûô_ïÑ$UÃP—1dð è /÷ž8vú >ýâ3ô¥äçKÏ¿H©dÍáèÑ£¼w³ÙÇu…�…,X®äzôÙ°GðÆ«�ÛûH:À¬Z´HQ¹ç¡‡]G5å-«)oiD¶PÓ”p%�ÎeMW7û?>.Ë}ó:2–;bùò`sŽY{–êèFvê¼ïáø±³0'#û³y×Fz5­üq!匟w° ¨…üt¸æ€¶fÍj|¿tú£s×®˜>uŠZŒ_-ëɾ¯¯-‡®þõûø«�þÄ+r ÄÈÚ{ü ¥Üºèô ó¥‘‘åöÍPR˜s›ʧa'þ8wúΟØFpËm­ƒ’jÞ]í}ä·€¬òyê¡w•MêœNùÃ/§ïW Â·'Õ.Z÷,©ÇÝÎ2öä.E¢Ô†cÃßš´çZj^ê<¬¤ •à¯ßu¿?j™ÏØÍ ¿øÓ' Ç®í;‘XbŒ�¿˜«œ>ŸlÉ|2Ï=è´Öš¤=”ë”$Œ u£ÎïÕù¯öÜWÙï˜f^*sGÇÿÑ0V·×¤ôd?íÔ4ím­ý�ȹAUy%Óˆ��S�ÎnŽWý°lýNô`ÿth÷~:üad??Œ5›}‹§Þú„°š¶ç‡E? >& ›=Ñç©F4tã`GÑÉ0 ó|�7ßþ·°j—g2©Óî½3gÞ­½§~YͤÎH9³ö]9GÖlÏgŸ¸uÍ�”"Ÿ 7Ïëm^òå8\:²&Œ }¡ÌçÙ?ô¥ó§Ž®cèú¡ë5©}9Éû¯> ]$h¥‹1AÊ:Ê�šÑù1žì_W'†JÇ 1ã�ÄP5£§NBGJÏýì#lÛ k=Ü=¦¾[CöF�×vºt„L» 7ÊÚG0tÏ<ädä`çþp»áHÄe¼ôïyÊ5†Àþzî\ÌÿrŽ"‡\VN‡ †ê±lß —"¯ k7ªc™VsŽnƒ¼’JÄQídh ?R“Óñùœyøø_/(q£uôÌ©dB¦qæ¸^=Œ°mÏY¬\±…9©¨'ÇiÉ'‹0òžñ°q°‚¡­;�ð%xñÕw¶‡’­yœoW ¶F{Ÿ`?x„~zè7j‚RÎËÑáŠô¿•�ÆIKYɯ„ó'±dñ�¸ûÁÇ©X¨®þS//^Œ„7å¤kÊàXÉÁA3Þù­yý§�ÿ‚ÎhÇ fíòÛ—ÝNùÕ6¯¥cµÛ±æú iM8WWm…-ås»ëO¤?qú0þþä«-f‘SxIÙVϰ¶¾¿Ú/%)�¡šn­–z‘¤ÚCÅîXYóh‚¬�ëk�Cì�MÇ'¯±{¥¦4ÚWþ¨6HÉSþë?öœy›…_$Y@'9 è¯öÃ꽑{ðìâUð§êVï+Ñþü{œ5l�Ð3—ñÆC#;§ôcRVíû¥öyj~r.¹‡-Ù¢åDÊV(Ž_¯4oi?É#jþûHbx ¯ Ä¢^“œ£’6£®~ªô¯"ù/IµëÊoÕ>+¿o%ÉyÅ-I½/r^íÿÊŸk_êu7½fù/©¥ëS6¶ð¥Ö©öfµ Úëä·:®�ß7:§l“±ˆ$©¯[-×�òV2½Í/õ�÷ûvÊu›§UkzMòÿVëå·œÿ¯c[W1Y[WOÿó{IÃ)žª7ªTˆ4œâi¢ê�Ë>MenTq²¿êM$ùЇ†xkü™’°¬éi.KµC—òY¥'׈Dˆ°w¥nšzãÈ~j(’:e¥äM’ŒÙijGö‘†Q®]»�”ŽR;?Õ»KêGö/ŸTJð’åw…RVéi˜vH²ƒÄI`^:”^UÊ&y V<†R›Ìüí9pðRö•mâ]&eSVðKλÕÀÎE%� ÷SÃG«B À¾G“8G×-„ ÁŸH²Mmco'œ¥)¸p1…¬Q#Ê·£W°µϲ´œr«WbPHÃ¥µ©>ìܼÈ\8ŠòJ]zŸ“‘˜ÓNÞÊ[s06oç$ÕÊ=:e2ÆWbâq! þž–ÈI‰Fbb,%(½wö2âRsQVe€ €ÎHˆ>�ã‘Ù4æãÛ—áî #PV‚<Ð3±Åñ#¡¨¡·¬.e_ª@=ÿàp,d처ÄRœ‰Ïƒ5Óg>¬TƒÙ¸ÑHâÀ3|çB2µ±ëd$mÓðÝ™”´sCÿx|@:úÞÿ�:šR†ˆ$3ë§�ûñáww¦A®:zLûbÓæ­Œáä‡A!Ýؽ›Âèsé1U¢‚BèÅH™Õv”w¾�4iÒ̘1óvýÍÇD†ŸÁü½Ké&�6gK™&\I!Û1š,žÎJÝ_¾p–RRaXµn=YËæèMÆ¡a›<ø÷ŸÈ?Œ½–TÅ}»0õG-ã.œ¤|Vu½žðTÐwtÀ¨±èÊ8m]‚8ÙîFp#ÚSr&+§ÃÜ6MQ1qèìçC @Szvg£ ¢šL–J|Hqºúzb ã²›Á‹5»À€XpBàß#úmõ(ÛíO&Ì̸ïaá�Ù³bõYþøÃÅÛÝ‘1Ÿn79rbleiÞèpX_|o*Þ|ásøiÅÉ‹]· #÷ïÄ)”и­‡.\A#vÌœro£ãµÿL›À¸dEɧiJIMG �6Öv6”€Ñ%ë-ÎÖdLxñZ­•ÝÓ ÊPD™òO>ùamÞ~ë-2UûòÓ�\#%kTL,™ŠÞ?i&¶®_O0¤ ž” õrw@ï£c3KÓÓ#ˆÇ´%¨›‰`ÆŽ d¸ß’É~úqõJ(½Iáß’—û¿Ì`½È66œÌŽ:=¾fèM}· ¾”ie_‚¯ÅŒ•Bɶ|äÁ”í»/úö ¤ €!~=C†�ã}/Er~5ï�gØÎþ¼a5ܽ;¡ˆ@cBT8ÛK?|öÑ;X½a=ã†%IpÕ˜Ÿ¿õþµx¼2NÝåZÜÿn¨f@Û²’BÆ“XzFdp ƒ®¡nñL–V ‹µ®ºŒÌ�j%¤†¶�ÌhŒíЗýìu�¨0é4ú ývòîÝ8ÅÒЗC™0[æ’Œ³ì•·Þ¦Áz4¥„5 þèó8°7™ý”?$¨øÃwóØÎZ3¾�MCæV…=}ýé_mùß K?§ä hüHJˆ‹!͆@{7åÿ‘Ðý8z€2¼¶”š·GyY Ÿ·|ªI|O– ºd¥§çbëÚíŠ|âù˜h…¡ª̯ó‘á(,ÌGFF>%)_®×¡ûv÷« õõr£Ñî8åç'aô˜!xêÙWqÛª«©©J Ü^d>¶6Å�?…ÜÌ4aœaJǯ6d@i'‘6—O:eMLLàåí£ô TÑ8I¿°i»RV=-³‚¬£aˆ��ç˜å0fR­$)9QY7®^†ð£1íÁé@Ç„ÙYˆ‰¿Lã|ˆ´o2�ÛýûiÚN/o7ô"£) (ÃÆŒQ@VíòÈïºêJÔQB_ V÷ùä³9TDñ lóÍ¥l%îª>GBÃÎáЉ3”÷Áè ñæ›2öíœ8ú ¸wlôª0hØPôé¯1ü(e ²��» Ž<ÀöÅ”lÑëϪZYîÛºV©/KÍs§½íF¿+Èž—¾WΟÃÑýû G9z7W;¤%%"/=‘@ö*lxrLùë~P‡C�6�ïcsçŠ�>®¼"ýý[ÓG¯ÀöˆŠ&üüÖdD Ôö”¦ÔN�z $Hႃ[7Á–± MÙžHE í”H¹NcÃZ˜óÝ´w!“…±ÙšKÎŽnì³5lj$³Ç9¢õÆ>îÖ£a{k~ö¼´„’⦭ٽaŸÆíö�6˼aã-þОkÉ|«¥­3m,YÓØ˜KtøkÞQäOó›v—Xž–ö®dæ[cõ�«ñÄ«o*’å’©¡‘ ,¯µÛ­9‰öœSæ©Â”�9©5—jRY%Â쑹¾†e>ªˆeî(sUÕÀ«-ͨæ¡.5Œ™›Ïùs²Ò©žPÂ÷ëú³�x)†Òã¡Ë9æ«–¡“[g$§¥ R§Š úuêˆô«©Ø´e�M/ª»ô‚ãÚ1P�޵·¢Ü"åHŠ9Š»Æ ƒ…£7®¤e0G5þýñ'(ÎMÃ?—oÃ믿72ê]®±g�3$F729½”þ/‹N %Ù‰”µÍ!¸euúhïd*,˜XjúLC¶­þ=6°XÕë/¤³aiuôžø¨{477�¡wôȘɠÂS*ß9Æ®ç8HÒ[_­DgWSX³ü™ñç‘�‘‡¨«e˜<ª/Ü8_1¶²G¿þ=`mi×®T *åü˜}©¹9œ�àlkŠÐš!W ³àGGÓ«E¦¼7j8ÆÈ$µ_®yäÈ!øþ‡ œwù)ãø6dÖšó]+-,GôŽȸ\ß¾œ+™À—í©¾~[P¼mu–ìâÃX ;¿ÆtªáhñÔñpüí‰Ç ·CiÆ%ªeÕ"…Î=QÑÀŦd§wï:êHüó–®AUq ôŒq).C&ÝW²�/Q®˜u «¬ÂHnœt¨¨QBu‰q�Wÿ‰ÿYß»{£Ë8JgàÒÒÒßhݱ}�¢ZâèÔþFÅivÛš�Kå$ßf·«+{S‘ÊÅÅíµÔ8Ôm7[.$È.ÉéÛmµÍk)m:é3TF¦ì/€ž(òiÛöZÊçv×�ÙGÎî%Ù¡!ZÎú¬–Uæq^m…”¬0åãÓal£ÓüøÝ\¬[ûâèà!±½Û»ul´ýF¤_��\¯°RK¡c/ ¨U}½ ÉÒÕ‘O0�:P팢(ëd¿ZÔ˜q\f[U¥°S S“’8û):»(Êq×ï7«Óý�)R´©Ç+ƒ4±ËyU©¨'ì!{¾’ó�!3î‡ó¨ñt¾·"‹µ£ÞåÑþ)}’Æf½¤á²ä¾hÛ^U;·Êö”åž^Ou ñhQ²wg¥ÕoÓì%vb‰Q^˜– ‹WÞFÕ �t*¡’ßÑІl²>ß§n]a?d$ûËDe½Êþ”2j÷¹ Ýä‡Zv©•é+×&öyÉOeAê¤\)¬½š¬Ü×Èù¥ÿ–kVϫڴ5ÏòuæèMŠ l–:Õ~d¥Ø˜åž*ã#ðÓTVWê²¹ú”ãe½r¯˜·º�€ŠRNy¶„�+Iݦü¹ö¥Ö‹Ô¯ö5jïs»¿¥¾ä#ekîÜ·›ïÍŽÓ¾&¹Çrî?òüR>µþå÷}n9çKú dýo¹Sÿárª“()†6¸ª¾\Ò±ˆôm›ã‡’ô{¤€Û K,�DSÉe"{“ãn˜i“�Òˆä„ ’nVž&‡6úÛ`•�ÕÄYE¶B:0µ£–ò7÷‘Æ]Jç9}V³eiZ>)³¶�f0¡éìd_ù18}ÊŽíC@ÜY˜PS’xY?L€•� ¥äXXÅk(±ƒ'¥-îSö“/é d#“j,jä\±šàiÇ©"äë5ø~Ï$¦¤bòÌÑèÊ)]ÂÑ}{àK ·2Æ’©+/ L`1:�yXUYI9VÆ6³3ÑA†Ý:»ÑXÈX||v8ëÒeÜ ìÔ4¸ÒSµ ²=(M#çÎðjéwpµ¬E\G[”œ”X[/Ž7B}U'¯.˜l„�»ãÆk~ô™×QG9Ù=Æ„å${È”Y”çëHɹ!H ÛHƒÃ¿Ð3 1تÊJp"ü,¥¥Ãá©Óa”ªëH¯å ´aÞ©ñQ4¼2¶O-¥WÀIïÖ,x —9½Tꆫù)”¬-ƒŽmoÜ7ã.ôµ9€ÃQti´+Bo=zŒwÄБþ˜ý臈Š�Ä¡»ÉæÍ¥ü`Gt ìÁXbYdÛt£\ßufâ¥Ýÿ†©m‚´6 ÷äV~t6Ë5c÷­w'öµ§ñAVOJtÝ,Y,Ô£åÇ,}”Š4·iÏÉ’=Œ,lqöL“ñëÒ±3‚z2h|{O¬]i`3G[ÊÓxútÁÔûf!ô\LyÜØÑÃ1çŸ/"/¯Q1ç[³;¾øð ”äfã©^j¶(ó¾%èI0B¤=(ƒëhcFÉ# 8Œùä2Þ›?D‚çÃŽgìÕý¼‡sÞ ©deæg©¤Ô£3F�Ÿ@#z[ʉy3H|c#¦dðå—ß*ùߺüD;äÓ\r°kO†æ‹ mˆ©S;ôç kcP‰ák+%lÜœ=à»ke�4íÅ× â›oR.m|£,wlÛÄØmèNÏî3QŒíjwÝhhcm‰ôŒTøðá5\4d�°ž"{xÔ¨QX¹|Nž8ŽÆ:±Ì ÛaÀÐ çÐ!€µ…Àª±Q[lÛ¶� [;ø9ÃÖª=b’RàA›n2 Kõ:ºˆæ{XÃHÜÙ¹4ˆ—âý�>€‹�¬uÈ’¼=/ìÇ}J5 t'~Pš¹Ilý5†é;‘åŸ=�%»ÎB�m|=�SJ(ÑæÆ‰xBlã÷¦À–’rÈ*c\ãÌD<ßcN¶H¼x�L×:f2�C]¼öæ(¦ñqÕŠÍ8pp?î¹ç÷u pU`½r9gNŸ¤S�—r[ Š PÀØd&4Xß(]¾|‘D Px£ý´· cÄ6ÎÆ¡=e' ²¶`Õ>¾¶²�JEhÓNcˆÕÞÖÒïPÆ¿H–øX‚nNο•šwäø^‚¬d~’yjDG ã'Ž0ògì;ý”ÿÃò�7_À‰ˆ3lC{²¬Øžæ0ŽX_<óäóp �÷FŽ&ÅdÃøù÷n8mûaOwÊ—:8+ë^ãe²;‡bÿ®u(-æ¾]{”ì�ƒF*«ìdCu�$:„lÿeRh0=ztC~[·üŒ”Ô ¶eY È:dÈ `}í¥gA†g AÉ)SïQbÞ¿üò¦ª�$1ä5Xçõ¹4GŠuV)wLüU´%£³­¾ 9n·2¬†=�4E®¿“»3–ýÎrê≻C`\_‚ÈØD”PžÞ˜óá””L¢5 HíÂsŸ?y†ŒÏ©°©Z•ƒƒ#ˆL}Æ}ßñÓ¸{zhb±ÒÁ»º"›±^÷ nÝvär|<¼'Ãõ (¿dÜÒÙrãê�ð è¾۟ÒËFÐçxßÞ¡rNoC×¾c40˜²÷UçÓfà3 ¾œ‡n��)3|…θÆìï¥ ßóóÌ›»o|ð˜P‚|óOËáO@bí¢�q�,âA£fÂÙ½2Sâyn†ÐRË0¤s`ÿ õvü©–ÇNãØä*6°Í ùbÁzR�ç�`²šP}ÉôÚG­à3gÏÜÁAýÛhy22 .ö‡)WÙuÐ>cÛhŸæþÜÀy–ó‘�ð§¢Æ­‚¬Òæ©í¢Æ׸TªmNeÚ‰ Pm[ëH¢�£Œ±ÛÓI¸µéé§^À³O¼®¬Yy襱%%g�D2ÁUWû^ éãÉeOì=µXÉÖÒL3×_ôý<ØÓ`Ê�]Sf<ÚÚS6ì—‘ƒËéà`é§S–šl �³úm-\ëjsjtt ÄFª†D“m²Nl¡òqè…®/€€•bGÍ9vТ(5ÙB¶É ¤î¬Û¤$qúi ÞÙ×ן/ÕѱosÿSˆO`˱‡O'8]{×U0J½oÖM;Ó0$ņ+Iu4Re�ª–¼®bëå¾v/¾Ó,À*y¨’»Ͻ…®ÿÜ‚"¿³FÎ7ÍÊ__HÁëŸ|ÈùS;…Ý+ç�gFµÁ*¬Èkå‘üZ›äùÓ%iž]ågË»gH¼Z±õÊõ¨¡ÿ¤ŽˆUSÍÚ¥ cWìJ’šæ¥î'K©G'ÉG€O)‡vR𤋮Sñm¹[í}[û[lûê³%çSï•fs=µ^dMS`÷ú^ÿÙ_‚Ÿ¨¡ÕgñF%RŸSÙGž›Ös£ünu›ú^I½·f w«ùÿÚÿ/�õÿÓÝü¯E¼%4/“è¤/ùUƒ«i Xz!I-}d€&Usõ¦ßt)yIg!�žú‘ú9<ï]tè5HÙýð�_M©�î»7‘^š7JjÚñš¦¼º¯\Ÿä+9ŸœW~�šý8¢÷ý‚ ;w ‚ìÿ~ƒàíÓ é£q”ële’™r~Œi`éˆ\¢v.4²ÚâòåË0"áLؘ[š!¯Ü^F…èØk®\¦‘͇ÎF£_Ït³oƒ* ÏG' .›ÌTJ»2ngAY «Èˆ5®Çð~½°ãY­”JÚz¾†¸óé(ÓêNã.})WB/_Cu5€½c<Öæ :«-æÍ›�œœÄ_ºD�n[N½‘våè³ú–% Ý»Xá©™p0q§G° ®\JFâ¹d |àaÄÄ–À'h"ôM°}çiô¢·mF¾)b/ëÐà´–1 i˜ÓÕ'ð¤¯0oú3¾d·€Þ {U­{YV•äÀªc?íU-þ®¥WqM%�Ꜩªé?°ªçW㑪ÿo´t «ÓÙ¨³yÓȾ2| ÆŽ‡ù ¢‹§ ¶ïŽ  ¦�é…Œ±ç¢ÉŠÎË"ito�‘Cú!%t,ùœ¥&\A0'Ø%” ËÍÈÆë~{GgXÛk&MË1d`ƨë¤ÄKmÏ8Ni�w¤wº �1$«høÐ!ø÷œÏq*<)é|ôØQtw·Á#“È4¶pâdЖÆ,ü~ �üáîæFÆm"^y~6œý4îã31™¬b5ɵNžt—ú÷w[ ÀÚŸ��92û%Üó·7Ñ~Ã2T�-Œ¼xÒ`s¡ÆŒE šà>¤ÚÉ‘šÖV³ÉýûÛÏ⡳µ7ãÕ·_Ã[=þ�œñ �’ºvëŽ`J-¦“=ŒÒ•�=ö8ŽÑ0cO ÎN~×w™Ì>õ·¿áäݺûcĨ1(×1ÂáC‹—2ã˜J i�!«¸¨�†‚ð�¼<ÑÕß»x®‹±gyolÈĺ1hѨзðgÞ—ŸcÎÇãî3Z”°õ ÙnèãÛO?TÚ«>Íez5)N1P5·íϸî �¨�?Ìåóî�vu%èØÉ“q ¢Ò€iÃû–Cãc6tk+ñ휷áÕÙº€ìéÔãàO@ÝžòT&0b ׎ÎôV¿€äÄ$‚Y=±“,“�ûN0ž¨eå.bÓÚÅåWS™á,"ãñ)ï�£³lû=êfÁ|‚fLÎÎí²/È'›„`©|$‰qO�êzd‡K çsŸÎ>Ì ¯a»–ãHx ÆN˜Æãë)w|·µsP ²Â®êÒ›ö©øèÝWB#b`Cy(nšŽ0^£«ëõç½éöæþ/ÿú²„l”OÓíá§O) ©¬ýÕ—éts” ù,”³w¥jE5*Òã°z÷d\9oÊ»qìuþÔEìÙ¶ƒì4}TÕÔñhÊ 3.mYd9ˆ%ÑÈ:ë]w\è;ø–V‰o/ê ™yE8Jg®:]:Ø¡œl·áãg –ìüžý5ª_ík,ÏÏ #C�ànÌæ½ Võ¼Í1Xÿý÷‡ªA˜4œcWÿ�áêî·¼,£ãÈ•È0”3¶­__ ˆ£frvÏZ¡7ãaRò9~·A¯ @Þ›ëcNu_u™’šB †ì ;%&jÛ^}`À{ß}ø$xùõTV1Êhæ|Ç/õØæ–{¶m…O@æ.øÓ‡ÑéŽs+C�“Ë»Ï΀qLÉÐ3ºE–ksçjÍ:™ÇŠRQ9ÁžRòk7lß~Évà×ïWûaÿ–$s2™‡ý'’:”s·Tq–ýä£1Ê6Ž?'sÝ*‚°ªa»¹ë8Ûµ7�ˆ€e››ÛÜh]Ž·ôÚ™ržWŒ¥+ ¦õï§°BÝ<;+lÒî]ºÐ‰7{öìÃùˆsØz©—È`¥³&�}vïø—©¤“uŽq«M,Е²’TÈ)ÏEdB6²k,PÎ�íƦF§-†õêŠ=§D^Â[¯=Ïx¢þ¨§šŽÄ“w c’1Ç­jr'KÜΩNîY‡+P§GöðµñàÎ�k°÷n¸µwÄž K£:…ÀŸ3–0®¨¾±%zõS{OÆeMÄ�mK0íá—©6Ș׌YjdEð¸çšñt ¥âÛs^šLëùÄ"�Ð�ß 5OŸïC5°†ŒW­‡ý§âPM°Ó¨¶â`´?ìÁ‡ ØÓá9 “åwÝpä\:⣢È&5Vâ�[‹³l|ðÒcpã˜}ß/ûààå�NT‰È)®Ãûo¿IÙ{K,]´ #†õa›mwŽ!jÊè¤Ï1Ð�H£srðˆ¾Tù ¡’SÕ– ¬’ÎìÇöíp×Ô[ÝŒìÖ6Œñz�÷SûöŸ¢TqgxÐñÛØÚ :m-°uÓz†HE@@'èÖ¡º$ŸlØ6Ƚ|íØŽ�4Ia»:ÒqgóÏG�q&VƘpϳ|&4€]ì±Mdï³›²YÕ»öçX~ôɤfD`õÖwÇðFÖæ.¿ Èú{\íÕì˜7rÞ�?ù÷¯çÜÐIùÈ:‰K?÷‡EøhÙ*|÷ï�ðÔ“OÊêV¬ÊŽ·ñu€¶,WŽÙGŒ¸î€w+Ù¨í¢â`Â1°š4ŒLØ =*`&ÿ%i×›÷{jž}ÈïÝ»ï-­Êy /àü¥Í0¡=M€Vs/üñòK2ááè¯dŸ�v–±~H„ÐØIÆÜ5ý�Bå†sò¯`Çöïrs»E^~¾Û9‹Œö,´1�ž˜£Ää‚�ÏÔû q7k¯Vù\M­^|ÛBâ±J�é‘ÑÚÆ¥ƒËV &}¬ ìj�É:aÇŠ=YŽ‘:´JÚûÀ* Ý®6戾�Qú:0ûþS­©ïê㇠Í�>E÷¯M%xeLRðüÃI9ÇCÙakö¨œ§pݲJK{»Ì²ÒR éǪO.Lùì}å¥lM“v_©ö‹²ÔNmêëÐyð¸Ñùщ9¿z-r]"'­œ¿ÉqÚyÜè·z^ÉãFIÎ+ý³°m5ÌÎʡ͊¬@½…”Oœ®d_u[Ó¼%?UåR:¯=÷ê~r„ä#UùòNŒoD�±éCþ7-§æ>Ô)c•›»r$–$˦÷PÙÐäK°ÁZ³o“C•¿RË{¡‰W|ó¶Bs�5ã.ƒÝ‰úl®l-­Ó®å¾Þì™k)Ÿÿ…õ�¬ÿ wù\£¼Ä-uÒHHC, \Çõ{ ¤!ïµÁmêi!�’¦1¼.7|' i(¥SP;i‰Oz+  ”OpŽ•k '“:iT²­icÞR5˹oåü-å“v‘›–¢ÛäYd]Âo½«´ôb\•¦IíØ4ž;/ª¦u¬vŽeŸ½§°�ÚµË~ø#ÇNÇ™ˆ³¸ï™Pªo�9 ¿…ƒ­AÓ0lÚ´•4‚MM¥‚ò*ê8¹«Ey½'I†°§ P«„¿Bü%ìèm{üÄY%.P½Ý}½½0à½9œà–bøˆÁdFUÁÚµ3&Nžˆü‚\PÆÌÌʬ›Æ@IDATöÆHË*@UK¬?r嵿hcdŽñƒ—QI)!73È$¥÷Uã|™·ABzvî>ÂØ7SÈ<²¡d±)¦Ž†—ý„¶4–Û2kFÒ%TT×0öÅÔ‡^£¼]$YKž¼Æw9u�}:à�þ4ªÕ›cËé¶8ߣ'Ž‚né²ýñÓÁ«pµÓ�³ƒ �ƒ ðPL ð.^cV,xÙ—NP2ª-z:¶…cÇî(¡qèÈñ@ ?/HM“‰ƒOÓU-þiH]‚;òùoMK‹­¢­5¼;]V}ýÙo”�¥¤‘1'ëG�EÐ:Wâ¢(!¸ Ei±ðí9§"Ð…¬I ù¾Ýƒ)Ü.N®Œ·{’qUCZX›««åß/@÷À`‚Ý)Ñè«ìrŠùòìèæŠ¹ß-EBr*�"v4¬¸5d1þ®Q ;à«/>Ç„ISáïß“²qÎH¥¥jÄ—�Û»\4#ÎD`2ã¾=òðà ùÜ©Ø.ÛvhÇ:1Æè¡S”�» Øj9±ùa¸;Ø1èß—ñkµVyïÅà¹qËfvðÆDݰžg}oûeÈž’4eÂd`•ßwM˜¨HÂ:¸X`çÑÕ˜4æ>Ÿ~eëz¥­œèÙA?-»*©'cK}ðáû8{êãv¦ íj&¦MŸF†€ÙÊ=é5Ÿ†CGŽ�€1#F¡7 ád?š™P²­y”"65·ÃÚ•+È.×# cƒ•«×�=»…ÙŒõ\S‹e«–"…±}ÃŽ¡<ó<ì �æ,Ù —¯0¾Õ¾'mè1ï ©Ñòëo¾ ÆçŒ-š„^z¹Ñ¶›þáû÷=€<ˆGŸzö¦»kï°ô›7àB©s3 íÕÚßW;âä1 ì„+œ˜µÓ×GVZ2A‹b2¼òacH£YA):9£JÏŠùIŒyŒ¸èóèÖ#”�¯gŸMÇ 1Š×è°}7ç{^ŽBÊEØ#ÏÌžÉ>cªv¶è韛q�²†ôP¸ÆBµotþÎ]º+«¬lghEã%™"üh'g‚Û=ùžÊR¬°Jûµ¾Ã˜10ö® Ê:GJàJÌTOµµS:£‹õßÿGކ¢_¿þÊf»v&ؾm;JËËà¥Õh«þ¶³»^öæÖ×^|–ßöÈÌÊBo2‰îÿûÃðåóckmÃ6'£FŒÄG|¤f‡ˆðc|.{ÁΙmü_áo'¨y mØ©™=é `|Ï^½”­ÂþÔX›"(ò�µŒ$Œ½Ì{¶í8V`Ø ªµ«+"Ã2ç.§ ¼¼†€–fL›¡dåÛsžxúEþ®ÇØñà `¾ÝèÂxQAÔóT͸�žˆ“@@ÿáxå9M;|ì$�¿(Õúâßo8öÉ¿?Cm û„Ö³EÖÒƒ†ühÊJœ^8{³ï� JµûÅ¿¹=ƒã¼bèÑ�åíæ€G–Q]Á‹L¥ä¤XìÞ¶Óîí¨tàíéF'œ}0*ÊBrQz°¹kÊt–9ýúhÞÕsTYqp¸Þ¿ªe‘e ™ª1—® =?I°:RZðôþ=040ųO=¬Ä?~‰cD}>ƒ¥t!xõª_Å^”ã\½À*ûý–”JcÙÍflgZJ°ºò¹¶ „äoX%#3KÊYÛ¢²4•ãð*©x4œ¶¢´îþеל‹ŒD—ŽfpìàÛXjØùÚWûöég†k0³´Vœ2|©bÇ1�šT§Z™'ÞLY(¨O_d°ß± �úðS/5¬ÛÖÿ¤È�^Mæ�Î,´þIæM2×sáóœ£'aAèôGå½6:}zR<~Y9ŸaT|€Vu¬¥qÐÌ™»J]µvnyüøqä{ã…^h&·Û_%åéZ)—:ƒ¸ö|V™ß²~Ä [æõb�iÀ�=þ=º|ô¥âôx£ýd›!Cˆ^ÂgÀª¦13f ª¢ŒŠÕJû°çV:y0Ä€;R9¾¼”œ�lÎ�cy¿bc9dø‚Œ ]:ëf£Nß[÷ìAPÈPʳ'(RôÉ”Øõ¦ÒPŸ!ÃÔ£®–·ƒµ±.ïú }‡Lhx?³Ó“�D°SÂäHJ§�uë†E03ÓÇ7_~…I÷<„ºâ4|ööËœÃæán:,[�-^˜_Ÿî!HçR?*ˆ*�¤v~;‡Œ" ÙqtF¡*UÀÀq ÀšG%¨« ±tÐí‰Â `ñŽsÐ¥¬w&ßÿ4esÛ ME>žxç˜èb8CÒøu°F·áÓ±…Ò¿9WãN§†!„ŠÑÖÌvS­!P-ríúì׺uAq)Up̌џ1cW­Z‰}÷aÄàÁ¦“9¶+¿¾ø'üè jjj¿î~”¦6!ÐYƒXª’D?S¶!>ù0¦M¹ E¥ŠCšÈõê·m ˪LôØ:†–Ðe¿Os ë.Nž=ñÓ¶P¸Ú2–zçnÐgÛ\]š«8܈˜;¥>ËËJѦ®‚ Dz w`ÃX«NX¿q+ó¨EG_?ŒG€hÌtãÜPX¥>Ë‹óp>æ2�¾í�“™ŠÄ«‰||t`ò+ aÙû·§ô´h¬Yñ4‚§ßRfúo\<‡û¸Ÿ AŽxü¡çoéøßsçKt„´²h¹?Z½÷­­€Ö'{ŒNd ¤:ð]Lâ|ÓE)ž%+ùìvívÝùKˆü¼sJépoLVº8${q.¯¦èóÇù¶ë 2*FãlX>KåQ‰âfÎpjM—ÊB>júzáBú éã+×.ÍÔeYGÉP»Î¤Þ¤¯ûªú‘:»¥¬©`ý>@Yeö/ªzBà ù£]ueá÷ÇÎèÓé°”Nz>I1ìŸ(}TÊgïd¥&+ µÆ!èú‘U?\ÈXXI¿±ù X&÷NH9e¥ÅrŒ”O½ÏMó�Ü´ûl•X$yk÷‘&dý_sJˆ½˜Ú˜d»úŒ¨å½^ºÖÿ’ó «³µ@Ÿ�­[A¹fÍ=�z—ú–kÓ.³Z>Uú¿%ÆbÞgïê§&eª÷YJ.÷QlÏ"ã,ïŒúQÇ­¿º–÷TßEÍ»u}?r›&¹õÞh_£Ô�¬WË%¸…ä§Øý¹lî~kç-Ç+`µòìÞ<ô�ö±êo°TŸ1Íõܼ­�ë�ñ™öõ¨yþÞK9§Ô�|4÷á÷>ãoþ�¬ÿ½÷îOSr™šµïP(r* ª-ë /¢ÚˆI£TrüÐõhiZr.MãX»ÞQãËQÖ)1¹™Å5èæg‹õkl¾¢-& uG¼© 6]ÉD�Ud˜¶ÕÁ‰‹QA£{=ãèëVÒÐT‚‹qñÈÎÍ"ƒÁ†,;èQBô½U=œ­ð�5Œ[VCiÔȘ‹Ø·g7ô8áìßÓ)E\¯ïˆ•+·@T“c¢")uVˆ )Jœ7a­“1•Š|ÆÖá�ß/ÄÔÑ&ˆ9ø3®&ŸÇHÊ¥¸Ò÷ËŇ0¦?�÷av) Es™^„GŸE¯@,^±ûŸ$£1˜2ç°aûA¬YôÙ<íP‡ƸɪªGGK ½k&*rbp:tü{�Ô®þ†ßï¾û.Þ{ï=Ìš5«a]s?n`ýò›¯ð傹˜:aJsYþáë*êÚ ¦^§Èj¤SJ Eç.¦c¥,OPN87+•†62}ÎÆ`ÒCÏaý� ðÑG_ÁÚ¨ˆR¢kàhT‹#W«Ë« °RGË"lAÏ pqþõä@.ø‰GFtL$c ¾Ûpý…I¨ÈJD­^;|öùTÓøíÈØ’«ZFóäçæ˜ðQö‰ÜÔÔTÆÍë­¬²R`=þ¼ÂêT3w¤wx@@ïQu}k–'¢aØN_‰WÚÒþ}9ÐzìÁ•ͪ1S¹œ¸&Ô¦¡° Q�W÷ñ£'ú0:R¨mÃÎ;±|óJÌšö ºkÃòž™3(ù8.$ÀÚÂ^}i ç»ýÁËð¢7» 5^‘³0wî<ìÞƒiÈÉ¿A†ò!ô¢LsHï^X¿ë ¶lߎK±çáæîŽÀæÎŸ‡®dºŽ7'NbÞŒ±�˜ÈóŠ$gìåDDœŽÀáÐ}â‘K×â5ÛǘL'íG^v %Ë‹Eù©ÚÚ*ÆçÝŽ“d¤¯\½RR×¼wÆ|ÿÕÔ3¸7.�5Ÿ��@VØZÞŸ î[Â#ÂPV«‹Ñˆo%õê?î¿`•ëÚË66›÷×ÂÊ�ŠÅl{«VÉÖÃéßß]‘‘Ô§Ñ^‡í²#½sõtti´¦1¤*ɼwÔI@Ùæ ‰™4ìÛ@Ÿ÷':ú<ôÈhX4>¥JPÇöÒ×Çõå¸@p¼˜1¼ó òÑ{cÔ»ÓiúuXEöéý³iÈZŒÕ4Ì “âÇo¿¤Qç*�f!øäõ§áäÑ Ëμ vdŒ©Èr^×Ý÷Ì Ó@ºH|�£Øï¬Z¹”y?Ú�÷ýCâ›úú÷AèÑ=‚3Y·-K‹ ¸Ú`UË+ksɳ£<ùþß,… vf›§GF‹ óRÙ˜QqáãßCaÐÓÎEùÅë@êÍòÔÞnÏ÷UbHmذ•àieÛ»aP¿�Y;)»‰TâU: 9dSÓÄqÁŒÓ܇ï{/<ôÈcl“ ÖÅEG —ã.2Š$•PÒ8/3…Ìžëõ¸•“�:i€g5ouy>ìäRVtÚ½O)«Î�5ôó�Þw7l�;aã/{0—ìP{<øØ‡ì‹b‰ì°³‘,ÿ¥žŽ¥ëšÕ˜9óÞ_¬’éÄ)ã‘Lc”€['O…¡®®ž2šÆèL€ s¾ú«×oÁÜ9ï3ÆìPEÊY ”÷²×ÓÕaÿ•BFr{µÈ-.ÅÀ_A�¸Ýé0\ܼ�÷=‚ƒ›¾&SÉ_ù5"ÂŽA@{kª82¶ºãô±KF~Z"–‘ùdFFøß_ý‡Ò–1,CFj"öAŸa¬ÜÜ [–ÏXìåØu$œm†Û 2§ÈË$»WâOœv¿“¶/VW–WÖ—žÌúõû•”͆ŽZÂŒ�55-‹uéJéþ/èè‘Ͼ¤œÆF\fÿlë`�m›7ceFQ_�_vîÄÔ©·f$—J;zËW-SÊ-Vb ~^²”¦d: BÇrlé×庸é!æl;%%Å_D!ÃX\‹‹Þt?õ~V Žoÿî]z««-Û‘åeïæÏ¶Ü˜dîë y9Ϧ–68vx|ì°fw8¢£.â‡oçaÊ´»åÑÚ?áçaûžeð.%c…Ϭ0}Ô1GKylX¿é™ˆŒŒæ.µÊ³z1&Ša;ŠèÄX�-Æ´i·~¿Z:ßÍÖKyåóч‘ù3„íŽfÝ÷&¸ ¦ô„h:å1ö4 Ԥαd|¤–궦K™K’9´œKÛø'ë#£Îá«yŸPÆûú KÕüLp:˜y£íò§+�öä„KŒ»ºQqª­©$0WÆ6¨ô9Ä…K©ŒŸƒQÆáê(«ÿò«¯Ã£½7ÌÙ¶ûQ¢tð°ÑXíLUw”²�prµE^±>üØ–v팗^{� ÝQ�•„¨ˆP*ætÀª¯?W@VöA%t�8{*Š}‰FL~€ù.¨Í¹H€È!£gp\é@'` %vjÓ‹8½w••Ø.@”dßÁ ¹¹™¸ÌXè‡v­…wç@†f8ƒÈ°Ã8î~„ûSmi/|ºôÀ;o¾ŠQtðõtw »=&?qìdBPZT¢¨`«—Ãx§mýÔ /‡#A¯ O{TqìZHpµÂù ÙQ[MjgöÓ®¸v÷SQÁŒ±š%º5¬Q¯OçÇr¶“Ñ“ÒËúµŒõ؆“u ÌpîÐA:/W£¤² ¼ÂFÒ™ÓáøjÁ2´±tAgÊ´Jh€ÒÒ:ê™!>.Û7mÇ“zóš��–Àø±v.$›2ýA¨f¬p#ž¿ëí"YÈ•´q´§ÓòØñS–ȽY†v&¶X¶ä;E•"‘ÊF¾�»òþ£¤BGö®F[Z&’¢N ŸªKW/Æè‘“”r݉¯Õ+Þà=µc¼j{‚Ïv­XãSÏádô.xµ÷GØ™C”v®¥³¶fÝÿºw¹źcy¬Þ²�ÏE!<Ý|ªQ¾YyùH#“µÃn|=G .å4Ã(EÃÇm ìŽÈÄuÊxÆØÀN¹.aµšLÐBêH!á|—þÿFIÝ. £NNú±·ŠÝUú¤¦IÏÇÛ Ã¿;Ár/<=yœrO„*IêZƒ”Z_r…­)`®Ø|U‰`�í˜@!·Ëý‘ÿr¯›ï$;ÙG¶K_Ÿ÷Ň ñFýý¾CÇèO{¢“^C}Ü.Ȫ*6J½É95Ï[�Þ@ÊßRÊZ»¬¡ï[‘€â.7MšgUØl‰±˜µv©�jW�—ºj.?uû�\ªÏ„ ì6½n±éËøENÅáM’Ó2–ѯ©³†w™Û5ùÍ’][LªÔ²ìКqmsiÊ«©cuû�žuYþÖöCê¦i}içÿÿå÷ýÜC@*í´|?ûÈúzŠ>�G£ÓïaDü#/Ie¥ À*�’0>Å£F»±Òö€‘FAîßÚ8´æ¥ñ¸ÕóÈ1ªw‘œC:xÕCG<Õ$¦€Ý‹oÔ2¸»ª{ßš²ÜÎ>ë7mAtüd¥&)LL KNv®¥åË–Àɤ” æVè1Æa`ß2òðé •Ó–²«7KrÔA x"É€ÃkŠf2[UKV(cê ñ#èáS KJ*%áJ¾1'¿öÈ©bÝÐã4#·Š@§%åzív6ž’M{áÀIâˆø3xïh º8’ÍjO/U¢ˆæçŸ{ W—. ; 8Naƒ¤K¸RYŠÃ‡�2ö�059Ñ´1¥Ü®.½_�ÐÖУ¼«10Ä›ñ´Jé¹[ ÿžA”NBì%>ŒEÔ³g'2íîcüÖRˆå»ï½�ºÚzìØº\Ý`ïB™$CNª;1FYOØšÒûWß‹¾z³g f쯹v¡Lp6%ÔŒñé¼å¦çò¦ía8E/SzÙVpbɸ¢ù”O Aô¥l˜Õ¦ÂÝÙ‘L\?¼ûÂÓ¨#“+£ÎÑéå4^™`Ê”iŒÓ™“k‚4Œ94{K 7ås§S�Nú]´ Íwú·’ŸÙÚ,V9V¯M-�h@™«#ŒÁõ4½¢…ž„³­:0Îm '])S:næ=è;h0ãw’åàâM€î„†ô §¬ ²þ²}±R7ÆŠ4Ó’rTËx7YA&œ¸ÛÓk<ŽžÚŸÍ� 2sÚšáÍ�>@pŸÁd©~…2ŠOþë6þ¢€6¶”ß!›òøÉS8Žçž{FÍòW˽{÷Ò8‰nÝ®åo°æg^$éÌúWùÈŠ² Æ"¶·T¶EEG‹C?'B×ÁBÙàêâ¦l—/uBòæ\<öê¿áOVª­Õu°DUËiì^ǘ‡NÿÇÞw€Uqmß/@ŠHï]DÁÞ{�5ÍMïyi//½¼—<ÓL4=1&FcïbÇÞ Mz¯Ò{‡ÿÚs¼QcòJ~ÿw¾ïÞ¹wÊ™™3gNÙk¯µÉ^üUû±�”ëǘ»�D¢¯�Æà{ðÈaô ꃗiœRÏ¿lÙ—JlÖ/Û΃Æ{¾Ë’Ôx'Nœd,µ”O­ÂëïÆX‰ÛhÀ ¤Dð@ûõBuy!ñª&DíÛ…ZÝ2¤¤&`ÜèÉJƒ�¢±9…EHIK ûȦô/ÿ{u§7 ‹sª3hзvî ‰£YVQÊ6²›âE_KßÙñá^Ì�,K-?¬øV‘t}ôñ§0ç¶©Œ³u»víA!û) czðúbÃê°iåW [ÞWKòX¹¨Ë_[3PÇЀ ³9ja¿`U󪮮aüQõïõ²•@|eòÜ=[“Æ�Ì –cø¸R&ÞÇ£¢“rÈ#;$—r¹-”~gœÊÑSçÓš^K'—Ö�F4êè#=)Õ—òÐ‡à–±±ºÒ�“žŽÌü T•æs÷" §‚BQUz ‹c‘›±è±çn¹l&KBKbU;#_??ÅQãÝ÷Þ& > »×~޽GÏ`)Û�Ê(…Ü×ßÙ™©¬?µd|UБc0zù÷Çøé³1täh�Žâ•矧“ccºx`ùWßSš0Ti+‚Øæ pøÈ¢»±~ý:L�vc£�öõýÞß�,º{÷ïC2%èž}ú¥[ÎîS²õ?ãgz0CBœ>syù"›¬";žDÖ»z�.\xÀz‰ì…Þ”w©Ò7^�FJËvIÝŽyÜÌÿV¬ÀÎ�;ðê+¯(¬Ea°ªÉÔÌ q1ÇQ]UD ÂL:ĸs$ «Cœ:ƒ³I2€®N«Ò¿ñú'xùåg°nÃNüåÙ(�̬,|ÿå§#ÏòRŽ8p�²ÔþÉæ¿áa”Ãd[}6†¡ýÈz¥AÓÎÆ ¶ºRM!Š`Y=û�§×8áHk֬šµ«1{Ö\í,õ[Þ!‘V¶05FÍs�ã ©T}ýÂ',D e‚÷>Ì÷¤AmgäjÐÊÁ›5 òÑåÎG' ÄÛ CÇŒ¢4o)¥+÷a(ÙQ>ù4в/bõºŠŠÄ’Ï¿PXÅ‹?\F™VJKnÅ´9wàC‚Òm]¬ðÚ›o`îœ9 ÀúýŸ  7,ùúW×M›µk×côð¡í†áʪ‚Œ?<žñ k‘¾;Ú -P[I'ŽütäÒ‘¢¶¦ã&�Ç#�<�*Ê?76Ôò�#ůNr�™Y™Ê³º¼€]³ŸfרëÚ«¶/_Î :>yÚuVí£`ÝøÍ‡*Èìs÷ÖÞtÕﮌknëÌ8±�³=ëÈLîÚAQáàúïÙ?Sž 1;ÈVòr±£÷d‚a�\®:Gg¶­X†o·|FPX0ÿ5k„Q¿a˜¾z�2>¹™9™¾~ôæ˜ïäþHôòñ!;­-4únÝ{ï¾ó.ÛvÏ›Å�ݬììºofýô™·‘Í>€íCo2àƒéX¤ÇäX‰«}òÂvªn8)±†e]{ÙÎw¶3ƒ–ŒËTÉ=™;‹áO>ÚÀì¥K… ûª�´Ó °ª×¢¥ü4†H H.çÖsq£Á[£ö¤:×uœ÷«×Ø`U׫Ælõ¿ö²�Læ1#4Æûœ¼ªüÚY �ýÏ„ ¡ß¥•1ªõ BÇü«ƒ'ÕQÆ�„¡ƒ`dX:lÂÚw8•g¦Q2”N]º:|º(1”׬^/gT—åsžjÅñIÈäXE¿1}C±qÝO°sòÀ,Æí~éñEœëcØèi ÀªW™ˆ:èZºôa{o ÷†cd�£°%òʚхŽÏ¾”»OfØ‹Òâìàóìnyµìú¹ÈÕp§q7ó+@F*ã’d ¾¡Cè “O'c´R²|/ëþ¶ï–(ý×f²º+#ÖÃÛ á~¦Ø²ç�x)ÍM†º¿¿Y­­§À®G†��Äy”/¢·¾ÇùD5 \ÃÍ:¦§£«€™ræ¶Ù“ÐL 3�Šæì“{ùö†%9œ\= §gH§8Ži $›“)g 8=¶P›ÀÊÓ�s÷ã˜4ÿvM5‚n(+ÎÆéÓÇ)[¬ƒ³~fLX2û @á…5hÒ·‚+ÇÛNötš~ü XÚõÀ?ž}œÎGî(Ì£Ô£©fM˜WΫ½È*®ohE4çyVæ8zè¢étñðCø1DJF6ûu>§o:KÆR¡ ‚ïG£b#0ëRƲðb,Ù ðï7î”$¶±¾5g.íz©þ®ä¦OÀ(õïu—1ñg)g�O›€.J+ �uýÎÐÕžzôåëûŸÚØŸ UG€uÙÒO‘W� Ö—nW“#èì�h#â³ófŒùx:1=÷ÂßPXXÀy›“â`+ûž:}ytdU¥“´Ó�>-6Vq0>b¤CYö;{þ,ž}ù%*†YâÃ�—ÁÂÖFÝÌðÐ�Ñ–á¤8i¦¦%£G �(Çh§ÅŸ|„cqQˆÔ)ÈÚŸªuæÓ~FûÌ•÷O;¯ëý–~Lµ %  €]òÑvû•ÿj:lÈ>j»'�Øß´Ûxu_Y9¾ Ù9ŒEM[GÇ´|õ×J_`Og‘.t’lhï˜<òxº†`ú=ƒàïD5 ä’Ù™šOõ'‚ª è|Ã÷+HÉR¯°:ÛôEVÁl?òO4×›ãôÉ}´¥Å <ä6ªø°�‹9ŠÊ†\LŠBnvûæaŠ$±£µ/º›hl�‘'Þ�±!•¿¬z+yKùœ �¥”ígë°1ˆüv)|êk¥ÄRmÖÕÄgíxoò_Û~,ÿEº·¥¶†ö+ÌaY/ÉsóVÆêÎ%ÀlŽ!·Íî´�Õì­ažŠ¬0ŒÕôÉ­©Vatj÷Ñ2~�û�Ïõ’l—þÐ4+3I$Œ%ŸÎ@FX5é °& «$õrÒ¨j ²¾ãøOÝ÷÷.U¥N©¯â\ÐYûó{Ïóßt¼Ø¿å£ípýﺾÿ�¬ÿ®’îpžÒ#5‚’?3È* ¢¼¤j’�†íV=�ÔõâÕò{ 5Ÿ×R:Í@èJÇ!�°€­ÒÉK#,I3�¾6­_:ƒ[�ÜŸ:u ›6mBvü˜‘cÀ¸QI&C’NŸŽ¦wy"e?êqêb.ån{(Œ.ôÖ§ñ2bÌe¿›ùRe¹·XÆ#i\Éã„°±µ�=�ÕŠZø†G=�ÂÊ8d"�ì(.oA êÙCšsâp!:Æ” ˺T�C©YnØV1N§Ù¨ßËp$ŽlÒ˜Ãð MÚNјVrðgs¢EÅ@èRöË’Þwv¶¸ï¾{áìÆØ¯Œ¥jlÁ8ªnNHfÞ:]]8�¦L0ÁÒW>ø‹ßÿ§œP³’ÿJìß›8p²ä1uô î×/cÇ�Á>2êbÒÓЛ,—ž¶môÞB- UÏ<ñ^~Ø Ÿ}¼ Âz!0´?ÒJª¹'C{ëQÚ7”“/øä³2­BJQ7däW!ÀUg’kq,šrȼ_WìÅ9ÆÅÝt(‘GS-ÿøçRŒŸDÉb-p«3€U}FÚëÙc‡°uÍ�f§{+I6l?ÀX·0ˆ1íû(Ögã)3eF&H=”‚•ìS’È IŠ9ºR¾ZM)q`If´°nÜ·ˆÏg*�Úahb]9I6d�Q‡ߘ€Ä•úsÛìÛ•Ã…U»èž©8vš2œ 9¬ÿ&4n‡ªYÿj)àª6Àú«:¬ÈO;Z-ì~=™²ê®¨à”ÔdÕ¬½ú;,,˜€õ ‘)ôþõ¦§ñ§Þ�®ãÆ¡ ªî½€`Ê%Kzó�·VÎl‚H’ì‚Ir#hÈ ÁÊRþ[Ñð‡^|UÅ”)k,“ÕØ8`,¦~üÞzýmø…„À�r8ôt ¤Ÿ�·|ùÅ2t l?†#ˆLøø‹‰ `ÝÐØSŽz:zØM°@ŒÎÎ.Î4þ´(nQ‡wÓ€f€£Æ  _?e[ ™hi|§]ÝÜ�GiÔ<¾·-:úŒ5µ4vÛY“‰:w˜ €1_�l¬ðÙ—?�ù¾¿ü²ŠÆœLJ!^ "MµdVef ›¥ŒÈ®”vÂW‹±&÷v–ñ…ñöé²%èÙ›Þþdm¥¤&á­w^ÂØ1pXö»Ù—Ón  õ£Å‹Qœ—Aãq™‚¾”‚o†A7‰YjB@¡û$=ª-”ßF‹ä´\Êѹ°®¸ /3¥lg[›ilìbwÿ~”…£ì$ Kå”5!ÛrÆÈ`TUW#·¨�@­RÎîCRV9e¦ßÅÎÈ�4\Z`뺵Šc�•�Íͯ²ß#�<¤È– bÝí˜~Xþ=ûLW²¦O`Ó–H|Ǻ™’œ/¾û9Y)”µ 3ä$öåNàͪ¯ß²›×oD-;¬ûï»ñ”¥¶3ÓcŸP�çÿòf¦�Áý åâ±áû�hè£Drq î¼÷!Æ€tÆgK—Pþ< q1ÊåÒXeÛ‰ä©ìpî¬0c4ý}Çë¿Ñ1ü‡ÒcÓ‰ùRæ°û�¹æöþdHuX3’NcÓòW‘YÒ›·nÇÔɯy¬0X Ú¨2|u;ÙÜÔˆ²šäd§²� Çܹw\óøë­œqû<Ž›�•ÏÐ!CððÃÓ{ß düØ_f.ÄÒxwéÒ%4~ŠÜ´‰ÄIlÑa¸=øñç4eñüý¯:ML,™íIÉ(¯jÀ2f$`ëö�8tdû¾Öl_:c±ª;©ëÖÕË”úÛ70 §È~ÿÛ›/ááE�#,t ²ë´i³�ÀÄӧ߆ùsoÇ`ÖW™J\½'é�v;�×’V¬XJcr(NÐ —@cø€�Œm>�àm„â¾üÒKE#·¬jruvR~†‡…ó�tSW+ñ¾:¬ï}ºGèà4�Ž»·­Ãƒ÷=L0Ü?ü´’cPoüŸŽ2¹êúGÐu¥ÅEŒaD‡ÄÜxè™ÚÀŒaŠ XÖUÖ+ýˆ%'̘E�!€F÷Kð%`6…LÈ´‹ÐÔ Ü~×ݸOÕˆ�`§_‡ø¨õˆ ëkòäÉH$³·K]>‡ŸŽ0ç+)ávîù…m~F�žª0ÅÚoæò;އP9A¤%­Zµ flc]Ø—HêÞEŸyÙ!xâT¤å ‘@† �Þz²Oܵ{ã=²Ÿàû¶‘ @M�¦ßS¼Á—û ùÄ_8É÷Ùù7�¬Vd¸©9Mjb‚"‹­Sîÿq{FJ(ÒyÁ?¤?%|=ñÉâç£ÖÚblúð ô®©³ Õ%Œ#[ M~­üd]æ‘èJ‡}EŽU³—w¿8xЪ¢ èÐVN­„IMbûOI÷=x~øü=²øïÓÔáÛ›õt{än‚¬½Y7�0 ÿJuvEF6Yåü£4cú²ÙÂ鈩ƒké4§«G…€hRu⌻ùž'j†‡§Ç�²j[Ó™!)9>†L½+ïŒd(s71pJºÞ¼U`Uö¥üª¬ö=”c5_š9¤°:3ºÊ~ �jÚÀ¬û£Ž«ºß¹T•NTæŠ6ȪžG �òQFšù²Æ0¨îs½eGcvÇ}Øö¨©#Àª8»q,,ì9Q�ñ¡”í†SU8{d &øY¢‰óå§ãQCçŽ#gb°ïbæM†~ž¶dñÓÑÝïq¼»çôr4B?ÎézXé ÒÈ ”nwµÕG~™.ž [¾ª"oþc Ò¨Nàf¡KÙS?Ø0¼�0X¥aoi3¤£ó­Ïc\íFx ˜Œ3t�9°+;¨ £_�‹B:3” ”a;ÒN"jÛ� £Üž9ëÞþÞ„ÿÐÛP˜›NÇ ÞÓö­»0Âωlî"%jfÜ è°O6 …%y p‰÷DZ7Ù«ÝZ+�œÛ„‚¢J‹ÍA„».•œ¢ÑÃ'€ùlƒi½~.tf+Ä¡s�»ãç¬=œ»ãlL¥Z½`Dà´Kk+"#÷ˆõØ„Ýn=zS⸄’Ë9h*ŒÃ‘=T IÊ"èËX®vdm“±K‡Æ];sÎ5‹½�רÒÒ‚•?ÿ‚ÈÍkÐ3 \ÍÊ•ñyF“)5lj@ÉðæbÎQ+páÐ{·Èáü …wŸ`:1øx‘5|„Ræ=ÐV]¥Ì;~øy �8}ô øTHGç,ª"ébò¤ÛÈš½@§¾r†n˜F Û‰1YÁÞÙ‹m›†¥³«Ø´„‘v#IsW7 [W­£×[î‰Ú†=·aÎäû€Uö ª|®wÜ¿rÛù˜STŠÊƒ½Ý�Ûcõ:6¬[I0;•Šs)çŒì|X±ÿ8E§{ÞTæ0 .†ìÕQ/‰™¬…ï«%mÞ²™ãí-\UŽïöÇ‹>€bJÀ:¹xa3Õ=¶l؈_o¥rXÌž4#èx»üËq‘óŠ~�§_E†˜ï¾±‘ÌèÝEßPÉ[ý:vâ8~¡c㺯×u °ªûÊ8kÌØ‰·°ªy¨lDµ-TAÀ.T¼sþð[EÙOmÔm*“Nu\ÑnãÕ|eyæì*¼}ÛW?øÜÝ´“ÑAÚ^óÜd•ôêâg0iü|†ãÒ”“��)ôÓŒY-mœéx®°X�ÜN¶ �Ö®ä) VIŒÝ*cŒ–:S|þÙ;|o±�Ži�!¨ =>{7mŽ.t®û£‡ÞË9z-� ¨"À±5“�%¥Ä�m®b¾Šä Ž]\éÀ²›SÎFFÎtPnrq³“x­Æáƒ¯¢•Œ®ñ%±Q¯”ûe2[¥ŒeÝ¡o¾A&ÌðÕ]®Õ_K®éÃ4ÀjcN†b£›®< à"È¥f\ªIŽ“¶@À(± ß(I›Q¸v…BÂQ™´×;F ”k©^óY°û�8‡+ø£ PÆ"êuÈ6ÍqšœUpNê�fMüS±¹Ë˜C{ߎ×r­²ê¸�ú_ò¹ÞþêvYJY]o_5Oí¥”µ*Õ«!þ\Û®.ìSÁä^åý‘}å·v’wQ}®@ñ F!ûɸF³�öQP¤�åúå9ªï¦ì¡M»úÍ¿ßz¯×ÊCÖI>šzv|ÿ£�V³‘ûWËàF÷×ÙõþÑëÅiêõ�¿ÆøatÖÊœú?°Ê�üdýÃçÍe8gÆÜÿj€U혴Y§z×h£oµß¬÷Ú=Jƒ.�ƒšÄV{i¸þlIîµ”�«"�Ä3Ú¼Ú@™ÚÙUTïÙÑ úýÚ÷'ǶËP^éf:híãÅÛÏÝË d¤Æ'">1)ƒ' «ÄƒùþûÏÉæº„¸è‹ð÷õ¦aÉuK�‡Sz2,iìÑ~nÚywü-×&ƒ‹Ï÷Fá€�5BƒÈ°ð@:A�’òZÁœ„Ñ@gâ„rzÆR–§´–ܽ=8‰±£tÑQ´0Þi¯sG�ÊIÔÌÁámT �†J£FkG8͸�÷â…ן eñ[q©�^¾éøä<å¢ü{#­¬Š�FèéooÆk¤Q6ŽÆ·Š²2²{ÀšƒøôòV2Êadá€ÓïÁ¦Í›QÉk+H:K9¹9xbáÝü`ß­zæöœ ÚÐC–T2üûø(L©sç.À§W¥I?ÇøÉSèUy !£Áì¹SéeZކ¬CÈHKdÜ1Gè˜ZQ’¬ BýÜþ˜àÓå‡y�mˆ Ñyþ aÁ(gÙæâTl!¢ÓJ:xú‹¿¼ð‚8Aü½)Ÿ`~Næ-ƒ¬œƒÀ�ÆuùüRfj"Q]J6'á¾§_QÀPÛ�Œë‡Sç(——�jÆë èËÉš^2È€›8a‚"AäåîLOJxyû"ïâ1 œ SÆ÷é°~öê3ÇA§��½R$/û mÍMøžZm %ô˜&#›ôj‘9ª«¯‡Ùnj²¶±G)eêÌ­$ö_Þ}ó¯ê¦?d)àêµÖŽ™ ¸z3kZr2ÙKµŒI¨‘ʶYpH?ìÛ¿mg�!*¯Ž÷QFÿ"Ì›;G9�Ô÷ËcXO_8…‰wŽEmY#å¹\@C½ž!ƒ‡�í½„ž³fh°°ÅߺP–c‘6_»ù&L�€™Ó¦bæôœ²1îÍÅXœ¡\›×n”2·#+XÀ/‘�j£§º��#ÆO˜„ÔÔ4…-# «Èt?ëJ#"Épk,¿„Œ±lÉcT€õôñŒé·ÓfÏ$›VŸF別´¡m'jö4æÿ˜¬1ÑqHËÎCIÊ)4ë˜ñýh a¬ k6nÅöEeÕd¤bÿ¾½tž ¦t_2†Œ›¢H~ŠQ½0?•RxUˆNfì?ðÒ/\€UwÜô¨ �@&ó!7×#‡Lä²ÓÇŒ;'ͯ'¥$ÄœÆÁ£ŒQV�’"X]Ô*xÝeq^:öë�é³ï¾æ~û£ŽÐ;; ÉŒ[Z|îxù}LŸ9›m7Ù®dÎ`Ø»{+l]³~=�F‰”ÝMGNA&Ž=Ŷ¨†lÄ6Ö_2wiH2b¬3 u‘½d �Úr–Sûí³: •¥qn ðᇋaoAã&ÇáCFáçï—á¥^@5åýDF[; Àúí7?cÂD�‘D{[Çßûë;1rðU«dÈX¡” ã|@£ÓZÊãÿv6mËÁð2h¥žÀÜŠÀ?£ÇLjX³ÒÛC¨û�9s [·m¦tªºJYu3ÁÂû`îül“®9}½)ÛÈØsE¥”s½øÐÎ$›íÚœ™·i¯RÚ;ilÌ-¬•õûöïe¿~‰@jöìÜHIçaX²ô^ó4Ê |;ý ð¹ÑTPT­lÿ ­äóÎK�¢o`?¥}‰�=Ír½Â\»ê:ü‰Ž;Ã1Z>ãç2ì�#?Ndþær/„RyA;ef±}š9o¼õ&™§‰à‰Œ¿bå œ&0[[[J)ô33f*BÃû"ŸãÃÆ’~ôáç°uÑC É€Í$Èøk§¬²‹?z�±^ç·Ÿòðñ“”flùË ¬ºÁ•e"ŸšêJ:‰T§=^~õU8ìß§ÄèL�ÊKæyãP‘t˜mè%ØQvÓÙ¶;ö=�t‚†](·ÉzÍ­¸gÁ¨¯«Ãß^} o½ÿ V~ð7²ß}°{ý�ì' é°¨�¨¨(ˆŠG||*üBµ³¹²³3ðÖâbB˜ttw; ÃȘ»£i½™$ «?�&TÇÄt*+‘ÕºäëeŒ Û t dÜE ²‹Æ²=Ÿ8yãZ+ëàAƒ”SüôÎ"ÖÅ<¸õ¹æ)—ð¬oÖÝ;€c\‰[ªqj“�“ùþ[Ùh  ×<˜+`m¨Ê&é+²Ò3ñ ™4KŸiFå‘è={ú$ú…„áÀO?£o\¼½áMà”N*ŬßüÔ6·pÈ¥±ÓÇw­‚­�ÝŒ8þ£:Æ—dI’úÞ1YzºóYU(±Õmé‰Ñ(§ÍŠ_P½^qqöè‰�Þ} s<‚Ø„h¬Ý±†ýû8}žj"ì×y=Ó__{–Šn8~öÎQ¶ôcùÝgð÷ ýÕ{×ñØòÒRt©È¢ù³ 1”Ð>yžjÝõ±kÿAd\)ËIT”1ìœèÈÅ”uá’rŠ”yAhÈ•g%sTÕ'Æ*Ô>ß+�S÷O;ЪÎÝT#^gà¬vÕ”¶od›aÀ¶ÒÔÄRiÕibl•¹Ø�æcÚ «! Èê|S®ùFÇj_Ëïý­]fª2‰ÌùÕr옿z�bÔ”ëÔ6NvÜWû¿ä'e[N }Ã�K:T{óU¿�?Ìq¡æY_ä¼ôCAøøxc8™ñ¾><ç%Žù.Ý=w ›ºÒ‰ò\8w†Î2�T£†íQÏÞ�È©lUb—–VãÛÖàÍ·ßÁ„1Ãúå¶m»€”ÜrÆú Dp2YÏ£9þÙ|àÒ(Ñ]–z ŽÞtÔ Óôg+¿ZÂ9h l¨baÆ~ݵw(Œ»[£›|ئX[uǘ2ž*t@ùü“DzŸÆšMÛñÝÊå´Ï¯û]ÎŽ>ˆÂÔ4˜uÕ…——3>ù`9%ðó1„jlý¼`ÑÝŠrЊÚT>ë¤/e —|º„2éšñ°)Ç�Fz”é.¡*•õU×/Îw³;Œ ³RhO*-bý²¹jßÎþøùúÐy­? ó¿î3;£’dý•¶Pó[/fÓ¾öìkÜz8‘¶Oû‰ àb†Fêí¯a—J^’z÷ ½ `•u°÷íϱ™ƒò‘u’œÝÞo˜ò[¾<ér­äßgèU«ì“^�õ>Dw2æÃúŠ]Ú ³çÜÏ9v:SF³îRIĵm$•t˜ÕÃ�þ·S¡ÂÙy8F¨€µ¥»rªb*9Û^}^½ÖF\ÊL$“ݱ´³�%!€6 …9ª=J¿áKÀYi¥ÌmîáÓÔ „­_¦¨j‘òNk+Düxô$œ�±=e’~¶kø#Õ>-}¿ôuÒË:éÏ$/+>Ûéƒe±«ù)'Ñú’ü;æ£ÙWS7ä^¤Ï•¤ö·ÒŸ H/qQ¥¬d}ÇqŒä)ùÈzi³ä#ë:žKÉø:_r}*»Z)¯³û¶I}FÚÊ}^ l•ç¡–�öþò»†}\û7Ldy7¥Ü‡P�UyæzÎníõNQßd¹JRËUÊMû½–r¿™q ’Éð¥]'$»?°^û�“ûwxæÕß\WÔÛtZš0�’ ~»ÖÁæÐ>nœØÁDýæ Â)Êz=twÿåy|õÙÇ0£S2ÁÝÄ„¸ÙÓ[ñãXÙvC3Ãl‘”–C !QaªýuádD�NÃ=]+PA�XCèaœÆxoŽôZk$XaÔ݉޳g^Âãço\š‡‰ÿÎ<ÏEÆ—�xÛíŒyÙ‡ÆÂlÆviÀž}»¶&᫯¾ãÒu5�4†�S Y>ð°2ØëfåD�bGÔ”BNI7×·Àݽ'=”@Jæ%²C¦¢¡<ºÕ—àcÛ:4¢9P^´¾²ˆ2ªXýãZzÍŽÅóï¯Ä”�ó,E`o7˜ÙùÂÆ¤ 娂‘—pÝÖ Gò̱mëN¸w©Áž¨hL!0³¤ Å-–è3`<�t³µ«ÆïúíàâvË«œøÏ°ÊõÖ·ÖáÔîMäãI‰œ#Œk4ŸÚet0Fÿ�C)5JV�ÔŬ'ÍÜzpÎoØRH£†BD 2?™ŒëbÔ³NY¹ùáâ…óxšñïfÜu�d¯€¶°JZ¹z=¾ûús|ôÙ2‚·yH$ûiâ衘uçBnz+Ò´±d9Ž­ñ4WâW¯cPDL™tõzuûÓò½×_UäŠýȨU½·h�2cŠydM �%øüæÜ©\ºÊÈ9A£®H2‰§l)™ô.Û¹'ë·®¡ü8q’gK6›Fá&Jr7 Giµz¼òâó8°7=zz`ò82ÉrŒx8™t§ñò_bî¼µéô÷ž[h$tÄ`–‹¬’œØ_`}ïŸï(8Âxª•õáaƒ”e™8é™é5r>[ö>Õõ°–ã៤4^ü´ê'ª/pRìèªì/Ž(¹ùùøô›¯±iõ:e]Ç/‘ÃÓÓÕ¥sRÊÄå*mûÏk60^ë²[�iøÏÆmëù¡¬õè‰XóËZL˜<•ò°!(/ˆ¡a¼®SnGËŽµæUBr{Œ„¾mÔf¡ˆíi\B6rYºtµÄÅ‹IÎxzU”n:j 2RÐ�2š#ŒÆ§%Á�LHG†OèÎñjo:1 #À*É�1tµå2XNzzú°·¶¤�ßœÒ×{�]ÔÌw�q›-©~RGX‚†I5%$§¢¸´ŒÀ†¦~Ëú#F´¬òßÖ«§òù‰ !;�œäDÞ–òÍ~8Giûí;w1žÁÖYQnP“9�Í+±ûåx‰êúx§Mɼ7%;ÚŠÆÍk©”œ<(qÇÏ¢§o°zØUË‚¼,œojZÒróñË–=t¸9†�½0$"DQ9(-Ï¥£å Ô•£ˆm}iU-û©�öœd^&†:´T�hí;ðÇÄÛæ·¬²^æ¾ê¼Oþß “@Ö*Ƶ4¥Ìª$ÉCŒ{ª¡O ƒvh«²½ãœ[VjÖˆ‘Óq÷e£^ëöýËçÏ'ÎESòÞ®–H¬~7,² ÄBr]ÚðQ¿póˆ~™qí@°æú‡(ת h—£rã¾d_‡±ÓÈLw'ƒSÆÊÌ D?Ak‘¬•”CgüÅXø—tðàQªY�ñ¡ü_Åvoä¨)ðpqIôØr"‹N`›‘Ϙ‘= à|E'Ê_¸�ÍÙJ9ÉÑf»Ñ“&¢—CÀãÌ¡Ýè;r.|éx3lxúÑñ¢�ákÆ9`ð˜ pòôÁ{¯ÿþtœ+MÜ ×ÀñÊy 2/"7n7ãÌÓ(Èö½+åL`•$Ò¦ÖÎÊï3|Ç¿þôc²­¸xá0Zª‹àäÎöŽ*j:yp¥v'qlLÇ•ž”·�À:bu5*g>N°3©†GÈ´èQŠ“à¤sgxzaæ�‹(ÿ˸ªM¹tì¢C"Ã54¤ÇbÕ¦HôëaÁyq!ß_/<ôÆR˜±m |�RN›A'›ndY³�Õé{y{áλæQ:¹é|CY®.=¼9Užê4`U†öÃoÈTÆKµe,Í< Á8©Ã‚Ù½èóúÌÙFÐ)%ˆó0 SN× ÷Õô³¶Ž,O*IщÇÚ‰1¹í]àÌùº‰‰™Â>ÕÑeH¡Ê*d§ž'sÕNÞ´\<β"C²KWH¨s³nd,@È�ÑØ¶ï0š99t ÞýøKÌš>.NWÆ&jùÞìRÛ-u÷ZíÅÍæõŸÚ/—@û…¢þcÔ®@ØÞ…œ; Z˜ŸEµŽX:Ëä#=�a0 ’]©‹»÷íWŒ};MQïQïã8ûÉy·ß�z>9Þ‚²Ô3§²ÎÒ?öü)ÄRUj;û��©æÒÕ´;™Å'Ÿ”Apµ/ÇŶtNŒ"ZР( (k\[ˆÄ¼÷ ÇÈ‘Ã8ÖiÁÛo¿‹üìÔÀ_Äð¢cðô“O±±WTIÊ ¸ô�û�ƒè¤jÌ8Æšq•z��-cNF!öÔAôéß¹#‡zì):ôˆDö´)W@ñ]ˆ–÷_b_ òš‰téWäs½6N%˜(6E-ò‰œKŠTóœ:W�k�ÉÕëé¸täü»cÊÊ�Çûÿü¦_¶A�<·™cÍ^زï:„!)1 éÙGááÔñPå9¬Fo‰“¹ƒ­fn.*êèÐT�_¯ÁÊ~Îv¢â䇵G>À©„]¾HXKÊ2q2z Š3(GœÏ‘;9Æš¶PLåÜ{ì„ÙœtÇ„ñP_úC ¿¦†bSNÐÉ×µö“²Õsq5Ò;•Y««_1ÎßÃ\—cyR¶bsöª6éG²ßc ÒiPÎÔ¦Z;ªÊ¤”ãÕw_ú?ÉG>×ê·;¹d¥?Õ>¦Ý~N{³€ ÚI§ˆÍ\œ²´Ç²Ÿv2Óo¹íóÜè·öØG»\ntÜïÝ®ÝîvÌKž…6Ø*e#ÏVXºêGƒS Aó}O¢”ŠuÝr5 ©”›`¢®)a å¿<ó>'Ó.?ßV@WÞSæ©]®Ù¬²Ï¿3É}jê U…¹{�zs+×£©{­|G5’È>ÿž°‡k×­á�á„ßÊåüê˜k¬|¼DÙOhþŒé ëŸñ©ýÎk–Æ¿àéû+¤“Ò4èš ÕŽ@mÔÕÎFÖkƒªí/(ADi´d‰é©v˜jgñ;/ó_z¸:q”k—FZ•c檬S'æ�]„4ÞÒ@ �Ü1©y+�8÷»•F,/7щ)”órÃ%Ìé)ܘ�㔥u¤œe'ž­çN`&�/Ž”ô�k–kR=žÔABÇkSÿŸ=~€lIæë쮬Ê/k‚/½¿[üÜ«‘Á�sWNœ|�1À«éUº0sq®-1cÒH,|ä¯4TÙà�ÖO¿ùÞ&ºð(ÎÃÙ0¥a¯Á’ñhÆ £´’Ò Œl}ãÆOíÎt!vvc¬%3¬Ú± Í;¶WÔúå\ª‚[iv�aê@ï࢜”&GcÜØÑ4€ù*,R+Ê ÑS©MŸFí„‹d=mSäJ¾úv3YŽ�h,K‡c¼ø840 -ܳ#á<ãÅôÛ�£©z°hˆÆîMÛáï\„�§êñȼDÑàæïçIC™1rKõéey¡½Ã™G5Að‹ i°²&(7h˜’¿c:=ôÈ.æ+ÿEÂmÕêUdË'›Ҳ!—2&FºÊÆbæŒÛ”øUÖlS„QšMð-Àß[q,±±0ãÄß O<úFNš†-‘Û�Âv§�æC†Ó}Æ´^æÓãÛksc²“ Æ^ªÄ zã±N�:{†18§ŽF²ž^4RÑxK©hïÞðñ„°¨¬ì]qrÏÊ;—À’ñý ы˜e=oî¼viîÃhäg}ùW¤ìÌdƲ¤§Á Òòå?){Øw ÃWlGǎװyd_ cÐ`UóHg óò¾§”™­¯aÿoK¹oÌš=óîšOÉ?NδSE Žût °ªy«K+ÖMc°åsþÌì¯6²Š �Žž1òþ»w×øá{*táÈ�dœ<ý ÊËó°R­‚† ®jÖÊòí7ß ±#™Õ!W¬dù ¸^Ç8ž3¯cêKpI@Ök%\uå¸óëý ï¾�4>íÚµ ß~ÿ5«lAª¼óú˜5cåÕCñÀc�(2Ü/>÷"ãoµ`ÙÚ�1•,¦PÇÏ<öįNóYƒ1‰±È¤òˆëæ�+¿Çñ3'1{ú, ï�ù³¦ã¡'ŸÁ!WöÖv”*ž‡e¬©<{xÒÐ�D›h#ãÙ{ðý4S C.§‘å[€½{v£'å"³²saNýï €A”§òˆ·|]Í©4‘Í6³ÃNT‘ì ?20C Å·_|Å8·67¯ <&²¯/a=k*¼ˆsqi¸H9ÈôÔX¸V˜9~0eÞóÑF'«•[vpÌæ{ÐjÌçfl|õ³ëX(ç/D$,¦#U7Ê~7bÕòoðÀãOaÕÊ•dK^À�wÜqÕ!�=ÿëbˆ«Ÿã²�Þ¡18�Ê `ïAu�k$W;Xe÷¾qgŽÒ™NŸ³h ’�0ü¨„âëß‹,‘r<ÿÚW$nb-™AG‘—OfÙ1œ=sŽ!,ºbí¶£¼‚ÑöF`ÃL‡ÌiXöÙçHŠ=Ë÷+þv4†’Ÿ0ãû×1:´¬²-»°o¼ú•BÆÑ¹²;ÄSbôð!¼þ÷O•CmYWü}4ЬØÏ˜”1cŽ—ržåÈ8œxï½·»Ó»wï¡Æh†)éN€¾ãêvËO?uÀ*W.*(÷.|kYÅ‘3Ã.«ÇäðyïÙÁ�¡d‘v¡Ì0úue8¦íxóÕ¿’}|!}{À–ñC7îŠÂ# ïçü+ !tZxûÍ¿cô°á0§CýΨSxúù—p.³Aì×,þ;æÑÑ·o?ÀÉ A'ª:43UBé¤/É‚lñ¤ÔLÎi‡£»~+º_v\S6j}=ûò“”A.à¼0_ñ>¾þòŸxè©7n `•lò Š�GÙíÐ@_%W™ï¿°ô'Îë`|dO{©uÊ_ýTm‡Òf @$KIbUûõ q¤põfVõíåò•KñâóÏÂÅÔ“¦ß©l:pd)ßÅôî9–Ç™$Jdà³OfØ…‹Œ™JÖ+Õz´“…‰\ìýÚÖuû^AWCkõúˆŒþ.d§Z˜Ø#5÷0,Í\“±ŸNÖ騰.çÏÆ‘}[éH�Ä9›ßM'¬Ví kw:h¶ZÄ1qãjÓÁ…Û$ hT™“e.eÅi¹ÂHÕ¾&íߪ]Y{� z•¬Y¡ÓÚÖjW1’uÙ¼ýùH™7FEVFû8`U×IùK \Þ{y>bGÕŒXøüé^Jùf/~£=ž®rP'_ê1r *8¦q²Ò¦Ò¶ÈùÄ/„±') fø°ö>_ ¨õE®IÀÁå˜@ûÈõ]/´A'·}Ë«µÛ])_ÐÎPÊA[EîY®OÊB>RVò±wuGϹš6\ê‡Ü‡ä-å+@¥Ôj½‘¼åµ<Õ¥¬—g£>/ù/ï­ä!�Z/dý¿#©õ@®ÿ�bKžj™k—Á­Ü�€«7X�Ÿ8‚g^xŒsÙy·r Æå^Âs„Ñ©7ÜR&ÿÁƒþ²þ ÿ?ujiPTYµ±—uÒ�H'à¡|T邎Þ@*i0`pwù-Ií¥!ûw6зZ†r¯j&K¹õ^$Oéø-Â7è¹\‘�õrâA#Àig ®ê™#ûÞ À*çÉÊÉ£›•1r2Ó_Äúæ½PÔì„'+R`C9!gzº�¥�؈Þêj’ë× ®¯Å¿ÿÈ,ù猳]é ¸üçC”1£LP 60Œ]ÏѰ@©4yåmH,2„�‹=š²âPGvES~2Jo?2‘âè-W‡1Gã ¡ò[ QGã¢Ⓢܻ�ƒÖj0p=\ö‡‹Ñg Š#P߸⮆Üò´cÍm­Íaêí�¨ôN­­¦q¶m4 Ì˜};fß~7½2»+Þ˜Ûö3>b—ÅÓþ£Ï¿¡×ýNxQ*)˜žÆºÅgØs²7˜p²Q o×*$˜ÃÙ»…ÒJó‹5·ÓÀ:ó=Lš4GÎgÀö~=Œ‘˜Q„¨³¥HªrB«¾ k“ðÝ7#íüÆ“0äÄácìU¢¹¦ õ&>HHËãä~ <¬›iLë¯>‚ÿ/—°®ÿâ-„�žyÕý§§$¡œq-¼Ü(Y2^Z¯¾ádBúàÄÁÝ3ÎÀÅ“ñxZ«Dƒ®/ÁFNë7xýî³HÏ*aüÛû¬�Nö„߀(/Ì�'ñ’hÕNç(UÐ×wΛal}óíwHaì7+3x9´åzü•Cì¸]Vo~$%\ŒÃ !Õ·8›H{±xÛŒèÓ9+¾AèÁM—�hû)÷²@9æ?ù%2Œ£F�Â+{åš—!òâæŒÓ¨=°”k(™=ˆÒמdM©é¾GîçD9Èrº}ê= À*ÛÈŒ•�¤Þ½{+Ë1S‡p 5‹†Toå(½¤�:ϲ�¦�;>&9MyXtÇÃÊö°°ðvPRVÌ»ãN^÷h42f“kw,zêÈ,lßCqxèCÉ)o7ü²ægÜwÏ݈<…BWÙ³«ÐRœ‰ Óf¢Aµ÷Þy‡uƒ1÷œ,h8.%3‹uËÝ {(#:ƒráhc;ÆØÐÎö6”7¤1Ç‘QÇhÐ¥¼1™Jn¶d&Ø¢„RdM�5ø†€eA´IÓgÂ‘à“µµ)®Å4’_¤Ä£>&3¦â¿+}µôuD Ó§ÓYÿúÒó  Ö‡æ«VÿŒêì °h-![ì0–ñ)ºu5D.%Üó ^ hååæJÉÛ|DžŒG/ÆY,HID 'ßön^tJ©F-�ß›¾[Š÷þ¾˜±6ëQMÉy{; Ô77ÔîB™çƒ”r«‡�›èóç`ØÜ⎖:¨ÉM ';™­U¥ð&;£ÖÔ�’ PVZ€ÜK(aÌ®±cÆ“¥GðÌ Ñ¤ (6 bÐMÝ» `•”B¹Õ‚%¬Go¿ó*ædòòð@zzW7ÓàÇ8E;#wPæ3š2¥öT%o óÅ 9i HNJÁn²Å„âÕwÃ�@³Äò»TL€š@ª“•|<(MHC®Á~ è·5aòÔé”.›AèŽÐ™G† ˆ{k嬯[몊”º¦ÇkœÍ¾©° "÷ã®…šwD¹x~m ±´†Lý‘iÈì;’`ue sIŸ.ý�NB‡éðc­|šš›h9ÉxÆáèísÅ‹}ÖÜ{Èü+�FñÀHW;¬J†Z_õ|F™4¸Z8õÄß-ÃfJwOdœgaF?´�`ø•6C=ìúðãX¹ò{<óø³”ŠsSÎ+_?®ü™ÛÃð÷>åøf‡»w-ãÞ=°è~€”ÉŒ�#chlûþòc)¥‡³Ò NŸIÀ 2 KjÑHÀ9ƒ²Ä1A.�Õz^ÿÆönjhÀîí�µªª £ö2>Á :J\+}ðá§H`\ÜŽ1Sù®ëbÄ�0\L¾„³ÑI¨kl¡£€žzáõ«V‚«7Xå|;b‹S] öæ]»Pv�1»˜²-Ž{ܥȞ$°“›—C¶¦3cßæaú´ÉÊ¥ž:yœòû\OÆ×ÐQЗqÁ�Ì,ÐHÇ0‰ª§ÿ½*3Å1{av�¸}­õ”d¶s�“—¯£º•ylß¶‘Œº ,ýøìÜ©8� ï oGÄ%Òá…KÖcä]¹ç~½àe­Ï¾¨›Âð+(®€‡“ FPnÓÅ%Š@ëgVòø QîåìÉ“XöÉGd¯‹cE€²NýE‹Äøùm8”r txú©gÔÍW-ÅIÇ…õø¡GàñGžS¶yø:áïo|CKa †×T�ìôþøaÕ—J›ÓÊ0®7�}?wæ4.0zeu=Û¯h2qæL4ã«W*Œã¸¸‹ð nþ‚û³õ*'p}ãÆ³�í˜Ô¹˜¬×6°uÜOû¿žTã–ý0Ôü×Þëú¿5Àì]Jœ/™k À*GܼQÎM ç·žïúWsí­þ­ux¤”¡:Èæ””ÞŨ¢µY¹N1,ªóx'Êuùàm8ø„b�‰>Ì2SÚ3•}Mµ IJAŽÀJÊ\ež¨`ƒz Ì£;ŽAÝÜ{ ¤8Ÿc€bŽ÷‚ÈîvVvϧôýDŽiµS3�„yjieK”=Ø»k7�ò(×k€Ø‹ILÆ\#AÔÑa¾4ò× &½„s9¶ýúdñ]Â[Ëöà½×žÁ˜ñc°æË×ÙN$°ŸBŒ:$ÑÉ#|ÈíÓµÿ>}ê6oZ§Ì?Ô•Kßy†òè•tZ9�Í7!æÌYŒ�2æ¶®ŠLiwª.yy¸² ÉÆ¡mßò»¡+\‡ÌÀ%Ý.&�üX÷5õ»…ÊP-S Èzdo$úô´æ˜õ,öŸ8G šmŠ �YÎÅK‹‹`Ç÷¤¤„ÎÉœ_mZÅp­†˜÷2Ç%øô§õð1(â)9ß®eŒPJkKªaŒâ¦º*›²·WÂH¨ƒ~TßÉkUùCÙù_Nœª«ì*m÷è¨u™]³’•A¡Ø×T;¡ü–öMÚ1iïÕõ��†Ò—¨6GÕNw#…ƒŽ—N¹`2Ýéh ‰�ã©àåîÉX¶¦¾¾ãé,h;koZs›¨ü0 wÝyà”*À¸qW=|Ķ<žmdû掩´¢g.î徯(È¡sdWq$i¡Ó\,Þ|íH>���~£QPR‚ÁaƒáçHðÔ�þ#àßk¨°Ž˜î†¢ÂJD †:šs^(à« ²jì$­¨;v°AÎ/ò¿bog¤Žå'@¬(;¨eÍù` ç<õ§9zò5£®œ×GS:þ‘ga?j\;¨Ý`íxŸJ¿Åw]’úÞK_%}¯öû/ý]e�ÔýDUI9ײ÷hÛÑ…ô"}§db[—{”ü\UÀ[Ú’ä¾äÓÑ™KÛF­§\ì-~‰­_Î+Iûþ”—¿:Þ»ö6õ·Ü¿¤ÎòP6^þ’sÞÌ~²�œ[>R¦Rfj¹)ôeðUau²¬p[˜å2>Ó>‡öoõZ¤loæÞd)#µ®É9¿Øý4öõ!W�K¶ÿ«“\·”…ÔùýG%)§k•Õ•¿š�„¬‘†*œ}ü­¤Y·ÍøÓ¬r¿ÿYoå©ÿ:Fmì¥s‘I•4pÒh‰ä¬4hÚ#šgUŠ•F:bÅ»Fu#'Í{`ÇÉà…ü~v­�ŽÅP¬$Xºñçï°5r5æL7‡+™Ͻ·ÃÇߎpÿîw¯ÀÑS8È,e̾x”¥ç#„rÀ¹ô:ó÷vE+½ŠÇL»‹Þ¼f0aܘÆÊt8öøõ@õZåþߺ.æôaŽÀ“Æû[IÂ`í°J>çNÅù“d ö�¸n¶çÿP’ ÁØè3'h˜+…>Ñ …UØÚŒØä4äÅ4½Rú— è@²æ2²‹áK/×°¡ôޤ±³‰L©ôècpè„)Ñ�€ŸÈ©É‘^æ'X÷Ü¿�^›†ô$µU>²½˜Æ‰Æ4µf\$I>½5à«ü–öPÚºáv6°>¼³" ¹Z1JI{!í„f`({ÞzÚ¾} Ö¹ev´»»{§ëõ®Ê€1žœ(Eihܽ}7'²¸Bú…´ÿ¿Þ�¸2… Âí:° {rªpšm˜$‘e®=vw–fb\s Ìø¬:¶¡b/*1×bùüǃI4d/¼}>Vüüå‚�{ïbcÈ x=fÏšKyâ­lB›éªj‹rJ�_PâU§ÅÆ3ž³eãŠè‘kˆ©ÓnÃ<¶sÁd8ϧŒtwKkEFvèàÊ_ÅãÌÙhq’.r¬¡ŒÍy&6�ÒÆ!áÀpëÎ] ÊaÎ'ÝШƒ¬ý4V™Z0]cýsúÔFæU4A]JÊ^®3kW¯á#¤ä)™[tºY€UÀUm€U®ÃÎÖNù[»¦¼d$ÔÖÖáàÉó4Ì·(±¶$®b eètÉÔ4ÐÕE1�ŽÆ­�0g[êØ«/ãØÖcÏ–Ítþñ„ ßuµ”|3E+�Œwј³zõZdç—#1»�1 )Ee¨Ï¸<©Ø¸mS†J$vMMø“©–”ŒfÝ®X±aêèÏœ{©œ “´­Ü¯»Ö¯¦æNø‘Ù9mÚö9Y7 ²j—»½«'¼ú+1»žxâ¥ÚµêgÔÑë=šlˆuë×âÁGŸ@�ÿüj œ{㇯?§z�.NÇåÒ¹†Ò¿õ=q Ë,“}ÈhjnEÁh}ÌÝç2@D˜,9öO••pqµ¢„V)™‘0£¼i:ÅDŸÆ“Ï¿‚‚¼Æ €¿þí5Ö¿8ħæ“íÉrf‡ˆ 4\ûòñé'KÐ/¸Á�&2SbQÂz݇uY›ÁúÙ²�våm3ç(ÇPJ[Œ¦Õ5•ð`8íÔ@¬ˆŒáÏ—¾�¡Ã®i ¢­µ¤„ÕcºÒøå<”LÿPÖ)i;‹�e’“•�à°! CBÝW]ÚÑ«½»±>�e-ÈÉϦ€Ž"ûèvʆz0fœ?™‚7›>üøïŠQé�+¾~î9´ÐÁF€Ö@²R%ìÁ{²Ñ¿^¾š!hä' .IÖ3磴¤Œ¡²ðõ×oSÂl(3Æ®³£'c,3¦]YïÍž,å.Ê1Eì†Ä}óg!ýü~e�HBfg3�›§ò™Ñˆ®¬²Cû$eFÉwd@h("È0ô÷ón—Þ‹c;aËwPM΀UM'N!;p'ÆŽœLFh6nÞŠç^z’õÖ ófÏ'@ì†ÁdåΞ9WX§Ï��Ó]þI<º,†[`q“]LYÆzÜqÇ]Š#‹°Eä~Ùž«éÆã<0/>û$žæjî´i”eÔc¼Ë E&Ò/$\Ý•Ny‹9æKÁòï¾%0ØcF†‘q^¾ü¨¯¢³YY—ÊÐÃÅ î6t°+FF*Ù ]�7wO2`˜�A¶Ë krZÙ�@[N”À8ÖÉ™¹ˆÜ³›ÊftÎh"€V�QSn£šÄz4—g¡š÷”ÉñaðÀa8w>‹z„L]]…ÙÚ~±�ü�ìO=þ("Bƒè×{"·`÷‰8„E ƈÁ”£tØÎï_·¡C§1.[Yš±ŠTᇋßC¨¿YÑÝèŒò%Âj u”ÌÀÃÀD#o*™ä'2†u�¢&Ö»¢ÜvYÃJ™YÓø+)�²žz­tRÈ…ÙwÝÈê  æûk„¾÷6BÈÖ3£ÁÛŠñ‰ìm©´bIw´™s‹a!ÃÈðï�m‡v"ÀÛÓÆÄ{_nBeq®ŸPÚP¾w54B“™wðtŽÒé¡–Ïê“Åï@—U|ÒÔÛèpv¥.*Ư‚¬ó¨%»û ÙOÆMèÒZ W¯«Ç†°Î¦ÃÚ Æ²ž:i&"÷ïbx�TŸHËÉä|á8U,,°çÀ!±ÝÍ£œÈýFôtC�õØ©XÊÑ÷b_as2êž{ì^ì:x’ ¾¢Ø¿ëlÖomA8™S•E”Iµà=WÂ/Dó Õû�¥:“yÛ� ŒÚÇÉoeŽÁy"?¿%‰áJ9ïåã”|.Ž7cÔº™}~Ëõt¶¯-ÇÖ¢Ü$é#+|eâdôüŠUÊ\ò"AzÕÙ@¶'Ä_ÀPÊ8?4˜¡�ÞÉÝŒàØÜ\!Æq±»D ÏÂâUËKîCì’Ô2ж'tÆê=u"Š2£Aíìh9¾_߫러pU>’üè46ë¶i¨.ÍÂÆc”¹¬ÕCZ8:swsAeM-Aþ*:û˜@M†kOö :zH:¹žóŒb¬ßqëwÆ¢ŒñNMØfUWVQæ|’’·ö—Ä™¬«/‚½MœÝ”Mч·²ï¨Å�dƧ'g §¤/ýû(ÁnjX‡ÆŽ4¢cZyò8ô +;WX3éͬÚçVw¡C‡¬’jØ·Íøí–ÈH)BIeLÑãïæD&Ãéà”˜Äg“Oö¢üÃGÐaQ.Ä¡°$—ïh�Â\áÝË¢J×§ë´§'ÇvõåÐ1ꦌ}LÉ|tpèŽ1#Ø×êtƒ)Ï·ûØiD³/�?÷ŽË—¦�ê*Ê6Ô2>·ñåuÀa2᳨’"NB�%'gW`Õf5ÿåÙ;áâØ‡O3Ì‚‡7zúômg K>Í-:øð‹)<í7¬šk xÌðA]Í~; ÜÙ=ü·­´: Nžªª×w€ÅM´ÍX9öDP¿Ðv�õŸS"�V ›3ã¶ÙˆŒÜËí�Êa?­\�oZ‡E‹ {ëMåùm©Zpºœ™�5YÙ/#-•ó­.xöå÷865Â’wßVÖ§§R枟C”û^³j†�©¬·¦R”µµ-ÇDŽM”u£˜QÒ;îÐ.ÖÕ¼øÔãtdìŽqSoGçØz6® ­8=%&ÆqnÂúƹ›|\•�š~ Àª£½”v«øès À2XÙ$Àª®ÎY €íí=Ûxs$D˜ƒbÐÎKljû'ù©@Ž,e}éo(1B¯×þ/ºÿ™v€Uò¶§|pyeXõÅk˜8ýA:oôaàDð}çáÁ˜6ñ†ßðã<Ç›v¹ >Ç+åÞÓ½™Ï+™¯Cp�‚�UÏv€U½H)[‰‰*ŠŠ¢(ÿ›Ñj¤:$É~ºóæ¡t£:ÁÖ±]Þ?u!NšÚq®Þ–ž8�˜ŠS558¼s#îa8™Ž™£RîG¶®ÇaŽÝ}HÜ�$6‘�ÍPdœ[¯ê³´e~µóÓ€¤ –£Nn– Nµ÷ˆýZÍ«úh”"Q+ös˜•{Óh;)Ä/ ±i�òWúMmr“Ô±³«lÎën*¬ÝË:Ôíæ*'¼É/MÞo)õUeévv¨ì+Š™Â{¸”«HK9ɱÚ××YRnêGÊOÊ[>’Ÿª:ÙÙ8B-™4JýRÇ#×{¿ä:´Arå½'Ȫ¾«��«³ëÿ#×K9üÒ¹sÇÙN8·_ª3ûö[XÛ3ùýøö§İk¿'ýdý=¥÷äXi8¤áQ@éð¥qé˜*°J§! Ž¢“Ÿ›¥#�¢t>Þëö+yÈ1jƒ.‚Ú uÌ«ãip¥Ó»UægÇünæ¿Üóµ:;9VI&h+´ÿè[su`$ëo¶‘½QC.yu–þòìœp83F\ ŒitÉÏKƒÇŸÅ-ÆÈæà⨱5NûôCŸyw`(¥NµÏ%àª1euŒ)e×Yé°ï×ì%ã“r·£ãî;ç0vžž²»4§ïÆÉðrí:z³™QòÍ�à�ZÒÏЈ“Oén?-d…´šº#Š äÅ §È^j¢1Ù„  ø8S"²ªFO .¯ •@FŒŒ¾½œѧòÓÐ4v¶[º�3öFn½*ÓÏë‡;ã+üz‚)KN¦2V¢AMs¼úÚ;¼ÆVĤ•¡ í"½ì}É&ª Kè4fRF1=3‹ë�ˆÙý!‚z{bÎì<äë,‚Ÿ»1•¹ð$0¶qÓfJcžÁ€1ó‘ú³�íCÑÌñðÿcï-಼×ÿñ7JIw*""Xˆ v;ÛM�ºrÝuÖÛÙv¶sÖáZ]èìîEDE¤$�©ßûºo|@¬��ïù~ÿÿ}^¯§î®ç×;.[—~èÎXYfJ2ü Óaæâ…{ÿö%â¢N2¨�Oõ­1fÒlDz’ýëuK€5!"6Îî7ºÿ+¦ÛX3¦��X ý™¥[ï[¬êþì=¼”¯vd®‹EßöM›ðÀⴼ˃ süä€~âø‘ðè;¡Ç ÀTbÎ’h%å@Å¡…¢`½Àš–œ€´Ø3Êö»òY’" ëü ¨ìqi°Êe&·=©\ÛŒ˜sñèl¬‹'y_ÿ´ «~]�ôÔDH…(#XØÌ@Zƒ²#”ïÞ£Þ}÷måÞ2R×å],Å·?|O¢ yä1,™<ŽŒÝK=j FŒ�|üOÉÊàín�E�ÞO5ÕF)1¯d Ÿ“*2SX÷DEÇò_!c¸kûI1QMë«Þ×ÖüB»Î°Ã8uZQá;³íùo ª«�õqæÀÈØ@ÉÛ#`è•=ͳÏç¿-I‡†Œ%xÃà>Á‘†ÆzœKÍÂØ)Ó1ëfy}éPgæH,olÁÄ1£;Ý/¾þšN´ó!hЧÂ�*¶=$éEpÃÁÑœ¦ÉÌ÷Ó€¤³Ç”ˆc1Éô!Q#€�Ôæjæ+VÔ„UUUðéÁÙÌ�½ûfX“•ÞŸêõ›ë´¯éÑCû™ø: D�=CË»4‚ÉU'Xc@ þ¾–²NïÁœpÅ(ÎKež´qÈ,¬âóâ€ñ&bÝlºoѪ®´*F--²Òó«p:­”Öu9(¦ i&AûÄÄDõ‡Qm>Χ•ÐÞÓwßµéY Jµ0‡o6víÚÅg«ºfû÷ö`n<æ÷îI ¥±•$š€Žz>›¨:4îÔ€J?ò4-{5A-u¾|θkF†h‚WêôbÚI$Æ&�Õ/àßµ"¶û6TzÛ0 %Ÿjyþ¡ð¤Õ«­Õ>�:OýK°©wÍR~Н{wouV›O}*+¬�{ж¹�.ùר–a6˜÷ÐÅß~ÃÜ¿_ûõ¿ÆpÍ�Úª¨ -œÚlK~Dœ #£Õ ”:pà³pÑ`-"à\ÍgÖÄØv´‰>y: 6¾üÆÛšm4WàòÅ,*‰­™ t Y�¸ÑcèÉ´ V´¡³d«-HÊ€551†ýŸý˜7ÿ~ZSö¢­aW\ÊIVrî È*m†™™Æ1AvЈ+ æ7ð®v›¯>;c#&Lš¥ô…ì¨ÀÙÁ|Ö2пLÕÇ[ï¼L‚ÈBÍquðž—©çkH0kdîÁaà_‘j©¹ß¡ƒ‡ÑžÜ ?¯Y��›×à£?•M+²9É):œ ý°¡#pï ÀªîæíÞ"hIÒXßÛ°J umÕRZRÂ`š+• ‘p¤uæ%žK\�ML›™£{w[ÚûæÃƲ+šu �vö4–¾ð­Ä1?x,ƒø>p嫱ª|æ^~÷ز};CÕdUUŸ}<ºx>Éoû±xñ3¯¿ý•â�Щ¡”õ¸>ê«KQÁ|�O¾ò.LÍ̱iÃ<ôàƒ ÐÚКÝF=Ô?£¨Ž|ôÑ¥x衇•ùñ‰éx÷£¯áíá†×_~¶u�JÚП;¾ƒÇkîÑÁÇQDÝo+–ÃËÍ-ù‘¼·ãÐÅÂYY§¢Š„ ™ÅúòÛ×–2ç \zfÃf’j`nG»eö¡ÏÞ‚ÜÔsLYÝL»L”WÔa˶]T´Y0g!ûÖT´O™s/²X‡Ø²dBOC'^+¦ß êM§Å£‚zP雂¾…}ôa?©7ú ¦ÕhK)ôêhË]Ò‚áA>ìÇúR%ž;s ¹Ö H !ˆVËÑQg^ꢚ÷­šÊ–¡£ÆÁžV¾àñ‚¾ýš}ùÃp`Î=C:9Ìä GOåüÔ‹ôá§ÿT¬Ý=½°eûV<ýø3Ê,±–k%ÁYgg7œ:ƒî´�4éZÉüÔëHz²Ås�?¯n憟É$Þ¤òõÜóOû‡+-O—ÓnØ©¹Hs¡âº+Øm§c…7F g¿ÀÄ´ lÝ;ܦ÷D1¤“‘\^°òÛÛ²üëpCÿÆÄŽú…ÿÆæþ”Uå˜2†ŒÇ ï|•ˆŒø¸ÖþëÖí›HðØ„$8H)¦cE CúŒ¿‹«!Þ/ÈÁlŸ.2î— ¤(=$ð,ru̯Ædü,±;«ÁJ¥ÏI“ÝáO¢¯uçz¤F�@àØ»G�×_{‹ù¯ïcÞÔ‹pëé…5tl($éÓ7ž¤ S2ŽŸˆîîÌ ÚÝšŽ;H ±f®â\ä'¦Õ¼*9®°6bÿ`&zŒ`ª{¦³ia{~… ˆ#ªtYߤíåÓ6@ûól©Î%ñâZûÒ~¾öï5+¾‡Nýeæ`´ÀÀ�¾€™¾„uËŽíû°ðù7”E9.?ö,jò’1�d ’¤Ò"Y¯VÁÍɉBÞä�’(¢ƒe½Ï<©=òG�3Ž…cÿ¹žmQ=I=Ǩ’á|?¦2ÊTÚ’ˆÈSÐåuïãë«ì«´ø´H´vm=ÌÕ¿ÿ®€¬Ã‡ o�v;_ŠŠò0zì4|¸ìK^Wsô§{À¼%óØÎ–×ñ��?ú‡’¢ãv¶Õ~Wÿ,€5œcI}àÂ>Í£ü¼ülß¾…d¹¶}¿MÛ¶`çæÕ$ŠnM• Çwޤ¬‘ì·¹Ó"žxéQ*�ùákØÝÍF¡-û7æøQ|ðö›È§äå �Àð)÷(JŒj²âs[ôQah +ÝZ,|àqv25�˲û%’gÌŽïÍV9.ß�!xüá1n8•i¨¯kB%Õa>ü(Õ%ÎT“žb­� &-¼w.ÊêDŸ¹U¦¶¸x!=ì™û YköŸfgW�Ïõ ½rgÔµtáÀí"•=zˆOËf®Ìl”è“uF ›òªzdçr Îs8wt «˜û¢ÑŒûOGEVKÉttA0-lbi{× ™s ÝëC‘Wk†Caç°€ê¶ä¼æ_¤eÛÙ-¨¾ŽýáçqøÜ%Ô{¢ÅÈQQ”Ô6ÁÐÖ î{+›O›Y__oU`}gÞÌyöÍ[-ú_Ÿÿg¬{œÙ»c3"šÎÏ­NN¬R2R“É~>G@IDATà®Qg=ø‘]y…ù i1šJ[É)3g#‘Â*‚üã§ÏÂÈéóðþ‡Ÿ1gŒ(x®Èkïóë¬|*î}U�õÇ_¦êÉV®Ú‹*ßeð(j¥"*0÷mÙF Ó�Êt± jiŒæOßV~K!u£šÂê�á;b¨2½ýÛ¥Ë%´5Rle%—œ„%0\˜�¤ßeP«]\ý£ëi=Ô܆ÚÛlÿý‡¤z3Šáýq.þ$•(h÷s}§èÁ—çádT$&�œŒe?}Ã|NgHös%ë§L¿µ•½²i±Ð =5 ?x?¾Ýz÷OÃ\Myˆ¤âÓßÑMѧÌåšiwÎÕºÙsú;FÊ ¼±ZrþŽ—_x•AéN˜4qr|6b:|©Þ{ý…9`æÌ¹ôâ¨A“Þ„‡�¢íã¬Û´œlû©Ø¶w/³¬�¨ÀìîîŽ_y]9Î|*‡¦N›®|ß²~5j‘\¶ )59Tâæ¦Ç#•ª‹g8P6eâ$xtóÀÇ_üHðü¶ò˜Z1¸V[N0¡3•eèÎ@ÂÀ¡ÓP× K@!š  ÝWk «B\R2œ»�cÇÓö2+ø?l2(�u™#âÎó|4ƒØö÷éN~Kî a vT’#¤ìÞ:+ìX(¶¯üV�«ðÔ³¯QñXH tª®Œ;£?�C‚¯ q1W©L¨©†-ñCGa{èF¬ûí7ô£u�+mÚ‹K/C¿ í= *ʽ�MH âŠê¼Ñ#�—˜Äö ®¬·;Ñ´�ïkþ ¶^A0m¤ mʲó+��C.<¥Uæ&-Ì÷šK;>SÆ–xñ¹g°zÃ6èÌõtcÎ2w%X÷Ês�“a?€€­ææÏ|ZÄô£Ý©š‹´õäùeÖÔq0oa^M*G]­›1xÂBŒ«Y¶[7^§f`óª™×2S"A8(#hEŽ)taøùË•üŽÙÌûêÈÁ×ʾcÊGh�ìHpJr ¥]š•A\¼z£¢0‡dZ‚nA}M)Ÿ�Ë´ÿl€ªy}åÚÕ7PuÃþGï~�Ìmå¦}¸J°«Õ:w/¸µElé©ü·h[o´Yáê¹FÚk1ÉB5dskú 5Š‚ÓÒR ™qσ¨g`­±á sXG�¬P†ÂÂE‰Í_T€ŽŸÄg·¼MkÐÓÓFÖ.íºuš9*ÀÚ:‘_&O½» À*óôº˜BŸý}CM�yíº èÝ[À4 ÙYÙ(d?!pÈPÖ=WÛ�,,J/*ù ’ñð£�Ò=£SÇ�apȆ[mFR,U�zŒf`è,UH½Ø·ÒÁ‘}Ç�“˜ _/g´0ÌÅ¥%Ç·%‰%$W‹­kOdUkòéåýÐá».û°¥¥­­S�«‹è°ž=E Þ™y]ûß`•$ &¹Ž—}ù1Ÿ‹r\ÈΈá!ؼ{fQ‘"ö™ŸRUy(ô š½ñ› –]_okŸú}êÄi Àz<2I±7¢5¸Z>ù„6>TbM,åå—Ÿ£]n.íù4Ûöôöæs팳çb˜³Þ9ùL‘ƶژù™õ0läPlÝÉv–ÏõŒéãPž–Égý 댡lKóhý©aÿ뉈˭‚Ng'”×Õ0§s2˜Ã°>ë0î»oš.çâçå¿à;¶5gI~xhá 8XaμTa–1Ï[>t®0­Cr*B�Ÿ@gÚìŽ�2M=�ÖÏù‹#—uIIqRHªÊe®Xù�Š’¸œ£¨z�H ÈÀñšUÛ”åzôìÇÕÜ{É[ŽšÌç�“çR8�Ä,M@VÈI‹§b¸BN##ÂÐÓ?PÉclléÜ °Êr´vªHGNIY¾8²c#zyØ2Ú„‰3îAmq.eÅÑ&ß%Éá?û\HÍ@7·’ΣA§—V„cp¿ž˜oÎìëv’™Ëú¯mýyÝBÿæ„c¡{™«Ö�Î^ÃÛléØþmŒ›�T@‚“ôgÔr,ì8vdZ(kL›¶€©A ˜f ¢¢£QÆ6H@KöÍû2}Ôûï}@»÷$­Å³=ߥXH›Ñ]!‡uª««;•”v˜>m*ûñÙÌ~£ÆMÀ\sº2^cE· ké˳$3ײWŸA0b=­¬2]ÚE >Oj^ãKìkÊk ŽÝI¨^ÿûj I²‘#Ÿ_C:… CIy–ܶ¸c˜²ÿü?QÔv`ëŽå¬ÈtЙé €S‰%ÛÏžÃeŒ,¢oy8‰¬?7šØd-†� 4®Ëçß0ÿ#u¾€«Ú«lnçþõˆŒÇ™£Û �ƒ‰™¦¯¬îKýk'øßôöwDJÿ£N̻˺ÂÙ¡DZ—áí¥éæ_ŠGröQ¶åšºi/ÇØ‡èváßÛeÕå´÷gNàËÙøô»×�œ›�æ+-TÐg¸wÅì¹÷ å—Ëý’£êKìTÜÔk*Ç"m­pi€£g<†CÍF]R§,Æ‘â*d‘têìÑïžOKëDÆõ Y%b$ÇkÍMu|<Щ2QgÂQ}V�µJ,YV)²ínI4x÷9EÈs ü¼ÆJe*qkH%Ö-í”êZ(m›LÀNìŒE©,1aõøåSâÜ•I ÊtQjÊúj¾Wå :x“íj�-nH›¶SUâV1'l£ŽNµ�¹£gE3M=¯Ÿ•mÉ>Ä™Rm{å÷U³jιYÕë+Ûk_¤ýW19f9^)ÚD+ù­ªƒå{GEîÝ�âëÚ «8i¨û“O™'÷Yî�\�ÊX³ÀÏÍa*@Wøíh¿ÚÓä\TpGÀ¶ö²}§}ùÄ9ÿçV¹�lÛþ]€U¶óÈ*WáÿgEµ6Pžl ¤h©RÙKE%¼TR2à V¦I§B�#†z’ynVAjŸ´kûügeû·zÓ®ÈnÌެ½ÑöÕ퇇Æê ¶SFuy–œ²¦�Íp M>¥Hã ç(à¯Õ†_�UUðŠÍ…ÂRùÊu¼Ñ1«ûÉ'`³zõæ@è¯LÚ;AÖýèÜP_^r`O+û×Þ�ì²ÝéƨdŽ»üœLRÁRÅ\FbXËÁ_pJ¦2ÇÜ»ñɰgãïBpcóæÌ�ØOYÕ}ÞèS®ãñßÃñ¼2Z±-¤ ç9Z÷5Êjåì ]æ!,J£BLýœõ±âëµHÍIBEM*u©Na ØÉ¸u£Ý¼} ²º„ø¹Ü`Šžö]¨ö£�"j±™õÄ:ÃÝÝýë­eHMËe€¤Žø rëŒ \| ok{ùøÀ‰@V\Z:µ! [66BòÆEG†+�–‚ ´–)&»xÛ¹<ôöp„ÏÆÇï½€‹YdÕé9 �¬âËWôhS7�øL$&g#™Ÿæ¶–ȯ2E¯a³p÷ÔS�VÙ`Œß×ü޳Ù%tj™—Ó[ –Ú0/eQm¡ÝðÐý÷3p‘‡ñcÆð’êh@²[('äÚ‹‚õÿÀ*ÇúgOï^ m8°³¹íÍ–dQáׄ´˜ÓHŒ<ŒÍ»ö!xì$ù9£!/A±‡)(*…_ÿ@Œž¹€9W‘G•ëÌÙ3o¹9?² U€UVÐ#a W€&;{êxÚ�ù·*üd~aa!ƒöÌyÆà²I×k,Y©?ÔÎ�,·<;~³œù‹óàÍ­Ø¥¤¦3hó!¦NÖ0 Ìɶ«Z`UŠDIXÚƒ¬š©ì}Ô”Ų²=Ðzòs÷¹ºÐÍ”z+\•�…š�?ˆ¦æºAÖùÌÃz?sü æ@ûµ·_Ã)2ÿÃNdž�››zŒ@Æ<À:cÆl¼øâó H*ùPgÌ™ƒ°Ó'ñÁ§?!‹æy‚t®$p¸ñõtèvŒ\ø Îí܃Š%“•�KtbD—�¥¯a°0±ÌÏ:w¡b�Èûýúû¯Â˜Ìþ'–>Dƾ L ŽK1``hÇ�}Tè\bÀ÷¬Ý²öîÎ̱ë�מ™yërPM†º}Ȉp{À€�ʺï¿ÿ!žæ2VV&J!Ú6U³ÐÕ�­ØºÚXãÏS¯–öN8¼g>úÇÛ¨¬k Ej6Üì­p„ o7>ú† #cÇŽf�GõÙˆ:Œ¡".‰×X—ŠÚæ&=J[j=‚Äþ´ä4¢½¥A—T‡”à‰‡îSrÚ»‡�>*w¶nÄ•Æ&lݲ‹ÌÅ“O=§óÍÞ`½‡€:™(‹9³ŽVKq~&.¤DÁÕ[£ (¼�N»Ôo�Nû.»N8›œG±Œv]ðr"‘æ².•â\R:Œ‹x?XÚ“ŽZ� ™¹hi ™‡íQ3Ì%$ÁD0È“œœ…)óãÁ'ãïp ÷÷á³eÍó"`0n Õ‡u¸�‘ËAx5<õ.3¿W4~Y…Å Z•€vƒiYEe$Ä ¡�nO'Ø38°)2½\íàån‹§^x÷?DæýU€UÎqü”Q´x¼Ž\ ÌwQetTÆŽI€=Œmœ9B˜oxÒÌ…­‹ (›””B«Ðª:{âo îY˜ÙüëoTœÆ^>sîªILj`~ ®–VX±b¼Y0£ÒÊž „;‰H¦¬½ŒÂÒ§þF›_êt»XGæJ,‚£y'Ú¬6Ã’õÃaæróðì…*>;“¥ííëßz<òÅŸ6œ¶6–øý—¯‘„É &·Îÿqùç÷¡­i±bwÛ:£ƒ/9ÙÉî’©*ôVæž%Q)22Šùå4ý™hÆ@˜ƒ_]©:rä°²3Xœ@0²äbU €@[ãÑÐçK^¹YÉØ¸îC˜óÜ› ×ÒÆPÔ}¯>qÕ¿NëàŽJ4• b§WU€5..�ûŨQ!êl\ í U% ~{{]u? *šD ±Rþ~Õj*F©v|ìI4Óîpç/·?|£€µº(Ï¿þ*×í©Ô%>T5U‘8eí`=Ö'ìó)Ê^m€µuç7ùRœ§Ìub€òÀªY¡ÿ …ýß~õh’W>øû˜8å®ÖYG�Ç;ï¿Cý+´äkb]ŽÍ·àtÔ "ð! «_£©2þ‰—p†}£mÛ×a Û·›•èØhÅÚÚ�êÉ»lmq­M“õN2€$« ²Îš5·`ÕÞîέ[Ùß+gîà|–ï—ŠŠPTK%…~#Föƶ=GX{°îˆ31ñ´¯s*£¥èëäÞ�¤§T´#<2Ÿ}ø8�þJæ.öE6-ˆWmÞFç}ªË*2´?ŠkšI¨‹£|'æpsa@÷ëÑZ6û².í߀¾Šu°ä í —¤þS_êñ<|�`¯-£Kðáûïâ=¶S°J‰‹Mfû/êëV€U]¯(/�Zê1fÂ$þï¯Q2_T©ò’baÒn>Ê÷öoú-5èª_‡Î]m�pæ0œÜ»aÇæõÌm€�l%—¸ähµrp'Á¢;ë-Åq¥²´ýzûÀˆu‡-;ý¼ÜPMã¯.EmYôèÖðÕWŸÒ2˜õ3íÕ“bc9¦ ‰ƒõkJJ6îØÏÿ¡ rŽ� âI¾�,©®–”Õ$±u14DÈ@O}äÅ'É@¿È´�YEÓþ½�×vP²�œ×ü9÷(umŠˆ;�ØÎ{²/ÿÕןãÀ¡}„§Â’é$úP9(ëŒÙ³ðâó/\·î�&˜˜3Ç7ÿS*ß5u:¶nX‹.$» ðEï]DTUÞ…2�ê3!ä3ªAŠø!_-5TîÖV—Á†*!ßªÈøH\�uÊà?®ø[r)F´9¼“¢Øéq¬-ä�Ž©7Û–ë1õu³åÔyu¥?¼“' C)ÿƒ.íÈ=«6¬Pµ#©MŠû0ï}hÉýÊoy“>±(>’ ôÜ4�>ü˜BVƒºOÖéÂ�íS•[7x4…óø™xñï‘4þÌ <›Ä·çΔ±CŸìÙ.3/üÞ�¿býÆ]´®öDbÜ ÔÕÔ²ঀ˜°JÙ½s‹ŒI¢(¦sÄ(œÊª¦ým$sGV’Le@ûx ¤P=ïH2Ë ‘ãð·}wOÓáìɣؿo/*øŸ¼gá�ΰñ³ÑÛ•9N›:£BÏŠý[ºiôƒAŸN�I6®/a‰ÄRŒ©n� ݯÞ$3³4û¬bë+í™|71µº)Àzxëw0±rCzVÏ­ æÚ$¶q¾T‹ªUAÖ\ª‰Ý r†PiQ‘�ˆU_~Ž^$…¸³¯¸�yq¯@!­hÍ»Õ×Âü4DžÜ�eßmÆ+o¼Ì~þ%�G-Oûø÷DÏ×™Xßj3ÿÑùCèÌÑÀ*;ýì«%pwïó‡�ÖøÄxöûloxü‘g"°iÛfÑüèêq­'+løùkæ¬F¢ÓÄ6ëg¦Ä2'q1r3Jø_óÇÔIÓ”ùyùì“\­¢“‹‰…5]=tÙæ˜áÁ@tB–’#u„ |ý€U{£VæTòy•tR¢O†+ù‚‡‘˜X¾…4WIr«Ì§_­ô 1'1eU7‚ê­« À*¯;)¢62 /�¸ùGŠÄE±;æ ¿ù ¿,g½ç]g·.W˜'}ÒæƒèKw‰ªõ^ûý¸“mm×Å‚ä’4 ˜>NgÂ[m…UEžÄï´Þo¿/¿ž}Ø/Ó¡õ =]Dz!�d0‰eIÉ+H@%E]M5qˆKå±)T 0`6•öëÐÝm LMl™C•y]­º·nZRòÈ«…§®ÆÖÓ¥p¬@„ ­{™*&=/‚ï%1· SÇÜ��}‚ñö»ïÀµYr Öi õvõÕŠ�² ºÅ� ÅEö¯’O�ÄÙür4R¹~$#ÁýOôFFzÉ[ö0Ñ­„Õ´‰S7‘Ts–cóóîFUM#IbvŒµy0Ηˆ¤ò�ÑŒNë~UÚ$iËEQ)1‰] @ª‚pr½­æ.Q®µ,#ÓåÞ©àœ´kòRÔ“Ç•ëÀñA‡D­ªõ¿”Kz9õþK<]ì5+àmûû©Æ‘d9Ù§L}[Ù‡“–µíóov×Higå·¬£"û²š·qNzг„vœßkãAèÔ¨xï¼!û”íßlÿ²Œzr~’RP–——:]Ùç9<ÿÖ ·¥Þ; ÝöXÏ:^ëßÉ}“Wû"×N%« 8ª–AÜ6ä>Þ —íÉ1¨jfù-Û�<°roå™úo€®rL·ºþr¬•ÿW@Y¿üø�׬y ÿwÕ_Gñ½RñHe-Liì”ﬔ¥b– T^2M>ÛW2biÑið‚•n7¬ ¥P·s»'¢]ùJ££]yÉ1¨ƒ^µÂ•åe·*;‚*:¨koÅ¡l—•¥Z¤dÔÈÄ¡W‹ün"ãE±:à1I0V*hXÕªØå˜åšÝ¨ˆâTlUå©?ƒÂJãGvµ¬£½nÿ¡Ã±jårL˜:ãœÌѸw–TÃÚà m�<´o›²›Ï/S�Zr™¹•¦!'3FXm®ZsÜè8dºÜŸ`?ÚnÑÆÒ×´c†õ¥]oWZ?Ãày ʪª™ÌÁ ‘‘ˆ/¢-­2»°1àð•œÂ´4ôîF[½Kè‰F‚³»¶�F£¹;Í<aÑ}(J.—¸ÑEƒïÆ<÷áÁcb‚àñ˜#1´uC§ºRLšM¶‘‡+J œ¾ù-˜{ôê�-3�ÒŸ*Û+ ¬fÓ‚³Š6Ŭsp\Ëà£�º&VЯ,B�~cì×cn¬rôég£2*R³ñÙ²ßymfáTØFLàËæLL]ð­0+P–skÆt2 ¸r�9=+1¹wΧW¡ºÅ%åÕøìãÏPQQŒST'¥GÇ"xüØÛXç¸P Aë6÷›ÝŠÿOÍ«(º@K?* \¿À2Š�Pœ:vT9wkmùYÌygÁüv•…ÙèÞÓndN›Ó®”¶�–NTcÁ’¥4N3 <x¦Þs_ëõK��fàC’‰_Si&ErýtT$÷žZ`m¤¥—½V°ß�«üW`]¾b9Vðÿ8i¢ØXŸQ„ÞT‘UÑf§…Ö��1 ¿eë^�‚ÜÜB|ôÉXñãWêæoø)àê­Ö¤Œ,E-ima®lç§ï~R>X—tTž|˜ùkˆo_‚„þÅçh§ÖL=¡Ž´ªùùB†ÒÖ€v\IÂÎåqZö´¡ä'�aÀz38õÃòïñèÒÇ€UÝçK{>înX|ßæßY‰QS& çÀ¡°2ԃ¡ÿò;ðí=Ù¿-‡ñùS„µ½ãÒbÞÇgêĺ)/u{óg/ÄL¡¥ÀúÓêÏ“ƒÃG�¡�9:ŸyôEÆmðù÷Ÿ1×å%Ä%_ •k%Ÿ`.O*ãÒ0�Vo.ZŠç#†aĈˆ8} §NGàqæé0| U”.T¬Ruy…j>cß,[†=a'‘�ž w§{ @EéEªg˜‹´¡cÐíØ¼™ª**ârs™“6…*°×pxçZ¦ ¹Œ.êi õÀÒGY7 $Ȉ»fÍÁ¸ñSk1-gÏŸ?‡äÄ‚d—¼vR¶ux7Y¡GàEu…¨É,¨ž½Yë3O½ˆÏ—}KõÖ@`P—7"X¦¬2m$­ªSá¥glF2J'DE¥ °¢ #ùߊg.Õ¸ø³Ì×c€ ªyÝ}�••‰î™…ºœTªƒ;câè` ñÌo“ážA…È>¯BØ©Xߨ¦Ukø±PD:D’ûfîͺZù±á”º>ãô~* íhI'–£(ÊˤB1• # Æ&ˆ&�臯?Åï›wã�Îï¿_F�× õú¦$´ $Éù<öð“>ó&YÕEp´ ?¯œ5³´�#ƒ÷›7®Â¯~¬ä�.Ì»€´„óŠ2j8í¢çΟÏܵˆb À¹›'V-_� Q£9}�ª.ÌÙN›è2 èM%ˆA±FÚ VˆÎ�¿�'í©=1ãî%šC00 %­9Î1“›]€¸Ä,3º1/[ŽRém˼hý|{�U~Ò£àÙ+€àFÛÿxgÚf½Ë Åh*Ä{û¨§†ŸV|Nໟ}ñ%-ºº¿Ö¹m¿XÛ8¶¬2Çã»°fÓÑBŠ€.jéLб/^òŠ8�ÌÜê”’p‘uÝøV€U–Ϧâò s´ºuëK’Øž_`î9\, Í>sÇÛÚ](€uåÊÉ|�¢î’9kO$-#YEòtÙ´Xe!±ŠpUXÕ;1˜Ý‰ªÊàa#°dÑbsº{ù`¥s€s/u1Z™6 €Jˆ¤´$_»þk¬\ñ:ó»?J‚Ó]¤'0çœ�2_}ûö› È]ÿì©ówþö¼¨¼1¸šW¬˜jX5à¨.ÓþSr`ñR°Ø:ËÝÍ Kî]ˆ^›ªÒKXÂ|°CFŒ¡bp¶°Ê‚V¬ ä%%Ÿ€£¼n²î¥º¾�Š•¾T)j+X•�ðmÈ�á­«:M>%OªÜ )éT%\a'®™¹ðšI�sq°¥â¹‰ŠZææsSÊÜÍÆºõè†ùSƒqbßv\ª×gÞ¶£È,¨åµn„©³;N„…³®™'kC‚oÖtOqÁÇ_ÿÈg¦ÃN¡‚uÏeök«*J0¢ooT’ˆ~*ãÆ�Àiïñì‹E�Š`_ÜϰM“RXX¤¼Úƒ¬ÊÌ«o£G�VT¬I)IØG‚cP/_$&œâÿÒŠ–Šý€U�:iŸ3Wª¯5AI;'Žg,l¨Ø7Q^ÚÛ¼X�Žj*8RâÏAï"s®R¥ßQéD•t¯Å%*<Ò“èÒíJ›ùË̇fZ!ºÐ*¼‡_•'û”ó]¸MK8MÐh#Z˜|Ü yõ´¼…WßY‚á#Çâ�w¿CvÂ9¬ÙygsQפ K>SM´aÎ I±#û’°SÍúÉ—©ª’çF�¹ÍHêøàµ‡hKj�|’9�?Ã\”¦èJW‚ÂKÅôxc�Φ¨¯¸@'�Ñ�’2-2ê4óN ÀúÆ«‹Ø¿è‚í¼ï ïO¤(š>^ö‰¢`ýòÓ/n¸­›Í°¶¶Rê’å?-'�iÕèT¬Ù‚ªö¬‹<û\ý Àª{M¡-ÛÌN8 ‡‰sa;ö™á] Šöl…î)MpNÆDjÛ9ÏI‘1²öŒ®5Г޽�1-Þý(®¸„{7"96e•tãá>cΡ®(™Ä�sT5)ñ¹,WXŽžˆ�Ø´4)×TN\½ÎêmQ¯·ÚN©ÓUE©ú[[)ÓÔvY�/ÏHŧï‘éª# ®L—gC�Ë~´ã»êzãÀT>­Ù^ªE‰�sš•DY+m©™.ýÙŸÚ'‘ï�ò2½~ý/E¯æª­EŽKó\´¬Ù^ëÌ?ñ‹¬n/²Rãñ²«kÇÒñŽU™ÛþžMVåy@Uí³©[»¦XÖļU|CÖmÕuÚÊuVDVì À*u€ö~4b²�ö«ýÇ~«¢1m|ä?¶³¿6ü§\dÄöÒ§ŸÁ°!C[ª¬œµ:ÛÊÞþÚÈÿŠ+ VÖjEÝÑA©jW©D¤’‘JL€UÉQ* ƒTX7[¿£mÞlšvå+ËI…&û•DÔ¢Ú›‹tfn§¢Ñ4nT‹<ÿ–yûãàVÝ®ª¢ÎÕ>Fi”�ìì(Å´ê"ç.•vG•ùÙ+@ÿ—^¿%諬²9íÆ]¾Ë5ݳq5¾a !‹Ê�ìäHÜsl/[M¸‚ˆÌoŸ”Aó"|j1þ…W1xæ‚+QÅœKCf+‡ÏOª�ÈÎ=ºõ'„nû î)_d¡ÝÌ¥o倸¸$8™•£°ÚCûùá‡e/À­ªãy>³¿z]¬æ÷IÌÕŽʯ0|  .¡Ù*#§ÌƒUu(úº6Á­× t7«A@ÁeÄ�­O6Yï^=ÑÈü¬þ^Žì”ãÈέh.O¡‰5Œh½$ƒ§�¿}‰Vï†�ïDLŸ5…ŒµNð'0âÆü «Ö¯#ö(î§�œ——ªê™çªSz2øåAÖ­�‘óܘ@ç÷З p>­ˆ%–Qs"Òu©:«Á4²ßC�A-Á://wüøígøî÷=´˜ªBRf!ìŒj™S‚“Wtõêr÷ ÅØ•Áì�•kyáB Yz—˜r"Õ“·oû#«/;1ÿ­òýǯ*¶‡Þ~øÎÑN¶° @QtÞÎFŠ3ãQÌr,ŒÁ¹Á ë6’�òÁ£'#3=•Ö“>©Â¤JË´k›ñŽr<60fÌšKåbo$§¦aòÌYŠ*³ˆÎ}zc6ç‰åé­@Võäfϸ« ÀªN×þÔÓ£JŒ@¨{7WLÛh7:£ÆOÀª­ûàíL"‹ ZrRPJ•Ô1^ùÀ`Ø æáÊ-'0è…°ôBZ¿�„am1Õ¯ÆT¶U"P€Ûa¸½ÍK²�)-Ò2Š y:–š}hl{œS£O`è˜ñ°õÀ]T5ÕÖÔ`͆-Ê38Æ LŸ=�Ö£ ÆŽ×îžTD}‚#và�—bö]ÓµOãºïá Ì9»\7]&ìÞ¾»wlÁä«ö–2Íš�‚ls¥ìÛ¶žu]>Ö­^‰³§Nh­•A9"ÖìðQc'bÖ‚, púQÅÚˆƒG#QTY'æ>´`¢olÅ Ž\­ºÀÝÆæöÝàAÅdjR<>ùç›8°wœM›,J°( ~´q=À£B†¡(ûYÙU$&ñÿ4$£§ÌUŽK}Û°f76®Ùƒ~þ¾`½D€AÚø)ÌîÎ4XÙÆ¾Û™cÐö¦@«œ¿6À*+¾û�÷ðÞïcl?7X“¬´)l3Jë1lÀTe»íß$Gå­VYgïÁ0æ^nÀðÁ×_×I$¢¹ètãK»Àº�¹4‡…Œ¢ò)?~ùê˜�­3  j&g2q�’ÏÝœÊÛJöϲ33©ÒôBw¿A°ñìÇÞTyù“gŽ5?|ÿQÓ�nì ÆJ4Td¢4=Æ$n�™Ý–f„îÛIkí\æl¡ý{0Üøÿ±³5a¤Ö�ºšÑ¶\Ÿé0  `ôˆ>°§�s®ïÀ¾™ °jŸƒú]ê�£v¢/ÉB9$æH™Æ¶!+9›Š›½(!q&ƒ}…m«hƒj¬Gæ¥;¶‰í'Ÿg*@ã£X·xúcϦŸñÓçï($s‚‡°JIÈ(�mQ’Çþ"S³¾S Tɱøè•Å$ø=A5Õ>lû .Â�jÝ£´ú̼¢ù¥5$ñ%áÜi¶_]¨Ä«Æç¾Á½, :‘ìe„ݨ�C#‰=�˜s�†z,*gXG;:ûQÁhŽ­ûS…F¢í²�M,‘IW‚+´òóaYò˜Ùò^Ô‘8Ø©±³¦ÏD¿À~ ÀÆDiF �ƒ+:F05ê‚FªmܺùŸ Q6û .nÊyž�=‡‹¬×Õ`ûÄYc0�ö¨�¸{þÌÍ=á'OÐ&°€`§!Þxý5Ú¢3‡ï›´Ñòú£%éÜYî\hcKE1�Ž’ÔcEÒåÄ9‹[7Jª1ÏsýšÕìAèPEkJJ-­]}Z—‘䥷ŸCsB ê÷íR‚™šÀ£F¹ ÁQµÜÈZLDŠO/�ŠZ]×…ªÒÛX+™Ë.‚D ´zªJÇ+Rêxõ÷-ߢ´ìïÿ5²ˆºùôì�AýܼyŸ3!-–íùA*ÛçÄñ³€MÄqÆ|ö<€ùsïmÝ|ß¾­ëŠ5+•领×.r=e,-Áè\¶¡ïí?‚ :g¨€Ãˆa´ødºoÊýÄ~›%‰d¬Í»VãÀуôMØcªŽá´K]û�ìèã†×>YÆ ¾¼v'`Ò¯oÈu«º®Ó" 'ÈË�6‰ %¨a_eð ­~DqÉìÛ»“ÿ­®HNË!9—6Àü�ÙyãÈñhŒÎ#xÏ<âADé—‘C"n%‰vñ‹êHüÕ…¥•>ÓÙè0Wd>‰¥Å$�é`çöõص/”n/‰Ii¥êÚnݽÔÃÂÚß~e_1=X§uTl�4ÿ±ŽæµŸ&ÏZU_&]-hjA‚ щ TpëàÑgß a�ãcjŸ¶üò=�^.“Ô2‰ j4ðÜ�º�€x8 ã'OÅØ I®0ÆqÚqû‘xÔ¹S-ö CîÅZ¤³ž,§"¾¨²QñçKá^ì ¹Øwb>ì�8Ÿ‘�Iì7ºhåí�SýmhÔÖ9A�Þѧ¬ó–ÌÀ³�¿¨Ì Ž™³î¥Zt!fÍš��‘wñöëhÕÿÈ´‡ö1 /?ý¤²}ÉÝ./Ë«Ä×ÿÈN¯n4dxˆ°~C0àUë~íý•±¸wÏ>¦/êCeoßÖYi$D…³]ðe¾J¯žmÇã«~øº ¸ï�G•”*êJ…$s öv@VY3]Å|ù긾Q—¿“ϲâK‚A¡[ÏëÁâÑc;Xïdû·³¬ °J}%ŽÄùYQ× ($ 5õ¥*Õ¤-�—'T•‡²?‰¤ˆÛšm¡ˆ2¡ƒ·IìCûúù¢zãz4çå_üÉ*MŒ;jbœ¿´*ñ’R�ò¿ÍyMŒy„t°åk“X�´´L›8nîø–ãî�ƒÇ2—æù`K Gö N1ÕMI4túò™FÛèĤ‚«½o�5%?ÑqGáêÐõUåèï7Œ8AwDž9‡{æ?Î>�óµ�_ýV^–Ãz²œcû »�½iPÅ1X=Ý *_ý«×¬Ç·(f`[ö'tHÀvèj7Gs> Œéu±dZ®txš7ÁÌ€c-ö¯«¯è6@ ]ålI’4t(Âé@Rß¨ÃøB¡ò̶°_ØÛÏ�$Ç'¼ñ<ìÎ3�ØU”z�Ú÷P:‰3 `§ˆj®^{‰Å^+û]u;Eäµù£n8yŒ=6;Ùž($5m·¨/ ¤^%K]Ûžæ›Ú¾Ë§€g`R³]™&}’¶ÇAR%—“x¸êr!í®´³jüX݇¬_~Ô\=fuº öª€lOŠz,Ê�Ûx“ÿPJYyk?°ý*rÜjŸªí¼k×R®c}n–ò¿éhY9&9^yiÏ/¦ƒCDNF®> œ·Ü?s•å®‚Ó ({Y=÷¶Çuã_ròÒàš¾¡û×ßDÌF+‰3TzŒÄ ™@íâÿ̓ÿkßwv¤b”AÊ�*Uù# à)•³XãrQ—Ïf½%J…£õ”�þoÚ€£lÆ07;»dÃo:"ío¿Y©ÜÄú¡ùBf½ù¼%×Ío¿|G•ª\ ±ƒRV騍ë©Óä·NMu½°“d-á¡E¹9×EÊg”í=¬®~ÛŸRi ˆ- ¼\ïX‚¿þ¾éd÷ìÝ�ª-;šu T6 ��ØÚu0/ÕQ*=Ž3ˆ½è…—í‹2þe4jë¢ÐÅ“í/¬W Àº÷dŽ2Iå¥]~{ãïxÙJLŸ3ág“`dj‡²¨ß™oгî„éÏ_)6&-~}‘ní ½Ú,á£ý›°5£þCG"0x¶ýò3F÷lÂÊm™œ^„Mn,v% ¢Ę,W;G{èëw†ƒ��„î78ùÅÕ0qІªR¸ø øÌ9¥‹RËf¶´q<à çeZS1Ð6¨?ƒƒµ8yâ­Ï+–/Ÿ|ò9.\‚§£!óô9âüKaÁÞ³Ì �âÂl<Ù€òŠJëׯ�´‘ëéE›¨t¤—˜àdóÓ˜aú&úM<ŽB,}îï8}tºûOŸm½T.ìLúúö¿#€UV¾SkÙÁ™ÓC¿?£X2ž%-ú,®Úôý‘mîaYûòÞNéÊ€õÍVÙFøž ̳*�DC¤%Å¢óÔ�š<‘¡»¨¬a¾²^èϼgVΞdѧÀ™ÁÁœÒ:æ:€…sgB‡6¿ÇÏÄ2—n%t~W1Ç °ÅÝ{ñ~^cåÎà`ÜР3J™ÇëV «×½÷?Ü`ݺis€†È,¥¨«ü°¢:ï|lœ©ª²sñ -ìy4Uæ’‘aJ`ŸùZ$µ±²Ò¬È÷´Ì,¼÷ég?jdë´Ûý"ઠ°Ê:ýð%ÈZ\\Ê >s¸¹:ÝpS¯¼ö”èí!lw­"k�@¿«ÌöÔÔTæƒlÂ/kd�aÄ€Û0$2„iÖKYÊæ$Û�V™ïìì ±Äܽkž¢€õÚv}¿­e~S$|Ÿ|…ЦÞÌi5\Q�ÃÌÔË�¨|•­\_úõŒÅS–ÐŽh`› í�ÀQT¦ž„¹X]Îb~Öµ[ì4¼»ÍF òó1uªF��™�³g¨Æ¡ú÷á¤"÷E2o‹hϪ ø‰»€Ð¢ò5³ÔÜÓÞ|fýX^¶ìS*å<ñþ¿¾f�¹&Ož‚®T8æÒf|ÖÜù8vš6u¥dwÅ0*ùoVrhƒ*ÕžClGtuÙÏ¢]db žzþ¥ÛXo¶}uÞùÚÃeps_•TÕKUj¯^=�Ãút°Ÿ#Æp`îãÛq9ù0GÜ8H÷u4A~]'¸2±%”–š|æ±öÄ”9w#7¿”ù¼¯ 9�AªCZÐHÅ�Æ…ô‡­�."Ø4è×-Ï'[Ý ÙÙhéÜeEÙØ°ê7X�±Ó* &�cçî¡´e�¯TAêÉ µbùwdE["‘ö½³fÏQOãºÏS§0Ÿ„‹gž}æºy2¡5—x<5Ðç~µ‹=ƒ÷ÃG�§¥]%öØÏ¶Ç«~]‰¹÷Ì'èz el�t¸BDòSÎ"qÿw¨ël‹)A^è5h mƒõq9ý4ºè1Ñå:^» ‘´déì�Þ~�Ag4 íB€eýÁ²óÍ0tÄ”2@pdÿ~øPξT #½&†ÁÞ£7vQ‰PN;ÖÏßy™Çï‹ÅK±Þ¡Å3óJVWW£Œ¶nòã$qƒ‘™½°¾ðÏ þûÀÒìZ;O«XÛv�q9÷½ûö)Ïú¼{&‰Ê^y©×ÄŽÇ«¾Üyl6¬¯.+Ÿq@Êù¬{xöÔž¬(X;XÛ,tõÇÎ _àU`FŽ™uÝìäŒh4ÒjÌ„À‘v9›°W¹/¦Ìá+EV_¯Ê÷±åM“¢µÕ58M—˜ÚfCŒaýÛǯúõó'1…Šh>f(ŠŒ8Àüt#¨ÜöGÔÞÕü¿Æcää™´ 5Á¶Ý3©ø;Üý},áAb×ÄéÅqÕC5td¨m¤“B�ôYôá0Tù¯œ"yîØ±£¸{Ɉ>K"­Fí©µ³µÆÂ©CHĺ‚È8^wœüÔ³¬ël@ëðÉÓŽŸ¾þˆ9‚K•~j5óãºÓvýûTÒ8‘eby |ò°ŒûôI ’— hËøV�§�Xëi÷Ôéí?!ɯ'­X]œ]ÛϺíßW˜7ÔÓÝFQx@æ¨+ö VÖ‘X»i†jÆdX;pxP×W?OFÀѳT Ÿ©NjóÙ“V°O>òR›iÚ?¢ãÎÁ�•ö «Ä$Ð+ãæì‚<’ÝÀgI‚ž�<ƒ³Ä§Ž›Ò†Äñâ»ïà¾y °~ëF‚ùNðî~}=iØ¥�PšCçNǾ\Ûº_ûØ:ú¾o÷ÙºpÌL÷‚žVÌEœ ºIÔ–fcéÜ9Ð1saÿ%¡g†œ‹åìå3hŒBÊ›1cº’ä`nÞ™ùþÂpd÷nÔU•Q¡7 õ98•�óGö 9³¶®ž˜9ÿ!øôÁT6JîÉN쇺]UÃÇQ}u‘ýÊü Y<†ut¸w4Íš9ŽÛªÒHò ˜•œœ‚��ƒH b�êÙ :�ÑŸ¿k#ס5â’J�’‘M7�$掌–Ÿ&xù�/RéÆ,l»+D…U¿/' $Œ}ŒZé›±ŸìÙºƒ©èµ£]r#•bO.}¤íaÜÁ¯ä”3$dlgÝ6°ÍZBÄ€51öUÄ:‡±?ìFò «ò²$9ü²¸Òç·5¿á}‰çž|LWÿ'VõÏÐJ5ŸvÔ�¬i陊Õþ <]ÙWWKFZ:ÝŽ1?pt÷ M¼Vùé—ß7 ;:©X 7äxUŠQ'¦\h¼‚#¦h-ýç|µ á¬#€õÏÙú­·¢Æ5ÅâS i<•Ø›“œúR·¨‚)sÔž×íù7Ê/Ÿ<ÚEb¥ªØCã®§Iµ¦®ý'GH$/Ø0µŠì·£"û”r%â¸b÷*±ÑD6-†´'÷÷�¬m7rò+à¹e]8CöÿÏÅ�ÈEøøIÓaér…é˜h¹k¢‰˜Y)«ì'+'[v}…ìÂDè4é!8PÓ|ùÓ)ðv÷GØáóØDaBão{ ò „›gº1iÆÐ² )û÷’˜‘„°3ÇI¨5 I3Žãè»�–‚0}ÑíÙ/¹ï1œ=¸›ö…ñXŒèœWÌØš} Ð�i""céfdZw%D›_Q‹Ü*’sS²ùë Ý J‘L5¡1]Ë̺vAGºÝ0¶`Êå+*.ó™?EWȇL‘@IDAT�4¬X³ y‚´»ª Õ’YÚtééž ÍÔ_âËÈI@U¡j5K”s’7é¨Þ/yäž/ŸÒö‰bTVíø†¬'¯Û�™KÞTé‡tT$^-ê1È1Ë3 ™Ú³lC¶¥‚”ʶ·ÇË]åÙç3s£ývt,ò_ }ã9|�)Ý×e{»E®‡Ä½…¼VúÙ{šç›ÿù_ÊKŽSÊͶiD sköËåSî‹Ù®YïN¯»²âm¼É¶U ÷?!4»Õ!ÈyÉó&b/«¹Knz�nµ­¿æÿ±+à5Ü�B¦íqp¾í ´‚¬® &:¹˜6eUß«¬²%'v’CC�ÓRjè_ ëm_Úÿ] JÅ( i\Z\Ü®K°.•¸¢ì$°.�ˆƒÁ#Ì ‡wh[¡,ð'¾ ƒLݯlVµåíh²œ€¢fóýác“KŠlG:5ÂJ“Η€©ÚŠV™¯.§Z/Hc*�œ4P²îñʶîôMm¤âþù硇Bûî0ÑiÄ%æ�¹Àã)c^•:Ÿk ]l&«”,ÿ†ºZíÇâøŽµðñ À}Kd0w“§»¦Õ­›»°ªÇ£›Â\j«³£´Ž‹%ô»\<Í碋ÇÁNS{ª…Øî>€Ý^£»ìó ëŒc°ô6c¾§´ØÀû|$ù…^§F˜GoA\µ9–G4Sµ•�~æØ]TÉA©Ùù˜/sЍˆ*¢ dó–]°ç ©ûÀ‘(>»“�,/ø5ÅSô0ÆL˜G*½ô˜Ÿ.áL(JªšÑ�A ?WZJæ£YÏq‘TÓÙ1ÏWx¶ø}õZD%äàlèÀÝóf`ÌäIèÓÓ�þ¾ÌéÕzMåÈ+®SwÉñ¨c ®…Ê#‚½Žd÷î¨|Þ5÷æ–õ¿ª³¥õ¨­zén볞,haCë‘)üGËáC‡€õÏY% ÷ï¬9´hIk_-€5<<ë\Làs*Å�ÌùõT~”—SiÊ[û’ÆçNòŸYZYcû >39 | 3• æ¾äKJáÅj<öÖ?áîÛ�Š­_èkÆ+¯¼ƒÐ“ ~Ð’ô™Þ„%ƒç›×­æk%²ÉLw6)¦*l®0ðq˜íS.�ªÁÃ4Ù¦B·Xcbb®Ëc(yUµVÙVÛÒ‚Ï>ýš`‡­òŠ=¶¦úú$ŒÅÙ˜8�ˆ`@;¨u�{tã€V+h˜È@HØÉ“TH^cº·®p_ŒŒø_}ÝhñؤDæô|àºÙ¢`=B"…ñ¥TÉîÙ³‡–´ƒ�_˜M™#•"30wî\¬Û°�<óóQµ`¸Öu½nƒ7˜uö s•D>:§³sÐ…–Áb¬–•+¾ ­góY®ÂÖ];ù\¸@�¨Üꄾ\Ž}{`­å6\�{g.ÆP 7ì ÅÊÕ«©<*ç1· Έ…k^n®òÚ½{?ƒ�C°ì“oÔݵ~öï? õû0ž×ý>±�;͉T¯JÀßî*Ù!6:~ð>'©¶Ð.÷?ð—s@ÔÙH抉%;HDý©|NÀXl’GËŸä™[W7Wdž>UrNõ§eoóÏ­ÆÒG¿Õªw4ÿbâÚQÒ¢{7-+ÍL ’ØcÞ„!Tež¡ý™3Vóÿ¼oß*ÖjI�q¡ôÙˆƒïbÚ(Û 7ù<ÙϹ˜ÔÛžW¾øð_0¥MhQ~6NŸ…‹‡íXk”<ÆÉçSh%ÚÈœŠC¨b5ã(ˆ9nSóQP\F…Ú(æ\eãN˜¾h) †ÿï]ù<ŠÝøÚÃεò æÞOeóîT•^d]¿‡ŽŸÆñÃ{µ¤z�ä ?xð`åSû‚œúátuè�Î$üH)¿”­€¬FíŽ&°I‘{øÀÒǨ”ðPH"¢‹KÌd~ÞÌ+ê@ i`×ïËh=-d[›é#xTF�§Øï�?�ù3�Ã˺ *ɺ>°ã .8úð³eŠ¢«øbLq™ªq[de§!‡y'­­�ùß+@)ëÑ® x:Ôkb`tË/ßh]…Ìœ<‚Þ|6ÇŒÂñãg±wÛNæa a;kɼI H°Ý9}ü°<è묀¬[wm (•€&Úíoøm%BhÏÚ¾ô%`ìD ž*@ZGKY³æwœf b¤i ÈÚ~íß_þëm²ÉC”I‡ö±€Ä ùÖ›¯ ›{w˜Sñq»Eµ9·¶½6€ÉÏ‹áê:xûËûˆï‹Ô˜D*ŠR ^jêÍ‚Ki$£ñ>¨ ëU«ìsݪћڎ@VWU€µýñU^Ї¡¹ƒ¢ j?ïN~§šµÏ€¡Ê*Ÿþð(U^逯µ 7Ú–Ô‘õ:útó0E* 1>=ý±…*€éSg+Ø­§==>tŒÍm òµ%h/£~Îÿ¨v9NësÆ¡”®Û©þ:d8¾{æÔRAš�U€ŸÖäq˜Ñî× =º3 ÏÔQáÇ`EÒM<ëAw >“ÌÁM`/,t?v¬û�ùì§ AÏšy‹/¢�r»vîF7gGü¼z#�ü°‡$Åì¸ãHŠ‹$f"|LY×ä¨4GUq> Þf° éÔRKûÄË=ŸD»Û‡‘ËÿÏÐa#´ÿ†ßÍI’QÚ¬Åu@J&Œ;ömbiO“& `OÂ@Fr FŒ½ e´Sס=h.­Í—}óDÕTNÂÅÒcI®Ja]¹—m?t—™#ØÙžy �Øça.ÓÁ“¡O›ÞØ�ÿ$y¢´R!ðb�r‚‡¶Öæèiɜ׹u´OVrÜö ¹L@V!cHT).úñ¸÷‘—ñößž&) 6T‘ fýY@ków?[‹ûñÞ1.u‰`k§fl8�3½z�-àñ8³¾j!8ÒŸnV(\0åž”¼wÍЧ�} Ο=E•q7ÖG]‘ÇÝGŽœf½ß�¤ë0$†Ç`ú½ 0Šö‘jpUXÕií?˪K±ãðFìÝt¯½òª²¶_æf¿?åYe¶'óîªEî]Æ…Äž£º¸ŠirŒíBKuG_´í' ¼³‘œ»ke¢·w¼®ªÛ‘ œ¢r¸X•±¤(%`ª=þ”åoGÅ*Ë�¼ê p' ëÉ“«aÆ@xg*-¥t64CW æ›§¢')ú8œºù(Óµß.äæãÕ7_GlÌ%?­:O¬áœŸ~öUÌ›;C�Üæ3œ}Ò+�Å ÀjÅ´•_û‡’âÀË«oëìKeÌ5Êçÿû_¾£Ex¦Œ›ªÌ“ÑÒvH¹X–�:ÖOl»Ø0Ť~‰3‹ØçË£ŠÎE´—ߺq+ÆÐjÿÍ7ßTÖ™N¥lj+~£…íêª(ÿh‰¼ B9j¹XÄ&eÂŽ*朂b2'h·ênNÕT#SH$²Ÿ@›nL+‘ ½Æ ôv"Ù«ǸU0ÖkD=ÉwMNGsëØ'íbÇ{rãæ/Å˜é´ØÖ«C��3ŠØ ;y f&8qô4¼˜"#;Eå5ÌëÍÔ½û²�n¤œ–-ÏÞ$îÝ ÀúòSsi‘}�;šºêf×Ç’ÄOûCFŽST�=z0g|ZíÅ»b`ðhæÅÌC]q&rÈÇþñ×H«ìC4âÃ�>DûÑ–¬ËE‘çåbE’¢UÇ}”çi©q´ .À >^(.Hcª�Îxé•Hö€™S;ëovœe´ ®.½ ´/åTÅ¥ñ͘öÇ‚)HÚiƒŒÙw”ÜîÿÍòá§Ÿÿ?ö¾¾ŠkûzÅ…¸ Q AB‡â^¬T¨Q¡Þ÷ê¥^Ú¾ÒöÕ)RZ¤¸ „„ˆw#nßÚs™pI“ íëûïð»ÌÍÌ™3rgΜÙk¯µxMÔ 5§€6}˜,òû~åÏÜ?W^×ͬ²M¾W¦òY ,Vaתeë–ÍL¤9NË–Å<·¶êl&¡_FBJ¥÷ÇaâØñ�«T_c{O¿Æºÿ—¾¤Ì©m¯ÉÏ–Š,—ç�Äå#à“€BrÁ 'ñAéçÄ#³šÏ‰ª’¡*Ð#àmK¥–ï4_^ÊP€ ³S‡•ÄiO»¾úLRA¿’Aè4õn8eA‰Ñ*ÌEnW¸Ü­½*Ì šûù�Äé3 xÿ½d~OUÞiŒè -c~š+KÊóÓÞµ Ü\º(ߥŽ1Kü}†ãð‰`~×aŸiЉ“¢›¿f|"uÒHjX½ýCÊvÛÂÎÊ [vÿŒÚ+`rvŽ‹CRèql‰c?k¤‡n®†¨/J§Ò�Úw ?7U¿ÄVª¾¦N×Ú›QQ€ã&C’ÎÁœ*Aæi—.VU+ŒÂ$@U¶qSŒu”yò p%S)šqU,£•"±SY®pä:``•ØÉ©¿Ÿf}a¯SÖ¹™ÿd;r­I¢—Ä›‚žj¼ZÚì�QÛ¸ •¤#û¯½]5©@e¼j/“6$Þ¯^§êñ6­#õÔ"õ«™ $û)çBÿð> £lt[ÇHÚí($.ƶMÛ{T‰�­ºL¦r�ɽÖÚ¾H=X¥H½ÕU*ÞÆÿÔk¢i“rÎ…�¬ckºø¶ü-×…oKûp[6ò¿FZ<°öççfÊ5�õjð³YAÍ•Ùsæü`mîÄü—ÌSåxÙ£½d•T–+>42jƒmõ†þ³Q¶/™em-2’‡ŠvÖP[וzÒªLyPv9•¨dßÊñ�8ÄÁ“d–ºê¶Ô°Ì“� td™Ï/‡°ü¹ÇQ��¥r­µ€©{£²wçVļü$b"á@5EŸ3;˜Wå"»¤ö®d¸ðe5‰žyN” ´%[®¸4“Ázxõƒ•|±5TX�¶Ìöµ¥Šv Feu ÊÞx¿þ\\qü�bÌþ]|2ŒõjáheÓ’ Ä3Sµ¸F¥ ÿº2SÕ±¢ó“paÈ0ÔÛÐe•ŒcÊDZŸÛ‰Ó=GÖ#2}v�ŒÁä%Kau%�/ÒEM­Bâ&ôsMLJÆ42ÈÚ‹¬¤zwfVj5b,%ËÃÀÔ¹µÆ;{ë7¯Ãü9‹(µèOI¶ü²O<¾”òšædдGÁùðfæ\e¹ÌM aaTËL9#<²ì9xuìJÖC7²‡3X¶™™ýº˜|G?Ä_ ÅáƒÁØüë¾\Hgpå-MðøÒÇ(ÿ;ÅeÕ„΂ÍUï;W[XX½†>nþÚ§·ñ»¬UúŒ(‰÷G‹HPÞ.€õFûðégŸ)WWM�¤i}XZ¿F‘Æ1frãâTó¢d�KÆ­¬ò±à ÞR>Kã/Åà�ÿ%²y̨”q ïš+ck²o*aI™¹q¥KÛ1h•J/ç²V{“Á3–²]ƒxdÐoÛ�éÓ®]›ê> èKÉ^öyE æS¾r.Ù–m)Š4%¡ØÕïöïÞ�ˆ�Ã]B&M ÚņR¾’)ž’œ¬øG;]bUƒvÝ›ùÞÀ—MñŸ¼w–»š{ìfÖo©î÷«×aê’çy>;ñ¾ê�s ––ÕâÀÉ38v<”/¶=2� Û0èÓcÓ–ÂU¦ñ.ÄÒ[‡�ü.d»8pVê}¯}LŸœLÍyˆ£ü|<ðÎÇ_ ”ÒN—¢ÎànÞ“:LÆé7lvîÜIæõY ð%˜<¦/ü½¼C©>g{¥ß8¶é+ ?‹}¨¥°zÒc,— wı}Hϯä t �µn8A_ÖžØsðˆ’l£ý[©×­ö± Àjᢹ¿3c±ý‹w0xÚí*¿û~† ùÚU_ÀžcÕ%6\½(ã[M63Ð)›_]V„ߎÇ39htÊèÏË s|Ü%ÊËú!%= Ì$·fB@Nj.ÏO9Þþ÷Ê6vïÝËd¡£”vëF«ñз ÀYŸË÷`ú˜“1ãjiŒÞ]íèci‚ác'Ò#ÎÙ —�^ZI9POX¸ú⻯`DùCk>å~Ù»w' KK ßР$¬xP>USt`ÇçYWÊÈ5°^­¤¬êw™“Ñ—N ý|ôôp-˜¢]G¾Ÿ:Œ_×ÿˆésïV ¸ª¬2CVO/oe™$áÄQnÖ‘I/­WµV©›‘Î@‰“¿Æ?ÊûZÓž.ò‘âbß±`Ufhý{1†�í!ZsÚö5!ä_̼sâµØ|²Õ‚™d{÷�=ûÊÖŠ °J[kÊŒ·#ƒÄ’cMà]æG‘e,‰ÚE¼@÷íÝÆ$»,šªÅéÛ›JB|7˦<`"ŸÏŽLj­À*Ÿ¶–V¼§T•1Ø~^S.TKð%ð'«”]Ï>†=²fò™„;d êééÃ�ã°M›7CÏØŠ€^5ê ­`¢¯ËÄ'”ÒÇOØ� gÍÀPzžfÆŸFJüyè››!!1º”q5䘩c7TÒŸ4>· ºN½éâ±L° Þ¾Š‰€eLàrçó~(‚FCNtTudœÂÃÑýɺqfp[‹¬U€UÖ±¥'cvzAÜjôªa_›k‚‘Õ:†¸ç™·±êí'`®[€]{#˜‘CŽ?ï ‚K;Cü{Ó)äd£¬²†ý‚~ز_ñ8>LÀ+äø úÈžV@Y}î¯Y;¬þa ÊÈîˆ;†3‰ôý®ÕÇÎ-Û0ˆï�Ó§ ~’ÚEüäû ¤ï;ïô&L ?¦¶>L:N°ø2î[²ˆ)I&Ø@齩óï§WÚäÅE` ¿=žzýC,L,©×å~§� =•6eT÷¨S@ʇŸ|]ý»ð™lŠüR‚²‡öPÁ¢/,™œçíÓCûQê¼;¦-ºW{—Zý~ôÄ1<ôø#xêѧ°€‰‹´ˆº„·OÝÐãù/êE”%Þ¸5Ï>ûÚUeA¯Š*8^¾ð¥‚Éæm¿"ƒÏÉÓÜp“jPN¦ò¾' ®Ê{®¶ÌXbí¸¼µ’FyM z¥ZX™R½Ä€àùõ÷qÓu3¢°�I‚»¶mÁø)ó˜P£Äx•jë×~Ë1¹ÄÞ£9€U*¹3)á 2]\ÈÐåG»¤’INð53+ýÈ4lZúÜ4�c¼>M5þ=pÀxZª\XeÁé‹ûÈH.�½U{¸0‰B>°.xø^’ÌO¢šÅhÌ"ÃVäã�œÉ<¿š8ۙ߶¼7”ÒPα¾“¢òcçì‰ £søcÅD´Žô Ãe^¿#FOf²TÛû¥Æ×ú¢(IPU®ŽŒR)7 ¬¦¥ó½ž ã8.Qê;¸#9+—IyÜw;9úÀ•>åS™�üú'_b:%<3óòq�jK—,F¿®3 Âe*=­ýéKªPÒ�l2'{+ÅÏ|@àŒ1ºº TÜD‰¦:×�ƒÁŠt·^m!<8>q…™¹û02–›Y\m `ýÇks¨ØEÅ û[;Ï7:Œhzx»òy¸ìáØ÷úñ¿öºŸ~ñ‰ò§š,¦½ìÏúyžªNÜ¿qc4¿¹º�¾Tu*«(R¬-,®²LÎç¨wÜV)`\P¥vÕéŸ 6¨ÇÙÖ©Äõ$¾©×ÞC±þ Uâ|j|Ož*¨*Ïõ^‹O¦#¥å%Þ'õëˆ=Ê6U¬¬¯€ž Ãìn~ÿA‰-š;:W—•)uÕ}r†Ä¿+×Äç_†á/?6¶'í¨qGòT€UÔâ6‚Ò‡Ÿj¬#mjö?¨q_ÕíÈTì³–=ñ˜2–’¿\m`•eRh-®È&›_’ä4q.çndÃÒžˆ}~xx0ü»ö¢_ýµ>669ÇÃ6#…ýGè© ˆ9‰‹Σ²Â‘ãD²ö uQqi2* 9–ðEeAÒ™LŸZjÈø£-!Ѝ惚Ò"ÔP)¯&÷"Òêìh¹�BE ]2mJ ¦rlH 0çö?n<-*R•w%>P¨€§K‡0cü ¢¬%W`mª�Œ±xÓJªÚ×{åeÄ;v¤B‘‰Ës]ìã¤VϹJšQ*ñ?ù�´%Y<“ºòûËo%¿�|—ø±½O5 \ÃÔfnjªÆÁe;r=^_ê5×·-÷•u,#uå»vQãýš¸õï�_Íõ­iSÖ“zÒŽìƒ ¦ªíÉý--¹æÕýp·¹íªë´4U·+÷Œ†$¥a+÷Ù­Âmz,-µõwš¯é—kîIeü8ìï´{ÿÛ—Ûtn†Áªn²dUgüoúï h:Î$¥vjS3jéT¥•†ý€!Ef³ïþãhÑ8}êÀ¤­«Š”0ëê´E*XmS}x¨ö2_Ž×¸¡¡H¸j=mF­ Šä\I§¯‘2ÐÔRÌÝC±yÝ—H+«D{ÿáÈØúº ¤6Õì4…ÙkVí=•eýÈp*Ê/ÀPú£ªÅ‘A©Df×ñÅ#&þ,tô`dag½r¸ðe>¿¼œÙf^ôE±ÅýKŸÂï­T˜­w Ó$G<4t8³Œv”þ1÷Þ{?>Ûô+î(O‡ÙÍ€o{­ L¯À0G'{$ֺÚìµ|Jýefç o7/´×­Ã¥ñw¡0ü Lû�†‘«/¦vôƾì<…ÝnRR€ý‰ç`È@ßÜ{ƦŸ¿A}žt¼ú´6UìØZQÞ‰™À’W#7� WkG<üÈRÔŸGØå$ 4�Lˆ®8s>žÙsvdƒÖ¸ó ÐRNOœll^ÿ=R³ qdã¿9…ôPËI>�Q'€ruVÖ”PÞû r“Oữ~ÀX[|¿y?N§TœIDmY:vî‚nöxèéïÌÑ”Nñæ‹fVnŽ3 y0eônT""ϑՑÝ"È* Ö[Xo´ýÛ½ü³Ï?Sü¿šY÷ÐWèÙ§#“ºý|½Ð{ðH2�Ïàí·^Å’&îFvbo`•ýpU>RpêèÛY™jþ¶kXíH–�ñs T-!dt¶g»R2ÉFMLŒ‡“§/úøùb"ƒ0Õ¹‰ˆI¸@�`]7‚êNl˶I�;úüyE&[m÷FS32Wn`• mp€ßRùâk^�¹y x)uÎòÜíÞ¹~þþôü#K…Þ›Rì™9® °^)ÌCJt8eµÝ•å·ó¿-[6�mAéÚÂú÷õFÄéPÊëXáù×ß…·® xÙ7»9aΞ=»Y€UV�~[çðÞ”Š‹1ŠìŽ:—e¥_­€ùoXg %«ðàʯ0� ›Z\\=Ð�^ˆ�ÉÒ/.g[òûJJxjõÈî9‚]/?ý6îzàqteæxJ!ÙøUyˆ¤Ýkÿ|o.Mt 6-ϼòå�ùÒÀ�ç^ŠÙçd8 +³•¢‚¬Råœðáß³'6|û�ÀËʾ�=Rieó¦µ�Ϥ `V™Çs舄äôj9ÓÊæ·È‰2�"õUBðÁϯ×ï–ÿÑ"[vü6F¶EäÅ_@{GsìT«,7çó™¹2m®¬e"‚$#tëêǃP2�{a7ŸŸ© aX¼ôØ“íubö8Å€ìE…Y÷äKï"‡¹íŽ$yäåew+Ò÷¦˜r¥”Ïñ+8ÆdÝŠB^Ç£Œ×xtr>LŠãáæ`ƒ³™u(ɹ̱H=ê“^Déi?;†è³'ÏA²GFŽ™@¥†™XùÑ[d¹Vã©ßAÌÙPe L-éë;[IxQ�ËŽ}±|š+%ÅùdfT¸ö©õÌ�è�dc‰Y ©³§á!Ç9n0e€™Œ1 *Àúȃ÷S'ƒÏ…k|m«1å茸•©Zb.D�íã¤þÙâÔξT¶—TÒX[\éê‚n~ý®«ØÅ=)›¸“,;âJ2F �wGh{ïͬ—.œÁ?›‚g^þRYµ×Ñþ¾Š2ÓòœF¼Zô¨Æ1…ž„=”Yo¼þÖ|ñÙ Ì[p�Z­qªÏ Ó‹¯<�±¦ÓK0�A^M ¹Œc#ùÜdm ƒUݘV¬x½)ƒ»æ£q :Kî¿ú¥Èr7Ž){öì�0ª”×P—R™qô÷svGƒlwN˜@p•A1²9ÏFSf— úŽôþ¢$\dh0“tPgÚe¥9¸x6œàää—·“3–¿ù1 *ëØOø##ò Š™¸akk�+zŽÈ*!›ÉT�Á6g–apã%;sél”[xñ™vÛöÓ¢'È{î¡ûÉüû€kסzŒ-MóSâ…ôz-wêŠr˜r»“ó³±ó—�ð÷ó#¨k#&úĦ¤)€ÊðîØÈ$a&Œ�¸´BÜ3"›r&ú�$àBfÅéh´Ó5Ä‚ƒx¯Øcå·;Q^­Cf± R³ª°nË,~àA˜és\ïDk2X}|د6)´ŠÏô䩳ñÈ ïô1Á‘ÃP_]@)ÜE*f©�~=ý-�@×�lW{èTÔ×g¬’Id½×_I¢½åQ��$£Ú‹~�Þ‘.ô¬,Ffb †Ò_±œíí#ÈþÜ«¡{3`]“ÝCRÒ Ê–3ðI¦ÆëV‡íà¦ÕÚüwÜÅh|ýÑ ‚çCáJÀ-é|Š2É`¦§ÈãÎAY†dÍ¡FƒŽ .�ùÜ™žƒ¥#v¥§»X6ü‘"Á?5h©NoÔΞ-Ÿ£„^©nž]y�šñÓú¶³Î3!�þÏÞp¥Í„”÷>x‹ý´™¹©;+Ÿæ¶ëÛ£úàÖêæ)¬yßS늸eM|mn\?{Æ .oŒ:sîþùÆkxàÁ{ð̲gÔ&•©§S×ëV™) VXOКA¤]½�;#sÏúç áJú“æN€U>jñdÂØ0þ¦°ž�Ž`? .B|bþýÍW8Ϥ«¿î´W¸Æ¾?z†L½L¸·Àüà_o*,¿¥�]¿ß=:{QÍÈ‚dJ•g!2±“'Ï ·¸#Y|#xχã½7^©£G±ô©Чo ek;Á’ʺ%±”kÀÙ“{ik�ŽK§�À£Ë5ðYGGóÜtС¤¶EڹѮÄÅŸ·– ¨ �;aÜĨ»’�&ªéš5kG?þŽ�¶€u$ÀšÖÛK €k¸kò…x2Mƒpòà~¤ÀŒqIˆ–gQ,Á¢W>zSÇj@—-™/7+ÿfªb�ãu£yVš8(«4=šž¯�žFYmÎ�‰‚3##Œ%€|³%—,|Wž£Èsk0lì²ÆÕm¬�›X+´ò%‡}Ùˆa3Z©q{mßµ‹fÏ@W&©E¤6%&$R±*(ñé+Ñ�J(ê³Z­ûgN³y?•`êqu\¡½­Ž>ÝyrìÕ\yûÝ÷yi0ù�‰Ó·R„%*à¥0D%6¦~npú#ûSzBÉ{©°íTŸUU¥ Ž ˜ì›¬ÎO½¢$ƒÈë¼�54àÏõ[€õÈÒEð ;ƈ’NcŒPUc�2U@;&Æ)Çß À*­ ˜5Þ¸^XåoiKöG›]+û)ˤÈ5V{æ,Öü¦™¡õ¿€±znîXÍO«)åkÑ•²ù³�uÿ‰�8ÀÏÉ£§˜ìw#‡�Eª²ØR�G-Ç#‚ñÓº-˜0jý¼iÁÅþgÐX]ärìÄþ:55Væ%èàH«�J\1dR¢‘ ß_ôÙ73I”c™:Êäð7-¯Ž‰´ˆà{�x¾gçäó}¢3Î]dœ°wW²ùi[–œ�ˉь1álÄTóÅqmÃ<<9¶àþueÁhœçx�㞆 ‘è–v ýhç$E[ÎWÆ´›P‹HéjÇxe¾üŽ2O~Wõ÷‘6DªUXYþ�—›qº¡¾Uoÿ> H£Ä,u{ÍMåT�_íXŠÔ•1‰ÌÓ$0¬idO7׎ÌÓ>––€ViS˜®šå¼6yœr? *ë«2Ø*`+íÊ>¨c¥æî©Ó–¢&)Èy·�­Ij¸•öä÷”{^sLmÙƒÛ_Gžoå¸ý{u}‹ç9^¾ÉxÌ�óàõ þ÷ןvn²Š„^ ³ÿ¶lÝÜl†äŸ¶gÿkø¶�å!!«†n¿'¥s“ÎÓd`�±Aà0«[éìnv§¥sÌ\±\lH6‹ÚQÉwyhjA�X0‡²ÒxöBǶt¨2ð’ã¦ì•ŸW5fˆÉ~Ê`ÆcÓ�ëŽWb £—ËÔŠÔÕ~hÉß²"âîb‰pf™Çœ¦¬ii)%«ôáé©y�–zR*˜å{9%66®xëž)”ê©cÀˆÒÌž/eÀì )»k(•ëÙ¿–6��éCkœ�¦äX5å0laÊLÏÜB2‰èaúâ+o`:_Fe09ýµ××7r. ‚wÂ5&\9_¹|bF×ëÃq_˜ OÙ§òN–ˆ½\€¼zkz0S㿪UÀxSJŒ‘£o ç;GÁrÛvôˆ�C3ÁLÉä:“ž„ÜK”LêÓ‰—"ñ8\Ìz>ƒÜrJËq¿]ìÌÑ»ÿ \ÉÇØ;'Rr(‡BÂiV_à eOÌœ2º¿Eý‡ob`;üã]|ñÕd«daà ÁdÔ ÄgŸ|„ACúSîØk6í PZ„42(«Í\`ÏÀDtz1=$2}!Ÿ­ÝÊ[èÚu$;Ä«Vÿkóvpöè„Ü´<ôuËc «’L-Üu÷Mâj¸�­m›VùýDN±%«,ÿo+ÂéE°¤¹²sýg8ã¦ÌAu~:ºõŠÈ3!”µd�õÆÁKZoT>ýès¤s ]^B¤ bö{“š''WÊ +Ò Bø"IFhƒ_ßüð9b³‹0ùá§É­¯ÄŽm[˜l�e/¾Œy÷<Æ ¢‚t!°“K@ß‘YõÐ{ñã‹°zÍ$€hÍ$”É”9|úÑ'É¢¿> Ùt?šþýáo+/z"Á%¥+œß­ûÞÔXuý? |¼þúrt`ÿlÀ¬ü;'Ý|ð©±Á¾ˆ'ô­”² Úk±÷íÞŽ�ðHDnY� 2¯ÏœK@Qi\ìp2<–¤dpæbÊøЫ+ƒ�…}íCÒ×´GG_ôŸr—°ªûeÎ \Ú…¸ð¹×«O_|óÕ·È�¿Ä`{O‚y@lÄ9ÔóÙ3qÎd…¥“š˜ƒX²^NÒ§‚AžžZBN…ÀÒ™ > "«å•<�¯É]FÎÄ©3éÃÈä€ú”žâóO-%”ã5b�»-¥%€UÖõïÞCnÅ_·K׮ػc3úŽaîyèÔg4ºö�Êzff‘å6aâd¼ôê[ 9Iÿ³~ô®tS6?i昻tçùf�"o'+DŸ�&XÇvmÁš­û(ËìsçÈHNDbÈA»v¦Ÿ=ÏÈâ¶³²f’I*³²3Ñ{Èxô4.ÞÝÙ– RχÒcÝŸDÃáÍD“g_}—(ßjcm¯°ÚrüRgù«Ï1a u”f>¾k#:÷ l\Õžôƒgâé—MŸIÊCwê¢é£¥BEy®ÎÕ•œ™ |´~;u™:m °.ãIJÂ'‘¥jÏϵÀ�ZÿV¦¼‚«ë�‘¯ùMÔ¶`mG9æÏ? C‡�U@Öm?‹"²3=›ñT×S§Š4)|Éb-dö½%ÇÌ6P7N###8fp¾d­¬ ˰$ŸA'K‚Í&xã�×1sÖüãÅ××Óþ²aÓÏŠÊB;sú9k�VfíÚÝ`ÕnGûû‘cû Ð^a¿�A'Ë%ˆ2’~WI ȤBʨy Б>©ê{€d±á³©¼_Ÿ)ºHHJÃÐ |1I£?=�+‹™ÈgT�©S¦"ü\¬â?lct…žŸ§qôôEä1ÑØÈ©Ô«´¦êJ'&¿ysìÜ­ƒ#• ôÑ™o†¼‡KòsèØ^]àE°bÑüôÆm‡=(5œ�Ë”<:„ñÊûŸ¢’ }o¾ñªr˜°ž ?ƒQwNRþnËy�ÛüÛ>D� C"¯y/oÞ³ö¦FÖÝN^¢õÅ&HY#%­„ä^ZU”7ç=m€¼Ë ˜³`!ºô‰½”\— `.*JÒ>ùè&Õ"òlÒÒJ'çÐ×¶RaÁêñ²ÉÉMÅá£ÁXöÌ+èÑk@‹»›@–|aA>FõÇ™C[pêÄaxûõ%;¤#%‹ca;çr*ûÓÃ1nÄH ¹s.¢ö¬E‡cáIÛ�Ë_××U0±Ê—sà´AQ¥:Ú×ìò�.ûo޹,Ì y53-¤@‡LR²‘o<–;¾ž 9h+1‡^µî܃tL”ó$ûXÊây}Èœ­A7ú¸Ý¨TU”ÒsÙ‚ÏU>3�–xÖFuH¾x9ôÄ&Hœ›z™‰—¹L¸ÓE ï§+¼ÏÍÍM4~&¯++èšbïÖu x`cwkýJø1M`Ûœ  Í•nðvSÀÕ¬9|’gq{*4Ø1!K-y "óÁÏ¿W‹«Ô€µ_Ÿ>XöÒ2¬Y·ŠV �8]Õf”©€«Í¬²pêý é­™ŽA|†7-™L Õ§Wç£K¢¼nÎu€æô³ðÜ{OÑ_|€b!lå/~XI�bW¼ÿé Êþ§"°_ Þ9¸Æ“Ç`áÃÈÖi oì0e3ßÿ´ß“i=ŽÏ,)¢f  °Ê<2®½½¼àåÙ#g=€§\(³•²aËvîw&õë­Îºn* kà€ È×Í—?œì­•†Ž�{Ñz g’²0kætz"€‰_–š¾`Ic?�˱zrÌ)î�Ûw 8¥�“û¶ÀÙ“ñ¯kÏAuCz¨E]I “�)AÊwÿ=Û6ð7t‚O'/Úø"4ì ÂÂN+€­ºŽ¬ýû¶|¯«õÔ©t—àþ�â«>x�²À™Š,yia.Y«š÷ ‘,Nçü3LlÏgµ Á|)íØøøtn6¹CÝþÔIS�•w/<õ† ÂâE�¨‹njê@µ(;ú¥;:ù𷽩u[ªÜ½[ÛÏcKm´e~¼L`t¬”÷˜°@>HÌyäÉ¿`•}wb_ÒÀºråJLã˜9‚‰xë6¬CÈÉã˜;}2VÍiÇTÃ$7*לP!ndÍùðõ*aö©à£L…€p£ëµ-ç^»ŽÄòš¨¯Uâsêo!¿�|°“ï šwSQ¾{¹‘­*혤ùÏô“íÚp,ÞÑÓ ù?¯fìð)lH‡Ô{SÝGu{êßêT÷T6¤ÌWâ˜|•pÚ,phãõ¤®£=UߣµçÉ1ɺM 3j�؈pØq z3ÅÊ̱‘ÅêíÖM‘ ¶bbi¿ÞÃ"µAÖJʯoØŒ&Pܵp&Šh VpÅœ¬R#%Q6ÐÇ�‰&9ˆH.W’Ãr#ŽÀ‰ñ×*¾_ê²ß“ÚqÌhZ‡!QHÉ.c�Z�Œ¼b”0 1–ã¼ËH)2ÀÆ#+«´4×£ÚRƒID¡tð€Þ=ЩCXPq©ìJ5’“Ó)×Þ@åœ8Œ?¿í/E7ž±ÊË;l%q U>Z]Ø\|Wý͵Ͽ*g+ÒríØRÅΖä�aô�UÇËj›7šª×³ö}"íÊu,×jsEö]úšÖ€ÒɱçÔtj4ú6›µÐR»S×Þ{é þÊNBíåA ²»M;*ÙOõ£yèÔÃáÉ—�Íf-²jí!£“´/)õ¡a:pˆ± þ¤-õ£}¼òБ�úp½ö�áùc–�ÚŽ´/uä‘®Kï5f»®ûiÙ%p"k²oïk/²"ád`` ë´,D؇^³§1@•H¯ÉpàœaÁL×``†Ü1æ è:ØÍ‘ñ ø23cÌpÔÒ� €B¬øô;ÌgÌ–™Ïª ºú�’ßYŽõ­ü:z·2k‹ÒšÆôY›AO† W)#ˆ[V€~#GR^�p»¥=ŽòQWg k ŠPaJp‹>)•I „…ŸVN£³1ƒÅF0 3ÇA¯i]{ ²XóÓ,%3µ¤¢zCë0¿sÒtú×ìÃ�c—1”Ì�”Äd…ÑzÇÐÁ|‘öTzÒ°æ\ÒË•ž[;ùpçOhO…žBMu-6oþ•L5GÔ0;º¾¬PyѾÈ�SŸn„ñPdísŽ“½cƒŸvEfa9¢R‘�}%I')©\ƒfrŸLñÊÊM|±3S>ÊAýü_=uŸÿç½d>ÔìYȹœ¬€Ô�ÃF*«TJ&ƒÇ§c'8’}x;Êð‘ÃVioƬYdHkýwßý  ê�;)9±ëslÚvsè}™•|I ܺQZ»lþä9X0Á‚`Ûð;î¸)€µ¶¦š„<=íæZü¾k=; ² ›§¥rüø¬§Ìòܹ «øÐ³Wó¢ÆJübH†XKkA~ 5ŠÉ kL¦Õ^•É'è{šªøš¨ DªM$~0éaïÞCdXbùË•ÅNL4`°íÝwßå€k>?×öW]¿¥ixäif¿ï „�+ ?_¡ÜÇjÿ­®£ý2)Ëä%²é3ç™'—Ñ_:› "Fƒ“§;R�…0)ãî?J�©yôy ìŽó —(Ú…/¾†§/™+í„q ÛN‘ª®««Ãgß}‚Ÿw‘uH©SfÛ›“ɳúóïðêñæ;obÁ]m?ÆQ”oTV9&¾¬Š�«‹ˆ´äáG�µ_ß>È*,erÈ¿�’’LÉÇk€•z>þ“Ó*fóñÏ~òÚµÓ‹¿ý•øH% îÉûúRÌyX!2.æú øçÃsQWM5ƒäøví¢0Èlò eÐ&�»û‘RŒ{Ð+§;̬mù ¨Ä™xJïõ  hÙ[&ôåÉÀzé9¸^Î6”5Áö}Á>†ACGà¹P äs/+‡Ò¹.ôO¬a;7*ûªG1þŽ:qûˆÓØw( /ýs™"_XY^KúMÄ”ÈRLG¯@ƒžÿt”‚L¸èÑÁŽ,>Ø{û cRahÞyg9®`ÿÑ|öïHb‚HEe=v �Á·‹ì£¶o9J9¼¾”¥+¦'Xžâý,ª Â`½€UÎÎú¯ÿ…u›¶aø¸±x`Ñt&èì¥êJzuò¤ar)sŸrv'Úw ¯[· G?²f™tçli¢ìó³9…eÙþ#úu6äùA g*†öë†Ú}ìÛ wzÉëèÖ£ 5ÃGŽÅ‚¦ã(Àmtç;@ï‘Ó�MFh¡fd„j—ðS'QUÁä^ÏëÖ|OOêSh «Ö‘ ´;¥ÛCÏÅC׈ž° ôXÌÅû_~‚à£æ=¦H¯wèè��AA˜8a4ûQ¤§_Æúerj(Ç—B¿ç>ƒ†#øÀT—#öB<¢ú˜ïµD1íýiúÝË{�°Êüwß{?òZ&;pѼyJÕSÇ#žÞµã'ÏÆŠ•â$Ù��L¦Œbâ‰#÷çå—ŸV#�¨àQH¿ìt*Õe&ã\ìE;ŒÉsSŠÚ’2rÉ×1£¿½�•n® UˆM/�1“4�R¶'Êû¶­G‡ÎÝé÷æ€W§”�j ¹ÝûÓZ{ÕT;…¯½‚/>þ�ãÊ |¿æ;ú�Gá±§ž£tt.ܽiùA†ë�Áƒn™Å*û"ä CHr„H~Þî¢Æòˆc)«SÏÓíÉ{§ì‹|˜’„àê4¾ß0¦¨ÆÕuœi Ô’k¸èÄ‘Ff©¬#÷¢”¶ZœI}Ù¾6s²ŽCBùÈþ�ŽJ@7&A94Èx²õ¢l¿ä9–ã’RPpçÏï`‚͵ÄÓX&+»“¬ñGK|\´¢Ü~î-º/ ]�6À*íÊ÷Û�ßGFv"tjëÑÎÎ�c£N´NË€“)Çj)|F“Dr1‹ªŒ�ZšTÊެU|G‰ =†h&Û^)àõƒÂ¤XTêÙ*׆L‚17¡z %‚ãÓ¯�Rg;Ž])ÍD “£FbÇYòÎE’‡“µrʘ4ZœÊ¸ã1ô`ÒŸ3åÍGR‰HÓoj@D“Ô”Ëi—å·ùhíû·éy’ߦé<ù[~/¹^ä#טyb"ü{áwý\sëjÏ“k°€ škâȯ‰G_û[{�µ¿þŠŸhÍ1¡…X†´) ‘*ËVÖÕ¾?dŸ5`²¦}INP�E­'SõÞQcìj ^¦BXRÏ�ôyÚíiï«|—g€ì�lC;–.÷‚Ì“¢=_™ÁÿÔg‡ô³"�Üô¢ÖS§²\âór¯«û¬.û3¦²¢^ *üÛøoióm¡Þ;™ñµ¶½/üYÇ�×ßÿ wŽþgmâ·«ÓÀÒÜÚ²:he\Λ? �=ºLa›�ËlÙ!Cñâ?_jnÕ¿å¼PoOñóèÏÿ-÷ïÏÚ)‘5‘"ÚþÒ94×aµ4_YñOú¯é@ÇgÓþf÷íV6/Ç¥tè'+2iK΃u™H…HQ÷GؾÅÐiD“ä�#EäE´Ï�¬ßŽÒ0‹¸ŸA»3J '¿´‚Y…�ñêK/bÀ�a²vîÝÊÀ&|Béë÷ÛÏ81`ê‚&âbìyfÙÚ"9#…ô&±€�« RrJpår ºääaDf²4�“wÞ…O>‹.¤¨û*ß+Ì`2u Ìvçà´Â¢JÔ:Áò‰§‘Zi…’” ¨%ËÀÊ3G´Ìà�Ž…'$9HŽ g¶¯!Ybô–KGù•:ì�*á€ÊF…&EÚ/ÙjQ3òNž<Œ‚¼<„DÄžYä5ôþÿºdßþôRäÕéR¸&Œ�N�<éí6„Lw¥²Õ"àK=:¥têä«LâqÌc€¦œôÚ»6á®éɶ­§ßP4 QApÇeô[í5÷eüúõ›8Iiº QÓ‘—šÈ�W^{i9æ.˜‡±ãîd†›·Òæÿoÿ% —âÕQ—ïIq±ðêÔY¾6–-[Öaýªo±ôѧQzþ*ML0õ¾×—ßê¿î�ðýwkзoÿ67u:ôk'ñà#O¡>n5^ Ûù‘7¾§�oßfÛݵýÆizÍVha¦¬¥ |YkÉß´Põ†³×¯ß¨Ô™3gÖ ëjW8¢ü9pÀíÙ¿ûwñ¨2¯“¯¦/jZá˯?À¦u_á�¿Šá“ïRÇÄ\@—.]ñí·JOn@IDAT7ßãû¯?ý÷-ÆâûÿXºöö¾Yýo"kaí÷; >[šë»¥�28ìº>S»�Ö¾¿òÖ[8G�PÃv6xþ¹‡q6ü,î¹÷d¦Åá_Ÿ}Ãçx$�Ó§ðê›Oñe*-y÷=w�¼Ž;qzº ä"øø~lY¿ƒà|}£lkÛ½Ùegé£ÎO/JÍý›™ã{vîeÿ�y³ÍüåõÏR®óBðfØš›#„à[lì%ö±u8—o{KŒÄ—Ý0&ã /å �‡†2ƒØ +AȑÇcÒ�Ð56Ç¢§®�/0�Ó•@©”È“{xî¿CTl�ÞHNŒÃŒ #ñô{ÿ†»¥¦L�Î]:Ók‡�ZS ³§S7ͺÿzñq¸PzwÛ¾ƒ8¸{¦Œ d¦²Î\Lc¦tŸqEXñÑJL™2å–Î]ø‰ƒÊúÕL”0 ep|á´‘(«®ç±—(¬æQ£'àK²�—<¸ˆ/ÿVp÷í�ýd±Ò‡uÆ‚…X²h¾ÂÆ{à‘ÇðÅû/"=!– ¡Ä‘IóÜK`¬SB–ËY˜Úû ››^ü×7èÓ‰À #†ôé†B}wLŸ3�×ùIeÐ`ðQ¬þj%Ö~ó)‚&ÍG/²úš– ²À$˜laÞ}ŸSAä¹õ[нW,s·ÀüÚrßýÜJÎ%xxú_Ð3ůô•õñö °™é;ˆ,Ñ?31‹c?2TŸzáQ²9óPÆþpÇÁ}˜8‚ bgODD�Ç—«vƒ‚/5j P› ;£rTUëÒBÚÑ�µ|‚€º8“Æþ< ÝÜé�Kï½£§OÒ5V§ôì%ÜÛ+Lê(©Ý‘>�#ot˜�Ëï_4†LœÅä®t& d—È©Æ?žEQx�Š’„Ô׿£’äðäÓÏâµWߦšÓo”m�wÞ~›ÀáyÛš’ý{£û Ó£ÆL˜‚5?ïÆúukл£ôºÃŽàÔ ¯�ñNàÎ=ûqèÐnäslÿ.Á-gOF™lŸUHÏÔÊþµ³rS¦gÉÈ}{ùÈÎÌÆÐ!Cðú{ïáËãûecãvLŒðÅð¡ýhY›Ggüëóuèîe�o=€'îŸÏÀÇRÊ{öÀI2˜Âl'Hi‚»fŒA\V¾ûü}1Í�’œBe¼öÞ§8´þm&ˆúàLÔE\" õ:V7[d}îÙçZ]méSÄÌsô+÷0û#7ÞSdþu륬÷â=“ k뎲ªrúÅšáù'Ÿ@…0[jré7š‰tÚ]Ü�ø¬·ÅþádeÕÕïƒúv‡¥Ï˜ðÜh—'Ÿ~ ‹Ðoòª*…ö2íï°ÞC_Ê(Êä7WÖ®þ�j$w7·èO™w‚‰9nVÝ\5àꟲ6о=®%kogíî¯1$`Ü�¼±åÀz|ýÙúÏš`Ýw?iWƒšœ,3å}Y¦o¥4ÔW3Ào¨4ñ᧴éåóGÏÏ=úpc³_ýð%¥혼1½q^K_ê˜|T‘q‡V¿Œ.3ßcÒŠæ]sõš�ÞýˆÏéçéWiE6UfÌ]L+_”¼H[�ncžmlúãW¡ÚN>zíAlâ³.:³ž^”®Í§ÜùhŽ˜ Ž‹ FfänÌyô�ÆuÿÈ—¦qŠ?Ò†€¬ágÏâ¾Å‹ÿÈê×­Ó¥« ~$¸Þ�ìåÖÊÆÎúèP¢©¡Æ\Z«ÿß°ìÓoW¡“l˜\õ/¾Wýôù'J,Föý�¾ëÜÎãN8ô-Œè‰~26I¼®]9žîÕ¿?NíÙÌ$dWL»çÁÛ¹¹¿´­”éËKCŽ¢ª�¯"ìc`U§Mw¤i¤Ý?ɵ¨þ-õ¤HJ�6mK}ÇUçË»®ÄE}O»È|Uñ£é~©ëÔœ8\œwòhãþ«ïͿΠªŒ´V$ÉM=ö¦ý«€¬……—é¯I:m­�¶,€õó•¯âÃO~FjZ“eS©䣬jÕ„…þÔó/ 2ú ªWø:ÔÀ�‰«ç.d =Áád¾/Õs êNu†èð£L.ÔÂÝ˃ /¶Ø|é±QTóešã˜0ÑêrÒ%œˆÈgŒÐ^îTŒpÇ�TV‘"ý¨°Wmž|ÑR~kµ_Uò¿¦¿§:_¦ŠŠcÚEbÁ굡^GMíúM¿ËöÕëE�«6­#K½µ´SëÓ»L#Î".c¨+– ×÷¿j{Ú×IÓöä:—¢öUê}д^Kýµº�¦õÕ¿›Þw2_â@RZº¿”…MþÓÞ¯æÚlRý/ÿS~wõ<«÷ð_¾7Ø œ÷+Ä=ZëÛnÐD› Ðêß½w›ëÿ8ÃÏý o.ûgìKÓ6[d²¶kw-ÛYVš>mfcfø‚ù ™Í¬¹a›6øwý;�Á£özT°çﺟ·¿ê•,-É�ÑdÉ\Û‚tšÂˆ”ŒÉQ3£®Õøó¾É@E²Ò$›H5#¿Ý[“LÉ’™ZTæ§êÍ*Ç-Ù¢š,· Å]·Z$kG>¶³^wþä\6PÂÔH§«·låÈÏŽ^n –Zbëè_ØŸ@_gÌçýâyŽ”Qª`¶Z~§4ˆ�BE½®âù’›‘Fi¬hzLšÂ‹æ d�.¸¡îúQšÐ{Òõ�‡dIFVÇç¿@§s1bÞBœÓ5ÅQ ™ñ›”AVI*¶ ‡e1 ÛÍ]0Íß \4æc{ð!f ÅÂØÒŒ7ábZÒS˜¹_Ž»J`äï·#g”�¬ã?_D§¯77&nj±¥Œï—¯¾†�ààÛ3æ,¢ç§%BôQY§_ÊŽÙÚ»">ò8ãþ̾/¢Wž%ìlÌ1uÖÝ̸í�‰“&1ë®õ ]u{ÿ§ý­xüÖ6šìkXQú²'Áî02#.S~ùç/ß§÷âxlQu¥ˆ#/{ =íhPËÎ_×)_míÕY75pµ-ë…Ѓ8ux7ž}â9%�Ö§«/Œ˜ÍhÙiLké>¸e0ŵ“ÿMí“ZY¬&”!¼Åϯ›ÒÌk¯½Fé-)S*»ìèYÜZùù—_(·–Ž�¬¶vì#ùi©ô¡Y\ì9èÚ??®ú»wïÂÔi3ØÇR œò‰ãnBB±¥íÈü^dMŸ2ïjͳE;ùD]Wæ…Q¢M^ÐÜÙWÝLз/YBú?i4�¸n´)諬~áB,Aû¯á×Ç,¦ ²šÒ)iÔ¡”>¾œx±Ìj-/«À2Êv}úñg”¬ÂÏ`…Ñ{3Ûok]‘]Îägíµü�Ž�<‰Ä„82Ö¼ÚÚäm¯wåJ‰Âî=sæ _Â5I³§O¥B%ž–.ÁÏëƒ9_Fkuõáfk‰vÖÖì[©¾`E°uúü²eL �ÉgCqy5�ŶuÇ.ô$sÈÆÙ–¬/¥´ ¡{×!ê³²Ю­­CaF<¾üv²Kj(£çˆYóçÁÎÒ”¾g’¥ìL¹>Cd’-fB5‚+TP ×Ba}œ9}š`aøòÇõ0ʹ€Ýô B@¶úø#.!‰ÏÔù”á΀¹.PÂçXq Aa—kI$ÉÇ·+ Æ–¿óRãøÂ¯™oniÍë}HNa%6ü²Ù”³â‹ÿ…ó瑘Yˆ7Þ\N°Ã6üT4˜béÒç˜Ä÷0\(;H¿¡R$åV ?#=ý}áÉÀm5eD{ÑëÌ„ÞgUy‰¨×3ĶÇàãÈ„(Ê]9uðCo^·Ö|& 30PØîk,È@q$€Ù¿ÙkÄ€JFF¦Í.“™ çOhd²6­”ÊqR YV–d;_¾ ²Š‡ªZOUñUm¨# ã{[2u¯?¯X–D1G2ÁŒù ‘Ï_Qäüh³XÛºÍĤ8œ ?…Ég"‡þuÞžÞXùÉó¨fÎi¯€�×5#צ”ºZc%ØSÃ1OFJœ2Ï„·µµ5X½ù[2DRÅ)Ží&OŸK_LÛßù½¾µ|9†�YHñe~jù~róÅÊòÐÝ|�æçžŽI§߮FnzN0ÉaÏŽ_±üÝ÷˜m¬IhkºV2½B÷ŦÒ÷¸B»cÓã‹M«Ê�6–q¦d�ï³u7Öwv4Î6V±j¨¬©C)�äšZ=*�ÔSÚ×§ù’kÖÎÑ‘!ðq0‡½“;ªY¯Œ÷‚¹ }³Ú{#+·ˆL«¸”’F98&xD…býÁh×ñ^æýÏ×Î’+åhÏ1�Qe1ÆŒ†aÃú ¾ ¢Tð8ª„ >á_ìýѱ{_‚ì×ÿ^M�¯éß.d4‹ßqàPÊ$Óóv˺ïv. =œÐgÀ ˆÒC--> ½Cú÷Æ��ýÈÂ0Eè‘Ýô§¤�‡¥.™&0#¥·�¶o=�n]0dÌ,Œ?‰c-JŒò^¯¬ÔÁâ%÷±ŸÊÆOkVÓ7ÖÖ–èE›_Ïö¨Ôi‡ñsÀª¯¿Æä™ é×j‰ƒÛ¶rwuÈx®FáÅãT ÀL‚„2–XÂÄ3ñTç+Þ|†^õeyØ|ð ‚¼éé\É߯/¦ñ|�šxV¼ô ¥ÚËÅoz€v¤ï߯e;ŽL&( €g‡GŸ{cFß�Ê\‘îŒì”J2×ÀÆÕ“ þ>MOÛ ÿ{2—Ý�.m°úùOìs[·©çæi\üó*¦‚Òuà*‹XÖUÙª&ªFÖTâyò›”žÐÄ7¥OR‹\‹Â•úï”OÓûKÖ“Ø¡ü¦Ò¯  "Û0L˜r*8v­Í!�mJ™ é†À¸•Œƒå·—õ>þyzðù¤þfb/§‘ËnûsOÚ‘kP®Ç–Ø—”‰:áOQqœ2 E×SµkÁ½÷ã � ùw/ ñF®WÙG•u-Š�êõ­NÕc•mË5®aœkb8r�Ê9�}’åÍau« Ô¦Ë "RÓuÕm6­ßÚßÂ^U·#Ø€´ñw*Ò'¨÷£æ¼ý�öN³/–~Hs[ïnuï]nµ‰[^ßÙɽ{hâ°·ÜXøö‡/p6â4c}nX»E�õ†kþM+„……)¯‰ 哸b¬WÿÀú#W[‡ %a�þó•z\7šJ¥v|Ò±ª¬êSª®/ ‘ýPëªóÿ¬©ì—vç;·#Ç©Ÿ hdÀc=pH•åì…”çHV:mñrP–qÀ&õa 9þkfàê~ɬig/ƒ‰:‚"ÈàÑáKZ­Žâãã™ýÅàÖñCþ,Ðnù38—U€ã^¾HèK�Kל�ÌtÊ"º"6!” óðé�œ äÕ¢¸AVfôE�ó)³�=çôZô òP”‡œú{ªSÙ¿82e?üæß˜z÷ˆ<·›²–ú }2Ë­i@oMÆŒê:à2A‰¬âz Ÿ0�Ò�õ”`½ˆN#ïBBNâ’S°ëX$Üœ,°à‘ Ð݃�ÇÉXDÙÎ}°é¦ya<~üƒö©8ÍÌØ( f\_ ÔÕ0¨jÇ€Pwäd$¢€Ae{f«�dð«}/d]�¿£Ýÿ�ô†y¨ËáÁ(ÎL¦Ÿ§†RÄS¨® ô½“> ”y†FíðÁûoŒµe)“Ö ”oò¢çëÖ=‡�Mßè®Ý:ÕòŒ®ü�þ/Â`UV9°€5äàÏØ´y+öîß�ÜäxjE9`Áâ{8Xí _¿^”Îûžu@çGÊÓO?IO”¡ý}�ª =”°6á`¸¥âÊ—‡¶ ñõ*J©q;Ì|Œ ;Áìpof4R¯k[Úý+ë80p(k'JøMbBRsëÉíZëPRTˆpõFk[ŽálÄ)œï¿ÏàÎ wý>¸sœƒ±Tö“îì Õ²æÝ§)“æ+;'uÖï¦Ú}�­«râaé¤ÏÇDQBî ~Ú¸wÍšó»uµgL�2s´$‹ÅsÓÇ×� �÷˜\¡I’Òש Gh;8¸w!Cw™“½QR™B€õƒÔFزa ­ <”�ûUö¼ºþíž:»´§é5ÐK`U·µ‚ò—=zò~¼”R—ÿ™SX³2Óùn«ÇLçÂF�uñ½÷!-4»Â⿼ŽÞÞС<¬¥ƒë)¹””SŒ—>ÊìÙ¾èâã�íì3Šé9&ãžÂ¢|Œ äüFú¬ýøõ7Ll™©‚‘‰9ê Ì‘›�¥€¬â1œŸ™‚‡¹¹d…¢A‰Ê’4äVáRR&VoÚN?¿0D…„!™rcQô²ŒåÀµ† U&åÁk ²p"ò<üÉÜÚ¥#ò*kÀÌ&œ‹Q< ë(›éaeŽ+ôªKæ�‚ Yä+¾\�i-0Ú#éK¶—þª=4�6õàd;i&Ü�ͱGBÔqª·tçøÃ›÷7¥0yL%É‘déú*²Š… 7÷>öŸ.ˆ½x‰¡(=ì:t¯¿ô¶ïØ\¾�}`eeËD]8[Tà—m;à΄„Áƒ‡a÷¦¯Ù§5 Ë€­I -A(ÞɤL¹—®Ô\¿úŒ›<’Ø|è·mðòíÌ} QÄ»g`÷j²ÖôQýp×ýO@·"ƒv#§uò�[7dRþ;.)YÙi˜9ï~*פÑÿzû>GtdÂ¥>Jy]ŸGZ~1ò «‘šœLàªêÊ ™ìyšR®v?�r>':1h4ZÓŸ¨çëvNÅ“S,D>øðü@fþÀ^]¡W]ŽØ_!ôØ^JÆ÷€�½ômQÆ=�¡uرÊ{•ø @ååíÃ÷˜<°pì”^d`™AaW^#= PÜ`•F.²ÏŒe‚Eç$í4n°•/~�|¾À*«ÇS©(äô)Œ6þw­…„Ŧ-k0€>ÊÚå\L$ûùk}¶ö²Ø¤ 8~6£�â=ì}�ïë�&À`em’²Nc긅×Ùé¨à�v»ò=„ÉòéJ¿óÖŠ€«ò‘òþÊÏÐ¥SG$]Nãs²=ÎÇ�£2Ÿ£iÙx~ù'xšã7Þg—.žGaY•² Èa6Y·šg:ûÀãÑñxç¹GiÝC ˜×›$$ à ‰/¿ü2e¬O#ŸÒ•Åù8‹q4}¥­LÑ­)‚­e=6n}ŸÒœ1xå³M8Ï1Љi;$ÄÆp\=‰}ûYŽ£ù®Õbá5%ý‹;=1ÿ›ŠrN¹Ã¶L~)-)¤ m U"˜0ã‰7¼Š�¿}Œ cà=¥ùÝMoä=áÿBquv¢çãe ì׳&5ÿ,ý+�3øp0Ç¥ž�›¬­§É'm&N™Îë÷Ú¸£±Âñ‰ËI|Rú¹žT¹\íx¥ÌW?r¨²LCY¨U¯®Ûô4H¼PmG¾ @ñÇü™¾{&ÝÕ]8Ïv¨!d|ÿéuMhAj\Q]G*ª@šLÕ¤5™¯Æ S;™ÀÓ ‰1´Ò¨)ƒ ²Ê|)¥^픩e§ž ÀºïÐ ¸^ÈGMÈ‘b ÀÖ2 ¢‚«Ú׌4öÍú%TioW_2QS™h2H5ªB1 á8¶Ý}û_°Êz§hµòú/Ñ•‰-F†í˜ŒdJÛ#}%~”Í8«Œ—Ü=\‘J†iNa æÌœŽ‹§6#»´žI£V(‡<<]™€kE‰ál’#Æ(IRní=94.ã:|ÿ¤\»9­l"Î"1.³'�CRR<ŒÛ 9 ¹æý|¼páB4í+öÀ·›¼½=ÐÕ‡íò}ÆÁ¶½ìª?•ßXÞ9t'P«éÑä÷Vuõ7ØÍýá‹&œkë˜ÊÅ!t¬¬’ßïtZÖý¼ÓöoüÍä·�Q®½-§wÁ¯ ÇÇZåÕa -š+©\YJxx¸WÕ~.¨`þ Ž£Å:Í“‰]áÁGbRrÌèí×µ³²¾›r_\nÕëYYØä?aŠŠÔµ€…r\"/,±xY¿µõUHÖo®H,½¥ç~sõ[›§ÜÃ<ײ_jÂDkõÿêerȵ"¿¹œ·¿c)hµÈo¬IBQçüoz;΀3ãaò¹Q¹- ërfgK‘àæºlÙ²òéH/š úln!¸q&{¶oÆØ‰Ó”ÃJfç®O?yû/+jVŒt¬ÒA¨ÙTêaˆ_©&³E�óß9•‡¦<œ´�O‚åi—�¥³‘Áˆ Ö`•�esÇ,�¼šÕ£Šd=É„RÏŠlç¶³û'RãcЃ22úôèÍ Œjé”�ü2”.Ç¡3YC—}ýiÌ^ÉÌ/GøÚãÀ™ó°13bæû"^SÆðhï‚Qîúè;n&3ÒûaÔÂ%pf[�|:+’ ’Ѥ“x±8ßvcéØw>Ñ6ûBߔåU!kêuôKk ðÒ§¿*A#kktö¶ETT½è§êꌨã»ÐÅ­–ÒÃn¸÷¹ÇpìÄY Á¤ÉS0¼—æŽò@žÍH¼ùÓ&ÜýÐóHZ8 í,ŒVÎ =¬6lÀ7«BW’ªj)ûV‡ÈSÇèdŠ#{djOö¡ 2R`Ác­aSæàhH(š—kX¥œûe9¢vo†ÿ�w+kþ«çÀÉ=5•oBͯÀ°€Ž('S×’Aho'ÅOMŸæi‰)èÓozSÔâ6x'iíÈ_þ5�/íj`àvoüçÞDY¾”�:t"ìHгBÛ;®¨€^dZ¬�ƒ”^íÃlÝæ@VX¥´²¶õ éÁf@™Kkk3tëîKÆ‹/ÆÿM/­“$H™3�W2Ñ\«¸ò 202Éfdm\¨õ厑#ø"Ÿ‚aC‡jÍmý«3ƒÏãÇN'3(‹?@?«½¼Ÿ§4Ñ$¬üf�tØ¿�â»Õ´µu×’¥pƒ‡4.€U‚Ç­•R2J’"ã·];ñÍúsääbèð±€õü…sxðÞ‡n°Jû¯¼ôŒMŒ(Ç©– %§9�¾ŒlÊçþñ"Yú¹(.(GEmL)Ô¯‹;åÐä › Y�­íö_¶ìܹsxé•Wñþ+þ’möd²ï_—«ŠaÍv†Ò›´¨´#îŽbJAãs$‹Ì•rÊ;ï>D_Þ¢? M4›ä¿�ß0óMyó¦½rÏ=ç:Ò©aôÄ;±rùR|ùÉ;lKGP*Ý­ �è@› 1‹ tš°iÍBø¸Yá ãˆùõ†¤ô<‚ÇeèJcavvAøf2ÛÎ#È߈q”�QÆþÿСƒ‘—S@)ñ»q¦Ù�ìƒ ^§t²1lÂ=Œ‚ìœ xyú²ß��K?ÅœïV ›Ÿ/¨üRQZ„”£»�E@tÞ¢Ñ@熪óºd2´ »¨=ø�º2ŽóøÑÃȬ÷G~Ê>غu†'ã.;�ÅVU¯€¨ÆTº¸mLåÊEâªêÎáÕ!n™ú8²³2©Á²Ž›®}{”åÅ?}Á9Y(¬;oDzéùçp¾¶ƒÃº££�!(3mOÖ¶¥›#Aà 2V*0(¼r‹ÏÀ¸±žN¨ÝNÇP¬Ýž¤ ñ|—1fvYÛM ŒQK#¤Ä626ÁdrÙz‘%‡.”ÂUAÖÓ)[àt㊠è<ú–GøÞ-mcvî„�QcÉÔÓD]�ÝÈ^Ôi¯åº]Åa×Þ‚ Û ”ÑÙ@M¯%%¤$cËž�º —¥c’ÓÒX7Ø)›ß¦ÓÜ>:͹zÙaÕšUð¡ÓYÇË€»ü‚\¬X³œqwKù�4Ìã;S�gß~wL¼ã’Ó,^ýNä$»?¯>ÿ>ú÷míÊ%;jý°±rPVY%ÆPÕH}%v‡››Ù±ʤ•ÍU¿_´„¡B°ûà!ì¥cÁÌÛ¦“ í†]�ÒRn„QƒòÙ“eÄ:YX¬’ÄYA{u‚*R}:5â½>ƒ£“;ÛkW0°¡?U:ºØÃD§ ]|¼pšr—#FŒ�g'M^’Ÿ ÙÔ[Ö.ÅøéO£ät>Îçáá§?@~î):>€Y³^@߈(\½Àzòd<‚ø>jÒ%ÿ?2uéAU²á]Ùo¸Ö”é)HK>й_ÏA¦ è`~*-‰1]�àÓ±ë¹lÆ~ÖØÉ´ó½šÑ^{¿¿Êr?ª‹õÏ�fÝ= òË$I¾$Öª�V˜7eÃŸàŸØ¼”zâ·¾rœ:]ë%‰­L�Ú;¯Hjê­Ån¨ÚFOðý¶omV@V9—°XË{G"œjb”XŸ –À­6Q›…wÊÄÖl¿$O•!(eàWì“*ø‘Âq³³‹s{¯Wq-"ÎWþ`•r0„‚%•ð$3öQzŒ•Õ¨ËËR¾žŸ|¯ü¾Ò?õ]ÑÞþÞgïÂÛÑaÁýp4&Étžˆ¬É·¬â4ʨRÔÕçRG59¾öA`:ðgf%sœ`©ŒûëZôÐÀ˜îgÏÃLÏ�ê—Tg:ÐùvõeŸCEy005ÅyÚC Îq?¡¡!=ájãB‡±rEÊ™urÇ™õç›PBÕ˜ *U—æ’¥„n½ÃÙŸ¢S¨ƒÙ®uë䀒¢Æ¥gŸË‚ªGaý¨bMõ °66³<¹ïõ´Í£�Uµ‰Ë6™Ô”Agذ%Û…nœB”Ý÷Ò#{èðaôd?-‡ÿ¡û<üðÃ7ì|AŒ-DOi5…† @~NcWž¥Ì&Ý}þ"I©X/Äùƒ–ðþBíÿo%ñ¤‘tyœÓUžö4ôÕ8 õŒé žGÓh¨¿.�«òÒ1”d~Á;Us/5Tü»áDc†™&½›)ƒƒ´NLõ1 (þôz´¤á£˜R¹ d’ꡨ¢ŒºúÖ('ãæþ;nÅqÊ66Ö��銧ŒÃùü°»(¢–H�PS\lI«Ž>€n=g¡èh*>ùa� Uh­©ÂÂùKhrªÄ¬IÃÐÑ×ñéùh*Ö…½Ð|(ñgÐZ�©ÓÇ ¯Ê1ËbÐa}š­=ñÜãO`Ç–�Œ©à‡Ýµ°Ì݃·>߈=_…ŠôttŒÞ§EîÉsÏ>Cgs¤@(È:�ÊÚZÛ»À×Ō̃:Œy Œ¶á¶žáˆO<¦gÉZ¦ÿˆ±8]Vg»‹Ì¡H�`y9 Bo̦Ä.AïÐèccþ‚‚džÔ^ZçÜýÀCêmúKÏ`]5ÿc<þ¯97å:êuÍÐÙ×�Ÿ>Œ¿ØDÏÀô¸,Nՠѣ/9÷Ü/þsÉoí6®ÞÚ?×rÊ‘ž9¸OC#Øß ……ôA CÚ©8;§ZšÑ—`•¤·ß~û÷íÅ&¢ÚéÕ—_Ñþ‰Ã‡�0zŸKÖ]éÇâEßcf*ñ Kkj•Ý>gÜâÃñµxôÞ©”ÜéÞî¡Ï?=ûë `•¾ž÷):wt'(¦‡ÃÇá,åŸáÆT¾·Ošþ‹<¯´bÐà¡4FLàá »èp.Ó/“ç�Ο�&ÝÇÁ½s=™NÆøè“�Ñ©soz³~�P2ƒþ )’,­š Ïá�(ÏÜå+�õòs}7wA‰#|¥ƒE��áHÙ[ ²9‡ŽFòâÿ 'f;ô9àÕoÖ£"ƒ¡bÔä°- €‹±L)Õ»z×>Êà–3&g‘è[�Jêi vÙ4Ä�J;ެôT¥Þ4è]è3F …¥ÖÒˆ^F@¤+&��hÖAÓø®xztÄÉSô fŒXs3+„ñ˜&¶+�T'çéOs`mf&z¸9¡O‚Wôx"ãj­—_ê›[»‘Ù§)§ì$kôÖUèø�?ª‹²aáäÙvlqN†²lL¦™Ec1þ¸ _|ù1\mÍ È=EYà‡h0À¬é!ðóu'Èo�ŽÍ(NØ'K´V–còm·À†L OϵÀБ½€fÊ;�!»ª…@'²fJ�]IvH2pº‡¢ˆÆû޾ô(wB cïxûbÈ­3‘Jç‰k7 OÄ�¶2ª }£�æ—— ü± áÝ{†º™Î^§•å1cg¶­»Ò¡Ã ´Dø�عjó•v£ù>Jõk2ŒÛñòTZT¨¬²§—§Ä:Ì:¶áG“õÒùò]¯é÷2Æz—t`ûRe1ôve~ù¿½ûvã¥'ïÄK¯~ˆÖˆì7àò].ùýòÛïÓ¨žMä'6ÒQ䥧ŸÅR†~HKK¡í¤¯¿ñ•ò®V×Ts?2°Ï”’±4€NkGÉè.ÃÙ’ÔðZ³bá?ò.¸$«¡óѱ�KÞˆ²§ÎŒïpÉ9åÇó�Þƒéw?S2Õ**+ÈSö™2þN¤PúSRlüa|4ï?øî? •ßíýûü³¹”�ìÝަߴN;’ Å)ÞÚjŸY–+ùLCÈ|íØ u¤Ÿ¡ƒ_Üqô¢dgzb4%3;¢ Ö.gÊ`Ñ«;�Y†0a[:Ü™Z» '+ƒÎV”¦4'Y‰ƒßz;WÆr^¹í¾x›lpÝ:¬Yú#†SÉE¿¶ UºØE¹JSsx9P¦—±¢ÍÊõ SAƒ±�°þðÕ—Œû‹�æÎk»vW¯°ÊŽŽ®^Ê$ËS¦Î€¥©�½¿k–-ž�G_þ7âŽìGUE-Ü-Ê0(2µçè B¶êÒt¦¨Q öÆeóYtG˹"˜7ÂÉ<–e(=ƒèûanå„]Û·qNyéÆFìܾ#.°�êÎÖãIöcJ²pìŒàÞeðèä�Å?ÌEsmÏÏXeÝÐ\‘‰qÿxõ'Ò°/y/å”GÓàH#&l|{ö§#g Â'=©ä#ÿ OÆ¡¾Qç8F0¥ãÔ¶{pž1.×­]‹¡ƒÂñð}*ûf3ntŸHMý2{ö“˜:õ.tïÔ–Ïõ,Ä’•Ñ›Ž!WJó-ƃwL"o€´¼3ð á23;&tZ©©%;Î;’1°›1²OgüÀrîK:ˆ²…µxæ�»aÅø­•”¡÷"³}×O«àF®5ÇUT=HHÎÁùŠJìÙ¾ þ3'RVï~x‘•ª¦šÒL~}X¿¤¬:À÷O;�¡Â›¾…Ÿ|�Ñý´7]órAÊ,X¹ˆÑ7<(CñÜלÁv€õ•÷?ä»ÐÀñÚÃTI²$Èz€à· ÀÏ oüûq¼÷Ötg›+É„ßÛØaQÂwÇœ1ñD¢vïÁh¬[¹[܆·/ŒkgÓ0wÁÌÿqº’uôÝ·ó¨Ÿ_¡(í®–±ô•b¹i @ëõ¤5 Pv�¸ÐŸÞ´í'dœJÅýT‹=( /Ì~õÃ3Ojú°‰T=¤CŽšâbâôé<í½У/Ng0¥­|»iúÔÂîjn¨å7ï‹*LEDCDÔPõpeîâáƒqw<‚Û¦A°—%Ä£ „qZÁ�“ðì3OÓi¤ï%Ç´÷cãæùð=™€Ñ£fµ·ùY÷ãw_3ü;#×™V¯XÈq¥¡ßú'Ó�+ VKöuªÙ‹Ý…‡žüâ:sükï^sp·rW³!Ýì+üy×Ï7û7,Õ†å|!ǘØýˆa»úùoFúlÎWxôÁÚ²Ö€¼o*¿¥£«�ÕA˧ØeYú;ë”}‹©¼àH¥7‰o8úé×”uªmPùqÙ?Ù&ÓÝœ1ª¢´mëÑG¦ ÎZ÷½±¨m�Ø)Å™ï¡îÁ¡#ÇBkÊ';¨eÔ^§¨®SË!ïൾ‡¹ÅIXºý<7c£šŒ½©FcOB{<òÔ‹më·þŽ6�1aø½mëÔ… kpâФWë‘jBå/˜r,`ij‚# Ç`Dg»ªª:ì=]FÇrö?š0gÎ| Ò÷μŸÎºFh8žò·-°f”“”#‰Mzﹺ߯åî‚ØVöOV®Ác-Õ°e,Ù?~Їîx\ÙmãqgäÇLy'žÖô•iÍO'«]g›Ñ•6nC†/ZÉûñæ4wìUŸÑÞ}û•<*Ïœ‚‰Q ‚¬ðÏÙ³±/1¾ÍA\l5�gì½r�´3Ç>y v:zUÇ¦Ž²\åÝöì†ô †)áU4©E¿î¹¼gí%õ{‘ï�÷ÉR-»úεwÌÿçu*븆/µ¤ÞC¹/7:v«öXíJy«Ïìÿósù3\û51YE‚WdŠ7 ËØ¡o”±¶±”·ñ칪©wÝalÀ˜Ã� ûåt””“ÅJFNBÌd±q¶ô¢,c<؉iÔk¦Gå iðmÑiÁ=÷>„‘£ÆPþÖCèò$÷Kž›$iåÙMñi¼÷Óf4mY�ÃåDQÒÄç«ÌÑ¡5†&†(¨¨£X ¸�”ýô€å§j h¼®AEM+%€éåíÜŒý) 8ßçÏd ¤ÿ0L D11Í Jp™Ø™à@a ,(w˜Þâ ¶nÇ‘˜ÃŒ�çÍx8ç�_xéÇc&‡µ£" ¦q¨|ƒû( É æÕ“hÝ{ÒM)UKsÆZløñ�áý(§Ø“1<•ëÓüÓÁúÕ?`ýš0fÂ� Í 6¦Æ°è` lî`¨¯µïßgQ<¯Ý½i¤­:Ãø‡'�{³‹÷ê·^iþ©˜ÿîÓÈÍ©Áà ÷ÁŸ±-<:ù`؉Uåô‹lsÒRiµûÅú›±â߯ÿ“ @ ß»!èØ9P‘§½çù£ó€Õ‡ß›ÄF«$;ÆÈu¦÷x�3’"#ûSJÇ;7¯E<åÞ‚{‡*ëÅÓtÌøÛèÐDÏN2ä†Ç}XÙökÿ† ¡Ä˜poMôs˰xõX1w-Üœ9¸ÁiÛ¾]”Fž‰AQüîƒ{A¿õqàÈI2#¬;ÕûwmÅÝ>† ö;‡�¯õºç_|ù9Þ{ïD±]þnî7 ÁQˆJ>†FElB!Yž§Ppºn~üfÍ‚ä‚ÈÌLCNሜx¿Ð(=MôÕ;°sï~*ZÌTÚõc‰I†zPßÎd·º@Ÿ1£¢"àæÝëÖ¬`{?‰òìOà߯<ƒçÏÅ÷‹–óÙ¤s5„Ž¥NÄS)¦¬>ÁÐL9÷á“f0µCßa†£G¢÷#8rRqL@ðYÊ7ÖSá�±®ÅWI�±m¿_´�Ý­a\›‡€Þ½‘�Z J¦ß>ë ÐÁÏØØ½ú¡H²3OPrrjÛ=ìN‰õ¬Ä[ïþÓ§ÞŽé�ŒÅáë0´oûßô˜ Ћ k{ (j¦v¦õd0WQÞR‡ZsdjK'Œ.¬kë-ñàó³©hÒ Ý:w¡qµwL‡Z=s”Sþ¾ìô)4‘¹a@9dKK †;)&퇸};âçN‰ä@øõŒÎÁáê锹­g™^ü†„•¢3t@?~ç.xáÉçðŸO£ �hÉFþaå2¯Ãø°í×;Ú'±÷ ¢³EW`½&ëÒ ÈrÀ°þQÚÙ(Ë1Gã±zÃfÆ#V¬SÆ�E^A¦ÞÊ>Ÿkû—¦ ‰’Á˜SÚV982"ý¨jáÍp-³Øvõ � ´ãJääå3æ¨Ü‚ÛžÊÔØPOfó Æy‹a¥G)ØbtÔ€µJA~Ã?·J�r=cmíÓì\¿\.‘ú¥÷Ü·“¾ÿa1ŠïB+cÇgåÒAæžxä~ÀúÔ‹¯á®i·µeåLu‚œœ\Ì~ñŸ˜8$ˆÎ>ãò©Š}�‹í‚®ž!¢éð“�J˜ñÐeÇG&íäìLÙË‚l<÷⧸÷©”cÁ)Jtøñ‡øôãOµw½ârXèH:º_qûÍÜK°¹°0�ãŠPdçÇ ²šÊ YK°Ë%§†Z#ûe†*œxíë×.ƒ�ûRŸèé¡'öÎì 7ÔŸCR|"öíÜŠ¾QÃ.ÉçïüCµiX�QçK½!×v¹í­ �qD9…ð=ºÑéð‘X¬^»Ç�kËZȪº�Ì…}(¬3‘$Õsóh‹óªöwT[[ѱ8˜ÕžUìn×Z—Åñ›ÚG5›Q#Ç´ÙîzíL‚‹•ÜØ/&¡#ÂüVý½ÿxP)§0-%Þ¬Øø$Lƒ”Oµýµ]È…Íú$ëÒ9‰ê9&&Ç—ï«þ–¾^Ú}z�cÔ‹ö€ ã'¢Wp$�ÅLÕ]•yõœÏÐLgf)—”E쨒‡¼û»XŸlO8 '¸ÓÑ©®©ž}ÖjôëåƒXŽ÷ j¨œPT�Þ‘QxôžÉd¨Vã� SÆ>‘Ã!ù0CÅ$ÂÙÓOq²§SPii-êØŸÉäx.ód:º2&«»+�¨Lšp*=i™¹(dÌásTEqá˜5¿¸šòïú¸{ÖtØÒæE‡áƒFÁ/ ˆc¶.Ê5H¤}“uŠÚ!Ÿ½úNh_¸BÒ¡ ¹ 8Öÿˆúnh1/GbF¸)»èBL‘ >•›©l6¡\ØŸ5]>À‘ŠUó¶ Ëª]ÿÕR*ñŽ‘Ê[îß•¤…nÔ½•ÆEÕÜ—<5�Ì•sW÷—ÆP­¸äéXHƒ¤�&¯ÛnÜ“lÌ~}û)ƺ ?-C ½³Î——RºÖF&v ÀN�š³ŒµFŽií9zt�£ʆžÇb+«ö;GÇ¿c<ˆžQJ‡@: Ry‹ˆ”i雯!ª£fÖÕÁ"¨3ÊÝ#ÞE=,‘y¶,í]ak¦ wófX»÷¢´R,¼(‹rÞUŒƒP^}ºö�‘SeLw5Zj+QEvv5c üÁgP˜B@uÏûõB Íd [À’†°-«ç,¶B'¿2¸¼)ãÑÀ=‚léÀ,-f�ö:EbÑ…�Hk C„°àIPIM ôvwLyÚÁꪶyïÐ(‚7w‰�O‘`nÛð7_H=­€ ²Ú’ét­ ë��kÐvUîNNÖ Tè·²¶'°ò=,8í…À�¾0Ôme§ØîªwñËŸ�;c‚ý@«;Öš‰†s²,ÔTUVHë®0DHaû‹&XCCBÚJïL#½¯Og$'&�Ų 4à†\–$±=eR“¬}(é%éZVõX™ï?tKÌÅìÇ_@w¿Pè.æ}Ǭ‰~;²=ï¨}ÈoZ¶$0v–PgzûJZ¹j…¼È í·¤Ð&LúÕCÅñ¥€Ì—VÞÇ»wÐHäF†6Ùôæ&—Æ´3:ÏzYd+Å@ô[R) lƒX'ý’0$J*¢ò�ÿ‚éëééNIæÞøöÛ¹Œ!À˜¢ xä±G�}h'Z,½éÍâ…`ÊY›ëPÍ…†H ÆÚ¶Duy%c'ö¡³Ì`Æœ4GIv.Ù ±h –©%™ŒgË�H6ƒ‡—ºöH q+hå ðY_›×®�o÷J;PþÞŸÒ�ý鹜ŠG ¹)  z`ìÔ;);¿c&ߎL:z£¬®’Ï9 E4Št úƒƒgÄ‘mùï߯ƒ�?Ûö(NffSj׊Æ}ìß±�ua¤è´½ð^ÊŽ](µkbf3‚tÁoo;Vþõæ›(«iÆ�“'0nëv¬Ü±ÇSÓ°|Å*¸�1Üw�²Rr2nŸr;埌±nÉw¾è­]–‡t�>”ó �§½æ~C™ß¢øØ1.àycO!½´ûc“i¤ÔŘþ°75¤!! åͺ”M-F™È w1!¸ˆ²¬4,ûâm �öÒ3(!om�ùó–)’b"+&é,“� â ®C‰L ¶ÿÀA²HÆi,f<¶47þ}û'eÃeÿÜÜ<€UVWVUò?AOOù©¤Ò’2ʈ�§çxÔœ)`Ü }#Ȥ|é•Rk})šOo�®¥&œÀ•öpU¦Ï¾üœ,ˆ˜6–´º¿Áy™ÜG‰±J»ùCŸ}ã ÷Gݯ½y1Ÿ×©Ì<ôîÓ›ïc'€šzÂËËFFôôÒJ‡ŒU˜¬ ôà�1š�JS²+/2z³S£g·N(#ËÕЊq¥M­°iír†X` W;OÆñÜNÖgBƒ»Ò ­tZk)gM%”na4ØÄàà�]p§üi¯žad=w‚;EZ³‹Š¡Ë÷Çòâk·ÝÅ\˜$ŸäP*[°©mˆGLéŸ[‡GÖK˜�Ë3ØQzçp�.,¢,j œŒk1ˆ’·]ÝÏ6� ©œ<¼Ðƒ,ï2‚b9%g‘Y\OwoÆ54aL_2á‡Òé£Å4(9ÙÛÀ›ïÐÝwßEö·¯“άËui@3eå`«cÄ'Ó Ê:¼†Æ¼¤ÌÓloVb ’`¿¦ˆ÷ÚYK^ù,ã Ÿ­®B­çrùuhÿÖ©+¥¤!™Ç^”Þ;�¶pm'¸° öa[iꑌº|—_üþèã�”uªäqU1¬é$¦ ²þ‡ÌòÐîÁ3j4rÎ6!dà0õýH'»U•¥m‘rH¤ÞðO»OÖÞye»Ãàñp ØÞæKÖÕÔ‹rþ®¯~qÉ6õÇ>ÚîÂ|0ûÂûÜš�¤„WàYÀh qî£7rtòsª²¼}­öæW¢úŒÃj@»•5}QÉv5öh nˆl:ŸÙY3 ”%B*R-£¦¢û÷A+ûÌ–æ�˜˜ŒÞÝ{ðxt £WkS5†��Dàjäž.¡óO&lÌõÙ÷Ë@]cšy>öaŽÒÆáß5TÿY³æ'N:�rŽÅ)u|ÿ£Ïª—¤<UžYVÊûÒ�Ÿ­Ü[�¦óûÊÏÖRÕñ%å·ërÿ¼t1Z�÷=*~¡‚ÍÝãÄý3ÆckÔýëEˆ$ôJÚæ,ü»vï¡RÉ>œX¹]j`Ͷ`wR<†ç`bm ŽÐÑ3ÐPS¹÷òÌ”çËûé2ã~ìÉ©Âêýi(=žŒ“¼?Yi'ðŸoVÑÉ¥¹—Ã95θèã7• F’Ýj9e¶0¢½·;þõÆÇ°¡“ncs5¥ôwcH¤fœª9›æ¿›¯ î$/#=eºR¾â°!“®h1�=B� �€ÊEFÃ•Ž•õ¡QWÛü§ÚæNF�šôx½ùŒ·Àº»œVýBƱ�#�˧ügü»_|„þcÆ¡¨$�Fcœ)«D| Œ ´5. ž@Ç$$2΢#v¯ZH€è0t­Ü)¯—‰{oŽÄÔ?yÁ£à`mÊx�”×"KVªôÌÆ­$ËÓ”ràíç›(k CÖ£iâØÓo0¾à 6‚1öΰ½t È`Cд”ì­¦QáHM;†:9’}ïÕ5€2 '¹N7W'LHØ»�Ndm:ZâÝeùk ئq©‡u«W`ß�hÄÅÆàX|¾el±… æcëêïðÆ‹÷bö«ïÃÉBŸR¸G•k8|ì8Ò22 Ã�Ž®Î8¾s)e· ¹ vß&2î(Ù„:èP2Õ‘€ÉŠÕ”™ýy!ºõÆ=Ï}Ä6ωÙeÈ-©A€Æeåd†è"‘ì_O¿žH­ œPYˆÎ,×±®.+ÉA�n RžòtblPkGW,gÌ@‰­+1ÐF�¥>Vc•8p èTY©|Â^ ¥3A‹kî³Ï¿B× (%Vß—ß|‹>d« kd[<Á[cxw D�ÔÄÑäÈž-²‰Œo2Þ¨ôajjNc¾3Ù­ÝPÈú0� °™½·9á»y ‘‘{µÅX½d&Îz˜ª> øèÊúhè�Qî�ÓEù䌑̶=ŒL4;Æñ”8„ŽŠ\”ä®dhT s•_}ó1YªF¿övuûdž±öö4cs¼èÆîJ'�|zz˜ôæ·¬Ïwý ÌÍ­È Û… ãFÀÆXqt6p³£ç/¬]±Læ»wóFiq¶a<ЈN°ç{×XWC™æ4”TÖaÿÁ¬Ë[QNÀ¾†qCÎdât� vìÿð]‚“fðìÚ‹ Z‹ŽÂ²cƒ¶™� Q‚¿û: šå|ÿõp"ƒì�“§`nmÅþ{6P–ù4ëðnÁ=á c­$àªL³Ï÷–Ì7¾‡’$Žô+¯hÀ„™Óg¶ °ÆPòÿ…ןÃÄ1Ww”ÒãxãƒO¿ÅáÄt%¦›·¯[è€Jg�:ö!ŽžÈ%hc�±Ã£¬¸”ã‘ Js'À‚Ufã×M¸ó Ôéu s3�Ÿƒ Û;¥ŒÞ4º–PÙG§™Î§d Æl]FÐÌ•ª )øiý* §Ôsbâ!ìØw„1Þ$6æ¥ «’É…¾�ƒñÑ_ š*^ΜuM,Ö~c§]ªÆSÿÑûf¶e+ Ω“ ¥®D¶i{«l—ºÚˆr‚NÔÅ+þƒñS§ 7Ùíî4æª)ú0AÀ5Ë÷­/ÿ´I”¯.'M¦î»¼¡ìæN�áòt’RÒíÆ²•ëPG§Æ Æn>ž’FùGc:kž»zLIEÖm_B C>«B‚™�©›~1×fÉx¿†ìP;2ž$O�Åîýk‘™›Š.�.À}ü1Û.ÆÝe™%y³ÞTÖâ’ Æ@^„ÅÛ7`Óî%dÎ[‘Mn¯¨øóû’8Î’¾þê ¥_×»÷EçFeÿ9²M06¿t¬Ñ"’ :üdÛP’‡í%Xg¿þ&f�ƒ¹ƒ6nÙB'Šïèp\®<Ë ×¦}ì‘£�vtlÍ�adn¯½é†/—d$(ÀÃÕ€ÖÞ½ûâãŽ?ôì½ÐÑ×ÅkO¯ 8°›êR¶(¢"†“›g[¹„Á*«¤·_‘Qà \ÌF+û:ƒFp|xá>•Q��·�̱`:9hž¯rÐßüŸ6ËKÃxœù7¿â‹—'cÃ\Ìõú–¤ Ò/pLµÁýZRf±¡É<&úFOOÇžËÇñ2¾í¯ØÛÔ|eÿ©©;P9‰@áõ¦Ë²N=ë­«Û§J0‘zQl‰  m QWeŸbWKãsÆ0©©¿â)åÝëôò'WÜ®½A¹~‚fWcÔ‰ã�¬o½ýžr¨ÉE%Ëhl ,—Âúä ºIGǸ¥ªÊxC}3::Û``ˆ/NfW×DŽcñÇ1uÁ9Çn8W[…~~^[© RRBg8 -!ú(q«×ˆŽ;´6œcËU%™ ña�ôìb|Åv×ÛÛ—mu“,w<E§éTeKç–.hha?›Ža=©‚WZrùì_�¤ƒ1˜vÃÏøhlŠûF#—lÑàg¢ò^Kù,²JùG¯WÕŸ=k$…ò,$ áGXÆÿÑ5Ç'º¦È¬,@cY3V.\Ær8£dD?<ÒÑŽTl0«¶,¦ÓŸ²2ñÄWóP{ü ‡Þ¶ƕŠlç)y¬ûÄK¸mý®6ÀR=—”¥ž!ݶS:øÞ[r,× ×®BeÑi¤žÈÁ÷LC%�Ä>.ªÅ¶’ºÇœ¢é~* ÝCE¥,_4ï¾F¥ s;`u°ûåxEìÙrÎfi.¯«ä;[·²þ¶™¿ø®å�Û�€„ê{ªäÿ~q¤n‘wL;&²òÍq½8xH›¡8Ppù-Û~OL@�´±�ß“çÿ޽9w@Yßý÷;¨¾Co×é×uñx_¸xfLŸq]ÇýUvöp÷Àí·O§!É ùùyô íÊà­—ŸÅ¨ñ·ÞôK#·x…6Ú[åðô+WEw¤BÕ–ü¢¡\ÇjÊÌ«sÓ/@ëRaK….�ÙÕ{­C~×¢Ü;õ~HCs9è¬�¹48ªW¿¬o¨­5–c¤3'“Th’¤¢”RÓX²µgrè¤ÕŽOÅŠUk•N@-­~�¡h Á39=Vdí�>øÎœ<™†É<¦UC[vÆÔÙSX•ÌÛù§ïä†e”43€Çg¿„¿M”¦È+*EAF:L`Í é F0NK‚q��J(cgnÌA¥=*(#{^·'È<°¨-§‘·ÎúçàF™-a¹�ÊÊÃxþùÆÛ˜4v”bPµ°° ;/‹-³/¼FÙ¦y� Ûæå霫e· Æ}·ÌŒ^Æã)ßæäp‘¡¨})Œ)—øX“ –]Í8£}�IJ%;¦!dZ À*ɃŒV™Ž“Y‘–x#ÆM`üÕD“5vâUÖ›]Þtzø•s`®‚¬W:Ÿ€«4ÀšNLjô´“¨£ã@zúI{Ü”âàà¾èäÛ%…”~Ñm%q©±F½Žsd— ‹D;åRêOÒ¡Ã1ØMÅ’ÕÛé.„ö¨½Û�Y¦Ñ\€0 2ÚK'Ò³Éz3§dáE‡‡gŸ}ž²ÑŽ”Ö|§RJ=­1®·(m� ú¬ŠK¶o¶RëÁöòwç lŪÅ¡Ý)Owu ·½ã¯g](%ŠÅ{VR{k¥9›šš°DöpUXå÷úõkiD.DoÊLþ�“©©)A&œ{»{ñ=< _“ZJû‡_ptœýáïa…[ïž�ÃdU­_»Õ”šÌ<•EiÞ‘8q<ƒç#0±±QÁžŒ“]UׄðÎæX¿aå…]•�‡bñÁÇŸ0¶ÐQd&Ä¡­kðŸÏ¾†¾koÜ1u,™°‘Œ™x³þq7ö0–ÔŽ�»àJãþß pIi×üB¤ÙC™ý*Ô¤­,=ƒ[ï}OM¿ル±sÇtaÛ3鮇.XåÙíÞ¶?³ìN”'Í«8Ã(5�¨f캴¬|ñ”ž_‡‚äýÈ;‹õ›Gè8eNssÉV¬C åîêêš îVÓaÀœ1ÿ:Áƒ€ˆµ½5å¯�`ÖRƒE‹0~lÆG�N.KíÐ#ŒòÑ”8à<|ð-X³b9ε˜bÄØñ$6ZcÊy8{ŒÜè×''ŽFcÄ�˜h5ÐmÀ92Xë Ðý|4ùEeL€¹²^�¿t?ã~ö£\c¸òZ.'0Õ‡Fã‘£G^òšÎ˜q§" .߀L…”.=xàgt£Wø¨Qc�v,>öT›Ñú–±cÚVÉHdÊT€UÍX@^GöS¯j0³*/ëÀ+ß®ÝñÂ˯\`UÏýkóªª2Å ››WŽÝ{öb`PœJk·=srtBü±ô$´ûf’ÒOЩÀþ"‹·½ó Èúk)éX<þùÏçñØ“¯ãɧaìíPöT›ûÑ»°srg¼Î2*3¸"#…`Yú12íÝ1vÌØó3Ž�…“« ¼=Üpï£Ï@$¾�¨r°ãçõØBæahÈÅvÁ†¬ÝÞ½ÂéÔf…œ´}èEf�¥µ6~óå vA�òß’ÚcE(®ò¯_Ä@Å‘FŒNŠñì²}UfãÁŸ«Ò]=Œ«É`<_]åY’m\î߇@+"ѤC7W[kèÒ£ÞX¿‘#§¢AWÕgË£ùû¿ÇaHP¤‡_7|ñý<ÄÐÁ#9å8Ìô[á̶(¤[7”·˜Ã‚ßoMy>%(ë”ÐFÌóµzÆt6øiÌLŒ)ájŽ}q™ŒóåOY¹|üôÓFÊÊùãù§ž‚®á¥ÏïZÖ¼Ü,Z ¬áO bëæíHŒ‹'s4TQéH…‰™ºõ¦<±+6mÚ€£ Ǹ ‚Ÿ�>‚È$­D%í éó72ÌÂÈ‘CÑ·ÿD Œüì$u=ѳï(ÊD[’íèÐ6É­?‘zBqzÚ¿/–¬ÛŽ]}<2u4Ù†çÇs*Ìè›a#e;›è<²sëf”×+Lt K!Oaû®í`GÑÛ‚)%k{tíH•C4Á·xº‘aliÖŠçÞþ„ «¦Ï¨ýè‹©B#¬ì_/…“­+úö‹ÔÞ|Õå‚Ó hÚ+ìªûUTT =n/zvö@»Y™•ÍÈÏÍC3�ÓøŒdLŸù"{wD™0§³R‘™¸~T"èèÆX�~(å7BF¯¥�¢ ’““ ß.þŒ?›Œ‚Pû�ÅÛo¼Á#Fd´öF':N{+L¬\±vK4Æ�›DgFclÛ³�þ½Û-ë‚%Ë”õ½ƒƒ9^ùsˆc#M¿P=èßo܇8J߇öÇ÷ßÕÆZ��K ëœÎ=5õ�ì¿k/Û ‚B¼üÞ\æé¤Lj>ê|t´Žª¿§Ü7ž äfÆ©£’D·PÔ3`àÔ['«›•y>Ù6ùy%Íf:"#ýî»ÿa„3öú?€Ó¦3OÏKŽÙwðîä!ô KÖ�-¦�W'œLÍÆ¤q“±m™ô ¥?§¦¬Ói³M±tÉjŽm1 b„²Iú‹â�§qîþAaùˆ½"Û‚Ï’mhßûžÂ[;çQº‡´–R¥fOôNÆK0¨ßp5{Ü6yr[[%+8þiÃjÞ×0Ôr|ZÌp6¡Aý °v�îÙ4:ÛDP•#E•ù8{¾fT,Åqš»VÇ9=2êU€µ­ Z %Y ¨­,"°8 �Íšª´ë†t¢îI¹tg‚¶§’vÀ�@ñg_}Í£(¿ìáÙvôÚ K'…°¾C)ßi½Ô¶Ó Z0§óNÙ¶¿f¸íOƒoß>‘xⳕ3ge¦cú0¤:‰·‹ï©Z¬9_}¦ôñ ŠD\ôZL˜ú�ºI™ {\ÖÿoI±%)v,.ÿ‘éóO?D ¿��°__É·ùkïÄõ”]»„Ò¶U]Ïñ7j_¹&‡þVp!´oX;«0¢ڀXí²ÚÛÙý&€Uò`Àñ—#Œ3N\vIŸKزê5hÛnņ–ëï‚s¬Cí *µ‹Ò¶,cra˜ °#ÌJIWzÖòHþú5H·k‚·Keõßêm/Ð��Ž�”{ä‡ï¼Wå²ú;c[ö)¤œjø)—LY–6ÆKºGáV_Ö�T¬Ë¢lº¥Þ9˜9z£†*j®tú:v²Vt0‰è×�ñU©jDWµ¢qJ‘Pƒ}‘WÌPçk¨«×HÛTZiL>–J€¹‰Á®T ¡³6ã“NÁͼ Ç3Ù¿³ÁÉÃ?ÞŠ`>îΨ«9ƒø„8½íMňwÌ@ Ç��ºÐÙŒiÉÒåX²l9¦QÁAî‘^ôžœú‚\ž¡ÅØá©WŒ[;zX €¨ö¥/,@fAÂ?SŽ¥_-ÁÞÿDÉKî‹Ø|[õ›pÆLwOþï‰&ãö,šê )×?‘öVöy3ö#42u–¦˜öìë|ÇLåxy6ò¬ÿ•ž‰íT±d[îxçÃt8ÞFòM,¾{&Û6{øpÌìÏ>.²dü†ÓI®‡£$$ÝCvÓyq<• ÂÑHÛ†¯ŸÜ÷oAÜ�?0tM(Žq »Žý×>Á=ðÝÒ% °‡¿Q@{yn)jMyä�;�$Y/$¢ö•F>ù¾ýMÿ[{ɸ-ý#M½I\�ßÓÍVDPÿûñ_¿ ÈÚ�©ëX¥ä"üWXß|ë-e`(×G©®7_Ÿ�Ñc&(f뺟88õÀÁ蔦ZŽ[o�¢¬¯¥‡Îd¸ö cœ½ŽÊº›õO­õé×@V)ƒÆ8Îz™Ývg[Àê›U¾ëÉW:FRIƒs¥Áõä÷kûj{Ôʾí»*ÈÙvßÚÉT:4ÂûS2#ûâýå~|‹§W½Azë¤SbÐÒÔ€^ãÇi¤ÎÄáñì�ÖÓ›šR–:zxŸ±[–­\H#Œ §C„ZF´•†X@9—z�ÔN’Ú!sa£hÐÔÌÎ¥ÓZuðíüeôêöCq~†ŽCÿ[QÎ<Ë4z’3rQz¶ŽÖ�8’N©àš2'lhx<‰.î”d«G¥"·�Å3~Ú}” 2ǦÍØ�·t:ÏXa#¢zk^åu 9 /þ“Þ4dÀhÊÙÂxf­ÆÒ€ˆ`P·îWXÕ|.Ÿ'°ÃôÎ;¯Ó85æòMŠßÂ`ý3¬rS¢é­—Oo½3¥E8•WDÃ�‹r¯ÜÈj€5�uÚSÝÍzªcÎþW£ó¯¬t�ÇRN)†ÏC¼—sæÌÅÁC‡qÛ”[•õµgk”¹“³›b5 t¤°dÚK™IÑdްC¬´V˜¥äª‘©…"W+Ò|·O™ÜÞá¿{�€«Íôû8@OKoÍ@C;ÓýdºÛÑ® ² ÀÚ£ÇÅA— Ƥ^“N¹ÔIâ#1kš­í¬´;éÚùªËï}ø /_�iSÆã�…©'“Ðã¿d„Ñ'[F�ÔòiÏ\½`ÝGÙiïcã£�?>ó¿C€U’©‰#e#QYS‹c‰ñÈ9S�µM̓°pÞ·ˆM< __oØ8ºSâÝ ¥¥RÈ %ûº£·7ôhÀomiBI^ºÙc_V#ܼ<èçW²»Ã(s]u–í×.Œ÷÷è“÷£6÷c!7ñ¼<]ð �÷v®Ž6| ü¼;ÑëØG)›QéÆÑMà¡#ºÒ€äÀ~•%�Y9)0'›'¥ÄÇÈt[¼à;Ü>}¦r̉¤#tŠ%`œF™ªzü¸~5J ² ìÇE«ÈÐ(PýÕŒ[�Y&¤�i²Þ,Л€í˜áýqçŒÉèAc¿Ͼˆ>™ -´œIBq�f�Œ Oc„Œ»†d¥,puy1\l °xÕvÜ÷èÌ×ei{)wêM0v í|Ô£+L(oºmç^ ñACM9Ž%øK&x|= ×�Œß‚Œ>]:ûáËÏ?…¡^+"{˜K£lV3¼hL6t¸¦*¬õoc¡žäý¨ª,Æ«/Ü‹]Ûw’A|4þºR–õàö5 Ðêêí�††²a/hV]È£Ž×(_=ÆpÔNWX5à구ÚyÞˆe+K{Ž7üqààv<õÄSèBðdïÎ-èÞ “D‡™O>{�_�w>š€°+™¬E댔X°6”|ß½[ÓVù²N5cE/õ³€¡"k÷[’ôÛ¤?®,i4Öî‹ñI<®žy�|TJRS‚µ!æ ±ásocþVʲRâµ±Éö4zzP¯¼Ÿ­ØÅ8ªçàÇÐ �ÍXÿÓ—¨¯¥\ZŸþpâwÒȺÃþl,Œ§×·DvFï@$œ¬F ÛÙo˜êÔ#?#þ]|qšÀ‘­•™ÂÀ”þM*ûÔ'É×Ó·B*·,_±š˜b5ºxà­wÞWb“^î8p-÷eËÆÕdV*nDlÜ2ý#P̺XY�qìV\vŽ4¨KJLN!c4˜cŸ‹àÓ ¡”(¿h=Ã<œk$ÃÓ¼«LwN›¦¶hÙ*lÞ¹'³�ãðχ(;hÏ6G�=ü8�ÓKw.?õ4A¶•( ˆkad‹=[ñ�ò¡³ƒµÂ¦•ŒÄ1Yê 1ʤÇR¤ÁÈ{Ȫžø�§0ù¾—Û˜¬öv.ˆŠy Àª^‡ö|ÙšX´ä+å<¾>ÝÑÉ#�ܺ²Í<…QÃîcœl+ewX% Èz-ës/܆ââ|öy/}/”L´þ}øþ;”ü?Ž@ʾ8Æ~ßOXÕ$ k@ïa”¯wÂÞ}{€UYÓNÅÈa“ñG¬ª¢�<ƒ«9‘«å¶šš$náàácÛXeŸ{Ç{ƒ¢°Ð�'¥ÈoT’åµµg/‘Ù¿Qyÿù¨¶™?â\—ŸÃ•ß»LWK"§+ï„(]Ȥ‚qª éjÇjo“÷K*ab)ñi ‰dÉó·‚­jž×[írýU–—±.MÇËìõ+ ÔCF* •ê¬,Î)*HªŽ·eœmq(QXÅö(cñ˯WÖešY°�PLIÙÄœ£'q|îyùnÊo9ÇÙ «7m5v£JJfc6¿f‚Ê$[H€ÕÞÆ[Y–ç< 8ÃØ™Îä*ø¨†��²ˆÚ¶¾®¾SI^±×#Ó­ªuí jvÚ=›©DуÖfˆCXÐÀÑ”ù5DRzíeÌR:'EE2tn>b©Tqž aÃùsT³+§[:ó2k'†é ÍÑ£“/ê8fñ m±¦”N€ú¶ÈÍÉR‹,86us2%° 2󳑗W [g[8ѩђN’{Å ¢ÿ Ƥ?¯¨ùÀ*I±£Ó&N%KéÛ ¨(ïŸôq\•{nÖw€²Îaáe¦Wåœ.4Žºu*v}ö–ÏùŒrÀçè­ÝŒrª9xPé(Ó'„qvÍ‘—Q�7^ýz“éüϯRiÆ‘¡!ZÑ)/Íìg51Ö¹úlª¨.²%1Y¶.Ð1Ö‡'0«©<âMüáhJ ¼h·³§“obJ"úõ G…„–`ÿ û1»è`ñÒ‡ �@û±5û¦ú–ƨùü}x¤Ä)×Pß$íÅ ÈŸœŒÖ…s`Ëû ¾?ò<Õ6BÛ–­½^¹YZÿþ?|£Z—û›Å>¯>ßö2Ðl»È’¿Ú¾íÿ¿uí;ð»å‚ÿÚ—ìÝ¿÷>pmÛ{²y(G·æ«àÀãOkVã±_ ·ß¦6€õÙgBia¾Y´î¦¬ro5�q Äóæ×>Ní�Y/i@~­’üµ â�|¾ê€Am~ï¹5×~±r»ü^À*^·¿–ž~ÉX€C¹¿êó�‘ÚxÝ—RHYÁzÐHÐÍ¿ÌèamL Å� #zµ‡…ôÃSO=k[Ê4Ræ²w(Y%nÊiÕ2f†DÏg_UÖ©Çê}P¶êoÙ)¨_vîÙ‡][VQÞË£Cì\>ˤ‹•rwæ”ÁŸì»S9™(Î: ;z†!Ç¢0æ0Ñ =cL9elÞ:cîx µ-zô˜“­íC&Z†Ü°ºê#¼Eâã¾PÀU¥°þÉuˆÁî×ÞQíc._vâÀUâYÈü¿™ê)™ÕÌø�úÿÍb(çÎ=uœ†>Mg¸½Â¬ ·ÞKÏ?K¯·Í0¶#ƒ0äRvBÙN4øÜuÏ}íþ·Y×pþ,ëåT|ýõ·”^éM×UN9Ò£vÒÝ� $ÒÐyÛí“ÛVÉÄŒXÕt%€U¶Û¹xµ¬MõµŒ—ØÈ>dÉXÂ�ìªn=Ñ÷êÆõ<¿uÞA‹í¬’_×Δ?Ôb±Ê:a°j·âô!ƒhÙ&« <òr(áxþSf ›ò›%”è°A;íÝ¿›vn Á¹’± �cë®mH?™J‰Øó4†hïú‡, ÀÚP‘ŠÆs%ÖÚgÓkDÖÑ·Ðqä¹Ùô]…WÞyŽC1pÀ†ýûöcå²ùÈ9q =CµûK-÷éÓÍgÏ�AÚG $ëéÒùF�ýc(=r‹°k×aø²ýrvµ‡qk=ÎVžEp2él�0*¬Ù¡ô<&ã« ¨ÛcR·®Å9èêã¡°5êZtéìQŠ2WEZÑÉlì�9OÿÎd{ÁŽí»éòf‚¶¡”/®­.'Ó( 鉛WëÈ;=p:åüÂi¼$À*ià°QØ��ƒ‹Ñ3Ú‚^¾Ý¨Ô q±§¤ ¿ÏD²mãiÏ ¬WAS:4'ðÚ/¤§¢*aJ¦F¿^�)óIBŒýÜyçí(>¾&d�š°°·³Qbyú¸¢N·#*ò’1íÑ×Ðkô]”f d¿Ð¥Œu[@髌ìR2mâ±ù§¥ðta7Ad£.[ø=~f6œí :7;wGÃÊX�JÆèÛÛŽ-0"€Vy®Çc»£ô«K@-E„¢Ùæ-dzÚ�~ãï¸âûeac¶=™÷Ć±ÑŽbܤ»‘GÉæ~½ü0ÑÌzðY‘!dŸAyy9lmm/É«©®„1/Í~²jïTœ3 (•¦ÍjÒÞçf/§Ü­œÂ”lÎBÆçíÔ9€L[gdðùÚ󙨳^½<Éö—¹$ÆöÖX¯þб {_~Øuÿ¶·¿Ø.‹4¶?WeêÖ ”ô•´kÛj‚Œ+ʶ!˜€ëùú³x÷íq笧ùrí“îØ¶Ñ;×b줻óµ §øþ$îÚˆUkWÒ•Šªê:Æ4öeüLo¥_~ÜíØÈ¾ý_(¯Ý¾z�vþW[VÇ*H"†1>et : .#oA~äô›x+¤i8YoCJÍš7•`?¿xñ C¾GWö#�h‰­@¥fMé�TUP€ì¬c(>¹¦tæë`¦+R2³±`å6ª Ø"…òµeŒƒ™–]Âx™ç”:¤ˆÎceÕØ“€ [·¢7Yà )y¸óŽ[Êv&“ìÏ èìëCÖz6^¦óŸ0´¯7tïIvºö¬@ ã3è4(Žá‘Qpöð¦¤:�_« ÿ4òN�¢“ˆ/ä ˜8m:�fcõº�×)uêåÏkã7EvFgÿ^‚Ì”¢”œÎFÈ€ 4ž¹‘%»‹íŠZêÎ2´ÈŘ¡›6nÀîŸwbË–ÍøŠìæÒ“¨ ÌðÌé“© ‘Ã{RK‰æ®È?u '²*i\,@!Ù ¶”^³‘ÒÅú-|·šPL`¶ƒ� FŒˆ€›%° Òëйæ,e-,l°‘mßÈŒÿľÊ/l·Ø²;ž,ÿlLž4?üŒRþÏ>Û¶3ì„y Õœ¢”uò¯‚`©k½]/�騶ÃjrsüàEÙÒpôë£Ô­Îì£vB_²éëš×™ÉÇ'o2§ÅúùW^¦ÓV7<õÀt‚ùþ$Iqx“8ßÝ/ïŸSgÿî ¦×X2Nœ½ƒÚJ‘˜”HÇ×h* èâ¡ûSÖïÉø�”Dõ’¬ç†à–Ø=€õø¥ßÔ£?y À*ûù‘ {9À*ëµÓ·‹–!.)�Ý7‹RŠ·�Mx±L²_Ä-çûÓ—Ž?°:ùx2Þ/Y»tÀpe'SÏÀ>=ìílƒ§_x“'jœÂ³R˨’”ÍþV�Y'NÎd‚†ÐiðfÜ>�dì®äqèð>*{0÷®hå·Ôïýxí‡éèúñ±�:p=eèíœÚŽ€.�½Ï¿þ,–Ì[ѰF:ˆWÖ¬ÂàæúKÊ%?z{Ë›1ëù±íZVD„†ãþ»¥£ÛÅï¹€òêo͙͘ßÕŒy­éS ¸*Óµ¤èƒ›Ð•1—;z² aìÕ+¥Eßü‡cˆHÌ|ìIìKÈÆ¾ƒ»1í¶íJg½³�0û¥ûøýÒIo��9i^Û=ð:WJ] ã2©cl±—ð%éܤ;QDG�Qã•ßíí¯l¸ì_ôÁ}X±|ÂûF^¶”C® €�„Ntv0"h^|:ß|ÿ!Ã8)ñqÀu¬È¢CÈ©ì x³Ýü_ºö;p5€U% jîèX%jljÎÒžkÚöe• îiìOê^—ÎöÁ9Êñ’T›—n²^Û&uéÑíÿÒÎS@Ú ÷Îì×Ô(ŽýÚGÜ}÷DÒɪϯ„¶Ñ>æJË_Î�£8 ]iû�Zÿíü�ðÝ÷3ëd%˘Ç±fõ*L˜4 t®s2Z™d£Ü‘j•û* Ÿ°Ŷ(6[ «PãD§ÞïöÊ˾y…aèÕZŦî‚Cn™²›úl÷Õ“h‘µç¨ÚdTÑ ¼ uëÖãtéqtö�ø£žÊþÂ`Uë •qwùùäy†EZ {VÊ´ÏÌΪ¹çh%†jUe=¬õêéL[ ':)Ûv¢²Ÿ™Ò“Ó'õ R�çs|eŠ�ðPìÚ³Ÿ¡,º¢”Ã0²ñÄ?ˆ¤r:fÝ;ƒª<6H"€¹ÿçí8š˜�&Ž9i×2¡êž�™!¥q©6DÇ·¸”\¸Ä5µ4ÁY*+Ño�*Jq¸�NDæ£ÖÒ)°|ÎÊeÈuÊ{Z——¥¼ÇÚ b©Oåše�$ù*ž¼''ÄÑöü×¹§­JtJ�À±C층4U¹…»“q;—ÊK;«Åy×™òÆtf%‘åŸb�û\Ön(g_ý��æ`<%ãuõt±*#At }çýϨúÐao!ï‘!ü=)?¿r¾þæ <€í® �ÒB:2Ùâž;§c`Tœh7žÿìctÞÌAçÓÐÁH ¾_€zÆ™· Z’¼G]&NFÄ8�c_πC ÚŸWv’ýاWí´rO4*8ý¯Yv[Íçs÷B¶\‹ƒ“¼W2©ßÜ}ÿäû–zAê—ÿVþèkþ³œOÿÏR�YŽÔ”døu ¸¦,ûGöÇK³_Â-£F¡{�†±·´µ�^Šáøú‡pL¿WS‰©™UUŸÃ‘œCØôÓŒºeªºú¦Î¯ÇS½mß§¯­Hâá#ÆôΫ~¾¶nÒ^Ú)Ó�Š×Úv?®£ÜÂðõZYfæfÆ[ �MôÀòõìÄAÙ$¬Y·Œ†‘‘xàÁ‹2;qŒ·¤ÛªÛÆd•b5Nž…¤ï¿Á(.KçK8 à¡�ä·TÔ{÷îU¼´Ê(iáß�Ò‚AXu´ uz¸k¸Â{ú! r2¾ýq!eÊràU–…¯Ž°6´ÀîM”‰¨ÖEЄ‡±”†i3×Vô‹º�F«e*"{BR2åËhÔQÓŠí;> JýyÓæA¾Á›v‚kÈ8þÈ!%^pŸ°kØûæí"ë¢oßÄ‹o/¦\y>�|ù°#Xþåï£WÁ¯šbüãîixä2­:X¢œL˜ËSP¯ÈôwO†”Ò³qðVŒ#×z­6”Ö�@É5ÅØŸ.=è�ðë œzÌÕæM4¨ßl©°«�ÿjÛ*ËË”ØJRßH]WÂöo›· ž5rj;LV©?�~¨Ïø}€„GaÃ×#›ÀV÷w/e·òÙGŒ—]cs>”˜^¡Œáöz[^ÿ�…s¥I8Wš ÷c”^©Âö¨.­Q6?p÷ãm†Du�çaÞÇï!8<Á¬/µS4ÙÏáa~¶;ïï¿ùñ)™ðt¶ÄC4¤7}ô 3-Š÷©xý8ÎAÛ¹óMxùΩTíø7 þMÈIO…ó?ô[)�Ú‰* …ˆpF A$×NnTFH¥1#ííPÞÐJãI5Œr3‘�œ€u?ýDS‚%íQÏùT{cJñ L@�À‹Fç³ µÈÍ©‹í ‚¥'K’Εôwü³´q€±G˜”/ÝÔØ+Vþc{w¤&ÅCÕÐùi °°uÀ¨ S±…ÌÉ©sgI{±±¥dí±ãxö¹ç¥ßyÌíºù×OÔàŠCßRß~aÒ²¹ÓîÆ„±ý JÇ¡¯©Î\,͹h7oÙLyk¦òPmÀÙ¨�0²´@MB:~^·=D¹`t_l8t¾d·Û»é ŽýY— ÙÕýœhª�šªŒ[0™ìÖ|ñÝJìjhÀÏ_~Lf!Âf ž’ÓΜé…p.-¦ Ÿ±´ÿ”¸p˜ñ½7µvBpP UhܤA,üàÃù8}ŒLc¼ÿî2©¼üO€«Ï?û¬_vbp©Ÿ<»Ûñ�_|È€P;x9á½O‚•±Œ>Æì—cÿ¶Ÿà;LëœÓá{àÌã  "@nŽ)<}ý™^a8BãÉ45†®™,ÄSC9÷Ñ �mÄH…ƒQü>y¡<Ï>1 ‹ÿK_zÓ'N#‹¶®}Y\b<ú0àçžI pª}Ámœè×»'&MŸ‡çÎìr«Y'u¯¼pÓª5È*~'g$`ÇáÕxúþË‹ÛÇÁAl×?þXûï§_"M ³£¼¿…�¢.ŸLe‘Ík·b™6ʶ•RŠÊC€uùŠï)e߆†6#Œ?‘”2@ðW؆_7Iã‹ÉñT_èÅ~êø¶6Jó”ÿ‰~³ÿÒ—0öY`Ï�µ¸˜\„%�<¡\¤}:Š@­°�T¯¸‘Ù1¨ê•Gÿs£bÒráTv¤,É Î9~œª¾xý™×©à¯xî¥×ù÷¯§žÃGŸ|‚”Ô©T,ß«GÿõŽïÙŠÓgãÐÇŒkh·Ù³ÏÜœY‹ÚçÝ® q­eŸ„ðˆó“ýb5ü];õ>²Ù“áäâÁ²¯£1:¢òC‹!Fs>×aý©C²Ó|zöEë2úWs‚Y×óé;dñ{aä¸IXý+Hx@IDATÓ[d…éPmÃ6æbó°ºò,M›|ŸôûVÿ}úÅ'(.K#Ó½–òüúóŒ:æV7ó?W^Ù/ÖùäÅ7ÚfékÒ{¨L€XuQ‘‘(/—‘ý|¢'±úä�)ù žä>Ÿ¼X0ÿäiå±<_öI)/ënZ<³W޳Ã6³ró(#Û1 añbE€OwÛºÙù§X‰á¯°ï{±g�·ï*ˆAa¿¬úMúíÅö²)]iV†ŽŒ òÐòÛréúˆ{&îƒlòoå{,–�*Ì”ŠQÝB˜´œ÷S¼÷Ç#ȧdZÖÅ Ü�Yr�`³;Ñ(y·ÂÇ*÷ÿ¥ tóÏcÜ:o4ì‘Ç!ÒŸÙz1 ˆi*S°†iZ¦Ž¿€ÑèÝŸmBöÕÖþ¶ ïÿ+Lí|p!& ˆt�A½� ªò¡�aû¶ý¬‹½±�íD7�T’�ƒ¦¡=j+бhÉ«ÿ«§êR+ÆÜ5�ìyg\LM£Ì>÷€±¨,¯a`•: Uê¡Æ€63}ö9ؤêŠc-ý-Ì÷ʾץ9³¥ú±Wý¸¢ÞìÎäk+ü•Pqb´ >á}ðxTñÝJ>²S¬j$üäâþ=3!cûáÇW~”6¹æÄ~ø ›[#-˜Úº¡ ‡ßÈÚ¼[PìšØî¶äq…/8"ü FŽKiþõ ªœŽÊ/˜=gâN¡”J ¾^A^¿GLÌ|÷é[x}åDÅœeŽoiÛu¾0ñ¾‹÷QÜ_åsç"Þwé½2óde•ËËóïŒoî (ÿî×Q<ÒñvzFnîLï”ú#W@mí�làï¸î3�.Ä+/¿ÈNwó|\u”uu¬B&x�V+k›öÅ`•M,—måk„ìA«º&V¯[ +Ø9{É‹ÿß�ÅÇB–úù½Ò·ã¤¥F‡”ëA±5ѨÑ6¶)ˆƒá¹ñwÕz%¢L!w+¢|{µ+“+tBË–ÁñF²Sìl,ÑFù=•& œ§ÃYD¦{xõb^‚AtV†Sê./¾ô;‚^"çVÈ�áÒæŽ¾ÏežbÛÇ "Üj=ý�â}WWLš4…9ã¬ÐÜ´0LbêŒÙèééŒmÛ62ÊÉϼñ)Æ�Gé�Få§cÔ‘m(w¬öo„õˆ1He4~½šÔTZÚ¿ü�—öýÞëË0š¹Ã„-|æI~è}(•f!ýIêÿW,êð²¹ì%y·¿úœ y¿j˜ÛS0ƃ5tøTéªXTsèÕ»�”3iÓú-˜8:„ì 7T^º(�¬‰'�Ò�TÅ\bõa_³¿�žžûÞ”ÓRÔX/;0’ò÷Z]ÝeJmvt”ÿÞm©òXÔµôïêêz`=s2Šr¤žŠŽë²ËîîRcÜŠÀƒl"ÂVÔÃBjJDJJQ�±|âbX¤U*/ʊȸRæb‰‰‰F?oÖƒ RPÇ{Ÿ|HY+; ¢íXÔ1dçdw+·½}åwØÁ!xøxæK \¦•|¿{¬kÑ FΊzõV7"¤‚“SÒ)…éDiuGʼVQ~¶[W® <‘-b©Ð�l Ù„0ßÕ€þûDž÷w_*ȇ«¥ÎÓùžFö£/™ÏZ@o7Ê7]¦3ÖŸ’Žetœ÷ãûk‰ð¨“ÌŸSkg ‚ôÔD̘8 –úêHMˆDJN%¥ßÊ@DsUvãÈ*JG�±÷Í'ðØ¢ƒ1ûRzn1ìé$7×n†‹¥6¬^ ÿà¡”Ò„”;S׈Q¼EH‹?‡…ìÜ–•Wrƒ(]l€ Ö‹£ÏÒaš�|JÍMž0©ýòN™23 Œ†؃Œ¤(ت“ÙgDö¢&>¬kè¬.ÄúÃg1>̾ŽV¨¥,å仯ã\|¶EœÁo‡)35Ê ß,ß�ÖÆ:8Ûâõ7ß„î23Ò% q=]-ŠA°0ÑG ¿iYù8KYd•Ê‚%jìù6CGµŽZ<�:æ*²A`P_‚gÚ0!£¼†�é”Ì|<ôÌÌ�ž[}˜z"«Þ¶NîÐÒ5ÄÚuk8¬ÅÌ™³ÚÏWy¢$;Uy™ð Áù“‘°baÚü…Ìá™(åŽÖh*%ÞÀoD!êRêR®¼+k¸\ ´ �µœßÊ¢›ØºK ÖÙ³fwµÊšWN ?5¶î~×ÝŽ`°ŠAK[·ý»Ö§_ î[¸”là6”2⿺’íòë·ó¥�¨T·÷!¨Â÷¶ù"SóàKÜÍØsÏ?#±þ­º`Îvµ~óúúúQf›ù£<=ÑÈë«E¹ÉógŽâ›×ç `Äœ%»­UÍC†�AVÚy=›IGS b·Ž�l¯ñµ`~õ¾u׿ï-c[ÒšÚ:í»³¤ ÁäIs ¤†ÿ¨‰6¸`VÈ&ê{¦C š~ß÷d¸º{Š$زqŒXY¸õÀ Šrèi�ig‚ù(•\WSŽˆCádA50×T¥Ž“Î'`/¿æFèéÊú¾€Id�^@I5�Ígv(%ïÎÅ'18$� iCè°ì0t˜™˜�UoD&†ì(K}þÌYøôí×aŸ"¯»!åqí(=`ÔiYyn ô4 $Ò©ö͘2z6�vUTÕ©�±aÁüiÆ”~mFZ‰ ƒ'4Q§Å\®Ú�dÏk“qš=Ö1\ß(4ÉœÕÖÖf}KI÷‚øQ%`ì¸aÒý³µµó0´ŠNÌË1inû±¥ÆEHùg“™?÷<¥¶3Ó."88˜Á+쯼ñªÛh#%®Ï,}Ÿû™4La^Sa[v줌û)²,¯ thßÁ•‰Š²RÊüö@6¸C†Á›ìLï~!”aßOæ†&.f×bõ†�Xtÿ½h)ËC“º%m÷’á¡è“ôêÏõݨ>`H6q¸wÞE—¿{¸ùaÓÖ�˜?{&ß=•Á¤ÚË�6ü–Óš´¯ÜÍÄÇ_ÿ,½+¶ÖR‰ôt%�;ˆLžëÙ»Ÿ¼ÏGV…í%E»âøÉã8Ïo­-}.½º\ÕáJÐÅiJ¿öÖRL?�²�•”�ÎjYŸ}ê_l—t¬ÍÍx Í:¶± È ×ü<²¨™sùù§–a8ÁmÙ„,±°ç_zPY.&À™A=² ‡¾èK+;O0¨å«ï?g D=Þûè#Ìž1C..�×mX'�Þ È*V°a?[ �íóÆ?ÿï—1… aÔq¦í`Þ×c¯-�ÕÙèOÐÂ�¤ ¶)œ @^ÏÎÙDµCø1—j`Ð@¶Yžn/.îáeæð‘{±vÛ^Iµfòèá”Z6¼ !íÁ¶r eÿ “3ô ˆë«`£´"‰þ³°áh26A•¥C¬phïvÄïÛŽu5mCW”ÕUâhR åÐC‰í„SQLóЃ}F=úÇœ°sÇV¶—ÌÙî:B5 TìŒZGŸÅ$¼ýÁw’¯!˜í÷ûÁ ŽáR›Ðœu‰’µ±Ÿ L<»ÝÙo냛{ e öð¡˜{üê;ØÝ:ÿëóÅ7¹æøQ©ï%|bŠt-ó%Æ£H}%.wáÓJŒRåkÕB¦¡Â‡6_bHŠgEø�D_®tÝ ‰Ý&€ÁJT(³)‚û…¤¬2;UbgßH1üQ³c_mÒ]wÿÑÍÜôú67á{‘ï�¼ÑZ¾‹úTéѨ(“î�`UÊ Ÿ(#³]ÅX¶ú&Ø¡o†à:2=+ëQY\ƒÌ,ðVL<¦ÔUiËå“ÑØÀRºO ¹™Tª«M´ùij`Ú`4s¾¶¸¯¢ß¯¼/qß×-ÿIIçáp>¦Íu¨rvGlAUrjrRJ�AÈyÅ%¨¨h¥/€)Ul¬(\)±L5Z}šÄÔ#— v |°?ÒÒ¢ OWoT‘,P\RÁ »”\*g ˆföÿMsò"fSÉ#tØhå9£¾©ŽªbX¿i'ûK©˜ÿÉdØ·2@/–*$Zê¥L»° ¥•XVØ—Ú28°M¨üM’¯� &«¨W…‰w&“×CþŽÉ>è#Ç#±]US?^.¬¢ì Q3¡Í>ŸyØd¬Ø°ßüð)¿ñ òW|/ qëêi!½¡'3 ñÀ‚GàééÁ6Þ7T±£zÓf6§5ñòËO¢Ó ¸Ò6°¡jE_¶‹2331eòÝTü°�­)Ûü¨™Þƒé9„ôƒ3ƒŸÄ±‹÷]Ì©ÚßñKaÒ;wå{ÑÝ5�ËÞßÚPÔ�­R=ØùºßÚ–þšÒâ=ïü�ç௹Þò^þ‘ 뤳$€5¸Sô¿|Ò7;Ž9}�?x/%uvѹ—Sv6X£µ1×H:¨OÙJù+ǹ7»¿¿ºœøÀ´7œér;* Uöáë•Æ3´èot^b¿Ê�9Q ÜŽc¹Ñ~Å~ä GŒÅGUÞ¯<îjâC¬l¶j@F�¾˜6i^{m{+æê‡eoþ[XEYG‚?½|{+¯Öaúßo.CDøœ¦4ççùÕ¸kó! ŠUëW¡09GÈ®ìM†¬~WŒƼLûØà0£ä–¢·ý†S )¸\N@f2ž¡Äõ”ÉÓQ\\Ž„ª&8•æÀ}ËO%ôô‚1_l*™? ”†ìƒA#ΑȣG°ö矑Í�û °0Ìš4µ`íp ÿ…+–¿�³±QddúKöÞ“Ž‘?ë¿a`-" `më*íþì©}RgÊÖΙ9ã±uû:Í2èT¶"ãj,ì\‘ìHÙGm2z¶;¢ÿÇ®¼O°:¸y+Ϻ­ÓçΜA¥°Í¦È ëÝÁíb°ÞÌq¼½lBùžý¶yó¼úòK”Až)ínåOßàà¾�”Ç�!Õy™†Ó1ÔÆß~Ý~8¢ãõke¹öË?EƒŽ/δªÁ•ÎTÙDçM ²ü åé)sS€¥”X[úÔR‚©Ntì,²2eÔj_¬^»š�I«™¯uŽ´‰Ä¤s°TR�)hanE±5^Yú eÿzß U>Þß3^ñËJ �€JÆA.QÊ‹dÅ` aÆÄ1£%gj$ëqG‚G;NdgGìݹ…À_óx–�¥`‡vd+óÎJ�zzú!??U쬞ML¢Ì“`÷Z:ê°¥Ä׎Ý{¡ÒXÊ`[„�Ù;œÎM}øl&cՔѶþ�¡d£z³C¼ ” ƒµ»Ž üt14U«Øµ„‹�6TÔtq`×V "Ð$ìHÄ ìØ³ XTè»Û¶e6lÙFð2j.˜5 ïRr©+.>s�ND¿>=ÑDéÝšº&¸ºº’š+-æ¥D®1A"}3æ"2ÁAväý½l¡Nl"Y¦ŽÎμϰ¶3Ã…Øó°²0ÃN>þý�GÆi^Q Üt P^æÿK‚о%™}YÈ(*ƒ*Þ†úZÌoDIåâJ„GFap�\œàÛ«'N$åCÏÄ'/”1/\>÷EIG_ 5‘Ž&ö£ `dÓŽoÇe²ˆ›È(=æ®nVq *)y.'o?F{— … WVv†Ž› �¬q‰1÷¡g1º_äžcî?¿®ÀZ”pݶâ=hšXãbA1%@¯u|uuÍï<²èn°vµíÖÖZJÂ:I‹^~ñILš:~º•­˜×6�ßHÑS6áüíº'x˜3Ø×ãú¯òºŸ½ù"žzîUåYÒtÖ‰½hbpŽ%µ•íå8­ (YÛÚó^ç°ßÐB¹V3Î>e È—Xß 5v7˜£°µM3ÑF‡ùÐÉ1�nÌ ÊËfHfQYy…ôsÅ�_INq῞�gk¡TÇ^¯¬¸.ŠEéVu²¢fÝ»ý‡Ž€›_|ïÏ !ïž8‰ 0ÔÕ†Ϲži Ñ(o6@P`0ʘGÌÉÕ‹’Àõ”0µ# HY³ŠæjÕ¥Ô}od•“¡ †ìÂ"?ómY™Kî{C 2ì˜7²‚ï†HÑ’œJß!¾Ï>½ñѧHuD~élãš�Í×ÈzŽÇce©¨»å3ö �,>DÀ£!ƒ G�%¹eó6è›C£®ˆ÷¹–¹f[)Ïlƒj,¸¸¹Â¿¯?û<‡¢BJW+¶'€ÖΫ؇µ s»–”¤MD ï·-SÓˆ:Kƒõ¦=�Ùû|ODGGã`TóªPÌú&=9 5èås]l`Ù¹ÓÆÂÅÞ™ªÚÐ1µ£<¹5jëTÑÆ´ z”;¶35€©³'ö†'bôØ`?%ò7J©4–Ÿ=sšÏ¤ ßæ8së-I8ÏŸ4~þÁ¨kj˜»Ga‚«z†ÝMÐVc‡NFƒ‘�xÒ¾-Í­xbéc”�?…÷ÿó�Ê×"¨+¨Ÿ¿ ›1múL:ƒ©À|pö0#+ÅÚ¥'†N•ˆ0¸3ç² Yî2À*ß#55µkd¶åe]�pmÊw3ƒýw(‰vÉŸmѧã¤üq2Èêè`ß°~@f¤0!ÜÙB¨Ž‘Ã@Ç+`fØ]Ã(ƒŸ„^S¬Ó¹¼òïü‚\©Ÿ@€O�u«ÌbU.£<u� Óxxy^oKJó”ä�“gÁÞÖA”ב§'Þ5Gh€¢,G¨_ÂäbÒ¸7¢N¬cj�:ÔÖR ƒA!ƒâ$}+yùy”:ž~S,ÖíâG%Żԟ8k7¬‡ù¯àÖ5¾÷N…þ�h”1§�.Ûmææ–Ö>}:ãÆMÅ¢EHómœ½¥íèSqã‹~’†ÉãÇâXt8~[ý�}(V3Ðdáü{ð¤’BUqÉ%è’‘öð#‹(×<¨Û`Â;¿Î�èB¯<QQÇaEWºp¨Kín¹0)~7^øe-ܧÞ�ÃÕèIØÐÉGìB¶‘Œr î3ウ6²¡MÖ—¹™ ƒ¤ my÷!êèHN8Ê Þi¸L)x¿>}q÷Ýã`ɼ�Ƭ'{Rþ¼'eð•mÆ‚ÙRJ$»+màî@Öž½¬ñÚ‹ob S?èRqɉ9ãïX÷W@´S'¾ÉB:VøÆ„oJ ²oLñ½~([À�TŽ`¨ À  NÎÇ*Ö¦ðw1 fð` P“ý_â]–ÓĈõÅöeÓbe•å2rY1~Ų�ß’[ñ¼*ÀE åí(¯óOŸþòëÏY¯¨`ûÖÍR=­uì tÊØS�8Œú][ÚFâ]}p@S=ÅŠ�õ0kiäÀ´RæéTUUÁd¾Y¶¶Jóär°´2ƒYl¯†©…D`9JJ´ks€»Íų"žUJζ±�šE?KpqVe}r\à –^ÚWæW~¢å mafÀvƒ*Øÿ°¢¿ª¤¬jl�L£rÂùÓ'ÙÏÉÄw[ñ‹äkªƒ40×?`Ûº-L㢎h…VÕU1¨ÍÍêº(Íτӟj«"+§�ßH[„†ôg_ª—)_˲j¦î¤i×3�5—™Ëµ„ËjÊ.ÂÞµ†Œ�FU&QÑmSx4 ÄúȬ鼮ËäKqÍX¤b“M¾Æò3+|ÙYÓGT¦ådi—²Î2˜&ÝqoÄ`‘–V™xŸöiç~èëí�­»£Ð@PÕßOцbD[6ïf*9U„†ÀÍμ¹ó®ì®™*!ÿ�ºz‹¸,ƒ<^LUŠ�TLyê‰ÇM*µ¨Ë‹ÚÇâ9Q¼[­RpSwïcû w&nûõáí¸îçϲ?b}Û�OÞ 8F¹î–ç-ÿùk*"Ê?ïŒÿ¤+ð�Y(#·èî1˜ùð#7>�ÝDž©vD~é׃ ²û-…oŸ4×UÀÁR—ÑÃc»¬ ÿ¤{uÛ7«üâÝŽŠB4Ed”ø`‹ˆµ›Ý¦´#ß$m|6ðDeðw3qŒ¢ñ¨ù$ŽQ4’œ'NÁ‚÷?’r·‰yÖŒâíØÚµk±å—_°'6Íñ·­_‹ò¼LÔ“Á¾sôÛÊ1Ð? '6¯ÅÊý‡%¶I#ÙÎF:H=´i�¨(-¢ìšFÑ9Ô«Wo´©¨¡�Î^�Íߣm΃8éÙcFŽÀþ=;¡^™ÇIÖäæËˇZK54­u`?ʘ“ôÛ>¦3I^”§û»™`(�?Ytæ—–0ئ�µ~ðdN;m5Øøi£Snõš50Ö¬¤yŽF&2§øÌ c u5ÊM2k=s¸æŒ‹‹¿HñßF”�›Ÿ—Ï\¥ñtÄ%Û´½]-XäG§]#Š¹Î™3ÍëŽz~§´™CpΣˤ|È*ÚF8¶g-NDE1Ðè0óü`$ëBäØk®©‚AˆÚò4Ô´j0‡— ÂFŽípYß~ûmŒ1œ�û™ð"#[åR<Än¼G{™S—�xc ö&�ïdÏü�)é?,…¤§Y[š‘F6éý3ɨ)À„@{Øi¢¢¬‰RÄvˆÚ¶‚NAk˜X®fUm-øy{`7�Ü$2�“ @ŸKHE•È#HÉbCæxEýe„Ù’ñ§Ãï°/¶ì�@vz6Â(yG†ÛH?+TÕ«ÂV§ —Û kïc+Gh1¿�°ì“;p”ìa¡Vaëp}‡¤±…µ°ž¡ZÅ!Ê”ö6JÊ{+XŽÂìÈ`êË÷°gÿPX» Ö¦ s¡¥“©TJ ÎL*#ÿ³â9:3çŸ °Êûû=ãÖ¶:¨ª-§M¥3È¢‹ŽifZ*^xñy|÷Í·XpÿýR á`õÚ† éø×²JÄ †ÜÍÇùèÃ6aÚ5E{P t`ò¨aÚ}¶Ÿl°&„7ç=¼xþ.p°²rcžN]²rµàPÉüª=yݹ,Žy’]©~’@G¸.š››È¢O"À¾}útš§’�œ•œD‡x=†ŽT¨�´èbbéã÷2gdï­ûöí•Ö®ÿé ©={•1³ìš­Ö^¾LGR3Dÿ)9)î”…çõw Ieƒºú:Lgà×ÉSgàåj/<ôt6‚wŸ�hS7@c3 clŒ±Ã"—`‹ƒ­>b9¸�Ì`)C†f¦Hʼ„–Š<”4¶±\(fÜ¿„,ù¨�½èãÖ.dP õõĸ¹÷A[µF¨³ÇiÊŽN;ï½óú“y5„`uw«8©�>_J§†C;кyßé\CB†Á”÷lÖü»¥Z¼|ÏuÉ´TÑÖC-�kò”™ð °¬¦r ®A 1Ƽ9óèŒÌÄà!aÒvºûw`ßœ=w–*4t’‰ZÛ¢Ž¶‚“K9߈û�ÆzH‹u°J[=åÄk0vü@ ØÃ›ÌžòâBŒôÁ¯G2xo}`oeŒ˜ó©(ä¾Ï¥¦"3¯ •¥åP!ÃÖ�’Ë|Ì€53²·a¬¦‚Ìü"\ä�~ñŒ& ™dÙ<ü2¸Ä� ÍO˜>mæ-y‡ªñؼ}7VRŠ]Ø€þ1iÎpÞ;g¤¥eã³�¾�¤õúù[.Uáy\¿ß0€�ÏŸ~úy‡ÏúT00±q…5ƒ"Ä LECGÿÑ1töÚR¢xÚ´ÙÀºzÓVé0­(“/,8�’ùWX¬Ò ¥QÐÀÚÈ*ŠÉ«˜^²è <<ÿA¼ûÑ{8}.ú‹Ù]š¨+Àz3Ï{?xਫXï£/_áû`ÇÁ¶[€UyûÊŠNBR²+V›(?yÂ}¸{Âéœxï˜Jg#AÖ\Ñé~;Ìž�b`Ö«­s׬D:µî=Œ ¦Ù�žÉ Ì‹ zÖaw‚)$¬ò‚_6(îçäñã°nÓ/dW¯À>^†V•R¸“�yßœ…øð«×°kï~dfe0È,>ìGÛñ€5d`ˆ¼©ß5ë¬9Óðä’¥ÌS¦ÎÀKŸ~&)ʈºYÈþ ÀuòLŒš7O>ùZˆ«³¾hc{u\ä„κnTË8¬ª ·ž>0µ1gP‘5¯y&ÛUq8'I”gd¦ žuç8¶Û×îü¿mÙHÕ€:2Ëõ,ÃüÍAaT’0ƒ%Ÿ‰ÎfOp58P¤—Püu^.ÿb^M‘[S�mG1ü·M€'ÿ “دÌìþ¤îüc`©h¯(”�¯›`%É$ $‰íÉCg@MÙ';ÛEE`U«´?yûŠm†É?oy,|d—Öý"�¿ Fí‚[ÞÆ?m…SüÙ1àNø”«´ 4‡‹šzùΧXrö<•DêëZéÿô……A Ô[š`GÕ£­«VÀ å2|ìláÕÇc†�@5ƒ^OÆ¥°œÆé�@¶åŠKkÐËà Ulë´6µ %#Ã`ø°è¡„õv2E[Õ0’AXý¨0P§aŽÆš¬Û¸^ñ«Î‚*Û ñ™[}×&°�È`»R*^ðbJmAñÎ PU<óâ}�}¹2˜-�EÀ‚xGЦ Ï"´Y¯Ÿ“il6hR£#`Å`rÙ�×�£¢©];h4–3ϳ�?J57lÚ¼Ï<õÞ}ï}La¾ôM7ÐoÇ~-×½gÎ=ÒêNNLùŒ•«6bÎ쫾yÛ®$Ó¨²îfJˆÙ­Ë®WÝhßw–ÿñ+ Ö½¾÷0mà_e±q§±sï6Ü5úî¿j—ÿ³ûQá‹µÖø\´ú^É×ÕÝéÁÄ»'JI¹»+£<ÿû¾Ãƒ<Œˆˆi¶�§3¾øô?È`¤ñâE�±Ss�åmþS§¥lp˜ô‘•·hÈ)¢ì–]sÊb¹è¨ÉÚæâ#' ùæ5]Sø¿8Cœ“hôš[YfiÜóp{(ôõ"¤nõp(?–�Dù4Fö8°±‡÷ÂÍÒîÈûõ#1ZßJÅöc&aݶíd©£‡##ÙÑVCGMa^6Ê)Ý¡¢ÒÄŽº5>¤#Ñ·ßìØ¾�Ο\Ø;;ánÊ#>¼ðq„„ „nE ïÝ oÊr<öÓ�öÃ=ƒ§-ÂáSWYkí ïLü%W`Ûæ5=|)GéKÇ@ åçÜ‘¸õKÚö@¹¦åTÏ")á^yóý¿äxîìäë ˆ¼+²}ýJ4榮ơÌcLN…™�df—^.†)zxêñgñ$åÕ–ýûu¸9˜bâ„8zêBG þËWp¥´‘è(vÕ)(#3æÃ7_C?æG›J–‹lo=2S|‚²‚Ý;岿w,¾Cò1¥ÄpS’õpw!à‘Ѿé¤=?bÍö]سç F�" ÕV·¾¾X¿' eŒ¶­Ô2Æð>np¢“5`ä$˜èhárm-^}|!6;ݾ�ÿæD<%!¿øè]L1o}ô‰ò=úÁ¨Ôó(«Q¥Ù&¾?‘ˆ'=”,jñm²�T«éDôÆ߯E£¨gÎ~±‡Ö ïÀq]s�Á|Š¿üðæÏ£\¸!�U©I “ß-[ œº˜KY`_$Ÿ<‰™÷ÞGV©ªtRR’±m�TÔQ ˜[Yy®èZhmÀ½SXßÀˆçsÛÈ >ÿj9Ü)K­lo¼ñ:s¿†÷ß&—Ó`ÌÈêjÃ5³yk¤iŒ‹9ùÐli Ü’ (hÁì¼KU(¯®…9™§•vLÍÍè à1©¨¢º�ŽCJ^·V䢸0 î~ƒÉ.m$ÓÇ9EUH%¨‘›ž‚3ËaBvjL½­e•Uð°w¦leÌ)ǧE&ß¾ýáHfÜâ{¦ ’,§»Ç…`ÿÉ$±½‘‘’ŠGßø¦ýTölý ʼnh²öÇý÷?Ø>¿»‰Šâ\ÄÝM2QÓâO *©Í›„¾ÃæàرH~뵯züð>ÊZý„9óçRÍ"�,º*…(J;¿ z†v8±kƒ ž‚¹�‡´())>>WYOryåñ/¿~ ??Ê”(ϾfÚ�`îʵ¿¢ð§Ï�=IŠÀeûê»/É6?�\œ:8‹†M@J@%ºú`È�!Ê«üáé3gb$ uì¸ (-.b”ý%x^¹fétˆU0¨¡ß€i?1§Ž“í­è7¤¥$2^Oœ‹‹…e‹sË¥2ƒ:ÊÍŠ™g¢ŽÀÚÁ6n‡¥� ë¨Q£Ñ£‡›´I¹>”Çò~*Ëó™ÂÀ–ćéÜ…F ÂµLòr1•,ÜË¥|7?aÍ,˜Œ>!c S[‚m{öŒ`„: hšÙ`x/+ä1ß¼ N2𘠴=Ÿ‰‡f^Z~~ZX¡«©†a¬c#@b¥žœ=ˆLSUIÔ‹2Ó±+­Y¯4hB—´�y‹ˇzËc²z1¯­÷•ܶf.Zضz?ÞÄRE&#»n½éÔ$Ш¸oe¹Ìkn/í+âèiª²FDAè 0iþ…$²|)Ë.[ ¥ywm߈�¿[NÞÇ¡Ï@²Ž‰s§v´· ¸Ü„‘pu2FÁ¡¬Âr‚ßcÆèØt Óù�ñÌ �xÚYó>î!;ß®ÌÛšÏ@–²´±^òóëÅzó2J©4áëÀÀ½&uJ ×âBN ^ù÷§ò!áó/Ó:š5Xõí¯8sBî5æl y¨ãµ�ˆ<†·ß}›,•�ÒúdíC†\ß>þíÛëj"—m×Ôs±›q¿´øÄ‰ã”!ýÿÝ ëŽ}±xÁ<„ ìê´o8ï“ï¿d~åSXóÕ >ßѬ#�GâÝ�߇®‘Ö,WÝ�7v,2‚ ËPivsx¿ýþصys{±³‰ðóú­øxÙsÒ¼ÕÌ+löÄ[sê‰ú@b¯Fmﳋí Eäªû«íô¹x*¥Xr°jßõûŸ}†O¿ü˪ҥyãžyùd|žb`êâûÏ\{áN3|Á}¡Å°@*Qµñ{.r¿'ãjç~Û|CØ4ÐCÜù*Á¬a ¿—´…µ?né°¥�¿|‡ÌñH¬[±½ÃüÛñC9G§hK‹û±BÕšJ'áìÝ~c&Ãn�Z�”R¼ûÆK?v6oÝŽ\¶ãêô{@ÍÊ¡-üþ¦J�#.1àîèñcdˆe2]D¹ä;8h bÈò]þý7ôKœ•¶çKå«¿ÊÒR¨wµ¾¼]ûU¾~â¹9Må¶ç}ÈÏûõóÈÛ‘%`Å~eŸ—اø-Lyž4ƒÿºó�ÉË» Ÿ•°¾«]�£8&á›>·†.ò®úç7Këÿ¯ý‹>~œ’æ3‘ÁÔ672‘?S˜�w½»ÿÁ(Ê+b Z,›; Ç¿þfwvØ„¸ïëU Ùv]†éToYnãÊï…Á”í-óÂb±½p3&îqùºCF»Þ=F ‚ûÊ_p‰AMÓ7DÖûS°ïÝmXÛ+_™ øŒ`€jÔÑýhÒ2�uqÙ¡—¡f¤�y þ•‚'ß~é§.PÍDƒJbfpu°Å*;3os__J�÷§òÞy$30±ÕÄì'úº:RQ [¶o…¹½ŒÔj¨.‘+=<¶ôÔ·êãþG–2hÒ©IÑÚ?*l62àÐ×ËÌ1Lu+oö3GPêÜ«Vþ@5‘F*rDÂÏÓžî ŽuòeÞW‡>„1 †™„Ü h“±;kÚT|Ê”iqÒ%“ý²oW~'•ß7QWˆü¶âýØ:Jª'IunÙGoI¾j±¬qK$¢ØF\ú(�²Gæã̹8*`>†E ’öζÒðâ /‘™«x×oæ¾ýeäz@ù¼ÿŠýþÓ÷!®«lÝ}_äåÝ�Å6Ä÷ý�~ºÛþ�ùÍøG1YÅ%³dÔê�ÌÑÑÏýKÑá¸QY±¼ó [¹j•$w#$ܶoù•NB]ôöë×.ë"úÿ'*M'>^²Þ¿ržqyÄ2ÑÀ‘z²Dƒ˜ßBmyd¹ôU) NÌS6QéˆH$‘e6s�ò¢?mZþ‹´Ô^V¡,¦v)óñÊ’·kÇ–––ØG&Tn^å“à¹WßDq#YªiiH¯VE ¹W¥cM±¶î€P˜jÑ�\CÙ2KI§8ã$†�…Ó§c(Ë8 ¥ߺŠÁPDÇ—Y©—(Ñw;öî£ÌÚyL›5‡¹…µ°øÝ;œ‚å†~ó?æÝùqíøò³OÔ_á¹vé­ÏÉÎH¡ÓLZQ€«‚Å*ìÐŽ•¸%1š(uL);²ÃƒÇ‚ùuîØ?ó Ä0ØaÒ¤‰x衇oË >úð²o¼(÷h~Ãí)¢›Åÿ‡V P*qè·¥¼Õ— ²oÂ{M�Ó¥óRÁ™Mµðm¡„‘¨—Éø44±"k±' ø�L¡Ó©©¥–mBJ*£Ëº»®µ =¬ùLó¹·`](l}ø14V–ã®ó¤ß½ýú2Ÿu€TŸI3nÃ?Q¿Ÿÿø$PZíío>f®Õ(xx÷b‡ÐBÚúãO<Ù¾—ècGQJðí¥·¿€Ÿê5Åp¤l÷ž½ád$ꄪVzmèio„J]¶–§ãÀ¶]èÏw6däXÚ\Ëhßx§‰8åì,Œô;-ùã?s²sMduM-2êʘ§ [âPÑ¢…³dméÀÅÎ’ß3v�/ÔÎ.3—Þ”øtDMI!ôÉÀ¬¥s?—¹ûöò{Ò�°èÈ,-­Fʹ ;&Ìÿe¨‚zmkæMlc~Ô°±7FŸ%}æ6ÕÕÓÅÙ“Gp6úó/4Q ÌfŠÃÇcÉ쪂1™X=l�àïë‚Væ!œ~ï#qòáݳ7Æ“IÖÙ† “f}ðÁ{ÌTÇou ÷c†Š‚B²àôàL ªôÔ$‚£étn8³#œ‚Acg˜¤C{øH˜©6á|ZšÔ�˜–� ‰§)ïj m­¾žÌo®ÊsðDlìE)ÚZ[×^¨®©£äV²òŠ�”ž‡©£Càn«]Ê@¥Rö¿?;å³­#œj�H&[ËözuôL¥\¢ê|ïYǼŒT-èEÅ‚]”ê'ó¼o`çÓ¼æ·6~Æ”ÛOb�M¬c'�À‹ÿzUšµù·¼`ÒÞ®ë+À82ì(!<ùî9’䰟ײ4¾üîß úÈ@?ÿ0Œ>ç ØØy @=¯�–¾ì´*¢Á¾§/.ȯ)/¦#Q›usäÂÍÆ€)$\èü´!«ZŽÌùZBg© ûÍL²n÷I<{ÿ|»öò‹+÷W6ãKìøÞLœ0}‚`ÛQÔ�]-;±-Ò81g¹°¾}nÈbå ÓΓ͓ �¾ `õ¹ç—"� Ïh�:qŠRëù<ŸëûRÉZ,#«çT|,Üœ\ÅéHÖËÛ )©é nµ“yþ­Œô ‚`cŠ!h`ˆ²:8ØK²³¹¼>Û¶mBÏ>ž¼§î×l¶ƒ¼Ñy+RÒdçäHËC] ®),.M2ôé©{yö…nÕD½ ú¾Ê}v± �ܬ,Ó¥¯Ý¸RºÕÞ |Œ²ZÁ€Á_²õn©ÃWû£Œ€ó½Mž‹ÇŸ_€è3ñ8±GÊoÛ7x%°�Áƒ‚±ð�¡ðtì3#k‚ÙHÃ#?ûÜÓÌ%û5s žÄÖI–ævÌÕJE sGÊ¥Ÿf»éÒØWÖÓe›&«�=»­¬³Ä»Â÷†ï‡ëYu”Ÿ¡ø>…u[Tä�M‰Ý Ko©í,3Ò„¬«`§l]‡3i瘑©Æ¡¯C›*yzÚQÌi¿bÿ!7ë k ‰¤‹Éȯf¾g"h@²Ý½É^·§„þq”ä_`Þ¿¾Ø¾‘m•f<üà"¶µpøÈì:ú93f§ÀËYqœÙçp:6 SfÅ¢‡žéöØï‚Ó§‘)û�Öæ0>&q}Äs,ãÄwN\×Òu?KCCn¦ä¿jНlF«¶pv ì71È>.áÇ÷O,ïÊ™.úÂ&üE²u~ÄïÎóä²]Ip‹çF¼‹â…‰cóäcÇ!™ÀÐ3Uœƒ8wqÄ6 j«tœ€Ûú_4{2í0ÀEŒ»³ƒ@ E”W/djŠ�¬ï¼:N=zÁˆŒðÓLU¡ÂÀ'_³ö톫¹ ô~þRÚ•Cåû!î»!ï¡êÚaÉçKwÙ7°``GZjΖ5#¤8«ËÃSÞ†\@l³ÌÞ ePgμªv.Ð=Iú^¢*GÈ`ô¹|é­y0ÞºîÅ ìw·âXe <ú0ŠÔTq&ÿJú ÆþGp"ü$⓲àÂo`/ŸZsÙßäçˆê&m2å/ÀÅ™ßB';4eˆísC3+œ9Í6�*}Ìk®…¸„dJÈ7âÞG_„ XsCÜwÏ Ô2'¸¦Ž6\Ø×Óg›¸žJúTö¨ã£6z‚tZ¦:uH<{ší}ôfÀ¤½»Yú¥”/6¡¯A•©XÜ1e’ÈÏ}~³œAfmØSX"¥™z`a»ê‚xOËWø-»UÔ§²‰º@#'«ˆ:*Æ^TýÔ íï¸`j‹ë*®weï‰Ú‰ VÌǽŽÁ®:ˆØ¾ �?üx{{pïéŠ/AhoÅ÷WÞþßa¬xÏE^Ñe‡ÃùGC{�¿þ—Jñœ\O� »õ¹ø¶ˆï†² AwåïÌÿû^�Èz».õoß~ŽÎÃ2ÿd 1«¯)ÅÈ‘#Ñ/0D^|g|å ˆJFŽÚ“ ¢¡'}Ây£ÜàT¾h"šÈh†H¾¦<[š–+.ñCÑ ޳0iÙŸùO³�èƒýÇ?jË92~OÅÙÕq‰IÅ‘Ø4ôñ°C0ÁU1899KE}z¹aäØÁØrä0rµ-´.~ ‹¼å©ñbPI`ΘU6t‰N¾«o?Ù¨Á"ÿ ¬‚&bú‚GáédE'W’/¦â»¯¿A?J†>ûìS”ӥ맸g¯K’Íw*õ«wê܆CÏÂ š”„“í$Ê[6o¤lÜ4yÖïÜü+Y,Ì£sh•7èÕ{.D…CÛÒ O¾¸Œ�ÔV à3òOXëk*Pšs‘ŽBkù2üÏ�méÁ=b|;L¬îžùñ §È|KfÇÀ¦”C”MÄ2_ê|ˆŽ¸0ú†iìÑ“8翌«Î…Ìä8³þÃc¬È/@‚C‰ÉaôšËeä}}»â i²‡­½®Ê«˜i¤« 2Xk;—Ñ»“Øi �WýÃã„_¾ÁG¿®B1’š8Ãè×Qc§àô™sx÷íÿ`ÎÜ{:íCæ–6”ð.„;å�=ÝP©¡Gf™+Zʘ“ÏÄ�ŒþmQÕbý„:Gó `nÙw·n$pi;×k�¤Ê;yý½÷àÍ´�rϱ(¬l€·»Î�m(ꇋT°îD‰:!rw;cÛÎ�À*r[^âý*L<…!¯‡ `€žºZ+Á½'ÈÈÀ5 uìÚ¿ÑñŠc‡£qôà>˜:²~a~²êªR4THeV'ô¤4�Ó‚XU¯/AoæS½\—OÅ'\"kÕØÜZü暨“e§�!÷¼Âœµpö°Çg?îf�°\\Ýè)Ô–Xü9¬{¿\þ¦Lœ&¬Ê×ð8ŒÖÿö3‚C¤Ùï~ø>?²/<÷‚r±NŸ‹Ø…¾CÆS‚TêOeNÎ?`µ#Ãqà �7L$xíæ­”…ÝŠ™S&ILJ܂"nWÛŸ`ýŠj �½û±?UÞd+…0pD€¬²Mš>‰û¦4.û½7cÇé€�¼žyúI®kÏ< Qܦ„«o/2¯]W ësϽ(9ÌOÅ|s~ùâ×»´¶4oX;,èæGxD8ƒÉ³ÚtQLÔ "�OW&œÐ´?,¸N7y­äcðìÁ0fÙÜ{’Ù·gŒ ›ËT0ÐS|o*Ù®suñ&ƒzeíäS»mcÁbý3˜¬"©p| _“Ï®˜ýÁ$•OÙG%üWbZ ¢/$¢�¤éà µãG³JŽG+Ê·Jç/±rPBwEì·;pU¬c`eUYs`wCEÔam “ý`b=±O´*À ‘5çÃ7¤c•ý7b¾J^¶ô|Éó¤�🠮0O<{â·h#ÉÓr¹ÿÅqWëéÓ§0ŽŒðE‹…««+ÕkL0,ló<t ¸cËz)]„–F+SÈdcðð™ <ê†>ù<ûö}0é¾ûaØÔ =Sâ:‹gM¾ÞžI]:Ì�m6s>-\„úw_ÆEæ<=­cŠ1u •@Yy=yò3-?_úÑG1îÙ—¡É !û± €U¬#ƒ9UµÅТžvY-ƒƒkñd ÙߪB3ÓŒ‡µ¡=.Ucð€P$1˜Îº¯ó¨câ°!ýˆfU¦JC›uoè2-AU!ÓÈ4]Fvaz:ÙÒ_¶�ŠIfÌ9ï…Z¶c"¢¢`5ÊøÏ€W_E�W óB×]®FlBë2uë5Ã€î¹ø³pvõF#SȨlUo¬A^Q®Ù½ÜŒ‚KÌ÷ÝÈ4m¶ÎðëÕ—Á ^èÓË[º$�,3rH~úáJŸ3pŒAc¾CÉàæóÞÙ:Ïïw5¥‚åk(+(Þï :8UVçdi\ƒºÚ ¬`j…؈#Thi0 Q~¹ýzõ�¿�¦M�/7W**‚Ò rSQpßT¨±Ÿ¨biu�ö[ßù°þôß…ýO?‰¿ÉDý,ÔÄ3#ÞEñÊu÷­¢âYlå§¾MÊË}+ëÞ)û÷ºw@Ö.îDZÈcømíj Ÿ0�ÝHyõ 3EQav±‰³Ä‡L‘`ûZ`P,ë\¹w5¯ÃÿÆ?ı‹È=e�+üEÃA4èD4¦ó'?*¦Ù�ì\áKÛ»AÛa›lv~á6;@IDAT.«¼üvM‹ R:ß'Q¡Ê‘Œ·r,étT¯ûâ=  g[Sʥ須2¥LØ~0â„Ô‰²´°€*!êt몶µâåá�¢L˜°jjT¤]†ÿÄIPmª†Ví%d—ÔC‹MmF�ý}‰ŽVh1azJRV­] CS#Lg[Un úôA1¥--a&›ˆÄ÷HÜ$ß1Å«>eÑþ]¬Ê�}åò73Ý«ï€kvZ2ŒØÀæÅκó¯>þøÀz3Ûûÿ\¦™Øô#Pžô*°ÝÝù\¤”�ùgzç2é̵X^YM†áµ`Lç²Çßݬï¼÷¶t¸‚¹Ð�}þÍG8yšR|d¬ ëŠÁú¯—¢Å”y�-áFf¦l¢s!òˆz¼µ‡Ú˜‹3µÐç3)wÂÕö3JxGgž¨Ó•ëAcÞÇF²8-ØYz~Ì$.Ìú~6œˆ`$ì9<øôBDÒ¡Ÿt>‘Î9ˆäwW¨LÈ&:\u—kpðÐAl`PÃ’Çž�ýáñ¸¡�QR€f2­&©ª0‡_VQ‚qç¶xòÙçðÜ‹/]³!{Ï<¬ËÞy“B‡ÀÍÎÉÌŸ·åÐQ÷„)j�Áþè2AbF1²SÓ¨ÕTck{¸±“UYÛ@6¡8?K€ÃFÚOYq>N�DzR"ó¼fÁÛÅNÒñò´·ìdÎ×5›v ÍA?FóÊVL�O�Àaw&rÔ½õæëP%§§£I572Ð.3Og Qæòc/''G:Æàe¬Ü{öƒ>s›– 6Z>rSÎ2°G ®ö6ا"O%A·* %I2ÿu <Ù Î’te™m†ª•HcGØÅ·?ÎÅPÞÕÒ„ÀùE”–!#¿Œ2ÃÔq‰ß$õfJòiCOC…‘ÉI¸{ôH¨�lâ󧪥EfIîyðQ‚¬ŠëÖù�íݰcÃJøÐ.r¯î9‰Ë� ðp±A:¯S!eÀ.U”à!3¬º”©((ÈA.S-ZY˜¢Wÿ4_�$xÕ´õa©RÌàuæ Tç7ÓŠÒ�ºD´��œ… Yèé O¤îÌÕ{™@µ �íÍ­Z015D)3*¼ÎºdŪ©¶IÏ·ƒ¾ûy-AøBC p¡ Ÿ£�dº Ž„Á£¦t>µk~÷¿¢¤àAPÞÂÅ&v®íeìÈÊ‘V1sݺµ¼Çt`Ä'ÁŒÌI° c}¼ùî'¬L‘•™B@(N.�ÁŽ�;àÏ@�“öf,?ûe¼ŠZÝLñö2d5¦ÃX€Œººê€®u:¼ûñ‡x�ÃìéWÁªö t1‘žržòíK:·ßÚÜæ‰ˆ¨ãd”å4p¸á–þöKé['Xƒ7cE4ÔÕCp݃ŠÝ�¬=<<ÛV±ÝŒ”s¼VÌ {d½÷þEVQN\#᜕�–K_&°L,’ì“%ã1gÞ#Pk+†•©åÞÌÐÈ`¦7È-ªDé¥Bèh顺š rK>dPBÖÂÒu§ZU™ƒôR êN8w–k,ÙU×ÔEm›*ò¢aÉÀ 5=#ϪšÄi-/CQM5ÒȤõòp¤ìv"ƒ\ÜÉóBe¼¿b>Ù ä�U8@¯gÇ @ æõLOÇ„9ÅûÃǽ?öFGãÝØ½s3Žì\M^/[P*ؼÃ&Àúáçoò[6_úöÚ‘­,@VÁ`íIV�²‰œœÄÔI M—²âêêštªÚ‘SÀ<•qlÿ>X²Ý’™_Ž1#Ù*»Ì U¸ò½ÎÍ+"Ó>û(‹wÏ=÷‘u¦É ¶Í¡§jÆÜfuÈ!¨®Of¯¥•9l°y, Qñy='c°eÃ! „Å�-ÄŽ­›™S»½úbÞ¬{p†ì½B:Nm”žÉ�û¶à$Ÿë)ÓfK§¡ÆgÐÍÃÛ÷~‡¢’|2Z•OOš>Åïy'àlýîÃð¶Vg]n -žwÌéÓd¶æÿ®`²Ô q‡¯¡Ê`d G•„csM¤º«�õš¾a×íÉ�ýÛV±��;öaÓŽ=üþä±ýÔOÚ¬)e¼G‡2Ï/ÇÊ,Vå}*O €uPð åY×�^¿i½ì+ùü÷Gb DŸ^ýºX•7jÇ÷(+/—JЍ¾à§¼è–¦W2+› ëàÐÁíë)êNÓ­}敉ßëHTÞÎâ'Ÿ`�™�Ð�]_³SqIdc^­Ë•×ݰæ+:ØÙOcÿWôc?;�³Ð‚Y[rÚØf[!66þ~AHOËÄWÌ J¶ƒ$–¼ü¥hba‹”>{ -`?+hD=‘à ©¥O>�Ì]Le.ÛÐa|?)Iüã1wÖ|lÛ´E*o^�‰´‘Ðp0ƽ÷<Š»ÆMk?̤Ä3LÃÀ@QÁì>jñ®°Î�ÈBâúÖæfKu·¸ÞÙóžAø‘c°pdà5ÛªÚìã�›²Y9™XùÛj¬üöëk�â­á‘¨‰< î§)?WÚþ�ŽéÎò¿ïx€ —‰úZÔÃÂßåüÉŠß}Àâyïé­ØŒ{¦±™Ã\¾ŠàÚ[Y÷NÙ?ç ÜY»¸®�,y”z"­˜:mf§¯(q,BJðýÂó/v±æµ³D¥¬âHÜ`Ô¢²®x)…#[¹q Ï+ûè�e¯ÝòßsŽL¾zl¢²�ˆ¤yÑ(ù[äÆÝõxòµ“�òVÅGM8믷®\öÏËªÚ ã[© M(õjÊAŒ… �5j/#ßÒSp>=m­L"ïÛ«ýÐ}}zv8ןWþŒæøÊÌÈÄÌñÙ9š€18Ÿ‹ÒŠ8[™Òc-}ô·îÙ3&ãÕWáKçù°±l¼ìß,�¬=Ùé”Mܹó!Ï»3fÃV¯kÇŒ¸6¿|÷9âøù÷Ǫ?!ŠQúzz:t\^Šº»†kVýßÞ!"Hn.óçÒA³kí/¨*/…#A€¿‹]bÔ¬pZ•åP–ÅèO;,u‚ 7 °~øôbL¸WqÝù€bÏ%£¢²†9Í Vçåÿß_d µp𠹯îl2+ºÌ±¹dÁ,Zøh{1Q¯Šú@ÔÙu6æÒ°Ó} <&Í€Ÿua¢¾õ…~hRŬͤù¢c"LÞFxd$úß5zþAøòÀf8�±´víL¼ënŒ>£ÃÆ2÷U™ ¡ þðà�!íß\}JnjÒ�Ô…�¹‚${R—RÀy°ÔUC›º>¥üÚ:|™ûïaÅï#öl£Å q8"‰¡¡†˜{ïýøœ²À'É~éÅ){>>ì¤ë̌ٿ…í·’ý£‰z„úyÀ×à ¦z­t¸ZÁ‡`·jsõh«£²4‹ŽB'´²|Z^ ™uN”A>ï¾dáV  3fÆj0anRM×Ph6—£¬$�dôihÐáhf,‚�6#øÚÚF,�S-ª Mmè†ÊârTÔÔÃÅÙß·¦úKÈÀÌ'ÓvÐØ©pt÷ÁÅ3‡`ã¬È3»cç*| ºÿöÈ�=ÁšèËa&ØÌª5þvey� L, AÐ8™�W f ùÌí”EÀuÔ°Ý5QVVN N�,àD±Y|Þ‡`ù_¢´ªˆò»×gÖŠý^ˆgž82íe/PZ³„Ž’äÌ, Œg–,éêðèd±“V±°¢²�2bdÛЉ¬l!³ËQ ¼üðÃY?\Û¡ëòOÞÆˆñ“•7qÝé22›ã�n¦4«‚ý{ÝÂ×Y¸jÍz d ¤¨K®S”í‡SkðfAÖ–f‚ÐÆ((LƒA1]ÊEw¶˜“;%àÖ€Îua¢­A†§~‡v¤´°‹"ȦyÝÏËG8”•ÍÕÇUÌS,äU¿_µ ;÷ÄðI ¬ª �ž¶Ì©|‰ïR5*jUaEéwMÍ6æ¥õD|B* ´Z�œ](=£ø YM u*¨ ûµ‚@iEAü{:¡’LöÐA�”L #7‰qQ hd‚ s”f;+œ@¬9¾]NfeØpæø<‰G= g·¬â\–>ó”Ä‘�Ö(:ÌØ/Q¶ç__Š¿|¶ÃÑÕ�û³¤$+¿‰d“Õ’½Ö‡@Kgs°w–V1¿?Ä÷W¶§Â1ÿÞ9X¿i#æÌš+ÍVÈí:ãG2Ì1Wï¸QcЯ·?&LšFes^/@�ÀQâÅ dºö#ˆ’�z:ð¬Mô (µ0d/d&'²ÍX‰Kƒzøz¡ær=*JJYhÀ�réÙ™©Èg}¶r[4†ŒœÈwLƒA<ùc«È`Õ bq3rJª(¹ƒ :xûãÀž]ø†ß¥Y÷Ì“Žsùòp’2ðyy…̵½ž}Lðã·+$P{êdÊ43�®AªÎöè“�JÁ!ü¦Ëöó�ßcŠo t¬{B•€Ðª>Á´Ù÷J‹÷mßʱ �Ss¹x‡ñÿ±w`U\[wÑA:HïHµн÷{‹šÓ{L{ÉK/&&FM5ͨ±÷®± ("VŠ€ ˆHï½ýk¼"¨©/ÿ{žï»ÜËÜ©çΜ²×^kç�ýתá~€uñ‡/à*ëÄŠ~×Û×ÐÓ›ý”¨:|ñþ‹xøÙW0Û“�w7ìm­‘å"J‹ `ÏßèV¥{çN Àqò&Þ5êV«7û}Sp¹Ù•4 ¸ª °:žmÜ�ÎÂRÎ-¦ŽŸ¤±vÃÇÃL´pcû¯Yr¯¦@»®†,çΚ‹ÓgW5VucuލŽûd|(À@sI¹ÓîžÈûRynl›Õýi¾Ï˜:­Y€u×–ÕL¾JÅ»Ÿ}�Â’*4ô‘šÛtîÓÈdàk1N�е!ádÓÛ³6B~V>¥ÜÝ0…ÌiI €UЇC2\CÙÞô${J‹ö<)8žžôìSÖ®_‡5ë×ãýO>¡-„#>¥üŠoײÔÇžÐ|·x¦Omx–«øFK>�azváIņUUµ”ÁN¥w/¥ýÝøØ4$óZ ɦZðÑcذ&R Ö«± ÈJýj–�ÛÖ¡‚jÇ™ˆqèÐ! è’yOºåf¶êÑÇÐþѧ°ÿ—}0'³>öÌØ8·¡:FKÕ¤çPÚYßÔ#™2š];!9>´(�5s#E¸ŒL°`ö«ö®¶¨|[¡0å< È”+·´2,Þ¼Vù�ÿ“ñÍzù½Ÿ¥Ô¼wCQi¶PÇ:&=û5Ä@xO ¨¢ÙÊ1°SX­žÕx�°bo÷|¬ LÀXušÛÊ1U Íåêºò¼ sU½gÔåcSÁzy6Õk”ûIγé}Õtß¿ç©K™ëýûÖ<Ÿ+TBºkÌhÍE7|n8Æy¿6µ&Ó\¹ÿ°ì—»ü! uÅŠåX¹rj˜<) ëˆá£F¿Í—˜x?¡dµfŸ$¯ëK�r)uÆ ºVP)O~OiGeyŸĘ…ߣoêø¦^T6WÁû†û¦ùDYQ®¿–x©æý¡ì Éù^î%5.�Å©¥}·>8êëŒÐœ,83á5Šq>«]ûPYƼ+瀕ˆ¢—zqy"/\Bâ¥J²Rýñðã�¢Þ„cüô"”òÒ§*Æì9Ïо@›m²燹HÉ&è~V±`èࣴ³e´8(+#ð:fÖä �eK¿BNn6ºÑ‹¾ï¾?ÆSå(}òŒ-ZsÃD&±U•—’ŒR�L&¡‰z� ç”ò®–**eiýôe¡]~–¡Ç;™¨mÀmoU䞺Jiq¥>ùÌ%’µ¿aÓ&œ`Ü¡MkÐ¥¶JùNd¶å jÛ†ª ù9¼ ½‚ºÐ›õäp^ýU ®0©ðÞi“iÊ9êüw^G%§Û¤%ÃŒý¤úÛþÕÏSãIÜùð§×€Œ=Ô¶½A!àÍÛ:†` ²íŸñÛOž0åÀÚB­/X´�‰s´‡ú5Æ×Âjúâÿ �uÕ—‹Ð!¸ûmWÞôiÓ9žÞìÕÜPèþ½{÷iÌJÑü®¹Ï"- à¢É W$¤S·‘‡R¤i%sFŠ ê3õzô³PLêzÿäw¹&µ‘‘ó”ÁŸdÁK‡¥vè"_"’-·º.Ù—&#V€U„ª“º[mÿwÔ“ xë]Ü,æ¾Ñ8°½Ý㪫º¾o@\aæ¿-'GåÌ@ `0º¥Ò¯o¸98PNÍñ¯`Øðq8r &ˆß^iÖ8µ @OÓ\º‰˜¡w€:s°¢W5Vuù�÷ß^µ§Ô©”6Þ(¿×B5·§Ô$úS�uÙKÝë—ë×­ÇNì'MžÌöªÇ?`� ßOŸŒ Ý´–ö”Üü �ÖæêOsÙÕ´ ˆ?‚g?Zª¹øºÏ®þ7¬®Þ `•JøüÙ{±c÷^´ë@ðÉáºzÑüGÉÐ¥�Ôµ ÜkßJ›aÔñõ¦0ª×B®¶!œB¶)m¹šá.ýÙ»¾‡ñî. Ë@�6Z¶M '媕_sbÛ�lÉNȦÜж›Q˜W‰Gf†2Ïëçµ+ ²‚¶>xñ…—oèsd­#¶¦¦œ .£k'÷;? XêÌ€úÝ ¿òÖ{ŠœÏc 'Î>ž~þ¼ýæG7ì½°°�L; úV]Fäáƒ8Ÿ†»î¦HêõéÓ‡Šôüb°nÄÔé(§”Z/Ê8ÚS6hÊ”q(ÎÌA×Nž¨×7Áñ“ÜG½aôÈ  L�>F�§x©™Y3+Ú‡³1`à(¸$lm¤…¸SG�OÐÓ¶Y6W5V9ñ¶mÛÞ`•uâÏ�&C8QñÙôB5BE­ NœI†‰…!åyϳ¾«°nón²71eòTÑ“TÛˆ×O–l4¥ç£ã.Sê·VåÌȰʫ¦§iÔEu”9sc Ò”YôZЇêüÏW’Eÿ/oJ&›àÈ�_4<ÌIóe2¿¾Eb\ útpgxÀŒ@‰ ,ܘd²K¿øŒ÷P¦LCIßV¨Ð³À2jqbÀÊ™/X7¬ú™’\ƒ•¯2(MZ–ŸÁ {1“dè9éç‚ÔåïS+Öך�'�@¹)‘íØm")( ÈíådIH¶V‘ªª(˃�KXVÈ`vl\"%°(eL†Þ¥ËED?´Éª‚£�ì Š)WE€²��ˆ é(/)‡�w;ª —Âܸ5ZÕQ¥À'4 ¢EI^&29±~yÉϰsvCÆ¥sH<{Þý”óïÜ…`N3kbòìÚ¸i{x¯ö‰gŒç52¨Z_ Ÿn#QH®²rÊ?³î›+¡;uD¯^½Ÿ3ñkŸÌà�x,Öò<õµêÈÒÕ'ÛØ v­-ƶAÿ~ƒ¼°#èy�ÙÜþe™€«*À*ÿ À*Û¾ ÈôìÞ� †¾R¾k©¸Ú`U×UÖíK—Àš}ïȱc4�륮¢¼ ƒõ·¬²Q9%­¥X9z(ï¿÷�€«-¬G)“¦KÝd&ÉíÚ»�º=˜àÐê®#ƒÌ”~Ȫ‚EsÇ7c$¯kÖ2Ù3ˆRعĥ´jÙ†ñ;ÊÃ^KÎ’`¨dX7ÌC˜ß}û�²{ñ‘mZ¤í�E Ø6-–ÓôÉ6Þ´ã0Zë•ãBÚz«ú!؇€nE.̽`ÍD†§æ>�ê‚dú3�Çš-[}â4“ [‘•NÙ]wKx[ÕàB¶>¹áØ·ÿ ºyYÃÀ@{÷Ÿ¤Y¼õÎ|²Îsx/î~à1²…YêGYîÖ¸@¶™ø¶v¡t¼ =Í’"bâìǯ ®5=oÍÿ'S¢NXey×î諃i³&ãÙ'ç*«N¸k2ARg2¿#1ñþ¡8 Ù^÷�'}ÆÝ==5w×øùý�Þ¼�ß&»mVã2õƒü&ûFöµš}·ã‘äsÙ‰Òë­èÙï=?'(ûy"¡¥ ÜuèЙÝ\E¡¨²dâ{Ò3»k·.´˜°£¼¼®Ð«6™ãK 3ú¶š(~�ëîBBÊE\¾Ä *,fÍžMàΛŒþ ŒèÄöë*™ÇipöíL5*0°;”‰W�8÷er”ø{jëTÓ»ù0Á(úQÚô#ˆþÀ}“]R¬€—6Xƒ;ߘL°bÃnJÜvÅcsîS«@y÷'«víþt8«¿__ûJ¸·¤|'>Ââ!¼ê§oЕó=Ír*trâ#ŽÖGîfòR{Ôjq–œ‹¼v{Œå˜$‰þ½šu¯¹ÿ¦Ÿ…Áú{ÖÏ>ÿ‘G‘š{ŽAàZ|÷ãrôerÖí–»ï›IÌCXúÍWhߦ0°<÷™“Sæ¼ø2R.§£ÛU3y~ ø è  #U¶š½o÷øM×;ÎkVö¢%ã럖♹�à™'žÇ˜Çgã*ûø¾L>hZÄ»X}ÉwáÇŽcí†Mì®%öÊò0ŽW®[�6G4?ø`.ÎÄ!ctvm]Ãþxçõ·›XešEÆ£®ìcUžcm2«l�–˜F…²§KðΫh®®Üã«Ö‘EÌăɲ'Œ™Œ÷梨L›2Ï“ÅÚ‹A¹�ÛW!»ü‚Û d�ÇÊÏÙÌ©7îëZKEQí"ÞÛÞÐÐÇQT$Ñf’•°JŒŸš…vF­ ½}ý+k;¶7áà…´ÑÁ25N"ö @žœtëúñçc˜PäŒåK^å}”‹ü¢Z”1�·Ã䩆¹ãg£;ë}ÕòRïŽ}Éãó\Õ ¶úУ,¸(¢ Œh1ñë¸aoOW!ÚdÞeÀÅÁ†¾ŠŽ˜ùà\è­_…ovî@ ê mj -°$<ð„¡ “êW|«Ä^/öÿá5ž¤z¯ ËSØ�r¿H¢‚‘¯“€·ù.oÁÛÕi)Ù^š –ìG�ë)+߯Y_ˆÜ4·ºÄ“„!×´Èý!ÉNÒ/Ëy6�2Ö�GÎSM|�uþê"u)T°Û0žø«ŽÙ¥KËq0õ˜ò›]$ð]ffnèþàSͲv³È"ïÚ­=ç™ cluÛßúÞ‘‰ñC† UÆl2n»’žÎ¶‘1 21d½Y‘ßIý}Üø;ÉKîC‰ýʽ(å¥g_cûåNkòu±TåKþ‘u5c¬êry—ûJî•–¾×\Wû–mBýCÏ ðè>ö›qH ŒDÊŒë°�©d?Z®Œ§yÛ·oF^~% Š8Ô1@.“S]\¬9Ö³ÅéÓ{‘Ÿ«KU¤jøxùcÍÒ$‘Ø"#éB^º°.�ÉܱUû‡Þ¥O¨»†»g?‚�°02=akfŽlf‹ç�•‰!ú è�¸ØX¤ç”ÁÁ¸å:&0kíȬéj-�QU–IKúæP¿´´ŒR³>¼Î£dÈZaßñ ã~ ˆ¢—Sò‰R‹™¹¹8K©§lÅlhï@ÔäÀˆÀÞðáƒ)¹•…ÚÒ\üë­·1Šòö±Pü\¬p1>Q§"Ð)(9 r:‘ÍèKà^Š0XU€U­/øƒÚ:0(@9*2цN¢œŽ1l] (;ZƒÔËÙhߥŽ�>M¶W&Ž�†¯§;¶o;LС#} ;Qn/ŽVF(&¦’L:r\8Ù¶·³ÆîCádÊzÂÛ•²W¥õ”$6¢ï`\BIq>j‹Óxí™HÉ,ARF9 b–!‡É!=(ìÜ.˜çÝp‰ô¨ °ªçßܻ܋åBöá²Æ)ÇV¬Ê?ü£9×P'óïðBfGs «º]Kï"?™�’òr3ÀÛÙýõ¦§³†ˆ<2À ò ±ž×Ï ÿÞÍ[)yÚûö„À­ŸG&£Y¹wƒµ­#ŒjK˜|á¡€c&ŒÆ©Óçàën‡ÂKqH¤†‡Y=Ù‡®Ø¹ëÙ»l3 ²8¦"w�jƒ÷Ã9JâO}ìöKþ-�î-—??÷_èѽ—Â$tvr¡Ô/å±Mœ;Ÿ�„˜³ñç<ÈúÔQîá_.€³½ åBqmÜŸ^x8/P*�K>˜™YÀÖÖî:�ïðz_’ý!óIk²þ_f’ÑŒi3�\GÇœ2úçñêk¯áBÌI&½T• ˆ±ÙgžL8OIß4¸û¹1ùD›ŒÎJ”Uaøô'ÈÆ‹ÇÉÈÈ%ƒÞËÐ�»²­­Áè)÷ žû £\²�ØIÆ¿üýÛRùÀ >þ™Ç ñÿQ£G#88X jž¥×ØPÊ÷UÕbþâùJ’Ò™Ätzu;à§—Ñ¿“2¯½ú^ÅœËÚqŸòÒ,Â:]¹ôsxùµƒ“›ÁA2ì’“ÉJq¦d6.��þí§¢mמXøÉØþÓ$ÓÿV’~ŽÇ¥ãÄÑphÕiу· KÀX2h,t�¤œZöŒ,! z‰I4ÕL@�Ñ“ï¡\r(Æß5/¼üŠæéÜòó‰˜D¼þérŒÔýºu�0YBMø¸î þÓ�ç~îÂ)\¸…Å_-F}?…A)åý…/ÐÓמÁa;|øá‡||µxO\»‡d æJÝϘ4]Q¶ŸÖž|~¤|ýݧʻŒî�8ÚÄV®þýû÷Ä'‹?"ƒ¹öìÙÍûÔUy)+ÿŽ?ÇCy©d}¹á•WŸaÀ; ]y]zd*õ¡dn—N�•û\îõ¦÷»Ìák)ui£ÌF�=±‡ù|3ùˆÌ¥Uë–!qÓj¸&D)Iå§`|ûDVD'áâ¾aéÕ‘žÂT®°‡'•ºõÈD­ƒ“7»$WW‚•µ¨á˜³W·¡¨ªÕB6“Ôrsôнs~Z¹J‰µHb‘×]¾|<<=Ðû×:~ø‰g0óî©Êwrù�ÝÝÜ™0¸Eœwœ<Ç ú‘ö쩜ƒ¯—bþJÉ2êKK+ù<9`õ²- “U¯cÔÏœbX÷î;™µ³ž´0d›^yꄲ­°Õ€laq:Ç›åøà“%ôܦl:Ÿ•TÞÇ]Ɇmű’Â+¨®*B;&®wï˶R˜eÅTáó~ê,:ˆ(©¬§D»ôtŒàë×i/�uß� ¦p3©@}u NðY¨âódJ„¼’"dÓ3Z÷�WðÁ»ú*wïƒËý‡² ÏEÆO_Á…í£}Àõ÷¿ròbè˽˜6'MÔXú×|”ûKbJ·w‘ue½ÌIƒe9#N„½*ñ›¦E�= *‰¤ÞÇ“-ä]Ȳ.ã+ͤM÷£¨­ý*A,êmª4°º½ œÊ¾Uæ¡ºŽº¯†Úë�÷‡º\Tåý?Qd<¡2g[ªÇ¿ó¼ä÷½ÈyFѰ±~èÙfmLU$OŽÝÿì"«¼ºu¿ùóÑÒq%>ÛRŒ¶9_Æo�i›Â›‰ÇÖ¼‡›5~¬.Wï!ñÔ—Ä•…ÐcP]Y¨oç`¨Å1ZÝÆµp¥'«ez¶WáßϾ…5;Ö#+¿_,Z@©`Œå}&Õ˜i¡$¿•œ[ÅÇE”0ÇŽó 3s§~m9Ï­¢ {8ÚÛ£c—ÞŠrNTÔ1ø· „Ik#*÷|Ëv¹†í�ÁÕÓm| ô¶þþjc¨ö‹½‡ŽR%%�JD”växpçN…IìqÅ4$<ȳtuá{ÜÇ5°JØè[Â�£²ç@t˜÷)“Sû+kUE*Ï•J>Œ‘K]4€Ýý�/¤}Pb÷ü�œÙ ÀZXž�ìðíRg‚Óé‰ÈeæÞ¥§ÒÆÄF�漯‹ÈD6¦bH{_oL%YKJiMórµ�VéÛN™©üörÿ~º—óÉkñe£;þßÔÀŠ•?Sz%fΘ¡Ü š'~5ó ÕÆ™ˆÑ0ß×ü®¹¹YKí�ævw>ÿö�øÃíÆ šî݃Œî$‹ü¹ùÿz�ÕŽ�ã ±“0kâpfì=†Áw�ÃY`í¹üï*2Ð&§t€’ÉVC~¡d/H‘NPät¥¡•‡ë·  d¿-IvœŸ8@‘~‘cýÕíÍV¹F¹¶Æ‹2ê¤B¾kZd�+E s•�lÿ¿ZΧf"<* >nö�UpˆYÎk×lÀš='ÐÙ͔ߓ ô�ÁìþôÄhT”•1+w,NÄ]¤å6EòïÈÚX}Ù‡„¸8„9‚·Þü—°°¶6C-�·ZQâ,õb"æÍ{wSšÔ”^£fMü¼ä¤,X„ýû0SrÐ_vŽÿ-;™Ô?`M¹�pƒ·ÚÍ꨾¦ŒºïeÍ‚¬ÒËä¿�9$ªËpéW9xI²ù;Û1Kòp´TÂïCò™pzÍ5毭§…´+çñæ;o¢�ÚÁô×<zœY¨ üõ" fgƒl†«P]ØÉÇÏ\•Šórdð”B:�ž}C”rÃÄ‘£Äì='²¥ºRI¢ÙÎ þ5W>ùv9\˜’N¦hS�UÖ_¸x1ƒà L¸Gž˜Gfl›ß ´6w|u™­áGØ¥ëÊ`{$'�”™kã¥~ ú²j1�vöŒÈóW`^G†`U5.åÕÁËÃÃût@ZJ&ܹ¯®C"39õÙ—@IZ2“NÑóü…ËØ´i#öï§„°™K_ ÜÉDòjYwnZÇ@w;õ~Ó»#A-fôÆ_Î�®‘)ÁÞ ŠÔf=yL®Šç^Äé8´&èqò4<\ÌÈ’¤wxF-Œ(é[ {c-飮ŽÈÚ<Ìé…˹ `(2ÝÚ¼K é &ÒZÒó軨� ò—R4å2ý‹ì,¡‹jPµª^…™‰¹Ü�žWEßT²NÞ{—~­Ù”½4DÒÅÊ=–2³¹3A‡#ô�íB¯±ëøjH ¸ õÒOïâoe‚‚ÜT˜ëQfë ¥�s²y_·c2À(Ê�M$“Øù›z@«•€dôÆàb*™-÷?Ÿž£±ußvt8qü]ôL�xú(ì=Úãj~ NÇ_c °3­cP—@£þm=l—p•L»Ÿ 0ïkCÅcÑœ ˜ÎÃïUÀAñlÉ'P½Íwû½Ûx+ëûo¿ˆJ];à»�ȸ?ì×Ý­ëP>Ÿm®óí¼x!›~^Š@5Ï� g+Âju*ËþŒ6N¼YÍ™ÔÓR!~à�­â%éHßN?&Ø3¢Ø¢3…²¬V.ƒ/ýqãÎ�ŦÕ˰ü§åØóËA'�¥u"ÉfØ)íÉä¬$8d¢S‹\fìwðóAW²K0¿’]ÌD ;T–+²ŸŽn”€­ÆcÏý ÇŽGRÊÛ ƒ~el˵ž9y~ð æ¤ž„~è/J°H&îMÇüš;™‡h1Ü¡cZS÷·–Ȉcøðýy ë¾–2¿éôbµ%S2ƒžÊã"Qœ—�Ï-aÒFù“бSF Bï]z™‘OÖw:A›í»"ìT4Øù¨ÔwDAöU 1†T™¨Ñnkgô:†�¾rØ™ÓÏБGB™ÀaIàÅ^žîIö™¥Ñ­É´þ£EXŸú÷#HL;¯x�-ú˜ýÙÆúÀQþÎZ:õX»e-† NÀ¥ð:�UŽßpjéœb�nC"%¹ÏÄ')�·£áôñMIÄÂ% )µ§Kf}=%ò¢Ë{ÉŠ�ʪÊ2Ü;çq¥‡WÿÖ¬JJ´Û¹âÐÑs¨«ÐCQI6�£2ʆF¥%†£Î2©Å ‰dÀæf^ Ôj%EÍk-¥L}¼Â¬H¿œww7|<ÿŒ7/^¦oøõ�haâb¢TlR,ûÂfZ•øâ‹Eô{vF{/ôèÙžìÓVhï=ÖÀºø³Ïq<"Õüm]˜øÒ‘àSƒ¶Ñ1±Lî¡Lþî(hŠ¡@Êùhìܰù¥pѭñSg:™ ´$Ci?ÐkðÖ�­àD0ÉÆ;=†ORª[‚Þ}EªŽ]ûRmÂ�*zH#HïàäH€ìÆ`WK¿–/†iR4©¤Ù¶víB��Šì÷5Ë·Ë¿ Àz¡!;1sâ#¼ÏsqôX8ÔÕ Xýé¿-åç °6YO’ż”ìÁ'|B ©«l# k— îJ²•ü¿rõj|Ä xlÌq¬Z¶ž¬£§™Þ�Ûv��™Î{·AYG¼â´¹¾–V=÷é‚qãF*cœ–˜½7­à¹§0î‹ñã¦*«<®ÊKŠ °FžŽ ì<]~¥È8ã“wñƒn™&¿¸d1z“å3Ý×?0€ìØcÐÉ£,|y5öëZˆ L7mÝBfy<ļjŽ zöì­ìófÞ|óM‚Ìý•U$!í_€v5rÝ9÷íÃÄ”ãl[3€õ­·?BÈÑøùûáä™hþ6Ç¨Ž±œcÎ`ôëÓGÙ‡ƒôŠ?l¯^�‡MϸŒi“§¡kçn?~\ º ÃUÊÏk¿ä³›Œ¬¼<ÖW$_ÈÄœÀ.Ðr°Äëo?ŒŽƒ&ÁìÊUôhÑ�@�íÔöXb+—-E$“É^yïcÖ#å5é�œ•šcúÓ�•jn�œÄ£´ŒÐ†¯?û:ʅה栾¦‚¿q*ð×ÒÓ¡ ƒ$X×ÀŠã¬s§B1p`_ôê7á‡~¡/däæRAäý}=ùüë"æÂyÎcliû`‹ÕÕ:¼7haÁñ½íÐY=sÝ=%Çûôzݘ ±R4>d]NW’CÚ“U}«¢ŽšöQêv»j z¨s+ye~ÕÔfKÝVó]îu=•�ª™´¯¹®úY@™’u?)lSñ2•{IÔåUR•Ѫ ¤ª@©ºL%®§&âË~Õß\ÙnJC\K3.&s)™'ª`˜ÄÉ4Ûußÿéw©Wå�ŠÛ9ÿKTeØ´e;çJ m¨º/ÆNýØÆþYeÞüyLjh>^ü±’”áÂöïÏ,˜hLJ®Y‹¹Ç›¦ê±§ÙZš––4 ö«÷fd' …ýì1ªôQŸ!»È½(í³xþV29Í…IäDÁ3¿o›;*s¢áƒÇâÁY�!‰ãÊ*z¼é2±¾†ýX/ZŸd0®¥�šJ-Î� ¨Òc gÎ ËËŠ(Û›ÁÄ\¾tÚœŸÙÚ;Ó.¢• "˜({šsvKÓÒàr®]Lу {ÖTºiZ �Œ©èbÃù‘9N�=Âqäø2qÖÛ?˜sp3)/U!Q¶WŸA©7Õ‚Ož¡~ü÷éWÂ4"DiWìym°J›"íƒ$PHÒ€ÄÞ•eŒAKûÓÜ8Ú–*-^O>œâQpE+Ψ•a‡§_�Ï„ Õ–ñ–þCFP¥&ŽcTì`_öåç‹1vü\ÍÎáOMÅ}}¼óÎÛ”œ^‰«´’¾=2ú$^ýðSâ߉óÏ–Š´g ×{ DniÝ;ËÿÞ•X›+®6°ªëÊ3)m©¼äÙl©_T׿óþ÷×À3�?ù»V9Óÿz�õgú&J9÷µ÷Èb VÖ¹Lý�>ó·ýRª•¶Ï½n(– °¥ø=E@ª ­æƒ)ƒT‘‘c‰4¯ú�t ·›x»ç¤vTêú ™SoªÿÞð~«A£:(½Õz7ìø¿tAna)r K�54ä 2 òù¢Aƒ1¥²?oØ‹Ic #e5lÌQV\À��=e]�š”„ûî�‰Þýþ—ÖÎî²2RcPCé;£Væô�*Fll¥G“°mãjÒ÷cê´{)ch‰#»Ö�ÁT@vWýµ,°sûvÄ…îF»€Î053ÁwË–Ñsð4tAd ¾°þ�?©¬Ë¿ø}‡1°{›EK¯Õ «:ø•I´¼d�/í}³Ÿ×·Á¸ÚReâüOiÓNÒpÓ¶ hÏì¬.i´t™†Ê2gÉaø9[ w—n ÀÄ{TÊ€�ýÈÈÂÑ3¡‹ôñÀKï  •†Ýç}¥|¯þ=bzr°™~ù2&L�_|‘Á@Gå5dÂT²™zâ û½¦þwáÌ¿Lfìä»F5 °ÊþEÒTÍB›:yè_°Êq`]¸`&ÓkKÀUM€U¾—òùêíèÈ €ß5°ÉšlÝõ[w!‰,OJ·•a@ïˆKMÇ΃GØÁ�ÙŒÎ(«®Â… — ÍÌÖz2�ê(S›PP�Š˜Hxú·!XC¿Ìv}Éî‰EZú‚>µ ´óÇä»g42çãÎá8}Á‚{÷Wø"L’½­òÙGŸÐÏt!&Ð#Æ‘ÁæÑcÆbά{pÿ¬©ô§GŸ¾ô´Œ(;i‚öí)ñÜ O<õ<'¹qdÜZ3˜Ÿ�Ëiœ@Ó¿3‘éƒöPúX��b'´u4"@`O¹ßÖ¼¾ 8SJWhI –U•ÁÏ«ŒLõЫk�\Kä‘ÕêÌàuzf9³¢¯¢SoJØ9bY¿ÃÉÂv Gëû<ß¶�{a÷ªï1`älaûYË€à¸6{½y tFЫnÿ–5è9ê8¹{á›Và­e§1uHG¸¥Ð'ó«C`ož«™Äܶu+ò+Éü°,àþ}ááã§<n^>8MïñÈÓ8u,”×ß ÙY¹¡¬²£w'˜“å“M 5ñr.š6VF† ä_A;ogd•¨&Èœ™UG²dÌÍMè[] {îÛŽn^ŠTp³q [ÛØA¯¶d6æV�]挜{PZ� ;Oÿ[îቧÓ÷ÕYyÝl傼åk/\m °ªãPión¦Pr³c4ýÎ�r´7+ü^^{ö-E­®%LÓù{2PßÀdMŽ�Âú¥Ÿ s{q¹p.¯¿ü"e¶�)~‡™—C‰×ˆ�ál1°ggD%§Àϱ5=òêÉ®c …‰:Å”Œ =E¯_W´w³Ã9;ôD`Ñ:EÙ°¦äkZ…1ZY9ÓOØ‘^{™¸�JÏ`fø�{-1FžEIð<²y”²Ë °VK/Z 2iš4%¥J†¿ôœ‚ºþ®ÚqbFpïÞÝN¬BAU=&Žɤ�+”}'£²¨ŠjûÈ8ÍP|—{0@ïí冭ìo¬`kßÖOI:óòöB+]&jX²­a{QW”E©S‚ 8Pö4-��•.3qÅ‚uPÍ~ôÁ«ì’\²/u™�cÇö5˜‰ Ud¶Ž-$ïÜìg=6“À™(‡xâ~%è�'fQÒ—ýÁŒ—ž º¶ÁÈÑ#0 × ÅËG­SÆNåól~ÀÚÒ±BC)�žJÆ* µ2iï¡XÇDš“ÇÏà|JJÊ´°òÇï1zä$‘ÈñgŸá€Þdޤ|qqq:RåawD èwŽýˆ‘ƒÝ†”B¥”¾½Ó$��…�…빦O‚\z2ê3)¦¸,ñ1§p26TOð ¢Êž‡1ã¾G on S6…Ýw˜ìt…r­ô¯# çæáF%‰xì�gÈnوʊ |øúG˜8vJ¸Ê¾ç‡~$�Ö”V¯QÞéqÃ6TÚÜÁƒ“Ùù#“B�ì ÁC÷ߣœ£NÉ ²4³Æ•Âj„íÙ žû¹¨( Ÿ4Ç£ÑÃ׆àáJ#ûbÀˆ _=Aƒ(—l{·¶ôênÝxX'&PËëÌÙÓ À* kF:mT˜³rÃzú §£'½1›–È3g¡µò«Æàª´m’ mF€YÆuê3%@ÈkŸ~~À*ûûvù—ˆb_iceŒ×_‹RÏ�xö‹^C/Ü2<ôÄ£xîɹʡ{SBX`2d¥x_€);}+&$]=�{î}Ý9“±�̵;îÛëډУLú¹’yUañ;9¸àÅç^Tö{.*EÙ©´!˜¤€�²0‚¾žÂL•XHOªwÈýèîá©®ÊFMþ¸*¯¦%ìH;?ÅæàƒÅs1ÿ«ô�OG=ÁÛc‘Š©«YX^_ {n�xO±ŸÌ*ÃvJâo;z uL–0·l…3�íªkKóŒuóLjYs(�]ÂD�ÓhCÛ€1ãf*@pÓs�ÿÕXÆÆÇfÃ`ã Ð* �Ò©¯êSG±6»ÏÒœ—Éç¬OÞ®”ý ð"ûoZ串LgÔØžæzrÍk“ýÊy¶DPÏAÞÕ—æþþIŸåž•k“—zÞ×ùJ&ýU%Œ‰\?¯^ÉR]¼ôæ<Ü=e¢r¨?d}pæxEålô]ão¸ŒmóÞ„Ö¢w‘2 ”õnZmºLý_¼šÕ¸²¯çµ>NÀ9S;»ÂâøsJìYîO¹ouºÀ’æ_/A›‚2îF &= 9ë "B#©…"Zäq>{�1¦==(a† \[;ã�Wßå-�Öép1²�‘“Z³ 9/*dLìȧçê(œ§í‚½U+ø:ëQQ Iôp­¯Óf;£ ¿ÊéË|0è�RÀ@IDAT†}¾Œ/Õ"I¨ya!˜Âù –‹7Ú³­Õ,šLpÍåòYžÝ²ÒB´ÿe³r­r½ ÏsH)÷®l/rÂj[,m“ºž´i ÞVÀWÍ}_\ðŽ…´>TµrûÕ†Pó9øð�7°nõ*¼õþ‡T観3>`‚™¬žì_¤Hß?}Ú4,fRÝÆõ«1vÈlùe7t˜`çë~-® W3Î~³6O]ÿÎûÿ��ûFmKå]Åjþœý�³¼�ø¯Y£O'{uBc]ƒõïXåÀÊÃÖ¡`U)jì4 b…õÔÒ€±ñøA�üÉ2u0¨)"ÇÉêÀ³Ãý‘Ÿ¶‘¬ÉÒ»OTe£Ûø#�’Zn°ªëÝy¿ý°fpVX¬))qðða|ÿý×0`ð½[ʳe]ÅÅˉ¡çÔ“(A·“þCh×¶-ÎÆ^B½Yç¾ñþíìΚ·]zz#øÒ¥da‹áÇÎR’,ϽøFŽŽƒûv3è« É üíÊŒ½¸óÉì1lÒ dÏ@ÉFväÛÁ¡å ¶Û>©;+þ¦° ›ø·¬-í\Úsi·@†kž)|F;9;Âìׄš–¶onùÃS¦!ƒÁŸÎ ¶üÖRS[¥Hjn“V„¬¢J²é èerEaÏ<4cš&•P¾LÚq_'3¾,”‰³È›h–ÎD+=cŒ1–@Žð¾‰|˜HÄNŸ>eÌlmý«´­;�€¾=»cþ¢/ñãW31!=~•”g¢GPƒô«æ1oöùЉcpgÀëÏ.Â`€õfÅÓÅ»4®r8«è ºìçŸ(½HŸU-mäç"‰lÕyï>�Œ˜hhUé2`턊ò<ˆwƒ£©Ï#£´ãÓK«‘áÇ�®å‚ŒÔ‹¨.Í' %�WJ-×é2˜Í ïN Ú°X“½åêá�b²©DŠ’I²·Uº‘QâD@ΙÌ)§#�ãÙÙP¸�L¹°tôŸþ(‡•ÈϼÌÉ´~^³æ ÜI`¾×¶8IY:ÊK:Ûx"’R»ÆÚeôw¥GO1R(ZD–ê‘cd‘¦_"HàL†Í%fqÒÛ“ÏAYEEÓß4–ls 0'¢/B¯®¶Fd&i!‹ža'‘‘�‹§žœM ÒÎôÛqðhC€·„`m~æeú6Ï\322BF|$½ÉS¡]ž;Ê�ZØø¡½‡¥òªÑŠìÁºZÔ29Æ€ì&a{ïØ¾–&F 0¶EYÜä3ë™’È"çzüL,ÜÛø"ôx¼mM0€Ì- �`8¸úP¸˜mz*< ʆ„`Ê¢ÚS*2&‰À�üÉ‚içl2Ç,ÈÄÛ²'‚ÀR%rÉÎ ¢ â)6YKÉÐݰ÷¼…Ý8l$Ü|ÚaÍ^œ‘} 'BwÀ¯ã5fIÇs ø“ý|Š,í9��®¾�¶š|oIV£%ëGÞkÙºm»âIìëësæ¡aG°èÓÅ(¥tºH™]d`þã…‹aeaŽ];÷¢¨¼™—. #+‡ B%ÒËÆ{âRÌ&\™ SçÎÐ15@䉓8›DÃZ¶�ŽV8tü4êÈîsh¥ ƒzäd $p¨U™ËXVt(ñ˜GÉñ*J»¦_ÎÀ¨ƒö@iY:Î'E¡¿­ Vì݃}Løþä9æx¤Œ×~œìEst^´#QrT°U’<æ ×_¦ü¦ê¼äúo®ÿO¤®Ï²]+¯¨e`EÉ_7ªøc8™Š9)d�r<ÃçMXìg#OѾÂ9¹e¼ŽË(¯.$3=QI°ð&ÐwŽ>ÆÄžïíB&I¸ûø¢5,*Ù¦¥ÓÓ—>ÑUUÅLVðÆÉѰ´°$Û-˜ \%Ì µÉî'ÈFu�æÊÙè³÷‘½u­9Æ6OX~Z½ïyä>ôaýc؉L˜‰c'£Á…Ÿ×-‡§—+ƨ:ú �îjn÷·µlÅÊå”ÔM¡§k_zuFøXMV+Ìœù“ë:c䈑”AoCðí1ú(ÖáãEÿÂÐÁ㱊,Åûfͦ||kÆ+kx,Ê䲯œ¿h!Ì jùzûÀ †^áŽ>ÈáXR·‚ãImÚ™¡{Ÿ(ä}XLÀÿ,ï5-‚öÅyÈ+¯‚‡³ŠsNcÑw¿@_G÷Þ?ç¹0åxõ¡‡æàå—^VdïW®XA‰c[© âá™¶ß~ö=™-¸›cØ„ÄÓˆ£2Á›o¼¡ÈÁÞ=íÆ~3"2¿còTGúL›ÑW6‹ÇÆusƒŸ§"¢âؽ?ÌíÝáäŒ=Û6Ò³ºUdØuéÖ=ú †1Çi#†CY­Ìl(ùåÕN>HHHDAøÏ0&Øeìè×ø[<úÀl2žâ�·?DY|Âr7 h;¨_?zÕ:5¾7àXïf.oÿ‰ õq¼°d)º‡n×\Eù,,4iãZzFF ‹I#&‘é<ž Haðã½Y]WAÖ¸'æ/øãÆŒÂÈ!×’úæ/úK¾ÿöd¸.þâ è1ÉiÒø©xô�Gøk3éëÈQ¼:t˜b¡£°�(žA?dŸÞ}ñÑÂXK5‹ÔÔK”•½ŒùC�†àã�>S’g‚~÷ƒùxïÃù˜<} tÌsñê3ó•ëèE@¼G/>C<ÈÂO?&h8õ†kmnÁÊŸWàð‘c¬OST“ÉdCÆNçà@xµñA=Ç�_Ñ+{/ÙûžÚbñ{ß`Ýî¯xß\Ä��=2`ëd/»øÂ²’¾ÔÅ5dXçQ…É(…‰�)LjýÐ sŸ{WX—ù–½?–Nôú&X®¯ Pi�‘ G�k,&ùÞõŠ4l¶6Óœ,ß¿ð > )عy5.Ð¦ïøŠMÛøL•â“÷ßa²�NF‘UÎ{àÞ ¬$õ8-½÷`Âà䉓…–RÊ ·qõ¥2‡+™i(ß½’ã§”BÏü²ÊØøDCñ7šžX˜D¯ñEGÏNyó°WûKÕjF¤‹å%ÅŽãk'|ýÃjÞû#àß!ù £Î%ÓŽâüôíxîÛƒéëVœ#ÛZ‡óLQÓ°fâŽ9W‡BŽ`öÌI¸œSÍ1H"jËKà€t*ØX´B•‘%陕lG+0†÷¥ç³ÙéðlÛÑ¡pôêDIzs´¥ò‡ ò�Þ@hÆ›Zª£æ–Kÿ¢»fYT�¶–¡€šñ.µï©]óSj©––Òy c²ŠsYWö'ƒ& P$€RKcYUY[yn<‘—*'*dy¦hÑì Å‹±áÜúð9o`5l'gp­ÈyÈ*£µÀiø^X°MÏ«¥6ãÚï|ºU Xp¬õW¬éd¢›q\ñág_#�ê9o¼ôÇÐG°|%õ9Îwùu®iÍDÓßSÔ{;– GK–,aßí…§Ÿ¥Ù]I{–IkˆAHä|Ý/ùЪÞÇM7”åŽ'+÷±Üg’T¢‰˽©‚³úÃ&(äžð]kñ-mÆüÞý7^ô§�ûø¾Tº˜þöÇx“*,5eºšë¡Ëq�›g*“ø �ã¶=[÷ãõ§_`2Ø =IÒ8¶¤ªO*mèÅʰøú¹“-onV çöÈa¬ò#ÊøïŽ L¯‰�¢˜àãBù_Úl¹z*§jÄ>Zæoò.Eêlç‹�SAè,2W~ƒû©Þ׫‡¨G4•²Ž<·ê˜VþoZ*OD4]¤Ô…´;B~R=�¥=kx>©xĺ’"Ï· ¾jîD�õHÛ$,w‰©K›!çòí÷Ëp‰IŇ#vÓÚ¥“ÇMS6�I)¦êL(ÌM�‘{õÙ­Ó0~ÌpŒ&6!RÄÆ�Åø‘#›Xernš€²°ÝÎWóÌî|¾SwjàŸVÿõ kf%K9sò®2¸lOö†f #sE³ÑÖüîÏü, bs“3éüTq·ÃДH�Ž@|=š6¸r,uà(�•C 㘕SîåÕ]ùÿ�ü‘AªzÞšÞ"dŸw¶m¾,8ˆñ¢×ÁŽÝûÉð§\f{øxûâ‡Ï¿!ûH‡Áb{fE»ÁÜÄ£)´�ì©Jú898r°Å‰´l§üy5 ઼¤˜s Ü9ȃàjWÄÌ”e{ ²šššÐ·¬–ÁQ]|:ïxÑ£ááǧ?EC¦¥*]þwÖ’Ü4èÜø;KyY ½ŒèùÈ Ð_YÔö]Ú]5 -’3Žd‚¨Á”ßr|Gfs*/b¿¥\¦T[zJ4"c®ÂÇóÚ¶b³q�¯�ímÖÎô&?—C¹=KSN~„VrB¡VÄÖï=»õÀÓ�=�7ç½Mfª²33�ÉWS”ÐÐPŒ Lðĉ#ñ û¶ƒûw+ŒŠu›7ãñσ…Wo´±Æ;ヌãdb¸»{(lÍkÝÙ™Á‰ž…a›¿€B¦d JIIIQ÷”³c 68øÖç ‚«RwM‹Òæýš\"�‰k�Цkþñÿ‡hyd×—“eÞK¿ù‚Ò�íÈñ$£¯¡?–£ Àz‰’£zô˜Ô§|tÓRÍçPжŽîu_�OL$+óB£¢æ—_}¿  ì×á‡C±|é·ôß+€·‡3‰x¥p6¬FGÊ-–¡6'­ÝÚ€”2>7UJð(»Ê¶Žö<mJ–RššÏ…�…©â}ØY”Ö­cfnIŽžŠdbF:RJ8˜ÑV|ü©2 ËvïÛe+ñÜ¿^Á2²¾[¹g̶0Áù‚J´q¶Aí ü¦ß‹jŽ_˜ÿÛ“zôëÛW¹ Hµ¶³M©µlm¡ÎÔkTç"Ì‘¾Kú²–JÛ¹êªR2wAŸs/ ÊeæSV®–}­5"NœÀ}3& ª^ z�«ª*){\LÏb‚Ä£‡Á×Õƒ`€=YkÑÈÈ-¤ämŠ™4`çêNÐÅ© g)\†Ké…˜0iR“/ V»§"NxÍbýYC‡L˜S¾›lIŽq�…€�+B=ïuÖQö=cF]¶ÖoÙ„÷æ?‰]‚™l}Cʃ¤’�ò´IÓ0qÖh\%óÑÆV³&= +óÖp÷¼tW�±šL:)¶ö¥¼1ÿqJÛ:(/ù_ÀUyIÙ¸yŽ2y£’`ˆ–¶FŒŸŒÀN�ONcñÒï1bÈh­Æ«VÑ Ü„^±ÝñìË!'/q‚Î%œ„nU¾ÂTuf¢I=ÐÖl¦:JIŠtÍ0¢›<<Œñŧ?¡ ½Ëªêë nuCDØQħ–cÚÐ`„ô¶u¶¥ôiGè™´Fz23¬ ñÍŠUx�lÈž=˜ˆÃyòž›¤•¡åž ˜@r9=“çÓuÕµ>aRÓ�P¢Û¹|×ü¼Y¹¾¦„ÅT9� Ž/ôrÏ ë )heaCIéµ´Ã)Fûùß4&6VP*»Ž �EKKK@8s&«ÖU<¸ÛpüÛ ))n‹ ¥è¼ês2™ñÝÁPå~p Û‰Y}ð8çÒ·[tÖ~‡”Ƀ ½&N7ì3n2U8‚”gC¶ß¾o ö—^5ìš_eØ…¶ãQ‘©Ý£¯]¡g[%Ø©ƒÒWªí«´»ªÿ«çàĤ<¹�ÓÓØ×>y ¯½ñ.¬¬¬Ñ6 +ŽÛ�KZȰ¤ªÛ\íª\%!¬¸°ˆÉh5œ÷ä¢ñFL’ËÈÊ೪�ô7tñ°gd9´*Ê`bÙyLƶqôÂÞm[QC{…­[`쌇Ð5èZ[jHµÕ"@CKªho’gD}—ëS°²Ë­YßRÔ6EÆÏ£wœûfc» 1ug7¥m  úˆ=íÚ‡�}sì l_ËÄ´tÎG§ÓG]_»‘‘Q˜OË�—^y•se�[ý‘ß^=¯¦}Å­¶ý_ýþ»/Ù§s€ãÐäyø­õ1ÿ“†ä´¿+ú­çvgýv \aøgŸë:;Y¥ˆLŠf=~ è)ôwéP4ÁRõø"O$ xKE{ÍÒ\¦�æ÷òYdY¯ähˆükþg4Ðrê`T&ŸÆ>åäî”–k 5ƒ§›Wÿ|Ý »Tþ¿ÀÀ`"'BGBc‘AŸ+3#›¤0`]Ýݯۦ¹’ãb°Ó<øÊ;Í}}ݲðÐØ4r8Ò‹E^äNi®~ä $%_Äæm;ÐÑ•�Wz³ÝìmnÛÿÆe°&‡¯CÇÑÏým—C)Ç×_�Ÿ_'¼ýæ«Ð!Ðõw–›µãêyÄmùNÁÃ`Æ ‡f ð¶…¶iCÐVsùÍ>Ÿb7Ñb¼öò£ÜçzàmZOç6]™�˜ô2Hø7ËÁÛÜ(3óº`ÏNjހãÁ被 �ÏóÕÎÄ W?| ÑqgðÐ,œþê# õòkì³úP.Ø…ÂOœ@Î[ô�ùxÿãèÓ³}Ð=0�ì‹©§™Òdz͸g&ÚˆòܧøêÕÙèD`Ø–ž{¦Ì®­õ&Àuk×o ;ßS&Ml¼Yÿ)嵿Ž×~=™ÇžzZùqò¤ò>sÆD,Ù´ e¶† €‡)èrawâêÕLØRʽ7]Éd:��g`݆ Ÿ+e_ó¡Ïö¢ŽÌˉ==±áðq ¢ mn9–,ú„`B; 6ŒÇèóë‘û›=pFŒ¯l8…,¤Èc!0$x•GÖÇèI÷ ŽÀà6ÊY¶qu¤<]€â [RLÖ)³Ÿ/%i)`�Mkúôªgr�™¡f�õD¨—LÌ�ànÐ;wl€™©† N¯ß+T× ó̳-û*Øk§#üì2­’A%L÷ub–t(GPÊ7£H…9Ø»g?ïåyx·UüHou¥Cð=«vÑ çáØÚšõåÏIn ³Ìô0lêTÊ^Ä1²k¨ZE@ç8lx¾ÎmZSnU.”õüqÝ<õü¿È¼£Ôq�YmÞ(`°8çB,$EÆN¯NûájN>¢NGÂB¯–þè (¤\&£ÄG#QHéà®=: ùrÊÉ* ìÒŽ$a²ïle¿¯œ'¨ºc-tó2a¨c“+deÐ'—Á•¦eÎëË®[$@› ¶i~qä0º‘UqÝš|d=hÕÜFý,ã>yÝN[§nó{Þ£cc7³"³­«UÃ}DyçJ²÷  3³°h\G>fg`ÅË0jÒtvjüîꕲår�HßÝ,þ¤P}óƵdY–¡Á�抭±º÷ìE«ÂöÿÂú:Âì~'ÄO‡©eÖ˜4¡mÔš c±l°…±‰A^StèℲܫ|Ž(“I90_ÄD'@¯�:xø‘¹Õ™dxÚ@ŠŽŽ�Á5ßqÃp1³Ý¡SSÏdˆBè’î9 [e_ÃÉî´"3‘ z¾Ÿ:}><ž­µ½¦¬1Œ@š³U=Ú�ºùÙ¸’{Ý墾�ü¥ʯóT -Ìe¼á·mºâiúc>ýøÓ¸gÆ &˜“ïŠ#Ç1ç¡Çy½Ñd?ä³]§—,Ç¡¹TO0b‚QçÎ%ã=‡ P»2 `(Ù‰_�}W¤k�Tké0dšÒGëe�ÆùJmäñ7�4n8ŒëÊ *28U†Q£F"6!Uyið:›LÙrxxbÇúSxjZ:Q´H¤ë4Ê3�=AÆ\Ãý «ó9"Ï„·[7¼B`êýæ¡“_Vþ´ýû /kú ­±õ�c(é)lOµ´ó ‚¼Î�‹EÛ¶×{f?ÅzëÌ{­W¯ÞÊê}x?��ŠÁ¬`ÚDJÑc}Õà ë6®A×nÇøÝÃʺÛèÓ™YP튤ä_…úr.²½ô€>™fišBÒªq5:’�HOD�MF«Ö†¼tÜoL.!4&ù¥el“íÔ® Bƒ9“Œxo?8y,úöí§+„r×í|=1¤¯¾[ú5ª hǬ^ôåB|ýå{”.Æ&°¼ôì`W䪗~[ïU¼Ÿ#ôv – ;qüÙ””ÓÓªÆìGŸÄËO?ˆ›O_·¯e+W‘ÝøŠù>#é£]I�µ-Šç¾ažCp¦#eä%E@ñli~;söT’‘nJpñê)§“rø}{÷ €`—YëVŠlv ûÈï,Uö©þÉbŽ-“¬º3¼¾ž¾äÕøô‹ETÑå6zd%VÒ[´­{ô)DrBANf–›Ìãßd|`ê=ÓPTZKV¦6¦L¿‡Àw9N�:EÿºÓ(å˜+Kú:[7ÐjJ»�[7Ó£´—²<ü¤$-Iw¨�h&±©%•€S _NÖ¡ÕI-Õ#„×v ]IJ…8u•ÉRTRêÚ !!ûÐ-¨/S¡¡–ª)— ùüëáË% Q^•�q÷ÜCE‰SÈg9vb,_ó ÚÑSïXX“"è/Ú–Ryºøå—htêHß2Ž »w‡Xz÷}ÿÓÜïèÖ»?ÚòxÅÖà<㺴A:3ëQLºçA|þÅ—˜r«×Äê•«ÑφÓ'ö“íìiîU¯£Ä'Ìó:u\¹<{¶ù{øîü¯#Õ¤HCb.R¤ý»Ùo­¬ôëÙ†˜Áuãeõ{³Îwaîœ7ap»ìÛ\dFÜxù°ŸTKIQ(\Dæ¯Èß6€Ž7¶·^>^ˆÅ­¤GڧטKüKöyÒQWù^ØÇŒ†+#5®$_¨ñ® -- óúú”B®£þ^ò½Zwrœ¦cu?²¾|'û`꜓ü¯y®êuÉ>Õ¢n'ç)—ZäÜÕ¢Ù.h~V¿¿óÞP÷°-ø'–.L´šH»$IÉ]»vWVïUi3䑿˜MžMs¹Oç<ò¾ýê;Ú\ëV×ÝõÔlóš‰bÔð@4\Ä�¥_—¢¶Í%¹hn%cá 4ô²ulük\Ý\’AÔ¢SÏDCÎ3U€U–÷êÜ^yÉgßxoÞ˜ußLù÷7ÍëüMþ�®|êÄ)Ú·Ý:™øVÕ# êÛ). %“(·­ßx;«ßYç tÞdù¸N\€õ(õöU&™\÷Ë/üëo½| ©Y{š–F_²‘Dþ¤¹ìø@yw¦¯â­Ê¥ÄX2(³éÍh‹þA>hà ò‡}’Aœ®Š¬õ­¶ÿ'|Ÿ�œˆh&—ÍfF¾y€UÎ/=1%ù9”™õc&óµ¾Ä„ÞèòîÙ¾•‰PI¸B�:.&;wîÀ–­»yï”Á�†È© 1XõÕ|´¦>Ð*+A)}Ÿzí=|MÐeÙwËñÇÃȸ—âææÞ* ~ýã`ïBÆ� ¥\«éz�cc*<8xòÝ�~Û�ؾw7ÆŽjðwtpR¶ ?~„lÎ4²ß®¾ÒûWe±ÊŠíÒJ 9tHÉ¢©MÍÔ¥Ùÿ½ñð#á_ÏÏ%+;ãÇŠ ¿½²š€Mö6&dýžFVõL> w®ÇùÞÏ”‚îàO¿?z€û¹ÌZ2ôéÝËÄ{‚&¥ELJ c&­ ¥œs¡Už�½ç`ÀD—�;╇§PíF�íkÄœ‹§u@.(‡~9¿¾.& œ60/Ö0™sßžõèä�´ØPÌyþCŒ™0§£Ø¶’U:uò4ü{ß_Eµ}½ÒHHï½B-„�„ ôÞ¤ƒ"(úDPìØ+V•Þ‹‚€ôBïÒ ©¤’Fú·ö\&\b@ô¡ý'¿ÉÜ;}æÎœ9g¯½ÖZ¿ì'Öÿöèо›öéÝñó±ã§ð5ÀË×þ€¹?¼�v­:ñ}ØŽ 1‘(L&@$M4clÞ´{¶mFó&nL{?ïø•õq!e_éAZYÎgu;åOó™hRE&g:öêGfm*®Ñû�%8øŽ”~ïõÂ[ôú¥~ïÁʱµöƒý³caK&öàŒÓô©ôC“AÕçAž�9´þ8z%#×nù]æjymú1|èÈ~\>ƒÐ�P&L¤cʤg`Ú/àU²U:Ý`2«çè±ãXA–u:­Ú¶ ÀÑ(Þ[WÒŽë!¢K'æcÆûïàí9 a9j‚QiI‘år]#|—œ�”ÔèÚ½+ÊyïZÛš1Xm‚–”%ß¹ïW<7åE° hK�OæÙJY¥ÔÖT+þ¯Là’²y×vld}LV¥”ö¤Ìþâ}ø¿ø\¾€'·ìBÅÉcXºr.ÑïsïÅ|´£4³e‚Ÿ3‡ùÞ´³sáû3CÇSî¿éh àfNÖÚ5lØø UL)�]�²òFøeÓ>lݲ�u])Vþ¸ :L^òmÚ–Áy2„]¬‘ž^�Ö-1Ž’»NŽ.l_&áÂË�¢èƒw G5îáóÅ·èÙg“ðª•cnl¦C5�ø†‰Q—2¨ Ôok’Ýd�Ü>Ãá3x¸Â¼Ô_2]˜ªÚ2Âò{ X#žõ‹ün_,Rä‰Õ˜™æw»)ZPêÿ¶²Œ¼7Õ¡þ:÷¿7|D¥G†RùࣷÙw[oo|úÍ�´H§¯õs8râº3é¥Z±+¨¥LÆ´©ÿá;¥†ÏOþ’èöóæ]ŠZÓàÁƒ˜ØØEaBKŒ×fäåÞ�íÆ¡eu©Â VA¾”¸xTÓÀ—žÑf¦Æ˜ÿó|è÷…Z{W‚rcñpÛ6ø•þíF“ž6ò||.íÜŽ¯üû9æ5g—ܯO<>¹Ží)u�ªbch³Â<#c#8ѪÀvç,º‹¯‹HÐ3Æ�>�rö÷ý}zËÏdšËwT;´5±©—`â¨�ÇG¼…kTœ˜5‹ÒÂÍÆ€ÃØ6)£BÈg´\È6t5 rè%m†&íDIùBÝóp¶ôÁÊuë1~ì“H¼LÕ$&Œ¥O²ìTë_ÆÍ\\°fëVD ŠöÕ¼/)ÇÕP=)3äÜ•á£\,1ÔwF±‡7Ñ:A-2]¶£.#u‰ÄÇ¥¨×LØ®Roȳ.¬}m6°¬'u¿Ô%êzÊÊüçH¥¯ñ�NºãýîÁØéndV¬X�1cƨ«Þÿ—WàôÙãLÖr®ÛJÿÁþk«lL¬wÃb §ª—;­±d¸_þ=WàpT-V:áùgž¹çÍÁÿV:¸6Pš(Œž$÷¢H㳡†Øïm[iÀ1;FÊYß4¬ d¨Ÿµ§lèoø'ç«f ýSV¹ ÒhQ‹š‘¨~ÿÿm|þRŒrJk×.GÙ{÷îÂKÓ_¯;MX_zýMlÛ¸¾nšúaãê%”<ƒ—ßùw°ªëu¨4P§«ãéìì´êоð¶:érìHÉ@¤,_üƒ’ݦ�áö?yQ~ç¤%@ØÒ·éï,uw³[´Ô‘Ô¥ãbc•ÀpF2ƒë‰1pòlŠâëUÊl_2*S““˜<à©.þ—�]Ébm¨èš;(“`ýô÷°`ñÚ†»eZ`» ø¿YE¹Ð+½F@©[~Ù¿ .8ÂlUëš"JšÚ"¼Gÿ[Ö“/ÎÓz+™êòyÀàad+:Ã×·™|E¦Åb”ï^£|~šÁµ8œOÀ\¾GÍÈÆÙ´tž2yðƒOÐÓí%ìÜ»OùÞˆ(D£Úë8yl/Ù¬a ªÒ‡íz2²˜qûÖ‹3 Üå`=}?uHióßœE©ÃO�˜–‹¦ü=ª®žWw÷—ŒFF*Û•Æñ-â™s„‰[ÇÈÆ! �U^V¬Ù9TË¢o—©)…w[V-À™Ýëq�,Q?¿Vp4¾ŒÓ”PÖ¹9f3IÆœjYd~,}a:z@°ÒϤOc Ù�6jÛ‘Ç÷bÅ’ñ꛿¯:P·ó»ù@öGÓ&d�>†êÒlÄç^'˜Q‰=)½{�ÁÞå(§ÜSyÙ5´ññ@A£}d¦=ƒ´«'ádk…I“'`è��¨e0Þ…ò¥ÍÜ]ÑÈÄ–rw{�Ÿ¯ �jú¡6¶„³u6!YG?}NÞ^ðî„XÊ–�M›“›ˆž F*GíI™Ç'�#¬ÍÍÎSC§óÝ‚ÙdE@Û`ÑÇÖÔÄiô=€ì™£q]�˜…M©Ãž]éAx�Þ«À&2m=]Ð%°¼ÈÈ®eÒÇÙŒ@B=W¯¢—æ”1MW|j˜`jn…èSGHÉë-¼çËø.¡ô^Ÿn�è]Ûˆ~«Eܪè¯ +ý Ä7²Aó–A(­­¡§ZrÊN”l×6֚绡ó¸Ó4{gOlÛs¶�€6íÃ1—ÀRÄÑHØ99"éʸd{G"ÉH½y?Ïœ9SÙdéõ2~ÞôG`àMÇÞ³i Äå”ãСý=¢ž{z2½ý>'›³ó�ãžÎ[±ò{& Ø¡Oï·l·†[èšÜ2]ýÒŒ�/ýçf0=:ê(ì› +íº� j™÷õgXÂßìPT,ÎòžËLM@Jìy\×mLÀ™@ƒþ®ôP?Êìç!!(`RIÞ•DDþ´ yºè?z"ÁôLüºš‚EbT¤˜« R‘œv•ÌMʹÆàÉ1Ý�šSBåk]²"[RÎô(Zx8қ݄rŒµÐ±o‰ÉC:ðÒALl<ÝèßTKoQW˜×¬V ¸E$ÄÆ±^¼†Ò­/ÆïÁL)×X¼ÿÚÛðjê§œÖÈa”�4 ra![üùܪ§‹=Lð2¸'RÉ´”’—™Äú)MŒª_¤½¬fõ C¢œŒ±úå£w_ÆËo~?ÿV˜0i"^›NÀ”�ÿ”ÔLôèЖòÓ!Xºî'TZ2 Ùˆ�ý,è0Ù§°° ­ƒÃТU.]º„½{bÄ„G‘•�Ê•÷ƒwÓ6Hù~6\y»÷éŽ+1ÑhÒ&LÞÈNΣÇa6<ÃBз]sœ?�’â4\åó[Áä@w¬[ò½r¸?úÇ2ÜZöR}eïÁ}èÑþ~Z½’­b%OnO£ÄL̤7åŠE+•3(qêÖˆËí¨ÛД¥ ú£ôÊîX7íN†�ÐÔ_õ—ÉÉÖûDõA�ïÇȨÃx¾þBü>ö�±ô*¥§sFbØF7¦sÓXNž½H†~ÆôŠ€OÂÃ{b_|ò‹x•r‚û@UYŧá¡áýÉø­Ä£Ãúàô¥x[M”zÎÄ‹ <&Ö¸šN?Vz@š³î¸Q&O~‚2¥ÉÈ7 �o¨ *K¯R’Ô[·ïÃîí;1iìÊ’‡Éæ1n®Ä]UW½ãøø‰S°±kÄ{„âïÅ`’C$7�˜ùîëd7^çû‘9ì]œq½¶Ÿ3ˆkZSŽÑÝCXGè�­îŽg_›N?Øúi¾úì L}þy²RÏ €Ï­3½Ä}š´Bå‚`\]¡ˉUߣ’*g\N(уv+ìý5ëZô7ÓŽŸ:ŒÍd‡nÚ° ?,ù ½»¤7÷>ü¸l6ºtê‚qC'ᇮ+°f÷hÕÞÀœo¾ÅŽý»è LîÔ)´107D)­MZº‘¡:ªn•“þôjO¸Œ#›öÂÓÃÓ_ƒ_Ù­0 ËËk°gÏNÌûr)ep)Ç›ÔNYÏÛ³öïÝKß0&˽¥¿¦Î�™Û°>"¸Ê6£ jy¦G?$;«�u�…e‘Æ5®Å«†ö¸ž‘Eöèzë]Cy~.¼ùÙÌäš!¢O;üºá0ž~v f|ð9ƒÇ»˜¸�Îd’&ŒxÀÕ­)¶nÝ‹²ªrJ¥PÑ£ Âéi¹— òf|_ÖPB߆`a>Ûâ9”ÏÖÔá7n€Kø0¤•éÁ…²äjYøÂTô`B–óž­˜L†W¥OseVÓæþûÃáÐnuQe|îü%à‘ÑèÅgÛú¹×-„±jÍŠ‰½H,F�iH\eцϰ÷L�¨¹Ç•ùïÐÁýøôã÷1ýµ7Êå|h¹Üœ9 ÔU”í«,I ªS]=[õõ§É:{¨ Kp_ö?�Š-ŸÕæ)qI£“#5ËôÀ؇¡·êIö[bi7aC5™DeÇ3Âñ¬SŠ‹¯ÃÈÎæW ké�Èè£h)ržé©Lü±ÄËLv\¿q+Ùñ�ôÈýnM=q)¹€*!hÕ>'Ì…q‡ÞÐ56ÇŒª\ÒOaÇŸ¡å ¦/�Ï‚¥�÷Ã�k¦»C&ø€%HªÌÆ(ï:¦�œŸÊº“ÏòžQß5ò]ЬšOšÿÂXU¿«lWYFÝŽ?«à~Õã‘ëW»² eÙï¼ú±6¹ÞÚ±´?ÏS�õþøŸ{¶­Ÿ {Új˜Y£5“K:…GÔ “'ß<îf^>øúÛ¯I$èŽnÝ»Ó[´ß¿]˜P[TZR·`C÷ʰQšö¨4¿ƒ‚X·ò¹’R8ý#´›öBݺêiwíšõ1ük+vä#O>©Îâóœ‹VÍÚbÃÒå˜:Åϼ÷NDGÁ�ª`vvvLVÖÅUöŸ�Š ±, ;ªYßK‹#19š>ØÑhvŒrø ëRSçø–³ÁÄÒnÂãp4'ž ǃf㆞~N±}9³üGh¢!Ê¢uÿd;>l¤Ì�I@ß�ÝÒ‘ìxsJÞ 5Pw¬_¿³¿ü ï¾ù6ýFÇaêsO¡O÷^L˜™H°Ñ›ª.VèÛåA¶uö3©¶�I_×ѹg\jn_·ù Ñ£§NSÑh>Æ?ü ¶:ÌwÛ’•Êrò,ß®Èó/u»°Jå·Ñ® L“~³švŒX]VeÔª Ë2RgÔ¯7dyÓóÔeoüÕ’/qôlžûöï8 $_K áÿ¢ÈyJÑfàþ_ǽÞç�Kæ±ùÿZßlÓÜë}üÞö¤ms¿ü»®€Ø²¬eÂÃ_Qþg˜¬êÅ{ñ¥Woa²ªÓÿÌX*uɶ¤šù{Û‘¬É|‘J[>ËðGJC¾öúòrÉe¨þKA{™ÿæ³°C¥ü“Võü4™H�~—¬.ÿo'3ÛÙ’ÌírìèAf½'3°BÿS 8˜¾l–u‹ƒõÁÑ£ê¾kðkѶdüÙÚ;jOV>Lß%[ÞŸ2üÑâÀuÔá�®ûÿëòçÈZs [AíRÈ ~yYŒŒÍ´'ÿO6bú�Y£zdùèQ‚æ^•o½'Pž1#%žž…Mp�¬Ù¼ú¶’At˜A²­5�¯{µÏ»ÝNrr %þÎÁÃÓ½na°Úp°V](!)ŸÌž‹î Ú&“Ýu�~.¦µ('HqèpÎÙMö@ŽÄ¤ ÿü!úãU£©Kuue,ž$RäÝáì⊢M+êÞ!-[·Q2Ú%{|a[Êë™Â« SYÞã‹…Ìò¤üæá}0ä¾½†ŽE$eG­ÉZµz}¤C)'X‹G)s™Áñ*XY0À^@vC)3óé×F†q;ZMè=tä ý¹J`ag WSOG¡}xWJ^¢Ô$Y 6¶Ê~ïÕ¿+WÓ?u5ÆÞ¦~¼Ó~\\\(µhŒ§ŸœJ™$C* äãÜþÍí ^uB¯¾” {a°¶hÙædÿÉ ]Üx¿¸q¾§‡;F�~¡]úÀ“¬[µØX“éoL†y –.ý�Ïi=P;ª³ÿð8ŸÛÅ QŠl©¬üí×_)Ï‚ƒ½ Ó/wúËÏc8ý/£é‹x8j7úö!kQÌø´Šxc?¸eô=µ¶÷Ä¡5d·ÜE–½sO�Â÷ß~ƒõ«WÉÏáÕ´lú|.rØ>2$ÐoÅûz÷浸L6ÿòe‹qæÈ�<ŽQã'ãÁÇ5ófQZñt-xOm0¨Ê§—ü¼¼þ›�rS'w*ËÐ7Õ�¾¨TWXóÃlèSF´yK»D‰ë¢k [sûž(Jû¡{ï ´kÓ¿ì܆%[v3m€³'O ˜uœ››jŒm±‰Á•¤S±8¼ãàüM\,”÷Ηóçó<¼)›kÉ ÙÖu%ˆg½^®£«»÷�fFc…Í9ç«™ :Uñ8Íøœ5ÁáÃGÈr¼Œ^z éÅÕX¿ùDt %{Ûî|ún>ýôz÷ÎP®ncÜ*Ò^–@¶)j‰Žêè4îÐÙH»2dø8…É*ë6õ¥üS¢ãÓ1zh7Ê€ë‘)E¿aSJ_†eC-� Ž8Z£´¬ ”$=})™‰°³aâáªesæÏ�ÁîˆàT‘…X[ŒþéÑpì8˜l�åðsµ�µ›7Á©~p°ÐÇú ¬ÿ¹ŽÈíšÛ9°êMGxX0=°k7”ùW_ÝD2Å;pú12Û„⑇&â0Á¦Q£FÃÓÓƒþlîLÌxé–c¿Ó—öAmaM½ZctjßeµX±æ;ìÙ¼é|†Šè[ìåëŠ6ÂakZcS#œ‹ÏA¿�C¡[™‹ÀŽÝé¿ì£0ÓCº¤äl›7Fù¶Ÿà¶q-Ì®\�åSm×.Â�ù†‰PRÜyÌÒ_–JÕèÇ‘¥cˆð 0©½NCŸg|8£Î_7=ó Õ%tñ,Ï?'/G¹^-Û5E—nÝÑ¿ÇPe<ÌÒÐ@IDATuOwOô�H_TÏ[67” §çi-0ŽíÖÍa¡a7n Æ ‰C@﮽њ禖ÍÛQ;ÛvìÆ{o}ˆ-<_I Ã×s¿ÄŒ×_䳿H6£1å-”¡0'ù)ñà$Ì�3‡Ló(|0óc `8ÙßkÛ"@aíh@@�Ú“0v ×,.?Z £…¥ÀÌž�К‰‰-ƒÉHòaò“&¨À‘ž–¯°°S©jáìnAæ¬)–,ûY‘®žþÜû(:âçíÛðèèG±tÉr2þ‘±3˜m¤t�"ëÕ”íÃå˜N%±ˆNèÕµ“LÑ5¼ëJµý«ƒ¶áÛ“‘X§o„@‚¯!_|‡¾ÓßEÅǯ+Aô”S»p½k(ú�˜Ä6HÙ§éèKàQe0Éõó¼Æd.ZéƒRõòÔŽ�(1Þ Ò¾F[—=û×ÀÙ>U–ɬ&Êàhí¥ü ©¬?¢˜ÀÔ‘õ…+ï¡Û•(&©¹² ¨�š–æ›öqI«21e®´¯sœèqïûêX 2]êæ8C}¤Ÿ:Ž&á½Ð®coä²Ï¢SËv•�V/[KvsºuhFÕS&ý1QŽRÙæìÓäf(ÞÇÑÑѼö]©.p 5TØAvxÛÕ!íà̺­òR$LK¨|CÏ[‡èóØc`ÉÁݪ ”ƒ&)Ÿ*Bóšcõ\§E½Ü/tªód,¬Uõ»²òïü“ee�÷ÏíÖU·§2åw“w”ünÂ(“ïò\çÍz·Ž+ËÊo~·Eû}w·ëÜ_îÿæ H¬3jófx¶¾«X·b bcbQkå„ ¶%Bù¾¬_/ï?p'ND=¢éŸ‰í†x¶óÓ0ë“Oñü+¯Ã•íM½• n0Dk”}7t߸0QH-[ÙÇ8Fõ‚öÁíÕIuãQd½Fëè¬�ØÂªÁÖÊÍš„¸KÉx„ÉÞloÅgÇÁÀ¡)ZN~ÞÁ¡ØsñV¤` Û±­™L>„}${‚¯´X¹øæTÑfGŠZçȳ ŸÍÂ:ßèÛ×`àÌoðòk/)aáȤy†¤®T×Sôl®-�°tÕf&æ´ÇÛo¿Ž÷g|iI±°²¥w´=vìÜEéúc8húô†F7lš6î_Âö‚'õ�eëgcgä>tí®Ôsê>äYÎ10¢ýBt=Ñ–±z¯�œò´æ�Íg¼~¹À¶eÕâ9  lXY^X^Rd$õACç ®+õŒÔÂF•úUŠ,¯‚­êrÚ Wi/h˜¶�oÖÍ\džûº›Ò&”ïWDž8„�ßÿÍØ�¾š��©SŸº›Õïé2åW’”¸ÍÝû=Ý¹ÖÆä–6GCÏ�Öbwý±UE´™¬w½â�÷Ú¨ô,-lÿèª÷—ÿ—_Qø+ÊÿÈz/.¢T "ù«-K¢Ê Ü‹íÿÙmÈqI‡©2jajŒ´;v›ÚëIö‹¼xÿ «TÚò›ˆäÙ½ªÀåZ°®Ý)Õ¾>ÇçÍÛw±“[ÄŽùÍNœ2>^žhAiÔz:m&¸±ŒY©= ¹«Cj`•sùò ¿ËDýÝXë_(,Öú«,•u%†AŠbJ7Þl”ÿvíÿ½)5 „6þS'ž!ARâE¥]ìmŒ 2¾”!õeÐÆŒÞv¾~ÍáI–[Õ•Kî}wÏŒö6ÿègµa)€¦dJŠ|îêQff¥ Ú ë�¶ýå/gñÅ׋¡[’Ã΢¥‘}éY¶ˆu@+Òó²˜L‚Îá¡HIŒ§Ü)ƒõÙièÞ¿¥Œ6aÀPJÿÅÑK�~Mfd J) 4j@GÆÚï4Í»¤M×/¬XåØòÈ„—e â€g¿D2�¬W&÷ÇY2V ãÏ#+& »˜QÛ»7Ùd&œ9ƒ€ö]QàØG¶.D+JlêbÖœÏѪµ?>ÿðø5¥¤eœ®œ�ÂOÛN"áܲ¯‘¡â{ÏAÖðŽa `U—Eô|‚¬ž¼žÚ k.™´%ÙÈM3ˆC`fÏê¯(#;Ê¥Ô⮒ɶzí*ì�ÚC©Ã…ʹ †b%àh¥Hß{.fôå³tƒ�~%²é5Ô¨$�‘‡|Ê× „Ò¾å”4íè�¤ôkèêoIðA�ò³ô«3"øãI7;WlÂþs °1mŒëU•”v�.ýòtù§O.y''åÖ"“Þ« É:#�•Lð< ™/R2ràFàU·²‚ê¯Wôž Sccò÷½Û"«3ï¡og½K–$;¥d Eî݃U«Ö0s|Aw/‚¨> ¬îWeðôð$ãi?¾�ÿ&L_·ë‘l×½óþ;” ve‚C1""º3é!ˆÌ_w9´®Ü®ZØwÊ¿W®_/A.%”]Üš(‹ž ÀáÌà”ó=bΟÃÈqùÝ�l‚ž¿XÕí7&Y†ÄØ$²›Ó(…º™¯«8´ÿ ËD\â3æFöãž{оw7ì?º§NŸ"hÖ˜òÜ—PQš‡BJ"–¨½B¶ÏA®w™�6?ß&°çy¥ÌLN½BPP—÷¶ påÔº@©êp”• ŽAmX»(¾§ÃFÑË7ú,…ÅèƒzæD:AŸäž3cÊWö‚‡—'ƒÖôš é�,Ê€æÐOËŠÀhnf&\Ø+D YC"¯zîÂa‚¨©ô½´GvÎ5²CƒàçaK&4�3¯/X 2FÛ4Ç¡ÑÂúÓÞJ}û�F\ÌE 6Ž )Å��±ãÁžœ‚Ü«™”‡%Ó¬ªš k4Æ=ü8½J¿C­…Ú÷D`ûLþàý­Uä]$õ¾*›&2ÁŽ_,²´9þwû&&ÆôÛ@àWÞ´©¨1´AÖ…cŠè…®=z)~‘ |vt4,¤·£ÈWÖT•Ò›Ö“‰ ú© `A0r÷þcîöÁÏÛ Ù”Q£hlìeT2scÏÞ½hBU ñ"¤a«Àx{:‘­Þ;݃fa½�ÆkÐÒ͆‰�¼•3ÉB˜øÂ€0¢M�OÖµdºówïª<¯PqAV)vl”]/'CÄ;~ÚÊçÛƒËz*óäŸ#e„Û´ ¬û®~P’’¥SÂX@ÖèË'€õv ë÷K–â“^ÂÅS´­1KÀ;³ÒÖÃ�`Y0Eâ>ÝÕMó>OÆg}B†g%ÎD?BÛlJÊ÷ì�ˆöþìá™`çžcpqö"[µšó=Þ¾E3ߺ¾Ñ§ CSÓ²z¾õŽeSÊφöì‰!#'W-ƒ�‰�"úÐı¼ÙþñõCaîDQÊב‰@V6vdûØ(·G�ÁÁƒ{YWZ£1ÁÈñ£‡ÑûqްÖè�r/I›FŠ8“>£2µû`9yÙ|—å²mÒM™LÔ»ç ä2¸üÃBJ#–äÃ?0×K®¡BÏS^üØâCÕ‡‚Ä8…9nE¥Ù—ôÁ«f½­Pz|OÔ/Âz‘€±F…áòźÕðK‰…ìÒî’cjJÖÁݬû .'h3 Ä«üîÎÁƒ;P.7ƒúÅ€>”�oÞŽI®=púÔ1&®ºÐz ¾�=¯þ¡Ýñ{jÒ1È;ÌÐH“L{èÐ!œ§4óþÄt&:‘]ÕÓ?~_¾3‰¼&½i­�–G&»W³ºíf¤Ær:¸tâºÖ¨´jÝ–à +ßé®JbÑúÍ¿ÂêCÒ“XÔ`²\‰øò¹èÿò›ˆõ²Gëg^AßîýÐ2€å9X»z-ßÕ æñØó™e€¢{¯^_abBË,Ы[_Œ1Yùipô4§¼ºwj…§¦Íä}îA�u=Çn8È$›�BÔáCˆ<õ3ýDM`oÙËW|KïöT<<ñQÌýd±òìKß[@K±V’X„M³”³í5ôÀ¯(òs%Ù^¬ûêr޲ŽT^½ö3è4æýï$³”{AÎݤ±>xoSRáЄuT~)Úܰ9qg�0ŠÞõ›^KEŽ\ÿ}•uµÿ À:úÙ‰xf“Ê䬴s¸¶à[¶¥5‡ö²ÕUY\™.˸õ ŸÈ¿9~™WZ©‡UKàÞ´%¼‡ŒÁ¢%+éo½‡6ôPu¶À¶½‘ÊoÞ»{'&"¥áô±#nÆ6—.sŠñÕ§ŸñEµž.ô˜Ðë@oøF�ôáBE¾Âð”!þJ\èýìê`w¶iQŽQÿ V”:NÑ>ìºÏ¤žz jT[[ -å+ ȹÕ-ø>ÈzwZWžiMå·’"cõ³2�ÿ4±/Æ~øì×—¼W—ù_KÝYÿšý®ÇÑ£G�FÛÖO •ÅKW+“™p*Eê,›¯€ceØ»3Á÷$Œt«pæx<ë=Ÿá]û Š ½ÉyøxÆL<úðXe;ÚÿDN]Dz­·xÙjJ¿Z£k·@ø6 ÁÐ}1‚mm7¶cåý!ý^T‰[ííÔÿ,ઠQL@^»a#{ :xùå×ѬsìÙ½ ™¼kÍšµÆôo±‘ζPŒ~`*^$öÔÅóprsÂæ {iSOû/[XlYŠ—^›[&RüÈ~ÿk‡¨îQ‘…”‚CèÙq4ÖÕJ"õ†Èâ x)}xiç©Ij|øÌÅS9|ërMLñÄéhLÜt�?dujêËN®^0£¦”â‚«ô�Ê€¥•5%)ÉfbZÆeé+iT* Ë�4©³e°*Ê+lóÒ›w}6dyT×â— Ë�ÎõK‹*±ïÐ)9s™Ÿ¯ÂPGûè-w�Ì¢+ ú�žôš¶G­H½’!kƒ1×ÈV4·´âißììÈ5�ŽYŸ‡'2ˆ˜Là%¢®c9ZÏ�,¤ëh!&„,(û±oÌýÚ Ýó‡�¤>R6ZE …]5*)gT��‡˜”$ô „=YcűQ:a Bœ ðøô—aDÖ¨‘|h,l�aìÚBa”Iàý‰©SÙÉm¡€¬ÊÿAÿ xÌ:µåH¼¸�L{ùyyÈã ^…Íš6QX¬ådXØÝ |óÍ·ÌZ~@YåT žZG6–�é[4f̲®d0œà]�naÚ¿\èƒêèåÆz¿R2 ¨™Ó4¤îj¨àª5}Kë—Jv@ç}öY™6d̹" ¸Ã-k&;ß;7.¡ï£*uÌ`OVLtÜeáQ"5‹xn1·¾#PË4àd!ÝíMи¦c›F¯Ý}()«Ahû–(¡üv.:ôþæb½ŽL롚r¬f¬ëQbʙޤEe¥”Ú¥Ÿ\»Pô `–³žzåC´ é©0º[´VïÞ­Œ÷!gQ²F=Œ_yŽR“ÁˆKŠÁ–=›0gùL~pŠˆ×MÌ6—Î’§±!rÉü²uog+”’q—Âc*'hçÉ€¥½ËÉÎAu1¯äÂÔÅfçu,žÈðq0¤üž5B[ùÀ˜`\¯þý–ìµÄ³¹ $2¸ëJæCW«Zf'§#5½„lòJú 'ÂËÙ�€�>’b“‘AéÃÈý{)‰Ø›×Í¡<,åN}4ïé/?ÿ _Ržoø <ÜZNŸ�Æ–õk�Í «?¥Ä*`R™OVn/$Ç�Çö½QÊ ¦Þ©DDtQ’�»v8¤ñü sö]P§¸’au”ˆµ±.Výü ¦¿ô ™òiôó TÖÏI¹‚ƒ'“é³ëÈì5¸“`níÀäzJÚà©§ŸÄÁÃ'PA?Ç¡#$¼•Œó>èCð˜ lN}—S2дEÜ|üЛ€À´éoPB5—Ƈ±å0=ŠMÌPÌD„FdHwê9Ó^x ­›¹D KÐÀ¡�»R^3CaøÛÛ2¡Ä­‚Éıöa²ƒ?ïCø1k_¤‘�ÈF h¦°;�<šHIBõçúõýšJʬõ…½­5BºR943fPî’×¹ª|¾íЉ‰#‘»A÷>ƒÀ\¸ð¾ÏÍÈP~"'·[~*Ãä]$ï)­Ž&(™$þHàR‚‰RjK [95Ž�Ñkr&HÉè¸ ÿQ<Á¶ýº Æ:TU0,£JA3<ýÜ‹°±2ÃÅèX$Ä�e’�%ÁÕÈKL£ßØ\¼x�tŒ9yöΔ¡�¤xw›ÔÎÌ/#£9þ-Ûã uN?¦°ä�™˜q�lОCÆ) ‰.Y¢0°ŠÁ׌„ã¬#M`i{çgB9Aþ ¢/e§ðpõë]�Ý$“AV)þ~A·e±&ñœóãwó�WÌú½Ù%T‰ñÁk¯ÎPÖ]±j¥´†‡uT¾/šÿ6­Ù…ö­›’yÆ$Ž´t‚ +߆Àl•/&=+—hÂûÒ…,]Ö·6¯>ÇÒ¢òü¦îMÞú ¢VãD¶¯”èã•aäcÏàÄË�¢êµ—aÂv~™•-å“?@Ïžyo¶Bì勨·ëW<ôPOѳ1°mKÊcû"kö'ðe»@úBÚ}b5`&ý¢ºö gÒO–﨔þ©ÜS¥MšáR\^xûqX𙓡ÎQؘ›!0(£(gŽö!”cVÿU €5oþç ‹H@3lS—QÇ€Uú¬?`û—ïÊàèî#(ú öíV‚ºr\ÒæÑ>�'�ðúÞ|W«Û“±Œ;wêŒv¬3Ez=¢K„2»©_¼ùú;vEYÒ+÷D§°NLˆ½»ûï³YŸ* Ä"Ê�û°N�õ»UáÜ[�b Ÿ™þζ˜ºn“JœñÔ#ÿáüÆÃùþ¤âC›Þ¡g�áÎç[Ö-+g#¼÷&)la¢ÓJtbò�X¥¤Qþ÷ø O¿¢P÷œ(»«>ãr=dXEIí3g(Àÿ‚kèÇ»y5—aanÃwmø¾7d[ ± з_Œ2Šlè0|òÙgؽs'e©ý•gCÀV}ãFذy š¬°ŸåR™ÜÒ¥s[Ì�?cÈwóµ�[3G*H±d’XO› „mUóƶJ½T¼f±ÂRTë+eLõ)Nþí@9ï¦Op|k[VÀísܸc9š7 ¬Y=ø~� Yï½÷.Æ�ÏÄ�Lʵǣ±~1Ùû&dèS¾ý-¨Œ!‰m2XsÐ.sç|ËkŸ�esÕMŽÚù9ÌûÜèî€ý|>ÔòÓÄ)0ÍLµ4fŠ�´”B5¹EMz‘é*°¸&9 ¹wÍ©2#±�‹L,ÈÉJa2Û—6ö°¦Ho†ô%Šé[̶dε2&™º!€¿½�¡zõêÆß=±TJ0`bž7U|⨀µxÁ׸z%™rÒôÖž; †EET (u�8’ͨñŠ'jýë)Ç%E–©°jæð�A¶˜Ì—ïòYn·¬ºŽ:–ßKŠ�WÎUú"cÓ~VÕeë�ÕûW½ŸëÏW¿7ÛSçý“Ç¢l°kÏ>´jykßönŽY­§ë×{w³î»Ì‰SgY·:4¸™Õ+VQ~âcÉ€Üà2²¶iÝ‚‰@öJ’MÆ,Í{Sêyï^:­Ô÷Õ´x¨fRN}�U6:Éä®À—Ÿ~¨´Ag~=GÙ—;Û jñôôdù*Öÿ²ä`}eGÀqn¾4÷a�roÆù´†«ó­ÀÍÅ ç¨pô†�£löË/ç ”VW"oÙºë~Ú'öŸ‚‚Úá�7Þ”)Ï ]Û¶(/.ÃÆðÖ«¯)ëEtkÅm[cõ†u0¦<¯eÕ]šZ*‰Ù‘|ºœ]½ñIV1:†¶§LûQœ;šŒKçÏ`ðãO*ýw•d"Ï‚ YC Uz íKofú¹:Êù> ‚º ÁO” Žè‚c‘�™– ;S=8ÇâÜÅD¬üîSt# iO¦™�Qhß² ª¥”yìÀd€½Ðod†$²ä£É6óó"³¼ ÍÈê.¦¯©øÞÉ –æLbXµt¥2HGÏ�ìêûÂà‘S(Íæ€äòÆ(dRÁɨ½ô´w¼;ÕU1wÖ”dnÍc ¿€Êpˆ÷>¾þ°ðôª[N>¸³þUŠŽ b/&Ѓó<|[hÀ÷û¡oï~˜÷Éhß©ì¹l ýº¤|7o<š7çó⊴+WñóO‹ñ�°(«)%œ²·Ä—p~X¹^^XÁ ^è�Nkýö«´i`UÚ·lã*…˜Eýådºƒ#%œ ^[Z`ÀØdøé¡ ¸¼1¯¾7F:帮c T_/¼9_`éÊ�èÙ9˜ÁÒ– 6ÃvJŠVW�ÝJùàìTw‚ñ ¦Š6�!Ê® Éг¶4Àw«7 ¹U%¦>óš"9|ìÀN˜5ª�±­¼(¿¾wJõ-yOw�)™Ͻ9—õèqxôü3å“F:uìR·êü…Ÿ3Y$ o½ñiÝ´?úA¤|=ëì'0? _kDØKö>’ô¢Ê`§¯_S,$“¬ŒÁÖZ<1e< uuПÌê&ͲaA–N…¹-ºõé‹á>‚R²õ½ K‘rù ôQµb‹²�|w/ c&xd¤%2©ææ½Òë¦R‡Y%ø‘ÏŒ�ÏzhOžÇ„G™¤Bà®Q#CÎû‚y'#Ñ’i¹õMÙÆ0àgéWÊý¡ö‰ë·gjkÏèêxp™º©Ú�–õÀ¾ä4¶ƒ¼Y™é`Û²/ч>e£ÆO¢:£Ú7ŠÜ‹òK»DŠG &ТǾx)ÞK.<|ÀC™ÑÀ?é¯Êp–T»—™˜ñK~ žHˆ�O‰¦.SW‘eÔíË´ÉSB*™¶ë–l¦¿i¸ºØ-ã5k×`ï¾}uÓ*˪ê>ˇ—§¿Y÷½Ù=w[f~ø6YBó]‘s[²…ø®¥”dÛ+|á³óÚÅ ë†ÒW?„OùulOJ§jÆ)ªÌDÊüe8;m,bœ<0qÒ‹_)ë<6m¢/œP>kÿsۻ˒• ´öùk/óÕÊMTGi�'{žÏÕE,Yµœìó‹DÍtÐ�}à}d™_<™ÈöOKô'SºKX>ùt¦bQaȶ¢XUˆRÈQ&¢¼0åi<1i ª˜˜÷áWà•§^Å‹ôÒ•òÓšíʸœI‚|o,!Á�9]†›¥œ²´7¿Ýü$}r3&šø)EmËʽ©~W>ðŸÜW«l¹ãMôUm«L^µü{„2ø½ŸÞͤyl4NG&àñ1ô$Àš5•ÃÄÆŸ&4@ÝÔ-ãrZ"Ô/=øè–Iy:3”už§·EÀ¥spÉÊ,,§Ò¦öBj][DÖ®¹G¥ïß�¿â IÖ´ …9½¿Pq¡'“Ž"iÇ`eéÊ$>÷:ܤN#œ>{Þ!d�U—“¡îŠÝLp»”��µ«~@Hh„bM‘\Ô×�yþi·�ì[Šò¬¯�PÞ º‡÷'÷²mîñvaZT^Wæ«ÿL•ßH«ÓeÖ[ÎS�§Žå7 \=uú_1Ö®³Ôzì¯ØÏ_µÍVLù3E~Oùm8¶ø«Ï;êˆ&ñ/4DÓ¶_°h)NR�‚’?05a‚“ ÒÈú�¤lÿi¶‘Ç<8ö¶§5vôPd•ŽŸ< ózKÊ»Eém\…s—Õ›«ùúà˜q¸“Œ/˜Ì¨Ã>€y²þ½{wÅk¯½…Žô¯b—bd~˜£i�hoTê˜(öÑÆ<:‰g"µgÁŸªro¼ó¾2íÈ‘cuóBC‚YÏcÙŠÅ8B�R»¬aÛ­gï.´aè¨L>Gå ªq£'}Sû4.\>ƒ… g`óÎX\r CrQ"zö�ÁO›Qv,’ÉP¦â»±K·ðºgHêºÛ=O‡£¢ ^„RÚ3ùú‡¹ •ÏÚÿä™”âÀ$áq<«=‹žÚ‘´ªˆDØÚõ7æžÓzeþGά[n`ïu8“çê©-+.�‡Õ##êÏRÞûn|ŸÜ©È¹I½(E�É*_´þiO/%cß8!¶n®Ü/RÈ6”vÉ�9ÚŸåY‘ɬo-Ì8®¡šCåû `8¸½²ÏÛ]Û �=qck7G׊Kðò«/cóæ­˜Nuˆr&cé°m§–|÷HéÄ÷ÏßYä:ªåvç£Î¿—cÙ—v<ìN÷êÝì7ô6± uݯ>øZýx|ÿ ümWà>“õ—Z²`%CJÊÝHBÜaSÛ,‘�T}>$ ñ^Tš² ÉD¾ÛúÛ.Ä_°#5P ¹®�oHMü;j`“l&±Ü�ÕßφÁÖú™š­ü5rQV̳ªÛŠ™z2Ü/÷¯À¿ñ ,š÷™+GÑ–,‡;•ÔÄ$22-)ÍéY·ØÉ_—㻯>ÃOQ¦•3˜_]^¬Hlí?°^”åéÑw0vïÛC/<Êc‡v`–þ%²ü„¹QââS—�BY>uÒ5–zT“µwk¶ýj#+£ãºJ`ê$™:Nôi‰Í;{s ŠàA$ÒR’(;ٜ̆x”Ùó¶ôÇóññV$‹ I¶mJV6ä:¹QIØek—ÌA¯Á#yÝ®$«·Ø­)®ê–ÃûâY\ölFà¢:p8td/¬:w„;=È,Éþ›Ð)Þ­ƒéÉi‹å³fÃÜ¿ts“ñå÷é'Úí;²³8qNÓ³+ ÛöD ;=!Ì…ß²sÚ0p`ïá[?ä¤gâ{až”®Çh¹Óõø;ç-™ÿe‘£°iý EúµU@0>§Ü“—OS…%z`ó27y�›*‡uìða‚PÁȼr™Á0 {…цޗÝèaæA+-á"J)+Næ[jÂ9{ ™¼ͽìИ´¸„Dä1ûµ¶F¾¹è�, ÖÛ•òŠ"Ò t‘ÌDÊÁmî;—£/�—L¶•{3…1aeJ†±Wk2ÎâÑŽ`¾.A•ÀÐndÏX£*ó ‚÷n‡å>Ñ nír¤Ôï·ßÂ�¾k�ã`Èà`ÏÁѤ§ãáߦ½âÇúƒÊ탃É(tà}Ï{‰¬°»)®dìè“aÕ‹÷Õ³S^„“£³âw£½n)¥€SŽýL‰åräTWÁ‡’¢}BÛP‚øB™p¥ð½Xkpò\4=9sq:: íšZ#°C7lùõl(9¼|ýÏÐ!z€R�“'“ñxôbÓŠÈP¦ìÈjs%›W»¼ýöÛxç�wî(L«‹`m¢‹2QúŽÐ�nÞ-aL¶nO[üün ¼ €³vÙíQ·É# |½ÌŒßyß,Àl‚ý[Ö¬ä1Ò«¶ë7'…�ØžkFr,Nî£ìh›þÎuëßéCï.ôø»’�(‚F™Ù”lå5ÿ~ÎZÊ•ÇÀ£)厩"`O¦�›³�Ž_É͇µ™½þ\ŸZ„2z’/\"kÝüЧ¼,ÃL�=ý<Þ¢Œ¸™Â:ƸVÄ௳­a¬W†Ž”w;p&-zŒÄ¹ƒ?Q=‘Ò´µÛ" MØ99*÷•¬£õÀ'_΃Û`té;„÷w-Ñ·îqþ¶™d ïÙ{ ¿þšÇêŠ7¦>É„üºc)>øðk´#ë €LÏkÔ“ï"ØÏŽvú¨©ÌC—žC”}´ ºLÒ'°à× aô R‹�ÛÂZ#w'ÓÖ. hÇ8ËJ²ÆBB;*õ†™¹¦ífIoÙ÷ 0ý2%¬‹pîìQ¸z6¡Ì0}„É0ÎH¾LÆQºvîE™n2È‚5%›É¢„¾´&0¤2ÃeÞë%”Ãî?tB;t$¸*ƒ¬’ýK`CÍ&—ï’ݯŒo0[UF 2±Þ¿oæÍ%£ú=�sP¡o ò +Œ1¤{XPmÕº Lrȃ=ý~Þ{žÕK›ô’(åßkàëÔž¾²a *Ú»ƒÌC´%“M×Ê�LæÅ¨¬¬¡4r4ëºRôoG�Às?ÿYqg“}�>e¾ˆŽ9O�òÖ1p¥Ok�N”V‹ë„?[&O�Dvu’ÚÊ6ÚvPÔbD"vÍêU8u„R¦·°[îf_–¬çŽŸ>ŽfL60c�ضUs8°߯š�AôT‹OHÂŽ};`GfizR6„Ó|&â3®Âž®‡;wƒ;M®1%? ô 1cú4ìÙ·Ûwî&+ß§O vò‹Ð;¸¾ï|~ÛÃ’vHŒ¹)ÙцX|ù*f¾ö,²2’Ј÷N‡”‹pØ»•ÁÛ£ Ë@�~êÑTW°aò�Êòv™ôAÔ~‘º#ݰÎz®u2£èTבeäž ßpþ|²Ë�È´¶G9}ïÌ›µS6!�O٦ܗÒ߆‰¶ä°ì“÷­Né•…%§î·¡±C 0s©ú]YÕÐ"œv“ bA¿`W‡ô~›eÙ&a›(-!Óž{‰²ën»ÜÝÎȤ‡èþðà¸ÿPªü,šð�²~Ýtˆ½]*\h¹ŽµddȵiDiþ¾�'auéS^Qæ×�UØÙÿö9�ß^úô¹DÐ>b(RRS•w°º¿A�xåÙ•¯ôú³!ó(3ý*“ ò±{÷N²P»°Î …‘u ž{âe¹Og~‚Ê*Öô.È+BbR F��§¦‰ 4û–¡}€XÔž§~Vã1êý¤©›4rД €Î’ ,ÚEúÍ,©’�2O¶#ÓäÞ&�´Å]]5íl±p�2zÐpœ‹ŽƒŽ>Û]ú‘­k�’êJlÝñ#™µ}”e´ÿ�$z玵˜ñþÇÊäÓ”+ÝþÓu¨[LT²W/Väp ƒÙ~1€Cbœâm2i²Ñcgå~öæu–’ZŠÜœÙ†É‡!UM6øP6›j;^ü~…Làvd¨d!ØB¿0ÀÙ¨epô«j‘ÇD"+zÉëV “ud5·|)é, ˜ÄSÁ„£Çþó$Ûq)›ï…”h¶‹üaù+Ü2¯Ö±M`¨¾¡Š&÷› r µEeñoV9^Y^Ö»®ž“ŒåwTc)ò¨¬;íeþªÏRÿ¨uRýçå¯Úç½Ú®ƒ½bìþðæ@IâG7ØÅõy¯Ý°ëÖ¯%«Ñž’ÿÍq4r/Ùš­ñÝ¢%ì븒%j€fL°kCMåÖy‰— ³|~ÝïWÿBH½°&&mÚÔŸEKT±5ŽýPI’:`룛}ì¹ßÿH…!O2ëG“ÉMÕ;¬]ºø7ÛQ'<²ŸÌZöߺ©“êÆbA Eêa±ªå<“^öí݈™Ÿ| '§›uóšŸÓ>¢ (ë.e×ÎvÒ³]ó.:¼ÿ¦=ý¬�Ü0oö\L{f뀫hS[‰�T¡©¤ºB!AŠ™€çÊþ}ægo¡èÍç S?{—OÿÍwœzϾø<™¨WÈÓÔQËW¬’¦è-ÌTyïþP¦¯Xt4'Óý³Y31wî§\Æ#†�¨‘£”ÍI¿¥~ßEf¤&'3iñae™úÿ¤WQ̺XêáúEõ�•ö©(`h¿ÿeY¹—“Ÿ�Twˆ‹öûLÝž¬'õ–ƒüLkó`c玬ô8��§kJ¨6° ðû{Ǥn£¡±öûEžgàpJ¨I +Œ ÖàßXÕmRBì½?¥$‘=#¿£TjÌDGŸÆ7_Žƒ"Ñgøô{ˆ²erÊŠóáB†YH`k„vé}[€Uݾ%HçÏÿš WSéÕÌ¢§œÝ#”9Ò§3ZO‚¸š’ŦCÿÄõ‹æ ò×u(ËÌD£¢|4sw¢çÛU4±ÐÃÎãÉÐŒ„ia&Ü< 1pnÉ@ïw;ÅÖeËxüºøuÓjEJ®1=õR(G´zÉ”/m¯°ÞÔc*¥´g!�c‘óü¿,±ññ0¦|žYE&¼(CÚ{è((©¼~ Þþ¸J†d&A¸‹/à�瞣äe † A ¶ï¹TŸÜ�’m?#‘)ÓM\ìhÿè�þ["�¥–¦îˆÏL¡¬�žJÅ©˜DJÁ‹ç'½A¤ôîÇ8æ¾úä]të=à7—AÞYLjH"J^»j5å7[(ë™Ð˜¤A=~úf–èEV•ncS…¹gFÉàŒì\XÐïÀÀì¬O>G¯Î½Ñ}Ð0¸z»¡ÿàÑ8|î â“¡ãÅßó|,ôèKšé߆ý‡À‚Û´xì14òp¢WbªªŒ‘C9kÿ6Mpäƒù | 8€LðߜÃ�&xSŠ5;-Éôþ­ªª‚9ÙºÚ%?7¢OГî!4Ö-%ÛÔ¦�®Ó+ç =;m({lÄ �3Àõ¡gN&]z�oJˆg¢œŒÓç.ÁDÊn¥0¨üèĉð¤gg1¿Íš8ôD§~£(oO�I[ôN¬†¾©½6™èV¢0'‹¾µú?9m:ϸšŸ�ÊŠ2tèNv§+6oÝDæ‚ ÷[‰ËdÕ�ù‡ÑôºêMUñËè@öá5®Ó��í‡�„ñ“&QJ·#ò%RKPêñ©ÓêvëåíÍÄ/ãúQöÉúz56~*.\ŒF6ý§M›É d‚RR¯S¯¾ÊzWY‡eÀ”©OaØð‘øðù1 ðR~Í ¾™M}Ùõ™xýõéü}+ñVíCCЬeK„ÑŸvéú/ÑG‘��ðij|G*+DYY¾Xð=Ù¡nHÍ,¢Üñl<2e⎬ 3 ?ü°žŒ=}5ϘŒ‘hkÞ('öï$;—ÏIN>~Ù¸œ¼.Lì ¡×”mÉ籑Û×’9V�¦m;¢Uhúã6¡ä\*Édë‚J¨:9{ ‡²Ó:¼ÿNœÚ�Lz w לû჻XO¦¢k÷> îü&¦Ê«Ç$�gU¦ñNíÜ ÊQ.X0Ç)Óeëè?>[©ôó3aп Ê€žÒþعõzÐ/² ×(¿éëKyÊKgÖUyÓÿY˜Ì¥LN8}ú, èlÇ÷n·�Éà_c3[x8™*,d=]\»V€,ó™E×чõ�ž¾.YtV¼¥¨Ò5ÇŸ¥žï^«Üçæ|çßM¹x]ë7f|ÀªN€UStȘŽV”éï*å#ÖÁÉ~ ïxäÕ,{ëÿ²Ñ³²’áÉgNž“J>6õqÇåÓQLpÁ|Þ3“yÃ Š¯^² ]BÛñùe‚†~-ŒukѦˤÐ㲤²vš ®wS?>KCІàkóndï/˜ WÊKKðRú®*I[CúÚý8ù^üäC0aDð…Cˆ14ÆØç¦S²ÚÙv®eÕ1å,rùÈ*E‚�²MÕ¢F™x㟴e0Qå÷êKúÊq©Gý“«éY\FE‡Ô§*Ç+ǨFe“²¾lO»XŽš Õ}hÏ»Óg ÀË}}„ÌŸ|¦ûÏüF\ò%2Bñü[©ì‘K)G×[¤µ·9tX´¥l¥øÖFDDhÏúSŸ‹éC;óýy¨=½üîã ÷Kg ·~å·§`/,*è‹ÎgVŠ6(v7ÁRí{aìèѬtn °»1éF»8Q¦³KxWŒf`½ëö¬´dÊWÛÀ±‰5<œ›PÊÝ£G�¡Ï:Ûé|¯Ìýâ+Êße[®ÖX“ÒOÃÛ­Í-«´] •{L-*0¦ÖOÒ—s�e¤�£}>ê:20©~ Z½¿4÷C„öâuŸmíl°’ Ñ*2—GÁD0G`½xö0¦Nè@oõçê–ÍÈHÉ“L„²r@Rêeúu Nž>ƒAh@YP»®5IŒGßѦ¦–cr�*NCÁwú±ª÷´üž$b—g?8ÞÈ–ï‡1� m=+Ù¶’òk•ŠŠÑ' L.^̪Œ�·tf"�5Ù·wïÁœweÇ‚¶)‰è‰0ú{×êÀËÑg©®a©s�^ÒÙ¸N{!˜–£ë®Ã €*Û–}˸!‰_¹fmžyUIÈQï=YVЬ×�G«fîÍÿR(.¿‹ü~·ûín®qo?iÚÄš$W©�þí²›wsuäyïe©Ÿe�ë~Šª%™éélCÜûîf[w³Œ€Ã®ø¡¿ùÆku« è×K‘:€UÊ®»°øÇå?áA&KjÞiì;² Q@ÕcÇŽÓ³û h©ðóÏ›qåì)”Dí‡'•ž¤.�ál^¼Øà+«ûPdÒ§>ÈzôÐVZS\EÛ ûvn¢‡ôÍä7å@øïŸÙ0&ޏÐ.åßñúL›5ûkŒx`¨º®\Œ-ûÖ!�Ïß‹ó¿Á‘#q”¼§ÕÃÊoSgÕ­¤õÁžI/ÝnÈ·§fFÃÂTÓF‰ëÍöŒcÝ’­Z·FkÚJ˜°O})šuÊÁC—d\&‚„·C+Êéþ´uŒÝ,‘Dp®‚í墂\dä`ØÐá¸jg‹ÂâB#“D�|çi×¥²ñaUVùþéçŸø£2––ü¯<—¶L°‘ÁŽÃ,*¢#ÄS´Ð�Ю¥b³Ü‹ðÂÅs:l¤²\Cÿ¤ý‘GR�Ô!9næ8ÙÇî²”Eåx¥¾Tæ«Ò¾êv4ï†Îum"ÏÑ¡UÀ-õˆ ªëh�E•Qõ©ZêµHýf3rÂ-mužÔ[* [ÁX{ýkª.WPP |ôòòR'Ñ–Åß7�mô£LÜü•J?”«ç5U‹€«w°ªËß‹zS®£œ» $ßM»AÝÿ½ÿÝõÿ½<öûÛºîtwº:7æý›*€{QñÞÅ%ùŸ[D;[[5Vÿ».‚IÔF€48¤�ðoº'ºN%™Iðì7¡¡Y÷§Ý¿¿¹ÌÔ'³ÇÄÞ̪—A@VC '81PÝŽA"7o_e��±w­ø:=E¹×�uûÿtÖW8vâ;5AÊ4ñOéÖ­«Â¬}zÒCx䉧ê–ý#ŠÌO"#ÎÖʨîYŸ¬´XR"-öâIzCzÑó:\:ôWû˜@mgÔð{§ðN¨ÌËB&;-¼-QIª][J‹{zÿØÑÞwƒÙF d¡$玃‘x懵OoJ!µm×1ôû*.,…G×>ÌÀLEM#cXST§EG�Ãè¾í¡C¦�#/µ&¦hL±¾{�è½Ú3“xźMdÔÂT¿1N=΀z%iÍ ˜YA·¼‚2“…d¸ú‘•t ÈZIQeEùÿ)ÈêèìŠ]»v+Ò�}ºµ�©�3ý@5A‚²9ªDÛµíWܹ…‘¾ÆxæåWPBaá'oaÛ/kQº|1Â’Z1XÙÜÃ5Þ®8~8 U0D¥™ ¾]G Z×Q§Ï£]sthíMÖW(ì›6Å(z×ê_OÅþýQdIº¡„’§®dß©%?å®îÛ…Ò-ë×긞zndÅ֔Ó­øl^½zü¸»n[Á ¹xrÛfNpõmç&mÈîm�3ç£q– ²œ‚*Të™À˜ògûvlG&8MÆ‘Ž.®f^F\Z\mø›êÐG4MZ·GP�HJL"¸tšÒÿžuûšýù'øŠÃ#ÆÐÿô”¢H!ªƒGŒ&£óY>ÿ�½«¯âÚº+$!BÜ=!DÐ’@ÜÝŠ(u�¶”Ú«Òu}¥´¥-®Å�@°A"ÄÝ] É¿ö\&\B ”¶Ïþœï»÷Î�9sfæÌÌ‘½öZ›m$]N 1%åå¥È$¨¸çVÊî’md¥™´— ŸqIƒë=ìuË]ÈR æõ¤„,ÎÎAËvíаþ®/„…el&{´0Ôå;fÑp3c§è¡£C‹NÞÒ2i|hIcú‘=ûaÚÂŒõ™„VÞ>˜6óQ4#›l×î˜2óA;¸ ¹9…xtΛõGèõ£´) ôLeIŒ]DÃÁ¼þ�‡3ŒÃ»mÃÊS^tôD”’ͳìë¯1” Sc}$[ ‹ þ)ÑÛ¶�¬�5l ÄË{:fÍu°uû2í­•X¹ŒÃ»ƒïgØ�½è@{:ƒ“å)ñ#Ní§ó�Lè|ðÒ“Ï3NØ}ÈÊÉÃIÃsæ ;‚”�s§ämjjlìl Ô“ m5�嵄ÐpøïÛT¾Ÿ7ÞKíŠ42n�¶cCzÓÀˆÊ@IDAT*òp&| vì\޼ ÆŽ#£>¬\MQ«W޶¾�ÑÖ¿™Nè@¹÷àÓ�÷·²ósðÞWÏãðÞMI)è¶m»1ÖS㟚£š€\kyÏ®!/'“qh[( *õ<´Ç–²NŒHbDæ·3 I¾kŒ£•——� ÿö()È@ÙâmÈÚ­«ÓQÓÒÒDÇÄÁÍ“q,»úÓØoŠê:=Œ?I‰�¾“l<#²¸½Ü]sþ4�Ž}Éjµ¡1�LV½æ”á;Ç{F£bw;Åó6Á±ˆhäç$RJÚ‚Î7é>„ñH--èè@`ØÄ °¯§Ô„Kì/lq7 «¬K½H§€00ú}§;>Çyï�³¿²q±"+eA·2™=”�zÚ¿{Y ���]p2<?þü&LÙ¹hAù}'/oÌ|äyL™8Eql8JÃ×¥¸sdÚ—ãrl~ø´ €5íCçwãPän„ú PaIåˆèðeÈO C@è$¤ÕI&© ‚, ˜ r28С£*¨/LÉf®f;@GŒ’²T€U–e"†úÒ_—Y]­ˆ‘޲^’ì#ƺÄ뎡’×uI¦ööEåee·4&×ôÈG’SU€VŒç*`«lläK›©ÒÈæúU"¼˜« =¤Ä˜¬èÑÙ”šî5v2Ξ ÇN:… 8ŽŽ •tÞpÅ}\ßXz—Fße‹—RBò0Š*²Ñ–,ÎŒmùg’I >»®v0ýàXQb»à›�Ð"1®¾H®T#h³ö`–�•Ô0¶¥† ŽŒ©i¦ch7÷5Æïîᣇ)çø£2¬/¸Á‚¶q½Á¦[þŠ¡È�á4Ûcì�i ÀšUp&F¶U<лgï[öÑ^qáÙÙ›×BwÿVì­:NÀö,LÉÄÊO9ƒöM©/>£<·*U æê3-Ï“<_w3–< ëB³ßï³€ÜÈŽ™L°BØÚñ#O�E;¿øÐ‰NMééXüý—d:²ÿ~“õAE�ÀÆÉíªd)¥¤üᵫaêß é^Á0½ÆõuøÁ¹ÜnAíŠo`+¦n&¹>IÑæ††+¼œ ­í½�:„qí[À æ"®^ßžÉþÆ<´?:¼õ.JV|§¼W;rÊ�ÅøôUŒH ù¼r ›1 ‡8ÞìÔW VåÑùËÙÎ:£v&ÓÖÂÚ¿®)²¨¾fh¸ú;Ô^¾ ÛéO†2lì9™Y@´e5•æ—<§ ÷Q·IߢýNßÍýS÷ý»~…ÁeÒSaÝ«íä_4ô¡ä§•:0$ËJ’÷ ¡3ÂöÍ[ÈLÏ`hÍüö¯:×µkÖr ¦a•Ÿv}ÜzáüE<öÀ,ä%�BÎrèÔâÓ²ÜZú๼D&ª½ò‘cuf(«¤‰3fpœS�:³…ß`¢š˜èSN_Ö'N`ÁÖ“ÜÇ!]:£â™i¸züPQ joi•ùÚqt í¹puhÓÈV(«l°!`*«¤¹¯¾�9³ŸD Çý—¢/0üÀ ÝàŠYO>‰ƒ!§¨ óF †+�¦*ߟ§Œé<>[¦ìÛðë8¯AâÄ6#;scÏZ0\CÃö2‹m[;:Jºï¾IËñ¶š$Ž}m�¥ù ÞÀª•+1Ž*�%{ªmz¹¹�’Å&Uñíà9ˆs˜f #¤ÝÐ8FhJ’sÔœ§ Õ»|^w`*ÀáÕcÉà]@ï­IúJ›N9ê8GÚ(SÈvÕÙE-A¶‰cˆ8ˈ=XÚ‹Ûµt¢ÕX¥ ':ÑQçHQJkNÛTø±£ óR@…œ¿öÝSÏ÷n~µëPò«ýíÝìÛ”§©šjà÷k  dýý:jÊñÿ¼d‚§‚œÿ€Sà•ã7ý7ÞÛN½ÿO»éœÿ kÀÀ°…°ª§nÇI•!Áù¨I€Áðð3Šñöì©pX¶hŽ¢‚’í´àã�Ð% „ $2¡ú ÀyL)ÂÈÄ\-ê®~«)…(ɔlj=ùY™°¶×LîíÛ6à·í ôT²ÇD]æD¶–€è!–§££·+ÚuèB–X'ô$êíí…ÑK"ÑÚÕ CÅÕÆ.­ŸØ©Ç€ÕH· Çî˜2ù~¤äV(­ÙC:r_]ø9 çºp3kŽ™³G+O¤�Ù—@¸…«¥‹; |ËrÔꡪ ÷ÏÿÍȶŠeüšÈøDDEÇq‚—BP&ï/ZŠå‹¿BscÊå£ cŸ˜Ô• °¼—Òó�@Yá~nHGé7'Mëþ©çü¯ú-ÌËB%™¨ ÃÔûgPN7�Ϙ½²n\öš‘©y„à@p·`d¦Dáñç^W$Û/�=ß6p¥c<'ȒĈZ¥ol¸$:çŽ�DjB"’róðÔœàíjŽ]Â�’‘wßÖØOV2èÙ}W­;b%Ùdí;à©Ù³ ž×­F9çPJ¯ìJ~TYdžu£¬²þT1°††‘þí(éªêd½Þí)itŠå8Sö8-%ÙdOTçàÊ•‹°£ ;JºÊGRtä)ñQþè£_Qn’YïÆuYd‰w È×jªÉðw�—n0%à\[^„?/AãÇ¥Õ0¶¬.cPàím?-‡ŸAO¶KŽå=¿€ ÑWðÒ¼Œ×y’’¶N8us'H`R‹¾CÆÔ뫜ËY‚¬ŽN-�µk·žÈ;ú=þùY¥4Ü=ñð£x÷í4PSÂÖK¿_ ‚Š Eˆ‹NG4�³`á;Œ/Ý™±E7@ÉAŒÄñ„I‚B)‡ß ýûbï–cŒ¯š RËЦMk˜Y¹Qnïærj›a-Ùȼ?âL3¡Ï(wé�´ì|ë0óÉvõèQc��­HC~øÅ·˜2eŠr¼¸ÄxœŠ8»Œ”ú±­l¿ ‰*ŽöXóøñ02dƒ1çÙ¹ÐeûH[ËV­(}]‡˜˜ä1&xÿ¡C!FÕM›£_‰>B»‡  #›R•Y8»{ Ï-è D6nn.ûÛóp4ÓÃiÆÆºx%–eDѱà2Òyn•%d “­{œe¥'g*,×Kaa|[ÁˆòØ£ôÅok×2ó/H¸MiÏ(J&£˜ÎiIqxqÖLL{ð Öï-˜žrýòu`ý—(ÏŠ†­•%ã“w" $6Ž>õÛÕ…]d¥Ñs V×ã=Êúnd:wé€3d•l îr[€Uòó±FAzŠ(/ž…`2^«z7––-½¡Ëv¡€'"/É�FÅvmÛ£™nsJ[1Þ­>׬¶î~õ«’™_F&–pñî†-¿þ€s”v-Ò+Õí U G]ÿ“®)l¢tàóù°"ƒZ€ê¼GÍ'Jq2U�‹Â(-.+µ†”Êð�þF›µ'û ð"«ÄàÒ°kW¨EÖÿªFLigŠڨϨµ GömxM²NŒ³²þ]œhe‹ÚñÑ«÷L¶“®èÊ{&iþç ðÀ´YWéÀС+ÙŠšzî3°B‰èÚ[É'_‹—|…¬ÜdÆ>ˆÃÇöb\Ÿþ°tò¨ß®½ ý†0}%„�nöj^‰¯©y»ý”¤, v˜ö(ròÓ- ó ê�W)Gî“Ùó¯Û_««3T ê"a+Ož©©V3žêdíÏ}öy|øñgŒû×U=üŸúU%1`Ýuú]tô¼ÁøR VëA5’ËÿŠ…/à�E9o»èl˜Q¢ÙÖ£ô’ó�8ãÀ-õ¢´Ģ�Ó$§E£¨$æŒYü{IÚµ†÷ã4hÞ^ð*†S}C;Í[8_‘Ñwf/é‰)CáGÖ\[:V¨I è�><›Î˜!‡ó�íúçd¢Ïšñ ’¥ ¤ ¯­XŽM¹Íq˜RöGJŠÑ®¼�GO‡^^:Ìâ.ªE)¿2&Ì1ÐS@‚žNÒRSÐlß6²�”$Û¯¡Î°¨´.‹ÞUÖ%Sõ!’N?Ö5%ˆ7¢bE3c޵ÊPNGHƒÊBJ²n¢ÓF•¢À £Ç¹‡£;ßZ]t¢á¿åÞ}ŠL°¬-Ì&WÃ÷_yÇ(Ë,�YéšU7=Ê ðKû=”eq’�r¤Í¸ÛwZ-ëïþ•û_¶ßPÀb9WaA6ÞËóÚðYù½s«¢âL·Ý¥‘ßËûïÜ.àjšñùÖŒ“å\}ý¾üf)ÆŒrO§öýwß!"â b““�Ï9ô,:©…†cÛvŽ9ŸðgºëŒUí,§Tï9Î3ÂOœ& ü<Ÿ3ž—£½2–¹ò‡¦OÁÄgSéaÇ‚áhMçÛ¥«~ ~}0zèx|úÝ×,Nç/R¥àüIt½º¡7ç¿ýzwE•© ®‰3ïÅSì¿G°pTÀÕŽü´O£~Y�sßÑÆQî|ÿ§²Ø…¡^n—.ž9‹Uß}‹^}½Ñ,*‹R6Ú·ë³c‘õùŽ;¤_TÇj&¥.¯;r©ë¤î¥¯- ;h¨öýê6µm’<°Ze|«­Æ!Ç‘cKŸÓ°/–ò¤.µó«u¥ã÷~;³0³6þ=» Ç¹ŠX� ¾·÷ì÷Žu·Û5c| ÌR§ÔÇmëîö8Mùšjàÿc 4�¬ÿïzÓ5ÿ¡PANÕêíü'37xU£×ºí[±î·mdŒ¸pRùÇž?yJM»7ÕÀ| $g#òJÜo©w:é_V­¤dÛ»´ÔŸ±£áÙÊ›BS´"80ûñÇ”x…‡÷üŠî];C¿¹!bÈ.FKAv*œ=oÈAÞéÚÛ è +«¤ð]¿‘¡âø» ë3&!#�q˜(ÍãíÓVÖ¶ö¬¯ŽÒ�¦ð FK7g‚ÃYhÕ!€ j[‚Yذf™ŽUðoëLÖ ™dI,ÿy :øµ¥¬Æp¤}nê²~3ZS´’�™!cMjι´ªaê⃡”}mA©RÆ´¢’Ykþ~p!|?e³qô¤05-pŽàu`ÿQ” õ¢�ºÒcNî…®dc¥z *}ùÕ7èÕ¥âÈ)k¶û/½úcðvÀÓO?]°*bÕ –ýF)“lµÏP+*=)«¾ø�{õUW¡•10vëX `U7V×\EJzN¢¡ŒòÎk–~Ãødµ0¨+ƒ‘—åA«‘wv–F¨!è¦G ¼u;2íÈr‰8v ”®ös7SbtJüU‚d^gZ�É'à꽬r~áŒ}fGpG� Àz‚@kÊmß.µ°r†ß�€Ð1è5�ÌÇ G‹Vmƒ¡kë‡Ê殸öÚ³8õÓçʤ3}pW%^�L¼Ë‡�…ezÕ$@«™‘Ñq”ÍH¦ãÁ§”.D;=Øme£‡ Žd;èÀÆÈ�„gdåQF×­2{´ôPŠz|öCdEï¢ *Y”Ç÷ã «ÃÇNPSÿkM¦Ì”§žÄŒgŸÆÌÇÇÄÉSé�БíBrùœ,_ú=¦ä uå§ó±ó×ÅJÌJ[#à, C#zwÇì×±uœؽu’™)’Ü!Á�ˆ‰<Žºr’¯ õpvßnìã=,!ëÓƒàÎÙ‹gIã}ØÁ|ÇÛbçšopä·ŸÐ{ð$XìVS�3?¯ø€1{{á*¢÷¿x.4˜µñõÇ`±ý‚•¬*À*b.œV˜š—/Dâš�â.\DZt$ÚtŒ¶�û`ÁËó0�çÀcp…žëùÂÈñð$(ù Y ­è ó9èPUCg“Óg0ýѧàMI5]{Åöà‘,„ïU¥ˆÏ_ŽA*e¡>J€³'ï�<”ýV“·o'`•ÿ:[¹ÑÁ� Ø¬‡ǧ-DZZ cRMâsÖ{Oí¢=ÐŽ}†'z÷í�o¿\¢ãpàWËüü�WеO?åoqÙ—Æšq[jâ%ÊGÛ˜ì'‘¬2|$Œõë(u müz2V©Uø‚j¥ãd•WÔ?q9Û·mCs�<�€nÝ¿¹%Ξ>…7_›K VÇÈä8~éÌíšcPïJ)”—–O+�VH °¶›•AˆÚжNãü£mlR�[s+¤kÈM’Ãi4JEž9�€v>Eë£§Ž®>lÌ”¸]6öÎpön�#”G+ÊË¥¬óyJÉo£Ìù˜6Ã)žgY±®tZ2£ôsVzœÌ®R ú”˜nc_MÖ;?•théæ‚¸\=Ô0N¢Hq�?QgȺ¥Äü�¡#1yêƒdFg#–€mß@od&Ÿ…¥�ÇM@ëÑm‹©bÇV(ã3ݲm:ö˜±LRÒØŠ®ŸIá·"99Q11ŒmîC¬Deoô—–f ÀêHÆÿ»ÏGÏn½”ýÔ¯ód^g±¿¶' giiÉçÉBùôê;€}oGP†}ÖÓ¯bÿþ}èÞ=�dnk§¸+WpñÜyJf[ÃŒŒj;ÊT9pyå9p´Õ0¾ÅÐ(@£na²_{†¥%p'þGS‡ºj,c¬í´“dhRÝQWÜ©àƒàÔgBÚFdé_ÔÿÒ«i/% ähoSU^nhª°|䙺¶¿èZZ29Ö aWàVÛñ»=¹v5ްAÔNù¥‘ù°y%N¶·Ã’ŸOò9iADzÀ‡ÞT¼Ü¿€�7­“?ÂÈT?ò_êÚððNàhÓ»?�Î.èÞw¤lRÒS³§!výO°ZþµbÄ€PêL>��‚²“æþ‘9Ì<�%®­æ¾I€ºÄBêL1œÓá¤hÍŠ*‘’•�ÔŸÌME>W)†àªÞd|¾"8Róè±0´梫 rŒÑîã—y8�‘ù*ï­¼õº4³Þk« °ªÏddùE¤çÅÂ`_AäUŠ‘<çÈ$ô*�V¥œ÷OýßD*œ8àZVN=à,Ä©Xî¯Ô�j$—_yæ>+‘Qa Èêæì{O—‘‘‘®8ù2^ª¤ÜŒDìùõŸ0uðÁ¨á#0jÚd:H¤Â‰ãšh‚8ÞmÚr,`¯ä ;°]ù5·°Æ1:>U¤Ry`8AÎb”‘µäeg†…Ÿ}Hp©ãjÛ£’`S‡„‹èX[ Æî®MOQöW¿äžZQ�Ä»¸BYåL Å´œ�2“¼OljÍ­(íYœ«¬“/óŠ2ø¥ÅB¯•J9V–1è)2f/R†ÚÝÖë6ïÂe†tðva\s]ªä¡¬¦ú”V5<ÆBÊ­ÉÉWX�òì Ø Ö¹”¯>˲^ÎOÖi'É+L/ÙW]–ûÔpü©½Ï¿{YÞy¯ä·±gJì/™Ï=¬Äµ¼@åü¹ÊÁgbŸ åðŸœ.œ?‡Ç¦O§sZ*U:(¯ÛQÃíÒ¹�MeÎûGÏÝ«/cåŽ�xrö,*ÔøÁŠýÞk¯¾ ŒztïAë­ë'_|�O¿øÕå¥p ‹ôØñ“ÈÌÉSyÉHu&Ü™ñ¡%u ôÇÈáC8î ÄêŸ× òZ ûE:Çtì„ãgNqŒéŒ‘ƒÆ3LHUƒªàÎö®3óN�q?Îp¬¡ß¬9>}—rúXEEÆ¿A˜ õzÏ^8��éPóæ‹ÿPVefe(¿þœóªIž—'ž{2GK`ÿé:|z½ú.ÄDˆ±ä>÷ò,©qD5ïÙÎìKî”ÂÏ—;¼\4¬àÔ´t\«ÓÁ�Ë—£¢²…E9¸pþã`×Qº·3>þl1zÍzžÕœ·vù±±±Tà8ïŠ?uuuø€ª"ùe9(¨67 h‡tŽÓÒÓQHÅ–ï¿…æTþiw™dðÆ§æãÑG¢ý¡5Æ�‡XÆ{¶fœÑÆ’Çžk\‰¹¯¼®ÄPö{C‡#Õ‘CíÿÄ™¨º¬ì–¶EÊoøþÝ vjœ¬¤©[é7å�Ö–V�¡þʘFòÈ9©ëä8’´Û=ÍMû'cIj,ié�ÿhjÓÚý:aÃÚ5xã­ùœskú�?Zνä�×ðKÒ~6äY•ºÐ^§djújª�¦øS5вþ©êkÚù½T�S�Äþ«¯÷vo[ºŒÑt�²�Zÿq�ç_}MÇkª�e •V1IÕ]ƒ¬dY…vïŒXÆ1�<m;øSºÒºº´6^O6V”4¡ ¡=eybݺ_1æ¾iêæ{þõæñnX¬Âà’�œWáUJ*Yµ ‡m�´‡�xþ8ÖmØ/ß6d#¿¤'"® ½·®PV(öòEü²|=iX9|x?ì­­°}ÓOðóº#ÐÚØE ‹õðÁ}4ÐÔ¡*å:…t…5Á ñ]zS®)”ƒ³¤ÑMMV~ƒK‘W€T�ùd�çc�EfUuE JÈ^xíãEpÍ¿ ]kg”\Óƒ¥ŸJû‡b_LF�NÉW'²ãlPBö�'²b÷ÔcÜJ}Ýj %xv�`Ca^¼ÙæR"Ó°…> ð·gk56i2¥”‘³GK‚Âd5ßE2Ðo޵E°¡±ÃÉÝ^N¶ˆIHÄD_µÉ’[›Íó-¥1ß±Ú_³²ŠlŸ,ÔU�fãL Á:Æ=5@Ue-™z7{�Kÿ*©±óT64ø’üŠT'»29®ùpÞu£žÆ`! Ö;¬jq¦4†j'a-Úµ„qr ,"#Xæ*n®SΫf×özc¶áŒÇ�õW—íÚá�×Îdƶ¡SÖÍàF¾6^.dò^„AUÙä�àÐ2ud¤ù¨Ù¶gfýãmü›×ƒl§Ã×2Ödc$M£‘Éß/ù=5G‘ûSÏq/ã=y¶RþN=–±›lÕMʯ€jþdJr··`˜ýÂó…5ïÚÉûQÀgLÚ;[ëˆ#k".6šõj‚& cÌànð쨑W[Nyá Œƒ„æ&ظwjê®a4å†%u#(©&‘Ôt'kÿì™3x�LÕÁÃ5`µl�;ðîŸô æ/XHDwÌš5WÝ�M‘-1}Âtx:˜°Íjü½rá;gF£ãî={ÉšŽRâºJÖ~²?~û1ºˆAšŽ*’Þ óÄ2$ºvoI£í >¨l ;z¯¼<Þ-]±ò»_(kl‹b:~Äd”a`� Öâ4ÀuÕµ0£CÀÑpÈØVyð]ìÚeŒ…jbØœ,Y?åùN73@¬™�áCÿ˜¯€Ab$W“Œ{µ�…´j'k:ú<9‡¬Y2ùR3©Z`L¶T <\,¿ÑçÎ�ÅÑÃdD]„½ YËîNŒÙÈ禠>.vÈ$«‹Œ,œ#ƒ*�¬,sÊÙ7·ä2Ý�ô�áÊg¹êÚUœ‰¯à½·‚‘±)™àç‘E÷Áãt04£|¶/ì ˆu`|uq8ìØ©3(¡îâÉÿÀ4®J2fÜHù”œ¸}­; „¾‘9ã¶prk«¬W+K)[z¹8â#ýÁŸRX¬ï}ò6�~2è\ˆ3çñ}÷zøãpØAüÈ:›J&”v€U€V?²$‰#’|Ô$róKæ=‚ô²f˜0u¦ººþ7ƒ#ò¹’�‚â¼ÿú+˜ÿÚ[8“{3Ç?©.Èþu…¡ è5c?/`Ic ˆüb›>�›X í…*Ãr$vé……gÒñ 1Lb|l(ݧ1Hj:íýë—“÷ññTÀ 0D>±¤´ÌÞü>Æ–Ô2JêºzV¤$ŠÁRe_Ö—q— ÒoˆqPýÈÿSŒ üÌÜ—1iÂX´ö ‚�•“òÙ¸e7Çf;~T‘ûîÈ3“üÂ`•tôø1t 튗žÑ¼Û°ê^-Bê•ó0JJAÒ„þE&ɉ†Œ_èÜ)ö狞N+’¤œaCÇÂ-öÒõ¾CY­|‰ÁVÞ!ÉÓ0É:9w1 «Äb–ºS÷ÑÞ_€e©·ò”dCõ>«1ì„¡£> ʱ"Ï*¬ÏcûÐ:5^Ù6°NŒÑ ¼f<¿fdÕ¾.‘�0Á”N6T˜pê7Ž›ky¬·�óéÔ¦%×g¯Xð"ÃÔÀÁÖKY'×+×­^¿\·…Å .ž ž«õR_\½€õ«o¾æÞ:Šì¥ °J¹âôbM¶g¯^ýä¯"|"l>ÿ�¢Ìc1"N‡¡ÏÀQÊ6õK@Ör:…lX¾V†tL»ƒ >‡kW,C³¨XTÚŠc£;Ò“áþèkÌœ9?­þEQiס#Ò22 äÞ|-¾Rèì›™Ëñ]{ŹJÖ§O0¯ÆÁIέG×.صw–2þôÈûÁ:n¿þ<®¦%&¥¼1×B@¹}oÌA kW~§}9J[vÓŠ.‘µ~pÛ.˜èZÀŸcšËnß^0çÈÖ§ŠLÛ=>œNnT…º‚µë7ãÕ×_Àè‡kP’æo\ü%ÌAO2¬'L‡|ªè([ét™ÃñÒ¸ °èçÕÐ¥zNwöu­§>Ÿ½Ö'jÆÏ«¨Ú”Ÿ— o_�œ°ö�]ø~þó�¡tvùs×;i¨GÒ>Hû®-ËkTVª0êÕ¶N»ƒi]“ŠT%æ©O�1p¥á»®®–È€ Ö­ø¯¾Oàß™í%vûtöE÷¡càA#–š\Ü<Ü£�úá�™§Ä^]þã 5Aaõ‡;Bƒ /öj9jªshä¥ñÆÂE…©dÕä±.n¶ë l°Ü)ádÖû1flktò s‘qr=:„à™Ù3�IÙöñ|ǼV•—(À\I�ZÙ2^-垇?òü²~ ®¤f }›vXüÍ0&PüÈ3obÒø©T#èIf…ë-ë°ÑCñ�_ÁÞ];PVRB9bc:µ¸*ggbCæµ�—âä"gdjr $ñº5?ÿƒ/*J2iœwD$eÁ‹KÓñæ‚‘” &*9‘†n ƒ ¬´ íƒúQ6Ì �» d=#˜1ÊZúv€¥•�Rl3]¡*YíA¿Ó�››C§;ª$á§•Ÿá¾qãÔ¹/c-~…ø+19Œ€ß±Àö¾”÷ŽÀx¾—›6o'›ÄF:•hNI{Jr6«.b?QNÕqMß寸d}úR‘çF׈u#0(À�°ã´ÓÉS'ð:¹£FjŒ§Û·¬aLÒ½0²pÀ8Ö_YYAz#Ê×Ú § [ׯ‡ÞµfD, ¾VSzµ“&9ï‘—"aiL狊Òèš3Ks²óM(Iž 8©”ÒQåctUÖ飮æ*e�«èüÔí)‹íêhIç}x¸ÚÓÙ°Œ±­É6m‡jJ ›˜ÐÂRùàZ¹ò\oZþÕPÞKå“�É|Ö”n¥}yÊò–ï^FØÉp¾_1ûÙyõÛ®¬²"ƒï{&?²ºÓXØ`•<Â`UVùß0%%'cOØ9tä3z•2úGȈ–dk­1ø:јع V­þQöÛ{9bæì¹xsÎû×™! FKÔc{X±"s¸±üÔ+˜øá ùúõúÍöuuç3�¶7Šæ­Ý¡“T$ ƒÊH­Ï¨½�¼—X¿FÚu1f6lßÅÈÚØúúïqÁ�ì%WªðW’€¬Ò¾·M�ƒwø>ìùe¥òßuÍrÅÀ+ç É�=‚»)¿Ê ~™[9(è:¹¹ {”%žÌNMv—XŽÒ'H$ ¦€•ò‘˜|6uu1e::öc¯H'“�ýü<µHƾÄ÷ܶþ¿,H]¨ù/u%ÿ&2¤�Rû>Õ-ç¡®k¸Ïïý/ã¾f!½=žö¾·cÁhçQúQöÓ’<˜ƒüWž¯ï·žŸœ{yïp&À*qiµ“öõ«ÏOcõ¡½Ï½.Ÿzä0’èP%1�ÿN�Uû9–kv�†½Öûާ-àjc땈ÃXõýgŠÚ‡8&ý+Ò%2`µ³×ôóÚÇ<@e ªÉÐ*àª6Àª�/˜à^`P C'Üx7`511æXD3ž;wá >øümønÙ ´A&å¥Ê8]Ú$õYg”†í¿öq\é€5``ØÛÛk¯¾i988] È>÷ÚÃøéçر…ã4ƒ+¿ÿº¾­—ž|þyx·j‰Þ”~oÉG ýC‡¯áðýòåxŠJ$Æ&FŒñºÛè¹~ëd &CV;Å\<�÷>\HçÑ|‚´.Šz‡¬_,þcGŒ­ÏêæêŒ§.×AéŒ2^W~ ½â"öè0¼\Z Ú ôì®ßGâ[˜£¦ã,Ç_Ö¨БD»~¢¸~ݶµ@›á…¹¯*û&4>¼ÿÄ g­à®=pßäét‹DœSõBt4ÃFt¹Å S ¨¦óÆò•«éÌ9ÿó#Ä&eЩ‘’µd³ºð VdàÞuðw°Á��¾ÄÑ£aTœê�qVÓñE=?Yåýxï‡eرë0¾ó‘r~ÚÀ¢¬�özY¬.Ì/ND¢H N2j9R†8äHÿ¨ö üü-¬©¾%LTͳ£­|©Ï“¢Ú«ØGô”9¤äQßSˆÕnǤ\PUóIá"1¬í\¨PëKÚ7i`mèx¨•­~Q%ÇÈùHݩת^ûÙÈ øzÉ"Î>æ³ëÊ>E§~ßùóçãÐ!^G~=é]ajdP¿íÏ,ˆsV=s˜÷B÷ü™2ïf_Qˆ�OÈz7µÕ”ç­š@Öÿµ;ú7]�t×$ço:å?]¬\³f`°ìO—u¯ˆÇ‘¶÷÷½–Ó´_S 4ÕÀÍ5PFi½ä„+¸Ê‰Ð²µ¿qBÉdzîô ­¨Õƒ=_ÕôÐ̇)‘ã£H•ÐoffŠÆÖ¼ÜlSõïNÄ`D#³•“/ãâù’i–D†êIXøv‡›ez ”ÐÓ7�(#˜Æ”"¬Z¿ ñù:ˆ?w>vøå×�devVbÍÞ͹GÇd¡±EÙJv -fÝúÕ«i,7@êwo#‡,�œüXæbò£3�°u3BÚuÀÄÇÆá×u`’�€a�ÌÂÞ�¿¡¯ÇÉF2¯"È×…ì!+”£'Àåç"Ñ’ ²WZ½ôÆ£Õ%Cì ÊÅ]¾$x]ÑâZ5†=4‡±twcÇö=´ÜäÀË?˜`›'ã„’¥Le;i ÈDV“) x–Î^8úÛnXXZ`ò˜1X¿{¦L›HÆ]Å”ûºÿÈQeWÊÇßKú½þýâù8¼w+ò‹É2&C.£ Z¹cÎÞ3”§zS§?²ø x¯»ôÂx¼>صk7ã¶ÄE²{¬È0|êÙg±‡@òzµ¶©»zÝÓWs¶ªt“ö¹k”enŽº$‰í§�G]–ɬfò}çøwjþ†¿ä6;v(I^p1ŽÈ¤Z 2æQcÉ9¬8I·È¼êµ@מÝð,¥×ýô-%J/$ „>¥GËÈZÖ§á‡r‚m:õÀ9Æ6¸–�ßvG�ÿQXå< Èö”A†âD””R‚š±c“x<‰ËÔµ7–ý²¯¾ö&†�„€û§<¥€n¼ ÈšÆ}—}ô4«­"øymBGÓñÂG)wñâO�YÕ c~Eù/_¶”ù¶¥Tø`²/Å(lO`ø§¾ ¿ö>°qõ†sí”g÷ü„‘§aAUs[7Tdþ< è ÄŽõàóûõ_á ë)MèL™ÅêÚJ2|W*ìׯâ�úèt̘4M»èF—sKÒ0`òsðhˆË)¹X¿nÁã_صÚù“©HY¸î�­B@Ы}ø¶m‡.}#¨ÿp¥¼@Æø[·n=ÓXñÁ‡_¡Ï€Ñ�';å mÙUd�·£Ôº'>ÿ ;vAA~xƒ’Ñ"-<û‘'q”ï×ð1ãpUÖ+Qç±sûªñÖ2nc2¥¿V¸õ€wÛn˜1y 6¯]ƒÙŒÃ\Fiq5ª&Œuö<Ȱ, H|ŒLÓçæ>}²â,`;I†¤§—/62ÎöÚðÕ°32ŰÁÃÒw*™ õR½1L*NÚ1ˆ‰·¤:uQêÓÛ·Yëy¸V’Næg e2Óp)ž’ꕼn®&”±70Ð#ph g2AâQXi„lÆ,,ÌbÛX Hõ<ˆ¯^3‚ÿ  ^%è¸SL!T³†4þåáÑYOcÒäððƒbÀ€þha¤‡«”~u"°¾çt$üCÑ«ï@`UNLýÒå»EVFIaœ[¶U×"lÿz:IØÀ–mkÃdC†wŸ¡ÓÉvR> ·ËGÊ: ÀÚXJaÜjs‚‰ì{%æ²þ‘“g¼#ðÇ�šV¯ZÊx²”"öò¡tuV¯ûz¯YÕ|¡æ-`íÕ†MA ðÚ3Èxyv½³‰¶QͧßÛ¬"Ë*ó Í}^G?ÿ¤«Ù™:•::vs_34°"À*šº|úÃMŒÔ[ާ°Þ²í+æ/{–$[µ°åóÚ¨bàö¾y“ °ªkåÙ- £ìù±Ãð§šÆÉª:{F˜ïlƒ÷=¤d8¨/ê®]Ãa:®„öìÍ÷{#ãGoB�Þƒ”~@œm®u u—¾êZjr• ¦ - ª"}‡º,]1ªftjƒýaëÑÞ7XX÷î^KࢗzjèW¥i°Ö8…Ö›åþI¥šÿP¡Ìü{NJŠÃ/ãp °,ÆhékÕ¸‚r,yn¤XM2wÍÿt�ª–þTcÔe�„¢‚ñ�ËÚù±ÿX8ÛÝúªeÄ&E#�cL‰ƒØX:qb#¥Û£pæÌÄ%�#¸ÔX¶;®ëL`�bß•›M‡82Ù,¯;¡¨¿9Ùé Q†3Çq!û �jz $·LÉ+¡E$}üÉÇì?ŽaÙÐ]9Œ'0òÈ3OÂí—oá´kØ·Ûf¦¢�«5 —.AËÕŸ£†ŒX#Žs Ùç÷�ýü7~ÆÊܱU‘K€^ê[žÝê…_áTRL½¼ù>ÖÁ™a"¦<…¶P¶µ ‹ªB콦ƒ‹T”Èέ„•æ¼<çc’ðòK/¢SB ¬-M[¡Cv|Õ5Zbòð~0=qÍœÉÙˆ'èêP]S$×#ϳü6–4`ƒ8⼡8hÊùÈIÖK™ô¥ÝhÔ°!ttñÇä)÷7vJ÷´NíÛTD ¹|ã™TÇ‚÷b‡9~ ©T4pá¸Ü�±z]´7L”Û¯.ËGQ~6,¬nDæ¿ÛÿíüÚß°þòó/ضi3q*å“ÞÿP¹wKÿˆl‚õíé<©�` àG;S‘gã–mèÑ-DYíÀ"£oÏwFÆájÚ2 % b¶õe½€f %_Õ¼wóër½ï¼�qŒ'�ŸÎÐT Ê*À‡ï¾}ÓîŽjå£Ã1’\Üð~Cp<,S&LÁÙ —ñàŒ©hιftt,¦O¹ VÙËš×r,aNÑ j�"EÁC¬Ú«ä;~Š÷7�N=Ú‰u!שÎ!Ö“é>õË•Ètµƒ#C¨¨õcIG§¢¢”.xIygäÝI sÑÉ_S×}õruöaÇò0Æï‰gÄ/[öÇc}C:¦™šr\EÅ”%‹>AH¯�HOЇ�ªGæãàþƒ(e¯9Ÿøø%TÁœç_àøJWéóRRSÇy·Ì_+ª áK{À¥ÌRT•`¦¥AQIÔ%%.ëú#áøyÙ'°ç¸ÊoÐhœ8q”€³›ÒÖ ˆèsú�>ÉÍHIJÓgq2<þNö8NðÚTÚ™ëã µ_�¶Aút”2¤>¼”m’`•÷MÓ·„Ö×—²ñú—ô# “”ý ¶}TékY÷š:®Ur˲چI»$s9 •:W�Fi£äÙ¼Ð*ç§ö_ µÏíÆr­ÒÏÉµÊØC”ÄKœÓžýð]¬Z¹ uœCšsN? çÍv�sgNâsö#~»Vã8í Ò†ŠcçŸMÊ5r<"cëûPÚe‰¯:Bh·öXÚû;q~Ѱj×HÓòÿ§Ðûÿt±M×zo5 ,‘M‘ÎÏgÝþ{+ä¿p/étþ®Žçnªãßyì»9¿†y¾øòkÆÃ;‰•Ëd²ß”šjà?·N :EYȱ£F,µE×þ—qdÚ¶i…‹/â³U[°gÝÏõðÜì™ðñòàä$™F�tN6nÄâR3 À¶CGNVWý-¿‡6!ƒÆ§Ÿe£Oÿêˆ_Wn¤$=êK"ð릭èݳ¼¼Ú¢{·Žd’U ŽXhQJ:,®.CÄ©Íd?Ö”¶Ê ä¬ƒw¾üþæw¶4/S9w“ë¬õBò/‚‰s ?‰ññHfŒFIï>ý ™BA8v�’E³±þç利°d̽Ýx� Cë‚@/Í…Ë¥0\ºxl^O9§ ô°4À»”êÅ ˜]&F2eùœl¬p†2kílL0v`2ž¢àÖÉ …”Ä´h¡1f©çÓðW1^7¦Ê6é³Dfî^ÛÒì4Æ¥!~Ј‡é,j³pðt¬ƒ308Ç÷íVNÁ�ŒíTÍXh�|Z!5t|JcàB¶[Ϲï*Yý}0ó¡û±ãç¥hɸ˜’"6-£åÞSÌGÌåH<õă|Þœà¦g�k-Û+2•O¼ò&A´ÆÔL@Jd™‘Œ{jG€=™]|Á>Úè•…JÜ#¥Ð»üº]ÿ~òøA¥„ζJsS�RN9ÐdÔ”äÂÕš@pô~¬xóQ´ ÔöïÞ‚éÓŸÅkó�1× ÷MÏóÎGuåj E]:C ÖQJ™2¹S“L~µ'®Ù4rJ£¢$¹‡’ óºc’}ñ�&”6,焜¶wsíóðI=Ù³kZ&üÊ‘?t<¾ùö3”3ê«/¿‰¶�=”‚Ÿ]8 }}Æ¡µ·;Úv @ÄÉ]hI™ÓäD32 (±}3[Dûl|tî Ÿ#üz¼ºkôn¶ +/.!{ŽEc÷ÞðëÐ￳LÙMÀUù¼=gÖQ*læ“sÑ¡Ç0\<°†,g�‘E2æ&§ÃÝ× ŒcúÆ›¯Ó;�Àás/*eh=üÒ;ð¼þ‚l¼áüh©O|ˆèø%�¯g'µhå7#=†€Ÿ"#�Q®®$žÅ΃Ë0nÈ‹”ÑvG�8x²~ŸEKVpÔ€}õ+µÄCÜ ù�½ÀËŠË)Áözôé«ì™“W@Gkܹ›óÅømã:ôìц,cKœ;±Gö$ðf‚¸Ètü¶g-¥f ñá—«°âÇÍØ¶ö¬^±»¹o›Vž(ÈHÄÅ3±Hm‘„š`:DìF·6�¸ƒòBÊê¹û�>‹¯¿\„o¿ýN9~¥a5Y¼ñ4ˆˆ�bæÔ~ðmi‹Z^GûžS§N“韅"J2o^¿¿®þžq`‡àË~¯uåÀ¾í§‹.�‡—,r'÷vxuð(²hrbŠ��bÝ¡SP�b4SŸqÊ ú<4û¦²ä�§d`ÎåÑ×�è²þ ¥ëö�qaNµ‚.4‚�!keÅ\ut´%³µŒq©/!+: iºMÙG™êW"™1½¡oN†t3ê 2+)µ×Ù¿ c¡X-ÌGëò\8’mzÎÑ‚ÿ‹xn£zùHzöM»ªü¹ÍWç>ãnÚR 3¬Zº³ìhÀòh}Ó6'�!¼íuyî›6ò�´—j{u‰ý_YÝ}ŽÃâ/?W>“|/<ÿÅÁ)êR�îC÷à.dPßü¬nÛ´�²d‘xx0ž¯ƶôEÉ–�À\å�ÒFJÛ§ÞYy»æ¯a>¥€F¾´ó 0'ý¢€ jÿ¨þ–feXH[Øâóå(t5… pNíç5Râ_³êRâEdGŒz¬Ç/#ñâ£oü5…³å~ÍŽ:€#l_¿ë-Lœ;SÌÍê�±kç>:ªÀ !ð*ûÚACGS‚‡ÊŸ{øÒ~ÔÝåy�¤> ²,ï>“\³’ä™”�¿a©æ�MêCþKÿªžkyA6Š;ù¿ïíÇɱǕbb/4&é2|ÜYïL�̃¡C0cæ£Êÿ„øs¸t> �<þ1t Œ•uæëྵ [Q‹Öí5ã2•Å*e ÈšCg–nT‰ “Lk‚¢[9†ëØIqޓ޶Ã&báÙ˘NvõµE?àÃMQp m�ì"JÂ3¾vï¶(naAG;ñÁ4ЫÃ#�>ª°§-_}Ÿ=1î-�qðèØÒÄÒÎig"›lÚ£ÆFÈ£:€çÅÄú{­œäm¾Ô{*ýƒv;uýyAÉ_¬¶qËv:ÁzÜælîmµÊ:“½ÕçY–å>ý™¹ƒ”N rI]ƒŸS~ûZ°ð$]¹€O>xî^Öô™sQhÉ~ïÅW_Çódfúrüö{éTä9%K%pÕ´kïn„…ż×ç)«Ä�SϨf<þ„š…ñÀ»óY±®ÿ/ Û¶ý†â‚\:{ß´^þ´öõÁËü,[¾B‰iêïßÛü˜†ô®Ï?™!Q$9å¥Õ¯ÓnSêWÞÅ‚D�Ö¡ ¹vzæégðŒöŠëËZqVýÛt¤ÓÃqÆ2?ª( WRAæeË¿Á¾ðÙ'š±×õÝ•Ÿ #Q× Ï&h¯V–ßÿè#ÌÝ8·î¦ü?~!dÙJzæã¹wßdt¢ãŽ\ëgÊZ à¾Ç•%y/¤¯�vÑtë¯×·jæ:ûC†ÃüJœ².<ìçÙi¸ïÙ±ŒG_K–ï†1JÀî]{°qý¯XðÞg¬�ô<‚Ž¿Œ-„Ñ#‡ãHøQÊ,*eÄÑFðÝw+ñÈÃñ>ùa"å%]ºx%é‹0pø |·b)+IÅ HÀ7Ã8×Ù¶_yïåÜ_ä'zDeX§OMYâe,(+å:|N6_�™X´ÆÂÞüe†Â�6àtÇ.(¡Ó°¸xJû¥Ý.È~Ò¿H{q»$ùÕ}öOÚs³ÄëΩš–úFir^¬gå:JìmŸÚ>-4Ï·8Z5,SÝS®YÊWÛ.u½ú«¶uêÕÖ ÿµû7ù¯�Wm_äžúù?q13‡N²÷£MÇö?qR²×§ާ×þò#>5®@+:n?q½ë·þ5 깩ý¼ÔKVêë¯9BS)M5ÐTŸ}ñ9í‚ÑÄdmzîX2�R=Ä›GñZ¼ãÿý¥óOƆ޺ÿýWö÷^A0-z.ÎŒWDfLSjª�ÿäÈ`–ôŒ âŒYøæËOàNFƒ½qÏ_Nĵ:C<ß'-ÊŠÈdOT<ôkÓâá3ñA>ÛNhݺñ ¯0X½)ùøw'G÷Ö0±°AkÊ kíµ—_ƒ=™&ƒ‡ŒFeU5Ü]ÌPÃs·ç¹fdR>’’3(…•püäY43q€§·'™6ø‰2¬bv¿yúJi¡ŠR”ågRš¨ G·þˆRÊ&90î굪2Ùz(—hÁI•;c" ‹UXqFŒùgäá‡2+\:¼ÃÆ ÁùLðøÞˆÖ1Dñ¹t%”k4E�­ žÈŠ�'z”žÊói ýfd—�%u1AFd¹9ãbVxÞ•GNâ’ž:¸SÒöT•|CE×ÕÍP&P Ó÷ß™ÔÐ@ÐH€5òäož‚qèðA‘\Q^‰Î]‚0åþéh 1úKœE×VŒFã–ùuÀ#›×`> S3|ùÕtèÖ~44Jz`t?zµwÁÙC»aäàŽÏìJl –|õ) „—HfãSiú$Ó³»ºÎ“ù.é”Ä ¥w ÷wA6Ù�ÂÄ_¼t1Y�ixiÞÇÜáËø Å©±XøÆK5ýI,_ü5c7×�Þ} Ófÿ.¬wg~&K�a¸ázùoJ¤© ãøòy-¤ÑlÈÐ!”]³TPŸ¹Ï½F€«ˆŽŠ¤´¦1Œ �‘@Ið�~x†–µðk× –4øJiÝ£§ãg™¨C”uò•A€uë–OÈð"•�e\b :ªÌê{’ݨƒ˜¨ HÎÉF÷šwè»eiX˜®õe4\XJy¸ýîÁÁ¡á¦úÿ–d,¸µl‰Wßœ‡ÔÄ8äå¦ÓqeFOœ�5”iݸi#Ù>n”èÍ¡½;aif }Æ'¾W£fÈ|Ð…Î"ýz•,â(2%ú �„ÐÐ8rìÜ=½8Ñ ¤jm2 ®*¬Ê”ô+hGVKJÜ):š¡X]zÕ§¥'Q6ÌWs«Ñ³[ÆT̓Q]1N�?IF'ã—fA‡†¥é“§’íhC£¡ º÷îFÉG32Æ=1eê(²*RhÐí®\ß’ÅK@`'cvgòðë@i]}eÛ{oÍ…w;?Ê·W<Ú£] ²©4Þú½ëëGd<\�šXÏ*&šÚžfdf��“Éw¡í[9ÂÈÞ3|ãÆŽc4 }z÷ÇÈ1“CÀ¼ãv]¹’€">?IéÙÔ=¾|¯kŒ-àjë€j2äõšU“ùKg÷dzHKCœ¥Õ)5=pð°›Ú.õn:Ù»ü#ñ²ƒ)×çHÖ¶¤’ütöy%d‡˜Ö— qFBïúuÒ&hŒpšõ?�áõ§À™÷3úÌ ¾gƒñäìg•:sÔÕAö‹6í:*±Ûê ¹¾0eÚ4Œ�0dSŸ¤Ó—ÞÁ�(Y,fÙZÅ)m�Êðh¸¯úŸÍ«¡,ÿ^>É#ÆEq’•9œ|„Ù IýUþðK¶5÷ 4f¤´»fìï­\oÄëSóý•¿¶d öòïƒÌBÊ+úQ²×ÉCùüÑcì8¸^š>¦á¾o|8Ÿ}6÷¦“Y\)‰>gÖÍàGRRåû<øþjÚ+¾g’\ÝÚiÖë…Ê3!aÂè‡ô²¸Ú§¯¡îÖ J<¹†ý��µ‹Âb½¾ëïþ<úȃ›¦“Mßù漤uö÷ÇÇs'Ð9‹m*�^´“ö\]{ý�–¥Ï”w^5¼J^óÊø@.2™þÛ'J4’á*Ï¡¨5mƒ†Ý(õ£2ƒäYVYlúylZÞyœlÊ:¦ÕùÇÑ«{_äçÆÃPÂbè—ÂŽ}§‹W;å”Ú·ï�>ý¦ÁŒý‹©ôG÷˜Î�ØÉ= Hë %1ž cCÆ>¤s"UU„ÙîAG}==ø’YîÌåÄô<¼<ÿU¶]×p�R8nnnHflêÅ¿|€:�«ŒÏîG%‡�HÈ,CYåXV•Â86ÙŽæ(£3‰GqÌfàÚC/àáí§0¤CkØX;!}á&X°]5:c–ý[ö�>{°ß6Œ½Lj£È¥Ã—kN Ì—¾£\µG‘̺ì„R# ˜‘]ëÎs¬»Z‰üò¤ò:$ö¥„Byô©'Ѧ¥ šÑé«„åê–"�2'¶c$劭¬X—”è×NÒ~¨c,ì�6Rž‰©¬± IìÝÚ»)ýÆ_Å–²°°¸©ì?ûGJølJÒŒ-k•6Oi#ŸŸwKÛøG�×µkäs§OgÕ¶íýqÿ NòŽ™þ *ò0dÈ@hÐìkJÕžãø"€m@ciÇ'›÷íĨ~ƒê7K¨’§Ÿ}šN?/(ëšQeëÖí1|¨ò¿;—bbb9ðeÈM['¶oÛ�h:9x�j=/Ò�ªa:{î�Ï”�ºMúõ#rÂòQÿ7ìgÔ}îæ÷j8Bªã<õÆLuãÞC9¨ßïîžJæ¦ÈáîÞs�ñìã‰ÇAûvmqÿÔéšN˜+3ñnjÆ?ýÜ_Âb½é ×ÿhÞÇZ(¡p´Æô�åmZ÷ŸW§Ã�S"Üå?ïÄšÎH©�Ïd î �:¦¦:iª�Æjà†A�$›l“Æòÿ·¯+ ;Àö-å2ª�V¼ÍäÏ�<“•ÌM_M5ÐTÿ•5 †©hs²ûCÖÑ£èõðtD­Ý ÿ +o¹žÀôš[ÖýÞ iS$©íŠê¡ùW¶)g"ÎÂÄÖ•F‘+ˆfì¾ØËçPY™�ªJ%3¦Œk+‚Ž´Æ–Áš±cªÊ ‘SDÆÁQO‚F] \67ä$í¦ù 2â°•òŸ#~B¹†é¹Ü‰l‘<5#ÃN;yrÂðí?À‡åšòRÄ$\„¿»3Þ™Ç8e”˜ìОlËf8“‰ï ^|³ä;Ê÷ªÛΆC·s(b/] ¼¤9)u´tÍ6L #}=»"aJib·IáÑoüÔº•‰‘šnǪh¬¾#Èd–Ô©�U<ÐÃ�§�bŽ’gÑgŸb�¤¨³°e[kG8QÊ´a*IOEä©“x~Údüp$†µ”qÛ¼ßüô3®Ñ€„•w(»å$Ç ‚†ŠjJ ³¶s;ìLõ‘­o�³Ç�À˜€JÏ^!)âöݲ‘­úÀ3É®¹Ä‰}oL¤=f”®ìÜméuy9­Èª $¸¢Kcà…¿U ö!‹~¬?Õ†u$“YÄGVyúº7Tª(**Bqq lJREÁÙ\Vÿº Ÿ|ûãb¹rê(à¸ì\‡å?mG5�z¦”©Ƥƒ3%Ärqú%ÑtMñÍ7KêÏ#ЦÔqà/ß¹¯Ùc®ÞG9?‘î©J«ç^3Wee²+I}‡£nHoåú~Ù±ÃÌZ+Û^ƒ²òú—<3êq´×_pÖ«ïïÕ÷\{ü#RÅEÐq—}äYÊ¡CÆÎC[iôAåWÕ´çׯp4â ¼[·GpH}b*&Œ„ € †¯Þ~=M‚_ð@uåwüèþáDwî‹7XNQçOAŸ±›ZµòFÏ�.xû­×ɘ¡äó¥—§x ã8â³Ð !”µ-JOT¶]8º­`¦WŠï>£IKo¸–¢Çý/†j’x®±dí÷èJÀ­=�ËWàJÉ߆é åì®únÓþŸ Ou“Râ°àí§Hƒ³BVeV~³»>[ÄéÃСTZvJ*kMaçâG7ä¦ÐÈGÉl—VJÞ$Ž"ÉfŠ% 2з\¬ôèØt¶p¸KW>K›ipÔ° Ôäf“�ÏØ‹« ¾óÙuõM¿‹þù%ÙE~ ð#UãÀýí’ïñÉûd(L²„•ch]5€™aÃ4ІîÔTJ4Ò9$úÄy¼üÖ+dñ'RæÕ¯-|�,ªÙhÓ!ß~þ,B{ Â/»Îa€?�Sh eü×ëRrzlÿ’ÎCµ™=ÂîBaI>žy~>™7—Ž ¹pç=ØÆØ]ò7Ó5GAÞ,úêk>?CaK Ûš:æ«àM¶ËÐÁ“•kšñädÆ{Íõ ðÛÖ °vî€ k>Ç(2­œÉ¸¥$žžž‰x&§æâ „ÞVˆŠ‰G �6Ü=<á{ö8ì ü:»x(ùÚ•¥¾{ê:y¾_òNE,#˜OÅo_ ãLÍ/¿ëW/Á×ßþ€ìôL„vê ò'.^A ‚&“ô+š™\TèÕÆÜ(ö²²ÛYÓe-ýÐ}ïz¤›!ž’ƒ‹ uppÖ£7ðÕ6]Ž/Î5]>�K'Î`ÜS)eÝîëÜÉÝÈL�Ç Q�)YÒ x—ægÀ§³æýÒ~÷ÕãHFm¾Z¶l—ã«à‚Ô‘ÚF©y¤­’¤ fÉÿqÇè¨ÆÜgŸ‡þÄþ²ê–­ß¾W«oYÿ{+´ÛGa5Öîý^ÿêíï,˜Í÷²/c.z3†d±Ò¶©ç°}ûfxs¼"ŸÆRøÉãxöåploÔ-›Ã÷>ƒ§ÞúË¿ÝE°¿û-ÛµW$Æ_Â�ß¿ KÃ<ùº¦¯ÖÞ~§åÛõ/Úûì_ö"²J Üg$Z¶ï¬½IY^±t ™’á4¨WQadÕ-Û[!Ç•Ôsè:SEa•ʲ0j”ÌZ_Úó{)KeßheQ@zaì¨Ï¹ö6YVË�ý;í÷¨á¾·ûÿñ÷_âó/ÿ‰¯ß[H¼†©ÚGÝnŸðSÛ”M)±yÈÍÉÄãOßn·ÏìÇÆ ë€)è×Ã1—N“Á×›Œ42Fç¿O¸3~¥¤Y³ŸàØÏ^“Šù|:¹µÆÖµ+¡klEéó|‚ÿ ¬f8ZûxÌŽ“Œíçìµ×ÚNMÈà>Œ×^¸ÝÜ„ÌÁ.9áõš˜¢mëָ廹è3 ?¬sJ`øöSHë!c—©ûëØZòûª¶Dµ‡º¿­¶ýÔ¾nõ‘uºãPY§½]>ÿ“ånרû]þÉk�cöÙ§øä³Ï�/9µÊ9Ž;¤´ Ç… °—Jç.¦2ø"”) FiÕ¼óíR²ÞOs^8ù‘Gp†¯“ž¢TŠ>Mémøßb¨ ÀúÕœùøvÁ¼;rœÀÔQ²4kªkPUSA°8atÿo–}ûö)§söòŇßoÀòϦã×­i«U…''�ů¾ˆ “¦ m`Ð}/í•@Btä�ï¶ÓqªkHéÐîΠܣÇb †�†mË1þ¡ÇÐ̾9—Žw;TÝz¹ç¤$p\üÔ L{àQ|õÐ4¯¸ ÿŠRe›ü[DÉï•Ìm¿|ý~Þ‚ð†rœ¾æ·5H¹|ч¢ñÔ“�#Žìå¨è#ذn6o_ÊÀSÌa¾UoJ°/þåWÎÖ�„o&=ú8úR–¶ Yõ‹˜âaDûŽo¿ü ?,^€ïx¬AW®â•m»�ïãO7 ÓZµÏ<Ö E%xýão0ã�·Ñ¹—;º0MEzF<}EsÎT!çUÇFòœË˜DígÔ¹�ÔQÇNRG·¯‘z2ÎT÷“újÑ­Ï1±”ÖœoÜ­4ô¬kÛÙ.EµwÚÇ‘6P¯ãÏÚ­í+~Á¦UKÐyÐ ÿ çš>Mû¸s¿ú’òÖ‡±bÍíÕÿØ{õ·üÇNÐxदMž€¡áxœŒþÆòïÛ�LÖßßæÿôÊÄðŠŽ¼Z´õëÕuÚ¯[·ï`¤Žìíí´WÿG½öªD7É¢FCI§.9QKc ü»·Ày:ú9ùo,¾¦¬\�fþmP³o/ºÙ�œ¼"”Óù씑ªä£Â‹íoKðL7’Q*\¼x99Y´{Žu'Õ ÒßWY)‹jWÄžÈ{]¶CÝÎÿÂW² íɰŠÞ¾ßý¸Ñ'¯Áy0·²C;Fš–]OD~�O²w©ïɼ)W)=iL+צes²Ú2ÇŸÁg¶´µC‡žýȤ´S–Ô”dæ�»߀Ž0£L¦>åLÕÆhÞȈÊF6Á‘M+ÐÐpl[µ fn(ËL&k-�y#Ï#×Жrʃ(µúÌy¯ΤDäà¡ì�È(öðö![!ƒL�0”VV‘9i� 'ãÑ6²ÆQ†Q•ÿ�äÿ’œÙ¶ÉY½X™ ³D¢…¥�¥ˆSQlyCííêêJ@×Uý ÊëNê]¼˜ŠŸ’Gi)ß:p/¾ò*ìÉ üð¹ÇÑ„ìËn#@Ò¹Ãl×kd”h€9@æúq§ôãÔ·ßGúµ«h†’Ä(ä_KE~E*Mqæl,Žîÿ ÑÀ½é˜›A¼ŠËéˆ9›=KO´ad¹‹“-,›” ÂÈCFŒEo²ò¤¤''£0?öúe8q&£Ç�G‹f”¬ó`žÐžJÔy"Ûzýðîpâ½×ä|<'«·ó!å�½,í#÷¢D;½üžI“À62‘Ô�6711Qò ž‰Ý‡+II¸pé:%€oàÊ�<˜°qwìØŒ#'$NGÁÕM[£amôîÙ™ëG þr2÷· ,¦1Œ1Ùó6¸Xñûz˜-œ­ôµÚ¿�äã)Š9¨'Î`m6—ú IÈï*ùm$O–\÷¶Â<ù:—7dsƒEžKÓH[ÜfèhXcµQû’´‰ÜCRd­æ�µ{ém¶O$Ï©ä.Ê¢ŒÿäÚÙÙ“­úµ0jô$uâÉhvÁèQcá鮹ÿL,5�Wp:!•|~2 $�zø9t= ft®i—+~Eúå+071…^cÜQ²9™ÂÒVd`«å£ß§Cé,Z1úß„,Õ¸Ã;�E6µ¾�1j(¡²ÿlm5Ç/(Ì#S» óGÃÆÔAAGOqaâ�íb®¸"+1l…'IMé¨>|ô JnÀÁ¤5 ¼¨¬®EÜñD´ Dì‘ý0f®)[Å9+—5÷ýwPHàÉÕÅ�LwäÞHf®Ódlû}“òl8�1Û¶]}0e!Y½'ø;dQ½ ãÆ5$'§ ðV¬òÂl\fþdkS;¸šÚcÄ„GpùjY¿ÞxèÑiÕá�û!¨SgtìÚ 3ßx¹ÅÕæÛð1“PA™Üùs¶�õÄüÓn.Th…7g|BÉo/²6)/O0ÙÞÑ™¿�=¦=: �º  cÞšŒålDÅn†�£ìÉÖôö¨¥]v£ ó ”Ô–!5?ƒú Bs×´ÛÍàÑ̇y�³L‘‚Üœ<6ž tôñy—m*ƒNû³W8sù¶ì¨ž–vn¨)×µOùªóL*hç«Ôî[Ô�¥?}&޹Î5Î<Ý6“zj›jX·ÛÏ“l˜ˆÎ]•E¬2Ϧ…Øe±‰²X¥$ÖûÞêyÕW�ƒïe¹>u±�ò{hÛuµ ä\ 9Õcff¦ÂÜü¶ P×7ô:kÑp°qe®G·†6ÿ¥u�hã™*à‹Ïg’Ü“ Û*Ù¶}³°Úßb—ê8�c4;Ê´†…D(› ³Ó�ÉÀ +Ëd\ZƒM{/àí×~ÔÝíŽÏ6|ž¼(Ñߪ}/Xñx g°xÑ\Ú ²sZÝQ_{Å©ÄX…Ýou—¢ëV,Æ�Í«±jã>´ §J††‘©ãĉXìß½�6Ù]9æiA¶ùÝŠ2GgTašj�3µëK&Ì)Y'ã Y´·«ïåþ”{Sy®¬<½ SS”>QꈳYæÁš{†ìUÖ×ô•Ö½6£‹©êWÊŠ[ÿ´Ÿ#íõ*R;Ç«º=”y[Ÿü)´ðR‚…ø€0DZ½º¹Þ놵‹°zñ'p§TþŠu¿cÿößÉŒ¯"ãß‚Œu HzbÇ”1ÿezÒilܺ‹,{d¹í œè¾C‡ÐÌÝß-XÀÎeÙËÛÌ<•ÁuêL›·®Áî½Ë´èG¦µÈ*,C›6­0`ø c*„’’RÄS½"�A3�‹�ëàŽ¦öú0¢í{ùÃÄÑ~ƒÆ£ÐÇíw1H(ÉÁzÅ <)ÀÁ1C<èêe‡¨-‹°gÝR”ºø  @tK*UŽ1Wwʯ»5Ñl52—­ÝØ_SvÝ�<8¯¼ò Ÿ;DœËº~³ùýL¥oÉfÚ‰ÙøuÝoJß²‚yÏÃúDÐ.â<ì©’óBf!z>3mŸ£Î^hÛxÕªã7Õ~Ê}¢™/‰�¹�[Q½Ïd?éod§}Ojî«HÅné~ß¿ë³z�Ú6^ûØêw‘ub/%` ¡{S{ŸÿÉû.]º Kç. Z÷8æV¸–šŽO>ù 3?úûõa.àVºÕîøÈy_ŸȈ¿�¾ÍÕÒ‰ãòkW’1bÄHe•½½=3ÏmCEr)þ´v£2'«¢²Ñ¨Q£ªö·¯;uîa|adn�„sç8NKfžùŽ”I·!³}/ŽîÝ_1Je�öˆ½‡„”xì9°–ŽæhápÏCËs!KSÎw; ©Ü矼ûêªzû�£"Œ}ïT¤*à >û'OœÆˆáƒ°yÃtЇ=™¬[Èhµâ8é!΋Ó8Æì×s –.û&LÆË/¾¦¬«7®Ak�>FN4ç›ïÙOéáìyªKQA¥EY1ÚÓðÜ3O£Åˆq ¶C»´àx-(z7¾\±Ë.‚�UGÜ5ê'rœ‡áì%*é¼ö.&NœÄ1è\½pO==—ãe<%}“Zdl$ϼ°'¥ŸÑ¨ex±ÏI�[J®]­ëŸd,$õe|#vA^e®/s8]»!Ç—:ÚeƒVŽ÷†~Ž6w?éöIâW�¾Kú69·ØMŸ§}d�]�ëPû@Ýà9íÚª½‘uÍÛ¶£}º ccCíjuïÃ#:aôØñuŸÿé7ÚöüŸ>Wãñÿ¾2r4SV…ÿ}l<Ò?Ò� ë?Ò¬ÿÙ•NAw*Žê¬hèÛ]b.{Jêü§‚¬2˜Öí¤¥Õ�Úoè»7®kl�‡øá…‡‘}-Ä7–?×m™{©ïÄ)~à¤vŒ¹N"ÏÍK‘OºÀHÈê1  ™&¹”s­èÚ—•õ‰ÑQû½Ÿ,´nu'TY«b3u‹ºN{"¯[ç_ýìß> �œT c²;0\òåsprtÀÚ-;0uÚÓȾ|E”þ-¯5¥£È‘F‘Íeþ§NÙ:¨=Â:GÂÐЄ`§`•Ü6UUUhêí­#ñôIÝõ;BúôGSNB�™ïÕÚ´ åT]pæT<:õŒætJµõó¤ÜqÕv(1J†æ•sÇàêå�^Ý»#»¨)9°Ñ/…»M �KÎÊ ¬yR�[ò(âô{-í)“8�íÖfgŸÆ¨:pd2÷gJ 'ô²LœüAVOìÙ»—y{ö1Ê?€¿½¼é€rkÖ®ÜVD†©~ (¿µCq¬®\± ÇbcÑ)²«rªÙ/>ˆš¼2#ÎÄ®e^ÙΔU¶ÁõùHÍc>�ÑÌÛcëÂÜÀgÐcèD8ñøg™ìÜ”lŠ30ý¹éèç£��¦ÁÁÝ >}?ÿ0� å<æâ À³ÎÁ¨A‘tâ4™/¿ïüƒùc½ÉtAò¦50Ù³­À´¬L°PÅ‘¥N(U�UÚN½e¢¥N¶¤ÿWAkù"¥7óq–9Ȳ €é5Q­††æ¸Y^E¶Ÿ96¼ù,b�’ ~ ³õ0¶5 Jj——V�ájæb,-*¡tu:súœ&Ã5Riù§NÀeÂ-×%‹L¤�^|Çdùz û–j·wù]5 gwe[ÏСØJ€MîJ‚“ y.ÕçO^ÕɾLæk=½md�H«E�åiWõä\Ê„_\–fæãЩ�ðó÷Åc“ ¦Þ*�è(‹à9$4¿.ù‰yR™;é#F‚b¹^вm{Ø0O• °Ên°6§œ®6ÀEÇÅôçžÆøñ•#'øÜ>„`®û­3¡aŠÌrÝŠ[o ŒM�p`v=K:£E’JGYtK—.ÝÐkÀ `•mÂb€uãæõŒö£ôó²QÍѧgO4ók†¸“Çp*îZ·¥é ¶_Š2Óp~û2 yøÂî¸qå2º÷Ÿ¬H¤77Æ×ßÿH¾3^|a™¶ÎKv∑£x/�1bÏvõ¡“Þ“÷Ãz&˜ �r�B:›ýLH§>aóxž Ê)`îÊå1päd´eþÖ)#&2wÞ!Vä!²süðõWh‚cqñ¨*+QÀ3k[TU”Pª8†æ ,Yõ3¿Û%¿õ\(ùèuh™®Ìãêé‚Ë«W¡ï„‘ü]Bø•ãr•îÆq³È´÷…sÎíû_i�2&–çSu<‰�PÇͪ}ÑÞÅ‘Ïbå(·nÛŽÁƒã­·?!;™‘�bö2/a%ŠœlL ò‹ ÇþÙÙì3õ{H€ˆ,êgíýäû©JE"Ž’í Õ€5þL š2çd4Ÿ—Ôk—hŸüµUï}ƒƒPaM0 … ¨7²ò²±nË:\g�Ÿk³zuï÷AßÈ-Éèž0yJ=€Uö 'c_`ýüÓ÷pøÐ>ʈwW$!U€Uê——áô郘ùýǨ¨uÅÓO}=:³ã�tó“*uE·Ï UV)”Q·g.áCûþ@J"j—³´‰NZvyóo+([Î*‡°oÔ-›ÖýŒɹ()¾ go?tŒèRWeÎì/Éúc‡ !@fÌ4  ЩÂJeq«Àªzï×Dç�HK_š¹zI�óZ§Êå˜G¯˜”¡Ö&‰ìò\*ˆMyBóLÔUTSÉ=+€½ýØÛ÷œØØdŸ�Œ1ÛÀ1i ÷׬4í® B”çLî]í¢§ßG�Ãø~�hÿ�agï¤Èík×QßïÙ{¿¬Ø ÓŠldTÁÇÅ } ƒ™™IÈêêÂñj%•¾Çåk9déUáZâU è;Çx¯›Ù£ºÔ­Z¸aÃá øø»(æXTM�3˜}ù´Ç_gZ‡ëع‡Ï1¥ú/]‰ÇùŠ”Ûm‚ý—kМ6(„ö}$Ò’Ïã�Ïç081‰ ‘zާs„�?7püà<—|F7c/å„[0Ouþ¨Wà‘Ê Žû´Kç'Ÿê‘M{ `•mõ� ŒÃ»˜ÄqÌI•}æôžÂû—ñ^cÏþ×�÷Ür‚©¿®\‰I'`2û—¨ÃÑ”§ï„ýzcÕ9ªJ«�ÀÔ±Ù%”/Â0Ý­ˆÝ’1œjc%õĵY˜¨¾"µŸÐ¶Ór,õ¾UÇçÚÇWǤÚëþŽ÷âã¿–\¯®�×>¾fLª B‘úÆ•å9;·óùѬӮ[Éà* ¬ü+eΜ¯•êZ¼"3­[`•Å�?àˆÃu77øùÒ¥DäææÖùáœÝµg?ƒ¼„Éyàª%k””C‡ kpÝ•®ÌgéÆeİ¡º›þ±Ï§³õ1ùéðubp&}9×êÒ­|ÝðÈñ³;ŒhÖ2b0ƒÌ–.ú™iRæbö×?0ç| Z´½ïµý¼l�2º:;Þµ®Û½œ9+dL/r¸#† QêJJ¬E+áÙiOàÍçÞÄÄ!`Ò¨”mZÁ5}ô!fÎü<ð`½sœd`¬¤o�¶û§ûlHå^Íñþ›ïãé©Ó‘|õÒÒ®âçeKÑ4 )çÑ—Ð.´\ýì1œ@픉0h®£0Ø6-š7GÔ‘Xª -A1åÉ»wî.‡¬+“z+WoÀš5?ã�1ƒ1žÁ2&QÙ˜"5¬–=Ñ¿ Ã¼õpí;zUf”îPg ¥Î€>C™Þ¤•]R˜R#ŽëEÖo`úÕÜZS�¨£ƒ•^K2‘±œšïXl„Œ{`UëH›È8Hã°o‘þC€Lu×�ÝP¯Y}mÍ ßåÆ@Ÿ™óÔ´´¹ªÝQëhÏ!w�µ{~Ýr83]�ZO®C®Mÿ©ãFul© h[¬îŽW±9RWæ’jßf×À\ìŽW4¶@c ü£-ðÍwßዹs!�7^·üŠö„_}ód3bÌ}wiYïÛDÿÿUPµíÕo®Næ5*umýWÿæ~u»ú[þ3>© ²|Wé`åµ`ýÏøí¯RÓ‘Œ6¬ínpfSJט‹ø“áD0ðd)e-s«q‰ÑêE¡]0ùÁ‡Ôªu¯þ”GÔXeƒ ¦eÑv4)N&Ftkõ6\ÝAþâ›�óçQ¶’’daawìéì䀮=ºQ:©-í±=®]½†$Ú³ †Bß„™Y«�™×Oç/\‚½!s5�TwŒô”K 0S·â.o zª¥ðf²’"RêháòuHdžÐg_ [ÖmB‰�¸I¸t5'톇­ ÛâÓÏg#vÿØ•¢mSo”YÌ1AS__$]¸LÖS*Ê£cp…ù`�jJP¢o‡œdºz6£Œ[KõÔŠóN{‚*EÕ�-¯ª-—‰›êì©Ûù.o¼}˜�­{wekiv*̬¬©¤{F‘¾�UÀUY¤Üd°>ÀMÛv�¹×ç/�U@>ÛÎGm†½Y)N&ÜÀâÇqñJ*2 ´‹$³Ó&µåøô£÷‡îZ¡W¯ntè3—×&ä!�@• Ç/^GZ~9Ùµ?’Íg€£qg™×�»uƒ3ÙFV®poÖA½)¹šÇ¼a. Èz}p'Àú±±= ôô˃íÊ%ÏžLÅI*£j3\Ôm%ù- ÀvÚt¤'ÆáÔ¦�¸”CFsƸ;Û2/+¥øx¬gNE!O_­ÉtLN¦ÓÒÆ.‡¢p£²®aݘ˵6lA~~1¬Ü›23°1ü£v(¿‡8\ë&³¼Gå½,òÛ‰£ë,Aw§‚B4²JûWÆPج*P°xùwhß¶ã]AVy&Uæ…ìÏÛ¸\ò iGPkزUó [Vq"j]_ïç_Á©931yæ<\½r o¿ý† ¡ì³�Ì^AGF’áz™RlVü­Û0�ãnÅÞÉõŽMžt¸yÑ© ¯R:¶åµ2_Úá�hêwC³àî2t¸"+×’¹¾Xï8é­Â`€µ€÷R¥ .,üþ3æt+'£r Ο;Ë@‹ž°cÐBÞ§—Î�A«Ž=ê7ý¹Ì©|‚ "=tgZµ˜2¯f8å£�Éš5ä¶þ®ë–/Çå”TŽ9|8úw ¡[¨2´Ä¦ßÖcÊ£ÏÂÔÞ —Rñɼ7Þ>œùãʱíà0ÍОì†_©œÂÅÅ“ævŒ—Hñvêië^Wþô)ró3(Ñ›�'âÐÜ× šqrv`r�½Ö©òis,½ѳn_Sw÷ŽíÈ!øëà`=²:šÐ™RþÕÅ� †f”w %1œài0ï?ÍoÚ92B`š5 @Rüü)›½½ lÛZZ3·m\¼< ünCMe .œ9oÿnðjÖ”R‘]ÉTÍÄâ¹PF0G/‡AƒÎ‘ý`lnÏ\[# �*,˜÷º÷Ä 7˜SúøÈ‘ƒH(H„Åé‹ÎΪûMΓå·c?š§¥Âdó&ì?p-)Û.« ¸JÙïÒüº}ä�jCœ�RJŠ‹•@éäÈs'öDžW)Úëã,’•™ÁöuÁ±#;ack/ÞKƆ†dÿ^D«?~C‚qR`U V)zy…ÈìÖMÙ9R‚S-ª­{®=Üz&Õíò*×"ϰöFµ)j=©£Úq¶‹M8I€ãYcÖ)WÔjØK²Üf—.ÕÙ%ík�ïÛ÷B‰3O]§n×ÝOuDÞfêÖÐÆ€KQí£´ÉÍ5K d�8)ïx$ VX•¢Ú0{öY ³¥N :^W®YŠUk—b<ƒÒJþÿôÅ,ô`�nPšæ ÷ÿux?V®ü�;w»oe//Ä'îc` „uìD¶‘¦66³B³ÐŽ2¨-B96I"Ãq>úöG‰ÔúŠKÒI¿¨‚ߪ3Um;ZµVé·ÇM�Ê¿¶aЈ­™7Rq�2ÿ2ÞòeißÀœ™YS2†Zû»àøé 3çp°• Éj»<{¹aÌc¯aóÚ9›•ãhÌ…jž7µ!î�#U­¥y•çD?þjQR:¿ýž|å ,*üp†F9„ßM-ÓSòȾóDk¹j;©ÛäUqŠßd¢¾© W¹¯Õ~V³_�f¬üò{²[½¢Ç .Q�§ë\ü),l{KA»¢co?¬aJ„‰Ãú!Ÿ æ7Þù ½ûdS°°–æ%3˜Ð†ù“Ó);ߌéF QL¦ü o~ˆM+Ö2ª5Á‚öسñgT3/áŒ÷æÀ‹ ×Ϧõ@…ºsVP*˜¹¼_íûcω&ìÄá-+°ø›o�SÁ€4Aî^i8îg¿·{×ìZø6^ú;û+[öE|T4ì‚ÉÒ=¸¾EÅx=­‚6WL›FöBVq)\órÑŽ Úå\`GìfžàC•úèZtÛÎ;g_7i~d¡lû3ÿ`•åŸ,ÅT«0j¢¯œ"&&y|.Û5÷†¿�¦}œHÞ�E-ÛÄû%s——ò9�;óŽ5õÌ-ÍÉ4¨²#ë4]”DŒj—Ÿ—¯Gû@•÷Y=9—¹\ÇöÁeðòä×™C½÷H|µxâ’ñÎk¯i’jŽõ>K^oooJ�ß @V7î$è=çëï0ÌËAýW2èÃ�¸©”þ¼Æ~tƱ´|,Y²ŒA­xç½wq&%™ÁÈeLE# zça|f=ѤIŽSdÕæ(f@F-¥qÃÂzr ß‘cwGL£ ÔTÏ-¯_Ξ ?CÍ�;¢¤QôÌÃHŠè…ê±�*Ÿ¥ÎÁ9ïáÐÜ÷4é%œ&ƒµ?¿÷úM ñÁÇï±Ý«yŒ/0�÷K¯=†#Ç·â“™s�Â9îF{p®.Ež±ó4!c ™gнWý#Ú}†¬!ý•Ô“>Cl† UÔÈÕ(ýˆ<—Ë(Õ,uªhqn•� ~f@ŒviÎ@+Ë‘S°ƒs׎/SÎø›E6`Íí¦\£:ÿ]úõýjªj)õù,~^øY¥˜8v(�2¶xîùWëW¾õ)ƒ¹G‹9¹µ°½ûDT±§œ8ˆ U—ö'WÒ¥Ìx >ZL‡ŒìØÀ¼˜†5Ft"ep#ƒ’¬íŸ| µ§ã�ÁÅ“ ,CFG;ÚØÂðòeƒK'öÓ!èƒåóßEÇnÿäUhª™ÑyT˜x 7È¢öðÓœø€“½"äfå Gx Íþ”L˜T…Jy’2h¥9ÙhN‡�[Û,.æŽîp¢¤nêùct0Ò”,4ow'Ê$U#çr"®Ô˜BÏЈ2nÍp†y­.5Ú·k‡çßü ŽÉ*¬³cgÏ¡SP0œÊnÀÚ·=ŽœˆEbbÏÛTÙuÕ&NÇn§”¢F<ô*ÜèÈÿîË�Mï�°®½áÑ2ˆc3œ§šÆª  �9 [Ÿêi•W¹OÄÒ~öêUÐú ÞƒZ«îûVú;'ãTÀæÚ][)Gµ�T°ÚÌÆO€Y“\<ºNÞ·Y·uéx_k®�†�EÚUŠöý'÷²nû*•´þ‡vBß�ÃÉâ¿ .im¦=õC ózºµFÛÐ^Чڊ,9¹0ašyþ7䤟£rÊY”U›0p.-ZÁ/ ˆy»“y쨀ó&ú%Ì3ïÏàʼg,áè芠à<)òÿ·Êõ´d\:Šrîå(.*£ýwDìáM˜2ª?’ó 1eL?|õÑ[èÔ±>§ÊÁU:þ¿'¨òÈcOàêÉÃØxàú3Çæ[ ™ÏJ„ÝÕpá3cýô«°#°*mq"- =h§ŠÞ™¡œÕ9=I==~íùš_¡|èC"uƒUªØaèÇê*X''à:Ùµgç}�öLEÛVmðù—³ =‘§U‹ÿxð2bj)V ,táÜ¡ìú%XSÊØµi‹AVù�’ü•cÀ¢ìº÷ ¶Ý“ºÚEêÊ3'>§¿³¨>Ý{Xwl§}N¹WU,`�îXùÚµk”lÝCYïnÚ»Ý÷ýèÑ#î °Ê~ýv¥ÂÛP*_‹-¡ öÇšõÛ¨‚“…¡C(ì›yóærœaKõ›³¸xêöo[�ç^{·`-(/æÀ¶€UŽëÊ@âÿËòÍ‚¹¥Lºv)`ÿYRY…WÞ}9•¥óu†§�µRE`••¿oßޯ󿜧°±}|D)ÄÁ´Ç*‹õÌÙSøqÑ<¦´ÑÇåK) ³\ûœzG6°ªcÿ†l~ƒå©pàFÛŸ’ž‚Ÿ~Z‚q£GiVyÿÞ‚'ȼ¬¼×Xee�tp>èÙ!„Ÿä÷é…a�™Ù¢°$ýzÀ˱%,íÍñÞŒ·1šRäO=<ï¿=•ˆìÖaÅ3�@IDAT8.þþ‡ïq�€ô…+™MÕ Sx2ØÇ§iKåÜ×Ò®áÕWg(�±Å¥%JtôxVnÜÆ`Š^;f,,’.ãŠ_ Ö•aÁk‚®7è;è4bl<|`àB[Àñµ�•³Ò›’鯯§OU¢4äÔœÃ>2ïÍ/¦Á‚có_ L?~æá}QÙAQ9ðhq_Û.«*¢kœrLïó�2ÏRûbUuH Šãs™ÀtEûš!ÓØa�m�Ry7x}ž}§nþ*Çõáx ûŽIO=‡-Û·"žsŠgÊoî)Ç¿ÕÇw éˆ�NÖŠí’õbîÖÇŠ]P|ã�µÇbrÎúE“Bìš„›·�ª·çîr¿éö}§bSÑâ+<ñÜKõÕø©±[àokaÿw¦O믬êü€Uê6‚¬j‹5¾Ök1üºÆ¿^…ÿ¢j´‘tœšÁ´ÆIó_ô¿Jc 4¶@-s4k×oäÄ4„R[N^]1fôDF©> 3H}†�'8bË\”I8rè06¬^#3 E&Ì�ŽÍËqû”b—¦·L œæo]åÀÈ+S#2œ²ê�¬¼.9'ŽÇ�}ûaž|;OžÂ{Œ\/ݱ‡½Ylèˆâ´K ,wûסvïd?ûÜbc&G%Å*(5jiyo0FýR6tJ¹´ÑLœ%bØÞÑþ­4@dÊ¡M8p1]"û ¹^ "›TÁrÝ:íKaG¹ÌÚŒH&{ÃÂ×ç7m†uSWJ4QnÖþz8SX ßÄó­[Ãͧš·S1â¸6`N\Ǭú2jêu©Îe‚ÃIŽ™4ÝÏ�#™k¯< ‡ƒ{¹G-š§ì›žpWáÁœ´i§£(ãó2V"jÛ¬øõˆŠ�eeôs)s©ïˆZ 7[ùdÍ��጖.¶Ìƒ•Ç|Wùð¥|rGqy̹өSW‚µÍpƒ€Æ3�?€ž]C±lÅzº öf<Ⱥþð“0 ”¢—¯ Yh;Ð=²¿âL—ÉiC“ 7o$‘±`€Èìôäqtxh*|˜�ñe”ó)­ZYË6£tk«1ãQNÈ–÷¤ƒa5Ç2�(sD¦™™,­ª5éÓo(©¤ÆH004É&/Ï%?z-[) «\_Éåó°=sN‘:Ng”ºeE%NùØ\¥3ÛŸCóqÚÜK]CùÑ´þÕTãÆœ�Qy4Zañ–CÏF6«Ž7É;'c57»lK02„,q ¸*“}eà•ý;Îþ^X¥®°ž}æ9„†jžŸ¦Â¼@s‡öèÖ_ª4X^{åE¼õꋸDýÇ3¿Æ¬Yó)ìFfM;\N¼Èœ9tp4¥œ-sE;ÝSÔƒ•Ķ�)µ|½xÌ7`l ¯fõø=yRtAÖæïÍÉÉ&KÓQÙnB0Ô› ”+ ØG¹Ù�ý†Á‚à�••&˜DÏÀ²Q¦×’¿­¬²´'øâ%„]ë;ó&ŽÁýM¦Å»ï½‚ÞíÉþ`âò ÖÖ S�±ðnÝ ¿nüÐV99Z´�U+—ÀÒÚ<^܉Ýt†ûbs�I±sðF* Ø;9‘^�÷?ù§™cj`ŸÁx|Ú$æ#Kc­0ÄŸ?�ž}GáéßSò ›Wâìñýx÷�g1þÁ§q1þ8ŽÇ‚…•–¯XŠ™¾Nß×M\K»Áœ¸š6QNxëßÎÝ›ÑÔÇý˜[/…� ~™EvkfÍÿŽNO#øÑ^ ÈêIûäNVÝö­‹ñÄôɲGEY%N>L¼\é¹7q`ï 6™l„£Ì] _Ú[¶ó– kгG$™+SéPtFóÙ7…¹��àâêÆöuWrî§”fËà®JÛ‡E¬0ª& é ÿVð<Fa=�Ë~!ÅÝÁCF×�r«÷½öw«÷ž÷ŒíŸ,w«+Áˆúhfty÷s8ó»õ #ðû¯ùd`ÍŠ_ñÐÔgi ÄK¾O3TQjõnÅ>.ú õ^qõ8š1üCJ.½»Iûj÷ª#Í/9‘ŒÔJ:ë*îí…kýÛàTfž½ ›K±Øk˜Gw.®’Ü1ï&†z™À¼F¿|£‹�É”‘PAs íó©sŒëöÜê‡4,>a{ˆWZÙžjp«¦¯Ò0ªÔcË6µÀúÓÂoàVyIgáÒ¼½Ââƪ­³SFaq‰³6 õWçt7m þQJ|·W‚ ,ÌÍÕSßõÕš�E7K˜«XÃîW+®_»\yëHIíûO:Ñe‘R\˜�Êò22Æ4 �²Rç_ó¦íê¬:›ê}t°køÜÒ_ê:Tå CíöÖ>˜­ºÅÃÎŒ6Ã^!{¿në&„ú7¥s¼ÕÕåTé‹ì$Ê¿Ðnù2ðŠ ~7æénE`VÀUY¤„†uf�B¤2ÇsŸþý1﫯˜Oú|0c_�Yw¯Èo{G0Á¤‡p“ÁJm¦¿¡€±r_þ©çýÖ—‘vðLq@s_¹åùO±µ…M¥¿\#çýè›…Ì%�ƒÓÖÀØ’�6”G65×0Τ=-Ã;ÓÎé)û˱4L@ »I½e¬ÕÐøåÖ¥Ü÷%%å<æ/xzMáxÝ‚ÌÂÛcÖÃþÀÞáǜ莾̕ݞÍ; —Ïð)æì>`Vý2�ŠYh毿 ó9þÐf¸P)Á•‹’B:„2Ðív¿kieƒ_–ýÂ@¡$lùmFé‰ß¶¬åµVÞmðÑg³Ð%¢Õ(<™;{cŽÃ‹ý×µ«—ñ+ó¶'^×Ct™>>b�V³>=°:=qÕ Þž…cé†xùËÈÐ{/N æE¹pN»‚Ad,êÈqX s5¶<¸5;·`q¥¾¶hŠÝždÜÁ2éb]›-NÏAõŽ H½LÆ›>¬»ôÆÅ‹ ˜x+ A]ÅÞ¸°Oí@5…Þ—�zÞ9v‘ßM•�Vû¹ÇdläôÒ[&7£ö+÷�Ü;jÛ'cv)ÚëÕíê«l“>E½GÔõÿꫪ¼§ö1ì˜kÖëÕ�êõ_êv¹VéÛÄþ*6™¶Y· °Sç{³ÍNpþ5bôd<ö胺»ßóó§_ÎF—½¨‚ÒM˜&A$ƒìmÉPl¯,GŽh‚‚|}ýôfB…‹HwêɱÁíq×Åüt0�€3ƒ!þ]Ê7ßÎÅáÓYèËtR:÷ë‡.;À×Ó� §–^ØOæîJ½Ù3¸/=#‹ ¦fÌ©~‡®]ºãPô¦¶0ÇÛo¼¦¬…Ÿ« Ìyþ'Ø{0sú‰²ßÙ(­ÊgÚ O„’�ª]æ,˜ YF]·zÞÂ1ë½·ÁyžÊÄ®ÛÈ7°J±á˜w`ï~dÐz(‹²RëŸ�›?l8þ»Wqfƒ”($»ZèÓ@ÂÈͺ¹›L^3tl×�NxœA>´¡6Mñßxý ìØƒc»ÿÀÓ/<¯È?8n\m<wú%”ç³^ ß›ùH:…ST–Úy`™ìÁhКãQŽÇCö¥Æ”_ŸÏú«¨ cif‡Z}C|1g>rÙߦ]¿NßÇH\€UŠ£ƒ+"»tC×Î]Éà…ÙÅ(Ëe�5�Ú�«‹”1K+¦×Hâœ6!ÿzGaÿv»¿UeîXÖµùÌ#}DYãÒOHš±ê˜Oµ1r–ÎÎ�Í[™´5 [â/£ i+ ìÑ“rÀÝo÷öxIü¹êQÚ`ï 9�ZÄfI/ãWY$pNäõÕ>ÿn*rmê˜M=VC¯ò=Uå Ù'lî�õªÉ|[æäyºáýgc@ÿž˜õüLyêv¼·m,åﲓÊÁÿý©�¶ÜàŸúSÐXé?¦AÖÿ˜ŸªñBÿ‰c©L9¨y`é;­¢¥�ÙØÿ~-�š–Ydýjáj¬Ùv ¿�Í|XΔz½J0«A2æ7íOgKzõéÍ ^ Þýè-<ùøSpU@‹ëIg`ëäõ¿òg~ú1'/NèÖKÃ:'‚€mK¦!ûMJl’ÁtºÄ«éÌO£tߤG§á—³)dT\Aâ …sáíáÀ|Tð`N¨ÊøDXR.QŠ8*£÷Te¦›8t溺»Û¿³l‡Š’¤1w^1Ùo'öíTØK¶”ˆTËîÙ;° ã‡F1ÙF¼6#}¤€¸Êjxv�@yE-6ÿ±F”�òô÷D£úwíŽB…¥vŸãD¹ Aͬ)Çw�Œ³•tMR&.2iiˆÁªž[¶ëqòˆP&u²H´½Lrê/·åt©ùZÇ*¡4rUE9\nI)ž?s‰§ ÷z.¥SóñüŒWѲCW´¤c*3¿óç/ÄÐ#`C°Þɪ’QÊÀ”ÞEdD0ÜŒŠ°uÏì;ƒÞ!í˜+ÁÌU››•AV´# +ÊúáÉ·¿‚5åÛl¸Hiݪ�°J¿%Ž#™V¡†ÓîÊvY¯ùNK•~M&‚"©öiòÝo;<5û(;Þú'í —vµÀ¯ £ÜzÇz“›Ñ{±’ÌÒ:znäTS²5§Žì… %%‹½šÁ8¼næe ‘uN‹†9ó¹×-y´R|›6§Ô iÝf}ƒ&�ÅŒ2Àâì€õ(%ÌÓè0~lê#P� Ìh["­™H;+;Lyp Ÿú%3kp-™ t;8X›ÂÌÖfmw2wgD—Pì9¸ ‡Ç»`öWóÐ3²=®§%cðˆIÈ)(Vrq½Æ(}µH`‰…±)zØs#ë\]r3“ðγ½1î¡×‘�±‡QïÝѯåÔÈTr„oëèтڇ`ààxöÙ‰aF`;õí´œDê¹bŽÇ" M÷·ÁÙøXF¿û jójDŒJùϧ€UêZZX"‹ÌÝëY™è7pˆ²»È&w‰è£8í3SâFF-eã.Ä‘ýFg?Ùèt”^¦DyyÉM 6ŠëÚ0ÇvOe‚«²ˆƒ¬ªœù°kkж…?ìHÞH#JŠ;�}%¹+å¹× ák ÜùŒZ³ýU IÛi¥XçŸôVÜOÖ»q€Ý/‹ãL”÷”ê*`ÿÃßDE‰¹J´nCF$™9t¤ú Ãz·�aw;‡º^®GØ âüÔv’©ÛÕW±ï* ån2©»ÞÌ—Ã{":)¾1û”ÝÏQJóC{|±q'r\›«WàB Õ”¬¶öX7XX`/ƒfªËõèÀÕÇnÃ&&¼ô1¼Ù/XàÖ–®WØÀ?¹>ù=®ówqrtªk?m;"ï/ÅEÁÞÅS9‚Øs§ÊÒÓ¦7‹3¬^~ÛYµS²ÑšÙ¢;xÛÂØÑy×ðû¾#8C™f�#MŠ#z:·_ò[ÝUœa.8g:²Ó®\Äùã1غc:†„ÕmoèMHÇP:õC ræÑ‰{ŽlŸºjìü�Ï m AUݪ»Jù|ú|,%«àL¦õŸ-ùTè¨dhNpKʯK¾Åiæxbnâ¿«H› ˜¢qG SÖ˜$´Ç%þ¾mÚjlÙýÎwúè.œ¡´k`h<ñÌ8‚k. ºé„ij{øÌšÂÊÎó.†CG‘~ñú º“ •xñ74öÀC~ù>÷³•xü]@«ÍéXõ§<�¢ÒR\ª¬A«ác”gh¥9åL9f�ý­î.éóq2ú„5êÆç?˜rЮ|•²tÙRœ>s�d—Þ«ŒŸ8‘ãg¥J‹æÍ€Õ�Yjú (»I•˜ÊC2’CÈrm©€«Ú«ì(àê?°¦ÇÊU«Ð™÷÷_-ÍT]SMÆ$Ó!8(ˆ²½š¶�U–�ÀvdR;áHÜ9lúc†õí~ÇifÏùšÏ}<ƒÿ‚ŸVmÀâe‹Q�—‹¤d²LçÌa>ñ“ˆ¿\ˆ,ªQÄ�=†¦T°å¸XJ8Ù´d¿Ê¢–0*˜8ò9ub ƒÆª[~�µ¡r?€U{Ÿ]Ž!£PR‚hÚÀé¾[6ÁÝ0ÝðÜÆßÕ>®ŽhÙ.Ù…×1¸÷p<óÌ3pv³Bó¦xÉh6úæsØDí.èéê`’Ü6 6”[¶àøæŸítór"„ k×âðÁC?r –®ÝŒ»¿øÂ‹Ú½-S}tc€‰¾ ý”bf¥Ç4…03±Æç”Ž?˹E�"Ï{´¤ ýg¼‰îcÄâç’QÜS&?CÕ€Ó»Þ¾Ïen)vAƉR´Ç<òY ÔÓ¶Úc½«T‚:Í8—äE�È‘"s4ýŒÔ亖ãhÆG·ûM¿.[4Û4Agšíb¯bì S¦¬0¥ŸA>«sfÑ„•uš½oÿ—~RdŒ5纽¾áwêØ¸þ|±(ŠþJùK›8ôêë6AÈc÷êå+ðÕ/ë>Ô­µª ;ªýýî¹SãÆ¿¥Ô¶—ƒiú¹;ƒþ–5ä¿¢AÖÿŠŸ±ñKü«-  1”�òÀÿj 6îרÿ¹-àA楬QQÇððÄa˜4²/€vr•/ÕÒß_y@5ˆBGNþB)+#ŸÕRV\€U?ÏU@Ö¿’ÿPÝÿþ¯æÓQBI¥êÁC)iæ Ã5?×ÉæÊdä¨{;ä»úÀúåOp•‘¾Åy¨¢Lä�¸x¼ôÖk0wvÃ8#¸úû"€NÞ¨½»[W8¼�Õ‚Žl)5'�–›•çE2±%ƒP»”U×�ÑsGwîÂç�>NÙ;Cÿ} �Ëóˆ‰9A'¢=¾ŸùúŒ£ìfcf†2Jí#Ë3·ºžz•°E%~¯5ƒ¯—+ôÝ}Ð{Ú«¨60źCÇ`Ø(«5ÂÉø+¨¾™‡ÉÃ{£¼è:'xetlßD/:”2澋R 3Œ˜ý«El½´•ºÈgÝEŽ)LÅèy+Î}ÅùÊœ`‡·ÓÙ[Ï–í)g +2;ò9©ùøËœÈgÃÃÇ—`M¬�ó6,ìÝÑŒ²±³S“`CÇ^ûö­`ãÝÅyY¨50„SË0üÎüˆîÖØÃœv/ÌZˆƒ»™û±°]ûÆ•ËWà̉üUNŠ=ù{K)+¾‰«Ÿ¾‰¬ùŸÃ(¨ì—o6¹þÄ Yœ•Â.�T®Ÿ3Ãɹ*`¬škîú¬� ’»E1éê®Q&�2ÙU£Œ¥-dRYÀðøSt`Z—£Mn&6\'ØmLÆ1Áጬ|¤ßÈ@G² ‚Û¶AD·žØ´n9ª˜Ï1Ÿïê,Þ̇ב’S•ÅÙhå× ÇŽÇãå\3{GlQ!üZt­�5%¹Ý™û¸†Ž§¼1 1^ùž^�N‡Ò?DïAbAlé ¦×QÉ�—~„’w.xû§—ðÐ�éJý?ûO3±¯QÀiuò,f5ÚYŽ#íRL•"Oì?ÃܦáÊáe_™TËäXÚT&¸â8ОäŽ3¦`UvºË¿ë|Þ$�–8ß‚ b8k&È.;tàG–‚Ÿ'X¥Œó¤°Îž?“Ÿôù~wùÕËðÁ«ÓÐ< Gb™³‰÷ŘÑã•ã¨ÿ.]¼ €q®ª«äu2’¶¾Ul  ÀúgÊúõëñÛ†uèÕ-ÓŸ{¿ïØ�<Þëw �Àçs`Hß^xêÉQŒÒî†`æ5éׯ ˳Åèü–~¾Ì5L0‘6æä‰ã˜öô39b útî@©mkÄÄ&àHÌa¼ðÂ+èÞ‰ì¢[ß_äËŒêz¸“ÅQSFIâkh×.\Z�ÈêlÝŽÞ5 ïÌû¦”ÁÅde^OEÛŽ�•¯æDÛ¨]¢öoC™À¾þAÚ«•÷�Ìù*ë¾}{`ºqJf¾ýæP¦ìšÜ…üÎYׯR²=»¶l@¿Áà ÖH�;‚ ߆”Ö£“ÿfn2ü‚:aÿþí¨*)Fk‚FvdoHiO'·,çÏžÆëo¾€ß} ÅGᅥ>ý4Rtûwn#€ÔäD:t� ZŸ&ûª ÙæçP±äå-ú~6ŒÈ|7JM)(Ü·KqN)'¸Ï?±÷*òÌ ª‚%*Àª<ŒÎW˜ll‹!C(�MX�ž})óª¥ß"mÊp °2ö¡:ÇÚ½Î%ÛäzÄ §ítkhÅ–ó¹ðO·îÙ&x•ýÍbJ1«j‚£×29j,ü(ç-v>dÖp õ@“3g ÿÕ,|bÑÍiÓìª*°‡ãæ“õÎ)ÄV:3»wrÄ»¾Ýð!óš%²? cþd•ÙÕÐuÉñ•kã÷–Ä¿oãý‘‰6d—H‰Ý¾q§NÃÍ‘A Fxoƒ>)µ—F&ÏKì#"ºD:»¼ó…³¶�’ý M-•űiø´“UÊ}ß~À83ØG»<öÈ3ò[Á”}ÒÊŸ¿�­©1®�Áµë7Sá^Eœú `mm]Wí�]¿C˜T �¬u•n½9uŠrÝmC0ÙdeY¢e³Ý*wý,ઠ°ÆÇ¡,÷Ø2W»‹‹̬ï�îz ?±Až_YnºØcÁþhtì†JEï8rŽÒb]î{oÚX¥Hþa[æänÕ:–g9ºµTÖ»ûø¡wïþJÎie…ο\ª �Š>�‹gN ?+ G ¤}iGÅ‹*\´­·Ç¼_ç£õøÇXW®½¢¤�*$V°tðd½ÛÎäû¬rPyfÄ =†ù°�iK�j*”sÉýûÀ³tf?ý ss÷%Zôb>cÞ¾ätdŸ?Çß¶#‹ª$ʸŠã�O¬^³³ÞT@59¦v®MuÞ-—~VúP±šþY9å]ÿíÛ»™™èÚ­×]ëȆÃû÷‘gË<×~ x±­«kfiÏ� 6ÌaŽxSìä³DÀB-Wr¯Û´�lÕUˆ‹�æ=oGUœeº�¨}Û˜ó»=†lðżϕ ‘Õ«×37ûU2φ í¼§‡'û­á¸Â �'ƒñ Д¼–’µ¢Ø‘€ÄÓÌ|s¾ú ÓŸ~”yä}±*ú$û/7äÅÿަ ™>íårGEÃ�J'žÌǘG…‰ôë™h>b4çHØŽšŒ°Å?¡e’{MYùí+©†`JÛñÆL0éÌ¢ö©_ë–=¼»CXÚ(s‹w9¡nÝ7RGXfJ°H}„f¼ü r‰�S¥­•ûâÖ½%¿±üÞ2^•㨋nŸó?ZOœ¹€�æ.D¯î�ˆ’Ô˜�~ÀÄíXSªßŒÏ œ÷Љ“°°0‡¡‹+S© Ã×[÷£;;Ošÿ“òÁaðàAÒ aû¶mÊ¡TugC²h—¹ó¿WêzxÔ‡h×9ÉÀ¼ù ~aŽÑ 4kæ�ìœ<´ôo¦]åå½È$Ëò¯€¬.œ[·oÝ)ÙùÈ**F 䆊€¬!A­X¥þø±£Ñ9"œ s8¾øv!&Œ…5‹~@yY)¨Á|àºôÊU+Pp³£ù[t ñ@¦¶ÐœQ`U¯¡ǤÚãyY?ë;žòoÙÚ�ü¤GyÉú¿Ñç_}Ík Å1JÃoܺ!Á!Ú– ¸ª¬r.‘øÕšzÝ}ÌíH•�VÁ±~óoXºé'ÄSicÕâ ÐàOF»±¾ò¬ÛFt-Ï�>hòøQèÀ¹âüï>F>&Ö._�¶ÊØÚ´Ç0zôhKã\B"JËk¨Ó^M5}Õ—_~I¥¥Nl´B µ‘KÄÍôˆO! ë‹ñNzxÓLJ ÍEʶ%K—ñ:<ÐoÀC–Â*%‘ã¢ÅŠm’v•~@aRiãÚ¬LÔ@ ± š9* ¯*à*USÄT÷Àyv¼³s”s‰½°Nº€�/¾Q>kÿSû�M¡œ=S9~Ì‘CÈgppJ ´£÷)»”Z›Ãí4ÇŒ,ê\PUtRçˆÊF­ÚöLkuƒoÕ1…|Gí"Ÿåû ¨kÒ±+S¢$28;ý#è¹k¬2óÕï'çh,ÿ{- }ªc¦ÿ½³7žé?©AÖÿ¤_«ñZÿÖ�ÎJ"‰T™À¿õà�kl�¨’“®àdÜ 4mZ‚’M&ÇÖÃþ¡3ÿwVÖ£ÁŒ—n§ööœÀjÖ_^¨€gwûö¦æÖ ÀÚ’91ÿ™"³B™®ËJötU@VÍÀZ%)Në?~†mFî;¡�s>ÿ$lKq%£>Ù1Ø}ì ì,QÜÄñ±Çáâ@ç‚‘1̺¦lQ úÍx Ø÷Æš„&&Ý_yÄ$‡ 9W{Mäï‡÷Óahƒr‚0%dÀzùúâQ·­8¸/-Ìâ÷wŰGŸ‚óð™µíK²zEnùhR&ô,\˜_t0N2ge5�[–=ÃÉT;Š·¿ø–Œ\{Ø9y j­äŒ¼”x�’f‘}# £Æ"ã;á(â9næ•!‚ÒJ̘ÚÔ žIŒÈý Ewòv¯]…é(# :dÔ ŒM.�s[ERWÀµŒ·^Bç7(@ƒÉÌ×á7r<7>8ùÃ,t¥c® ¥�³ÒèÀiJ�ù4eC7cÓÖ?`Ržƒª‚ëp4,¥ r*l.Û™y ›¶é€/?y Å%7 &ÅÀâÊ%øn_Cç|2eZm”cç-{úvVh²koJIF†�±™9JU,E&\ykR[›_¦§góu©=9µ°K¿ªl—É€R¨áW^ kù¬tv‰<`½ÒsNæ”WU›¸…‘‘2t$óâºÀ�lyi|›·ÄšßÖ“ÝhL™@3JӦÚÀ·sö4§“Î3�ÒT”S3 „ß"J†Þ¸žNì¬.dÅÖ ¼]Ú¶i‹M¼¯R­L�Òy&€w¢s¥’“zŸ©/ä"ûÒ½)FŽ}Ïžbþ´P˜Òù}ôL,‚û BÚt¢SœÉ¾ÈïéôÒ;&‖I¿.p!ÛÅ! ëlQÏp)ÜO± S¯ÚH›Ë1îUâÏÀÁ©¾SMÀU•Ý ½oRêi|ùóT9* 2ímêûÙó?Æ‘s1”‰«Àú5[ièø¹«u¾[øj*ôø|—áÑÇ3?\kÜ ã¼ZÏŸ¼÷:¬,í`bá ˜3æ7RKú•³”3E ó,Ù·ÍÉZúéû�1õµ)˜öàsø~É\t W«+¯?-üZ9Πn¡6 "ûŽà³œAiàT¬]½JaZX0Øâå/"ŽŽÂIOeŽÒ­d\² \èpuo…WÞú¦–ÌÛÚ„6Á�":ñþè€J‘=£Ó9»¬£ÉêMÿÙØ½øfÎçð$3ÁžÑí†ÆÌ;k®05�Èò¤3úpôNÊ[Q–Ö’rÉÞ°µt¦Ü›;™ vÌ/ëŠ3ÌmÌí^ Œh¨ää–"²ç †6)뎓ͺûáÁð§\«Z2¬î­®b®¿@JD—)2Æ.n^̽¬qXý°z (™Bi0²ËQr>1 _~ñ5 7цùž³§Näáj–ýÊ´½X6g1Â"»ÓD¡'%ê>™ù!ÂX7aW ÌþΔu`îÐJæÚ-*ÒÇ :î+fL½åP×\Y�÷YM}M,ÓÓÔK½ë«ØHÝ|�Ò«”{\u‚ÉÎ%ƒGÕì_qfO»ŽËчéÐß­ØJS‹mQhº'›#ÏÍýØLºûý™Ïb³U©Síúq5z”äl‚x}xRuá:E­)ß92f—RMîýÎü“‡ßûm«+€µ€¿KÛÿjJ2–ð9«¨,Ç·ù¥4žå˜yìÚ,oGëÊ%‘€£YÔg ÎG[Y0Oo¨¨ Ø ¶äÓL}èO~aƒÂ�÷¥¬·$ùÓÏø¯A"mþñcQx}þZ…Éšpá"摵óå®CŠý×þNê{ZÕ" îÜÜ2^ïe²ÚâagéÃ\Æ¥8yæ^!¸#LÖÒâ|ÜH Ý�y+�@ʺºÜé+Ç6¡¼ 6À*ë„᪠°úzÁ†@l»ves½òàƒ�¸–rÞÍ[¡_·Q°0µ«·½¤´†Ì½~¯"¹¢“¯$¡Es?è—ærì1´^õßz æ/Pq<½}êmÓþpŠÎðÉÌs÷àÔ'µW×{oÍñ‹£“¥3`ç„)ÝÖ«x�¾¾- Bkž}cí߈Nr7.j9ÉœÅ7ÒSàê® š±³wDÌ™ÅÌ¿¼{ާ3;€i jèNÃc�MUw«{õòò£-¼mÇ*©^rõüaTWU0p® †L€þ¤©¥]êÙ…º輑ç|™Ot½™Ž¦ü�åþ•gCuÏþúCdìû�ÌŸ"ìÍ/Äá“ç™~­î(òl§’­}nõ¯h‘zE9§Å€þ¨2«�1í°UQCÞ ÃQŠêoÈnDEG+é1víØJ0#N‘döó#‹–coµ<ñê#J� ”’Â\÷Æ¦Õ j1¥ähý¹’lwaê‰ ;mXõ#<˜dÝ�ã ý¾a%šT—)㮩Ó—êJ¹ž‘…%Ë~an¿sÈÌÉ€û�Žl£­Naó–픵wÂ[o¼†g>| ë~ÿ o¼÷vQ±ä™Ç§bÑòåˆÚq áý;Â;4 ýº´anØdÚ”J\N¹F5ƒ“̱]L∯æÏÃð¡Ãðã’µëõ`FyãÚÓ±øØ) O GÚ“ZJÑ?<…�T�{ÃuÂÃÊõYPáÀX_�¹Ø àÐcÀ­±‰h— b—o2 Ç¾[¥¾üÓ0sÞW|!b›Õö1ùa\KMgt h$`‰Œ•Ä–©¬´ºƒÜz£ÈÇsü¤Þ+ �ÀÏ*˜ ®—êruv«¶ãZì¸ÜGšuw†uϯýùzf¶2.iÃÔ%E1ûM =|”~ÓºsœËËÇþèCH  žÊB/7ŸŽNðáøòPÔAt ¯?ÆQ�}䘢|”[PÈ`Ãl%w­º-æxf¼ÿÙÌýëVÙvòäIŽõ\1ã­�Pɲ¡ƒ¨»(¯G¨Â±nÃf„‡v ÊÃm»P¯?Üà½jl¤‡iS§(ÌÖÿ €U®Id°ÿ€Uûû8Z™C– ›Và7.Ùë´¨<¢]ÿ^ï·ï‰ÂÂï¾ Œmgö -0çÛï8'©AzVví܉¡}ƒÈ\í;ÊÔ_+b Æž=—€ãÇ£ÐüV㽎{ +7lA j:‡Q\ë7:}+×lÀJã§sŽ#‹õÌW”g)Î4.•¦8Îgèù—žÇ¸1ãîue[ԱøJ¶i ?M¿q¯ÂhwÚP&ÿ³>eµZŒ6†÷�‡2vÕ§—ÞUdpÕùIô¡Ýðõ à˜·Î�g¡÷ßWêýÝd oÄ„ÑÝÉRý„s•Û*ÞÞžøjö—xjÚ |öÆ‚¯­0bòóØ´j%hÆ�~õ‚g®$%+Ê ×ñУ¹xþcAé_TðRe�ªlsyî5Á8š¹™Œež%ëCÝŠp²Ïe|¬*²(ªÎÏÕ¶¿î{ס´]P�Mb’¬/¤Òɧ§#%õf|ýÖŽB`M\ô8?NÉTwå±"•öÓN5¡Ú¢ºJ·ÞÈz±_÷+ó¾^€ŸŸÁà7'4§Ò“v{(‹(Ðæå`Ùú­°b®o_M`­v]õ½Æ†jÚ@Æ­b;uÛ@­Ûøú÷·€´¿þ`)}¿‹W^{“nº�,zšì�‹H§&òÉè0ú¢™K�G7õ’�~Sâc°bÙWdsÑœª{{¤Ç…#½$ïÄŠ×× CǦÔFüŠùvÄŒ´˜ÿliá*Bɼw_mhKyZJ+ë›5W®ÝÚP aHÚÚ»4ëïÐêå~ÍÌ–þùƒGöcü”Q0®3¢&ÿp<óÔ?0ˆŠºaÿ~añx£¢®„`\vnߊèèHj™»Ò÷’å5¸ã.úýéê�sg´@a2f¾Xv'ÆO#§ŽÄ?Z‚‘dg’‰]cfNmø~XñÉs¸çŽgˆq›7\îþ{oÅ�w?€ºìhR8°y{LlÝ1un?ú݈©³f7¤ýˆLŒÞÝiªœuˆ8…›hN{ÝöíèÑ=û¶�GŸ^F3deJzÕ<ñÿZ‚!CÇ“�0 úžïT1Æ�žJÓµ”±Ô ç#Oѧpo½ØÖ¦‘9^FÐÒ�>²�8„eËÞÆÍ·k…ØÉ Yxâ¡'êÓÚ~D-U¾9q9QS]�ì¬$úxµ#£ì˜t1ô,ßwƒ+©TÜN'›·íÂ�‘£áóÅ{8C€Í·š"¨ú e*Š|¯÷^–Ñ�µ�»| Òª®¤Ü4Y-²|s=¥}ζ‹nCYX8ÊÃ"Ò¨;j_§Û§I\•kŠ� t2RMªôŸO]ˆÂ¹* �¸=„¾`Ù¿Ùt•zwXò‚RgñÏ'÷ AدšWûȆÂn°#uPýüÝ i³§wQÉaÇå|œ!GÀÖÅoTáŸfŽx�>%}KJ•úʳ s½ö.ÅÑ_ôÛ©ˆ17Æ`gs$wt‚7¦Ý¤wå3:GËóhY‚Ñóïœ�‡ï}&ÆF ?‰E·?ب.áш‰‰C²I+ ‚8Sð.¾k (°OIMƒ»“5¾_½«–¿®0ºßúd•’ÿÛ¯¬÷GÖò�ßçÔädš,yñ4ý·ö6!šv![Ë”ÞpKp|×V ˜8�Êíñú ÏÃÓÛ7ÝÑ2ØØènpp‚æâ÷m]‡€®Ý1�ì 5D�9 ÇO?æîìãÝ}šöó©é‰4EhA ö²’írü9*î¤aÁ=Ú1[-K€VCÛ¬¬¯ù½»’‹c›—â£O~Âs¬¦)Yíû¦æÓÿ µ;Ù@-…Ÿ]Ó*ú„OÌÅ˯ý¾þ7zKYûŽnCâå8Ü1çá–ŠnŸA€UBW-ÈúÔ½÷cðø>T¦¥Ä‹âÈåÔXú77€OçÆBZ%�Þ?éûí­hν<VôG˜WnB–tÆä¦7Ì}ô²4:L¶¶DY•¦|³^×ÂieBBHP0•Æ"±tÙ‡XýÓn|°`**ÂÏã“c§ñ¯ºÂ†2äÛ× ßœ9�Þœ‹ºÚ¥DË·¬²àÕq¶èèþ†ù•zþÈáý8h˜’gÆì9ôhÊyÅ0œ¦‚éÄñcáF“™]‚(ç[û/:üº�!®Þ{ý%;ºFüÞW­Ù§{ªÉþ£Ï¾ˆä„Œ;~®öJ¿òÍ…ó´$ñ&ýOf^¥)Ï{¨œfŽWÞù{Ö~Cˆ ŽÍŒ*È�O¢ëZn‰¦‰Ð|¿~ â.bãö�øeóÏX½i'†ÃiÇ�¸hìFóÞ¾C;ô¤ ¾]ï(¥e•Â*SX�žçhiÒP•ª*ú:×SZxœ¬ÁÇV,C†»¬ž]¬ŒU’A·Ï“cus¡ÏàǾ7Uå(ï�ƒ³S²ÉÍ‹<šë‡å™É<úzs!)ûzAÞ5¨ó)™kÉõ¤onmøqW˜’tî˜Ð†,RŽÕœýÇ_}…_‰1CzÑjF2î»{¢¹ž>h2Þ~ÿ}løAÛ÷*™tþ‰yþZŠLW“Õx.ê"}x>Ke¬ÑxŸ@T-$¬øt%õÛé ¾§N.íî‰Óg”�¾½šžk’X'bóæ-˜2e2¿¹­¸ÀñãÕ§Õ9ûß½+ kíxð+AÖ7–¾‡AÃ…ÑzèÈa‚¬ƒ”ÆøqÃxãí7QRTAÅ¢‡±ïÄ6 ìs³2¹ù…­øÛ´dê<<ñØ­jÀé·Ý‡Çï¿‹åÜøÙÉü&93y^T(!sý޽§ñ}½>þè’V]ë×$:yò$çäËñÀýЇ­ <ÈÐVûRumª~;'ŽîÅY2P?âwêßÅk7îQ.5wÁmt%Ò÷ß}'&�‚o¿ÝLED+¸¸à½÷ivùèüøãZ®×¢ÐÉ;�Ê?ÇZe­G ×ÿîÔ8é+Ô~^úu*}OÛzÝI¨ý�Ì{ÕïV©p+þ�]õ±rmçŒ+ ©Ïø"¶·?Üöœ(°Éºb=€fÕo4UûBý9«Z÷†Â¯³# «)•Åßåûy�”m§ÚZ ­þ×Z �Éú¿öDÛîç7·€ êªi‹ß\H[ƶø“[À†fJõY¬ò%ÿ§‹3}ónYˆ…·ÞÜä>­hŽÎÕß=‡&çþ®¢igâæ†²Ÿ¬ ¯ +÷2¼‚0ó–ÛÔwvíÚ’!Ÿ’‡˜ødËÌ�æ2�k«œÆ¡gh`£[“~Ñ(‡ZÔ,WB{‹vøöý×i2׊S?ô6Vdˆ}Â…ä/O˜¿ø\>ý'™¨“ÈhË©‚áîÍ0ðóe¡Ë‚EŠpY)LçßúcL$ÐXM‘TΕtwÖ }JÖÔTÐߢ!.±n½-�q~Ü-°M½Ma¾Nîæww¹ 0LmÕÊ ‡Ô/Ö´Z ²ø<••†Š‰Ó‘àÓåV¶ð‰?ßÄ‹ÊøT¯`õî'¸`a ûèhEÓ^4îÕ »I0:™ c§¬LÜúóQ.L{ÂÿÄ\yì~Ÿ8«è‹ð£iÝšµß¢2ü8¬¿ýnÉ>"³ABMâµ#ÃÁÒÛéɉȧA ¡«²ó`Þp³¦?ÕëÛ¦&GxοMñß'l1¹Dø€|@-R^_aÂ9YàʯDɯ¤‘_ñãfS[—œgeåÌ+¢€&’¯\-¤ð;—€W_ÅtÓ¶-{Чb×�côˉî\ÈSØ4aæ-0¨4¤v~7´3ªEbF ý°`ÞBL3�.�Œamëwïôí3‚­™Ôúj!•BÊ•×ú“imç@Æï M²Yî€#fbXïQØ÷Ó—|§G¨Ù~÷¯˜‰³ŸÒfZæž–U¨ ýä²/&…å½� LŸ–‚0X§Î¹©á´¬ñÛ\Ý;#/3e4‰mfi×p^vlÛS8s�àÑɃ ADD^üdzdóXà\ÄqDÇœ€¿_ˆ’ÓÓÓ;~Ù€â+Éd§á*ßѲŠJô8ŒÌŠtõvcZ\ÉNGØáMô�¼'Ϧ¹CúDÎ)AG‚"·ßù(�B[ú§ó"È])·g×`¶kŒíO¤/Óôzàø1˜Ø{bùgbÎüùøüËOÑ%°#Ê&H"ø#Lªn4—–™M¶È>ôéG¿ŸÎN�G'²¸bi Ԉʞ¾022ÁÍL'Ë$Kî‰õññ1t ÆV Ÿã.ž#«Ã�ì/Ïf[ÊYG¿Ù׉lß¾=²Ó¢ùlò±çКº�Šu2¹åãȉ£�’„Ôí`˜“£¤wö꡼AýC)Õ�þˆ­°^ ¨½uû&ø‘¥'}§�uÙ.Ä„£ ÙgdñÚÙ»bäØ èT”¯€˜öÅ•ƒF¢–Öjh¡fçf… ï£Ú‰™Ea‚)f׸ŸDÓÕÆ¦&Ê{ÙÏU—“QE³sjhWDŸ¡:,V[ �Ë ²VS!B?C@ÀT]á“\·òÌ)Rgs%Ï%clOµ1¼Jó�`k ³î�èÔ¾Ë芖·ùž¤ ñ- rÑþ×eÅ6*´…Ñ—z©ý[ ÉZŒNÒY3œÙg×™`tM%ªhºÐ—à´=û[)Wêt¡¯"ûúÃ+:ß»º`€µ1æUW œ&3ãh^ôjFѧ\šm»‚hK�f…ƒ ú„ àÓ †_GúAžˆP²<ôƒ(؈YÈè‹QôO„*5IÐhÚQ¨éˆ¸ØX góáélƒ-;!KŽ lú†��9Eó|ýâš=Þ¹u MpO€©A;ö1]9o±AW~séIqô¥M_Â!Ýq‘¾Ä½ø98w yiÅB³…µ22•J 9IGáïéˆanQ@Vݬ9ü†-¬¬áßc ò9^v?ì=ºÀœæèÕ`ͱ×ÜÌ;¶óÛfý®Ò§yö‘~�Ajå·$7ýŸ�Ñ�âÍ­ìá×k:Ø›£¬ÎÙÉ1èèÝ¥QÝQ6i)\äw›�xý{ %³ y©ñð¡yEs ­"VKù$Þ«£/Ä'Ÿ­|½ôrΊækeSCvFfQÉBaâ·WÖ k—büÄ[Õ$ ¿ÉQ{hÞÝ’ÖD=N¤ï/«¬ƒ_ð@ÔѲˆ§O*Í…*ýƒÊ(Ôg«KN(Ëw°¼W(2©DPÐчþ$û`dží{wc<AJ‹rP‘¹sny =ÇŒD]p/D_�ÇÈoW#蕜_=ßÀNTYŠé "ðûåõµÓ²)&ÇQuNY™JF'YKÂÌQý!†uÆÀÁCh¥ÁsçÌÆôé3L³¾ãÆM„7ÂŽ¿Ò‚EÍÃï£5ošÔlgi�øØ‹Ø½y}}'#%%ƒ>’Ý�˹չ°0ô½Щ�<Séß‘Ìã º;˜=¿éóPÓ•’më†ó1ñ¨-«¢{sÜ6{*ý,:Z5 z­L0ñºu?cÙçßÑÇå&ú§¤ïm~ŸcF�†AS Í›gæfÓL)­™t†™÷ÎÅ}ï,ÇÛTXË¥?{ߣ¿À�ói3cú¤å਌Œ´Ç®ø˜þ馨q¥w>ü\ö“ÚöºÌ0)BÞcä™,¨ÊUúo‰¯)-1È?zP™wÊ»¢}V_(cŸÌ‰äÝÒ�'Iž_¤>ê¦æ“òZb‹…q}³eÝj*þ D|V9� nÒ²€•e“ @�€:2Iå½iRöÞ…·cÌð±èÔÇŒ€£½ýIöÄÜY3•|Íýûàú"¥‰×Å/|Чï¿œì¨ F¿¢=º“�ì‚ ~»nâ‹•›~pgœlj8Îþx݆MŠ»5®¹ß-[¨3`ºøÑM†½²5—îïw”óA1�}½ ìUŽq²ýšàçcƒ¾}áÑÇŸÀ !Ã1€¦€ÕЭK¾Y¿™)Y|.½°ÿ@™É}щþÀ£ ävÏ£ãu;Õ,7ü�7}"ç¨×ž�ny¿´ ¸µ¸ÜÁ_�ú½NEÂÃ%C7ìÅ�Áƒ0î<Ý,8E?mÚL×C½ÅÿÚ7®ó§N�F|)¾ÿj9l:šÃ¦¤NY¿Hdó&DÑ"ƒøö¥)C~#?ïØJfê½Ø}`/NR1Ê�ý|$Ýóp�E寇~‡v¯DÚ… Øõì#¨óÅL*CZÛjÇëŽd2·6(ý¿a5¨ß¢Ë }ŒÌme½)qâêæ@N¶Æ'-I1‰+çü×ï•S­EG÷ÃcÂlø’}«ôcìϤ¿zµì*$¦bPj–Æ™ŠbAAdÒ/´Ôy¡üJ¸Öï}¥·æ_ß>½ií >HÐG¯/cމ ñý?ÿkÓñ§5×jKÓÖF ¼ýÞJ±-ù¡þ3®ù¿RfÈú¿ò$ÿÇïCõ§N’ÿèÛ•Á?ó±»” ØŸu�?ºÎmåµµ@[ üþpqqæB9˜ @ó ½ÿ&€UZC&ò)�-Bɉ#Š`zÕÙcè7h¼èǧ…›î~8xà …·44 …þÉøðãáL–é2…ê,ü¤_ÿ²Ø‘~1…¾ÙDˆ‘G¿š³ï¸6¶örI%8‡Àìõ'ñá•r”h4p¦ÿÛ¹óÉÚ)ƒ\8�šŒ¤übô:i\ð° vdpJXróØÙXÑïU8Òˆ�y¹Â¸�ÈÜè5x4b#ŽÂØÚq\M  ¢Ö¬JÁ $x„hÞÉÂOÌ�Év‘ F¡³3ú¹8¡ëM·Àu Msf,ˆ`SÌ¡ÙwëÉ-®ã¦)í¢½NÓÿöd(zûCC²˜ôÉxö!TìmaÁ˜ÛÀhTÁÖbúÌ©ãŸEY¹rJ]ô5JW`åì\PRZb“½æ�jÎF€SÙTAªšOîK€Ô1-Ü8ÈÂW‰§Pn­�MO!èF0¥¦1 é(.©F^i >\ù5Š®dÀ†Ï/61Õ劀»Š¦6k�ÈêË+FRj âb"0‚fk×mÝG6}Uý¼!¡Z6Q,�‡g“äÅÈO@IDAT§ÍR*!Àª»O`•#¾ Veq°qrÇš÷³&(ëÁ¶í@�øXÛGÓ|¹ÙItF|bŠ"¤·#ðókƒVºA಩€«*D”_u¯{î»ï¾R²ëûXUË43·TV9^ýÃJÞÿ@šô5SO·úW€ÖÞüNO�<†üãI Q+iØœˆ¹-é³.ÉôÕ{ñF��Œ^…åu|ÙøhÙ{Ô_€í›~ ™ÊTxzùâÁÇ_A9ÍL&d�Æ{Ë?%'»~ÙŒqô­´eßXÑÌ­•…Yƒ5’ Äo/Â�£ßÂ×3˜Œ9g¸ºy)&í{â)Ô”Rð_MÒX¾ô_˜1û&„ÑÏjß�}0Îæ5|êØ x¹¸átô>¤æ§à¶y×X\¹Ë&ÂtùŒëåȇ OÃá†F÷ÐA×m3é ¯ “¯%Õ {^RÀJ…!ª#ºD]Âgoἑ,^¸»v&¸PŽ¡C‡aöì…Pí‘.íìЗìaQ~øö«�‘Ceªöè7b$Öóù‹ùUΊ�ùßÂÃO!—>Î|ºö¤ùák`Ÿ”›wAa±ž=wQ™7¬^¿!GÃ;¸)}‚uÚ¾i-êh’Ù“f…Ý<¼á^Ô«u,+ÌUvíݵµ¯þz“½>uÆPt£©ñ`šk>zh'âÉÀ‘`cÛTQ.êìQÝ»AýÔ"hÆÜ ™´>N¶«‹½­'X+«�K§†4×Ûù5ksåë±àÚ³ŸèÛ’’´4?U´¶a¢ÑΛªh^ÖÆÑ[9W�› -“H°¡ÏP '~þ„ç;BSoVW±ä[’9‰:בy�(�MøüK¼õÖ'èC…›„¤x*@ P¬°J8x‚~éM<1iÂ|çŽ4Íì�À�xç›E˜<ô%�þ¿Þ4�+ý_ca¶¶?”þYí*s^¾_uýýä3Ï+«”·råûòC6vÂî ŸU-ûM‰¼Á¿S'O`]útR¾â«V@Ö«TËÊJ¦oø:šÑî€;î}˜ /ãðÁ[Ëh–:•cX ÖÐÜý1º¹�ˉ~ÓGꅻ3àHÓ÷W·6d‡G¥ 19— Éx¼õücõëµT2œõ&KUÀ›çŸy˜¦ó�¨h@ŸÌü å\ú¹—ž#øK³ËÉWaÐÎSF¤‚Rßú9Žî‹¼xöÕ5†4éÜr]„êHÓçCPÏ™2¶áâºc¢¼ dJ­§†°ÏþAµå�úS™ ƒK@I/›”SQYIEÎ+p ùóÿdÈ rŸ(øU™ãÛõÛ0ixoåòº«DèZ ‘ù°Ü¯f.XŒ^=ÙgÒ¬£ÃõûÂãg/`ýÎ}˜5nBºxâ³ï7bÒ¨A|n.jq|ž=›Xèì\NKWL÷£9æëÅ'f}YÿÊ�œ^ªôãšvõ“±*#ë̹³þö¦\²O¿A˜=kŒL5xö•·ñ ÇtÃÁ}'ñîÛïò¹º)î*ª¨4Ò3â0Îæ—hìi)%}Ô$øOŸ§›å7ïËû%ë(oËéwYØù}nº§ÁŒ®ýµ«ádØ)¤Ñ¤0—?HKOÿÝ «”ƒ®‹ „’²tì.Ö™^æ5ê�Îy|绹¦áí¨àwšþç;9#€ßê£O>K€¿?yðAÌš>so½—ãmgÌ™9ƒî{Á³k/ø„¼ç¡G™n•¯C³×ê½´æWúw}âŠ:åTé?´ë'mi¢Øëy9E£VeŒÒè{½Ñ5…+å«k2QØ‘ñDL�½’ÛzÿÈRŽº¶»@…”l*F:± uƒ ¨ªsJyÆÖsnÕ¨J@ºi[»¯*ñªcœ~¾5«7)QÁzV¾ôÓýUÇò•Z„Á*›v¡tM°'~Í.'';äÔ^<¯ÑlÙ ¦Å甥 eQ%‹>KÔeYÖ!«ÝÜ[f¨\׊>WU-Üæê!Â(Yä #L®­>“æÒJ\ÁjKÞ·Y܉–íÙ³aøÁÅÖζÙíÌ4~\”ëu!(éeÑ(Ç´E«)MMQƲƂMŽm¬‹Ü—̤,ù­64ÐȯÄ3²�°ƒ")WÓÍ-ÑðYˆÐÖÆô›Ú…õû¶nFum%bÒ³1æ,²[³PMÕ�žN¨©¨¡ï½NÀÜQ`h�#;wÃÅà { ì'%$¡ÒPƒÚšnÕ ëÙ3ÇáеÁ¥ÔM€V5¸’%ÐÎÚ™ìÍs4›ŽÎ41&Ñ|/?ø×˸ýÞ‡”rÏ^ˆU@VúíUÃêÏ>¢ä*Í]uV£šýU�Sý“Ê3™£*Ê9YlÊ;¤iç4šÕu#ð.¡9�uÆ|?ØÑ4nþ½·á„€£›~A§¼ 6ºÓ t7âî»ïÆG+–²2"Ü•²Zúw‘~á>ýx)^zú!ô4Qa—––* ëñã‡àIÓa]¼;Â�¦À}}Ü)ðzA=zÃÚÊ—/aÔ„¹¡¯*ÿîÊ%ŒiÒª=AÑŸ`Åü¯ ÁO‚4°º:ÙâÐ�=X¿jŒ 9˜ÖR� #LG,ÍGoûy=ºwï-²ØÓ§ª%¿mo/?…E+…gÕä!<ñ4žº÷ 8|~LÉXݽês²EgbòøÛ”8õŸ;Ù´²ñµkXåÜà!à ¾No°Jÿ¥UœÛ§°'ÕrEaO„Èò-¨‚U(#óÀÜçž„ERBzöÃ�že;zbè°apíä‡x²D¯’yØ¿÷µ¸F¿rÍšÀ3»C€õVØÓt°¹Žz UÈ«í_µæ¼åý“ºŽô…lLeC‚äUgN*ß§œÓö_ÚKɾî±6öÚ9W`b‚îZ@TÎÄÓ§æë®¾dFšbSÏ.è�˜v-C {¤€UB ¿Õ\úÐý´�~!¸’Ⱦø§¸ ² ]á’‹îƒiNÞ–Á`ñïW•~HîST¥/‘>IÚázu×¯Š˜¨,-)±�\KýíÇA ;:ı=âÉ O¤Môr;S¬óëŒI™øÑ5« r19+þ%åôÃÕø*‰¶VØ€žõÌ^¯ÂR‚°5°IMFdt8v»Ûâþ¼ô‚®UÕ=Lµ@Cø™c°¯©…cu�r¯—©0�EÐÆ¼£+Î’QÞ'x(«4©—ˆ~\�R¶—ø²п/r1uÊ$öŽ ‰%0oej€“'âÕsçÌQ’ž=I…žÑ«‡ö:æ–4ÇÑL¸ÿ¾'€5œåj>Çøøh*’ø7YO�<Žý»÷Á§“;A»Æm!î.ÒªDO?2íÃÏá ÍÌ"#p¨Ž/Ëf.ý§GfÅA6k?åZ:VNï^ k{÷ UxvذêWNÖЪR‘ö›¬Åð‡ŸF¯>ý�C àð®mÐ$Äbß¹sdvöV²ÿðó ô“Þ ¾Þ=Šs°qm`Uiû¼k@«ô"h–þVúhu¾"éEaA}/ kOöÇÖVÚg.æ§oNž>‚ç_~_ù5}Ù.F»Úb8Ї¡µ³—’ÕŽã”­½#º÷Àø©³ðÚsOp\qC�ëÂã{P²ö3¸ÓÏp—~£ÑZöVYe YÄ%dT¶ÃùÈxøûøãÍçàõ„¿Ú|p£?P G�ŸÄ�ë6’u×G9ž:y*¦Ož‚ySFcÌ PNÐÌÈÀì®´›fÅ{ØiÖ‰þу[Ye|©~ëyhÓ�ÛZ¿M•‹èü“ôj�ç£d ’>XæÇúÁ˜ E;ZR�ßÿdp%KRX¬©é™È£OÏ�½µý‚~Ö4ï_Þ+ýú§Ò´ýÜ™“ô³4{ìN\V âïUžghP€rÜÒ¿áÇ#)) Ã8ÐâõF«~ž¿ú¸ ¨Šï¡‘²]¯.Â`ý3Ìãª×tw×Îíû‘%¨°Jšt®•^|åUxSá̇sþ©ôƒžbAM+W„õ‡ýÚ÷êÞüû¢^£µ¿2¯“õ“¬ùîy]¼È”gߪ†c:ŒÞŸ¶nâ¼Þ }zõþCV¹Æ‰ÓG‘GžqœÓ»½ñNCŸ.¬PÛêJ�íO�Uï3ŽÃþ´hõü¿_!ðÜíÝie‡Vh\è«VB-@|ùÅJ̘<öœëIp¨¿�³Q§``\‹ºõ¸^HM‰U±Öõ–`¹:÷•ïOú¢Æ}ü5ÿ¢2(k-¦S” Xë¶¥¬»d¨+¿V”$Õù´œÛõý7p­ï†T€Vͯ��¾Ü¤ú{¸î¹ ÎtƒŒ‰Òç©V¤nªâ n:ý}©‡Ô¯9²È¤<ý~H-ãÔÉÓ UüÊ«q—_T…{]¥Ñ¿KýÚêñçµ€Xhc±þ¶ömY[»µåú�- @¢Ñ®Ž×+J+ˆzŲÂ&}mÄëåoí9U$éµf$†µ6k[º¶hk�ÿ‡-ðÓ[/*wíÀ…Üß%¨ U�-}¦ÿã¯áƒŸ¢S`¤“eºiÃ2fJÉD¬€7MòvéÙN.4q•—Š”Ï—B“’ª,pâÏCéè1Є…!í±'àM¡çä™0£I˰Ãû²æ`ïÖabPG¦q¹+9(Œ9Ǻ ;r€‹�*¤Ù·‡b+LQÝÞ”×ꆮ½†¡½£+>þä |øö+ÐcíºÍ¸’•„¤ô|Ì?­àêÛFY1dþu iCT£li²³–f­©¡Û®¨¤I³G´y×Ì·RûV_P¤=&ç�c�²o@C»² E-q²@TÌfý‡hœ{^S×Ñæý’œea$ã‘jJoÒÞúב2ÁÎbúu»ãø¿ðc® å¼n�g´Ÿ,]Ÿô$Ŭ¯ÅÜ[mÄ�éÁ]°HŒ�_V¦f=Šk\Y4ï�ôèB”¿.ïnÓ÷Hú³KqÍ–/ej¯«Í§²·$^ê(ç¤ï‘_µÿ–sª…ì·6x”7JjG�t Y€•åå0¹’¯2-+S7Q¿kÛªj%Jú$-°™¨ÔÅ–L ì ).B×:æµ·E¥•%ji€¼Sßã=i›fÀ×|³ø8%�®b‰ô'j?£{Mµ¯Ñ=§*wH:£àž6ê|<ó‘Û JÉrPó«é†§#møld³—cÑÊ+<šÚÓ7­= iž{ÜÿÀs�¼ŒòמCÁkËPKF®É…pµäÓJ€¯ü†8§zRC ¾OÍB¹£¹æãö6šL2õ™ñÂþ=0é7 Óæâ«ìË<`$ž~~ â’"h¢0Ÿ~ô9Š ‹�_X €™ýÉ´°4ƒ)Á1 tÍ$ÿy§f™˜š"'?v¶ s߀ŒE[;gô¤@¶µ¡´´ÅÅŸ|) U5ìSE9æZÈ%xŸMÔ "NT  róºUøéûï1hä¨k [¹giíxw»º}öüÃ0(ÌÆ¹#G`Ä>Æ� ¯·�.]8'Ã] Ø�Y{‘—C£«¸„NTV�õ� ¾Tä°øé˜<ý˜2ïRçEꜪxâ\)(âZ o¿ó6~Z¿…fûéWÞ7Eå…ˆˆ>�î�Áèß·—°¾óêã˜<óÖFUœ0N«ˆÐÁŵQ¼þA$Ý–Dž?ŽnÁýN©}�.è)ßâkS‡Ã‘²GîƒuݪŒE4W.ÇÊ|˜û2Np)Š­ê¼R@díØ¡ué’ãï‡Ó\¥B™û~¯E�)yD‘H”ge.¯Ž?2·W-Ÿ¸ª°Jå¥ËRæªä•5„ü6óœ%½¬gÔ:jçïM×rßד{÷&«]L@ÿƒ®Œ\}–Çz¶Õ©­þN-вþMž†tÐÍMÿ&Õûê!ƒ�°{d‘¥+øjîêÄ_='—˜þÒŸì«çϯªÑ+ÂRp·…¶hk�ÿ¿-°që.È6¸ËÎMo¿„N¸ÿ. «ŒgK QÒ«? gMGïe«•ʼnÄg^ŠD7oGú\t$Ëọ̋‘pòé oßÎH¤93Û=›‘óü0KISúf韫ÉÔÉ£YË€‘c ŽjÔïútƒlùZ= ¸TÒï ë¤¹(ݺÎ=p!1^÷<‰°¤äПݳo~ˆ¡æ(k<"ÐÚ6zn»s1-¾‡~")ˎˆá#°vãvtïì†øóçaDá~&}�jÚµC<™I–yˆŠnôrª ËRÞ—,ˆ’�¡šÂ“sª�_îK6 ²U¢� ã�ußûЦƒ“�G³ÂâPY¬Õç•2”`ý±~~E[uØX…1GàYLHÕœ¥60†rM©“˜Ï6mEZŠÁè>WÌ˾Ϻ½ � ׳«®R{™Fë�=°11©dp&SS¸÷„©ð›ySÃ¥å9Ë"P|ª÷ÛpòWì¸§Š ༠§·³_Q)ŽÛ¢ÈÌž¾öº"Ø¿ÎÜÊ0Áд£_½ÀÁˆ½p–þ3³�QlHfS4¢/%Óœo'¤Eaö˜T™:bÚ”qHŒ‹†›—?ºø"†L/ÿ€.JÍJh~:”Öë×NÞ˜5÷&š¸l,èVçNò[eaŒb ‚,íx:A@ÖR‚¬º óæ»ò¼«×|�ÌP ³!ÏZ»8g$s e®VlPç\vì`…½bô¯)3ȳ–ïÀiÉ?5úsFùvE /‚@‹f½ôì?Ì'΀ÿO)Âù¦Ôy¨ÔÍdß/°«Ð~“"àÑŸÃjë®W%ª ¥.›¦B앹§\C?4§Ÿ¦µÇ¶Õµ ÀZ@Óµ ôÕ ënš8­g¿Ú®ÝƒƒgÏÀüË�”þGÚѬ¼\Ócþ\8ÞI¿ÚƒGâ¹·—Ó„\/DÐ}ÍéæìÞ¿½{ æÊ+KHgPú9ggâ,%Öôƒaëâ”UXRê,÷*‚.1¿&ß�”/ä›Óí“Å<»ú�Æ?z—F|K«fÏMR“³ä;]çÐÉ&ŽŠagÏ"ذ w¥'à*}Þ‘‡5¦ ãüÑÛ‘óåFX}ú.ŒXW£ì,õÖa[^Ù`•Ñ4ÏéM`T‡ žÎ*ÅÊø"ŽM}q*œfø«‹±3"B1§êIÅ';²ùÆMÅËϼI_Õ8¾�\}¨‚»ïº“ßS{`•²u¬rlNÖ·°=óò^eÝÒÓ²0cÂDœ9{�‚ºK²&!2òý'gÃIGÐ]EóÇ5µ4»@¿Ç…dcê+­$ÆFâ‹eoñÑo{M.DF�š)8¾s &/XØä‘œ’šµÖ Ù)—`AP[‚(bH8qì8ÎÑÄnuar+ëÐ{ä$Äß woÎ;èW< 'iv¬’Ê_}ú1M(סºŒ&›]è;nÏVä_Ž�1Ç»¿\�Ù·Þ‡ö(+¼Š‘ã'+åË?YÏÑ—¹9�ёѮ½'­_¬ÇKŸÇÜ…7¤Û±g ‚hJ¼=´˲郬wÞqý`at}ùâ[ö27Y%Ñ\¶3Û¶ïˆI8{`“°Z;4é.øì”ägÂÔÌ’í¯YKäÛ· Z¡°¶ÛËÉðOK¢REµ!}¤Ì©Z£ÉXvlHš�z ûŽ‹�ÇWÁ•>Ýßøâ)t›}/¼è3O®-s+¹¶ô�äÉ8*ã§ô»d$}ˆ–éÚTh­$â¿K ìtðÄähú´5ÃØ‘ÓhâR ˜´£�o�p!â öm_ 'š ¶ EŒ‡÷ã2Y‘©[×#´ˆš 6ÓÕþG'k£]’ÙQÁyCf=�µô5ž¯EfVš®Z¼ú¬2W”¸ï_K×Ö™ôéÚ³QYôA|ø\4ž¾ï®Fñ2ö\~|1 6¬b QæHHßYìÖ© Ÿƒµ�•U³uÔ¶¡´Ù�fÏ«’ö†’;ú2¶OJPöuÿµTFÄùHÎÿ¯)NéæùoÝÖ©§§§²©÷pÛâÅZó®ÍøêUÓ4÷«_NsiÔ¸Y³§Ñv·Fý¹zîïò+ ÿ82sci aÛÞý˜8bدªZ$ÇÓÇ�£«Ÿ–‰ÿ«2ÿŠÄ¯½ñPaž‘¡‘¹¶jmHÊP×pê˜'rèë)_7ß…¾�a�S�ôòS £U?¯r¾~}/çZê3õóý·kçµÍ>Ëÿ–{h«g[ ü§[  dýO·x3ד‰´˜ÌI}çåf;ïf²ü¥QʤœBCÝh¢_QU°$‹*É«.¦ôÓI›ˆ™ 5Hz¸´”^M÷[~å~dÿ³ÜßR§¶‘§wˆ\‘‚ЦߢÌD@( ]ÞÒW Œ-m5&ݬ›½a_ž£Êš‘E¹bú ™Ì/ÊQg“{ìPª €�:Ï Ûû3M2:*@«Ä9-y¾‘)Z™KˆÆ/>ör¼Ë ‘MȆ�üÑuù׌«U@p›¬+šQ¼�9³’ó[õðò¦/ÔeDv\Ù”¯ÿëŸXt÷ u€uûÞ/ÑÞÌ›f,cðϼEö¹‹" 660Ä$úÐ304DqE6ÊJ‹1oîmJ^K‚°J(&ë$..†Ì¸¸Ž“a;ÎŽo$Ô€Õœ_Š œ(ùÏÈDs[XÙºh£ ȪC@`O~³ŽJœ¬Š ˜ûÕ›V"šù'ÏMÕ\—Óê·ª&U'çècqûŽ?n¼z꺿òLT“ÏÚµ_òœ³ë’å‘g,È&Ç"è‘úXž:†^«¶+qê\SË\oTDƒ€§)CèÈ«æ�¾T”4dÓeiÉy™wJP•û¤îº&å¤Þ?mZÖŸB¤–˜ôzY Àzž G;csFÒ­­aWUI6’tud³V¢då‡pËK�ÃMw+ߌ´¥cHÏ‚°Ôd›úêsä;íE¿ˆž &5dÜLTçæÁâÐ/dTç×”–¸-ÖLƒC•uMU'ç¢âgSä™HÛ«ßPÙÑ}¥i)J¿%`¬0Ä%¿úÝÉ HÛˆŠÄ “{t¿Í™ü›O¬ÝJö„!ÙcSò.£K%ý®’ÑîX[‹1•°¥o v4oYT€jšan.DÑ â ²é‡Òïõ£Î�P•ž cúVU¦˜ {þùâî÷¿B'Oo¬Z÷:wÇò÷¾Ä€¾C)Ð¥Pž[dT$vØŠÞ݆àåç_G~Ï-…ü+yTRÊÇ%*žlß´^(cè#Ô§£¢OîGÚÕÄŸ:ȱ3”fžµß˜nY°FF]Pój¼‰‰)ÍùÓ�0�_Ùþô I;X�M'Á©ƒ;:xú"�ŒÛ²Iß~g<\ìpë})¾SÕrÔß“‡à0Û½”Œeñ�‘r�ß½€s…(äææbÃú عõ' 3?¬]�cLïHSŽ1T¤²1¯#;v¾ùf5†Ž™@«žø�ŒÙ«qçàÐçN�ÄU2l¬,-q|ïtìÔÆn¾#¦,=Y—.b÷¾ýèIF~FTô9¼Ëþ£ÿ€qŠOøQ£§5X¥îâû60 »rNd.ë¬r¢†ï¹°Š5æZ�RLª«’‘ÿœœ�qÛÍs±å§­ðsÑ  e?\ý‡*§Oìú?¯ÿçã’ö²šç÷ü®úò]üðåR˳oXŒûâß°ª�qQ@;éËd“1QUP“4º‚f5Os¿ÇömÆ©3TH¢ÅËú÷­Ò¸Qð}º÷€ƒ• ú„NA€WpCÿ*×–¹’®r¤º»PÇeùæ4�9“¤i)¼òÈÝèH�£h=qáç!$xHKY°÷—ŸÉ²Í绬€¬Ó§ÏÁ]‹îÅÐn]úår޳ ôñžšz™&ƒÝ1mæåWL«ìÕ,Ž÷yk¿kt¿LRтߘ6Ûybú‹áLeñÙ½ü“ðñ§bêä¸p!Ï>ÿ¹ç5¹–U~J¤Œµ¼K9O´¥iùˆì\MçË´~¡ÛO6À‰×=wâÌšào¬( se5è3XµíþE€DÒŸ#ÀºøÁ%¸oÑJö¢£×Àq%â¿øŸ§§gCí`íݳ'ß]šñd[ÿYAVÙþÎÁžV|Ù6=ù�L1ìWW5‡c^ýŽÿÙ «#­+h·kïú‰ðÌœ8úW×ùFÙ£o·�M’Žœ4‹ïMO¾7×ê!‰`uàöG™«Êw®¯0s‰Ö1<÷ÍÜÄÇ_|Š®47þÔcObÞì9ìó h•È Ó&]Sb:uî .Çžæº=–ó‡ÆÖ€ZS×M›6ÐTs­èôU’ëΡe½¥�r2,�îo DéÌYéÛdͪö72O–1@wŽkëì”%®#š«GÌâaøüRºŒ©ñؼMYûJ)seé‹u×p’_ƉoM�zÈú@Ò‹ò ÔQæ®MCmÃúòFãUÓ¼ÿ1òŽ©Ïô¿£Æmµlk�¿¶ êþÚ*üÿ¾º>˜¨ [þέ¢[gLüÖï»au%�1}#ázyd²® ¶¤üK^h´PP hû×Öm-ÐÖm-ÐÐI4áäé®]¸%Æ]$µeîÞØ$VJÔI$&Ä#">‹L˜LŒõ£Y½ 0¦¬µ!-%AIêFv¡nÈ˸Œ¬Œܽð^Ü»èv2U®"·°œÀO9&Üt'·f;ÐggWxú6d3Ÿ§ÏÂ>šXtsë 7{ ª RQPk� Ü•‘�Ó• ûâÒZ•çÑña¸–+æu#-,=fϧ4°E'1øÎ'á�ÂÏ>PXbö¶ °*àa‰‹=rÈ´;™’¿Ò"xÚX{v´ñ‡Zs@ý‡)@™øH” ŽY7Ò|m¸îȸ%ùL8¸w A4n-koËý à)eô/µ´.Òñ9+ãað aIóœF†F(§ÉÏ�k6átØIäçåaaÏ�ÆËÕS½Žn»È~¹��®Êyi§ ¾x¥8£&"‹ êÔió1›‹ó.�]0gÁX�aÜÑÓ5å¹bwƒay^]±½»vÄÈai’ª ?þ¸A½Ø43uéâ9ì¥ÏÝÔr–²<||i š> É~’Уg/|½â Æ{!¤OOœ9NáãY$FÂí÷½¨0‹”„õÿtç!¥Ö[@-]Á¢šGÚQaú=P@ÕZâ[šoeg¥“Áø|XÏæÊRËÔÿ݃G¡öô!å½’çsmÞDÑÃñӧѯ—V0!Ça‚æÌ™…øK)øhù›X¹ò3œ ‹“S× Ÿ|ö&Ù¶¥xò雤;CßMgNÄ’"ÖãUE©L1uüP�i¿ÁÖ×›“5)ìwFˆ€º¹÷Týn„ù­ßîêR4Õ­Šî;q­�uS4Ý×Í#gußýsú¹åúóÓëåÑ­“n:‰— ¶‰¼—ºJ†º×UË�÷Yž_JjÍ0{*IÔg(ý‰„�0ºÇDÂ…æ½åûøÐ³«µwI>üœ¬Q0°>ÞrZQzX} {†MEà…£0# 441Iɯ¡pÙû»­¸ºr9\Éx?‡LVÐ*^Y¶Î^J:õŸÔI úÏO�oéWòJž nÆJÿÓÜ·©¦QËxûƒwñÁ²¥èA3¼oæ¥d‡iL�«Œ1æÑgЭ®¢QÊs• ®-Ô2ä7¬¸/ø²£â úy”`ÔÃOãµl#²µ£�ýËzÌxá5ÜÏJ¶¯¿ý—b/á•WÞTŽb¢±vËvL7±ñ§ðÙWËñÁÛÂÝÕ‹l-ÓSI¨óïÜÑ“ôUš€BšÙ>‰J²6½¼½1vÚ<Ú³ƒJ§B3¼w?ö¬N®æw�“EÚ¯¿&'£Oþ‚.}š –“£ÃèCU;/Èå˜-Á�¬~ؽöK¸LÏͽ 7—öØ·åclÿ%Ní1€ŒoC�ë0væLüðÝ�(Í-Ã�÷ÍÇнphëj$&fÑ_n–m؉³'ö¢GßxòáG¨„á�+ô×:tðädÁ›V1|y¯ÿ~óU¥ }¨�tŠ~¥‡’e~£&Í@GŸ. Õ‹Š:G¥1-ˆÚ©·©Ävéªw¦õ‡?nÚI?¹ð‹3ÐÛÝœÒq غþ+äUâö…‹â~ïÎyú éÿ{‹ùMù?ýäs,ºç®ö¾ZHhzµºÛðŸ�]1ßãÞ�o =5Û¾û€Bü¾Ø´m ÍíñúK•´™ÉSH¶A77ämnG�) ^õc¸ô‘®×ç+ ø/,úB»hûQ5îF¿ø†’äÞŸjHªöËj?ûÎ;ï+ç–,yo¾³O.y´Iû4dÖÛ‰00A0M_4³Â&;/¼Úɺ‘ìãTØ ôíKîõói²¾%H?×\?eÙpAõ€¡Ö&”£4žG(ÙnøÏ—,¶ï>Z†¾ì×uƒ\OæFê˜#÷®?®©éÕöÑퟛ‹SÓÿ·ÿž SnA@Ö¶ÐÖ÷P¿E©§€¬™ÃÆáºX‰1µB¯^×Þám›Ö"Ї_òxÃ-=õæSp©ÍÇìùK²6]¯&|MNŠÃ�¡òÈÎo½„ G÷ãµ�MeÁºs}Ýq$"â|ƒ_xé$èÏ%^æ¸ê¼XI¤óO±šB«$ûf ´>]jC¥( ψ…óγJªÍ–�ðR¬¶oÕɦìJ;I�>O°eͦöirNÖ ¤Nr•\'ÉØ¤¦QûLI#ã“KŸ-óìÿôzJêÐÚZ ­þ~-ÐÆdý‹Ÿ‰îDZ&¶ös´šõqµ®{yÝ:«þ’®›�'%�¢ D–�hË^OFÕ¬”ÁL´W¯—öF×m;ßÖm-ÐÖÿZÀ¦ý5ÓCgO‚Y{kÅYÂ¥h2Î $]Ü=°ò«/q5;QŸ ‹ÂÈ1c®ÛL¥™áìö�°ÔÃÍ·±ÖõÊß¡ÿÇ*ô2†~û`ÌôÙ8uá|Ül‘š[ˆÀî½`hlŒÛÖ!¤ï`Åt±\P4"ÈŒðë…¨°”Óœ`/ªµÚâJy Í¥¡°Í+lº¬Œøg^†™(Ô25Xíá£Cgúé}Ëýðë=i *+ŠPTxES7f¢�ÁŒy¨¾ç�Ñôiˆ1*ÇùZ#ä8»¡vøx¬*Ñ’�iÌE¥}ˆ‰ ;YÔÉx¥ŽY*ÓNP¢q«ßPúñÂFfœhÁú «0nôó4>®¥ÏÒ:�ûÒ/4/~´B95aâXt¢©Ù\£v »ã"OWhŽ©‚æJGd\ÂŽ�Ûq~÷6tû^›^2I=)ÒÏ®"ñ³qù׎¤þÆ4ÏYm` ‰4Öhö™Xi¼kÊÌtª÷WBöÒŒ^A8Û­âc�“•…žÁþˆãûÒƒì"×ưs À®Ý{hR2…ïR2Ž�ŽE¡Q’âÓ‘DpgúôôKX‰¨È³+R 9"66Î.æ0&0âæîEŽ®Ê&5´±¥�½ä8ì¥éÑð%sɴ˾ŠöÖVèÑ=äÚMÔï©L@9”zËJźs†+âG„‡Ï ʹì5_+f tÑ5a%ï¡vnS‹'Wt3 v:¾_õ/~6ü$ëíÖ-‹l÷_ qS—.o’]M£žørÝ$ÆD!.;÷W¥ÿbii¿Ž&¦çÝÿ8çÜ‚ô_¶Âò…wPõóz…±9í6§ó¾³´æ@¥œx#Ó‚~húy{àY*·Ø…G_~_é&ŽŠW­À²†ÏœÝ…¿õolgŸ›q9f–´¨@S£ÎNp‘J='hq؈Q0¤/ò§}cg÷£â}Lºh¿iµÎêo™²9©QH¼p fTp5´}Œj�”’ S޵.�i�Â�þ–oÌ(Y¿v�b®WhutóQ.—y ?.œ?Ca-’åYı®YœbzW65Ä‘)oÈ~«€æ‹Ã�…¯oGFûMë±°¿þj%¢.ÆbæÌYÊå’²â�}cƒzÿû¨f«PPp…ó‚PæÛêºX¬>ˆ�Xu="}ž\G‚ÌÉ%�Œa)~Ýiª¾ƒßöï�oe½ÇqRÖ<ò¼ÚB[ ü[@«îüw¬Ùÿƒ:É„U ÚAèÚ±ÿwû•:+~-ŸÕQ÷>%­,PZêe%‚¥–´(ot­¶óm-ÐÖ�[@&#òÍIh�F¸’°íßu ?]©¿‘‘V‡Ë/‡EQòRÏÃwÀMØCaâÀ‚¢f4‡–Ló­Á ÷»yÍ:L!‹N7TÀ©æ¶sý·d“ÂÈÛ[™‘ÒTFÔû6“Ccú Ûýõkð'ÔWhî�@ú�íæƒx 6•U5b± S4°¦)Ù)èÛ·zô€•£ŽŸ:�ì¼ôð²¡?¤\ í†P°í‚è˜XœŸB�QëNpZ°ÈºÇ¶ ¨Ó˜¡†>âF„Á"â¶.{qåÕèÓ-¡Ž;c>Ž8Œ˜ 5íAüøà­øøû­èÔYËÄŠ>}¹4Ó*AÕš•…œ‹öªªé*Ç/q`„n²¤b�ce§þŸ”!éøÝY·4Öé¦W¾Ë%Ú˜sôÖ=˜LÚ4ÔŠYóçÓ¬k0¼<è2%“f°ìPC–òÝqZm]Ýrd¿Ú€–@ë´õ”c©›Œ©££˜Ÿ“,qŒöø89µ:G^Ic"‰EƒF¯ì/2*�IϾ4AmƒŠJX[¶#èIÆ“mg#°šêìS«Ë4-u© ø.6 ƒ DQN†ÑÕ®m{é;ô{ ̃QN³|¬ÿ¸�!èM°ôàùLžÚC.£€cjy’ź”sŒúr«©µBGo‚ß|ŪªÊ•´ºÿ$�ÊNSÊa'ï’Vó™f©],Á^ÇW›«l?ÙWç&’¶bî=0Þ·K"†Öç•4-…G¸ï-û=Bú(I¤>¢Á\Ág¯D(yüØ1¼ž’‹'4Ö�ëÏk§Ã”¤«?ûNùÝ»{-NûS§,ÂÍ·Þ¥Ä�›:½B*ûºÿBÉü]t×bÔÑ·á×ß¼‡ À ˜Þû^zõ¬YµU7©rŸ![Ö H'VÞ |W­MuâõwÕtúñ긢¶³þùëKÙ¤ýU¦¸ú4—O}NrNÚ³9¦«þû «/ߣ€ÅêÜUÿZúsNE8DA8ƒ5¿ŸFß…n{¨lu•9ª­Ûà†>D ÐRÙôC�A:‘r� gOãê¤Ùè±u­rFâäš’¿Œ&¦ÓØ3õZ¯sclí©��‹>ónFE²Vß›ïHöÐ!HÚ±!&šàv¶#ù¼»Uç#«½%‚}‚Q;�þÊÖå¦�5"Îgcî?o¦E‚ñ°þ÷ð‰X½êk~¿5Xõér,zú!²l±uÛa8·×àXÄ^ø³¯êM“¹V¬XŽ$úô›…€�ã`U(J&Xß{óm,ºy,µ°³7C,ÁÍ[ÞŠÕ?l¤ç<Ìç}vôõDeM9®¤_Â??zƒ ö“M?²“'OÂùˆp¾/eè7r2Îìù Þ]C` ;¥^G��…·y5ºtvAqA.^ûò§&õ•ˆ$ú•ݹïýF{ ˜7¼ôXÓj¦ÁSnGrL¸z¨ünÙò#}à‚õ™Û(¾5—èŠ ;9ãÆŽG`™hç�-yª5Ùñþ{ï⣖Š&$_zu’òŸ¢L%®›$¾¼´îóO0tÞmèÅ¹× ~ãj_&ée|Õï+Õr|‚ ®¦ÃÆ‹&öËËðÓŽ}èXoÖú®R“¡¯wëž�2ŽÔÏ�2ëìˆl ±•d.K—¬—öä÷EXþñ{:9®¿vüBû]WÃÈ?tø(¬jŒÐèF‘CH a§Oáý·Þ@_¬ýØ×„Òℌ?xµÅ t.*ÂÀŸÄýå%øì›�ðQ�!Î>x¯’^ƈíŽð--Áàzk)Võæ•%�v\ÕŽ)c¦Z¿qµ ?0^ÚGò¶&TVVòý¿Þ¨Þ´yÎ-=k5µzß2Žÿì#ìûqœÜC0ª~L’tRµb<ؽ÷°š�þ¬µ÷Õ§§vîÑpâo°“Àõ‚7•G-éÓ¾-üo´Àù‹ÀÔ¿ö^Žq¼›wÓâ&•¨¡_÷šêua›¤oMÄé°pÎ?"ÝÂýëŽãÉêö¸cÚX„6“yÆìXùÙ§ g<�}ñü-47·ãAEdÙš Ý´êétÙ«úç?£…žOÞ{ Ýú ÁW½Ï¥i)¨ëm™Ë\Ø|ãF8Ë~框¹£Ä{ðá–ŠhˆOè7ÞÇ÷"ÂÈÍß”±@wήöoRˆî:NÆKYwœ ?ƒy!! ×hÛùã[@æóòLdSæü%ÚJlk�ßÝmLwû?t@IDATÖßÝ„¿­©ÑÔeTü¶ÿü\j�E“§%MÇæj¡j9Ê9�®×! [B6Uƒ¨¹òÚâÚZ ­Zߢ Xuü`�Öa뵞[…¶”×ppp†‰¥‚:X¢¬�þ¹Ùw Bìùp”\½J�òÓc0fÊ,8’•ElÇààäH™ ·ed`HÐÐñd}TT”‘=K¡\ãE‘­�=d“°gÏa$YEàÓFN¥ ØÎ°²é øÅ36¶†�¯�’.-1^÷,á˜ð<ʪJ‘J§£§Ü]lQPX £ÊâŒup·cýkL`iX�BaͤÃ$ÔŸüûu,XôL Ptpíˆ÷Þ—ì" e-ÍÈÚàÙ—–‘ñ�üz¿[wúŒÛGà" }‡ŒDÍÆ�;�$2c�k¯ úÈtš¹%� uìݦh¤ÖÍž«±¢_½¢²"›ý†Áí¶»5Wn½Os¤° {2s1lö šñµF´‰R­è¯ˆ •e@ù} i8)7ÜŠ7ß6CY+¹’ü~Õ*de%ã2MA§¥¦¢ª¬³ª®Âž ›ŠòfK“ëÊ a(Š`ÑÒæ…¾í{†Ú˜ j“³s=*ºv†SA1RéK³OZ‚¶,ƒï§/Ö8å^†]YqAù™SŸ“»åÛ];ºbÀè©ôIæ3M;j麡}{3dfåbðà¡0!ãÖ´ºŒ¦èº!'7‹ÏÚ&d#»9ÙÁج=Êk�PZmŒ=GÂaVWŒ@¶UÁgï7øTU™’ Æ<ô Ya£IóÏS¦ÝŒÛo»³Ù{Uµ�ÅgŽÌ§¤íeÓows ˆü²xצ6ÉwõŒ²Wڌ4E°ÜhþQ^€KQg‘tóDmZ£°…�¸d'M­² tƒÜƒœ ¿œúì]|Uú=齇ôH�„@€¡Š HGP)bC]ëÚP×®¨¨ ˆôÞ¤÷„J „ôF:I ý¾yLx ‰€‹»îþsó{™÷fîܹsß¼[¾ó�óÁáæÛKË2B&KË šÝØ<ÈÛ§5\ÈlÕ�‹�O�¾°µw€‹‹œÐ¾Žú¾ôúuìèÛwc¸¾ÎXoŽÚ*[5�ºÕfýÊ>•±"¿=ñÌ®sÏêIÜ ãF€=mÂVÛ\e‰î߿͛7ÇÛo¿­uö­·j»Ÿ&[Äšì*c²ö¤Lõ{¿•óöw’Os‰çùömuQÏPŸ‡ò”D%ÞS}¶‘|–vÐ0MQ¾ù~LÝ<Ë^~WùÝHYro#YðbÈ)JM¶V¯!Ï—(¸ˆ×û­6ÑÄb•¼’tÒ’d¼«e¨Ûí”O=Aç�S–N01ÉŒ‰µ+4=X ¿§_AaH_\.×EHH°ïI®­ÞSÊð ÈC%\ã/âºO Üòtú†}f2J¼[ ¨s(ħáãtÛõˆ€gÞ„ÏŒYÆâ¹ÊÉ �ŠÜqOáÇ…?£ý�žxxÎ|=¼�ìÊ�ìµ{'Ò|‡˜ ÑhÓ»ª ãÐgØ“d›»á•×ßB¥~5F WÕv0Ð×C �9È,461äoüÞ M”¼ Ñ8.H;Ü´ˆ^Œ�ia37\I¾È¸_©ø• þgg¾„ÖÕ娽|)¶\'8©[�€ô+JonŒìì 8D�À¼Ê7­Åïæ¤ŒlK~·ío~ a%h]U†Ýì§,©0—cR9ã‚vaœÙè³g1Š,Ö#§�á(�:m*+±›@öCÇ g�[@�¹¹%¦¼Ô—¬V¬ùiºtêŽT>ƒÂ>wuñà•tàFvƒ;_ÚióÆßHl«ÂÀÁCŠný†ÀÙÍ ­:vÑÎv×ïçþ°19½ÝmgÒ¦ö¼=6Ðg§‚Q–où½z>‚”\:0uéZ›GÞØqÌüðP\ËHDlÜY\Jˆ}37‚åT™ˆODV~zè 7O´ëÀ»"�Þ± Ìø,<8ü2ZópšàÕ¡Û`iPŠj]cØØ9Àñf¼f¹†——7Ο�AW‚× §»À$Çç~õº„t%»Ö Δ™¯¨¨Àö­›©žÐ Ž¶Âº½u_’_’µ½³æÍÍÿþŒ -u³cÿù{ÉŠ×VY¬’/°eé"�÷±}ÛZ‚ß–øò³Ï‘È0•†F5s¢SQŒeŸ™Á1Ðå¶âCX÷`¶ë°‘£Ð)¸=Ú´ê�J‚έo=Ó·�ts‡��ím‡äs¡ÊÁ½¦šâT–IŒ^s:È3¨IѧŽáã^) ?‚¨ØKˆ8~=‚[ÃdÛ†Úþå÷Vµ,yv“ò®àå)o`ûÎÝÈMK¡tp 1ª6‹½•3äõ¯&‡®ÅÅ(±šeÜÖfLªeSa£!kAn&öý¶Q™Ÿ©y[³‘ÇŽÖ­›Û„ÊÊ*õ W^Wl £ô“·)ë�Šõ—.ÃÉÉ›)‡,ãL·¹?+ãÈ�•‹áÀ‡Íæ›_á1i¦¢„À. o8׃[PÞ«?ÖíŽPúHé'eìÉ[½H©†'㣫}§Z/¹f"û¤}]ƒ´k'|‹r`¸×Íû½ó[ÆaL5¤~VPXÄÛz'Ëû™4saâ~€eÎmQbf…æ›§šjbRÆFö—š| ÂI û<Ê‚wWª!àê_`•Ê9R&¿!&«vûõîÝ›ý——òÒÞßôþ¯ÙýBüG+æéÕ V¶.xaÖ󈋋…q~4Ö�dLñ_æâÙÉ/qlt¼¯õKÏÈįœÏ¹ØY!þÚ <8z$F=> Ž.n·]Ç™ÌÖÁZñXµ3¥ à…faìØ1Ú»ë¼ÿ8s"œ}~2|[¶®sìn?,\¼—.'á~XË�&@éD¨ô!‰¦–8Ë�G핾¥~¹2WçòÆUײž‘y¾¬qî”L�ÝûQ,K¸Œ”Ôttïrû8­Y£hú^éãD�@½®ô{*›RÖ ÊØTUQX‰j®ÿÃîtù¦ã°4m[­|çêxó‹ú��&kâÿÖºÿÇí¿ìÂM ëè / 1þ·È᪫4—:ÈÜí"R ’dQ Ê1(;šþ5µ@S ü©- 1lk$LäB21T�âê…› ÿË´€åî$™Z9*ëYÊy´ƒã íÞñ%þœàJiÉü ]øùàÈ‘p�þ Èz™Œ([k«Ú{±15€ž©--)Œ›Ù­vý7mÛ ÌÐŽFgK̘õ6B j:99)Ùì‹AA~1 uбá§ÏѹÏCÊþyŸ}/2jW¬Ú† 7¬QY’O'$¥ÂÞΆÌ(=D³îÄ3ÑÌÁy¥)\¼~�6í;Ë ‚¥/{ôItá83èÁ1òQJ;ÀžqñÔdçàHùÂNè?x8Y4y(¦ôQgÊÈžKÍER~ ’À* “­ëÝ« ÎÒ{¦„«~ýq$!©E ÅEF°mA Ø×æÃG$Ïæ#GÈì/°ÇÆg¢Nbà’�Šó” .54^Æœ�DüɃߺ­éQ+iÂcS`F‰§Îž®¨ùümô&p9Ì\ÓŠsщì0g‚ÎþEE ‚8çtô°OÏ„ñ+�¸Mz•µjŒÌ|(+NŸÁ/§Mw¯Ñ6ÿê-€•×€VV‘M.vw0¾:°'ÒMš!¿cÁÞ¤Ý`P}½ÃB)c鋳§O#;#¾Þ¾5~ìhÌg ¼2T³]ÚùÈ7…‰¾ 6nXC¹áV|&QN†®…�%ÌØ¦Ò'ÉœbŸ­�Ýáãã�1c'X E)Þ>Þðôð’¦i4É|Ê.üà¡B 6®NýÌãÈvcý F°»yM5�º`–Ï"™Wt$#)ç»Ï€�[ KS’•“&AæE"%ÀÕ‡¼Oɪ}˜ì–9x­ Ÿß•쨩0vàÂ\’̃¤|©³¤[€ï"p¼þówÈþû,¥LYÌËsÓÐbìØÑÃG6ßÈq� qÊ“÷2o”:‹QZòª`lCuQ.xóŸ\W½–º_˜èâl n•{g]$‰3‚ù˜ ã\ý­ªìZy.5ó]µ$ÍVó¼T+ß¡*&ß«(°‡€úœÔ=«î'ÉßfÎ7È!Ïò†µ Fœ„#åWwî §ã†-:“Y–š–¦8XtíÒEy.Õºd„=ˆ?‡wûöD΀ÁHâ3âÒ&ƒ†�ÂE‚œç ne¥'ãÊÙt\b­j‚5ŠÁ]‡N(ÍpÈ«-Ì Ãz‚oÝÚ;᥷¿‚³{ l^C�.1 £{†qGÑ’ñ³›ñùûé�x`ÌTÊ{»+/icý·^‚ÎJ�“‚æÙªF *ôíÛ�¿ÙæèÚ·ö†—¯Y‚åk— /‡{MG(Y[�~©¤Ö¼Vm\ŠCáÇ)u—€±#Çà§Ý;Ð"ñ*oTà‰9ñwvê€Õ¦&¸Ê÷1Nð--ÅIK/ÌþaÖÌWÙß¼Dãð Ö', #¼â)%¬W ½s1ÈëØ  ŒÝ{`pÖÆÅ¡ý_~‹ÊÝÈè¨ ˜¶mÕã‡OS‹Cg234+pµ>ÀšÎïvY„¹tH=ƒ`®Ÿ�¤K§àEÇ"5�?y¶Žî8qô·¯£Y§–dAËKRÚå8XÚjÄÕK–ðGa}=ÆßnGFœ>2ããaej=kcÆFo‡Cû  ukoÝaÉg÷Í9ï£k·P‚Žîp ð˜Niù²ëELuKÛº@§NY>¬Ç;59‹ÒæÝé€c¡VDZ~íjŒ5ZyÎBºvEøá=híß’²Á™H¾xn¾mabÂ�úéè–¥tì²S^wÈZç°­­-lXü¦•óÐ&¨',õ‹1”¬Öâœ+¸‘‹¼«Eزm Ö­Xˆ¾=ºÑ“êv`Ô�¿“«YiT⨀-æI{W#œ±Ù;öRçZwóá·�6ePp]ãoø¡dU{5Z„‰­<8ÇÓX%óÀ°žü]ñöìOÙ·¤â,Ÿ '{ØYÂfî§Jyw°2g÷¡8²{~!«ÑÁ£²3“ðù·saNǾƒô õáÂT•þ¿¡cR–j8WÁê8ªì¼ùÏÔÄäŽkYe5C Ї‘}äݦ¯æ-D¤¾- Ÿxº Ã0³[[ìß®Œë*à!ó'u¬öô¼°Þí5þ•|Þù-½�7üVŸò¯”WÿÜÄÄD廯¿¿ésS h·@Däiôyx<ž}ê ìØ±…à]вî‰<Ë5êdôëÚ6œßïäââŒ6-Ü�É�+±Å\§Ò74¬�ª¸«ëœ”–œ€¾ŸË1¸×mÕpwwçœEóªpÌ#c”uT&×}�Á]iGàZ¿4ûÖ} ¿öš²>ùüSe.#e¨)žs«¥K—¢’ëçN�»ão/ÏÂåøœ b•¿Ÿ 9ß�uý'sf#‹ýc{ª_¸ÓiFúG÷N!µýžÌ›Õy°ôŸ2—}jŸ#ד>±¡ñAútu}!ùe¾I抪b|4ûÝVµþªÍ^ÆÔ$•B`�ë•sü’úÈ:Zòi×IÍß´½- ÏFCãßý»ÂŸS’úŠ”v“=öÏiã¿J©M ëè›P&âì þ[’,&Ô¤ hc&Þuç¦1”õ¨#Ó§–Õ´mj�ßk�ÒÂ,T”Q¶’,¬¦tï- ™€T+Æpñz–—†�£1\ß{‰Mgü·¶ÀY28É ÉÎ+BrÂeøúx*ÆÐ±O>ÍØŸ>°05¢¡7’‹.�)E™WPˆeeµ kiA6Š2áÔãwVµ}R.EÑ€j3Ýj 󨺃üi„w�%��°®ý�rÁ~^8´sŠƒµRÇ]:´@UÆe˜5ó€·‡5\3µ¸¸ˆ’¨þÐ%3+?'Fú "H|;›D.–pþ lè�8Ž4´O;LVŽ#ü)«ºjÉ<.�tй×@œ¢Lœóg0�‡£ú<4åÕh3ä1Œžô<[´FH¿‘ûcã®Ã”ÎÕE»Î�QQ˜‰É/ýSY4æ2n\X�zöçⰓ¢«^:¿6v¢,¼´'Ó;Ö/Âå¸h|ûÙ[Œ]ûôhÔNÏÎCìÊ_Q0º�² cš“.”— ÁFI¶dõØÐÐ/‹8e‡Ö?1æC·,CGßX@VIÃVlÁ¢… ±à‡o±ËÖ gª ð¨#ã¡æ]EË è§!çK¹f¥ÅÊ®J+3¶�’úŒBÌéSèÔ1û5-�†ö68r`å'-áfo�ò8Ѱ|£¬�`¾%Hx{¹"6ò$¢.]‚¯§7ŒLÌÌV™¹(5·Àæ¼‡Ž›W*à—\°Ã§óù|º©ÕQ¶ÛÖXeq¢™‹hÀGíÌ HG MÛp¹ðç8MÏè wí܉~ÎŽ¸‘r•d8éç^Õ>½öý).ºc¹ˆv`++P]ØöñL.&³Q’, Åè«TâÐ¥Y™`³¹žëŠ~¾Ð��¹í»�ò<ð™PÁ>Ù'/e®tÓp ב|²OcXÕ€zª‘ ýËoã…—_ƒur"ü’4ÆiÕP-ç x«ÔŸï5à¡085 ÙÊX $ÚX5„0Íç›ÿKK®‘EV2¸M7í³r¾|/öd 8š÷ùì›Ê §<½ðµßsÅ©¶�‡R7©¯,4Õû—ûUß«×Tï]î[òJ{¨Žjžú[óU¿ºA¬ú;á�¥Ð°kOk³±¬å’Ôç]òHy2VjÀÞ%·ÕAcÄ™ |êµ”çLËè-õ–ºÊönRê:„ #[òØAœ£ñ-3'ãûýµ0áBàæÊ½t èÒE©›lÄ�#×HŸñ2®—˜`_ çFéWΠèz%Î3öãÉäTdeR^•lÃtJ®?yÆtŒˆ>w)Îaôœ¯Ð‡Âð7mÛˆCúS×¼”Lt3”ç¢lú5ÖéªGjL —^Ê7îʾà|æÊ•'#™ÏšAS¹Oµ e«š¤mØ·k§¶ëüwlÀ@;_Cï·íÚ�ýgRÐ+¨5¶Öøå§e»Ü rúàྃˆ`lä¶¼¿ç+¯1.m &˜âJi!&Ñh±.ÑÑã}KÆšef4³Â[k7£ ¯Í»tWîC˜åâzŒ ŸÇ…XøÐxøÆÁp´ôWä‘ߘõ^xæ5XÒ!'-=YXÝ0j'Çf®ÚïøÞ‚1ÔCC{â‘GŸPòæ‘ukjfA†»ÒÙ�Y�­¦¬¤x˜[Û¢²Z—à`u·²m܇öí@ÇV~T©p¤L¾-À*â"_7á\}[bËjJ w鉖õÜ‚`MuŠ˜#ÇaîÙû6/Geùu–VÒ™©«Rv^V&ÜŒ*QA%‰µhÎø® ~üvN^dΆ(y´ÿ™Y7C〡!: 0„rî·@Xñ`US4ç,'ŽŸ€%ã[øºnâHgŸlø‘1_Mº Ä¡Ö¡c‘vJLd_Êq²šõôï ©£öñ»yŸzá8š{¹Á�À¹÷Í�¾þ�`hl‚Â�4÷hßB‰¯ ².ûæcÎ9l<7ÃÇoOg<^k´ î�Å‹B`›–°'£×ÈôÖ÷{êÄ ¼ÿÖßÉÖhµ\UÖðݱkï”ñ·ÿÞk/*mÑ�*÷’¦SBqÐ�QÊ)%¹©Ø°u+‚ D6gl<ÿ…ý£Ž’éô©H2‹žcÉqg:·ÙxÒ�ÏÓ„öSX·��¬Òß‹�Zúpq ’$ý…ŒOŠÁñæx§:æh×CòÉ~Y¿H0OuÌYrd.Ų¸)Cuê4†}˜!&Ú( «“[ 2»ÍŸVó{ñ÷÷dhŠ® ëõœ#îÝ´ÍŒË2Lã.×�¾VCœ÷mÅÙóç°�ìîñ£ÇðØ/uÆmpQsî"ŽSï ðã壒dþRþÑÛÈr7GÇ :ù)c‘f.#ÇŠW/Qæ`%×á}5§Ž#�Œ7¢x¦i;’û©N$s)XÚF’´£¨8¨Ÿ•��ülU^/i$Çí»�ŸPÖ(Fe…åbÊR>›m\~`G¡õ¦eƃ¯SêÖØ?éWUÇMq&‘õŸ¬Ÿäºêø`G¿ôÏšzT³ŽÄþëýšŒ ­Ï«kÓþ¿~ ÈZ¶vÓÀ³û׿ƒ¦Þm 4�¬wÛRÿÏóÉÀ!àÄPÑÐÖxU71Xoœ¦#¿Ó…Ù ÀÚ²þN#Ýá�*ä7«¾TƒòNk:üm�8ÊçØ7kÖhí–-úg££Ñ¶C{œâÂÅ™RAË]„¯>þUô¬ß½b>’.ž&³É€ò¾–\$TÃÌÌq\Œå_M&Å�)KJÂ׬r1c3X9y7z]í¥Å¸FÖg eý(Óëåë¯}¸ö}ÌÅD �Fs[\ÏäB‰Ñ!Mi LJLCBbvRv¸;�¹ÆŒ¹*uóñ ÀńԔ—R ïìl­áíßGi_±v ²8Fé;Õß}n:ì}ýðÕ×_Ñ«_&NFîU‘?t �™Ò�4Hç=¶gö’-Õ«ÿ ìýåØYšÁ³mcpõ@Rüyر í;÷V$‰mìì‘[| ýûôF~á5¬\½óZ;Ôí _/Æž-+Ñbç–ÚI´z³*ûñô‘HŽ=�=²¯JÑ©[¬_úš“‰v�̰¶é …®Sor¾€²OÝïXSs¦RWÇ8¯W/c]¶¯iü…B‘6C�c÷šò$ë$—èè8.®4€Ùh�PB˜©½j®#4=±`•rÕë¨[µ¾E%¸˜r?\N%óÐíh˜0 Ɍ޼ügÄÓ˜ýPŸÈ!šåJê²Òr?�bÆý­6µFnv6Y¹�s­ºŒÚ¾mgäØ4Ø·»°zéO3²³}ªÊkݹ�ú?tÇyEÒè~…ÎŽÍ.¦ïÚî¨í©,óÛ—Þ±¾¤W ·‰3ÉtÒÄ:Š:ÅÛÑa¬IFÐe¬CsÆÝrßµ¦P'çêm µzß{kŒ±¦è¾Ská®Cãæ{\T§(Ùdq-FUÙFUÛ¼o¯ÔêœëËJÁ€˜H`•Ì* )yï&©  œWß P„Ô€®êâ_5@K1BÈV5fK)Ov(‰Ä ›E1H>yUÝWh=vbm»ä9Ë£±¦.`&÷ F1X(çÑØ[USc¬´ÉÍ{4GM–0G%¯¢œnjn¥l¯•”*Œ½¡¤­©ºpúr8R÷5+7 ‰dcäP…€ø0¾ò°‚a…ž§„p–~)º“%áÅ>,Õ©™âœr‰÷8�q‰ÍɆíÒ½?J  ýô{å7®‚9i”Õ·œ1 ­f¾A©Ë$¸{¸¡C» ÝdæR2ûý9³/š¿ù3'0‚±’#£Â)› 28ï6õz z”€Ï¦T}‡>ƒðÝןrÜ:Š�CG*k䉸Ðx©�Ö®˜‹Ø˜‹”_æ˜N‡—ï¾þ+/ ûØ—uô@åk×Íÿ&FØ·ÿ7Æ�õ¢ omת¥[�{ö#°×·ÉÜ ¸*¯+tü ßþ yêiúÐO¾ÿkÂÈ1ãÐÞ×—3˜·Ú´m«”kÁþÁ§=eZ °ªÉÕTƒÇ<‰… æaæÔ‰œ‹‘™ê¦V€Ê–¾žhKIk5}ýù?•·nü}&\¼€S“»öì â¨èK&i Y-m[¶TVÉøÉ'ï$bî!s]å\ùg@DÖ�//¿Öµûîõ��K ¸6ÂiŽ~TýP%Š ° ./k_Ý……� çà´¢¢yéÈ/ºAÇ©|Êè„©%•8× ì=Vu¿×Œôt¥ ¾c‹¨0ñ̳3)¡ F”ó˜1i†=öÂÏû~Þg8y2œàX·Ûò>öØãü=˜óÎUæBS�¹m þ'ûau C[CI$�ƒÛuA×¶Ýàç×öwY¬Šªý¥ô§cy5÷%Öé_ÕþVÛ¡FÆbÕ$yäÁßΞÕ¸Âßûðq•ÃÎÎNtÒWæ�:tć³ßE.û G7_h€µsç$ž?·–íÉdÝŠͽÈÔvDçý•2¬ÜLg»r²Álo:¹™ÆÇâ�ŸV’•¦q P�ýr‚ÔE5ôËX²£Úi”dÖá8ëNçIb,�!›�\·@>/žÊ~Iš�.ÊÛZã½|’1OÆl©“zMþ,èô¥iCi'ÿ¥}ä¸öÜHSÚíÿ\Íøü=Í8~SmBíoÏ­ÙB€ÕËUÔe²àbo+Ís/ç©ëÊ;•¡–-à�ÊÖŒÕÕCxûg1Xÿp…šNüÛ�ƒ:"8(�‚‚PR’G‡ÅëT…0©m�¢ü8:žÚ×~þ£oöìÞ‰Ï>ÿœŽm¶øåל,çâPÄy†iq…9ç–�ŸŒßÖ.G¯~ÖYSè,WÅð.®n”COç�=öU;èx·nÍZ¼ó!•èP[θÒݺuWªwöt|Š^¼�3¦#›ë鿽ü"à E¡£¿˜; ú"çŒ ?Ô¹Þ˜fKg­-ZàÛo硨°3¦Oã<×MiŸ§¦NÁ¨GÆ)Àê2JÏûæe~Q2ç ß®IÒ×!sLµ”~Qd‚¸zË–,bh™ÑwhF‚Ÿ»¶)kÉhdn^fÔ.�넉¿{ž¶C�ô¹Ò×Ëu¥ŸU×Ús_ÍZ1YéÛ•ëpÁB2[4|"JŽ”æ•×ûï¼ÊTž˜< mhlÚºn‹B xˆ±Z®“Ý×®}0n_g|D]Êþ´€w‹V ÀÚpÁw¿7éÜaÀܽu(íàu“ ¢–pèÐAJ-ÁˆaCÑ«k À[�£0OmõóPT\†R¸ì\< «W ݪr9qæÆ58|ò"ÂȆ-€¼½½ï5o¼ñ"V¯[�îºPZ³-™&ÃÇÓ“l®_/¦QÙ¡ÝC±|ùrJÈ}ÿ€–071ÆÂïæ`Ö;_`òôg0zØpü²n?®ér‘¹ �Œ›@�CíKê.r¹]:w¡¡Îšr‡ xéåWOæ\"û)úØ.J瑜†³ö&™ü"¬Éà0Fe*ÃÒ‰¬ÜåkÖcݦ­˜óÅ|¸y·@Ø áØ¿e5:‘Y1ì!có¬üZPÉ€¬‰k¥×Œ� ˆ1ÉÄÜhìG‡ß6ÖíÕùv¶0Ûþùþ:ŽÉ4²§ÂÌú†�…±ùèÇ�s( š’˜ŒY—O¢ëõ<4¿qMЍM4 •A vêÎeþaEÛŠ2uY4^»éÓøçÖ攋Ü� ‡®ÜðG¯À渘­ƒ’²J8¸:âXDþ²zÕ7`jcO–MV­^†ÒR2< Öfä¶LâcËl£�[ûU–+ ›´�$Y8«  |nh¾!Ì�ÜÝÛ•Er\Á546F²* Ÿ°A�:ŸÒ¾²hɪ¸�½»÷L·ÇóÏ?‹°`_8v AÕÙHcñBV=‘•´þéVö ¥n†œóh ›‹�·j©V.�QUv8Ó¾ïL Q×Â\Lš4Á…d çÖæ•ûSï±vç]¼‘sd/ÆKu!¯}š,¼OWëÀ6-IÙÝØ54 ô[õ•ÏÒÖê~9Y€L¸yZ©Æ1h'ôás`cÓ +Eâ|«Iž¹¶~²]ØÌ ?TkA�ãò’kè¹y‹!XÛ8¡–#Æ”ª>—¦&* «ä§Ã�VÚ÷&ï�È4´ð¡Ä˜¡!Rhx¶²ª½œRœÌ9 Ȱg,Ry/Ï’,T@Z2 ¸*ìV)Osù®Uã�Z§ßÛ*çñÜ{Mr_Ò¶éò½Õ Ï£^|íU²æÚ‘¥ù+&OåsÜ@rtt–Ík�ê׸oÎUôyñïxbÒTÆD.€¾…'‚z¥·'L ¹zø’­Ø}Şݿbبi8! �MŽ#”³Eƒ¡#EìÙóÈÉÍAk‚`á‡1¾o5ãÏÁhý*&¦\+Wú“ˆ£Ð_¿f”z.%¯ør,LKJq1úÂ!;׺ôÀ9[Æúއ›W»îàîvåÒIÁ]âbßL­ZqL27¤Â�.âÓbp”¬3èZÐ@XMlj4oåƒ�’pºDýªÊpž]™.c0:1>í¾KÑ3'£p̘IÆÏo]§Ä Þ°u-–/X�Ãá‹ao댤”�܇˜Kg�S”A3šÎ=›Ø�'ã|lcK[à$ÙnîÞp´sƸ±�’ÕúŠR»ÍÛVádÄ!\ Ó³Áük«®åQÂR­¾²- Ômøîutj�Ží;*±HÍ)Ï+¯ØØsh¯€�î8Æïàɱc¨Ð;vîA`P'åük”¶Ÿ>ýy²!}ðÃ�ó‘�•‡}á‘;fŒ²~ðæ3hÞ) ‡�EP—°ÛV)DæÒWKË”8§Ú±D«J2QYO Ú‰ÆàŽ›u�»fvÍöÍ ƒ@lh·®hÔY©WCÿÒãÏ|ÜŽ–]ú¡#™1UÕ5 Rdµ±oo¿:§'kFVyåçæ¢€¯SdÔ´ð÷Cs2,ë§Ï>ÿˆÆ_J 2†µv24$ÈÊ×ýH=zt"²;åî?zH‘}ŽÜ±LÃÖ³u„³oP-À*×sæØîÆ8|ŽŒoß®c ÀÊý>~­ÌZ!âà~¸zzIV%9L·77A ŸOou÷mÛ”„üúÍß 4wÆS^À°±O 2y'ôÍìa`Ú¸¡^)Zµäï‡ó2¯ ò2•—ÊèÌψ~U)>zÿXúºbñÒåXðÓO5zlm~¨Q€UÍôã÷¦~¬·­ágeŸ6È*ã…89YÂ~Ü $ÔîçåɳãÏçéÖŒg.ý³ÎÓy„*Yʸ•©£ËyP 1�LÜ[Î|®ž:ÃøÀ°{çv|òÝÒZ&«·õ‹g†ÃÚÉeŒ…=ìà¸E„+e˘!†õˆ­œ—#U©M¾�RÆSج[g�!<œÀ蝹+ R¤ [H·: «Þž=ðd<䫺zhÃþJÆaõ¥^Dî[ÊUÇT¿µû”úd¾8¥Ö)Nòªùä½v=´ þr¬±¤‚r®f>pw†üìœ:\ƒ�{ã çÆ®©î—6–öi}™‹©sõ¸l#ÏÄÂ…òöM©©þ[@œO% ÀºmÿRÎclam¡qZ¬æoßÀ°î<á�Üã‡} S®eçþ°€àe>®ÒÑóWŠí[{Á’ÎÆ%ùÙð cÕÊXî¿Õ´qÃ:<=óªwW@T;Žó'8ÞŠlïÛïÍÁ©ˆÃìÓ»p=‚—^y£GǦMq`÷.ŽéUØEä€Öm†nzÚªRôÀ×ß~˵¶&OzR¹Ì‚¾‡SG 04L½,FŒ¦¬µ;ê½iÛ¾ËmE�µ~üaçé5Öm^xMYIÿ/c†¬¤�S'{÷D°Ø]ŒëWç£ô9²žÒ8ÃÐ�¦¸ØX wR'c½rž†•ZWžXƵ•5š&ŸH¹OTò @*u>Æ0=…>pcLï3œgžå©]‹ºsdYŸˆãª¬�µA7uM"ý³ö~^à/•dÍØÐšý/UÉ¿Hed­©çîa\ž’¤ŒÛÚÏÎ_¤ŠMÕ¸O-вާ†l*¦©šZ ©šZ ©þì ëÑ8ÀÊ‹««Ôc0Ù1�\(I’ý‡Æ€a+ñ×2¯ÄQö·;"lWL`NnJ¾õß娃¸xù2A9#XšYÁƒž¯%åúŒÃJÖ–­†�4mÚSH#+pü£�ᙩ�£ Q»vÀÑ£È)©Á•ÜRŒÔ”¶µ±GçäK°ÉL„㲺ÑCøFvNS³ÿÐñd%aÑ¢åxöé™ôží¬, µï¡ys?£G+»j(k»•²H3ŸžA¯^g‡öÀÆmPZPеK¿ÁC#‡ÂÌÊUú8Í8².\LîB>¥Ž|(Q8}Ê$¤§§qñŒK'v*ržÁŒÿW]£Ïøs“)W‚Á£§@¿´.�{Áñ�aÊ‚KuêL*bJYÝÊ‚4xyy¢†Æ¶£dË®]ó¥›Ñ Ü:4ƪF3Ó O"»sãÕ†Ÿ;aÜýÈÅZàh?¼Xò Œ3²0Ä�l˯WÀ>.ÒØ€ÆÁmý00¿q�O€&|´Û«ÌȨ0 WSžÈo¶ |{”ÚØ”\ø6w£® t Œá`Æx©^”}61ĦÁ͆Œ®fháí®HEé•3Λ *+õaorèUmAØÅMëŒmª52wŠ2†–gr޽Kaõž-\|\i0>›´¡­‘dèÎ+5!DUƒf;W+à™Ú^r/²0•6¿^¡�aC€¡‘1Êu,Hæ­Bó©Oóø¢›±D{Ö‚àjä¹»Ç3f¡õö-J9R–Æ©É!LPõóÏdñJjq‚ññò³ —›�¬çÞ†õ¶ušÌZÿ_­4†£N5_bt¾»$בë«@}ý³T€µþþ{ù,†Z1tJû©Œ•¡)×C¨Äʶͭgø–½œ'ÀaÀñÅ#\ò¨ÆgP”­Â´¾)׫�ßU¾#5/ÂBû¡£;-Ùªd*ŽCJum›»G÷n_ï>uój ê7+Wþ¢€-õï9*ê, .ñ»—$õW¿75¯úÌȶ! [Íw¯[õ¾:Oý½I»…„á“_Sa  ��ƒÑ²¥'üý[á©OQ¦-Á7ûîÍë–Pf==ŸÙ2tBg¾Hõ ÓpÇÞýÈ/8�Î! šau�.ú‘ùׂq,%íßµ«ÖlǤ)“q-/ »·ü†ýÇbwúû²lal߯>û§Ì ®ƒ¸spæïÛ:] k^XñRVYdŒÂ Ë·9<r?¸' gOžÂ—ÂQâH…8 x ì½‘ŸÉç‰Æ$'͸"1À®ÑhÉþõ÷’ÝÍü’g÷ŽÍìwýñë’éxSˆ cŸÂ³g£àj!YŒº˜>iã�¦ÒÑà ¯.G6û÷OèÌ1.= 9nÞXY”½þû�šˆ­;7Á’,ÖOçÌ%óÞ]X[¶ÄoÛ×cÕ&Œ�ŠØ+ј÷ý/nߣ w{¬Ý´~”Š=y$�?ú8zöèY[ýNŒÛÚ;Œ>dÖÖŒnŠmŒ©«Oªš=UÔdlj;Gœß¿“±Ã� †7SV9¾iózöOF4`n¢ãÙpÍl(÷|é¼Ç~ýPŠðõÈÁ(.ºŠ³—.(’³ñdó.Z´o¼þ&œì¬(9«ÆþñÆxxû“�^|3¦ñ™m+`eäsdA'W�Ë3±ï>”\»Ž›VÐ×ÂWQyPëÞŒê iø”tñÂ%TÓ‘ÈÌÎI=|ÛÖ‚à㜯~F.ã °Ú«ï€:,ÖÛN¸¹£K×P`•�¢áCö´LLZµm�ut  À¯ â>JÓ;9ïE€"…Ø1ð&�q–FÓlY(�jc—¹§ý/¼ð7`•“^|ac˜&Qƒ<+~ú É9b�ë§\:@˜Ò!©~ÊÉNÅâyÿĦ}?ó>ý(Ÿ­aµZQYÈù�oþžëŸ'Ÿ‹ò¯"üøI:Ê… {Ø@%‹…gè﬒)ùÂiÄq“–Sˆ¶d°ïÙµ‹L_CÄF°/dœâ:¯ÙQâ¾�c—·oôêÓmÈÜNK¾ ´½üV¿ÿìØØÛÖßIC)òä~:,ÂCC'Ö9¼÷ða*Xà×¥¿p¿ŽÂÎãóE²¹ž£Éë{N(FYC‚¬{ÅyÊ@§FE!@O?[ Ó錯wíÇå+ñð¥a½Ã'ó”z—�<¢€¬Ò—V„öÅYÎ×âóoÐЇå44oé‹£{è0GåÇ«—0³¢G6¬E‘—û·€ÁÞœ«5oÝ:û·Á(ž÷Ì$c„2rÛœ!*Ô¤šÊ|€c¢Ü‹¼´†TGºµkWãóO¾Ä˜‘ckV)G{l€5(�L2-£¿:> è(s#ûä’düÒfºÊ>·¤^õ�ÆÔ:ªã¶œ+`€(5Èx+ó9¦[PÊ“y†z=ù<†á2Vo܆Ñ?(•4ê¥/1¤wg¸¹8`ÑÖýèÒº…zèž·r-¹íkj2ì‰Y˜úØí]Mï›Zà¿®ÎP%ÊÈÔíZ†ÔÖý~¬RØ*:]+æ\.—cŠ5ª(•/¡J<)w¯«gBe(k˜¹¶@ÿƒk¯-o‚é,,ñª—þú ×Ð)8q2«W¯Ftô9|úÕ· 5AG5+ª›ìä¾hög"âä1J {sܨDIqôÊó©|åÃùQ[Æ«~m8ÆL�2åÖu8V;{x)¯[;ïüN %-?{>ž‹"Êì—sì-ß¶^é/Ì“—{â+ï…‘{/Iúbéwn­i~ÿlÉ'/íþJ€Q•�/}³6ÎpA‡Â.ö4âºáª¡)B:´…'?®0Öö®q[**šë Àª&Uz^îKÀ]u\¸[絜×VT‰dÌѾÿ×µÿ×¹””»ûç[¾Wõù“çénŸÁǽ6]ãþ¶€þý-®©´¦hj�¦hj�¦hj�¿r ”å¡0é,ùš2„ñ0¶ü}Ã÷½Ü‹ =4c“®Â¬ª~®–xö¹ç ‡ [÷îXþÕ~xõ¤)èÙ+L)¶#Y1E¥7�“�þ]°32™r¯†0flÏRŠæÖP¹fÛ2ï%­]+›!™FGWOw…�Ř›]:w¢|ÑÓJyÚÿì݃Ï¿JÙâ“Êîðc‘OS)£9[ƒ+þr6�ËÆXF†kTäq¸º;!«  Žãíà`g‡„„ËðiáGƒ~ ^|ö)Jpæàð~›Õ(ͺŒÇ§<�{v`ýªÅxbÚóŒ+»�1 SÐ}ÈÚÕ¸í}×!ã!/IY© ”±ó! d‚.aRž° .r¿^3›$Ë’ÒÂü…ß·{`_œ’÷á—ÞU¶ê¿‘�OÆÅ K`äè�¤—™UXpì�§ã¡õVyÇ–ÕÀJ�û¡æW·É{É£îS·Ý3’ÄÚ¦œ/ù$�…ÁuXÐgÈø¤NFY)ëL£ðâ%köSùµBäW*ñûZ…ôÀ•Ä$:;*‹r]²¤-\}qÍÓ vöÉ…-׬P®)ÆAuq!ÆF‰¿³VÏÉÊ5'½XÿŒðCV]5 [©›,hÅ3XÍïxÏ¿ Úx9àZFŒ²¯Pâ½fä ëÙéèÑke)íLÙÆjS8óSRçÄ1¤§f úí�‰àlQÊ“z¨IÞ¯‹:‡+–«»nÛ=€ª�G1ç±QØN/ñ'ÉÓ°·ýøÇ`MÐÅ;1 «ÖU- ­N%Úd­ŸЖe6ö]Iœ3íxýóë–{h¨¬†ökß»ZNCçʽ(y_Òär‘ç�ïÅÈoé ®|§Ç�`,§^æ�|_üþ”ý4ðZ9¾ôŽ•ÆHÁsµ’äUÊ<ÕçA¶ê{ɪ\�[©GmèaOÿ ~}“Yæ…—iˆn(…ÀÔNò½5–ä;�g-šç«±|w³_¹ÒÁÑ�á¶ß–´¡3ãôI’ûË&Ày~öhGR·ÐÎøô“Ï•c—(ÝÖ«—¬}üáûxõÝYH%³òÛ W`œ’͸•#•|›¶¬Àá=û°xÙ�dv^§aÍKÙ¯ýoȨg !;Ó¨¶dá�8K–@'x‹³Ë©f¤œ÷ò obþ/sq‘ðçÏG(ûd}jâ3HNOÀ™sQxîñ·}< ô€æYÌØÝúe† ì‰~�½Ð«ç-€U)àæ¿9sÞ'k³&=5É©WÑžJ õ“µ½Ò/ÅÁ™àà_’¼[µÇ™Ó)è×w(.]JÀ˯½¡ìß²m³²Uÿ�Ï8edí^-,G>Lž~êŽIUd•†*Y‚B5À›|È(1EZv!¦OìˆGŸœ†Çžœ®ƒ= 15Çô,ÑÌÏ•ã�#Ç³Ýøô›%øt¶/Œu@&Lž´Öž¤õæBÌy¤íœkƸ ›ü*œ]5ºVåíÌçŸÇÜg£;ÙÄŽîõ�Þùsl<ãµ6ï ¬±dÇ1Æ·¤èÓQ(»QÆX¼û¨pcXÇ¡ª8ó¬’ÇÂYÂ>ÃØÏígÜ*™ïáßêµ[•Ü›|];¶AÄåóˆ8v/?ó¾úá:ACVQµ°#SWM'OžÀܯ¿Àˆ‡:ƒ_åÁ0êQÍV€Ö†Òæ +P˜�Ö]†áFµ)Y×Y¸±~�û6”½Î¾"Êt ƒ™c’∶fÙB„؃�°hFõ‹E A Ÿ¡‡ô@�ÁuÉñ1è1p4ŽÙ V•qœÏá ™ïù”ËíA‡´P:,¥ÃC5Õ:÷¢ ‡/âÏ�ÅŒiÿP®ýñ§Ÿ¢{·nÊË—ÇNžŠFĉHtÑŠÍ»%¿3Ÿ]É¿™²ã"Iï°w3ÚîÝ�yd‡—x>eNY÷¤t2™Ã‘} (eX…©t¢û»·œ÷m©sŸCVnÃáçŸá>>¼L‰œRÞ²X]uÊÙ7nGç‹çqÍÀ½Ÿ}IÉSÿŸ+™â¼ *Û*‡ôÏžª“E{œ”þOï$“:V©c”Äu>~ìð|�"”1NÇÇÙz`ñB2¢µ’z¾öœGýãbt j�†~F2oÒN2‡’~Zê+[µÏÖΣîS·õ�I »‹ã᪟¿Ö>¬¼ïéQhí림Öå¶ã÷sGÄö%÷T\ \f†Æ÷tNSæ¦ø³[à$Ç"I=‚ïýæ;„pý\Åb“b© bi·Öþë�ÌÔTœæÚ¸¥¿/bbŽã”c‰u­S †’X:ÃÇs¿F9ûùN\WÐéëKgb.áͧŸÀ›_äàáA1oîWذq3•wáÛù 0jÌû˜À9†š:uꤾU¶�Ý{Õù|¯DµCÒÆ�áÚ- þìïd­ #’¤³pt,¼˜•ŵb¥ßRûQ%ßüO]SÔ_GKíÖ¯DÐM™øTTxŽë¹+—èPt¿nÞŒ%_jÆLµŠ²Q׌r_R†Œ-r?ò’¹v]GWõÌÿìVêù¿œ`½Ä¹H OçÿåÛlº·?©š˜¬RÃ6ÛÔM-ÐÔM-Ðԥشb.Ð(VYFƒ±vŠD8 BmŸêBÜy´ øãqÌÔû4 ‘#&â²Jq ê2žžõ YýqöÄ^�€?ãÊYQ&ñ믾ÄqÆO�óñg8²{‚}lÉÒI¹K‰ÐÑ3…—“=c.㚉|èA+IŸL¨<ݰ ëÖÂÕ‹†ÍîŠð JÚ:zžî·LQ¥ŒZS|o YÌØÐ¿�òµÕ5Õd¸ÐhJoÜlÆ ´€ƒƒ‹»ÖÌÌš’�v035Å?g¿Iࢃ† ÃõÒz _C~~!�¤(¢TmX¯42úÁžlWw/oJµGòå8Ê·„c¾Þm2'ÀíÄØz�|„LV�±UXe{vêwêfmÕ÷!cmÀI-7';�@§¥â�›½ë7k‘oZñzå¢ûw-Mr¼±<ÚÇô)×ýòLc›fö¸”Q‘ît%Kʇ,†ŒŒkHÎÌa6_RÞ2+#4†6c ÄŒ¥}>ú<å-PRY7Ê7x²:u²¬êüEŠWÀµUIâÞž…ë/NV˜jŠáÎØsU©ÉJLZÕ£WîY•e’÷üþ+(¨{þ´"óª;~"ô:t† å>[‘Q¬«k„«×¯¡wß0T—]ÅeÆø«Zñ+ ÿ1Œ!jÒËøê[³¤(D¥§Ã�Ï„¤èÌ,6´F�ò"åsCÿ„=¢»â'¤”W ÞÄ §*t‘VQ�Q4_*¦„õÈ1d0f}g×9=X¯ú¶X»’A¾¯2ß®´ïǤø:çÈiƒÆ¤�µ3‹ñW¾;•�©ãƒ"±Å»xKRÙ‰’·~~õ½{+LÎïÿù!ãŽú!¬ïõTeÛ²M U)‚1rÄhå™Èeÿ¯¯§‹à.Ýëä[²|%NìZI9áSÈH¾Ìx¯áT´¡äqòôÅŠÅËh˜tEˆ—Ž1Ÿgë^رe+ÙŠŽpµ5BÇ�P²*­ê”)¶“½�ÌâØ¼2tè9€RÍzpf?ÜP«UYçÝÕ?ÍÿG¶¯…/ÙÕ¦æ– �R»OÖ>yU×tÑš,Öf{zôè¡àÁA¨"‹&�äϾúü±öÛ6d,\ÕX_�ñ›*àÛýMþA}Ù¦'È~^G‰ÚÑ ÛÇÕαû7 U·póð¬sÁtŽ/.vÈcÌ;7Þz\ä%<ýªÆÑ¢NÆ>ˆ„ò¢EKaiP�¢Ì‹œïtEUQ6Üq�`³‘¾~giv�>¸„Š%®pprg¬æLD\�Ö«s)í�Â:Y³?MåŽÔsG™Ï>­:Á“ã’ò9¿)­¬Ä2ã½,õ`Uu ®V†øjþBì?qƒ?ŒÃ[VA§,5zœÏ9PÄ]saþ÷àoÂÚ’± /\ÆÌgžåoŸ¬*‚ ßý Rçùïo¾Fõ232�på Ú­¥£ǯŽ×®;ÌzŠ1¦íQ%óTÊžÈϪ¶€'ý‡¾ý$màó˱×aÉf8<2/‘}õôÔéhOÕ�Ó'‘¶d¢Ã^ذÑ0å|Ìï·µJ½ì«+‰É†Æ!™o ‹³Ø¿*ú‡áîMµ÷"odü•$}žô*cUÙYïŸHK�5ºÞ^‚ g Žµ­*JÑcÄ#ÊX �Q3µ÷Íýq‰²�+L!a3i” Þ¾í|UŽùnæ Ú×Ð~¯öë�±¦loý~-ÍL”SûMÿ Õ.æ?ò>­ð**Ø?˜ižü�T¤é¢M- Õ�„Êë~¦¯ °þòý�èÀ¸¯ýûôF�T^›=5zÈ+ÍÁ¤‰O)2ý¢40ŒkKKëf°°¸õÛ•ºlÙ¼±ç©Þ±`!ú°Œ‚«Y ì€iÓ¦q®Dk ¥mÓ1bäHœ‰>�p­žœ˜ˆ7nà×~h^¸¦æÜN’Ì…=ªö¥:¥%šµ"ûæßë—µë(Ž$Âê¯/Í«�çnÞ«ý­šWúL©Ÿ„%‘ä_TÇj:DZ? +HÁ›\ctkãGg¶xdðHõ4e+}¿°UæªöÚW2(럛ólå„¿È?O6&Ç&uð©Ú}©†0X[xºÜ—²š ùÿ×:5Lÿÿn»éŽ›Z ©šZ ©šZàÿ_ ÈšŸ‘ŒÓg£ÑÞÓ:¦68—N‘1Q§LšK2ÿH:xð>øðCáÉqýaD©¢´Ø(L}÷¥¸¼ø">ŠÐVöX¶ÿšÓè�JÛØ¡CÑ;4‡¶¬��¯¯d(qË=ÆØc�àÇŸ#ðâiŒ,+PÊ)óõÁ.ñŒ¯cƇ+j«jAÆ­ëׄL&‰C;dHÝEŒ”Ú-¤6¿¼)¦¥$só[F娋‘ð ¢ÌÞ9åXËVm”í%Ê4îÞº•UUxöEY Ý{Z¶àkœ‰Š@v^¦Ï|�1yj(ÙÜÿŽÅð»ÊÉ£1ÙšÍEF‘é«/?R¶Ï3^�$ñ(ÍÕ7醎Žu}ÏZ%Ãþ‰‘S=Oû}�Ÿ'‚{"É¢YD×áêÃØ½.Í��Fð2î,Ì àÁ8®¾>H¸x… �ô(ؾ ¢ŽDš°Iivs±ÅÕ¢jäü¶¢ð�ÒB+«>C™?Fƒaòþk…{SX~¦j³, ª¿O@VIŽiɵuÖa Ÿjº:±ç•c¦“ž† ÙkáÇ3.p r»Þ’µÓt*—þŒ²ãvõˆô/?G§Â“�*•sïåßO7x±Äh‚ïjR™$êgÙJ›ÊVÚø“ÀPì6­PÚ[»�µË�ëz®ÞM&´x� ’ïA]D/[ý ÎÑ8ó�w¿Ð>í/ÿ>idïBÆ‹U¼Þ¥²êý«LV•i$ǤíÔ¤æS? H] «ã)ߥšOØ?’°•ߢö3+yÄ© ~úìó�Ñ¿_¬\´&f8{ «V­ªŸ­ñÏ5å˜?ïG\&;uì„ǰqÝJLž6“N-¨ �F0%� ËΘOÂJ…ö ³ˆ1OÇOœJg—vŒ{yQ1gáå€é)Ÿ’š‰Þúf’o�&êw/Þôâ½/í!À»ô5R9yVÔgcã’Ù”¬3‰íðoá� D„oƒŽQ3²åŽ(2¿ß/ÚÒø=Õ;"m©ý½Èá3Ð#P¬ƒ t:Ð ]ÍÇ·VxÝÀcé@”H µï´g1磓pž Þ•${WMßüð%~üñ;ª´B§ÀŽøû+輻”íÑãGЭxy|ß.åX—ÞšþZÖcG#39µÎ¹§"�!’¯©O½Pg¿|ˆ9} ÑàØóøA9þØã�*ÛS7‰ +ªÐ©{t í©ì¿× æ‹ë“É×SzâHšãïŽUŠYùó">^èÖ§¶®Y‰ù_Í�…ƒ†2ÞZ§`ÍØèÕâV?©}íxÆ·•ÔœÊI‰—qúÜIx’­Ø¡µ¦]8› GÏÛôÏÞƒ’¿p$*F»Èß}þ사íÍ“JVˆÄ3ŸÌºÇŸ^”,<|ä|=zÓð÷g¦èÈXÌççÓbó¢OQœ›‡‹‘áxgéí¿qízä¦Çâç@ýÇLÖÞÝèû¯¾ø»V/Áœo~B¹xxÂËJÞ¸¨pìÝ·Ã'Í‚3ÇžßK_’E{Œ±Fg¿þrR�“�ŒÐ�m3οâaãजnffŽåKAÛvP@Fn*�1é˜Vv5—/œÇ7;âпw¤fçaÚãã±fÍLœ4Ý)é«�$Æ_HHe×Çß~ƒñt:24У2ˆ%N?……¿.†«��òdÒqÍ•¾zd‚ß6iF†d@�BZ ›ÒËœ`aäyÌûî{ÌþÛ4ªœ#0=¥d]Å�:†-é)dSÍ‚gavíX%W�g´Ù� õÁ’WúIj?#çªýœr Þ?µlíÝ'NFaÞ¼ŸðóOßhï®}¯öc2h«¨ÌQ7þÕ¤^ãnÊ‘{P“:Æ«Ÿ¯Ôãõ·Ñ“ÑÞO3'«¬ésS 4µÀýo�V­:ÀßÑã§MÆšU+QÎp<ë©ð°hÉψ8Žoÿ9_¹huE (û@'ùÓ­S‘“œç,X¸„À*=žšªÛ¾m�²øà(:AG�  #öÉG¹ŽúñM™’áÈ‘#0·2C4UJ&Œ›¨œs¿þ5oÀ7çÝÙ³ÿ‰Öœ«j'íy¨ìW×I¶/þÝêNýhý>²ü½/ññöÝX¿vƒr )»¾š€öµÕ÷’OúM¹¶¬Ô1AoÔ|Ú[™GŸøõ[Ä^:‡™{bµÝö^ê©Î©o;Ø´£©šZà¿¢þ­ «Ú1ªR$MÈÅ3ÒTɦhj�¦hj�ÿ¡8|ŒòEvž8•T„ò½ßãÁG§ÂÊTG¹C72cS¯áêµ2ô °¯½ëŠÅ\«™ãÄ©Óʾ`z¼J:~:.Å!/û*Šós`mR }ŠeNéÌzù5|ñ© Lˆ9£ä_»e'c¯Å‹/¾€fÖ6ˆ#èëáãƒ��ÅÀ>ÝѳsK”éèaõŽp´¢Ü[ù™8d�)ñäeÍuÛ·F|ûÆ‚ñFo2X¼|¼•rµÿ¥Ó·ß!e×øGÇ!7/v¶vÚY}¿v‹Æø=rð-¤F3ßã�Å ¾Á¢óÐÌÅ>2æñ»Yßíe¬_¿�ñb­1—l±Á]ñÑûoQ®ð0®\ŠÅ‚ÅkDP@æXyŸP <ÞKõ4)„ŽgÂM¦Q@I‘RŽì¿Ü%Ä:=¬ŸU¥ž9:“\UYÎø�æ {kù .ðÉíB£~LäAÆüó¦üs9AW;JôfÁÑ·N„À¾^8|ø,| Êá|t?J£ÎÀªc`aMÇ`«¢Ÿ5m~§ún¶rV² ¡\¡º¸=Çg¥M ù%LçªuІ²šj:Ð-?üžŒ™ÖAcL–cbD è-};œ®6Àȹh¯W…ŽzÕê©ÊV5ˆªÆ×:ïñƒZ–—)æÖÐOc0W‹¹Ús@a»àÎV²pWë§“Ïb VðV¶6IÕþm<åÒlã±{Oô ãåð7ãóûñNä®ZÃÑwçZÅ3c¯V­‘UTŽ�ƒãëO>F¯Þ=qâ­×Ô� 9¾´ ­"^6¼]ïyƒ‹ZÙî9°>ž­P\R�¶Œg§�*hm0à£�JnƵ3»ù\i»ÓûTJiKr£œöýJªñB5’4T®ÚÞrLmóúùĨ"ÆIwz>T�RÉÌRyVéš!((ˆq?E_JÔˆ¼ÀŸñÓ pˆ¬ÿø³Q°¥óˆíM D=¿±íìwßÄ /¼HÐßGvl �Ú‰! CÄžepiˆ™¯ÌÆ·ï¾FWoì?¸Åt®éÒ³?–,_Eàì(>÷K²óM`òñ'µ`ªéKoyªÆ+ÕHuÅÜÞÅ¥ÊsÖ&­Òê|Ô>´îØó>z ”®»^TÆg¬²3ŸÛ¬í5ÈÎM`Œæj|ÿÝòoaÛεxpÀ-çùޤ�µÁ~õÄåT;XehƒévÅèùÔ›ð),ÂGÍ!ÍÌ 9�ÃW£G+YW%^@ǶAµ ëGü}ê)±)Ÿ}úyµ¸?¼=FÉç8JÚ[[Úbؘ‘ø=�U.2ó‘1èûðŒ÷ø¾¦zbYî‘GöÁÜÉUtØ�8¦Þ~~ÊaW:Â|ñù—¸aô£ORR_|©çŽ`lw‘Ó08 ÝúQv—ÊïW�6YJÜ)�9²>m‚hh%Å�)+é|€õ“ß…›£=ÆMy†`~š’ÇÚÎUÙÞé_ê�ÒÍ; Ñ¬ùˆ1pi<&‹Û©óH´mÛ†c�] Bs­-Ûuä÷1¾Ñóïç�‚ê1üFM}á~û»e ÐÚ²c×ßÍ£}pîÜÏ8nW3Nèp¸x4WÖÃ;֡ψ ()-†·Wsì]ó5ŽžŠf=‡LÆ�›»x ^{~ ºtè€ ÑÇܽÆÌx]éØ0kê“J~µ¶šùr '㼃”²¾ÉÈWïáû¹_`Ý÷s°ó\6�Žã·ñƒƲ®Ñécç5d Kºe¸®/¥«–S[¿O ê¤8Ê´¦"‹Ú¯k�Çò^lXj¨–' 뉧ðôŒ[zÙ_ ÍÃןÿŒÉOÏ CG fLÑ€êyÏnçè'Ð>|:Œ�P§ÜŸ—¬BÇv­•—šÿ÷¶Ç�G*‡[‘y¬m_«�Úehß›ö~4ÐÞ×ô¾©ê·ÀÊ k»Ü ݨ†Ô”þ½-°zÙR|9w.:´oG£|÷ýçt6 ³ÌB$ÇÆ`ÙæÝX½è{¸¶l‡7Ÿ_|·êIèGFžR*DFìï¥î ÷S]‘Ë1a¦<¥™7EŸ;ý§€¬R�ÃŒémccyÀZ¿ŽÒªénú,uþªž#só$+{´aÈ µ,íù¿š¯þV�ëë&u¼©_~ýóÔÏj~õ³öVeŸÔEœr´ûsí¼Mï›Z ©þº-ðo“ V; UФ>þ¯ÛDM5kj�¦hj�¦hj�ÿ�H8}9I'‘@fн™>Y§)QB†dËZk3Æv15Òƒ™‘f#뵬xDœKÄù³1X¾r šÙÚ2 ÂÆ?Oa%ZøzaêØ¡”ø5`|¹ 89KÖoÅà.m(µHÖYUI —QTR„‘d7„¬³wt„Žn.rAXJv§«ƒ ²Kʱ7ŠqJ- ‘of�‘Q‡Ñ1?³¶ñsºuBr%¥ =ýÉÊñÅeÊZºPªQ;id‘tàÈòÖ®©‰)ä%)âÄILxâ tÆÅ„D<ñÄcðòòBå[‘ÅÚ5¸¿vqX½bZ·Ñ0ZëhäC!A݈£G(»WˆC»×£uû`%g }‰�ØIùOg4÷uÅC£Ÿn¤„º»{€™öìÓ˜4uœ\5 3[3]JL†Á�l“˜³ñ 뉅Ѹ¾¿Ì¦¦Ê¸n Ú ~·–ׯC¨a„*�#íi猹Yš2¸÷ÀVön-áíë‹¶‘HUšR*.‹²ƒ"KšÆæH'»µ™�)®—\ÇÅè3ðhƒÆ\ó!£-!¡ˆÂ1°¿t¦Ç`ÜÅ‘'�Ë¢4†AMåúÚ5•}"Y,/9æ_VÌdlت ˜ví¡Hã:ˆ1“,F·“U¦ ²:ädÜòÒFd숴©šT©©C†è¯SJ ÒëpÖgÕ|v4z–§&Ö9W=¦nª·zL{+~×>„JJ�¶4…ƒÆÀ›2ž")+eœ ±r}|ô™†ê^ßÖ U”u7‰�Qdh‹Ÿ¯�ÉC&jØ ë½~�pâØQÔ8ûb»µ/ƒÅŒó;½ú>€rJÐVFG¶i[¶[OϸßÀPþγÉÕW’‘œ&¿§d¹ºáÙo)¿ØM#U•‘zéÖÕÐMÉulûá7ŠáoÛ~ã³AŸŒ›N {dõj ¿ºÞåUU5ˆ»t…%Ù°³v¬½õ‚ŠÓgÎ"8d µX7† ™iÈ¥H/Ÿ¦J¨‡Æ…c¨nu�UM6|Ȳv%ˆ]Iªº)ÇSNV«8GgG„ˆ'¾¹y%XrÏ|ôÖ+T·h� F¦Ž�Ñ*¹�WoÙ� 1£¡©‰—¿ø ÇÆZ¢ÅÆ^@˜‘¾$³+ú`‡É³0ôŽ¥Pð¾i}jÜÒ’ {<s ¸0÷"”ui !YÃ>\l{5uwÉG1¾hÞ³�ca ©ß½O¿*õý¢ÿ·œ³¤ÇúìÚ¨°§¤½ÓIˆoGÊ„‹ÉÁާΞŖ�;á×P…jJWÖÔÀ“AˆÊ1JÛeõÛs {-¶yãvlâ4ïñGº—Ÿab "OòHþî²ÿÇ"Î]~^v_ÿWþŸ_VDE™ªÖt.þ•‡ô?»oSJКš(§ÿ�� ÆlBöj}È_uÞBé!ˆ,÷Ü{©4xp ) ßÊ>l«¬mí°/âÓØÄáßÿù7¢|/;Tö[b¶òÇX_?>{ó˜7¼šAÕÆåÅ»kU]3fΘ!¥Ö+ìü'‚bn†‰±¨�Mç{Ä•ö!údÑÏ+Çç¯^©XÇreÖÖñN'Ææ66ÊþUÔ#úC *$eôºBÔÝÝÄõ R‹ˆëAš.I¸Ëý¤øý¦�tW}ç離}mOu«îKŒ{E€sUN–™üþ º^=¯nu üý[ 3ä&«è”ähy7²´–ü¿ú[ÝêP·€ºÔ- n�›Ûµ”‘LK< ]K´çÆ`Ìð`F‹^þò%€Va_¬ýÇ"±yõj 2vtâÖW×âÍ7ÞÃÛ–6H9°gb•R‚B2¸�rÁ¥M |¾ôe¸XêãÜ™SH xðâª5ÖÌoúð#Ovœä‡KŸÄô…AÏÈæÖÖdÛÕC«­•€ž7êôÌ�2¾gŽt”o!Ë¢™\Ùˆ½» ©£��?û§Î$v¬—g;AÑAa—3>fÌœ ???|ðù2œ"ø7bøŽØ/oÞñ 1Íæ’ºÚJˆU°$sC¶Ý{vÁÄĆŽÅ`yÖð\›ër‘[TË%Àº:(kèT©¿}¶QîÐåñÛàìåábIJI‚%Be»{ñ«òl—o--²ˆ{w^E hk÷ðÃtÙºó]ö²�?bVOð579^×ÁÞ’ëéé[•ÜÓzùEb,=ÕYBr;yBb�w¯é,¥¼§íí‚*–«FÉËå„a=sñVÕ×bÃúÕ3~ ¶mîd{ô“‹"91Aš¿w2d,Ê,áÍß%+3�2ÁëMv×Ì“›QM–˜pþp»¨(¥mÈ/(F…· må°1sghæg�­ V“ ±÷ÄQ,¼óQôòò@â¹Shüz›¼_IMü£|�{MŠªtßSPÂrÊb¾^îТ<;E|±ìû÷Mæµ6Ãà1“ØgÖá¥åzyšC׳ȤööVÞÒ“g?&f†õÑREý< } €µ)òH%ÿ‘î-±ï­µ˜4tt‚ïµAb|9°@uK=*ÞþGŠŽá7æMM«¨G¢n-�„ÍxI�� ,лœì½˜‡›Î/JçÝH8hÄ”Ÿ¸þži0é÷,:r/jK `on ÏA·\V<%6NZ6~Îm”ÆuGQy Ùú^,Vyƒd�ÉçNà­—ÞÂéÃ;äÅÒ÷Ô9 N‘~AAIæ7eàÎöÍ«àCæ‹�ßå÷²jª«êryþsæß\÷ã7ò¿ÒwÖÅXJËw>—«ŠóàeoŽ×?þŠ w.š�ülOXZÚ!†²…Ù™Ì5Ì\ë&ûªuö0¾"[y ¯¥€Ð¾8uê ½6ˆ>EEˆ`è_bSÎc>ºk± ‚´Növ2lĵÿÃe\ó Ç@á7i?É™¹Øuø]¤ì+{:Ðýü0�`faq–ÿð-Ù•bÈà!HIJÁ´s¤Mlz “ú5ëo?…5—Äsìµú»/°8=1æa•þn¦ÕÌÛjf¨€³…•´MaEÜ™ù­_ÃS¿O=v>~÷}hèÂT· 'M†{À8T7bèÈ:T•–QÊœuµÕCÝ¥,æï|ý¯Þ„/s°>vÿSØ¿eØûÊ_eMNZŠ´Ö‰@éæµ?£€2ÙcÇ ç=©%vþ¼·Ì�/•ÉÌJƒW÷P‚¦Ÿ}ò6êÚq† TïÞ/vÙ‹w¯Þø÷7?3è! ä†ÖúhéÛu)Ó{øH `U](ÿ6±gŽ"75�û»GuõeóydB——ÁŸy5e‹;«–�È}Û¤u Ÿ~³d–3XÂF°ûدåWâhÄ4µP™@³VÊW›˜–‡MÖ`°Kì*Œ5'.$ÀÃÑ %q`õQÁ´:ÍxòÑû�'¬b¿ 2+¯Çž{a)Ò ´®ÿi„O[§^A׳ù5—}âµ×˜ÖÀñšË_oAoWÖ=<¬c³5+V"–Á9oúAÇ21søð!L9³fLÃ=d¾‡†…âü±£HÊÈ„�£‹TöÜ/ß¡"$¬2øÀXä§šÞ�X€P/ÌLÚ†jâ�u¿®Á>]hiécêÈ0l�Œ�¯^X02®6f˜;5Sº7ßk/DÛ¢9l)Ǥ‘#ø¬ëì¿e [[î5kV:‚çÍÇœ”ýÝ®M+aõä«°ÔÖAéü‰Òua}9š_yŸìx/T?µÔ´ß²wa><ôÜe/ò˜iä1XÚûòþ·”ÎM|DP^û¡’þ?NIÊð¡C¥ç³èƒª¦ÏCS8dåÂg>ƒz°{—<ˆ(ªÁü7FÀµ©®AªÂ„ &ã&Kóq‰Yˆß|³g Áésg(ß~,¾ÿ¿ÙÕU·`Ã6*­Œ¼J)Ñ÷ª Ñ11Ré~WÙêòUIYð¡òÍZ/ÄÅ"�’žÂ*�X—ïI½äj-ðø£âS–ÞH õjûû§¯þj9-Äßù\–ó!Ç # ƒ®ò±6”f3�O!¬¼:ŸÍò:Õï Ž‡‚>Vމ,Ü./ÎÜÛ¹S:ßT·½–ù¿›ólû¾R®í«WOÛˆe—ÆùcOÕ:Ä:ÙĸS¼ÿ‰¾QŒ—×wÿ–]1žïW³„ä‹xËί\~µÍÔëÔ- n�¿Y h½J»™Ç$:%!ù$L<¬„ì“ê€ífî[]·ºÔ- nu ¨[à©Êk¡ÁÖÖºäyî8yªÔ@…ž òâOÁÆXAI!ûŽ¡Sl¬àhÛ锲1Ó§¤dg¹°�ó÷Ï›"ý[·ûGx+Ș"  €2‚·?°õ�Ups÷AÑñ(&�[Hö©~Ÿpì¡3ÓÆ�ñï+æ%õt!Á¯7~¡Ôb¹¦ƇºÃÑ„yQ™iáÎ{š“äÝ‹¬R²°>ÈÈ�¥h7l]+GJwubÆÄÆ ™ÌÓÈ�« ©«KS:wYÎŒyM3Èþ²°°”¤v{‘¦£§‡ïWüD®9.œ=@®¬†¦°'ËEÕt(OfÀåÂNœ`ÎXÿ@Ìž<y™YhÔ²BCs3e[%©×òúF”U”RRÙ˜ ±>å™/R:·µ)˜înÀWÏY�Œb ²-� Ô5Ó៚™íÖ&Øši‘å‡3§£aL¤¸4GÏÁÅÎ ‹>û'*±z׌ýä+,Ï.ƒßΟ¥Ý«Ê*©�ê|+}mªÿ‹ùdC…y³@N/·#Î^¢DiHU©´²’ׄ0³Ü<äµhàCwÄ'äÃÛdž�"ëÎZdödg- )å»ÀPI>°âøA…�˜ÇtQOWqqÉ#(ÔÐAó€0œo"ë±¥éq ØÿÛnŒ?5ÌùÒ«o ƒûöò aÛ±›`ei��á!pq÷ÆÒ^‚_Qô™+¯ßÄY8u. £ÉXÝÆXçbQR�‡Å‹àÐÞýˆ‰½È…6¤ìÐfRņÆô�¥W‡� /WæŒ4ÃSÏ¿Àß§œùTAél=J:ïÃJMû÷V:LE®Ja×"ÓÕS»ˆe+Ö¿+s;Xr¦««}]LVi£+|èÜçjii>rr’y¯Û¼{½cOØ¿¡Y[{f[ø0WJtÕ×pª–äÁdYàšÐÁ¨xí_ÛuŸõÈׯ¸Šœ}1òî;$ùZñ¿X/ä¿,)�l5g‰´ùîÝ{ðö;ï ‘ÒÁsfÍ +¼��})+nÓQýO_~‚qS¦Áœ ²<Êt‹idž•ì%›ÐÚ®Àö³qpq¶%Ø‹ÃöQ –}1%?5´t(ç]‚SGÃÃÖÆdµZøØ¡¬˜rpºt\{#.šAì#4 jä–awy&<þ/TÛ«òŠL£vjf+ΫÚÉQ t)+¯DŸ@+2SÇ@ê…ô1ŽrØS§Ü†Æ†z¬]ù ™… ›¶œ¬ý>”‹6'°9!¡#ai- ¥ é5‘>FÈXzeu•õî(Ãýö¡$ë³w,BÀ¼%Òb!¹,·³\nXEIåÝÍÕ…~O¿d&îOÑ�Šßôå_×)Š(7>`–P’ÛÎNù<ëG¯½„â‚l²!�£óZ_Í¢NÁÙSG™ÿzèÕŠaÝÊŸ¤õk—}Š3ö"lÔX”f²¿4“–7òÙpò·-hn¬gÎ]$D�FÂÙÓp¥{9•&üCaÃÏ?bâœ;qïñÞTð¦ô¯X#Žî…1™\QÑ‘î?Gøÿ³Ï.Åðáäº/Ä2w&e‘̽£ã3róajÔs[ª?02FÅDàLIA4—hðz0êÂ`M‰�AZÜyô:Fe‹Ëg“ÈìKNˆ–r¶[’»yÝ&´Öå#š9"}û…@ËÔ ŽËÊ2‘KÖ­~[\Èܯ¯(fÐŽôÛë‘Áãþz•È÷ìwW'äò7×anÉòü4äPÛ¬M6ô”äÁÎÝ�ŽÖøvã>>sØÁ¶·ÂŽRˆW}�ªÊr8¹z]~�=,1³´æu\ß ÔSA`õ·Ë0`èÕ §*¹†EáÌ™mlÒ9¦º†M®»ˆ¥™ v,Ææ¶4rœtút‚šŽ.Þhn×ÅÇ_­ÆÖ#ðüS�qÚa´“ýÏJØjSÒ·šl%;…©‰¹BÜCAÏḙ jõ)>Û˜o½¬DÛwì@Áq;³ß˜0m¦Z�ز2¬}õ¸U—`PI!Êùœqôb^i+K¼ñî甂®D¯ÀDnÛ ;;øG¦ ç©û`áŒ$…[6þ‚å_|Åü�ßàäÎíØÅhË–Ø¿ù œìab`,IØúÍ\ÏK�JŸR¯àv©Or�±å%xìÅûðÊÃ]õ(Þÿôö±sáâäŠ9óçÃÙEHèºI㦃µ<7=S¬§´þ¤Ñƒ®ø8PþWŒ2ê8)Ÿ˜ßoh`®gí+nóÛáãðrsîXÿÐC�"+;›i3:ûœâ’JˆÉßÏy¼Î5µ´0ó–ÛÜ虋i ˆQhaÊ{ß±êN MÕýˆ~YH$ËöÛþýØÅi☫÷ ryù[¼Wèéþ>‹_.ßý{ÑÃ÷!ˆÁ0¶d®«í�·À’;ï†]ïs¼Æÿ¿[JÒ¯ÑÄ÷ßÙÖlZ�]‡vãÕçßê8ÌÊÒB¼þÜЮg E Œœ” þÀLï~ƒ:R ]mó áý™ï=¶”G—ÍÆÊbú»›x–)ß+áBÆW61†׆�“V}gïÕb¬/—ßb½\F5]¢hEÇOž@vnœ�œ™rÇ ~>½àûÀSW<ÕºÕóêP·Àß³n*È*†"jCv*È…¿gS¨�JÝêP·€ºÔ-ðÏn�†¦Vè`½dÎ2÷VBÌ1dž=‚ÆÆFd'ž‡�Gs柒M¬iã`NsS-ªK™ÒøêŽ ƒ¨Sh^µõ0+Éî´ ç)¿¨ ÃÆOEhs5 4•THòŒ²÷ôô@ž¿nßIà+V’Ì´µpEÒÅœ:²æ�p!ÛSOß„àZP�Õ«¾Ä‰"·K-Ájb¢°57 Ï܇Átzßq÷£ÀªZɆ„h:8ÃÁѾã…N^oÞÞ&½ô­d>Ûášm™f0/‚ª/ƒZ½‘îä… æ{Ó XWÈå˜h$1_dDI¸mm»&ú‘œ”ƒZ2×´5µÑNü¾˜ùBìÙ‡ÁÆÀÌH‡» ‚(í¹Ÿ¹Ç*J²0d`å �⛣2)aãfbèðá¸óÞ{QPXÈã=Œ>‰Ñ™Æ¶¶•uµµf=½¨Êç¢ú]lm…4'ì<žNΕõÏ Ðgn4̓{U‹!ËÔþSd3kj†˜„]tôÄI-{2£ÇÃÝà {~Ý€¨ˆÝtt–À·­EÞD¥mžzI!r¤z’¹&[Ý ÑHÔ7W¾ô1¬)Åkh¬OàÛ«7®…OÄŠ’¹Ð4ĤéÓPMT0zøQöíOÖ߇À^C!ƒFÑoH¼C V¬\·ÿ Lå=)g�X……�„OF ¼ DBiå˜=XWˆ$[êÄ—tO2âjˆ¤ÖÐi,$±Â1M–×ôiÓ ¾†ÃÀÈšÎe/Ê<×à$å¼G -Õ}#>OèX¯¾¯¾ø� ¡%öïÛEFÍV^#Ão“ÿz}=�Ó(‡Ù_ÏP>cÙÖ"¯¯ìĽP«¡!�‰â>l'[P|+�"‹¤{ªuïöŽc×¨È ,@S1‰œNªìX±Þ2;‘`… �%ä Sá°NÙqW˜›�»üú3·–‘BÇŽǗ˾&0î?:•Ï�=G§¨Ü) üÖû’_�Ö&æž¿{÷îCLr>úx{âbR ôLí ÝÞ"Îìëø›——– ‘Œ¨°�ÁØxfÆ";3£f2v;vlúU%ÙRÕ—ýŠ¡¡1¬�5%YM[¶ˆVz†™ÉÓ/ÛŠk^´ƒ1³[þ³–,ý^§–’$ñŒÙK`Ð^ #}�ƒaHֲ㡭Ð7µ†!sk}ûï0’Ï‚C÷aí_ÂÁʼn ·­Ä({÷ÅÊêÄx…È©%;¡:XeF€¥Ç#¢�øS³þ§ËYFh/Ô fæüé …`7GFH y\C»í~ë¨mÅG¯ÀŒÏ7/²ì§Ìž+ðEØó¾±¿Äæë(ØmÆÃÛ¯`=¾y²)Çëì« PP-úÅ›/ÁT«Qg"1˜ÏÃM+>C[u&<ƒ”@h+ƒ.lç—_{›Àc�á6ª-„1¢ž £å£)±|ê.ÆœÆùäL,}ë©z30™±�ê%¬qñÑÌ7~‚÷ï-»·µ±G eÙÅ·lƒ ÂäAahdN5K'Oy1�Þ�̃šŒÖ–;ÍÜáþ]û�z‚Á®½¨DÐ Šwl|i&?#;W}Iiü<ìc‰ËoØø=!›j<ÈÀêÈCp€IF ¶ð´×ÚíDZgß!lZ³%iq)ƒ]Êü Õ èËöµ6°Àö]Л@ª9`G2 K™ÏݱW RBÕžû¡c¦aëÏkpˆ€Ø)²f3tU‘~�÷LlÙ·u·¤ècÒïlÐMjôõçžD/‚¬z”^OOÍ‚œV¢÷UÚWÿþgN�à¸$\^ô·ý«½‡r\ñÞŸÁ××Ö|>Êæàè€[Æ�„�› Öì> *‡¸°oöêë/Á@WnÌ}l/�6Àû=†I±X”‚$C{ü§Å› þøiÝJL`°E¶¦�{[X“õμì¯åh£ ö46”Ö£$§‹uZ1¨¡�T¯purDÿ;„¿[W}�e‘§Pêâ ƒæJø¥“&àÔÉH²kaü¸ñ òÁ;?o† ÇUIÌ2ëVÔU–ŠýÏÚkù[jÀ–© dNqÑ· €Ur”sx/åÇ멺¡¥©… •»ãöÅRÿ(o§úÝ�ûêåávU€U.Ï®'ÏES*YyŸ]dÀ”­™©´zäøÅp#»XLÂR2²qú|•"ü˜³¹ }þ9n¿}.nŸ+ã:ÍÆÊ1 ‘xeé[Æ`'<¾t)æL�ÚYèÎY™[cPðP©Æ+å(ÏEeÎÃ%R9Á`½^€õFòBöÓj€õ�µäÑ'yŸ;ý±�Õ[ýZ@ƒïð–P‘øod 2›%CõÏ:°öçøðÿ‘ <£)'CÃ˹[e°T„y‹—ø1CJÔQÉùcÖRÙ%Ï¡X¿yÿUŒ™v%át;Öü¬LDìü>�à`.ÙT@è÷KÏz}GGô 'ðHYÏvcŒ=Zrx‰—�ÞŸ‡ 0ÚåЪÈN»ðÃ2”��Hg”±‘ssõBBJ.Âø²VKöŽ^m Š{Á4'SÚÖ¿?ú¦%f³µW\гU”‘µÐà0lX³œR„öÐúÕW_c؈‘Rù4:’wmýC)lLÇRw«ª(ÇÈ£%­åbÅq_«�8q\bÆ9; ‡š6�z¨«n‚±¾ŒÈ\jÐ2„vcZZ™S²´¡~Ntf¶ÜfŽÄK¬Xy_x‘ÆL7ɬTœfψà~ýBɘMDmMn™>+¿ÿwßµþÌÛèâìŒh2Qróòñò˯cZm~Ç �¨[€=âÅO|�ÖjW€U,—M,ŒV�Ñ#z·ß­-›ÈðÌ–Ö}f¶È ƒ×uà棭@+™�E«ɘlE`p å‚ý±ÿà!øù“�D§ª`"iìÑShÃÆÖ5yHÍ« äm‰ÆÒÿ¬Àù ±ÈË/€£êíè¨0i*Ò?zìµ®–|Ó®à¯|œ=}Ð2ÀGæ„Tè�­iªð";ûB `whO—â®”k&r¼ÑA+íC.°8¿!dKY™3oe3½íyý¥á±‰“ÉÄÔëhKâX<µÔL0XUMH(¸ºSf˜²»:ÌMBéDþ61€×üĉ3ÐÖÚŽÀ @TTS¾”¬^}2Ä ì\fz\¤ ÷ð!ÒÔ}}͉#hþñK˜Ð‰âõŸÕ¬  2›´R5]2umm;�ЪëÌÅyÐs!ã«'€uß®_‘FǸ‡w/ÕÍþð|Zêy¤§�‡½ƒüØ»å;ìÝò=�gd“ít!éŠè@ŸÁè?`œ‡�œD!CPÀ*Lf v¿>ÄÿºÎ®¸Î�•[×Á»•M\U9Yfù½ûÂ9x€4¾“)b½ìl +RŠû[ÈdfZ/@‹R°w ‹°F:›DŸžœƒä”óáõ.ú(kÞ‡º”¸-'pbu²Ò4*R¡Oöèà[oGaA!�,¢¢Ž ¡©_}õFX™¡tï.É!%³Ð¤ð#ÓØ˜AMò¿m)ÚW8¦ä¶í(À™Ô;ï7«�6Ká~IVºhÝOŠóá#l[‹|¬ÂŽ?Н—}†‡ž~Yú_|põ÷֎—fâ�l#«Ã' ”@&çɳ±ì£ûJkK2“ÈÚÒį‡â��–cðØ©¨!Cµ('ç÷oÆ‘=à0˜`©YÀnˆøu5ú�½*ÚÎÐ̶”ÓÇߦ¢²ŒÌ÷ñ¦”@˜¨ü³÷ÿ%1‡ÍÌ­`CõU€õÒ¡uX Pº‘EæÏ¼Ž"¸ÃÌÎM.&}›0È¡šA.ú 8«È|ÇÇÇaÝ&2íBnI9.É+ïXñrÒQY˜;·^ˆ‰ŽÆéc'aáè…7?]†_7­…»»'UØ“™òõœ¾p§˜ûÛ„ù¹ëõàiÍßÕÞg혧»¡Ž@.�Δµàµ^ËeT¿ Bå­ó´Ô¬Á  ÞžBV¿·ì]<0ýö%ÈËÍÄè°2|�ÂËÙF äqãïŸÃ|Å© "Øí&ä¥ÄáÈñ“ 01¥zGg_9yæm Jr–ØÕaƒwX¥âuïÀ~Z”¹^»wÉ*9ø2Ȧè¼Þ:º—ß²e ¶nÝJÆs†´j_,@IDAT媵HMJf�MÇ6vÅg0•€*À*V´Så¡• ÓgžŽ|>ؾSg΂ƒƒÜ-¡02‚)�϶_~”œÂ"`äY 3ª2h`n/g záE*r\€6‰ö:†ÐpðDae!Âí8òÉǘîã‚@æ8M§¬v UúëÈê)@Ë…s0ÏN†KH8Ž¿þ,Î÷ÁÂÝ$€UÈÖÞõôPLb H@¯@hó¬olŠ[§LÁ0lúu;êØŒ'#\Xlr,lø¼“AÖ¦ö6T°O6 ˜*¯Hù!ÖšÖF4±N=²úÅøøF˜¨å·]»p†@k(¥­e€UÔ-ÀÕÃÂ:vcAð58È_X[ZZpˆ×ª§›Á^'ø]àsZy=Æ&Ä¡¨„ìn^£sn»ñ× ”¿E@s�TW÷sëØÁ ˜Q>“z®Hô¹ª@kÏ¥z^Z}ü�ô¬½–c¿ë¡{˜rÂ�cB‡ž+S/½îë”YóñÜS�^÷¶ê þ-0nÚ­¸“Á#â]J6…�ßѬK…޳ÿLSe°þ™û½Yû’ c"P¼Ÿ‹`1~ãaå<ºŒý…°¬åÅ{…xŽê57V6ÕÖJJ6" P5_«(;þ‰çqë´i°§2„Þxüa$5(ÏÈÁ®s¼r³Îñzêí!ð1 »–¾]*¨þP·ÀÿX ÜT�U¼„«o¾ÿ±+J}º=¶€XõÒ.fÖ_LÐhA›BÜjS·€ºÔ-ðGZ`Å·?ÂŒ,M1©Z’`…””Hxyym›ä‡Ù�÷Üw7lÞŒ´ôé6ÜÊþÌ«˜Lîx‚öh£Os�ØXû�&Š6û� ù[Þ¯W­ÚÛ“D¾R²êÇÄnÙ\©QSÝqaí7·G\s+’ùBYU]KI£ôéK²U-)›WL&–�ŽÎ)¬€»³=F1÷hSS›Ô–M%y(Ì/$óÈ-õ”àuÆömÛ�DÖòß~‹¢²J ô0‡–®>#xÁîá'àûî—˜·g3´F߂ֳ¡},B:ä‹z(¥4¡U«’�*RPèßù0ÊŠJ1súd”4VCAYપ&Tß+J7 çi`kÛ(^rkç,0Ó�‹!<¬Œ6®äõlG!Ü…LÖ™âÌÑÓ5q•×aÆ+¥Hcñ",ÖžžÝqt<[Ò)lÀß¹±®ö”û+*Aiq!sO…��!wJùòØ--%€U:°?ð!ÆÔìÌIÙ4 q£MÈÒš“Õu#ÌÜÂŽù�Œ*¥JÓ£ fØÃ·O0èYd¾Zážù÷K»:@Y½»É›­bP�©™�{=ü°âá¾ÔÞ%(óMUâK\GnŸ®�äƒÍÚ‘%ªÔ%#R8—Å=¤åì*Ig §‚×Ù;:IÀ»X'œ(?œ‰ÂÄÅ÷Hà£*S8[¬Þøö ïïx�v’Óš˜²þZ_|Vû¶!�RÚ½æ.ƶðÓwkaçàŠwÞKéq+lÞ° ¼Ïví?K söã!5æ 6oÙksÜzë<´¼7wp�‹‡ú�™7„2ѶGà_p׃’|hyaf._ƒðAC¤Iœ§?ZÐÄ>³v×hý²f-Ä¿>x¡ÌK}ì­X^Üq¼â¸Åt–Ë’òØçãTT$r)oOÉr}æ…½Oéߣ{P—�%�§:ÌGí3kŒ¼|QOIìv­&Ìöí Ës'¡Fiå�›ÄaHõJ3—>*)á® ²ª®“çe†€,¿,îMs²ÛÄ$îáë3gqÀ*¶̽ùwÜ'Wñ‡¾O݇¤¤‹˜|ÇØÌçiiU RÓ²x-O@æÅh Ÿ:~»ï¸§Ó±½ëÇOÈúoGؤ…p§4ê��?£/Ž|)\U^JE„® M-mÊ{ÁÃÍ­Ë1Ž ƒS¬×jFÆ&¼áäа‰ø•* ưc �µž}–3�úÌß+[qq1ïÞŽô‚RT 667‡‹›;|ú†qü�Iõ6¬aÎs-ÊìFÄg㾇F.™Î;©L1fÂ$äeãLl*~\³£ö…›½5ò²Ó�™Ã �Â\XÙY ØÛ¾/ Ù}Õ54ÂÔX )ç#H`�²VæãÌ(Ce©ÛØç;éQzß ÏÁ ŹX³ù7|ùÍ7(J%—ý¾&•¢Ó³1r4å¨)KøË×_âðN‚xéÈãu_Ág—�²¿åÖ9ò)^ö}‚9<ŸzæaÌž5ß}ù¢´¨‰¹çq‘Ì⼌ ððíße»£'Ž"‹÷„ÌU])Ö^œþˆ�>}/¿øÙýøo¡³¾T�/ë[·q�†ž¶ôuô(Í\ˆ}dµ'§¥£oß+³–ªª ‘xñ}ê}æQŒ}Ìuûå—ŸcÞì9رö+Œ¿e6,üüQóÝÒýøc›v´h"X»Ï”Öâ smœúúSdSEapÊ8Ÿß�‰Ið`Õ"Æõið8GMÁ‚¸½Y¥n´ãÔŽ*òÒ‰ ±”Èãh&8ïS_)9¢…lû¬qwÁfÈt‚«†|^ÀˆA\ß­úQÚþžÅ‹ÜÙî S' `Õ¿$?{‚ ØF²ûcÏFÁƒ*¸'ú€s g°rÏ xûúÃÙø�I676Ö¢•cmí®ÏY®ŠIØg_ÿ¯}ø1ÂÖ.ƒñÉ}�(Ë–-ÃéÓ§1 ,Œ÷¿¦$)¦1ØîïhU¼V[™Cz¬ý±Çc5f6ÿ²’ïÊw´ ©Þ�(I9†öCzF×þ|¾;}PHÿËû} ­?`½ç#×qòXê©ê! ÿj¬U1Δû@1Ö”VqlÊyeÿ)§}žP]ýß…°E‰»FþBà•Ûª2_¥ L>…ÙPþâê‡ñY>S"Ù› ,¨3`G*ôÈ)�4Ò.VRúCíÏþ‹õîÿ¾-pSAÖ¿ïi«�LÝn ˆ(Q!�(»Ê—˜aë?÷HÔ{S·€ºþé-PÁ:ŠÎÄmèMyžÌÕÉ©¬²;wîÄ@2š ¼Ñ_.M±Ñ##²…C´YSq tŠS‚ð|L,å{•y[bÉ:è8S 8» [¶lFFÂLÒÊk<·yúÞ;°ðþǤu`�:²ŸÒ€{1œ „Äø$”SîͺÓÑ•š‡/ß w>ú>§cª/A¨9„Ue¢ˆ¹þ¬l¬ñØ¿^&«´Kßü¸ ;ÈŸ ®îç+m| ááƒÐÌ<Ÿ/.}�,­³Ðh7Då½Ü}1sÒ-(Ì¡Ä!¥“MÙV¶”ƒÓ¦S”Þ:Dìû þAïa�E.¤œÄÇkŸ…Ÿ}V-û·LŠ<²{ß}ã5d3Þ¼;î†%YÙ镪ËQ�5t�Ï£M I2XÌ ÐHLr)N¦8Z)Lé<Õ¦„ðì©Ã1iò¤R–¸ŒNëæ÷ëãåŽ:J: &oYE¥ÅEt¢âçŸ×ÃÅ7žd51÷ž‘©ví;BIT””1/&Uy™p`¾ê˜Z1`àèáýعwòW.‡Gf†Äèˆ9w F!AÐòt¯ôJJ*4jm‘ŽÏäãÏðM*Ùa¥•>~2ôÚk�’šŽr^'®¬S§ eÌ7<:* 9 ÍSÇ…´kÐ÷[`óÔ+�Û²îÇLTVš…89 uÀTL°±æoÄc‹ŽIÃ3ϽHPO_zV‹ãjífdf¦K€J~^Ùž)̹ë†^Y¤;µðñ ¤T%ó*2p %9Ž� çàEf´Yo¤É/ú7ªÎe+7áKNÓÆ “ªàê�X_ýè¸1/©½­[Çáj2c•V%l $VÔ£·—²/‹äý]�’s²ÙÜ}‚;ÊïÚ½�÷V$n�=ŸòÂÖ8°ï€Ä´² ¯\2¯×TåŘL8=„c¹,'ËVÜ&ή•òý#€Eá(匲Ò;Aœ«0á|P5ál1&¸¨j²ÓE°ý&Í@ù«O .m¦B'ÒRÞ.ˆÐ!£(ó…“ÇóžØ‡�ÃF¡˜¹RÝè¨11Ô€¡ž62²‹à` ÊÊûÌÍ»7�±-ðô `Tc|÷÷ÈJKÁY6Ë>y!–8p>•ù_߯÷Ý/â˜õ�í‡3Q¬[Z+�ý™T[�÷÷Ÿåa·A?Rà z}ÿæ½õž$ù¬£GªìÌ.EÔ /âìOË 0d2ÀA!¶mgH…“!ìïâ. êAæ²JŠïXUë}Žè‹®° ÀF8¼„J’pn•´·"6-™9°Ë¨hÐÙ§nüò-TSåÀÉÓOuW��"3õÕGÁ”¹ó®ZÎ; &|.�9 mXYY`Ïέ-Øx_¶­™×±³É4�1Ùª”q¤¼ßº¬bãVFÌÔ�Éš’žŽ$öí®n]êL$›ï™WîÇôIW å Ъjuü}ÓbÎRÖÜTšÌ™2@X�>€MëV£½Ž+zZ˜½èô¦÷AÆAáC¤jýº¦ýú†B—采K“Vk-$*(—¿ÚÌyÃ5Ú‘ST̯fi 1uê^Ó5ì/ëÐwðHJšS�@ÖFz|ŽÀ”ãsc*"èšbü�ÏÁ= u5UÒäj­�‚¤sp4ÕE ÙŽFvþ(H<Ã<·­pôðÇø Þ Tnk} ^þt5B(Í~ëJ¹3PãJ–““-ThQ˜�ƒÈý;)|™lgæ^»nî}äYèœVµµë×`íúµ¸ý¶ÛUKóÿ ƒ5� ä çÏ¡ŒìO†î ‘*f¶ÎR½éTüèM)yk ÏÊH¢\—3�±VŸ~á°wîÌÍ—ÇßÅ…,çBJýÖ2�ªè¾Û ÷Íò¦ˆ%pÝ?( î} [ÏŸÇ΂2Œcna…¾1ŽÙàÖºÌl¨ÀGífØF¹çÒ²Œ�9ÌÜàé(òèCgòpô~û3)ÿ´x~м֢ŸÕ}î]$múEYå�ÕSZÛþé×¶ƒm¬GPÙѨ~ÀÀ71©ZŸñd¤Ê «3¡U¼÷�,Øôý¿»È0ºöŒáA#˜—ÐçãNáÃeÏc܈RuQ¼8FÇ”ÇÎFB‹�P–¼¯U­Žm/T< ».W-óAj—ûп¶²òdlBcN›¦¢Ï¼ERG\bêÉì€èÊ`cÞ‹µÔ °1БVÁtŠásÍ–}°lçöï@¼“;Ù½�}܉Óg±þ×í¡åòWúÎ'+xʤq—­¿‘DŸ*&ñ¿kÈÓeü΋g¦ÒÚ¤ú®¶I(ßaþ¾¦!¥ÆÐÖºþ±Æ_yN„àý+áfßZÌq¯}iú3OZ0XO%*ï3ƒŽ×7é¢ND>•GœÝoê!ÅÆìã»’!r”�”7bg"ØFLú7øýéz�Mô¢?ü½÷.Ñ_Êrõò>”Ûˆ|á ð7¶½ûIãn‘G¼Wßb;¹~¡ã5h(4u›ðRì7N—Ù¥ nÂGõñkW�b´,žòqß„ÃRW©n�t ¨AÖôϧ>øN ˆ‡¬2ï—8fYËÿŸsüê#U·€ºþ.-àF‰AÙrÈ*0`Gg7/æ�,ÄEÊœÞË<—FZhj¬‡�Šdvð·½(,.C-™ƒe•’|äî½{`NGýâ»ïƪo¿#þ§‰Wž}“o[ˆJ‚E%Y‰Ì_§tDåææ2/e|/�¬ÊZ•ŸÖt„ùö¥ŸÒ!v×´ p÷ ÄðÑc¥eGŸÀ±ˆ2<¼c3 ²fÇM›�w_yz­M”hÍ‚½+Ù5t8Å“•âåFçYM4[[™ ´ÕdÓ.Y¼„Š‚Ì;ho OwK̼u6~Zþ óüyHµÃ(æþ³¡Ü¢l C3(ð‰|_övVX?ê°Êåþèwfj*ËJÑæ-=r’²�!(¡ÃÏÓ5ˆŒEmsk™ÓyFç £ru Ô’¢ÛR�Ê¢l8x\ó® Ër%Zò-#f¡’@®P06®ý¾®Vd&`ÄÄ™Ò �Ùœ% 1 �Dä‚ìtt]¾+h\¾T¹D¬ó}øY´0lFÌy >ûAs³RŸ—/ÕZd3ýÄœ}Ö8¶{7ö:†€à`deÀÓņ€d.FŒ‰³‘'w1•Ò}-<óÑÖÒÆü�šì�‹™dEí;ˆÛçÌÆÐÑÉbNÀt[ËÌêꪘê„ófZ�!оdºœ8ÜØVQ)Â#†¡Ž9ò‚B(�ÚVE¦Ú¤DŸD^YóõEIvÈX \t%L äy: Ï[_3ïã’ŽS/†‚™*ÚÈèå�pøðqW:”è,�®Ž6ó³ÞJÇmÁ÷N©&-ä ¡IÙÁ;ÏA �À BÌ™´}éÀÖ§D—°ï¾û„²Õ]} .uÉÜqñLjjrÇq…ùÑÙl G;k\L¾ˆdõòéʬû£‡+V1ÅÓ‰}èÈAøûõ‘€U®zØøá\ò!Ô–´QN6ÿùú{²U)eLZµoŸÎèmâ�”¤ oia5 ³¡cBÉmS:ut Qj âðoÒ!š]D‘ÏA8…Ô—ìä Ý6_"zܪ¥ºf¦•¥}‚LÍ„Ó^r€(A=1n“·u)ï«Nç±p>ˆÜ¡JYé—ÍkKÕΜ<Œ™ ÇâµLG¼þ„‰môs2+[44[ôLí6Îpq4G\r.>ýð=þ&–8Μ�¾þýÈO†®Fú1¯n`È(2JÏQZ¸7e˜;û»ÞA¡À}†¹<_„«µtÑ‚¾Ìu8bòl²-'"(¨?¥ª%G€Ê&îwþ3ŠcUÁ.ë `À²�÷å Ý>×žÜ ƒšB)£;sg’ilœ‘*•@Í›yÍ0à9 fÕ€¹ 8yþJß9^½qÆÐ‚2Ùv¨¬n@Lä>´T”`;ïá‰*L(òòt¥ºº/ÏÏΖ… Ü}öo߈ô¤…–VQ œ�LbæÉs)Íwÿ0§´¯ª¹õº:𫥩�s'à«U«�bÂ>5›ù•;ïI+²u}}üÉŒ¿Øõ™µµj«+áN&uwËf‰9û�þ!QÕÞ„ý;`Êþ°OoL? !¡a`Ô‹÷±[}Dàåé)U“��ƒ|Î[1﹆&ƒ(E�ÇÀåð|yì§cÓ¨2PÉqI;>ùìcT—Pxæ$ge!‘ÁbEéY¨¥ôFƒ¾9fßó0Ï^ÑNcçßS2n… `8¿¼‘šÕå8KàÏÇϱ)Ø(!ÃÆR–¾G„�±9îÜÁœµ±LéásÌêh¦M™f2CiO<~ŸËÒ$-à‡3•8Ž2'Ú_|�¡¡})çìLÙæ‰0zfß¾ø2€Ul7„ÀsO«\çýv$[þÐáÃh¯­A ¥žÅ¤‰¹A@]8XaÄ�R›ö é�ß¶mF(s!g¦¦¤ÖEqažPÄG*V¶S^xÊôd1=ÖT­P_IUbêáÒ\�*—;+6ùA)_dÄ"�¬ãCFì_<5¸¦)ÕìúúµÔÂúR¾ò±õ¸C·./†eNN7é¢qÊ| dz »~ÁR_'+Hý)åǽó‰$©(Æ'ÂQ»©’²Ñ©q([ö4+*%@®?Ç“ÝVqü–Fú«ø_<D_-~ëÖ§î‹� o�ÏÏ&à›ˆ­X0MˆPH´° å³åõOßÀ¦�ë0mü JøÀÆ�1’Á-ÝAV\ `uN?õ'ÉÎ�=«8õÈŠØŸBø�÷p¬Ú å^ez2[k ¸:ØÀ†Ï²îësíÖ˜¯QÓ±™ïƒOaÒÓK;þ39yùÒt= kpÿΔ]*» ÿÈ °îÏ›°«›Z¥Wÿi«h5ƒõ¦^•WS�€ï™Û~^ÅÞˆ¯G|fþ™à`nI&ÀÚd=}Ž’õ~LQÒ|í8ð4ÓÀÜ×¶¶ÊqÀ ªRj¿?³ ÿÈq pR<Û„‰1½<®—\úà«ó%€U,åK×­’–äñ®ªOX”Ö‹�Ìcz·vHÒ¼òriå üïC"J¼ ¨‚½WÚ…(*Ö«**]©¼z¹ºþW[@ ²þ¯þòêóþS[@<•^¥Ó[<`¯åaö§¤zgêP·À?®Ì[ƒ9W,èdÊÈÈ€›››4éêéCL‚‰'Lä­ ê2ÍÍM1|è ´75¢�  %÷ ÉÕbìÞ¹‹î¼ s,ANU3jÛ˜{ËÂ:¬G˜ˆÆï°^8wAÊ·gK™›Ÿ×­Ã)²?¾ùú+L�;‡RE (ÎLÆÞíÛ)›Ç|jÃÂÑHàw÷®()-'ãÐUª—4Wç#—’‹­5ådlX!!î<ê×"èHYM då“ýFæÅ“ÿz õÀ¸Ï:p“âÎá<åŽÇLèYjL´��ºurr–&i§7èÃŒÎß"žËKÏ>ƒUk×ÀÕΔQÃI Л [Ù"îdZè‘�QÍÑ&3„�G9PʾšÛÂØ¢Ä»Ò!=}¥?Y>¨Ï`z)�Ä…ÙhhhÀ;Ÿ­À¤Ùw¡� ­{¯¾UÔSæÓ$|4)q§ ¤tàŒÌ»à±^Ï ¾�<�åß­„=¥S KÉ=‘Ó.À׆ڭÎó<Ÿ‰f2h×oÝÅór‚ó½Ù1·ÌˆQÃQCvM*¯±3‘§)g˜{¶E;s[{+n;„NõJE�¡FsN®Ä…3‡arp—™™�#rJÊ)coU”h�sï£È+«Pl3°„ÏýÏÀÛˇÒmÀšåÏ›ùÝËïÞGžƒ7�ò¶VyÍz3jXŸ¿ýÃKÇ#)%‘9WÍ(MkI€Ò2y¿d0/®Ÿ_oÔÖ×£®^8DƒL‡µ¥33ÒÒ(óÛé8r�î”#ìø˜(ÜÿÀ#V:�©R~¼@FßÝwß�Ó'I 4‚ÿ†-_ûÚRê‘yS%M2CMìï¾ÝHKK…'Ïá�w^�§§OÐ*Va¥ °$“ÕŠÓ�03:ž„3¯§ �üÖtö›ÛÀÝÞ� 5ðvî‡ýûö`ï®í TÐÆË¯-Å�ý‡1`à�ŽÝ[ð“Ò4(}› ÍöbØXùðwRÞ?™™)¢”鵘`o g¿|ý‹IU¡£p$5 ýŠóÐäæ¡°{g— ¡³8ŒÈB/£Ì¯È­$[T � ƒøºB^$IƒÕg§+ ç,2“�ÈŽ•œqprCÈ€áÒ·¼\Œ Ø¿¢¼XË||&vžèкMUèåé‚\θ�e\]ŽÚº:´i#*òs^Æ"�� ýƒCx?5¢ºº‚Ž´N¦•Èkwï�`à�aÀÚ‡€Š)¯ýµß|ÉàŽ|T5·aÐÜ;± ­\>”ßýV2HWHL+!�¬uâp¦¸„£è¤�&Nêka`}›RVíÈ> p–�H¢r´ €U‘Tª”wÍ�,­PùèÞ/É¿WA~.s 3gíÖµ(xá¸îØÓ²BLºë>2Ÿ·lWX ˜ç{ý—ï¡ß�1rÑŽogô°Š>J™NsKå½Ò±gœØ¯‰éFYq^.ƒQÚÙ�ÜOwTòpã³]Õ®`­æsU�ÁU²ÙPZº'svsg ƒ©t­ôf�TCC%sm³¿KÅíó` Y£W²o¿ù¹9i°c €)%þν† J§×âÀédæén‚½e‡xOIùW¯ú™ŒYmX³ÿ¹ý‘gÐÂ\ËB{ÖüÅÒnŠ `n­¼ÇwoÛ!õ½›¶îÁ/»OÁB»Æ”Œ q³@N½.\€T‰¸Zé!‹ê¦ÎÀ·?­B_/‚ñK œpjªŠQƾ¨™�[&L¹ìTbÈ�â5úð� >nl]}.+ó{ â/œ$Й‹æ²D3Øaçž=”›m½î±GMY1N�9ß^>8êz±Óåó,ñü)䲿stó–%›�IãFÃȱc‰BmmÅ�:‚ﺨTX!0+^*–Á¾.·¹†•ÅXØ^�G�]`Ìñ×àðA]‚NŒ^{ŽÑ1˜ðÞgcß%Ö˜s§™cØ‘A¯Iek–~†šÁ°¼P ÖïÆÂ1횃âÏß…E{KfÑÞ]ì?_a°Ò·ÒîÀÜ‚Ì�®sF“&¡�^¾½9VÕbîa B‘ýø¿J@1ÐGÉÞµ#cûËŸ?æõ˜ƒà>™×ÕRÊYÖo Ÿ/6XBå�î«ÜN¿÷}&ú<ÿy¦•§cø°Áð9}f<‰üÊ*”üÈŽ¥Ê ÿŒÉ*ÿüËe˜½pž`zU{áì&¬ª«nòó6 `ï¤TãÌ4 ×°J•ÿIâwÏ7ñ­6u üm°&RiÅ‘©ÏGñYæ@å¦3TRe …«ôY7²=­\/XEýw2Ðc舑R:™¹¿îu™šþþ{l÷m®çÿÝûöÃËÃãz6¹éeepR‘–˜Y‘k¦ôñ^¾[ѯwïÅ;¹êØXUŠ8éÖ‘ÈÿøM4GFT¥')„¿XŒ�…Ïx%×þ7P>Xœƒj~XU°÷ò3Q.ç"žÏbR›ºÔ-påPƒ¬Wn›¿d�茛è”íÞ!ÿ%£Þé oñB)&ñpRÿÆ7¼yÕª[à®ð#Va ÛDGŽ9�¤ …AÀ*ÖU’)ª¥¡ÁåZú”>>ndNÆ"EŽí(94aÒ$QT²ØØ xýÉ{1~ì8^% v/Ù±{wïÅØ c¹g9í„“Qgàb¡Í\e™8yA�tr1?¦ åAµᛕ•)±°¢Nž“öµiÃ:Äž?IpÌ�diÕÑ¡ÜgÀÊ.z¡¬ ƒìÛ ²VaD¹Öu6ã™gž•€4‘³.™ì—r2\+(‘bÎCàȱÈ/H’ÀÑ&:hë½ûþçøví*\ ”aS»&™8I 7ƒé¬…ˆ2q4k2D±fã&4H71RÀgÎ�p Àlæ�ÓàµàäÒ“g=B‚pA÷¸_’f5âõêNf·X£É�zô®7™G0™í‰óg£—/š˜c«¾]r¾»X8Á\˜}¼$¸bO‰Îž�-\Œï5?}ƒ02G… i1ÑÕ66ã®{À›ï¾‡•?ü@F±.&Lœ,•éþ‘�toP¼¾É>dš•–äS‚Ü�`¶"öÆÂ€R£†¼VºÛ¶ß¶K‹ôc:‚d'‡¸?ì “aNp=ä…·a=êØ2¯iôÙ“på2PVR8:„ àïµ° ³E?n…ß#/@8DD:ÁüòÀBÂVŒñ®dhUµµŸ½„ª2ÐdÑEБušr+¢ÎEc踩ð¼…˜¢rôJLª|ðTŒbâ´y”’Õ  n5ÛáC‰ÅúŸåKacnGðÖ]µêžçù °¡ô˜`$ #{ÏA� '�,Öó†à˜•Á 9’SF´™è;ä6ôó FXzŽ´©pÔˆü‹Ç#.ÿ!.U®ºí•öׄ•÷eAùrÓèSpbng}½Ìææf³6‚ÑMðl˜Çù÷̈r ö.”07ÇŸ~€MÌ-jÀHg2Qwüò3å—• LOõô°öTî¿]VÇ|ç†÷ Êèë+àæævY•w=1•LÒ>dŽö|Ï©nPVš�­ÆdxþžèÔ"sKXrj,óÛÀÃ݇à+ûfŽ-®d'ÛA% oœŒ‰Ã#wͧt"Y•ù”Ú&¨å`gÇ|ꦈ&£}Á-ó˜‹r9JsÓ¡ÙІP_ 7šùÜ�ù,sÄd2/c3P”—‡eo½Ì@�,øƪ|V$$B§­ÖT°r†;ƒyܨx±ðÁ'±zõjdçä"�Á÷PÍcÜè1ÈN¼À~ ÞÞ~Xþýœ‰Ø‡#Ç#ðòëï]vŸ|ô¾Xöû@S4Rµ ¡©‰lÑ+_ —Upi�X¿yïy82@­©¾ÿþöö·“¯ ²V×–#3/Û6nÅË—#þìYüº~=fΙƒÍ×ó™å cJí[1ØJ€«2À*vÙ�)b|ÔÎÀŒ=Q'0eò\ær¶¾Òáu,?M`àÓÿB¡dé]÷#€A0‰‡0ÆÛ¾Çw!VK÷2Øè¹¢ \tõÂæêfÌásÓƒÒ¹¯U·ãA/—. «ËoÁˆ¿¿Æ(©+ÆÎUŸc_D¶EœAš³¼va#Q?l´C‡ÃRAº3íØ±cRN[áxiuÄ2ñŽœsFJ‡�À4A}aÀà†c’aÀ¼ÜŠ®ùQÅ6™©‰ØÍ`ÁšÁ£ðì; ÿ¨1H "ÀÜçÞÃCs§‰"°·q¢Äºrr´w‚Xó™ww×!>ßýý¥2äCä7}€À¼Ô‡^RIÐ74€#åˆM\=8î`Å´šÆ<úô³xô�Ñ»¹Y%HËΣò‡ž QˆØkt=Ñž–·-Á°é³ðë¶µ V²e°¡]×BêÿÔ- n�¿¤ò `ÀþVÈÝûQ]ÈŠ «§OÀŸ°v?é'O0�w0ž|ä Üy×�7`ýyýظy5F »\~¼ûqýÑÿ‹Š q?ƒLú3ØÚžÏû¿‹É�C­uµ¦·-º,7©ð狜Ô5ëªÌþèuIZW»ðýÊcí½íӬϾ—NKl#K ‹ñ®ªrN,“"8†›DVì�4Õ l±?qlWŒoä~Õu©[àÿ{ ¨AÖ¿Ñ/,GÅ…pd\ÍQó7:lõ¡¨[@ÝêP·Àß J+*$據Ýü4”ÔFr|%€+`M'�`êihp½‚¹2BÞ†ÎÆÂÌ‹ð`nÍxJ±}µìK”2çš™¥ ZZ›‘•œÊœ¬v7um:ùèHtÁôiÓÉÄ*€�› ‚˜çU»ðtª °‡rŽc§Ïƒ!¥B†3/].s‚é�ÚŸHÍȤ‘�–_ IßFž¿(ås3Ði¡3Õ66XrK(>\Þ™UúÚ_ÖcîüE˜¿èî+œÉ�Yœ“•L)Û‚ŠÚHbN´Jæ¤ór÷ÀæMÛðñ‡ŸÂYäež½ŒôX¤§ça@h?滽ˆ&ò¼êJ+°lÅ ÜMfß@Êü‘ay=2\*þÌ=ÓáË\€[6m¡`†”܆í»vJ`‹ƒC§$¥åÂäAéŸnºáÃÌT_⺭–d퓼(%«À”ñÃq‘y}½¼pìôæ×#Sºµ·Lž cZèàõpó ˆ®‹áÓçÓÉkA ?[Ä^8‹––g 8p ƒ|0rÌD˜s¤<¸6d½V—àè¡ãt„» �àµÆü½tT6ÔÕÀÅÕÃG£„m4Î�܇ 4=‚àÄÕÈ,³‚�°ÞÛ¼i=ì( .€Ö=¶cÏÁíxø¡�J´¼”<£ø…ÕÕÖ�[Èr¦ˆ�‹"Èc&å©U=†ÇžyšàHªòã1nÔpHýXF&¯!+”“ ýì]x×Ö]Q.â.$„„¢îîÚ–-uê}µW}u7êÔ åJ‹w—�@ ! Ä…¸×í¹�p…ÚûûÞ=ß7WFÎÌœ{çÌ™½öZË–ÿ%µ8È�;ûvŒ:BWkêë(/®±«*)9éÓ~&é\vRÒºSÕEíݦV×òÞ�›‡N „›’É(Ò†2w.¢ç)�NíX\kù ,U¿÷ åw% "çjÑ+.É«ó¯önEÆ™La}‡+ ”¡ÆMUd£�Ãø™·bà½÷Ö »mÃ4#&hûI䨼b-¼üºÒ;—r“]@6÷µ'2\e’âI楜›šð'Ïž¶- 56@­’dYÛux^îèmðž©“f;™ËùL˜Ø‹‰ógSZ¼s/ä×SéU­W@J$§sFA5 TвºXiòn¾&‡v]¤UW6«¯+ÀV˜^¶÷=I@Ò «V­F÷îZÖ©º^ÛwX¥ìYüùÓôœæý1zÿ21/ ï°ámW¿ìûí÷ßñB«ÊÏÁ‰};`N¦õþ¯6®ßÌëÜ€ —ms=3\•éjEÖn]/—ümoW¯`m»­÷! «Ân½ À*ÛyøtŸI“9Öhĉ£‘>žÀ–±€?úô xýÍ—�šž…ÚFªXØ™cÚ=O0)Ë EÉÇpüT<ýmPK¹n‘²^õÓ�ôèÞÁä¬JQ¢vÏÖ�¸H™ùÔ´4ÔQ�cà€^È/(G̹lJÑŸ†³µ¾ûa½"éyï½ L_×,¬^ûzøy3ð�ýô7n 6FIq fßr{ÛSåwL�:…×Þ)&jt¤|ïë>í¬wù¬óǘì•[+7*=¸£{HÎ¥¤"%-‹¬]ʯ÷€g;@¹ZS’r³R‘z&[y?5xŠrNaÆœÛ0›RÅhÚlÅ>Õ’I@íW*C¤]HÇ>öa#Œ¼léÏ„}~êlîùà#Ì™6�ªOPê:Þû�ÒÈò7ê:`à˯ ü�/ñÚ‰xtõDIy1ù?{’ÉcÖ´‰ ™xgÑ׈?Ë»îV²}�r~äÞ£ )EÛÉŽx»‡÷A }ゃ�AéÄRÊýú‡¡ïlƒ¶¹JvnÔñX¼òÖø×3ÿøÃÝ 2399’í eÇÆ3ðjNé=T“1¸aÙJ|¿ô[2( è¯ZG†íz¤•£3AæEfôì"””Rn¶âcŽb ÁšaÃÇ!òÐ^¥>«ßÀnœ:û.…ÉÚ³Woädœƒ¹Qû×+ü}r1qRûÌ¿"Êœ  !@„²c�‘I¯py×}¨Ë¢¯e9Y õd�¨7¦D¡-LùÛ'&Å¢ˆ2£Y”„´ #Ú�¿¹oH__¬FÜ™(8{¹bÚüÇpêtŒ�žKˆƒ ξJ=»cÔ˜qp·Õ�i4î ^g&Ÿ¦Äk/ÓwQ:¶ž@}G¬üi#,Ì4ظi}M/ ÿNû…¡[gW²e 0nìÊGº´üOÆD!“¾®ónž†~B9»Ì´S¸ý–[�ÌÅ_~ o‚áÎd”H2r2eƒɬò†¹µ¬IÎ &âóE_",Іd[…öåÿÑ�ò¶v ‹L`-)â�Ä72ø�L0ÌÓ³}éMÙ_dä!,_ñåŠÏ Œçºü› ʲ=þ$ UöÙ«W2Ó)QM€UŠÏ37'…l?{²•®¥1k:ŽÌßÖ}�½‡v`pß‘-›%Ñ—R˜á�;{+ó ™p1 ßhú5gу1oL)¹X‹Æª ì%�˜‹‹epf†¡‘9²ÉPéñ×-A nœ9ýéki1«¿x‰,Ü‹jKáâæ‰ãÇŽÐìÓ²oõþmk°ûä1³[@V™œ¬ÔÅ—½wc�{Ç®d¤~‡Îå/[®Î�ë@2¹U‰.­¯±V�D‚*ü¿÷ŽÛÀÄwÐPnv)8!uÈößÒWrÐYvõ" mGJ7ìÚ¬pòü³È0öŸy3Ȫ2nêkËáŠ1SǶªlØ„± À*3­¬.Ã)[Ö•}HðF&ñ‚’@‘´�n°HV–õD¹½¤ É:ÂLÕí'džRD?ÛÁ«´6¼¯urü)dWסžà{÷îFö÷ßÀ¼®FXã 5°óóCCL4$Á#Û ÉÎòb¹àJÖ¾Ô%`©H0?z73ùjÎ=OÃ6 Åç�!!ýïn˜4mÆeMáááAõ&1ýŒªúT«(#óß 5d™Zh¾Z9~j�²úxöVV³"øqÏ�ó‰ü8Jåú{#¨Ï€VU§÷õóO<Œý“mß²«¾_OŽÁÿ×kð&³ÑŒ—�=—mÉP�>…§¸óîy Uêñ wwïŠ.ôö´a¢�Z /d¡ô‹÷yÝ¿ ƒ”Ä²Æ +5c¾úN˜2i&z‡÷ÅA2IŸù¬ ³u,ﵯý¬éïÚeír865á4ë†KWŒ�9 T»|�¬ªj91u‚ pߌ$|dbßšrø5T£.7 Ç4�ðcdêó΢±>3oX@�ß’˜{K®J 2)×ÛÈßbÐYúÖî7΃AxöDîC)Ç�y²Q˜ž‚OÞ}ÝÃz¡{ ê)�nÊû¶ZŽ?Œ§(w<}ò ¼g»©³ÑÔl,¸çnøöÀ…ÚF„wñTú9é%ñÈ›Œç$*VDôFpPHËv¿çƒ­EÕ@-jZEEùlwx'L™”¤Î7O:㓇•¾o¼‘`]eÖ‰,W¥Ëm‘”ïZiŸ ×vœÒŸ· ú«Ç¤ÿû·€<›É¤/ÿùèÒ¥‹²þç�øréç˜0jeÒûý%‡SN;�T*æD÷Ç©øXÞWZÇ~ËA¤¥¦¡” ãÖ6—=²þ–ê~÷6Ò—ŠŒ»AvF™Œ�ucóÒ'Kb�$(É$ßÕ"Ï ò| lóKÿ]E‹Ÿœ‚"\,Bàƒ/(q~g>?JýÂx-[¹´69b„ÆüÈ^µÅÖDmÚ“çõb"»L¦«+Ï,í­ÓRÑU>Èqë‚­ÚûÓõ%Œ^¥zý"} üO¶€dýð³‹Ü˜*E¦¼%kEdÇôEßúз€¾ô-ð{Z`ùæíîA n»–¨uîÛ±{ ž=§é!v÷�ãqÓm ”Å›7n…Lóï¸Ea=|ïèD05+ñ Ù¡AÐnÞÞÝ,°qÍt Ð>øÛ[›Á�?)f@l­;â"cÊ{›äãLF —7s;c¬Û¸ž²·Íëæ�ý1 0g6¿QM)Α9éI¶ÜÒ:x1nÀîIzÀº0`{ŽLÎþýzã�·(û¸ž—OÞ}UYÝ�ò—R^{í5Ý Z­ `"c޶ÀÉ·.Øïê‡mlÿN|Ð-¯¨¤÷m1Ù>0ol SÓSÇÑ'–ÞžÇ÷l££6mÞCi`;Ô¥bËö�ؼn9ztÁ J¯®^õüȈ `�]˜86Ê‘ÞëtD9й·ÞƒÃ;6 �ÌŸs” ¾ã† ˜zóm ãΘ²™QñôSu·# …²È¾dcòw�"ëCÏÇóϽÙ°îÝ»/<ù8k«èÝ™Åà‡5¼t|e;÷.ô“%ðKÙã¹sçñ÷ô´[òŽÄlÂгp69C‘2=C q/�ÄmØšG�îEÕÃÚº(Ö݇î~Ôk^ ÉqI€H}ö”€žò.’â•0pRAPÕ'U}—s“eüûXÇœ=Éd˜‹¨¯©#@h‚Äì\PÚkûºôs6¶ÖûGÕ šØ?šW^DøŽ8|H“Î’#)*˜0©wˆÒ62/ÅÌ%zl¦µ-mŸ• ÀzŽRÂææ¦hdŒ1=ŠuËê¾ÃD²Â¤”fž§úÃzt6·$Ôè®{¥Ï–ô~Œ‹Ü…ÞC†#%)ŠÌø0—U °¦GOCAN*B{ ¼Òæ—Í¿gÚhLºiž2_VZ-;]<¿¬‚?iFýk/z›Þ¾­Ç °Æ êÞ-¸ÕžEb÷رhL=þ=‚èÉy#‘þv¡—¤¨[L2ï”eC@Xo$e¤‘‰íE)yo, �f=™1â5<ï¶ûp:½ƒ‡Ò£,ý Ò’ãáNu £¦ZtqhFyy%|ƒ‡aÇö�ˆN-ÅI‚„†à*J‹°gÇTÔÂÍÙ–¾­ÍXýÝ'ðt2CW*VÔ£©¾)§�3 ìrÐ*òÀ~øtõEÔîuØGôàÎõ8Kpö(fúÔê|åË–U+Еàjïð ­–<‰‘C1r(ÞU�õ(Ói##/;QÇ¢`i匸ØÓ°¢ºÈmwß‹Jš/|óe[»bШ±ÐP•¢+e‹}9¹óø¥ÄÇQÞOÑ‹>;#ƒcO”äg"%ö <ý/±Ú�’]]Kö¾Áþݨ«¬ÔHC×ɳ(ÅœŽ¨½Qž•€(Ù¿jÓvøq=[þ®QEuè™—ƒÐÂ<|Q\…‰Tx˜–x\ÙŸ¼”™› (£+;ÚbÇf7Θ�ž={âÖï×(�Ú.ýàìP�ÉÃûá\êY&U�Vä3}ƒmÒÖN0çÒÆÁ¶NÞ-õªJØ7\ÈË…™‘ Ö/_J5zbs òá§Ÿ£g·ÎØ�ÉûKweõ5ë·"‡ ®ÕN"zµƒüÆõ¾ó&\x½ºíÛ¤³ú † ¯ÍÁž}ÿe”—Ö#’lÜþ}˜ôuò ¬,Í¡!ËõZ‹ô¡" © °^붺ëe…� ©­T‚ëÒ·Êo֞Ƿl·nË6&0UÂ�ãdµHL©bÙWeµ•[±§Ôåú÷¿ Dަå˕Ǩÿ3ÔŸÁõ¶@tì1>cnA(eÏÝÝüZ6_ôõ'XôÍ'˜ÝÃy¿g1°7û [JÖÖ`ßî?8”~º¼ï�-îèÚ…à¹ô$ªHÁÖ¹©±ô2]‚÷>]Âëðq¶!ƒ¾ YókaãFàôøqökÖd"ž lï!£•Ó@O9 ÊöP<Îk*Šw2†ª ù{hèg[�³‰I¸qöÝfP>o%ÈêÛ=�ÇÛšíúÓêÕ pC?Œ›½ e»5?ÿŒÞ˜<}&¼:w&Ãû�!L›*�Ÿ´L^ºiþ°!CÝ• MK–~‹E—Íœ1 •L2gbËæŸWàß߇%?­ÇñÔ¹N:‰û÷Á„ÉbE¥)Ï«cìܺ~ì+‚Þ^¤ôS"….¥’*!ÒwŠRG/&ÄxxøÂŽI§�]ÊLÍ©ñ|.! ï09eJ¿¾­ú“¾=‘îßó^ÿ3ç(Sç>Z€3êØQú¸„ Çvê(©šÈ¯;ú» û¶æÈ>8³-\©pÜ“ \.ðpsU&X­¨Zr=E•†¼žmÚ[×*=EXe™\ת�Ìoou*8X(“å/cYIúõu-›ªÝMõ3ÿ¦-�œ|GÈŽïÛ÷òñþßô”þö‡ÅÄ[ÚèT�¡Ø±£åä|\ù<Ò‹ÏôvÊwNìßzõìCå 7eú3lóö0N8…j&f%Ö²×&\_ï>…Áš˜šAë…�¸ñmb§n®LÖÊebÜ—_…»oˆ}wÝÅÊgéGµ€å-Ê8R݉V!†cz&0É<]V]GÆœ’À(ã~™lÿÐn÷­’ܨ½'·~F@wL.uÉó‡n®U¦ÑŽÝ Õ>ëk÷*«²�ò¬1¸Õ2íW½¶^¾ž`rüºû»|-ý} è[@²þ‡þÒII'¨6å0$è•Òªÿž~·úз€¾ô-ð7k�0²?„-"LÏ_+gÏ&!‘“?™§)É)”£;A¶&¾ÝŠîö•œn1R‘s=°g‚G Eèàáp$ð¹c2SFðPX¬°Nš9³'ŽRØ¡3 D�B·�þØøí¿a ±A“Cú�õ$3Ô <òæÏ�AANÈ/ªÀ˜¡½ée– Ss[ʽbùæÝðäÃk9%�s1x˜6(*àªL 1 †ES3w¦&ˆ?K©Ô+·?ýôcD qs»‚Ì�;÷2€U=ÿ¾ý.±#6mÞŒ:‚¾^Žxñ*…ýx6™ eïRRsŸœ�`26³2“1cþݘ;ÿNœ¡ÄžQ}%)=Òo èAz­eÆ”P@¹?##E6oÙÒ/àL&O ½ÄVüø=L;Ø2økŠèCq† Áô™³Zª>qâ%w×#œÀ«<0¿ÿrÏøX�¬Õà�º²© Êvb€O]æÙÅÉ „Ö›!�¾ºùEd E£¦¾žl� ÒÜ,p6);#ãÐ�Ûçg¢��Ò‚‚ Ü:óvxûwƒ;Ùµõ�dn^jkuŸòîÀ tr~)†Ñ_sÛÏËPXk€™3gcýú•H8CÖ’wÖþ°ŒAØzôðäÿFcE¶×-ºU\ö¹GƒðÞd«va6 “gÜÚ²Nì©S”Št¢?¨d•[7¬¤Ì¬ .6À°¡ £G „5;G,Xðàã¨!@dË;;û–ºäƒxE?ŠûøA®f?¾õ&Vp!6fÄ|µêe¶G2Rò™míŠÏ¿þ;wí¢OiµÂ‚622‚}ðFw²Šì¯Å5‚¬gÎ0€Ì¢‚‘òYÖ+‘÷ì;h:Ñ/5À/�_¼ðøû €[!$¼‡²YfV¦ŒÿöË%xî™§àìèÄ$_Ñ÷Ûï¦uë�œ™�Æ�Ê{ÚÔyô Î"‹�þ{¾�ÑÄÿDô ú3’ûÖçÏ£®¹!ôåËä5"�õ‹eåøöë�q!7'�FʹTˆ;˜w&¸ãÍï (ÈÍÀˆQ“ZNc̨ a`¼3 X忞››Cf¼%j)ẛÿI4¡¹‚x­!A~2�/¤Æ#bàh8…ôV²³%(!à¨Ñ¨Ñ”ÎMEƒ6W**³SÆë¦wÁ®±®U°CZy�ÉuV̸aFKU2Ö—å"Ñ«;Þ—kN÷{Ë¿|�ç�¹w cô<þìó˜>û6ô ç5kCª;$üúÇ3³0}Òír*W,vŽÎd®Z²ïpÁÉc§xo© Øwåk÷Šý T€uýªï°aõRô2æª{q络».TD�r‚lÍ…o¿…—˜„RC hcö/ï.\Ädœ&Ø[h°ëõ§&¸zQv™ÒámdE^|ôˆaÌ¿°ÆŠŸ·ó¾x'ãÓ‘�Sä°gö+çÎdãЮ8„S–?:ú†�ì ‚lë×n"Ûñ�_TTÕáö{ÿ�`J÷ Àzþ|ûíŒ5’«?¬ÉRß³s+NŸŽ£ä÷H‚ï±LP1CSS,]¶æ²óþü£�чlæ ŽgÚ–Q�FÅa ûÒŽv-‹#"ú�¡ÁöqÇ?Ÿ~ �ÌLPRZŒ@ÊáFG'"+·=¹¼ÿðQLnIÄ8úšåeQ^?ûwmd"ݬ¦g­’î½ï~Þã{âÔ±¼ÅЋÛ�fŽÈf2˜Ø-DŒéß;_‘e:tÖÌ–c0§ºˆ#¯= gX“MêOõ=Û÷à £¯¦cb,¦õëCeLøàK¥_“¯z­‰½ÀW�Í(fÒÙäñSZê€uþü¹¸ÿþ‡`ãL¯rßXÙwnYîîîEó&çe²Ý�bÅâ`æì�ê*žv-ëªÆMžŽ… ßG%ï™§ÏÃÃÙ»önfâWT?r r¿ÿk‹Ò™ÈÓ ÷<ðýºoR7Eiy9åÿµ÷±(Z6LŸƒ÷œÅòF+xÍ»ÕìáÜ\h@ BXeãÅ‹—*u¸éxÜ·Tz…mûwuµ"†ÂŠò÷VŠk‘ö–{K{EÀU]€UÖ‘>þâÙx�Üctƒòím¯Ÿ÷÷k;ú°ëÖÿ?¿Û½�<Ž÷ßz î½›c„4VWBcÑ’ƒö§葨Hdeg’½ê¡€«§Ï$* ž÷>0Ÿ‰Ë&èÎgRYÿìb~>>‹ÞƒQÔþ2ËË/cu^ÏþŸzý]Þ+4LþnFp�ËÁZ>:°Ð§¼“-6oÙ„žíܯg¿¶®$IªV~’ЧöÇZ Q¾æÑˆõÎüv«’„FµÈ½TMl¬?²ŸÄ{4b‘!õª*;ò|¢l/�¯ò]ÀÍSEE˜xóÜLë ˆÕe±j÷£=&YÞð«Ëõ¾ `,ÒÆj‚f[Û‘ë­O¿¾¾þ›[@²þ~]µ“Rw-ÁéõòÀj‹üùïø’, ¶úþžõ{з€¾ô-p©Ž9„aƒzá¡Gž¸4ów|ú5€õxÔao=2º*«ìÊÆÎ† K-ãÄ–,Uµ$ŸØ�äÓ§áI_° ðÞˆ¦´«±[Á”’õAÕÍ)çÞYñØ”í$0wãø±8sú=Ô>Œ,ñØC ȦjÀ8JÀÒg®¬²RYeý¹7ÏEƒ‡ôÞò¡­¡¥2N�Ä¡3é”'öE8ƒœñôùªn4À`JõÅœNDlÌ)<òà“ô_›ÃàÛE¤eäâŸÏ¿ˆwÝÅà¶%ÁÖRu»Ey6ã]�µÝ9óå—_£¿ßÊOÆ!ú–}þùgض~§â•×ÅËgÏ墫O0Á)3‰Ã8ÿž}x;† AFr¼ü‚‘›³n{æJ»¹âüíË?&@uˆì;'¸±]›ø'l+oŸî°îd…‘£Ç`Ü„ñ™£Ð×`üøK@”€N®Û]~y¸îØo°&{åRka§éîPÀ‘A€U-2¯¶¾N£!ƒ©ƒwW¤‘Åàß{DzV¬LÈ"¢ëº ;�WX€3)ô®µ²@vzº10YZÛ„Wl…qs©ÒnYéܾÇå²O6,¢öí¡�g*b Ž—•]„'ÁhSÃZÊWc-™@öÞîô¤s†A7S²K2ð­–sñ±Ü~{+Éǘè($œŠCýÖü[¾»xÕX¥žþÌ*¶³w$C¹±ñ™ô¶SÞùP&a—¼ÁÝÇŵ¹proÆ ÊA?ýô+(Ë,ƒ;%_yn/½þ6ì� ð²�ÒrÓ�ž™Ž2‚c˜œp¥Ò•×ÝÕÖšªRDî_ƒSgÏÐìÁÀŠW+€µm½Ñ”ÙzéåèÝç®õ5&KJJ‡—®'��eruP–yHv'ÀQF™Ýí7a2Y¨âëz`/�ˆ3qxæñGÉÂ2Á$‚ÓΚð"Ãz=ÙSC˜¶C3}8CPÀìö)So#˜1�,'SÊ+Ÿã±ÚQò³Š×Q:¾[ö-™g6”Ú¶ä¶½1aò�ôË5Ƨ%qôtprVŽG}9�zŒL÷”_ÈÃWï>@ß]?ú¤úá0ûÓ—Þ}…YidÝ‚/�ª#ã…7>B·î­ÿ1çcq–R[n)Ú sµî¶ï"™«ËèÔ‚ MÊøQÖÕÍêŽèѲ¹Ê^ I P¶ý®ÎWße¹›§ÜÆMÇ¿ßÅÁ2-M ªhY³CÕUÑ�Œ{™ŒŒÈª'h®•øÒzA©+IHWXæËuÞ�*Ë6:xj4ÍeŽ µ­ÀÖ;ËÓ š ”~„ë’¸á_UÕÙ2å,­MЙ¿C9AÑô”42œ“Ýl‚,Ê™|ñžÚ¹Æa}±kõgøìӅغs#¾_ÿÂy�†2 çÇ·¦w¼·j5Œ-,5]«.Ê¡(E÷XÛk;Yn3i¼Ægä0”܇n)}G�UÀ{{?c6*†]nÌ™0!EÎ[ÚQdÜDRÝæÙXW~VVYOã�Iý6#ä�/èÉ#ðÈ?žBê¹xÄPš¯ïÈYø¥Æï¾ýt #SúyQWe’â`ç‚€naÊ»2ãW^ÎP-à‰WžÆ þ?+Ý(hGðÓ¾ Úö0)Š�Ò†z¸Øi¯YöÝü*ºÁ×7»wí†9ûœù7LdBR&ŽR¦µ¦¸†O@AÐE¯ß‹Î]aEñØ•rx÷vìܹ ѧSáØÉ”,ü *Xñ¾‘„/¾ø¹!5VN:cAÒµ%‹an`Œ=ÑÉhjê€kd’)›[Z‹'_ýˆêýÈ wSV©ĈA À*ŸƒC1läX¸³ܾæ²m�áàæ…¼¶tKÂÉHÜõ3=\¿Ã˜QãXoukUVíÙ;¢Àª»½|þêÇp·ì€.ßþr9vüü>ùäkªT¼€E_}ˆÃUó2q‘É:¥y¼ßáðácTJèA[Ü܃n¸ß}C¿Ú‰7a“FFRb¸«—Χ&á™äYwbÇÁhLÝ>ã_Žc׊ïñÒ‘#L°É�gÏáxñǵJÀX‚È2iƒ©ƒ•`²$kL3᡽dÓ–RHÕ�WxŸ»Z9vdÖ¬XÄ­“p55ÄèaÃÐT›„Å?%R.Ú“÷ùÖm(Ïê¶ÝPZUM îBŒœùr˜è¶À´^aÙÔÕcîœ;Qâ®UN}.fã™ÊxÕT`z>zSF9#53§ŒS$;˜Ù”rÏ«~\CÏXWÄÄ�€»½�G²ý¤êËŠ™›Ö¯R# )z<&çÓrÄ7�=“�¹Ì¯Á½< O'xvÖÊ JEÅyʤë«çìꆮ ÊþZÉ"³I¤öÔòÖg÷"Ä+€’ƒȶjbRA¸‘Ù)É;)…üùçŸb=€’N*Þ¼êv'b`˜¹ˆŒÙÊãóÆÒ%«ÑÁ°fL¹ [wìÆ¬Ysp�É×Þûwο‹^‹áOéÛw^~窫Zÿ•ÞóÖÖT“½Byê |ùùBŒæµuµ"2[œ�ßŅׯË/ «î6®ª«:?Ž`v�â_|•€ƒ‡Êf&G!%1™²ÊÕôÏ»€˜Ä4z$Ä–Û•þÂÁ¹ÊkšñÄcwá�¾ƒ‘…‘±,«GGwFDJÛQ7<==‘p’mËàç™SÉ( àѧ/ ˜ 0xäe›}�£ÇO0xÞMÜï}sæáÈñ“”v@ï^”ˆö …WWì¤ïqÜÉŒ6ìEvA1 -š4w£§©3î¼� Ng/„S¾²½y_;žW&t�2÷Ü…Òuë•ý©/º«:O&2IPI¦¶™äQ‡AID‚¥×Zä™ ‚�~÷‰3•àˆ\³’ 8éágÐié×-ÕHàÄÔ­³¢Ð2ó—2¾©]5#Þ�òêÍdrªÇ«»¾ °šñ^à»;Ÿ¼Ý¼nqôB@Ui­y]mkÔƒÀªôâÉJ溦ͤ}vwƒ�0üÈ<²ç ì\adh7Kì"3Ueü¿G “>­†dö ðÁ}>ƒ}»vâÙçÞ€<Ù”ÀÆ©3mÍÍ{NúÊÞdM‡†À#>±Ø«{òYÎÅ"æ$ŒSÎÃ’ º+ïW–d‚çÓwsÅòuÐP5,®†kYi˦Ò&òûHàJ@$ ©ïT“ßÔ-t&û ì;IÉoDôÂ{Ÿ%�;ãÀžÏÐ+t‚}™Üp•@¢­×ZDöî[ï¸ÖÕÿòõ~ `ݾc-rØ–û mul°J9|ø0–|þ ä—Ÿ€O–|{K#tñpå8"o?þ\ýB0fÚ\¤Óƒ5ýl,ªjꨘ± †T„ŸtÞJK)ë\˜Ÿ� "ºS'�§¢C¼=àéIň ØQÎ95½;h PPœ kç܄>†* øÙ âJñññR&åK›—Žd#•\¬Ä�±30ã¦KŠêj9ÉL$1£Zƒ!ü}ºð¿ë¡.ºæ÷¨8&�Å'Áš}³#ï5‡�Á>úH'¥g#–õw§µÀ£Ï¼ ú�;»x£ªª†2ÂRÓ]y~áhT‰°q“ÜL¨ô ²áiéŠ ±Çfýú@£¯°ÿ%ðž·ü+˜'ŸÅ(z†Ïüy8ÙkÇQꉨAÛ¶Á\YžSQ‡Ø£GñÝ'aÂŒKlYu[õýƒ÷ßfÒ^\:bï‘ãd€ÁÅúZlغçâ²?îÇD¡KÌ×¼‚º·žD×-?¢€×[è„ X¿y �¼P^��1o »n�È-væýCÖÆ¦f‚êÍxçÃ�0Ą̀Uleçîýðõb÷ïƒÐàî À*Ç& ›Ü¥Ï¸À¤w‚ï²^o‘¶‘¾Yú 9.™ÈÊ—"}»Ëc/ür¯Ð‚ª¢\&ë×� «éó`ÅßZÝV� ùw dâ‘#ï[×®€"I#rORƒ÷×{ÿÍëÇ0�sÜÈK*ÿÍçª?·¿¦‚´lyÙ›±©µT)§/ø_² ¸*“”M¾ÁsO½ˆ)“¦Ã�–O=¿{c³ðá'/0‰µ‡i›àáfOeíýXÙèw¼¬Üú ­FJ©0àýK_Û£†ʔ߂7Úþä!€‰È¿¥\ `Õ­Kžaþl€U»?mÒbUe¥µ(±\©D»·ŒµuÎ+ô6¦êÄXöÍßÃoÕNÅbDƒªëÊø½˜ª7"m/ý¸<È$ãRu]¹Gx3® ‰�‹\}RE5<Ú± R×û#ÞHV}ÇeÌ-2É’ÀÙÞ¸à�ØŸ¾} ü�[@²þ…¿ždµKç*Eõ]•ÎS_®Þ*(Ú^ ëê[¶¿T‚Vr³RLW“âi¿ý\} è[@ß\ üU«±°XÛX_}ê)ÊñæÔ»ô@dF5;Êœªå\|’ãŽÐon’°Ê|KÊ÷µ-YE¥ôä Ô—¡w¿¡0%Ã-—Á+o<ñ¯Wë «òdÂxæŸÂÙ“'`ìÔ=:Û(óä¡Ð€’w£rc1,' úX6LšS£tvµ…'{DíZ‹‘“n@ya!ƒ¨nèE¿G)ñ§(«·“lÒ_À™¶Ç÷äC·b =¼ ÇŸ=��»#Ñ›^ŸRLäU™|²AÅ«oÚ ³¬âλàÃ7_%Ó²9p6:u•èK¿°Ü|²¤x>�l�1vÔD¹¥”Ât!#³öŽnä ²ZAt¯RNž:ć_Oü°äcúHîÆÉ³édÔŒRdiž= ¿ü7LéW9aüxÔ�þúÓ�˜œŒe+VSªê¾–šµÉ\/µdÖª ’OÁ(é¬Fî}¤¶°Êº²|WèH4†öÅÊb`·ÙÙ�7Kó2³²2M,Áª|J£ZÒÏׯÖlØ�QÖmÞCOO8{ÚÓG·ÉiY˜4ýq”Ì%“S·|»ø+¼ùꋸñ曑�vþÝ\Ð̆²f¹‰û´¡LnA&%Z ÐÀÚ¼f¶îÄ´‘”ÔXuëÖý\Æÿ�†Áyµ”“åVXTB/ÐÝ Sª¢â"ÒOã‚’@æš ÒÈØõöéªlröLÌÑܯ+ž}d&üȈ´sÐ'=C)ëtó E ÿ÷~¾Ý"Õ":*o¿õ.n¾{2ìܼÑ�€ž”¾½û"¢W„òùz^d$cõa6åìq‚œÑè4�  ²À»Qb·} ÿÏÞEæ†+¥~Hæ9„…†· °^éx:sœÒC{} ºXI&¸Xe‚XÊg“…\YׄœœÁ¼Oœ¤<úé#˜BùɧÛ6¬Á™³)dFxñþÙ½žA¨2ì]ô \ŒÔ=^û»ÔuÇóO?ö ºd$@CP=‰ b(¯]ç[îm ¬´W³~F‰g€Tõo•±j®™1ÌND+›H°>«Á¥õØ{:�íKÚ NQÇ·*¸kÀ~K@ÖöJ*½?K�M`!¿aÔÔ3GG”æÁ¯®&©ÒÀ ÕE+ý†0{k ¬wxZ%Ù8Yû•å—½k⨱63eB2ª LÅŸˆ"«£™Þ´ôu6@Wþ?§Þp3fÞp¢�@ ™£ÙLt°²°Á a£éÕ½™RËèȤŽpJC×Ó/¼û Ñ8�W€¡=BaµgWž Êr| ’ç�öÊÖ]áÆ$C2Ü%ÓÞ,3SÓÑ£“"çmkBFâ…ôË6“¶RXê{MÈýO½Þ„�àç�Î>Ú€ª$º,]²3fÌÞýQ¨$ø%ßÿ|áEjkkOðѾUS¼ÿú‹T pÀ®Ý{±nãÞß­QÙÐÓÆ ë�¬ütórBäÉTJҗÚê‰ñÇ�–˜Àþ³3ûë|»v/ÂûF0²î}FÁÎÅ wܱ+ØKJD'^(aRF SOÑg·H€¶²²¶Öf4x-ù1™U¸eÚˆVǧ~Ù¼a1• äÞí­Ì eíÌĬ¶%ñôIü¸ì{z…Ž¥zü‚û´]å²ïãÉ,’„‘8WËÄQà Öïãò¨-+Äg¼ƒ£§’Øwº „×wJw°óÅs/¼ƒj¬cŽÒG–É,æ»6¡ÀÁ�£Æ!„¾·vÖ�àGÕ‡ï¾_¦¬^”R—"@ëÕÊúÍÛÈê¼ã•÷Œ�t[œKK î¥clo{¹I2‡\+è ÛãÑgÑkú,høû³�h·Èì^�®ï=–Ì`_ª€§tüØYbõÞŸ™ee@icí~Óãð£Ï¾Â]egq¨K8‚ÃiY‘SÒHe‚}XÆD5­»3í® N5Œœ›Ç)RŒ*ÃȘ¶ –TÃpäØQ·¸*“z˜÷dR‡ZR9þèÈñ«±±±:ëWßÕã’wm𼉀ë|¥/‘yÓM `2ŽÉLH“bL[™L8©ÛêîäzVÙNê�ßE²ê¶¢ösXPÏËgêçè[àl+&îýUkÛÃîÁqU÷€PeöQÚô|»lªé/^Æ6ãNÍ9¸/ŸU³Ñ3¨ýûÕᅫAc^kIgÿøõ²/1cüMÊ&2^’þVÞ\ý­ëµîÿ¯ZO;lâyý xIÍ@úzé‹¥ØØ¸pLäÏñ³•Dšu|.Iev0Ÿ“T™a¹§ª6‚2&ÕŽqµŠ9Åï¿Ú¢:£û¬!Ïú"ß›Ä$³O«M0ÑŶeŸÊŽÿ„õž&ce)W�ÿ„Ýë«Ô·Àߦô ë_ðSIÇ)Y&¢ç.àªtHêƒû_°û¿ý.Ô ‘—þIe‘qPoÒ8úÄßþ/¢?} è[@§*¬«¯­"¸Ivå/%íÜY”Œd´½â@¯Jujo¹Ì+ 4lŒ)»x¥U”ù_}öö’]jDÐÉsïÆÎm?“yYH¿ºÛ±œìÓ[æÌÆéc‡Ðµ÷p$%�CuQ.½L=yâ,ÉêbßsÁ3ú$:RRµ” LHŠÎgÀ7û<Pº7*æ8 jË0ÿ�§Ðà@ôèѽå˜DZôJ«¬$«e¥e•Š„R ȺèSôîÝGY³)',‡a£=�C»W¡®¬€ÌØ»»"4¢&Mž€ÜìTÌ¿m.¼è§WSÛ@ÙÈŽøþóaäøY¨¢¡¹¥�Ü^!ö¨‹¬>5·Ïy’l›áøaÕøR‚6‹ž˜ýú  Çë}�ã‰�>†™7Þˆ5ËWà\ì)Œ;½)%gMÚ�ÞyCFŒGÞÌéåYÖºy²wdßÌhD‡ä“°mjÐ(;¾ÂKì˜ùÈ>E Z[v2Ç]wÞ�é îGѲo”í G�FRéE”�E»qÓ„uu…AÖûï¼ wÌž€¥+¶`,6M”zÞ¾/§(á;yâÄ;‚÷ž £¦Ì¢dt8ÄGX¤ÇO½ yµË+ aÜÑMô~톺:–'ãÉ0ÉÁù„œ9Ÿ'þ¾d¦]k‰ŽŽ$õΦhí@ÐË�¾V(OKMÅÒï¾�ÁG#ÃF>v]˜ P]–‰:J�:�ñD¦M$Û&Ì¿ç逵íþŸxé6L= ³§-ÀÆÍ‘œr\IÈcNŸ|sÛÕ¯ø=ƒ�xüšj¡¡Ÿ¨úð­û€ïäæÿ^-u\ `•dÿcGLnY÷w} [»ˆò‡ÍÍ5d–ÕcÀ�a â”èõÆð¡ƒè6¾ûÙ~Îd9+»fP{kTÔQE¶;ùt$>{÷ ¤RÊìBF*|ø1Ü2o>­ú!/|`•)5冄tÆ®c)(ËMÁT2…¢¯çÉÿFJv>>ûd!^zöQØ’Y&,ìjJÄÊuè牟–.Cÿþ)#{žÿ­zâv58¿7ÂJ aXXØ `•1§H8jåy%¸¢�ÒègXOÖµCÿŸ †´76�6k6LÆLAû˜�d„ßøúÑf¦)¬+ñ^RÇ ²­!X §O·ü,*@ªÎÐLº ¯.„ÑMó`Ï`}mGú(ÚÁÊéR_.ÿ=Ôze[{'ÇôÊcQ­²`TÙ]§ÄIK{äÄô®©TVÙF].ŸuV™/àj% œ„¹*`ëîƒ5#;5¢[VzR­œÍ›‰"ª “9hÃßä2s MÒSo}�èuœÌD� Åy²øŸ¡Œîèñ“Ñ‘€¥£ªÞz!O¼ÂëË·ßvÁ¤žÇ@•Hæ!áÖ¥‘û•¾G›p9¨]–pmMYˆ™±FÚPŒéõÝ%+¿]€Uγ½b^ZR&ëê³Úº•ßÀÂÚ‘ÉaÊêq±Ñ “Ü›ÞÕC‡�Ь¿4¢€«mVYTT˜�~ƒ†ñÚëG……NH �\¯ž¡äŽRþ>¹å´%è�qc +�ÁLð‰:pYå5èÓ§?ìHy“­Ò=ÃÆ“mï¡xÇ[ÛÚàÛo– ¡¶„ìØ&’8£C ½ÚL�ÉħªÊJÐvR¼Ýü¼àj×K¿ùœ~° ˆ;~L9j7ʧ«Å‚×¶¥2ñž}•bïè‚ac&(¬ƒ“ »ÊêÊ"OŸâ#-“nñôôÂ+oˆÇÿ'ýW§`%U8œ­-1eÜJo£\¢#B([?zôH˜Z; k¯4žñ‡qãë 1iÂ8&3x°^/J­³ÏjS¿î¾Ú~–ß@¦Uô„-Ö˜ šïçÏ ª§Âî”õÏ'�Àg_-æ´„ÉT?#+'aÎŽJ¿h�’XÖÁÞAãJ++Ã+¬R�;ïÙì»0ØoÏßÒ�÷Ô½LÈ"ãÜÁô‡ýç“ÏÀÄÔ†ôâ›Å„”¾}zd�ýœ©øÒ&Í娷wFÖÙÓ0'(©ÊÈ`ÂÛÁqîæ£øSWœODéÚŸ”~@U«pÕ€c3s�VMAŽé׊¬þŸ~O‘>D ¶W˜šhÏABÂ9ÅCêpU¦öÊâï–à$ïaa¡Ú~§½uÚ›'ç,E˜Û[çϘWYÉ߇ìä«YvüûÕשo} È3­v̽dùr¼øÆë˜ãlŒâ8të–-! w*~;Þ|þk|ðÑHËLa“À‰Ï8R0F�ÁqÓõ€¬Õ5µèDŇ`Z è–$ÊüŸŽ9 /evüù8<øÚmذýGÐ à·HëÖÿŸø,ý¸:¼Òþe¹ô½2þÔCe}Z¥(÷œ8VéJÅ#飅„UüÁ«e2®VÇ­²®ŒçeÒ�§‚¯²/U¾×º¦ CÒN+ª,jŸÿÁ§ï(™ÝL¬ÿ£Š§¨¼¨Ï‚iüZ›üQûÖ×£o�¿[ èAÖ¿à“À‡dJ°FdmôåúZ@½‰Hû©*×WCëµÕúd®þѺmôßô- o�ÿÿ-°hÑGÊAºÒ¿RJ™bn2ÔRšŸ¡€¬æV—‚ð1dÅ;ˆÐ>ƒÔÕZ½ÿÀ*+K ´¨ ¿ÈúãO«ñãÊÕX†´Ôçç„òÔXÜtß?ÉH±§gÁ"KpÛZêî.þâø‘�†>”�Ü´ñGʾ^ ”j ìmLPZR Kk‚­Û6+ujÊËá ~™çᘟ‡ýd¦�›sû½èp‰yÛrüðü‹Ï’±à¤È‘êÎoûÙÍÕ¹…Å*˦L™¦¬òY|PWÿ¼�r‚Þ8ćÃ/–mÀ�AýñùÒaÆ€äE2djë±mï1lÛ¾wÝ{½ø¬´ì‰®”ÎlFŠJ*è%·A:’RRwÛRQ\Žž½à °×o܈×^}MXÕuSOoÅÜy·R޵3"̤§lÁñ§1~ÔPôèÙŸ~ˆ¾Š,qaä^kyÈLõ�ëÐÁðê⋺ï¢kúY‚ØÈ¯‡¼]^ûöGYGw„yò¡Ý·Î¿“LäD®ø7¼Ò• ÊÄl°÷‚ß°€îÈËIÅ„á�”W¬' i‰5›¢¾®)£ "È”IÏÅJ°­MÍ‚í¸‰°ölÂHWOf�§HzU{ùÒ_:¦ò…íìEÏ݉”nS3Ε€?�R•‰)ש.À*;–q©Ä(¦óA_…Á_M/ëÆ›¹ÏžÁÝ`ÒÑUÇ"•ÿGôƵ(8~¸,»{°æÃÂÄZ9à«.Ö�`ÿ[“«œ�¼¨Á ö»îç`Ⱦµ‚ §%SÝåòYp•íÒ,¬ M5çúÚ2Ó¾ƒ¬rkánÔMN†Óñ:Ôó�F´õþ?À6# ==p¦¤–®p§ÏoMu²éÍ;™R°”,€µ¹9ìôÄõòA'Ê©{ßó( 3ÏQ À ÷Ü{?Ùˆuôx|.k)7½w§r|ê‹´›”zúx×ò?TÍÿŠ»•Uz|Q‰ÆÍ¬ƒ¦)ïÒ9—RúÔ©ª*½=Ùgµ>y daËšõ¤ŸjÉØWŸ9’S)‡=peZ¶¸È凅÷SúÛø¸h‚=Ú~,þÈ›hБ2èúr©üzÐË6ÉgŽÃ�]SU%2K›pª°ç+šÎD–�‡£q*†þœK×¢¹±�x =òÄS¼‡S&¾K7ENÖ“ ãŸÖ¬Çý îD=“P>\ø.ý[=ñ�ÇŸ¦ÂÆ8zŠÒ¯µÞˆ,YCœ§7]?/œ>Ï„3KÜ4ûV&�ô¥$îx¤žÜ‡-ëÖ`�tAVK&DÉôg”öVÙ�¨ <þȃd�º“Aë†Ãylô‚_øÉ"¸XÔÃ×U¤óçXvAï>½‘›“‰�Ç� ˆÆÖ¯ÇÚŸ×`êô Èú[�Û�ýLoÛóo½KX£©.Nér)¦”ÀüvñÊ·÷ÁÌiÓx�ãX“ÿÿ’ÒRÔüüƒâ)§JþÚþM�Œ¨H©ƒ9Ìíüqèlºûx±pƒ÷LvrÇ—�<‹ £ËÆ÷ â5ø",¨`QÝkúPÆØ�~»¹×öÂÆ�‘غg;n›sÞ~ñ-9vŽöbâ†ì'·ìÞ‰s´|ÀĦÎï^ ÀšA«’M{DP·Þh�[ÖGŸyFQ, å¾o»q*ÌÍ­�wN{Óæeæ˜9 Àêït…£þï˜-}¯<{Ë3ƒ:~l{f°Ê$É‘* KÆØêø¼íúm¿kŸš˜èä¥0aÕñ°¼«ÉÕï}ü>ó9©ñ‹”´ÔñÙ÷+•ªÜœÛVù«ßåXEaÇÒÉ©ÌÎÇ7Ïrî�ÖrÖ} è[ ýЃ¬í·Ë:WÔe {¥ÎöÝÙae’5#A§?  –ú¤H�úÄáFJúø/oY{õŠÀ²OßÀ€ðÔSÏQÎ5‡’›½‘‘v®| ÑX¥9¼()z%€õZ›ËÞÁ±À*Û’A* GÇKA{¾[ö#Ü Hx$‘rþT46®XŠg^~7ÌžC Ί@ª6˜¹gý˜”²„7ƒ¨¾N+KóÉ÷2¤'k¦²½îKï”xÔté‚)w/À¹Ìüûûe|`±G.øŽ þIÉ' ÛÝÛô_µ°n_FU·Î+}€5;'Kdö£»5�b(áyäh }G;aÚä‘@'W$Æì¦‡h1‚zfœ?‰c‡ö’¹ã+sC˜Y¶ö9ÓÝg1l™T�uÒ„ñº‹•Ïgb#)?l¬ËÑQG(¯gŽg^ù˜L°Nœ,[|_s½S‘Råâ`�2iž|êT>|‹R— ° “N}@“ò=-…ÞlÁæ8SÙ s3 ˜0S¹ —Ó»¶Ã?'Md‹¸å”uÍJÖX$Ç`S£ È>55¶ œ±;b/P/dÐ×ffáâ`KöKFŽËÿfgÜußÃÊ1¨/ed^kȺ¡¯%L7K3¼ñÅ2œÉÌ�qsÁÞ`Œ9}E ¹2åùiŠ7«ý/LIµž+½;z’�t9rD‘”`UŠxñÊt`ß>Œé‚¬ÔsØ}0’’“ÅØ´}+.ägÑÏ _}³Ha>•œ#øGVKujÊòÈ̳Â7dQu#h[V˜�ãQ{Ì·"Kï"¾Yò ^{å :ï¿ÿA+€õ�÷øðËâIÿ³÷_¡¯±%ë`E°Ð’ ²ÙæÙÉqð§×±0Ïk«ªÐHötÀÐÁظ~ ɸ$tÍ «²³ßð²aÓZl£,cfF:î¸ë&DôU>|ýmÊÆv„+Á°%ßþŒ;o½qôv5¶q…O÷@J£©±Žžƒ–J]gãÉfvÇî�;àL&›ogwì'+6.ö$D‰ÄŒ™7ЉƒyyîgÐþ1Ê’�;VÙ¾cC)=»Ò x™c3QLо‰r¢iUuˆIOA2¦ š‰úŒÖH+ÙÕðý—”¡Ý†ždjš-ýõÛ7bP”ëG®! |ø¾ø.™%ñ8>~—Áº‚ è�ù”h_÷Å+¨vs�#Q¤t&é‚" �¡i²µÅAzôºy¢&¼»uny•¦{Æù²Fw—Z£'žÖhFLÂ1›F�J±¶on†!¡¸hÞ®eJ]º/ÂJ�ʈÂ�î3[xxD Àªn³ÝJ|òÜãØJiúæÆÅ?ûØöÕì£káâ}É;Z]ÿí}ÙÒ¯ Ó¨1q‚÷ÊŽLp&ö0±_ 0 c†ôŲ~B^i¥þ{âí7_£g&erCQ\V�“ñg)/¼ cF�nÕt)ÙE Cä¡=Ð+&¼OŸ8ŽYL¬0ç=6,$ï½ó9lLŒéwG?K[ªL8áæÙ³Ùmâ«…¯Á¢©>Ý‚aÃe)'vr¼d ^o¿§¬Z³†R�W¬"1z7>üðm §�À•J$“gvïß3&•”gbÁDkg/t²#°ùKñ$#tà€�ôõd?{\aêÞyÏêâßônGßϤ”4úõ¹) VX—ÿ´ §Îœ"ØÚÓg̤”ó²@­¨@O\J°gDB^Ÿ¦;¡š,ýN *ó¶„„”Tzñ•ÂÁæê`uÓÉ#p EÙgo2xû2:Fî‚]äÖ²OÊ‹5ކ†—Ý‘q!M&6èS•›�ÃaƤ­Þ´´p´¶RV]f�uY‘2îÑí[S¿Ù€ˆ[î¡ÈHøx{S1Å߯Û�¸Ä~ÖöE¿©Á~ãF�l/Ý>ùr‘R‹AööÊÞ½{áÅñóõ¬R—ô]5À*ûµ°è¤X¥!ôEßÿáp¡:ÕŠU1~È@˜rü%ã÷,&¹ŠkŸð¾1„ …LDö$ÓQ¦k-eTg"²O×ÖýgFv6=±™0Åûï׋ÃÜÖ±§iÉÑ“ÏÀ.Jõí1XWløX©ÏÑÎýZáÿõzjß«;~lï€ÕÄK±µh;ÖÖ]¿í3ººLždÒ>çßÒ’˜©&W§Ñ×ý‰GSWWÞdíÜ¿d•ó‘$Ñ‹gã5y°þ‹Ï2iZίÍJÓ³Z[µ¶þËÿz èAÖÿõÀßàü%+ç�X%Geèe‚ÿ?¾þõ- o�ËZ`òäd?¸“Ýá+2k¦OŸŠ €Îd¯VbÇÖu”"‹#`c«È3^¶ñŸ0C`U«?sZ I�HŠXM é#ú6¼ýºPÎ|@IDATôõWæËËÚåߢ;h´@ƒØó¹h¬©Ç~2[#Ò“ZÖ“ †F(d ´ÇkŸ"êðNz.faÇ– h]ñ¿žÅ­·ß­¬؃¯qQœŽ¢kHD«:®ç‹ Aœ>ôe3¤§ga¥…³r(Ãi�’ ¹å瀋:=ȵ¢×WR l^µýÀömÛ胓M¯4K >&:*“ì;;5A9aC~ôî˰µs€¯�€µíñ%&£ÜrÛÏôM¬§�[Ôþí8BæÏÄi3€Uw›ÒÈ='X’y%Ù´žž�€UÖQ¥ŒÔõu’2O¾ûÕU£±¤ g]éY›Œî5Åp&ÈÕt&–’›”ѽýVÔÛÙjÌ’’Ër L4‡®ºþ{×^EµuWúMs„H$$tBïUºRì‚]ôÙŸú+âCÅ‚H¤Jï„N%¤÷�^Iïý_g./ßÿôÝý}÷Îܹ3gfΔsÎ^{­mg‰Òê;z” ;=‚³šHÈÈcîÌD¤¤¥!+óŠä¨L¢TækÌLI¤.R ÒS¤3�æyJ>6"öÂil=|†º&Õe²ÃGõ?1ïU[ÑèRS¡N¡öð Ÿ©óñù¶íXùóv´41ÿ*ó¸öíáe––’èÚÚ¯/öÔ ¹^ sçÎCO2%T-73Ub¯¾ûÎ\Œ8Ó–B˜�aQÛÜŽ°ÁC±wï^$¨×kמµf~/;;æüå5 <ê*Ž1—ŒÃïk5‘ÕЊÙÓ)Í\\‚À.ÎhÚ»WÑde¡ÐéŒî󟂾y †ôwO4îð~‚Ê ü4ªÎuóâzg1˜Bä«=³s»Y ö^';°ñGJîå¢Ï¸©˜ûÀcÒ¿^=)‡{—VáŒïñ¿šÕ•P6œÁ õ�X¸è¼ð�Wq&âvŸÏbÞånH¤:…ßy�íH¦ÊÆ'K—ÁÚD6úŠË«%©õ×_}¹ã´sÒb�F@4˜ �žÇSZ·™:©0Ð�`�~[5¢2ÐXžÃð,´°¯ðîÒ%8wì �ÚH‰ê,2§¡‡YóA5óÔ%žÚ�‘sÁÖÙ«c?w2³àùG0yä¾›ÓñÖ›o ä}zãv©´à ­Ìѵ“úÆ9ÿ¼øüb†LGƒÊDžå§Ÿ] 'ÊiÛ;‹÷˜ ƒ{ôÅÝËóRZìå‹Xóå2Ö¯=Â(·oË` ?jý†gîðæ®Ç)aŒ¶±@úÍÌ+�QT…¹2RK�spÖž<ƒûr¢pYç^CÀÓnc'‚dœŽŠÂU²\]É^/,Ê¥t³l½“ˆ¥Ÿ¬DÃ6‰½“ëä‡ú]›Qµâ}é¹n+ÈGS~¾¢¥¥“ª®¢Í¿4ßúºìWU/‡§×vÝspð“÷ñÖ•rŒ³³¨l.Èý (‡,«ˆübX¦N™È^:(¼Z?:ÜŸtÀ*Ê « åÔÈZzµ}ú–wõ«©�7�½p߬üLmë<…“e9iêL<üÔ dŸd“Q{ß~±Tó9�³á4y(<cÇò.1 rÑ’—‰öØË€�¼C#2Xw×·¸qƒµ  l¤œ£MAè÷;ºGXÅúÚg" •œŠ<3c…ùàÑHÖ3" 8ÓԨ踚C€®Ú”uµ¶4¬±c—œŽé3f¡/AV ŽœÍÉvŽ��fݞŜy�ãÃ�–")žyéF.¯!˜MùY7W;,~e)Ú´ Kù‚Œ:dø„ cPAÏ ùÐsjogŒÉÓ&QnV‡¹AaÑžg~ØM›6C8PÓÓ¯`ËÆï0 o?X0ï䃃‡Nâü‰ý”3t„;¥3Êõ±sÿ>tíÚ)é9Ìß�À>CQW‘ŽœüJtéDg��é |ö)å k ÑÞV¿ è5–`Ëѯ°‰àëÔѳ6�yA ˜§ÄÇñ>0Fo?ôêŠØ¸Ë8DiT#J¸:92²›uy1±Ñ©ÈdNÞG~@:ßwßû�ŒÖRøú*ÁÇ߬„ßXÁÌœl/æ¢Sa_~³‚ÒÝæøqÍ6Œà¯€Ž^Zü%Ê#0uÚ ¼÷Þ»¸t!v^nd;ûáRäy¼ýþg€¬ØhчàÕÕ1gq>||zöë(뫟D;K#² ëPPQ‡Ü’Z éé…îžÞÌ}Ú€Ãtè IÍS@iA!öØGÉÌl(ø~K'(þÕ·±pþ,L¾g&}ò¸[´`ëšhfÄ}lr4†„ ì?\Ú§>%«ÈÍä½ÔżåáÜþ¡IϪ‡��£lÕ ƒÙ]B\sÜÜÁÑ@¶¶v¥’aYÂû´¶1&F‘òU0óéŠZJm~ îO/ÛÞúf“& f¼„‰hu‘þ[Àk»p@È §gŸÇ±3ñHkq‚·›9 l¼aAU�l.d0©‰¿%e�0f¾¦ÐÚR¤è –¶é5ðVìW>&1ßÙÁ£úŸ˜—ËÓLŸŒyà~†„á‘sq4.MnÎØ[Óˆb[Ê< Ê[íæ¦Ú�ƒ›ØE‡9ˆ4!ýÐ#O`Ê”{Ð }1Ϥ)—)ŒŒÑØbˆ+ÙeÖ¥©ÕÐ9qv”8Ž$ñÁ—i½cdóâæg¡M³q —¡ßµ'LíƒAiÃÚ ,·uPÞ»¢Ï¯A�U�ï®[™� >––nöí±³È‰ŽÄ€Ñ”†¾ÈZO¶rØ„idCßœ™x«ýÜ΂©'œf‚Q->²Üíl{³u”e*å­ÿÈ8¨½¹�>½æâÖ¾á®"ŽìA¦.ž¿ˆ3g.¢o¿>ø� 'tkñÁ{ŸaìÌGп›Ê™K¬GŸA¨¡\û•J]ÇÄ£��>ß~¿~²{(ë›KÇeAv*ƒP,0mÞ"Jp�g?'¡ƒ†±müCõa®ætè›1'¬�;%„]¡a¨Ã\ØãñÓÊ�`áâ†Ãc.%ƒÇŒ›c¶¿¦:->Ö.·~‡^Šº€sŽ")…êd¿ªÚ6ÊtO3I:®yóæÝ`ÛX9¸ÿ `ËE®ua¡}úb3™ÝýØ1«-¥ôõ„’VÙ„ÓYØ‘ý»Ér!±Y}™ún˜¥¿wì܆¼œÉ_}  i .%[öËÄB²?3É6~5ì¿Tÿ¼;šmøþMG†·7Ÿ? ´å¦¢\GŸ¬ât ëL±%)g^¤e€A3Âñ#HùH³UKï9 ö×Lg< M²Ð›™ÎBeÈáÍ€7ÚÏŽÃ~ÚÆ¶'ôú`¸­ëÈvI›c\{‚Ÿdýnýj¼ñÁ+\V†Wž| #‡ÁË/¾€5«×3¨Hµ µÐmS šS™§³u÷•V±ª+K‘DÖËe‚ÛÛÖD7Í2�=©Û;Da6í^æ/;-�+¾g2ç�]¡;hL4ja3k.† [2K«54+¶µ¤´hj(´5H@%à’ ©I¦a´¯¢@³ñWË) ¬@`ïáHKŠB!¥†‡ˆgž~ñ—.ãÀ¡]”8}�òEOR>ª'ºñãK¶ñÀ°áÒé÷膌ècX¹f7 2x픲¢²�)óf–"!9u¥…('kÍÉT�v(–.}ð3{ΜÎUØñ;òÌ)|þñRL�9cÆŽ¡\po‰õ,Vxí•°w×.ôëî síFô:ud¸–TH€ls«ôëª){Äœ¡—PDÀùô…(ØY[’A<“[´eÂÉÆ ¹Õe¨mÍ‚BÓu™¯¤D#9#ŘýqÏäiçÐÕ»;ÂO„£®¥#†‘–‹\¹Ò‡ îÝ2`åM?…ù€áñ']°ŠÿöïÝ�hš­�: ‚Mî6†ˆ ãÿ�WžBna!~Þð-PÊ\˜X=œl�S^‡ÊÚzøuW¾S–¾þ,¢N£Ôj| ÈÐnF¯o=±š:ZŒ˜Oƒ½£ó-¾Jp•W –À–ìÔ¯¿^…º¦Vl[µ}ü�Ëgª›síš›"úÔvì?ƒÜ¢«Ø* Ápzô Æ’'†›—7ÜÈ$³#ÓÔÚÉ #&NÇ•ÌLJ C™«ÁÃÇâLÁZ2护c·¦#B8:3À¥?ù%ÖW¼ü1øÛͰþñ[Œ,/”œú¼†í †œ3‡¢ Î0Om³·�Ñ7àÀc©«-GŽ©#ª‡>ò$Nwï+E…›“Ý}+»‡`z*ïŸRœ?ú-�)ëžW}MFm�T®ü%rXÉj6�Aey³vdwôIÛÞ-Â�i3ápcËÅ£«Ô¾ÈÛýS!Á&;Óˆ$îE¹~ÏþëN€Bt’xªåàèvËoo¨#Œ ¡ÛAÄ�Šú曯ñØãO£Gï~0´ó¾ðsh¬)Eß½—NÁƒdýöè S;æK; [s#4Rb¼½­��^p¦Tw>súÚÚS�£�=ºíímHN¹‚‡Ÿ~õ5UTŠØ�sT 8}ì8 R™ …€oUæ%Œ˜öŠ‹ò)‘¯”Ü÷ï‚áÆ¡¥2M¼èÞ]º¡ª¬�÷Ö9x��ŽyÊô©’²ÀÑýûÑ#(˜§Ùá°>yÆ8‘ƒ¡ƒG©V—Ô×:wá’¨n ú5�”:æ{ŠF·kB@¬Â>ùüSô¥£Ûùšj€\†([|dÒÛ‚%lÁw˘ŽÎ'öÁô»ÏàTBV)ïazµ5èK9xÓìdèŸ>“¬dô°·ÆÌG õÁëãÙ¥Ò£o�âÇ�‡aÒ¥;eÊk�»ôM´RIdIb#á’ñx�'ü÷®Fp¿×Lƒ×¨aÊk«Xìt&U”m/ù` ×|üÕt‰4ìŸÌ®½å‡7œN¶íZår¯P¨Ê°rEà“ÏKláÎiÕÏu…Ýæ�û<ô+€U¨Èu$Þ�Âñ-;Ÿo³ØÿÙÕZZ[)=}ý{ã¶2Ô'þ·¯Ñ® iÕÛm[ÿH…pUXUË)(,’¤àŲO>ýˆJñhå8Î�j9 ö9Á;·;ªÛ«Î÷ì(¬bY/ú|½ºaö䇙ÆÃ†û°“V ?z µìïO"[ÿƒr©RREUW7wÕ¢:æEߤa×Né·x¯š2ÛkSQÜÅ1NÇÎþÄ®Þ`ç'Ú è#Æ¢/*î‡[�/DßO¸ë‹�(G¶ ú?j™ºÆÓÙñÚúxiù§ž0©ìgÏ ÊŠ0qÿ|c!Lˆæ=ù>ökGÁßÇ®L9ðGMîO‹r”lÚ?Z¢z{u ü=j@ ²þ=®£ú,n³Dc¦Ýfe©WS×€ºþ25qk֮Ʃ³"èYÜ·àþ?tìEE…”_,¼)ÈG‡ãc�Ý�™3ï½å~J2’=%›Wû)¬bY™jg9àh'ƒ1¨gwø  ¤Š §�mÌåJ‹]—.0w²ƒ.�¹ndm<÷�7È‚LŨDŒ%Ðåææ�C~‚ûôƒ`ªä šìÎõ+¿�½mÛ¶2ç[ õ´ñá›/c3åhp�l#sØÙXB£½Þ¾×žWÈÛ¹u=.\ND}Áá‚r”UTõ„±¡!sïÕSŽÔ…dM è×›Ì:x6ÐÐ6€ó5U>oÕé‚y3@ǽíMd³8OI¢Œ,£ý³ó«�}™90ƒ¾s+ê)9ëno†fs_X”.§Ìmø±3ˆIÉ…·ƒ™6]˜›×©Œf½O–dk5‚O‚w`J¿àbþy¤÷�õ¢¡Ý(>ÎÈDBk�"§¥ÃÂúÂHGbRP£¯�ƒE•0÷ôÂ�ähE’™¹­aCC›-Á­�p¯¯eŽÊRœ¼Z�«í-{¢ ~×`È�¡¨a¾Í­Ûv£0?.ÎKà.âì)<ºèIÕê�æ-¬ì0zò\i>òÄÔW5ÁÚȽ‡ŒC,sóåÑ ›�L{5÷ ÅŠ/¾†ï‹ÉdÁ¹¸Ü| èHǧX…-|laÀz)ò�úZ(ÎÏÄe–¯§¥€w÷nÐ'+K_£ú´Ó¯¤¢ª¾&&š¨>rüFe—âòѳÐh.a®8#X8xÜ¿íºZÈÌKê4anÐ„ì¢ Ôfòñë_²Ÿt (‰OFÒ%Þ£&pñ÷ZDå2J‡aࠡظú;tï„Cdýˆãùc>4åEyøÇó/À’LKaÖt<ˆÏŸmßñ�ûdv Ví5›0y*åÈ2PÁã6Õ®cýâÞ¡ÝáçéŽ ï+¿û–68Á|®û7ÿ„Ù>‚†ÂDlݹ OœÅŒ{fH%Y1ÞÑÙ ‰ñ—�ˬDi…Õdß[ÀÇ“àcb ÙÞfð£ÔX~Züûâ3å+]ëHÛÚ·ú�?v(&θî^¾ˆ½t+–ýz–]0’àJpH0öQbxú¼‡”+AVÙrÎ|÷ŧHÍKãuêŽÉ“„ô¶.ÜÉ:>»a7GŒcÛHr�J .yËë§ÖÎp5T0§`¸° ×§¿ÂeÃ\ýì_¨úyšºx ‘�±”swWÂ’××ÜÚ ~þ�XŸ–ú¤@ñ&X/d„eFëYJ˜î#·�’¡½†Ã9ç¼A¶��µ9&ÌFVè <ýÒ?$yà~ýøî£<Ù?ì@Qu+ïá&¾Ÿê0z`™äýqæx:™8+’ÒaNàΫ¿’9kõô+Šòm¤ £Ú‹DnR°Ö2^ü!˜�¤ŸSl ³y/@Ç@ :9YÒzþßlÆ b a�@X›ñj@zJþýå7Ø~$ê:€U”—“•¦d¬^Y+9†l}òXû÷Bíž�ð˜5N>=yøÂÂVéXÛÞÌÜù.HN¾Âè|S¸„GÐÂ7N¿ÆPn5eêPô= i‰Ðkn¬4®®ÉÒì7ÈVJä²Å2!ÑfÏ{^ä!¿•m‹X }+˜ÜúY,)dLe9Ÿó[wÃÿ„K–�¶?bbü#Nªc!ᄬ¼²Oß©róJ†…rOÙéIRžèÈ‹—ùþ´“&ÅÆ2HÁq”\ºTȱçHÌ´]»öcý«ÐÔP…~XÇwuJ3SÐ�€øÙ¸4Ø5áì¥$´këI9¸{÷ À¡�?c<Ù/iE¸’xšíM8v!�’ädhÛ!ŠJç™@‹ÏÏÞ}ûa¤`Ê€â<Þk† ,h…y[¼É:7à58q•å)XñùræÊÄö�ëaÃ`' _X‘u£odF�«øðãÏñÈS¯tT¥È�m «‡Û·ã™çŸE�¿´®–yŸOaÕWßr=M¬Xù%¼½ü$0VÞ0´w(Ä'šý!;–ŸUœ†ÈØÓõW¾£äõnw:cêtÉÑ=íÞÙØûã÷0¦ô¾P9ø3¬µ]dJæ™ñ¹æHPY“Á1ªÏƒ ÛêÆó‘Òÿ6íÍÒ3?47)_öÊKËá3pP£Y[“¢�§½„÷8²Qìceä ª¢‹�ð¸L˜³¿dÉ�°\¶UTò`ruè•–HËÄ—�&ó_þt£Oà8¯Ò7"C!‚TÙ;iÌó\¦© /ænÇ�_]w¼âÞvb:‡ÎvžïʹëQü�šxVT�Ürμ-üÑ}ý]·Wèêü]OM}^êøU ÄqLÖtü@eæ?_TˆwÔÒb“°÷àlÛ±“ÆMÀY¦ûصkÜÝܱ�ªùL}3eüÄÛXotìö7HÝ2vìhJ»p,8eeU4t$Óg˜£µø R²‹©£ìKÈå•}üVe]î/Ò¹ƒŽ±MýŒqäýÿ'¦¢/'úÙB"X$E{RðÉ;ÒrÑÇÿËÁÌâ˜Ä6ª÷ŒX_6źV9y ÛÜÐ'$Í 8³£ê�ÇïÂD¿±xÿ!ö#߯so¼„·ÿñ¦´ü�‚¬Êþ¨’‰«Vˆ”ªTý¥®�ŽPƒ¬U¡žQ×€ºþŠ5°í³�¤�½u§Èï¿â¹¨�Y]¿·ºvõÁxÊàùùuÃ�aC¥\]¿·,±�M·b±ÚСØ�LD1½™عÛ7ü€n”YSZÅú™dÜf¦Åx2ÄÉ»)™ª�‚ZŒêßq™¥|¦™§-³€ R'kʘ›ÓaSî÷ß,%3®ÙR÷"”ƒ‰)ÌcæA¦œ¹%e)O',>úejÍq/sZiiiàþ‡ƒó¼™È«kj‘X”ëÖ¯…�N+Þ{ÿ}Œ&P+Ös”Lrâ{äôéSxŠ ¾ÒÂLlÞ² úd½:Q†ØÃËù”Üݲã0}8h)­B,¤sçÎ%»ïgäe“½jOgž!Á3èªÈüIvíë¾¹÷ÿ `�?mJˆ*g’ÛÕ™@­U/Ø*4lLÀ)}FÝC ÖMÜÜFã⥳ho,&õ«¶®xñ‰ñÐÖµ@:Ác……*òÐRÝ{æ”m±õ#»”¬ÊœDL¹ÿØx…âã7_DC“´4Œ-2߬=áâh…ZæÛìæã KKc¸��imm‹£C'£„ ^gÂÜêk`ÙÆ!á5Ûêè…áVƸçÑù0åy›™™I Bvn6&�Ÿ s‚ 5ܦ¦¢Œy#í™ôú¶\Ž˜ÆÄ%b;s=Ú;8#-1!=|)Á›‚�>Œ¼Ö"h<aC†óG2€˜ã51ed?[ª"—.DHEÓ±ªj5ÅjqxßN|ÿ姨ihAÿä4ÂÑBÑÑ Ð Ä ™N &Œ�µë· 19Úá{N¦xÛš1�r•Î ¸÷8Œ-˜w°²½ü†ÀÞÉ Bv±¶©ŽR÷ÀÊÊ–@�ò)-ÊFJÂ9¿�”ÖG}c9Õ`Œ=NƒË˜×Í݇ÉGgˆ‰!e˜gÌÀ®Ý»xÏí•ÖW—¼ƒÖ¶vÊ_�WwÕS»+ó‰©âÙqè(ëòùsØ$ƒ¬Ùd1Ež?Žý»ö¡!õÊZp%èÇÜÄGN_@\ð+é_É û.¾°%X¥cj�þŒL—V±++#æS$óž¬_c@<úè" Ù˜>}6 |Z›iÃÖÂÅ•dF]�nÔQÙòÁ5_<…æØu¿…gFãÓY"ü ŠKáÝ­†Šac&`ƃ�K›4¶´ âXº8êãØ‰“¼N|ï"&âxøq¯ÇžGÝÀI¨ÙùåÀOK‡";-R …Ú¯ °µë–Ã(ݼVƒi3MO¹yâëuä½ ÓZé?ÔM廨‰RÇ– ¼0ã½ÞÕ¯7ŠŠÊ(þƒPœUO“ïæKØÌ` Áh´"cQƒï�3û¶‘ýWÎ@˜P¾Ãô¥÷MqCåRÉ » #0=î8eaÝÈÚ½„wß|!ƒ3/¶‚�¥ &±‚s@/8=¼øº}wïÈç­‡Ä `c¡0Yü¦­ÃóK~ÅR×M•=p]!�~TÕS²Ûé·µó§w’y =U½�ŠºáOáÄ6U@ô†+ÞbaZ| ÞZ´cfÜwÓµD*H îáL‹†ÐþXûÒKÐøôU(Èf\¶ü[”ëQÆ9:ß~ö9ŽœODø©3(ËÉ@Dä9ìÛ³—í¶Ú[ÚPÉü§õmšÈ£76.†Csù\t×ÖÄØÌXøòþ4 ÀiJþî;p�9<ËÉ �PšÒûÓ€LvsSk2ßkÐJ¶l¯~£ðÜsÏ£¶‘ Û-K+K Š »sõaä–E³ü4Ìš~?ŽÛŽ%ï.g.Øfì`PBJe$ü»õ…·wl�Q@Éq�öêõ CÙ™ «�ƒ¼Ü1fäDJøÄÏÌ libAfi0Yµv”g¯Äì3oX‡=0!úL^.>Àz!*‚Œ'h%Љ]B¶�õ ·ûê»ÕøjÕ˜H‡´ª¦*€.Û�®L¡àI¹í?ÃZ±ŠªÚ1½f™Ï>$Ï´wïÊÆ|æ:e ÜëƒG¡¢¢[Ö‮5Ž3 FwÑ›°ž0YQÿÐ4tÛzá;Á<ÆÎd-›g&!¬2�ÏÒ@2\¾çýõCÈïàA�• æ ³ÐH9CÓÔxi¿5g•¬U-‰wiÁ'ÿäóê‚l¯ž0by‚Ù³Øyº¤]@·ý:Þ±bc¥\ð©œÎ_`Md@À¶ÝûJ‰ñßk‚�”¥RG¢#æV3üÞbÕÛýEk@[[›¬ÁAì“»ýEÏ@}Øÿ‰ìE�ºZIHWþ‘öüN�÷È©ÓHLËÀò÷—J›Š¶n*ƒSE^ó‰{s|ÞÙ¢Deo{ó±}çõoö[äeæÏ}€UYàJEgÓrvSÈà¡èw*¼ÎkýuË€$ƒ›Ä6¯ã�—Wœ9¡g'Ú=ñQ=SUæ«X_VÖ‘×mŸèË 3ÍJC S È«´�_;²òðöÛKÐJÕ�·^]rG,Vì*�S.í—©¸—ÿhõ—ÒÔsêøûÔ€dýû\Kõ™ü?Ö€ª ĺõÿxÚÿ»¾æPƒ¬ÿ—C}ÿ¿5 ò`ÙRþ§”ùJëëë` Øw`Ç#(ËJÉTkKÓßÜêVë‡K^¤ä¯%}æå_¬¢`3K[ÊD2?i2¶(™1iüÌ£fAð�yÙ¢cáF†b ‡ôLM°'<«oü ñ”ã؃ҫqçÉP!SåÀ*–ûu�>–Åç‘ù³)7êGPǽBÈ^ÌBqÞ >^bÂ~ûåøî«/±tÙRF�öEA,aÚ cæy#{²¡ ‘—âa¥ÝDFŒ=Ÿþ°dî@{‚…GÈ"uquCV:óÃõöES›¥—ŠÑ³wd¦$bÙëÏ!ìšd�(³ŒyR“QÕÎ3çf>¥..öðö¤S�9VDŽ×Íß|ßPÄdUáb|"¯«#ž}úIn[ñÄcÐPU #æ–6u6¬\�\²"�ìl‘A6�+eU�ì� 04A %š‹–VÄsv´A;á{†1Yˆåuu¨*Ρo>ÆNGFU+´K¯àÅ%ÿBÀæ�ðÉL©¬5—‹gÌ\\ÜÈo+„^p´ pjäI·�VhVçbÙÔYd/î ä«½½ó°¦"™ o�ÉûïY€ø¤²àLpüäž‹C‡ü^ÌåË8¶ºSQX0Áó‡É I‰½/OO”×ÖaÛ–Í(#hL²,ôÈV®o¬CIiÙPA8wê(Î� GŸ�C¥íÅWA~.º^cÅÇÅ!<ü(–îøþë÷aÄ‚(O{»¶xÉxøxu­š=z0W¬lO,\ˆ�;~¦6¢Ò‘�Áz Ev¥6YB-¸]ŒFFZ+>ùçs0a V­üšµE¶A·o–/CP;í øaó^2Á«qߨI^ÔÔÚÕDô(AfïÚ FVÒÇÍ€oP_ò^—M úËÝ—ê*´_…£w .�UíãßÏ¿ö6üô^zëm<ÿÒ›ò&|î+q1"‰ué†þƒ‡bÊô™6r ÆPZ«.â”ä<·Óäýu�Ñ©Ów°™�xN~Á0•AÓŽ9#¢·]XÔÁl*äu™iäŠ02Ò $?ø$Ìy�@3Á��ß’ÊÐÖÑ–€¾dJ Ï{tæÎR‚_›\KnoÃ@ !-˜"¸ààéCR~m[¾ç,YfæúR¤znÖ8ÛY2÷ ®¤g`8f¥å¬S2 kø\‹¼¾edß;s&MGS&|'ŸdŽÛ˜è(JZ' nÝJxT—s-¥cGvÚ€Uœ›ZÐ&±/-ùaÌ�)œ-©ÒÙéRF ì~U ai~ IR±\\y=ù?Õ©“å¯�…ªÿËónž�w °ÊÛþÑ©¡Z5MøÞ×%3×\’Ž ª¨1v‘îËœ,éÞ”¯¿¸×k¾[§dæ¹åûW€[ލDû‘½ðg@�»™>ó¤ãõœ­¨‡¹±9'ž…Çù44Á�õ?깗Гï³jʯ¿øÈ8Üœrù¬„!ì\Z*Nee³Í²¤œz3ê)µ][Û„ñ##*µžrßE¨¦Ü`1s°[¹1ÇÛf|»êߨ{(\JðàÂ'qáRNÝÏŒ¾FðqîBU€<ì?–‰¯·}ƒÂÜ„(ž5u<Ý~*E Ôy´khcëö�X¾âSÜ3eºtLk·ÄöYƒ({?~øH `•þàWÿ¾ýäYizÿ3/@-BoöC:Ûëÿz�ÿå!Ÿ|oG¬7Yƒ{õ�ä…Äb$Zòòó rèùtõ$ Y†~a#¤²ÎåÿÑßâýÙš›Cw©¨ã-ì÷˜3?¼Ì¶©ÍË7«0}…ÎÈÅ1YQõâªsWØåg`¤£4W-C»¸_Ά£|óz\6ÃWmFþ¡=¨4qáÑÄ ›†zö+ 2¤òœË‹ >6GáÄü¨fÛO¡ö›O¥ÿÄ—x÷ˆ{î¬ß0é>]µë Û²"¸¦E£©EË“;ÖyÁt•�̨Ìkï?ñù½ «òYyG¥T@ì[ìW¼#VPõA˜¸~jûߨ°†……ýoœ¬ú,w ˆ ­úœ+¸&òfþ'Íß×Ã9n�íÒåKx{é;7zœ¼èWÓ™?Œ/Ý  µsázì+;°ý;8P¥E‡�uÂÄ;Ôð¡'¤¾¥�»’�)ýñ7ú}.¡"¦ª&~+ÙªJV¨ü_P~ gÛ¤8Ñ.Ë9É;*Ç&mR_N°båõ~ �À7ë—#¯è Çf ìKµ2xÞŸJan˜úàB<4çÆAcòþÅô¢ƒ¶Ô'¸ÝÀCÕmÕóêø_®�vÚÿr¨Ï]]w£D#dek“%ÊjìâíÚukøÝ(ö¦eˆ²l�ky¹zª®u üo×€YõõIϺ+)­”Ö¾�õFÅî?y\ZìNe%lj›š¥ßS˜—EÕb/S.³ö¬ûk¿ÿ�=áC6–Žf3®äÐ9Ú·NhÔbÞBc:Ý (AÛŸ’˜ãé }ÿ_K); VdZ&ÇŸGÿ!“U‹¾­ùT ^]q¼^ºp½È¾Pµ§=L¦›VÆíHLÍ„­¥�Ù‘ÈÌJ�?Q‹_|-­û®bÁ¬±ðóö¹È˸ᄍ”ÈìG–®‘´º‘…&L¬çnŘyO«îÈz%Ž^]Qy5f”W¾ƒW_~ Ãõ#K¬+™±”H¬¬†™`IÒéOà²'™@zúÚH#Ó²¥­ Sû"©´:ÍMбp�»·j ’qþR*º #JŸR7%¡˜y+ÑT”—^½ám¯�’Š„Íz 'ޤ¤mAê^^’ �‹• QçAÜËTãÞ‡¤ãL]½à~¨|x¦t³$+¦nõ ç=}> ™ßv/Ù½6†¦Ì½¥OyT+‚g ø~Ý.¬%88wþÃë �õƒgïc^Óz<õÜ+ð¤¼n@Ðõ×âÒÅóXþÖ?PLÙ©aCcø´{¥í”À¬øQV^"±ÅFŽ˜NÆ,sîEíƒK÷‘åã¸-�{7¸;¸Äo@÷n¾ð°6CêÅÃHÌ(¤|¥FÂܵ—aÔÞ„¢#¤ææcÞp4V–!¯Ñ ÞÁajíÀðÇ®:³bÙG0عIÑ’“8� BäÉÈ �ð™‡ÂŽœ8†+KÇR2K°&(?Ùàé³}?IÿÇ�ýUùÚ¿éx6À4‚o[¶nÂÉð½h¬hIJ/kªÊð3Ù8ý ’ÖÿôÓ)·}†`ìvé·ê×¥KÊÜ�½±~xÏÏ>îΞ“"²‰¢™WÏÆÌÏ.˜�ðøæ.=+í"öø.TdáŸ?ìÄ¢ûf£]Ë�ìôK˜>k–¿·–®žøêã×QR«ßÞÃ$NÅ“ÏCiùHÏ(À¨áÁØõs8ì¼\à玼´\tñ’ÁévªÇ¥ûmÇöp\m¨CHÂ4}·ü�‚–‘AekM�éo²7$ )zºÐ2qF×újŒ:ºéºMÆŒCvp(¬¼°{ó÷ˆIJF€· A‹¡|ÇAMM9ƒQ< pñepŽÊR£0ad_œ‰ËÄ™ÓÇñýw?`ÅW_Á�*sg+�…»Ù~…�¤ Á<ûä3×íOü˜½ðED]:†æê|*C8R ø æöü…ÉóÐ3ÏÒ¹Ü O<¤lëÄ6k¶ìA4åË?fiU;9Fúy†)B{¢Oð�ÛÕmn5ÿùŸK@ëÚï×Qî?Ž ñ;å·� ·*óFÿ©ÞëÌï9° «�8.½ËNwí^9—ߨ\l‚t4ÁöÔ:?»c‘CUØZPö}þèåß_;2²p_ÃULrw…!Ù÷”:�úq L™“UØÑWV çºO`—“.½ƒÄ3§Ý›}ÀØx8šØÀ×S¾§¥Õ¯ûj%@¯¥¡sݲ»õC¼¯E‚hD» ·9r½©îgþ³ñøÂ§ÂãV›ºÔ5 ®�ÿÆ ë%Ù=4ÿÁÿ·ÃKdí{¯<Ž5»”ã ù@*9Ö*?z×RIÈËÿ—¦ªí³Ü÷”Ç%¢ý¬UûÅoJít羪j=‰õêÞø9Nh×j¥xSâtñdvcü~»&�j›'ÚÅê³Çn{Œt»ûR¯§®�¿S ¨AÖ¿ÓÕTŸËÿ[ �U4@Âi*L}twG4jÂÄ€Oè‰FôÏt38¸ïâÛMÚŸúK]êP×ÀíÖ@$ažtpÿëã¢Ô«‹³#sƒŠˆLHï°¾ûÒ“è7v.,�uplÏ$dcÁì hoª�O@(ÖoÞ_JdÖVR^ÖIéExÿÃÏ‘Ÿ“)•ãÀHÌ;µåËéÄŒŒÄºuksSqŒ[(u<÷�‡ñÌÓ[™ïm�iòÈP̾w.ŒÉd]³a=s¦™’MUœšÝ(ë ]#¯#G‹áK)ØCû÷‘µ×A�obàðÁF¬{Ḏ…3”`�?~3ïŠè]›˜4uz]``g…žýÆ!ærºvqAY!þN¦X¶73Æ€�‹7NŸ<‰öò îî‚#tfjÔi!´ß80K[CR³J`íÛ—¢ ×\„<22»x{#òØa˜Ú¸�á«OIRäç—¢ˆ2­~îVxïÓϱzÍ&ôÉŒƒÕ¡ý»OTša:WžeH#/ׇ’¶½Âðââ…d#óÈÜí;péfÌœ}¿¼š4ݱq ÙÈÑ”bv¥Œèxò^É(ªBßAa°uíBíÊj‰ÙzâØq\MŠ@|V>4¼‡ôîÍ|=–d<Â�Ò ²  ÕâãQ­1dD =OÁ‘}›Ñ“ôu[v�Å«‰j2taM–Ncc3F†¨b.X'‚÷mæî0 vfBÄ^^‹|˜“E8tÔHº>X@Þ¯˜ž|lŽÄódÞO¹�ËEß@˜ Úåd§£¸�·´ìf_¢m–¥Ó‚Ø€>èz9–vd£M{ýÈžxä�ù’Œds¶ €R0Y…ÜõgŸ}ŒÜr]±©IÈHI’@Ö5«¾Æú`.åû(‘»ðºõnõã×ÇàÉ÷aþœé¥sñÆ“÷ЪAø¹8<»ø Ø´°´ÁÆõq¥°ΔŽ~þÉ?÷ @ç×lúãû·"úÄ[;bàøûðö’× tëbAXGÎ@ãÆÕ’SûFý›áû`xï„_î­úCß|ÿ9��AXÏûmé;KÛÊ€§Ü·º[NQž]mÛÛc4Ÿ=@¾î¿:`.X¹òéîÛ7Dú»9ó2â ª˜×1‰Lç:¼÷!�æZîÞ5?Râüâùp²¢mX‘JÙÔZæ-6¡ïe<´•2è£0kÆ Ø»øá,A¡„È‹6>=ú@“ìYUÛ²åJË÷Bã©ã0¤Ì°¸_y•¤<¬Âq2ÈtÖö£ª›ü®ùåŸ}JÆl dúcÚµ ¹ U_.Ã'†cæ¢Åè¦ò‹uò2“¥OHØ/ÏÜû¯=7¾�´êô‘D†äð�^pìÖeU-Ì[Ì<_d+šk  Ü·}ð¯ïQ®Z Ɇïl²3©órÙÑÕyùŸ÷»� WÒEÚÅÊå+0|Ì(tñôèYeµ²ç�¹»iõ,&Ÿžš-�¬bœPfßQ :ð{m®TNÕÔ0ÙÆ\³‹_•~|üîŸw ,9Ùà »tôá™[‚É5ûªsr�ç›ïaI#lö~�eµ¦°±s�ƒazô ÃÅ�ÞÁÎÒ&²ö‡‘±­ƒq¼àñº°5à;›ýSK*u¡íjô­ìqèÜ|ñÙ÷øòÛ¸oÎ}”ãnD<L ´š)þR ÎzQnVز/Wà³åïã¥ç3JQ±(£¸ªãØN�‹À€P%Hv™mÇ3‹_Á±Ã»��‚@¿®ë©Î|öåwdU-óÏžcÖÜž�0)`ÞÛ{éh›äg@€¬•îÁƒhì׊cÒî3ß6há˃DZ»‡ ŽOxÓV.é8\ÑÖQ�¤òÊÇo›Êã`±¯+|OEv,½ëj=<%–T)ƒèl?x¡c[Õù™«k®gZ¡š ¡ú÷uó-m�ÐÖÔ»nÙÝú!‚yš"NJÁd¢ï#ÚáàV ”¹[ûR—£®u ¨kà�ÔÀ?mÇå¸$|úöíƒh¿w[Æ´ÃïæêínQr;,VQ7E{$LŒ‹D»ú[&·£òzòØDü~ÅØo®ÛŽ~LÓq'&›'X<÷šé­Æ7wR®z]u üÝj@k íïvRêóQ×À²D£%dŒû ’ä�Dƒx·`¢l!W–õÌýRbt±UÉ:‘ FHOÜMëË‹Ÿ•ÀÊj©M]êP×ÀíÖ€sqŠ�°�d¡yvq§ô¨.PÎ51òÉ4˦¯Ÿö:MiI'Ô0W¥.e‚-m­ˆâÕáÈ™Hô†ÓPYQ ² õÈõ¦$nÙ|•”r“öq'_¡¡¡’”›““ãM7;q:’R»ŽRÎÐÁÃFÜR®¯/y“¹_ç¡o1ÑÀ€G·P²�r{ GIº3¸—RÈ>16ÐEnV&Œ¾òÆ«h¬®–@V 9182CGSª°½CûÁÆÔœ2A5èâb S²Oœ Dœ8 ]‚b¾]» 1§BÂtÞÌI˜={6„Ô³&À}ö\™·Î´0ø×J…fa¶$wÕq¢ROK+¥¹½ÝVªH f܃â#sg´.\Œj²‘Ë(‹›—] J6ñÏÉ÷ÌÁ¾ÝÛte�ZJ›]Ãü¯!†¢7ë#.!'ŽÅêu?!.1 îEU8rò”Äê�й OO'ô ñÇÅ3ðèÂE8|à²yOL�9‡y£’rÊ62oå—»¯ >& =»¸¢•Oc™�r!6dlz28£³ùùQš¬l{Ê0+Ï· V‹ß0²›ZÎ.о­þ¨Õä'">% Qg�Á¼½‚A|ö­”¯ Qvjü ¸ðx K˜Ÿ;N’îFùï�?­£´wƒ J¥�£Û/ Õ”+uõìŽÜ«…ˆ8>èG¿fs9Jë*LyRÙýõ”G3vQ ¾ÿÑ‹¬ÿbø�!/L÷šÔµôCåK<Ÿâþ÷‚ª‰:Q^SÕ¥7ž�¼xŽÌí©jñ”|~âù×0}òxÕÅ7�œÂm›¶ñ=i.ÉŒ——•!84„L ~4ù¯pRþÖ€©™)œÝ\¤é©“Gáãã#½_r÷픞‹ÂLi_z‰—¥©È{)ç¾”üI_BbÛ^G &E…ØßnˆM¨ãõJì?zÅè:u2ôwüï>þ.MGð•4˜1+4âpeïþ}>mÕy|,/Ÿ¡L||Ù†´3'ëxÊ�wq²CؘI1n æ1è©­¥V&Z’ò„¦V;røDžóÖ®—ïûtõêÅvÝ–ÒÆ <±ðô è�1Ã']wö.”i—ÍŽÒû=ýùµåû^ùŽ—ÿS�öéÝNvª‹n{>35e%LŸ |ïÞö†pEñ^Í`�’ sæ*دï1ÞùF�mm+›j+%=zceÁ…Œ¡X_Œ7£B†bêìû0oßZ”ð6tˆ‹€YccÇш¶®í M2\õ&ÎC3ƒÇ„ô¶H-á9eÜ™Ÿ=+'/¿õ6<†ÇB»u´—ÀûÈž±Pj+͘&BGK›e+ï÷Ž�tšÑ¤ìóݰS‘±ÈfªGå;JVK}ñûð�Ì@4CQ"/ÆÃ×ÛýnìV]†ºÔ5 ®�»R=ºûÂÎÆšŽ¥ïÀ¾ß¨ @½ƒM @ÖÁÁA§�eÀ«ó�lª^÷7j@ôE弫¢Mã ¸)Æ8r>×Î}U¥ïY釖‹m¯êxFŒ‹”å}úaÔÓ/J«ž¢ÒúŸ6ÒgÓ_Þô¦S)½�C´‰ÒØ–}æÛíß´PõêøÖ€dý^Tõ)ýgk@n´äœ]ªÎÔ?z$ÂY(4aʆU8j•9ÑøÝnÜÌ™[®‚9ãDÞ"5ÈúG¯ z{u ¨k@Ô€‡owäÅŸAMùU´3‹»—/òÓ�L©Ûâ²j²»(²ƒ�ÅŒÉ*ÕÌ,øv±g¾L#2SšÈât‚;´§Žƒ…­+%t�$N”mF ®³E�Ú/¹æŒh©Ú­Öȳ‘>i.ö•€Vy»Z¾ã²™/­<ø M+l!«ÌÉHA&¤LÉœ41ÑGJ^) õ´énÀîc01¶Âw?l @ö‹ãV”)¶M …Z%Ç��]EAÔëëàLd4åum`ÏÜ‹~þxæ¹7ÐÞ® oÊÿNŸ8É)¸\`/'m”ðŠƒ·(Y¿ÌIéã Ÿa“‘O‡z7æâyâÞ9¨"FûÈ£sààÚ½ûõƒf[=j[µ˜#­¾=]é ×!óPýzš!«°ÍÚ<{W¸D‚Ë®-Ðrt‘œžV‡"ÃÑIñ1 GO[e�Ïû2VíÚ…#GÏ"�½E%%d®0äIL7 ÷Üû¨°&'Ä¢´¤'¡ /£&LgŽV'LíöF´57bçáÐhÓÀ?ß~c&NBzN!sj梌ç8|ø0öˆ'ž|VX‡.å2µ³ûµ£{Ú´iÐ×,—ü´:¨¨¹ #…v‘‰cîˆA¡Ýqì(%˜˜G´•@Ÿ¦®1Rȼxî êª+PVQ„øäBd‘©¹jÛ: ø¨"CvÝÚ/àäè�eË–aܸqÒ­¢QÛ¤6Z´Ï)Î^¸õ�䤖Vùž’@8Ö¼4ߎÉë‰iB·žŸ*ÑÍχ¹û¼Èâ«AÏ=áÄ|§}úô&ë9 ¶d�µ¾¬O=ö(j 4'\„6ÙáÆ&–ãÉøJÍ${¼ΖÌçÃkQÂ|:uÅhÖЇ·oWæÁ‹ƒ®ž1êkª ¥kD ¼SA @HOŒC;Yƒ}}Q¯mFyÚ&>·¹Ì\ŽY ÄÑ£{˜mÅÃ�?Ç|«!0±ó øQ!_¬02ƒk·œ"û6&æ¯c ú Y_JZ—nÛ£¬ ©ZÄùª­VÖvðö ü&סĄ3B þeÕøJ FQŽ|8s(Ž5VZUüçdkSU[×�ú §AçýÉåÞÉôrL¼¦Ì�žÑ?Ka=íÙÿ3V­Ú€tLåQFý"ÂcdgŸ>w š¼ÌM�˜[ÚV†z8s‘ÏN^ š[šáÓÅSٳƒ#6­[�{v¡¹¦ ©d©§e¢YÇã˜0eüp5hbyžèzôDBn3Újó±{ç²éY¿7°’’ìâ;ÄœõêØ3T:î¬vÓEÿ^ñ¹ô|uÎE8{úT<:ÂIÙM¨¨,eîíؾ{/ßÝÎÒ½š�Ãg{fÎ{CFŽÇÉÓgðÃêoqµ¤ û ŠwusÃæX5¡dû‹o¼ÁçÍÅ©Ñè?ýGMĈÑ#™ÇØB �¸J êÜ� RÀ‰¾µ+2Èž´cÝ ³²´U~ð SCZzã/q½:;¯Ä½"–ÝN_û•·þ‰| „uìÀ†`–ŸOWˆéoYøÑcpsw£t}/DG]Bæ•+Ì<òW›É«ü‡Z““’pæÔ)¸Ÿ;Â{ô٦ȫ¼ÞŸ5Õ\ð(4z£ýòÅŽ]((“oËö½Z8ªm„ñ¨«Ô,»ª°¥B@»ó¯û7Ÿ�ØR–\§¼º\W+î%ÅÑh˜•®0ÉJ—ÊŒ óÂ\…ß½÷#xò4$¦�†óøÚÙ¹uìË�û®î]¸µÿx償9Í\ØðÀŒùhÌ)B•¦;¯�,LÍ(«=¡a£¨²{¨7²·ß}�RÔ%€õFÿËË>[þαÌ>ò¢;šF3€¨²´n*© ~«€ ÑÑÌñúë¶î·¶Sý_äÖü×°òïÕ¡†$îoñ®­NJP˜Ö×cÖÖÛG­ÅÌyݼ,éݺÔw¬ZkàÆÀáàõÞz”ë+óǵ°-©‹‡iÿ0)g©ù´¹p`žmkKs3ÍAlR:ßWc0î£åÒ6ùCÆ!øã•|åc|Å °*íVOëµUîÒäñW>“0¨E°uÄ3$›€Ý–­’ÞŽ ú)ÄGmêP×€ºþ›jàNVqìßÿ´c††aùwkÚ+ð¶NG¬v¯Á{ß?ŠùßÖ6ê•n¿D­Ë€h1–‘�QÑjmo—A•ýÑ6)8TŒ]„ÚmÙji¼)Úa±�Ϩö]…Z�XOŒÝ N‡wü—Í´$âs; «êq‰³ÇøëñíퟧzMu ü]k@ ²þ]¯¬ú¼þc5 -¹1; ˜�Þ �¨(K|D#¦úÿ)Ù»±§ëËêÕK °^_%ê_êP×À¬¯ J­uñ•X¨Ætv^-)ž]{áãë† ‚FEdÇ ¦[IeÌÈtÓäÛ´ˆl=SyÙY?}.ž{n1A×j 6RY]ÝÝo²Ê®¹Î ë­NA°‡F !Ûmêu« ì?S&�¡D­RrpóÖŸ T@alAÐ(�` Áá\æÝ|†¿ àÐ�àg.‚ü°iýç6zºÄ)|æþÊâM?(Ìs²bdyÝ| dXu(/‡åc 1{r˜;øA—¹t�:ˆV‚~Ý{�Yi]2tÂFÅ.úzm]<ðøËoàJZ"J¯æ º¦• è{ ?’w†r¡½\ TÄÚ(W˜ÃÆÂ_¯¦ pH0 m�a�U‡ž} §ÝF¹WKæÐ4Dˆ�5´šÌ©› �Œ$TéÃúÉ—ÐJG~ÔùS°1®óƒóÃOK€–4ðL:!°µµÆ„)“‘–”€ÊòZ™[3²E…5�qÖX_…Qg#ˆoa..®XóíJØ™)p’À[jÞUûwCqV<ŠÉ„Ê*¼*ëW2ÒÈ6¹ŠCÃr”ÂLYákÞAzqã¯òêŠÿ›êK¡¥c€u_½�i�>‰8æ¯Ô##Vß@Åd´9´�@¹-Û<¬§”ô×?¬Åı£°mÛW(Ë> }37Ôµé¡ÁÍÉ#ƒ͹v–FdÂVá™^»�ìJ,‹6ÚoÆ}¸”[€ûž{�÷ësòß×MÅz™d Ý©å,zÖ>AèÖ­\l�ƒèÈ3ÈMMAtìEÔ �0u¶°î8ð#ë/ ùd> YÑÌÉz… àäŒl�%XYq•,ª2æ³kA7&5)6}zugŽËÙÐ ›W¬M¬/²iîØ‚ÉLuM ɲiq�Êû>‡Ìí–ü ?®^ S{æöðf�€[êÐ�¹Cƒz÷‡Ýµ@{Ö±ø+`™YÖùÅ…xwÙÛøÇ³¯h´å}íÔá\ëÉ‘Ûb^˜’©*€/%óI8d“�òo1•€S:z²RZ,Æé)œ–­R¨2…ôµFnV¥Åâ7•t|Õ‚n1_’Ÿ�ï/A,¥¥Ÿzîd÷¦,ó,ýðcl¦<ó‘Ã')OªÏ7šròò`C°!…×!làLŸ6•¶øè“�™;U‹{ïþëÌ™2'M™�:æÊßÁg¸<m|ÿiV䣥…Œu—c’PrµfúÍ žhä5.Cz~3r›Œðá‹O`ìÄ¡¸ZLfßM@VP¹0‡®Èám¥Â4U=ÝË>Áyæã éÓI Žh¬«…‰µ ZÁ\’]�̱þË×aæÐUº÷2Ép³0·@Rµ9b)~(ò,‡öbnZ/xztEzôy^{ø«î†Àp/²X{bÿÏëaB©ÒÃ¥ �Í``lK]Mô16dÉ Sð¸M­í)G­37 `UX»¡�÷Uz|4<»÷�Ö˸’GæþJºö’~Ëmƒôã_Ê~µÒI%ÿ-î8q3s绪 ž|ôQ `ýþ«óJ“MN`\Ø�ÖôÔd”—•ò½k%­#¾Žì?Iöªƒ9LùKCjÛs²(Ãý#²®dJÏqNq l~ ,Š‹�C1ƒVüüü‹Âeï²µ©£ÌÛ�ÑçóÔ¢ò,Åk*`ÓÞrÓÍWõšŽuÖU”r \mÇÁ&l"èŸäÜ�šÛ˜3Û1ö<¾5±‚wK�¢±_h¥YäY…Ù©z÷ÌÅFg\Ê+„MaÊx ºå„dËK¤ yÇÂ�(æegÞwë?@¯€þ01²�V9s!ζÌ=~¯üó¦XH ¶S'ÍâF ÌyîYyåIc•b#°öb»ÚÙâ#bëÆP×¢#�¬�ÿïü[\c'²_Åçv-‘røz|Î[8Vtðô�—O÷ÛÝ`}èùðØ¼¹·½Í�V÷¸¸Ÿ;�U•¿Û®¦¿l)rÓ�Ë>™¶4îÛ+L¢*ÀNi%°ž»pï8�¾ÌÍ�Åœì?;¹bâÓ¯Hÿ‹öGÈ6žý˜>½•�É c¬ÞÇ�GUJFVö äuo69Šå2ÃO�†ÕP„’Èïµ9S†A¬�ƒúÂñè.hQߘ¹X=_yWŠ•ïeéj€õ÷Ö²z;u ¨kà¿­Àz.*yEøœãG{[8©òœ½#µ±â¸×nÛƒ@`9» Û÷‡‡ýH,zé-4××PQ¢‰é�”ý³ÿ¶sü+�PQ(ûô�Jý¾ƒ¢­•Ç5¢/$Æ3r_T�pêr²¥þ‘êr1¾@«XO9¯<{1ߘ+”~”D2ÓÕ<'fÏΗÀUAÙÕ™hE9RÙ >´¢ZmêP×À¯k@ ²þºNÔKÔ5pG5 ƒ¬òFJvÏù§zª®u ¨k@]¬�Ó§OLûeæÓÝëÖüˆÄ¼rÌ›?Ÿr¸Õ0h-�«O êk«(%«‡žÉ—z`7¥G›4æ?ðcÎ!˜£�={Þ`•-ÀÕÎk�G؉œ©7²Ð~¡Ìez£¿:–­Z³3Gž‹­œmPSW�.]pêB î™8§�üŒ”™õõñ¡¦BޤÃÜšƒšÕhÜ´¶¨*7ÛL°Xó,¬vï| �—_GÅá-¸`é‰äª:<¿n1f2>YÛ»ã¡Ù³j@ÈÀ^­€ƒÿ@ð=Ÿ{óÛÌîììÌ�;3wæþÏÿœC†owy| ¸AxwΊƩrÚ‰{áùãç�30m9Ví'P•› £15Iž.o“Ù:úb0eœ{èQªÿã×pϾuïã"cÑk㫽›`ùÂEýÛ7™ô¥¥HZÁÊÌ#ñ*04—5Ú»à8½^ËÈŒ;G¯ÀÊ’r ¦—�`.;ÐcU#J)ëpÒ‘é!;ëÌ’¨}îée(—w¡—ÒÈUŸ™¬ÝJÖOÞÜLfë!Iî7ÀË—¼ý*;àhkN™ExL©oí…ú¶”êÜ´îi;V6‡¶ž¹²Ö¨:O°'*xròÏ‘u™+11 áIÖ¯3ÙD�µ!KÊÑÙA Ô››Ú`ÄÈ ¸kéýH"3§ˆ’–--¹Ø~ú(¼¨öЭf �³bƒo½ó½QÃáÈ€»#Ùz•”¶þèÝwQO®E^�†æI!bÙ­ Ч¦Ž<´¡W_›’�5R}íŸ` m®n àdÉuU¢©F§éX!¯'ôÅ…ˆ¢Ò…´íòЬ“²ÕVÐ¥´®±9öoÝ€Í;¶!�’ˆÞ®V¨ c°º®�^ŽLhÆÑøs;v8e¦É*#€U[]N�ÈiáîR"™Y_~+ž�‹w^| #™aÉöïdƒ&l9�€ãçÏ᱇V’l‚‰“æH«b¿¸š•yžÀ|,YvMH‘7@_W'ÏÆJ~�ŠA¼ì fꕃxe€@€ )KÓH4@¬„ËÕmúR 0XX[iMžm]ÏÏŠïE²@�ššÌè‘g­•Šú‹éñcGñÕúõ3ûöî�›»»ôµ¾¡1v8ˆ‚\c‡aÿ®íð¡<·‘¾.|‚ÂDöîï¿‹A6ÆˆŽŒÀŒ97AH“ê0q"†~¬†Úšpõõçúä´ïÀù¤xL˜>Ÿ8‘Ùû–°%S¹ ²ŠÀ‚&Œ,lÌþ/8(SfÍCJÒq8Ù˜Ò‹T›ç¯%Jª3=u…”µtÇl2ú~© õZ«âwöܾxéè ¼(,Ê̳`N&¿§« ¼‡Œ”æuQF:¯ ¡¡Ãpl÷&L3!Ã)á:ꔨþðãÏ à‡An00`­ Æ¿xµ´ÈéI{ g’‘FùósIç0Œçõü¥Ë ¸ ðñêES7`�`KÚÛÛJ€§bzõ__>Wq¾ˆsCœ¢/e Eù`� O´¢|ññû »²*æ+OÀšGYô'Ÿ~†Þ%ì;¢ÐÞMŽ×ÄqÞ+�Ù.ñqÇOùèܼ¤œMÅ{o¾Œýº`IiÜíß­ƒµ…R©ðåºõhmï….AùܸÓT>èD“ŽL© ð[‹2ÀºQ] Ãf`XQÚU^`â€ü˜ˆ‡ß ,CéÙ}æ>˜Ø˜�VO/ÔHtݼNúnn§¶h66–™—Jóœ}A¼¾ŸZõJÝí¡U_‰ÀóñX߯‡Tª+ªu_ܶ8B1Aö~Ü}k?ý»6mľ¸½xcÍV<¸tÃá½wÎÌ9dàWàøÉ“<ßÂðÖKo\°Š•^�ÁºìîÛQÃûÝ­ —°OšvqÛ¿ôæõ÷žæ½E�ÒÞʿ´¬â»®Þ>ü¸å3œ%ëw(“P4>V×Vг¼2]ÅbW� ëÿ`½ÚŠ[©¡­=P^­ïÉ!`U.ŠkD‘ãÀ{�½¯µE÷a=m"î¸=ô8_0÷N !+ØÚüê×®HnkF^>dzzðqs¥¯`^^õ &ŽŽAkO?rè¹\Îç!…©\ kìøQ¸÷®û˜|vy•—½Öû-GOà«—_Æ‹[ŽàËï÷á¹QA~×ИtlF�‡©‡ž|âq,{æEß:ƒŒO‚�º:(**C‡¼V’ÌL<—&Ö[û ýݨ½õªê�¶e+ýpÌ1lí›Òî8°Í,È¢ÕŸ2^ `kPæxÝjÌ,8“®N4œM”Ÿèï’iR&¸[6Y©è37ï´6VVžŸFYÜRü зwgÑ y½Zº§›,¹_ƒò„Ö0|a¥B ÀAÃÁYV7$E;¹ýÖæ*NyÞ¼Hv°¶ˆà¶%å§0°=;¾ÞSþv÷Î͈6‚þ AÀúækÿÄÔés¥º··u‘•™ S6e•õØOöYA9AE--L!sUÈ2x8!ÐÉ’€s6Á×x;áþ»žÂcÏ<'¬bEédÉÅŽŸ‰ä”DÉ·VZ9ÿ 6´zw¥rÕ)µZ‚°°(t4´¡…æ„3 ˆ£oð°°Là9jÎ:kPÀ9+¿œ@ !¢GãéG–Ò2�’ÐF˜5vºÉ($hk„ÖcסÝÈË-§¯m-´ t89XÂ”É cgÂŽ²ã&¦¿,UÛÊd‘n^Ú¼ÖD)ÉÏÂÚמ@䘰I°Šït®ŠWFFy䤞:†bú)�™~+}„R­‡÷#=% ùÔ…ÒÀÃϽ†øødé\s¢çñKo¬"pÒ‡I££ÉæÍE3åŠy`Û7ŸKÌ´Üü<ÔPF6<Äd›ŸÍÉÃÐ�Pút›ÿÍ%}ïV®Ðg’‹Xoç•8�D'ëïo4¸é6“k��BÊX¹Lœ6óšëšÕ0ù Lb°ºyxSV�lrMm¨©kaýkÃ~ò…7^×ô©ÎÏÎFS+•LLèýLvxk3Â]õ0265õ­8º÷GU¢–×¹­•9²S�£g‚ƒ=2äÿFÝ:dçëò˜ñØuv(WóšïýÉ`�hgz1¡� 万^‡ë‘æ¢iG‚újÉR= 5&)J(“~,úzàS’ç¬tÅliªËDŽr²Vߣ¢Â¨žv4PÿÔ Ôo^¿áÑÐR7ƒ§¹ÔJ a;·uæ£hðކYæIèE—vÈ¡7•lÇŠì?º‡% ¤´3Ç„£_ËGN'a‹D cû~½i ýz#ÐÛ'Ç»V#(`¤ôݵþ•QŽ^$Ô¸y²Ÿü�e"¯¯k¬iRqðØø¾lmF2q�©¶‡_¢hR5à�wÿMÑ–ÒÖ~ ½œ2ñ¢?Ë/Èç=Ú”$„†ú%æ©TÉ«üA^EPW|ýé'Ÿà›M›0ŠÒ ¦O¥í‚ “Ψ:áľå—PKJœ €U”ÊêZiàmÖ#'3 +Ÿ} ·ÏŸ%Íÿ«xÿÐ}üf€µ™RÈ]==Òõ Ú OßK€£™ 1zXvÿ2 ?êTSp¢ª‚>­D¹À`÷è1cÉ~”>«þ]¿XM–¾URÌŒ¯Â_¿-©Ö¤j�ÿÎ8“rgΦBÎ ìf"¤ÿàÕ¤ÿDm{º{©¶RÁ¤Ö�g&¡E á¹SÇJêLwÌ›!UK_ß�WX›; ¸29¥ypp a’f5BýqÿK+Q^Y�!Lþ3а 1êî(jOMVãÕLù¾ôG·ÿÁ§o#lHäýùúÝÀ3æ%@UzŠýc@¤*'žŠùû*˜«Ïÿ¦m*ÆGba…±â‡Šqžc¯G*Ö«šªZàïÖ*�õïvÄUû{Ý[@YòO0M”o~×}cãšPÎÙ7bª*ªPµÀ_¯l¥°&æ”±òjèª+ w¤=‚)h ø0ØÛ î^®X»æ€l'‚j•¥w´È•þ“}hjlÂyhæFzôvüí�Á`ýÿ¬ŠŠœO9Fß½jäç¡¢¶ZjhiîÅâ91pö †»“#ªq!-f”Í{ö¥G¡4 >gOI«071DCp ^yZ[6`£Ž®Éi ›9 ÖìßÚš[ñΚèjé€ìÂX¸�lÈN”RjÐ�,Lc¦”øq‘×à½q¶kêÁœ�ÁA.ƒ¤À¸ÿKïâ_ï€ôc'Oæãøš"I^õH]½¬ÇÛnfP'k&(*¥†:2 ‚Úš°ps#«¦^õåj&™�î –™Ô ÆaÆ£¨å+¤‰è ¦É §äíúF�Æ5Ö"ëV Ȥ{úÙ—BPÄÇ?�,J |·ãGØ9�©¤KŒ™q[…\¬`°*Ö/¿X‡�Û¶ œž¼F–ô^¬,‡žž>Úè«ÍºU×ÑïÖÐŽÁQ0±¶ÇøqcÙÖ>° d©Ÿo0Yx—@$¿ÀVÑŒ9Èd ½´žˆ?�3)' ŠZàk‚Ó‘!á8}*%ôÔP×€¹¡bbG’í¹=ôƒ�6†RËàgb‰Â"Ÿ„­©iFc—Î$Ÿ£ô2=qëšPDfh ÛL«¿; †­xr ÓÈv…ÂÌTÈ+ËàNf×í‹o#'ÝuÐÑч/}Š«ëêaF¹Èl¯+»ŠóM%s35•+ï•'[Ùȼ“¤ó¡ç|*,ð·!Ðá__?‚çuÌ0’ «.AÙ[É$¿ë¡§ Fœ§—Üé—ê38ô'�óÒ€_ÔQ€˜.kV,STQšZöõ!ðá@×Òóª«XHHýŠ �ˆsJœë§JKeAojr=NÉôâݹý{L™>¨õIN½€­?ì€fW54t­@�ãLª8R2Øßß—ÒêmÈ"‹ÏÇÓŽ€k7Yìõ8Êã cdmÍ~XËØw÷CFk)%Þ­-ÌÈB¯ ÛÀóB¥NHíêAŠ‘=ÆMÀ�¦ƒà@Y^“®_\׊¨£nc=LÉ”SQۻ•}™2À*}ÁÙd:›ww)>^6­â½ì+˜â–¾&ä��ë·æMx…A+ É�íˆðó@ïíþ½â÷ý(âöR™Ì¢M°N{b4,ýB1nô4‰±úù—ëðèC+¡cêˆî‹�à/E™7gޤ*ЪcEÏiK*¢’}½-*äm¯MÙøÚ†Êrk#dhØÅ{“bW›võ÷²÷ì—’hZ:{É×À)¼v—-^M;„j&Ï\ ²6vÒƒ™}÷�ôV~÷“�PJàùýµŸá¶ys¨$rq)îOEŒ?£_¬O<û̻￷‘—êò{êN6ñô)Ðbâ€(6¶Ö¿ °^¹þ¼‚…ïwnÁÌÉIÀ7²îW®{ îã.ñ6®,u­ýºÖü+×-žk`­bÌ)„"…âs÷©còÞ¼¬Îºý;dÏ&žäñ¦Í‹ÍåÏ7W®WõYÕª¸¼T ëåí¡ú¤j�ßÝâÆ®(—FUn\ ¨Ö×¶ª5«ZàÏj{s#4·w1°©‹M[öáë�ÖÑ_­› š �ÝôÝE–J¸°ÿ˜Ø8þ. õ²^ãÃñ'ÈÀpÂéøSøê«¯È ÕA܉cصïvlÿId²Wе fdµ63h*@ÁÙ³–�IրĴJ^¶ÃÐÔš²wç�~!6dwù÷ µûkjàPnTV,=™ššĬ`;gOü¾ƒì±Ÿ@Ÿ%vÇg‡yyœZ[ >~Ú›�R׊­ur•�˜€v÷ !˜sß½h#X­««/�™qõrD�ùÓÕÅÀ|ìDllìÀº´tÈô´¼ôWuBÍı¶¢Óµ¦¼QPJD]„¬Qè”ˤ!Æ#|X †ÇŽGU%å�-Í)9êô³–"CÄ‹²¿ón](I:r} –örÅ“§LB>},o¡Œã¨Qc ÞÁÝ'�²Ïu6nÁž};0vÌ„Ÿ­sé’{.¬âËLJï;x'â(ñìH¶1­ –·ÌîèèĈÈp”æ¦aéÝÐÃñýd/'stŽ;…²šFd¥g”þ�Áƒ)S�›æŒ£¬µn!‹ñãמ‡ÁdK#ÜvË-(º�BoÌú 3aÀ–ÌT•ÁŠLZ[ž·”)6'›Ë/ë z¿ú\ª¿ýD[Šž[@(cˆÁ³§gebãÇ«PL–Ï?ž^wçR0ŠRŒ”z¬ïÑ&øç…�¡}2ß³‰ˆ¨XŸX§!e\%²µ]ôM¥Tí ²èî{ôyÖ�”ÌŽ�–’l¥Ø¾ò \€¤bžr6´X§87Äó�¦D}•Kbâi㣰â•7%™iÁ€ºr™$;Mi�/ÖÑ·m3Œ­)/DZ�bÙ^ggâ˜am �³qûàè™‹ËV¬Û¤¦'ss²e@½í†”(nùÙ²¢mDÒ€óæÆŠ¹7Þ|'yí V²(ɪÐÄk,;).à«í?Òs8%ìkë1uâN+±c+Y9Tüÿ¸wþ\2ºcýS5Éveuõ"· Q£F!› â½w“m7 /½ú&L‡Î®>Ëu•EèeXÛÿüºS4ˆ>e:“Oî–>™XÀ×˃ K„ôyÂÈصÿfÏž… 6àßÏ=KIÕù’÷tO'™Ô^°1ÐE[c¬��˜DЅɳnBN^ÏK JÝ2¥4÷Þû,mpôD’3JÙ” ÐÏ� u#ôÈV3`2Ce~ôÕyú÷V’ÙØŠ¶ú.¸X›1P77ß¼>�CQG† ¦Ž ÷=üØ5VQñ;Ȭ~ÔvW°L¥�ú�ÿÄy7|Å#xî�~ñi©)ì�~=Жu¹ `%ã×ÞÖ ®Ž¶h¯,€�Ó@?oJÑÛñœ+Â… Y8w&Úlß®ö4ÕµQÜž÷N=ô¶6 ºAŽ ¹Uë™ìQ]�nعxR ¼öìMMLÑY_ =&Eôõë’ñi‚œÊ.øõ–竢(÷;bž&ý{ûÈìT. €µÀÐ)®-Wþúâûuö¨c²�g[3š§ÎG>}Q5´õ�Å„˜t·`è4Ô!Ý5 »ŽöÓÀ„ ¯%ž!ˆË$‚“û±�ýi:ùà@ êi´òÄîòZ Ÿu'S>Ëî»�í“�E n%+±®öÖ—¬+Ã7‡ê€Jû €5ùÜi GKg7Ìõe¨éèÁÉ”LÖTq(Â?^[�iãGbå?_B@ðPJ¬Såµ1ÿ‹,_²ª÷ÓW•Òéd}ä‰ç% ã3Ùåxýão°nûNL_´#¹?+5y¾G‡†°·£ÍÀTJm»AÆgm¶•LC�‰ ôYfbÑoY“èÓ*TÊy�¼VÂA3Aïtž¶”%•RòÖV6—UÍšÌMo/²H+è-?plxždßíx�D±‚ôÌ z[Jërqq�x)Êé³iT¥¨¦¿ßoeçö îô ÌXp {`…b5Ò´¶žý ~©€µ�ÇGGMãš‹’¯X ¹EÇÇž‡vŒ²÷§OÄSqàç÷ÅòªéõkwÞ3TEÕªŒ�Mÿc«h¡X4gÚD<|÷ÒáH¦mîCG1yôéóŽûQQU…¡ƒÃ@×oò)ì˜à:�ÊA��ìVÓ3ø~4†Ò£ÞÛÉ»v}�…|Ö�OJAiE%}]ýIÚÐú7JŠgz1^QŒþЪø#a?ðŸXõMöéjc*Årtª¼~�+Æ›bü%ÚP€ÕÆ7-’µ¸zbòø©h>y„c¾/¤Í‰éÀï/ߺXæÿÛî—¯QõIÕÝP�¬Ýc§ªùA Üt<‡Ûäj7�ÿ‚jªª jU ¨Z࿪Œôt°oç6ܶìNôÙ{ÁN¿æn¨e�},³f�>Yc%6L�± ä-�Ю¯Â·)ø%�ÅøùËaGùÉëUN'&ã,ƒåçss)9{k˜Ñkfæ‡�7?OŸÑ“”uì©3§pðÈyô2ˆìà[s5L�5‡Ìlß¾zôÔ‰?› c[lXóå�aÚ´Ùˆá`S¹`G¼ŠLMe]†úd­V#§™ÁOúsh10™Cieº¸¡ÄÎ “Þ¹¾)š:úé`#79Ÿl,Ö×ÜX‹O�C=åî23sèqš…à Zuz1¨ÜÀÀ{)võ°"¸‘r6^`{Éâ°°´ 8hFyfM«‹ÑÁvõr±£Ô±1O¤ ‘u¶d÷45Z«1 ÜYZˆ–Í$P¬"óUH÷;:›ˆ©ñcÏ!ÿùhÛýƒÆ @ViKLg^6¥í)›:·ÌÅÁ¹šš Œ+½Ÿ¿6ô›³` ·»½žÎFhjiEss3lÈX®«È¥o¥e¥�44ógOBYI–.Ödˉׯ•¶æ|ýù:ÈŒ Qš_ˆ “f`0e¹nºùVäs`Ov¥—ÿ—W¢¹¢ˆçÂ9ìØöª^RÊ.ÈK�­=Xrë21»—¬Ã7^„㉃¨xì êôH½]:8A0Ð’ž«êܨið5§ï\1@I°(‚ãŽô¨�<{.ï»íbÕÅàVñA!%>·í;ÚùŠKè§êŠù³ÆâdÒy8ö FêÖ�8ÿö‹ðš³ß}·Ãî^�¾¯ÖHƒeÅú®5Õl¨Ç©´|ä�i<<*¡I¯,YÜΠ©s9»�A‹¥¯Å€\á‡*éŠ"ê-¤V£T1(D Ñþøn´>pÛeYي߈©ršø,²©…¤¯¶£ÓÅg«6ú6‹æ40 (§BÞº„Reô`”ÓOñÞEóñÕwëq�rÃ�Á�ø&·sïzZÛ¾•gE‚€8›V¼ÞþL¶†É ‘QQb³Rq¤·±ð¶%5áR�Á…²Ïk¶î@ZV."Ã"ðÄSÏà‘G§ðçðöòdÒ={KªÐÓֈ؉LEk[ô«éãÍÖ`ëöí”nÕ¦$p.lÉ\8vòF»!íB&ÁC_æHKMF¯q7Jµ�ÍLú ”«íï"«Ó­”Ç=a2A˜¼ð¯§á`éEö¿ÜÉ>?NöTv#ŒdÜ>ÙÖåd�;#�ÀðЈhž~šûëQ6øðž-”8ö¥g²ëb&í»øghl„TQG²¥Å~îݵ údÆN!8tòØ1TQvïþý�÷÷â–›f!7'›×†‚ éH#ˆØP��Q”·­(¯ÀÛï¬&ðg‚MY°jˆðqå�n…³==©ó‹)lËîZ¸ùM¢„u!F�ƒo¿úîîèèÔ@0�Q/%oõØýZY~ÿ½ÿ/€U±þÇY©x{Õé† _bõÛÿFôˆ]j·ä”³ØJv¾�®½VÙµ{'víÙ�I§âT|׋ʧ1¦ßÜCòïÒ�Qòèíj•úíjJ3!©NÞÏ=¸—mUŠ2çÕz{(㜅ºÆôt73±bá‚zúQW3Q§¶ºm”_™3¥û«¢ß±zðq^WìïW‡½f®8XV‹~ú›LŸM²XÔÈb1%kT`U´(nÙ×�ÈÆé7õ$ÃvÊe&è6ÔÁ÷Íý¸É̈²ùóñ]s7Ö|þ–.¹“}i"ÂÃáðØ÷íÖÍô¼ €“Tj+ÊQF€ñ« _áìù¶÷«hswÝœÍÏd—ÆÆŒ“f+ÀÓ“”ƒ?v> CÝìàé*¬ñ§N1a¢ Q‘hW¯ô WmxMLÀ1Ò×—V1ßÒÌ=lÏF¶±1ÏïÒ’$ÆÅ£žûÿÀc�¡�è� ïQFL¹À$�%÷,&K<CêzàÐXxS7“J û1‹£¿`Ûž±h!å½ó˜v3fγ~Vt¸}>£ˆ©(o}ðŸg*1Ø/Hú¼úƒUœª!%=Yb¬lÙ¶á&È:a$¢Bé5~ U¬Ï3Aä&ú2+—wÞ[…U|©éšI «9%'»˜1e@ù]žÊÒKý§õ!õ¨èÿýÈ*½`‹Ö±Í�©fqeÉÊ+”ÀW--M‰ÁªXû¸ñ챎ŒçÀ+d~E XÜ»Ä=LJd6ÄÊ¥RÄs©¥Q®Y¯lhÕç¿D 40éS�ÏF"‘C¹œ¢§÷ÊWÞÂ%†¸ò÷ª÷ψOLAĸ9xäÞ%Y­°ƒ ÁC$~m­-/¬¢u¸*^Š2‹J+‚Å*JQiž{•Ö-wßCË’@> JçaLÔ€:�Y#ºß)~=¦Éɶ0ºM­¬X.žñË7­7Qf^�íüÙë÷Å–“G¥äÕ�„ÖK~«×«."f­H ÷DÅ}QŒçÄ3¡  ¤4ëR´âNiLV½i�LŒÍD"¯rÌ[,SÿÊÓòÂ=Î1ìõ¯ëõÚgÕzT-ðgµ€ dý³ZZµ�ÿÉD!¯0 ç÷üÿä>ªvJÕªPµÀõn�øøxÈ´]Q\Pyq ~e¨£7Ÿ¬|À@­ýOÒ„Ÿ¹…£€ ŸA-udQv"–lA›…Ëè©þ‹ÕZýÙ§XýÙZ̘4ù—_ €uêì™xõ•W°þý•X¿eì¬�0ÕCGK-AAàÙçžÆ¤qã)yì‚ÙsgbþüŰ$p6mÒÖÊrúœjõt¡…�ì?5Ñ#oB = õã�\V1€¯ fË–�eçOYA]J~FÜ2Qþ¶ô²iDFfŠ*Zq§>Ý^÷ìÁ®®~TPZp¤Z»L‹ÁMQú()Yâ¿ƒÄn”ÿõ ôDܾ“d¤ÔÐ3ReåUheð×Üe0"£‡¡¡ªæf&pds;2,Í!'ËE—AètúãZXZB� FkU±µ%�+De3è¨�—} ä L Ä„Ä�Ë;_@�lÍÆ5ïKóÄ|ñ’¸¸Ãh¢ìï'[7�ù6zÜÆ3ÿx §ŽÇK/ÿ›^«”ðM¡Dí%ÙÔéc ®m€ÁA! ä°½›#ÙJxó£-00ì'À£�9óîFÙ'¢\ `ÍÎɤ�¡Î'%ÚÔöP#óèÝ÷VÃß7ã'M…«›‡ä©jÈ r+Ê!øÆÜ[î`��Ǽªç³ àH?¹±££Ð×ɶ¤`äдË;ÐÜÖM‚òšñÇ¥z”¸ø¢ÆÀþá1ðîn§^ÄÈÑcÑS[[gì?|öd³žK=ww4ö¶ÃŒ@±‚:�¨sQ²I´aqôXÊP:âäéã�ÓwÓ£º½Þ>8NöU9eˆ} Îyg¤ÂyûVx0È_¹o;2Í�Év¤|ls¥t¤ÊýÊ¿áQáˆzôAÔ–å!$jôÏ–þâóQWWƒ�Ûï‘€S1àéºM~¶ QoŒÖh?¶e#ÊxmXTÿösi½â¼ ¼îEQd>‹ùâ·ŠÒ®®ÞéððÓ—y¤êóZ±äq*!¨$@ùM_¼EvrY˜‡`c¨�XÊÑ F¡=_7ßr;¢£c0vÎ’FZ‘|²ó°ž•uûSïbÌko_dÔ&Ó�v3}oºiž´ik+3Ê9kÂÐPÊc ×î\öMîeï HÄÇ�„6�ïÆ�ñÜ /B­³�A~ÉxÚ´)ÐÖÑF€�7òéÛúê«ÏANf§ÊåóG±ŸIÅ,ʰ•—×áÄÉs0#K>—àcTtØÉ–”ÐÇ·îÎŽXtçÝ(Î9O�«z´¶u0`¥Ža¡ƒ)‰Ö-=sèÑCqêÍÓ˜\AÐÖÞz”Œí¦d³•¡.ë`Bvv#Ù°L¦WâjJü¦Q{€‘�›™ŽoÖ~€°a±ˆÛ»%yÙŽž�zxMMôñ%3íÞ;cï�?`ÅcOb.Y¬‡öïÁ!ÊöކqcÆ@£©”,Ù2Œ¥÷ò’Wbâ¤)ô¦æ5$ÓE2AÂÚ¶~XØ»àåžÄ™‡0|$]¨ÄãO>†d2Å�4» Ж ¯®Ùôwuä²SfL†fG-¶=‰Úº^d01dÿŽ}ðôñ@ÁljS¦R&×DqŠüǦ IgÈhΠ\¯Þ\õ>¥ÍûN98»Ä~{úù§QÉ€>÷4tŒ1„ì÷¬ì,znZ õÜY¼þê+�7µQj¼GöüÈ`–z51qúH:z§ Ò=~×bd@káù' )Yn¤§ ¿àHJ†_€ûê�OO¨q}¢(ÚûL°ÝÈÙd¡Æ¹ Aa¯Α cJ®J*²’ÑÔÞ‰n¿iùh p©£­…<2éç¶òÐj‡•�=ò†L�?üåw.å3‚†$?½|ÙRz”—âÛM›¥m yß¾Ÿ×P2ÓÏd-§òhlÛ¾3§O”–QüSg»$fçàŸ¯¾/ÞËìí.%ä¸RU#‹`xH�–?ô,Ù+ôâ&YÍs-:<„tMÞ(¥Ï—('N'bÖ¯¤Ä g%ÐQ°7Gމ)ãFcÚØ¸{álmE?· L;–rá¶ðvsÅ)¸³fÏF@X ´ Mq<î >äµùÜ“OÁBW ”�×gâ…¹®½ÈP¿™ ÑG­ˆ²ò2‚ž?—O_ºp¦O�vM€UÔ[xŽ»²O>I V$�Œ¥²„`ß ¥�3gc(ªvì_gOŸ&¬â»GïyફøN0X¯XÅüˆðöqåXõÖ+ìGn‡;ÛG›‰âÕÏïy›•^bY¡V ‚¶¦ÖVUÕûw_ Ž¿³f=ÌMéEÌ—(WXÅ|ÁnÍÌá=–€€réÁõ³ôGçóΕ «Xî‡úóYΖRÄ­ü¬ÉW.“¯†�…¥`±¾G�Ù„¤$„*~¢*ªø¯o�vÈZì®®YKy/IA—@²ÿú�ùV0/7 ›¾ùF“<ûÔØ<õò–ëÝ$ŽLè%É®z@IDAT‹ Â>ÞIi©Øqè¦rÜò{‹i£Ã¢°fÝZŽM*Ȉer1A<ñ,øÆš5øôµ—ï*uy°ÞsÏÜÉge1žI™" ø�ô"@ãæŸÆ–¢!D¬ùFÇ,UŒÃD‚¬“*·¡H‚ÚãÌçWck™»¼Jz滲>R}3/È ­­åuûwKlâ_=€ªT-ð?Ü*�õøàªvíÆ·€Š�J&øÆ·µj ª¸‘-ðÚ3+Èò¨¤è@fÿ�ÜÖßqÝ/ŒA¦�(Ϝƿžw-¿çϧÁÀXçϤÀ†à©µ©=0­a[W ã²üÓÕ3Ë31ª*¦ [‰@1�©VÊŠà›þO@ÈÕÚ44xƒ¦\øúµ’ŸŸÍx>]ý!ÁG¼JÙ@‚¬·P¾66v*Ôè»uÛ& #°·pÁøÓOÓŒìFWW?¨3¨ìM¿èÿëy0ÁÆÒ㢇àH|.üÑej�­i)¶¦dcuýeUq �ìÏÀj¿�3LºÛ±¿CýÚh딓UjotÁô\%7 qX]—à ’{ÔàG/Muúy6Ý2º°±¢Ä"ÑüŒtÈ Ú˜±M‹+ÊPA�sKS´wvÁ ܯ÷±ö“w0<ÜŸÄË¡èÓ2EGC!Æ�ƒ~O4{Záé@Љ ÁøÑS¶�ò�; H öÊ"î"¸oAÖª‚‰¢XFf4ç Ÿ1µv¦0–©{öž¸}ÙŒ B�(y—:%xõ`f> )˜šrš�nuÔ–W£¹§†çƒ.bFÌ€'å“3³Èг÷f¨ˆQ¤k”2p'ŽÇ[o½ÎàjÖ¾µŠ¬> h]ûñGªËáBàöÉ'žÄЇWH`½‚µØÞJFðùLJ“!v€’Å «³.Ýls‰mdb€) zT—æÁÉÖ…§¬òr¤šøX[àßÉ©XœùÇoK óζ>47Õ¡¾¡õm<÷wÿHi×4†;)yk€ÃµÅÀ9É-Þ]™ËŠ]ÓØø9ŠÛ«ÒÝÇ6’]ÜŽ.ú—¥–Uà¶;–á½µë1¡2ZÁEѦd«š1˜~§¾~Ò`Y±.ÅTá¿#Ê PSd€ûßv¯,zÞÅb—M£¢GÀËk@R<÷ˆcb4AEï=æÜr?ß pÞ˜¬Vc2…£Øž˜×uê¸\xúŠe”Yªbp/$§Å¼Ó{2rÙ2ïžDGSvmÿ†kU#ÓÙ–×Ù‹dG•cï¶õxê‰9˜1g 6|û=¶ï;ŒŒÜ<8˜éü«‚ ¥RCÉâ¥ÓÀ_ÖÔÊÖÔ`é]wÁŽ`Ž¢ˆc¯X+ès\S‘�$ú1µµ·áûïwp´@™íææøþ@Š z5É›ÐÑÚ*†2ÃŒ{ÖK)S?2V?EÜ©x´ÒS·¿mdlž `ØÉóJ�”¿m;H^ņ¼^‡’qI G‹>Åæ&8H m/Y¸ÐA[u6FNàyFÐ{ÎÜ› â`áÂ…°p¶ÁêÏWAƒÛŽˆc�̰eçn2Ö+ ¾iA]�¾Í¼î«)a[õìsZ áæë�3g3˜0ÐNf[>¾^÷,-lááMÏW‚HéÉÉGGÿÁAdjS øV˜[39$? »7£ÇØŽžÃ>Šæ$`ô0A–0&¦ð|¦,ùü;–ãXJ6 [8,m‘›GŽ���¡›ÌÈ©³fRfXŽ�ØIøþH<*óâ1fÆŽ“;k.öìÚK†bZ™Ì!o&+“Ç_øyÿ–²öãÕøìã1iÚôß²øU—Ée¿jFÖ¤¢<öô£h#È}âØIJ»æSº· ·,º�^²—€žÂÂ"œgPȲ&’uÞR]ˆm;w’ÑhG/ÑyþÈ)£œ‹ úŽ›±ÿï•9q™& ‚³”Å7!жïX<’² ¡©¥F6¤L(ÜܧME…sp³BVÚ9Þ/´vQzÜÌ©™ÅPkn„¬¿YLÑÉ2�å°qñ Ã5½gàÂm¥Å ÍÅ�£üqJÏñ:åuXß"ƒÿ�±Øµy–.\ʉWuö"Œlùì[åEZº²ŒÉó`mh“œTEsà]x‚Å/¬D1Á×|Ê:Õ硎׬¹¥ ÈRÎ+Ϧ´´7lÙo�߇OuÁ¤£Ö”ÑwTcò¥ëƒªK™ÜS×é7ÑGØýôŸwÿ ¸oñIºý(¥á\x?Ý}¯¾ù’Ï …÷Ç•߇ žŸãb#x h°ÏÖÀ+¯¿F6”Ï×b™óÚp‰ [!§ÿS`_X°?Á?- ÌÕ'ü,_=”  "-¥X{È.¦tÿñø8ÜËsúÊòÖª·ú<=»ûpó´ ÀjGpuï7ahH8ŸsL˜0ã€=„ÇcËæm˜0v<½ø‚üÚKw4{³žæzÖÄÄ$ÊW ¤¼„ k9Ù¥¬èÓ‰”‰?÷ßsïeÕ8sæŒnÚQ†XQžý÷ýøä³Ñ,ïÀ+Ä£+Q|uqJfþ•E´í÷;¶#lhÈ•_ý¦ÏáL‚ëèî†ûW÷A.È*i¡D/L¨î Ú]¹T¨uÈÚ[šMŒÜ}¤äñ�x¾ópuV^ìªïƒõÅ7?–@V´ÞûØ‹dQ ’ÏvT¸À*Vôùº­ò•@V~Oë¶P‰ƒ}Œ§« ? ÁE%Õˆ 8¤™WüëcïßÍþŸgÝßüw}l>yDR—PÓÿ»j§ªÍõj]f ^ °Šu‹¤Àz½ZùÆ­ÇÌÌBJüôðôfâ,ûC¥gеU°ŠRLû‹£GÏH’Ád[h�NUŽPJí+Š-Ç�Á~~¼ï_z~R|÷ÿ�ÚòP¬¢ P‘¨)ÆTõ~N€Æãë�VR=æüÿþÇŸŽ§g½ãÏV2Ðn}—>¯ô]lø¬/TNÌ:DJÒ@í-«DP¯Z°ŠÏâ¼öÅ«03´£Ò‡©˜¥*ªø[µ€ dý[î·³í Fii1Rô7+"sG0y”%þfM Ú]U üO´€Š×ÿÄ]ç�¨#ˆ£ÉÀ¥`yüÞrôè1¬[·‹-”~*<-—ßq'%UéççáLfV��´õh!¿¤ôìÔ&ˆhÁÀ¶K;)¤žî¨c7ÓÖ Í�»þè°hm‘ÃÊÖé«ó[V±ggú»-²eË1qê<‰%ç0úú†kLMp·LbÐEE È#)o¸�ûÒÒ­ úÔø{{ ¹ �@C4´Ôz�á3¦ãÈ?Ÿ'èØ‡.WWh44(ÿºô%ì26ÂAÈè½YˆÚÞSõÍaèæ�ïS² ÍÔtã� 2™ a¤£�ô”«â2Ͼ�Ô´lzðU3(mŒ»î¹‹ÉÅ((«Æðˆ‘ F`€N'äP~WN°¯ƒŒ¶ó”—¤ì£Hwgx0Ž µú–6Ì›w+ª);lmaŒr‚Áa§�"¿ ‡Ôt±03ù²ú*Á+VåïÀÖè&ƒý÷ì¬,ÈRu¤¤h:ÚÚº±òÙ·(œ/¬…ùù”-ÅJݶ5U"vÂlJöž$“¯Š@÷x‚åÎ ‘µgÏ ­NÌA?Ò|èâæÖ|øe#¿”؆-ò|ôþ‡”6—˜.ç““�Ÿ—‹É“'àLêœ?—ˆ·.¦×䜋¿?²w7\ †»ZÈPB]}<,8@Œõ·!ƒÕ ÖNnŸìQJpU Ú8šu–ÀŠ Œ l•Ó÷2–rªZÇIëK¢ s\½}œQÖ¹�Àò-ð†Ã$zåŠ`XGmôÈΜâî&É1 Ð3µ_ÖÌò—ä™5hÏ74‡~^¦´Þ®a£pßKïôŠ¡ €[ùøÂÔ7@�‹�¸±§?ìÇO–‚ Š ÃÅä± qÌÄT®b*ØhÊòÄÊË_ù^<÷ˆßˆ’ÎŒuƒâ�~"’ô¹IuËzSÆ9  jz–èélÅkLììœèƒšFÖöIt“é>b¥O­�_Z͉\øz¸c¨¯iº8x<Ë–/%;܈€é¼ûÊ‹d_NÀq`}ð¡¥’4æÖÏÞƒ™…5A4k´ÐóØ™rÛ>þaØM_ä2óO69Å•8NI`ÿ¡á="÷Ð ÕÕÝ=ýš —•}™ ÉÖË&�µëÈYœ½@YaÊlΘ1j”åŽ6”bþ½AþÞÒËž`H>÷©€çeâùl<÷ü‹”Ö–V-µn”ä$’m:‘€m ™|<^L¼hmîES>� ‚t¡QôN�†]MuužK¦Ÿ®>%†Ûé«jI�N2¶~<K²sÇNCÙî`ÒÌŠަIì’ðãÑs¼>²æT1yÄ n_F×b‚2�¨(Î :AqXñ�ÇW0aÁQz51A¤¦S÷<ò8Ãðq�– E¤¿fß|¶Úk!!%&ôµ× ¦�ÉuìÛÙ'´ôj" 0˜Û]*ý~ô¨Q3åfþv.²â±/lÆÌÙ3ÈjTg¿¯�C»@[G=3C/Öëjo6}ô6ÓÃ8†ýù™¤³”7žrµÅ~uÞ–Í‘wáÃc¥e rs�Ÿvž‰eì Í‹gjŒ'Þþh-÷=þ)À˜™žŠPÊŠ÷�½)ú3}]=,\|'·¡²�qætœÄä,h;SShhYQ²œ÷>�äåᯩž�ÍÍÐé§ÚÞʮژ°ïè�FW&͘ƒ°¨a8|2…ô®ké!²&Ü»¨û0røpÔ¶ôÁòè.<ÕY‹=EuE&õƒ�ÔÙƒ~+}ö[”#¶ÑF§Ž)B  Kpq^{ NìÝ�S;ž·îèIˆƒ[Â!YVÌDôêÀùá÷P||½L{qº¸`åÈÄM88Ù@�IP¹5ìÃ|}ù}ï'ðs5G}U£y®¶R ‡×ƒ¯±:&·U"58rg3¸O��, ¹wU‘,�…¼‡íÞ½me¸ýŽÛ%°.:v4 ß΄ƒ»—ð~}Û$&çàÎÛž-ÀªI)Q†E$X8991‰Çãc‡Ã�ãTáU|e‰;{£îyÑL¾Éf"Ïã+Dªóúr¦÷Tö­W–Bú¤'‘-z<�^§Þ�T¸°¡:G.%nëðú§[™P.±d•wôè è’­:vô(iö©ÄDÊùë’™©K«pžTjê¼^)×6TW«XX0ZÃBCÆlÝNIr°*ƒ¬£b&ᎅËA õj«r�”ß—Q†¹œ¯_Y33Ò¨|qíàù°È(鸉õ V²â¥¼!+_C�ý Ÿ9Ž9ºa<ýßDQ0X•—½ÖûÉcc.2YÐê@ÐúJfë•¿�8~„°*Ï�t`óEÿüÀ²;ÐÉ>*œl¯«ÁTü]íû=/�þºËï^ˆ›‹¸VQH9Öña§ndŒì¯@\k?UóU-ð¿Ð/°žÉºæLÜóþSw§”V)¢D0©ê÷=Km §jŒ3•%>!™‰QCöF¬Ší(OE¢¦HÒI¿õ"ÆAbì$’˜ÅúrÐóê{w.% 6¶×¾+ÿjÅ�0žQ‚¨ðŸÇ3ĶE÷ Áb ²b,'ÎIeàw` #�ÛÈ*”�DlV&–ÊÚ<"ùüÞªx¨Šªþn- YÿnGüì¯Xëjaô Œ¢°ÙÿÈ*7|¹‘2_é”1ô—¶/2�DQÜ�¤ªªPµÀ_®þÖôô=r~~×½ý{i §'“qÝgÏž¥D櫘0áR`ÞÅÅù"À*~¬«#xôp).£¤d�$£(몃™©b"CÉfµÄ÷ññ°"�RGÆT�ߘ¸ˆÛï#°á)�«¿°J¹Žÿ¸ª °Z;Ú"šADÁ„›wó�‰�)S&2èhM9Ax1`ûȽ·a£`G=‚¨Ü´Ðì €UTñÜÜE(‰…&Ö Z;pûìX‰é¤¾íuucbm Î9Zâ“owÀ‡@ˆë@µÖ£„ ÜÞž>tvõ#þðì=q¦”SŒô7¢¿« Oæá<%›„_`Ròiè“�9"<ù„¾?pš §.tõ 1ÈVFÆO™bôÍs±�eV68@|gJˆ^YHœ°S/r¸L$)¾Ë Ïô_«`O Û7ßÙU}øøã/‘Ÿ_‚O¾XCùÊpÄ’ )X¬»~ØŒÓÌŒ�;íM”­‹É”bI= ‚Ž&&–d±º°6Aò¯×DO̧¼¶@fj">ûâc|»þs2edˆ&øØLö§1ÙÆé§P²*�r�I)1kç`‡šúL97/ºSQUi*6ëÌ$&¥Á3€’—ôgk#8=iˆ»–ûEOD Ù…µ~å]Z(©®Å‰úN‘�æÖÞ‚˜“™³©­YÍá·-†YÁ{îA5Y´¾›ÖÂ|ôxl<|w.YH ¬‘̵I0b`^ˆ €U|Š©hÞ‘aFOFÁ dÀüTFŠ$³h¸ö]È?yïbÛ U åçjت`«Šã¥X¯X·,U¼Ë^€M!Hik{‰%ÓŠßyôtÁÅSÒö °X—�ì¬Ô+×ÕFÐè�Ó‰²Aõ]°^ô06núC†ãÀ‘#ØòÕçˆ9 _ù\É”Óh"“jÞzùUÔµ÷"· �²·Ÿ‘�M_¨ð($ž>…Í›·bËÆ È¢ÄZIa1~ò9DFF|°Æàà0‚—9 ,fü$Œ§”^Pzšˆ¥\+0ÌÈ9ô't ÓT‡,ùû|„²¬uˆˆˆÂ…”3p"»þÕ7V!ˆŒô±d�ÉḺ{ï.ž¯¶X¼ô.2FpèÐ1òdµòøt5× »¬ƒÉï$CséâÛpä»/%iÐÉô$ö"eIسƒ‡†bÊäi¨¯ª„AyQɍЧO§©¥=V¯z ..ö8yêÙ¹¡ødÃ6̽u ŽÜ�”ø£è (8ØÅE…LV¡w5åi#<-!3wCrFeÀ33¦ÏD!¨?lùšI#ôì4D]3�¡�>òªÚ1fT,YÞV”;­Fc=ÏC55xÒ·qöŒ(aýÊ[oJ«¨Ÿ)YÅÝj2‚«ö’¤µdþËÁþ0$Ðg`jއ–/‡ß|™¾;41,v–Þóý_Ýqý»¦“}8$rÎùIû¾GBj:êÈ67ÒÂ^ÿë¾Ø‚QÁ‘‘p¡|ø‰3I8w³çÌÃýw.d?Ù‰¯>ý £&ŽÕºXüB"`i瀠¶íXÅÊšûµcJÙ‹R\RŠo(=eêTùyQu G“r¤¤¡œ”DÄ%¤PÒÚ–ÉSP•š‰褯ª¸ðÒÎ¥bÂäÉȦ²�™ª}”£5¡llO“\òœž1:Nîü�ìÔÔ‘[AÉrM& t‘5Ûß×M¹ó^$Przîwã­?ÅD®«˜�Ìï¶lEeS7<ÛªñFeFז½“}wMÆ×B&§/7ƒuâºû QULpÔ„²¸Õèìi h­‰ú¬4Ó+—~âüíüahFéç3G°ñD:RíƒðÒKO`÷¶¯qèã—‘L‚ZÊËêæ%Ey{»q|ÿq”Ö7¼r†!þÚºFÔ7u¢¹£�~Áèá~&oìòHÛ³ 1eEp"éOu�AÞCÑ;A¦öãìÑ2á¹½7ϘÄöš"Ie›˜cÕÊŨ*/£§¯.7ÀërØÄ±hç©J‹_‰Á*öOQ«YEQ¬«V½Åäš™xë� xøÑ»àBPtÄÐ@L;šþÁ §b¿eššY?{,¾k†{»�Þƒ½é 8}p7N�˧uÀûѸ˜êÙL{QF�Æ º¦Ýóü)'.¼ŒSÉÀ¸*û(‚¬Ò븚tpHå~ ^�bÏ>ÿ×ÖW_zû÷Ää)Ó~u“WXÅ�Ä=ÂaÈp Ÿ½�ÉmvÒëWWö põ×Ö_øùϾZFåƒk¬Š…ÈúŸ*VLõg¿(¦×*"PÞÕÚ*YT(«G\kyÕ|U ¨Zà?×Uµu7âçà×�®‘¥ô/À*ê$ÖªÝ(—¨Ió™ìÂäÔŸ<Òo½÷ )ÑÈ�’ü7ªˆ{‰òøçFmçÏ\¯ØŸß²O`}øÁçpÛí¶'תã;®Á*>;núòË«¬Šß €µâÍ¥d_¡<$Æ�ÂH€¾Êc}Å8OÁ¼ãÕfÊ‹±¨WU«¢EUÓ¿[ ¨@Ö¿Û¿û+¬€UÑtÖ4†/Q~ëÍOñ[ÕTÕª¸¾-°zÕ@ÐWÈþÝK }Ä,­Ìl1¿îM!¼Ó~K©¬È„ ¢L믕jzeY0p­OŸ¹ºÊÈÛºwø*ª«ÈÈ¡wÙ=Ç-(£KàÀ§<”Ê ùsɯmçÿû}ÚÙDÚóüƒ.gN­|øQ `ëo®­@5%�½¼½%ð!4À‡ì8+JH.c 8Qz¾þT&~Š@·¢^9dÞléÕ°²t0ðNé\5BlídoŬ¢ TÑc2…~¦3Æ�¢?_+Éfê³2‚�7mkÓ! ÓK`W�~ˆúXpó"tp}Ô§­"�ÔÀ ¶8|Æ&FÈÌ'Ô†–6ÐF oðÐ0•VÀ‡ò � …d‡¸Œ&®Ë¦çÏÁœÌRôwà}~cÊ+ êψ7â €]g?Œà¦<èRì—˜ŠìW#²ýŒ� ÙÒ(‚)>jëªpüÄ^’”Ý 6È�u.ÓæÝAyÇ�“< K0Ô„µ¢È¸O`eÛÖo¤iƒœ,§C_cùÒÇðÍçŸ %ù$AÚ%ø6.,úú(`»5ut`ƬEd†å�Õ¨GÉêhxøH mµ>46µðš¹œ¬©)£l.Ì8oÁò»0~Ìp¨Ñ×0‡šsïùþðü¸ a1c°m÷nJG£lh­ßöʗ˜š"›Z᳚Bo×ÌC� 1øØ~©î½”>¡OЈކ'Š›QVÛDv[¨ô[Ð*-øÓ?¬S¾Z¦â% ¹d­Ù‡CŸà…BŠ÷ZªbùBz¨Šc¦ °ÖÑTO ?JåjlÖ—þõT’ÑäN¹î¢‡n—|‚Ä@ZlOdZ‹¬qÎVoZ'�‚M[D€ÜwÞB¥5ó|#ÀZDpØ/„¬Ç°(|¹îsJ7—˜ ?7ghôv ›¬Õ#ÇÓc’€O�*\éãØ‚.îçëÏ?‰³…¹Xóá:éšGF™³³3<ÌÐÞÜD¯d4ó‚1Òï…=<Ó/¤cãúϰƒ×î£=9P\�‘&À ÷¶i^øóo¢Ž ¿!å…mÈ0äæ)Ézö$·$“ÌÖÆžj9¾Þ°5M­<'&àð¾Ý¢dyÙËV¦YûÂ+Ö„ â‚›f`.“.\ âqJG¯ýí;waÒ5€ˆý?|…ðØÉ�Ô,oDAb”–Pù%|¿õ{4´ñwµ¤lu+>[· ÁdöçæePR»„ûyòÖ^„ Áù”d,!(p.-ƒ‡ _Ï C¾–V6aòÄÉ”7wA#Úe%Å8µû4N|�òs‡«_{ödãz°2hhZSz¹³ß�'}˜ýœÙ¾â¥\¶SÆWKG3¯1 ŒÍaãäuÊÍFx;âž•ÏS.ΆÆfðe?ÚÊ>L“ÉIô¤LÞñ5}ê(¥Og3½{£É<�ŽŠ†“·?zûû1iút¸ùù¤9õ™ì³ñ³5d/§ãÈ�¨â5¶òé§)±÷sI2+ö5ÓfÝ$£Ã¢~=h¹úƒ·ÑÛÛ�Rfø;0yF”wÞ]Ã~¸÷eÅõÑLæ¯ý_uL­é7l}Â¥]mMhlí�ž©ŠòóàJ€eùYiýâŸe_å5Ð¥|°X•‹YO7¯)9ÚxŒäõ0� —‚ò¾^ƒQ_Fé|á1n­ƒ´¬s�7¶ÒÏ“ ©F+tyüJr‹ánN?Uc²üyœ›x,‹(3ØÈs780ˆë¢d5½z…¨ =O; §eæðútB›\޲Âø«uaÿ‘#hdÂU¸¼öAaø,«òøÃè ‡²wè(TäÃÓj4f¥#…}@û={_\(o†‹½™çv ÚôÝTS¦j„ò^þ¾�òÝåõÍRŽø&‚ SBþ7ˆê#bFH™óOëºü—¿þ)#»ï¬Þƒ{—LF܉8ôP6Ö•>ç6f†db÷É,Yü~ž·�ÿ9R¬þƒÐAuеŸ¶ÓÊ'_§wëXÖk ¡èjµøú¹;QB6¸Ï¥÷ß|ðfΜyµEoȼÒâB>WèÑoÖŽ‰2!×edýO–N^&ò“GP½ñ ˜D�üOVåwmû—Ö�] Œ V’xŽPU ¨Z࿳}=ÿ;+v�Z)3X‹p˜ˆ‡ï^¬ø(¬}5p´tqžêÍõkÁ`ý5€Ul-"t(æLÿmª.b«3*X«b¼§`ØŠ{‰Ý£Ï_Ü ±¼XîzK_Ü€ê�ªþB- YÿBëZUm>yD |)X•" ¦*7¦”ÖÜ!qøó Î�Ù²j­ªPµÀÕZ ”Œ#À:Ð2º”tp¸]­½®÷¼b²ËŒäU‚c¿`Ë[YY¥ ˆ.Î&'Ñï yégÐÓÝKcØäbnâ!øUC+/¹Æöl´?¹ÿ?ñºdÕØ±ûkz…À˜žx»w�Àko¾�VúfN$#FxµŠbE/["(o«S’/1‰¤/~ú×H/¹ææføÕ—Â,ŸbJ4j2±q€�†ì².àû‰ó X´£®ª^ö0svEUY7Ùz#à S¯�XAí”vŒ€–ž)Ì­,‘@æZÆ…L4‘5$0IçRÈÆ²�7åe‰D ȇáî»î…%ýg“Îf1˜¯)±«ºè¥Ö‹Êçi=ŠÁÍò"YW·‰ˆÅ K€­=Dc0åýQ~¯Èró¸*^¢UÁ€;rh ߨ.Ì$ã'#FN!ûŽ,¥ô}Šäã;�›žg”åbÝÚÕp4×AÑ…3¡Änaz"ÙIxù½õ0³·G6Á z£ºyºü$–Ö§†Ø‘ã%/ÏÇŽÃ…�o{ÀËs3Q%oÃü…ó0õä> „§ÙŒÖddqÎKC½7kÉÔ¹óõ�PM@+35 ­§� rÁÝ0 z‡­µ=]½Èª< ßû—€™®’‹ ëñú”Ü�%C¬�lVQÌ()4d(l¶þßôdŒ¼ÿ‘‹ŒOe–¨XVÊ Ž?.�˜ÊÏvîÞƒ%‰[E¢—šŠ÷ y§+©ÊrÎbÜ=a"’KÓáVÛ$±«Å¶D€î•X3ˆžî.  Å±×Ÿ·ÈDÈW‰:½÷=~é*Þâ%êñØÛ«$ êÂù|»ö#éü·wq#˜d‚ž¾~ø4[÷åZžžxëÕ·qôp¼(�æÎWc]†„C-%˜7­ýóѧU[­Lè³wrÁ`ŸÁd'£°(�~º!dòåà™½KÑ�,~?Êmö0¹ }±“ÛÁX¼`1ãlvPüçµ%Ú©ˆÀsËæur!Ÿh™.Ô[Ë ìzA‹Àþ[¯¾L_Ë X»v-Õ0úƒÞDðËcÆNÄ¢%˰×÷pus'³®’,ÑSx套è Àý àg‰ï¶näù}�c—,»çÒö¯xwЬÌ.²Õ‡’ X¬&zd{�a=5ÄÙá›-ß`éòå8›’‚µ”J¿uLv:‰Â’J¼ôÌ3XGߨì¬Lž³åˆE¶zÙ�µôoc‚„&pײ¥ðöö’¶ÜÒÒBМ2n®0âõ0ûÖÛQU�- &—úrá¥8œÀ¤˜*¬gÎ`Ҙɸ뾻ìI¯+v‰ày!z‹Ò!£Ÿ³CÐ&Y˜ÁË×—}h0¾ûv=RÈFíhmåxs%“ÇI_?q‚Œè@<ùøML<…íßoA\ÜiìÛµiéYxìÑ')]ߊ_ú'Ö¯[Ç$&úP^m¨ß ˜šó:B L ævÈ$�;z–/¹�ŒJJ�wªaóŽc¨aRŬÑC0nÚ|i[ë>}�S5øÜ2SOÃP¦‰#§1~â8P±�ׯ:lß³Sº?�éêJpÛ•2ÌjÝMì‡Ê ÑßÅi9ÜEô¹ì�’”^«J»¸/¿å�ÏnSg¡YÇáC‘˜Qˆ'}Û7|I&-™­d׺ZyÀÔ€òñôK­êV‡ðüÔ$ËrÌèqø÷›oãý>„&SnlŒ4Ƞ֑ج2&W †lâNGGcóÁˆ!ËÒÄÜ:”Ãm‘â¾_å¹ Ÿ�¿FÛÿ±w€U\ksâîîž@B°àîEZZ¤@K½”5j�*u¡J�RЇ¢ š„$$ĉ»»Û?gæ -}-ï¯Ü7»wõì·»gïžùf†÷»]ï¾°>´.LF‰ŽŽ�Aä Âô W3㊆s' •GM‚­4ÕÕÐËO’÷VSV’ÀÕÎë¥ÐË0gr„ c,—æᜠÊMÿœ,4€* Ã:–úf'<ÝäUn{hf¢‡¤å „ÿyLȺ5ÐRe{a‰å &âJä,7[¶nÁû~€Ù3gul?›ÌèõŸ|‰»çÍÆ¼9S)±ÈD5V½?=Ë…÷øÖïvIß-øLß¼c§´ž%Sˆä‚O¾ùŽ÷û¬Yó¢$.Ë�wlüŽ=°ÑW.ã¹—_ÿÝ{‰Ž¼ µ j7¤�÷~c…e÷/•¤Ž³÷÷”:‚¬Xµ{#‚(3ŒÉ“&üžMü%—Ïd¹c¼��ô—¬¦¢RŠ("ð‰ÀÚÛt.mʵLÈ*W€¬�ƒòïvò3CN¢îœ„+ž)�ßÅòr’°HüóE�s ë?à싎/!W~!ø¶=µþ‡ýÿz¥ì8Í¥D— e;—מ¹Î=Èf0íxêìþé[‘�+2q[£#áL¯%: 6þ�(E|”þ‹ZޅDZ+ÜËÊ5O Ø�*Ry- ×0rurD}Y! Õ5)ó™AùØ:�‘”ºôrvA•¢äRrÖ ¤ÇÉöŒ£ïàŽ“§PHfW*“ \W< ==]‰ì¾ë„”%,^t;¬bÏ<ó4,,,¤�ø.JLZå�^�¯ñ2œÎ¸Xßµe�Ub Î¹EÖŽ0Ô2�ö…3 �Ïã.dÇ2®©Ñ¡¸tñ¥PÛKÛ?]BF)ýI‹(Þ\>p¨¦–�3™[!(-)A¿þý¥eJŠóQVW‚?O¨Q>ôèáýL‚ÑÇüE+¤ù—/œÅ¶ÍŸs ­¸r’~´*ðrÐÆÌù‹ÈîóBzËö"ÓÕÑÑMuõ¸0yÖ<‚Y}áâà†�‡ø»Ë'φàÀÑã˜9u:zz¶w¤W:v`/ÆN¾V¶¾8|Œ¬²ê|ìÞ¶ãFIû¯£o¢`ãÊÞA¦mmIMöòujÈ,{°Š2fܘóz6b$<Éô$&þDÙA 0&* î[޲’Rú1^Æ›lû„Ïæ�¡Ãq˜RÖ®nˆ'S4€^ˆÖoU CI^¿ŽÙ`Dð'/¿W#CÈ(´ây¶ÄGï¾A@%†�.ô9ª�6™�ÇO�¡‡« tÔZ ©kA\VéùeÐà½\ž�1#‡":!‰ÏSlüðmJS�…>%´=½}áKïÍACGBŸ X5Ûp7¿®L}Q!°Êå“?Äœ93°œ…..öôöÇúÏ?”fW!'�’ÍIÑP&;ñÐÞMð$¨®J€NU‡ á¼­�LÿÀ=›?Æá#'1ÔV ý¦-¤÷k6®›÷1=ÆWxã&&%¡ÿ�øjçNäT”àYú¾ÊÅ’2¦ã&O£m¬mºæcÑ»±sÓP®Îù…Ú�8†|W_|ü–®X*mÆ�lÁAAƒè!Ö~m‹‰¤�:m6eé£mì@6®#ÎR–úÁeK`ɤJ{¶ËFÖ=~¢°Šõú€/¥¼Nk%´KÞë™l·Ô‰ê•§DRÙƒLEwXè7 £ «Ÿ~“'Oa»a#V'óSY©‰¨,Í�«[§ñ™˜ËD›&¸R"?‡’å­Ueô6µ¢Wn-êU (¿Û‚2ÃàZ_Ž ‚™}˳È\eÊËm– 3ì²t…nàùf8E ÿ?k_ ;ú:™ü©¨âs$ƒ^ÇôOWÑ6@6Û«,>gžxø!D$&’Ý ‚Mô¿.!;´¸¤yôú®¥d} ïùuo­ƒÁ{¯ž=ÑÖÖB™îñLþá5=h0Ü<<0û®»˜àÓÂ$¡4ðÙ¶bù#P&‹]÷­Õ0È¡ï0ý¼l 25Åï€6;ÃêˆP¥d{Mc^~<çKF¬7°¾ýÑ?c [ýŸY j*ÂÏW­ËâÀ”‹ðO>v6ã†ö“'IÃV²šÅ3Šÿo«K°Þ\SâÛÔĘþÉý»¬b¹ƒÇNH »}ü}¤ã²µµ"ÀÚ ùõ ÐSU£çzï3�5êZ,�ßœ1œ�³a1ÈČڊÊFO“@Vy¿Éqˆ¾tî^ò¤?}(’Äï¾"*�˜™·?Óow'šZ:TËÐåñþ|nwÝÛYNö¥ý½ÒɬNé{¯ dÕRLÚö=zÓšáFrÇíì÷¹Ì›o¯£òÇyJuºíÝÊϹÛ^A± "Š("ð'DÀ@×H°þ qü_o¢ý™ÑÊ÷è¶*F¿´”‘ë$“DRÁÝ•¯6‚ÞT-QEþ P€¬ó³,²ñE†‰Ì&鎅p'ñ ¥óØòÂÄ´]Êï×ö•›•ÁLù®æ¿¶ü_yž3±oXE}À*>Š¢ˆ€"w>5¥™¸~æ3˜¹Ý~'Ã�¯ÕïÛCA =‚^´9ß; °†„\ÀÖí;�wYªª]¢ø�‰":ÚD146¦ŸŸ‹4”&ÜÆG;˜™#™Ò�wJÉ€Ñl­Eƒº>|L  ’œÜ±•À™ p¥ d°eüOAÖŽ Ü4bbb�ýF‘½Ó€rJ;Ò‹P]Ýnka"Il^%`wüà´(«"EMÞæ[Pz¢¤0È!€g±oÒµµ5�:XiZÛy£Ž²§Wr–Ò—1QM--Р4ª‘r³ �•_LùHmÊhúãìþ­Ðk©FJQ5eDûQ˜Ìš)S¹L9™–úôËke¼ÆÁÊÞ •µMxîñû¤eÒJ[PTBÖ°¹ªë4èg�!Çâ*\£Ç�€9ão˜›�f[ÿº I ¶säßò´÷Ü‚PLÖ­!;’=GŽû0(–{ûóûádïÝ hõ•WÇø “èýiE€æìÝÿ#²G'¤’µw„ò¡ƒPÛÔ #+3$g^§t¨)<FàðÞ ˆMχ«©>;ªµé_iL_×Hœ£|«*½=”U Mæ©’»†RÎYûÛo˜”–Sáîæ¨i0n ‚Ï@ŸŒÞ[•2˜Eñ23�Rl4Y[힦Nd`û½³‰¢9Ö¼ðÁ™¼ŽM‚…âûÝ;ð}b(‹Þ§"ˆàLÑÒ9’·�ˆÙ~{/¼OÿÄ& U$Hׯ«Â 2òÌÞ{ –”x KQ„Ôò­J=aG�Ýevay1”×­•¦¥»x`e”—­xôÆ2ír�â7¢�w:´ç;”R67èÑç4còó5¿©®GaÒÒDz…sñÒsÏ!£°­m­¾}ÑL¹Þ'ß~MCGcgq£¦�…ýH39½–rºv=sÕLˆHЇ““Μ9G¦çhì322$3®�,ä�(…é„Äkô¬4Ѐ.%RCßLG2eûâ:×-))DÔ•hd¥ÅSÖÙ‹ ãºcß~ƒ%傸„DÉ/xü˜ö¼ûY§I”¾eýl¼‰’ǶD¥©®.Vðóë�º+¡H�?¥TË(bñkÌáákFPãæòÔêǰjõ‹d©[à»í[%ß×Ñ£Gá‡]û$@ÔˆŒ=#þ.¾{é¿ °vÞnôÕp2n­aïà(MÎÉ!ÐFÝ‘dÎ^½D¥/`¬£GÖ'Á1ªðzo¢w¥©µ=,”p5¹Œ`b^¥ÿcFR î^²œlâR2}K‘DÏÚ&Ž%pÜ]9rž ñiVÖo§…£Â®`å£�"Ÿ÷_nf¥šÝPH¹çñã'!Žíœ&A,K[f¿;¸¢wßá“L0ôOpÛ'Nœàu`"1Y'Ò:?={.Äãî{JJ­”FïM™d¹�ÏŠ ç0‚sŽ=ÅG””ø(&”䈵”•ÀÑzDb¶Nš¿¬czç²æe€UžÞ`•§‰aŸ/èu@Öêð!ý LœM™`a\Re•ý˜Ü¡Mà»TЉРôq5Þÿ|#*Jx?´4BÝØ¥…åP¢/w%«G Ž'z…ç!ñEÊPWU‡et““±bÅCˆÏÈ£Ìu#Ÿ¥”ð-#h™ƒ´ì<\‹O†uÿ9h®¥_°J%œÉ²£GvAAF^g¢B ôuõÐ@/ðÂgøwÆZd7¶Â³µ¯þ ž>~"XóÊ˯¢EUz ­0u2„«·2Ó©¶©Pо•÷wÒ:¤Ñ£[µô¦.åý¨A©m}|ñù'p%ˆZPXˆ%‹!€ì÷™d! ÁÕ¨$É?yõKñÔêç)¥í@Fª**N¥Š‚ý›OA‹ql™» 5UšJîÄ3R|D›éêæ¯7>ît„‚™ÚB�îg UÌ´å5s׌™]ÖN+u;úì‹ï¡YI Ï<8·ÛùJÝ€¹Ý.ø_NTVQÁ¤1#%€µ˜ñ¨åó¨EM %ô¯5Q×€¯�§°ŠÍû{{!=xæÎ˜„Q“f’�îŽEKÚX:ï¾¢´ˆ¬as‰9ÜyúŸ=|ê‚OŸÀÐ]ŸE¿µMªÜ)€Uì[Y»«GxD$&Ìœ�Kw7› 8ßHRø\æ×ÖWß|ffæ|îÿòùÐí†ÿì‰ì{Üvöö–ÛSD@Eþ’È¢�Alü*!µ+³ü%+ù«”ZkU($‰R²só/¨…ª¦HR¾•TptÌ<ùÜ£ìÓŸïh·N:•v ø£ˆÀ?  �õo~«.žéðB ÷ݧÿ§G””/¬·²ž9z�ÙѰf'ß?µ(¬ÿÔ3«8®¿bÔµ þökä…pón—šKŒºLFgL){«âãÓŸ}ö|ðþ[-Òíô ²…ÈJÛ½{·Ä~Çï)™™Yô]Ë‚ž–2ÙCv”n´ëvu´þÞr`ßaz™z¢µ¹JdŽÔÕ–³W[ ‡Ò ¢÷‚È&% ^³ŽË‡££ãXs²Óøœ*gÇñíßÊ*šÈ/¥—äÅpÔT0³p&8Z_z!j¨¨#6&±É©è5v ‚^zêv?{vÆÓÓ1¹(ymMЧD¯å=Ót ±sUIµ ªìY/«¨FXF&fOŸDÙâRX[™båÃsñÞ‡›QW’7{ ¨Ó«Ï�çTHj†GÄÁ“ bdÔyT4h£_¿þ”öÁq2A³2‹AÏÀ²º|ô ‹Ód0M˜81ñ17Е¬Y-X›pí‰òÒBi[À—,c·Ê’ `ÔP‚$1+†ò´vèzÐ7wTå:éY*˜“B:¨´wÙ&øäðuË'ô7ÕÆ]sÚ} »»NRâ¢q‰ì½JÊΛ} t5`E¯Ås”ã]0!ªY'K+W4—gàØiO¬#sp ?�,z ž ¹„|úµÎ™8…r„&p~w ”éêqQÊÄUe'¶è´o&KdNé4c,tÑDéÍ_+Òµªk:ÚÄï­þkÞ “äþ² KÉ‚�ÓÓÛŸò‚30¨åù¬ìȺuGsN–ôò)ö+öá[’‹*iæÎX´ìÌZùvQ:XãÜIz}F¦®ª+!ܹ~¾¾?ƒÓòt *hÖ«øx̺ûg€µµz¼¨_ÍzlEDk46¨áÌÉð5W9ß�ìÉ$zøš¨²“¿å-Úh£œh"“b¯FÂßÝ•×KoDqü¾9“ˆ�ÃÀQÓa¦^OÀ\ Ú¦6’Ì´:Y¼”QþaÿvJÿºaÆŒ»1ïÞ¥P&¬œÀÌT2ÑÇðì„ aãPG RU‚½d°úa™Õm±(1Ëä gJJß»x1_Èé½H)hQöï߃Óg‚‘z£‡Á•~„íE‰I øòË xú©ÇÑÚÔÈ6rYš6˜8}>4tM¡íâ)ÅTfYËLë›YÂb{¢Ã »ébÞ•+áØA†e|B¼ê81±$6*TJ–صk'æÎ]€§VÍE¿A£ajj‰‡Þ¢�r1,¬zà�wÖ´ºŽf‚ô×é9¹wÿA¬\þ@ÖspÈa|ÀŽ{¿>\Ö†Û¶†�o/±KìÛû#F�Ë—baçH©P¶O=ý4R²ó‘AÀòBè5h)5`,Áš¤¤H²X󙨡 _OG–VâéÕ«è�Êãª(Fßþ¿LJ2`äsÏ<Å3ô ”öyóŸ€¾�”£·ƒ‹‡‡Ê>~íõs$ Õ’íš~'#>ÇÄÇ‹ÒУF�–˜¬ò6‡ŽO)òÞ”ñ6Ç!Ê*;D3!`!Êן~B`Ú† kû9—Vy]-m]úœþòù%X­¢ìÜø%b)ÏêÕ«ý¹ŽÞßÂK5— ° ew­ô!C/(h`‡ßv$Ù‘y\ÿà¡ýh"À¸}ó&lþjv}õBÙ~fFãLDåî­FŒêXÿæ‘¶amŒ­2۾Υ–þµ­œ®ª¦�‚¢r©íò§ôÍE0foU ‹Kyεn5/¿÷!\ư]Ù±b…-ô‡ÕT¡š€2Þ\ÿ)²²rðá§›4j¨Ä¯5ÑÑ‘Öî6nëIÿn[W&·XJŸî–²Ìâs§Šh…ŠVOžëIÏ¿Ž¤™Ã!,‹þLIk&rõéÕ‹ÏçNò�%u&³Sù·ŠX=éýÿU¸ªXÿ¿¢¯Ø¯"Šüž„G_E.“C­©ÊòGJeU *+K ë â¹®W%›’»Äû½xVÊE̤¯[±X-h…´rùc €U˜bø��€dý›Ÿâ¤Yí/—"säײñïÔaº÷èy[,V±Ê“ý“Ö;cÅvPDàŸÁ`•Vq„`MŒº"·(��˜:uA‡î;ˆn± éqWHX d½ÕrI”·41m—Ä켌ƒƒ† ¢”ç€[¬�—¿Ýñh²ËbÈþ‹ˆŒ„ e@ãS®Cƒ¯N&ZÜ™˜+sL[þ0ââbþÔ}wWGщ«¡¡ÅÏ/ˆ›Ý-Þ1ÍÊÊC‡ ¡4dO´47ÁÏ߆” ¬§²`ÃEF^F?J¨Ú8ºIr¥2“Õ�À·oM�´‚¯ÆA£ Æ$ÑCµY*Î0 ä°ðÜ+ ?e —ZÙY,X¬?Æð øâë�ˆMKCuqYÆÑÐ6°‚™÷µê xï×h¬ÊÃh²SŸxâEJ “!ÓT�T²ƒ®§Ò³T)”å<r u-¸LpVK©µ%ÙÐ1wÀ°�½¿{/”)ëP[Þá¿jþäMñ2%VQqêÖÕ�ZÛ1"Žñ0�׸’,¬xàI2客±–~~ã&wY®ó—@Æ­GwL#K³°¼…lÝ&˜Ò£²ME‡è�©£M_N[Gè<+HËD/CôIσòž GÖØ&úî‘%–�±å…ÐÓU†Ù­mEd^`í\TJÊ0(3þ7Ö,c-$ô*1�õh‰Ò~þZ1öÉ7$€µóvŸ™¹µôãí`];“T|?AF��%e¨/_ŽBDt8šªË0¼¥ -”>5l¬§Lvc&ëeúE7�<ø˜ØD—RTÕH)LÐeH.fÖ×Õ¢Š@­–‘–¶|úñ§ÈÐÕA<Ùyš”oµsðFEE òŠ«Öa/UIì)úàã‹Ð·×2¢áȾ­˜@0,øØqÌ_Aß^)µaŠªêÈŠŠâT=u_}ûòÉ�=g.ÊÉ2¬)/@Qn:fÎ[‚wþó,�9s ÌÕ@IDATÄÄœ„_ïa>ÌÚbõ¡C'ðåÆp‘ÞÁ^dd�3žŒÓ>ð$ëÔÂÊ¥ÔCÃΓw?®Ræ·”É'OGZJ š˜=ÿ>²Uóé{zãÆO&(fÏöÍ›ÌUWlÞ¸�ôÎôö‘AØö�‰s!Ë«ÂöʼnÚ7ª@‰‰ªšpêÔ¾ò�¿‚ÝÔ‡¬Ãð°P<ôУdó`çwÛèsZ‚O¾øRb·zôðc∿´†Žž)ý{M±õû½<þ3h®«ÆÛï¯'ÓÏ‚½:~}ˆÉ=róæÞ s²ÛÈ*—ÐÐ0ìÝ·>ô42tîš7ŸÕ2}}™„ÑF–÷”—×@GO“mŽ&Ì) ®¤T-5uXliªÁ’¥Ók4#FŽ¡ôqטˆý¢°¬ ' `ÏŸ{—¼ë_ ¿"ˆA?ÜÞí¦¼Àõøkd—þ>F××”.!ë1%1–RÑÞ kdX˜°Ê k|ØY¶Oµô�5CvZl�~›Á b(>_þ%2�îÝj¬ìÚW^eòÁ­“<Äñ<õÔª€U|¿z5Šþ·y¨)mD ÛêÒZÞ[UÐaÌ-MQÅ„šbz?ëüµsöb2ËØr߹ŵPÒ¶$kU ô¯)̃™¶ê™4TS׈fÞãJdÚ;›ªÓo:ÞÞ.ÈN Ex"@ÈЬ(+á}Ü@9ØB(©kÁŠ>å…LØèíéÎd…¹Rↈ`�g2N1“Ϊêâ$Ôq©¦…l[x4vm“ÅñˆrØÀ�Lð1'SÝ· �í`ò)Ó|­²™ééhVUÆ ]5ÜsC+`N†“mZhe�µ”êȺíƒIãFã‘‹ÐJ2i-Y¨wSÂÖ„’¸�KN~Nœ;OW_øûœ'€-Ê“O>!ÅXøWŸˆ¿DõE¸/_ç¥�À”Ú"QD°&¸*ß›yl[ªk«‘·pjz"é¾· ÄvÊÕò—€{vN:¥ ÑDÆ®SëÂ.2^?³/”/éÃ穯—ºX;ÇÍã`=}.êÏßÏí~sK€Ñ‘^Àâss)¯k…Ÿµ†4yü¨a”Y&-˜xî�AèÉ|kàöæíÜ©ï—ïÐ?½«Nç}‰öQñ;@´“M �Ñ ‚…üwZ;Ï3þÿÆ`ýo*«XGEøŒÀ�ŸŽÑF%}|Ûÿ·U1ЧJ”‚Åú߆ï­'cb#âXüNë\Dâªü{­ótŸ"ÿÆ(@Ö¿ñY—¥‚ÀjýäËã#QT]EøgFàùG–I�¢Ã÷·Š`°þÀ*Öàê­ÖHúÞU•å€È%³Äš@S}Ópúà>|÷Ê*,~ú%I¢óVõëúuoaâ´©·ZäOŸnAö‘¦�>Nœ9I¶œÂB/R>Yêì0®§„_K]9�FJA–-›p�ŒÆ^þìòõ å”z¬‡% ` ;±—oå¹¢”$™ª�‹±;Þé£'VQ´´µaLÐú½·Þ%Y­_|ñ†ô’AVy݆y3 Ý Ãð¼"Ä•VзÄ:Z8x⢢caM¶ÐÕ¸,9AŸ5JgÓ /&þ:�RÐ Ô¥UJ(!(‘€‘stÍF4ýbZÔqˆ€l#™G½|)ѨOFr4Ø‘[W’m ôîÝ‘dK©²#ÝÉRÕÍdÕ“¥ÒùÑ×P�žC9Ê*¹ªê\ŸŽÝŒø™[¡®ÿÆ>¨ÌÍĹó‘NIÓvY:>†²ôž´§Ô²®�:6mÞ…!ý‡ACS�ŒTzùØXâû¶ÀÆÎ‰,+Có…ÝÊÊ |ÑÃÎp°µË°ÊN54�;S¦ÍÅȾ=aðÙP%(ÕVT"�¬]vxãK:={>üû·ÛºœÁ ’Ï‘A]3| øþ'©ã_ø�Šy¢ƒYâZLáG#²{£GáýٙݓPš��ÉfœPš�2²Bã’ |£47 c†SbyØ(\?|ÎKØüɥ؆]ºŒ�?Y�ß‹®.PVkù‚9�Ì™]Ÿ!9uGwïÄùK?¡ÿ€È#($~#²ˆ÷í"Mo]w{úì¦tm@ø¥+’/§ YÐW¯†aé¢Õ”¥ôANQ²ÓS‘W˜Cö_*t4•0zÌ(X�¹ÞLPFÜÂcqã×_š`žÁáËjOg'gzöœ‚ÒÊÅèEïÄ@V掄|‘^P„Ï¿X‡ã¾Ç´™÷A� ²Êûª¨•€ñ`òFlܲWèiK–jï#PGàÞ›R™Ù©é¸ÿ�‡±çØYL €&�*#mŒ½kŽ9HUúºRîÔÉÒ¯¼þß<>x/¾ò¦tnõ'eßNÔ½ù4Z·~Ù%+[þm-Î�QK£¦œ­ÃLü÷ß{‡¬Ì1³ñjD8&Ó6?/Wô¢b¢°fÍKÒîR®§aí«¯ÂËÃÙdXøÑ§(# ¨\SÊsA‰Iú+Z˜›ÂÏËsçßKö®ã<–òÈQRD�CÞ G÷}‡ßïÀ¼÷`úôiHŽŠC2,¿ýn;’“v.˜ÒÌ®”\AvzÒR ˜ŒÐŒšF ôp£ô7ýWØ· }‘Méa5š�¤ür3�'}î`˜¨4‰uH ¨=eöÜ[…Lšnem%1æå…ÀúÖš§Ñ‹u ;¾ÙÄYJ’Ÿ­¼LwÃA#Ø.� ןõ—Y¬b¹Þô8•Vñ=’RÉLPQQ¢ŒzLÌ Åü›‹ °F(:L¦ðËk_Æô)S$@SÈ =¸9”T¶!‹ó×JrbÖ ޼råWU)ËŸÍóXEÏÕ ª¤f3)ÈÔZ’Õ.¬l`\O–E%zyÒ7·´ºÊ¥¸BŸZßüWÍçš åÜõÝÉþ¶‚ƒ“”ª �SÙJïé«°Š ýElþæk„ÚNÀÛ)”­`ùýØ<Ü<¤íß ²†] ¡üqÆ�˜ ËË�+"ÚÎ< 2ð}yÎýÚØj‚¢âúѦ´x{icëÜJµˆ2”Óû¼•~ØêʰÛóA…•±†fŒº6ôȪÕâ=$Êž}{�•O5†^SµðÃ7%öEÓ¥àŠf´J  `¶ÞÌnmߨ¤…Ñóâ^w».À¬˜/œ¢]W--€É¡m@jR…rBlAñÅÛ;e€U¬#Àdù7ËâçŸÆ£³Æ‹ÍukKôíã/—þß‹X?ú|-&u[qF�j'&ý·Ûù7­'ÞƒÚAÕÖN ?' ‹XÈï¿b\ü¾‘ãˆïŠ¢ˆÀ¿= �õo|©`½�ÌôU¬㳨¨º"Šü“#PÈø‘nÍÜ»ùØ_|h%3U ìEÿ�ƒ;f''ÅãÅçžÄÄÉÓ;¦u볯$K*ü~Üñ="ÃÂÑ,ÀJJp.X¼˜Ò«ªPÑÔï¼Z—qÁ`½“ëÑ#ÇqìÈOèÛ¯O—ýZÐ×p`@/<óÄÓž²É¢óÄé“gqžÌJgk¨+µâ£ÍðÈ‹`�‹º'Wü"ƒ²Ëÿ‹/U5h¦´ –¦áo®mãL�ëÇNE>™bÎn=º]çz¶7ü²ö>†a#FJ•Övº p°Si6Ѓñ¹KH'3FÙ€l4m»-²*•Aú ª�̬lôí݃2¾Ð&øXNÖ‘e-XeåVe¸“ØF››^#®]>�vÚ·¡˜,fÁp3´ÖA =ýDgw.Áܶ–&¸ÛÑ/´¬)éiÜ™Kó)QÙ¬ SCzfÒð\J.Î5êarEzGme¹`´eî«h€R·A�°ÂÂ`ˆ ôÌÃŒ‹0ƒRªövHˆ #h×ÂNý,ÖÇ çË÷mG5Ùœ4Aìéd+1�JYßÁ£¦Ñ{²ƒGx“)I%¥J˪ ÑbR µfJÕ^:�æÊ ©5¾Í¼z‚�ðõ?G+�ÌÔZz檫ÈrÌr©¡\¯zE9Y£ í×;·h*q~\½Ù™^(M’ýîÅK¤èDŽŠˆ‚nz";ÏÓ¤ï‚Í$Ö‘ÁWÑ -�‹Îw±^�³3¼šê�k`s?zë¤X³æ94D &+êžgߺ­Û`8u2vš9iNž1�?ò’ã)ëëÊ ¿( Ó­´± f–xí?¯¡¥’RÓô2½kúHÊèžFÁÕ#ô´m {% ÑdÉÚ[#þêe˜¹ö`¼~!G"0fêHTVA]S—öïÃ|)ŽŽ.øúý5("ÓΈVß>Q–s[/Ä�mþéGaâ”ɰ0ÐFnI…”d 5gÏ¡´3Yl×ÏŸ¤î4P®5çàQ˜Ýý$®G��µ›?–-]�á#Æ‘­J TS…X»ömÄÓvâz|Š)ÓÍ«ºªÍ°´± ¬n6ê«ëè9jŒÜô(d± t°7E$eÄËŠ‹ÈîΦDo&�xmÉÓU´—â~s!“uŃ˧ò–ÃÂ)aDÖ°(â\�@NÞ»¯@Ø*M &w-ìè`° (•E°äÓ�ßÁòÁ3ÏùŒ Ö0¬¤LtÈáÍ<þ||÷õ稣?÷… ç±mãÇèáÛ[’Þýú›­ð£bŒYeU•œî…¯7nÄÁw#hÀ@¼¾î%D‡6ÃÜT…¾¥¶ˆ� '#•×¹Š2.. �×–9¥Es³ 1iÚ˜š™âÇ­ŸÃÆÁ¥ Ðúá;aïÎ]¨k¨$ó³�÷X×$) ü#äÈÅgËgoPZØT’Φ§tØ¥“(!ã²ß€á\Š‹9üFqéé�Ã?�¥D°¼—Û-¢žx­ÊÅšà°XEIŠ�‡S/èÓWûV塇V"!>±‰ÉLЃóiªyŒÕ”½Õ!KX‡’ÅšLdÊ�­±ôÔZP_U†¶YN”tÎLIð d”7ó¢fÒMkUN¢e´]œíÉjmÁ>#®gK ýŠÚVØð^Um(£ï8½¨)9\Iæ¸hû“¹­Zn&?§!‘W™�†�ƒýqùjJ+›‘˜Myy-z¹@_[žþH¼žŠ³1ñˆa‚ƒ¾‘1\jÊ>Tzÿ¯iºaÈ6 1=zã|h8¬èóëO)Õ{ï[*ÉP_×2ÆÐËÐÐÌœ>ýûõÃÝ+ôÓaÍókGÐZ®Þ °ŠéK–ß‹å‹VJ²Ùâ{wÅÝ…,fcóŽY�mmô›U’>9¢~í*Šîý9¬hÒÍTzÿ’ŒËä1=*ì‹„'%ý=Ý=¥{Zƒ@­¸§•r2+ĶÊ/ó‘Õ¹ÓPLíZ,™Ñ¿·?ʦ’ž �ÁSÁà”Ûu1¼\U«¹§YŰ7Ÿ³r‡£ ª 0VXˆýWoÛPQòÓA)aÃÃÙ¦LPù«Á`½À*ê,˶·™íGá¾ë�Õ&sîû×v´Ê�Ò‚Ùû[×X{ÔPD@EîtÚ””™ Š1#GÞé]ý¿o¿ós¨óo—ß[1™µ*Þ‹Eò°”D|ãYN°’ßï¶Ë+"ðoˆ€dýŸe!Éów�åù‡XQuEPDàEÀ§WW@ñ·6æè找dÇ ÀÓ¤“§–w÷èÑeZçm vÑÝK—bàð ¸wÉ22(µ0º¯&ìÌ 1mþ ú§i`+ƒ¶‘YçÕ~uüø±Ò|czbŠR[š�&J]ªiýRžOZà7þ¸º¹@lËø†¤`Ea.¥Kõ¤µ.¦×Ñ3°íPU¥ _v檷6Àˆ²«êêºdæ¸ä¹ïáàDæâyy讚\½€U^WŸqÔÒÐFÄåsè7HžÜe¸ê‰•dg2^ú8´g/Ùz}$�U€tíqí‹‹–Òþ°0"9ºBùO=rB”)?™“~�l2úœ7]‚Oö¸v5ÍÊô­!ˆÚB9DÁ6œ†U�.¡”j={ ¯¼£úz ¦(…M%»ö|ÈUúéÚBŸÌ¤"z6Ö³wúzN!%cÉôddzÁ©‡XJp&‚`B 9]H�jSŠ6à±9Pb§½^™½*ÀÕ›Vq,ÂCO|dFËHJÎÊÞ�âˆs�íEò§oK@Ù›ßoÅÐ�ƒàÉd€‘w/À¾C¹ï*¨)µð:(Æî]ßJì¡â]ûq:› ½UUâ"a8v| „]ÏB]h0Œ[û PcÇ¿ƒ­5j ¨6“í*êK–ÔåšZLX¼¢H5{u=Ê’â`ÜÃS’¤Ikí,ú¾Þx‘”V±ÝÎ`Û·ßlD­SO4ÔTBóR;›µzÚBéštYó¦4 )¯¢|q9TJŠ¥ï¹YYˆ+a'T5ªÂ’IÉ”‹�Ï(„Áe7‚Ï;N@XA<(Ÿ»é³/P\˜Œ””,Ø,¨­oÂ¥ ç°íð´4´¢,�þFd57Ô7ÃÞÁ”xÉUÊëàáU«0yÖž§F êëƒÔk1dñ5ÃX[GŽwçÆÜ£¦Ì‡“³†›'úl™¶· Ñ™ùŒe4{¸bû†—qÿª/ðÓ�[ÑÄã™rï||°ñôp ‚»›3\fô'ØghlBOZmX�!&fQ¾j$èZWŠ€¡èeÙ„'Ž’‘— ÕæFèh’ÅGWz²æ¦¦Á�ž¶e%éÐ!Û2¯H• a3YËödÛ‘%ˆf‹*A¥:nåÎÍÑ“ÀÛ—¿Ášç ÜŽi^ä„içüóÁû_J£…ÅÅd=w¦µJç\ Äù¯º"]3ÒõKé+SÞ«�K/ú|N™:KšÔ̵UxÝ~¹ásÊ>‡!hÐ`TÑ/3‰`pnf&æÌšƒE+Æ¥ãû$ÉÐ>ôB]ùàlÃÍal¨…íÛw¬š�ƒö¡¸º —œ¹ü÷%P—�ˆ�ß~ãü\±ñ“�˜·l�Q»öý¶4ã¾Å÷ãÄÑÈ#›ÑÌZo¾³ŽR¸/�ìÆû˜mÿUåu?~¢äÅ;oÆ482Ä”àZ¿¡c»¬b£çyÜ–vÖ乌�‰¦1×û•R^V¿À!Òô6¼¼ç}<ûÎwÒw®þÀzéR(öíÛ‹káC`ï×Ê7ßnƒ¿Ÿ/Êɾ7½Ád­/)EÖé`\¯ª%Ð]@¯§îÎq÷[ý-€U¬eÅã §Ì쵤,˜j*“aÚˆ&&¦4ÜSY�`¾#î½F ‚¡J=�žkÐdáCp½5lÃ{¸ŠmoNrqo’F3PË„™Þ¼¯ )Ý]L6d- t)ß�ŸCy[mÞ …eèçD%�F”T÷ìé…ŸBÂpßìñˆKL¥ôs=Ÿå†0P#/–žªöÖ†È+m`^c} ¼RòMÙ¶™I04ÒCC#Û >7„_xúžK… ÖÂÜLĘÛÂgÝç´ÈGÿÀ>X¶ì©ý1nÜXô£¯°&УÇr¿@Ê~ÛJ«†‡]¡g®uÀÚ¾Á®ùNº Šj°béŠ.3cé…mNiâ[• ¿‰´œ-p…×vÞ»¯²“ï ½X_“þÚkŠûs_u *™L’ÅDMc42™ì“ÞÇé�Þ!>¼"gÛךõCÇÃ9° wnéP]hoßéëâ�0ÖÎö]ª¢Ì{چװèXÉ5(I2<•Û6y+æ€U1O<×ÅP|°«bg¯)’6”jkj³25Åï–¿2À*ׯ åg¥ÜFŠ¡ˆ�è�Ãc׆ðª“Ô,Ì :b(ƒîÿÆx(ŽYEø«D šïû÷ço-�¿J•îH=:?‡Ä{úí<ƒB©fcÓþn!Wêæß:ò;’<¿=éx!“Œ3:ÞóåyŠ¡"Š´G@©�E EPD@EøgE >ú^{j ¶Û'X}M5AÍÛHÈêâB …’…¢”¤DICix;v}ý.|‡Ò§Ð’Æ�”ôãG.ѧ÷ÃÀÌçâ3PF�(j²"àà芳áÑÐ'›ÅÕÛŽ”ŠÕÓ3¤¯ibbãñè“/ }cÈÚÅÇë—@ö[o½�Õ«Ÿ“w…G(aúðc«áv ÖiÇ‚ÂÈùóçÔ±¥sçÎaúŒÙ(¢'_ç"^dDùüüúÒ—6"=�­1lØpè™ØA›úÁ•ÕÅÄ›´±›€„Ù€/¼ü:^|f%%6Ç µ®Eô ¹pnæ°4×AQI¥�[°bþlè™":&�?¶ ÊôØ#æBÖO3æÎ¸‡¬ÇcPµ‘Lé`u%Ü”\õêG cTñ\x9Z!‚ª>ñ$e§áwºdCUع@÷­× l DI%ðªõãvi\þ#X-·JÇ\0kdF”šp×|´½S’¤Õr›¥aVÒU28#E¦ý )[Ù¹äXºìa¬�=sÉÖ“‹èälhƒAÛ¡S8JáE�ÂÜÁMž-u”çÞÝ%KQG˜¨g–?Y]7Ѝ{Øçï@…ÀˆÛ¬ùì4MšcôÉ8OŸ/�GGEJæ �Ò0�Ò�›¬qÿócǾýh,¹Šø„L §l¯³»%Esð}øþ{Œ7«V݇ñ#&ÈAiY)aô�$Ó8‡€L!óp.™¡ gÎÄà‘~èíæKpÜáô$¶µµÃ{Ÿ|…ã‡÷#'3‡ÆÜ{–aÆWPTž� #cÞ½‹¥zEEE¤%ÝRƒ†²:Ô–å@ÛÌuU¥päv��--W”•" ·ý°£ÇMEZF. ´ÔÈά†JS-|G¤U&ÈoŽHb�<ý4Î:ˆ(¿µyãM‹ðÄ£�£(? Ͼú&¦”gc/e‰W~ð<øèsdsö…šºÒÈü�H€²<#.þ˜qÏ\ =‡=?|‡û—­B]Y<в1tÖÓx› áS«ž–ê%þ:´îî=»Ü¿Íd7Ô–BÇ �M×±ð�‘Å÷.ÃàaýñŦ]¸|X:÷bÖÍצ¸&Å4!ù,ƒ¬‚�ýk%<<œ×ÆËô¼¬‘ØÚbÙ��³d/^—Vs ò Aƒ¤ñ-«Æî¤TÄ&ÄÁ‹²ª“§MÃö­›àæî�\JëÀÓÖ3Â�½°u;™&ÊýÒK¶ŠÀ«�¹1Ò�Z7÷vIVéË�?�¬\JV¥îaÁºu`ø¨¡8A„<ú6«óN™4‘Þ»…ôÂŒ‘§w^µÛñ7_xöLX°øÁn狉ÏÞ;óW>Ÿ¾º]æüé³Òô áC‘—�.�[Ù:JCñ'“¾ÆÜwåÐÕÑo“EÉò¼r -Æ—ßlÃÃ?Š~úäËk®²¶Ï=÷,^{ña ›&Ï‚Z7í>„°ˆhlüüíŽéñdF‹Ï ‚ˤôïÛÚºšLP0DjVî[²ýÙY'°/tž(ʸŽH‚—ï|òÞY·?ûˆ~®—è#™CIȾdÌ¥Ð÷Q“Œ3iw6–æp"ëOMƒ½°B 9w֦ƦŒ%;ÜÛTT¡ÁøŠÒ‹¬,°ØÛ·3dÂÃ.‘�«„É“§"’ÀåO”Bv&x*dÅÉ^}™u pp°Á´YìθJïÔf”U¶@GUá1IhljĹà£ôvü #G�á­d06ÀÒÐÍdü:éÓ·Ô‰ÌÔrú|ÖÂÖJ¹1зöCRJÖ½½ßlú’ް˰xÙC¸|!v–T+ɸ$3YÄEj”–Õ‡�¡3£3d•úø.€¡YPaaH œp+YnŽôÞ²€‚å÷ñÉ 0`'ŒÙð1h!+S2oÅhÞt¹;¿5ˉìØ”„AI¹Dÿ ½‚°oÇ\ÏH¡W¥ ÜOý$Ïîê¥$âøÖ-˜¬ÚZÑÒÉVo˜0¾aÂNôÎEH–|ú!ª)¹ZOo¿–+ÁhÊÍíXÄð•w±nÓ‡8«n ߅˸þ+Ô;»âí3É$m„%Á'w²gÏAýà® = ‹ŠÌ¦FÃ�=�ô¼ $]…‰¾”ÉÄ-'À™A™VSC#ú)ªÀÜÎõ ô”44”X¥µ”1¶°° ç"àèáŒØðXô6šœÍFl";Ò¯ßèi!!)ê*µ(.¯F e�{Óï±wŸ^ˆ %s9…¬P2áŠkaN–ø°Q“Û½yDG�EeU¥¢�$/[}SKøù’ñxûÄÆ ªª’rÔ”'½g®¥Žtž“k×È63×G ½!k ö–TÒÿôAu2 uTñùkx|¹”ËUAÈù³ô N€•�2†“þ}‘Ù@ðŸæ½é=«A¯ÄüÒ<¬ZýY S4r<åL{A‰à¾µ­zzùÀž1¦á%=�ÕBÙÍr‰ OhME)åÓ‡I“ÎÆ·"£¸ Îê”:þe`ÔµX%Ð÷Òšg`M6Ü’Ê$SºS0áªØR¡5`ˆfçëSÌkÁ4“Øòþ»~÷%”¾Û(]Ãr¶x ed¿úè]Œ™6}ø¢#ÿÂjô>·:ý‡ ‚,ÝÊ�†Å¥cÊø1žú ,?~¼NŸ§—«ƒ³;œì\†owî†��=Ký¼Qá”ÅÄÄTnxó /�oÿ~;ÌÉ lÿœ´LÄÓgÔÙɦôFM§¬²�‡ *(_ÛoðøøxK~¯õd${ôð–Ö¿ùÏàcáÛ+ðæÉ]¾æfcÔôÙ]¦uùÂä#²-y�_�¿Šêª È «P/øìý·àÑ“ŒO2PU[kàFVrO²;‹s³è-›Š">+í="ÉA·’]¼ö¹gðä3ÏÀã'ÙeWªTl ð#ØŠÌåõlmðü“�C•ìÐè˜XŒ1¬Ëò¿ö%ôò%ØÜ`kÊËE2QÁÕÕ�,_[¼öÚëdøN`Ö¿ }Ö­põì.lýäUœ¼š‡%Kãշާ窔[è¯] mz\W5« �2¾ºDuôt0mú,>ËRèñz u<­ô™m¡Ô{ “\f�îG�c”•“íj‰”Üj&¼4J,è&>_.\ކ%eÂrK%¹me&Ìèòø-ùHkk¦�’6lŒ´�˜šD åsUàNUƒÇ™\$áü¢"ƒ6Ó76gȨðú $;ØÆAÜ÷èx^‰ñª ?ûˆ¶w¶½‚Þc'Ò×ý9²['óܱÝ1’†byQvíÝ…ÝüL3…*™¤Ñ[[ú{~Н¶oEŸ^½ÈNµb[Åkàó¯ñÊšW`Åç²XF.µ­m0óô‚‰š²ÔY(ÚóóNv¸àäï|JÄó»èÜ›O0¾­±Ž÷Ñ$; ýèa>sô08::¬­ ZçOû®ÞLÂ÷³œX!$me¥‚ʶÃmâLŒ_¸PUs>}§¢&øTû£tÕýd£¦�Ù,Ï4±¹�’°b["YH(ˆqQ?q,í�d­ÞØ·`Å:®ß,æŠs'Ú:S ó 2§ ’~w4ÜÒµ#KÌ‹=Éjò5wg÷®Øº"w&`�ˆI€³}÷Ilwf¯Š­*"pg# ÙZE€Õ„. N_À�­íïÛºx—iWùjWéÏ ùýææ-}ûÝ>©ÿáÕµoþ‚É*/+~;tf±Š$2ù7NûoŸ!·Ü¾¼ ÅP�k ë¿õÌ+Ž[EPDào�F²^ô)_JY¿B84§�iOv:Ë%>ö*ªTu±fÙ<úïeÁ‹:v®ÞÐ5w‘‘†gïE+Á G·öu )+(|=ïDQ%h¢gd%mZÏØLb³u·_/OÊáúãÛmß"84¤ù`D€3šÔ ¡ÑR�fv � 0c®Õ„'ž[‹W__ u²Ÿ&N�†*2ÿòÉèk#”G6PRY±u>y�Øzð¾áá§ÚF©Gú/jëÿñìÕ°+çvåΞ¹LH[,[y?ü|=¥ÎweÆöi2ýd€uòÔ±H»žŒú�#ˆ¾†úV ”~±zÞ‘^^Ä‹ŠöÅÓ°[ý%P½Ø1MÃÒ2(\,Ñ$YiqÈ-ªÀä‘C°úÁe¸†˜s'�¥Ëï'ˆ¦‹à W°•LÉŒ\v¤; wï>pñÂz8Ò_q€$¬¯NЖࡥµ+ecŠ0“Ūʎos2¦Êñļ8 OGeT’õ¬¬ª‡‘ƒ£o ²‚ãÓRZ�{'O@)=H…GËŒW(á8~8—ô8éôŠ3áQ*>BjQ›r‡c-}óÂÏSÞ÷«W…ž›ú®Ž”Õ-•ÖÕ©¬“d1hœ|ý`C0[3õzw— Ö4W†fÀê5P›¿õGøÒÈRfi�£Jê˜4y¦¤¿þ 2îžLP{mG»¼ÁÐL²§û %Àm�ÿÔ)!«¾ –¯¦Lñ¼°öui±Y�ß…iSfå—Séq¬†³ôttœ2Á°lÏnÃï^è³ä1”dD“ŕ¸ªã¥çW"‘2À~=]‘œ”�!à =ù:öïý‰‰¹5f<¾Ù¾Eå”ÙÕDbr&.DÆ GOwØè©â*Ê2Jì^‰¹JÀœò²ô LM&ÀÚ»7V>²’ö¹ZôÞ¬‡CÏž¿t‘Ò”¤l±S{(/|�ž­6ïïï�Ï?|›×Æ6úeà¥w"½4+«ª Ú™ ’·O†#¯ák¨©©Š¯w~Kð´ ‘”�ÖPÓ†�¾ ç.`Ãç_q¿m˜F&fCMüÜ(¥©Ò GJ×”KÀü¸QC°á»ýx�×¥”JÊ¡öêå‹Q#‚ ¯£Æë,Ʀ¶rø¥¡ÁÚê2äeÆK÷¨¡±*J(gš“¶MKÌ-��W̤ Sl9Ç{$ï\•VQ;kWèŒeA»a£'£‡—/&L›Š#FÚžŠ?MÀ¤©ƒ1yÂH—Ôâìé㨫«Ä¹3ç1aÒ‚œ??;.ó¹"’Sl­½35†íÍë^Åc/´³»¥ tóG€«â#ŠWu´µÑPWƒ'ÉP½Bö£—«M˜�%<@‰Ýb�>è3d<¼û $Àë‹ Á!ˆ!3õÒå‹(,,Àfú‹‹"ûJ_núsà™Ý9ÙXpÏB¸ÓÃ6*!•@¯úøß´ä­¿>óÌSÜFNíĉ“`I@5.>–¬Ø®À²¥£'b¢bè-ÝFY^žïx\e{mdlŒž68Í{&-9ýý<ðìs«q’¾²ñqIhm¬FBD8e‡ëàæê ­IéÙˆ~ÆôVu2ÓÀÂ%¢ZI ?þ Ï<´„`º:YéEÐcâËõ”ë°wtFFa‰äsÖkšÀï±ç�Béôõ¯¼!¬bþ€^þpwr£RiÖ´ â¾—“ Ä1uÃÄÂ�ÈÒí¥6AL³^õ2çr»¶J€éͲáb]±9)CÏ™á!:7E»!˜%M ž¬bÝ;YÄ~E=À*öÓ9wr¿ÿÆm·?º¶‡BJ‘~Çožc\Çü÷�€Zëßÿ<*Ž ktLlÿ‘k磿GÄ»Jg€õ*˜ÞY÷:Õ”Ú•>¢¯%0É×” X¦xçÝ÷¤~‚ÎÛë6d§wüód€U^®óï'yšb¨ˆ€"íP€¬Š+AEPDà_�ƒûÄÁýû1 “¤ë_9Â÷oç¶í”­Âã”o¨�Ö62gª‹3 ÚØ€ž¾øa÷T«YÓsqÁ/«Š>žC(Y*—ß{ ÙìÀlåºyùÈÍÉ`'}WD^öVÃØ«‘dåiToµÜoM7§lj$=N›Ø ݧO ®ÅÓ;�@ �¨„„(Lž9$çðÅÀ†¾¢údyùà\HÊ)©Ø ¬ƒ{Ý�–Š4³:� X3YDPE€«À*¶ecmï8»º ¦®–r’z”Ú¡/¥¡Œ¬ ‹ð’ì�‹gq�µú¤%C+í:.Å^†u5 ëk¥åä?1¹:„^x{÷�Y~&<ŒtaH0äJD$TZ¡B¶“–ž9<,q*ä8AUôà+¤w Á²ªrzA¦PÖE 4´éßjÕ.ƒ‚mßE™©vöÎ(¾ø ·¥ƒ’ŠFvj7ÂÅÖÖvdNed`„Âìl Ü5dÄæ•VA‰Ìºú: ÉOÁ³®VRGµ Z f`¾šJ¾}`wE:1Oþˆùuƒ²Þ]ËìVdÝ;}GÁe@_\ »Ó7?ùd&Ÿ·rB³™ ²È°ö47G>Èò$8p½"½æ>ÀË!ÒËž³o[‰íOÒÀ*äóé¬yc¿ÎËÇôÞ’êÒÀzç±Ã^©¸Hµ4¬=*3gÁúÒçfHÛKíá‡,zIyËiÓï¾o7QVù8JS 0fÄ(ÉÿPS×�=¾šç¡•õøýµ()y…àJ ™Ô.¦:гÔÅ™àK°wëM Ç +—MBrr™Ü”M+ÁàÁƒ BéÔ²†©v¬ø2[T˜M–£<üƒàjoEp{ªêëÉ�ÃäÙ÷bùƒÏ¯G]u)ˆKK,V=c>°}õ"#P34[Ùh�§<¨ôy]6ð:³¢/si~=•K�–›‰µÏ?��à“8¼ëÉÓÞÃßmÝŠ‚âlxzúá›÷ß�Qu9ò)glãÞÓ§ÎB¿þý(%<qÉÉ;³Ùs_�þCFÃÓÅ£§Í"XãIÔ¹hR5ÄÄñ“)5Þƒ O_˜²ž±±‰0ÒÕ¥Dh0�CèëPUµ‘¼6£Îÿ„S§Î/Gà¨iXó¤sGàÅÉÙ ¡[²Ò2ðÓ¹É'x匞ˆ<µÙéðö èr^ÅK^?`Ž7ƒ*¢“ÀvýÆ.LÖÎ�æ¢tîœ�;҅Ǣ̂óÀ"œ‰�=…¨ˆ«Xóâ‹d_fâ»�ßcì ¾ð$C·RG&"øZ*ÒµÍ Àé"5:\ò(6r,j¸ÜHxÙ°ñk<ñÄSÀúÐòeôÛµ'Àg)Õ§ó`íÔ&"##• ˜7ÒyµªÐ$ãT½¹ ýØŽ9Ñ[×ÑZy%å7}®1¡âéW^D+lx˜&®¾dÿ6“媇!c‡Á–ìó ¿žÐã£eñ²å˜w÷Tä``ŸÞÐ%˜ÝD°6‘ ùE%xïÝ·`jÚÀ põÙ篾ñ:.„Çã­7ÖbíË/aÉò0nÌXí °¦¦¥â?ﮃWä9é¾Ù¦aŠÀ²|´˜ÛC7#]:nÑ·ƒ˜ÒW‚¬¯AËÐBŵÑoÈPªPÆ…ˆXüíЛ2Á}$kûí‡ ƶÑs,¬…�béô‰³Ð*ŠèÀ{¯o?èͺ9ô®ÓQÁ8^OçØv 2ªcùîFVoŸ×�Ô˜ècOyß3]Ú´e�J¯¤bë )wFÊ Á8�¿žŽµ¿ëû=]Ž·»}už&ڃ΀¬P«Ï* ]]Ì›Hûê¼ü�—�Eª�¡~¤åç‚Ørg6³xNˆß<åNÿÏÎ÷ŸtŠ-þ›#PßÖ€ZþÆÓ`¢l{i£¦DÛøö¶ùßű+"ðwŒ€H ,b(ŠŸO `½@»¡�;À]wÍùÅaÉÉc²jÇÍ ˆß6í¿5nž£ø®ˆ€" �Uq (" ˆ€"Šü«"àîÑãOXë(£ÙÜH Jýg Ü?+�§/G ='N¶VˆŽ¾*1PZZZÑ'ðgP!&ü îŸ8ó–-�!;˜�Ìí�sI×.S‚±7ü)Ï'—më<ɬ¹vtÜýV/_ˆZJúy‘ýôe…³2Òðŧï“Y§+íÓ—LBQ^¾Fú:P©)À7o­F6A¼ž½ú˛ƙãG$�Õ‹’„7!)Xoš~­\¥ßªŠ² ¾ýz3YUyÐ40cG´ ôMÈ lDM³*ïßAP±�­­˜>}&¾øâ ‰IwîÌ9JOÖ�Á›�¥÷͆¦r=â3KàEv¬>½\­(QøGÊžmŸRzÏZêì—·£ª¦&±µìÙ�;hà Ó¯TX…\Ÿ`¹‰�Vvx—”�yTGÙÖæ6øS"óf€U0_´’®Á32Z5•¸@pS/ô,üƒ�áxv’ ~UU×À…ž”Nd¾)•çÀÄÜC’’íI9Ð!#§ 9.Iɉôñ#(Ž2Ç‚�î$nU�3§ŽðŠwÑãð4Q�vððѸpé¼tÞÒó‹0{Ò^?ö0µvÁÌù Žè !Ð×R&3Ì}ï€WAÁ'é¸:â@f nC�fïñãÙýÂNv0ÊÙ®BZHø£Êß›.KóÜM P±è1°]#ñTû À%5°ž:Íôê4™½c?ŠÂÂ2§DW=vŸ‚ÅcÏ !3Ê*ê�·uaâ,©ÛG-6 Õ[6HÕõ8’“IIl3 \Œøé,Š ‘Dy¨U5JÙ6cØë æ‡0 ë»�@vÛ�áDyìF÷~d$#¿²‘ <]ÜEOCso¨ -.ÌD å~/GÆÂ×Åœ ¼¾ùÉ+§×¦aáV,˜71Ééð²6%Ø•BÜFLœ4O\JÀ 6œòÒd›ê!³¤ÊÊê” Í„#e�…|®_¯>`Gý×›ÞÁ¹ˆ“dkñzæ= Ëºë‘9æÙ;HºÍ­)l +~Þþô%zòúHrÜÁ'O!.¡VÌP†RÂB£±®™²¹æ¸t>±—yÏ+¡§‹¥¨ÕÐ\׈ѓ†#'¯Ç‚!}Š#ƒq×”q’ÿ©2Ùcš5L p" 5sfL#›v ,mñƺ·``Û*¼¢È,ÒÁº¼ßî™·P:�5%¼'”°yë”WT`â´ÀŸž†êÚZ”eIÀ]I1¥€}\ñýž#h[ Ó×RU kž{ŠuðDO&4Ø88Ñ_”lGOlZÿXÙØI H‘˜!—ëIqdÏ•ÌZQ‹Z–•%×o”Ô&%¨kt%³Ê�æí ÕÖ.àŠ˜&X°†svhe0Ö—,½Ð™Ü ƒm;w²]R…žrJT4 ×w¶†…âî»gCÃÜ /¿ú*Þ§g´`ÿɉ¢¾óçýœsü ï?¿nAV±ì¯kÆÌ�¬G}>›41pè@s–Zún4ë®ûñòGŸÃ›²Äæd™<ë¶ì‚ “Hú»9àÀÑ(­¿‚âœ2‰Ý÷ýÆ�øð“˜s×Ý\îMUeI©ÁúZÇŸlßâ¹à'Ù˜ ^;e ­éï:€²äÉ´HÆ´I?ßkÙ6}Ç®.žðàqÎâs:L>»S¼“ÄûÈpñkú5g‚ÝÝs.�+¨ì …þTYø#EÖȶ‘1AÚÙnØI×$[v»Ç};HE²‰ŒÑ{»�+’[DÛ{c,n÷qÿ“û¿ñr©ä!{¯ˆX‹ï¢ˆú%†ÿôý–.ÿ�Gàoˆ@k[;4ù›S‘m`O‘Á«²ïÃAä»�G€H¢ÉW÷cX°—<·92€µïa„-ÉÍÖ¾ëˆ÷›øý T{Ä þW‰ÿÙ²ÿS}וOË# �@Oä «¼&È# �€<òÈ#ð'"PO‰SÊŸþU�uËæ�d‚]ÿC€«¢èêàýWŸÇpÊ‹N›>íº³4#nY"Íôæ<°g/Ö¯úšlÄ*”•! $”Œ©d$^á÷\ŽŠ’dPÀ*J Yw—£/ÃÎÚY±°p¢/~f)æ/xŒàG6.ŸÜƒÆüdTwj`Õ—_ �`lM}5ÜüQjØ&æÖ¨¡T¯`N põf«ìd• B‹A”zz ÊKJj*í߇lJÃÚòÚƒè]X–—MúMvˆ:}ê8F�E~a)B‚ƒáäÜÑÑÑ8N6VZ<ž~n æÝ=ÉéÙ8y1…Œ>KJ × ,#IùuˆŠ½‚@¿ëc|ã9üÚ÷ —ŽÀ„ìYcã[k…ï¨eòÉ2âEû,++~m÷ˆ¨”šH€µA•3âÔ}«zÖ÷«-ÃÊöŽ6�À¹Ü wjXâ§ý›¡¯­‚üüI¥uˆKLGZj&Ú)=«@ '\-Â@'úÙ¦§H « hŒMùy=‹¼5LÕª«ZE£¸XÙXL_·.Áç¶ŽvhíþI,‚JjÇf¢ö\8ì}ƒab ‹µ�Þ ­vvÐcG¾±¼gç£ô“¥x‰}‹}¾Iùc;¾":Ô{¼ðJfÎ¥är¼ý‚Ð�Ÿ‰5 ÉP#8C7ÆÀ ùô|ÖY‡ô[ð�ªÆ=÷Ò«jCÙÖíû#öòe¸¸:Ó×7Ç�¤/±!Žì¢l$‘Ï÷l„ŸIÿ@²�»Q_ÛMu‚�6(¤”÷Ñó‘¨jJF A&3 úˆŽ"HíËçÅ]ÝÝÌñiӦÀÇ2ÁÅ…зñ…½•9}I�pîð1¤^Ž@[e¥†�Bg5Á’‚œLøyyá ý‹ƒC!œõ~ÐБônÇ�­ÇЦ¬Ë:�2ѵM-ä4!t€ÂÏE!.ö<¶î Ç�ÑSè¹k_kQù¡E/àÓÏ>%›Ísï�C–m)¬ïi³ÿE€N‘~ÉÐVVäóNÙq}#úHÆbé²OØžäcÚÔ”ê¥$™–¡ÃF!":åEÙ°³µ�6*â/GnVªjjð‹oãÞ»g¢ª´ˆÒÙÉd§:QþÖ”Þ¾ýàè:žþ¡(­mÅ ²£ ðØXÛ‘EKæ7“=™PQßÝ€"2}û9{H÷¸†ÏÒXzNöXłȈ“r(“~ dÏ¡¬ã[$<ˆŽÑY Ö¬ôxJ«ÚKû²NsÙŒ¾~C=`ALŸ}]]lß·$ы֊^Ï—x×�káÒÏަ:dÞ_¥ô­�p#‚ÞÉxéí÷0€ “�m{GgLœ2ã:€õ½7ß„1“&daŠ2nì˜[Xwo]‡T&¸yô‘ÆUP$;� u«žýÉÎyßþÃXÍ%�U¬b�•ðcû!€VOª!ÈŠågÀz«åñGdRG8´(�F ëï÷žFIm3ë~ýN-`C&¯„Ëëš@IDATÖ›·°ýÒT—®¹�~Óæ<Ž8Ö‡|ÌvÖ§Ïœ�6å sŠ*ÉzÖ!XhÞ{ Ʀ攰öâ¶æ¬+–Y÷ ,$ðrÂ11q(f;ØwÛÞ�üɉŽ.L½çDÆ&Òsµ ÚVý`©§Š¼²ÔRòZK™É"6®(oPBCM%˜, ¥ÔAŠr>Ëù|Þ«amn‚‚êF(Ò›Ô¦6cìÔ‘Q×Îß–¬óúˆ?uw®ÇÚu?½Ÿ ¾z)LàØÏ^ý�ølª0V–Y™LåÐVå%œ4 }VQŸUÏ�vvš$W«ÓX—kX^¬ Øu® Ÿ¦ÊC7º„ÿ©‘Áu‘@«`}F_ÀøMÇp¡¶ köl’ÎCuöB©Ë]ŸŒô¾eîÌipâs¯EÙŠç%’`fN›‰h2i3sа|é2ä3AGÛwîÂÈ¡ƒ„h²Û«+JðúÒÅ”Ûç³B¿YYY·q3â1wö}ðå{Ê�l{1QþØÊŠDZ–­zÓ±h_DÏëÏ`_]°q‹?~GZ.’wnVL õÿ0Àz³ýˆãËX¥ÿ)OÖÏCv?ÇáÆ5þ¾ï`­¿pVúý#ܼþb±�ÎBVZ¼g„$tß"~›X,~£OÝë»T>-�ÀwTù;åg€Uv®r€U ùøï‹À‰K ü�¬/%ªþ}{•ïéxçÉñ›B¦òwG¾?yþ)�ƒ¬ÿ”;ù?tŸ}ù%Ä0súôÿ¡«–_ª<òü·E@CGçWÖeï¼�ACÿî)'%&àä‰ãN9Ò‹Xs“ãp‘ž‹nÞ~ôפ×SŸ’y…YؽuŽ>%…jŒ7óÝ�À�áÒš‚E–NŸÈ™ô/m©¡Ÿ«EÏ>”•aãà3þpÖÐ#eôšÆØFÀ7)ê(šê*QÒ¨F–ŽÂ†SP•¾Ÿ—¹¯D¤\¹KùeUøô½·1nÊõàoŸS”ÀUÀÚB–æ—_}‰2JŠzzþ x>8gôÙ)oÎŽS-^siQ.†ø¹£²­ 6d³¶*h‘çjE¶ÎÂ?‹ÚŠ|2\êè¹jÂŽØd2š„œê¨nj¡Œîe2‰4qúÄ^ÉÛ°¢¢ëÖ}�«™éð'8[K6¦A¨ß*gÏ�C™Vv”ë%üÄvœ:u'Ž…c4ÁîƒÛ~ÀŽ­±î§íƒŠñõW+°—¿S¦NÁ,´ª: ¼0¢ìqšw àYV–þÖ!{— ðЈŒeQëF°çê,,Ô52ظxaÆÝP†” ýUÏž�&¡K°Oõdúšª )5ÇÎÇ¡‰lMEux¸õƒ‡åM­aef ÏA”n„=u)oyÿ¼E ÂÓ7CÉnýéÇõP&#±´¢†~LfèVScǾ+Ú Î†<ò”Ô©(þ\‰ŽcÙXÈ"wÜU+VÁ\•±…z/Š=Œ¡!Èg+//…Q\dßÅ’‡œæù3¨³µ'Rjÿ‰3PÆNÌ!ËW£-æâu¾š² [È ®µqCl\"NTµ"ÞÈ ÁK^‚+½Š}ŽÄ�›6"1/sï{»i4K^”SësÐòýjwwqhGum=vEÆÁwÂx„†bÆø ð°³F"AVU}¡å…¬?ñ¸s FŽDlJ"•n0ÒÖ‚‡Ï`‚ñ.=)½dCàBCC§#0t =‚‹Ù>è‘É\;{'2-áêd …‚?EÐ¥ßèþí?ÀÙÞ¶”Ku¤·k=å}[‹8lrŠ+qpÏvøÒc²[¡ ±Qç`I9è­dÑ—³Í�ŠŠZ\ õËK^AuîU‰éÝÎg×ÅP“à{›jâo…¬¤,‚8]0¡´´�³%=#;/•à†¥‡/0±�L\zÀv··° ™‚½?­ƒ­«,ûû£�Ϲ5™dŽoÃ�#gàm©�ðã›±àß/ÂÁ�÷‹%ž€ˆ†Z7úà¬khBZ Y¥ÑQ8 dP¤<蚯WÒc³vŽýQÄŽiáÁã^ > Ÿ}õ5ì�\™8 ‡þ>!˜(Qú¸‹l&–ÔTTp7–ÀÆþî= \±÷††:œ?w’`Xçu~¬bYsLªPŽV¸*@Çß+þ¾×X¬¿\S€«}Ö_®qýœÓG�J3„Š‚¬ü¸v ¦Ï¾ y¦l³JJkȆ'sÛÆCü]q%1ö6ÖèÒU…Pfòó§‡nå„/À�@Û‘Ãû¨ C_ÛL˜H Yª|´âRš{pP ì0À*ûrϬ©¿XŲý”Èêÿ|YÅvܘRÆ}” Ä|Q¨;0$Ÿ~ø¥�ŸÂîc±ˆÀrMñUlÙ𠙨¾ô!î@q5ýV� Î¶¹•÷jÊØ¡xÿ¥…”‚0/2»«QŸƒ¾TT»q6§¹”Äïª)ARr"s[º±ø™Å”ÎCý¥…ÇmnüE2¸-™ðÓ“¤”@ ;ú^¯xGj?¨%R1ˆº/dr± ¥%úâÝ"ê÷×íul7˜� †þ®Ž=víSÆæ´qJ»•°i×6<èã†Ñe…Ȉº›Ñ“˜ÜÓ²®Zó�¤šÀ÷ËÝ÷ÍaTYµ!ðóö‚}±“2òñø‚ù|x2‰Ìù”_óã·Hc²Îù àÃú.c# Œ9îºó_ÌÍL¥áÆ¿°Þ¸¾ì»x†Å ŠH‚ ²ïÒÌÛøñŸ:Îm¼„ßݵöE]”•žºw½"€lÙ?a,Þ¢$;KcÙ‡ëöãÒï$ÙrÙ|ùX�;95õ ¸�@ K3´wuH—"”JäE�¿�+T|âº:ÛðÑw0fPÈ_Ù�|Û¿1â�^É$NQþÌû¬ç÷ä›È‘T†ü©}H—È#pF@²Þ�7íý”ƒƒ‚Øág% ÿë±�_¿<òüwEàóÏ¿ ¯[*Ê+àæÞÿwOÎÔÔìk^Aer{äuõÉîGÖÓc�?*�¬›·l’@°Búfú‡á<?GŽï#.åÏþ¦PêV£¿c%=ëÈö0Åô9cüÄ)°rtƒªº&T5´¤s2e‡¼Ço‰[Hù_²ö¸x„ [Q—¢ùPÚ1 ñ—ÙáiK†^üûÛÐÓÇúïÖ ›Çjhl–#*”ÕƒY{9¹Éh%à~ô¥;ë0ýî»É„U¡�rV|ô Þ{gÞcÂCC]ÆOŸ�©sçãji.AcL™þ(¬Ì °èÙ7YgSé]é†ï¾=Su>·#<¹E\–‚žƒ:Zº”Éž3f=içØ�RÁ”oJð’--$O�Y§ÊèõZC†j�䨋Ç1€Þ¼éôm=}’À{})½*°óÇÏ0lìT¶Í(£ÇoA&=+s®’±h‚ ¶a{wl%÷¡ã`G†í�á#1pÄTŒ›8�L=!K‚¹®üìéÐûò«�ÐFàÊ… °(—c°÷àqL�8Jú.>„¢`\ËòçMŸÏúOf¡VOØ»òµ‰JV²õ%@Y!{™ûôƒ½ò—ÏQvW$´„j«Áž ûŬ„�E9sÆ,ú÷ž`Û¬Hyg}ž_ æ?úYÎJ¸xî"©$àF/má‰txÏ6ìß½¡¬O”ÐUç c°ÊÎI•Ìÿm;¶‘…iÉvÜJ6[ †¤H\‘�¬¥”Ý>upÖ¬YÍúô÷$^&6~à@,zæ™ëŽ-û’x%—#Îõ¿;²®fá­×^ä©S1kö¿àíãƒäØh|·â=tPWWS…ïˆRº®¾�LñhúÛA‹õêtäèááG"39ž’×j #}Ä0fÆÁ~¾SÌ m�•“�”øÎKK‚oP¨ìT~u,ÀÕ? °Š� ™Ý£‡öb}‘§Í^ «¶WeE­‹Ÿü7ŽîÜ„±|7�H†y:2 ›àDöy4]*ÙÖ›k)Â…ìó&êô—–•ÂÅ  IU8»}ÊÈ4×UWGfM;Juè¿Ú�§^{ YeM’4®¡‰N�¥q&M͵˜2y’dM�RPÂÓP@}È�l\·¨ó²ÓêUeÀjï‚kºç3ÑAÕŠR&4<¿j#Ù©=à�èH@‘�Ó•m«LÖ÷w-ƒ{q6Š®$Á-?FYiÐÓÖì&ÅÓhÉú)‘„!$}m¬­{{*â"æÌ˜LÉpEiž-—¥¦_Á/¾N6yKlÈ÷»`±ÞXdë+K—`ã™ P¢t¥«õõÏÁ�ÛÜêwÑY(’„þ€Ï[�Éß±žLÁ£ï¾þé@«`îÊsh/˜Ñ¦3ºoÌäÓòü7E žžßB�C]M:ZÒ¸‹¿›•™%/òüÕxÒjE ¥´ ¹uG û«»”oÿ7E@ü÷i;}¬¶áàÎÖÊcûÿ°Ç¸Px�YÉ}áÿ¦›"ßÍ9ÈzÇÜ*ù‰ö�€YåEyäøoŠ@dd$víÚ�3¦³CÝÝÝmd‹(ÿáSdçz )-Ooϳ§Ob3eG�é9eòd›˜âÓåocëöô"œƒ¤”T•;�ž‹´Ì,$ÄÅ"'9‰QôäËHG^~ b(%ìb©‡‚mö.Nè¤g�·Ò’c)-ê}q¢œ¥_áÃ�=FO7z”Zéãe†÷ìØ�«ù•0¡jwsTut)3LÍÊ2ú·�ÃÓ�?7z‹N$è,˜¬Ÿ~þ)>þd9Ë‹úAל€R? *ÉÌŠm·oÝ�«ÙÙ:b�p_(S.¶»³Qô ŒŠJCSåjÍí0tÔÏÀ“ì˜Î” ¶±µÂ�ëV2£º;'·hk£L,��’¼4´ÜSÓ¡D'år¯f¤"�@œ(ußÅŽùw EMYl)1-äò>êÖÆ´G²3{ì¦ÜMYZShµ4K²­²Î|Ùv`Û\!q¬¸.ÿ„ö6dB„!ñÕCQ3É~ÖiiDtÈ$,-­”¤­³ª+~×â㕟£­ºWÉ’2¥ì*T”‘I?ßD4%[PßÌnº¦‘¥¥«îÚTWÛä⢮§ÐÝj70D½�uN…bþÕx 7 ±§"ƒ^†Gã÷c‚ß0z$!½¸‡4RCúUúº;cÐð‰èTPC$ë4É_ð"SÔÚÑ‘ž¹Z°¦Œæ²«óÉ3¢LêJxž‹Œ�.¥ž›mûÚ`ª­ˆš†Z‚)mÈÉΣo.t,Ì`K9]w3MÊð“ÑmO_æRz·`éûïK’»[v¬Ç/ :NNÎðòñÃБc(ËjÊxkªi£8·5M5¬ó–°spÆß­…5Çv¼VM]Œ9 qQ‘Ã=ö2ScÐÜÜ W�& 8áø1Ê�Ücmu|ùÅp¦d©£§?fÜû(r3’péì1¬Û´ꪪlïÚ±“Ï¡Y¾_®[Ë6¬/¼ü.æ<ø²íM†ìø “ut7Õ^˜ûÈÒí ƒ"™õ 4 ¦Û[›ÈÐVEQž`¬Hƒ¬®$Ä_bRC¯·GúÜŠ±ê °Šõcµï •7^“ ›Û&cÙ®zÇ"Y -?W’º”uš‹±èò—bÜ6h0™Ám¾M¡ÿý§k«ÂÂÏ~°\ÚÏGŸ|Œ¬Äx,z˜IG.!69“É(´Æm‡¢Š&zx¡´ÞA‚†‚©¨AÊ·º¦6^YBïYú„‹¤“\úÊÖÒÃYŸãÃÿ`;Р³ `ßémZO0sǶíxð‘EbÖ_*«?ÿ /¾ú=õìÜ}°ãd4¢/žÁéã'°k÷z)‰$Ž�aAa%�µ¸¨ˆlòxìÞDzöŠ‹òqæüy?s‹_zöÀ`këé ‘¾¢O–˜ž'Î\Ä]ôæ3vU ÒÆÇdÕárâ1,zþC <ŠÏKtÍ\`@ìïþÈdDtR ÁÙFD0DÜÓŸ}‘°fôAöÇW¶áÂÅKA¹]§úJX}þî �X;c/Óó»'ÉÀ9,LÚ¾//ßÄzMuhe�d²Iÿö&YÚÂþ‘ÇÐÆg¿îë’LªT^XÅN:›«s鯛ž³|ljä€�_Êå+ô‚¬}±ï¾ö.Y®d‡†Ax�ý^)ãûànÙFL”Ão•Œ¬Llؾ‰Ìý ßZM¾ì6E@^Kvè�kòìC¨pZj‹oÓaÿßv+“F–�«rÐþÿíVÈ|›"ÐÆÿÍLhÓ¼¦š!€VQ”®%ÎܦÃÊwû?�a3æaÜÐ�xxö¬ÿ±+ÿï¾\‘x—_¤¾UϹuäØ¿°Kù½³‰{²>�žÿUÿ\e‹ß‹…|ùÿ^ä ëÿÞ=—_±<òÈ# �Àmˆ€,ÀÚSc±ë¦ kIAv²“Þ;dصu¯y²c·�¬ÉÊ�–––ÁÑÙUbpö÷ð”€O2?X!ŠÁ·~Þd…A‘ò‹Ýì ]ûý<ûÖ׬×áço«–¿CcSäQÊÏ?Ðj*ììÞ¾‹^�*”þtÄácÇ(Å»˜àD*ê[ÉDª"S4 çŽF#UšìDmoEeE9ŠÊ«ÑÆÿáðÁËoð{=ÙòpäÐ!É/.™@«‚ÂØQî�½{v‘MiL¢C'΄«‰2®¤fÃÔÉ•M­üÓŠ ?ýH6]3ÈZ´¥äj�­„øTŒ;’`‰ZšJpõj\ô z?q”r…¸ÈŽ*­(F]-eo)ý:mÆœŸ/šS_SÆs S³ï½ï-{—L³8äŸß�È´\Ô•JL½Ú†fäæÓ5I™Ex`æJ¶&ÀÈÜO/~k¾ú mdü%'“íSTƒòŠÊöV"Ž€ÄÙ3ᨧ¯iI~:\È.à [•Nt¥¤_w7û":í‹Nü)9oe�F;Ñ¿¯¹½ a,/\ˆ ƒù4”»±zíøR>xÖÝ÷„ lE”¶­(.¥ïdü©ü`y‹ /O˜dõ…ç` ÉúË$�+”4552‚‹³:x­_þ4"�B…R°õ”Üí[ôÐ�+€a1Ïþ“µh Ësèc=L¸ºw_D÷‰CdJ�¦üÐi³Ü…/¡ ­¦ôÛ%·¡ Ç\ú#*& jôcŒ‹‰†•‰ʬÜq$/*ð5Cþ½˜`³ ¢‹kðíú H£Ü”ªB+) Ö3# öu�†¹3#TÓ7ØÕyª+ ÐZƒR5tôó¥¦ÚŠ®ª7¼ø.šÂ†©;MšŽÎ.58º¸H¬I{2¿�Ÿ¥|¬²<(k©NoÜb²9+jÉ"¤|ç�k7ãÞM§Ô§2Á$'^¦Ï =n RPCpæìùh& FÜ´Ueó~ÒÓ¸ª åõ�¸š“CYç‹h©¬!HS€ƒá‘ˆ½’LðÊ�à½&O� +»þȧTxåŽ\Œcô&�ua”LlÌ2%Ç0š ME[ðáÊ•^ûSâÙ„Ò¬68NÈ ébï¾]ˆ`�QVR¦è42’ï@ ~3™¸Ž”“H¢†|6+ èn[¿çΟ%`R�|z»ZÓ×·Zš;ðãkñüë¯J÷ËÒ–þ�Úº¸|ù2“!‚ñØS/¡Ÿ»'eÒGâñEOÂI#ÝZvë±sã:&m§O f[g”W5`ã†M Âé‹Gqúô˜â‡õka¨¥D6(;ót5`oç"m'ûð#‹½£SIò¥”Í»•ñ´éSo °ŠmEƵ \`¿ÌwX6OŒ-ÆNCULŽïî­ÃÞæF½Âô©Ó¡@ɳ ›6A•rzéLHHKNF}-ŸxúYÊôö$Æœ?…r&¤_‰GY�–TH�8÷€�¨«®"К»k¾²·r]çΞF)ÛZá…9nbÏ{áV¶ëü°á'lø~¶î<Œ�#…\8e ��C{ö°®7¢('ELÙ¾u;j ÓáÍzØN5&jxûöx· [ ²…Ìø”É0vÄP& �YNÕš×ìÊç'«„òæÑ©HŠ»cJST¶bÊ0‹©éÈÉÏǸÉÓ(‹€É4nd¶ö€à�-$ÛÒRº”Ù÷NƒÖ~¾~ÐúñÇ=Þ­Fl›ú–—ž}€ÏQµ¿Òû®÷{Ó#ÇÏ „z0%Œ½aÎçJ‡ÒÞ¢¬§Dü�£Ç`iëBÉn¶ÉL”0¡ÂCsÚ´5ÖBAUãüm¤d! uE‚émè®­"ÙMcKøS^|Úäظc/ê:”0ŸRÃf¦&ذe?2#O »®¾�ζoÕêïäG©|GDÅ% +3ôŸs×,‰-w‘I]úy™Òy¥PÛ„â²’¥c‚2²�^r†)W¥ÙÝ”±%‘ÌÙàó»ðQd,Ã÷AƒÌ`YY3þqt{ôƒmrŒ4«ÀÒ;¦¾»‘ƒ�«­‡%oÂÂ'€IÍ8t)FÎ5ÙVÇ_:�OV~ˆÓ1س{;`B‰õAÆb� üVοgú]²CÝÒØ“I$·°Š�UñÙ ™‹£ó-í[¾ÒßÁˆÌÑ1ËÛ@¶ðR‰-,’]î„� wOã-¸¥Ómåïx(ß!×wK%_I�>PRTìXû̾nòBT´ô]�ö9ò"�ÀŸ‰€�‡|¸ý™MåÛÜÆˆwy û øËRÝÇÛó«ˆ÷£è“%U‹±ð2—«=ÜÆ›&ßõMä ëÍ­�Ÿˆ<òÈ# �À?&Ìôý5«6å$ͬí!Æ¿VÞzý%d忣�,°�ƒ$�U¬+X>b¸Yéî s¶.gÌ ø×NÏ»V²Á$báÍV—æU“é0p8Ù°¾h¨*Æá�ŸÂÁÖ¯¾÷1r +pêb ¬ Vµ·µ"üÔ”àÅ_‚-Á…65ükþ2n*v’M:wÞ|¨*w"šÞmꔳì`§¯‡³=*ëë -%¢9¸E¢–.p5j†6~#'Ý'J$æÓ'²Š("Hh®£‚™”ÝxòivÂiÐh^»�°Š“?{òZÚØî‡$J'&&"˜2¬QщdvRÖ�Œ¯5«¾§&ÿèêI×›C™R}ÊTN§§·ýFû àøø “:|ž{ù-X;¹c%X?÷"ž|ê)Ï`PX¥8§¡„,3K‚Ë>ú˜l¯exîÉÇ1$,˜³½É¸+®&¨KPÕ„Àõú ¾Ö\k 5TÚº!]Í—OIç!û€NáÌûQBùMCÞ?QÄËç–¢xèxlމe|”‘“WŒ0úö~ÿÍJ|³šr“Åyh¥ocWW3¢Îœ¦Wë=8sô~øñzæi¡»K=ºSfý²Sûà®uÒqŒ(E]@�/9)ÖôIeý�kqñ4å9õáäì÷þ(ŸY /_2½à´îkh‘¡‚¯}‹¸ŽÖÂ<‘µ*¦ÅùûùúJ«¦”Z{km}j²ä (f ßÖ*ÿ@uk2 UR¤õtZ:Ðèä 3wo(Qf5;;—ò›¶hm¬�_È ²[�Xœƒö–¬Ýº�¶ô& t�%UJ™µÓƒ±€>ƒîÐ$¨yéÄ.(jZ’ë„][VÑótr³sÈš."PàŠDC-L3úÆÐPR$ Ð…²Ô3èTTÆ–G±ïðQ²D'`Åòõ¸g|¨$akm¤�Õ«¿#ƒ¼#F�$U‡X²S“)m £ÿ°QHÈÍÀô11ØÍW³®ò^(árT&(_\\†+W È·�eZÀ:£�ÖNUSc¡c ¿à‘¬»ÊôÆôEQn:ÁÔ.˜R2ׂrØ Pe#=9 ÅeuÆú)?nØMå´4ÔKÒ« ZU Uñ¾V�E+Ô–/E¦PÖÓ„žµn(©(�KgÆÊCŠýùK— ¦£“ ÑF®üïÅ/SÒ7› s¢Î«[J†X"ÖïÛ�Ù“¦HÛ™™Yüò¢„qxú�Ù]"ùGÖ×”“I®ƒo¿ù†¬X_Lžu�´¾øHO¼$±V[é,X™..ÎÈÈJAD\²äÕX�qgNœB>¥JÃã�bⰞĕÏÞ޾·¼_Vxï�WPDYW-Öãk•½¸aâôåKøaÏN ìa¾Þ°�²"¤…�îž×;Oºö$¬—¯2ðU€±2á»ÕßàÌéS¸db¤CßÔVÜÿàƒèï9cÈðå}_?ý| s3QD¶cf¥–«J1yÞhi²ó™ü#«Ø§6;7�™l3ëžëIIJß*™©ñøäÓ•(`"Œk½…ÒqþÀ.Ö•f4¶¶Rºzl_:2OKÉ=®®.HHÉÆÆ~D9cïâêŒ çN‘ÍêAæ¢9Ÿwlûi=F�#¾£DýŒbûAÉv¥.h›»£¢ ¦M¥'® ÊÈÍ _xkc5 ë0{áÀúЂ3i¥„R²~½§ŸGU ¾SúQžXccc¸º éë‹X�î¬+e{p•ì`á÷ýGËÅ‹aMðX¬i§7P¶^™ÅM?zÎïßNv²å�õp%£6®¨!hšI&³åÅù>(ëR‡�ªlì�¡HYüF&0\JÎ…6c¡Äöùí¾Dus%ŸÛìݶU��|M{²þÍ`FÖß~5üžSPŽ—ž}Cf[“‰sÏâévcyN1 †ñ=A©ò•-¨$Øš¢¦‡n£X™�!³çÀ>ПI IXiÓŽzŒl/“T¼ßý L*u_VÇ£ ºž7²AÐÜ)h%{Û”ìn+=ìË*�²–6Ô±e' Ø ö ¢ïtî�w?^sæ-xóæÍ“Ö¾±>x|§Ô&?|ßC}gÿíÓF†r€õo�ê­ï°’Þm Û6ÔväµÖDœáï€;«3UÈ^ð·¤ßJÌUygñ­DJ¾Î?9dµa2”dý'ßåÛ{mæ¦-)îöžÝÿîÞE"‘Êé£pjªÆºv˜6mÚ†xOö[ÿ?dƒe `²ÿjø"äÈ#ð'" YÿDÐä›È# �€<òÈ#ðW"p3€µ¢ yIá0¶ñ$#i †N¿2Ïß=Lnf"Ù=¦ôÐLBYfÌìÜÑÔÖH°FíwAV§~z÷Ÿ›ž�æN=d“½¹yÛVf_…�WY9‚Vy”¬a'{&}Vw‘ÑZ £¼ýå¼üêËxxÁ"úY¦áJ;¤äçÔ™w!%)ï¾ù6 ô´alj�þwš«p߬é%«í™kFx!=·ŠZÀNúÚŠlI–µìøÜù,ò£.”™�È‚Ò3"+R&˦@¶D~zÎ^L†¦–.ì­Œ°‘çíä`OÐ&Udjjh“ì@YgØÊÚíȳ¸ÐЊx²ÉÆ�ŸJ€RRU;;;Œ›0��¾dóöÃÛï¾�¹÷ÎÁòå¸n�¥•Aã8 2 ”^öárŒ?¦V6dî–bêØQp¦|ë\ÕnX¤ÄÁ¨¨ÁÂg�``7=þ6+G|xFfá\f¥K%&ÝVE- à±&±€ ã'”îlni´‘A¨«k$à>+?ývd§Z�å§gh†I³æÀ‰`Øëo¾I/QEŒ=Õu­½À/èg`©µ±M5eôõÜM€Íd­£‡§¶l݆ÊÊRTÒã³±ªæôäS#ðèA_á}‡ÁÔĈ̵`hÐSÖ)/šÄuˆé¾²@²Vñç¦aÛµ†Zš¹u�Mf\ë‰!‰òP–d[*§¦H «˜Wsß#”±ÕÂ=÷=€”Ô ä4^•Ø”õ”¼?< £GŒÄ¹ËQˆ¦œæS fC¥«õE¸xö%J£fbÔ”‰ˆ ãx å©ï›û¥‘m¡©Ô ]CI6XÔM20�\�š’‹Ácx_ººðÞ’GàF�ÒMÖÝDèÑstİa˜4a<<ÈžÌ/*ÇÎÇPX\;[#ɯ÷äÑ#„réCŠ “fÐO¸çNîF—š9ìmÞZ¢,;ƒûT¥„s %œ )[ Eü&Œ&kÖ¹ù*fÎ@uk*ýO=ÐÑQGfç!äP}á¥0˜ u*e¶uÈ.�OÌÂŒ¹ÿB»F\­œÈ.>YñƆÚÂØÊŽ ]]dåÔ�D =RÛ(K«KÚó¥ÿi¤E_׿&Ò´ìC°UèÙ\×Ô‚‰“¦1±¢‘¡'0‚è«ìSÊòN›8±`•m'<5ßýàm²ÝH�¹Ê�šD+ÏO¤wfÒòª(™mHQCÚdû�É„?…Ͼ@6k9RÒŽÓKØ�uÚ #BF † ½¼ìL&©¨ÃÝÝ�,͸±~·Ç#.>>Áñâåg¡É?þqNÒ«¶‹@®—ìt~1Î%«Òž~‘b�•/¾üRb[‰ Ñ6ˆú*Ø×¢3 KCŸmX�™o-—$/…/«[Ôs±žökË�L¹â0Ž?º¯¼ú Û„XXë@ƒ²æ”î¢ÌÞ«Kß…�äc'Žã§çÏ�`âL7×ú° ˜}÷Ï€÷ÎZ<®£«7‚ÉV¶¦T|IAq d§|Ý8™Ç*§_t#YŠÚ”F?!’Y UŒ$ŸëëVþ•/W© °{ËZ¶w.Kµ– ¶±†J;taëˆhv®aB……±.T”:P\QŠø”,øûºaøè±0§¿¬P0 «¬$'ÄÃ�Š ¢ý/!+’8455ùÌ” /ý*ê/…ãñ¥o’ùìŸ�aLˆ‰F,ÙýÞƒqàÐÖÑ2{-¤A0ÓeEËØÄDגּõnd° €U­N¿Â þàíW$E!o/J}fmØö €õ_sîÁSO÷0ñc.GÀ=pUÈ�Æ$!5…ä+èQ‚Ϲ¥1‚½(û«Þ…ê ú¢7 ²�Œô!^LÜèÆ™KѸ›„{ÆÓ«½ÇÎE™êªŒé‰cDZ�I ƒCB™²áÕ”^ïÇ÷ÿñ³(/=¦æfd‡�™~ÇŽ”Îñ_÷?HŸô |ûÕ—ôjÎ"�ɤƒwq 9 mLšHƒ¦� Aº½;î ÛûîG¾£=œø.¸ÿÛ梁^>zÖ­ý¶�!ð]þU¯´öäg—лÚZöh?¸— r=ìßZW¾¿òòÈä/ÉÁLþ6±0³Â‰ãÇPjÄ6aÜxØó<­Ôó½ãJ6°¼ü³#Pá4B‡¨ €U\©h'ï´r«ë�v]òó•GàvEÀ£_¿ÀzêÔ)¾—�ñúë‚}'/òüs#0eætØòw®-û~¯ˆÿûB]«ÞÎ���¿·ú¯.ý6âÖ:9IôAȼak"Nþa_Ù_½ ùy~'r�õw$_,�€<òÈ#ð×#—xUÚ‰¶VOGû_ßãÇ^}i3e:MéoÙãsöWΪ©® ÇwoAs‡lnyWµÅW¡N–ÍêU+�›x�l=ʆý.Àzãl(H@²0Mõ4Q“�.²ãê4x^[Ùé_†VÊØ>þøüT¢ô©–¼ö¶ÄbZ¿f5~üv^yë]ÔÙ>Ê™îÝ´ž U2®æÒß4— ž´‘)WZRN6_<Á N¨¨©E ™J™ùe0µu‡¾ž.æYê£ãJ Ès¢ £¬ôÈÎô­;¶oÇÙàjc@ÝSÚ÷Ä‘)x¡Ž@†`&ìú�¿ãæD£Xô× #®'üÝ õ�¡ "”íÈtê‘ò”VâGQq1tÈ‹�‹#Sp#Ö~÷�ÙøÂSѯ53ŠÝ÷È<ÿ̳2d˜´™ e3ïš> I»¾E1ÁN·ur®qÞ+¾&kÖU+Þ’€F±Hüé¦Tæ#»�cÀëoãTe#å\CQ”_ЗTG�ì_²ºÌ,œ C_ÌACGRžÒûöî#؇¥ï.òpKb89:èìFUQîž3nžXB¿@g{˜`êd,K¶©èô¶ èG9ä¸Ó”;Ž!€R�“ÇO#âÜyÔRªÙÄP-�Ê0ÕÑ 8’@ÐÌævŽ(×ÚöX¯]âu#‘­*²`«(7Ô”Ÿ§.V±B'�T1¶Y¿ #æþ¶ïÂ>²@;tuZmÇ�Wwj,Ä z—<E�f œ3‚×÷|UTÑ"ûk5´´T({;Sg=Š,Ñç#£CŸÄ&2{©q ;ì?pvîAci:^u <xÓ“Õ–þ¤-U �–RªZ‹R�F°¥¬qÌ¥SHLI#¨MV¯+ÙÑî8|:œò©?A‡àIGK ”:;±ÿX8‚‡Â‹É –dÇÕV—#¯²–@“ŒuµMS>š–Œ—cÜGo_ø3©À— uwm9*ËÊPÛÐH§Á^+ÄG_‚½+«È€k¨„º6ÝùyôƒtG}} A}Gú·ÖP ;#‡��6™®W¢?…#á‡�Je«ÂJ¿ TtÆNJ� '˜õäó=z"åx‡².ëJ²¤"ö7+ÆXÅ`ÅX…J«¬þj%ÄC§›}{|Ç$„¶á¬™÷ $8 !CG¼7£t­2.F§ ŠR¹ƒ$³ÛPÚg:¥¬]);åá I[?½ä\Š>F,DnÇ©‘ôÌM¢G)YÊ”¿¶éçˆÔÌT”Ò�vÜÌøxõO($#0tÄ8Ì"x¤E€wü]÷Þì’zçݰŠ_  ¢”¶YE‘%aˆéR2·E›`•‘ y‹g·§ÝÏë`©“À Ÿ=ŠûcåÊ•|¦Šñú[ï@¡« Á¾ÞˆŠM–üxK7…I÷î¦\ó9úCWãÁÐr2‹‡ Ÿ5eE„°Ï¥äjÏûCƒæ¤S§õ°„èi›™Å„'qZׂޢ”ç^�¾©-½¢ ÞRBÙš ºdMÞJ)" ±®0› ñFÔÓ‡Z�LÅ6%-PƒYöQ&[ƒ�’U=+¤Ò§Z™LI з٠CFŒº`-/ÊCΕ ›8 Wâb˜”á‡vÊ4Òã·¶±ƒ‡úCÏÞo¿ú6zìQéÃÔÞÞÇè÷šOÉúÉS¦H²ß}V±b_€õV®M¶ŽØÿ¯¬b�Šò2©M•­ì�0Êi‡††õ¬b™=ŠS3²ñÁçk°ó G¨  § &­�…«ÜŽªÂøû2.Np2פìµÊrÒ ÐÑNp²€rûA\•ä„5Ué™®(Ïe"CF „LzL·³ýJJ.@iYýxý0Àk7îÀò/ÖÌ5Áö;ÑÌ:¡¡Ð …F¶j‚ùlÌwU!´Ùn @Û‹@ooì¤7|ImTmÑÙÖ%±ó.]ÞGùpSXû†’U_"%ˆq<½¤øaÆÒwÝšoqêðAÌŸÿ$Ôø^õ^…ÉJÞO-!6I 1xøþ‡™¬b†g_|SG�Áp*¬]· Õ5up°ÿe§�“Un,Ë– _tôÉË?#Å¿)%¢ˆ«qÝ~üº6õfW(çº ìôýd´" çá凬Òv<ñÊRtwv`Õšõðî§5Jß9zŠì½b²äè­hk‰Edrùùø@GS …d�=8÷^‚ž¡ð,¼W½ðýÚu°s´EjZ.™…saÁŽßISfbýÖ�ÐQn%sÇ-ÊF>t(R¯fÀ˜r·ºGö ‹^ ¢2²†K³ÐzŠèøMß¶¶»(íÚÈÎiÛC{ѽ} Øií­Ø ¥vèµuÀŸ²¥¢ˆmDF¦eƒ˜w•Á³ Ø ²¦$¥�ÕjÒóç2!ŠÝ˜ ÚN¹œ:|sö2A½l‚ÅÑXøè“xöñ'éëÚHõœÁÙ�—BíËO¡–z²Ò·ÓQdSÊ@J£»ï—þthªµR~v,&ØY˜\‹B2ØZ@OÔ”xª˜sÿz^¾,¬bŸÊd5¶QJvâä@FÜÓŸ|W2�ªè¥¸ý{½d™�?s’ž–Ösq5|óí:äee†÷;91û�ŸEsk'=¿Å#ó’€\{;hhPê’ [JJ2A<h³>Z’-ŠÄXÙ%õŽeR“› ôdýPÔ×�)YÍ"¾²ëì]™"+Öü¾…’L«ðpSJ¹•ú:u…3§ÑÊV›VSÆšàL…W0Ð’ºÃ•²²ì QZÛ†SE;ºšÐ¥  SDœ9ˆzàºxøà¹ç_%Ðd†èôtÄÆ$ÀŠÌØêÆ4�±ÛEáü§_£oo<)ê@`Z�Þ¶ßo؆��£ ad…üc_CÓÌ ¬?Á®”ìíD‹ŠNž<‡Q¹±°£7p?ÊR¹n 2 Jèùk‹É“'!§¬¥Ùe¢‚ A{oÿPXÚ8 ®¡údá1‘ `è8Þ‹`ôsvÀcO/žC;¡¢¢Ap%û™`‘–œ…˧¢ðú;ï¢ß_´ yú¹yØ¿c+RâÈT/ÏC-}a•4 )mèNV¡'¥EM0rò¬üf3 Û’Ñ™[�Ç/Jž½uôôÈ"%’I¢èêêJãßû8rì4ZZÛáååõ‹UÓÒcÊ’]Èá×J?·þƒŒÁ*Ö«¤4n�Ö‰wÝ…Í›6`ñSO¢]Õ†¾¯ÈÎ:ŠIaAÐ%h¨¬§ˆQ¦cxèh ¤”m·™ØS§ ©.§cöáîY áL ë?S¦O›Þ °Þ¸½HÎ09±OXû.õ\!…-+‚ñ8qêTcÇÎhjo§Lp7ÒS£È2×BsS=åeÇ€Á“‹_¤ßécôIAâù£<‚^ÇöP×ÔÂ)‚¯éYWñÁ;ïcÑ¢R°Xo°ÊŽ­¥­sO)ÁƆuÒ?$ìëÃóH¾¦–×¼MŶgŽÆ•ÄÔSÚµÅh¯-Áœ»§"2>‹`çI\¤WgQI%èGœ—�UuCXÛÙ 8/ f˳™l£Ã6zب1²S‘ÆZ:zLưƒ¯XöN�×Öõƨ5W°>vbÐÈ1ˆI¾ŠuŸ¿€²4HòÕfææøü‹Õ”à»èær�ç#.��¾�äõmîu'ñ_bÉšµè±j"eÚE115—ÆÏ-~Ab²J_®}D3qâ­·^ƼDˆ—#Â�‡ƒ|o(µ2éHQ�ê 5¬×•LΰƒŠb.F%¢šmpQa œíáãçŽ@?WÔµkðÙÁé}Ûñömd…߇�’zRJ"tˆÚ™h!„Þ¼yX±zûâµ—_Bòe‚VÜ÷(¡u”M§à0BîºÙLXò¢¬{-ý’_yåYœ:wŠíO ™óÍ=l,Ùªë˜h1xàäùƒp§µ åÑÍoooŸžÁ‡Õíżø´8”V–`åÎøeñìkTVx€ i�žLÏ_#Þ„‰CÑxaÁ|)Júúz0�†[k[~ذ‰Jª¦{’4úÆ[>}gF 癞º Þï¿çS*~' iáÖëÏê$wæ•ËÏZyþ �¬=wqßa&+dòéòòÏ‹À °�·|Qÿ„$(U&ó‰þ9ÈzË·]¾âß9Èú7Q¾ yä�G@�ߎ€Wÿi«¸â¿ƒÁÚ7r\•¬…ìÔ®¯­fÇù/™dud—Ô•A×Ü *jºÐÐ4FfYµ˜èÑÓR§g·”üYJÔ°„XŸ!08ïᇰaã&lä`H@Ì’ j_�õ±Ï#;«‚Ы2|ý¼ÑÝ\+ÉÐæ—¶ø †®¶ Yy>H&Ó´¥¥W3ÒØñ^ •Î6•UáÈ‘Ã8~ôÊÊò0zÈh2ƒBèóªM9^kìÛ¼ /ü·$cûà÷ã‘þmú¾j£¶4ö&jô U�*åF[È´Êæþ«TÔ¯YÅ…©Õö°[-jj`K¹Õ.\}‹1�a§¦š¾³n:íÁAEÊ«_MÁÊâæôS4YÕ?y&}G?ÇâÇ@7emÍ Ú pwã=ö {÷œ-(•JFsY^�ÇõîK6!ɬxZD ÖNC#2ž�”�t¤¤éÍŠˆO½)El«DÉ¢¶{†Æ‚¸,Ê–&PMÏ¢d¥3®‡žZ;ê[¡LŸá­V¬PÄÜYS‘ƒÆJÊkšt!%¿šò»Sù¬h"òÜiÕHLN�•:¥Œ F[÷sGLb2zAK¹ Û Öøp‚=yWâȦŒFNV"Žm…!ek[뛑‘]Dá+”2 Dè�‰ð\÷!ô¡ÝØåñ3 þºÂ�I�~Áˆ8±—ÀJ Œ»p22�¬BâW”Â�‰<‡œ«™”ªu„>Áò2Ä-í*øþë刿Öô‘m£ÿê2r ˆ˜¡¦½’žžSéÑZB]>k %€5ñÜ+ã³OW3Ñ�ûpp�-™³NVöÐ¥7¬Oð(ú½õ¬"®………Àz« ëèÑ£o °Š}Ý `={þëU¥”íÅ*½eùÊ÷ñ‡Ææš“Ñg@@5‹@·/ìÍŒ¡a?œ’Èþ˜÷¯§pîü1\Ic�§ç¦Wúã™÷0ã.^ˆÀ ²>Ÿ^ü<*3’ÉpCóð¸÷@`BHH €_<‹7fV  øãwz÷&žá£þ(6c?ü™�.Ve’…ÒÖï¸þ›˜úÈ¿1zî|Ôñ¾—çd@“^žd2ïß»›·ï¢Ÿ¨=¯;æ¼§õ”ívf"‹oà@¶ÝZ|Ö{¤¹O’­<`À˜R¾ü×J%¶Õ(ƒÞ·ùkYYüØR"Í«¯¿ŠÖÝ©d‡ö-�¬¿B²:36ÝLΉK,@.Ÿ#!]E6¢�u3c=ôw°‚µ¾Ò‹«PR”‡B^—ºŠ*%›SÉž/y…÷ݯ˜«(æL.0gž›“ƒ={vÚҿÇ/¥pH¦ßð46u`þc‹PH¶gøžµ6ný‘‡¢¶$ùÙ 8µ+AjSè“y)+ùlçÅp#Èz)2Šu»ˆ~Ã7geÛ¿ûÖ[(.*‚ŸÿÏí¨`g €U ù¼gÉq‘ôPu‘m‚«ÉWàáíGVG Ö|·ý“ö†Ž�á,1ÕÓãТA¿m2`âè?ÚEéq+²ä)G_Ói„±cÂ0’Œò3ç.3éÈC‡cì/àƒO?B—Š N†‡còP”QM ˆÌÒ†œ³LDòFF^F „]á‘Ò}l¤\v]«2s‹`ï1ö!•íKQU=Û¾ ö÷AzZ*Ë ñðƒ�a,Y¦~d� olúœoÚ¸‡IACo*µ,VYñáõšS-A”{= +3&åØàÀÑcÜÖ„õU“ÌkuÜ5i‚´Î®½§pòl,¦L"}¿•™$´œ)s+Ѻ3Öv`¬—ß*²öUb–Ð>@H ÷ý}ô[ÛÊ—É# �€<òÜÞpU°ÞÞßi{¯ol¢êX tµzöï”óÿïÄï a#÷d½SîÚ?ã<å ë?ã>ʯByþ#CðÊ¢;ðÿñTä‡þE 5!JY­l)©©o(¬Å�éZ]WŽ’„4®XwîØ„];7q»‘7¬që_?ùvµ$÷iMÖgfæ¼øîË8|ô0�ÐAذi#† ‚82Á—­\Š1#¦bÙ²å=f¥©sé'™�-Û¶à½w–!�~¼Íeiøzõ×øö§Í0UªÄ�ñwá™G—ö¬â¬Z»êÉztÅÙÈ‹˜v×½ëå˜Xý‰w¯xöê/œ•)úþñ®�8%I\Ëž}ql‘ýl¹ø ÊC[Iƒ˜×·ˆg^¬/’2ľ<}üPI/ËcŒGUy%Ù¶î˜9k6eà»È¶nAK5U˜8óÖëKàå ÉšèëCUY³gÏþM€U73)­ÍM!Ùþˆå¥¬gc'N`›[D•�GÅ¬ëŠ YÚFz:Ð$³´’`«|"”è¹]K°;}²ûÂOP3CÛçJ*XÁ’íÊÄqƒ1zP ½@‹0ïÎÛj3ÐÙZEfnÂO�†.Ù°éié(iPB*Û3k Ìœ2‡öî…AÊÒ¢LÊÃÂÊÞ õ�S£ÏÑÛÚŽ>Ì p𠣿ñèèêIƒð�º`ÇÞµkvîÞ‡Ó¯“ûž—˜ž0iÒu«˜ç>À»—ÅZGu1ôYß{âA”Öµ 7--TIxø¡û�“| învؾç(ªË+˜4ÑåŽFh(ÕS‘A›ãÕèm…ìÒ8˜)Á€2Ì]Šú”0ß Ë¦TÊÃÏ…Ù£å” ÿü½¥”ö­[ÉøVA>Ù¢ÁÁCèO>�>îPPR¡‡ö ꜩ2¡æÜ3k¦Œ�*ÆÊÕÖ.®ý ¤i IôSRØ„Œð0ÿ`‹Ë#Ûx"üN2Q»ñÈ‚G%€µ¾¾mm­PS£Ñúµr96{ÅäqãzV±ÈšÏVZr2>ûö[úKa—«(+KƒlÛþýì™t¡Ï„�ßVß�­/Æ\•¬}#rçO‹NÌ[KE[)ÚU%k;u£»çýâ7Ò� ùÈ# �€<òÈ#lß¿‡aP€‰‘ñŽ6ªô´r¸Ó@Ö;6àò¿ã# |Ç_�üä�G@�ÿç¬Yû=�£X̨Àú>ùáÿS¨L¡I*ÕŸYD硃�þÅî~Z½ žþ”:½ÆÆ9øÕ„ø3›IßNgŒ¸;ª�MCé«jçzÝöï¿· ƒÄ`zÀ‰ÒÕÕÑ»üÝ�Wa}àD'»‹«;bOÁ®-[�SQ…vsnÏúA¢³‹¬š$PFö»~”ü)U™i—ËŽÛ.„Ÿ»C3D�atq>¶í=‚Q>öxsÓ´7u±¾v×@_2û‚‚‚áêæ†v‡#°¿1ì >szOvõžß휘•õ«»—I„ @FV2ééLOÆ›! ,ʯu6fpÛÏ–/Åçk¶Ië¯ü:cÐ솜ƒ{aĹƒ-MkëKKõtUÈÂlÅC ž�Ö]òÒÒX|LÿJgW7ˆA”‘#F`РÁÒôo}Ä2IDVº”è'¨;3=D‘=6j¦4ˆå1Ñ1Òj.�?#�¯»F‚_~tìm Œ±Yn¹Êmðyð)XD÷Ķ!â´j‰ ÕÈ^áHïDI™¦ŠØHfjg~9<4uá@Yf¯ÎfL!ˆ‘¹õGÖfC§_0;ú£ðâ{y;yÜ .?õäÈÊÉbBÀ:dgÄ!4x8.\8 'WÊP*¡¢0Ãè-Z\­MC´Q¶5!3‡uSFZ&xâù·èk»/ž#»-›¾¨—1ížyá<Œ,aHà'1-“ž‡æ "7Z-ÍÑ2e²R“¡mh€¨ì�ýÃÆ3©` <Ý�PF¦ß«ï¼‡´+©RrÄÑC{ÐÔZ‡q¦Ñ[WJZƹ»0ïÁIñ5”-¦ñÙÓç H<<â f˜Û÷®cA¿ÖhÆþÛÕßá›U[¤ùÏ¿øYä7°{7ü•‰3çPzV¬\&­ñì3Kz×|ÿ£8qvní�÷[çΟ#¨½‰I òñGrJ.\ŒÀû+>‘@V=2n…'ëaŠ”ÞÎѩ潌ÇKK^áüAxíí ¤TDÉ\ CCÌœú0–üÚë`çä }4’˜]š�­»@ƒè¡{!ëjžéEÌ&ðôè‚G~ë4¯[&˜T²çYŒ°*«Ëb,1O€§âù× WzjÞ¬ˆ}ÉŠlŸUåÅ“‚÷ª¬‹1ô·Céã˜s'_X…�›6I›Œ›ñs=�íãVÆ¿ýLß?¿çwÈ£ ýêîŒYΦð¶Çý(kÜEVn¤¦¤“u»›þ¬zˆKN„¡®&º ÈÕ7v�1Ù„:ÁxÕ7@d¥bŸ^„y-âýk¥Ç³%¥n­ÐZ›5=W&„,Æ–Í›y�ÃÇç2òòXê´##)~ø .ž~8MÙÝâÒ4¼óî'(..¦‡h¦-|Y:g¯°–dey)½{mozQ—/IóŸx|!žÀÂ_¬›�Âä„þ½ó?ÿl%L&T01%#9.î¾8´g+¢._†±µ#ü™ ¢¤fÀû}mU8º¸ÃtP7ŒÕì‚»då*gS Ý­Œ�1yüPÄÜHÄÒ_a§Ÿ/‡ê”p4êªîÄ _ŸÞHKdÒO¦&œìFP:cæÏ•ÚŽ¿�ëTBrÇ—éû,|aE‰`ÜÐ:jøhé»âOÌ•ËøaCfL�‰e_/c½l[· ôödˆ½^[–*&ûÜ«,&«ßAZUG–}m}-Té?û{¡EñäÐíï±G¹�?:Šg콟߻}ñNŠâ9ÿ$ŒÝß{ÿr{räÈ�# Gàÿ#ºÚZ“\äÈx²ÈLÖ'‹“\KŽ€9��€YU:ÚÓcψ’�rùE ¶Ð2ýU¼ïNèêê‘™óËÀl9C“‡r‰bGq”55'[OL¢¸ A�†1LÌ�alæ(ùE ©F-3iM÷JIQ;Øseü„1èDÖ•ðc �‚½­•4uê�S»7#‚�=û £Ì¯½1ŸR²õdÖ(“…¶ÇŽœÀÚ5«°pÁ¼òÜdXéëÓ«î0î+©r`½ì)§¸×nhQ>Ò¶�›ÄÖÒÖÔDeY1z %í?ƒ”‘×oâ«%Ÿ¡­›3Š(™ºiÛn´që ²¾üEû—_EñªåR}ñÇ;SÃÂÃ+H’åm\ñ̈�´i_i <°>ŠÅ*º XªbjZÒ“náêå0Ø:µƒ1ϧ3·ŸùÛ×70àÈ‚ëÛ§'Ù@FP‰½Tl¤­•Rr¯Ü|cµÔ ZîݰŽüô&íè.5›BÉQÃ_ΈÌÆ')GŽ�˜f>û,ò³3)�Y†!ô¬Ô'Ø'XdŠbIÉO1=êÉ`èC�E-Ü"#·£º: ³þÃ%ÐJá×&Úª4Lù·œýkEI[ë¢|\72A1ÁP¯âl‚¬÷%æUñõ«°.,ÁUJ›Ö9vÀݤt(Õé!;· 7o$pп>ýÏ{p&Sṵ�)F ¾ºÃÇN‡“!pñZ!ªTé™Lß`kcmÌ�7s澃ãÇ·cÝw_€Ä1Ê^¶‚/™Ä_.£t1Á¤ç_œ'[k:¿.]ÉB½kJ·êÐãWÉ«LŽB�S˜êëñ|:ÃÀÜ”ªÇLëÒwÓS§ÓsØ’¾”d¯ùt#[6„}�G)™»ùdeß ÀØwÀPEH àjÁ„òÌ/³oYéi¸CV®7ˆjZ$ª4¥U8}îrÞÔÔ\b¢Ú’�mûÄZöåg¤ßeWÿÖ`pH0¥} ua’‡`±nÞ¶¢®âÔÁ3(-ÉÄ�”+˜þÔËØºõGÌã½ûÅò¥ô�õÁ€Qƒ0iüdøù`p¿>d$v•úu&ø ¥^“‘’– ]MßQTRŠ�/@yU’³n`Ý®½Šb1 û`̘ò RîÜ„½µ#¢Õ1³zÇŽ­˜E@qHw„(:|æú÷ìÅ$’Z»Ê�<þVz�t_‹ëyå¶­dù™ð¾4Áe²cÐ+ä¥ì£ÚBÀLȉ·%p-ê‹¶®^¿�°ˆK¸Eàû°¥õÍ[·éÑëËçåBD]º„Cö!áÆUz‚Æ £»g³¦¯ä˦<­¹¥E³åÄ—ÄЃˆI*æ}SAobÊ’óžŠ�¿†\Þs­™èRTA¹ö‚B��kfnƒ±#û » „rØ£,ö˜Ñ£püð.&è Œ’Þ¶LQæû(.æ²°f0üjåôéÑ)Ù¨'[÷ZB2fŽë sC5tï7ZbW–••!88111”)ïÔx¨V�XE…{w!‹Lò¢Û—É67±ý{ùÜ ¿ê©Û13_�}­•ù¬1#{wÅ—Ë%�õbÔqlXó bé­�‘t�¤EpvéˆeŸ-µثPÓÑÁŽ�+¡¡¦Œ)S§á^I14•0bÔì:‹óç£0vÌ0Ä]K€±¡)â»ð tVY-r Ëáãæ mJ/Óš‡Bc%éå¶N­QN…‚žO½‘,£¥IÀ•ãUÁgOÓc¸¦–Ö(¯(ñàª<´Æ¹¨ë˜0ãÆ{8ê(}ŸQ¯�—Ÿ›‰#‡1q£.¼–îPQAKU…’àðâ>·íÙ‡*¾_ûõî °¾·p.•#<áéÞ™«= §Á’ïò@ÿ —–R^ùásšך-³îfg¡å‚ýyý ‰`QGH 7•n<9œ©å=&b®¦¢!-æ!ó~ UºR+éûû'¼¾†ÜACëÿmkòör~{âýÚ@)#µXE •ÂKV—÷QËÿõ~{ëò–räÈ�#ðwŒ@&>ÿ•Y¬ÿÍ9ÉI’jWz2”&´þ7mÊÛÊø+D@Yÿ gIî£9êX»xËëŸú ýA�£ê¯-¥%%ôæëð‹› €uõ’ÿ Ï°qÍê «`+ª«îKëï$&Rrô6ôŒi¶ðëS4 ¬ €5*òv­Û„ÿ|¼PZÐYXuƒ §kgŒ1ŒÌ×i±`Ð’;½,…a¿~ý�š�{éçÉÖ{ŠX5ú …gÏB{WX£(ï.}&-ñî‹98†’¼ÜJ»‹îÝ»££›'å[ÏISÌÖ ¸”_C3;´ª $fZ¦Oè…{Ö·Sëf¼�;:F¸êî�.Ýè—z\êßi‚Ûë´«£ ßûåŠCùMŸ ¦‚‚uñs@Ë£v ~XT8ƒp%”-!�(@VQÀ*J%t`ÆüÓåPrw…ýà þdªƒÇ˜¿“C©[ 89ØQ*U†±=é¯(ÊÁíß¡˜r‘ûÈêÛ°n#V}õTëµpâ̼ôâ‹Ø°ñ?zcÆND2eœ›úJ ´ø#@ áé'Ê¡ýp:äÃÎuÊ\j±i³¯âXë9àoncS7X6cûR*5ü|c}Áœrì.íÝ·â\L£l¨X%>'i††PQn}W{TX¶—®G§¶ÎÈ%M_ÈñãÆ ›ÀÖf0ÑVÅ¥ã[PÒŠ ´Öí(mj‚ÁC‡S¦u ªj«)C½çÂÎK§j*j%cµ¼ª†@–=\Ø×ьՠ!c1$дR$°Q ?²ðbéûÚÉ«:uí!yD:]õÍ*dÐ8>!�ìÙPhié@ÓЂõ{²}&7èèJ`Ý•[±p¶tÁ.&èPö9'+ƒÒ¤æd¿V¦ô)€VQ²Rnã�÷`êäÒ÷¦„‡aZÆ|¼ð#„…�•X¼w îøúti¬&Ö‰ÏM gd9AÌG³÷Û�ä´[R\Ý\;5¬ád-¿úú‚G$�U0T�€ ‘ç±øë fVÂÇ»mÜ!guÒ„IÒ¢x²�ïæd¢�£;–µ�ò¾N á3dÖ¾üül2ïzÑCÖŽ êÇ FRê‚UIôýuKQW_ƒ½ûŽb°QHLºCùi-øD·2ÖAaMÜ\½àigC6¡4µuQZVÁs 1.LBˆ ÅÌçfcë¶íxáµ9à©ÆSÏŽÂíW��x›Ìùéžlz_‹ë6??�Š�ÒqŒ9^^^Od Ø�mGO– îû)圚žŽäÌ|tw³Cô͸ñ™YM)òEdø†‡œEaa1¬)1íAÙX6-Ç�Å Ný hºø7ÏÇÑùÙÉãy!\Jv± 8.Ê­›7|ŠñS¢7¨2“ jq–¿ù¼´è;dèÜŽŽ‚½­]Ú·A{;#Äè9|‹±±Æ”‰™00+¿ý‘×fYÚjèèÚðn1r2¬±{Ï~„DD#61�=ÉöÌÀ°aý)}Ý‘áW(—ìIeÊSÞ^‰`Úªo¿Å:¾cjxÿuòüùçOgß.SYqZ»ùH`Ÿ8.ÈúÌ¤ÑØ¹å{&JÄIŒñÈ‹a’üñ±CÇ oîDÉe‚ø™ì7ýpÅuäÛµ;>&ÐêÅ>í Û¸ˆr¾½¡gêxZë 9ù�´˜PgÁ$‚«dÒRú^A,¨ÎàÜÆÎî¾(Ï£·3ºùvB{S¾c—  »Á|ÿ�<² K—Áû*XI5ÊS豚Cy󻸕QBÀ6ôf�8y*RéÉ*€gW7wx8˜óúMFLJ4Ukq'ö%ú¯‘‰�ac§ÂPW ßoZ‹¾=»K¯Ã‡Ž’ÖŽíÖYôq<`¤Q3€U|¿ÇÔ%e î?P|•JSV±¬å§r+•F€U¬ÿ#ü^«hÏQXEäòÿ¡X þ bbÝ6 Šgþÿs÷äÝË�# G@Ž€�?]ÀФ[ÅJW¢²sN1cr‘#ðOˆ€ ²þβ|Œräüæå$CC[,ûÍ”7l«&ì‘f+Z| Ö–k‹*¸KF×í«ÑdÈÔaÕ¢�TèÁ‚,U#C!:ûóÅÊÆ³(¹úsÅœ Eƒ§WbãpüÄI¼úÚ|zº6 €—år@\ }zÁ§[/²™ÊÑ¡];Ì›?ÆŒL-ñÚ[ï¨ò ˜`.ɉÖ¦`É×kñôÓÏHÞn-ù݆�F¢{MyPc8jC‰«JjúȬ©�Óˆ±ÍؤælËÝ݆Õ÷ÉÝ€½:ƵwƒVëŽH ¯]ž© É2 �Þ“!a+Ïø'¼Âšú„m¥äêµßAŸìc[2üž¤äo_‡”y3QvŽÏ¿Ö°6ÝV=…*”¨Ýk[hjèábJ:^ùä3¼O†fmYLxÊ««àÔ¦-<:yK›»wDYY)¾úâpŒ›rËíáÒÁÕŒ…†º* X›[£}WìY·DòotpîHÀ,2,u›v¡Ù¼öíØŒ�¾7ef³u?÷%4Œ i2"E100†¹… ­šÇI«ˆ…ˆ­Û…$É»RÔwqë„Þï~µisq—·Eªêh3jVÔâ ��Óê50î> ý{õDk—6ðñ#cvðHŒ#ÀªI¶XiiýPíáá“6�ø,Çkó߇‰mh‘Ý&Š%cxíb0:´wÇ�!c¢øáé/`ûÎm?~*±^Ðg¿÷ïÛCöA¨hŸ>u±×b0ý¹Y¨©.#{{?úöí�Cd’]'Øq7Ÿ¾†•÷PO0¨¸ð®Äè ìÖƒ ļùÆÛlw,~ä5óþÛoÐ#×Ë~X�)ÏÍý À*uðÁ7úsê UÛv*”A"£ÌAZäîêMV]º�e¶�žªñ±W(ÃzQ¼ "¬>nÞH#3ZIMÛè{й³¢9éóæíëÀjB?O²ˆ%�,ÚT²õõT°îÇex÷ý�qp÷\ˆ¾„q£'��ê‡Û·É8MMa¢F»uér†yºt!hNè,úì+?y/<÷*‚�}§÷cÛÎõ¨ç=|ùRœ°~ðÑG öÙò%dùÞ‚š–åÍ­ááî�¼ôTT¨ �ÀUkGG>}Å™Ø}(g"ÏPö¹˜¬IS¸’ýinaEÆ^¦OŸÎëΈ޸Ö2|$,ù܉ˆŒ@DXÂ99X›AE[~ÜŽZÞ#·®^A'‚£MKÛv.�_gΜùDkã-fÖ~MÆd@´%ƒðdØð¾ÓÓ¬‡…±¯•TÖ(!¨Go\$£uÆÓ?½Ï<òý^«èš9• :Ì­§ärŸN çN‰LsŸ£·=Ÿ¥…¥�Xµ†dò¶£|û-^ûñ±—¨

Ý»™žx%yd·>ZÒ8<2þ=záÕG€­‘.RÆ3“ŒëÆöÄ w¿~}¿çÌTæ`};w²ÃéRòU°—¼0.--- ®zIõ0@à!?3×o§cÜäé¨%@uòÄ!¤Ñ�.3;…d%Ɔœ‚‰¥#�$/ä߃ %¸u{£õˆñ?ÔÚ¼}v‘%e:i8ާd ´NíœlàOïØ"#t�mìë/ÍÔ>`'T €Š’piw4„œ¯ø�PhåH0è†ÄNtíðxòåËÑ8tøYp ì¡[-m5ÈåŠý§Ä‡ã|ÄEî·oìNYYž4ïèØ0@,ØK‚4zô¼ñÎëÐVVFA^¥k} ¤>ߺm3½H“O­F ´&Ã3îòú:Sªu+ú÷ï�ÞýúC€«½z—ÈJ¼q+ I”Øu’ö»‚Þ—D­°{×Ü++’°Þ}$ßÂÆNþÂÌܹs$ðY´>®ºñøé�ઢŽ“ ¢£¢Ñš,0;¬ðúºUPoÝþ�îða,ÇS#MzÖÑ»Óê ÌOÑFRb"\Éš6&˜ÿλoKìÀ�†áY{lCaA>Z“ÙZH†eìå(�iðôò!€±–¬ÈŽ”h6'Óºá¿Ifß´gžE³zä–PhT !d{zú`ê´0ÌÙÑAò¶±0…‘z^œÿn}q“­mÛ¶….Ã=Ûv°� ê!ùæÜ wG‚“ŽŠÃþÅÏ�|D@U o¿õoÊöžÇìÙÏaòä§È ${5€ ¶óôŸµAXèyì¤Lèœçâ}q§?= [6íFZf¦4µYÛµiO¦©K3€õãOâÄÙ=8sæ<Á¡VH/N&ð©‰!ýFA•ߟ³WÈ6}ÿÓEdñ9“­š‹JÏ‹—„줘üÔLx‘õÛµKY¶¡˜8q´$3¬¬ZE�69Õ˜ Iûcú¬éؽo/*)ͼòËo°c×6ÔÐãrËÚíðïJÆ_:ŽžÁË/ÌÁÄ Sðï·þ…u;¶Pª\ fºÚØ´eÙÅ ”©+ۨ¨€ò¦ oEP'LIÀ(•Lz=ÆÈ#ƒ‘®9ôÈöàS€`%ü: H€¶Ýzb\UÑ/J^¥ó¹yîô ¼÷¯y×É>À±·ñÞ‡ŸIríþ=ÐÃÔ ³ÉìmY~ü~ ®ÐÃÕýABEËõ¿öûçKKÏ­¼Ö=©LPWšÍäÄ’I¹bãn¨€ìF¶mYacDÖ¸–´ Í™XP-1<[SöÝH«NbRÿvòÐxiþ{øaÕ A9s5²Iý¤D ^û-Kph(úð�aIyû€À®0£4¶³™6ÙÔùèÙ³·ÄdÛ„œ=E)m²îÉju¥_©`-/¹Gõƒ"héi#š×|z¹š˜ã8åÍOìÛ†C[~À½ò ´å³ñðšÅ¸Îþ› #·“§<G2n��ôPÉÿå È䬫©FEÁm&ü¨"§¨žI)ú¸Ï¬ 'sm*d�5êM6i&ö=Ì÷˜/²òŠ fžDan"‚Ocâ´gø¬íMʸUöd‚S;&³Û|†š¨VB å0Ñk…³!ñ8�û꺼Ÿ ÉôU"sÙçÏE''lüî;´¶·¡,1åp LZPž�*B¡g`‚æÌC«êr\� #«û}qïñ}�†S§/aÏ�ýèÌó¹åØ訫à"üLŒ2 )E­àÕ¶–¦LЩAðÊS9=ž[e¥ZÉS½åyàjK€5�L‘À¥¥ÜªeõG~/.-‚{û†D GVøƒ–—ˆW&“Yœÿ =ÈÍþÖ|¶t©Ä0Òä´ßºŸ?r;áÍ­(BáÄaù:™Áªˆü)G@Ž€9rE‚uyZª†ÂRå1UåÅrþV�AÖ¿Õé”FŽ€�ß3*/þ[€õó F›6g_üžý”ÛúûD 5é&ô9H,JrÂuÄD†({Ê5)e5ÅÈb�’:Y:åð ì…02o.SÒÌË¿»Tíê…`\ãäêÔ¸YÓ[’ô‘Ÿ-ËîÝû$�Õϯ9€Ñ´Þ�ädJ(&\j55õ¦«šÍ_‰» ss32£b±ò›•”£¼�3žÆt2Ð:LN¸I�Íõõê¨TÒFú�Tè"îfò(‘š—�B‰dèÐßµiqsmsÊÂ:8:ÁÆXµå…ðörúdz– Í刦՟x^®l5&ËQ0¼¦ÎDŽRûWO�æÌÀ¦�fQ¾5‹^Šd2rim½]«A¦Ô}è«×ä‹D�²F#Èš@¹GA´uíøðü)Õ”ÛØ´~BÂÎbHÿždûj@ßÔ˜ô ûŽŒ ÇÇï¼C i8>Z¸ÚZz¸ví&N†ÇðÑÓ`ª§ ß@! í�¬¢H‚D]É4>u>¡”píÜÉÚ:z8uì0>_D&©Z=zúaμ¹“zs`T¥é¡ýìü„ñ™¬?[±ÅÊ£‡·“¹©‡JkzxÒ—’å—£.!42®.ÎØE¦©¾¦. •V5¸v5žÞ‰^d'†ãÜ©ãp§Ÿ°6ÙÎj**OocåÊÐUÕÁAz3nß³‚þ¢ƒ(IíC‚ÿm)�kdjÁkH�Ò°¹Øu`®\¾„5[=]]°ç·èÕgÁ¥DÅ\ÁõëWðÞ» é“x�Ò­û0dä<3e2, õàÁ$‚víÚRBµ==Yɶ=‚˜+W˜Dˆ¹]äuôhðÏõò À¨i³~À*ÂÔ=¨;™YöÒ9L%{T'<"7ã0xÔú$[ðÕâ³Å_á“�–H‘µ&›U€œ‚Õª®^�ÑCX‚båÂ… Ôp�³û^—¢þ»ïÏGñ½»02± ,µ9ü={£SG/‚·±øÃe0•š–Ìöz�1j‰“gNËìßÁ”ŠÝȸÕ„Ë —ãôIÏ æÜüûÝ�1˜lㄤ«0Ñ·ÅëóÞ¦í[0çÍp=æ&´ &%SjU0o…œ°å’mèÿ8kîóL¬Èâ¹÷–@Ú�»¶#$*˜ÂÊ”g¾K&¨)™—ô¯´AjZY�'àèКRÄ8K)h²¤“o\DŸîÝ ï\+{+Œ:½y^“)?~6ä4ŽÝ�^=ûÊû%'+ÚMž+Ð#c½e±á3Ò>ø(”·­{ {-|¡{HÕ„ÇjAm+‰¢ÐÑÞÁ £FŽ–®k—ÖNH'CÝÁ�¾�×/ãFV¯×tzcúKõ^œ;= Hڰ󒾊u¿åSxWܯ‚@W¤&%àj\$ÎF]Fzv% JË¡âÚfÖ¸zå:AV‚òy%H¤­ Ÿj%…Ð3Õ#ˆX ª\HL‡W;ÜL¼ƒ+ )1rŸS‰Œ•6BΜ€ACã†÷VÓ¾ÚóyÖ­kWhS¶¹g_²(M´ÑoØ$L�1jšêÈ£³ Y«í]Ý$`÷�¹/aâŒgø<»Šo¾ý*h…ˆÐ¤‘�]“ŸˆÒâ ¼õÖ|ì9sEY9ðóñBV~â.ÁBèØ}(¾§Üp[{KŒ›4•]©á�SI Ujúp#Þ� ¼HЍ$3לI·®Çcì„©èÜ%fdýút'{u?–|¶”²é]˜ŒÑqq7ùœö¤@.Ÿ)`ßÖUX_õM²Ù«Ñ›ÇVǽ]KÎÃð}°ûøYôîÞ·É÷ñqà ¾!“û0réK{•ÏŠø¤<ô§‚)ë>7)£Ü½{o\§´t@¯�˜6ë%²»­îfÃÚÒýzöÅჇ0mÊ ØY9 ·¢ú ÆÔ1ãÑ?Ð:*õغ};Æ�‹yÏM’VqŠ*«Èd6ÇS£G2iaÒ#VQïQE®ª¶âƒù Š=¢þ?ж¶± °þþ öF…áïýWY2Á öªÉøéOpÔr9räÈøo"ðåªou~ü½%—?JÃÎRUlÝ#“P�ùÞ”Ö?ÿ9”{øûF@YßxÊ­É�# G YÂÏ�!ÈšK¦EÇfËå/rZF@¬[¿[Œ®½‡K«ŠÈBSS�5'õ,TTµ¡BØikë@_£å7P—|�L?3´}àÓhKÖÚãVž°Šu\µ±Ð•5Šº-?ÍÈÆrtpä8v1Ù�’MUË*ëÆ-ÛѯwO` `¨ªÀ´§gÁÍÑ6d÷uïÕ“ƒç•¸E9âÛwamo�+WoPš4E÷ªðÜì—è%h÷“¶ãb"anf K['2œ|ðÙʵ¨-ÉGmüT$^ƒ†c{蓉ú[‹ÂC´*íú/^ý³«ØGéK“`ŸpjXÈêà`O€ÏúúºHܺC'”õlT1Äd¦ÀˆÀ‘1§¦Åݳ#å,o ¤8‡ mt uPY«Jà­‡T-ƒ÷·É Ì̾‹V4¤t§ e?²Ê^�ó:oßANÚm2_»¢†Òª:”ÌëW_-ǨQc$puÐÀÞÀ*ëF6Yg__ §‡âŽ�{|.„ì.IW òÿ‘¥¬´OÅö­›qñr e@Méçû,�e8½e_Bg‚÷:ÚhÓ¾#%d˱üËwFyÓ:²ìÒ“b)±ì3+S^£FÐÔ2F½FƒÃ/Š »gç°sp&cLxaV@øžÖ%cÙË!’Ú‘ñ;sælüû½°uíj\º|>WNîø®”ÆõèÐeT1H!¶%�] :f¦g`ÄÄÉ�!Q×ÔÁMú†FÑ ÕŸò³žX´x!jê«ÉøØXï·Î¤H^dÖ—ãnV)AJtwÒ‚¡©5ž¥Ü¯�µ6lÞJYÛPéà­W_!@9·Ø‡””$XšÙ`Å—«áש'ï?‚¯—ItJ)ÉêAOߵ߬#»µ«Äþaã:˜XÀ©�£tϦ%§@SW·SзG_\½�Ô”dúªšãíùŸH Ûêµ+ÈütÁ¾ƒÛñá[ïb�[ƹ†²·¨§dëéãR ²Ó31aö\ £?ìd|ÉD ]”¸<òáùêO°US�½Xã/^@tè~>—ì�ÖÓ§OKÒ±�ZËçNo<•âÙ ðk%]½›  Yx#5´v°Åýû÷ Ák¢•®1FŒ›‚ý` 8€l[=³Cã~šÎLÑ›ññä}òPYãí¹o!�׉§w'¬ß¼±qQ”ÇUÁá»P˜q Î|½óÉ2dðyvªÔE�8K/Ü»EXÿ姸 E%÷²£{·�¸Æçµ³sk$ÞICß1¦ô:ΣW®««3Ì)%­‚ûЮ«†³½9N…F ‡×ALüMJÏÏ“ººrå7Òueem�‹”’Î$˜Ü¾]XðÞÖÐÑÁꯗâ0™ÌyóŠ ŒÀÀ i[!k,VQÂCOáZ|Ö­þ†¾¿ÝPPÙ 'N�"XjD/ätIJº-ÁOFûrûL@qhï#k^_lG·:fFº° ðæÕ‹adã KU$%¥“Éì�Í{÷!òr4:vì„Û™E’´sAjtM[óÙw_z¦Ž1’ OèÐÁOOŸŒ^½…�øC%ssSJÖ»òÝdÁÄ Ê]»Ów5‡(QÜ¿[|öãaÔò¹µaÝzÌyn*¦L˜Ž¶­�áíç�Þ=»Svÿ5¨1IÃDÛnmÛ`ûáó¨P1¦ÂC9“R˜\P�äÛI|DAYßÇfd²÷BÄ… HÎ.ƒ+·Ô§7v ‘$»mØúüÚÐ @Q´UU &QRùn]µìCtå=ü¨òùWˤŶlCQž`UÔ—?å4�@×€€¿,À*�«øÿ£xÎ[Ñ‚@ö_mzfåy9räü�à+kiú÷"7ý;E@x¯æoÿÕç‹5ýƒ4ä÷åïX¹™¿l”ßgùËö^î¸9rþäઠ°þÉOÒŸ¤{‚ÁªXE— ¾5XÅ2°*׫’µY„*‚ 5Õ•45�–ýO;À½÷îˆýˆRZL©aÊþlkÙr?¼þZÖ V°*Š»§7úBÀÜ+-†_P/i®0ûžš4NÖ&¨§D¢¦¶-ÁOúþibÐðÐY´qõZ%'ͱèóeسwlÍŒ$ÀP›rÅÙù¸¿q-Q&¹-¥-Ö3ÖH¦ï©#}MŒVQ~D¬G2½Vuýƒ~2è&ä…Kà ²Ú5²ÜÀ*&QÄ ]ÙŽ Åáç+s¶oÐúvëOV©"ÿÔÔTPÕÉôK¸~ë6ïT¬‚ c²oç&TU«àÖ� Ì{ã2BIãbÙG¯Îbú(öéÓÇ7~sÛÖhçê.¬� ´˜Ï‚Õ|ò e‘¯@•À­uW‰IÕ¢êoúúÌøÁpaLxÞš ‚WbèýHÖÚ¿þý�äÉ8óÙç陇ī—¨‚¬DïM_hëéS:7;wž…o—Îp´ÐCnñ=�N°¥ãÕØó[qzžèÛ³åt#O�&;3�‰5ô⬗âΔííèÞ ­ÉälïFö,‹‰™¹4uïÙ –vŽ;Âܦ­4æaØð Îǯœkz âZìÔndÕ–•47“ؤcÇM@BJŒ šsÓmi^HGïÙ½ƒìR]<ýâóxƒ^¯³è%�²÷bƒaaâ@à± Ò3Òðòëó ®wC ="÷+¬bY\—C©T 2=Ãx=½õê¿°ŒÒªZ*ºXöéLj‹OÀÞ£,qðYÄÇ\¢[¤®%&&‘q> qÑ×°fÃ:v >�\ ÆMà°în�ñí7ß‘©ˆ×_�OP,7o^À�C"v•L¢!ÁÄ:h¾\¶NŒûþã§PMvwvA.Z_”—•¡¸ü>ê(MÚ'0Ÿ¹–ÞÏGÉV†³£3΄žÅî=¬*aø°ØLæ‘ü|“,ÂqS'󺈷æ¾I0×}úÂŒÙ3ÉŒwÁ¶}‡ŠyÒÓÖZ’©Rµ�ü=aC`έ£;^óu˜X9AKG_bÿоºÐ�ôQ«‚Ñ$êˆ"d#LVÁ`m °6Ô «ÒÛ2±:¸“xzJÕ¼®\ðÎÇ_"–ýíG)ï–¥º¢€½uPVÕl¹Jú.Öö=š­»y#·o^¡/±úöŒå_}ƒ¯W�‹/ç2Q!íf4~ܺyYY¸KÏÍýG/ñ¹Q+•"èh(ÃÄÜŠÞÂdë!?ï½BDÏC)݉IT(.¦44½X³ráhkIùí"ÜHNGô­$²º ÐóޱÀ¡ƒ1÷ùçÉN%sÓdÝ»söîÚ…‰S§K,r-&%hëšA[C»7o�½­#™Ù©Ò³LxénÛ²™×æ<\ŽŽCOJ Ùè.Thè3 /ÝHUP™›Fi^OéÚ·'àkîàS-‘åì؃±nxÎZP¦Þ”ïB=&¼ûÞû0¶i‡�-¦Ìî ÜJ¯BaÖ-žçް »µ}»ÖH`ÒÅý’,ŒÚÆÖíx~bñÊœç¥8G^ŒÆÞ}G˜d ÎøäRz¹¹"ÉÍë×qƒShX°ÄÄoãì€èèX¨S¡€ç;&ò,Ö~¿†ïmUÞ{Á|§"éêe8SÁaúôi©ÓÉ2ÎB|rTêr™ààÈ}iñ~NAÔÅÊm_Ådæv¦„òUJÖ_лޣÇã«E Ȉ�–mÁôóêˆU›·q}¼ª~ò }“»5V §Ü¸- kãÊ&3Ñdâ.ü| õí×déãgW®^%­ü£“vßy��_1H,žñò`ñ¯��¼…9r~kö‹DŸn¾ÀºûÈ \ço‘öLþ‹ˆ¸Äß·0kñØoÝ�¼Ýï1þ¡ÎߘBXx–ËEŽÀ?=2ÈúO¿äã—# G@Ž€�?Unß¼JYÅæƒ¹Š �µ•Zk´¤´¥ôŽÔÕV‚R«Zh, Iª¢êýù‹+÷ðÎ_ÃÜÎ ffÆ¿jõµU0%ûgá••Õ`¤¯ =Gè–¥AS“|©òt|üÕJvïŽnM‚_šó,™E% µsç.0á@¿XÅävö¡'›õ#›þ‡[ë5gbŽ2"MŒ QÇÁõD5d˜Âšñ{\!é«XH+‘6—õù²R¥IÔ77õ'ƒo¿U°')W•– ®Š6…üœ�Ðy\±á�'gÜ'8XA0jßÎ�øšL#mu5Ù¹ÇÏ_F[[sŒ�8‰R›ñÝê%ðò K‹¬®Ödúcâ‹oèiðÄ}Ü~š.ÿŽ^¨¥yùô/¼G0ÁXbp6]ßrþrX$™ÓZd‘>RÔ«®�JÉ\Õm"Í*Ö+++Sú–À‹ž1�+—pl×:Jzú’Qê =&Ä_½ÂÖ÷u`7¢®'ÃÎΙ`Sgz [bﶯÎAb™*éBלL7zÏ>3ýÔPêT‰íÛZ·…�¡1L,lÉ8³”&3z5*ŠYE EÑÕoîÕÙºu{E5?´Çï†eEU’o#ƒ€Í‚O?“Vo:ø Ȇ5Ô4¡¤w´´u‘—~“þ’�N\HK¿Ã$‚h‚d‡³ìØ»6–xvæK¨!¨y>8—ÉÞÞwä }‹�QX~ÅyÕô4&ë�ÌÀ¤;—ɦí„3çÂÈ>�Äê5_bİ1°!è?fü$Ib7� ØîC{P_¥;ʈ¶vpÀ˜qÑ£GwJô:âÒÕ$‰ kdnŒÉ“¦ðºúNê‹ÁѰð0¼8k–-ÿŸ.\Jf·�´NüÙ»w'¾[ó Y·.p°¡7³©v<‚—(ÿŽœül|úéJn}º!’€N5�<-UDÇ^!Àî�§§MÃ…K·qýÆM$gÜ$8œ��wÑ?U/Ïz™ ?ЫÙw)M¬¥¡‹õ7Ò÷ôܸy.í¸ ˜h.,<„I(vRËM¬v…RúQæê¶E~bžš:é™Ù¨§Dp=Ù�QÜjë[áêÕÛ¨®©F>„çèýªz&¤ÜC9=7�l�Í{þNZ!¬,�PYY�Òû58wö4úù¶G\â]˜«‰6Ë`DooM¾g´È¾œÔ¿Jè�=í¹0ùéRwNîÛMÕ�àE�U_‚ý#ÆŒ‘æ¯]»FIWSJÖNÄ !C0ÿÝ÷¸\ ‡D"Aâ:%e&\†®±1ŠóÓOð8޲éi ñ8Àwĵ�ã’,}+ú1ÛÒc5£‚Qª8Ì|q.ú�šAYßμoš3ï¿!{?+3 þ]»¢05‘’ßã‘J™ê^=»@M�,jz0ï;|æ†úPQª#Û� Ón|~œ€%¯w]&wØZ[J×S*™À&´| ëÚ5+èmªD«5¥êQTX€¯¿ù’ÀùêaËúo)I^„V|�•ñÙ=çÕ×¥ç\ð¹sÐTQ¢êƒ26lÚ '{;Ć�A ëåVÁ·µ*صL.ÑÂû,¢²½¡+!¼ÕÅ»`ëÞCpïh‡‚ñ=xL£F�ç³Ð7.ŸÄåkQì«5“+ÂÊÜGÏG  ý^[Àz>8?²OMnH õüɰkFÁ=”VTCOS­åæÒ÷»ÙÙ ìåÞðdå& e�µI0äY9räÈ�#ð?Ž@U¢rró¨(óèß!ÿãîüdw×o§#øâutóiP ‰¹O«”pé·Å-Úâ|ýÃRŒ1á'ÛÉ ~9!´U™=ç9LžðÔO*/Y¾ˆŠ(�?Yþ¤ Äø‡`²6M@}ÒmåzrþŽ�AÖ¿ãY•�IŽ€9rþ²øô_³%6Ýã€Öâœl2]2ÉÜâ€kvTµõqý8å#“ƒì‹|ˆƒ‡HÇ?mÌpʪÚIÓ�œÜ|Lü¤é¤ØÓdH݃ŽÁ£Áb¥V*†U°}ÇvJQvDêåPspØ€`Ian «U °ö@Wá-jO‰Ò¤†ãyêi `µ£´©˜L-¬$€5::šr½Í8ˆö½–®Æû«×Bƒ€®©±!nP~xWRjè!¨éˆ´ž#flµ¤k0©¯kvµÇ ¸fëŒ4}cØ P›@‹ )˜lŠ�~‰õ @Ö|²ðr{€ßÖãŠÍ~öÓ£“Ö¯ùZƶHJMQWäWÐ[T�`Sò ŠÉæ$³÷ÃùøjùÌzñ5œ9¶çÎÁ¢e+¶m±ò[�é;(Ê6‚VýŒ#¸Ú]zôÁ¡CG°uËôîÝ[Zßò�X �B-×+¾70X•èªÁ©y€ð@,«¨ÂšUk$OËÛ‰i¸Nf¥ƒ‰¼‚ú#77gÏ�Ʋ% )ß[ˆ�#!îj} wbû¾%ZÛBKK®¼Ð®}ب¥ßÀ¡’7ª—i)ÃØâ§€ƒ¢OúÙºm{D�?†‚¼´v²ÏË�›1ؼe5ãaÏNÞÒ ÍCìÛ¸—ì»¶Èjjf‰´káÈO¿²ëZ–”¹Ý¹e&Lœ*­â%FÐÃNšÌ­ô°qÛ èÑ0/÷.�Ó*µ¦”–5Ʀ­›Dp}挗‘˜xÿ~ÿôîEД÷GåýZ2IÓÆØI¤/Î}êå¼L¥{jøˆqèÔ]Úßœ¹3q‘,µÆlüØñô´íÚØÅWæ?GlH›·íà§æ¼Ô\®^³Þdœ¿üÖ O)ÜqœŠïÞ@5ÙâE¥JÈ S¯“·Ö}³J’=Õç¹X´ôsä•”Ò‹SŸ—õ †æf§ÂÔP›¬áq =N6{>ºòº|~ö«TEWÃ�“ÇM‰Þe_~‰=»öRÎö6Œ2’ñì[ïR6;Ÿ-ûµ5÷%pUkXh0*knn�f¿ÈãP"ÀÇÁ…ɸ�rîôÌ5 ²(ALH¥¤¤�zà•æHߥew“(O] U^c ÙÈÆ•�™çÍÊÒFò}5×S%ØÈ䇾#;ŸÞå@IDATáÜÁƒË,Ñ©“'ÑÁèÐÞK’RV4#ÀÕ–ëÒ¥Ÿ2®“Uš}îØ½Ë?y¹™)ЭÌG~QYÁ¥ÐTæ¡“õ+dŒo§Q’Ý­ªKÑkÐpÊ·ß@%שTÔÔT¢Wª2e{K%`®ZK§ ¾Ud¥J0<Ú˜`¬GZå�™Ø�_T€4*@Yu…E¨VÓÅ-žßJ‚ŠÒØpXX=L^Ptvíê5øþ‡õ|Îw@�ž=ñü /tl…Uk¾'_—þ°•’lðÝì<Ê+“!íFÙâËРJ‚ÁÐcúàíÅË1`ÜSðëÖñè3™XÐoð(„žÜ+SmÊÏ?‹Ô¸pè›Û*v‹eŸŽv”ù9²víƒ6=ºuëÊw’)²ÒSpãN&¥æ[Ù¾dŸž>LOóp|Èd°*Š �Öví]Y¬ë¾ûš +ããå+U9ŽÒ{µèÔ¿ûe…ûñÞk�ÊÒ<¸»´Ã²b;ñ]3jÌX²fSéË­F0<‹çuNÛGIü Xhaè艔ƒvùˆx²Vy÷’Îá¬çžEbV>}” ê:ÙÐ6‘2ádyT×õªuߢk×þH °~ñý.ÜN¥¯÷Ÿ’�œN°¿¹÷¯è´=¯‰¦«t þ4€«|^«òBzD±ä>~ À*ÀU`}D åEräÈ�# Gà�SgCqú\(z÷øí€ÚÙ]S&Ñ €µ¢º–SÖý°šŠ)÷0|Ò*qØaúØ)ܽø/û·—«¾“š°æÿãÿ¤"l(Ä�wãïÅ–eÉòÅh¥B•¬D´qlÛrõ}ãív�~¢ºr%9÷¨üÝP>>9räÈ�#ð¿ŽÀÁ=ÛÑÖÅm98ûkËâ5»¹IB\ œ)™p5†àS6¢)µ:lè ¨êèR/!ãï\ÚØÁÓë!{Ñ—²�bú£ÊÄq?e‰}™Û70i¿¼ÿ¡´¨=�£‘×9€ö.]1râÓp〻(Ñ¡gh ç6ŽhéeÑ^ð*"Àµ|í?� è¥ ñú‹3 è!»(ž.mÉä+Ç…ˆspóî�”2UT ™�¬ˆ³è™}«eÓÒwõ$CFbWN¦?²Æ// ¬êápäQ.´e¹WHv‹¶asyÙÜ»i˜8ù9´ëÜ�€ÓLäܯIJe_Á½ƒ“€”‘!©¡ò2,õøÃtÜd¤“Iil`ˆ ·ÜÅO¾_"XqòàÊQ®#‹Ë �Û¹#-í*\]z‘ý耉“÷øóø$«b§ºôš|T‰¤¬ïS“Æ£_ŸÞxöù Æ„�±ýÈ<#$Š……f>ý"3—'Jß« ]½,±{ ?¶Á„ƒdÒ¼øÓòbJä>Øû 'PmÕXç·Îô>áô¸}T‰ây½¯\‡-»Ö`âèg¥*îÉMÉ V”v]}¿ˆõÝ»I“¢®¿_ 4v!GNm„s{mܺ‹m›à›ïcþ{ï´¹Æ{Þ5T½F¸¨üŠêŠûôèý>ùt1ÛìÊÏ…¡\é�=G ž2IàAé3¤Îá=‚•Aðê‡.dЉ²pÉ"t#ÐÚŠìÓWç¼C�È:’ ?ÎCÂBÈÖŒÅ?l$`éŒ% –ãÂùs”8�„7·/¡7ò¾ƒóq�÷Yùý L§ŸìøWÆá¾²¯'CH•zxy“¡{GG^A%V¯Ý€¯Wm$�d�ÁÞ¡gîLì¢4q�NíÑÞB!‘q§wnu} "é�:Uû¾ÔÏsÜï\Ê)/_±‘Ñ�Ÿ™C°Ûû÷îEäÅKd¯žÁÂO?A¯^½á×¹3~ܸ™òÉd‡ïÀÒeKñ¯…áø¾ƒÒqoý~“Ô¦â�¡m“y­†º 9Ú˜(xPò\Q.ðZp´6‡éö±XîýÀóUÌ·÷ꆼûa˜5{6ž›õ,¼yÌšš{öò—duW¬üBTà ³^’“JJ­¤ïâOLvlüÞrÆ€{Ïö­�µ6ð°Ð@!Õbî–b¸U( íëï� 2ù¯å”ÓG7‹ç’Rì¼Z²rrP USâÚÞÆNޏ¯¤Š+1ˆ»G�Õ§ÇPfxY©.0'z·üÙ¦”Ì-«ÃhW$×3ÖGdÌ œ=yBòL8tx³.Ο7G’€v¥Äñ;ïü ëèMz� Yÿ.¾Ø±u«Äè½DƯ*ÕFô D&¬ÛµšA~¸v'JdS­S‡šŽ ¥£ÀÓ›”ÌÍ,¯%0\L¹ëZ1t‚o׆$�’œôfûó�7ðæÜ¹ÔäöÒ?øk®o3ö[�÷i9%ª[iêÒÿšÞÅôSµµÒeÒJy³6Z~¹pñ"¾\¹^Z|’,X%>� íèDYöî”×D>C*Ÿ*^ž^½ú¡&#*Ö�|n�ƒZuo% OïžôÐÝ‚�+¼<&.«êªP\¡B¦ø ,Y¶DÚÇèá ÉR9I{ðÑGüUB¿ƒ)'_ÓØµ±ãf þÖmì>…�yŸ…‡Gâ^q<Æ Žö.¿ŽmZXÚð5Ôåµ.9räÈ�# Gào�IãÄÿiÍÿWû3\Um=•in1AË�ZãbT U=ÐÚÜ„Ê;=6üF¬ä?ZbÒÓiHš|’c¹ ßÎÇIžd›¿C}c]Ø·kø|™J7^nßïÞºŸêIûpìäVèR})€J4¿¦ˆñ ï̇ÿ—þšmåºrþŽ�™¬dz*“9rþB(á@o.ÙazMØ#�ë~VÑ}ì?}æÌvÔ!ó¦i9ƒ“¡±èìÖ¦éâÇÎÇ^O¤Tb,L™�÷ØF³âàžÀjL‰Á'-Gwý(U5já]©ØþÇ埠 ç.}ít ¢”Á¶�5ŠÈ´Ò#3ÇŠ2%EԮŠ2ŠÅ— ÉÿGQÓЦì¡vã®c.Gá.}-,›]IôqÔ¦G\Xd$ì�Ú¡¸’RÁõ:”ÖœE9Ò€U4¢§¡ŠðKñÈjDÉߦåÁ猨¸/ú DÈð¶ôÑÒŽÊdei¨´‚·o }üÒ1‘¬ØT²à\(™éà`�¨{”¸L¾Ò´éÆy+’zî USÜ��>�YK?€�É?0~©|ÿMh½ú œÊËèÛêð“>*SÂXYµ¹D£6% ;xPŽÙœžgéý苲­<\œPMÙQ_úq:»´Çî�{(«jJvØ*˜ZÙ`ÒŒÙ�݉»t9™Éô<Ü sÊ]<`ŸZ‘ ™BP6&:†¬ª1Ø·;êøÃÕÂTŸ>Œµ¼¦ìaÆÁÿß«¬û~5÷ÕÈôŒŠŠ"+R~žpxï6h©«PsFνj,ýb%=Hßhܵ†¦&ĤÅÒ™¹Åêý¬Ô{ÀHl¬ü`&üÔÎ)¡µ/ø5¶¬ó$ß—¹‘a”$%+–ñ[ðÙlÞ´Æ�kÜÜÐÄ�œB ŸOï¿û‰´ÜœÞ�LxHIŒE*§§NHËC,#ׂވ�Û‹{;{¼4gÁ°+ó´�sœ!€Ø½{‡ŸÆº'Ø~-Ïñj¨©*ᕹoÃݵ3½Jk`Îg†žž9ýJwRæ÷)|¶ècbÒ¤‰R[ê”å hØõ!À*ö9•u»?N»dý�`¤ð‚ ¢ÏjpX(’“SÎæýa‹g^|VcC¸üÓ¥‹‘”œˆQ#a eX-Ì,°†’©Þ>](ûlCƲ–/_Nvi-}…O!'§ãGNàrmü°~ÒÒ3‘’–‰ïÒb1èÍ÷ж[üëÍ·‘AïXc3Sö3‹¸}qQ6  ±F —n$áßÏ�Ezv)òÈHß]Vƒ‹— ¢ž:…·Þx _.ýR©³²2écL_f&S,ÿb¹4£Ä+ÛÖÚoÌM’FÞ°iŸ•Uøâë/°oëéxõM 6¶†²Š ½ >§V®ý–÷\(4püØA‚\ À—X§M™„!}º#—Ï€¦@«ˆ­¢ØÓ3ÓÛ»3™çé8tx?¦O{ž^˜ƒV+)I^²V|. ™c1=y©'æ{=†Mf»‡�SÔ©¨ÃˆŒéŒœ<¨ªÖÐZeåô¿¦lõݬ˜¨2ÉÄ é9•PQÓ† =`uù=ÅëÌ�RÏ…EŒ½ƒGŽIìâôÔ»xiL? (Lô®®­q‹* Iy /ánZ2ø\LÏ/CF~ :¹¹Ò#7 Ùw³ ©¦†+‘Áø`ñçȳ¼)�”pF|{uheUØš2QÈ€Á1˜A`½ž š\~øÄiøøù ïðÑ�!ÉÏËÃæ ?ÀPG…¬eGxúuƒ��£´ÞÌɵ±ž˜±à9tóð€’Š²äÛ:óùÙðcÎôéOÁPMUzgž ‰€™¡ëÚó}ÊkI~Öo¿ó:Ty_Ù;97¶ùÞ¿æ3ñ`)ç|Ⱦ.§?mU¾‚·¿?Œ M¤zI))¨h¥Ëwa]5cúàfÁʵ+̘ÄrlßL™ý6½b-ù\µ$Ãvå¾ï¢¯‡�×ë0àó;,â"bã)óL¿õÿ©Íh¾—Ì(§Ÿ�™J)íëÈÎÍÄ�TÐÔ3¥'{9ü¤{=+3'ùŒéÒ©4Õk)“ý‰MÝxO0“•Ÿ�»ù°4n8ž'ØäW¥4ŒÞÕ~âLÞ;OðÞÿÇH>àß%õu•¨«* »èáÿÑ¿KÃr#räÈøGàJÖløw“3àà�Eÿ~ n�|°qûv;ŒžL43ÒR—Ž –6!*Ê*Òô¤‡4rè`‚·ÿ,«ˆÍ1þŽlÅôÊÔâX¬=´yªð~�È.Ö»º¸àÇmG¨´„¿w»`Ú³oÀ“ÊVæ¦bµ\äÈø�AÖ_,¹ª9räüþ(¢¼d]+Í'YË(e¨¥­�6Ö ì°‹dÒdÞ̓µ… ZÛYÐÛS†œVlØÇŽr›Ëó‹Jp*"í¦5-Ë¿]‡˜ëwÐ/È·éb¬'£Ê€^Ÿbú¹’_\†ŠÊ*úªávò‘A¨(þ ~ À*¶;F�µ Ù0�Y»ôH&k'ä’…•p5>�)}È~šÚI»Ý·c½)ÓáÃAß?[9zè ²z’É¥(`]ýîëxê•7$ßÈäÛ7$î詳”‘Ô¦Ìa'EUèSÞÔÏ·}ÆX±Ò”’ Nôhi ¬*Ö‹Osê›LO¿…+ñ× Ð«!¨O/zñÕâNb*lÌ áÖŠÙ°Ñ‘M7k6oF6”3f«Òî ”àfÎs ”‘Z\v^ãþà1( ? ýv®xì ìWKõËÓR5D Î+̃–¦–®¶X›íœ_FŽ�ðÐóزi=�U;å©P®RB>A%S=ed”VÓûÔÃGŒ”€.Åö¶Q©ÌÆ‘ƒ‡Ñ%°ÔÔÈ{¬ºU^‰‰Id GböKsP[YDYø÷ Gû64uMü.Ÿ ]Ð~ðÀ!ìØ¸#èzéâ92sq'=æVfX¹f]#ô̱plÓ®±¶ô«}T)'�¤ªñ°Ïá§v–À‹¾á/ÿ@ü7Yw9D:z>¼æû¸s‡×‹¶&Ü(=*ÊXzyn! ­,ã4�õðíºOÐ=` ÆŒ K k<ûÒl¦vÒ$ê›’�»n{Ê+R0xÀ TdwíÜ_¬úI±£´·��)ÜÝýñÑ’�Ñ3¨zÙjÐ×S{÷ïÂñÓ§1eÊ œ:yÿùàèëª`ÏžMôçT”‰ã9M�Ú�8q’ôyár8¦ÎƒÅ ¾�¾'܉¡Wì]Cˆ&Pfù ñ!’>®oÑ?R¬‡�†9Ÿ-ï¿÷oŸ;EyÙ„_”¶ý_oò^ôâ×f£{ßÒ2ñ§gPWØ·qÁ÷ß~�8•WU#åN*}?Û#6î :yzaÖ ³�J Ê[¥É5•„åVe 8Af e#´m׎’¾“àúÃçHs(É/’oΟ “ökbf† ¡!xnêt’EahlLŸTgÜg$œÛvà±XâÐÆ¥X½÷ïSJzßeòŽ£®_�ƒ’>™ÎzØrè>jÈ*žûêÓ001E‡Ž®’uèåh»„ó‘1¸STÅAÅn”vFJj ;Jé€D²"¿„&½çßÙ4º*° wŸ¢ì;ŒýÇB0|@CK¬¢\ˆ½‰‘ýXœZê01Ð#Ú�ù(ÖÇ_½†Ic†ý`ëŠÈžòôò³�,—([cee��>]FÖ >[¿'NžÄˆšÕß½ù´'(Ú²¤_8�KÁç9@Ü|�o÷¾�XmÔ–e ëÎ z°&@O³å) °lï#­ઘnÐ�ífj&ì(«ó{—¤Û »¦Ÿß¯û1'ÀÕ¦«è—!Ùo}&<%uQ�^�¦¦œßK�==éÜ™7€ÇÁ¾'{×Zº†ÍgØèј8~¼´L!¯hKÖØãŠ�>Ýú‘éeŠ!c&“¥Ôÿ!;)°÷@(©i¢ˆ9–g –ô?ôðíÌÉAFJàjK€U´©Í¸é›·Á€ác$ëá`Åä-]3‚­•0e<†�ƒ‚ÜdŒ�<‹^‚eˆ¿޶�¸vŸ¤�?WG°Š:Þ�½‘K�+**R´´©”êÒÎczûAÍÈæôÑ ;y�þ’h²>ª}°¦DŸ„©£{ãjWïO°.]ñ9̸/oo~þ4»Y€« €UѸŸ÷Ãû@÷+¸C»†{ÙŽ×_JZ*žzpŠúW.‡ÀÌÄ€@c0Ÿdﵺ‡‹¡ÛàâÖKÑœô¹jír˜“±صrÒ£)º A”´òà´~ã&ìÝ}¯Í�O�q.™Íúظa3Ï¡ýj¿"?™™Üjø|Ù l߸Œò´/Kl¹O–,†�¥-´¼q_¢�RV÷ü¼`áGÿ‘@V´¾ñÞ[<é’lî¬YOÕþ�"ž8†¹óæóš±–Ú>wC{w#Pêú LýÈÈPzež…!“û ŪÍ?¢+ý3}ÝÛb0eKÓ :íÚ³ ÏññüœreqM}½Æ ÕZ|¤¤�áô`6ª¨„Õ‰Cð=|¦•†ãÅRe¬4¨Ç5úü ®//ËÌÔpd6»Ù—¢®Ir³]ù¼{÷íwðúk¯ÃŸÌ¿�d †ž… =TÇŽ¡¶ 庺ºrJ¬‡ÐTo½þ&A¨t|²øc±ôLíâ/°£Ù×j&RÔ &!3¹õÙûw^‚ýõ+( ;ƒ»n.X±r>zvƒè+1xvÎlJww¤\õÞ“§�TÜ„Ižm��o2óâÜ·°ïð)‚�ªèà"XqKýiµ¨+ŠX·|ÿ5{ À™][àHÐ2� ¤Ã.FP­ÆÐ o”TPÒ—7‹‘™µ¬fP69°«ôµuQÂä$cÊñVÝ»GVp-LŒ´¥Ä5ÕV((,DyIŒ4 ÖŸã:]&�è‘ÝI྆$54uØZu*’ojqµ 2èak¨#X›Z|›#Œï4M¾c� xÆ_ŠAì�LTÕÔáÓ…ï"ô̸­¬ªÂ±ƒ¡Q_‰›·“˜ðr‹Ào ²ùl|çýˆ&;¸;ÁôIÓ§¼~˜�³aÃz¬úö[ܼ •š*Ü+Ì…ï©ì¬ ŒíÐ]X�ÉnI%Æ&&Ò´ƒžß‰)©L0B'²bçÍŸ'…Õ€ ©˜¼xo©11#“ ]ý»P†·~–ÝÜ<`dñðœ �՚縈LOǶm¥6~\»…ÏÒwW…&­…Ùi¸§Döº�­ô¡of‚~Ø@²ë;x“ñèKFÆ®=› ª`Äà>Øwì8A×:x:: ‡¯"/�%À�‘›ƒÞc­”[!þæU&8É<†¬´$üøãŒ§¹w¿þxç£ùhoiˆªê¬úþsž#%&ª©ÁÍÕ› c NvðÝÜ:E4:¾„Û¹ÿÇÞuÀEq}ÝC‘Þ{/‚bAŠˆ€Ø{×Ä�Ñ$öhbM4Å$&1&¶Ä$[,Qkì%öŽAA�Ž ¤ ˆ|çͺH³Fýÿ{ù ;;óæÍìÝÝÙ™wî9çÑ?Gq9E¸–�‚t²G+Çøá¯á·E3+/’æ'¼õ€1t#)�>•U=!7mÞ† · ¿¨´Ê¶·Èž±µ¯ýf%9EH¿.[+Mût…¯›3!CLx—oì ¿Kæl¶Ô.œ2¶µEbN)¾þþç*«‚ƒðÛòU–Õö$‰ƒÁªjªÐQ¿‡¿6ÆÍÜ"„GVe_6°³† §Ùd@½ˆ’¯›èÓgJ@ÈݳÙ–€t+˜X9Rµ˜lËÜŠÝ—s€ú™S"¾›3 §O‘æOž<‰�Ãúcþ¨ˆì×N’õ•VÜÿçëÛ’Þy²�çkQ)ônÜJÙF‚ û×WnöÐyèO4œ kºÔFxÀ’i+UŽ2₦Ž!Hs¢b±Á"þÍZÒ¶áá×*ÖÉgJJ©ÿYKøÑ«ñaHÿÙÇÅÊu»!&Þ—Æ0¡ô]½ìؽyY‰è1äíÇuó�ÖGÞ½6¶u‘‘–�º”Š.WRAFr*ÙyÉØ¹Iö^\=µ—Àëë2yML$œºÊþµ ÌѰÝÐ*Ëžæ‰`°6®…ÅZ½�Ó¬ïAùR 2†µ : pµïw¤f'OËXoŸRºvþâ±tåRiù¶�«ÈÎÕ%“[ö~z·„­Gâù¬AD(ýHÓ¢¥v‰”^MLº!Í›ÙxŒ:K$BŸà©¿§?Š‹JèÅœ#­¿|¡áÁPVVF7ú2Ï%Xx–Ÿ»-|0ûÛŸàú€¼[ûxÿÝER??/YA6c3i~ãªõðòlŽnÚÈ}íúö±S!áVŽŸ8.µÿÞyû]byht¢´,žÏÎ`ÜÇŸbùŸ²Ï•OÓæp²µ‚ž–*ÔoÐCúÔ ”,Ú©n€]n~úAëš*—c™J!¼”î¡.|íÍŒãE‡KÏ_À‡ªº0&ŒÁpçzçòýlžûŽž;APÒ ­Éð –$U岪 ~XŒè«‰8DðróZÙççÁªê!V¾ÍýÐÔC¦b «b!ä�K ú𹸦”‡ø^î?€Aý'I‹æ.˜g;öã+o"=¾1x8öìü»bÙí¤³øeéLŒ™ôzÅ2O�&ˆ‰C~Ï d‹ €XÏÚ€Kd�9×ïJ@ÙÚÍ;¥6ï|6GYùéG„ÓãÓ”’ÀõÉò>{%wnáVFbÃ`N௙ƒAO\¹‚ܬ Ê«©DO¤Ÿi6’Só  ÞA �X}fÝÆÍŒ;ñÏ�ü­,*%S•²¶jåÊ,~±”Žsû¹kHLM‡–r)réÝik  ³jJdÏ&àÄ™‹Pª£Ooo¨SÞý›¯§á.Êõê5Àе¿cäØñÿþ$xz5‡©]DĤ¡¸LûB™J96¯_C¿á?™»½Òk­üÏ�²¿nœšz5ÃÞ=;a¨JŸXÍYd¿�™:Kj*VõÈ`“ˆ)“§bó¦móчèÉ¢œz@ VsåLæ÷Üo¾’ÀÕ‰”ë±våéñØ… ˆI„#™«í{ô�æåÿYðôçʹ0³­�×F;�Û¸CpSYEd…îݺ zô“u"0>ë“qô;€)“&âÏM¿#<ôÚxñº!Û�AQa ÙïõQ×ÞÆææÕðÎÐ7YPu•’Ìñ¨ëà„UK—NDȱý˜>’2ÑdL/]¾N pþÂ�ÑÃ{~\¼—¯†cõæ¿ä‡*= ëÃX¬¢�Xöóh•�=æÉä cáÇ"¡ÿRä�=^q¸–S?eÕÏ3Š (2 È€"ÿí däÒ¡ô?õ"ê»<°5øOx-kíè€Oh›ˆ°¨xÂy³hs'þÞ½¥wYœF„ó‚�‹rxÓ“@)\ue2k j!.òšÔÞ�r}"ò)Sr¯ FêšÒsù¿I‹¶c€Vp¦ gDÐ94 DbJÔed¤$`ñâ?1íËOáÒø�$J~~>åjI¹ªË~[�^Ý:!žžrIñdý Aï»t,"Ë,’¬œ1ÃÞ„ƒ±! (Úü ›ÊÝ �580ïŒUyñƒù;¸~‰ ¢† ,ê"ñÊ9Ø7jC«†(,¦Ì­®‘ÔöÒîï¤Çf½d@ƒ>Wp;›2™”�­š·‡oñÏÖL= ã§N€³‹3’)ÿsâ|�ä�x—Œ,ÿæ®È¤£O˶5v"@Ö¹ ¿Gë6�áO¶Ñ·óç¢%™�­8�9-Sü[¶Aç.]pž­#TK0J¥4·¸úõ·®•qrñR –þºÖ–pºtå×/ aaÕìôht¾{W:y?âÆAþ;# {Ä>ä|ÍÍ îoŽ„Û›²÷R€¬ÉÍd¬\yùã£~£RÓc`h@ £ÎÃß—Ÿ|%u5qêgÒãòŸ‘GOxO¾‹Ç>Ž;£F‘EæXrt(}0³ÐЫÍc·{Ö¹¹¹¸IÉË¥?|Oú ~5ï[Ô³4…±Ž®DÆâÓ†¡ÇÐ Ð3©½ØA­. â ý1¯œ‡ ?GÝú‚%=7« | Pуҭ‹˜¬"Ô5"³9;‹’á²ïÕì¯çàÄ©ShÛÆgÏžGçn]°mÏfŒë-´ï8çNÅ�wÇ¡(+³ Øhëháêõkp1VCQ~:¬ÝÚlŠ{ÔÇmÕ¢µËHºr†Êéôåzlý} ™“~;$Ì™ó –¬þ�ÀK4nèOVl0Ï“šðhìJÖb6™•­ ì(áé5 NNŸ>‰“<ö^º�mz oÜ8uæo´"c6‰© �B§ @õ¢¤îÂ/fañ’%hÚÂoöF¿ÈHŒz·êù$‘~¬ÁôÐlѼ ØC/Ôvô÷M�úiݺ5™îšX´èô.H©øžL¦×r™Óô4a[�‡y&¶Ð×ЂS�•Ûâ³ô úòªÀ�ÞÒW”TàV.Y¥NùO3Ķê O_ôПÎü”¾“SÑ{ÀøhÊ”Û%ãïÆu4av7i³:ÐÓ¶ fÍ’qò¾õtù ’M˜( È¿çòmäçHù’E^[„]“§Ñ‘i À'_ÎFàå³”ã¶ÁlS§}‚°�`lZû&Žä;%ûÙ›X2o#šºûJ «X�܇Uë·âÂ…4¯æ®]ö9îååÀD‡~ÖaQ”~ÖÅ_»É$6·†RI;²q•ê ÿ®LÈz.ÍÏ�’†.œœ\(3¼íÚ¶Fs~Þ-¢¿4ÁÒ–»²ò�; ÚÆV(I�¢D¶Ô´Œ0ê½iXðý×((.f�ƒ òî`ô¸ÑÈ ÚKÏáF¸™™‡bž[÷Oñ\à³Ï?E™Ë‹–,ÃìyóÉN½„Øø˜ÚÒ„•+V !ÇtîËÜm\·n®ÐÑWEÕ>šñeÅv~ QG×öÚwaBÀØÔÒ-ºô 'í Š6›ùôÓOñî»ïÂÑQÄ>¬]j\þÞ¶ AÑÙ°ç5ÁÏËWãÏ5¿¢™§ûÃ6ÁÏ?üˆæ¾¾H½yëè•êdg ã¼4Œ™C_é©ÓñÁeá�~Ž^Ú"RÎÂ¥bì9p1ie,öÊAia96íÛ… g�cú¸ñøzñb~¿›ÀÒÔˆ>Ï_óœÇ\Õ‡;�æuô¥uiÖŠ~ÖuaÂõîÎ�XÄP†¦nôì&øì¹³øŽ,öÔ¤[Ò>ÿ?þ%ææá6í›ÿìþ…ìS  []¿¶µ^O¼��*:Ud@‘EøŸÊ@U-Ô¨m¡']Uýï¼tq§]ZZ†�›6QMå zwë…ÅK—L�AQ¹~øf6¢i…Ð̽)Rh¡yO…v-¿wúßÉÜÓ¿Ò3,(õçµé‹QàŽ˜È\sËœ”+—í5Ö!ö/ÆTD( פ4(þ½PÈ¿o¢â%È2 NÐBžQL"ت�q’åFñ_‘�ÿB„lá]Ö–QðYaÁñd¿ôÇìYŸ£ˆl=;´Æî�; °4@vÎ\:y ‘—àá'„ÔTT°ì��PQR†5™ òèê×8Sòâ¼§i„ÈS;`ÝÄZqšù4«°ŠmÔÔÔä›J�!—é™v`?Þ}{8ýâñ#SÃßyzô,Ô£?¬¶$C¬}Ö,Ý ßœ¥¥¥5eR,U:zÄK+K2|È#ÖhJCc¾&õ:0±¶AZB9Œæ­»A½28ªD0ÂÄŽ2¦µƒz‘—¯ÀØÂÎ]‚5™f"J ÒªHTQ­#= Å�dJuhßAzþ¼ÿ9Õw®Xw­] +‚"�é#j�Ðk±ªNÎõjìVIYg)CiÆöºdG p5›Ÿ‹Á#`֌ٔûtÀ¯”Õ,,½�Ÿ") ª„d%% s¾/jôº¬í÷Àš^‰y·ocß¼¯00% Ë(£›^G�(_*#J‡ €ÇxÐ[8AM�ò™×)ãh2p8Ôs)µI�UÑVüæ¸l;* ÀªÙ:°àþàrh 2)yZ[XÝgaÕ¶NGÛ�¯AöžÔ¶^,‹ŽŠ@�fˆ ;‡€c{$/ÍÀ³ûáצËÃ6©±<%%={ö”–ëRöÓÔÊ¡F›ç¹@•Ÿ5s²ãºÓ÷³ˆ’D�Á¬Ì�KK¤Rêº~=IJÚÜÆ©ÖÝöè٠Ζ>뺦èÓÿ­'X ó²p—R°¢˜À‚½‹À¤|ÄdÝAQr8?“²ïQ2'#¯£WÏnØDÆÑÞß|<�'~Ga¹½G£°{û6©Ë¯æ|�ö-¼Ñ¦•?öÐ+µ�Ô»šxoÒû”µ£ç©?½[-pøâEl§ç¢£cc4'ósú¨Nhäæƒ ;Ö°€àsøyµ&Èk(õÙªUk”••cêû²ðÄ�Ò`Vø¼`O™éÅ‹S¶o–[Õú’â)5:Š Ø¨·ÞFÚÍdèQbôJX «À›‘·˜>¦öÐÓ7 ¬ fP¢«„çàÓ‡÷cάùðön¯¦-«ô Gg™RZ–þ±dÍp{{{{i:qòbéQ�––ÛÜ4ž#aN¯È f.¸E¹wç¢<ÌÎS†7A!'ûÔC×òtøY;`¦ºeÝUà“+cÌË¿S[Õ�ùýŽ6ý‘Y3gÌÀL2†Eˆâ›7ö—d�¸jG ­5óåÀãNS€¬O–¶hêéÇ÷È�%€Ir,ýží!$ÀE?å¤ú�Q‡ç—‡}ŽŽœÜ…£œŒ7³´�%¥z­Ø_Ù…Å)!°àg».‹ƒÚwéŽ(ì\äoRGÿD¦æaÑ‚¹ô#6Ã�¡ÃÑçõ�Ò>…Tm`ÐyÉCT,عknĤPÖ¶bSyÞŒF6Aºl²Âõ4Õ(gª %~ÎGŒ|Zªåd´jã½JË r Ë÷*7ý.…\ƒ‹•Œ ÍàÄœ�#0§gh‚sJâ:Ó´M}[Ó·÷TU5ø;£†ìÜüüãüµc'}Z3ád¬‚Ì| ì>„}Û6ðuÙ@ME�2Ýt°.»‹¤˜XôïÞ>mÚ³Ÿ‹üm¬ú½kÊß<;úïÝ·›òÅ–dYzðÜ`Ž6mÛã÷ k?_Ù ÐȱÈd(G�»)°oà�¸Ä4Œ›ù…HÇc£}ûö0äw)*$�¿²ß½Ú6*ÈÉ ëÔýÈ �¾FF°¹)š7óäo¯Lù@¾ÍÚ�8üÉ÷_ºÎPBÂ�«d¥ó7§¬ åâ³KU w?ì¦JÂÔ™ŸI›�;è:<Â&è±;ün`Çq‘ÂVA©° ¸(í–†–_+ ãA#º+yѺ¿×õk-]_=´ñ3®Ø¸s-·T‚¹ÉÓ�Í=ãî›)2Ȫø¼2ÕÅr€U ˆ;ü°æ•ymŠ¢ÈÀÿB®†F ;#‹Þbªhèd ?O!k‹ÚÃÕµ±$�A¦’7åcT9pçL–G³Öí«¤Æ×Ý£ À*_)€Og'G�àÅÁK]mi2¡åÃâ™4Yé/-«ð1315Eƒ† Q·Cæ«­…ºµiÅÁl Éc,‰À•ñ}€äaýW_~1(3&Œ!àØƦfUW«ª¡„T­‚P?Îþ êˆãÉølÓ¦m•v\}ÀºhÊtô> mò“JЪÆÁx9À*:KKK“Ö5qm"ž>÷0"J„.%W›µíH_»Fô¢4Clä%(èuukÊ÷Fö  (ùVñ‡óuw……¾&Ôte¦…9æ òÄPJ:%%�^–ùhcD@àÔŒR7D*÷£2í èø´Gbb"ôm¥}Wþçææ;2*�oÆÂ— He€U´»A€âh›Žh5îÐLN…ÂÉ‹ƒâd¬ª“u'»1 ;p„ts ÀUHÔQS—v“¹y�ÔFF¹6H ¿¬ÁÍxi�ðyÌܼê=Ô÷¥�ù'V@Žõx<qÂÂÂPt‡Œ¦J¬·Ê]L~N?L�Ž ™‰ì³/¬/222Óè§£]± !q+[Þä I%2iô-ã_ɽrÜ-΃%oœõ ª}¸avV¦têÒ¥Ü.”R©Þ͛˻|èãíÌd‚%F·È–¾IéÓðôq|À`—oX×XbÒ¢¿¡*¿wÊÊ‚ŸÇýf§!44#†�$€ç7·fðiÝ�@¸ êÕoH°ÊWXô1}ÚÇ”ý´‡±Z!rsoãbüm|;ç{|4õC²UÑop{tlÛ™¾O:˜:u6úõÀý(Ãǿʕëà—Ÿ¿ÁgŸ|}#èèU¤éÙ’Þ9¶Ø¾{;™Ú0oö<”�)Ö¡ƒ¿² �ÞÚ"ž¬á¸¤xü½sÞù6\ºI«hëײ�°VÞΆÅ#Þs œ$(´aãF´jÕJ’Ñ÷ÁûHŒ‹F§Ž] ¥ùà=­¼½ÈÍ[dø¶ˆÅÝuË0ZÙ zÆp76€Wv Æ´ïlmÊ#ϧ—ÔW‘H6,C€^!òbŠ1ìV”TÔ @M¹çáO¿ü¾ÇâØ+µMë6˜;ï;é˜fL›Vy÷ÀÚ†lÚ`ñöÛoÃëÃÏáõÑ÷ý•ïñûºW¹ãÙšFü®ëó<&"ìjŽ?ׯdÒ6j†mz$ 繜þÇú²ïš7Ï#ñ‰ÙxÒiñOGGYôJýyír; Bc²‹ynv¨h#Ö±ã‡`ôȤeS?š-3'4ðé­â D'eÑ÷6J÷ŠáÞ¸l�B•…Œzž†Ebz.\ݽèϬ‹è¸d‰�‘w÷JËáhg…«QˆKˆâyÕ鉨ËsJ“zŽôM‚C];¾NžKoÅ£øåx9¨¥Lf=Ý<yÆdÇ×3"8®� —‚Å”bJ�«��ìÊs»:ýPƒƒ/ò;ðÞá@Ym(y{xÊ@VѦWÏ×*Vù6^^ž¸«TJPùýv­é?¼]z÷—¯~ä£X˜:=ÞóÐv:&ô†—ªn^(ÈÏ«µÒ?$4TÄÈjM`¹‘›'Ö¬ßM5#¯L^¾Í0aê'Uö¥Ä‚�KçÏbýî³H§Ä²–žnçKòÀ¶ ìéïj G^§øöî zãfRæ¹�Os¤f‘ý}Nu-píj}o=Y`”#=S4±i{‚ðþØ„fd²¦çäã}2ï÷é gû†Uöÿ°'ó-ÄÙ€s”ß~¾Œ�W `­œ;°¦¤„ÑvÀ±òâóiTh%û}]¾r¥´ÞŠÅ"ŠJïI…b~þÂXT°o½9Dy­¤í]¾Ÿ|6{vìA]G[QI¸SrWb¬ ÖjÙ�,¨Pöüò¥„ž‡3™ªƒ‡ A÷öMðû¦”n…Ï?�…ŒŒ8–¨RÂ<…²²—àä↦öæ° ²»oK^<\qÀJ Jñof¥LóMÊÞÛ[›A“@~ÆôHåþï©hs˜ƒ,L‚´&Fú”¥¾ umcè²`(%>Æz:Pb¡Iä­t4r´†¶RÙ•P3nÈ‚ D_�BHiY»`ñÏKàì`‹˜¨ëèÛ½f~ñe•—"|¨6l„’ÊÕ“µéâ4»ï‹[¥a-O6o\�lú¯ßºrúmc-­^Þ¢i“&!òF,¦¿?VzÊÐwt—vnbnSq.ÍZÀÕÅ穌±{Ã&L˜2öf%¸@aM-cÔ¯o 3* �†¶¥#.G£/‹¦ŒŠCçvÃPË[·­Â�£—)§W‚ݺC—’áŸ}(Þ+vÄ™À°px¹V=¿Ož2î,B1|xå¦óg)gü¼AÖŠÎ3 ëè‘#+2‘Lj�:Ê0bá�"^|~]ù.ŸÇÊ_Ö¿ø�)ö È€"Š ¼„ ÜJŠ£‚ˆC�=]�Œ––¹Ô—) �0‹V,oS1áìl8ÙÖØæYˆ{%Ïd½s�rÉGÉ*,FBbn¥$¡œE�%Å¥´Ôh„�£bõ¢µhÄ¢wE<{FMû€VWoS~ùá÷qÏÒ»� ÖiÑF²‹‘[¬t]8h^»]8ý¿žòþ“îö_ÓÎÙÅM›4¤L§¹ä xî|ÈÛÃÖ”dÁʦOŸ†§LŇ“«²Þ<)Où#=õUe)ü× Mèu¨®�°™3`¼àÓ ÿÑ÷»?¯Á¶-Ò�o¾_¸R,‚­Cý*«X&€V:U÷xëLÓéñûVÑ×ÃV±N€«ßx»V€U¬‡2Ø‚½÷¼Bø&? `]³b ò†ßHõTËîJÌ-ÁLŠzø{ïOª6€UsÏ~ÃP¿‘ÛC¿˜RÒ—(úåüU5V±ÑMú*ΞûÞ9W(ÿ©GßÐ#�É‹L•ú,$0&XÅ#zlöë;„LlCÊœÚÐOÒWX¥Æü'ÖêÑ”Àš­�Ì ´H/æ?7®C�îÈ&ŒÀŠU«p>(Á!qåf*þ¦‡ªˆ ‚¬bqŠç´Où9üñ×ñÕÜïàåÝ’R¯dÖáÔéÓ˜óÝ\©�üŸ®±ÙífX¿rO­ë7s¿–7•OŸ9C@UvŽûxæÇÀ*V´daAe€U,ÛùçZióµÅ4ô¤¬ïžØx©Àà�µ«ñæ½ÛðT.“¾d.ÛÛÛBõ­ñUVÑW1}Ž×¹ÓGöZDE×XÕ'YÄkCC‰,âa#†ãÏ�‚‰'B°\º1½ÈhC‰VÓ¿• )ì)Þµc{J2‡ãFè9d¥%Q ¹;’n+U9OOOäßέXæìÞñ·r)›½GXå+Ò“ãpr÷ZùSl£äxRb<"îS:m4l ê`ÏúŸñÅw?bÕÖý”ª½M°ÖW’Ë Zš�¼Â{ضs/�-„Ç&!<µ™ÅháÕY�ìY@倢R²OQJxµônÔuÍÃA­¬ܹSŒtÊ%_bQƒÕâ“QÈJ•âJk©QM úTðµRB?3YYÙè?ôm {c0.ž9Iö±7&M|�@lM‰ÞmÛ·°øà òÒe×K£ß!­ëÿÜŒ�>û¼âu×63pÈ›èüú”k¶Å�ÓAR“_ߌKW®ÖÖü….+ ôrVZ*´ë”WìG€«•V±bÌ[oàóx�Œ�¿výÁc¿ƒ½G.¢ \¥”оÃsËáé«ê†ûÃØÁá׬‰ôûÔɯÁB¹N\>}9É1XúËXN°}ÔÓ+ö+fn³/wz·V!�íá!«¯Ïåk!åõñü3 ÖüÂBÜãŸ+2tëóÏóÃz;r"ƾ;ña«ËŸ"!×®bÚì/žb ESExÚ $ç•AL�Šý[VC­Õ#àü%ìÞ{HZü•`:ú¹¢!ÕI¢"#‘ÏqŠç\}Þ«86 Ú ‹Ý:j’Õ…±®!zt½ºÓvá}è½°bå’çõ2þgûY1ÿÇç°Ê“™ö„4û¨ñyÛ‡=æ�=.Ý_ IaE(2ð_ʀʌÿÒ+ŽU‘�Ú2 N¾B²Q¬ ÓìÚ2¤Xö²2àJ)ZŸ@IDATm}ô;!éÔèÅHµþ£{�««(S†Ð„þ¦jϼ—¢Û…”½U‘d…å�ØÐ O�ù�>~-(ïf3JÓŠIŽ6æµ2Yåë/\ÂέÛñîÀ�ðöõÁ¬¯¾¥—ÚEDfÆ¢¡c#ä–(ÃÆÂ”ƒÎšP¿—K�Ô€ì=²ä(ú´¡I™Y#²…–}9ŽRº=‘“%3xµpá2Ä'g#!â ‚cra¬i€·ü[ãÞ@éS¶²œR„6d&Õw°„ å Õµt «§'B0šý;ÿ‚'™pGÈ|�ºqÎa;>É1'E]¡ŸßßÛÊÛˆ‹â0g|²ädñFÉÓÇOZAÖ´·£ï°•›ãZÈ%¤§&ô’Wž½r¼Þ«J»ÚžäççRfW[¶”V›™=µÀxo$yÙy5k†Áƒ‘‰jW¥+á�)ÿ ©²âþ“¦ë÷JsÖÖV°9¹ˆ‰ÌÍ<´Ÿ>¬÷˜~)Éý®&‹)›,Ì”2jÚôÈ'¤€å^޵õ�1a ›·€çGU�®ÚÚ¾¬e–÷å ÿéþttõè³h-y@ÖÖWÄÕË8vè$~^¹N ŒéMä•ÀÂ@C‡ö&ðp‡þÃŽ56=z¬Úˆ©z›ZPžÕ¢úbœ¿p‘j2� É+4úú5”楑îÁfžþÉž7üå"»(ñ×3´ÆŒ¡|q>ôõµèYZW’4 ³<“qÞ‹7ý†ôé•Gصp‰¥˜Àb™9s?FIa6½„Ã1qÒT܈º†æ/µ¨ h’Hÿa7þfågÀ‡ç–>½úâô©ãèÛ§+šzxK>£Â+U0XÅtŠ ãúMyÜ.dl^€�hckƒ_ÿˆ¿¶¯Á¡Ûè«i…V-[Êj”jSõ˜»ð{‚²'±ð‡yXNð“ã”çöAII1<ÜÝ%¯ÌêÛTîX¿ ÊUÔ$ÉÔêëÄóíùù–‡ð2´ k½­¤k6‡~ƒRs1q¨ÔD°½+ûŸîßN}úË7—Ž©UKéÑß×bï«k£Æ˜E¦¤)%°ß"“Üܺs7þغ�ž°7$ÜŠNžr¦K÷n¾¶•Áuyrö»øŽ| zõÝ M ×è°™Sê¾c'ÊÍúÈ›W<æffRfXÈAË>K66¶ü�²¡Çrz÷ê-µ+ÌË‘åÉy”&oD)âkd—¦ÝJ Ìzc„s>éVª†ŠeÍš4@T\<Á´f¸†›‰ÑСDp½B»ù7D*åK³srain;‡º¸‘S¤’%@&k•Ìy��O%ÛU'/^Áë¯w‡==€oD³­£=ê1×.æåèæ¦‰ÄÌr²Q§ë8¹6Åò_Á”™³*^§/™Õ÷XüäÁs¯8ŽÊѺu[XXÙAËÀRZò½÷PBl±Ý£âVÙ=�0‚¼RŽ\ë\“=j?ÿ–uqdhÈì^ô1EÆÄC›×‰jËñò3`ElEüó ¤¦§³%s4þç�)zPd@‘�Z3p³°ç‚/£‰Ãƒ{�rAÅ&Þ‚¡¾ìzjõ¦mØð爈I‡fyŠË”p‘× ©`Ò»{{lþc-šy¹CœûDÑ]-—î)ß�…™­*d}õ«¤¤$é~£ÖùZx&ðnÓß^“ª*íx )®KVý¾É/ÐdÑ_qA>ºuy¶ë¶ÿ§—ô?³[1ö! ËŸü³‚¬b\&žÞ®z¥wâÓí7xQ~­ÿ3oŠâ…¾Ô (@Ö—šnÅÎ^Tä~¬.ÛŽ¾¨](úUd@‘�˜¥šÂ IÉq”;¬ƒ:¬d|’Pã``e¿ÇmÁhd©%�¬O²}õ6ñ9MLÁ;ß…�·9¸ùY~oQî³ ý g¿K ¤…ãôáÐ$[L]ÛˆÞv©¸)@ÖÌ„Ÿ;Žø¤[°wp¬¾‹‡>·"R—¹Ù ô¨ÕGl0ý#5óÑwô{¨gç„ac&ÀœàŠ«�J dî;r ��ë÷»‹Ó·ãÐöíðïÒ‹¤¥”ç,B^Nn%ß”@Ö²r%²¾.pà¶æàÿC¨ÚŠƒ êüÉwÔˆÒ†»7­&;+V¶Ž(IŒ#ð¸ö”»¶ x`ïÛRÚZx<6 $Í-ÞÌ™ ;º|6 ,í¥Ü†À‹¬§§�ˆ«AôÔ#�’SSúj©"1þ:þ>º_òó«OyFy|8}z €U¬òµ±KåÛEћס÷é©tãq�+$�H€+brýâ{|öéGðõ¯:€ý8�ÕãÃÙh4d¤|W¸™”ˆÃ‡¢á+2x¥«ÿ�¬x‘÷gLÌ, g`…Œì8D’!×ÐÁ� À]‚ÀÅÀp˜é¨!93uë5@xx8%u3ø›"99媪p!‹\Ä� 30²|œ oãä”[8¸ÿoh³�u«—`מÍXÿçääÁ×ÛÊe%XøÓVHŸÄ{ãÆaÿß`ÎìŨO6µ??£úú£S›×±sßìݾ¬Ý„z \ D_d ‚òò ºH/IkùS¬ÿc>ý|Œèë¸ú�-(¤?®�¥ ‹JÑú>ðÙØÕ6æv¸q-Zw†:Y¼aáaذu%å ÿÆ ×Þ†?=„=ÝÝ�ÀâŠ3d®vèÔç.œ’’™Ófð8ˆÒG¸.Ùˆu�$yW’é ¹Óǽ skž ªÅÊ”:°�lÛ¦Òšï²4o¿9œlÕzI[Óﺹ`ÚÙ=Ègµnª<Í#û./ïvȺﯭbìµÂï·JãûOÄ ·˜¬¦ÊÀ8¼Š›g¸!M¢€AÎÉüŽ[K^Çò¾Ä± êß�5s@ÀHxµPêTæOÛž~¹öRS_ïf°¢gf<½˜[ûûË7êGá¯kÏ>ÅT9ªf�U¼ÖuS.\�ç›Úõ�LÍ+Ö¸øX‚<†˜?w6„‡£øm 9Õ:ê,¶j&õ'þÙÜï»qW9y;7.GjÎ]ÜLIF‹æM¡ª¦�Ä´Läe§#9"�ÞÌwPtO•¿õ¹N.†ÈË/BNN6âbã(—†‘cÆÂÙJŸ X=\ œµºý¹ 𧦥Áë)ÔÊYÄBIÓ[™·¡Kö«=;cb£ábgÎs­½êжnœ?„&Í[Q¾ �Òª¯Ù‚çúêkÅ‹zÆ™Ô[)èÚµ;?¯^ÈOK@û>ƒÐ»s[Ôsrâw^Ošž¤kk+K¨©Ò›œÇ؈^àÏŸÌÿ�»ôDËÝ¡D¯â;)W)uWWïVR—#ßE9ô]‰@hd2ì蟬««/þF+ÝË" V9yEرs?úô膾=úãÜÅK,ÎÆä÷ß“ú0ç¹O¬ûÎÂÛÛõÄg’’r€Ujă¸rwõÄÒ_—SB¼eÅK²£Çµ| ¿þöi�ûáW¶"ô¹½–²}|3ñ몕YÕ¥sƒhpŽß3[öó*Å¢Ÿ>ƒ£C½´æ¼6# _KíÉ®g_¥+^Ë«• S3Àúj½¥ŠWó/Ë@ñ=ðPƺÐáo°<¢ÓòqìÔ¼Þ§7r²3¨TR*juðù¤‘¸°s5¬]ý`ddÀëU+4 %Œ‡»‹ÐüX€m�‘7XdšŠÞ½»!éjn@ÍÌ»¶lG"‹¹ZøùÊwóÿþØ�Šcš´ °±4EdðUŽ©òzÞŒE†�PVÕ "Ó0thÛ:ššÿïǪ8€š(潫tÿÖ¢õ3ƒ¬¢ˆ]Œ¯H %T ÷ˆŠPdà¿�ÕÿÂA*ŽQ‘�Çe@ �+d‚—%Åú—™Q8`È`$ÅĽÌݾRûÒÔÔ‚&,?m>ˆn~îp¶µ¨ÒìÚ­Bˆ©_•¥UŸìŽ,E¯ú�gD\—ÉPVÝ86q¼l‘³NsäàNn>ŽRæ¶äÄ9ÌùlŒíÀŸSFºL¶¶z{.˜½™‰7$VZiZ"“ }Þ÷î :=Vô€­Ã�YëNˆ¾ Jöpð.,(kVÁ΀R×!QÒ£`°ŠID=‚S“>�Tâù¢…óÑ£g/z¹ˆ§OÞÿÙ)±m½Z´CrÌ |þÞ»øò—U)ûvªcwää •ìªº”*Üûû¯¸ïãЩç[0$Ó§'Ss+\¾xk–.Á¿­®èWÌž?C¦ ±¶UYÁ'nž2PsÀ€.ÒªüüÛˆMŠÇ¦Í«‘’”G–�6¦¼ÿNõͪ<êBÖFT]Öõx£*á1R½]™Ç�K  ¡û€E+o_ùñ¦ž!nˆo6Š@y}™hõ Ok‚ÒÏ}ËöFŸL×Ê»~)ógNü�C'ÏJûúâ³/žhŸÞ>®¸~ý*""ã L&X>‹2ròáÛЧŽÁ<»»÷Aø}ÉXÁšÓañÁõ¨@7úÿ›,´#ŠJ‚W/†"ƒlTe‚t¶†Ú¸ÄÏ!YyÙù%P¥×á_»`ç_lÐïGUÉî ¼ˆÄ¸b|>ëS´iÝ¿,ü ½ú„–¾:|šyãƒqïaíÚuïcžºSšö lYËç“§ŒÃÒ¥kÈ^–ÄÐWÖÓ½J ãñÕŒáðnÞqa‘“-壄þ´Ó?ÿ=»õA¿îþ’´°»OkiÝ»ÃÂο9ü ÔáÃ÷óæ¡M›¶Z(u= ~¤ ðä)R[?/٧ı¡ å^ËñÁØ$@ÅÄÜM¼;Vä>!!^š·#PX=voÙY±È—^´ž^O_ä`mcM€Õº¢ŸßɈ�=w^Åó'�©ü=àO=ÊÎ÷7žK9ãovµ­ÒÕzRÞ½WV±¬GÏž<‡õ¬x.ŸqàïB«§ËŸ>Ócm Ö¼³Ç¥s†èPîµüL�s£¸¸8ì[ù=ëcJ0üí7¤n¬íkž‹—óÜx�2^ØD 7Ñ¡—�’žŠCG�AUC66Tk0@Döm¨äC…禒»wA%`܈ÍÀí25”Qš__Gj:e£BQ˜ŸÃ‚oz’€?+Þd4‹˜3w.Ο¿À�[¨K@262œ ½:·i]-”ä¤#-37sQrxš·í*m÷Oÿ¹z6Áê¿D­ý39|„ìœ{·È]4÷'Lž1ñ‰¬òãó!VLO‡¨‰±ã'W4/¹S(͇ž>‚ëW‚žR„ ÇÓ LA, 98f V/[†‘cG!*9‡÷ïE×–î<_¥ánq.¦·6�ÖŸ~jŠŸ~ý�@—ñûŠÅ»8A6ú—ßÌÃу;*–)fx™Ðàu”"PdàåeÀÛëñE]ñ´f°w²CTt,–RE§e÷N÷°·é{¯££Šn�»Âܸ*¸¸xéRìÛ¹ž÷/žTÎ’�=ˆ ?ýú'|ýéD­õ`ifŒ[ñÑЧ­Š¥¹)Ž;޳ϳÐÙïM~çå%â1{ºLuŸƒ‡H­Ö¯ú¥¢5Y�´Ô�]C:ñ^YéþµMHbŽÔÆÝ¶ê˜MņЙ—š]¿¶ÀÔ¶K1ö"Æ÷+ßs vkå1™¶ÅÖŠ ¼¸ (ä‚_\n=+2 ÈÀÿxl9ˆ©ˆ§ËÀæKÒß|÷úõ  t1+EC÷¦«X\¯ƒµRÓÇÎZ=d­­ ccȧÖd”(Óo®I=gø·k�‚‚B|³h L uáÕ¤åoel ÚúyÜ2ÛzP¢W^:+5ë�]”’pƒLº4ÜIOµðËÈ,ÓƒŸ[]$“G?ÐŒLJžEN!Q®¤ë01ÐÅ�B2H“caëÜ™”R§Ylgiª�˜+”.WÁYúÑ�x¿Ò•p%’�o‡³{ 4+d¥«Vµ!i+bùœï -z£´êÔ™~¸êè÷Ö¼Y3‚=ý^LtLþÅuÊPfÜÂy¶=pä.ññç•+ѹ{�*i° œQm k<½‚Õ¬E�ÙSÇÏðæñÑ๼Skz¨rzX”ÒW7õãš¼ô†ÕÊÏ£,Í[04¢Ææ¦¦V0¤­aëN¨ß¨tÁ_|É¥näØÞ΄÷¨ñ°¤�¦ˆ0¬2`Sy“ühB¯á¾ƒÞøÇýTïàÊå 8°o7Z¶n_eURJ*½Tc¡KpÀ½isèR7åf"=íX†¼IBxdÚ·­ êUé„OÊ¾ÆM\¡fÌÍtîÚÖô¸NÆ^½wBB®Á” «¶¦LŒ5àT�þªé÷p§¸š”Ór²6�%%ºµuµ™WSäü5!»¸ðN ýó)yiE ö6%®µèýlDïÑ2zŸvÇÀýP�—�=»âêå«òFú±^¥gzQ:¡!qñÙËgEùêuâµîÝXa^.Iu/]¹�¾ˆC¥—³s—l°¼GÏ×ж]7JvÉ@VUd ðOÈØ~ýí·p 㽘R®yE”»mU=µ>?Å"Z1QôÁgÿåD­ø�I s{+ÁÔýúcA8!o+�Àà^¾ÂÜZлô&âÉlÕ,¿C¦³‡¼ÉcÅ ®°dxØ�­‰¡\êzÀ£I32äeß§€óç%�ÑÊ�Ÿ&Z£VÞfþÂEô’ºˆŸüIz ÂKuû©sèÞ½»¼ b²ÚcЉžRBÚ¬ž+öiƒ 7`ÃéÇ:”’íšd$·–ä}]›xaÆM¸KOÒV­ž,×;{ÈŒü{ý<Vù.ô �å³5^ô=.œ�OSwFÀ¯K_¤åb'A´mNÁÝÇѱ± o•E5¾ôk½…dNwï*ÃØÌŽÅ.N”ÏNC‰Šztî�MôïÊ̽>¸S:úwÊh¿ùæH{öÌu'Œ‹²$ ÙŸ^ˆ®,*ùâÃÉd:{ÁŒ’ï•#1æöî¤ÇwLîQ}áðæ d[Ü‘XÆf–U¯ÂÏ".&M¼}.ý[SN÷IÖµ_Ëgÿ­}ÒýˆvF,\ªÊûÅdÂâ 5-5ü}ä(¸"–…E³¿^€¡ûãØ¹K¸‘΋"¸5¶Ç¤/fã»y (óœÉ÷¡Íš{ Ž¶Î»„ž}·ëwnÁŒ)3°aïì­q™¬Ø×)#,V®nø„…",(“/&Vµøi IdeþöŸ9wèçܪEK©måd² Ys¬OÑP‘M†T˜hâd�K�çcÙü¯*oöÈùz�—CO[¥¤R³,â‘í_µ•‚ÁÚýþ5ŽO3OJº[ðs-ûM¯5>^vÕ¶µ?.‡„áå»-X¤§E^VTÉl“"PdàÅg@œÿ+ÿ/²8)�¶0öuëÃHO·J{—…n¢Ø¶Ž*/VúdãóCG½jNªl¬xòÒ2 ÙÀ$}!»÷”YÈù`…7ëóȪ¢��Å™èEgXÑ¿"Š (2 ÈÀSg`æÇc°áÜM´j`ŠøÌ"´ªGZCÎ`}êŸaƒ“'O£uëš’î”Û ¤ßž5«ÉµÆÒØ”úÐ'Í,û�ÌÍô[«Zaú »‡�C]¡¤•(éà�1r~œØ :†Ö2d ïÙ‚ñÓfãmúùÉã*}“±IßMz•\ 8…>-]ñÛæ½¨ÿ† mÝZ÷@=ZÍÒÌìßß’˜ŠÍßÌ@ŸIS±~íJx9˜ÂÔ¾�¼ëŠÇ¹ß-À_;¶aié=¬Úý€1ùçªy¸�Ÿg²¥>]ô–.^�#;Òá]׊¬ª{Ë~õu áJ H?ÿŠþ7“™•JP�ÞŠq ÒÔ O¾í£úîBf^ÎJ“·M7·A¢ž4»ö…v>I9Ú„„¼9t”¼I•ÇÚVÁÀ«Ìb•o‚æ÷o< _ü¯TU§gcPh�ãìÒ¾=Ät�Àhs_x¢§¢=#S’Qú&}sž$ü¸­˜‚‚ø¹¥Üi^T2ÙvyÚKÖÁ %²ñ,Ì È¦º‹»ëÕs¢ïU$ƦÓGR·2R N à"FhªÞEpôu²³JßÃäÔ›ÐV)Gä zç6¨ÏÚ%8Ú[¢¡K¼F_#¾-ü%V+(AšLÐn+>ÿd®G†Ò¿ø(z÷|ƒ~„g1jä»drM¯xIu­› $ðܽšñ{�ÌÚšßö-�“dœ oÖaoÖž—€€sxcÈ@ÄÆÈàåÛ �µ·«ãÆ�“žz{7#³Z»Vðd⸱R›Å?ý‚ ”}ýtÆdD$G“iw ÖF•»“X£@’Ør‰'°f-ü:·¸úBR»þ¶cÒ6b¹x.gz �UÄâ%?`Þâ \ªŠ²beÌžý1 Kycìß³3ñ1ZVc›Šu'NœÀÜï¾C×.ÅS©�u×cþ_KÏåÿΟ�€ƒPWBn¾ï ý–÷�çãcÁ¼_ëGIÝr øŠ�Ž’6ólÚG�ƒ2%Õ»uëBßÜ øž"Ïòïµxí/#&LþPY-]0ê›åðöl¢˜p07§lµ)²ò‹Ð®};DEÅ"ŒŒò²Â;\VÀß�4õ¡<œÆ]ܦ ·*¨‚P˜‰Ë‘1Ø´~->™5>þ­Ñ¯W¬Zõ;þX¿®MÜ¥—äÄß81™ÑÈÍe%Å;wz<Û±øáVb4sþ†öj�]mAGEÌšõ¥ò�a\- ¾ÇÞÏéÌ-Ò ùw#:†ìÍ•ø‘Ÿ³' !Q.ÂÉÖ –õ@–zLÌ´iê GG?¥áÜÞ?‘�.íÚ")5›vŸ¥šB®…ÂÈØÖ8{á½ã ‘žW*õ7‰òß¾ÞÍq|WUæ°´’ÿš4–½OòçÏò /W3Ö7Æ�DlÀåŠn4XÄPF¿]3zœ‹øyÞfE£ÇÌX›>‹²  U‹BîO<ÏKñ/Æf3rr¨ºKoÏ/ËÞ£6­\_ú\‹hN µr´!¸*&_|ñ-æ~ûrÎ'•�A1¯È@õ 䔕BCI ðµzjÏx)6v(îrOÂ>@‹÷S©qÐ!kÕš÷ë7¡„÷Æ�–ÔIv0�ZxÂQ½;Ï„KMØ™ÖhêT¿œ¨b•‘‘�^ݺòþ.Gφ EÇÎ5Ú>�W"âpåz†>AgÞ,PSQqI­­o¦gÃÚÔ°Æ: z¸*âÕÌ€üžTŒ×(ج¯æ{üª½*“õU{G¯G‘Eøg ±•Ìtë ív1R9Ù›h#·è.ì�5k¼ªë™¥0Ñ’U1ÖXùÄÇ' ôJÜÜH�Š.£ÎŸ‚±�=økVüŒNÝ:�)WŒ¦~m�ž’‚ÌÌ,-õ ÷@V±¿ã'Èþ‰‹#ëÈA<ÅÝ’RŒ˜<›>ˆ¶HHLFaQ>s�è�¶FZß„«ˆ5?~‰º Ü¡®c-†á×P'72 }Ⱦ5ʳ:øµÀ¶­[`KéE KO¤¸Myâ}†Ô`±Ší’ÐЩ.™-欈}Ôœ!Š””tÌþf.™´ÙèÕÙï¾5 d Z×kBFLœ¸­½ƒ=þ>zZtGiJ}„‡_Å©SÇ%‰aia¥:šºÒ`u]çú”<­ú~Tjö̳™›×UÙÖ” œ:%í´´%öž½}]èÈŽ�@RRz¶UÚ‹'éiÐ&I¢Š3eÁl RUb!2‰AZöįa' gI)kû>H.ß×Ëx´µµÃ G0d+K{pP¹aãÆ°å÷D“¬Ó'‰ 0;úû å¡V¯Z·Fõqöüeú¨¶dÏ™ëC™Þ„é|oüZøáõ×’Ѫ‡}û@OKCªèV£T´½&MÉf5åçÒÆÊ†.J9h˜’šB&è]¨ªÞƒ=‰¦ø1&MCùSÿŠ÷³S—ΰµµÆ z*¯Z¹Lb…ef¦aûŽ#pvrDLt¢ÛTò 5'Ðõ÷Þ�!PñÞÄI01a5ø#bØÐ¡ÃòaMÄgË×ǯâ˜äíÀZ™Å*_DIʾý@øu>*||šC‡ð¹yy,é€dGZ’¹fdbJ†Ûi¨nþ ñ“G¬´èJò¡æVSgIÝEÒG|vÅQAœöâØN)æz®rÄÕÔ¼Ä8ãA#¤¶sè¥úÃOó0sú‡Ø¸n#åy›cËæ�hب!<Ü=ðáÔ�*˜¬!!”bN½Eæ–ìü±nÝ:²{‹°ã/ØŸìÌñ#GÃù¾Üº´þk7h¨ô½Ç$˜æ•ÙµÆÆÆv‹:vèˆV œ é·É眄ÄD‚óÎRWnMÜä]>öq-_‹Çýß \¦<³(ÎßñÌÍkÉò}lçOØÀš’Ñòð&øv`3ŠÊÕðÞ”éèõZ¼Þ :wéc#²)B…líÛwØiŠ ¿ò³¡­G¿RS|óÍ÷XüóO8¼ 3?šNF3¥dÕT(Cüc –ªØŸYý"ÀºaÙOèÉœk�Õ�“™Šý.Áåè8çgÁ¹a}ì:r^d^Lž6•ßµr~¶€lR'ÿ�FF†¨Çïºx¬-bé-nh`P±j瞃ص÷ úôèBP¢ÛAíN|:õ�ä¹uõ ž °° ëZCŸŒ×ÌR]˜«gAK½¶Fê8yü$âñÁÄ÷±ƒ¿E66Vðiî]±�ç5cÏs¸†Ž1’S3p‹ƒ”ãf-ĨA=%뤑²bŒñÓ'Ã’ßI 33Ü.VÂÚÕË‘��E7§§> !©/&×GNO¢ùSnòTý?‡Æ…d“$Lå�šŸñ9±±²a.«Ê�oݽ�(‘_9 ¨ÆÐ¹c»Ê‹ªÌOâùF0]=Ü]«,WØŠPd@‘�—ž�¤¸hdçdó¾Ù7“n‘Í©�{wïò·ÄTš7­ö›²ûÀi¸8?¸FÔÔÕEŽŠ•0ö£�§Ìx]X[¸¹6†>™¢ë·‚“™&4r¡õ�CmMÿñ2sZ/uj)+Æ|ÒÎä,ÕÊío³ˆP]­¯-d`•×)æ_í ˆû=Áb×…•ïý^íW­xuÿÕ (@Öÿê;§8nEPdà΀9¥_ÜlõéQ¦Z+À*^úš�k)¿ ÕÀ@¿ÀšIYΤð+øëj,–í>k-] òp€;.ôåwáÈßC©½ƒ#tô Æ>ë[µ`á|ô½ ;ƒ¬Ì tðnEWÊÊu}#MÜš ” …9GÅ$¢E‡^0¦ÔŸµ­=<¼šB€Xú¦èÞ{0ŒïûÚZÛàì® ”.F= }É$t!¸Õе!ˆ›Vì§úŒ¿ åçK“d½xt+·kJö ú[{GìùkvoþæÚè;x(4´ ±hÑ/˜óí—R—ѱ ðn*M32ÒYQ›^+ÈZTT€"R™T¬¬~\Ïò\%¢^8ŸÀIåÐ$L,“ƒM,ÿí·µ””ý ýù~W�}{ÿ¦“I U€¬ ª©(s:xñVtò§gnÀq¦;Tïæ?/fžÊJK¡ZÍöwü ÈÖÕ+—bþw³X0pýú´(qU·‘¬@Þ­µ­-™°~Т4ö©¿ÿF(‹l¬ÍPtO=;µG!ú•Tê`äè1P×ÔÁ„±ã°‘ß‹ò{÷J0V©Œ ž?�Jcr`ÙŠå”6n‹»ù™Øµcî” ŸIC”“Uùöè Тüt¿þƒáãÓB:„ËÁq‹ÌîaC£¨à>Ÿ%§MþçΞ¡Ü&è¯ÊöÞ[c¤"ù±»{y“É*EB®\!x˜JÖmíŸÕ/ç̆˜F¼9\¾y�ÇÊ ¾�ÇõôuCKJ|Ú$©yg�CíÔAÔ¿“‹ú¯¿!­:E¦¬�Î=}þ æ-œ‡ä¤dÊêÊ^£hpãF ×oƒ1ýgóWÌ…ÑÝR¬œ<f-;C�þ¥ån^ær9¦K 7Ñ}ãŒoé-¬b{±Nz,(Ð(†’�x~…B Î-d7¾ý_1‰°µµÁë¯÷ƒY�Õå_þ}ÀuʪŠx½s[´3U¦£”gõúú ë)×Ì>k ñ�7ÚÕ¥¼M²Ö¯_¿Â_Z�’éYI¨ëâNp×-ýý!@ñ§X/‡„ò8� kçŽG¢Æ÷ATU‡ù8KçˆÒ€“¹wqOãeÝô[ZYÃÆµþغU*bH!XDe…@2ª;Ó§ËÆNb*˜üþ{Òë1v:ujMþVz¸QE ¹ÌíœÑª]'I®ÜÕõñÀ�9Á¢N½_—V²êèÁÓ¿ J’Ã)W +mœ9„r } „4¦²‘‰¸ؾm ‹ü*ò÷oŸyÀºjõ´oתâ%x{yðœc€4þvåÐ3ú�wGãõ^=q;;�ßÛVØ´y;f}ù–,ûŽô_néÑ ;×,ư·ßÂkã§�&–ÎHMËÄŽ­›Éòn‰S‡z5˜ÒµÿŸ>{ŽçÛŠc¨É“è°‚[Úptyp£÷f¿×(¡ìŠÿcï:Àª8ºèAP¤KG¥) ½ˆ {ï=öÞ�FMñO1‰)ÖXbL4öÞ{�]AzWŠ€ H¯R¤óßÙç{´G š½ß7owggfgïÛ·owΜs´ 0uòTܼx§wŸFç 1cÒÈÚ4û^ÊxiˆŸL±]&=ÏåúNÀÚM[Ì/Ì 1Ћ™ð b»ÂŽ11‘²Þ'�¯j �k¨¯RH>—Ó¤‰…ÛXlÌÈþhAƒ¿Oýƒ`ÕÕ¦ævôØÁŽÀžŠ¶tÑ\ŠÅ“�æE‰È|•‰|‰¦Øºý/œ=q£ÆB@~y�››+ÍŸ ’Ò’”VÀ¹+×±wϮٙ³|ˆíyhÿ~Ü»w—$0KtÓÇS6ˆA±b}IžØÂÊû÷îäêH60o0tîÒUìø�ò›pû-\Š4ÐÑ·ß@8;ßÃëׂk£[·®¢Ó8Hà Z7­[/Ê®D„øÓ±;áÞÃûpêÖkZËíúú_ ‹”[2€uøèa°§8›W.]ÁqЧ8{É|d%¾cT2Ù$e5Õ¨¼vFºB_².¦k” º÷0s¦‘J$8ö/k|ÎÒÏÑ¢8ƾÑõùÓ –Ǥ€}VoÁ ¼d®M–'¼V×oX�ÉMr°ó‘;ž>�˜ìÜQÓA_’=mOǸóåçÐLÍÄ'k¶³jålçï;àÐÝ–�Ä>¬ð¶í[èZp ðÚÞî\ý×Ù$KëïÉÅP5«¦n)ÄS jKŠÏû¾�ýÖËWhŒÙ*”³æ½ËåÆ èç…Þ½ú�m"Œ;t„!±tMLjL¢_1¡~÷¾�×͈ñ˜D Ššž#…›Á ˆ ñÃÉÓg¹ï��¬Ììâ°�²�?vn§XÂnÄÀ?ÌõoÜ�Á˜·`Å�–Crf.y?†÷S_üúý&\> ÛwÁW_¯ÀMWO|=o">xLq¥³Ðž+�¬]pàØß°êdEtdáKq­§�+ÿ_9”Xü]ðŪÏ*ùƒ�¬ž”Ð3@uVD;‹)5­®P5ûÐJ\7øÐÿ£�z3´”©ƒ p5í~»‚HžY#£ ÝeÃ)âç«�“IžøÜÁ„QáA2Ü’$ÉÚP“K÷ü,t¤v¼ñhlaŠnX¶h לƒ˜çµ†8ßïÞU{àÀ¡#˜6E >Uu©ºïa ëÕ·ÑB¦îß»†Ù³!(2ÓÆ ­{cj”Ph€â’"<}F¡ ŒËíeá^˜Õnn{Jaÿ©âÿWY;¼ñà=À{ 1z€g²6Æo…ïïÞ¼xpx‘œ‰£�Â8IÐ÷ ²¦'G“$b 1vTÅ~÷‰µÃ4`só ¡ØZƒ‡�ÃSšQjffÆI7šwéYo&kvz2Ÿ?…jÛŽ¢c˜ÛÀÞ©/ dgYqQ‚8|ô2¢©¡�àÐ0b)©À›äyýý‚a×YÀ$:÷׌2¶= C'kÛv¥—’(|�‚Ô8:çÄxd¦&A«��¸ÃTÊ‹� Eˆÿc˜Úö‚÷ݳHOŠÅÃÝ[‰½ñO£’±`Át˜w2'U+HfÆ ‰|Ú¤© ۵«ÔÖ¿‘:º§ˆ�Wöø/�ú`Àº?9IP–ÏØM¶6åÁç´1kMŒe!複Ë.?:’¤D2Ä ý`0b:šàÎX&Ù±cÝd“¸Õâƒ�«âX¬7/œB{ãòe-šk�" Ùˆ ÿunˆ÷">ž$ƒò,Æ�Ð|<�qòðüùçߨqò2V­üœ€èq03·B÷^½¡¢*ø-úPÜák$lii‰Ä—‘¸zb7Ì» �¦ŽzõîKÍI�®:—XÛl=''÷îÞ!àBˆíØV[Zô}|ºxfûÌÂÒ–Kæ–`É”~ǪÄz”h"�Ûwn“„–Ì©ªÄZëÝ¿7É߯wß|KLÌg˜4ùá)ÐµÞ ýû²>T¶“û7#�ä‡{÷}3ˆA㺺ºUÊ3æjgû.øyýV8»záÒé#hJl^»vÛ¼°’r²³96)»æž¥eÀ–~W^¾¥f&áÚ…›ˆ‰ŽÁøQcIÂUÈ Ø�‚< wõL9–õ›tÝö$æ£&ÇÎd Õº/|¾i#~8{ Äj5ë?�Óbˆubê1S$ IóØ1îšg3Œ�]âØ‰#�‘’áÄO"¼Iæ2¶J •�«ZZZ\[®œ#éÕsXºpÂÄK¤zU�¬!‰98퓈vj- þ&n$×H=?Öþô3IéþŒ)S&ת&\–ýÎØµìüß—ý²n#IóÚcá’%; ÆÆÐÁ¸ü`ÖÛöeÕ’™è7h¸Øfž¸Ü€±U½žFCixžO_¥ Y”�’}–*Ê&ÉnuXRümÍ7ßoÙ†6lÙ‰.¶e³*­_¼t–˜¥�*hW·�­=f%8@5¤$›à%Ýßì»R\cº·±ÿà¶ÆÄBÔD�ÎÝàüñEqødÈ\8üŸáêÕëèÖ¥;ÚéjcõßáòÍ+è×s$‰‘ÏäÛT`ƒ¸ùb̈”_ùÙ„ý÷Wd±®_¿�<%A¿íRö+çd©¾0_“7±UÕ¤þsLÖÄ$NJI!Éß² «Ð£âƒ t”ÁR{[’g”#e„†¥åZ¶"™|¥Fð‹à»ð±x€�ªZtsuwÇéóg1fä(±§öÐúšb÷ñ™¼xÔÏÏžƒ»‡;6mÝ€¿�ż™Së×PµäH&X’$zö’Ú”‰a;´jÑÉ9€›çcD¾ŒA"©µóìVEså²%èyC‚äÆ+²nY¡|ú«, Ô¬Š¿À§ïÓ$½ûèÙƒ½#³ÿÕªAÖóžá0ÖP$å�b$eç£%MŒæ�÷ïÞ�Áüݨ1| |xðxg}&˜unhPv@ä�Žo¸�= £Ü “ºêƒ-ß§µVÖ¦˜¢¯(VÚsD=NÒŠ½D‡OIMÕ{±’ÄhŠó׿÷ „G¼ÀÀ^=(v™Ž¨\}Wƒµ,‹µ6í„];ƒ�SQD’½’Ò²ˆK�ç^ F�W®ú¼EŸÂaÈÄry$ñ{xÝ.4'é;5UhÖ`MIz‰gO<Т¥<23R ÕJ*íL¡5»³^Q V=•bÎÍZÕÕP€¬j{Ø«)‹búE¸ÞÄ£ç‰X¸xE¹þäÓ@=³f’ÍÊå³�À€'\ž©ÙÛ† `Í|ü�kïÅe&G’Ðmací b¤r;Ä|D½ˆ$©@Yä½Vàâ2²"ÒȈÛô½|ÙâÝæ®­±­²åz=<ø XÂð± Ú´7Å!ý{Ï_Ïqwµí.™µ&føßW«E1moÝwá€É"ŠýeWl;qIe†À¢­.¶¯] Ǹuñ8†Ž™ #ŠYѬˆý5yÞ Ü}äå6‚ïÐÒªr9ÓFèÑ­&MŸYî˜÷]<+6Ém›¾‰ÙééIìô¶˜Jà›‡»�˜öèN}jßÖ?®ùFl]q™ÏÃ|ˆ…nˆÞ'ÁÅÙ™ÀHg¬Zõ¹¨èÄÉЋ$]çL›'Êc+Œ%ërï:2²(Mý.¦1‡\Š�H±Õ¢è|2èÿ¢©"múßæHB·½./X„ׂvXüÚñ1ÄHy ÛÎØ¶e´]In”Úf×*;c²>rqAG’[^±†KŒ)kHòË ñÿcEðÅçoúJ€rÑÄáø>#ßå¦Bþò5Žõ*dos…éÆbJî±Û�gAOF©¢=|$øÝuëÚM´káìÅ¢õ‰“K™x™4qƒ™ÿ³HŠ©+M1°³qÕ=Oˆ1üDFÝíMáCŒäm5\‡¢ÆÅ¬|ý¿ÕxÐMÐ'1»+ee¹Ü/——ùøÞ{ý�_ºxNtüÁŠÖre>±ž«²ÎC§q»2r/ààžë†ÛâܵÐ…˜æÅÙ)0¡ ,Ue.Äâ¬ÉBCƒj*òÖûCŸùáÊ•X¾ló[µ5mæHìÊÀ�ë¶ÁÉÑ�ƒ†Ž.ì»÷@BÌst'¶<³3g"0Ô³M…É.?r÷�¼¢"\¼¼pËÍ͉_:uÜLL™=çŽÃk¾ÆñSçËõ-<Ô&?á¶‹+z£UhÎn�¹Õ.Ó¹&“¤,ñ&Þ ééÄð‘!†®L¥£‡‰cúT=\©>ƒ÷Àâ´ ¬KÄöø±á^¼ŒlÅîæ3y¼wlܼ�)<Ι ÿ›ï½#õ8àÂ/¾F; ;3tè`u耿÷îæÂ;Ì£' mŒiZ‚<ççàóU_ÃÝÝ V–òؽç4ä˽ÂÖëÐ hgLôbÞÊamÞs§Œ®Tdü˜xòTð.G2B•ö 3‚cÓÀ³f4¹MQ¶©p¿ä=À{€÷À¿îdý׿¾¼x¼K„††€­Ÿ-[õ.÷ý=ð¾Vá©ÈÈÊÑj Ø5Tdõ¦ø§YÑÄL¡Ad–È|¼ŸrK²q³8…l=nÇ;þ°˜ù b‰µG©�¼ÌMLàH2£6¶å¥:+¬ÂnMþb’^’üh)³P¸�-"�IY òÊúe³‰ÁêD1^5áýà*1)uUÛ"”@”¤Ïqçi$¼>€©i{tu°Âï0Ì_¾œÚ�@‰².ÚKVŽÿ’_TÀCÈzøÌmX©Ó°f�U¢ž¾U#’©Õ®ZúH¢ñÕ¿n††¡€Aåïï�N$ÝÈ@'¡ eA§LœŽÂ‚"×wý‚é¿à¶ýo_„Z;#œ;¾§¦¦±’~×ïÚ Ì�ÁÀ¸>ÇÊM�Ôøæ¤kŠ©s¿¤ëZ�bšµ@,MÀ:b4S“qíò9Hæ§¡¯Ö,F¾B+t|ý2ô”‘–AJJ<^çåbÛæ?`F“ž–,X€Ë$ågVæ^À*? öƒ}'�ÂÅÁ'9�õÁ£ÇøiÝoÄ�w ¦de€õóÏëþìëÌõÕÖ¬æk€+øæ# 9h i’!~;w×¾=˜;C௲í7ÆõuÛ~Äð�£alPª<ÒûÉ÷‰÷@C{@‡¬“xkC»•oï-<°ò³ÏáòØù-Zø÷ªZ™™B�¦FF\'6lØ¿˜¿™ôÙ�=kBrõGÏÝÁTz2m@IDAT�efgg�¢ÜDX•ÑD–ÞË…@'·»A?üƒƒ`kUùÿ²°°’’’0é¨WãñŒiÒö—ÃJß•ÐÊÛÇ™.÷¸Éíl«0\Îçìù3ý<ÀËßßGÞ¼êíCC#’WìRïú YQ0s°D$•Ù�móm½È·VÀ½ûw)¦aé5¤NŸ“¦MCS’ÃyLà€|«–ÄvÓGûöB«€ÕÀärÞ§µ’—ƒ‘IG¨ª¨Âѱ+´«�ªê“lK*‹·ìäHÉ(@FVQT@¶ÉÞ•PlŠ·ÙJŽ^Ì$¤ð2)LÖÇí"‚|ÐFCNNÝ1fâÄFEbõÚ_��‘Šf2²�()€¹ué ðÑ]afíÈ1XŬ^$[æã‚•ËKYn¢ÎTX¬,[iÜT±RžMû F‚½ ²ró�£¥‚ðWÉH'Ì´%I @¼©ÓFcðÀaˆž2!)ÿ\“aÒ¬L”=ä§�9 ù®}û�€ºÍH浬”([ÖÉy��äô4L]63Æ7üìä nx§›êê°²*}ÉõörE\\ Ô5*ƒÇì#ÆC"ÔZ« e‹–øÅ!íE~U×Ô†®ªþÞ¾™´B´�Sá$…Scãð:?)éèhaGÒ™MÅÊc OПX�LzWœ=~/¢£Ð•$9…æï~÷ÐÉÎI˜UíÒ…Xc —¬ÄÉÇ0qÚ’ÎRmy¶ÓÝÍ_}¹‹–,F¿#ÑÎ@0!C[GO‚Ãàå㇠Ûv ˜¤FÓ“â�‘ò »÷ÿ�üÜ\ÈQŒd5’µ"�eÔ¨‘Ð¥:yùxäræ¦æ˜0n<¦n˜»õOt7Et}YXÙrýRPTADD$¾ Éåù bÙÂå$ý§�ÎQA¢k“Å]U?FgîpujûááéA2ÊMH>Û¶ÆÉ Jt/²ïæT®iv.«¿Z�î]»ãꅳغu b“ÓpîÔqŠ u›¶mƒ_PÚ�TYtL,èÿ{ä´Ù4QjúöéŠ7¯Ó�¦ÄÄ}…¤´t$ÄÆbÐ��h£öþ$ SNàdÆ?$€•} tõp÷(Çæfù~~~$i[û‰¬3S3s ? Ê’¹4ÑÈY$gmL2ôí :`×®¿Ð£ÏXô)(LŸ ÏCÐRA™K¢Ìw°²cï×°³ìU«–•”Úp2÷ QÁhM†êbr­•é·J‰ÎéÀ�CÐUh˶šè3f*åËsR凎BûŽ‚ß>k[2? ½ˆå»æ»µxtó´ YYgæÖ�¥Aë8’Þ–k!ñ²sÄž}áŠWyðó£ö†¸GRܽ† '`~4ÊÊÉ–mw÷îÃðòöeýôÓOSó'ÑvÙ•×î�ôwQÙ,t0“­)—'ÜØøÛ&š _z-²|G’åÐSm�×é ¸ORÄmè¾Âl&MÒÐTT™s7èØ½1fü(üsËMŠ› o/Á`�·Ë].æ-Wá0™ñêÖ³Çv")1ö÷¢îÍ÷0‹/ªTqÅŠÐZiG-2vÿ± G`ÀÄYˆMŠGN¡$¼Hþö<Ťv¾q¢\ ÅrÒˆKŽ,—÷.62Ss°÷¯íï¢iQ›sæÎGv¾´H:\hfíZâúûˆ!yðh×kÂlÑ2äÑ-Xéh@]U‰â$/Ç&bƒ/^8 ­åZRÜåGxàá#KÁÄ£Œ¬´RìŠ `¶ïè~Q_}ù%®\¼ˆ+çÎpyÝ»vÆ×_.íoˆ•½?�§áAßc]¬®ë_»ÿ®Ô¼)±y¶nþ ;žÂ¼Õë¸ý~!¡ølãÛI:W:PeÖzVt¦û9³óW. ˜tª²s4¹„%Þxð(ï�Ð�@°Äï�ÉÑQUv7ÀóÎ;„°g‘\¿Je78‰È¸ÄJù/¢Âpôà»y–qÔS@J´ OÂË5o{}U´¦å»2KÓ•šÞB“ò$%k7±©RåZfø þŸ«*îáë–xkü`ï®ìŒY}Þcÿò=üÐ=À3Y?ôo�ï?ïÞŒ$‰éÇo�Ói¯‹””‡¸ÌB¨·jÊu2==­䑚’/’ mG@‰Ðr ›BKKjjJÜ VMu5hPú�mïþƒðñõ#9Vs±§ñ,Ùªª©kqû_½JƒÛíëľËÄ郻±pér $`ùåd¤Q¼Ò DƼ„·‹"‹d�L¬3/bøµU’…¡©Œ; ØFjÚè3t<µ)AR¤Il°v¶åúЬ¥2dk7C™ÅˆÔXñ­ˆáǘ§âìExÚµÓ…–N;¼Œ„‡ÛCt0³  ÄžÝ[Ñ¥[OêY tÖî Öê}ÄoùYT†1U³àÑX¹†Ëc ×ÊZ+Çî—øÝ®RÉøæç9H"ãK’ðô$æïØÉ ÊV)·Hò¹ªªugš•käoXQ[–ÄY>É@�=w‚˜Im0kÁbèøâEV¯˜O€Œ+šÒû|»ö&(¡ £ã'އ±¡ŸÇÁ›^x·nÜV‰Åºûï#°¶î$ú½M™2Ý»wÇ Æ’%¡éééA˜XÞªå+‰í­B,kua‘rËM²:vv„¶¶v¹|mmA›$«UÑÖ¿tÞÔyüø1W_“îË?ÿž> )`]D<�1cÆQ,Û?à¾óQð2áò…OhÒFAvúöë�í[‡›ëèÐŒüný {—®›•±ÄÕÔT¡©¡‰áÃFVìF�ÛìwQÕo¡beC]ØQ\V--œ:²&�ìDE’“ã)^uƒ¢ÐÉÒB”ÏVΞ�ĤW8»o'­? öª/©ýû Àî?ÿ@IA>1î4é;Ö™'à÷è&bcâ¡¤Ô »ÿÞ‹qŸL…†š""C‚‘šS‚/W¯@[º^î9»à‘W ä›ÓµÒcÅ�NÃí‹40„ÑCGbÖÜ…0'F 1eߥ±ßw~ôsèmÙ_åa˜ìºŠêûcÖVÙ‘Zî˜:uj½˜¬¬yk[{œ;q1ÄÎöð¥û”– òI2òÔ™°éìT©-[)’¤®b¥|aƦ͹˜jì7X_ëêØ–6öµ®.Ó¢U�Y¬F††$ëg(:†ýg èYDWW‡BŒtj€Öêß„«—'bââà@“0ßÖòŠó¨ RÖªÌ#ûdÞ,R2£÷IñÏ(±ñqð Ð¶‚~xÒóìw¿®Ã0šœÈ[ãó€pœ§ñõŒïïR-ZCÆ;‚÷ïÞ¼xü×= WšK¢ySÁzk8c)-- ĤRP,>rì*:™r +W?t€•}ÿBpU½ éH® VV>62­H.Qžü2dÂ,ä’¼ë�cû`l×-äi0]Y GHbÕ¡k7̘7¯hÀ8…@Wóî¶h¡¦�’&Í /Ïy4êÈ%€D 0RÉ�’’�TS󑯮Æ%–â#1s›É´(×D2½T=ĵ¢3©Ì4uÚ#5.Í[ÉC™äN•锉=§JL-YCcHPì—Š’Àù1/8 5/&QËg‹ŽÁXƒz[öŠ˜†YÙ´�â�ªê�¤�}0¤Ø“f–4¯ŠU çàüÑ“ÝìaÝVa$³Ú<#’Äs^gÁÀ¸-†�š(ìÆ;[²û‰ÒøéÕ¶ß‚@»ÿ‚%F‡#›&ÚX+ýel2f‘4õØ1à 4 �šŠ2Ýߔ˹��«Õ¬ÂÂl‚CÅIÂ}ÿÆÒÕí1º99`ÙÒ¢Ã+‹üܺŒnÝíÑVßO£3�{gAAYÚmõ¹º© HÈ*àØÃHøSô9M²YÿóZ˜˜‹&•ôéÝÞ7Îaʤ9HH|…ÂüB„„<£ë¼3Wß�¤ý´44°âËïý2�Iòþ]˜&£.›�€áúÖºŠ†º:°² ` Fï]!-Õ”YY>X…V€•Õ‰Z6YGvgDþð=@4ŒœÜBŠ�ÍÑ­,Ì„Ý*·4lG÷º'v±L6b²ðwºÀ7ÐÒÍ¡©*ø?aà*Ké4 .#M3Œxã=À{€óWy€•¿>D0pµ"ÀÊÎ#8(ù¤HA1ràK“˜õõÛW:= Ãvè@±X+Ð*O¡CÞÀÊ:À&‰ËQ زöíw¿Á94ÝmÞLê*.HÆ—“Ô)[°×ÙóLE€ÕË×›&l‰Ÿ[Ý¡‹JŠ8€UÈ:mÂ'U¬¬MÍ6"€•mÇÆÇsï�6¥ÜX>o¼xð¨É<ÈZ“‡øý¼xðà=ðŸð€\¬eOš�«eV¶¯oo`-[®¾ë σ��±¹jÏÔ¨ï±jªWÀ*®žrmD&f›bÓv27Cfj ÷.¦©/�P”%°AW®²(À•Ó'‰ñš iz¡rw~ eó^gBNZ‚ÙÒóf+²À*Ó¼<€Ãú�ér�@�¸¾%ÄÈ©V~a­Ø×ø¨§hIñ@Ë‚¬ù9�“mJ’®3(N,ÅI�½”XYÝûÇwA‘âÉ �ÖbbfISYf daò¿eã® òu‰áÅÅañ.ðZ6¬›Û|ûÃ,] �Y¥÷mxºÞAì‹08vȵ}áì Ìœ·Äš||wZ+iq@kcXY‡Ož)I tªapÿ!°±µ.´2€Õ¶[-:*Œ;–Š˜™ÊÛ·þ†ÏW} k+bцaô˜ò}.ÛÿËçΨC:´®$;£“Ù—GÐ}~þ²~É ¦];‹VVnÜØ±$õÛ™1´ðéÒOщb%W4ˆïÛÇ©\¶c—RirÆ„ü7Ø�©)©;*N½zãö…SP!VæÈ‰sËõS¸Q`eùê4 ÿ×5ߣÿ°±HŠDÔs\{ËN–¸zñ6ïú$¥ùó¯›`ØÉ ¨)Òoý“i³0kΊCk�n}úaÂÜEÈ%9à›·ÀÛ?ÓÆ‡ïÃK(.ÈBqQåÚèß§dUõ`dj bÆ·’«|¿ö•_ÖÎ'�ŸÄ)JN½“N*ÖŠ¤ïîÀÚU¸uï.B‚‰¥Elë!4IEp½³òŒ‘õ<Š jUa¯b{·ÀÊú§E±Nì¹eÅþæ§FC²¹`2Œ�®üŸFãu�$ôÚµå&h ErôoVVW‰~O––èlm†$ì"“Jðë·Ë`NLU3CÄǽÀ­[nP×ÖGXD$Nž:…4ac<ÝSCþ�]{ ÐŽÃÆŸ×”X×mÚ„u›7#¾êûÚÖ?vRHâ¸Ì„•ŠçSßm[‹ú³aØõÂV¡p»ÄFI§˜éE¤pÐLRR¸»VËHšì$ײE‚lË’�¬[3ÖÃÛ‹™'LUµÅ@VfIig¼L��`Bßm2mk«•NÚa«_Hô4ÔªjŠÏç=À{à#ô€ßS$�´~•ºƒH¡;>šSÚ@8_�Ú35š¨@€êÖu0w1…È~EñUÛàáý‡(dj.Ä góçϬâö7tÞšìÈ^Ú•hÒ˜ÛcgR‹RD(�‹:Û U\HKzY%u‰†²Ç>OŸmuÕ*›üaÝZú¯U¯3Ð*EjqâVv À`?Q|ûÒÓ¹��céù¥g$#7/íôÚ¡:€uÛží°·²Ç±Ó§è©J‚SH*m—_{ÝìÙ®¡&ν‹>òmò`Pux_ðà=À{€÷ïÞÿš–}º††ÿÚñßæÀiÍ�!'`éæÀ„¤q™=ññåÒéS×qìúu$¼†Íœ]0!~ýß*¨É#* 4>cÅ>ˆX…±PYLD‰°hd:\±šØm}óÈ*Ü™E쫜W)pyp‹˜¹zP#/{dϮȀ9« H ŽÐ~ÿ}\œ]…›Ü’©eëKBÛ³`”ˆÁÊò•ñÅÊ•'yÓ›×ÎpšS¯á(,jŠ3Ç÷sÕR2“ñÈõ6·ÞkðgPP*í—ÙÈ>V¬X‰Ó§Ïp½š8i4¶lÛÈ­ùy <À ]4õòòƬÙsI>t4n:;#3'Ot] œyò"»ŽžÃŽc—`JŒÞŸwžÄÏë·âYˆ?Ž>À•õ ô¦™àù¢zl¥,À:lÐP8?|„ jbîØÙwÆÑc§(Ç‘cÕÇÃ[±ú0$�Õ�$KYb¶~ëVô=˜[g 0ìF2¾›éÐ3`ð ÑiÅ¥fb݆-¢íÚ¬´m¯owg4Ql�œ 0#&7?›ÿÚ�DjÍäd·€¶®)6þ°3÷Â�»\ÓV6–ðôrC·nÝ(–n6¼ý�™–€_Öm$f»4$eZaÉE3°)"<lÞ‚Û7I®[Sæ×¦õ)ã¥!–Ø=èc¶qÆa,¥ªL�&ã",&Ï‚#Hòµôž÷Í7kˆ�ýDTµ,û\”Ya%”ätëj~~Þu­òÖåèþ!4O°ÄÖt�SxÆ¥‹·ãúÍ�—“%F¦Iñ•¿ïÚ½‹‹WËÚq´6¥ûâLÌŸ=‰kvÖœÙ8uúäe•1‘¤–gÍ™‡Ï–/ÃišÈr–&²<~ìŠ ã&À´£!–,˜#ìŠhù±çYZÔËx¬ýc¿póƒXæ IìßR2È-‘@nA!d¤$ë ° O¶éä¹ºÉ ‰ vc` ÖªX¬Âc —Ii銈¢A]E´�¡ÉDFí…»¸eëV-)uý�ér�ñ¼x|0` ëÁÓû>˜þò­�Œ ôàï‹Í›·âÛ5?à˯VÓ³¯9ýž 1! ŸÌ\H“‹U‘›MÏÀ�Ô<=]ðÛò2¡k$›þH©ÍÅû 6í9Ym‹þ¶ƒÔ}¬ª-S›�ϱz+›\?ˆK»î¡÷ á3$Ó,’âö ?2d�І»—;vìþ�˾ìzßn_‹ÉÓ§pÛnÞîÂâ4©ÐD´Î¯¼[°1š—Ÿ·ií»=ß:ï�·ôÏd}KòÕyðà=À{€÷@EÃÅsÂ=(‘f}¢5âœ6m ²²ràè(=…åÙ’ÉO?g®Ü ?Šg1V)c¤Õdƒ âf™ëêR¬^b­²ôØÝ Ÿó RžGÔTý£ÚßÎØÑÑ1¸|á< ÚêÐ}¬v¢jê;–’£}„‡�Äo/ :œdÒ h²‚3Ò_e`@ŸþèÚÅ9ô{xìåÏ1àGŽÊùÏšâA2³´²DjZSÒˆ¦„Hšý>cêbž¿@Tl¤‰Õ c4´Ôa/æºài€vÿaq–ÙË}ºË™VôeŒö÷a®nÎtÝê¼�C‰Ž¡J�Õ™¾M7¼Œ‰Å0c{öéKlgU\=¶I/ « Cª z¤FPóµÂÖ+—Ïë»ê{ÞÊ% púÌi >‚ëXÒ Yÿþ¥ªëkCïcÒ½ìãÂ¥«5~"ZèwÆ}wÜ£¸ã%Y©HKO‡®F´!E†–rråoM1NÕÕ5¸k=‡ö\"@V¢0›¤ò,ùò%l{ÄÐþýÐé�<�§·bã^Òÿ†É'kqìø‰ãÆ–k³ì“+_·aÉ—»`ð€þ\?Z˵q°µ}',VÑÞrEJJ Me¤QЄ–$µîåáŽÕ_~ 5ŠÍª§×¶N­³8éÍè7Êþ—�ÎÜ©S݆(¬BŒVÝ7,Õf (¦Tsà˜Er-ʇ6¨M]¾ ïÞ�ßæ-Ñ¿‡@½¦ñ÷¶ñô0¯¤�ÂÈ4~PlÔ3dR¼Ô[ãüÅˈ '&¨Ö“šÄÁc§ÑZA¶vÖ˜9{°¶Óo‡‚¢bÌž9íè9¸±˜¡±!Çbeý ‹Œ'9ã@Rêý¦{Â7߆í­qǶ˜6¬|Ÿ<Ã’Cn‹¼"@¦Ì_d`P““ßšš˜š†îÞÁz†üsÝ6”�:ε[4é;õòé´ÚÒ{aja^å¼FËf͸ݱ÷B£qöÔ1\¹}‡O=@[Ã6äŸ8´Pj†|™lô±í˱XYU +ÃoïÃÅ`ï`ê+¾.7‰ý}™?ï�ºx€Yëâ-¾,ïÞ¼xð¨…N�ørò-¡§«‚ì¬Ld�õ%¹ÜÈQ Sq–B3]¥$H�ŸÈI@In:^ç¾FZü3(¨7ÜK™¯·76mÞ�{÷ wo'QW=àuNüƒýqÿá Xt²í«j%22’dõ1vâ ®HSi öÆL,-б�"$% à+##¼ˆ …<Å9µsì†ßwþ‰o¦S'sa•JË3{w¢ðÈn$}³œ“ße¤Ì-!»êHg¦È9µÆíèçáxêã ‰ø'È%öªš�9 )Ö#›�»â‹oHÂI�¬ºÂÁ±ú IŽ/é(05/=®²ÄL‘OÛ“dYH²¸oݹôzÜ » Šò¥€_ÍŽUTÓ%F« ZÉ6ᤒå5¹fÀú!›§·/¶nÙmá ‹Š°�d)KšËÁ¸ƒ ’’QD1:-:Yà6±M»tuÂŽß·�$–$›I£'Ií–5öZ?|ؘXwCzZ®^¾F±MsaOòUŸ-ÿ¢lQÑ:“Þ²'Æ©� okQQ/0y²€]&lK›£å‹æ7ÿSKw\o]�¹µm%�õúõÁŘòq% dX:tF’XbþßoÞ W77 <�®®X¸øSlÙô|=Ѻ…<¾ør%„«Ð¹™¯°ù·?ðè‘3r²Òàçë‰[ÿܢߟ"MT�Ĉaƒ±llw\¾q/^ÆáÚ…KÐ72†*~ iLž*n³`Ö4bm³˜Ì !?ZS?À:~ÊH,_²ª¦¢ï}¿Åݼ~-bŸºÃ±Ï`˜Ù£ˆÜsþìÔûת?JJ*åÖÄ4ß´q#]Sƒô�tv ÅY–SP‚]WÌÚ�„œ`�:q&4µ4( :è[zìì†8b‰ŽÙŸ&�ÄQòxÈ)µAdh0þ<ô7ÌéÿiáÒe•Váa%è—K¤ŒóÇÝpúì¨ÈËà!Iõ16êÙ3èééqÅ/\9Ë�¬¶$I×¹G7 :”“жåêþÌ?Zš¥÷=ÖþÍÛÿ 9%½ºwý`–ÍhmÞD‚ž…$(æì xbÛ–-Xöé²:�CÊÉ41â0§6QS å:5üŽ {P\nMŠY̓¬ïØÑ|ó¼x|Pˆ+¦Ö’ÿ:Ðz÷�;M”’ I`5ú¿7§øÚJK½'ܽýˆýèOªIŠødüh 8€ó¯*ÅjeÒñ¶oÏÌ|—_˜o@0)t`àÐ((¦ç\ún(ËÍ/ 5›Bšt]‚BŠóÊb¯'°yÇÕ½í­(;½Û—ÁÏ?ÿæ„pݯw¯·ê‚š’"FôëCï¦êÜûémR¯zèþ�BÒÈcð¸)`ã!áQQÂ$ÙéiФ ñ*TçÌÅÓPVQ¢u5 Ô n~>è ×6maKòÿ�æú¥Eíòöþ<ÀÞ»Ø$WešÜþ¡ ›Ô„&òöq{@¢„ìã>Eþìxðà=À{€÷@ãöX]o߃EçöhÖBò9Ï!Ùº-%½ïøg#MšÂÖÞ'ŠgÅDF…¡ ·�;¶õµÍ_}ŠÔÜ"=wCû:aÁÌ‘hBçdØ¡rŒJqÇHŠ‹EÁÑ]ôPí$ÚÝàFÂËp¸?À®½'aj¤ Y5c¬\õ™èµ]aÒ¡L¶†É·$�VcÅšj«¸‘\”&”Õ´B û¥Ë°ò³ßª­ó>w¦¤$R\àªA*Xk·m_©K d=vŒ|ib„Î�°hÞ<ØqËÆ 8º{fñæÎœAÀúï$±Û®ÛtÉFWeάuéÚ{&0:Ÿ$¦gbÂÄ‘øö›ѱ£i¥jžnž˜;yæ-™_?8»ºÓ1Œb¦wéZ¥ò|Fý<ð×Þ}˜GßcY £��Šo¼’¾£ñSfaê‚%$÷ë�ýû÷cÁœ¸íòïAIþkI·DŸ¾=‚<ŒvHƒUƒqßÿø=ͪ‚sg²bë6m� Åùý|å Dºß†yÏA8uæMé ú G'“T¹Yåk£l_ë³Î$‚…Æ~çê+¾{/«ð˜�qàëM2xV ðF¨¿7bÂ|1|Ú§ÐÐ3À¬Ñ½ñù›adbŽ�'´4«õ)0�5ãU:LMMdu¬±Þï$·øÓ2Òv5Ö¨_�ysgbڊðp!éóäX¶E÷Æ/k~¥«:êKyÀ€4¨2SiæŒ)[Ú .AldþñÊ€}§VضuæÌšKŠÕÚ\¡ú ‰KÇ6‰ŽÅV¼}}Hª¶”ñÏò¶þþÐzì à7Âò„æíC婽ÙòŠóqðøؘu‚¥YÝ$ù2]î!tLú½~]ãÿò‡ì#¾ï¼xðø/x £8òM¤ìT÷Ñ‹¥iGX˜v¨S› dÕÓÕD[J-„äi� *¿#U,×X¶½}ŸÒÄ-.±>ùúAÃ@0©[µyé³oCô·°¨R’¥àÒ…‹·ò<G�„—Ï#XÙÙ¢½’Z4•„‡—liÒY},<:š&8ËC¡‚’ˆ°-¦˜1{é\ì¤Éæ,–*³£gNÁ%(ãÆŽÇùG71ÅÑ–˜¢Žfº ÷h‚ð‚±b �Ÿ�9 ´ÁŒ_bÚ¸1ÜöÛ~Œ^2g¶Ÿ5ô&¶oƒº]›¢ø•Fë�ììl }#i醻—5Ú“ýw¬aïžÿaGò§Î{€÷ïÞ¼êê�ñ1�'É\%5 þd,ØökšAª¢×“kjë�k`@€ä 1ãêÚt•å7oÛZnߥ‹GaddCJÌ<ýƒ¹eBT0ÅÅ Æ2£/¹íº~lÞ¸ûO_‡Š‚Ö]û‘ê�t9€•u£˜Iz Ëõˆi´iÛ!¡ho`Œ'A!å@Ö1ÇaŧËáŒ"šÁΦ—hе?M�«Žø´9~’þ‹àîÍc¤Pª!(�J+Ë—l*�f2m„Eè÷¸‹L���y£X÷;ƒG‹ú.\ÉÎ/B‹f’ܦt“f˜óÉDá®z-ËNЪW|%Þ¼þu,]¹3h—¥yãfþëŽúˆ;Ð�k}ÜT�ÁUëÙ½Tå¨b;µXOž:G`ÞÈŠUÿ•í8 ÁÁ@V¡Ytzw Xó‹�Í{ ‡u'h·×ƒ…pyù&Ä�ŽJ#6kSÜ?uýú÷åº$nr™°¯Õ-7:Ž‘N]aeÒ‘b»ç’\¿4šHÕ[·nÁÉÉ©\õOF�Å'ort•ÆCW¹µhÿüÓaca ¶ümëFdP“_ýD{ç4ÈÚÙ²ò»YPX0x�Uô5|4+-øPÍwY݉ðrÁÕy‡ßÇ{€÷ï�É>nî\lÈéðüaß“^$@V’MeÆW–„¦Dq>”H^—¥ễgc££ ©­[]±rû\ÝïÂÕã.LŒúJÊjÜþ‹7Bƒ^ºœº3 Ý®¢:驉ˆ��DkÅêûìÿŸO[€5¿³'=Ýi¦°5bb ÚB‚bÅ9AŽdssR`l×CÔ~]Vàµl •Õ«*>b|X ZŠéo"É#À?»ˆU_¬Ä°áƒÐ\¶š7/�ƒõËjäãðµP óN˜Eq[).cÙxŒ™�)Vã?×D#â(áâ´²>%'ÅÐËc å” I¢¾ŒÂý['IºØúÆô‚©g e’™|ö¿¹£ÑŽ€Råê¿«ŠÇV&+KâLždZM-mÅíâò^Ò‹ò¹G`ni�$SÙ†d—"£_”‹ƒ:yâTb²–~çáA�øù³9è7j"‚‚ ¢"¸…±¶2Å�Áý9éYuŠñY�i�l¨�½ ê$ᤣ£Ë¥êêÔu_hðS|³j �h˜ÙËu=~}Ëß»LΕ“p2®VMôéïD2h$¥]z}j¨«cèÀ�\}÷Všâ/³¤E2Ú£‰EljQ TFFSÜ×ÍåT‰ewÿ\}ˆ Wn#%/œ~¬=è ÒÄL¸}íŒ:ZÁËÓƒ$¤+ÇL’¼  ù9¯`K1%ÓRi F: –}ƒ1?�Ï“0Œ_ü+>­£ñâ•+$LJêAÖb.î³ÆÊ5µòÝÛzFìv%å6Ä&oÜd“¦Ï&©³ŽbÖê@†@Ù·1°JJбk@zˆÝ¿oE7ºçTe»œÀnJCôªªä¢#ÐmÌD,]± 6ö²jbÅ—Ëé^�Îöâ_jéå·}3$PóËÏ_bä¨IbÛ¯ `[©BfГ¨¨V¾®+«´É®‡”“û9³’² Œ;Ò÷X³_+5ô/f˜X;Ö`eÝœ:e:°º’ìòŠK1vlåßP;’ckYÛñÇ>xxøbôèxpû"BžÂØÌ òr-8V¼ƒ‰!d$›Ã±[?®š,Ý#‹òJ�‡�þ�ØØXXÛØ–m’îOm‰ÙiŒ!C‡“µöîùf暘0i WN‹âqf§‘::íÚ•«[ÓW«XÌõª&qÔÔ~]÷Y¾Àúó޽PVl •: úÕµ�eË·¦ÿ�¶4a¤&cë�ó§`jWy¶~MuÃþŠ+ëÓ§‹—ŠÖi³—¡ˆâŒÍ™þ ž<õBxDZQ,r³ŽèÒ¥7ÎP¬â­Û~Ãú_6”XY; d�� …×c7ìØ¹ ;ׯCnJ0ß¿ŽîN¸?w'ÚÁ^üóèÖí›èÿ_SHÎxñüYТX×�ÝÔI¹£,Àº{ÿ~îF½MÈ‹•1YÙ3�8{àêÁe·.#Ÿ€Ø„Är ++TQuB\{|ïÞ�ßµYÿYð=¬¯¼Ã¢¡®Xù½(7¯€”Šë²²¾ü°áwôèRy“¸~†„<‡³ûSœ£ ƒÑ/ir™©Αäp:Mük«_»gÏ{÷!))™Þ±)æ§ø ­âŽÝòN�8†S'Ž# &I)i05Ô¯s·šPLÝ‚¢BøÞðà=Ð< ­­–´(ý[6céâÿ4ÀZPBRxU�²Uñ¥$„¹¢�âþÉ´Tª¢ÄûÉf«Çƒ«Ð'vÖû2®Ö`öKN®ö3pk° Ûe@«tA î\»†îÃÇãу{¸ø“„k&òÓãaÕcÍLUã’°NuKt1æ*Wóc^pEEË7 gÅúŒÁ*`Ít¹‹ ’cÖ$)‰^˜J ÒSÀbÇaqÜ„m³2Œ½*XÙ¶Òø©` V‹µ¢/]†6�ì¹leUmz‰ÖFZz ^¾Œ¢W¿&�–iJl¦<úm‹—He+Kok‹çÏF@° ôõ |´F<ŽÓgÏÀÚªüu™œ”HçwíäZr>N9yÍ´õÊ×ê·OÓÞ�Èÿu5¨½,bý–àµ|6åêjh ÎÁ°®ïÛ�Aãѧì<ÐʬU¬oë VŸ¬k¿Û€Ñã†Õ¹¹@{}îû2˜Ëžw�ûÀ*0€œYçÎ]ªìy\Lúté†9 re45Û@SS·nÞÄbìeää!<*ïÛ‡n½‡@E­-‰JxDqwuttpÿê%.møóïrk*ï¯s²‰aÞRtl---b¬.Cï^ɘ{Æ ¥ØÒÖØôû/˜5c>äj?5ú­$§¥¡›]ùßwCœÞáݰ±+¨ÕÀ&¯êXŒÁÚØÖ]ûƒ¥¡û"‚®û´W¯(¦WåA]vŽ�®ÿ@•1`HF˜Ynòsœß·•˜Ú͈ÝÚ¿nú#:¡÷€Ü~b±²kW‹¤ñÊÚÃG�ðèáCÌ�3n>~Ä–h‡3÷üÐÓF OcèðéФÉ*U¬¬-7ŠÉúüé}üúã� óDGãRF9Ûφ³) zÊrþë?j&P¼33FIYn±ûB1�ÕR’¹à²e„ë dÕ¥‰eAV z–(Ëb–å—¼xðà=ðazàìõ+\Ç )¸Ë³—‰0ÔTÅ…®Òÿ ¬ xÏ—’’¬7ÀÊOJIEG£Ú�…ΞA8ùZ·–G�vP£I›–¶VµXÙñLL:гƒ2.Ÿ=Iï‡*�h=~ß…žÛs £R~Rª 1K�zõF/»z¬ìüÓd2‡.x•"…³»~ÀÚµk@!Š˜ê’y#üsã!²^ea…žÉÍMƒ¾ž$)fÃå?:3'ÈsœÙïÛ¶ÀÝÝç¶?¶&1›W”9iÁà’ðüž…RŒiCáæ[-?_0“ç,@'b|¬fieƒù aÞì¸E î’™›;z\¥Ó½ÿà!\oÝÀØÉ£ðºP]št4�›‡7Öþ¼ž$¯uibM:Nù«RÝê2úõ£vÚhgÓ §w®Ã¦?þäÀÕcg�#08?­.�ÔóÛo[¹¦–/ÿ”[F…û#(ØnøæË�•ÀV&¦èãïM� ÂW:`yÅ…hJŠÂØh‹å°žÒÿOÓºK?Vl«ºíÇô]u¦ÁqÞxðà=À{ qzà§¿aTÿÁè _úÃ@Vãöô_iÀuÚÙë~Ä\¬hB,ÇÐðp í×·N'¿|ù L›6�­N•?�ÂáI)`Óœô(BC˜‹—7׌£µ6Ó³‹1©Õ ¢0B¡ÁAøî·-ÐQPC[8ŠC‡Ž"&È?nØ”S° ű¯�ýC²ÌçnÜÃ�߯æª+5egÕð6kùJ,˜6…&z•^nÞ÷qèÔ~Œ>—bÂæ¡_7'Œmƒ~ø ¦&Ö ÆWî¹lΤé¸ùèÚëS2â:ø¿ß~‚\³ôwK¬[.ÏÓdzςŸ³_ßß"ïÞ êžÉÚ îäã=À{€÷ï�·õc°6oR7€•Sª™,—Þöøÿ…úûöíÁ~J~«Óý}ÝWÄÒ|ÉÉ ·hÙJÔÖ�[W!•›ŠÄøx¼LÉÆSZæ`ü„qHHÉ@'ëRð/99 ²ÄŒ´µèC€ Å¿ÓÈìAO&Á[–Y*<ˆ`eàfÝä<‹á_R„Žã§ˆØz[ösM2¦¬ð8 8ÕXñ-'EÌä�…ùŒÅÊ$øVàú £�a,W–ô¶ìE»öæ\ö1)1­Z)PlÛ~(ëŸä„`äd'C¶eù™ÂÂzõY†ŽîÉ1}óVíÎ��TÎ/�Ož`½Ðª�Ô­§»'²–N‚ó9šM]LgAÆü™ýB†�;_¡,2Û—Eìßôà nÃ’ƒ}V~DzE·é°z£?ûF$ß\Ö”ÞÄdæyz¸ãÊ• °¶®`N±ZÓ’‰ñZ*i-l«6Ëàà$'SœCŠ—XWcŒeg—óù„]â¬�Àƒ&õ×^Cæ�ܽ O¼ƒI×Çî<E3©»À‰d¼Ä™aGkhÈZÑFŽM¿eu˜w2‡ ùð™¯;¬»á»Ÿ~¢ *_|ñ9ÔÞijÖeJ¯3 ”·�•}·r,VVæÌ™³”Îaô˜Q*áò•KH|ù7mǤɓ¸f”uLÐT¦…°I̪ؑ&G“f‡ŒÆfìÑýLZªwzîã¯Îž:‰ƒÞîþ.ôWß!ÑH3îï\¿„œ±cûV$ÅÅcÓ·ËС“%MQý`—óçÍ%éhK®ÿíˆqjMÀiE{ñ<œS8 òòBS%I„†=Ajj6L:šâóoEë–ÍHº°�$ÞB)«É Wï—9KVr±^5ÔÛÀÌPM_G"§H†Ø"ļÈËGGŠOfÖÁjÄòP-+-HT¦´ÂÌZ“$½> 4÷è:¤b—¹máÐâøé£`A «ú¿ô}IÑ=²"‹µl‡%‰ÁÊRY+¡{«Dß[ú�„#1¾µkø~Êöƒ_ç=À{€÷ï�÷ç�î¤ ¡R�ÅÈV!‹5†dzµUÕ«XÏ]¹OÒ¾÷Ñ­³E¥N§�êǽ‡÷ѺUKÄ&'C½ìÿk¥ÒÀ–¿vÕÀÂ5ÿû mHÖþc¶æ-d¡HÉÅë)^Ä%AGCEtº1qX¿ï8ú8”W̳rüòDÇÅ¡ �¬�;;À@W›+uò´!õ™•‹f#£  ._ „ZkÄŇcËö¿0kÒ !’ˆ w\`aÜ^LËå³öþ}˜ËPW¼+¶×ÓÅž=çé�\zª4ÁK0®TDï¼ì¹ÙÇˌĂ…³¹zÙÅhVW 5ª©É)iÖE_Í!Yb èõ‡ƒÚ·7„ϳ` ;3§,ÀÀ~ùc]w}„á¤ôsíêtïìˆgQOèºnƒ¤ät|õó�ØòÝOúC¦Æ¥Ï¡Ô¦-MtdKf»ýÅtAHL°Íeò¼x4 4ΡFá¾¼xðà=À{àãôÀŒ³ÀRuæâîK2œª+}#3è›Áƒ˜b[6ü,*ëáî ?¿HK7G[…|’ÄI@<�T7/ÝÄÃ;wDåÀêìò€ÛþóïMÈ*ÜÉÀLëØBáf¹%…;:z:@IDATV—¸kBf¢BLÇ~-Ë€eÌMfŒ±)”fmž¹ ÃÓ·ÐúnP9Æ,…’”ö�-(\Ñ dg \mH€•�WUl_áñWù…pë'OàÊJȈòØy2k:mšXXq aáN¶�Ïðy�0[´dß“óÊ_9ÿøø�¥ b_mÙ¶®n¢rleÿ¾¿qíúU\¾|©\~UáÁ`©¶–„ –*ZdxÅ쉪˜]n›]ìÜÙùUu-² y$�[˜[®ncÙ`àj}Vv–ê²ÈZŸó±¥AfÿÜ}€Dig(˜¥íïé*jîä¾CxLû…&Õ¬9ôh`Â?À‡KÂ|¶üôÓ%8zì—ÕÁ¸úõî…ü<ò{AvÙbÜúËØÒï–­«;pOŸq§è‹?vìÁQb“ÏY¸ì­NÙÛÓ–‚ï‹5tlÿnú”À¢¥Ÿ£™bF¹»ãëõ¿£#�v�¾^áT~Ðí‹Å³áO3ï?&{ñ< A~^XúíwÐ×°Æ��ã0nÌxîím,ðÙ²eèâ` µ–$\ž)™–&PÚ(ëKsLŸ:C”ÕwìR,_ºV66¤úà‡czsûL h-k�ìÁRMæææ‚7vÁÅ÷Žœ½Œß7øW™¬5õWÜþ’¢<$Ó`zCÚË'®<“µ!Ê·Å{€÷ÀÚ~QéÈÊÿ¾ö.ÃÖ3žU¬ì˜#÷à’¸ã䣭º*é]eÏéS\WN˜ç@ϲ,ý¬9�¤$¥G²®Û}¦Ü)·ÓRÇœÑâ's•+XfcÕÜÙ`Ih'Ï�æVC£B!£¤ï \»ñˆ›¨jnþö®,Š«‹éÒéŠé½c¯Ñhbï½w�‰&ù“˜˜f4±÷Þ{ïÝÄ Ò›€"X@AšˆØÐÿ¾YvÙ…–¦€sùÞΛ×çì²;óÎ-Ž;b¼Äî=ÍŒô…]K<:9Û©ÿ~ö8Y6Â;r=Ìäò�ë¸æë‹wt…®äÍbÓf …Aòú)Ӿ㲸ôï AFÆWq Vg;WŠ7Ü<.)×U‚+í‘Ìÿuú÷*qx·ž8±gnÇáÀÉuhÒÈjª°hÚ .áÚY6³ÁüµËqûn,ö;@M¢pàè´ëì„ààz¶¾‰UVŠÆä3<<ÕÞ]põy/ø•ðððð”�„3`à=�nØ›•s„šÑmÏÞ]°µµ‡])îWþé{²C¥¼ÂHV&ÞîEµ€¥�yöô\ºä‡†�µpî(Y*’f=C]ÄE…ãQJÜÝÝ‘ð¦¦ïks <¤˜%LÛyaÇÆ 6v\‘a#Ïí„ö­8.þ)#Võg|ÍÖŸi'KÁÓ”'HŸ$ ÙXBRQØWHÀ2··Œ@-‰T¶öeÇ’Ú‹·«Š<#xÅÝ*G†ŠÏÍ®� ³æŽD(³²WÍm ßásκ˜«{Ù¿o3År¢Ï•ÀâKXåçëƒå‹a×�Cøá»YÈ“'5TéA0f¦æ7v ,È2,4$Æ��“«;ô¨þ÷¿“Âq*ãxüÄqn˜/¿(9þê• b¯M§Ö•1-?F)ÀÅÍ­”VÕ;woâN†.Y„5úñÛ¯0hèHØÚ ¾«žegâQr"¬š; X s÷bbðÕÔøuÁ_pt*øžÞµc'Ü\Ñœ,,ÅåóV´Ù³|3ì�d{ÑêLÿ«+V.CrÜm 9v¤€!MÑzêÐô0 –¶Ájï$pá,­}m(‹�¿Ï]†y“†ä²:‚\Ýí@ §÷ÈÎÖFZž|‚ppÛZ®Mp°7¶€v~,9áõ¯]·Ìж*d0¹4îݯ7¹�÷ÆJ²èBqQí­š#ÊgôLÉÙTú{Yk‘eÌU›¶Â�>ÇnÎŽ´y¸þAضv Ò³r¡£É¶~Ë/÷î¥#á^Úµ7/ÿ |O�jƒÀrº×ñÇÎþFTl,�9…9Ó¿âÖ—‡FMŠî ÜŠŠÃO¿®ÂÑ}Ï7IñÏÓµö*ã•÷ {ó6�É÷xõæ-TT”9÷¶å‹õ‹¤Ð!ŽPè�æ`…@ÐÓR'wÐVdÅz ÿùŸÁ½È¼"e>ò_�;a·¸©Ü$ïcË:ÿ[ §ñöík|ýË<|˜€Ì¬L,›7�ÈPÁþÈ;ºB&òô7wÉzlÙs‰´–ŠHJf:‚î>@WÁ3ÈòånïMu nØ�;·Ã™¼ü4·¶Ã¹“Ûñ…b¢®Z øÌÎYø'‘7(5MM"¡ë ß—½±qã8Sx‹·ñqóÞõhÓºœl�aÙ¸üû=l.^xx*Þ]påaÉ�Ä#À#À#À#P‰œ;}‚bÊY ìN,¹˜M‡�nýbGWÖ5/3ÁzÃ? +Á]Ü{Z•\±+«ÜŠ={wÁjýB.X ÏÒ€ê+B°²ñL� ¸TxìâΛ™›ãâÅËäÎs?þ7s,Þáøá㨛�¼“GNv¦M› GÔQ¨Ë £¬¦�˜˜»8ê:wëßóGñðîm˜6µäê_ådâÉ”1œu)sW«Ô¨‰(Nhqë(®üò²¿P÷ðn®š¹ý}gѯr³¡¬Z�+c®a™Û_æö–‘”%YȲ:æ:V˜êyµFÚþ­Ü8es]Ìu©ð ›ó‘¥–¿-¦±ÞIXÜ78»–X_ášÙ¹¶¹[­«(µ[$ÅÔm@î¹XSSôé?€bß|yrõýçŸÿ U«öˆŠ¸…{¤}›’”„6;!þ^$<¢ò ´ïÒ•%­ßÄÇ”5@±=;÷ì‡)ãFs],,,ÀRibÆ\HQ’E† +;GèÕ×Áõ×аa#D�âG�’ÉU“@Ëz=´·jU`a-˸ŸR#ccÑåÛ·‡ûÒÔ-á{ÌÞÎ,É":uA}QS%%e¼yù õ4´Deµ1“™–ËfMáÕFRQ`ãÚعm3¹¯U­QaÁô?÷e‰ëöÍë°mÙoPRT€™¹ �ïÙJ"YGŒ™€÷´ÑfD®t…²sËz.«OîË�˲´ÔÇhÙ^ ÃÊj«øù 7÷%bï=„p)føcr�¿lí.¸·è‹±¦�r’ Μ8†ž=ʆ†¦´I©Z’�›7"™\é¹Hù.|–‡ìÇqP­_ð¿Sd€b ¢¢Ñš¾�Ú´êB{ÚèÔÚ úcí†ïMœ?ð+œ½¾¤�;Éïñb†ú Ť�sôô9¸ÁjLî“ÝÉ�¼±¡1Œé3¨¢,¸_.$…~¤ßR¼6å2„•ÈÌÌK�)Ÿ?òððÔd2ɪ4úi. É…}M•»Ù¹Èxý:J’ßÿâ×ãá`Ϲk5Ñ×Gjz:÷,n�‹þøÁÝÈÌHÇ»¼÷öóCzFeÒ@Oûu-º¶&ï012‘(ÿÔOrr_#"*ãg.Aγú].Û3[ ½'ñqIH!Ek}}Â^m[µá`ÍLÍÄÔ #�Dž®:·wEÓ&z8pø:µë€˜Ø8lÞsÇ}¯“«àæÐ#·Âåyù:P pÉORñÏÜ95x0&OG÷«Y¶ç56¥§æ<¢Xë ­— ‘¯V03©Øý«š² ÌóC±u75m eE¥"—Àör,É#Xy¨(ý_½øïY.¼ƒ#)6¯ß¶NΖèж óï�Vn]BÏëJHHŠ'wÌ\‹LÂðð|pä?øŒü„<<<<<…¸I›–, %.6qq1Ü)#YK“´—ê¥5‘¨gk�‘“$ÊjÂɼ?æ—jÅÊ®£¢«,X´oå�ë—/!&"PÔüá£gøñÇß±xþ&\õ‹¡8$£ˆ_U£e ÷À0hÐÁ÷ã^„/´õM¹äà쌅«×pcxuî “|‚•Ô¹ø/WþôI dž=÷¹Â�—å…Yg²x¥­ÚvâÜþ2×¿Ì lVZ—„c1‹NÎÂ5¿^X^Ò‘Y�r±PýJqK¯pÖ¤%µ¯ªº÷°iÝüöÓT™Öò®£ÿ€Ñ"+ÖTŠOXX¬­ìs+RT<÷÷yØsì$ú ¸IRR¬CÛ±jÍzŒ3^ÔNÖÌ1Š!û÷_¿H4wsqÂÖ5+$ÊJ:y’t, eÕŸW8þ6ÚµkÇùÜ €�™@#¸Oßáðñõ§¸žøá·¿„î_våˆÖ=G�cÆì±iûŒ7QQ·…CV»c2Å/=½`žh]§÷îÀò9³Dç:cak K›ÊÕº~NÖ«Á‘á\b×ä I�?ô¥}Ðù7oŽvÝ»KÌù 1-[´Â£§¯iÓ1“«ÛI.Ñ~ýíwÜI|Œ ÇÔ‘ýñ8á.6mX‡`Š/*”—´1kéþþ½xSG÷c}ÆÝÝ=±aÙb¬§TX&M‡ Ö’ëðÂU5îü&YŸ6¶)Ùלˆíú:Úø¼c+x9˜“ËÁP\;ß~=Çá®9(0Šò i “•&“µôÛçîá…í»÷rçS)>ØôI… Ãfä ¢¨%×0ÿ%42JüT”�Œ Ä/s& gW/Q™0£ÐpXµ³beÖ«[W-á¬X£î& -ýG´ ×ìç–˜hʽƒæû7Â*™Ž�ëðV¬2!Å7âਠh)3§¯5W´ë‚¥ÒÄÃÞžkbM$j±8ôŽn-ñ€bˆÊ"‰añ¼%k>PO³²pì†w¦¡¦ O"ö÷p…•<ËÍÁê]‡1ká¢RaÍÉÍEÎË\DܺË%Ö¡¹» fÌûGý|ѳïçx�ô©/r¡AJ’v֮Р޼Ż�Eo ÿ¬"‚”:é]‘½mÉ2vÈQƒ#‡Ž£[÷ÏaF+³`U³Ñm›oÖÊÖ þt?XV K% ³beI¹Q»ò‚ÄÚŸ'Eï!#q]CÃI™LCú…•…%:µï�E[– þÑÑÐ]ÚtEÞKEèª6•ñ���oÉúñß~<<�Ð@ÚTϷبèRÖnÚˆµ›6áËnÝJêÕ«¤YWúÃC‰ƒÔ¢Ê‡�’àçç�<Š­Ç#Gr3èN.î˜8X˜—hÅÊÚ\¤õÔ¡¡!ÙÊ,X¿�2Žu­°ÈUx„š9À�¸phªÕEú㤪=}Cz`ÑÇœ™3ñúÙK|ÖÉÚõÞ¢OßÎ8í…0Ò$~ó*­‰He¬¯ß¾Ã«—/¡LŸâ¢©£+:e.p_S,W&̺ÔléV./ë‹Ð­/CÑ´!tŒYmjÖ7KBaÖœõÅê…åâGFª²viOÖÕ ™ëVrëcã ³jZ†Š÷­Ê¼¦¦–È’ÏšÜUµä�vxfrâ“ÓÈ ë iÕê#žâÆøÃó¬ÉMõŠâÓÄÄ„>kÏä¤Gñ¥©YVä&©¬bie]½H¾sú -DÝ��d·ÈŠ¿ˆ{wÑÄÒ ÓæèžíÐÐÖ…J=M´mÛ¦&ÆðötãŽú÷‚©©1÷ðFJ up�\"3KÖ-[`ô°Apv°Ã±cGéº`øð¢5U—LêÓ D‡COW†Çôvh@×Û¸‰9ŒèâcHa VúnxôèŒé³"M¶ y¿½ÿÒ$==™ÜÚþ�÷ÚÙÆDø -YûôêEîÓJëVëÊÒž$áì‘Ýèöå—pss!׵ϰ’ˆÕ&¶xøàékÁºqS\¼â‡½û÷á'Š/*7wréìíú†äê;úÆ ñç_âYdþJnÀ�ý{.�• û.”Ÿ8j÷îÀî«ÿáôñÃô=`$²~åÕÀc#Чêv,NTTTÈ*Uð»eLÚÝÉ5yÂãعs?ž�[ú¤Ç)ôû×_|ÙCúy™øcîl²¬Hã>ÓränÞü¿à@îëBB8WpÌ£¸89rê(ŽŸ» s3ì?²®NEMmˆ(î?`¹Ðv¦ß†‚ïdž¦&háå)jW3'ÏþK$ëSX4+Ø8ÏÆò0ѦC‘«p˜“'�!�t ôt ž7…uŸúQUYºš`G&ÏÞÒ>Œ½ ¼\]p'æV­=C„Ÿ=®sõb÷\Aþ‹b]"ÉëiÀÄ Jò0$ bwgwtnÓÑw"±xñ<²Zý ÷é~iƬÙèܶ5ÖmÞ 3zžìܺ%lÌͱ~Ëa܉�¤{£fÐ"—¹Å Û‡)ë^Œ––&XzG^1ÞÓŸœœ¾mkpâN÷Ï,•UN‘’âÉ‹çÐ�<ìÈ"ò4oܽ{P'̵ɋ‡9=—Óý牳— ­Y®Ž%‚­{Ïa )þZ5k.ÖÓµ:ž±±a8qr)XvÕñ��‡€l¿Zo}üÌ<<<UŠ#XgŒUisL3W­*u¼W¯_àYöÓRÛ}* œÕ¢0mt"/s©¬×Ý»çgtSZà.²¬ýKjÿšÔ#YúTåÖÍsxST+SAQvnpmÙVö‚�.d�¢ªC.:ÍŒ‘KñB˜hhX\ÍâÅ‹ÈÔ´u`æìFVpd9H‰ÉƒGið¤Íû># �‹ÁûËÏsÈÔ7È:”‰ Åw?q ——öDVu«W¯Æ½„²¦;'­ ´Õà÷ß©u%ÞôX\Û»uFÇ“¸¦Wý�ž§ -ÃFXK„¹�Ï ®\�bmß¾[b¸)S'bYì–…‹b,Åœ�3ççÂUÕæœ‘«N={që±­›`C�.^-ªÍúüIÁ†¥Â’”“‹˜Œg\q]Úð‰ŠŠ,Ü„;ö¹ÃÆhåÙcú+ÒæÚÀ©­Èâ¦:XâÒ‰\jba�?VlƨñHµÿ=&íO1Rݱ`áØ�Ûµw*zhäè‰3/sØâ¸>t€; £û"g7o|3~Å‘²ÆØñ±f뮎}/ ­÷Ù÷*ûŽVŸ7›sýÍâ·Vg‰!×å“&î÷ÂC1Á¥­×³k_O‡ý»Ö w¯/`gc%mØ‚²:Zsô0ÆŽ›Œmä.4ØKþùÎNNX»j-ÆŒ¥÷®‰OŒ!WÅg±ä·9hJ±¸&Žž/µ#Y«J®ßô�6)VU¶ŒÜ_t) ŒÙøÓ¦ŒÇÎ-kh'µ¬[©•½:~<�ªFÀ¨A=ìÞ·Áa!2M¥§­� {OãùóW05h{GG Y°¿�?—màÆJ¼‹»qwd·*é�{âë>¾U9E¹ÆÖ#4Uê€Âý<§X¦ÏaoÓæ��žž‚óÿž,ulâgñ†b¢663À•ˆ;0§pG‰ïÁçzZx¶Â“ÔT\ºx 9~�‰­�—X>þþ}DQø +ëF¥Z©–å®à÷ùKu;†MÁÉû÷yt«Ìla�k÷Á­‹V¬‚•cùî�Æ ‰µ –pãÉò�S/B‰Ü7¨«/wo"Œåñ:;×.^ ±ô�)p´m&:Ϥ={ƒØG¹âEù¦\Ë ��ÀC@î=É›�ŸˆG€G€G "ÀˆÖ-ëVcÙ†-ÕpuÕwI†nmqhíRx»8Vx‘ïrC^­jHÒŠ.NpëM®k+:P ퟕö˜[¹f}¤<¸Íå˜ZŠ®&2<„â¯*àôÁ=è7ln^¿Œ »Ž¡¡–2²_ ½½%‘© ðì7 š’ÎÀ¤1b}ÎÀÊë3èš<0ìÚ½ vvö‡Q`áøìY&>ºk+�+š0?åzÆæ\*\WçAF R‡eDÃo~áŽ,®é§"sÿú‡ˆ ´ônI®Š¿G³¦†HÏz� ÿù‰× ÚÈB0¹“ÖohƒÅK–¢>Y°–$~dÑ8lØ|÷-‘b Ê3rD‘æ÷â¢p/.šâKö)RW\#Xƒ„;ÄÊÄx”pßÿú~ùå(’[2ooñ& üÈJµ4a$2o/ïÒšV«ú;äBØ‚È×ê.ٯߠ^ .ã’Ä#Ø÷",�; )¹qýeÓæ­ÐRSAÖÝhŒþa®‚}VãÅ{yø‘²‹½½@û}ò´Ùä^{ ÂÈ�íòº!”èè(ì 8®½{÷…+¹f(Øü³sX¯ =ÉUa_vÞüÐÂÓj{ôõ½�%Kbÿþ#`$kxH8†Ž&±Þ™SFÃÁÉ #Ç 1$*¥œ,ù{.̉ØîÞ£¿”Ú�S–†�\å `DkKÏâ¿û‚CÁÒØ‘«|-ü<<<<µ�)³¦c̰Q¤H&ý9pð×ã§É‘ùü9,ÌLpÕ?½:¯@ȈV+ó&@BW°å±V¬,„ÁÚÒ[pUYcVÅ8 ÷#ëYl÷Ø�Ÿ&!áI"ÅKu%—·u9«`ò|[D˜Š¤¥ûäQ'ƒ\ü+“¥ñãð0Ì_¸ ¿ÿ2ƒ¼¤\¢çCSlÚs g÷ ãY”•”ðž¬`ÉcÅýûHñ¾!G²æ˜™£¬É#F_òˆ!á}-;¿ôõ|´ð&’S¡.œ\]¡"÷Ýç¦×ÅÛÓCØW®ûá·ËIÁq—¨¬23+Ö͇ICmôê*]ñ.6>§/ìÁŒ ó$¦½Ÿ‹½'WàÛq˹ò©3§ÃÉÁ‘ž©GK´ãOxxª)_‡U3?*���@uD`Á?áö�Ûptu«ŽËû kz’ýª\óTÁÊ&¯®+[[�üÄòŸ¢0rõEV2²3ãûïĵ Ç%`ˆ¢xtc‡ ‚¹µ-´tõñôÉStmï‰Wd!èlÑ”h6U¼1tE›öDýÄ Ö‹WVŽC¬¬¡†¹µ,D°ž;w ,1IMŠå޲¾d=OKÅ {ÐbVZÒ„Yn‰ G*PìV—¤·¹ÀF®fV’Ûqñ¹ªs¾_¯/é=²€¡¾fΜJn�â‘M.ºúôë�0"W/‘ púJIŠÃöÍëD—²êÇ©ˆ»UT³ÖƒbŸÆÄÄáùË<ØZ[‹Ú‹g7³FBÊ+„ä¡âuÅå=Ý]9‚uÿ¶­x��À5313…GÛøï¿ÿ87ÁB‚•U2rõ-sIIr]Š…%W‘ÿÂÈU!ÁzîÌIQ,iñ6Õ%ÿ‚Üs eáßóÀˆÖê.%¬ÃúvÑ“ÿ¡[ÿñÜeìØ²�“ªû%UêúXLÕM7Aîík€Òwßÿ YJ~Ö½~þõ7è40Clü0kñ7´&N°†R ÖÁhdb*êË2Œ\e©Àzõ®žY¯2ë}¡‚‰ºw‰~ÕõÄ‹¬·ÁÊÄÞÉ¡ÁÊÊGŒ™Ç|W½ì¼4q"k™g©÷¹¸¬ÒÚÎüºl›ZŽn�6ŒÔ²%«do+u€rÎ�;,1)‰`åTàeò船}»#ð]yxxxʃ@ä�h°$.ᑊŠâåU•_µpy±+›sü€.HJ%×òD°Ö×ÒÀs²°œýÓ_Å.çà�c8täWï„UkÖÛöCTTg‚•ì;±lù2 2õ t k¦ÏA2é ád«æÈz“Ë•‰q‘°1‚•É£” ü{ü&ßy„7*ZxM®šãb ®¨Œ„ÄX›7G»ÏGA[C“6]9‚õÕÛ·hB«õ/L°¦[^'XÙIYy¨§¯Ÿ%?ã׬³ Ÿow7ÈÑEå‰Mâsó&X—6-=ðówÓÅ‹*5?mÂ÷pwê$1f¹fI(æMl…Yѱ¡¡9vŸ&:_¹d9O°ŠÐà3<U�“µê1ægàà¨Æ¤¥=Eß~Hc­v�¬ñwï"�š6m*ê9¯ß"#÷ ´Uej/ÞÈÔÈ@üTj>$:žâphK­«�…Ì9‹ëQÛä9¬õ�ÌéHɉwq…\ÄzzxáÆå3°±w„Wë0nÒ ‘þW¡T·¿ 59æ(¨.|bPì¹|Þ¥›ÛA]Cªš:Dñ‰��‘•�&�Œ‹@Æ6öÓöo%w”äž²oG<÷ù�‹™ªC1[Y2³ô„šFý"ýJ*P �[– #QÓöïÄë÷¸9ÄëÙ:žû^)¶pÜÕ ±Ø·e¼Û}.Þ½Öæ£¢o‘K£w°±�¡õõô‘�•†ÄÇIøjÚ Ú|w…‘}GPìÝ)Ó¾¡X¦ûÑ�¾k™d¤$#:.ž”[¤»]¾r5ÅEt£¸ˆE?¬?#X ô¹ÄÎe•ïÉÚÖÖÞ�‹©ZZŸ^äÖ¸Yh�š2 Št�kW,F¯ÞýJìv7.:õëÓç³lŸË­¤JF°>¤øTõµÈ�7É—=zCWW¯’Fÿ8ü¤�š—¯ó(ö¨3a®ƒ÷ïž“«¸,œ?|;V.Dç^‚ÏÛÇY݇™599úº2j4ƒcÉ«@]xµ*°Œ¸vã&ÎÞ…kW¯ãÁ“ $%%¡ËgŸ¡s‡Öps÷ 7û&H¡MÊ”´tü0g.ŒèœÉ‚æ“‹áp=°É‹ÿ}ÿ±:F®¾~�ÈYï›-ÝÌ)˜°òÚ †ÆäzZú÷Ž´ëS¤ß»ú.¼zÃö¥ÕÉäÝEÔô1}::º‰ÎKÊÄßBÆÓd4µô�¾„Û‘ÁhÔX`…,ì{õßS¸Œ Wn¢_ÏîÂb\»q v.¶hÛέ(ft=uÉxsQ1áHM{½úúhÿ™ )“¸ÒgÇHÔ_Ö ûî¾qõŽ=Ž~}û”ØÍ�Üè;; âË–ØP¬2(4'Ï^ÀÀÐܲÀk†X>Ë#À#À#À#P…\&eª+>×ÐÖ»µh–…«ÿáâŽ;PÜû�-;·íÀ"½Ô‰˜ótM¶VèܾU±KÓÓ­OqX)éÕçâmöêñ^Óý}½ªqt^±]?©Š×Dpf¿ÈE»V­abb‚¦�ACQ×)ôËžƒÇðüÙ3΂ÕÈÈ,¦h�Rö=ÞädâÈù ¸ŽÑâÜÙ³˜0f:~ÖŽb¢]:¶¢Ø¢ôL§‡ºDnÊÓÓ¥•×ÉWvÿÅ«Wxö"šjjâÅåÎg[·BƹʹjÊc»´ƒÍ�wšž³ eŠöL¼==¹$8+x5k(¸g.(©¼œ-…é@qk�Ÿ/ù�Ç%¿ èèÙõµõaÞTºÇ%ÍzÕï9´ò�áGâ¨Þðî‚«÷ûïŽG€G€G L0’•IIÖ2 ^ÆÆŒ`�öÇ:\ßµ Œ=kfsF°²$/å¡@–+zþâ×L]UU–æ¥ ‹YÙ§oOÚŒŸû†0mØóæüz é󗡦�‡·™©x–™‹†Fšx]W jš´qœ‚Õ›¶²Ç&™×-Í=/³žªhlUñ0•¸âÒœ,T¥¹üem™H«ã*>±—³çÏÃÈЀ¬�íEW䇀@?¤Ò&üÏÿ,EhÅä ÆÈÑãDmX&ŒâHn£¨‹7l—(¯ê“ëׯ¡eËâ7`Ä牊K£ûö¦x¡7àç‹)ÓgŠ7áó �§)÷pýÒ&ôô‡Ä oþm=¨«×ÿ§÷bÐØï$êËzÂþç«ûÿ;ûl:¿ü4AWÿÃäï~E“æ%«MÛ÷"4üF'{Im÷?Žde˜„‡‡#,,Œ\u 6—X™¸ 5v~»Ž¾ÜwŠe«=&Ü"?ÂK0)¸1q#YË»Œ½:á—ߢAƒÐm`(1ÌŽÍKѺ]7"_Í%ÊÙÉ¢eË ª–wWg¸8ö�¨>yÌ›aÎ×ÒïÉì;wÁ&Š ëæ`�ù‹–pn [RœíòÊ»÷´}MIA^½LC0’•¥ñ#‡–©ߘG€G€G€G ö �—)B¢‹�;{ ç®…£^nÞªÕâß.×ûÒï¤K­TŒ. b�Éú†’š²2WÚ‰”2¿ûéНZ¯ÒŸâØu_h‘G"µ‡è%Ö³äl@D$Üìl0ýûß0{ú©zèäE$ÄF`ö7ߔܹ k…ÞªŒö^âfQ¯[¼³O}=R0; ïÞU¸"ÁÐô¬ìVŒ2r•OÎOÀ#À#PnŠÿ)÷�|G��…#W«ÁÊ®ßɪ G°†FŃ¥Ú.Ì‚µ,kî›·�<'­Q–ª³0—ªÉI©˜6i ’Ä`ÞÏ?sZÁfºuáj¬‚ˆËA8qê2òè‰ØÀ¤ "â3Ÿ’Ž–m»–‰`šU�Eò¢_KœB|Œl)‰pyñ<�+ñnX*�¬Ý² �¡¡åéúAû¤e¤á­Ük ‚•-ÀÕÅ“&L‡5Y73qtr)B°²rzhüÐ+›WV‚•µ5hF›½{³,Ü=<9‚õÄÑC$rŠ—�‹€nƒÆhÙa ·ˆ 1÷]¹ê&Hz­„”äDè•ÃBOüªɘدcSöÿoSòì³É“N_|Á¬Ì%°‹‹ n…ãaØ¥"+kˬX…raÿ hÕÍžŠŽL©%í›ßà÷¿¥¸Ú±/÷ýWÒw ¨ãGÎÄÆÆáôé³lÁ¤Lr7öü|.U ÁÊÎVk[‡"+«6ú+©+«SPTÀ5ßÄ"+«Û¾zG±ë‘ó'±oÍrŽ`emË"~A:ñeéRb[G{ž`-!¾’G€G€G ö#�Gæ„,1Ù°a )É—Ÿµ@·n0óì@’º#:6�«/í%æñS°Ä„Åcõ÷ Åè<$å¼áRiý?•ú7xöë÷"‚544?ÿøyHkˆ&ä2øiz&”450tH¿2¬ ¿"¶ÿýï Æ�H dzH}ñ†BZtD@ôì<&yÏ6޼ W:ìaјõ?ɦ,äOîœEˆŽ!WÅÊà!·¢°yï‰5|‚õò•+Üœ•E°…ùK\Â#À#Pµð$kÕâË�Î#À#PƒHL|PƒV[½—š“��Ôä»Ü"C£îÉz¯ÒuçXª©’DnrʼnVraÄRu”€›>E–Õcà4±q§˜%Š0lØ FÍÌ!§¬EUu¤Èi‘›�×Ðxñ †ïßàÐác‹,2Fq¡I.)…1ÿX;faZ™V¬Ü˜ô`Å⪊'!‰P’…¬‰q¾¢ËI¸+ûµŠ:UãÌí¨\¿zZ´ÂúÚõáE±‹“¾ÃFWUíˇM�‚›6¢>R,t—ìâæAîTes%èïO„,ÿ`[Uo8#Z™¬'Ë=–˜X42å’�Kktü¢À*“«,ãËsŸ+PôlE¢PÄÚ½ŒCUYó9?ÎÁ­[·°}'Y펃Ïz Ü#3‚U[[ £F Åï W;8Y¯îؾ _ œ [I—®ì»–¥�7±|Ù|¨*;Lµ¨ÈN‚às;Ek ¢Í¹={÷sç—ΕWE&88ÿ]½‚Î] ,GããnãÒÙc垎¬¥‰�ïu,\4_¢ÙŒIS°{ÓVü¼`*"o‡HÔù†`øØ©eÅ�|ÿÍL0+Öå‹fàჸ⚉Ê=œ‹º¬“—S,ÕŠõÝ)¼"w�BÙ¶ÿŒ0‹¼¼·\bïß´5à3<<<<µEâ»XŠ †»»ç-* (ÝÚ»£G[wr›.óµ77ÐE}u�§(w7L›2‰£P�nôYâE€@Ý:r¨¯*«óìÕKè56ÅúíçpâÈU<º›€Û'ÝïJ0\,‹zÒ(CöëýšÒhŠ³Þ¾]ØZ5‡’‚<´”)„•45ÇÑ×(pÁžŽ‹‹3)î:7d…Êíí¬$ú¿x÷ a¡!øgÁ<$Ä—|¿ó!,XÉ:÷·ß$ÖXÞ“˜»ñX¼z]y»óýxxÊ�ï.¸ ñ]xxjŒ`ݹc~üiVí»¸*º¢7ù›^u¥¸Çe$+µzÚU4;pàØ%ŽdýåÛ±åšãnúK¬ö‚E]!—âFæ¾}e�S¢¸{ PWS…¹ê;zA@0öìT6×0Y/_CSY±\k«n�V/ý‡[Òä¯fK,Í×G@,6ÔUÃòåËqèY±¾|�zë±£‹œì,‰„UFžª&ų�+ÅÙ”U »«d„+Ó6ýP"tW¬$‡,F¶”4wZJ¹hÔ� ¥Ú*OS“¡«'p[éKÖƒ¦§‡Åê—ØX�b…¹ySñâ•÷'÷ÆLüüÃpäß ÌøyzØ”�aZ·jG²n ¸Q¼T»nÅà¾#EÚ´í¿€ űÌx–Mq¤ë‰êÊ’þÿ³>ú»GÖuþöÛ°±µEŸÞ=¹.^ÎÖXµ~+ÔTUpâÐÌš#©­Ï…GD�º~úv…K~�À�0\¼tQÖ)«e»Cû÷qëêÜ‘¼ èècç¾]p´XÓ«)Ëcþ¼9X·ù Lk¿KlM)¾xE…‘¬÷âî C—âµ¢c43g|OŠ Æ„‘¬>>×F.å<1iâ ÑS¿íŒ•Ÿ� 3Œh]¶zÞ¼ W|3e&WµmÛ6„D†`$)È8Ú °cGŽìC¯rÄ6ö ð'K!?ÚÈž&œºØ##ZY ¶°ÈX„FÆaDÿ®\[!±úìÙ ¨ª* ®¢Àua±ñ<<<<µ �Y¿ýƒ:¹Xð×<‘צÔ4nÌø ]#ûý{ñþ¾†Q}»Th¬ÚÜÙ?L@bŸ8r Ã}�1ÓgáÚ¹£Ü%o9t¡ÑqXöSÉŠ[‡N\E¯/ZsªTŒP—À�"˜«““xq™ó©ÐÓ.ß~Ó²fΥς†¼*Nž9�fMšâ•šLªÇóü†Ý{Ln–×üõ»—؇�¸¼¹‰1î>¾�¦–¢:>Ã#À#ðñ¨3—äã/ƒ_AmD Ûç2”LÍjã¥ñ×T ÐÒÒDëÖe#Ѫ ÖnAÏ1!ÿ>ÞdiUš<Žº‚穉P×3+­i‰õ/)^ǪÍàíRÔ‚AQI,U¥ØX6AÛe×r\±iÒ3³ ÷*[Ö,D�n]ÁˆâM'Ï@…4+ êë`Ûží¸u ^ OÒ¢ÕÕÑ„®¶¦Ì—ÃÖÈ'é0ÕR—¹OU4¼Ÿ’�ð„ÇhÔ ì;÷ìâ–¤¯¯7ÏpõdŸ­wG�Ư©©)¶oßAñ�ÂÚÜ ×‚£Ñó³Ž3¬/,_ •ÜThi«aèØÑdh„•[×À/؞΂Mââ®™ÅGIÛ¿S¢ZÉ´ê)QVÑö;•¶k1n€ßá¹ïU"‰¡l¶ts‰¿g¹9é7v0Ì[ÀØØ´¢Ëª’þ)WMU�6¾ýñÃÿ~ �ó^ešG•b å&Å�d$«†††°ˆ;úû!==5™d564K®NШ¯c#kÖAR¯ÞÓ‡�Ü‚—&«odàËŽ-0d`ßÒšòõ@ "*ÿ^=‡ÆNŸ�#Õ:ÈÎLƒµ³7G°‘Æ}-�Å—Á<Øÿ>æ2×léV._Ý^Ú´iÍ~ž §§Ë-ÍÙÅ�ÜÕº“2„>¼ÛtÀÚµk¹ò Ú€Z²pÒÓR±pñ2dg?Ãú ëqüÔøEÂÐ@††ú¢Ëkæà7W˜‰Êª{F�¢L5Aø­p\øï"ýï æâ™²½ßÍ_Ž)ôTš¤g¤#)9‰þçe³V/iعl{ƒ¶¡=?ºTxŠ:ròˆˆŽGJj&œ¬›‰Æ ºu¿­Øˆîí[ŠÊ>åL6í•Ü‹»SCŠ ¯«ƒÙ_MÁÁp3ÔÓ�¥â$úN"®ú„£�·ƒØÎAAë]‡Žá)=›¾Í“ÃäÇt?"Pä-h![N¡N°T’(ÕÕEë6-8…ú«þá°nÖˆk./÷Jrué³,‡æææÈSTÃݧÙhª'ù|[ÒØUYçbg #ýtoVð¿u3êÒH‰´9‘¬ûnl‚Žº.—J[ÇÎ#Û¡©¡-J¼ððT¼%kÕaûÉ�Ì6ɳ}¯q8°M*ævŒ�BáèêZPP�Ü ²N�{ÿZ&’•¬LÔõ7˜˜–¬`¢àêd]‘!>x_²¦TP“‡¢†l›ØbÃ’åÜþܶ #>ï z`¦XvLœÊNâr«É #Yé!²•Mã2¯(<"œëcogÏß‘¦'y9I«¾?ÿœC#}¼ù–ÛÔŸ0n,RLR?²²±ml‚æVølÀX40nа[AÜ%�¬â¿\ãü—ÊþakLߎ¨§¯ŸE� K´T_GqùŠsX}5öß�öÞmÉRˆh�2µdíã⮳_Ÿ/ð þ6mÛûòmÀ7vu) ­aË&f¨§¦&±¤WïÙÃ8£µx©nd¼zm¥�Ь�}7°x͆ßüRŒFEF¯ú¾;ö„½­5V._‚ &àîݻزq -ù‡,_JQ7nÜ@‹-D‹ !×lk?º7ñ¨¤{Ñ|¦\D†‡àÀ®M˜»`e‰ý[ºÙaÅÚÍ�W“ì¿Æà¶0®½‘…îØ o÷¢ŠM7C£áéhŵó'ËÓ•kVaûæm%ÎÃ*}é÷׬T¿ž: _ è�ïfÎBKÏêûÛWêñ xxxxÊ„€8ɺvÿ^®ïÄþKƒ)h3QVP(¶í{º×Î{ÿŽÜÍKgŒh•,)v©ÛžE@P Vþõ“¨~E¾2Ú´‰ÁHÖàÈÛ7 §¨žÏ”ŽÀæ�;1zèÐ" ÉÊ,Yš5¬H�xÁ¢5›áMŠ­^n‚{PñºÊÊ_¹rmˆd�ŽKD¥>]ZsCïõ¹�ö6zh ©‚°°®ÌÁApŸœþòy8“Üó¨¬õTÕ8Nï%¥w[ØP*,×ü¯ •{›ÂÅü9��@%#À[²V2 üp˜³BÒÕo�ø"'GKŽ\AU¶�5�@MG`P·nÉzòßëØ¸óºuj[æKZ±e#§IúP^.dÅ ¯ŽÝhókb±c)ªi�¥Ê#C=Ñ0�KÝÛ¸‹Êªc&7//êªâ¯YßaÂðQxE|LcVYYË֯Ņs'0zØ(²î1ĪMkàîìŠÕÑq@?LUº5LuºfM5•rY±²k`¬ÿÌÿ ú„ƒ%99.‰_ßê­‡ ¢¡ ;(«(£IÓ&ô`\6lEÂ0ƒ,ƒT(6à,Àóœôë3€³°£p>mÿ6¼~x_TÌÜõÒƒµreÿŽ0 Vf­ö:'GYîÑý¬‹~S®çÕºD‹UÑ¢¤dª««p©¶6œ%«1Y¹»—ÿ”YO±Ô¥Ûç¡«üø(ég}§QOvkòŠ,JC]­ÁÊÆS(ÁOV”Úº ʬ…ï+‰³^]¶v:´é"Q¡¢Pyä7óÂÂîYkª7–{ÁÁΚ¬ëÇ�…£lÉ¥ðÐáCɲ³ÀZµaÆ¥ ¥ÇORððQÆM˜Š‰ãÇp˜Ö$ V‰ÁGç.RA¡¨^¼R ›?Å#Cq\BÈ=¦ÀÝÕÁMqñÈn4±´D=-�’ºUYÝ£è[¨«¤D‰ûª²y>äÀ)©�¹éì¬?ä´5j®ÎÚ�ËW=Š+ì‡gä¾;5…©‘úô)âéþ@@¤�=ÿ/Î]¸„Ñ#‡ŠÖu¡Õh±GÏ^¤QäÎ×»ØUùúù’›õ‚ßÀå¤ÔåGV5.®EúÝü}o4@SKò XC"¢¸{EF°ÚZ»#08Fä>‘‰¡˜‹cF´ Å”\öÞ§ø°šä¾X(OR’9×x›ýÁ¬Âò‰3g¢!¹$nHa˜XzÚqJf÷é3sàÀ~xy ®�}~Áʤe~w"ö’ñü9|¢#Ñ„»g« l΋çxóæ5ë¿É.Þc÷®Ýس{76l„´ôt45lØ®"ËÛ€À¸»•_iH|>Ï#À#À#ð©!àŠo~]€~_ž}Kºþ\"H늹e]¹y§ôæhëz¦–F°ŽŸ2–ö:L1zê L3г`ý}Þ"î{\›¬ªF°¶m[`¹Ç\ÛŠ¬lnF®²Ä‹tfÏ�G.�u¡ß@¨T/‡†tßáîÈîÁåàdo/•`e£éé¡Y Á*}ÖYZ°—Ó®CKΣK0Ýkõ=o(TÁkr™ììXý<¶ÿw^ÒvTêó7xñì&àqêthÑQ*ÁZÑèØ{xšžI„¬vá*þœG€G ‚ð$kä»E@ËŠ¹vÆÔ³8ôoц| ��€ñX ¢ÂB™”Ì8î»F‚]f}Ù”6�NŸ:Š]ÛÖ {÷^\F´~,ÉLÏÂê͇Ê+µ*Ö|3 ­º~…ý;áµn訩b%Å�O¼7{;Žde+KBY»u Co¢G×>Á*,¬Â³‚ö¬äí;yŠ¢U•²‘œÂÑ*rô;{‰á¡hhe�²’¬Œ`uq(>¾�ƒc�õŒ´52‚5>>gÏŸÁÐ�ƒ82çVx6œ=€¯_¡Q}²¢¢ dF°–d=ÉV¦œ#´`Ýi啜l˜¹y’5‹Å:¼Ò]Î3+5f¹*$Zëyµ‚"++#Éúågm`K1 õÅâØIê¶•:xšb²ªS*ˆÕZU×ÈÈÕÊ$XÙ:Ÿe=‡’²"¤‘¬å¹F°®Xµ½{v庻´lɬF�š–g¸JéÃV�ªÝĪ”…–a}=ð«$`'ïEóüØ™‡÷nËW¯ÉÂð!† Œ—¤thÏnÜM¸‡Û1w°’\ã©‘u‡¦–Ú¶i….�;HÆŸ• vG°~ÇØ[[‹mFJÕ¢�Œ«ÂÖ¢€Te4Ò,‡³3S`éTðÞ0‚uÒ¬ï1vØ ‘ë˜É½áêì ÝúÜDwbB‘’ö©iÉ´q&¸|GnUµuðènŒˆh5h`H–ÎEÛï? «ÔþýE‹f^« ÀñMx¤ °díNx¹ÚÓF´6ÐR•h¹aófî|ÜèÑðõõ§¸k«p�\®~ ‰ºs‘·ãѯGÁæ ´ud=ÏåŠ5ÕUò«ßÓ£Ý{z´+«3 i£”Pl¹yªðt³‚’|ÁÍ4k‘EšáÑDÂz,2„½âRsq.š¬þ]�¹sç ‹Ë}`uX#¿�ªBàà¿�ˆ&¢uΘ/‘Mñ&•È“‹¢ˆø“|�Š»EnU Üê ×}ÿ1¢£W+„…ÁÝ¡èóÏ;äÑý;ŠŸ*pÃÊbx ½Ç©ªãŽ(–m>‰/Ú¹ÀBŒP.mÎé£ÇaÔ¤ñprs+­i™êyǤ&’¬%]¨_`Î�½k+KôíÓ³¤¦ÕºN|ïú—Ø4L7š³h­n‹f+F²ŠË[úÌS@'ñ"Q>.#Æõ´ BÊ•¶6»6›IDATBñ'wÏîÎüó»þÈ#PÙTînve¯Ž¯F"ÀˆU&<ÁZ#ß>~Ñ@ÀçÆ¹«þ\þÉ“'ð°0�4ËK_ÿ›X²¢(±Èu,áź±Y µ‚*fÁZV+Vá #fÿ(³ëÜßçãÀÁ£Â®å:úÞôÃ’åËq“´“#‰ŒY¿e zöé‡ìôTXQìÛ×/²0{Þ Lÿú¸îç3+$?ÍÄÞs»ÐwlôÑL³¹×à~øgÙbÜËÖ¯çÕ–ó‚À#ðëßKñ0å1†äÇ¢üjú$üðõ tîÚMìœ0rÔh¼x‘‡'OpCµ¢˜÷oä°˜ÈêY3¾†5‘v/™U�~ܹ�#V™‚NáØ¨L‰'ÈH�K…z¢¢–Ê'ކºŠ¤;mi믬²ž=qUYÃU«q†Nü;ë Ûç²Äº¶oZ%qΟ|\& ŠàBVcæ6¶ø¼ÿ€r/¬¦¬-¼[`ö¬oË}½5¥ã¸ñ“À’4quu%RU@€‡†Â¢YC : ÍçšGF„‚%^*�$ŠWú×Ü‘–ž‰ÿΟEpP@©Œ›:Å­Ûˆ\ýz¦À¢–­B²51&oS1ó§˜ö×fÌ_²îd½,.ÃÇ ¢xòþ°kßÝÇ·ÇÏ¿þO�¢26n\ –„2bø0øÜX=Ë ¬¬üvl8—„mŠ;zQ†1w¹ê7‹’¼«Ö¯‚[+wô(ùU—¬¢” YFE£¶¶æS™Ö‡Ž(Ô„DÂ#À#À#À#��£_Ò³_P�E0aD«¬¢¥¡ƒÖž�em.s;¿ ?°TYrõÚ5îÙ“yëXµ~“hØzÊVµ¢B)eÚg‰Ù°©_вo´|=yl^#û•Ø2ûMbSr‹Œ˜í{�+S’C–0_¸Q.‹Õ[ͤ(½*Xàì¯g•¸RwO"Xë!69±Äv|%��@ùàc²–7¾—ØFlLߎ\ Ój~è?)­ø"�âx”šc½Eªȭʘ1S^° öèA<ŒM›H´õñÅÂU[qxÛR‰ò’NÞR¬.& r²ß —4ÞǨó#­H&n.Ó?|ø&&&7ïÌ2�L%êCÂÃádo/*KÏÜ@ë¨U¯'¬œœl܉»Mdž`³rø�é¢5ÌÌâ¥+š.]»!+ë)ŒˆûQ xöôÎ9„×&hálCMu(ç[×°õ.Z¹JJJ¸úßü{Í­[xãó®ŸÁ�ÜÚ[[{IŒ`ÕÄûÄwúZLãÔ%I›„u0¸~ùé7"�mŠí/KEÅ3tq”ü•Ô�¬¶¶Å¯¹¤¾»îù³ ¨khK]û=ŸGäxßìûœe1ï•B*LÕ¢�¬Î…âJ öþýkdg¤!ùnð�ýñë¿ #÷5ÔÔå)žžt+£àà 5Sè©k`Ū%عm?nE‡ãVTö">¬Lù…‹ÿ�·W JÞ¢öŒ`í9¨?Rï=•‰g"£¢`SÂo¾x[>Ï#À#À#À#P6Ø~f>Áª]¯b ¨ï(¦µœœ<—ʶŠ×zÛž�‹Çây—8ih„@!ÍÑNúod‰�ùÊ‹Àó\²jÎxs#ÉÿaLVvaÌHˆ=ó>Gw�êP‹yÊHÖzr²‘õÕ ;±±8vê ¾ýj:¢îDq˵¶¨™{Õk~}Ÿ&Õk'ùÓ|jÍUgû^]‹ºwQžÏððȆÀá+ÿJ4|ð0YÏráææŒá³fãrt‚¨¾0ÁzƒˆØ÷rïÊD°²Á¹Z“ V …2Œ`=tèÝL?/–`ݲs—D¯´|’U¼pÓÞ-˜úÓ ñ"øÑå‡�ˆÛ·°ûè>¨©ÕÃÆ«;�1u‘9ün¸à½éçÏÕýÕ °dmÑ ^¤¹oë^€H�¸ädü™„zï^qkîË—X½sF}7 7n\Æ¢%ó±ˆ6Ž}‚‚ðçŸáú�«ä†* »(2¯°€‘~L² ׈¬…=%ìÛ}™ôþùø bÐq�Ëñ²aËzr}¼^枥¬«W¯@@€/™ý@ ?¼ –¤ ³"ž6~¸èaS¼Í"gYâ¥z  £§‡„øxÑb‚¯žÄ½(�â‰mhè4€¹òÊÉ}ŽP?�¶¶¨q-Ê訩pW–>UiÑ¢Xâåà `DDåäTøûãóî=9‚ußöí`‰¬Ž.åYWÃÈU¦û²açt8Pž¬7é7¤Qs¨4hÄ ³qé\ÌÓ»È�»ˆ(=wâÒïÇK°²NÎÎn;|,\làáî…†VØ{øl‘ñ‚C‚JîË+-<½Š%XÙ˜ÒÖW¯^•w:¾����€L}š‘«%Xņ”š¨kK­*µðèÉ‹X°Xöç.iaä¤ñ1h(—¤µ/ ÃÖ];Ä‹øü'€€ºJ�"+»lFª^ê: š‹Â)¢.XbÂbžV7‚õYß²T^±0/ð¼Ç¬åE‘ïÇ# Þ’U:.|i9`VFL„@å‚ïÂ#Píع�ˆ$’¡ÃVùZÏ\ޤ�ñLôíÚ ©™Ü|fzZRçý{õ²bÝŒ”È¢®Ù¤v¨Å…×îfqWת©f¹®rþp¶±  ÈæRû�2îNn˜>v’Ôúòúцæõë× ¬Z»�oÅÚ›qøìaüòÕÏå²Rú1‚uè Áˆ½' r Oww̘>Eêøk–.†~#Kôîõ¹ÔzVè›O<š˜4‚÷çŸãAˆ€bu�A!p¥øxâ"®eZœ§Cûnøfü Ìš:T¼«LùÀ`?¸:W>�=jô0Lž4�%ÜeZGumô,=YiO ¦ðÈÉ�жTŒ%-é«ëÚkûº®\¼È]b›ŽO"dQÇD[Ï�; _¢ÃC°ô»©è3–\y÷é�lj »zŸ !lR+ŽëÖ¬æ®c¤ɵâzø‹¨>Ü #KOÚœ8l˜Ä¢nüw ¹ÙYèø¥€øŒÌwÛÌ⢖GâCpáìv4ÖqÆÝô—ذn֯߈UËAKS� u7-[xâQZ:¬Égt¿~噊ëìT1¤_q›ûú¶l¥ø½ûWcüÄYØwx¹Ç/©ãúM›1~ÌhQ“gÙϸ¼F=>V˜>Ã#À#À#PEÜy(Ø_°0‘Ü_HÎÈÄ™àpŒîкԙÉZX·câaÙ¼üÏŒdõ Ä”qJ]+kPœ%k]H�Š\ˆL³ó�>9oÞâ9%}Ue©Ó3eîÛÊpsv–Z_Ý ã$rKjbڨإåQÌV²=Çã´§\ÃúzEÚ2µ6æL­H _À#À#P^xKÖò"Ç÷“@@<>ïVPþ¤–!ÀÈU{Û*¿ª±“¿GÚ“Xœœ¨eŠsEŸ~ªÜëÚ +ħ¨´ü–Í;j<Áº|ñœ>y šõõ±yùJºäì•ö )û@=ˆÈ¹q£Àu<#W…+�‘«… VVneï„ï—m…9ÅIŠA#3a¶Ö¹Ê¬µæí¬vbk/IœîÛ¿š tÑ¢]{ÑZ¹*N°Î"—lÌõoI2`ð Üô»É5©óN]:OFSPl¹ñ&ƒÅÜݲc–¬ÜˆÏ{ Ä̉ƒ‘“žŒ_8ÙX‹†>xòˆ(Ï2C†ŽBtôm‰²à�l rS(‡/Â{yÉß죤èÕ²… Žûo;Žˆèhaó CÃJUAÁ!•�‘«%Xw?#1&Â#À#À#À# F®Ö×(J<jk¡«sAHé½¥å%+B°²¸9»ÈL°²öÌ’•%qakn~%ñr>/�À�é5´”ypª)+ƒ˜‘«ÒÖÓ—�!6á6Òsßqéòå˸ uUü½f3îܽ'ñ¾° GÏÄþS'%Ê…'éÂ,äà��題�ùf<Å!ðÜç WUØ…cqíùr�šŒÀ‡ Y'ŽB–uvhܸ Y¸ãé˜Ú± -ÜqxéR¾oò¸£jÝ:ÜqÇ‘°·jK ¼†ŽÄ¾�[áåá&*ûØ­úºÐ’¢MWÖuMÿþg8ÙÙ`Ô�]j “Š{u²œ¬ýý›R›=MK„nýâµK@JƒÝË׈J�le� *ê$–ñõ¬^ÒÃ'.":æ>ï\v«Êˆ[·¸qìlKV00kf�‘“g!=ý‰h^i™©ßM@lz<­Ý1sÒôòº¶ë[+[¬š·ÞžqÝXáoLóƒ«=ic–·L›bÒ(*–·{­ï×µ{î™ÛYKwoèÕúk®ÎØ‚b³Tœ$¦g@KEš*÷¹âí77�2‚µ6’¬¢ ä3<•Œ€­ƒô ç“çΡ7)?$ŸABBFŒ˜'1ó°‘£8׿…b'—þ»}}#xzxŠJïß‹ƒ¥�36¯/¸/`•ç�Ä÷s†®i}l\º]¾ì§üXäQ1шŽ�¦V½Dãüôãw°²²�΄EDÁÒÐCû –¨Ôw"£‰à0ÎÖ¶Ø}ø쬬0¸w‰ve=aëW³'âò¹¸8;q©¬c”Ô>üN,Âcb1]KjÆ×ñðððä# +…deUŒh­�2rÈð"—Å,XÕ)„/’lÜ}ÎvÖ”l$*ÖmÙ� P;L%yï Ѩ„“$òÂÁĨ¾N ­*¯J­®XúTÄïÆ´%£Œ+—¯àÊ•+øï¿ÿ`Ñ´1—„Ä?ŒÃóg™ð¶ë„ÈØa±èÈÖø{wá¢ýaÞ#ÑÄåÌüµôWôêÖ–æЇåŠïÆ#P!xwÁ‚�ïÌ`îbúväÝó�*@àï1C¾�&é¢îi® v•®Š7ó¬¿bX¯/$HÖ*XR•!ÐŽ´³³+q®ÒÌcˆVYäIf.ÂÓÑÉÁX–æ%¶ÉÎNE½zEÝ®”Ø©TF“K&+\2ß8Å­Ö¹E7î¸{ß>î8˜6\+"~+ÑÃÕ “¿žŠ±#ÆÀ™âÍý9>zôè†uË—#ONC¾ù-šêJLÓ§X¬ïÊö”ð÷‚ ¢ª=U94mn·V�$æåO$ˆó‡ž�1tõ+þ?$92VY”D²VÖü8<<ÀíÛ18rìlÉ»‰E³¦hÞ¬™,׭ǃ{wП6tmÈ¥¯4 ¡0é™/С]Ë"Õ‡ïÄ“Ô,Lš0ETw÷NBn…À/ÚO3£±eáyQ]y2Œd Ï¿—bým,›pÃ8“e“ðè;¤¼W ¸ÇÊztï„?é~ÓVÊ5…GÅÀÞº9k?J~˜>uw.þòš,†ù mqHø<���@¥!�ó"Ïs^@_¯æ=«Vü@F 8ÿþ 0Éz?õ4Õ” ©*؃*ëD¤ •”žŽžeíÊ·C ”< …FE`d¿âÉî£ÿ^„%m¼û–ñbàâæ�—oó`a¨F´61‘¼w¾Fe�œ:À‘¬5jÑübk%<ÉZ+ßÖ{QÂXy.IÌ£;/<<5�ë¶Q<“0ìX¿ø£/ÿÉ“'8væ,ô4@�ÏK·Fxóæ êÔ©yyù×ÎHÖ'Y¹°oT²FÞÚ-«áêèWŠ»ZÕðßy7nŠu»÷ÁP_6d)ÒÊ»UUO+ÓøÉ÷c`ØP°YZ\‡×®ýZ•lá*ì?tÜH¸É:=Ó¸[�´Á„ÓÇ�ÃÎÖ™âÝ‘;ì&VÐU/ßC›pY�7nÜ@Tt8²3R0vÌ$0kM^xdA`ݪô êWŠOÌ ��@íA`âÄ)7n \\œ‹½¨;·.xßSÄ+KË¢¿“ÁAAØ´n&O›T,ÁÊoÕÒËW¬�“SѹI)i ÅcÝ´a«h�“¹¼�Q#ܾ˦’äíºÍÃũݿ´õ‘%ÃÈV&þ×ñ缅صs;mÆÝáÿ·wðQUÙû ¤ ¤÷B $�JzHèA¤©‘bA@D@YWPÄ]dý㪻â*Eš AÄ‚¢CÒH! )„BBÉÿÜ7N&ef2“>É9ùݼûn=÷›ÌäÍýî9ç—ßðãÖ�š !µÙºKv@ëɨqjIÖë÷îáò•+ÈIKŨaÃ?5=Ujãç£Üš¸Á¸#À0�A² éѽG'Z5/µµØöS4œ­L04¸ñž·„5kkY²¶4.ï¾û�4Å¢Emé©j�¯ Éš•Ÿ‡÷Ö½��þÁ03³ g®QÒ¦=�Ê„¿laÒ­�ÏÚ|NN ¸I§D@ýŽt§„„­-%+WHV¬ÚöãöŒ# =¿•ŲҾ§ú™;£]¬BK[[[ 4ýÜ®-Õi¯ Á*�kfŒ¹sÆ éX"¾Üý52²„[½ú’�,sµ+¯‰;/Ï6ýZ¥ü0Š7¹ó»|ùÇÒxŽOÿ÷™Æm•5Öªr‹Ueõ ¬¢� W½zkNLn¥ÍbA°N{áiÏÍB~þ­F° ýÑßÙœgæKëµKçE‹¾‰IÀ¼ß!Q2‚AMS®jf6­Û„Ä„¤GMNj¸�²AÎ|Ÿ­ý�²*.c:A��j VF6=?|÷Ín¥«¨ ÂÚ�ëk¬1±qo%;H_³LäÁÊá‹ë¢Â÷Œ€�®ËI·œc´C ,&–Sž‚ÕÔ™ÚuäÖŒ# 5k‹Åž}¿"-#ÃBrPë‰Û ƒÅèIÑÓâ(] _¹¨ ÂÚõ!«Q+ëzSL; ö w¨/Ó¦_aq1†hg±6ïùgQ|¶˜bŽ+横¤'S"ZÉ-®aÅjB§ 嬚Z±&§¥`ï�Ÿ1vÔб‘31µ„HMSíOI{QìV/÷þ(½” ;ŠñùÔÏbÇ·;q„ˆÖˆ�𦨣²oRv’³OÃÝÅ–æùûßG®¦eï##ãlŪ9EÅæÏ>Á¯¢ñЄ±p°³RT4S®8?Ñ_oC¿ÀÖÿ¢ªí‚CÃàà¨øœÐ¶¿¶í7­ÿˆ,gƒàà`¯²« XE ’HÈá_IWSsÙç\zzV¯ú#G—Êkþ²st†,¹Ô,æ<#ÐéPgÁ*Àd£9ŨzøÑ(¥Øä•¼WÏzug ‹ˆd�¥˜ãŠØ«uÙÚÙÁÇßûïÁO?üŠ%/¿‚¹sçU7³spE UàìÔ')b¯ÊL; £‡M@ô/{Ñ×­?LMÍåU]—½¾C† �¹™9=» À˜û‡ÀÐÐ_üï ¼òê$ÆÁ_^Y '')Õ4æÈœ),„³³sÍb)ÿÁú�8wáž™9“îõÐÓÌWn”C�¼�xöu'‹™õÄ�ûÃØy¸×v_',XÙŠµ¬\À0Œ#À´:vÖ6©±bÒÝ!š¦oì­ÝÏÙÙ©µ§Ôx¾É“…³£jýLôõ Òïñ‰put€ XßÛº wnÀ³�§4Ïà‰ÓàãEž×¬ÙŠUcä¹agD€IÖÎøª7ãš�œ]! #À´<—nÞÄâ)“`x§CÃ1tÌý(º ”ß¾‹îÝZ^�v6Ç[>ÀºÏWaÒhå�ÊÔµ'BOÈÚDTF°*ëE™Ú¬b{{"ke©z\"W«ªh3‘ŽêéÉ,DbþøÎ.®ÕM4ÉØÛÚµ ‚U]•µ±¶”té9¸u‹þˆïUáL.¹A¬¬BÄàAʺ4¹ÌÞÊL"XÅ@.]ÄÞ_÷†ã›� ›·ÃŽÂ;ÙSêè’˜’OŒeß›îÜ£½ ù^Ž.­=7ï$R)YÒaA#IõŠÛwñÑö¯è¹¬›·~oòZ‹[å]0,l*èí.µüáÇï1~Ìh]Zn§Ö5'j* OÁ$bx§Æ¡µÏ$kk#Îó1Œ#ÐHúÚÈ,…•€�IOrùñ Œ ô«S#‡ÕÙn!ÂÁÖ ŽvªOæµåâj¬§(†™¤NÕz0¯ºGúkÔÄH,ze™T—–•†>þ£�R«z^îq˜[Ö·ÂUÛ©VF„…ýŸ/^}m!œ{»J›³Î.-Oô|±c;þoé›í‘öª’J“~À;ë¶#|Ð8ª±¦lÊ LÌ-™`ÕÀâüÈJŽ'‹øÚV_'rŽK„ŰÑ�BX±š™™Âš,�­¬¬ˆdµAÂÁßàØû¾Z$«ÓrSF S#à;À½DØp"{ÑA…ý_¬Ã•Ë%pó †±‘!¬ÍñÓέôžs”ˆÖ"²îÔïq] Ї=¨#Yzè!rUD„fBB‚ë¬ÚÿÞÿ•š;;É,K»tÑ—6Um >÷Òß0x`l¬eÏEdyjÚSa‘+Vu"ÈUekÍ>9Y©¸x¡”þ‡8¬G�Ã�„§«‹V­_�0"tÛR¾Úó+._-ƒ[oǶTƒçfF€`ÚÆ=Mq“l™v£ðKؼy&<¨|ï"1-%çÎÑž�n±o¼½ %g/#Èß�ΆßCýtÑëÚî^›†ºtù2ŒÍÍÑËØ¸šd½K‡Ý==úãîÍ«8Q�GëÒÃÒË`Ò�öŸœŠÇžšIìuùákLžú8®–]G7zÞei¿¯\Ž‹;¶âú‘ƒ¤ä=&Z[ñ¥’™Ñ´â„<#À0Œ@ãX½zDzaî³Ò ÆÝ Rg•�êÝŠÆ’{¾ÆÊ�ŒAj3Å+(ÈÇA"6„t10’Ò‹+^Dw S|óK,Üi3U.¾ý|äY•×{wa?¥ö$Ç2 ’*ÙsàÆMû;öE+Ú¼¿öm|¿ï;ô ›„*S§³b­«Ó‘øØºE|¯�£ ‰ˆšú4b³Ëðú¢Å –¹¢UÑœ‹Û�¤¤d¼ºd1NäÊb ž$‹Ö„ÿãßÿù7²²³%í&MD²²0Œ@Ó¸¨o‹ûj õô|X“' !aäxLd}ø  Pÿù‡À?Ý}×0—ÞÇ žžV³¨Á|lì‘zmѪJ¾Úò¹º@Ô—‘甲òrUMk”ߣ¼H ‰‹�ƒHÊ$'; {¾ÝV¯ê·äT¤ç .!>ùÉÇRêµiÍ‚9O>„È!ê­…[Sž‹`F }"Ý>k&­�XQ%ìæ5£üC0kêTxôqÅÌ'T{KJM‡Hº.ëßsfʈdý.IÅÝ­ೃq�ýC#ƒ®c×añDÔò<â---p@æÍ^ˆ^Dº Eמ½°wÿ~¤eçêâÒ;•Î%+WT¯WäËb¢«ï9Ó²°%kËâË£3Œ#Ðì8R¬''>]ß°…×®!“,1¼þ´Êh¨½¨nñ\²2q xðóÐ,1Àâ“E ¶!è]ƒÔX½i#Î’5GLì!„ãáqáD.m­láÛ߯¼; }œûÃÜTæV·®îAaÃàæîU·¸Mï÷ü¶Ö£¥¶kÃj¥è]ߨ'òR O'@O“[Á´œ°²óÀâY“1(°ar¹z¬&f¦<2¹‰#tžî»¶n!ë' 4" •´éîx“síåÕ7!WOÆÝŒ�zp/œÈµSʱtòD~�¬çÌ1eê’šwÚ¸{L›öÊÈ¥©9Y w9|ðNœ†KïÞ�eÉz�éii°±µm•5Æ�Ǩ"±à¹Jçs$—ºÂŠUH Å�¶·WXy¾ñö›xã�71ãñéÕ}-È¢\¤ÆÊ)r_;lÄHX*‰#¯jÌÉ�N¦Ø­2+VUmT• rV¦¦ªª¥òŸöRÜW)vªØ|UXsìÚý5 ‹Š(¬EýCpýý>øþêqg=ý4Yµ:À½OôèÖ ýú¸!çäilÞñ=ü)ö—Åþª+g/_‘¹ÖWM×íÓïņ‡ô錯<¯™è|¬\µZ8— ÿyŠÿÅ­…¬Y³pêÔ) >¼µ¦lÕyôYaÙ(~är÷îméHîþûõu¥Xì*¾ûS‡ ?)ÉûòµíOmÝ ÜÞΖbíŠ$—_F>YðšÜçŠÍ( œ6a‚¼š¯í�{Z±Ê¬<“Ë©3Û­¶I1&Y;Ò«Éka��€ W™`ÕìeîedT�`=E1% è;‚*'%¥%7ZöàhkÓ<›¹KßZŒ¢’""SV+Ÿ”ˆñ£ÆB�žo'=0I"X«+)#V7Jí]vü°¹y»£�«DUë÷ÔÎʼ',M»âçý?£òÆu<ÿüK˜7‚Â`e¢êiït|ýîU”cô÷£ìúu‰`íÕÀÆ{ÇG¤}­°üú5I!K{L{rÆÒkõàØ1µ”$k~^.>Ú°£î[«®#ßüoËVœ)(À`ŠÉ¢ûÌ›=Þ¾¾­B´:RÜPU«2$·îú"Ý?,Ã%··½¥¤¬­&e d‘¾lÅ¿0q܃HLLÁ†MŸbæÌ§ðÃ/;¤î–Š 0MÆ«ÛæYÌönÂfô‰Üˆ�‹G(Y=Ô$XÅ<‚\UF°ÖÕAÜá¡I¡YTˆ$dläHéjGñ£“RR°â­ááI“¤2éןû¼†L²*0©“nâÎþ홫gV¾A ²›¸:ðð-# sÐ××—Ωßâ Ëé¿¶ YgΜÙfë{«×HÎôÌÒ’R“`ýrÿøôq‘Ö–œ“Çn9ÒèP®ƒ�fû\£†!ÐÇ #‡Ã3ÏÌÆÏãáÙ÷>”‘!€Q=Êß|-§.�ÜDV‡—–QOÙZYx&áC›ïð]Õº’\ôñ�Ǻ/�^IÝB¾gF€`:"7hQ=:ⱦåÿ\ŽÉ“'ÃûO—0�Bê’‘{Þî}Tvß°n5Åb¹†Ç înÕíÞzë}¼úêÂê{δ?Ò32°ìõeˆE–Gt"à¹y27åíOSÖHçÏ�•ª¬mì¤ëÑø„„W7ÿxýGHNLÆšMk«Ë8Ã0Ú#�z< ~^¾wœñÔ“tÈ( ÿúb½>[¶nÃÍŠ tëz•W¯âÙ¿.’Ú’Õ½�7¹ç“¹r«×Qž}=°wÛçVßÚTÃ!Z¥Y4Y£§g¤cÁüù­2_G˜D¬Â5œ)ª îÙÚ™••–šÓf #Àè$b³V8eWø ÐÉe°Ò-€À‘øxiÔðÐÐf½¤ìŠ)9È>Õ8=¯yg052¼f±Öù$:lþÜsó+Ó_ë¸C“Ї�+ßFÐÍŸYS¨¥’KŸ}GQãÇ£’>”Lº(·†m’rܹÙ�?š„�Ǯߚg|‰d¥gË®õ?'šg݅ߺûÚ±æŒ#À4�ÌÌ,ˆÔQåô…óWLP«2QG°Î}}63ñBå}šëš�|³_˜Õ\ÃÕ'>1k7¬¯UÖÐ�‘«M%XÅêV¹ãÇEÖ"XEùøÑøb�ÀmEIJŠÅ¦�ÞoÅu{*oo¼±|9B(k�n/¦ƒjÿÛ÷ßâÓwß‘V—J®É÷ýøU½•ž/•­¢bíš D«�{¿¢C¨Å˜=w¶tÏ¿F@sRS’!’\´!XEŸ�«U$¹lüô$&ËÆË?y–½L�ŸŸ†ÄØäŸÎ“š�=¥É«èú‰œF¬×n–ËÕ­u�?š‘êÊ¿V¾�£¦IŹ%%¸~ëVÝ&jï‡"¬ù…jÛq¥y®«Ðë-VE çF@×äªøÔd‚µå^¹J69äjs¬eƒÕÞDù_œ�›S“ V1G``>üp�Ȳ´‰ûЊ`*ˆk7Š)^kºVéaûîØWÿ;g,‡§l‡—–C¶³éõZjQ­G¬L°*ŒIV¥°p!#À0��ÌãYøz×7v±¶f¦0¤ØbšH�w0DjI öiÉáµ{ Y±¶†Ì�ÿ·k™ @Ŧvk¬_×çðññEY; ’5æà~r¿*Û쯹®Ã¥Ø—ù5‹�_¸àyœÈÍmtÿÎÖqÄ„I˜µèiÙ~ä’\¤š",X½|ý«‹>Û²©Ú’uÔØG!R@p`u=g�ŽŠÀŒsè�Áz•ËËËÉRYW³â©³‘™•�cÇ’ñùæOjVi•ŸOñ^†)¬AV­]‹wÞý�4†§·3v}·&–¦Xòλø÷ª·‘š™Toü˜Ø8عö©WÞœié©ÕÃ�¹x§Îž¯¾¯™‰O¨O².}i!~ܵ]jfonŽžwU[ëÇŸïÒ¶[§lŸ5¢Öº%«…¯ö×*ãF€ÐÄf­‘“š "›E�€}Ï®D²¶¼ PA´²è�"'ï,Es­‚EO måè¥[ èäÚ Â,-�» nyŒyF€`F@)•¸zí:l¬-”Ös!#ÐØõÍ×ðìï‰+çŠàÜÛMJ5õúßÖ�1hÈHä¥$¢ ;3^þGÍj­ò‚`íëî®UnÜ0iD½¶è¯ønßÁ†s F "ÿ§wh wÙòe ‚uÍ߃­‡?^yñ9y±Ò« X=û÷«®KJL”ò�äúW9~<^^žRÓxê;cî|̘ò–¼¼‡cþÀàˆAR]Æñdò6€œìØùÍN¸¸[aú#sjM‘’•ƒäìÌš4¾º|ôćñ÷Wc蠈겦d–þ}1||üðø´é¸tõ:Nœ)A¨�òÏèòÊ»¸Eɼ§,Îz¹2\µv ¶mÞRO…£ÇR±vË6¼ü¥kÍ18Ït ’21·´Â˜ñ`ei!%emäeÖVVؾyŠOŸAŸ~žXùæ[¨¬º‹ IÖ�=�ó¥úÑêèàoO¸¸¸È’³‹4Í—»6`Ä0qºïP4ŠÏŸÇ‹Ï.”«P}={á"Î^¼ˆ€þŠÍËÒkúcÓªÛ453jähøú �†1îfGÕŸÑwîVA$cC™«Á¢¢"Šç „‘KÃ*Šß¤G±½…üƒwW­Æ ˆpܺX�Ìô“�"Z7îü wþŒ ÃŽG÷Ðäi"’ÕÞÞNÒAÓ_tN}åÞ5¦ÅÛ•‰&Ru(úíú–SgÂÈÙµÅçä F€`:yÅanÒ]«�»T†ü¢ °±èU«Ÿˆ.v9>Ù¶ ›¾Ú�©*ƒÕjÈ7:‡€­½ PuŽvR¨ýx+Ó9 Yቀì›N‡\/Š`F€hß¹jÚ«gûV’µëôücÉkÉZu�ÜøV\ª‡GÎÁí¸X�.•»öÓÞuиYÏÃ= áMòzs’Žb`€·„Ägï­DzâÑjT®–]©Î‹Œï€€Z÷|Ã0µèï¡™ëÝ¡#Æãäñ“RçÏÌÆÀ`Í>¿.\LCWÃRˆ ªé“AfF:,%¹&™ IH|ÜìÝõì,¬äÕµ®þD® +Ö¥¯-EZzšT'¬XÛJ¹*·b:rõ…çÐf9d¬ªø.d€/žêID=6FJuuN!ëû†äÙÉàÙÉcj&ÕÇŽn”%+9Ñ 1·DbaF€`´E@¬÷ÄiÜm×÷¿A$erþÆÉ¥lbR"<=±ýýÕÊšq™Ž"°{×n\¾i�›•&ø1z�”tt)íBíóŧ ’�„øÌ™%åù—n"À–¬ºùº±ÖŒ#À0�@ ¬ìªdU¡ßµåc�4B½VïRXx×®]E¯^¦­>w[LxãÊ%v3n‹©uvÎ-t™Ì�`gk ½N€~}ür} ËÞ>ènF'[!‚•Es¢££Ñ·o_|°f zPœÃow‹¥ÿ|ÞÁÁð RÄ}¶±¶ƒ°bíìr§òîÝ¥ þÜïì �^ÿ¦uk`na!%1ˆ‰©)ì]œ±tñ«0'ë×a#Gh4v÷î¶øãð9ÉjuÌcá©ÄÍš�µF �(�çèäLÖ·ÎØ²sJ/”b`�r‹�Òsç9j”F:´F£å7ah` ˜Šþ‡èé)LA]œ�É-²zwÆÓ¦O…?YßÛ‘¾:q°iÙp =è_^{·bU‡×1Œ#À0 !p¹¬\²busPí­B>ÆÅ²2)kOž-\�mQ\xgKÏÓwEÙ÷À‚+•8{ã6|û:™¾ãuí¶]rì:ÂÕ™¼®,^0!2ïI–f–‰¥qd¥àtv z÷÷GqÑr£‡àPõÏÈ�›‰{µ“µ5Pæ9F@gȤx‚»¿ÛMgKuFgVTsÉjhd#ÃúÄCjfŠ4�Ÿ§ì�QóQ[¿å‘¤d¼÷ñ§Ø¹vU“&?{ÎN.p¢Ô$íàOpó E³–Ý”íHX.Z²ÓŸx|}Õ.ëô‰\l[½ ¯~°Zm;®lÑ:|øp$=ŠDJsŸSG²yfÕÍQÁ*„IVÝ|ýÚJ묤hXÙ»Jiÿ/?!rô’*g òsèÊËnÁÉÍNäê·¿g•j&$$"88He½¨ˆ��Ch¨rUÔÇ&ʬKT‘¬¢M{A°æ•—°ÑVV¼ý6†,%mûr{F€`F )TýéqA�±¨FàfE…TÙ�öT„lÞºCºÎxrŠtí¬¿2³³áÙ¯_g]>¯›`¶då?F€`j `Mñ­(Þ–¸²t<ŒÈªK•뾃{Qzþ,ü¼Ú¿KÍÂ’³Ò‹Ø4]ÁÚY¬X`¶½û²%«–oëÑ‘‘’kCÝL-,ÑÛݧ N�+L²xeiQ\]]¥ñ¢°^�5 ý||aeÓ8«âUº�×£ô"±0 !��›‡?âÐß½²’~—Öî&fpëÓWêzå\ Žþü-._¿Ž’Ó'0sÞ_`e­på{áìYtï©päð˜7on߮Ľ{wáLœrIÍÌ$ëÔ °µ¶ÆH²„ #«ÕÚŸ�>ác)Þ•Â(Þ«“Cí:ù8íí*,XmÍgѰâÉÚ›ˆkF€`F -`’U=ê]ô»ÀP_«7~‚¸ÄdÌ�5þ~²Ð%ÃÆ=�?/úîØ¹öÒÁºâÝ•ˆš8A=x\Ë0�ÿt"Í4C~LOIEND®B`‚colmap-4.1.1/doc/index.rst000077500000000000000000000103071522646662000154130ustar00rootroot00000000000000COLMAP ====== .. figure:: images/sparse.png :alt: Sparse reconstruction of central Rome. :figclass: align-center Sparse model of central Rome using 21K photos produced by COLMAP's SfM pipeline. .. figure:: images/dense.png :alt: Dense reconstruction of landmarks. :figclass: align-center Dense models of several landmarks produced by COLMAP's MVS pipeline. About ----- COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface. It offers a wide range of features for reconstruction of ordered and unordered image collections. The software is licensed under the new BSD license. The latest source code is available at `GitHub `_. COLMAP builds on top of existing works and when using specific algorithms within COLMAP, please also cite the original authors, as specified in the source code. Download -------- Executables and other resources can be downloaded from https://demuc.de/colmap/. Getting Started --------------- 1. Download the `pre-built binaries `_ or build the library manually from `source `_ (see :ref:`Installation `). 2. Download one of the provided datasets (see :ref:`Datasets `) or use your own images. 3. Use the **automatic reconstruction** to easily build models with a single click (see :ref:`Quickstart `). Support ------- Please, use `GitHub Discussions `_ for questions and the `GitHub issue tracker `_ for bug reports, feature requests/additions, etc. Citation -------- If you use this project for your research, please cite:: @inproceedings{schoenberger2016sfm, author={Sch\"{o}nberger, Johannes Lutz and Frahm, Jan-Michael}, title={Structure-from-Motion Revisited}, booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)}, year={2016}, } @inproceedings{schoenberger2016mvs, author={Sch\"{o}nberger, Johannes Lutz and Zheng, Enliang and Pollefeys, Marc and Frahm, Jan-Michael}, title={Pixelwise View Selection for Unstructured Multi-View Stereo}, booktitle={European Conference on Computer Vision (ECCV)}, year={2016}, } If you use the global SfM pipeline (GLOMAP), please cite:: @inproceedings{pan2024glomap, author={Pan, Linfei and Barath, Daniel and Pollefeys, Marc and Sch\"{o}nberger, Johannes Lutz}, title={{Global Structure-from-Motion Revisited}}, booktitle={European Conference on Computer Vision (ECCV)}, year={2024}, } If you use the image retrieval / vocabulary tree engine, please cite:: @inproceedings{schoenberger2016vote, author={Sch\"{o}nberger, Johannes Lutz and Price, True and Sattler, Torsten and Frahm, Jan-Michael and Pollefeys, Marc}, title={A Vote-and-Verify Strategy for Fast Spatial Verification in Image Retrieval}, booktitle={Asian Conference on Computer Vision (ACCV)}, year={2016}, } Acknowledgments --------------- COLMAP was originally written by `Johannes Schönberger `__ with funding provided by his PhD advisors Jan-Michael Frahm and Marc Pollefeys. The team of core project maintainers currently includes `Johannes Schönberger `__, `Paul-Edouard Sarlin `_, and `Shaohui Liu `_. The Python bindings in PyCOLMAP were originally added by `Mihai Dusmanu `_, `Philipp Lindenberger `_, and `Paul-Edouard Sarlin `_. The project has also benefitted from countless community contributions, including bug fixes, improvements, new features, third-party tooling, and community support (special credits to `Torsten Sattler `_). .. toctree:: :hidden: :maxdepth: 2 install tutorial concepts features database cameras rigs format datasets gui cli pycolmap/index faq changelog contribution license bibliography legacy colmap-4.1.1/doc/install.rst000077500000000000000000000357521522646662000157650ustar00rootroot00000000000000.. _installation: Installation ============ You can either download one of the pre-built binaries or build the source code manually. Pre-built binaries and other resources can be downloaded from https://demuc.de/colmap/. An overview of system packages for Linux/Unix/BSD distributions are available at https://repology.org/metapackage/colmap/versions. Note that the COLMAP packages in the default repositories for Linux/Unix/BSD do not come with CUDA support, which requires a manual build from source, as explained further below. For Mac users, `Homebrew `__ provides a formula for COLMAP with pre-compiled binaries or the option to build from source. After installing homebrew, installing COLMAP is as easy as running ``brew install colmap``. COLMAP can be used as an independent application through the command-line or graphical user interface. Alternatively, COLMAP is also built as a reusable library, i.e., you can include and link COLMAP against your own C++ source code, as described further below. Furthermore, you can use most of COLMAP's functionality with :ref:`PyCOLMAP ` in Python. ------------------ Pre-built Binaries ------------------ Windows ------- For convenience, the pre-built binaries for Windows contain both the graphical and command-line interface executables. To start the COLMAP GUI, you can simply double-click the ``COLMAP.bat`` batch script or alternatively run it from the Windows command shell or Powershell. The command-line interface is also accessible through this batch script, which automatically sets the necessary library paths. To list the available COLMAP commands, run ``COLMAP.bat -h`` in the command shell ``cmd.exe`` or in Powershell. The first time you run COLMAP, Windows defender may prompt you with a security warning, because the binaries are not officially signed. The provided COLMAP binaries are automatically built from GitHub Actions CI machines. If you do not trust them, you can build from source as described below. Docker ------ COLMAP provides a pre-built Docker image with CUDA support. For detailed instructions on how to build and run COLMAP using Docker, please refer to the `Docker documentation `__. ----------------- Build from Source ----------------- COLMAP builds on all major platforms (Linux, Mac, Windows) with little effort. First, checkout the latest source code:: git clone https://github.com/colmap/colmap Under Linux and Mac, it is generally recommended to follow the installation instructions below, which use the respective system package managers to install the required dependencies. Alternatively, the instructions for VCPKG can be used to compile the required dependencies from scratch on more exotic systems with limited system packages. The VCPKG approach is also the method of choice under Windows, compute clusters, or if you do not have root access under Linux or Mac. Debian/Ubuntu ------------- *Recommended dependencies:* CUDA (at least version 11.X) Dependencies from the default Ubuntu repositories:: sudo apt-get install \ git \ cmake \ ninja-build \ build-essential \ libboost-program-options-dev \ libboost-graph-dev \ libboost-system-dev \ libeigen3-dev \ libopenimageio-dev \ openimageio-tools \ libmetis-dev \ libgoogle-glog-dev \ libgtest-dev \ libgmock-dev \ libsqlite3-dev \ libglew-dev \ qt6-base-dev \ libqt6opengl6-dev \ libqt6openglwidgets6 \ qt6-svg-dev \ libcgal-dev \ libceres-dev \ libsuitesparse-dev \ libcurl4-openssl-dev \ libssl-dev \ libmkl-full-dev # Fix issue in Ubuntu's openimageio CMake config. # We don't depend on any of openimageio's OpenCV functionality, # but it still requires the OpenCV include directory to exist. sudo mkdir -p /usr/include/opencv4 Alternatively, you can also build against Qt 5 instead of Qt 6 using:: qtbase5-dev libqt5opengl5-dev libqt5svg5-dev To compile with **CUDA support**, also install Ubuntu's default CUDA package:: sudo apt-get install -y \ nvidia-cuda-toolkit \ nvidia-cuda-toolkit-gcc Or, manually install the latest CUDA from NVIDIA's homepage. During CMake configuration, specify ``-DCMAKE_CUDA_ARCHITECTURES=native``, if you want to run COLMAP only on your current machine (default), "all"/"all-major" to be able to distribute to other machines, or a specific CUDA architecture like "75", etc. Configure and compile COLMAP:: git clone https://github.com/colmap/colmap.git cd colmap mkdir build cd build cmake .. -GNinja -DBLA_VENDOR=Intel10_64lp ninja sudo ninja install Run COLMAP:: colmap -h colmap gui Under **Ubuntu 22.04**, there is a problem when compiling with Ubuntu's default CUDA package and GCC, and you must compile against GCC 10:: sudo apt-get install gcc-10 g++-10 export CC=/usr/bin/gcc-10 export CXX=/usr/bin/g++-10 export CUDAHOSTCXX=/usr/bin/g++-10 # ... and then run CMake against COLMAP's sources. Notice that the ``BLA_VENDOR=Intel10_64lp`` option tells CMake to find Intel's MKL implementation of BLAS. If you decide to compile against OpenBLAS instead of MKL, you must install and select the OpenMP version under Debian/Ubuntu because of `this issue `__. Fedora ------ *Recommended dependencies:* CUDA (at least version 11.X) Dependencies from the default Fedora repositories:: sudo dnf install -y \ git \ cmake \ ninja-build \ gcc-c++ \ boost-devel \ eigen3-devel \ OpenImageIO-devel \ OpenImageIO-utils \ metis-devel \ glog-devel \ gtest-devel \ gmock-devel \ sqlite-devel \ glew-devel \ qt6-qtbase-devel \ qt6-qtsvg-devel \ CGAL-devel \ ceres-solver-devel \ suitesparse-devel \ suitesparse-static \ libcurl-devel \ openssl-devel \ openblas-devel # suitesparse-static is required even for a dynamic build, because Fedora's # SuiteSparse CMake config references the static targets file regardless of # link type. This can be dropped once Fedora ships SuiteSparse >= 7.11.0 with # its separated static config. Alternatively, you can also build against Qt 5 instead of Qt 6 using:: qt5-qtbase-devel qt5-qtsvg-devel To compile with **CUDA support**, install the CUDA toolkit from NVIDIA's official Fedora repository, which (unlike the plain ``cuda`` meta-package) preserves an existing NVIDIA driver. Replace ```` with your Fedora release, e.g. ``43``:: sudo dnf config-manager addrepo --from-repofile=https://developer.download.nvidia.com/compute/cuda/repos/fedora/x86_64/cuda-fedora.repo sudo dnf install -y cuda-toolkit During CMake configuration, specify ``-DCMAKE_CUDA_ARCHITECTURES=native``, if you want to run COLMAP only on your current machine (default), "all"/"all-major" to be able to distribute to other machines, or a specific CUDA architecture like "89", etc. Configure and compile COLMAP:: git clone https://github.com/colmap/colmap.git cd colmap mkdir build cd build cmake .. -GNinja -DCMAKE_CUDA_ARCHITECTURES=native ninja sudo ninja install Run COLMAP:: colmap -h colmap gui Mac --- Dependencies from `Homebrew `__:: brew install \ cmake \ ninja \ boost \ eigen \ openimageio \ curl \ libomp \ metis \ glog \ googletest \ ceres-solver \ suitesparse \ qt \ glew \ cgal \ sqlite3 brew link --force libomp Configure and compile COLMAP:: git clone https://github.com/colmap/colmap.git cd colmap mkdir build cd build cmake .. -GNinja ninja sudo ninja install If you have Qt 5 installed on your system as well, you might have to temporarily link your Qt 5 installation while configuring CMake:: brew unlink qt && brew link --force qt cmake ... Run COLMAP:: colmap -h colmap gui Windows ------- *Recommended dependencies:* CUDA (at least version 11.X), Visual Studio 2019 or newer On Windows, the recommended way is to build COLMAP using VCPKG:: git clone https://github.com/microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat .\vcpkg install colmap[cuda,tests]:x64-windows To compile CUDA for multiple compute architectures, please use:: .\vcpkg install colmap[cuda-redist]:x64-windows Please refer to the next section for more details. VCPKG ----- COLMAP ships as part of the VCPKG distribution. This enables to conveniently build COLMAP and all of its dependencies from scratch under different platforms. Note that VCPKG requires you to install CUDA manually in the standard way on your platform. To compile COLMAP using VCPKG, you run:: git clone https://github.com/microsoft/vcpkg cd vcpkg ./bootstrap-vcpkg.sh ./vcpkg install colmap:x64-linux VCPKG ships with support for various other platforms (e.g., x64-osx, x64-windows, etc.). To compile with CUDA support and to build all tests:: ./vcpkg install colmap[cuda,tests]:x64-linux The above commands will build the latest release version of COLMAP. To compile the latest commit in the dev branch, you can use the following options:: ./vcpkg install colmap:x64-linux --head To modify the source code, you can further add ``--editable --no-downloads``. Or, if you want to build from another folder and use the dependencies from vcpkg, first run ``./vcpkg integrate install`` (under Windows use pwsh and ``./scripts/shell/enter_vs_dev_shell.ps1``) and then configure COLMAP as:: cd path/to/colmap mkdir build cd build cmake .. -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_BUILD_TYPE=Release cmake --build . --config release --target colmap --parallel 24 Anaconda/Mamba -------------- Install miniconda and run the following commands. You can replace ``conda`` with ``mamba`` for faster package installation:: conda create -n colmap python=3.12 conda config --add channels conda-forge conda config --set channel_priority strict conda install \ cmake \ ninja \ boost \ ccache \ eigen \ openimageio \ curl \ metis \ glog \ gtest \ ceres-solver \ suitesparse \ qt \ glew \ sqlite \ cgal-cpp \ mesa-libgl-devel-cos7-x86_64 \ cuda-compiler==12.6.2 \ cuda-cudart-dev \ cuda-nvrtc-dev \ libcurand-dev git clone https://github.com/colmap/colmap.git cd colmap mkdir build cd build cmake .. -GNinja ninja .. _installation-library: ------- Library ------- If you want to include and link COLMAP against your own library, the easiest way is to use CMake as a build configuration tool. After configuring the COLMAP build and running ``ninja/make install``, COLMAP automatically installs all headers to ``${CMAKE_INSTALL_PREFIX}/include/colmap``, all libraries to ``${CMAKE_INSTALL_PREFIX}/lib/colmap``, and the CMake configuration to ``${CMAKE_INSTALL_PREFIX}/share/colmap``. For example, compiling your own source code against COLMAP is as simple as using the following ``CMakeLists.txt``:: cmake_minimum_required(VERSION 3.10) project(SampleProject) find_package(colmap REQUIRED) # or to require a specific version: find_package(colmap 3.4 REQUIRED) add_executable(hello_world hello_world.cc) target_link_libraries(hello_world colmap::colmap) with the source code ``hello_world.cc``:: #include #include #include #include int main(int argc, char** argv) { colmap::InitializeGlog(argv); std::string message; colmap::OptionManager options; options.AddRequiredOption("message", &message); if (!options.Parse(argc, argv)) { return EXIT_FAILURE; } std::cout << colmap::StringPrintf("Hello %s!\n", message.c_str()); return EXIT_SUCCESS; } Then compile and run your code as:: mkdir build cd build export colmap_DIR=${CMAKE_INSTALL_PREFIX}/share/colmap cmake .. -GNinja ninja ./hello_world --message "world" The sources of this example are stored under ``doc/sample-project``. ---------------- Shared Libraries ---------------- By default, COLMAP builds static libraries. To build shared/dynamic libraries instead, enable the ``BUILD_SHARED_LIBS`` option:: cmake .. -GNinja -DBUILD_SHARED_LIBS=ON Trade-offs compared to static libraries: - **Faster incremental linking**: Only the changed shared library needs to be re-linked during development, rather than all executables. - **Reduced disk usage**: Multiple executables share the same library files on disk and in memory. - **No cross-library optimization**: The compiler cannot inline or apply link-time optimization (LTO/IPO) across shared library boundaries, which reduces runtime performance. - **Symbol resolution overhead**: The dynamic linker resolves symbols at load time, adding minor startup cost and indirect call overhead. For development workflows, shared libraries can significantly speed up edit-compile-test cycles. For production or benchmarking, static libraries are recommended. ---------------- AddressSanitizer ---------------- If you want to build COLMAP with address sanitizer flags enabled, you need to use a recent compiler with ASan support. For example, you can manually install a recent clang version on your Ubuntu machine and invoke CMake as follows:: CC=/usr/bin/clang CXX=/usr/bin/clang++ cmake .. \ -DASAN_ENABLED=ON \ -DTESTS_ENABLED=ON \ -DCMAKE_BUILD_TYPE=RelWithDebInfo Note that it is generally useful to combine ASan with debug symbols to get meaningful traces for reported issues. ------------- Documentation ------------- 1. Install latest pycolmap for up-to-date pycolmap API documentation. 2. Build the documentation:: cd path/to/colmap/doc pip install -r requirements.txt make html open _build/html/index.html # preview results Alternatively, you can build the documentation as PDF, EPUB, etc.:: make latexpdf open _build/pdf/COLMAP.pdf 3. Clone the website repository `colmap/colmap.github.io `__. 4. Copy the contents of the generated files at ``_build/html`` to the cloned repository root. 5. Create a pull request to the `colmap/colmap.github.io `__ repository with the updated files. 6. (Optional, if main release) Copy the previous release as legacy to the "legacy" folder, under a folder with the release number `see here `__. colmap-4.1.1/doc/legacy.rst000066400000000000000000000010751522646662000155470ustar00rootroot00000000000000Legacy Documentations ===================== .. toctree:: :maxdepth: 1 v4.0 (2026-03-15) v3.13 (2025-11-07) v3.12 (2025-06-30) v3.11 (2024-11-28) v3.10 (2024-07-23) v3.9 (2024-01-06) v3.8 (2023-01-31) colmap-4.1.1/doc/license.rst000066400000000000000000000036471522646662000157340ustar00rootroot00000000000000License ======= The COLMAP library is licensed under the new BSD license. Note that this text refers only to the license for COLMAP itself, independent of its thirdparty dependencies, which are separately licensed. Building COLMAP with these dependencies may affect the resulting COLMAP license. .. code-block:: text Copyright (c), ETH Zurich and UNC Chapel Hill. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. colmap-4.1.1/doc/make.bat000077500000000000000000000144731522646662000151670ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=_build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% . set I18NSPHINXOPTS=%SPHINXOPTS% . if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. texinfo to make Texinfo files echo. gettext to make PO message catalogs echo. changes to make an overview over all changed/added/deprecated items echo. xml to make Docutils-native XML files echo. pseudoxml to make pseudoxml-XML files for display purposes echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) %SPHINXBUILD% 2> nul if errorlevel 9009 ( echo. echo.The 'sphinx-build' command was not found. Make sure you have Sphinx echo.installed, then set the SPHINXBUILD environment variable to point echo.to the full path of the 'sphinx-build' executable. Alternatively you echo.may add the Sphinx directory to PATH. echo. echo.If you don't have Sphinx installed, grab it from echo.http://sphinx-doc.org/ exit /b 1 ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\COLMAP.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\COLMAP.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdf" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "latexpdfja" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex cd %BUILDDIR%/latex make all-pdf-ja cd %BUILDDIR%/.. echo. echo.Build finished; the PDF files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "texinfo" ( %SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo if errorlevel 1 exit /b 1 echo. echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo. goto end ) if "%1" == "gettext" ( %SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale if errorlevel 1 exit /b 1 echo. echo.Build finished. The message catalogs are in %BUILDDIR%/locale. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) if "%1" == "xml" ( %SPHINXBUILD% -b xml %ALLSPHINXOPTS% %BUILDDIR%/xml if errorlevel 1 exit /b 1 echo. echo.Build finished. The XML files are in %BUILDDIR%/xml. goto end ) if "%1" == "pseudoxml" ( %SPHINXBUILD% -b pseudoxml %ALLSPHINXOPTS% %BUILDDIR%/pseudoxml if errorlevel 1 exit /b 1 echo. echo.Build finished. The pseudo-XML files are in %BUILDDIR%/pseudoxml. goto end ) :end colmap-4.1.1/doc/pycolmap/000077500000000000000000000000001522646662000153725ustar00rootroot00000000000000colmap-4.1.1/doc/pycolmap/cost_functions.rst000066400000000000000000000002051522646662000211610ustar00rootroot00000000000000.. _pycolmap/cost_functions: Cost Functions ============== .. automodule:: pycolmap.cost_functions :members: :undoc-members: colmap-4.1.1/doc/pycolmap/index.rst000066400000000000000000000023051522646662000172330ustar00rootroot00000000000000.. _pycolmap/index: PyCOLMAP ======== PyCOLMAP exposes to Python most capabilities of COLMAP. Installation ------------ Pre-built wheels for Linux, macOS, and Windows can be installed using pip:: pip install pycolmap The wheels are automatically built and pushed to `PyPI `_ at each release. To benefit from GPU acceleration, wheels built for CUDA 12 (only for Linux - for now) are available under the `package pycolmap-cuda12 `_. To build PyCOLMAP from source, follow these steps: 1. Install COLMAP from source following :ref:`installation`. 2. Build PyCOLMAP: * On Linux and macOS:: python -m pip install . * On Windows, after installing COLMAP via VCPKG, run in powershell:: python -m pip install . ` --cmake.define.CMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" ` --cmake.define.VCPKG_TARGET_TRIPLET="x64-windows" Some features, such as cost functions, require that `PyCeres `_ is installed in the same manner as PyCOLMAP, so either from PyPI or from source. API ----- .. toctree:: :maxdepth: 2 pycolmap cost_functions colmap-4.1.1/doc/pycolmap/pycolmap.rst000066400000000000000000000001511522646662000177450ustar00rootroot00000000000000.. _pycolmap/pycolmap: pycolmap ============ .. automodule:: pycolmap :members: :undoc-members: colmap-4.1.1/doc/requirements.txt000066400000000000000000000000741522646662000170330ustar00rootroot00000000000000sphinx==9.1.0 sphinx-toolbox==4.1.2 sphinx-rtd-theme==3.1.0 colmap-4.1.1/doc/rigs.rst000066400000000000000000000221361522646662000152500ustar00rootroot00000000000000.. _rig-support: Rig Support =========== COLMAP has native support for modeling sensor rigs during the reconstruction process. The sensors in a rig are assumed to have fixed relative poses between each other with one reference sensor defining the origin of the rig. A frame defines a specific instance of the rig with all or a subset of sensors exposed at the same time. For example, in a stereo camera rig, one camera would be defined as the reference sensor and have an identity ``sensor_from_rig`` pose, whereas the second camera would be posed relative to the reference camera. Each frame would then usually be composed of two images as the measurements of both of the cameras at the same time. Workflow -------- By default, when running the standard reconstruction pipeline, each camera is modeled with a separate rig and thus each frame contains only a single image. To model rigs, the recommended workflow is to organize images by rigs and cameras in a folder structure as follows (ensure that images corresponding to the same frame have identical filenames across all folders):: rig1/ camera1/ image0001.jpg image0002.jpg ... camera2/ image0001.jpg # same frame as camera1/image0001.jpg image0002.jpg # same frame as camera1/image0002.jpg ... ... rig2/ camera1/ ... ... ... As a next step, we would first extract features using:: colmap feature_extractor \ --image_path $DATASET_PATH/images \ --database_path $DATASET_PATH/database.db \ --ImageReader.single_camera_per_folder 1 By default, the resulting database now contains a separate rig for each camera and a separate frame for each image. As such, we must adjust the relationships in the database with the desired rig configuration. This is done using:: colmap rig_configurator \ --database_path $DATASET_PATH/database.db \ --rig_config_path $DATASET_PATH/rig_config.json where the ``rig_config.json`` could look as follows, if the relative sensor poses in the rig are known a priori:: [ { "cameras": [ { "image_prefix": "rig1/camera1/", "ref_sensor": true }, { "image_prefix": "rig1/camera2/", "cam_from_rig_rotation": [ 0.7071067811865475, 0.0, 0.7071067811865476, 0.0 ], "cam_from_rig_translation": [ 0, 0, 0 ] } ] }, { "cameras": [ { "image_prefix": "rig2/camera1/", "ref_sensor": true }, ... ] }, ... ] Notice that this modifies the rig and frame configuration in the database, which contains the full specification of rigs that we later feed as an input to downstream processing steps. With known calibrated camera parameters, each camera can optionally also have specified ``camera_model_name`` and ``camera_params`` fields. For more fine-grain configuration of rigs and frames, the most convenient option is to manually configure the database using pycolmap by either using the ``apply_rig_config`` function or by individually adding the desired rig and frame objects to the reconstruction for the most flexibility. Next, we run standard feature matching. Note that it is important to configure the rigs before sequential feature matching, as images in consecutive frames will be automatically matched against each other. Finally, we can reconstruct the scene using the standard ``mapper`` command with the option of keeping the relative poses in the rig fixed using ``--Mapper.ba_refine_sensor_from_rig 0``. Unknown rig sensor poses ------------------------ If the relative poses of sensors in the rig are not known a priori and we only know that a specific set of sensors are rigidly mounted and exposed at the same time, one can attempt the following two-step reconstruction approach. Before starting, ensure to organize your images as detailed above and perform feature extraction with the ``--ImageReader.single_camera_per_folder 1`` option. Next, reconstruct the scene without rig constraints by modeling each camera as its own rig (the default behavior of COLMAP without further configuration). Note that this can be a partial reconstruction from a subset of the full set of input images. The only requirement is that each camera must have at least one registered image in the same frame with a registered image of the reference camera. If the reconstruction was successful and the relative poses between registered images look roughly correct, we can proceed with the next step. The ``rig_configurator`` can also work without ``cam_from_rig_*`` transformations. By providing an existing (partial) reconstruction of the scene, it can compute the average relative rig sensor poses from all registered images:: colmap rig_configurator \ --database_path $DATASET_PATH/database.db \ --input_path $DATASET_PATH/sparse-model-without-rigs-and-frames \ --rig_config_path $DATASET_PATH/rig_config.json \ [ --output_path $DATASET_PATH/sparse-model-with-rigs-and-frames ] The provided ``rig_config.json`` must simply omit the respective ``cam_from_rig_rotation`` and ``cam_from_rig_translation`` fields. Now, we can either run rig bundle adjustment on the (optional) output reconstruction with configured rigs and frames:: colmap bundle_adjuster \ --input_path $DATASET_PATH/sparse-model-with-rigs-and-frames \ --output_path $DATASET_PATH/bundled-sparse-model-with-rigs-and-frames or alternatively start the reconstruction process from scratch with rig constraints, which may lead to more accurate reconstruction results:: colmap mapper --image_path $DATASET_PATH/images \ --database_path $DATASET_PATH/database.db \ --output_path $DATASET_PATH/sparse-model-with-rigs-and-frames Example ------- The following example shows an end-to-end example for how to reconstruct one of the ETH3D rig datasets using COLMAP's rig support:: wget https://www.eth3d.net/data/terrains_rig_undistorted.7z 7zz x terrains_rig_undistorted.7z colmap feature_extractor \ --database_path terrains/database.db \ --image_path terrains/images \ --ImageReader.single_camera_per_folder 1 The ETH3D dataset conveniently comes with a groundtruth COLMAP reconstruction that we use to configure the sensor rig poses as well as camera models using:: colmap rig_configurator \ --database_path terrains/database.db \ --rig_config_path terrains/rig_config.json \ --input_path terrains/rig_calibration_undistorted with the ``rig_config.json``:: [ { "cameras": [ { "image_prefix": "images_rig_cam4_undistorted/", "ref_sensor": true }, { "image_prefix": "images_rig_cam5_undistorted/" }, { "image_prefix": "images_rig_cam6_undistorted/" }, { "image_prefix": "images_rig_cam7_undistorted/" } ] } ] Notice that we do not specify the sensor poses, because we used an existing reconstruction (in this case, the groundtruth but it can also be a reconstruction without rig constraints, as explained in the previous section) to automatically infer the average rig extrinsics and camera parameters. Next, we sequentially match the frames, since they were captured as a video:: colmap sequential_matcher --database_path terrains/database.db Depending on the accuracy of the provided sensor_from_rig poses, you can optionally enable the option `--FeatureMatching.rig_verification 1` or, if you know that the sensors within the same frame do not have visual overlap, you can enable the option `--FeatureMatching.skip_image_pairs_in_same_frame 1`. Finally, we reconstruct the scene using the mapper while keeping the groundtruth sensor rig poses and camera parameters fixed:: mkdir -p terrains/sparse colmap mapper \ --database_path terrains/database.db \ --Mapper.ba_refine_sensor_from_rig 0 \ --Mapper.ba_refine_focal_length 0 \ --Mapper.ba_refine_extra_params 0 \ --image_path terrains/images \ --output_path terrains/sparse Reconstruction from 360° spherical images ----------------------------------------- COLMAP can handle collections of 360° panoramas by rendering virtual pinhole images (similar to a cubemap) and treating them as a camera rig. Since the rig extrinsics and camera intrinsics are known, the reconstruction process is more robust. We provide an example Python script to reconstruct a 360° collection:: python python/examples/panorama_sfm.py \ --input_image_path image_directory \ --output_path output_directory Make sure to use the version of the script that corresponds to the version of COLMAP that you are using, as the script at HEAD is not guaranteed to be compatible. colmap-4.1.1/doc/sample-project/000077500000000000000000000000001522646662000164735ustar00rootroot00000000000000colmap-4.1.1/doc/sample-project/CMakeLists.txt000066400000000000000000000004001522646662000212250ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.10) project(SampleProject) find_package(colmap REQUIRED) # or to require a specific version: find_package(colmap 3.4 REQUIRED) add_executable(hello_world hello_world.cc) target_link_libraries(hello_world colmap::colmap) colmap-4.1.1/doc/sample-project/hello_world.cc000066400000000000000000000007061522646662000213170ustar00rootroot00000000000000#include #include #include #include int main(int argc, char** argv) { colmap::InitializeGlog(argv); std::string message; colmap::OptionManager options; options.AddRequiredOption("message", &message); if (!options.Parse(argc, argv)) { return EXIT_FAILURE; } std::cout << colmap::StringPrintf("Hello %s!\n", message.c_str()); return EXIT_SUCCESS; } colmap-4.1.1/doc/tutorial.rst000077500000000000000000000722471522646662000161620ustar00rootroot00000000000000.. _tutorial: Tutorial ======== This tutorial covers the topic of image-based 3D reconstruction by demonstrating the individual processing steps in COLMAP. If you are interested in a more general and mathematical introduction to the topic of image-based 3D reconstruction, please also refer to the `CVPR 2017 Tutorial on Large-scale 3D Modeling from Crowdsourced Data `_ and [schoenberger_thesis]_. Image-based 3D reconstruction from images traditionally first recovers a sparse representation of the scene and the camera poses of the input images using Structure-from-Motion. This output then serves as the input to Multi-View Stereo to recover a dense representation of the scene. .. contents:: Contents :local: :depth: 1 .. _quick-start: Quickstart ---------- First, start the graphical user interface of COLMAP, as described :ref:`here `. COLMAP provides an automatic reconstruction tool that simply takes a folder of input images and produces a sparse and dense reconstruction in a workspace folder. Click ``Reconstruction > Automatic Reconstruction`` in the GUI and specify the relevant options. The output is written to the workspace folder. For example, if your images are located in ``path/to/project/images``, you could select ``path/to/project`` as a workspace folder and after running the automatic reconstruction tool, the folder would look similar to this:: +── images │ +── image1.jpg │ +── image2.jpg │ +── ... +── sparse │ +── 0 │ │ +── rigs.bin │ │ +── cameras.bin │ │ +── frames.bin │ │ +── images.bin │ │ +── points3D.bin │ +── ... +── dense │ +── 0 │ │ +── images │ │ +── sparse │ │ +── stereo │ │ +── fused.ply │ │ +── meshed-poisson.ply │ │ +── meshed-delaunay.ply │ │ +── meshed-advancing-front.ply │ +── ... +── database.db Here, the ``path/to/project/sparse`` contains the sparse models for all reconstructed components, while ``path/to/project/dense`` contains their corresponding dense models. The dense point cloud ``fused.ply`` can be imported in COLMAP using ``File > Import from ...``, while the dense mesh must be visualized with an external viewer such as Meshlab. The same automatic reconstruction can be run from the command-line, without the GUI, using the ``automatic_reconstructor`` command, which produces the identical workspace layout shown above:: colmap automatic_reconstructor \\ --workspace_path path/to/project \\ --image_path path/to/project/images The following sections give general recommendations and describe the reconstruction process in more detail, if you need more control over the reconstruction process/parameters or if you are interested in the underlying technology in COLMAP. Preface ------- COLMAP requires only a few steps to perform a standard reconstruction for a general user. For more experienced users, the program exposes many different parameters, only some of which are intuitive to a beginner. The program should usually work without the need to modify any parameters. The defaults are chosen as a trade- off between reconstruction robustness/quality and speed. You can set "optimal" options for different reconstruction scenarios by choosing ``Extras > Set options for ... data``. If in doubt what settings to choose, stick to the defaults. The source code contains more documentation about all parameters. COLMAP is research software, and in rare cases it may exit ungracefully if some constraints are not fulfilled. In this case, the program prints a traceback to stderr. To see this traceback or more debug information, it is recommended to run the executables (including the GUI) from the command-line, where you can also define various levels of logging verbosity. Structure-from-Motion --------------------- .. figure:: images/incremental-sfm.png :alt: Incremental Structure-from-Motion pipeline :figclass: align-center COLMAP's incremental Structure-from-Motion pipeline. Structure-from-Motion (SfM) is the process of reconstructing 3D structure from its projections into a series of images. The input is a set of overlapping images of the same object, taken from different viewpoints. The output is a 3-D reconstruction of the object, and the reconstructed intrinsic and extrinsic camera parameters of all images. Typically, Structure-from-Motion systems divide this process into three stages: 1) Feature detection and extraction 2) Feature matching and geometric verification 3) Structure and motion reconstruction COLMAP reflects these stages in different modules that can be combined depending on the application. More information on Structure-from-Motion in general and the algorithms in COLMAP can be found in [schoenberger16sfm]_ and [schoenberger16mvs]_. If you have control over the picture capture process, please follow these guidelines for optimal reconstruction results: - Capture images with **good texture**. Avoid completely texture-less images (e.g., a white wall or empty desk). If the scene does not contain enough texture itself, you could place additional background objects, such as posters, etc. - Capture images at **similar illumination** conditions. Avoid high dynamic range scenes (e.g., pictures against the sun with shadows or pictures through doors/windows). Avoid specularities on shiny surfaces. - Capture images with **high visual overlap**. Make sure that each object is seen in at least 3 images -- the more images the better. - Capture images from **different viewpoints**. Do not take images from the same location by only rotating the camera, e.g., make a few steps after each shot. At the same time, try to have enough images from a relatively similar viewpoint. Note that more images are not necessarily better and might lead to a slow reconstruction process. If you use a video as input, consider down-sampling the frame rate. Multi-View Stereo ----------------- Multi-View Stereo (MVS) takes the output of SfM to compute depth and/or normal information for every pixel in an image. Fusion of the depth and normal maps of multiple images in 3D then produces a dense point cloud of the scene. Using the depth and normal information of the fused point cloud, algorithms such as the (screened) Poisson surface reconstruction [kazhdan2013]_ or the advancing front surface reconstruction [cohen-steiner2004]_ can then recover the 3D surface geometry of the scene. The resulting meshes can optionally be simplified using Quadric Error Metric (QEM) decimation [garland1997]_ to reduce their complexity while preserving shape and appearance. Additionally, the meshes can be textured using multi-view texture mapping [waechter2014]_, which assigns each face to the best-view camera image and produces a texture atlas with UV coordinates. More information on Multi-View Stereo in general and the algorithms in COLMAP can be found in [schoenberger16mvs]_. Terminology ----------- The term **camera** refers to a physical camera using the same zoom factor and lens. A camera defines the intrinsic projection model in COLMAP. A single camera can take multiple images with the same resolution, intrinsic parameters, and distortion characteristics. The term **image** is associated with a bitmap file, e.g., a JPEG or PNG file on disk. COLMAP detects **keypoints** in each image whose appearance is described by numerical **descriptors**. Pure appearance-based correspondences between keypoints/descriptors are defined by **matches**, while **inlier matches** are geometrically verified and used for the reconstruction procedure. The term **rig** describes a fixed assembly of one or more cameras whose relative poses are constant over time, e.g., a stereo or multi-camera setup, or a single moving camera (a trivial rig with one camera). The term **frame** denotes a single snapshot in time, i.e., the set of images captured simultaneously by all cameras of a rig. A frame therefore groups images that share the same rig pose, and COLMAP optimizes one pose per frame rather than one pose per image. Rigs and frames are stored as ``rigs.bin`` and ``frames.bin`` in the reconstruction output (see :ref:`Rig Support ` and :ref:`Output Format `). Data Structure -------------- COLMAP assumes that all input images are in one input directory with potentially nested sub-directories. It recursively considers all images stored in this directory, and it supports various image formats through OpenImageIO. Other files are automatically ignored. If high performance is a requirement, then you should separate any files that are not images. Images are identified uniquely by their relative file path. For later processing, such as image undistortion or dense reconstruction, the relative folder structure should be preserved. COLMAP does not modify the input images or directory and all extracted data is stored in a single, self-contained SQLite database file (see :doc:`database`). The first step is to start the graphical user interface of COLMAP by running the pre-built binaries (Windows: ``COLMAP.bat``, Mac: ``COLMAP.app``) or by executing ``./src/colmap/exe/colmap gui`` from the CMake build folder. Next, create a new project by choosing ``File > New project``. In this dialog, you must select where to store the database and the folder that contains the input images. For convenience, you can save the entire project settings to a configuration file by choosing ``File > Save project``. The project configuration stores the absolute path information of the database and image folder in addition to any other parameter settings. If you decide to move the database or image folder, you must change the paths accordingly by creating a new project. Alternatively, the resulting ``.ini`` configuration file can be directly modified in a text editor of your choice. To reopen an existing project, you can simply open the configuration file by choosing ``File > Open project`` and all parameter settings should be recovered. Note that all COLMAP executables can be started from the command-line by either specifying individual settings as command-line arguments or by providing the path to the project configuration file (see :ref:`Interface `). An example folder structure could look like this:: /path/to/project/... +── images │   +── image1.jpg │   +── image2.jpg │   +── ... │   +── imageN.jpg +── database.db +── project.ini In this example, you would select ``/path/to/project/images`` as the image folder path, ``/path/to/project/database.db`` as the database file path, and save the project configuration to ``/path/to/project/project.ini``. Feature Detection and Extraction -------------------------------- In the first step, feature detection/extraction finds sparse feature points in the image and describes their appearance using a numerical descriptor. COLMAP imports images and performs feature detection/extraction in a single step, so that each image is loaded from disk only once. Next, choose ``Processing > Extract features``. In this dialog, you must first decide on the intrinsic camera model to use. You can either automatically extract focal length information from the embedded EXIF information or manually specify intrinsic parameters, e.g., as obtained in a lab calibration. If an image has partial EXIF information, COLMAP tries to find the missing camera specifications in a large database of camera models automatically. If all your images were captured by the same physical camera with identical zoom factor, it is recommended to share intrinsics between all images. Note that the program will exit ungracefully if the same camera model is shared among all images but not all images have the same size or EXIF focal length. If you have several groups of images that share the same intrinsic camera parameters, you can easily modify the camera models at a later point as well (see :ref:`Database Management `). If in doubt what to choose in this step, simply stick to the default parameters. You can either detect and extract new features from the images or import existing features from text files. By default, COLMAP extracts SIFT [lowe04]_ features either on the GPU or the CPU. When COLMAP is built with CUDA support (recommended), GPU feature extraction runs without an attached display and is suitable for headless servers. The OpenGL-based fallback (used when CUDA is not available) instead requires an attached display, so on such systems the CPU version is recommended for use on a server. In general, the GPU version is favorable, as it has a customized feature detection mode that often produces higher-quality features for high-contrast images. COLMAP also supports ALIKED feature extraction, a learned feature extractor using ONNX models, which can be selected via the ``--FeatureExtraction.type`` option (see :ref:`Feature Extraction and Matching ` for details). If you import existing features, every image must have a text file next to it (e.g., ``/path/to/image1.jpg`` and ``/path/to/image1.jpg.txt``) in the following format:: NUM_FEATURES 128 X Y SCALE ORIENTATION D_1 D_2 D_3 ... D_128 ... X Y SCALE ORIENTATION D_1 D_2 D_3 ... D_128 where ``X, Y, SCALE, ORIENTATION`` are floating point numbers and ``D_1...D_128`` values in the range ``0...255``. The file should have ``NUM_FEATURES`` lines with one line per feature. For example, if an image has 4 features, then the text file should look something like this:: 4 128 1.2 2.3 0.1 0.3 1 2 3 4 ... 21 2.2 3.3 1.1 0.3 3 2 3 2 ... 32 0.2 1.3 1.1 0.3 3 2 3 2 ... 2 1.2 2.3 1.1 0.3 3 2 3 2 ... 3 Note that by convention the upper left corner of an image has coordinate ``(0, 0)`` and the center of the upper left most pixel has coordinate ``(0.5, 0.5)``. If you must import features for large image collections, it is much more efficient to directly access the database with your favorite scripting language (see :ref:`Database Format `). If you are done setting all options, choose ``Extract`` and wait for the extraction to finish or cancel. If you cancel during the extraction process, the next time you start extracting images for the same project, COLMAP automatically continues where it left off. This also allows you to add images to an existing project/reconstruction. In this case, be sure to verify the camera parameters when using shared intrinsics. All extracted data will be stored in the database file and can be reviewed/managed in the database management tool (see :ref:`Database Management `) or, for experts, directly modified using SQLite (see :ref:`Database Format `). Feature Matching and Geometric Verification ------------------------------------------- In the second step, feature matching and geometric verification finds correspondences between the feature points in different images. Please choose ``Processing > Feature matching`` and select one of the provided matching modes, which are intended for different input scenarios: - **Exhaustive Matching**: If the number of images in your dataset is relatively low (up to several hundreds), this matching mode should be fast enough and lead to the best reconstruction results. Here, every image is matched against every other image, while the block size determines how many images are loaded from disk into memory at the same time. - **Sequential Matching**: This mode is useful if the images are acquired in sequential order, e.g., by a video camera. In this case, consecutive frames have visual overlap and there is no need to match all image pairs exhaustively. Instead, consecutively captured images are matched against each other. This matching mode has built-in loop detection based on a vocabulary tree, where every N-th image (``--SequentialMatching.loop_detection_period``) is matched against its visually most similar images (``--SequentialMatching.loop_detection_num_images``). Note that image file names must be ordered sequentially (e.g., ``image0001.jpg``, ``image0002.jpg``, etc.). The order in the database is not relevant, since the images are explicitly ordered according to their file names. Note that loop detection requires a pre-trained vocabulary tree. A default tree will be automatically downloaded and cached. More trees are available and can be downloaded from https://demuc.de/colmap/. In case rigs and frames are configured appropriately in the database, sequential matching will automatically match all images in consecutive frames against each other. - **Vocabulary Tree Matching**: In this matching mode [schoenberger16vote]_, every image is matched against its visual nearest neighbors using a vocabulary tree with spatial re-ranking. This is the recommended matching mode for large image collections (several thousands). This requires a pre-trained vocabulary tree, that can be downloaded from https://demuc.de/colmap/. - **Spatial Matching**: This matching mode matches every image against its spatial nearest neighbors. Spatial locations can be manually set in the database management. By default, COLMAP also extracts GPS information from EXIF and uses it for spatial nearest neighbor search. If accurate prior location information is available, this is the recommended matching mode. - **Transitive Matching**: This matching mode uses the transitive relations of already existing feature matches to produce a more complete matching graph. If an image A matches to an image B and B matches to C, then this matcher attempts to match A to C directly. - **Custom Matching**: This mode allows you to specify individual image pairs for matching or to import individual feature matches. To specify image pairs, you have to provide a text file with one image pair per line:: image1.jpg image2.jpg image1.jpg image3.jpg ... where ``image1.jpg`` is the relative path in the image folder. You have two options for importing individual feature matches: either raw feature matches, which are not geometrically verified, or already geometrically verified feature matches. In both cases, the expected format is:: image1.jpg image2.jpg 0 1 1 2 3 4 image1.jpg image3.jpg 0 1 1 2 3 4 4 5 ... where ``image1.jpg`` is the relative path in the image folder and the pairs of numbers are zero-based feature indices in the respective images. If you must import many matches for large image collections, it is more efficient to directly access the database with a scripting language of your choice. If you are done setting all options, choose ``Match`` and wait for the matching to finish or cancel in between. Note that this step can take a significant amount of time depending on the number of images, the number of features per image, and the chosen matching mode. Expected times for exhaustive matching are from a few minutes for tens of images to a few hours for hundreds of images to days or weeks for thousands of images. Exhaustive matching scales quadratically with the number of images and quickly becomes impractical for large collections; for thousands of images or more, use vocabulary tree or sequential matching instead, which are dramatically faster. If you cancel the matching process or import new images after matching, COLMAP only matches image pairs that have not been matched previously. The overhead of skipping already matched image pairs is low. This also makes it possible to match additional images imported after an initial matching, and to combine different matching modes for the same dataset. All extracted data will be stored in the database file and can be reviewed/managed in the database management tool (see :ref:`Database Management `) or, for experts, directly modified using SQLite (see :ref:`Database Format `). Note that SIFT feature matching can use a GPU for acceleration, and the display performance of your computer might degrade significantly during the matching process. If your system has multiple CUDA-enabled GPUs, you can select specific GPUs with the ``--FeatureMatching.gpu_index`` option. Feature matching can also be performed on the CPU by setting ``--FeatureMatching.use_gpu 0``, although this will be significantly slower for large datasets. Sparse Reconstruction --------------------- After producing the scene graph in the previous two steps, you can start the incremental reconstruction process by choosing ``Reconstruction > Start``. COLMAP first loads all extracted data from the database into memory and seeds the reconstruction from an initial image pair. Then, the scene is incrementally extended by registering new images and triangulating new points. The results are visualized in "real-time" during this reconstruction process. Refer to the :ref:`Graphical User Interface ` section for more details about the available controls. COLMAP attempts to reconstruct multiple models if not all images are registered into the same model. The different models can be selected from the drop-down menu in the toolbar. If the different models have common registered images, you can use the ``model_merger`` executable to merge them into a single reconstruction (see :ref:`FAQ ` for details). Ideally, the reconstruction works fine and all images are registered. If this is not the case, it is recommended to: - Perform additional matching. For best results, use exhaustive matching, enable guided matching, increase the number of nearest neighbors in vocabulary tree matching, or increase the overlap in sequential matching, etc. - Manually choose an initial image pair, if COLMAP fails to initialize. Choose ``Reconstruction > Reconstruction options > Init`` and set images from the database management tool that have enough matches from different viewpoints. Importing and Exporting ----------------------- COLMAP provides several export options for further processing. For full flexibility, it is recommended to export the reconstruction in COLMAP's data format by choosing ``File > Export model`` to export the currently viewed model or ``File > Export all models`` to export all reconstructed models. The model is exported in the selected folder using separate text files for the reconstructed cameras, images, and points. When exporting in COLMAP's data format, you can re-import the reconstruction for later visualization, image undistortion, or to continue an existing reconstruction from where it left off (e.g., after importing and matching new images). To import a model, choose ``File > Import model`` and select the export folder path. Alternatively, you can export the model in various other formats, such as Bundler, VisualSfM [#f1]_, PLY, or VRML by choosing ``File > Export model as...``. COLMAP can visualize plain PLY point cloud files with RGB information by choosing ``File > Import from ...``. Further information about the format of the exported models can be found :ref:`here `. .. _dense-reconstruction: Dense Reconstruction -------------------- After reconstructing a sparse representation of the scene and the camera poses of the input images, MVS can now recover denser scene geometry. COLMAP has an integrated dense reconstruction pipeline to produce depth and normal maps for all registered images, to fuse the depth and normal maps into a dense point cloud with normal information, and to finally estimate a dense surface from the fused point cloud using Poisson [kazhdan2013]_ or Delaunay reconstruction. Optionally, the resulting meshes can be simplified using the ``mesh_simplifier`` command to reduce the number of faces while preserving the overall shape. The meshes can also be textured using the ``mesh_texturer`` command, which produces a texture atlas and per-face UV coordinates from the undistorted images. To get started, import your sparse 3D model into COLMAP (or select the reconstructed model after finishing the previous sparse reconstruction steps). Then, choose ``Reconstruction > Multi-view stereo`` and select an empty or existing workspace folder, which is used for the output of all dense reconstruction results. The first step is to ``undistort`` the images, second to compute the depth and normal maps using ``stereo``, third to ``fuse`` the depth and normal maps into a point cloud, followed by a final, optional point cloud ``meshing`` step. These steps are also available from the command-line as the ``image_undistorter``, ``patch_match_stereo``, ``stereo_fusion``, and ``poisson_mesher`` / ``delaunay_mesher`` commands, respectively. During the stereo reconstruction process, the display might freeze due to heavy compute load and, if your GPU does not have enough memory, the reconstruction process might crash ungracefully. Please refer to the FAQ (:ref:`freeze ` and :ref:`memory `) for information on how to avoid these problems. Note that the reconstructed normals of the point cloud cannot be visualized directly in COLMAP, but can be viewed in external tools such as Meshlab by enabling ``Render > Show Normal/Curvature``. Similarly, the reconstructed dense surface mesh model must be visualized with external software. In addition to the internal dense reconstruction functionality, COLMAP can export to several other dense reconstruction libraries, such as CMVS/PMVS [furukawa10]_ or CMP-MVS [jancosek11]_. Please choose ``Extras > Undistort images`` and select the appropriate format. The output folders contain the reconstruction and the undistorted images. In addition, the folders contain sample shell scripts to perform the dense reconstruction. To run PMVS2, execute the following command:: ./path/to/pmvs2 /path/to/undistortion/folder/pmvs/ option-all where ``/path/to/undistortion/folder`` is the folder selected in the undistortion dialog. Make sure not to forget the trailing slash in ``/path/to/undistortion/folder/pmvs/`` in the above command-line arguments. For large datasets, you probably want to first run CMVS to cluster the scene into more manageable parts and then run COLMAP or PMVS2. Please refer to the sample shell scripts in the undistortion output folder on how to run CMVS in combination with COLMAP or PMVS2. Moreover, there are a number of external libraries that support COLMAP's output: - `CMVS/PMVS `_ [furukawa10]_ - `CMP-MVS `_ [jancosek11]_ - `Line3D++ `_ [hofer16]_. .. _database-management: Database Management ------------------- You can review and manage the imported cameras, images, and feature matches in the database management tool. Choose ``Processing > Manage database``. In the opening dialog, you can see the list of imported images and cameras. You can view the features and matches for each image by clicking ``Show image`` and ``Overlapping images``. Individual entries in the database tables can be modified by double-clicking specific cells. Note that any changes to the database are only effective after clicking ``Save``. To share intrinsic camera parameters between arbitrary groups of images, select one or more images, choose ``Set camera`` and set the ``camera_id``, which corresponds to the unique ``camera_id`` column in the cameras table. You can also add new cameras with specific parameters. By setting the ``prior_focal_length`` flag to 0 or 1, you can give a hint whether the reconstruction algorithm should trust the focal length value. In case of a prior lab calibration, you should set this value to 1. Without prior knowledge about the focal length, it is recommended to set this value to ``1.25 * max(width_in_px, height_in_px)``. The database management tool has only limited functionality and, for full control over the data, you must directly modify the SQLite database (see :ref:`Database Format `). By accessing the database directly, you can use COLMAP only for feature extraction and matching, or you can import your own features and matches and use COLMAP solely for its incremental reconstruction algorithm. .. _interface: Graphical and Command-line Interface ------------------------------------ Most of COLMAP's features are accessible from both the graphical and the command-line interface, which are both embedded in the same executable. You can provide the options directly as command-line arguments or you can provide a ``.ini`` project configuration file containing the options using the ``--project_path path/to/project.ini`` argument. To start the GUI application, please execute ``colmap gui`` or directly specify a project configuration as ``colmap gui --project_path path/to/project.ini`` to avoid tedious selection in the GUI. To list the different commands available from the command-line, execute ``colmap help``. For example, to run feature extraction from the command-line, you must execute ``colmap feature_extractor``. The :ref:`graphical user interface ` and :ref:`command-line interface ` sections provide more details about the available commands. .. rubric:: Footnotes .. [#f1] VisualSfM's [wu13]_ projection model applies the distortion to the measurements and COLMAP to the projection, hence the exported NVM file is not fully compatible with VisualSfM. colmap-4.1.1/docker/000077500000000000000000000000001522646662000142505ustar00rootroot00000000000000colmap-4.1.1/docker/Dockerfile000066400000000000000000000066401522646662000162500ustar00rootroot00000000000000# syntax=docker/dockerfile:1 ARG UBUNTU_VERSION=24.04 ARG NVIDIA_CUDA_VERSION=12.9.1 # # Docker builder stage. # FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-devel-ubuntu${UBUNTU_VERSION} AS builder ARG CUDA_ARCHITECTURES=all-major ENV QT_XCB_GL_INTEGRATION=xcb_egl ARG FETCHCONTENT_FULLY_DISCONNECTED=OFF ENV CCACHE_DIR=/colmap/build/.ccache ENV CCACHE_BASEDIR=/colmap # Prevent stop building ubuntu at time zone selection. ENV DEBIAN_FRONTEND=noninteractive # Prepare and empty machine for building. RUN apt-get update && \ apt-get install -y \ ccache \ cmake \ ninja-build \ build-essential \ libboost-program-options-dev \ libboost-graph-dev \ libboost-system-dev \ libeigen3-dev \ libopenimageio-dev \ openimageio-tools \ libmetis-dev \ libgoogle-glog-dev \ libgtest-dev \ libgmock-dev \ libsqlite3-dev \ libglew-dev \ qt6-base-dev \ libqt6opengl6-dev \ libqt6openglwidgets6 \ qt6-svg-dev \ libcgal-dev \ libceres-dev \ libcurl4-openssl-dev \ libssl-dev \ libmkl-full-dev # Fix issue in Ubuntu's openimageio CMake config. # We don't depend on any of openimageio's OpenCV functionality, # but it still requires the OpenCV include directory to exist. RUN mkdir -p /usr/include/opencv4 # Copy source into the image. COPY . /colmap # Build and install COLMAP. RUN cd /colmap && \ mkdir -p build/.ccache && \ cd build && \ cmake .. \ -GNinja \ -DCMAKE_CUDA_ARCHITECTURES=${CUDA_ARCHITECTURES} \ -DCMAKE_INSTALL_PREFIX=/colmap-install \ -DFETCHCONTENT_FULLY_DISCONNECTED=${FETCHCONTENT_FULLY_DISCONNECTED} \ -DBLA_VENDOR=Intel10_64lp && \ ninja install # # Stage to export build caches for CI round-tripping via actions/cache. # FROM scratch AS cache-export COPY --from=builder /colmap/build/.ccache/ /.ccache/ COPY --from=builder /colmap/build/_deps/ /_deps/ # # Docker runtime stage. # FROM nvidia/cuda:${NVIDIA_CUDA_VERSION}-runtime-ubuntu${UBUNTU_VERSION} AS runtime # Minimal dependencies to run COLMAP binary compiled in the builder stage. # Note: this reduces the size of the final image considerably, since all the # build dependencies are not needed. RUN apt-get update && \ apt-get install -y --no-install-recommends --no-install-suggests \ libboost-program-options1.83.0 \ libc6 \ libomp5 \ libopengl0 \ libmetis5 \ libceres4t64 \ libopenimageio2.4t64 \ libgcc-s1 \ libgl1 \ libglew2.2 \ libgoogle-glog0v6t64 \ libqt6core6 \ libqt6gui6 \ libqt6widgets6 \ libqt6openglwidgets6 \ libqt6svg6 \ libcurl4 \ libssl3t64 \ libmkl-locale \ libmkl-intel-lp64 \ libmkl-intel-thread \ libmkl-core && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # Copy all files from /colmap-install/ in the builder stage to /usr/local/ in # the runtime stage. This simulates installing COLMAP in the default location # (/usr/local/), which simplifies environment variables. It also allows the user # of this Docker image to use it as a base image for compiling against COLMAP as # a library. For instance, CMake will be able to find COLMAP easily with the # command: find_package(COLMAP REQUIRED). COPY --from=builder /colmap-install/ /usr/local/ colmap-4.1.1/docker/README.md000066400000000000000000000026571522646662000155410ustar00rootroot00000000000000# How to build COLMAP using Docker ## Requirements - Host machine with at least one NVIDIA GPU/CUDA support and installed drivers (to support dense reconstruction). - Docker (for CUDA support 19.03+). ## Quick Start 1. Check that Docker >=19.03 installed on your host machine: ```bash docker --version ``` 2. Setup the NVIDIA driver and nvidia-toolkit on your host machine: For Ubuntu host machines: `./setup-ubuntu.sh` For CentOS host machines: `./setup-centos.sh` 3. Run the *run* script, using the *full local path* to your preferred local working directory (a folder with your input files/images, etc.): ```bash ./run.sh /path/where/your/working/folder/is ``` This will put you in a directory (inside the Docker container) mounted to the local path you specified. Now you can run COLMAP binaries on your own inputs like this: ```bash colmap automatic_reconstructor --image_path ./images --workspace_path . ``` Alternatively, you can run the *run-gui* script, which will start the graphical user interface of COLMAP: ```bash ./run-gui.sh /path/where/your/working/folder/is ``` ## Build from Scratch After completing steps 1-2, you can build the Docker image from scratch using the **Dockerfile**. First, update the CUDA and Ubuntu versions in Dockerfile lines 1-2 to match your system, then: ```bash ./build.sh ./run.sh /path/where/your/working/folder/is ``` colmap-4.1.1/docker/build.sh000077500000000000000000000006331522646662000157100ustar00rootroot00000000000000#!/bin/bash # Build COLMAP Docker image from the repository root. SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" docker build "$REPO_ROOT" \ -f "$REPO_ROOT/docker/Dockerfile" \ -t colmap:latest # In some cases, you may have to explicitly specify the compute architecture: # docker build . -f docker/Dockerfile -t colmap:latest --build-arg CUDA_ARCHITECTURES=75 colmap-4.1.1/docker/run-gui.sh000077500000000000000000000055011522646662000161760ustar00rootroot00000000000000#!/bin/bash # # A robust script to run the COLMAP GUI inside a Docker container, # with automatic GPU detection and flexible argument passing. # --- Initial Checks --- # Exit immediately if a command exits with a non-zero status. set -e # --- Cleanup Function and Trap --- # This function will be called automatically when the script exits # to ensure that X server permissions are always restored. function cleanup { echo "Revoking X-server access..." # The '|| true' prevents the script from failing if xhost has issues. xhost -local:root > /dev/null || true } trap cleanup EXIT # Check if any argument is provided. if [ $# -eq 0 ]; then echo "Usage: $0 " echo "Example: $0 ../dataset/" exit 1 fi # --- Docker Image Selection --- # Check if local colmap:latest image exists (in case you ran build.sh), otherwise use official image if docker image inspect colmap:latest >/dev/null 2>&1; then echo "Using local COLMAP Docker image..." COLMAP_IMAGE="colmap:latest" else echo "Local COLMAP image not found, pulling official image..." docker pull colmap/colmap:latest COLMAP_IMAGE="colmap/colmap:latest" fi # Get absolute path HOST_DIR=$(realpath "$1") if [ ! -d "$HOST_DIR" ]; then echo "Error: Directory '$HOST_DIR' does not exist." exit 1 fi echo "Running COLMAP container with directory: $HOST_DIR" # --- Build Docker Arguments --- # Start with the base arguments for GUI forwarding. DOCKER_ARGS=( -it --rm --net=host -e DISPLAY -v "${HOST_DIR}:/working" -w /working ) # --- GPU Detection and Configuration --- echo "Testing for GPU acceleration..." # A successful `nvidia-smi` call is the most reliable test. if docker run --rm --runtime=nvidia "${COLMAP_IMAGE}" nvidia-smi >/dev/null 2>&1; then echo "✅ GPU detected. Using --runtime=nvidia and mapping all graphics devices." # Use the nvidia runtime AND also pass through the host's render devices. # This can solve driver conflicts on hybrid graphics systems. DOCKER_ARGS+=( --runtime=nvidia -e NVIDIA_DRIVER_CAPABILITIES=all ) if [ -d /dev/dri ]; then DOCKER_ARGS+=( --device=/dev/dri ) fi else echo "âš ï¸� GPU not detected. Falling back to CPU rendering." # For CPU mode, we give the container access to the host's render devices. if [ -d /dev/dri ]; then DOCKER_ARGS+=( --device=/dev/dri ) fi fi # --- X11 Forwarding Security --- # Grant permissions just before running the container. xhost +local:root > /dev/null # --- Execute the Container --- # Pass all arguments after the directory path ("${@:2}") to the colmap gui command. echo "Launching GUI..." # "${@:2}" accepts extra arguments for the COLMAP GUI. docker run "${DOCKER_ARGS[@]}" "${COLMAP_IMAGE}" colmap gui "${@:2}" # The `trap` will automatically call the `cleanup` function here, colmap-4.1.1/docker/run.sh000077500000000000000000000026521522646662000154200ustar00rootroot00000000000000#!/bin/bash # Check if any argument is provided. if [ $# -eq 0 ]; then echo "Usage: $0 " echo "Example: $0 ../dataset/" exit 1 fi # Check if local colmap:latest image exists (in case you ran build.sh), otherwise use official image if docker image inspect colmap:latest >/dev/null 2>&1; then echo "Using local COLMAP Docker image..." COLMAP_IMAGE="colmap:latest" else echo "Local COLMAP image not found, pulling official image..." docker pull colmap/colmap:latest COLMAP_IMAGE="colmap/colmap:latest" fi # Get absolute path HOST_DIR=$(realpath "$1") if [ ! -d "$HOST_DIR" ]; then echo "Error: Directory '$HOST_DIR' does not exist." exit 1 fi echo "Running COLMAP container with directory: $HOST_DIR" # --- Build Docker Arguments --- # Start with the base arguments. DOCKER_ARGS=( -it --rm -v "${HOST_DIR}:/working" -w /working ) # --- GPU Detection and Configuration --- echo "Testing for GPU acceleration..." # A successful `nvidia-smi` call is the most reliable test. if docker run --rm --runtime=nvidia "${COLMAP_IMAGE}" nvidia-smi >/dev/null 2>&1; then echo "✅ GPU detected. Using --runtime=nvidia." DOCKER_ARGS+=( --runtime=nvidia ) else echo "âš ï¸� GPU not detected. Using CPU mode." fi # --- Execute the Container --- # Always start an interactive bash shell. echo "Starting interactive bash shell..." docker run "${DOCKER_ARGS[@]}" "${COLMAP_IMAGE}" bashcolmap-4.1.1/docker/setup-centos.sh000077500000000000000000000006261522646662000172440ustar00rootroot00000000000000# Add the package repositories distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo # Install nvidia-container-toolkit sudo yum install -y nvidia-container-toolkit sudo systemctl restart docker # Check that it worked! docker run --gpus all nvidia/cuda:10.2-base nvidia-smi colmap-4.1.1/docker/setup-ubuntu.sh000077500000000000000000000102701522646662000172670ustar00rootroot00000000000000#!/bin/bash echo "🚀 Starting intelligent NVIDIA Docker setup..." echo "📦 Updating NVIDIA driver to latest..." sudo apt update sudo ubuntu-drivers autoinstall echo "🔄 Rebooting required after driver update. Run this script again after reboot." # Check if reboot is needed if [ -f /var/run/reboot-required ]; then echo "âš ï¸� System reboot required. Please reboot and run this script again." echo "After reboot, run: sudo reboot && ./setup-ubuntu.sh" exit 0 fi echo "ðŸ”� Detecting NVIDIA driver version..." DRIVER_VERSION=$(nvidia-smi --query-gpu=driver_version --format=csv,noheader,nounits | head -1) echo "Found NVIDIA driver: $DRIVER_VERSION" echo "ðŸ”� Determine compatible CUDA version based on driver..." get_compatible_cuda_version() { local driver_ver=$1 # Extract major version (e.g., 560 from 560.35.03) local major_ver=$(echo $driver_ver | cut -d'.' -f1) # NVIDIA Driver-CUDA Compatibility Matrix if [ $major_ver -ge 565 ]; then echo "12.9" # Driver 565+ supports CUDA 12.9 elif [ $major_ver -ge 560 ]; then echo "12.6" # Driver 560+ supports CUDA 12.6 (your current case) elif [ $major_ver -ge 555 ]; then echo "12.5" # Driver 555+ supports CUDA 12.5 elif [ $major_ver -ge 550 ]; then echo "12.4" # Driver 550+ supports CUDA 12.4 elif [ $major_ver -ge 535 ]; then echo "12.2" # Driver 535+ supports CUDA 12.2 elif [ $major_ver -ge 525 ]; then echo "12.0" # Driver 525+ supports CUDA 12.0 else echo "11.8" # Fallback to CUDA 11.8 fi } COMPATIBLE_CUDA=$(get_compatible_cuda_version $DRIVER_VERSION) echo "✅ Compatible CUDA version: $COMPATIBLE_CUDA" echo "📦 Installing latest nvidia-container-toolkit..." curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor --yes -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit echo "📦 Configure Docker" sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker echo "ðŸ”� Finding latest patch version for CUDA $COMPATIBLE_CUDA..." AVAILABLE_VERSIONS=$(curl -s "https://registry.hub.docker.com/v2/repositories/nvidia/cuda/tags/?page_size=100" | jq -r '.results[].name' | grep -E "^${COMPATIBLE_CUDA}\.[0-9]+-base-ubuntu24\.04$" | head -1) if [ -n "$AVAILABLE_VERSIONS" ]; then # Extract full version (e.g., "12.9.1" from "12.9.1-base-ubuntu24.04") FULL_CUDA_VERSION=$(echo "$AVAILABLE_VERSIONS" | cut -d'-' -f1) echo "✅ Found CUDA version: $FULL_CUDA_VERSION" else echo "â�Œ No CUDA $COMPATIBLE_CUDA images found for Ubuntu 24.04, trying Ubuntu 22.04..." AVAILABLE_VERSIONS=$(curl -s "https://registry.hub.docker.com/v2/repositories/nvidia/cuda/tags/?page_size=100" | jq -r '.results[].name' | grep -E "^${COMPATIBLE_CUDA}\.[0-9]+-base-ubuntu22\.04$" | head -1) if [ -n "$AVAILABLE_VERSIONS" ]; then FULL_CUDA_VERSION=$(echo "$AVAILABLE_VERSIONS" | cut -d'-' -f1) UBUNTU_VERSION="22.04" echo "✅ Found CUDA version: $FULL_CUDA_VERSION for Ubuntu 22.04" else echo "â�Œ No compatible CUDA images found" exit 1 fi fi echo "🧪 Testing with automatically detected compatible CUDA version: $COMPATIBLE_CUDA..." if docker run --rm --runtime=nvidia nvidia/cuda:${FULL_CUDA_VERSION}-base-ubuntu${UBUNTU_VERSION:-24.04} nvidia-smi; then echo "✅ GPU support working with CUDA $FULL_CUDA_VERSION!" # Update Dockerfile with compatible version if [ -f "Dockerfile" ]; then sed -i "s/ARG NVIDIA_CUDA_VERSION=.*/ARG NVIDIA_CUDA_VERSION=${FULL_CUDA_VERSION}/" Dockerfile if [ "${UBUNTU_VERSION:-24.04}" = "22.04" ]; then sed -i "s/ARG UBUNTU_VERSION=.*/ARG UBUNTU_VERSION=22.04/" Dockerfile fi echo "✅ Updated Dockerfile to use CUDA $FULL_CUDA_VERSION" fi else echo "â�Œ GPU test failed with CUDA $FULL_CUDA_VERSION" ficolmap-4.1.1/pyproject.toml000066400000000000000000000055171522646662000157250ustar00rootroot00000000000000[build-system] requires = [ "scikit-build-core>=0.3.3", "pybind11==3.0.2", "pybind11_stubgen @ git+https://github.com/sarlinpe/pybind11-stubgen@sarlinpe/fix-2025-08-20", "numpy", "ruff==0.15.7", "clang-format==22.1.1", ] build-backend = "scikit_build_core.build" [project] name = "pycolmap" # WARNING: This version must follow the MAJOR.MINOR.PATCH format. If only # MAJOR.MINOR is used, cibuildwheel will add a .dev0 patch version, which # results in releasing a pre-release version on PyPI. version = "4.1.1" description = "COLMAP bindings" readme = "python/README.md" authors = [ { name = "Johannes Schönberger", email = "jsch@demuc.de" }, { name = "Mihai Dusmanu", email = "mihai.dusmanu@gmail.com" }, { name = "Paul-Edouard Sarlin", email = "paul.edouard.sarlin@gmail.com" }, { name = "Shaohui Liu", email = "b1ueber2y@gmail.com" }, { name = "Philipp Lindenberger", email = "plindenbe@ethz.ch" }, ] license = {text = "BSD-3-Clause"} urls = {Repository = "https://github.com/colmap/colmap"} requires-python = ">=3.10" dependencies = ["numpy"] classifiers = [ "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3 :: Only", ] [tool.scikit-build] wheel.expand-macos-universal-tags = true cmake.source-dir = "python/" wheel.packages = ["python/pycolmap"] [tool.cibuildwheel] build = "cp3{10,11,12,13,14}-{macosx,manylinux,win}*" archs = ["auto64"] test-requires = "pytest>=8.0 mypy==1.19.1 enlighten==1.14.1" test-command = """\ python -c "import pycolmap; print(pycolmap.__version__)" && \ cd {project} && \ mypy --package pycolmap && \ mypy --install-types --non-interactive python benchmark && \ mypy src/pycolmap && \ pytest\ """ [tool.cibuildwheel.linux] before-all = "{project}/python/ci/install-colmap-almalinux.sh" [tool.cibuildwheel.macos] before-all = "{project}/python/ci/install-colmap-macos.sh" [tool.cibuildwheel.windows] before-all = "pwsh -File {project}/python/ci/install-colmap-windows.ps1" before-build = "pip install delvewheel" test-command = "pwsh -File {project}/python/ci/test-colmap-windows.ps1" # Skip mypy on source files for Python 3.10. There's a bug in numpy's type # annotations that was fixed in version 2.3.0, but numpy stopped shipping # wheels for Python 3.10 in 2.3.0. This causes mypy to fail. [[tool.cibuildwheel.overrides]] select = "cp310-{macosx,manylinux}*" test-command = """\ python -c "import pycolmap; print(pycolmap.__version__)" && \ cd {project} && \ mypy --package pycolmap && \ mypy src/pycolmap && \ pytest\ """ [tool.pytest.ini_options] minversion = "8.0" addopts = ["-ra", "-q", "--import-mode=importlib"] testpaths = [ "python", "benchmark", "src/pycolmap", ] norecursedirs = [ "build", "python/build", ] [tool.mypy] implicit_optional = true ignore_missing_imports = true explicit_package_bases = true colmap-4.1.1/python/000077500000000000000000000000001522646662000143225ustar00rootroot00000000000000colmap-4.1.1/python/.gitignore000066400000000000000000000000341522646662000163070ustar00rootroot00000000000000*.egg-info/ build/ example/ colmap-4.1.1/python/CMakeLists.txt000066400000000000000000000123421522646662000170640ustar00rootroot00000000000000cmake_minimum_required(VERSION 3.10) project(${SKBUILD_PROJECT_NAME} VERSION ${SKBUILD_PROJECT_VERSION}) option(GENERATE_STUBS "Whether to generate stubs" ON) option(CCACHE_ENABLED "Whether to enable compiler caching, if available" ON) option(WERROR_ENABLED "Whether to treat compiler warnings as errors" OFF) set(CMAKE_POSITION_INDEPENDENT_CODE ON) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CUDA_STANDARD 14) set(CMAKE_CUDA_STANDARD_REQUIRED ON) if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") # Some fixes for the Glog library. add_compile_definitions(GLOG_NO_ABBREVIATED_SEVERITIES) add_compile_definitions(GL_GLEXT_PROTOTYPES) add_compile_definitions(NOMINMAX) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc") # Enable object level parallel builds in Visual Studio. set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP") add_compile_options($<$:/W3>) if(WERROR_ENABLED) add_compile_options($<$:/WX>) endif() elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES ".*Clang") add_compile_options($<$:-Wall>) if(WERROR_ENABLED) add_compile_options($<$:-Werror>) endif() endif() find_package(colmap REQUIRED) if(CCACHE_ENABLED) find_program(CCACHE ccache) if(CCACHE) message(STATUS "Enabling ccache support") set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE}) set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE}) if(CUDA_ENABLED) set(CMAKE_CUDA_COMPILER_LAUNCHER ${CCACHE}) endif() else() message(STATUS "Disabling ccache support") endif() else() message(STATUS "Disabling ccache support") endif() # If colmap was built with ONNX support, we need to set the rpath so the # Python module can find the ONNX Runtime library at runtime. set(ONNX_RPATH "") if(DEFINED onnxruntime_LIBRARY_DIR_HINTS AND EXISTS "${onnxruntime_LIBRARY_DIR_HINTS}") message(STATUS "ONNX Runtime library directory: ${onnxruntime_LIBRARY_DIR_HINTS}") set(ONNX_RPATH "${onnxruntime_LIBRARY_DIR_HINTS}") elseif(TARGET onnxruntime::onnxruntime) # Derive the library directory from the imported target. get_target_property(_ort_type onnxruntime::onnxruntime TYPE) if(_ort_type STREQUAL "INTERFACE_LIBRARY") # Find module creates an INTERFACE target with link libraries. get_target_property(_ort_libs onnxruntime::onnxruntime INTERFACE_LINK_LIBRARIES) list(GET _ort_libs 0 _ort_location) else() get_target_property(_ort_location onnxruntime::onnxruntime IMPORTED_LOCATION) if(NOT _ort_location) get_target_property(_ort_location onnxruntime::onnxruntime IMPORTED_LOCATION_RELEASE) endif() endif() if(_ort_location) get_filename_component(ONNX_RPATH "${_ort_location}" DIRECTORY) message(STATUS "ONNX Runtime library directory (from target): ${ONNX_RPATH}") endif() endif() if (CMAKE_VERSION VERSION_LESS 3.18) set(DEV_MODULE Development) else() set(DEV_MODULE Development.Module) endif() find_package(Python REQUIRED COMPONENTS Interpreter ${DEV_MODULE} REQUIRED) find_package(pybind11 3.0.2 REQUIRED) file(GLOB_RECURSE SOURCE_FILES "${PROJECT_SOURCE_DIR}/../src/pycolmap/*.cc") if(NOT MVS_ENABLED) list(FILTER SOURCE_FILES EXCLUDE REGEX ".*/mvs/.*") list(FILTER SOURCE_FILES EXCLUDE REGEX ".*/pipeline/mvs\\.cc$") list(FILTER SOURCE_FILES EXCLUDE REGEX ".*/pipeline/meshing\\.cc$") endif() pybind11_add_module(_core ${SOURCE_FILES}) target_include_directories(_core PRIVATE ${PROJECT_SOURCE_DIR}/../src/) target_link_libraries(_core PRIVATE colmap::colmap glog::glog Ceres::ceres) target_compile_definitions(_core PRIVATE VERSION_INFO="${PROJECT_VERSION}") # Set rpath to find ONNX Runtime library at runtime. if(ONNX_RPATH) if(APPLE) set_target_properties(_core PROPERTIES BUILD_RPATH "${ONNX_RPATH}" INSTALL_RPATH "${ONNX_RPATH}" ) elseif(UNIX) set_target_properties(_core PROPERTIES BUILD_RPATH "${ONNX_RPATH}" INSTALL_RPATH "$ORIGIN/../lib:${ONNX_RPATH}" ) endif() endif() install(TARGETS _core LIBRARY DESTINATION pycolmap) if(GENERATE_STUBS AND UNIX) message(STATUS "Enabling stubs generation") set(STUBGEN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/_core") # Set library path for stub generation to find ONNX Runtime. if(APPLE AND ONNX_RPATH) set(STUBGEN_LIB_PATH_VAR "DYLD_LIBRARY_PATH=${ONNX_RPATH}:$ENV{DYLD_LIBRARY_PATH}") elseif(ONNX_RPATH) set(STUBGEN_LIB_PATH_VAR "LD_LIBRARY_PATH=${ONNX_RPATH}:$ENV{LD_LIBRARY_PATH}") else() set(STUBGEN_LIB_PATH_VAR "") endif() add_custom_command( TARGET _core POST_BUILD COMMAND "${CMAKE_COMMAND}" -E env "PYTHONPATH=$:$ENV{PYTHONPATH}" ${STUBGEN_LIB_PATH_VAR} bash ${PROJECT_SOURCE_DIR}/generate_stubs.sh "${Python_EXECUTABLE}" "${CMAKE_CURRENT_BINARY_DIR}" WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating pybind11 stubs" VERBATIM ) install(DIRECTORY ${STUBGEN_OUTPUT_DIR} DESTINATION pycolmap) endif() colmap-4.1.1/python/README.md000066400000000000000000000256361522646662000156150ustar00rootroot00000000000000# Python Bindings for COLMAP PyCOLMAP exposes to Python most capabilities of the [COLMAP](https://colmap.github.io/) Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline. ## Installation Pre-built wheels for Linux, macOS, and Windows can be installed using pip: ```bash pip install pycolmap ``` The wheels are automatically built and pushed to [PyPI](https://pypi.org/project/pycolmap/) at each release. To benefit from GPU acceleration, wheels built for CUDA 12 (only for Linux - for now) are available under the [package `pycolmap-cuda12`](https://pypi.org/project/pycolmap-cuda12/).

[Building PyCOLMAP from source - click to expand] 1. Install COLMAP from source following [the official guide](https://colmap.github.io/install.html). 2. Build PyCOLMAP: - On Linux and macOS: ```bash python -m pip install . ``` - On Windows, after installing COLMAP [via VCPKG](https://colmap.github.io/install.html#id3), run in powershell: ```powershell python -m pip install . ` --cmake.define.CMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" ` --cmake.define.VCPKG_TARGET_TRIPLET="x64-windows" ```
## Reconstruction Pipeline PyCOLMAP provides bindings for multiple steps of the standard reconstruction pipeline: - Extracting and matching SIFT features - Importing an image folder into a COLMAP database - Inferring the camera parameters from the EXIF metadata of an image file - Running two-view geometric verification of matches on a COLMAP database - Triangulating points into an existing COLMAP model - Running incremental reconstruction from a COLMAP database - Dense reconstruction with multi-view stereo ### Sparse & Dense Reconstruction Sparse & Dense reconstruction from a folder of images can be performed with: ```python output_path: pathlib.Path image_dir: pathlib.Path output_path.mkdir() mvs_path = output_path / "mvs" database_path = output_path / "database.db" pycolmap.extract_features(database_path, image_dir) pycolmap.match_exhaustive(database_path) maps = pycolmap.incremental_mapping(database_path, image_dir, output_path) maps[0].write(output_path) # Dense reconstruction pycolmap.undistort_images(mvs_path, output_path, image_dir) pycolmap.patch_match_stereo(mvs_path) # requires compilation with CUDA pycolmap.stereo_fusion(mvs_path / "dense.ply", mvs_path) ``` PyCOLMAP can leverage the GPU for feature extraction, matching, and multi-view stereo if COLMAP was compiled with CUDA support. Similarly, PyCOLMAP can run Delaunay Triangulation and Advancing Front Surface Reconstruction if COLMAP was compiled with CGAL support. This requires to build the package from source and is not available with the PyPI wheels. ### Configuration Options All of the above steps are easily configurable with python dicts which are recursively merged into their respective defaults, for example: ```python pycolmap.extract_features( database_path, image_dir, extraction_options={"sift": {"max_num_features": 512}} ) # Equivalent to: ops = pycolmap.FeatureExtractionOptions() ops.sift.max_num_features = 512 pycolmap.extract_features(database_path, image_dir, extraction_options=ops) ``` To list available options and their default parameters: ```python help(pycolmap.SiftExtractionOptions) ``` For another example of usage, see [`example.py`](./examples/example.py) or [`hloc/reconstruction.py`](https://github.com/cvg/Hierarchical-Localization/blob/master/hloc/reconstruction.py). ## Reconstruction Object We can load and manipulate an existing COLMAP 3D reconstruction: ```python import pycolmap reconstruction = pycolmap.Reconstruction("path/to/reconstruction/dir") print(reconstruction.summary()) for image_id, image in reconstruction.images.items(): print(image_id, image) for point3D_id, point3D in reconstruction.points3D.items(): print(point3D_id, point3D) for camera_id, camera in reconstruction.cameras.items(): print(camera_id, camera) reconstruction.write("path/to/reconstruction/dir/") ``` ### Common Operations The object API mirrors the COLMAP C++ library. The bindings support many operations, for example: **Projecting a 3D point into an image** with arbitrary camera model: ```python uv = camera.img_from_cam(image.cam_from_world * point3D.xyz) ``` **Aligning two 3D reconstructions** by their camera poses: ```python rec2_from_rec1 = pycolmap.align_reconstructions_via_reprojections( reconstruction1, reconstruction2 ) reconstruction1.transform(rec2_from_rec1) print(rec2_from_rec1.scale, rec2_from_rec1.rotation, rec2_from_rec1.translation) ``` **Exporting reconstructions** to text, PLY, or other formats: ```python reconstruction.write_text("path/to/new/reconstruction/dir/") # text format reconstruction.export_PLY("rec.ply") # PLY format ``` ## Estimators We provide robust RANSAC-based estimators for: - Absolute camera pose (single-camera and multi-camera-rig) - Essential matrix - Fundamental matrix - Homography - Two-view relative pose for calibrated cameras All RANSAC and estimation parameters are exposed as objects that behave similarly as Python dataclasses. The RANSAC options are described in [`colmap/optim/ransac.h`](https://github.com/colmap/colmap/blob/main/src/colmap/optim/ransac.h#L43-L72) and their default values are: ```python ransac_options = pycolmap.RANSACOptions( max_error=4.0, # For example the reprojection error in pixels min_inlier_ratio=0.01, confidence=0.9999, min_num_trials=1000, max_num_trials=100000, ) ``` ### Absolute Pose Estimation To estimate the absolute pose of a query camera given 2D-3D correspondences: ```python # Parameters: # - points2D: Nx2 array; pixel coordinates # - points3D: Nx3 array; world coordinates # - camera: pycolmap.Camera # Optional parameters: # - estimation_options: dict or pycolmap.AbsolutePoseEstimationOptions # - refinement_options: dict or pycolmap.AbsolutePoseRefinementOptions answer = pycolmap.estimate_and_refine_absolute_pose(points2D, points3D, camera) # Returns: dictionary of estimation outputs or None if failure ``` 2D and 3D points are passed as Numpy arrays or lists. The options are defined in [`estimators/absolute_pose.cc`](./pycolmap/estimators/absolute_pose.h#L100-L122) and can be passed as regular (nested) Python dictionaries: ```python pycolmap.estimate_and_refine_absolute_pose( points2D, points3D, camera, estimation_options=dict(ransac=dict(max_error=12.0)), refinement_options=dict(refine_focal_length=True), ) ``` ### Absolute Pose Refinement ```python # Parameters: # - cam_from_world: pycolmap.Rigid3d, initial pose # - points2D: Nx2 array; pixel coordinates # - points3D: Nx3 array; world coordinates # - inlier_mask: array of N bool; inlier_mask[i] is true if correspondence i is an inlier # - camera: pycolmap.Camera # Optional parameters: # - refinement_options: dict or pycolmap.AbsolutePoseRefinementOptions answer = pycolmap.refine_absolute_pose( cam_from_world, points2D, points3D, inlier_mask, camera ) # Returns: dictionary of refinement outputs or None if failure ``` ### Essential Matrix Estimation ```python # Parameters: # - points1: Nx2 array; 2D pixel coordinates in image 1 # - points2: Nx2 array; 2D pixel coordinates in image 2 # - camera1: pycolmap.Camera of image 1 # - camera2: pycolmap.Camera of image 2 # Optional parameters: # - options: dict or pycolmap.RANSACOptions (default inlier threshold is 4px) answer = pycolmap.estimate_essential_matrix(points1, points2, camera1, camera2) # Returns: dictionary of estimation outputs or None if failure ``` ### Fundamental Matrix Estimation ```python answer = pycolmap.estimate_fundamental_matrix( points1, points2, [options], # optional dict or pycolmap.RANSACOptions ) ``` ### Homography Estimation ```python answer = pycolmap.estimate_homography_matrix( points1, points2, [options], # optional dict or pycolmap.RANSACOptions ) ``` ### Two-View Geometry Estimation COLMAP can also estimate a relative pose between two calibrated cameras by estimating both E and H and accounting for the degeneracies of each model. ```python # Parameters: # - camera1: pycolmap.Camera of image 1 # - points1: Nx2 array; 2D pixel coordinates in image 1 # - camera2: pycolmap.Camera of image 2 # - points2: Nx2 array; 2D pixel coordinates in image 2 # Optional parameters: # - matches: Nx2 integer array; correspondences across images # - options: dict or pycolmap.TwoViewGeometryOptions answer = pycolmap.estimate_calibrated_two_view_geometry( camera1, points1, camera2, points2 ) # Returns: pycolmap.TwoViewGeometry ``` The `TwoViewGeometryOptions` control how each model is selected. The output structure contains the geometric model, inlier matches, the relative pose (if `options.compute_relative_pose=True`), and the type of camera configuration, which is an instance of the enum `pycolmap.TwoViewGeometryConfiguration`. ### Camera Argument Some estimators expect a COLMAP camera object, which can be created as follows: ```python camera = pycolmap.Camera( model=camera_model_name_or_id, width=width, height=height, params=params, ) ``` The different camera models and their extra parameters are defined in [`colmap/src/colmap/sensor/models.h`](https://github.com/colmap/colmap/blob/main/src/colmap/sensor/models.h). For example for a pinhole camera: ```python camera = pycolmap.Camera( model='SIMPLE_PINHOLE', width=width, height=height, params=[focal_length, cx, cy], ) ``` Alternatively, we can also pass a camera dictionary: ```python camera_dict = { 'model': COLMAP_CAMERA_MODEL_NAME_OR_ID, 'width': IMAGE_WIDTH, 'height': IMAGE_HEIGHT, 'params': EXTRA_CAMERA_PARAMETERS_LIST } ``` ## SIFT Feature Extraction ```python import numpy as np import pycolmap from PIL import Image, ImageOps # Input should be grayscale image with range [0, 1]. img = Image.open('image.jpg').convert('RGB') img = ImageOps.grayscale(img) img = np.array(img).astype(np.float) / 255. # Optional parameters: # - options: dict or pycolmap.SiftExtractionOptions # - device: default pycolmap.Device.auto uses the GPU if available sift = pycolmap.Sift() # Parameters: # - image: HxW float array keypoints, descriptors = sift.extract(img) # Returns: # - keypoints: Nx4 array; format: x (j), y (i), scale, orientation # - descriptors: Nx128 array; L2-normalized descriptors ``` ## Bitmap PyCOLMAP provides bindings for the `Bitmap` class to work with images and convert them to/from NumPy arrays: ```python import numpy as np import pycolmap # Read a bitmap from file bitmap = pycolmap.Bitmap.read("image.jpg", as_rgb=True) print(f"Size: {bitmap.width}x{bitmap.height}, Channels: {bitmap.channels}") # Convert to NumPy array array = bitmap.to_array() # Shape: (H, W, 3) for RGB or (H, W) for grayscale # Create bitmap from NumPy array array = np.random.randint(0, 255, (480, 640, 3), dtype=np.uint8) bitmap = pycolmap.Bitmap.from_array(array) # Write bitmap to file bitmap.write("output.jpg") # Rescale bitmap bitmap.rescale(new_width=320, new_height=240) ``` colmap-4.1.1/python/build.sh000077500000000000000000000015231522646662000157610ustar00rootroot00000000000000#!/bin/bash # Invoke from anywhere to perform an incremental build of pycolmap bindings. # Make sure to install the requirements from pyproject.toml. If colmap is not # installed globally but in a custom directory, you should set the colmap_DIR # environment variable, e.g.: # # colmap_DIR=/path/to/cmake/install/prefix pycolmap/incremental_build.sh set -e script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) pip install \ -ve \ "$script_dir/.." # Symlink the compiled _core extension into the source tree so that the # editable install (which adds python/ to sys.path) can find it. site_pkg=$(python -c "import sysconfig; print(sysconfig.get_path('purelib'))") core_so=$(ls -t "$site_pkg/pycolmap"/_core*.so 2>/dev/null | head -1) if [ -n "$core_so" ]; then ln -sf "$core_so" "$script_dir/pycolmap/" fi colmap-4.1.1/python/ci/000077500000000000000000000000001522646662000147155ustar00rootroot00000000000000colmap-4.1.1/python/ci/install-colmap-almalinux.sh000077500000000000000000000050361522646662000221670ustar00rootroot00000000000000#!/bin/bash set -e -x uname -a CURRDIR=$(pwd) export PATH="/usr/bin" # Install config manager and EPEL release yum install -y dnf-plugins-core epel-release # Enable the PowerTools repository (required for ninja-build) yum config-manager --set-enabled powertools # Install toolchain under AlmaLinux 8, # see https://almalinux.pkgs.org/8/almalinux-appstream-x86_64/ yum install -y \ gcc-toolset-12-gcc \ gcc-toolset-12-gcc-c++ \ gcc-toolset-12-gcc-gfortran \ kernel-headers \ perl-IPC-Cmd \ scl-utils \ git \ cmake3 \ ninja-build \ curl \ zip \ unzip \ tar \ perl \ libXmu-devel \ libXi-devel \ mesa-libGL-devel \ mesa-libGLU-devel source scl_source enable gcc-toolset-12 CUDA_HOME="/usr/local/cuda" if [ ! -d "${CUDA_HOME}" ] && [ -d "${CUDA_HOME}-12.9" ]; then ln -s "${CUDA_HOME}-12.9" "${CUDA_HOME}" fi if [ -d "${CUDA_HOME}" ]; then export PATH="${CUDA_HOME}/bin:${PATH}" if [ ! -f "/usr/local/bin/nvcc" ] && [ -f "${CUDA_HOME}/bin/nvcc" ]; then ln -s "${CUDA_HOME}/bin/nvcc" /usr/local/bin/nvcc fi echo "${CUDA_HOME}/lib64" > /etc/ld.so.conf.d/cuda.conf fi # ccache shipped by CentOS is too old so we download and cache it. COMPILER_TOOLS_DIR="${CONTAINER_COMPILER_CACHE_DIR}/bin" mkdir -p ${COMPILER_TOOLS_DIR} if [ ! -f "${COMPILER_TOOLS_DIR}/ccache" ]; then FILE="ccache-4.10.1-linux-x86_64" curl -sSLO https://github.com/ccache/ccache/releases/download/v4.10.1/${FILE}.tar.xz tar -xf ${FILE}.tar.xz cp ${FILE}/ccache ${COMPILER_TOOLS_DIR} fi export PATH="${COMPILER_TOOLS_DIR}:${PATH}" ln -sf ${COMPILER_TOOLS_DIR}/ccache /usr/local/bin/ccache # Setup vcpkg git clone https://github.com/microsoft/vcpkg ${VCPKG_INSTALLATION_ROOT} cd ${VCPKG_INSTALLATION_ROOT} ./bootstrap-vcpkg.sh ./vcpkg integrate install # Build COLMAP cd ${CURRDIR} mkdir build && cd build cmake3 .. -GNinja \ -DCUDA_ENABLED="${BUILD_CUDA_ENABLED}" \ -DCMAKE_CUDA_ARCHITECTURES="all-major" \ -DONNX_ENABLED=OFF \ -DGUI_ENABLED=OFF \ -DCGAL_ENABLED=OFF \ -DLSD_ENABLED=OFF \ -DCCACHE_ENABLED=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_MAKE_PROGRAM=/usr/bin/ninja \ -DCMAKE_TOOLCHAIN_FILE="${CMAKE_TOOLCHAIN_FILE}" \ -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \ -DCMAKE_EXE_LINKER_FLAGS_INIT="-ldl" \ -DFETCHCONTENT_BASE_DIR="${FETCHCONTENT_BASE_DIR}" \ -DFETCHCONTENT_FULLY_DISCONNECTED="${FETCHCONTENT_FULLY_DISCONNECTED}" ninja install ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose colmap-4.1.1/python/ci/install-colmap-macos.sh000077500000000000000000000026711522646662000213010ustar00rootroot00000000000000#!/bin/bash set -x -e CURRDIR=$(pwd) # Fix `brew link` error. find /usr/local/bin -lname '*/Library/Frameworks/Python.framework/*' -delete brew uninstall cmake # Workaround for CI failures. brew install git cmake ninja gfortran ccache libomp brew link --force libomp sudo xcode-select --reset # When building lapack-reference, vcpkg/cmake looks for gfortran. ln -sf $(which gfortran-14) "$(dirname $(which gfortran-14))/gfortran" # Setup vcpkg git clone https://github.com/microsoft/vcpkg ${VCPKG_INSTALLATION_ROOT} cd ${VCPKG_INSTALLATION_ROOT} ./bootstrap-vcpkg.sh ./vcpkg integrate install # Build COLMAP cd ${CURRDIR} "$(brew --prefix cmake)/bin/cmake" \ -S . -B build/ \ -GNinja \ -DCUDA_ENABLED=OFF \ -DONNX_ENABLED=OFF \ -DGUI_ENABLED=OFF \ -DCGAL_ENABLED=OFF \ -DLSD_ENABLED=OFF \ -DCCACHE_ENABLED=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_MAKE_PROGRAM="$(brew --prefix ninja)/bin/ninja" \ -DCMAKE_TOOLCHAIN_FILE="${CMAKE_TOOLCHAIN_FILE}" \ -DVCPKG_TARGET_TRIPLET="${VCPKG_TARGET_TRIPLET}" \ -DCMAKE_OSX_ARCHITECTURES="${CMAKE_OSX_ARCHITECTURES}" \ -DFETCHCONTENT_BASE_DIR="${FETCHCONTENT_BASE_DIR}" \ -DFETCHCONTENT_FULLY_DISCONNECTED="${FETCHCONTENT_FULLY_DISCONNECTED}" \ `if [[ ${CIBW_ARCHS_MACOS} == "arm64" ]]; then echo "-DSIMD_ENABLED=OFF"; fi` sudo cmake --build build/ --target install ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose colmap-4.1.1/python/ci/install-colmap-windows.ps1000077500000000000000000000025041522646662000217550ustar00rootroot00000000000000$ErrorActionPreference = "Stop" Set-StrictMode -Version Latest $PSNativeCommandUseErrorActionPreference = $true $CURRDIR = $PWD $COMPILER_TOOLS_DIR = "${env:COMPILER_CACHE_DIR}/bin" New-Item -ItemType Directory -Force -Path ${COMPILER_TOOLS_DIR} $env:Path = "${COMPILER_TOOLS_DIR};" + $env:Path If (!(Test-Path -path "${COMPILER_TOOLS_DIR}/ccache.exe" -PathType Leaf)) { .github/workflows/install-ccache.ps1 -Destination "${COMPILER_TOOLS_DIR}" } # Setup vcpkg cd ${CURRDIR} git clone https://github.com/microsoft/vcpkg ${env:VCPKG_INSTALLATION_ROOT} cd ${env:VCPKG_INSTALLATION_ROOT} ./bootstrap-vcpkg.bat cd ${CURRDIR} & "./scripts/shell/enter_vs_dev_shell.ps1" & "${env:VCPKG_ROOT}/vcpkg.exe" integrate install # Build COLMAP mkdir build cd build cmake .. ` -GNinja ` -DCMAKE_MAKE_PROGRAM=ninja ` -DCUDA_ENABLED="OFF" ` -DONNX_ENABLED="OFF" ` -DGUI_ENABLED="OFF" ` -DCGAL_ENABLED="OFF" ` -DLSD_ENABLED="OFF" ` -DCMAKE_BUILD_TYPE="Release" ` -DCMAKE_TOOLCHAIN_FILE="${env:CMAKE_TOOLCHAIN_FILE}" ` -DVCPKG_TARGET_TRIPLET="${env:VCPKG_TARGET_TRIPLET}" ` -DFETCHCONTENT_BASE_DIR="${env:FETCHCONTENT_BASE_DIR}" ` -DFETCHCONTENT_FULLY_DISCONNECTED="${env:FETCHCONTENT_FULLY_DISCONNECTED}" ninja install ccache --show-stats --verbose ccache --evict-older-than 1d ccache --show-stats --verbose colmap-4.1.1/python/ci/test-colmap-windows.ps1000066400000000000000000000002531522646662000212620ustar00rootroot00000000000000& "$PSScriptRoot/../../scripts/shell/enter_vs_dev_shell.ps1" & "${env:VCPKG_ROOT}/vcpkg.exe" integrate install & python -c "import pycolmap; print(pycolmap.__version__)" colmap-4.1.1/python/ci/test_regression_eth3d.py000066400000000000000000000140721522646662000216010ustar00rootroot00000000000000""" Runs the COLMAP automatic reconstruction pipeline on the ETH3D dataset and asserts that the reconstructed model is close to the ground truth. This script is intended to be run as a CI test. It is not intended to be run manually. Instead use benchmark/reconstruction/evaluate.py. """ import argparse import logging import os import subprocess import sys import urllib.request def download_file(url: str, file_path: str, max_retries: int = 3) -> None: if os.path.exists(file_path): return logging.info(f"Downloading {url} to {file_path}") for retry in range(max_retries): try: urllib.request.urlretrieve(url, file_path) return except Exception as exc: logging.error( f"Failed to download {url} (trial={retry + 1}) " f"to {file_path} due to {exc}" ) def check_small_errors_or_exit( dataset_name: str, max_rotation_error: float, max_proj_center_error: float, expected_num_images: float, errors_csv_path: str, ) -> None: logging.info(f"Evaluating errors for {dataset_name}") error = False with open(errors_csv_path) as fid: num_images = 0 for line in fid: line = line.strip() if len(line) == 0 or line.startswith("#"): continue rotation_error, proj_center_error = map(float, line.split(",")) num_images += 1 if rotation_error > max_rotation_error: logging.info( "Exceeded rotation error threshold:", rotation_error ) error = True if proj_center_error > max_proj_center_error: logging.info( "Exceeded projection center error threshold:", proj_center_error, ) error = True if num_images != expected_num_images: logging.error("Unexpected number of images:", num_images) error = True if error: sys.exit(1) def process_dataset(args: argparse.Namespace, dataset_name: str) -> None: logging.info("Processing dataset:", dataset_name) workspace_path = os.path.join( os.path.realpath(args.workspace_path), dataset_name ) os.makedirs(workspace_path, exist_ok=True) dataset_archive_path = os.path.join(workspace_path, f"{dataset_name}.7z") download_file( f"https://www.eth3d.net/data/{dataset_name}_dslr_undistorted.7z", dataset_archive_path, ) subprocess.check_call( ["7zz", "x", "-y", f"{dataset_name}.7z"], cwd=workspace_path ) # Find undistorted parameters of first camera and # initialize all images with it. This is an approximation # because not all datasets have only a single camera. # However, it is a good enough initialization. with open( os.path.join( workspace_path, f"{dataset_name}/dslr_calibration_undistorted/cameras.txt", ), ) as fid: for line in fid: if not line.startswith("#"): first_camera_data = line.split() camera_model = first_camera_data[1] assert camera_model == "PINHOLE" camera_params = first_camera_data[4:] assert len(camera_params) == 4 break # Count the number of expected images in the GT. expected_num_images = 0 with open( os.path.join( workspace_path, f"{dataset_name}/dslr_calibration_undistorted/images.txt", ), ) as fid: for line in fid: if not line.startswith("#") and line.strip(): expected_num_images += 1 # Each image uses two consecutive lines. assert expected_num_images % 2 == 0 expected_num_images //= 2 # Run automatic reconstruction pipeline. subprocess.check_call( [ os.path.realpath(args.colmap_path), "automatic_reconstructor", "--image_path", f"{dataset_name}/images/", "--workspace_path", workspace_path, "--use_gpu", "1" if args.use_gpu else "0", "--num_threads", str(args.num_threads), "--quality", args.quality, "--camera_model", "PINHOLE", "--camera_params", ",".join(camera_params), ], cwd=workspace_path, ) # Compare reconstructed model to GT model. subprocess.check_call( [ os.path.realpath(args.colmap_path), "model_comparer", "--input_path1", "sparse/0", "--input_path2", f"{dataset_name}/dslr_calibration_undistorted/", "--output_path", ".", "--alignment_error", "proj_center", "--max_proj_center_error", str(args.max_proj_center_error), ], cwd=workspace_path, ) # Ensure discrepancy between reconstructed model and GT is small. check_small_errors_or_exit( dataset_name, args.max_rotation_error, args.max_proj_center_error, expected_num_images, os.path.join(workspace_path, "errors.csv"), ) def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("--dataset_names", nargs="+", required=True) parser.add_argument("--workspace_path", required=True) parser.add_argument("--colmap_path", required=True) parser.add_argument("--use_gpu", default=True, action="store_true") parser.add_argument("--use_cpu", dest="use_gpu", action="store_false") parser.add_argument("--num_threads", type=int, default=-1) parser.add_argument("--quality", default="medium") parser.add_argument("--max_rotation_error", type=float, default=1.0) parser.add_argument("--max_proj_center_error", type=float, default=0.1) return parser.parse_args() def main() -> None: args = parse_args() for dataset_name in args.dataset_names: process_dataset(args, dataset_name) if __name__ == "__main__": main() colmap-4.1.1/python/ci/update_pyproject_toml.py000066400000000000000000000020651522646662000217060ustar00rootroot00000000000000import argparse from pathlib import Path import tomlkit # Set up command-line argument parser parser = argparse.ArgumentParser( description="Modify pyproject.toml for a custom build." ) parser.add_argument( "--name", required=True, help="The new package name for the wheel." ) parser.add_argument( "--add-deps", nargs="+", default=[], help="Space-separated list of Python dependencies to add.", ) args = parser.parse_args() # Modify the pyproject.toml file pyproject_path = Path("pyproject.toml") if not pyproject_path.exists(): raise FileNotFoundError(pyproject_path) with open(pyproject_path, encoding="utf-8") as f: config = tomlkit.load(f) config["project"]["name"] = args.name if args.add_deps: if "dependencies" not in config["project"]: config["project"]["dependencies"] = [] existing_deps = config["project"]["dependencies"] for req in args.add_deps: if req not in existing_deps: existing_deps.append(req) with open(pyproject_path, "w", encoding="utf-8") as f: tomlkit.dump(config, f) colmap-4.1.1/python/examples/000077500000000000000000000000001522646662000161405ustar00rootroot00000000000000colmap-4.1.1/python/examples/conftest.py000066400000000000000000000001241522646662000203340ustar00rootroot00000000000000import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) colmap-4.1.1/python/examples/convert_legacy_rotation_averaging_format.py000066400000000000000000000211271522646662000270330ustar00rootroot00000000000000""" Convert legacy rotation averaging file formats to a COLMAP database. This script provides a migration path from deprecated file-based input to database-based input for the rotation averaging CLI. Legacy file formats: - Relative poses: IMAGE_NAME_1 IMAGE_NAME_2 QW QX QY QZ TX TY TZ - Gravity priors: IMAGE_NAME GX GY GZ (optional) After conversion, use the database with: colmap rotation_averager --database_path database.db --output_path output/ Usage: python legacy_rotation_averaging_io.py \ --relpose_path relative_poses.txt \ --database_path database.db \ [--gravity_path gravity_priors.txt] """ import argparse from dataclasses import dataclass from pathlib import Path import numpy as np from numpy.typing import NDArray import pycolmap from pycolmap import logging @dataclass class RelativePose: """Relative pose between two images.""" image_name1: str image_name2: str cam2_from_cam1: pycolmap.Rigid3d @dataclass class GravityPrior: """Gravity prior for an image.""" image_name: str gravity: NDArray[np.float64] def read_relative_poses(file_path: Path | str) -> list[RelativePose]: """Read relative poses from a file. Format: IMAGE_NAME_1 IMAGE_NAME_2 QW QX QY QZ TX TY TZ Args: file_path: Path to the relative poses file. Returns: List of RelativePose objects. """ file_path = Path(file_path) relative_poses = [] with open(file_path) as f: for line in f: line = line.strip() if not line or line.startswith("#"): continue parts = line.split() if len(parts) < 9: continue name1, name2 = parts[0], parts[1] qw, qx, qy, qz = map(float, parts[2:6]) tx, ty, tz = map(float, parts[6:9]) # pycolmap.Rotation3d takes quaternion in xyzw format rotation = pycolmap.Rotation3d(np.array([qx, qy, qz, qw])) translation = np.array([tx, ty, tz]) cam2_from_cam1 = pycolmap.Rigid3d(rotation, translation) relative_poses.append( RelativePose( image_name1=name1, image_name2=name2, cam2_from_cam1=cam2_from_cam1, ) ) return relative_poses def read_gravity_priors(file_path: Path | str) -> list[GravityPrior]: """Read gravity priors from a file. Format: IMAGE_NAME GX GY GZ Args: file_path: Path to the gravity priors file. Returns: List of GravityPrior objects. """ file_path = Path(file_path) gravity_priors = [] with open(file_path) as f: for line in f: line = line.strip() if not line or line.startswith("#"): continue parts = line.split() if len(parts) < 4: continue name = parts[0] gx, gy, gz = map(float, parts[1:4]) gravity_priors.append( GravityPrior( image_name=name, gravity=np.array([gx, gy, gz], dtype=np.float64), ) ) return gravity_priors def get_image_names_from_relative_poses( relative_poses: list[RelativePose], ) -> dict[str, int]: """Extract unique image names from relative poses and assign IDs. Args: relative_poses: List of RelativePose objects. Returns: Dictionary mapping image names to IDs. """ image_names: dict[str, int] = {} next_id = 1 # COLMAP uses 1-based IDs for pose in relative_poses: for name in [pose.image_name1, pose.image_name2]: if name not in image_names: image_names[name] = next_id next_id += 1 return image_names def create_database_from_relative_poses( database_path: Path, relative_poses: list[RelativePose], gravity_priors: list[GravityPrior] | None = None, ) -> dict[str, int]: """Create a COLMAP database from relative poses and gravity priors. Args: database_path: Path to the output database. relative_poses: List of relative poses between image pairs. gravity_priors: Optional list of gravity priors for images. Returns: Dictionary mapping image names to their database image IDs. """ image_name_to_id = get_image_names_from_relative_poses(relative_poses) if database_path.exists(): database_path.unlink() # Use Reconstruction to create cameras, rigs, frames, and images # with the trivial rig/frame helper methods reconstruction = pycolmap.Reconstruction() for image_name, image_id in image_name_to_id.items(): camera_id = image_id # Create camera with trivial rig (rig_id = camera_id) camera = pycolmap.Camera.create( camera_id=camera_id, model=pycolmap.CameraModelId.SIMPLE_PINHOLE, focal_length=1.0, width=1, height=1, ) reconstruction.add_camera_with_trivial_rig(camera) # Create image with trivial frame (frame_id = image_id) image = pycolmap.Image() image.image_id = image_id image.name = image_name image.camera_id = camera_id reconstruction.add_image_with_trivial_frame(image) # Write to database with pycolmap.Database.open(database_path) as db: for camera in reconstruction.cameras.values(): db.write_camera(camera, use_camera_id=True) for rig in reconstruction.rigs.values(): db.write_rig(rig, use_rig_id=True) for frame in reconstruction.frames.values(): db.write_frame(frame, use_frame_id=True) for image in reconstruction.images.values(): db.write_image(image, use_image_id=True) # Write two-view geometries with relative poses for rel_pose in relative_poses: id1 = image_name_to_id[rel_pose.image_name1] id2 = image_name_to_id[rel_pose.image_name2] two_view_geom = pycolmap.TwoViewGeometry() two_view_geom.config = ( pycolmap.TwoViewGeometryConfiguration.CALIBRATED ) two_view_geom.cam2_from_cam1 = rel_pose.cam2_from_cam1 db.write_two_view_geometry(id1, id2, two_view_geom) # Write gravity priors if provided if gravity_priors: gravity_by_name = { gp.image_name: gp.gravity for gp in gravity_priors } for image in reconstruction.images.values(): if image.name in gravity_by_name: pose_prior = pycolmap.PosePrior() pose_prior.pose_prior_id = image.image_id pose_prior.corr_data_id = image.data_id pose_prior.gravity = gravity_by_name[image.name] db.write_pose_prior(pose_prior, use_pose_prior_id=True) return image_name_to_id def main(): parser = argparse.ArgumentParser( description="Convert rotation averaging files to database format" ) parser.add_argument( "--relpose_path", type=Path, required=True, help="Path to relative poses file", ) parser.add_argument( "--database_path", type=Path, required=True, help="Path for output database", ) parser.add_argument( "--gravity_path", type=Path, default=None, help="Optional path to gravity priors file", ) args = parser.parse_args() if not args.relpose_path.exists(): logging.error(f"Relative poses file not found: {args.relpose_path}") return 1 logging.info(f"Reading relative poses from {args.relpose_path}") relative_poses = read_relative_poses(args.relpose_path) logging.info(f"Loaded {len(relative_poses)} relative poses") gravity_priors = None if args.gravity_path is not None and args.gravity_path.exists(): logging.info(f"Reading gravity priors from {args.gravity_path}") gravity_priors = read_gravity_priors(args.gravity_path) logging.info(f"Loaded {len(gravity_priors)} gravity priors") logging.info(f"Creating database at {args.database_path}") image_name_to_id = create_database_from_relative_poses( args.database_path, relative_poses, gravity_priors ) logging.info(f"Database created with {len(image_name_to_id)} images") logging.info( f"Conversion complete. Use the database with:\n" f" colmap rotation_averager --database_path {args.database_path} " f"--output_path " ) return 0 if __name__ == "__main__": exit(main()) colmap-4.1.1/python/examples/custom_bundle_adjustment.py000066400000000000000000000303731522646662000236210ustar00rootroot00000000000000""" Python reimplementation of the bundle adjustment for the incremental mapper of C++ with equivalent logic. As a result, one can add customized residuals on top of the exposed ceres problem from conventional bundle adjustment. """ import collections import copy import pycolmap from pycolmap import logging def solve_bundle_adjustment( reconstruction: pycolmap.Reconstruction, ba_options: pycolmap.BundleAdjustmentOptions, ba_config: pycolmap.BundleAdjustmentConfig, ) -> pycolmap.BundleAdjustmentSummary: bundle_adjuster = pycolmap.create_default_bundle_adjuster( ba_options, ba_config, reconstruction ) summary = bundle_adjuster.solve() # Alternatively, you can customize the existing Ceres problem or options as: # import pyceres # The minimal bindings in pycolmap aren't sufficient. # bundle_adjuster = pycolmap.create_default_ceres_bundle_adjuster( # ba_options, ba_config, reconstruction # ) # solver_options = ba_options.ceres.create_solver_options( # ba_config, bundle_adjuster.problem # ) # summary = pyceres.SolverSummary() # pyceres.solve(solver_options, bundle_adjuster.problem, summary) return summary def adjust_global_bundle( mapper: pycolmap.IncrementalMapper, mapper_options: pycolmap.IncrementalMapperOptions, ba_options: pycolmap.BundleAdjustmentOptions, ) -> bool: """Equivalent to mapper.adjust_global_bundle(...)""" reconstruction = mapper.reconstruction assert reconstruction is not None reg_frame_ids = reconstruction.reg_frame_ids() if len(reg_frame_ids) < 2: logging.fatal("At least two images must be registered for global BA") custom_ba_options = copy.deepcopy(ba_options) # Use stricter convergence criteria for first registered images if len(reg_frame_ids) < 10: # kMinNumRegImagesForFastBA = 10 custom_ba_options.ceres.solver_options.function_tolerance /= 10 custom_ba_options.ceres.solver_options.gradient_tolerance /= 10 custom_ba_options.ceres.solver_options.parameter_tolerance /= 10 custom_ba_options.ceres.solver_options.max_num_iterations *= 2 custom_ba_options.ceres.solver_options.max_linear_solver_iterations = ( 200 ) # Avoid degeneracies in bundle adjustment mapper.observation_manager.filter_observations_with_negative_depth() # Configure bundle adjustment ba_config = pycolmap.BundleAdjustmentConfig() for frame_id in reg_frame_ids: frame = reconstruction.frame(frame_id) for data_id in frame.data_ids: if data_id.sensor_id.type != pycolmap.SensorType.CAMERA: continue ba_config.add_image(data_id.id) # Fix the existing images, if option specified if mapper_options.fix_existing_frames: for frame_id in reg_frame_ids: if frame_id in mapper.existing_frame_ids: ba_config.set_constant_rig_from_world_pose(frame_id) for rig_id in mapper_options.constant_rigs: for sensor_id in reconstruction.rig(rig_id).non_ref_sensors: ba_config.set_constant_sensor_from_rig_pose(sensor_id) for camera_id in mapper_options.constant_cameras: ba_config.set_constant_cam_intrinsics(camera_id) # TODO: Add python support for prior positions # Fixing the gauge with two cameras leads to a more stable optimization # with fewer steps as compared to fixing three points. ba_config.fix_gauge(pycolmap.BundleAdjustmentGauge.TWO_CAMS_FROM_WORLD) # Run bundle adjustment summary = solve_bundle_adjustment( reconstruction, custom_ba_options, ba_config ) logging.info("Global Bundle Adjustment") logging.info(summary.brief_report()) return summary.is_solution_usable() def iterative_global_refinement( mapper: pycolmap.IncrementalMapper, max_num_refinements: int, max_refinement_change: float, mapper_options: pycolmap.IncrementalMapperOptions, ba_options: pycolmap.BundleAdjustmentOptions, tri_options: pycolmap.IncrementalTriangulatorOptions, normalize_reconstruction: bool = True, ) -> bool: """Equivalent to mapper.iterative_global_refinement(...)""" reconstruction = mapper.reconstruction mapper.complete_and_merge_tracks(tri_options) num_retriangulated_observations = mapper.retriangulate(tri_options) logging.verbose( 1, f"=> Retriangulated observations: {num_retriangulated_observations}" ) for _ in range(max_num_refinements): num_observations = reconstruction.compute_num_observations() # mapper.adjust_global_bundle(mapper_options, ba_options) if not adjust_global_bundle(mapper, mapper_options, ba_options): return False if normalize_reconstruction: reconstruction.normalize() num_changed_observations = mapper.complete_and_merge_tracks(tri_options) num_changed_observations += mapper.filter_points(mapper_options) changed = ( num_changed_observations / num_observations if num_observations > 0 else 0 ) logging.verbose(1, f"=> Changed observations: {changed:.6f}") if changed < max_refinement_change: break return True def adjust_local_bundle( mapper: pycolmap.IncrementalMapper, mapper_options: pycolmap.IncrementalMapperOptions, ba_options: pycolmap.BundleAdjustmentOptions, tri_options: pycolmap.IncrementalTriangulatorOptions, image_id: int, point3D_ids: set[int], ) -> pycolmap.LocalBundleAdjustmentReport: """Equivalent to mapper.adjust_local_bundle(...)""" reconstruction = mapper.reconstruction assert reconstruction is not None report = pycolmap.LocalBundleAdjustmentReport() # Find images that have most 3D points with given image in common local_bundle = mapper.find_local_bundle(mapper_options, image_id) image_ids = set() # Do the bundle adjustment only if there is any connected images if local_bundle: ba_config = pycolmap.BundleAdjustmentConfig() ba_config.fix_gauge(pycolmap.BundleAdjustmentGauge.THREE_POINTS) # Insert the images of all local frames. image = reconstruction.image(image_id) frame_ids = {image.frame_id} assert image.frame is not None for data_id in image.frame.image_ids: ba_config.add_image(data_id.id) for local_image_id in local_bundle: local_image = reconstruction.image(local_image_id) frame_ids.add(local_image.frame_id) assert local_image.frame is not None for data_id in local_image.frame.image_ids: ba_config.add_image(data_id.id) # Fix the existing images, if options specified if mapper_options.fix_existing_frames: for frame_id in frame_ids: if frame_id in mapper.existing_frame_ids: ba_config.set_constant_rig_from_world_pose(frame_id) # Fix rig poses, if not all frames within the local bundle. num_frames_per_rig: dict[int, int] = collections.defaultdict(int) for frame_id in frame_ids: frame = reconstruction.frame(frame_id) num_frames_per_rig[frame.rig_id] += 1 for rig_id, num_frames_local in num_frames_per_rig.items(): if ( rig_id in mapper_options.constant_rigs or num_frames_local < mapper.num_reg_frames_per_rig[rig_id] ): for sensor_id in reconstruction.rig(rig_id).non_ref_sensors: ba_config.set_constant_sensor_from_rig_pose(sensor_id) # Fix camera intrinsics, if not all images within local bundle. num_images_per_camera: dict[int, int] = collections.defaultdict(int) for image_id in ba_config.images: image = reconstruction.images[image_id] num_images_per_camera[image.camera_id] += 1 for camera_id, num_images_local in num_images_per_camera.items(): if ( camera_id in mapper_options.constant_cameras or num_images_local < mapper.num_reg_images_per_camera[camera_id] ): ba_config.set_constant_cam_intrinsics(camera_id) # Make sure, we refine all new and short-track 3D points, no matter if # they are fully contained in the local image set or not. Do not include # long track 3D points as they are usually already very stable and # adding to them to bundle adjustment and track merging/completion would # slow down the local bundle adjustment significantly. variable_point3D_ids = set() for point3D_id in list(point3D_ids): point3D = reconstruction.point3D(point3D_id) kMaxTrackLength = 15 if ( point3D.error == -1.0 ) or point3D.track.length() <= kMaxTrackLength: ba_config.add_variable_point(point3D_id) variable_point3D_ids.add(point3D_id) # Adjust the local bundle summary = solve_bundle_adjustment( mapper.reconstruction, ba_options, ba_config ) logging.info("Local Bundle Adjustment") logging.info(summary.brief_report()) image_ids = ba_config.images report.num_adjusted_observations = int(summary.num_residuals / 2) # Merge refined tracks with other existing points report.num_merged_observations = mapper.triangulator.merge_tracks( tri_options, variable_point3D_ids ) # Complete tracks that may have failed to triangulate before refinement # of camera pose and calibration in bundle adjustment. This may avoid # that some points are filtered and helps for subsequent image # registrations. report.num_completed_observations = mapper.triangulator.complete_tracks( tri_options, variable_point3D_ids ) report.num_completed_observations += mapper.triangulator.complete_image( tri_options, image_id ) report.num_filtered_observations = ( mapper.observation_manager.filter_points3D_in_images( mapper_options.filter_max_reproj_error, mapper_options.filter_min_tri_angle, image_ids, ) ) report.num_filtered_observations += ( mapper.observation_manager.filter_points3D( mapper_options.filter_max_reproj_error, mapper_options.filter_min_tri_angle, point3D_ids, ) ) return report def iterative_local_refinement( mapper: pycolmap.IncrementalMapper, max_num_refinements: int, max_refinement_change: float, mapper_options: pycolmap.IncrementalMapperOptions, ba_options: pycolmap.BundleAdjustmentOptions, tri_options: pycolmap.IncrementalTriangulatorOptions, image_id: int, ) -> None: """Equivalent to mapper.iterative_local_refinement(...)""" custom_ba_options = copy.deepcopy(ba_options) for _ in range(max_num_refinements): # report = mapper.adjust_local_bundle( # mapper_options, # custom_ba_options, # tri_options, # image_id, # mapper.get_modified_points3D(), # ) report = adjust_local_bundle( mapper, mapper_options, custom_ba_options, tri_options, image_id, mapper.get_modified_points3D(), ) logging.verbose( 1, f"=> Merged observations: {report.num_merged_observations}" ) logging.verbose( 1, f"=> Completed observations: {report.num_completed_observations}" ) logging.verbose( 1, f"=> Filtered observations: {report.num_filtered_observations}" ) changed = 0.0 if report.num_adjusted_observations > 0: changed = ( report.num_merged_observations + report.num_completed_observations + report.num_filtered_observations ) / report.num_adjusted_observations logging.verbose(1, f"=> Changed observations: {changed:.6f}") if changed < max_refinement_change: break # Only use robust cost function for first iteration custom_ba_options.ceres.loss_function_type = ( pycolmap.LossFunctionType.TRIVIAL ) mapper.clear_modified_points3D() colmap-4.1.1/python/examples/custom_incremental_pipeline.py000066400000000000000000000472531522646662000243050ustar00rootroot00000000000000""" Python reimplementation of the C++ incremental mapper with equivalent logic. """ import argparse import time from pathlib import Path import custom_bundle_adjustment import enlighten import pycolmap from pycolmap import ( IncrementalMapper, IncrementalMapperOptions, IncrementalPipeline, IncrementalPipelineCallback, IncrementalPipelineOptions, IncrementalPipelineStatus, Reconstruction, ReconstructionManager, logging, ) def write_snapshot(reconstruction: Reconstruction, snapshot_path: Path) -> None: logging.info("Creating snapshot") timestamp = time.time() * 1000 path = snapshot_path / f"{timestamp:010d}" path.mkdir(exist_ok=True, parents=True) logging.verbose(1, f"=> Writing to {path}") reconstruction.write(path) def has_unknown_sensor_from_rig( reconstruction: Reconstruction, ) -> bool: parameterized_rig_ids = set() for image in reconstruction.images.values(): parameterized_rig_ids.add(image.frame.rig_id) for rig_id in parameterized_rig_ids: rig = reconstruction.rig(rig_id) for sensor_id, sensor_from_rig in rig.non_ref_sensors.items(): if ( sensor_id.type == pycolmap.SensorType.CAMERA and sensor_from_rig is None ): return True return False def iterative_global_refinement( options: IncrementalPipelineOptions, mapper_options: IncrementalMapperOptions, mapper: IncrementalMapper, ) -> None: logging.info("Retriangulation and Global bundle adjustment") # The following is equivalent to mapper.iterative_global_refinement(...) custom_bundle_adjustment.iterative_global_refinement( mapper, options.ba_global_max_refinements, options.ba_global_max_refinement_change, mapper_options, options.get_global_bundle_adjustment(), options.get_triangulation(), ) mapper.filter_frames(mapper_options) def initialize_reconstruction( controller: IncrementalPipeline, mapper: IncrementalMapper, mapper_options: IncrementalMapperOptions, reconstruction: Reconstruction, ) -> IncrementalPipelineStatus: """Equivalent to IncrementalPipeline.initialize_reconstruction(...)""" options = controller.options init_pair = (options.init_image_id1, options.init_image_id2) # Try to find good initial pair if not options.is_initial_pair_provided(): logging.info("Finding good initial image pair") ret = mapper.find_initial_image_pair(mapper_options, *init_pair) if ret is None: logging.info("No good initial image pair found.") return IncrementalPipelineStatus.NO_INITIAL_PAIR init_pair, init_cam2_from_cam1 = ret else: if not all(reconstruction.exists_image(i) for i in init_pair): logging.info(f"=> Initial image pair {init_pair} does not exist.") return IncrementalPipelineStatus.NO_INITIAL_PAIR maybe_init_cam2_from_cam1 = mapper.estimate_initial_two_view_geometry( mapper_options, *init_pair ) if maybe_init_cam2_from_cam1 is None: logging.info("Provided pair is unsuitable for initialization") return IncrementalPipelineStatus.BAD_INITIAL_PAIR init_cam2_from_cam1 = maybe_init_cam2_from_cam1 logging.info( f"Registering initial image pair #{init_pair[0]} and #{init_pair[1]}" ) mapper.register_initial_image_pair( mapper_options, *init_pair, init_cam2_from_cam1 ) tri_options = options.get_triangulation() tri_options.min_angle = mapper_options.init_min_tri_angle for image_id in init_pair: image = reconstruction.images[image_id] assert image.frame is not None for data_id in image.frame.image_ids: mapper.triangulate_image(tri_options, data_id.id) logging.info("Global bundle adjustment") # The following is equivalent to: mapper.adjust_global_bundle(...) custom_bundle_adjustment.adjust_global_bundle( mapper, mapper_options, options.get_global_bundle_adjustment() ) reconstruction.normalize() mapper.filter_points(mapper_options) mapper.filter_frames(mapper_options) # Initial image pair failed to register if ( reconstruction.num_reg_frames() == 0 or reconstruction.num_points3D() == 0 ): return IncrementalPipelineStatus.BAD_INITIAL_PAIR if options.extract_colors: reconstruction.extract_colors_for_all_images(options.image_path) return IncrementalPipelineStatus.SUCCESS def reconstruct_sub_model( controller: IncrementalPipeline, mapper: IncrementalMapper, mapper_options: IncrementalMapperOptions, reconstruction: Reconstruction, ) -> IncrementalPipelineStatus: """Equivalent to IncrementalPipeline.reconstruct_sub_model(...)""" mapper.begin_reconstruction(reconstruction) if has_unknown_sensor_from_rig(reconstruction): return IncrementalPipelineStatus.UNKNOWN_SENSOR_FROM_RIG if reconstruction.num_reg_frames() == 0: init_status = initialize_reconstruction( controller, mapper, mapper_options, reconstruction ) if init_status != IncrementalPipelineStatus.SUCCESS: return init_status controller.callback( IncrementalPipelineCallback.INITIAL_IMAGE_PAIR_REG_CALLBACK ) options = controller.options structure_less_flags = [] if options.structure_less_registration_only: structure_less_flags = [True] else: if options.structure_less_registration_fallback: structure_less_flags = [False, True] else: structure_less_flags = [False] snapshot_prev_num_reg_frames = reconstruction.num_reg_frames() ba_prev_num_reg_frames = reconstruction.num_reg_frames() ba_prev_num_points = reconstruction.num_points3D() reg_next_success, prev_reg_next_success = True, True while True: if not (reg_next_success or prev_reg_next_success): break if controller.check_reached_max_runtime(): break prev_reg_next_success = reg_next_success reg_next_success = False next_image_id = None for structure_less in structure_less_flags: next_images = mapper.find_next_images( mapper_options, structure_less=structure_less ) for reg_trial, next_image_id in enumerate(next_images): logging.info( f"Registering image #{next_image_id} " f"(num_reg_frames={reconstruction.num_reg_frames()})" ) if structure_less: logging.info( "Registering image with structure-less fallback" ) num_vis = ( mapper.observation_manager.num_visible_correspondences( next_image_id ) ) num_corrs = mapper.observation_manager.num_correspondences( next_image_id ) logging.info( f"=> Image sees {num_vis} / {num_corrs} correspondences" ) reg_next_success = ( mapper.register_next_structure_less_image( mapper_options, next_image_id ) ) else: num_vis = mapper.observation_manager.num_visible_points3D( next_image_id ) num_obs = mapper.observation_manager.num_observations( next_image_id ) logging.info(f"=> Image sees {num_vis} / {num_obs} points") reg_next_success = mapper.register_next_image( mapper_options, next_image_id ) if reg_next_success: break else: logging.info("=> Could not register, trying another image.") # If initial pair fails to continue for some time, # abort and try different initial pair. kMinNumInitialRegTrials = 30 if ( reg_trial >= kMinNumInitialRegTrials and reconstruction.num_reg_images() < options.min_model_size ): break if reg_next_success: break if reg_next_success and next_image_id is not None: image = reconstruction.images[next_image_id] assert image.frame is not None for data_id in image.frame.image_ids: mapper.triangulate_image( options.get_triangulation(), data_id.id ) # This is equivalent to mapper.iterative_local_refinement(...) custom_bundle_adjustment.iterative_local_refinement( mapper, options.ba_local_max_refinements, options.ba_local_max_refinement_change, mapper_options, options.get_local_bundle_adjustment(), options.get_triangulation(), next_image_id, ) if controller.check_run_global_refinement( reconstruction, ba_prev_num_reg_frames, ba_prev_num_points ): iterative_global_refinement(options, mapper_options, mapper) ba_prev_num_points = reconstruction.num_points3D() ba_prev_num_reg_frames = reconstruction.num_reg_frames() if options.extract_colors: for data_id in image.frame.image_ids: if not reconstruction.extract_colors_for_image( data_id.id, options.image_path ): logging.warning( f"Could not read image " f"{reconstruction.images[data_id.id].name} " f"at path {options.image_path}" ) if ( options.snapshot_frames_freq > 0 and reconstruction.num_reg_frames() >= options.snapshot_frames_freq + snapshot_prev_num_reg_frames ): snapshot_prev_num_reg_frames = reconstruction.num_reg_frames() write_snapshot(reconstruction, Path(options.snapshot_path)) controller.callback( IncrementalPipelineCallback.NEXT_IMAGE_REG_CALLBACK ) if mapper.num_shared_reg_images() >= int(options.max_model_overlap): break if (not reg_next_success) and prev_reg_next_success: iterative_global_refinement(options, mapper_options, mapper) if controller.check_reached_max_runtime(): return pycolmap.IncrementalPipelineStatus.INTERRUPTED # Only run final global BA, if last incremental BA was not global if ( reconstruction.num_reg_frames() > 0 and reconstruction.num_reg_frames() != ba_prev_num_reg_frames and reconstruction.num_points3D() != ba_prev_num_points ): iterative_global_refinement(options, mapper_options, mapper) return IncrementalPipelineStatus.SUCCESS def reconstruct( controller: IncrementalPipeline, mapper: IncrementalMapper, mapper_options: IncrementalMapperOptions, continue_reconstruction: bool, ) -> IncrementalPipelineStatus: """Equivalent to IncrementalPipeline.reconstruct(...)""" options = controller.options database_cache = controller.database_cache reconstruction_manager = controller.reconstruction_manager for num_trials in range(options.init_num_trials): if controller.check_reached_max_runtime(): break if not continue_reconstruction or num_trials > 0: reconstruction_idx = reconstruction_manager.add() else: reconstruction_idx = 0 reconstruction = reconstruction_manager.get(reconstruction_idx) status = reconstruct_sub_model( controller, mapper, mapper_options, reconstruction ) if status == IncrementalPipelineStatus.INTERRUPTED: reconstruction.update_point_3d_errors() logging.info("Keeping reconstruction due to interrupt") mapper.end_reconstruction(False) pycolmap.align_reconstruction_to_orig_rig_scales( database_cache.rigs, reconstruction ) elif status == IncrementalPipelineStatus.UNKNOWN_SENSOR_FROM_RIG: logging.error( "Discarding reconstruction due to unknown sensor_from_rig " "poses. Either explicitly define the poses by configuring the " "rigs or first run reconstruction without configured rigs and " "then derive the poses from the initial reconstruction for a " "subsequent reconstruction with rig constraints. See " "documentation for detailed instructions." ) mapper.end_reconstruction(True) reconstruction_manager.delete(reconstruction_idx) return IncrementalPipelineStatus.STOP elif status == IncrementalPipelineStatus.BAD_INITIAL_PAIR: logging.info("Disacarding reconstruction due to bad initial pair") mapper.end_reconstruction(True) reconstruction_manager.delete(reconstruction_idx) elif status == IncrementalPipelineStatus.NO_INITIAL_PAIR: logging.info("Disacarding reconstruction due to no initial pair") mapper.end_reconstruction(True) reconstruction_manager.delete(reconstruction_idx) return IncrementalPipelineStatus.CONTINUE elif status == IncrementalPipelineStatus.SUCCESS: num_reg_images = reconstruction.num_reg_images() total_num_reg_images = mapper.num_total_reg_images() if ( options.multiple_models and reconstruction_manager.size() > 1 and num_reg_images < options.min_model_size ) or num_reg_images == 0: logging.info( "Discarding reconstruction due to insufficient size" ) mapper.end_reconstruction(True) reconstruction_manager.delete(reconstruction_idx) else: reconstruction.update_point_3d_errors() logging.info("Keeping successful reconstruction") mapper.end_reconstruction(False) pycolmap.align_reconstruction_to_orig_rig_scales( database_cache.rigs, reconstruction ) controller.callback( IncrementalPipelineCallback.LAST_IMAGE_REG_CALLBACK ) if ( not options.multiple_models or reconstruction_manager.size() >= options.max_num_models or total_num_reg_images >= database_cache.num_images() - 1 ): return IncrementalPipelineStatus.STOP else: logging.fatal(f"Unknown reconstruction status: {status}") return IncrementalPipelineStatus.CONTINUE def main_incremental_mapper(controller: IncrementalPipeline) -> None: """Equivalent to IncrementalPipeline.run()""" timer = pycolmap.Timer() timer.start() database_cache = controller.database_cache if database_cache.num_images() == 0: logging.warning("No images with matches found in the database") return if ( controller.options.use_prior_position and database_cache.num_pose_priors() == 0 ): logging.warning("No pose priors") return reconstruction_manager = controller.reconstruction_manager continue_reconstruction = reconstruction_manager.size() > 0 if reconstruction_manager.size() > 1: logging.fatal( "Can only resume from a single reconstruction, " "but multiple are given" ) num_images = database_cache.num_images() mapper = IncrementalMapper(database_cache) mapper_options = controller.options.get_mapper() if ( reconstruct(controller, mapper, mapper_options, continue_reconstruction) == IncrementalPipelineStatus.STOP ): return def should_stop(): return ( mapper.num_total_reg_images() == num_images or controller.check_reached_max_runtime() ) for _ in range(2): # number of relaxations if should_stop(): break logging.info("=> Relaxing the initialization constraints") mapper_options.init_min_num_inliers = int( mapper_options.init_min_num_inliers / 2 ) mapper.reset_initialization_stats() if ( reconstruct( controller, mapper, mapper_options, continue_reconstruction=False, ) == IncrementalPipelineStatus.STOP ): return if should_stop(): break logging.info("=> Relaxing the initialization constraints") mapper_options.init_min_tri_angle /= 2 mapper.reset_initialization_stats() if ( reconstruct( controller, mapper, mapper_options, continue_reconstruction=False, ) == IncrementalPipelineStatus.STOP ): return timer.print_minutes() def main( database_path: Path, image_path: Path, output_path: Path, options: IncrementalPipelineOptions | None = None, input_path: Path | None = None, ) -> dict[int, Reconstruction]: if options is None: options = IncrementalPipelineOptions() options.image_path = image_path if not database_path.exists(): logging.fatal(f"Database path does not exist: {database_path}") if not image_path.exists(): logging.fatal(f"Image path does not exist: {image_path}") output_path.mkdir(exist_ok=True, parents=True) reconstruction_manager = ReconstructionManager() if input_path: reconstruction_manager.read(input_path) with pycolmap.Database.open(database_path) as database: mapper = IncrementalPipeline(options, database, reconstruction_manager) num_images = database.num_images() with enlighten.Manager() as manager: with manager.counter( total=num_images, desc="Images registered:" ) as pbar: pbar.update(0, force=True) mapper.add_callback( IncrementalPipelineCallback.INITIAL_IMAGE_PAIR_REG_CALLBACK, lambda: pbar.update(2), ) mapper.add_callback( IncrementalPipelineCallback.NEXT_IMAGE_REG_CALLBACK, lambda: pbar.update(1), ) main_incremental_mapper(mapper) # write and output reconstruction_manager.write(output_path) reconstructions = {} for i in range(reconstruction_manager.size()): reconstructions[i] = reconstruction_manager.get(i) return reconstructions def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("--database_path", required=True) parser.add_argument("--image_path", required=True) parser.add_argument("--input_path", default=None) parser.add_argument("--output_path", required=True) return parser.parse_args() if __name__ == "__main__": args = parse_args() main( database_path=Path(args.database_path), image_path=Path(args.image_path), input_path=Path(args.input_path) if args.input_path else None, output_path=Path(args.output_path), ) colmap-4.1.1/python/examples/custom_incremental_pipeline_test.py000066400000000000000000000146651522646662000253450ustar00rootroot00000000000000# Equivalent tests to src/colmap/controllers/incremental_pipeline_test.cc from pathlib import Path import custom_incremental_pipeline import pycolmap def expect_equal_reconstructions( gt: pycolmap.Reconstruction, computed: pycolmap.Reconstruction, max_rotation_error_deg: float, max_proj_center_error: float, num_obs_tolerance: float, ) -> None: assert computed.num_cameras() == gt.num_cameras() assert computed.num_images() == gt.num_images() assert computed.num_reg_images() == gt.num_reg_images() assert ( computed.compute_num_observations() >= (1 - num_obs_tolerance) * gt.compute_num_observations() ) result = pycolmap.compare_reconstructions( computed, gt, alignment_error="proj_center", max_proj_center_error=max_proj_center_error, ) assert result is not None for error in result["errors"]: assert error.rotation_error_deg < max_rotation_error_deg assert error.proj_center_error < max_proj_center_error def create_test_options() -> pycolmap.IncrementalPipelineOptions: options = pycolmap.IncrementalPipelineOptions() # Use single thread for deterministic behavior. options.num_threads = 1 return options def test_without_noise(tmp_path: Path) -> None: pycolmap.set_random_seed(0) database_path = tmp_path / "database.db" image_path = tmp_path / "images" image_path.mkdir() output_path = tmp_path / "sparse" output_path.mkdir() with pycolmap.Database.open(database_path) as database: synthetic_dataset_options = pycolmap.SyntheticDatasetOptions() synthetic_dataset_options.num_cameras_per_rig = 2 synthetic_dataset_options.num_frames_per_rig = 7 synthetic_dataset_options.num_points3D = 50 gt_reconstruction = pycolmap.synthesize_dataset( synthetic_dataset_options, database ) custom_incremental_pipeline.main( database_path=database_path, image_path=image_path, output_path=output_path, options=create_test_options(), ) expect_equal_reconstructions( gt_reconstruction, pycolmap.Reconstruction(output_path / "0"), max_rotation_error_deg=1e-2, max_proj_center_error=1e-4, num_obs_tolerance=0, ) def test_with_noise(tmp_path: Path) -> None: pycolmap.set_random_seed(0) database_path = tmp_path / "database.db" image_path = tmp_path / "images" image_path.mkdir() output_path = tmp_path / "sparse" output_path.mkdir() with pycolmap.Database.open(database_path) as database: synthetic_dataset_options = pycolmap.SyntheticDatasetOptions() synthetic_dataset_options.num_cameras_per_rig = 2 synthetic_dataset_options.num_frames_per_rig = 7 synthetic_dataset_options.num_points3D = 100 gt_reconstruction = pycolmap.synthesize_dataset( synthetic_dataset_options, database ) synthetic_noise_options = pycolmap.SyntheticNoiseOptions() synthetic_noise_options.point2D_stddev = 0.5 pycolmap.synthesize_noise(synthetic_noise_options, gt_reconstruction) custom_incremental_pipeline.main( database_path=database_path, image_path=image_path, output_path=output_path, options=create_test_options(), ) expect_equal_reconstructions( gt_reconstruction, pycolmap.Reconstruction(output_path / "0"), max_rotation_error_deg=1e-1, max_proj_center_error=1e-1, num_obs_tolerance=0.02, ) def test_multi_reconstruction(tmp_path: Path) -> None: pycolmap.set_random_seed(0) database_path = tmp_path / "database.db" image_path = tmp_path / "images" image_path.mkdir() output_path = tmp_path / "sparse" output_path.mkdir() with pycolmap.Database.open(database_path) as database: synthetic_dataset_options = pycolmap.SyntheticDatasetOptions() synthetic_dataset_options.num_cameras_per_rig = 1 synthetic_dataset_options.num_frames_per_rig = 5 synthetic_dataset_options.num_points3D = 50 gt_reconstruction1 = pycolmap.synthesize_dataset( synthetic_dataset_options, database ) synthetic_dataset_options.num_frames_per_rig = 4 gt_reconstruction2 = pycolmap.synthesize_dataset( synthetic_dataset_options, database ) options = create_test_options() options.min_model_size = 4 custom_incremental_pipeline.main( database_path=database_path, image_path=image_path, output_path=output_path, options=options, ) assert len(list(output_path.iterdir())) == 2 reconstruction1 = pycolmap.Reconstruction(output_path / "0") reconstruction2 = pycolmap.Reconstruction(output_path / "1") if reconstruction1 == gt_reconstruction2.num_reg_images(): reconstruction1, reconstruction2 = reconstruction2, reconstruction1 expect_equal_reconstructions( gt_reconstruction1, reconstruction1, max_rotation_error_deg=1e-2, max_proj_center_error=1e-4, num_obs_tolerance=0, ) expect_equal_reconstructions( gt_reconstruction2, reconstruction2, max_rotation_error_deg=1e-2, max_proj_center_error=1e-4, num_obs_tolerance=0, ) def test_chained_matches(tmp_path: Path) -> None: pycolmap.set_random_seed(0) database_path = tmp_path / "database.db" image_path = tmp_path / "images" image_path.mkdir() output_path = tmp_path / "sparse" output_path.mkdir() with pycolmap.Database.open(database_path) as database: synthetic_dataset_options = pycolmap.SyntheticDatasetOptions() synthetic_dataset_options.num_cameras_per_rig = 1 synthetic_dataset_options.num_frames_per_rig = 4 synthetic_dataset_options.num_points3D = 100 synthetic_dataset_options.match_config = ( pycolmap.SyntheticDatasetMatchConfig.CHAINED ) gt_reconstruction = pycolmap.synthesize_dataset( synthetic_dataset_options, database ) custom_incremental_pipeline.main( database_path=database_path, image_path=image_path, output_path=output_path, options=create_test_options(), ) expect_equal_reconstructions( gt_reconstruction, pycolmap.Reconstruction(output_path / "0"), max_rotation_error_deg=1e-2, max_proj_center_error=1e-4, num_obs_tolerance=0, ) colmap-4.1.1/python/examples/example.py000066400000000000000000000045711522646662000201540ustar00rootroot00000000000000""" An example for running incremental SfM on images with the pycolmap interface. """ import shutil import urllib.request import zipfile from pathlib import Path import enlighten import pycolmap from pycolmap import logging def incremental_mapping_with_pbar( database_path: Path, image_path: Path, sfm_path: Path ) -> dict[int, pycolmap.Reconstruction]: with pycolmap.Database.open(database_path) as database: num_images = database.num_images() with enlighten.Manager() as manager: with manager.counter( total=num_images, desc="Images registered:" ) as pbar: pbar.update(0, force=True) reconstructions = pycolmap.incremental_mapping( database_path, image_path, sfm_path, initial_image_pair_callback=lambda: pbar.update(2), next_image_callback=lambda: pbar.update(1), ) return reconstructions def run() -> None: output_path = Path("example/") image_path = output_path / "Fountain/images" database_path = output_path / "database.db" sfm_path = output_path / "sfm" output_path.mkdir(exist_ok=True) # The log filename is postfixed with the execution timestamp. logging.set_log_destination(logging.INFO, output_path / "INFO.log.") data_url = "https://cvg-data.inf.ethz.ch/local-feature-evaluation-schoenberger2017/Strecha-Fountain.zip" if not image_path.exists(): logging.info("Downloading the data.") zip_path = output_path / "data.zip" urllib.request.urlretrieve(data_url, zip_path) with zipfile.ZipFile(zip_path, "r") as fid: fid.extractall(output_path) logging.info(f"Data extracted to {output_path}.") if database_path.exists(): database_path.unlink() pycolmap.set_random_seed(0) pycolmap.extract_features(database_path, image_path) pycolmap.match_exhaustive(database_path) if sfm_path.exists(): shutil.rmtree(sfm_path) sfm_path.mkdir(exist_ok=True) recs = incremental_mapping_with_pbar(database_path, image_path, sfm_path) # alternatively, use: # import custom_incremental_pipeline # recs = custom_incremental_pipeline.main( # database_path, image_path, sfm_path # ) for idx, rec in recs.items(): logging.info(f"#{idx} {rec.summary()}") if __name__ == "__main__": run() colmap-4.1.1/python/examples/panorama_sfm.py000066400000000000000000000572361522646662000211720ustar00rootroot00000000000000""" An example for running incremental SfM on 360 spherical panorama images. Two modes are available via --pano_render_type: * "perspective_overlapping" / "perspective_non_overlapping": render the panoramas into a rig of perspective virtual cameras (cubemap-style) and reconstruct from those. * "spherical": reconstruct directly on the panoramas using the native equirectangular camera model, without rendering perspective images. The "perspective_*" modes are generally more accurate but slower. For these modes, the script additionally writes a reconstruction that maps the perspective virtual cameras back onto the original equirectangular input images. """ import argparse import collections import enum import os from collections.abc import Sequence from concurrent.futures import ThreadPoolExecutor, as_completed from dataclasses import dataclass from pathlib import Path from threading import Lock from typing import Literal, TypeVar, cast import cv2 import numpy as np import numpy.typing as npt import PIL.ExifTags import PIL.Image from scipy.spatial.transform import Rotation from tqdm import tqdm import pycolmap from pycolmap import logging class Matcher(enum.StrEnum): SEQUENTIAL = enum.auto() EXHAUSTIVE = enum.auto() VOCABTREE = enum.auto() SPATIAL = enum.auto() class Mapper(enum.StrEnum): INCREMENTAL = enum.auto() GLOBAL = enum.auto() class PanoRenderType(enum.StrEnum): PERSPECTIVE_OVERLAPPING = enum.auto() PERSPECTIVE_NON_OVERLAPPING = enum.auto() # Reconstruct directly on the panoramas with the native EQUIRECTANGULAR # camera model instead of rendering perspective images. SPHERICAL = enum.auto() N = TypeVar("N", bound=int) NDArrayNx2 = np.ndarray[tuple[N, Literal[2]], np.dtype[np.float64]] NDArray3x1 = np.ndarray[tuple[Literal[3], Literal[1]], np.dtype[np.float64]] NDArray3x3 = np.ndarray[tuple[Literal[3], Literal[3]], np.dtype[np.float64]] @dataclass class PanoRenderOptions: num_steps_yaw: int pitches_deg: Sequence[float] hfov_deg: float vfov_deg: float PANO_RENDER_OPTIONS: dict[PanoRenderType, PanoRenderOptions] = { PanoRenderType.PERSPECTIVE_OVERLAPPING: PanoRenderOptions( num_steps_yaw=4, pitches_deg=(-35.0, 0.0, 35.0), hfov_deg=90.0, vfov_deg=90.0, ), # Cubemap without top and bottom images. PanoRenderType.PERSPECTIVE_NON_OVERLAPPING: PanoRenderOptions( num_steps_yaw=4, pitches_deg=(0.0,), hfov_deg=90.0, vfov_deg=90.0, ), } def create_virtual_camera( *, pano_width: int, pano_height: int, hfov_deg: float, vfov_deg: float, ) -> pycolmap.Camera: """Create a virtual perspective camera.""" image_width = int(pano_width * hfov_deg / 360) image_height = int(pano_height * vfov_deg / 180) focal = image_width / (2 * np.tan(np.deg2rad(hfov_deg) / 2)) camera = pycolmap.Camera.create_from_model_id( camera_id=0, model=pycolmap.CameraModelId.SIMPLE_PINHOLE, focal_length=focal, width=image_width, height=image_height, ) # Not set by create_from_model_id. camera.has_prior_focal_length = True return camera def get_virtual_camera_rays( camera: pycolmap.Camera, ) -> npt.NDArray[np.floating]: size = (camera.width, camera.height) x, y = np.indices(size).astype(np.float32) xy: NDArrayNx2 = np.column_stack([x.ravel(), y.ravel()]) # The center of the upper left most pixel has coordinate (0.5, 0.5) xy += 0.5 xy_norm: NDArrayNx2 = camera.cam_from_img(image_points=xy) rays = np.concatenate([xy_norm, np.ones_like(xy_norm[:, :1])], -1) rays /= np.linalg.norm(rays, axis=-1, keepdims=True) return rays def spherical_img_from_cam( image_size: tuple[int, int], rays_in_cam: npt.NDArray[np.floating] ) -> npt.NDArray[np.floating]: """Project rays into a 360 panorama (spherical) image.""" if image_size[0] != image_size[1] * 2: raise ValueError("Only 360° panoramas are supported.") if rays_in_cam.ndim != 2 or rays_in_cam.shape[1] != 3: raise ValueError(f"{rays_in_cam.shape=} but expected (N,3).") r = rays_in_cam.T yaw = np.arctan2(r[0], r[2]) pitch = -np.arctan2(r[1], np.linalg.norm(r[[0, 2]], axis=0)) u = (1 + yaw / np.pi) / 2 v = (1 - pitch * 2 / np.pi) / 2 return np.stack([u, v], -1) * image_size def get_virtual_rotations( num_steps_yaw: int, pitches_deg: Sequence[float] ) -> Sequence[npt.NDArray[np.floating]]: """Get the relative rotations of the virtual cameras w.r.t. the panorama.""" # Assuming that the panos are approximately upright. cams_from_pano_r = [] yaws = np.linspace(0, 360, num_steps_yaw, endpoint=False) for pitch_deg in pitches_deg: yaw_offset = (360 / num_steps_yaw / 2) if pitch_deg > 0 else 0 for yaw_deg in yaws + yaw_offset: cam_from_pano_r = Rotation.from_euler( "XY", [-pitch_deg, -yaw_deg], degrees=True ).as_matrix() cams_from_pano_r.append(cam_from_pano_r) return cams_from_pano_r def create_pano_rig_config( cams_from_pano_rotation: Sequence[npt.NDArray[np.floating]], ref_idx: int = 0, ) -> pycolmap.RigConfig: """Create a RigConfig for the given virtual rotations.""" rig_cameras = [] zero_translation = cast(NDArray3x1, np.zeros((3, 1), dtype=np.float64)) for idx, cam_from_pano_rotation in enumerate(cams_from_pano_rotation): if idx == ref_idx: cam_from_rig = None else: cam_from_ref_rotation = ( cam_from_pano_rotation @ cams_from_pano_rotation[ref_idx].T ) cam_from_rig = pycolmap.Rigid3d( pycolmap.Rotation3d(cam_from_ref_rotation), zero_translation, ) rig_cameras.append( pycolmap.RigConfigCamera( ref_sensor=idx == ref_idx, image_prefix=f"pano_camera{idx}/", cam_from_rig=cam_from_rig, ) ) return pycolmap.RigConfig(cameras=rig_cameras) class PanoProcessor: def __init__( self, pano_image_dir: Path, output_image_dir: Path, mask_dir: Path, render_options: PanoRenderOptions, ): self.render_options = render_options self.pano_image_dir = pano_image_dir self.output_image_dir = output_image_dir self.mask_dir = mask_dir self.cams_from_pano_rotation = get_virtual_rotations( num_steps_yaw=render_options.num_steps_yaw, pitches_deg=render_options.pitches_deg, ) self.rig_config = create_pano_rig_config(self.cams_from_pano_rotation) # We assign each pano pixel to the virtual camera # with the closest camera center. self.cam_centers_in_pano = np.einsum( "nij,i->nj", self.cams_from_pano_rotation, [0, 0, 1] ) self._lock = Lock() # These are initialized on the first pano image # to avoid recomputing the rays for each pano image. self._camera: pycolmap.Camera | None = None self._pano_size: tuple[int, int] | None = None self._rays_in_cam: npt.NDArray[np.floating] | None = None def process(self, pano_name: str) -> None: pano_path = self.pano_image_dir / pano_name try: pano_pil_image = PIL.Image.open(pano_path) except PIL.Image.UnidentifiedImageError: logging.info(f"Skipping file {pano_path} as it cannot be read.") return pano_exif = pano_pil_image.getexif() gpsonly_exif = PIL.Image.Exif() gpsonly_exif[PIL.ExifTags.IFD.GPSInfo] = pano_exif.get_ifd( PIL.ExifTags.IFD.GPSInfo ) pano_image = np.asarray(pano_pil_image) pano_height, pano_width, *_ = pano_image.shape if pano_width != pano_height * 2: raise ValueError("Only 360° panoramas are supported.") with self._lock: if self._camera is None: # First image, precompute rays once. self._camera = create_virtual_camera( pano_width=pano_width, pano_height=pano_height, hfov_deg=self.render_options.hfov_deg, vfov_deg=self.render_options.vfov_deg, ) for rig_camera in self.rig_config.cameras: rig_camera.camera = self._camera self._pano_size = (pano_width, pano_height) self._rays_in_cam = get_virtual_camera_rays(self._camera) else: # Later images, verify consistent panoramas. if (pano_width, pano_height) != self._pano_size: raise ValueError( "Panoramas of different sizes are not supported." ) for cam_idx, cam_from_pano_r in enumerate(self.cams_from_pano_rotation): assert self._rays_in_cam is not None rays_in_pano = self._rays_in_cam @ cam_from_pano_r xy_in_pano = spherical_img_from_cam(self._pano_size, rays_in_pano) xy_in_pano = xy_in_pano.reshape( self._camera.width, self._camera.height, 2 ).astype(np.float32) xy_in_pano -= 0.5 # COLMAP to OpenCV pixel origin. x_coords, y_coords = np.moveaxis(xy_in_pano, [0, 1, 2], [2, 1, 0]) image = cv2.remap( pano_image, x_coords, y_coords, cv2.INTER_LINEAR, borderMode=cv2.BORDER_WRAP, ) # We define a mask such that each pixel of the panorama has its # features extracted only in a single virtual camera. closest_camera = np.argmax( rays_in_pano @ self.cam_centers_in_pano.T, -1 ) mask = ( ((closest_camera == cam_idx) * 255) .astype(np.uint8) .reshape(self._camera.width, self._camera.height) .transpose() ) image_name = ( self.rig_config.cameras[cam_idx].image_prefix + pano_name ) mask_name = f"{image_name}.png" image_path = self.output_image_dir / image_name image_path.parent.mkdir(exist_ok=True, parents=True) PIL.Image.fromarray(image).save(image_path, exif=gpsonly_exif) mask_path = self.mask_dir / mask_name mask_path.parent.mkdir(exist_ok=True, parents=True) if not pycolmap.Bitmap.from_array(mask).write(mask_path): raise RuntimeError(f"Cannot write {mask_path}") def split_image_name(self, image_name: str) -> tuple[int, str]: """Split a rendered image name into (virtual camera idx, pano name).""" for cam_idx, rig_camera in enumerate(self.rig_config.cameras): prefix = rig_camera.image_prefix if image_name.startswith(prefix): return cam_idx, image_name[len(prefix) :] raise ValueError(f"Unknown virtual camera for image {image_name!r}.") def convert_to_equirectangular( self, reconstruction: pycolmap.Reconstruction ) -> pycolmap.Reconstruction: """Convert a reconstruction built from the rig of perspective virtual cameras back to one equirectangular camera/image per input panorama. The output reconstruction references the original panorama images with the native EQUIRECTANGULAR camera model. Frame poses, 3D points, and all keypoints (including those without a 3D observation) are carried over by re-projecting the perspective keypoints onto the panorama through the same spherical mapping used for rendering, so the result is a valid, bundle-adjustable reconstruction. """ if self._camera is None or self._pano_size is None: raise RuntimeError("No panorama was rendered yet.") pano_width, pano_height = self._pano_size equirect = pycolmap.Reconstruction() equirect_camera = pycolmap.Camera.create_from_model_id( camera_id=1, model=pycolmap.CameraModelId.EQUIRECTANGULAR, focal_length=0.0, width=pano_width, height=pano_height, ) equirect.add_camera_with_trivial_rig(equirect_camera) # The rig reference sensor is virtual camera 0 (see # create_pano_rig_config), so rig_from_world == cam0_from_world and # pano_from_world = pano_from_cam0 @ cam0_from_world. The virtual # cameras share the panorama center, hence the zero translation. pano_from_ref = pycolmap.Rigid3d( pycolmap.Rotation3d( cast(NDArray3x3, self.cams_from_pano_rotation[0]) ), cast(NDArray3x1, np.zeros((3, 1), dtype=np.float64)), ).inverse() # Group the registered virtual cameras by frame. All virtual cameras of # a frame observe the same panorama and share its pose, so we can # accumulate their keypoints into a single equirectangular image. images_by_frame: dict[int, list[pycolmap.Image]] = ( collections.defaultdict(list) ) for image in reconstruction.images.values(): if image.has_pose: images_by_frame[image.frame_id].append(image) # Maps an image_id of a virtual camera to a dict from its old point2D # index to the (new point2D index, pano_name) in the equirectangular # image, so we can later rebuild the 3D point tracks. old_to_new_point2D: dict[int, dict[int, tuple[int, str]]] = {} pano_to_image_id: dict[str, int] = {} frame_images = sorted( images_by_frame.values(), key=lambda images: self.split_image_name(images[0].name)[1], ) for image_id, images in enumerate(frame_images, start=1): pano_name = self.split_image_name(images[0].name)[1] pano_to_image_id[pano_name] = image_id frame = images[0].frame assert frame is not None rig_from_world = frame.rig_from_world assert rig_from_world is not None pano_from_world = pano_from_ref * rig_from_world # Concatenate the keypoints of all virtual cameras of this panorama. keypoints: list[npt.NDArray[np.floating]] = [] for image in images: cam_idx = self.split_image_name(image.name)[0] num_points2D = len(image.points2D) if num_points2D == 0: old_to_new_point2D[image.image_id] = {} continue xy = np.array([point2D.xy for point2D in image.points2D]) rays_in_cam: npt.NDArray[np.floating] = np.asarray( self._camera.cam_ray_from_img(image_points=xy) ) rays_in_cam /= np.linalg.norm( rays_in_cam, axis=-1, keepdims=True ) rays_in_pano = ( rays_in_cam @ self.cams_from_pano_rotation[cam_idx] ) xy_in_pano = spherical_img_from_cam( self._pano_size, rays_in_pano ) base_idx = len(keypoints) keypoints.extend(xy_in_pano) old_to_new_point2D[image.image_id] = { point2D_idx: (base_idx + point2D_idx, pano_name) for point2D_idx in range(num_points2D) } equirect.add_image_with_trivial_frame( pycolmap.Image( name=pano_name, keypoints=keypoints, camera_id=equirect_camera.camera_id, image_id=image_id, ), pano_from_world, ) for point3D_id, point3D in reconstruction.points3D.items(): track = pycolmap.Track() for element in point3D.track.elements: new_point2D_idx, pano_name = old_to_new_point2D[ element.image_id ][element.point2D_idx] track.add_element(pano_to_image_id[pano_name], new_point2D_idx) equirect.add_point3D_with_id( point3D_id, pycolmap.Point3D( xyz=point3D.xyz, color=point3D.color, track=track ), ) return equirect def render_perspective_images( pano_image_names: Sequence[str], pano_image_dir: Path, output_image_dir: Path, mask_dir: Path, render_options: PanoRenderOptions, ) -> PanoProcessor: processor = PanoProcessor( pano_image_dir, output_image_dir, mask_dir, render_options ) num_panos = len(pano_image_names) max_workers = min(32, (os.cpu_count() or 2) - 1) with tqdm(total=num_panos) as pbar: with ThreadPoolExecutor(max_workers=max_workers) as thread_pool: futures = [ thread_pool.submit(processor.process, pano_name) for pano_name in pano_image_names ] for future in as_completed(futures): future.result() pbar.update(1) return processor def run_matcher( args: argparse.Namespace, database_path: Path, matching_options: pycolmap.FeatureMatchingOptions, ) -> None: if args.matcher == "sequential": pycolmap.match_sequential( database_path, pairing_options=pycolmap.SequentialPairingOptions( loop_detection=True ), matching_options=matching_options, ) elif args.matcher == "exhaustive": pycolmap.match_exhaustive( database_path, matching_options=matching_options ) elif args.matcher == "vocabtree": pycolmap.match_vocabtree( database_path, matching_options=matching_options ) elif args.matcher == "spatial": pycolmap.match_spatial(database_path, matching_options=matching_options) else: logging.fatal(f"Unknown matcher: {args.matcher}") def run_spherical( args: argparse.Namespace, database_path: Path, rec_path: Path ) -> None: """Reconstruct directly on the equirectangular panoramas with the native EQUIRECTANGULAR camera model, without rendering perspective images.""" logging.info("Reconstructing with spherical camera") reader_options = pycolmap.ImageReaderOptions(camera_model="EQUIRECTANGULAR") pycolmap.extract_features( database_path, args.input_image_path, reader_options=reader_options, camera_mode=pycolmap.CameraMode.SINGLE, ) # A single EQUIRECTANGULAR camera observes the whole sphere from one # center, so there is no rig and no per-frame image-pair skipping. run_matcher(args, database_path, pycolmap.FeatureMatchingOptions()) # The EQUIRECTANGULAR model has no focal length, principal point, or # distortion to refine; its (w, h) params are held constant in bundle # adjustment. recs = pycolmap.incremental_mapping( database_path, args.input_image_path, rec_path ) for idx, rec in recs.items(): logging.info(f"#{idx} {rec.summary()}") def run_perspective( args: argparse.Namespace, database_path: Path, rec_path: Path ) -> None: """Render the panoramas into a rig of perspective virtual cameras and reconstruct from those.""" logging.info("Reconstructing with rig of perspective virtual cameras") image_dir = args.output_path / "images" mask_dir = args.output_path / "masks" image_dir.mkdir(exist_ok=True, parents=True) mask_dir.mkdir(exist_ok=True, parents=True) # Search for input images. pano_image_dir = args.input_image_path pano_image_names = sorted( p.relative_to(pano_image_dir).as_posix() for p in pano_image_dir.rglob("*") if not p.is_dir() ) logging.info(f"Found {len(pano_image_names)} images in {pano_image_dir}.") processor = render_perspective_images( pano_image_names, pano_image_dir, image_dir, mask_dir, PANO_RENDER_OPTIONS[args.pano_render_type], ) rig_config = processor.rig_config rendered_camera = rig_config.cameras[0].camera assert rendered_camera is not None # Make mypy happy. pycolmap.extract_features( database_path, image_dir, reader_options=pycolmap.ImageReaderOptions( mask_path=mask_dir, camera_model=rendered_camera.model_name, camera_params=rendered_camera.params_to_string(), ), camera_mode=pycolmap.CameraMode.PER_FOLDER, ) with pycolmap.Database.open(database_path) as db: pycolmap.apply_rig_config([rig_config], db) matching_options = pycolmap.FeatureMatchingOptions() # We have perfect sensor_from_rig poses (except for potential stitching # artifacts by the spherical image provider), so we can perform geometric # verification using rig constraints. matching_options.rig_verification = True # The images within a frame do not have overlap due to the provided masks. matching_options.skip_image_pairs_in_same_frame = True run_matcher(args, database_path, matching_options) if args.mapper == Mapper.INCREMENTAL: opts = pycolmap.IncrementalPipelineOptions( ba_refine_sensor_from_rig=False, ba_refine_focal_length=False, ba_refine_principal_point=False, ba_refine_extra_params=False, ) recs = pycolmap.incremental_mapping( database_path, image_dir, rec_path, opts ) elif args.mapper == Mapper.GLOBAL: global_opts = pycolmap.GlobalPipelineOptions( mapper=pycolmap.GlobalMapperOptions(refine_sensor_from_rig=False) ) # Don't set these in the init to not overwrite custom default options. global_opts.mapper.bundle_adjustment.refine_focal_length = False global_opts.mapper.bundle_adjustment.refine_principal_point = False global_opts.mapper.bundle_adjustment.refine_extra_params = False recs = pycolmap.global_mapping( database_path, image_dir, rec_path, global_opts ) else: logging.fatal(f"Unknown mapper: {args.mapper}") for idx, rec in recs.items(): logging.info(f"#{idx} {rec.summary()}") logging.info("Converting virtual cameras back to equirectangular") equirect_rec_path = args.output_path / "sparse_equirectangular" for idx, rec in recs.items(): equirect_rec = processor.convert_to_equirectangular(rec) output_path = equirect_rec_path / str(idx) output_path.mkdir(exist_ok=True, parents=True) equirect_rec.write(output_path) logging.info(f"#{idx} {equirect_rec.summary()}") def run(args: argparse.Namespace) -> None: pycolmap.set_random_seed(0) database_path = args.output_path / "database.db" if database_path.exists(): database_path.unlink() rec_path = args.output_path / "sparse" rec_path.mkdir(exist_ok=True, parents=True) if args.pano_render_type == PanoRenderType.SPHERICAL: run_spherical(args, database_path, rec_path) else: run_perspective(args, database_path, rec_path) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--input_image_path", type=Path, required=True) parser.add_argument("--output_path", type=Path, required=True) parser.add_argument( "--matcher", type=Matcher, default=Matcher.SEQUENTIAL, choices=list(Matcher), ) parser.add_argument( "--mapper", type=Mapper, default=Mapper.INCREMENTAL, choices=list(Mapper), ) parser.add_argument( "--pano_render_type", type=PanoRenderType, default=PanoRenderType.PERSPECTIVE_OVERLAPPING, choices=list(PanoRenderType), ) args = parser.parse_args() run(args) colmap-4.1.1/python/examples/visualize_model.py000077500000000000000000000166521522646662000217220ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import argparse import numpy as np import numpy.typing as npt import open3d import pycolmap class Model: def __init__(self) -> None: self.reconstruction: pycolmap.Reconstruction self.visualizer: open3d.visualization.Visualizer def read_model(self, path: str) -> None: self.reconstruction = pycolmap.Reconstruction(path) def add_points( self, min_track_len: int = 3, remove_statistical_outlier: bool = True ) -> None: pcd = open3d.geometry.PointCloud() xyz = [] rgb = [] for point in self.reconstruction.points3D.values(): if point.track.length() < min_track_len: continue xyz.append(point.xyz) rgb.append(point.color / 255) pcd.points = open3d.utility.Vector3dVector(xyz) pcd.colors = open3d.utility.Vector3dVector(rgb) # remove obvious outliers if remove_statistical_outlier: [pcd, _] = pcd.remove_statistical_outlier( nb_neighbors=20, std_ratio=2.0 ) # open3d.visualization.draw_geometries([pcd]) self.visualizer.add_geometry(pcd) self.visualizer.poll_events() self.visualizer.update_renderer() def add_cameras(self, scale: float = 1) -> None: frustums = [] for img in self.reconstruction.images.values(): # extrinsics world_from_cam = img.cam_from_world().inverse() R = world_from_cam.rotation.matrix() t = world_from_cam.translation # intrinsics cam = img.camera if cam.model in ( pycolmap.CameraModelId.SIMPLE_PINHOLE, pycolmap.CameraModelId.SIMPLE_RADIAL, pycolmap.CameraModelId.RADIAL, ): fx = fy = cam.params[0] cx = cam.params[1] cy = cam.params[2] elif cam.model in ( pycolmap.CameraModelId.PINHOLE, pycolmap.CameraModelId.OPENCV, pycolmap.CameraModelId.OPENCV_FISHEYE, pycolmap.CameraModelId.FULL_OPENCV, ): fx = cam.params[0] fy = cam.params[1] cx = cam.params[2] cy = cam.params[3] else: raise Exception("Camera model not supported") # intrinsics K = np.identity(3) K[0, 0] = fx K[1, 1] = fy K[0, 2] = cx K[1, 2] = cy # create axis, plane and pyramid geometries that will be drawn cam_model = draw_camera(K, R, t, cam.width, cam.height, scale) frustums.extend(cam_model) # add geometries to visualizer for i in frustums: self.visualizer.add_geometry(i) def create_window(self) -> None: self.visualizer = open3d.visualization.Visualizer() self.visualizer.create_window() def show(self) -> None: self.visualizer.poll_events() self.visualizer.update_renderer() self.visualizer.run() self.visualizer.destroy_window() def draw_camera( K: npt.NDArray[np.float64], R: npt.NDArray[np.float64], t: npt.NDArray[np.float64], w: int, h: int, scale: float = 1, color: list[float] | None = None, ) -> list[open3d.geometry.Geometry]: """Create axis, plane and pyramed geometries in Open3D format. :param K: calibration matrix (camera intrinsics) :param R: rotation matrix :param t: translation :param w: image width :param h: image height :param scale: camera model scale :param color: color of the image plane and pyramid lines :return: camera model geometries (axis, plane and pyramid) """ if color is None: color = [0.8, 0.2, 0.8] # intrinsics K = K.copy() / scale Kinv = np.linalg.inv(K) # 4x4 transformation T = np.column_stack((R, t)) T = np.vstack((T, (0, 0, 0, 1))) # axis axis = open3d.geometry.TriangleMesh.create_coordinate_frame( size=0.5 * scale ) axis.transform(T) # points in pixel points_pixel = [ [0, 0, 0], [0, 0, 1], [w, 0, 1], [0, h, 1], [w, h, 1], ] # pixel to camera coordinate system points = [Kinv @ p for p in points_pixel] # image plane width = abs(points[1][0]) + abs(points[3][0]) height = abs(points[1][1]) + abs(points[3][1]) plane = open3d.geometry.TriangleMesh.create_box(width, height, depth=1e-6) plane.paint_uniform_color(color) plane.translate([points[1][0], points[1][1], scale]) plane.transform(T) # pyramid points_in_world = [(R @ p + t) for p in points] lines = [ [0, 1], [0, 2], [0, 3], [0, 4], ] colors = [color for i in range(len(lines))] line_set = open3d.geometry.LineSet( points=open3d.utility.Vector3dVector(points_in_world), lines=open3d.utility.Vector2iVector(lines), ) line_set.colors = open3d.utility.Vector3dVector(colors) # return as list in Open3D format return [axis, plane, line_set] def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser( description="Visualize COLMAP binary and text models" ) parser.add_argument( "--input_model", required=True, help="path to input model folder" ) args = parser.parse_args() return args def main() -> None: args = parse_args() # read COLMAP model model = Model() model.read_model(args.input_model) print("num_cameras:", model.reconstruction.num_cameras()) print("num_images:", model.reconstruction.num_images()) print("num_points3D:", model.reconstruction.num_points3D()) # display using Open3D visualization tools model.create_window() model.add_points() model.add_cameras(scale=0.25) model.show() if __name__ == "__main__": main() colmap-4.1.1/python/generate_stubs.sh000077500000000000000000000022711522646662000176750ustar00rootroot00000000000000#!/bin/bash set -e PYTHON_EXEC=$1 OUTPUT=$2 PACKAGE_NAME="_core" echo "Building stubs with $PYTHON_EXEC to $OUTPUT" $PYTHON_EXEC -m pybind11_stubgen $PACKAGE_NAME -o $OUTPUT \ --numpy-array-use-type-var \ --enum-class-locations=.+:$PACKAGE_NAME \ --ignore-invalid-expressions "ceres::*" \ --print-invalid-expressions-as-is \ --print-safe-value-reprs "[a-zA-Z]+Options\(\)" FILES=$(find $OUTPUT/$PACKAGE_NAME/ -name '*.pyi' -type f) perl -i -pe's/\b_core\b/pycolmap/g' $FILES perl -i -pe's/: ceres::([a-zA-Z]|::)+//g' $FILES perl -i -pe's/ -> ceres::([a-zA-Z]|::)+:$/:/g' $FILES # pybind issue, will not be fixed: https://github.com/pybind/pybind11/pull/2277 perl -i -pe's/(?<=\b__(eq|ne)__\(self, )arg0: [a-zA-Z0-9_]+\)/other: object)/g' $FILES # mypy bug: https://github.com/python/mypy/issues/4266 perl -i -pe's/(__hash__:? .*= None)$/\1 # type: ignore/g' $FILES # pybind issue: dictionary keys should not be cast to the more generic types. perl -i -pe's/Mapping\[typing.Supports(Int|Float)/Mapping\[\L\1/g' $FILES COLMAP_DIR=$(dirname $( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )) ruff format --config ${COLMAP_DIR}/ruff.toml ${FILES} colmap-4.1.1/python/incremental_build.sh000077500000000000000000000016241522646662000203440ustar00rootroot00000000000000#!/bin/bash # Invoke from anywhere to perform an incremental build of pycolmap bindings. # Make sure to install the requirements from pyproject.toml. If colmap is not # installed globally but in a custom directory, you should set the colmap_DIR # environment variable, e.g.: # # colmap_DIR=/path/to/cmake/install/prefix pycolmap/incremental_build.sh set -e script_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) pip install \ --no-build-isolation \ -Cbuild-dir="$script_dir/build" \ -ve \ "$script_dir/.." # Symlink the compiled _core extension into the source tree so that the # editable install (which adds python/ to sys.path) can find it. site_pkg=$(python -c "import sysconfig; print(sysconfig.get_path('purelib'))") core_so=$(ls -t "$site_pkg/pycolmap"/_core*.so 2>/dev/null | head -1) if [ -n "$core_so" ]; then ln -sf "$core_so" "$script_dir/pycolmap/" fi colmap-4.1.1/python/pycolmap/000077500000000000000000000000001522646662000161465ustar00rootroot00000000000000colmap-4.1.1/python/pycolmap/__init__.py000066400000000000000000000042151522646662000202610ustar00rootroot00000000000000import contextlib import ctypes import importlib import platform import textwrap from pathlib import Path from typing import TYPE_CHECKING from .utils import import_module_symbols def _preload_cuda_lib(module_name: str, lib_name: str): """Preload a single library.""" try: module = importlib.import_module(module_name) except ImportError: return else: # TODO: update the logic to handle CUDA 13, # using as reference https://github.com/pytorch/pytorch/pull/163661. # Resolve the library directory robustly if module_file_path := getattr(module, "__file__", None): lib_dir = Path(module_file_path).parent elif paths := getattr(module, "__path__", None): # Implicit namespace packages have __path__ but no __file__ lib_dir = Path(list(paths)[0]) else: return # Find the first file matching the pattern if lib_path := next((lib_dir / "lib").glob(lib_name), None): with contextlib.suppress(OSError): ctypes.CDLL(str(lib_path)) def _preload_cuda_deps(): """Preloads CUDA dependencies from pip packages on Linux.""" if platform.system() != "Linux": return cuda_libs = { "nvidia.cuda_runtime": "libcudart.so.*[0-9]", "nvidia.curand": "libcurand.so.*[0-9]", } for module_name, lib_glob in cuda_libs.items(): _preload_cuda_lib(module_name, lib_glob) _preload_cuda_deps() try: from . import _core except ImportError as e: raise RuntimeError( textwrap.dedent(""" Cannot import the C++ backend pycolmap._core. Make sure that you successfully install the package with $ python -m pip install pycolmap/ """) ) from e # Type checkers cannot deal with dynamic manipulation of globals. # Instead, we use the same workaround as PyTorch. if TYPE_CHECKING: from ._core import * # noqa F403 __all__ = import_module_symbols( globals(), _core, exclude={"cost_functions", "pyceres"} ) __all__.extend(["__version__", "__ceres_version__"]) __version__ = _core.__version__ __ceres_version__ = _core.__ceres_version__ colmap-4.1.1/python/pycolmap/cost_functions/000077500000000000000000000000001522646662000212065ustar00rootroot00000000000000colmap-4.1.1/python/pycolmap/cost_functions/__init__.py000066400000000000000000000003611522646662000233170ustar00rootroot00000000000000from typing import TYPE_CHECKING from .. import _core from ..utils import import_module_symbols if TYPE_CHECKING: from .._core.cost_functions import * # noqa __all__ = import_module_symbols(globals(), _core.cost_functions) del _core colmap-4.1.1/python/pycolmap/py.typed000066400000000000000000000000001522646662000176330ustar00rootroot00000000000000colmap-4.1.1/python/pycolmap/pyceres/000077500000000000000000000000001522646662000176205ustar00rootroot00000000000000colmap-4.1.1/python/pycolmap/pyceres/__init__.py000066400000000000000000000003431522646662000217310ustar00rootroot00000000000000from typing import TYPE_CHECKING from .. import _core from ..utils import import_module_symbols if TYPE_CHECKING: from .._core.pyceres import * # noqa __all__ = import_module_symbols(globals(), _core.pyceres) del _core colmap-4.1.1/python/pycolmap/utils.py000066400000000000000000000007701522646662000176640ustar00rootroot00000000000000from collections.abc import MutableSequence from types import ModuleType from typing import Any def import_module_symbols( dst_vars: dict[str, Any], src_module: ModuleType, exclude: set[str] | None = None, ) -> MutableSequence[str]: symbols = {} for n, s in vars(src_module).items(): if n.startswith("_"): continue if exclude is not None and n in exclude: continue symbols[n] = s dst_vars.update(symbols) return list(symbols) colmap-4.1.1/python/util/000077500000000000000000000000001522646662000152775ustar00rootroot00000000000000colmap-4.1.1/python/util/flickr_downloader.py000077500000000000000000000152151522646662000213500ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. import argparse import datetime import multiprocessing import os import time import urllib.error import urllib.request import xml.etree.ElementTree as ElementTree from typing import Final import urllib2 import urlparse PER_PAGE: Final[int] = 500 SORT: Final[str] = "date-posted-desc" URL: Final[str] = ( "https://api.flickr.com/services/rest/?method=flickr.photos.search&" "api_key=%s&text=%s&sort=%s&per_page=%d&page=%d&min_upload_date=%s&" "max_upload_date=%s&format=rest&extras=url_o,url_l,url_c,url_z,url_n" ) MAX_PAGE_REQUESTS: Final[int] = 5 MAX_PAGE_TIMEOUT: Final[int] = 20 MAX_IMAGE_REQUESTS: Final[int] = 3 TIME_SKIP: Final[int] = 24 * 60 * 60 MAX_DATE: Final[float] = time.time() MIN_DATE: Final[float] = MAX_DATE - TIME_SKIP def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("--search_text", required=True) parser.add_argument("--api_key", required=True) parser.add_argument("--image_path", required=True) parser.add_argument("--num_procs", type=int, default=10) parser.add_argument("--max_days_without_image", type=int, default=365) args = parser.parse_args() return args def compose_url( page: int, api_key: str, text: str, min_date: float, max_date: float ) -> str: return URL % ( api_key, text, SORT, PER_PAGE, page, str(min_date), str(max_date), ) def parse_page( page: int, api_key: str, text: str, min_date: float, max_date: float ) -> tuple[dict[str, str], tuple[dict[str, str], ...]]: f: urllib2.urlopen | None = None for _ in range(MAX_PAGE_REQUESTS): try: f = urllib2.urlopen( compose_url(page, api_key, text, min_date, max_date), timeout=MAX_PAGE_TIMEOUT, ) except TimeoutError: continue else: break if f is None: return { "pages": "0", "total": "0", "page": "0", "perpage": "0", }, tuple() response = f.read() root = ElementTree.fromstring(response) if root.attrib["stat"] != "ok": raise OSError metadata = root.find("photos") assert metadata is not None photos = tuple(photo.attrib for photo in root.iter("photo")) return metadata.attrib, photos class PhotoDownloader: def __init__(self, image_path: str) -> None: self.image_path: str = image_path def __call__(self, photo: dict[str, str]) -> None: # Find the URL corresponding to the highest image resolution. We will # need this URL here to determine the image extension (typically .jpg, # but could be .png, .gif, etc). url: str | None = None for url_suffix in ("o", "l", "k", "h", "b", "c", "z"): url_attr = f"url_{url_suffix}" if photo.get(url_attr) is not None: url = photo.get(url_attr) break if url is not None: # Note that the following statement may fail in Python 3. urlparse # may need to be replaced with urllib.parse. url_filename = urlparse.urlparse(url).path image_ext = os.path.splitext(url_filename)[1] image_name = f"{photo['id']}_{photo['secret']}{image_ext}" path = os.path.join(self.image_path, image_name) if not os.path.exists(path): print(url) for _ in range(MAX_IMAGE_REQUESTS): try: urllib.request.urlretrieve(url, path) except urllib.error.ContentTooShortError: continue else: break def main() -> None: args = parse_args() downloader = PhotoDownloader(args.image_path) pool = multiprocessing.Pool(processes=args.num_procs) num_pages = float("inf") page = 0 min_date = MIN_DATE max_date = MAX_DATE days_in_row = 0 search_text = args.search_text.replace(" ", "-") while num_pages > page: page += 1 metadata, photos = parse_page( page, args.api_key, search_text, min_date, max_date ) num_pages = int(metadata["pages"]) print(78 * "=") print("Page:\t\t", page, "of", num_pages) print("Min-Date:\t", datetime.datetime.fromtimestamp(min_date)) print("Max-Date:\t", datetime.datetime.fromtimestamp(max_date)) print("Num-Photos:\t", len(photos)) print(78 * "=") try: pool.map_async(downloader, photos).get(1e10) except KeyboardInterrupt: pool.close() pool.join() break if page >= num_pages: max_date -= TIME_SKIP min_date -= TIME_SKIP page = 0 if num_pages == 0: days_in_row = days_in_row + 1 num_pages = float("inf") print(" No images in", days_in_row, "days in a row") if days_in_row == args.max_days_without_image: break else: days_in_row = 0 if __name__ == "__main__": main() colmap-4.1.1/ruff.toml000066400000000000000000000004441522646662000146420ustar00rootroot00000000000000line-length = 80 [lint] select = [ # pycodestyle "E", # Pyflakes "F", # pyupgrade "UP", # flake8-bugbear "B", # flake8-simplify "SIM", # isort "I", ] ignore = ["SIM117"] [lint.per-file-ignores] "scripts/python/*.py" = ["E", "SIM", "UP", "B"] colmap-4.1.1/scripts/000077500000000000000000000000001522646662000144705ustar00rootroot00000000000000colmap-4.1.1/scripts/format/000077500000000000000000000000001522646662000157605ustar00rootroot00000000000000colmap-4.1.1/scripts/format/c++.sh000077500000000000000000000033711522646662000166730ustar00rootroot00000000000000#!/usr/bin/env bash # This script applies clang-format to C++ files in the repository. # By default, on non-main branches it only formats files changed relative to # the main branch. On the main branch or with --all, it formats all files. # Check version version_string=$(clang-format --version | sed -E 's/^.*(\d+\.\d+\.\d+-.*).*$/\1/') expected_version_string='22.1.1' if [[ "$version_string" =~ "$expected_version_string" ]]; then echo "clang-format version '$version_string' matches '$expected_version_string'" else echo "clang-format version '$version_string' doesn't match '$expected_version_string'" exit 1 fi root_folder=$(git rev-parse --show-toplevel) extensions_regex="\(\.cc\|\.h\|\.hpp\|\.cpp\|\.cu\)" path_regex="\(^src/\(colmap\|glomap\|pycolmap\).*$extensions_regex$\)\|\(benchmark/.*$extensions_regex$\)" format_all=false if [[ "$1" == "--all" ]]; then format_all=true fi current_branch=$(git rev-parse --abbrev-ref HEAD) staged_files=$( \ git diff --cached --name-only --diff-filter=d \ | grep "$path_regex" || true) if [[ "$format_all" == true ]] || [[ "$current_branch" == "main" ]]; then committed_files=$( \ git ls-tree --full-tree -r --name-only HEAD . \ | grep "$path_regex" || true) else merge_base=$(git merge-base main HEAD) committed_files=$( \ git diff --name-only --diff-filter=d "$merge_base" \ | grep "$path_regex" || true) fi all_files=$( \ printf '%s\n' "$committed_files" "$staged_files" \ | grep -v '^$' | sort -u \ | sed "s~^~$root_folder/~") if [[ -z "$all_files" ]]; then echo "No C++ files to format" exit 0 fi num_files=$(echo "$all_files" | wc -l) echo "Formatting ${num_files} files" echo "$all_files" | tr '\n' '\0' | xargs -0 clang-format -i colmap-4.1.1/scripts/format/python.sh000077500000000000000000000033271522646662000176450ustar00rootroot00000000000000#!/usr/bin/env bash # This script runs the ruff Python formatter on the repository. # By default, on non-main branches it only formats files changed relative to # the main branch. On the main branch or with --all, it formats all files. # Check version version_string=$(ruff --version | sed -E 's/^.*(\d+\.\d+-.*).*$/\1/') expected_version_string='0.15.7' if [[ "$version_string" =~ "$expected_version_string" ]]; then echo "ruff version '$version_string' matches '$expected_version_string'" else echo "ruff version '$version_string' doesn't match '$expected_version_string'" exit 1 fi root_folder=$(git rev-parse --show-toplevel) path_regex="^.*\(\.py\)$" format_all=false if [[ "$1" == "--all" ]]; then format_all=true fi current_branch=$(git rev-parse --abbrev-ref HEAD) staged_files=$( \ git diff --cached --name-only --diff-filter=d \ | grep "$path_regex" || true) if [[ "$format_all" == true ]] || [[ "$current_branch" == "main" ]]; then committed_files=$( \ git ls-tree --full-tree -r --name-only HEAD . \ | grep "$path_regex" || true) else merge_base=$(git merge-base main HEAD) committed_files=$( \ git diff --name-only --diff-filter=d "$merge_base" \ | grep "$path_regex" || true) fi all_files=$( \ printf '%s\n' "$committed_files" "$staged_files" \ | grep -v '^$' | sort -u \ | sed "s~^~$root_folder/~") if [[ -z "$all_files" ]]; then echo "No Python files to format" exit 0 fi num_files=$(echo "$all_files" | wc -l) echo "Formatting ${num_files} files" echo "$all_files" | tr '\n' '\0' | xargs -0 ruff format --config "${root_folder}/ruff.toml" echo "$all_files" | tr '\n' '\0' | xargs -0 ruff check --config "${root_folder}/ruff.toml" --fix colmap-4.1.1/scripts/matlab/000077500000000000000000000000001522646662000157305ustar00rootroot00000000000000colmap-4.1.1/scripts/matlab/cmap2rgb.m000066400000000000000000000036321522646662000176070ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function rgb = cmap2rgb(image, cmap, varargin) if length(varargin) == 1 clim = varargin{1}; image(image <= clim(1)) = clim(1); image(image > clim(2)) = clim(2); end image_min = min(image(:)); image_max = max(image(:)); image = (image - image_min) / (image_max - image_min) * size(cmap, 1); rgb = ind2rgb(uint32(image), cmap); end colmap-4.1.1/scripts/matlab/plot_model.m000077500000000000000000000045711522646662000202560ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function plot_model(cameras, images, points) % Visualize COLMAP model. keys = images.keys; camera_centers = zeros(images.length, 3); view_dirs = zeros(3 * images.length, 3); for i = 1:images.length image_id = keys{i}; image = images(image_id); camera_centers(i,:) = -image.R' * image.t; view_dirs(3 * i - 2,:) = camera_centers(i,:); view_dirs(3 * i - 1,:) = camera_centers(i,:)' + image.R' * [0; 0; 0.3]; view_dirs(3 * i,:) = nan; end keys = points.keys; xyz = zeros(points.length, 3); for i = 1:points.length point_id = keys{i}; point = points(point_id); xyz(i,:) = point.xyz; end hold on; plot3(camera_centers(:,1), camera_centers(:,2), camera_centers(:,3), 'xr'); plot3(view_dirs(:,1), view_dirs(:,2), view_dirs(:,3), '-b'); plot3(xyz(:,1), xyz(:,2), xyz(:,3), '.k'); hold off; end colmap-4.1.1/scripts/matlab/quat2rotmat.m000077500000000000000000000041601522646662000203750ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function rotmat = quat2rotmat(qvec) rotmat = [1 - 2 * qvec(3).^2 - 2 * qvec(4).^2, ... 2 * qvec(2) * qvec(3) - 2 * qvec(1) * qvec(4), ... 2 * qvec(4) * qvec(2) + 2 * qvec(1) * qvec(3); ... 2 * qvec(2) * qvec(3) + 2 * qvec(1) * qvec(4), ... 1 - 2 * qvec(2).^2 - 2 * qvec(4).^2, ... 2 * qvec(3) * qvec(4) - 2 * qvec(1) * qvec(2); ... 2 * qvec(4) * qvec(2) - 2 * qvec(1) * qvec(3), ... 2 * qvec(3) * qvec(4) + 2 * qvec(1) * qvec(2), ... 1 - 2 * qvec(2).^2 - 2 * qvec(3).^2]; end colmap-4.1.1/scripts/matlab/read_array.m000066400000000000000000000037711522646662000202270ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function array = read_array(path, varargin) if length(varargin) == 1 dtype = varargin{1}; else dtype = 'single'; end fid = fopen(path); line = fscanf(fid, '%d&%d&%d&', [1, 3]); width = line(1); height = line(2); channels = line(3); num = width * height * channels; array = fread(fid, num, dtype); array = reshape(array, [width, height, channels]); array = permute(array, [2 1 3]); array = cast(array, dtype); fclose(fid); end colmap-4.1.1/scripts/matlab/read_depth_map.m000066400000000000000000000035031522646662000210430ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function [depth_map, depth_map_rgb] = read_depth_map(path) depth_map = read_array(path); depth_range = prctile(depth_map(depth_map(:) > 0), [2, 98]); depth_map(depth_map<=0) = nan; depth_map_rgb = cmap2rgb(depth_map, [0 0 0; jet(2^15)], depth_range); end colmap-4.1.1/scripts/matlab/read_model.m000077500000000000000000000111541522646662000202060ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function [cameras, images, points3D] = read_model(path) % Read COLMAP model from folder, which contains a % cameras.txt, images.txt, and points3D.txt. if numel(path) > 0 && path(end) ~= '/' path = [path '/']; end cameras = read_cameras([path 'cameras.txt']); images = read_images([path 'images.txt']); points3D = read_points3D([path 'points3D.txt']); end function cameras = read_cameras(path) cameras = containers.Map('KeyType', 'int64', 'ValueType', 'any'); fid = fopen(path); tline = fgets(fid); while ischar(tline) elems = strsplit(tline); if numel(elems) < 4 || strcmp(elems(1), '#') tline = fgets(fid); continue end if mod(cameras.Count, 10) == 0 fprintf('Reading camera %d\n', cameras.length); end camera = struct; camera.camera_id = str2num(elems{1}); camera.model = elems{2}; camera.width = str2num(elems{3}); camera.height = str2num(elems{4}); camera.params = zeros(numel(elems) - 5, 1); for i = 5:numel(elems) - 1 camera.params(i - 4) = str2double(elems{i}); end cameras(camera.camera_id) = camera; tline = fgets(fid); end fclose(fid); end function images = read_images(path) images = containers.Map('KeyType', 'int64', 'ValueType', 'any'); fid = fopen(path); tline = fgets(fid); while ischar(tline) elems = strsplit(tline); if numel(elems) < 4 || strcmp(elems(1), '#') tline = fgets(fid); continue end if mod(images.Count, 10) == 0 fprintf('Reading image %d\n', images.length); end image = struct; image.image_id = str2num(elems{1}); qw = str2double(elems{2}); qx = str2double(elems{3}); qy = str2double(elems{4}); qz = str2double(elems{5}); image.R = quat2rotmat([qw, qx, qy, qz]); tx = str2double(elems{6}); ty = str2double(elems{7}); tz = str2double(elems{8}); image.t = [tx; ty; tz]; image.camera_id = str2num(elems{9}); image.name = elems{10}; tline = fgets(fid); elems = sscanf(tline, '%f'); elems = reshape(elems, [3, numel(elems) / 3]); image.xys = elems(1:2,:)'; image.point3D_ids = elems(3,:)'; images(image.image_id) = image; tline = fgets(fid); end fclose(fid); end function points3D = read_points3D(path) points3D = containers.Map('KeyType', 'int64', 'ValueType', 'any'); fid = fopen(path); tline = fgets(fid); while ischar(tline) if numel(tline) == 0 || strcmp(tline(1), '#') tline = fgets(fid); continue; end elems = sscanf(tline, '%f'); if numel(elems) == 0 tline = fgets(fid); continue; end if mod(points3D.Count, 1000) == 0 fprintf('Reading point %d\n', points3D.length); end point = struct; point.point3D_id = int64(elems(1)); point.xyz = elems(2:4); point.rgb = uint8(elems(5:7)); point.error = elems(8); point.track = int64(elems(9:end)); point.track = reshape(point.track, [2, numel(point.track) / 2])'; point.track(:,2) = point.track(:,2) + 1; points3D(point.point3D_id) = point; tline = fgets(fid); end fclose(fid); end colmap-4.1.1/scripts/matlab/read_normal_map.m000066400000000000000000000040761522646662000212350ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function [normal_map, normal_map_rgb] = read_normal_map(path, varargin) normal_map = read_array(path); normal_map_rgb = -[normal_map(:,:,1) normal_map(:,:,2) ... 2 * normal_map(:,:,3) + 1]; normal_map_rgb = reshape(normal_map_rgb, ... size(normal_map,1), size(normal_map,2), 3); normal_map_rgb = uint8(((normal_map_rgb + 1) ./ 2) .* 255); if length(varargin) == 1 depth_map = varargin{1}; normal_map_rgb(repmat(isnan(depth_map), [1, 1, 3])) = 0; end end colmap-4.1.1/scripts/matlab/read_ply.m000077500000000000000000000044161522646662000177150ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function [xyz, normals, rgb] = read_ply(path) % Read point cloud from PLY text file. file = fopen(path, 'r'); type = fscanf(file, '%s', 1); format = fscanf(file, '%s', 3); data = fscanf(file, '%s', 2); num_points = fscanf(file, '%d', 1); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 3); fscanf(file, '%s', 1); points_data = textscan(file, '%f %f %f %f %f %f %f %f %f', num_points); xyz = [points_data{1}, points_data{2}, points_data{3}]; rgb = [points_data{7}, points_data{8}, points_data{9}]; normals = [points_data{4}, points_data{5}, points_data{6}]; end colmap-4.1.1/scripts/matlab/write_array.m000066400000000000000000000034331522646662000204410ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function write_array(path, array) fid = fopen(path, 'w'); fprintf(fid, '%d&%d&%d&', size(array, 2), size(array, 1), size(array, 3)); array = permute(array, [2 1 3]); fwrite(fid, array, class(array)); fclose(fid); end colmap-4.1.1/scripts/matlab/write_ply.m000077500000000000000000000046411522646662000201340ustar00rootroot00000000000000% Copyright (c), ETH Zurich and UNC Chapel Hill. % All rights reserved. % % Redistribution and use in source and binary forms, with or without % modification, are permitted provided that the following conditions are met: % % * Redistributions of source code must retain the above copyright % notice, this list of conditions and the following disclaimer. % % * Redistributions in binary form must reproduce the above copyright % notice, this list of conditions and the following disclaimer in the % documentation and/or other materials provided with the distribution. % % * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of % its contributors may be used to endorse or promote products derived % from this software without specific prior written permission. % % THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" % AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE % IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE % ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE % LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR % CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF % SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS % INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN % CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) % ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE % POSSIBILITY OF SUCH DAMAGE. function write_ply(path, xyz, normals, rgb) % Write point cloud to PLY text file. file = fopen(path, 'W'); fprintf(file,'ply\n'); fprintf(file,'format ascii 1.0\n'); fprintf(file,'element vertex %d\n',size(xyz,1)); fprintf(file,'property float x\n'); fprintf(file,'property float y\n'); fprintf(file,'property float z\n'); fprintf(file,'property float nx\n'); fprintf(file,'property float ny\n'); fprintf(file,'property float nz\n'); fprintf(file,'property uchar diffuse_red\n'); fprintf(file,'property uchar diffuse_green\n'); fprintf(file,'property uchar diffuse_blue\n'); fprintf(file,'end_header\n'); for i = 1:size(xyz, 1) fprintf(file, '%f %f %f %f %f %f %d %d %d\n', ... xyz(i,1), xyz(i,2), xyz(i,3), ... normals(i,1), normals(i,2), normals(i,3), ... uint8(rgb(i,1)), uint8(rgb(i,2)), uint8(rgb(i,3))); end fclose(file); end colmap-4.1.1/scripts/shell/000077500000000000000000000000001522646662000155775ustar00rootroot00000000000000colmap-4.1.1/scripts/shell/build_mac_app.sh000077500000000000000000000066201522646662000207210ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # This script creates a deployable package of COLMAP for Mac OS X. BASE_PATH=$(dirname $1) echo "Creating bundle directory" mkdir -p "$BASE_PATH/COLMAP.app/Contents/MacOS" echo "Copying binary" cp "$BASE_PATH/colmap" "$BASE_PATH/COLMAP.app/Contents/MacOS/colmap" echo "Writing Info.plist" cat <"$BASE_PATH/COLMAP.app/Contents/Info.plist" CFBundlePackageType APPL CFBundleExecutable colmap CFBundleIdentifier COLMAP CFBundleName COLMAP CFBundleDisplayName COLMAP NSHighResolutionCapable NSAppSleepDisabled EOM install_name_tool -change @rpath/libtbb.dylib /usr/local/lib/libtbb.dylib $BASE_PATH/COLMAP.app/Contents/MacOS/COLMAP install_name_tool -change @rpath/libtbbmalloc.dylib /usr/local/lib/libtbbmalloc.dylib $BASE_PATH/COLMAP.app/Contents/MacOS/COLMAP echo "Linking dynamic libraries" if [ -d "$(brew --prefix)/opt/qt6" ]; then $(brew --prefix)/opt/qt6/bin/macdeployqt "$BASE_PATH/COLMAP.app" else $(brew --prefix)/opt/qt5/bin/macdeployqt "$BASE_PATH/COLMAP.app" fi echo "Wrapping binary" cat <"$BASE_PATH/COLMAP.app/Contents/MacOS/colmap_gui.sh" #!/bin/bash script_path="\$(cd "\$(dirname "\${BASH_SOURCE[0]}")" && pwd)" \$script_path/colmap gui EOM chmod +x $BASE_PATH/COLMAP.app/Contents/MacOS/colmap_gui.sh sed -i '' 's#colmap#colmap_gui.sh#g' $BASE_PATH/COLMAP.app/Contents/Info.plist echo "Compressing application" cd "$BASE_PATH" zip -r "COLMAP-mac.zip" "COLMAP.app" colmap-4.1.1/scripts/shell/colmap.bat000077500000000000000000000035261522646662000175530ustar00rootroot00000000000000@echo off rem Copyright (c), ETH Zurich and UNC Chapel Hill. rem All rights reserved. rem rem Redistribution and use in source and binary forms, with or without rem modification, are permitted provided that the following conditions are met: rem rem * Redistributions of source code must retain the above copyright rem notice, this list of conditions and the following disclaimer. rem rem * Redistributions in binary form must reproduce the above copyright rem notice, this list of conditions and the following disclaimer in the rem documentation and/or other materials provided with the distribution. rem rem * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of rem its contributors may be used to endorse or promote products derived rem from this software without specific prior written permission. rem rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" rem AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE rem IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE rem ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE rem LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR rem CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF rem SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS rem INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN rem CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) rem ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE rem POSSIBILITY OF SUCH DAMAGE. set SCRIPT_PATH=%~dp0 set PATH=%SCRIPT_PATH%\bin;%PATH% set QT_PLUGIN_PATH=%SCRIPT_PATH%\plugins;%QT_PLUGIN_PATH% set ARGUMENTS=%* if "%ARGUMENTS%"=="" set ARGUMENTS=gui "%SCRIPT_PATH%\bin\colmap" %ARGUMENTS% colmap-4.1.1/scripts/shell/enter_vs_dev_shell.ps1000066400000000000000000000043011522646662000220740ustar00rootroot00000000000000if (!$env:VisualStudioDevShell) { $vswhere = "${Env:ProgramFiles(x86)}/Microsoft Visual Studio/Installer/vswhere.exe" if (!(Test-Path $vswhere)) { throw "Failed to find vswhere.exe" } & $vswhere -latest -format json $vsInstance = & $vswhere -latest -format json | ConvertFrom-Json if ($LASTEXITCODE) { throw "vswhere.exe returned exit code $LASTEXITCODE" } Import-Module "$($vsInstance.installationPath)/Common7/Tools/Microsoft.VisualStudio.DevShell.dll" $prevCwd = Get-Location try { Enter-VsDevShell $vsInstance.instanceId -DevCmdArguments "-no_logo -host_arch=amd64 -arch=amd64" } catch { Write-Host $_ Write-Error "Failed to enter Visual Studio Dev Shell" exit 1 } # CI only: the Visual Studio toolchain bundles an LLVM flang Fortran compiler # that miscompiles LAPACK's *gedmd routines (e.g. "'ssum' is not an object # that can appear in an expression"). vcpkg builds each port in its own # environment (regenerated via vcvars), which puts this flang on the PATH, so # vcpkg_find_fortran detects it instead of falling back to a working MinGW # gfortran and the lapack-reference build fails. Remove the bundled flang in CI # so the MinGW gfortran fallback kicks in. COLMAP itself builds with MSVC # (cl.exe) and does not use flang. We gate on CI so local Visual Studio # installations are left untouched. # See https://github.com/llvm/llvm-project/issues/201254 and # https://developercommunity.microsoft.com/t/11105096. if ($env:GITHUB_ACTIONS -eq "true") { $llvmDir = Join-Path $vsInstance.installationPath "VC/Tools/Llvm" if (Test-Path $llvmDir) { Get-ChildItem -Path $llvmDir -Recurse -Filter "flang*.exe" -ErrorAction SilentlyContinue | ForEach-Object { try { Remove-Item -LiteralPath $_.FullName -Force -ErrorAction Stop Write-Host "Removed bundled flang: $($_.FullName)" } catch { Write-Warning "Failed to remove bundled flang $($_.FullName): $_" } } } } Set-Location $prevCwd $env:VisualStudioDevShell = $true } colmap-4.1.1/scripts/shell/generate_coverage_report.sh000077500000000000000000000047741522646662000232120ustar00rootroot00000000000000#!/bin/bash # Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Script to generate a coverage report for the COLMAP code base. Must be # executed from the build directory. The generated HTML report will be available # in the coverage/ directory. # The script assumes that the codebase has been compiled with CMake options: # cmake ... # -DTESTS_ENABLED=ON \ # -DCOVERAGE_ENABLED=ON \ # -DCMAKE_BUILD_TYPE=RelWithDebInfo|Debug # ninja # ctest -j$(nproc) colmap_root_dir=$(git rev-parse --show-toplevel) if [ ! -f "CMakeCache.txt" ]; then echo "Please run this script from the build directory." exit 1 fi rm -rf coverage-html mkdir -p coverage-html gcovr \ --root "$colmap_root_dir" \ --exclude "$colmap_root_dir/src/thirdparty/*" \ --exclude "$(pwd)/_deps/*" \ --exclude "$(pwd)/src/colmap/ui/colmap_ui_autogen/*" \ --cobertura coverage-cobertura.xml \ --cobertura-pretty \ --html-nested coverage-html/index.html \ --html-theme github.blue colmap-4.1.1/scripts/shell/images_to_video.sh000077500000000000000000000033111522646662000212710ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Command to produce video from images produced by COLMAP movie grabber tool. ffmpeg -i frame%06d.png -r 30 -vf scale=1680:1050 out.mp4 colmap-4.1.1/scripts/shell/profile_binary.sh000077500000000000000000000047751522646662000211570ustar00rootroot00000000000000#!/bin/bash # Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # Script to perform profiling on a command. For example: # ./profile_binary.sh ./src/colmap/exe/colmap automatic_reconstructor ... perf_bin=$(find /usr/lib/linux-tools -name perf | head -1) if [[ -z $perf_bin ]]; then echo "Error: Perf tool not found. Under ubuntu, install as:" echo " sudo apt-get install linux-tools-generic" exit 1 fi "$perf_bin" record -e cycles:u -g "$@" binary_filename=$(basename -- "${binary_path}") profile_path="$binary_filename.perf.data" mv perf.data "$profile_path" echo "#####################################################################" echo "###### Profiling finished. Inspect results using the commands: ######" echo "#####################################################################" echo "If the perf output contains unknown list items, recompile with RelWithDebInfo" echo "$perf_bin report -i $profile_path" echo "$perf_bin report --stdio -g graph,0.5,caller -i $profile_path" colmap-4.1.1/scripts/shell/restore_git_submodules.sh000077500000000000000000000035211522646662000227270ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set -e git config -f .gitmodules --get-regexp '^submodule\..*\.path$' | while read path_key path do url_key=$(echo $path_key | sed 's/\.path/.url/') url=$(git config -f .gitmodules --get "$url_key") git submodule add -f $url $path done colmap-4.1.1/scripts/shell/run_tests.bat000077500000000000000000000035511522646662000203240ustar00rootroot00000000000000@echo off rem Copyright (c), ETH Zurich and UNC Chapel Hill. rem All rights reserved. rem rem Redistribution and use in source and binary forms, with or without rem modification, are permitted provided that the following conditions are met: rem rem * Redistributions of source code must retain the above copyright rem notice, this list of conditions and the following disclaimer. rem rem * Redistributions in binary form must reproduce the above copyright rem notice, this list of conditions and the following disclaimer in the rem documentation and/or other materials provided with the distribution. rem rem * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of rem its contributors may be used to endorse or promote products derived rem from this software without specific prior written permission. rem rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" rem AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE rem IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE rem ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE rem LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR rem CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF rem SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS rem INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN rem CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) rem ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE rem POSSIBILITY OF SUCH DAMAGE. set SCRIPT_PATH=%~dp0 set PATH=%SCRIPT_PATH%\bin;%PATH% set QT_PLUGIN_PATH=%SCRIPT_PATH%\plugins;%QT_PLUGIN_PATH% @echo on for %%i in (%SCRIPT_PATH%\bin\*_test.exe) do ( %%i if %errorlevel% neq 0 goto end ) :end pause colmap-4.1.1/src/000077500000000000000000000000001522646662000135705ustar00rootroot00000000000000colmap-4.1.1/src/colmap/000077500000000000000000000000001522646662000150435ustar00rootroot00000000000000colmap-4.1.1/src/colmap/CMakeLists.txt000066400000000000000000000061121522646662000176030ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. if(IS_MSVC) add_compile_options($<$:/W3>) if(WERROR_ENABLED) add_compile_options($<$:/WX>) endif() # Avoid pulling in too many header files through add_compile_definitions(WIN32_LEAN_AND_MEAN) elseif(IS_GNU OR IS_CLANG) add_compile_options($<$:-Wall>) if(WERROR_ENABLED) add_compile_options($<$:-Werror>) endif() endif() if(CUDA_ENABLED) set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --use_fast_math") # Use a separate stream per thread to allow for concurrent kernel execution # between multiple threads on the same device. set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --default-stream per-thread") # Suppress warnings: # ptxas warning : Stack size for entry function X cannot be statically determined. set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xptxas=-suppress-stack-size-warning") endif() if(COVERAGE_ENABLED) add_compile_options(-coverage -fprofile-update=atomic) add_link_options(-coverage) endif() add_subdirectory(controllers) add_subdirectory(estimators) add_subdirectory(exe) add_subdirectory(feature) add_subdirectory(geometry) add_subdirectory(image) add_subdirectory(math) if(MVS_ENABLED) add_subdirectory(mvs) endif() add_subdirectory(optim) add_subdirectory(retrieval) add_subdirectory(scene) add_subdirectory(sensor) add_subdirectory(sfm) add_subdirectory(tools) add_subdirectory(util) if (GUI_ENABLED) add_subdirectory(ui) endif() colmap-4.1.1/src/colmap/controllers/000077500000000000000000000000001522646662000174115ustar00rootroot00000000000000colmap-4.1.1/src/colmap/controllers/CMakeLists.txt000066400000000000000000000116421522646662000221550ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(FOLDER_NAME "controllers") COLMAP_ADD_LIBRARY( NAME colmap_controllers SRCS automatic_reconstruction.h automatic_reconstruction.cc base_option_manager.h base_option_manager.cc bundle_adjustment.h bundle_adjustment.cc hierarchical_pipeline.h hierarchical_pipeline.cc feature_extraction.h feature_extraction.cc feature_matching.h feature_matching.cc feature_matching_utils.h feature_matching_utils.cc matcher_cache.h matcher_cache.cc pairing.h pairing.cc global_pipeline.h global_pipeline.cc image_reader.h image_reader.cc incremental_pipeline.h incremental_pipeline.cc option_manager.h option_manager.cc reconstruction_clustering.h reconstruction_clustering.cc rotation_averaging.h rotation_averaging.cc undistorters.h undistorters.cc PUBLIC_LINK_LIBS colmap_estimators colmap_feature colmap_retrieval colmap_geometry colmap_scene colmap_util Eigen3::Eigen Boost::program_options PRIVATE_LINK_LIBS colmap_image colmap_math colmap_sfm Ceres::ceres Boost::boost faiss ) if(MVS_ENABLED) target_link_libraries(colmap_controllers PRIVATE colmap_mvs) endif() if(CUDA_ENABLED) target_link_libraries(colmap_controllers PRIVATE colmap_util_cuda) if(MVS_ENABLED) target_link_libraries(colmap_controllers PRIVATE colmap_mvs_cuda) endif() endif() COLMAP_ADD_TEST( NAME automatic_reconstruction_test SRCS automatic_reconstruction_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME bundle_adjustment_test SRCS bundle_adjustment_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME hierarchical_pipeline_test SRCS hierarchical_pipeline_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME incremental_pipeline_test SRCS incremental_pipeline_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME image_reader_test SRCS image_reader_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME feature_extraction_test SRCS feature_extraction_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME feature_matching_test SRCS feature_matching_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME feature_matching_utils_test SRCS feature_matching_utils_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME global_pipeline_test SRCS global_pipeline_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME base_option_manager_test SRCS base_option_manager_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME option_manager_test SRCS option_manager_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME rotation_averaging_test SRCS rotation_averaging_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME reconstruction_clustering_test SRCS reconstruction_clustering_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME undistorters_test SRCS undistorters_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME matcher_cache_test SRCS matcher_cache_test.cc LINK_LIBS colmap_controllers ) COLMAP_ADD_TEST( NAME pairing_test SRCS pairing_test.cc LINK_LIBS colmap_controllers ) colmap-4.1.1/src/colmap/controllers/automatic_reconstruction.cc000066400000000000000000000444521522646662000250600ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/automatic_reconstruction.h" #include "colmap/controllers/feature_extraction.h" #include "colmap/controllers/feature_matching.h" #include "colmap/controllers/global_pipeline.h" #include "colmap/controllers/hierarchical_pipeline.h" #include "colmap/controllers/incremental_pipeline.h" #include "colmap/controllers/option_manager.h" #include "colmap/controllers/undistorters.h" #include "colmap/estimators/view_graph_calibration.h" #if defined(COLMAP_MVS_ENABLED) #include "colmap/mvs/advancing_front_meshing.h" #include "colmap/mvs/delaunay_meshing.h" #include "colmap/mvs/fusion.h" #include "colmap/mvs/patch_match.h" #include "colmap/mvs/poisson_meshing.h" #endif #include "colmap/retrieval/resources.h" #include "colmap/scene/database.h" #include "colmap/util/logging.h" #include "colmap/util/misc.h" namespace colmap { AutomaticReconstructionController::AutomaticReconstructionController( const Options& options, std::shared_ptr reconstruction_manager) : options_(options), reconstruction_manager_(std::move(reconstruction_manager)), active_thread_(nullptr) { THROW_CHECK_DIR_EXISTS(options_.workspace_path); THROW_CHECK_DIR_EXISTS(options_.image_path); THROW_CHECK_NOTNULL(reconstruction_manager_); option_manager_.AddAllOptions(); *option_manager_.image_path = options_.image_path; option_manager_.image_reader->image_names = options_.image_names; option_manager_.mapper->image_names = {options_.image_names.begin(), options_.image_names.end()}; *option_manager_.database_path = options_.workspace_path / "database.db"; if (options_.data_type == DataType::VIDEO) { option_manager_.ModifyForVideoData(); } else if (options_.data_type == DataType::INDIVIDUAL) { option_manager_.ModifyForIndividualData(); } else if (options_.data_type == DataType::INTERNET) { option_manager_.ModifyForInternetData(); } else { LOG(FATAL_THROW) << "Data type not supported"; } THROW_CHECK(ExistsCameraModelWithName(options_.camera_model)); // Set feature type first so quality modifiers can query EffMaxImageSize(). if (options_.feature == Feature::SIFT) { option_manager_.feature_extraction->type = FeatureExtractorType::SIFT; option_manager_.feature_matching->type = FeatureMatcherType::SIFT_BRUTEFORCE; } else if (options_.feature == Feature::ALIKED) { option_manager_.feature_extraction->type = FeatureExtractorType::ALIKED_N16ROT; option_manager_.feature_matching->type = FeatureMatcherType::ALIKED_BRUTEFORCE; } // Apply quality preset (scales max_image_size relative to extractor default). if (options_.quality == Quality::LOW) { option_manager_.ModifyForLowQuality(); } else if (options_.quality == Quality::MEDIUM) { option_manager_.ModifyForMediumQuality(); } else if (options_.quality == Quality::HIGH) { option_manager_.ModifyForHighQuality(); } else if (options_.quality == Quality::EXTREME) { option_manager_.ModifyForExtremeQuality(); } // Feature-specific overrides that must come after quality. if (options_.feature == Feature::ALIKED) { // Guided matching is not supported for ALIKED. option_manager_.feature_matching->guided_matching = false; } option_manager_.feature_extraction->num_threads = options_.num_threads; option_manager_.feature_matching->num_threads = options_.num_threads; option_manager_.sequential_pairing->num_threads = options_.num_threads; option_manager_.vocab_tree_pairing->num_threads = options_.num_threads; option_manager_.mapper->num_threads = options_.num_threads; #if defined(COLMAP_MVS_ENABLED) option_manager_.patch_match_stereo->num_threads = options_.num_threads; option_manager_.poisson_meshing->num_threads = options_.num_threads; option_manager_.delaunay_meshing->num_threads = options_.num_threads; #endif option_manager_.vocab_tree_pairing->vocab_tree_path = GetVocabTreeUriForFeatureType(option_manager_.feature_extraction->type); option_manager_.sequential_pairing->vocab_tree_path = GetVocabTreeUriForFeatureType(option_manager_.feature_extraction->type); option_manager_.sequential_pairing->loop_detection = true; // Apply mapper-appropriate two-view geometry defaults. // Global uses stricter thresholds; Incremental/Hierarchical use standard. TwoViewGeometryOptions& two_view_geometry_options = *option_manager_.two_view_geometry; two_view_geometry_options.ransac_options.random_seed = options_.random_seed; if (options_.mapper == Mapper::GLOBAL) { two_view_geometry_options.ransac_options.max_error = 1.0; two_view_geometry_options.min_num_inliers = 30; two_view_geometry_options.min_inlier_ratio = 0.25; // Disable guided matching for global mapper to avoid regression issues. // Currently the guided matching leads to significantly worse results of the // global pipeline. // TODO: Write to database matches instead of inlier matches in guided // matching and figure out a good min_num_inliers and min_inlier_ratio // threshold for it. option_manager_.feature_matching->guided_matching = false; } option_manager_.mapper->random_seed = options_.random_seed; #if defined(COLMAP_MVS_ENABLED) if (!options_.mask_path.empty()) { option_manager_.stereo_fusion->mask_path = options_.mask_path; } #endif option_manager_.feature_extraction->use_gpu = options_.use_gpu; option_manager_.feature_matching->use_gpu = options_.use_gpu; option_manager_.mapper->ba_use_gpu = options_.use_gpu; option_manager_.mapper->ba_local_backend = options_.ba_backend; option_manager_.mapper->ba_global_backend = options_.ba_backend; if (option_manager_.bundle_adjustment->ceres) { option_manager_.bundle_adjustment->ceres->use_gpu = options_.use_gpu; } option_manager_.feature_extraction->gpu_index = options_.gpu_index; option_manager_.feature_matching->gpu_index = options_.gpu_index; #if defined(COLMAP_MVS_ENABLED) option_manager_.patch_match_stereo->gpu_index = options_.gpu_index; #endif option_manager_.mapper->ba_gpu_index = options_.gpu_index; if (option_manager_.bundle_adjustment->ceres) { option_manager_.bundle_adjustment->ceres->gpu_index = options_.gpu_index; } } bool AutomaticReconstructionController::RequiresOpenGL() const { return (options_.extraction && option_manager_.feature_extraction->RequiresOpenGL()) || (options_.matching && option_manager_.feature_matching->RequiresOpenGL()); } void AutomaticReconstructionController::Setup() { if (options_.extraction) { ImageReaderOptions& reader_options = *option_manager_.image_reader; reader_options.mask_path = options_.mask_path; reader_options.single_camera = options_.single_camera; reader_options.single_camera_per_folder = options_.single_camera_per_folder; reader_options.camera_model = options_.camera_model; reader_options.camera_params = options_.camera_params; reader_options.image_path = *option_manager_.image_path; reader_options.as_rgb = option_manager_.feature_extraction->RequiresRGB(); feature_extractor_ = CreateFeatureExtractorController(*option_manager_.database_path, reader_options, *option_manager_.feature_extraction); } if (options_.matching) { exhaustive_matcher_ = CreateExhaustiveFeatureMatcher(*option_manager_.exhaustive_pairing, *option_manager_.feature_matching, *option_manager_.two_view_geometry, *option_manager_.database_path); sequential_matcher_ = CreateSequentialFeatureMatcher(*option_manager_.sequential_pairing, *option_manager_.feature_matching, *option_manager_.two_view_geometry, *option_manager_.database_path); if (!options_.vocab_tree_path.empty()) { vocab_tree_matcher_ = CreateVocabTreeFeatureMatcher(*option_manager_.vocab_tree_pairing, *option_manager_.feature_matching, *option_manager_.two_view_geometry, *option_manager_.database_path); } } } void AutomaticReconstructionController::Stop() { if (active_thread_ != nullptr) { active_thread_->Stop(); } Thread::Stop(); } void AutomaticReconstructionController::Run() { if (IsStopped()) { return; } if (options_.extraction) { RunFeatureExtraction(); } if (IsStopped()) { return; } if (options_.matching) { RunFeatureMatching(); } if (IsStopped()) { return; } if (options_.sparse) { RunSparseMapper(); } if (IsStopped()) { return; } if (options_.dense) { RunDenseMapper(); } } void AutomaticReconstructionController::RunFeatureExtraction() { LOG_HEADING1("Feature extraction"); THROW_CHECK_NOTNULL(feature_extractor_); active_thread_ = feature_extractor_.get(); feature_extractor_->Start(); feature_extractor_->Wait(); feature_extractor_.reset(); active_thread_ = nullptr; } void AutomaticReconstructionController::RunFeatureMatching() { LOG_HEADING1("Feature matching"); Thread* matcher = nullptr; if (options_.data_type == DataType::VIDEO) { matcher = sequential_matcher_.get(); } else if (options_.data_type == DataType::INDIVIDUAL || options_.data_type == DataType::INTERNET) { auto database = Database::Open(*option_manager_.database_path); const size_t num_images = database->NumImages(); if (options_.vocab_tree_path.empty() || num_images < 200) { matcher = exhaustive_matcher_.get(); } else { matcher = vocab_tree_matcher_.get(); } } THROW_CHECK_NOTNULL(matcher); active_thread_ = matcher; matcher->Start(); matcher->Wait(); exhaustive_matcher_.reset(); sequential_matcher_.reset(); vocab_tree_matcher_.reset(); active_thread_ = nullptr; } void AutomaticReconstructionController::RunSparseMapper() { LOG_HEADING1("Sparse reconstruction"); const auto sparse_path = options_.workspace_path / "sparse"; if (ExistsDir(sparse_path)) { auto dir_list = GetDirList(sparse_path); std::sort(dir_list.begin(), dir_list.end()); if (dir_list.size() > 0) { LOG(INFO) << "Skipping sparse reconstruction because it is already computed"; for (const auto& dir : dir_list) { reconstruction_manager_->Read(dir); } return; } } std::unique_ptr mapper; auto database = Database::Open(*option_manager_.database_path); switch (options_.mapper) { case Mapper::INCREMENTAL: { auto options = std::make_shared(*option_manager_.mapper); options->image_path = *option_manager_.image_path; mapper = std::make_unique( options, std::move(database), reconstruction_manager_); break; } case Mapper::HIERARCHICAL: { HierarchicalPipeline::Options options; options.image_path = *option_manager_.image_path; options.incremental_options = *option_manager_.mapper; mapper = std::make_unique( options, std::move(database), reconstruction_manager_); break; } case Mapper::GLOBAL: { ViewGraphCalibrationOptions vgc_options; vgc_options.random_seed = options_.random_seed; vgc_options.solver_options.num_threads = options_.num_threads; CalibrateViewGraph(vgc_options, database.get()); GlobalPipelineOptions global_options; global_options.image_path = *option_manager_.image_path; global_options.num_threads = options_.num_threads; global_options.random_seed = options_.random_seed; mapper = std::make_unique(std::move(global_options), std::move(database), reconstruction_manager_); break; } default: LOG(FATAL_THROW) << "Mapper not supported"; } mapper->SetCheckIfStoppedFunc([&]() { return IsStopped(); }); mapper->Run(); CreateDirIfNotExists(sparse_path); reconstruction_manager_->Write(sparse_path); option_manager_.Write(sparse_path / "project.ini"); } void AutomaticReconstructionController::RunDenseMapper() { #if !defined(COLMAP_MVS_ENABLED) LOG(WARNING) << "Skipping dense reconstruction because the MVS module is " "not available"; return; #else LOG_HEADING1("Dense reconstruction"); CreateDirIfNotExists(options_.workspace_path / "dense"); for (size_t i = 0; i < reconstruction_manager_->Size(); ++i) { if (IsStopped()) { return; } const auto dense_path = options_.workspace_path / "dense" / std::to_string(i); const auto fused_path = dense_path / "fused.ply"; std::filesystem::path meshing_path; if (options_.mesher == Mesher::POISSON) { meshing_path = dense_path / "meshed-poisson.ply"; } else if (options_.mesher == Mesher::DELAUNAY) { meshing_path = dense_path / "meshed-delaunay.ply"; } else if (options_.mesher == Mesher::ADVANCING_FRONT) { meshing_path = dense_path / "meshed-advancing-front.ply"; } if (ExistsFile(fused_path) && ExistsFile(meshing_path)) { LOG(INFO) << "Skipping dense reconstruction for model " << i << " as it already exists."; continue; } // Image undistortion. if (!ExistsDir(dense_path)) { CreateDirIfNotExists(dense_path); UndistortCameraOptions undistortion_options; undistortion_options.max_image_size = option_manager_.patch_match_stereo->max_image_size; COLMAPUndistorter::Options undistorter_options; undistorter_options.num_threads = options_.num_threads; COLMAPUndistorter undistorter(std::move(undistorter_options), undistortion_options, *reconstruction_manager_->Get(i), *option_manager_.image_path, dense_path); undistorter.SetCheckIfStoppedFunc([&]() { return IsStopped(); }); undistorter.Run(); } if (IsStopped()) { return; } // Patch match stereo. #if defined(COLMAP_CUDA_ENABLED) { mvs::PatchMatchController patch_match_controller( *option_manager_.patch_match_stereo, dense_path, "COLMAP", ""); patch_match_controller.SetCheckIfStoppedFunc( [&]() { return IsStopped(); }); patch_match_controller.Run(); } #else // COLMAP_CUDA_ENABLED LOG(WARNING) << "Skipping patch match stereo because CUDA is not available"; return; #endif // COLMAP_CUDA_ENABLED if (IsStopped()) { return; } // Stereo fusion. if (!ExistsFile(fused_path)) { auto fusion_options = *option_manager_.stereo_fusion; const int num_reg_images = reconstruction_manager_->Get(i)->NumRegImages(); fusion_options.min_num_pixels = std::min(num_reg_images + 1, fusion_options.min_num_pixels); mvs::StereoFusion fuser( fusion_options, dense_path, "COLMAP", "", option_manager_.patch_match_stereo->geom_consistency ? "geometric" : "photometric"); fuser.SetCheckIfStoppedFunc([&]() { return IsStopped(); }); fuser.Run(); LOG(INFO) << "Writing output: " << fused_path; WriteBinaryPlyPoints(fused_path, fuser.GetFusedPoints()); mvs::WritePointsVisibility(AddFileExtension(fused_path, ".vis"), fuser.GetFusedPointsVisibility()); } if (IsStopped()) { return; } // Surface meshing. if (!ExistsFile(meshing_path)) { if (options_.mesher == Mesher::POISSON) { mvs::PoissonMeshing( *option_manager_.poisson_meshing, fused_path, meshing_path); } else if (options_.mesher == Mesher::DELAUNAY) { #if defined(COLMAP_CGAL_ENABLED) mvs::DenseDelaunayMeshing( *option_manager_.delaunay_meshing, dense_path, meshing_path); #else // COLMAP_CGAL_ENABLED LOG(WARNING) << "Skipping Delaunay meshing because CGAL is not available"; return; #endif // COLMAP_CGAL_ENABLED } else if (options_.mesher == Mesher::ADVANCING_FRONT) { #if defined(COLMAP_CGAL_ENABLED) mvs::AdvancingFrontMeshing( *option_manager_.advancing_front_meshing, dense_path, meshing_path); #else // COLMAP_CGAL_ENABLED LOG(WARNING) << "Skipping advancing front meshing because CGAL is " "not available"; return; #endif // COLMAP_CGAL_ENABLED } } } #endif // COLMAP_MVS_ENABLED } } // namespace colmap colmap-4.1.1/src/colmap/controllers/automatic_reconstruction.h000066400000000000000000000131361522646662000247150ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/option_manager.h" #include "colmap/estimators/bundle_adjustment.h" #include "colmap/scene/reconstruction_manager.h" #include "colmap/util/enum_utils.h" #include "colmap/util/threading.h" #include #include #include namespace colmap { class AutomaticReconstructionController : public Thread { public: MAKE_ENUM_CLASS(DataType, 0, INDIVIDUAL, VIDEO, INTERNET); MAKE_ENUM_CLASS(Quality, 0, LOW, MEDIUM, HIGH, EXTREME); MAKE_ENUM_CLASS(Feature, 0, SIFT, ALIKED); MAKE_ENUM_CLASS(Mapper, 0, INCREMENTAL, HIERARCHICAL, GLOBAL); MAKE_ENUM_CLASS(Mesher, 0, POISSON, DELAUNAY, ADVANCING_FRONT); struct Options { // The path to the workspace folder in which all results are stored. std::filesystem::path workspace_path; // The path to the image folder which are used as input. std::filesystem::path image_path; // Optional list of image names to reconstruct. The list must contain the // relative path of the images with respect to the image_path. std::vector image_names; // The path to the mask folder which are used as input. std::filesystem::path mask_path; // The path to the vocabulary tree for feature matching. std::filesystem::path vocab_tree_path; // The type of input data used to choose optimal mapper settings. DataType data_type = DataType::INDIVIDUAL; // Whether to perform low- or high-quality reconstruction. Quality quality = Quality::HIGH; // Whether to use shared intrinsics or not. bool single_camera = false; // Whether to use shared intrinsics or not for all images in the same // sub-folder. bool single_camera_per_folder = false; // Which camera model to use for images. std::string camera_model = "SIMPLE_RADIAL"; // Initial camera params for all images. std::string camera_params; // Whether to perform feature extraction. bool extraction = true; // Whether to perform feature matching. bool matching = true; // Whether to perform sparse mapping. bool sparse = true; // Whether to perform dense mapping. #if defined(COLMAP_CUDA_ENABLED) && defined(COLMAP_MVS_ENABLED) bool dense = true; #else bool dense = false; #endif // The feature extraction/matching algorithm to be used. Feature feature = Feature::SIFT; // The mapping algorithm to be used. Mapper mapper = Mapper::INCREMENTAL; // The meshing algorithm to be used. Mesher mesher = Mesher::POISSON; // The number of threads to use in all stages. int num_threads = -1; // The random seed to use in all stages. int random_seed = -1; // Whether to use the GPU in feature extraction, feature matching, and // bundle adjustment. bool use_gpu = true; // Index of the GPU used for GPU stages. For multi-GPU computation in // feature extraction/matching, you should separate multiple GPU indices by // comma, e.g., "0,1,2,3". For single-GPU stages only the first GPU will be // used. By default, all available GPUs will be used in all stages. std::string gpu_index = "-1"; // Bundle adjustment solver backend for local and global BA. BundleAdjustmentBackend ba_backend = BundleAdjustmentBackend::CERES; }; AutomaticReconstructionController( const Options& options, std::shared_ptr reconstruction_manager); // Whether any of the selected reconstruction stages requires OpenGL. bool RequiresOpenGL() const; void Setup(); void Stop() override; private: void Run() override; void RunFeatureExtraction(); void RunFeatureMatching(); void RunSparseMapper(); void RunDenseMapper(); const Options options_; OptionManager option_manager_; std::shared_ptr reconstruction_manager_; Thread* active_thread_; std::unique_ptr feature_extractor_; std::unique_ptr exhaustive_matcher_; std::unique_ptr sequential_matcher_; std::unique_ptr vocab_tree_matcher_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/automatic_reconstruction_test.cc000066400000000000000000000106501522646662000261100ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/automatic_reconstruction.h" #include "colmap/scene/reconstruction_manager.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include "colmap/util/file.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { class ParameterizedAutomaticReconstructionTests : public ::testing::TestWithParam< AutomaticReconstructionController::Mapper> {}; TEST_P(ParameterizedAutomaticReconstructionTests, Nominal) { SetPRNGSeed(1); const auto test_dir = CreateTestDir(); const auto workspace_path = test_dir / "workspace"; const auto image_path = test_dir / "images"; CreateDirIfNotExists(workspace_path); CreateDirIfNotExists(image_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 5; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 200; synthetic_dataset_options.num_points2D_without_point3D = 10; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); SynthesizeImages(SyntheticImageOptions(), gt_reconstruction, image_path); AutomaticReconstructionController::Options options; options.workspace_path = workspace_path; options.image_path = image_path; options.data_type = AutomaticReconstructionController::DataType::INDIVIDUAL; options.quality = AutomaticReconstructionController::Quality::LOW; options.single_camera = false; options.dense = false; // Disable dense reconstruction to avoid GPU options.use_gpu = false; options.random_seed = 1; options.mapper = GetParam(); auto reconstruction_manager = std::make_shared(); AutomaticReconstructionController controller(options, reconstruction_manager); controller.Setup(); controller.Start(); controller.Wait(); EXPECT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(*reconstruction_manager->Get(0), ReconstructionNear(gt_reconstruction, /*max_rotation_error_deg=*/0.5, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.9, /*align=*/true)); } // TODO: Add GLOBAL mapper test. Currently excluded because the test produces // fewer observations than expected. The global pipeline is tested separately // in global_pipeline_test.cc. INSTANTIATE_TEST_SUITE_P( AutomaticReconstructionTests, ParameterizedAutomaticReconstructionTests, ::testing::Values(AutomaticReconstructionController::Mapper::INCREMENTAL, AutomaticReconstructionController::Mapper::HIERARCHICAL)); } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/base_option_manager.cc000066400000000000000000000257641522646662000237320ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/base_option_manager.h" #include "colmap/math/random.h" #include "colmap/util/file.h" #include "colmap/util/string.h" #include #include namespace config = boost::program_options; namespace colmap { BaseOptionManager::BaseOptionManager(bool add_project_options) { project_path = std::make_shared(); database_path = std::make_shared(); image_path = std::make_shared(); ResetImpl(/*reset_logging=*/true); desc_->add_options()("help,h", ""); if (add_project_options) { desc_->add_options()("project_path", config::value()); } AddRandomOptions(); AddLogOptions(); } void BaseOptionManager::AddRandomOptions() { if (added_random_options_) { return; } added_random_options_ = true; AddDefaultOption("default_random_seed", &kDefaultPRNGSeed); } void BaseOptionManager::AddLogOptions() { if (added_log_options_) { return; } added_log_options_ = true; AddDefaultOption( "log_target", &log_target_, "{stderr, stdout, file, stderr_and_file}"); // Directory for log files. If empty, glog uses $GOOGLE_LOG_DIR, /tmp, or // %TEMP%. AddDefaultOption("log_path", &FLAGS_log_dir); AddDefaultOption("log_level", &FLAGS_v); AddDefaultOption("log_severity", &FLAGS_minloglevel, "0:INFO, 1:WARNING, 2:ERROR, 3:FATAL"); #if COLMAP_GLOG_HAS_COLOR_SUPPORT AddDefaultOption("log_color", &FLAGS_colorlogtostderr); #endif } void BaseOptionManager::AddDatabaseOptions() { if (added_database_options_) { return; } added_database_options_ = true; AddRequiredOption("database_path", database_path.get()); } void BaseOptionManager::AddImageOptions() { if (added_image_options_) { return; } added_image_options_ = true; AddRequiredOption("image_path", image_path.get()); } void BaseOptionManager::Reset(bool reset_logging) { ResetImpl(reset_logging); } void BaseOptionManager::ResetOptions(const bool reset_paths) { auto saved_project_path = std::move(*project_path); auto saved_database_path = std::move(*database_path); auto saved_image_path = std::move(*image_path); // Re-register all options to update raw pointers, since subclass // ResetOptions() may reallocate internal sub-objects. Reset(/*reset_logging=*/false); AddAllOptions(); if (!reset_paths) { *project_path = std::move(saved_project_path); *database_path = std::move(saved_database_path); *image_path = std::move(saved_image_path); } } void BaseOptionManager::ResetImpl(bool reset_logging) { if (reset_logging) { log_target_ = "stderr_and_file"; FLAGS_log_dir = ""; FLAGS_v = 0; FLAGS_minloglevel = 0; #if COLMAP_GLOG_HAS_COLOR_SUPPORT FLAGS_colorlogtostderr = true; #endif ApplyLogFlags(); } const bool kResetPaths = true; ResetOptionsImpl(kResetPaths); desc_ = std::make_shared(); options_bool_.clear(); options_int_.clear(); options_double_.clear(); options_string_.clear(); options_path_.clear(); added_random_options_ = false; added_log_options_ = false; added_database_options_ = false; added_image_options_ = false; } void BaseOptionManager::ResetOptionsImpl(const bool reset_paths) { if (reset_paths) { *project_path = ""; *database_path = ""; *image_path = ""; } } bool BaseOptionManager::Check() { bool success = true; if (added_database_options_) { const auto database_parent_path = GetParentDir(*database_path); success = success && CHECK_OPTION_IMPL(!ExistsDir(*database_path)) && CHECK_OPTION_IMPL(database_parent_path.empty() || ExistsDir(database_parent_path)); } if (added_image_options_) { success = success && CHECK_OPTION_IMPL(ExistsDir(*image_path)); } return success; } void BaseOptionManager::PostParse() { // Default implementation does nothing. Subclasses can override. } void BaseOptionManager::ApplyEnumConversions() { for (const auto& info : enum_options_) { info->apply(); } } void BaseOptionManager::ApplyLogFlags() { FLAGS_logtostderr = false; #if COLMAP_GLOG_HAS_STDOUT_SUPPORT FLAGS_logtostdout = false; #endif FLAGS_alsologtostderr = false; if (log_target_ == "stderr") { FLAGS_logtostderr = true; } else if (log_target_ == "stdout") { #if COLMAP_GLOG_HAS_STDOUT_SUPPORT FLAGS_logtostdout = true; #else LOG(WARNING) << "log_target=stdout requires glog >= 0.6. " "Falling back to stderr."; FLAGS_logtostderr = true; #endif } else if (log_target_ == "file") { } else if (log_target_ == "stderr_and_file") { FLAGS_alsologtostderr = true; } else { LOG(ERROR) << "Invalid log_target: " << log_target_ << ". Falling back to stderr_and_file."; FLAGS_alsologtostderr = true; } #if COLMAP_GLOG_HAS_STDOUT_SUPPORT FLAGS_colorlogtostdout = FLAGS_colorlogtostderr; #endif if (!FLAGS_log_dir.empty() && (log_target_ == "file" || log_target_ == "stderr_and_file")) { CreateDirIfNotExists(FLAGS_log_dir); } } void BaseOptionManager::PrintHelp() const { LOG(INFO) << "Options can either be specified via command-line or by " "defining them in a .ini project file.\n" << *desc_; } void BaseOptionManager::AddAllOptions() { AddRandomOptions(); AddLogOptions(); AddDatabaseOptions(); AddImageOptions(); } bool BaseOptionManager::Parse(const int argc, char** argv) { config::variables_map vmap; try { config::store(config::parse_command_line(argc, argv, *desc_), vmap); if (vmap.count("help")) { PrintHelp(); // NOLINTNEXTLINE(concurrency-mt-unsafe) exit(EXIT_SUCCESS); } if (vmap.count("project_path")) { *project_path = vmap["project_path"].as(); if (!Read(*project_path)) { return false; } } else { vmap.notify(); } ApplyEnumConversions(); ApplyLogFlags(); PostParse(); } catch (std::exception& exc) { LOG(ERROR) << "Failed to parse options - " << exc.what() << "."; return false; } catch (...) { LOG(ERROR) << "Failed to parse options for unknown reason."; return false; } if (!Check()) { LOG(ERROR) << "Invalid options provided."; return false; } return true; } bool BaseOptionManager::Read(const std::filesystem::path& path, bool allow_unregistered) { config::variables_map vmap; if (!ExistsFile(path)) { LOG(ERROR) << "Configuration file does not exist."; return false; } try { std::ifstream file(path); THROW_CHECK_FILE_OPEN(file, path); const config::parsed_options parsed_options = config::parse_config_file(file, *desc_, allow_unregistered); config::store(parsed_options, vmap); if (allow_unregistered) { for (const auto& option : parsed_options.options) { if (option.unregistered) { LOG(WARNING) << "Unrecognized option key: " << option.string_key; } } } vmap.notify(); ApplyEnumConversions(); } catch (std::exception& e) { LOG(ERROR) << "Failed to parse options " << e.what() << "."; return false; } catch (...) { LOG(ERROR) << "Failed to parse options for unknown reason."; return false; } return true; } bool BaseOptionManager::ReRead(const std::filesystem::path& path, bool reset_logging, bool allow_unregistered) { Reset(reset_logging); AddAllOptions(); return Read(path, allow_unregistered); } void BaseOptionManager::Write(const std::filesystem::path& path) const { boost::property_tree::ptree pt; // First, put all options without a section and then those with a section. // This is necessary as otherwise older Boost versions will write the // options without a section in between other sections and therefore // the errors will be assigned to the wrong section if read later. for (const auto& [key, value] : options_bool_) { if (!StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_int_) { if (!StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_double_) { if (!StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_string_) { if (!StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_path_) { if (!StringContains(key, ".")) { pt.put(key, value->string()); } } for (const auto& [key, value] : options_bool_) { if (StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_int_) { if (StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_double_) { if (StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_string_) { if (StringContains(key, ".")) { pt.put(key, *value); } } for (const auto& [key, value] : options_path_) { if (StringContains(key, ".")) { pt.put(key, value->string()); } } std::ofstream file(path); THROW_CHECK_FILE_OPEN(file, path); // Ensure that we don't lose any precision by storing in text. file.precision(17); boost::property_tree::write_ini(file, pt); file.close(); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/base_option_manager.h000066400000000000000000000236551522646662000235710ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/util/logging.h" #include "colmap/util/types.h" #include #include #include #include #include #include #include namespace colmap { // Base class for option managers providing core infrastructure for // command-line parsing, configuration file I/O, and option registration. class BaseOptionManager { public: NON_COPYABLE(BaseOptionManager) explicit BaseOptionManager(bool add_project_options = true); BaseOptionManager(BaseOptionManager&&) = default; BaseOptionManager& operator=(BaseOptionManager&&) = default; virtual ~BaseOptionManager() = default; void AddRandomOptions(); void AddLogOptions(); void AddDatabaseOptions(); void AddImageOptions(); template void AddRequiredOption(const std::string& name, T* option, const std::string& help_text = ""); template void AddDefaultOption(const std::string& name, T* option, const std::string& help_text = ""); // Register an enum option with automatic string-to-enum conversion. // Uses the ToString/FromString functions generated by MAKE_ENUM_CLASS. // The conversion is applied automatically after parsing. // // Example: // MAKE_ENUM_CLASS(MyEnum, 0, VALUE_A, VALUE_B); // AddDefaultEnumOption("my_option", // &options.my_enum, // MyEnumToString, // MyEnumFromString); template void AddDefaultEnumOption(const std::string& name, EnumT* option, std::string_view (*to_string_fn)(EnumT), EnumT (*from_string_fn)(std::string_view), const std::string& help_text = ""); // Reset all internal state. If reset_logging is true, restore glog defaults. // Higher-level applications may override the logging configuration. virtual void Reset(bool reset_logging = true); virtual void ResetOptions(bool reset_paths); virtual bool Check(); bool Parse(int argc, char** argv); virtual bool Read(const std::filesystem::path& path, bool allow_unregistered = true); bool ReRead(const std::filesystem::path& path, bool reset_logging = true, bool allow_unregistered = true); void Write(const std::filesystem::path& path) const; std::shared_ptr project_path; std::shared_ptr database_path; std::shared_ptr image_path; protected: template void RegisterOption(const std::string& name, const T* option); // Hook for subclasses to perform post-parse processing. // Called after successful parsing but before Check(). virtual void PostParse(); // Hook for subclasses to print custom help message. virtual void PrintHelp() const; // Hook for subclasses to add all their options. Called by ReRead(). // Base implementation adds common options (random, log, database, image). // Subclasses should call BaseOptionManager::AddAllOptions() first. virtual void AddAllOptions(); std::shared_ptr desc_; // Log destination choice: {stderr, stdout, file, stderr_and_file}. std::string log_target_ = "stderr_and_file"; std::vector> options_bool_; std::vector> options_int_; std::vector> options_double_; std::vector> options_string_; std::vector> options_path_; // Storage for enum options: string value and conversion callback. // Uses unique_ptr for pointer stability when the vector grows. struct EnumOptionInfo { std::string value; // String value for parsing std::function apply; // Callback to apply string->enum conversion }; std::vector> enum_options_; bool added_random_options_ = false; bool added_log_options_ = false; bool added_database_options_ = false; bool added_image_options_ = false; private: // Non-virtual implementations called from constructor and virtual methods. // These avoid the clang-tidy warning about virtual calls during construction. void ResetImpl(bool reset_logging); void ResetOptionsImpl(bool reset_paths); // Apply string->enum conversions for all registered enum options. void ApplyEnumConversions(); // Map simplified log output options to glog flags. void ApplyLogFlags(); }; template void BaseOptionManager::AddRequiredOption(const std::string& name, T* option, const std::string& help_text) { if constexpr (std::is_same::value) { // Boost program options does not support std::filesystem::path by default. // We treat it as a string and manualy convert it using a notifier. desc_->add_options()( name.c_str(), boost::program_options::value()->required()->notifier( [option](const std::string& val) { *option = val; }), help_text.c_str()); } else { desc_->add_options()(name.c_str(), boost::program_options::value(option)->required(), help_text.c_str()); } RegisterOption(name, option); } template void BaseOptionManager::AddDefaultOption(const std::string& name, T* option, const std::string& help_text) { if constexpr (std::is_floating_point::value) { desc_->add_options()( name.c_str(), boost::program_options::value(option)->default_value( *option, StringPrintf("%.3g", *option)), help_text.c_str()); } else if constexpr (std::is_same::value) { // Boost program options does not support std::filesystem::path by default. // We treat it as a string and manualy convert it using a notifier. desc_->add_options()( name.c_str(), boost::program_options::value() ->default_value(option->string()) ->notifier([option](const std::string& val) { *option = val; }), help_text.c_str()); } else { desc_->add_options()( name.c_str(), boost::program_options::value(option)->default_value(*option), help_text.c_str()); } RegisterOption(name, option); } template void BaseOptionManager::RegisterOption(const std::string& name, const T* option) { if constexpr (std::is_same::value) { options_bool_.emplace_back(name, reinterpret_cast(option)); } else if constexpr (std::is_same::value) { options_int_.emplace_back(name, reinterpret_cast(option)); } else if constexpr (std::is_same::value) { options_double_.emplace_back(name, reinterpret_cast(option)); } else if constexpr (std::is_same::value) { options_string_.emplace_back(name, reinterpret_cast(option)); } else if constexpr (std::is_same::value) { options_path_.emplace_back( name, reinterpret_cast(option)); } else { static_assert(always_false::value, "Unsupported option type"); } } template void BaseOptionManager::AddDefaultEnumOption( const std::string& name, EnumT* option, std::string_view (*to_string_fn)(EnumT), EnumT (*from_string_fn)(std::string_view), const std::string& help_text) { // Create storage for this enum option (unique_ptr for pointer stability) auto info = std::make_unique(); info->value = std::string(to_string_fn(*option)); EnumOptionInfo* info_ptr = info.get(); info->apply = [info_ptr, option, from_string_fn]() { *option = from_string_fn(info_ptr->value); }; // Register as a string option pointing to our storage AddDefaultOption(name, &info->value, help_text); enum_options_.push_back(std::move(info)); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/base_option_manager_test.cc000066400000000000000000000421211522646662000247530ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/base_option_manager.h" #include "colmap/util/enum_utils.h" #include "colmap/util/file.h" #include "colmap/util/testing.h" #include #include namespace colmap { namespace { // Test enum for AddDefaultEnumOption tests MAKE_ENUM_CLASS(TestEnumType, 0, VALUE_A, VALUE_B, VALUE_C); TEST(BaseOptionManager, Reset) { BaseOptionManager options; *options.database_path = "/test/path"; *options.image_path = "/test/images"; options.AddDatabaseOptions(); options.AddImageOptions(); EXPECT_EQ(*options.database_path, "/test/path"); EXPECT_EQ(*options.image_path, "/test/images"); options.Reset(); EXPECT_TRUE(options.database_path->empty()); EXPECT_TRUE(options.image_path->empty()); } TEST(BaseOptionManager, ResetOptions) { BaseOptionManager options; *options.database_path = "/test/path"; *options.image_path = "/test/images"; options.ResetOptions(/*reset_paths=*/true); EXPECT_TRUE(options.database_path->empty()); EXPECT_TRUE(options.image_path->empty()); *options.database_path = "/test/path"; *options.image_path = "/test/images"; options.ResetOptions(/*reset_paths=*/false); EXPECT_EQ(*options.database_path, "/test/path"); EXPECT_EQ(*options.image_path, "/test/images"); } TEST(BaseOptionManager, AddOptionsIdempotent) { BaseOptionManager options; // Adding options multiple times should not cause issues options.AddLogOptions(); options.AddLogOptions(); options.AddRandomOptions(); options.AddRandomOptions(); options.AddDatabaseOptions(); options.AddDatabaseOptions(); options.AddImageOptions(); options.AddImageOptions(); // If idempotency is not maintained, the above would cause errors SUCCEED(); } TEST(BaseOptionManager, WriteAndRead) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; // Create necessary directories CreateDirIfNotExists(test_dir / "images"); bool bool_option_write = true; int int_option_write = 42; double double_option_write = 3.14; std::string string_option_write = "foobar"; std::string section_option_write = "section"; TestEnumType enum_option_write = TestEnumType::VALUE_B; // Create and configure a BaseOptionManager BaseOptionManager options_write; options_write.AddDatabaseOptions(); options_write.AddImageOptions(); options_write.AddDefaultOption("bool_option", &bool_option_write); options_write.AddDefaultOption("int_option", &int_option_write); options_write.AddDefaultOption("double_option", &double_option_write); options_write.AddDefaultOption("string_option", &string_option_write); options_write.AddDefaultOption("Section.option", §ion_option_write); options_write.AddDefaultEnumOption("enum_option", &enum_option_write, TestEnumTypeToString, TestEnumTypeFromString); *options_write.database_path = test_dir / "database.db"; *options_write.image_path = test_dir / "images"; // Write to file options_write.Write(config_path); EXPECT_TRUE(ExistsFile(config_path)); bool bool_option_read = false; int int_option_read = -1; double double_option_read = 0; std::string string_option_read; std::string section_option_read; TestEnumType enum_option_read = TestEnumType::VALUE_A; // Read from file BaseOptionManager options_read; options_read.AddDatabaseOptions(); options_read.AddImageOptions(); options_read.AddDefaultOption("bool_option", &bool_option_read); options_read.AddDefaultOption("int_option", &int_option_read); options_read.AddDefaultOption("double_option", &double_option_read); options_read.AddDefaultOption("string_option", &string_option_read); options_read.AddDefaultOption("Section.option", §ion_option_read); options_read.AddDefaultEnumOption("enum_option", &enum_option_read, TestEnumTypeToString, TestEnumTypeFromString); EXPECT_TRUE(options_read.Read(config_path)); // Verify that values were read correctly EXPECT_EQ(*options_read.database_path, *options_write.database_path); EXPECT_EQ(*options_read.image_path, *options_write.image_path); EXPECT_EQ(bool_option_read, bool_option_write); EXPECT_EQ(int_option_read, int_option_write); EXPECT_EQ(double_option_read, double_option_write); EXPECT_EQ(string_option_read, string_option_write); EXPECT_EQ(section_option_read, section_option_write); EXPECT_EQ(enum_option_read, enum_option_write); } TEST(BaseOptionManager, ReadWithUnregisteredOptions) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; CreateDirIfNotExists(test_dir / "images"); std::ofstream file(config_path); file << "database_path=" << (test_dir / "database.db").string() << "\n"; file << "image_path=" << (test_dir / "images").string() << "\n"; file << "unknown_option=foobar\n"; file.close(); BaseOptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); EXPECT_TRUE(options.Read(config_path, /*allow_unregistered=*/true)); EXPECT_FALSE(options.Read(config_path, /*allow_unregistered=*/false)); EXPECT_EQ(*options.database_path, test_dir / "database.db"); EXPECT_EQ(*options.image_path, test_dir / "images"); } TEST(BaseOptionManager, ReRead) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; // Create necessary directories CreateDirIfNotExists(test_dir / "images"); // Create and write initial config BaseOptionManager options_write; options_write.AddDatabaseOptions(); options_write.AddImageOptions(); *options_write.database_path = test_dir / "database.db"; *options_write.image_path = test_dir / "images"; options_write.Write(config_path); // Read with ReRead BaseOptionManager options_read; EXPECT_TRUE(options_read.ReRead(config_path)); // Verify values EXPECT_EQ(*options_read.database_path, *options_write.database_path); EXPECT_EQ(*options_read.image_path, *options_write.image_path); } TEST(BaseOptionManager, ReadNonExistentFile) { BaseOptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); EXPECT_FALSE(options.Read("/path/that/does/not/exist.ini")); } TEST(BaseOptionManager, Check) { const auto test_dir = CreateTestDir(); BaseOptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); // Should fail with non-existent paths *options.database_path = test_dir / "database.db"; *options.image_path = "/path/that/does/not/exist"; EXPECT_FALSE(options.Check()); // Should succeed with valid paths CreateDirIfNotExists(test_dir / "images"); *options.image_path = test_dir / "images"; EXPECT_TRUE(options.Check()); } TEST(BaseOptionManager, CheckDatabaseParentDir) { const auto test_dir = CreateTestDir(); BaseOptionManager options; options.AddDatabaseOptions(); // Should succeed when database parent dir exists *options.database_path = test_dir / "database.db"; EXPECT_TRUE(options.Check()); // Should fail when database path is a directory CreateDirIfNotExists(test_dir / "bad_database"); *options.database_path = test_dir / "bad_database"; EXPECT_FALSE(options.Check()); } TEST(BaseOptionManager, ParseWithOptions) { const auto test_dir = CreateTestDir(); CreateDirIfNotExists(test_dir / "images"); BaseOptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); const auto database_path = test_dir / "database.db"; const auto image_path = test_dir / "images"; // Create argv with additional options const std::vector args = { "colmap", "--database_path", database_path.string(), "--image_path", image_path.string(), }; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Verify parsed values EXPECT_EQ(*options.database_path, database_path); EXPECT_EQ(*options.image_path, image_path); } TEST(BaseOptionManager, ParseWithProjectPath) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; CreateDirIfNotExists(test_dir / "images"); // Create and write a config file BaseOptionManager options_write; options_write.AddDatabaseOptions(); options_write.AddImageOptions(); *options_write.database_path = test_dir / "database.db"; *options_write.image_path = test_dir / "images"; options_write.Write(config_path); // Parse using project_path BaseOptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); const std::vector args = { "colmap", "--project_path", config_path.string(), }; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Verify values were loaded from config file EXPECT_EQ(*options.database_path, *options_write.database_path); EXPECT_EQ(*options.image_path, *options_write.image_path); } TEST(BaseOptionManager, ParseEmptyArguments) { BaseOptionManager options; const std::vector args = {"colmap"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } // Should succeed with no required options EXPECT_TRUE(options.Parse(argv.size(), argv.data())); } TEST(BaseOptionManager, ParseUnknownArgumentsFails) { const auto test_dir = CreateTestDir(); BaseOptionManager options; options.AddDatabaseOptions(); const auto database_path = test_dir / "database.db"; // Create argv with an unknown option const std::vector args = { "colmap", "--database_path", database_path.string(), "--unknown_option", "value", }; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } // Should return false when encountering unknown option EXPECT_FALSE(options.Parse(argv.size(), argv.data())); } // Helper class to test enum options through BaseOptionManager class TestEnumOptionManager : public BaseOptionManager { public: TestEnumOptionManager() : BaseOptionManager(/*add_project_options=*/false) { AddDefaultEnumOption("test_enum", &test_enum_value, TestEnumTypeToString, TestEnumTypeFromString); } TestEnumType test_enum_value = TestEnumType::VALUE_A; }; TEST(BaseOptionManager, EnumOptionDefaultValue) { TestEnumOptionManager options; // Default value should be VALUE_A EXPECT_EQ(options.test_enum_value, TestEnumType::VALUE_A); // Parse with no enum option specified const std::vector args = {"test"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Should still be default value EXPECT_EQ(options.test_enum_value, TestEnumType::VALUE_A); } TEST(BaseOptionManager, EnumOptionParseFromCommandLine) { TestEnumOptionManager options; // Parse with enum option set to VALUE_B const std::vector args = {"test", "--test_enum", "VALUE_B"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Should be VALUE_B after parsing EXPECT_EQ(options.test_enum_value, TestEnumType::VALUE_B); } TEST(BaseOptionManager, EnumOptionParseFromCommandLineValueC) { TestEnumOptionManager options; // Parse with enum option set to VALUE_C const std::vector args = {"test", "--test_enum", "VALUE_C"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Should be VALUE_C after parsing EXPECT_EQ(options.test_enum_value, TestEnumType::VALUE_C); } TEST(BaseOptionManager, EnumOptionInvalidValue) { TestEnumOptionManager options; // Parse with invalid enum value const std::vector args = { "test", "--test_enum", "INVALID_VALUE"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } // Should fail due to invalid enum value EXPECT_FALSE(options.Parse(argv.size(), argv.data())); } // Helper class to test enum options with non-default initial value class TestEnumOptionManagerWithValueB : public BaseOptionManager { public: TestEnumOptionManagerWithValueB() : BaseOptionManager(/*add_project_options=*/false) { AddDefaultEnumOption("test_enum", &test_enum_value, TestEnumTypeToString, TestEnumTypeFromString); } TestEnumType test_enum_value = TestEnumType::VALUE_B; }; TEST(BaseOptionManager, EnumOptionNonDefaultInitialValue) { TestEnumOptionManagerWithValueB options; // Default value should be VALUE_B (non-default) EXPECT_EQ(options.test_enum_value, TestEnumType::VALUE_B); // Parse with no enum option specified const std::vector args = {"test"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Should still be VALUE_B (the initial value) EXPECT_EQ(options.test_enum_value, TestEnumType::VALUE_B); } TEST(BaseOptionManager, LogOptions) { BaseOptionManager options; options.AddLogOptions(); auto VerifyLogState = [&](const std::string& output, bool expect_stderr, bool expect_stdout, bool expect_stderr_and_file) { const std::vector args = {"colmap", "--log_target", output}; std::vector argv; argv.reserve(args.size()); for (const auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); EXPECT_EQ(FLAGS_logtostderr, expect_stderr); #if COLMAP_GLOG_HAS_STDOUT_SUPPORT EXPECT_EQ(FLAGS_logtostdout, expect_stdout); #endif EXPECT_EQ(FLAGS_alsologtostderr, expect_stderr_and_file); }; VerifyLogState("stderr", /*expect_stderr=*/true, /*expect_stdout=*/false, /*expect_and_file=*/false); #if COLMAP_GLOG_HAS_STDOUT_SUPPORT VerifyLogState("stdout", /*expect_stderr=*/false, /*expect_stdout=*/true, /*expect_and_file=*/false); #else // glog < 0.6 does not support FLAGS_logtostdout, falls back to stderr. VerifyLogState("stdout", /*expect_stderr=*/true, /*expect_stdout=*/false, /*expect_and_file=*/false); #endif VerifyLogState("file", /*expect_stderr=*/false, /*expect_stdout=*/false, /*expect_and_file=*/false); VerifyLogState("stderr_and_file", /*expect_stderr=*/false, /*expect_stdout=*/false, /*expect_and_file=*/true); VerifyLogState("invalid", /*expect_stderr=*/false, /*expect_stdout=*/false, /*expect_and_file=*/true); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/bundle_adjustment.cc000066400000000000000000000100511522646662000234240ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/bundle_adjustment.h" #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/sfm/observation_manager.h" #include "colmap/util/misc.h" #include "colmap/util/timer.h" namespace colmap { namespace { // Callback functor called after each bundle adjustment iteration. class BundleAdjustmentIterationCallback : public ceres::IterationCallback { public: explicit BundleAdjustmentIterationCallback(BaseController* controller) : controller_(controller) {} virtual ceres::CallbackReturnType operator()( const ceres::IterationSummary& summary) { THROW_CHECK_NOTNULL(controller_); if (controller_->CheckIfStopped()) { return ceres::SOLVER_TERMINATE_SUCCESSFULLY; } else { return ceres::SOLVER_CONTINUE; } } private: BaseController* controller_; }; } // namespace BundleAdjustmentController::BundleAdjustmentController( const OptionManager& options, std::shared_ptr reconstruction) : options_(options), reconstruction_(std::move(reconstruction)) {} void BundleAdjustmentController::Run() { THROW_CHECK_NOTNULL(reconstruction_); LOG_HEADING1("Global bundle adjustment"); Timer run_timer; run_timer.Start(); if (reconstruction_->NumRegFrames() == 0) { LOG(ERROR) << "Need at least one registered frame."; return; } // Avoid degeneracies in bundle adjustment. ObservationManager(*reconstruction_).FilterObservationsWithNegativeDepth(); BundleAdjustmentOptions ba_options = *options_.bundle_adjustment; BundleAdjustmentIterationCallback iteration_callback(this); if (ba_options.ceres) { ba_options.ceres->solver_options.callbacks.push_back(&iteration_callback); } // Configure bundle adjustment. BundleAdjustmentConfig ba_config; for (const image_t image_id : reconstruction_->RegImageIds()) { ba_config.AddImage(image_id); } // Fixing the gauge with two cameras leads to a more stable optimization // with fewer steps as compared to fixing three points. // TODO(jsch): Investigate whether it is safe to not fix the gauge at all, // as initial experiments show that it is even faster. ba_config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); // Run bundle adjustment. std::unique_ptr bundle_adjuster = CreateDefaultBundleAdjuster(ba_options, ba_config, *reconstruction_); bundle_adjuster->Solve(); reconstruction_->UpdatePoint3DErrors(); run_timer.PrintMinutes(); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/bundle_adjustment.h000066400000000000000000000042241522646662000232730ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/option_manager.h" #include "colmap/scene/reconstruction.h" #include "colmap/util/base_controller.h" namespace colmap { // Class that controls the global bundle adjustment procedure. class BundleAdjustmentController : public BaseController { public: BundleAdjustmentController(const OptionManager& options, std::shared_ptr reconstruction); void Run(); private: const OptionManager& options_; std::shared_ptr reconstruction_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/bundle_adjustment_test.cc000066400000000000000000000066501522646662000244750ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/bundle_adjustment.h" #include "colmap/controllers/option_manager.h" #include "colmap/math/random.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include namespace colmap { namespace { TEST(BundleAdjustmentController, EmptyReconstruction) { SetPRNGSeed(1); auto reconstruction = std::make_shared(); OptionManager options; BundleAdjustmentController controller(options, reconstruction); EXPECT_NO_THROW(controller.Run()); EXPECT_EQ(reconstruction->NumRegImages(), 0); EXPECT_EQ(reconstruction->NumPoints3D(), 0); } TEST(BundleAdjustmentController, Reconstruction) { SetPRNGSeed(1); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 2; synthetic_options.num_frames_per_rig = 3; synthetic_options.num_points3D = 100; SynthesizeDataset(synthetic_options, >_reconstruction); auto reconstruction = std::make_shared(gt_reconstruction); SyntheticNoiseOptions noise_options; noise_options.point2D_stddev = 0.1; noise_options.point3D_stddev = 0.1; noise_options.rig_from_world_rotation_stddev = 0.1; noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(noise_options, reconstruction.get()); OptionManager options; BundleAdjustmentController controller(options, reconstruction); controller.Run(); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_extraction.cc000066400000000000000000000603221522646662000236160ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/feature_extraction.h" #include "colmap/feature/sift.h" #include "colmap/scene/database.h" #include "colmap/util/cuda.h" #include "colmap/util/file.h" #include "colmap/util/misc.h" #include "colmap/util/opengl_utils.h" #include "colmap/util/timer.h" #include namespace colmap { namespace { void ScaleKeypoints(int bitmap_width, int bitmap_height, size_t camera_width, size_t camera_height, FeatureKeypoints* keypoints) { if (static_cast(bitmap_width) != camera_width || static_cast(bitmap_height) != camera_height) { const float scale_x = static_cast(camera_width) / bitmap_width; const float scale_y = static_cast(camera_height) / bitmap_height; for (auto& keypoint : *keypoints) { keypoint.Rescale(scale_x, scale_y); } } } void MaskFeatures(const Bitmap& mask, FeatureKeypoints* keypoints, FeatureDescriptors* descriptors) { size_t out_index = 0; for (size_t i = 0; i < keypoints->size(); ++i) { const auto color = mask.GetPixel(static_cast(keypoints->at(i).x), static_cast(keypoints->at(i).y)); if (!color || color->r == 0) { // Delete this keypoint by not copying it to the output. } else { // Retain this keypoint by copying it to the output index (in case this // index differs from its current position). if (out_index != i) { keypoints->at(out_index) = keypoints->at(i); for (int col = 0; col < descriptors->data.cols(); ++col) { descriptors->data(out_index, col) = descriptors->data(i, col); } } out_index += 1; } } keypoints->resize(out_index); descriptors->data.conservativeResize(out_index, descriptors->data.cols()); } struct ImageData { ImageReader::Status status = ImageReader::Status::FAILURE; Rig rig; Camera camera; Image image; PosePrior pose_prior; std::unique_ptr bitmap; std::unique_ptr mask; FeatureKeypoints keypoints; FeatureDescriptors descriptors; }; class ImageResizerThread : public Thread { public: ImageResizerThread(int max_image_size, JobQueue* input_queue, JobQueue* output_queue) : max_image_size_(max_image_size), input_queue_(input_queue), output_queue_(output_queue) { THROW_CHECK_GT(max_image_size_, 0); } private: void Run() override { while (true) { if (IsStopped()) { break; } auto input_job = input_queue_->Pop(); if (input_job.IsValid()) { auto& image_data = input_job.Data(); if (image_data.status == ImageReader::Status::SUCCESS) { image_data.bitmap->Thumbnail(max_image_size_); } output_queue_->Push(std::move(image_data)); } else { break; } } } const int max_image_size_; JobQueue* input_queue_; JobQueue* output_queue_; }; class FeatureExtractorThread : public Thread { public: FeatureExtractorThread(const FeatureExtractionOptions& extraction_options, const std::shared_ptr& camera_mask, JobQueue* input_queue, JobQueue* output_queue) : extraction_options_(extraction_options), camera_mask_(camera_mask), input_queue_(input_queue), output_queue_(output_queue) { THROW_CHECK(extraction_options_.Check()); if (extraction_options_.RequiresOpenGL()) { opengl_context_ = std::make_unique(); } } private: void Run() override { if (opengl_context_ != nullptr) { THROW_CHECK(opengl_context_->MakeCurrent()); } std::unique_ptr extractor = FeatureExtractor::Create(extraction_options_); if (extractor == nullptr) { LOG(ERROR) << "Failed to create feature extractor."; SignalInvalidSetup(); return; } SignalValidSetup(); while (true) { if (IsStopped()) { break; } auto input_job = input_queue_->Pop(); if (input_job.IsValid()) { auto& image_data = input_job.Data(); if (image_data.status == ImageReader::Status::SUCCESS) { const int orig_width = image_data.bitmap->Width(); const int orig_height = image_data.bitmap->Height(); const int rot90 = image_data.pose_prior.HasGravity() ? ComputeRot90FromGravity(image_data.pose_prior.gravity) : 0; if (rot90 > 0) { image_data.bitmap->Rot90(rot90); } if (extractor->Extract(*image_data.bitmap, &image_data.keypoints, &image_data.descriptors)) { if (rot90 > 0) { const int w = image_data.bitmap->Width(); const int h = image_data.bitmap->Height(); for (auto& kp : image_data.keypoints) { kp.Rot90(4 - rot90, w, h); } } ScaleKeypoints(orig_width, orig_height, image_data.camera.width, image_data.camera.height, &image_data.keypoints); if (camera_mask_) { MaskFeatures(*camera_mask_, &image_data.keypoints, &image_data.descriptors); } if (image_data.mask) { MaskFeatures(*image_data.mask, &image_data.keypoints, &image_data.descriptors); } } else { image_data.status = ImageReader::Status::FAILURE; } } // Release the memory, since it is not used afterwards. // Warning: Do not reset the pointer, as we use it later // to check if a mask exists for logging purposes. *image_data.bitmap = Bitmap(); if (image_data.mask) { *image_data.mask = Bitmap(); } output_queue_->Push(std::move(image_data)); } else { break; } } } const FeatureExtractionOptions extraction_options_; std::shared_ptr camera_mask_; std::unique_ptr opengl_context_; JobQueue* input_queue_; JobQueue* output_queue_; }; class FeatureWriterThread : public Thread { public: FeatureWriterThread(FeatureExtractorType extractor_type, size_t num_images, Database* database, JobQueue* input_queue) : extractor_type_str_(FeatureExtractorTypeToString(extractor_type)), num_images_(num_images), database_(database), input_queue_(input_queue) {} private: void Run() override { size_t image_index = 0; while (true) { if (IsStopped()) { break; } auto input_job = input_queue_->Pop(); if (input_job.IsValid()) { auto& image_data = input_job.Data(); image_index += 1; LOG(INFO) << StringPrintf( "Processed file [%d/%d]", image_index, num_images_); LOG(INFO) << StringPrintf(" Name: %s", image_data.image.Name().c_str()); if (image_data.status != ImageReader::Status::SUCCESS) { LOG(WARNING) << image_data.image.Name() << " " << ImageReader::StatusToString(image_data.status); continue; } LOG(INFO) << StringPrintf(" Dimensions: %d x %d", image_data.camera.width, image_data.camera.height); LOG(INFO) << StringPrintf(" Camera: #%d - %s", image_data.camera.camera_id, image_data.camera.ModelName().c_str()); if (image_data.camera.IsPerspective()) { LOG(INFO) << StringPrintf( " Focal Length: %.2fpx%s", image_data.camera.MeanFocalLength(), image_data.camera.has_prior_focal_length ? " (Prior)" : ""); } LOG(INFO) << " Features: " << image_data.keypoints.size() << " (" << extractor_type_str_ << ")"; if (image_data.mask) { LOG(INFO) << " Mask: Yes"; } DatabaseTransaction database_transaction(database_); if (image_data.image.ImageId() == kInvalidImageId) { image_data.image.SetImageId(database_->WriteImage(image_data.image)); if (image_data.pose_prior.HasPosition() || image_data.pose_prior.HasGravity()) { if (image_data.pose_prior.HasPosition()) { LOG(INFO) << StringPrintf( " GPS: LAT=%.3f, LON=%.3f, ALT=%.3f", image_data.pose_prior.position.x(), image_data.pose_prior.position.y(), image_data.pose_prior.position.z()); } if (image_data.pose_prior.HasGravity()) { LOG(INFO) << StringPrintf( " Gravity: X=%.3f, Y=%.3f, Z=%.3f", image_data.pose_prior.gravity.x(), image_data.pose_prior.gravity.y(), image_data.pose_prior.gravity.z()); } image_data.pose_prior.corr_data_id = image_data.image.DataId(); image_data.pose_prior.pose_prior_id = database_->WritePosePrior(image_data.pose_prior); } Frame frame; frame.SetRigId(image_data.rig.RigId()); frame.AddDataId(image_data.image.DataId()); database_->WriteFrame(frame); } if (!database_->ExistsKeypoints(image_data.image.ImageId())) { database_->WriteKeypoints(image_data.image.ImageId(), image_data.keypoints); } if (!database_->ExistsDescriptors(image_data.image.ImageId())) { database_->WriteDescriptors(image_data.image.ImageId(), image_data.descriptors); } } else { break; } } } const std::string extractor_type_str_; const size_t num_images_; Database* database_; JobQueue* input_queue_; }; // Feature extraction class to extract features for all images in a directory. class FeatureExtractorController : public Thread { public: FeatureExtractorController(const std::filesystem::path& database_path, const ImageReaderOptions& reader_options, const FeatureExtractionOptions& extraction_options) : reader_options_(reader_options), extraction_options_(extraction_options), database_(Database::Open(database_path)), image_reader_(reader_options_, database_.get()) { THROW_CHECK(reader_options_.Check()); THROW_CHECK(extraction_options_.Check()); std::shared_ptr camera_mask; if (!reader_options_.camera_mask_path.empty()) { if (ExistsFile(reader_options_.camera_mask_path)) { camera_mask = std::make_shared(); if (!camera_mask->Read(reader_options_.camera_mask_path, /*as_rgb=*/false)) { LOG(ERROR) << "Failed to read invalid mask file at: " << reader_options_.camera_mask_path << ". No mask is going to be used."; camera_mask.reset(); } } else { LOG(ERROR) << "Mask at " << reader_options_.camera_mask_path << " does not exist."; } } const int num_threads = GetEffectiveNumThreads(extraction_options_.num_threads); THROW_CHECK_GT(num_threads, 0); // Make sure that we only have limited number of objects in the queue to // avoid excess in memory usage since images and features take lots of // memory. constexpr int kQueueSize = 1; resizer_queue_ = std::make_unique>(kQueueSize); extractor_queue_ = std::make_unique>(kQueueSize); writer_queue_ = std::make_unique>(kQueueSize); const int max_image_size = extraction_options_.EffMaxImageSize(); for (int i = 0; i < num_threads; ++i) { resizers_.emplace_back(std::make_unique( max_image_size, resizer_queue_.get(), extractor_queue_.get())); } // Determine if GPU extraction should be used. SIFT GPU extraction is not // supported with domain_size_pooling or estimate_affine_shape, which // require CPU-based covariant SIFT. auto worker_extraction_options = extraction_options_; if (extraction_options_.type == FeatureExtractorType::SIFT && (extraction_options_.sift->domain_size_pooling || extraction_options_.sift->estimate_affine_shape)) { worker_extraction_options.use_gpu = false; } if (worker_extraction_options.use_gpu) { std::vector gpu_indices = CSVToVector(extraction_options_.gpu_index); THROW_CHECK_GT(gpu_indices.size(), 0); #if defined(COLMAP_CUDA_ENABLED) if (gpu_indices.size() == 1 && gpu_indices[0] == -1) { const int num_cuda_devices = GetNumCudaDevices(); THROW_CHECK_GT(num_cuda_devices, 0); gpu_indices.resize(num_cuda_devices); std::iota(gpu_indices.begin(), gpu_indices.end(), 0); } #endif // COLMAP_CUDA_ENABLED // Prevent nested threading, as we multi-thread at the controller level. worker_extraction_options.num_threads = std::max(num_threads / static_cast(gpu_indices.size()), 1); for (const int gpu_index : gpu_indices) { worker_extraction_options.gpu_index = std::to_string(gpu_index); extractors_.emplace_back( std::make_unique(worker_extraction_options, camera_mask, extractor_queue_.get(), writer_queue_.get())); } } else { const static FeatureExtractionOptions kDefaultExtractionOptions; if (extraction_options_.num_threads == -1 && extraction_options_.type == FeatureExtractorType::SIFT && extraction_options_.max_image_size == kDefaultExtractionOptions.max_image_size && extraction_options_.sift->first_octave == kDefaultExtractionOptions.sift->first_octave) { LOG(WARNING) << "Your current options use the maximum number of " "threads on the machine to extract features. Extracting SIFT " "features on the CPU can consume a lot of RAM per thread for " "large images. Consider reducing the maximum image size and/or " "the first octave or manually limit the number of extraction " "threads. Ignore this warning, if your machine has sufficient " "memory for the current settings."; } int num_extractors = 0; switch (extraction_options_.type) { case FeatureExtractorType::SIFT: // Prevent nested threading, as we multi-thread at the controller // level as SIFT extraction doesn't require much RAM per extractor. num_extractors = num_threads; worker_extraction_options.num_threads = 1; break; case FeatureExtractorType::ALIKED_N16ROT: case FeatureExtractorType::ALIKED_N32: // Use a single extractor with parallelization per image because // ALIKED requires a lot of RAM per extractor and would otherwise OOM. num_extractors = 1; worker_extraction_options.num_threads = num_threads; break; default: LOG(FATAL_THROW) << "Unknown feature extractor type: " << FeatureExtractorTypeToString( extraction_options_.type); } THROW_CHECK_GT(num_extractors, 0); for (int i = 0; i < num_extractors; ++i) { extractors_.emplace_back( std::make_unique(worker_extraction_options, camera_mask, extractor_queue_.get(), writer_queue_.get())); } } writer_ = std::make_unique(extraction_options_.type, image_reader_.NumImages(), database_.get(), writer_queue_.get()); } private: void Run() override { LOG_HEADING1("Feature extraction"); Timer run_timer; run_timer.Start(); for (auto& resizer : resizers_) { resizer->Start(); } for (auto& extractor : extractors_) { extractor->Start(); } writer_->Start(); for (auto& extractor : extractors_) { if (!extractor->CheckValidSetup()) { return; } } while (image_reader_.NextIndex() < image_reader_.NumImages()) { if (IsStopped()) { resizer_queue_->Stop(); extractor_queue_->Stop(); resizer_queue_->Clear(); extractor_queue_->Clear(); break; } ImageData image_data; image_data.bitmap = std::make_unique(); Bitmap mask; image_data.status = image_reader_.Next(&image_data.rig, &image_data.camera, &image_data.image, &image_data.pose_prior, image_data.bitmap.get(), &mask); if (!mask.IsEmpty()) { image_data.mask = std::make_unique(std::move(mask)); } if (image_data.status != ImageReader::Status::SUCCESS) { // Release the memory, since it is not used afterwards. *image_data.bitmap = Bitmap(); if (image_data.mask) { *image_data.mask = Bitmap(); } } THROW_CHECK(resizer_queue_->Push(std::move(image_data))); } resizer_queue_->Wait(); resizer_queue_->Stop(); for (auto& resizer : resizers_) { resizer->Wait(); } extractor_queue_->Wait(); extractor_queue_->Stop(); for (auto& extractor : extractors_) { extractor->Wait(); } writer_queue_->Wait(); writer_queue_->Stop(); writer_->Wait(); run_timer.PrintMinutes(); } const ImageReaderOptions reader_options_; const FeatureExtractionOptions extraction_options_; std::shared_ptr database_; ImageReader image_reader_; std::vector> resizers_; std::vector> extractors_; std::unique_ptr writer_; std::unique_ptr> resizer_queue_; std::unique_ptr> extractor_queue_; std::unique_ptr> writer_queue_; }; // Import features from text files. Each image must have a corresponding text // file with the same name and an additional ".txt" suffix. // Currently hard-coded to support SIFT features. class FeatureImporterController : public Thread { public: FeatureImporterController(const std::filesystem::path& database_path, const ImageReaderOptions& reader_options, const std::filesystem::path& import_path) : database_path_(database_path), reader_options_(reader_options), import_path_(import_path) {} private: void Run() override { LOG_HEADING1("Feature import"); Timer run_timer; run_timer.Start(); if (!ExistsDir(import_path_)) { LOG(ERROR) << "Import directory does not exist."; return; } auto database = Database::Open(database_path_); ImageReader image_reader(reader_options_, database.get()); while (image_reader.NextIndex() < image_reader.NumImages()) { if (IsStopped()) { break; } LOG(INFO) << StringPrintf("Processing file [%d/%d]", image_reader.NextIndex() + 1, image_reader.NumImages()); // Load image data and possibly save camera to database. Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; if (image_reader.Next( &rig, &camera, &image, &pose_prior, &bitmap, nullptr) != ImageReader::Status::SUCCESS) { continue; } const auto path = import_path_ / (image.Name() + ".txt"); if (ExistsFile(path)) { FeatureKeypoints keypoints; FeatureDescriptors descriptors; LoadSiftFeaturesFromTextFile(path, &keypoints, &descriptors); LOG(INFO) << "Features: " << keypoints.size() << "(Imported SIFT)"; DatabaseTransaction database_transaction(database.get()); if (image.ImageId() == kInvalidImageId) { image.SetImageId(database->WriteImage(image)); if (pose_prior.HasPosition() || pose_prior.HasGravity()) { pose_prior.corr_data_id = image.DataId(); pose_prior.pose_prior_id = database->WritePosePrior(pose_prior); } Frame frame; frame.SetRigId(rig.RigId()); frame.AddDataId(image.DataId()); database->WriteFrame(frame); } if (!database->ExistsKeypoints(image.ImageId())) { database->WriteKeypoints(image.ImageId(), keypoints); } if (!database->ExistsDescriptors(image.ImageId())) { database->WriteDescriptors(image.ImageId(), descriptors); } } else { LOG(INFO) << "SKIP: No features found at " << path; } } run_timer.PrintMinutes(); } const std::filesystem::path database_path_; const ImageReaderOptions reader_options_; const std::filesystem::path import_path_; }; } // namespace std::unique_ptr CreateFeatureExtractorController( const std::filesystem::path& database_path, const ImageReaderOptions& reader_options, const FeatureExtractionOptions& extraction_options) { return std::make_unique( database_path, reader_options, extraction_options); } std::unique_ptr CreateFeatureImporterController( const std::filesystem::path& database_path, const ImageReaderOptions& reader_options, const std::filesystem::path& import_path) { return std::make_unique( database_path, reader_options, import_path); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_extraction.h000066400000000000000000000046241522646662000234630ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/image_reader.h" #include "colmap/feature/extractor.h" #include "colmap/util/threading.h" #include namespace colmap { // Reads images from a folder, extracts features, and writes them to database. std::unique_ptr CreateFeatureExtractorController( const std::filesystem::path& database_path, const ImageReaderOptions& reader_options, const FeatureExtractionOptions& extraction_options); // Import features from text files. Each image must have a corresponding text // file with the same name and an additional ".txt" suffix. std::unique_ptr CreateFeatureImporterController( const std::filesystem::path& database_path, const ImageReaderOptions& reader_options, const std::filesystem::path& import_path); } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_extraction_test.cc000066400000000000000000000230441522646662000246550ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/feature_extraction.h" #include "colmap/scene/database.h" #include "colmap/util/file.h" #include "colmap/util/testing.h" #include #include namespace colmap { namespace { Bitmap CreateTestBitmap() { Bitmap bitmap(100, 100, /*as_rgb=*/false); bitmap.Fill(BitmapColor(0)); for (int y = 30; y < 70; ++y) { for (int x = 30; x < 70; ++x) { bitmap.SetPixel(x, y, BitmapColor(255)); } } return bitmap; } TEST(CreateFeatureExtractorController, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; const auto image_path = test_dir / "images"; CreateDirIfNotExists(image_path); // Create test images const int kNumImages = 2; const Bitmap test_bitmap = CreateTestBitmap(); for (int i = 0; i < kNumImages; ++i) { test_bitmap.Write(image_path / (std::to_string(i) + ".png")); } // Set up options ImageReaderOptions reader_options; reader_options.image_path = image_path; FeatureExtractionOptions extraction_options; extraction_options.use_gpu = false; extraction_options.num_threads = kNumImages; // Create and run the controller auto controller = CreateFeatureExtractorController( database_path, reader_options, extraction_options); ASSERT_NE(controller, nullptr); controller->Start(); controller->Wait(); // Verify results in database auto database = Database::Open(database_path); const std::vector images = database->ReadAllImages(); EXPECT_EQ(images.size(), kNumImages); for (const auto& image : images) { EXPECT_TRUE(database->ExistsKeypoints(image.ImageId())); EXPECT_TRUE(database->ExistsDescriptors(image.ImageId())); const FeatureKeypoints keypoints = database->ReadKeypoints(image.ImageId()); const FeatureDescriptors descriptors = database->ReadDescriptors(image.ImageId()); // Check that features were extracted EXPECT_GT(keypoints.size(), 0); EXPECT_EQ(keypoints.size(), descriptors.data.rows()); EXPECT_EQ(descriptors.type, FeatureExtractorType::SIFT); EXPECT_EQ(descriptors.data.cols(), 128); } } TEST(CreateFeatureExtractorController, WithCameraMask) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; const auto image_path = test_dir / "images"; const auto mask_path = test_dir / "mask.png"; CreateDirIfNotExists(image_path); // Create test image with features const Bitmap test_bitmap = CreateTestBitmap(); test_bitmap.Write(image_path / "test.png"); // Create a mask that only allows the center region (white = keep, black = // mask) The test bitmap has a white square from (30,30) to (70,70) We'll // create a mask that only keeps a smaller region Bitmap mask_bitmap(100, 100, /*as_rgb=*/false); mask_bitmap.Fill(BitmapColor(0)); // Start with all black (masked) // Only keep center region (40,40) to (60,60) for (int y = 40; y < 60; ++y) { for (int x = 40; x < 60; ++x) { mask_bitmap.SetPixel(x, y, BitmapColor(255)); // White = keep } } mask_bitmap.Write(mask_path); // Extract features without mask first to get baseline ImageReaderOptions reader_options_no_mask; reader_options_no_mask.image_path = image_path; FeatureExtractionOptions extraction_options; extraction_options.use_gpu = false; extraction_options.num_threads = 1; auto controller = CreateFeatureExtractorController( database_path, reader_options_no_mask, extraction_options); ASSERT_NE(controller, nullptr); controller->Start(); controller->Wait(); auto database = Database::Open(database_path); std::vector images = database->ReadAllImages(); ASSERT_EQ(images.size(), 1); const size_t num_features_no_mask = database->ReadKeypoints(images[0].ImageId()).size(); EXPECT_GT(num_features_no_mask, 0); // Now extract with mask const auto database_path_masked = test_dir / "database_masked.db"; ImageReaderOptions reader_options_masked; reader_options_masked.image_path = image_path; reader_options_masked.camera_mask_path = mask_path; controller = CreateFeatureExtractorController( database_path_masked, reader_options_masked, extraction_options); ASSERT_NE(controller, nullptr); controller->Start(); controller->Wait(); auto database_masked = Database::Open(database_path_masked); images = database_masked->ReadAllImages(); ASSERT_EQ(images.size(), 1); const FeatureKeypoints keypoints_masked = database_masked->ReadKeypoints(images[0].ImageId()); const FeatureDescriptors descriptors_masked = database_masked->ReadDescriptors(images[0].ImageId()); const size_t num_features_masked = keypoints_masked.size(); // With mask, should have fewer features EXPECT_LT(num_features_masked, num_features_no_mask); EXPECT_GT(num_features_masked, 0); // But should still have some features // All remaining keypoints should be within the unmasked region (40-60, 40-60) for (const auto& kp : keypoints_masked) { EXPECT_GE(kp.x, 40.0f); EXPECT_LT(kp.x, 60.0f); EXPECT_GE(kp.y, 40.0f); EXPECT_LT(kp.y, 60.0f); } // Descriptors should match keypoints count EXPECT_EQ(descriptors_masked.data.rows(), keypoints_masked.size()); EXPECT_EQ(descriptors_masked.type, FeatureExtractorType::SIFT); EXPECT_EQ(descriptors_masked.data.cols(), 128); } TEST(CreateFeatureImporterController, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; const auto image_path = test_dir / "images"; const auto import_path = test_dir / "features"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(import_path); const int kNumImages = 2; const int kNumFeatures = 3; // Create test images const Bitmap test_bitmap = CreateTestBitmap(); for (int i = 0; i < kNumImages; ++i) { test_bitmap.Write(image_path / (std::to_string(i) + ".png")); } // Create feature text files for each image for (int i = 0; i < kNumImages; ++i) { const auto feature_file = import_path / (std::to_string(i) + ".png.txt"); std::ofstream file(feature_file); ASSERT_TRUE(file.is_open()); // Write header: num_features dimension const int kDimension = 128; file << kNumFeatures << " " << kDimension << "\n"; // Write features: x y scale orientation descriptor[0..127] for (int j = 0; j < kNumFeatures; ++j) { // Keypoint data file << (10.0f + j * 5.0f) << " " // x << (20.0f + j * 5.0f) << " " // y << (1.5f + j * 0.1f) << " " // scale << (0.5f + j * 0.2f); // orientation // Descriptor data (128 values) for (int k = 0; k < kDimension; ++k) { file << " " << ((j * kDimension + k) % 256); } file << "\n"; } } // Set up options ImageReaderOptions reader_options; reader_options.image_path = image_path; // Create and run the controller auto controller = CreateFeatureImporterController( database_path, reader_options, import_path); ASSERT_NE(controller, nullptr); controller->Start(); controller->Wait(); // Verify results in database auto database = Database::Open(database_path); const std::vector images = database->ReadAllImages(); EXPECT_EQ(images.size(), kNumImages); for (const auto& image : images) { EXPECT_TRUE(database->ExistsKeypoints(image.ImageId())); EXPECT_TRUE(database->ExistsDescriptors(image.ImageId())); const FeatureKeypoints keypoints = database->ReadKeypoints(image.ImageId()); const FeatureDescriptors descriptors = database->ReadDescriptors(image.ImageId()); // Check that features were imported correctly EXPECT_EQ(keypoints.size(), kNumFeatures); EXPECT_EQ(descriptors.type, FeatureExtractorType::SIFT); EXPECT_EQ(descriptors.data.rows(), kNumFeatures); EXPECT_EQ(descriptors.data.cols(), 128); // Verify some keypoint values EXPECT_FLOAT_EQ(keypoints[0].x, 10.0f); EXPECT_FLOAT_EQ(keypoints[0].y, 20.0f); } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_matching.cc000066400000000000000000000503461522646662000232350ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/feature_matching.h" #include "colmap/controllers/feature_matching_utils.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/feature/matcher.h" #include "colmap/feature/utils.h" #include "colmap/scene/database.h" #include "colmap/util/file.h" #include "colmap/util/misc.h" #include "colmap/util/timer.h" #include namespace colmap { namespace { void RigVerification(const std::shared_ptr& database, const std::shared_ptr& cache, const TwoViewGeometryOptions& geometry_options, const int num_threads) { std::unordered_map rigs; for (auto& rig : database->ReadAllRigs()) { rigs[rig.RigId()] = std::move(rig); } std::unordered_map image_to_frame_ids; for (const auto& frame : database->ReadAllFrames()) { for (const data_t& data_id : frame.ImageIds()) { image_to_frame_ids[data_id.id] = frame.FrameId(); } } struct FramePairStats { int num_image_pairs = 0; int num_matches = 0; }; std::map, FramePairStats> frame_pair_stats; for (const auto& [image_pair_id, pair_num_matches] : database->ReadNumMatches()) { if (pair_num_matches == 0) { continue; } const auto [image_id1, image_id2] = PairIdToImagePair(image_pair_id); frame_t frame_id1 = image_to_frame_ids.at(image_id1); frame_t frame_id2 = image_to_frame_ids.at(image_id2); if (frame_id1 > frame_id2) { std::swap(frame_id1, frame_id2); } auto& stats = frame_pair_stats[{frame_id1, frame_id2}]; stats.num_image_pairs += 1; stats.num_matches += pair_num_matches; } ThreadPool thread_pool(num_threads); for (const auto& [frame_pair, stats] : frame_pair_stats) { // If the frame pair has only matches between one pair of images, then // there is no need to run rig verification, as there are no rig // constraints. if (stats.num_image_pairs <= 1 || stats.num_matches < geometry_options.min_num_inliers) { continue; } thread_pool.AddTask([&cache, &rigs, geometry_options, frame_id1 = frame_pair.first, frame_id2 = frame_pair.second]() { const Frame& frame1 = cache->GetFrame(frame_id1); const Frame& frame2 = cache->GetFrame(frame_id2); const Rig& rig1 = rigs.at(frame1.RigId()); const Rig& rig2 = rigs.at(frame2.RigId()); std::unordered_map images; images.reserve(frame1.NumDataIds() + frame2.NumDataIds()); std::unordered_map cameras; cameras.reserve(images.size()); auto add_images_and_cameras = [&cache, &images, &cameras]( const Frame& frame) { for (const data_t& data_id : frame.ImageIds()) { Image& image = images[data_id.id]; image = cache->GetImage(data_id.id); image.SetPoints2D( FeatureKeypointsToPointsVector(*cache->GetKeypoints(data_id.id))); cameras[image.CameraId()] = cache->GetCamera(image.CameraId()); } }; add_images_and_cameras(frame1); add_images_and_cameras(frame2); std::vector, FeatureMatches>> matches; matches.reserve(frame1.NumDataIds() * frame2.NumDataIds()); for (const data_t& data_id1 : frame1.ImageIds()) { const image_t image_id1 = data_id1.id; for (const data_t& data_id2 : frame2.ImageIds()) { const image_t image_id2 = data_id2.id; // If verifying within the same frame, then skip redundant image // pairs, whereas different frames are guaranteed to have different // image pairs. Note that verifying within the same frame can be // useful when the images have some overlap but the matches between // image pairs are not enough alone but accumulating them over the // whole frame can lead to a successful verification. if ((frame_id1 == frame_id2 && image_id1 <= image_id2) || !cache->ExistsMatches(image_id1, image_id2)) { continue; } matches.emplace_back(std::make_pair(image_id1, image_id2), cache->GetMatches(image_id1, image_id2)); } } for (const auto& [image_pair, two_view_geometry] : EstimateRigTwoViewGeometries( rig1, rig2, images, cameras, matches, geometry_options)) { const auto& [image_id1, image_id2] = image_pair; cache->DeleteTwoViewGeometry(image_id1, image_id2); cache->WriteTwoViewGeometry(image_id1, image_id2, two_view_geometry); } }); } thread_pool.Wait(); } class FeatureMatcherThread : public Thread { public: template static std::unique_ptr Create( const typename PairGeneratorType::PairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { auto database = Database::Open(database_path); auto cache = std::make_shared( pairing_options.CacheSize(), database); return std::make_unique( matching_options, geometry_options, database, cache, [pairing_options, cache]() { return std::make_unique(pairing_options, cache); }); } using PairGeneratorFactory = std::function()>; FeatureMatcherThread(const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, std::shared_ptr database, std::shared_ptr cache, PairGeneratorFactory pair_generator_factory) : matching_options_(matching_options), geometry_options_(geometry_options), database_(std::move(database)), cache_(std::move(cache)), pair_generator_factory_(std::move(pair_generator_factory)), matcher_(matching_options, geometry_options, cache_) { THROW_CHECK(matching_options.Check()); THROW_CHECK(geometry_options.Check()); } private: void Run() override { LOG_HEADING1("Feature matching & geometric verification"); Timer run_timer; run_timer.Start(); if (!matcher_.Setup()) { return; } std::unique_ptr pair_generator = THROW_CHECK_NOTNULL(pair_generator_factory_()); while (!pair_generator->HasFinished()) { if (IsStopped()) { run_timer.PrintMinutes(); return; } Timer timer; timer.Start(); const std::vector> image_pairs = pair_generator->Next(); matcher_.Match(image_pairs); LOG(INFO) << StringPrintf("in %.3fs", timer.ElapsedSeconds()); } run_timer.PrintMinutes(); // Notice that we run rig verification after feature matching, because // feature matching operates on pairs of images instead of pairs of frames. // Rig verification operates on pairs of frames and we require all image // pairs between two frames to be matched before running rig verification. if (!matching_options_.skip_geometric_verification && matching_options_.rig_verification) { run_timer.Restart(); LOG_HEADING1("Rig verification"); RigVerification( database_, cache_, geometry_options_, matching_options_.num_threads); run_timer.PrintMinutes(); } } const FeatureMatchingOptions matching_options_; const TwoViewGeometryOptions geometry_options_; const std::shared_ptr database_; const std::shared_ptr cache_; const PairGeneratorFactory pair_generator_factory_; FeatureMatcherController matcher_; }; class GeometricVerifierThread : public Thread { public: template static std::unique_ptr Create( const GeometricVerifierOptions& verifier_options, const typename PairGeneratorType::PairingOptions& pairing_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { auto database = Database::Open(database_path); auto cache = std::make_shared( pairing_options.CacheSize(), database); return std::make_unique( verifier_options, geometry_options, database, cache, [pairing_options, cache]() { return std::make_unique(pairing_options, cache); }); } using PairGeneratorFactory = std::function()>; GeometricVerifierThread(const GeometricVerifierOptions& verifier_options, const TwoViewGeometryOptions& geometry_options, std::shared_ptr database, std::shared_ptr cache, PairGeneratorFactory pair_generator_factory) : geometry_options_(geometry_options), database_(std::move(database)), cache_(std::move(cache)), pair_generator_factory_(std::move(pair_generator_factory)), verifier_(verifier_options, geometry_options, cache_) { THROW_CHECK(geometry_options.Check()); } private: void Run() override { LOG_HEADING1("Geometric verification"); Timer run_timer; run_timer.Start(); if (!verifier_.Setup()) { return; } std::unique_ptr pair_generator = THROW_CHECK_NOTNULL(pair_generator_factory_()); while (!pair_generator->HasFinished()) { if (IsStopped()) { run_timer.PrintMinutes(); return; } Timer timer; timer.Start(); const std::vector> image_pairs = pair_generator->Next(); verifier_.Verify(image_pairs); LOG(INFO) << StringPrintf("in %.3fs", timer.ElapsedSeconds()); } if (verifier_.Options().rig_verification) { run_timer.Restart(); LOG_HEADING1("Rig verification"); RigVerification(database_, cache_, geometry_options_, verifier_.Options().num_threads); run_timer.PrintMinutes(); } run_timer.PrintMinutes(); } const TwoViewGeometryOptions geometry_options_; const std::shared_ptr database_; const std::shared_ptr cache_; const PairGeneratorFactory pair_generator_factory_; GeometricVerifierController verifier_; }; } // namespace std::unique_ptr CreateExhaustiveFeatureMatcher( const ExhaustivePairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return FeatureMatcherThread::Create( pairing_options, matching_options, geometry_options, database_path); } std::unique_ptr CreateVocabTreeFeatureMatcher( const VocabTreePairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return FeatureMatcherThread::Create( pairing_options, matching_options, geometry_options, database_path); } std::unique_ptr CreateSequentialFeatureMatcher( const SequentialPairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return FeatureMatcherThread::Create( pairing_options, matching_options, geometry_options, database_path); } std::unique_ptr CreateSpatialFeatureMatcher( const SpatialPairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return FeatureMatcherThread::Create( pairing_options, matching_options, geometry_options, database_path); } std::unique_ptr CreateTransitiveFeatureMatcher( const TransitivePairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return FeatureMatcherThread::Create( pairing_options, matching_options, geometry_options, database_path); } std::unique_ptr CreateImagePairsFeatureMatcher( const ImportedPairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return FeatureMatcherThread::Create( pairing_options, matching_options, geometry_options, database_path); } namespace { class FeaturePairsFeatureMatcher : public Thread { public: FeaturePairsFeatureMatcher(const FeaturePairsMatchingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) : options_(pairing_options), matching_options_(matching_options), geometry_options_(geometry_options), database_(Database::Open(database_path)), cache_(std::make_shared(/*cache_size=*/100, database_)) { THROW_CHECK(pairing_options.Check()); THROW_CHECK(matching_options.Check()); THROW_CHECK(geometry_options.Check()); } private: void Run() override { LOG_HEADING1("Importing matches"); Timer run_timer; run_timer.Start(); std::unordered_map image_name_to_image; image_name_to_image.reserve(cache_->GetImageIds().size()); for (const auto image_id : cache_->GetImageIds()) { const auto& image = cache_->GetImage(image_id); image_name_to_image.emplace(image.Name(), &image); } std::ifstream file(options_.match_list_path); THROW_CHECK_FILE_OPEN(file, options_.match_list_path); std::string line; while (std::getline(file, line)) { if (IsStopped()) { run_timer.PrintMinutes(); return; } StringTrim(&line); if (line.empty()) { continue; } std::istringstream line_stream(line); std::string image_name1, image_name2; try { line_stream >> image_name1 >> image_name2; } catch (...) { LOG(ERROR) << "Could not read image pair."; break; } LOG(INFO) << StringPrintf( "%s - %s", image_name1.c_str(), image_name2.c_str()); if (image_name_to_image.count(image_name1) == 0) { LOG(INFO) << StringPrintf("SKIP: Image %s not found in database.", image_name1.c_str()); break; } if (image_name_to_image.count(image_name2) == 0) { LOG(INFO) << StringPrintf("SKIP: Image %s not found in database.", image_name2.c_str()); break; } const Image& image1 = *image_name_to_image[image_name1]; const Image& image2 = *image_name_to_image[image_name2]; bool skip_pair = false; if (database_->ExistsTwoViewGeometry(image1.ImageId(), image2.ImageId())) { LOG(INFO) << "SKIP: Matches for image pair already exist in database."; skip_pair = true; } FeatureMatches matches; while (std::getline(file, line)) { StringTrim(&line); if (line.empty()) { break; } std::istringstream line_stream(line); FeatureMatch match; try { line_stream >> match.point2D_idx1 >> match.point2D_idx2; } catch (...) { LOG(ERROR) << "Cannot read feature matches."; break; } matches.push_back(match); } if (skip_pair) { continue; } const Camera& camera1 = cache_->GetCamera(image1.CameraId()); const Camera& camera2 = cache_->GetCamera(image2.CameraId()); TwoViewGeometry two_view_geometry; if (options_.verify_matches) { database_->WriteMatches(image1.ImageId(), image2.ImageId(), matches); const std::shared_ptr keypoints1 = cache_->GetKeypoints(image1.ImageId()); const std::shared_ptr keypoints2 = cache_->GetKeypoints(image2.ImageId()); two_view_geometry = EstimateTwoViewGeometry(camera1, FeatureKeypointsToPointsVector(*keypoints1), camera2, FeatureKeypointsToPointsVector(*keypoints2), std::move(matches), geometry_options_); } else { if (camera1.has_prior_focal_length && camera2.has_prior_focal_length) { two_view_geometry.config = TwoViewGeometry::CALIBRATED; } else { two_view_geometry.config = TwoViewGeometry::UNCALIBRATED; } two_view_geometry.inlier_matches = std::move(matches); } database_->WriteTwoViewGeometry( image1.ImageId(), image2.ImageId(), two_view_geometry); } run_timer.PrintMinutes(); } const FeaturePairsMatchingOptions options_; const FeatureMatchingOptions matching_options_; const TwoViewGeometryOptions geometry_options_; const std::shared_ptr database_; const std::shared_ptr cache_; }; } // namespace std::unique_ptr CreateFeaturePairsFeatureMatcher( const FeaturePairsMatchingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return std::make_unique( pairing_options, matching_options, geometry_options, database_path); } std::unique_ptr CreateGeometricVerifier( const GeometricVerifierOptions& verifier_options, const ExistingMatchedPairingOptions& pairing_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path) { return GeometricVerifierThread::Create( verifier_options, pairing_options, geometry_options, database_path); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_matching.h000066400000000000000000000170011522646662000230660ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/pairing.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/feature/matcher.h" #include "colmap/util/threading.h" #include #include namespace colmap { // Exhaustively match images by processing each block in the exhaustive match // matrix in one batch: // // +----+----+-----------------> images[i] // |#000|0000| // |1#00|1000| <- Above the main diagonal, the block diagonal is not matched // |11#0|1100| ^ // |111#|1110| | // +----+----+ | // |1000|#000|\ | // |1100|1#00| \ One block | // |1110|11#0| / of image pairs | // |1111|111#|/ | // +----+----+ | // | ^ | // | | | // | Below the main diagonal, the block diagonal is matched <--------------+ // | // v // images[i] // // Pairs will only be matched if 1, to avoid duplicate pairs. Pairs with # // are on the main diagonal and denote pairs of the same image. std::unique_ptr CreateExhaustiveFeatureMatcher( const ExhaustivePairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Match each image against its nearest neighbors using a vocabulary tree. std::unique_ptr CreateVocabTreeFeatureMatcher( const VocabTreePairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Sequentially match images within neighborhood: // // +-------------------------------+-----------------------> images[i] // ^ | ^ // | Current image[i] | // | | | // +----------+-----------+ // | // Match image_i against // // image_[i - o, i + o] with o = [1 .. overlap] // image_[i - 2^o, i + 2^o] (for quadratic overlap) // // Sequential order is determined based on the image names in ascending order. // // Invoke loop detection if `(i mod loop_detection_period) == 0`, retrieve // most similar `loop_detection_num_images` images from vocabulary tree, // and perform matching and verification. std::unique_ptr CreateSequentialFeatureMatcher( const SequentialPairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Match images against spatial nearest neighbors using prior location // information, e.g. provided manually or extracted from EXIF. std::unique_ptr CreateSpatialFeatureMatcher( const SpatialPairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Match transitive image pairs in a database with existing feature matches. // This matcher transitively closes loops/triplets. For example, if image pairs // A-B and B-C match but A-C has not been matched, then this matcher attempts to // match A-C. This procedure is performed for multiple iterations. std::unique_ptr CreateTransitiveFeatureMatcher( const TransitivePairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Match images manually specified in a list of image pairs. // // Read matches file with the following format: // // image_name1 image_name2 // image_name1 image_name3 // image_name2 image_name3 // ... // std::unique_ptr CreateImagePairsFeatureMatcher( const ImportedPairingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Import feature matches from a text file. // // Read matches file with the following format: // // image_name1 image_name2 // 0 1 // 1 2 // 2 3 // // image_name1 image_name3 // 0 1 // 1 2 // 2 3 // ... // std::unique_ptr CreateFeaturePairsFeatureMatcher( const FeaturePairsMatchingOptions& pairing_options, const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); // Options for CreateGeometricVerifier struct GeometricVerifierOptions { // Number of threads for geometric verification. int num_threads = -1; // Whether to perform rig verification at the end. Unnecessary when we have // existing relative poses for each matched pair. bool rig_verification = false; // Whether to use the existing relative pose stored in TwoViewGeometry in the // database. If no TwoViewGeometry is found we will fall back to geometric // verification with RANSAC. bool use_existing_relative_pose = false; }; // Perform geometric verification of existing matched image pairs. std::unique_ptr CreateGeometricVerifier( const GeometricVerifierOptions& verifier_options, const ExistingMatchedPairingOptions& pairing_options, const TwoViewGeometryOptions& geometry_options, const std::filesystem::path& database_path); } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_matching_test.cc000066400000000000000000000440101522646662000242630ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/feature_matching.h" #include "colmap/feature/types.h" #include "colmap/retrieval/visual_index.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include #include namespace colmap { namespace { void CreateTestDatabase(int num_images, Database& database) { Reconstruction unused_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = num_images; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 20; synthetic_dataset_options.num_points2D_without_point3D = 3; synthetic_dataset_options.prior_position = true; SynthesizeDataset( synthetic_dataset_options, &unused_reconstruction, &database); } std::unique_ptr CreateSyntheticVisualIndex() { auto visual_index = retrieval::VisualIndex::Create(); retrieval::VisualIndex::BuildOptions build_options; build_options.num_visual_words = 5; visual_index->Build( build_options, FeatureDescriptorsFloat(FeatureExtractorType::SIFT, FeatureDescriptorsFloatData::Random(50, 128))); return visual_index; } TEST(CreateExhaustiveFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/4, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); ExhaustivePairingOptions pairing_options; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto matcher = CreateExhaustiveFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); EXPECT_EQ(database->ReadAllMatches().size(), 6); EXPECT_EQ(database->ReadTwoViewGeometries().size(), 6); } TEST(CreateVocabTreeFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; const auto vocab_tree_path = test_dir / "vocab_tree.bin"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/4, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); // Create vocab tree CreateSyntheticVisualIndex()->Write(vocab_tree_path); VocabTreePairingOptions pairing_options; pairing_options.vocab_tree_path = vocab_tree_path; pairing_options.num_images = 2; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto matcher = CreateVocabTreeFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); // Each image should match with num_images others, // while some of the pairs may be redundant. EXPECT_GE(database->ReadAllMatches().size(), 4); EXPECT_GE(database->ReadTwoViewGeometries().size(), 4); } TEST(CreateSequentialFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/5, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); SequentialPairingOptions pairing_options; pairing_options.overlap = 2; pairing_options.quadratic_overlap = false; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto matcher = CreateSequentialFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); // With 5 images and overlap=2: // (0,1), (0,2), (1,2), (1,3), (2,3), (2,4), (3,4) EXPECT_EQ(database->ReadAllMatches().size(), 7); EXPECT_EQ(database->ReadTwoViewGeometries().size(), 7); } TEST(CreateSpatialFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/4, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); SpatialPairingOptions pairing_options; pairing_options.max_num_neighbors = 2; pairing_options.max_distance = 1e6; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto matcher = CreateSpatialFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); EXPECT_GT(database->ReadAllMatches().size(), 0); EXPECT_GT(database->ReadTwoViewGeometries().size(), 0); } TEST(CreateTransitiveFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/4, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); const std::vector images = database->ReadAllImages(); ASSERT_GE(images.size(), 3); // Create initial matches: 1-2 and 2-3 TwoViewGeometry two_view_geometry; two_view_geometry.config = TwoViewGeometry::CALIBRATED; two_view_geometry.inlier_matches = FeatureMatches(10); database->WriteTwoViewGeometry( images[0].ImageId(), images[1].ImageId(), two_view_geometry); database->WriteTwoViewGeometry( images[1].ImageId(), images[2].ImageId(), two_view_geometry); TransitivePairingOptions pairing_options; pairing_options.batch_size = 100; pairing_options.num_iterations = 1; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto matcher = CreateTransitiveFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); // Should create transitive match 1-3 const size_t final_matches = database->ReadTwoViewGeometries().size(); EXPECT_GE(final_matches, 2); // At least the original 2 matches } TEST(CreateImagePairsFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; const auto match_list_path = test_dir / "match_list.txt"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/4, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); const std::vector images = database->ReadAllImages(); ASSERT_GE(images.size(), 3); // Create match list file with specific image pairs std::ofstream file(match_list_path); file << images[0].Name() << " " << images[1].Name() << "\n"; file << images[1].Name() << " " << images[2].Name() << "\n"; file << images[2].Name() << " " << images[3].Name() << "\n"; file.close(); ImportedPairingOptions pairing_options; pairing_options.match_list_path = match_list_path; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto matcher = CreateImagePairsFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); EXPECT_EQ(database->ReadAllMatches().size(), 3); EXPECT_EQ(database->ReadTwoViewGeometries().size(), 3); } TEST(CreateFeaturePairsFeatureMatcher, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; const auto match_list_path = test_dir / "feature_match_list.txt"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/3, *database); database->ClearMatches(); database->ClearTwoViewGeometries(); const std::vector images = database->ReadAllImages(); ASSERT_GE(images.size(), 2); // Create feature match list file with many matches for better verification std::ofstream file(match_list_path); file << images[0].Name() << " " << images[1].Name() << "\n"; for (int i = 0; i < 15; ++i) { file << i << " " << i << "\n"; } file << "\n"; // Empty line separates pairs file << images[1].Name() << " " << images[2].Name() << "\n"; for (int i = 0; i < 15; ++i) { file << i << " " << i << "\n"; } file << "\n"; file.close(); FeaturePairsMatchingOptions pairing_options; pairing_options.match_list_path = match_list_path; pairing_options.verify_matches = true; FeatureMatchingOptions matching_options; matching_options.use_gpu = false; matching_options.num_threads = 1; TwoViewGeometryOptions geometry_options; geometry_options.min_num_inliers = 5; // Lower threshold for testing auto matcher = CreateFeaturePairsFeatureMatcher( pairing_options, matching_options, geometry_options, database_path); ASSERT_NE(matcher, nullptr); matcher->Start(); matcher->Wait(); // Should have imported and verified the matches EXPECT_GE(database->ReadTwoViewGeometries().size(), 2); } TEST(CreateGeometricVerifier, Nominal) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); CreateTestDatabase(/*num_images=*/4, *database); database->ClearTwoViewGeometries(); ExistingMatchedPairingOptions pairing_options; GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; TwoViewGeometryOptions geometry_options; auto verifier = CreateGeometricVerifier( verifier_options, pairing_options, geometry_options, database_path); ASSERT_NE(verifier, nullptr); verifier->Start(); verifier->Wait(); EXPECT_GE(database->ReadAllMatches().size(), 3); EXPECT_GE(database->ReadTwoViewGeometries().size(), 3); } void ExpectRigVerificationResults(const Database& database, int num_expected_matches, int num_expected_calibrated, int num_expected_calibrated_rig) { // Verify that two-view geometries were created. int num_calibrated = 0; int num_calibrated_rig = 0; int num_others = 0; for (const auto& [pair_id, two_view_geometry] : database.ReadTwoViewGeometries()) { EXPECT_EQ(two_view_geometry.inlier_matches.size(), num_expected_matches); switch (two_view_geometry.config) { case TwoViewGeometry::CALIBRATED: ++num_calibrated; break; case TwoViewGeometry::CALIBRATED_RIG: ++num_calibrated_rig; break; default: ++num_others; } } // Two calibrated pairs between images in the same frames. EXPECT_EQ(num_calibrated, num_expected_calibrated); // Four calibrated pairs between images in different frames. EXPECT_EQ(num_calibrated_rig, num_expected_calibrated_rig); EXPECT_EQ(num_others, 0); } TEST(CreateGeometricVerifier, RigVerificationWithNonTrivialFrames) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 2; synthetic_dataset_options.num_points3D = 25; synthetic_dataset_options.match_config = SyntheticDatasetOptions::MatchConfig::EXHAUSTIVE; synthetic_dataset_options.camera_has_prior_focal_length = true; SynthesizeDataset(synthetic_dataset_options, &reconstruction, database.get()); ExistingMatchedPairingOptions pairing_options; GeometricVerifierOptions verifier_options; verifier_options.num_threads = -1; verifier_options.rig_verification = true; TwoViewGeometryOptions geometry_options; geometry_options.min_num_inliers = 5; auto verifier = CreateGeometricVerifier( verifier_options, pairing_options, geometry_options, database_path); ASSERT_NE(verifier, nullptr); verifier->Start(); verifier->Wait(); // All pairs should be overwritten with calibrated rig pairs. ExpectRigVerificationResults(*database, synthetic_dataset_options.num_points3D, /*num_expected_calibrated=*/0, /*num_expected_calibrated_rig=*/15); } TEST(CreateGeometricVerifier, RigVerificationWithTrivialFrames) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 2; synthetic_dataset_options.num_points3D = 25; synthetic_dataset_options.match_config = SyntheticDatasetOptions::MatchConfig::EXHAUSTIVE; synthetic_dataset_options.camera_has_prior_focal_length = true; SynthesizeDataset(synthetic_dataset_options, &reconstruction, database.get()); ExistingMatchedPairingOptions pairing_options; GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; verifier_options.rig_verification = true; TwoViewGeometryOptions geometry_options; geometry_options.min_num_inliers = 5; auto verifier = CreateGeometricVerifier( verifier_options, pairing_options, geometry_options, database_path); ASSERT_NE(verifier, nullptr); verifier->Start(); verifier->Wait(); // Trivial frames should be skipped and unmodified. ExpectRigVerificationResults(*database, synthetic_dataset_options.num_points3D, /*num_expected_calibrated=*/1, /*num_expected_calibrated_rig=*/0); } TEST(CreateGeometricVerifier, Guided) { const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.inlier_match_ratio = 0.6; synthetic_dataset_options.two_view_geometry_has_relative_pose = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); // Clear all inlier matches. cam2_from_cam1 is already gt from the synthesized // database. std::vector> gt_two_view_geometries = database->ReadTwoViewGeometries(); for (const auto& [pair_id, _] : gt_two_view_geometries) { const auto [image_id1, image_id2] = PairIdToImagePair(pair_id); database->DeleteInlierMatches(image_id1, image_id2); } ExistingMatchedPairingOptions pairing_options; GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; verifier_options.use_existing_relative_pose = true; TwoViewGeometryOptions geometry_options; auto verifier = CreateGeometricVerifier( verifier_options, pairing_options, geometry_options, database_path); ASSERT_NE(verifier, nullptr); verifier->Start(); verifier->Wait(); // Check validity after guided geometric verification. std::vector> two_view_geometries = database->ReadTwoViewGeometries(); EXPECT_GE(two_view_geometries.size(), gt_two_view_geometries.size()); for (size_t i = 0; i < two_view_geometries.size(); ++i) { EXPECT_EQ(two_view_geometries[i].first, gt_two_view_geometries[i].first); EXPECT_EQ(two_view_geometries[i].second.cam2_from_cam1, gt_two_view_geometries[i].second.cam2_from_cam1); EXPECT_TRUE(gt_two_view_geometries[i].second.E.value().isApprox( two_view_geometries[i].second.E.value())); // Should at least have all the original inliers. Some generated outliers // can be accidentally inliers as well. EXPECT_GE(two_view_geometries[i].second.inlier_matches.size(), gt_two_view_geometries[i].second.inlier_matches.size()); } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_matching_utils.cc000066400000000000000000000536041522646662000244550ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/feature_matching_utils.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/feature/sift.h" #include "colmap/feature/utils.h" #include "colmap/util/cuda.h" #include "colmap/util/misc.h" #if defined(COLMAP_CUDA_ENABLED) #include #endif #include namespace colmap { FeatureMatcherWorker::FeatureMatcherWorker( const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::shared_ptr& cache, JobQueue* input_queue, JobQueue* output_queue) : matching_options_(matching_options), geometry_options_(geometry_options), cache_(cache), input_queue_(input_queue), output_queue_(output_queue) { THROW_CHECK(matching_options_.Check()); if (matching_options_.RequiresOpenGL()) { opengl_context_ = std::make_unique(); } } void FeatureMatcherWorker::Run() { if (opengl_context_ != nullptr) { THROW_CHECK(opengl_context_->MakeCurrent()); } #if defined(COLMAP_CUDA_ENABLED) if (matching_options_.use_gpu) { // Initialize CUDA device for this worker thread const std::vector gpu_indices = CSVToVector(matching_options_.gpu_index); THROW_CHECK_EQ(gpu_indices.size(), 1) << "Each matching worker can only use one GPU"; const int gpu_index = gpu_indices[0]; if (gpu_index >= 0) { SetBestCudaDevice(gpu_index); LOG(INFO) << "Bind FeatureMatcherWorker to GPU device " << gpu_index; } } #endif if (matching_options_.type == FeatureMatcherType::SIFT_BRUTEFORCE) { // TODO(jsch): This is a bit ugly, but currently cannot think of a better // way to inject the shared descriptor index cache. THROW_CHECK_NOTNULL(matching_options_.sift)->cpu_descriptor_index_cache = &cache_->GetFeatureDescriptorIndexCache(); THROW_CHECK_NOTNULL(matching_options_.sift->cpu_descriptor_index_cache); } // Minimize the amount of allocated GPU memory by computing the maximum number // of descriptors for any image over the whole database. matching_options_.max_num_matches = std::min( matching_options_.max_num_matches, cache_->MaxNumKeypoints()); std::unique_ptr matcher = FeatureMatcher::Create(matching_options_); if (matcher == nullptr) { LOG(ERROR) << "Failed to create feature matcher."; SignalInvalidSetup(); return; } SignalValidSetup(); while (true) { if (IsStopped()) { break; } auto input_job = input_queue_->Pop(); if (input_job.IsValid()) { auto& data = input_job.Data(); if (!cache_->ExistsDescriptors(data.image_id1) || !cache_->ExistsDescriptors(data.image_id2)) { THROW_CHECK(output_queue_->Push(std::move(data))); continue; } const auto& camera1 = cache_->GetCamera(cache_->GetImage(data.image_id1).CameraId()); const auto& camera2 = cache_->GetCamera(cache_->GetImage(data.image_id2).CameraId()); if (matching_options_.guided_matching) { matcher->MatchGuided( geometry_options_.ransac_options.max_error, { data.image_id1, &camera1, cache_->GetKeypoints(data.image_id1), cache_->GetDescriptors(data.image_id1), cache_->FindImagePosePriorOrNull(data.image_id1), }, { data.image_id2, &camera2, cache_->GetKeypoints(data.image_id2), cache_->GetDescriptors(data.image_id2), cache_->FindImagePosePriorOrNull(data.image_id2), }, &data.two_view_geometry); } else { matcher->Match( { data.image_id1, &camera1, cache_->GetKeypoints(data.image_id1), cache_->GetDescriptors(data.image_id1), cache_->FindImagePosePriorOrNull(data.image_id1), }, { data.image_id2, &camera2, cache_->GetKeypoints(data.image_id2), cache_->GetDescriptors(data.image_id2), cache_->FindImagePosePriorOrNull(data.image_id2), }, &data.matches); } THROW_CHECK(output_queue_->Push(std::move(data))); } } } namespace { class VerifierWorker : public Thread { public: using Input = FeatureMatcherData; using Output = FeatureMatcherData; VerifierWorker(const TwoViewGeometryOptions& options, std::shared_ptr cache, JobQueue* input_queue, JobQueue* output_queue, const bool use_existing_relative_pose = false) : options_(options), cache_(std::move(cache)), use_existing_relative_pose_(use_existing_relative_pose), input_queue_(input_queue), output_queue_(output_queue) { THROW_CHECK(options_.Check()); } protected: void Run() override { while (true) { if (IsStopped()) { break; } auto input_job = input_queue_->Pop(); if (input_job.IsValid()) { auto& data = input_job.Data(); if (data.matches.size() < static_cast(options_.min_num_inliers)) { THROW_CHECK(output_queue_->Push(std::move(data))); continue; } const auto& camera1 = cache_->GetCamera(cache_->GetImage(data.image_id1).CameraId()); const auto& camera2 = cache_->GetCamera(cache_->GetImage(data.image_id2).CameraId()); const auto keypoints1 = cache_->GetKeypoints(data.image_id1); const auto keypoints2 = cache_->GetKeypoints(data.image_id2); const std::vector points1 = FeatureKeypointsToPointsVector(*keypoints1); const std::vector points2 = FeatureKeypointsToPointsVector(*keypoints2); if (use_existing_relative_pose_ && data.two_view_geometry.cam2_from_cam1.has_value()) { data.two_view_geometry = TwoViewGeometryFromKnownRelativePose( camera1, points1, camera2, points2, *data.two_view_geometry.cam2_from_cam1, data.matches, options_.min_num_inliers, options_.ransac_options.max_error); } else { data.two_view_geometry = EstimateTwoViewGeometry( camera1, points1, camera2, points2, data.matches, options_); } THROW_CHECK(output_queue_->Push(std::move(data))); } } } private: const TwoViewGeometryOptions options_; std::shared_ptr cache_; const bool use_existing_relative_pose_; JobQueue* input_queue_; JobQueue* output_queue_; }; } // namespace FeatureMatcherController::FeatureMatcherController( const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, std::shared_ptr cache) : matching_options_(matching_options), geometry_options_(geometry_options), cache_(std::move(cache)), is_setup_(false) { THROW_CHECK(matching_options_.Check()); THROW_CHECK(geometry_options_.Check()); THROW_CHECK_EQ(geometry_options_.ransac_options.num_threads, 1) << "Parallel RANSAC is not supported inside multi-threaded matching"; const int num_threads = GetEffectiveNumThreads(matching_options_.num_threads); THROW_CHECK_GT(num_threads, 0); std::vector gpu_indices = CSVToVector(matching_options_.gpu_index); THROW_CHECK_GT(gpu_indices.size(), 0); #if defined(COLMAP_CUDA_ENABLED) if (matching_options_.use_gpu && gpu_indices.size() == 1 && gpu_indices[0] == -1) { const int num_cuda_devices = GetNumCudaDevices(); THROW_CHECK_GT(num_cuda_devices, 0); gpu_indices.resize(num_cuda_devices); std::iota(gpu_indices.begin(), gpu_indices.end(), 0); } #endif // COLMAP_CUDA_ENABLED // If skip_geometric_verification, match directly to output_queue_. const bool skip_geometric_verification = matching_options_.skip_geometric_verification && !matching_options_.guided_matching; JobQueue* matcher_output_queue = skip_geometric_verification ? &output_queue_ : &verifier_queue_; if (matching_options_.use_gpu) { auto worker_matching_options = matching_options_; // The first matching is always without guided matching. worker_matching_options.guided_matching = false; matchers_.reserve(gpu_indices.size()); for (const auto& gpu_index : gpu_indices) { worker_matching_options.gpu_index = std::to_string(gpu_index); matchers_.emplace_back( std::make_unique(worker_matching_options, geometry_options_, cache_, &matcher_queue_, matcher_output_queue)); } } else { auto worker_matching_options = matching_options_; // Prevent nested threading. worker_matching_options.num_threads = 1; // The first matching is always without guided matching. worker_matching_options.guided_matching = false; matchers_.reserve(num_threads); for (int i = 0; i < num_threads; ++i) { matchers_.emplace_back( std::make_unique(worker_matching_options, geometry_options_, cache_, &matcher_queue_, matcher_output_queue)); } } verifiers_.reserve(num_threads); if (matching_options_.guided_matching) { // Redirect the verification output to final round of guided matching. for (int i = 0; i < num_threads; ++i) { verifiers_.emplace_back(std::make_unique( geometry_options_, cache_, &verifier_queue_, &guided_matcher_queue_)); } if (matching_options_.use_gpu) { auto worker_matching_options = matching_options_; guided_matchers_.reserve(gpu_indices.size()); for (const auto& gpu_index : gpu_indices) { worker_matching_options.gpu_index = std::to_string(gpu_index); guided_matchers_.emplace_back( std::make_unique(worker_matching_options, geometry_options_, cache_, &guided_matcher_queue_, &output_queue_)); } } else { auto worker_matching_options = matching_options_; // Prevent nested threading. worker_matching_options.num_threads = 1; guided_matchers_.reserve(num_threads); for (int i = 0; i < num_threads; ++i) { guided_matchers_.emplace_back( std::make_unique(worker_matching_options, geometry_options_, cache_, &guided_matcher_queue_, &output_queue_)); } } } else if (!matching_options.skip_geometric_verification) { for (int i = 0; i < num_threads; ++i) { verifiers_.emplace_back(std::make_unique( geometry_options_, cache_, &verifier_queue_, &output_queue_)); } } } FeatureMatcherController::~FeatureMatcherController() { matcher_queue_.Wait(); verifier_queue_.Wait(); guided_matcher_queue_.Wait(); output_queue_.Wait(); for (auto& matcher : matchers_) { matcher->Stop(); } for (auto& verifier : verifiers_) { verifier->Stop(); } for (auto& guided_matcher : guided_matchers_) { guided_matcher->Stop(); } matcher_queue_.Stop(); verifier_queue_.Stop(); guided_matcher_queue_.Stop(); output_queue_.Stop(); for (auto& matcher : matchers_) { matcher->Wait(); } for (auto& verifier : verifiers_) { verifier->Wait(); } for (auto& guided_matcher : guided_matchers_) { guided_matcher->Wait(); } } bool FeatureMatcherController::Setup() { for (auto& matcher : matchers_) { matcher->Start(); } for (auto& verifier : verifiers_) { verifier->Start(); } for (auto& guided_matcher : guided_matchers_) { guided_matcher->Start(); } for (auto& matcher : matchers_) { if (!matcher->CheckValidSetup()) { return false; } } for (auto& guided_matcher : guided_matchers_) { if (!guided_matcher->CheckValidSetup()) { return false; } } is_setup_ = true; return true; } void FeatureMatcherController::Match( const std::vector>& image_pairs) { THROW_CHECK_NOTNULL(cache_); THROW_CHECK(is_setup_); if (image_pairs.empty()) { return; } ////////////////////////////////////////////////////////////////////////////// // Match the image pairs ////////////////////////////////////////////////////////////////////////////// std::unordered_set image_pair_ids; image_pair_ids.reserve(image_pairs.size()); size_t num_outputs = 0; for (const auto& [image_id1, image_id2] : image_pairs) { // Avoid self-matches. if (image_id1 == image_id2) { continue; } // Avoid duplicate image pairs. const image_pair_t pair_id = ImagePairToPairId(image_id1, image_id2); if (!image_pair_ids.insert(pair_id).second) { continue; } // Avoid self-matches within a frame. if (matching_options_.skip_image_pairs_in_same_frame) { const Image& image1 = cache_->GetImage(image_id1); const Image& image2 = cache_->GetImage(image_id2); if (image1.HasFrameId() && image2.HasFrameId() && image1.FrameId() == image2.FrameId()) { continue; } } const bool exists_matches = cache_->ExistsMatches(image_id1, image_id2); const bool exists_two_view_geometry = cache_->ExistsTwoViewGeometry(image_id1, image_id2); if (exists_matches && exists_two_view_geometry) { continue; } num_outputs += 1; // If only one of the matches or inlier matches exist, we recompute them // from scratch and delete the existing results. This must be done before // pushing the jobs to the queue, otherwise database constraints might fail // when writing an existing result into the database. if (exists_two_view_geometry) { cache_->DeleteTwoViewGeometry(image_id1, image_id2); } FeatureMatcherData data; data.image_id1 = image_id1; data.image_id2 = image_id2; if (exists_matches) { data.matches = cache_->GetMatches(image_id1, image_id2); cache_->DeleteMatches(image_id1, image_id2); THROW_CHECK(verifier_queue_.Push(std::move(data))); } else { THROW_CHECK(matcher_queue_.Push(std::move(data))); } } ////////////////////////////////////////////////////////////////////////////// // Write results to database ////////////////////////////////////////////////////////////////////////////// for (size_t i = 0; i < num_outputs; ++i) { auto output_job = output_queue_.Pop(); THROW_CHECK(output_job.IsValid()); auto& output = output_job.Data(); if (output.matches.size() < static_cast(geometry_options_.min_num_inliers)) { output.matches = {}; } if (output.two_view_geometry.inlier_matches.size() < static_cast(geometry_options_.min_num_inliers)) { output.two_view_geometry = TwoViewGeometry(); } cache_->WriteMatches(output.image_id1, output.image_id2, output.matches); cache_->WriteTwoViewGeometry( output.image_id1, output.image_id2, output.two_view_geometry); } THROW_CHECK_EQ(output_queue_.Size(), 0); } GeometricVerifierController::GeometricVerifierController( const GeometricVerifierOptions& options, const TwoViewGeometryOptions& geometry_options, std::shared_ptr cache) : geometry_options_(geometry_options), cache_(std::move(cache)), options_(options), is_setup_(false) { THROW_CHECK(geometry_options_.Check()); const int num_threads = GetEffectiveNumThreads(options_.num_threads); // Run geometric verification for (int i = 0; i < num_threads; ++i) { verifiers_.emplace_back( std::make_unique(geometry_options_, cache_, &verifier_queue_, &output_queue_, options_.use_existing_relative_pose)); } } GeometricVerifierController::~GeometricVerifierController() { verifier_queue_.Wait(); output_queue_.Wait(); for (auto& verifier : verifiers_) { verifier->Stop(); } verifier_queue_.Stop(); output_queue_.Stop(); for (auto& verifier : verifiers_) { verifier->Wait(); } } const GeometricVerifierOptions& GeometricVerifierController::Options() const { return options_; } GeometricVerifierOptions& GeometricVerifierController::Options() { return options_; } bool GeometricVerifierController::Setup() { for (auto& verifier : verifiers_) { verifier->Start(); } is_setup_ = true; return true; } void GeometricVerifierController::Verify( const std::vector>& image_pairs) { THROW_CHECK_NOTNULL(cache_); THROW_CHECK(is_setup_); if (image_pairs.empty()) { return; } ////////////////////////////////////////////////////////////////////////////// // Verify the matches from the image pairs ////////////////////////////////////////////////////////////////////////////// std::unordered_set image_pair_ids; image_pair_ids.reserve(image_pairs.size()); size_t num_outputs = 0; for (const auto& [image_id1, image_id2] : image_pairs) { // Avoid self-matches. if (image_id1 == image_id2) { continue; } // Avoid duplicate image pairs. const image_pair_t pair_id = ImagePairToPairId(image_id1, image_id2); if (!image_pair_ids.insert(pair_id).second) { continue; } const bool exists_matches = cache_->ExistsMatches(image_id1, image_id2); const bool exists_inlier_matches = cache_->ExistsInlierMatches(image_id1, image_id2); if (exists_matches && exists_inlier_matches) { continue; } num_outputs += 1; // If only one of the matches or inlier matches exist, we recompute them // from scratch and delete the existing results. This must be done before // pushing the jobs to the queue, otherwise database constraints might fail // when writing an existing result into the database. if (exists_inlier_matches) { cache_->DeleteTwoViewGeometry(image_id1, image_id2); } FeatureMatcherData data; data.image_id1 = image_id1; data.image_id2 = image_id2; if (exists_matches) { data.matches = cache_->GetMatches(image_id1, image_id2); // There exists a two view geometry without inlier matches. if (cache_->ExistsTwoViewGeometry(image_id1, image_id2)) { data.two_view_geometry = cache_->GetTwoViewGeometry(image_id1, image_id2); } THROW_CHECK(verifier_queue_.Push(std::move(data))); } } ////////////////////////////////////////////////////////////////////////////// // Write results to database ////////////////////////////////////////////////////////////////////////////// for (size_t i = 0; i < num_outputs; ++i) { auto output_job = output_queue_.Pop(); THROW_CHECK(output_job.IsValid()); auto& output = output_job.Data(); if (output.matches.size() < static_cast(geometry_options_.min_num_inliers)) { output.matches = {}; } if (output.two_view_geometry.inlier_matches.size() < static_cast(geometry_options_.min_num_inliers)) { output.two_view_geometry = TwoViewGeometry(); } if (cache_->ExistsTwoViewGeometry(output.image_id1, output.image_id2)) { cache_->DeleteTwoViewGeometry(output.image_id1, output.image_id2); } cache_->WriteTwoViewGeometry( output.image_id1, output.image_id2, output.two_view_geometry); } THROW_CHECK_EQ(output_queue_.Size(), 0); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_matching_utils.h000066400000000000000000000120701522646662000243070ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/feature_matching.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/feature/matcher.h" #include "colmap/util/opengl_utils.h" #include "colmap/util/threading.h" #include #include namespace colmap { struct FeatureMatcherData { image_t image_id1 = kInvalidImageId; image_t image_id2 = kInvalidImageId; FeatureMatches matches; TwoViewGeometry two_view_geometry; }; class FeatureMatcherWorker : public Thread { public: using Input = FeatureMatcherData; using Output = FeatureMatcherData; FeatureMatcherWorker(const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, const std::shared_ptr& cache, JobQueue* input_queue, JobQueue* output_queue); private: void Run() override; FeatureMatchingOptions matching_options_; TwoViewGeometryOptions geometry_options_; std::shared_ptr cache_; JobQueue* input_queue_; JobQueue* output_queue_; std::unique_ptr opengl_context_; }; // Multi-threaded and multi-GPU SIFT feature matcher, which writes the computed // results to the database and skips already matched image pairs. To improve // performance of the matching by taking advantage of caching and database // transactions, pass multiple images to the `Match` function. Note that the // database should be in an active transaction while calling `Match`. class FeatureMatcherController { public: FeatureMatcherController(const FeatureMatchingOptions& matching_options, const TwoViewGeometryOptions& geometry_options, std::shared_ptr cache); ~FeatureMatcherController(); // Setup the matchers and return if successful. bool Setup(); // Match one batch of multiple image pairs. void Match(const std::vector>& image_pairs); private: FeatureMatchingOptions matching_options_; TwoViewGeometryOptions geometry_options_; std::shared_ptr cache_; bool is_setup_; std::vector> matchers_; std::vector> guided_matchers_; std::vector> verifiers_; JobQueue matcher_queue_; JobQueue verifier_queue_; JobQueue guided_matcher_queue_; JobQueue output_queue_; }; class GeometricVerifierController { public: GeometricVerifierController(const GeometricVerifierOptions& verifier_options, const TwoViewGeometryOptions& geometry_options, std::shared_ptr cache); const GeometricVerifierOptions& Options() const; GeometricVerifierOptions& Options(); ~GeometricVerifierController(); // Setup the verifiers and return if successful. bool Setup(); // Verify one batch of multiple image pairs. void Verify(const std::vector>& image_pairs); private: TwoViewGeometryOptions geometry_options_; std::shared_ptr cache_; GeometricVerifierOptions options_; bool is_setup_; std::vector> verifiers_; JobQueue verifier_queue_; JobQueue output_queue_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/feature_matching_utils_test.cc000066400000000000000000000273731522646662000255200ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/feature_matching_utils.h" #include "colmap/controllers/matcher_cache.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { struct TestData { std::filesystem::path test_dir; std::shared_ptr database; std::shared_ptr cache; std::vector image_ids; }; TestData CreateTestData(int num_images) { TestData data; data.test_dir = CreateTestDir(); const auto database_path = data.test_dir / "database.db"; data.database = Database::Open(database_path); Reconstruction reconstruction; SyntheticDatasetOptions options; options.num_rigs = num_images; options.num_cameras_per_rig = 1; options.num_frames_per_rig = 1; options.num_points3D = 20; options.num_points2D_without_point3D = 3; SynthesizeDataset(options, &reconstruction, data.database.get()); data.cache = std::make_shared(100, data.database); data.image_ids = data.cache->GetImageIds(); return data; } FeatureMatchingOptions DefaultMatchingOptions() { FeatureMatchingOptions options; options.use_gpu = false; options.num_threads = 1; return options; } std::vector> AllPairs( const std::vector& image_ids) { std::vector> pairs; for (size_t i = 0; i < image_ids.size(); ++i) { for (size_t j = i + 1; j < image_ids.size(); ++j) { pairs.emplace_back(image_ids[i], image_ids[j]); } } return pairs; } // Match pairs without geometric verification, then clear TVGs. // Leaves matches in the database ready for a GeometricVerifierController. void MatchPairsWithoutVerification( TestData& data, const std::vector>& pairs) { data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); matching_options.skip_geometric_verification = true; TwoViewGeometryOptions geometry_options; FeatureMatcherController matcher( matching_options, geometry_options, data.cache); ASSERT_TRUE(matcher.Setup()); matcher.Match(pairs); data.database->ClearTwoViewGeometries(); } TEST(FeatureMatcherController, MatchEmptyPairs) { auto data = CreateTestData(3); data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); TwoViewGeometryOptions geometry_options; FeatureMatcherController controller( matching_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); // Matching empty pairs should return without error controller.Match({}); EXPECT_EQ(data.database->ReadAllMatches().size(), 0); } TEST(FeatureMatcherController, MatchSkipsSelfMatches) { auto data = CreateTestData(3); data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); TwoViewGeometryOptions geometry_options; FeatureMatcherController controller( matching_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); // Self-match pairs should be skipped std::vector> pairs; pairs.reserve(data.image_ids.size()); for (const auto id : data.image_ids) { pairs.emplace_back(id, id); } controller.Match(pairs); EXPECT_EQ(data.database->ReadAllMatches().size(), 0); } TEST(FeatureMatcherController, MatchSkipsDuplicatePairs) { auto data = CreateTestData(3); data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); TwoViewGeometryOptions geometry_options; FeatureMatcherController controller( matching_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); ASSERT_GE(data.image_ids.size(), 2); const image_t id1 = data.image_ids[0]; const image_t id2 = data.image_ids[1]; // Submit same pair multiple times — should only process once controller.Match({{id1, id2}, {id1, id2}, {id1, id2}}); const auto matches = data.database->ReadAllMatches(); EXPECT_EQ(matches.size(), 1); } TEST(FeatureMatcherController, MatchSkipsExistingResults) { auto data = CreateTestData(3); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); TwoViewGeometryOptions geometry_options; FeatureMatcherController controller( matching_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); ASSERT_GE(data.image_ids.size(), 2); const image_t id1 = data.image_ids[0]; const image_t id2 = data.image_ids[1]; // Clear and match once data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); controller.Match({{id1, id2}}); const auto matches_before = data.database->ReadAllMatches(); const auto tvg_before = data.database->ReadTwoViewGeometries(); EXPECT_EQ(matches_before.size(), 1); EXPECT_EQ(tvg_before.size(), 1); // Match same pair again — should skip since both matches and TVG exist controller.Match({{id1, id2}}); const auto matches_after = data.database->ReadAllMatches(); const auto tvg_after = data.database->ReadTwoViewGeometries(); EXPECT_EQ(matches_after.size(), matches_before.size()); EXPECT_EQ(tvg_after.size(), tvg_before.size()); // Match with reversed pair — should also be skipped controller.Match({{id2, id1}}); const auto matches_reversed = data.database->ReadAllMatches(); const auto tvg_reversed = data.database->ReadTwoViewGeometries(); EXPECT_EQ(matches_reversed.size(), matches_before.size()); EXPECT_EQ(tvg_reversed.size(), tvg_before.size()); } TEST(FeatureMatcherController, MatchMultiplePairs) { auto data = CreateTestData(4); data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); TwoViewGeometryOptions geometry_options; FeatureMatcherController controller( matching_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); // Match all pairs const auto pairs = AllPairs(data.image_ids); controller.Match(pairs); // 4 choose 2 = 6 pairs EXPECT_EQ(data.database->ReadAllMatches().size(), 6); EXPECT_EQ(data.database->ReadTwoViewGeometries().size(), 6); } TEST(FeatureMatcherController, MatchSkipGeometricVerification) { auto data = CreateTestData(3); data.database->ClearMatches(); data.database->ClearTwoViewGeometries(); FeatureMatchingOptions matching_options = DefaultMatchingOptions(); matching_options.skip_geometric_verification = true; TwoViewGeometryOptions geometry_options; FeatureMatcherController controller( matching_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); ASSERT_GE(data.image_ids.size(), 2); controller.Match({{data.image_ids[0], data.image_ids[1]}}); // Matches should be written even without geometric verification EXPECT_EQ(data.database->ReadAllMatches().size(), 1); // Verify geometric verification was skipped: TVG should have UNDEFINED config const auto tvg = data.database->ReadTwoViewGeometry(data.image_ids[0], data.image_ids[1]); EXPECT_EQ(tvg.config, TwoViewGeometry::UNDEFINED); EXPECT_TRUE(tvg.inlier_matches.empty()); } TEST(GeometricVerifierController, OptionsAccessor) { auto data = CreateTestData(3); GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; TwoViewGeometryOptions geometry_options; GeometricVerifierController controller( verifier_options, geometry_options, data.cache); EXPECT_EQ(controller.Options().num_threads, 1); controller.Options().num_threads = 2; EXPECT_EQ(controller.Options().num_threads, 2); } TEST(GeometricVerifierController, VerifyEmptyPairs) { auto data = CreateTestData(3); data.database->ClearTwoViewGeometries(); GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; TwoViewGeometryOptions geometry_options; GeometricVerifierController controller( verifier_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); // Verifying empty pairs should return without error controller.Verify({}); EXPECT_EQ(data.database->ReadTwoViewGeometries().size(), 0); } TEST(GeometricVerifierController, VerifySkipsSelfMatches) { auto data = CreateTestData(3); data.database->ClearTwoViewGeometries(); GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; TwoViewGeometryOptions geometry_options; GeometricVerifierController controller( verifier_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); std::vector> pairs; pairs.reserve(data.image_ids.size()); for (const auto id : data.image_ids) { pairs.emplace_back(id, id); } controller.Verify(pairs); EXPECT_EQ(data.database->ReadTwoViewGeometries().size(), 0); } TEST(GeometricVerifierController, VerifySkipsDuplicatePairs) { auto data = CreateTestData(3); ASSERT_GE(data.image_ids.size(), 2); MatchPairsWithoutVerification(data, {{data.image_ids[0], data.image_ids[1]}}); GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; TwoViewGeometryOptions geometry_options; GeometricVerifierController controller( verifier_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); const image_t id1 = data.image_ids[0]; const image_t id2 = data.image_ids[1]; // Submit same pair multiple times — should only process once controller.Verify({{id1, id2}, {id1, id2}, {id1, id2}}); const auto tvgs = data.database->ReadTwoViewGeometries(); EXPECT_EQ(tvgs.size(), 1); } TEST(GeometricVerifierController, VerifyWithExistingMatches) { auto data = CreateTestData(4); const auto pairs = AllPairs(data.image_ids); MatchPairsWithoutVerification(data, pairs); GeometricVerifierOptions verifier_options; verifier_options.num_threads = 1; TwoViewGeometryOptions geometry_options; GeometricVerifierController controller( verifier_options, geometry_options, data.cache); ASSERT_TRUE(controller.Setup()); controller.Verify(pairs); // All 6 pairs should now have TVGs EXPECT_EQ(data.database->ReadTwoViewGeometries().size(), 6); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/global_pipeline.cc000066400000000000000000000126101522646662000230450ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/global_pipeline.h" #include "colmap/estimators/alignment.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/scene/database_cache.h" #include "colmap/sfm/global_mapper.h" #include "colmap/util/misc.h" #include "colmap/util/timer.h" namespace colmap { namespace { constexpr double kMinPriorFocalLengthRatio = 0.5; bool HasInsufficientPriorFocalLengths(const DatabaseCache& database_cache) { const auto& cameras = database_cache.Cameras(); if (cameras.empty()) { return false; } const size_t num_with_prior = std::count_if(cameras.begin(), cameras.end(), [](const auto& camera) { return camera.second.has_prior_focal_length; }); return num_with_prior < kMinPriorFocalLengthRatio * cameras.size(); } void WarnInsufficientPriorFocalLengths() { LOG(WARNING) << "Less than " << kMinPriorFocalLengthRatio * 100 << "% of cameras have prior focal lengths. The " "global mapper depends on reasonably good focal length " "priors to perform well. Consider running " "'colmap view_graph_calibrator' before 'colmap " "global_mapper' or providing camera calibrations " "manually."; } } // namespace GlobalPipeline::GlobalPipeline( GlobalPipelineOptions options, std::shared_ptr database, std::shared_ptr reconstruction_manager) : options_(std::move(options)), reconstruction_manager_( std::move(THROW_CHECK_NOTNULL(reconstruction_manager))) { THROW_CHECK_NOTNULL(database); // Create database cache with relative poses for pose graph. DatabaseCache::Options database_cache_options; database_cache_options.min_num_matches = options_.min_num_matches; database_cache_options.ignore_watermarks = options_.ignore_watermarks; database_cache_options.image_names = {options_.image_names.begin(), options_.image_names.end()}; database_cache_ = DatabaseCache::Create(*database, database_cache_options); if (options_.decompose_relative_pose) { MaybeDecomposeRelativePoses(database_cache_.get()); } } void GlobalPipeline::Run() { const bool has_insufficient_prior_focal_lengths = HasInsufficientPriorFocalLengths(*database_cache_); if (has_insufficient_prior_focal_lengths) { WarnInsufficientPriorFocalLengths(); } auto reconstruction = std::make_shared(); // Prepare mapper options with top-level options. GlobalMapperOptions mapper_options = options_.mapper; mapper_options.image_path = options_.image_path; mapper_options.num_threads = options_.num_threads; mapper_options.random_seed = options_.random_seed; GlobalMapper global_mapper(database_cache_); global_mapper.BeginReconstruction(reconstruction); Timer run_timer; run_timer.Start(); global_mapper.Solve(mapper_options); LOG(INFO) << "Reconstruction done in " << run_timer.ElapsedSeconds() << " seconds"; // Align reconstruction to the original metric scales in rig extrinsics. AlignReconstructionToOrigRigScales(database_cache_->Rigs(), reconstruction.get()); // Output the reconstruction. Reconstruction& output_reconstruction = *reconstruction_manager_->Get(reconstruction_manager_->Add()); output_reconstruction = *reconstruction; if (!options_.image_path.empty()) { LOG(INFO) << "Extracting colors ..."; output_reconstruction.ExtractColorsForAllImages(options_.image_path, options_.num_threads); } if (has_insufficient_prior_focal_lengths) { // Intentionally logging this warning before and after the reconstruction // to make sure it is not missed. WarnInsufficientPriorFocalLengths(); } } } // namespace colmap colmap-4.1.1/src/colmap/controllers/global_pipeline.h000066400000000000000000000060001522646662000227030ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/scene/reconstruction_manager.h" #include "colmap/sfm/global_mapper.h" #include "colmap/util/base_controller.h" #include #include #include namespace colmap { struct GlobalPipelineOptions { // The minimum number of matches for inlier matches to be considered. int min_num_matches = 15; // Whether to ignore the inlier matches of watermark image pairs. bool ignore_watermarks = false; // Names of images to reconstruct. If empty, all images are used. std::vector image_names; // The image path at which to find the images to extract point colors. std::filesystem::path image_path; // Number of threads for parallel processing. int num_threads = -1; // Random seed for reproducibility. int random_seed = -1; // Whether to decompose relative poses from two-view geometries. bool decompose_relative_pose = true; // Options for the global mapper. GlobalMapperOptions mapper; }; class GlobalPipeline : public BaseController { public: GlobalPipeline(GlobalPipelineOptions options, std::shared_ptr database, std::shared_ptr reconstruction_manager); void Run() override; private: const GlobalPipelineOptions options_; std::shared_ptr database_cache_; std::shared_ptr reconstruction_manager_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/global_pipeline_test.cc000066400000000000000000000225101522646662000241040ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/global_pipeline.h" #include "colmap/estimators/view_graph_calibration.h" #include "colmap/math/random.h" #include "colmap/scene/database.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { // TODO(jsch): Create parameterized tests for the different mapper // implementations (incremental, hierarchical, global) TEST(GlobalPipeline, Nominal) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = false; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); GlobalPipelineOptions options; ViewGraphCalibrationOptions vgc_options; CalibrateViewGraph(vgc_options, database.get()); GlobalPipeline mapper(std::move(options), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); auto reconstruction = reconstruction_manager->Get(0); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); // After the pipeline runs, point3D.error must be in pixel units, i.e. // equal to what UpdatePoint3DErrors would recompute. ASSERT_GT(reconstruction->NumPoints3D(), 0u); const double mean_after_run = reconstruction->ComputeMeanReprojectionError(); reconstruction->UpdatePoint3DErrors(); EXPECT_DOUBLE_EQ(mean_after_run, reconstruction->ComputeMeanReprojectionError()); } TEST(GlobalPipeline, SfMWithRandomSeedStability) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 4; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); auto run_mapper = [&](int num_threads, int random_seed) { GlobalPipelineOptions options; options.num_threads = num_threads; options.random_seed = random_seed; ViewGraphCalibrationOptions vgc_options; vgc_options.random_seed = random_seed; vgc_options.solver_options.num_threads = num_threads; CalibrateViewGraph(vgc_options, database.get()); auto reconstruction_manager = std::make_shared(); GlobalPipeline mapper(std::move(options), database, reconstruction_manager); mapper.Run(); EXPECT_EQ(reconstruction_manager->Size(), 1); return reconstruction_manager; }; constexpr int kRandomSeed = 42; // Single-threaded execution. { auto reconstruction_manager0 = run_mapper(/*num_threads=*/1, /*random_seed=*/kRandomSeed); auto reconstruction_manager1 = run_mapper(/*num_threads=*/1, /*random_seed=*/kRandomSeed); EXPECT_THAT(*reconstruction_manager0->Get(0), ReconstructionEq(*reconstruction_manager1->Get(0))); } // Multi-threaded execution. { auto reconstruction_manager0 = run_mapper(/*num_threads=*/3, /*random_seed=*/kRandomSeed); auto reconstruction_manager1 = run_mapper(/*num_threads=*/3, /*random_seed=*/kRandomSeed); // Same seed should produce similar results, up to floating-point variations // in optimization. EXPECT_THAT(*reconstruction_manager0->Get(0), ReconstructionNear(*reconstruction_manager1->Get(0), /*max_rotation_error_deg=*/1e-9, /*max_proj_center_error=*/1e-9, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.01, /*align=*/false)); } } TEST(GlobalPipeline, WithExistingRelativePoses) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.two_view_geometry_has_relative_pose = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); GlobalPipelineOptions options; ViewGraphCalibrationOptions vgc_options; CalibrateViewGraph(vgc_options, database.get()); GlobalPipeline mapper(std::move(options), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } // To test relative pose re-estimation from view graph calibration. TEST(GlobalPipeline, WithNoisyExistingRelativePoses) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.two_view_geometry_has_relative_pose = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); // Replace relative poses with completely random values. for (auto& [pair_id, two_view_geometry] : database->ReadTwoViewGeometries()) { if (!two_view_geometry.cam2_from_cam1.has_value()) { continue; } two_view_geometry.cam2_from_cam1->rotation() = Eigen::Quaterniond::UnitRandom(); two_view_geometry.cam2_from_cam1->translation() = Eigen::Vector3d::Random().normalized(); const auto [image_id1, image_id2] = PairIdToImagePair(pair_id); database->UpdateTwoViewGeometry(image_id1, image_id2, two_view_geometry); } auto reconstruction_manager = std::make_shared(); GlobalPipelineOptions options; ViewGraphCalibrationOptions vgc_options; CalibrateViewGraph(vgc_options, database.get()); GlobalPipeline mapper(std::move(options), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); // Expect slightly worse accuracy due to noisy input poses. EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/hierarchical_pipeline.cc000066400000000000000000000263601522646662000242320ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/hierarchical_pipeline.h" #include "colmap/scene/database.h" #include "colmap/scene/scene_clustering.h" #include "colmap/sfm/observation_manager.h" #include "colmap/util/misc.h" #include "colmap/util/threading.h" #include "colmap/util/timer.h" namespace colmap { namespace { void MergeClusters(const SceneClustering::Cluster& cluster, std::unordered_map>* reconstruction_managers) { // Extract all reconstructions from all child clusters. std::vector> reconstructions; for (const auto& child_cluster : cluster.child_clusters) { if (!child_cluster.child_clusters.empty()) { MergeClusters(child_cluster, reconstruction_managers); } auto& reconstruction_manager = reconstruction_managers->at(&child_cluster); for (size_t i = 0; i < reconstruction_manager->Size(); ++i) { reconstructions.push_back(reconstruction_manager->Get(i)); } } // Try to merge all child cluster reconstruction. while (reconstructions.size() > 1) { bool merge_success = false; for (size_t i = 0; i < reconstructions.size(); ++i) { const int num_reg_images_i = reconstructions[i]->NumRegImages(); for (size_t j = 0; j < i; ++j) { const double kMaxReprojError = 8.0; const int num_reg_images_j = reconstructions[j]->NumRegImages(); if (MergeAndFilterReconstructions( kMaxReprojError, *reconstructions[j], *reconstructions[i])) { LOG(INFO) << StringPrintf( "=> Merged clusters with %d and %d images into %d images", num_reg_images_i, num_reg_images_j, reconstructions[i]->NumRegImages()); reconstructions.erase(reconstructions.begin() + j); merge_success = true; break; } } if (merge_success) { break; } } if (!merge_success) { break; } } // Insert a new reconstruction manager for merged cluster. auto& reconstruction_manager = (*reconstruction_managers)[&cluster]; reconstruction_manager = std::make_shared(); for (const auto& reconstruction : reconstructions) { reconstruction_manager->Get(reconstruction_manager->Add()) = reconstruction; } // Delete all merged child cluster reconstruction managers. for (const auto& child_cluster : cluster.child_clusters) { reconstruction_managers->erase(&child_cluster); } } } // namespace bool HierarchicalPipeline::Options::Check() const { CHECK_OPTION_GT(init_num_trials, -1); CHECK_OPTION_GE(num_threads, -1); CHECK_OPTION_GE(num_workers, -1); clustering_options.Check(); THROW_CHECK_EQ(clustering_options.branching, 2); incremental_options.Check(); return true; } HierarchicalPipeline::HierarchicalPipeline( const Options& options, std::shared_ptr database, std::shared_ptr reconstruction_manager) : options_(options), reconstruction_manager_( std::move(THROW_CHECK_NOTNULL(reconstruction_manager))) { THROW_CHECK(options_.Check()); THROW_CHECK_NOTNULL(database); LOG(INFO) << "Loading database"; Timer timer; timer.Start(); DatabaseCache::Options database_cache_options; database_cache_options.min_num_matches = static_cast(options_.incremental_options.min_num_matches); database_cache_options.ignore_watermarks = options_.incremental_options.ignore_watermarks; database_cache_ = DatabaseCache::Create(*database, database_cache_options); timer.PrintMinutes(); if (options_.incremental_options.ba_refine_sensor_from_rig) { LOG(WARNING) << "The hierarchical reconstruction pipeline currently does not work " "robustly when refining the rig extrinsics, because overlapping " "frames in different child clusters are optimized independently and " "can thus diverge significantly. The merging of clusters oftentimes " "fails in these cases."; } } void HierarchicalPipeline::Run() { LOG_HEADING1("Partitioning scene"); Timer run_timer; run_timer.Start(); ////////////////////////////////////////////////////////////////////////////// // Cluster scene graph ////////////////////////////////////////////////////////////////////////////// std::unordered_map image_id_to_name; image_id_to_name.reserve(database_cache_->NumImages()); for (const auto& [image_id, image] : database_cache_->Images()) { image_id_to_name.emplace(image_id, image.Name()); } SceneClustering scene_clustering = SceneClustering::Create(options_.clustering_options, *database_cache_); auto leaf_clusters = scene_clustering.GetLeafClusters(); size_t total_num_images = 0; for (size_t i = 0; i < leaf_clusters.size(); ++i) { total_num_images += leaf_clusters[i]->image_ids.size(); LOG(INFO) << StringPrintf(" Cluster %d with %d images", i + 1, leaf_clusters[i]->image_ids.size()); } LOG(INFO) << StringPrintf("Clusters have %d images", total_num_images); ////////////////////////////////////////////////////////////////////////////// // Reconstruct clusters ////////////////////////////////////////////////////////////////////////////// LOG_HEADING1("Reconstructing clusters"); // Determine the number of workers and threads per worker. The total thread // budget is divided across workers to avoid oversubscription. if (options_.incremental_options.num_threads > 0) { LOG(WARNING) << "Mapper.num_threads is ignored in hierarchical mapping. Use " "num_threads to control the total thread budget instead."; } const int num_total_threads = GetEffectiveNumThreads(options_.num_threads); const int kDefaultNumWorkers = 8; const int num_eff_workers = std::max( 1, std::min(static_cast(leaf_clusters.size()), std::min(options_.num_workers < 1 ? kDefaultNumWorkers : options_.num_workers, num_total_threads))); const int num_threads_per_worker = std::max(1, num_total_threads / num_eff_workers); // Function to reconstruct one cluster using incremental mapping. auto ReconstructCluster = [this, &image_id_to_name, num_threads_per_worker]( const SceneClustering::Cluster& cluster, std::shared_ptr reconstruction_manager) { if (cluster.image_ids.empty()) { return; } auto incremental_options = std::make_shared( options_.incremental_options); incremental_options->image_path = options_.image_path; incremental_options->max_model_overlap = 3; incremental_options->init_num_trials = options_.init_num_trials; incremental_options->num_threads = num_threads_per_worker; std::unordered_set cluster_image_names; cluster_image_names.reserve(cluster.image_ids.size()); for (const image_t image_id : cluster.image_ids) { cluster_image_names.insert(image_id_to_name.at(image_id)); } // Create a filtered database cache for this cluster. DatabaseCache::Options cluster_cache_options; cluster_cache_options.min_num_matches = static_cast(options_.incremental_options.min_num_matches); cluster_cache_options.image_names = cluster_image_names; auto cluster_database_cache = DatabaseCache::CreateFromCache( *database_cache_, cluster_cache_options); IncrementalPipeline mapper(std::move(incremental_options), std::move(cluster_database_cache), std::move(reconstruction_manager)); mapper.Run(); }; // Start reconstructing the bigger clusters first for better resource usage. // NOLINTNEXTLINE(bugprone-nondeterministic-pointer-iteration-order) std::sort(leaf_clusters.begin(), leaf_clusters.end(), [](const SceneClustering::Cluster* cluster1, const SceneClustering::Cluster* cluster2) { return cluster1->image_ids.size() > cluster2->image_ids.size(); }); // Start the reconstruction workers. Use a separate reconstruction manager per // thread to avoid race conditions. std::unordered_map> reconstruction_managers; reconstruction_managers.reserve(leaf_clusters.size()); ThreadPool thread_pool(num_eff_workers); for (const auto& cluster : leaf_clusters) { reconstruction_managers[cluster] = std::make_shared(); thread_pool.AddTask( ReconstructCluster, *cluster, reconstruction_managers[cluster]); } thread_pool.Wait(); ////////////////////////////////////////////////////////////////////////////// // Merge clusters ////////////////////////////////////////////////////////////////////////////// if (leaf_clusters.size() > 1) { LOG_HEADING1("Merging clusters"); MergeClusters(*scene_clustering.GetRootCluster(), &reconstruction_managers); } THROW_CHECK_EQ(reconstruction_managers.size(), 1); THROW_CHECK_GT( reconstruction_managers.begin()->second->Get(0)->NumRegImages(), 0); *reconstruction_manager_ = *reconstruction_managers.begin()->second; for (size_t i = 0; i < reconstruction_manager_->Size(); ++i) { auto reconstruction = reconstruction_manager_->Get(i); reconstruction->UpdatePoint3DErrors(); } run_timer.PrintMinutes(); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/hierarchical_pipeline.h000066400000000000000000000066431522646662000240760ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/incremental_pipeline.h" #include "colmap/scene/reconstruction_manager.h" #include "colmap/scene/scene_clustering.h" #include "colmap/util/base_controller.h" #include #include namespace colmap { // Hierarchical mapping first hierarchically partitions the scene into multiple // overlapping clusters, then reconstructs them separately using incremental // mapping, and finally merges them all into a globally consistent // reconstruction. This is especially useful for larger-scale scenes, since // incremental mapping becomes slow with an increasing number of images. class HierarchicalPipeline : public BaseController { public: struct Options { // The image path at which to find the images to extract point colors. // If not specified, all point colors will be black. std::filesystem::path image_path; // The maximum number of trials to initialize a cluster. int init_num_trials = 10; // The total number of threads for the hierarchical pipeline. This budget // is divided across workers to avoid thread oversubscription. int num_threads = -1; // The number of workers used to reconstruct clusters in parallel. int num_workers = -1; // Options for clustering the scene graph. SceneClustering::Options clustering_options; // Options used to reconstruction each cluster individually. IncrementalPipelineOptions incremental_options; bool Check() const; }; HierarchicalPipeline( const Options& options, std::shared_ptr database, std::shared_ptr reconstruction_manager); void Run() override; private: const Options options_; std::shared_ptr database_cache_; std::shared_ptr reconstruction_manager_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/hierarchical_pipeline_test.cc000066400000000000000000000251401522646662000252640ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/hierarchical_pipeline.h" #include "colmap/estimators/alignment.h" #include "colmap/scene/database.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { void ExpectEqualReconstructions(const Reconstruction& gt, const Reconstruction& computed, const double max_rotation_error_deg, const double max_proj_center_error, const double num_obs_tolerance) { EXPECT_EQ(computed.NumCameras(), gt.NumCameras()); EXPECT_EQ(computed.NumImages(), gt.NumImages()); EXPECT_EQ(computed.NumRegImages(), gt.NumRegImages()); EXPECT_GE(computed.ComputeNumObservations(), (1 - num_obs_tolerance) * gt.ComputeNumObservations()); Sim3d gt_from_computed; ASSERT_TRUE(AlignReconstructionsViaProjCenters(computed, gt, /*max_proj_center_error=*/0.1, >_from_computed)); const std::vector errors = ComputeImageAlignmentError(computed, gt, gt_from_computed); EXPECT_EQ(errors.size(), gt.NumImages()); for (const auto& error : errors) { EXPECT_LT(error.rotation_error_deg, max_rotation_error_deg); EXPECT_LT(error.proj_center_error, max_proj_center_error); } } TEST(HierarchicalPipeline, WithoutNoise) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 20; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); HierarchicalPipeline::Options mapper_options; mapper_options.clustering_options.leaf_max_num_images = 5; mapper_options.clustering_options.image_overlap = 3; HierarchicalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); auto reconstruction = reconstruction_manager->Get(0); ExpectEqualReconstructions(gt_reconstruction, *reconstruction, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4, /*num_obs_tolerance=*/0); // After the pipeline runs, point3D.error must be in pixel units, i.e. // equal to what UpdatePoint3DErrors would recompute. ASSERT_GT(reconstruction->NumPoints3D(), 0u); const double mean_after_run = reconstruction->ComputeMeanReprojectionError(); reconstruction->UpdatePoint3DErrors(); EXPECT_DOUBLE_EQ(mean_after_run, reconstruction->ComputeMeanReprojectionError()); } TEST(HierarchicalPipeline, WithoutNoiseAndNonTrivialFrames) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0.05; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); HierarchicalPipeline::Options mapper_options; mapper_options.clustering_options.leaf_max_num_images = 10; mapper_options.clustering_options.image_overlap = 3; // Note that the hierarchical mapper does not work well when the // sensor_from_rig poses are inconsistently refined in different clusters, // because then the merging does not work well. mapper_options.incremental_options.ba_refine_sensor_from_rig = false; HierarchicalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); ExpectEqualReconstructions(gt_reconstruction, *reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-3, /*num_obs_tolerance=*/0); } TEST(HierarchicalPipeline, WithoutNoiseAndPanoramicNonTrivialFrames) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); HierarchicalPipeline::Options mapper_options; mapper_options.clustering_options.leaf_max_num_images = 10; mapper_options.clustering_options.image_overlap = 3; // Note that the hierarchical mapper does not work well when the // sensor_from_rig poses are inconsistently refined in different clusters, // because then the merging does not work well. mapper_options.incremental_options.ba_refine_sensor_from_rig = false; HierarchicalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); ExpectEqualReconstructions(gt_reconstruction, *reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-3, /*num_obs_tolerance=*/0); } TEST(HierarchicalPipeline, MultiReconstruction) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction1; Reconstruction gt_reconstruction2; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset( synthetic_dataset_options, >_reconstruction1, database.get()); synthetic_dataset_options.num_frames_per_rig = 4; SynthesizeDataset( synthetic_dataset_options, >_reconstruction2, database.get()); auto reconstruction_manager = std::make_shared(); HierarchicalPipeline::Options mapper_options; mapper_options.clustering_options.leaf_max_num_images = 5; mapper_options.clustering_options.image_overlap = 3; HierarchicalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 2); Reconstruction* computed_reconstruction1 = nullptr; Reconstruction* computed_reconstruction2 = nullptr; if (reconstruction_manager->Get(0)->NumRegImages() == 5) { computed_reconstruction1 = reconstruction_manager->Get(0).get(); computed_reconstruction2 = reconstruction_manager->Get(1).get(); } else { computed_reconstruction1 = reconstruction_manager->Get(1).get(); computed_reconstruction2 = reconstruction_manager->Get(0).get(); } ExpectEqualReconstructions(gt_reconstruction1, *computed_reconstruction1, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4, /*num_obs_tolerance=*/0); ExpectEqualReconstructions(gt_reconstruction2, *computed_reconstruction2, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4, /*num_obs_tolerance=*/0); // After the pipeline runs, point3D.error must be in pixel units for every // reconstruction in the manager, i.e. equal to what UpdatePoint3DErrors // would recompute. for (Reconstruction* reconstruction : {computed_reconstruction1, computed_reconstruction2}) { ASSERT_GT(reconstruction->NumPoints3D(), 0u); const double mean_after_run = reconstruction->ComputeMeanReprojectionError(); reconstruction->UpdatePoint3DErrors(); EXPECT_DOUBLE_EQ(mean_after_run, reconstruction->ComputeMeanReprojectionError()); } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/image_reader.cc000066400000000000000000000351721522646662000223340ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/image_reader.h" #include "colmap/sensor/models.h" #include "colmap/util/file.h" #include "colmap/util/misc.h" namespace colmap { bool ImageReaderOptions::Check() const { CHECK_OPTION_GT(default_focal_length_factor, 0.0); CHECK_OPTION(ExistsCameraModelWithName(camera_model)); const CameraModelId model_id = CameraModelNameToId(camera_model); if (!camera_params.empty()) { CHECK_OPTION( CameraModelVerifyParams(model_id, CSVToVector(camera_params))); } return true; } ImageReader::ImageReader(const ImageReaderOptions& options, Database* database) : options_(options), database_(database), image_index_(0) { THROW_CHECK(options_.Check()); // Get a list of all files in the image path, sorted by image name. if (options_.image_names.empty()) { auto image_paths = GetRecursiveFileList(options_.image_path); std::sort(image_paths.begin(), image_paths.end()); options_.image_names.reserve(image_paths.size()); for (const auto& image_path : image_paths) { options_.image_names.push_back( GetNormalizedRelativePath(image_path, options_.image_path)); } } else { if (!std::is_sorted(options_.image_names.begin(), options_.image_names.end())) { std::sort(options_.image_names.begin(), options_.image_names.end()); } } if (static_cast(options_.existing_camera_id) != kInvalidCameraId) { THROW_CHECK(database->ExistsCamera(options_.existing_camera_id)); prev_camera_ = database->ReadCamera(options_.existing_camera_id); if (std::optional rig = database->ReadRigWithSensor(prev_camera_.SensorId()); rig.has_value()) { prev_rig_ = std::move(*rig); } else { // For backwards compatibility with old databases without rigs. prev_rig_.AddRefSensor(prev_camera_.SensorId()); prev_rig_.SetRigId(database_->WriteRig(prev_rig_)); } } else { // Set the manually specified camera parameters. prev_camera_.camera_id = kInvalidCameraId; THROW_CHECK(ExistsCameraModelWithName(options_.camera_model)); prev_camera_.model_id = CameraModelNameToId(options_.camera_model); prev_camera_.params.resize(CameraModelNumParams(prev_camera_.model_id), 0.); if (!options_.camera_params.empty()) { THROW_CHECK(prev_camera_.SetParamsFromString(options_.camera_params)); prev_camera_.has_prior_focal_length = true; } } } ImageReader::Status ImageReader::Next(Rig* rig, Camera* camera, Image* image, PosePrior* pose_prior, Bitmap* bitmap, Bitmap* mask) { THROW_CHECK_NOTNULL(camera); THROW_CHECK_NOTNULL(image); THROW_CHECK_NOTNULL(bitmap); image_index_ += 1; THROW_CHECK_LE(image_index_, options_.image_names.size()); const std::string image_name = options_.image_names.at(image_index_ - 1); const std::filesystem::path image_path = options_.image_path / image_name; DatabaseTransaction database_transaction(database_); ////////////////////////////////////////////////////////////////////////////// // Set the image name. ////////////////////////////////////////////////////////////////////////////// image->SetName(image_name); const std::string image_folder = GetParentDir(image->Name()).string(); ////////////////////////////////////////////////////////////////////////////// // Check if image already read. ////////////////////////////////////////////////////////////////////////////// const bool exists_image = database_->ExistsImageWithName(image->Name()); if (exists_image) { *image = database_->ReadImageWithName(image->Name()).value(); const bool exists_keypoints = database_->ExistsKeypoints(image->ImageId()); const bool exists_descriptors = database_->ExistsDescriptors(image->ImageId()); if (exists_keypoints && exists_descriptors) { return Status::IMAGE_EXISTS; } } ////////////////////////////////////////////////////////////////////////////// // Read image. ////////////////////////////////////////////////////////////////////////////// if (!bitmap->Read(image_path, /*as_rgb=*/options_.as_rgb)) { return Status::BITMAP_ERROR; } ////////////////////////////////////////////////////////////////////////////// // Read mask. ////////////////////////////////////////////////////////////////////////////// if (mask && !options_.mask_path.empty()) { auto mask_path = options_.mask_path / (image->Name() + ".png"); if (!ExistsFile(mask_path)) { bool exists_mask = false; // Try replacing extension with .png const std::string& base_name = image->Name(); const size_t last_dot = base_name.find_last_of('.'); if (last_dot != std::string::npos) { auto alt_mask_path = options_.mask_path / (base_name.substr(0, last_dot) + ".png"); if (ExistsFile(alt_mask_path)) { mask_path = std::move(alt_mask_path); exists_mask = true; } } if (!exists_mask) { LOG(ERROR) << "Mask at " << mask_path << " does not exist."; return Status::MASK_ERROR; } } if (!mask->Read(mask_path, false)) { LOG(ERROR) << "Failed to read invalid mask file at: " << mask_path; return Status::MASK_ERROR; } } ////////////////////////////////////////////////////////////////////////////// // Check for well-formed data. ////////////////////////////////////////////////////////////////////////////// if (exists_image) { Camera current_camera = database_->ReadCamera(image->CameraId()); if (options_.single_camera && prev_camera_.camera_id != kInvalidCameraId && (current_camera.width != prev_camera_.width || current_camera.height != prev_camera_.height)) { return Status::CAMERA_SINGLE_DIM_ERROR; } if (static_cast(bitmap->Width()) != current_camera.width || static_cast(bitmap->Height()) != current_camera.height) { return Status::CAMERA_EXIST_DIM_ERROR; } prev_camera_ = std::move(current_camera); if (std::optional rig = database_->ReadRigWithSensor(prev_camera_.SensorId()); rig.has_value()) { prev_rig_ = std::move(rig.value()); } else { // For backwards compatibility with old databases, we create a rig. prev_rig_ = Rig(); prev_rig_.AddRefSensor(prev_camera_.SensorId()); prev_rig_.SetRigId(database_->WriteRig(prev_rig_)); } } else { ////////////////////////////////////////////////////////////////////////////// // Check image dimensions. ////////////////////////////////////////////////////////////////////////////// if (prev_camera_.camera_id != kInvalidCameraId && ((options_.single_camera && !options_.single_camera_per_folder) || (options_.single_camera_per_folder && image_folder == prev_image_folder_)) && (prev_camera_.width != static_cast(bitmap->Width()) || prev_camera_.height != static_cast(bitmap->Height()))) { return Status::CAMERA_SINGLE_DIM_ERROR; } ////////////////////////////////////////////////////////////////////////////// // Read camera model and check for consistency if it exists ////////////////////////////////////////////////////////////////////////////// const std::optional camera_model = bitmap->ExifCameraModel(); if (camera_model.has_value() && camera_model_to_id_.count(*camera_model) > 0) { Camera camera = database_->ReadCamera(camera_model_to_id_.at(*camera_model)); if (camera.width != static_cast(bitmap->Width()) || camera.height != static_cast(bitmap->Height())) { return Status::CAMERA_EXIST_DIM_ERROR; } prev_camera_ = std::move(camera); if (std::optional rig = database_->ReadRigWithSensor(prev_camera_.SensorId()); rig.has_value()) { prev_rig_ = std::move(rig.value()); } else { // For backwards compatibility with old databases, we create a rig. prev_rig_ = Rig(); prev_rig_.AddRefSensor(prev_camera_.SensorId()); prev_rig_.SetRigId(database_->WriteRig(prev_rig_)); } } ////////////////////////////////////////////////////////////////////////////// // Extract camera model and focal length ////////////////////////////////////////////////////////////////////////////// if (prev_camera_.camera_id == kInvalidCameraId || options_.single_camera_per_image || (!options_.single_camera && !options_.single_camera_per_folder && static_cast(options_.existing_camera_id) == kInvalidCameraId && (!camera_model.has_value() || camera_model_to_id_.count(camera_model.value()) == 0)) || (options_.single_camera_per_folder && image_folders_.count(image_folder) == 0)) { if (options_.camera_params.empty()) { // Extract focal length. const std::optional maybe_focal_length = bitmap->ExifFocalLength(); const double focal_length = maybe_focal_length.value_or( options_.default_focal_length_factor * std::max(bitmap->Width(), bitmap->Height())); prev_camera_ = Camera::CreateFromModelId(prev_camera_.camera_id, prev_camera_.model_id, focal_length, bitmap->Width(), bitmap->Height()); prev_camera_.has_prior_focal_length = maybe_focal_length.has_value(); } prev_camera_.width = static_cast(bitmap->Width()); prev_camera_.height = static_cast(bitmap->Height()); if (!prev_camera_.VerifyParams()) { return Status::CAMERA_PARAM_ERROR; } prev_camera_.camera_id = database_->WriteCamera(prev_camera_); // By default we create a separate rig per camera. Grouping of different // cameras into the same rig is expected to be done with the // "rig_configurator" after feature extraction. if (!database_->ReadRigWithSensor(prev_camera_.SensorId()).has_value()) { prev_rig_ = Rig(); prev_rig_.AddRefSensor(prev_camera_.SensorId()); prev_rig_.SetRigId(database_->WriteRig(prev_rig_)); } if (camera_model.has_value()) { camera_model_to_id_[*camera_model] = prev_camera_.camera_id; } } image->SetCameraId(prev_camera_.camera_id); ////////////////////////////////////////////////////////////////////////////// // Extract GPS data. ////////////////////////////////////////////////////////////////////////////// const std::optional latitude = bitmap->ExifLatitude(); const std::optional longitude = bitmap->ExifLongitude(); const std::optional altitude = bitmap->ExifAltitude(); if (latitude.has_value() && longitude.has_value() && altitude.has_value()) { pose_prior->position = Eigen::Vector3d(*latitude, *longitude, *altitude); pose_prior->coordinate_system = PosePrior::CoordinateSystem::WGS84; } ////////////////////////////////////////////////////////////////////////////// // Extract Gravity from Orientation. ////////////////////////////////////////////////////////////////////////////// const std::optional orientation = bitmap->ExifOrientation(); if (orientation.has_value()) { const auto gravity = GravityFromExifOrientation(orientation.value()); if (gravity.has_value()) { pose_prior->gravity = gravity.value(); } } } *camera = prev_camera_; *rig = prev_rig_; image_folders_.insert(image_folder); prev_image_folder_ = image_folder; return Status::SUCCESS; } size_t ImageReader::NextIndex() const { return image_index_; } size_t ImageReader::NumImages() const { return options_.image_names.size(); } std::string ImageReader::StatusToString(const ImageReader::Status status) { switch (status) { case ImageReader::Status::SUCCESS: return "SUCCESS"; case ImageReader::Status::FAILURE: return "FAILURE: Failed to process the image."; case ImageReader::Status::IMAGE_EXISTS: return "IMAGE_EXISTS: Features for image were already extracted."; case ImageReader::Status::BITMAP_ERROR: return "BITMAP_ERROR: Failed to read the image file format."; case ImageReader::Status::MASK_ERROR: return "MASK_ERROR: Failed to read the mask file."; case ImageReader::Status::CAMERA_SINGLE_DIM_ERROR: return "CAMERA_SINGLE_DIM_ERROR: Single camera specified, but images " "have different dimensions."; case ImageReader::Status::CAMERA_EXIST_DIM_ERROR: return "CAMERA_EXIST_DIM_ERROR: Image previously processed, but current " "image has different dimensions."; case ImageReader::Status::CAMERA_PARAM_ERROR: return "CAMERA_PARAM_ERROR: Camera has invalid parameters."; default: return "Unknown"; } } } // namespace colmap colmap-4.1.1/src/colmap/controllers/image_reader.h000066400000000000000000000120741522646662000221720ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/scene/database.h" #include "colmap/sensor/bitmap.h" #include #include #include #include namespace colmap { struct ImageReaderOptions { // Root path to folder which contains the images. std::filesystem::path image_path; // Optional root path to folder which contains image masks. For a given image, // the corresponding mask must have the same sub-path below this root as the // image has below image_path. The filename must be equal, aside from the // added extension .png. For example, for an image image_path/abc/012.jpg, the // mask would be mask_path/abc/012.jpg.png. No features will be extracted in // regions where the mask image is black (pixel intensity value 0 in // grayscale). std::filesystem::path mask_path; // Optional path to an image file specifying a mask for all images. No // features will be extracted in regions where the mask is black (pixel // intensity value 0 in grayscale). std::filesystem::path camera_mask_path; // Optional list of images to read. The list must contain the relative path // of the images with respect to the image_path. std::vector image_names; // Name of the camera model. std::string camera_model = "SIMPLE_RADIAL"; // Manual specification of camera parameters. If empty, camera parameters // will be extracted from EXIF, i.e. principal point and focal length. std::string camera_params; // Whether to use the same camera for all images. bool single_camera = false; // Whether to use the same camera for all images in the same sub-folder. bool single_camera_per_folder = false; // Whether to use a different camera for each image. bool single_camera_per_image = false; // Whether to explicitly use an existing camera for all images. Note that in // this case the specified camera model and parameters are ignored. int existing_camera_id = kInvalidCameraId; // If camera parameters are not specified manually and the image does not // have focal length EXIF information, the focal length is set to the // value `default_focal_length_factor * max(width, height)`. double default_focal_length_factor = 1.2; // Whether to read images as grayscale or RGB. bool as_rgb = false; bool Check() const; }; // Recursively iterate over the images in a directory. Skips an image if it // already exists in the database. Extracts the camera intrinsics from EXIF and // writes the camera information to the database. class ImageReader { public: enum class Status { FAILURE, SUCCESS, IMAGE_EXISTS, BITMAP_ERROR, MASK_ERROR, CAMERA_SINGLE_DIM_ERROR, CAMERA_EXIST_DIM_ERROR, CAMERA_PARAM_ERROR }; ImageReader(const ImageReaderOptions& options, Database* database); Status Next(Rig* rig, Camera* camera, Image* image, PosePrior* pose_prior, Bitmap* bitmap, Bitmap* mask); size_t NextIndex() const; size_t NumImages() const; static std::string StatusToString(Status status); private: // Image reader options. ImageReaderOptions options_; Database* database_; // Index of previously processed image. size_t image_index_; // Previously processed rig/camera. Rig prev_rig_; Camera prev_camera_; std::unordered_map camera_model_to_id_; // Names of image sub-folders. std::string prev_image_folder_; std::unordered_set image_folders_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/image_reader_test.cc000066400000000000000000000463501522646662000233730ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/image_reader.h" #include "colmap/scene/database_sqlite.h" #include "colmap/sensor/models.h" #include "colmap/util/file.h" #include "colmap/util/testing.h" #include #include #include namespace colmap { namespace { Bitmap CreateTestBitmap(bool as_rgb) { Bitmap bitmap(1, 3, as_rgb); bitmap.SetPixel(0, 0, BitmapColor(1)); bitmap.SetPixel(1, 0, BitmapColor(2)); bitmap.SetPixel(2, 0, BitmapColor(3)); return bitmap; } class ParameterizedImageReaderTests : public ::testing::TestWithParam> {}; TEST_P(ParameterizedImageReaderTests, Nominal) { const auto [kNumImages, kWithMasks, kWithExistingImages, kAsRGB, kExtension] = GetParam(); auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.as_rgb = kAsRGB; CreateDirIfNotExists(options.image_path); if (kWithMasks) { options.mask_path = test_dir / "masks"; CreateDirIfNotExists(options.mask_path); } const Bitmap test_bitmap = CreateTestBitmap(kAsRGB); for (int i = 0; i < kNumImages; ++i) { const std::string stem = std::to_string(i); const std::string image_name = stem + kExtension; test_bitmap.Write(options.image_path / image_name); if (kWithMasks) { if (i == 0) { // append .png to image_name test_bitmap.Write(options.mask_path / (image_name + ".png")); } else { // replace mask extension by .png test_bitmap.Write(options.mask_path / (stem + ".png")); } } if (kWithExistingImages) { Image image; image.SetName(image_name); image.SetCameraId(database->WriteCamera( Camera::CreateFromModelName(i + 1, options.camera_model, /*focal_length=*/1, test_bitmap.Width(), test_bitmap.Height()))); image.SetImageId(database->WriteImage(image)); database->WriteKeypoints(image.ImageId(), FeatureKeypoints()); database->WriteDescriptors(image.ImageId(), FeatureDescriptors()); Rig rig; rig.AddRefSensor(sensor_t(SensorType::CAMERA, image.CameraId())); database->WriteRig(rig); } } ImageReader image_reader(options, database.get()); EXPECT_EQ(image_reader.NumImages(), kNumImages); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; for (int i = 0; i < kNumImages; ++i) { EXPECT_EQ(image_reader.NextIndex(), i); const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); if (kWithExistingImages) { EXPECT_EQ(status, ImageReader::Status::IMAGE_EXISTS); continue; } ASSERT_EQ(status, ImageReader::Status::SUCCESS); EXPECT_EQ(rig.RigId(), i + 1); EXPECT_EQ(camera.camera_id, i + 1); EXPECT_EQ(camera.ModelName(), options.camera_model); EXPECT_EQ(camera.width, test_bitmap.Width()); EXPECT_EQ(camera.height, test_bitmap.Height()); EXPECT_EQ(image.Name(), std::to_string(i) + kExtension); EXPECT_EQ(bitmap.IsRGB(), kAsRGB); EXPECT_EQ(bitmap.RowMajorData(), test_bitmap.RowMajorData()); if (kWithExistingImages) { EXPECT_EQ(database->NumRigs(), kNumImages); EXPECT_EQ(database->NumCameras(), kNumImages); } else { EXPECT_EQ(database->NumRigs(), i + 1); EXPECT_EQ(database->NumCameras(), i + 1); } } EXPECT_THROW( image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask), std::invalid_argument); EXPECT_EQ(database->NumRigs(), kNumImages); EXPECT_EQ(database->NumCameras(), kNumImages); } INSTANTIATE_TEST_SUITE_P( ImageReaderTests, ParameterizedImageReaderTests, ::testing::Values(std::make_tuple(/*num_images=*/0, /*with_masks=*/false, /*with_existing_images=*/true, /*as_rgb=*/true, /*extension=*/".png"), std::make_tuple(/*num_images=*/5, /*with_masks=*/false, /*with_existing_images=*/false, /*as_rgb=*/true, /*extension=*/".png"), std::make_tuple(/*num_images=*/5, /*with_masks=*/true, /*with_existing_images=*/false, /*as_rgb=*/true, /*extension=*/".png"), std::make_tuple(/*num_images=*/5, /*with_masks=*/true, /*with_existing_images=*/false, /*as_rgb=*/true, /*extension=*/".bmp"), std::make_tuple(/*num_images=*/5, /*with_masks=*/true, /*with_existing_images=*/false, /*as_rgb=*/false, /*extension=*/".png"), std::make_tuple(/*num_images=*/5, /*with_masks=*/false, /*with_existing_images=*/true, /*as_rgb=*/true, /*extension=*/".png"))); TEST(ImageReaderTest, SingleCamera) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.single_camera = true; CreateDirIfNotExists(options.image_path); // Create 3 test images with same dimensions Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "0.png"); test_bitmap.Write(options.image_path / "1.png"); test_bitmap.Write(options.image_path / "2.png"); ImageReader image_reader(options, database.get()); EXPECT_EQ(image_reader.NumImages(), 3); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; for (int i = 0; i < 3; ++i) { const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); } EXPECT_EQ(database->NumRigs(), 1); EXPECT_EQ(database->NumCameras(), 1); } TEST(ImageReaderTest, SingleCameraDimensionError) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.single_camera = true; CreateDirIfNotExists(options.image_path); // Create images with different dimensions Bitmap bitmap1(10, 20, true); Bitmap bitmap2(30, 40, true); bitmap1.Write(options.image_path / "0.png"); bitmap2.Write(options.image_path / "1.png"); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; // First image succeeds auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); // Second image fails due to dimension mismatch status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); EXPECT_EQ(status, ImageReader::Status::CAMERA_SINGLE_DIM_ERROR); } TEST(ImageReaderTest, SingleCameraPerFolder) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.single_camera_per_folder = true; CreateDirIfNotExists(options.image_path); CreateDirIfNotExists(options.image_path / "folder1"); CreateDirIfNotExists(options.image_path / "folder2"); // Create 2 images in each folder Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "folder1" / "0.png"); test_bitmap.Write(options.image_path / "folder1" / "1.png"); test_bitmap.Write(options.image_path / "folder2" / "0.png"); test_bitmap.Write(options.image_path / "folder2" / "1.png"); ImageReader image_reader(options, database.get()); EXPECT_EQ(image_reader.NumImages(), 4); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; std::unordered_map folder_cameras; for (int i = 0; i < 4; ++i) { const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); const std::string folder = GetParentDir(image.Name()).string(); if (folder_cameras.count(folder) == 0) { folder_cameras[folder] = camera.camera_id; } else { EXPECT_EQ(camera.camera_id, folder_cameras[folder]); } } // Should have 2 cameras (one per folder) EXPECT_EQ(database->NumCameras(), 2); } TEST(ImageReaderTest, SingleCameraPerImage) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.single_camera_per_image = true; CreateDirIfNotExists(options.image_path); // Create 3 images with same dimensions Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "0.png"); test_bitmap.Write(options.image_path / "1.png"); test_bitmap.Write(options.image_path / "2.png"); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; for (int i = 0; i < 3; ++i) { const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); EXPECT_EQ(camera.camera_id, i + 1); // Each image gets its own camera } // Should have 3 cameras (one per image) EXPECT_EQ(database->NumCameras(), 3); } TEST(ImageReaderTest, ExistingCameraId) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); // Create an existing camera in the database Camera existing_camera; existing_camera.model_id = CameraModelNameToId("SIMPLE_RADIAL"); existing_camera.width = 10; existing_camera.height = 20; existing_camera.params = {1.0, 5.0, 10.0, 0.0}; existing_camera.camera_id = database->WriteCamera(existing_camera); Rig existing_rig; existing_rig.AddRefSensor(existing_camera.SensorId()); database->WriteRig(existing_rig); ImageReaderOptions options; options.image_path = test_dir / "images"; options.existing_camera_id = existing_camera.camera_id; CreateDirIfNotExists(options.image_path); Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "0.png"); test_bitmap.Write(options.image_path / "1.png"); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; for (int i = 0; i < 2; ++i) { const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); EXPECT_EQ(camera.camera_id, existing_camera.camera_id); EXPECT_EQ(camera.params, existing_camera.params); } // No new cameras created EXPECT_EQ(database->NumCameras(), 1); } TEST(ImageReaderTest, ManualCameraParams) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.camera_model = "PINHOLE"; options.camera_params = "500.0, 500.0, 320.0, 240.0"; CreateDirIfNotExists(options.image_path); Bitmap test_bitmap(640, 480, true); test_bitmap.Write(options.image_path / "test.png"); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); EXPECT_EQ(camera.model_id, PinholeCameraModel::model_id); EXPECT_EQ(camera.params[0], 500.0); EXPECT_EQ(camera.params[1], 500.0); EXPECT_EQ(camera.params[2], 320.0); EXPECT_EQ(camera.params[3], 240.0); EXPECT_TRUE(camera.has_prior_focal_length); } TEST(ImageReaderTest, ExplicitImageNames) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; CreateDirIfNotExists(options.image_path); // Create 5 images Bitmap test_bitmap(10, 20, true); for (int i = 0; i < 5; ++i) { test_bitmap.Write(options.image_path / (std::to_string(i) + ".png")); } // Only select a subset of images options.image_names = {"1.png", "3.png"}; ImageReader image_reader(options, database.get()); EXPECT_EQ(image_reader.NumImages(), 2); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); EXPECT_EQ(image.Name(), "1.png"); status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); ASSERT_EQ(status, ImageReader::Status::SUCCESS); EXPECT_EQ(image.Name(), "3.png"); } TEST(ImageReaderTest, BitmapError) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; CreateDirIfNotExists(options.image_path); // Create a file that is not a valid image std::ofstream file(options.image_path / "invalid.png"); file << "not an image"; file.close(); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); EXPECT_EQ(status, ImageReader::Status::BITMAP_ERROR); } TEST(ImageReaderTest, MaskErrorMissing) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.mask_path = test_dir / "masks"; CreateDirIfNotExists(options.image_path); CreateDirIfNotExists(options.mask_path); Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "test.png"); // Don't create mask file ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); EXPECT_EQ(status, ImageReader::Status::MASK_ERROR); } TEST(ImageReaderTest, MaskErrorInvalid) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; options.mask_path = test_dir / "masks"; CreateDirIfNotExists(options.image_path); CreateDirIfNotExists(options.mask_path); Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "test.png"); // Create invalid mask file std::ofstream file(options.mask_path / "test.png.png"); file << "not an image"; file.close(); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); EXPECT_EQ(status, ImageReader::Status::MASK_ERROR); } TEST(ImageReaderTest, ImageExistsWithKeypoints) { auto database = Database::Open(kInMemorySqliteDatabasePath); const auto test_dir = CreateTestDir(); ImageReaderOptions options; options.image_path = test_dir / "images"; CreateDirIfNotExists(options.image_path); Bitmap test_bitmap(10, 20, true); test_bitmap.Write(options.image_path / "test.png"); // Add existing image with keypoints and descriptors Camera existing_camera; existing_camera.model_id = CameraModelNameToId("SIMPLE_RADIAL"); existing_camera.width = 10; existing_camera.height = 20; existing_camera.params = {1.0, 5.0, 10.0, 0.0}; existing_camera.camera_id = database->WriteCamera(existing_camera); Rig existing_rig; existing_rig.AddRefSensor(existing_camera.SensorId()); database->WriteRig(existing_rig); Image existing_image; existing_image.SetName("test.png"); existing_image.SetCameraId(existing_camera.camera_id); existing_image.SetImageId(database->WriteImage(existing_image)); database->WriteKeypoints(existing_image.ImageId(), FeatureKeypoints()); database->WriteDescriptors(existing_image.ImageId(), FeatureDescriptors()); ImageReader image_reader(options, database.get()); Rig rig; Camera camera; Image image; PosePrior pose_prior; Bitmap bitmap; Bitmap mask; const auto status = image_reader.Next(&rig, &camera, &image, &pose_prior, &bitmap, &mask); EXPECT_EQ(status, ImageReader::Status::IMAGE_EXISTS); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/incremental_pipeline.cc000066400000000000000000000771671522646662000241300ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/incremental_pipeline.h" #include "colmap/estimators/alignment.h" #include "colmap/estimators/bundle_adjustment_caspar.h" #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/scene/database.h" #include "colmap/util/file.h" #include "colmap/util/timer.h" namespace colmap { namespace { void CustomizeIncrementalPipelineOptions(const DatabaseCache& database_cache, IncrementalPipelineOptions& options) { // If the total number of images is small then do not enforce the // minimum model size so that we can reconstruct small image // collections, i.e., if the model is at least half of the total number // of images, we always keep it. options.min_model_size = std::min(0.5 * database_cache.NumImages(), options.min_model_size); } DatabaseCache::Options CreateDatabaseCacheOptions( const IncrementalPipelineOptions& options, const ReconstructionManager& reconstruction_manager) { DatabaseCache::Options database_cache_options; database_cache_options.min_num_matches = static_cast(options.min_num_matches); database_cache_options.ignore_watermarks = options.ignore_watermarks; database_cache_options.image_names = {options.image_names.begin(), options.image_names.end()}; // Make sure images of the given reconstruction are also included when // manually specifying images for the reconstruction procedure. if (reconstruction_manager.Size() == 1 && !options.image_names.empty()) { const auto& reconstruction = reconstruction_manager.Get(0); for (const image_t image_id : reconstruction->RegImageIds()) { const auto& image = reconstruction->Image(image_id); database_cache_options.image_names.insert(image.Name()); } } database_cache_options.load_all_images = options.load_all_images; database_cache_options.convert_pose_priors_to_enu = options.use_prior_position; return database_cache_options; } void IterativeGlobalRefinement(const IncrementalPipelineOptions& options, const IncrementalMapper::Options& mapper_options, IncrementalMapper& mapper) { LOG(INFO) << "Retriangulation and Global bundle adjustment"; mapper.IterativeGlobalRefinement(options.ba_global_max_refinements, options.ba_global_max_refinement_change, mapper_options, options.GlobalBundleAdjustment(), options.Triangulation()); mapper.FilterFrames(mapper_options); } void ExtractColors(const std::filesystem::path& image_path, const image_t image_id, Reconstruction& reconstruction) { if (!reconstruction.ExtractColorsForImage(image_id, image_path)) { LOG(WARNING) << "Could not read image " << reconstruction.Image(image_id).Name() << " at path " << image_path << "."; } } void WriteSnapshot(const Reconstruction& reconstruction, const std::filesystem::path& snapshot_path) { LOG(INFO) << "Creating snapshot"; // Get the current timestamp in milliseconds. const size_t timestamp = std::chrono::duration_cast( std::chrono::high_resolution_clock::now().time_since_epoch()) .count(); // Write reconstruction to unique path with current timestamp. const auto path = snapshot_path / StringPrintf("%010zu", timestamp); CreateDirIfNotExists(path); VLOG(1) << "=> Writing to " << path; reconstruction.Write(path); } bool HasUnknownSensorFromRig(const Reconstruction& reconstruction) { std::unordered_set parameterized_rigs; for (const auto& [_, image] : reconstruction.Images()) { parameterized_rigs.insert(image.FramePtr()->RigPtr()); } for (const Rig* rig : parameterized_rigs) { for (const auto& [sensor_id, sensor_from_rig] : rig->NonRefSensors()) { if (sensor_id.type == SensorType::CAMERA && !sensor_from_rig.has_value()) { return true; } } } return false; } } // namespace IncrementalMapper::Options IncrementalPipelineOptions::Mapper() const { IncrementalMapper::Options options = mapper; options.abs_pose_refine_focal_length = ba_refine_focal_length; options.abs_pose_refine_extra_params = ba_refine_extra_params; options.min_focal_length_ratio = min_focal_length_ratio; options.max_focal_length_ratio = max_focal_length_ratio; options.max_extra_param = max_extra_param; options.num_threads = num_threads; options.fix_existing_frames = fix_existing_frames; options.constant_rigs = constant_rigs; options.constant_cameras = constant_cameras; options.use_prior_position = use_prior_position; options.use_robust_loss_on_prior_position = use_robust_loss_on_prior_position; options.prior_position_loss_scale = prior_position_loss_scale; options.random_seed = random_seed; return options; } IncrementalTriangulator::Options IncrementalPipelineOptions::Triangulation() const { IncrementalTriangulator::Options options = triangulation; options.min_focal_length_ratio = min_focal_length_ratio; options.max_focal_length_ratio = max_focal_length_ratio; options.max_extra_param = max_extra_param; options.random_seed = random_seed; return options; } BundleAdjustmentOptions IncrementalPipelineOptions::LocalBundleAdjustment() const { BundleAdjustmentOptions options; options.print_summary = false; options.backend = ba_local_backend; options.refine_focal_length = ba_refine_focal_length; options.refine_principal_point = ba_refine_principal_point; options.refine_extra_params = ba_refine_extra_params; options.refine_sensor_from_rig = ba_refine_sensor_from_rig; if (options.ceres) { options.ceres->solver_options.function_tolerance = ba_local_function_tolerance; options.ceres->solver_options.gradient_tolerance = 10.0; options.ceres->solver_options.parameter_tolerance = 0.0; options.ceres->solver_options.max_num_iterations = ba_local_max_num_iterations; options.ceres->solver_options.max_linear_solver_iterations = 100; options.ceres->solver_options.logging_type = ceres::LoggingType::SILENT; options.ceres->solver_options.num_threads = num_threads; #if CERES_VERSION_MAJOR < 2 options.ceres->solver_options.num_linear_solver_threads = num_threads; #endif // CERES_VERSION_MAJOR options.ceres->min_num_residuals_for_cpu_multi_threading = ba_min_num_residuals_for_cpu_multi_threading; options.ceres->loss_function_scale = 1.0; options.ceres->loss_function_type = CeresBundleAdjustmentOptions::LossFunctionType::SOFT_L1; options.ceres->use_gpu = ba_use_gpu; options.ceres->gpu_index = ba_gpu_index; } if (options.caspar) { options.caspar->gpu_index = ba_gpu_index; } return options; } BundleAdjustmentOptions IncrementalPipelineOptions::GlobalBundleAdjustment() const { BundleAdjustmentOptions options; options.print_summary = false; options.backend = ba_global_backend; options.refine_focal_length = ba_refine_focal_length; options.refine_principal_point = ba_refine_principal_point; options.refine_extra_params = ba_refine_extra_params; options.refine_sensor_from_rig = ba_refine_sensor_from_rig; if (options.ceres) { options.ceres->solver_options.function_tolerance = ba_global_function_tolerance; options.ceres->solver_options.gradient_tolerance = 1.0; options.ceres->solver_options.parameter_tolerance = 0.0; options.ceres->solver_options.max_num_iterations = ba_global_max_num_iterations; options.ceres->solver_options.max_linear_solver_iterations = 100; options.ceres->solver_options.logging_type = ceres::LoggingType::SILENT; if (VLOG_IS_ON(2)) { options.ceres->solver_options.minimizer_progress_to_stdout = true; options.ceres->solver_options.logging_type = ceres::LoggingType::PER_MINIMIZER_ITERATION; } options.ceres->solver_options.num_threads = num_threads; #if CERES_VERSION_MAJOR < 2 options.ceres->solver_options.num_linear_solver_threads = num_threads; #endif // CERES_VERSION_MAJOR options.ceres->min_num_residuals_for_cpu_multi_threading = ba_min_num_residuals_for_cpu_multi_threading; options.ceres->loss_function_type = CeresBundleAdjustmentOptions::LossFunctionType::TRIVIAL; options.ceres->use_gpu = ba_use_gpu; options.ceres->gpu_index = ba_gpu_index; } if (options.caspar) { options.caspar->gpu_index = ba_gpu_index; } return options; } bool IncrementalPipelineOptions::Check() const { CHECK_OPTION_GT(min_num_matches, 0); CHECK_OPTION_GT(max_num_models, 0); CHECK_OPTION_GT(max_model_overlap, 0); CHECK_OPTION_GE(min_model_size, 0); CHECK_OPTION_GT(init_num_trials, 0); CHECK_OPTION_GT(min_focal_length_ratio, 0); CHECK_OPTION_GT(max_focal_length_ratio, 0); CHECK_OPTION_GE(max_extra_param, 0); CHECK_OPTION_GE(ba_local_max_num_iterations, 0); CHECK_OPTION_GT(ba_global_frames_ratio, 1.0); CHECK_OPTION_GT(ba_global_points_ratio, 1.0); CHECK_OPTION_GT(ba_global_frames_freq, 0); CHECK_OPTION_GT(ba_global_points_freq, 0); CHECK_OPTION_GT(ba_global_max_num_iterations, 0); CHECK_OPTION_GT(ba_local_max_refinements, 0); CHECK_OPTION_GE(ba_local_max_refinement_change, 0); CHECK_OPTION_GE(ba_global_max_refinements, 0); CHECK_OPTION_GE(ba_global_max_refinement_change, 0); CHECK_OPTION_GE(snapshot_frames_freq, 0); CHECK_OPTION_GT(prior_position_loss_scale, 0.); CHECK_OPTION_GE(num_threads, -1); CHECK_OPTION_GE(random_seed, -1); #ifndef CASPAR_ENABLED CHECK_OPTION(ba_local_backend != BundleAdjustmentBackend::CASPAR); CHECK_OPTION(ba_global_backend != BundleAdjustmentBackend::CASPAR); #endif CHECK_OPTION(Mapper().Check()); CHECK_OPTION(Triangulation().Check()); return true; } IncrementalPipeline::IncrementalPipeline( std::shared_ptr options, std::shared_ptr database, std::shared_ptr reconstruction_manager) : options_(std::move(THROW_CHECK_NOTNULL(options))), reconstruction_manager_( THROW_CHECK_NOTNULL(std::move(reconstruction_manager))), total_run_timer_(std::make_shared()) { THROW_CHECK(options_->Check()); THROW_CHECK_NOTNULL(database); LOG(INFO) << "Loading database"; Timer timer; timer.Start(); database_cache_ = DatabaseCache::Create( *database, CreateDatabaseCacheOptions(*options_, *reconstruction_manager_)); timer.PrintMinutes(); CustomizeIncrementalPipelineOptions(*database_cache_, *options_); RegisterCallbacks(); } IncrementalPipeline::IncrementalPipeline( std::shared_ptr options, std::shared_ptr database_cache, std::shared_ptr reconstruction_manager) : options_(std::move(THROW_CHECK_NOTNULL(options))), reconstruction_manager_( THROW_CHECK_NOTNULL(std::move(reconstruction_manager))), total_run_timer_(std::make_shared()) { THROW_CHECK(options_->Check()); THROW_CHECK_NOTNULL(database_cache); database_cache_ = DatabaseCache::CreateFromCache( *database_cache, CreateDatabaseCacheOptions(*options_, *reconstruction_manager_)); CustomizeIncrementalPipelineOptions(*database_cache_, *options_); RegisterCallbacks(); } void IncrementalPipeline::Run() { total_run_timer_->Start(); if (database_cache_->NumImages() == 0) { LOG(WARNING) << "No images with matches"; return; } if (options_->use_prior_position && database_cache_->NumPosePriors() == 0) { LOG(WARNING) << "No pose priors"; return; } // Is there a sub-reconstruction before we start the reconstruction? I.e. the // user has imported an existing reconstruction. const bool continue_reconstruction = reconstruction_manager_->Size() > 0; THROW_CHECK_LE(reconstruction_manager_->Size(), 1) << "Can only continue from a single reconstruction, " "but multiple are given."; const size_t num_images = database_cache_->NumImages(); IncrementalMapper::Options mapper_options = options_->Mapper(); IncrementalMapper mapper(database_cache_); if (Reconstruct(mapper, mapper_options, /*continue_reconstruction=*/continue_reconstruction) == Status::STOP) { total_run_timer_->PrintMinutes(); return; } auto ShouldStop = [this, &mapper, &num_images]() { return mapper.NumTotalRegImages() == num_images || CheckIfStopped() || CheckReachedMaxRuntime(); }; const size_t kNumInitRelaxations = 2; for (size_t i = 0; i < kNumInitRelaxations; ++i) { if (ShouldStop()) { break; } LOG(INFO) << "=> Relaxing the initialization constraints."; mapper_options.init_min_num_inliers /= 2; mapper.ResetInitializationStats(); if (Reconstruct(mapper, mapper_options, /*continue_reconstruction=*/false) == Status::STOP) { break; } if (ShouldStop()) { break; } LOG(INFO) << "=> Relaxing the initialization constraints."; mapper_options.init_min_tri_angle /= 2; mapper.ResetInitializationStats(); if (Reconstruct(mapper, mapper_options, /*continue_reconstruction=*/false) == Status::STOP) { break; } } total_run_timer_->PrintMinutes(); } IncrementalPipeline::Status IncrementalPipeline::InitializeReconstruction( IncrementalMapper& mapper, const IncrementalMapper::Options& mapper_options, Reconstruction& reconstruction) { image_t image_id1 = static_cast(options_->init_image_id1); image_t image_id2 = static_cast(options_->init_image_id2); // Try to find good initial pair. Rigid3d cam2_from_cam1; if (!options_->IsInitialPairProvided()) { LOG(INFO) << "Finding good initial image pair"; const bool find_init_success = mapper.FindInitialImagePair( mapper_options, image_id1, image_id2, cam2_from_cam1); if (!find_init_success) { LOG(INFO) << "=> No good initial image pair found."; return Status::NO_INITIAL_PAIR; } } else { if (!reconstruction.ExistsImage(image_id1) || !reconstruction.ExistsImage(image_id2)) { LOG(INFO) << StringPrintf( "=> Initial image pair #%d and #%d does not exist.", image_id1, image_id2); return Status::NO_INITIAL_PAIR; } const bool provided_init_success = mapper.EstimateInitialTwoViewGeometry( mapper_options, image_id1, image_id2, cam2_from_cam1); if (!provided_init_success) { LOG(INFO) << "=> Provided pair is unsuitable for initialization."; return Status::BAD_INITIAL_PAIR; } } LOG(INFO) << StringPrintf( "Registering initial image pair #%d and #%d", image_id1, image_id2); mapper.RegisterInitialImagePair( mapper_options, image_id1, image_id2, cam2_from_cam1); IncrementalTriangulator::Options tri_options = options_->Triangulation(); tri_options.min_angle = mapper_options.init_min_tri_angle; for (const image_t image_id : {image_id1, image_id2}) { const Image& image = reconstruction.Image(image_id); for (const data_t& data_id : image.FramePtr()->ImageIds()) { mapper.TriangulateImage(tri_options, data_id.id); } } if (reconstruction.NumPoints3D() == 0) { return Status::BAD_INITIAL_PAIR; } LOG(INFO) << "Global bundle adjustment"; mapper.AdjustGlobalBundle(mapper_options, options_->GlobalBundleAdjustment()); reconstruction.Normalize(); mapper.FilterPoints(mapper_options); mapper.FilterFrames(mapper_options); // Initial image pair failed to register. if (reconstruction.NumRegFrames() == 0 || reconstruction.NumPoints3D() == 0) { return Status::BAD_INITIAL_PAIR; } // Number of triangulated points not enough for registering future images. if (static_cast(reconstruction.NumPoints3D()) < mapper_options.abs_pose_min_num_inliers) { return Status::BAD_INITIAL_PAIR; } if (options_->extract_colors) { for (const image_t image_id : {image_id1, image_id2}) { const Image& image = reconstruction.Image(image_id); for (const data_t& data_id : image.FramePtr()->ImageIds()) { ExtractColors(options_->image_path, data_id.id, reconstruction); } } } return Status::SUCCESS; } bool IncrementalPipeline::CheckRunGlobalRefinement( const Reconstruction& reconstruction, const size_t ba_prev_num_reg_frames, const size_t ba_prev_num_points) { return reconstruction.NumRegFrames() >= options_->ba_global_frames_ratio * ba_prev_num_reg_frames || reconstruction.NumRegFrames() >= options_->ba_global_frames_freq + ba_prev_num_reg_frames || reconstruction.NumPoints3D() >= options_->ba_global_points_ratio * ba_prev_num_points || reconstruction.NumPoints3D() >= options_->ba_global_points_freq + ba_prev_num_points; } IncrementalPipeline::Status IncrementalPipeline::ReconstructSubModel( IncrementalMapper& mapper, const IncrementalMapper::Options& mapper_options, const std::shared_ptr& reconstruction) { mapper.BeginReconstruction(reconstruction); if (HasUnknownSensorFromRig(*reconstruction)) { return Status::UNKNOWN_SENSOR_FROM_RIG; } //////////////////////////////////////////////////////////////////////////// // Register initial pair //////////////////////////////////////////////////////////////////////////// if (reconstruction->NumRegFrames() == 0) { const Status init_status = IncrementalPipeline::InitializeReconstruction( mapper, mapper_options, *reconstruction); if (init_status != Status::SUCCESS) { return init_status; } } Callback(INITIAL_IMAGE_PAIR_REG_CALLBACK); //////////////////////////////////////////////////////////////////////////// // Incremental mapping //////////////////////////////////////////////////////////////////////////// size_t snapshot_prev_num_reg_frames = reconstruction->NumRegFrames(); size_t ba_prev_num_reg_frames = reconstruction->NumRegFrames(); size_t ba_prev_num_points = reconstruction->NumPoints3D(); std::vector structure_less_flags; if (options_->structure_less_registration_only) { structure_less_flags = {true}; } else { if (options_->structure_less_registration_fallback) { structure_less_flags = {false, true}; } else { structure_less_flags = {false}; } } bool reg_next_success = true; bool prev_reg_next_success = true; do { if (CheckIfStopped() || CheckReachedMaxRuntime()) { break; } prev_reg_next_success = reg_next_success; reg_next_success = false; image_t next_image_id = kInvalidImageId; // Try to register next image. Always prefer structure-based registration // first, and if that fails, try (less reliable) structure-less // registration. for (const bool structure_less : structure_less_flags) { const std::vector next_images = mapper.FindNextImages( mapper_options, /*structure_less=*/structure_less); for (size_t reg_trial = 0; reg_trial < next_images.size(); ++reg_trial) { next_image_id = next_images[reg_trial]; LOG(INFO) << StringPrintf("Registering image #%d (num_reg_frames=%d)", next_image_id, reconstruction->NumRegFrames()); LOG(INFO) << StringPrintf( "=> Image sees %d / %d points", mapper.ObservationManager().NumVisiblePoints3D(next_image_id), mapper.ObservationManager().NumObservations(next_image_id)); if (structure_less) { LOG(INFO) << StringPrintf( "Registering image with structure-less fallback"); LOG(INFO) << StringPrintf( "=> Image sees %d / %d correspondences", mapper.ObservationManager().NumVisibleCorrespondences( next_image_id), mapper.ObservationManager().NumCorrespondences(next_image_id)); reg_next_success = mapper.RegisterNextStructureLessImage( mapper_options, next_image_id); } else { reg_next_success = mapper.RegisterNextImage(mapper_options, next_image_id); } if (reg_next_success) { break; } else { LOG(INFO) << "=> Could not register, trying another image."; // If initial model fails to continue for some time, // abort and try different initial pair. const size_t kMinNumInitialRegTrials = 30; if (reg_trial >= kMinNumInitialRegTrials && reconstruction->NumRegImages() < static_cast(options_->min_model_size)) { break; } } } if (reg_next_success) { break; } } if (reg_next_success) { const Image& image = reconstruction->Image(next_image_id); for (const data_t& data_id : image.FramePtr()->ImageIds()) { mapper.TriangulateImage(options_->Triangulation(), data_id.id); } mapper.IterativeLocalRefinement(options_->ba_local_max_refinements, options_->ba_local_max_refinement_change, mapper_options, options_->LocalBundleAdjustment(), options_->Triangulation(), next_image_id); if (CheckRunGlobalRefinement( *reconstruction, ba_prev_num_reg_frames, ba_prev_num_points)) { IterativeGlobalRefinement(*options_, mapper_options, mapper); ba_prev_num_points = reconstruction->NumPoints3D(); ba_prev_num_reg_frames = reconstruction->NumRegFrames(); } if (options_->extract_colors) { for (const data_t& data_id : image.FramePtr()->ImageIds()) { ExtractColors(options_->image_path, data_id.id, *reconstruction); } } if (options_->snapshot_frames_freq > 0 && reconstruction->NumRegFrames() >= options_->snapshot_frames_freq + snapshot_prev_num_reg_frames) { snapshot_prev_num_reg_frames = reconstruction->NumRegFrames(); WriteSnapshot(*reconstruction, options_->snapshot_path); } Callback(NEXT_IMAGE_REG_CALLBACK); } const size_t max_model_overlap = static_cast(options_->max_model_overlap); if (mapper.NumSharedRegImages() >= max_model_overlap) { break; } // If no image could be registered, try a single final global iterative // bundle adjustment and try again to register one image. If this fails // once, then exit the incremental mapping. if (!reg_next_success && prev_reg_next_success) { IterativeGlobalRefinement(*options_, mapper_options, mapper); } } while (reg_next_success || prev_reg_next_success); if (CheckIfStopped() || CheckReachedMaxRuntime()) { return Status::INTERRUPTED; } // Only run final global BA, if last incremental BA was not global. if (reconstruction->NumRegFrames() > 0 && reconstruction->NumRegFrames() != ba_prev_num_reg_frames && reconstruction->NumPoints3D() != ba_prev_num_points) { IterativeGlobalRefinement(*options_, mapper_options, mapper); } return Status::SUCCESS; } IncrementalPipeline::Status IncrementalPipeline::Reconstruct( IncrementalMapper& mapper, const IncrementalMapper::Options& mapper_options, bool continue_reconstruction) { for (int num_trials = 0; num_trials < options_->init_num_trials; ++num_trials) { if (CheckIfStopped() || CheckReachedMaxRuntime()) { return Status::STOP; } const size_t reconstruction_idx = (!continue_reconstruction || num_trials > 0) ? reconstruction_manager_->Add() : 0; std::shared_ptr reconstruction = reconstruction_manager_->Get(reconstruction_idx); const Status status = ReconstructSubModel(mapper, mapper_options, reconstruction); switch (status) { case Status::INTERRUPTED: { reconstruction->UpdatePoint3DErrors(); LOG(INFO) << "Keeping reconstruction due to interrupt"; mapper.EndReconstruction(/*discard=*/false); AlignReconstructionToOrigRigScales(database_cache_->Rigs(), reconstruction.get()); return Status::STOP; } case Status::UNKNOWN_SENSOR_FROM_RIG: { LOG(ERROR) << "Discarding reconstruction due to unknown sensor_from_rig " "poses. Either explicitly define the poses by configuring the " "rigs or first run reconstruction without configured rigs and " "then derive the poses from the initial reconstruction for a " "subsequent reconstruction with rig constraints. See " "documentation for detailed instructions."; mapper.EndReconstruction(/*discard=*/true); reconstruction_manager_->Delete(reconstruction_idx); // If the reconstruction was discarded due to an unknown sensor from // rig, we can stop the outer trial loop, because all trials will fail. return Status::STOP; } case Status::BAD_INITIAL_PAIR: { LOG(INFO) << "Discarding reconstruction due to bad initial pair"; mapper.EndReconstruction(/*discard=*/true); reconstruction_manager_->Delete(reconstruction_idx); // If an initial pair was found but it was bad, we discard and attempt // to initialize from any of the remaining pairs in the next trials. break; } case Status::NO_INITIAL_PAIR: { LOG(INFO) << "Discarding reconstruction due to no initial pair"; mapper.EndReconstruction(/*discard=*/true); reconstruction_manager_->Delete(reconstruction_idx); // If no pair could be found, we can exit the trial loop, because // the next trials in this loop will not find anything unless the // initialization thresholds are relaxed. However, by relaxing the // constraints in the outer loop we can succeed. return Status::CONTINUE; } case Status::SUCCESS: { // Remember the total number of registered images before potentially // discarding it below due to small size, so we can exit out of the main // loop, if all images were registered. const size_t num_reg_images = reconstruction->NumRegImages(); const size_t total_num_reg_images = mapper.NumTotalRegImages(); // Always keep the first reconstruction, independent of size. if ((options_->multiple_models && reconstruction_manager_->Size() > 1 && num_reg_images < static_cast(options_->min_model_size)) || num_reg_images == 0) { LOG(WARNING) << "Discarding reconstruction due to insufficient size"; mapper.EndReconstruction(/*discard=*/true); reconstruction_manager_->Delete(reconstruction_idx); } else { reconstruction->UpdatePoint3DErrors(); LOG(INFO) << "Keeping successful reconstruction"; mapper.EndReconstruction(/*discard=*/false); AlignReconstructionToOrigRigScales(database_cache_->Rigs(), reconstruction.get()); } Callback(LAST_IMAGE_REG_CALLBACK); // Check if we should or can reconstruct another sub-model. if (!options_->multiple_models || reconstruction_manager_->Size() >= static_cast(options_->max_num_models) || total_num_reg_images >= database_cache_->NumImages() - 1) { return Status::STOP; } // In case the reconstruction was successful and there are remaining // images, we try to reconstruct another sub-model in the next trial. break; } default: LOG(FATAL_THROW) << "Unknown reconstruction status."; } } return Status::CONTINUE; } void IncrementalPipeline::TriangulateReconstruction( const std::shared_ptr& reconstruction) { THROW_CHECK_GT(database_cache_->NumImages(), 0) << "No images with matches found in the database"; IncrementalMapper mapper(database_cache_); mapper.BeginReconstruction(reconstruction); LOG(INFO) << "Iterative triangulation"; size_t image_idx = 0; for (const image_t image_id : reconstruction->RegImageIds()) { const auto& image = reconstruction->Image(image_id); LOG(INFO) << StringPrintf( "Triangulating image #%d (%d)", image_id, image_idx++); const size_t num_existing_points3D = image.NumPoints3D(); LOG(INFO) << "=> Image sees " << num_existing_points3D << " / " << mapper.ObservationManager().NumObservations(image_id) << " points"; mapper.TriangulateImage(options_->Triangulation(), image_id); VLOG(1) << "=> Triangulated " << (image.NumPoints3D() - num_existing_points3D) << " points"; } LOG(INFO) << "Retriangulation and Global bundle adjustment"; mapper.IterativeGlobalRefinement(options_->ba_global_max_refinements, options_->ba_global_max_refinement_change, options_->Mapper(), options_->GlobalBundleAdjustment(), options_->Triangulation(), /*normalize_reconstruction=*/false); mapper.EndReconstruction(/*discard=*/false); reconstruction->UpdatePoint3DErrors(); LOG(INFO) << "Extracting colors"; reconstruction->ExtractColorsForAllImages(options_->image_path, options_->num_threads); } void IncrementalPipeline::RegisterCallbacks() { RegisterCallback(INITIAL_IMAGE_PAIR_REG_CALLBACK); RegisterCallback(NEXT_IMAGE_REG_CALLBACK); RegisterCallback(LAST_IMAGE_REG_CALLBACK); } bool IncrementalPipeline::CheckReachedMaxRuntime() const { if (options_->max_runtime_seconds > 0 && total_run_timer_->ElapsedSeconds() > options_->max_runtime_seconds) { LOG(INFO) << "Reached maximum runtime of " << options_->max_runtime_seconds << " seconds."; return true; } return false; } } // namespace colmap colmap-4.1.1/src/colmap/controllers/incremental_pipeline.h000066400000000000000000000246151522646662000237600ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/scene/reconstruction_manager.h" #include "colmap/sfm/incremental_mapper.h" #include "colmap/util/base_controller.h" #include #include #include #include #include namespace colmap { class Timer; // NOLINTNEXTLINE(clang-analyzer-optin.performance.Padding) struct IncrementalPipelineOptions { // The minimum number of matches for inlier matches to be considered. int min_num_matches = 15; // Whether to ignore the inlier matches of watermark image pairs. bool ignore_watermarks = false; // Whether to reconstruct multiple sub-models. bool multiple_models = true; // The number of sub-models to reconstruct. int max_num_models = 50; // The maximum number of overlapping images between sub-models. If the // current sub-models shares more than this number of images with another // model, then the reconstruction is stopped. int max_model_overlap = 20; // The minimum number of registered images of a sub-model, otherwise the // sub-model is discarded. Note that the first sub-model is always kept // independent of size. If the model contains at least half of the total // number of images, we also always keep it. int min_model_size = 10; // The image identifiers used to initialize the reconstruction. Note that // only one or both image identifiers can be specified. In the former case, // the second image is automatically determined. int init_image_id1 = -1; int init_image_id2 = -1; // The number of trials to initialize the reconstruction. int init_num_trials = 200; // Enable fallback to structure-less image registration using 2D-2D // correspondences, if structured-based registration fails using 2D-3D // correspondences. bool structure_less_registration_fallback = true; // Only use structure-less and skip structure-based image registration. bool structure_less_registration_only = false; // Whether to extract colors for reconstructed points. bool extract_colors = true; // The number of threads to use during reconstruction. int num_threads = -1; // PRNG seed for all stochastic methods during reconstruction. int random_seed = -1; // Thresholds for filtering images with degenerate intrinsics. double min_focal_length_ratio = 0.1; double max_focal_length_ratio = 10.0; double max_extra_param = 1.0; // Which camera parameters to optimize during the reconstruction. bool ba_refine_focal_length = true; bool ba_refine_principal_point = false; bool ba_refine_extra_params = true; // Whether to optimize rig poses during the reconstruction. bool ba_refine_sensor_from_rig = true; // The minimum number of residuals per bundle adjustment problem to // enable multi-threading solving of the problems. int ba_min_num_residuals_for_cpu_multi_threading = 50000; // Ceres solver function tolerance for local bundle adjustment double ba_local_function_tolerance = 0.0; // The maximum number of local bundle adjustment iterations. int ba_local_max_num_iterations = 25; // The growth rates after which to perform global bundle adjustment. double ba_global_frames_ratio = 1.1; double ba_global_points_ratio = 1.1; int ba_global_frames_freq = 500; int ba_global_points_freq = 250000; // Ceres solver function tolerance for global bundle adjustment double ba_global_function_tolerance = 0.0; // The maximum number of global bundle adjustment iterations. int ba_global_max_num_iterations = 50; // The thresholds for iterative bundle adjustment refinements. int ba_local_max_refinements = 2; double ba_local_max_refinement_change = 0.001; int ba_global_max_refinements = 5; double ba_global_max_refinement_change = 0.0005; // Whether to use Ceres' CUDA sparse linear algebra library, if available. bool ba_use_gpu = false; // GPU device index for bundle adjustment (-1 = auto-select). std::string ba_gpu_index = "-1"; // Bundle adjustment solver backend for local bundle adjustment. BundleAdjustmentBackend ba_local_backend = BundleAdjustmentBackend::CERES; // Bundle adjustment solver backend for global bundle adjustment. BundleAdjustmentBackend ba_global_backend = BundleAdjustmentBackend::CERES; // Whether to use priors on the camera positions. bool use_prior_position = false; // Whether to use a robust loss on prior camera positions. bool use_robust_loss_on_prior_position = false; // Threshold on the residual for the robust position prior loss // (chi2 for 3DOF at 95% = 7.815). double prior_position_loss_scale = 7.815; // Path to a folder with reconstruction snapshots during incremental // reconstruction. Snapshots will be saved according to the specified // frequency of registered images. std::filesystem::path snapshot_path; int snapshot_frames_freq = 0; // The image path at which to find the images to extract point colors. // If not specified, all point colors will be black. std::filesystem::path image_path; // Optional list of image names to reconstruct. If no images are specified, // all images will be reconstructed by default. std::vector image_names; // Whether to load all images from the database, including those without // correspondences. Only useful for triangulation where all images are // already registered and should retain their keypoints. Should not be // enabled for incremental SfM. bool load_all_images = false; // If reconstruction is provided as input, fix the existing frame poses. bool fix_existing_frames = false; // List of rigs for which to fix the sensor_from_rig transformation, // independent of ba_refine_sensor_from_rig. std::unordered_set constant_rigs; // List of cameras for which to fix the camera parameters independent // of refine_focal_length, refine_principal_point, and refine_extra_params. std::unordered_set constant_cameras; // Maximum runtime in seconds for the reconstruction process. // If set to a non-positive value, the process will run until completion. int max_runtime_seconds = -1; IncrementalMapper::Options mapper; IncrementalTriangulator::Options triangulation; IncrementalMapper::Options Mapper() const; IncrementalTriangulator::Options Triangulation() const; BundleAdjustmentOptions LocalBundleAdjustment() const; BundleAdjustmentOptions GlobalBundleAdjustment() const; inline bool IsInitialPairProvided() const { return init_image_id1 != -1 && init_image_id2 != -1; } bool Check() const; }; // Class that controls the incremental mapping procedure by iteratively // initializing reconstructions from the same scene graph. class IncrementalPipeline : public BaseController { public: enum CallbackType { INITIAL_IMAGE_PAIR_REG_CALLBACK, NEXT_IMAGE_REG_CALLBACK, LAST_IMAGE_REG_CALLBACK, }; enum class Status { SUCCESS, INTERRUPTED, CONTINUE, STOP, NO_INITIAL_PAIR, BAD_INITIAL_PAIR, UNKNOWN_SENSOR_FROM_RIG, }; IncrementalPipeline( std::shared_ptr options, std::shared_ptr database, std::shared_ptr reconstruction_manager); IncrementalPipeline( std::shared_ptr options, std::shared_ptr database_cache, std::shared_ptr reconstruction_manager); void Run() override; // Getter functions for python pipelines. std::shared_ptr Options() const { return options_; } const std::shared_ptr& ReconstructionManager() const { return reconstruction_manager_; } const std::shared_ptr& DatabaseCache() const { return database_cache_; } Status Reconstruct(IncrementalMapper& mapper, const IncrementalMapper::Options& mapper_options, bool continue_reconstruction); Status ReconstructSubModel( IncrementalMapper& mapper, const IncrementalMapper::Options& mapper_options, const std::shared_ptr& reconstruction); Status InitializeReconstruction( IncrementalMapper& mapper, const IncrementalMapper::Options& mapper_options, Reconstruction& reconstruction); void TriangulateReconstruction( const std::shared_ptr& reconstruction); bool CheckRunGlobalRefinement(const Reconstruction& reconstruction, size_t ba_prev_num_reg_images, size_t ba_prev_num_points); bool CheckReachedMaxRuntime() const; private: void RegisterCallbacks(); const std::shared_ptr options_; std::shared_ptr reconstruction_manager_; std::shared_ptr database_cache_; std::shared_ptr total_run_timer_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/incremental_pipeline_test.cc000066400000000000000000000746311522646662000251600ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/incremental_pipeline.h" #include "colmap/geometry/rigid3_matchers.h" #include "colmap/scene/database.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { TEST(IncrementalPipeline, WithoutNoise) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = false; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(std::make_shared(), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, WithoutNoiseSphericalCameras) { SetPRNGSeed(0); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 5; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.camera_model_id = EquirectangularCameraModel::model_id; synthetic_dataset_options.camera_width = 1000; synthetic_dataset_options.camera_height = 500; synthetic_dataset_options.camera_params = {1000, 500}; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(std::make_shared(), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); const Reconstruction& reconstruction = *reconstruction_manager->Get(0); EXPECT_EQ(reconstruction.NumRegImages(), gt_reconstruction.NumImages()); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, WithoutNoiseAndWithNonTrivialFrames) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0.05; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); for (const bool refine_sensor_from_rig : {true, false}) { auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); options->ba_refine_sensor_from_rig = refine_sensor_from_rig; IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear( *reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-3, /*max_scale_error=*/refine_sensor_from_rig ? 1e-2 : 1e-4)); } } TEST(IncrementalPipeline, UnknownSensorFromRigExitsGracefully) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0.05; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); // Set one of the sensor from rig to unknown. auto rig = database->ReadAllRigs()[0]; rig.NonRefSensors().begin()->second.reset(); database->UpdateRig(rig); auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 0); } TEST(IncrementalPipeline, WithNonTrivialFramesAndConstantRigsAndCameras) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0.05; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); constexpr int kConstantRigId = 1; constexpr int kConstantCameraId = 1; auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); options->constant_rigs.insert(kConstantRigId); options->constant_cameras.insert(kConstantCameraId); IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); auto& reconstruction = *reconstruction_manager->Get(0); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-3)); for (const auto& [sensor_id, sensor_from_rig] : reconstruction.Rig(kConstantRigId).NonRefSensors()) { EXPECT_THAT( sensor_from_rig.value(), Rigid3dNear( gt_reconstruction.Rig(kConstantRigId).SensorFromRig(sensor_id), /*rtol=*/1e-4, /*ttol=*/1e-4)); } EXPECT_EQ(reconstruction.Camera(kConstantCameraId).params, gt_reconstruction.Camera(kConstantCameraId).params); } TEST(IncrementalPipeline, WithoutNoiseAndWithPanoramicNonTrivialFrames) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); for (const bool refine_sensor_from_rig : {true, false}) { auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); options->ba_refine_sensor_from_rig = refine_sensor_from_rig; IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-3)); } } TEST(IncrementalPipeline, WithPriorFocalLength) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(std::make_shared(), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, WithNoise) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(std::make_shared(), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); auto reconstruction = reconstruction_manager->Get(0); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction, /*max_rotation_error_deg=*/1e-1, /*max_proj_center_error=*/1e-1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); // After the pipeline runs, point3D.error must be in pixel units, i.e. // equal to what UpdatePoint3DErrors would recompute. ASSERT_GT(reconstruction->NumPoints3D(), 0u); const double mean_after_run = reconstruction->ComputeMeanReprojectionError(); reconstruction->UpdatePoint3DErrors(); EXPECT_DOUBLE_EQ(mean_after_run, reconstruction->ComputeMeanReprojectionError()); } TEST(IncrementalPipeline, IgnoreRedundantPoints3D) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); options->mapper.ba_global_ignore_redundant_points3D = true; options->mapper.ba_global_ignore_redundant_points3D_min_coverage_gain = 0.5; IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, StructureLessRegistrationOnly) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); options->structure_less_registration_only = true; IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-3, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, MultiReconstruction) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction1; Reconstruction gt_reconstruction2; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset( synthetic_dataset_options, >_reconstruction1, database.get()); synthetic_dataset_options.num_frames_per_rig = 4; SynthesizeDataset( synthetic_dataset_options, >_reconstruction2, database.get()); auto reconstruction_manager = std::make_shared(); auto mapper_options = std::make_shared(); mapper_options->min_model_size = 4; IncrementalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 2); Reconstruction* computed_reconstruction1 = nullptr; Reconstruction* computed_reconstruction2 = nullptr; if (reconstruction_manager->Get(0)->NumRegImages() == 5) { computed_reconstruction1 = reconstruction_manager->Get(0).get(); computed_reconstruction2 = reconstruction_manager->Get(1).get(); } else { computed_reconstruction1 = reconstruction_manager->Get(1).get(); computed_reconstruction2 = reconstruction_manager->Get(0).get(); } EXPECT_THAT(gt_reconstruction1, ReconstructionNear(*computed_reconstruction1, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); EXPECT_THAT(gt_reconstruction2, ReconstructionNear(*computed_reconstruction2, /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, FixExistingFrames) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.camera_has_prior_focal_length = false; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); auto options = std::make_shared(); for (const bool fix_existing_frames : {false, true}) { if (fix_existing_frames) { ASSERT_EQ(reconstruction_manager->Size(), 1); Reconstruction& reconstruction = *reconstruction_manager->Get(0); // De-register a frame that expect to be re-registered in the second run. reconstruction.DeRegisterFrame(1); // Clear all the observations of one image but keep it registered. We do // not expect fixed images to be filtered (due to insufficient // observations). Image& image2 = reconstruction.Image(2); for (point2D_t point2D_idx = 0; point2D_idx < image2.NumPoints2D(); ++point2D_idx) { if (image2.Point2D(point2D_idx).HasPoint3D()) { reconstruction.DeleteObservation(image2.ImageId(), point2D_idx); } } } options->fix_existing_frames = fix_existing_frames; IncrementalPipeline mapper(options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } } TEST(IncrementalPipeline, ChainedMatches) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.match_config = SyntheticDatasetOptions::MatchConfig::CHAINED; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 4; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(std::make_shared(), database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-2, /*max_proj_center_error=*/1e-4)); } TEST(IncrementalPipeline, PriorBasedSfMWithoutNoise) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.prior_position = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.prior_position_stddev = 0.0; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); std::shared_ptr mapper_options = std::make_shared(); mapper_options->use_prior_position = true; auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); // No noise on prior so do not align gt & computed (expected to be aligned // from PositionPriorBundleAdjustment) EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-1, /*max_proj_center_error=*/1e-1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02, /*align=*/false)); } TEST(IncrementalPipeline, PriorBasedSfMWithoutNoiseAndWithNonTrivialFrames) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.camera_has_prior_focal_length = false; synthetic_dataset_options.prior_position = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); std::shared_ptr mapper_options = std::make_shared(); mapper_options->use_prior_position = true; mapper_options->use_robust_loss_on_prior_position = true; auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-1, /*max_proj_center_error=*/1e-1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } TEST(IncrementalPipeline, PriorBasedSfMWithNoise) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.prior_position = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.prior_position_stddev = 1.5; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); std::shared_ptr mapper_options = std::make_shared(); mapper_options->use_prior_position = true; mapper_options->use_robust_loss_on_prior_position = true; auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-1, /*max_proj_center_error=*/1e-1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } TEST(IncrementalPipeline, GPSPriorBasedSfMWithNoise) { const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.prior_position = true; synthetic_dataset_options.prior_position_coordinate_system = PosePrior::CoordinateSystem::WGS84; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.prior_position_stddev = 1.5; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); std::shared_ptr mapper_options = std::make_shared(); mapper_options->use_prior_position = true; mapper_options->use_robust_loss_on_prior_position = true; auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper(mapper_options, database, reconstruction_manager); mapper.Run(); ASSERT_EQ(reconstruction_manager->Size(), 1); EXPECT_THAT(gt_reconstruction, ReconstructionNear(*reconstruction_manager->Get(0), /*max_rotation_error_deg=*/1e-1, /*max_proj_center_error=*/1e-1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } TEST(IncrementalPipeline, SfMWithRandomSeedStability) { SetPRNGSeed(42); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 3; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.prior_position = false; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); auto run_mapper = [&](int num_threads, int random_seed) { auto mapper_options = std::make_shared(); mapper_options->use_prior_position = false; mapper_options->num_threads = num_threads; mapper_options->random_seed = random_seed; auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper( mapper_options, database, reconstruction_manager); mapper.Run(); EXPECT_EQ(reconstruction_manager->Size(), 1); return reconstruction_manager; }; constexpr int kRandomSeed = 42; auto reconstruction_manager0 = run_mapper(/*num_threads=*/1, /*random_seed=*/kRandomSeed); auto reconstruction_manager1 = run_mapper(/*num_threads=*/1, /*random_seed=*/kRandomSeed); EXPECT_THAT(*reconstruction_manager0->Get(0), ReconstructionEq(*reconstruction_manager1->Get(0))); } TEST(IncrementalPipeline, PriorBasedSfMWithRandomSeedStability) { SetPRNGSeed(42); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 50; synthetic_dataset_options.prior_position = true; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.1; synthetic_noise_options.prior_position_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); auto run_mapper = [&](int num_threads, int random_seed) { auto mapper_options = std::make_shared(); mapper_options->use_prior_position = true; mapper_options->num_threads = num_threads; mapper_options->random_seed = random_seed; auto reconstruction_manager = std::make_shared(); IncrementalPipeline mapper( mapper_options, database, reconstruction_manager); mapper.Run(); EXPECT_EQ(reconstruction_manager->Size(), 1); return reconstruction_manager; }; constexpr int kRandomSeed = 42; auto reconstruction_manager0 = run_mapper(/*num_threads=*/1, /*random_seed=*/kRandomSeed); auto reconstruction_manager1 = run_mapper(/*num_threads=*/1, /*random_seed=*/kRandomSeed); EXPECT_THAT(*reconstruction_manager0->Get(0), ReconstructionEq(*reconstruction_manager1->Get(0))); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/matcher_cache.cc000066400000000000000000000260761522646662000225010ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/matcher_cache.h" namespace colmap { FeatureMatcherCache::FeatureMatcherCache( const size_t cache_size, const std::shared_ptr& database) : cache_size_(cache_size), database_(THROW_CHECK_NOTNULL(database)), descriptor_index_cache_(cache_size_, [this](const image_t image_id) { auto descriptors = GetDescriptors(image_id); auto index = FeatureDescriptorIndex::Create(); index->Build(descriptors->ToFloat()); return index; }) { keypoints_cache_ = std::make_unique>( cache_size_, [this](const image_t image_id) { std::lock_guard lock(database_mutex_); return std::make_shared( database_->ReadKeypoints(image_id)); }); descriptors_cache_ = std::make_unique>( cache_size_, [this](const image_t image_id) { std::lock_guard lock(database_mutex_); return std::make_shared( database_->ReadDescriptors(image_id)); }); keypoints_exists_cache_ = std::make_unique>( cache_size_, [this](const image_t image_id) { std::lock_guard lock(database_mutex_); return std::make_shared(database_->ExistsKeypoints(image_id)); }); descriptors_exists_cache_ = std::make_unique>( cache_size_, [this](const image_t image_id) { std::lock_guard lock(database_mutex_); return std::make_shared( database_->ExistsDescriptors(image_id)); }); } void FeatureMatcherCache::AccessDatabase( const std::function& func) { std::lock_guard lock(database_mutex_); func(*database_); } const Camera& FeatureMatcherCache::GetCamera(const camera_t camera_id) { MaybeLoadCameras(); return cameras_cache_->at(camera_id); } const Frame& FeatureMatcherCache::GetFrame(const frame_t frame_id) { MaybeLoadFrames(); return frames_cache_->at(frame_id); } const Image& FeatureMatcherCache::GetImage(const image_t image_id) { MaybeLoadImages(); return images_cache_->at(image_id); } const PosePrior* FeatureMatcherCache::FindImagePosePriorOrNull( const image_t image_id) { MaybeLoadPosePriors(); const auto it = pose_priors_cache_->find(image_id); if (it != pose_priors_cache_->end()) { return &it->second; } return nullptr; } std::shared_ptr FeatureMatcherCache::GetKeypoints( const image_t image_id) { return keypoints_cache_->Get(image_id); } std::shared_ptr FeatureMatcherCache::GetDescriptors( const image_t image_id) { return descriptors_cache_->Get(image_id); } FeatureMatches FeatureMatcherCache::GetMatches(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); return database_->ReadMatches(image_id1, image_id2); } TwoViewGeometry FeatureMatcherCache::GetTwoViewGeometry( const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); return database_->ReadTwoViewGeometry(image_id1, image_id2); } std::vector FeatureMatcherCache::GetFrameIds() { MaybeLoadFrames(); std::vector frame_ids; frame_ids.reserve(frames_cache_->size()); for (const auto& frame : *frames_cache_) { frame_ids.push_back(frame.first); } // Sort the frames for deterministic behavior. Note that the frames_cache_ is // an unordered_map, which does not guarantee a deterministic order across // different standard library implementations. std::sort(frame_ids.begin(), frame_ids.end()); return frame_ids; } std::vector FeatureMatcherCache::GetImageIds() { MaybeLoadImages(); std::vector image_ids; image_ids.reserve(images_cache_->size()); for (const auto& image : *images_cache_) { image_ids.push_back(image.first); } // Sort the images for deterministic behavior. Note that the images_cache_ is // an unordered_map, which does not guarantee a deterministic order across // different standard library implementations. std::sort(image_ids.begin(), image_ids.end()); return image_ids; } ThreadSafeLRUCache& FeatureMatcherCache::GetFeatureDescriptorIndexCache() { return descriptor_index_cache_; } bool FeatureMatcherCache::ExistsKeypoints(const image_t image_id) { return *keypoints_exists_cache_->Get(image_id); } bool FeatureMatcherCache::ExistsDescriptors(const image_t image_id) { return *descriptors_exists_cache_->Get(image_id); } bool FeatureMatcherCache::ExistsMatches(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); return database_->ExistsMatches(image_id1, image_id2); } bool FeatureMatcherCache::ExistsTwoViewGeometry(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); return database_->ExistsTwoViewGeometry(image_id1, image_id2); } bool FeatureMatcherCache::ExistsInlierMatches(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); if (!database_->ExistsTwoViewGeometry(image_id1, image_id2)) { return false; } auto two_view_geometry = database_->ReadTwoViewGeometry(image_id1, image_id2); return !two_view_geometry.inlier_matches.empty(); } void FeatureMatcherCache::UpdateTwoViewGeometry( const image_t image_id1, const image_t image_id2, const TwoViewGeometry& two_view_geometry) { std::lock_guard lock(database_mutex_); database_->UpdateTwoViewGeometry(image_id1, image_id2, two_view_geometry); } void FeatureMatcherCache::WriteMatches(const image_t image_id1, const image_t image_id2, const FeatureMatches& matches) { std::lock_guard lock(database_mutex_); database_->WriteMatches(image_id1, image_id2, matches); } void FeatureMatcherCache::WriteTwoViewGeometry( const image_t image_id1, const image_t image_id2, const TwoViewGeometry& two_view_geometry) { std::lock_guard lock(database_mutex_); database_->WriteTwoViewGeometry(image_id1, image_id2, two_view_geometry); } void FeatureMatcherCache::DeleteMatches(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); database_->DeleteMatches(image_id1, image_id2); } void FeatureMatcherCache::DeleteTwoViewGeometry(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); database_->DeleteTwoViewGeometry(image_id1, image_id2); } void FeatureMatcherCache::DeleteInlierMatches(const image_t image_id1, const image_t image_id2) { std::lock_guard lock(database_mutex_); database_->DeleteInlierMatches(image_id1, image_id2); } size_t FeatureMatcherCache::MaxNumKeypoints() { std::lock_guard lock(database_mutex_); if (!max_num_keypoints_) { max_num_keypoints_ = database_->MaxNumKeypoints(); } return *max_num_keypoints_; } void FeatureMatcherCache::MaybeLoadCameras() { std::lock_guard lock(database_mutex_); if (cameras_cache_) { return; } std::vector cameras = database_->ReadAllCameras(); cameras_cache_ = std::make_unique>(); cameras_cache_->reserve(cameras.size()); for (Camera& camera : cameras) { cameras_cache_->emplace(camera.camera_id, std::move(camera)); } } void FeatureMatcherCache::MaybeLoadFrames() { std::lock_guard lock(database_mutex_); if (frames_cache_) { return; } std::vector frames = database_->ReadAllFrames(); frames_cache_ = std::make_unique>(); frames_cache_->reserve(frames.size()); for (Frame& frame : frames) { frames_cache_->emplace(frame.FrameId(), std::move(frame)); } } void FeatureMatcherCache::MaybeLoadImages() { MaybeLoadFrames(); std::lock_guard lock(database_mutex_); if (images_cache_) { return; } std::vector images = database_->ReadAllImages(); images_cache_ = std::make_unique>(); images_cache_->reserve(images.size()); for (Image& image : images) { images_cache_->emplace(image.ImageId(), std::move(image)); } } void FeatureMatcherCache::MaybeLoadPosePriors() { MaybeLoadImages(); std::lock_guard lock(database_mutex_); if (pose_priors_cache_) { return; } std::vector pose_priors = database_->ReadAllPosePriors(); pose_priors_cache_ = std::make_unique>(); pose_priors_cache_->reserve(pose_priors.size()); for (PosePrior& pose_prior : pose_priors) { if (pose_prior.corr_data_id.sensor_id.type == SensorType::CAMERA) { const image_t image_id = pose_prior.corr_data_id.id; THROW_CHECK( pose_priors_cache_->emplace(image_id, std::move(pose_prior)).second) << "Duplicate pose prior for image " << image_id; } } } } // namespace colmap colmap-4.1.1/src/colmap/controllers/matcher_cache.h000066400000000000000000000117421522646662000223350ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/feature/index.h" #include "colmap/feature/types.h" #include "colmap/scene/camera.h" #include "colmap/scene/database.h" #include "colmap/scene/image.h" #include "colmap/scene/two_view_geometry.h" #include "colmap/util/cache.h" #include "colmap/util/types.h" #include #include #include #include namespace colmap { // Cache for feature matching to minimize database access during matching. class FeatureMatcherCache { public: FeatureMatcherCache(size_t cache_size, const std::shared_ptr& database); // Executes a function that accesses the database. This function is thread // safe and ensures that only one function can access the database at a time. void AccessDatabase(const std::function& func); const Camera& GetCamera(camera_t camera_id); const Frame& GetFrame(frame_t frame_id); const Image& GetImage(image_t image_id); const PosePrior* FindImagePosePriorOrNull(image_t image_id); std::shared_ptr GetKeypoints(image_t image_id); std::shared_ptr GetDescriptors(image_t image_id); FeatureMatches GetMatches(image_t image_id1, image_t image_id2); TwoViewGeometry GetTwoViewGeometry(image_t image_id1, image_t image_id2); std::vector GetFrameIds(); std::vector GetImageIds(); ThreadSafeLRUCache& GetFeatureDescriptorIndexCache(); bool ExistsKeypoints(image_t image_id); bool ExistsDescriptors(image_t image_id); bool ExistsMatches(image_t image_id1, image_t image_id2); bool ExistsTwoViewGeometry(image_t image_id1, image_t image_id2); bool ExistsInlierMatches(image_t image_id1, image_t image_id2); void UpdateTwoViewGeometry(image_t image_id1, image_t image_id2, const TwoViewGeometry& two_view_geometry); void WriteMatches(image_t image_id1, image_t image_id2, const FeatureMatches& matches); void WriteTwoViewGeometry(image_t image_id1, image_t image_id2, const TwoViewGeometry& two_view_geometry); void DeleteMatches(image_t image_id1, image_t image_id2); void DeleteTwoViewGeometry(image_t image_id1, image_t image_id2); void DeleteInlierMatches(image_t image_id1, image_t image_id2); size_t MaxNumKeypoints(); private: void MaybeLoadCameras(); void MaybeLoadFrames(); void MaybeLoadImages(); void MaybeLoadPosePriors(); const size_t cache_size_; const std::shared_ptr database_; std::mutex database_mutex_; std::unique_ptr> cameras_cache_; std::unique_ptr> frames_cache_; std::unique_ptr> images_cache_; std::unique_ptr> pose_priors_cache_; std::unique_ptr> keypoints_cache_; std::unique_ptr> descriptors_cache_; std::unique_ptr> keypoints_exists_cache_; std::unique_ptr> descriptors_exists_cache_; ThreadSafeLRUCache descriptor_index_cache_; std::optional max_num_keypoints_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/matcher_cache_test.cc000066400000000000000000000304061522646662000235300ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/matcher_cache.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include #include namespace colmap { namespace { struct TestData { std::shared_ptr database; Reconstruction reconstruction; }; TestData CreateTestData(int num_images, bool with_priors = false, int num_cameras_per_rig = 1) { TestData data; const auto test_dir = CreateTestDir(); const auto database_path = test_dir / "database.db"; data.database = Database::Open(database_path); SyntheticDatasetOptions options; options.num_rigs = num_images / num_cameras_per_rig; options.num_cameras_per_rig = num_cameras_per_rig; options.num_frames_per_rig = 1; options.num_points3D = 20; options.num_points2D_without_point3D = 3; options.prior_position = with_priors; SynthesizeDataset(options, &data.reconstruction, data.database.get()); return data; } TEST(FeatureMatcherCache, GetCamera) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector cameras = data.database->ReadAllCameras(); ASSERT_FALSE(cameras.empty()); for (const Camera& camera : cameras) { EXPECT_EQ(cache.GetCamera(camera.camera_id), camera); } } TEST(FeatureMatcherCache, GetFrame) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector frames = data.database->ReadAllFrames(); ASSERT_FALSE(frames.empty()); for (const Frame& frame : frames) { EXPECT_EQ(cache.GetFrame(frame.FrameId()), frame); } } TEST(FeatureMatcherCache, GetImage) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); ASSERT_FALSE(images.empty()); for (const Image& image : images) { EXPECT_EQ(cache.GetImage(image.ImageId()), image); } } TEST(FeatureMatcherCache, GetImageIds) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); std::vector expected_ids; expected_ids.reserve(images.size()); for (const Image& image : images) { expected_ids.push_back(image.ImageId()); } EXPECT_THAT(cache.GetImageIds(), ::testing::UnorderedElementsAreArray(expected_ids)); } TEST(FeatureMatcherCache, GetFrameIds) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector frames = data.database->ReadAllFrames(); std::vector expected_ids; expected_ids.reserve(frames.size()); for (const Frame& frame : frames) { expected_ids.push_back(frame.FrameId()); } EXPECT_THAT(cache.GetFrameIds(), ::testing::UnorderedElementsAreArray(expected_ids)); } TEST(FeatureMatcherCache, FindImagePosePriorOrNullWithPriors) { auto data = CreateTestData(4, /*with_priors=*/true); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); ASSERT_FALSE(images.empty()); for (const Image& image : images) { const PosePrior* prior = cache.FindImagePosePriorOrNull(image.ImageId()); ASSERT_NE(prior, nullptr); EXPECT_TRUE(prior->HasPosition()); } } TEST(FeatureMatcherCache, FindImagePosePriorOrNullWithoutPriors) { auto data = CreateTestData(4, /*with_priors=*/false); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); ASSERT_FALSE(images.empty()); for (const Image& image : images) { const PosePrior* prior = cache.FindImagePosePriorOrNull(image.ImageId()); EXPECT_EQ(prior, nullptr); } } TEST(FeatureMatcherCache, Features) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); ASSERT_FALSE(images.empty()); for (const Image& image : images) { EXPECT_TRUE(cache.ExistsKeypoints(image.ImageId())); EXPECT_TRUE(cache.ExistsDescriptors(image.ImageId())); EXPECT_EQ(*cache.GetKeypoints(image.ImageId()), data.database->ReadKeypoints(image.ImageId())); auto cached_descriptors = cache.GetDescriptors(image.ImageId()); FeatureDescriptors db_descriptors = data.database->ReadDescriptors(image.ImageId()); EXPECT_EQ(cached_descriptors->type, db_descriptors.type); EXPECT_EQ(cached_descriptors->data, db_descriptors.data); } } TEST(FeatureMatcherCache, Matches) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const auto all_matches = data.database->ReadAllMatches(); ASSERT_FALSE(all_matches.empty()); for (const auto& [pair_id, matches] : all_matches) { const auto [image_id1, image_id2] = PairIdToImagePair(pair_id); EXPECT_TRUE(cache.ExistsMatches(image_id1, image_id2)); EXPECT_EQ(cache.GetMatches(image_id1, image_id2), matches); } } TEST(FeatureMatcherCache, TwoViewGeometry) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const auto all_tvg = data.database->ReadTwoViewGeometries(); ASSERT_FALSE(all_tvg.empty()); for (const auto& [pair_id, tvg] : all_tvg) { const auto [image_id1, image_id2] = PairIdToImagePair(pair_id); EXPECT_TRUE(cache.ExistsTwoViewGeometry(image_id1, image_id2)); EXPECT_EQ(cache.ExistsInlierMatches(image_id1, image_id2), !tvg.inlier_matches.empty()); EXPECT_EQ(cache.GetTwoViewGeometry(image_id1, image_id2).inlier_matches, tvg.inlier_matches); } } TEST(FeatureMatcherCache, WriteAndGetMatches) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); ASSERT_GE(images.size(), 2); const image_t id1 = images[0].ImageId(); const image_t id2 = images[1].ImageId(); // Delete existing matches first. cache.DeleteMatches(id1, id2); EXPECT_FALSE(cache.ExistsMatches(id1, id2)); // Write new matches. FeatureMatches matches(5); for (size_t i = 0; i < matches.size(); ++i) { matches[i].point2D_idx1 = i; matches[i].point2D_idx2 = i; } cache.WriteMatches(id1, id2, matches); EXPECT_TRUE(cache.ExistsMatches(id1, id2)); FeatureMatches read_matches = cache.GetMatches(id1, id2); EXPECT_EQ(read_matches.size(), 5); } TEST(FeatureMatcherCache, WriteAndGetTwoViewGeometry) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const std::vector images = data.database->ReadAllImages(); ASSERT_GE(images.size(), 2); const image_t id1 = images[0].ImageId(); const image_t id2 = images[1].ImageId(); // Delete existing two-view geometry first. cache.DeleteTwoViewGeometry(id1, id2); EXPECT_FALSE(cache.ExistsTwoViewGeometry(id1, id2)); // Write new two-view geometry. TwoViewGeometry tvg; tvg.config = TwoViewGeometry::CALIBRATED; tvg.inlier_matches.resize(10); cache.WriteTwoViewGeometry(id1, id2, tvg); EXPECT_TRUE(cache.ExistsTwoViewGeometry(id1, id2)); TwoViewGeometry read_tvg = cache.GetTwoViewGeometry(id1, id2); EXPECT_EQ(read_tvg.config, TwoViewGeometry::CALIBRATED); EXPECT_EQ(read_tvg.inlier_matches.size(), 10); } TEST(FeatureMatcherCache, UpdateTwoViewGeometry) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const auto all_tvg = data.database->ReadTwoViewGeometries(); ASSERT_FALSE(all_tvg.empty()); const auto& [pair_id, original_tvg] = all_tvg.front(); const auto [id1, id2] = PairIdToImagePair(pair_id); TwoViewGeometry updated_tvg; updated_tvg.config = TwoViewGeometry::UNCALIBRATED; updated_tvg.inlier_matches.resize(7); cache.UpdateTwoViewGeometry(id1, id2, updated_tvg); TwoViewGeometry read_tvg = cache.GetTwoViewGeometry(id1, id2); EXPECT_EQ(read_tvg.config, TwoViewGeometry::UNCALIBRATED); EXPECT_EQ(read_tvg.inlier_matches.size(), 7); } TEST(FeatureMatcherCache, DeleteMatches) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const auto all_matches = data.database->ReadAllMatches(); ASSERT_FALSE(all_matches.empty()); const auto& [pair_id, _] = all_matches.front(); const auto [id1, id2] = PairIdToImagePair(pair_id); EXPECT_TRUE(cache.ExistsMatches(id1, id2)); cache.DeleteMatches(id1, id2); EXPECT_FALSE(cache.ExistsMatches(id1, id2)); } TEST(FeatureMatcherCache, DeleteTwoViewGeometry) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const auto all_tvg = data.database->ReadTwoViewGeometries(); ASSERT_FALSE(all_tvg.empty()); const auto& [pair_id, _] = all_tvg.front(); const auto [id1, id2] = PairIdToImagePair(pair_id); EXPECT_TRUE(cache.ExistsTwoViewGeometry(id1, id2)); cache.DeleteTwoViewGeometry(id1, id2); EXPECT_FALSE(cache.ExistsTwoViewGeometry(id1, id2)); } TEST(FeatureMatcherCache, DeleteInlierMatches) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const auto all_tvg = data.database->ReadTwoViewGeometries(); ASSERT_FALSE(all_tvg.empty()); // Find a pair with inlier matches. image_t image_id1 = 0, image_id2 = 0; bool found = false; for (const auto& [pair_id, tvg] : all_tvg) { if (!tvg.inlier_matches.empty()) { std::tie(image_id1, image_id2) = PairIdToImagePair(pair_id); found = true; break; } } ASSERT_TRUE(found); EXPECT_TRUE(cache.ExistsInlierMatches(image_id1, image_id2)); cache.DeleteInlierMatches(image_id1, image_id2); EXPECT_FALSE(cache.ExistsInlierMatches(image_id1, image_id2)); // The two-view geometry entry should still exist. EXPECT_TRUE(cache.ExistsTwoViewGeometry(image_id1, image_id2)); } TEST(FeatureMatcherCache, MaxNumKeypoints) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); const size_t max_num_keypoints = cache.MaxNumKeypoints(); EXPECT_GT(max_num_keypoints, 0); // Calling again should return the cached value. EXPECT_EQ(cache.MaxNumKeypoints(), max_num_keypoints); } TEST(FeatureMatcherCache, AccessDatabase) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); size_t num_images = 0; cache.AccessDatabase([&num_images](Database& database) { num_images = database.ReadAllImages().size(); }); EXPECT_EQ(num_images, 4); } TEST(FeatureMatcherCache, GetFeatureDescriptorIndexCache) { auto data = CreateTestData(4); FeatureMatcherCache cache(5, data.database); auto& index_cache = cache.GetFeatureDescriptorIndexCache(); const std::vector images = data.database->ReadAllImages(); ASSERT_FALSE(images.empty()); // Access descriptor index for the first image to trigger build. auto index = index_cache.Get(images[0].ImageId()); ASSERT_NE(index, nullptr); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/option_manager.cc000066400000000000000000001560531522646662000227340ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/option_manager.h" #include "colmap/controllers/global_pipeline.h" #include "colmap/controllers/image_reader.h" #include "colmap/controllers/incremental_pipeline.h" #include "colmap/controllers/pairing.h" #ifdef CASPAR_ENABLED #include "colmap/estimators/bundle_adjustment_caspar.h" #endif #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/estimators/global_positioning.h" #include "colmap/estimators/gravity_refinement.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/feature/aliked.h" #include "colmap/feature/sift.h" #if defined(COLMAP_MVS_ENABLED) #include "colmap/mvs/advancing_front_meshing.h" #include "colmap/mvs/delaunay_meshing.h" #include "colmap/mvs/fusion.h" #include "colmap/mvs/mesh_simplification.h" #include "colmap/mvs/patch_match_options.h" #include "colmap/mvs/poisson_meshing.h" #include "colmap/mvs/texture_mapping.h" #endif #include "colmap/scene/reconstruction_clustering.h" #include "colmap/ui/render_options.h" #include "colmap/util/file.h" #include "colmap/util/version.h" namespace config = boost::program_options; namespace colmap { OptionManager::OptionManager(bool add_project_options) : BaseOptionManager(add_project_options) { image_reader = std::make_shared(); feature_extraction = std::make_shared(); feature_matching = std::make_shared(); two_view_geometry = std::make_shared(); exhaustive_pairing = std::make_shared(); sequential_pairing = std::make_shared(); vocab_tree_pairing = std::make_shared(); spatial_pairing = std::make_shared(); transitive_pairing = std::make_shared(); imported_pairing = std::make_shared(); bundle_adjustment = std::make_shared(); mapper = std::make_shared(); global_mapper = std::make_shared(); gravity_refiner = std::make_shared(); reconstruction_clusterer = std::make_shared(); #if defined(COLMAP_MVS_ENABLED) patch_match_stereo = std::make_shared(); stereo_fusion = std::make_shared(); poisson_meshing = std::make_shared(); delaunay_meshing = std::make_shared(); advancing_front_meshing = std::make_shared(); mesh_texture_mapping = std::make_shared(); mesh_simplification = std::make_shared(); #endif render = std::make_shared(); } void OptionManager::ModifyForIndividualData() { mapper->min_focal_length_ratio = 0.1; mapper->max_focal_length_ratio = 10; mapper->max_extra_param = std::numeric_limits::max(); } void OptionManager::ModifyForVideoData() { const bool kResetPaths = false; ResetOptions(kResetPaths); mapper->mapper.init_min_tri_angle /= 2; mapper->ba_global_frames_ratio = 1.4; mapper->ba_global_points_ratio = 1.4; mapper->min_focal_length_ratio = 0.1; mapper->max_focal_length_ratio = 10; mapper->max_extra_param = std::numeric_limits::max(); #if defined(COLMAP_MVS_ENABLED) stereo_fusion->min_num_pixels = 15; #endif } void OptionManager::ModifyForInternetData() { #if defined(COLMAP_MVS_ENABLED) stereo_fusion->min_num_pixels = 10; #endif } void OptionManager::ModifyForLowQuality() { feature_extraction->max_image_size = static_cast(0.3125 * feature_extraction->EffMaxImageSize()); feature_extraction->sift->max_num_features = 2048; sequential_pairing->loop_detection_num_images /= 2; vocab_tree_pairing->max_num_features = 256; vocab_tree_pairing->num_images /= 2; mapper->ba_local_max_num_iterations /= 2; mapper->ba_global_max_num_iterations /= 2; mapper->ba_global_frames_ratio *= 1.2; mapper->ba_global_points_ratio *= 1.2; mapper->ba_global_max_refinements = 2; #if defined(COLMAP_MVS_ENABLED) patch_match_stereo->max_image_size = 1000; patch_match_stereo->window_radius = 4; patch_match_stereo->window_step = 2; patch_match_stereo->num_samples /= 2; patch_match_stereo->num_iterations = 3; patch_match_stereo->geom_consistency = false; stereo_fusion->check_num_images /= 2; stereo_fusion->max_image_size = 1000; #endif } void OptionManager::ModifyForMediumQuality() { feature_extraction->max_image_size = static_cast(0.5 * feature_extraction->EffMaxImageSize()); feature_extraction->sift->max_num_features = 4096; sequential_pairing->loop_detection_num_images /= 1.5; vocab_tree_pairing->max_num_features = 1024; vocab_tree_pairing->num_images /= 1.5; mapper->ba_local_max_num_iterations /= 1.5; mapper->ba_global_max_num_iterations /= 1.5; mapper->ba_global_frames_ratio *= 1.1; mapper->ba_global_points_ratio *= 1.1; mapper->ba_global_max_refinements = 2; #if defined(COLMAP_MVS_ENABLED) patch_match_stereo->max_image_size = 1600; patch_match_stereo->window_radius = 4; patch_match_stereo->window_step = 2; patch_match_stereo->num_samples /= 1.5; patch_match_stereo->num_iterations = 5; patch_match_stereo->geom_consistency = false; stereo_fusion->check_num_images /= 1.5; stereo_fusion->max_image_size = 1600; #endif } void OptionManager::ModifyForHighQuality() { feature_extraction->sift->estimate_affine_shape = true; feature_extraction->max_image_size = static_cast(0.75 * feature_extraction->EffMaxImageSize()); feature_extraction->sift->max_num_features = 8192; feature_matching->guided_matching = true; vocab_tree_pairing->max_num_features = 4096; mapper->ba_local_max_num_iterations = 30; mapper->ba_local_max_refinements = 3; mapper->ba_global_max_num_iterations = 75; #if defined(COLMAP_MVS_ENABLED) patch_match_stereo->max_image_size = 2400; stereo_fusion->max_image_size = 2400; #endif } void OptionManager::ModifyForExtremeQuality() { // Most of the options are set to extreme quality by default. feature_extraction->sift->estimate_affine_shape = true; feature_extraction->sift->domain_size_pooling = true; feature_matching->guided_matching = true; mapper->ba_local_max_num_iterations = 40; mapper->ba_local_max_refinements = 3; mapper->ba_global_max_num_iterations = 100; } void OptionManager::AddAllOptions() { BaseOptionManager::AddAllOptions(); AddFeatureExtractionOptions(); AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddExhaustivePairingOptions(); AddSequentialPairingOptions(); AddVocabTreePairingOptions(); AddSpatialPairingOptions(); AddTransitivePairingOptions(); AddImportedPairingOptions(); AddBundleAdjustmentOptions(); AddMapperOptions(); #if defined(COLMAP_MVS_ENABLED) AddPatchMatchStereoOptions(); AddStereoFusionOptions(); AddPoissonMeshingOptions(); AddDelaunayMeshingOptions(); AddAdvancingFrontMeshingOptions(); AddMeshTextureMappingOptions(); AddMeshSimplificationOptions(); #endif AddRenderOptions(); } void OptionManager::AddFeatureExtractionOptions() { if (added_feature_extraction_options_) { return; } added_feature_extraction_options_ = true; AddDefaultOption("ImageReader.mask_path", &image_reader->mask_path); AddDefaultOption("ImageReader.camera_model", &image_reader->camera_model); AddDefaultOption("ImageReader.single_camera", &image_reader->single_camera); AddDefaultOption("ImageReader.single_camera_per_folder", &image_reader->single_camera_per_folder); AddDefaultOption("ImageReader.single_camera_per_image", &image_reader->single_camera_per_image); AddDefaultOption("ImageReader.existing_camera_id", &image_reader->existing_camera_id); AddDefaultOption("ImageReader.camera_params", &image_reader->camera_params); AddDefaultOption("ImageReader.default_focal_length_factor", &image_reader->default_focal_length_factor); AddDefaultOption("ImageReader.camera_mask_path", &image_reader->camera_mask_path); AddDefaultEnumOption("FeatureExtraction.type", &feature_extraction->type, FeatureExtractorTypeToString, FeatureExtractorTypeFromString); AddDefaultOption("FeatureExtraction.num_threads", &feature_extraction->num_threads); AddDefaultOption("FeatureExtraction.use_gpu", &feature_extraction->use_gpu); AddDefaultOption("FeatureExtraction.gpu_index", &feature_extraction->gpu_index); AddDefaultOption("FeatureExtraction.max_image_size", &feature_extraction->max_image_size); AddDefaultOption("SiftExtraction.max_num_features", &feature_extraction->sift->max_num_features); AddDefaultOption("SiftExtraction.first_octave", &feature_extraction->sift->first_octave); AddDefaultOption("SiftExtraction.num_octaves", &feature_extraction->sift->num_octaves); AddDefaultOption("SiftExtraction.octave_resolution", &feature_extraction->sift->octave_resolution); AddDefaultOption("SiftExtraction.peak_threshold", &feature_extraction->sift->peak_threshold); AddDefaultOption("SiftExtraction.edge_threshold", &feature_extraction->sift->edge_threshold); AddDefaultOption("SiftExtraction.estimate_affine_shape", &feature_extraction->sift->estimate_affine_shape); AddDefaultOption("SiftExtraction.max_num_orientations", &feature_extraction->sift->max_num_orientations); AddDefaultOption("SiftExtraction.upright", &feature_extraction->sift->upright); AddDefaultOption("SiftExtraction.domain_size_pooling", &feature_extraction->sift->domain_size_pooling); AddDefaultOption("SiftExtraction.dsp_min_scale", &feature_extraction->sift->dsp_min_scale); AddDefaultOption("SiftExtraction.dsp_max_scale", &feature_extraction->sift->dsp_max_scale); AddDefaultOption("SiftExtraction.dsp_num_scales", &feature_extraction->sift->dsp_num_scales); AddDefaultOption("AlikedExtraction.max_num_features", &feature_extraction->aliked->max_num_features); AddDefaultOption("AlikedExtraction.min_score", &feature_extraction->aliked->min_score); AddDefaultOption("AlikedExtraction.n16rot_model_path", &feature_extraction->aliked->n16rot_model_path); AddDefaultOption("AlikedExtraction.n32_model_path", &feature_extraction->aliked->n32_model_path); } void OptionManager::AddFeatureMatchingOptions() { if (added_feature_matching_options_) { return; } added_feature_matching_options_ = true; AddDefaultEnumOption("FeatureMatching.type", &feature_matching->type, FeatureMatcherTypeToString, FeatureMatcherTypeFromString); AddDefaultOption("FeatureMatching.num_threads", &feature_matching->num_threads); AddDefaultOption("FeatureMatching.use_gpu", &feature_matching->use_gpu); AddDefaultOption("FeatureMatching.gpu_index", &feature_matching->gpu_index); AddDefaultOption("FeatureMatching.guided_matching", &feature_matching->guided_matching); AddDefaultOption("FeatureMatching.skip_geometric_verification", &feature_matching->skip_geometric_verification); AddDefaultOption("FeatureMatching.rig_verification", &feature_matching->rig_verification); AddDefaultOption("FeatureMatching.skip_image_pairs_in_same_frame", &feature_matching->skip_image_pairs_in_same_frame); AddDefaultOption("FeatureMatching.max_num_matches", &feature_matching->max_num_matches); AddDefaultOption("SiftMatching.max_ratio", &feature_matching->sift->max_ratio); AddDefaultOption("SiftMatching.max_distance", &feature_matching->sift->max_distance); AddDefaultOption("SiftMatching.cross_check", &feature_matching->sift->cross_check); AddDefaultOption("SiftMatching.cpu_brute_force_matcher", &feature_matching->sift->cpu_brute_force_matcher); AddDefaultOption("SiftMatching.lightglue_min_score", &feature_matching->sift->lightglue.min_score); AddDefaultOption("SiftMatching.lightglue_model_path", &feature_matching->sift->lightglue.model_path); AddDefaultOption("AlikedMatching.brute_force_min_cossim", &feature_matching->aliked->brute_force.min_cossim); AddDefaultOption("AlikedMatching.brute_force_max_ratio", &feature_matching->aliked->brute_force.max_ratio); AddDefaultOption("AlikedMatching.brute_force_cross_check", &feature_matching->aliked->brute_force.cross_check); AddDefaultOption("AlikedMatching.bruteforce_model_path", &feature_matching->aliked->brute_force.model_path); AddDefaultOption("AlikedMatching.lightglue_min_score", &feature_matching->aliked->lightglue.min_score); AddDefaultOption("AlikedMatching.lightglue_model_path", &feature_matching->aliked->lightglue.model_path); } void OptionManager::AddTwoViewGeometryOptions() { if (added_two_view_geometry_options_) { return; } added_two_view_geometry_options_ = true; AddDefaultOption("TwoViewGeometry.min_num_inliers", &two_view_geometry->min_num_inliers); AddDefaultOption("TwoViewGeometry.multiple_models", &two_view_geometry->multiple_models); AddDefaultOption("TwoViewGeometry.compute_relative_pose", &two_view_geometry->compute_relative_pose); AddDefaultOption("TwoViewGeometry.detect_watermark", &two_view_geometry->detect_watermark); AddDefaultOption("TwoViewGeometry.multiple_ignore_watermark", &two_view_geometry->multiple_ignore_watermark); AddDefaultOption("TwoViewGeometry.watermark_detection_max_error", &two_view_geometry->watermark_detection_max_error); AddDefaultOption("TwoViewGeometry.filter_stationary_matches", &two_view_geometry->filter_stationary_matches); AddDefaultOption("TwoViewGeometry.stationary_matches_max_error", &two_view_geometry->stationary_matches_max_error); AddDefaultOption("TwoViewGeometry.max_error", &two_view_geometry->ransac_options.max_error); AddDefaultOption("TwoViewGeometry.confidence", &two_view_geometry->ransac_options.confidence); AddDefaultOption("TwoViewGeometry.max_num_trials", &two_view_geometry->ransac_options.max_num_trials); AddDefaultOption("TwoViewGeometry.min_inlier_ratio", &two_view_geometry->ransac_options.min_inlier_ratio); AddDefaultOption("TwoViewGeometry.random_seed", &two_view_geometry->ransac_options.random_seed); } void OptionManager::AddExhaustivePairingOptions() { if (added_exhaustive_pairing_options_) { return; } added_exhaustive_pairing_options_ = true; AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddDefaultOption("ExhaustiveMatching.block_size", &exhaustive_pairing->block_size); } void OptionManager::AddSequentialPairingOptions() { if (added_sequential_pairing_options_) { return; } added_sequential_pairing_options_ = true; AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddDefaultOption("SequentialMatching.overlap", &sequential_pairing->overlap); AddDefaultOption("SequentialMatching.quadratic_overlap", &sequential_pairing->quadratic_overlap); AddDefaultOption("SequentialMatching.expand_rig_images", &sequential_pairing->expand_rig_images); AddDefaultOption("SequentialMatching.loop_detection", &sequential_pairing->loop_detection); AddDefaultOption("SequentialMatching.loop_detection_period", &sequential_pairing->loop_detection_period); AddDefaultOption("SequentialMatching.loop_detection_num_images", &sequential_pairing->loop_detection_num_images); AddDefaultOption("SequentialMatching.loop_detection_num_nearest_neighbors", &sequential_pairing->loop_detection_num_nearest_neighbors); AddDefaultOption("SequentialMatching.loop_detection_num_checks", &sequential_pairing->loop_detection_num_checks); AddDefaultOption( "SequentialMatching.loop_detection_num_images_after_verification", &sequential_pairing->loop_detection_num_images_after_verification); AddDefaultOption("SequentialMatching.loop_detection_max_num_features", &sequential_pairing->loop_detection_max_num_features); AddDefaultOption("SequentialMatching.vocab_tree_path", &sequential_pairing->vocab_tree_path); AddDefaultOption("SequentialMatching.num_threads", &sequential_pairing->num_threads); } void OptionManager::AddVocabTreePairingOptions() { if (added_vocab_tree_pairing_options_) { return; } added_vocab_tree_pairing_options_ = true; AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddDefaultOption("VocabTreeMatching.num_images", &vocab_tree_pairing->num_images); AddDefaultOption("VocabTreeMatching.num_nearest_neighbors", &vocab_tree_pairing->num_nearest_neighbors); AddDefaultOption("VocabTreeMatching.num_checks", &vocab_tree_pairing->num_checks); AddDefaultOption("VocabTreeMatching.num_images_after_verification", &vocab_tree_pairing->num_images_after_verification); AddDefaultOption("VocabTreeMatching.max_num_features", &vocab_tree_pairing->max_num_features); AddDefaultOption("VocabTreeMatching.vocab_tree_path", &vocab_tree_pairing->vocab_tree_path); AddDefaultOption("VocabTreeMatching.match_list_path", &vocab_tree_pairing->match_list_path); AddDefaultOption("VocabTreeMatching.num_threads", &vocab_tree_pairing->num_threads); } void OptionManager::AddSpatialPairingOptions() { if (added_spatial_pairing_options_) { return; } added_spatial_pairing_options_ = true; AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddDefaultOption("SpatialMatching.ignore_z", &spatial_pairing->ignore_z); AddDefaultOption("SpatialMatching.max_num_neighbors", &spatial_pairing->max_num_neighbors); AddDefaultOption("SpatialMatching.min_num_neighbors", &spatial_pairing->min_num_neighbors); AddDefaultOption("SpatialMatching.max_distance", &spatial_pairing->max_distance); } void OptionManager::AddTransitivePairingOptions() { if (added_transitive_pairing_options_) { return; } added_transitive_pairing_options_ = true; AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddDefaultOption("TransitiveMatching.batch_size", &transitive_pairing->batch_size); AddDefaultOption("TransitiveMatching.num_iterations", &transitive_pairing->num_iterations); } void OptionManager::AddImportedPairingOptions() { if (added_image_pairs_pairing_options_) { return; } added_image_pairs_pairing_options_ = true; AddFeatureMatchingOptions(); AddTwoViewGeometryOptions(); AddDefaultOption("ImagePairsMatching.block_size", &imported_pairing->block_size); } void OptionManager::AddBundleAdjustmentOptions() { if (added_ba_options_) { return; } added_ba_options_ = true; // Solver-agnostic options AddDefaultOption("BundleAdjustment.refine_focal_length", &bundle_adjustment->refine_focal_length); AddDefaultOption("BundleAdjustment.refine_principal_point", &bundle_adjustment->refine_principal_point); AddDefaultOption("BundleAdjustment.refine_extra_params", &bundle_adjustment->refine_extra_params); AddDefaultOption("BundleAdjustment.refine_rig_from_world", &bundle_adjustment->refine_rig_from_world); AddDefaultOption("BundleAdjustment.refine_sensor_from_rig", &bundle_adjustment->refine_sensor_from_rig); AddDefaultOption("BundleAdjustment.refine_points3D", &bundle_adjustment->refine_points3D); AddDefaultOption("BundleAdjustment.constant_rig_from_world_rotation", &bundle_adjustment->constant_rig_from_world_rotation); AddDefaultOption("BundleAdjustment.min_track_length", &bundle_adjustment->min_track_length); AddDefaultEnumOption("BundleAdjustment.backend", &bundle_adjustment->backend, BundleAdjustmentBackendToString, BundleAdjustmentBackendFromString); // Ceres-specific options AddDefaultOption( "BundleAdjustmentCeres.max_num_iterations", &bundle_adjustment->ceres->solver_options.max_num_iterations); AddDefaultOption( "BundleAdjustmentCeres.max_linear_solver_iterations", &bundle_adjustment->ceres->solver_options.max_linear_solver_iterations); AddDefaultOption( "BundleAdjustmentCeres.function_tolerance", &bundle_adjustment->ceres->solver_options.function_tolerance); AddDefaultOption( "BundleAdjustmentCeres.gradient_tolerance", &bundle_adjustment->ceres->solver_options.gradient_tolerance); AddDefaultOption( "BundleAdjustmentCeres.parameter_tolerance", &bundle_adjustment->ceres->solver_options.parameter_tolerance); AddDefaultOption("BundleAdjustmentCeres.use_gpu", &bundle_adjustment->ceres->use_gpu); AddDefaultOption("BundleAdjustmentCeres.gpu_index", &bundle_adjustment->ceres->gpu_index); AddDefaultOption("BundleAdjustmentCeres.min_num_images_gpu_solver", &bundle_adjustment->ceres->min_num_images_gpu_solver); AddDefaultOption( "BundleAdjustmentCeres.min_num_residuals_for_cpu_multi_threading", &bundle_adjustment->ceres->min_num_residuals_for_cpu_multi_threading); AddDefaultOption( "BundleAdjustmentCeres.max_num_images_direct_dense_cpu_solver", &bundle_adjustment->ceres->max_num_images_direct_dense_cpu_solver); AddDefaultOption( "BundleAdjustmentCeres.max_num_images_direct_sparse_cpu_solver", &bundle_adjustment->ceres->max_num_images_direct_sparse_cpu_solver); AddDefaultOption( "BundleAdjustmentCeres.max_num_images_direct_dense_gpu_solver", &bundle_adjustment->ceres->max_num_images_direct_dense_gpu_solver); AddDefaultOption( "BundleAdjustmentCeres.max_num_images_direct_sparse_gpu_solver", &bundle_adjustment->ceres->max_num_images_direct_sparse_gpu_solver); #ifdef CASPAR_ENABLED // Caspar-specific options AddDefaultOption("BundleAdjustmentCaspar.solver_iter_max", &bundle_adjustment->caspar->solver_iter_max); AddDefaultOption("BundleAdjustmentCaspar.pcg_iter_max", &bundle_adjustment->caspar->pcg_iter_max); AddDefaultOption("BundleAdjustmentCaspar.diag_init", &bundle_adjustment->caspar->diag_init); AddDefaultOption("BundleAdjustmentCaspar.diag_min", &bundle_adjustment->caspar->diag_min); AddDefaultOption("BundleAdjustmentCaspar.diag_scaling_up", &bundle_adjustment->caspar->diag_scaling_up); AddDefaultOption("BundleAdjustmentCaspar.diag_scaling_down", &bundle_adjustment->caspar->diag_scaling_down); AddDefaultOption("BundleAdjustmentCaspar.diag_exit_value", &bundle_adjustment->caspar->diag_exit_value); AddDefaultOption("BundleAdjustmentCaspar.score_exit_value", &bundle_adjustment->caspar->score_exit_value); AddDefaultOption("BundleAdjustmentCaspar.pcg_rel_error_exit", &bundle_adjustment->caspar->pcg_rel_error_exit); AddDefaultOption("BundleAdjustmentCaspar.pcg_rel_score_exit", &bundle_adjustment->caspar->pcg_rel_score_exit); AddDefaultOption("BundleAdjustmentCaspar.pcg_rel_decrease_min", &bundle_adjustment->caspar->pcg_rel_decrease_min); AddDefaultOption("BundleAdjustmentCaspar.solver_rel_decrease_min", &bundle_adjustment->caspar->solver_rel_decrease_min); AddDefaultOption("BundleAdjustmentCaspar.gpu_index", &bundle_adjustment->caspar->gpu_index); #endif // CASPAR_ENABLED } void OptionManager::AddMapperOptions() { if (added_mapper_options_) { return; } added_mapper_options_ = true; AddDefaultOption("Mapper.min_num_matches", &mapper->min_num_matches); AddDefaultOption("Mapper.ignore_watermarks", &mapper->ignore_watermarks); AddDefaultOption("Mapper.multiple_models", &mapper->multiple_models); AddDefaultOption("Mapper.max_num_models", &mapper->max_num_models); AddDefaultOption("Mapper.max_model_overlap", &mapper->max_model_overlap); AddDefaultOption("Mapper.min_model_size", &mapper->min_model_size); AddDefaultOption("Mapper.init_image_id1", &mapper->init_image_id1); AddDefaultOption("Mapper.init_image_id2", &mapper->init_image_id2); AddDefaultOption("Mapper.init_num_trials", &mapper->init_num_trials); AddDefaultOption("Mapper.structure_less_registration_fallback", &mapper->structure_less_registration_fallback); AddDefaultOption("Mapper.structure_less_registration_only", &mapper->structure_less_registration_only); AddDefaultOption("Mapper.extract_colors", &mapper->extract_colors); AddDefaultOption("Mapper.num_threads", &mapper->num_threads); AddDefaultOption("Mapper.random_seed", &mapper->random_seed); AddDefaultOption("Mapper.min_focal_length_ratio", &mapper->min_focal_length_ratio); AddDefaultOption("Mapper.max_focal_length_ratio", &mapper->max_focal_length_ratio); AddDefaultOption("Mapper.max_extra_param", &mapper->max_extra_param); AddDefaultOption("Mapper.ba_refine_focal_length", &mapper->ba_refine_focal_length); AddDefaultOption("Mapper.ba_refine_principal_point", &mapper->ba_refine_principal_point); AddDefaultOption("Mapper.ba_refine_extra_params", &mapper->ba_refine_extra_params); AddDefaultOption("Mapper.ba_refine_sensor_from_rig", &mapper->ba_refine_sensor_from_rig); AddDefaultOption("Mapper.ba_local_function_tolerance", &mapper->ba_local_function_tolerance); AddDefaultOption("Mapper.ba_local_max_num_iterations", &mapper->ba_local_max_num_iterations); AddDefaultOption("Mapper.ba_global_frames_ratio", &mapper->ba_global_frames_ratio); AddDefaultOption("Mapper.ba_global_points_ratio", &mapper->ba_global_points_ratio); AddDefaultOption("Mapper.ba_global_frames_freq", &mapper->ba_global_frames_freq); AddDefaultOption("Mapper.ba_global_points_freq", &mapper->ba_global_points_freq); AddDefaultOption("Mapper.ba_global_function_tolerance", &mapper->ba_global_function_tolerance); AddDefaultOption("Mapper.ba_global_max_num_iterations", &mapper->ba_global_max_num_iterations); AddDefaultOption("Mapper.ba_global_max_refinements", &mapper->ba_global_max_refinements); AddDefaultOption("Mapper.ba_global_max_refinement_change", &mapper->ba_global_max_refinement_change); AddDefaultOption("Mapper.ba_local_max_refinements", &mapper->ba_local_max_refinements); AddDefaultOption("Mapper.ba_local_max_refinement_change", &mapper->ba_local_max_refinement_change); AddDefaultOption("Mapper.ba_use_gpu", &mapper->ba_use_gpu); AddDefaultOption("Mapper.ba_gpu_index", &mapper->ba_gpu_index); AddDefaultEnumOption("Mapper.ba_local_backend", &mapper->ba_local_backend, BundleAdjustmentBackendToString, BundleAdjustmentBackendFromString); AddDefaultEnumOption("Mapper.ba_global_backend", &mapper->ba_global_backend, BundleAdjustmentBackendToString, BundleAdjustmentBackendFromString); AddDefaultOption("Mapper.ba_min_num_residuals_for_cpu_multi_threading", &mapper->ba_min_num_residuals_for_cpu_multi_threading); AddDefaultOption("Mapper.snapshot_path", &mapper->snapshot_path); AddDefaultOption("Mapper.snapshot_frames_freq", &mapper->snapshot_frames_freq); AddDefaultOption("Mapper.fix_existing_frames", &mapper->fix_existing_frames); // IncrementalMapper. AddDefaultOption("Mapper.init_min_num_inliers", &mapper->mapper.init_min_num_inliers); AddDefaultOption("Mapper.init_max_error", &mapper->mapper.init_max_error); AddDefaultOption("Mapper.init_max_forward_motion", &mapper->mapper.init_max_forward_motion); AddDefaultOption("Mapper.init_min_tri_angle", &mapper->mapper.init_min_tri_angle); AddDefaultOption("Mapper.init_max_reg_trials", &mapper->mapper.init_max_reg_trials); AddDefaultOption("Mapper.abs_pose_max_error", &mapper->mapper.abs_pose_max_error); AddDefaultOption("Mapper.abs_pose_min_num_inliers", &mapper->mapper.abs_pose_min_num_inliers); AddDefaultOption("Mapper.abs_pose_min_inlier_ratio", &mapper->mapper.abs_pose_min_inlier_ratio); AddDefaultOption("Mapper.filter_max_reproj_error", &mapper->mapper.filter_max_reproj_error); AddDefaultOption("Mapper.filter_min_tri_angle", &mapper->mapper.filter_min_tri_angle); AddDefaultOption("Mapper.max_reg_trials", &mapper->mapper.max_reg_trials); AddDefaultOption("Mapper.ba_local_num_images", &mapper->mapper.ba_local_num_images); AddDefaultOption("Mapper.ba_local_min_tri_angle", &mapper->mapper.ba_local_min_tri_angle); AddDefaultOption("Mapper.ba_global_ignore_redundant_points3D", &mapper->mapper.ba_global_ignore_redundant_points3D); AddDefaultOption( "Mapper.ba_global_ignore_redundant_points3D_min_coverage_gain", &mapper->mapper.ba_global_ignore_redundant_points3D_min_coverage_gain); AddDefaultOption("Mapper.image_list_path", &mapper_image_list_path_); AddDefaultOption("Mapper.constant_rig_list_path", &mapper_constant_rig_list_path_); AddDefaultOption("Mapper.constant_camera_list_path", &mapper_constant_camera_list_path_); AddDefaultOption("Mapper.max_runtime_seconds", &mapper->max_runtime_seconds); // IncrementalTriangulator. AddDefaultOption("Mapper.tri_max_transitivity", &mapper->triangulation.max_transitivity); AddDefaultOption("Mapper.tri_create_max_angle_error", &mapper->triangulation.create_max_angle_error); AddDefaultOption("Mapper.tri_continue_max_angle_error", &mapper->triangulation.continue_max_angle_error); AddDefaultOption("Mapper.tri_merge_max_reproj_error", &mapper->triangulation.merge_max_reproj_error); AddDefaultOption("Mapper.tri_complete_max_reproj_error", &mapper->triangulation.complete_max_reproj_error); AddDefaultOption("Mapper.tri_complete_max_transitivity", &mapper->triangulation.complete_max_transitivity); AddDefaultOption("Mapper.tri_re_max_angle_error", &mapper->triangulation.re_max_angle_error); AddDefaultOption("Mapper.tri_re_min_ratio", &mapper->triangulation.re_min_ratio); AddDefaultOption("Mapper.tri_re_max_trials", &mapper->triangulation.re_max_trials); AddDefaultOption("Mapper.tri_min_angle", &mapper->triangulation.min_angle); AddDefaultOption("Mapper.tri_ignore_two_view_tracks", &mapper->triangulation.ignore_two_view_tracks); } void OptionManager::AddGlobalMapperOptions() { if (added_global_mapper_options_) { return; } added_global_mapper_options_ = true; // Global mapper options. AddDefaultOption("GlobalMapper.image_list_path", &global_mapper_image_list_path_); AddDefaultOption("GlobalMapper.min_num_matches", &global_mapper->min_num_matches); AddDefaultOption("GlobalMapper.ignore_watermarks", &global_mapper->ignore_watermarks); AddDefaultOption("GlobalMapper.num_threads", &global_mapper->num_threads); AddDefaultOption("GlobalMapper.random_seed", &global_mapper->random_seed); AddDefaultOption("GlobalMapper.decompose_relative_pose", &global_mapper->decompose_relative_pose); AddDefaultOption("GlobalMapper.ba_num_iterations", &global_mapper->mapper.ba_num_iterations); AddDefaultOption("GlobalMapper.skip_rotation_averaging", &global_mapper->mapper.skip_rotation_averaging); AddDefaultOption("GlobalMapper.skip_track_establishment", &global_mapper->mapper.skip_track_establishment); AddDefaultOption("GlobalMapper.skip_global_positioning", &global_mapper->mapper.skip_global_positioning); AddDefaultOption("GlobalMapper.skip_bundle_adjustment", &global_mapper->mapper.skip_bundle_adjustment); AddDefaultOption("GlobalMapper.skip_retriangulation", &global_mapper->mapper.skip_retriangulation); // Track establishment options. AddDefaultOption( "GlobalMapper.track_intra_image_consistency_threshold", &global_mapper->mapper.track_intra_image_consistency_threshold); AddDefaultOption("GlobalMapper.track_required_tracks_per_view", &global_mapper->mapper.track_required_tracks_per_view); AddDefaultOption("GlobalMapper.track_min_num_views_per_track", &global_mapper->mapper.track_min_num_views_per_track); AddDefaultOption("GlobalMapper.keep_max_num_tracks", &global_mapper->mapper.keep_max_num_tracks); // Global positioning options. AddDefaultOption("GlobalMapper.gp_use_gpu", &global_mapper->mapper.global_positioning.use_gpu); AddDefaultOption("GlobalMapper.gp_gpu_index", &global_mapper->mapper.global_positioning.gpu_index); AddDefaultOption( "GlobalMapper.gp_optimize_positions", &global_mapper->mapper.global_positioning.optimize_positions); AddDefaultOption("GlobalMapper.gp_optimize_points", &global_mapper->mapper.global_positioning.optimize_points); AddDefaultOption("GlobalMapper.gp_optimize_scales", &global_mapper->mapper.global_positioning.optimize_scales); AddDefaultOption( "GlobalMapper.gp_loss_function_scale", &global_mapper->mapper.global_positioning.loss_function_scale); AddDefaultOption("GlobalMapper.gp_max_num_iterations", &global_mapper->mapper.global_positioning.solver_options .max_num_iterations); // Bundle adjustment options (solver-agnostic). AddDefaultOption( "GlobalMapper.ba_refine_focal_length", &global_mapper->mapper.bundle_adjustment.refine_focal_length); AddDefaultOption( "GlobalMapper.ba_refine_principal_point", &global_mapper->mapper.bundle_adjustment.refine_principal_point); AddDefaultOption( "GlobalMapper.ba_refine_extra_params", &global_mapper->mapper.bundle_adjustment.refine_extra_params); AddDefaultOption("GlobalMapper.refine_sensor_from_rig", &global_mapper->mapper.refine_sensor_from_rig); AddDefaultOption( "GlobalMapper.ba_refine_rig_from_world", &global_mapper->mapper.bundle_adjustment.refine_rig_from_world); AddDefaultOption("GlobalMapper.ba_refine_points3D", &global_mapper->mapper.bundle_adjustment.refine_points3D); AddDefaultOption("GlobalMapper.ba_min_track_length", &global_mapper->mapper.bundle_adjustment.min_track_length); // Bundle adjustment options (Ceres-specific). AddDefaultOption("GlobalMapper.ba_ceres_use_gpu", &global_mapper->mapper.bundle_adjustment.ceres->use_gpu); AddDefaultOption("GlobalMapper.ba_ceres_gpu_index", &global_mapper->mapper.bundle_adjustment.ceres->gpu_index); AddDefaultOption( "GlobalMapper.ba_ceres_loss_function_scale", &global_mapper->mapper.bundle_adjustment.ceres->loss_function_scale); AddDefaultOption("GlobalMapper.ba_ceres_max_num_iterations", &global_mapper->mapper.bundle_adjustment.ceres ->solver_options.max_num_iterations); AddDefaultOption("GlobalMapper.ba_skip_fixed_rotation_stage", &global_mapper->mapper.ba_skip_fixed_rotation_stage); AddDefaultOption("GlobalMapper.ba_skip_joint_optimization_stage", &global_mapper->mapper.ba_skip_joint_optimization_stage); // Retriangulation options. AddDefaultOption( "GlobalMapper.tri_complete_max_reproj_error", &global_mapper->mapper.retriangulation.complete_max_reproj_error); AddDefaultOption( "GlobalMapper.tri_merge_max_reproj_error", &global_mapper->mapper.retriangulation.merge_max_reproj_error); AddDefaultOption("GlobalMapper.tri_min_angle", &global_mapper->mapper.retriangulation.min_angle); // Rotation averaging options. AddDefaultOption("GlobalMapper.ra_use_gravity", &global_mapper->mapper.rotation_averaging.use_gravity); AddDefaultOption("GlobalMapper.ra_use_stratified", &global_mapper->mapper.rotation_averaging.use_stratified); AddDefaultOption( "GlobalMapper.ra_max_rotation_error_deg", &global_mapper->mapper.rotation_averaging.max_rotation_error_deg); // Threshold options. AddDefaultOption("GlobalMapper.max_angular_reproj_error_deg", &global_mapper->mapper.max_angular_reproj_error_deg); AddDefaultOption("GlobalMapper.max_normalized_reproj_error", &global_mapper->mapper.max_normalized_reproj_error); AddDefaultOption("GlobalMapper.min_tri_angle_deg", &global_mapper->mapper.min_tri_angle_deg); } void OptionManager::AddGravityRefinerOptions() { if (added_gravity_refiner_options_) { return; } added_gravity_refiner_options_ = true; AddDefaultOption("GravityRefiner.max_outlier_ratio", &gravity_refiner->max_outlier_ratio); AddDefaultOption("GravityRefiner.max_gravity_error", &gravity_refiner->max_gravity_error); AddDefaultOption("GravityRefiner.min_num_neighbors", &gravity_refiner->min_num_neighbors); } void OptionManager::AddReconstructionClustererOptions() { if (added_reconstruction_clusterer_options_) { return; } added_reconstruction_clusterer_options_ = true; AddDefaultOption("ReconstructionClusterer.min_covisibility_count", &reconstruction_clusterer->min_covisibility_count); AddDefaultOption("ReconstructionClusterer.min_edge_weight_threshold", &reconstruction_clusterer->min_edge_weight_threshold); AddDefaultOption("ReconstructionClusterer.min_num_reg_frames", &reconstruction_clusterer->min_num_reg_frames); } #if defined(COLMAP_MVS_ENABLED) void OptionManager::AddPatchMatchStereoOptions() { if (added_patch_match_stereo_options_) { return; } added_patch_match_stereo_options_ = true; AddDefaultOption("PatchMatchStereo.max_image_size", &patch_match_stereo->max_image_size); AddDefaultOption("PatchMatchStereo.gpu_index", &patch_match_stereo->gpu_index); AddDefaultOption("PatchMatchStereo.depth_min", &patch_match_stereo->depth_min); AddDefaultOption("PatchMatchStereo.depth_max", &patch_match_stereo->depth_max); AddDefaultOption("PatchMatchStereo.window_radius", &patch_match_stereo->window_radius); AddDefaultOption("PatchMatchStereo.window_step", &patch_match_stereo->window_step); AddDefaultOption("PatchMatchStereo.sigma_spatial", &patch_match_stereo->sigma_spatial); AddDefaultOption("PatchMatchStereo.sigma_color", &patch_match_stereo->sigma_color); AddDefaultOption("PatchMatchStereo.num_samples", &patch_match_stereo->num_samples); AddDefaultOption("PatchMatchStereo.ncc_sigma", &patch_match_stereo->ncc_sigma); AddDefaultOption("PatchMatchStereo.min_triangulation_angle", &patch_match_stereo->min_triangulation_angle); AddDefaultOption("PatchMatchStereo.incident_angle_sigma", &patch_match_stereo->incident_angle_sigma); AddDefaultOption("PatchMatchStereo.num_iterations", &patch_match_stereo->num_iterations); AddDefaultOption("PatchMatchStereo.geom_consistency", &patch_match_stereo->geom_consistency); AddDefaultOption("PatchMatchStereo.geom_consistency_regularizer", &patch_match_stereo->geom_consistency_regularizer); AddDefaultOption("PatchMatchStereo.geom_consistency_max_cost", &patch_match_stereo->geom_consistency_max_cost); AddDefaultOption("PatchMatchStereo.filter", &patch_match_stereo->filter); AddDefaultOption("PatchMatchStereo.filter_min_ncc", &patch_match_stereo->filter_min_ncc); AddDefaultOption("PatchMatchStereo.filter_min_triangulation_angle", &patch_match_stereo->filter_min_triangulation_angle); AddDefaultOption("PatchMatchStereo.filter_min_num_consistent", &patch_match_stereo->filter_min_num_consistent); AddDefaultOption("PatchMatchStereo.filter_geom_consistency_max_cost", &patch_match_stereo->filter_geom_consistency_max_cost); AddDefaultOption("PatchMatchStereo.cache_size", &patch_match_stereo->cache_size); AddDefaultOption("PatchMatchStereo.allow_missing_files", &patch_match_stereo->allow_missing_files); AddDefaultOption("PatchMatchStereo.write_consistency_graph", &patch_match_stereo->write_consistency_graph); AddDefaultOption("PatchMatchStereo.num_threads", &patch_match_stereo->num_threads); } void OptionManager::AddStereoFusionOptions() { if (added_stereo_fusion_options_) { return; } added_stereo_fusion_options_ = true; AddDefaultOption("StereoFusion.mask_path", &stereo_fusion->mask_path); AddDefaultOption("StereoFusion.num_threads", &stereo_fusion->num_threads); AddDefaultOption("StereoFusion.max_image_size", &stereo_fusion->max_image_size); AddDefaultOption("StereoFusion.min_num_pixels", &stereo_fusion->min_num_pixels); AddDefaultOption("StereoFusion.max_num_pixels", &stereo_fusion->max_num_pixels); AddDefaultOption("StereoFusion.max_traversal_depth", &stereo_fusion->max_traversal_depth); AddDefaultOption("StereoFusion.max_reproj_error", &stereo_fusion->max_reproj_error); AddDefaultOption("StereoFusion.max_depth_error", &stereo_fusion->max_depth_error); AddDefaultOption("StereoFusion.max_normal_error", &stereo_fusion->max_normal_error); AddDefaultOption("StereoFusion.check_num_images", &stereo_fusion->check_num_images); AddDefaultOption("StereoFusion.cache_size", &stereo_fusion->cache_size); AddDefaultOption("StereoFusion.use_cache", &stereo_fusion->use_cache); } void OptionManager::AddPoissonMeshingOptions() { if (added_poisson_meshing_options_) { return; } added_poisson_meshing_options_ = true; AddDefaultOption("PoissonMeshing.point_weight", &poisson_meshing->point_weight); AddDefaultOption("PoissonMeshing.depth", &poisson_meshing->depth); AddDefaultOption("PoissonMeshing.color", &poisson_meshing->color); AddDefaultOption("PoissonMeshing.trim", &poisson_meshing->trim); AddDefaultOption("PoissonMeshing.num_threads", &poisson_meshing->num_threads); } void OptionManager::AddDelaunayMeshingOptions() { if (added_delaunay_meshing_options_) { return; } added_delaunay_meshing_options_ = true; AddDefaultOption("DelaunayMeshing.max_proj_dist", &delaunay_meshing->max_proj_dist); AddDefaultOption("DelaunayMeshing.max_depth_dist", &delaunay_meshing->max_depth_dist); AddDefaultOption("DelaunayMeshing.visibility_sigma", &delaunay_meshing->visibility_sigma); AddDefaultOption("DelaunayMeshing.distance_sigma_factor", &delaunay_meshing->distance_sigma_factor); AddDefaultOption("DelaunayMeshing.quality_regularization", &delaunay_meshing->quality_regularization); AddDefaultOption("DelaunayMeshing.max_side_length_factor", &delaunay_meshing->max_side_length_factor); AddDefaultOption("DelaunayMeshing.max_side_length_percentile", &delaunay_meshing->max_side_length_percentile); AddDefaultOption("DelaunayMeshing.num_threads", &delaunay_meshing->num_threads); } void OptionManager::AddAdvancingFrontMeshingOptions() { if (added_advancing_front_meshing_options_) { return; } added_advancing_front_meshing_options_ = true; AddDefaultOption("AdvancingFrontMeshing.max_edge_length", &advancing_front_meshing->max_edge_length); AddDefaultOption("AdvancingFrontMeshing.visibility_filtering", &advancing_front_meshing->visibility_filtering); AddDefaultOption( "AdvancingFrontMeshing.visibility_filtering_max_intersections", &advancing_front_meshing->visibility_filtering_max_intersections); AddDefaultOption("AdvancingFrontMeshing.visibility_post_filtering", &advancing_front_meshing->visibility_post_filtering); AddDefaultOption("AdvancingFrontMeshing.visibility_ray_trim_offset", &advancing_front_meshing->visibility_ray_trim_offset); AddDefaultOption("AdvancingFrontMeshing.block_size", &advancing_front_meshing->block_size); AddDefaultOption("AdvancingFrontMeshing.block_overlap", &advancing_front_meshing->block_overlap); AddDefaultOption("AdvancingFrontMeshing.num_threads", &advancing_front_meshing->num_threads); } void OptionManager::AddMeshTextureMappingOptions() { if (added_mesh_texture_mapping_options_) { return; } added_mesh_texture_mapping_options_ = true; AddDefaultOption("MeshTextureMapping.min_cos_normal_angle", &mesh_texture_mapping->min_cos_normal_angle); AddDefaultOption("MeshTextureMapping.min_visible_vertices", &mesh_texture_mapping->min_visible_vertices); AddDefaultOption("MeshTextureMapping.view_selection_smoothing_iterations", &mesh_texture_mapping->view_selection_smoothing_iterations); AddDefaultOption("MeshTextureMapping.atlas_patch_padding", &mesh_texture_mapping->atlas_patch_padding); AddDefaultOption("MeshTextureMapping.inpaint_radius", &mesh_texture_mapping->inpaint_radius); AddDefaultOption("MeshTextureMapping.apply_color_correction", &mesh_texture_mapping->apply_color_correction); AddDefaultOption("MeshTextureMapping.color_correction_regularization", &mesh_texture_mapping->color_correction_regularization); AddDefaultOption("MeshTextureMapping.num_threads", &mesh_texture_mapping->num_threads); AddDefaultOption("MeshTextureMapping.texture_scale_factor", &mesh_texture_mapping->texture_scale_factor); } void OptionManager::AddMeshSimplificationOptions() { if (added_mesh_simplification_options_) { return; } added_mesh_simplification_options_ = true; AddDefaultOption("MeshSimplification.target_face_ratio", &mesh_simplification->target_face_ratio); AddDefaultOption("MeshSimplification.max_error", &mesh_simplification->max_error); AddDefaultOption("MeshSimplification.boundary_weight", &mesh_simplification->boundary_weight); AddDefaultOption("MeshSimplification.interpolate_colors", &mesh_simplification->interpolate_colors); AddDefaultOption("MeshSimplification.num_threads", &mesh_simplification->num_threads); } #endif // COLMAP_MVS_ENABLED void OptionManager::AddRenderOptions() { if (added_render_options_) { return; } added_render_options_ = true; AddDefaultOption("Render.min_track_len", &render->min_track_len); AddDefaultOption("Render.max_error", &render->max_error); AddDefaultOption("Render.refresh_rate", &render->refresh_rate); AddDefaultOption("Render.adapt_refresh_rate", &render->adapt_refresh_rate); AddDefaultOption("Render.image_connections", &render->image_connections); AddDefaultOption("Render.projection_type", &render->projection_type); } void OptionManager::Reset(bool reset_logging) { BaseOptionManager::Reset(reset_logging); added_feature_extraction_options_ = false; added_feature_matching_options_ = false; added_two_view_geometry_options_ = false; added_exhaustive_pairing_options_ = false; added_sequential_pairing_options_ = false; added_vocab_tree_pairing_options_ = false; added_spatial_pairing_options_ = false; added_transitive_pairing_options_ = false; added_image_pairs_pairing_options_ = false; added_ba_options_ = false; added_mapper_options_ = false; added_global_mapper_options_ = false; added_gravity_refiner_options_ = false; added_reconstruction_clusterer_options_ = false; #if defined(COLMAP_MVS_ENABLED) added_patch_match_stereo_options_ = false; added_stereo_fusion_options_ = false; added_poisson_meshing_options_ = false; added_delaunay_meshing_options_ = false; added_advancing_front_meshing_options_ = false; added_mesh_texture_mapping_options_ = false; added_mesh_simplification_options_ = false; #endif added_render_options_ = false; } void OptionManager::ResetOptions(const bool reset_paths) { *image_reader = ImageReaderOptions(); *feature_extraction = FeatureExtractionOptions(); *feature_matching = FeatureMatchingOptions(); *exhaustive_pairing = ExhaustivePairingOptions(); *sequential_pairing = SequentialPairingOptions(); *vocab_tree_pairing = VocabTreePairingOptions(); *spatial_pairing = SpatialPairingOptions(); *transitive_pairing = TransitivePairingOptions(); *imported_pairing = ImportedPairingOptions(); *bundle_adjustment = BundleAdjustmentOptions(); *mapper = IncrementalPipelineOptions(); *global_mapper = GlobalPipelineOptions(); *gravity_refiner = GravityRefinerOptions(); *reconstruction_clusterer = ReconstructionClusteringOptions(); #if defined(COLMAP_MVS_ENABLED) *patch_match_stereo = mvs::PatchMatchOptions(); *stereo_fusion = mvs::StereoFusionOptions(); *poisson_meshing = mvs::PoissonMeshingOptions(); *delaunay_meshing = mvs::DelaunayMeshingOptions(); *mesh_texture_mapping = mvs::MeshTextureMappingOptions(); *mesh_simplification = mvs::MeshSimplificationOptions(); #endif *render = RenderOptions(); BaseOptionManager::ResetOptions(reset_paths); } bool OptionManager::Check() { if (!BaseOptionManager::Check()) { return false; } bool success = true; if (image_reader) success = success && image_reader->Check(); if (feature_extraction) success = success && feature_extraction->Check(); if (feature_matching) success = success && feature_matching->Check(); if (two_view_geometry) success = success && two_view_geometry->Check(); if (exhaustive_pairing) success = success && exhaustive_pairing->Check(); if (sequential_pairing) success = success && sequential_pairing->Check(); if (vocab_tree_pairing) success = success && vocab_tree_pairing->Check(); if (spatial_pairing) success = success && spatial_pairing->Check(); if (transitive_pairing) success = success && transitive_pairing->Check(); if (imported_pairing) success = success && imported_pairing->Check(); if (bundle_adjustment) success = success && bundle_adjustment->Check(); if (mapper) success = success && mapper->Check(); #if defined(COLMAP_MVS_ENABLED) if (patch_match_stereo) success = success && patch_match_stereo->Check(); if (stereo_fusion) success = success && stereo_fusion->Check(); if (poisson_meshing) success = success && poisson_meshing->Check(); if (delaunay_meshing) success = success && delaunay_meshing->Check(); if (mesh_texture_mapping) success = success && mesh_texture_mapping->Check(); #endif #if defined(COLMAP_GUI_ENABLED) if (render) success = success && render->Check(); #endif return success; } bool OptionManager::Read(const std::filesystem::path& path, bool allow_unregistered) { if (!BaseOptionManager::Read(path, allow_unregistered)) { return false; } return Check(); } void OptionManager::PostParse() { if (!mapper_image_list_path_.empty()) { mapper->image_names = ReadTextFileLines(mapper_image_list_path_); } if (!global_mapper_image_list_path_.empty()) { global_mapper->image_names = ReadTextFileLines(global_mapper_image_list_path_); } if (!mapper_constant_rig_list_path_.empty()) { for (const std::string& line : ReadTextFileLines(mapper_constant_rig_list_path_)) { mapper->constant_rigs.insert(std::stoi(line)); } } if (!mapper_constant_camera_list_path_.empty()) { for (const std::string& line : ReadTextFileLines(mapper_constant_camera_list_path_)) { mapper->constant_cameras.insert(std::stoi(line)); } } } void OptionManager::PrintHelp() const { LOG(INFO) << StringPrintf( "%s (%s)", GetVersionInfo().c_str(), GetBuildInfo().c_str()); LOG(INFO) << "Options can either be specified via command-line or by " "defining them in a .ini project file passed to " "`--project_path`.\n" << *desc_; } } // namespace colmap colmap-4.1.1/src/colmap/controllers/option_manager.h000066400000000000000000000161161522646662000225710ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/base_option_manager.h" #include namespace colmap { struct ImageReaderOptions; struct FeatureExtractionOptions; struct FeatureMatchingOptions; struct SiftMatchingOptions; struct TwoViewGeometryOptions; struct ExhaustivePairingOptions; struct SequentialPairingOptions; struct VocabTreePairingOptions; struct SpatialPairingOptions; struct TransitivePairingOptions; struct ImportedPairingOptions; struct ExistingMatchedPairingOptions; struct BundleAdjustmentOptions; struct IncrementalPipelineOptions; struct GlobalPipelineOptions; struct RenderOptions; struct ReconstructionClusteringOptions; #if defined(COLMAP_MVS_ENABLED) namespace mvs { struct PatchMatchOptions; struct StereoFusionOptions; struct PoissonMeshingOptions; struct DelaunayMeshingOptions; struct AdvancingFrontMeshingOptions; struct MeshTextureMappingOptions; struct MeshSimplificationOptions; } // namespace mvs #endif struct GravityRefinerOptions; } // namespace colmap namespace colmap { class OptionManager : public BaseOptionManager { public: explicit OptionManager(bool add_project_options = true); // Create "optimal" set of options for different reconstruction scenarios. void ModifyForIndividualData(); void ModifyForVideoData(); void ModifyForInternetData(); // Create "optimal" set of options for different quality settings. // Note that the existing options are modified, so if your parameters are // already low quality, they will be further degraded. void ModifyForLowQuality(); void ModifyForMediumQuality(); void ModifyForHighQuality(); void ModifyForExtremeQuality(); void AddAllOptions() override; void AddFeatureExtractionOptions(); void AddFeatureMatchingOptions(); void AddTwoViewGeometryOptions(); void AddExhaustivePairingOptions(); void AddSequentialPairingOptions(); void AddVocabTreePairingOptions(); void AddSpatialPairingOptions(); void AddTransitivePairingOptions(); void AddImportedPairingOptions(); void AddBundleAdjustmentOptions(); void AddMapperOptions(); void AddGlobalMapperOptions(); void AddGravityRefinerOptions(); void AddReconstructionClustererOptions(); #if defined(COLMAP_MVS_ENABLED) void AddPatchMatchStereoOptions(); void AddStereoFusionOptions(); void AddPoissonMeshingOptions(); void AddDelaunayMeshingOptions(); void AddAdvancingFrontMeshingOptions(); void AddMeshTextureMappingOptions(); void AddMeshSimplificationOptions(); #endif void AddRenderOptions(); void Reset(bool reset_logging = true) override; void ResetOptions(bool reset_paths) override; bool Check() override; bool Read(const std::filesystem::path& path, bool allow_unregistered = true) override; std::shared_ptr image_reader; std::shared_ptr feature_extraction; std::shared_ptr feature_matching; std::shared_ptr two_view_geometry; std::shared_ptr exhaustive_pairing; std::shared_ptr sequential_pairing; std::shared_ptr vocab_tree_pairing; std::shared_ptr spatial_pairing; std::shared_ptr transitive_pairing; std::shared_ptr imported_pairing; std::shared_ptr bundle_adjustment; std::shared_ptr mapper; std::shared_ptr global_mapper; std::shared_ptr reconstruction_clusterer; std::shared_ptr gravity_refiner; #if defined(COLMAP_MVS_ENABLED) std::shared_ptr patch_match_stereo; std::shared_ptr stereo_fusion; std::shared_ptr poisson_meshing; std::shared_ptr delaunay_meshing; std::shared_ptr advancing_front_meshing; std::shared_ptr mesh_texture_mapping; std::shared_ptr mesh_simplification; #endif std::shared_ptr render; protected: void PostParse() override; void PrintHelp() const override; std::filesystem::path mapper_image_list_path_; std::filesystem::path mapper_constant_rig_list_path_; std::filesystem::path mapper_constant_camera_list_path_; std::filesystem::path global_mapper_image_list_path_; bool added_feature_extraction_options_ = false; bool added_feature_matching_options_ = false; bool added_two_view_geometry_options_ = false; bool added_exhaustive_pairing_options_ = false; bool added_sequential_pairing_options_ = false; bool added_vocab_tree_pairing_options_ = false; bool added_spatial_pairing_options_ = false; bool added_transitive_pairing_options_ = false; bool added_image_pairs_pairing_options_ = false; bool added_ba_options_ = false; bool added_mapper_options_ = false; bool added_global_mapper_options_ = false; bool added_gravity_refiner_options_ = false; bool added_reconstruction_clusterer_options_ = false; #if defined(COLMAP_MVS_ENABLED) bool added_patch_match_stereo_options_ = false; bool added_stereo_fusion_options_ = false; bool added_poisson_meshing_options_ = false; bool added_delaunay_meshing_options_ = false; bool added_advancing_front_meshing_options_ = false; bool added_mesh_texture_mapping_options_ = false; bool added_mesh_simplification_options_ = false; #endif bool added_render_options_ = false; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/option_manager_test.cc000066400000000000000000000276421522646662000237740ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/option_manager.h" #include "colmap/controllers/image_reader.h" #include "colmap/controllers/incremental_pipeline.h" #include "colmap/feature/sift.h" #include "colmap/mvs/patch_match_options.h" #include "colmap/util/file.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { TEST(OptionManager, Reset) { OptionManager options; *options.database_path = "/test/path"; *options.image_path = "/test/images"; options.AddDatabaseOptions(); options.AddImageOptions(); EXPECT_EQ(*options.database_path, "/test/path"); EXPECT_EQ(*options.image_path, "/test/images"); options.Reset(); EXPECT_EQ(*options.database_path, ""); EXPECT_EQ(*options.image_path, ""); } TEST(OptionManager, ResetOptions) { OptionManager options; *options.database_path = "/test/path"; *options.image_path = "/test/images"; const int original_num_threads = options.feature_extraction->num_threads; options.feature_extraction->num_threads = original_num_threads + 42; options.ResetOptions(/*reset_paths=*/true); EXPECT_EQ(*options.database_path, ""); EXPECT_EQ(*options.image_path, ""); EXPECT_EQ(options.feature_extraction->num_threads, original_num_threads); *options.database_path = "/test/path"; *options.image_path = "/test/images"; options.feature_extraction->num_threads = original_num_threads + 42; options.ResetOptions(/*reset_paths=*/false); EXPECT_EQ(*options.database_path, "/test/path"); EXPECT_EQ(*options.image_path, "/test/images"); EXPECT_EQ(options.feature_extraction->num_threads, original_num_threads); } TEST(OptionManager, AddOptionsIdempotent) { OptionManager options; // Adding options multiple times should not cause issues options.AddLogOptions(); options.AddLogOptions(); options.AddRandomOptions(); options.AddRandomOptions(); options.AddFeatureExtractionOptions(); options.AddFeatureExtractionOptions(); options.AddFeatureMatchingOptions(); options.AddFeatureMatchingOptions(); options.AddMapperOptions(); options.AddMapperOptions(); // If idempotency is not maintained, the above would cause errors SUCCEED(); } TEST(OptionManager, AddAllOptions) { OptionManager options; options.AddAllOptions(); // Verify that at least some key options are initialized EXPECT_NE(options.image_reader, nullptr); EXPECT_NE(options.feature_extraction, nullptr); EXPECT_NE(options.feature_matching, nullptr); EXPECT_NE(options.bundle_adjustment, nullptr); EXPECT_NE(options.mapper, nullptr); #if defined(COLMAP_MVS_ENABLED) EXPECT_NE(options.patch_match_stereo, nullptr); #endif } TEST(OptionManager, WriteAndRead) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; // Create necessary directories CreateDirIfNotExists(test_dir / "images"); // Create and configure an OptionManager OptionManager options_write; options_write.AddDatabaseOptions(); options_write.AddImageOptions(); options_write.AddFeatureExtractionOptions(); options_write.AddMapperOptions(); options_write.AddGlobalMapperOptions(); *options_write.database_path = test_dir / "database.db"; *options_write.image_path = test_dir / "images"; options_write.feature_extraction->max_image_size = 2048; options_write.feature_extraction->sift->max_num_features = 4096; options_write.mapper->min_num_matches = 20; // Write to file options_write.Write(config_path); EXPECT_TRUE(ExistsFile(config_path)); // Read from file OptionManager options_read; options_read.AddDatabaseOptions(); options_read.AddImageOptions(); options_read.AddFeatureExtractionOptions(); options_read.AddMapperOptions(); options_read.AddGlobalMapperOptions(); EXPECT_TRUE(options_read.Read(config_path)); // Verify that values were read correctly EXPECT_EQ(*options_read.database_path, *options_write.database_path); EXPECT_EQ(*options_read.image_path, *options_write.image_path); EXPECT_EQ(options_read.feature_extraction->max_image_size, options_write.feature_extraction->max_image_size); EXPECT_EQ(options_read.feature_extraction->sift->max_num_features, options_write.feature_extraction->sift->max_num_features); EXPECT_EQ(options_read.mapper->min_num_matches, options_write.mapper->min_num_matches); } TEST(OptionManager, ReRead) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; // Create necessary directories CreateDirIfNotExists(test_dir / "images"); // Create and write initial config OptionManager options_write; options_write.AddAllOptions(); *options_write.database_path = test_dir / "database.db"; *options_write.image_path = test_dir / "images"; options_write.feature_extraction->max_image_size = 2048; options_write.Write(config_path); // Read with ReRead OptionManager options_read; EXPECT_TRUE(options_read.ReRead(config_path)); // Verify values EXPECT_EQ(*options_read.database_path, *options_write.database_path); EXPECT_EQ(*options_read.image_path, *options_write.image_path); EXPECT_EQ(options_read.feature_extraction->max_image_size, 2048); } TEST(OptionManager, ReadNonExistentFile) { OptionManager options; options.AddAllOptions(); EXPECT_FALSE(options.Read("/path/that/does/not/exist.ini")); } TEST(OptionManager, Check) { const auto test_dir = CreateTestDir(); OptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); // Should fail with non-existent paths *options.database_path = test_dir / "database.db"; *options.image_path = "/path/that/does/not/exist"; EXPECT_FALSE(options.Check()); // Should succeed with valid paths CreateDirIfNotExists(test_dir / "images"); *options.image_path = test_dir / "images"; EXPECT_TRUE(options.Check()); } TEST(OptionManager, CheckDatabaseParentDir) { const auto test_dir = CreateTestDir(); OptionManager options; options.AddDatabaseOptions(); // Should succeed when database parent dir exists *options.database_path = test_dir / "database.db"; EXPECT_TRUE(options.Check()); // Should fail when database path is a directory CreateDirIfNotExists(test_dir / "bad_database"); *options.database_path = test_dir / "bad_database"; EXPECT_FALSE(options.Check()); } TEST(OptionManager, ParseWithOptions) { const auto test_dir = CreateTestDir(); CreateDirIfNotExists(test_dir / "images"); OptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); options.AddFeatureExtractionOptions(); const auto database_path = test_dir / "database.db"; const auto image_path = test_dir / "images"; // Create argv with additional options const std::vector args = { "colmap", "--database_path", database_path.string(), "--image_path", image_path.string(), "--FeatureExtraction.max_image_size", "1024", "--SiftExtraction.max_num_features", "2048", }; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Verify parsed values EXPECT_EQ(*options.database_path, database_path); EXPECT_EQ(*options.image_path, image_path); EXPECT_EQ(options.feature_extraction->max_image_size, 1024); EXPECT_EQ(options.feature_extraction->sift->max_num_features, 2048); } TEST(OptionManager, ParseWithProjectPath) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; CreateDirIfNotExists(test_dir / "images"); // Create and write a config file OptionManager options_write; options_write.AddDatabaseOptions(); options_write.AddImageOptions(); options_write.AddFeatureExtractionOptions(); *options_write.database_path = test_dir / "database.db"; *options_write.image_path = test_dir / "images"; options_write.feature_extraction->max_image_size = 3000; options_write.Write(config_path); // Parse using project_path OptionManager options; options.AddDatabaseOptions(); options.AddImageOptions(); options.AddFeatureExtractionOptions(); const std::vector args = { "colmap", "--project_path", config_path.string(), }; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } EXPECT_TRUE(options.Parse(argv.size(), argv.data())); // Verify values were loaded from config file EXPECT_EQ(*options.database_path, *options_write.database_path); EXPECT_EQ(*options.image_path, *options_write.image_path); EXPECT_EQ(options.feature_extraction->max_image_size, 3000); } TEST(OptionManager, ParseEmptyArguments) { OptionManager options; const std::vector args = {"colmap"}; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } // Should succeed with no required options EXPECT_TRUE(options.Parse(argv.size(), argv.data())); } TEST(OptionManager, ParseUnknownArgumentsFails) { const auto test_dir = CreateTestDir(); OptionManager options; options.AddDatabaseOptions(); const auto database_path = test_dir / "database.db"; // Create argv with an unknown option const std::vector args = { "colmap", "--database_path", database_path.string(), "--unknown_option", "value", }; std::vector argv; argv.reserve(args.size()); for (auto& arg : args) { argv.push_back(const_cast(arg.c_str())); } // Should return false when encountering unknown option EXPECT_FALSE(options.Parse(argv.size(), argv.data())); } TEST(OptionManager, WriteAfterResetOptions) { const auto test_dir = CreateTestDir(); const auto config_path = test_dir / "config.ini"; OptionManager options; options.AddAllOptions(); *options.database_path = test_dir / "database.db"; CreateDirIfNotExists(test_dir / "images"); *options.image_path = test_dir / "images"; // ResetOptions reassigns option structs, which reallocates sub-objects // (e.g., feature_matching->sift, bundle_adjustment->ceres). This must not // invalidate the raw pointers registered by AddAllOptions, otherwise // Write() will dereference dangling pointers. options.ResetOptions(/*reset_paths=*/false); EXPECT_NO_THROW(options.Write(config_path)); EXPECT_TRUE(ExistsFile(config_path)); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/pairing.cc000066400000000000000000000765171522646662000213710ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/pairing.h" #include "colmap/feature/utils.h" #include "colmap/geometry/gps.h" #include "colmap/retrieval/resources.h" #include "colmap/util/file.h" #include "colmap/util/logging.h" #include "colmap/util/misc.h" #include "colmap/util/timer.h" #include #include #include #include #include #include namespace colmap { namespace { std::vector> ReadImagePairsText( const std::filesystem::path& path, const std::unordered_map& image_name_to_image_id) { std::ifstream file(path); THROW_CHECK_FILE_OPEN(file, path); std::string line; std::vector> image_pairs; std::unordered_set image_pairs_set; while (std::getline(file, line)) { StringTrim(&line); if (line.empty() || line[0] == '#') { continue; } std::stringstream line_stream(line); std::string image_name1; std::string image_name2; std::getline(line_stream, image_name1, ' '); StringTrim(&image_name1); std::getline(line_stream, image_name2, ' '); StringTrim(&image_name2); if (image_name_to_image_id.count(image_name1) == 0) { LOG(ERROR) << "Image " << image_name1 << " does not exist."; continue; } if (image_name_to_image_id.count(image_name2) == 0) { LOG(ERROR) << "Image " << image_name2 << " does not exist."; continue; } const image_t image_id1 = image_name_to_image_id.at(image_name1); const image_t image_id2 = image_name_to_image_id.at(image_name2); const image_pair_t image_pair = ImagePairToPairId(image_id1, image_id2); const bool image_pair_exists = image_pairs_set.insert(image_pair).second; if (image_pair_exists) { image_pairs.emplace_back(image_id1, image_id2); } } return image_pairs; } } // namespace bool ExistingMatchedPairingOptions::Check() const { CHECK_OPTION_GT(batch_size, 1); return true; } bool ExhaustivePairingOptions::Check() const { CHECK_OPTION_GT(block_size, 1); return true; } bool VocabTreePairingOptions::Check() const { CHECK_OPTION_GT(num_images, 0); CHECK_OPTION_GT(num_nearest_neighbors, 0); CHECK_OPTION_GT(num_checks, 0); return true; } bool SequentialPairingOptions::Check() const { CHECK_OPTION_GT(overlap, 0); CHECK_OPTION_GT(loop_detection_period, 0); CHECK_OPTION_GT(loop_detection_num_images, 0); CHECK_OPTION_GT(loop_detection_num_nearest_neighbors, 0); CHECK_OPTION_GT(loop_detection_num_checks, 0); return true; } VocabTreePairingOptions SequentialPairingOptions::VocabTreeOptions() const { VocabTreePairingOptions options; options.num_images = loop_detection_num_images; options.num_nearest_neighbors = loop_detection_num_nearest_neighbors; options.num_checks = loop_detection_num_checks; options.num_images_after_verification = loop_detection_num_images_after_verification; options.max_num_features = loop_detection_max_num_features; options.vocab_tree_path = vocab_tree_path; options.num_threads = num_threads; return options; } bool SpatialPairingOptions::Check() const { CHECK_OPTION_GE(max_distance, 0.0); CHECK_OPTION_GT(max_num_neighbors, 0); CHECK_OPTION_LE(min_num_neighbors, max_num_neighbors); CHECK_OPTION_GE(min_num_neighbors, 0); CHECK_OPTION(max_distance > 0.0 || min_num_neighbors > 0); return true; } bool TransitivePairingOptions::Check() const { CHECK_OPTION_GT(batch_size, 0); CHECK_OPTION_GT(num_iterations, 0); return true; } bool ImportedPairingOptions::Check() const { CHECK_OPTION_GT(block_size, 0); return true; } bool FeaturePairsMatchingOptions::Check() const { return true; } std::vector> PairGenerator::AllPairs() { std::vector> image_pairs; while (!this->HasFinished()) { std::vector> image_pairs_block = this->Next(); image_pairs.insert(image_pairs.end(), std::make_move_iterator(image_pairs_block.begin()), std::make_move_iterator(image_pairs_block.end())); } return image_pairs; } ExhaustivePairGenerator::ExhaustivePairGenerator( const ExhaustivePairingOptions& options, const std::shared_ptr& cache) : options_(options), image_ids_(THROW_CHECK_NOTNULL(cache)->GetImageIds()), block_size_(static_cast(options_.block_size)), num_blocks_(static_cast( std::ceil(static_cast(image_ids_.size()) / block_size_))) { THROW_CHECK(options.Check()); LOG(INFO) << "Generating exhaustive image pairs..."; const size_t num_pairs_per_block = block_size_ * (block_size_ - 1) / 2; image_pairs_.reserve(num_pairs_per_block); } ExhaustivePairGenerator::ExhaustivePairGenerator( const ExhaustivePairingOptions& options, const std::shared_ptr& database) : ExhaustivePairGenerator( options, std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database))) {} void ExhaustivePairGenerator::Reset() { start_idx1_ = 0; start_idx2_ = 0; } bool ExhaustivePairGenerator::HasFinished() const { return start_idx1_ >= image_ids_.size(); } std::vector> ExhaustivePairGenerator::Next() { image_pairs_.clear(); if (HasFinished()) { return image_pairs_; } const size_t end_idx1 = std::min(image_ids_.size(), start_idx1_ + block_size_) - 1; const size_t end_idx2 = std::min(image_ids_.size(), start_idx2_ + block_size_) - 1; LOG(INFO) << StringPrintf("Processing block [%d/%d, %d/%d]", start_idx1_ / block_size_ + 1, num_blocks_, start_idx2_ / block_size_ + 1, num_blocks_); for (size_t idx1 = start_idx1_; idx1 <= end_idx1; ++idx1) { for (size_t idx2 = start_idx2_; idx2 <= end_idx2; ++idx2) { const size_t block_id1 = idx1 % block_size_; const size_t block_id2 = idx2 % block_size_; if ((idx1 > idx2 && block_id1 <= block_id2) || (idx1 < idx2 && block_id1 < block_id2)) { // Avoid duplicate pairs image_pairs_.emplace_back(image_ids_[idx1], image_ids_[idx2]); } } } start_idx2_ += block_size_; if (start_idx2_ >= image_ids_.size()) { start_idx2_ = 0; start_idx1_ += block_size_; } return image_pairs_; } VocabTreePairGenerator::VocabTreePairGenerator( const VocabTreePairingOptions& options, const std::shared_ptr& cache, const std::vector& query_image_ids) : options_(options), cache_(THROW_CHECK_NOTNULL(cache)), thread_pool_(options_.num_threads), queue_(options_.num_threads) { THROW_CHECK(options.Check()); LOG(INFO) << "Generating image pairs with vocabulary tree..."; const std::vector all_image_ids = cache_->GetImageIds(); if (query_image_ids.size() > 0) { query_image_ids_ = query_image_ids; } else if (options_.match_list_path == "") { query_image_ids_ = cache_->GetImageIds(); } else { // Map image names to image identifiers. std::unordered_map image_name_to_image_id; image_name_to_image_id.reserve(all_image_ids.size()); for (const auto image_id : all_image_ids) { const auto& image = cache_->GetImage(image_id); image_name_to_image_id.emplace(image.Name(), image_id); } // Read the match list path. std::ifstream file(options_.match_list_path); THROW_CHECK_FILE_OPEN(file, options_.match_list_path); std::string line; while (std::getline(file, line)) { StringTrim(&line); if (line.empty() || line[0] == '#') { continue; } if (image_name_to_image_id.count(line) == 0) { LOG(ERROR) << "Image " << line << " does not exist."; } else { query_image_ids_.push_back(image_name_to_image_id.at(line)); } } } IndexImages(all_image_ids); // Since we parallelize over the query images, there is no need to parallelize // the nearest neighbor search over the query descriptors. query_options_.num_threads = 1; query_options_.max_num_images = options_.num_images; query_options_.num_neighbors = options_.num_nearest_neighbors; query_options_.num_checks = options_.num_checks; query_options_.num_images_after_verification = options_.num_images_after_verification; } VocabTreePairGenerator::VocabTreePairGenerator( const VocabTreePairingOptions& options, const std::shared_ptr& database, const std::vector& query_image_ids) : VocabTreePairGenerator( options, std::make_shared(options.CacheSize(), THROW_CHECK_NOTNULL(database)), query_image_ids) {} void VocabTreePairGenerator::Reset() { query_idx_ = 0; result_idx_ = 0; } bool VocabTreePairGenerator::HasFinished() const { return result_idx_ >= query_image_ids_.size(); } std::vector> VocabTreePairGenerator::Next() { image_pairs_.clear(); if (HasFinished()) { return {}; } if (query_idx_ == 0) { // Initially, make all retrieval threads busy and continue with the // matching. const size_t init_num_tasks = std::min(query_image_ids_.size(), 2 * thread_pool_.NumThreads()); for (; query_idx_ < init_num_tasks; ++query_idx_) { thread_pool_.AddTask( &VocabTreePairGenerator::Query, this, query_image_ids_[query_idx_]); } } LOG(INFO) << StringPrintf( "Processing image [%d/%d]", result_idx_ + 1, query_image_ids_.size()); // Push the next image to the retrieval queue. if (query_idx_ < query_image_ids_.size()) { thread_pool_.AddTask( &VocabTreePairGenerator::Query, this, query_image_ids_[query_idx_++]); } // Pop the next results from the retrieval queue. auto retrieval = queue_.Pop(); THROW_CHECK(retrieval.IsValid()); const auto& image_id = retrieval.Data().image_id; const auto& image_scores = retrieval.Data().image_scores; // Compose the image pairs from the scores. image_pairs_.reserve(image_scores.size()); for (const auto& image_score : image_scores) { image_pairs_.emplace_back(image_id, image_score.image_id); } ++result_idx_; return image_pairs_; } void VocabTreePairGenerator::IndexImages( const std::vector& image_ids) { retrieval::VisualIndex::IndexOptions index_options; // We only assign each feature to a single visual word in the indexing phase. // During the query phase, we check for overlap in possibly multiple nearest // neighbor visual words. We could do it symmetrically but experiments showed // only marginal improvements that do not justify the memory/compute increase. index_options.num_neighbors = 1; index_options.num_checks = options_.num_checks; index_options.num_threads = options_.num_threads; for (size_t i = 0; i < image_ids.size(); ++i) { Timer timer; timer.Start(); LOG(INFO) << StringPrintf( "Indexing image [%d/%d]", i + 1, image_ids.size()); auto keypoints = *cache_->GetKeypoints(image_ids[i]); auto descriptors = *cache_->GetDescriptors(image_ids[i]); if (visual_index_ == nullptr) { visual_index_ = retrieval::VisualIndex::Read( options_.vocab_tree_path.empty() ? GetVocabTreeUriForFeatureType(descriptors.type) : options_.vocab_tree_path); } if (options_.max_num_features > 0 && descriptors.data.rows() > options_.max_num_features) { ExtractTopScaleFeatures( &keypoints, &descriptors, options_.max_num_features); } visual_index_->Add( index_options, image_ids[i], keypoints, descriptors.ToFloat()); LOG(INFO) << StringPrintf(" in %.3fs", timer.ElapsedSeconds()); } // Compute the TF-IDF weights, etc. visual_index_->Prepare(); } void VocabTreePairGenerator::Query(const image_t image_id) { Retrieval retrieval; retrieval.image_id = image_id; // Each query must push exactly one result, because the consuming Next() pops // exactly one result per query. If a query fails (e.g., due to corrupt // features or an out-of-memory error during spatial verification), we still // push an empty result and skip retrieval for this image. Otherwise, the // consumer would block indefinitely waiting for a result that never arrives. try { auto keypoints = *cache_->GetKeypoints(image_id); auto descriptors = *cache_->GetDescriptors(image_id); if (options_.max_num_features > 0 && descriptors.data.rows() > options_.max_num_features) { ExtractTopScaleFeatures( &keypoints, &descriptors, options_.max_num_features); } visual_index_->Query(query_options_, keypoints, descriptors.ToFloat(), &retrieval.image_scores); } catch (const std::exception& error) { LOG(ERROR) << "Failed to query image " << image_id << " against vocabulary tree, skipping: " << error.what(); retrieval.image_scores.clear(); } THROW_CHECK(queue_.Push(std::move(retrieval))); } SequentialPairGenerator::SequentialPairGenerator( const SequentialPairingOptions& options, const std::shared_ptr& cache) : options_(options), cache_(THROW_CHECK_NOTNULL(cache)) { THROW_CHECK(options.Check()); LOG(INFO) << "Generating sequential image pairs..."; image_ids_ = GetOrderedImageIds(); image_pairs_.reserve(options_.overlap); if (options_.loop_detection) { std::vector query_image_ids; for (size_t i = 0; i < image_ids_.size(); i += options_.loop_detection_period) { query_image_ids.push_back(image_ids_[i]); } vocab_tree_pair_generator_ = std::make_unique( options_.VocabTreeOptions(), cache_, query_image_ids); } if (options_.expand_rig_images) { const std::vector frame_ids = cache_->GetFrameIds(); frame_to_image_ids_.reserve(frame_ids.size()); image_to_frame_ids_.reserve(image_ids_.size()); for (const frame_t frame_id : frame_ids) { const Frame& frame = cache_->GetFrame(frame_id); auto& frame_image_ids = frame_to_image_ids_[frame_id]; for (const data_t& data_id : frame.ImageIds()) { frame_image_ids.push_back(data_id.id); image_to_frame_ids_[data_id.id] = frame_id; } } } } SequentialPairGenerator::SequentialPairGenerator( const SequentialPairingOptions& options, const std::shared_ptr& database) : SequentialPairGenerator( options, std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database))) {} void SequentialPairGenerator::Reset() { image_idx_ = 0; if (vocab_tree_pair_generator_) { vocab_tree_pair_generator_->Reset(); } } bool SequentialPairGenerator::HasFinished() const { return image_idx_ >= image_ids_.size() && (vocab_tree_pair_generator_ ? vocab_tree_pair_generator_->HasFinished() : true); } std::vector> SequentialPairGenerator::Next() { image_pairs_.clear(); if (image_idx_ >= image_ids_.size()) { if (vocab_tree_pair_generator_) { return vocab_tree_pair_generator_->Next(); } return image_pairs_; } LOG(INFO) << StringPrintf( "Processing image [%d/%d]", image_idx_ + 1, image_ids_.size()); const auto image_id1 = image_ids_.at(image_idx_); // If image is part of a rig, then pair the other images in the same frame. if (options_.expand_rig_images) { if (const auto frame_id1_it = image_to_frame_ids_.find(image_id1); frame_id1_it != image_to_frame_ids_.end()) { for (const image_t frame_image_id2 : frame_to_image_ids_.at(frame_id1_it->second)) { if (image_id1 != frame_image_id2) { image_pairs_.emplace_back(image_id1, frame_image_id2); } } } } auto MaybeExpandRigImages = [this](image_t image_id1, image_t image_id2) { if (!options_.expand_rig_images) { return; } const auto frame_id2_it = image_to_frame_ids_.find(image_id2); if (frame_id2_it != image_to_frame_ids_.end()) { // Pair with all images in second frame. for (const image_t frame_image_id2 : frame_to_image_ids_.at(frame_id2_it->second)) { if (image_id1 != frame_image_id2 && image_id2 != frame_image_id2) { image_pairs_.emplace_back(image_id1, frame_image_id2); } } } }; for (int i = 0; i < options_.overlap; ++i) { if (options_.quadratic_overlap) { const size_t image_idx_2_quadratic = image_idx_ + (1ull << i); if (image_idx_2_quadratic < image_ids_.size()) { const image_t image_id2 = image_ids_.at(image_idx_2_quadratic); image_pairs_.emplace_back(image_id1, image_id2); MaybeExpandRigImages(image_id1, image_id2); } else { break; } } else { const size_t image_idx_2 = image_idx_ + i + 1; if (image_idx_2 < image_ids_.size()) { const image_t image_id2 = image_ids_.at(image_idx_2); image_pairs_.emplace_back(image_id1, image_id2); MaybeExpandRigImages(image_id1, image_id2); } else { break; } } } ++image_idx_; return image_pairs_; } std::vector SequentialPairGenerator::GetOrderedImageIds() const { const std::vector image_ids = cache_->GetImageIds(); std::vector ordered_images; ordered_images.reserve(image_ids.size()); for (const auto image_id : image_ids) { ordered_images.push_back(cache_->GetImage(image_id)); } std::sort(ordered_images.begin(), ordered_images.end(), [](const Image& image1, const Image& image2) { return image1.Name() < image2.Name(); }); std::vector ordered_image_ids; ordered_image_ids.reserve(image_ids.size()); for (const auto& image : ordered_images) { ordered_image_ids.push_back(image.ImageId()); } return ordered_image_ids; } SpatialPairGenerator::SpatialPairGenerator( const SpatialPairingOptions& options, const std::shared_ptr& cache) : options_(options), image_ids_(THROW_CHECK_NOTNULL(cache)->GetImageIds()) { LOG(INFO) << "Generating spatial image pairs..."; THROW_CHECK(options.Check()); Timer timer; timer.Start(); LOG(INFO) << "Indexing images..."; Eigen::RowMajorMatrixXf position_matrix = ReadPositionPriorData(*cache); const int num_positions = position_idxs_.size(); LOG(INFO) << StringPrintf(" in %.3fs", timer.ElapsedSeconds()); if (num_positions == 0) { LOG(INFO) << "=> No images with location data."; return; } if (num_positions <= options_.min_num_neighbors) { LOG(WARNING) << StringPrintf( "min_num_neighbors (%d) exceeds number of images with location data " "(%zu), this may limit the number of matched pairs.", options_.min_num_neighbors, num_positions); } timer.Restart(); LOG(INFO) << "Building search index..."; faiss::IndexFlatL2 search_index(/*d=*/3); search_index.add(position_matrix.rows(), position_matrix.data()); LOG(INFO) << StringPrintf(" in %.3fs", timer.ElapsedSeconds()); timer.Restart(); LOG(INFO) << "Searching for nearest neighbors..."; knn_ = std::min(options_.max_num_neighbors + 1, num_positions); image_pairs_.reserve(knn_); index_matrix_.resize(num_positions, knn_); distance_squared_matrix_.resize(num_positions, knn_); omp_set_num_threads(GetEffectiveNumThreads(options_.num_threads)); search_index.search(position_matrix.rows(), position_matrix.data(), knn_, distance_squared_matrix_.data(), index_matrix_.data()); LOG(INFO) << StringPrintf(" in %.3fs", timer.ElapsedSeconds()); } SpatialPairGenerator::SpatialPairGenerator( const SpatialPairingOptions& options, const std::shared_ptr& database) : SpatialPairGenerator( options, std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database))) {} void SpatialPairGenerator::Reset() { current_idx_ = 0; } bool SpatialPairGenerator::HasFinished() const { return current_idx_ >= position_idxs_.size(); } std::vector> SpatialPairGenerator::Next() { image_pairs_.clear(); if (HasFinished()) { return image_pairs_; } LOG(INFO) << StringPrintf( "Processing image [%d/%d]", current_idx_ + 1, position_idxs_.size()); const float max_distance_squared = static_cast(options_.max_distance * options_.max_distance); for (int j = 0; j < knn_; ++j) { // Check if query equals result. if (index_matrix_(current_idx_, j) == static_cast(current_idx_)) { continue; } // Since the nearest neighbors are sorted by distance, we can break // once the distance is too large and enough neighbors are collected. if (distance_squared_matrix_(current_idx_, j) > max_distance_squared && j > options_.min_num_neighbors) { break; } const image_t image_id = image_ids_.at(position_idxs_[current_idx_]); const size_t nn_idx = position_idxs_.at(index_matrix_(current_idx_, j)); const image_t nn_image_id = image_ids_.at(nn_idx); image_pairs_.emplace_back(image_id, nn_image_id); } ++current_idx_; return image_pairs_; } Eigen::RowMajorMatrixXf SpatialPairGenerator::ReadPositionPriorData( FeatureMatcherCache& cache) { GPSTransform gps_transform; std::vector ells(1); Eigen::RowMajorMatrixXd position_matrix(image_ids_.size(), 3); position_idxs_.clear(); position_idxs_.reserve(image_ids_.size()); for (size_t i = 0; i < image_ids_.size(); ++i) { const PosePrior* pose_prior = cache.FindImagePosePriorOrNull(image_ids_[i]); if (pose_prior == nullptr) { continue; } if ((!options_.ignore_z && !pose_prior->HasPosition()) || (options_.ignore_z && !pose_prior->position.head<2>().allFinite())) { continue; } const size_t position_idx = position_idxs_.size(); position_idxs_.push_back(i); switch (pose_prior->coordinate_system) { case PosePrior::CoordinateSystem::WGS84: { ells[0](0) = pose_prior->position(0); ells[0](1) = pose_prior->position(1); ells[0](2) = options_.ignore_z ? 0 : pose_prior->position(2); const std::vector xyzs = gps_transform.EllipsoidToECEF(ells); position_matrix(position_idx, 0) = xyzs[0](0); position_matrix(position_idx, 1) = xyzs[0](1); position_matrix(position_idx, 2) = xyzs[0](2); } break; case PosePrior::CoordinateSystem::UNDEFINED: default: LOG(WARNING) << "Unknown coordinate system for image " << image_ids_[i] << ", assuming cartesian."; case PosePrior::CoordinateSystem::CARTESIAN: position_matrix(position_idx, 0) = pose_prior->position(0); position_matrix(position_idx, 1) = pose_prior->position(1); position_matrix(position_idx, 2) = options_.ignore_z ? 0 : pose_prior->position(2); } } // Subtract the mean coordinate before casting to float for better numerical // precision when dealing with large coordinates (e.g. GPS). For even better // precision, we could also rescale the coordinates. position_matrix.rowwise() -= position_matrix.colwise().mean(); return position_matrix.topRows(position_idxs_.size()).cast(); } TransitivePairGenerator::TransitivePairGenerator( const TransitivePairingOptions& options, const std::shared_ptr& cache) : options_(options), cache_(cache) { THROW_CHECK(options.Check()); } TransitivePairGenerator::TransitivePairGenerator( const TransitivePairingOptions& options, const std::shared_ptr& database) : TransitivePairGenerator( options, std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database))) {} void TransitivePairGenerator::Reset() { current_iteration_ = 0; current_batch_idx_ = 0; image_pairs_.clear(); image_pair_ids_.clear(); } bool TransitivePairGenerator::HasFinished() const { return current_iteration_ >= options_.num_iterations && image_pairs_.empty(); } std::vector> TransitivePairGenerator::Next() { if (!image_pairs_.empty()) { current_batch_idx_++; std::vector> batch; while (!image_pairs_.empty() && static_cast(batch.size()) < options_.batch_size) { batch.push_back(image_pairs_.back()); image_pairs_.pop_back(); } LOG(INFO) << StringPrintf( "Processing batch [%d/%d]", current_batch_idx_, current_num_batches_); return batch; } if (current_iteration_ >= options_.num_iterations) { return {}; } current_batch_idx_ = 0; current_num_batches_ = 0; current_iteration_++; LOG(INFO) << StringPrintf( "Iteration [%d/%d]", current_iteration_, options_.num_iterations); std::vector> existing_pair_ids_and_num_inliers; cache_->AccessDatabase( [&existing_pair_ids_and_num_inliers](Database& database) { existing_pair_ids_and_num_inliers = database.ReadTwoViewGeometryNumInliers(); }); std::map> adjacency; for (const auto& [pair_id, _] : existing_pair_ids_and_num_inliers) { const auto [image_id1, image_id2] = PairIdToImagePair(pair_id); adjacency[image_id1].push_back(image_id2); adjacency[image_id2].push_back(image_id1); image_pair_ids_.insert(pair_id); } for (const auto& image : adjacency) { const auto image_id1 = image.first; for (const auto& image_id2 : image.second) { const auto it = adjacency.find(image_id2); if (it == adjacency.end()) { continue; } for (const auto& image_id3 : it->second) { if (image_id1 == image_id3) { continue; } const auto image_pair_id = ImagePairToPairId(image_id1, image_id3); if (image_pair_ids_.count(image_pair_id) != 0) { continue; } image_pairs_.emplace_back(std::minmax(image_id1, image_id3)); image_pair_ids_.insert(image_pair_id); } } } current_num_batches_ = std::ceil(static_cast(image_pairs_.size()) / options_.batch_size); return Next(); } ImportedPairGenerator::ImportedPairGenerator( const ImportedPairingOptions& options, const std::shared_ptr& cache) : options_(options) { THROW_CHECK(options.Check()); LOG(INFO) << "Importing image pairs..."; const std::vector image_ids = cache->GetImageIds(); std::unordered_map image_name_to_image_id; image_name_to_image_id.reserve(image_ids.size()); for (const auto image_id : image_ids) { const auto& image = cache->GetImage(image_id); image_name_to_image_id.emplace(image.Name(), image_id); } image_pairs_ = ReadImagePairsText(options_.match_list_path, image_name_to_image_id); block_image_pairs_.reserve(options_.block_size); } ImportedPairGenerator::ImportedPairGenerator( const ImportedPairingOptions& options, const std::shared_ptr& database) : ImportedPairGenerator( options, std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database))) {} void ImportedPairGenerator::Reset() { pair_idx_ = 0; } bool ImportedPairGenerator::HasFinished() const { return pair_idx_ >= image_pairs_.size(); } std::vector> ImportedPairGenerator::Next() { block_image_pairs_.clear(); if (HasFinished()) { return block_image_pairs_; } LOG(INFO) << StringPrintf("Processing block [%d/%d]", pair_idx_ / options_.block_size + 1, image_pairs_.size() / options_.block_size + 1); const size_t block_end = std::min(pair_idx_ + options_.block_size, image_pairs_.size()); for (size_t j = pair_idx_; j < block_end; ++j) { block_image_pairs_.push_back(image_pairs_[j]); } pair_idx_ += options_.block_size; return block_image_pairs_; } ExistingMatchedPairGenerator::ExistingMatchedPairGenerator( const ExistingMatchedPairingOptions& options, const std::shared_ptr& cache) : options_(options) { THROW_CHECK(options.Check()); LOG(INFO) << "Generating existing image pairs..."; cache->AccessDatabase([this](Database& database) { auto num_matches = database.ReadNumMatches(); image_pairs_.reserve(num_matches.size()); for (const auto& [pair_id, _] : num_matches) { image_pairs_.emplace_back(PairIdToImagePair(pair_id)); } }); num_batches_ = std::ceil(static_cast(image_pairs_.size()) / options_.batch_size); } ExistingMatchedPairGenerator::ExistingMatchedPairGenerator( const ExistingMatchedPairingOptions& options, const std::shared_ptr& database) : ExistingMatchedPairGenerator( options, std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database))) {} void ExistingMatchedPairGenerator::Reset() { start_idx_ = 0; } bool ExistingMatchedPairGenerator::HasFinished() const { return start_idx_ >= image_pairs_.size(); } std::vector> ExistingMatchedPairGenerator::Next() { if (HasFinished()) { return {}; } const size_t end_idx = std::min(start_idx_ + options_.batch_size, image_pairs_.size()); std::vector> batch; batch.reserve(end_idx - start_idx_); for (size_t idx = start_idx_; idx < end_idx; ++idx) { batch.emplace_back(image_pairs_[idx]); } LOG(INFO) << StringPrintf("Processing batch [%d/%d]", start_idx_ / options_.batch_size + 1, num_batches_); start_idx_ = end_idx; return batch; } } // namespace colmap colmap-4.1.1/src/colmap/controllers/pairing.h000066400000000000000000000336571522646662000212310ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/controllers/matcher_cache.h" #include "colmap/retrieval/visual_index.h" #include "colmap/scene/database.h" #include "colmap/util/threading.h" #include "colmap/util/types.h" #include #include namespace colmap { struct ExhaustivePairingOptions { // Block size, i.e. number of images to simultaneously load into memory. int block_size = 50; bool Check() const; // Each block matches two sets of images with size block_size. To hold all // images in the block, the cache thus needs to hold 2 * block_size. inline size_t CacheSize() const { return 2 * block_size; } }; struct VocabTreePairingOptions { // Number of images to retrieve for each query image. int num_images = 100; // Number of nearest neighbors to retrieve per query feature. int num_nearest_neighbors = 5; // Number of nearest-neighbor checks to use in retrieval. int num_checks = 64; // How many images to return after spatial verification. Set to 0 to turn off // spatial verification. int num_images_after_verification = 0; // The maximum number of features to use for indexing an image. If an // image has more features, only the largest-scale features will be indexed. int max_num_features = -1; // Path to the vocabulary tree. std::filesystem::path vocab_tree_path; // Optional path to file with specific image names to match. std::filesystem::path match_list_path = ""; // Number of threads for indexing and retrieval. int num_threads = -1; bool Check() const; inline size_t CacheSize() const { return 5 * num_images; } }; struct SequentialPairingOptions { // Number of overlapping image pairs. int overlap = 10; // Whether to match images against their quadratic neighbors. bool quadratic_overlap = true; // Whether to match an image against all images within the same rig frame // and all images in neighboring rig frames. Note that this assumes that // images are appropriate named according to the following scheme: // // rig1/ // camera1/ // image0001.jpg // image0002.jpg // image0003.jpg // ... // camera2/ // image0001.jpg // image0002.jpg // image0003.jpg // ... // camera3/ // image0001.jpg // image0002.jpg // image0003.jpg // ... // ... // // where, for overlap=1, rig1/camera1/image0001.jpg will be matched against: // // rig1/camera2/image0001.jpg # same frame // rig1/camera3/image0001.jpg # same frame // rig1/camera1/image0002.jpg # neighboring frame // rig1/camera2/image0002.jpg # neighboring frame // rig1/camera3/image0002.jpg # neighboring frame // // If no rigs/frames are configured in the database, this option is ignored. bool expand_rig_images = true; // Whether to enable vocabulary tree based loop detection. bool loop_detection = false; // The frequency at which loop detection is triggered, in number of images. int loop_detection_period = 10; // The number of images to retrieve in loop detection. This number should // be significantly larger than the sequential matching overlap. int loop_detection_num_images = 50; // Number of nearest neighbors to retrieve per query feature. int loop_detection_num_nearest_neighbors = 1; // Number of nearest-neighbor checks to use in retrieval. int loop_detection_num_checks = 64; // How many images to return after spatial verification. Set to 0 to turn off // spatial verification. int loop_detection_num_images_after_verification = 0; // The maximum number of features to use for indexing an image. If an // image has more features, only the largest-scale features will be indexed. int loop_detection_max_num_features = -1; // Number of threads for loop detection indexing and retrieval. int num_threads = -1; // Path to the vocabulary tree. std::filesystem::path vocab_tree_path; bool Check() const; VocabTreePairingOptions VocabTreeOptions() const; inline size_t CacheSize() const { return std::max(5 * loop_detection_num_images, 5 * overlap); } }; struct SpatialPairingOptions { // Whether to ignore the Z-component of the location prior. bool ignore_z = true; // The maximum number of nearest neighbors to match. int max_num_neighbors = 50; // The minimum number of nearest neighbors to match. Neighbors include those // within max_distance or to satisfy min_num_neighbors. int min_num_neighbors = 0; // The maximum distance between the query and nearest neighbor. For GPS // coordinates the unit is Euclidean distance in meters. double max_distance = 100; // Number of threads for indexing and retrieval. int num_threads = -1; bool Check() const; inline size_t CacheSize() const { return 5 * max_num_neighbors; } }; struct TransitivePairingOptions { // The maximum number of image pairs to process in one batch. int batch_size = 1000; // The number of transitive closure iterations. int num_iterations = 3; bool Check() const; inline size_t CacheSize() const { return 2 * batch_size; } }; struct ImportedPairingOptions { // Number of image pairs to match in one batch. int block_size = 1225; // Path to the file with the matches. std::filesystem::path match_list_path = ""; bool Check() const; inline size_t CacheSize() const { return block_size; } }; struct FeaturePairsMatchingOptions { // Whether to geometrically verify the given matches. bool verify_matches = true; // Path to the file with the matches. std::filesystem::path match_list_path = ""; bool Check() const; }; struct ExistingMatchedPairingOptions { // The number of image pairs to match in one batch. int batch_size = 1000; bool Check() const; inline size_t CacheSize() const { return std::max(10, static_cast(2 * std::sqrt(batch_size))); } }; class PairGenerator { public: virtual ~PairGenerator() = default; virtual void Reset() = 0; virtual bool HasFinished() const = 0; virtual std::vector> Next() = 0; std::vector> AllPairs(); }; class ExhaustivePairGenerator : public PairGenerator { public: using PairingOptions = ExhaustivePairingOptions; ExhaustivePairGenerator(const ExhaustivePairingOptions& options, const std::shared_ptr& cache); ExhaustivePairGenerator(const ExhaustivePairingOptions& options, const std::shared_ptr& database); void Reset() override; bool HasFinished() const override; std::vector> Next() override; private: const ExhaustivePairingOptions options_; const std::vector image_ids_; const size_t block_size_; const size_t num_blocks_; size_t start_idx1_ = 0; size_t start_idx2_ = 0; std::vector> image_pairs_; }; class VocabTreePairGenerator : public PairGenerator { public: using PairingOptions = VocabTreePairingOptions; VocabTreePairGenerator(const VocabTreePairingOptions& options, const std::shared_ptr& cache, const std::vector& query_image_ids = {}); VocabTreePairGenerator(const VocabTreePairingOptions& options, const std::shared_ptr& database, const std::vector& query_image_ids = {}); void Reset() override; bool HasFinished() const override; std::vector> Next() override; private: void IndexImages(const std::vector& image_ids); struct Retrieval { image_t image_id = kInvalidImageId; std::vector image_scores; }; void Query(image_t image_id); const VocabTreePairingOptions options_; const std::shared_ptr cache_; ThreadPool thread_pool_; JobQueue queue_; std::unique_ptr visual_index_; retrieval::VisualIndex::QueryOptions query_options_; std::vector query_image_ids_; std::vector> image_pairs_; size_t query_idx_ = 0; size_t result_idx_ = 0; }; class SequentialPairGenerator : public PairGenerator { public: using PairingOptions = SequentialPairingOptions; SequentialPairGenerator(const SequentialPairingOptions& options, const std::shared_ptr& cache); SequentialPairGenerator(const SequentialPairingOptions& options, const std::shared_ptr& database); void Reset() override; bool HasFinished() const override; std::vector> Next() override; private: std::vector GetOrderedImageIds() const; const SequentialPairingOptions options_; const std::shared_ptr cache_; std::vector image_ids_; // Optional mapping from frames to images and vice versa. std::unordered_map> frame_to_image_ids_; std::unordered_map image_to_frame_ids_; std::unique_ptr vocab_tree_pair_generator_; std::vector> image_pairs_; size_t image_idx_ = 0; }; class SpatialPairGenerator : public PairGenerator { public: using PairingOptions = SpatialPairingOptions; SpatialPairGenerator(const SpatialPairingOptions& options, const std::shared_ptr& cache); SpatialPairGenerator(const SpatialPairingOptions& options, const std::shared_ptr& database); void Reset() override; bool HasFinished() const override; std::vector> Next() override; Eigen::RowMajorMatrixXf ReadPositionPriorData(FeatureMatcherCache& cache); private: const SpatialPairingOptions options_; std::vector> image_pairs_; Eigen::Matrix index_matrix_; Eigen::RowMajorMatrixXf distance_squared_matrix_; std::vector image_ids_; std::vector position_idxs_; size_t current_idx_ = 0; int knn_ = 0; }; class TransitivePairGenerator : public PairGenerator { public: using PairingOptions = TransitivePairingOptions; TransitivePairGenerator(const TransitivePairingOptions& options, const std::shared_ptr& cache); TransitivePairGenerator(const TransitivePairingOptions& options, const std::shared_ptr& database); void Reset() override; bool HasFinished() const override; std::vector> Next() override; private: const TransitivePairingOptions options_; const std::shared_ptr cache_; int current_iteration_ = 0; int current_batch_idx_ = 0; int current_num_batches_ = 0; std::vector> image_pairs_; std::unordered_set image_pair_ids_; }; class ImportedPairGenerator : public PairGenerator { public: using PairingOptions = ImportedPairingOptions; ImportedPairGenerator(const ImportedPairingOptions& options, const std::shared_ptr& cache); ImportedPairGenerator(const ImportedPairingOptions& options, const std::shared_ptr& database); void Reset() override; bool HasFinished() const override; std::vector> Next() override; private: const ImportedPairingOptions options_; std::vector> image_pairs_; std::vector> block_image_pairs_; size_t pair_idx_ = 0; }; class ExistingMatchedPairGenerator : public PairGenerator { public: using PairingOptions = ExistingMatchedPairingOptions; ExistingMatchedPairGenerator( const ExistingMatchedPairingOptions& options, const std::shared_ptr& cache); ExistingMatchedPairGenerator(const ExistingMatchedPairingOptions& options, const std::shared_ptr& database); void Reset() override; bool HasFinished() const override; std::vector> Next() override; private: const ExistingMatchedPairingOptions options_; std::vector> image_pairs_; size_t start_idx_ = 0; size_t num_batches_ = 0; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/pairing_test.cc000066400000000000000000001015541522646662000224160ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/pairing.h" #include "colmap/feature/types.h" #include "colmap/retrieval/visual_index.h" #include "colmap/scene/database_sqlite.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include #include #include namespace colmap { namespace { void CreateSyntheticDatabase(int num_images, Database& database) { Reconstruction unused_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = num_images; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; SynthesizeDataset( synthetic_dataset_options, &unused_reconstruction, &database); } TEST(ExhaustivePairGenerator, Nominal) { constexpr int kNumImages = 34; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); ExhaustivePairingOptions options; options.block_size = 10; ExhaustivePairGenerator generator(options, database); const int num_expected_blocks = std::ceil(static_cast(kNumImages) / options.block_size) * std::ceil(static_cast(kNumImages) / options.block_size); std::set> pairs; for (int i = 0; i < num_expected_blocks; ++i) { for (const auto& pair : generator.Next()) { pairs.insert(pair); } } EXPECT_EQ(pairs.size(), kNumImages * (kNumImages - 1) / 2); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } std::unique_ptr CreateSyntheticVisualIndex() { auto visual_index = retrieval::VisualIndex::Create(); retrieval::VisualIndex::BuildOptions build_options; build_options.num_visual_words = 5; // NOLINTNEXTLINE(clang-analyzer-optin.cplusplus.VirtualCall) visual_index->Build( build_options, FeatureDescriptorsFloat(FeatureExtractorType::SIFT, FeatureDescriptorsFloatData::Random(50, 128))); return visual_index; } TEST(VocabTreePairGenerator, Nominal) { constexpr int kNumImages = 5; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); VocabTreePairingOptions options; options.vocab_tree_path = CreateTestDir() / "vocab_tree.txt"; // NOLINTNEXTLINE(clang-analyzer-optin.cplusplus.VirtualCall) CreateSyntheticVisualIndex()->Write(options.vocab_tree_path); { options.num_images = 3; VocabTreePairGenerator generator(options, database); for (int i = 0; i < kNumImages; ++i) { const auto pairs = generator.Next(); EXPECT_EQ(pairs.size(), options.num_images); EXPECT_EQ( (std::set>(pairs.begin(), pairs.end()) .size()), pairs.size()); } EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } { options.num_images = 100; VocabTreePairGenerator generator(options, database); for (int i = 0; i < kNumImages; ++i) { const auto pairs = generator.Next(); EXPECT_EQ(pairs.size(), kNumImages); } EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } } TEST(VocabTreePairGenerator, DoesNotDeadlockOnFailedQuery) { constexpr int kNumImages = 5; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); VocabTreePairingOptions options; options.vocab_tree_path = CreateTestDir() / "vocab_tree.txt"; CreateSyntheticVisualIndex()->Write(options.vocab_tree_path); options.num_images = 3; // Query a set of images that includes an invalid image identifier. Querying // the invalid image fails inside the worker thread. Even so, the generator // must not deadlock and must produce one result per query image. Regression // test for a hang where a failing query never pushed a result and the // consumer blocked indefinitely on the result queue (GH #4456). std::vector query_image_ids; query_image_ids.reserve(images.size() + 1); for (const auto& image : images) { query_image_ids.push_back(image.ImageId()); } const image_t kInvalidQueryImageId = 1000; query_image_ids.push_back(kInvalidQueryImageId); VocabTreePairGenerator generator(options, database, query_image_ids); for (size_t i = 0; i < query_image_ids.size(); ++i) { generator.Next(); } EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } TEST(SequentialPairGenerator, Linear) { constexpr int kNumImages = 5; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); SequentialPairingOptions options; options.overlap = 3; options.quadratic_overlap = false; SequentialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()), std::make_pair(images[0].ImageId(), images[3].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[2].ImageId()), std::make_pair(images[1].ImageId(), images[3].ImageId()), std::make_pair(images[1].ImageId(), images[4].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[3].ImageId()), std::make_pair(images[2].ImageId(), images[4].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[3].ImageId(), images[4].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } TEST(SequentialPairGenerator, LinearRig) { auto database = Database::Open(kInMemorySqliteDatabasePath); Reconstruction unused_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 3; SynthesizeDataset( synthetic_dataset_options, &unused_reconstruction, database.get()); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), synthetic_dataset_options.num_cameras_per_rig * synthetic_dataset_options.num_frames_per_rig); SequentialPairingOptions options; options.overlap = 1; options.quadratic_overlap = false; SequentialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()), std::make_pair(images[0].ImageId(), images[3].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[3].ImageId()), std::make_pair(images[2].ImageId(), images[4].ImageId()), std::make_pair(images[2].ImageId(), images[5].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[4].ImageId(), images[5].ImageId()), std::make_pair(images[4].ImageId(), images[1].ImageId()), std::make_pair(images[4].ImageId(), images[0].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()), std::make_pair(images[1].ImageId(), images[3].ImageId()), std::make_pair(images[1].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[3].ImageId(), images[2].ImageId()), std::make_pair(images[3].ImageId(), images[5].ImageId()), std::make_pair(images[3].ImageId(), images[4].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[5].ImageId(), images[4].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } TEST(SequentialPairGenerator, Quadratic) { constexpr int kNumImages = 5; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); SequentialPairingOptions options; options.overlap = 3; options.quadratic_overlap = true; SequentialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()), std::make_pair(images[0].ImageId(), images[4].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[2].ImageId()), std::make_pair(images[1].ImageId(), images[3].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[3].ImageId()), std::make_pair(images[2].ImageId(), images[4].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[3].ImageId(), images[4].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } TEST(SpatialPairGenerator, Nominal) { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(1, 2, 3); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = false; { SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } { options.ignore_z = true; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } { options.ignore_z = false; options.max_distance = 5; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } { options.max_num_neighbors = 2; options.max_distance = 1000; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()), std::make_pair(images[1].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()), std::make_pair(images[2].ImageId(), images[0].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } } TEST(SpatialPairGenerator, LargeCoordinates) { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(1, 2, 3) + Eigen::Vector3d::Constant(1e16); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4) + Eigen::Vector3d::Constant(1e16); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12) + Eigen::Vector3d::Constant(1e16); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = false; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } TEST(SpatialPairGenerator, MinNumNeighborsControlsMatchingDistance) { constexpr int kNumImages = 4; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const auto images = database->ReadAllImages(); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(1, 1, 2); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(1, 2, 3); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior3); PosePrior pose_prior4; pose_prior4.corr_data_id = images[3].DataId(); pose_prior4.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior4); SpatialPairingOptions options; options.ignore_z = false; options.max_num_neighbors = kNumImages; options.max_distance = 0.0; { options.min_num_neighbors = 0; EXPECT_FALSE(options.Check()); } { options.min_num_neighbors = 1; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[3].ImageId(), images[2].ImageId()))); EXPECT_TRUE(generator.Next().empty()); } { options.min_num_neighbors = 2; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()), std::make_pair(images[1].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()), std::make_pair(images[2].ImageId(), images[0].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[3].ImageId(), images[2].ImageId()), std::make_pair(images[3].ImageId(), images[1].ImageId()))); EXPECT_TRUE(generator.Next().empty()); } { options.min_num_neighbors = 3; SpatialPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()), std::make_pair(images[0].ImageId(), images[3].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[1].ImageId(), images[0].ImageId()), std::make_pair(images[1].ImageId(), images[2].ImageId()), std::make_pair(images[1].ImageId(), images[3].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[1].ImageId()), std::make_pair(images[2].ImageId(), images[0].ImageId()), std::make_pair(images[2].ImageId(), images[3].ImageId()))); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[3].ImageId(), images[2].ImageId()), std::make_pair(images[3].ImageId(), images[1].ImageId()), std::make_pair(images[3].ImageId(), images[0].ImageId()))); EXPECT_TRUE(generator.Next().empty()); } } TEST(SpatialPairGenerator, ReadPositionPriorData) { { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(1, 2, 3); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = false; auto cache = std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database)); SpatialPairGenerator generator(options, cache); Eigen::RowMajorMatrixXf position_matrix = generator.ReadPositionPriorData(*cache); EXPECT_EQ(position_matrix.rows(), 3); } { // Test that the position prior data is read correctly when some images // don't have a pose prior. constexpr int kNumImages = 4; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); database->ClearPosePriors(); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(1, 2, 3); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior4; pose_prior4.corr_data_id = images[3].DataId(); pose_prior4.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior4); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = false; auto cache = std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database)); SpatialPairGenerator generator(options, cache); Eigen::RowMajorMatrixXf position_matrix = generator.ReadPositionPriorData(*cache); EXPECT_EQ(position_matrix.rows(), 3); } { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(0, 0, std::numeric_limits::quiet_NaN()); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = false; auto cache = std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database)); SpatialPairGenerator generator(options, cache); Eigen::RowMajorMatrixXf position_matrix = generator.ReadPositionPriorData(*cache); EXPECT_EQ(position_matrix.rows(), 2); } { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(0, 0, std::numeric_limits::quiet_NaN()); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = true; auto cache = std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database)); SpatialPairGenerator generator(options, cache); Eigen::RowMajorMatrixXf position_matrix = generator.ReadPositionPriorData(*cache); EXPECT_EQ(position_matrix.rows(), 3); } { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN()); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = false; auto cache = std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database)); SpatialPairGenerator generator(options, cache); Eigen::RowMajorMatrixXf position_matrix = generator.ReadPositionPriorData(*cache); EXPECT_EQ(position_matrix.rows(), 2); } { constexpr int kNumImages = 3; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); PosePrior pose_prior1; pose_prior1.corr_data_id = images[0].DataId(); pose_prior1.position = Eigen::Vector3d(std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN(), std::numeric_limits::quiet_NaN()); database->WritePosePrior(pose_prior1); PosePrior pose_prior2; pose_prior2.corr_data_id = images[1].DataId(); pose_prior2.position = Eigen::Vector3d(2, 3, 4); database->WritePosePrior(pose_prior2); PosePrior pose_prior3; pose_prior3.corr_data_id = images[2].DataId(); pose_prior3.position = Eigen::Vector3d(2, 4, 12); database->WritePosePrior(pose_prior3); SpatialPairingOptions options; options.max_num_neighbors = 1; options.max_distance = 1000; options.ignore_z = true; auto cache = std::make_shared( options.CacheSize(), THROW_CHECK_NOTNULL(database)); SpatialPairGenerator generator(options, cache); Eigen::RowMajorMatrixXf position_matrix = generator.ReadPositionPriorData(*cache); EXPECT_EQ(position_matrix.rows(), 2); } } TEST(TransitivePairGenerator, Nominal) { constexpr int kNumImages = 5; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); TwoViewGeometry two_view_geometry; two_view_geometry.inlier_matches.resize(10); database->ClearTwoViewGeometries(); database->WriteTwoViewGeometry( images[0].ImageId(), images[1].ImageId(), two_view_geometry); database->WriteTwoViewGeometry( images[0].ImageId(), images[2].ImageId(), two_view_geometry); database->WriteTwoViewGeometry( images[1].ImageId(), images[3].ImageId(), two_view_geometry); TransitivePairingOptions options; TransitivePairGenerator generator(options, database); const auto pairs1 = generator.Next(); EXPECT_THAT(pairs1, testing::UnorderedElementsAre( std::make_pair(images[1].ImageId(), images[2].ImageId()), std::make_pair(images[0].ImageId(), images[3].ImageId()))); for (const auto& pair : pairs1) { database->WriteTwoViewGeometry(pair.first, pair.second, two_view_geometry); } EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[3].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } TEST(ImportedPairGenerator, Nominal) { constexpr int kNumImages = 10; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); ImportedPairingOptions options; options.match_list_path = CreateTestDir() / "pairs.txt"; { std::ofstream match_list_file(options.match_list_path); match_list_file.close(); ImportedPairGenerator generator(options, database); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } { std::ofstream match_list_file(options.match_list_path); match_list_file << images[2].Name() << " " << images[4].Name() << '\n'; match_list_file << images[1].Name() << " " << images[3].Name() << '\n'; match_list_file << images[2].Name() << " " << images[9].Name() << '\n'; match_list_file.close(); ImportedPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::ElementsAre( std::make_pair(images[2].ImageId(), images[4].ImageId()), std::make_pair(images[1].ImageId(), images[3].ImageId()), std::make_pair(images[2].ImageId(), images[9].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } } TEST(ExistingMatchedPairGenerator, Nominal) { constexpr int kNumImages = 5; auto database = Database::Open(kInMemorySqliteDatabasePath); CreateSyntheticDatabase(kNumImages, *database); const std::vector images = database->ReadAllImages(); CHECK_EQ(images.size(), kNumImages); database->ClearMatches(); database->WriteMatches( images[0].ImageId(), images[1].ImageId(), FeatureMatches(1)); database->WriteMatches( images[0].ImageId(), images[2].ImageId(), FeatureMatches(2)); database->WriteMatches( images[1].ImageId(), images[3].ImageId(), FeatureMatches(3)); database->WriteMatches( images[2].ImageId(), images[3].ImageId(), FeatureMatches(0)); ExistingMatchedPairingOptions options; options.batch_size = 2; ExistingMatchedPairGenerator generator(options, database); EXPECT_THAT(generator.Next(), testing::UnorderedElementsAre( std::make_pair(images[0].ImageId(), images[1].ImageId()), std::make_pair(images[0].ImageId(), images[2].ImageId()))); EXPECT_THAT(generator.Next(), testing::UnorderedElementsAre( std::make_pair(images[1].ImageId(), images[3].ImageId()))); EXPECT_TRUE(generator.Next().empty()); EXPECT_TRUE(generator.HasFinished()); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/reconstruction_clustering.cc000066400000000000000000000135411522646662000252440ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/reconstruction_clustering.h" #include "colmap/scene/reconstruction_clustering.h" #include "colmap/util/file.h" #include "colmap/util/logging.h" #include "colmap/util/misc.h" #include "colmap/util/timer.h" namespace colmap { namespace { // Extract a subset of the reconstruction for a specific cluster. // Returns a new Reconstruction containing only frames/images/points from the // specified cluster. std::shared_ptr SubReconstructionByClusterId( const Reconstruction& reconstruction, const std::unordered_map& cluster_ids, int cluster_id) { // Helper to get cluster id for a frame auto get_cluster_id = [&cluster_ids](frame_t frame_id) -> int { auto it = cluster_ids.find(frame_id); return it != cluster_ids.end() ? it->second : -1; }; // Make a copy of the reconstruction auto filtered = std::make_shared(reconstruction); // Collect frames to deregister (those not in this cluster) std::vector frames_to_deregister; for (const auto& [frame_id, frame] : filtered->Frames()) { if (!frame.HasPose() || get_cluster_id(frame_id) != cluster_id) { frames_to_deregister.push_back(frame_id); } } // Deregister frames not in this cluster // This also removes point observations from those frames' images for (frame_t frame_id : frames_to_deregister) { if (filtered->Frame(frame_id).HasPose()) { filtered->DeRegisterFrame(frame_id); } } filtered->UpdatePoint3DErrors(); return filtered; } } // namespace ReconstructionClustererController::ReconstructionClustererController( const ReconstructionClusteringOptions& options, std::shared_ptr reconstruction, std::shared_ptr reconstruction_manager) : options_(options), reconstruction_(std::move(reconstruction)), reconstruction_manager_(std::move(reconstruction_manager)) {} void ReconstructionClustererController::Run() { THROW_CHECK_NOTNULL(reconstruction_); THROW_CHECK_NOTNULL(reconstruction_manager_); LOG_HEADING1("Pruning weakly connected frames"); Timer timer; timer.Start(); std::unordered_map cluster_ids = ClusterReconstructionFrames(options_, *reconstruction_); LOG(INFO) << "Pruning done in " << timer.ElapsedSeconds() << " seconds"; LOG(INFO) << "Number of frames after pruning: " << reconstruction_->NumRegFrames(); // Find max cluster id int max_cluster_id = -1; for (const auto& [frame_id, cluster_id] : cluster_ids) { if (cluster_id > max_cluster_id) { max_cluster_id = cluster_id; } } // Clear any existing reconstructions reconstruction_manager_->Clear(); // If no clusters (or single cluster), add the single reconstruction // Note that cluster_id start from 0, so max_cluster_id of -1 means no // clusters if (max_cluster_id < 0) { if (reconstruction_->NumRegFrames() >= static_cast(options_.min_num_reg_frames)) { size_t idx = reconstruction_manager_->Add(); *reconstruction_manager_->Get(idx) = *reconstruction_; } else { LOG(WARNING) << "Reconstruction has only " << reconstruction_->NumRegFrames() << " registered frames, below minimum threshold of " << options_.min_num_reg_frames; } } else { // For invalid frames, clusters ids are -1 and are skipped automatically // Split by cluster and add multiple reconstructions for (int comp = 0; comp <= max_cluster_id; comp++) { std::shared_ptr cluster_reconstruction = SubReconstructionByClusterId(*reconstruction_, cluster_ids, comp); THROW_CHECK_GE( cluster_reconstruction->NumRegFrames(), static_cast( options_.min_num_reg_frames)); // Should always be true const size_t num_reg_frames = cluster_reconstruction->NumRegFrames(); size_t idx = reconstruction_manager_->Add(); reconstruction_manager_->Get(idx) = std::move(cluster_reconstruction); LOG(INFO) << "Added cluster " << comp << " with " << num_reg_frames << " registered frames"; } LOG(INFO) << "Created " << reconstruction_manager_->Size() << " cluster reconstructions"; } } } // namespace colmap colmap-4.1.1/src/colmap/controllers/reconstruction_clustering.h000066400000000000000000000052721522646662000251100ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/scene/reconstruction.h" #include "colmap/scene/reconstruction_clustering.h" #include "colmap/scene/reconstruction_manager.h" #include "colmap/util/base_controller.h" #include namespace colmap { // Controller that clusters frames from a reconstruction // and splits it into multiple reconstructions based on clustering. // Note: this module is experimental and should be verified carefully // before use in production pipelines. class ReconstructionClustererController : public BaseController { public: ReconstructionClustererController( const ReconstructionClusteringOptions& options, std::shared_ptr reconstruction, std::shared_ptr reconstruction_manager); // Runs the pruning and clustering algorithm. // Results are stored in the reconstruction manager passed to the constructor. void Run() override; private: const ReconstructionClusteringOptions options_; std::shared_ptr reconstruction_; std::shared_ptr reconstruction_manager_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/reconstruction_clustering_test.cc000066400000000000000000000270251522646662000263050ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/reconstruction_clustering.h" #include "colmap/math/random.h" #include "colmap/scene/synthetic.h" #include namespace colmap { namespace { // Creates a reconstruction with two weakly connected clusters. // The reconstruction is synthesized with `num_frames` frames, then split into // two clusters by removing cross-cluster observations, keeping only // `num_weak_links` 3D points that connect both clusters. void CreateTwoWeaklyConnectedClusters(Reconstruction* reconstruction, int num_frames, int num_points3D, int num_weak_links) { SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = num_frames; synthetic_options.num_points3D = num_points3D; synthetic_options.match_config = SyntheticDatasetOptions::MatchConfig::EXHAUSTIVE; SynthesizeDataset(synthetic_options, reconstruction); // Collect all frame IDs and split them into two clusters std::vector all_frames; for (const auto& [frame_id, frame] : reconstruction->Frames()) { if (frame.HasPose()) { all_frames.push_back(frame_id); } } std::sort(all_frames.begin(), all_frames.end()); const size_t half = all_frames.size() / 2; std::unordered_set cluster1_frames(all_frames.begin(), all_frames.begin() + half); std::unordered_set cluster2_frames(all_frames.begin() + half, all_frames.end()); // For each 3D point, randomly assign it to one cluster and remove all // observations from the other cluster. Keep a few points as weak links. std::vector points_to_delete; int weak_link_count = 0; for (auto& [point3D_id, point3D] : reconstruction->Points3D()) { std::vector> cluster1_obs; std::vector> cluster2_obs; for (const auto& elem : point3D.track.Elements()) { const frame_t frame_id = reconstruction->Image(elem.image_id).FrameId(); if (cluster1_frames.count(frame_id)) { cluster1_obs.emplace_back(elem.image_id, elem.point2D_idx); } else if (cluster2_frames.count(frame_id)) { cluster2_obs.emplace_back(elem.image_id, elem.point2D_idx); } } // If the point has observations in both clusters if (!cluster1_obs.empty() && !cluster2_obs.empty()) { // Keep a few points as weak links (with observations in both clusters) if (weak_link_count < num_weak_links) { weak_link_count++; continue; } // Randomly assign this point to one cluster bool assign_to_cluster1 = (RandomUniformInteger(0, 1) == 0); const auto& obs_to_remove = assign_to_cluster1 ? cluster2_obs : cluster1_obs; for (const auto& [image_id, point2D_idx] : obs_to_remove) { reconstruction->DeleteObservation(image_id, point2D_idx); } // If the track is now too short, mark for deletion if (point3D.track.Length() < 2) { points_to_delete.push_back(point3D_id); } } } // Delete points with insufficient observations for (point3D_t point3D_id : points_to_delete) { if (reconstruction->ExistsPoint3D(point3D_id)) { reconstruction->DeletePoint3D(point3D_id); } } } TEST(ReconstructionClustererController, EmptyReconstruction) { SetPRNGSeed(1); auto reconstruction = std::make_shared(); auto reconstruction_manager = std::make_shared(); ReconstructionClusteringOptions options; ReconstructionClustererController controller( options, reconstruction, reconstruction_manager); EXPECT_NO_THROW(controller.Run()); // Empty reconstruction should result in no output reconstructions EXPECT_EQ(reconstruction_manager->Size(), 0); } TEST(ReconstructionClustererController, SingleCluster) { SetPRNGSeed(1); auto reconstruction = std::make_shared(); // Create a synthetic dataset with well-connected frames SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = 5; synthetic_options.num_points3D = 200; // More points for better covisibility synthetic_options.match_config = SyntheticDatasetOptions::MatchConfig::EXHAUSTIVE; SynthesizeDataset(synthetic_options, reconstruction.get()); EXPECT_EQ(reconstruction->NumRegFrames(), 5); auto reconstruction_manager = std::make_shared(); // Use relaxed clustering options to ensure all frames stay connected ReconstructionClusteringOptions options; ReconstructionClustererController controller( options, reconstruction, reconstruction_manager); // Controller should run without crashing EXPECT_NO_THROW(controller.Run()); EXPECT_EQ(reconstruction_manager->Size(), 1); } TEST(ReconstructionClustererController, SingleClusterWithOutlierFrames) { SetPRNGSeed(42); auto reconstruction = std::make_shared(); // Create a well-connected reconstruction with more frames SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = 10; synthetic_options.num_points3D = 500; synthetic_options.match_config = SyntheticDatasetOptions::MatchConfig::EXHAUSTIVE; SynthesizeDataset(synthetic_options, reconstruction.get()); const size_t total_frames = reconstruction->NumRegFrames(); EXPECT_EQ(total_frames, 10); // Select the last 3 frames as outliers and remove all their 3D point // observations, making them isolated from the main cluster constexpr int kNumOutliers = 3; std::vector all_frame_ids(reconstruction->RegFrameIds().begin(), reconstruction->RegFrameIds().end()); std::sort(all_frame_ids.begin(), all_frame_ids.end()); std::unordered_set outlier_frame_ids; for (size_t i = total_frames - kNumOutliers; i < total_frames; i++) { outlier_frame_ids.insert(all_frame_ids[i]); } // Remove all 3D point observations from outlier frames for (const frame_t outlier_frame_id : outlier_frame_ids) { const Frame& frame = reconstruction->Frame(outlier_frame_id); for (const data_t& data_id : frame.ImageIds()) { const image_t image_id = data_id.id; Image& image = reconstruction->Image(image_id); const auto num_points2D = image.NumPoints2D(); for (point2D_t point2D_idx = 0; point2D_idx < num_points2D; ++point2D_idx) { if (image.Point2D(point2D_idx).HasPoint3D()) { reconstruction->DeleteObservation(image_id, point2D_idx); } } } } const size_t main_cluster_frames = total_frames - kNumOutliers; auto reconstruction_manager = std::make_shared(); ReconstructionClusteringOptions options; options.min_num_reg_frames = 3; ReconstructionClustererController controller( options, reconstruction, reconstruction_manager); controller.Run(); // Should produce exactly one cluster containing only the main frames // The outlier frames should be filtered out (cluster_id = -1) because // they have no covisibility edges with any other frames EXPECT_EQ(reconstruction_manager->Size(), 1) << "Expected single cluster after filtering outliers"; // The single cluster should contain only the main cluster frames EXPECT_EQ(reconstruction_manager->Get(0)->NumRegFrames(), main_cluster_frames) << "Outlier frames should not be included in the output reconstruction"; } TEST(ReconstructionClustererController, MinNumRegFramesFilter) { SetPRNGSeed(1); auto reconstruction = std::make_shared(); // Create a small synthetic dataset SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = 2; synthetic_options.num_points3D = 20; SynthesizeDataset(synthetic_options, reconstruction.get()); auto reconstruction_manager = std::make_shared(); // Set min_num_reg_frames higher than the number of frames ReconstructionClusteringOptions options; options.min_num_reg_frames = 5; ReconstructionClustererController controller( options, reconstruction, reconstruction_manager); controller.Run(); // Should be filtered out due to min_num_reg_frames threshold EXPECT_EQ(reconstruction_manager->Size(), 0); } TEST(ReconstructionClustererController, TwoWeaklyConnectedClusters) { SetPRNGSeed(42); auto reconstruction = std::make_shared(); // Create a reconstruction with two clusters connected by only 10 weak links constexpr int kNumFrames = 10; constexpr int kNumPoints3D = 500; constexpr int kNumWeakLinks = 10; CreateTwoWeaklyConnectedClusters( reconstruction.get(), kNumFrames, kNumPoints3D, kNumWeakLinks); EXPECT_EQ(reconstruction->NumRegFrames(), kNumFrames); auto reconstruction_manager = std::make_shared(); // Use default clustering options - the algorithm should detect the weak // connection and split into two clusters ReconstructionClusteringOptions options; options.min_num_reg_frames = 3; ReconstructionClustererController controller( options, reconstruction, reconstruction_manager); controller.Run(); // The algorithm should produce two separate reconstructions EXPECT_EQ(reconstruction_manager->Size(), 2) << "Expected two clusters from weakly connected reconstruction"; // Check that each cluster has exactly half of the frames const size_t expected_frames_per_cluster = kNumFrames / 2; for (size_t i = 0; i < reconstruction_manager->Size(); i++) { EXPECT_EQ(reconstruction_manager->Get(i)->NumRegFrames(), expected_frames_per_cluster); } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/rotation_averaging.cc000066400000000000000000000126371522646662000236130ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/rotation_averaging.h" #include "colmap/estimators/gravity_refinement.h" #include "colmap/estimators/rotation_averaging.h" #include "colmap/estimators/two_view_geometry.h" #include "colmap/geometry/pose.h" #include "colmap/scene/pose_graph.h" #include "colmap/util/logging.h" #include "colmap/util/misc.h" #include "colmap/util/timer.h" #include namespace colmap { RotationAveragingPipeline::RotationAveragingPipeline( const RotationAveragingPipelineOptions& options, std::shared_ptr database, std::shared_ptr reconstruction) : options_(options), reconstruction_(std::move(THROW_CHECK_NOTNULL(reconstruction))) { THROW_CHECK_NOTNULL(database); LOG(INFO) << "Loading database"; DatabaseCache::Options database_cache_options; database_cache_options.min_num_matches = options_.min_num_matches; database_cache_options.ignore_watermarks = options_.ignore_watermarks; database_cache_options.image_names = {options_.image_names.begin(), options_.image_names.end()}; database_cache_ = DatabaseCache::Create(*database, database_cache_options); if (options_.decompose_relative_pose) { MaybeDecomposeRelativePoses(database_cache_.get()); } } void RotationAveragingPipeline::Run() { // Propagate options to component options. RotationAveragingPipelineOptions options = options_; options.rotation_estimation.random_seed = options.random_seed; options.gravity_refiner.solver_options.num_threads = options.num_threads; Timer run_timer; run_timer.Start(); // Load reconstruction and pose graph from database cache. reconstruction_->Load(*database_cache_); PoseGraph pose_graph; pose_graph.Load(*database_cache_->CorrespondenceGraph()); if (pose_graph.Empty()) { LOG(ERROR) << "Cannot continue without image pairs"; return; } // Get a mutable copy of pose priors. std::vector pose_priors = database_cache_->PosePriors(); // Initialize frame rotations from gravity priors. const Eigen::Vector3d kUnknownTranslation = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); for (const auto& pose_prior : pose_priors) { if (!pose_prior.HasGravity()) { continue; } const auto& image = reconstruction_->Image(pose_prior.pose_prior_id); if (!image.IsRefInFrame()) { continue; } reconstruction_->Frame(image.FrameId()) .SetRigFromWorld(Rigid3d( Eigen::Quaterniond(GravityAlignedRotation(pose_prior.gravity)), kUnknownTranslation)); } // Optionally refine gravity priors (only if gravity priors exist). if (options.refine_gravity && !pose_priors.empty()) { // Compute largest connected component and invalidate pairs before gravity // refinement. const std::unordered_set active_frame_ids = pose_graph.ComputeLargestConnectedFrameComponent( *reconstruction_, /*filter_unregistered=*/false); std::unordered_set active_image_ids; for (const auto& [image_id, image] : reconstruction_->Images()) { if (active_frame_ids.count(image.FrameId())) { active_image_ids.insert(image_id); } } pose_graph.InvalidatePairsOutsideActiveImageIds(active_image_ids); LOG_HEADING1("Running gravity refinement"); RunGravityRefinement( options.gravity_refiner, pose_graph, *reconstruction_, pose_priors); } LOG_HEADING1("Running rotation averaging"); if (!RunRotationAveraging(options.rotation_estimation, pose_graph, *reconstruction_, pose_priors)) { LOG(ERROR) << "Failed to solve rotation averaging"; return; } LOG(INFO) << "Rotation averaging done in " << run_timer.ElapsedSeconds() << "s"; } } // namespace colmap colmap-4.1.1/src/colmap/controllers/rotation_averaging.h000066400000000000000000000065611522646662000234540ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/estimators/gravity_refinement.h" #include "colmap/estimators/rotation_averaging.h" #include "colmap/scene/database_cache.h" #include "colmap/scene/reconstruction.h" #include "colmap/util/base_controller.h" #include #include namespace colmap { struct RotationAveragingPipelineOptions { // The minimum number of matches for inlier matches to be considered. int min_num_matches = 0; // Whether to ignore the inlier matches of watermark image pairs. bool ignore_watermarks = false; // Names of images to reconstruct. If empty, all images are used. std::vector image_names; // Number of threads. int num_threads = -1; // PRNG seed for all stochastic methods during reconstruction. // If -1 (default), the seed is derived from the current time // (non-deterministic). If >= 0, the pipeline is deterministic with the given // seed. int random_seed = -1; // Whether to decompose relative poses from two-view geometries. bool decompose_relative_pose = true; // Whether to refine gravity priors before rotation averaging. bool refine_gravity = false; // Options for gravity refinement. GravityRefinerOptions gravity_refiner; // Options for rotation averaging. RotationEstimatorOptions rotation_estimation; }; class RotationAveragingPipeline : public BaseController { public: RotationAveragingPipeline(const RotationAveragingPipelineOptions& options, std::shared_ptr database, std::shared_ptr reconstruction); void Run() override; private: const RotationAveragingPipelineOptions options_; std::shared_ptr database_cache_; std::shared_ptr reconstruction_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/rotation_averaging_test.cc000066400000000000000000000163021522646662000246430ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/rotation_averaging.h" #include "colmap/math/random.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { void ExpectEqualRotations(const Reconstruction& gt, const Reconstruction& computed, const double max_rotation_error_deg) { const double max_rotation_error_rad = DegToRad(max_rotation_error_deg); const std::vector reg_image_ids = gt.RegImageIds(); for (size_t i = 0; i < reg_image_ids.size(); i++) { const image_t image_id1 = reg_image_ids[i]; for (size_t j = 0; j < i; j++) { const image_t image_id2 = reg_image_ids[j]; const Eigen::Quaterniond cam2_from_cam1 = computed.Image(image_id2).CamFromWorld().rotation() * computed.Image(image_id1).CamFromWorld().rotation().inverse(); const Eigen::Quaterniond cam2_from_cam1_gt = gt.Image(image_id2).CamFromWorld().rotation() * gt.Image(image_id1).CamFromWorld().rotation().inverse(); EXPECT_LT(cam2_from_cam1.angularDistance(cam2_from_cam1_gt), max_rotation_error_rad); } } } TEST(RotationAveragingPipeline, WithoutNoise) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); auto reconstruction = std::make_shared(); RotationAveragingPipelineOptions options; RotationAveragingPipeline controller(options, database, reconstruction); controller.Run(); ExpectEqualRotations(gt_reconstruction, *reconstruction, /*max_rotation_error_deg=*/1e-2); } TEST(RotationAveragingPipeline, WithNoiseAndOutliers) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.inlier_match_ratio = 0.6; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); auto reconstruction = std::make_shared(); RotationAveragingPipelineOptions options; RotationAveragingPipeline controller(options, database, reconstruction); controller.Run(); ExpectEqualRotations(gt_reconstruction, *reconstruction, /*max_rotation_error_deg=*/3); } void ExpectExactEqualRotations(const Reconstruction& reconstruction1, const Reconstruction& reconstruction2) { const std::vector reg_image_ids = reconstruction1.RegImageIds(); ASSERT_EQ(reg_image_ids.size(), reconstruction2.RegImageIds().size()); for (const image_t image_id : reg_image_ids) { EXPECT_EQ( reconstruction1.Image(image_id).CamFromWorld().rotation().coeffs(), reconstruction2.Image(image_id).CamFromWorld().rotation().coeffs()); } } TEST(RotationAveragingPipeline, WithRandomSeedStability) { SetPRNGSeed(1); const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; SynthesizeNoise(synthetic_noise_options, >_reconstruction, database.get()); auto run_controller = [&](int num_threads, int random_seed) { auto reconstruction = std::make_shared(); RotationAveragingPipelineOptions options; options.num_threads = num_threads; options.random_seed = random_seed; RotationAveragingPipeline controller(options, database, reconstruction); controller.Run(); return reconstruction; }; constexpr int kRandomSeed = 42; // Single-threaded execution. { auto reconstruction0 = run_controller(/*num_threads=*/1, /*random_seed=*/kRandomSeed); auto reconstruction1 = run_controller(/*num_threads=*/1, /*random_seed=*/kRandomSeed); ExpectExactEqualRotations(*reconstruction0, *reconstruction1); } // Multi-threaded execution. { auto reconstruction0 = run_controller(/*num_threads=*/3, /*random_seed=*/kRandomSeed); auto reconstruction1 = run_controller(/*num_threads=*/3, /*random_seed=*/kRandomSeed); // Same seed should produce similar results, up to floating-point variations // in optimization. ExpectEqualRotations(*reconstruction0, *reconstruction1, /*max_rotation_error_deg=*/1e-10); } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/controllers/undistorters.cc000066400000000000000000000721211522646662000224700ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/undistorters.h" #include "colmap/scene/reconstruction_io.h" #include "colmap/sensor/models.h" #include "colmap/util/misc.h" #include "colmap/util/threading.h" #include #include #include namespace colmap { namespace { void MaybeSetJpegQuality(const std::filesystem::path& path, Bitmap& bitmap, int jpeg_quality) { if ((HasFileExtension(path, ".jpg") || HasFileExtension(path, ".jpeg")) && jpeg_quality > 0) { bitmap.SetMetaData("Compression", "jpeg:" + std::to_string(jpeg_quality)); } } template void WriteMatrix(const Eigen::MatrixBase& matrix, std::ofstream* file) { using index_t = typename Eigen::MatrixBase::Index; for (index_t r = 0; r < matrix.rows(); ++r) { for (index_t c = 0; c < matrix.cols() - 1; ++c) { *file << matrix(r, c) << " "; } *file << matrix(r, matrix.cols() - 1) << '\n'; } } // Write projection matrix P = K * [R t] to file and prepend given header. void WriteProjectionMatrix(const std::filesystem::path& path, const Camera& camera, const Image& image, const std::string& header) { THROW_CHECK(camera.model_id == PinholeCameraModel::model_id); std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file.imbue(std::locale::classic()); Eigen::Matrix3d calib_matrix = Eigen::Matrix3d::Identity(); calib_matrix(0, 0) = camera.FocalLengthX(); calib_matrix(1, 1) = camera.FocalLengthY(); calib_matrix(0, 2) = camera.PrincipalPointX(); calib_matrix(1, 2) = camera.PrincipalPointY(); const Eigen::Matrix3x4d img_from_world = calib_matrix * image.CamFromWorld().ToMatrix(); if (!header.empty()) { file << header << '\n'; } WriteMatrix(img_from_world, &file); } void WriteCOLMAPCommands(const bool geometric, const std::filesystem::path& workspace_path, const std::string& workspace_format, const std::string& pmvs_option_name, const std::string& output_prefix, const std::string& indent, std::ofstream* file) { if (geometric) { *file << indent << "$COLMAP_EXE_PATH/colmap patch_match_stereo \\\n"; *file << indent << " --workspace_path " << workspace_path << " \\\n"; *file << indent << " --workspace_format " << workspace_format << " \\\n"; if (workspace_format == "PMVS") { *file << indent << " --pmvs_option_name " << pmvs_option_name << " \\\n"; } *file << indent << " --PatchMatchStereo.max_image_size 2000 \\\n"; *file << indent << " --PatchMatchStereo.geom_consistency true\n"; } else { *file << indent << "$COLMAP_EXE_PATH/colmap patch_match_stereo \\\n"; *file << indent << " --workspace_path " << workspace_path << " \\\n"; *file << indent << " --workspace_format " << workspace_format << " \\\n"; if (workspace_format == "PMVS") { *file << indent << " --pmvs_option_name " << pmvs_option_name << " \\\n"; } *file << indent << " --PatchMatchStereo.max_image_size 2000 \\\n"; *file << indent << " --PatchMatchStereo.geom_consistency false\n"; } *file << indent << "$COLMAP_EXE_PATH/colmap stereo_fusion \\\n"; *file << indent << " --workspace_path " << workspace_path << " \\\n"; *file << indent << " --workspace_format " << workspace_format << " \\\n"; if (workspace_format == "PMVS") { *file << indent << " --pmvs_option_name " << pmvs_option_name << " \\\n"; } if (geometric) { *file << indent << " --input_type geometric \\\n"; } else { *file << indent << " --input_type photometric \\\n"; } *file << indent << " --output_path " << workspace_path / (output_prefix + "fused.ply") << " \\\n"; *file << indent << "$COLMAP_EXE_PATH/colmap poisson_mesher \\\n"; *file << indent << " --input_path " << workspace_path / (output_prefix + "fused.ply") << " \\\n"; *file << indent << " --output_path " << workspace_path / (output_prefix + "meshed-poisson.ply") << " \\\n"; *file << indent << "$COLMAP_EXE_PATH/colmap delaunay_mesher \\\n"; *file << indent << " --input_path " << workspace_path / output_prefix << " \\\n"; *file << indent << " --input_type dense \\\n"; *file << indent << " --output_path " << workspace_path / (output_prefix + "meshed-delaunay.ply") << " \\\n"; } } // namespace COLMAPUndistorter::COLMAPUndistorter( Options options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path) : options_(std::move(options)), camera_options_(camera_options), reconstruction_(reconstruction), image_path_(image_path), output_path_(output_path) { THROW_CHECK_GE(options_.num_patch_match_src_images, 1); THROW_CHECK_GE(options_.jpeg_quality, -1); THROW_CHECK_LE(options_.jpeg_quality, 100); } void COLMAPUndistorter::Run() { LOG_HEADING1("Image undistortion"); Timer run_timer; run_timer.Start(); CreateDirIfNotExists(output_path_ / "images"); CreateDirIfNotExists(output_path_ / "sparse"); CreateDirIfNotExists(output_path_ / "stereo"); CreateDirIfNotExists(output_path_ / "stereo" / "depth_maps"); CreateDirIfNotExists(output_path_ / "stereo" / "normal_maps"); CreateDirIfNotExists(output_path_ / "stereo" / "consistency_graphs"); reconstruction_.CreateImageDirs(output_path_ / "images"); reconstruction_.CreateImageDirs(output_path_ / "stereo" / "depth_maps"); reconstruction_.CreateImageDirs(output_path_ / "stereo" / "normal_maps"); reconstruction_.CreateImageDirs(output_path_ / "stereo" / "consistency_graphs"); const std::vector image_ids = options_.image_ids.empty() ? reconstruction_.RegImageIds() : options_.image_ids; const size_t num_images = image_ids.size(); ThreadPool thread_pool(options_.num_threads); std::vector> futures; futures.reserve(num_images); for (const image_t image_id : image_ids) { futures.push_back( thread_pool.AddTask(&COLMAPUndistorter::Undistort, this, image_id)); } // Only use the image names for the successfully undistorted images // when writing the MVS config files std::vector image_names; image_names.reserve(num_images); for (size_t i = 0; i < futures.size(); ++i) { if (CheckIfStopped()) { break; } LOG(INFO) << StringPrintf( "Undistorting image [%d/%d]", i + 1, futures.size()); if (futures[i].get()) { image_names.push_back(reconstruction_.Image(image_ids[i]).Name()); } } LOG(INFO) << "Writing reconstruction..."; Reconstruction undistorted_reconstruction = reconstruction_; UndistortReconstruction(camera_options_, &undistorted_reconstruction); undistorted_reconstruction.Write(output_path_ / "sparse"); LOG(INFO) << "Writing configuration..."; WritePatchMatchConfig(image_names); WriteFusionConfig(image_names); LOG(INFO) << "Writing scripts..."; WriteScript(/*geometric=*/false); WriteScript(/*geometric=*/true); run_timer.PrintMinutes(); } bool COLMAPUndistorter::Undistort(const image_t image_id) const { const Image& image = reconstruction_.Image(image_id); const Camera& camera = *image.CameraPtr(); const auto input_image_path = image_path_ / image.Name(); const auto output_image_path = output_path_ / "images" / image.Name(); // Non-perspective cameras (e.g. EQUIRECTANGULAR) have no pinhole image plane // to undistort to. Without a size limit they are copied through unchanged // (they cannot be rescaled to a pinhole image for MVS); with a max_image_size // they still go through UndistortImage below, which resizes them to a smaller // image of the same model. if (!camera.IsPerspective() && camera_options_.max_image_size < 0 && ExistsFile(input_image_path)) { LOG(WARNING) << "Cannot undistort image " << image.Name() << " with non-perspective camera model " << camera.ModelName() << "; copying the original image."; FileCopy(input_image_path, output_image_path, options_.copy_type); return true; } // Already-undistorted perspective images are copied through only when no // rescaling is requested; with a max_image_size they still go through // UndistortImage below so the size limit is applied. if (camera.IsUndistorted() && camera_options_.max_image_size < 0 && ExistsFile(input_image_path)) { LOG(INFO) << "Copying already undistorted image to location: " << output_image_path; FileCopy(input_image_path, output_image_path, options_.copy_type); return true; } Bitmap distorted_bitmap; if (!distorted_bitmap.Read(input_image_path)) { LOG(ERROR) << "Cannot read image at path: " << input_image_path; return false; } Bitmap undistorted_bitmap; Camera undistorted_camera; UndistortImage(camera_options_, distorted_bitmap, camera, &undistorted_bitmap, &undistorted_camera); MaybeSetJpegQuality( output_image_path, undistorted_bitmap, options_.jpeg_quality); return undistorted_bitmap.Write(output_image_path); } void COLMAPUndistorter::WritePatchMatchConfig( const std::vector& image_names) const { const auto path = output_path_ / "stereo" / "patch-match.cfg"; std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); for (const auto& image_name : image_names) { file << image_name << '\n'; file << "__auto__, " << options_.num_patch_match_src_images << '\n'; } } void COLMAPUndistorter::WriteFusionConfig( const std::vector& image_names) const { const auto path = output_path_ / "stereo" / "fusion.cfg"; std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); for (const auto& image_name : image_names) { file << image_name << '\n'; } } void COLMAPUndistorter::WriteScript(const bool geometric) const { const auto path = output_path_ / (geometric ? "run-colmap-geometric.sh" : "run-colmap-photometric.sh"); std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "# You must set $COLMAP_EXE_PATH to \n" << "# the directory containing the COLMAP executables.\n"; WriteCOLMAPCommands(geometric, ".", "COLMAP", "option-all", "", "", &file); } PMVSUndistorter::PMVSUndistorter(const Options& options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path) : options_(options), camera_options_(camera_options), reconstruction_(reconstruction), image_path_(image_path), output_path_(output_path) { THROW_CHECK_GE(options_.jpeg_quality, -1); THROW_CHECK_LE(options_.jpeg_quality, 100); } void PMVSUndistorter::Run() { LOG_HEADING1("Image undistortion (CMVS/PMVS)"); Timer run_timer; run_timer.Start(); CreateDirIfNotExists(output_path_ / "pmvs"); CreateDirIfNotExists(output_path_ / "pmvs" / "txt"); CreateDirIfNotExists(output_path_ / "pmvs" / "visualize"); CreateDirIfNotExists(output_path_ / "pmvs" / "models"); ThreadPool thread_pool(options_.num_threads); std::vector> futures; futures.reserve(reconstruction_.NumRegImages()); for (size_t i = 0; i < reconstruction_.NumRegImages(); ++i) { futures.push_back( thread_pool.AddTask(&PMVSUndistorter::Undistort, this, i)); } for (size_t i = 0; i < futures.size(); ++i) { if (CheckIfStopped()) { thread_pool.Stop(); LOG(WARNING) << "Stopped the undistortion process. Image point " "locations and camera parameters for not yet processed " "images in the Bundler output file is probably wrong."; break; } LOG(INFO) << StringPrintf( "Undistorting image [%d/%d]", i + 1, futures.size()); futures[i].get(); } LOG(INFO) << "Writing bundle file..."; Reconstruction undistorted_reconstruction = reconstruction_; UndistortReconstruction(camera_options_, &undistorted_reconstruction); const auto bundle_path = output_path_ / "pmvs" / "bundle.rd.out"; ExportBundler(undistorted_reconstruction, bundle_path, AddFileExtension(bundle_path, ".list.txt")); LOG(INFO) << "Writing visibility file..."; WriteVisibilityData(); LOG(INFO) << "Writing option file..."; WriteOptionFile(); LOG(INFO) << "Writing scripts..."; WritePMVSScript(); WriteCMVSPMVSScript(); WriteCOLMAPScript(false); WriteCOLMAPScript(true); WriteCMVSCOLMAPScript(false); WriteCMVSCOLMAPScript(true); run_timer.PrintMinutes(); } bool PMVSUndistorter::Undistort(const size_t reg_image_idx) const { const auto output_image_path = output_path_ / StringPrintf("pmvs/visualize/%08d.jpg", reg_image_idx); const auto proj_matrix_path = output_path_ / StringPrintf("pmvs/txt/%08d.txt", reg_image_idx); const image_t image_id = *std::next(reconstruction_.RegImageIds().begin(), reg_image_idx); const Image& image = reconstruction_.Image(image_id); const Camera& camera = *image.CameraPtr(); Bitmap distorted_bitmap; const auto input_image_path = image_path_ / image.Name(); if (!distorted_bitmap.Read(input_image_path)) { LOG(ERROR) << "Cannot read image at path " << input_image_path; return false; } Bitmap undistorted_bitmap; Camera undistorted_camera; UndistortImage(camera_options_, distorted_bitmap, camera, &undistorted_bitmap, &undistorted_camera); WriteProjectionMatrix(proj_matrix_path, undistorted_camera, image, "CONTOUR"); MaybeSetJpegQuality( output_image_path, undistorted_bitmap, options_.jpeg_quality); return undistorted_bitmap.Write(output_image_path); } void PMVSUndistorter::WriteVisibilityData() const { const auto path = output_path_ / "pmvs" / "vis.dat"; std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "VISDATA\n"; file << reconstruction_.NumRegImages() << '\n'; size_t image_idx = 0; for (const image_t image_id : reconstruction_.RegImageIds()) { const Image& image = reconstruction_.Image(image_id); std::unordered_set visible_image_ids; for (point2D_t point2D_idx = 0; point2D_idx < image.NumPoints2D(); ++point2D_idx) { const Point2D& point2D = image.Point2D(point2D_idx); if (point2D.HasPoint3D()) { const Point3D& point3D = reconstruction_.Point3D(point2D.point3D_id); for (const TrackElement& track_el : point3D.track.Elements()) { if (track_el.image_id != image_id) { visible_image_ids.insert(track_el.image_id); } } } } std::vector sorted_visible_image_ids(visible_image_ids.begin(), visible_image_ids.end()); std::sort(sorted_visible_image_ids.begin(), sorted_visible_image_ids.end()); file << image_idx++ << " " << visible_image_ids.size(); for (const image_t visible_image_id : sorted_visible_image_ids) { file << " " << visible_image_id; } file << '\n'; } } void PMVSUndistorter::WritePMVSScript() const { const auto path = output_path_ / "run-pmvs.sh"; std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "# You must set $PMVS_EXE_PATH to \n" << "# the directory containing the CMVS-PMVS executables.\n"; file << "$PMVS_EXE_PATH/pmvs2 pmvs/ option-all\n"; } void PMVSUndistorter::WriteCMVSPMVSScript() const { const auto path = output_path_ / "run-cmvs-pmvs.sh"; std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "# You must set $PMVS_EXE_PATH to \n" << "# the directory containing the CMVS-PMVS executables.\n"; file << "$PMVS_EXE_PATH/cmvs pmvs/\n"; file << "$PMVS_EXE_PATH/genOption pmvs/\n"; file << "find pmvs/ -iname \"option-*\" | sort | while read file_name\n"; file << "do\n"; file << " option_name=$(basename \"$file_name\")\n"; file << " if [ \"$option_name\" = \"option-all\" ]; then\n"; file << " continue\n"; file << " fi\n"; file << " $PMVS_EXE_PATH/pmvs2 pmvs/ $option_name\n"; file << "done\n"; } void PMVSUndistorter::WriteCOLMAPScript(const bool geometric) const { const auto path = output_path_ / (geometric ? "run-colmap-geometric.sh" : "run-colmap-photometric.sh"); std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "# You must set $COLMAP_EXE_PATH to \n" << "# the directory containing the COLMAP executables.\n"; WriteCOLMAPCommands( geometric, "pmvs", "PMVS", "option-all", "option-all-", "", &file); } void PMVSUndistorter::WriteCMVSCOLMAPScript(const bool geometric) const { const auto path = output_path_ / (geometric ? "run-cmvs-colmap-geometric.sh" : "run-cmvs-colmap-photometric.sh"); std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "# You must set $PMVS_EXE_PATH to \n" << "# the directory containing the CMVS-PMVS executables\n"; file << "# and you must set $COLMAP_EXE_PATH to \n" << "# the directory containing the COLMAP executables.\n"; file << "$PMVS_EXE_PATH/cmvs pmvs/\n"; file << "$PMVS_EXE_PATH/genOption pmvs/\n"; file << "find pmvs/ -iname \"option-*\" | sort | while read file_name\n"; file << "do\n"; file << " workspace_path=$(dirname \"$file_name\")\n"; file << " option_name=$(basename \"$file_name\")\n"; file << " if [ \"$option_name\" = \"option-all\" ]; then\n"; file << " continue\n"; file << " fi\n"; file << " rm -rf \"$workspace_path/stereo\"\n"; WriteCOLMAPCommands(geometric, "pmvs", "PMVS", "$option_name", "$option_name-", " ", &file); file << "done\n"; } void PMVSUndistorter::WriteOptionFile() const { const auto path = output_path_ / "pmvs" / "option-all"; std::ofstream file(path, std::ios::trunc); THROW_CHECK_FILE_OPEN(file, path); file << "# Generated by COLMAP - all images, no clustering.\n"; file << "level 1\n"; file << "csize 2\n"; file << "threshold 0.7\n"; file << "wsize 7\n"; file << "minImageNum 3\n"; file << "CPU " << std::thread::hardware_concurrency() << '\n'; file << "setEdge 0\n"; file << "useBound 0\n"; file << "useVisData 1\n"; file << "sequence -1\n"; file << "maxAngle 10\n"; file << "quad 2.0\n"; file << "timages " << reconstruction_.NumRegImages(); for (size_t i = 0; i < reconstruction_.NumRegImages(); ++i) { file << " " << i; } file << '\n'; file << "oimages 0\n"; } CMPMVSUndistorter::CMPMVSUndistorter( const Options& options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path) : options_(options), camera_options_(camera_options), image_path_(image_path), output_path_(output_path), reconstruction_(reconstruction) { THROW_CHECK_GE(options_.jpeg_quality, -1); THROW_CHECK_LE(options_.jpeg_quality, 100); } void CMPMVSUndistorter::Run() { LOG_HEADING1("Image undistortion (CMP-MVS)"); Timer run_timer; run_timer.Start(); ThreadPool thread_pool(options_.num_threads); std::vector> futures; futures.reserve(reconstruction_.NumRegImages()); for (size_t i = 0; i < reconstruction_.NumRegImages(); ++i) { futures.push_back( thread_pool.AddTask(&CMPMVSUndistorter::Undistort, this, i)); } for (size_t i = 0; i < futures.size(); ++i) { if (CheckIfStopped()) { break; } LOG(INFO) << StringPrintf( "Undistorting image [%d/%d]", i + 1, futures.size()); futures[i].get(); } run_timer.PrintMinutes(); } bool CMPMVSUndistorter::Undistort(const size_t reg_image_idx) const { const auto output_image_path = output_path_ / StringPrintf("%05d.jpg", reg_image_idx + 1); const auto proj_matrix_path = output_path_ / StringPrintf("%05d_P.txt", reg_image_idx + 1); const image_t image_id = *std::next(reconstruction_.RegImageIds().begin(), reg_image_idx); const Image& image = reconstruction_.Image(image_id); const Camera& camera = *image.CameraPtr(); Bitmap distorted_bitmap; const auto input_image_path = image_path_ / image.Name(); if (!distorted_bitmap.Read(input_image_path)) { LOG(ERROR) << "Cannot read image at path " << input_image_path; return false; } Bitmap undistorted_bitmap; Camera undistorted_camera; UndistortImage(camera_options_, distorted_bitmap, camera, &undistorted_bitmap, &undistorted_camera); WriteProjectionMatrix(proj_matrix_path, undistorted_camera, image, "CONTOUR"); MaybeSetJpegQuality( output_image_path, undistorted_bitmap, options_.jpeg_quality); return undistorted_bitmap.Write(output_image_path); } StandaloneImageUndistorter::StandaloneImageUndistorter( Options options, const UndistortCameraOptions& camera_options, const std::filesystem::path& image_path, const std::filesystem::path& output_path) : options_(std::move(options)), camera_options_(camera_options), image_path_(image_path), output_path_(output_path) { THROW_CHECK_GE(options_.jpeg_quality, -1); THROW_CHECK_LE(options_.jpeg_quality, 100); } void StandaloneImageUndistorter::Run() { LOG_HEADING1("Image undistortion"); Timer run_timer; run_timer.Start(); CreateDirIfNotExists(output_path_); ThreadPool thread_pool(options_.num_threads); std::vector> futures; const size_t num_images = options_.image_names_and_cameras.size(); futures.reserve(num_images); for (size_t i = 0; i < num_images; ++i) { futures.push_back( thread_pool.AddTask(&StandaloneImageUndistorter::Undistort, this, i)); } for (size_t i = 0; i < futures.size(); ++i) { if (CheckIfStopped()) { break; } LOG(INFO) << StringPrintf( "Undistorting image [%d/%d]", i + 1, futures.size()); futures[i].get(); } run_timer.PrintMinutes(); } bool StandaloneImageUndistorter::Undistort(const size_t image_idx) const { const auto& [image_name, camera] = options_.image_names_and_cameras[image_idx]; const auto output_image_path = output_path_ / image_name; const auto input_image_path = image_path_ / image_name; // Check if the image is already undistorted and copy from source if no // scaling is needed if (camera.IsUndistorted() && camera_options_.max_image_size < 0 && ExistsFile(input_image_path)) { FileCopy(input_image_path, output_image_path, options_.copy_type); return true; } Bitmap distorted_bitmap; if (!distorted_bitmap.Read(input_image_path)) { LOG(ERROR) << "Cannot read image at path " << input_image_path; return false; } Bitmap undistorted_bitmap; Camera undistorted_camera; UndistortImage(camera_options_, distorted_bitmap, camera, &undistorted_bitmap, &undistorted_camera); MaybeSetJpegQuality( output_image_path, undistorted_bitmap, options_.jpeg_quality); return undistorted_bitmap.Write(output_image_path); } StereoImageRectifier::StereoImageRectifier( Options options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path) : options_(std::move(options)), camera_options_(camera_options), reconstruction_(reconstruction), image_path_(image_path), output_path_(output_path) { THROW_CHECK_GE(options_.jpeg_quality, -1); THROW_CHECK_LE(options_.jpeg_quality, 100); } void StereoImageRectifier::Run() { LOG_HEADING1("Stereo rectification"); Timer run_timer; run_timer.Start(); ThreadPool thread_pool(options_.num_threads); std::vector> futures; futures.reserve(options_.stereo_pairs.size()); for (const auto& stereo_pair : options_.stereo_pairs) { futures.push_back(thread_pool.AddTask(&StereoImageRectifier::Rectify, this, stereo_pair.first, stereo_pair.second)); } for (size_t i = 0; i < futures.size(); ++i) { if (CheckIfStopped()) { break; } LOG(INFO) << StringPrintf( "Rectifying image pair [%d/%d]", i + 1, futures.size()); futures[i].get(); } run_timer.PrintMinutes(); } void StereoImageRectifier::Rectify(const image_t image_id1, const image_t image_id2) const { const Image& image1 = reconstruction_.Image(image_id1); const Image& image2 = reconstruction_.Image(image_id2); const Camera& camera1 = reconstruction_.Camera(image1.CameraId()); const Camera& camera2 = reconstruction_.Camera(image2.CameraId()); const std::string image_name1 = StringReplace(image1.Name(), "/", "-"); const std::string image_name2 = StringReplace(image2.Name(), "/", "-"); const std::string stereo_pair_name = StringPrintf("%s-%s", image_name1.c_str(), image_name2.c_str()); CreateDirIfNotExists(output_path_ / stereo_pair_name); const auto output_image_path1 = output_path_ / stereo_pair_name / image_name1; const auto output_image_path2 = output_path_ / stereo_pair_name / image_name2; Bitmap distorted_bitmap1; const auto input_image1_path = image_path_ / image1.Name(); if (!distorted_bitmap1.Read(input_image1_path)) { LOG(ERROR) << "Cannot read image at path " << input_image1_path; return; } Bitmap distorted_bitmap2; const auto input_image2_path = image_path_ / image2.Name(); if (!distorted_bitmap2.Read(input_image2_path)) { LOG(ERROR) << "Cannot read image at path " << input_image2_path; return; } const Rigid3d cam2_from_cam1 = image2.CamFromWorld() * Inverse(image1.CamFromWorld()); Bitmap undistorted_bitmap1; Bitmap undistorted_bitmap2; Camera undistorted_camera; Eigen::Matrix4d Q; RectifyAndUndistortStereoImages(camera_options_, distorted_bitmap1, distorted_bitmap2, camera1, camera2, cam2_from_cam1, &undistorted_bitmap1, &undistorted_bitmap2, &undistorted_camera, &Q); MaybeSetJpegQuality( output_image_path1, undistorted_bitmap1, options_.jpeg_quality); MaybeSetJpegQuality( output_image_path2, undistorted_bitmap2, options_.jpeg_quality); undistorted_bitmap1.Write(output_image_path1); undistorted_bitmap2.Write(output_image_path2); const auto Q_path = output_path_ / stereo_pair_name / "Q.txt"; std::ofstream Q_file(Q_path, std::ios::trunc); THROW_CHECK_FILE_OPEN(Q_file, Q_path); Q_file.imbue(std::locale::classic()); WriteMatrix(Q, &Q_file); } } // namespace colmap colmap-4.1.1/src/colmap/controllers/undistorters.h000066400000000000000000000203001522646662000223220ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/image/undistortion.h" #include "colmap/scene/reconstruction.h" #include "colmap/util/base_controller.h" #include "colmap/util/file.h" namespace colmap { // Undistort images and export undistorted cameras, as required by the // mvs::PatchMatchController class. class COLMAPUndistorter : public BaseController { public: struct Options { // The copy type to use when copying already undistorted images to the // output directory. This can be used to speed up the undistortion process // when a majority of the images are already undistorted and choosing // COPY_HARD_LINK or COPY_SYMLINK to avoid duplicating the images. FileCopyType copy_type = FileCopyType::COPY; // How many images to use as patch match source images when generating the // patch match config file. int num_patch_match_src_images = 20; // List of images to undistort. If empty, all images are undistorted. std::vector image_ids; // JPEG quality setting in the range [0, 100]. A value of -1 uses the // default (quality 100). Lower values produce smaller file sizes. int jpeg_quality = -1; // Number of threads to use for undistortion. A value of -1 uses all // available CPU cores. int num_threads = -1; }; COLMAPUndistorter(Options options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path); void Run(); private: bool Undistort(image_t image_id) const; void WritePatchMatchConfig(const std::vector& image_names) const; void WriteFusionConfig(const std::vector& image_names) const; void WriteScript(bool geometric) const; const Options options_; const UndistortCameraOptions camera_options_; const Reconstruction& reconstruction_; const std::filesystem::path image_path_; const std::filesystem::path output_path_; }; // Undistort images and prepare data for CMVS/PMVS. class PMVSUndistorter : public BaseController { public: struct Options { // JPEG quality setting in the range [0, 100]. A value of -1 uses the // default (quality 100). Lower values produce smaller file sizes. int jpeg_quality = -1; // Number of threads to use for undistortion. A value of -1 uses all // available CPU cores. int num_threads = -1; }; PMVSUndistorter(const Options& options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path); void Run(); private: bool Undistort(size_t reg_image_idx) const; void WriteVisibilityData() const; void WriteOptionFile() const; void WritePMVSScript() const; void WriteCMVSPMVSScript() const; void WriteCOLMAPScript(bool geometric) const; void WriteCMVSCOLMAPScript(bool geometric) const; const Options options_; const UndistortCameraOptions camera_options_; const Reconstruction& reconstruction_; const std::filesystem::path image_path_; const std::filesystem::path output_path_; }; // Undistort images and prepare data for CMP-MVS. class CMPMVSUndistorter : public BaseController { public: struct Options { // JPEG quality setting in the range [0, 100]. A value of -1 uses the // default (quality 100). Lower values produce smaller file sizes. int jpeg_quality = -1; // Number of threads to use for undistortion. A value of -1 uses all // available CPU cores. int num_threads = -1; }; CMPMVSUndistorter(const Options& options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path); void Run(); private: bool Undistort(size_t reg_image_idx) const; const Options options_; const UndistortCameraOptions camera_options_; const std::filesystem::path image_path_; const std::filesystem::path output_path_; const Reconstruction& reconstruction_; }; // Undistort images and export undistorted cameras without the need for a // reconstruction. Instead, the image names and camera model information are // read from a text file. class StandaloneImageUndistorter : public BaseController { public: struct Options { // The images and cameras to undistort. std::vector> image_names_and_cameras; // The copy type to use when copying already undistorted images to the // output directory. FileCopyType copy_type = FileCopyType::COPY; // JPEG quality setting in the range [0, 100]. A value of -1 uses the // default (quality 100). Lower values produce smaller file sizes. int jpeg_quality = -1; // Number of threads to use for undistortion. A value of -1 uses all // available CPU cores. int num_threads = -1; }; StandaloneImageUndistorter(Options options, const UndistortCameraOptions& camera_options, const std::filesystem::path& image_path, const std::filesystem::path& output_path); void Run(); private: bool Undistort(size_t image_idx) const; const Options options_; const UndistortCameraOptions camera_options_; const std::filesystem::path image_path_; const std::filesystem::path output_path_; }; // Rectify stereo image pairs. class StereoImageRectifier : public BaseController { public: struct Options { // The stereo image pairs to rectify. std::vector> stereo_pairs; // JPEG quality setting in the range [0, 100]. A value of -1 uses the // default (quality 100). Lower values produce smaller file sizes. int jpeg_quality = -1; // Number of threads to use for undistortion. A value of -1 uses all // available CPU cores. int num_threads = -1; }; StereoImageRectifier(Options options, const UndistortCameraOptions& camera_options, const Reconstruction& reconstruction, const std::filesystem::path& image_path, const std::filesystem::path& output_path); void Run(); private: void Rectify(image_t image_id1, image_t image_id2) const; const Options options_; const UndistortCameraOptions camera_options_; const Reconstruction& reconstruction_; const std::filesystem::path image_path_; const std::filesystem::path output_path_; }; } // namespace colmap colmap-4.1.1/src/colmap/controllers/undistorters_test.cc000066400000000000000000000275141522646662000235350ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/controllers/undistorters.h" #include "colmap/scene/synthetic.h" #include "colmap/sensor/bitmap.h" #include "colmap/util/file.h" #include "colmap/util/string.h" #include "colmap/util/testing.h" #include #include #include namespace colmap { namespace { Reconstruction CreateSyntheticReconstructionWithBitmaps( const std::filesystem::path& image_path, int num_images = 2, int image_width = 100, int image_height = 100, const std::string& image_extension = ".png") { SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = num_images; synthetic_dataset_options.camera_width = image_width; synthetic_dataset_options.camera_height = image_height; synthetic_dataset_options.image_extension = image_extension; Reconstruction reconstruction; SynthesizeDataset(synthetic_dataset_options, &reconstruction); // Create dummy images. for (const auto& [image_id, image] : reconstruction.Images()) { Bitmap bitmap(image_width, image_height, true); bitmap.Fill(BitmapColor(128, 128, 128)); bitmap.Write(image_path / image.Name()); } return reconstruction; } TEST(COLMAPUndistorter, Integration) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "output"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(output_path); // Create synthetic reconstruction with dummy images. const Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path); // Run COLMAP undistorter. COLMAPUndistorter undistorter(COLMAPUndistorter::Options(), UndistortCameraOptions(), reconstruction, image_path, output_path); undistorter.Run(); // Verify output directories were created. EXPECT_TRUE(ExistsDir(output_path / "images")); EXPECT_TRUE(ExistsDir(output_path / "sparse")); EXPECT_TRUE(ExistsDir(output_path / "stereo")); // Verify undistorted images were written. for (const auto& [image_id, image] : reconstruction.Images()) { EXPECT_TRUE(ExistsFile(output_path / "images" / image.Name())); } // Expect dense reconstruction files to be written. EXPECT_TRUE(ExistsFile(output_path / "stereo/patch-match.cfg")); EXPECT_TRUE(ExistsFile(output_path / "stereo/fusion.cfg")); } TEST(COLMAPUndistorter, SpecificImages) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "output"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(output_path); // Create synthetic reconstruction with dummy images. Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path, /*num_images=*/2, /*image_width=*/100, /*image_height=*/100, /*image_extension=*/".jpg"); const Image& image = reconstruction.Image(reconstruction.RegImageIds()[0]); // Run COLMAP undistorter. COLMAPUndistorter::Options options; options.image_ids = {image.ImageId()}; COLMAPUndistorter undistorter(options, UndistortCameraOptions(), reconstruction, image_path, output_path); undistorter.Run(); // Verify that only the specified image was written. EXPECT_THAT( GetRecursiveFileList(output_path / "images"), testing::UnorderedElementsAre(output_path / "images" / image.Name())); } TEST(COLMAPUndistorter, JpegQuality) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "output"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(output_path); // Create synthetic reconstruction with dummy images. Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path, /*num_images=*/1, /*image_width=*/100, /*image_height=*/100, /*image_extension=*/".jpg"); // Run COLMAP undistorter. COLMAPUndistorter::Options options; options.jpeg_quality = 50; COLMAPUndistorter undistorter(options, UndistortCameraOptions(), reconstruction, image_path, output_path); undistorter.Run(); // Verify undistorted images were written. for (const auto& [image_id, image] : reconstruction.Images()) { EXPECT_TRUE(ExistsFile(output_path / "images" / image.Name())); } } TEST(PMVSUndistorter, Integration) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "pmvs_output"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(output_path); // Create synthetic reconstruction with dummy images. const Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path); // Run PMVS undistorter. PMVSUndistorter undistorter(PMVSUndistorter::Options(), UndistortCameraOptions(), reconstruction, image_path, output_path); undistorter.Run(); // Verify PMVS output structure was created (under pmvs/ subdirectory). EXPECT_TRUE(ExistsDir(output_path / "pmvs")); EXPECT_TRUE(ExistsDir(output_path / "pmvs" / "models")); EXPECT_TRUE(ExistsDir(output_path / "pmvs" / "txt")); EXPECT_TRUE(ExistsDir(output_path / "pmvs" / "visualize")); // Verify undistorted images were written with numbered names. // PMVS writes images as 00000000.jpg, 00000001.jpg, etc. const size_t num_images = reconstruction.NumRegImages(); for (size_t i = 0; i < num_images; ++i) { const std::string image_name = StringPrintf("%08zu.jpg", i); EXPECT_TRUE(ExistsFile(output_path / "pmvs" / "visualize" / image_name)); } } TEST(CMPMVSUndistorter, Integration) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "cmpmvs_output"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(output_path); // Create synthetic reconstruction with dummy images. const Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path); // Run CMP-MVS undistorter. CMPMVSUndistorter undistorter(CMPMVSUndistorter::Options(), UndistortCameraOptions(), reconstruction, image_path, output_path); undistorter.Run(); // Verify CMP-MVS output structure was created. EXPECT_TRUE(ExistsDir(output_path)); // Verify undistorted images were written with sequential numbering. // CMP-MVS writes images as 00001.jpg, 00002.jpg, etc. const size_t num_images = reconstruction.NumRegImages(); for (size_t i = 1; i <= num_images; ++i) { const std::string image_name = StringPrintf("%05zu.jpg", i); EXPECT_TRUE(ExistsFile(output_path / image_name)); } } TEST(StandaloneImageUndistorter, Integration) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "pure_output"; CreateDirIfNotExists(image_path); // Create synthetic reconstruction with dummy images. const Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path); StandaloneImageUndistorter::Options options; for (const auto& [_, image] : reconstruction.Images()) { options.image_names_and_cameras.emplace_back(image.Name(), *image.CameraPtr()); } // Run standalone image undistorter. StandaloneImageUndistorter undistorter( options, UndistortCameraOptions(), image_path, output_path); undistorter.Run(); // Verify output directory was created. EXPECT_TRUE(ExistsDir(output_path)); // Verify undistorted images were written. for (const auto& [image_name, camera] : options.image_names_and_cameras) { EXPECT_TRUE(ExistsFile(output_path / image_name)); } } TEST(StereoImageRectifier, Integration) { const auto temp_dir = CreateTestDir(); const auto image_path = temp_dir / "input_images"; const auto output_path = temp_dir / "stereo_output"; CreateDirIfNotExists(image_path); CreateDirIfNotExists(output_path); // Create synthetic reconstruction with dummy images. const Reconstruction reconstruction = CreateSyntheticReconstructionWithBitmaps(image_path); // Create stereo pair from first two images. StereoImageRectifier::Options options; const std::vector image_ids = reconstruction.RegImageIds(); ASSERT_GE(image_ids.size(), 2); options.stereo_pairs.emplace_back(image_ids[0], image_ids[1]); // Run stereo image rectifier. StereoImageRectifier rectifier(options, UndistortCameraOptions(), reconstruction, image_path, output_path); rectifier.Run(); // Verify output directory was created. EXPECT_TRUE(ExistsDir(output_path)); // Verify rectified images were written. // StereoImageRectifier creates a subdirectory for each stereo pair. const auto& image1 = reconstruction.Image(options.stereo_pairs[0].first); const auto& image2 = reconstruction.Image(options.stereo_pairs[0].second); const std::string stereo_pair_name = StringPrintf("%s-%s", image1.Name().c_str(), image2.Name().c_str()); EXPECT_TRUE(ExistsDir(output_path / stereo_pair_name)); EXPECT_TRUE(ExistsFile(output_path / stereo_pair_name / image1.Name())); EXPECT_TRUE(ExistsFile(output_path / stereo_pair_name / image2.Name())); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/000077500000000000000000000000001522646662000172355ustar00rootroot00000000000000colmap-4.1.1/src/colmap/estimators/CMakeLists.txt000066400000000000000000000110251522646662000217740ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(FOLDER_NAME "estimators") add_subdirectory(cost_functions) add_subdirectory(solvers) set(ESTIMATORS_SRCS alignment.h alignment.cc bundle_adjustment.h bundle_adjustment.cc bundle_adjustment_ceres.h bundle_adjustment_ceres.cc coordinate_frame.h coordinate_frame.cc covariance.h covariance.cc generalized_pose.h generalized_pose.cc global_positioning.h global_positioning.cc gravity_refinement.h gravity_refinement.cc pose.h pose.cc rotation_averaging.h rotation_averaging.cc rotation_averaging_impl.h rotation_averaging_impl.cc triangulation.h triangulation.cc two_view_geometry.h two_view_geometry.cc view_graph_calibration.h view_graph_calibration.cc ) if(CASPAR_ENABLED) list(APPEND ESTIMATORS_SRCS bundle_adjustment_caspar.h bundle_adjustment_caspar.cc ) endif() COLMAP_ADD_LIBRARY( NAME colmap_estimators SRCS ${ESTIMATORS_SRCS} PUBLIC_LINK_LIBS colmap_util colmap_math colmap_feature_types colmap_geometry colmap_sensor colmap_image colmap_scene colmap_optim colmap_estimators_cost_functions colmap_estimators_solvers Eigen3::Eigen Ceres::ceres PoseLib::PoseLib ) if(CASPAR_ENABLED) target_link_libraries(colmap_estimators PUBLIC caspar_lib_core) endif() if(CUDA_ENABLED) target_link_libraries(colmap_estimators PUBLIC colmap_util_cuda) endif() COLMAP_ADD_TEST( NAME alignment_test SRCS alignment_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME bundle_adjustment_test SRCS bundle_adjustment_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME bundle_adjustment_ceres_test SRCS bundle_adjustment_ceres_test.cc LINK_LIBS colmap_estimators ) if(CASPAR_ENABLED) COLMAP_ADD_TEST( NAME bundle_adjustment_caspar_test SRCS bundle_adjustment_caspar_test.cc LINK_LIBS colmap_estimators ) endif() COLMAP_ADD_TEST( NAME coordinate_frame_test SRCS coordinate_frame_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME covariance_test SRCS covariance_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME generalized_pose_test SRCS generalized_pose_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME pose_test SRCS pose_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME two_view_geometry_test SRCS two_view_geometry_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME view_graph_calibration_test SRCS view_graph_calibration_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME rotation_averaging_test SRCS rotation_averaging_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME gravity_refinement_test SRCS gravity_refinement_test.cc LINK_LIBS colmap_estimators ) COLMAP_ADD_TEST( NAME global_positioning_test SRCS global_positioning_test.cc LINK_LIBS colmap_estimators ) colmap-4.1.1/src/colmap/estimators/alignment.cc000066400000000000000000000554131522646662000215320ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/alignment.h" #include "colmap/estimators/solvers/similarity_transform.h" #include "colmap/geometry/pose.h" #include "colmap/math/math.h" #include "colmap/optim/loransac.h" #include "colmap/scene/projection.h" #include "colmap/util/logging.h" #include namespace colmap { namespace { struct ReconstructionAlignmentEstimator { static const int kMinNumSamples = 3; using X_t = const Image*; using Y_t = const Image*; using M_t = Sim3d; ReconstructionAlignmentEstimator(double max_reproj_error, const Reconstruction* src_reconstruction, const Reconstruction* tgt_reconstruction) : max_squared_reproj_error_(max_reproj_error * max_reproj_error), src_reconstruction_(src_reconstruction), tgt_reconstruction_(tgt_reconstruction) { THROW_CHECK_GE(max_reproj_error, 0); THROW_CHECK_NOTNULL(src_reconstruction_); THROW_CHECK_NOTNULL(tgt_reconstruction_); } // Estimate 3D similarity transform from corresponding projection centers. void Estimate(const std::vector& src_images, const std::vector& tgt_images, std::vector* models) const { THROW_CHECK_GE(src_images.size(), 3); THROW_CHECK_GE(tgt_images.size(), 3); THROW_CHECK_EQ(src_images.size(), tgt_images.size()); THROW_CHECK(models != nullptr); models->clear(); std::vector proj_centers1(src_images.size()); std::vector proj_centers2(tgt_images.size()); for (size_t i = 0; i < src_images.size(); ++i) { THROW_CHECK_EQ(src_images[i]->ImageId(), tgt_images[i]->ImageId()); proj_centers1[i] = src_images[i]->ProjectionCenter(); proj_centers2[i] = tgt_images[i]->ProjectionCenter(); } Sim3d tgt_from_src; if (!EstimateSim3d(proj_centers1, proj_centers2, tgt_from_src)) { return; } models->resize(1); (*models)[0] = tgt_from_src; } // For each image, determine the ratio of 3D points that correctly project // from one image to the other image and vice versa for the given // tgt_from_src. The residual is then defined as 1 minus this ratio, i.e., an // error threshold of 0.3 means that 70% of the points for that image must // reproject within the given maximum reprojection error threshold. void Residuals(const std::vector& src_images, const std::vector& tgt_images, const M_t& tgt_from_src, std::vector* residuals) const { THROW_CHECK_EQ(src_images.size(), tgt_images.size()); THROW_CHECK_NOTNULL(src_reconstruction_); THROW_CHECK_NOTNULL(tgt_reconstruction_); const Sim3d src_from_tgt = Inverse(tgt_from_src); residuals->resize(src_images.size()); for (size_t i = 0; i < src_images.size(); ++i) { const Image& src_image = *src_images[i]; const Image& tgt_image = *tgt_images[i]; THROW_CHECK_EQ(src_image.ImageId(), tgt_image.ImageId()); const Camera& src_camera = *src_image.CameraPtr(); const Camera& tgt_camera = *tgt_image.CameraPtr(); const Eigen::Matrix3x4d src_cam_from_world = src_image.CamFromWorld().ToMatrix(); const Eigen::Matrix3x4d tgt_cam_from_world = tgt_image.CamFromWorld().ToMatrix(); THROW_CHECK_EQ(src_image.NumPoints2D(), tgt_image.NumPoints2D()); size_t num_inliers = 0; size_t num_common_points = 0; for (point2D_t point2D_idx = 0; point2D_idx < src_image.NumPoints2D(); ++point2D_idx) { // Check if both images have a 3D point. const auto& src_point2D = src_image.Point2D(point2D_idx); if (!src_point2D.HasPoint3D()) { continue; } const auto& tgt_point2D = tgt_image.Point2D(point2D_idx); if (!tgt_point2D.HasPoint3D()) { continue; } num_common_points += 1; const Eigen::Vector3d src_point_in_tgt = tgt_from_src * src_reconstruction_->Point3D(src_point2D.point3D_id).xyz; if (CalculateSquaredReprojectionError(tgt_point2D.xy, src_point_in_tgt, tgt_cam_from_world, tgt_camera) > max_squared_reproj_error_) { continue; } const Eigen::Vector3d tgt_point_in_src = src_from_tgt * tgt_reconstruction_->Point3D(tgt_point2D.point3D_id).xyz; if (CalculateSquaredReprojectionError(src_point2D.xy, tgt_point_in_src, src_cam_from_world, src_camera) > max_squared_reproj_error_) { continue; } num_inliers += 1; } if (num_common_points == 0) { (*residuals)[i] = 1.0; } else { const double negative_inlier_ratio = 1.0 - static_cast(num_inliers) / static_cast(num_common_points); (*residuals)[i] = negative_inlier_ratio * negative_inlier_ratio; } } } private: double max_squared_reproj_error_; const Reconstruction* src_reconstruction_; const Reconstruction* tgt_reconstruction_; }; } // namespace bool AlignReconstructionToLocations( const Reconstruction& src_reconstruction, const std::vector& tgt_image_names, const std::vector& tgt_image_locations, const int min_common_images, const RANSACOptions& ransac_options, Sim3d* tgt_from_src) { THROW_CHECK_GE(min_common_images, 3); THROW_CHECK_EQ(tgt_image_names.size(), tgt_image_locations.size()); // Find out which images are contained in the reconstruction and get the // positions of their camera centers. std::unordered_set common_image_ids; std::vector src; std::vector dst; for (size_t i = 0; i < tgt_image_names.size(); ++i) { const class Image* src_image = src_reconstruction.FindImageWithName(tgt_image_names[i]); if (src_image == nullptr) { continue; } if (!src_image->HasPose()) { continue; } // Ignore duplicate images. if (!common_image_ids.insert(src_image->ImageId()).second) { continue; } src.push_back(src_image->ProjectionCenter()); dst.push_back(tgt_image_locations[i]); } // Only compute the alignment if there are enough correspondences. if (common_image_ids.size() < static_cast(min_common_images)) { return false; } Sim3d tgt_from_src_; const auto report = EstimateSim3dRobust(src, dst, ransac_options, tgt_from_src_); if (report.support.num_inliers < static_cast(min_common_images)) { return false; } if (tgt_from_src != nullptr) { *tgt_from_src = tgt_from_src_; } return true; } bool AlignReconstructionToPosePriors( const Reconstruction& src_reconstruction, const std::vector& tgt_pose_priors, const RANSACOptions& ransac_options, Sim3d* tgt_from_src) { std::vector src; std::vector tgt; src.reserve(tgt_pose_priors.size()); tgt.reserve(tgt_pose_priors.size()); std::unordered_map tgt_image_to_pose_prior; for (const auto& pose_prior : tgt_pose_priors) { if (pose_prior.corr_data_id.sensor_id.type == SensorType::CAMERA && pose_prior.HasPosition()) { THROW_CHECK(tgt_image_to_pose_prior .emplace(pose_prior.corr_data_id.id, pose_prior) .second) << "Duplicate pose prior for image " << pose_prior.corr_data_id.id; } } for (const image_t image_id : src_reconstruction.RegImageIds()) { const auto pose_prior_it = tgt_image_to_pose_prior.find(image_id); if (pose_prior_it != tgt_image_to_pose_prior.end()) { const auto& image = src_reconstruction.Image(image_id); src.push_back(image.ProjectionCenter()); tgt.push_back(pose_prior_it->second.position); } } if (src.size() < 3) { LOG(WARNING) << "Not enough valid pose priors for alignment"; return false; } if (ransac_options.max_error > 0) { return EstimateSim3dRobust(src, tgt, ransac_options, *tgt_from_src).success; } return EstimateSim3d(src, tgt, *tgt_from_src); } bool AlignReconstructionsViaReprojections( const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, const double min_inlier_observations, const double max_reproj_error, Sim3d* tgt_from_src) { THROW_CHECK_GE(min_inlier_observations, 0.0); THROW_CHECK_LE(min_inlier_observations, 1.0); RANSACOptions ransac_options; ransac_options.max_error = 1.0 - min_inlier_observations; ransac_options.min_inlier_ratio = 0.2; LORANSAC ransac(ransac_options, ReconstructionAlignmentEstimator( max_reproj_error, &src_reconstruction, &tgt_reconstruction), ReconstructionAlignmentEstimator( max_reproj_error, &src_reconstruction, &tgt_reconstruction)); const std::vector> common_image_ids = src_reconstruction.FindCommonRegImageIds(tgt_reconstruction); if (common_image_ids.size() < 3) { return false; } std::vector src_images(common_image_ids.size()); std::vector tgt_images(common_image_ids.size()); for (size_t i = 0; i < common_image_ids.size(); ++i) { src_images[i] = &src_reconstruction.Image(common_image_ids[i].first); tgt_images[i] = &tgt_reconstruction.Image(common_image_ids[i].second); } const auto report = ransac.Estimate(src_images, tgt_images); if (report.success) { *tgt_from_src = report.model; } return report.success; } bool AlignReconstructionsViaProjCenters( const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, const double max_proj_center_error, Sim3d* tgt_from_src) { THROW_CHECK_GT(max_proj_center_error, 0); std::vector ref_image_names; std::vector ref_proj_centers; for (const auto& image : tgt_reconstruction.Images()) { if (image.second.HasPose()) { ref_image_names.push_back(image.second.Name()); ref_proj_centers.push_back(image.second.ProjectionCenter()); } } Sim3d tform; RANSACOptions ransac_options; ransac_options.max_error = max_proj_center_error; return AlignReconstructionToLocations(src_reconstruction, ref_image_names, ref_proj_centers, /*min_common_images=*/3, ransac_options, tgt_from_src); } std::vector ComputeImageAlignmentError( const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, const Sim3d& tgt_from_src) { const std::vector> common_image_ids = src_reconstruction.FindCommonRegImageIds(tgt_reconstruction); const int num_common_images = common_image_ids.size(); std::vector errors; errors.reserve(num_common_images); for (const auto& image_ids : common_image_ids) { const auto& src_image = src_reconstruction.Image(image_ids.first); const Rigid3d tgt_world_from_src_cam = Inverse(TransformCameraWorld(tgt_from_src, src_image.CamFromWorld())); const Rigid3d tgt_world_from_tgt_cam = Inverse(tgt_reconstruction.Image(image_ids.second).CamFromWorld()); ImageAlignmentError error; error.image_name = src_image.Name(); error.rotation_error_deg = RadToDeg(tgt_world_from_src_cam.rotation().angularDistance( tgt_world_from_tgt_cam.rotation())); error.proj_center_error = (tgt_world_from_src_cam.translation() - tgt_world_from_tgt_cam.translation()) .norm(); errors.push_back(error); } return errors; } bool AlignReconstructionsViaPoints(const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, const size_t min_common_observations, const double max_error, const double min_inlier_ratio, Sim3d* tgt_from_src) { THROW_CHECK_GT(min_common_observations, 0); THROW_CHECK_GT(max_error, 0.0); THROW_CHECK_GE(min_inlier_ratio, 0.0); THROW_CHECK_LE(min_inlier_ratio, 1.0); std::vector src_xyz; std::vector tgt_xyz; std::unordered_map counts; // Associate 3D points using point2D_idx for (const auto& src_point3D : src_reconstruction.Points3D()) { counts.clear(); // Count how often a 3D point in tgt is associated to this 3D point. for (const auto& track_el : src_point3D.second.track.Elements()) { const Image& tgt_image = tgt_reconstruction.Image(track_el.image_id); if (!tgt_image.HasPose()) { continue; } const Point2D& tgt_point2D = tgt_image.Point2D(track_el.point2D_idx); if (tgt_point2D.HasPoint3D()) { if (counts.find(tgt_point2D.point3D_id) != counts.end()) { counts[tgt_point2D.point3D_id]++; } else { counts[tgt_point2D.point3D_id] = 0; } } } if (counts.empty()) { continue; } // The 3D point in tgt who is associated the most is selected auto best_point3D = std::max_element(counts.begin(), counts.end(), [](const std::pair& p1, const std::pair& p2) { return p1.second < p2.second; }); if (best_point3D->second >= min_common_observations) { src_xyz.push_back(src_point3D.second.xyz); tgt_xyz.push_back(tgt_reconstruction.Point3D(best_point3D->first).xyz); } } THROW_CHECK_EQ(src_xyz.size(), tgt_xyz.size()); LOG(INFO) << "Found " << src_xyz.size() << " / " << src_reconstruction.NumPoints3D() << " valid correspondences."; RANSACOptions ransac_options; ransac_options.max_error = max_error; ransac_options.min_inlier_ratio = min_inlier_ratio; const auto report = EstimateSim3dRobust(src_xyz, tgt_xyz, ransac_options, *tgt_from_src); return report.success; } namespace { void CopyRegisteredImage(image_t image_id, const Sim3d& tgt_from_src, const Reconstruction& src_reconstruction, Reconstruction& tgt_reconstruction) { const Image& src_image = src_reconstruction.Image(image_id); if (!tgt_reconstruction.ExistsCamera(src_image.CameraId())) { tgt_reconstruction.AddCamera( src_reconstruction.Camera(src_image.CameraId())); } if (!tgt_reconstruction.ExistsRig(src_image.FramePtr()->RigId())) { tgt_reconstruction.AddRig( src_reconstruction.Rig(src_image.FramePtr()->RigId())); } if (!tgt_reconstruction.ExistsFrame(src_image.FrameId())) { Frame tgt_frame = src_reconstruction.Frame(src_image.FrameId()); tgt_frame.ResetRigPtr(); tgt_reconstruction.AddFrame(std::move(tgt_frame)); const Rigid3d cam_from_tgt_world = TransformCameraWorld(tgt_from_src, src_image.CamFromWorld()); tgt_reconstruction.Frame(src_image.FrameId()) .SetCamFromWorld(src_image.CameraId(), cam_from_tgt_world); } Image tgt_image = src_image; tgt_image.ResetCameraPtr(); tgt_image.ResetFramePtr(); tgt_reconstruction.AddImage(std::move(tgt_image)); } } // namespace bool MergeReconstructions(const double max_reproj_error, const Reconstruction& src_reconstruction, Reconstruction& tgt_reconstruction) { Sim3d tgt_from_src; if (!AlignReconstructionsViaReprojections(src_reconstruction, tgt_reconstruction, /*min_inlier_observations=*/0.3, max_reproj_error, &tgt_from_src)) { return false; } // Find common and missing images in the two reconstructions. std::unordered_set common_image_ids; common_image_ids.reserve(src_reconstruction.NumRegImages()); std::unordered_set missing_image_ids; missing_image_ids.reserve(src_reconstruction.NumRegImages()); for (const image_t image_id : src_reconstruction.RegImageIds()) { if (tgt_reconstruction.ExistsImage(image_id)) { common_image_ids.insert(image_id); } else { missing_image_ids.insert(image_id); } } // Register the missing images in this src_reconstruction. for (const auto image_id : missing_image_ids) { CopyRegisteredImage( image_id, tgt_from_src, src_reconstruction, tgt_reconstruction); } // Merge the two point clouds using the following two rules: // - copy points to this src_reconstruction with non-conflicting tracks, // i.e. points that do not have an already triangulated observation // in this src_reconstruction. // - merge tracks that are unambiguous, i.e. only merge points in the two // reconstructions if they have a one-to-one mapping. // Note that in both cases no cheirality or reprojection test is performed. for (const auto& [_, point3D] : src_reconstruction.Points3D()) { Track new_track; Track old_track; std::unordered_set old_point3D_ids; for (const auto& track_el : point3D.track.Elements()) { if (common_image_ids.count(track_el.image_id) > 0) { const auto& point2D = tgt_reconstruction.Image(track_el.image_id) .Point2D(track_el.point2D_idx); if (point2D.HasPoint3D()) { old_track.AddElement(track_el); old_point3D_ids.insert(point2D.point3D_id); } else { new_track.AddElement(track_el); } } else if (missing_image_ids.count(track_el.image_id) > 0) { tgt_reconstruction.Image(track_el.image_id) .ResetPoint3DForPoint2D(track_el.point2D_idx); new_track.AddElement(track_el); } } const bool create_new_point = new_track.Length() >= 2; const bool merge_new_and_old_point = (new_track.Length() + old_track.Length()) >= 2 && old_point3D_ids.size() == 1; if (create_new_point || merge_new_and_old_point) { const Eigen::Vector3d xyz = tgt_from_src * point3D.xyz; const auto point3D_id = tgt_reconstruction.AddPoint3D(xyz, new_track, point3D.color); if (old_point3D_ids.size() == 1) { tgt_reconstruction.MergePoints3D(point3D_id, *old_point3D_ids.begin()); } } } return true; } bool AlignReconstructionToOrigRigScales( const std::unordered_map& orig_rigs, Reconstruction* reconstruction) { double scale_sum = 0; int scale_count = 0; for (const auto& [rig_id, orig_rig] : orig_rigs) { double scale_sum_rig = 0; int scale_count_rig = 0; for (auto& [sensor_id, sensor_from_orig_rig] : orig_rig.NonRefSensors()) { if (!sensor_from_orig_rig.has_value()) { continue; } // Here we do not include rigs that are panoramic. double sensor_from_orig_rig_norm = sensor_from_orig_rig->translation().norm(); if (sensor_from_orig_rig_norm < 1e-6) { continue; } THROW_CHECK(reconstruction->Rig(rig_id).HasSensorFromRig(sensor_id)); double scale = reconstruction->Rig(rig_id) .SensorFromRig(sensor_id) .translation() .norm() / sensor_from_orig_rig_norm; scale_sum_rig += scale; ++scale_count_rig; } if (scale_count_rig > 0) { scale_sum += scale_sum_rig / scale_count_rig; ++scale_count; } } if (scale_count == 0) { return false; } Sim3d new_from_old_world; new_from_old_world.scale() = scale_count / scale_sum; reconstruction->Transform(new_from_old_world); return true; } AlignmentErrorSummary AlignmentErrorSummary::Compute( const std::vector& errors) { AlignmentErrorSummary summary; if (errors.empty()) { return summary; } std::vector rotation_errors_deg; rotation_errors_deg.reserve(errors.size()); std::vector proj_center_errors; proj_center_errors.reserve(errors.size()); for (const auto& error : errors) { rotation_errors_deg.push_back(error.rotation_error_deg); proj_center_errors.push_back(error.proj_center_error); } auto ComputeStatistics = [](std::vector& values) { Statistics stats; if (values.empty()) { return stats; } stats.min = Percentile(values, 0); stats.max = Percentile(values, 100); stats.mean = Mean(values); stats.median = Median(values); stats.p90 = Percentile(values, 90); stats.p99 = Percentile(values, 99); return stats; }; summary.rotation_errors_deg = ComputeStatistics(rotation_errors_deg); summary.proj_center_errors = ComputeStatistics(proj_center_errors); return summary; } } // namespace colmap colmap-4.1.1/src/colmap/estimators/alignment.h000066400000000000000000000126551522646662000213750ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/geometry/sim3.h" #include "colmap/optim/ransac.h" #include "colmap/scene/reconstruction.h" #include namespace colmap { // Robustly align reconstruction to given image locations (projection centers). bool AlignReconstructionToLocations( const Reconstruction& src_reconstruction, const std::vector& tgt_image_names, const std::vector& tgt_image_locations, int min_common_images, const RANSACOptions& ransac_options, Sim3d* tgt_from_src); // Robustly align reconstruction to given pose priors. bool AlignReconstructionToPosePriors( const Reconstruction& src_reconstruction, const std::vector& tgt_pose_priors, const RANSACOptions& ransac_options, Sim3d* tgt_from_src); // Robustly compute alignment between reconstructions by finding images that // are registered in both reconstructions. The alignment is then estimated // robustly inside RANSAC from corresponding projection centers. An alignment // is verified by reprojecting common 3D point observations. // The min_inlier_observations threshold determines how many observations // in a common image must reproject within the given threshold. bool AlignReconstructionsViaReprojections( const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, double min_inlier_observations, double max_reproj_error, Sim3d* tgt_from_src); // Robustly compute alignment between reconstructions by finding images that // are registered in both reconstructions. The alignment is then estimated // robustly inside RANSAC from corresponding projection centers and by // minimizing the Euclidean distance between them in world space. bool AlignReconstructionsViaProjCenters( const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, double max_proj_center_error, Sim3d* tgt_from_src); // Robustly compute the alignment between reconstructions that share the // same 2D points. It is estimated by minimizing the 3D distance between // corresponding 3D points. bool AlignReconstructionsViaPoints(const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, size_t min_common_observations, double max_error, double min_inlier_ratio, Sim3d* tgt_from_src); // Compute image alignment errors in the target coordinate frame. struct ImageAlignmentError { std::string image_name; double rotation_error_deg = -1; double proj_center_error = -1; }; std::vector ComputeImageAlignmentError( const Reconstruction& src_reconstruction, const Reconstruction& tgt_reconstruction, const Sim3d& tgt_from_src); // Summary of alignment errors for image poses. struct AlignmentErrorSummary { struct Statistics { double min = 0; double max = 0; double mean = 0; double median = 0; double p90 = 0; double p99 = 0; }; Statistics rotation_errors_deg; Statistics proj_center_errors; static AlignmentErrorSummary Compute( const std::vector& errors); }; // Aligns the source to the target reconstruction and merges cameras, images, // points3D into the target using the alignment. Returns false on failure. bool MergeReconstructions(double max_reproj_error, const Reconstruction& src_reconstruction, Reconstruction& tgt_reconstruction); // Align reconstruction to the original metric scales in rig extrinsics. Returns // false if there is no available non-panoramic rig in the alignment process. bool AlignReconstructionToOrigRigScales( const std::unordered_map& orig_rigs, Reconstruction* reconstruction); } // namespace colmap colmap-4.1.1/src/colmap/estimators/alignment_test.cc000066400000000000000000000267211522646662000225710ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/alignment.h" #include "colmap/geometry/rigid3_matchers.h" #include "colmap/geometry/sim3.h" #include "colmap/math/random.h" #include "colmap/scene/reconstruction.h" #include "colmap/scene/synthetic.h" #include namespace colmap { namespace { Sim3d TestSim3d() { return Sim3d(RandomUniformReal(0.5, 2), Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); } void ExpectEqualSim3d(const Sim3d& gt_tgt_from_src, const Sim3d& tgt_from_src) { EXPECT_NEAR(gt_tgt_from_src.scale(), tgt_from_src.scale(), 1e-6); EXPECT_LT(gt_tgt_from_src.rotation().angularDistance(tgt_from_src.rotation()), 1e-6); EXPECT_LT((gt_tgt_from_src.translation() - tgt_from_src.translation()).norm(), 1e-6); } Reconstruction GenerateReconstructionForAlignment() { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset(synthetic_dataset_options, &reconstruction); return reconstruction; } TEST(Alignment, AlignReconstructionToLocations) { Reconstruction src_reconstruction = GenerateReconstructionForAlignment(); Reconstruction tgt_reconstruction = src_reconstruction; Sim3d gt_tgt_from_src = TestSim3d(); tgt_reconstruction.Transform(gt_tgt_from_src); std::vector tgt_image_names; std::vector tgt_image_locations; for (const auto& [_, image] : tgt_reconstruction.Images()) { tgt_image_names.push_back(image.Name()); tgt_image_locations.push_back(image.ProjectionCenter()); } RANSACOptions ransac_options; ransac_options.max_error = 1e-2; Sim3d tgt_from_src; ASSERT_FALSE(AlignReconstructionToLocations( src_reconstruction, tgt_image_names, tgt_image_locations, /*min_common_images=*/tgt_image_names.size() + 1, ransac_options, &tgt_from_src)); ASSERT_TRUE(AlignReconstructionToLocations(src_reconstruction, tgt_image_names, tgt_image_locations, /*min_common_images=*/3, ransac_options, &tgt_from_src)); ExpectEqualSim3d(gt_tgt_from_src, tgt_from_src); } TEST(Alignment, AlignReconstructionToPosePriors) { Reconstruction src_reconstruction = GenerateReconstructionForAlignment(); Reconstruction tgt_reconstruction = src_reconstruction; Sim3d gt_tgt_from_src = TestSim3d(); tgt_reconstruction.Transform(gt_tgt_from_src); std::vector tgt_pose_priors; for (const auto& [image_id, image] : tgt_reconstruction.Images()) { PosePrior& pose_prior = tgt_pose_priors.emplace_back(); pose_prior.pose_prior_id = tgt_pose_priors.size(); pose_prior.corr_data_id = image.DataId(); pose_prior.coordinate_system = PosePrior::CoordinateSystem::CARTESIAN; pose_prior.position = image.ProjectionCenter(); pose_prior.position_covariance = 1e-2 * Eigen::Matrix3d::Identity(); } RANSACOptions ransac_options; ransac_options.max_error = 1e-2; Sim3d tgt_from_src; ASSERT_TRUE(AlignReconstructionToPosePriors( src_reconstruction, tgt_pose_priors, ransac_options, &tgt_from_src)); ExpectEqualSim3d(gt_tgt_from_src, tgt_from_src); } TEST(Alignment, AlignReconstructionsViaReprojections) { Reconstruction src_reconstruction = GenerateReconstructionForAlignment(); Reconstruction tgt_reconstruction = src_reconstruction; Sim3d gt_tgt_from_src = TestSim3d(); tgt_reconstruction.Transform(gt_tgt_from_src); Sim3d tgt_from_src; ASSERT_TRUE( AlignReconstructionsViaReprojections(src_reconstruction, tgt_reconstruction, /*min_inlier_observations=*/0.9, /*max_reproj_error=*/2, &tgt_from_src)); ExpectEqualSim3d(gt_tgt_from_src, tgt_from_src); } TEST(Alignment, AlignReconstructionsViaProjCenters) { Reconstruction src_reconstruction = GenerateReconstructionForAlignment(); Reconstruction tgt_reconstruction = src_reconstruction; Sim3d gt_tgt_from_src = TestSim3d(); tgt_reconstruction.Transform(gt_tgt_from_src); Sim3d tgt_from_src; ASSERT_TRUE(AlignReconstructionsViaProjCenters(src_reconstruction, tgt_reconstruction, /*max_proj_center_error=*/0.1, &tgt_from_src)); ExpectEqualSim3d(gt_tgt_from_src, tgt_from_src); } TEST(Alignment, AlignReconstructionsViaPoints) { Reconstruction src_reconstruction = GenerateReconstructionForAlignment(); Reconstruction tgt_reconstruction = src_reconstruction; Sim3d gt_tgt_from_src = TestSim3d(); tgt_reconstruction.Transform(gt_tgt_from_src); Sim3d tgt_from_src; ASSERT_TRUE(AlignReconstructionsViaPoints(src_reconstruction, tgt_reconstruction, /*min_common_observations=*/3, /*max_error=*/0.01, /*min_inlier_ratio=*/0.9, &tgt_from_src)); ExpectEqualSim3d(gt_tgt_from_src, tgt_from_src); } TEST(Alignment, MergeReconstructions) { // Synthesize a reconstruction which has at least two cameras Reconstruction src_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset(synthetic_dataset_options, &src_reconstruction); Reconstruction orig_reconstruction = src_reconstruction; Reconstruction tgt_reconstruction = src_reconstruction; auto remove_rig_frames = [](Reconstruction& reconstruction, rig_t rig_id) { const std::vector frame_ids = reconstruction.RegFrameIds(); for (const auto& frame_id : frame_ids) { if (reconstruction.Frame(frame_id).RigId() == rig_id) { reconstruction.DeRegisterFrame(frame_id); } } }; remove_rig_frames(src_reconstruction, 1); remove_rig_frames(tgt_reconstruction, 2); // Remove all unregistered rigs/cameras/frames/images. src_reconstruction.TearDown(); tgt_reconstruction.TearDown(); EXPECT_EQ(src_reconstruction.NumRigs(), 2); EXPECT_EQ(src_reconstruction.NumCameras(), 2); EXPECT_EQ(src_reconstruction.NumFrames(), 20); EXPECT_EQ(src_reconstruction.NumRegFrames(), 20); EXPECT_EQ(src_reconstruction.NumImages(), 20); EXPECT_EQ(tgt_reconstruction.NumRigs(), 2); EXPECT_EQ(tgt_reconstruction.NumCameras(), 2); EXPECT_EQ(tgt_reconstruction.NumFrames(), 20); EXPECT_EQ(tgt_reconstruction.NumRegFrames(), 20); EXPECT_EQ(tgt_reconstruction.NumImages(), 20); // Merge reconstructions. ASSERT_TRUE(MergeReconstructions( /*max_reproj_error=*/1e-4, src_reconstruction, tgt_reconstruction)); EXPECT_EQ(tgt_reconstruction.NumRigs(), 3); EXPECT_EQ(tgt_reconstruction.NumCameras(), 3); EXPECT_EQ(tgt_reconstruction.NumFrames(), 30); EXPECT_EQ(tgt_reconstruction.NumRegFrames(), 30); EXPECT_EQ(tgt_reconstruction.NumImages(), 30); EXPECT_EQ(tgt_reconstruction.NumPoints3D(), 50); EXPECT_EQ(tgt_reconstruction.ComputeNumObservations(), orig_reconstruction.ComputeNumObservations()); } TEST(Alignment, AlignReconstructionToOrigRigScales) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 4; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 50; SynthesizeDataset(synthetic_dataset_options, &reconstruction); std::unordered_map orig_rigs = reconstruction.Rigs(); reconstruction.Transform(TestSim3d()); AlignReconstructionToOrigRigScales(orig_rigs, &reconstruction); for (const auto& [rig_id, orig_rig] : orig_rigs) { for (const auto& [sensor_id, sensor_from_orig_rig] : orig_rig.NonRefSensors()) { if (!sensor_from_orig_rig.has_value()) { continue; } EXPECT_THAT( reconstruction.Rig(rig_id).SensorFromRig(sensor_id), Rigid3dNear( sensor_from_orig_rig.value(), /*rtol=*/1e-6, /*ttol=*/1e-6)); } } } TEST(AlignmentErrorSummary, Empty) { std::vector errors; AlignmentErrorSummary summary = AlignmentErrorSummary::Compute(errors); EXPECT_EQ(summary.rotation_errors_deg.min, 0); EXPECT_EQ(summary.proj_center_errors.min, 0); } TEST(AlignmentErrorSummary, MultipleErrors) { std::vector errors(5); for (size_t i = 0; i < errors.size(); ++i) { errors[i].rotation_error_deg = static_cast(i + 1); errors[i].proj_center_error = static_cast(i + 1) * 0.1; } const AlignmentErrorSummary summary = AlignmentErrorSummary::Compute(errors); EXPECT_NEAR(summary.rotation_errors_deg.min, 1.0, 1e-10); EXPECT_NEAR(summary.rotation_errors_deg.max, 5.0, 1e-10); EXPECT_NEAR(summary.rotation_errors_deg.mean, 3.0, 1e-10); EXPECT_NEAR(summary.rotation_errors_deg.median, 3.0, 1e-10); EXPECT_NEAR(summary.rotation_errors_deg.p90, 4.6, 1e-10); EXPECT_NEAR(summary.rotation_errors_deg.p99, 4.96, 1e-10); EXPECT_NEAR(summary.proj_center_errors.min, 0.1, 1e-10); EXPECT_NEAR(summary.proj_center_errors.max, 0.5, 1e-10); EXPECT_NEAR(summary.proj_center_errors.mean, 0.3, 1e-10); EXPECT_NEAR(summary.proj_center_errors.p90, 0.46, 1e-10); EXPECT_NEAR(summary.proj_center_errors.p99, 0.496, 1e-10); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment.cc000066400000000000000000000326131522646662000232600ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/bundle_adjustment.h" #include "colmap/estimators/bundle_adjustment_caspar.h" #include "colmap/estimators/bundle_adjustment_ceres.h" namespace colmap { bool BundleAdjustmentSummary::IsSolutionUsable() const { return termination_type == BundleAdjustmentTerminationType::CONVERGENCE || termination_type == BundleAdjustmentTerminationType::NO_CONVERGENCE || termination_type == BundleAdjustmentTerminationType::USER_SUCCESS; } std::string BundleAdjustmentSummary::BriefReport() const { return "Bundle adjustment report: termination=" + std::string( BundleAdjustmentTerminationTypeToString(termination_type)) + ", num_residuals=" + std::to_string(num_residuals); } //////////////////////////////////////////////////////////////////////////////// // BundleAdjustmentConfig //////////////////////////////////////////////////////////////////////////////// void BundleAdjustmentConfig::FixGauge(BundleAdjustmentGauge gauge) { fixed_gauge_ = gauge; } BundleAdjustmentGauge BundleAdjustmentConfig::FixedGauge() const { return fixed_gauge_; } size_t BundleAdjustmentConfig::NumImages() const { return image_ids_.size(); } size_t BundleAdjustmentConfig::NumPoints() const { return variable_point3D_ids_.size() + constant_point3D_ids_.size(); } size_t BundleAdjustmentConfig::NumConstantCamIntrinsics() const { return constant_cam_intrinsics_.size(); } size_t BundleAdjustmentConfig::NumConstantSensorFromRigPoses() const { return constant_sensor_from_rig_poses_.size(); } size_t BundleAdjustmentConfig::NumConstantRigFromWorldPoses() const { return constant_rig_from_world_poses_.size(); } size_t BundleAdjustmentConfig::NumVariablePoints() const { return variable_point3D_ids_.size(); } size_t BundleAdjustmentConfig::NumConstantPoints() const { return constant_point3D_ids_.size(); } size_t BundleAdjustmentConfig::NumResiduals( const Reconstruction& reconstruction) const { // Count the number of observations for all added images. size_t num_observations = 0; for (const image_t image_id : image_ids_) { const auto& image = reconstruction.Image(image_id); for (const auto& point2D : image.Points2D()) { if (point2D.HasPoint3D() && !IsIgnoredPoint(point2D.point3D_id)) { ++num_observations; } } } // Count the number of observations for all added 3D points that are not // already added as part of the images above. auto NumObservationsForPoint = [this, &reconstruction](const point3D_t point3D_id) { size_t num_observations_for_point = 0; const auto& point3D = reconstruction.Point3D(point3D_id); for (const auto& track_el : point3D.track.Elements()) { if (image_ids_.count(track_el.image_id) == 0) { ++num_observations_for_point; } } return num_observations_for_point; }; for (const auto point3D_id : variable_point3D_ids_) { num_observations += NumObservationsForPoint(point3D_id); } for (const auto point3D_id : constant_point3D_ids_) { num_observations += NumObservationsForPoint(point3D_id); } CHECK_GE(num_observations, 0); return 2 * num_observations; } void BundleAdjustmentConfig::AddImage(const image_t image_id) { image_ids_.insert(image_id); } bool BundleAdjustmentConfig::HasImage(const image_t image_id) const { return image_ids_.find(image_id) != image_ids_.end(); } void BundleAdjustmentConfig::RemoveImage(const image_t image_id) { image_ids_.erase(image_id); } void BundleAdjustmentConfig::SetConstantCamIntrinsics( const camera_t camera_id) { constant_cam_intrinsics_.insert(camera_id); } void BundleAdjustmentConfig::SetVariableCamIntrinsics( const camera_t camera_id) { constant_cam_intrinsics_.erase(camera_id); } bool BundleAdjustmentConfig::HasConstantCamIntrinsics( const camera_t camera_id) const { return constant_cam_intrinsics_.find(camera_id) != constant_cam_intrinsics_.end(); } void BundleAdjustmentConfig::SetConstantSensorFromRigPose( const sensor_t sensor_id) { constant_sensor_from_rig_poses_.insert(sensor_id); } void BundleAdjustmentConfig::SetVariableSensorFromRigPose( const sensor_t sensor_id) { constant_sensor_from_rig_poses_.erase(sensor_id); } bool BundleAdjustmentConfig::HasConstantSensorFromRigPose( const sensor_t sensor_id) const { return constant_sensor_from_rig_poses_.find(sensor_id) != constant_sensor_from_rig_poses_.end(); } void BundleAdjustmentConfig::SetConstantRigFromWorldPose( const frame_t frame_id) { constant_rig_from_world_poses_.insert(frame_id); } void BundleAdjustmentConfig::SetVariableRigFromWorldPose( const frame_t frame_id) { constant_rig_from_world_poses_.erase(frame_id); } bool BundleAdjustmentConfig::HasConstantRigFromWorldPose( const frame_t frame_id) const { return constant_rig_from_world_poses_.find(frame_id) != constant_rig_from_world_poses_.end(); } const std::unordered_set& BundleAdjustmentConfig::Images() const { return image_ids_; } const std::unordered_set& BundleAdjustmentConfig::VariablePoints() const { return variable_point3D_ids_; } const std::unordered_set& BundleAdjustmentConfig::ConstantPoints() const { return constant_point3D_ids_; } const std::unordered_set& BundleAdjustmentConfig::ConstantCamIntrinsics() const { return constant_cam_intrinsics_; } const std::unordered_set& BundleAdjustmentConfig::ConstantSensorFromRigPoses() const { return constant_sensor_from_rig_poses_; } const std::unordered_set& BundleAdjustmentConfig::ConstantRigFromWorldPoses() const { return constant_rig_from_world_poses_; } void BundleAdjustmentConfig::AddVariablePoint(const point3D_t point3D_id) { THROW_CHECK(!HasConstantPoint(point3D_id)); variable_point3D_ids_.insert(point3D_id); } void BundleAdjustmentConfig::AddConstantPoint(const point3D_t point3D_id) { THROW_CHECK(!HasVariablePoint(point3D_id)); constant_point3D_ids_.insert(point3D_id); } void BundleAdjustmentConfig::IgnorePoint(const point3D_t point3D_id) { CHECK(!HasVariablePoint(point3D_id)); CHECK(!HasConstantPoint(point3D_id)); ignored_point3D_ids_.insert(point3D_id); } bool BundleAdjustmentConfig::HasPoint(const point3D_t point3D_id) const { return HasVariablePoint(point3D_id) || HasConstantPoint(point3D_id); } bool BundleAdjustmentConfig::HasVariablePoint( const point3D_t point3D_id) const { return variable_point3D_ids_.count(point3D_id); } bool BundleAdjustmentConfig::HasConstantPoint( const point3D_t point3D_id) const { return constant_point3D_ids_.count(point3D_id); } bool BundleAdjustmentConfig::IsIgnoredPoint(const point3D_t point3D_id) const { return ignored_point3D_ids_.count(point3D_id); } void BundleAdjustmentConfig::RemoveVariablePoint(const point3D_t point3D_id) { variable_point3D_ids_.erase(point3D_id); } void BundleAdjustmentConfig::RemoveConstantPoint(const point3D_t point3D_id) { constant_point3D_ids_.erase(point3D_id); } //////////////////////////////////////////////////////////////////////////////// // BundleAdjuster //////////////////////////////////////////////////////////////////////////////// BundleAdjuster::BundleAdjuster(const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config) : options_(options), config_(config) { THROW_CHECK(options_.Check()); } const BundleAdjustmentOptions& BundleAdjuster::Options() const { return options_; } const BundleAdjustmentConfig& BundleAdjuster::Config() const { return config_; } //////////////////////////////////////////////////////////////////////////////// // BundleAdjustmentOptions //////////////////////////////////////////////////////////////////////////////// BundleAdjustmentBackendOptions::BundleAdjustmentBackendOptions() : ceres(std::make_shared()), caspar(std::make_shared()) {} BundleAdjustmentBackendOptions::BundleAdjustmentBackendOptions( const BundleAdjustmentBackendOptions& other) { if (other.ceres) { ceres = std::make_shared(*other.ceres); } if (other.caspar) { caspar = std::make_shared(*other.caspar); } } BundleAdjustmentBackendOptions& BundleAdjustmentBackendOptions::operator=( const BundleAdjustmentBackendOptions& other) { if (this == &other) { return *this; } if (other.ceres) { ceres = std::make_shared(*other.ceres); } else { ceres.reset(); } if (other.caspar) { caspar = std::make_shared(*other.caspar); } else { caspar.reset(); } return *this; } bool BundleAdjustmentOptions::Check() const { return THROW_CHECK_NOTNULL(ceres)->Check(); } std::unique_ptr CreateDefaultBundleAdjuster( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction) { switch (options.backend) { case BundleAdjustmentBackend::CERES: return CreateDefaultCeresBundleAdjuster(options, config, reconstruction); case BundleAdjustmentBackend::CASPAR: #ifdef CASPAR_ENABLED return CreateDefaultCasparBundleAdjuster(options, config, reconstruction); #else LOG(FATAL_THROW) << "Caspar BA backend selected but COLMAP was built without " "CASPAR_ENABLED; rebuild with -DCASPAR_ENABLED=ON to use it"; return nullptr; #endif } LOG(FATAL_THROW) << "Unknown bundle adjustment backend: " << static_cast(options.backend); return nullptr; } //////////////////////////////////////////////////////////////////////////////// // PosePriorBundleAdjustmentOptions //////////////////////////////////////////////////////////////////////////////// PosePriorBundleAdjustmentBackendOptions:: PosePriorBundleAdjustmentBackendOptions() : ceres(std::make_shared()) {} PosePriorBundleAdjustmentBackendOptions:: PosePriorBundleAdjustmentBackendOptions( const PosePriorBundleAdjustmentBackendOptions& other) { if (other.ceres) { ceres = std::make_shared(*other.ceres); } } PosePriorBundleAdjustmentBackendOptions& PosePriorBundleAdjustmentBackendOptions::operator=( const PosePriorBundleAdjustmentBackendOptions& other) { if (this == &other) { return *this; } if (other.ceres) { ceres = std::make_shared(*other.ceres); } else { ceres.reset(); } return *this; } bool PosePriorBundleAdjustmentOptions::Check() const { CHECK_OPTION_GT(prior_position_fallback_stddev, 0); return THROW_CHECK_NOTNULL(ceres)->Check(); } std::unique_ptr CreatePosePriorBundleAdjuster( const BundleAdjustmentOptions& options, const PosePriorBundleAdjustmentOptions& prior_options, const BundleAdjustmentConfig& config, std::vector pose_priors, Reconstruction& reconstruction) { switch (options.backend) { case BundleAdjustmentBackend::CERES: return CreatePosePriorCeresBundleAdjuster(options, prior_options, config, std::move(pose_priors), reconstruction); case BundleAdjustmentBackend::CASPAR: #ifdef CASPAR_ENABLED LOG(FATAL_THROW) << "Caspar BA backend does not support pose priors"; #else LOG(FATAL_THROW) << "Caspar BA backend selected but COLMAP was built without " "CASPAR_ENABLED; rebuild with -DCASPAR_ENABLED=ON to use it"; #endif return nullptr; } LOG(FATAL_THROW) << "Unknown bundle adjustment backend: " << static_cast(options.backend); return nullptr; } } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment.h000066400000000000000000000247771522646662000231360ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/optim/ransac.h" #include "colmap/scene/reconstruction.h" #include "colmap/util/eigen_alignment.h" #include "colmap/util/enum_utils.h" #include #include #include namespace colmap { struct CeresBundleAdjustmentOptions; struct CeresPosePriorBundleAdjustmentOptions; MAKE_ENUM_CLASS_OVERLOAD_STREAM( BundleAdjustmentGauge, -1, UNSPECIFIED, TWO_CAMS_FROM_WORLD, THREE_POINTS); // Termination type for bundle adjustment, independent of solver backend. MAKE_ENUM_CLASS_OVERLOAD_STREAM(BundleAdjustmentTerminationType, 0, CONVERGENCE, NO_CONVERGENCE, FAILURE, USER_SUCCESS, USER_FAILURE); // Backend for bundle adjustment solver. MAKE_ENUM_CLASS_OVERLOAD_STREAM(BundleAdjustmentBackend, 0, CERES, CASPAR); // Summary of bundle adjustment results, independent of solver backend. struct BundleAdjustmentSummary { BundleAdjustmentTerminationType termination_type = BundleAdjustmentTerminationType::FAILURE; // Number of residuals connected to at least one variable parameter block. // Excludes residuals where all connected parameters are constant. int num_residuals = 0; bool IsSolutionUsable() const; virtual std::string BriefReport() const; virtual ~BundleAdjustmentSummary() = default; }; // Configuration container to setup bundle adjustment problems. class BundleAdjustmentConfig { public: BundleAdjustmentConfig() = default; void FixGauge(BundleAdjustmentGauge gauge); BundleAdjustmentGauge FixedGauge() const; size_t NumImages() const; size_t NumPoints() const; size_t NumVariablePoints() const; size_t NumConstantPoints() const; size_t NumConstantCamIntrinsics() const; size_t NumConstantSensorFromRigPoses() const; size_t NumConstantRigFromWorldPoses() const; // Determine the number of residuals for the given reconstruction. The number // of residuals equals the number of observations times two. size_t NumResiduals(const Reconstruction& reconstruction) const; // Add / remove images from the configuration. void AddImage(image_t image_id); bool HasImage(image_t image_id) const; void RemoveImage(image_t image_id); // Set cameras of added images as constant or variable. By default all // cameras of added images are variable. Note that the corresponding images // have to be added prior to calling these methods. void SetConstantCamIntrinsics(camera_t camera_id); void SetVariableCamIntrinsics(camera_t camera_id); bool HasConstantCamIntrinsics(camera_t camera_id) const; // Set the sensor-from-rig extrinsic pose as constant or variable. void SetConstantSensorFromRigPose(sensor_t sensor_id); void SetVariableSensorFromRigPose(sensor_t sensor_id); bool HasConstantSensorFromRigPose(sensor_t sensor_id) const; // Set the rig from world pose as constant. void SetConstantRigFromWorldPose(frame_t frame_id); void SetVariableRigFromWorldPose(frame_t frame_id); bool HasConstantRigFromWorldPose(frame_t frame_id) const; // Add / remove points from the configuration. Note that points can either // be variable or constant but not both at the same time. void AddVariablePoint(point3D_t point3D_id); void AddConstantPoint(point3D_t point3D_id); void IgnorePoint(point3D_t point3D_id); bool HasPoint(point3D_t point3D_id) const; bool HasVariablePoint(point3D_t point3D_id) const; bool HasConstantPoint(point3D_t point3D_id) const; bool IsIgnoredPoint(point3D_t point3D_id) const; void RemoveVariablePoint(point3D_t point3D_id); void RemoveConstantPoint(point3D_t point3D_id); // Access configuration data. const std::unordered_set& Images() const; const std::unordered_set& VariablePoints() const; const std::unordered_set& ConstantPoints() const; const std::unordered_set& ConstantCamIntrinsics() const; const std::unordered_set& ConstantSensorFromRigPoses() const; const std::unordered_set& ConstantRigFromWorldPoses() const; private: BundleAdjustmentGauge fixed_gauge_ = BundleAdjustmentGauge::UNSPECIFIED; std::unordered_set constant_cam_intrinsics_; std::unordered_set image_ids_; std::unordered_set variable_point3D_ids_; std::unordered_set constant_point3D_ids_; std::unordered_set ignored_point3D_ids_; std::unordered_set constant_sensor_from_rig_poses_; std::unordered_set constant_rig_from_world_poses_; }; struct CasparBundleAdjustmentOptions; struct BundleAdjustmentBackendOptions { // Ceres-specific options (only used when backend == CERES). std::shared_ptr ceres; // Caspar-specific options (only used when backend == CASPAR). // Type defined in bundle_adjustment_caspar.h. std::shared_ptr caspar; BundleAdjustmentBackendOptions(); BundleAdjustmentBackendOptions(const BundleAdjustmentBackendOptions& other); BundleAdjustmentBackendOptions& operator=( const BundleAdjustmentBackendOptions& other); BundleAdjustmentBackendOptions(BundleAdjustmentBackendOptions&& other) = default; BundleAdjustmentBackendOptions& operator=( BundleAdjustmentBackendOptions&& other) = default; }; // Solver-agnostic bundle adjustment options. struct BundleAdjustmentOptions : public BundleAdjustmentBackendOptions { // Whether to refine the focal length parameter group. bool refine_focal_length = true; // Whether to refine the principal point parameter group. bool refine_principal_point = false; // Whether to refine the extra parameter group. bool refine_extra_params = true; // Whether to refine the extrinsic parameter group. bool refine_sensor_from_rig = true; bool refine_rig_from_world = true; // Whether to refine the 3D point positions. When false, all 3D points are // treated as constant, enabling refinement of only camera intrinsics and // poses. This is useful when 3D points come from a reference model and // should not be modified. bool refine_points3D = true; // Minimum track length for a 3D point to be included in bundle adjustment. // Points with fewer observations are ignored. int min_track_length = 0; // Whether to keep the rotation component of rig_from_world constant. // Only takes effect when refine_rig_from_world is true. // When true, only translation is refined. bool constant_rig_from_world_rotation = false; // Whether to print a final summary. bool print_summary = true; // Solver backend to use for bundle adjustment. BundleAdjustmentBackend backend = BundleAdjustmentBackend::CERES; bool Check() const; }; // Abstract base class for bundle adjustment, independent of solver backend. class BundleAdjuster { public: BundleAdjuster(const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config); virtual ~BundleAdjuster() = default; virtual std::shared_ptr Solve() = 0; const BundleAdjustmentOptions& Options() const; const BundleAdjustmentConfig& Config() const; protected: BundleAdjustmentOptions options_; BundleAdjustmentConfig config_; }; // Factory function to create bundle adjusters. // Currently uses Ceres as the backend, but can be extended to support // other backends (e.g., Caspar) in the future. std::unique_ptr CreateDefaultBundleAdjuster( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction); struct PosePriorBundleAdjustmentBackendOptions { // Ceres-specific options (only used when backend == CERES). std::shared_ptr ceres; PosePriorBundleAdjustmentBackendOptions(); PosePriorBundleAdjustmentBackendOptions( const PosePriorBundleAdjustmentBackendOptions& other); PosePriorBundleAdjustmentBackendOptions& operator=( const PosePriorBundleAdjustmentBackendOptions& other); PosePriorBundleAdjustmentBackendOptions( PosePriorBundleAdjustmentBackendOptions&& other) = default; PosePriorBundleAdjustmentBackendOptions& operator=( PosePriorBundleAdjustmentBackendOptions&& other) = default; }; // Solver-agnostic pose prior bundle adjustment options. struct PosePriorBundleAdjustmentOptions : public PosePriorBundleAdjustmentBackendOptions { // Fallback if no prior position covariance is provided. double prior_position_fallback_stddev = 1.0; // Sim3 alignment options. RANSACOptions alignment_ransac_options; bool Check() const; }; // Factory function to create pose prior bundle adjusters. std::unique_ptr CreatePosePriorBundleAdjuster( const BundleAdjustmentOptions& options, const PosePriorBundleAdjustmentOptions& prior_options, const BundleAdjustmentConfig& config, std::vector pose_priors, Reconstruction& reconstruction); } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_caspar.cc000066400000000000000000001154351522646662000246150ustar00rootroot00000000000000#include "colmap/estimators/bundle_adjustment_caspar.h" #include "colmap/estimators/bundle_adjustment.h" #include "colmap/geometry/rigid3.h" #include "colmap/scene/camera.h" #include "colmap/scene/image.h" #include "colmap/sensor/models.h" #include "colmap/util/cuda.h" #include "colmap/util/misc.h" #ifdef CASPAR_ENABLED #include "colmap/estimators/caspar/caspar_model_adapter.h" #endif namespace colmap { namespace { class CasparBundleAdjuster : public BundleAdjuster { public: CasparBundleAdjuster(BundleAdjustmentOptions options, BundleAdjustmentConfig config, Reconstruction& reconstruction) : BundleAdjuster(options, config), reconstruction_(reconstruction) { VLOG(1) << "Using Caspar bundle adjuster"; BuildObservationCounts(); FixGauge(); BuildFactors(); } private: ICasparModelAdapter* GetAdapter(const CameraModelId model_id) { auto it = adapters_.find(model_id); if (it != adapters_.end()) { return it->second.get(); } auto adapter = CreateCasparAdapter(model_id); if (!adapter) { return nullptr; } auto* ptr = adapter.get(); adapters_[model_id] = std::move(adapter); model_data_per_model_.emplace(model_id, ModelData{}); calib_num_per_model_[model_id] = 0; return ptr; } void BuildObservationCounts() { for (const image_t image_id : config_.Images()) { const Image& image = reconstruction_.Image(image_id); const Camera& camera = *image.CameraPtr(); if (!GetAdapter(camera.model_id)) { LOG(WARNING) << "Skipping image " << image_id << " with unsupported camera model: " << camera.ModelName(); continue; } for (const Point2D& point2D : image.Points2D()) { if (!point2D.HasPoint3D() || config_.IsIgnoredPoint(point2D.point3D_id)) { continue; } point3D_num_observations_[point2D.point3D_id]++; } } for (const auto point3D_id : config_.VariablePoints()) { CountExternalObservations(point3D_id); } for (const auto point3D_id : config_.ConstantPoints()) { CountExternalObservations(point3D_id); } } void CountExternalObservations(const point3D_t point3D_id) { const Point3D& point3D = reconstruction_.Point3D(point3D_id); for (const auto& track_el : point3D.track.Elements()) { if (!config_.HasImage(track_el.image_id)) { Image& image = reconstruction_.Image(track_el.image_id); Camera& camera = *image.CameraPtr(); if (GetAdapter(camera.model_id)) { point3D_num_observations_[point3D_id]++; } } } } void BuildFactors() { CreateCalibrationNodes(); CreatePoseNodes(); CreatePointNodes(); AddFactors(); AddExternalFactors(); } void CreateCalibrationNodes() { std::vector sorted_camera_ids; sorted_camera_ids.reserve(config_.Images().size()); for (const image_t image_id : config_.Images()) { sorted_camera_ids.push_back(reconstruction_.Image(image_id).CameraId()); } std::sort(sorted_camera_ids.begin(), sorted_camera_ids.end()); sorted_camera_ids.erase( std::unique(sorted_camera_ids.begin(), sorted_camera_ids.end()), sorted_camera_ids.end()); for (const camera_t camera_id : sorted_camera_ids) { const Camera& camera = reconstruction_.Camera(camera_id); if (!GetAdapter(camera.model_id)) { continue; } GetOrCreateCalibration(camera_id, camera); } } void CreatePoseNodes() { std::map frame_to_model; for (const image_t image_id : config_.Images()) { const Image& image = reconstruction_.Image(image_id); const Camera& camera = reconstruction_.Camera(image.CameraId()); frame_to_model.emplace(image.FrameId(), camera.model_id); } for (const auto& [frame_id, model_id] : frame_to_model) { GetOrCreatePose(frame_id, model_id); } } void CreatePointNodes() { std::vector sorted_point3D_ids; sorted_point3D_ids.reserve(point3D_num_observations_.size()); for (const auto& [point_id, _] : point3D_num_observations_) { sorted_point3D_ids.push_back(point_id); } std::sort(sorted_point3D_ids.begin(), sorted_point3D_ids.end()); point3D_id_to_idx_.reserve(sorted_point3D_ids.size()); point3D_idx_to_id_.reserve(sorted_point3D_ids.size()); point3D_data_.reserve(sorted_point3D_ids.size() * 3); for (const point3D_t point_id : sorted_point3D_ids) { GetOrCreatePoint(point_id, reconstruction_.Point3D(point_id)); } } void AddFactors() { // Sort camera-first so all factors for the same calibration are contiguous. // This improves float32 numerical quality in the GPU gradient summation. std::vector> sorted_images; sorted_images.reserve(config_.Images().size()); for (const image_t image_id : config_.Images()) { sorted_images.emplace_back(reconstruction_.Image(image_id).CameraId(), image_id); } std::sort(sorted_images.begin(), sorted_images.end()); // Cache per-camera values across images sharing the same camera. These are // recomputed only when the camera changes (images are sorted camera-first). camera_t prev_camera_id = static_cast(-1); ICasparModelAdapter* adapter = nullptr; const Camera* camera_ptr = nullptr; bool focal_and_extra = false; bool principal_point_var = false; size_t calib_idx = 0; for (const auto& [camera_id, image_id] : sorted_images) { const Image& image = reconstruction_.Image(image_id); if (camera_id != prev_camera_id) { camera_ptr = &reconstruction_.Camera(camera_id); adapter = GetAdapter(camera_ptr->model_id); if (adapter) { if (options_.refine_focal_length != options_.refine_extra_params && !config_.HasConstantCamIntrinsics(camera_id) && !cameras_from_outside_config_.count(camera_id)) { LOG(FATAL_THROW) << "Camera " << camera_id << ": refine_focal_length != refine_extra_params is not " "supported by CASPAR's merged focal_and_extra block."; } focal_and_extra = IsFocalAndExtraVariable(camera_id); principal_point_var = IsPrincipalPointVariable(camera_id); calib_idx = GetOrCreateCalibration(camera_id, *camera_ptr); } prev_camera_id = camera_id; } if (!adapter) continue; if (options_.refine_sensor_from_rig) { const Frame& frame = *image.FramePtr(); if (frame.HasRigPtr() && !image.IsRefInFrame()) { LOG(FATAL_THROW) << "Camera " << camera_id << ": refine_sensor_from_rig=true is not supported by CASPAR. " "Set refine_sensor_from_rig=false or use the Ceres BA."; } } const bool pose_var = IsPoseVariable(image.FrameId()); for (const Point2D& point2D : image.Points2D()) { if (!point2D.HasPoint3D() || config_.IsIgnoredPoint(point2D.point3D_id) || !point3D_id_to_idx_.count(point2D.point3D_id)) { continue; } AddFactorCore(image, *camera_ptr, point2D, reconstruction_.Point3D(point2D.point3D_id), pose_var, focal_and_extra, principal_point_var, calib_idx, *adapter); } } } void AddExternalFactors() { for (const auto point3D_id : config_.VariablePoints()) { AddFactorsForExternalObservations(point3D_id); } for (const auto point3D_id : config_.ConstantPoints()) { AddFactorsForExternalObservations(point3D_id); } } void AddFactorsForExternalObservations(const point3D_t point3D_id) { THROW_CHECK(!config_.IsIgnoredPoint(point3D_id)); Point3D& point3D = reconstruction_.Point3D(point3D_id); GetOrCreatePoint(point3D_id, point3D); for (const auto& track_el : point3D.track.Elements()) { if (config_.HasImage(track_el.image_id)) { continue; } Image& image = reconstruction_.Image(track_el.image_id); Camera& camera = *image.CameraPtr(); ICasparModelAdapter* adapter = GetAdapter(camera.model_id); if (!adapter) { LOG(WARNING) << "Skipping external observation with unsupported " "camera model: " << camera.ModelName(); continue; } // Mark frame and camera as external so that IsPoseVariable and // IsFocalAndExtraVariable return false for all external // observations. frames_from_outside_config_.insert(image.FrameId()); cameras_from_outside_config_.insert(camera.camera_id); if (options_.refine_sensor_from_rig) { const Frame& frame = *image.FramePtr(); if (frame.HasRigPtr() && !image.IsRefInFrame()) { LOG(FATAL_THROW) << "Camera " << camera.camera_id << ": refine_sensor_from_rig=true is not supported by CASPAR. " "Set refine_sensor_from_rig=false or use the Ceres BA."; } } const Point2D& point2D = image.Point2D(track_el.point2D_idx); const size_t calib_idx = GetOrCreateCalibration(camera.camera_id, camera); AddFactorCore(image, camera, point2D, point3D, /*pose_var=*/false, /*focal_and_extra=*/false, /*principal_point_var=*/false, calib_idx, *adapter); } } void AddFactorCore(const Image& image, const Camera& camera, const Point2D& point2D, const Point3D& point3D, bool pose_var, bool focal_and_extra, bool principal_point_var, size_t calib_idx, ICasparModelAdapter& adapter) { const bool point_var = IsPointVariable(point2D.point3D_id); // Skip fully-constant observations, there's nothing to optimize if (!pose_var && !focal_and_extra && !principal_point_var && !point_var) { return; } ModelData& md = model_data_per_model_.at(camera.model_id); // 4-bit key: bit3=pose_var, bit2=fae_var, bit1=pp_var, bit0=pt_var. // Entry 0 (all fixed) is unreachable static constexpr FactorVariant kVariantTable[16] = { /* 0000 */ FactorVariant::BASE, // unreachable /* 0001 */ FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT, /* 0010 */ FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT, /* 0011 */ FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA, /* 0100 */ FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT, /* 0101 */ FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT, /* 0110 */ FactorVariant::FIXED_POSE_FIXED_POINT, /* 0111 */ FactorVariant::FIXED_POSE, /* 1000 */ FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT, /* 1001 */ FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT, /* 1010 */ FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_POINT, /* 1011 */ FactorVariant::FIXED_FOCAL_AND_EXTRA, /* 1100 */ FactorVariant::FIXED_PRINCIPAL_POINT_FIXED_POINT, /* 1101 */ FactorVariant::FIXED_PRINCIPAL_POINT, /* 1110 */ FactorVariant::FIXED_POINT, /* 1111 */ FactorVariant::BASE, }; const FactorVariant v = kVariantTable[(static_cast(pose_var) << 3) | (static_cast(focal_and_extra) << 2) | (static_cast(principal_point_var) << 1) | static_cast(point_var)]; VariantData& vd = md.variants[static_cast(v)]; AppendPose(vd.sensor_from_rig_data, GetSensorFromRig(image)); if (pose_var) { vd.pose_indices.push_back( GetOrCreatePose(image.FrameId(), camera.model_id)); } else { AppendPose(vd.const_poses, reconstruction_.Frame(image.FrameId()).RigFromWorld()); } if (focal_and_extra) { vd.focal_and_extra_indices.push_back(calib_idx); } else { const size_t fs = adapter.FocalAndExtraSize(); const auto* src = md.focal_and_extra_data.data() + calib_idx * fs; vd.const_focal_and_extra.insert( vd.const_focal_and_extra.end(), src, src + fs); } if (principal_point_var) { vd.principal_point_indices.push_back(calib_idx); } else { const size_t ps = adapter.PrincipalPointSize(); const auto* src = md.principal_point_data.data() + calib_idx * ps; vd.const_principal_point.insert( vd.const_principal_point.end(), src, src + ps); } if (point_var) { vd.point_indices.push_back(GetOrCreatePoint(point2D.point3D_id, point3D)); } else { AppendPoint(vd.const_points, point3D); } vd.pixels.push_back(point2D.xy.x()); vd.pixels.push_back(point2D.xy.y()); ++vd.num_factors; } static void AppendPose(std::vector& out, const Rigid3d& pose) { out.push_back(pose.rotation().x()); out.push_back(pose.rotation().y()); out.push_back(pose.rotation().z()); out.push_back(pose.rotation().w()); out.push_back(pose.translation().x()); out.push_back(pose.translation().y()); out.push_back(pose.translation().z()); } static void AppendPoint(std::vector& out, const Point3D& pt) { out.push_back(pt.xyz.x()); out.push_back(pt.xyz.y()); out.push_back(pt.xyz.z()); } size_t GetOrCreatePoint(const point3D_t point_id, const Point3D& point) { auto [it, inserted] = point3D_id_to_idx_.try_emplace(point_id, num_points_); if (inserted) { point3D_idx_to_id_.push_back(point_id); point3D_data_.push_back(point.xyz.x()); point3D_data_.push_back(point.xyz.y()); point3D_data_.push_back(point.xyz.z()); num_points_++; } return it->second; } size_t GetOrCreatePose(const frame_t frame_id, const CameraModelId model_id) { size_t& n = num_poses_per_model_[model_id]; auto [it, inserted] = frame_to_pose_index_per_model_[model_id].try_emplace(frame_id, n); if (inserted) { pose_index_to_frame_per_model_[model_id][n] = frame_id; const Rigid3d& pose = reconstruction_.Frame(frame_id).RigFromWorld(); auto& data = pose_data_per_model_[model_id]; data.push_back(pose.rotation().x()); data.push_back(pose.rotation().y()); data.push_back(pose.rotation().z()); data.push_back(pose.rotation().w()); data.push_back(pose.translation().x()); data.push_back(pose.translation().y()); data.push_back(pose.translation().z()); n++; } return it->second; } // Returns the sensor_from_rig transform for a camera. Identity for ref // sensors and single-camera datasets; actual transform for non-ref rigs. Rigid3d GetSensorFromRig(const Image& image) { const Frame& frame = *image.FramePtr(); if (frame.HasRigPtr() && !image.IsRefInFrame()) { return frame.RigPtr()->SensorFromRig(image.DataId().sensor_id); } return Rigid3d{}; } // Calib indices are per-model: index 0 for SimpleRadial is unrelated to // index 0 for Pinhole. size_t GetOrCreateCalibration(const camera_t camera_id, const Camera& camera) { auto [it, inserted] = camera_to_calib_index_.try_emplace(camera_id, 0); if (inserted) { ICasparModelAdapter* adapter = GetAdapter(camera.model_id); size_t& model_calib_count = calib_num_per_model_[camera.model_id]; it->second = model_calib_count; calib_index_to_camera_[{camera.model_id, model_calib_count}] = camera_id; ModelData& md = model_data_per_model_.at(camera.model_id); adapter->ExtractFocalAndExtra(camera, md.focal_and_extra_data); adapter->ExtractPrincipalPoint(camera, md.principal_point_data); ++model_calib_count; } return it->second; } bool IsPoseVariable(const frame_t frame_id) const { return options_.refine_rig_from_world && !config_.HasConstantRigFromWorldPose(frame_id) && !frames_from_outside_config_.count(frame_id) && !gauge_fixed_frames_.count(frame_id); } // Both focal and extra_params must be refined together (merged block). // If they disagree, observations are skipped. See AddFactorForObservation. bool IsFocalAndExtraVariable(const camera_t camera_id) const { return options_.refine_focal_length && options_.refine_extra_params && !config_.HasConstantCamIntrinsics(camera_id) && !cameras_from_outside_config_.count(camera_id); } bool IsPrincipalPointVariable(const camera_t camera_id) const { return options_.refine_principal_point && !config_.HasConstantCamIntrinsics(camera_id) && !cameras_from_outside_config_.count(camera_id); } bool AreIntrinsicsVariable(const camera_t camera_id) const { return IsFocalAndExtraVariable(camera_id) || IsPrincipalPointVariable(camera_id); } bool IsPointVariable(const point3D_t point3D_id) const { if (config_.HasConstantPoint(point3D_id) || gauge_fixed_points_.count(point3D_id)) { return false; } const auto it = point3D_num_observations_.find(point3D_id); return it != point3D_num_observations_.end() && reconstruction_.Point3D(point3D_id).track.Length() <= it->second; } void FixGauge() { switch (config_.FixedGauge()) { case BundleAdjustmentGauge::UNSPECIFIED: break; case BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD: FixGaugeWithOneFrameFromWorld(); break; case BundleAdjustmentGauge::THREE_POINTS: FixGaugeWithThreePoints(); break; default: LOG(FATAL_THROW) << "Unknown BundleAdjustmentGauge"; } } // Partial two-view gauge fix: fixes one pose only. Caspar can express the // second camera's 1-DOF translation manifold, but the gain is minimal and // the extra shared-memory cost is not worth it, so scale is left as the one // unfixed gauge DOF. void FixGaugeWithOneFrameFromWorld() { if (!options_.refine_rig_from_world) { return; } // Sort image IDs for deterministic selection (matches Ceres BA behavior). std::vector sorted_image_ids(config_.Images().begin(), config_.Images().end()); std::sort(sorted_image_ids.begin(), sorted_image_ids.end()); for (const image_t image_id : sorted_image_ids) { const Image& image = reconstruction_.Image(image_id); if (config_.HasConstantRigFromWorldPose(image.FrameId())) { VLOG(1) << "Gauge fix: frame " << image.FrameId() << " already constant, skipping TWO_CAMS_FROM_WORLD fix"; return; } } // Require a ref-sensor image so fixing the frame moves factors into // fixed-pose variants rather than being silently skipped. for (const image_t image_id : sorted_image_ids) { const Image& image = reconstruction_.Image(image_id); if (image.IsRefInFrame()) { gauge_fixed_frames_.insert(image.FrameId()); VLOG(1) << "Gauge fix: fixed frame " << image.FrameId() << " (image " << image_id << ") for TWO_CAMS_FROM_WORLD"; return; } } LOG(WARNING) << "Caspar TWO_CAMS_FROM_WORLD gauge fix: no ref-sensor " "frame found, gauge left unfixed."; } // Three-point gauge fix: mirrors the Ceres BA equivalent but promotes points // into gauge_fixed_points_ instead of calling SetParameterBlockConstant. void FixGaugeWithThreePoints() { Eigen::Index num_fixed = 0; Eigen::Matrix3d fixed_pts = Eigen::Matrix3d::Zero(); auto maybe_add = [&](const Eigen::Vector3d& xyz) -> bool { if (num_fixed >= 3) return false; fixed_pts.col(num_fixed) = xyz; if (fixed_pts.colPivHouseholderQr().rank() > num_fixed) { ++num_fixed; return true; } fixed_pts.col(num_fixed).setZero(); return false; }; // First pass: count already-constant points. for (const auto& [point3D_id, _] : point3D_num_observations_) { if (!config_.HasConstantPoint(point3D_id)) continue; const Point3D& pt = reconstruction_.Point3D(point3D_id); if (maybe_add(pt.xyz) && num_fixed >= 3) { VLOG(1) << "Gauge fix: 3 linearly independent constant points found, " "THREE_POINTS gauge fixed"; return; } } // Second pass: promote variable points to gauge-fixed. for (const auto& [point3D_id, _] : point3D_num_observations_) { if (!IsPointVariable(point3D_id)) continue; const Point3D& pt = reconstruction_.Point3D(point3D_id); if (maybe_add(pt.xyz)) { gauge_fixed_points_.insert(point3D_id); if (num_fixed >= 3) { VLOG(1) << "Gauge fix: fixed " << gauge_fixed_points_.size() << " points for THREE_POINTS gauge"; return; } } } LOG(WARNING) << "Caspar THREE_POINTS gauge fix: only " << num_fixed << " of 3 linearly independent points found."; } void SetupSolverData(caspar::GraphSolver& solver) { VLOG(2) << "=== CASPAR SOLVER SETUP ==="; VLOG(2) << " Points: " << num_points_; if (num_points_ > 0) { solver.SetPointNodesFromStackedHost(point3D_data_.data(), 0, num_points_); } for (const auto& [model_id, adapter_ptr] : adapters_) { const ModelData& md = model_data_per_model_.at(model_id); const size_t n_calib = calib_num_per_model_.at(model_id); const size_t n_poses = num_poses_per_model_.count(model_id) ? num_poses_per_model_.at(model_id) : 0; VLOG(2) << " Poses (" << static_cast(model_id) << "): " << n_poses; if (n_poses > 0) { adapter_ptr->SetPoseNodes( solver, pose_data_per_model_.at(model_id).data(), n_poses); } if (n_calib > 0) { adapter_ptr->SetFocalAndExtraNodes( solver, const_cast(md.focal_and_extra_data.data()), n_calib); adapter_ptr->SetPrincipalPointNodes( solver, const_cast(md.principal_point_data.data()), n_calib); // Set merged Calib nodes when both intrinsic groups are tunable. const bool has_merged = md.variants[static_cast(FactorVariant::BASE)].num_factors > 0 || md.variants[static_cast(FactorVariant::FIXED_POSE)] .num_factors > 0 || md.variants[static_cast(FactorVariant::FIXED_POINT)] .num_factors > 0 || md.variants[static_cast(FactorVariant::FIXED_POSE_FIXED_POINT)] .num_factors > 0; if (has_merged) { const size_t fae_size = adapter_ptr->FocalAndExtraSize(); const size_t pp_size = adapter_ptr->PrincipalPointSize(); const size_t cal_size = adapter_ptr->CalibSize(); std::vector calib_data(n_calib * cal_size); for (size_t i = 0; i < n_calib; ++i) { for (size_t j = 0; j < fae_size; ++j) { calib_data[i * cal_size + j] = md.focal_and_extra_data[i * fae_size + j]; } for (size_t j = 0; j < pp_size; ++j) { calib_data[i * cal_size + fae_size + j] = md.principal_point_data[i * pp_size + j]; } } if (n_calib > 0) { VLOG(2) << " SetCalibNodes [cam 0, model " << static_cast(model_id) << "]: [" << calib_data[0] << ", " << calib_data[1] << ", " << calib_data[2] << ", " << calib_data[3] << "]"; } adapter_ptr->SetCalibNodes(solver, calib_data.data(), n_calib); } } for (int v = 0; v < CASPAR_NUM_VARIANTS; ++v) { if (md.variants[v].num_factors > 0) { adapter_ptr->SetVariantFactors( solver, static_cast(v), md.variants[v]); } } } solver.finish_indices(); } void ReadSolverResults(caspar::GraphSolver& solver) { if (num_points_ > 0) { solver.GetPointNodesToStackedHost(point3D_data_.data(), 0, num_points_); } for (const auto& [model_id, adapter_ptr] : adapters_) { const size_t n_poses = num_poses_per_model_.count(model_id) ? num_poses_per_model_.at(model_id) : 0; if (n_poses > 0) { adapter_ptr->GetPoseNodes( solver, pose_data_per_model_.at(model_id).data(), n_poses); } } for (const auto& [model_id, adapter_ptr] : adapters_) { ModelData& md = model_data_per_model_.at(model_id); const size_t n_calib = calib_num_per_model_.at(model_id); if (n_calib > 0) { adapter_ptr->GetFocalAndExtraNodes( solver, md.focal_and_extra_data.data(), n_calib); adapter_ptr->GetPrincipalPointNodes( solver, md.principal_point_data.data(), n_calib); // Split the merged Calib node back into focal_and_extra_data and // principal_point_data, overwriting the stale split-pool values above. const bool has_merged = md.variants[static_cast(FactorVariant::BASE)].num_factors > 0 || md.variants[static_cast(FactorVariant::FIXED_POSE)] .num_factors > 0 || md.variants[static_cast(FactorVariant::FIXED_POINT)] .num_factors > 0 || md.variants[static_cast(FactorVariant::FIXED_POSE_FIXED_POINT)] .num_factors > 0; if (has_merged) { const size_t fae_size = adapter_ptr->FocalAndExtraSize(); const size_t pp_size = adapter_ptr->PrincipalPointSize(); const size_t cal_size = adapter_ptr->CalibSize(); std::vector calib_data(n_calib * cal_size); adapter_ptr->GetCalibNodes(solver, calib_data.data(), n_calib); if (n_calib > 0) { VLOG(2) << " GetCalibNodes [cam 0, model " << static_cast(model_id) << "]: [" << calib_data[0] << ", " << calib_data[1] << ", " << calib_data[2] << ", " << calib_data[3] << "]"; } for (size_t i = 0; i < n_calib; ++i) { for (size_t j = 0; j < fae_size; ++j) { md.focal_and_extra_data[i * fae_size + j] = calib_data[i * cal_size + j]; } for (size_t j = 0; j < pp_size; ++j) { md.principal_point_data[i * pp_size + j] = calib_data[i * cal_size + fae_size + j]; } } if (n_calib > 0) { VLOG(2) << " After split-back [cam 0]: fae=[" << md.focal_and_extra_data[0] << ", " << md.focal_and_extra_data[1] << "] pp=[" << md.principal_point_data[0] << ", " << md.principal_point_data[1] << "]"; } } } } } void WriteCalibsToReconstruction() { for (const auto& [camera_id, calib_idx] : camera_to_calib_index_) { if (!AreIntrinsicsVariable(camera_id)) { continue; } Camera& camera = reconstruction_.Camera(camera_id); ICasparModelAdapter* adapter = GetAdapter(camera.model_id); const ModelData& md = model_data_per_model_.at(camera.model_id); const std::string params_before = camera.ParamsToString(); if (IsFocalAndExtraVariable(camera_id)) { adapter->WriteFocalAndExtra( camera, md.focal_and_extra_data.data(), calib_idx); } if (IsPrincipalPointVariable(camera_id)) { adapter->WritePrincipalPoint( camera, md.principal_point_data.data(), calib_idx); } THROW_CHECK(camera.VerifyParams()); VLOG(1) << "Camera " << camera_id << " (" << camera.ModelName() << ")" << " params: [" << params_before << "] -> [" << camera.ParamsToString() << "]"; } } void WriteResultsToReconstruction() { for (size_t idx = 0; idx < point3D_idx_to_id_.size(); ++idx) { const point3D_t point_id = point3D_idx_to_id_[idx]; // Points with external observations are non-variable but have solver // nodes holding float copies; skip to avoid writing back stale values. if (!IsPointVariable(point_id)) { continue; } Point3D& point = reconstruction_.Point3D(point_id); point.xyz.x() = point3D_data_[idx * 3 + 0]; point.xyz.y() = point3D_data_[idx * 3 + 1]; point.xyz.z() = point3D_data_[idx * 3 + 2]; } for (const auto& [model_id, idx_to_frame] : pose_index_to_frame_per_model_) { const auto& data = pose_data_per_model_.at(model_id); for (const auto& [idx, frame_id] : idx_to_frame) { if (!IsPoseVariable(frame_id)) { continue; } Rigid3d& pose = reconstruction_.Frame(frame_id).RigFromWorld(); pose.rotation().x() = data[idx * 7 + 0]; pose.rotation().y() = data[idx * 7 + 1]; pose.rotation().z() = data[idx * 7 + 2]; pose.rotation().w() = data[idx * 7 + 3]; pose.translation().x() = data[idx * 7 + 4]; pose.translation().y() = data[idx * 7 + 5]; pose.translation().z() = data[idx * 7 + 6]; pose.rotation().normalize(); } } WriteCalibsToReconstruction(); } static const char* FactorVariantName(FactorVariant v) { switch (v) { case FactorVariant::BASE: return "BASE"; case FactorVariant::FIXED_POSE: return "FIXED_POSE"; case FactorVariant::FIXED_FOCAL_AND_EXTRA: return "FIXED_FAE"; case FactorVariant::FIXED_PRINCIPAL_POINT: return "FIXED_PP"; case FactorVariant::FIXED_POINT: return "FIXED_POINT"; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA: return "FIXED_POSE_FAE"; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT: return "FIXED_POSE_PP"; case FactorVariant::FIXED_POSE_FIXED_POINT: return "FIXED_POSE_POINT"; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: return "FIXED_FAE_PP"; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_POINT: return "FIXED_FAE_POINT"; case FactorVariant::FIXED_PRINCIPAL_POINT_FIXED_POINT: return "FIXED_PP_POINT"; case FactorVariant:: FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: return "FIXED_POSE_FAE_PP"; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT: return "FIXED_POSE_FAE_POINT"; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT: return "FIXED_POSE_PP_POINT"; case FactorVariant:: FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT: return "FIXED_FAE_PP_POINT"; default: return "UNKNOWN"; } } void LogFactorDistribution() const { VLOG(1) << "=== Caspar factor distribution ==="; VLOG(1) << " Points: " << num_points_ << " Frames: " << TotalPoses(); for (const auto& [model_id, md] : model_data_per_model_) { for (int v = 0; v < CASPAR_NUM_VARIANTS; ++v) { if (md.variants[v].num_factors == 0) { continue; } VLOG(1) << " model=" << static_cast(model_id) << " variant=" << FactorVariantName(static_cast(v)) << " factors=" << md.variants[v].num_factors; } } VLOG(1) << " Gauge-fixed frames: " << gauge_fixed_frames_.size() << " Gauge-fixed points: " << gauge_fixed_points_.size(); VLOG(1) << " refine_focal_length=" << options_.refine_focal_length << " refine_extra_params=" << options_.refine_extra_params << " refine_pp=" << options_.refine_principal_point << " refine_pose=" << options_.refine_rig_from_world; } size_t ComputeTotalResiduals() const { size_t total = 0; for (const auto& [model_id, md] : model_data_per_model_) { for (int v = 0; v < CASPAR_NUM_VARIANTS; ++v) { total += md.variants[v].num_factors; } } return 2 * total; } CasparSolverSizing BuildSizing() const { CasparSolverSizing sz; sz.num_points = num_points_; if (auto it = num_poses_per_model_.find(CameraModelId::kSimpleRadial); it != num_poses_per_model_.end()) { sz.num_simple_radial_poses = it->second; } if (auto it = num_poses_per_model_.find(CameraModelId::kPinhole); it != num_poses_per_model_.end()) { sz.num_pinhole_poses = it->second; } auto get_md = [&](CameraModelId id) -> const ModelData* { auto it = model_data_per_model_.find(id); return it != model_data_per_model_.end() ? &it->second : nullptr; }; auto get_n = [&](CameraModelId id) -> size_t { auto it = calib_num_per_model_.find(id); return it != calib_num_per_model_.end() ? it->second : 0; }; if (const ModelData* md = get_md(CameraModelId::kSimpleRadial)) { sz.num_simple_radial_calibs = get_n(CameraModelId::kSimpleRadial); adapters_.at(CameraModelId::kSimpleRadial) ->FillSizing(sz, *md, sz.num_simple_radial_calibs); } if (const ModelData* md = get_md(CameraModelId::kPinhole)) { sz.num_pinhole_calibs = get_n(CameraModelId::kPinhole); adapters_.at(CameraModelId::kPinhole) ->FillSizing(sz, *md, sz.num_pinhole_calibs); } return sz; } size_t TotalPoses() const { size_t n = 0; for (const auto& [_, count] : num_poses_per_model_) { n += count; } return n; } bool ValidateData() const { if (num_points_ == 0 && TotalPoses() == 0) { LOG(WARNING) << "No data to optimize"; return false; } if (ComputeTotalResiduals() == 0) { LOG(WARNING) << "No residuals to optimize"; return false; } return true; } std::shared_ptr Solve() override { if (!ValidateData()) { auto summary = std::make_shared(); summary->termination_type = BundleAdjustmentTerminationType::USER_FAILURE; return summary; } caspar::SolverParams params; int gpu_index = -1; if (options_.caspar) { const auto& co = *options_.caspar; const std::vector gpu_indices = CSVToVector(co.gpu_index); THROW_CHECK_GT(gpu_indices.size(), 0); gpu_index = gpu_indices[0]; params.solver_iter_max = co.solver_iter_max; params.pcg_iter_max = co.pcg_iter_max; params.diag_init = co.diag_init; params.diag_min = co.diag_min; params.diag_scaling_up = co.diag_scaling_up; params.diag_scaling_down = co.diag_scaling_down; params.diag_exit_value = co.diag_exit_value; params.score_exit_value = co.score_exit_value; params.pcg_rel_error_exit = co.pcg_rel_error_exit; params.pcg_rel_score_exit = co.pcg_rel_score_exit; params.pcg_rel_decrease_min = co.pcg_rel_decrease_min; params.solver_rel_decrease_min = co.solver_rel_decrease_min; } const size_t device_id = static_cast(gpu_index >= 0 ? gpu_index : FindBestCudaDevice()); LogFactorDistribution(); auto solver = CreateSolver(params, BuildSizing(), device_id); SetupSolverData(solver); const bool collect_iters = options_.caspar && options_.caspar->collect_iteration_data; caspar::SolveResult result = solver.solve( /*print_progress=*/false, /*verbose_logging=*/collect_iters); ReadSolverResults(solver); WriteResultsToReconstruction(); auto summary = CasparBundleAdjustmentSummary::Create(result); summary->num_residuals = ComputeTotalResiduals(); return summary; } std::unordered_map> adapters_; std::unordered_map model_data_per_model_; std::unordered_map calib_num_per_model_; // camera_id -> calib index within its model's array std::unordered_map camera_to_calib_index_; // (model_id, calib_idx) -> camera_id (for write-back) std::map, camera_t> calib_index_to_camera_; Reconstruction& reconstruction_; size_t num_points_ = 0; std::vector point3D_data_; // Pose pools are per-model so that SimpleRadial and Pinhole factors are // never batched into the same Caspar block (reducing shared memory use). std::unordered_map num_poses_per_model_; std::unordered_map> pose_data_per_model_; std::unordered_map> frame_to_pose_index_per_model_; std::unordered_map> pose_index_to_frame_per_model_; std::unordered_map point3D_id_to_idx_; std::vector point3D_idx_to_id_; std::unordered_set frames_from_outside_config_; std::unordered_set cameras_from_outside_config_; std::unordered_set gauge_fixed_frames_; std::unordered_set gauge_fixed_points_; std::unordered_map point3D_num_observations_; }; } // namespace std::shared_ptr CasparBundleAdjustmentSummary::Create( const caspar::SolveResult& caspar_summary) { auto summary = std::make_shared(); summary->iteration_count = caspar_summary.iteration_count; summary->initial_score = caspar_summary.initial_score; summary->iterations = caspar_summary.iterations; switch (caspar_summary.exit_reason) { case caspar::ExitReason::CONVERGED_DIAG_EXIT: VLOG(1) << "Caspar: CONVERGED_DIAG_EXIT after " << caspar_summary.iteration_count << " iters" << " (diag limit hit -> likely premature termination)"; summary->termination_type = BundleAdjustmentTerminationType::CONVERGENCE; break; case caspar::ExitReason::CONVERGED_SCORE_THRESHOLD: VLOG(1) << "Caspar: CONVERGED_SCORE_THRESHOLD after " << caspar_summary.iteration_count << " iters"; summary->termination_type = BundleAdjustmentTerminationType::CONVERGENCE; break; case caspar::ExitReason::MAX_ITERATIONS: VLOG(1) << "Caspar: MAX_ITERATIONS (" << caspar_summary.iteration_count << ")"; summary->termination_type = BundleAdjustmentTerminationType::NO_CONVERGENCE; break; default: summary->termination_type = BundleAdjustmentTerminationType::FAILURE; } return summary; } std::unique_ptr CreateDefaultCasparBundleAdjuster( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction) { return std::make_unique( options, config, reconstruction); } } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_caspar.h000066400000000000000000000117061522646662000244530ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/estimators/bundle_adjustment.h" #include #include #include #ifdef CASPAR_ENABLED #ifdef CASPAR_USE_DOUBLE #include "thirdparty/Symforce-Caspar/generated/f64/solver.h" #else #include "thirdparty/Symforce-Caspar/generated/f32/solver.h" #endif #endif #ifdef CASPAR_USE_DOUBLE typedef double StorageType; #else typedef float StorageType; #endif // 2^4 - 1: all combinations with at least one variable param. #define CASPAR_NUM_VARIANTS 15 enum class FactorVariant { // r=0 BASE, // r=1 FIXED_POSE, FIXED_FOCAL_AND_EXTRA, FIXED_PRINCIPAL_POINT, FIXED_POINT, // r=2 FIXED_POSE_FIXED_FOCAL_AND_EXTRA, FIXED_POSE_FIXED_PRINCIPAL_POINT, FIXED_POSE_FIXED_POINT, FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT, // calibrated camera FIXED_FOCAL_AND_EXTRA_FIXED_POINT, FIXED_PRINCIPAL_POINT_FIXED_POINT, // r=3 FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT, FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT, FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT, FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT, }; struct VariantData { std::vector pose_indices; std::vector sensor_from_rig_data; // 7 floats per factor std::vector focal_and_extra_indices; std::vector principal_point_indices; std::vector point_indices; std::vector const_poses; // 7 floats per factor std::vector const_focal_and_extra; // FocalAndExtraSize() per factor std::vector const_principal_point; // PrincipalPointSize() per factor std::vector const_points; // 3 floats per factor std::vector pixels; // 2 floats per factor size_t num_factors = 0; }; struct ModelData { std::vector focal_and_extra_data; // FocalAndExtraSize() entries per camera std::vector principal_point_data; // PrincipalPointSize() per camera std::array variants{}; // Indexed by FactorVariant }; namespace colmap { // Solver parameters mirroring caspar::SolverParams, stored as double to // round-trip through OptionManager regardless of the float/double build. // Also includes GPU index selection option struct CasparBundleAdjustmentOptions { int solver_iter_max = 200; int pcg_iter_max = 20; double diag_init = 1.0; double diag_min = 1e-12; double diag_scaling_up = 2.0; double diag_scaling_down = 0.333333; double diag_exit_value = 1e3; double score_exit_value = 0.0; double pcg_rel_error_exit = 1e-4; // Negative value disables the corresponding early-exit criterion. double pcg_rel_score_exit = -1.0; double pcg_rel_decrease_min = -1.0; double solver_rel_decrease_min = 1.0; std::string gpu_index = "-1"; bool collect_iteration_data = false; }; std::unique_ptr CreateDefaultCasparBundleAdjuster( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction); #ifdef CASPAR_ENABLED struct CasparBundleAdjustmentSummary : public BundleAdjustmentSummary { static std::shared_ptr Create( const caspar::SolveResult& caspar_summary); int iteration_count = 0; double initial_score = 0.0; std::vector iterations; }; #endif } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_caspar_test.cc000066400000000000000000001440711522646662000256520ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/bundle_adjustment_caspar.h" #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/geometry/rigid3_matchers.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include "colmap/sensor/models.h" #include "colmap/util/testing.h" #include // Due to pose normalization operations, constant variables may not be perfectly // fixed during bundle adjustment. constexpr double kConstantPoseVarEps = 1e-9; #define CheckVariableCamera(camera, orig_camera) \ { \ const size_t focal_length_idx = \ SimpleRadialCameraModel::focal_length_idxs[0]; \ const size_t extra_param_idx = \ SimpleRadialCameraModel::extra_params_idxs[0]; \ EXPECT_NE((camera).params[focal_length_idx], \ (orig_camera).params[focal_length_idx]); \ EXPECT_NE((camera).params[extra_param_idx], \ (orig_camera).params[extra_param_idx]); \ } #define CheckConstantCamera(camera, orig_camera) \ { \ const size_t focal_length_idx = \ SimpleRadialCameraModel::focal_length_idxs[0]; \ const size_t extra_param_idx = \ SimpleRadialCameraModel::extra_params_idxs[0]; \ EXPECT_EQ((camera).params[focal_length_idx], \ (orig_camera).params[focal_length_idx]); \ EXPECT_EQ((camera).params[extra_param_idx], \ (orig_camera).params[extra_param_idx]); \ } #define CheckVariableCamFromWorld(image, orig_image) \ { \ EXPECT_THAT((image).CamFromWorld(), \ testing::Not(Rigid3dEq((orig_image).CamFromWorld()))); \ } #define CheckConstantCamFromWorld(image, orig_image) \ { \ EXPECT_THAT((image).CamFromWorld(), \ Rigid3dNear((orig_image).CamFromWorld(), \ kConstantPoseVarEps, \ kConstantPoseVarEps)); \ } #define CheckConstantCamFromWorldTranslationCoord(image, orig_image) \ { \ size_t num_constant_coords = 0; \ for (int i = 0; i < 3; ++i) { \ if (std::abs((image).CamFromWorld().translation()(i) - \ (orig_image).CamFromWorld().translation()(i)) < \ kConstantPoseVarEps) { \ ++num_constant_coords; \ } \ } \ EXPECT_EQ(num_constant_coords, 1); \ } #define CheckVariablePoint(point, orig_point) \ { \ EXPECT_NE((point).xyz, (orig_point).xyz); \ } #define CheckConstantPoint(point, orig_point) \ { \ EXPECT_EQ((point).xyz, (orig_point).xyz); \ } namespace colmap { namespace { TEST(DefaultBundleAdjuster, Nominal) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } TEST(DefaultBundleAdjuster, RigThrowsErrorOnVariableSensorFromRig) { SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, &reconstruction); BundleAdjustmentOptions options; BundleAdjustmentConfig config; options.refine_sensor_from_rig = true; // Not supported yet for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } EXPECT_THROW( CreateDefaultCasparBundleAdjuster(options, config, reconstruction), std::invalid_argument); } TEST(DefaultBundleAdjuster, NominalMultiCameraRigConstantSensorFromRig) { // Exercises the sensor_from_rig code path: 2 cameras per rig, one of which // has a non-identity sensor_from_rig. Verifies that Caspar converges to the // ground truth when sensor_from_rig is held constant. SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } BundleAdjustmentOptions options; options.refine_sensor_from_rig = false; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } TEST(DefaultBundleAdjuster, MultiCameraRigLargeConstantSensorFromRig) { // Real-world multi-camera rigs (stereo, surround-view) have large // sensor_from_rig offsets — typically 20–90 degrees and 0.1–1 m baseline. // This test uses a 30-degree Z-rotation and 0.3 m translation to exercise // the non-identity sensor_from_rig path with realistic values. SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; synthetic_dataset_options.sensor_from_rig_rotation_stddev = 30.0; synthetic_dataset_options.sensor_from_rig_translation_stddev = 0.3; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } BundleAdjustmentOptions options; options.refine_sensor_from_rig = false; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } TEST(DefaultBundleAdjuster, TwoView) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(summary->num_residuals, 400); // Caspar implements partial gauge fixing: Only one frame is fixed CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, TwoViewConstantCamera) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.SetConstantRigFromWorldPose(1); config.SetConstantRigFromWorldPose(2); config.SetConstantCamIntrinsics(1); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), summary->num_residuals); CheckConstantCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, PartiallyContainedTracks) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.num_points2D_without_point3D = 0; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto variable_point3D_id = reconstruction.Image(3).Point2D(0).point3D_id; reconstruction.DeleteObservation(3, 0); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckConstantCamera(reconstruction.Camera(3), orig_reconstruction.Camera(3)); CheckConstantCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); for (const auto& point3D : reconstruction.Points3D()) { if (point3D.first == variable_point3D_id) { CheckVariablePoint(point3D.second, orig_reconstruction.Point3D(point3D.first)); } else { CheckConstantPoint(point3D.second, orig_reconstruction.Point3D(point3D.first)); } } } TEST(DefaultBundleAdjuster, ConstantPoints) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; const point3D_t constant_point3D_id1 = 1; const point3D_t constant_point3D_id2 = 2; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddConstantPoint(constant_point3D_id1); config.AddConstantPoint(constant_point3D_id2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(summary->num_residuals, 400); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D_id == constant_point3D_id1 || point3D_id == constant_point3D_id2) { CheckConstantPoint(point3D, orig_reconstruction.Point3D(point3D_id)); } else { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } } TEST(DefaultBundleAdjuster, VariableImage) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddImage(3); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 100 points, 3 images, 2 residuals per point per image EXPECT_EQ(summary->num_residuals, 600); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(3), orig_reconstruction.Camera(3)); CheckVariableCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, ConstantFocalLengthAndExtraParams) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_focal_length = false; options.refine_extra_params = false; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(summary->num_residuals, 400); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); const size_t focal_length_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t extra_param_idx = SimpleRadialCameraModel::extra_params_idxs[0]; const auto& camera0 = reconstruction.Camera(1); const auto& orig_camera0 = orig_reconstruction.Camera(1); EXPECT_TRUE(camera0.params[focal_length_idx] == orig_camera0.params[focal_length_idx]); EXPECT_TRUE(camera0.params[extra_param_idx] == orig_camera0.params[extra_param_idx]); const auto& camera1 = reconstruction.Camera(2); const auto& orig_camera1 = orig_reconstruction.Camera(2); EXPECT_TRUE(camera1.params[focal_length_idx] == orig_camera1.params[focal_length_idx]); EXPECT_TRUE(camera1.params[extra_param_idx] == orig_camera1.params[extra_param_idx]); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, VariablePrincipalPoint) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_principal_point = true; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(summary->num_residuals, 400); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); const size_t focal_length_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t principal_point_idx_x = SimpleRadialCameraModel::principal_point_idxs[0]; const size_t principal_point_idx_y = SimpleRadialCameraModel::principal_point_idxs[0]; const size_t extra_param_idx = SimpleRadialCameraModel::extra_params_idxs[0]; const auto& camera0 = reconstruction.Camera(1); const auto& orig_camera0 = orig_reconstruction.Camera(1); EXPECT_TRUE(camera0.params[focal_length_idx] != orig_camera0.params[focal_length_idx]); EXPECT_TRUE(camera0.params[principal_point_idx_x] != orig_camera0.params[principal_point_idx_x]); EXPECT_TRUE(camera0.params[principal_point_idx_y] != orig_camera0.params[principal_point_idx_y]); EXPECT_TRUE(camera0.params[extra_param_idx] != orig_camera0.params[extra_param_idx]); const auto& camera1 = reconstruction.Camera(2); const auto& orig_camera1 = orig_reconstruction.Camera(2); EXPECT_TRUE(camera1.params[focal_length_idx] != orig_camera1.params[focal_length_idx]); EXPECT_TRUE(camera1.params[principal_point_idx_x] != orig_camera1.params[principal_point_idx_x]); EXPECT_TRUE(camera1.params[principal_point_idx_y] != orig_camera1.params[principal_point_idx_y]); EXPECT_TRUE(camera1.params[extra_param_idx] != orig_camera1.params[extra_param_idx]); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, MergedCalibConvergence) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } BundleAdjustmentOptions options; options.refine_principal_point = true; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.2, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } TEST(DefaultBundleAdjuster, MergedCalibFixedPose) { // Verifies that all four intrinsic parameters change. Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_principal_point = true; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); const size_t focal_length_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t principal_point_idx_x = SimpleRadialCameraModel::principal_point_idxs[0]; const size_t principal_point_idx_y = SimpleRadialCameraModel::principal_point_idxs[1]; const size_t extra_param_idx = SimpleRadialCameraModel::extra_params_idxs[0]; for (const camera_t cam_id : {camera_t{1}, camera_t{2}}) { const auto& cam = reconstruction.Camera(cam_id); const auto& orig_cam = orig_reconstruction.Camera(cam_id); EXPECT_NE(cam.params[focal_length_idx], orig_cam.params[focal_length_idx]); EXPECT_NE(cam.params[extra_param_idx], orig_cam.params[extra_param_idx]); EXPECT_NE(cam.params[principal_point_idx_x], orig_cam.params[principal_point_idx_x]); EXPECT_NE(cam.params[principal_point_idx_y], orig_cam.params[principal_point_idx_y]); } CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); } TEST(DefaultBundleAdjuster, MergedCalibFixedPoint) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); // Fix all 3D points; only pose and calib are free. for (const auto& [point3D_id, _] : reconstruction.Points3D()) { config.AddConstantPoint(point3D_id); } BundleAdjustmentOptions options; options.refine_principal_point = true; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckConstantPoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, IgnorePoint) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.IgnorePoint(42); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 99 points (point 42 ignored), 2 images, 2 residuals per point per image EXPECT_EQ(summary->num_residuals, 396); } TEST(DefaultBundleAdjuster, ExternalImagePoseIsInvariant) { Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 3; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; opts.num_points2D_without_point3D = 0; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.rig_from_world_rotation_stddev = 0.5; noise_opts.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); for (const auto& [point3D_id, _] : reconstruction.Points3D()) { config.AddVariablePoint(point3D_id); } BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); CheckConstantCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); } TEST(DefaultBundleAdjuster, ExternalCameraIntrinsicsOrderingIsConsistent) { Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 3; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; opts.num_points2D_without_point3D = 0; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); for (const auto& [point3D_id, _] : reconstruction.Points3D()) { config.AddVariablePoint(point3D_id); } BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); CheckConstantCamera(reconstruction.Camera(3), orig_reconstruction.Camera(3)); } TEST(DefaultBundleAdjuster, ExternalImageViaConstantPointsIsInvariant) { Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 3; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; opts.num_points2D_without_point3D = 0; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.rig_from_world_rotation_stddev = 0.5; noise_opts.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); for (const auto& [point3D_id, _] : reconstruction.Points3D()) { config.AddConstantPoint(point3D_id); } BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); CheckConstantCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); } TEST(DefaultBundleAdjuster, MultipleExternalImagesAreInvariant) { Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 4; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; opts.num_points2D_without_point3D = 0; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.rig_from_world_rotation_stddev = 0.5; noise_opts.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); for (const auto& [point3D_id, _] : reconstruction.Points3D()) { config.AddVariablePoint(point3D_id); } BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); CheckConstantCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); CheckConstantCamFromWorld(reconstruction.Image(4), orig_reconstruction.Image(4)); } TEST(DefaultBundleAdjuster, MergedCalibMatchesCeres) { SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 4; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.3; synthetic_noise_options.rig_from_world_translation_stddev = 0.05; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_principal_point = true; Reconstruction reconstruction_ceres = reconstruction; Reconstruction reconstruction_caspar = reconstruction; std::unique_ptr ceres_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction_ceres); ASSERT_NE(ceres_adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); std::unique_ptr caspar_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction_caspar); ASSERT_NE(caspar_adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); #ifdef CASPAR_USE_DOUBLE constexpr double kFocalTol = 1.0; constexpr double kPPTol = 1.0; constexpr double kExtraTol = 1e-4; #else constexpr double kFocalTol = 20.0; constexpr double kPPTol = 10.0; constexpr double kExtraTol = 1.5e-2; #endif const size_t f_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t cx_idx = SimpleRadialCameraModel::principal_point_idxs[0]; const size_t cy_idx = SimpleRadialCameraModel::principal_point_idxs[1]; const size_t k_idx = SimpleRadialCameraModel::extra_params_idxs[0]; for (const auto& [cam_id, _] : reconstruction.Cameras()) { const auto& cam_ceres = reconstruction_ceres.Camera(cam_id); const auto& cam_caspar = reconstruction_caspar.Camera(cam_id); EXPECT_NEAR(cam_caspar.params[f_idx], cam_ceres.params[f_idx], kFocalTol) << "focal length mismatch for camera " << cam_id; EXPECT_NEAR(cam_caspar.params[cx_idx], cam_ceres.params[cx_idx], kPPTol) << "cx mismatch for camera " << cam_id; EXPECT_NEAR(cam_caspar.params[cy_idx], cam_ceres.params[cy_idx], kPPTol) << "cy mismatch for camera " << cam_id; EXPECT_NEAR(cam_caspar.params[k_idx], cam_ceres.params[k_idx], kExtraTol) << "radial distortion mismatch for camera " << cam_id; } } bool PoseExactlyUnchanged(const Image& a, const Image& b) { return a.CamFromWorld().rotation().coeffs() == b.CamFromWorld().rotation().coeffs() && a.CamFromWorld().translation() == b.CamFromWorld().translation(); } TEST(DefaultBundleAdjuster, GaugeFixingWithOneFrameFromWorld) { SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 2; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.point3D_stddev = 0.1; noise_opts.rig_from_world_rotation_stddev = 0.3; noise_opts.rig_from_world_translation_stddev = 0.05; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; auto adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); ASSERT_NE(adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); // Exactly one of the two frames must be pinned by gauge fixing. const int n_fixed = static_cast(PoseExactlyUnchanged(reconstruction.Image(1), orig_reconstruction.Image(1))) + static_cast(PoseExactlyUnchanged(reconstruction.Image(2), orig_reconstruction.Image(2))); EXPECT_EQ(n_fixed, 1); } TEST(DefaultBundleAdjuster, GaugeFixingWithOneFrameFromWorld_SkipsWhenAlreadyFixed) { SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 2; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.point3D_stddev = 0.1; noise_opts.rig_from_world_rotation_stddev = 0.3; noise_opts.rig_from_world_translation_stddev = 0.05; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.SetConstantRigFromWorldPose(1); // frame 1 explicitly constant config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; auto adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); ASSERT_NE(adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); // Frame 1 is explicitly constant — must be unchanged. CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); // Frame 2 is not gauge-fixed (gauge fixer saw frame 1 already fixed) — must // change. CheckVariableCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); } TEST(DefaultBundleAdjuster, GaugeFixingWithThreePoints_PinsExactlyThreePoints) { SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 2; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.point3D_stddev = 0.1; noise_opts.rig_from_world_rotation_stddev = 0.3; noise_opts.rig_from_world_translation_stddev = 0.05; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); BundleAdjustmentOptions options; auto adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); ASSERT_NE(adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); int n_unchanged = 0; for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D.xyz == orig_reconstruction.Point3D(point3D_id).xyz) { ++n_unchanged; } } EXPECT_EQ(n_unchanged, 3); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); } TEST(DefaultBundleAdjuster, GaugeFixingWithThreePoints_CountsExistingConstantPoints) { SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions opts; opts.num_rigs = 2; opts.num_cameras_per_rig = 1; opts.num_frames_per_rig = 1; opts.num_points3D = 100; SynthesizeDataset(opts, &reconstruction); SyntheticNoiseOptions noise_opts; noise_opts.point2D_stddev = 1; noise_opts.point3D_stddev = 0.1; noise_opts.rig_from_world_rotation_stddev = 0.3; noise_opts.rig_from_world_translation_stddev = 0.05; SynthesizeNoise(noise_opts, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddConstantPoint(1); // 1 existing constant; gauge fixer adds 2 more config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); BundleAdjustmentOptions options; auto adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); ASSERT_NE(adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); // Total unchanged = 1 config-constant + 2 gauge-fixed = 3. int n_unchanged = 0; for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D.xyz == orig_reconstruction.Point3D(point3D_id).xyz) { ++n_unchanged; } } EXPECT_EQ(n_unchanged, 3); CheckConstantPoint(reconstruction.Point3D(1), orig_reconstruction.Point3D(1)); } TEST(DefaultBundleAdjuster, MultiCameraRigResidualCountConstantSensorFromRig) { // All sensor observations (ref and non-ref) must contribute residuals. // The old code skipped non-ref sensor observations when the pose was // variable, which would halve the residual count for a 2-camera rig. SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 2; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_sensor_from_rig = false; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); // 100 points × 4 images (2 sensors × 2 frames) × 2 residuals per obs EXPECT_EQ(summary->num_residuals, 800); } TEST(DefaultBundleAdjuster, MultiCameraRigConstantRigPoseHoldsAllSensors) { // When a frame's rig_from_world is held constant, and Caspar always holds // sensor_from_rig constant, ALL sensors in that frame (ref and non-ref) // must have invariant cam_from_world. Sensors in the variable frame must // change. This differs from the Ceres behaviour where non-ref sensors can // still move via a variable sensor_from_rig. SetPRNGSeed(0); Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 2; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.3; synthetic_noise_options.rig_from_world_translation_stddev = 0.05; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; const frame_t constant_frame_id = 1; BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.SetConstantRigFromWorldPose(constant_frame_id); BundleAdjustmentOptions options; options.refine_sensor_from_rig = false; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); ASSERT_NE(bundle_adjuster->Solve()->termination_type, BundleAdjustmentTerminationType::FAILURE); for (const image_t image_id : reconstruction.RegImageIds()) { const auto& image = reconstruction.Image(image_id); if (image.FrameId() == constant_frame_id) { CheckConstantCamFromWorld(image, orig_reconstruction.Image(image_id)); } else { CheckVariableCamFromWorld(image, orig_reconstruction.Image(image_id)); } } } TEST(DefaultBundleAdjuster, MultiCameraRigLargeConvergenceConstantSensorFromRig) { // 2 rigs × 3 cameras × 5 frames = 30 images. Mirrors the Ceres // NominalMultiCameraRig test to verify Caspar converges to GT at the same // scale as the single-camera nominal test. SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_sensor_from_rig = false; std::unique_ptr bundle_adjuster = CreateDefaultCasparBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_ceres.cc000066400000000000000000001303071522646662000244400ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/estimators/alignment.h" #include "colmap/estimators/cost_functions/manifold.h" #include "colmap/estimators/cost_functions/pose_prior.h" #include "colmap/estimators/cost_functions/reprojection_error.h" #include "colmap/estimators/cost_functions/utils.h" #include "colmap/util/cuda.h" #include "colmap/util/misc.h" #include "colmap/util/threading.h" #include namespace colmap { namespace { BundleAdjustmentTerminationType CeresTerminationTypeToTerminationType( ceres::TerminationType ceres_type) { switch (ceres_type) { case ceres::CONVERGENCE: return BundleAdjustmentTerminationType::CONVERGENCE; case ceres::NO_CONVERGENCE: return BundleAdjustmentTerminationType::NO_CONVERGENCE; case ceres::FAILURE: return BundleAdjustmentTerminationType::FAILURE; case ceres::USER_SUCCESS: return BundleAdjustmentTerminationType::USER_SUCCESS; case ceres::USER_FAILURE: return BundleAdjustmentTerminationType::USER_FAILURE; } LOG(FATAL_THROW) << "Unknown Ceres termination type: " << ceres_type; return BundleAdjustmentTerminationType::FAILURE; } std::unique_ptr CreateLossFunction( CeresBundleAdjustmentOptions::LossFunctionType loss_function_type, double loss_function_scale) { switch (loss_function_type) { case CeresBundleAdjustmentOptions::LossFunctionType::TRIVIAL: return std::make_unique(); case CeresBundleAdjustmentOptions::LossFunctionType::SOFT_L1: return std::make_unique(loss_function_scale); case CeresBundleAdjustmentOptions::LossFunctionType::CAUCHY: return std::make_unique(loss_function_scale); case CeresBundleAdjustmentOptions::LossFunctionType::HUBER: return std::make_unique(loss_function_scale); } return nullptr; } } // namespace std::shared_ptr CeresBundleAdjustmentSummary::Create(ceres::Solver::Summary ceres_summary) { auto summary = std::make_shared(); summary->termination_type = CeresTerminationTypeToTerminationType(ceres_summary.termination_type); summary->num_residuals = ceres_summary.num_residuals_reduced; summary->ceres_summary = std::move(ceres_summary); return summary; } std::string CeresBundleAdjustmentSummary::BriefReport() const { return ceres_summary.BriefReport(); } //////////////////////////////////////////////////////////////////////////////// // CeresBundleAdjustmentOptions //////////////////////////////////////////////////////////////////////////////// CeresBundleAdjustmentOptions::CeresBundleAdjustmentOptions() { solver_options.function_tolerance = 0.0; solver_options.gradient_tolerance = 1e-4; solver_options.parameter_tolerance = 0.0; solver_options.logging_type = ceres::LoggingType::SILENT; solver_options.max_num_iterations = 100; solver_options.max_linear_solver_iterations = 200; solver_options.max_num_consecutive_invalid_steps = 10; solver_options.max_consecutive_nonmonotonic_steps = 10; solver_options.num_threads = -1; #if CERES_VERSION_MAJOR < 2 solver_options.num_linear_solver_threads = -1; #endif // CERES_VERSION_MAJOR } std::unique_ptr CeresBundleAdjustmentOptions::CreateLossFunction() const { return colmap::CreateLossFunction(loss_function_type, loss_function_scale); } ceres::Solver::Options CeresBundleAdjustmentOptions::CreateSolverOptions( const BundleAdjustmentConfig& config, const ceres::Problem& problem) const { ceres::Solver::Options custom_solver_options = solver_options; if (VLOG_IS_ON(2)) { custom_solver_options.minimizer_progress_to_stdout = true; custom_solver_options.logging_type = ceres::LoggingType::PER_MINIMIZER_ITERATION; } const int num_images = config.NumImages(); const bool has_sparse = custom_solver_options.sparse_linear_algebra_library_type != ceres::NO_SPARSE; int max_num_images_direct_dense_solver = max_num_images_direct_dense_cpu_solver; int max_num_images_direct_sparse_solver = max_num_images_direct_sparse_cpu_solver; #ifdef COLMAP_CUDA_ENABLED bool cuda_solver_enabled = false; #if (CERES_VERSION_MAJOR >= 3 || \ (CERES_VERSION_MAJOR == 2 && CERES_VERSION_MINOR >= 2)) && \ !defined(CERES_NO_CUDA) if (use_gpu && num_images >= min_num_images_gpu_solver) { cuda_solver_enabled = true; custom_solver_options.dense_linear_algebra_library_type = ceres::CUDA; max_num_images_direct_dense_solver = max_num_images_direct_dense_gpu_solver; } #else if (use_gpu) { LOG_FIRST_N(WARNING, 1) << "Requested to use GPU for bundle adjustment, but Ceres was " "compiled without CUDA support. Falling back to CPU-based dense " "solvers."; } #endif #if (CERES_VERSION_MAJOR >= 3 || \ (CERES_VERSION_MAJOR == 2 && CERES_VERSION_MINOR >= 3)) && \ !defined(CERES_NO_CUDSS) if (use_gpu && num_images >= min_num_images_gpu_solver) { cuda_solver_enabled = true; custom_solver_options.sparse_linear_algebra_library_type = ceres::CUDA_SPARSE; max_num_images_direct_sparse_solver = max_num_images_direct_sparse_gpu_solver; } #else if (use_gpu) { LOG_FIRST_N(WARNING, 1) << "Requested to use GPU for bundle adjustment, but Ceres was " "compiled without cuDSS support. Falling back to CPU-based sparse " "solvers."; } #endif if (cuda_solver_enabled) { const std::vector gpu_indices = CSVToVector(gpu_index); THROW_CHECK_GT(gpu_indices.size(), 0); SetBestCudaDevice(gpu_indices[0]); } #else if (use_gpu) { LOG_FIRST_N(WARNING, 1) << "Requested to use GPU for bundle adjustment, but COLMAP was " "compiled without CUDA support. Falling back to CPU-based " "solvers."; } #endif // COLMAP_CUDA_ENABLED // Auto-select solver type based on problem size, unless disabled. if (auto_select_solver_type) { if (num_images <= max_num_images_direct_dense_solver) { custom_solver_options.linear_solver_type = ceres::DENSE_SCHUR; } else if (has_sparse && num_images <= max_num_images_direct_sparse_solver) { custom_solver_options.linear_solver_type = ceres::SPARSE_SCHUR; } else { // Indirect sparse (preconditioned CG) solver. custom_solver_options.linear_solver_type = ceres::ITERATIVE_SCHUR; custom_solver_options.preconditioner_type = ceres::SCHUR_JACOBI; } } if (problem.NumResiduals() < min_num_residuals_for_cpu_multi_threading) { custom_solver_options.num_threads = 1; #if CERES_VERSION_MAJOR < 2 custom_solver_options.num_linear_solver_threads = 1; #endif // CERES_VERSION_MAJOR } else { custom_solver_options.num_threads = GetEffectiveNumThreads(custom_solver_options.num_threads); #if CERES_VERSION_MAJOR < 2 custom_solver_options.num_linear_solver_threads = GetEffectiveNumThreads(custom_solver_options.num_linear_solver_threads); #endif // CERES_VERSION_MAJOR } std::string solver_error; THROW_CHECK(custom_solver_options.IsValid(&solver_error)) << solver_error; return custom_solver_options; } bool CeresBundleAdjustmentOptions::Check() const { CHECK_OPTION_GE(loss_function_scale, 0); CHECK_OPTION_LT(max_num_images_direct_dense_cpu_solver, max_num_images_direct_sparse_cpu_solver); CHECK_OPTION_LT(max_num_images_direct_dense_gpu_solver, max_num_images_direct_sparse_gpu_solver); return true; } bool CeresPosePriorBundleAdjustmentOptions::Check() const { CHECK_OPTION_GT(prior_position_loss_scale, 0); return true; } namespace { struct FixedGaugeWithThreePoints { // The number of fixed points for the Gauge. Eigen::Index num_fixed_points = 0; // The coordinates of the fixed points as columns. Eigen::Matrix3d fixed_points = Eigen::Matrix3d::Zero(); bool MaybeAddFixedPoint(const Eigen::Vector3d& point) { if (num_fixed_points >= 3) { return false; } fixed_points.col(num_fixed_points) = point; if (fixed_points.colPivHouseholderQr().rank() > num_fixed_points) { ++num_fixed_points; return true; } else { fixed_points.col(num_fixed_points).setZero(); return false; } } }; void FixGaugeWithThreePoints( const std::unordered_map& point3D_num_observations, Reconstruction& reconstruction, ceres::Problem& problem) { FixedGaugeWithThreePoints fixed_gauge; // First check if we already fixed enough points in the problem. for (const auto& [point3D_id, num_observations] : point3D_num_observations) { const Point3D& point3D = reconstruction.Point3D(point3D_id); if (problem.IsParameterBlockConstant(point3D.xyz.data()) && fixed_gauge.MaybeAddFixedPoint(point3D.xyz) && fixed_gauge.num_fixed_points >= 3) { return; } } // Otherwise, fix sufficient points in the problem. for (const auto& [point3D_id, num_observations] : point3D_num_observations) { Point3D& point3D = reconstruction.Point3D(point3D_id); if (!problem.IsParameterBlockConstant(point3D.xyz.data()) && fixed_gauge.MaybeAddFixedPoint(point3D.xyz)) { problem.SetParameterBlockConstant(point3D.xyz.data()); if (fixed_gauge.num_fixed_points >= 3) { return; } } } LOG(WARNING) << "Failed to fix Gauge due to insufficient number of fixed points: " << fixed_gauge.num_fixed_points; } // Note that the following implementation does not handle all degenerate edge // cases well, e.g., where the selected two cameras are not well constrained // with respect to each other with shared observations. Furthermore, the // implementation could be more sophisticated for multi-camera rigs by selecting // camera pairs within a rig, etc. void FixGaugeWithTwoCamsFromWorld( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, const std::set& image_ids, const std::unordered_map& point3D_num_observations, Reconstruction& reconstruction, ceres::Problem& problem) { // No need to fix the Gauge if all frames are constant. if (!options.refine_rig_from_world) { return; } Image* image1 = nullptr; Image* image2 = nullptr; // Check if a sensor is either a reference sensor, or a non-reference sensor // with sensor_from_rig fixed. auto IsParameterizedConstSensor = [&problem, &config, &options](const Image& image) { const sensor_t sensor_id = image.CameraPtr()->SensorId(); if (image.FramePtr()->RigPtr()->IsRefSensor(sensor_id)) { return true; } const Rigid3d& sensor_from_rig = image.FramePtr()->RigPtr()->SensorFromRig(sensor_id); if (problem.HasParameterBlock(sensor_from_rig.params.data()) && problem.IsParameterBlockConstant(sensor_from_rig.params.data())) { return true; } // Cover corner case when ReprojErrorConstantPoseCostFunctor is used if (config.HasConstantSensorFromRigPose(sensor_id) || !options.refine_sensor_from_rig) { return true; } return false; }; // First, search through the already fixed cameras in the problem. for (const image_t image_id : image_ids) { Image& image = reconstruction.Image(image_id); if (config.HasConstantRigFromWorldPose(image.FrameId()) && IsParameterizedConstSensor(image)) { if (image1 == nullptr) { image1 = ℑ } else if (image1 != nullptr && image1->FrameId() != image.FrameId()) { // No need to fix the Gauge if two frames are already fixed. return; } } } // Otherwise, search through the variable cameras in the problem. int frame2_from_world_fixed_dim = 0; for (const image_t image_id : image_ids) { Image& image = reconstruction.Image(image_id); const Rigid3d& rig_from_world = image.FramePtr()->RigFromWorld(); if (image1 == nullptr && IsParameterizedConstSensor(image)) { image1 = ℑ } else if (image1 != nullptr && image1->FrameId() != image.FrameId() && IsParameterizedConstSensor(image) && problem.HasParameterBlock(rig_from_world.params.data())) { // Check if one of the baseline dimensions is large enough and // choose it as the fixed coordinate. If there is no such pair of // frames, then the scale is not constrained well. const Eigen::Vector3d baseline = (image1->FramePtr()->RigFromWorld() * Inverse(image.FramePtr()->RigFromWorld())) .translation(); Eigen::Index max_coeff_idx = 0; if (baseline.cwiseAbs().maxCoeff(&max_coeff_idx) > 1e-9) { image2 = ℑ frame2_from_world_fixed_dim = max_coeff_idx; break; } } } // TODO(jsch): Notice that we could alternatively fall back to fixing the // Gauge between two cameras in the same frame or in different frames. Since // there are many different combinations to iterate through, we instead fall // back to fixing the Gauge with three points for simplicity. Furthermore, // once we support IMUs or other sensors, we should fix the Gauge differently. if (image1 == nullptr || image2 == nullptr) { LOG(WARNING) << "Failed to fix Gauge with two cameras. " "Falling back to fixing Gauge with three points."; FixGaugeWithThreePoints(point3D_num_observations, reconstruction, problem); return; } if (!config.HasConstantRigFromWorldPose(image1->FrameId())) { const Rigid3d& frame1_from_world = image1->FramePtr()->RigFromWorld(); problem.SetParameterBlockConstant(frame1_from_world.params.data()); } if (!config.HasConstantRigFromWorldPose(image2->FrameId())) { Rigid3d& frame2_from_world = image2->FramePtr()->RigFromWorld(); if (options.constant_rig_from_world_rotation) { SetManifold(&problem, frame2_from_world.params.data(), CreateSubsetManifold( 7, {0, 1, 2, 3, 4 + frame2_from_world_fixed_dim})); } else { SetManifold(&problem, frame2_from_world.params.data(), CreateProductManifold( CreateEigenQuaternionManifold(), CreateSubsetManifold(3, {frame2_from_world_fixed_dim}))); } } } void ParameterizeCameras(const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, const std::set& camera_ids, Reconstruction& reconstruction, ceres::Problem& problem) { const bool constant_camera = !options.refine_focal_length && !options.refine_principal_point && !options.refine_extra_params; for (const camera_t camera_id : camera_ids) { Camera& camera = reconstruction.Camera(camera_id); if (constant_camera || config.HasConstantCamIntrinsics(camera_id)) { problem.SetParameterBlockConstant(camera.params.data()); } else { std::vector const_camera_params; const_camera_params.reserve(camera.params.size()); { // Metadata parameters (e.g. the (w, h) image dimensions of spherical // models) are sensor properties and are never optimized. const span params_idxs = camera.MetaDataParamsIdxs(); const_camera_params.insert( const_camera_params.end(), params_idxs.begin(), params_idxs.end()); } if (!options.refine_focal_length) { const span params_idxs = camera.FocalLengthIdxs(); const_camera_params.insert( const_camera_params.end(), params_idxs.begin(), params_idxs.end()); } if (!options.refine_principal_point) { const span params_idxs = camera.PrincipalPointIdxs(); const_camera_params.insert( const_camera_params.end(), params_idxs.begin(), params_idxs.end()); } if (!options.refine_extra_params) { const span params_idxs = camera.ExtraParamsIdxs(); const_camera_params.insert( const_camera_params.end(), params_idxs.begin(), params_idxs.end()); } if (const_camera_params.size() == camera.params.size()) { problem.SetParameterBlockConstant(camera.params.data()); } else if (!const_camera_params.empty()) { SetManifold( &problem, camera.params.data(), CreateSubsetManifold(camera.params.size(), const_camera_params)); } } } } void ParameterizeRigsAndFrames(const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, const std::set& image_ids, Reconstruction& reconstruction, ceres::Problem& problem) { std::unordered_set parameterized_rig_ids; std::unordered_set parameterized_sensor_ids; std::unordered_set parameterized_frame_ids; for (const image_t image_id : image_ids) { Image& image = reconstruction.Image(image_id); parameterized_rig_ids.insert(image.FramePtr()->RigId()); // Parameterize sensor_from_rig. const sensor_t sensor_id = image.CameraPtr()->SensorId(); const bool not_parameterized_before = parameterized_sensor_ids.insert(sensor_id).second; if (not_parameterized_before && !image.IsRefInFrame()) { Rigid3d& sensor_from_rig = image.FramePtr()->RigPtr()->SensorFromRig(sensor_id); // CostFunction assumes unit quaternions. sensor_from_rig.rotation().normalize(); if (problem.HasParameterBlock(sensor_from_rig.params.data())) { SetManifold(&problem, sensor_from_rig.params.data(), CreateProductManifold(CreateEigenQuaternionManifold(), CreateEuclideanManifold<3>())); if (!options.refine_sensor_from_rig || config.HasConstantSensorFromRigPose(sensor_id)) { problem.SetParameterBlockConstant(sensor_from_rig.params.data()); } } } // Parameterize rig_from_world. if (parameterized_frame_ids.insert(image.FrameId()).second) { Rigid3d& rig_from_world = image.FramePtr()->RigFromWorld(); // CostFunction assumes unit quaternions. rig_from_world.rotation().normalize(); if (problem.HasParameterBlock(rig_from_world.params.data())) { if (!options.refine_rig_from_world || config.HasConstantRigFromWorldPose(image.FrameId())) { problem.SetParameterBlockConstant(rig_from_world.params.data()); } else if (options.constant_rig_from_world_rotation) { SetManifold(&problem, rig_from_world.params.data(), CreateSubsetManifold(7, {0, 1, 2, 3})); } else { SetManifold(&problem, rig_from_world.params.data(), CreateProductManifold(CreateEigenQuaternionManifold(), CreateEuclideanManifold<3>())); } } } } // Set the rig poses as constant, if the reference sensor is not part of the // problem. Otherwise, the relative pose between the sensors is not well // constrained. Notice that this does not handle degenerate configurations and // assumes the observations in the problem constrain the relative poses // sufficiently. for (const rig_t rig_id : parameterized_rig_ids) { Rig& rig = reconstruction.Rig(rig_id); if (parameterized_sensor_ids.count(rig.RefSensorId()) != 0) { continue; } for (auto& [sensor_id, sensor_from_rig] : rig.NonRefSensors()) { THROW_CHECK(sensor_from_rig.has_value()); if (problem.HasParameterBlock(sensor_from_rig->params.data())) { problem.SetParameterBlockConstant(sensor_from_rig->params.data()); } } } } void ParameterizePoints( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, const std::unordered_map& point3D_num_observations, Reconstruction& reconstruction, ceres::Problem& problem) { for (const auto& [point3D_id, num_observations] : point3D_num_observations) { Point3D& point3D = reconstruction.Point3D(point3D_id); if (!options.refine_points3D || point3D.track.Length() > num_observations) { problem.SetParameterBlockConstant(point3D.xyz.data()); } } for (const point3D_t point3D_id : config.ConstantPoints()) { Point3D& point3D = reconstruction.Point3D(point3D_id); problem.SetParameterBlockConstant(point3D.xyz.data()); } } std::shared_ptr CreateSummaryAndLogFailure( ceres::Solver::Summary ceres_summary, const std::string& context) { auto summary = CeresBundleAdjustmentSummary::Create(std::move(ceres_summary)); if (!summary->IsSolutionUsable()) { LOG(ERROR) << context << " failed: " << summary->ceres_summary.message; } return summary; } ceres::Solver::Summary SolveWithGpuFallback( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, ceres::Problem* problem) { const ceres::Solver::Options solver_options = options.ceres->CreateSolverOptions(config, *problem); ceres::Solver::Summary ceres_summary; ceres::Solve(solver_options, problem, &ceres_summary); if (ceres_summary.termination_type == ceres::FAILURE && options.ceres->use_gpu) { const std::string& msg = ceres_summary.message; if (msg.find("CUDA initialization failed") != std::string::npos || msg.find("non-numeric") != std::string::npos || msg.find("Unable to create Jacobian") != std::string::npos) { LOG(WARNING) << "GPU bundle adjustment failed (" << msg << "), retrying with CPU."; auto cpu_options = std::make_shared(*options.ceres); cpu_options->use_gpu = false; const ceres::Solver::Options cpu_solver_options = cpu_options->CreateSolverOptions(config, *problem); ceres::Solve(cpu_solver_options, problem, &ceres_summary); } } return ceres_summary; } class DefaultBundleAdjuster : public CeresBundleAdjuster { public: DefaultBundleAdjuster(const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction) : CeresBundleAdjuster(options, config), loss_function_(options_.ceres->CreateLossFunction()) { ceres::Problem::Options problem_options; problem_options.loss_function_ownership = ceres::DO_NOT_TAKE_OWNERSHIP; problem_ = std::make_shared(problem_options); // Verify that reconstruction is internally consistent. THROW_CHECK(reconstruction.IsValid()); // Set up problem. // Warning: AddPointsToProblem assumes that AddImageToProblem is called // first. Do not change order of instructions! for (const image_t image_id : config_.Images()) { AddImageToProblem(image_id, reconstruction); } for (const auto point3D_id : config_.VariablePoints()) { AddPointToProblem(point3D_id, reconstruction); } for (const auto point3D_id : config_.ConstantPoints()) { AddPointToProblem(point3D_id, reconstruction); } ParameterizeCameras(options_, config_, parameterized_camera_ids_, reconstruction, *problem_); ParameterizeRigsAndFrames( options_, config_, parameterized_image_ids_, reconstruction, *problem_); ParameterizePoints(options_, config_, point3D_num_observations_, reconstruction, *problem_); switch (config_.FixedGauge()) { case BundleAdjustmentGauge::UNSPECIFIED: break; case BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD: FixGaugeWithTwoCamsFromWorld(options_, config_, parameterized_image_ids_, point3D_num_observations_, reconstruction, *problem_); break; case BundleAdjustmentGauge::THREE_POINTS: FixGaugeWithThreePoints( point3D_num_observations_, reconstruction, *problem_); break; default: LOG(FATAL_THROW) << "Unknown BundleAdjustmentGauge"; } } std::shared_ptr Solve() override { if (problem_->NumResiduals() == 0) { return std::make_shared(); } ceres::Solver::Summary ceres_summary = SolveWithGpuFallback(options_, config_, problem_.get()); if (options_.print_summary || VLOG_IS_ON(1)) { PrintSolverSummary(ceres_summary, "Bundle adjustment report"); } return CreateSummaryAndLogFailure(std::move(ceres_summary), "Bundle adjustment"); } std::shared_ptr& Problem() override { return problem_; } const std::set& ParameterizedImageIds() const { return parameterized_image_ids_; } void AddImageToProblem(const image_t image_id, Reconstruction& reconstruction) { Image& image = reconstruction.Image(image_id); if (image.IsRefInFrame()) { AddImageWithTrivialFrame(image, reconstruction); } else { AddImageWithNonTrivialFrame(image, reconstruction); } } void AddImageWithTrivialFrame(Image& image, Reconstruction& reconstruction) { Camera& camera = *image.CameraPtr(); const bool constant_cam_from_world = !options_.refine_rig_from_world || config_.HasConstantRigFromWorldPose(image.FrameId()); THROW_CHECK(image.IsRefInFrame()); Rigid3d& rig_from_world = image.FramePtr()->RigFromWorld(); // Add residuals to bundle adjustment problem. size_t num_observations = 0; for (const Point2D& point2D : image.Points2D()) { if (!point2D.HasPoint3D() || config_.IsIgnoredPoint(point2D.point3D_id)) { continue; } Point3D& point3D = reconstruction.Point3D(point2D.point3D_id); THROW_CHECK_GT(point3D.track.Length(), 1); // Skip points with track length below minimum. if (options_.min_track_length > 0 && static_cast(point3D.track.Length()) < options_.min_track_length) { continue; } num_observations += 1; point3D_num_observations_[point2D.point3D_id] += 1; if (constant_cam_from_world) { problem_->AddResidualBlock( CreateCameraCostFunction( camera.model_id, point2D.xy, rig_from_world), loss_function_.get(), point3D.xyz.data(), camera.params.data()); } else { problem_->AddResidualBlock( CreateCameraCostFunction(camera.model_id, point2D.xy), loss_function_.get(), point3D.xyz.data(), rig_from_world.params.data(), camera.params.data()); } } if (num_observations > 0) { parameterized_camera_ids_.insert(image.CameraId()); parameterized_image_ids_.insert(image.ImageId()); } } void AddImageWithNonTrivialFrame(Image& image, Reconstruction& reconstruction) { Camera& camera = *image.CameraPtr(); const sensor_t sensor_id = camera.SensorId(); const bool constant_sensor_from_rig = !options_.refine_sensor_from_rig || config_.HasConstantSensorFromRigPose(sensor_id); const bool constant_rig_from_world = !options_.refine_rig_from_world || config_.HasConstantRigFromWorldPose(image.FrameId()); THROW_CHECK(!image.IsRefInFrame()); Rigid3d& sensor_from_rig = image.FramePtr()->RigPtr()->SensorFromRig(sensor_id); Rigid3d& rig_from_world = image.FramePtr()->RigFromWorld(); const std::optional cam_from_world = (constant_sensor_from_rig && constant_rig_from_world) ? std::make_optional(sensor_from_rig * rig_from_world) : std::nullopt; // Add residuals to bundle adjustment problem. size_t num_observations = 0; for (const Point2D& point2D : image.Points2D()) { if (!point2D.HasPoint3D() || config_.IsIgnoredPoint(point2D.point3D_id)) { continue; } Point3D& point3D = reconstruction.Point3D(point2D.point3D_id); THROW_CHECK_GT(point3D.track.Length(), 1); // Skip points with track length below minimum. if (options_.min_track_length > 0 && static_cast(point3D.track.Length()) < options_.min_track_length) { continue; } num_observations += 1; point3D_num_observations_[point2D.point3D_id] += 1; // The !constant_sensor_from_rig && constant_rig_from_world is // rare enough that we do not have a specialized cost function for it. if (constant_sensor_from_rig && constant_rig_from_world) { problem_->AddResidualBlock( CreateCameraCostFunction( camera.model_id, point2D.xy, cam_from_world.value()), loss_function_.get(), point3D.xyz.data(), camera.params.data()); } else if (!constant_rig_from_world && constant_sensor_from_rig) { problem_->AddResidualBlock( CreateCameraCostFunction( camera.model_id, point2D.xy, sensor_from_rig), loss_function_.get(), point3D.xyz.data(), rig_from_world.params.data(), camera.params.data()); } else { problem_->AddResidualBlock( CreateCameraCostFunction(camera.model_id, point2D.xy), loss_function_.get(), point3D.xyz.data(), sensor_from_rig.params.data(), rig_from_world.params.data(), camera.params.data()); } } if (num_observations > 0) { parameterized_camera_ids_.insert(image.CameraId()); parameterized_image_ids_.insert(image.ImageId()); } } void AddPointToProblem(const point3D_t point3D_id, Reconstruction& reconstruction) { THROW_CHECK(!config_.IsIgnoredPoint(point3D_id)); Point3D& point3D = reconstruction.Point3D(point3D_id); // Skip points with track length below minimum. if (options_.min_track_length > 0 && static_cast(point3D.track.Length()) < options_.min_track_length) { return; } size_t& num_observations = point3D_num_observations_[point3D_id]; // Is 3D point already fully contained in the problem? I.e. its entire // track is contained in `variable_image_ids`, `constant_image_ids`, // `constant_x_image_ids`. if (num_observations == point3D.track.Length()) { return; } for (const auto& track_el : point3D.track.Elements()) { // Skip observations that were already added in `FillImages`. if (config_.HasImage(track_el.image_id)) { continue; } num_observations += 1; Image& image = reconstruction.Image(track_el.image_id); Camera& camera = *image.CameraPtr(); const Point2D& point2D = image.Point2D(track_el.point2D_idx); if (image.IsRefInFrame()) { Rigid3d& cam_from_world = image.FramePtr()->RigFromWorld(); problem_->AddResidualBlock( CreateCameraCostFunction( camera.model_id, point2D.xy, cam_from_world), loss_function_.get(), point3D.xyz.data(), camera.params.data()); } else { Rigid3d& cam_from_rig = image.FramePtr()->RigPtr()->SensorFromRig( image.CameraPtr()->SensorId()); Rigid3d& rig_from_world = image.FramePtr()->RigFromWorld(); problem_->AddResidualBlock( CreateCameraCostFunction( camera.model_id, point2D.xy, cam_from_rig * rig_from_world), loss_function_.get(), point3D.xyz.data(), camera.params.data()); } // Do not optimize intrinsics if th corresponding images // were not included explicitly in the config. if (parameterized_camera_ids_.insert(image.CameraId()).second) { config_.SetConstantCamIntrinsics(image.CameraId()); } } } private: std::shared_ptr problem_; std::unique_ptr loss_function_; std::set parameterized_camera_ids_; std::set parameterized_image_ids_; std::unordered_map point3D_num_observations_; }; class PosePriorBundleAdjuster : public CeresBundleAdjuster { public: PosePriorBundleAdjuster(const BundleAdjustmentOptions& options, const PosePriorBundleAdjustmentOptions& prior_options, const BundleAdjustmentConfig& config, std::vector pose_priors, Reconstruction& reconstruction) : CeresBundleAdjuster(options, config), prior_options_(prior_options), pose_priors_(std::move(pose_priors)), reconstruction_(reconstruction) { THROW_CHECK(prior_options_.Check()); // Filter irrelevant pose priors. pose_priors_.erase( std::remove_if(pose_priors_.begin(), pose_priors_.end(), [this](const auto& pose_prior) { return !pose_prior.HasPosition() || pose_prior.corr_data_id.sensor_id.type != SensorType::CAMERA || !config_.HasImage(pose_prior.corr_data_id.id); }), pose_priors_.end()); const bool use_prior_position = AlignReconstruction(); // Fix 7-DOFs of BA problem if not enough valid pose priors. if (use_prior_position) { // Normalize the reconstruction to avoid any numerical instability but // do not transform priors as they will be transformed when added to // ceres::Problem. normalized_from_metric_ = reconstruction_.Normalize(/*fixed_scale=*/true); } else { config_.FixGauge(BundleAdjustmentGauge::THREE_POINTS); } // WARNING: Do not move this above the reconstruction normalization. default_bundle_adjuster_ = std::make_unique( options_, config_, reconstruction); if (use_prior_position) { prior_loss_function_ = CreateLossFunction( prior_options_.ceres->prior_position_loss_function_type, prior_options_.ceres->prior_position_loss_scale); // Only consider parameterized images for pose priors. Notice that some // images may be configured to be included in the BA problem but have no // reprojection constraints, etc. const std::set& parameterized_image_ids = default_bundle_adjuster_->ParameterizedImageIds(); for (const auto& pose_prior : pose_priors_) { if (parameterized_image_ids.count(pose_prior.corr_data_id.id) > 0) { AddImagePosePriorToProblem( pose_prior.corr_data_id.id, pose_prior, reconstruction); } } } } std::shared_ptr Solve() override { std::shared_ptr problem = default_bundle_adjuster_->Problem(); if (problem->NumResiduals() == 0) { return std::make_shared(); } ceres::Solver::Summary ceres_summary = SolveWithGpuFallback(options_, config_, problem.get()); reconstruction_.Transform(Inverse(normalized_from_metric_)); if (options_.print_summary || VLOG_IS_ON(1)) { PrintSolverSummary(ceres_summary, "Pose Prior Bundle adjustment report"); } return CreateSummaryAndLogFailure(std::move(ceres_summary), "Pose prior bundle adjustment"); } std::shared_ptr& Problem() override { return default_bundle_adjuster_->Problem(); } void AddImagePosePriorToProblem(image_t image_id, const PosePrior& pose_prior, Reconstruction& reconstruction) { Image& image = reconstruction.Image(image_id); const bool constant_sensor_from_rig = !options_.refine_sensor_from_rig || config_.HasConstantSensorFromRigPose(image.CameraPtr()->SensorId()); const bool constant_rig_from_world = !options_.refine_rig_from_world || config_.HasConstantRigFromWorldPose(image.FrameId()); if (constant_sensor_from_rig && constant_rig_from_world) { return; } ceres::Problem& problem = *default_bundle_adjuster_->Problem(); Frame& frame = *image.FramePtr(); Rigid3d& rig_from_world = frame.RigFromWorld(); const Eigen::Vector3d normalized_position = normalized_from_metric_ * pose_prior.position; const Eigen::Matrix3d normalized_from_metric_scaled_rotation = normalized_from_metric_.scale() * normalized_from_metric_.rotation().toRotationMatrix(); const Eigen::Matrix3d position_cov = pose_prior.HasPositionCov() ? pose_prior.position_covariance : (prior_options_.prior_position_fallback_stddev * prior_options_.prior_position_fallback_stddev * Eigen::Matrix3d::Identity()); const Eigen::Matrix3d normalized_position_cov = normalized_from_metric_scaled_rotation * position_cov * normalized_from_metric_scaled_rotation.transpose(); if (image.IsRefInFrame()) { problem.AddResidualBlock( CovarianceWeightedCostFunctor:: Create(normalized_position_cov, normalized_position), prior_loss_function_.get(), rig_from_world.params.data()); } else { Rigid3d& cam_from_rig = frame.RigPtr()->SensorFromRig(image.CameraPtr()->SensorId()); problem.AddResidualBlock( CovarianceWeightedCostFunctor< AbsoluteRigPosePositionPriorCostFunctor>:: Create(normalized_position_cov, normalized_position), prior_loss_function_.get(), cam_from_rig.params.data(), rig_from_world.params.data()); } } bool AlignReconstruction() { RANSACOptions ransac_options = prior_options_.alignment_ransac_options; if (ransac_options.max_error <= 0) { std::vector rms_vars; rms_vars.reserve(pose_priors_.size()); for (const auto& pose_prior : pose_priors_) { const double trace = pose_prior.position_covariance.trace(); if (trace <= 0.0) { continue; } rms_vars.push_back(trace / 3.0); } if (rms_vars.empty()) { LOG(WARNING) << "No pose priors with valid covariance found."; rms_vars.push_back(prior_options_.prior_position_fallback_stddev * prior_options_.prior_position_fallback_stddev); } // Set max error using the median RMS variance of valid pose priors. // Scaled by sqrt(chi-square 95% quantile, 3 DOF) to approximate a 95% // confidence radius. ransac_options.max_error = std::sqrt(kChiSquare95ThreeDof * Median(rms_vars)); } VLOG(2) << "Robustly aligning reconstruction with max_error=" << ransac_options.max_error; Sim3d metric_from_orig; if (!AlignReconstructionToPosePriors( reconstruction_, pose_priors_, ransac_options, &metric_from_orig)) { LOG(WARNING) << "Alignment w.r.t. prior positions failed"; return false; } reconstruction_.Transform(metric_from_orig); // Compute alignment error w.r.t. prior positions. if (VLOG_IS_ON(2)) { std::vector verr2_wrt_prior; verr2_wrt_prior.reserve(config_.NumImages()); for (const auto& pose_prior : pose_priors_) { const auto& image = reconstruction_.Image(pose_prior.corr_data_id.id); verr2_wrt_prior.push_back( (image.ProjectionCenter() - pose_prior.position).squaredNorm()); } VLOG(2) << "Alignment error w.r.t. prior positions:\n" << " - rmse: " << std::sqrt(Mean(verr2_wrt_prior)) << '\n' << " - median: " << std::sqrt(Median(verr2_wrt_prior)) << '\n'; } return true; } private: PosePriorBundleAdjustmentOptions prior_options_; std::vector pose_priors_; Reconstruction& reconstruction_; std::unique_ptr default_bundle_adjuster_; std::unique_ptr prior_loss_function_; Sim3d normalized_from_metric_; }; } // namespace std::unique_ptr CreateDefaultCeresBundleAdjuster( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction) { return std::make_unique( options, config, reconstruction); } std::unique_ptr CreatePosePriorCeresBundleAdjuster( const BundleAdjustmentOptions& options, const PosePriorBundleAdjustmentOptions& prior_options, const BundleAdjustmentConfig& config, std::vector pose_priors, Reconstruction& reconstruction) { return std::make_unique( options, prior_options, config, std::move(pose_priors), reconstruction); } void PrintSolverSummary(const ceres::Solver::Summary& summary, const std::string& header) { if (VLOG_IS_ON(3)) { LOG(INFO) << summary.FullReport(); } std::ostringstream log; log << header << '\n'; log << std::right << std::setw(16) << "Residuals : "; log << std::left << summary.num_residuals_reduced << '\n'; log << std::right << std::setw(16) << "Parameters : "; log << std::left << summary.num_effective_parameters_reduced << '\n'; log << std::right << std::setw(16) << "Iterations : "; log << std::left << summary.num_successful_steps + summary.num_unsuccessful_steps << '\n'; log << std::right << std::setw(16) << "Time : "; log << std::left << summary.total_time_in_seconds << " [s]\n"; log << std::right << std::setw(16) << "Initial cost : "; log << std::right << std::setprecision(6) << std::sqrt(summary.initial_cost / summary.num_residuals_reduced) << " [px]\n"; log << std::right << std::setw(16) << "Final cost : "; log << std::right << std::setprecision(6) << std::sqrt(summary.final_cost / summary.num_residuals_reduced) << " [px]\n"; log << std::right << std::setw(16) << "Termination : "; log << std::right << ceres::TerminationTypeToString(summary.termination_type) << "\n\n"; LOG(INFO) << log.str(); } } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_ceres.h000066400000000000000000000130161522646662000242770ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/estimators/bundle_adjustment.h" #include "colmap/math/math.h" #include "colmap/optim/ransac.h" #include namespace colmap { // Ceres-specific bundle adjustment options. struct CeresBundleAdjustmentOptions { // Loss function types: Trivial (non-robust) and robust loss functions. enum class LossFunctionType { TRIVIAL, SOFT_L1, CAUCHY, HUBER }; LossFunctionType loss_function_type = LossFunctionType::TRIVIAL; // Scaling factor determines residual at which robustification takes place. double loss_function_scale = 1.0; // Whether to use Ceres' CUDA linear algebra library, if available. bool use_gpu = false; std::string gpu_index = "-1"; // Ceres-Solver options. ceres::Solver::Options solver_options; // Heuristic threshold to switch from CPU to GPU based solvers. // Typically, the GPU is faster for large problems but the overhead of // transferring memory from the CPU to the GPU leads to better CPU performance // for small problems. This depends on the specific problem and hardware. int min_num_images_gpu_solver = 50; // Heuristic threshold on the minimum number of residuals to enable // multi-threading. Note that single-threaded is typically better for small // bundle adjustment problems due to the overhead of threading. int min_num_residuals_for_cpu_multi_threading = 50000; // Heuristic thresholds to switch between direct, sparse, and iterative // solvers. These thresholds may not be optimal for all types of problems. int max_num_images_direct_dense_cpu_solver = 50; int max_num_images_direct_sparse_cpu_solver = 1000; int max_num_images_direct_dense_gpu_solver = 200; int max_num_images_direct_sparse_gpu_solver = 4000; // Whether to automatically select solver type based on problem size. // When false, uses the linear_solver_type and preconditioner_type // from solver_options directly. bool auto_select_solver_type = true; CeresBundleAdjustmentOptions(); // Create loss function for given options. std::unique_ptr CreateLossFunction() const; // Create options tailored for given bundle adjustment config and problem. ceres::Solver::Options CreateSolverOptions( const BundleAdjustmentConfig& config, const ceres::Problem& problem) const; bool Check() const; }; // Ceres-specific bundle adjustment summary with access to full solver details. struct CeresBundleAdjustmentSummary : public BundleAdjustmentSummary { ceres::Solver::Summary ceres_summary; std::string BriefReport() const override; static std::shared_ptr Create( ceres::Solver::Summary ceres_summary); }; // Ceres-specific pose prior bundle adjustment options. struct CeresPosePriorBundleAdjustmentOptions { // Loss function for prior position loss. CeresBundleAdjustmentOptions::LossFunctionType prior_position_loss_function_type = CeresBundleAdjustmentOptions::LossFunctionType::TRIVIAL; // Threshold on the residual for the robust loss. double prior_position_loss_scale = std::sqrt(kChiSquare95ThreeDof); bool Check() const; }; // Ceres-specific bundle adjuster with access to the underlying problem. class CeresBundleAdjuster : public BundleAdjuster { public: using BundleAdjuster::BundleAdjuster; virtual std::shared_ptr& Problem() = 0; }; std::unique_ptr CreateDefaultCeresBundleAdjuster( const BundleAdjustmentOptions& options, const BundleAdjustmentConfig& config, Reconstruction& reconstruction); std::unique_ptr CreatePosePriorCeresBundleAdjuster( const BundleAdjustmentOptions& options, const PosePriorBundleAdjustmentOptions& prior_options, const BundleAdjustmentConfig& config, std::vector pose_priors, Reconstruction& reconstruction); void PrintSolverSummary(const ceres::Solver::Summary& summary, const std::string& header); } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_ceres_test.cc000066400000000000000000001777401522646662000255130ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/geometry/rigid3_matchers.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include "colmap/sensor/models.h" #include "colmap/util/testing.h" #include // Due to pose normalization operations, constant variables may not be perfectly // fixed during bundle adjustment. constexpr double kConstantPoseVarEps = 1e-9; #define CheckVariableCamera(camera, orig_camera) \ { \ const size_t focal_length_idx = \ SimpleRadialCameraModel::focal_length_idxs[0]; \ const size_t extra_param_idx = \ SimpleRadialCameraModel::extra_params_idxs[0]; \ EXPECT_NE((camera).params[focal_length_idx], \ (orig_camera).params[focal_length_idx]); \ EXPECT_NE((camera).params[extra_param_idx], \ (orig_camera).params[extra_param_idx]); \ } #define CheckConstantCamera(camera, orig_camera) \ { \ const size_t focal_length_idx = \ SimpleRadialCameraModel::focal_length_idxs[0]; \ const size_t extra_param_idx = \ SimpleRadialCameraModel::extra_params_idxs[0]; \ EXPECT_EQ((camera).params[focal_length_idx], \ (orig_camera).params[focal_length_idx]); \ EXPECT_EQ((camera).params[extra_param_idx], \ (orig_camera).params[extra_param_idx]); \ } #define CheckVariableCamFromWorld(image, orig_image) \ { \ EXPECT_THAT((image).CamFromWorld(), \ testing::Not(Rigid3dEq((orig_image).CamFromWorld()))); \ } #define CheckConstantCamFromWorld(image, orig_image) \ { \ EXPECT_THAT((image).CamFromWorld(), \ Rigid3dNear((orig_image).CamFromWorld(), \ kConstantPoseVarEps, \ kConstantPoseVarEps)); \ } #define CheckConstantCamFromWorldTranslationCoord(image, orig_image) \ { \ size_t num_constant_coords = 0; \ for (int i = 0; i < 3; ++i) { \ if (std::abs((image).CamFromWorld().translation()(i) - \ (orig_image).CamFromWorld().translation()(i)) < \ kConstantPoseVarEps) { \ ++num_constant_coords; \ } \ } \ EXPECT_EQ(num_constant_coords, 1); \ } #define CheckVariablePoint(point, orig_point) \ { \ EXPECT_NE((point).xyz, (orig_point).xyz); \ } #define CheckConstantPoint(point, orig_point) \ { \ EXPECT_EQ((point).xyz, (orig_point).xyz); \ } namespace colmap { namespace { // Helper to get Problem from BundleAdjuster (requires casting to Ceres impl) inline ceres::Problem& GetCeresProblem(BundleAdjuster& bundle_adjuster) { auto* ceres_ba = dynamic_cast(&bundle_adjuster); CHECK_NOTNULL(ceres_ba); return *ceres_ba->Problem(); } // Helper to get ceres::Solver::Summary from base summary inline const ceres::Solver::Summary& GetCeresSummary( const BundleAdjustmentSummary* summary) { auto* ceres_summary = dynamic_cast(summary); CHECK_NOTNULL(ceres_summary); return ceres_summary->ceres_summary; } TEST(DefaultBundleAdjuster, Nominal) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } TEST(DefaultBundleAdjuster, NominalMultiCameraRig) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } TEST(DefaultBundleAdjuster, TwoView) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 100 x 3 point parameters // + 5 rig_from_world parameters (pose of second image) // + 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 309); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorldTranslationCoord(reconstruction.Image(2), orig_reconstruction.Image(2)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, ThreeViewSpherical) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.camera_model_id = EquirectangularCameraModel::model_id; synthetic_dataset_options.camera_width = 1000; synthetic_dataset_options.camera_height = 500; synthetic_dataset_options.camera_params = {1000, 500}; SynthesizeDataset(synthetic_dataset_options, &reconstruction); ASSERT_TRUE(reconstruction.Camera(1).IsSpherical()); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddImage(3); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // The spherical model has no focal length; its (w, h) parameters are held // constant during bundle adjustment. for (const auto& [camera_id, camera] : reconstruction.Cameras()) { EXPECT_EQ(camera.params, orig_reconstruction.Camera(camera_id).params); } CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckConstantCamFromWorldTranslationCoord(reconstruction.Image(2), orig_reconstruction.Image(2)); CheckVariableCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, TwoViewRig) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 2; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 4 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 800); // 97 x 3 point parameters (3 fixed for gauge) // + 2 x 6 rig_from_world parameters // + 1 x 6 sensor_from_rig parameters // + 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 313); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckVariableCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckVariableCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); size_t num_variable_points = 0; for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D != orig_reconstruction.Point3D(point3D_id)) { ++num_variable_points; } } EXPECT_EQ(num_variable_points, 97); } TEST(DefaultBundleAdjuster, ManyViewRig) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 30 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 6000); // 97 x 3 point parameters (3 fixed for gauge) // + 10 x 6 rig_from_world parameters // + 4 x 6 sensor_from_rig parameters // + 6 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 387); for (const auto& [camera_id, camera] : reconstruction.Cameras()) { CheckVariableCamera(camera, orig_reconstruction.Camera(camera_id)); } for (const image_t image_id : reconstruction.RegImageIds()) { CheckVariableCamFromWorld(reconstruction.Image(image_id), orig_reconstruction.Image(image_id)); } size_t num_variable_points = 0; for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D != orig_reconstruction.Point3D(point3D_id)) { ++num_variable_points; } } EXPECT_EQ(num_variable_points, 97); } TEST(DefaultBundleAdjuster, ManyViewRigConstantSensorFromRig) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.SetConstantSensorFromRigPose(reconstruction.Camera(2).SensorId()); config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 30 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 6000); // 97 x 3 point parameters (3 fixed for gauge) // + 10 x 6 rig_from_world parameters // + 3 x 6 sensor_from_rig parameters // + 6 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 381); for (const auto& [camera_id, camera] : reconstruction.Cameras()) { CheckVariableCamera(camera, orig_reconstruction.Camera(camera_id)); } for (const image_t image_id : reconstruction.RegImageIds()) { CheckVariableCamFromWorld(reconstruction.Image(image_id), orig_reconstruction.Image(image_id)); } size_t num_variable_points = 0; for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D != orig_reconstruction.Point3D(point3D_id)) { ++num_variable_points; } } EXPECT_EQ(num_variable_points, 97); } TEST(DefaultBundleAdjuster, ManyViewRigConstantRigFromWorld) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 3; synthetic_dataset_options.num_frames_per_rig = 5; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } const frame_t constant_frame_id = 1; config.SetConstantRigFromWorldPose(constant_frame_id); config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 30 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 6000); // 97 x 3 point parameters (3 fixed for gauge) // + 9 x 6 rig_from_world parameters // + 4 x 6 sensor_from_rig parameters // + 6 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 381); for (const auto& [camera_id, camera] : reconstruction.Cameras()) { CheckVariableCamera(camera, orig_reconstruction.Camera(camera_id)); } for (const image_t image_id : reconstruction.RegImageIds()) { const auto& image = reconstruction.Image(image_id); if (image.FrameId() == constant_frame_id && image.FramePtr()->RigPtr()->IsRefSensor( image.CameraPtr()->SensorId())) { CheckConstantCamFromWorld(image, orig_reconstruction.Image(image_id)); } else { CheckVariableCamFromWorld(image, orig_reconstruction.Image(image_id)); } } size_t num_variable_points = 0; for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D != orig_reconstruction.Point3D(point3D_id)) { ++num_variable_points; } } EXPECT_EQ(num_variable_points, 97); } TEST(DefaultBundleAdjuster, ConstantRigFromWorldRotation) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddImage(3); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.constant_rig_from_world_rotation = true; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 3 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 600); // 100 x 3 point parameters // + 2 translation parameters (second image, one coord fixed for gauge) // + 3 translation parameters (third image) // + 3 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 311); // Check rotations are constant for all images for (const image_t image_id : reconstruction.RegImageIds()) { const auto& image = reconstruction.Image(image_id); const auto& orig_image = orig_reconstruction.Image(image_id); // Rotation should be nearly unchanged (use angular distance) EXPECT_LE(image.CamFromWorld().rotation().angularDistance( orig_image.CamFromWorld().rotation()), kConstantPoseVarEps); } // Check translations are variable (except for gauge-fixed parts) // At least one image should have changed translation bool has_variable_translation = false; for (const image_t image_id : reconstruction.RegImageIds()) { const auto& image = reconstruction.Image(image_id); const auto& orig_image = orig_reconstruction.Image(image_id); if ((image.CamFromWorld().translation() - orig_image.CamFromWorld().translation()) .norm() > kConstantPoseVarEps) { has_variable_translation = true; break; } } EXPECT_TRUE(has_variable_translation); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, TwoViewConstantCamera) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.SetConstantRigFromWorldPose(1); config.SetConstantRigFromWorldPose(2); config.SetConstantCamIntrinsics(1); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 100 x 3 point parameters // + 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 302); CheckConstantCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, PartiallyContainedTracks) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.num_points2D_without_point3D = 0; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto variable_point3D_id = reconstruction.Image(3).Point2D(0).point3D_id; reconstruction.DeleteObservation(3, 0); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.SetConstantRigFromWorldPose(1); config.SetConstantRigFromWorldPose(2); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 1 x 3 point parameters // 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 7); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); CheckConstantCamera(reconstruction.Camera(3), orig_reconstruction.Camera(3)); CheckConstantCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); for (const auto& point3D : reconstruction.Points3D()) { if (point3D.first == variable_point3D_id) { CheckVariablePoint(point3D.second, orig_reconstruction.Point3D(point3D.first)); } else { CheckConstantPoint(point3D.second, orig_reconstruction.Point3D(point3D.first)); } } } TEST(DefaultBundleAdjuster, PartiallyContainedTracksForceToOptimizePoint) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.num_points2D_without_point3D = 0; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const point3D_t variable_point3D_id = reconstruction.Image(3).Point2D(0).point3D_id; const point3D_t add_variable_point3D_id = reconstruction.Image(3).Point2D(1).point3D_id; const point3D_t add_constant_point3D_id = reconstruction.Image(3).Point2D(2).point3D_id; reconstruction.DeleteObservation(3, 0); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.SetConstantRigFromWorldPose(1); config.SetConstantRigFromWorldPose(2); config.AddVariablePoint(add_variable_point3D_id); config.AddConstantPoint(add_constant_point3D_id); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 2 images, 2 residuals per point per image // + 2 residuals in 3rd image for added variable 3D point // (added constant point does not add residuals since the image/camera // is also constant). EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 402); // 2 x 3 point parameters // 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 10); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); CheckConstantCamera(reconstruction.Camera(3), orig_reconstruction.Camera(3)); CheckConstantCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D_id == variable_point3D_id || point3D_id == add_variable_point3D_id) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } else { CheckConstantPoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } } TEST(DefaultBundleAdjuster, ConstantPoints) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; const point3D_t constant_point3D_id1 = 1; const point3D_t constant_point3D_id2 = 2; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.SetConstantRigFromWorldPose(1); config.SetConstantRigFromWorldPose(2); config.AddConstantPoint(constant_point3D_id1); config.AddConstantPoint(constant_point3D_id2); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 98 x 3 point parameters // + 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 298); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { if (point3D_id == constant_point3D_id1 || point3D_id == constant_point3D_id2) { CheckConstantPoint(point3D, orig_reconstruction.Point3D(point3D_id)); } else { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } } TEST(DefaultBundleAdjuster, VariableImage) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 3; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddImage(3); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 3 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 600); // 100 x 3 point parameters // + 5 rig_from_world parameters (pose of second image) // + 6 rig_from_world parameters (pose of third image) // + 3 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 317); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckConstantCamFromWorldTranslationCoord(reconstruction.Image(2), orig_reconstruction.Image(2)); CheckVariableCamera(reconstruction.Camera(3), orig_reconstruction.Camera(3)); CheckVariableCamFromWorld(reconstruction.Image(3), orig_reconstruction.Image(3)); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, ConstantFocalLength) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_focal_length = false; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 3 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 100 x 3 point parameters // + 5 rig_from_world parameters (pose of second image) // + 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 307); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckConstantCamFromWorldTranslationCoord(reconstruction.Image(2), orig_reconstruction.Image(2)); const size_t focal_length_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t extra_param_idx = SimpleRadialCameraModel::extra_params_idxs[0]; const auto& camera0 = reconstruction.Camera(1); const auto& orig_camera0 = orig_reconstruction.Camera(1); EXPECT_TRUE(camera0.params[focal_length_idx] == orig_camera0.params[focal_length_idx]); EXPECT_TRUE(camera0.params[extra_param_idx] != orig_camera0.params[extra_param_idx]); const auto& camera1 = reconstruction.Camera(2); const auto& orig_camera1 = orig_reconstruction.Camera(2); EXPECT_TRUE(camera1.params[focal_length_idx] == orig_camera1.params[focal_length_idx]); EXPECT_TRUE(camera1.params[extra_param_idx] != orig_camera1.params[extra_param_idx]); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, VariablePrincipalPoint) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_principal_point = true; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 3 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 100 x 3 point parameters // + 5 rig_from_world parameters (pose of second image) // + 8 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 313); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckConstantCamFromWorldTranslationCoord(reconstruction.Image(2), orig_reconstruction.Image(2)); const size_t focal_length_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t principal_point_idx_x = SimpleRadialCameraModel::principal_point_idxs[0]; const size_t principal_point_idx_y = SimpleRadialCameraModel::principal_point_idxs[0]; const size_t extra_param_idx = SimpleRadialCameraModel::extra_params_idxs[0]; const auto& camera0 = reconstruction.Camera(1); const auto& orig_camera0 = orig_reconstruction.Camera(1); EXPECT_TRUE(camera0.params[focal_length_idx] != orig_camera0.params[focal_length_idx]); EXPECT_TRUE(camera0.params[principal_point_idx_x] != orig_camera0.params[principal_point_idx_x]); EXPECT_TRUE(camera0.params[principal_point_idx_y] != orig_camera0.params[principal_point_idx_y]); EXPECT_TRUE(camera0.params[extra_param_idx] != orig_camera0.params[extra_param_idx]); const auto& camera1 = reconstruction.Camera(2); const auto& orig_camera1 = orig_reconstruction.Camera(2); EXPECT_TRUE(camera1.params[focal_length_idx] != orig_camera1.params[focal_length_idx]); EXPECT_TRUE(camera1.params[principal_point_idx_x] != orig_camera1.params[principal_point_idx_x]); EXPECT_TRUE(camera1.params[principal_point_idx_y] != orig_camera1.params[principal_point_idx_y]); EXPECT_TRUE(camera1.params[extra_param_idx] != orig_camera1.params[extra_param_idx]); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, ConstantExtraParam) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.refine_extra_params = false; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 3 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 400); // 100 x 3 point parameters // + 5 rig_from_world parameters (pose of second image) // + 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 307); CheckConstantCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckConstantCamFromWorldTranslationCoord(reconstruction.Image(2), orig_reconstruction.Image(2)); const size_t focal_length_idx = SimpleRadialCameraModel::focal_length_idxs[0]; const size_t extra_param_idx = SimpleRadialCameraModel::extra_params_idxs[0]; const auto& camera0 = reconstruction.Camera(1); const auto& orig_camera0 = orig_reconstruction.Camera(1); EXPECT_TRUE(camera0.params[focal_length_idx] != orig_camera0.params[focal_length_idx]); EXPECT_TRUE(camera0.params[extra_param_idx] == orig_camera0.params[extra_param_idx]); const auto& camera1 = reconstruction.Camera(2); const auto& orig_camera1 = orig_reconstruction.Camera(2); EXPECT_TRUE(camera1.params[focal_length_idx] != orig_camera1.params[focal_length_idx]); EXPECT_TRUE(camera1.params[extra_param_idx] == orig_camera1.params[extra_param_idx]); for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckVariablePoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, ConstantPoints3D) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 20; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const auto orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); BundleAdjustmentOptions options; options.refine_points3D = false; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 20 points, 2 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 80); // 0 point parameters (all constant due to refine_points3D=false) // + 2 x 6 rig_from_world parameters // + 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 16); CheckVariableCamera(reconstruction.Camera(1), orig_reconstruction.Camera(1)); CheckVariableCamFromWorld(reconstruction.Image(1), orig_reconstruction.Image(1)); CheckVariableCamera(reconstruction.Camera(2), orig_reconstruction.Camera(2)); CheckVariableCamFromWorld(reconstruction.Image(2), orig_reconstruction.Image(2)); // All 3D points should remain constant. for (const auto& [point3D_id, point3D] : reconstruction.Points3D()) { CheckConstantPoint(point3D, orig_reconstruction.Point3D(point3D_id)); } } TEST(DefaultBundleAdjuster, FixGaugeWithThreePoints) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); auto ExpectValidSolve = [&config, &reconstruction]( const int num_effective_parameters_reduced) { const auto summary1 = CreateDefaultCeresBundleAdjuster( BundleAdjustmentOptions(), config, reconstruction) ->Solve(); ASSERT_NE(summary1->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(GetCeresSummary(summary1.get()).num_effective_parameters_reduced, num_effective_parameters_reduced); }; ExpectValidSolve(316); config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); ExpectValidSolve(307); config.AddConstantPoint(1); ExpectValidSolve(307); config.AddConstantPoint(2); config.AddConstantPoint(3); ExpectValidSolve(307); config.AddConstantPoint(4); ExpectValidSolve(304); } TEST(DefaultBundleAdjuster, FixGaugeWithTwoCamsFromWorld) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentOptions options; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddImage(3); config.AddImage(4); auto ExpectValidSolve = [&options, &config, &reconstruction]( const int num_effective_parameters_reduced) { const auto summary1 = CreateDefaultCeresBundleAdjuster(options, config, reconstruction) ->Solve(); ASSERT_NE(summary1->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(GetCeresSummary(summary1.get()).num_effective_parameters_reduced, num_effective_parameters_reduced); }; options.refine_rig_from_world = false; ExpectValidSolve(320); options.refine_rig_from_world = true; ExpectValidSolve(332); options.refine_rig_from_world = false; config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); ExpectValidSolve(320); options.refine_rig_from_world = true; ExpectValidSolve(325); config.SetConstantRigFromWorldPose(1); ExpectValidSolve(325); config.SetConstantRigFromWorldPose(2); ExpectValidSolve(320); } TEST(DefaultBundleAdjuster, FixGaugeWithTwoCamsFromWorldFixSensorFromRig) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentOptions options; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.AddImage(3); config.AddImage(4); auto ExpectValidSolve = [&options, &config, &reconstruction]( const int num_effective_parameters_reduced) { const auto summary1 = CreateDefaultCeresBundleAdjuster(options, config, reconstruction) ->Solve(); ASSERT_NE(summary1->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(GetCeresSummary(summary1.get()).num_effective_parameters_reduced, num_effective_parameters_reduced); }; options.refine_rig_from_world = false; options.refine_sensor_from_rig = false; ExpectValidSolve(308); options.refine_rig_from_world = true; ExpectValidSolve(320); options.refine_rig_from_world = false; config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); ExpectValidSolve(308); options.refine_rig_from_world = true; ExpectValidSolve(313); config.SetConstantRigFromWorldPose(1); ExpectValidSolve(313); config.SetConstantRigFromWorldPose(2); ExpectValidSolve(308); } TEST(DefaultBundleAdjuster, FixGaugeWithTwoCamsFromWorldNoReferenceSensor) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; // Delete observations from the two reference images. THROW_CHECK(reconstruction.Image(1).IsRefInFrame()); THROW_CHECK(reconstruction.Image(3).IsRefInFrame()); for (point2D_t i = 0; i < reconstruction.Image(1).NumPoints2D(); ++i) { if (reconstruction.Image(1).Point2D(i).HasPoint3D()) { reconstruction.DeleteObservation(1, i); } } for (point2D_t i = 0; i < reconstruction.Image(3).NumPoints2D(); ++i) { if (reconstruction.Image(3).Point2D(i).HasPoint3D()) { reconstruction.DeleteObservation(3, i); } } // Only add two non-reference images. BundleAdjustmentOptions options; BundleAdjustmentConfig config; config.AddImage(2); config.AddImage(4); auto ExpectValidSolve = [&options, &config, &reconstruction]( const int num_effective_parameters_reduced) { const auto summary1 = CreateDefaultCeresBundleAdjuster(options, config, reconstruction) ->Solve(); THROW_CHECK_NE(summary1->termination_type, BundleAdjustmentTerminationType::FAILURE); THROW_CHECK_EQ( GetCeresSummary(summary1.get()).num_effective_parameters_reduced, num_effective_parameters_reduced); }; // refine_sensor_from_rig should have no effect when there are no reference // sensors options.refine_rig_from_world = true; options.refine_sensor_from_rig = true; ExpectValidSolve(316); options.refine_rig_from_world = false; ExpectValidSolve(304); options.refine_rig_from_world = true; ExpectValidSolve(316); options.refine_rig_from_world = false; config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); ExpectValidSolve(304); options.refine_sensor_from_rig = false; ExpectValidSolve(304); options.refine_rig_from_world = true; ExpectValidSolve(309); config.SetConstantRigFromWorldPose(1); ExpectValidSolve(309); options.refine_rig_from_world = false; ExpectValidSolve(304); config.SetConstantRigFromWorldPose(2); options.refine_rig_from_world = true; ExpectValidSolve(304); options.refine_rig_from_world = false; ExpectValidSolve(304); } TEST(DefaultBundleAdjuster, FixGaugeWithTwoCamsFromWorldFallback) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 2; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentOptions options; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); // The current implementation needs two reference cameras in different frames // to fix the gauge. If there are none, it falls back to fixing the gauge with // three points. config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); const auto summary = CreateDefaultCeresBundleAdjuster(options, config, reconstruction) ->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters, 316); EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 307); } TEST(DefaultBundleAdjuster, IgnorePoint) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 2; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 1; SynthesizeNoise(synthetic_noise_options, &reconstruction); const Reconstruction orig_reconstruction = reconstruction; BundleAdjustmentConfig config; config.AddImage(1); config.AddImage(2); config.IgnorePoint(42); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; std::unique_ptr bundle_adjuster = CreateDefaultCeresBundleAdjuster(options, config, reconstruction); const auto summary = bundle_adjuster->Solve(); ASSERT_NE(summary->termination_type, BundleAdjustmentTerminationType::FAILURE); EXPECT_EQ(config.NumResiduals(reconstruction), GetCeresProblem(*bundle_adjuster).NumResiduals()); // 100 points, 2 images, 2 residuals per point per image EXPECT_EQ(GetCeresSummary(summary.get()).num_residuals_reduced, 396); // 99 x 3 point parameters // + 5 rig_from_world parameters (pose of second image) // + 2 x 2 camera parameters EXPECT_EQ(GetCeresSummary(summary.get()).num_effective_parameters_reduced, 306); } TEST(PosePriorBundleAdjuster, AlignmentRobustToOutliers) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = 7; synthetic_options.num_points3D = 50; synthetic_options.prior_position = true; const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); SynthesizeDataset(synthetic_options, >_reconstruction, database.get()); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point3D_stddev = 0.2; synthetic_noise_options.rig_from_world_rotation_stddev = 1.0; synthetic_noise_options.rig_from_world_translation_stddev = 0.2; synthetic_noise_options.prior_position_stddev = 0.05; SynthesizeNoise(synthetic_noise_options, &reconstruction); std::vector pose_priors = database->ReadAllPosePriors(); // Add 2 outlier priors with very large covariance pose_priors.at(0).position += Eigen::Vector3d::Constant(10); pose_priors.at(0).position_covariance = Eigen::Matrix3d::Identity() * 1e6; pose_priors.at(1).position += Eigen::Vector3d::Constant(1); pose_priors.at(1).position_covariance = Eigen::Matrix3d::Identity() * 1e2; PosePriorBundleAdjustmentOptions prior_ba_options; prior_ba_options.alignment_ransac_options.random_seed = 0; prior_ba_options.alignment_ransac_options.max_error = 0.0; BundleAdjustmentOptions ba_options; BundleAdjustmentConfig ba_config; for (const frame_t frame_id : reconstruction.RegFrameIds()) { const Frame& frame = reconstruction.Frame(frame_id); for (const data_t& data_id : frame.ImageIds()) { ba_config.AddImage(data_id.id); } } auto adjuster = CreatePosePriorBundleAdjuster( ba_options, prior_ba_options, ba_config, pose_priors, reconstruction); auto summary = adjuster->Solve(); ASSERT_TRUE(summary->IsSolutionUsable()); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } TEST(PosePriorBundleAdjuster, MissingPositionCov) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = 7; synthetic_options.num_points3D = 100; synthetic_options.prior_position = true; const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); SynthesizeDataset(synthetic_options, >_reconstruction, database.get()); Reconstruction reconstruction = gt_reconstruction; std::vector pose_priors = database->ReadAllPosePriors(); for (PosePrior& pose_prior : pose_priors) { EXPECT_FALSE(pose_prior.HasPositionCov()); } PosePriorBundleAdjustmentOptions prior_ba_options; prior_ba_options.alignment_ransac_options.random_seed = 0; prior_ba_options.ceres->prior_position_loss_function_type = CeresBundleAdjustmentOptions::LossFunctionType::CAUCHY; BundleAdjustmentOptions ba_options; BundleAdjustmentConfig ba_config; for (const frame_t frame_id : reconstruction.RegFrameIds()) { const Frame& frame = reconstruction.Frame(frame_id); for (const data_t& data_id : frame.ImageIds()) { ba_config.AddImage(data_id.id); } } auto adjuster = CreatePosePriorBundleAdjuster( ba_options, prior_ba_options, ba_config, pose_priors, reconstruction); auto summary = adjuster->Solve(); ASSERT_TRUE(summary->IsSolutionUsable()); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } TEST(PosePriorBundleAdjuster, OptimizationRobustToOutliers) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_options; synthetic_options.num_rigs = 1; synthetic_options.num_cameras_per_rig = 1; synthetic_options.num_frames_per_rig = 7; synthetic_options.num_points3D = 100; synthetic_options.prior_position = true; const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); SynthesizeDataset(synthetic_options, >_reconstruction, database.get()); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point3D_stddev = 0.2; synthetic_noise_options.rig_from_world_rotation_stddev = 1.0; synthetic_noise_options.rig_from_world_translation_stddev = 0.2; synthetic_noise_options.prior_position_stddev = 0.05; SynthesizeNoise(synthetic_noise_options, &reconstruction); std::vector pose_priors = database->ReadAllPosePriors(); // Add 2 confident but wrong priors. pose_priors[0].position_covariance = Eigen::Matrix3d::Identity() * 0.01; pose_priors[0].position += Eigen::Vector3d::Constant(10); pose_priors[1].position_covariance = Eigen::Matrix3d::Identity() * 1.01; pose_priors[1].position += Eigen::Vector3d::Constant(10); PosePriorBundleAdjustmentOptions prior_ba_options; prior_ba_options.alignment_ransac_options.random_seed = 0; prior_ba_options.ceres->prior_position_loss_function_type = CeresBundleAdjustmentOptions::LossFunctionType::CAUCHY; BundleAdjustmentOptions ba_options; BundleAdjustmentConfig ba_config; for (const frame_t frame_id : reconstruction.RegFrameIds()) { const Frame& frame = reconstruction.Frame(frame_id); for (const data_t& data_id : frame.ImageIds()) { ba_config.AddImage(data_id.id); } } auto adjuster = CreatePosePriorBundleAdjuster( ba_options, prior_ba_options, ba_config, pose_priors, reconstruction); auto summary = adjuster->Solve(); ASSERT_TRUE(summary->IsSolutionUsable()); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/bundle_adjustment_test.cc000066400000000000000000000364021522646662000243170ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/bundle_adjustment.h" #include "colmap/estimators/bundle_adjustment_ceres.h" #include "colmap/scene/database.h" #include "colmap/scene/reconstruction_matchers.h" #include "colmap/scene/synthetic.h" #include "colmap/util/testing.h" #include namespace colmap { namespace { TEST(BundleAdjustmentOptions, Copy) { BundleAdjustmentOptions options; options.refine_focal_length = false; options.refine_principal_point = true; options.min_track_length = 5; options.ceres->solver_options.max_num_iterations = 42; BundleAdjustmentOptions copy = options; // Verify fields are copied EXPECT_EQ(copy.refine_focal_length, false); EXPECT_EQ(copy.refine_principal_point, true); EXPECT_EQ(copy.min_track_length, 5); EXPECT_EQ(copy.ceres->solver_options.max_num_iterations, 42); // Verify deep copy of shared_ptr (different pointer instances) EXPECT_NE(options.ceres.get(), copy.ceres.get()); } TEST(PosePriorBundleAdjustmentOptions, Copy) { PosePriorBundleAdjustmentOptions options; options.prior_position_fallback_stddev = 2.5; options.alignment_ransac_options.max_error = 1.0; options.ceres->prior_position_loss_scale = 0.42; PosePriorBundleAdjustmentOptions copy = options; // Verify fields are copied EXPECT_EQ(copy.prior_position_fallback_stddev, 2.5); EXPECT_EQ(copy.alignment_ransac_options.max_error, 1.0); EXPECT_EQ(copy.ceres->prior_position_loss_scale, 0.42); // Verify deep copy of shared_ptr (different pointer instances) EXPECT_NE(options.ceres.get(), copy.ceres.get()); } TEST(BundleAdjustmentSummary, IsSolutionUsable) { BundleAdjustmentSummary summary; summary.termination_type = BundleAdjustmentTerminationType::CONVERGENCE; EXPECT_TRUE(summary.IsSolutionUsable()); summary.termination_type = BundleAdjustmentTerminationType::NO_CONVERGENCE; EXPECT_TRUE(summary.IsSolutionUsable()); summary.termination_type = BundleAdjustmentTerminationType::USER_SUCCESS; EXPECT_TRUE(summary.IsSolutionUsable()); summary.termination_type = BundleAdjustmentTerminationType::FAILURE; EXPECT_FALSE(summary.IsSolutionUsable()); summary.termination_type = BundleAdjustmentTerminationType::USER_FAILURE; EXPECT_FALSE(summary.IsSolutionUsable()); } TEST(BundleAdjustmentConfig, NumResiduals) { Reconstruction reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 4; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 1; synthetic_dataset_options.num_points3D = 100; SynthesizeDataset(synthetic_dataset_options, &reconstruction); const std::vector image_ids = reconstruction.RegImageIds(); CHECK_EQ(image_ids.size(), 4); BundleAdjustmentConfig config; config.AddImage(image_ids[0]); config.AddImage(image_ids[1]); EXPECT_EQ(config.NumResiduals(reconstruction), 400); config.AddVariablePoint(1); EXPECT_EQ(config.NumResiduals(reconstruction), 404); config.AddConstantPoint(2); EXPECT_EQ(config.NumResiduals(reconstruction), 408); config.AddImage(image_ids[2]); EXPECT_EQ(config.NumResiduals(reconstruction), 604); config.AddImage(image_ids[3]); EXPECT_EQ(config.NumResiduals(reconstruction), 800); config.IgnorePoint(3); EXPECT_EQ(config.NumResiduals(reconstruction), 792); } TEST(BundleAdjustmentConfig, AddRemoveImage) { BundleAdjustmentConfig config; EXPECT_EQ(config.NumImages(), 0); config.AddImage(1); config.AddImage(2); config.AddImage(3); EXPECT_EQ(config.NumImages(), 3); EXPECT_TRUE(config.HasImage(1)); EXPECT_TRUE(config.HasImage(2)); EXPECT_TRUE(config.HasImage(3)); EXPECT_FALSE(config.HasImage(4)); config.RemoveImage(2); EXPECT_EQ(config.NumImages(), 2); EXPECT_TRUE(config.HasImage(1)); EXPECT_FALSE(config.HasImage(2)); EXPECT_TRUE(config.HasImage(3)); // Removing non-existent image is a no-op config.RemoveImage(99); EXPECT_EQ(config.NumImages(), 2); } TEST(BundleAdjustmentConfig, ConstantVariableCamIntrinsics) { BundleAdjustmentConfig config; EXPECT_EQ(config.NumConstantCamIntrinsics(), 0); config.SetConstantCamIntrinsics(1); config.SetConstantCamIntrinsics(2); EXPECT_EQ(config.NumConstantCamIntrinsics(), 2); EXPECT_TRUE(config.HasConstantCamIntrinsics(1)); EXPECT_TRUE(config.HasConstantCamIntrinsics(2)); EXPECT_FALSE(config.HasConstantCamIntrinsics(3)); config.SetVariableCamIntrinsics(1); EXPECT_EQ(config.NumConstantCamIntrinsics(), 1); EXPECT_FALSE(config.HasConstantCamIntrinsics(1)); EXPECT_TRUE(config.HasConstantCamIntrinsics(2)); const auto& constant_cams = config.ConstantCamIntrinsics(); EXPECT_EQ(constant_cams.size(), 1); EXPECT_EQ(constant_cams.count(2), 1); } TEST(BundleAdjustmentConfig, ConstantVariableSensorFromRigPose) { BundleAdjustmentConfig config; EXPECT_EQ(config.NumConstantSensorFromRigPoses(), 0); sensor_t sensor1(SensorType::CAMERA, 1); sensor_t sensor2(SensorType::CAMERA, 2); config.SetConstantSensorFromRigPose(sensor1); config.SetConstantSensorFromRigPose(sensor2); EXPECT_EQ(config.NumConstantSensorFromRigPoses(), 2); EXPECT_TRUE(config.HasConstantSensorFromRigPose(sensor1)); EXPECT_TRUE(config.HasConstantSensorFromRigPose(sensor2)); config.SetVariableSensorFromRigPose(sensor1); EXPECT_EQ(config.NumConstantSensorFromRigPoses(), 1); EXPECT_FALSE(config.HasConstantSensorFromRigPose(sensor1)); EXPECT_TRUE(config.HasConstantSensorFromRigPose(sensor2)); const auto& constant_poses = config.ConstantSensorFromRigPoses(); EXPECT_EQ(constant_poses.size(), 1); EXPECT_EQ(constant_poses.count(sensor2), 1); } TEST(BundleAdjustmentConfig, ConstantVariableRigFromWorldPose) { BundleAdjustmentConfig config; EXPECT_EQ(config.NumConstantRigFromWorldPoses(), 0); config.SetConstantRigFromWorldPose(1); config.SetConstantRigFromWorldPose(2); EXPECT_EQ(config.NumConstantRigFromWorldPoses(), 2); EXPECT_TRUE(config.HasConstantRigFromWorldPose(1)); EXPECT_TRUE(config.HasConstantRigFromWorldPose(2)); config.SetVariableRigFromWorldPose(1); EXPECT_EQ(config.NumConstantRigFromWorldPoses(), 1); EXPECT_FALSE(config.HasConstantRigFromWorldPose(1)); EXPECT_TRUE(config.HasConstantRigFromWorldPose(2)); const auto& constant_rig_poses = config.ConstantRigFromWorldPoses(); EXPECT_EQ(constant_rig_poses.size(), 1); EXPECT_EQ(constant_rig_poses.count(2), 1); } TEST(BundleAdjustmentConfig, ConstantVariablePoints) { BundleAdjustmentConfig config; EXPECT_EQ(config.NumPoints(), 0); EXPECT_EQ(config.NumVariablePoints(), 0); EXPECT_EQ(config.NumConstantPoints(), 0); config.AddVariablePoint(1); config.AddVariablePoint(2); EXPECT_EQ(config.NumPoints(), 2); EXPECT_EQ(config.NumVariablePoints(), 2); EXPECT_EQ(config.NumConstantPoints(), 0); EXPECT_TRUE(config.HasPoint(1)); EXPECT_TRUE(config.HasVariablePoint(1)); EXPECT_FALSE(config.HasConstantPoint(1)); config.AddConstantPoint(3); EXPECT_EQ(config.NumPoints(), 3); EXPECT_EQ(config.NumVariablePoints(), 2); EXPECT_EQ(config.NumConstantPoints(), 1); EXPECT_TRUE(config.HasPoint(3)); EXPECT_FALSE(config.HasVariablePoint(3)); EXPECT_TRUE(config.HasConstantPoint(3)); config.RemoveVariablePoint(1); EXPECT_EQ(config.NumVariablePoints(), 1); EXPECT_FALSE(config.HasPoint(1)); config.RemoveConstantPoint(3); EXPECT_EQ(config.NumConstantPoints(), 0); EXPECT_FALSE(config.HasPoint(3)); const auto& var_points = config.VariablePoints(); EXPECT_EQ(var_points.size(), 1); EXPECT_EQ(var_points.count(2), 1); const auto& const_points = config.ConstantPoints(); EXPECT_TRUE(const_points.empty()); } TEST(BundleAdjustmentConfig, IgnoredPoints) { BundleAdjustmentConfig config; EXPECT_FALSE(config.IsIgnoredPoint(1)); config.IgnorePoint(1); EXPECT_TRUE(config.IsIgnoredPoint(1)); EXPECT_FALSE(config.IsIgnoredPoint(2)); } TEST(BundleAdjustmentConfig, FixGauge) { BundleAdjustmentConfig config; EXPECT_EQ(config.FixedGauge(), BundleAdjustmentGauge::UNSPECIFIED); config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); EXPECT_EQ(config.FixedGauge(), BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); config.FixGauge(BundleAdjustmentGauge::THREE_POINTS); EXPECT_EQ(config.FixedGauge(), BundleAdjustmentGauge::THREE_POINTS); } TEST(BundleAdjustmentConfig, Images) { BundleAdjustmentConfig config; config.AddImage(5); config.AddImage(10); const auto& images = config.Images(); EXPECT_EQ(images.size(), 2); EXPECT_EQ(images.count(5), 1); EXPECT_EQ(images.count(10), 1); } TEST(BundleAdjustmentSummary, BriefReport) { BundleAdjustmentSummary summary; summary.termination_type = BundleAdjustmentTerminationType::CONVERGENCE; summary.num_residuals = 42; const std::string report = summary.BriefReport(); EXPECT_NE(report.find("CONVERGENCE"), std::string::npos); EXPECT_NE(report.find("42"), std::string::npos); } // Parameterized test for generic BundleAdjuster interface across backends. class BundleAdjusterBackendTest : public ::testing::TestWithParam {}; TEST_P(BundleAdjusterBackendTest, Nominal) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 10; synthetic_dataset_options.num_points3D = 200; SynthesizeDataset(synthetic_dataset_options, >_reconstruction); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; SynthesizeNoise(synthetic_noise_options, &reconstruction); BundleAdjustmentConfig config; for (const image_t image_id : reconstruction.RegImageIds()) { config.AddImage(image_id); } config.FixGauge(BundleAdjustmentGauge::TWO_CAMS_FROM_WORLD); BundleAdjustmentOptions options; options.backend = GetParam(); std::unique_ptr bundle_adjuster = CreateDefaultBundleAdjuster(options, config, reconstruction); // Test abstract interface accessors EXPECT_EQ(bundle_adjuster->Options().backend, GetParam()); EXPECT_EQ(bundle_adjuster->Config().NumImages(), 10); // Solve and verify through abstract interface const auto summary = bundle_adjuster->Solve(); EXPECT_TRUE(summary->IsSolutionUsable()); EXPECT_GT(summary->num_residuals, 0); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.0)); } INSTANTIATE_TEST_SUITE_P(BundleAdjusterBackends, BundleAdjusterBackendTest, ::testing::Values(BundleAdjustmentBackend::CERES)); // Parameterized test for generic PosePriorBundleAdjuster interface across // backends. class PosePriorBundleAdjusterBackendTest : public ::testing::TestWithParam {}; TEST_P(PosePriorBundleAdjusterBackendTest, Nominal) { SetPRNGSeed(0); Reconstruction gt_reconstruction; SyntheticDatasetOptions synthetic_dataset_options; synthetic_dataset_options.num_rigs = 1; synthetic_dataset_options.num_cameras_per_rig = 1; synthetic_dataset_options.num_frames_per_rig = 7; synthetic_dataset_options.num_points3D = 100; synthetic_dataset_options.prior_position = true; const auto database_path = CreateTestDir() / "database.db"; auto database = Database::Open(database_path); SynthesizeDataset( synthetic_dataset_options, >_reconstruction, database.get()); Reconstruction reconstruction = gt_reconstruction; SyntheticNoiseOptions synthetic_noise_options; synthetic_noise_options.point2D_stddev = 0.5; synthetic_noise_options.point3D_stddev = 0.1; synthetic_noise_options.rig_from_world_rotation_stddev = 0.5; synthetic_noise_options.rig_from_world_translation_stddev = 0.1; synthetic_noise_options.prior_position_stddev = 0.05; SynthesizeNoise(synthetic_noise_options, &reconstruction); std::vector pose_priors = database->ReadAllPosePriors(); BundleAdjustmentConfig config; for (const frame_t frame_id : reconstruction.RegFrameIds()) { const Frame& frame = reconstruction.Frame(frame_id); for (const data_t& data_id : frame.ImageIds()) { config.AddImage(data_id.id); } } BundleAdjustmentOptions options; options.backend = GetParam(); PosePriorBundleAdjustmentOptions prior_options; prior_options.alignment_ransac_options.random_seed = 0; std::unique_ptr bundle_adjuster = CreatePosePriorBundleAdjuster( options, prior_options, config, pose_priors, reconstruction); // Test abstract interface accessors EXPECT_EQ(bundle_adjuster->Options().backend, GetParam()); EXPECT_EQ(bundle_adjuster->Config().NumImages(), 7); // Solve and verify through abstract interface const auto summary = bundle_adjuster->Solve(); EXPECT_TRUE(summary->IsSolutionUsable()); EXPECT_GT(summary->num_residuals, 0); EXPECT_THAT(gt_reconstruction, ReconstructionNear(reconstruction, /*max_rotation_error_deg=*/0.1, /*max_proj_center_error=*/0.1, /*max_scale_error=*/std::nullopt, /*num_obs_tolerance=*/0.02)); } INSTANTIATE_TEST_SUITE_P(PosePriorBundleAdjusterBackends, PosePriorBundleAdjusterBackendTest, ::testing::Values(BundleAdjustmentBackend::CERES)); } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/caspar/000077500000000000000000000000001522646662000205065ustar00rootroot00000000000000colmap-4.1.1/src/colmap/estimators/caspar/caspar_model_adapter.h000066400000000000000000001375571522646662000250320ustar00rootroot00000000000000#pragma once #include "colmap/estimators/bundle_adjustment_caspar.h" #include "colmap/scene/camera.h" #include "colmap/sensor/models.h" #include #include #ifdef CASPAR_USE_DOUBLE #include "thirdparty/Symforce-Caspar/generated/f64/solver.h" #else #include "thirdparty/Symforce-Caspar/generated/f32/solver.h" #endif namespace colmap { struct CasparSolverSizing { // Pose pools are per-model to prevent cross-model factor batching. size_t num_simple_radial_poses = 0; size_t num_pinhole_poses = 0; size_t num_points = 0; // SimpleRadial: num_calibs is shared by the merged Calib pool and the split // FocalAndExtra / PrincipalPoint pools, one entry per camera. // Merged variants (both intrinsic groups tunable): 4 counts below. // Split variants (at least one group fixed): 11 counts below. size_t num_simple_radial_calibs = 0; size_t num_simple_radial = 0; size_t num_simple_radial_fixed_pose = 0; size_t num_simple_radial_fixed_point = 0; size_t num_simple_radial_fixed_pose_fixed_point = 0; size_t num_simple_radial_split_fixed_focal_and_extra = 0; size_t num_simple_radial_split_fixed_principal_point = 0; size_t num_simple_radial_split_fixed_pose_fixed_focal_and_extra = 0; size_t num_simple_radial_split_fixed_pose_fixed_principal_point = 0; size_t num_simple_radial_split_fixed_focal_and_extra_fixed_principal_point = 0; size_t num_simple_radial_split_fixed_focal_and_extra_fixed_point = 0; size_t num_simple_radial_split_fixed_principal_point_fixed_point = 0; size_t num_simple_radial_split_fixed_pose_fixed_focal_and_extra_fixed_principal_point = 0; size_t num_simple_radial_split_fixed_pose_fixed_focal_and_extra_fixed_point = 0; size_t num_simple_radial_split_fixed_pose_fixed_principal_point_fixed_point = 0; size_t num_simple_radial_split_fixed_focal_and_extra_fixed_principal_point_fixed_point = 0; // Pinhole: same layout as SimpleRadial above. size_t num_pinhole_calibs = 0; size_t num_pinhole = 0; size_t num_pinhole_fixed_pose = 0; size_t num_pinhole_fixed_point = 0; size_t num_pinhole_fixed_pose_fixed_point = 0; size_t num_pinhole_split_fixed_focal = 0; size_t num_pinhole_split_fixed_principal_point = 0; size_t num_pinhole_split_fixed_pose_fixed_focal = 0; size_t num_pinhole_split_fixed_pose_fixed_principal_point = 0; size_t num_pinhole_split_fixed_focal_fixed_principal_point = 0; size_t num_pinhole_split_fixed_focal_fixed_point = 0; size_t num_pinhole_split_fixed_principal_point_fixed_point = 0; size_t num_pinhole_split_fixed_pose_fixed_focal_fixed_principal_point = 0; size_t num_pinhole_split_fixed_pose_fixed_focal_fixed_point = 0; size_t num_pinhole_split_fixed_pose_fixed_principal_point_fixed_point = 0; size_t num_pinhole_split_fixed_focal_fixed_principal_point_fixed_point = 0; }; // One implementation per camera model. class ICasparModelAdapter { public: virtual ~ICasparModelAdapter() = default; virtual CameraModelId ModelId() const = 0; // Number of floats in the focal_and_extra/focal and principal_point // node arrays per camera. virtual size_t FocalAndExtraSize() const = 0; virtual size_t PrincipalPointSize() const = 0; // Number of floats in the merged Calib node per camera // (= FocalAndExtraSize() + PrincipalPointSize()). virtual size_t CalibSize() const = 0; virtual void SetCalibNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void GetCalibNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void FillSizing(CasparSolverSizing& sz, const ModelData& md, size_t num_calibs) const = 0; // Append focal_and_extra / focal / principal_point params from a // camera into a flat output vector. virtual void ExtractFocalAndExtra(const Camera& camera, std::vector& out) const = 0; virtual void ExtractPrincipalPoint(const Camera& camera, std::vector& out) const = 0; virtual void WriteFocalAndExtra(Camera& camera, const StorageType* focal_and_extra_data, size_t idx) const = 0; virtual void WritePrincipalPoint(Camera& camera, const StorageType* principal_point_data, size_t idx) const = 0; virtual void SetPoseNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void GetPoseNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void SetFocalAndExtraNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void GetFocalAndExtraNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void SetPrincipalPointNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void GetPrincipalPointNodes(caspar::GraphSolver& solver, StorageType* data, size_t n) const = 0; virtual void SetVariantFactors(caspar::GraphSolver& solver, FactorVariant variant, const VariantData& data) const = 0; }; // SimpleRadial implementation class SimpleRadialAdapter : public ICasparModelAdapter { public: CameraModelId ModelId() const override { return CameraModelId::kSimpleRadial; } // SimpleRadial: params = [f, cx, cy, k] // focal_and_extra = [f, k] (non-contiguous in params array) // principal_point = [cx, cy] // merged calib = [f, k, cx, cy] size_t FocalAndExtraSize() const override { return 2; } size_t PrincipalPointSize() const override { return 2; } size_t CalibSize() const override { return FocalAndExtraSize() + PrincipalPointSize(); } void FillSizing(CasparSolverSizing& sz, const ModelData& md, size_t num_calibs) const override { sz.num_simple_radial_calibs = num_calibs; for (int v = 0; v < CASPAR_NUM_VARIANTS; ++v) { const size_t n = md.variants[v].num_factors; switch (static_cast(v)) { // Merged variants: both focal_and_extra and principal_point are // tunable. case FactorVariant::BASE: sz.num_simple_radial = n; break; case FactorVariant::FIXED_POSE: sz.num_simple_radial_fixed_pose = n; break; case FactorVariant::FIXED_POINT: sz.num_simple_radial_fixed_point = n; break; case FactorVariant::FIXED_POSE_FIXED_POINT: sz.num_simple_radial_fixed_pose_fixed_point = n; break; // Split variants: at least one intrinsic group is fixed. case FactorVariant::FIXED_FOCAL_AND_EXTRA: sz.num_simple_radial_split_fixed_focal_and_extra = n; break; case FactorVariant::FIXED_PRINCIPAL_POINT: sz.num_simple_radial_split_fixed_principal_point = n; break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA: sz.num_simple_radial_split_fixed_pose_fixed_focal_and_extra = n; break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT: sz.num_simple_radial_split_fixed_pose_fixed_principal_point = n; break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: sz.num_simple_radial_split_fixed_focal_and_extra_fixed_principal_point = n; break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_POINT: sz.num_simple_radial_split_fixed_focal_and_extra_fixed_point = n; break; case FactorVariant::FIXED_PRINCIPAL_POINT_FIXED_POINT: sz.num_simple_radial_split_fixed_principal_point_fixed_point = n; break; case FactorVariant:: FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: sz.num_simple_radial_split_fixed_pose_fixed_focal_and_extra_fixed_principal_point = n; break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT: sz.num_simple_radial_split_fixed_pose_fixed_focal_and_extra_fixed_point = n; break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT: sz.num_simple_radial_split_fixed_pose_fixed_principal_point_fixed_point = n; break; case FactorVariant:: FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT: sz.num_simple_radial_split_fixed_focal_and_extra_fixed_principal_point_fixed_point = n; break; } } } void ExtractFocalAndExtra(const Camera& camera, std::vector& out) const override { out.push_back(static_cast(camera.params[0])); // f out.push_back(static_cast(camera.params[3])); // k } void ExtractPrincipalPoint(const Camera& camera, std::vector& out) const override { out.push_back(static_cast(camera.params[1])); // cx out.push_back(static_cast(camera.params[2])); // cy } void WriteFocalAndExtra(Camera& camera, const StorageType* data, size_t idx) const override { camera.params[0] = static_cast(data[idx * FocalAndExtraSize() + 0]); // f camera.params[3] = static_cast(data[idx * FocalAndExtraSize() + 1]); // k } void WritePrincipalPoint(Camera& camera, const StorageType* data, size_t idx) const override { camera.params[1] = static_cast(data[idx * PrincipalPointSize() + 0]); // cx camera.params[2] = static_cast(data[idx * PrincipalPointSize() + 1]); // cy } void SetPoseNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetSimpleRadialPoseNodesFromStackedHost(data, 0, n); } void GetPoseNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetSimpleRadialPoseNodesToStackedHost(data, 0, n); } void SetFocalAndExtraNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetSimpleRadialFocalAndExtraNodesFromStackedHost(data, 0, n); } void GetFocalAndExtraNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetSimpleRadialFocalAndExtraNodesToStackedHost(data, 0, n); } void SetPrincipalPointNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetSimpleRadialPrincipalPointNodesFromStackedHost(data, 0, n); } void GetPrincipalPointNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetSimpleRadialPrincipalPointNodesToStackedHost(data, 0, n); } void SetCalibNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetSimpleRadialCalibNodesFromStackedHost(data, 0, n); } void GetCalibNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetSimpleRadialCalibNodesToStackedHost(data, 0, n); } void SetVariantFactors(caspar::GraphSolver& s, FactorVariant variant, const VariantData& d) const override { const size_t n = d.num_factors; switch (variant) { // Merged variants: the calib index is the same as // focal_and_extra_index, so no VariantData changes are needed for // these cases. case FactorVariant::BASE: s.SetSimpleRadialNum(n); s.SetSimpleRadialPoseIndicesFromHost(d.pose_indices.data(), n); s.SetSimpleRadialSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialCalibIndicesFromHost(d.focal_and_extra_indices.data(), n); s.SetSimpleRadialPointIndicesFromHost(d.point_indices.data(), n); s.SetSimpleRadialPixelDataFromStackedHost(d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE: s.SetSimpleRadialFixedPoseNum(n); s.SetSimpleRadialFixedPoseSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialFixedPoseCalibIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialFixedPosePointIndicesFromHost(d.point_indices.data(), n); s.SetSimpleRadialFixedPosePoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialFixedPosePixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_FOCAL_AND_EXTRA: s.SetSimpleRadialSplitFixedFocalAndExtraNum(n); s.SetSimpleRadialSplitFixedFocalAndExtraPoseIndicesFromHost( d.pose_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraPointIndicesFromHost( d.point_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_PRINCIPAL_POINT: s.SetSimpleRadialSplitFixedPrincipalPointNum(n); s.SetSimpleRadialSplitFixedPrincipalPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetSimpleRadialSplitFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPrincipalPointFocalAndExtraIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialSplitFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetSimpleRadialSplitFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POINT: s.SetSimpleRadialFixedPointNum(n); s.SetSimpleRadialFixedPointPoseIndicesFromHost(d.pose_indices.data(), n); s.SetSimpleRadialFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialFixedPointCalibIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA: s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraNum(n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraPointIndicesFromHost( d.point_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT: s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointNum(n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFocalAndExtraIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_POINT: s.SetSimpleRadialFixedPoseFixedPointNum(n); s.SetSimpleRadialFixedPoseFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialFixedPoseFixedPointCalibIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialFixedPoseFixedPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialFixedPoseFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialFixedPoseFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointNum(n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_POINT: s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointNum(n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_PRINCIPAL_POINT_FIXED_POINT: s.SetSimpleRadialSplitFixedPrincipalPointFixedPointNum(n); s.SetSimpleRadialSplitFixedPrincipalPointFixedPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetSimpleRadialSplitFixedPrincipalPointFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPrincipalPointFixedPointFocalAndExtraIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialSplitFixedPrincipalPointFixedPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedPrincipalPointFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialSplitFixedPrincipalPointFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant:: FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointNum( n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT: s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointNum(n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedFocalAndExtraFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT: s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointNum(n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointFocalAndExtraIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialSplitFixedPoseFixedPrincipalPointFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant:: FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT: s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointNum( n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointFocalAndExtraDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetSimpleRadialSplitFixedFocalAndExtraFixedPrincipalPointFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; } } }; // Pinhole implementation class PinholeAdapter : public ICasparModelAdapter { public: CameraModelId ModelId() const override { return CameraModelId::kPinhole; } // Pinhole: params = [fx, fy, cx, cy] // focal = [fx, fy] // principal_point = [cx, cy] // merged calib = [fx, fy, cx, cy] size_t FocalAndExtraSize() const override { return 2; } size_t PrincipalPointSize() const override { return 2; } size_t CalibSize() const override { return FocalAndExtraSize() + PrincipalPointSize(); } void FillSizing(CasparSolverSizing& sz, const ModelData& md, size_t num_calibs) const override { sz.num_pinhole_calibs = num_calibs; for (int v = 0; v < CASPAR_NUM_VARIANTS; ++v) { const size_t n = md.variants[v].num_factors; switch (static_cast(v)) { // Merged variants: both focal and principal_point are tunable. case FactorVariant::BASE: sz.num_pinhole = n; break; case FactorVariant::FIXED_POSE: sz.num_pinhole_fixed_pose = n; break; case FactorVariant::FIXED_POINT: sz.num_pinhole_fixed_point = n; break; case FactorVariant::FIXED_POSE_FIXED_POINT: sz.num_pinhole_fixed_pose_fixed_point = n; break; // Split variants: at least one intrinsic group is fixed. case FactorVariant::FIXED_FOCAL_AND_EXTRA: sz.num_pinhole_split_fixed_focal = n; break; case FactorVariant::FIXED_PRINCIPAL_POINT: sz.num_pinhole_split_fixed_principal_point = n; break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA: sz.num_pinhole_split_fixed_pose_fixed_focal = n; break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT: sz.num_pinhole_split_fixed_pose_fixed_principal_point = n; break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: sz.num_pinhole_split_fixed_focal_fixed_principal_point = n; break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_POINT: sz.num_pinhole_split_fixed_focal_fixed_point = n; break; case FactorVariant::FIXED_PRINCIPAL_POINT_FIXED_POINT: sz.num_pinhole_split_fixed_principal_point_fixed_point = n; break; case FactorVariant:: FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: sz.num_pinhole_split_fixed_pose_fixed_focal_fixed_principal_point = n; break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT: sz.num_pinhole_split_fixed_pose_fixed_focal_fixed_point = n; break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT: sz.num_pinhole_split_fixed_pose_fixed_principal_point_fixed_point = n; break; case FactorVariant:: FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT: sz.num_pinhole_split_fixed_focal_fixed_principal_point_fixed_point = n; break; } } } void ExtractFocalAndExtra(const Camera& camera, std::vector& out) const override { out.push_back(static_cast(camera.params[0])); // fx out.push_back(static_cast(camera.params[1])); // fy } void ExtractPrincipalPoint(const Camera& camera, std::vector& out) const override { out.push_back(static_cast(camera.params[2])); // cx out.push_back(static_cast(camera.params[3])); // cy } void WriteFocalAndExtra(Camera& camera, const StorageType* data, size_t idx) const override { camera.params[0] = static_cast(data[idx * FocalAndExtraSize() + 0]); // fx camera.params[1] = static_cast(data[idx * FocalAndExtraSize() + 1]); // fy } void WritePrincipalPoint(Camera& camera, const StorageType* data, size_t idx) const override { camera.params[2] = static_cast(data[idx * PrincipalPointSize() + 0]); // cx camera.params[3] = static_cast(data[idx * PrincipalPointSize() + 1]); // cy } void SetPoseNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetPinholePoseNodesFromStackedHost(data, 0, n); } void GetPoseNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetPinholePoseNodesToStackedHost(data, 0, n); } void SetFocalAndExtraNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetPinholeFocalNodesFromStackedHost(data, 0, n); } void GetFocalAndExtraNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetPinholeFocalNodesToStackedHost(data, 0, n); } void SetPrincipalPointNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetPinholePrincipalPointNodesFromStackedHost(data, 0, n); } void GetPrincipalPointNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetPinholePrincipalPointNodesToStackedHost(data, 0, n); } void SetCalibNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.SetPinholeCalibNodesFromStackedHost(data, 0, n); } void GetCalibNodes(caspar::GraphSolver& s, StorageType* data, size_t n) const override { s.GetPinholeCalibNodesToStackedHost(data, 0, n); } void SetVariantFactors(caspar::GraphSolver& s, FactorVariant variant, const VariantData& d) const override { const size_t n = d.num_factors; switch (variant) { // Merged variants: the calib index is the same as focal_index, // so no VariantData changes are needed for these cases. case FactorVariant::BASE: s.SetPinholeNum(n); s.SetPinholePoseIndicesFromHost(d.pose_indices.data(), n); s.SetPinholeSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeCalibIndicesFromHost(d.focal_and_extra_indices.data(), n); s.SetPinholePointIndicesFromHost(d.point_indices.data(), n); s.SetPinholePixelDataFromStackedHost(d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE: s.SetPinholeFixedPoseNum(n); s.SetPinholeFixedPoseSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeFixedPoseCalibIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeFixedPosePointIndicesFromHost(d.point_indices.data(), n); s.SetPinholeFixedPosePoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeFixedPosePixelDataFromStackedHost(d.pixels.data(), 0, n); break; case FactorVariant::FIXED_FOCAL_AND_EXTRA: s.SetPinholeSplitFixedFocalNum(n); s.SetPinholeSplitFixedFocalPoseIndicesFromHost(d.pose_indices.data(), n); s.SetPinholeSplitFixedFocalSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedFocalPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetPinholeSplitFixedFocalPointIndicesFromHost(d.point_indices.data(), n); s.SetPinholeSplitFixedFocalFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedFocalPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_PRINCIPAL_POINT: s.SetPinholeSplitFixedPrincipalPointNum(n); s.SetPinholeSplitFixedPrincipalPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetPinholeSplitFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPrincipalPointFocalIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeSplitFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetPinholeSplitFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POINT: s.SetPinholeFixedPointNum(n); s.SetPinholeFixedPointPoseIndicesFromHost(d.pose_indices.data(), n); s.SetPinholeFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeFixedPointCalibIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeFixedPointPixelDataFromStackedHost(d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA: s.SetPinholeSplitFixedPoseFixedFocalNum(n); s.SetPinholeSplitFixedPoseFixedFocalSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetPinholeSplitFixedPoseFixedFocalPointIndicesFromHost( d.point_indices.data(), n); s.SetPinholeSplitFixedPoseFixedFocalPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT: s.SetPinholeSplitFixedPoseFixedPrincipalPointNum(n); s.SetPinholeSplitFixedPoseFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFocalIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeSplitFixedPoseFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetPinholeSplitFixedPoseFixedPrincipalPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_POINT: s.SetPinholeFixedPoseFixedPointNum(n); s.SetPinholeFixedPoseFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeFixedPoseFixedPointCalibIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeFixedPoseFixedPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeFixedPoseFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeFixedPoseFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: s.SetPinholeSplitFixedFocalFixedPrincipalPointNum(n); s.SetPinholeSplitFixedFocalFixedPrincipalPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetPinholeSplitFixedFocalFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_FOCAL_AND_EXTRA_FIXED_POINT: s.SetPinholeSplitFixedFocalFixedPointNum(n); s.SetPinholeSplitFixedFocalFixedPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetPinholeSplitFixedFocalFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPointPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetPinholeSplitFixedFocalFixedPointFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_PRINCIPAL_POINT_FIXED_POINT: s.SetPinholeSplitFixedPrincipalPointFixedPointNum(n); s.SetPinholeSplitFixedPrincipalPointFixedPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetPinholeSplitFixedPrincipalPointFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPrincipalPointFixedPointFocalIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeSplitFixedPrincipalPointFixedPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedPrincipalPointFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeSplitFixedPrincipalPointFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant:: FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT: s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointNum(n); s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointPointIndicesFromHost( d.point_indices.data(), n); s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPrincipalPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_FOCAL_AND_EXTRA_FIXED_POINT: s.SetPinholeSplitFixedPoseFixedFocalFixedPointNum(n); s.SetPinholeSplitFixedPoseFixedFocalFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPointPrincipalPointIndicesFromHost( d.principal_point_indices.data(), n); s.SetPinholeSplitFixedPoseFixedFocalFixedPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPointFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeSplitFixedPoseFixedFocalFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant::FIXED_POSE_FIXED_PRINCIPAL_POINT_FIXED_POINT: s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointNum(n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointFocalIndicesFromHost( d.focal_and_extra_indices.data(), n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointPoseDataFromStackedHost( d.const_poses.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeSplitFixedPoseFixedPrincipalPointFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; case FactorVariant:: FIXED_FOCAL_AND_EXTRA_FIXED_PRINCIPAL_POINT_FIXED_POINT: s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointNum(n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointPoseIndicesFromHost( d.pose_indices.data(), n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointSensorFromRigDataFromStackedHost( d.sensor_from_rig_data.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointFocalDataFromStackedHost( d.const_focal_and_extra.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointPrincipalPointDataFromStackedHost( d.const_principal_point.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointPointDataFromStackedHost( d.const_points.data(), 0, n); s.SetPinholeSplitFixedFocalFixedPrincipalPointFixedPointPixelDataFromStackedHost( d.pixels.data(), 0, n); break; } } }; inline std::unique_ptr CreateCasparAdapter( const CameraModelId model_id) { switch (model_id) { case CameraModelId::kSimpleRadial: return std::make_unique(); case CameraModelId::kPinhole: return std::make_unique(); default: return nullptr; } } // WARNING: Argument order is opaque and bug-prone and will change in a future // Caspar release. Order: // 1. Node type counts, alphabetical by type name // 2. Factor counts, in registration order from caspar_generate.py: // simple_radial (4) → pinhole (4) → // simple_radial_split (11) → pinhole_split (11) inline caspar::GraphSolver CreateSolver( const caspar::SolverParams& params, const CasparSolverSizing& sz, size_t device_id = 0) { return caspar::GraphSolver( params, // Node type counts (alphabetical): // PinholeCalib, PinholeFocal, PinholePose, // PinholePrincipalPoint, Point, // SimpleRadialCalib, SimpleRadialFocalAndExtra, // SimpleRadialPose, SimpleRadialPrincipalPoint sz.num_pinhole_calibs, // PinholeCalib (merged pool) sz.num_pinhole_calibs, // PinholeFocal (split pool) sz.num_pinhole_poses, // PinholePose sz.num_pinhole_calibs, // PinholePrincipalPoint (split pool) sz.num_points, // Point sz.num_simple_radial_calibs, // SimpleRadialCalib (merged // pool) sz.num_simple_radial_calibs, // SimpleRadialFocalAndExtra (split // pool) sz.num_simple_radial_poses, // SimpleRadialPose sz.num_simple_radial_calibs, // SimpleRadialPrincipalPoint (split // pool) // simple_radial factor counts (r=0..2 over {pose, point}): sz.num_simple_radial, // {} sz.num_simple_radial_fixed_pose, // {pose} sz.num_simple_radial_fixed_point, // {point} sz.num_simple_radial_fixed_pose_fixed_point, // {pose, point} // pinhole factor counts (same order): sz.num_pinhole, // {} sz.num_pinhole_fixed_pose, // {pose} sz.num_pinhole_fixed_point, // {point} sz.num_pinhole_fixed_pose_fixed_point, // {pose, point} // simple_radial_split factor counts (11 variants, must_fix_one_of): sz.num_simple_radial_split_fixed_focal_and_extra, // r=1 {fae} sz.num_simple_radial_split_fixed_principal_point, // r=1 {pp} sz.num_simple_radial_split_fixed_pose_fixed_focal_and_extra, // r=2 // {pose,fad} sz.num_simple_radial_split_fixed_pose_fixed_principal_point, // r=2 // {pose,pp} sz.num_simple_radial_split_fixed_focal_and_extra_fixed_principal_point, // r=2 {fae,pp} sz.num_simple_radial_split_fixed_focal_and_extra_fixed_point, // r=2 // {fae,pt} sz.num_simple_radial_split_fixed_principal_point_fixed_point, // r=2 // {pp,pt} sz.num_simple_radial_split_fixed_pose_fixed_focal_and_extra_fixed_principal_point, // r=3 sz.num_simple_radial_split_fixed_pose_fixed_focal_and_extra_fixed_point, // r=3 sz.num_simple_radial_split_fixed_pose_fixed_principal_point_fixed_point, // r=3 sz.num_simple_radial_split_fixed_focal_and_extra_fixed_principal_point_fixed_point, // r=3 // pinhole_split factor counts (same 11-variant order): sz.num_pinhole_split_fixed_focal, // r=1 {f} sz.num_pinhole_split_fixed_principal_point, // r=1 {pp} sz.num_pinhole_split_fixed_pose_fixed_focal, // r=2 {pose,f} sz.num_pinhole_split_fixed_pose_fixed_principal_point, // r=2 {pose,pp} sz.num_pinhole_split_fixed_focal_fixed_principal_point, // r=2 {f,pp} sz.num_pinhole_split_fixed_focal_fixed_point, // r=2 {f,pt} sz.num_pinhole_split_fixed_principal_point_fixed_point, // r=2 {pp,pt} sz.num_pinhole_split_fixed_pose_fixed_focal_fixed_principal_point, // r=3 sz.num_pinhole_split_fixed_pose_fixed_focal_fixed_point, // r=3 sz.num_pinhole_split_fixed_pose_fixed_principal_point_fixed_point, // r=3 sz.num_pinhole_split_fixed_focal_fixed_principal_point_fixed_point, // r=3 device_id); } } // namespace colmap colmap-4.1.1/src/colmap/estimators/coordinate_frame.cc000066400000000000000000000344531522646662000230560ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/coordinate_frame.h" #include "colmap/geometry/gps.h" #include "colmap/geometry/pose.h" #include "colmap/image/line.h" #include "colmap/image/undistortion.h" #include "colmap/math/math.h" #include "colmap/optim/ransac.h" #include "colmap/util/logging.h" #include "colmap/util/misc.h" namespace colmap { namespace { Eigen::Vector3d FindBestConsensusAxis(const std::vector& axes, const double max_distance) { if (axes.empty()) { return Eigen::Vector3d::Zero(); } std::vector inlier_idxs; inlier_idxs.reserve(axes.size()); std::vector best_inlier_idxs; best_inlier_idxs.reserve(axes.size()); double best_inlier_distance_sum = std::numeric_limits::max(); for (size_t i = 0; i < axes.size(); ++i) { const Eigen::Vector3d& ref_axis = axes[i]; double inlier_distance_sum = 0; inlier_idxs.clear(); for (size_t j = 0; j < axes.size(); ++j) { if (i == j) { inlier_idxs.push_back(j); } else { const double distance = 1 - ref_axis.dot(axes[j]); if (distance <= max_distance) { inlier_distance_sum += distance; inlier_idxs.push_back(j); } } } if (inlier_idxs.size() > best_inlier_idxs.size() || (inlier_idxs.size() == best_inlier_idxs.size() && inlier_distance_sum < best_inlier_distance_sum)) { best_inlier_distance_sum = inlier_distance_sum; best_inlier_idxs = inlier_idxs; } } if (best_inlier_idxs.empty()) { return Eigen::Vector3d::Zero(); } Eigen::Vector3d best_axis(0, 0, 0); for (const auto idx : best_inlier_idxs) { best_axis += axes[idx]; } best_axis /= best_inlier_idxs.size(); return best_axis; } } // namespace Eigen::Vector3d EstimateGravityVectorFromImageOrientation( const Reconstruction& reconstruction, const double max_axis_distance) { std::vector downward_axes; downward_axes.reserve(reconstruction.NumRegImages()); for (const auto image_id : reconstruction.RegImageIds()) { const auto& image = reconstruction.Image(image_id); downward_axes.push_back( image.CamFromWorld().rotation().toRotationMatrix().row(1)); } return FindBestConsensusAxis(downward_axes, max_axis_distance); } #ifdef COLMAP_LSD_ENABLED struct VanishingPointEstimator { // The line segments. using X_t = LineSegment; // The line representation of the segments. using Y_t = Eigen::Vector3d; // The vanishing point. using M_t = Eigen::Vector3d; // The minimum number of samples needed to estimate a model. static const int kMinNumSamples = 2; // Estimate the vanishing point from at least two line segments. static void Estimate(const std::vector& line_segments, const std::vector& lines, std::vector* models) { THROW_CHECK_EQ(line_segments.size(), 2); THROW_CHECK_EQ(lines.size(), 2); THROW_CHECK(models != nullptr); models->resize(1); (*models)[0] = lines[0].cross(lines[1]); } // Calculate the squared distance of each line segment's end point to the line // connecting the vanishing point and the midpoint of the line segment. static void Residuals(const std::vector& line_segments, const std::vector& lines, const M_t& vanishing_point, std::vector* residuals) { residuals->resize(line_segments.size()); // Check if vanishing point is at infinity. if (vanishing_point[2] == 0) { std::fill(residuals->begin(), residuals->end(), std::numeric_limits::max()); return; } for (size_t i = 0; i < lines.size(); ++i) { const Eigen::Vector3d midpoint = (0.5 * (line_segments[i].start + line_segments[i].end)).homogeneous(); const Eigen::Vector3d connecting_line = midpoint.cross(vanishing_point); const double signed_distance = connecting_line.dot(line_segments[i].end.homogeneous()) / connecting_line.head<2>().norm(); (*residuals)[i] = signed_distance * signed_distance; } } }; Eigen::Matrix3d EstimateManhattanWorldFrame( const ManhattanWorldFrameEstimationOptions& options, const Reconstruction& reconstruction, const std::filesystem::path& image_path) { std::vector rightward_axes; std::vector downward_axes; size_t image_idx = 0; for (const image_t image_id : reconstruction.RegImageIds()) { const auto& image = reconstruction.Image(image_id); const auto& camera = *image.CameraPtr(); LOG_HEADING1(StringPrintf("Processing image %s (%d / %d)", image.Name().c_str(), ++image_idx, reconstruction.NumRegImages())); LOG(INFO) << "Reading image..."; Bitmap bitmap; THROW_CHECK(bitmap.Read(image_path / image.Name())); LOG(INFO) << "Undistorting image..."; UndistortCameraOptions undistortion_options; undistortion_options.max_image_size = options.max_image_size; Bitmap undistorted_bitmap; Camera undistorted_camera; UndistortImage(undistortion_options, bitmap, camera, &undistorted_bitmap, &undistorted_camera); LOG(INFO) << "Detecting lines..."; const std::vector line_segments = DetectLineSegments(undistorted_bitmap, options.min_line_length); const std::vector line_orientations = ClassifyLineSegmentOrientations(line_segments, options.line_orientation_tolerance); LOG(INFO) << StringPrintf(" %d", line_segments.size()); std::vector horizontal_line_segments; std::vector vertical_line_segments; std::vector horizontal_lines; std::vector vertical_lines; for (size_t i = 0; i < line_segments.size(); ++i) { const auto& line_segment = line_segments[i]; const Eigen::Vector3d line_segment_start = line_segment.start.homogeneous(); const Eigen::Vector3d line_segment_end = line_segment.end.homogeneous(); const Eigen::Vector3d line = line_segment_start.cross(line_segment_end); if (line_orientations[i] == LineSegmentOrientation::HORIZONTAL) { horizontal_line_segments.push_back(line_segment); horizontal_lines.push_back(line); } else if (line_orientations[i] == LineSegmentOrientation::VERTICAL) { vertical_line_segments.push_back(line_segment); vertical_lines.push_back(line); } } LOG(INFO) << StringPrintf(" (%d horizontal, %d vertical)", horizontal_lines.size(), vertical_lines.size()); LOG(INFO) << "Estimating vanishing points..."; RANSACOptions ransac_options; ransac_options.max_error = options.max_line_vp_distance; RANSAC ransac(ransac_options); const auto horizontal_report = ransac.Estimate(horizontal_line_segments, horizontal_lines); const auto vertical_report = ransac.Estimate(vertical_line_segments, vertical_lines); LOG(INFO) << StringPrintf(" (%d horizontal inliers, %d vertical inliers)", horizontal_report.support.num_inliers, vertical_report.support.num_inliers); LOG(INFO) << "Composing coordinate axes..."; const Eigen::Matrix3d inv_calib_matrix = undistorted_camera.CalibrationMatrix().inverse(); const Eigen::Quaterniond world_from_cam_rotation = image.CamFromWorld().rotation().inverse(); if (horizontal_report.success) { Eigen::Vector3d horizontal_axis_in_world = world_from_cam_rotation * (inv_calib_matrix * horizontal_report.model).normalized(); // Make sure all axes point into the same direction. if (rightward_axes.size() > 0 && rightward_axes[0].dot(horizontal_axis_in_world) < 0) { horizontal_axis_in_world = -horizontal_axis_in_world; } rightward_axes.push_back(horizontal_axis_in_world); LOG(INFO) << "Horizontal: " << horizontal_axis_in_world.transpose(); } if (vertical_report.success) { const Eigen::Vector3d vertical_axis_in_cam = (inv_calib_matrix * vertical_report.model).normalized(); Eigen::Vector3d vertical_axis_in_world = (world_from_cam_rotation * vertical_axis_in_cam).normalized(); // Make sure axis points downwards in the image, assuming that the image // was taken in upright orientation. if (vertical_axis_in_world.dot(Eigen::Vector3d(0, 1, 0)) < 0) { vertical_axis_in_world = -vertical_axis_in_world; } downward_axes.push_back(vertical_axis_in_world); LOG(INFO) << "Vertical: " << vertical_axis_in_world.transpose(); } } LOG_HEADING1("Computing coordinate frame"); Eigen::Matrix3d frame = Eigen::Matrix3d::Zero(); if (rightward_axes.size() > 0) { frame.col(0) = FindBestConsensusAxis(rightward_axes, options.max_axis_distance); } LOG(INFO) << "Found rightward axis: " << frame.col(0).transpose(); if (downward_axes.size() > 0) { frame.col(1) = FindBestConsensusAxis(downward_axes, options.max_axis_distance); } LOG(INFO) << "Found downward axis: " << frame.col(1).transpose(); if (rightward_axes.size() > 0 && downward_axes.size() > 0) { frame.col(2) = frame.col(0).cross(frame.col(1)); Eigen::JacobiSVD svd( frame, Eigen::ComputeFullV | Eigen::ComputeFullU); const Eigen::Matrix3d orthonormal_frame = svd.matrixU() * Eigen::Matrix3d::Identity() * svd.matrixV().transpose(); frame = orthonormal_frame; } LOG(INFO) << "Found orthonormal frame:\n" << frame; return frame; } #endif void AlignToPrincipalPlane(Reconstruction* reconstruction, Sim3d* aligned_from_original) { THROW_CHECK_GT(reconstruction->NumRegFrames(), 0); // Perform SVD on the 3D points to estimate the ground plane basis const Eigen::Vector3d centroid = reconstruction->ComputeCentroid(0.0, 1.0); Eigen::MatrixXd normalized_points3D(3, reconstruction->NumPoints3D()); int pidx = 0; for (const auto& point : reconstruction->Points3D()) { normalized_points3D.col(pidx++) = point.second.xyz - centroid; } #if EIGEN_VERSION_AT_LEAST(5, 0, 0) const Eigen::Matrix3d basis = normalized_points3D.jacobiSvd() .matrixU(); #else const Eigen::Matrix3d basis = normalized_points3D.jacobiSvd(Eigen::ComputeThinU | Eigen::ComputeThinV) .matrixU(); #endif Eigen::Matrix3d rot_mat; rot_mat << basis.col(0), basis.col(1), basis.col(0).cross(basis.col(1)); rot_mat.transposeInPlace(); *aligned_from_original = Sim3d(1.0, Eigen::Quaterniond(rot_mat), -rot_mat * centroid); // If camera plane ends up below ground then flip basis vectors. const Frame& frame0 = reconstruction->Frame(reconstruction->RegFrameIds().front()); const auto frame0_image_ids = frame0.ImageIds(); THROW_CHECK(frame0_image_ids.begin() != frame0_image_ids.end()); const Rigid3d cam0_from_aligned_world = TransformCameraWorld( *aligned_from_original, reconstruction->Image(frame0_image_ids.begin()->id).CamFromWorld()); if (Inverse(cam0_from_aligned_world).translation().z() < 0.0) { rot_mat << basis.col(0), -basis.col(1), basis.col(0).cross(-basis.col(1)); rot_mat.transposeInPlace(); *aligned_from_original = Sim3d(1.0, Eigen::Quaterniond(rot_mat), -rot_mat * centroid); } reconstruction->Transform(*aligned_from_original); } void AlignToENUPlane(Reconstruction* reconstruction, Sim3d* aligned_from_original, bool unscaled) { const Eigen::Vector3d centroid = reconstruction->ComputeCentroid(0.0, 1.0); GPSTransform gps_tform; const Eigen::Vector3d ell_centroid = gps_tform.ECEFToEllipsoid({centroid}).at(0); // Create rotation matrix from ECEF to ENU coordinates const double sin_lat = std::sin(DegToRad(ell_centroid(0))); const double sin_lon = std::sin(DegToRad(ell_centroid(1))); const double cos_lat = std::cos(DegToRad(ell_centroid(0))); const double cos_lon = std::cos(DegToRad(ell_centroid(1))); // Create ECEF to ENU rotation matrix Eigen::Matrix3d rot_mat; rot_mat << -sin_lon, cos_lon, 0, -cos_lon * sin_lat, -sin_lon * sin_lat, cos_lat, cos_lon * cos_lat, sin_lon * cos_lat, sin_lat; const double scale = unscaled ? 1.0 / aligned_from_original->scale() : 1.0; *aligned_from_original = Sim3d(scale, Eigen::Quaterniond(rot_mat), -scale * rot_mat * centroid); reconstruction->Transform(*aligned_from_original); } } // namespace colmap colmap-4.1.1/src/colmap/estimators/coordinate_frame.h000066400000000000000000000100531522646662000227060ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/scene/reconstruction.h" #include "colmap/util/eigen_alignment.h" #include namespace colmap { struct ManhattanWorldFrameEstimationOptions { // The maximum image size for line detection. int max_image_size = 1024; // The minimum length of line segments in pixels. double min_line_length = 3; // The tolerance for classifying lines into horizontal/vertical. double line_orientation_tolerance = 0.2; // The maximum distance in pixels between lines and the vanishing points. double max_line_vp_distance = 0.5; // The maximum cosine distance between estimated axes to be inliers. double max_axis_distance = 0.05; }; // Estimate gravity vector by assuming gravity-aligned image orientation, i.e. // the majority of images is assumed to have the gravity vector aligned with an // upright image plane. Eigen::Vector3d EstimateGravityVectorFromImageOrientation( const Reconstruction& reconstruction, double max_axis_distance = 0.05); // Estimate the coordinate frame of the reconstruction assuming a Manhattan // world by finding the major vanishing points in each image. This function // assumes that the majority of images is taken in upright direction, i.e. // people are standing upright in the image. The orthonormal axes of the // estimated coordinate frame will be given in the columns of the returned // matrix. If one axis could not be determined, the respective column will be // zero. The axes are specified in the world coordinate system in the order // rightward, downward, forward. #ifdef COLMAP_LSD_ENABLED Eigen::Matrix3d EstimateManhattanWorldFrame( const ManhattanWorldFrameEstimationOptions& options, const Reconstruction& reconstruction, const std::filesystem::path& image_path); #endif // Aligns the reconstruction to the plane defined by running PCA on the 3D // points. The model centroid is at the origin of the new coordinate system // and the X axis is the first principal component with the Y axis being the // second principal component void AlignToPrincipalPlane(Reconstruction* recon, Sim3d* tform); // Aligns the reconstruction to the local ENU plane orientation. Rotates the // reconstruction such that the x-y plane aligns with the ENU tangent plane at // the point cloud centroid and translates the origin to the centroid. // If unscaled == true, then the original scale of the model remains unchanged. void AlignToENUPlane(Reconstruction* recon, Sim3d* tform, bool unscaled); } // namespace colmap colmap-4.1.1/src/colmap/estimators/coordinate_frame_test.cc000066400000000000000000000420611522646662000241070ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/coordinate_frame.h" #include "colmap/geometry/gps.h" #include "colmap/math/math.h" #include "colmap/math/random.h" #include "colmap/sensor/bitmap.h" #include "colmap/util/eigen_matchers.h" #include "colmap/util/testing.h" #include #include namespace colmap { namespace { TEST(EstimateGravityVectorFromImageOrientation, Nominal) { // Create a reconstruction with multiple upright images. // Upright images have gravity aligned with the camera Y axis, so // row(1) of the rotation matrix should point downward (along +Y world). Reconstruction reconstruction; Camera camera = Camera::CreateFromModelId(1, CameraModelId::kSimplePinhole, 1, 1, 1); reconstruction.AddCameraWithTrivialRig(camera); // Add 5 registered images with random rotation around +Y (upright, gravity // ~ +Y) for (int i = 0; i < 5; ++i) { Image image; image.SetImageId(i); image.SetCameraId(camera.camera_id); const Rigid3d cam_from_world( Eigen::Quaterniond( Eigen::AngleAxisd(RandomUniformReal(-EIGEN_PI, EIGEN_PI), Eigen::Vector3d::UnitY())), Eigen::Vector3d(i, 0, 0)); reconstruction.AddImageWithTrivialFrame(std::move(image), cam_from_world); } // 1 outlier image rotated 90 degrees around Z { Image image; image.SetImageId(6); image.SetCameraId(camera.camera_id); const Rigid3d cam_from_world(Eigen::Quaterniond(Eigen::AngleAxisd( EIGEN_PI / 2, Eigen::Vector3d::UnitZ())), Eigen::Vector3d(6, 0, 0)); reconstruction.AddImageWithTrivialFrame(std::move(image), cam_from_world); } const Eigen::Vector3d gravity = EstimateGravityVectorFromImageOrientation(reconstruction); // Consensus should find gravity ~ (0, 1, 0) despite the outlier EXPECT_NEAR(gravity.norm(), 1.0, 1e-6); EXPECT_NEAR(std::abs(gravity.dot(Eigen::Vector3d(0, 1, 0))), 1.0, 1e-6); } TEST(EstimateGravityVectorFromImageOrientation, Empty) { Reconstruction reconstruction; EXPECT_EQ(EstimateGravityVectorFromImageOrientation(reconstruction), Eigen::Vector3d::Zero()); } #ifdef COLMAP_LSD_ENABLED constexpr int kWidth = 512; constexpr int kHeight = 512; constexpr double kFocal = 400.0; struct Line3D { Eigen::Vector3d beg; Eigen::Vector3d end; }; struct ManhattanScene { Eigen::Matrix3d manhattan_from_world; std::vector vertical_lines; std::vector horizontal_lines; }; ManhattanScene CreateManhattanScene() { // Rotate the Manhattan frame so the solution is not trivially axis-aligned. const Eigen::Matrix3d manhattan_from_world = (Eigen::AngleAxisd(DegToRad(25.0), Eigen::Vector3d::UnitZ()) * Eigen::AngleAxisd(DegToRad(11.0), Eigen::Vector3d::UnitX())) .toRotationMatrix(); // Define axis-aligned 3D lines, then rotate them into the tilted frame. // Vertical lines are parallel to Y; horizontal lines to X. std::vector vertical_lines = { {{-1.5, -2, 5}, {-1.5, 2, 5}}, {{-0.5, -2, 5}, {-0.5, 2, 5}}, {{0.5, -2, 5}, {0.5, 2, 5}}, {{1.5, -2, 5}, {1.5, 2, 5}}, {{-1, -2, 7}, {-1, 2, 7}}, {{0, -2, 7}, {0, 2, 7}}, {{1, -2, 7}, {1, 2, 7}}, }; std::vector horizontal_lines = { {{-2, -1.5, 5}, {2, -1.5, 5}}, {{-2, -0.5, 5}, {2, -0.5, 5}}, {{-2, 0.5, 5}, {2, 0.5, 5}}, {{-2, 1.5, 5}, {2, 1.5, 5}}, {{-2, -1, 7}, {2, -1, 7}}, {{-2, 0, 7}, {2, 0, 7}}, {{-2, 1, 7}, {2, 1, 7}}, }; for (auto& l : vertical_lines) { l.beg = manhattan_from_world * l.beg; l.end = manhattan_from_world * l.end; } for (auto& l : horizontal_lines) { l.beg = manhattan_from_world * l.beg; l.end = manhattan_from_world * l.end; } return {manhattan_from_world, std::move(vertical_lines), std::move(horizontal_lines)}; } void DrawLine(Bitmap& bitmap, const Eigen::Vector2d& a, const Eigen::Vector2d& b, int radius) { const int steps = std::max(1, static_cast(std::ceil((b - a).norm() * 2))); for (int s = 0; s <= steps; ++s) { const double t = static_cast(s) / steps; const double x = a.x() + t * (b.x() - a.x()); const double y = a.y() + t * (b.y() - a.y()); for (int dy = -radius; dy <= radius; ++dy) { for (int dx = -radius; dx <= radius; ++dx) { if (dx * dx + dy * dy > radius * radius) continue; const int px = static_cast(std::round(x + dx)); const int py = static_cast(std::round(y + dy)); if (px >= 0 && px < kWidth && py >= 0 && py < kHeight) { bitmap.SetPixel(px, py, BitmapColor(255)); } } } } } void RenderLineImages(Reconstruction& reconstruction, const ManhattanScene& scene, const std::filesystem::path& test_dir) { // 3 cameras with combined pitch (around X) and yaw (around Y) so that both // the horizontal and vertical vanishing points are at finite image locations. const std::array pitch_deg = {10.0, 10.0, 8.0}; const std::array yaw_deg = {15.0, -15.0, 5.0}; const Camera camera = Camera::CreateFromModelId( 1, CameraModelId::kSimplePinhole, kFocal, kWidth, kHeight); reconstruction.AddCameraWithTrivialRig(camera); for (size_t cam_idx = 0; cam_idx < pitch_deg.size(); ++cam_idx) { const Eigen::Quaterniond cam_from_world_rot( Eigen::AngleAxisd(DegToRad(pitch_deg[cam_idx]), Eigen::Vector3d::UnitX()) * Eigen::AngleAxisd(DegToRad(yaw_deg[cam_idx]), Eigen::Vector3d::UnitY())); const Rigid3d cam_from_world(cam_from_world_rot, Eigen::Vector3d::Zero()); Image image; image.SetImageId(cam_idx); image.SetCameraId(camera.camera_id); image.SetName("image" + std::to_string(cam_idx) + ".png"); reconstruction.AddImageWithTrivialFrame(std::move(image), cam_from_world); const auto& reg_image = reconstruction.Image(cam_idx); // Project 3D lines and draw thick white stripes on a gray background. Bitmap bitmap(kWidth, kHeight, /*as_rgb=*/true); bitmap.Fill(BitmapColor(128)); constexpr int kRadius = 3; for (const auto& line : scene.vertical_lines) { const auto p1 = reg_image.ProjectPoint(line.beg); const auto p2 = reg_image.ProjectPoint(line.end); if (p1 && p2) DrawLine(bitmap, *p1, *p2, kRadius); } for (const auto& line : scene.horizontal_lines) { const auto p1 = reg_image.ProjectPoint(line.beg); const auto p2 = reg_image.ProjectPoint(line.end); if (p1 && p2) DrawLine(bitmap, *p1, *p2, kRadius); } ASSERT_TRUE(bitmap.Write(test_dir / reg_image.Name())); } } TEST(EstimateManhattanWorldFrame, Synthetic) { SetPRNGSeed(0); const auto scene = CreateManhattanScene(); const auto test_dir = CreateTestDir(); Reconstruction reconstruction; ASSERT_NO_FATAL_FAILURE(RenderLineImages(reconstruction, scene, test_dir)); // Run Manhattan world frame estimation. ManhattanWorldFrameEstimationOptions options; const Eigen::Matrix3d frame = EstimateManhattanWorldFrame(options, reconstruction, test_dir); // The estimated frame should recover the tilted Manhattan axes. const Eigen::Vector3d expected_rightward = scene.manhattan_from_world.col(0); const Eigen::Vector3d expected_downward = scene.manhattan_from_world.col(1); const Eigen::Vector3d expected_forward = scene.manhattan_from_world.col(2); // Rightward direction (col 0) must align with the rotated X axis. // The sign of the rightward and forward axes is ambiguous, so check absolute // dot product. EXPECT_LT(std::abs(std::abs(frame.col(0).dot(expected_rightward)) - 1), 1e-3); // Gravity direction (col 1) must align with the rotated Y axis. // The sign is deterministic (flipped to match +Y in the implementation). EXPECT_LT(std::abs(frame.col(1).dot(expected_downward) - 1), 1e-3); // Forward direction (col 2) must align with the rotated Z axis. EXPECT_LT(std::abs(std::abs(frame.col(2).dot(expected_forward)) - 1), 1e-3); // Verify orthonormality. EXPECT_NEAR(frame.col(0).norm(), 1.0, 1e-6); EXPECT_NEAR(frame.col(1).norm(), 1.0, 1e-6); EXPECT_NEAR(frame.col(2).norm(), 1.0, 1e-6); EXPECT_NEAR(std::abs(frame.col(0).dot(frame.col(1))), 0.0, 1e-6); EXPECT_NEAR(std::abs(frame.col(0).dot(frame.col(2))), 0.0, 1e-6); EXPECT_NEAR(std::abs(frame.col(1).dot(frame.col(2))), 0.0, 1e-6); } TEST(EstimateManhattanWorldFrame, Empty) { Reconstruction reconstruction; std::filesystem::path image_path; EXPECT_EQ( EstimateManhattanWorldFrame( ManhattanWorldFrameEstimationOptions(), reconstruction, image_path), Eigen::Matrix3d::Zero()); } #endif TEST(AlignToPrincipalPlane, Nominal) { // Start with reconstruction containing points on the Y-Z plane and cameras // "above" the plane on the positive X axis. After alignment the points should // be on the X-Y plane and the cameras "above" the plane on the positive Z // axis. Sim3d tform; Reconstruction reconstruction; Camera camera = Camera::CreateFromModelId(1, CameraModelId::kSimplePinhole, 1, 1, 1); reconstruction.AddCamera(camera); Rig rig; rig.SetRigId(1); rig.AddRefSensor(sensor_t(SensorType::CAMERA, 1)); reconstruction.AddRig(rig); Frame frame; frame.SetFrameId(1); frame.SetRigId(rig.RigId()); frame.AddDataId(data_t(camera.SensorId(), 1)); frame.SetRigFromWorld( Rigid3d(Eigen::Quaterniond::Identity(), Eigen::Vector3d(-1, 0, 0))); reconstruction.AddFrame(frame); // Setup image with projection center at (1, 0, 0) Image image; image.SetCameraId(camera.camera_id); image.SetImageId(1); image.SetFrameId(1); reconstruction.AddImage(image); // Setup 4 points on the Y-Z plane const point3D_t p1 = reconstruction.AddPoint3D(Eigen::Vector3d(0, -1, 0), Track()); const point3D_t p2 = reconstruction.AddPoint3D(Eigen::Vector3d(0, 1, 0), Track()); const point3D_t p3 = reconstruction.AddPoint3D(Eigen::Vector3d(0, 0, -1), Track()); const point3D_t p4 = reconstruction.AddPoint3D(Eigen::Vector3d(0, 0, 1), Track()); AlignToPrincipalPlane(&reconstruction, &tform); // Note that the final X and Y axes may be inverted after alignment, so we // need to account for both cases when checking for correctness const bool inverted = tform.rotation().y() < 0; // Verify that points lie on the correct locations of the X-Y plane EXPECT_LE((reconstruction.Point3D(p1).xyz - Eigen::Vector3d(inverted ? 1 : -1, 0, 0)) .norm(), 1e-6); EXPECT_LE((reconstruction.Point3D(p2).xyz - Eigen::Vector3d(inverted ? -1 : 1, 0, 0)) .norm(), 1e-6); EXPECT_LE((reconstruction.Point3D(p3).xyz - Eigen::Vector3d(0, inverted ? 1 : -1, 0)) .norm(), 1e-6); EXPECT_LE((reconstruction.Point3D(p4).xyz - Eigen::Vector3d(0, inverted ? -1 : 1, 0)) .norm(), 1e-6); // Verify that projection center is at (0, 0, 1) EXPECT_LE( (reconstruction.Image(1).ProjectionCenter() - Eigen::Vector3d(0, 0, 1)) .norm(), 1e-6); // Verify that transform matrix does shuffling of axes Eigen::Matrix3x4d expected; if (inverted) { expected << 0, -1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0; } else { expected << 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0; } EXPECT_THAT(tform.ToMatrix(), EigenMatrixNear(expected, 1e-6)); } TEST(AlignToENUPlane, Scaled) { // Create reconstruction with 4 points with known LLA coordinates. After the // ENU transform all 4 points should land approximately on the X-Y plane. GPSTransform gps; auto points = gps.EllipsoidToECEF({Eigen::Vector3d(50, 10.1, 100), Eigen::Vector3d(50.1, 10, 100), Eigen::Vector3d(50.1, 10.1, 100), Eigen::Vector3d(50, 10, 100)}); Sim3d tform; Reconstruction reconstruction; std::vector point_ids; for (size_t i = 0; i < points.size(); ++i) { point_ids.push_back(reconstruction.AddPoint3D(points[i], Track())); LOG(INFO) << points[i].transpose(); } AlignToENUPlane(&reconstruction, &tform, false); // Verify final locations of points EXPECT_THAT(reconstruction.Point3D(point_ids[0]).xyz, EigenMatrixNear(Eigen::Vector3d(3584.8433196335045, -5561.5866894473402, -0.0020947810262441635), 1e-6)); EXPECT_THAT(reconstruction.Point3D(point_ids[1]).xyz, EigenMatrixNear(Eigen::Vector3d(-3577.4020366631503, 5561.5866894469982, 0.0020947791635990143), 1e-6)); EXPECT_THAT(reconstruction.Point3D(point_ids[2]).xyz, EigenMatrixNear(Eigen::Vector3d(3577.4020366640707, 5561.5866894467654, 0.0020947791635990143), 1e-6)); EXPECT_THAT(reconstruction.Point3D(point_ids[3]).xyz, EigenMatrixNear(Eigen::Vector3d(-3584.8433196330498, -5561.586689447573, -0.0020947810262441635), 1e-6)); // Verify that straight line distance between points is preserved for (size_t i = 1; i < points.size(); ++i) { const double dist_orig = (points[i] - points[i - 1]).norm(); const double dist_tform = (reconstruction.Point3D(point_ids[i]).xyz - reconstruction.Point3D(point_ids[i - 1]).xyz) .norm(); EXPECT_LE(std::abs(dist_orig - dist_tform), 1e-6); } } TEST(AlignToENUPlane, Unscaled) { // Test unscaled variant: starting from a model with non-unit scale, the // alignment should undo the scale so that original distances are preserved. GPSTransform gps; auto points = gps.EllipsoidToECEF({Eigen::Vector3d(50, 10.1, 100), Eigen::Vector3d(50.1, 10, 100), Eigen::Vector3d(50.1, 10.1, 100), Eigen::Vector3d(50, 10, 100)}); Reconstruction reconstruction; std::vector point3D_ids; point3D_ids.reserve(points.size()); for (size_t i = 0; i < points.size(); ++i) { point3D_ids.push_back(reconstruction.AddPoint3D(points[i], Track())); } // Apply a non-unit scale to simulate a scaled model const double model_scale = 2.0; Sim3d pre_scale( model_scale, Eigen::Quaterniond::Identity(), Eigen::Vector3d::Zero()); reconstruction.Transform(pre_scale); // Align with unscaled=true, passing the pre_scale as the current transform Sim3d tform = pre_scale; AlignToENUPlane(&reconstruction, &tform, /*unscaled=*/true); // The applied transform should have inverse scale to undo pre_scale EXPECT_NEAR(tform.scale(), 1.0 / model_scale, 1e-6); // Original (unscaled) distances between ECEF points should be preserved for (size_t i = 1; i < points.size(); ++i) { const double dist_orig = (points[i] - points[i - 1]).norm(); const double dist_tform = (reconstruction.Point3D(point3D_ids[i]).xyz - reconstruction.Point3D(point3D_ids[i - 1]).xyz) .norm(); EXPECT_NEAR(dist_orig, dist_tform, 1e-4); } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/000077500000000000000000000000001522646662000222755ustar00rootroot00000000000000colmap-4.1.1/src/colmap/estimators/cost_functions/CMakeLists.txt000066400000000000000000000055061522646662000250430ustar00rootroot00000000000000# Copyright (c), ETH Zurich and UNC Chapel Hill. # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # * Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of # its contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. set(FOLDER_NAME "estimators_cost_functions") COLMAP_ADD_LIBRARY( NAME colmap_estimators_cost_functions TYPE INTERFACE SRCS alignment.h calibration.h manifold.h motion_averaging.h pose_prior.h reprojection_error.h sampson_error.h utils.h INTERFACE_LINK_LIBS colmap_geometry colmap_sensor Eigen3::Eigen Ceres::ceres ) COLMAP_ADD_TEST( NAME alignment_test SRCS alignment_test.cc LINK_LIBS colmap_estimators_cost_functions ) COLMAP_ADD_TEST( NAME calibration_test SRCS calibration_test.cc LINK_LIBS colmap_estimators_cost_functions ) COLMAP_ADD_TEST( NAME utils_test SRCS utils_test.cc LINK_LIBS colmap_estimators_cost_functions ) COLMAP_ADD_TEST( NAME reprojection_error_test SRCS reprojection_error_test.cc LINK_LIBS colmap_estimators_cost_functions ) COLMAP_ADD_TEST( NAME sampson_error_test SRCS sampson_error_test.cc LINK_LIBS colmap_estimators_cost_functions ) COLMAP_ADD_TEST( NAME pose_prior_test SRCS pose_prior_test.cc LINK_LIBS colmap_estimators_cost_functions ) COLMAP_ADD_TEST( NAME motion_averaging_test SRCS motion_averaging_test.cc LINK_LIBS colmap_estimators_cost_functions ) colmap-4.1.1/src/colmap/estimators/cost_functions/alignment.h000066400000000000000000000057241522646662000244340ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/estimators/cost_functions/utils.h" #include #include namespace colmap { // Cost function for aligning one 3D point with a reference 3D point with // covariance. The Residual is computed in frame b. Coordinate transformation // convention is equivalent to Sim3d. struct Point3DAlignmentCostFunctor : public AutoDiffCostFunctor { public: explicit Point3DAlignmentCostFunctor(const Eigen::Vector3d& point_in_b_prior, bool use_log_scale = true) : point_in_b_prior_(point_in_b_prior), use_log_scale_(use_log_scale) {} template bool operator()(const T* const point_in_a, const T* const b_from_a, T* residuals_ptr) const { // Select whether to exponentiate const T b_from_a_scale = use_log_scale_ ? ceres::exp(b_from_a[7]) : b_from_a[7]; const Eigen::Matrix point_in_b = EigenQuaternionMap(b_from_a) * EigenVector3Map(point_in_a) * b_from_a_scale + EigenVector3Map(b_from_a + 4); Eigen::Map> residuals(residuals_ptr); residuals = point_in_b - point_in_b_prior_.cast(); return true; } private: const Eigen::Vector3d point_in_b_prior_; const bool use_log_scale_; }; } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/alignment_test.cc000066400000000000000000000074111522646662000256240ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/cost_functions/alignment.h" #include "colmap/geometry/sim3.h" #include "colmap/math/random.h" #include "colmap/util/eigen_matchers.h" #include namespace colmap { namespace { TEST(Point3DAlignmentCostFunctor, UseLogScale) { Sim3d b_from_a = Sim3d(RandomUniformReal(0.1, 10), Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); const Eigen::Vector3d point_in_b_prior(1., 2., 3.); const Eigen::Vector3d point_in_a(3., 2., 1.); const Eigen::Vector3d point_in_b = b_from_a * point_in_a; std::unique_ptr cost_function( Point3DAlignmentCostFunctor::Create(point_in_b_prior, /*use_log_scale=*/true)); b_from_a.scale() = std::log(b_from_a.scale()); const double* parameters_log_scale[2] = {point_in_a.data(), b_from_a.params.data()}; Eigen::Vector3d residuals; EXPECT_TRUE( cost_function->Evaluate(parameters_log_scale, residuals.data(), nullptr)); const Eigen::Vector3d error = point_in_b - point_in_b_prior; EXPECT_THAT(residuals, EigenMatrixNear(error, 1e-6)); } TEST(Point3DAlignmentCostFunctor, DoNotUseLogScale) { const Sim3d b_from_a = Sim3d(RandomUniformReal(0.1, 10), Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); const Eigen::Vector3d point_in_b_prior(1., 2., 3.); const Eigen::Vector3d point_in_a(3., 2., 1.); const Eigen::Vector3d point_in_b = b_from_a * point_in_a; std::unique_ptr cost_function( Point3DAlignmentCostFunctor::Create(point_in_b_prior, /*use_log_scale=*/false)); const double* parameters_log_scale[2] = {point_in_a.data(), b_from_a.params.data()}; Eigen::Vector3d residuals; EXPECT_TRUE( cost_function->Evaluate(parameters_log_scale, residuals.data(), nullptr)); const Eigen::Vector3d error = point_in_b - point_in_b_prior; EXPECT_THAT(residuals, EigenMatrixNear(error, 1e-6)); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/calibration.h000066400000000000000000000210701522646662000247350ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include #include #include namespace colmap { // Compute polynomial coefficients from cross-products of SVD-derived vectors // for the Fetzer focal length estimation method. The coefficients encode the // relationship between the two focal lengths derived from the fundamental // matrix constraint. // See: "Stable Intrinsic Auto-Calibration from Fundamental Matrices of Devices // with Uncorrelated Camera Parameters", Fetzer et al., WACV 2020. inline Eigen::Vector4d ComputeFetzerPolynomialCoefficients( const Eigen::Vector3d& ai, const Eigen::Vector3d& bi, const Eigen::Vector3d& aj, const Eigen::Vector3d& bj, const int u, const int v) { return {ai(u) * aj(v) - ai(v) * aj(u), ai(u) * bj(v) - ai(v) * bj(u), bi(u) * aj(v) - bi(v) * aj(u), bi(u) * bj(v) - bi(v) * bj(u)}; } // Decompose the fundamental matrix (adjusted by principal points) via SVD and // compute the polynomial coefficients for the Fetzer focal length method. // Returns three coefficient vectors used to estimate the two focal lengths. inline std::array DecomposeFundamentalMatrixForFetzer( const Eigen::Matrix3d& i1_F_i0, const Eigen::Vector2d& principal_point0, const Eigen::Vector2d& principal_point1) { Eigen::Matrix3d K0 = Eigen::Matrix3d::Identity(3, 3); K0(0, 2) = principal_point0(0); K0(1, 2) = principal_point0(1); Eigen::Matrix3d K1 = Eigen::Matrix3d::Identity(3, 3); K1(0, 2) = principal_point1(0); K1(1, 2) = principal_point1(1); // Factoring out the principal points before the SVD appears to be numerically // more stable than the method described in the paper. const Eigen::Matrix3d i1_G_i0 = K1.transpose() * i1_F_i0 * K0; const Eigen::JacobiSVD svd( i1_G_i0, Eigen::ComputeFullU | Eigen::ComputeFullV); const Eigen::Vector3d& s = svd.singularValues(); const Eigen::Vector3d v0 = svd.matrixV().col(0); const Eigen::Vector3d v1 = svd.matrixV().col(1); const Eigen::Vector3d u0 = svd.matrixU().col(0); const Eigen::Vector3d u1 = svd.matrixU().col(1); // Equation 11. Notice there is a sign error in the paper. // Equation 8 shows the sign in aj(1) and bj(1) correctly. const Eigen::Vector3d ai(s(0) * s(0) * (v0(0) * v0(0) + v0(1) * v0(1)), s(0) * s(1) * (v0(0) * v1(0) + v0(1) * v1(1)), s(1) * s(1) * (v1(0) * v1(0) + v1(1) * v1(1))); const Eigen::Vector3d aj(u1(0) * u1(0) + u1(1) * u1(1), -(u0(0) * u1(0) + u0(1) * u1(1)), u0(0) * u0(0) + u0(1) * u0(1)); const Eigen::Vector3d bi(s(0) * s(0) * v0(2) * v0(2), s(0) * s(1) * v0(2) * v1(2), s(1) * s(1) * v1(2) * v1(2)); const Eigen::Vector3d bj(u1(2) * u1(2), -(u0(2) * u1(2)), u0(2) * u0(2)); // Equation 12. // Experiments showed that the d02 term is not useful. // The d10, d21m d20 are redundant to d01, d12, d02. const Eigen::Vector4d d01 = ComputeFetzerPolynomialCoefficients(ai, bi, aj, bj, 1, 0); const Eigen::Vector4d d12 = ComputeFetzerPolynomialCoefficients(ai, bi, aj, bj, 2, 1); return {d01, d12}; } template inline T ComputeFetzerResidual1(const Eigen::Vector& d, const T& fi_sq, const T& fj_sq) { // Equation 13. T denom = fj_sq * d(0) + d(1); denom = denom == T(0) ? T(1e-6) : denom; const T K1 = -(fj_sq * d(2) + d(3)) / denom; return (fi_sq - K1) / fi_sq; } template inline T ComputeFetzerResidual2(const Eigen::Vector& d, const T& fi_sq, const T& fj_sq) { // Equation 14. T denom = fi_sq * d(0) + d(2); denom = denom == T(0) ? T(1e-6) : denom; const T K2 = -(fi_sq * d(1) + d(3)) / denom; return (fj_sq - K2) / fj_sq; } // Cost functor for estimating focal lengths from the fundamental matrix using // the Fetzer method. Used when two images have different cameras (different // focal lengths). The residual measures the relative error between the // estimated and expected focal lengths based on the fundamental matrix // constraint. class FetzerFocalLengthCostFunctor { public: FetzerFocalLengthCostFunctor(const Eigen::Matrix3d& j_F_i, const Eigen::Vector2d& principal_point_i, const Eigen::Vector2d& principal_point_j) : coeffs_(DecomposeFundamentalMatrixForFetzer( j_F_i, principal_point_i, principal_point_j)) {} static ceres::CostFunction* Create(const Eigen::Matrix3d& j_F_i, const Eigen::Vector2d& principal_point_i, const Eigen::Vector2d& principal_point_j) { return new ceres:: AutoDiffCostFunction( new FetzerFocalLengthCostFunctor( j_F_i, principal_point_i, principal_point_j)); } template bool operator()(const T* const focal_length_i, const T* const focal_length_j, T* residuals) const { const T fi_sq = focal_length_i[0] * focal_length_i[0]; const T fj_sq = focal_length_j[0] * focal_length_j[0]; const Eigen::Vector d01 = coeffs_[0].cast(); residuals[0] = ComputeFetzerResidual1(d01, fi_sq, fj_sq); const Eigen::Vector d12 = coeffs_[1].cast(); residuals[1] = ComputeFetzerResidual2(d12, fi_sq, fj_sq); return true; } private: const std::array coeffs_; }; // Cost functor for estimating focal length from the fundamental matrix using // the Fetzer method. Used when two images share the same camera (same focal // length). The residual measures the relative error between the estimated and // expected focal length based on the fundamental matrix constraint. class FetzerFocalLengthSameCameraCostFunctor { public: FetzerFocalLengthSameCameraCostFunctor(const Eigen::Matrix3d& j_F_i, const Eigen::Vector2d& principal_point) : coeffs_(DecomposeFundamentalMatrixForFetzer( j_F_i, principal_point, principal_point)) {} static ceres::CostFunction* Create(const Eigen::Matrix3d& j_F_i, const Eigen::Vector2d& principal_point) { return new ceres:: AutoDiffCostFunction( new FetzerFocalLengthSameCameraCostFunctor(j_F_i, principal_point)); } template bool operator()(const T* const focal_length, T* residuals) const { const T f_sq = focal_length[0] * focal_length[0]; const Eigen::Vector d01 = coeffs_[0].cast(); residuals[0] = ComputeFetzerResidual1(d01, f_sq, f_sq); const Eigen::Vector d12 = coeffs_[1].cast(); residuals[1] = ComputeFetzerResidual2(d12, f_sq, f_sq); return true; } private: const std::array coeffs_; }; } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/calibration_test.cc000066400000000000000000000124031522646662000261320ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/cost_functions/calibration.h" #include "colmap/geometry/essential_matrix.h" #include "colmap/geometry/rigid3.h" #include namespace colmap { namespace { TEST(FetzerFocalLengthCostFunctor, ConvexCostLandscape) { constexpr int kNumTrials = 10; for (int i = 0; i < kNumTrials; ++i) { const double focal_length1 = 128; const double focal_length2 = 256; const Eigen::Vector2d pp1(320, 240); const Eigen::Vector2d pp2(480, 320); const Rigid3d cam2_from_cam1(Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); Eigen::Matrix3d K1; K1 << focal_length1, 0, pp1(0), 0, focal_length1, pp1(1), 0, 0, 1; Eigen::Matrix3d K2; K2 << focal_length2, 0, pp2(0), 0, focal_length2, pp2(1), 0, 0, 1; const Eigen::Matrix3d F = FundamentalFromEssentialMatrix( K2, EssentialMatrixFromPose(cam2_from_cam1), K1); FetzerFocalLengthCostFunctor cost_functor(F, pp1, pp2); Eigen::VectorXd optimal_residual(2); EXPECT_TRUE( cost_functor(&focal_length1, &focal_length2, optimal_residual.data())); EXPECT_LT(optimal_residual.norm(), 1e-8); double previous_cost = -1e-9; double modified_focal_length1 = focal_length1; double modified_focal_length2 = focal_length2; for (int j = 0; j < 10; ++j) { Eigen::VectorXd residual(2); EXPECT_TRUE(cost_functor( &modified_focal_length1, &modified_focal_length2, residual.data())); const double cost = residual.norm(); EXPECT_GT(cost, previous_cost); previous_cost = cost; modified_focal_length1 *= 1.05; modified_focal_length2 *= 1.05; } previous_cost = -1e-9; modified_focal_length1 = focal_length1; modified_focal_length2 = focal_length2; for (int j = 0; j < 10; ++j) { Eigen::VectorXd residual(2); EXPECT_TRUE(cost_functor( &modified_focal_length1, &modified_focal_length2, residual.data())); const double cost = residual.norm(); EXPECT_GT(cost, previous_cost); previous_cost = cost; modified_focal_length1 *= 0.95; modified_focal_length2 *= 0.95; } } } TEST(FetzerFocalLengthSameCameraCostFunctor, ConvexCostLandscape) { constexpr int kNumTrials = 10; for (int i = 0; i < kNumTrials; ++i) { const double focal_length = 128; const Eigen::Vector2d pp(320, 240); const Rigid3d cam2_from_cam1(Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); Eigen::Matrix3d K; K << focal_length, 0, pp(0), 0, focal_length, pp(1), 0, 0, 1; const Eigen::Matrix3d F = FundamentalFromEssentialMatrix( K, EssentialMatrixFromPose(cam2_from_cam1), K); FetzerFocalLengthSameCameraCostFunctor cost_functor(F, pp); Eigen::VectorXd optimal_residual(2); EXPECT_TRUE(cost_functor(&focal_length, optimal_residual.data())); EXPECT_LT(optimal_residual.norm(), 1e-8); double previous_cost = -1e-9; double modified_focal_length = focal_length; for (int j = 0; j < 10; ++j) { Eigen::VectorXd residual(2); EXPECT_TRUE(cost_functor(&modified_focal_length, residual.data())); const double cost = residual.norm(); EXPECT_GT(cost, previous_cost); previous_cost = cost; modified_focal_length *= 1.05; } previous_cost = -1e-9; modified_focal_length = focal_length; for (int j = 0; j < 10; ++j) { Eigen::VectorXd residual(2); EXPECT_TRUE(cost_functor(&modified_focal_length, residual.data())); const double cost = residual.norm(); EXPECT_GT(cost, previous_cost); previous_cost = cost; modified_focal_length *= 0.95; } } } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/manifold.h000066400000000000000000000117261522646662000242460ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include #include namespace colmap { #if CERES_VERSION_MAJOR >= 3 || \ (CERES_VERSION_MAJOR == 2 && CERES_VERSION_MINOR >= 1) inline void SetManifold(ceres::Problem* problem, double* params, ceres::Manifold* manifold) { problem->SetManifold(params, manifold); } inline void SetManifold(ceres::Problem* problem, double* params, std::unique_ptr manifold) { problem->SetManifold(params, manifold.release()); } template inline std::unique_ptr CreateEuclideanManifold() { return std::make_unique>(); } inline std::unique_ptr CreateEigenQuaternionManifold() { return std::make_unique(); } inline std::unique_ptr CreateSubsetManifold( int size, const std::vector& constant_params) { return std::make_unique(size, constant_params); } template inline std::unique_ptr CreateSphereManifold() { return std::make_unique>(); } template inline std::unique_ptr CreateProductManifold( Args&&... manifolds) { // Note: Does not support make_unique due to template constructor. return std::unique_ptr( new ceres::ProductManifold(std::forward(manifolds)...)); } inline int ParameterBlockTangentSize(const ceres::Problem& problem, const double* param) { return problem.ParameterBlockTangentSize(param); } #else // CERES_VERSION_MAJOR < 2.1.0 inline void SetManifold(ceres::Problem* problem, double* params, ceres::LocalParameterization* parameterization) { problem->SetParameterization(params, parameterization); } inline void SetManifold( ceres::Problem* problem, double* params, std::unique_ptr parameterization) { problem->SetParameterization(params, parameterization.release()); } template inline std::unique_ptr CreateEuclideanManifold() { return std::make_unique(size); } inline std::unique_ptr CreateEigenQuaternionManifold() { return std::make_unique(); } inline std::unique_ptr CreateSubsetManifold( int size, const std::vector& constant_params) { return std::make_unique(size, constant_params); } template inline std::unique_ptr CreateSphereManifold() { return std::make_unique(size); } template inline std::unique_ptr CreateProductManifold( Args&&... parameterizations) { // Note: Does not support make_unique due to template constructor. return std::unique_ptr( new ceres::ProductParameterization(parameterizations.release()...)); } inline int ParameterBlockTangentSize(const ceres::Problem& problem, const double* param) { return problem.ParameterBlockLocalSize(param); } #endif } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/motion_averaging.h000066400000000000000000000115741522646662000260060ustar00rootroot00000000000000 #pragma once #include #include #include namespace colmap { // Computes the error between a translation direction and the direction formed // from two positions such that: t_ij - scale * (p_j - p_i) is minimized. // The positions can either be two camera centers or one camera center and one // 3D point. // Reference: Zhuang et al., "Baseline Desensitizing In Translation Averaging", // CVPR 2018. struct BATAPairwiseDirectionCostFunctor { explicit BATAPairwiseDirectionCostFunctor( const Eigen::Vector3d& pos2_from_pos1_dir) : pos2_from_pos1_dir_(pos2_from_pos1_dir) {} template bool operator()(const T* pos1, const T* pos2, const T* scale, T* residuals) const { Eigen::Map> residuals_vec(residuals); residuals_vec = pos2_from_pos1_dir_.cast() - scale[0] * (Eigen::Map>(pos2) - Eigen::Map>(pos1)); return true; } static ceres::CostFunction* Create( const Eigen::Vector3d& pos2_from_pos1_dir) { return ( new ceres:: AutoDiffCostFunction( new BATAPairwiseDirectionCostFunctor(pos2_from_pos1_dir))); } const Eigen::Vector3d pos2_from_pos1_dir_; }; // Computes the error between a translation direction and the direction formed // from a camera (c) and 3D point (p) with constant rig extrinsics, such that: // t_ij - scale * (p - c + t_rig) is minimized. struct RigBATAPairwiseDirectionConstantRigCostFunctor { RigBATAPairwiseDirectionConstantRigCostFunctor( const Eigen::Vector3d& cam_from_point3D_dir, const Eigen::Vector3d& cam_from_rig_translation) : cam_from_point3D_dir_(cam_from_point3D_dir), cam_from_rig_translation_(cam_from_rig_translation) {} template bool operator()(const T* point3D, const T* rig_in_world, const T* scale, T* residuals) const { Eigen::Map> residuals_vec(residuals); residuals_vec = cam_from_point3D_dir_.cast() - scale[0] * (Eigen::Map>(point3D) - Eigen::Map>(rig_in_world) + cam_from_rig_translation_.cast()); return true; } static ceres::CostFunction* Create( const Eigen::Vector3d& cam_from_point3D_dir, const Eigen::Vector3d& cam_from_rig_translation) { return (new ceres::AutoDiffCostFunction< RigBATAPairwiseDirectionConstantRigCostFunctor, 3, 3, 3, 1>(new RigBATAPairwiseDirectionConstantRigCostFunctor( cam_from_point3D_dir, cam_from_rig_translation))); } const Eigen::Vector3d cam_from_point3D_dir_; const Eigen::Vector3d cam_from_rig_translation_; }; // Computes the error between a translation direction and the direction formed // from a camera (c) and 3D point (p) with variable rig extrinsics, such that: // t_ij - scale * (p - c + t_rig) is minimized. struct RigBATAPairwiseDirectionCostFunctor { RigBATAPairwiseDirectionCostFunctor( const Eigen::Vector3d& cam_from_point3D_dir, const Eigen::Quaterniond& rig_from_world_rot) : cam_from_point3D_dir_(cam_from_point3D_dir), world_from_rig_rot_(rig_from_world_rot.inverse()) {} template bool operator()(const T* point3D, const T* rig_in_world, const T* cam_in_rig, const T* scale, T* residuals) const { const Eigen::Matrix cam_from_rig_translation = world_from_rig_rot_.cast() * Eigen::Map>(cam_in_rig); Eigen::Map> residuals_vec(residuals); residuals_vec = cam_from_point3D_dir_.cast() - scale[0] * (Eigen::Map>(point3D) - Eigen::Map>(rig_in_world) - cam_from_rig_translation); return true; } static ceres::CostFunction* Create( const Eigen::Vector3d& cam_from_point3D_dir, const Eigen::Quaterniond& rig_from_world_rot) { return (new ceres::AutoDiffCostFunction( new RigBATAPairwiseDirectionCostFunctor(cam_from_point3D_dir, rig_from_world_rot))); } const Eigen::Vector3d cam_from_point3D_dir_; const Eigen::Quaterniond world_from_rig_rot_; }; } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/motion_averaging_test.cc000066400000000000000000000172541522646662000272040ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/cost_functions/motion_averaging.h" #include "colmap/util/eigen_matchers.h" #include namespace colmap { namespace { TEST(BATAPairwiseDirectionCostFunctor, ZeroResidual) { const Eigen::Vector3d pos1(1, 2, 3); const Eigen::Vector3d pos2(2, 3, 4); const double scale = 1.0; const Eigen::Vector3d direction = pos2 - pos1; BATAPairwiseDirectionCostFunctor cost_functor(direction); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor(pos1.data(), pos2.data(), &scale, residuals.data())); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-10)); } TEST(BATAPairwiseDirectionCostFunctor, NonZeroResidual) { const Eigen::Vector3d pos1(1, 2, 3); const Eigen::Vector3d pos2(4, 5, 6); const double scale = 2.0; const Eigen::Vector3d direction(1, 1, 1); BATAPairwiseDirectionCostFunctor cost_functor(direction); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor(pos1.data(), pos2.data(), &scale, residuals.data())); const Eigen::Vector3d expected_residuals = direction - scale * (pos2 - pos1); EXPECT_THAT(residuals, EigenMatrixNear(expected_residuals, 1e-10)); } TEST(BATAPairwiseDirectionCostFunctor, DifferentScale) { const Eigen::Vector3d pos1(1, 2, 3); const Eigen::Vector3d pos2(2, 4, 6); const double scale = 0.5; const Eigen::Vector3d direction = scale * (pos2 - pos1); BATAPairwiseDirectionCostFunctor cost_functor(direction); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor(pos1.data(), pos2.data(), &scale, residuals.data())); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-10)); } TEST(BATAPairwiseDirectionCostFunctor, Create) { const Eigen::Vector3d direction(1, 0, 0); std::unique_ptr cost_function( BATAPairwiseDirectionCostFunctor::Create(direction)); ASSERT_NE(cost_function, nullptr); } TEST(RigBATAPairwiseDirectionConstantRigCostFunctor, ZeroResidual) { const Eigen::Vector3d point3D(1, 2, 3); const Eigen::Vector3d rig_in_world(3, 2, 1); const double scale = 1.5; const Eigen::Vector3d cam_from_rig_dir(0.25, 0.5, 0.75); const Eigen::Vector3d cam_from_point3D_dir = scale * (point3D - rig_in_world + cam_from_rig_dir); RigBATAPairwiseDirectionConstantRigCostFunctor cost_functor( cam_from_point3D_dir, cam_from_rig_dir); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor( point3D.data(), rig_in_world.data(), &scale, residuals.data())); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-10)); } TEST(RigBATAPairwiseDirectionConstantRigCostFunctor, NonZeroResidual) { const Eigen::Vector3d point3D(3, 4, 5); const Eigen::Vector3d rig_in_world(1, 2, 3); const double scale = 2.0; const Eigen::Vector3d cam_from_rig_dir(0.1, 0.2, 0.3); const Eigen::Vector3d cam_from_point3D_dir(1, 1, 1); RigBATAPairwiseDirectionConstantRigCostFunctor cost_functor( cam_from_point3D_dir, cam_from_rig_dir); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor( point3D.data(), rig_in_world.data(), &scale, residuals.data())); const Eigen::Vector3d expected_residuals = cam_from_point3D_dir - scale * (point3D - rig_in_world + cam_from_rig_dir); EXPECT_THAT(residuals, EigenMatrixNear(expected_residuals, 1e-10)); } TEST(RigBATAPairwiseDirectionConstantRigCostFunctor, Create) { const Eigen::Vector3d cam_from_point3D_dir(1, 0, 0); const Eigen::Vector3d cam_from_rig_dir(0, 1, 0); std::unique_ptr cost_function( RigBATAPairwiseDirectionConstantRigCostFunctor::Create( cam_from_point3D_dir, cam_from_rig_dir)); ASSERT_NE(cost_function, nullptr); } TEST(RigBATAPairwiseDirectionCostFunctor, ZeroResidual) { const Eigen::Vector3d point3D(5, 5, 5); const Eigen::Vector3d rig_in_world(1, 1, 1); const Eigen::Vector3d cam_in_rig(0.5, 0.5, 0.5); const double scale = 1.0; const Eigen::Quaterniond rig_from_world_rot = Eigen::Quaterniond::Identity(); const Eigen::Vector3d cam_from_rig_dir = rig_from_world_rot.inverse() * cam_in_rig; const Eigen::Vector3d cam_from_point3D_dir = scale * (point3D - rig_in_world - cam_from_rig_dir); RigBATAPairwiseDirectionCostFunctor cost_functor(cam_from_point3D_dir, rig_from_world_rot); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor(point3D.data(), rig_in_world.data(), cam_in_rig.data(), &scale, residuals.data())); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-10)); } TEST(RigBATAPairwiseDirectionCostFunctor, NonZeroResidual) { const Eigen::Vector3d point3D(3, 4, 5); const Eigen::Vector3d rig_in_world(1, 2, 3); const Eigen::Vector3d cam_in_rig(0.2, 0.3, 0.4); const double scale = 2.0; const Eigen::Quaterniond rig_from_world_rot = Eigen::Quaterniond(0.707, 0.707, 0, 0).normalized(); const Eigen::Vector3d cam_from_point3D_dir(1, 1, 1); RigBATAPairwiseDirectionCostFunctor cost_functor(cam_from_point3D_dir, rig_from_world_rot); Eigen::Vector3d residuals; EXPECT_TRUE(cost_functor(point3D.data(), rig_in_world.data(), cam_in_rig.data(), &scale, residuals.data())); const Eigen::Vector3d cam_from_rig_dir = rig_from_world_rot.toRotationMatrix().transpose() * cam_in_rig; const Eigen::Vector3d expected_residuals = cam_from_point3D_dir - scale * (point3D - rig_in_world - cam_from_rig_dir); EXPECT_THAT(residuals, EigenMatrixNear(expected_residuals, 1e-10)); } TEST(RigBATAPairwiseDirectionCostFunctor, Create) { const Eigen::Vector3d cam_from_point3D_dir(1, 0, 0); const Eigen::Quaterniond rig_from_world_rot = Eigen::Quaterniond::Identity(); std::unique_ptr cost_function( RigBATAPairwiseDirectionCostFunctor::Create(cam_from_point3D_dir, rig_from_world_rot)); ASSERT_NE(cost_function, nullptr); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/pose_prior.h000066400000000000000000000165741522646662000246440ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/estimators/cost_functions/utils.h" #include "colmap/geometry/rigid3.h" #include #include #include namespace colmap { template inline void EigenQuaternionToAngleAxis(const T* eigen_quaternion, T* angle_axis) { const T quaternion[4] = {eigen_quaternion[3], eigen_quaternion[0], eigen_quaternion[1], eigen_quaternion[2]}; ceres::QuaternionToAngleAxis(quaternion, angle_axis); } // 6-DoF error on the absolute sensor pose. The residual is the log of the error // pose, splitting SE(3) into SO(3) x R^3. The residual is computed in the // sensor frame. Its first and last three components correspond to the rotation // and translation errors, respectively. struct AbsolutePosePriorCostFunctor : public AutoDiffCostFunctor { public: explicit AbsolutePosePriorCostFunctor(const Rigid3d& sensor_from_world_prior) : world_from_sensor_prior_(Inverse(sensor_from_world_prior)) {} template bool operator()(const T* const sensor_from_world, T* residuals_ptr) const { const Eigen::Quaternion param_from_prior_rotation = EigenQuaternionMap(sensor_from_world) * world_from_sensor_prior_.rotation().cast(); EigenQuaternionToAngleAxis(param_from_prior_rotation.coeffs().data(), residuals_ptr); Eigen::Map> param_from_prior_translation( residuals_ptr + 3); param_from_prior_translation = EigenVector3Map(sensor_from_world + 4) + EigenQuaternionMap(sensor_from_world) * world_from_sensor_prior_.translation().cast(); return true; } private: const Rigid3d world_from_sensor_prior_; }; // 3-DoF error on the sensor position in the world coordinate frame. struct AbsolutePosePositionPriorCostFunctor : public AutoDiffCostFunctor { public: explicit AbsolutePosePositionPriorCostFunctor( const Eigen::Vector3d& position_in_world_prior) : position_in_world_prior_(position_in_world_prior) {} template bool operator()(const T* const sensor_from_world, T* residuals_ptr) const { Eigen::Map> residuals(residuals_ptr); residuals = position_in_world_prior_.cast() + EigenQuaternionMap(sensor_from_world).inverse() * EigenVector3Map(sensor_from_world + 4); return true; } private: const Eigen::Vector3d position_in_world_prior_; }; // 3-DoF error on the rig sensor position in the world coordinate frame. struct AbsoluteRigPosePositionPriorCostFunctor : public AutoDiffCostFunctor { public: explicit AbsoluteRigPosePositionPriorCostFunctor( const Eigen::Vector3d& position_in_world_prior) : position_in_world_prior_(position_in_world_prior) {} template bool operator()(const T* const sensor_from_rig, const T* const rig_from_world, T* residuals_ptr) const { const Eigen::Quaternion sensor_from_world_rotation = EigenQuaternionMap(sensor_from_rig) * EigenQuaternionMap(rig_from_world); const Eigen::Matrix sensor_from_world_translation = EigenVector3Map(sensor_from_rig + 4) + EigenQuaternionMap(sensor_from_rig) * EigenVector3Map(rig_from_world + 4); Eigen::Map> residuals(residuals_ptr); residuals = position_in_world_prior_.cast() + sensor_from_world_rotation.inverse() * sensor_from_world_translation; return true; } private: const Eigen::Vector3d position_in_world_prior_; }; // 6-DoF error between two absolute camera poses based on a prior on their // relative pose, with identical scale for the translation. The residual is // computed in the frame of camera i. Its first and last three components // correspond to the rotation and translation errors, respectively. // // Derivation: // i_T_w = ΔT_i·i_T_j·j_T_w // where ΔT_i = exp(η_i) is the resjdual in SE(3) and η_i in tangent space. // Thus η_i = log(i_T_w·j_T_w�¹·j_T_i) // Rotation term: ΔR = log(i_R_w·j_R_w�¹·j_R_i) // Translation term: Δt = i_t_w + i_R_w·j_R_w�¹·(j_t_i -j_t_w) struct RelativePosePriorCostFunctor : public AutoDiffCostFunctor { public: explicit RelativePosePriorCostFunctor(const Rigid3d& i_from_j_prior) : j_from_i_prior_(Inverse(i_from_j_prior)) {} template bool operator()(const T* const i_from_world, const T* const j_from_world, T* residuals_ptr) const { const Eigen::Quaternion i_from_j_rotation = EigenQuaternionMap(i_from_world) * EigenQuaternionMap(j_from_world).inverse(); const Eigen::Quaternion param_from_prior_rotation = i_from_j_rotation * j_from_i_prior_.rotation().template cast(); EigenQuaternionToAngleAxis(param_from_prior_rotation.coeffs().data(), residuals_ptr); const Eigen::Matrix j_from_i_prior_translation = j_from_i_prior_.translation().cast() - EigenVector3Map(j_from_world + 4); Eigen::Map> param_from_prior_translation( residuals_ptr + 3); param_from_prior_translation = EigenVector3Map(i_from_world + 4) + i_from_j_rotation * j_from_i_prior_translation; return true; } private: const Rigid3d j_from_i_prior_; }; } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/pose_prior_test.cc000066400000000000000000000221441522646662000260270ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #include "colmap/estimators/cost_functions/pose_prior.h" #include "colmap/geometry/rigid3.h" #include "colmap/math/math.h" #include "colmap/util/eigen_matchers.h" #include namespace colmap { namespace { TEST(AbsolutePosePositionPriorCostFunctor, Nominal) { std::unique_ptr cost_function( AbsolutePosePositionPriorCostFunctor::Create(Eigen::Vector3d::Zero())); Rigid3d sensor_from_world = Rigid3d(Eigen::Quaterniond::Identity(), Eigen::Vector3d::Zero()); Eigen::Vector3d residuals = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); const double* parameters[1] = {sensor_from_world.params.data()}; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals.data(), nullptr)); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-6)); sensor_from_world = Rigid3d(Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); const Eigen::Vector3d position_in_world = Inverse(sensor_from_world).translation(); residuals = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); EXPECT_TRUE(cost_function->Evaluate(parameters, residuals.data(), nullptr)); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(-position_in_world), 1e-6)); cost_function.reset( AbsolutePosePositionPriorCostFunctor::Create(position_in_world)); residuals = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); EXPECT_TRUE(cost_function->Evaluate(parameters, residuals.data(), nullptr)); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-6)); } TEST(AbsoluteRigPosePositionPriorCostFunctor, Nominal) { std::unique_ptr cost_function( AbsoluteRigPosePositionPriorCostFunctor::Create(Eigen::Vector3d::Zero())); Rigid3d sensor_from_rig(Eigen::Quaterniond::Identity(), Eigen::Vector3d::Zero()); Rigid3d rig_from_world(Eigen::Quaterniond::Identity(), Eigen::Vector3d::Zero()); Eigen::Vector3d residuals = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); const double* parameters[2] = {sensor_from_rig.params.data(), rig_from_world.params.data()}; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals.data(), nullptr)); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-6)); sensor_from_rig = Rigid3d(Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); rig_from_world = Rigid3d(Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); const Rigid3d sensor_from_world = sensor_from_rig * rig_from_world; const Eigen::Vector3d position_in_world = Inverse(sensor_from_world).translation(); residuals = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); EXPECT_TRUE(cost_function->Evaluate(parameters, residuals.data(), nullptr)); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(-position_in_world), 1e-6)); cost_function.reset( AbsoluteRigPosePositionPriorCostFunctor::Create(position_in_world)); residuals = Eigen::Vector3d::Constant(std::numeric_limits::quiet_NaN()); EXPECT_TRUE(cost_function->Evaluate(parameters, residuals.data(), nullptr)); EXPECT_THAT(residuals, EigenMatrixNear(Eigen::Vector3d(0, 0, 0), 1e-6)); } TEST(AbsolutePosePriorCostFunctor, Nominal) { const Rigid3d cam_from_world_prior; std::unique_ptr cost_function( AbsolutePosePriorCostFunctor::Create(cam_from_world_prior)); double cam_from_world[7] = {0, 0, 0, 1, 0, 0, 0}; double residuals[6]; const double* parameters[1] = {cam_from_world}; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_EQ(residuals[0], 0); EXPECT_EQ(residuals[1], 0); EXPECT_EQ(residuals[2], 0); EXPECT_EQ(residuals[3], 0); EXPECT_EQ(residuals[4], 0); EXPECT_EQ(residuals[5], 0); cam_from_world[4] = 1; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_EQ(residuals[0], 0); EXPECT_EQ(residuals[1], 0); EXPECT_EQ(residuals[2], 0); EXPECT_EQ(residuals[3], 1); EXPECT_EQ(residuals[4], 0); EXPECT_EQ(residuals[5], 0); // Rotation by 90 degrees around the Y axis. Eigen::Matrix3d rotation_matrix; rotation_matrix << 0, 0, 1, 0, 1, 0, -1, 0, 0; Eigen::Map(static_cast(cam_from_world)) = rotation_matrix; cam_from_world[5] = 2; cam_from_world[6] = 3; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_NEAR(residuals[0], 0, 1e-6); EXPECT_NEAR(residuals[1], DegToRad(90.0), 1e-6); EXPECT_NEAR(residuals[2], 0, 1e-6); EXPECT_NEAR(residuals[3], 1, 1e-6); EXPECT_NEAR(residuals[4], 2, 1e-6); EXPECT_NEAR(residuals[5], 3, 1e-6); } TEST(RelativePosePriorCostFunctor, Nominal) { Rigid3d i_from_j_prior(Eigen::Quaterniond::Identity(), Eigen::Vector3d(0, 0, -1)); std::unique_ptr cost_function( RelativePosePriorCostFunctor::Create(i_from_j_prior)); double i_from_world[7] = {0, 0, 0, 1, 0, 0, 0}; double j_from_world[7] = {0, 0, 0, 1, 0, 0, 1}; double residuals[6]; const double* parameters[2] = {i_from_world, j_from_world}; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_EQ(residuals[0], 0); EXPECT_EQ(residuals[1], 0); EXPECT_EQ(residuals[2], 0); EXPECT_EQ(residuals[3], 0); EXPECT_EQ(residuals[4], 0); EXPECT_EQ(residuals[5], 0); i_from_world[6] = 4; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_EQ(residuals[0], 0); EXPECT_EQ(residuals[1], 0); EXPECT_EQ(residuals[2], 0); EXPECT_EQ(residuals[3], 0); EXPECT_EQ(residuals[4], 0); EXPECT_EQ(residuals[5], 4); j_from_world[4] = 2; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_EQ(residuals[0], 0); EXPECT_EQ(residuals[1], 0); EXPECT_EQ(residuals[2], 0); EXPECT_EQ(residuals[3], -2); EXPECT_EQ(residuals[4], 0); EXPECT_EQ(residuals[5], 4); // Rotation by 90 degrees around the Y axis. Eigen::Matrix3d rotation_matrix; rotation_matrix << 0, 0, 1, 0, 1, 0, -1, 0, 0; Eigen::Map(static_cast(j_from_world)) = rotation_matrix; EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_NEAR(residuals[0], 0, 1e-6); EXPECT_NEAR(residuals[1], DegToRad(-90.0), 1e-6); EXPECT_NEAR(residuals[2], 0, 1e-6); EXPECT_NEAR(residuals[3], 0, 1e-6); EXPECT_NEAR(residuals[4], 0, 1e-6); EXPECT_NEAR(residuals[5], 2, 1e-6); } TEST(CovarianceWeightedCostFunctor, AbsolutePosePositionPriorCostFunctor) { const Rigid3d cam_from_world(Eigen::Quaterniond::UnitRandom(), Eigen::Vector3d::Random()); const Rigid3d world_from_cam = Inverse(cam_from_world); double residuals[3]; const double* parameters[1] = {cam_from_world.params.data()}; std::unique_ptr cost_function( CovarianceWeightedCostFunctor:: Create(2 * Eigen::Matrix3d::Identity(), Eigen::Vector3d::Zero())); EXPECT_TRUE(cost_function->Evaluate(parameters, residuals, nullptr)); EXPECT_NEAR(residuals[0], -0.5 * std::sqrt(2) * world_from_cam.translation()[0], 1e-6); EXPECT_NEAR(residuals[1], -0.5 * std::sqrt(2) * world_from_cam.translation()[1], 1e-6); EXPECT_NEAR(residuals[2], -0.5 * std::sqrt(2) * world_from_cam.translation()[2], 1e-6); } } // namespace } // namespace colmap colmap-4.1.1/src/colmap/estimators/cost_functions/reprojection_error.h000066400000000000000000000412731522646662000263710ustar00rootroot00000000000000// Copyright (c), ETH Zurich and UNC Chapel Hill. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // // * Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of // its contributors may be used to endorse or promote products derived // from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. #pragma once #include "colmap/estimators/cost_functions/utils.h" #include "colmap/geometry/rigid3.h" #include "colmap/sensor/models.h" #include #include #include namespace colmap { // Periodic (azimuthal) camera models such as EQUIRECTANGULAR wrap the x image // coordinate at the ±π seam, so a raw pixel residual can jump by ~width across // the seam (e.g. an observation at x ≈ 0 whose 3D point reprojects to // x ≈ width). Wrap the x-residual into [-width/2, width/2) so the // bundle-adjustment cost stays continuous across the seam. The offset is // locally constant, so it does not perturb the residual's derivatives. No-op // for non-periodic camera models. (Elevation has no wrap, so y is untouched.) template inline void WrapEquirectangularHorizontalSeam(const T* camera_params, T* residuals) { if constexpr (CameraModel::model_id == CameraModelId::kEquirectangular) { const T width = camera_params[0]; residuals[0] -= width * ceres::floor(residuals[0] / width + T(0.5)); } } // Rotates the point and computes the Jacobian of R(q) * p with respect to Eigen // quaternions. J_out is a 3x4 matrix in row-major order. inline Eigen::Vector3d QuaternionRotatePointWithJac(const double* q, const double* pt, double* J_out) { const double qx = q[0], qy = q[1], qz = q[2], qw = q[3]; const double px = pt[0], py = pt[1], pz = pt[2]; // Common sub-expressions. const double qx_py = qx * py; const double qx_pz = qx * pz; const double qy_px = qy * px; const double qy_pz = qy * pz; const double qz_px = qz * px; const double qz_py = qz * py; // R(q) * p using the formula: p' = p + 2*w*(v x p) + 2*(v x (v x p)), // where v = (qx, qy, qz) is the imaginary part and w = qw is the scalar. // First compute v x p. const double v_x_p0 = qy_pz - qz_py; const double v_x_p1 = qz_px - qx_pz; const double v_x_p2 = qx_py - qy_px; // Then compute v x (v x p). const double v_x_v_x_p0 = qy * v_x_p2 - qz * v_x_p1; const double v_x_v_x_p1 = qz * v_x_p0 - qx * v_x_p2; const double v_x_v_x_p2 = qx * v_x_p1 - qy * v_x_p0; // p' = p + 2*w*(v x p) + 2*(v x (v x p)). Eigen::Vector3d pt_out(px + 2.0 * (qw * v_x_p0 + v_x_v_x_p0), py + 2.0 * (qw * v_x_p1 + v_x_v_x_p1), pz + 2.0 * (qw * v_x_p2 + v_x_v_x_p2)); if (J_out) { // Jacobian d(R*p) / dq for Eigen quaternions (x, y, z, w). // Must use the ORIGINAL point (px, py, pz), not the rotated point. // Common sub-expressions. const double qx_px = qx * px; const double qx_pz = qx * pz; const double qy_px = qy * px; const double qy_py = qy * py; const double qz_pz = qz * pz; const double qw_px = qw * px; const double qw_py = qw * py; const double qw_pz = qw * pz; // d(R*p)_x / d(x,y,z,w) J_out[0] = 2.0 * (qy_py + qz_pz); J_out[1] = 2.0 * (-2.0 * qy_px + qx_py + qw_pz); J_out[2] = 2.0 * (-2.0 * qz_px - qw_py + qx_pz); J_out[3] = 2.0 * (-qz_py + qy_pz); // d(R*p)_y / d(x,y,z,w) J_out[4] = 2.0 * (qy_px - 2.0 * qx_py - qw_pz); J_out[5] = 2.0 * (qx_px + qz_pz); J_out[6] = 2.0 * (qw_px - 2.0 * qz_py + qy_pz); J_out[7] = 2.0 * (qz_px - qx_pz); // d(R*p)_z / d(x,y,z,w) J_out[8] = 2.0 * (qz_px + qw_py - 2.0 * qx_pz); J_out[9] = 2.0 * (-qw_px + qz_py - 2.0 * qy_pz); J_out[10] = 2.0 * (qx_px + qy_py); J_out[11] = 2.0 * (-qy_px + qx_py); } return pt_out; } // Full reprojection error cost function with analytical Jacobians. // Requires camera model to implement ImgFromCamWithJac(). template class AnalyticalReprojErrorCostFunction : public ceres::SizedCostFunction<2, 3, 7, CameraModel::num_params> { public: explicit AnalyticalReprojErrorCostFunction(const Eigen::Vector2d& point2D) : point2D_(point2D) {} bool Evaluate(double const* const* parameters, double* residuals, double** jacobians) const override { const double* point3D_in_world = parameters[0]; const double* cam_from_world = parameters[1]; const double* camera_params = parameters[2]; double* J_point = jacobians ? jacobians[0] : nullptr; double* J_pose = jacobians ? jacobians[1] : nullptr; double* J_params = jacobians ? jacobians[2] : nullptr; Eigen::Map residuals_vec(residuals); Eigen::Map> J_point_mat( J_point); Eigen::Map> J_pose_mat(J_pose); Eigen::Map< Eigen::Matrix> J_params_mat(J_params); Eigen::Matrix J_Rp_quat_mat; Eigen::Matrix J_uvw_mat; const Eigen::Vector3d point3D_in_cam = QuaternionRotatePointWithJac(cam_from_world, point3D_in_world, J_pose ? J_Rp_quat_mat.data() : nullptr) + Eigen::Map(cam_from_world + 4); if (!CameraModel::ImgFromCamWithJac( camera_params, point3D_in_cam[0], point3D_in_cam[1], point3D_in_cam[2], &residuals[0], &residuals[1], J_params, (J_point || J_pose) ? J_uvw_mat.data() : nullptr)) { residuals_vec.setZero(); if (J_pose) { J_pose_mat.setZero(); } if (J_point) { J_point_mat.setZero(); } if (J_params) { J_params_mat.setZero(); } return true; } residuals_vec -= point2D_; // No-op for non-periodic models. The offset is locally constant, so the // analytic Jacobians below are unaffected. WrapEquirectangularHorizontalSeam(camera_params, residuals); if (J_point) { J_point_mat = J_uvw_mat * EigenQuaternionMap(cam_from_world).toRotationMatrix(); } if (J_pose) { J_pose_mat.leftCols<4>() = J_uvw_mat * J_Rp_quat_mat; J_pose_mat.rightCols<3>() = J_uvw_mat; } return true; } private: const Eigen::Vector2d point2D_; }; // Standard bundle adjustment cost function for variable // camera pose, calibration, and point parameters. template class ReprojErrorCostFunctor : public AutoDiffCostFunctor, 2, 3, 7, CameraModel::num_params> { public: explicit ReprojErrorCostFunctor(const Eigen::Vector2d& point2D) : point2D_(point2D) {} template bool operator()(const T* const point3D_in_world, const T* const cam_from_world, const T* const camera_params, T* residuals) const { const Eigen::Matrix point3D_in_cam = EigenQuaternionMap(cam_from_world) * EigenVector3Map(point3D_in_world) + EigenVector3Map(cam_from_world + 4); Eigen::Map> residuals_vec(residuals); if (CameraModel::ImgFromCam(camera_params, point3D_in_cam[0], point3D_in_cam[1], point3D_in_cam[2], &residuals[0], &residuals[1])) { residuals_vec -= point2D_.cast(); WrapEquirectangularHorizontalSeam(camera_params, residuals); } else { residuals_vec.setZero(); } return true; } private: const Eigen::Vector2d point2D_; }; // Bundle adjustment cost function for variable // camera calibration and point parameters, and fixed camera pose. template class ReprojErrorConstantPoseCostFunctor : public AutoDiffCostFunctor< ReprojErrorConstantPoseCostFunctor, 2, 3, CameraModel::num_params> { public: ReprojErrorConstantPoseCostFunctor(const Eigen::Vector2d& point2D, const Rigid3d& cam_from_world) : cam_from_world_(cam_from_world), reproj_cost_(point2D) {} template bool operator()(const T* const point3D_in_world, const T* const camera_params, T* residuals) const { const Eigen::Matrix cam_from_world = cam_from_world_.params.cast(); return reproj_cost_( point3D_in_world, cam_from_world.data(), camera_params, residuals); } private: const Rigid3d cam_from_world_; const ReprojErrorCostFunctor reproj_cost_; }; // Bundle adjustment cost function for variable // camera pose and calibration parameters, and fixed point. template class ReprojErrorConstantPoint3DCostFunctor : public AutoDiffCostFunctor< ReprojErrorConstantPoint3DCostFunctor, 2, 7, CameraModel::num_params> { public: ReprojErrorConstantPoint3DCostFunctor(const Eigen::Vector2d& point2D, const Eigen::Vector3d& point3D_in_world) : point3D_in_world_(point3D_in_world), reproj_cost_(point2D) {} template bool operator()(const T* const cam_from_world, const T* const camera_params, T* residuals) const { const Eigen::Matrix point3D_in_world = point3D_in_world_.cast(); return reproj_cost_( point3D_in_world.data(), cam_from_world, camera_params, residuals); } private: const Eigen::Vector3d point3D_in_world_; const ReprojErrorCostFunctor reproj_cost_; }; // Rig bundle adjustment cost function for variable camera pose and calibration // and point parameters. Different from the standard bundle adjustment function, // this cost function is suitable for camera rigs with consistent relative poses // of the cameras within the rig. The cost function first projects points into // the local system of the camera rig and then into the local system of the // camera within the rig. template class RigReprojErrorCostFunctor : public AutoDiffCostFunctor, 2, 3, 7, 7, CameraModel::num_params> { public: explicit RigReprojErrorCostFunctor(const Eigen::Vector2d& point2D) : point2D_(point2D) {} template bool operator()(const T* const point3D_in_world, const T* const cam_from_rig, const T* const rig_from_world, const T* const camera_params, T* residuals) const { const Eigen::Matrix point3D_in_cam = EigenQuaternionMap(cam_from_rig) * (EigenQuaternionMap(rig_from_world) * EigenVector3Map(point3D_in_world) + EigenVector3Map(rig_from_world + 4)) + EigenVector3Map(cam_from_rig + 4); Eigen::Map> residuals_vec(residuals); if (CameraModel::ImgFromCam(camera_params, point3D_in_cam[0], point3D_in_cam[1], point3D_in_cam[2], &residuals[0], &residuals[1])) { residuals_vec -= point2D_.cast(); WrapEquirectangularHorizontalSeam(camera_params, residuals); } else { residuals_vec.setZero(); } return true; } private: const Eigen::Vector2d point2D_; }; // Rig bundle adjustment cost function for variable camera pose and camera // calibration and point parameters but fixed rig extrinsic poses. template class RigReprojErrorConstantRigCostFunctor : public AutoDiffCostFunctor< RigReprojErrorConstantRigCostFunctor, 2, 3, 7, CameraModel::num_params> { public: RigReprojErrorConstantRigCostFunctor(const Eigen::Vector2d& point2D, const Rigid3d& cam_from_rig) : cam_from_rig_(cam_from_rig), reproj_cost_(point2D) {} template bool operator()(const T* const point3D_in_world, const T* const rig_from_world, const T* const camera_params, T* residuals) const { const Eigen::Matrix cam_from_rig = cam_from_rig_.params.cast(); return reproj_cost_(point3D_in_world, cam_from_rig.data(), rig_from_world, camera_params, residuals); } private: const Rigid3d cam_from_rig_; const RigReprojErrorCostFunctor reproj_cost_; }; // Creates the analytical reprojection error cost function for camera models // that implement ImgFromCamWithJac(). The overloads are selected via SFINAE so // that AnalyticalReprojErrorCostFunction is only ever named (and // thus instantiated) for qualifying models. This avoids instantiating its // virtual Evaluate() member for models without an analytical Jacobian, which // would reference the SFINAE-disabled ImgFromCamWithJac() overload. template std::enable_if_t CreateAnalyticalReprojErrorCostFunction(Args&&... args) { return new AnalyticalReprojErrorCostFunction( std::forward(args)...); } template std::enable_if_t CreateAnalyticalReprojErrorCostFunction(Args&&... /*args*/) { // Unreachable: callers guard on has_img_from_cam_with_jac. return nullptr; } template