pax_global_header00006660000000000000000000000064152354666110014523gustar00rootroot0000000000000052 comment=1e4c15029afd5c862557cfe2c1bc564733be04ad lektor-lektor-1e4c150/000077500000000000000000000000001523546661100146455ustar00rootroot00000000000000lektor-lektor-1e4c150/.codecov.yml000066400000000000000000000002741523546661100170730ustar00rootroot00000000000000# https://codecov.io/gh/lektor/lektor/ comment: false coverage: precision: 2 range: - 70.0 - 100.0 round: down status: changes: false patch: true project: true lektor-lektor-1e4c150/.editorconfig000066400000000000000000000011031523546661100173150ustar00rootroot00000000000000# -*- mode: conf-unix; -*- # EditorConfig is awesome: http://EditorConfig.org # top-most EditorConfig file root = true # defaults [*] end_of_line = lf insert_final_newline = true indent_style = space [*.{ini,py,rst}] indent_size = 4 trim_trailing_whitespace = true max_line_length = 88 [*.{js,jsx,ts,tsx,json}] indent_size = 2 [*.{html,css,scss}] indent_size = 2 trim_trailing_whitespace = true [*.yml] indent_size = 2 trim_trailing_whitespace = true [*.toml] indent_size = 4 trim_trailing_whitespace = true [Makefile] indent_style = tab trim_trailing_whitespace = true lektor-lektor-1e4c150/.git-blame-ignore-revs000066400000000000000000000016451523546661100207530ustar00rootroot00000000000000# Since version 2.23 (released in August 2019), git-blame has a feature # to ignore or bypass certain commits. # # This file contains a list of commits that are not likely what you # are looking for in a blame, such as mass reformatting or renaming. # You can set this file as a default ignore file for blame by running # the following command. # # $ git config blame.ignoreRevsFile .git-blame-ignore-revs # 2021-09-18 - update pylint #19486da795ba5dff7a8abf39302e3ec2c6429dd0 # (commented out due to non-cosmetic changes related to adding explict # encoding arguments.) # 2021-02-06 - remove useless object inheritance from classes 3ae5397f4b7344cdd2a745d458e19b8dfe9be2e1 # 2020-11-12 - js: reformat all files with prettier 7d83658c4fc95b3dc6dc7f8fa3d16e5a471c944f # 2020-10-23 - Beautify code again (#823) 3faff8fae62604dcc234b9c2cd22588592c5572b # 2020-03-28 - lint: update standard caffd8a1259e8aa82635306c522cefd42dca857f lektor-lektor-1e4c150/.github/000077500000000000000000000000001523546661100162055ustar00rootroot00000000000000lektor-lektor-1e4c150/.github/PULL_REQUEST_TEMPLATE.md000066400000000000000000000017761523546661100220210ustar00rootroot00000000000000 ### Issue(s) Resolved Fixes # ### Related Issues / Links ### Description of Changes - [ ] Wrote at least one-line docstrings (for any new functions) - [ ] Added unit test(s) covering the changes (if testable) - [ ] Included a screenshot or animation (if affecting the UI, see [Licecap](https://www.cockos.com/licecap/)) - [ ] Link to corresponding documentation pull request for [getlektor.com](https://github.com/lektor/lektor-website) lektor-lektor-1e4c150/.github/workflows/000077500000000000000000000000001523546661100202425ustar00rootroot00000000000000lektor-lektor-1e4c150/.github/workflows/ci.yml000066400000000000000000000125431523546661100213650ustar00rootroot00000000000000name: Tests master on: # This avoids having duplicate builds for a pull request push: branches: - master - "*-maintenance" pull_request: branches: - master - "*-maintenance" jobs: ############################################################################ # Lint jobs ############################################################################ lint: name: lint runs-on: ubuntu-latest strategy: fail-fast: false steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: "lts/*" cache: "npm" cache-dependency-path: "**/package-lock.json" - name: Install node dependencies run: make frontend/node_modules - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: # pylint==2.11.1 (pinned in tox.ini) will only run with python <=3.10 python-version: "3.10" cache: "pip" cache-dependency-path: "**/setup.cfg" - uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 with: path: ~/.cache/pre-commit key: pre-commit|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }} - name: Install python dependencies id: pip run: | python -m pip install --upgrade pip python -m pip install tox pre-commit python -m pip freeze --local - name: Run pylint run: tox -e lint - name: Run pre-commit # run pre-commit check even if pylint check fails if: steps.pip.outcome == 'success' run: pre-commit run --show-diff-on-failure --color=always --all-files ############################################################################ # Node tests ############################################################################ node: name: ${{ matrix.os}} node-${{ matrix.node }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: node: ["lts/*"] os: ["ubuntu-latest", "macos-latest", "windows-latest"] include: - node: "current" os: "ubuntu-latest" steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: ${{ matrix.node }} cache: "npm" cache-dependency-path: "**/package-lock.json" - name: Build frontend run: make - name: Typecheck and run frontend tests run: make test-js ############################################################################ # Python tests ############################################################################ python-tests: name: ${{ matrix.os }} py${{ matrix.python }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: ["ubuntu-latest"] python: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"] include: - python: "3.8" os: "macos-latest" - python: "3.14" os: "macos-latest" - python: "3.8" os: "windows-latest" - python: "3.14" os: "windows-latest" - python: "3.14" install-imagemagick: true steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: ${{ matrix.python }} cache: "pip" cache-dependency-path: "**/setup.cfg" - name: Install macOS system dependencies if: startsWith(runner.os, 'macos') && matrix.install-imagemagick run: brew install imagemagick ffmpeg - name: Install Windows system dependencies if: startsWith(runner.os, 'windows') && matrix.install-imagemagick shell: pwsh run: | choco install --no-progress --timeout 600 imagemagick.app ffmpeg # The imagemagick.app package, for whatever reason, installs # magick.exe into a directory which is not in the default # search path. Currently, it seems to get installed in a # directory named something like: # # "C:\Program Files\ImageMagick-7.1.0-Q16-HDRI" $ImDirs = ( Get-ChildItem $env:ProgramFiles 'ImageMagick*' -Directory | Select-Object -ExpandProperty FullName ) if ($ImDirs.Length -eq 0) { Throw "Could not find path to ImageMagick" } $ImDirs | Out-File $env:GITHUB_PATH utf8 -Append $ImDirs | % { "::notice title=ImageMagick::ImageMagick installed at $_" } continue-on-error: true - name: Install python dependencies run: | python -m pip install --upgrade pip python -m pip install tox tox-gh-actions coverage[toml] - name: Run python tests run: tox - name: Generate coverage.xml shell: bash run: | coverage combine --append || true coverage xml - name: Publish coverage data to codecov uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 with: token: ${{ secrets.CODECOV_TOKEN }} lektor-lektor-1e4c150/.github/workflows/publish.yml000066400000000000000000000020151523546661100224310ustar00rootroot00000000000000name: Upload Python Package on tags on: push: tags: - "v*" jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: fetch-depth: 0 - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 with: python-version: 3.x - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: "lts/*" - name: Build frontend run: | (cd frontend && npm ci) make - name: Install dependencies run: python -m pip install tox twine - name: Double-check that git status is clean run: test -z "$(git status --porcelain)" - name: Build release artifacts run: tox -e build-dist - name: Publish release env: TWINE_USERNAME: __token__ TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | python -m twine upload dist/* lektor-lektor-1e4c150/.gitignore000066400000000000000000000003131523546661100166320ustar00rootroot00000000000000.DS_Store *~ *.pyc *.egg-info *.pex .cache #* build dist venv lektor/admin/static example-project coverage/ .coverage .coverage.* coverage.xml coverage.lcov .nyc_output .pytest_cache .tox node_modules lektor-lektor-1e4c150/.pre-commit-config.yaml000066400000000000000000000016421523546661100211310ustar00rootroot00000000000000repos: - repo: https://github.com/ambv/black # NB: Using any black past 23.12.1 results in conflict between # black and reorder-python-imports. # See https://github.com/psf/black/issues/4175 rev: "23.12.1" hooks: - id: black - repo: https://github.com/asottile/reorder_python_imports rev: "v3.16.0" hooks: - id: reorder-python-imports - repo: https://github.com/pycqa/flake8 rev: "7.3.0" hooks: - id: flake8 language_version: python3 - repo: local hooks: - id: eslint name: eslint language: unsupported_script entry: ./frontend/node_modules/eslint/bin/eslint.js --fix --max-warnings 0 files: \.(ts|tsx)$ - id: prettier name: prettier language: unsupported_script entry: ./frontend/node_modules/prettier/bin-prettier.js --write --list-different files: \.(ts|tsx|js|less|ya?ml|md)$ lektor-lektor-1e4c150/CHANGES.md000066400000000000000000000765131523546661100162530ustar00rootroot00000000000000# Changelog These are all the changes in Lektor since the first public release. ## 3.3.14 (2026-08-07) ### Vulnerabilities Fixed - Fix directory traversal vulnerability. When running on Windows, it was possible to write outside of the project's `content` sub-directory via the admin API. Thank you to Arpit Jain (@arpitjain099) for the detailed report. ## 3.3.13 (2026-02-10) Lucky 13! This release addresses various pieces of bit-rot. (PR[#1248]) ### Breaking Changes - Drop support for long-since-EOLed python 3.6 and 3.7. ### Features - Test under python 3.13 and 3.14 ### Fixes - Pin `setuptools<81` to address the removal of `pkg_resources` from `setuptools`. - Fix "unclosed database" warnings. (Backport [#1242]) - Fix a few brittle tests (`test_new_theme_varying_names`, `test_no_reference_cycle_in_environment`, `test_datetime_timezone_est`). [#1242]: https://github.com/lektor/lektor/pull/1242 [#1248]: https://github.com/lektor/lektor/pull/1248 ## 3.3.12 (2024-08-18) - Test under python 3.12 - Fix the admin API so that the `/matchurl` endpoint doesn't fail with an exception when passwed a URL to a non-Record artifact (e.g. a VirtualSourceObject). ## 3.3.11 (2024-02-27) ### Security Prior to this release it was possible to create files outside of the `content` tree using the admin API. (Normally, the admin API should not be made accessible to untrusted parties, since the point of the API to to allow for editing of the Lektor project content.) - Better sanitation of DB file paths, better validation of path passed to `make_editor_session`. ([#1180]) - Better validation of API parameters. ([#1182]) [#1180]: https://github.com/lektor/lektor/pull/1180 [#1182]: https://github.com/lektor/lektor/pull/1182 ## 3.3.10 (2023-05-05) - Address recent deprecations of various bits of `werkzeug.urls`, avoiding use of the deprecated functions where possible. ([#1144], [#1142]) - Pin `werkzeug<2.41`. Since the deprecated `werkzeug.urls.URL` is part of our Publisher API, we can not disuse that without changing public API. ([#1144]) [#1142]: https://github.com/lektor/lektor/issues/1142 [#1144]: https://github.com/lektor/lektor/pull/1144 ## 3.3.9 (2023-04-16) ### Bit-Rot - Fix installation of local plugins (from the `packages/` subdirectory). This was broken by release 23.1 of `pip` which dropped support for the `--install-option` flag to `pip install`. ([#1129], [#1127]) ### Bugs - Implement better input validation for the date/time-formatting jinja filters. Prior to this, passing a `jinja2.Undefined` value to the `date`, `time`, or `datetime` filters would elicit an assertion error. ([#1122], [#1121]) - Fix for spurious rebuilds. Recent versions of watchdog (>=2.3.0) enabled tracking of IN_OPEN events. These fire when a file is opened — even just for reading. Now we're pickier about only responding to events that indicate file modifications. ([#1117]) [#1117]: https://github.com/lektor/lektor/pull/1117 [#1121]: https://github.com/lektor/lektor/issues/1121 [#1122]: https://github.com/lektor/lektor/pull/1122 [#1127]: https://github.com/lektor/lektor/issues/1127 [#1129]: https://github.com/lektor/lektor/pull/1129 ## 3.3.8 (2023-02-28) Test under python 3.11. ([#1084][]) ### Bugs Fixed #### Plugins - `PluginController.emit` would, under certain circumstances, silently ignore `TypeError`s thrown by plugin hook methods. ([#1086][], [#1085][]) #### Packaging - List all directly imported packages as dependencies. Fixes [#1109][]. [#1084]: https://github.com/lektor/lektor/pull/1084 [#1085]: https://github.com/lektor/lektor/issues/1085 [#1086]: https://github.com/lektor/lektor/pull/1086 [#1109]: https://github.com/lektor/lektor/issues/1109 ## 3.3.7 (2022-09-21) ### Bugs #### Dev Server - Remove frontend javascript rebuild machinery altogether. Since the frontend source code is not included in distributed Lektor wheels this was breaking `LEKTOR_DEV` functionality for all but those running Lektor from git. ([#1072][]) [#1072]: https://github.com/lektor/lektor/pull/1072 ## 3.3.6 (2022-07-27) ### Changes #### Admin Frontend - The _save_ hotkey (`-s`) now always switches to the _preview_ view. Previously, the _save_ hotkey was disabled unless there were changes to be saved. ([#1022][]) ### Bugs #### Admin Frontend - Fix for spurious page scrolling when typing in textareas. ([#1038][], [#1050][]) - Make `size = {small|large}` field option work again. ([#1022][]) - Fix the _edit_ (`-e`) hotkey. ([#1022][]) - Handle hotkeys when the preview iframe has the focus. ([#1022][]) #### Dev Server - Fix building of javascript when devserver is run with `LEKTOR_DEV` set. Broken since Lektor 3.3.2 by PR [#1003][]. [#1022]: https://github.com/lektor/lektor/issues/1022 [#1038]: https://github.com/lektor/lektor/issues/1038 [#1050]: https://github.com/lektor/lektor/pull/1050 ## 3.3.5 (2022-07-18) ### Bugs #### Admin Server - Fix 404 from `/admin`. ([#1043][], [#1044][]) [#1043]: https://github.com/lektor/lektor/issues/1043 [#1044]: https://github.com/lektor/lektor/pull/1044 ## 3.3.4 (2022-05-02) ### Bugs #### Bit-rot - Fixes for `click==8.1.3`. ([#1031][], [#1033][]) [#1031]: https://github.com/lektor/lektor/issues/1031 [#1033]: https://github.com/lektor/lektor/pull/1033 ## 3.3.3 (2022-03-29) ### Bugs #### Bit-rot - Fixes for `werkzeug>=2.1.0`. ([#1019][], [#1018][]) #### CI - Update pre-commit config to use `black==22.3.0` to avoid breakage caused by `click>=8.1.0`. ([#1019][]) [#1018]: https://github.com/lektor/lektor/issues/1018 [#1019]: https://github.com/lektor/lektor/pull/1019 ## 3.3.2 (2022-03-01) ### Features #### Command Line - Enabled the [Jinja debug extension][jinja-dbg-ext] when the `LEKTOR_DEV` env var is set to 1 and `lektor server` is used. ([#984][]) ### License - The wording in the LICENSE file was standardized to that of the current [BSD 3-Clause License][bsd]. ([#972][]) ### Bugs #### Markdown Renderer - Fix overzealous HTML-entity escaping of link and image attributes. ([#989][]) #### Admin API - Fix a bug in `make_editor_session` when editing non-existant pages with a non-primary alt. ([#964][]) - Fix the ability to add an initial flowblock to a page. (Broken in 3.3.1.) - Refactor API views to move business logic back into the `Tree` adapter ([#967][]). This fixes [#962][]. #### Admin UI - Changed the structure of the URLs used by the GUI single-page app ([#976][]). This fixes problems with the "edit" pencil when using alternatives ([#975][]), and issues when page ids include colons ([#610][]). - Other React refactors and fixes ([#988][]). #### Database - Fix `Attachment.url_path` when _alternatives_ are in use. There is only one copy of each attachment emitted — the `url_path` should always be that corresponding to the _primary alternative_. ([#958][]) - `Pad.get`, if not passed an explicit value for the `alt` parameter, now returns the record for the _primary alternative_ rather than the fallback record. Similarly, `Pad.root` now returns the root record for the _primary alternative_. ([#958][], [#965][]) - Fix for uncaught `OSError(error=EINVAL)` on Windows when `Pad.get` was called with a path containing characters which are not allowed in Windows filenames (e.g. `<>*?|\/":`). #### Builder - Pages now record a build dependency on their datamodel `.ini` file. - Fix sqlite version detection so that we use "without rowid" optimization with current versions of sqlite. ([#1002][]) #### Command Line - When running `lektor dev new-theme`: fix check for ability to create symlinks under Windows. ([#996][]) - Fix _rsync_ publisher when deletion enabled on macOS. ([#946][], [#954][]) #### Tests - Fix for test failures when git is not installed. ([#998][], [#1000][]) ### Refactorings - Cleaned up `EditorSession` to split mapping methods (for access to record data) to a separate class, now available as `EditorSession.data`. ([#969][]) #### Testing - Cleaned up and moved our `pylint` and `coverage` configuration to `pyproject.toml`. ([#990][], [#991][]) #### Admin UI - Move frontend source from `lektor/admin/static/` to `frontend/`. Compiled frontend code moved from `lektor/admin/static/gen/` to 'lektor/admin/static/`. ([#1003][]) #### Packaging - Omit `example` subdirectory, frontend source code, developer-centric config files, as well as other assorted cruft from sdist. ([#986][]) [bsd]: https://opensource.org/licenses/BSD-3-Clause [#610]: https://github.com/lektor/lektor/issues/610 [#946]: https://github.com/lektor/lektor/issues/946 [#954]: https://github.com/lektor/lektor/pull/954 [#958]: https://github.com/lektor/lektor/pull/958 [#962]: https://github.com/lektor/lektor/issues/962 [#964]: https://github.com/lektor/lektor/pull/964 [#965]: https://github.com/lektor/lektor/issues/965 [#967]: https://github.com/lektor/lektor/pull/967 [#969]: https://github.com/lektor/lektor/pull/969 [#972]: https://github.com/lektor/lektor/pull/972 [#975]: https://github.com/lektor/lektor/issues/975 [#976]: https://github.com/lektor/lektor/pull/976 [#984]: https://github.com/lektor/lektor/pull/984 [#986]: https://github.com/lektor/lektor/pull/986 [#988]: https://github.com/lektor/lektor/pull/988 [#989]: https://github.com/lektor/lektor/pull/989 [#990]: https://github.com/lektor/lektor/pull/990 [#991]: https://github.com/lektor/lektor/pull/991 [#996]: https://github.com/lektor/lektor/pull/996 [#998]: https://github.com/lektor/lektor/issues/998 [#1000]: https://github.com/lektor/lektor/pull/1000 [#1002]: https://github.com/lektor/lektor/pull/1002 [#1003]: https://github.com/lektor/lektor/pull/1003 [jinja-dbg-ext]: https://jinja.palletsprojects.com/en/latest/extensions/#debug-extension ## 3.3.1 (2022-01-09) ### Bugs Fixed - Fixed an import cycle which caused in `ImportError` if `lektor.types` was imported before `lektor.environemnt`. [#974][] #### Deprecations - Disuse deprecated `Thread.setDaemon()`. [#979][] #### Admin UI - Fix spastic scroll behavior when editing flow elements. [#640][] - Fix admin GUI when page contains an unknown flowblock type. [#968][] - Fix admin GUI layout on mobile devices. [#981][] #### Tests - Increased timeout in `test_watcher.IterateInThread` to prevent random spurious failures during CI testing. - Fix `tests/test_prev_next_sibling.py` so as to allow running multiple test runs in parallel. - Use per-testenv coverage files to prevent contention when running `tox --parallel`. - Mark tests that require a working internet connections with pytest mark `requiresinternet`. [#983][] ### Refactors #### Admin UI - Finish rewriting React class-based components to function-based components. [#977][] - Finish adding types for all API endpoints. [#980][] - Remove disused event-source polyfill. [#640]: https://github.com/lektor/lektor/issues/640 [#968]: https://github.com/lektor/lektor/issues/968 [#974]: https://github.com/lektor/lektor/pull/974 [#977]: https://github.com/lektor/lektor/pull/977 [#979]: https://github.com/lektor/lektor/pull/979 [#980]: https://github.com/lektor/lektor/pull/980 [#981]: https://github.com/lektor/lektor/pull/981 [#983]: https://github.com/lektor/lektor/pull/983 ## 3.3.0 (2021-12-14) This release drops support for versions of Python before 3.6. In particular, Python 2.7 is no longer supported. Quite a few bugs have been fixed since the previous release. The Admin UI has seen a major refactor and various performance optimisations. It has been rewritten in Typescript, and updated to use v5 of the Bootstrap CSS framework. ### Bugs Fixed #### Database - Fix queries with offset but without a limit. [#827][] - Fix the handling of deferred (descriptor-type) model fields when used in `slug_format` and when used as a sort key. [#789][] - Refrain from issuing warning about future change in implicit image upscaling behavior in cases that do not involve upscaling. [#885][] - Fix bug with translation fallback of record label. [#897][] #### Data Modelling - Fixed pagination issue which caused child-less paginated pages to not be built. [#952][] #### Publisher - Allow rsync deployment to a local path. [#830][] - Clean up subprocess handling in `lektor.publisher`. This fixes "ResourceWarning: unclosed file" warnings which were being emitted when using the rsync publisher, as well as possible other buglets. [#896][] #### Command Line - Fix circular imports in `lektor.cli` to allow its use as an executable module (`python -m lektor.cli`). [#682][], [#856][] - Fall back to `watchdog` `PollingObserver` if default `Observer` type fails to start. This fixes "OSError: inotify watch limit reached" and perhaps other similar failures. [#861][], [#886][] #### Plugins - Fix the `Plugin.emit` method so that it works. [#859][] - Reword the (previously incomprehensible) exception message emitted when attempting to load a plugin from an improperly named distribution. [#875][], [#879][] #### Build System - Fix bug in `lektor.sourcesearch.find_files` which was causing intermittent exceptions. [#895][], [#897][] #### Miscellaneous - Fix reference cycle in `Environment`. [#882][] - Fix "unclosed file" `ResourceWarning`s. [#898][] #### Admin UI - Fix the checkboxes widget. They were broken so as to be uncheckable. [#812][], [#817][] - Fix page data being incorrectly marked as _changed_ when flow block is expanded/collapsed in the edit UI. [#828][], [#842][] - Fix encoding of URLs when opening the admin UI from the pencil button. [#815][], [#837][] - Rename a CSS class in the admin UI to prevent breakage by ad blockers. The class `add-block` was being blocked by the _EasyList FR_ ad blocker. [#785][], [#841][] - Relax URL checking to allow all valid URLs in URL fields. [#793][], [#840][], [#864][] - Preview iframe was not always updating when it should. [#844][], [#846][] - Make the "Save" button always visible (without need to scroll on long pages). [#43][], [#870][] - Disable the "Save" button unless there are changes. [#872][] - Add "<ctl>-e" hotkey shortcut to edit page. [#876][] - Update UI to Bootstrap v4. (This fixes a layout issue with the date picker.) [#648][], [#884][] - Fix edit page failure for select and checkbox widgets with no choices. [#890][], [#900][] - Update UI to Bootstrap v5. [#917][], [#926][] - Add missing translation strings, show error dialogs on top of other dialogs [#934][]. ### Internal changes #### Python code - Drop python 2 compatibility. [#822][], [#850][], [#871][], [#920][], [#922][] - Drop python 3.5 compatibility. [#878][], [#880][] - Support python 3.10. [#938][] - Switch to [PEP-518][]-compatible (pyproject.toml) build process. [#933][], [#942][] - Code beautification/reformatting. We now use [black][], [reorder-python-imports][], [flake8][], _and_ [pylint][]. [#823][], [#916][], [#925][], [#936][] - Refactor rsync publisher tests. [#836][] - Restructure code to prevent circular imports. [#856][], [#871][], [#873][] - Minor docstring fixes. [#874][] - Enabled pylint's no-self-use policy. [#887][] #### JS code - We now require node >= 14. [#940][] - Update NPM/JS dependencies. Update to webpack v5. [#816][], [#834][], [#848][], [#852][], [#860][], [#905][], [#917][], [#926][], [#945][], [#957][] - Use [prettier][] and [eslint][] for JS (and YAML) beautification and style enforcement. [#825][], [#936][] - Disuse unmaintained `jsdomify` to prevent hanging tests. [#839][] - Disuse jQuery. [#851][] - Convert JS code to Typescript. Various other refactoring and cleanups. [#857][], [#869][], [#872][] - Refactor code to handle hotkeys. [#876][] ### Dependencies - Relax `werkzeug<1` to `werkzeug<3`. [#829][], [#833][], [#911][], [#923][] - Drop support for Python 2. [#818][], [#819][] - We now require `Jinja2>=3.0`. [#921][] ### Testing/CI - Use `tox` for local testing. [#824][] - Pin version of `pylint` used for tests. [#891][] - Complete rewrite of the tests for `lektor.pluginsystem` to increase coverage and reduce running time. [#881][]. - Test under Python 3.9. [#845][] - Test under Node v14 and v16. [#852][], [#927][] - Do not run `brew update` in MacOS CI workflow. [#853][] - CI workflow simplification. [#927][] [black]: https://black.readthedocs.io/en/stable/ [pylint]: https://pylint.org/ [reorder-python-imports]: https://github.com/asottile/reorder_python_imports [flake8]: https://flake8.pycqa.org/en/latest/ [prettier]: https://prettier.io/ [eslint]: https://eslint.org/ [pep-518]: https://www.python.org/dev/peps/pep-0518/ [#43]: https://github.com/lektor/lektor/issues/43 [#648]: https://github.com/lektor/lektor/issues/648 [#682]: https://github.com/lektor/lektor/issues/682 [#785]: https://github.com/lektor/lektor/issues/785 [#789]: https://github.com/lektor/lektor/pull/789 [#793]: https://github.com/lektor/lektor/issues/793 [#812]: https://github.com/lektor/lektor/issues/812 [#815]: https://github.com/lektor/lektor/issues/815 [#816]: https://github.com/lektor/lektor/pull/816 [#817]: https://github.com/lektor/lektor/pull/817 [#818]: https://github.com/lektor/lektor/issues/818 [#819]: https://github.com/lektor/lektor/pull/819 [#822]: https://github.com/lektor/lektor/pull/822 [#823]: https://github.com/lektor/lektor/pull/823 [#824]: https://github.com/lektor/lektor/pull/824 [#825]: https://github.com/lektor/lektor/pull/825 [#827]: https://github.com/lektor/lektor/pull/827 [#828]: https://github.com/lektor/lektor/issues/828 [#829]: https://github.com/lektor/lektor/issues/829 [#830]: https://github.com/lektor/lektor/pull/830 [#833]: https://github.com/lektor/lektor/pull/833 [#834]: https://github.com/lektor/lektor/pull/834 [#836]: https://github.com/lektor/lektor/pull/836 [#837]: https://github.com/lektor/lektor/pull/837 [#839]: https://github.com/lektor/lektor/pull/839 [#840]: https://github.com/lektor/lektor/pull/840 [#841]: https://github.com/lektor/lektor/pull/841 [#842]: https://github.com/lektor/lektor/pull/842 [#844]: https://github.com/lektor/lektor/issues/844 [#845]: https://github.com/lektor/lektor/pull/845 [#846]: https://github.com/lektor/lektor/pull/846 [#848]: https://github.com/lektor/lektor/pull/848 [#850]: https://github.com/lektor/lektor/pull/850 [#851]: https://github.com/lektor/lektor/pull/851 [#852]: https://github.com/lektor/lektor/pull/852 [#853]: https://github.com/lektor/lektor/pull/853 [#856]: https://github.com/lektor/lektor/pull/856 [#857]: https://github.com/lektor/lektor/pull/857 [#859]: https://github.com/lektor/lektor/pull/859 [#860]: https://github.com/lektor/lektor/pull/860 [#861]: https://github.com/lektor/lektor/issues/861 [#864]: https://github.com/lektor/lektor/pull/864 [#869]: https://github.com/lektor/lektor/pull/869 [#870]: https://github.com/lektor/lektor/pull/870 [#871]: https://github.com/lektor/lektor/pull/871 [#872]: https://github.com/lektor/lektor/pull/872 [#873]: https://github.com/lektor/lektor/pull/873 [#874]: https://github.com/lektor/lektor/pull/874 [#875]: https://github.com/lektor/lektor/pull/875 [#876]: https://github.com/lektor/lektor/pull/876 [#878]: https://github.com/lektor/lektor/issues/878 [#879]: https://github.com/lektor/lektor/pull/879 [#880]: https://github.com/lektor/lektor/pull/880 [#881]: https://github.com/lektor/lektor/pull/881 [#882]: https://github.com/lektor/lektor/pull/882 [#884]: https://github.com/lektor/lektor/pull/884 [#885]: https://github.com/lektor/lektor/pull/885 [#886]: https://github.com/lektor/lektor/pull/886 [#887]: https://github.com/lektor/lektor/pull/887 [#890]: https://github.com/lektor/lektor/issues/890 [#891]: https://github.com/lektor/lektor/pull/891 [#895]: https://github.com/lektor/lektor/issues/895 [#896]: https://github.com/lektor/lektor/pull/896 [#897]: https://github.com/lektor/lektor/pull/897 [#898]: https://github.com/lektor/lektor/pull/898 [#900]: https://github.com/lektor/lektor/pull/900 [#905]: https://github.com/lektor/lektor/pull/905 [#911]: https://github.com/lektor/lektor/pull/911 [#916]: https://github.com/lektor/lektor/pull/916 [#917]: https://github.com/lektor/lektor/pull/917 [#920]: https://github.com/lektor/lektor/pull/920 [#921]: https://github.com/lektor/lektor/pull/921 [#922]: https://github.com/lektor/lektor/pull/922 [#923]: https://github.com/lektor/lektor/pull/923 [#925]: https://github.com/lektor/lektor/pull/925 [#926]: https://github.com/lektor/lektor/pull/926 [#927]: https://github.com/lektor/lektor/pull/927 [#933]: https://github.com/lektor/lektor/pull/933 [#934]: https://github.com/lektor/lektor/pull/934 [#936]: https://github.com/lektor/lektor/pull/936 [#938]: https://github.com/lektor/lektor/pull/938 [#940]: https://github.com/lektor/lektor/pull/940 [#942]: https://github.com/lektor/lektor/pull/942 [#945]: https://github.com/lektor/lektor/pull/945 [#952]: https://github.com/lektor/lektor/pull/952 [#957]: https://github.com/lektor/lektor/pull/957 ## 3.2.3 (2021-12-11) ### Compatibility - Restore python 2.7 compatibility. It was broken in leketor 3.2.2. [#951][] - Pin inifile>=0.4.1 to support python 3.10 [#943][], [#953][] [#943]: https://github.com/lektor/lektor/issues/943 [#951]: https://github.com/lektor/lektor/pull/951 [#953]: https://github.com/lektor/lektor/pull/953 ## 3.2.2 (2021-09-18) ### Packaging - Fixes a problem with the uploaded wheel in 3.2.1. ### Compatibility - Fixes to support werkzeug 2.x. [#911][] ## 3.2.1 (2021-09-18) ### Compatibility - Pin `pytest-click<1` for python 2.7. [#924][] - Fixes to support werkzeug 1.x. [#833][] ### Bugs - Allow rsync deployment to a local path. [#830][], [#836][] - Fix queries with offset but without a limit. [#827][] ### Admin UI - Fix select and checkboxes widgets when choices is empty. [#900][] - Update npm packages. [#848][], [#834][], [#816][] - Fix updating of the preview iframe. [#846][] - Allow `ftps:` and `mailto:` URLs in url fields. [#840][] - Fix the toggling of flow widgets in the admin UI to not mark the content as changed. [#842][] - Rename CSS class to prevent conflict with EasyList FR adblock list. [#841][] - Fix the handling of the URLs when opening the admin UI from the pencil button. [#837][] - Fix the checkboxes widget in the admin UI. [#817][] ### Testing / CI - Test under python 3.9. [#845][] - Various CI test fixes. [#932][], [#839][], [#832][], [#826][] - Added a `tox.ini`. [#824][] Code Reformatting - Blackify, reorder-python-imports, flake8. [#823][] - Reformatted js code with prettier. [#825][] - Update pylint config. [#822][] [#826]: https://github.com/lektor/lektor/pull/826 [#832]: https://github.com/lektor/lektor/pull/832 [#924]: https://github.com/lektor/lektor/pull/924 [#932]: https://github.com/lektor/lektor/pull/932 ## 3.2.0 Release date 20th of August, 2020 - Fix off-by-one error in pagination's iter_pages in the interpretation of the right_current argument, and adding an appropriate trailing `None` for some uses. - Add support for setting an output_path in the project file. - Replaced the slugify backend to handle unicode more effectively. This may break some slugs built from unicode. - Several modernization and performance improvements to the admin UI - Improved speed of source info updates. - Set colorspace to sRGB for thumbnails. - Now stripping profiles and comments from thumbnails. - Added support for deleting and excluding files for the rsync deployment publisher. - Improved speed of flow rendering in the admin UI. - Bugfix to correctly calculate relative urls from slugs that contain dots. - Bugfix to allow negative integers in integer fields in the admin UI. - Improved image-heavy build speeds by reducing the amount of data extracted from EXIFs. - Added the ability to collapse flow elements in the admin UI. - Now `extra_flags` is passed to all plugin events. - Extra flags can now be passed to the `clean` and `dev shell` CLI commands. - Bugfix where `lektor plugins reinstall` triggered `on_setup_env` instead of just reinstalling plugins. - Added the ability to generate video thumbnails with ffmpeg. - Added `mode` and `upscale` thumbnail arguments, changing the preferred method to crop to using `mode`. `mode` can be `crop`, `fit`, or `stretch`. `upscale=False` can now prevent upscaling. - Added a new CLI command `lektor dev new-theme`. - Made admin use full UTF-8 version of RobotoSlab. Fixes missing glyphs for some languages - Bumped minimum Jinja2 version to 2.11 - Bumped filetype dependency to 1.0.7 because of API changes - Relative urls are now as short as possible. - Changed default slug creation to use slugify. This should mean greater language support, but this may produce slightly different results than before for some users - Automatically include setup.cfg configured for universal wheels when creating plugins ## 3.1.3 Release date 26th of January, 2019 - Release with universal build. ## 3.1.2 Release date 7th of September 2018 - Fix pagination and virtual pathing for alts - Fixing deply from local server in Python 3 - Now passing server_info to publisher from local server, providing better support for plugin provided publishers. - Added a more full-featured example project. - Adding Jinja2 `do` extension. - Better new-plugin command. - More tests. - Added the ability to sort child pages in admin according to models. - Better image handling and info detection for JPGs and SVGs - Lektor can now be ran with `python -m lektor` - New plugins now come with a more full featured setup.py ## 3.1.1 Release date 18th of April 2018 - Better Image dimension detection. - Fix backwards compatibility with thumbnail generation. - Adding safety check when runnning new build in non-empty dir since that could delete data. - Adding command aliases. ## 3.1.0 Release date 29th of January 2018. - Adding ability to use Lektor Themes. - Adding Markdown event hook between instantiating the Renderer and creating the Markdown Processor - Improving tests for GitHub deployment. - Added the ability to use IPython in the lektor dev shell if it's available. - Added ability to publish from different filesystems. - Adding new option to turn disable editing fields on alternatives. - Added automated testing for Windows. - Expanded automated testing environments to Python 2.7, 3.5, 3.6, & Node 6, 7, 8. - Windows bugfixes. - Improved exif image data. - Improved date handling in admin. - Make GitHub Pages branch detection case insensitive. - Set sqlite isolation to autocommit. - Fixed errors in the example project. - Enabling pylint and standard.js. - Improved image rotation. - Now measuring tests and pull requests with code coverage. - Thumbnails can now have a defined quality. - Moved Windows cache to local appdata. - README tweaks. - Beter translations. - Better file tracking in watcher. - Upgraded many node dependencies. - Upgraded from ES5 to ES6. - Added mp4 attachment type. - Bugfixes for Python 3. ## 3.0.1 Released on 13th of June 2017. - Bugfixes and improved Python 2 / 3 compatibility ## 3.0 Released on 15th of July 2016. - Switch to newer mistune (markdown parser). - Rename `--build-flags` to `--extra-flags`, allow the deploy command to also accept extra flags. ## 2.4 Released on 7th of July 2016. - Resolved an issue with unicode errors being caused by the quickstart. ## 2.3 Released on 31st of May 2016 - Fixed an issue with `get_alts` not being available in the template environment. ## 2.2 Released on 12th of April 2016 - Corrected an issue where certain translations would not make the admin panel load. ## 2.1 Released on 12th of April 2016 - Fixed a code signing issue on OS X 10.10.3 and lower. ## 2.0 Released on 11th of April 2016 - Added `_discoverable` system field which controls if a page should show up in `children`. The default is that a page is discoverable. Setting it to `False` means in practical terms that someone needs to know the URL as all collection operations will not return it. - Added `for_page` function to pagination that returns the pagiantion for a specific page. - Make pagination next_page and prev_page be None on the edges. - Allow plugins to provide publishers. - Added `|markdown` filter. - Added French translations. - Unicode filenames as final build artifacts are now explicitly disallowed. - Serve up a 404.html as an error page in the dev server. - Improvements to the path normalization and alt handling. This should support URL generation in more complex cases between alts now. - Show a clearer error message when URL generation fails because a source object is virtual (does not have a path). - Empty text is now still valid markdown. - Lektor clean now loads the plugins as well. - Basic support for type customization. - Fields that are absent in a content file from an alternative are now pulled from the primary content file. - Development server now resolves index.html for assets as well. - Markdown processing now correctly adjusts links relative to where the rendered output is rendered. - Added Dutch translations. - Added Record.get_siblings() - Added various utilties: build_url, join_path, parse_path - Added support for virtual paths and made pagination work with it. - Added support for Query.distinct - Add support for pagination url resolving on root URL. - Server information can now also contain extra key/value pairs that can be used by publishers to affect the processing. - The thumbnails will now always have the correct width and height set as an attribute. - added datetime type - added support for the process_image utility functions so that plugins can use it directly. - added support for included_assets and excluded_assets in the project file. - added Spanish translations. - added Japanese translations. - added support for discovering existing alts of sources. - added support for image cropping. - added preliminary support for publishing on windows. - children and attachments can now have a hidden flag configured explicitly. Attachments will also no longer inherit the hidden flag of the parent record as that is not a sensible default. - changed internal sqlite consistency mode to improve performance on HDDs. - allow SVG files to be treated as images. This is something that does not work in all situations yet (in particular thumbnailing does not actually do anything for those) ## 1.2.1 Released on 3rd of February 2016 - Bugfix release primarily for OS X which fixes a code signing issue. ## 1.2 Released on 1st of February 2016 - Fixed an error that caused unicode characters in the project name to be mishandled in the quickstart. - Do not create empty folders when the quickstart skips over files. - Empty values for the slug field now pull in the default. - Corrected a bug in hashing in the FTP publisher that could cause files to not upload correctly. - Improved error message for when imagemagick cannot be found. - Fixed scrolling in the admin for firefox and some other browsers. - Fixed a problem with deleting large projects due to sqlite limitations. - Fixed admin preview of root page in firefox. - Changed FTPS data channel to use TLS. ## 1.1 Released on 27th of December 2015 - Fixed a bug where resolving URL paths outside of alts did not fall back to asset resolving. - verbose mode now correctly displays traceback of build failures. - Fixed a bug that caused build failures not to be remembered. - Fixed a bad EXIF attribute (longitude was misspelt) - Use requests for URL fetching instead of urllib. This should fix some SSL errors on some Python versions. - Parent of page now correctly resolves to the right alt. - Publish from a temporary folder on the same device which solves problems on machines with `/tmp` on a different drive. ## 1.0 Released on 21st of December 2015 - Improved ghpages and rsync deployments. - Implemented options for default URL styles. - All artifacts now depend on the project file. - Fixed an issue with renames from tempfile in the quickstart. ## 0.96 Initial test release. Release date 19th of December 2015 lektor-lektor-1e4c150/LICENSE000066400000000000000000000027261523546661100156610ustar00rootroot00000000000000Copyright (c) 2015-2016 by the Armin Ronacher. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder 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 HOLDER 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. lektor-lektor-1e4c150/MANIFEST.in000066400000000000000000000005161523546661100164050ustar00rootroot00000000000000# NB: Everything in git gets automatically included by setuptools_scm prune frontend graft lektor/admin/static global-exclude *.py[cdo] __pycache__ *.so .DS_Store .gitkeep *~ prune .github exclude .gitignore .git-blame-ignore-revs exclude .codecov.yml .editorconfig .pre-commit-config.yaml exclude Makefile pylintrc prune example lektor-lektor-1e4c150/Makefile000066400000000000000000000020151523546661100163030ustar00rootroot00000000000000all: build-js .PHONY: build-js build-js: frontend/node_modules @echo "---> building static files" @cd frontend; npm run webpack frontend/node_modules: frontend/package-lock.json @echo "---> installing npm dependencies" @cd frontend; npm install @touch -m frontend/node_modules # Run tests on Python files. test-python: @echo "---> running python tests" tox -e py # Run tests on the Frontend code. test-js: frontend/node_modules @echo "---> running javascript tests" @cd frontend; npx tsc @cd frontend; npm test .PHONY: lint # Lint code. lint: pre-commit run -a tox -e lint .PHONY: test test: lint test-python test-js .PHONY: test-all # Run tests on all supported Python versions. test-all: test-js pre-commit run -a tox # This creates source distribution and a wheel. dist: build-js setup.cfg MANIFEST.in rm -r build dist python -m build # Before making a release, CHANGES.md needs to be updated and # a tag should be created (and pushed with `git push --tags`). .PHONY: upload upload: dist twine upload dist/* lektor-lektor-1e4c150/README.md000066400000000000000000000040511523546661100161240ustar00rootroot00000000000000# Lektor [![Tests master](https://github.com/lektor/lektor/workflows/Tests%20master/badge.svg)](https://github.com/lektor/lektor/actions?query=workflow%3A%22Tests+master%22) [![Code Coverage](https://codecov.io/gh/lektor/lektor/branch/master/graph/badge.svg)](https://codecov.io/gh/lektor/lektor) [![PyPI version](https://badge.fury.io/py/Lektor.svg)](https://pypi.org/project/Lektor/) [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/Lektor.svg)](https://pypi.org/project/Lektor/) [![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Join the chat at https://gitter.im/lektor/lektor](https://badges.gitter.im/lektor/lektor.svg)](https://gitter.im/lektor/lektor?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) Lektor is a static website generator. It builds out an entire project from static files into many individual HTML pages and has a built-in admin UI and minimal desktop app. To see how it works look at the top-level `example/` folder, which contains a showcase of the wide variety of Lektor's features. For a more complete example look at the [lektor/lektor-website](https://github.com/lektor/lektor-website) repository, which contains the sourcecode for the official lektor website. ## How do I use this? For installation instructions head to the official documentation: - [Installation](https://www.getlektor.com/docs/installation/) - [Quickstart](https://www.getlektor.com/docs/quickstart/) ## Want to develop on Lektor? This gets you started (assuming you have Python, pip, Make and pre-commit installed): ``` $ git clone https://github.com/lektor/lektor $ cd lektor $ virtualenv venv $ . venv/bin/activate $ pip install --editable . $ make build-js $ pre-commit install $ export LEKTOR_DEV=1 $ cp -r example example-project $ lektor --project example-project server ``` If you want to run the test suite (you'll need tox installed): ``` $ tox ``` lektor-lektor-1e4c150/example/000077500000000000000000000000001523546661100163005ustar00rootroot00000000000000lektor-lektor-1e4c150/example/Example.lektorproject000066400000000000000000000004041523546661100225020ustar00rootroot00000000000000[project] name = Example [alternatives.en] name = English primary = yes locale = en_US [alternatives.fr] name = French url_prefix = /fr/ locale = fr [alternatives.de] name = German url_prefix = /de/ locale = de [packages] lektor-markdown-highlighter = 0.1 lektor-lektor-1e4c150/example/assets/000077500000000000000000000000001523546661100176025ustar00rootroot00000000000000lektor-lektor-1e4c150/example/assets/static/000077500000000000000000000000001523546661100210715ustar00rootroot00000000000000lektor-lektor-1e4c150/example/assets/static/favicon.png000066400000000000000000000132721523546661100232310ustar00rootroot00000000000000‰PNG  IHDR))@ûCÕyiCCPICC Profile(‘}�M+DaÇ�¼ÉÂâ–ÉBCŒšØaÒYLƒò¶¹sÍ‹š·;WÈFYØÎb6ȆÄ'`#ùJ),$eoAÙH×y �—rê<ç÷œçœÏ9àòꦙ*ë‚tƶ"ÁAmrjZsß㦉*ê©Õ�¬9�"öÚË%*^v(­¿ïÿZÕ\,k@I…p¿aZ¶ð°pë’m*Vz�–|JxMq¢ÀyÅÑ~ÔŒGÂ'š‘Ôç„o…½FÒJƒKé{¢ßjß8�Z4>ÿ£&©Že&ÆT½x Y"D#ÄütÓ'§Ÿ|tÊ ;¶l«æÀ‚¹bÍ'’¶6 ›ˆi¡ŒÑéÕ|]Ý~P{ý½¯bnAæé}„Ò\1݇ã4ßsž¨[‡£SS·ô�T©¸+‡§¨™‚† ¨œÉÆ{|…‰ªG üÁqžÛÁ½ oŽóºë8o{Ò|gùÂŽ>µØ»†ñU=‡Í-híºÙwë7gF ` pHYs  šœYiTXtXML:com.adobe.xmp 1 LÂ'Y‚IDATxÚí�÷_UWÖ‡çOš˜231y“‰óΤ b%Æc×D�-"M)*H±° *ˆPQÀ ¢ˆDŠ4‘¢0Ë÷“wLœD)÷ÞsöÞÏ÷óü>æžõÜsîÙ{­ý§¥v×ó'>ÜÀ=À=ÜÜÀ=À=ÜÜÀ=À=ÜÀ=À=ÜÜÀ=À=ÜÜÀ=À=ÜÀ=À=ÜÜÀ=À=ÜÜÀ=À=ÜÜÀ=ÜÜÀ=ÐÏACƒ¿˜²m†×Á€�g·'æ'g$gä'¥_>r:÷𩜃'³O\ÚŸ’¹/)uSì®ù�!_MåCÃ=èë=æ Ž—J.æÕÞ{𼳫§�éxú¬âZIî¡Ôc!‘Û¦{-ÿȃO÷à÷YõùäÄë Oœk©oìqtº::‹Ò2å–¸ìÝá|Ô¸n~ƒÇîú10+>YnnÝÝÝ=Î�ˆ}qÏÑõ_ÏãÃÇ=C¿íœç_|&ûyWW�E©.+O‰ˆñÿd—÷Œ`�ÛôŒ˜ýM�ë{ì‘¶¦–Ã+·x¾3”Kƒ{zâýÁÈx¯°;—¯u¿èî±_ܸµiÂB.îiEè°òsNn/=öŽ|)ÈZ� ¸§ÅãåÐé²÷âùóuÒú¤I–¹v¸§²uIéjY÷ëÜÊ)”°\GÜSìUJÞ±4u­ûOªÊÊWþó[.(î)@ˆÛ4Ùáeáš�ÃÓX]1jW÷ì‹l×ÊJHÑɺW+Í­‘S=¹Ä¸gGâ½Ã[êžôèÙŒ¶gi÷lD˜û¬Û¹W{ ˆ,?$…EqÅqÏ åÑ ýè-PX¿înî~¸g1;æú×?xÔc^:ÚžIgî�=>ÿš|==Ë5ÝöLCUMÀ§ßด=?ËK¿ãs'¯ÈØ@Üs5>uùð)“ow¯E¶§â8é1}\þß^{ïrÀî�I�‘Õ-dûÝE¿ ã~Ä=p<�C&”fæãØRy½Ì´Ž[Üs:1s–ë½UÅQ1íÉ÷œˆ|‘ŸÝqÀž­åvlökh\ñ±îÁ@ñýpôÍó¹Å;OÜs)Á_Nytë.õ5Ò©¸nì\܃~òów?Éã"õ/åŸýa¿ßZi¤Â=èÛ›•s;²aeàiª©3a£î9ìÍJñÙl´qTö- Å=èEGÂç“eÂ80E¥¸oAøI/ ¶8<›'-Æ=øCÂGÎn®­Çgäjê܃?lJ�¹ËHâ¼µ>i/Æ=xy"¢ùÕÙ‘ó¨q~ƒœT.g ㆳó´±Ùç/#q^M7êlï@ ×ä`à&܃—Ä-^mÔ0?ËsïÊ Ü·ïp Ž%Qì�Ë‹�Ÿ�Ç=£Ù½h•Ô2¸>ºöÔâ^¯ˆšáÍi«rã\.îÊÆñ Ú[ÛpÀªÈ›-ß¿�Æ=ã�#JX@·<òÀ�{Æm’–)}ËS�œ�{!G<.¯¤îm²È¾lÐ0Ü3¥¯²¸Œ¢·Od/îé�×ûî†C©PÎÇÆ=ý)JˤÖm·Á¥ðîiNÚ¶}ºWžµkö“÷^ß¼ÂiÛF³sjq§3ÈÎѬ§÷~Áÿ“qõ•ÕÔ·�“{(÷tC~HÜÊ)¤¸m‡{ºqqï1*Ûþ‘.91÷ôA¦¸3LZ•ÈY¸§ ›&.êê`„2I�Æ=2±é1Ó5UÊ•ãgqOx¿¢\î_+Á=åI‰ˆ¡”•Ks]î©�ì�`„Š‘]GÞŒÀ=U‘q«5w+¨cE:|&î©Jvâq*XÝDÏöÅ=%Ù9?€Õ<¥s0`#î)¹¨ÐÚÐHù*�ŒèÜS�ÒÌ|jWõ¤œÁ=ÅH �¢p5ˆ6'4˜â^Ĩ9ìÓ#��jqO%äË’ªÕ#r*î)ƒ¦AÉê=ÄÔß=q+“U©W�ð÷ñ¸§yÇÒ(VÍòÕTܳ;‘S=YI×/kÇü€{ö/ýž;û6µÌ手pÏÖ¤nŠ¥LµLÔLܳ/!nÓäÌDÊTËÄ.Â=;oË£FuM¼w8îÙ”¸Å«)P�s(h3îÙrÐí»Ãë*«(P�#ó>pÏŽ^¹…êÔ;ò ÷ì8‚±Úçøº¸g;äªPšÚGÚÁpÏ^,ÿȃ­›&äȪ-¸g/Ò£¨K"�)¸g#?ÏÉ•†$Á'÷lDæ>Îñ2%{—®Á=»üÅæL›“Ø…+q�&=bAvÌõÇ=[°ÆmºÌð "ÍIô,úø¥G¬ˆ´Dãžõø ÛÞÚF9zgm�L-š–Ða3pÏb< ­ðˆZ4-ò°ƒ{³{Ñ* Ñ´È|qfãZÏÝüëÔ¢ii¨ªÁ=‹Ù0n>óÿ LEQ)îYL~r…h`nœÍÁ=+‘S,ŸwvQˆ&÷P*îYIZä>ªÐÌH§îYÉ“êÇT¡™9¼÷,cËä%” ±‰[Œ{–‘ŸL ›­SöÀ=f"W§¥î‰NG¨äÞ£Û÷©?“s7¿÷¬9n�NYÓsàîYÀž¥!Ÿá‘™t¸gò�Gñž¨Þ¸gµ÷R|&GÆþû ƒ{®fÕ¿&ócÏðT—•ë$ž2î%x‡S|¦¿h9x÷,àò‘ÓŸáI\¾÷XÙ#$|Älܳ Q�q€†§­©E3ñÔp/Ì}ÅgxJ3óq�Oˆ9½u/îY@êæÝŸá‰™ã‡{PxâÅgrº_hÕ:¤’{U¥w©?“£Ó|$•Ü““e;Û;¨?“sqï1ܳ€5nÓ)>ãì-Ç= Øþà ŠÏäÈ„ïFàžÈN"êÏäÜ<Ÿ«¥x ¸'í’ÔŸÉ9²úgܳ9è�ú3wu¡»;øË)¸gÑq_ )” ±y\^©«x ¸Wx’…ussa÷ܳ ÙDK ›¨™>¸g•×Ë(A3Óñô™;…{–QWYEš™â³Ù‹§€{O›©B3s`ÅzܳiX¦ LWGÇò�|ŠšV%'ÖïÄ4}Ü q›Æ:»¹­ÄsÐPLÓÇ=!?9ƒÊ¶y¤;6tøL4ÓÍ=¹õÉ¥¥¾í…ôtO�Ô·m#çu{¾ÃÓ¦¦î-4¬ª¬œ*·adû+é:»'l¿@ް¡Öí–CA›±Ks÷„‹{Ùef¯”e –îɳ'Õ�©x›¤¡ª&pÈÔ2Â=aç<¦¹Ø!rnsÄèïñÊ ÷þ¯¿!‰Ò·6²Ûaû÷Ë‘Ê8÷d«îÝüë`aŽGb”‰î �Ÿ�o|T‹–$+>�ÌuOØ4a!Ý}®Oif›6MwO8à¿\™G·îù ƒK¸÷’œ4׺(-uO¤�‘pïdÞxɅˈáìÈÉ•›&.Â"Üû rR4Ã<�·x5 áÞïê7R&±"‰3ÒÕѱs~þàÞ›ô»�sU½y¥-rÚ2äÁ½·�Ó•F2„qTäÌÊ�ß,ÀÜëífk¶¼8$M5uá#f£ îõíÕË•ãg‘g ©«¨ þ’åÜë'7ì’ã8°¨‘ùtáÞ€Øõc ¼*À¥>åþÕ›+>öÀÜ(Ò`&ç}cTïÐ÷û­eó î9†€O¿¹›ÏËÏ>n«o”ÝBr¤É޹þÒ2‚<¸×ÿg§¶ÄÉÁTHÕ�È”™ÓQ”–™²v{˜û,D½>³nìܪһ¸4À<º}_î‡x‚{}nxO‹ÜÇÁFIÍÝŠômñ¬â^Xÿõ¼jÆì:ìÒ•˜9ÌnÁ½^wÉ P^ë!�Ãnƒw*l”� Tî½9S:÷ð)s`škëe•‚Ò½^>rvñÙlf~:0×Jd€?¥…{½âçï~ºWxmö;ðE·ðwÖq¯wÄ.zxóæ8*mÍ­ÇÖl£®p¯·l›áUr1�§PGåæù\Ã÷ˆâ^ßúÏÇF?G¥¾²z½Ç<܃·üð»|ä´œçˆ0Ž�¬è$._‡{ð:Aÿ˜$ÇJ×Þ{€$N]ˆ—yªŽµÆ½ß_dß½h•ìÙg•Ïe)ø2N dÒ�wú×5È*y–Û‘äiª¢¨T:tåý¡!ËYrxÃíÜ~G#‹~¸§r3‘v›La‘óC RÎÄ{…ÉlB3ßlÉüˆþͤÚóS0î)÷é²pl¹uò¬õ°äÎéŸ÷lš°Ð�—æoF>„ïð†‡5}úå3Ä=5~åç'gX»L”“™K²f(ÿ|ûoäDDùfìÓç¹fètܳ/2žUV{­Ú õË»�Û÷eŽA±½A(õ~eUÆ`ãžM«È/r ­{\^)¯ÔåŸ�Q}bøù½<#j¦îÙnßóËWØ�é%넲ýb혰¨ÿ;Ôþçkiyóç,»Àu1¨¤{ëÆü +Ñ–X×ÕÑ)ÂË.J^Ÿ8j›Ñ›õ“Ÿ¼k±Ç&L�y×Ó³,±NZldÂ�lŽAo ýËÈû×Jþè›.Ì}&îYÿóÀ’�™²¹IöÄÈ1’8u»ŸtEü÷‡/+4¬­[¼I7?)ÝÅ÷:‘üÎåk²%ßʸáV}>¹±ºö×—@Ú|¥¯÷,šÝð¾ûñõ;]|DsGÛ3éæÖøQÇί¬å)ã?›]e.{©­AºHê*ª\i�LLH‰ˆá`q ‰]¸R¶FÈ3ÎÎùôYñý7bvYV�+/¥�O†#8*Ëž¯Ód½³®fùG÷uÙVLy�&¿$å-æº'Ëe‡‚6¹l@XKÝÙŒ8dF»·uЧlWwÙ2�´«ªÞ¸ç€7ËimîS*¯—™0pïí»䩯óY» ¬“W)² Œ‹ ¸ç&ÍÈ.˜Y$·S™c9Õ“Ë ¸ç¶nìÜ»ùE.°NvèÊL.0àÞË={Ù‰'œÝh'˲²ÙšeÀ½_úD¤ ­©Å©Ö‰ÕÒD+M}\TÀ½—HÓqÍ� ò¦4Þ;œK¸÷ê�ŠŒ:wêíN:M¤·H×1€{ýAŽøi©wâžL™î.§¥2¸pïrZ•Ì/rê ùûºŽIÜë'ò»K��'žœÆ,g,rµ÷^±ò'Ý8—ë<ë¤u=nñj®àÞoH\±¾­¹Õyg÷Èyâ^ïÑì¸÷+dŽ�óÆ:Ȥþ³;H;—pï7^¹¥½õ©“vc$gh?  @ø7ZNK¾Uy 3IEND®B`‚lektor-lektor-1e4c150/example/assets/static/style.css000066400000000000000000000011561523546661100227460ustar00rootroot00000000000000body { font-family: 'Verdana', sans-serif; margin: 50px 25px; } a { color: #2a99b6; } a:hover { color: #33bbdf; } header, footer, div.page { width: 760px; margin: 0 auto; background: #daeef3; padding: 20px 30px; } header h1 { color: #169bbd; margin: 0; font-weight: normal; font-size: 58px; top: -11px; position: relative; } header nav ul { list-style: none; margin: 0; padding: 0; } header nav ul li { display: inline; margin: 0 8px 0 0; padding: 0; } header .logo { display: inline-block; } div.page { background: #f1fbfe; } lektor-lektor-1e4c150/example/configs/000077500000000000000000000000001523546661100177305ustar00rootroot00000000000000lektor-lektor-1e4c150/example/configs/markdown-highlighter.ini000066400000000000000000000000311523546661100245410ustar00rootroot00000000000000[pygments] style = tango lektor-lektor-1e4c150/example/content/000077500000000000000000000000001523546661100177525ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/404.html/000077500000000000000000000000001523546661100212245ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/404.html/contents.lr000066400000000000000000000011301523546661100234130ustar00rootroot00000000000000_model: page --- title: 404: Not Found --- _template: 404.html --- body: This is an [error page](https://www.getlektor.com/docs/guides/error-pages/). It is also a page that uses a [theme](https://www.getlektor.com/docs/themes/), the [lektor-theme-nix theme](https://github.com/rlaverde/lektor-theme-nix). The other pages on this site do not use this theme because they have templates / models that override the ones that exist in the theme. Because this page uses a theme, it has an entirely different layout and style. The above links work, and will get you back to the normal flow of this site. lektor-lektor-1e4c150/example/content/about/000077500000000000000000000000001523546661100210645ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/about/contents.lr000066400000000000000000000003231523546661100232560ustar00rootroot00000000000000title: About this Website --- body: This is a website that was initally made with the Lektor quickstart, and then modified by a human by edits to contain many quick examples of Lektor's various functionalities. lektor-lektor-1e4c150/example/content/blog/000077500000000000000000000000001523546661100206755ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/blog/blog-post-2/000077500000000000000000000000001523546661100227425ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/blog/blog-post-2/contents.lr000066400000000000000000000001471523546661100251400ustar00rootroot00000000000000title: Blog Post 2 --- author: Joseph Nix --- body: Blog Post 2 body markdown --- pub_date: 2017-09-16 lektor-lektor-1e4c150/example/content/blog/blog-post-3/000077500000000000000000000000001523546661100227435ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/blog/blog-post-3/contents.lr000066400000000000000000000001471523546661100251410ustar00rootroot00000000000000title: Blog Post 3 --- author: Joseph Nix --- body: Blog Post 3 body markdown --- pub_date: 2017-09-17 lektor-lektor-1e4c150/example/content/blog/blog-post-4/000077500000000000000000000000001523546661100227445ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/blog/blog-post-4/contents.lr000066400000000000000000000001471523546661100251420ustar00rootroot00000000000000title: Blog Post 4 --- author: Joseph Nix --- body: Blog Post 4 body markdown --- pub_date: 2017-09-18 lektor-lektor-1e4c150/example/content/blog/blog-post-5/000077500000000000000000000000001523546661100227455ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/blog/blog-post-5/contents.lr000066400000000000000000000001471523546661100251430ustar00rootroot00000000000000title: Blog Post 5 --- author: Joseph Nix --- body: Blog Post 5 body markdown --- pub_date: 2017-09-19 lektor-lektor-1e4c150/example/content/blog/contents.lr000066400000000000000000000000351523546661100230670ustar00rootroot00000000000000_model: blog --- title: Blog lektor-lektor-1e4c150/example/content/blog/first-post/000077500000000000000000000000001523546661100230075ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/blog/first-post/contents.lr000066400000000000000000000002351523546661100252030ustar00rootroot00000000000000title: Hello Website --- pub_date: 2015-11-27 --- author: Armin Ronacher --- body: This is an example blog post. Not much here but that's not the point :) lektor-lektor-1e4c150/example/content/contents+de.lr000066400000000000000000000007441523546661100225370ustar00rootroot00000000000000alt_note: This is where a German translation of the homepage's body would go, or even completely different content. Alternatives' settings are set in the project file. This is a field that is not populated for the 'en' alt, but is for 'fr' and 'de'. The `body` field is only populated for the 'en' alt, and since that's the default, it's used again for the other alts, as you can see below. Every field can be rewritten for each alt. --- title: Welcome to the German Example Site! lektor-lektor-1e4c150/example/content/contents+fr.lr000066400000000000000000000007431523546661100225550ustar00rootroot00000000000000alt_note: This is where a French translation of the homepage's body would go, or even completely different content. Alternatives' settings are set in the project file. This is a field that is not populated for the 'en' alt, but is for 'fr' and 'de'. The `body` field is only populated for the 'en' alt, and since that's the default, it's used again for the other alts, as you can see below. Every field can be rewritten for each alt. --- title: Welcome to the French Example Site! lektor-lektor-1e4c150/example/content/contents.lr000066400000000000000000000012501523546661100221440ustar00rootroot00000000000000title: Welcome to the Example Site! --- body: This is a basic demo website that shows how to use Lektor. Since this is a working example of a Lektor based site, you can dive into the code that has produced it to better learn and experiment. This example site contains examples of: * [404 error page](/404.html) * a blog * blog posts * navigation between blog posts * pagination * alternatives * assets - asseturl for style.css and favicon.png * basic page navigation * [builtin field types](types/) * images * a favicon * thumbnail on an image attachment * pages * [plugin use](plugin-use/) * [project categories](projects/categories/) * [themes](/404.html) lektor-lektor-1e4c150/example/content/logo.png000066400000000000000000004742541523546661100214400ustar00rootroot00000000000000‰PNG  IHDRxgÄ!j†iCCPsRGB IEC61966-2.1(‘u‘¿/CQÇ?m ¡tÐAÂС1ˆ %B,´?"ÒI‹¥}úCÒòò^EÄh°v0ø‹F,f6ñH$L V1�X¤yÎm›TDÏͽ÷s¿÷œsï=쑌–5ëú »ž3“O$ºäixÁI­ø�i¦> ÍRÓ¾°©ùÞ§rÕöûךW¦¶Fá1M7rÂSÂs[9]ñ�°[KÇV…/„{ ¹ ð“Òãe~Sœ*±]åt á °[Ø“úÅñ_¬¥�¬ð °7›ÙÔ*÷Q/q&Öç•.½“0“ð0ÍA†ègDÆ!©ŽŸ^YQ#Þ_ŠŸcCb5u¶1X#Eš=¢nJö„ÌIÑÒ2â!¦þàomÍ䀿|‚sê_-볎¡¸gYß§–U,€Cêr³_�ߨ‡áwÑóUÍ{®]¸¼®jñ3¸ÊCû³3b%É!ÝžLÂÇ9´D¡íš–Ëu«ìSx„…˜½…Ã#è×ÊŠÎgvޤPŒ pHYs  šœ IDATxœì½}�-ÛYÞ÷¾kuï=sιß q%®¤+¤\#a–-,*#„)’ v@Ø"ccH1)R®Jœ§\VaQ•*!€C¹d§©ÄXÁ1]!0_°ÐÇ=÷œ™ÝÝk½ù£×³æÝkzŽ®4sîžÙçùUÍ93{÷î^ý±ûãYÏz^B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„B!„Ü[è®°ÄjµÒƒƒ9::3“ÃÃC !È4M2M“Œã(9gQUQ�WÅÌDU%„ "")¥: ÞÇ4þs~^~>1ÆSóÁ<ðw×uÒ÷½¨ªŒã()¥­åt]'ëõZbŒbf2M“KÎYº®‘išDUeµZÕé°¾�)¥º B²^¯EDd³ÙÈ4M[Û1Ƹõ>Ö!ÆXÛkf’Rªïõ}/1FQUI)É8ŽõulÓœs]O´±ë:QUÉ9×vªªô}/"²¸¿bŒ²Z­êvË9×uÇQÌlkû·ûÛÈïW¶{×uu;bû-n/¬¿™IAV«•„ê¶Àv !HŒ±¶gš&I)IÎyëØ!l-ÓˆH�Ö¯·¬V+¹~ýº¨ªÉ0 ’s–‚ô}/«ÕJº®“œ³ÜºuK̬î÷qEUëßÇÇÇ[ë}xx(1FÉ9×cÈ?ÎÚ¶À£˜Ÿ÷ûÛ?8Žú¾—ëׯ‹™ÉÍ›7e³Ùl#X~×uõ€}�cÛèÆ�""òÌ3ÏÈ0 g¶û ûy†­ïwŒQ¦iZ^aB!„B!„�KFÜåÂû¾×ƒƒíºNe›µ°%ŠÈ– Á§ë:‰1V�5„°%FµÿC¼�ÀÔŠV^ôm?ë�ð×u�˜Ù–`�BŸ3!\zËÀï^˜n¼è…DªKÂ"Þ÷Ó´½Ýf^ˆôŸk…íVäôóÃòñš‚±-ü²ZQóõû·»ÅÎ~üvòBîÒü}Û zBöǤ3!²z!Û‹š8¦ï$–âÀñí·1ŽáؾØWmçÖËôÛÙç­0í·1–ï¿k«Õj«#`©ÓÄ‹³~[øc×/o©ÓÆÏŸÇ>ðûÁ¯ 惶·íñÛÙ¯x Ó†TDÔÌê¹I.i‡!„B!„Bîmºçz�«ÕJ½xÔ:ÿФi€Ù 4AÀ‘*ªz�ËÓ:{½ÈÔŠ;þ3KnF8mE¶…X8Rá l3tX´ÃÏ× q­«ŸŸ'ܘKb5Ú×n,£Ý>h�’ñ:ÚÓ –ír æzg+ö™*½€Ü׳ªÖõöi·‰o£�!¶Â�‰í qt½^Kι:oývÁzÂY áÞïG?¿Ö­º´>þ[Úî~±þ8¾ýºûãËÃqà÷sëN^r´†¶ÄP/ûyy¿uC”m¿'í~ñ"lÛiü±Ðn3¿ï±ÏZ¡ß¹³œýí²ÚóPs,šo¿k«ÒåK!„B!„�ËÄs*ðö}¯"[n>õ®B‘"Rëöó‚bë:¼“;óö‚ª½uŠz!¸�€[²ýì’`‰÷0Tâ>Ûºg1üÓøõlìV´rîÃÅh©®H¿=î$Œûmä·‡_–¹$JŸáp§ea/ºµÛci·óXÚNÞÝÚ:C½k´Ý&­#Õÿî·/:)¼yIØ9q|CÈnEw¿¶}ߟêðû¢u¤.‰”ÞqŒãxi¿aÝý÷Ó;à½Ðêçí]èm[°l/Jã˜÷1 Ø>þXhÅÚö5?]ë,>k¿-mÇ;9�UÕð½Z¯×ºÙl(òB!„B!d§Üu�÷àà@!æ¸ìR…x3M“¶"²PEDá<ô.V¦@UÕ;HÏ¢â–Þ÷B^kEÙ”’l6›-qÓ‹aþs~è8Ä-¬»½£ª*Ã0,滞%ŽzAÕq‡(å£ à`õBÛ�„Áv;yAÂ_;tmÀöôŽÚg³Ÿ¼à Ç©Ï ^Ú­¸Û‚õFý6‚3{³ÙlÍà úKóóB©�ðÀ:x§+!²¦[ầñ½ð™ÊKY¾KYÒíß¾}·nݪ¯/9_[ÁØ üþØÁ<ÎrÁD<øý€m†¼äv?áûáÕï|ñ^›Ó\Þ«�h¿C^Ž1:ŸZ·µˆ˜ªj9¦­|_ÔÍ‹b/!„B!„BžsîªÀÛu]r‹ £prÎê„:u‚jUUŠ8£­ йõÎгœŠgˆ=gâ—å_óÅüüZÇ  ·‚ä‚x´å¾õëºä>\^}Q0l#/üù‚mÈ–õŽZߦ¶-^€ôíj³z½“t©}‚Û|ØöýV¨õÓ¶³ß/^¨ôÓø¨ƒV„l÷sC€¶y|Ô„ßØfØýç[/„ã¶}wZßv´.Ô¥õj÷¦_Šéðîq/‚ûm‹Ø _Œ¯í°À>ñëä;|ÇÀÒzâ˜Â1ºäÒ>«“æ,ÇoÙÖ Ãx¯ï{SUuÛÚÜö4œ›lFËçÍuò¨}¢ !„B!„BÈs7^mDB-ðØi𴏿 ü*\q.–`Kà-¯ãsÕësk½`è³SÏßÒŠ„"R�„p’¶óóÃú!.9'ò–Ðå]�Í;%p.EQœ…wþo9B1Ÿ¾ï%ç,ÇÇÇ[îË¥y¡ýK¢©o_+´BôóâYJIº®“õz]÷ byt½^Wç²/‡aØÒý¾jÝœKNg/¶"º�À†¡f)Ç«“× Ó8®ÌLŽ��ED¶ÜÒKâæ’ÐŸRªŸ÷ëtÖþö ­Û·UÏŠÁð"ëÒ÷aÉ­îê˜o×urppP�5ï`Æú¢óÅǰäœe³Ùœ*‡eáÿ¶ãmh·U‹ß­¼×»æ‹À+Ã0HÎYº®Cƒ¹ãÝrÎ^ÜUÁeŸPä%„B!„BÈsÊ]xCU -n=…X[„%…p+¥R½àÓáõ2OÑ™SY·Þñm¥uv¶Që Lµ»KÔVèôî]ÏR>‡åc=àPôÂ#„ÁV¤k�ª^øö"™/€Ö?ƒ+"Ú’[¹u’ºýº%²ú|ÔV˜öûMd{¨»~íþòmj…Ø; ã~9íþi÷£/BÖŠ‡­»µuƒ.­Ÿ’E¤º\Ñÿ™%7ª_–ÿ¿iÛýáݶKîÕ¥y �íwħ¼Þ.Ã�üöi·aëšîº®SgíKÌ�XOÿwû=8‹¥õÆzâ8 !˜ßwªj¥í–sV±‚J1î΋W‹1ZJ ¿kÁPð.ƨ)%м„B!„ByN¸p�]7t[‹�£""ã8ªQ× ‡ÖišÓˆˆqEÊt5âÃÞ!¦ âaÉ‘è….:«Õª˜J)É­[·$缕½Ú:(Ïr¦BXôâįÕjUžÆàˆ…³±�Hðmn…]¿<‘“áó^œ„;Òø‚CÂ>w§aìøÛÔoC¿|ïæ<<<U•£££-!Óg{ÑxÇSâVü‘ÅßFï–F»Zq×›Ífk�|Ûàäõíj¬^$ôŽY|ŽeWÈ«m�ÏVoiŸ¡‹íí�µ6ÚÁ‹~ÿû8Ì¿ípx¶îÖ%7¼ÿÛ¯ ½Øf­HïÛÜfùúc«=Nñ÷ÒviÖþø÷ÇI[¬±ýn€ò·ùïTÎÙJ§…ÙüA33+N^+óÌ¥m¥oÊ�Ñ;÷V©¢›õ}/GGGgnB!„B!„�‹â®¼wËKZÜ{AæŒÝúBÐõz­ªRJ:M“–\^ˆ»ëPÅ]'¾Uõ®–à‘š�‹×!&A´…c³u6½aQä´x¥ªÕ™ s³ÙÔÏx�ÛÇgÏzÑ»<½£¢b0=¦óâ2æßŠ|KX/ âoÿ/Ô¶NÞc]¶Ä@Ÿ¿êÅT,Ã/óÄ|ðylìW/X·±¾Íت'Y¾­hÝ ®Þ�‰ýº$æúý‚å·ÇÅYŸóÙ½^¤õÛnâV8…°Š÷á‚E†¯Ë‘­ëý‰®­ø�¶x�7ç9¯¹¡qŒaÿ´"*ÜÅpuOÓ´µ/Ú}†uö�^€Çöõb°_gÌ£í4ñûLf!¶Î·lwëºÎRJrûöm+ßIl€,"–s¶"èΪov›N�šÇÛ÷}m!„B!„BÈÝæBÞÕj¥ˆe‘*ÆJv‹íMU5”ÜJ5³`ÅÕ[¦E(Q)Q NÔ­¹½g¹ûZ h݃˜¾ø€wízG(„½®ëN9c!Àúl]´Ñ;�}©ÖÙ뇘aOd;Áfɵ¹$D¶â¶#¶„)¬„Úv»xqЋÎ9çS‚´ÿ\›«Š×!Žc>¦ßο]?ŸÏŠiýrÏrÛýÖŠØ(F×fñBØ_r•¶â¨ŸŸßfíz´Ó·Ç©?¼ Ú·»u³Þi~z/H/µû( ƒg¹ÁA;Ÿ%G8¦óËm·a»ÏÛåù}×f/mo·] î]dæªjŽ1†"èÉffyž‘–÷MUóB;ëÉ)„`÷ÝwŸÞ¼y“1 „B!„B¹«\˜ÀûðÃ+\zEX©¢,Šª�7Äµëº "a†PDÜ€Ÿò¾ŠˆŽã¼°+2 (αŠ×$¥$›ÍfËñçóE[±B$ÄZ›!i‰1Êz½–Õjµ˜Ï›R’aj¼€½WäÄ=Ü b­@׺!búañ­£Ñ µº àÁ1ìŽÞõ ¡óððPBâ FmE `Ú Ý6*À™óCü½ ê£4Öëõ–#Ø‹v)¥:ÜÝgÝz!îOl�Ö‘�õ€Ðí�ÔÈFÆ|Ð~³9CÙï ¿=Zv+¼û¸¼ïsn[×µM1/ßA�ïa»‰Huò>¼ ½^¯ë¶kcJÚˆÚØ&¾ƒÅSXŸÍf³µ�Ð~Èä†áTÜŽ)ßAà·•Ç Çm.qó}E–nwEÄJN¶åœ-Æh«Õ*Ç-çœSJ:Ž£•sP.ç‚BÃ0dwlc!ŠßcŒrýúu½uëE^B!„B!„Ü5.Làu¢�:ÁG‹rÎf4ÌÊJÈ9‡”R(™¼QU5Æ8OTÄ`U EÜ©Ž^·EÞ‚ ¡6"¡8Û¿>^8õ¯û×à�õÃíÛyx'­wàz¡Ó;!ñI?tÝ/Ç‹ÃÞ‘‰õöBfë¢l�^`‘EÚÿÞº§ÛlX Ýo×Ë Ñíñã§i£ð?ëv{ûé[–œ£^äô{ðR»1-Þ÷�~¿BÜõâ¦äqœú"rþØÄò°?±M['ö’(Š¿—DQ/&ûõóÛ©Í X–¶ý¼±¬v{cÚâimÛÛNŽ¥ã¶}}i>þû‰ö¹v>3M“©ª•Ï[×u9Æh!„lfÙæ§¬ªµR¤”Èÿ> =b>å}M)Y» !„B!„B.š xáƒ{׉*ÕÉBВŦi )¥hó0è "1„º® ª‹ë7”ψ¹ã8"»WBê¢^‚Ø4M“”ªöÕUèsn!µÅÍ–†©[q†"†.Y/t"âŽaŸŠùyq.[ˆŠ›Í¦N�ößÉŒÏÁ‰zíÚ5QU¹}ûvuÙb¹À‹¼mÌœ KÓc™ˆrˆ1Öm�HŸ Û.Ç‹ª^ˆ„x 't+ŠAô"áf³9óX\í!8ChÇú¬×kQÕºÜV(õb¤fq ÀA‹|Y´×gábû ípš£ Xžw¬â=<-Ã|ð9•�vøèüŽã.[l7ï:Æúúù{ükí1é…U_<Çsëfnçã·=¦ñËó¯ûcÜo/ Ch.ÛÈRJv||,!SU[­VÖu]VUÇ1OÓ”sÎÙÌR˜‹D"~&»ùg3 ã8f9)(iw1¢�B!„B!änr!ïáá!t\ubÜ»*'N^‘`f!çÍ,„¢ˆÄ"æF‰2çð†BH)…2_õ³…“׿Lß-çlYþ)1¬¥ìÌì”@å©"²K±B’w¶®P|¾-å—Õº3[§¢È‰p�÷ñyˆk"ÛÂXëÄmÝ•^`ôól—ßnO/úú¸¼�¨lÏÖùê±ØñY´»Ý>í¶ÀþñB{»¾^|‡(»$úy1ÓoŸÖ!Œ×|.rë‚õím·CÛ~¬§À[ç-Ú¶äm3‚Û6úÂlíöÃr—ÜàKß—ÖQ½tü- ¼Þ¼”ÛëñÛ`é½V„9q�{y‹Ûˆi°Y¿5+q VÛúS^UÕBP¸µsÎVFÞSU…“wš&+íÕ⮯B!„B!„\4"ð†jž&\y|‹(¤2‹´a† "!¥Bñí/ÿÒ¯¸¯?x½™©Íâï,ë\�ÍÄtÖ�N ¶‰Ìaš*ZþZÀL¼¢¢¢R_19ós^üɶ0ìÿŸ÷ËÙnÃÖçç‰N„,ß^7=õ‘"®É¶H¼=ÛúÌ©ö.,ß ”'³±SÓ{JøñV›ÌìÔô§æ¹µ~ó>l—¿$þ�…Šn ” ۦοÙ~[™Çí"µ™Þ­W#p!œ±�O½ß´ñÔ{n¿¶ßlÿ;m£gµÜfù[Ë[hÛ¼ýšcü¬uX:VÝ´µ£Âüd8V¾såx ª"ås¥=eRµr,›ŠX�­,ÁT4�–>øw?ôým©.~±BX­V9„ ã8Ú4M:Ž£¥”t½^ÛÁÁ�¤”äæÍ›gmAB!„B!„�sq!o“ «"‚øÍs±5äîj‰o2»tãõnýšÃ¸zûE´ƒBîcN¿hfï’"úâ§ ø+ç+U1ì>¥�WK4C‘Bˆ6)ú^XBÙ9ŠÑ9gäîê0 ªóˆ‘9FƬäuû¼oB!„B!„�»Á…¼K™±z2.+ƒ·üŠ£7f±°B!äS`µZi¡Ž.™¦©-Åë9ç­¢·xñú8Žu:U•a‘lebf2M“˜™tÝü˜�ë¡_žˆÈ4MuÞ!éû^TU§iªµ=|;p�UU¹}û6/¬„B!Ž +²æoÒÜ œâ†.ƨ9gUÕ�sÖaBŒ‘^BȥNJ «ª!ƨª¦iÊÅ­‹SÅÃiÎÙ†a�Íf#w !„<—„ÔÕÅ©ÂîÒ5 -²äE÷îÕ}›s^xñ¹®ë¤ïû:?U­—ÎÎ-‘B0žº®“õz-!;>>®í-ë#1Æ-Áx½^ûŽT,‡\B!„ܳœ[àÅÍVÎ7Y �W\þnŒQñ·ˆ¸xYd�ré±9[FUC‰š©Ñ ™€N-o×ÅÐVB!ä¹ *DD¤ï{D(¨»OßrÄŠˆ¯Ÿ!RFãy!"¬�X~Z¸‚ñ¾ÿ\AV«U�thç‰â¤!-ï[ëÚ…@ a×füüu^t !„rOrn�w½^×ì-_`-„àß*ðúÈ'ŽBÈ%Æ´ë:UUÇQSJêÎsõaxš¦úã– !„�»Iuì:£Jª0jf茬ÝáV!¾6ÎÞ:BÏgêBÜÍ9Ëf³‘£ÄEDj&¯wèâuÌ¡ø¼œÄÕè#éPÖÅÊgëó†ªZß÷rxxXÅì[·nQì%„BÈ=Ã…8x—n‘Á[n"5¥„¢kÈ«œ‹®)#!—“R2M)!n¦>,£³ ¹†(6Ù–!„B.’rýÙzI¤F2¨ˆT�·¯Þ¡[§m½Þñ ‡l×u5¶™¼>"ÁÇ9à,·_ÞÊúõ£\üà¿2e= óSU+…M½±Äð¬!"†ùèññ1/À„B¹'8·À‹›+sé‡T‰Ì7–ÇÇÇèQ¯îÝÙΚ5!„\0!ÀÉ;M“š™"ëП ½Ë©}ˆ%„B.‚®ëÔG@°•âÂ-ŽX)£N$ƨe´‰z¸x[ㆈT�±)¥-�bUÝŠ`ˆ1Êjµª™½¾àZûì°Ô)šs®oy¶°â<¶qED¬žAD0d7Y*³ƒ@EÑ@¹ü8§“Ï÷š”¢k8¿ñA’BÈ]áàà@SJÒu]�V(¬TË=º"> n_÷·ˆ»–áÞÝ/Ç›6Ph-ÆX\?¢Ðéé?'RŸêtx†À³ƒw䊈7�ÀÁkR2ïEÄàÜíûÞDDÆq´›dXÂ1Æ*xB!„ì#çx‡a¨7n1FY¯×>GËߨ)*ÍXç¢x !—Ÿq[QW¤¸¤DN�ñÿ3‹—BÈEcÔqEU¥ï{-÷Þ: ƒˆˆ–ø4†_UU\¯Ôeñ"ÂA½`‹ë›È|mëû^Dæì\¼†¨\¸¸âÚa7ç¼5?8yÝü ‚oyß¼À+'ñ †¸®ëlµZ©ˆX‰Iªâ®Ì"°Æ E¡ !„Bö• sð¶fµö&CÃÊ –Jq˜ÐäF¹ü bàu¸w]./^ßQK !„ì+«ÕJÝ}7²ßÕE4 +^Ä7–端‡!rRT­Æ;`YMl‚¶®Ýö÷”ÒV4‘�/òb0DÚ¥õSUƒÃ×fDŠÀ[þ68|UÕrÎÖdôÂ\ݼ%¢Â®]»¦·o߿řB!{É…eðŠÔ¬]‰1 *÷ú›º2DJÝÍ—²Æ!ä*à‹ºà%üâEÝ¥gVн„BÎ 2tû¾÷¸5šï4MtkÝ ü-'& ! @[+îú{õ­8/ú¶�šp‹Ô"Ë[í‡39¹KõNà5M+o~ÌÌJ\ƒåœ­¸vséhµ®ë,„ ã8Zq2[JIú¾—ûî»Oo޼ɋ2!„BöŽ x}Q„”’Ä¥ëºZ¹·�¾0;¨ïB®8×ÅáØ­Ù�xßg ⧈ÙiÛ !„\}�%Ûu�”È-ן ¯Eè wK ŒPîÍuš&¼/xß\ÛrðŠÔë�ú×– ,£È^÷Fþu8{!àb:\gsΡ7„`%ªv^8x3„ÞB‘ 'N_/J›Ë¦°K!„�½åB© døÞýRà¡Þ`ù|/L 7/!„\r´ˆ·º^¯%„ ÇÇÇ’RRTGÕpTGá›ÍfC�—Bȹ9<<¬Õpÿ<Ž£¢À'ºfÌ,Go�ÙTJeÇQU5Ä…�Cþ^ÝßœŸÊš_Šg !ÈÁÁA½NÓT¯}ÈØ†ATUV«•ˆˆl6™¦i+­ÁÌlG‹1Êjµ2Uµiš,¥¡7‡Lf²©j.Bv.ÓäišêìBÒu�ÆÍÌĽG!„²Wœ[àEN–ÈÉP-ôÊãÿ’])ª*Ó4�„€QÜ%„\Ô;sÏ:AàÅû{ùPI!äSeµZU£òvÑ©XÞÓ”’šYPÕ ³ÐKo‘�såsAUC™^KVíVƼ»ÎÕx¢¥8"×`ð€0Œg€Öý[L5s·<;^wy»ráÜÍE„FAµ,"'¯™ùb‘Ù%Œõ°ÃÃC=::¢›—B!{ŹÞ¾ï«sMd¾ÁK)ÉÑÑÑÖ œÏéÅ3-:o!änƒ!¥¥“ªŽN@Uqÿà›s®¯w]'×®]“§Ÿ~zgm'„rµ�#¶Éƒ×Õj¥‡‡‡šRÒÛ·o‡išBÉÖ�"T5t]T5 Ã!òŠHØl6Af�4ˆFÖ©vA‚Å-û”h›RªÙÀÓ4ÕQ{ÈæÅ´Ã0H‰W€@-""›Í¦æîš™MÓd:KË"b1Æ,"yš¦œg;o.QBÀOž¦)§¯â¹ÄÌ Qã8Jß÷:Ž#E^B!„ì ÑÐÒò7€èÉŸÿ¾ˆBÈÝ¢.œ¸g9’\,�ÏíÝeÓ !„\mÔ)d{D‰dÑáÚ !D™Ý»w£™ )¥Pæ�éëçYâp-Ô™¢ IDATÓöš‡6¡]m\[{}Dă‹l3÷+Ÿ±2}N)YÁbŒ9„�cŒ¹D0d3KX_ˆ»X^×upøji§aù!-…ÙîÖ¾"„BÙ çxÑ+ï ÅkÞzó}^—+¬ ¬w@¹*lŸ»¤:��µ;Žc}¹p1‘Ož¾ïõððPDDŽŽŽª{Zd{ˆpß÷rxx(ªZ÷ƒ¯úŸ!"pÂÕk•ßw%³QDäÔÿùÂÖçqý+…�ª“;¥Ä€ò)³$œ†j~îf³©ñ 2G¨ˆ„8Ÿ°bJ nÞBˆ^ä…¸+'ÅÙ4„ å<¶×àã‡RJ²ÙlÄ»gqÞD禈ÔB£^Æûxv(#^LJf.Šª¡€ÚjµÊ]×eUÍÓ4¥q³ÎJpRÕšy§n×uªª: ƒ–󯪪•mæEeB!„�½áÜ/nøð0‹ñ³zùñp\˜… „�«�w ù‡C<¨ÂAä#–„Æ{�6Óq+Ò DĹ•RÜ®æº{ ¤b(®–">ˆÔð¢BSÌgË‘í_o‡"ûeµŸ‡pì]ÜþX(BDý\×urppP‡ ›™t]WÅaÄqø0!¤Aý}7¬»¥8rtƒˆÄBTÕø+¿ò+ÿÑK^ò’ïÿD3FäÃ]nÿ³¢äî>+~üÇü�ïxÇ;~5„` ƈl^EV¯ªjŒÑú¾¯×!D)B!„ìçxQÑ7„ Ã0ÔʹÞÉ„žr¸¥ðPlf—äV’Bî „CïàÌ9Ëf³©b^ß÷õœ7Žã½úð¨0ÍLŽ��·\ÏKÜ…×Õ‹»áÐ=KàÅïÞYë ý`þžÖqíçÙ²${±Èœ-é¿X¯r4ÿY©³w»Ø#u¿ãs} ¹Çð_û‚v]‡Ž£ZMfçnPÕc„“7æœ;U]}¢e,Å­]rÎ1Ìa»VаY‰y¨"¯o×u²Z­p}±{ôM!„�=åB2xE¶+âú‡^ïv»ª7�„�{›2¾sK„óerεCë^¦ë:ŹÞe+ Ô‰œ8v!ˆâõât®Ÿ‡C Û7¥Tݸ­ÐŠÏc~Þ™{–CØ·ÇñÅk>®ÁµïÔ:ñë…b|Nn7´ëgX/Ÿål¥hÚX¶[«é¢rŽÊºX#üZ­̣ºvCrpp`]×é8Žñ:„ ›Í†"/!{Hß÷²^¯eG9>>®�c.þm:M“†4ƨ%žAï�WSJ1çœçMrÅ5¥¤¥è¦ö}o¸^##×hB!„�}àܯw0µÎ*<°z!„\Epnk�^tôâ¡ïð‚à·/\»vMñ  ·ny ÑZΊŒÈ£¢“ÂDíQ]¿"âÅŠº¼Ö [¦;•ùÞ^{ükwÂ;ÛNG/ãïV´Å¶hÛ⯋n~Ö,ÃÜü¬l«2 ³œ³æœ«Ø[ +Â�a™«ÕJ‡a ÈKÈžáïŸý¹°ü^ϽÎÑ»åàmb^öŽqcÎ9¨j—E\FAÔÞrNÖ£¡S2„`ׯ_×[·nñÜI!„�+Ï…D4øa­pù×ñƒ!°xðÆ´„rÙÁ�ÿqÅÌd†zÞó9­KÎRßñuÕ¹ÿþûNÕ"ðn‰»2?4k×u*2»«Jƒ¯øŽ ^dHÊ8Žê…Ò2Ÿº�Ï*zæß9b½c×G6xG®ß'˜Î³$Þ{׮ȉ#÷N1ÈÊ…³»Ýæ¦7d<ñÁdv:Û4M6M“æœ ÛÝ»œ‹ƒ×V«•ܸqCŸyæ™ý8Ð!"2Ÿ³ŽŽŽªs7Æ(]×-�pP™ÏšsÖÒYæ �í%)%ˆØ(¤V³wq>>>>FF±aûu]··#l!„rorn�×ßùüÝöAÙ±Ý;ø(J¹ ¯/ÆX›ÈYm]š>OUDöFà½~ýzuB‰H-†V*–×aÃR\SÅ©«.‚bCR\æ§pÃ…&r:Á «>�²}ßooÿw+öúùˆœDk`ú2´WDd+zÓb[´×<¿<Ÿ÷Xº•Ç Å©+ªjÅ•k~UµÒ®š!B°"àÔÿUUÖë5ãÙ#RJí(õç™MøœÙz>'rî+åúD$„rÁAg¢”k‘¿¾ˆˆ–¢š5²�B!d¸0�· •õz-Ó4Éf³©Ím~"†é†D˜ÁK¹ä˜HÍëƒógG™¦iQà‘-Gç>d�?ôÐC5;7ç\ ÿt]§åœæDEænèºNW«•˜Y†ASJõÁ{³Ùø"lpšÕp‘ÓQ pþªêbìE¡f#à "s~%×>2B=¦‘:¸vUUà0®íð1 ÞÙë#€wÚªª92† [qâYÎÙŠ³×¤ˆ»)%[­VB0Wˆq†A§i2û+yÆy Ùܨ†úws^95ZÎw¦í»ƒWDBŒQsÎÚ÷½†êh¿íühßñG�—B!û¹^‘í‡\‘í\^ï2hsxçi.¢„r79½Ã³÷|Noë.½ê¸¼Ý­XÄ4ø!²RD…œspïÿžwX‰ˆ¸¿ç7Â9¶§ÕQ Ç?Àûmh·Ï­ôÓ-í#?,Ï9–OÅB´ÇÀY~8tCV2y­ˆ¹Ä3X1ëfˆ½Å¡›ý6�ûWNјï'¹w !—•vä›�Âõy¼˜¯ŸU$rÏØºö”k:µŒŽØ‚ëˆÁA!„rÕ9·ÀÛ÷}̓³Kä${péá샫�r/p"¨ÁÉÙñ‚ós†SŽ«}8×m‰­yýpØòÊÃtÈ9ëf³ eøpˆ1ê4M[BoJ©Š¼pÿꌄª×—ãããS.\/|l69Ù/-‚X†iš¶ÄY¿Ÿ¼€Œëš”ý5 â%�¸uùBŒ.‚n�f‰1šˆXJÉ2òfÑ7‹H0³,"yGË9K×u¦ªëpY––ù\ÌN'„윾ïe†S×”®ë¤Œ�¨ç5¸ûýysß)ùíjfZ®º^¯k ®'EÐU3³Íf#õ@!„²/œ[àõ…fàjòQ ¨"àBðÈ !ä2£2Ÿë¼»ÓãE=ïöl�¾W'XV—”œ¸qƒ•Êí%1ÈìØÅ¦ "TUcŒµâ¹”‚je¦p£n]CŠàªÓ4Õ¨ \CüP\ 9-ÄŸµñø�[ù”S®ý|;ZŽáÕ¿nÎyk D6ä"ìZŒQ1m%RÙvYUCqû¶Ç›•}c]×é0 WÿÀ#„´à{Žóc=§”¨LSGì´µwˆ»åü];Ëu¢Í+ÞÁA!„²Oœ[àÅC/œTøA`[àÆßdQà%„\Ö뵤”]?V2^!þÁ]c”išób¯~ý±~ÒT,!hß÷!„rÎAD"~Ÿ¦)”jç!Æú¾ªª)%UUd'Š™é4M2 ƒŠœÄ"ø!ÊpcŒuo6›º_àü‘êüõCrÏ ËKË< ?:å±^¶Þò.â­Ås×uynRžÿ™'ÊåXÊ4JÛ¬l !¶�Ï&„\MÆql;�P´²Þk÷}o"")%K)YÉà¶ù²×øs´Ía6×éû^Ž��e-#$jì¾E)B!äÞæÜïY½rá¢jÝN>G�B®èÌ9íÚõNJl¾ðÍU zppTÍÉ-Ž]-NSM)™#BÎ9˜YTÕ ª1Ì‚(³µNWþosyʼn—º$œBÜhÒ~{cºOôðÞ^‹ü¼ï4ýÒ5ÍÓ8ˆ½¨‹_«À[vÙý¤‚wJ×¶•ø¸¤sÉæE¤…aýUUzè!ýèG?Jõ‚�+Œ?µçÁiš|îv=Ï 8£ˆä{ÀÁ+²�ÿŽhEt’ï´ó#—Îç„B!W•s ¼pF¡M+v wÃgýø³yø&„�ËÀf³©/\£^´ÅˆŒjH)Uç.²¯2pºs¼çb4ç¬ã8V17ÆCQDB¡“YÐ�"ÊtˆvP)Ñ È÷E4B~{JØDZæäúžïEU«Óõæ}>²ØÇC~[<ÍÓF?øið:2á Æ�é"(˜+††áÓ¹üžmÎÛMEôÎªŠƒFEd‚ˆ[ޱ$":Ž#r‹ Ž4/~B®6>oÜ�¿,¥deă©*b^ê¹EæÎ"‹1î}ÁÒõÁ º8'¢ãÕ�ºà¹’B!û¹^ˆKE…|Ε7ö)—’²ÿ˜Ì°Þù‰ÀyÏ;J¯*åï…V-‚ª–à]/ÒB¸�ï~÷»_õu_÷uÏÏ àæ5üz¯ ë8YáÓÇ’ù×>üáÿO/~ñ‹HU£ÈIh¯ª¢›š™5â�†x�%dH)Yß÷ÚÞ3#ú–N›ûÉrp¯� Љ¼v\ýµ›Ï „BÙGÎ-ð¢²o+îâ†Ê;{EN\O,²F¹jÀÔæŠ‹Ì"h;”¢«LAáDnÄÙ­ ³ dví+ÕTuc|xÍÞB7®_¿UÕRJv||lã8¡Wc3¦iÒ"ö¨ªZß÷ÕEL¹úçÿ\Ýr¾áo !X×u¹äŸçR´1í»Àë¯Kíõ³È�_2¤r—Q\.¼y*‚åN»yð &„rŠs ¼KÃŽýp׳.Ny !ä*qVfßRñ._tíªâ‡¹ºa­pìÖ¿‘+"ÕÁ; CÜYÃ÷„Qåļ›QÔ®d'§+B„_Š„ì ÅÀLUkòÛ¿»ëÕ çf¾¡îº®žÓpc¾ä”l�BK羫Îçn½�Ç«Åa G¯wð†qéà='(\W^äç9ú8d�‘£–8 ƒx‘s–¾ï•y„\mœ@Yc 5¦öþr>ΪšTUßð†7¼7¥ô¿?ÿùÏ_}×w}׋_óš×¼ò…/|á+|ðÁ—߸qãñÃÃÃÇTõ®>ž+üsÇY£f|Ñ5BÎC×u5¾ Ânép­‘]._D¶G½úB>êËÿí§†‹€ÛÆ�àò=Ðaxý'„�{ˆ ¹¡Cï¹ï…,:Y­V’RªY½íçôž©©C.;/|ÅKå±'>Gž÷Y/”G^4‹¹½ðÓ%öçûš ·�åw?ø›òÔ“¿)O}à7ä©'S~ûW>(ÇÏܺ –“»�ŠÈÁÁAu$ÆX+›û‡ÅV ݇¡ò8¯{×SJi~š(¼Ó4…B(BcH)LC>uJC�á<‡´<ÀU¡=Æh’\ âÙ>{„�?„»|·­ˆHUØ53›¦)©ˆd3K8<õÔS›ïû¾ïûPŒñ_Çÿá3Ï<Ì,¾èE/Z}û·ûK^ûÚ×>þè£�>þðÃ?~ß}÷½ôðððQ¹…/q Æh/°‰HÃüuù*Ç&‘Ý�X‘ù~èøøX¤txàª:ŽãÖ1ˆMnŸ™Û÷îЃxë?W®ùB�®ë$Æhh3¾·nÝâ !„ì9çx17T=—þbŇMr™xà3ž'/ÿâ'äåð äe_ôùrãáîÊrV×äE¯~…¼èÕ¯¨¯MÃ(ïÿÇÿDþùßÿGòþŸÿ§’²¬Éå纔’LÓ´õÀˆ.9å ºêN¡…‡b_Í½Š¼x­[S )%­Ÿ¼ê‹Q"1¼»\eÎá¬C‘ !WÓÙ¶_�¼)%…À[:Ú²È|͆¡:øÊk&"1Æ\2¼óïýÞï¥þá~Œñ×Ì,äœCJ)<þøã×ÞúÖ·¾ô‰'žxÙ‹_üâ—=òÈ#/}à�^zppðüÝm†Ó –!Æ�­>ƒ, �¸nó¹„<ú¾WíCô‚wé6± Õµ �µº[= wrê,O¤~�!ìZq[)þëÅg33M)™¯±Z­èè%„�=çÜ/‚äý… ÿ£ó¬Êœ³‹€’çˆõõkò²×¾zu¿ø ä‘¿pg.ŽnÕËç¾áKäsßð%òÌG>.ïû¹ÿCþÙßÿ‡ò;ïÿõ�´‡|b|~¸™É8ŽõÆÕ¹}Îß¾€<ã"ϰ9—ceÕÌ´äî*þ~μgÀ!�ÿ¥¸C�<4ú‡8 Ñìû¹É»\BÈÒu�…TU%¥d¥'e+ñ cÌ«ÕJrÎ6 Cuû¦”ò4M±ëº ª9„¦i Ó4…”RÈ93 ¿üË¿|ó}ï{ß/‡þ¿¾ï£ˆ„qãO8¡Fû­‘_pèâž³tXÜ»RFëÙTÕrÎZ¾çuš‚ŵ¸þë2…Oà„²—œ[íÚl6uè2n–RJ5ø7^>£× $„Ü yôòš·üqùÂ?ñ¹ÿùïº9ÏšÏxùcòUïüù²?ýVyÏß|·üß?ñ¿ñ{r 0™G$ÄeµZm9P°Åß c8næCòñ�|·+ñ)âŠEî˜ §þ3¾É¹Ñ‚ö}�<õCC½£Üƒ¨èMÙ/Êè¸ÑB°®t^—‘$Ù ážÕ¥Y¨…È›EÄÊh‹PÔ¥P:‹jÞw!—oœ¦)ªªu]—U5K‡pÎ !ì,‹×(œóp]©dUÐõŽ] ¼äñÀÔ‘KÅI«pê–k°±$2×#P=9°´y#%^IrβÙl$笾Ý]×ëÍVù~£Ǥ8ueŽ[±õz-ªª›ÍÆ�Á_>jªªëõÚbŒzttÇ¿\»vMoß¾Í BÙ3Î-ðB°aѲ[ºÕJ^ýǾD^û–/——ü�Ï W÷x<¼ÿ†|Í÷~»¼ö-\~ê‡þù­ùk»nÒ=�Šœªv,²íòç?Ÿ»‹Ì«Š/"wVž°ßå﫻—ßQPЍ�ܱ ü.Å"B®6þ\ò8EUµë:¸öêÛªdÎå5UE†/œ»Vˆ§D^qEU5šYN)eUÍ%»·êGE`–ãNþqÎó# –‰lƒö×3ž#É�˜¦Éç9Ã-¯¥[SJ dÎá=©ä²ñ« ÷/ŽKD9À¹ëÛP:pMжk R5_©7«a¥]VÚUã!„ì2^7LþÇßhúJ¢~()!Áó^üBùÒoüjù‚¯ü#rxÿ�]7çBùÌïqù³?ö#òO~êÈÏý7?ÆØ†‚៛ÍF†a¨ÃÉ,Ø`¸¶t]‡!ÝYŠ•s6UÕ¾ï­Ä½äÉ %’îÝ*ðæœÃ8ŽYæâlff6 C} ]×iŒqg^ç�þûòžÿöïÊÿó“ïÙu“îI pâ¦ØGÒ,EàÄ5\eP¤qˆUTÕBV†oE�óÓ[Ž)¢Ž¯´�ÏBö�Ífc×®]S‘išª#WŠÈ‹´ò~ÍâDVgŒy ¹¼žU5ào+9½e~QÊyÆÌêðn̯¸„Cag'œ[q×_ƒð>Γ­!…�´ÉÈõî[‘PžmCAsΡ¼‡ï:Kªà‹ÏBôµ·$²UÃÀY³"ãZof¡·:ôsÎYç7³{óÅ=œ¹¸Ë9ËÁÁ�ó @!{Ä…9xSJÕÍÖ:x»®“ÃÃí|^8à˜ñN>YyÑ ä ßúÈ|åÙka·åúƒ÷Ë×þgß!Ÿ÷Æ×É»ÿÂÉæÖí]7éžÂùă¢ÈœC."[®]ˆÁ:g¶ÉjµªÓ]5àx*._å¹f¼ÁµÛó±]>ôï 庙�ŽŽPDEd~ 3/hŒãx*¾�²Ÿ|ô£µûï¿_Kt‹u]§(œ!¶ü¯f¦ÅÑkEPÒ£–i�ñ�Ëñ�RÊ)¥c ëõZÌÌJ¶§ž4ƨ]×…#аí<ƒà÷¥ÿñþz½–¾ïëg0"‡�†­šå{%¥ˆ™–ï�t]JÑ5Dš„2m�9‘ÙP:NTUuµZ©ˆÈ8Ž W¼w™£S=Æh]×Iß÷ffùøøXÆqÌEðÍ.rAåDÔ5÷ÿ–›·Œ8³‚ ÀÚê¿Û„B®6çxû¾ßŠ`ðy¼^ñî"\¸ùdxäÑÈýÖ¯—'¾êõ÷”°Ûòø}¾¼ã]?,ïúŽÿ\žþ½ßßusîPšwð.eÓâý«NëÜ…SÌ!ô‚B©òlÈkÜ]Ë÷ƒâºÁÄus¢»²y*¿�²Ÿ<ýôÓvýúud|â¼ìó6Q'ÃPä çéâb­nÂ’Êç4çlE863‹e䊊H !hbV63N;ÁuBž9�/„ /~÷"²uLÍ•ÌæÑ¨Úu�æœuG�¿FÙÕÁÌbùž3‹åûeîññ'5—·¿ŠgeŒøB§9(Æ©ìî­pO€�ƒ9—eŠsW×p™W½�%„²œ[à=<<<³Üç]ù ß|þ$Ÿ ?úòGÿÌ×Ëoz½Ä+œez‘¼àå�ÉŸû±‘¿ó? ¿ûÁ½ëæì?ªrppP?m'•?§áwÿàxûöÕu[ûa¬M¡šª%ç¨9²ÌÕ�ùÔ|NB¶Z­r×u&"y³Ùdˆè"ÕY~ª¨ÊsßRBÈsÍ­[·l½^#Ãm,‘½‹Ž:K)AðÑr} •9ËSsΡc³!}ßkß÷ID$ƺ®Ë)¥t||Ëðð��s�ƒV¦¨ï¤L)É0 2MS½Ž÷}eGØ�»F£Âå.2Çm­×k�¦I§i 9g†!ñ6†Bß÷ADâ4M5ÇZUCÉè ˆ5)™Ý·¨Å IDATŠÈ„’›]¿ÇˆVI)YÎYJ¶•Ž—¼Z­r!�ã˜SJ �5KÏתšË½›b”Uy]û¾·£ŒãøÜm\B!w• QË|ÏãRÞd¹8�º<÷`^}‡¹;ܸ.oüóo—/úÚ/§°»ÀŸñ.ÁÅj±¥â²ªç8ÝdvòFüH‰h0³˜RÂïAæïŸ†4ÆX¿o¸×‚»Vdë¢^ïÄ9wcŒ©|�œ¹®½å«9go—é0k¸ý·²û !„\}έš•Êžµj/†1CÈÅ…=å¸`Öé.b-ÈÞñÄ›¾LÞôÎo‘�<¸ë¦\jï».ßòßÿ ü½ïÿòÿ¾çïº9û‹™IAú¾—£¤”0üuQÜõYäÈT»Š˜™ô}_ÏÙxbèºNRJR„‚¼Z­BɈµ”RÇq§•Õ÷UµâÒÉóóØì–+Î+N4³F´ »„Ü3 ð•� }HdÛdQ†”›wþë¬P©»wÏň¿!…rÎÉ)%+Y½Vß��oàÆ½mq5˜RÊ5ì9j)¹* ’âgÎY§iª±&pÈË\`-t]D$þ­¿õ·>ûõ¯ý›RJȳV3Ãÿ5¿®`|WñÓ¢¥€­Ì 28ëKìJÆÿ1Fûþïÿþ¿ó?ñÇѦi²"*‹ÌÂp£¸j&0—BöŒs ¼¸Äïm/.Xì!$φç?ö¨|Í÷~»¼ìµŸ·ë¦\ºU/ßðCIîþÃòó?þÓ»nÎÞâo¾ý y{Ž;ã&ý¹iä]ÄŸçËÃ2²_-Æ(!„Z‘]JÁ�¾ï)ðž“‚¥™,¥bvŒÑT5«*~‡[g«cᬇFBÈþ‚N¸ò{�a(¢'k1](F`Ñ©º‹\´ ¬6Gïd3«â®”s’ì°C 缓‘�ÒvvÕQ6~Zž#É×®]«…ÏJ¦.:¶„]=!ˆH4³øªW½ê/zÑ‹¾gí~å+_ù?«ê͹/fqUâÔårב“lêßÀ/!„ì’Á;Ž£Œã(Ó4É8ŽÕå†ü"8vEjV£”žPZŒˆˆˆt«•¼á[¿^þðÛ¿VbÏ8†O *oú Zžþw¡“÷.±^¯%„ ã8nUìö~8؃‡GTb‡ƒ¤>(¨ª!¶1çþÊþð‡?~||ü¯Öëõ㪺ÚõŠ\5Æqü77oÞü Ì"J7DsGK)Y×u¶Z­¬<ЮÇÅ�³Ç!ä“Ķ¿ø§½9!åœ#ÊëpæjÎÙÊ9Åʈ +QE†ìõ�¬dòtUµ>“øh8?ÂÆG½S~/¹÷˜¦©ÞÏ¡ZqÚ¢¯œ¦)Ø\Œpg ���Ã8ŽÑ̬ëºZxmš¦0Ž£9·°–ï¬ GúBÈÞq!Jšï‡+À÷¦—ê�‹¢ÇÛÈ9yåë^+_ý—¿MþÌOßuS®4ª*_÷ß)þ�ß–ßùÕ_ßusöºípP?³äº$Ï¿Ÿ2ÈuD�òÀlå ± –g«† ¦w¾ó�úîïþî¯ü´Oû´õ_ü‹ñ±×¼æ5¯|Á ^ðŠ|ð³oܸñøÁÁÁg÷Ë=Í8޾uëÖ“O?ýô¯ýîïþî>ð�¼ÿ]ïzׯ¾÷½ï½©ª)„�Šc·fï¡Â6†oA¦A†ãz©*!äžÂD†‹šÕ !ï!Ÿ¶ÔÓ°"nY1iXÎÙŠ(Z‡Š‹ÔÞ¾�]ä|öô®›³Wl6›zÃ�óš?Ÿù‡F/_uq׃s:ªµKyø/ñCý¬#)U§åæÍ››ïýÞï}2çü!3û1ÆØ÷}xì±Ç¿ù›¿ù%ŸÿùŸÿÙŸù™Ÿùø#�<ò²ûï¿ÿe/ØõºÞ ¦izæ™gžùàÇ>ö±'Ÿzê©'ßÿþ÷?ù3?ó3xÏ{Þó‘’WœÀ8ŽIUSŒ1Ås×uYDò0 ¹T¶7™ÝÕ²Ùl ¥Ó4Õß»®£ÀK©ŒãX/HÈæíº£/êH�®ë¬¸ÿ,„`–R²ÍfƒÎ¼Ñ#²ûëœ/ò ¡Ú· Ï(’Š‘˜ž€cÂG~ȶsWËH¦�sVŠ­u]·S�wǘsŽ9ççàþ ¢³ªw?v¦¸ës« !„\}Î-ðzQ×çRÜl- {$~�gI°–7ÿåo“/|ócÏñ]ä¥_ø¹ò'þÒ,?ý×t×MÙŠkù»­À‹c¸{C[ŽK‚ðUãúõë[ßYä.÷nuñ¶9‡ÇÇÇ"³Ý4QDRÎ9Žã¸5¬ÐÌ¿øÿâé÷½ï}ïSÕ_öL^÷º×=ôæ7¿ùe¯zÕ«^úè£�¾äyÏ{Þc>øàg­V«Ïù‘œszúé§ÿÍG>ò‘ßø·ÿöß~èÉ'Ÿüõ_ø…_øàOþäOþέ[·ÆœsNsHe¶¹@Q*Åèæ â¹HZRÕ< ƒ™Y*¯WÑwš¦<Žc}Ù RDÞ’‹ŒcÌà çÃ!äÙ‚‘9g-52j‡2½�¸ë‹ª]Š Îy^Üõ×+\�1º¡ïû:Â�/iÁ±ã:M½@ZãÜOÝ¥ƒ·ˆºZgŸŒÎ9¹õ‘%Ì¡&„�ýáB^?d�;‰»óÏy[@® /|åKåþËï‘ç?ö™»nÊ=Á¿õ«äw~õ×åŸü/ÿ`×MÙ Šsµþx–n–}§×>¼�árñÀƒËåÁ¢n3³RiÝŠ(Y]%Åù’SJ!çÊS‘P`UÕXÞlfùçþçÿñ?&"ïË9wfŸ÷¼ç<õÔS?ù\mÏÏþìÏþ�_ó5_ó³9çID¦®ëÒÁÁA !L!„df ®Ü"ðÖUÍÅÉlf–¦i²”RVÕcÌ>s7¥”Ýç·²/ʼn¼"R#Êv'„�OHß÷Õ�±�Okã8bRk;ç/õ­}ÞðÑI"rªÓ ‘„xº®›x3En­ëÀWE¨"¢]×!ƒWÍ,”Ïì3Ócˆ1jqñBäq´§‘Á«"b×®]ÓÛ·oïþËL!ä\\ˆÀÛÞXµÿ·¿ãïù¢ÉkɽÀëÞöyãw¼MºU¿ë¦Ü3¨ª¼ù¯¼C~çý¿.¿ý+Oîº9W›9—PV«Õ¢ãÂK…^öÅ©~ëÖ-‘ö!zë^ª®‡Ùè•}–£MÓd"’»® 1F8L‚çKù?©<,UÑg‰x¨"ú4M;³_•á�SùI"2©ê$s–î”RÊÅ¡‹x…¼Z­²ªæišjÜÖMU_‘SJYʈhü�÷evDgƒ}ZDº®38Ç�C!Ÿ�ÃÃC9>>>qÐu]uÆúŽÌË4¬{IpÆzt]wê}DOøNXBDæïò™]ì–ÚÏ¥%¯ZSJcÔÕj¥9gE�³išvvÃ7Žcˆ1†ÕjÆq”Ò–ÏàMþ¹½ÜG]ŠŽB!ç缸`´9”KÜÉÙKö‹�<(oýÁwÊgÉØuSîIºU/où«Vþ»·}7¿oÀ� CBt‘­¡¢"û!òB4,ùµ3~wY»®Û‚bèo™N‹€rΚR‚Ë$”y¡ú3~r‰m¨.`lײ­Ufau'„±�rΓ™M)¥IU§”RÊ9§c*nÞ-wnqBWWnYW‹1æY#·*âŠsî–íè°}NÞÂ¥^!Wƒ;Ý´×/çb¼ÛÍzV =í9¯û¶âÙ£uóRè%%ªdé8×r¯Žã¨9ç� ¼ÅE §n@Á[Ùvàû¢å¾Õ¦iâw€Bö„ x}æ$ªÒÞ Ü\±ÈÚ~óÙ_ò…òÖüOäÆ#îº)÷4�~ÎËå5_óÇÕpN0duéüæÏƒûš�jfV*GW'W‰`¨Å×D ¹ uÔ E„„û%—Bm¡<€+Õž»®«Y¼2‹Ä±ä@Vu×ÌdG¸~w)ðæÕj•D$m6›)¥4 Ã0‰„Þ$%w·ßIDrJÉ»ÐuÝ–pcÌ1F¼(^‡éæðÞªûŠHIj(ÛÇàåP^!W‚[·nmÅ@õŽ^oèð×Â] ½^Äŵ 9»«ÕªŠupf"kÔ_·oß¾½Óu —ƒ££#éû^Ö뵨ª Àã[‹ó»F8ˆˆÄ·ÄSÛq‘µiš´·BP|Ѿr/VG@u]'}ßW/!„�«Ï¹^‘Ó½ûp¹- Á´tðî/ª*_ñ�JþðÛ¿V4\}çâ>ðþíò/ßû rtóÖ®›reñçµ%Ðq凳îElD�÷­©ªÆ ëïÜÌ–RRh»E ö?YŠSWŠë$ÆÊt±ˆ¼>±íkõj™3}w¦¤‡r×uYUÓ8Ž)¥4MÓ4©êTœ»“ª&3K¥�Vœ½>zÁðæY¶-DõŒí­ª–R2¸îX4 ;¾uëÖþx„�»Ê’¸ã# κ÷q »Æ·å,º½†Cä%DDžÕý›qÝýÍVÂ.(£¢t®Ç:7 �ê¸wj?Ó~—÷ñ¾•Bî5.ÄÁë 3øA\,¦iª7�>·ËÌÁ»g¬®È7þõï‘W¾îµ»n q\èùò?÷6ùé¿þ£»nʕ紥|Sœçà$‚;ïí“›×̬ï{]­V’s¶YϜ㥠nH`qH!žAcŒZ®šRÒÍf“SJpñf›+A‡"‡q-çl]W/WŠx }ßïRà5UM!„B@ÖnŠ1¦ÃÃÃ)Ƙ†aHÓ4¥²nµÈZÙ&¹¸½áÔµ”’g4¹ÕÝ‹JönÙc´®ë$„ Ï<ó ¯¨„�Oõ‚O+ö´×4ˆ£»…RJ’RÚkÑá%"u„¡Ÿ#m.‹8M.}ßKÎYŽ��·âÐ1à;9RJ: Cý»ˆ©;kû0 Zî¥tš¦ÚžâÜm3xÕÌ 1w¡F!äjqî;?,w)ÿÊ_qc8ƸþNrÑ<ôÂO“?÷c?Bq÷’ò¿î+äŸý’]7ãJƒ!ðp“âœæÏƒ­ûã,ÇïUfGëû^º®“#¢¬8N«(©%s¶D8äâNMp¾–ŸTri“ˆ¤œ3òlÓ¬sÎY¶"RT9Isß÷»,²fN¸…K± )„0É\0nÊ9OeÝêû1ÆŒõÄzåœsJÉJ´EVUŸÉ 箕œ@+û€â.!äSç‘¥Q*È$ÅûÞÐq€ˆµ”‘�¶BàÙŽ˜À{„tøx’4çŒÈEþí.#%á�k7‚vK|öõröuÄ!„Ü«œÛÁ»Z­¶rº¼£7\¸„â³*• ï^ðØ¯’·ý×ß+×z`×M!gb”7ÿ•wÈ�~Ë_ÞuS®$›Í¦žÇÖëuÍf[¯×B�Íf#ã8n i9y˜Ü·‡È�}ìcvpp€¸w”®V++Å=|ñ5Ë9+þÏ9[JIUUV«•Æm³ÙhÎ9”‚€¨?æÑvD^]†ï/!„�‹åÜÞÍfSoŽü�_;Œ ?¾Â|ÎYŒ!¼WU•¯ü®o–×½ý-ë¯_ù�JÞ÷sÿ§d>Ô|Rà<‡ ^½›Í¦:„–Ø÷›çÍfSW°dêŠaRDjFc©ì,%®nÔÿŸ½7³¬*ïFßw­µ÷9§ª'º›fꆚPQQä^0qŠÓ0š›EýøÔ ÉuH¼â¾è—àð…Ç!õÆÜÄáÑHEÍЊ1*<~`$BwÕ9gï½Öýc¿¿uÞ½ëTÓCUíSÕû÷<穪3ÕÖôþÞßû[< VÌìó<�ªçw:Ÿ&Ë2Ÿe™'"½1Y“8E¡ÉëHòÊs!Ïóú±z±¯ˆ�á5"¢r^úoï= ‡Cš™™YÙ�«E‹K‚~¿×éÚ†kvÌsõ}4&aí2 ÇŽøBû°®N^éós‹}‡nÛšE¬ …8úÔ¼M!Ë2†—.íÃá°RU‹Ê¨ÝuhûB‹-Z¬ ì7Á['5ê ¾úïšøõÞ·›¬-S¤S]zÁ]E�8ëqMJ‹½ÄšMè”§=‰þõ‹_kúP– �¿ÚÇ�hîx C¹ÑŽFDo´l@�Bà<ÏA€r’$,J£ü{ÙZËÌì‹¢ðb_b_ÐØ,›*‰Þ¨PqKBüÂ^‚Jâ7ȵQMDs ]A|]ÏŸDDyž·³g‹-šäÑ$–gh‚·^¹×4Ñ['ã4­ÇPüÔŠF|¦E Y›ìÖ{wÎ%qÊè7MA“Ð\í�LTí«õv�϶ý E‹-–?ö›àM’„ô.œ&dÕµ*€ˆâgÚ©dùaí¡é¥×¿…;nkÓ‡ÒbñÄKžÝ¼ûˆ:ᦉÞq‹ãI~—šxTAFÐD!™¯Ã‚@¼u�1Ö!ÏóH¢B-‹ÍÈ8M"*ƒÁn·Ba0àÜ3{çœ7ÆØ7`ã9X0(Â[oR7çû�1”çù<üo‹-Zì?¬µ•äeÜ'£6i;¼ïϦ…"È9Mîj_R¼G¬u(Ïóx®­ÿh ¢j?¨Ï¹ºm•í.Ë2rÎQš¦•H€Bí»nû8« •8nìø[´hÑ¢ÅÂ`¿ Þq¾]Z¡«';øþè çâ=V6l9Œ.»áítÐa›š>”û�-'o§#O9�îÜñæe™`ÆSÚ¢E‹ Ž¢((MÓX•—eÙœ9Žˆ"AZ·(j:…XÄ­N¥iJιÊ{ˆ¨RYØ¢®ˆY±™öuÆülŒ¡4M‰ˆbÌÛd?¨ÇÜDs­KˆÊsÑ}á@Ù¸E‹-ìw-Éî&L’ÚÛ~ bÛ9eYàðŽ¡W~äÿnÉÝ„“Ï{­=dcÓ‡±l v%Þ­Z êݽ¿E‰ápò<‡Ú¤nCÛ­bÕ›ªEÞ%<ä ÆX+À{7·�ý�ä`ARCU¦ÉÝ-Z´hõj¼q ´ùöט„ù – õcy"KoôLÔ&ÔZTñp p¢Q5*È_´/Mþ6�z%ŽQûîl'Ú~ТE‹+û­àÕŠ\ï= ƒŠÿ2ÿÈúÏÎÎVm¡ex'Gžr½ìýo¥Þê馥ÅÂXKg>ÿYôÅëolúP–ô®âšÌ­ûýÕË÷ôf5-æE Ñæ%Pì²÷>`§çÁ`TÒ0’ªM_WÙ­^»•ãcfxïÆc…�CQMrÓ-Z,Œ1 ¥'¼(‘̯ûºb-XYkijjŠˆˆfff¨( J’$¾®ÄmGYd„c-ÿuô)ï=eYFý~Yöƒý&x5êYÀz ”÷>fØG{!� ÅBãØ3N¡—¼çJ§ºMJ‹EÀcŸóЗnø+Êæeâ�|½œ³îæßzC‹Ýs6ÆÑ×¥‡“`ÍÔ=ë˜UJ%ƒs.h…PÓa‹{ƒ$I¤‡&õ°HÖv5uÒ­>Øè 㪮ðRëIÖ‰2õ|óƒÀ C=øÑóõ{×4±«�ƒhüœ ÉÜqDn«\l¡�}bÐVŒ1L²@�UÒžõœ? ý`>ÔWZœ@Ô®C& �N‡õ¸„D”ãq“z5‚´Õ{é{=Î_ |®>33'IR±šCµÝR_“-ÌW‰„ö­×5x’ÙzLD¿²ÖF‚XÆûeÑþ÷›à·Û¨^„c°A&‹y”¶´óÊäâ„'?–^ø®«)é¤MJ‹EÂÔÚÕtÚùçÒ­Ÿù»¦eâ�1N/€ˆFª ,ºð^X´äž#I’¨ŒÑ×Oc\ùdS@�$‹áŠ‚»îÍìœ#cLTÉ¥iJ½^�î»ï¾ÆŽ¿E‹ù`­ÅN†d­¥4MÇ‘¶LT¶íN§SÇjZŠvžç•7úÞOT Të.ã:;Øî#ÄKœˆFD;/µ9æœÍÕæ#O— h?u¯ûz•Ç|¶Ƙ¦7Yc¢Q‚Ó9GI’Då¥îSûÜW$O±OJýœ‘¨!)“$‰Šüq„¦>¦4MiÕªUDD´k×®ec?´nÝ:&¢¸æÈóœCŒqÍ{OÃá�‰ׇEË$÷NÚÏ3&- ò�AÀDŠ a‹q-ö'Ÿw&ýÖþn£‹õK c �xÖãèÛŸýû¦eâQ_�”-z�‹R™¦üË:(€p¾rÔºwÒbæ{,‚´ªbܱkÒDgʱéO‹K ­¸Q¤kE™†¿õ�3|Ú>È ô_!ƪìuÀ j%ˆ1&(ò)àûäõ H©@D1ÀçkV¡v Z½ÖB -3ÆUÜÕ¡VM&Ùê˜ïXêD‰~~¡•—Ýn—±9�´U†Kÿ_´c­HªŸõcž�ˆÑ®Énü]ÖubdœÏ²&Éuµ Ô†úõùJÃ54ÉÝétâsyž´¡N§Ã ¥¸G0®�Ïé�ÓÔßÒEnËg ‚aIRŠÃ Û·ÑŽ �KžŠ?q.EQ°"GX#㜠Ƙ཯ø¬ãþ×Çk´)uƒNà­ZµŠwîÜÙŽ³D455Å î4yGû{LtÔ”òº=±ê�q~•>Ç Zõܧû¿ú_£/­]㔨ƙ ÿ'•ö1q#m ïù¯“*„Ùš5k¸ßïÓp8< ÛCš¦\·:’¤ Qe¬–Ä ëÊ =oÕŸÃûêg}>D;Aü¡×�º}Ô9 |�V‚ëö…ÿ¥‰M!N÷y\ïv»•±HÎQ·;ÖóÆaü®æ£J²¯NLãw­ˆVk›JÁƒVìÆ5)È_vôó$I8˲FÛû~¼ãY�éÁ‚‹ññ·ëì‰Á¶3E/ø£«Zr÷Ä#Î~|Kð> Ð/vç «½ód[ÔÅ30.HÄßÖZêv»Q¡ KÛš±XX@�Œ€ /”äjUWÛ.Z,z½kO?¢QY›€Ñ¯ä5bf–òåX²ŒÏc¢‚÷¥G¥R&Å@f>ÝÏëž�ÌÔ®ÆA�¯Þû TPA>äóa0HŠ:ÉC¢)`.K°U€<Š‹&�ÀO+|tòJçZ9ªƒÃ¦ ï£¶�¨“�x^ûN.Ôœ$I$l8ÓHHID«Þ§½/Ç‘»ú>ÔúCì?Pb1s¼?ý~¿Bhâsèõ$Œ&¡Ãiµo]6n–:ôq¦iJÌL333¡( –y2€¸RŸÙÛSYÈõŠãÚ”^ð8ÖŒia¤ÐeÙðЇÃ!{±oò€½÷ L¨c5Ñ¢B¿33;çXYN˜$I<Ô„!êv»dŒáÙÙÙ ctMé~F4R ªkỏM�ùM]�%ë~EDº‚¹’ %ªX±hÅuü.ý;æg$°¾„Õƒ÷>öwÜí¥*߯4z‹je.‰e‡V«ù1Ј0ƒ=RÐÇ­B¢(Æ<ͽ^�œsôÀí{èñ„ î§\ÃÊžx]îcÞ€B[[îàs¸îø[Ï5š8Æq Ú¯U·º¯ëï©W˜à3zý(cC�}Ub%•² {ÿ“$‰Y†0—Æk£Û’#òªXâîú8׫ÖZ¡‹ë/c—¶ ÂW"9䜃êÛÕiš1¿”$ u»]~衇kç ®à­/Æùsá=Þ{ ­†w"°ù¤ãèÒ?}3¹4iúPZ4€m�{¥½. gûÿæ:pÜtf“c“Áï¤%15uÍ- Ö‡V04 ,pœã€ãWäX%8nÑb1ᜋ�6%¢Øvu)(âθh–¶ËjA�À4þTýW/6õ©<õ©•DèÓEQÄÅ6ˆ]�r¬‹ycL�±9¡jS ÖÊ �øŒRºðÊ^ŒSDÕµ<þ&š«7n7�úÜ É]�ºÐd!޽ÓépMÔÂ6æÒþ"¡¦ƒúšÿ_…X!š{/ 4ÂyèõE}�‚`¬ƒDÀï _‰æȪ¿Wì)€ïÑs1<±1¶èÍiˆ¢ýD`.ÕVú>�ô�³{A Î æõX§x(‰£5M–eúž`üIg¤j¼®±Ö*‰cŒ�FÎ¥Ñ ÖˆÊ±m(„`„Ø5ÖZcŒ1r !W…‘ñ4à¾ù¹6 ¯U¹_±*B�Ų– °¹Pà‚*´'¨pÑc‘U›•’²BÿP}¾¢ºVßÛ•tŒë޹ß)÷´Bìé×ë!ľ*?µgC$¼äyfåCŠ+Ô½ºÑÈ÷‚D‹„°Œ'Áû²œ¥+z§§§É>�‘ê¾Ä„Ÿ¿+D¦^ÿ¨¹f¼Ï:QŸ�ã5EâµÎÑáë„7Q5F‘q>�¼ÕAvê÷3s€‡4Ö^j¼¯Øuu»]î÷û•ûßét´€ ²ïþ¡JÀÕûF%"çY“Yͳ•ë�sÇñb>’äf�û…¶Œq4®M󔉅ZäîöµápH¢"‹¯�ûL‹t†k…à1MÓXNTÍÎÎŽÍ07…q›a¡@TÍŒë‡Î¾·h±Ð˜ššŠeáuª•¬‘ 0•Ê |ö£æJª½z3 Vžf‘øÂÙét¢²Hyœá³�(ª ƒ/KÝHJ‡up@@c­ ² Ç"œ˜9±2ƒ’$‰%§ZѨ•ÀºÄz>…ÉJ…V:ê€G�_xߤÙiC?ꂤ—`wø}ƒhUóTìišÆÊ c w»]FЪʵ£ZI=*Þ½€Vðj5æE¢±JøØß°W>_ßœ­Nøêk«ÕcÝn—ˆˆfggQŠ:§/�†%‹BW|çq’$ÁdàÚý r.‘ÌÚM�\¹ÑÔW\¡T‚Ťˆ7M¨Ø”E•"Ë‘`Ák¼÷†ˆŒ €%yAD“(w­µ¦×ë±sŽûý¾ÉóÜËi„ð ¾¢¹ ̧r.Q�Å.žC;�óDR NzÉ×$gbD˜ê‡Êc¬жåF-1Ò4elT+sM%y¤ÜsìT@Þëv¥ª+ã ÆÚq‰sÌKDã+Ouò]¾žÀý×£ò㈞HƽvÀ:NÇ>°¬Àq*®°r­TÆ‹J }íê øúëñð5±Ž50Î ""cLe.æ/¬3ñÆÂ¢(‚$4ƒ)­oB�Ò4¥Õ«W7¢ä]‚·¾y€.×Ò‹½XÔ“y‹æ°öÐ�tÙ‡®¥éukš>” ã¤sß¼»�|0éàw½FŠNxµ˜XÄêk‹Å¨VÆêÅK=[Ý$Ð.t›¨ϘëjJ­–àm±(@ šJªc¡<§üS MvTËÒv5‰IYÄÏYDë@j y>Ž�Z©!APPý&¨¸#± 'ð;h¡ßùRá>‡˜!Tv½')y¡”«+µ1ÇÖm¥ÆA¸ñw¢jé¯RéÏAÖM±Oƒ@‚§!TOŠp B!ˆ*å®ïp0tá'T¸I’ ÙÉW!äõ¸W+Y”—œeEaäÞY"²Dd}iÍ`C A®6Ö¼÷&„•ÅEQ˜™™ÃÌÑŠAÅàúú‚ �ÊMôqÙ/ ƒ¨nÃØlŒ I’ Z„Hzý?¨ö¹e«äív»œ$Iô’–ê2†÷»z«ž#É$ÄäH Å6ÇÌŒë)J@øA3ó`0ˆ¤/Ź]%–êÿκ³( ʲ ·ƒH’,,„l­�`^­$Tñfdyˆ(&Tó<ÌL½^soLúàú©ñ óö²m«V­Š öZ2�Q•PE$ïi”Pg?™ˆâž¤ÖW¸/˜×ô<­y7"Š•*š´Õ¯£àvÖ+õûÔßñÞcM„v"Šm$ï‚T_¹®Œ5¬×˜Ï´¢D,®×p8Œ¶ µk׫2æÅq?TnHÆÄ~2Žë!km�xÞƒà½Ýn78炌�„oÁë¹YÚ;Öš�n´¶  h<ºa +)¸8_ÈH§ºô²¼•Þº¹éCi1!˜Z»šŽ~ÌÉtû­;š>”‰FªÝ?zòÕ% }'©¤u’PŸô¦¦Î©$ Æ‘íM >ïUÞø[C¾»kS-Zì ´/Ñ( ‘r$–·�訩"@Ž yÎ&=Šä%�(R}‘Õ½ž“ðBß‘MÙ‚_¢�=Tµ=çÆ{Îeâµ>ÿþÖ勒dV1æ|ô?”¸‡ò–­g3Æm5®Çûƒqmk(Üky_Lb]”·2._ýÿbžÓJÜzÒN�™xϸ9¯×Ú€þ%¨çãïzå6Žm†FD+U­í0—ª„…^«"‰W}Íày|u­âudæ ÁŒ>�6-횊¢ðçò<÷Ò^½Ü—ÀÌž™ �*!¼#Ä䤴‹%_?.Á …n€©8Ñ\ÿ—v“µ¥‡M½äÿ¹†6?⸦¥Å„á„'=¶%xçA’$•IT-|£JW+P%KNÎ9J’$*_ZT�‰×?µêsˆ¾î˜S´jz©¡ç,ÊMX‚ ÍQ’$¦?^$�ð} ª˜™Å‹;&?p,¨°Ðã43xžöûýB ÜWU‘û))Òd¾1Æ;ç✬ßÇ£Ä)<žIyàøcÀ€ ’je¡,¹TNè@Ê‹Xš ‘¼$CåÉFrÇŠ~*ËwSš¦ËNy¶'˜�쬓¤DTYë×6}Lõ1WCšz³µ½õýsÔî¡ôkÕª,ÈcT™n]Y ª&×ë^³s®7îÞ²UÏ—z>Ò÷ c Þ‡çâ¸~jÞ‹>„ò~pèc¢¿ƒð ¥Ú4&|õ÷Èù2Æ MîÊý€" ›SÅD•Œ?q#±/1€û2F+Ç4™@D†™ñ°å­´ŽÙB°ò½�À{o�1VH Œmz=ÂòšÁ{HHwkm�kôõÇOü%î¾ßg­õDd@âPy½=Æ]lB$ŸYòk´—ˆä.þÖä�<�Mùˆ”Bó$!X~(B*&T™*ñ8&EßÝJ2‚F Õ˜TU}:¿ñ€ÕºK‚Ý1DJiOŠœ#EÌÖZÜÀ8ÿÑhb-?Ïh',^¦j r ÓTÞFÑvÃÈïub¡éŠî'î@#¢2ŽWhh;µ‘JÞ«9®BôâwŒ÷DÕЍlÖÚq>´DsÉtMìb�×`\&�@úz5FÄ6R¾-&àã\¥ª]£"]Æ)ö¥w¸^kÂÿœ¹TÎÆ±]Ôïq�Fë^ƒùƒªŠÞÌgHDÊ<ãCÏ|Qžˆ<„øùœ—㊠3u_bU˸õÈbbA^xkÙ5|j„•¯düñžÖƒwiñÔ+^H'ŸwfÓ‡ÑbBqøñÇ´>¼óŠQz÷ךOÈ�ò·k1E¹›jÜ�ÛCƒÁ€fff*‹¨X´àÑôšÞËâQÕT�N'>_DæzÖ¢ÅÞÀ9Ë1e�ž,�8A$�‘D1ƒ "2ÖZ˜Fâ�Ê‚™F¾ŽŒÿA5%�ÈÞèÁ+ëBî÷ûD4"ˆ`¡€çƒ £$Œjä.^ë¯H Mðzõ‹‘Ïx"òÃá0ªPðY%òxˆ² ˆˆÂÔÔT<·•¸›F0VÕÇYýzÁ‹†Sñ7±ubÁæœ~¿¿Wó³¾a¤ü$’ T”G‰“4M9„`ƒA L½÷¦ßïG2Gü1­ßœεu†Vêâ|ÍÈ—†ÃáEMâyå‰ç3""ôc(…Ù}±åu_ÒÁ>ˆEffxú,ËÌ`0ðj7÷èÑ+ý’Ä. Ÿx½xD¸³s.eEQ@Í ‚6ŽgEQcŒqÎÍQÎÉßZËÌ Å¥1Æ€ÐuÃáЕ—ÈZfn”à-ŠÂñK¤eìbk­!¢Â{ïQnŒñκÝn�õJÀ:F©¯‰d¼¯ÍJ‚×˸饽{± òa$ÞDi:…mPN0æ�»ÒŸ*joý»žõœ) ]Ce»©«“Q¥¨¬F¸qÞUdWܼQ{¹"vÃq*2—ò<¯ôãápŸìhWDDPmF’sdQ±#«ù9ûI’x*À^‘À^ÎÃ[kƒÚ¸Ê‡Ãà½iš¢q!‘Õž�Ðÿ¥c]=Qó®Q~ý˜doMÒÆ6AUr×H¥G|-˲XáA=f‰AYŸwõxŽ„\=1ˆÊÄ$zŽ ª&zñÖ_<²&¨¨s©¼ÏÁ”ÕTlŒ‰ &�œgIª2—Þ´jÞf..x«óp8ä<Ï#y‹õ)Ædº2æÕOâ5”c‰ ;Ü'"Âx×H< ]‘wÎA¥^„R±ë�s…æHÀäyîu%ŽÜx3—ÞÃK:æ-¨/X¢jC#¢Š ¯×Œ-'Ÿw&�û>¿éÃh1ÁHº:ô¸­ôóÿ¸£éC™8@�KT ˆZ’nÿPW7×-õ9¿OÁ«�‰ÎºB ïÃK½m"¥ÅÞ€ò;™‘ǧ&›b°IJéP#j4&îøE/ž3B4ER—ò=ËRÊ7¢’t9âˆ#ÒG>ò‘SG}ôôæÍ›§×¯_?½jժή]»>ø`ÿþûïïß{ï½ý_üâ³·ß~{ÿÇ?þñ0Ë2/}cN�ÂHiK¥JˆH”Cpz_z Âw×Ëg#©Jr$�—EwЉÂðýŒ•¨´)UF�¦¦¦xfffÙ/fìÕ×îDs±š8ÀïM΃A)Pq:9ˆcÕÀx½7Ç� ’ ú$Š»|G¢6¨„‰jÙ| ú‘ åÆ\N‰$eü! }¢‘OÏF)jç›k´r ~¼:)�‚]\O}¿µ°þyª’ºø�?ÑHÕç©ì³¥éTª£Hˆ!ôK"ж/!(õžWjf!–DLE©‹ÈY�)jG¸D¢^)è´Z þ¶Æ{ïÄãÖÉ£q‚—JE1ÆÌ8'à\�1^îCTU‚@ƒê÷ãœz>çMɼ{*ï-ã'îŸ��^b(†£×«\×�$I£�ƒ”Çk|TËb®Å¼§  Ôë19 ‰£I+R2~ĹהªVÃ<òÌ—¶øŸ2¾q�V­ZeñˆGôŽ=öØ©C=tjÓ¦M½µk×öz½^ºk×®Áý÷ß?ûÀÌÞ}÷Ý3?üág~ðƒôýë_ûFÄ=î7æ[¹$^ú_H’$pIàG¥#¬\ýèçAú¹—¤H|ús(7¨ªÌï*¡$ljhdƒq{ÒIo­ Þ{?ƒô›Ðï÷ã½4âƒ,gôQF"Œd•ûåeL.ˆÈgYíå»1&s!H»Á7q QS¯×£¢(xff&ª1ƒ²P ¹ U®ôÕJB€GHúSæp#s»‘ƒ \w»]û¢½hÓ“Ÿüä#�>úè-|ð‘ëÖ­Û2==½¥Óél4ÆôŒ1éÞž¯÷~ óî½»víúÙÌ ˜ÇäØ*ÞõD"G¬©¢ÂU|d12¾zkm�cͲ ÉÌ^ÆäH€b¼ÖIS/>æ!ãœ3½^Ï�¬W‘BÜ‚Ü%EþÊ5æÍ›7w®¾úêÎ8ãŒS6oÞ|Êš5k¶'I²Ö9·š™wÇ}†¢(Êóü×yžß?;;ûŸ÷ÝwßmwÜqÇŽ�üã;n¾ùæû‰F W™«â¦ÀHÎâ¾§i¬µ4 –<‘µ  õl€nló.'¢k®lL­]M/yÏ£tªÛô¡´XØrÒqtëgþ®éØ(0Uw¯ÖêUãÆ¸I[¼N"°¸@ÉP=ÐÔä¨Wþ{x�Êø7vìHpâxp¬z‘¥�·žnÑbw°Öj�ȸ —¾öÆ%YôFO2µ(Æâ9*F´"B”E‘Üâ).šO8á„îÛÞö¶ÇœvÚigzè¡�éõz[�1{Mâ>Ìyö¦¦¦¶NMMmݸq#mݺ5¾vÅWPžçýú׿þÞÝwßý½;vüÛ 7Üðýï~÷»qéíH :#™KDA‚( YŒ,;Ëõ�R‰üh×çòE¤¬0ˆ²%éÄÌ+BÉ«Ç%ýÐÄ.æ4=vÕ×þMawÇ€óñ„ñYÚ÷ÝèoZÑ ¥'HRÊ]f¶Æ+IJ�V¨?+öŒ…ØŒ›*)²:õš°®“Ù8®z_ŸwÀã³úþêû‰Ÿ˜×´*©¢¶¥^܈‰Ê„ < ThbB�[�땘&+cSä%ËùT<Áåû¡Øµ2–Ym”†¿#ñB£q V,(r%Þ/¹ðÞ5Dää¾6­àµ¡LàúÄqMÆ}­À�¦yå�.í¦b�ƒ±P�©�ˆ ù>�»Q±HDÑ£™ä~h¯x5Ì23‡IQcb£>ærsPUÂ&¶/Õ×µjwNå ÉX íÐXk㼪I?ÌÛxíe/{Ùa_|ñcŽ9æ˜Ç¬_¿þ¤n·»y_܇ƒ1¦cŒé$I²nÕªUÇrÈ!tüñÇÓ“ŸüdzÉK^Bþç>œ��ýÙ}÷Ý÷ýÛo¿ý»Ÿýìg¿ó‘�|ä˜K©ì§¾( �þZÑéeìóxÙ (õÑž8TUå^¯§Œ]ªýLÄF}«V­Ò›î±·Ÿô¸Å)Æ $…,—ŠU+É(ŒAº*¡Bôêù€hü†k:vB¼‚ÏâýzlW {ÌÚŽ�pÏpï¡Î.—H—·ØJuÌ\Z·D�ÛBLàa]‹óD2M¾7^ˆp�JNÙ"qgBîúë¯Ôyç�÷”ƒ>ø”Õ«WŸÀÌûÒ_ØZ»ÆZ»¦Óél™žž>eãÆ�ÏØ¾};=ýéO§,Ëî|ðÁ¿~È!‡¼�%A7—ÃdM€¹+~¹sI�EÇ‚¼uå®&B�‰&í6¯�­ïâÂC—¼ó ´~ó¡MJ‹e‚Í'ooú&˜á=‡q žFPì‚„ÄâÄ—þ˜MúDc0T²ÎFõ8ó‘¸PÍ63ÑÈÓJ«�õܧ‰íÛÜ¢Å8tÐAœç9ÍÎÎ"‰ÀÒ†˜ˆ¨( vαx|2<ÜDˆWo]õ/иX&Q? «ž7I’Øk®¹fÛ3ŸùÌ3·nÝú„ƒ:è´Å0÷ιÕ6l8sÆ gžtÒIôÛ¿ýÛa×®]wüêW¿Úqûí·çºë®ûú׿þõ‡Š¢á ån‘$‰¡RaæC©êóB!ÀD€î©TòEÛ*={µªÄ±‘ I’К5køÁlœ¨ØEAιXjе:EeˆÁzТ‰ß&€@Q“�úu k­�ã³£÷ä` âm µ-�`„6Þ{뜳�NÇ|ìc{d¿ß7ƒÁÀfYfò<7âʼnÀ•„B€X)÷Åÿ¬_gÌ?õ繦h&Š„ÑØD)^×ïÑ׳þ<ˆMðÊ5ŠÊ]¹Þ‘ì�‚4MÓÂ9—¿ô¥/½ ± AB*@fù¿0+®‹ôɨšÊ󜡂¤’D³!óÞ÷¾÷èuëÖ­Q÷ÀåFwÖ�64š³c»òÏ$Œ¥x¯Œ¦( ›ç¹ñޛ͛› ¶žò”§l=î¸ãÖXk ¹æ…(Ì ¢ ¢´ó*>×äMôcUí*ªw�sð9/ä¢êÌ|ðÁ�—_~ùÒ�C�Á¶ÛíÎ9 A”Ž,ƒhl« !¶)ï}ô¸ï÷ûÑÓžDÙ P5)S'ã*åã ò†Ã!*hâ<Œ+3›W¼â‡?÷¹Ï}̶mÛ³qãÆGw»Ýû" Ƙtzzú˜éééc¶lÙòì³Ï>›ÞñŽwüüÞ{ïýîí·ßþÝO}êSßùЇ>ôŸY–yR•3I’x!þ¢Ê[úuLô@ùIÊÞÃËFkišzQ’EˆŒ½¾¬ išÒÁÌ÷Þ{ocóî`0¨Ä/j¾ÄF³‚ŸÄª#„`o¼ñÆã­µÝápheÿScœÂçÃÈ &·4‘<_²²>/�ÓñySzµ¢X 0>ËØ„´'.«Ÿ|š¦!I’8|ï{ß»û�ï|ç/C1À‘ï%fƒÁ „â6(âÅS:ö)çœefÌ“V’W¦ä†­IÓÔ:ç̳žõ¬õoxÃ.ؾ}ûÅSSSÇ,è�ƒ$IŽœšš:Á{oå||–e\E%AkŒ yžÓp8Œ6 I’P’$´sçÎÅ>L"Z‚WgzÑÀufY/¬ê †&•W žuÕe´íŒG5}-–9f %ÝeýAÓ‡2QÀ„ˆÒE8YkuyÎ(�E­Š÷á+Ÿùæ\Ï:¡ ÿn:8À"©~> @ðBõÛZw´‡ééi®-ر �»u“Råû ¢É”r ü¬¨Ö@Lp©0¬løÿšìÔ›Ìày¢=¬,œûý‘@T‰\öe {e“AéOFH^B°^xáÿ·罜BØõ¢½è�ŠD£Í1®É5 hszM%�H¸¡Äãˆ*ï…½ä’Kþxzzú¬†NwIpÕUWý÷¦þ÷ììì­—_~ùsHU<È}4Ì\ ¿�¨vuUÓž&YÖZFâJÆ:–ã©lXJJYˆÉç¢_Í©ðP…jÜ‘Ud.æb¾ì²Ë¿òÊ+Ïß¶mÛ³z½ÞQ�\„}@·Û=|Ë–-‡oٲ傳Ï>›Þýîwßù“ŸüäoÿìÏþì üàÿ“žCH>¿H^*ça–÷Õ­. &!x£g¯|í*E7ëjÒ&ImJˆGôdGBžTR톈ìóŸÿü�9ç&}�µÇ¸çž{þç;ßùη©Š=6i1I.ý®r]xTm1‡Ü•çí‡?üáÇžwÞyÏÛ´iÓ9¼v`ûƒ™™™ÿ�õµ$C(éŒ�d}ŽêÄ€KÉì7ÁkeW8él•O¥,U“ ¯T<úÙçÑ™/8¿éÃh±Ì`¬¥#N<–~ú/?húP&ºÄ±®~ÑÄž‚‘µkU¼ã¡çM–ªÝh+×{\UH“€ç2Ž—¨zNDU½xŸÊ–ÓC=Ôäá·˜08ç oY/Á““M¹Ñx †bM‘IŒ“$˜¢¦uÎÙ0²d°Î9›¦©}ÿûßÿè§>õ©¿u衇ž»Ô æ…3'›6m:ë)OyÊYçž{îð¿þë¿nù·û·¿ík_û•;ï¼³_#s�“…�DÞã½÷ÑGΔŸJ7 6Iý¸)�ò è±û†åŒ[HFaÜE[Ôc*+´'mS@U�>Î$IȯDeÌ!¥×D´ç‰B=iïÚ<ÏY|ÔY¼c9MSffE§(ã[ÔJ?S Åh–ec�¬ˆTé±�ewC#,îOôoV {K4ˆ`³L"BËÚ2Zr  â¦g’Ü‹Õ/Î9Ï�˜òå¦Ö{o®¿þúG�þù¿yøá‡?ÅZ;µçÙ:è ÓÏ:ë¬Ó¿ñ�o¼áî»ïþê—¿üå¿~õ«_ým±b@RÕ¡ç])m÷$›0Š­E� —5Zhÿüh)Ðív¹ßï/éd$än´×ÑjuŒMaTi…µÖf+j\êt:G‘“ó�s°$ß<ͪ«k»“è•FXÚ‚=ãŒ3Vßxã�¯Ü¶mÛ y÷›¤-:î¹çž;©ê¿+¿ägEÈŠsÕU(K�ý¾HXôõŒ8~ ‚€¶-K]<¬Þp]ú'o"—6j—×b㈷5}†êî¤D#‚w0Tºz¼“ÄÓRæ’ MÓÑÔT6,zŽ„¯wL¨È<ÀÆkŒ±TЬ$Ýßþíßžÿ¤'=éuišÜà©EÜvÛmwÁCçE2_!¹�F=i׃¥À~/<êª+,v“$™³ bñ÷Ò · �çÿÑïÓšƒ×7}-–1ÚMùª`ªÚÊh¯6©WÔ¦-‘÷ð€Š $¨Vîj ˆÃCÏ;MB«Þ´"¥þ(Š¢B ÔÉ’.D%¤×Q ¡ŒŠÁ³÷ÞäynŠ¢@é±%"k­uÖZ'êç½O¼÷I!!¢Ä“t:�ô3Ÿù̹?ûÙÏ>õ¿ñÿý@ w5¬µÓÇüK?ñ‰Oü¿?ýéOÿû+_ùÊÍιÄ9—c.­)fÖ×ÑúrC ãœ3ªüVëìœcÙù¥âä½§N§Óü µ‡ðb�£Ç3 �h«[59kÕ1Ñ(ÑV¾«èù|w3Å�ÌÕïPïT<9åg‹ñˆÍ)õ“öÀF2JJk–øý¬îIïCžçØÐhÙôÃå Q°Zk­ržG/�6 ÊÏ}k)ª™V¯^ÕuÎ9–Ê;›I´¹¸9Z(mâKe¢Ôyï]žç.Ïs§æØÊ¼{Ýu×�ô‹_üâúßù�ßùØ�FîÖ±nݺG_z饾óÎ;ÿìýïÿ£™9Áƒˆ’~wxEኢpTúç[çª"ŒÜ+$eã:IÖÚ\%I²dý½&ðà •.ÚnF¯åh¤Z]qsƒµvÝ£ýèÕ¨^)ŠÂI²Ã†\©r•}ÊQÙ¯"rÖZgŒq!÷¸Ç=nÝ�wÞù§çž{îÛ'…Ü%"ºé¦›~V'v�1‘Ü•·ÅÄcSØïÆ"W+s�1Ôëõ¨ÓéT6øàßXÔ“ZfX¿~ýã.¿üò¿¸çž{>xýõן¦ ^!]–e¸žN% l’$ÖZk²,3ý~^È¢Tî#eYƲÿÓ¢ONZ䃊lÞ'¶Z«b—Fã~®(<ûÙÏÞLBÜæy5{¬$ !8ô'!z3;cLb­MŒ1É›Þô¦ãþáþáã›6m:·Ù³©"Ïóû¾ò•¯ì© q�jŒ».e5¨˜`õâI“ºãJ¾ˆ$+Þι †Ã�?†žvå¥MF‹€U­#—&”›/¿œ4ÌG8ŽûYëZŒ…&?õuÂuÖþµø(Κæ9¢¹>�õ¿u»i-;Zâ@R FRÈ"ù #í«k½÷ñwY3¸SO=uÕ§?ýéßݺuës—úä&ÖÚÞé§Ÿþ{·ÝvÛ³þò/ÿòí¿÷{¿÷=B]'eQ(}µk�¾ìå3q‡hñp$?Qk-E1±�ö£êã^ÓâŒIö×ã¯ín]©Ù€å^3Ñ\[:|Ÿ\­ØÒA|‹ñ0’•%M¼!j¾gô5=‡B§¯;Ô¼âW®•Ô+ŽH™$HŸÐäÑ(A‰{ƒÄ7Kiý’¬�Å*ãåyq,§r®5ÿU2ÕEçY̵x0³=õÔS§?õ©O½öØc�}­@Òn!±aÆ3¯¼òÊ3/ºè¢/¼ìe/{×W¿úը죹²U‰øzÞ…7¯ÌWð{&¹WØœ-È:*cuÞEb¢.LAŒ¢Ç$¬ ä9ŒK‹uh�á„NØÌÌwÅ8VÑnƒF ј,gñ®þ«¿ú«sŸùÌg^k­�nð4Æbffæ.ç\œ§0a,Ó±j�÷\j±×~/< TÓ >ìlBˆJ^â:Ëá½§Ð2¼ ‚¤“Ò þø*ré²ÜüºÅ„� ÓºÃZ¯†Vèíߣ”xD4·t´Å\¨ÝT+Ïc^IÓ4V}Àsó žo½^�¦§§w«@Á±cgz”· 4âÊ“Pú�Añ FQð_nÚbŒìÎM`zïíp8tÃáe�I’$É?øÁÓþñÿñ¦–ÜÝ=V­Zuük^óšøÃ^ýÄ'>q�(L\QÎ{ïB.Ïs;íp8tY–Ù26±†Ë MžçŒ]•™ËRò4M¥ÀŠ´ŸH¤iZ[µ�Ñ(@¬7]ç›>iÀü ÿv[óYiˆr4î�NT±U‰»¥‹�gÅ2€Z‚w^cL·Ûån· 5  ÂJ¢<Ë2ê÷û4;;KÃá0*¦ Æ¡2 8˲9¤q‹Åƒ÷ÞdYÆÃá°’ ÃüÕ»€aM´ˆ‰zÿàËÍÓ(„À¢ÄçÚqÂþoLšBÅ Å¡<"Jn¸á†ÇÜrË-Ÿ<öØc›Ú¶¶Ç8âˆ#Îÿ¾ðéO~ò“gc%Þ{eg(í0l–eV”½ ×AVÈy’±c²TD-ª’·×ëͱ#EU‡Vq ™É�N‡Qm@+´­rÈ!Gh‘�’!Ú–Ác\š¦.MSçœK¦¦¦:·Þzë•\pÁŸN"¹KD´sçλz½§iJR­€dbe¿¬7” ¶“¥Â~/<ê:z°‘KDòŸ©+œZì;οê2Útô–¦£Å BkÓ0B ŠYí¥JTÙ]{Ά[í÷ð§ê×U)¥ˆ¨ye´Z¼íÑ b¡%ÿXhâ"*v¥]ÄMԸ܀ÄcŒ�¼Úw7š!„DÏÄZ›uÔQSÿú¯ÿúÚW¼âÿ³×ëµ ƒ=ƒ9æ˜c^ð¥/}鯯¿þúÓäšjoE�½ð´b‹aœs†ˆ 6 ¡Èÿñ芥ÈÔc"±‹y ›YjŒ›Ûš‹5@ áØëss»;vý\‡>CD±¿€YH$I‚ÿOD£ °¤úN+w�µ–»Ý®‘q\++j]•ôKÞ÷¾÷�ú/ÿò/7wÜq—R;Ïî76oÞë5ë IDAT|þç>÷¹Ï|ò“Ÿ<«Ûí&ι„™l $Ib“$Áx†™­Úü”%1d0þ‚ÜuÎQ¯×[ðq‰ ] ‚yRï¿�çàá¾’ÅkÖ¬9ŒdCBcŒ•>UQï2³ !¸,Ëï}òíoû�Gyä…ÍùÃãç?ÿù]ˆ=õš U>¨,7€JįKiiµ ¼šàÕ ›ÌèÅ Îâ‰ûB‹բßzËk[² Å‚£UðÎìzéªþ©½ýÚ~¹wÐ×l¾P­ ªq`‚×Ç[,êå:ú±’z-ª˜žžæZWÜaY¢`ì>¨‘`3úí²ø”‘($ tafû…/|á™ç�wÞ[�1iSç¸`ŒIÏ>ûì·ýøÇ?Þþ„'<á=¿úÕ¯ZYI¢¨@ TZË�ÜõPŒÉº8 àôÞ‡¢(à 9ƒQÅ6F«õ±Œ(ª%ãïM�Å:Ùªã Ì×À¸ªüýpãð8Åò|cº~ï${7� ›[aü§²ÖíP+åð^¥6ç1Ÿc¢ö,!æ]ðŽ»¯ <–`�ÜaTƒù•¡Þ-ŠÂc¢�=•*QTÅL’$î[ßúÖKO;í´ß¡–Ø]P¤iºñ /¼~ÇŽ7�qÆïºï¾û°ƒr´Z©¯§Õø¸´K‚ÏkôäõÞ*ÛfH’„³,[° ë9=Ÿ�æêß—º\)1==}—Ê]ÜoŒñò\ÀX-"û½ï}画�>ú9Íõžá¶Ûn»3˲Ê\ϲÏÑèÞÖE`Ds׋�#xõB§~ÈZèÆíœ+;ÅBÀŒçþáïÒôAk›>Œ+­oY–E•ˆµ¶ƒÔÕe÷šˆÔɯUÌÌÌTüQ¢¯Ÿž_ð¢RÒtð¦™æ8(»´×.Þ‡ó€2¬ÅÊF¯×ã%I¢KF£÷.ɆCÖZ£6U³T†1è¯:[…3ÆØ$I\§ÓIn¹å–WžtÒI¯lö,W¶mÛöÂÿø�ÿØöâ¿ø _ùÊW~ÅÌ$“”ç9YkÔhŠ$ô̬‰+"¢à½çBÀ>ò^¦ Új^•‹‰(ª�êä&Æ´¥ZÆã­Q›=ãæ¡^"ŽÏá1ß8 2A[¿ßÇw*ï]°Ö©Þ Z½E%¡01÷wÒPE%ãFÖÚ ,}¯ˆª1£¨â"I€÷`Öíë1ÌÅ-!„¨ÄÆßø©É-½wÈùÅHr«1+VR�(v�1Ñ;¦ö¤¨ÖZ›$‰ƒ·½ø¾ºC=´ûÍo~óMGuÔÅ ~À-"¶nÝú‚üà[.¸à‚«¿ýíoÿš„Ø%åÍ�Ä8ÚŽôñ‚JÒÝËý6EQxIÆ´Ã…L®‚Û¼ц¶"Åüq�&W"z½Þ!Î9‹õyk­ûœ *kff{ë­·¾nÛ¶m¿Õô1ï)n¾ù滘9`“?™Ã ô J¹¬µq=€{½”û®ìwdŒEë|; ÖÕm+µa/%žô iû™§7}-V(Ö~HÓ‡0QÐ�l={ `ÌÃD_W µ˜ »Sr蹄¨ªêi:pÓä3Ç•œâs-Ô’@1@ jïP-ñGbTìµÁ ‹?ÝÖ­[§ðƒ\×’»‹ƒõë×?îÓŸþôÇ_þò—oöÞ'°ÉÈóÜaã—<Ïmo^x&SéåÈxÈø=Fµ¥Ï¤@d:XÅš¾îÑ[W)M 4ɪ½‰ªjß=ü® Á¹ä*UеÊÄ �x [ŒG½ê…ÊË�N̯eé‚*$!Ö¢¢�÷EÞ4QÜbq‘eY¨o2Tïk:‰¤ß·�ë!ç\œ[©êq¯ýÑ •ólœcñ š=3'çœsÎA·ÝvÛû[rwi°qãÆ'~éK_ú‹Ë/¿|K[ ­�à�ï˜Ùzï jý}n%cYwÑ\«¬}E½zcÅfPänÅg�ßâ0& ÝnwÃ!‡Ò{ › cL\džÜ-·ÜòêíÛ·?¯éãÝSdYöÀ7¾ñ�‡„àÅ= ²N ’TŽ™ÌEA¯–2îÛoÖA{\Õ3nÅ)ú%©Éwr¤ Ë ‡{$=ýµ/nú0Z¬`¬;ìà¦a¢€ žqðà‡c=x0‚àk1?ôÎæ:xà])aê÷û$^j�oãÊ®:�¥iIçu»ÝJI‚Ð,Ëš:ôK ¬{²,c¥âÔ¥‡ì½ç<Ï�†ðÝ�›{…œl´–0srá…núæ7¿yÃá‡þŒ¦Ïo%£Ûín~×»Þõ?ž÷¼çê½Oh´ùއ.Ë2B0ÖZ㜳Î9#å¢÷ØÃâJÝn—áå:IPÁoÜHL¬ÖÚèA«•HM© ýЯ´z*˲8WÔ® �n®Ïߺ’„¹ôè‡Ên宵և¥Œè–„àðÌT€L$ªv u’×÷ëƒ4M©Óéi· O‚º[,*‚ú•Ù²¶ ‚ò !,ŠØ«×ëiµ.çYùÝxïMžç¦ßïÛáph±�©÷ÞEáò<·EQ$!„ä5¯yÍQ_øÂþrýúõ�[Ѓm±[LOOo»þúë?úÞ÷¾÷QðàefgŒq½^Ïöz=ëÊÁÙE×M$Jm"а�ä•uÖX[—}A¯×‹Õ5�c$A˜9dYúý~è÷û¡(Š•:.ñyç�w3ÛN§ãºÝ®uÎ9ï½ë÷ûnffÆ}ô£}úI'�ô¢¦to0;;{—N(bl“{[¹çz=âýh°”k¥ý&xµBWËÐÇùTÂl¸ºÙÚJmß‹‹çü·×�K[›½‹‡Õ¯oú& :˜««xêž…uIN‹ñÐ×F_Oýº.Ò^‘M«s´zw\&_ïà>n^lq` Ûí²Ü{†‚Ä—›@³sÎ8猂uŠE‰(•¤bBpozÓ›¶}⟸qíÚµ�júüôz½-úЇn¸øâ‹6Æ$,»C«MDPâk C)"�ì7˜ˆXA!LÔ†kãÆªqäš~Ï$�¼õ Â:‰TÛÑ|l5Îî ¯Aíüƒ&‹%�C`ã©$[“õy ¾Œ‘äÕA36Æ“ÄhGj¹VLóÈÞØm°¹ÈP×\·÷Ê5¯õ3�ø v ½^ä]EÁK#?{VÕ¦( ‹‡ºÎ{U»ÌìÞ÷¾÷=êOþäO>:55uÌ‚h‹=F’$®¸âŠ?¿ù曟FJU-÷É:çl’$Ø›ÀÁ•Ú¤È}µ6ÇzŒdNÞg`î©Ç‚ Aø‘$š$v EQ¬è¹áä“O>TÄ 1iRE’çyòš×¼fÛ\ðMãÞbçÎ�?cfO£VüéœÓ‰¬±ë¢Ò–h©Žw¿#M½Á 3Ç,*v‘ó²ë9¼yz½MMM)O¤‰YÛ.<öâ§ÑQ§žØôa´Xá0ÆPÒi“<øˆæ*xêJ!ï}Lhal1(÷i«Q/{Ò�I K5Á‹c̲Œ†Ã!%IB½^/ª’�1Ñ¿Y“-V6@`'g�~ þ˜™�s¦ÓéàaÓ4EÐÈAÙ3¼å-oÙ~Í5×|¤ÛíÑèÉ`˜šš:úÆoüÐÓžö´õÆg­uÝn×u:ËÌP�awoÜ_(‰ØZ˲'÷û}ÂfëׯŸˆ…0”�ð­­')±ŸFQq�OÔü¦1Ú—󃞫YUBUÃ¥ãÙ(àýšäE‰¦s.@�Eì…B–e!Ë2_E;ùÏçœ'!“$ñÝn×w»ÝÐívêU«ÂôôtHÓ4Q¼wP�‹WÏPKò²©‘l´Å¢B‘¸¯X×_KÚ£J@÷©ýAš¦Œ6¢|í+$¯RsFrWªdlžç.ÏsBpå”ìÜ 7Üð˜W½êUž$ÉAûup-ö ƘÎ3žñŒw~ñ‹_¼0„�Eáúý¾ .IÛëõœ-=t,ɾ<²àˆÉt’yÕ)jþÚçÆ7;;‹q)Æ1!D[ØÊ�º!Ïe‰ûàMŽ:ê¨Cƒ� ñ^eYæN:é¤5×^{íZk'«|ipÿý÷ß)ó»¯ÝÓ�¦ièõzAüþÇM9a©y€ýŽŽuVµ®`Ó¯kÒC/[aÛÞazÝzÆë^Úôa´8@�Nõš>„‰B-À›Còê�zV·Åü¨«Ât¢�{=ª¯o“ÐÁ È|Ìwhº<¸NX·X¹€ ÀÌ,m<ªKhäh”ZªYñ.sÆÇÌîꫯ>ö�o|ãŸ%I²®©ó:�±jÕªíŸüä'?ðä'?y­‘ ï@À‡"iPÞjkX@DÑ�W)xyR挽 ]´gt]5©[ú3M¡>è” Ú½®úÜrº¶ANE}hŒ Šèõ!ï½÷+]¥µ¿¯§r—õàœ ¢z‹þ”¢„ PGëù_íˆA·—×#ÙØÎµ‹ éƒ÷�ˆ@Æï}R‹ tÓ}Rsûø¿Eæ ±«Py† 3›$I¬µÖ…âfj!wíµ×žô¢½è½Æ˜eGD­Pð9çœóÖÏ~ö³çc±ÑpDät YSn>kÒ4ÅFzìœcçQeî%Ú¿ý0Æl¢¬¿,&˜”¯x r<òBöîóÿždrÈ!‡b-K²Fbf÷ùÏþV­Zµ,… ÷ÜsÏ�¸‡ wkÉ« Œ:S]Úuÿ¯›>Œ‰@¨m�òU n€�V<²{xï#™‹ùB“!„Š×±*u©ülP�á'ÑhÁ7 *.^6’#¢V¹{v ¢Pgï=•¤/3s–eQY"¯£´Ð97¦ðÞ»,ËÜë^÷º­o{ÛÛnHÓtC³gw`cõêÕ'}úÓŸ~×öíÛ_³sçÎ ý;–aR¹©J��Ÿ‚Jþy/®Á·M'›„ö�G’JoRFD‘0EÅ 3WªšBQs*"TÕoðÉÅ<‚sÚ�/¾[æšÔîEQkmèv»Q¹«¬¢’±Å\c c Xï½Ãá0EƒTÑx/%I‚{‡ÝÊYîqpÎE…œ/7[Š 9 ˆÆNô3‡$I¼¨ÖcÛǽ¹+ëæP_'ïëø!1HDé²àX!C*‰J#…'6겡ôR�6H¯ýë�½òÊ+?`­]µW¥ÅB‚™Í³Ÿýìw|ô£}í‹_üâ"Å]ˆ½¤½…N§’$ Xƒ ¡JY–qžç�¤�쯺_'œL¹¹&SéÁÔq� ZEQ ¹µ"qÐAm2ÆØ4M ùÁ`@÷w÷œ£Ž:ê̦�m_ñÃþðNIÂ?9fûý~LHÖ=wµõÕRÆ«ûM'kõ®Îøk•NÎ˦2² A«^ÚKóè“éôóÏmú0Z@h¼#è1M?‡ŸP%€”¬{ð´˜Z«¡¯¡®ÑhzÑ%Áãüñ­ðÖIÏ+jo�» ËXÈfåÕJ¢r Ré¡ÜX-!"wÅWyÝu×Ý�¦i»ûå`Æ OøÚ×¾v¹”öêòPKDÑPÚ–ƒAJ„¸( Îóœ .jadYVÙ°ŒhDrbÔãWÓcY}ŽÕŠÞùæ=^?ܱÏÌÌ„z¬£<âËCñPíFâráÎteÁ—‘°V<{ï½Ïó<ˆåU‡qóµúÚK‘¶A�H¬2Œ1$rKð. ¼zýЪwÜ;ÝïöWÝFª]‚bžçò’§jO™_�~\vÙeG¼å-où`kË0™`æä/xÁŸ¾ï}ï;5”›Îº<Ï­÷Þ2³M’Ä:ç,©¦©lº&D?«ñ\'öÚŠÂá»â¼À£ uÿ(B­P‹†uëÖmRªjwùå—sî¹ç^Úôqí>÷¹ÏýoÌY‚8éÈœ0O¡E¯›–û­àÕÞ#DU¶:ˆK¿>•z—h…¶í‡uŽ.zó�“-,¤Ý¶: ÐÎ`LÓ¾±�N‡¬µ18nIÝ=C]=+vø '(­p/ê;œ/54¹€6ÁâG¯w×ÕdI;ޝ\LOO3ú¿zÄ2}‚ϘrÏ—¢(Œ1Æ$IbB6Ë2”‹Âоüå/?âïxÇÿèt:‡6}~-F8ùä“_ùñ�|Ç%—\rK(Y{¨ÓtI¹öE;¹‹Ï0çÔEK-¾Ð (Q&Uüj¡¦ô²Çˆá&Q'£á¯¨€ ‚2‰2)4ØÚ(´ò4( $”IE[‘Y ! „Tªêžsöðý8ëÝwß“›�¡R§÷}žûTÕ­éL{í½ßõ®w-|`éÒ¥÷äyn½÷Vኢö ‘—|¹›ö˜kã²X*‰â1èØDZÂבí¼ëB_…‹“•¨c<Ç»`¿AåxY§òå˜{ ~¤”"MSáœyž£ñ–BH¥”$"4WÓyžÃ‡WÏ�;wòùçŸQožÝ�Rö}úÓŸ¾péÒ¥‡�rÊ)û›B¹+¥ôEQ(ž“<y)¥C즶zß'¢ _£8a­õãÆ�qIÅçÝ{ïCu�÷^H)-‹ìSO=uÉ&›lòö¾¾¾é�Fc&E7xŒ?þ B•ç¹o4tÊ)§|vC>7cÌ+7ÝtÓRêLÜ‚´I,4^�½˜µÖ¡"j$±Î;cçª 9n,Ô-Ë”N½)wµ0ëãÐä­·¨û0zx�¡§àm#ŽgñưçâM$¢²‡îˆÉòØÚïnJ,Ì;uÇ]U‚U}åp.ñ\X÷±÷°~€ ¾ÖŠÝ ÖˆKF}»ã3ÔDAYÄŠ½ß~û½á¼óÎû~³ÙœRï™­œsy«ÕZ444ôb–eý�Fc|³ÙÜ8MÓ�“$™@¶O—øð‡?|ú-·Ü2ïÒK/ý•$­#"_…gÂ)¶jðP ‰(°­C­ˆ×òq,#êôª� »ÕŸ¯¢§Ã.ŽÑñÏWgU€˜%ú}”ùÂw/�WTn…ÂI)ÝôéÓ/Bh~%S¦LéÛo¿ý¦í¼óÎ[l¹å–[¼á o˜ºÑF½q£�6š2vìØÍÓ4}M”†çyþBÿC‹/~à‰'žxà†n¸ÿ{ßûÞß©$\ •*6Ç›dçœs+ÔÞ4w¬³¢9>¯AGm2dzõƒä¿Û#x×3˜3Dd©SÉëAÖcý[VµZ­5¾?ˆ¡ðYåg¥#™ŠDªh{Ú‡ùÕ—žéšˆôî»ï¾Ñ�üã ÇŒ³Õð\‘Zàó<_jŒÄ«(Škm®µn&I2Fkݧµ«µ›$ÉFuðÚBk=þ˜c޹èÅ_üÄ…^ø¿yÝRi‘@qBÏœÖÚj­áƒ’CÄl7B]£g„€FœÈ¹Ëï9!„%"1}úôKœs—‘Ú~ûí›Gyä6»îºëô)S¦üÃÆo¼ýøñã·m6›Óh['�;v“4Mu–eö‡?üáœÉ“'O¯û˜Ö­Vë)!„ebqÍ!®Qg¥B° mõ6­ésµ®éSLìÂ�‹¿Ø¿+&�{eË«�IÓ6§÷v`݇ÑÃë�1ͺaTÀQ–eDDÊ¢öÆ2Ë2Êó|‚q¯N¯ØÑ ”¯Çä(QÛ[+þ¼š$Ä÷êB·çŸÇDu•\ j?u+ßz^E�µ�B&†‚rW)çœsκõÖ[?õüóÏû’?h+v´ÖRJé�11¹áøù@©?ÎÓ¯Ís¸¥.’mñ 7³coÞ:J�øøâd`¼÷XY’uUß«þ\t=¹Ëc»CÁCÜ„EJé’$qDd�1B!µÖö¹çžk]pÁOyRÞCå^,!"-„ÐoyË[6Úc�=¦ì¼óÎS?ñ‰O|:I’Q¿kµZÏ/]ºô¡^xááG}ô¡«¯¾úÁë®»n –IV›¦©•RZ¥”uÎÙV«e�1Εe°·@r„´Ö^áYç�‘€'?ÿ,ÆL¬¢rÞ{ kœ^BuýBáÓ4uEQX[Þ˜ l“R:øï²'*ÈyJÓÔ¿šöÊÿ¥ÕRì!Ž9WdY&�sB®e­Uι@î&I’üìg?;iüøñoÞ«²þ`ŒY¶xñâ?/Z´èɧŸ~úÉ{ï½÷É+®¸â©GydHDïH„`ðZTxïi·Ýv÷‘�|d«�wÞyë©S§nµé¦›n³é¦›î¬”SïÙ­’$ÙäÔSOýö‚ >öè£�xï)öî†×3H7VvK)¥ã`ßÐx %ök¤äåêŽØ6FàÚcªyx"BòßFä²ÿë_ÿ:tÔQG=콬üq©”Rò­o}똃>x›�wÞyûiÓ¦m;iÒ¤m'L˜°m£Ñ˜¼.ë°@J©wÛm·IÖZ3wîÜyuϺbppðiXþPé¡ú-Ç:�¸ õy}×±¿I¬3Á‹…È]¥T‡o"¬b2›tç\OÀ»øÐ GPÒHë>Œ^‡è)xKê$‰h…Uì-o&ê0Wß� Ý<Žñuµ‘N<�Ô‰(SÞ‹­<ºù<‚àRJõÞר÷%÷X !„d"(öe•¢,UD$¡(Bhb‚÷·¿ýí1o¼ñŒZOjðÞ»_|ñ�wß}÷�§œrÊ=ôÐ`–eŽË©ãE–/_.n¸á†Öüùó_Bçœ`2æsçÎÝäˆ#Žxç;ìðîÍ6Ûlw­õØ‘<·5Á„ v^°`Á‘»ì²Ëù‘"Ñ‹vàXQoHÏ›m\›5..Ä$->v³4Àúóal]4š€˜+ã÷×Ñ߉ôÄ_‚‘•=¸ÏΗ¾�¡s:uªÃûxÝwß}ý÷ÝwßПþô§9£‘Ü|vÉ’%�<÷Üs�<ðÀ_yå•ýæ7¿yEJiq.EQ8"²J)‡÷…ž¸¼QîPDQ›tPÞE‰¾Ay"'"f‚M�+Çq×þéOú·‰'^㜓ÖZY…D¼áx,¢¯Ñ3Ø©°o'zI*c¶ÀßCÒnúôéÿ0cÆŒ}k¸-4þüÿèïï…Ú�圔Ò)¥<¿?ÇHB㈜ ÄXô¼‡J„øïi­�RÊi­ÝÀÀÀ"(ÜøúÇ÷1x‘Æÿ/‡­ ¢ùU€˜ã¹Wðç’?H­u¨”á¹Vû¥ßrË-�2eÊÞëxù×;–/_þøSO=õûÛo¿ýw§Ÿ~úý¯¼òŠÍ²Ìq2©Ãë˜:çÛ³‚ˆè�üãËüã—Ñ}üžœ2eJúõ¯}×=öØã][n¹å»ÆŽ;ªK‡Ç�7ýÆoãäRHæy¾ÚÇÀö2 ˆ…ìl$íˆM"G[Dí±æD©:wRJùÀôwÜq÷;ç@ìBÈ™3gNøèG?ºíN;í´ÝÔ©S·ÙtÓM·™0aÂÖišŽ eöŒ3ÞðÉO~rNš¦£ví¶ºèïÏW*^¬ °ÿ«s�ºÎ/ˆÝ$I:…è°‹÷áÓU%9F×’pôá­ÿônú‡w½½îÃèáuŠ´oÔí-jHÚXÕÄïaC‚ŸEŒ\“Ãë ˜qñy\Œ¯�Fð~¬›Ü…×c|Ü1y‹Ee59ÿ.”á=lðñóiŒD¼YÉ”»Þ{©µV�FC !”1F[ká¿«n½õÖo³Í6­û¤ºaéÒ¥ýùÏ^xÖYgýjáÂ…K¤”.MÓ<É(Úp2ñÒQBåjD†á%¯¿þú®»îºë­µ¿Øl³Í§�vÚ®ï~÷»ß½ÝvÛí£µu%ìÛm·Ý¡_ûÚלtÒIQ{á¯"OVÏ„>I)½µdQDr q¢7MÓ 6�’kyk-µZ­ð³Ø´ÄäL�±{‹h³ÞáLÔNv›ÃWçR[k}’$*fxìáðwŒ1qY°/ŠMY„¡ 71¹Ë}ôÑ]uÕU{͘1ã½Ãz¡Ö�>úè ,¸ùÇ?þñ£÷Þ{ï2ï½e²/�ºÖZ—$‰ÑçœÃù†÷¸{¼e (wAWã…goׄ)î³÷¥Rޝ'Ö‚ŸO!¥¤÷¼ç=¿QJ©f³)‰HµZ-é½—I’HY>$ÒZ+Š¢ÖZIDÄ:¨@i蜓Æe­UD$•RªÑhh"Rçž{n^ÁûƒüàÎ[o½õEçœÍóÜcÐÈ �æ:¼q­µ^k퉈�”ã±ïy]ƒ&w!A‘ÆŽÿ¦õÞ—Ýñœ³DäÊKäB’‹ŸbÕ[ð&ÅÚnmÖ@üLˆÊŠ¢TÎÁBJ)’$Þ{iŒ‘Ä·Ò9§ò÷¹Ïý>MÓÿ–R~çK_úÒ¶ŸøÄ'>²ÕV[½OJ9*•fozÓ›¸ùæ›ÿgŸ}ö¹>n“¸ IDATRü{km¨œ!^‹Xk½RŠšÍ¦m4•Pù§iê•Rk¼_k4d­…•�÷Þ V–{k­È²Ì;ç”êñœ#¥ôišzŽCN”ÍwÇOi­•œ\R¾ôðUJ)y×]w½ü‡?üáçÜ}D¤”R2MS5{öìM÷Þ{ïmwØa‡m¶Øb‹­¶ÝvÛ™�Fc°]ðÕļyóöÜqÇß=Òÿw}`É’%Or|³ÄóE‰HjW+„DcÝûÓaëNO¼øˆÅ>¯.ª„=†w�JÑû¾ø±º£‡×1z m`“o6Vµ1ìF÷°rtÌ Ô&ËãFeñÆ=~Õ�˜H¨*v«vø8Z޽‡áAš¦Pš &ïÂ&”ˆˆ›»H&"‚ ƒ¼AMDDê{ßûÞÛ÷Øc�ãê;›î(ŠâåùóçŸÿ‘�|äWÖZƒÍ;oòC©ñ—ڊFâ÷;ÊçKGtøóõ’PÖ‘\¼x±ý¾ð"ºköìÙ—}ç;ß9|Ûm·�+FÑBÈÏ~ö³_9í´Ó>988èX¥ˆRqÏeÉ’˜»‚"�Wðφ¿·%Ë넸Ú.¾¬U4Žg1ê¾8¦¸z³˜¨£q~ø¹XIõj¨$(:Jq©­¾îxqy®£r¼Ã«7xÍ‚¤‰çÄOœþáøÓÃxyÖ Ï<óÌí»ì²Ë9­V+Çx§r£MŽ}n¡Ö•Rz×ö¾µÄ„6_Žø\–]èÃuAY3Q[ÅŸw(§E»$:Vó"u¨CyŒ)¾Pw )e¨° ˆðò¥ò:$Ÿð;T6érÖZGD*»ðþ­RJë½7Lê&Õ­÷Þr’!¨ÄùXWP|â\"Òßs|ƒ•î�/­0ðu‡Ê�í2|taÏÄeY¶F d)%»H†á~ cŒTJ¡™šä{¨â—÷^I)õìÙ³7>âˆ#ÎB$ëx釭Vë…{î¹ç¿¾ô¥/]×]wõSämÌ„yH¨J)QŸç9bŠGq/Z‡â™Fµ‘€ �x ðØ�çŸþ#ç�wÞ™{íµ×÷N>ùävÚi§ý�Æ&u\“UaÖ¬Y_ùÚ×¾öð7¿ùÍG(Š¥ì‰¯ø¹ÆÉ×ó±çØ"ˆÈ�7N,_¾|µŸK­5¸.螯½£òYD ¿‹ç)¬¤”ŠÊ{¬86JçœdQ€ðeCJ)Ê™¢r�R8œç­·Þºø¦›nzÙ{ÿ?RJýÄOLÚb‹-Þ1Ì—üU1cÆŒÙ#ý?×þ÷ÿ÷Érg­ˆ*¨½æ%êRµ†Xçjè³0,MÖò<Š],¨ª~]1á‹ïáï¡;v?àŸi“id_•^#Ðé¨[÷ÔÄ6ĭ؃0þdÊ£ÀÞ³gxÄŠ×xs®µž�x¿:§h=lyÊ5n±R"˲»ŽØ®¨ª&ëÿ¯ôõõoV°qZk™$‰åŽBYk•(; w4UsÎéÃ;lêÇ>ö±³EiÕ0jðôÓO/<òÈ#¿³pá—Œ1aÏdO(7' MŽV j¡\”ׄ؜S¹'•AMD¼ÑôÞË¢(¤RJÝvÛm‹ßúÖ·žuÌ1Çüü‹_üâ7ÝtÓQca±ÑFí²páÂí¹çžW{VZ¥i*…²ÕjÉ¢($”ržYm|L’Ä'I¼xGšàEó™ÏüÞ•MA@ò8Š”yØp‚¬á F܈bÄ›M¶k€²HFQ>-©ôôTJ)õ­o}ë¡o}ë[Ÿ¿üòËgï·ß~ÿÚ××7*²á3gÎüâܹso¿þúë_ˆÈ¨›áÅ*x£¬ˆH@åá½§±cÇŠ��� pˆOUaQ§_&QgÓË5QÀ®oT�³:gWç‘5{]‚P¬.Â{ ÏDä9_l9Ða?0uêÔôŠ+®8±ÙlŽŠñŸeÙâÃ;ìøÇ{¬Ÿˆ 1ÁK¥rcßFÏy )R|²‚³£d?úÞ••_8>$�Dt_$Ǽ�ܥȿâ">‡p^ëzmG¬µ­eË–=öâ‹/>òøã�?ü›ßüæá[n¹å…GydhhhÈc¼”’úúúމ¼I’•›J¢¨9q‰4±¢äŠ1ÆI)]’$ÎZëæÍ›÷ë7½éM¿ÿÅ/~qøŽ;îxЈ_¥ ´Ö.¸à‚/]{íµ'‚ø¥÷¨$¾ÿBŸ$‰×Z ï}°ô`ÕQPñr)rm‹äx®sΑ֚úúú‚xêW¬óëDD´…ÊQz*’”²C5HDaŽYÓ9Úû¶7|œˆÄ÷XiÖ²b}Á÷ i‘Òâ¶Ûnû×I“&m?ìg-`­m�}öÙÇ^sÍ5Ï3Qh¨S½ _WËD¡wιV«…çÝ3‘«’ Òmo]oŒÉÒ‘ˆBI’x$Šº(ÚCr„IšÐÌ‹¨$Pœs"Ë2Êó$^¨Í†B7Äk|ÎM ¹I—(ŠBáø‰•ö\¹�ß«mÑ眳RJ›$‰5ÆØRTk�÷Þ(¥¬,½Ò­÷Þåyî@°‚$ É (v¡|ޏh؆Fk0˜ %E©Ü 7ü­˜Ð]ÙšneÐZ‹(Æ*Uפ” ÉU!„HÓó„´ÖBוž»ÊZ«N8á„mf̘ñùá¼öëcÌÀµ×^ûÍC9䥔QJ™4M-+²�1ÊA‹q²ÒûÒþ‡ MÏI(ây8TbÄıµŒsN ‘+vxñRÔV!#omåœS]tÑ_|ñ~ö³Ÿ½ÿýïÿ1k£Š\˜2eÊ?ÿä'?ùÕܹso2Æ )¾V*J8{*Ï1'Ì»Dëæ)ÏóƒgÝó�ª眓¬€7„×<žN wcû˜p_ø¸¡Ží'b±âY½¥5ÈV«µèñÇ¿éšk®ùõyç�÷زeË‚98uúáÆ ÁðQrß“V«åÿûß·~ûÛß¾Å>¯”r�Fà !\QÖ—þÖNJiÓ4uÞ{›ç¹³%‚š>Šù�äumË�Úª›†U^-TVØÀ‚鑝޿¸±4ëãÿR÷aôÐÙ.͈7qˆg¯FÔÅY¼^¼[9b"¡Zñ±ª�@ÝóžlìWu<Õsêáµ,¬¥”‚KH¡(Âb\Xk¥(U_°g�¼áÐD¤Ï:묷¼ùÍoþD½gà.\xæ>ûìó‹4MƒŒJRÇ‘åfP/,´¡£HÑ?û¸füyܹ^Ȳ+5s±’בãRhg­õO=õÔÀŒ3.¸óÎ;f̘qØH^¨n˜6mÚ¾çž{îOŽ=öØûyñoy#æø|°9*"Žs"ÚpŽ(â8FDA¬�c�MN¼Æ÷ÞSQ+õå)ÄóG•àEE!Î ÇŽŸ]—ÿm¬É•ÝØI(KŸ× åx |Ù0G‘¸ñÆ÷ßn»íFMSµk¯½ö'žxâBCìçŠ�RJ++^«ÔöØ�›Î€ˆŠm*b5§AÅ*_�çŒ >¾—1@:ò5Æ‚j:ܶ$Àµ÷|Ì >‚Z±Ç·+.b’(UsPÑÅMôˆ"Õ£(K¨k[�0礔�Ø%"ãÙ—Wp3»ˆ”¨z¤#Nã>x.3&Yz*£i”è¨L HÕëãk„fWñÂü«®Ÿcà僴 ãˆ"ÅuDŒIN®‚àÕZk}ÔQG}EŒßÝÁÁÁ¿�|òÉÇž{î¹OˆÒJ£cŒñý²®íq7f I�èL®{TQ;ç<Ç>�xÈvh‚¯áFÏyH®Æ¯,ኢpÆoŒqüàyÒI'=v '|«ÙlnV㥠˜3gΗwÛm·?Üyç�K�1(©WcpNx&ƒZ–Úä\ {µÖ‚mLV ˜7¹ˆçuŒçX�D‡cB�x\ Žu‚Ÿï˜lw¢Tì >Î@¼Ç#j'g÷ë&­5ªª6HXk[Ï>ûìm¿úÕ¯~ùË_¾{`` ÅP-"J¿bâ5UHTEñ%�¼ˆoÑ¿ˆç¤P�«uyÜuÌyˆ¡x!¶Eü@ yëÀ:¼ðãŠI¢v0fï2Æ„èXQÏ¡¡ öüØ4f£ñuF=�é)x°ÑÀçðŒ­úòE Ñ_Ùµéüz6äD¥ªªZ ‚k<Òž”«,˜�s”eY±PEø^7ÄdJ6°0™äœì©¶‚"†¢2QYvCVS§Nmqħˆ’ø­~áÂ…§¿ÿýïÿ¥”Ò8çŒRÊ&Išö8ç,oòoPoP äÃþ ¬#êH–A•ΨÔ~€‚Ê� 6ê‹o^”k)¥Ÿ5kÖ%·Ýv›yûÛß~D.Ƽyó>uÒI'Í˜Š•в( åœóyžKîN�gdzJ e�D+±¶X@ì2Æ�ÖššÍfH¸Åá¹Ë‚µ– VÇÔnö$RJ*ŠÏ×èð=.çGµüˆç8ò^Zkµvžç‰ 眸袋Þ>{öìÏÃ%ÜsÏ=ÿþáø×T’ƒ…(I^+¥´Zë u®ôt�lyîBïˆÕ„húÄk!�¡ËJÎ�͈²±,Ykihh(Ü$c �7ND iïYÁËj\‡kÆá¸²3~�ˆ•¡ì™.Ù§Sr…†‚Õß�ôRkmeÐk#S ¨¬°®…Va¹ ä;µ¯{ ‹½Tž·çø•¯çØå•R tÛÌ~©` ¤K¼VŽîùêž)¥@H’µVdY&p¿�s"Ïs©µVÍfSYkåÐÐ�²Ö"‘ª,X°Ï¤I“F¼áT7,Z´èOxà‰·ß~ûK áó<·RÊx¼9­µÍ²Ì9çМÐû2Y’&Î9/¥$Eg|‰±>ÑZ Ž÷aªÅ¼›$‰ð¥ç}°HâçÚ±oðÕ–eƒ=wÚi§=|÷ÝwòòË/?cÒ¤I»Ôt9Ò4�|Ùe—}vûí·ÿñÞÑ­VK²ïv‡¢Ÿ¢‘„¤”¢¾¾>Ç U¡( ?vìXž‹o”ˆ?r|ñTVˆ(†êˆ],1)"y©T¦ã_cý)9îI)¥l6› �74ø'žx↣�>úû ,X¬” bÛnÔéYYîóöP±£¡#��—8n;ÌW¿Be žu|ž$‰SJ¹(Þ…Êñ±ŠZ­V-×�uÃÕ',pb¿—¸‹)~�f´, G ÆMÚˆö˜÷Áº£‡ˆ¨gÑ»[ÌŠQÝ2v½8·r`âż�’²W«Áufv{@}!”ùVÉ]ê,¯ �Õ¼÷ê—¿üåaãÆ� ¥Ùnþüù§í»ï¾¿BDTxï "*´Ö&MS“¦©I’ÄH) !D!Úª#¨üð2ùvFª¿øsãÚeÄÖ{oœsxY|NDFJi”RιÂZkœsáãX÷Úk¯Kÿû¿ÿûš®_Àf›m¶×I'�´=E„>¬–€ &‘„ï$ ‰¨ë3¶^àYÇ¥j¬Å¦‰¸8™Y'⸊ùÇL4|±6MS0¹Pë?ˈäEé¸ä²[ADBk]UJ!„<ì°Ã¦~êSŸ:…7ïµã™gžY8sæÌQ!„(”RFJidéãZ(¥ “¼F)…(EÃß· �{2ñÊZ}Û¯5ö)$#“XÔ�XY¾|¹Ç¼Êë²j)þ»P™Æ� ƒK)…c *eâxÇ4ØÓàkŽ[±'qìA^ xŒÆÉ/‹óÃ1c‚}ƒs.¾w–ø^2Ù^|ŽáZxï�1ÆæyîòwåBˆœ×¡¹”2WJX›R¹VÌ­µåÞûœ×Ž…s®à±•+¥ þ=P¹æDL4ŽûO`þPJuÄ;Žo¡ÁæºÈ]¢õdÑg)Â�™ìÐ]kM¢'áíÀ^Ÿ>�Ò1£Âʦ‡zo„4MÄ ÏA$´ªh¼YÞÐ&×:Ð�Ǫê�HÔVr`Ž© ¸Ï"R†Ub?;ü*{Xw(¥:T¾­Ü‹Õ Ur$_øüÌ3ÏÜqÇwüd]çÁÍŸ?ÿÔù—™Ÿ$‰)Š;#¥ ¤ ñ‚7‚q³ÇUZ¥º¬Æ—I�3‚ˆ‚)aüàú9ßö�CS$)¥T®,; ›@&`¬Íž=ûŠ›o¾Ùî±Ç_ñ«áÐCýÔ×¾öµã{ûÈÓ0MS)¥ôyžCÊȉÚb‰‘JÅÎ9jµZá{J)JÓ^£a-�Ww’ 4X.ÄI5Ì#±ð$~ou!¥ ª](˜Y)µn ´Ö2IA¥B ¸Ð`‘˜�Úi§�ÆžsÎ9g&I2a}\—5ÅÒ¥KïÿÇüÇÓŠ²\ÆH)‹4M­°'¡áqi1öPòÁ&žgŒIž=_wø³Ý¢(Â÷‰B£¯µU7dYæ›Í&â.‹A)W…çïÅ^—ñç‚ã•àý©ÀZƒ• ˆCƒ�_óß°LìKâ&cÔ.�¯iš:®Õ \¢íŠ¢°ìå7Ń¥â²çx †Ž±‚Š"¿^^ßú<ÏAÞzV®!Î/X_²®$„X£®òQ,q2E)%Ò4…b^÷Ò9'³,“ZkÕh4¤RJµZ-õƒüàó£¡�é³Ï>{ëÛÞö¶3rN–2•ý=CR!˲@ÔI)ám,œsÁ’A”J\B’Çdø¿¾LÐ ¬Y=W" ÁHD‚ï Jü�1F !dQ’JÏiÇ>²áž{î9ÿÎw¾óԻᄏ¹ùæ›ï9²WuÈÃ?ü«ßùÎwíïïwY–¹¢(”µÖI)¥ÖZòõ k6!„HÓ}¼÷ž²,[++ŸåË—û¾¾¾xó‡Ø*bB�“!¡i _RÁ„0šáyW6À‹cŒåx*¼÷®( gˇDYk]«ÕÚ`¼�1×]wÝYtЯ­µAàœsyž[VŽ;!žA_EhäOpâ Ì-De �å��¼À“$�•ìL¼sÎóüä ÌåyÎçyÞñ̳Z×Gc-(„ëÆ°fŒ±Ø#j+{« ÀX¡åœ#?rh£O™L»ð¾º£‡Ì(,‹¯ ñB©¢$XAÅTý~+®QûºE“p x"îð¹�·à™èv�±ñ¬î÷brº÷ll¸¨Ž}xnúvÙ.v¢ zUôQ !ôßøÆæGñuQ¿5ƒ›?þ©üàçS©Ô‚B¢ðmWØ„ÆÊ/~?xòj­m’$–›ì5 EªV?8þý­°™õmµD‡j…�¯C]„c¬µföìÙ?½ãŽ;ÎáëØ�)S¦¼÷¨£ŽÚÚƒ2at¾éž<7B”*"<;LŒ­÷@Q­Æë¿x“ÔÑD¹F>k ¶‚ìÀbïÅä®äjÂUAk�{BÔV{áÿ‰ø%K¿]tŸ‡ŠWc¤1Fyï•”Rõõõé… ž8~üøm×÷uY´Z­¿üãÿòÓO?=H¬Þ‘ÊO°7|‘‚>¨u‰Ècl–e TB©«o+KÑd-øìò|èq/´Ö«$w£cö•ûÔ¡¼ÇŒË°ñ¿ƒo#oÎ]’$ŽX!þ0,”[ÔŽaÁËê-ücŒ-Š"̯¨®áµAX+,^¼8ÛsÏ=OZ¼xñÝu^g"¢ñãÇïxÍ5×|„ÉNÅñ7xú#Ù&Jïl�¨ÁãÄ·s.To¬ †††bX¢v,ê°¯Âûœü‚ß+Ô¼‰¶¾ ê|üuY7aÜÖ“VOwÜq‡xà�7cr)e¬ÄÍ­µ…1¦ öܪ¹œsRÊ•%œ,)LɇïA)O¼ŽŒÆ^x¯ªlçyv`žã¬G²…*ö6Ôör®çb2†UÁKÔ}£/ �!Ͳ,4gè¡Ä?}vétTø¾÷Ðõ¼1², ›C(G¡BÒŠ¨Ó‚Í]zqnåi/þ}¥yOš¦4f̘ ,Còp4¤ÁêdùA�$Iž›ÑD�ô°úàçT+ÁTÙ\� QJ­PŽMí¦%J¡®½öÚGƒ5ÃÂ… Oßwß}ç‘�zϱ5‚µÖ !LžçN)e à‰7û+*ð9¾ADÞäP8ÏbVò VA„FTT.œá¥<;•Rž»»{V¬AÕ0I)žûîû_�>úèŒÕDòsŸûÜ'¾ùÍo~�Úä¾åÏE &w $a¬Ä ‘†Å Õ Æ@õ]__cˆ»¯�ŠjC¨ dtVðtMª"”8wC³Ù¸&EQôáçWT;Ò³BßZ’9 [²$I¢î¼óÎ�½ñ�o|ÏÈ\¡UÃZ;töÙg5þüEHžðæÖEa¨$n�çÒ|Ž �$¥Èš ":6»—ÞûP¾‘ák­5-[¶lµ'Å¡¡!Ÿ¦)”nPiÁ“Êj�‹žïâ’€W>bQ90Y'X)†Î9§”’išzÏ�ñ9Ë-¸ <Äd&ô`wì2øÞz®º@©¸GB$º>1ªo› œ3â9ˆ+©çD©ÊökÚ‹cc®(Š8©Êë©ÓI:电VYkU³ÙL>øà¯PÍ]–.]úÀ{ßûÞãÿþ÷¿yï 5ÁcâÔzn†§µ¶ ìƒt IDAT1©æ\¢rÌåy®7’ÝŽÁµ­€äCEE¾´Ä ]Y!#“$‘RÊ0Ïó1€´$k­æ™ghŸ}ö9îÆoüîĉß2üWrõ1cÆŒÏÏ™3ç¦ë®»îE*¯Ÿ¢’…�­BÀBGXkáÛÖ/«»¾ï(E‚¨TVãï!I­“ÚÁ©L„ $ùg¡@ö¾Tì k­`eix>\ÛeÔ[4<ÿüó¿ýЇ>ô�?ýéO¯¸ÒÇðóo1ß“×ÜðÎ9ç_/JEoXR§½wˆSXðuôD¡‚ k­� ´Öúh Eâ…ïG±2|D\]ßæõ…a‘>�Ð jû_Ø Ç“Hi@=G°ác“iSèmûŒŠµ^=Øž‚w¥€Z(öWíöÂⶇîˆ7Ý(ÆóGð�Ü@íQ(†be¬5¥1 E©/«Û‚G±¿%+„|ô½5˜÷Þ[kC©§äîëñÏ{œÅj”®B=,"?:"2J)Ë�Ž‚Â×Z[üñß6Æô×u}§M›¶ÏA4™"›*›ÇòŸ¢²ñê|±: Óá@¯ðqx¿ÛZ>ŽÑ£¸~qì�Éêz0Þ¿tæ!$ã ´eI?ü“¥kÛp„ô‘MÜ\O)¥Ôå—_¾ç®»îú™õz!Vþç?ÿùI§Ÿ~ú#J©Bkm´ÖVkm„ÆZkŠ¢„PxBýÇò˜Lˆ»›w¨Õ\»´‰?wι5"w�<Ï‘Èë.E06ü5À‰HÍ8^yßVcA­åøçC,ªÄ§@ºQÛ÷w8îÉZ� \®P™AYÎ ä<µ›TešŒ|“©3&wxãó}‡Cì{î­/ökµP‹cH^�”Î9ŒA͵ñ<+­µêÒK/ÝkܸqÓ‡á¯5ò<ù“Ÿüäq=ôÐrªTÃ8VÅ;ö”g5uð¬'žç8Ó¿xX¹�t%¾§ü½Ð÷…U�HÐzTÓà¾Ç_´½³ƒw>ŽMDJcžܢTùçœyðÁû?þñ�›çùKµ\p†Rjìgœq°gï]­µR¥‡”´ÖJWZQ„Øíœ¶´mˆÅ9×ñpB2 Ž�!V2Ùè½÷a\ŕԶU q'&Ú1¾£ŸÕ Þ¿üå/?Ùn»íŽ¿ûî»_ñ¬çç*(xE»¢ÌXk [Ú7„¾ ’=§Yin˜Æ:p…ª//ØèwB¥Æœµ6(áñ¹1&T 0Iï¹�ǽÄsS7¹K4L/ˆÏ~%èL‹I^UµR¹Ž#Øðñîÿ·_­¥Æ=ôÐ =o�Fƒ�F æã°q„…ˆHd}ë$ 7`C„Mxš¦+øÙ:îÞ_ÏxóPbb¼±!ŸG´ùì°¡èaÄ Bïh£o³ÿþûŸÇ än¯Ðœ…‰Ô`Áâ¤->·\Œ�?‡$I—$É ›OçœÍ²ÌfYf�1FaÓ45ÍfÓ4›M“$‰õÞ›<ÏÍUW]õâ-·Üò�¿¸ !„:æ˜cö¥ 6“ÂZ+‹¢�Ñs$°ÁÄseQš¦#zÌq¼…‚N•�Ùihh(TQˆiuÿÛ²C\QÀº�Çnø>Ä&+ö/Y– ç\°Ï(ŠBdY&ò<yž‹¢(dQÁ†A)¥¤”qi°VJéc�=v›8àëT³š¸ë®»¾{ÐAÝʪ)Óh4L__ŸI’Ä(¥Œ¢£Y“h7K cßG%ÁLV¿]Ä�$I|³ÙôišzJByï½ÖÚ¥iê›Í¦×Z;ßöõ¹þÈãa¸-k^‹†êœ‡cŸVÄ_k­ƒO²118&‚;~?ºŽDDM¢Ãó<§,ËüÐÐ�oµZ!¡mŒ¡���µ¾&P—R”±�=uBÁ k©”ÒRJ½çž{~z]®ëpà'?ùÉ©7ÜpÃ"kmáˆQFa8qj„6IÛh4l’$Ö9gó<·e¯5[M’Æ6.š_ƒz¤!?ç>IŸeŠÔæišúF£áÓ4uð�“°0ÁqQ¹0 ÃÒ4µ˜wÓ4 ‰Õ¢(Ì‚ ÿøÇ?þ:ÕL0n·Ývþó?ÿóÆRJ™¦©l4Ò{¯Š¢@Nc Ü�íµˆ†?N‡q‡1ˆ½‚âÞH„!&‚DÄ8dÅvˆWJ)ßh4ú îÆk4â±ÇûÙ;ÞñŽ [­V®µ.´Ö…ˆæòÇPMÆp‡�‚h7ö…U˜uÎY)%þëÅ<ÏÃ÷@äz®làçØ)¥0¿Á–'$¶ø¾9Ì!|Õ�4Z®ù:¯È ^CYT¬ºŠIÞø}`´düëFcìzû~ÿT÷aôÐà 0yOÁ#Vlb3Ù-¶QUuPÇán¨Î Íc%›ãæv(óŒ•eu"V‹ák$}ú¾I’įb/¬$#$<[U•qnìØ±#,º­Û¿@žµ×ðqL®ñ<�ñI´r2æã8»²?'o˜´ $-xöÙg5sæÌs­µEô�Ü�•¶á¹¢¶èÀ`~òíÞ AåîÛM@CSIŽq+x“ãw“$qI’8b•;q%­¨–‰HŒ?êL`Œ r—h^Lرrmu&!‰Ñ‘Ä®»°75ÆöÕ}=ô°_©­²uÔ!Ë2bŸ« fʲ,¼�…-<~ðsD´ÖþM¯Ä1c µZ­à�“éyž“µ6$A–Ö�Ø~AAI’P’$A)FÔV˜�¨Î²ŒœsÄÝz{Ø€Àã»cá¢ÊnÞBk-{íÆ/_*zƒ'àYg�õI¥Ô˜:ޏûâ‰'þ…•¯P…ŽÞ"*ÉL’Ħiê�F(Á¦Ê²ÙlRš¦(_ëPœ`l[kC@Iu¼ñtìåËq3t*æ (þ7ñÎ9çZ­–mµZ6Ïs㜳Äd+8Ì—¿ü峬µƒ5\j;vì¶§Ÿ~ú›©ýLò_!”Rëh*ËÿClƒÂt¤ç�ªH#V½Vp£%#æ:ç‚ð›fVá†g0®¢èv좽‘‰‰ö`ËÀD@‡÷'µí7TžçÚ£¥”*I5nܸôꫯ>u̘1oZÿWâÕñòË/ß»çž{~3˲à¹mŒ1­VË´Z-cŒ ~ ªlšŠEß@‚ìÄ{` µÖdŒñË—/÷K—.õkcÁ°–X¡|k "¢<Ï)ÏóŽdSôyL²Ç#�•Þ{ïAbB1+Û¾¨#tz]N8«8œOQVxŸ8†GIiÜÏŽÒ~Vz(ÏQQk­˜øŽþÇZ¡Ñh­5�3F4 U5¯”Rh­%{ñJ)¥ÔZ+)¥´Ö*!„ž3gN­êÝþþþÇöÙgŸ‹E»\Ü ! Ï©V)e©®( Ûjµl–eÖ{ï´Ö®Ñhø¾¾>¨l}³ÙôLzR/&Ù©í#JD��'c;4¢Ò6Ë2ßjµÂ³�ä'b�µÖåyîýÐÐ�+Š,Ö—°6Ë2344’ÔVT"2sæÌùþÒ¥KÉë^ÅôéÓÿï¬Y³&fY&³,C>Øg !D‡Eƒc�õF£AcÆŒI’±ž‰ÒV«Õáç�¹ ë&›=æ5$Î`áW(`/’¦iýs/¼ðÂvß}÷S—-[VPùŒƘ‚}Þ�÷¾€Õ‚Rʤij¥”J]ßnˆ$h€I¥¥WG³IŠìfÁ–ï�®V2PË+ `T]ëa«©Â¤†EN±: ñѳ$ RÐ;Ü·îÃ衇®è_²´îCðÔ&(Ó@ìůXõ´2eo�ˆÉ‚X©_·x.Á�ºÝæ²h£~ïõŒn˜H’D¸¶Ÿg(×ö�¥õO­µ”ì蹩Çá‡>uÛm·ýH�ç±dÉ’{fÍšu9µ-Pö¶2õ^¬à�Â!,‚¡Î…„HÇe¼­V+”b� %JtxÖ ‘Jű]hîÄLjæ–}Ò,{°Yœ“”Ò^qÅÏÝqÇÕp¹‰ˆhÿý÷ßO´•º’Juhðà•ܰ‹"ÿf_ñœ3fÌzÝaÆksÄ´˜ä%ênÇP7Áÿÿ˜˜Ž¿Wܼڱ&I"ø†fjx‰Rµ ¡öÞë;ï¼óˆÉ“'ï1Üç¾6zvÞ¼yÇ>ýôÓCP¿Û<Žba¬hZ¡ 8&Qy.åÿõžmÞ·Ë›üòåËýàà`‡Ú•"r1Š•©�|‰¾Wýûµ¯÷"₈Bó+ßþÐVž‰¶'qð-ÆX!j�u4Wl6›è�àó<÷Y–k‹áVdÇ $þ\ˆ2€ fÚà»Ô»˜c¡¬¿ì²ËÞ=~üø†ó¸ÖÿöoÿvÆßþö·!)^)šs‘1üg¾æ0Æ,ÿú׿~ôÂ… —Pg³§�Üe‰xÿùòçÁnÅD]È+‰š rRPÛ³WDþÌ>Á®�“P!î‰vÙ“k8X¼ºÈCíÉc•BÏ•ÞÛžˆ:Ö&ÖZjµZ#z.gþDe¥ ª¬¢—ƘP%CDðUUZk½÷Þ{>¢]ÁsÏ=wË)§œò sMÈàj²,ƒ*Þ¦iІAAbdSœ|€‚Sk]}v×á�rüFóØxÇq2Rj»¸š\ÏÕ–¸ ¥o7š5çœsÎãGyäü­·Þº6EÛ;ìpО{îyåwÜñ’sNªŽyÒ{ïÙ‡•†††Džç"Ë2Ÿç9Öw$„ðãÇ�ýýý#Y‰ë¦°ÏÀ¾žßhø…õÆùúV¯ ¼÷î‚ .8õÁ\N•†gHP¤Ð…Wp•VœÜgqEX{â: z•žÑÿ|�?†7ÁkâùÆüïëÖÅ~f$°ÎÔ~7….Q{‘…‡2òøa[AòzÁ»ç}°îC衇®è©wWDD`t¨H»!V ô°zˆ&Ò6í¸–q6½nb¡�E!8®Z‰‰ë6 @Í'„¸—h€Å¤�ðÞ ¥T Bk—ÊC9dóiÓ¦} Îó¸å–[¾sÅW¢,”ˆÊg­F:V öv‹[ÕŸ©Ñfw_à¸<9®úˆ_D¥ßg__ŸÀ¼Ã1[°å޹’—JÕ »xi*‰^í½×Þ{}ÒI'MÿÀ>pJ=W¦Þ{÷ÓŸþô„oûÛe%ahXCå†;.� ê]j+÷C‰?ÈA¨>7Tr·@ž�D v¹tàVFäÖ=§Çk œGµima„�ê:サ袋¾ÏêC”އ¦…ð�§²©hð±§Në¨gCå ȽeË–ùåË—ë «ªÙyÞ%jÛy¸h<8*ã@|ü6úØQ$¥´ßøÆ7þÃ9W[c­õøï~÷»¥JObxô<…y4‚›i ¶ŒiàyÀý‡ª”IK$Ú0öƒ÷îp¬Ç† ÷Þ{ïe'œpÂ_(jàëÙo—º4ö�~ªqK¬ÔÅ3G¬ÈErœ¨ÝÇAkÝÑ`0J W­ªU(aŽã^¨N‹}ûGÍu]Ö™à�'<øP¹à…òt w\†»ªÎµ¯LÝa[Úêm;Ö}=ôÐË{oWÄǪ§Uü3I’„’¶×{¬[†††VhÚSEuCn­¥,ˈ3Ö#y¸+ (Šà)|¨Ñh„²ÆF£AL’¡ª–ëatã¶ D$’$¡1cƈf³)´ÖBk-Ó4ÜÁ[Q[Á+¥”êè£�ÞŸI¡Z000ðô�8ŸxaMìS«µ¶išÂ°cáLQ'aÁÍÒ¸K;yïÑd�=»À#Iÿ&Ü:Æ0Âñ*¥\__ŸK’ÄEáboÀ£Ž:êkíÐ0çjcÆŒ³Y•†/PéÊ¢(Džç‚UP‚ Á"€7›ëõøàu¯Ïá).ØB~ÀqÜÅ> Nh­;D$J)j4á…~!Ýz…tù÷��†HÓTò= jA×nңʧ”,íX´µVµZ-=kÖ¬M¾üå/Ÿ£”jŽìÕèŽ;ï¼óœÃ;ìÎ4MCCE­µÑZCÁÏ•±Îi­|·Ù{µÃš�ÿdP²ÖwVþïáÕ­Á’¸x®V•ìIàYFìÄ„(øÇwT1‰ZmHW+â„!÷c€Ç}¨l`·ÃçÞ³¯¹RJÍ™3ç€:Ïáé§Ÿžá…>©”²ZëàêÙך¢¦Plqš�ЍqV…ˆ")%­OëÁÁÁ`½!ÚåèDDÞCY–¹¢(@†9&�]’$V)e¹ÌÞ6 ËÞ©ˆ3öª«®zî±Ç»z}ûê`úôésÓ4EE•´Ö¢šF:çd–erppPcBBÊe®<uìçâØï`±Q!xCLªVEÖ…¥K—>ü¾÷½ï2ê$o»ºÔ&r]š¦®Ùl:­µ =²mÞûàA ¢–Íèå¬Àâµ*?ÛžÊgÛÇûI¨}ãX ›?.èj`�WdÕ¬xUÝFÔöõŠ7·£i2© ïþsGÅ‚ ‡º¡Gð¶!¨Ã©«"NjÅ@\ì¡;°0!êܜĄZ¬ #êœ|ë&ªèö àýѲ ìaÍ¢ e_üü ¥T‡²(Úh V…H!„Úd“M’í·ß¾ÖMçí·ß~ɲeË VÔt(m  bÅžeÂ4(w(ZCÕ³¾• ÖZ�� JïxóüùÕÑé[¿^‡M5+�ìÝwß½ìÉ'Ÿ¼q}óª0yòä™Zk…Ò~¨†YúŠ8æñ·ˆ¨ŒëË0ÞÆU±æ²ê:4Äà•í'ºÍËU2—¨Ý,É>ÇÏOj7USÞ{ø8‚,ÐTÚÞ)"Ò“&Mj\~ùåg4›Í)ëå„×�?þøÕ³gϾŠUuFJi”RF)UUÚ9¥”ÓZÛ$IâÆjaC)[)˲×ÔFkŽnM©°—�÷»xk–ºç÷•�ƒøx±‰×#£m?î"ïÓˆh|Üð¸G"¬C�9gΜ‰“'Ož]×±{ï‹3Ï<ó?P~ŽñEQ(|ô?PŒ³˜ä�¹“ÁÁÁ»Qι0Ö‘Ð…¯>Ö>ò:¥() b[kí´ÖáwÜq—ZkFêªh6›Ó.¾øâh·dæ`k­0Æ@æf*O6<“¼æ` t›s£y«cÿÜ(ˆIþŒ3Î8ãå—_θZdeän\�Ôíœè ~#«„€JS_�ÄUÔ ¢«ò×'öY·Öú¢(|«Õòýýý¾¿¿ßoˆóÜ:¯ÊÒ4íÈT¾8Kȃ¢#ƒ.èõ¹Ù¿ÉÆ´ËÞÿX÷aôÐÃJ±ü¥Á#.sƒ’te |ϼCCC=õîj×› d¨‘5�¸1  ©8Îx^óÞSžç444D­V+4Ž‹-�0/ö°a€m¦<:ó<EQ„>眀'ožçÒ#½÷‰ï}ï{³Ó4}C]Ç?00ðÔ¼yón‚š&IÕ •]‡ÑXɲÒdiGC¥<ω>žeë Ë—/÷ˆ§¼`*'”àÅexLê:n½išÚ$Iœ”ÒþèG?ú¯õ}ÜÝ�¦éä£�>zkj“ÿðs�FCpçx�Š�|$Zyq¸Ð××”º«Kþ®Ðc…õz9®ÕoÐBŒÅ/ÞäU…%Ñy cŒ°Ö Q>脯Q®‹Ï)RðF¯vÎ)çœòÞk)¥þÝï~÷ÅM6Ùd·º®GŒ%K–üqöìÙg+¥ ïOÁÊ]bÅT³Ù´cÆŒqI’e”…P²5›Mû¾–Å.Q[ÑŽçªpøÿãÃÞ¶›Ò·DŠ3 UR¯XË"i‰5Öh8ö�6ÚHD±ÉÑjµDQh`¼H¢R›àU'Ÿ|òû¤”µ•Gýõ¯ýù¥—^ú7³Þ{ Â$^®ÜDx­µo4.I4»óÖZâ*!J’¤–rû¢(:H^”¸S›Üõ¬@vÖÚÐÔÊ•eK¶ÙlÚ$I¬sÎEao¾ùæ—î¿ÿþÿéóˆ±÷Þ{ÏMÓT¦iâ¹”MqC²ž8ÿç½EQˆV«ªG2©ÉÊég°ÇÀ qó7ÞBÔ¾?""zòÉ'^tÑE�7›M«” ÉŽU¼•¶ .Ë2×jµœ/oRH4€„夕̕]PöBÁ+yãï�ÄZv¤1,Oh¼1�¿Æ{++ë""z�ò»4ó£ •¬s�»zXoèyðFèR‚“uÝ€÷Aüö°j`AÒ‘Œ^Õk½>ÉŽ5ELðC}Ï{ȲÇåRq‚ ‡Ñ�±cÇ Ü?¢Ò#Ur&n²¼Û\ÙÁ[Àš�J�NùÎw¾ó#užÃm·ÝöÃeË–Ä*"(x©TÝ T‹à ÞeŬB3�‘Ül xŒ¡ª×œÖ:Ø5°ŠÈ3Áë±ádQPõ~ó›ß||É’%÷ŽÔñÇØgŸ}f !¤RJ`C Õ(q3¨Õð;xo}V¾uK EDzÒßéÖ_c¤QÝsÄ× ÏL5þr¼Æ¾C™  Š.kmði¤vIxUÁT¼ ,Øoûí·?¨ž«Ñ‰ÁÁÁ§>øà^z饌¸±��<1ö}Ôqœ›?9Qz<¢$åÚ¾Û³òZALîVËžAŽÆÏû«�‘‘ÖOX«"‰ŒÄH�Ñ@U°P'ª×’.‚ÇpðÛeae xK‡)…r§�vª­¹�µ¶uüñÇÿ¨œN-¦ÁÓš“)�ÄÉ+X± ‹ãQ°)ªSA˜çy°kÉ ¢—O �d7©ó¹†ëàœsŸùÌgþ3Ïó—ë:Ÿ7¾ñ�sÞñŽwŒ£¶÷®„"œc|‡=ÑŠ%û#9Þ«óS{«ŸW›‹Õ ï½=óÌ3/‘³lû3CÉ^­ jð8Áˆgot/yûZ$j×ëLðÂû#^`U² ðLìX¤¾NoÅÛ?8§îC衇Ubù’ÚæßÑŽcñ¸º ®–Ñ$I<Üz^««ù¹Çª«xqÁDT«BÚ³²ÐZÛј¥º®.Ðð^o-²a Õj5>T}}}¤”¼¶(óCɨ1FE!­µòØc�ÝzÒ¤I»×uüLòÜDí’P Å.¿B³¾‡� IDAT™(ÃC1Áž»U¶ýpG®Ý-¥¢h,6˜Q‰žÃ9�Ø¥öæÚ)¥Üï~÷»Z¼·Ùf›™RJ‘$‰L’D!¤sNc|xó<ïèBŽ8µàú@¼6�ã^Ýò¡ÑhÔjÓol«JçêÜ�Gd~†¿'˜ ¾ÚEQk­PJÁW{¥Ä.é³Ï>û­sæÌùJס c̲¯~õ«Gýú׿~9Ïsc­5J)£µ¶ÖZ›ç¹+Š"xƒZk]«ÕòCCCÞZÛÑ´†7Õ¡2¥( xÍM`qŸ”ôbn�_ z£ÄW˜êB7ˆÇÈj3Tîu4�ªD.Öyqó Hº rF !Oåi§�öãÇ�ß¡®ã衇~zà 7,‰'Î9—ç¹Í²,(v‘�ÄÜ•e™Ï²ÌsüyJÆZ²dIíã ]ÌÃ\µ/òÚÀɶ§©Ë²Ì ¹,Ë‚¾Âþå/Y~÷Ýwÿ¨®s‘Rö�zê©{gY&‰(�»Ý¼•QàµF ñ~'®&ˆm¯b…>âX�xüñÇç_zé¥˲ÌeYf½÷!áE;'7œÖº£Ñ È\*“ö„u)®‡k{êöÐë¼"[Ùµ­nd«›t¼ï_‡ ï›vÝ�&n^[¥f=¬z ÞNı.Þ,V »n1ñµªvn@ KD+ÌÕ HÔºU'Õã$ê>/v{>zk“ ‚•€ðg J"pÄ^m’Ò¯C9¤Võîí·ßþÃþþ~õ�÷Þ±¢&xÖÆä.u*wƒï.oj{h—‰ƒð„ škð±9(:|¥n"²_øÂî°54[›4iÒÛ§M›Ö ¶b7®^À3Gišû„''cı¶Û<†ø;渘ܭZLT⯈ÎG”{Ʋ™,2|iËE~hârW¡DÙ01�»pÀäÏþóߪ³<ðÞ›Ë.»ì¸ .¸à�sÆZk˜d1DdœsÖ”Y�…!—[‡1…?ÇÓƒlµZ¯ÉÉ Ê]Ø'�Ð%ê|ŽªÏö¹£iN�+‹b{±ø8qUÁBèëë‹+e'�‚šžxžÅØDå ±SJ)<ðÀÚԻƘþý×½Ò{Û“à=k­ IGj+=æ*V "yŠñFCCC£æ�²��×B¹<Ž$/q"IdÌ»Pl !Ü¡‡úóV«õ|]ç²óÎ;q�ʹWÆ6<Ô¶hˆç Š’øD#Tƒ¾²^$ñq¡Z߇à¨kåüÁ9W|ã߸LJ‰g!ôG€Z—+Fl¤ÞíHp€O+LÞëµ÷ÃkëLðÆF«‹* Û¢ Êë�ߥ]ß7«îC衇WE¯ÉZ' z±+B·¯Ñ • =¼:V5‡ÄMOºm\ê@5³úwÛ,uQ¥ô0Êß+^0‹,Ëû ­5:|Cå×áÓ9a½å–[¾¿®ãxzÞ¼y73¹;†°éJ’Ä¥iê©$w �€r×CåNÝ@©*º$G™acÌ�µÖçyî³,syž;c 6žþoû[¾téÒGúø•R}'Ÿ|òÎyž‹,ˤs›Hl ø�ÃÂåÕPu 7⸗q£±`·˜lŒ¡¡¡!ʲ¬ö˜V­ YÙ\B¼)g¼ãçµÖ¢ÙlJ¥”ȲLæy¼v�1Ê£|ÙO !´"4V›6mZß%—\ò­F£1y¤Ï½n»í¶³>ó™Ïü1I’"MS#¥4Þ{S……j—˜ˆñm¿m—$‰O’ÄcüÐÐ�7Æ„²l��u&yÖ7 NöÞ“ÖššÍ&ιCí âd4Yp�|DZaÝTmŠs€ÿ.öñ£�œŽæð&GTJÉ4M¥”RE!‹¢A'�sróÍ7O·ÜrËÔuì>øàÕwÜqÇ+Æ B“ç×PEB‘?(1™…fjì{WRÔC*@ß%^ëú*¨Ý”ÕI)=7j MåØÊ>óÌ3­?üá?®ë<&Nœ¸ËñÇ¿5WÏÈ¡¡!988(­µ±ÿ®àØ'ñG|ß�µ*ˆh…¹bTË£ïG·¤íHaÉ’%÷_ýõ/rïBWpŸç\xî9yÔàI’øF£�ƒÖ@¯åùg81¬¼Qv¼ØW„*x¥”ôÖ÷îQ÷aôÐëbÙ¢%u¨b[·ìi·Ÿuì¶²î�=¬Ý”Wx›ÌÑбšˆ:”Äݼv‰¨c£…yeŸ=Œ~€,"¢ø (+¡!Vaâ=!„<묳vI’db]Çþ?ÿó?W÷÷÷)¥ÓZ[¨'ˆIPbb‡Ê28ï£nÞ|¾>&3F  Dã{á£{¢×3™ë,wFÆù9çœ1Æ?ûì³®ãØwÙe—·Æ 4¼8nˆh®)%¦bÅ&žÃ�x�oãÿ[Ы²pID¤PðÖ% óuG™-æg&×Ik-’$ÜU=”€{§o«w5é*É{Çw;qâÄ�ë9ûN<òÈ#W¾÷½ïý¹ÂD/‹äŽ-39ÕÎåA¹/„@¬]<ž�¢(^Ó›¶nŠ7<[19ºšÉ„Gœ¤‰U86œKu�2Z€kZ‰u":'AeUMh€è½—ÖZqúé§¿£Î¹öŠ+®¸‘xLñ<üîY½Ô»ÄãMDÕ1|¿‚B]ç±*`ÍÊ–H¸?�àEÙŒQOÔQþBÔ}­.ð«¤p¯Žêu�Éq­uð{ ¤Q›à]‰/¥ *™V«Eyž“ÖšÒ4¥åË—�àÑö°¦`b34UsÎ ¥”PJ "EQ€èÉ ¯ÐZËY³fÍ®óð/¾øâ[“$ M,|ÛÐ9ç|Q^”Í”©ËjŠŽ²¿X­^'úúúDL6{_Ö×Ã0Vñ¯àëxáˆÈÝwß}÷í²Ë.#~›m¶ÙöØ@:ö�d27$ x³ÙAxÄ$Ã�4ÔZ¯Pº�ÿ#¥¤4M™‹gI*ØfÔ…˜‚ʉ•Ýb%ǯ]/¹¡šÖZ8çà,�sRk-“$QÎ9•çyðÞ¹KìÃ{ûí·dë­·þОòJ±hѢ߽ç=ïùn’$¦ÌcøëêìR^%›œ÷ÞçyîJ>Ûƒl ªÂ×:¹KԙܰÖÒàà`G£º¦‹Ç'~¿.`}„cÇ1Ç1qS)Eyžw¿£H&xïE«Õ *JX§Ä U!„d‚W¾ãïxW]Ǽ|ùò'Î;ï¼'“$ öœH ¾¢RÊ0GÏKñœ…f¦u6T{5ô÷÷ûF£�‡Ç)ˆÈ[k}–e.I�ª cŒTJùF£áâ5ÙÛn»mé¢E‹þ8yòäZîÛ›Þô¦w%Ir‰c+-*ýx…”RE,“ˆH$Iâ#å2”¼~$ÆM<ç:îñjq¦’ା´ Ö?Däy vZƨs}’$AÅ‹ž q•�Áƾ¯¬sú!žp#ªTð�ý‰Ÿø‰7&¹èG޹ëÅ/~ñï>|¸bæ†&Ýë›fRÓ£eßÉœ<Ñ˾¢WÕ‰L˜àм¢ùUÎ(»¤Õºzî#2/~ˆöAtI—¾ó9Þ×u:SfhìØ±ƒý™v�ˆ(dËXk;%l`.É×KsÁ<3Õøïºë®ÏšI=Q—eY R×M$óA­HJ½K’·óæ©æîZ(ËRzÖC¨#ìmìN0 À÷ßüæ7?—ê:öìÙóÔk®¹f§¶û<…ñXvÎ�ÐÅþÖ‘÷ƒf ̽†ã—F|6Mh›=H•&‘Iùa_n\D¤íRÈ$Ku[ë¶æ‹‹‹½;‰ºéµñ!}šæuúrmžÑÿË�§Æ€ÇÅCwß›zs‡Øùí#y×Út2omèûè|�;­8!šf�0sèâ�S)ØÛˆ¦�p-º»¼óµ±VVVÈ96ãñ8ÙØÖZ�F…¢?dRÓ4HãÄœµ™ 3óoýÖoýÈâââcR�ÿþýŸgß@Í ŠB6:{G[F£íرƒvîÜIKKK!S‘»�H]ëÀ ×/êÆá¨k=–ê261I‚µ…º—Q#¼:DH :­µ´¸¸( ¢T/âÇ#·Þzëá#GŽüëlîþÚXZZºäÒK/y;Á£Ñ(¼@d›i#]òsnÃǤk�â™Qx6¸¯ñ˜´Ê;D$¸øÞ?Ö/?/@–3ùÔܺ®¹,KÓ¶-T»†™­ˆX±Ìl=É›1s&"™ˆd¿ð ¿pÁ/þâ/¾“'jÞ¤¨ëúßßô¦7½ñ–[ny´,KÝP­eæÖZÛ¢k9©.åEQÈ‚dYe;Ñ”œ ß$¹¨ˆí‰öƒ¢(:þ êÞ¦n²&"¡oL�äÕd¢HCýž eYvj†‚e#ši@òb¯á+"æU¯zÕy;vìxlªñä#ùMTº¡‰”/ͰJ­KŠà%E|m%Q�W“ “$‹sNVVVd<£N¾[YY‘£G�º£G�º²,�sÎcÜ;ÞñŽ/ŠH’&%Ìlßð†7<½®kã|cSüdZÚׂ¬ðƒ´J~–ˆ ^mwÖ Ì΃Éö÷ªÓ€Ï@$Ë2±Ö‘öV üˆ¦õ‡œ<6´¯ŽêE 7¢Ó—ìxüÿz -îÚ‘z¸/õæ}ªKíkÛÿÞPkõÄELœRˆûª ¡yQÎOIŒ`¦VÍ“6`m¬¥”ÐÊŠ¬Y–k­afóâ¿8iÊΟüÉŸÜìU5¡-˜Þ‘&¢nº±òçØ«_ÙZËþ�¡¥A� B@ª{Y–\×54�Ǽ²²ÂeY2H9kmPñEðèžN^­òST­ZŒ1R@%âšÇá`ADrðàÁÛ7åatÇe_ýêWÿˆ €Ì`Uë¯s=^-lÍjæS†V*ö)c’(ž3©É M i�Ÿ?žäÅ$5¸Ï£ÑÈdYf�sÜ4�q“’6Ïsk­µÎ9뜳ƘÌNTFDöòË/ßñž÷¼ç‹¢83é…Ó¤[ùõ×_ÿ¦ë¯¿þž¶m›¶mç\CD¡þ.^ƘNMPk­äy.ÖZñY'!âŸíiµIi¢äDϪ§ò;³B¡«×s¨™`l¨ªl9”F"UË"2¯xÅ+’©w�9ò½w¿ûÝw›I±PÈï1¨=‚«jÿ H=oNMÓ„ ÞÏ „�Wn¢$”4MãðòéúŽ™Ý-·ÜòèÁƒoIu OyÊSþ³÷% {Õ®÷M | ø4MÓÀçÃzâÍXKZ$ »—SÒÀ™sú”(¾X'@*¸�¬?îP‹wžK–Ì3ÖÍ:@‘$"!%•¨Ù@TQcê ž>Ïí©Cy†[ƒ‚w5àk»F´ºØ¾fQ¨µZ×I‚Ôs�>"€z{HL,Ìš¦ NÑt\ LP*" Š8Ô½0ŸÀœÃË6;)óê{CÓÆZË—^ziÊò ÿòñ’R AÁk­oƒ÷i<£§ƒ¨ð)ù""T–%QPåúŸk¶P÷g êo^„5€Ã8D”¾P�F#ZYY A¯î`a¯nÕÍï¨i�Çá@%1OšHQÓ4´ÿþÛ/½ôÒM¯ŸzÍ5×\aŒù6æT]×LDì»”³:˜¡yŸh¢f–v !ÝA5MkûœX¹šá€4Ç}õéµAý×¶­¡‰ÒŽ‹¢ <Ï©i>zô¨Á›ç¹-ŠÂŠˆ-Ë2cæ,ÏóÌ“µm›åy^|æ3ŸyëîÝ»Ÿì¢þîïþî¼îu¯û†ˆ4"Òð¤ C vÉ7»aU’¡i4VtÎ9Ôÿ ‡ëªªh<ÏÇ&»Éa«ãÚ¶¥²,;¢&Ýt0µO‚5 )¶°×¾Y^°µš@Jf¦ÑhÄ ì³�BCEìV刈¯¸âŠdõwï¼óÎÏåyîŒ1â Ì–|]kÃíÕ½Y–‰1Füýï4”ÚŠièu]“¯±K>Bd˜jb/Ô½'U¶Â—®ho½õÖÏ^wÝu?‘büçŸþ.ŠÂ:çZcLh܇¦›þy²>LŦ2rÖ>üZD.ìO”…Ÿãý¶™Žíxð¶¾KPëE�fž¤Ä�šþP.85¬;ô k÷èɧ#™zóXéÜzQ«SA±´@OxÖ�¥Æ€'„‡¾?¼1°™®íSo¤Žžn 8˜çy {p`Ò¨>UYj¬E6ƒ€éKášÇë°^µAJµÑQnÐ$�/8¡<õ#?÷¹Ï=cïÞ½OI5þoûÛ7C5ä‰è@jªÞ tôäûƒgP(7Mâ+¨X𦠦¡¨òõŠÃ�\«¬€¸*8(³@ÆiÅŒ?\qUUŒÆ'4M¥4ºLH=ý|êºfb?UDè¶Ûn;°ùO‡è /| §qðŒö"VñÌ ø[Dö<=oˆ(Øk|>±=c½þÔü52M¹5þÅ"býÜ1mÛZçœ%"ë?¾§‰&óŸÏœs™ˆd_üâ_~ÑE=7åßúÖ·nxÞóž÷I�»DÔø¯[i­µ­µ¶õß;cŒE“æ7≥�r]ÅiKîÂÿèóÝ€ŠÕs1Ñ› Ú·ˆÕ»@\Â&>§§ÀÒÒRPBúqs”)ö#½Wx;oöíÛ—ïÛ·ïIODõWõY¯|�<Å«v�¯q¯æ‹ð4u�¾ù¶ï­¸6\§Ï pþ_AöMÉ^yë[ßúEç\&raaáü׿þõ�!•‰…=²<¢Ú»ð7Â5/--Íôáõ�‡ð}_æ¨^ï‰ç•Èt0�¯Õú¢n&¤>KoŠǼ`Cò†uʇVêê(§¢ˆ"ršÐ»D�{ÆU”/ŒRcÀ€ãBD‚·P+!ªˆMS¬âPÔPkõ8@½ZUUQY–�CÈ<ªwû<}Ù+Ú Ö°AÕ=¿è›cþ@©¿F©*Š‚‰ˆQÏ핯|åShƒÊ`� þø�ÿøff¯¸_¯M 8Ç jQß(ΑñSfp/„hÔ‡o‡¹­#øÙZek@”`M+…txÅã<¹l¯Wh2�»4”{ð�ãgxt¶O¢gžyæ�0³&#ß‹R¢ªçÀ fMðâÖáùÅÊÝ<Ïiaa!<ï8Co³!^qe̤ûyÛ¶Æ“»Îß7ƒùåï¥àz¬p“Ò Æ“¹¶®kËÌ™1Æ:粺®3ç\ö¡}è™ÏxÆ3^—ô‚=xà�/<ûÙÏþÀh4jªªjš¦i‰¨‘Ö9×2s›ç¹c_‡Û9çŒïXŽZ™žàÅzçÜi]Rjqq1¨[�§jÅþ7SM¬S"Z•iF4µx™EÚIå[cÂXt&©+: èaFDøíoû•Y–íL1î#GŽÜõþ÷¿ÿ€¯gcŒ«ë:¨äÉ“™°;ìËàÿHI®¯žÀf4ÄòŠVöö6”ƒ‚ ò„^§|Å7¾ñ�åxàŸ.¸à‚ÿ’â^ô¢ý/ðð=ç›ùiB¾‚ß ¹im/7Ee E+2ž0Wà+Åk™ÚŸJ5ÏAø#ƒ*�¼ø¹G ~ç圷U±¡»¸6Rk9 §ë{ìÓ“ y 8)}ä­>šzs‡cÙ.mïúÈŒkãXˆÚì;Ÿ�÷šÔÐ× Ÿ7_�Î¥k]˜OE±V 4~ òT_w—E)£æòË/Òf�8tèÐwÿò/ÿò¥ª êš’ÒdÏärŒóªFQÐ$«hE©&g€Á¡'&4ù¡:ØÑ'ÀºÑ�4µnX}†}ð�iÚ ÛЄ@—u&"nš†qXºýöÛÏòY¬…………s¨[7˜•]É âZô=Â=žåÁÏçX�dðóÔvÌ“¶Æ+ü¬'V 3›,ˬ ¬q–eÎ-äçMUøÆ9gEÄ6M“c¬Lªåιì5¯yÍc^þò—¿�n€Ã‡ïÎsžó¶²,«<Ï›º®š4Uk˜¹!¢6z�dr2a½�'šB×{¬Óy +SÁZÛ!wµ2‘ˆVÙ,":.¼™XkÚæêÀ^)ýØvèó"0VöE×ÝÕ¥’Ì5×\óÔ$'¢»îºësäˀĤ)Y‚7¼ –G@ÿ�&|·ü3B ÑôúC‰¼o­EcWç•ÍÎ9ç¾úÕ¯~ö/xA‚÷¢‹.ºR&Aá�åá †&M*Ã…µm‹y—„€Äߌÿ�}*4QL¬S³¨E�{Õ Ä:€íÎÏ§Ž yòÚéÖNz-ÔŸµ6b[�ý±dûÏ€'…‡ êÝ> Ã8ì�&“ Ý'&=L�•& ô=F )Extö•Ô/HíHõ=kÔ–Ò?g¯L0X\\$ß(Œˆ$i§9Ê  �“ˆðh4⺮ùÜsÏMFð>ðÀûɇ80ã{�†¾ÆjƒD•ñxŒC(Qä¢aýMí!l¢VµMëÃÆþ`¬Ñë'Ë2ZXX fê.tŽ&"|†½‚ŽÛvr“©‚6ãÊHÕÄÞ7¾ñ�eNgñ,ÖÂh4:»m[ö¢QJ"¤㼌¸Pêú ³ x5™…`žìUÓ4´²²Òyv)IÁ¶m¹ªª@èûƒºµÖ æ�W–KQÆÊ•øš¼lŒA9ëIÞÌ9—‘/ÓpÕUWízç;ßù®,Ëv'»P�ªª~øÚ×¾ö�û÷ï?¼cÇŽ–™3iðÔЄ�h³,k�1®içœC½KWU‚:�t!µÎ­µtøðáÓÖYÑd-ü;]óFŸyõ+%@èÄã�=Õ�!m?Ö:«o°WhºÙ4 •e‰Ò ~¨ˆ]ØÈsÏ=÷ò$'¢�|ä#Ÿ/ËÒùÒ(Éàœo±€!C/…™·t–__€ä.yû""ÎZk|c-”†q>«H~û·ûögvlŒYØìñïÝ»÷r¨v=9Ú©ÝŽ&®~î ö="BpYféÇãlsmñúƹS¿Ÿ:XçxÛÿ ãÕeŸ`›üÜ¡,˨ªª¤ãßÊX7Á«7L¦ØQ׊ƒXÝt:`ç™{èœK/N=ŒNCƒµ~Dé$½A-¼¯"—)†ºåp,•˜.‡§XG¯SÞcMpk,z챓6`þ°{÷îcN*/÷cc Hß ì“e™Ý³gÏ7g´«ñýïÿN¢‰²ÑMkÖ2OÓèÆkDD�¸ÅûJ‰þßµæ­VŒ°*§ÛA­ƒ:C¿âƒ‰ˆô)Xq�þPÀJ]âÚú yE§(µ'ñÊÊŠ4Ms8ÏóM%î²,Û}ÅWŒ8P£v¬¿ö@Ì ³´:�†g£ŠZiG”^ñéké"²<©ïhI¥|R¾BÊòKÚÿ¾%"kŒ±Æ˜Œˆ²<ÏóO|âoÛ¹sçcÓ\áιò½ï}ï?üáߟeYãœk˜õw[ê¼mUUªAò B7iª†’ PW‘µ––——OëMIÛ¢cíçØËu&~–X‹:à¶V-o|&˲U$k€PÓ{Q§î©NŸwÓZ½¼wïÞ+R ¸®ëGß÷¾÷€~2,ãü{PNj߷Ѐ,<—­¾æ Uç!ñþæ_hð:‰£I¸?þ_·ÿþ•C‡ÝyÆgt$˲$𮪊½Z–õ=×™!³€È´ÿ³r IDATé%¾GmϘ„� ¤TðÏ ^KÓà…xe»ÉäteY¢é`˜/f"ÅÇÿa�1YQÖNFö÷ÿ÷¿”ª>dŒO}êSÿç[ßúÖÉó¼!¢¦,ËFDÚv²ÐAð:fvƇڠ`»±¾}Ó£ðLG£­¬¬œöŽÊZ™D:P¥sX—p¥DßÚ�FdŒ¡ªª:J9¢ÉµæyÈêT€ýȲ¬Ã¨§Dž�F xMÓ4|饗.,--]’b܇¾«m[ÇÌÎZë<‘霯m­×Úh4’¢( ð%òÁÕír6ðµaÅg6²µV²,“,ˤ¶sN꺖¶mñ/JÆ8q?üp‚—ˆÌ¯üʯ<î×ý׿¡³³ü~”ûÞßÀž-³>ãiÿ ¶GÕ>�ºâs©ë©ëŒ}¢iÓ´º®bZƒäx³õaÃÞ˜ôˆ�{l|©7’¸ìdžú»¶î¿ãîÔC˜KÄŠÜø{MzÄ›, ©&k Ï1Šï«Hžyê9 ›"hžçy¨¥î_h:©÷\ö˜~áU÷¯yÍk.óÁ™MÇ#�P%¢Ž¥ Þ¾5Ÿ }ie#CöHß™n xׇu¼H³‹­ñF#†MñXÎâvÃ¥Á;`‹À9G÷|뻩‡1—@÷Rí8C¥K4QýÕuÈ(4ó<§<Ï‚÷$ IÒ¾”I­žI=N½Çáà¬ë c̨¡I´vªû€ù|¬](5ÁuΛH5Æðe—]–¬<ÃáÇï9pà@ÍÌl­5 ÖZë|ó©@ˆzRˆyÚlI:ëâóScÀ€ÂÁïý€Ê£+©‡1·ˆ£�ZÙ¦ß× ‰ÓÁÎm4p/ñµ"b_ÑÏ"å8cK+1>|F§ ób¾¡Ÿ'…WHás“Æ/ìçd w™™Ï>ûìd Özè¡-ŠÂˆˆ5“Æ/(U ¯‡�s†Uj)”FD�² ¨ÅÛ ½&èÂzTЬŽ-„c¯ ’>…G¼N4  ˆO2ưJ0¶Ör–e&Ë2ffÓ¶­•IiËÌ™ˆ y–%"³²²rt#îýÉ⬳ÎÚ‡@`Ó4Œ¯q˜ì³m³*‰BH'ûfú_ýuJ{Ö¶­af˾Ö‚.4)ÙЊˆƒŠÕÍšdZ¶Ã‘½æšköüÎïüÎ;­µK›E]:tè[Ï~ö³¯ªªš&�Ôž6V Ê] ê]çœCðÆmB P™|Dþ°)hÛ¤DQçüÚçÛ¥ÞÓµ=â¹öOñZ++c³Æ¬ƒHšC ÕT«*}€’™™/¼ðÂd Ö¾öµ¯}A#¿æ`cöNTTI®iz3=zt[­?_¦‚d’ADDMÓˆ¯O+mÛŠ1cÜ3ÇÌî†nøÞÞðG¾ñëfâÌ3ϼœ<©ëçcðéhZ šðs >ïÍ8KÄû³²k’7õãÒãë{/þ¢ôöt«cÝ/êåèT»xCŒ£ ñA};ã±×<ù´¸ÎÛ?¸ýŽÔC˜[hÛE4u†}­°N0mu×÷'}¸ÂýÔÊ@M¥®1Û÷Ø)A &x±o˜?ô8¢ÌÌœe�F#rÎqUU¡F Rc /..^˜jì÷ÜsÏÝKKK¦ª*㜳PçÁùNÖ®®ë–ˆ¤( ¨m[ñ×%ZÒ×5^Ï]dÑÁ�¨«$�b—™CMHVê2V ß>Ç_Û(©ñln]ס�·Å†ˆLÛ¶Ü4�iÛÖ¶mk�sÈ^òd^Û¶I ôŽ;Î�Ç¡y‹*÷lœV:ë{ãœëˆ+Ö‹ÅÅÅU6IÛ¶˜ ÂÏqÿSú¹^�n‰6–³,c"j½2W|°#”nÀøÁþkQbŒ?WB3C¼|Æ€à¡îÙnêÄåååξ ûãhÒ4�,//K–e’çy(™#"b­•;ï¼seyyùÞ¥¥¥ÿ´Ùcß¹sçeg�uVvèСš¦MiðžÏÄ 5Y–…õ…¬—Y@ójÇúÙ¼‘¢q©.Í êl‰²,©ªª¹*/±Õ±î“1@\;ƒhõ¤ÓÄ.åÛ�úÊ3 ØJøÁ?ïO=„¹EL\À¾éfY±b"¨[ :míX÷ ÷U—ÈH�¾žN/ÒDÈ€­:õúöÝ’)‡†P�žsÎ9ùh4:;Õ˜o¿ýöïÓ¤ÒI|C39Y¶4! ûzxâëúÿBb•×Z)€šð«Ãˆ(ÜC�ºpö5Y+õ=×¾¤þ¾¤'‘Y7ÅÃÍ9gœj¸&"™›ÔâµÌŒæk3}&k!˲Q]×ìï�®?Ñù\¼çèÀ×F"~n@¬>–¯ŸmÛš¶m3¢0/µ"sdC¨ŸHÓƒ¼&yí¾ð…_>ï¼óž‘èrÚ¶]y×»Þõ†o¼ñ Ojî64Uð¶“�´A¹KD(Ë€u�¯Q–!�–5¶0ÅZóY¿¯ËÂþ¥&xA¤èº—Ú'…Íy­1 {r"è)óÈj¿ÂþŠ5‚`äÕ–KKK�ÙôAÑòòòî¾ûîr4a�9�•DÓ»yž‹ÏšAvA¸×Û�ÀBÀ±G%î îHnžf]3Ë¡C‡îJAðcŠ—½ìeç½ÿýïÿ¾Lë>CÉKÖÚ�!DÔÉ:bof¶ðqÒ¤§î ¡í’þ¬\Ò½y­¿ ^`ÂpÀú±î“ñx<^uȆáBM­4Àgñþvgx/¾2YöÈ€'�üó à=úœ{8Ô°{PQèúLÁwlàþäyNEQPÛ¶TUU']‹ª#J¨‡• q”Ž{¤bãÕ5yÒ~¡‰ÉñxLDÓf^H?$š8û£Ñˆˆˆëºæº®ùùÏþ¹” ÅøøÇ?~Ïx<6Ì�DĨÜ4�ñ'QÇÌÒ4�øF]â¯I´êÜw»î�·ðñ˜™ªªZìÐ_ãû•••àb| "tÉ�Åøÿõ@ýÿ�ž©œ�Øö÷ÀÜ%_�w4e”èyYk ÿ%J}àpÌÈZØ,`ee¥—Ð÷㤅…rnÒÝ^AðõSÊ~ù—ù¿¾ä%/yă:³øé¿ÄÓæ��ß•I*q ìٳ笫¯¾ú¥‰.ECn¼ñÆÿö{¿÷{û�1m;¹é M›¨uˆ]šÔÚ %WPßĉ÷Q×’î²æ襠ËpéÀ-ή Hµ=J½§ëà8ìwÜävt­2,› ?V�¶Ûb­ û«Lp]×!eþª«®Z̲lWŠqÿû¿ÿû�Î9)Ë24#D"U/=ÏsAнæa¾Ì þšq½‚gKÓPXcb­EÐMš¦‘xàÎóÏ?ÿ¿¦÷“ŸüäsEäMIÛTð×ÄY–3ÓòòrÈÞœõsG“»8'éÞ€ÖÀ>¥žµþðwð9\GžçáýÇ“´GØX÷ÉÝãI/|:ÆÚ÷Ÿ.H=ŒN+�¡ƒwß“zs lFØhQ–A“�ú°«#¨ŽDšõ=îKÖY#úýÐÑs¥Vè<{MÐhµÊ€¹êþ1Èÿ=Ö}PŠú¹Î9~êSŸz^ÊÁ¿å-oùßþíßþí oªêpâ{òi£¬jsúë õv£5%±ïÖ§‰}¾c2´c¯×‡þ Tb5�î?¾ �ÙßàÙøR ܶ­Ñ©ù{÷î=÷dîñF!˲‘:üâZ0Ÿˆ|*²ÞO4Ù„@âFàxåÖ²³°Ñ)mÚ3ŸùÌ'ûã3Â×¾öµ÷ýüÏÿüÍÌÜŠH㼡Þ.þ¥i9ÇÌ�àŽ”q�ô%ï€~€ˆÑBGCÛ/MZ¤VË­�UDD!P†€³¶±ÀfªJ‹¢à¨,C§æ.™Â~£Á~þÜç>÷œMl„|ð.“Poª=Tü}Ôõvµšoo·µ(ä•ר=LSŸ(¥«øŸ%/”½ßýîwï¼úê«“ þâ‹/>Wù !ðç›-2Ê&éì?v2ÆÐÂÂ�Çã ¦8i(ÈQ]Ž(ýù3ÁM…QQ°~•/™zì["}ŠS ðptM­ Ð5�¶ó9÷¬ÿtÙèÅOxÂ’Sï¸ãŽ;$ÕÁ|_U• æt²“þ샚Ã�†d:¨ì¦�炱bfùÔ§>uÇK_š&�âì³Ï>Áá¶mYïÅÈ8�ÇTU·mÛi@«KyÍ PîÆ<€õ—=I‰¾ùŽLÔ×סËy X6$§ ¡V3i"D?<|Îêö `Mqîc7½ŒÌ€§Œ¡ÁÚ±+4aóâ�Μ&&S§Él`¿ÐiÉqíǵ>ŸñØúêU®¥n0Ð�Ó±vuc?¨uE¥”B5jŒ¡³Ï>;©‚wÀÖA–e…?”±G \Àòßs�‹Gªæ�æ}p ìK-î³oN�<òÈmÏzÖ³þ¯²,kç\+Óº»­1¦µÖr—¢Ò ž<ñX� -�hJxY[q�&åÖÊ$ÀÏR¼}þ)Èh*qÐ<åxc¥¡Køû¬ÿ—­µ¡ÜÐ…^˜LÁ{ÓM7ÝÉÌÁZ+Þ÷ µìED࣪3�à³Û˜_ðãQ*A&?焈@‹ŽˆµVþæoþ桺®¥ûîݻϵÖr–eì¯êñ ̨ªŠãÆÙqe£Ÿ)tvc|ÖÐ\œ[*hŸ~MßxágëkL}¶ÛêØPy) &YßÁ6õ¤Û œséÅ©‡0`À ch°vl`³�RC+2�UË ŸÝLeÄVƒ>4Åû…>TÅ™ Ìœô¾B©­�*¢tD_+»ñ{xÀ|µãÚ¶ > l¼¯T<)ï:9 XkiïÞ½I¼¶¬µ£<ÏÙ«+ID¸( 2ư®u«íÒÆ›¦ÙPÛ5ðZ™ñ×:keÀÆ`eeåß^þò—¿åÞ{ïË´¾nË“Ò -3·Y–9fn›¦qMÓ8òÊAßÌIÚ¶¿× 6hâ«ÚZˆkYÂïÓA?déÏÃ/L �QÄÌ4�(Ïóà7•e¹J…¼ò,³ìöY­@‘P«jJc EÁØ‹÷íÛ—¤´Žs®úØÇ>öùµSDÄÛP”hMŬµ¢ƒÇu]SUU)†?sè,4Aõ™wÁ&…"±ÖJQÂÌ✓ååå{÷ìÙ³g³Ç½k×®s¼¿×Qð:ç¸,K” !¢ÕY^˜«³ %ÑP ë7Îâ‰×�&šSÛ–ˆº3Ødd"¥"Û]í>k¬›àÕZ�ëDq>�"ýç^:(xl ˆºgPð® ¡©Ã »Û×áæA!±• IÏ8Ê‹ŸkNã<9z^DµåÂØõžHÔm*2 =°žõ3‚J2K¨x•-u{wîÜ9(xœ¬µ#mz|è ìí«÷¾‘¶Oÿíµˆ³V*�Îhšæè[ßúÖßúô§?ýMjê¶^¥‹z»¨±ëh’âìÜÄ9�LÖÚPûêB`ØgNØ·ãuID«öýùTˆ›Âiô­m|–(ÍØãlÔ=Ö= ¤†�¦õQwíÚ•DÁÛ4Í‘¶mÑŒ5í‰hBèz’/Ôæ%ê¦ÏÇþávæRðÐóÒ—²ªfìqD$u]ÙüQ-..ž#“ºº %ƒ‚å&”¿‡šÓάá3l�VîöÙ$¼ÿnJľ ® oÜÓ8bžÎu[ëž�¨KB4MãÒ ØÐi^G¶;‚‡ÜK+‡�¦Æ£Û9^«Jaç�µ@4ݤbµÇ€ÕÐ)[ ø!›=ö¢(‚걪*²ÖÒÂÂ5MCãñ˜�sŒÌ¢É³©ª*|½cÇŽTïQ]z¼³*� ×¡‰lWè5 æ”è“e™EA""u]‹ˆHY–’ç¹,,,H]×I£ çÔuÍÌÌyž3Î MÓ°*9Ñi­1«õÓSƒ:� UUuÊŒF#ªªj•š7 Æ…mÒœ!|køÙÚ|ŠõcCà Ø4úH«�ÂíièØ0í{Ì…©‡1`À áÎ[¾™zs�¾(¤6¦¸6Sj§ÞÑçðjå ö]?.Žú¦D¬ðYë™ë¹3(»çZ™¥…hõPGe®TÛH#]H} ¶`Ïœs„ºDÝ ¾Ç¯ 9 ˆß�‚.3{«Ã1Ñ‹Ÿvlýøüç?ÿþW¿úÕ_Q ]'"NDœ1¦ó ì:çBz83‡Ò DšªYkéÈ‘#é7É-„µ|ŠxþkE¬¦„Î’Õ„®&Nˆ¦Y*š4‚ºt3ë^ê@‘VòjUqÓ4Œ *M쑬.,,$#x‰H¼‚*J=¿j.ÀV‚$Ü®1Æ0æVÛ¶1Ѹ^-äðÜ‘ÐDÁ›„à-Šâ¬¥¥%søðáàÓ«=Ž�1Œç‡ç‰=|VâE½VõÚÆßí³;óHÀØú2ôgš¦éð…D4`Ö‰u¼Z™¶‘¡eåPaá÷æ`þÍg^på£"õ0 8!Üñ_O=„¹‡&èú‚YÚ¶!â:ì¼N’v`tzT&DSgA«NRg„`¼D]‡/>j’Ÿ”ÝóMÞê¹ÕFY–,"”eët=ÿÌÙZ;¼Nú`èœ Õ´"Véè=g#‡nôÓÀÏ0Þ>h2zÀÉáÛßþöÿ¼öÚko¤©×Ñ$eHŒ1R…Xk�sÎyW@òú² dŒß(MÌ<�»§MÎé5õ4± ?%u÷÷º®i<w²Pà#�XÌóœŒ1TUUÇš?rdó²ãaÏð·ëºæ²,¹iÖ¶®Ç—â,Ë8˲›6X…º®�‚¼Ô½ȧú±/Í€ÏĪúíŽ8£Q=?!"jÛVªª¯ê Íép~�ÇIJ4‘¹ì²Ë¾þõ¯—UU1”ï2)ÛüÌ”¨UU…r³òçcш>sèµ�,yìáÈøIxBàgæ¾F­€>W£¦ñòòr‚Qolˆ‚7V[M#‰Ú1ÔŠƒyQ_Í û.Ô»¶êqIÿúµN=Œ9G·³2Ñt“ÕŽ>H lR³:Œo'èh4þÕD®†&=úœÿ͆&ý±·­åÀhç^“Øæ XÓðQð¬|àN?ûzkì¢À„1f”úl=èL7¢ÕÍÌ6£‡…Vé1Zµ¨ÿpj¸ÿþû¿ùÌg>ó2I€&ä®C]]¨¥ÕÏÉZ+ždMÕ»u]oßÖ&"®‘­ƒÍ:p; ^¤CÇOÚvÄ„PJ? >P\öLí¿!pJ¤”ÁèXk“ìµMÓ Õȸ¢…Î9ÑêNòä&Èöñx¼m×'’�¦ßv×îIÓ4¢?ëÇãd¬ÞE]´ðõ¯ý²·"qI¨Ý·WÎJlÛ½Nò<ãÀzB0j€Ò wu©‹ÚçImK·ÖMðêî~q]®¾‡„ç¼L¾Ya×Y{SaÀ€Â÷¾úÏÔTƒ’ðX`êÏPÐä^}QÜa³ZZ“£ˆH£v“ˆtê¼Ïšð8À�)ŠIÆÆx<Ýí5Á¯S SGÕ¬ ­¾Çüjš†VVV4‰KÎ9VŸÏ�àp²€âÆ+ëD§Ikò#lmä�RëºîØb¼t ¥V:Îòp»]qøðáûŸÿüç¿óÑGmhZ£RÚ¶ ÊÜ,Ë„ˆ¤iišFTíeYXX <Ï1B4y†¨k:d‡œô¾¬íšH‰T›ÁO™‡€-|�¢(B™!þH½†‘y¶™w¢T+#E„#_‰µ_è×A’4ÙªªŽ@�+jÂx…´@ÁŠëRB7©ëZ¶»­Œ.XGyžSžçÒ4 •e) Çý< ·ree%•‚—Î=÷ÜQ´¯¡DC`sáª~S‘ÚŠ,Ë:��º®©®kʲŒ‚p¤ª*ZYY {ø<œ�ò<‡:¿“Õäúþ8u¬›à�ÓUâÚ3ú�¤û¼Ô™wïL=„NwüãPžád Ó·õ&¥¹}J¬ýÐÁ¾xÑ{põž“qݨµ ÷À¾mæºI €¹5 ½#ž£ÑÈ %œ ”} /ݸIûËºŽæFÞ´JöVÛWý·´=ÞîÙx³BQ;Î?ÿüŽ­ˆŒ°3:+H«3‰ºª-¢¡\ÆzûxO—VÒ¾ž>ã¦hTC«ëµºøX%^ôšßLhr·mÛN#S5ÆŽƒ'"¬|®$ÁÔªªŽê`/J=LïEÛQ�ª¾�Ÿ‹´ÀÁß‹N` -Ü›£G�&#x÷íÛ7²Ö2ø=ç Ž‚­Lþy{»Ë�=÷ìˆÏ<º ìѼ̱˜ÿ‹ýý¹‹u¼¨“¨º †Mµ‰`ĉ¨³NÃö$ywïJ=„Ž ¡ý_újêaÌ=°õch4‘1&t'Ö?ؽ¾:Iº@Y ­j…“‚¨?”(ú�«£Ú©¡•űz!þ9Ô5ø~À|aqq±Wý "%¹_û¬?sÉ%—ä´]�š3beYv$ò)¿ZÝ ÛG´ñŠ;_r¤CöàЪmšV¸ã`©KÔ 81ŒF£ÝþçþÛW^yåxà�Ê¿�LÆè;¸3ˆ-ÔP­ëšÊ²ôÉES¡,ËA½»ÄÄ'æ¾öób‚Ädjb]•èô½!¢ Ü0nÝÿ`³[‚¿íœ 5D#[T”~æÝ»w›ToY–GÙ78ôöO¼? 8h{e2α|;Á)ÿu p¡t×ë'Ë2Z\\眬¬¬ÈÑ£G“4Y#":ãŒ3F£Q¨{�½ÀœÄó…}€oØ4͆Û_ u�õ¾ß4 -//Sžç4�Öú÷;˜zs�cm�±â 6±Xa3  �~Œï�XÅÔ§ÜMMðÆå"ú”Ý}lÝ(nÀüBÏ7ÌÆ3…jCDè1�yÌ Þp²ßm<¤ÚûCŽøŸƒôè4ÑšÁ@:ÿÚÞêƒÙZjœ'†³Î:ëò›o¾ùµOzÒ“Þ¥‚E,"ì¿ç¶mYí�hèÈmÛ²Ÿ3ø40³ ï 89èL"½¿Ç‚0è¯ IDATµbõí�'O”õþ¥Õöš@ÑJÔÍôGô¼Žï+^…©„’™.¼ðÂdÁÔ²,ɓƈÁOÕ„¹¾ß§›²^ߢnß íËk•9æé¡C‡’¼{öìE�±²ÞÛôšÇxãÉ,öBìµqy·8ÛGßÓYŽçd Ç Â\÷"‰q¢‘Ž�u¼JɲŠìÕ‡ ý O‡N’K{‚wÀüãŽÊ3œ(à¬ô(­:€S�ç9YkC·âkC;%1q«»@MÓ•êºNî4ã eŒ 5ïzRº:û"öKk-�F£¡K육,ËPSW«±ž™™Û¶ é{P’·mËç�wÞ@ð8axr`ÇÌ‚ù{QE§þ^ìW¯ø?í»ã…š¾IPÈÎÛlbh;áŠ+®¸î“Ÿüäwž÷¼ç}¼m[C>XTUƒÐõd-;çï‹o<å?�fE ‰Åï¥É{’€Êu¨ÅüGMv¨ËœsTUÕ±þÛM�VÃ� Ò¾ˆNãβŒŠ¢> ö¸”þˆöã’z;çè‚ .HVë~eeå(Æ„ld47lšFb"“hJÒžávDL2z{&ás*;%Ü3¡‡~8Y‰†]»v-dYÆ£Ñ{-G�†ÀaéÌu¨TgñluMü¾¬PÔ×å{`›Rsm<Å�$Ü3=G`—�Y0d¢¬r2†“0~±¡>°¸k xÌ?öÿÃ×RaK6M—¢ÑŠÌøëÇGªSuðPºú� ˜xÅãÑ 8.Z©2`¾�eG�]‚¡S“M�WQƒì`ÀÉB�îkŒ¨tµZ·iiÛVŽekÖ H;ÙTÏÁ–­×^{í¯¿ãïx’1†Ídƒ3"bœsƹx��s:ÀÄþwB“Gàt ’fVtÍP¢c7Ù�7â¾Ññl„¾¦ª98Õ`föÏAŽÎψ&Ͱ6q¨9rä¨&¦bŸ�™Å9'äy.š¸>�JsÅ„ýZ=˜ô}9xð`2ïÂÂÂ(Vã;ç8Þã³x°Yì…ñÚŒÿÆ<Ÿ'ðì5ùÛ§>µñ¼^ÏV†4Y;™‡/ô튥=C Þó�jyLwßú/©‡±e—ÐD¤NEò�b;u‡†Íjmà~êúVãêŸÅi_ó ƒ’—ˆVª@ìêÔf�)eY&ï€~@9çÏ �<Ïy4ul@_]±N^}é²,žÔrç\è0{RUժ̑Yí+Z¹®ëtê^º$Ѱ¿­Ƙì7~ã7þû-·ÜòªO|⊈%"'"­úÚЄèE[wãþ-±·UBÓ@”Ä$Ê€ãcqq±sNÕ¾†öEtù¨agU:åDµœNÛÖÊP°'PÑQâ±( Êóõ¤Ã½Í󜊢 ¶mCümÿâ3Î8#Á{èСeíwŠˆÄÄH­ÑhDyž‡tz(«·;ú˨!îý&�z\gîYkåÞ{ïM¦àÍó|Á— Y—P/žlÝ,1‰½ÑX\\$k-•eIãñxÕß@_ÜÏX9žrÖÊbd$éõ‹BµÒ5�œ6ä4¢ž®£C«²ôƹ±8”h0ç¸ë«·Q[ÆóDз=ö©6⨮&%ô#VšèûßC½ÏÌË=íSñ`àÀµÖ~8Àç Zµ¥I4�r©Åó "°µaŒqJ¹+ž˜ )«Ì,Qò™)vÖÚÓ�\³R*�Î�Fû>øÁþÞyç�WXk 3"²äÕ¼Dd˜ÙdYf³,3>»€ýÏ@6°ÊAS¶a“9Ièó)άx?V½" ?/þHì?i¿IMD�F¯›,/Š‚AÖê÷Õ˜5ïñÒÙ[ÖÚd7¼ªª¦OÁ¹F-VÔL Ÿ™QÂ,Ÿ�ô=‰}c�ã:+åðáÃɦÌ̱Ÿge"دŸYItÆXßyâX©÷i<ÿØwÑs þüàSo 6¤/Œ/¾Ç∡£7¡Þ×6}†C‰†óŽïÜüÿ¥–�/„·j³‚cG´º1Q—ØÝέõ@+7 ÜÕŽ<Ñ´Ö)^ñ!+ô 5xÑ%x4…ˆµVÎh•rQtøðádãÐæ’V`½ëܱ#?8¥N<©µ Å®‘à0‰ZÚî13�Ç㙘ç:¨¡UÃ}©¡ƒÂfãpæ™g^õ¹Ï}î×®¾úê?ªªÊ‰ˆGDŽ&sCŠ¢cŒ)ËRü¾"žì ©í~�_Î?ŒÓ `yy9ÌuHFƒ ……jÛ–Æã1chaa�D„ʲLø@=Xô~˜'=!´ï䜣••"ê–SÜ,`?…=ÃýÖ58‰(Œ[+`7{¬}Pegÿ�ŸY–TUÕ*ÿo;><êÅÇAHŠñ¯UÆ ûlü~lwRA+¡õüÐ÷ÿâç…˜Þ h2»Ï/Šý¬Xý:/~1æ›.³¦Ï}úyÂVÌu]‡R%}™‚DÔ»^æñ=ƒr7^316;£`;bCf£Þâ…ØíkƶÑ ÝÿÌ1öék4>’¬Žý–…ÞPuÄ^oZpæðý°Qp¤ˆºÝܵ#ˆ½Cw¶žGp4‘1†ªª¢ªªÂ¼@D�¨›b¥3^õÛ|ÏÙFZÅ«U±ór»û56Ò4�cfg­"rmÛ:_ŸPˆ(Ô*¬ªJ ÄD÷îYÌ7¼Ðó^ÛZ4GÒ*›y°ÅÛÏyÎsÞò¶·½í®·¿ýíßiÛÖ9çœ'ù�¯ÑL^™KD“È]Ðg3iÚÇžŒ¿¯JÞÈ4Óû72r°ÏCÉ›º[= k;ç‚?ªI_¢é5¦Ú·àçi¯�ÐÕ¤)2¥üµ%sª2ù…ÔCØRÀ£PëÆN(þ…­;]¢ö§ ehÒ—ê+t¹yqô¸Aêƒ,Ôsä jx ˜Ôu-4mÔiø5}ýˆ¨W!5`ÀñÀ“º»­¯ÃëhBøŠs.¨xãÚŽÖZ±ÖÊ,R~µ8C§ã=¬ÔölØß6ƘÑÞð†?øò—¿ü¿þóŸØ¸""šü7t˜öék©‡±¥à[Vw"‘ºÃ¸vô™9¨ÿP{kÀÚ�F½e.bb�¨»¿Ì ™V–eØËŠ¢©T€~þú€2(»çPMzE «�‚šbZ 埩<òÈ#É�¶&òÄJšÔûR·úH}Mz?Ôê óxF0Ú¿D«váóøy(DD÷Ýwß@ð8ax2·eæV|C-q8`B�I4=ÄÍR)¤ÆÕñÑU׎’·OÜ1`ã°oß¾ÿÜç>÷ê,Ë2ÔãefK“¼–ˆ¬ˆX±Æ“e™1ÆñåÚ¶Å {�&Uôå“4�’ :CUgézœ©×ÖmŸŸªÇ¦ý§TýÔß êVŸá$¾Ä‚[•z۶✣ûï¿?™Šjqqq‡núbOÝGß—yíþDÛê9†@C_ÍÕXŸøŒ3ÎH¦à=räHI´ªiöªEŸWŽ¥òÝ(è¿Ñ÷šgà~ƶrÞǽ•1Ó:'XàºéQ—Þ®ܦ¼æ·~ò󩇰%û…îŸPFpâ`ëâFLÛÕÖ­ Gû0k¥#iYÊÔH8«º Güœ×R¨ ˜OäyÞùº(Š ,ñ:Á!“ˆD×Ù¾ãŽ;ÆÉ>`ËÁ+ZçÈÝ ØÍ²ÌcP¢Ats¡YŒâÔNìc¨EH4­…N´ºff*:tè¾¶m+O˜c@¢ìí1)¾!¾Þ½{÷cŒ1Éê@j<ñ‰O|Õ‡?üáý¯xÅ+>×4�ŒÇcñê[ñ~†äy.Ì,ðK¼o21R“‡ÄPœ¡Vä€ÕèS�Ť¸îô®‰ ÔЄm\Ú?�›®Í“ u«ö¥‘§ÅEQÐC=T“*ï°™XZZÚ‰~wQlŒ¡²,9®+kŒé4YÛîªDÝ€Î+ݹiffÖs­'‹�E„öìÙ“Œà=zôhIüv)ŠB´ C+û1~¬¥Ye³hnßþ�q`œ}Dp €ÐEY=m›`‡ŽUÒu»¯“YcÝŒv8ãÈ ¢8*­â´¨?CDT ÞsˆGî}€|ó;©‡±%7ÌŠÓŽˆhUàj3ÔV[qýR¤ÅÙÇjÀ‘ zÌÇúŒ&Môõ¢¤Ã€­í|êzm‡v"Ò0srè«_ýêß>øàƒúš®bŒqÖZÔâù¥Õ¡˜‹�@œ*‹÷ô÷ú³ú߸¼Ê±þŸ>þZÿŒµÆÓ÷{ñ8beýZÿ_qÓcƒâ{§U·A…럅dY欵ÂÌîèÑ£Û¶uÌŒ¼x‰ú¿Ã×ú 9KBFÛ¶í”͉ ­y †^ÿú׿ó†n8`­m³,k™¹­ëºef·´´äˆÈ­¬¬HÛ¶…¦_¿Ì“oÚ¶e1Ìlo¼ñÆŸ~Á ^𦄗ÔÁÏüÌÏüîë^÷ºïÿÑýÑ]äk3“"x‘N¬Èlöe°˜&óˆýÞ*KKK¼¼¼œž•œ3Ĥh¬d×éÏó¦@ÓäNŸ/ª}*n´_›’è�í¼¾ïÞ~æ{Û¶2��s®4Æ,löXG£ÑÿÜÙ«åW}Fû}[Ii¹QЂ>¢UudÙ?_öÏUßGÞ¹sg2‚÷?þã?: ^|­Ö¼Äg?ýÙ¦i6üÇc‰Å’À<Î1¬mg´ÿÜçïi¢zÀ©c݇Ý…óx‘LDçt´!AðmSÐï€9Ä7oúbê!lYäyNÌ:©Æ|_zN¼X�¶mC —.i¡S»êº¦ñxœü¿Ÿ Ú¹[ËÉG�™, Lò<§¥¥¥�à�3he›>0£Æ6ì€sNüÜf¦Ñh$¾Þei­Ýt‚·mÛêYÏzÖŸUUÕˆHcŒi™¹u“nã-3‡:¯4Q£v§ŽR¸ž¸I‡®A®•VD]r ,Ë ØÈ²,4Q„êµØÊ²ìíî®×È]J*bfZXX6Cw¸ÖãQvüOdZàZ Ô�Ç�üÀÚÅáªïïð´y•øûu·3ÆH–eBD®®k'"ÎZÛò¤Æ.Ê2´Æ“®,Kñ�¼µú2(5gyˆ‹®ø;Píâ^h[­îÆ�çDa­uÌÜ8çÚ¦iZ"j�s-3·+++ŽˆBs2眨yÅyž³ˆ˜••Ó¶­1Æ´?÷s?÷©Ûn»í²'>ñ‰/JvQ ÖÚ¥7¿ùÍð™Ï|æ•_ùÊWþƒÉK4™#>«@D$Niq4=h!XÀmÛÊP‹w5`¿`7t Q”ì�Ę'"¾©VðbÍÂM®s4ušÁzê¦�5¶"BUUuêMö ôj(ËRÚ¶¥••JEðæy¾£mÛ`ðœs\–%33÷eA¨…=Osf£¡ç îMâ÷SÖ“¢(‚2÷dii)ÁûðÃ�iç=žˆ1~28á'dYFmÛʬ²"Š¢è”ŽÑÁWm§ˆæ'«еv1¶µÎĸÝØxÀ©cC¼D«Õ±¨Ó'ï­wó‰z(Ñ0`Î "ô�O}!õ0¶,´Ú+vêcr"&þ†�jmÄ÷²�(Ð u)�™“ùÛzˆLÒ u9€ó�¾€*¨ ¨¡Uþ÷ÇÖÚM? Xk‹³Ï>ÛÜwß} µÆüÛŠH¨óJJ%Jª‰WÔu]âû ¿‡m‹×`ßZÖ¤ ~/þ¿ß÷7ôÚ_KY£ãЯ&(cŸõXA�M ¯7k( €ùà‰_±ÖŠLêê:çœkšÆ1³ó„{ yÕsq ìhZ›R7XV vˆŸƒ¾>¶úJâhqG*@µ+"�h4äïm]×-MÈv :³o¢ÈÌlˆÈúÝOþäOþßû÷ïìYg�õ”d¦°´´tÉ�7Þø»—\rÉ›|p¢£ämÛ¶£Ð÷ÏO<¡bpý˜;2)K!£ÑˆË²œF 1ú‚šxˆìdïgS>† ˆ¥eDì&ˆêTk8VöaÜŠ[¶UÿžçÊx?Þ äy¼þ¥}|‰)"Œë±Ö23£äEÁUUmËu§÷S-ÚÐs,Ë2�] ÿ¥ÅÅÅ�›<䀃–~ìP‹QpcïÌÛ,ËdÖ„¤&=×òU°^ˆú3§R~ƒ^ÛÇSJû¹Ý°!¯>´êè?EÚÙÆ$Åg¶ëÃ|ô¡‡SaÀ€îûÎ]ôÐ÷ïK=Œ-‹²,ƒ ÂZ»ª;1Q7]9Ïs²ÖRÓ4C½»ã VˆL»Xëh?uâUeúÞ§€vZÖú¹®�ÿ,µó5àØÐ> ÑdžŽÇãàü“'XÚ¶¥²,1’5ZûÑýÑ�÷Þ{ïaf$¯1¦‘¶içœkEÄ¡\O”¤D¢Gˆ((¤Ž=ïûÈ}°ƒb}-²A­à‰IWý ðûUU…:Ü}‡«øó1é‹¿›EŽV`á}c �F£ $3Æ„ñBÑçU®�0÷ÿ?ºq;O¾�ÀÕd®sι²,3;uŠ ¯tÔøsÎÑÊÊʉOŒ€N;×÷/¾§©ƒj}ȲÌy‚·%¢ó/fó½m[=¿™&iÖÆ9güç-¹GyĽò•¯ü?>úÑ�~p4��âºbœþùÏþò—¿üʧ?ýé’)ˆ¼óÍ#^±l<©ç²,3þú¡¦c 2hx©Å[¾fèªÔðçtÐHû& SŸi±†{‚P�à3c/K¶žu¹‹8ÕÜÛÒ°‡¨}W²,£……‘$Jª<ÏwÐT�Û$tÎ…Ò Ø?ò<§ñx¼©*éˆ!DÔQobmÛ–«ª"_‡ÈÛã………d Þûï¿ÌSµ©ø@ªÄç=}ÆCöά þ¨&JûÎ@:[^÷‰ÙlˆL2¢´Ý9–zר3œ:6$ôgx-‡P;Œ±#>g~â†áá{H=„:¸õƒzw=ÐÊ­:€š”h( *ÐY}‡ý4Ñ0N@ìàë½ó%vpଠ˜/h"R4ƒ‚R!Ú{ ¤QÛ¶ÉNoW\qÅ.f¾—™¹ËÌ�LÊ€ƒ‚„c§Æ+G5eû Õ!Ç"pÀÐ6ÿÂnâ>÷­c½ÎA¼âàˆ£.£ ýPMâu»ÆëÏë¿> à‰K6èëñ%tó±Ný\¾¸çžÜ ÿ²/�Ѷ­óó,¨«ñÂugY&Óòf›‡˜˜�Ÿyjl­ d®µVÏùÆãüz ˜äº®QÿÑ‘ÕäûM7Ýtð½ï}ïo¿ñ�o|¿1f.Ò-žö´§½æÏþìÏö¿ò•¯ü'š*xÃœé ¤ùùÇ~¯Reˆh ypu�HM6ê}<X¥†¶°s}ªc" þ‡¶‡›™m߯Øv#z�²7ª²c¤iš£›6X¼Ä“ a"b?X+?±w`üñÚÜnðs)Ôï)QÁ°E Âq/�s4�R¼îî»ï“˜Áç šúäc(Qµ™AOí�ÄÁ¬]tš‡@¬éMÏÌ}z̺$Ø€Sú ^l"¾ɪhx`¨=ˆÈÕtQlχ÷È}Á;`~P]¦¯⳩‡±¥òj\8œ£Ñ(Ô‘B×_¨vuÀ~ŒF£ŽzO“=¨y×èZ+r½ÙÀßǨՄp¶ Ü€r {aÓ4Û^ɱ�gVE¨ý §ôXÊ(O�Šsnc¥•'�K.¹d§¯Gê@z5MÓ¶m‹ÔõÖøf^¾Æ«Ó òµ^54™«q]“œˆ:Œx=M•<’åy|CEކÏè¿©ïyÜœC+nñ¾&`ôïj¿TÅDÔ©®•Ûøÿ˲\¥ÞSµ�;dÿô2„êº$œ¿ÎŽ'%3Cq‰Ÿ‰úˆ|Ê¢Y4ÇÒ�Éx¿‚âJ+‚´¯¯ÿMÔ2nŠ¢h™¹­ªª!¢&Ïó–™�¯k rW¼rœÛ¶e¯Þ5pOsdF-{í'ûý˜E„‹¢HR¢¡ªª>ú裨}朿¦U¦Q“»³\ÿð[b_ÐÙ�ºùï<˜rMØ"–ˆÂ9ÐÁ}½Cöë©cݯV]ᥡ£ pš»ÎøzG0ŸxäÞ�à0?øêÇÿŽÊ£Éx‡m�µlž&°1X ½oè��hªòÓÄ~¾VÖÍÆ£}û`@Z˜/h0:ì®"ñ@êªg.ãñøá]»vm∧8ÿüówó´¶k+"-@“Ôõ@ðzË�RiB ϘÕ'Þïóÿâ|Ò*øýXÅ¥ÿ?=&ø�qÉ¯Øæj¢7Ÿ&pãñjRGöð·AœDc1!x¿iQóD«rÅã²,CI†�¿@~8çfBîF×ÐAü\5¹�÷p¸L?‡QǸ%¢FDOú¶ÌÜÒtΓ/c@DDMÓ°ˆžÔÞ5Šà Ïìºë®ûøwÜqÅcûاºF�<Ï÷üþïÿþ»¾ô¥/½ê;ßùÎ7i'úùÈ�DišFŒ1ÆØÏwñÿ²/ñ@4!YN[gEÛ­"ë+-¨mʼ(æÖR¾Å~�xÝQ7(§ ?µwè¹-D$MÓÈÑ£Gž}öæWOñ/ë—1fÂôR×–âÚ°Ïé=e;7QgŸgÿÂÜd/XC&uÁÙ+¤7ãñø!EävêÞã_ÌAµ_‡g:Kâ¾Ïá¯#¢Õ�ðTè;÷•f‰mÒ‰ž£¬� !xí´ëÉG´ñÞ®�ï‘û˜ …Ù€Î9ú§ÿ穇±å�õŒƒ½¯EeYu©Šâ¯JAI½ÑÎ+´zŠÝ8uZ«ìÐí¾,ËNÖH*`¬Q3†ðÌQ+4>\Í“êgÀP;éu=·N‰œé<ÉBG�}0Å¡“ˆèÌ3ÏÜã<Ú¶uDÔB¹K“Z¤m–e-¹º®3»<ÏÅ7 ?'¸n(8Ù+Yu-:ÔÔ˲¬C|èµ§3;çB·úµJ/àóPÉâð„®Ö£Ñˆˆ(؈ŽekûÒô‘”úðÔ§ˆñ.µmÒ95Ù�ƒ"ùƒ!HCÿ=iÂ/Ñ´ù~D܉N…“F|íñ¡ f¢®ÚF§§TºÎ¹VÕ2n™¹­ëe\–eÎ+¥µRÝÐä¾ÿB°CŒ1‚:‹×]wÝ}å+_¹lïÞ½sÑtm×®]—ò“Ÿü�+¯¼ò¿ùL�NÁ×Ò”˜ñJrçIc&u¸ñìâ&‹ì6¸‰ßVìGÓ4”çyȾ©ª*øDS"ö™F)�ñ±W¾Á^fYj‡—eI>[£c+ã,ŠÍü9ìu]µ/}#ðñ|ʼ ~tÛ¶rèСƒ›:àé¸wEÁØ#™™}Æ 7MÃ~d"âX©H”žt›%°>˜§Y`~¥S_­3š*8Â÷xÏ+èäСCÉŒíž={öˆoÚÕ¶-êº:ò䮵¶Í²¬-Š¢Íó¼É²¬Í²¬Éó¼Å×^ñˆFU ù¦UÖÚÆZÛc"jš¦iêºn|ù‡Æ9>‹ß‘ðMU•�s®©ëº©ëº‘†™£jëïñw³,küøcLãÇ�z«a }ã ¢ÎÿEDMÛ¶MÛ¶½ãÓãî»øODZfnõçÅ7ü2Æ©ÿ×Ñ´²S¤œ®£âPYÎ:H{…=NÛ2dßÅ%Ø4ùžþ:žª×Ã×ιÖ9×bN‘Žþ9·xÖ4�'µ1¦öϱÆÜ;xðàʯýÚ¯½¹ªª&¼Ô.ºè¢ënºé¦—Šˆëœë¼üûF|9眑I­aö$n¨ƒé¦µ0“?ÏÔPÊÑÞ,…8�+6Sa­ò ÚG!Z=F­2ÝlÀ‡™âJXÖZ€õî~øá${­1fô¾ð¬,˘§7œÕ¼a\ƒˆ0È7]©I·Yûö«h�@ñˆ]ÿ@î2ñÒÒÒ)Æ~äÈ‘ƒ*‹F_C'XKÔ_wV‚>-rÁšˆíöçž{>Ð6&.Û�Ÿë²ÚßpjX·‚QD04¯' ^ @æiòÍ�ÜûíØ»;õ0œæø‡¿üSa[`qq1¤êjµC¬ƒ£ŠMWfÀj,..RY–aƒ×5ðð½Ö÷Ê™¢(R?ìuZQ("4�ÈZK+++T×up|¡~Ä¡fh´6_Їx]Lw%VÎ>Ö½ ÙÖC=”Œà]ZZÚõ!ùFQ¤j½fY抢pžÌ �½š¦qÞù†bªS‹]Ìõá>|<(kõº…¢L+Lˆº5´ñÒ‡ØQýwâC”þ< ?BëK“ιÐA„&Fq½M}´‚ÙhA¬@Óf@Z­âÿ!_ß8œ'sIÆã±øë�j”H•)Š"ø×+++3ÛHp ªÑ51^ý|a¯™§Ý½BˆH²,sÖZGDmÛ¶Î9ç¼z·_’Ÿ•éÄÁ`¬µÆN¤ì�’˜ƒý×ýàÓŸþô7¿îu¯û3ÏEÓµÿñý{Þóžï¾öµ¯ý©bOŠI]×”E“»^I'øÞ7°Jý<“AÛdrÄïaîM3>Ô¾� ‹ÎŒ€ýÀœ†ÝÊó¼Ók{3Ÿ;lLQÁÞûà–¨’Á&"»Ä¿'÷Ýw_/Ñ‹^ô¢ÇÝtÓMÔuÍmÛ²/õÂÎ96ÆpQl­e¯˜F#G!ê'â· ô¾éç"l cÿTö'¼¢÷…/|áYEQœ™bì�>úèARAVž–T"¢iÖ�¶jÎkV€­Éó<(Þµ?5ÏAÍâþiŸ*V<ÔýÅß×ÿ?Æ…Ÿ±O§·Ö†ß‰É�ÏãÿA*>¾Ž¿·Öº<Ï]žçaìhJW×µ«ªªó7â1ë{ ø¿ÝQçâ÷hÒÔ®E#5(võ³¨ªJªªrΗø°ÖŠ/w! �} hÓŒ†VèöíkZe£ÉàTð +2Ä×5ŽŸ_\®$¨|õ‹#º/a]C©þ›¿ù›ß¼ùæ›ÿ0ÙÅF`fûªW½ê÷_ö²—�ïœËÚ¶Íœs™ˆX"²Y–Ù¢(¬1Æ03Hlc&›*ËDÝËÞÎ�¤"kíö?¤ð7t�#&(ðšE¦ÞÛu�J#†�lKI6Öu-(a2cõ×б‰–�Þ¿²Cöã÷¸Ç� ¯<õ?êükŒa]þÇÏ^°íÖJ5éà ÀÌlŒacLGµ«î¿èE/º|óG=ÁøCí»2Þ½t㿼ÕÁi¤ÝpÄk—¨_-+õ�õÙÍBßA¨XЛ”Ò§ØX·‚W”4) Ø`à êƒvŠz?›�ÿõ©‡0à4Ç?~xPïn”úv+há=xµÂ«( :räHÊ+˜[,//¯Rã齡ÏaÁ^‚Hv*hÂC«�±ÇuÕ„ ³±on÷=ðdqÎ9ç0È"áz½AQõ6­:pG8i‡»O]©:ÅwOˆ¯Ñ(""·Ýv[²CçÂÂÂ^MH³OñŸ\Š“ªª¤mÛ@ÊÒDåd‚yž¬C„’˜·Z�®rÚ¿Ój UCq͵'_ûŠMÓ„Cþ~G«ú‰¨CFzî`ÜÚ7EÍL=> }˜Óÿg¬B†rYvð·ýÏEÙ7‰®[”"X ¸ãI—@9rdæ¬ì(žj)*²¥SY­‡äð TiÛ6�»""mÛêàjÐêuA4UðŠsNêº=‘Qb­e4 ºöÚk?v×]w=á’K.yaªkÖ(Šâ¬÷½ï}ï¼ùæ›_}ß}÷-‹ˆ4M#¾öªcdeeÅ6Me/Ôæì×ûõŒùÉ4QQžvµxû‚ôâ³op¶Õ{CjñRìSˆHè— ƒr6†¨ÛSg³àm½ø£h¾Eä÷Ù¢(týqñû®8çäÓŸþôÁ·¿ýí›>f"¢sÏ=÷qãñ˜�sÌÌìÈ(ÇÀeY›1�¨ª*vα¯yÎ Û >Û„Û¶eì#Þ?ZE€kb¯Ç?þñ�K1n"¢üàÉÇ }ÀU²,“e¼,,,H–eT–%ùg=sëÁØš¦iB]møWkÙ¯Íοڷ€¿£}9]:_#ëkÀ©cC¼š�×Îz¬ÜÕ¤9og|ÿÖo¥€Ó‡øÝöé/¥ƶ�NŽ3ˆº©Ã°mqÍÞ«QUUØØõ½ÔªÝµ'(lR"V´Á±‚ƒ¢I&=ðÞé ö(Š‚wïÞÍp–˲¤ñx<­†F ”µÖUpá<Ϲ( ¨FŽ‹ˆ”ì2žÓ² A!«U""ùÛ¿ýÛdi£ g(eIh ¢”&Ϋ¦¤®k©ëÚ5M#MÓˆºÖ¸FlGµÚ4 ¸9cÌ*5.”±â•“ø¼x¬VÖRWíÞ“Õ,T¼Zµ«_PãB‘«¶Däüµ»ªª‚ÒØãÚ¶u¾DŪÿS«õ=�©:\£Róv®Ã§C�È L¤ÒC•f|Ã+øÏ(á0kÄ$ºê ¯±êµ2L_Gу …®qì<�ŽÏtž—V­Lêó¶PÍLDÍOÿôO¿ëСCs“µgÏž'ñ‹_|e2©Ç›µmk�s™óõx‰Èþÿì½y¸eUu/:Æœs­µ÷9TQUˆZâ (ˆQøÞû@#FÔ€áÅ÷nԘī±�D1‘ðLŒo”(QsU4¼$b쮂h„ÄTD±#ƒ46t"6€RuÎ^Íœóý±Æoî±×ÙTwÖ®S{|ßúêtuÎ\kÍfŒßø�ß "c4Ìl˜Ù�ÈS`/&Ѷ ‡ÃÙ@ñ{¶m¸:IÕw£ êhßDûQøœ Z¾¦0ḴdÎ(R*W\qÅrÓ4½0'6lØpd¨RÊsç0îÉÁ�¡Ð‰Ìµ–à_¿~=wÎÍl¦(ÕAU ÈšÁsãÍ›7ÒÏ艮¾úêÛÅoBR!5[“‰zౄC\�8ñÎ=iíê=hö$Œ¡[Ôeîv¶ïq¯Ûi/Ñd3°.ðÂð9²:øÖ_àMW]KMU“ËgBªkn{™]òÑ È¯ñ$ÊjÀì_ZS¬0�ÔÒÚäZëln+ AJ~�1”çù¥ë ã9÷ ’â ÃØ´“§�çîXáÄèî»kÝXšHRk¨‰ˆRÐÙ•·Øk·ëÐ2sÔetÆt»Þ&p6í÷ê.鈦r¼B* �1Ò�7ÞXÖu}g–ewú¡m§-,,<èÑ�~ô•W^Y�QJ7§Ñs(o–¾�ß9m}é9‹ç¥��Ì€>-:ŽMvoŸöû5Ó£Ë°í²„µï©õñôšÔ¯›ÚÖþ¡ç ˆ ¸ÀÊ"knãç¦é³« %v5…CQ�¹ª**ËrÕ75\Ea®êgPEZ§xγb�J !DÅR�Æ0rÁÄJ@‘÷>ª “�‰ üMB`5g8ÆÈßÿþ÷—N<ñÄW½ç=ïù`žçû­þ]¯´ƒ>ø÷/¼ðÂkžüä'ÿµŒä0�¢Ì»c´MÓ ‰Õ; 4["3³ÖâµÖòî*?ž5›Æ|Ã<Á:Õg�Nø÷mz_ÔŸOÛG‰ÆldôŒˆ1ÒÝw¯nsp}¦wŸ½ì7 dSÉÔ$�´´´tãúõ뵪ƒ&¢ÅÅÅ<ðÀâæ›o®‰ˆëºf"JŒ^ÏY®äëUU•ôßךAnþ�íþØÊ0àkZ{—•T oذ¡o¡>çœs~Œ$k–e‘™£Th¥3ÁHÓÓªªRl¢×Üî0T,áot™ú]_Ö÷¾¿Œ™Src× nw_‚2·�³�~óÚɃƒŠÉÖÍ*h'vK`­YSÕtËw®ï{sÛ ­.+ºäcç÷=Œ5e÷´gé}°Ëì�0ÌmÒt6—h2 Âá?�m‚«OÓïW¿sÍpÃ÷÷ÖÌôââbrðÕóboŒ‘›¦á¦i´p�½÷\×5WUÅeYrUUÜ4 {ï'štàwá÷ñø!³*d8ÊR²:õEè€}[ïJ€$jš&ÊýhfQ\ZZºyW>¿í0s 'ÖwíCÞ9�sz°AÅ^I §ÏÁªàgT#)w�1FÅP�øÿÛú½1ŽKèLÉsN�OôïêŽGd¬šMéq 3Ln+®iÿ_±{b–e)dæ(¥·÷®ïIÃ÷€½ÿöîM&G¸hPh–Ï054£8ê9Ü}îxGò>W°ÉIéò¶ÓËûBÒèõÞ7g�uÖmï}ï{_[fïLØoýÖo½ú­o}룲,sÖZBpMÓØ£#"B°Þ{+ì^ƒý3Jã# Ÿãý;çö¾ƒK ']J<-Î�›Æ–Óë9ªj)€Að­úhX«�s¿^£HúǺ®ÓþŽD 3Ç;î¸ãÚUt;Nûâ¿ø!ÖZ6ÆpŒ‘^’¬'íëÀWÑïa­ù‚¨bÓ’>ò1|²ä·ÑJÖ3ÿʯüJ±¸¸x`cߺuë ?þñ�kR>€N,à<‡o¤½›Ìݦw7¶Ðk²1³t^cžëf´Øƒ¦ÉuÍʸׂí2€W¿ lÊ1Ɖ\kmcÛ–}ÿ²™©àšÛ^dßþähë]¿ì{kÆ"Qb—bC/8ÍØóÀÆ"¢t°Ímºé2B˜>'À致°°@Ãá�Š¢ <Ï{ J`8ïˆhE¨Ì]¢q­:I+dêà®ÀX€ºào�«ªâÑh”®²,L� �Æ/13‡¸®knš†em¦&BÆ œeÙ ù04ñ¾¼÷ЯM%ôëPŽ 4ÆþóŸ÷tvØa‡•e™€a„& \"JŒŠÁ`@Y–M4fyÌó<æyN¸?Rš¾êûéþ›¦‰� DÓ´®ë¨i`U¹ÔW;Rþ^GZ"²Y–¥ñeY­µÀ²hüMê°+cÆÏWU˲LeÃ0ý»ô%÷“ž?XÕúù�bN¯¶iFwÿ óˆˆ&²¾ƒ25æóëk˜$!�‚žŸÔ‘è0m󼆤ažsÎ[kfnBÍŸýÙŸ}û«_ýêÿêõ(3Æd'žxâ[÷w÷~yž;Û`Ž™-3'‰ï½išÆÄMl­ï=S²Äq©Ë}–e´nݺ5¸M‹O»¥.ÛT¯›¾c[ø Y–AÏ{…~9|T-‡@D½$Ëó3·,ßµdH(RCJ‰qò÷hœT"I4™N8á!²G­ºÝqÇ×ÑØ÷HIŸ¸G�¬%¢ÝOâ™Æn×;çRL¤“%1Æ FoŸ†=GÇt�Æ×f¡b­ØN?I°©4ÀÑÍ `’i&ÓÞòþàÛs€wn«kõ¨¤ÏÿóÙ}cÍY·ûZ÷ÐÅÞ6 ´œÛ}3$ »Ï¦ÏŽ¾Ï‘.�‹ùÑerï�Vë 8Lj¯1d*”ãoĘ™5ð�.è�À WlÙ!ÆH·j€·Q4ÂäMÁ… †ðsðg m ÿ·»–u¹^”À Ëèæ›o¾fÕrÇ8à€_0…U$ ÷VìnÛ¾W ¤ââh`X4i0PQ)™U×uÒO®ª*� (eÄþ9�ÕÞuê1gôž«¯cjRÓ-íC"¥(Š”B‚MƒÓ´œñûðë²Z�ðó£Ñˆ–——§ž+¬|à7@îí»»Ï¶ØÞÓþ¥÷º> c–ñhÉ‹t#˜#•0 ¥ÍKci…3 ›—™½1Æ ðëcŒþ˜cŽù×þð‡ŸXåÛÞ¦Eñ€w¿ûÝoÚ´iSÁÌÎcðcpMì�Q±êc<¿<Ï÷š­+Í€=‰hBvefXsz¯¾§*2ìs`\jíÛÕ¶­[·&V$€iyæQÝKÒDÅ…dÚå—_ÞÀ{à�L-PiàÏ�ªœi–³Š›¦a"‚|Ϊ5±ž˜¨•³!"†ÿ%ç,;ç’?¦öƒgçœã#�<òá}�ÿÖ[o½–Trg4‹Ì»z-­¦o¿£˜Ù,$º~_׿ëþ,loŽ�v…í4­l8¦—T×uj˜Ó=ôº¬€ôâfÊÅÝõvã^CÁ{23°Èæ¶wØW?üït÷Ïîè{kÊ$êIÁ—Í�,©!ˆ¦Cs›bpîñœ”vWbvÙ18KúÔ7î²Ü4¨‹1ãýƒíM4¾_k--//÷5üÝj7nd€ô"©@$Á�<¼leÝ�œÆº�š’€<"Šz}‰sÎò|“ö¬°ƒ#Et»ömÃ+Œ!¢ Ië)ÎeŒ1F ©ÿ  1s¸ä’K¾û„'ßmÙÆ�5íòòò³YîV·™ np¢ô°ªª  Ny]×´´´´âo명ûb1Æ© ‚H¬øÙ{3½ß“tž6b§~Úýáî ÙÖ}Î’é3Jûé4Ç{Ñ@94—û6nÙÛ$ë;J7ûô=³¬‰ˆ -³,#"‚®v�ÉÏã¡`y4Ë2$O¸®kzâŸøæ+®¸âà}÷ÝwÕõ@§Ù¦M›Ž¸ð _vøá‡¿{”|KW¤FVÔ¸mÈ8¿”ëÆØ{‹&oG{}Bâó^7Ví䕊‹Üj6Ñô=tšÒ‡) .È1à¬×Ò8Ī‚Ã{þñÿñºO<1Ð.j¿=¶ß~ûÚ4�¡qÂÚˆ¯‘te뺠™|C•Ø&f^•\ÚCœ$²~I*H˜Í)©d­å¢(øÀì­ÁÚUW]õ]R >$�XÀZ’ª¡kiw&9Ájï&ÇõY¦Í«îЗao�F)©¼牎•ôÿëî_sÛ>Ûé‰� ,‰nÖ°«á¥3¢DkߥjyD?úî÷ûÆÜöÛz×/éâ÷}¼ïa¬iÓ¬¥.³C_úž¼Û68Fú™8'¢t® ™HõeÈíxšá£~o°<ÏYè­%©i�q–eœeÙ˜®kŒÆ‡É²Ì ë ÝÞ­˜qÎ ¤Œ÷ÝáÁD³QX¿±-=fk­É²Œ­µÆ´¨Fêä FqTìV=§4ƒH%v&$H•ö Ó/ž~úéß !ôµ9çöyùË_~�Ÿ Ê®‹9Šæ±Á佤ꃵtÎí¾ö0½iæ¶Npâ‚??‹• Ý{Q±Gbi!y¨î§Ëè…&obìRËâmpQCDþÆo\:ñÄ_YUÕÌd×õWõ9ç�wÞqÔ’yœì•ŽÚ}Òª“Wö[]FM$ ¢i¥ÂkÍô|Ö‰Xí÷é¯ÏÒüï²ãºUg:öÆ_ ­¾ÆMR9Òiªš€]­ƒ.o!Äk®¹f´´´tcã^¿~ý!Î9#~Ž‘Ä\š¤k ?H¾Éhìȳ0iv‘u‰,Qª¥P�¥ü­‰jR{ϦM›úxã™gžy=IÌ=YOÿJ2ÎR{¾t“á»Ãº"X—h4K†=I'Á5 ‰G­åóe5m§^úÀÓe�𹋲8ÝeyíC¼D×_ryßC˜Û^b_|ÏG©Üº’Y5·�3¡ÿL|Mkª¦ŸSI-¢•Üç¶Òœs‰�cþY–Ñ ƒAJÜú,AÂxˆÆŽL7ËŽŸƒ&ž«û ¨v§c¸iZ^^Û/�¼Ìm)^žç¦( #�{˜ˆŒ±&Ïs“e™aÑ‹d)+¶ÖZçœøÛ4�­ëÚ [ÆÊ•@Þ¦iLÁ:çð;ÙÃ!S×5‚2’¦mDfèîÈbLhBÂ@˜‚Z›7Q¼í¶Ûê-[¶ôÖaõ˜cŽ9ŒAÃS ¯8ѬNÖëD=ï¹í�¦ƒH€ý£ÑÍ “ö9æÊ´ sµ {/4§u°«÷ß.ÈU–e¬ë:Zk£Ü�ÖNN Î¹àœ ÖZODÁ‹Å¶ÁZCDÍÙgŸ}Û‡>ô¡¿Ž1ÎL¤}Üqǽ|åü÷.„à¼÷¶i×4�•æk èø"I2݉hð]³‰í×aÿ‡.;ªL0¯„5Þû:Ð »n‚CÏÍ<žÓ͹3ÐÀ®fPF©¼I Å;ï¼³™†,Ëö}Á ^p3'ænW“—:z³y±_…¶�ðô¢™š\MÀ¼÷\UUj’  —$¡ä½çõë×gëׯïE¢ayyùæË.»l«øvÁ�H驤ÝN4AÔÐÑ»Í�€ Ò;¢»ÏlkïñÞ÷ZáØ5fN„Т(h0L�C‰Vâ†sÛqÛ%/¨Ö]Úº~A]Æ›â׺]~þÅó‰:·ÝnwÜz;}ãœO÷=Œ5kÝòûiû×4¦ÄÜîÝ��¾/%Žú¹÷íhö×4¶Û¶æœ˜YÌ¸ïŒ ƒtÃ��Ä.EÁY–± †Ø·Ýܵ¶nuår,’Âèu1FBÀ…îðM„h°0ÌlûÀgjBJ7Oþ]Áˆè?$?·¢˜h†¾º{|ðÁ¿6‘47Á¿)ØTɉôÎð5çk€cn{—u÷®n‰:æ Û{VüÛi ÖiZËø·MÖ4Ø5ÑÐ‰Ç ÂÈ­t��1úBBð!O­lCÃÌž™›“N:é[—^zéÛWï®ïÙ¬µƒ×¼æ5o}Üã·ÁãH¼ÆgÛ²+ÕIÓû¦ì‡©`,¿wÍ:8˜ÿ˜O (McêÎRÛ­ÃZ�¨š�AßãÄ>£î#jƒ6ªœ·I3û'?ùIogí _øÂ'r‹—Ìl”Üãù#çª÷OÜÿžl¸WUå”ôÿ‘LF²H�»ºJÀüÝßýݑι}úÿ]wÝu+=öξ�‹ä{½¬w°£±umè; ‰œiÏ ó_߇ޛçLÞ]c»à]^^¦­[·ÒòòòT W³AGÑ™•ƒqwÚO¾3ÝvíúÆÜÖ¸]øÿ}ˆüŒëüí©Æ4Öþ'¹»×!; MÙù!uÏvOÉAh}‚=¦@©TòÓ·ü…fr#C­?'¢t/]fÙZ²uëÖ,%k-çyÎyžS–eœç9‡CS…!"nšÆTUeªª2MÓXa•Y°ÌB ´µÖ:cŒc挈ÀBs!cÌðsÆü\‰©ífmBäe0“þ›¬U†/:ŒƒQ&>!@�H‚LѸŒÖÚ`­�·ÜrËõñˆˆößÿ_'f„ÁÌyž'y ff眉Œ Éc cþîM •æ6iÝýkÚ:@9kúˆ9ò<§ápHÃá�ˆh‚™�ó\**bUUQîkBvE˜úÁ{ªª UU…º®ƒ°w}Œ�ך£¯ªÊ?ùÉO>çæ›oþTO`Ò†ÃáûøÇ?þúuëÖåØ'ƒ�‡Ö9g�16Ïs“繑\·ŒZ_`!RQknÀ  AWt€I¿ìv½úô÷º Ѹi¨®’Ò~ë½%£WÃÀêcæ‰&�Þû¨d¹R"U¯Q" —_~ùU}�ýáø1’á#’Õœe‡C3 8Ïóäs Á,Äffîۇ݃¿€ûì&ëºæ ëÝ&�IÉ3 ™tôÑGÛ×=üøÇ?þŽ1&´9„6a�½¿(Š8 ¢µ6Jü‘>^-¦©–ˆÑ1(¬›0Ð_ïÛº®Ý¦ŽØ_åŠÏcK…•‰ ä5ÆÄK.¹äêU}Ê<æ˜c68çh§ÒQéh�€]š,!eÜ÷¬±¼æ¶{­[¡¢™ºØ§´¶g÷š°Ûe,êkZ\‚sÆ·]Ó§É4€18q1³·Ö6ÖÚFؽM]×Íòòr}ÜqÇ�v÷.ÇŠÒ IDATÝw·§G±Âîÿû?þK_úÒñ²ß¦Jˆ8)Ñ€=9éb’w%1­nŽ1®9�Wûº²HûÓæþ¬èðêõ:-iŽŸÑ>jßd«²,£4M…_�p\uæ&ã¶¡b´ÖcL|ík_{¥÷~Kcßwß}ù'ò'È ¤”$‰c<¯‰¦5æ“úŸ<;h:’9Ëþ0¡½Ëª¢~ µ–üàçp@?]i‰è‚ .ø«ž е›Ø»8¶u®¬†iü¬+‹º­ø³ï£ w‰Q:¥Yàhp9··Ýúæµæ.ѤóED+ØokÙ®¸àËæÁÒÜv“]ðÎ÷÷=„5o«ªš`AÀAÃÕ4 •eI1Æt`Ímû gkmbbuÙ±}šÎHkF›ž'ü€Ã¥´¬CFŒµ¹ª*^ZZ⪪Œ4Þ0Ô²7,µú»6Ïsk­uu]»²,ÁÒÍš¦É¼÷Î{Ÿ�µBÈΈ(3Ƹ¢(\QÎZ‹2dctMÓØªªlY–¦,K°†S™`PMPì*Ö‰n$5QªGH ‰ÎË 8Þô¦7]WUÕÏzyDôŠW¼â¨Á``²,3pf6EQð`0H¾C =IØ£¬²¯áÏm•­»'áÝkÆ�Ôºg_ßskZ£D-cwii‰–––È{Ÿ„ˆIºÁ¹ ¡½˜çy‡qqq1 ‡CŸe™Ï²Ìƒ�e™'¢&„ÐÈ¿þÚk¯]zùË_þWu]ßµúOcºvØaÇŸuÖYG‡Üh4r£ÑÈ6Mã¼÷¶®k[U• !L4]#ò ÀK`êᬓjˆ5aÝøTÏw¢ÉÒg0}N`^õeA4:5“WK–4‘Êšôµ®æp_–PÝΗi,}”ÎÜ¢(BQ1˲ðÓŸþ´þÙÏ~ö}Œ™ˆè�ÿø��ͲÌKׄ¸ª*³¼¼lʲ„ö, &8âæV#yݺu{Ü:Y ®ª*Å<¢AœǸŒ1\…Éó܈q–eæmo{Ûoô%ÏPUÕOO=õÔï�µ+Íü´o,ËÕYéLXMì {æ žsW Ÿˆ&’—Ýdg…ТǢýjH(éž*Î9*Š"UÞÌmÇl§wômMœm9ƒú{{“Ýýó;é†K¯è{s[ƒvÃ¥ÿI×cÞÈo5L³4û2á®tÀÞ¶ßm�uK�ð<§ ]Ê,½š…¡ƒª Ú»ÍøÖâù—ç9K Âhä¢Y»¢ÃfbŒÐƒµÜv›¶Î9§d[7Ƙá !äD„+3ÆdιÜ9—Yk3fλ7É;‘ !$ ˆ‚ÖHÒ¤µÖ¢l &šÔÓªX :ðJÙ^Œ1†c¨ëÚß~ûí_ïã}yä‘O‹­. �Ö±f‘6ê9$�Àt“Ö÷usëߺ¾ü=ý\_ÖýÛ8'ºÌËîÏHà<Ñ ]Î ]†‰(ض [ –`­Eã5o­Mr Qš®cš|à·~àøkaÿ΂ñ3žñŒSO:餃bŒ.Æè¬m›W {M- «RjkŠ23ƒåŸGéÊ�µ`Š9:1—ˆÆ L]YÔwÂvÚ<ï2æºÖMpôeºbF,é ªd?¾²,‹Î¹Ä]wÝu½�µ{ØÃŽ�Šõ.¾ ³èY ‹5UEѧmš†$i³àËn¯Iâ8I1 Ñ·€¹}9©RH’Ì,RY&Ë2›e™yìcÛ§<Ã7F£*2tÅFTR\±[Í¥À`"Õ—aw˜N4u“5ˆ-¦%+OÍ’)?;ÅHØOµvþÜvÞv ÀÛÝ”фކ>d %²§mh;cóú¹íj‹!Ò§¿¿ïaì&:S´°°@ ‰�îÊptpÐj½¶½iŸÛ^Ógˆf˜ `‚–ñh4¢ååå¤Ç‹Àªïì4ílákЀ\XXXQn¤š=ÙŒ1‰�"LkÎó<¼D‚$¶fP0VLœüÔ@�Zöm¦þ͘9cæÌ“1sn­ÍŠ¢ÈƒA–eYcÌF£Q¶¼¼ì¼÷Ž¥9.’ÆkÌl²,KºxY–ù,4Æ|ì¾Oaãë®É‰ñ‘eYÈóz�Ñ{F£Q¼âŠ+¾ÒÃ+!"¢�7þ²—½ì¡ÂZ檪LY–f4™ªª ÑÝdÑ gc «„DÒܤ5ÞÌmºue‡t@©«Uº�$ß¾^ލžðÞCG:�Ϩ2è6†ÆØ…�FDDÂÔ|lš&.//Ǫª"cŒgf4ZK—s®‡~0ø—¾ô¥ß¼ôÒKßÑÇs™fι}þöoÿö-‡~ø>Î9; Ü`0pÖZhž[çœnXiŒ1i¯ðÞ›²,Yª5ô1‘ÚSMÏín¢ÀCÃá0iEb~Mkâׇ�Ú]¯Zr’ŠZ_•F}¾>¬Yýü…‘�s‰½+ ™TNï½1ÆpÖYg}­¯±¯[·îáÇü«ëÚ†Œ1ÆEa†Ã!‹lÃ„Ô Iå�$¼“þpßUÛcëÖ­ƒTKš_¢ãϲVðj«´Œ$‡ qQf0ð!‡2ؼyóÑ}ÝÇÕW_ý fN²;Aùyï¤BHz,às7§ìn›FfΦe†º²� &ôi‹N´êsçoUU´uëÖ´/¡¿×ÜvÜvúDº§¬“Îzj†ÛjRÛgÉ®¾èëT-�úÆÜÖ�]ù¹¯Ð­×|¯ïaìÐ{OÍ4íV*ÌJéÛ¬›*ƒŸÈðêÁ9’…³bZŠè¾”CMcíɦ· Y°9b«½–t×¼÷Fؼ‰5& ®£¯› ¨›[ksaêæÔ¾¹µ6³ÖæD” ËÒ ú¼Ô»Î´Ýâ-wºÄãÖ ’ è݆VrrbbD @Q…¤ÝyÚi§]"Œ¾^ìùÏþÓš¦A#;<{nšL£Ôè¬4¡Óåì¢{½Çƒ7sÛ¶aßÒóžh20ëþL7àìÓº�®>‡q?È�Âìk‹ˆ’&`bi1s ãflA˜ú1ˆ‘€»Ü6\óÖÚÆÓ‘?úè£Ï¾å–[.Xíg²-[\\<øSŸúÔk³–’ëŒ1Î9g�s6Ë24^KŒD앺*ÃZËêÜcœÛ{ú>�=_ºþˆ6¬D½Fú2È`,HÚéõ¬+ŒpOû²¦ibÇÂ9ª?Ž4VrHk�ˆâûßÿþ/--õÖÍüyÏ{Þ±ð+hÌâ��8Ñì]|¬d¸iš=JÓZæ ‹$a�Ь]ø€$’\REd¹­0'Ÿ|ò㬵 =ÝB8ýôÓ/Ñ~3ƒNsåŠD+c•ÕˆïºC'm¦$DÒ†õÝ·é}13î©{/ÝdÔÜvÜv:õàœKº{x�ÝÀÕ9GƒÁ ±°œO+'YËV�JúÖ'.¤£þÇï{(s[æë†>ûì{{•…R‡_]ÂÝ5f¦¢((Ïs*Ë’F£ybg[†àe:ÈàÂôY‚ ¥ËPéÓàP©RU]þKR†7Ñy{ƽ;¬i^ZZJRpòM‹ 0™ÑhdB6„`O?ýô‡¼à/x“Z £s™^\¬Ÿ™ZwQ>Oú¸Û¸½wŒÁ9†Ãa¼òÊ+·Üyç�—oÚ´éÈÝûä§ÛCúÐß9ðÀÏøÁ~àc«wìXq,ßbŒŒæ(�«Àó " !ĺ®I8koâN1°5ȃÁØ+L>"¢ÑhŸx�zNY–Mì_øWûé:±iŒ™¹DÑd0)¥Ãé�a]wkúUaSÀúsß9‡ŸÃÚi[®Ë^ZÍnæ;ô­СãŽ;î�—\rÉC×­[÷ðÕx÷fzЃž|ÑEýןøÄ:ç¢s. 5ÊzŸÔʲ4 ffô�äk$" òž6ÿaÃáp‚Žù„¹ÔMŒF£¤ô îvÍHgzkíDr¯ÆH³Z– •ápØ«¯ŠñÀ�Ø—='ÊÚ„RÄÄ×~ô£}ã�CyHc?ôÐC�eæ÷“™MÓx‘EJMÖbŒ±i°�¡yÏ]MWkíÌŸ³ºB¢®k*Ë:»$û#kÀ»iÈVX<Æh�8âˆÞä~ñ‹_|ç _øÂ/dÏ D²,‹Ìœ¤Œh?µ>¦0É'ôpw·uÉCÞ{ªªj"nBU|QDÔ2âUOŒÞLûØ�p–Ämš&UnVU•˜½}�}O·]Ê-GÖSÞÇi¼·½À‹ß÷qzôïý_äòywÀ¹íœ}ñ½£;n½½ïaì5¦egB) ©ƒ¢é:½{Û>·=Ö È»%Âúçð¯.gëûÙ"øÓ¬­Ç ‰ŽîY¸V à¶z?,ŒÝTŽ(¯Ð£#Ì>ò‘�üá_xàø›}ÝÇÍ7ßü ÑqâÛp“ÿ@Wn05Ü…o/ïn·ZàÅ^„ïÑ«¸KŠéÓ¶E€Ò`5âi¢ �ã Ÿ¹mŸí4·\k÷ {€&+p ›¦¡ååe*Ër¯Y¿üÉÏé²O\Ô÷0涇ۭ×|�¾pæ9}c¯²nÙ ‚úªª¨,ˉ@^dQg�Ù1k¦õЉ& ”ÃàhÝI„ÝmeY¦ó l“®&€B 4ô=î]eèšLDZó’ƒ †Þ-@Þ<Ï�hîš 6Ü5Æc$çœ-ŠÂ,,,˜……3 8Ë²Ô ãF�¥|R1žC¿SX®Z#0�€¥u]‡º®Ã¿ýÛ¿õ¦ÃKDô˜Ç<æi$ZšÓþuÎ燶ó7×uÍÒ0……a‘tõúv‡eY–æA–e¼¸¸Mf2ư1†­µŒ&S(I �&‚eYr]׬Ù�EQp–eHvÌ´A—,?�¸ÄºcÌ›.ñ/ÙÜÕðìsSAëmíÃeYFTì”e˲Œ`f#±£’;HðßZhš&éñ:皣?óÌ3oùÈG>23MטÙ<ç9Ï9í�þè�T–¥�FnyyÙ�F#ë½·Æ“ç¹ Æ9g„‚gbŒ¦®k.Ë’«ªbÅ›ùy~ov_’R»çxß{¤i5‚yqq‘ƒYk>ªœ�+ü)”L{ïiëÖ­½�}š9ç yyl¢ù–£÷>¾êU¯úVÓ4¿èk¼Ï}îsŸÌÌI~@ÀÝ©IÕ8®ZšÐþ—³¦¯[¸WÛgŸ}’¬tR«ªâ0nNkç…ìSjª+‰}ã½·!sê©§>ÞZ;èë^.¸à‚‹ƒA‡a8†¢(Ò\?>%¼÷˜si®ÖZŸFvÑâ ¬áåååwv{¬¶é8 çéÒÒRŠ™ð<GI¥XŠ£æ¶ã¶Ó/2�(SÕN&%²Ù]ºø=9WkÙ.~ïÇÈϵE涃ÖT5}ôµo£0ÃÞµhš­ƒ�u‰I7ÀE3—(å¡s›nB5sW!]�W9Â÷¨¿ZpZ7í�aüu€…ûÚ“M@ÒäÀ xÍŠµ 41wM«…k¬µvqqqÿU*K`a¼÷VÆ�NΩÉÀ -;†QzŸ©Á‹¾Û(QðÞ‡Bxë[ßúí[·ö&”¾qãÆÃÿú¯ÿú–ÒH"²Â¦™¸ð5ÑèEé(ãþ%¥Á`°fœ6I>¤F\R:ˆæ7 &.IS bC)(½AU¦OÂOMhˆÚ²Û>ïõÞLŸk]VjWþ@±—fôŸðªdÍ„Ž°>7ðù4+Ë2b¯ª ¬Aù•c`—™ƒµ65]‹16!côÎ9ïœóÖÚÆZÛ¼ìe/»ô²Ë.{ת<”û`Y–mxÛÛÞö–ƒ:h¡i[×µóÞ»£‹­œ‹ !ØØ–Zca‘w™ÐÚ”_™Ö@o7µ¦ç s©ËæWWœ_¤c…a, ;œc`Š®Šú&`IIúg*QÞc7RËŠM‰•B¸ùæ›Ëo¼±7­ëG=êQ¿øá‡/‘Õç*­¬˜Iç3ã¬ÑZ¶)i>Kf­åNC>øš¥;¡»K¢áM²wô‡Ù“žô¤çõu/[¶lùîÞð†ë1§Œ1�ú€4C@Ó\$ò°F¦ùú»Ó4£±Ñô½ q)Ñì`l7d­´Ÿ Ó8sÛ5¶K¢Ë,Ëhaa�¬µT×õ ]’meÊ�1Ä{~Âw»íÎÛ~B—ê‹}cn{¨}þŸÎ¢Û¿wSßÃØë¬,ˉ¨Ãî#¢Ér}]ž?ÏDnÛtµ‡¾,èàª$ö�vÏ5í¸hm»¢(¨(ŠäàèïíɦpÓ™úÄð’Ë4McBÛeÚZkí`0X€7ÆHUUÙ­[·Ú-[¶˜¥¥%öÞ³µ–ƒEÁ!�FóD¯\ÂØ�`ò{ï@š!éÆV+0|ç;ßù·Õ¸ÏmÙ ^ð‚§ ÀkI^ï½mšÆÔu�Þ Àx ò*P“H@ƒ}öÙg�wÜ8Ïs¦9’‰�„ ›(iAN<ÍÀ¸%ûšÕQÛÊSóAž…hk6-aòK%ž&i"ºg�t5 g²>K²,K•ú\žVÆ~OŒ9ï}„Ρü�ÈÌÑ9­µAö„�çy(Š"fYäë—s®‡Í`0hŒ1þÉO~ò‡n½õÖÏ­ÎÓ¹w[¿~ý#.¼ðÂWŵ{„£vŸpUUÙ²,�÷~‚�ˆÄ˜zø\~%;çöÈ}Bƒ�˜ßÂÆOóDû~8äŠ}.qï=�F#Þºu+�F#»I2UFDmÜ®ýfNú�}šìA‘ˆ¢0Dãh4Jºùò¼Ó:9¡@my}8ï¼ó>Ñרó<ßøž÷¼çÙÞ{+ç«@³[9“Ö*DòûØuëÖ=¬¯û¹úê«ÿ}4…¥¥¥°´´F£Q¨ë:zïTf¥ 0Êó<Š/¹ªø[¨’×q„®ºa©¤Ïó<ùå}'`á;EA¨,À¹¬c=Ki }n;n;í‘é »{(ÞÓA—™پV×¾ð/�30ç¶ÝvÓU×Ò—>ðñ¾‡±WZ7ÀÕ¥ÓºƒâÐ�Û¶MëÄ�J´’•ÓàBßÖuR`]æ±fÂÍómgM3\£tˆ˜…Ͻ÷F¡ŸÇmQ«Æà !XŒ£iÓ4�A‰½Œ31±½÷éEŠƒª»)§4ƉRm¢1£ß 1Fÿº×½îS!„j•îu…=ô¡ý�Ç=îqûäefH3cŒ8�œ©Ò’:à.ï=™É‹Òe4‡‘zé""rÎ1Æ–ñÍÆöÞ›º®M!éb`6&}Bjõ§©­PMºs3ùÜ4ÿžlÚ¾Õ7n}_öRšD“ŒÌûRIQU•^ßhºÐ ><Ö¥ÖÚE5¡J>MsÖÚtÏ÷ ŽræG€z,Åc¬ª*”eêºDäó<ÖÚÐ4�¯ªÊ×uÝTUÕTUÕ4M㯽öÚ-ó7óЦi~¹;ŸÍöØÑGýŠw¼ã‡3sw�s6Ë2‡½C$v¬Hܰè­#‚9Ž’s°ÎúŸ$÷Ñ0/†Ãaª°Á¹†ù¤’÷þžXzsH¬µïCô¿œ$ð�ˆÒú€ÅVÊ�G£Ñêºc`ø©}¬]¬½�eYȲ,±èÁ wÎ" ×\sÍ'û¿µvñíoûóIªeÔ…„ 4z­ºF%ž“ÜQZG}'IÒœ�…VÉP-7�³päÅ%¾‡=묳ž6Xõ;»ýöÛ/þÚ×¾v×ÂÂB°Ö&ö·JÜh‰Z„–u¤}viB…þ>ÖUU¥¾0º¯I_†qWUEËËË4�&zÖ ŠJËYõ_´l—<=¼@�ÔëÒZ ôÚyìêí�öù:‹êQÙ÷0涇ØgÿáÓÏn¼µïaìõ¦÷¯{byè$Ö\WhÛ6-»«ͺÚVµH_U‰¯ÎªwF1hX{ú¼g35ØPŒ]¥IgŽA•cŒ&Ïóû­ÖX�F‘‚�Ä0Ö%‘Û’ÿ€ï"ï³;ñ&- y7„ö" ŸùÌgÎ]�ûÜ–|ðÁO{ë[ßz)-<Í®¡±|CÒèpsBcS‚RF‚eÑÚd\²1&5K+I±¨ KÌ�­ˆãrSB°Dd­µV5žJ¬gId˜º®¹išÄâí2g ô‚¯>­™è¶ö©Y"kt‹ºŒ¾K2!šÜ4 ´V¡»Mx›¦™hüÄÌžZ†˜¯ëÚ×u훦ñ!OD 5ÿüÏÿ|Ó9çœó?©Ý#z7fÎN8á„7ÿÞïýÞý™ÙcœµÖÙ6X³jÏHÚšXÔÎs$:(Œ›Ñž£Ý=ÍŸÓsI� QÏ)ü¿-[¶,¯þ¨[Ûo¿ýŠ‘j¢”^|WFR{"|Ô¾Á "¢_üâÏW®¤Å+Ò ÑZÅ kžäœ�1ú7¾ñ�çÇ{Ëžzè¡¿ÿüç?ÿAÏ”mذ�×­[—×�bYky8Ò`0`‘¨Hì#"Âs°�‰1šº®m]שA_žç&ÏóÔ1ÝZkœsI¦¡ª*SU•‰Â—Fn \ñÞSžç3óܰOÁ—× ˜¼ÝŠ ¬™¾÷ån�HtÏ f4ã×}5T^HUFDÉ8©5ï½OlÞ‚!4u]û‚ϲ¬qÎù‚÷Þû¿øÅ_¿ì²ËÎØñ»ßµVÅþgžyæi|à`쑉}™¦iÌòò²�FL­înj°)Œ·Äd'Ú3@^°áDÃvø0 (ÏóÔµ^ØhšÏ?ûÙ϶ô5ö<àû@ûÉ%©ŠbInêÏ“^8ÎÀY±ªª&°[DåÙDz,ƒ4AŒRfêºMÓ„Ï|æ3wþä'?é­DÖ“�rÊ)Ç+¶{äMç^CÊv5m¡ÿžôniuÎÛô7 , JÒã€Kc°:%€Œ16Ïs›eYºïw¿ûÝÏÊó|ã*ŒªUUõ“—¼ä%߀þnÓ4�ˆ Í�$º ^9!ËÓËØ»/°4$X±?kÃ×§ ‡CZ\\LÚÁèG¼°ª*ZZZ¢º®Sœ7ÉZÛûØ÷tÛi�Lg4³ “fòjpVX}Û—?p.ÝvýûÆÜfت¥ýëÉïØë×Jß6�™‰rcÌÄÞÂ7¤ IDATá«÷6åœÎmŠMk 3¼ø|³‰Ä>M"šõ«”hë±ëRmR#àBékQìœK–ñ1®,Ëxaa�¥agYÆEQðp8L×`0HÌA0ðákøû|ñÂÂE‘œú)%ûI‡MÍõx 8é0#I}l²,³Y–­Š£ÇÚpc$JL{<ßgêwEåÏD}u�]Íafß4�¿æškzm¶¶nݺƒ?ùÉO>+Æh›¦±MÓ8"ˆcIº SÕˆŽ 33;ç8˲Ôx ïR|Ÿ½@ ç\J0�b�“z÷(‰•y°‚U%:ÍVæ�• <é!B@É­%†ñ;�HÀß¡–9œÖ;‚¯YxnD”ÇlÃÏÀú%Rû׌ �ˆ&%“´éqj†¯w·‡å„½]é0I‚‡$ÙBMÓ„¦iCÌ{ö®'¢&„ÐÄföÇsÌô£}~'Á.³�7þ_úÒ—þ_fv!'�’\ŒÑ!áAÂèЫAxI�=‰ñ_UÕD³p¿*)&4_Š p‰Æºí¶Ûîîkì7nÜGKÄ„±Þ. ï‡bŒ p¨s�½¿Ÿ¦ibg‚Ö=|ómsÓ”@ mÆ$xïCŒÑ_|ñŽ6+9è ƒžòŠW¼â`›zI5\ÃÙaŒ1âƒ@ˆ™“´ÕÄ{TRp»ó=%ßH|¾´†Á6V¾|+k¤yn–eÖ9g�s·3»c�=vÓa‡öG»qÜ÷j7ÜpÃ'¶lÙÒxï½’ÑŠ±•eÐý&À]�gõe˜ ˆ{džLøø\cp}šŽ‹¦ÄÐ)�¡˜Òìä¹í¸í’§æѤ~ŽÖ*RLòÞ§Cto·}üõïì�F?·ÙµO¿ý½tÇ­·÷=Œ½Þ4p=&­O¨K°5µ>éܦ›°¿’C‰ ô´Rá.Œ®²}šh^±µ–‹¢£ŽW žtWw^Y>™~ŸfÒA#² :ê²iDcv™îò«ÿ.2þ8£»@:˜zÇ4‚&ƒ‰ VÎÙ„Î) ¹L]×f4™²,ù Ox¾Üj=îvSÀ{Ÿm¹'€Þ`B0µìÔ ÿæ\–eQ˜Û¬Ž(² ±EDS³%Ój»fö§žzê'C½ qÄ/zÑ‹^t·%Ø6Ë2§56i¥n 5ÆI€­“Þ1r3Öz\Uv:Š]4¡¨U§MÓðòò²)Ë2IQ mH@nÀmÁ‘Ͳ,éÇ-½$�ºŸìš ˜ëºæªª˜,¬×”$‘ó£wPeii‰F£C/¼»×ê}ŸQ: ûôa�1$ ±´ÿNK¼éõŒ=-ˆ¼Ì}µBÓȰ ²-HðDj“A¡Ì¼÷¾ª*_UÕ„TCÓ4õSŸúÔ7lݺõ{»ôÁì„=ìa{æ'?ùÉÿ»®kWU•ƒ4 �›¯%Ýn’ä†0Þ ö}¥+šXˆšö>ß·e[·n¥²,¸+gCtÎE$òõH4Öèmš&ÞtÓM½¼ûî»ï")�=„`„ÑkÀ¤Ã×{OƒÁI;H70·ý$xß}÷�…w”dˆ(Öu·lÙ˲ŒÌŒFk©Ùay¤¦i _øÂKï¾ûîïô8vsÒI'�@²flkŽƒWÑTý!IT“e™A"]_Æ$ñ©( ÚgŸ}xqqq—¼§ápÈEQLhѹkŒáªªÍE‘E"ëÞcŠ¢°ƒÁÀE�³ÒI¢Øž~úé/°Ö.îŠñ–_ÿúן½°°àó§¹'Ï>Ê €H­á8åëQ}/°èJá™Ùcü§>õ©Ÿßpà [½»^iƘÁßøÆWfYæˆÈÅÁâu`¨’€»<.Á´Ô6›î¦ÍÍ,Ëh0Ð`0HlðÁ`�˜¿;c ‰E Öµb©è5 ×i†zQ&˲JÉ}aä‚�˜-k­umÅʳrÜ6Ÿr®áó9�»¼²ÑLZ{˜gbi›3ãrí´žñ=Yóè4+¿×{Љ4Œ‰4{Ô ¿Zë8s¶ëï5M‘€›Pî_K¶$ö.Ö?3{XŒ±‰1‚É믺ꪻ_ûÚ×þUÓ4½„];öØc_sÊ)§<Â{ïbŒŽ™ÖƒU&k í4ž7ší7±¯ÎBRcšUU‰ˆœsQ£©$[ÈJ±¬ìÿ�æ!f¦+¯¼²7‰†õëׯ£•  ‘5a0÷½jä¥~ xв°° ›çé3Ÿxýúõ¼ß~ûñÆ�9Ïóô}ø;s/�5 ¬Ì]<óT%#ÉTO-›×///7^xá™;3†�µÍ›7?á´ÓNûu9S�§ç-�™ðV˜ðÝŠæöÀщÁÄ�oš†t…ÖöhõâLì°�Óš¥ŽŸªÎyèê&&2¤h|:€»!û¼ç=ïA‡zè3vɃÝA»á†þõ‚ .ø¹Ú—1oR剶:Mê?çŠ×­êa|m€ð YÈ^Ä2FÍ´îÝD®NWLTÒŒC"š¬°#‰÷fâ>öDÛi€W3‹ [„î}`iF�~±1Æû�Ζ}ö]¤»~üÓ¾‡1·²;oû �óÚ·õ=Œ¹‰AKŒK0!㤶ê ã�˜UcæÄÃóÓ‡=@S0K‰²ÄÌ,Õ#½;q]×,:Xœç9[kÙ{Ïr&¦À ÊW5@†ò< Äêÿ£ÖÐj}rUUÓdöÞOÀQ…ø\K@à% (”æZú¿~÷ æ‡ ð þ°+‰Ì!Ø<è ƒVMWL· ÈEER6Ÿæ¡s.B?,Ƙ~N˜Û±ªª(ìÞ$Õ`Œ ι`­ `„“Ïÿå_þåû¼÷K«|ïö€<à±ùÈGމ"Õà½Ol^c zδzÆ9g¼÷ÐëÕM–RS½‚faþÑDBŒaø@-敞øœs¼°°�ø�ø‚�äÀûÅœ#ÑÉ f8Õ -ØLIáEQ¸<Ï]Œ1kšÆ…œ1Æmܸ1{Ö³žµ¯�‘&kÎÈ:ÂÕ¥ä+´å9Xfs¤™÷Þyï]Á=â�~ç;ßyó?üÃ?ü£<#'ÏoªÄ ù•ÔRû X²jöè*+�Ôô±zŽò*0ëw«5ü†ýÊ{Ÿ@[Œ³›œêDã¤-..&ýñûT‚í‰9+åâ`}à 1Æî> Þ&(¹†ç>÷¹_ýö·¿ýO»çIm¿ ƒ�uÖY»qãÆ\˜üi¾#DÂt6ob¯O;qa€f>Øi}šÚƒ¢J‚­MÔêrF™gi03š3õÂÂÞ¼yóÃ�s E­j~E+׬ñÞffùù‰w?cÊÿK‰åÑhģшëºN¾†öMþvì>½_u>DÅ`sç/Øó ¨3cY$_UUóùϾWïºuë9ÿüóO”³$1[õùÇ ^ë½·1Fk­5yž›¢(ÀÊ�ð Y*Shå> P—Š¢H²™XgjŸÖ>#|"¼w]¥¡÷ÐtŽF¥ÅÍX³HÉåp}îsŸû£ûßÿþ�Yõ‡¯ìûßÿþÇÏ=÷ÜŸ6MêºÞû@DÉx½gãß[�íº®S2/îÆƒ¤�Îù”Î^|Œ½“ÔÙE“ç5Ãß¡¡/ÃLÀ-�Jê°³,‹`ÐÔu›¦ â0GÑ~Me`p$Á’vhšWø¢q% Î_#»øpèñ}húµïä—¿üåÔûÂßÖg:ÎzR™ÃKKKDmЇÈÎ��$à à³ÖšM›6­À…©KDIsSÒà�F¤˜øÿIgº`xÆÂ΋ƒÁ †b]×A9áAÊþ‚÷ÞãÙüùŸÿù‡>ûÙÏ>Ó9·nµžA׊¢¸ß¹çž{ê#ñˆ¿¼óÎ;#Þ/I‰"æŒÜ«gfÊóœÈVK4RÞ(À£6:K$$ÍR€:Še2ñ·4À­9r�@1BR£°b±wðE „õY–%Ö'’šu¨Ác4UU¥Ä ÑñÇ¿ßÛßþöw-..>šˆè¢‹.:î¨£Žº�Z07PËÎD0FUUyùýÁ þ¥q(3s,Š‚Ë²Üå^±ì£ÏÛ9Gu]“s.í§`EcÿRÍ|V${˜aí`]õa`v‚Äô1À§<ÏQ1‘¤u$bì¯u]G¢¶û7¡ú"•ˆwÿ6ö]ç\¤qPeNI(Dï}�Òv""jš†™ÙK•‡)Ë’…)Ç�}ìcß÷ÃþðW7oÞü¤ÝÿôîÝößÿßøò—¿|Âa‡vIòJî7­{=Ÿ‰(1Ë@‰±ÕG%æÐt-ªõ1/‘\^^î%B,Ë’–——W”ÃÔÞ•š­é±6M³5ÏóÕ®P¡M›6še™afã½çªª«ÚZkŠ¢@ãÈ蜋X3Øœïyž'Y çÜD|¬fœƒDã DmòCª:ÀÄEB4%Xï ,˜^×uÒÈ7ÒÐT�12s!˜º®ؼ’01ÌlŸýìgñ§?ýéõ‹‹‹Û½OÛv衇þþ‡>ô¡o=ç9Ïùb–eiÝÈœ×g&ζtnŠ?ªªŠ2ߢµ6 +;Öuøâ=Å!Nç"æk×_¤v_OI1jÏI"µ¿©àÂ<[?„`™Ù:çlÁ.--¥(3'û-oyËa�yÌc^ÒÓ£'"¢Buê©§~ i€ºÞZˆ( Ñšs.äyžš¬ à›$B꺎€|§­( †~.ülýnˆ>?�F#ù6§xIŸqÓ.€¤»lÀÛiÌL6l`ï=---¡Úrb|HÔ#þ!ñÕŒ1 þbŒ´¼¼ 9’È-ƒ9}Äïœ[Çvàí€B§N‡‚y±‰DaúÍ ¼]ûÔß¿‡6úzÈÿù¨¾‡2·žìSÿ/tí×.ë{sëc)�JûZUU�´àÃ1èê“ï–ÊnBºnp.ƒH(§s"0‡=1 ˜9±tI!�e½˜cGK7mÒ¬°}·eá‘E«•™SÇq<#¢É„¨NèsWM@¸$%€ŸðKD]Ç %>Æœ›_Хߛü_#@Š�1šº®S9žIŒ11*×­[·ª°”72+i�‡hÜ=]Œ:(‚Ù4 ôðÀäå¦iâòòr;ñ/Ó–’zn¥*ù/ùËwý×ý×ÿ>ì°Ãþt5ŸA×ößÿÇ|ýë_ÿ‹G>ò‘o»‚d®¢K3L2y ØTMÓ¤îæ*x�êF"J@sÌ?„ÂBT–e ˆ±UMDÂXK9ÍKè Æ@-Ié+Øm’”I�+æ)�KQ°ùÎw¾óáÇüyž€Aqħ<úÑ�¾ä›ßüæµà.QǵE ({_@@°‹¤S7žõ.²¤O¬|r].™¥õ?ÁÔIͼÖÏ5±odÜ•cßnã1?új‚|çynŒ1A¹¤¹‰¹…9Ùö¢Ä0iíwýzЛÖ3ÛjYùÜ4�à$ÄV‹7U7„šg<㯿ð Z\\|Èê>Ééök¿ök/üØÇ>vÍüÁ\Bˆª±OP'ç[JH2s”ý6äyn˜’68ÓÅ»hš†¬µq0ÐÆ�Ñe==gù¿»Ý«†•ZiB¨ý2="¢º®{að‡Ã>ö±�ÝðÕ¯~õgyžÛ¢(<š` «2øgŠ¢H‰ ?c¢4*ŒàÊêõÀÒ|Jû·:A¨ö ì?QÎ2ÆD¼Kj׿½¾Oév¦s…EÉ{¤b$I"QÛ(«�FæK_úÒ™OyÊSÞ²{žú}³§?ýé¯yæ3Ÿyí¹çžû#Ù룞_ :P»wx¢Ô,4PûœRóFÜ73³$XH|ŽîE`r¢2 ~�¼«¬�8¡÷Lì¥ò¹afÓ4�á¶RÅc߆¶Ê%Éų‚;ꨣ6¼ìe/{ƒü|oöÃþð¼�|ä#·;ç<µó"„ÐU-�’Ò�ß"ÿ{ÕÔ*Í4H%@ Çψï�@^ülÓ46Ïs;mQÖZ›þNÁZkí`0H …1ÆEaƒAú[^´á´sÏÒ5y0Ø<Ï-šªëÀ¤;NÝ�Çc6®æ»;—¨m#å牭~—E‰¯+‹^³µ yŠ¢ˆY–E F‘áˆ1Æ€W‚ o­õY–ù«®ºêîË/¿üÝ«tû÷h¿ù›¿yÒ‡?üácëºÖº³®ªªt!�+ËÒ�F#‡y¦’6´e›FÂ${ÀÌ  Ád4ÀÏ« ƒ=û~Þ{o–——íòò²iš&ÍË¢(¬€¶®k×4�5ÆX'ÆÌN³Bc̼÷yÓ4™÷>Óÿ>ýéOà÷¾÷½w>þñ�?Í3œöüò�‡¼øä“O~·ÆhNgó<·¶¥j$x‚Ò° � A·iÝ$g{MzékšTÓF]y`Ô{ÑÁáÄûȲ `hqʲ䪪R×÷>^ì¯r¯F�/. Û—€‹<Ï�4ìL‰GK˜ˆç8Þ‚faÕ¥w…F0¡Ã˪éZh¯åÀÜ2 £”›fF“(ß.•ʲôï|ç;oüèG?z ÍHÓ5kíÂë^÷º·üÆoüƾÃáÐEᬵ{ÈESç�B+š5‘¬0O%6LóRLÎ9v©ÖpÜ-sŽÇåñ�äJ½<Âû“†_I³—™{xŸô¤'B°£ÑÈŽF#BH>ö%眭ëþ“Íó<%�…ékÄç0ÈÝêý:„`ªª2eY&�æ½7u]`Ôï1ZÐþF5Ç=íw8Ÿ‘8‘�cÓ4±®ëPUÎÚÄÜ¥¶J*z£Ñ¨>ûì³ßD=¯£õë×?ì¼óÎû_tÐ>UU9ï}FDY› tÎ9—c …¯Óä«l•ço½÷ƃ„UêÀKÓ¶\Ø'Eï75Uż€�§Îãt††\UUY]×i¬!„lÆ Å¥—^zêþûïD?OzlW]uÕ™þð‡o‹1úº®!ÉàÕ|I}X˜ÑHÞ°T2Mó ·Ã&ÎeÓV+°œŸI‡_b " © ¥ Ð E”˜ˆ1Hõð¹°§îÜÜqЊû“qãY GA7ù‡¯áë8‡eÿeTå¡1(lý¨5c»àÅ3Ä�ØAÑ“øE0Õ–îîìÖ¦Ý|õuôï73}æ¶›íön¤¿òÍW§úln;`Øç°¯aïÓ¨fö„±ÞXŸÃÞ­šºR Çì0-Á05ÀSAžé‚D�"YFÍœíÅbËH…Òµ·ìÁ‚ª@ÊÓ*þ_³fÓÇø:€b0iÌöH ¬n)(à–±“tÓX4ÔÀæ¥0«Ácý½8n’_€Íøû«º70BÐuyÓj¾+´3ÏFiÇ8nüe:Íc»kX3: À�-$‚b„½ ¦ˆž™ýÓŸþôs~ùË_^¹šÏaš13?ãÏ8õ‚ .ø]cLf­Í´ÉpEaôÒäûð»bŽÒ8 5*9a𦱠&ç];ñA1u£bì[kšš<Ï­€uóMÍ`#cþj–® !Øu$l]a eD”1sžeYqþùçÿ÷÷¿ÿý¿ßýî÷Ä{y~ùI'�ô7EQd’ìÀssnâIZD¤AŽ$[³½¯PÆ�y;Á਋ĵ@å4FY’5Ðø´Üõ»{1Y»SŸ³|=5 ¬ëÚˆôJ×Á,7EQ˜¢(Lžç)ˆãW‡ÌGßüøgúÆÜv³mùù]ôþ?•[—ûÊÜîÁ°WAoO_Z×}ˆV&»Ö‚mذ!é|á EŒ4qà  ‡½fˆ¥ÃŽ©8–¦i‹`<„€`ÐÓÄ„¶‘}YêV­œ•i¯Í²ÌeYæŒ1`>¸²,­Q—ÐP"ß4�óÞ§ ã÷Ò$€•˜–1ÆÄ°²Ö&ÖUUUés|-ƘþŽvê»GÁ–ei˲t`}âgÀôÄ8PÒ6—i™”¶(ŠUxÑP­Ûh,<°ïcŒ‰µ!:»$�ä&,Ïs"jò@ÏZ›Ø r%�7"òÞûPUUS–¥¯ëÚßqÇõ»Þõ®7Äg¡\‡û·û5_ùÊWž-s*ËóÜ ƒ,Ïs0õ2ç\Ö�ÇUU%@UÞû4·afS–¥�F¥¥]pWÖ=öS–¥mšÆfYf†Ã!Xéò#<.·2/]Y–®iGD™s.³Öf!„LæfbíQNãà4'¢Ü“?ïyÏ;ছnúûãŽ;îTçÜúûòð6nÜøøsÏ=÷˜<Ï]–eÖ{ ;1UT°Âu]sY–cd�tÐ>õ}}oéž,÷”ä„–†˜�äÿ¦Žè:C�ýKÞ? ä-ËzÛ½íÃÐQÖ�.©D˜° mUUv4%Ö÷òò²-ËÒxïM–ev8š………T9bÛJ“çyêàÍcM@!$ð—hìÑž·Ò<Ó“˜ž!„XUU,Ë2Öu�„PøÿÙûò09ªªýs—ªêžÉdOHBȾ@DE " ˆ¿¨¸DAdÙáÓOýâ§  (AÅ‚"˜`Ù²@‘ †²Ít×rïùýQçܾݙÉt¦g&ý>O?3=kÕ­ª{ïyÏ{ÞÃê2ÌKÌ9„ˆh>øà[ÚÛÛhÔøÖbÔ¨Q‡,X°àDcLP»NQ¢„É]—èð1’”¤…B�•‚²P(È(ŠØ.CÁëT½I’8mòõ€|_ÖÒÒR×{O�Û’8W�ŠŠ'$¯È×[æM�0Š"\²dÉõ<žm�”2üÊW¾2*ÊOÍ„®W•áæMc ¯áœxÖišòÚ®”Ê«}ZZZTKK‹¢äšSCeŽpeþ¬”ù&BxV(ÂäÍß Žc§êå¤VWŠlzܳCcŽˆ¹¿µÖÃ0Ä ¬È=­¹ yI~fŒÉN?ýôkÒ4}µ§®ÅÖ0räÈý.\øÕqãÆµ g �”2�RBˆ¼k¹õO.óÍ«¡´ÖZI)•1F•ËeU*•¸J„ _7§û ÞgóœîíçT’$:MSM$¿&¥±¦ÿÇ•-Þ°ŠàÀ�ác�=váøñãßÓÀáu¸ýöÛ/ooo�Ó45ÖZ#„0AØB¡`‹Å¢ ðjÏÆ 8›÷ÎpÞàì7¾-ð‰E™÷ÀÜÈNÁ�©Ë„,¯_ÛÈ4M]2Ò'ñ¥”’c´·ª²PãªÕX ;ཷÏs¶^þ9×ÄM[TAzŸ cŒL’D&IâìGx¯žMÇௗ<ê¯èö…÷J,¶P¾ø‡�þHvì(üêk×Ã’ÿÞèÃhb!�øÁ¹_…WW¯iô¡4ñPñd¨tö•U?_ãAÞßÐÚÚZuÂ~ö”?z »+¦÷JJé­uUÀ@ÍD�¯*¤F%刟Ñn(ød"K³–”º[�¶>iJW€ˆ�”Òµ2oRá^¬¨¢|�ÏZÅTÕÏp0gk|Ѻúzíïû¾jÆ­”Òa2ì3)e•W++PjÉ`Qí×èHÞ0 {Ô¢�÷)Ø…ÂÞž9¸çD t¹Áç$¶gÇÀÿ§Êo“•¼Zk«”2äÈÞ›æòË/_þä“OÞГcñZ˜9sæg/^ü™D@¨"PJZëªk5‰ {IŠqȯ·öÈí=Ãîž`e©|«¬C80"*8±!ò’p¾ï«.ؤ ™ºšHÝ�Ï#‚�”ÊŽè�5kÖÐÇüìo¼ñç»ì²Ë¬m»C=ôs{ï½÷ $«¯¨a’Õ"œ£õ…›GÙ¼&˜\$b¸JÁžç¾ú«+)ª)¬ø)3!¯ˆ@`E¦ó‚ä9I)ÆÖÛ:^õ‚W‚ÜåýC×Á)kÎÁ�‹„zï}usUð¨”rcÎ_ãù…÷> dïBsŽïÙͪf³¬ÈZ)¥M’${ï{ß{ùæÍ›_hÄøv…·¾õ­§]wÝuï rªvÙ‚œ¢5§*a@sÂÞú¬bCÏc’Ÿô|y>·u®’êììD¾ŽÎs—­7€‰ Sñçä놀?úÑ�þU×ÚFì»ï¾Úc�=ZeÅ{ß­÷<7ò>ƒ‰yðö>aÏUF\qä_Gð¾ÜG€Zž‚Ð)ü±Ú×Û5ÍùZk0`@Wóò³å7Û« {åyQ¹Ç½OðZD´Y–™ ¼zß}÷}³'®Áëa̘1=úè£×}øÃ“eÛñ:Åëià½ü½T•W/¯‹ÆÿùªzÞ´þjÚwk�×ÿ»ª2šç»Úò:ÊÇÈ{ ÁÌ™3‡,]ºô›“'Oþ@£ÆÔǪU«~uæ™g>ŠˆÆæ– ÜÁh­�ŠWP3/Vß‹JmÞÇmóüBë®?ÿ;ÿé0 ! CgW@‰BW-Â@¢ÿ…•Ä™‹‡8~â¸CnYu×Hû$¶æò+»ªÈ\ïë[¼¼û×YSÐ×Ùç›In¶²`.W'é¬1vF’·Û�q±Xä.éUFèL†tEpc Žãª.ßMt “epëù—ÃÒ¿>ÚèCi¢Î0Y?ýâ7aÕ¿–4úPšxˆ¢È%´°b¾ï|Ú¤”\>æºyzÁw£¿nPJ¹ÎÖ¦Ò¨‡�ò}_GWìpHå|앆¡ÃP{~±ó’3§R%å‰JÓÔ)@Á ä5^o¶4Ÿ�Ì9qð0™AE‘#H!Wm„Q…Q…J©PZkCkmˆˆ¡"”Rº�ü€ÐäÞ¡!"†@*D~!bÕË&I¦i*¥BD ³,s¿o­ ³, “$ Ëå²û¹B¡¶´´„---AE©;�3 šÎ�‰³€=Ú(�ÐTZ¯¥”*Ë25uêÔ6:ÿƒ!ßÜ8Ž¡\.Wu•öI?9óZÏîæÍ›‘7þžÒË•êæ{÷Ü+Pa …‚- .øDDï|àßïèèXÞƒÃñšxÓ›Þtü3Ï'‰|_¥iÚ°yØVìzª¼*9Ñ€•ä 'áJQÙ1Ý_ŠËÓ} ^Û¼õK°"Ë’'¯$û"Ú}{"°Ö"{ö2hžñ½]}/HW*¥ðñÇï¸ð ¿”eÙ–å��<æ˜c.=餓vƒ" ªÉ©*ò—€*MSÍ*QRV«8ŽHJôº{–|öJSiª#¬µ�¦õ/€ �uŒ¢ … Nø1ùë®—Í}9eö/~ñ‹uår¹½îõQ,wùío{^E®Q&�=Wì!&r­µZÁÊQ?�Ðu :;;ƒÎÎNM Ï€k%ñø’«RJ±”ó�µ^5Tÿ‚÷Ê\Ó•"»f/ÍJjçyÇ1Zk1 C†¡‘R²Ïªa’ÏcÞûÞ÷þvݺuë‘ ñ:4hÐî7ÝtÓ —]vÙ>äe$Ið~Œ’�üL1©ê>ÇŠò·*™Rû¾f}e�xE‘&a_óªÿÇÿ&¡½ÿXkcLð™Ï|fòÝwß}ÃÈ‘#÷ëÑÜ Ò4]æ™g^%„Èx�DöCn�c“$±q[k-*¥0Š",‹¨”BÞò|mí÷NäD+W䀧.•RB¡PQ JºuÆ�‹|OìrT�—€ADÞ_kŠ¥\ƒd?6©û¿A¿çª†€*€8ñÊsH�Ey· ²¥”þßb/}Y,çŽÐå$ £« �þŒºZ4ðÁ/p JH޾EçêÞÑ: w#KR¸åÜË`ùÃÿhô¡4Q'dI?¼`üë�5úPšxƒð3²>ä+tj%ýM½«µ¬x¤æ'N1†¤-ÈôÊEµ2¯ª4+v.0„êîôU '€|2ìè²ëX­`ò7ãš7ÃX) )#•RnÃ.Èó¼’½Ú÷þ׌1þßeQ÷s˜û‹ºï{�7— 5ûà¿ÉÇÊ/Kž¥ü¹÷¿˜Hvä×)èJÍË„ß>ûì3¼G/@Uò…Õº>¹ •æ¯Dö¾ž?MSVx`–eLøú�:جשE R6ÊAgÖÞÞÿûß¿ò¤W`ذaûÜtÓM·Üzë­‡Zk�•AíýTh:o[~ø½ðTµ5�«yc&ÿy÷‰!—$¡Ÿu÷½OLðÿ‚.îqÿ•R.92cÆŒA÷Þ{ïÑO<ñÄûí·ßg´Öº;nÓ¦M;ñüóÏŸ•`¦ÊÏ–T·RkÍAžó('’Ð'l»üLl1©È$/•Ždôþ.{œJVqÁ–ä.«¤qî“@5%øŽ@¥¿×P/°ÚØ�OWs' ‚ `rCA 9ÙàÔüâÄ$äªD¶ÓØÂƒ×ü-b€ªDïüž^UÍ~j à믿~Õ~ðƒ¯õèȾ‚ xå•W~mÚ´i­þÞ:DI?G0q¥ ³ë6÷ñfõgUs/M�†8Bºï»X¥X¯ç¹%IRÕÏõU ß]‰µ»ßÉ%¹ÐkÒîÃÛw#ï¹yÜÉ�Àê¼É!‚×p 3Rqfišf_ÿú×çYk{ƒ-DQ4ìÜsϽöOúÓÑaF¶âï?Kný¥ï3[•L‘y%[(>±K?çCZ�—¯?Û3é¼á[UÅNíZ¯µo¿ýöþñ�oÌommÝ­ã×zè¡o.X°`�µÖH)�RŠîYÌ‹ª¬1ÆcP�|ÏÔÎÕ=Þó\þ܄ԌžarË a½æ„üœ°ÅÖ¨äÁÛ+ñ =>'¼�*�¼¸Daƒ¼ˆ(|¥9äë´«T„êuYÓÞ•e]U/ðâJϺÂ%`�ªhýuÉ$D„b±¸Ó�¼ÝŒÙ½ŒG’$N!£É—·µµZZZœ Ž:“6е«o!K¸ù¬¯À³kx?–&º‰¸£7}æbxúþ^‘Dnâ ·d�¹§’óèLÓÔ)v9xã�ªO õe!¸[©;gZTª;ÅÖ¼®Ù’²´§àÑI’årY'Iðbï) 4o\•R.{ÍD1•¥5ø»ò6ÿœ˜l¢WÈTš¦aš¦�µ6�Rt^N½Á¤/Ì>QëÀL^up`ÍÄ1_)DQDQÄœ#m}R¬V¹Q.—ƒÎÎΠT*¤4 ³, ùïZkÃ8ŽÃ8Ž�Z’ÿ?)(&ðQOš4iXO_+ÿùåg“ßûàT©)·ÿù&¢€”_Qa±T*Ùr¹ìÊ�HÞ,ËLš¦Ù9çœóÄÒ¥K¸ƒN»AÛÑG}ù²eË.>ꨣveÿZ bŸïþºÿÞ'fù~¤@“.‚^¢�ƒIï½û9ÿy¡ï‡„Æq”Ëe>–½D zêvD >ñ‰OLX¼xñ¹‹-úÍÁ|AE#ê5fBˆà¼óÎû\¡PÐºÒ ‡ PE‘lii©R#z>ž†¡`µàVÖ áߣ´ŸQ¹ÎÒBî^/MÞeÝùó1‰ŠwñÞß>¡K‰ÍjÌ“tN�OŠØ†&Ú”R’»½ÓÚáŸ[IÁ¤GEºP(0Áëì>„gâ½Dγç¡B8ÿ?š#„1Æ)ÿ­W‚^äFÄUeåRÊ Š¢ X,†¬¬�¢ÈWÛ;ßw¬V_³u“óæå1‡ê®n\ê«Ðâ5ÂëµÀV<è“�P!y]2O�/¾øbÃ|xGqÄYóçÏŸÅó'í?‚8Žƒ,ËB¥”#µg[Ãû^ÿIQZ•´†J"×yµ“2˜Éd_áïz*Ðý˜˜6ìwÜqÇ¡P]Á ©Ìß½¨Ôœ=G]Yÿk­¹Äö‚írøïÒÜÌÞ{’P¾2ˆƒEoü!_“,ÒÞ\VÕT¼´‘‰6Rº†^LæÒ½æ”‹t>µÉ1®®àRõ®H^§ò¬œBÚ'½ñþ5O@póF­’‘çž*o_ÏK‡vØOžþù^£?~üwß}÷QL8ù÷ �³öž[çïÎãÍ„Û3òæ…J7y׬¨ú–•ë´×rÏN½Àû:nÂÉU©ºÒ<ÏWñÚš�øè£�6|“¯” O8á„K-Zô©B¡à„µÄ¡KÖñ>�æ…<²ÑKšñ~Æ%NlE)Ìå×®©%”œ=M~+Wî{̽uEš¦I@ÑÒ4ÅZî€wdեɛdYDd_^C/+¥4BˆL‘~øá?úÏþó§| ¶ ƒžñ¥/}éÆgžyæ‚ý÷ß­Ÿ¡§¸å½¢K†ò™­³€Ö`Äê _MûD—ä÷×e¥ÿ!TÖcG$�=ºeÑ¢EŸ˜?þG�õŽFŽW-Êårû±Çû?q§HÖ BˆLJi´Ö†ì±Øëœýw�Ÿs›7XsjÞmA†Læº*ú¯ï"Ë2‘e™«j´žG-æ‰m:†¡«|âœ(ã$ ÅnŽõâ#¿Ée£¼5BP±ÿ¨²±¢ºr¼D�:�°Uôϩš_€ÖäÚuj’ãýº»€½® Cžwâ×z%/ˆØ´hØF¤ånþì%pÒµÃÄ·îÙèÃib°qÍ+pÃi_‚5+V5úPšØH*Ÿ•ÔY Ú|Ÿç7&·¦ìË`ËOµ,ȶAdYÆä®#y•R2Š")¥te®9O+%È,ËdÇ2Ë2�ÔŒˆ_šü*¹ôVTó;/Ô!Q¹½°yI©Æjk !ò† Fäþ•ùn’šèP`A •ºû„×Tå÷ÂS“ò÷«úøÉVÿ¬µ’$ñOÎ/Z“—¾b ƒ­@Ðÿå)ÂZ+â8®*•"˜È£S!¢>|x�6X«+ðý} = Cˆ¢À)çüg¾ xê!cDÇξAäM<,“@J)[, �ÝÿbÕªUåSO=õ‚[o½õGaÖMUZH)Ã7½éMÇßÿýïì±ÇnÿêW¿z×]wݵVPé#T”SŽè�RÚ PäJD4Æ`†È‰2?ˆâ{�ïq¯ZB!„1FнZe?@óŽ{îˆd“ wÝu×hÞ¼yo;à€;vìAaí©ñš={ö…{î¹çƒÿøÇ?61AHD”àÏŸ|ÎT¶‰ž:q‹‡Ï{Ö…1J¥Òö8D H)%ûǪR©$€3 F'B�™$‰ßÔŠ-%TR)%i~v y’$ñ›7)cLÃæaî Oó,—Ä bM~–Î Ñ$IbMÞð�1­RÊA`IíÅ/a­I’zB«ò&9üLó¡`íü ž ‘†þub›‘e™[3�:…óýù}@„p–e8gΜ«.\ø��Žé‰1~=Ìš5ëÌ+®¸âÙ .¸à´þI!„LÓTaÅÓÒšm€lk¤”6 CçKže™$å�Bˆ,ˬÂ0´"/ù·2÷²­5–J%aòfuuÝkñ5õÉÄ 0Š"4Æ@¹\FDçà PñP¶ˆh¯¼òʧO9å”Lä ††bß}÷ýøŠ+f\}õÕ×Ï›7o ]•¦)ûÔÚ$IPaiÎEÚŸ`’$¼Éå²4È|î6¯Z±’숬µfÈ�!0uêT¹xñâÍs¼¿@"·,=äQš$ ²> Ã.›äJ^Rjó¸ O^k-’¯ªKŽ��½x�—öæÍ›Ó£Ž:ê’»ï¾{Z±Xì5öB1}úô¹>øàK—.½ëª«®úÙm·ÝöbÇ–òÀhó›Ó*¥¬Öù…ˆX.—1MSg•¦©Û·{„¥‚€çðöß¼¸&É:oø¥fΜ9hÞ¼yÜ{ï½ç …^µ7°Ö¦óçÏ¿ðþûïŒR*B˜,Ë Ï1RJ›¦©IÓ”rˆtß»—þ>$˲m™P8ÑZeÏ4ÏCue£ ¹L&Iâš°ú±O¡P�ˆ(K¥’BÈ––I{lÉj` ‚ª’¹æ¶qÜ0‹›Ûµð\!â8v!Ž ))dhþñøþ>’¯Ÿ5ÆXðÖUZGòyLc,ï“ÈÃQ�È¢CÑtû¢spÇÌTšì¸2¬t gæÞeˆNœràÙâ'tÿTv.è0€�\|6ìóÿ¶¹Ñs À+«Và §}^m_ÓèCib;P6é#óŸ}àT­ub­M1EÄÄZ›cRcLFÙb£µ¶RJ›e™¥ ‚ôYøD—K)•qVÚ'jyèI"^\we& Œ1ŠdŸTàL¬”¹Ï#C:4š;wî„}÷Ýwò¤I“&Ž9rÂСC' 0`—FŒ‰µ65Ƥ[VªÔ_çûýè•$oíûžª³G°qãÆg† r<$ˆ˜J)“(Š)eÇqš¦iyP`ZZZlE6Ë2K�Ú¼‰Úk>¿°2‘SC¶ ò›”Y–É T±XTˆ¨ã8æòw·GºæškÞ|ÆgÜØ“c´­@DÓÞÞþÀ‚ ~uÖYg-îèèÈ€‚N"ÑPæ]Í‘½ìxÃm©q‰ —_A{I@D‘;º€#ƘðÈHöo gÍš5èŒ3ÎØwß}÷�5zôèY>ºlÙ²¦M›ö-H B¤�‰\Efð�LÚk¯½&�?~Òˆ#& :tBEƒ1Îâ{° IDAT¥RiݺuëV®Y³fåÊ•+W<úè£ÏÞ~ûíÏ=÷Üs�Zk†ˆBE‘UJYÌ•ó˜e™e‚WJi …J)Œ¹W¶K`Ðu³Zk+„@ 8·h’Æó½OæòúÆ„?è óT¾—©¯‚Õìo.¥tª­�}ìcãn¼ñÆyA1ãøÕïÿûón»í¶§~øá �c,ïBãðF)eÃ0´J©ü‡Œ1^•ƒBX“”kP™$‰ED, ¨”²år¹!ä$Â65Ez-Ð\Î*kÃPFQäJ­YmÕ¶NáºqãÆµµµíQ�c©ÚÛÛÿzË-·Ü:oÞ¼§7mÚä^¨ø¿[­5 $»EVÎ2‘îpÜqÇ ùÈG>2eÚ´iSFŒ1µ­­mj¡P˜ºbÅŠoLžÐuŽ¢ÈH)mÇÆc´ÖHÒõfßz”R¢É›±oõ:²3­œ4“ÌA@¾×TA¸F‘¶ÒœÊùØÎ›7o�‹.ºè¹��5{ØÞÞ~ÿ�wÞyÇ…^øÏr¹œY‚!l®£µËå27våD �««úà·µVtvvºdUÛ �qKD”ŸýìgÇŸvÚiGMš4iŽRªÐèÁØ.\xù»ßýîŸfY–ZkS‘7X˲,ˤ”Y±X4J)S.—M’$n>§D…¥9›ok€m�×Üþ 2ïÓ×%Ïÿ¼�U�d5/Ý£ÒZ+Ùr¨–àåD+¯éä=ë<{µÖú#ùÈèw½ë]“§N�:qôèч>aРAãdn×У@D³~ýú^yå••«W¯^±lÙ²÷Þ{ﳿøÅ/V[k3$‹2D´Zk †’uòkbiÉûJnNìÖZWØ[™×y‰Æ8Ž‘®GÆëíéû:ºq !ùé:‚×ä]g�J¼@Ã%•�ž0ùÀ³‡E­M‚w;ñ®OïþÌÇAl½Ùr Æêe+áÆÓ¿›_YßèCib;Q2é#ßyê�§J)DL„©”2BdY–U¼¼àpŠú Á�pË�� ^Þtä{u©(óÏÙYVÚrÓ!.©QLø©Ë²,“mmmú“Ÿüänxà” &L1bĤÁƒOjmmKkJM¼alÚ´é™#FOI™”žá2kmj­uoE6›$‰MÓ”Õ·Îpk`ÏLRû c 7Ír›{*óv�âe®Lg¯S×Í‚{ï½÷ÇrÈÿôÄøtq¿ÜÞÞþ·'žxbñ~ðƒÅ ,X‡èTëÖP"¥”#/* ¨|;%ŠiÎ_O ƒˆ0yòäâ™gž9m¿ýöÛsܸq3†:£X,îÚ˜Q؈˜^z饺øâ‹—1¹ 9Ù›)¥Œ”2CR6JjÂGR¿ ŒãJ¥6Lpe•yº¦-œXj¨†yÙ"—~JÈ+ø£RJÉ TǼGw¿ä<`À9~üøÂܹs'î³Ï>SÆ�7yøðá“ 4±X,ŽjÐ�n °³³³}Æ +Ö®]ûÜóÏ?¿|Ñ¢EÏÞ|óÍ+×­[—Ék="×BNn¥”•RÈNVÎYp¥ÞTîËŠ"W®O‰ $eV !„ _a­Uq³·¯+ϲ¼‚@ …€@ìi½…/!"ê«®ºjÿ³Ï>ûü†�òVP*•^Z·nÝÒööö%Ï<óÌ3¿øÅ/žºë®»^¡Þ¼Lü%Ib²,ãž›"¹à¿P(­µ%ÂØ’«¥ÄˆöÌ…:ì·”RÂ#Â0„0 ‰˜¦©LÓ”ýÿÉ+Èšr«¢péÒ¥M™2åcÝ=Ž�$IÖµ··?úôÓO?úÈ#�,_ºtéúGydݲeËÊAà;ßùÎÖ½÷Þ{ðرcŽ=zÐðáÃ4h`kkëà–––Ammm»¶µµMÑZwY�³nݺ_6ì0ZkÃ[gg§MÓ”¯/RbņaˆZk×0Íæ=}¶z ½dó@{Ъ ²0 "r?¿Ùœó‹¾ï¾û>òíÝ}*$BˆDJ™j­!D–¦ijŒÉ ÚÀŸý�º“î5ðʈÙc€ÈVÎyJ1×(ÅZë‚ ÊPû]PU¡PÐ'Ÿ|ò¨C=tê„ ¦Ž1bÊ Aƒ&µ¶¶NìÅŠŠ&ú6mÚôÌÈ‘#�·Ö&Dè&ˆ˜ ¢#Ü$yõñÆÐx]–¥”¯›íçg„Ô©@/—à _qÁωR•^+ç…úÜsÏ}~âĉG÷ÄÕ›6mZ¾víÚ§×®]ûŠ+ž_¼xñ ·ÞzkûË/¿œŠŠ¿[X8{[mƒ!ŠÅ¢|ßûÞ7læÌ™£&Ož¼Ë.»ì2jÈ�!»´µµ�0`ÀèLìí Ÿõë×ÿuôèÑŸJ’$B¤”ÌÈÂ%˲Ì�‚ÍŠÜÞÃR³,•JP.—qÈ�!‚’nf²×#6|²Ö'wyv6 J)™e™B¨áÇŸúÔ§ÆÏœ9sê¸q㦌1bòÀ�'‹ÅÝ(ùÖo€ˆYggç 6lxvíڵϮ\¹rùC=´ìúë¯_µqãÆ””?†•¿&g�µ–- )‹ äÁ%�\žÏ%îÎ[ÔRƒ=®hÁ¼4W异bßRG>…a‹E�ˆAgg'«wÐmmmÑ»ßýîQo}ë[ÇLš4iÔèÑ£wyûÛß~HKKËàÆ�êCÇ/oذaÉË/¿üôsÏ=÷ôïÿû§n»í¶Õùʸ±¦yÙ@N¨s‰µQJ¹ý•cfH…ǹ7B¾Q(¥„µ–›²U†¤‹&è]{/ü÷ÿ÷´K.¹äçÝ=Žž„µ6�ËíFÇË‹ÅâBˆLQ£+!DDZa‡Ÿ5""­”¹ŒZäêø­^ö¶6WÍ�¦© {·ÖBN¸IRÈ+² qÞãü¬YêûðüóÏ_:vìØ÷wçœ{ˆh7lØð̺uëžûÏþ³rùòå+î»ï¾·ß~ûš8Ž ¼¼fÄqìì¾”R"1sæÌüà'î¹çžwÝu׉Æ ›0dÈ�7õ¦¦i¯‡ŽŽŽç:è �?þøãƒ È¢(J…Y¹\β,ËD^5`¬µ™ÍoV†" qüÄ3z~ÛoxþàD4+ýy}O½Kü¬RJq£Bϯš,�j×iyØa‡ :ꨣ¦LŸ>}Ú¨Q£&2dr[[Ûä R-³#‘¦é†Í›7?·~ýúgÛÛÛ—/Y²dÙ�wÞ¹üÞ{ï]Ov2†+>ÐkTlŒ1I’¸$,Ï+¼Ÿ¢ „ÜîÁU#Ðÿì³qùë¡./ –36ÖZK­µ"ŸÅ¥P1W B„ŸœvðÙà M‹†îb—)ãáÄ«¾CwmH¥r] �¸óòïÂs‹ÿ¯®nZ3ôe”MúÈ·ŸXp*$RÊDJ™*¥¨"xi3ÁW«”B*èã/zeÁ@¥G´YáÒ8EYj¹'£kê#¥Ô§œrÊÈ9sæì>a„iÆ ›ÖÖÖ6¥µµuŠRªÏl&›è›Ø´iÓ3Æ ;Þ“ b ¹UC¤¨Bd\*ÏåØl5`ŒAn¾ñzÿ‡º‚sy¶“ŸrâÛVš¹DäŠJ¥”ÒÖZ�¦)“Á˜1c O>ùäõƒ~ëœ"Ú,Ë6fYV2Æ”²,ë̲¬„ˆ¨µŽ”R‘Rª ¥Œ”R¥T(¥,ö‚ñ�øììÙ³'¥Ì´Ö©R*SJe@"Ùù°Å !�üÞ‘s™-@~ŸA Œ1"IW=�TAž7xMNœ{î¹cgΜ¹Çرc§ :tZ[[Û”b±8‘H©�ÖÚ¸³³ó¹M›6-_·nÝÒU«V-¹ï¾ûž¹æškÚã8N™(ð¦LöÈ•sL )÷Ùz„=wYÍå�J)†¡ÆÜÓ80ƨDÇsÌ.3gÎ?vìØÝ†>vРA»¶µµ�0`À¨b±8¢?<Œ,ËÖoÞ¼ùéW_}õ©ööö'xà�]|ñÅ+yÌIéîz*¹5d­�˜—æZ*½Å `óæÍÝÞoYJ)As»¹ P¦i*µÖ*Š"eŒQqkcL „´ÖA"†«V­ºnذat{ úì¬Y³Þ²páÂÍRÊŒK²¹Ú ˆ¼�¢Èj­¹ÒÃ’å †aˆ¥Ré5¯a¡P"÷Je/væ"$U˜Iª0“Y–i¶D!‚W™¼Y™FÄ`ÆŒ­=ôÐõƒ zsO ÎŽæ¶�ƘÎ,Ë:Ò4í̲¬$ó™E­u‹ÖºUkÝ¢”êÓª°4M×_|ñÅŸ¼üòË—sâ”’§)©vÁDZͲ¬J|C9ÙŒX©&Ú¦¹ƒ÷}¾&Ï9 ®ªQ¤Èe«ºª"êý÷ßÀ§?ýéi»ï¾ûô]vÙeÚ Aƒ¦¶¶¶N Ãpd½Ç­¯!I’5Ë7lذlÍš5K—,Y²äæ›o^úÀlFÄŒ|·F@�u)}QaµÖÀ~ՈدmêBðzäŠ^Y(”1F–Ëee­ÕT¶Âê×¹ûS»Ï:{x¡­IðÖ­ƒÂñW~&¾õM�>”&j°yÝxñ©e°êÉeðï'—Á¿Ÿ\ ›×mhôa5ñQ6é#׸�É])¥#x�1–K ¡ÒX„ý(k=Š]ɸ͛IR®)J"8rWJ©•RêþûÏ>ûœEÑ4)e¯/áìM°Ön*—ËKï»ï¾¯yä‘'‚×Y2yÖ¬$ER‡Pƒ6ÈÅ/þs¯r—¥ƒ PóæÍ›øÉO~ò²0 w ÃpŒ"jði7ÖÚM¥Ré©/ù˧ûÛß^¹—¯BVòR…Em¥…#x;::êµß¤Àãli­•I’p3$E–ÎßU)„a bxë­·2wîÜ«ët,} ?ýéO?öñ�|1¤YnŽÉûä ˆà%Ežå )á1ÔZÆ ^ó:²u­­\]&½=*[…I¿b†^�eûñêÙ³g½óÎ;ç0`ÚŽ•&êcLÇÕW_ýéóÏ?ÿ  *,¨TceaoOgâ8¶išZRn:E'«œ)S´Íä.@†‚šO ®Ø¨!x%[ñdY梀^»vímmm„a¸Ô‡“ÛY€I’¬Ú¼yó߆~ž ¾LôRâÕ)¶I½�lC¶a�$IŸ�Ë_uíîI×ÙZ ‚J¹C7—ãq©@ó~®:Öo„ù§|ÞuòÑpèÉ4¼yk„CÁôwî Óß¹/äeEþ³þýä2xá_Kàéûÿ/¯üwƒ�²‰×ÚœååùMxeÙ5%Æîçû2ØëLJÉå¦4qcÞ\Í5gÀÜÓË5å3fÌÐÖÖÖ�Q½ÒD/?‡B‚TÞU¨”Øw�ŸiVJnÒ4Å ý-n¸äwýfÕ@�ZRbRþùͳà/ùËú}èC§ÿò—¿¼¾­­m÷: G=Œ Fß|óÍgLš4iž©4äúˆtCT-|¿R³#èììt�å)�t^ÏPÝà…=(•ÖZ‹E5bĈIÅbqŸ:Ý~)e[KKËÛFŽ9£gZÚJ×uäq¹_7«öù÷Ýü#¥DÌW5¯5jÔж¶¶ƒyž½ RʶÖÖÖýÇŒ3ÐZ»–¬¸äE‰’š{[k¹ìVXk_×/}[ *Í—è­pÍô²,ÃR©äˆe!„kÚGÍà̉'žøÐœ9sþ],ÇÖë˜ú vß}÷½­µ��bÝBNj!äó""&IÂÉ,!É»š½Æã8~ÝÿaŒ�  C0Æ`Çrâ ·ì°J)‚@ ¢MÓTP’Æ%`ùoÝwß}¯žz꩟¹á†n(‹ãw̨4Ñ]Xkã›o¾ù,"w3ïåD6dû⦜â甽îižFØ.r—mø¾¥8 ò|TnÛ ò§|¯¹õÔÀ� ‚ ×ô èCaŽ8p`(„�¤ÌÇ4MÑc©ZFh­@–eQJ J)Vý÷íàüuP—2ˆüÀÈózj¨‘ÿCú9~ßD}a­…?}ïv¸öøó`õÒ�>œ&¶! 5Þ4û0眓àü_^çþì;pØiÇÁ.“{½§ýN‰Z¢ÖzÞ‘>x~c‰»ž<Ôº‚Ï�ÏË›»ýîà@}$_R!¹l®‰& ÞØQ€¾ü¤ ïSºz¾ßh“é~ŸUIô²@Á-Tšk9J «!,éŸÿüçW�>úèÓ7oÞ¼t» ‰†bÔ¨Q=à€Bc p#(~ñ½hò<Ëb ÎõîGçAÉÁ#�RJ�ðÊBûîÔK�e™[× ��„ õ�¯�]XJû¿”ê¤Þ¨óêÍà2{ÞS@¥+—CWu«¨$ó˜h¯ü5ÁŸÏ­µì‹@j1Èçwîôn:;;Ó'žxâ'õ:–¾„‘#GîIä.[¹g…>:ªPàDXk¹YÞk‚÷×A0© �'\ò rÂ×J)Ù¿ÙùjcuYwvç�wþ碋.:=Žã—vÈ 4Ñ- bö³Ÿýì‚SN9å¨!v…×LÍZkÓ45išºÊ"wÙž�ÿ’—ýv‘}發™¦»‰ð"Ïù�Pk_Mt›ºÞàUÈyk€³oñZ¾X©?¢.7Nü2Æ@¹\c P'`îü[¥pk’¼;«—®€kŽ;þô½ÛÁ�꣉Þ�]&�ƒÃN=ÎýÙwà¼_|Þ}Æñ0rân�>¬&€X�èô7û>ÑËßc… 'ºú2ÁË G/p­° 9±Ë�Û…BA ´ÖR¡Ò4íÕ �šØy µ† \Ñ$I€¼uÝϯâ|âm›aóæKÀMUD¯Ì›Ù œ_5âÎÏ©�² ¼rì±Çž¶yóæe݇&ziš¾xË-·³páÂ2Tß°eòPäY–A’$[ܧäÑ+ˆ ` *E…BAj­eÇ2MÓæf»›@D�#±ÒÈIP ÏõÎw×Kò )¥É ¡èkÜt­y}º€1FEQ¤‚ �"Ï‚‰$I ŽcAs¸#Uü *ŽEë~ÞH¡‹ì nkh-½òáyý /ü•1¦T·ê#4hÐ âEáN”ð¨"À¸j…^<Ÿ½îÿÀ@ͱœ*“J°9™Ê%Ú6 Cg !ò2î 2!D†¹m6þü/½ôÒÓÓ4]·cG¨‰m„ýÃþðß'œpÂRJ¶ep$¯ÂA`Ã0d2�”ÿab†¬ÞOÍÛ­¼‘&”Ëe(•J"I@D†¡ÐZ»j›,˪z0ÐKm�€ ‰*)%÷üb»*AÊja­uë-@ÏÆq,*.ýÝfü‡ÃWðú¤[2øe�îwº{MlÖ¸çºÛà;?^Z¶²Ñ‡ÓÄ6`äÄÝàÐS> çþü;ð©ë¾ÓÞñ¶FÒN�.¬¯Y�à+xû2|[oî®ò^§Í¹ MŒS8‘ÿ`M4µjHVzmíù¬ÇóKeÜ•¾ÜÙš=#m.ØDj†½ZEî-–I)³»ï¾{í 'œpjGGdzÛ}PMô(:;;ÿyÁÌ=õÔS— ³]�¼µàû”Åœ@ä2P~¯µÙëJ@±ÒtM5çáîÃz�ì *…ÖZP‚“í1œ ‘ÊÆ¹9—³Ï k!•R’¡MïV�e™S;k­eì©Ê=X1]u¿Ö¼¾­Àü‚:›Úùó:«-Ù¬°Š—½æ/ùˆU«Vý¦.Ô‡P,'¼ímokõØüÜÈ0 E†œø¨RB²¬«kÛÊå2òïðÚJü’Z“Ö(¥äÈ®�ŸOô"ùòýë_ö›ßüæY–mÚ‘cÔÄÇý÷ßÿ•¹sç.ð•z•Nµ*^_Qï<ºòç•lUœP§;¨±úò“N΃�× ‚«v„& V¸¤+)w%'¿½d'ýÜõéï"Óº¼¼èÕªÛ²,ƒR©q»ÉÚ/[l¢gÐþÌsNÍ›ÆI£§‰m€¦°|ò;Ãy?ÿ.ì÷á#@‡;u³ë†@8ETÍa¾Ç¸ŸÐò¯Û­ì `2¡¶¨•77¤ªI’cŒI›h¢á`ÏL­5DQÄ›û-Y–±¨.{öf£y£(‚0 Qæ ´jP#¥4ZkC 0à ¹8 ùýï¿ö¤“Núô† ïÖ�5±Ã±nݺ³gÏþøµ×^»ÆW”½Æ Üš�µ‚ò’äýµE‹E†!+âÀ#Êå²HÓTj­Y5ÔD7�¦©¯’A²Ápö @ÁºRJ‹EÑÚÚ ÅbÑ5‚â’P­µ(‹"I„Vóút�$Iœ§†¢µµU &ÍݘsÜÉ{NŠÔ ¼ÿñÖ„-|´�”¢\…‘$‰MÓÔ ¢‘Rš›nºé6DÜÙÊ)ågœ±)ß]uA†¢X,ºk ^O‡®ª}ßÈ ‚ pjkJ€¡ÖšÕš–rlLòZ¥”³Cy¿Lk�@öùÏþ©‹/¾øÄr¹Ül�Ò@XkãßýîwΞ=ûHMqÃ0Ì¢(Ê´ÖŽ GD“e™MÓÔBÅþ Ó4Å$I‘“¤^¿[›¼Zñ­¿�$‰@Dàù¾P(°ÝŒ „Uÿf{T-#¹‚4 C—ìÖZC¡Pä& ¸²£+ÁVC]6>�Á +yk™òþ¢jëk0Y÷\w|ãÈOÃâ;ï»ÈÓûFNÚ >ü¥3á¿~{¼íÈÙ�>œ�ñç|}õ®§XIýë_¯Ùwß}Oyá…îìîØ4±c°bÅŠ÷ÜsÏsyä‘NÌ»:;@¨(ж4ù^ôï?^Oü{“K Y! ^U…WQ!HÙÒ£˜« Y¹ËŠ,þž”RPÒHxÕ¾Uƒ¨¹\šÞôªß Ø÷˜ÆÙ�%Tš úó·#zÉ6¸ÁN޽¸µŠØå+™@K ˜+®¸bÅÓO?=¿ÇÓ—°÷Þ{ï)DnÏàY2øÊü£îšnïzË$/«3kÈ]jº¹�†%rÐÒË÷½ÏˆŒÏæÍ›·üØc�=aýúõÿ¨Çx4±mH’díµ×^{ò‘G¹€,«2km™”Ò�;“RrrÅò~ÊKž£1Ó4åýœ»éêÙh‹ ~ß)ðüÁ�Ö¶õ!Ë’&ºZg¥?®2o¾ l×àǪ³¿â„8ôSu·o.¿FPù+Ú|åJm³5·ê^⤉mÄÆ5¯ÀÏ/ù6\uôgá©ûní}mÇÂQ—œŸ¹å »çÔFÎN„вÏ#:�TS[¸Bˆ¢Z[[¡¥¥¢(jÌ�×~©œÖŠÅ" …ªÀŠKP©¹¾þƦ‰& N´°:RJ‰´GÿùõU’œ¸îÁÇ1—‹ˆˆJ)1MS›¦)Ú\bÌØM¹\¶årÙdYf ÓZgRÊÌ“eY–­X±¢s÷Ýw¿tÑ¢E_üQL½I’¼tÇwœÝèÃib;°Û^Óá3·\ ùòYÐ:dP£§Ÿ£’È"Ó%°*�|·6×õøç…•ÎÕü †ÐmÎïMô2äÒ*òO$"—É]V{T~ðuµœ—W�#¸'ôº¨èhb;Á‹�«ßï‹?g�ä�ÉA .¼ZkÄ@N�¥ð>ñ[5LõÅÊÇž‚ë>qÜzÞeÐþÌs�>œ&¶B Ø÷ƒ‡Ã¿º<îÈFN?†p‹w†@ žª@Î/ÏADˆã::: ³³8sÛá[QXkÝùø¾ê~�å®;C§Ò&z?è9EêtˆˆZkd…•í9µEÇîÞ­ÉkŒá�e–ËeL’¬µ(„@Ra†6 CE‘�¢Èh­-¸€òf0)"fƘÔ“ž|òÉ»à‚ >¶yóæ%Ý>Ð&¶iš¾z×]w�7~üø/>øàƒë[ZZ²b±h¢(2RJk­5qÛr¹l­µU䮵–¹ûÃ'¯üûÆŸg�1�¦)+D»¼G©4º¹á®˜dçŽéž×ÍY–UUÔü‚ª\ØRÃ'~›×¨ cD’$�¦©‹5y¾® Úýf°ü=_Ú]Pb¬µ¨”ÂB¡AäD°*´¥¥Å†ah�16Ë2c­5J)S,M±XÌ.ºè¢'.\8¯nÖËQ,'ì½÷Þ-¥R J¥cª”ºQ‰(Šï›Iy×í¾qCÇ�$ Ò Zk Ã;;;±T*Yk-'Ü ùñº†k"·GJ¥”™”25Æ$oyË[¾÷‡?üῌ1�u &¶ÀòåËo�>}ú9ÿûß70±Ë•KlÏ9ÙkÓ45išZª’Á(Š,Û_�ÏM]õ%¯µõ€oÉà¯ËI’T5GõUišB¹\®ëü´3ƒªf«t¹jÉ_'x­M’Äí™ú;Ù[×ô&7ÛáE âÉÛU�ä—º4ÑX<ùçEðícφù§~–<ôH¿¾éû#Šm­ðþ O�O|û ØÖÚèÃé—ð3³„ûA^ÈyγֺE¾/—ÈúçÅnW]Ý�‚º«Âh¢‰zY–KjÝU�+ÁED¬}fëu3YGAc˜àR_Kå¾Ü „K�ÉÍå2 63DL‘JH1�?þªw¼ã'<ýôÓ7îL ±FcõêÕ8î¸ãæyä‘÷@¦”Ê´ÖFJ™±rÏZk²,³Y–Yº«š­‘úÏW”W‰"ø½¿/óož¥C•˜ççæ<Ü}°P… D?± °¥]]WÞÞµ×ÁÛ747Ü]@ä厘ñÕr[K¼íH/ïk<ßln®æže¶j€ÜCÝj­ ÏRJ#¥Ì9ä�;–/_~K]®÷Bžyæ™Óù™á 8¾6µ½,¶Tco¼ê^wyOŠˆhyý¥~§¶f_W"|3‘ûò¦�¾©”2�3gÎÎ<óÌ�¬[·îá:ŒO„8ŽWÿøÇ?>u¯½öºrãÆ�1É.„H‘ª—øú²Ôàu¬RʲRò5ÀóÌö¦õBWä-7ée‘c­>seML}àÅ�.ËU¶µó‡ÏSöõØüõP^ö·àšá/È]m0›ÏÞ‡gÿö8Üvá×àÁþªIòöAì~ÐÛá³?º ÆLŸÔèCéWP)Åñ<à+xxá¨5ÚçŦ¯¢«rH{òFQ´E ÛLà5Ñ‹€�È$ZÇØÑÑ�¤ã¦,]úiד( ÿ/n´äˆI’Ø$I0Žc›¦©µy§ˆÚÀ³Jid­M“$Éžz꩎=÷ÜóšË.»ìØ�7>Q·ƒnb ¬_¿þÑk®¹æã'NüÜo~ó›5~˜4M3Rk­!²Þ@n½aIÁmã8F)% lmm…ÖÖVˆ¢È‘¼iš"l‘Lä5%Š"(‹Î�•£ j6äü}›Ø~ ¢Sq²�U‡~ ÎD¯ƒžrŒKXKÖ7Ñ5<"•_~G®ªä¿÷”¡;¤÷A†Ç1z*04Æ@’$ØÑÑaÓ4Å0 mKK‹iii±J)C¾ê™1&CÄì-oyË·Ö¬Yó§º`/Ä›ßüæ\&Ï×1MS $''¸œõ™=·ÖZÔZûªJ¤u˜Ø Ã[ZZ0kŒ±Æ«µ6…BÁ´´´˜(Š2!Û¤ÖÚL)•j­Ó믿~Õ¨Q£NðÁ¿ÚTóv+W®¼ãÐC=êSŸúÔBÈ õT‘zÍe3¥T†¡áÊ&^W­µ6I[*•¸2ÊòœËÍöH R÷I—çwþÜ'w9ä{˜¿ÆsY&{”lEI�Í …²rEUñ¸g›ÑTð¾jÎO¬])Ü$ÞìÁÓk0á-3à#Ÿ _üã­pÐÇ?Ø$gú(†Ž§ÿà°ïkô¡ô+øªÝ®<>ê/$}ý9òÊHý’SäÆ5þiH™S¿ƒmM4¾ÿ©t‘EH¥¿l¤éÅî¨& Y–¡çáÍ*0 r}×xÍcÑ÷rdeXæ>@¶ �J)Ó/ùËÏŒ?þć~øƘRÝO`'F©TzþÎ;ïc &I‚¬(¤J ÖOø bÖÑÑ‘ì³Ï>­\¹òŽºd/èQ£f€§¤äkÆ�O’y×¹Ûûç8ŽÑWÞÓš�Þsìš^2Áë'S¹zÆZë*h€ÖZ!D–¦irðÁßqÖYgµnݺEÛ?B;/Êårû­·Þzêĉ/[´hÑDt~»@{È•¼È+™ý’!÷·GD´Y–a’$˜$‰õ-�5-­—çn-|µ9€#kã?®Ôrs>«Œ›ks÷a¹ �*(üªÒ®âp�èÏo·ee p“3ûŽð€ùòg™eçMk�CÛð¡ð¶÷ û~à0>~×FNuB…0÷ËgÁ¸½¦Ã//ÿ.`ý,‡vJ €ó�ó<µ �ª÷àüxý®ç} ¬ÂVJ1±äÔž”Târb«µn^Ÿ.@Ï‘jFÉ J)ã±Ú†Ü†ß×›7oÆ(Šää{ǺG�“‡¥R éø„4�3V¯^]ž8qâW.\¸|ÿý÷¿HÑ/[º4hæ~¨HU ŽìâÊ·ZÔëÚeY†AŸt£5RXk‘ªd$]›$‰4ÆØ4Mý$�#ð‰KâyÖ"¢ý¿ÿû¿¾ÿýïŸ~÷ÝwhæÌ™çj­ÛêrðývÅŠ?ûèG?úíÅ‹o„¹òˆû¬NßQÇfŒA!„H’ÄyfY&¨û7¤iÊÏžED TÖGǤ‚ @&)ðQ´áE ¨m–eöä“O^ˆˆ»öÚkßòáøäaƽcG�SÀúõëÿyÿý÷ÿðÄOüó¦M›2­µ ÃÐP©¾!åþ–|‘ùkpXV®Ñ½AXOií«qS ž[k�‡­Bº*='R×%ؘD«µ¶M €îƒ®™MÓÔú¥ù>1Åy#òø Å&+ô™|'r‰‰.N4Q¥—Í»ò[ṈBŽ•–aºø“ˤã8î©Cõm",äâ)&rÅÀBä�¡\ ·§(ÓO>yÑc�=vü%—\rUKKËäž:ð‚<ÿüówÿë_ÿú05š´dS„…BµÖ˜$ $IÂÕ`n�]¯˜%MSÔZsåzŠ^!*–DÎ= gÇâFŠžqôìóÏ(¥,"ª… ®ó›ßü³gϾý[ßúÖñÓ§O?N)Õì| €«W¯¾gþüùß»ì²Ë–c\£4 5ȽêŸÌBØ(Ь‚­PXµ‹lwU³_ë‘uÏOÀr’ÏZËUW\±�tÜœ¬ò ê&º!„ ‚ùÅ믱ü¼{ëpU_ƒ¾›¿êBðÖ ÿ¦÷3q;›Lº‘�JÁ^‡û~Øm¯éýBI¸-È’^ya5¼üü‹ðòÊÃË+_„Mk×åäíf"s;J�t–º}?†-…œnm�€h2FM�»î1Æì>†ŒÙ°ñßûˆƒ@H?þÜ7š$o�àÛ2T{Õò«? ¶2ƒØ|&Øóˆƒ/G(!bÓ¢¡‰^Qñ;c5,l¬Âs/&Ð8xë‰ã£M¨ ’‚ƒOáùòyp ôü9å;ò`G‘Í„0Ÿ·9í´Óþ~Úi§=võÕW¿éè£�>yäÈ‘³zâûÑþç?ÿùÓÏþóžuÖY�sFÍí¬ÖÚinXõÅÁ¨ßH *ªYŒ³=ˆS˜°r„½X¹Ú­«.ßišbEÂM0AáyÎ9•�KêßcƒØOA¶~€S�y/RìòÂϲ§ö´ü»¿ÓTXw Jjù>ä]޹ð*.˜d!ÑŽ‚ß, ;^ò�‰^Vò¯:; ˆˆxíµ×®üÛßþvÂOúÓKwÙe—Ù;ìà€ &Œy™½[s™üòûøp2й„zÆ+Y–¡”’¯•ß°å†ïÏióÃ�–¿žÚ�×VVŽZ!„¢gÜZkÕÿøÇu{íµ×wÞóž÷üèÊ+¯<~êÔ©Ç)¥Šu;™>„5kÖüéÆo¼þ‹_üâR^C¡bÉà”¹�¯—ÎŽh ãyò½�UJ±ˆd‹9€ß{Õ;~Ò†îoAûȪ„ƒ÷4¯õÔaöW íq ísáOc�þžŠ«hÈC½qGݨ ÁË0gÞøUÛ•š€ÊµÙcmÇ uÈ Øÿ#ï�ŽšG môáìP "l\ó ‘¸/ÂÚ•ÿ†—ŸÖ>ÿ"¼Ú¾¦Çˆ¶¤³ Ig6Â+îkOÿe±û¼ØÖ cvÏÉÞœô�ÃÇïÚcÊß½'ü迾ÞoÈÇžVšklñ=&†X±ËÖ¾NöÖf§ÉOÐ4¤ô7ì–•7A4‰…&zÐSŒ¸€�³-ÿ™­§Šèµ@%÷‚TÃUþaÔ¼G ¢$∿b/Aä7l’TÖÌf•–IIÄ”9ûì³ÿyÎ9çœ}饗N;úè£?0nܸ#Â0¾ÃO´bãÆ�O.[¶ìžë¯¿~Á 7ÜÐ^\)¥ÕZÛ  s~ ™Ê+%\óV‚qc5êžÅÀk¨yHi‚@»fQ©ž�ßßHÇ%kBM…h@^؆“E@ëT«°œ÷#½\ Ê„„tº{& Ãþin'H­g½{Ù%H¼R`döOßÑÁ{–eØÚÚê:(Ñqðœìª-èûµýhœé,“Bl˳hÑ¢ »îºëyßûÞ÷Þö¡}èŒ!C†ì»COdcýúõ÷Ü{ï½ß9æ˜c¥ûß%»„HÍD�‡5+ÝYœºaÝ‹/Á¿ŸXkV¬ÊIÜ•/ÂËÏ¿i¹ÇJ±¶¥MðìâÇáÙÅ�»¯…ÆLŸ»î1f²LzûÞ;”ðÝëðwÂáϷÂïܺÃþG„€ YË$îÖæ/þχ©O+ç}…2Ÿ»—9H!«BJ)€”mÍÀµ‰Þ ¢]s¬QßyJ]ÜÊ¡7 ",|5˜ @XppŒˆr’O@E!æÎCÔø�)ɘü#ÛI�¶¼ä’Kž¾ä’K–¶¶¶~ëÚk¯Ýïàƒþ£G�>´¿—•nÚ´é©eË–ÝsóÍ7ÿñ»ßýû¢öe Ú™ 'Ÿìs« YN„‚«r ¥®óæó ½æ†ØOz¤� ½´SŸû÷Æ»¿›ØN�o²»¼WAç'ˆ8 ô’6H÷™€œüµB†a“€ïQôÿÛ{×pË®²\ðcι֪ª wT‚"rQQÁ"•ÞŽÒx¤á´"­�[¡Ûní~ll}xä@ëÓ¢xh[�<A@ŽÜ!�HHB€rá*©Tíu™s|ýc~ïXï{îª${ïÚuùÞ'+{ÕšsŽ9®ßãïøÆ´«ëº³…’A;ƒ�"ÛˆhÉþÍwGŽуRè‚<\³†½ÍŒÍˆX}aÂ3ƨ)¥ôK¿ôK{Á ^ðK¯ýësÑEýÊÙgŸý¨ÝNÏNAUÓ׿þõ·þÍßüÍŸ¾øÅ/þlÛ¶-ÊþÈ�äÓ¶m¡zÌþª‹1玗£•M(~ ²îÿUÂûÁߦõnŸ$"]éí}ÄB`!š¢7Å»®ëª·¿ýí_{ÛÛÞöyÓoÿöo?èYÏzÖÓô ]4�Nï³ÓéÛ+¤”7ß|ó{ß÷¾÷½õ…/|áG>ÜN§ÓNl> k?ºP¯v!„dî-²]ÅæY�m»®Ðî±ûEúLpzÂû:Ø"Z±:DýBŠ=às½kÛ6ˆ»hØ6lLÛ¥”Õ±÷Pñ‚§Ä\VNãüß6Á UUÉr¹”ù|ž;Ø1v\MÙ›¼Žm#Æ({Òcåq?ÿt¹à‘ßqJ“IŒv¹”®¼V®»ì³rÝ'¯�ë.»Rn¿åô:ƒ`5_Èu—])×]v¥|ð¯ß*Ï»»<âÇ/�¼è rÿïø¶])Ë'þâÏÉ—?}µ\ñ¾�ìxا3x÷p,Æ ZØ2x*º¬T "Ù'a&“ÌÇŠJ!„0ŸÏçËåòjz™—·ÓolõûñÀ“ƒ»rÝqrcŒ¬*~Sj«B�åry¶¶m‹íõ™åÉe]×Ù·ã^¬ðÃ'¯H¿�l2™Àïu0Õ“Ïðñ ©¨k_�QÍuC!šª>¶mÛÅ«étUµ»ýöÛÛg?ûÙï¯ëúƒ{ØÃ~ï¯xÅãùÈG^tî¹ç>ætØZªª«Ûn»íŠÏþóï{ýë_ÿO¯~õ«¯·ú1 tùß6éÄ¡I�Þ”…q}x³r=³N65Ò^êºÎRDïxñÇn8«� òA_P°˜ j¡®ªª°\.¿9f‡é¯ˆe}G]<Ùíei×·²óÇ »v£ü»X,n#'Ĉ~Y×�L&c”Åb‘ö1‚HDD¸NÈš”L)¥°±±±q¬òù>HÒ�ʨ½òcð#—ç5ª\Û¶‹ÉdÒ©jßǼ`BÈy ÷6]×éÑ£GOXÂ>¬³Ù,˜ªê½’¸�ÁF[•¦i°#ŒçRXoóO]×¥ç<ç9žN§{ík_ûý]tѯÜínw{Ä KÜ�€ª.o½õÖKo¸á†÷¿ñ�o|Ç+_ùÊëSJ-)3;¸º±~X‰ô͇Ÿ±ân—wÏhèW<3A×u]X.—ªý"«VU%v¶DÀÇžÅ.Š`*ÒØu][p‘ªëºcŒUUEãz÷ò—¿üšßû½ßûû÷ïÿã?þã?~ôŸøÄ§ßûÞ÷þÁSqMJiyèСO~êSŸzÇK_úÒw}ä#9,fcŒ©m[¨ð3™+fGSJðiž¬¿JmÛ&,f‹ÙHã‹ù²;`TÚ¶Íõf7އÕj¥&j)]5Àmi&¦­}‡ªªBÓ4¡mÛn¹\~^U7ìÙMý±ý{“�¿«ó£ÝÂÍ«†ÛzÑ,_/ÇömÛ~UDºår™Çd!„´X,r?1™Lr¿Œ3ì9éÇ5ÛÁ¶+ÈÁƒƒç°\.Ã|>)¥h«Z1„P©j�RjBu¡‰1NbŒ™<û[û¢ó¦g={ûI9ó°ÿìƒò˜Ÿù1ù�g\$çÜçž{�mãð7¾)×}òʞнìJ¹áÊÏI·j�ÿàiŠ{\pyäSž �|Êä¼ßކ=¿ýˆ¼æ^,_ÿÒ�;îéŠy·ºä5WüÓ/§”–!„¥ˆ¬Tu©ýIÈ«BcìBy ¯ØÄààäåSð[&¦4Ò:ªjhÛR¬ë:N§Ó*„Pµm»®«º®«D$V½cÐ*ö§�D©RJaµZEU 1ÆÐ4Mhš&Ø€-àÀ&Ú ˆ*UÔ1F©ëZ¦Ó©¨ªlllˆ‘*ùP|RJ²X,²Ò:¥„I…4M3ðÿÆnˆ€ªªd:�æƒ�º®“år™ý2c w,’™]Åe:�Š XäOUU2›Í$„�ý 6M#"’ HΛ�NhËáÀmðÂw¤ùÅù2 ".¤»sàžIDrZp?ÂäA0 !ÈÄvž`Ë&-ˆÊ‚Cì?7Opø•)V»c]Ò»®ë Àde¦†Òd2Ѫªt¹\BQ»Wí6L&“\þÖV¹ˆÉJÞªª‚ Û¶ )¥(k…o�^mªªªš¦‰"Ú¶­bŒq2™DU�‹Å"ªj¬ª*6M§Óièº.Îf³æ%/yÉ…�{ÜãýÀ>ðQçž{¦9g�òäc>ŸßpË-·|úÆoüÔ¥—^zù+_ùÊ«®»îºÅjµ‚šFÃfU.Ô5YéÈ�­MÔà_<«uQwŒ±( E²oGµú�m¤[úÜÝ €º;ˆ$VÎ!„Ðu]lÛ¶ !ÄÉd’mnÛ¶Õb±ˆf‹+éëEµÿþ¸X,¢‰‹B!¹mj+ IDATŒ¼�ÉdTû«`“D$·Wˆ<`GÑnÇÚ7ì ®±$EÍrk„gÇì ÛlõîºNbŒ2›Í4„ óù\A® Ù"øóáy2<½}p0êÆt:Õ‚Îçs5_Ÿ‚-)¥Ð¶m@?iåUIß.£ªVªZÅc]וˆTmÛF‰MÓTÖÿF„cDS0;�Î1û]$ƒ|glÕ_q9Q�û%‘ù|žûNÏ› G­¼§œw]—ŒÿËsí·nw!„LŠMàÛ¶…]OLªjšÍfÒ4�Îçs].—ì&ã„`ÿþýÁÈI¨ø ¢Ë¤ßI꺆ݭ‹E´öZ…ª®ë0nŠÚ˜Y™M®š¦©^õªW}ïcûØÇßï~÷ûþ<äD¦±ÄÑ£G¿póÍ7ðŸøÄ_ö²—}ô³ŸýìFè]t@²ƒ(ëºîlÁ©SÕn¹\⽄ÃcŒÉúüì§|>Ÿïj96M“}òšíÎämÓ4²oß¾�R óù<˜ßûl#cŒÑÚ_&xÍŽVv½ªë:¤þðáŠHàMŸ¦iâ‹_üâ žö´§}σüàï=ï¼ó=�Nïµ›i¿+H)-:tù�7ÞxÉ%—\òñ—½ìeŸ¾öÚkçBc0¡ÅRº(ë¦iÐnsûïR!Ùá²yWúÒ$cÔù|rñÚËùÿ˜SìU�]×ÅB¬ëº²OlÛ¶:zôhÕu]û„T6v«ìÞ\¿æóy‘Ð4Mˆ1f;SÚnŒ±¹Ÿæq7Ï`Ÿ­ŸÇN“|?úsØ|<ÏïÅ`ÿþýz1Ežñü ó6ıœ·4M£"y^“ËÜúµ1{²~!Õu�bŒ]¿ÖumÛv"’š¦ébŒùŒj»X,ê úKÏ);/?¶MðžuÖYÁÁ&ä!ôÛ+«ÜU×uuÛ¶M¡®ªª‘IJi¢ª“_|Èã_tÞÌ Þ;ƒsîsOyâsNýô'I3=uÝ0½õ°\ó¡OÈÕ¼T¾ð‰ÏÈ-_¾y¯£tÒâü‡}»<þÙ?#òãvLÕû•Ï]'¯ùoã”po±×`‚WD2Á+½/µUŒ±�N§]UU�u$™à­ëZ«ªÚõ�ênÂüF ¶MÓÈt: mÛ#¢Íc0PÁ¤5ªj !Tu]CÍP‰ ˆÑgØÄ7Ä�KU•år™4˜ˆôz¤6ðɃ& 0ÀÀà`íý  ¼“2 ¼ƒÈÐ…Åñ^±"ý€FDrü¡`Á¤¹|È' T8\\ÃÄ~+ ”å_µ]6 œA s~3ƒü`²…ó�ßâéÆ@’ Î3 ¤ÂW”ªHRnJImÀ§"’º®K«Õ*…ºÙl–bŒi¹\v«ÕªÃ¤BÈojè&ªºÞÚ…�ß^«ª |��³$¥4Xp±AWžxÚ$5Êš`©�lˆ¶Ñ^»®‹UU…}ûöꮣªÆÕjæóy´­„y"ú’—¼ä‚ÿñÿž .¸àág�uÖ÷ïßþ^©�V«Õ¡ù|~Ó‘#Gn¾õÖ[¯»êª«.Ó›Þô©‹/¾øÁ{‘|¢ò€È)«ë-£j çdß%®Wj§¿ã^’ƒ"Å„¤–•�ªªL&ÙØØ¸Kujß¾}Á7 (ƒMŽ"Rï2QCï�·J)�0в&xc]× wãt: !Øã@Äl¶»b6„­ÈºM3ᇠ�ˆl²?üm‹s°Åcd$ÛSØž4–v“̺® zfÇòVÍ4TÔbA6üö[>Hû…€¬â�¶%ÛžÑÔûÑV‘Þž[ýÌyŠr ýöíˆ9’ö 3yb/Ö†bUU1ô å‹ö�üÉeb¿ƒ¼É�¾Ä<Ê’¯#¿q/Â`‚ží<×z^i�RÑ¿"�ëºVUUS^éd2I!&þ°‡Ã—@u�Ô®hÏPô¢��h»}ðàÁÐÙÁn=?$ÆŒèÉDÿr¹Ä‚vTÕÐu]® "’ÇLTþX¯´'ùcèwbħ?ýéç=÷¹Ï}Ì…^ø÷º×½³[ÛýUuuôèÑ/>|ø‹·ÜrËn¼ñÆ/¼ùÍo¾ôµ¯}íMf ó”,ˆtªšêºîf³YWUúá\žFú'ó'W'ðIBÇÍUUªã™¨³<Èýl²ÅV³µy± åh~PÕ¸\.£‰²‚>Xœƒè!Øx9ìÛ·¯zÁ ^pÿŸüÉŸüÞ .¸à»<øÀœ?™LNéÛuÝÑ���ëo¿ýö/õ«_½ú£ýèÇ^þò—æ†nXš äEμPŠþ1¬Ýe{{?õØý’ýÔ#(]›¦Ñ£á‹ÃDµiš�=išfÏÅ3a=)Ú  TÉ6[l'ú窪ª”R\.—U"Q$¬>é]á�< Ьí4âÀ6×1ž(YE¤ß4›Íò¼ clØs {Ó|£¼ÆýI2Á Pø>‘,àÈ;;@¼¦µ/ãì^!ôg$1ߺMÓ$;€³›ÏçiµZul‡âzgÝHc«W8Kæ´&x·í¢�ÕF|aE�?OúŠ�Èéëübp÷ûÝKžøÜgÈ÷<ýIR5;â>ù„B“Ê—¯¸F®þà¥rÕû?.׿jÑÓ·mí(¾ü™kä /ù}9ÿõß.Oùõ'ßú}ß½í0ïýmÈÏþoÿƒ¼ñ¥°1<3Àö ÿFÇÅD:,ž`�ÊèºNm%Y‰Xb¡Iì§BÙ™'^b�X�ȦÿæáÇo¾å–[n¼é¦›n¾ì²ËnzË[ÞrÓW\±!F®YPùŸª?m;«lq ßmRª„qÈÄòéŒm§®ªª<Àеº+N§Ó*¥W«U%"u]×�ªÖmÛ6)¥‰ˆô Þ Ÿð¢{¸‚÷˜8÷üûÈ�<÷ò¨§=QªúÔ"v�ºM®þà¥rõ.‘«?x©9tÛ^Gé´ÀCû=ò”=Gîû�m;¬7¼ä÷åòw¾buúbÞ­.ù¿¯|÷/«ê2¥´TÕ•ˆ,cŒm]׫ªªZéO~íÚ¶Mªš&“IjšFW«•Ú¶•=ˆl‘Ü4˜"EB?B )¥h+ÊÑ~‹ª›¦‰³Ù,¨m·•êPUUÄ–òår)ÒoG!„`yÅ %‘‘É&q_0òRdíÊ HË€lI€I¹â e/Çñ‘¼Å‰ïgâmy³ bÊ�ÒÉ‹ˆ+Ò ,Õµ;ŠÙl&)%ÙØØ�Õj5 J€ \= oxbÏ„+âËiG<±¨ â†ÓQ×µìÛ·OBè·p•*=6H+Ò‰džìa ⌷s� ±ßSŒ1Ù–ìn±XhJ)Íf3øzÃaµz>�ÝʾÝNšvÛ4 œ¬¬øRõŠ _(„„-þr»4!@e¯kåa4 Äo~Æ ¢¬«GÙç6lÇÁƒã…^8«ë:\uÕUóo|ã�ˆd2Д·Â žº®Å”b¾Õ”æº\.¡žäíöì‡ME$-‹M¤¯ØÄ!öþòØ?sªÖ‡¸`’€ .V»rýÉ[$§Ás;؉ɨÙMäiÞNŒ2AùZ¹d·æk9ï¸�žÐ³Ù,Ä£Mè²ÜÒ¬ÌvKÁ#ÿÁò v:„0P5M#u]K2e.lì|°G°Éö~µ�j[CÕÂÈ®7 Ô–õ‚A&u¸ �·eDí$j¯ŽŽMÓ¨¬Û¶�‹Å" ¬Ä¶ò£¿´ö'2lÏ"²öeÏàì"é�¶Sy¬ª¼Ã„<‘vÊðׄÇ;P,ò"Œµ�A»²…¸¬öëè`5´9ËÿÜnѶa§ÍŽï™Í6¿š¼°,oØÂæbÇRH½’í2TUU™®Ä”ù¬�±W‰JOøäº›l„d‘û«ªrþùçOÎ?ÿüæÓŸþôFÛ¶‰\Zi×uØߦپÂn‚p1$”�˜}ªZ٠ܘ@Y§jLßšxÉdže¥Z�Ü“rŒ1¯u¡Md5/Ê5~y£=„þ0„ì2'��¥èsñ·ê}²æ]31Æ0›Í‚ˆÄÅb‘wv?\ç0é—ÇÍ(ÿ{ÞóžÕCúÐ}_ùÊWV×\sÍr¹\ªÙ !Èb±ÀAŸÙ÷µ)esÿ‹þ2¬‰H…­´ñUZ,ºZ­²û"Sä+|g+½Ön¶DÞCŠ|Iæ/Uú~:ÛšåryҌͬ Æ>6Î ¦ 6^‹©_°‡b;¦”"Æ]"Íe]¿PŸÎv_ø;Æ×""™hEþ‰ ]«á7Ì!ð;÷[ xaÓù>îsPüsô+"ë�ˆ|®Óü,»³²8ç~ö=ØB ¹ôЮ‡š¯gÝ·ovì¥ÔïìÓØ»hжmÕòEmLpÒÔŸÝÀ¶ÙÂr•��"ªD†~7Ö•â´Îßmá¼óï+?ò¼ÿFyÑNbWU妫¿ W¼÷ÃrÕ.‘/æšM«8Žíãê^"×|èRyÔE?,O~á³äî÷»ë»v~øÎ Þ; tNl+Ëk§:ÈnC±Âú”p"‘@Û Lc/SUÅ@1ˆ‘ 6êÙ‰uçŸ'#BXÎs 4øw $0HAxh¸¿ôX¦ôU<(áž)Á#VKAuÆD©MÄÄ1žÛŠXfU>Üï–u®Œ#êè˜2Wd­èbb—¯�¥÷•„:Ò‚ëa;ÈË2?8^¨oVþX…çI‚Èz5_Õ¶ÔcbiªVeæ KXî“ëøViÝ+¬V+…�jéÓ8z¨µÓ§ »/bè C xs½S|¦µÏõ fÇ©Þä1•ˆ„n¸auã�7f%[ѧg›&ëö�-Ò; µf\û2GÛÈ%¼ÆÉ—M ÞD®5, {VŽ)%%ñšXQ–£Šd× Á'‰g>R‘'ÙõBX»bü;ŒEÜC$rD¢þ ß•u¿š\”£:tH>ô¡m°�€úM}'�}r[£ëÙ>ÒïiäZÞEcײ XÖÿ€Ø·ú ¨Pû›ÝÊ Oز½"ÿ·õ;j„®Èzü‚{RÕŸ]’Ì~²=Ã.‰-¦£¼e½@ˆ‹ˆäX¶ÓÜ¿Ú=yÁµì/ƒ-Âàl×ñM±mÖj® j«üw�\þ®÷Ëåï|¿|ýºö:JgTU.ýû÷Êåïú€üôo¿P¾ç'žt—¹ïC$ç=à¾ò�ëoÚáž>°QŠˆÈ`#²î°Jg'¼žä®HŸ~VªšÒ#t‰ýÖ™hfÒ~{‘nll¨ TA:í·e±²$,‹@ƒ(È6M9�CجÜÅ×ÙU÷Q%©Ä±d> ñ@xZLà“)sñ�ß*ž˜ìExPþâ=X]G˜%ò¨$t‘¶ù|žŸ-Éįë:™N§›¶Rs:XÉÌ×¹¾3�]Q6ù¾º®ã‚rq¿�¥ <Ëïì“Í”&Xlà‰cöÑ(½Ry ˆ<#.àOódÂÑ£Gu6›6‚±–!oÅÐò"“¯Ú+Õ|óy™Õ…b‹4¦(™; „&¸‡?Ù$2–¸Z­6‘R˜pðÄ„‘RRnO"²î9²Ä+j¡ü€Ÿf#šp-Ù öÙ/îQÍ]‡¡aQcòx0¶4(êtÛ¶ÛrÇp�É ªªÂt:ŤFDDŒ(Ã@\,°Ãx.©jÀá-p�Ã[G͆&ˆåâ Êm>ѱȆÝø7+q½\¼Újò¨ºVš"(÷±Bö2Šmüvv;CR¿ME6 O¬V+�Íf.¼r¿Èƒ)(q]B˜c‹˜ˆsáÙ2l¤mlðƒ�)ÒÁdÀVÏrøx'ò›‰ ½p¹È?ª•ƒÒ{ó„ÄO&Eòa[™1c“Ïü®t»T™ÏçzÎ9çRˆ*�¯¬]aÒ„mšL ×[ƒ1gÈ38kž1®]²€8#x« «zÃ0ˆõÁtoþËÿbBE„‰J(.ìOO<ЩËjm–'�bJ¹¬LÂVpó˜Éz†'žëÚtàI*£$yADîJýáwØ»C e;þ’�Ž)¥dy”} ÛsPêÊ ÊÄȧüþ²ms{Eü'ƒë1»lÙê]c‘uý�]=XÚi´›¬,•‚Ä�k·"’}æúFõ&þ\Ÿ3ôµ}’¾ÛLåbIúNˆvº úIî/ÙžsõÀ&ÍÙŽó–X<Ëý—ok×; ÖÇÜaP=)Ë!+§�Ô'!¯ê{n“ö Ôž"C×+ܔޱçèÖgˆH¶ p¡ÐÕd‡u1‰‡ö‰¶jvDF^ˆÓõÁM¬ðChǬöãö„ä)òu»D²òÈ}¨ô„\Â"Y %�D0>¬Ì“u½ÉÔÉÕìcã‚€ú PÞa5Áv¢ücŒp­�Ì·jŠke~!Ds=—Ë%ü¯ —­ùKÇÂQ°ö”]7ESïRÃö”åœm Ò(’}µƒàØE‘õŽ…ò;êÊ ¤¨O¸Ž{«á¡ˆ»À¶‹L‡:yø˜ÏçzðàA�ºƒÝUHìXC¥_`Íý²˜ƾcŒ4 y1'°1tàñµÈpÞRö›d¬ˆ |Ú+�#Êgx„~ ¼ÂÚ¥Ra§ó½¸Ïqå8¢Ÿ$Â_„ìF°…¶Cbu ã<Ügy„ê}Rõ»�m¼ðû�‰­ØJe'¨vv²(ô"'—ñÞkÜëÁ�'=ÿ™òð'ÿÐIOì~í‹_–Ëþñ_äòwþ‹|õó×ïut„�þç”®üœüÂüOrîýï}§žm—«ãßt†Dþ7Çd”‰°±ŽíT&PBI?è“ÉD»® ð•‰<²¾“ Šƒ©”>ÄBÁüüÝL¬úžç•â’ü,‰H€É(Âc•RI¸âzCe¿¯t‹0ö~‘¡Ï`„W>‹‰4ÄGÊc”Leà=œ‡e¾mlläw"=4ÁËn–X ÍïÂû¹ ðNŽ+®�)7ËòK&P¥’J"Ñ39H‰g?á ttèž;ÀžÉd‚-|�ä|ÄÙÀÄÈ»< ±Éf2EO4‚¬IL2Âb±‘õVUÔ™år ÅÑ -[¼xrDd@Ôs=™L&J“>Q›ÉžhŠª2‘/‰Ú0—Rõ‡æäI+‚¡G˜To�®'ùû‰Ø6ªªyû0êlÛ¶acc#OŒ,NØÞ›tMötB“HSð„‚4MƒP�ñky¢)"ã ž²Sð[(xòoPŽ‚¸€MáX*þaÐ?ÁXý(Õ»?׸k°úex.ÿ£Îf3�1êjµÒ®÷ÍžU¨ªŠ~BmÎ¥vðŽ—œ.Ѻ®CŒ[ò³JÏÊQ‹E0%eˆ¦|N)!¿¹>Hù�Ò¿IùÌåŒò©Â÷`' ‡ åçwÑðâLn×iíºaÓömÏÂÌD:îE;#ΦʴG˜Ïç9.FÀe·-""¦Ð„=ã�Ajã$‘`Jn&²;!»ÂÐ�vHaáq)ÕδÐ̶2“.(/”‡íÜÂÂE./¾Çþ�mèÉú´•Üÿâ=”OR×õIå[H))úY´gém¥ŠH°�j¹=Ãæ¢¿�k— }aƒƒ��ƒñ§ªÙìl l§Fˆ1ð*¸åØÙ~h»XÔ‚�„Í$ŦBqªª¼ Ê}mvd¾˜3QKDžK1F�L&lgúNÔ•@;`Èvà0Êü[JI�9rÂÊx'0ŸÏÑOª©ç3�‹>ŒæI¼Ø:°ùh³js$�øèK­®áÌÁ½¼[°¢³Dpö…Òâ÷ß° ø�•¸xÆ"–Ÿ)Çñøig>¢ ÏB_Cõ$÷E6ÿÉù…º(fP&“IÞ™géSUÍ;±0F„�¡¾î¤³/»�m¼\!Êó`°¬˜ùž3ØEý¿íyÒóž)ÿ×�“OÞ|8tó×äÒ·½W.ç¿ÈÍ×|q¯£ã8n¸òZyõ¿ýuyæËC.ü¡ï½CÏ,ŽlÈ?ñ™]ŽÙéƒÒwj¸Î+¡"CÕÄ©ŒÅb%JÄðJ5ä0é°Gm>°>|dMþCٟ؃bïJ•ˆØ,'�<è(û$`àžxm5€1øu IDATÁï¬~ñTNnKRul„ë8ĆÃãxo•'eºJ”ÏpZù:)x6å'&ìö¢ð±OGÀi+óŽÛR?«8› �ò}‡µÂ¯¬æµë""™¸ãç1°=U°\.³o^#À”ó>„ž0À‚K·v¯’'v>dËZ®[ñ¡¬$ä¶ž¯‰¬j¨ŽÂ Êv&¤z�>«_Øò8ØNŒA¿ •"ëÁ¼JO†ªXy‹hè}Ÿb»7¶fr—ê­ò_Jß uç… -Héb±�ªª¶0¶„ƒ©wQ®bd/Ô¡ �FlHàöÉv@d½ESD6•kùL¡àÙdÏx§CiGBXûd0LözÐÊï ˜,ý™ä¢kû‚…#âª3éF>îA¾¡˜ðà®RAÐ()0©� |^‡yqþe7(Tþ›ß²ù^”cŒqpH—)•£ýœöຓm3õܾrû-Û²½/Ûm”�ª*ÂwÒ°RJŠ2«ªB«ÙHeƒóŒPƒŠsÍâö˹-GóãjmfpgÙ¯ŠŒŽoxü†ö¤T>ÙMNXîùš�’‹jD!Ú \DXTr¤NFr°ÊP>¹ Å�ܶ-Ӡ̅ˤlƒ­¬°8“ {ØãÒ^sÿlã“`‹<„Z!P "2h·è'a£iì�ˉÆyyád�Ÿ¤X|‰½[#„•wÂÐÂm~×ðN^|£úyÒÖƒcaµZ±¯òMó#Ô ´U‘µxÆ‚àþÿà¿ûK¢Ê¼¸Ž{xÜ΋¬¬Ü_Ø;ö‚¯è—¹á~ˆÇX Ù¥§ìòޝƒ�%û‘¿‹¬Ï_°ç³ .Ø/ÔÛbñ ÏÎl›à½ýöÛ7­ ððï’Íç�‡ŒLLOwÜ÷Û¿EžôË?/{âž´Än»\Éÿüùøß¾K®ùÐ'N rêLÁÆm·Ëë_ôÈs^õ¿Þ!’÷ÊÿúQWðÞ€œÍfb>¯+å!„<Ñ™L&ù:Ôžc“åS6áÊj[¼H?pÁ$9\0ðMý–DíºNì™L(ð$ÑÞƒWæ� Åa0�#Ô±%•‰(¼l€µÛêuVêŠMRlÌT×>SyÒG¶Ž”]Vr°òd2™(‘‘™üÁ„ Ä ä¯½3ç  æ›}ù"/&�ùÀŽm—ß�ÅjµÒétŠI¾ˆMbH±§u]Ët:UíÛùÀ§zW8L2óìÙ‹Áä2?XüÆöxÌ… ÊtDÁ#¬àA½áÃÞñbï*àçÍ^ä~DU9Qe»d“DØŒ\'ikº$óYŠz¦š«™r¿ 2Ü©!"›w³(å�¶m‹¢:$Šrù |¹#ï;ó�Ìsä—%£$ �¿ÈKîxÞ…oYNHw�¬\Åsl›Ðî¨^i°nÏ|�ÿZÝ9éíõb±Ð¦iòN ì1ˆ-Ç"ƒmÚ¨+bêÏ0™LBJ)Ìçs¶Ã¡ZûÖ °· X,ïrF{¤ñ ûÁÍuÒ¢® \ðÐ(1[lHak?cT#p6¼\_ˆð=i�>b¹\Êþýû±ûlS¼© ç~¶ëº`¾Ráª!+níþ¼°ªC‚WÄvVÀg:�_Ë�o›v•ã=_aa³ÁzÑI„È2U…Â’ÉØ<Îy_UU¶¡Ftf%¥íˆÈ6ËXóbMŒñ”hÇwjí9÷!±÷•¬6ž °o–O¥KäÆ^™¸G9¡ï³ï› ÊZDòîy‘á<ó v�Dã¡Áø›5Ï—~~q/—1ìýØü ãQë˲-çq=hn3ø.Ô/ÃÞ œd»Dø·b,wÚcÛ/:  c½IýÃ3‘3‹ß½ß…–'=ÿ™ò�?ü'-±{Ó5_”�¿å]ò‰¿¯½õð^GÇq‘R’ÿïü?åy¯ý=yàÃ/Üò¾v¹’wÿéO`ÌNp‡ÇkùìãØ*è© Õ~›0�rWlrÂ<‰uÊLêb‚»ÉŸ`IrÃÄ%4ÊüÆÄŸ6ÀÊß·êïY……IPq˜Õ¦o‘~p„ø€ˆäA5Ç +Ö4�„[æV’)%¡Íä1 œqàkÈ&e�v\c¢ÀÀo¬^sܘÜfBá�)d1(ä²FœF eúŠ ‹É*ž+'19œS‘Ü-1ŸÏu6›eE·5L.¢mÆ`Ù&©ë ^ÕÞ— ˆ4YyÂmÚ”*b¿‡bLˆÛ÷–Šlâ™ïåA:ÔzÑüóq٢܉äc4 i-^ìc5É”®Q’õåd˜Œ. E¹ˆH³À¤&’ø]ÌNAB1+®E¶¯àÁuÄë Sðlž' }‰ÃN n®—öŸÝ;”„(îÅ �f33éÈ7)÷¨PŠ#l^@ƒÝBúÔ Ð$Þ~+Iµ5#·&2ƒ½/ÇŸÿòäŸËö´lWeþ¢°èÆ“î_Æú1ÜÃñàgsÍ” ^¾Ž|Æd¿Zûèä>|`·O5RhµZåÅ(ÆÑ¾hÇ„Š-†¯³(ËC³Ãø«F,ÁnS}Çn�Ü^ÆO„ì$—‰ í²–íB$ûRæ0¾©1nˆ…JžìÇ)SŽÀÑ£Gó‚¨cVé£LóBŽ4´_˜ ¶˜ÂD_._îz@Òûò.ª?c6uFK.yÏö„ËÝú¥q_Þú.kÛ”ËßvÀäq×t:å]¼Ø£l£í°¶Ó)¥ìF‰H^ ![äMÓ°++~e¥6ò'æÇãa‘ᜀÜÔäklŸKûoñ®/§õO9°ã<~ã¿øð™*Üÿ’=Ø4Oæ³Ú›ë™Ø¢*ðŒÈú Ôcôï;R¸§¶Mð–Û¨x€€Á¯,ðª@_i¶�†“÷ÿŽo•'ýòÏËw<þ1²ádÁüö#rÙ;þ«|쿼K¾|Å5{ÇaµXÊüµÿ]^ð¿/÷zÐFïùç×],_ûâ '8f§&0yƒ�%صRù°\.Yµ6 §N't]—døQ@ó·|X +xý psؘx‹¬ $` ÁDtB¥‡{¥.ÙÎQ…ý™€m¼%¶òDÿî ìôÍ÷ƒçÝ]žòëÿNuÑO:Å®ªÊ.ù´|ü-ï’OýÓdµXîu”»€£·–?áïÈ ÿâäìûÜcpíúO]%ïù³ÿ´G1;õÀj ‘á ™±£Ùé ; &«ùDÆ·ÙY‡š¦ÑÉd2Pašªe0àäŸÉÒr°RŸëÁƒY™­E[ �ü;ƒøZ€™a }n›È¾¸ö¹Í¿ H9jG¹ŽS¿�ïCþ£OEŸ‹q ©a–õút(G6 žÈ'¶?vŸ´mË»ØDÖ}©„°v¯a}¦&óåËí åÎíÕþ†±ñ2î+�ÿ°¨Å =(0Ä Q°‹ ¬ W^¹†KìÞÂxàðáçM¹o…£G�ê¾}û|4‹dÒ [!®wž¡Ï ÒÍÎv‰ ^ ©(K^€U#b17€ë¸8B¿‹vË}r9ïå÷£LQ¯Ñ¿Š ŸÆ3wd‡#ÒÈãF܇pÆúËŸ\W�3•ÜÙ‚Xf>®Œe!ŸŽ¨šZ~èY?%?òÜgÈôÀ¾½ŽÎË�¹\ú¶÷ÈÞðw®Ü¬d—È©±Õór@…ß ¿Uƒkèc9Œ2þHÛ1<9mˆM$ƒ?~_Jµ<ˆ/&èƒ1Àég%XI@0id…BÉ‹<…B˜·|[ÛäIH;åwž À ´�0çáûå©¿ñ\9ï÷Ýë¨ ðÍ›¾*úë·ÉÇþË;eã𑽎Žã㫟¿^.þÝWÉ/ü_/‘¢\ü»$‡nþÚ^G딬ƦÀ–“Ã1Ûw§A�M,2ÁTº?ÀB$“›zŒ}�×<-‰AV�ò „'óüVŒc*&ôËþ°ñ;Y‘JŠÂü,+Yñ˜EúrbO×u¹LxBÆj¨‹J»ÊíŸOã†òùMjîlçq?»1*Uº"2ªôÁ»·êOÇlêJ¹¸ÅìiI<–¶éÀ„¸œ¸ß,—Ë�[ î—à¤T±rþsùŒô�ƒ`<Ëm²BèXÙØ…MïXÿ‡gyÎÊc¥r®„ñ_£ød0�Œø l&xØÞaRöWeXŒòÞ3¡Ÿ¸£Ø6ÁËCþ�'‡èÄËÉ¡ªž6üî½ôyúo>O¾ýµ×QÉPU¹î“WÊûÿêoå3ïý�èé1wqÜE|æ=’×ü‹¥jj¹þÓWïutN)¨¬‰ îèðAG‰ÉÀƒårKÍéŠ1’„}ÎEÛÄÞñ”·cd,FðÌ© oÂD•/‰ƒRYÊ“‘õ–´R©:ö>Ùt_¿r՚⧘àåp9OÆ\%Œ½CdMΔ“qÀqØœ�Œ¼ÒÏuŸË¦Ìë²Ü™¬( à2½œž-”ó›”*ŽÍà(,�à÷mðû8¶`‚ ž…=h'†–u¤+ˆü6¶p‚zQ×uÞ¾ÈÄ/¿ƒ]‘p·"˜ .]!l¨¼Xe§H߇°oí3 ªª¨³Ù,¤”¤iå…´³‘r@ûÖÒfr{ãºÃ¾0K›Lá*ڵȚDDÛ(Ë’Ig{^NW;{'‘=W«•L&“ì³wp“µAÞƒ¼å/"›vÍ æ)%˜xEù£-–v�ã‹g‹°2!Í}´…¡Gޏ�ì8Èù7ŸÏe>ŸËÝï~÷¬¸F™Žù¦å~“m*/Z“‹ !ä~}-êï®/Çqð†¿“®¼v¯£ã8‰pãUŸßë(œ²€í*U¼è¨ÆÈDÇ|ðS‰rBRNð¸#ïºNŽ=zÌwaT†s¬‰FJI¶:Di« ç˜R–ãPûœ ÌÆÞu¼ îØ‚«™Ç€‰ÅÁY�à‰ž)ó÷xé(¯—åZÆ÷LY(ÙK”äSè!"kW"ÏÀ2ÁË*=&ÓÆ;"n�- ^Þ2̪ÅÒwwQ¿Îè Aé÷ðŽØƒ­ì%ºŒ²ý–í»¼«ö|WÛyi“ ÎÆž�-ÞØØØtíDã¶ÛnÛDøŒÅ{;(û¡åo;awïÑw¦»cÀxi±XÈ�c éÇëÿ�Eð–söb.¯¸‡É!‘µ}Ç+œÈ½ãqY¨í~ÄõÂèâ/Ü ßÄ"*Â)ó©ìG�_Iªê» ³“øæ7¿9Ú¦�‡;2_—ß‘¹@ÙÞ•ø�áÎöûgò¸í®bÛŒ$üÝa€T®.‰léo¦7§(B�Çü›“}á³äÀÝÏÞë興Èíß8$~óÛåÃÿƒÜþ�C{‡ã´A�µj�Õ <èÂä[^ƶˆ;Ç©&uEÖ„/O8¡Üa•ÇH8ÇT¼åVóR  6„…÷Öu}Ì…$‡Ãá8ÕpË-·ŒÙ4Þª/b¤à˜ÐŠ�ñ*/Ô±ºŽ•Á¥«&�‚mÛž‘>Uwƒ~v2™ H}�wp8(Ê \ Ô¿"ÃöD6+1K%gyÈ&/ÈÒÇËÝá8ɱk’Óc¬ ¶�ŠxУ¿Kžþ[Ï“û]øà½ŽŠˆˆÜtÍåýùùä;Þ'ÝÊÕMÇn`«-�"C²‚ϼ-Ùáp8N”„o‰ªª‡HÑs›c6>;Ëõh<©[©O]Iäp8ÎämÞ…­Í p[í˜(]ÚŒ¹ý€kÇÞàx>‹Í~žkÄØ:*"räÈQU™N§ãð}Ž]7ø�¯ö3ÖW²Ãq:aÛ/+rG:nC…ï ¸v�S蘵³ïsyê¿®<üÉ�;)›/æyÏkß$W¼ï#{‡ãŒüÄ>æTu“o+†/x;Ž3«ÕJï¨+¶�pɰÕu‡ÃápºÕ||+×W¾0vê¡t¥´Z­äСáîÝÇoõìèvxw±ápœØ6Á[¸RJûyëapZäÉŽf:‘'üw?+OxÎÏH3›îut䋟¸BÞógo’«?xé^GÅá8c€íÇ"ÓJykÂØêäZ‡Ãáp8‡Ãáp8Ž�ƶ Þò”V‘µ£wøƒáÃ0–Ë%ŸÚyÒ3 ßý£?$ýû_”sîsÏ=�‡ªÊµ»\Þó§-Ÿ¿äÓ{‡ã „Ú¢•š�]µÃ2é Ÿ»°ƒ¬ˆ(}H:‡Ãáp8‡Ãápì¶Mðnu˜†ˆèùKÊ7“Âm7»ƒû>äAò/y¾<èÑßµ§ñPU¹ú—È»ÿô¯åKŸºjOãâpœÉ eyûï`àS†Ë] Nð:‡Ãáp8‡ÃáØ-l›à­ë:Ÿv 0ùÁ~^pú"‘'ã±ÿìƒòc¿úlù¾ŸùÑc‘×»M*Wüó‡å=ö&¹áÊk÷,‡£¤ºð-¹Õ)C y�w’±Ãáp8‡Ãáp8ÇN`ۯȚÐeB£ª*ø¢T¨v¡€‹1ÚÍ;ƒí#Æ(?øÌ§É¿þ埗}w;kÏâ‘R’O½ëýòž?ûOò•Ï]·gñp8C˜2W ¸¤v]cŒ‚ÜÔˆœ:þƇÃáp8‡ÃápœzØ6Á»Z­6(TU•4M“¼¬ÖUU5ß¼BО3ßöý�”Ÿø­ç˽ü€=‹\1üÃý…|åÚ/íY<Ç8`³xÇXÞ‚Ôu�¶D$/]98‡Ãáp8‡Ãápì$¶Mð– ñ_éù&p•þªˆh�½#x÷< OûÍçÉ£Ÿö#{º�ú†+¯•ø£×ɵ½|Ïâàp8Ž ZŒÂ­×Xáë¾w‡Ãáp8‡Ãápì6vÄEÀ®XÙ[øÛÕ”’®V«ž Ù#òã;øûå§û…rðçîÉûEDÝü5ùÇ×ü¥|âïß»gqp8ÇGÑ®ë4¥”lÑ*ï@ÀOmÛ¼€”’½‡Ãáp8‡Ãáp8v ;Bðš_]©ë:º¶Z­àwWŒ1rWUµë:‘¤'ø µýg”Ÿ|é ä»ì_í™jw~ûyïëÞ,ø«¿•v¹Ú“88Ž;ƒ ]×¥”R&w«ªÊÊÝ”’¦”¬Á&ŠÈÀ?¹Ãáp8‡Ãáp8ÇNcÛ/�£L&™N§²Z­´m[°§cÔº®UUµm[I""N Áûð'ÿ�üäK_ g�{ö‰zåݪ•¿ùíòîÿç�rôÖÃ{‡ÃqW�OUS!›f‡¨eW "’ºBÙ÷îjå 9‡Ãáp8‡Ãáp8v;Bð²ZMz&$Ø5 !¨�.¯ªªUUõÊ]Õ¤ªéDøà=ëܳå§þçÊw=é±»ýªQ¨ª|æ=’·¿ê?Ê7®¿iOâàp8¶UM!„cLUUiUU|P$[ÓÂ:‡Ãáp8‡Ãápì*¶MðòIñËå2ûÞ5¿“ZU•@åfDoŠ1êjµê Þ°» ÞG=õ‰òôß|žì?ûàn¾fK|éòÏÊß¿òurÝeWîÉûÇN ¨ˆ¤BšL&Z×u“õÂÞÙ¿¥m[…/^UÍ*^‡Ãáp8‡Ãáp8ŽÝÀ¶ ÞÕj¥u]œ¯ª[™«ª MÓhŒ1omVU !$I"ÒÉ.)xïvÏså§ÿ—_•ïxü÷íFðÇÅ7®¿IÞñ^/Ÿú§ìÉûÇÎ!ÑBBHf¿4õÈ.@䪪„“¨ŠÃ'Ç`s8‡Ãáp8‡ÃáØ.vä�µ”Òà!œ_U•N&©ëZEDW«UšÏç¡mÛ¤ªIDÒnøàýÞŸz²<õÅÏ•}ìtÐÇÅ‘C·É{þô¯åÿ]º¶=áïw8;� AbŒ)¥”V«U2†…,­ª*ûošFëºæ� ²±±“¹òÆèIDAT᧬9‡Ãáp8‡ÃáØìÁcÜtR¼¹cbÊݪª´ë:¨x³‚×Ôp;‚sîsOù7¿ókòí?ø¨� ò£].åox«¼÷Ï/–ùíGNøûÇ®B«ªêD¤K)åªc5Ÿ»›HÜ‚ÔõŽ˜Y‡Ãáp8‡Ãáp8ŽQìó0›ÍDUeµZIÛ¶b'ÌU•�� mšF§Ó©†RÓ4AUCÛ¶�ª†�RðþÀÏ]$OyÑsdz`ÿNw‡¡Iå“oÿgùÇ×ü¥ºùk'ô݇ã„þÃÓjµJ"¢u]Ã5>¢ª ;(Ò¼æƒÜáp8‡Ãáp8‡cW°£Ò2R±…‚¦”tµZ‰ªjŒ1sLi~,C¡»}µøx ñÿÑ "QE‚ª±¿*Ò‡$HÿŸ˦pê+OùÕçìÿ®}ÜÑ/ß|Óñâ–µñ؉÷cî&ÊûUUR—Â%¿ã~×êêé²’£zpzäð­·Mm—ަn‘áÏÃûTó-¤‘ZNصMÏãwûa4ÝÃÈáá2>x7Å{ð²c„µÕõÁ¥ **AÖe¤ª¢wdM@GâË—‘ßÅKËôI ûGâÏñÙú}[…·e½ì/ŽÇ÷¯Ø ƒxŽ„Ãí`PPÆEü!Íßòcï îHêL×u²\.¥mÛœ®ªªr9òûP\>(k”ÂDXe<Êp8ÿÄqá0ðoø’-Ë÷•÷w]'1F™L&""¹lÆÐ4M.£ù|>¨HgY×ÆÒÆñI)IŒqP÷�îÞ»‚JŒQg³™VU¥ªªmÛêr¹L]× \é]2àpµNz’·‘TUUê“Ûi×uIz¢±�£UUIÛ¶îƒ×áp8‡Ãáp8Ç®`G¼mÛjŒÇƃ䡡FiJÞ�2Ö~¯dퟷ2‚8âoJ)édML�ÔLZ�Äd¢Œ‰*�f¥áRYÉDëV÷—ïâ°qDÂa²¯üˆ É5&^±„/HWü’ ¿ä(“ÐüÞ­”¼xž‰Çc�Ë€ÓXÆøŽ{J"•óšß‰çÇTØ%A ‚¹ £Lç1Ç�ßÃq9ž:¤úVJq<ÏD=ÿ›ëб0ª¾¥÷lç-Å(ß²N–ä?¿›Û×þ÷X›á:Àå�8ƒ(f«¶Ê ˆ¼öœÆ„¯´j¾uaƒ@òÂOxJ)AÁ«øÍò¡Wþö6O)oTU�Üu8‡Ãáp8‡Ã±«Ø1 u]³ÊP�˜�¾b­M§Ó$"¬æTé ‘ž0‰F°„c¬ª*IRJLîB),öžMä_Ó4™Z,™Lµg„åd2°Ln�($CI01¹‹ô±â²iQUY.—�^þ[*29mPo¥ø,ïýP*‡²’×â‘UŽL¨�©3ù;§ ñ#ýð¾¯$Ígs&AAî1qÊ$ žø÷b±Ééâgp�ɾrq�1¦eR‘ï;áŠô- Y.—9ì¦i¤®ëMŠc~_YöcåÀ¿sþðoˆçǘ‚— Jupy/TΨË"’UÏ«Õ*ÿÊY‘Þ6¨ö>ºÇÈý���¬ø­ë:+y¹ý±jeÍm´L›ÙŒA~�tŽmÛjA­Í�Ø… 7Å5„¥nJ)uv½JÕîÏ*a‡Ãáp8‡Ãáp8Ž�%x�DQÕžßËBHª�,‰ªš}ÔA\4e]’Ì߆hß%„ÖAfB*ˆÈ@Y €èy ‡�ka”Šë€Ðd,?ËDíVêÍw+2o,¬’Ü*ɺò7¨yY\ÆcJÕ2Þü—ãÅ„"‡;F¨2Á‹ø1±ËùÌi†byŒ˜.ó¥$õÇ€¸—‡a•JT¾w+b»L“Î Ý™DÞª|Çòž�wƒ‡ä®ã9Ž7Ãåû˶QÖ+<[’ïeж¾‰H_­VR×µL§ÓÁB žc×$¬R/Ë�ÕåœVÊCÎL˜'µtªý B*]Ûq�»ªŠOéŽAËð�U7‡Ãáp8‡Ãáp8v ;Fð=zTg³Y`_—!„`>.³jÕN �ðYi׃¹pH tµwõ�U»FR#\@=ߦü΂D*·Ò3é’R’ù|¾‰‘égü gU¡ÈÚ‡,¥@DBuȾWí]ÊDX鿤âŪD÷1y‡ø0Á‰øà^<Ç/«+W«Õ¦¼+}禔r> ~PD#e8x'»Ìà¼ç439b>Œ¡Ž­ë:—%ÂS9—ßYY Õ)ž+ýÈ2©‰ç�¥v-߉z†ï‡±÷�¹`ò´Œ7âÇÄ7ç¿ñ›ÍfY¹Î*÷² ð>5å.òœËeµZ­6©Ù9¿¶Ê3´Lãy¼¯l›ð �º\úÞeŸÛe>VU¥X`27 ’ú³Ë…B2[–BïO7»q0× Å®µíA{N)9»ëp8‡Ãáp8‡cW±c¯ˆÈ|>×Éd¤'=ph}´}Ùˆº¤½Ê7ÄUz»¸7IAð¹�ÁƒßAâ”[êAF� -I?‘5)ȤT©Pe#‚™IÝR%Êá1Ñ:¦&EYýZÞ¿•²“‰\ŽKIXÂW/òŠ®e¼·R2¡ ò­ôÙ òm,Ýœö±tð½(Kv]Àáà·òP»1’~«<äòe2ù%"÷cùÁ Ú2lN+Üðs"›Õ§[©�ùÙ’ˆçü?^<£TÌr~ã/—Å™ ¢•IeV³s½@ÝCÞspYr+ÓÏJ`Ÿ‰xj—ìá€ÌÍ×Å|ëJo§²²×\5¨ˆÀgo¾f6d¹Zº�Üu8‡Ãáp8‡Ã±ëØQ‚WDØO¦A«UU…¦i’ª†¶mƒªÆ£VUªª Fþ1bþv�îYß!i˜TÇd dTŠ[)#¡ˆ4*° ƒRÉ b ¾lA"1ñÉjF�N[Ò†8Ôu­Pü2ÑÆjI�^¥¢@p¾€dEã!)2TVŽ)‘>„.‡ ba°â™‰AäH? e¼™ÐUU™ÏçœßÍ$>s¼÷rþ¢¡e2Ä#ì2ßRJYÑ ‚ù1oŽ[]ײoß>éýÐv]7ðY¼¸>pýc2ñǵÅb‘ÓWUU~>Œ™°Ež³Jõ¢,ãr1‚ãˆðÆÔóL€ã>&rOÎ˱ðcŒ›ü/—Êu܇wÃç.“íií77»[0å.>z3jn_t¹\jÛ¶ª½A“Ùl¦MÓHÛ¶ìcÜáp8‡Ãáp8‡cW±ãoá“6+x«ª QÔ|ìâSò1âÖTºÁ¦@ááà6&j$ôØäw6?D$R©Jäï¥*�Õ¤L–�Ô+]” L± w˃®8üR}Éä2Ê2mcéäw3¹ˆø—¾ŠK%,§±§� LøÎåx•þXQ7�øñ‰ˆ4ñ¿A°²$dù{éj‚Ë(—9í%Èêã’<,Ét._.W®{ìrƒë «gyq¢Ì;ä —öe9•„6Þ œ·È_¸Õ(ÛF™¿œ¬Z/ë">¥Ÿß²œX9,²>´­,Ÿ±6�纮¸+á4XÞçÃÕ8!¥°Õê‹sµ@/^ŽÝÕ¯Ù8©ëz“JØáp8‡Ãáp8‡c7±ãïáǵ®k�³R×µÆCJI»®[;¨�_Þ`¾rAŒ„”»ÊO#o²ÿ[�] Ì d…ò�·Ôã:kcÄ&”1Æ…ät:Í„"®L81ñ†x0†x‚<+ +Žƒ)8•·´31|,Eã9 ?ĸΊ`V|–¾„ÇPªZ™xmšf@2ùËù¼Z­²Jïg’³<¸ Êk&ìJ%)ÈIUÍñgÒùÆnD$?õ(”½cäï˜W._Ä„+ç3à’¤mÛVŽ=š¿s9 �Ø·1Êñ,ëcìwVì¢]M&Y,›Èe”Þ=F\s]+ �÷¨»ìJ¡\a6ÒŽ¶ˆûñ·\,àvÀJúrQ‡Qð¼ù‘V®óUUét:•º®AüÂ7¯¶m«¦ÈWü.F «ªrÝ;räˆ3¼‡Ãáp8‡Ãáp8NvœàiÛVYU+½ÏÊÐu�jïv ¹`¾,ÁÞe¿½ J^‘�B5_¡È.,Ba ^„¤»T€Š”]t]—�%á©TÕâý ©ø00�“¸§T‹–ŠW&x¥R—ヰ™äBظƮ˜Hå<S[âYlýGºÊçù]ìó·$ØK5nézŸ1Åè˜ïZ. >„ŒãVú‘eå1×§²Þ”Jj¤ D, È#&ñÌb±ÔEÔG&FÇÞ‹:P–ëVå†<æ8³ë Vw—áŽÕsN‡Éy_ýˆCù.„Ïí°¿§\œ)ÓÏ \Þ\f1FeÿÊLÖÖu-pÃ`iP|'Wùþ>hÍ=ºï]‡Ãáp8‡Ãáp8'»BðŠH‘@jM5²[™ƒÝ3xLÖ$/ÆÔ…Pô–¤«L�•ªA‘!¡H‡#e‚�Uƒ%¡¶EzDçØ¡\ 8™¬dr«“~ìZ`ìÝHç� !Èr¹�²%ñVàxI˜–>„•céà{™¤ƒ×ÂÀ×.âà ["á6‘«]× ”©cùÈ bŽ7|Þ²*š‰u”'ÒÆ®Æ”Ôüü˜[†²â~¤³t{0¦/߃ø³› S§Êb±Èa°Bq_,›ü÷rzÇ JÂ×ÈÐÁ‡ªé1×)(¿cµ~«Çˇò`6ü-7ÈMÌ&›"ýB”ÌçóìÖ�Ò÷ ùw<Ãa8¹ëp8‡Ãáp8‡ãDc×^‘Þƒ�ß\Y·!¬}ZBÑ ‚&0jj_ɪHVDj [&q@¦1Á†w—“¬L•JY&T9L¾YqZ±¥“IÇc[üì¹|¬0@¾Qy Ò€#ïJ‘Ãà4!½ÈŸ2n¥â”ÉkÉD#þ�ï¥Ê’ó€ Gµœ&ŽCO\/•Þœn.oÄ£ôÅ\æ-P’‘å!må½ìšî$XY¼Uù²Odþ�];°bšÉý±|ã<+ÓÂyÄyƾ�™xSÙòïåâAù~.Ž;®±^à|³+¸g‹Å …kˆ².WU¥T&k†w½Àâä®Ãáp8‡Ãáp8ŽŽ]%xE†¤G]×Ûœ�D )%…‚¤V×uÁ?å­Ý ®ˆÔÚ’Pa‚¬$ûJõ瘢ÑÂ[íH@D¥Bsl«~¹­�}—ï�]úýå°‘?!„œ?¬X-·Ä#ÜRq[’wLð2™V¾�ßSúË- c(vÙ¥_GZY¹Ë$'Š"›=+ãÏ$4ÒÃä`yY©Ô^.—™(gÂ�ÉJN§ é,JpX(gõ«¬H×_Îs¨Pá˜Uºc„1—-+™Ù×-ò~Œ¡bæ²á|Çw,–pý@¼8[©›á…‰[¨¶Ù…ÉVþ©K¼ e‡t-—KI))Û 'ÊB��� 'u‡Ãáp8‡Ãápì)v�àe´m‹×@V©Èšl¡Âq�`¡¢�É¢R½W{L<•äO©JSײ¢“Õ„Lð‚DãðJ ÒY*‹ù™RÕˆkL¬"l&`9™ðÂÁOeºÆ|å–ßÙKŽû˜Â—ó�Il”%Ò�t±û&¡„žÏç›ÔЪ:êó·Ì;Vw–ñEýssÀy„tƒ äðù�eù1QY*Ä·ª‡¼Àñçð˼*ÝàÙår)UUÉl6“ªªr^�-@à/—5âÍ1dˆûŽ¥.fò¤,·%nË[•%«‘ÙÍþ]×µÌf³-Ip^ #�¹=£Œqè#+ȹÜ·Ûo¿ÝÉ]‡Ãáp8‡Ãáp8{ŽJðŠlÚÆì·��UÜÒ—•µ¬x-q#¾Ž¥ðY“@P)‡ït:•Ô|òJÔ1å!ˆ:„rkL�ŠßË­íåaq¥²¾u‘w cŒäE~òox?—]ÙÆº®“���ÁoÅâ…Žù'v8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡Ãáp8‡ÃáØ[üÿBÞiá»í-IEND®B`‚lektor-lektor-1e4c150/example/content/plugin-use/000077500000000000000000000000001523546661100220425ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/plugin-use/contents.lr000066400000000000000000000005521523546661100242400ustar00rootroot00000000000000_model: page --- title: Plugin Use --- body: Here the lektor-markdown-highlighter is being used for a very serious Python snippet. ```python from sys import exit def say_hi(): print("Hello World!") # Engage in conversation def ignore_everything(): exit(0) # Successful exit if being_looked_at is True: say_hi() else: ignore_everything() ``` lektor-lektor-1e4c150/example/content/project-categories/000077500000000000000000000000001523546661100235435ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/project-categories/category-1/000077500000000000000000000000001523546661100255165ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/project-categories/category-1/contents.lr000066400000000000000000000000361523546661100277110ustar00rootroot00000000000000name: Category 1: Single Fish lektor-lektor-1e4c150/example/content/project-categories/category-2/000077500000000000000000000000001523546661100255175ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/project-categories/category-2/contents.lr000066400000000000000000000000401523546661100277050ustar00rootroot00000000000000name: Category 2: Pairs of Fish lektor-lektor-1e4c150/example/content/project-categories/category-3/000077500000000000000000000000001523546661100255205ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/project-categories/category-3/contents.lr000066400000000000000000000000331523546661100277100ustar00rootroot00000000000000name: Category 3: Red Fish lektor-lektor-1e4c150/example/content/project-categories/category-4/000077500000000000000000000000001523546661100255215ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/project-categories/category-4/contents.lr000066400000000000000000000000341523546661100277120ustar00rootroot00000000000000name: Category 4: Blue Fish lektor-lektor-1e4c150/example/content/project-categories/category-5/000077500000000000000000000000001523546661100255225ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/project-categories/category-5/contents.lr000066400000000000000000000000321523546661100277110ustar00rootroot00000000000000name: Category 5: Cthulhu lektor-lektor-1e4c150/example/content/project-categories/contents.lr000066400000000000000000000000721523546661100257360ustar00rootroot00000000000000_model: project-categories --- _slug: projects/categories lektor-lektor-1e4c150/example/content/projects/000077500000000000000000000000001523546661100216035ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/projects/contents.lr000066400000000000000000000001651523546661100240010ustar00rootroot00000000000000_model: projects --- title: Projects --- body: This is a list of the projects: * Project 1 * Project 2 * Project 3 lektor-lektor-1e4c150/example/content/projects/project-a/000077500000000000000000000000001523546661100234675ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/projects/project-a/contents.lr000066400000000000000000000001631523546661100256630ustar00rootroot00000000000000name: Project A --- date: 2017-09-13 --- description: Project A description --- categories: category-1, category-2 lektor-lektor-1e4c150/example/content/projects/project-b/000077500000000000000000000000001523546661100234705ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/projects/project-b/contents.lr000066400000000000000000000001771523546661100256710ustar00rootroot00000000000000name: Project B --- categories: category-3, category-4, category-2 --- date: 2017-09-19 --- description: Project B description lektor-lektor-1e4c150/example/content/projects/project-c/000077500000000000000000000000001523546661100234715ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/projects/project-c/contents.lr000066400000000000000000000001141523546661100256610ustar00rootroot00000000000000name: Project C --- date: 2017-09-18 --- description: Project C description lektor-lektor-1e4c150/example/content/types/000077500000000000000000000000001523546661100211165ustar00rootroot00000000000000lektor-lektor-1e4c150/example/content/types/contents.lr000066400000000000000000000013431523546661100233130ustar00rootroot00000000000000body: This page is an example of every built-in field type Lektor has. --- title: Types --- boolean1: yes --- date: 2018-07-04 --- datetime: 2018-07-04 05:02:22 EST --- checkboxes: choice1, choice3 --- float: 2.71828 --- floataddon: 3.14 --- int: 1729 --- intaddon: 137 --- flow: #### text #### text: Text from text only flow block. #### text_and_html #### text: Text from text_and_html flow block. ---- html: html from text_and_html flow block. --- html:
  • ħ
  • G
  • c
  • ke
  • kB
--- markdown: - kg - m - s - A - K - mol - cd --- sort_key: 2 --- strings: string1 string2 string3 --- text: Here is some sample text. lektor-lektor-1e4c150/example/flowblocks/000077500000000000000000000000001523546661100204455ustar00rootroot00000000000000lektor-lektor-1e4c150/example/flowblocks/text.ini000066400000000000000000000001321523546661100221260ustar00rootroot00000000000000[block] name = Text Block button_label = Text [fields.text] label = Text type = markdown lektor-lektor-1e4c150/example/flowblocks/text_and_html.ini000066400000000000000000000002201523546661100237720ustar00rootroot00000000000000[block] name = Text and HTML Block button_label = Text+HTML [fields.text] label = Text type = markdown [fields.html] label = HTML type = html lektor-lektor-1e4c150/example/models/000077500000000000000000000000001523546661100175635ustar00rootroot00000000000000lektor-lektor-1e4c150/example/models/attachment.ini000066400000000000000000000002121523546661100224070ustar00rootroot00000000000000[model] name = Attachment label = Attachment [fields.description] label = {{ site.get('types') }} type = string default = {{ this.body }}lektor-lektor-1e4c150/example/models/blog-post.ini000066400000000000000000000005741523546661100222000ustar00rootroot00000000000000[model] name = Blog Post label = {{ this.title }} hidden = yes [fields.title] label = Title type = string size = large [fields.author] label = Author type = string width = 1/2 [fields.twitter_handle] label = Twitter Handle type = string width = 1/4 addon_label = @ [fields.pub_date] label = Publication date type = date width = 1/4 [fields.body] label = Body type = markdown lektor-lektor-1e4c150/example/models/blog.ini000066400000000000000000000002751523546661100212130ustar00rootroot00000000000000[model] name = Blog label = Blog hidden = yes [fields.title] label = Title type = string [children] model = blog-post order_by = -pub_date, title [pagination] enabled = yes per_page = 3 lektor-lektor-1e4c150/example/models/page.ini000066400000000000000000000002711523546661100212000ustar00rootroot00000000000000[model] name = Page label = {{ this.title }} [fields.title] label = Title type = string [fields.alt_note] label = Alt Note type = markdown [fields.body] label = Body type = markdown lektor-lektor-1e4c150/example/models/project-categories.ini000066400000000000000000000002171523546661100240550ustar00rootroot00000000000000[model] name = Project Categories label = Project Categories hidden = yes protected = yes [children] model = project-category order_by = name lektor-lektor-1e4c150/example/models/project-category.ini000066400000000000000000000003071523546661100235450ustar00rootroot00000000000000[model] name = Project Category label = {{ this.name }} hidden = yes [children] replaced_with = site.query('/projects').filter(F.categories.contains(this)) [fields.name] label = Name type = string lektor-lektor-1e4c150/example/models/project.ini000066400000000000000000000004551523546661100217360ustar00rootroot00000000000000[model] name = Project label = {{ this.name }} hidden = yes [fields.name] label = Name type = string [fields.date] label = Date type = date [fields.description] label = Description type = markdown [fields.categories] label = Categories type = checkboxes source = site.query('/project-categories') lektor-lektor-1e4c150/example/models/projects.ini000066400000000000000000000001711523546661100221140ustar00rootroot00000000000000[model] name = Projects label = Projects hidden = yes protected = yes [children] model = project order_by = -date, name lektor-lektor-1e4c150/example/models/types.ini000066400000000000000000000023401523546661100214270ustar00rootroot00000000000000[model] name = Field Types label = {{ this.title }} inherits = page [fields.title] label = Title type = string [fields.boolean1] type = boolean checkbox_label = If true, then some sample text will render. default = false [fields.boolean2] type = boolean checkbox_label = If true, then some sample text will render. default = false [fields.checkboxes] label = Checkboxes type = checkboxes choices = choice1, choice2, choice3, choice4 choice_labels = choice_label1, choice_label2, choice_label3, choice_label4 [fields.date] label = Date type = date [fields.datetime] label = Datetime type = datetime [fields.float] label = Float type = float [fields.floataddon] label = FloatAddon type = float description = Percentage mark added addon_label = % [fields.flow] label = Flow type = flow flow_blocks = text_and_html, text [fields.int] label = Int type = integer [fields.intaddon] label = IntAddon type = integer description = px mark added addon_label = px [fields.html] label = HTML type = html [fields.markdown] label = Markdown type = markdown [fields.sort_key] label = Sort_Key type = sort_key [fields.markdown] label = Markdown type = markdown [fields.strings] label = Strings type = strings [fields.text] label = Text type = text lektor-lektor-1e4c150/example/templates/000077500000000000000000000000001523546661100202765ustar00rootroot00000000000000lektor-lektor-1e4c150/example/templates/blocks/000077500000000000000000000000001523546661100215535ustar00rootroot00000000000000lektor-lektor-1e4c150/example/templates/blocks/text.html000066400000000000000000000000371523546661100234250ustar00rootroot00000000000000{# intentionally left blank #} lektor-lektor-1e4c150/example/templates/blocks/text_and_html.html000066400000000000000000000001341523546661100252710ustar00rootroot00000000000000{{ this.html }} - color applied in block's template file. lektor-lektor-1e4c150/example/templates/blog-post.html000066400000000000000000000003011523546661100230640ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/blog.html" import render_blog_post %} {% block title %}{{ this.title }}{% endblock %} {% block body %} {{ render_blog_post(this) }} {% endblock %} lektor-lektor-1e4c150/example/templates/blog.html000066400000000000000000000006111523546661100221050ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/blog.html" import render_blog_post %} {% from "macros/pagination.html" import render_pagination %} {% block title %}{{ this.title }}{% endblock %} {% block body %} {% for child in this.pagination.items %} {{ render_blog_post(child, from_index=true, blog_post=false) }} {% endfor %} {{ render_pagination(this.pagination) }} {% endblock %} lektor-lektor-1e4c150/example/templates/layout.html000066400000000000000000000043651523546661100225110ustar00rootroot00000000000000 {% block title %}Welcome{% endblock %} — Example

Example

{% if this._path == '/' %}
    Available alts: {% for alt in get_alts() %}
  • {{ alt }}
  • {% endfor %}
{{ this.alt_note }} {% endif %} {% block body %}{% endblock %}
Recursive tree navigation of this example site:
© Copyright 2015 by Armin Ronacher.
lektor-lektor-1e4c150/example/templates/macros/000077500000000000000000000000001523546661100215625ustar00rootroot00000000000000lektor-lektor-1e4c150/example/templates/macros/blog.html000066400000000000000000000030711523546661100233740ustar00rootroot00000000000000{% macro render_blog_post(post, from_index=false, blog_post=true) %}
{% if from_index %}

{{ post.title }}

{% else %}

{{ post.title }}

{% endif %}

written by {% if post.twitter_handle %} {{ post.author or post.twitter_handle }} {% else %} {{ post.author }} {% endif %} on {{ post.pub_date }}

{{ post.body }}
{# display nav links to other blog posts, but hide on parent blog page #} {% if blog_post %} {{ render_blog_sibling_nav(post) }} {% endif %} {% endmacro %} {% macro render_blog_sibling_nav(post, from_index=false) %} {% from "macros/pagination.html" import render_pagination %}

{% set siblings = post.get_siblings() %} {# prev/next are swapped since blog children ordered_by is negative {# nav logic for previous page #} {% if siblings.next_page %} {% set prev = siblings.next_page %} {% endif %} {# nav logic for next page #} {% if siblings.prev_page %} {% set next = siblings.prev_page %} {% endif %} {# previous / nex nav links #} {% if prev %} « Previous {% endif %} {% if prev %} | {% endif %} {{ post.title }} {% if next %} | {% endif %} {% if next %} Next » {% endif %}
{% endmacro %} lektor-lektor-1e4c150/example/templates/macros/pagination.html000066400000000000000000000007331523546661100246040ustar00rootroot00000000000000{% macro render_pagination(pagination) %} {% endmacro %} lektor-lektor-1e4c150/example/templates/macros/projects.html000066400000000000000000000007311523546661100243020ustar00rootroot00000000000000{% macro render_category_nav(active=none) %} {% endmacro %} {% macro render_project_list(projects) %} {% endmacro %} lektor-lektor-1e4c150/example/templates/page.html000066400000000000000000000002321523546661100220750ustar00rootroot00000000000000{% extends "layout.html" %} {% block title %}{{ this.title }}{% endblock %} {% block body %}

{{ this.title }}

{{ this.body }} {% endblock %} lektor-lektor-1e4c150/example/templates/project-categories.html000066400000000000000000000003621523546661100247560ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/projects.html" import render_category_nav %} {% block title %}Project Categories{% endblock %} {% block body %}

Project Categories

{{ render_category_nav(active=none) }} {% endblock %} lektor-lektor-1e4c150/example/templates/project-category.html000066400000000000000000000005251523546661100244470ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/projects.html" import render_category_nav, render_project_list %} {% block title %}Project Category {{ this.name }}{% endblock %} {% block body %}

Project Category {{ this.name }}

{{ render_category_nav(active=this._id) }} {{ render_project_list(this.children) }} {% endblock %} lektor-lektor-1e4c150/example/templates/project.html000066400000000000000000000002761523546661100226370ustar00rootroot00000000000000{% extends "layout.html" %} {% block title %}{{ this.name }}{% endblock %} {% block body %}

{{ this.name }}

{{ this.description }}
{% endblock %} lektor-lektor-1e4c150/example/templates/projects.html000066400000000000000000000004401523546661100230130ustar00rootroot00000000000000{% extends "layout.html" %} {% from "macros/projects.html" import render_project_list, render_category_nav %} {% block title %}Projects{% endblock %} {% block body %}

Projects

{{ render_category_nav(active=none) }} {{ render_project_list(this.children) }} {% endblock %} lektor-lektor-1e4c150/example/templates/types.html000066400000000000000000000036701523546661100223360ustar00rootroot00000000000000{% extends "page.html" %} {% block body %} {{ super() }} {# super duper! #}

The title of this page is a string field. ^^

{# bool1 #}

booleans:
{% if this.boolean1 %} Boolean1 caused True text! {% else %} Boolean1 caused False text! {% endif %} Boolean1 = {{ this.boolean1 }} {# bool2 #}
{% if this.boolean2 %} Boolean2 caused True text! {% else %} Boolean2 caused False text! {% endif %} Boolean2 = {{ this.boolean2 }}

{# checkboxes #}

Of the checkboxes 1-4, boxes {% for box in this.checkboxes %} {{ "and " if loop.last }} {{ box }}{{ ", " if not loop.last }} {% endfor %} are checked.

{# dates #}

A date: {{ this.date }}
A datetime formatted three ways:

  • {{ this.datetime }}
  • {{ this.datetime.strftime('%Y-%m-%d %H:%M') }}
  • {{ this.datetime.strftime('%m/%d/%Y %H:%M') }}

{# numbers #}

A float: {{ this.float }} and {{ this.floataddon }}
A int: {{ this.int }} and {{ this.intaddon }}

{# flow blocks #}

These flow blocks are called manually from the main template for this page:
{% for blk in this.flow.blocks %} {{ blk.text }} {% endfor %} and all 'html' blocks with the additional templates in templates/blocks/:
{{ this.flow }}

Raw HTML:
{{ this.html }}

markdown: {{ this.markdown }}

strings: {{ this.strings }}
{% for string in this.strings %} {{ "and " if loop.last }} {{ string }}{{ ", " if not loop.last }} {% endfor %}

Unformatted text: {{ this.text }}

sort_key: {{ this.sort_key }}

{% endblock body %} lektor-lektor-1e4c150/example/themes/000077500000000000000000000000001523546661100175655ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/README.md000066400000000000000000000007261523546661100210510ustar00rootroot00000000000000# About this theme in the example project There are several ways to add themes to a project, including using submodules. This theme is a copy of the lektor-theme-nix at ff71ea6cd2dd8ff83268891f9cdd60b344517064 and is not a repository or submodule. It is not intended to change often, and is a simple copy to keep cloning lektor very simple - without someone having to know how to manage submodules, or have to follow additional instruction steps to populate the theme. lektor-lektor-1e4c150/example/themes/lektor-theme-nix/000077500000000000000000000000001523546661100227615ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/LICENSE.md000066400000000000000000000021371523546661100243700ustar00rootroot00000000000000The MIT License (MIT) Copyright (c) 2016 Matúš Námešný Copyright (c) 2017 Rafael Laverde Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. lektor-lektor-1e4c150/example/themes/lektor-theme-nix/README.md000066400000000000000000000024731523546661100242460ustar00rootroot00000000000000# Nix Nix is a simple, minimal theme for [Lektor](https://www.getlektor.com/) based in [Nix hugo theme](https://github.com/LordMathis/hugo-theme-nix) # Configuration Create a `404.html/contents.lr` content file pointing to 404.html, using a none model [see Lektor docs](https://www.getlektor.com/docs/guides/error-pages) Create a `contents.lr` content file pointing to index.html, using a none model Add lektor-disqus-comments plugin an configure it https://github.com/lektor/lektor-disqus-comments#lektor-disqus-comments Add params in the `.lektorproject file` ```ini [theme_settings] githubID = "your_github" gitlabId = "your_gitlab" twitterID = "your_twitter" codepenID = "your_codepen" linkedInID = "your_linkedin" googleplusID = "your_googleplus" facebookID = "your_facebook" instagramID = "your_instagram" telegramID = "your_telegram" name = "your_name" headerusername = "username" headerhostname = "hostname" email = "your_email" about = "info_about_you" profilepicture = "profile_picture_asset_url" googleanalytics = "your_google_analytics_id" slackURL = "https://join.slack.com/..." comments = "yes" ``` Add your profile picture in the assets folder and set the path in `profilepicture` (e.g. `img/myprofilepicture.png`) ## License Nix is licensed under the [MIT License](LICENSE.md) lektor-lektor-1e4c150/example/themes/lektor-theme-nix/assets/000077500000000000000000000000001523546661100242635ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/assets/static/000077500000000000000000000000001523546661100255525ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/assets/static/css/000077500000000000000000000000001523546661100263425ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/assets/static/css/nix.css000066400000000000000000000033701523546661100276550ustar00rootroot00000000000000* { margin: 0; } html { height: 100%; } body { background-color: #fdfdfd; height: 100%; font-family: 'Open Sans', sans-serif; font-size: 1.5em; padding-top: 70px; } #green-terminal { color: #00ff00; } .font-header { font-family: 'Inconsolata', monospace; } .font-paragraph { font-family: 'Open Sans', sans-serif; } nav { font-size: 1.5em; } h1,h2,h3,h4,h5,h6 { font-family: 'Concert One', cursive; } #user-name { font-size: 5em; } .user-description { border-style: solid; border-width: 5px; border-color: #292929; margin-top: 20px; margin-bottom: 1em; padding: 15px; font-size: initial; } .user-profile { padding: 0; } .user-picture { border-style: solid; border-width: 5px; border-color: #292929; margin-top: 20px; } i { margin: 10px 20px 10px 20px; color: #333; } .post-link { float: left; } .post-date { float: right; } .post-header { background-color: #F5F5F5; overflow: hidden; padding: 0 5px 0 5px; } .post-summary, .post-content{ clear: both; } .post-summary { padding: 0 5px 0 5px; } .post-list-footer { padding-bottom: 5px; } #post-list { list-style: none; padding-left: 0; } .post-list-item { margin-top: 20px; border-style: solid; border-width: 0 0 3px 0; border-color: #292929; } .post-comments { padding-top: 10px; border-top-style: solid; } .wrapper { min-height: 100%; margin: 0 auto -50px; } .footer { background-color: #F5F5F5; display: block; width: 100%; padding: 10px; height: 50px; } .push { height: 50px; } .col-centered{ float: none; margin: 0 auto; } div p { text-align: justify; } td { margin: 0 20px 0 20px; } lektor-lektor-1e4c150/example/themes/lektor-theme-nix/models/000077500000000000000000000000001523546661100242445ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/models/blog-post.ini000066400000000000000000000005741523546661100266610ustar00rootroot00000000000000[model] name = Blog Post label = {{ this.title }} hidden = yes [fields.title] label = Title type = string size = large [fields.author] label = Author type = string width = 1/2 [fields.twitter_handle] label = Twitter Handle type = string width = 1/4 addon_label = @ [fields.pub_date] label = Publication date type = date width = 1/4 [fields.body] label = Body type = markdown lektor-lektor-1e4c150/example/themes/lektor-theme-nix/models/blog.ini000066400000000000000000000002761523546661100256750ustar00rootroot00000000000000[model] name = Blog label = Blog hidden = yes [fields.title] label = Title type = string [children] model = blog-post order_by = -pub_date, title [pagination] enabled = yes per_page = 10 lektor-lektor-1e4c150/example/themes/lektor-theme-nix/models/page.ini000066400000000000000000000002051523546661100256560ustar00rootroot00000000000000[model] name = Page label = {{ this.title }} [fields.title] label = Title type = string [fields.body] label = Body type = markdown lektor-lektor-1e4c150/example/themes/lektor-theme-nix/models/showcase-item.ini000066400000000000000000000005021523546661100275120ustar00rootroot00000000000000[model] name = Site label = {{ this.name }} hidden = yes [fields.name] label = Name type = string size = large [fields.url] label = URL type = url width = 1/2 [fields.cover_image] label = Cover Image type = select source = record.attachments.images width = 1/2 [fields.description] label = Description type = markdown lektor-lektor-1e4c150/example/themes/lektor-theme-nix/models/showcase.ini000066400000000000000000000002241523546661100265570ustar00rootroot00000000000000[model] name = Showcase label = Showcase hidden = yes [fields.title] label = Title type = string [children] model = showcase-item order_by = name lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/000077500000000000000000000000001523546661100247575ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/404.html000066400000000000000000000012211523546661100261500ustar00rootroot00000000000000 {{ config.PROJECT.name }} {% include "partials/head.html" %} {% include "partials/header.html" %}
{% if this.title %}

{{ this.title }}

{% else %}

Uhm... WHAT?

{% endif %}
{% if this.body %} {{ this.body }} {% else %}

Looks like you're lost. This page doesn't exist.

{% endif %}
{% include "partials/footer.html" %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/blog-post.html000066400000000000000000000010251523546661100275510ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %} {% with post = this %}

{{ post.title }}

{{ post.body }}
{% if config.THEME_SETTINGS.comments == 'yes' %}
{{ render_disqus_comments() }}
{% endif %} {% endwith %} {% endblock content %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/blog.html000066400000000000000000000016371523546661100265770ustar00rootroot00000000000000{% from "macros/pagination.html" import render_pagination %} {% extends "layout.html" %} {% block content %}

{{ this.title }}

    {% for post in this.pagination.items %}
  • {{ post.title }}

    {{ post.summary }}

    Read More
  • {% endfor %}
{{ render_pagination(this.pagination) }} {% endblock content %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/index.html000066400000000000000000000016141523546661100267560ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %} {% if config.THEME_SETTINGS.profilepicture %}
profile-picture
{% endif %}
{% include "partials/social.html" %}

{{ config.THEME_SETTINGS.about }}

{% endblock content %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/layout.html000066400000000000000000000005761523546661100271720ustar00rootroot00000000000000 {{ this.title }} · {{ config.PROJECT.name }} {% include "partials/head.html" %} {% include "partials/header.html" %}
{% block content %} {% endblock%}
{% include "partials/footer.html" %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/macros/000077500000000000000000000000001523546661100262435ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/macros/pagination.html000066400000000000000000000023651523546661100312700ustar00rootroot00000000000000{% macro render_pagination(pagination) %} {% if pagination.pages > 1 %}
    {% with first = pagination.for_page(0) %}
  • {% endwith %}
  • {% for page in this.pagination.pages %}
  • {{ page }}
  • {% endfor %}
  • {% with last = pagination.for_page(pagination.pages) %}
  • {% endwith %}
{% endif %} {% endmacro %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/page.html000066400000000000000000000002571523546661100265650ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %}

{{ this.title }}

{{ this.body }}
{% endblock content %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/partials/000077500000000000000000000000001523546661100265765ustar00rootroot00000000000000lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/partials/footer.html000066400000000000000000000005261523546661100307650ustar00rootroot00000000000000

Copyright © 2017 {{ config.THEME_SETTINGS.name }} - Powered by Lektor and Nix theme.

lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/partials/head.html000066400000000000000000000034161523546661100303710ustar00rootroot00000000000000 {% if config.THEME_SETTINGS.googleanalytics %} {% endif %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/partials/header.html000066400000000000000000000023601523546661100307150ustar00rootroot00000000000000
lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/partials/social.html000066400000000000000000000041571523546661100307450ustar00rootroot00000000000000{% if config.THEME_SETTINGS.slackURL %} {% endif %} {% if config.THEME_SETTINGS.twitterID %} {% endif %} {% if config.THEME_SETTINGS.googleplusID %} {% endif %} {% if config.THEME_SETTINGS.facebookID %} {% endif %} {% if config.THEME_SETTINGS.githubID %} {% endif %} {% if config.THEME_SETTINGS.gitlabId %} {% endif %} {% if config.THEME_SETTINGS.codepenID %} {% endif %} {% if config.THEME_SETTINGS.linkedInID %} {% endif %} {% if config.THEME_SETTINGS.instagramID %} {% endif %} {% if config.THEME_SETTINGS.telegramID %} {% endif %} {% if config.THEME_SETTINGS.email %} {% endif %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/showcase-item.html000066400000000000000000000002651523546661100304200ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %}

{{ this.name }}

{{ this.description }}
{% endblock content %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/templates/showcase.html000066400000000000000000000012701523546661100274610ustar00rootroot00000000000000{% extends "layout.html" %} {% block content %}

Talks

{{ this.intro }}

{% endblock %} lektor-lektor-1e4c150/example/themes/lektor-theme-nix/theme.ini000066400000000000000000000010311523546661100245570ustar00rootroot00000000000000[theme] name = Nix license = MIT licenselink = https://github.com/rlaverde/lektor-theme-nix/blob/master/LICENSE.md description = Simple, minimal theme for Lektor homepage = https://github.com/rlaverde/lektor-theme-nix tags = simple, minimal, unix, terminal, blog features = blog lektor_required_version = 3.1 [author] name = rlaverde homepage = http://rlaverde.github.io/ [original] author = Matúš Námešný homepage = https://namesny.com repo = https://github.com/LordMathis/hugo-theme-nix [packages] lektor-disqus-comments = 0.2 lektor-lektor-1e4c150/frontend/000077500000000000000000000000001523546661100164645ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/.eslintrc.js000066400000000000000000000006611523546661100207260ustar00rootroot00000000000000module.exports = { env: { browser: true, es2021: true, }, extends: [ "eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react/recommended", "plugin:react-hooks/recommended", ], parser: "@typescript-eslint/parser", settings: { react: { version: "detect", }, }, plugins: ["@typescript-eslint", "react"], rules: { "react/button-has-type": "error", }, }; lektor-lektor-1e4c150/frontend/babel-require.js000066400000000000000000000001501523546661100215350ustar00rootroot00000000000000// eslint-disable-next-line require("@babel/register")({ extensions: [".js", ".jsx", ".ts", ".tsx"] }); lektor-lektor-1e4c150/frontend/js/000077500000000000000000000000001523546661100171005ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/components/000077500000000000000000000000001523546661100212655ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/components/AdminLink.tsx000066400000000000000000000017261523546661100237010ustar00rootroot00000000000000import React, { forwardRef, memo, ForwardedRef, ReactNode } from "react"; import { NavLink } from "react-router-dom"; import { PageName } from "../context/page-context"; import { RecordPathDetails, useRecord } from "../context/record-context"; import { adminPath } from "./use-go-to-admin-page"; function AdminLink( { page, path, alt, children, ...otherProps }: RecordPathDetails & { page: PageName; children: ReactNode; onClick?: React.MouseEventHandler; title?: string; }, ref: ForwardedRef ): JSX.Element { const current = useRecord(); const recordMatches = path === current.path && alt === current.alt; return ( recordMatches && match != null} {...otherProps} ref={ref} > {children} ); } export default memo(forwardRef(AdminLink)); lektor-lektor-1e4c150/frontend/js/components/AdminLinkWithHotkey.tsx000066400000000000000000000027721523546661100257230ustar00rootroot00000000000000import React, { MutableRefObject, ReactNode, useCallback, useEffect, useRef, } from "react"; import { PageName } from "../context/page-context"; import { RecordPathDetails } from "../context/record-context"; import { getKey, KeyboardShortcut, keyboardShortcutHandler } from "../utils"; import AdminLink from "./AdminLink"; /** * React hook to add a global keyboard shortcut for the given * key for the lifetime of the component. */ function useKeyboardShortcut( key: KeyboardShortcut, action: (ev: KeyboardEvent) => void ): void { useEffect(() => { const handler = keyboardShortcutHandler(key, action); window.addEventListener("keydown", handler); return () => window.removeEventListener("keydown", handler); }, [key, action]); } /** * Add a global keyboard shortcut for the given key and simulate * a click on the ref'ed element. */ function useKeyboardShortcutRef( key: KeyboardShortcut ): MutableRefObject { const el = useRef(null); const handler = useCallback(() => { el.current?.click(); }, []); useKeyboardShortcut(key, handler); return el; } export default function AdminLinkWithHotkey({ children, shortcut, ...linkProps }: RecordPathDetails & { page: PageName; children: ReactNode; shortcut: KeyboardShortcut; }): JSX.Element { const el = useKeyboardShortcutRef(shortcut); return ( {children} ); } lektor-lektor-1e4c150/frontend/js/components/DialogSlot.tsx000066400000000000000000000027471523546661100241000ustar00rootroot00000000000000import React, { useCallback, useEffect, useState } from "react"; import FindFiles from "../dialogs/find-files/FindFiles"; import Publish from "../dialogs/Publish"; import Refresh from "../dialogs/Refresh"; import { LektorEvents, subscribe, unsubscribe } from "../events"; type DialogDetails = LektorEvents["lektor-dialog"]; type DialogState = (DialogDetails & { preventNavigation?: boolean }) | null; export default function DialogSlot(): JSX.Element | null { const [dialog, setDialog] = useState(null); const dismiss = useCallback( () => setDialog((c) => (c?.preventNavigation ? c : null)), [] ); const prevent = useCallback( (preventNavigation: boolean) => setDialog((d) => (d ? { ...d, preventNavigation } : null)), [] ); useEffect(() => { const handler = ({ detail }: CustomEvent) => { // Only change dialog if there is no dialog yet. setDialog((current) => current ?? detail); }; subscribe("lektor-dialog", handler); return () => unsubscribe("lektor-dialog", handler); }, []); if (!dialog) { return null; } if (dialog.type === "find-files") { return ; } else if (dialog.type === "refresh") { return ; } else if (dialog.type === "publish") { return ; } const exhaustiveCheck: never = dialog.type; throw new Error(exhaustiveCheck); } lektor-lektor-1e4c150/frontend/js/components/ErrorDialog.tsx000066400000000000000000000022451523546661100242410ustar00rootroot00000000000000import React, { useCallback, useEffect, useState } from "react"; import SlideDialog from "./SlideDialog"; import { trans, TranslationEntry } from "../i18n"; import { LektorEvents, subscribe, unsubscribe } from "../events"; /** * Listen to events and show an error dialog (potentially on top of an open * dialog). */ export default function ErrorDialog(): JSX.Element | null { const [error, setError] = useState<{ code: string } | null>(null); const dismiss = useCallback(() => setError(null), []); useEffect(() => { const handler = ({ detail }: CustomEvent) => setError(detail); subscribe("lektor-error", handler); return () => unsubscribe("lektor-error", handler); }, []); if (!error) { return null; } return (

{trans("ERROR_OCURRED")} {": "} {trans(("ERROR_" + error.code) as TranslationEntry)}

); } lektor-lektor-1e4c150/frontend/js/components/ServerStatus.tsx000066400000000000000000000022401523546661100244750ustar00rootroot00000000000000import React, { useEffect, useState } from "react"; import { get } from "../fetch"; import { trans } from "../i18n"; type State = { serverIsUp: boolean; projectId: string | null }; export default function ServerStatus(): JSX.Element | null { const [state, setState] = useState({ serverIsUp: true, projectId: null, }); useEffect(() => { const onInterval = () => { get("/ping", null).then( ({ project_id }) => { setState(({ projectId }) => projectId === null ? { projectId: project_id, serverIsUp: true } : { projectId, serverIsUp: projectId === project_id } ); }, () => { setState((s) => ({ ...s, serverIsUp: false })); } ); }; const id = window.setInterval(onInterval, 2000); return () => window.clearInterval(id); }, []); if (state.serverIsUp) { return null; } return (

{trans("ERROR_SERVER_UNAVAILABLE")}

{trans("ERROR_SERVER_UNAVAILABLE_MESSAGE")}

); } lektor-lektor-1e4c150/frontend/js/components/SlideDialog.tsx000066400000000000000000000022751523546661100242130ustar00rootroot00000000000000import React, { ReactNode, useEffect } from "react"; import { trans } from "../i18n"; export default function SlideDialog({ title, hasCloseButton, dismiss, children, }: { title: string; hasCloseButton: boolean; dismiss: () => void; children: ReactNode; }): JSX.Element { useEffect(() => { const handler = (ev: KeyboardEvent) => { if (ev.key === "Escape") { ev.preventDefault(); dismiss(); } }; window.addEventListener("keydown", handler); return () => window.removeEventListener("keydown", handler); }, [dismiss]); useEffect(() => { window.scrollTo(0, 0); }, []); return (
{hasCloseButton && ( { ev.preventDefault(); dismiss(); }} > {trans("CLOSE")} )}

{title}

{children}
); } lektor-lektor-1e4c150/frontend/js/components/ToggleGroup.test.tsx000066400000000000000000000021301523546661100252350ustar00rootroot00000000000000import ToggleGroup from "./ToggleGroup"; import React from "react"; import { render } from "react-dom"; import ReactTestUtils from "react-dom/test-utils"; import { JSDOM } from "jsdom"; import { ok } from "assert"; const jsdom = new JSDOM(``); // @ts-expect-error Assigning jsdom.window to window fails global.window = jsdom.window; const document = window.document; const renderToggle = () => { document.body.innerHTML = ""; const container = document.createElement("div"); document.body.appendChild(container); render(
Rick Astley rulz
, container ); return container; }; describe("ToggleGroup", () => { it("renders a closed toggle group", () => { const container = renderToggle(); ok(container.innerHTML.includes("closed")); }); it("renders an open toggle group when toggled", () => { const container = renderToggle(); const el = document.querySelector(".toggle-group h4"); el && ReactTestUtils.Simulate.click(el); ok(!container.innerHTML.includes("closed")); }); }); lektor-lektor-1e4c150/frontend/js/components/ToggleGroup.tsx000066400000000000000000000012711523546661100242640ustar00rootroot00000000000000import React, { MouseEvent, useCallback, useState } from "react"; export default function ToggleGroup({ className = "", groupTitle, children, }: { className?: string; groupTitle: string; children: React.ReactNode; }) { const [open, setOpen] = useState(false); const toggle = useCallback((event: MouseEvent) => { event.preventDefault(); setOpen((v) => !v); }, []); return (

{groupTitle}

{children}
); } lektor-lektor-1e4c150/frontend/js/components/types.ts000066400000000000000000000015021523546661100227770ustar00rootroot00000000000000import { RecordPath, RecordAlternative } from "../context/record-context"; import type { Translatable } from "../i18n"; export type Alternative = { alt: RecordAlternative; is_primary: boolean; primary_overlay: boolean; name_i18n: Translatable; exists: boolean; }; export type RecordChild = { id: string; path: RecordPath; label: string; label_i18n: Translatable; visible: boolean; }; export type RecordAttachment = { id: string; path: RecordPath; type: string; }; // Returned by /recordinfo export type RecordInfo = { id: string; path: RecordPath; label_i18n?: Translatable; exists: boolean; is_attachment: boolean; attachments: RecordAttachment[]; children: RecordChild[]; alts: Alternative[]; can_have_children: boolean; can_have_attachments: boolean; can_be_deleted: boolean; }; lektor-lektor-1e4c150/frontend/js/components/use-go-to-admin-page.ts000066400000000000000000000020221523546661100254500ustar00rootroot00000000000000import { useCallback } from "react"; import { useHistory } from "react-router-dom"; import { PageName } from "../context/page-context"; import { RecordAlternative, RecordPath } from "../context/record-context"; /** * Compute an admin path. * @param page - e.g. edit or preview * @param path - fs path to the record * @param alt - the alternative to use. * @returns */ export function adminPath( page: PageName, path: RecordPath, alt: RecordAlternative ): string { const params = new URLSearchParams({ path }); if (alt !== "_primary") { params.set("alt", alt); } return `${$LEKTOR_CONFIG.admin_root}/${page}?${params}`; } /** * Use a function to change the admin page. * @returns A function to navigate to an admin page for a given view * and page fs path and alt. */ export function useGoToAdminPage() { const history = useHistory(); return useCallback( (name: PageName, path: RecordPath, alt: RecordAlternative) => { history.push(adminPath(name, path, alt)); }, [history] ); } lektor-lektor-1e4c150/frontend/js/context/000077500000000000000000000000001523546661100205645ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/context/page-context.ts000066400000000000000000000006471523546661100235410ustar00rootroot00000000000000import { createContext } from "react"; export const PAGE_NAMES = [ "edit", "delete", "preview", "add-child", "upload", ] as const; export type PageName = typeof PAGE_NAMES[number]; export function isPageName(p: unknown): p is PageName { return PAGE_NAMES.includes(p as PageName); } /** The currently rendered page of the Lektor admin interface. */ export const PageContext = createContext("edit"); lektor-lektor-1e4c150/frontend/js/context/record-context.ts000066400000000000000000000016611523546661100241000ustar00rootroot00000000000000import { createContext, useContext } from "react"; /** Path to a Lektor record. */ export type RecordPath = `/${string}`; /** Alternative of a Lektor record. */ export type RecordAlternative = string; /** Details about the path to a Lektor record. */ export type RecordPathDetails = { /** Path of the current record (Lektor db path). */ path: RecordPath; /** The alternative of the record. */ alt: RecordAlternative; }; export const RecordContext = createContext({ path: "/", alt: "_primary", }); /** The current record. */ export function useRecord(): RecordPathDetails { return useContext(RecordContext); } /** The alternative of the currently active record. */ export function useRecordAlt(): string { const record = useRecord(); return record.alt; } /** The path of the currently active record. */ export function useRecordPath(): RecordPath { const record = useRecord(); return record.path; } lektor-lektor-1e4c150/frontend/js/dialogs/000077500000000000000000000000001523546661100205225ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/dialogs/Publish.tsx000066400000000000000000000100571523546661100226730ustar00rootroot00000000000000import React, { ChangeEvent, useCallback, useEffect, useRef, useState, } from "react"; import SlideDialog from "../components/SlideDialog"; import { apiUrl, get, post } from "../fetch"; import { trans, trans_fallback } from "../i18n"; import { showErrorDialog } from "../error-dialog"; export interface Server { id: string; short_target: string; name: string; name_i18n: Partial>; } /** * Render a {serverOptions}
); } type PublishState = "IDLE" | "BUILDING" | "PUBLISH" | "DONE"; function BuildLog({ log }: { log: string[] }) { const buildLog = useRef(null); useEffect(() => { const node = buildLog.current; if (node) { node.scrollTop = node.scrollHeight; } }, [log]); return (
      {log.join("\n")}
    
); } function Publish({ dismiss, preventNavigation, }: { dismiss: () => void; preventNavigation: (b: boolean) => void; }): JSX.Element { const [servers, setServers] = useState([]); const [activeTarget, setActiveTarget] = useState(""); const [log, setLog] = useState([]); const [state, setState] = useState("IDLE"); useEffect(() => { get("/servers", null).then(({ servers }) => { setServers(servers); setActiveTarget(servers.length ? servers[0].id : ""); }, showErrorDialog); }, []); const onPublish = useCallback(() => { setLog([]); setState("BUILDING"); preventNavigation(true); post("/build", null).then(() => { setState("PUBLISH"); const eventSource = new EventSource( apiUrl("/publish", { server: activeTarget }) ); eventSource.addEventListener("message", (event) => { const data = JSON.parse(event.data); if (data === null) { setState("DONE"); preventNavigation(false); eventSource.close(); } else { setLog((log) => log.concat(data.msg)); } }); }, showErrorDialog); }, [activeTarget, preventNavigation]); const isSafeToPublish = state === "IDLE" || state === "DONE"; return (

{trans("PUBLISH_NOTE")}

{" "}

{state !== "IDLE" ? ( <>

{state !== "DONE" ? trans("CURRENTLY_PUBLISHING") : trans("PUBLISH_DONE")}

{trans("STATE") + ": " + trans(`PUBLISH_STATE_${state}`)}
) : null}
); } export default Publish; lektor-lektor-1e4c150/frontend/js/dialogs/Refresh.tsx000066400000000000000000000032411523546661100226600ustar00rootroot00000000000000import React, { useCallback, useEffect, useState } from "react"; import SlideDialog from "../components/SlideDialog"; import { post } from "../fetch"; import { trans } from "../i18n"; import { showErrorDialog } from "../error-dialog"; export default function Refresh({ dismiss, preventNavigation, }: { dismiss: () => void; preventNavigation: (v: boolean) => void; }): JSX.Element { const [state, setState] = useState<"IDLE" | "DONE" | "CLEANING">("IDLE"); const isSafeToNavigate = state === "IDLE" || state === "DONE"; const refresh = useCallback(() => { setState("CLEANING"); post("/clean", null).then(() => { setState("DONE"); }, showErrorDialog); }, []); useEffect( () => preventNavigation(!isSafeToNavigate), [preventNavigation, isSafeToNavigate] ); return (

{trans("REFRESH_BUILD_NOTE")}

{" "}

{state !== "IDLE" && (

{state !== "DONE" ? trans("CURRENTLY_REFRESHING_BUILD") : trans("REFRESHING_BUILD_DONE")}

)}
); } lektor-lektor-1e4c150/frontend/js/dialogs/find-files/000077500000000000000000000000001523546661100225425ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/dialogs/find-files/FindFiles.tsx000066400000000000000000000055001523546661100251450ustar00rootroot00000000000000import React, { KeyboardEvent, useCallback, useContext, useEffect, useState, } from "react"; import { RecordPath, useRecordAlt } from "../../context/record-context"; import SlideDialog from "../../components/SlideDialog"; import { post } from "../../fetch"; import { getCurrentLanguge, trans } from "../../i18n"; import { showErrorDialog } from "../../error-dialog"; import ResultRow from "./ResultRow"; import { useGoToAdminPage } from "../../components/use-go-to-admin-page"; import { PageContext } from "../../context/page-context"; export type SearchResult = { parents: { title: string }[]; path: RecordPath; title: string; }; function FindFiles({ dismiss }: { dismiss: () => void }): JSX.Element { const alt = useRecordAlt(); const page = useContext(PageContext); const [query, setQuery] = useState(""); const [results, setResults] = useState([]); const [selected, setSelected] = useState(-1); const goToAdminPage = useGoToAdminPage(); const target = page === "preview" ? "preview" : "edit"; useEffect(() => { if (!query) { setResults([]); setSelected(-1); return; } let ignore = false; post("/find", { q: query, alt, lang: getCurrentLanguge() }).then( ({ results }) => { if (!ignore) { setResults(results); setSelected((selected) => Math.min(selected, results.length - 1)); } }, showErrorDialog ); return () => { ignore = true; }; }, [alt, query]); const onInputKey = useCallback( (event: KeyboardEvent) => { if (event.key === "ArrowDown") { event.preventDefault(); setSelected((selected) => (selected + 1) % results.length); } else if (event.key === "ArrowUp") { event.preventDefault(); setSelected( (selected) => (selected - 1 + results.length) % results.length ); } else if (event.key === "Enter") { const item = results[selected]; if (item) { dismiss(); goToAdminPage(target, item.path, alt); } } }, [alt, dismiss, goToAdminPage, results, selected, target] ); return ( setQuery(ev.target.value)} onKeyDown={onInputKey} placeholder={trans("FIND_FILES_PLACEHOLDER")} />
    {results.map((result, idx) => ( ))}
); } export default FindFiles; lektor-lektor-1e4c150/frontend/js/dialogs/find-files/ResultRow.tsx000066400000000000000000000015201523546661100252460ustar00rootroot00000000000000import React from "react"; import AdminLink from "../../components/AdminLink"; import { PageName } from "../../context/page-context"; import { RecordAlternative } from "../../context/record-context"; import { SearchResult } from "./FindFiles"; /** * A page in the result list in the find files dialog. */ export default function ResultRow({ result, isActive, dismiss, alt, target, }: { result: SearchResult; isActive: boolean; dismiss: () => void; alt: RecordAlternative; target: PageName; }): JSX.Element { return (
  • {result.parents.map((item) => ( {item.title} ))} {result.title}
  • ); } lektor-lektor-1e4c150/frontend/js/error-dialog.ts000066400000000000000000000004131523546661100220340ustar00rootroot00000000000000import { dispatch } from "./events"; import { FetchError } from "./fetch"; export function showErrorDialog(error: unknown): void { if (error instanceof FetchError) { dispatch("lektor-error", error); } else { console.error("unknown error:", error); } } lektor-lektor-1e4c150/frontend/js/events.ts000066400000000000000000000015651523546661100207630ustar00rootroot00000000000000export type LektorEvents = { "lektor-attachments-changed": string; "lektor-dialog": { type: "find-files" | "refresh" | "publish" }; "lektor-error": { code: string }; }; /** Dispatch one of the custom events. */ export function dispatch( type: T, detail: LektorEvents[T] ): void { document.dispatchEvent(new CustomEvent(type, { detail })); } /** Subscribe to one of Lektor's custom events. */ export function subscribe( type: T, handler: (ev: CustomEvent) => void ): void { document.addEventListener(type, handler as EventListener); } /** Subscribe from one of Lektor's custom events. */ export function unsubscribe( type: T, handler: (ev: CustomEvent) => void ): void { document.removeEventListener(type, handler as EventListener); } lektor-lektor-1e4c150/frontend/js/fetch.ts000066400000000000000000000115001523546661100205360ustar00rootroot00000000000000import { RecordInfo } from "./components/types"; import { RecordAlternative, RecordPath, RecordPathDetails, } from "./context/record-context"; import { SearchResult } from "./dialogs/find-files/FindFiles"; import { Server } from "./dialogs/Publish"; import { RecordPathInfoSegment } from "./header/BreadCrumbs"; import { NewRecordInfo } from "./views/add-child-page/types"; import { RawRecord } from "./views/edit/EditPage"; export class FetchError extends Error { constructor(readonly code: string) { super(); } } /** * Handle a JSON response - throw on HTTP error. */ function handleJSON(response: Response) { if (!response.ok) { throw new FetchError("REQUEST_FAILED"); } return response.json(); } const credentials = "same-origin"; const headers = { "Content-Type": "application/json" }; /** * Helper to execute one of the fetch requests to the Lektor admin API. */ function fetchJSON( input: string, method: "GET" | "POST" | "PUT", json?: unknown ): Promise { const init: RequestInit = json === undefined ? { credentials, method } : { credentials, method, headers, body: JSON.stringify(json) }; return fetch(input, init).then(handleJSON); } /** Required URL parameters for GET API endpoints. */ type GetAPIParams = { "/matchurl": { url_path: string }; "/newattachment": { path: RecordPath }; "/newrecord": { path: RecordPath; alt?: RecordAlternative }; "/pathinfo": { path: RecordPath }; "/ping": null; "/previewinfo": RecordPathDetails; "/rawrecord": RecordPathDetails; "/recordinfo": { path: RecordPath }; "/servers": null; }; /** Type of the returned JSON for GET API endpoints. */ type GetAPIReturns = { "/matchurl": RecordPathDetails & { exists: boolean }; "/newattachment": { label: string; can_upload: boolean }; "/newrecord": NewRecordInfo; "/pathinfo": { segments: RecordPathInfoSegment[] }; "/ping": { project_id: string }; "/previewinfo": { url: string | null }; "/rawrecord": RawRecord; "/recordinfo": RecordInfo; "/servers": { servers: Server[] }; }; /** * Required URL parameters for POST API endpoints. * Currently one endpoint (newrecord) has the data sent as JSON which isn't typed yet. */ type PostAPIParams = { "/browsefs": RecordPathDetails; "/build": null; "/clean": null; "/deleterecord": RecordPathDetails & { delete_master: "1" | "0" }; "/find": { q: string; alt: RecordAlternative; lang: string }; "/newrecord": null; // it's all in the JSON request. }; /** Type of the returned JSON for POST API endpoints. `unknown` in case that it isn't used */ type PostAPIReturns = { "/browsefs": { okay: boolean }; "/build": unknown; "/clean": unknown; "/deleterecord": unknown; "/find": { results: SearchResult[] }; "/newrecord": { valid_id: boolean; exists: boolean; path: RecordPath }; }; /** * Required JSON data for PUT API endpoints. */ type PutAPIData = { "/rawrecord": RecordPathDetails & { data: Record }; }; /** Type of the returned JSON for PUT API endpoints. `unknown` in case that it isn't used */ type PutAPIReturns = { "/rawrecord": unknown; }; /** * URL to one of Lektor's API endpoints with query string. * @param endpoint - the API endpoint * @param params - possible URL parameters to include in the query string * @returns the absolute API URL with query string. */ export function apiUrl( endpoint: string, params?: Record | null ): string { const url = `${$LEKTOR_CONFIG.admin_root}/api${endpoint}`; if (params) { const urlParams = new URLSearchParams(); Object.entries(params).forEach(([key, value]) => { urlParams.set(key, value); }); return `${url}?${urlParams.toString()}`; } return url; } /** * Load data from the JSON API. * @param endpoint - The API endpoint to get. * @param params - URL params to set. * @param json - Possible JSON body of the request. */ export function get( endpoint: T, params: GetAPIParams[T] ): Promise { const url = apiUrl(endpoint, params); return fetchJSON(url, "GET") as Promise; } /** * Execute a POST api request. * @param endpoint - The API endpoint to POST to. * @param params - URL params to set. * @param json - Possible JSON body of the request. */ export function post( endpoint: T, params: PostAPIParams[T], json?: unknown ): Promise { const url = apiUrl(endpoint, params); return fetchJSON(url, "POST", json) as Promise; } /** * Execute a PUT api request. * @param endpoint - The API endpoint to PUT to. * @param json - Possible JSON body of the request. */ export function put( endpoint: T, json: PutAPIData[T] ): Promise { const url = apiUrl(endpoint); return fetchJSON(url, "PUT", json); } lektor-lektor-1e4c150/frontend/js/globals.d.ts000066400000000000000000000001361523546661100213150ustar00rootroot00000000000000declare const $LEKTOR_CONFIG: { admin_root: string; site_root: string; lang: string; }; lektor-lektor-1e4c150/frontend/js/header/000077500000000000000000000000001523546661100203305ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/header/BreadCrumbs.tsx000066400000000000000000000046521523546661100232700ustar00rootroot00000000000000import React, { useContext, useEffect, useState } from "react"; import { useRecord } from "../context/record-context"; import { get } from "../fetch"; import { trans, trans_fallback } from "../i18n"; import { showErrorDialog } from "../error-dialog"; import AdminLink from "../components/AdminLink"; import { RecordAlternative, RecordPath } from "../context/record-context"; import { PageContext } from "../context/page-context"; export interface RecordPathInfoSegment { id: string; path: RecordPath; label: string; label_i18n?: Record; exists: boolean; can_have_children: boolean; } function Crumb({ alt, item, targetPage, }: { alt: RecordAlternative; item: RecordPathInfoSegment; targetPage: "preview" | "edit"; }) { const { path, exists } = item; const label = exists ? trans_fallback(item.label_i18n, item.label) : item.id; const className = exists ? "breadcrumb-item" : "breadcrumb-item missing-record-crumb"; return (
  • {label}
  • ); } function AddNewPage({ alt, item, }: { alt: RecordAlternative; item: RecordPathInfoSegment; }) { return item.can_have_children ? (
  • +
  • ) : null; } function BreadCrumbs(): JSX.Element { const page = useContext(PageContext); const { path, alt } = useRecord(); const [segments, setSegments] = useState( null ); useEffect(() => { let ignore = false; get("/pathinfo", { path }).then((resp) => { if (!ignore) { setSegments(resp.segments); } }, showErrorDialog); return () => { ignore = true; }; }, [path]); if (!segments) { return (
    • {trans("BACK_TO_OVERVIEW")}
    ); } const target = page === "preview" ? "preview" : "edit"; const lastItem = segments[segments.length - 1]; return (
      {segments.map((item) => ( ))}
    ); } export default BreadCrumbs; lektor-lektor-1e4c150/frontend/js/header/GlobalActions.tsx000066400000000000000000000040331523546661100236110ustar00rootroot00000000000000import React, { useCallback, useEffect } from "react"; import { useRecord } from "../context/record-context"; import { getCanonicalUrl, keyboardShortcutHandler } from "../utils"; import { get } from "../fetch"; import { trans } from "../i18n"; import { showErrorDialog } from "../error-dialog"; import { dispatch } from "../events"; const findFiles = () => dispatch("lektor-dialog", { type: "find-files" }); const refresh = () => dispatch("lektor-dialog", { type: "refresh" }); const publish = () => dispatch("lektor-dialog", { type: "publish" }); const onKeyPress = keyboardShortcutHandler( { key: "Control+g", mac: "Meta+g", preventDefault: true }, findFiles ); export default function GlobalActions(): JSX.Element { const record = useRecord(); useEffect(() => { window.addEventListener("keydown", onKeyPress); return () => window.removeEventListener("keydown", onKeyPress); }, []); const returnToWebsite = useCallback(() => { get("/previewinfo", record).then(({ url }) => { window.location.href = url === null ? getCanonicalUrl("/") : getCanonicalUrl(url); }, showErrorDialog); }, [record]); return (
    ); } lektor-lektor-1e4c150/frontend/js/header/Header.tsx000066400000000000000000000014361523546661100222640ustar00rootroot00000000000000import React from "react"; import BreadCrumbs from "./BreadCrumbs"; import GlobalActions from "./GlobalActions"; export default function Header({ sidebarIsActive, toggleSidebar, }: { sidebarIsActive: boolean; toggleSidebar: () => void; }): JSX.Element { return (
    ); } lektor-lektor-1e4c150/frontend/js/i18n.test.ts000066400000000000000000000007331523546661100212100ustar00rootroot00000000000000import { promises } from "fs"; import { strictEqual } from "assert"; import { translations } from "./i18n"; import { join } from "path"; const { readdir } = promises; it("i18n: imports translations for all languages", () => { return readdir(join(__dirname, "..", "..", "lektor", "translations")).then( (allTranslations) => strictEqual( allTranslations.filter((s) => s.endsWith(".json")).length, Object.keys(translations).length ) ); }); lektor-lektor-1e4c150/frontend/js/i18n.tsx000066400000000000000000000046351523546661100204270ustar00rootroot00000000000000import ca from "../../lektor/translations/ca.json"; import de from "../../lektor/translations/de.json"; import en from "../../lektor/translations/en.json"; import es from "../../lektor/translations/es.json"; import fr from "../../lektor/translations/fr.json"; import it from "../../lektor/translations/it.json"; import ja from "../../lektor/translations/ja.json"; import ko from "../../lektor/translations/ko.json"; import nl from "../../lektor/translations/nl.json"; import pl from "../../lektor/translations/pl.json"; import pt from "../../lektor/translations/pt.json"; import ru from "../../lektor/translations/ru.json"; import zh from "../../lektor/translations/zh.json"; type LektorTranslations = typeof en; export type TranslationEntry = keyof LektorTranslations; export const translations: Record> = { ca, de, en, es, fr, it, ja, ko, nl, pl, pt, ru, zh, }; let currentLanguage = "en"; let currentTranslations = translations[currentLanguage] ?? {}; export function setCurrentLanguage(lang: string): void { currentLanguage = lang; currentTranslations = translations[currentLanguage]; } export function getCurrentLanguge(): string { return currentLanguage; } export type Translatable = Partial>; /** * Get translation for a key. * @param key - The translation key. */ export function trans(key: TranslationEntry): string { return currentTranslations[key] ?? key; } /** * Get translation from an object of translations * @param translation_object - The object containing translations. */ export function trans_obj(translation_object: Translatable): string { return translation_object[currentLanguage] ?? translation_object.en ?? ""; } /** * Get translation for a key with a fallback. * @param translation_object - The translation key * @param fallback - A fallback to use if the translation is missing. */ export function trans_fallback( translation_object: Translatable | undefined, fallback: string ): string { if (!translation_object) { return fallback; } return trans_obj(translation_object) || fallback; } /** * Get translation for a key with a `%s` replacement. * @param key - The translation key * @param replacement - replacement for `%s`. */ export function trans_format( key: TranslationEntry, replacement: string ): string { const translation = trans(key); return translation.replace("%s", replacement); } lektor-lektor-1e4c150/frontend/js/main.tsx000066400000000000000000000030041523546661100205610ustar00rootroot00000000000000import React, { useMemo } from "react"; import ReactDOM from "react-dom"; import { BrowserRouter, Redirect, useLocation, useRouteMatch, } from "react-router-dom"; import { setCurrentLanguage } from "./i18n"; import { RecordContext, RecordPathDetails } from "./context/record-context"; import App from "./views/App"; import { adminPath } from "./components/use-go-to-admin-page"; import "font-awesome/css/font-awesome.css"; import "../scss/main.scss"; import { PageContext, PageName, isPageName } from "./context/page-context"; import { trimSlashes } from "./utils"; function Page({ page }: { page: PageName }) { const { search } = useLocation(); const record = useMemo((): RecordPathDetails => { const params = new URLSearchParams(search); return { path: `/${trimSlashes(params.get("path") ?? "/")}`, alt: params.get("alt") ?? "_primary", }; }, [search]); return ( ); } function Main() { const root = $LEKTOR_CONFIG.admin_root; const page = useRouteMatch<{ page: string }>(`${root}/:page`)?.params.page; if (!isPageName(page)) { return ; } return ; } const dash = document.getElementById("dash"); if (dash) { setCurrentLanguage($LEKTOR_CONFIG.lang); ReactDOM.render(
    , dash ); } lektor-lektor-1e4c150/frontend/js/sidebar/000077500000000000000000000000001523546661100205115ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/sidebar/Alternatives.tsx000066400000000000000000000021531523546661100237130ustar00rootroot00000000000000import React, { memo, useContext } from "react"; import { Alternative } from "../components/types"; import { trans, trans_obj } from "../i18n"; import AdminLink from "../components/AdminLink"; import { PageContext } from "../context/page-context"; import { useRecordPath } from "../context/record-context"; function Alternatives({ alts }: { alts: Alternative[] }) { const page = useContext(PageContext); const path = useRecordPath(); if (alts.length < 2) { return null; } const items = alts.map((item) => { let title = trans_obj(item.name_i18n); if (item.is_primary) { title += ` (${trans("PRIMARY_ALT")})`; } else if (item.primary_overlay) { title += ` (${trans("PRIMARY_OVERLAY")})`; } const className = item.exists ? "alt" : "alt alt-missing"; return (
  • {title}
  • ); }); return ( <>

    {trans("ALTS")}

      {items}
    ); } export default memo(Alternatives); lektor-lektor-1e4c150/frontend/js/sidebar/AttachmentActions.tsx000066400000000000000000000017001523546661100246600ustar00rootroot00000000000000import React, { memo } from "react"; import AdminLink from "../components/AdminLink"; import { useRecordAlt } from "../context/record-context"; import { RecordInfo } from "../components/types"; import { trans } from "../i18n"; function AttachmentActions({ recordInfo }: { recordInfo: RecordInfo }) { const alt = useRecordAlt(); const attachments = recordInfo.attachments; return ( <>

    {trans("ATTACHMENTS")}

      {attachments.length > 0 ? ( attachments.map((atch) => { return (
    • {atch.id} ({atch.type})
    • ); }) ) : (
    • {trans("NO_ATTACHMENTS")}
    • )}
    ); } export default memo(AttachmentActions); lektor-lektor-1e4c150/frontend/js/sidebar/ChildActions.tsx000066400000000000000000000025001523546661100236120ustar00rootroot00000000000000import React from "react"; import { trans, trans_obj } from "../i18n"; import { useRecordAlt } from "../context/record-context"; import { RecordChild } from "../components/types"; import ChildPagination from "./ChildPagination"; import { CHILDREN_PER_PAGE } from "./constants"; import AdminLink from "../components/AdminLink"; export default function ChildActions({ targetPage, allChildren, page, setPage, }: { targetPage: "preview" | "edit"; allChildren: RecordChild[]; page: number; setPage: (n: number) => void; }): JSX.Element { const alt = useRecordAlt(); const shownChildren = allChildren.slice( (page - 1) * CHILDREN_PER_PAGE, page * CHILDREN_PER_PAGE ); return ( <>

    {trans("CHILD_PAGES")}

      {shownChildren.length > 0 ? ( shownChildren.map((child) => (
    • {trans_obj(child.label_i18n)}
    • )) ) : (
    • {trans("NO_CHILD_PAGES")}
    • )}
    ); } lektor-lektor-1e4c150/frontend/js/sidebar/ChildPagination.tsx000066400000000000000000000020021523546661100243000ustar00rootroot00000000000000import React from "react"; import { CHILDREN_PER_PAGE } from "./constants"; /** Pagination buttons for the list of children in the sidebar. */ export default function ChildPagination({ page, numberOfChildren, setPage, }: { page: number; numberOfChildren: number; setPage: (n: number) => void; }): JSX.Element | null { const pages = Math.ceil(numberOfChildren / CHILDREN_PER_PAGE); if (pages <= 1) { return null; } return (
  • {page > 1 ? ( { ev.preventDefault(); setPage(page - 1); }} > « ) : ( « )} {page + " / " + pages} {page < pages ? ( { ev.preventDefault(); setPage(page + 1); }} > » ) : ( » )}
  • ); } lektor-lektor-1e4c150/frontend/js/sidebar/ChildPosCache.test.ts000066400000000000000000000010221523546661100244630ustar00rootroot00000000000000import { strictEqual } from "assert"; import { ChildPosCache } from "./Sidebar"; it("sidebar: child page position cache", () => { const cache = new ChildPosCache(); strictEqual(cache.getPosition("test", 50), 1); cache.rememberPosition("test", 4); strictEqual(cache.getPosition("test", 50), 4); cache.rememberPosition("test", 2); strictEqual(cache.getPosition("test", 50), 2); cache.rememberPosition("test2", 3); strictEqual(cache.getPosition("test", 50), 2); strictEqual(cache.getPosition("test2", 50), 3); }); lektor-lektor-1e4c150/frontend/js/sidebar/PageActions.tsx000066400000000000000000000053401523546661100234500ustar00rootroot00000000000000import React, { MouseEvent, memo, useCallback } from "react"; import { useRecord } from "../context/record-context"; import { RecordInfo } from "../components/types"; import { trans } from "../i18n"; import { getPlatform } from "../utils"; import { post } from "../fetch"; import { showErrorDialog } from "../error-dialog"; import AdminLinkWithHotkey from "../components/AdminLinkWithHotkey"; import AdminLink from "../components/AdminLink"; const getBrowseButtonTitle = () => { const platform = getPlatform(); if (platform === "mac") { return trans("BROWSE_FS_MAC"); } else if (platform === "windows") { return trans("BROWSE_FS_WINDOWS"); } else { return trans("BROWSE_FS"); } }; function BrowseFSLink() { const record = useRecord(); const fsOpen = useCallback( (ev: MouseEvent) => { ev.preventDefault(); post("/browsefs", record).then(({ okay }) => { if (!okay) { alert(trans("ERROR_CANNOT_BROWSE_FS")); } }, showErrorDialog); }, [record] ); return ( {getBrowseButtonTitle()} ); } const editKey = { key: "Control+e", mac: "Meta+e", preventDefault: true }; function PageActions({ recordInfo }: { recordInfo: RecordInfo }) { const { path, alt } = useRecord(); return ( <>

    {recordInfo.is_attachment ? trans("ATTACHMENT_ACTIONS") : trans("PAGE_ACTIONS")}

    • {recordInfo.is_attachment ? trans("EDIT_METADATA") : trans("EDIT")}
    • {recordInfo.can_be_deleted && (
    • {trans("DELETE")}
    • )}
    • {trans("PREVIEW")}
    • {recordInfo.exists && (
    • )} {recordInfo.can_have_children && (
    • {trans("ADD_CHILD_PAGE")}
    • )} {recordInfo.can_have_attachments && (
    • {trans("ADD_ATTACHMENT")}
    • )}
    ); } export default memo(PageActions); lektor-lektor-1e4c150/frontend/js/sidebar/Sidebar.tsx000066400000000000000000000065301523546661100226260ustar00rootroot00000000000000import React, { useContext, useEffect, useReducer, useState } from "react"; import { get } from "../fetch"; import { trans_obj } from "../i18n"; import { showErrorDialog } from "../error-dialog"; import { Alternative, RecordInfo } from "../components/types"; import PageActions from "./PageActions"; import Alternatives from "./Alternatives"; import AttachmentActions from "./AttachmentActions"; import { CHILDREN_PER_PAGE } from "./constants"; import ChildActions from "./ChildActions"; import { subscribe, unsubscribe } from "../events"; import { PageContext } from "../context/page-context"; import { useRecordPath } from "../context/record-context"; /** * Keep a cache of the page number in the list of subpages that we are currently * on. Only keeps this page number in memory for the last five records. */ export class ChildPosCache { private memo: [record: string, page: number][]; constructor() { this.memo = []; } /** Remember the page for a record. */ rememberPosition(record: string, page: number): void { // remove current value this.memo = this.memo.filter(([r]) => r !== record); this.memo.unshift([record, page]); if (this.memo.length > 5) { this.memo.length = 5; } } getPosition(record: string, childCount: number): number { const page = this.memo.find(([r]) => r === record)?.[1]; return page ? Math.min(page, Math.ceil(childCount / CHILDREN_PER_PAGE)) : 1; } } const compareAlternatives = (a: Alternative, b: Alternative) => { const nameA = (a.is_primary ? "A" : "B") + trans_obj(a.name_i18n); const nameB = (b.is_primary ? "A" : "B") + trans_obj(b.name_i18n); return nameA === nameB ? 0 : nameA < nameB ? -1 : 1; }; function Sidebar(): JSX.Element | null { const page = useContext(PageContext); const path = useRecordPath(); const [recordInfo, setRecordInfo] = useState(null); const [childrenPage, setChildrenPage] = useState(1); const [childPosCache] = useState(() => new ChildPosCache()); const [updateForced, forceUpdate] = useReducer((x) => x + 1, 0); useEffect(() => { const handler = ({ detail }: CustomEvent) => { if (detail === path) { forceUpdate(); } }; subscribe("lektor-attachments-changed", handler); return () => unsubscribe("lektor-attachments-changed", handler); }, [path]); useEffect(() => { let ignore = false; get("/recordinfo", { path }).then((resp) => { if (!ignore) { setRecordInfo({ ...resp, alts: resp.alts.sort(compareAlternatives) }); setChildrenPage(childPosCache.getPosition(path, resp.children.length)); } }, showErrorDialog); return () => { ignore = true; }; }, [path, childPosCache, updateForced]); if (!recordInfo) { return null; } return ( <> {recordInfo.can_have_children && ( { childPosCache.rememberPosition(path, page); setChildrenPage(page); }} /> )} {recordInfo.can_have_attachments && ( )} ); } export default Sidebar; lektor-lektor-1e4c150/frontend/js/sidebar/constants.ts000066400000000000000000000001331523546661100230720ustar00rootroot00000000000000/** The number of children to show in the sidebar. */ export const CHILDREN_PER_PAGE = 15; lektor-lektor-1e4c150/frontend/js/slugify.test.ts000066400000000000000000000006401523546661100221100ustar00rootroot00000000000000import { strictEqual } from "assert"; import { slugify } from "./slugify"; describe("slugs", () => { it("slugify strings", () => { strictEqual(slugify("asdf asdf"), "asdf-asdf"); strictEqual(slugify("äasdf asdf"), "aeasdf-asdf"); strictEqual(slugify("<3"), "love"); strictEqual(slugify("€"), "euro"); strictEqual(slugify("&"), "and"); strictEqual(slugify("..€.."), "euro"); }); }); lektor-lektor-1e4c150/frontend/js/slugify.ts000066400000000000000000000134231523546661100211350ustar00rootroot00000000000000// https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/media/js/urlify.js const charmap: Record = { // latin À: "A", �: "A", Â: "A", Ã: "A", Ä: "Ae", Å: "A", Æ: "AE", Ç: "C", È: "E", É: "E", Ê: "E", Ë: "E", Ì: "I", �: "I", Î: "I", �: "I", �: "D", Ñ: "N", Ò: "O", Ó: "O", Ô: "O", Õ: "O", Ö: "Oe", �: "O", Ø: "O", Ù: "U", Ú: "U", Û: "U", Ü: "Ue", Ű: "U", �: "Y", Þ: "TH", ß: "ss", à: "a", á: "a", â: "a", ã: "a", ä: "ae", å: "a", æ: "ae", ç: "c", è: "e", é: "e", ê: "e", ë: "e", ì: "i", í: "i", î: "i", ï: "i", ð: "d", ñ: "n", ò: "o", ó: "o", ô: "o", õ: "o", ö: "oe", ő: "o", ø: "o", ù: "u", ú: "u", û: "u", ü: "ue", ű: "u", ý: "y", þ: "th", ÿ: "y", ẞ: "SS", // greek α: "a", β: "b", γ: "g", δ: "d", ε: "e", ζ: "z", η: "h", θ: "8", ι: "i", κ: "k", λ: "l", μ: "m", ν: "n", ξ: "3", ο: "o", π: "p", �: "r", σ: "s", τ: "t", υ: "y", φ: "f", χ: "x", ψ: "ps", ω: "w", ά: "a", έ: "e", ί: "i", ό: "o", �: "y", ή: "h", ώ: "w", ς: "s", ϊ: "i", ΰ: "y", ϋ: "y", �: "i", Α: "A", Β: "B", Γ: "G", Δ: "D", Ε: "E", Ζ: "Z", Η: "H", Θ: "8", Ι: "I", Κ: "K", Λ: "L", Μ: "M", �: "N", Ξ: "3", Ο: "O", Π: "P", Ρ: "R", Σ: "S", Τ: "T", Υ: "Y", Φ: "F", Χ: "X", Ψ: "PS", Ω: "W", Ά: "A", Έ: "E", Ί: "I", Ό: "O", Ύ: "Y", Ή: "H", �: "W", Ϊ: "I", Ϋ: "Y", // turkish ş: "s", Ş: "S", ı: "i", İ: "I", ğ: "g", Ğ: "G", // russian а: "a", б: "b", в: "v", г: "g", д: "d", е: "e", ё: "yo", ж: "zh", з: "z", и: "i", й: "j", к: "k", л: "l", м: "m", н: "n", о: "o", п: "p", р: "r", �: "s", т: "t", у: "u", ф: "f", х: "h", ц: "c", ч: "ch", ш: "sh", щ: "sh", ъ: "u", ы: "y", ь: "", �: "e", ю: "yu", �: "ya", �: "A", Б: "B", В: "V", Г: "G", Д: "D", Е: "E", �: "Yo", Ж: "Zh", З: "Z", И: "I", Й: "J", К: "K", Л: "L", М: "M", �: "N", О: "O", П: "P", Р: "R", С: "S", Т: "T", У: "U", Ф: "F", Х: "H", Ц: "C", Ч: "Ch", Ш: "Sh", Щ: "Sh", Ъ: "U", Ы: "Y", Ь: "", Э: "E", Ю: "Yu", Я: "Ya", // ukranian Є: "Ye", І: "I", Ї: "Yi", �: "G", є: "ye", і: "i", ї: "yi", ґ: "g", // czech �: "c", �: "d", ě: "e", ň: "n", ř: "r", š: "s", ť: "t", ů: "u", ž: "z", Č: "C", Ď: "D", Ě: "E", Ň: "N", Ř: "R", Š: "S", Ť: "T", Ů: "U", Ž: "Z", // polish ą: "a", ć: "c", ę: "e", ł: "l", ń: "n", ś: "s", ź: "z", ż: "z", Ą: "A", Ć: "C", Ę: "E", �: "L", Ń: "N", Ś: "S", Ź: "Z", Ż: "Z", // latvian �: "a", ē: "e", ģ: "g", ī: "i", ķ: "k", ļ: "l", ņ: "n", ū: "u", Ā: "A", Ē: "E", Ģ: "G", Ī: "I", Ķ: "K", Ļ: "L", Ņ: "N", Ū: "U", // lithuanian ė: "e", į: "i", ų: "u", Ė: "E", Į: "I", Ų: "U", // romanian ț: "t", Ț: "T", ţ: "t", Ţ: "T", ș: "s", Ș: "S", ă: "a", Ă: "A", // currency "€": "euro", "₢": "cruzeiro", "₣": "french franc", "£": "pound", "₤": "lira", "₥": "mill", "₦": "naira", "₧": "peseta", "₨": "rupee", "₩": "won", "₪": "new shequel", "₫": "dong", "₭": "kip", "₮": "tugrik", "₯": "drachma", "₰": "penny", "₱": "peso", "₲": "guarani", "₳": "austral", "₴": "hryvnia", "₵": "cedi", "¢": "cent", "¥": "yen", 元: "yuan", 円: "yen", "﷼": "rial", "₠": "ecu", "¤": "currency", "฿": "baht", $: "dollar", "₹": "indian rupee", // symbols "©": "(c)", œ: "oe", Œ: "OE", "∑": "sum", "®": "(r)", "†": "+", "“": '"', "�": '"', "‘": "'", "’": "'", "∂": "d", ƒ: "f", "™": "tm", "℠": "sm", "…": "...", "˚": "o", º: "o", ª: "a", "•": "*", "∆": "delta", "∞": "infinity", "♥": "love", "&": "and", "|": "or", "<": "less", ">": "greater", "=": "equals", }; const multicharmap: Record = { "<3": "love", "&&": "and", "||": "or", "w/": "with", }; interface SlugifyOptions { replacement: string; remove: string | RegExp; charmap: Record; multicharmap: Record; } const pretty: SlugifyOptions = { replacement: "-", remove: /[.]/g, charmap, multicharmap, }; export function slugify(rawString: string): string { const string = rawString.toString(); const opts = pretty; const lengths: number[] = []; Object.keys(opts.multicharmap).forEach((key) => { const len = key.length; if (!lengths.includes(len)) { lengths.push(len); } }); let result = ""; for (let char, i = 0, l = string.length; i < l; i++) { char = string[i]; if ( !lengths.some((len) => { const str = string.substr(i, len); if (opts.multicharmap[str]) { i += len - 1; char = opts.multicharmap[str]; return true; } else { return false; } }) ) { if (opts.charmap[char]) { char = opts.charmap[char]; } } char = char.replace(/[^\w\s\-._~]/g, ""); // allowed if (opts.remove) { // add flavour: char = char.replace(opts.remove, ""); } result += char; } // trim leading/trailing spaces: result = result.replace(/^\s+|\s+$/g, ""); // convert spaces: result = result.replace(/[-\s]+/g, opts.replacement); // remove trailing separator: return result.replace(opts.replacement + "$", ""); } lektor-lektor-1e4c150/frontend/js/userLabel.tsx000066400000000000000000000012271523546661100215600ustar00rootroot00000000000000import React from "react"; import { trans_obj, Translatable } from "./i18n"; /** * Formats a user label appropriately */ export function formatUserLabel( inputConfig: Translatable | string ): JSX.Element { const label = typeof inputConfig === "string" ? inputConfig : trans_obj(inputConfig); if (!label) { return ; } const iconData = label.match(/^\[\[\s*(.*?)\s*(;\s*(.*?))?\s*\]\]$/); if (iconData) { let className = "fa fa-" + iconData[1]; if ((iconData[3] || "").match(/90|180|270/)) { className += " fa-rotate-" + iconData[3]; } return ; } return {label}; } lektor-lektor-1e4c150/frontend/js/utils.test.ts000066400000000000000000000032231523546661100215660ustar00rootroot00000000000000import { ok, strictEqual } from "assert"; import { isValidUrl, trimLeadingSlashes, trimTrailingSlashes, trimSlashes, trimColons, } from "./utils"; describe("Utils", () => { it("check URL validity", () => { ok(isValidUrl("http://example.com")); ok(isValidUrl("https://example.com")); // ok(!isValidUrl("https:file")); // ignoring this case in favor of more generic regex ok(!isValidUrl("https:/example.com")); ok(isValidUrl("ftp://example.com")); ok(isValidUrl("ftps://example.com")); ok(!isValidUrl("ftps:/example.com")); ok(isValidUrl("mailto:user@example.com")); ok(isValidUrl("mailto:anythingreally")); ok(!isValidUrl("mailto:with spaces")); ok(isValidUrl("z39.50r://example.com:8001/database?45")); ok(isValidUrl("svn+ssh://example.com")); ok(isValidUrl("feed:example.com/rss")); ok(isValidUrl("webcal:example.com/calendar")); ok(isValidUrl("ms-help://section/path/file.htm")); ok(!isValidUrl("anyscheme:/oneslash")); }); it("trim strings of slashes and colons", () => { strictEqual(trimLeadingSlashes("///asdf"), "asdf"); strictEqual(trimLeadingSlashes("asdf///"), "asdf///"); strictEqual(trimLeadingSlashes(""), ""); strictEqual(trimTrailingSlashes("///asdf"), "///asdf"); strictEqual(trimTrailingSlashes("asdf///"), "asdf"); strictEqual(trimTrailingSlashes(""), ""); strictEqual(trimSlashes("///asdf///"), "asdf"); strictEqual(trimSlashes("asdf///"), "asdf"); strictEqual(trimSlashes("///asdf"), "asdf"); strictEqual(trimSlashes(""), ""); strictEqual(trimColons(":asdf:"), "asdf"); strictEqual(trimColons(":asdf:asdf:"), "asdf:asdf"); }); }); lektor-lektor-1e4c150/frontend/js/utils.ts000066400000000000000000000046351523546661100206200ustar00rootroot00000000000000import { RecordPath } from "./context/record-context"; export function isValidUrl(url: string): boolean { return !!url.match(/^([a-z0-9+.-]+):(\/\/)?[^/]\S+$/); } /** * Trim leading slashes from a string. */ export function trimLeadingSlashes(string: string): string { const match = /^\/*(.*?)$/.exec(string); return match ? match[1] : ""; } /** * Trim trailing slashes from a string. */ export function trimTrailingSlashes(string: string): string { const match = /^(.*?)\/*$/.exec(string); return match ? match[1] : ""; } /** * Trim both leading and trailing slashes from a string. */ export function trimSlashes(string: string): string { const match = /^\/*(.*?)\/*$/.exec(string); return match ? match[1] : ""; } /** * Trim both leading and trailing colons from a string. */ export function trimColons(string: string): string { const match = /^:*(.*?):*$/.exec(string); return match ? match[1] : ""; } export function getCanonicalUrl(localPath: string): string { const base = trimTrailingSlashes($LEKTOR_CONFIG.site_root); return `${base}/${trimLeadingSlashes(localPath)}`; } export function getPlatform(): "windows" | "mac" | "linux" | "other" { if (navigator.appVersion.indexOf("Win") !== -1) { return "windows"; } else if (navigator.appVersion.indexOf("Mac") !== -1) { return "mac"; } else if ( navigator.appVersion.indexOf("X11") !== -1 || navigator.appVersion.indexOf("Linux") !== -1 ) { return "linux"; } return "other"; } export interface KeyboardShortcut { key: string; mac?: string; preventDefault?: boolean; } export function getKey(shortcut: KeyboardShortcut): string { return getPlatform() === "mac" && shortcut.mac ? shortcut.mac : shortcut.key; } export function keyboardShortcutHandler( shortcut: KeyboardShortcut, action: (ev: KeyboardEvent) => void ): (ev: KeyboardEvent) => void { const key = getKey(shortcut); return (ev) => { let eventKey = ev.key; if (ev.altKey) { eventKey = `Alt+${eventKey}`; } if (ev.ctrlKey) { eventKey = `Control+${eventKey}`; } if (ev.metaKey) { eventKey = `Meta+${eventKey}`; } if (eventKey === key) { if (shortcut.preventDefault) { ev.preventDefault(); } action(ev); } }; } export function getParentPath(path: RecordPath): RecordPath | null { const match = /^(\/.*)\/[^/]*$/.exec(path); return match ? (match[1] as RecordPath) : null; } lektor-lektor-1e4c150/frontend/js/views/000077500000000000000000000000001523546661100202355ustar00rootroot00000000000000lektor-lektor-1e4c150/frontend/js/views/AddAttachmentPage.tsx000066400000000000000000000053661523546661100243050ustar00rootroot00000000000000import React, { ChangeEvent, useCallback, useEffect, useRef, useState, } from "react"; import { useRecordPath } from "../context/record-context"; import { apiUrl, get } from "../fetch"; import { trans, trans_format } from "../i18n"; import { showErrorDialog } from "../error-dialog"; import { dispatch } from "../events"; type NewAttachmentInfo = { label: string; can_upload: boolean; }; function AddAttachmentPage(): JSX.Element | null { const path = useRecordPath(); const [newAttachmentInfo, setNewAttachmentInfo] = useState(null); const fileInput = useRef(null); const [currentFiles, setCurrentFiles] = useState([]); const [isUploading, setIsUploading] = useState(false); const [currentProgress, setCurrentProgress] = useState(0); useEffect(() => { let ignore = false; get("/newattachment", { path }).then((resp) => { if (!ignore) { setNewAttachmentInfo(resp); } }, showErrorDialog); return () => { ignore = true; }; }, [path]); const onFileSelected = useCallback( ({ target }: ChangeEvent) => { if (isUploading || !target.files) { return; } const files = Array.prototype.slice.call(target.files, 0); setCurrentFiles(files); setIsUploading(true); const formData = new FormData(); formData.append("path", path); files.forEach((file) => { formData.append("file", file, file.name); }); const xhr = new XMLHttpRequest(); xhr.open("POST", apiUrl("/newattachment")); xhr.onprogress = (event) => { setCurrentProgress(Math.round((event.loaded * 100) / event.total)); }; xhr.onload = () => { setIsUploading(false); setCurrentProgress(100); dispatch("lektor-attachments-changed", path); }; xhr.send(formData); }, [path, isUploading] ); if (!newAttachmentInfo) { return null; } return ( <>

    {trans_format("ADD_ATTACHMENT_TO", newAttachmentInfo.label)}

    {trans("ADD_ATTACHMENT_NOTE")}

      {currentFiles.map((file) => (
    • {file.name} ({file.type})
    • ))}

    {trans("PROGRESS")}: {currentProgress}%

    ); } export default AddAttachmentPage; lektor-lektor-1e4c150/frontend/js/views/App.tsx000066400000000000000000000030271523546661100215170ustar00rootroot00000000000000import React, { useContext, useReducer } from "react"; import Header from "../header/Header"; import Sidebar from "../sidebar/Sidebar"; import DialogSlot from "../components/DialogSlot"; import ServerStatus from "../components/ServerStatus"; import ErrorDialog from "../components/ErrorDialog"; import EditPage from "./edit/EditPage"; import DeletePage from "./delete/DeletePage"; import PreviewPage from "./PreviewPage"; import AddChildPage from "./add-child-page/AddChildPage"; import AddAttachmentPage from "./AddAttachmentPage"; import { PageContext } from "../context/page-context"; const mainComponentForPage = { edit: EditPage, delete: DeletePage, preview: PreviewPage, "add-child": AddChildPage, upload: AddAttachmentPage, } as const; export default function App() { const page = useContext(PageContext); const [sidebarIsActive, toggleSidebar] = useReducer((v) => !v, false); const MainComponent = mainComponentForPage[page]; return ( <>
    ); } lektor-lektor-1e4c150/frontend/js/views/PreviewPage.tsx000066400000000000000000000061441523546661100232200ustar00rootroot00000000000000import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react"; import { trimLeadingSlashes, trimTrailingSlashes } from "../utils"; import { get } from "../fetch"; import { useRecord } from "../context/record-context"; import { showErrorDialog } from "../error-dialog"; import { useGoToAdminPage } from "../components/use-go-to-admin-page"; function getSiteRootUrl() { const site_root = `/${trimLeadingSlashes($LEKTOR_CONFIG.site_root)}`; const absRootUrl = new URL(site_root, document.baseURI).href; return trimTrailingSlashes(absRootUrl); } function usePreviewUrl(siteRootUrl: string): string { const { path, alt } = useRecord(); const [previewUrl, setPreviewUrl] = useState("about:blank"); useEffect(() => { let ignore = false; get("/previewinfo", { path, alt }).then(({ url }) => { if (!ignore) { setPreviewUrl(url ? siteRootUrl + url : "about:blank"); } }, showErrorDialog); return () => { ignore = true; }; }, [path, alt, siteRootUrl]); return previewUrl; } export default function PreviewPage(): JSX.Element { const siteRootUrl = useMemo(getSiteRootUrl, []); const previewUrl = usePreviewUrl(siteRootUrl); const iframe = useRef(null); const goToAdminPage = useGoToAdminPage(); useEffect(() => { const location = iframe.current?.contentWindow?.location; if (location && location.href !== previewUrl) { location.replace(previewUrl); } }, [previewUrl]); const onLoad = useCallback(() => { const contentWindow = iframe.current?.contentWindow; if (contentWindow) { // Note that cross-origin security restrictions prevent us // from being able to inspect or manipulate pages from // other origins, so this will only work when the iframe is // previewing one of our pages. try { // Pass keydown events on to parent window // This is an attempt to ensure that hotkeys like Ctl-e work // even when the iframe has the focus. contentWindow.addEventListener("keydown", (ev: KeyboardEvent) => { const clone = new KeyboardEvent(ev.type, ev); window.dispatchEvent(clone) || ev.preventDefault(); }); const href = contentWindow.location?.href; if (href && href !== previewUrl) { // Iframe has been navigated to a new page (e.g. user clicked link) if (href.startsWith(`${siteRootUrl}/`)) { // Attempt to move Admin UI to new page const url_path = href.substring(siteRootUrl.length); get("/matchurl", { url_path }).then(({ exists, alt, path }) => { if (exists) { goToAdminPage("preview", path, alt); } }, showErrorDialog); } } } catch (e) { if (e instanceof DOMException && e.name === "SecurityError") { // Ignore exceptions having to do with cross-origin restrictions } else { throw e; } } } }, [goToAdminPage, previewUrl, siteRootUrl]); return