lmfit-0.9.2/0000755000032700003100000000000012613717514014124 5ustar newvillegeocars00000000000000lmfit-0.9.2/PKG-INFO0000644000032700003100000000327112613717514015224 0ustar newvillegeocars00000000000000Metadata-Version: 1.1 Name: lmfit Version: 0.9.2 Summary: Least-Squares Minimization with Bounds and Constraints Home-page: http://lmfit.github.io/lmfit-py/ Author: LMFit Development Team Author-email: matt.newville@gmail.com License: BSD Download-URL: http://lmfit.github.io//lmfit-py/ Description: A library for least-squares minimization and data fitting in Python. Built on top of scipy.optimize, lmfit provides a Parameter object which can be set as fixed or free, can have upper and/or lower bounds, or can be written in terms of algebraic constraints of other Parameters. The user writes a function to be minimized as a function of these Parameters, and the scipy.optimize methods are used to find the optimal values for the Parameters. The Levenberg-Marquardt (leastsq) is the default minimization algorithm, and provides estimated standard errors and correlations between varied Parameters. Other minimization methods, including Nelder-Mead's downhill simplex, Powell's method, BFGS, Sequential Least Squares, and others are also supported. Bounds and contraints can be placed on Parameters for all of these methods. In addition, methods for explicitly calculating confidence intervals are provided for exploring minmization problems where the approximation of estimating Parameter uncertainties from the covariance matrix is questionable. Platform: Windows Platform: Linux Platform: Mac OS X Classifier: Intended Audience :: Science/Research Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Topic :: Scientific/Engineering lmfit-0.9.2/versioneer.py0000644000032700003100000011106712603520205016651 0ustar newvillegeocars00000000000000 # Version: 0.12 """ The Versioneer ============== * like a rocketeer, but for versions! * https://github.com/warner/python-versioneer * Brian Warner * License: Public Domain * Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, and pypy [![Build Status](https://travis-ci.org/warner/python-versioneer.png?branch=master)](https://travis-ci.org/warner/python-versioneer) This is a tool for managing a recorded version number in distutils-based python projects. The goal is to remove the tedious and error-prone "update the embedded version string" step from your release process. Making a new release should be as easy as recording a new tag in your version-control system, and maybe making new tarballs. ## Quick Install * `pip install versioneer` to somewhere to your $PATH * run `versioneer-installer` in your source tree: this installs `versioneer.py` * follow the instructions below (also in the `versioneer.py` docstring) ## Version Identifiers Source trees come from a variety of places: * a version-control system checkout (mostly used by developers) * a nightly tarball, produced by build automation * a snapshot tarball, produced by a web-based VCS browser, like github's "tarball from tag" feature * a release tarball, produced by "setup.py sdist", distributed through PyPI Within each source tree, the version identifier (either a string or a number, this tool is format-agnostic) can come from a variety of places: * ask the VCS tool itself, e.g. "git describe" (for checkouts), which knows about recent "tags" and an absolute revision-id * the name of the directory into which the tarball was unpacked * an expanded VCS keyword ($Id$, etc) * a `_version.py` created by some earlier build step For released software, the version identifier is closely related to a VCS tag. Some projects use tag names that include more than just the version string (e.g. "myproject-1.2" instead of just "1.2"), in which case the tool needs to strip the tag prefix to extract the version identifier. For unreleased software (between tags), the version identifier should provide enough information to help developers recreate the same tree, while also giving them an idea of roughly how old the tree is (after version 1.2, before version 1.3). Many VCS systems can report a description that captures this, for example 'git describe --tags --dirty --always' reports things like "0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the 0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has uncommitted changes. The version identifier is used for multiple purposes: * to allow the module to self-identify its version: `myproject.__version__` * to choose a name and prefix for a 'setup.py sdist' tarball ## Theory of Operation Versioneer works by adding a special `_version.py` file into your source tree, where your `__init__.py` can import it. This `_version.py` knows how to dynamically ask the VCS tool for version information at import time. However, when you use "setup.py build" or "setup.py sdist", `_version.py` in the new copy is replaced by a small static file that contains just the generated version data. `_version.py` also contains `$Revision$` markers, and the installation process marks `_version.py` to have this marker rewritten with a tag name during the "git archive" command. As a result, generated tarballs will contain enough information to get the proper version. ## Installation First, decide on values for the following configuration variables: * `VCS`: the version control system you use. Currently accepts "git". * `versionfile_source`: A project-relative pathname into which the generated version strings should be written. This is usually a `_version.py` next to your project's main `__init__.py` file, so it can be imported at runtime. If your project uses `src/myproject/__init__.py`, this should be `src/myproject/_version.py`. This file should be checked in to your VCS as usual: the copy created below by `setup.py versioneer` will include code that parses expanded VCS keywords in generated tarballs. The 'build' and 'sdist' commands will replace it with a copy that has just the calculated version string. This must be set even if your project does not have any modules (and will therefore never import `_version.py`), since "setup.py sdist" -based trees still need somewhere to record the pre-calculated version strings. Anywhere in the source tree should do. If there is a `__init__.py` next to your `_version.py`, the `setup.py versioneer` command (described below) will append some `__version__`-setting assignments, if they aren't already present. * `versionfile_build`: Like `versionfile_source`, but relative to the build directory instead of the source directory. These will differ when your setup.py uses 'package_dir='. If you have `package_dir={'myproject': 'src/myproject'}`, then you will probably have `versionfile_build='myproject/_version.py'` and `versionfile_source='src/myproject/_version.py'`. If this is set to None, then `setup.py build` will not attempt to rewrite any `_version.py` in the built tree. If your project does not have any libraries (e.g. if it only builds a script), then you should use `versionfile_build = None` and override `distutils.command.build_scripts` to explicitly insert a copy of `versioneer.get_version()` into your generated script. * `tag_prefix`: a string, like 'PROJECTNAME-', which appears at the start of all VCS tags. If your tags look like 'myproject-1.2.0', then you should use tag_prefix='myproject-'. If you use unprefixed tags like '1.2.0', this should be an empty string. * `parentdir_prefix`: a string, frequently the same as tag_prefix, which appears at the start of all unpacked tarball filenames. If your tarball unpacks into 'myproject-1.2.0', this should be 'myproject-'. This tool provides one script, named `versioneer-installer`. That script does one thing: write a copy of `versioneer.py` into the current directory. To versioneer-enable your project: * 1: Run `versioneer-installer` to copy `versioneer.py` into the top of your source tree. * 2: add the following lines to the top of your `setup.py`, with the configuration values you decided earlier: import versioneer versioneer.VCS = 'git' versioneer.versionfile_source = 'src/myproject/_version.py' versioneer.versionfile_build = 'myproject/_version.py' versioneer.tag_prefix = '' # tags are like 1.2.0 versioneer.parentdir_prefix = 'myproject-' # dirname like 'myproject-1.2.0' * 3: add the following arguments to the setup() call in your setup.py: version=versioneer.get_version(), cmdclass=versioneer.get_cmdclass(), * 4: now run `setup.py versioneer`, which will create `_version.py`, and will modify your `__init__.py` (if one exists next to `_version.py`) to define `__version__` (by calling a function from `_version.py`). It will also modify your `MANIFEST.in` to include both `versioneer.py` and the generated `_version.py` in sdist tarballs. * 5: commit these changes to your VCS. To make sure you won't forget, `setup.py versioneer` will mark everything it touched for addition. ## Post-Installation Usage Once established, all uses of your tree from a VCS checkout should get the current version string. All generated tarballs should include an embedded version string (so users who unpack them will not need a VCS tool installed). If you distribute your project through PyPI, then the release process should boil down to two steps: * 1: git tag 1.0 * 2: python setup.py register sdist upload If you distribute it through github (i.e. users use github to generate tarballs with `git archive`), the process is: * 1: git tag 1.0 * 2: git push; git push --tags Currently, all version strings must be based upon a tag. Versioneer will report "unknown" until your tree has at least one tag in its history. This restriction will be fixed eventually (see issue #12). ## Version-String Flavors Code which uses Versioneer can learn about its version string at runtime by importing `_version` from your main `__init__.py` file and running the `get_versions()` function. From the "outside" (e.g. in `setup.py`), you can import the top-level `versioneer.py` and run `get_versions()`. Both functions return a dictionary with different keys for different flavors of the version string: * `['version']`: condensed tag+distance+shortid+dirty identifier. For git, this uses the output of `git describe --tags --dirty --always` but strips the tag_prefix. For example "0.11-2-g1076c97-dirty" indicates that the tree is like the "1076c97" commit but has uncommitted changes ("-dirty"), and that this commit is two revisions ("-2-") beyond the "0.11" tag. For released software (exactly equal to a known tag), the identifier will only contain the stripped tag, e.g. "0.11". * `['full']`: detailed revision identifier. For Git, this is the full SHA1 commit id, followed by "-dirty" if the tree contains uncommitted changes, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac-dirty". Some variants are more useful than others. Including `full` in a bug report should allow developers to reconstruct the exact code being tested (or indicate the presence of local changes that should be shared with the developers). `version` is suitable for display in an "about" box or a CLI `--version` output: it can be easily compared against release notes and lists of bugs fixed in various releases. In the future, this will also include a [PEP-0440](http://legacy.python.org/dev/peps/pep-0440/) -compatible flavor (e.g. `1.2.post0.dev123`). This loses a lot of information (and has no room for a hash-based revision id), but is safe to use in a `setup.py` "`version=`" argument. It also enables tools like *pip* to compare version strings and evaluate compatibility constraint declarations. The `setup.py versioneer` command adds the following text to your `__init__.py` to place a basic version in `YOURPROJECT.__version__`: from ._version import get_versions __version__ = get_versions()['version'] del get_versions ## Updating Versioneer To upgrade your project to a new release of Versioneer, do the following: * install the new Versioneer (`pip install -U versioneer` or equivalent) * re-run `versioneer-installer` in your source tree to replace your copy of `versioneer.py` * edit `setup.py`, if necessary, to include any new configuration settings indicated by the release notes * re-run `setup.py versioneer` to replace `SRC/_version.py` * commit any changed files ### Upgrading from 0.10 to 0.11 You must add a `versioneer.VCS = "git"` to your `setup.py` before re-running `setup.py versioneer`. This will enable the use of additional version-control systems (SVN, etc) in the future. ### Upgrading from 0.11 to 0.12 Nothing special. ## Future Directions This tool is designed to make it easily extended to other version-control systems: all VCS-specific components are in separate directories like src/git/ . The top-level `versioneer.py` script is assembled from these components by running make-versioneer.py . In the future, make-versioneer.py will take a VCS name as an argument, and will construct a version of `versioneer.py` that is specific to the given VCS. It might also take the configuration arguments that are currently provided manually during installation by editing setup.py . Alternatively, it might go the other direction and include code from all supported VCS systems, reducing the number of intermediate scripts. ## License To make Versioneer easier to embed, all its code is hereby released into the public domain. The `_version.py` that it creates is also in the public domain. """ import os, sys, re, subprocess, errno from distutils.core import Command from distutils.command.sdist import sdist as _sdist from distutils.command.build import build as _build # these configuration settings will be overridden by setup.py after it # imports us versionfile_source = None versionfile_build = None tag_prefix = None parentdir_prefix = None VCS = None # these dictionaries contain VCS-specific tools LONG_VERSION_PY = {} def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False): assert isinstance(commands, list) p = None for c in commands: try: # remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen([c] + args, cwd=cwd, stdout=subprocess.PIPE, stderr=(subprocess.PIPE if hide_stderr else None)) break except EnvironmentError: e = sys.exc_info()[1] if e.errno == errno.ENOENT: continue if verbose: print("unable to run %s" % args[0]) print(e) return None else: if verbose: print("unable to find command, tried %s" % (commands,)) return None stdout = p.communicate()[0].strip() if sys.version >= '3': stdout = stdout.decode() if p.returncode != 0: if verbose: print("unable to run %s (error)" % args[0]) return None return stdout LONG_VERSION_PY['git'] = ''' # This file helps to compute a version number in source trees obtained from # git-archive tarball (such as those provided by githubs download-from-tag # feature). Distribution tarballs (built by setup.py sdist) and build # directories (produced by setup.py build) will contain a much shorter file # that just contains the computed version number. # This file is released into the public domain. Generated by # versioneer-0.12 (https://github.com/warner/python-versioneer) # these strings will be replaced by git during git-archive git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s" git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s" # these strings are filled in when 'setup.py versioneer' creates _version.py tag_prefix = "%(TAG_PREFIX)s" parentdir_prefix = "%(PARENTDIR_PREFIX)s" versionfile_source = "%(VERSIONFILE_SOURCE)s" import os, sys, re, subprocess, errno def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False): assert isinstance(commands, list) p = None for c in commands: try: # remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen([c] + args, cwd=cwd, stdout=subprocess.PIPE, stderr=(subprocess.PIPE if hide_stderr else None)) break except EnvironmentError: e = sys.exc_info()[1] if e.errno == errno.ENOENT: continue if verbose: print("unable to run %%s" %% args[0]) print(e) return None else: if verbose: print("unable to find command, tried %%s" %% (commands,)) return None stdout = p.communicate()[0].strip() if sys.version >= '3': stdout = stdout.decode() if p.returncode != 0: if verbose: print("unable to run %%s (error)" %% args[0]) return None return stdout def versions_from_parentdir(parentdir_prefix, root, verbose=False): # Source tarballs conventionally unpack into a directory that includes # both the project name and a version string. dirname = os.path.basename(root) if not dirname.startswith(parentdir_prefix): if verbose: print("guessing rootdir is '%%s', but '%%s' doesn't start with prefix '%%s'" %% (root, dirname, parentdir_prefix)) return None return {"version": dirname[len(parentdir_prefix):], "full": ""} def git_get_keywords(versionfile_abs): # the code embedded in _version.py can just fetch the value of these # keywords. When used from setup.py, we don't want to import _version.py, # so we do it with a regexp instead. This function is not used from # _version.py. keywords = {} try: f = open(versionfile_abs,"r") for line in f.readlines(): if line.strip().startswith("git_refnames ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["refnames"] = mo.group(1) if line.strip().startswith("git_full ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["full"] = mo.group(1) f.close() except EnvironmentError: pass return keywords def git_versions_from_keywords(keywords, tag_prefix, verbose=False): if not keywords: return {} # keyword-finding function failed to find keywords refnames = keywords["refnames"].strip() if refnames.startswith("$Format"): if verbose: print("keywords are unexpanded, not using") return {} # unexpanded, so not in an unpacked git-archive tarball refs = set([r.strip() for r in refnames.strip("()").split(",")]) # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of # just "foo-1.0". If we see a "tag: " prefix, prefer those. TAG = "tag: " tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) if not tags: # Either we're using git < 1.8.3, or there really are no tags. We use # a heuristic: assume all version tags have a digit. The old git %%d # expansion behaves like git log --decorate=short and strips out the # refs/heads/ and refs/tags/ prefixes that would let us distinguish # between branches and tags. By ignoring refnames without digits, we # filter out many common branch names like "release" and # "stabilization", as well as "HEAD" and "master". tags = set([r for r in refs if re.search(r'\d', r)]) if verbose: print("discarding '%%s', no digits" %% ",".join(refs-tags)) if verbose: print("likely tags: %%s" %% ",".join(sorted(tags))) for ref in sorted(tags): # sorting will prefer e.g. "2.0" over "2.0rc1" if ref.startswith(tag_prefix): r = ref[len(tag_prefix):] if verbose: print("picking %%s" %% r) return { "version": r, "full": keywords["full"].strip() } # no suitable tags, so we use the full revision id if verbose: print("no suitable tags, using full revision id") return { "version": keywords["full"].strip(), "full": keywords["full"].strip() } def git_versions_from_vcs(tag_prefix, root, verbose=False): # this runs 'git' from the root of the source tree. This only gets called # if the git-archive 'subst' keywords were *not* expanded, and # _version.py hasn't already been rewritten with a short version string, # meaning we're inside a checked out source tree. if not os.path.exists(os.path.join(root, ".git")): if verbose: print("no .git in %%s" %% root) return {} GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] stdout = run_command(GITS, ["describe", "--tags", "--dirty", "--always"], cwd=root) if stdout is None: return {} if not stdout.startswith(tag_prefix): if verbose: print("tag '%%s' doesn't start with prefix '%%s'" %% (stdout, tag_prefix)) return {} tag = stdout[len(tag_prefix):] stdout = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) if stdout is None: return {} full = stdout.strip() if tag.endswith("-dirty"): full += "-dirty" return {"version": tag, "full": full} def get_versions(default={"version": "unknown", "full": ""}, verbose=False): # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have # __file__, we can work backwards from there to the root. Some # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which # case we can only use expanded keywords. keywords = { "refnames": git_refnames, "full": git_full } ver = git_versions_from_keywords(keywords, tag_prefix, verbose) if ver: return ver try: root = os.path.abspath(__file__) # versionfile_source is the relative path from the top of the source # tree (where the .git directory might live) to this file. Invert # this to find the root from __file__. for i in range(len(versionfile_source.split(os.sep))): root = os.path.dirname(root) except NameError: return default return (git_versions_from_vcs(tag_prefix, root, verbose) or versions_from_parentdir(parentdir_prefix, root, verbose) or default) ''' def git_get_keywords(versionfile_abs): # the code embedded in _version.py can just fetch the value of these # keywords. When used from setup.py, we don't want to import _version.py, # so we do it with a regexp instead. This function is not used from # _version.py. keywords = {} try: f = open(versionfile_abs,"r") for line in f.readlines(): if line.strip().startswith("git_refnames ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["refnames"] = mo.group(1) if line.strip().startswith("git_full ="): mo = re.search(r'=\s*"(.*)"', line) if mo: keywords["full"] = mo.group(1) f.close() except EnvironmentError: pass return keywords def git_versions_from_keywords(keywords, tag_prefix, verbose=False): if not keywords: return {} # keyword-finding function failed to find keywords refnames = keywords["refnames"].strip() if refnames.startswith("$Format"): if verbose: print("keywords are unexpanded, not using") return {} # unexpanded, so not in an unpacked git-archive tarball refs = set([r.strip() for r in refnames.strip("()").split(",")]) # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of # just "foo-1.0". If we see a "tag: " prefix, prefer those. TAG = "tag: " tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) if not tags: # Either we're using git < 1.8.3, or there really are no tags. We use # a heuristic: assume all version tags have a digit. The old git %d # expansion behaves like git log --decorate=short and strips out the # refs/heads/ and refs/tags/ prefixes that would let us distinguish # between branches and tags. By ignoring refnames without digits, we # filter out many common branch names like "release" and # "stabilization", as well as "HEAD" and "master". tags = set([r for r in refs if re.search(r'\d', r)]) if verbose: print("discarding '%s', no digits" % ",".join(refs-tags)) if verbose: print("likely tags: %s" % ",".join(sorted(tags))) for ref in sorted(tags): # sorting will prefer e.g. "2.0" over "2.0rc1" if ref.startswith(tag_prefix): r = ref[len(tag_prefix):] if verbose: print("picking %s" % r) return { "version": r, "full": keywords["full"].strip() } # no suitable tags, so we use the full revision id if verbose: print("no suitable tags, using full revision id") return { "version": keywords["full"].strip(), "full": keywords["full"].strip() } def git_versions_from_vcs(tag_prefix, root, verbose=False): # this runs 'git' from the root of the source tree. This only gets called # if the git-archive 'subst' keywords were *not* expanded, and # _version.py hasn't already been rewritten with a short version string, # meaning we're inside a checked out source tree. if not os.path.exists(os.path.join(root, ".git")): if verbose: print("no .git in %s" % root) return {} GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] stdout = run_command(GITS, ["describe", "--tags", "--dirty", "--always"], cwd=root) if stdout is None: return {} if not stdout.startswith(tag_prefix): if verbose: print("tag '%s' doesn't start with prefix '%s'" % (stdout, tag_prefix)) return {} tag = stdout[len(tag_prefix):] stdout = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) if stdout is None: return {} full = stdout.strip() if tag.endswith("-dirty"): full += "-dirty" return {"version": tag, "full": full} def do_vcs_install(manifest_in, versionfile_source, ipy): GITS = ["git"] if sys.platform == "win32": GITS = ["git.cmd", "git.exe"] files = [manifest_in, versionfile_source] if ipy: files.append(ipy) try: me = __file__ if me.endswith(".pyc") or me.endswith(".pyo"): me = os.path.splitext(me)[0] + ".py" versioneer_file = os.path.relpath(me) except NameError: versioneer_file = "versioneer.py" files.append(versioneer_file) present = False try: f = open(".gitattributes", "r") for line in f.readlines(): if line.strip().startswith(versionfile_source): if "export-subst" in line.strip().split()[1:]: present = True f.close() except EnvironmentError: pass if not present: f = open(".gitattributes", "a+") f.write("%s export-subst\n" % versionfile_source) f.close() files.append(".gitattributes") run_command(GITS, ["add", "--"] + files) def versions_from_parentdir(parentdir_prefix, root, verbose=False): # Source tarballs conventionally unpack into a directory that includes # both the project name and a version string. dirname = os.path.basename(root) if not dirname.startswith(parentdir_prefix): if verbose: print("guessing rootdir is '%s', but '%s' doesn't start with prefix '%s'" % (root, dirname, parentdir_prefix)) return None return {"version": dirname[len(parentdir_prefix):], "full": ""} SHORT_VERSION_PY = """ # This file was generated by 'versioneer.py' (0.12) from # revision-control system data, or from the parent directory name of an # unpacked source archive. Distribution tarballs contain a pre-generated copy # of this file. version_version = '%(version)s' version_full = '%(full)s' def get_versions(default={}, verbose=False): return {'version': version_version, 'full': version_full} """ DEFAULT = {"version": "unknown", "full": "unknown"} def versions_from_file(filename): versions = {} try: with open(filename) as f: for line in f.readlines(): mo = re.match("version_version = '([^']+)'", line) if mo: versions["version"] = mo.group(1) mo = re.match("version_full = '([^']+)'", line) if mo: versions["full"] = mo.group(1) except EnvironmentError: return {} return versions def write_to_version_file(filename, versions): with open(filename, "w") as f: f.write(SHORT_VERSION_PY % versions) print("set %s to '%s'" % (filename, versions["version"])) def get_root(): try: return os.path.dirname(os.path.abspath(__file__)) except NameError: return os.path.dirname(os.path.abspath(sys.argv[0])) def vcs_function(vcs, suffix): return getattr(sys.modules[__name__], '%s_%s' % (vcs, suffix), None) def get_versions(default=DEFAULT, verbose=False): # returns dict with two keys: 'version' and 'full' assert versionfile_source is not None, "please set versioneer.versionfile_source" assert tag_prefix is not None, "please set versioneer.tag_prefix" assert parentdir_prefix is not None, "please set versioneer.parentdir_prefix" assert VCS is not None, "please set versioneer.VCS" # I am in versioneer.py, which must live at the top of the source tree, # which we use to compute the root directory. py2exe/bbfreeze/non-CPython # don't have __file__, in which case we fall back to sys.argv[0] (which # ought to be the setup.py script). We prefer __file__ since that's more # robust in cases where setup.py was invoked in some weird way (e.g. pip) root = get_root() versionfile_abs = os.path.join(root, versionfile_source) # extract version from first of _version.py, VCS command (e.g. 'git # describe'), parentdir. This is meant to work for developers using a # source checkout, for users of a tarball created by 'setup.py sdist', # and for users of a tarball/zipball created by 'git archive' or github's # download-from-tag feature or the equivalent in other VCSes. get_keywords_f = vcs_function(VCS, "get_keywords") versions_from_keywords_f = vcs_function(VCS, "versions_from_keywords") if get_keywords_f and versions_from_keywords_f: vcs_keywords = get_keywords_f(versionfile_abs) ver = versions_from_keywords_f(vcs_keywords, tag_prefix) if ver: if verbose: print("got version from expanded keyword %s" % ver) return ver ver = versions_from_file(versionfile_abs) if ver: if verbose: print("got version from file %s %s" % (versionfile_abs,ver)) return ver versions_from_vcs_f = vcs_function(VCS, "versions_from_vcs") if versions_from_vcs_f: ver = versions_from_vcs_f(tag_prefix, root, verbose) if ver: if verbose: print("got version from VCS %s" % ver) return ver ver = versions_from_parentdir(parentdir_prefix, root, verbose) if ver: if verbose: print("got version from parentdir %s" % ver) return ver if verbose: print("got version from default %s" % default) return default def get_version(verbose=False): return get_versions(verbose=verbose)["version"] class cmd_version(Command): description = "report generated version string" user_options = [] boolean_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): ver = get_version(verbose=True) print("Version is currently: %s" % ver) class cmd_build(_build): def run(self): versions = get_versions(verbose=True) _build.run(self) # now locate _version.py in the new build/ directory and replace it # with an updated value if versionfile_build: target_versionfile = os.path.join(self.build_lib, versionfile_build) print("UPDATING %s" % target_versionfile) os.unlink(target_versionfile) with open(target_versionfile, "w") as f: f.write(SHORT_VERSION_PY % versions) if 'cx_Freeze' in sys.modules: # cx_freeze enabled? from cx_Freeze.dist import build_exe as _build_exe class cmd_build_exe(_build_exe): def run(self): versions = get_versions(verbose=True) target_versionfile = versionfile_source print("UPDATING %s" % target_versionfile) os.unlink(target_versionfile) with open(target_versionfile, "w") as f: f.write(SHORT_VERSION_PY % versions) _build_exe.run(self) os.unlink(target_versionfile) with open(versionfile_source, "w") as f: assert VCS is not None, "please set versioneer.VCS" LONG = LONG_VERSION_PY[VCS] f.write(LONG % {"DOLLAR": "$", "TAG_PREFIX": tag_prefix, "PARENTDIR_PREFIX": parentdir_prefix, "VERSIONFILE_SOURCE": versionfile_source, }) class cmd_sdist(_sdist): def run(self): versions = get_versions(verbose=True) self._versioneer_generated_versions = versions # unless we update this, the command will keep using the old version self.distribution.metadata.version = versions["version"] return _sdist.run(self) def make_release_tree(self, base_dir, files): _sdist.make_release_tree(self, base_dir, files) # now locate _version.py in the new base_dir directory (remembering # that it may be a hardlink) and replace it with an updated value target_versionfile = os.path.join(base_dir, versionfile_source) print("UPDATING %s" % target_versionfile) os.unlink(target_versionfile) with open(target_versionfile, "w") as f: f.write(SHORT_VERSION_PY % self._versioneer_generated_versions) INIT_PY_SNIPPET = """ from ._version import get_versions __version__ = get_versions()['version'] del get_versions """ class cmd_update_files(Command): description = "install/upgrade Versioneer files: __init__.py SRC/_version.py" user_options = [] boolean_options = [] def initialize_options(self): pass def finalize_options(self): pass def run(self): print(" creating %s" % versionfile_source) with open(versionfile_source, "w") as f: assert VCS is not None, "please set versioneer.VCS" LONG = LONG_VERSION_PY[VCS] f.write(LONG % {"DOLLAR": "$", "TAG_PREFIX": tag_prefix, "PARENTDIR_PREFIX": parentdir_prefix, "VERSIONFILE_SOURCE": versionfile_source, }) ipy = os.path.join(os.path.dirname(versionfile_source), "__init__.py") if os.path.exists(ipy): try: with open(ipy, "r") as f: old = f.read() except EnvironmentError: old = "" if INIT_PY_SNIPPET not in old: print(" appending to %s" % ipy) with open(ipy, "a") as f: f.write(INIT_PY_SNIPPET) else: print(" %s unmodified" % ipy) else: print(" %s doesn't exist, ok" % ipy) ipy = None # Make sure both the top-level "versioneer.py" and versionfile_source # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so # they'll be copied into source distributions. Pip won't be able to # install the package without this. manifest_in = os.path.join(get_root(), "MANIFEST.in") simple_includes = set() try: with open(manifest_in, "r") as f: for line in f: if line.startswith("include "): for include in line.split()[1:]: simple_includes.add(include) except EnvironmentError: pass # That doesn't cover everything MANIFEST.in can do # (http://docs.python.org/2/distutils/sourcedist.html#commands), so # it might give some false negatives. Appending redundant 'include' # lines is safe, though. if "versioneer.py" not in simple_includes: print(" appending 'versioneer.py' to MANIFEST.in") with open(manifest_in, "a") as f: f.write("include versioneer.py\n") else: print(" 'versioneer.py' already in MANIFEST.in") if versionfile_source not in simple_includes: print(" appending versionfile_source ('%s') to MANIFEST.in" % versionfile_source) with open(manifest_in, "a") as f: f.write("include %s\n" % versionfile_source) else: print(" versionfile_source already in MANIFEST.in") # Make VCS-specific changes. For git, this means creating/changing # .gitattributes to mark _version.py for export-time keyword # substitution. do_vcs_install(manifest_in, versionfile_source, ipy) def get_cmdclass(): cmds = {'version': cmd_version, 'versioneer': cmd_update_files, 'build': cmd_build, 'sdist': cmd_sdist, } if 'cx_Freeze' in sys.modules: # cx_freeze enabled? cmds['build_exe'] = cmd_build_exe del cmds['build'] return cmds lmfit-0.9.2/LICENSE0000644000032700003100000000311012603520205015110 0ustar newvillegeocars00000000000000Copyright, Licensing, and Re-distribution ----------------------------------------- The LMFIT-py code is distribution under the following license: Copyright (c) 2014 Matthew Newville, The University of Chicago Till Stensitzki, Freie Universitat Berlin Daniel B. Allen, Johns Hopkins University Michal Rawlik, Eidgenossische Technische Hochschule, Zurich Antonino Ingargiola, University of California, Los Angeles A. R. J. Nelson, Australian Nuclear Science and Technology Organisation Permission to use and redistribute the source code or binary forms of this software and its documentation, with or without modification is hereby granted provided that the above notice of copyright, these terms of use, and the disclaimer of warranty below appear in the source code and documentation, and that none of the names of above institutions or authors appear in advertising or endorsement of works derived from this software without specific prior written permission from all parties. 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 THIS SOFTWARE. lmfit-0.9.2/INSTALL0000644000032700003100000000047512603520205015147 0ustar newvillegeocars00000000000000Installation instructions for LMFIT-py ======================================== To install the lmfit python module, use:: python setup.py build python setup.py install Python 2.6 or higher is required, as are numpy and scipy. Matt Newville Last Update: 2013-Dec-15 lmfit-0.9.2/publish_docs.sh0000644000032700003100000000177512603520205017134 0ustar newvillegeocars00000000000000installdir='/www/apache/htdocs/software/python/lmfit' docbuild='doc/_build' cd doc echo '# Making docs' make all cd ../ echo '# Building tarball of docs' mkdir _tmpdoc cp -pr doc/lmfit.pdf _tmpdoc/lmfit.pdf cp -pr doc/_build/html/* _tmpdoc/. cd _tmpdoc tar czf ../../lmfit_docs.tar.gz . cd .. rm -rf _tmpdoc # echo "# Switching to gh-pages branch" git checkout gh-pages if [ $? -ne 0 ] ; then echo ' failed.' exit fi tar xzf ../lmfit_docs.tar.gz . echo "# commit changes to gh-pages branch" git commit -am "changed docs" if [ $? -ne 0 ] ; then echo ' failed.' exit fi echo "# Pushing docs to github" git push echo "# switch back to master branch" git checkout master if [ $? -ne 0 ] ; then echo ' failed.' exit fi # install locally echo "# Installing docs to CARS web pages" cp ../lmfit_docs.tar.gz $installdir/.. cd $installdir if [ $? -ne 0 ] ; then echo ' failed.' exit fi tar xvzf ../lmfit_docs.tar.gz lmfit-0.9.2/doc/0000755000032700003100000000000012613717514014671 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/_templates/0000755000032700003100000000000012613717514017026 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/_templates/indexsidebar.html0000644000032700003100000000151112603520205022337 0ustar newvillegeocars00000000000000

Getting LMFIT

Current version: {{ release }}

Download:   PyPI (Python.org)

Install:   pip install lmfit

Development version:
    github.com

Questions?

  Frequently Asked Questions
  Mailing List
  Getting Help

Off-line Documentation

[PDF |EPUB |HTML(zip) ]

lmfit-0.9.2/doc/contents.rst0000644000032700003100000000033612603520205017246 0ustar newvillegeocars00000000000000Contents ================= .. toctree:: :maxdepth: 3 intro installation whatsnew support faq parameters fitting model builtin_models confidence bounds constraints lmfit-0.9.2/doc/Makefile0000644000032700003100000000740012603520205016316 0ustar newvillegeocars00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = _build INSTALLDIR = /home/newville/public_html/lmfit/ # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) . .PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest latexpdf htmlzip .PHONY: all install pdf html: cp sphinx/ext_mathjax.py extensions.py $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "html build finished: $(BUILDDIR)/html." htmlzip: html cp sphinx/ext_pngmath.py extensions.py $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/lmfit_doc cd $(BUILDDIR) && zip -pur html/lmfit_doc.zip lmfit_doc epub: cp sphinx/ext_pngmath.py extensions.py $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub cp -pr $(BUILDDIR)/epub/*.epub $(BUILDDIR)/html/. pdf: latex cd $(BUILDDIR)/latex && make all-pdf cp -pr $(BUILDDIR)/latex/lmfit.pdf $(BUILDDIR)/html/. all: html htmlzip epub pdf install: all cd $(BUILDDIR)/latex && pdflatex lmfit.tex cd $(BUILDDIR)/latex && makeindex -s python.ist lmfit.idx cd $(BUILDDIR)/latex && pdflatex lmfit.tex cp -pr $(BUILDDIR)/html/* $(INSTALLDIR)/. help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo @echo "Build finished; the LaTeX files are in _build/latex." @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ "run these through (pdf)latex." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex @echo "Running LaTeX files through pdflatex..." make -C _build/latex all-pdf @echo "pdflatex finished; the PDF files are in _build/latex." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." lmfit-0.9.2/doc/extensions.pyc0000644000032700003100000000062612613716032017603 0ustar newvillegeocars00000000000000ó œ/Vc@s2dddddgZdZdZejeƒdS(ssphinx.ext.autodocssphinx.ext.todossphinx.ext.coveragessphinx.ext.intersphinxtnumpydocssphinx.ext.mathjaxssphinx.ext.pngmathN(t extensionstmathjaxtpngmathtappend(((s8/millenia/home/newville/Codes/lmfit-py/doc/extensions.pyts lmfit-0.9.2/doc/index.rst0000644000032700003100000000510012603520205016512 0ustar newvillegeocars00000000000000.. lmfit documentation master file, Non-Linear Least-Square Minimization and Curve-Fitting for Python =========================================================================== .. _Levenberg-Marquardt: http://en.wikipedia.org/wiki/Levenberg-Marquardt_algorithm .. _MINPACK-1: http://en.wikipedia.org/wiki/MINPACK .. warning:: Upgrading scripts from version 0.8.3 to 0.9.0? See :ref:`whatsnew_090_label` Lmfit provides a high-level interface to non-linear optimization and curve fitting problems for Python. Lmfit builds on and extends many of the optimizatin algorithm of :mod:`scipy.optimize`, especially the `Levenberg-Marquardt`_ method from :func:`scipy.optimize.leastsq`. Lmfit provides a number of useful enhancements to optimization and data fitting problems, including: * Using :class:`Parameter` objects instead of plain floats as variables. A :class:`Parameter` has a value that can be varied in the fit, have a fixed value, or have upper and/or lower bounds. A Parameter can even have a value that is constrained by an algebraic expression of other Parameter values. * Ease of changing fitting algorithms. Once a fitting model is set up, one can change the fitting algorithm used to find the optimal solution without changing the objective function. * Improved estimation of confidence intervals. While :func:`scipy.optimize.leastsq` will automatically calculate uncertainties and correlations from the covariance matrix, the accuracy of these estimates are often questionable. To help address this, lmfit has functions to explicitly explore parameter space to determine confidence levels even for the most difficult cases. * Improved curve-fitting with the :class:`Model` class. This extends the capabilities of :func:`scipy.optimize.curve_fit`, allowing you to turn a function that models for your data into a python class that helps you parametrize and fit data with that model. * Many :ref:`pre-built models ` for common lineshapes are included and ready to use. .. _lmfit github repository: http://github.com/lmfit/lmfit-py The lmfit package is Free software, using an MIT license. The software and this document are works in progress. If you are interested in participating in this effort please use the `lmfit github repository`_. .. toctree:: :maxdepth: 2 intro installation support faq parameters fitting model builtin_models confidence bounds constraints lmfit-0.9.2/doc/conf.py0000644000032700003100000001423212603520205016156 0ustar newvillegeocars00000000000000# -*- coding: utf-8 -*- # # lmfit documentation build configuration file # # This file is execfile()d with the current directory set to its containing dir. # # Note that not all possible configuration values are present in this # autogenerated file. # # All configuration values have a default; values that are commented out # serve to show the default. import sys, os # If extensions (or modules to document with autodoc) are in another directory, # add these directories to sys.path here. If the directory is relative to the # documentation root, use os.path.abspath to make it absolute, like shown here. sys.path.append(os.path.abspath(os.path.join('..', 'lmfit'))) sys.path.append(os.path.abspath(os.path.join('.', 'sphinx'))) sys.path.append(os.path.abspath(os.path.join('.'))) # -- General configuration ----------------------------------------------------- # Add any Sphinx extension module names here, as strings. They can be extensions # coming with Sphinx (named 'sphinx.ext.*') or your custom ones. from extensions import extensions try: import IPython.sphinxext.ipython_directive extensions.extend(['IPython.sphinxext.ipython_directive', 'IPython.sphinxext.ipython_console_highlighting']) except ImportError: pass intersphinx_mapping = {'py': ('http://docs.python.org/2', None), 'numpy': ('http://docs.scipy.org/doc/numpy/', None), 'scipy': ('http://docs.scipy.org/doc/scipy/reference/', None), } intersphinx_cache_limit = 10 # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] # The suffix of source filenames. source_suffix = '.rst' # The encoding of source files. #source_encoding = 'utf-8' # The master toctree document. master_doc = 'index' # General information about the project. project = u'lmfit' copyright = u'2014, Matthew Newville, The University of Chicago, Till Stensitzki, Freie Universitat Berlin' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the # built documents. # # The short X.Y version. try: import lmfit release = lmfit.__version__ # The full version, including alpha/beta/rc tags. except ImportError: release = 'latest' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None # There are two options for replacing |today|: either, you set today to some # non-false value, then it is used: #today = '' # Else, today_fmt is used as the format for a strftime call. #today_fmt = '%B %d, %Y' # List of documents that shouldn't be included in the build. #unused_docs = [] # List of directories, relative to source directory, that shouldn't be searched # for source files. exclude_trees = ['_build'] # The reST default role (used for this markup: `text`) to use for all documents. #default_role = None # If true, '()' will be appended to :func: etc. cross-reference text. add_function_parentheses = True # If true, the current module name will be prepended to all description # unit titles (such as .. function::). add_module_names = False # If true, sectionauthor and moduleauthor directives will be shown in the # output. They are ignored by default. #show_authors = False # The name of the Pygments (syntax highlighting) style to use. pygments_style = 'sphinx' # A list of ignored prefixes for module index sorting. #modindex_common_prefix = [] # -- Options for HTML output --------------------------------------------------- html_theme_path = ['sphinx/theme'] html_theme = 'lmfitdoc' # Add any paths that contain custom themes here, relative to this directory. #html_theme_path = [] # The name for this set of Sphinx documents. If None, it defaults to # " v documentation". #html_title = None html_title = 'Non-Linear Least-Squares Minimization and Curve-Fitting for Python' # A shorter title for the navigation bar. Default is the same as html_title. html_short_title = 'Minimization and Curve-Fitting for Python' # The name of an image file (relative to this directory) to place at the top # of the sidebar. #html_logo = None # The name of an image file (within the static path) to use as favicon of the # docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 # pixels large. #html_favicon = None # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. #html_last_updated_fmt = '%b %d, %Y' # If true, SmartyPants will be used to convert quotes and dashes to # typographically correct entities. html_use_smartypants = True # Custom sidebar templates, maps document names to template names. html_sidebars = {'index': ['indexsidebar.html','searchbox.html']} html_domain_indices = False html_use_index = True #html_split_index = False # If true, links to the reST sources are added to the pages. html_show_sourcelink = True # If true, an OpenSearch description file will be output, and all pages will # contain a tag referring to it. The value of this option must be the # base URL from which the finished HTML is served. #html_use_opensearch = '' # If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). #html_file_suffix = '' # Output file base name for HTML help builder. htmlhelp_basename = 'lmfitdoc' # -- Options for LaTeX output -------------------------------------------------- # Grouping the document tree into LaTeX files. List of tuples # (source start file, target name, title, author, documentclass [howto/manual]). latex_documents = [ ('index', 'lmfit.tex', 'Non-Linear Least-Squares Minimization and Curve-Fitting for Python', 'Matthew Newville, Till Stensitzki, and others', 'manual'), ] lmfit-0.9.2/doc/_images/0000755000032700003100000000000012613717514016275 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/_images/conf_interval2.png0000644000032700003100000004056412603520205021713 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝ{œÖuÿÿç5Ùtò@bþuC@ sCÅ3•ºBÞÈô«[hjT¦b‹èf)¸éæqÍÔ<•ÚÁ<€e´ð°–’º’ˆ‚Ç9Ïüþ@YPPxÏÀÜï·7˜Ïáº^?¢ó˜Ï纮JCCCC ¨jì€æC€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å ˜f uuu3fLœÎ;§ªª*W_}õ*Û]~ùå0`@ºvíš6mÚd»í¶Ë!Còøã¯õsM:5{ï½wÚ·oŸnݺåÄOL]]Ýú<ب´hìJ{ùå—3vìØl·ÝvéÝ»w¦L™’J¥²Êv<òHzöì™Ã;,›o¾yžyæ™\~ùå¹í¶Û2mÚ´ì¸ãŽïù<<òH˜]vÙ%ãÇÏsÏ=—þð‡yê©§ò›ßüfC4iÍ.@ºwïž9s椶¶6Ó¦MË{ì±Úí.¾øâU–vØaéׯ_®»îº|ï{ß{Ïç9í´ÓÒ¥K—L™2%555I’=zdäÈ‘¹ãŽ;ò™Ï|æÃ ldšÝ-X­ZµJmmm’¤¡¡aöÝn»í’$-[¶|ÏíæÍ›—;ï¼3G}ôŠøH’aÆ¥¦¦&7ÝtÓ:N ›†fwd]½úê«Y¶lYfΜ™û·ËV[m•¯|å+ï¹Ïc=–¥K—¦_¿~+-oÙ²ez÷î‡~xCŽ M–yùÈG²xñâ$ÉöÛoŸ{î¹'ùÈGÞsŸÙ³g'Iºuë¶Êº®]»æÞ{ï]ÿƒÀF ÙÝ‚µ®n¿ýöüö·¿Íù矟… æ€ȬY³ÞsŸ $IZ·n½Êº6mÚ¬XÍ+ ïcÀ€I’AƒåÐCÍ®»îšû·Ëe—]¶Æ}Ú¶m›$Y´hÑ*ë.\˜víÚ­qßÙ³g¯¸‚@ÓÓ­[·ÕÞéÂÚ ë`ûí·OïÞ½sÿý÷¿çvoÿ ¹º˜={vºwï¾ÚýfÏžýöÛ/Ó§OÿððAì´ÓN¹ûî»EÈ$@ÖÑ‚ RUõÞw®íºë®iÑ¢Exà~øá+–/^¼8<òHŽ:ê¨Õî7{öìLŸ>=×^{mvÞyçõ:wSwÒI'e„ =…8ßÍ‹óݼ8ßÍKs<ßO<ñDŽ>úèÌž=[€|@d5–-[–yóæeóÍ7_iùý÷ߟ¿üå/9á„VZ>}úô´oß>Ûl³M’¤cÇŽÙÿýsíµ×æŒ3ÎXñV¼×\sMêêêrÄG¼çóï¼óÎéÓ§Ïz<¢¦¯S§NÍ3ç»yq¾›ç»yq¾ù še€\tÑE™;wn^xá…$ɤI“2sæÌ$ɨQ£R__Ÿm¶Ù&GuTzõê•öíÛç±ÇËUW]•®]»æ;ßùÎJ׫W¯ 0 “'O^±lܸqÙk¯½2`À€Œ92³fÍÊ\Aƒå€(w°Ð„4Ë9ÿüóóì³Ï&I*•J&Nœ˜[n¹%•J%Æ K·nÝ2räÈLž<9?ÿùϳ`Á‚l³Í6>|xN?ýôlµÕV«û쓪ªªU~xàâ° ÉkÑØ4†—_~9cÇŽÍvÛm—Þ½{gÊ”)©T*+mSWW—áǧÿþ9þøãS[[›©S§f̘1¹ë®»r÷Ýw¯Õsm³Í69÷ÜsWZÖ½{÷õv,°1i–Ò½{÷Ì™3'µµµ™6mZöØcU¶iݺu¦NšO~ò“+–}õ«_M=VDÈÀß÷¹:v옡C‡®×ù`cÕ,oÁjÕªUjkk“,¿ÕjuZ¶l¹R|¼í°ÃK’LŸ>}­ž«¡¡!Ë–-Ëüùó?à´°éh–òaÌ™3'I²Å[¬ÕöO>ùdÚ·oŸ:¤[·n9óÌ3³téÒ 9"4YÍò¬ã¼óÎKÇŽ×ê…ä;ì°C˜ÝvÛ-uuu¹ùæ›söÙgçÉ'ŸÌ 7ÜP`ZhZÈ:8çœsr×]wåÇ?þq:tèð¾Û_qÅ+}ý¥/})Çw\.¿üò|ãßÈ'>ñ‰ 5*4InÁZK7ÞxcÎ8㌌1"ÇwÜ~œSN9%Ir×]w­¯Ñ`£á ÈZ¸ãŽ;2lذ|îsŸË%—\ò¡kë­·N’¼öÚkkÜæ¤“NJ§NVZ6dÈ 2äC=7kïúë¯Ïõ×_¿Ò²¹sç6Ò4›ò>î»ï¾|þóŸÏž{î™›nº)UUî¢Ñ3Ï<“$ÙrË-׸̈́ Ò§OŸõ<|8«ûðC=”¾}û6ÒD›·`½‡'žx"tP¶ß~ûÜvÛmiݺõ·>}zž{î¹_¿ñÆ«|bzCCCÎ>ûìT*• 4hƒÍ MU³½rÑEeîܹyá…’$“&MÊÌ™3“$£FZ sçÎÍèÑ£së­·®´ÿ;ì°Òç„ôêÕ+ ÈäÉ““$Ó¦MË!C2tèÐôìÙ3 ,Èĉ3uêÔwÜqéÝ»w¡#€¦£ÙÈù矟gŸ}6IR©T2qâÄÜrË-©T*6lXêëë3kÖ¬T*•|ûÛß^eÿcŽ9f•*¬T*+þÜ£G|úÓŸÎĉ3gΜTUU¥W¯^¹ôÒK3räÈ {pÐD5Û™1cÆûnS__¿Ö÷îm{ôè‘o¼qç€M™×€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPL‹Æ€æmÖ¬Yùÿø$ÉÉ'Ÿœ®]»6òDlH€F±páÂì¼óΙù÷¿§þ­eçÿàÙ~‡òøã§eË–:† Ql³õÖyåÕWÓ?É?%iHòh’ûž~:Ûn»mfϞݸ²Ax ÅÝ|óÍyåÕWs@’AIº%éžäÀ$û%™3gNn¿ýöÆ‘ D€PÜYg•ê$ýV³nÏ,ÿ&õ;ßùNÙ¡(B€PÜ›o¾™VIZ­f]ë,@]]]Ù¡(B€P\¿~ý² É «Y÷\’ÅIú÷ï_v(Š ÷“Ÿü$UI~™dÞ;–ÏM2)Iu’Ë.»¬1Fc ×¾}ûœ÷Ãæ•$’\“ä§I.LòZ’ÿ¸øâ´jµº´ØØy^ÖÙ¢E‹ò«_ý*O?ýt¶ÜrË~øáÙ|óÍ×é1N9å”ì¿ÿþ9úè£óäßþ–$Ùmçsíµ×f·ÝvÛcÓÖÉÝwߣŽ<2/¿újjZ´È›Ë–eÔ׿žó~ðƒ|ýë__§ÇúøÇ?žÇ{lMJS$@XkO>ùdúìg³Í’%šdË¥K3?É”E‹2jÔ¨tíÚ5GqDcIæ5 ¬µ &¤Õ²eZ_Ÿ-ßZV“ä $;V*7vlqBš:ÀZ»ý7¿É.K—¦å»–W’|¼¡!>öX^}õÕÆ„`½¨4ölkí€Ìã-ZdÉ»–7$y¤ª*ÿ´ë®éÒ¥KcŒÆFB€°ÖN<ñÄ,ª®ÎõUUyå­euI~“äÉúú|÷Œ3R©¸š ÖÚN;í”[o»-¯vê” IÎkÑ"çU*™Ö²eÆŸ#<²±G¤‰ó6¼¬“ý÷ß?³ž>'NÌSO=•ÚÚÚqÄn½b­ÖY›6m2dÈÆƒ[°€bPŒŠ @1(Æ»`l„žyæ™ÜxãùÇ?þ‘]vÙ%GqDÚµkרcÁû ‘†††œzê©?~|ÚTU¥CUU^Z²$'ŸtR~~Ë-Ùwß}{DxO`#P__Ÿe˖墋.Ê\Óì³lYZ/[–—“\;o^>wÐAùëã§G<-¬™×€4aãÇÏ]º¤ºº:­ZµÊ·N=5;&9 Ië·¶Ù2Éñõõ©,^œÿøÇ7,¬W@š %K–dÇwÌßÿþ÷´Mò‘$s’,­¯Ï“I~•ä°wlß&É?-[–»ï¼³¦…µ'@š C9$ÿûßsT–_íh•d^’Ÿ&¹/ɯ“|"I·wì³4IuuuéQa¸  ‰©««Ë·ßžO&ù\–ÇG’tHòÿ’tÌòo⦾cŸyIþ§ª*|pÑYa] €&æÞ{ïÍÒ††|b5ëZdù•ª$/%iHòd’ ««³YÇŽ9öØc N ëÎ-XMLëÖË_^¾x ëgyx<”ä„J%K²ãG?š[ñ‹lµÕV…¦„F€41ÿüÏÿœ6-[æî%KÒ?+ß²2?Ëo½Z–äüóÏOË–-³Ë.»dŸ}öIU•›[hú@S]]ãN8!^xa.Nò…,±ùô$×&Y’dôèÑ9ùä“sLø@@4a„¼öÚkùÙ5×ä¾w,oY©dÌYgåÌ3Ïl´Ùàà À‚ 2oÞ¼tîÜ9-[¶ü@ñÓŸþ4ãÇÏyç——^z)ýû÷ψ#ÜjÅFM€¬G3fÌȧŸž›o¾9‹—,I§2âØc3f̘ÔÔÔ¬óãuéÒ%ßÿþ÷7À¤Ð8Àz2cÆŒ|r=’×_ϰ¥K³M’¿Ì›—ÿ?>¼çžL¾çž´mÛ¶±Ç„FåúÀzrúw¿›¼þz.^º4ÿ’d¯$Ç&9oÙ²<øàƒù¯ÿú¯FžŸXÞ|óÍÜ|óÍ9léÒtz׺ÿ/Iÿ$W p ÀºX°`AxàÔ××§oß¾Ùl³Í’$¯¿þz–,]š­×°ßÖ ùó‹/–š(W@ÖB}}}Î9çœ|¤k× 0 ûî»o>ÒµkN;í´,]º4]ºtIÇÍ6Ë_×°ÿ_««³ÃŽ;š"°N;í´œþÝïæ€yórM’Ÿ%ù›oæ¼ÿ÷üñiÕªU†‘Ûª«óÔ»ö½#ÉcË–åÿpBùÁ¡‰q Àû˜3gNÎÿá32Éðw,?>É– ùáWdôèÑ9묳òÇ{îɨ‡Î^Y~ÛÕ_ª«ó?Ë–å+_ùJ¾øÅ/6Î@â À;,]º4¿üå/súé§gܸqyâ‰'2iÒ¤4Ô×çˆÕlp’öÕÕùÅ/~‘:äž?þ1çO˜ùÿôOùC×®é²÷޹馛rå•W¦R©”>hr\xËã?žƒ?ûÙ<óì³éÚ²eæ××çôÓOO¿>}ÒªRIMCÃ*û´NRSU•ººº$I»ví2jÔ¨Œ5ªðô°q IæÏŸŸöÛ/í^y%7$ÙyÉ’,Nrk’q=”eIJÒ÷]û=•äÅ%KÒ§OŸÂÃÆÉ-XI®»îºÌ~é¥LX¶,;¿µ¬U’/&™¤E¥’ïWWgÖ;öy)ÉÙÕÕÙnë­sðÁ—6J®€$¹ûî»Ó»RÉÖ«¹Íê $—44dQ§N9òµ×Ò;Ë¿‰z(IçNrǯ-|[kÃ߀$UUUY¶†‰/{ë÷K¯¼2/¾øb~ûÛߦ¾¾>?Üo¿|ùË_N§Nïþìs`M@’Áƒç†nÈ3I¶׺_&Ù¬]» 805559öØcaBØ4x @’#<2={ôȨ-òç$õIÞHre’ŸV*9é”SRSSÓ¸CÂ&@€$iÛ¶mîœ<9[î²Kþ_’½ªª2 RÉVWgÔ‰'f̘1="lÜ‚ð–=zäÁ‡Οþô§<ðÀi×®]9ätëÖ­±GƒM†x‡J¥’½÷Þ;{ï½wc›$·`Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bš]€ÔÕÕe̘1$Øh4»yùå—3vìØüíoKïÞ½“$•Je¥mêêê2|øð¼úê«9þøãsá…fÏ=÷̘1crà®Õó<òÈ#8p`.\˜ñãÇgĈ¹ì²ËrÄG¬÷c€E‹Æ`uþ÷ÿ7Ó§OÏ[l‘=öØ#UU«vÒc=–‰'æÌ3Ï\§ÇîÞ½{æÌ™“ÚÚÚL›6-{ì±Ç*Û´nÝ:S§NÍ'?ùÉ˾úÕ¯¦G3fLîºë® 8ð=Ÿç´ÓNK—.]2eÊ”ÔÔÔ$Izôè‘‘#GæŽ;îÈg>ó™ušÖVCCCî»ï¾Ìž=;ýèGóñ|•¶4–&u¤¾¾>ÇsL>ö±åàƒNÿþý³ãŽ;æw¿ûÝ*Û>úè£ùÞ÷¾·ÎÏѪU«ÔÖÖ&YþèÕiÙ²åJññ¶Ã;,I2}úô÷|ŽyóæåÎ;ïÌÑG½">’dذa©©©ÉM7Ý´ÎsÀÚ¸çž{ÒkçÓ¿ÿ|á _Èî»ïž=úížG}´±GHÒÄä²Ë.ËOúÓ|å+_ɯ~õ«\zé¥iݺu>ûÙÏæœsÎYeû5Ć2gΜ$É[lñžÛ=öØcYºtiúõë·Òò–-[¦wïÞyøá‡7ØŒ4?³gÏΧ>õ©´jÕ"î“§Ÿ~:Çœ¼ô«ä¶O–ÎûKöÝçÓ™1cFc ÐôäóŸÿ|®¼òÊ|ðÁ9rd~øáŒ1"§Ÿ~zþõ_ÿµQç;ï¼óÒ±cÇ÷}ÈìÙ³“$ݺu[e]×®]ó /lùh~|ðÁôØî#™:ujöÚmYŽ˜Ô´M.»-9øÛÉAý“)–¥eÕ›¹à‚ {\€¦ O?ýt¼Ò²V­Zå²Ë.Ë÷¿ÿý\rÉ%9òÈ#³dÉ’â³sÎ9¹ë®»òïÿþïéСÃ{n»`Á‚$Ë_KònmÚ´Y±>ˆ%K–dòäÉ™4iRöÙçÓiߦ!]›L¹,¹þœdöíÉÐÁÉýÓ“ÿœ˜tÚ,9zÿ¥™x‹[€Æ×¤¤¦¦&óæÍ[íºo~ó›¹òÊ+sË-·äÀÌo¼Ql®o¼1gœqFFŒ‘ãŽ;î}·oÛ¶m’¬ö-{.\˜víÚ­÷h®¾úêl»m÷ì·ß~9ôÐCóæ› rö Éî;ýß6mZ'—ž–´o“Œ¹jù²Î’ 6ÎÐïФÞk×]wÍïÿûœrÊ)«]Ì1ÇdóÍ7ÏQG•?ÿùÏEÞÑãŽ;îȰaÃò¹Ï}.—\rÉZíóö­WoߊõN³gÏN÷îÝßsÿ“N:):uZiÙ!C2dȵœ€MÉâÅ‹së­·æÆoÌÍ7ßœ¡‡%§ŒL.».¹ôgÉ þ«îÓ¾m2 orûŸ“††ä—÷VgÏ=W}ƒ`Í®¿þú\ýõ+-›;wn#M³éhRr衇fÔ¨Qyâ‰'²óÎ;¯q›Ûo¿=‡rÈ¿•é¾ûîËç?ÿùì¹çž¹é¦›VûvÀ«³ë®»¦E‹yàrøá‡¯X¾xñâ<òÈ#9ꨣÞsÿ &¤OŸ>jv6 øÃrÔQ‡göì—Óªeò…Áɵ&•J²óË·™õbÒsëU÷}îŤEUòíK“§/Ëï&œ\vxØÈ­îÀ=ôPúöíÛHmšÔ-XÇÏ£>šÚÚÚÌœ93o¾ùæj·ûô§?G}4W]uÕ›å‰'žÈA”í·ß>·ÝvÛj_Ïñ¶éÓ§ç¹çž[ñuÇŽ³ÿþûçÚk¯ÍüùóW,¿æškRWWçÃX+Ï<óL:hpvÜáÕ\ÿ“dñ’dÔðåñ‘$ÿzLÒ²Eòƒk’úú•÷½ëþäžJ–6$?¸¡’þð‡4hPéCXE“ºÒ¶mÛìºë®I’-·Ü2×^{m†ºÚmÿüç?gøðáùò—¿¼ÎÏsÑEeîܹ+ÞjÒ¤I™9sf’dÔ¨Q©T*4hPæÎ›Ñ£GçÖ[o]iÿvØa¥Ï éÕ«W É“'¯X6nܸìµ×^0`@FŽ™Y³få‚ .È AƒrÀ¬óÌ4??úÑÒ¦õ’üò†ú<ú—åË:¿ãÝ-’!‡&?ýEòÙQÉ7¾”ÔnžÜvorÎUI‹êäk_;)ÿú¯ÿšvØ¡qà]šT€¬‹%K–|à×€œþùyöÙg“$•J%'NÌ-·Ü’J¥’aÆ¥¾¾>³fÍJ¥RÉ·¿ýíUö?æ˜cVù Âwϲûî»çÎ;ïÌ·¾õ­œ|òÉéСCFŒ‘sÏ=÷Í @óóûßÿ:Ÿ?dijj’]vJÚ¶M~õûd·w¼àüêñË_ãqï’Ûÿ{ù²ªªdóÍ;çÌG?úÑÆ` šT€¼þúëyýõ×W|Àà+¯¼²âÊÄ;ýãÿÈ7Þ¸ÚÏÙXkóALõï¾–ý¶ýÔ§>•{ï½w­ÞííŸouê”|ùKɹ'»ï’|v¿åë^››Ì›_IU‹¹ð‚fáÂ…9ì°Ã²ãŽ;6îàkФd„ ùÞ÷¾·âë“N:)'tÒ·;vl‰± Qì¿ÿ¹þg3òƒqKÓ®]rÞÙÉ33’Ï}%ùØG“n[%÷?R•ªªVùÅ/~žƒ:¨±Gx_M*@>ó™Ï¤}ûöI’Ñ£GgÈ!Ù}÷ÝWÚ¦R©¤}ûöéׯ_úõë×c@_ÿú×sÅ—å Cêsáëóÿ},ùÉeÉ×ON~ñ«¤sí'2fÌa>|xjkk{\€µÒ¤d¯½öÊ^{í•$™?~¾øÅ/f·Ývkä© qì°Ã¹í¶ß䨣ŽÈ®ý^M×­ZæÕ×–¦R©Î÷¿?.£GnìÖY“ w:묳{htûî»ofÎ|>'NÌ“O>™-¶Ø"GqD¶ÜrËÆ ài²,׺uë÷ý[€E“ú B`Ó&@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@`š;¯So IDATwn^~ùå4444ö(M‚ à /L‡šštÞ|óÔÖÖ¦M«V9r¤š=ëÙI'”oœtRZÖÕå€$'éºti®¸âŠì¹çž=@£jÑØÀ¦äÍ7ßÌ.¼0Û'žÿû ö©$¿NòÇÌwÜ‘>}údÒ¤Iyýõ׳Ûn»eß}÷MU•Ÿ›>ëÑèÑ£SŸäÀ¬ü—«’dÿ$N2tèмñúëY¼dIZVUeq}}vÜa‡ÜòË_f—]viŒ±Š °=úè£I’î«Y×&IÛ$¯¼òJ&Ù/IM}}žIò‹32pŸ}ò×éÓÓ¥K—bó”æžXzôè‘$ya5ëêÞúµG’C“l–åWFz&9nÙ²¼öÚkù¯ÿú¯Uö{饗ròÉ'çCÉ™gž™çŸ~M°á X&L˜ª$¿M²äË’Üš¤>É'W³_Ç$;××ç7·Ý¶ÒòaÆ¥ëV[å?ÆÏý·Þš;6[o½uÚ¶i“ã?>Ï<óÌ:€ C€ÀzÔ¥K—|îCòL’ó“Ü•äI.Nòð[ÛT¯aߪ$õõõ+¾þú׿žk®¹&{'¹è­Ç»8ÉAI.Z”«/½4ýúôÉc=¶a` °žýò—¿ÌWGŒÈ¼ªªÜ‘åï~5+Iÿþý³EçÎyp5û¼™dzuuöÛÿ$É¢E‹òã‹/N·$#³üv­$i—ä¨$;'iÑÐóç縑#7ô!Áj;6‡zh&L˜ÐØ£° °žU*•\~ùå™_W—ÉS¦ä÷wÜ‘W^}5S§NÍ)ßüfþ”äî$‹ßÚþÅ$WTU¥u»v9öØc“$“'ONÒ?«þ%­$Ù+ÉI]¶,¾ï¾<ñÄe’œp ©Tªsæ™gfÒ¤IùÆ7¾‘J¥:cÇŽmìÑØx,Ø@Ú´i“¬´lôèÑ™={v~ô£åwUUÙ¬ª*//Y’­:wÎo'MJ·nÝ’$sçÎM²òëHÞéíåÛ¿õûÌ™3³óÎ;¯ÿƒ€w9óÌ3óã_’¤6É€$[%y>ÉäœyæYÙf›mrÌ1Ç4æˆ4q®€@AUUU¹ð óôÓOç¬qã2âÔSó³Ÿý,ÏΚ•þýû¯Ø®wïÞY–äÞüß•’·-K2%I«,¿µ+I>ò‘˜’sÎ9'Ëo ž¤W’.Iþ)Ɉ$­r '4âtl \F°ýöÛç[ßúÖ×ï´ÓNÙvë­óܬYùA’!I>šåoï{S’™Yþ9"·TW§ïn»e×]w-16ÍÜÂ… ³lY}–¿™tëw­mŸ¤w,¸¿ü`lT4Q“ï¹'»ì¼sþ¶xqÎÌò×~4dùeËI«®Î‚Ö­sÓW4êœ4Ëo lHR³†-Ö´þ[° ‰Ú~ûí3ûÅsô°aÙ¬}ûTWU¥Euuê“,iÝ:š¦MKß¾}‹ÎµpáÂ\|ñÅÙ³OŸlÛ­[öùçÎÏ~ö³•ÞB˜MS×®]³üO®a‹¿œ€•+ ЄuêÔ)W_}u®¾úêËêëëS©TR©TŠÏSWW—ÁŸùLþüßÿCÚ$T7ä¿§½”/}éÞÜvë­¹öºëRUå盲í¶Û&Ï>ûD’iIvÏ[Ÿ`“dj’ç²çž{6æxlldóüsÏ=7ÝîíÒO¶z{i}~Þ&9â†2øÀ3lذF› oúôééСC–,¹5Ëß&áíwÁz#555¹ï¾ûw@š‘ÿyì±,¨{=I²´¾’½öúTn¸á†âŸ›rÉ%—dÔ‰'¦¡’´ßv‹Ìöå|sôèüø?ÿ3_ùÊWŠÎÍ-XÀZiÑ¢E†~éKùñ¢yaÙÊëþgIòóEU6|x‘Y†å˜\8áüœ´ß‚<66yàÌä˜O-ê„“O~lI¦N½7U ¯çØ/$_û—d«Î ùÓŸîMÛæþûË}VÅï~÷»üñÙú«ŸÎÏ_”}Ÿõ§³Vz粆úúü¡ïéé¿u¯üúÖÛ6ø¬¾_ûð\ÖÚÖ[o©÷ÝŸACÎØE­rØ?’§&ÿöõLþÃ7x|$ÉÏþólÑ¡EŽî¿êº“%‹—%K–%?úæÿÅG’´j™üÇ7—ÿù¥—_Ëm·møoúrïþ˜nCú¯ò¶É•ªªt;ê“™;v,òüóçÏÏ›UÒ¢zÕu[n¶ü÷–-’¾;¯º~ë­’m·ZþçÇ|à ù•ªªÔ/^ºÚuõ‹—¹ M‰>6mÚd«­¶JË–-‹>oŸ>}2ýù%yúÅU×ýö–ÿ¾diò÷V]?o~2çÕå.ñ.Y•J%ƒÊóWß›ú¥+¿p¦~ñÒ¼pÍŸòÙÜàs@S"@€Êᇞ­j·È—¯¬ÊKóþoùßf'£~–ôÙ>©®JÆ\š¼ûnçý4Y´8©®®ä‹_üb‘yOûöwòÆÏçÁÃ'äéÏ'Iæýå¹Üÿù ²àÙW2ú›£‹ÌM…kÿÀF¥mÛ¶™të¯sàà²Í©od¿êóæâäKÚµNþiûä/3“ŸþzùU‡-ýÇÏ~—LúÃòÇ8ë¬Kmm™· Þk¯½ò‹Ÿÿ<_9"wí|jª[·Ì²EK²e×­ò«_þÒ hv°ÑÙsÏ=óäSÿ›«®º*÷Ü3%ªª3âÓ[eÖ¬çòùodäq½óâ‹/fÒ¯~‘?<¼ü2H‹ê¤M›V?þÂwÜqEç=ôÐC3xðàüú׿^ñA„x`Zµjõþ;À&F€¥.]ºäÔSOÍ©§žúžÛýïÿþo¦OŸžž={æcûXª«WóêõZ·n/|á òÜД`“Ö³gÏôìÙ³±ÇÞâEè@1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å Ó,¤®®.cÆŒÉàÁƒÓ¹sçTUUåꫯ^e»ûï¿?'œpBúöí›–-[¦ªjÝþqí³Ï>©ªªZå׸¾6*-{€ÆðòË/gìØ±Ùn»íÒ»wïL™2%•Je•í~ó›ßäÊ+¯ÌÇ?þñôìÙ3O=õÔ:?×6Ûl“sÏ=w¥eÝ»wÿÀ³ÀƬYH÷îÝ3gΜÔÖÖfÚ´iÙc=V»Ý 'œï|ç;iݺu¾öµ¯åÉ'Ÿ\ççêØ±c†úaG€MB³¼«U«V©­­M’444¬q»ÚÚÚ´nÝúC=WCCC–-[–ùóç¨Ç€MA³ ’ž|òÉ´oß>:tH·nÝræ™gféÒ¥=4Šfy V);ì°C˜ÝvÛ-uuu¹ùæ›söÙgçÉ'ŸÌ 7ÜÐØã@qdºâŠ+VúúK_úRŽ;î¸\~ùåùÆ7¾‘O|â44·`vÊ)§$Iîºë®FžÊs¤°­·Þ:IòÚk¯­q›“N:):uZiÙ!C2dÈ :ÿçúë¯Ïõ×_¿Ò²¹sç6Ò4›RØ3Ï<“$ÙrË-׸̈́ Ò§OŸR#°«ûðC=”¾}û6ÒD›·`­'Ó§OÏsÏ=·âë7Þx#‹-Zi›†††œ}öÙ©T*4hPé Ñ5Û+ ]tQæÎ›^x!I2iҤ̜93I2jÔ¨tèÐ!Ï>ûl®¹æš$Ƀ>˜$7n\Ò£G}ôÑ+¯W¯^0`@&Ožœ$™6mZ† ’¡C‡¦gÏžY°`A&Nœ˜©S§æ¸ãŽKïÞ½K.4 Í6@Î?ÿü<ûì³I’J¥’‰'æ–[nI¥RɰaÃÒ¡C‡Ì˜1#gžyæŠm*•JÎ8ãŒ$É>ûì³R€¼½ÍÛzôè‘OúÓ™8qbæÌ™“ªªªôêÕ+—^ziFŽYè( ii¶2cÆŒ÷ÝfŸ}öI}}ýZ=Þ»·ëÑ£Gn¼ñÆ4lª¼(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å #@€bPŒŠ @1(F€Å4»©««Ë˜1c2xðàtîÜ9UUU¹úê«WÙîþûïÏ 'œ¾}û¦eË–©ªZ÷TS§NÍÞ{ïöíÛ§[·n9ñÄSWW·>6JÍ.@^~ùåŒ;6ûÛßÒ»wï$I¥RYe»ßüæ7¹òÊ+S]]ž={®v›÷òÈ#dàÀY¸paÆŸ#Fä²Ë.ËG±^Ž6FÍ.@ºwïž9sædÆŒùÁ~°ÆíN8á„Ì›7/÷ßößÿ444¬ÓóœvÚiéÒ¥K¦L™’c=6cÇŽÍE]”ßýîw¹ãŽ;>ìalr®¿þúÆ‚œïæÅùn^œïæÅùæƒhvÒªU«ÔÖÖ&É{FEmmmZ·nýžcÞ¼y¹óÎ;sôÑG§¦¦fÅòaÆ¥¦¦&7ÝtÓzÜM™ÿ€5/Îwóâ|7/Îwóâ|óA4»)á±ÇËÒ¥KÓ¯_¿•–·lÙ2½{÷ÎÃ?ÜH“@ã ÀìÙ³“$ݺu[e]×®]ó /” š²,X° IV{ W›6mV¬€æ¦Ec°)jÛ¶m’dÑ¢E«¬[¸paÚµk÷žû?ñÄd®¦lîܹy衇{ q¾›ç»yq¾›—æx¾›ã÷ië›ÙÞ¾õêí[±ÞiöìÙéÞ½û÷Ûi§rôÑGoÐùšª¾}û6öä|7/Îwóâ|7/Íñ|ï´ÓN«½Õžµ#@6€]wÝ5-Z´È<Ã?|ÅòÅ‹ç‘GÉQGµÚýºuë–»ï¾{µá@ÓЭ[7ò!õ`úôéiß¾}¶Ùf›$IÇŽ³ÿþûçÚk¯Ígœ±â­x¯¹æšÔÕÕ½ç‡ú€MY³ ‹.º(sçÎ]ñnT“&MÊÌ™3“$£FJ‡òì³Ïæšk®I’<øàƒI’qãÆ¥¡¡!=zôXé6©^½zeÀ€™¹ûî»W<^UUÕ*Ë’äOúS¾õ­o塇J‡rä‘GæÜsÏMûöí7ø1@SÔ,h>(F€°A<ðÀùÚ×¾–]vÙ%555Ùn»íò/ÿò/yê©§Öú1î¼óÎì·ß~éÔ©S:tè~ýú妛nÚ€SóA}Øó}çwfàÀ©­­Íf›m–üãùÑ~”úúú <9Ä_ÿú×qÄéÙ³gÚ·oŸ.]ºd¯½öÊu×]·VûÏ;7Ç{l¶ÜrËÔÔÔd¿ýöËÃ?¼§æƒú0çû®»îÊðáóãŽ;¦}ûöéÙ³gFŽ™9sæ˜üÿoïÞcª®ÿ8Ž¿¾\ò )‘!aZÙed–3æ%Ó‰¡]^™Z£FºÕL[M3Êfé\õGµ\š­0ÉnÞ°ˆ »¨y¡µ‰ˆ19Ö@'†¡Ååóûã7Ï/:Šx._ð×ó±Í}ø|Ï^Ÿ½wŽç½ï÷óý¾~¾ÿîñÇWPPœNg’âZö¯Ü„ŽÀ{õÕWµgÏMŸ>])))ª­­ÕªU«4dÈíÝ»WwÜqG‡Ççææ*;;[iiiZ¹r¥‚ƒƒUQQ¡_ýÕ¦àjøR"M˜0AwÞy§rrr®ÂÂB-X°@UUUzóÍ7m\ :ãĉjllTVV–ÔÔÔ¤M›6éá‡Vuuµrrr.{l[[›&Nœ¨Ÿ~úI‹-Rtt´Þyç=ZÔÀm\ :×z/^¼XgÏžÕôéÓuóÍ7«ªªJ«V­RAA~üñGõéÓÇÆ• 3|©÷ß8p@~ø¡‡{/-àf€øþûïMsss»±cÇŽ‡ÃaæÌ™Óá±Ç7aaafáÂ…Œ?ò¥Þ³fÍ2‡ÃÔ××·¿ÿþûMTT”ß³"0Z[[ÍàÁƒMRRR‡ó>ûì3cY–Ù¼y³{ìôéÓ¦W¯^fÖ¬YŽ ?él½¿ùæ±Ý»wË²Ì /¼¨xð³ÎÖû¢¶¶6“ššj²³³Mrr²q:Nˆk —`! RSSÒþÛÀuûí·«¢¢¢Ãc׬Y#cŒ^~ùeIRcc£ûdèž|©wXX˜zô表¨¨vãñññ ÷{VFPPÚá¼M›6)>>^S¦LqÅÄÄhƌڶm›š››~ÐÙz1ÂcläÈ‘êÝ»÷¿Ð}t¶Þåå婼¼\Ë—/çÿo\ lcŒÑ©S§Óá¼;vhРA*((Pbb¢"##£¥K—òEv él½çÏŸ¯¶¶6Í›7Or¹\Z³f¶nݪ%K–Ø”ÞhjjR]]ªªªôÆo¨¸¸X‹-ê𘲲2 2Äc|èСjjjReee âÂGÞÔûRÕÐÐpÅït-oëÝÐРŋëùçŸç;\^Wž~Á¿K^^ž±,Ëäææv8/22ÒôîÝÛ8óÒK/™-[¶˜Ù³g˲̒%Kì Ÿu¶ÞƳÿ~o,Ë2–e™óî»ï>$|2oÞø  6ëÖ­ëð˜àà`óä“OzŒ—””˲̶mÛ>ò¦ÞÿTZZjBBBLfff€RÂ_¼©÷Ñ£GÍu×]g¶lÙâ£Á¥ð BÜÉ“'5|øpµ¶¶jïÞ½Šïpþõ×_¯óçÏËår)11Ñ=¾~ýzeeei÷îÝ—¼®ÝÃÕÖ;##Ceee:vìX»=cÆŒQee¥\.—‚ƒƒ~0~üxýðê©©QXXØ%çôìÙS™™™zï½÷Ú*##CÅÅÅ7nœqá£ÎÔûï***4|øp%''k÷îÝŠˆˆ°!%ü¥3õNOOןþ©;wºÇ’““•’’¢/¾øÂ®¨¸°uîÜ9¥§§ë÷ßWQQÑŒJRBB‚$y\;'Iª¯¯÷Pø…7õþöÛo5fÌ çN§S555r¹\Š ?›:uªÎ;§£G^vNß¾}USSã1^[[+éŸt©÷E¿üò‹ÒÒÒÔ«W/Ò|\ƒ®Tï;wª¸¸XO=õ”ª««Ý¯––555Éår©¡¡ÁæÔè®h@0.\ÓéÔÏ?ÿ¬‚‚ 4¨SÇÝ{ï½2Æx<óãâ–ØØX¿g…ï¼­wKK‹Z[[=Æ/Þ ©¥¥Å¯98çÏŸ—ôß;æ\ÎàÁƒuèÐ!JìÛ·Oºå–[šþÓ™zKÒ™3g”––¦ææf³1ùu¥zŸ8qB’4eÊÝtÓMîWMMvîÜ©þýû+77×¶¼èÞh@­­­š9s¦öíÛ§7jذa—œwòäIUTT´û‘9sæLIÒûï¿ïkkkSnn®¢££uÏ=÷6<®š/õ¾û}ûvýöÛoíÞïóÏ?Wdd¤ ðü¸:§OŸöknnÖúõëí~ðdmm­G½§M›¦S§NiË–-º:mܸQN§³Ó·ù„}|©÷ü¡ &¨¶¶V………|ž¯ÞÖ{ìØ±ÊÏÏo÷Úºu«bcc5tèPåçç+##ÃÖµ ûâIèˆgžyF_~ù¥œN§êêêôÑGµûûœ9s$IÏ=÷œÖ¯_¯êêj%%%I’&Ož¬±cÇjåÊ•ª««SJJŠòóóõÝwßiíÚµü@é†|©wNNŽ&Nœ¨aÆiîܹr8úä“OtèÐ!­X±‚ýÝÐܹsÕÐРQ£F)!!A'OžÔ† TYY©ÜÜ\wÍ–,YâQïiÓ¦é¾ûîÓ£>ªòòr÷“Ð1Z¶lYW. —áK½gÏž­ýû÷ë±ÇÓáÇuøða÷ûöìÙS“'Oî’5áò¼­w¿~ýÔ¯_?÷[°`úôé£I“&Ù½tg]ºÿ·Fí¾›Õ?_AAAîyYYY&((ȸ\®vÇ766š… š¾}ûš=z˜»îºË|üñÇv/äk½‹ŠŠÌÈ‘#MDD„»Þk×®µ{è¤O?ýÔŒ7ÎÄÇÇ›ÐÐPm&L˜`vìØÑnÞåê]__o²³³MLLŒ‰ˆˆ0<ð€9xð KÀUð¥ÞÉÉÉ—ýnèß¿¿ÝKA'øúùþ'ž„ŽKá.Xlö¡`¶¡`¶¡`¶¡`¶¡`€-V¬X¡I“&©OŸ> Ò²e˺:  Ѐlñâ‹/êàÁƒ2dˆ$ɲ¬.Nè !]ðïP]]­¤¤$9sF±±±]ÐE8ðšËåÒO<¡[o½Uáá኉‰ÑŒ3är¹<æ&%%I’Œ1vÇt#œxíÀÚ³gfÍš¥ÄÄD?~\«W¯ÖèÑ£U^^®°°°®Žèfh@^›8q¢¦NÚnÌét*55U›7oÖœ9sº( »â,€×‡ûßÍÍÍ:sæŒ  n¸Aeee]˜ Ð]Ñ€¼vþüy-]ºTýúõ“ÃáPll¬âââtöìY;w®«ãº!.ÁxmþüùZ·nž~úi¥¦¦***J’”™™©¶¶¶.NèŽh@^Û´i“²²²ôú믻Ç.\¸ úúú.Lèθ àµ3o¿ý6g?—Å€× Ü( þIDAT222”——§¨¨(ÝvÛmÚ³gJJJíñ¼¼¼<¹\.555I’JKKµ|ùrIÒ#<â~Nàÿ Àko½õ–‚ƒƒµaÃ]¸pA#FŒÐŽ;4~üxY–Õnî| ÒÒRI’eYúú믵k×.Y–¥Q£FÑ€À¿„ex$-›°€mh@؆€mh@؆€mh@؆€mh@؆€mh@؆€mh@؆€mh@؆€mþ/ŒqÂlÁeoIEND®B`‚lmfit-0.9.2/doc/_images/models_peak2.png0000644000032700003100000010446512603520205021346 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝwxÕõÝÿñçIÈž²‘•€¬0Å­ê®mm:ì]mkÇ]Jk‡µ­öw»nW‹­­ö¶Cm-ÖjiÕÖnp‘ 2ÃM ÈÞ$¿?>9!h9ç›sÎóq]\_øœóÆ+—æ•÷çýùÄ*+++‘$I’¤$ÈŠºI’$I™Ã"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Æ"I’$)i ’$I’’Ær¶mÛÆ7ÞÈØ±ci×®YYY<ôÐCµÞSYYɃ>ÈÅ_L=hÑ¢ƒ â–[na×®]U.I’$EËrÊÊʸ馛(..fèСÄb±ZïÙ¶mW]uëׯçë_ÿ:÷Üs£FâÆodܸqQ”-I’$E.'êRQ×®]Y»v-;v¤°°‘#Gôž&Mš0}útN>ùä굫¯¾šã?žo¼‘©S§rÎ9ç$³lI’$)rv@Ž@ãÆéر#¶ZÕ¥Q£FµÂGÜ¥—^ À‚ W $I’Ô@@’líÚµtèÐ!âJ$I’¤ä3€$ÙwÜAëÖ­‘$IRFr$‰n½õV¦NÊ}÷ÝG«V­¢.G’$IJ:H’üõ¯å§?ý)_þò—¹æšk>ô}%%%”””$±2I’$Ž.]ºÐ¥K—¨ËHY$xá…¸òÊ+¹ð ¹ÿþû?ô}%%%Œ1‚5kÖ$±:I’$Ž®]»2cÆ CÈ2€$Ø[o½Åe—]ƨQ£xì±ÇÈÊúð±›’’Ö¬Yßÿügòòò’X¥2Ñ„ ˜8qbÔe(øµ¦dñkMÉ0þ|>ÿùÏSRRb9Bš?>\p'œpO?ý4Mš49¤ËËË#???ÁÕ)ÓµiÓÆ¯3%…_kJ¿Ö¤Ô`9B÷Þ{/7n¬Þ.õä“O²bÅ ÆO,ãüóÏgãÆüà?à©§žªõñ}úô©óžI’$)@ŽÐÝwßÍòåˈÅbLž<™¿ÿýïÄb1®¼òJ***Xµj±XŒë®»î ÿ¯ÿú/ˆ$I’2Žä-]ºô?¾§¢¢" •H’$I©Ã‹¥ UPPu Ê~­)YüZ“RƒDÊPþZÉâך’ů5)5@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$I’$%D’$IRÒ@$)“Í ·ß¯¼u%’¤ ‘u’¤ˆ|ÿûp×]ШìÙŸø<úhø³$I bD’2у†ðqÛm°y3<ò<ù$üÏÿD]™$)ÍÙ‘¤L³r%|íkðå/ñ|ö³ðþûpã0nœrJÔUJ’Ò”IÊ4wÞ Í›Ã/~ÂGÜ~ÆÁõ×GW›$)í@$)“”–ÂÀ·¿ -ZÔ~-;;tD^yfÎŒ¦>IRÚ3€HR&ùÕ¯Âù·¾U÷ë—]={†îˆ$I `‘¤LQY úS˜÷hÛ¶î÷ää„pòè£PV–Üú$IÁ"I™â7`Å ((øè÷}á °oüóŸÉ©K’”Q ’”)&M‚®]á´Ó>ú};Âé§Ãã'§.IRF1€HR&Ø»{ ®¸²jÿ§ÿž{ ¸ø€÷ò“0u*|ðAòj”$eˆ$e‚7ß„uëàÓŸ®µ¼u+|ç;ðÇ?ðþË. Û°ž|2y5J’2‚D’2ÁóÏC»v0rd­å¹sÃlú{ïðþ®]Ãe„ÿøGòj”$eˆ$e‚矇óÎ w}Ô0{vx@>ö1xé¥Ð ‘$©ž@$)ÝmØï¼ÅâÁcõêð¶ZÎ96m‚ÂÂÄ×(IÊIJwS§BEŇÂïãÝj£F…ÛÒ§NM|’¤Œa‘¤t÷üó!etï^k¹²2„ŽO~7®#€4jgœS¦$¯VIRÚ3€HRº{å8묃–׬ Û®òó!/ïCæ@Î9¦Mƒ;_§$)#@$)­[‹Á˜1½ïx ~MŸ?ü!¼új7}6ìÚŽñ•$©@Ó¶mÛ¸ñÆ;v,íÚµ#++‹‡z¨Î÷Ο?Ÿ±cÇÒ²eKÚ·oÏ•W^Iyyy’+–”ѦM ÏSO=è¥÷Þ #={†2w.ÜqÜpC7x"´l o¼‘œz%Ii/'êRMYY7Ýt={ödèС¼üòËÄb±ƒÞ·jÕ*N?ýtÚ¶mËm·ÝÆ–-[¸ë®»˜={6o¿ý65Š zIgÚ48î¸ðëc…‹Ñ¯¾ºtÍ›á›ß„•+«>$;N>Ù"Iª7ÃÔµkWÖ®]KÇŽ),,dä—zÅÝzë­ìرƒ™3gÒ½jðsÔ¨QœwÞy<øàƒ|å+_IfÙ’2Õë¯×¹ý ¬ѣÃïÛ¶…Ï}.ï~þúWøÞ÷ªÞ8z4üú×aj½Ž¸H’t8Ü‚u˜7nLÇŽ¨¬¬üÐ÷=ñÄ\xá…ÕáàœsΡ_¿~<öØc ¯S’ؾŠŠêÜ~µgÌŸ: 5µj^ùKÅSNõëÃ,‰$IGÉ’«W¯¦¬¬Œ#FôÚÈ‘#™9sfUIÊ83f„¤QG)./ |ð‡}úÓ0s&¬ZUµpÒIáé6,IR=0€$@II ]ºt9èµ.]º°aÃöìÙ“ì²$eš3 iÓ0H~€ø‘»u¼Ä°aá9~ÕB›60p`8&K’¤£dI€Uçå7iÒä ×Ž9æ˜Z„™1#¤‰œƒÇýfÏCæmÛüa½z…‹ ,¨±xòÉðÖ[‰«U’”1 дiSvíÚuÐk;wî¬õIJ˜3 Ž­ : um¿‚pðU¿~û; EEÀðááœÞªÿ†I’t¤<+â[¯â[±j*))¡}ûöy ï„ hÓ¦M­µ‚‚ ê·PIékãÆ04þÓŸÖùò{ïÁç?ÿáž›: ¯½§ŸóNîÞ½¡uò!§ÿIRº™4i“&Mªµ¶qãÆˆªIèÖ­Ç{,ï¼óÎA¯½ýöÛ :ô#?~âĉäçç'ªüÃóòàw¿ƒçž ~·b0¹99PXh‘”1êúpQQǨ¢ôହüòËyúé§YU}Œ L:•E‹ñ©O}*ÂÊ$e„wÞ ×œ÷ëÇŒðöÛû_zöÙpÇÙgø‡çæBI Lžþ¼hå1a½°0±uK’Òž#pï½÷²qãFÖ¬YÀ“O>ÉŠ+?~<­Zµâúë¯çoûgußþö·Ù²e wÞy'ƒæK_úR”åKÊ3f„¹ìl¾÷½p³ù¢EáÖógž ‘ª+ê”›žóæ…ç’%„žD’t” Gàî»ïfùòåÄb1&OžÌßÿþwb±W^y%­Zµ¢{÷î¼òÊ+|÷»ßåºë®£I“&\xá…Ü}÷Ý9ÿ!IõaË«El:㺠†nÆÔ©pÖYa[Õ·¿ýÑß¿ÿþß]@ †ÃŸþ»vA§üI’t( G`éÒ¥‡ô¾ðì³Ï&¸I:ÀæÍ´\÷>¿_<”«·„ð‹Áo Íš…ùôqã>úѼ9ôè>î¼óà={ ú‡œ®%IÒb‘¤4³ïÝÙdÏ—á´…aíóŸ‡I“`ÎèÐáÐòøqá½½{‡³½Ï`šÅb0k–D’tÄ ’”f6¾ò.-iÄ”5y\2#¬Ý|3lÙ: —\îúøOî¿?<§M Ï÷KšrbŸ>¡"IÒ2€HRšÙõÖ,V2€=4æ‰'°yûO´:\'œžK–À‰ƒ@$IGÅcx%)M<ð@ÈæÍbCÈÉ_¬=P~$:w“%Kˆ$é(@$) TV„ ð«‰ûh½r6ËZ !/öíƒ~ýŽîŸ‹….Èܹ°¦ý (+ƒuëê§pIRÆ1€HRX¿¶o‡5¯,¢ñÞ|ÐshõMçG@úö…?üÎ?(,Ø‘$!ˆ$¥e˳ْ÷Ø“7˜ÁƒÃZ}Ûnƒ„u-z³'çˆ$éˆ@$) TÝʉ̡„Λב#ÃÚÀGÿÏïß¾øEè——ÍêÖ ’¤#f‘¤4°lYÖxóÀ 'ÀgÀüùaûT}ÉÍ…¹Y¢K’ŽœD’ÒÀòåг' m<—¹ ¤W¯0<ž›[¿Ÿ'/ÞÜ:ˆÊ¹s¡¢¢~ÿá’¤Œ`‘¤4°|9ô9nݶ/ª ‰› oíDlûvxÿýÄ|IRZ3€HRX¶ F¶^HVÅ>N¾j ݺ%æóäæÂlªNš3'1ŸD’”Ö ’”–/‡!9søÒˆÅóyz÷†²¬ÎìlÞÎ9IÒ1€HRŠÛ¸6m‚vÍ ×–·k—°ÏÕ¸1ôîcUÑ%IGÆ"I).~o— sëçÌÝÿ /æf@$IGÆ"I).@Z¯œ $üóååÁô̓`Ñ"ع3áŸO’”^ ’”â–/‡v‘½lqR: ÇëÁ¾}á¢I’ƒD’R\i)œÜn!±}û’@FŒ€9œþà6,IÒa2€HRŠ+/‡Mà XÉØ‚Õ³'4iß’M­Žƒ þù$IéÅ"I)®¬ NÌš›ð°âb±Ðy¿q®[°$I‡Í"I)®¼úíIÎ Xq#F@áö<; ’¤Ãf‘¤WV=·$7€ …Ûs©\¼öìIÚç•$¥>ˆ$¥¸Íe»è°iqRæ?âFŒ€äÛ»—MEK’öy%I©Ï"I)¬¢:¬/&«²"©îÝaäòøñånÃ’$:ˆ$¥°  ¯2y'`ÅÅbpÇCØÕ´5-WÏgûö¤}jIRŠ3€HR +/‡<æ³»]§¤œ€UK,ÆÎãóÈe%%ÉýÔ’¤Ôe‘¤VVý)fÏ ý#ùü•ýs ’¤Ãb‘¤V^Hv^4¤ÉÐ<ò˜ÏšÕ•‘|~IRê1€HR ++­  i<(šrÌÐ\Z±…ÍŶ@$I‡Æ"I)l÷û«hƲ"ê€Äòr¨˜çè’¤Cc‘¤–½¸8ü¦4„N`O¬MÞ÷(^IÒ¡1€HR k¶ª˜=±FЫW4ää°¶e_Z—@$I‡Æ"I)¬Mi1¥-zCNNd5¬ï˜G§ nÁ’$ˆ$¥°NSÞ.¢íWU¶—K xá…pCú¶m‘–#Ijà ’”ºm_Èæ®ÑŠþyt«\Í£ÿ·™Õ«aæÌHË‘$5pIJQ•ÛwÐmß vöŒ6€4NÂ*~2 Ä¿óN”ÕH’:ˆ$¥;áüóC—aúC‹È¢’N§E@ZŽŸ¿×î4kf‘$}´è¦%I‡mùrxþyز.Ø^Ì©ÀàOE@ºômÁ ŽcpÎ|š¦N´IRgD’RHYYx¾ñì˜UÌ®æíˆÛ!ÒšZ·†EYý9¥C1cÆÀâÅðÁ‘–$IjÀ ’”Bâ䬳`X³b жû‹A΀þ nRÌÈ‘amÆŒhk’$5\IJ!eeáþgžKú“•}8ã«ýi¹v1}OØG«VÎH’>œD’RHy9´kMW’³¤ú7ŒBÿþ°kY+—3x0Ì›uA’¤†Ê"I)¤¬ Ž=(-…Í›V(.æ¸ã`õêhË‘$5\IJ!Õ¤8ܹÑ`ÈqÇAÓ¦P\L÷î°jUÔI’*ˆ$¥òrèÐ@²² wï¨K ²² o_X° :€TVF]”$©!2€HR ©Õ9þxhÒ$ê’öËÍ­î€ìÜ 6D]$©!2€HR ©@Êö«¸þý«¸ K’T7ˆ$¥Z[°b))á¸Ö›X¹2âz$I ’D’RĶm°ctj»–.m˜è¸q!ÙÙv@$Iu3€HRŠˆß‚~Üž÷aß¾†@úõ {q1]»@$Iu3€HRŠ(/Ï.›Ø¼q­ZA—.Å+IúHIJñHûòbhÑ"|³ßÐÔD7€H’êb‘¤ -VW  ÇbÑT—þýkÝ"IÒ ’”"ÊË¡ysÈYÒOÀŠëß-¢{× /#”$ÕÉ’@3fÌà’K.¡k×®4oÞœ¼¼|xD¥‡Ð$??Ÿ¢¢"-ZTk}Ò¤Idgg3xðàˆ*“”Š/†!ÇÃ1Ç@Q—óŸU ¢†çß}7ê‚$I …$A¾ÿýï“••Åi§ÆÍ7ßÌo~ó>þñóÏþ“«®ºŠÎ;G]¢¤±o_8IªOEq¸ÿ#+þÓ]@ ‚&Màw¢.H’ÔP¤ÀÿÅRÓàÁƒyùå—6lwÞy'ßùÎwXºt)·Þz+÷Ýw_ÔåIJ!«VÁîÝÐuK Á׿?,\H£œJ†5€H’ös$FÅ3Ï<u’R܃†.B›Òb¸èÔ¨Ë94ýûÃÖ­°f #Gvãùç£.H’ÔPØ‘¤lÝ:¸ë.¸ö+›É.-I­@q1£FÁÂ…àÁ1’$0€HRƒvûíaäãû—, ©@zõ‚œX°€Ñ£ÃÒomI’¤†Á"I Ø+¯Àå—Wm¿‚Ô …ëÏ‹‹éÓ~ô#¸þz˜2%êÂ$IQ3€HR¶v-tïCçÎкuÔ%ºÜÜP7pÓMpÚiðãG\“$)rIj ** ´ºt!|#Ÿ*ݸª£x²³áì³aùòˆk’$EÎ"I Ôúõ°woh|¤lY¾vì [·0T¿gOÄuI’"e‘¤jíÚðìÒ©"#•Ф²2\ãtíþXZq]’¤H@$©*) Ïn•«B!ToÃêÚ5üqÍšˆê‘$5Ij âNS쬸 ];ˆ$©ˆ$5Pk×B›6Ðxiq8Ööøã£.éðõï о}øk¬^qM’¤H@$©*)©1€Þ§O¸Ø/ÕÔ8 +++œèeD’2›D’¨µkSøÞ¸x©¬ÂIXIÊlIj ju@R5€äæÂæÍÕG_uíj‘¤Lg‘¤jíZ8®ývX±"uH'a@$)³@$©™;7\B¸v-äå, ‹©@z÷× @$IURp¢Q’ÒÛå—‡ÙM›à„=)zo\ãÆÐ«W­²aC¸Ö¤iÓˆk“$Eˆ$50«WÃË/‡ßwÛZίmß>ÒšŽJ“°âwÄ/Y”$eˆ$5 Û·ÃÖ­a×@ûò@«#€¸ K’2—D’ªÃ¢øÁ gOh¹&MÈûïî]I’D’’xùÌg`ÙÒJ²§I©¨€%KhÝ:Œ…Äÿž’¤Ìc‘¤dݺðìÔ‰p Ö–-©@rsó¸˜X,üÝâOIRæ1€HRRZ YYСÕs)@:v„Ö­«ÿ>:Ù‘¤Lf‘¤¤´4„ìlÂ7ìÙÙá.T‹ÕDïØÑ"I™Ì"I Ⱥuát |ÃÞ«WšHu5ˆ[°$)³@$©)-­šÿ€ð {ªo¿Š³"Iªb‘¤$­Ȇ P^nD’2œD’ÒÒª-X»vÁÒ¥é@, cGض-ü’$eˆ$5 ëÖUu@–, wg¤KéÓ' £Wwxì‚HRf2€HRpóÍ0cFØ¥Ô©éso\Ó¦áj÷ââê!{ç@$)3åD]€$eºM›à§?…ü#ü¹cG`Ö|hÛ¶Æ@HÈÍ­Õ1€HRf²"I›93< óS'`þ|ÈË Û–ÒEÕIX:„¿–[°$)3@$)bEEa‡RË–áÏ:óæ…’Nú÷‡%KÈ®ØC‡v@$)S@$)bEE0t(|þóáÏǶ¯€ Ò3€ìÝ K—z¯$e0ˆ$E¬¨òóág?ƒGcÊVÂöíé@ z½´4Å[YmY’¤ä2€HR„¶m ÍŽüü0|þÙÏæ? ýH׮Т,X@§NðöÛЭœ~:,Zuq’¤d1€HR„fÍ €üü‹óçï?¶6ÄbЯ_udÙ²p=Èš5pê©áÚIRú3€HR„ŠŠ qc0 Æâ¼yáÈÚ¬4üOtÕIXgž cÇ”)p÷ÝPVååQ'IJ†4ü¿›$¥Ž¢"4(„jñ#xÓQU¹ôRxæhÓ:w/•”D[š$)9 ’¡øzµÊÊô ¹¹¡ÝñÁÕK]º„§D’2ƒD’"²s'Ì{@)+ƒ Ò7€Ô8 +.ÞY»6‚z$IIg‘¤ˆÌ™®Å8hÒ7€ôë†ÑãO Ih×Έ$e ˆ$E¤¨²³Ã HµùóÃbŸ>‘Õ•PÍšÁñLJAûºt1€HR¦0€HRDŠŠÂéWM›ÖXœ7úö=`*=Í pPéÜÙ"I™Â"I),<`û¤÷zÜÀaø¥; ’”9 ’½{aöl6ì€2%€,_[·V/uéâº$e ˆ$E ¼ví‚N¨±¸y3¬^þ$~ëbAôx¤²2¢š$IIc‘¤¬_žíÛ×X\° <Ó=€Äÿ~5¶aué۷Ö-Õ$IJˆ$E`Æðl×®Æb¼#¿+#]5o½zÕ Þ†.I™Ã"I¨³2gNøÆ¼E‹HjJªk„åmè’”9 ’x¤mÛ‹sç†oÌ3Á€mÁÑ%)@$)ë×C«V“ScqÎ8ñÄÈjJªNÂjÙ2ÜQhD’ÒŸD’"°aÃÛ¯6m‚•+3+€@õ6¬X ºv…U«"¬I’”IŠÀúõ  Ç·#eJÉÍ Ïs yy¡ $IJoIŠÀA9s ;;ýOÀŠ«ã$¬!Cà½÷"¬I’”®¼!ú IDATIŠÀ† t@æÌ¾}á˜c"«)é<(€¬] ëÖEX“$)á VTTÄÅ_LûöíiÞ¼9ƒ âW¿úUÔeIŠØúõt@2鬸jmÁ<8ÊâÅ‹£.QRDÖ¯ÏZL;+î€Ò¯_x.\Q=’¤„3€$HÓ¦M(((¨µÿó›o¾™ôš$5 µ: ••™yVÜ Aa¿´€Î¡E X´(âº$I “ýþäèÚµ+óæÍ£S§NµÖ;vìÀ|ð¡;aÂÚ´iSk­  à 0#)µlÙW^~Ê‹A›6ÀêÕ°iSæøå³gC§NÄbá>F; ’‚I“&1iÒ¤Zk7nŒ¨šôaI#F0eÊV­ZEß¾}«×׬YÀ±Çû¡;qâDòóó^£¤äzýuøÇ? ++„ìlö`gj9á„ý—œ{.šDRCP×€‹ŠŠ>|xD¥·`%ȧ?ýi~ÿûß×ZÿÝï~G£F8óÌ3#¨JR” ¡Q#¨¨¨1€>gN8 ªgÏHk‹Lvv_5æ@úöu –$¥3; 2tèP®ºê*þð‡?°wï^N?ýt^~ùeüq®¿þz:wîu‰’’¬°N; zõ c@øÆûÄC[$S þåTé×Ö¬ ¤·ha]’¤„0€$Ðý÷ßO=øãÿÈäÉ“9þøã™8q"ãǺ4I(,„Ï|n¿=Ìžðî»pÊ)‘Ö¹Áƒáá‡aï^ÈÉ©> kñb:4ÚÒ$Iõ/ƒä–x999Üpà ,]º”]»vQ\\lø2TY¬\ LJô¬,`×®pëÞ!Q—­ÁƒÃ̓Uƒñ±9ç@$)=@$) â;ŒjÍ-Ο~êŸédРðœ=ó1íÛÃ#À7¾¶bI’Ò‡D’’ °Z·†Þ½k,¾ûnxÆ¿ÏTíÚA·nµÑ €'Ÿ„û^а6IR½3€HR̘ùùaûUµY³ OhÙ2²ºŒnDÿÓŸBƒ¨}{(*а.IR½3€HR‚UVÂoÀèѼ0k–Û¯â ={Bn. 3gFX—$©Þ@$)Á–.…ÒÒ»ª¬4€Ô4x0¬XÜ0œŸoD’ÒD’lÚ´ð¬ÕYµ 6lðœÙ¸ÁƒÃ³j=.??œV^AM’¤„0€HR‚MŸyy5n?‡Ðý; qýû‡kâkl° ܆%IéÄ"I 6}zw ΚmÚÀqÇERSƒÓ¨Q8ú*~2X•>}ÂmènÃ’¤ôa‘¤Ú´)ì*:(€¼ûnØ~UëX¬ —ŸP«#++ük2€HRú0€HRÍœæÍO>ù€@?X~~Hk{öÔZÎ˃ŋ#ªI’Tï ’”@Ë—‡g¯^5·n ßQ@j6 vï†yój-wï«WGT“$©Þ@$)V¬€Ž¡iÓ‹³g‡¶ˆ¤¶!C–´ö[uëëÖÔ‘$¥(ˆ$%ЊУÇ‹³fANNºÖ~-Z„Ó°ê ••PRQ]’¤ze‘¤ª3€¼ûn¸æû˜c"©©A«ãæÁnÝÂÓmX’” ’”@+VÔqÒna! I= ^~~èíÛW½ «VET“$©^@$)A*+ëè€ìÞ.Û3€ÔmØ0ض -ª^jÛ64‹ì€HRz0€HR‚lØÛ·@æÌ !dĈÈêjÐâWŸ×؆‹….ˆD’ÒƒD’dÅŠð¬@ Ãízž€U·¶mÙÅÌx¯$¥ˆ$%ÈÊ•áY+€Ì˜B³f‘Ô”>dÝ"IéÁ"I ²b4nî©æú6lØþ+ä«@$)}@$)Aâ'`eÅÿK»kW@wþã£åçÃÆ°lYõR·nᬙD’”¢ ’” €5gN¸ÎÛÈGËÏÏÛ°ºu ùmƈj’$Õˆ$%ÈòåÜ2cdg;€þŸtê]»@ÀmX’” ’” ‹AŸ>5 ÃzÓ¦‘Õ”2†­J÷îá?YL’”º ’”ëׇ_ýû×Xœ1ÃùC5j¼ývõÐG÷îк5¼ûnÄuI’ŽšD’`áÂðìׯjaçÎ0âüÇ¡5* ¢W݈‹…u……×%I:jIJ€xéÛ·jaöì0€näÐŒžo¿]½4b„D’ÒD’ ¸8ljÞ¼j¡°rr`ðàHëJmÛ†öÑ[oU/ .w\·.º$IGÍ"I °paó'žÇYM)礓ju@â»×ì‚HRj3€HRטÿ€ð“üø¶"šQ£ÂÔù®]œp´i²Ü¼yaG›$)õ@$©žUT„ÙéêÈæÍ0w.Œi])gÔ(ؽfÍö¢ßqG8ÍøÑG#®O’tD ’TÏV¬?´¯ ñãdO>9ÒºRÎ!иq­9qãÂxH“&PRam’¤#f‘¤zöúëáY½ëÍ7ÃÞ¡ZC!úš4¡CkÍ\{mx;æMÖ&I:bIªG·ÝW^ gž Ç_µøÆa :Ëÿä¶“NªÕ‰kÝ:\"IJ=þßP’êÑw¿S¦TåÊÊÐqþãÈŒj6l¨µÜ¦IJUIª'ûö…ŸÊŸz*dgW-Æ¿yvþãÈœtRx¾óN­åÖ­ ’”ª ’TO>ø 4<Ú·¯±øæ›á9jT$5¥¼>}ÂÔy90€HR*3€HR=)/Ïj,¾ñäå…o¢uøb±ÞâA®Š3 ’”º ’TOÖ¯σ: n¿::§œ‚\EEõ’3 ’”º ’TO [·Â{ï9€~´ÆŒ ûÛæÏ¯^r –$¥.ˆ$Õ“ø¬víªfÌ?µ·rtN:)LõÇ/X!Í›k5E$I)Â"Iõdýúðq£FU o¼-[€‘Ö•òš7‡üüZ¤M›0ð¿eK„uI’ŽˆD’êÉúõ̼ñF ®>“WGìÔSꀀ۰$)@$©ž”—×8«¢¦OÔ:zcÆÀ²e°j`‘¤Tf‘¤zR«2~X8ãŒHkJ§žžÓ¦ûˆGñJRê1€HR=©@^yrr@¯/;‡K «H›6aÙˆ$¥ˆ$Õ“Z[°^}FŒÔªcÆTϸK’R—D’êIu¤²2·_Õ¯1c`Ö,ؼ™¦MCƒÉ"I©Ç"Iõ ²2€%K ¤N?=ê²Ò˘1a¸ÿÍ7‰ÅÂ6,g@$)õ@$©lÚûöUu@^}b±ýƒÓªýú…„Wc–IJ=Iªëׇgûö„ô¡C÷*¨~Äb¡ òÚk€D’R•D’ŽÐæÍ°|yø}<€tè€ó‰túéðæ›°sguùú×áùç£.L’t¨ ’t„n½5äŒÊÊp@Ç+Â…yÎ$ÆÙgÃÎðæ›´iï¼÷ßÏ=ua’¤Ce‘¤#´|yøµdÉþH»¹a{cÆDWX:4(ìs›:•֭ÿ{€²²hË’$:HÝrË-dee1hР¨K‘TJKÃóå—CiÑ¿ù* Çimi++ Î: ^|±ÖˆÍºuÑ•$I:<$Yµj·Þz+Í›7'‹E]ޤz /½<^H@wûUb}6¼ý6›n G; ’”J Iò½ï}SN9…#FPYYu9’êAi)4i? À7/YÅÅád%Î9çÀÞ½ŒÚý:ݺAAIJ%$xõÕWyâ‰'˜8q"•••v@¤4°gO˜û¸àؽzõ‚S¶½ŽŠ5€$V߾ЭçÄ^äý÷¡[·Ðñg;’” ¶oß>¾õ­oñ•¯|…F]ޤzßòsùåи1|ùËõâ>¼ê2%LUÈ‹½ô"CÇŽ°klÙua’¤C‘uéîþûïgÅŠ¼øâ‹Q—"©Åç?úö…Y³ w¯ è1®º*ÚÂ2ÅÙgßÿ 6pì±í€ [µŠ¸.IÒd$Ö¯_Ï 7ÜÀ 7Ü@{"*¥•xéÔ rs¡Ñ‚Ùaá¼ó¢-,SœuVØsõòËtì–œ‘¤Ô`I Ÿüä'tèÐo}ë[Q—"©žÅHü›_^xš6…SO¬¦ŒÒ³'ôî /¾X}â±D’Rƒ[°dÑ¢E<ðÀLœ8‘U«VU¯ïܹ“Ý»w³|ùrZµjEÛ¶múØ &ЦM›Zk$¼nI‡¦´Z·†cŽ©Zxá…pün“&‘Ö•QÎ>¦N¥ýÄ0âQ¼’êÛ¤I“˜4iR­µ7FTMú0€$ÈêÕ«©¨¨`üøñŒ?þ ×{õêÅ„ øùÏ~Ðk'N$???eJ:B¥¥aû;wÂk¯ÁM7EZSÆ9÷\xàrJVÒ®Ýqv@$Õ»º~\TTÄðáÃ#ª(=@dРALž<¹Ö‘»•••üä'?aëÖ­ÜsÏ=ôîÝ; %Zdútر#|C¬ä9ï¼p3ú3ÏбãWí€HRŠ0€$Hûöí¹ä’KZÿÅ/~ÀÅ_œì’$Õ£Zä…Â0È A‘Ö”qÚ¶…Ñ£áßÿ¦cǯÚ‘¤áz’Åb1/"”ÒÀAäÜsÃOã•\ãÆÁÔ©ti¿Ûˆ$¥ÿo™d/½ôï½÷^ÔeH:JÕdÝ:(*òøÝ¨Œ[·ròÞ×í€HRŠ0€HÒaÚ·ÊË«È3Ï„Åqã"­)c  ;3¢ìÖ­ƒ… á3Ÿ '”ÅJ–$5,I:L«WCEté<ý4ŒUc?–’*+ ÆŽ%wÙ3¬] À”)°y3ÌŸuq’¤º@$é0½ðBø¾÷”»á¹çà £.)³Gû’¹œÞk%wݺ +WF[–$©nž‚%I‡éßÿ†“O†öó^ƒ-[ Q«:Ž÷å>_ý*:ÀŠ×%Iª“I: »w‡ÈÇ?NØ~Õ­ uY™-~o|8î8ˆ$5TI: Ó¦…¦ÇÇÇUÂSO…î‡GkGoܸ0ü±k=z@$©¡2€HÒaø÷¿ÃðùÐf aÉ·_5][·ÂK/!€8"I “D’Ãܹ0r$Äþõ4s œ}vÔ% Â-ô'œ“'!€,_••×%I:ˆD’êUн;aþãÜs¡Y³¨K„mp—]ÿü'ìÛG¡!²iSÔ…I’d‘¤Ã°z5ôiÿ¼ö\pAÔ娦Ë. ·¾ù&=z„%·aIRÃc‘¤C´clØ#×>n"¼øâ¨KRM£G‡ !'Oæ¸ãÂ’ƒè’Ôð@$é­^ž¹³‡SO…®]£-HµeeÁ%—ÀäÉtîTINŽD’"ˆ$¢U« ›hWø<|ò“Q—£º\v¼ÿ>ÙófÓ½»D’"ˆ$¢Õ«á"ž"kÏn¸üò¨ËQ]Î>Zµ‚É“½ D’(ˆ$¢U«  çñ0kн{Ôå¨.‡Ã&O¦gOX¶,ê‚$I2€HÒ!*_º…s÷=ëö«†î²Ë`Ö,ò[/aéÒ¨‹‘$È"IÿÁ×¾?ý)t)|š&•»Ü~ÕÐ}üãм9§¯y”’’pz™$©á0€HÒGع~,zœ÷;Œ„ž=£.K¥ys¸ôRúý¨t–$50Iú¯¿~‚¾cý6Foz†ÅCÜ~• h¾lƒ˜í6,Ij` ’ôž{ºtk:ý“fì`ýÙŸŠº$Š}ŒÊöíùBÖ_ ’ÔÀ@$é#<û,œ>|­ÙüÆZíuI:ûÔ§ølÖ$–.©ˆºIR Iú«WÜ9pɨú.¿7ûF]•YAÝö® ñŒéQW"IªÁ"I¢°0<ÏZ;‰XN?_ù)çÏSɘ1lhÞ!ó'E]‰$©ˆ$}ˆ>Ï–ÿx.¾˜X»¶Ñ¤Ã“•Å¢œ³þ1*wIRˆ$}ˆad“÷Èzo|á Q—£#°é‚ÏÒ¡²œ­O<u)’¤*Iú7—rþíÛÃØ±Q—£#ÐîÌ!¼Ëöþߢ.E’TÅ"IbÓ†}|b×_  7Žº>}cüž«iýÚSPZu9’$ ’ô¡ºÍŸB§½kÜ~•ÂÚ´)?Ç>²Ã•ö’¤È@$e¼wß…_ýêàõSæüËZœ#G&¿(Õ›ÎÚñV·OÀï••Q—#IÏ")ãMšßùlÚTc±¤„QkÿÉËý¯X,²Útôòòà¡ì«¡¸¦{'ˆ$EÍ")ã••Á¾}ðÊ+5ÿðvÇšðÞ·_¥ºÜ\øó골ìÕ ~÷»¨Ë‘¤Œg‘”ñÊËÃsÊ”ª…}ûàÿþ§š}†&[GV—êGn.ìÜÅ—^=›7G]’$e4ˆ¤ŒWVžÕä¹ç`Å þ/v mÚDV–êInnx¾;ô¿`çNxä‘H둤Lg‘”ñÊË¡gO˜?V¯~û[*‡奭# i {whÖ Þ-ï—^ ÷Þë0º$EÈ")ã••Á§?~ÿ×»VÂÓO³ó‹_£¢2fIYYп?,X|ë[0o¼øbÔeIRÆ2€HÊh{ö„Ó¯òòàû߇íËÎìf¬?ÿ³4‘› sçgœƒÁ/uI’”± ’2Z|½C¸ãgÛùnÓû¸oÏ—Y¾¡%`I'Ÿ 3fÀö1?žz Þ?ê²$)#@$e´x9öXàá‡iºk#¿dûYhÛ~ýë¨Ë’¤Œd‘”Ñâ'`uhW¿ø»/øËèÅŒaÝ’rs¡kת“Κ5ƒ¯|%ÜŒ¾ukÔ¥IRÆ1€HÊhñH—¢ÁÂ…4¾î»´n ……a½µ×€¤…X Î=·ÆQËßølÙ=i]’”‰ ’2ZY4jÍ~ûs8ùdb§Œ¦wïp$o“&pÌ1QW¨úrî¹ðî»U]¯=ÂÑgwÝ{÷F]š$eˆ¤ŒV^gµ."öòËpíµôén¿J7çžž/½TµpÝu°l<úhT%IRF2€HÊheeð=·ÃñLJKê€Þ½ÃkôÒ¥ œpLŸ^µ0d|üãpÛm!qJ’’Â")£5Y2múüèG“„@ÒÑèÑðÆ5®¿>\LøÔS‘Õ$I™Æ")£›y šu‡ÿú¯ê5; ékôh˜9vî¬Z8õT8í4¸õV¨¬Œ´6IÊI™«¸˜³JeÊÈAãÆÕËv@Ò×èѰgÏþS΀ÐýzûmxñÅÈê’¤Lb‘”¹n½•uY]X4æªZË]º„Ó¯<‚7ý M›Â›oÖX;† ƒŸýÌ.ˆ$%DRfZ¼˜ÊGáv~H».Mj½”•gž¾YUziÔFބɓáÇ?†âbÂ%!7ß ¯¿Ï=u‰’”ö ’2ÓÍ7SÙáX~[ñe:t8øågžÿþïä—¥Ä;ýt˜6-Œ}üò—U‹ãÆ…yë¯÷D,IJ0ˆ¤ÌóÞ{ððìûêOÙISºvº %Óu×Á¬Yðõ¯Ã³ÏV-Æb!‘Ìœ ÿ{¤õIRº3€HÊ<×]}ú0ÌW€0ó¡ÌѼ9 šï¿‹W½púépþùðÓŸz;º$%DRfy饰¿êÖ[Y½®`ÉTgfBâ]M›`òÈ[`ÁøÓŸ¢-N’Ò˜DR樨€üN: .¿œ’hÕ*üD\™§E 3fùÁà7gËùŸ„Ÿü¶n¶@IJSI™ãoƒ3àŽ; cÍœÿÈpãÆÁ”)pÓMðÀaíOÝë×Ãí·G[œ$¥)ˆ¤Ì°}{ø÷E…½þ@I‰Û¯2Ý7¾—^ 7ÜæBš6…Y›{Áµ×Â]wÁ²eQ—(IiÇ’@ï¼óÿýßÿÍÀiÑ¢={öäŠ+®`Ñ¢EQ—&ežÛnƒµkáç?¯^²¢æÍaÒ$øÇ?à‰' o_X¸p;zÛ¶!´J’êUNÔ¤³Ûo¿7ÞxƒO}êS <˜’’î½÷^òóóyóÍ78p`Ô%J™añâ°íê‡?„>}ª—KJÂ8ˆ2[,—\~߯_UiÑ"lÁºòJxõÕê®™$éè@èÚk¯eäÈ‘ääìÿ×|ÅW0hÐ þ÷ÿ—?yÊŠ”x••0~<»uÝuµ–í€è@ýúÁÃWýásŸƒ_ÿ:ÜHYXŽÌ’$5·`%ÐèÑ£k…€>}ú0`À,XQUR†yòIxæ®X3‘•ë›U/oÙÆBœQM}ûªUákƒ¬,¸ï>˜7î¾;êÒ$)m@’¬²²’ÒÒR:tèu)RúÛ²ƧdÈXß{ 3g$< ª©_¿ð¬¾œpØ0øÎwàÿý¿‹’¤£aI²Gy„5kÖpÅWD]Š”þ~øCX¿žg.ú cÞ¼ý/­YžnÁRMñ²paÅŸý :w†¯}-ìÝ“$H-X°€o~ó›œrÊ)|ñ‹_Œº)½½ürØ>ó¿ÿËÂ=½˜??¼´s§Õ­}ûpøU­Ò¼9Ü?Lê é’T I²víZ.¸àÚ¶mËã?N,‹º$)}mÛW_ §ßøFuؘ7–, ß`Þ|3´l;’âb1ÈÍ…ÇÛR8ÿü0”>a¬^Y}’”<+ 6mÚĸqãØ¼y3¯½ö;wþÈ÷O˜06mÚÔZ+((    ‘eJéãÇ?{¬ž}²²X»6,/XO=»w‡nH|»TÓ/~ŸøDÿxýõ'7ßs¼ø"|éKÕ_[’ÒÛ¤I“˜4iR­µ7FTMúˆUVº¡5‘vîÜÉÇ>ö1fΜɔ)S8é#.(**bøðá’ŸŸŸÄ*¥4ò ð±…S‹¾û] Üp½eK¸ÔúÄÃvþk®]»Âµ¥•–©§B»v!„4n\õÂsÏÁرðË_·¾i’¢á÷kGÏß$о}û¸âŠ+xë­·øÛßþö‘áCR=(+ Çw^Ø*SeíZ8ûìðû9sÂnšO~Òð¡שS¸!}æLøŸÿ©ñÂùç‡{A~ðƒýCE’¤ÃbI k¯½–§žzбcÇR^^ΟÿüçZ¿$Õ£Êʰ5fï^xè¡êí1{ö@yy¸ñ¼iÓðÖóϰN¥Œ‘#CÖøÝï ¢¢Æ ·ß={†»sgdõIRªr$fÍšE,ã©§žâ©§žªõZ,ãóŸÿ|D•IièÞ{á_ÿ‚§Ÿ®u´Õºu!›tëýû‡?Ÿxb„u*¥\|1Lœ³f…™š5ƒ¿üFÛü~ó›Hk”¤TcI —^z)ê¤ÌðÎ;ð½ïÁøñpÁµ^Š wé$ûö…“ޤCqê©á¤´gŸ­@òóÃÈ×¾cÆÀg?Y’”jÜ‚%)µ­[·ÿÈ¢;î8èåøQª;‡|òï$¹>¥´Æáœsà™gj¯ïÝ ë.ýj؆õÕ¯:"I‡Á")uíÝ ŸùL8W÷ñÇ¡In¸^y%¼eíÚÐñèØ1Â:•ÒÆŽ…éÓaÓ¦ýk÷ßC‡ÅÂozö„Ë/‡Í›£+R’RˆDRêúÑàÕWíqÝ»aÞãÎ;ᦛÂ[JJàØc!Ç §:B矶î½úêþµ·Þ _[{š´€'ž—~îsá’¤d‘”š|îº+ü:ãŒêåòòp0Ñ‹/†ï ×®­5“.¶ã‡Ö­ÃÎq³g‡ç®Nÿë_áßÿ†ë®‹¢DIJ)I©gêTøÊWÂÞûo»ÖK+V„gee¸Ç¡¤Ä¢£‹…“ÓâdÏžý#6T½iìXøùÏC þã#©S’R…›$¥–¹sÃ~ûsÎ_ÿú #­âäÌ3á¿€;àÒK“_¦ÒËÀaÛÀâÅaìj§Ì›×\=z„¯QIÒAì€HJkÖ„cv{ôsu v¬XfÑö3hÔ.¹$œÐ+3TŠ IDATO ]½{÷o¿‚H,î£9çœz “^§$¥; ’RCy9œw^òý׿ U«:ß¶reÈ'gœË–%·D¥¯ÿ¿½;«²ZÛ~oQDÁÔJçœRÓœÊ4Í¡ÉìËÓ¤¥u,µÓpš´ciVžÓñØ`ƒS™¦¦¦æ¬9å,‰  ƒ Âûýqûúî ›A… êý».® {\lØk­g­g­Õˆ³‡1©X8}:G0ê=›AHÀš5@½z%Rf‘ÒJ3 "Rú%%1ÇþÔ)®ÿ¨^‘‘û®ÑÑ @DŠR£F¼Üµ‹Hd$àëë$xÃÂ…@PЭpü¸KË*"RÚ)‘Ò-- ¸ûn=ÿúëåÑä3g€ ·F€\ŠODŠLp0ã‰Ý»€Üvÿÿœ §H–,án:qK6 DDJ³” gO`ëVnqÚ¤Éå›dl²d‰ãC4"ÅÁfã,ȤIÀáÃ@»v #á•+™»¥ DDä2 "R:%%ñ¸­[e´iãp³¹ÛÕºuܵeKàÇyî‡)<ì|êT oßB P»6°b§Q""@ˆˆ”FgÏrÁùž=À²e@Û¶¹îb ›6‹›7sTÃP"Åãõ×}û€'ŸäÏ… @ ,Ì BÚ¶¢¢Š³˜""¥ž)]Žc~ËáÃ\pÞ²¥Ó»EGeÊ0 kÜ8ÀÛ›´DŠG@P§Žõs¡Ö®å?j»vÀöíÅRF‘ë)=víbªUj*;k‘‘yÞ5:šý¸²eÙ—5 ¸åÞ¦D\ኀÿ˜«W[ûD¯\Y\E)Õ€ˆHé°b#Š  `ýz+šÈCt4P·.м9¾ÿ~¦ÈtèÀ]PEŠ›€¤§3S°P‚‚€ß~ãÌ^·nÀôéÅZF‘ÒHˆˆ”¼Ï>cg¬E î«RàCÌÝ®ºwš67 V­rAyEÀ$1‘1D×®@BB!X®wu:6 3ÈÎ.Î¢Šˆ”* @D¤ädfO?ÍU½O<ÁNY'œÛ;ž½5€W_åBt›Íå±S¡7=X´ˆ?ïßöð>ÿøààÝwûîã[""7 "R2ââ€;ï¦McGlòdvÊ Á\l^£àæV臉© x¹|9/¯(5¿ððÓOLËjÑ‚'ŠˆÜà€ˆˆëýö󦢢øýðáWôps Þš5‹¡l"…d ii¼

Ÿ'ôõ¾ú øòKàÇ9K¸n]‘•WD¤´P""Å+;˜2ˆˆà çk×r(¸L™|vü83´6nÌ}Û‘#:ëCJž·7ƒà–-úõC‡8Éç̶m¼\¿žéXy²Ù€‡âì`•*ŒÂ_6ˆˆÜ €ˆHñ9z¸ë.`Än7ºmsÜ aíZ^þù§c‡Í0xdHëÖÅP^‘+`³µj:ñØšÌL௿œßwëVî¾{ℵ†)_aaÜ’zìXζhlÞ\„¥)9 @D¤èefï¿4lìÝËt«)S®è„@39sˆ‰±®ß±ƒ»`Ý}w—Yä*lØÀ¬Ìs3¥acS(îîœýظ‘ÑNëÖÀ¨Q@JJQ]D¤Ä(‘¢µz5Ó­^y…»[íÝËC¯ÐÚµÀwðû;¬ë,àHr‡ES\‘kQ¾<·®ZðñvíÊbuü8pê'ÃÂò_òÆÀÔ©9®lÞœ³ï½Ç-«5âADä:¥DDŠF\Ó¬:tàLÇÿú£…+”œÌøÁƒÙÁÛ±øè#f¢üø#;reËÃï r•Üܼü2ÊT+“¹þ#2hÓ&ÿdÞ<`áB'7¸»sªe÷n ANvï®sCD交DD®MJ •שÃÕ>ý”;÷DD\õS®[ǵëíÚóiŸž›gmÙ¢ô+)~üøî; >øùgÎ„Ì |ò ÄY’Ž›'$8Žøxn?§Úµyôú¼yÜÛ·qcàÉ'ó~B‘RHˆˆ\‹™R§SCžy†Û=ñD;\åçÄ à©§¸|¤~} I`Ó& re¦Â ôí[„¿‡H änÓ ‹÷ÝÇu!Ï<Ãe}úð¾óæå~¼a0±Ÿ=qÊfãy!»ws­Õ·ßòsøÎ;Z""× "re.^ä9 2ØèÖ=¬÷Þc¾Ô50 vÐÒÓ_~aZK“&¼íµ×¸ÝéG]UV—ˆËôî ,] |ðÓ®Žá$!À£o5+÷ãùñŠ/`«^“§'§£¢¸Â}üxÎL˜àüO‘RBˆˆNf&0}:§%y„ÈÖ­ FjÖ,’—ؼ™³ÿý¯õ”}ú0øxì±"y ‘b×»7pþ<·‹6g>ì ÀÛNr¼>>ž—™™<2§Ð*Uâ.sQQœ|å®vÿè#""R*)‘ü¥¦r[ž[ná"óÆ¹ªöÇ \çaÕ-¬™3yöÚwZ×qñ¹Ëõ¢Aöÿ+V Ê}{ß¾ülüûߎכPÀ:¼Ô¬ L›ÆÉ=€Ñ£583¢5""RŠ(çbc1cxäøˆ<mÇ®ªmÚ´POñÓO@µjŒa ’•ż^Ó‘g³qiƧŸò´ôœ*WæqcÇ2UËt͈),Œ³•QQÜJ<õ®‹ˆ”0 "b1 ÀñÐC<âyÊàÑG¹¸üûï9ûqV­bðñ×_Œgî¾HJr~ß+Øé2äš ‘wß}LµÊË»ïr¦oð`߀cRàBô &OæÉcƳguërvä短q1 "Â<©É“`´kÇ}pß}—'¨MœÈ`ä*lÙÂË¿þâù„ ¿þšû~±±ÀßþÜv'ZDntæ±§Os‘:À¤JÀËëg@rªX‘Ó-GrÕéÓÀ=÷0@yç"ŠvDD OˆÈÍêâEF?ÌýCGæ:¥K™º1z4àïÕOŸ•eÀvô¨•ù±l™ãý6o:wæÂÛŸν`WäFÕ°!/÷ìáåÉ“LϪRÅ @²³™A•×ÌáñöæŒæ¦MüêÒ…G¯W«ôêÅYÎóç‹à…DDò§Däfbܹjôh®í¸ë.vD^{i³g3/ÄíÚ«†¬# þú‹Y\€c2e ЪG|—//²Í´D® !!@@€u˜y|<·é­\Ù @vì^|‘g©-8Ë“¹b>$>X³¦{‹ˆ\9 "7:Ã`ç­·€F€f͸ÝÔ A<’yï^æ‡W©R¤/k¦_EFZ3 *‡3åäøqॗ€Çg1êÖ-Ò—)õl6΂˜3 ÎÍ›yyìØ•=wBŸ»À5çÌ\»–£#Grf´}{ž)òüóLÉÌξ²H¡egß|£·Xn. @DnDÙÙ<6ü¥—˜Vuë­<(02’C©Çÿúƒ‘bÊyÚ²ç†Yæ ÈpreÑ"àå—??¦—¸»KDJ½¼sYÆðÒY’•Å%:1…ÑÞÚµ[Xµê S·.S²æ®={r°¢m[Θ>ó ¯¿xñŠOÉÛºuÀƒZÁ¦ÈÍ@;È"%…ƒE‹¸ÿml,ÑèÓ˜4‰ùÞžž1Œ¢?-ÆãË·kÇ´ª9s˜ÃÞ¬3?ž~š÷6íš–™ˆ\÷6d?;Û @|}­3‰ŽÎýØ!C€~à÷±±Ž)ŒæãvíºŠB¹¹ñ¸ö;îàæë×3=sî\¦kU¬tïÎݴõŒ\µÃ‡y©½äf¢Dä:±~=·õÜ»(WŒví//†±z5l™™L›0è×#—yª‘ÀÉ‘•+¯xwÝ|}ü1;C^^Üh'+ËZ@[§ðÅé«]èСè^WäzÔ°!×}GEñôóà`þÏË;ùYr6òË/@ÿþŒ ââŠ0±W¦ GÚµã¬éæÍàX´ˆyC6rõèÁ¯ÈHäs…ìwA¹Y(Kä:1ó¾1ûqnÂ4æ2U«ÆÈaüxÀË ?u˜ˆ{ê`®Ó¤IìÝçÓ8z”žÅ‹¯OOfÍâNWêÔ)n¢õÚkVÊ•ý¾áá\†2t(б£v¼iÔˆ—¿ÿÎK3ëÂ^wñ"Э[î$=“žmÚðçØXë6Ã` ¤˜"c³-[o¿÷mŶ…±Q¨V øðCÞV±"G>üÛàå8k¤Oç[qßÌ̤H·^)倈”Væâñ©Sa ˆ±Ÿ…b?ê#ä­§8\:d{ûgÎ âsX—P7W¯~Çnl•‘áøôæ¬Äš5Öuë×3`¸ÿ~ö+ +:šE™3‡?ßwŸu›9*ëëËŽ•ˆXªUãZ¨ï¿çÏfpÂÁÃèÝ›3–ö;äž:ÅËúõyŸ¸8ë¶èhÞÞ¿?;µ E[fÃ^˜¾8„ÛúΚÅY½š‡›¤¦¯¾ÊÙ  àÞ{I“¾~οxeëRnš‘›‘R°DJ‹3g¸%îÆüÚ´‰Óîî8ߨ¾ÈŠU舡ŸµÅ ÇËåz¸™Â‘í¸‹îÚµÜâvãFÇ”§ÄD^®[g­ùâ v†<=GTSS™k>t¨óY‹ÿû? ~~\jlÝVµ*'bÂÃ5ã!’“ÍÆ5Qï¿ÏŸÍs@úöæÍš7çgàÞænqfÌûÛ fúÕ#_~ÉqŒ;î(¸,¯¿ÎôÎçŸÏÿ~f0ä°Ã–‡‡•ªõÚkñظ‘9ž+V/¿ ¯Œ $ÁǾhdµZ·fúVHHÁ…»)‘›‘f@DJBj*°ax>ø {+2‡úã<ó {õ‰‰øxÐ:¼íûÖøvÇñ¤ÜÁÇ… Üi*;;÷efÇdÅ ÇëÍäôi`ÿ~~¿u+wÔ w\ùå—À°aÀöí¹•íÛYÌaø îx»»;7ЩS§ðoÈÍäÝw$üï@üÍË ¦¯¾âug6&Ndú¤9«ÄsDccùÕµ+ïÊtË–åZ‘–-s§[æ4k7ÁJIáøÇêÕÎïg.ˆÏo‹ß„sžØV®N ÇÊ'1[&­Æ8¼xTâú‘¾}YÐZµ€ 8ZræÌ•¼}.‘™Y<‹Ä/\``i³)Kn.š)N†ÁVkûvǯ¨(ÞV¶,÷©íу#-[²§žcª`áBv,öìqÞ9b¥ZŸ9ÃŽÁwß±#b€ŒÏœrww*eËòç5k¸(|×.žË‘šê8bv\~ÿˆˆp|퉙fõùçÀþã|–cÄkWDrkЀ_öš6åez:/ù…K+l6kÒ R%~ÇÏø²eLwìÓ‡“ p«k€ÙR»vq¬#'Ãà FZ?ÓS¦06ر#÷}åå_Yõ‰½˜Ö YY@“&—.¼¼°;°>D;, þüìyoÜÈÁ˜õë X¨QFDl¬tš6åHF M£þûßÀر¬=<Šîyã{ë­š‘›‹‘¢`l=öîe”°g¿ßµËjUüýÙßuÏçhÚ”+Pslëì©wì`VÙ3l ƒNØGEY÷¿´$~üóŸVÀ²~=óÌ{Œ Ä™¾Ä4­ˆŽòEFòù¶mãã.\à $À3ž}Öz­¥Kèt–ÇèÑWø~ŠÈe^^ü¬þûßüùøq~Þ¼¼¸Ð<$„Ÿá={¸¦$*ÊÚ¢qcž/8g7…xî9Ϊätú4ûþåË3 à Å… ¨°g ™™ì@×®íx{Tƒ§Ÿæ®½'N0MÌ\Hyp£Z5~™‹Æ²².W>¶aíÔíh¿j </å›pÛ°† YwšßW«Vìɬ[·oçVâ9™g¹4lxeÏk¦_µjüøãµ•Qäz¢¬ëıc$¿ÖÅ{.è´Õk’™Érñbî45|8ó‚‚ØÂvêÄúŠÖ Ãsçr£÷ÄDN!|ü1ó•"# >NË''õêñ%Nœà€a—.L“r æTþñã½ývþízˆ³ýÅÎE@‹üË/ PÊ”a‡Åþ ´µkù˜Þ½Y|ÃàõóæwßÍ™™'Ÿ,º·XDr«^õÀÏõ©Sœý°Ù8SÇNpÆ LÌQú·ßæg¸G¦WÍœé¸(=#Úý8KêîÎ@%3“ã(9=ÊYÀyVL /Gâåo¿YåìäÜ+ úõÁƒ±gèûèrñWŒû[<Àùóyzi:yõUžER£+²Ö­9ºòÁ¬œvír\µŸGÆŒÉÿ>fÙóJK{þyÇÁ™Â:r„köš5ãû¢3K‡´4+5YЇf@®²“xü8G©;v¼ú犌dŸyäÈ¢+ß '5•áC|óí/µ"8//6– rVà <®n].uëò+<œ/^Žëé–/·ÖÙäÅ>q6£ËM@®Ô‘#ÖDÀº¹J•+ž+qâ×M˜ÿÌõÍì¿ÿ座Okó”⢽ëÀ§ŸrôºQ#ç‡QÖùó¬£×­»y„6ÚÝ»_ºÂ0ØJDG;~;ÆË#G·“ñõeÃÎÃýÌïëÔ¹¼½Ó'Ÿðu^ïçøÚŸ~ÊT†S§®í´ïX†…Y»ÝìÛÇÛÌàäÀv$Žg…i GŽðûÐPëã;ïdyͤ~}ÆOK–ð6ÀjOždšU·nœEqwç÷¾¾Lç0@•³ˆ+„…qÆcÈÎbT­ÊŸ~¾~Þs®#±Ì¬Ù³€üýïkùýwöÅ}}YG˜ŸéÚµÙ§è!Çç9z”iHGr\&§˜–àLíüùüþøqŽô¯^Í{aÍ›°¸»óõ.^dessck׿ô¬ÉL‡=xdT¿ÿ㎖¤¤X÷ DVZøèXMÄŸ®LªÉÅ+µjñ20ðò›Ö5k¬]íÅÅY»ƒy{çý{åtäsçÀ“'‹&ùóOþ/8[¯2>ðÑGÜçD›ƒ8wâ» ))—ãT)b @®{öp´ÉÇÇ…¹f®©9z~ÃÉÎfï;.îò×êŽ!qg4Œ;Áf©©ÖcÊ–åÐS@:8×¢ ž\ŽG—¿Õa«P@{Æ ¶oãÆ9n»ogV¬°F%wîd›fŽv9óÕWü2ë:p€m¡—¦3g¬…¡fúƒy,H… Ž3 [¶0­:$Ä*ƒ¿?ƒ¢¤$«“ðì³ @"#ù³ÙÆÄ0“aØ0vNÚ·çÿÑ’%œ‘×3†³•+V°ó~â„5jo¿‹mAkú÷ççýí·iÓxÿ­[yY³¦cuפIÞ‹Ðû÷gç5¯,ûäãè;ÆºÄ @&NäÌË]w9Ž2eX‡Î›Ç`ɪ^;†uîìä´Ù8e[¹rîég381g³ÿú g·…÷Ž¿Ð!m1Œ1Ga³OÛòójÔ@vhU¼Såê…bùþªˆù$ÕZUeäW¹22 ÷ËÛ":dÍ&ååèQ¶þþVÐhžýb¿=#ƒƒ Àõ¯ X»Dž8¡¤¸(¹ìÙÃÎeV–µ¿ûÕ0Gªöïw¾sI©•–Æ¡¥øxÖv†Ã׉¹hÛ"Ѩ 5àÙ­û¯µë×SÿeÁ©@—Bšwñ"ƒŠôt6Ôö;D™³‹[ÿxŸo¿µî—žÎàÂ4ggŽcCeíýoë×[¯‘žÎûš;ùÚ æûµJ•¬,óæ»îÞy4ÈñþkÖ°`Þoî\Æl>>¿7"Rt*Vä—¹À{÷nÎ&Ö ÿ À´ÉgžáŽN#Fð³ß»7ë0 55iLê8⟒Â:æÒ˜Íåí½àóýðÊÌrtìȶfÖ,>®qcÎ$>ÌA›€Ö:¾vL ;чq¶& €õbVƒ±W_µêAÓ¾},ç-·äñËÛ'—zôK¿†\:@uû:MB.'8zˆŽFÆ¡XÔ3ö£Ééßpbá1®qsƒ[¥ÊØhTE ªÂç…P Me¶-æ©’æ÷€Í†îÝùžðž=g@LŸ}ÆŽxµjW€lØÀ÷ÉœEÊÉ>ÉKF™>ø€Kó“žÎÿ¿ýÍÚŠý•W®~v%=mæ[o¼6§¸Ø fû+Eëzé‚Þ´’“9hß°!§w>ý[f’™ÉQ«úõ‹¶¬§Ÿ?ÿœ£\NÓŽ ƒ¿TB‚ÃWÖ‰ü±(‘Õà‘èxÛåmMnn¬­CBøÕ¸1[QóçK_oþ» ƽÍÅ ;ß)xT àHÀQÿÂØ·ÏÚ"ó·ßr eË21 æ[ïßïøë¬]Ë´§©S™wmL‘ذ?ü0vó130HMeãÅ Ô0ø6T¨Àÿ‘”¾Mæ¹ö#¤AA|[ÍEèæ[úòËŽ÷qs³v¿2òå ÷¾ˆHñ0gOÏžµÖ€±“o)ù aúdx8;øf‡w×.ÎpÚkÒ„uÅÔ© rúöµÎ©Y“Îÿùëýçžã¬íÆìøšéœì`ÿë_ü¹zu>×¼yìäž=ËNæ§Ÿ:¾vL תU¹Þì»ï¬çLKúõcýfnU 0U, €[Ö¾}œÝMM²ÁæŒä Áh;ÀÚêjç& í/À¶¥ÀŸ³qb×)¬ù!ÿùG,šU‰Aü–XlŸƒªˆßŸë€?ã9`fînòð€Œob‚‘}º2.Æã…ø`tÞ ŸYÁèïUe6VšW@rÙŠxçÍ@xx¸_®‡ b¦smÜÈŸÍY{†Q¸dï^6Õsç:@̶þÁ¹Cã石£Þ¨×O4mÊ€ôj˜;=æµàßì) @J93׿AVüéé¬ô͆`ÃQ®\îÑ«œæèwBGÏ €üððõ×VoFÐý.öKÃcýβõ8{8sÎâëÏ"yßY™sMª;ÞŽ³gù©v²ÍG¶_y¦T©°J¹­k¯J•r…„0ø0÷˜ÌC\ðñç@¯^Ü’66–òdC—sÑ$Àâ­\ɧ·OSûùg6Û·ç~Ys«Ú-0˜'Ÿ9ÿÓC1êÀkëÉcÇøU¥ ðļî‰' òïãîβ<ø ƒÅÇçýìg2z÷æbðï¿g£ÁÄܵ¦Q#ÎÎÖô>ÀÿûEèΔ)÷{õjÞßþds)9ö雿77~Æ ;R;`€õ}åÊÖA†9Û3%ó™gø«W[Ö¬ÉúÆfãñEæ Í–-¬Í,€õ Ù†T«Æ×[»–;–‹ºGrL댉áÀKÿþ@›6Ž‹ë{÷æs|þ¹¸ÄÆr0æJëªýûyÚüöí¬k'Oæ÷XÏe¦>W«¼:Ö †Œë‚13)ÍÆ[çñþ}z3µ ÙÙ¬dããåÅ3(I:Ç#ì|<.ì;Œ>X°…ñÀ÷I˜SøUÀ ^þˆ9PW@Ù*aV¨À/»ïŸ Ä=à£éع66ø!!!wîÔ±cÖß0¿Îµ¤¬\É@$gÒܹü›½þºõ|‡[³ã‡_ÙßÁž™j·nc¸œíî… Àôéü»EFÏ:D ÅOH1ÊÈÈÀ¸qãðÕW_!117Æ[o½…;ÍaœB0÷¯_ßÚþôØ1+ùùgVÐ÷ÜÃ)îcǤ8kˆÚ6ÏÀž ç·ævŽÃòçÎaφspO;‡zU¬ëpîê¯9‡gŸCfÓsð8b’°8õ, €£c÷ÜéàÉ“€ÄÅ1EêÐ!nG{zš; IDAT9}zî…• 265ŠÓÇçÎqç“Oظ<˜{jëV.íÛ—)Lfj›™~5|8„_~aEZ¶,+Ïõë9»¿g+ÙgŸåýæ,Ä! h޳¦ÂkÛMÃà†0~ȧcGVÒ*X¯Ý²% w©ªT‰mRRþ3Uª°ÝlÙòÊÿ"R<*Väç9#Ãq ªY3ÇÙ€+é|QxÍšLç©VAËÃs6¾LVëîî¬Ûz÷f¾þÅ‹Vš”} Ô»7ëæ¤$+Xo=ñSm>ÿœkBLæ:’ŽsïüèáÁ´¬?ä—·7wèØÏOH°‚³‚ìÛÇ5–))PZ»–¿Ç+¯_|Áû?Î÷Üœ]²Ù¸‡¹NÏ줶mËú7- 8Þ +^ ìFû¶­žúðÈfg`ul/P­Rz·=‹ºAgPÝû4Výx£>æagðýëgЯâiÜpÆ:oÊåº4¥`< t Îÿ×XÀ7¿|y eR0Èò @è’ Ú¥ÛØà•+øùáÈ?TöóÃÉ,[f»œrgΚÿþ;gÑZ¶d[ñË/Žˆ¹æàŒÔ˜1lë “úm çÎ1Êyøí?Zƒw#GrA}QSRü€£¡C‡bΜ95jêÖ­‹éÓ§£gÏžX±bÚæ·7«a°RIMEÜúTÜ’ ¿Ý)‹NEo¤"{f*°5ÑûR±éüaKEµ•©Àã©8º$çO¥¢Nëd'§"+9e/¤ÉɘwúÊø“.}]ÒÀE”Av`RÜüqÞÝ•ëúãâyÄ#ǃëÀ»²?¦~ã Ÿ@Ø*âÝi¬À"0Mï(VíËâÖ[9púçÂ/ÞÚ°ó5k0Öˆ fÎäv²{öX§{W¨ÀÆõØ16ž-Z00hÖÌZ°™Í“o¿Ù\¯¼Âç¨]ÛšÎÿóÏÜȶml¼;ub»e‹µ-.À†îݹæ#<œ¯ÇÊú§Ÿ€§žâý?ý”Ï3nËÔ¯ðå—V£j”îîlX³³­À )‰¯°ÌÌä÷-Z°µO¿Øi9r„ÿfù-ð«R…A›™~%"%Ïfc'þÐ!ÇNöO?]ýs6kƺÆÙ,z«V¼üòKÖQ.0`0;’wÜÁšòå¹.cÚ4^o_‡{yrÄËË @:uâÏ>Ê´·Þb0qþ¯³mv³³9Ó1t(ï?oƒ^àµÏ=Üv›Õ&Ù´wëÆ2›±îþßÿ8 •”Äv-'³cž™ÉmŒË–½ô~¸y½ZLú© ÜÜ€©Ÿ/¥>Íú Ø[ƒ\ÒÓ3gð·‰Ø³> ¾YI@jø'!¼b"žœ„_g%¡±gªØ’õ×1tpÛ…àì$øìHžNrz8ØøK_Ù°!­¿Îeû!­œêøåÊað?<^Åͽý€,?´¼XKüPa¯*nóû>>Øþoo¤nöÁŸ?ù ²ÿÈ>>yF#qq¼ÉœuË€˜ÁOÇŽl÷Í$.Žéˆü{ø!S÷ÒÓÙ7p–†mìæœEQRü€“M›6áûï¿Ç„ 0úÒ¦á=ôn½õV¼øâ‹X»vmÞnÞüò·/_úBk "€Ÿ`o«\ÆÏÁeÊù"îŒ/Œ¾ð8ㇳç}qüB%쉫…Ø$_ }ÚF9ü}¼?z öÇáSþØ´Ïÿí ^þè~¿?N]ðÇÑ“^hz› «Wóõx¾°2u+?«js:þå—·»YS£ÉÉÀŸû€‘/°A9’÷¾}¹bòd6pΦJ ƒõðál¼þþwì˜;¤ätîGýŸxÂzý Ø€tëÆNøâÅV¥ŠéÈŽà|ú)·v4ˆƒ‡ÓÌ6nätsýú¬øvïæ”¾ÍÆkÇÇÔÃàTý‹/²÷ñaei Uª0{øaÎREEñû³g¹s–·7l€e½÷^ŽìtïÎÑD›ïµ¿¿ãÈd•*¼ÎLJ‘ãÇ­¤B^º¹åÞÑÊT©’•÷ß ˆ™¶¥D¤tq€\‹8Ÿ_ W:ìˆûúæÞɬŸš6µ2lsï½ÇÀ1¸Æ`®‰g{áì9ì5jĺ}éRÎ<,_ÎCÇcÝýõ×Öž%/½äøøÿþ—³ÐçϳÎOH`pU·.w›4‰ÁÍm·±ŽÍ¹sa—.¬£—.åë„„ð±11üòðàóÍË×Z¸×9Âε9[T³¦õ~ŽÉæÿ‘G¬³[Ìך93õŸ^^¸Н·†âéÑ,÷Å‹À#ý€E›¡c»þ <׋ëp^ ÄTgZ÷–-À› .€IJÂáíç0°w ^|2 ¾KA¯Ž)(“–Œµ¿¦à–Ð$Ç¥àoRàžžŒ³©)¨ï}Ø ¤¤ k|2ÜÒRà{ w#ˆЃE|áÒrîÈåáÁ†Ì H.}ßó¤¸ûÀÍ×n½Ý>÷«9ǯ‡y£¶Í i‡¼pþO<î…qo{">Ù {¢ß/L}Þ wtãm=ÛybÎB/´¸ÝÃáMü¿ÿãd’¹þÓä,™:•¯^½òþ¿”ÂSRLfÏž www >üòužžžxì±Ç0fÌÄÄÄ j^µë«¯²vðõÅÃOú¢E'?ŒxÙðõE‹;|Ñë~_b*( P"RÚ˜aûÏòµèÜ™­‚6™(hFÛ<°ÐÃ#wpT¾¼õü]»rÖĬ[êÔaý»m;ïï½Çëó @l6.J_º”3ééÀ}÷ß|ÃòM›82s&Óªìee±-3iÐÀJûéÞ³uêXëéœ AAl;–.åkW©bÕù·Üµ%{÷25zéRU£G³½kÞœmæÎ43uîì|káîÝ íØá<Ínö+Zçæ†…‹YkÍtî;ø]ê\ÛlÜnØÏVUÅž_; ôÜÙ ØÌ4µ5€˜ f Ü?ˆYàR0ùå¿Øu¹í6àðþLd&¥âжdø{œGÛÈóðÈLCË[Ó0øÞó˜:! SÞOƒŸ[°´43o HKÉßÒ`óJCH@*ÎK€±5Û#§¥!;5 ‹Oƒ_|ÜÖe¡-<Üàr 1—_àW»7ªÝ¥K//ÀË Yîž{Ê à‰¬Û¼PÆÛðòBvYO|›ê…L7/x­÷þÏ ðô„÷LO$–+ <êé|…¿\ ÅdÛ¶m¨W¯üüü®oÑ‚;klß¾=ï¤_? 2iiÀ×'Ž]4æMž5à À¬¹ü¼>òˆh¬YÊpèPkxÙ2æî&aa쀛;aíÝË…æÍY±ùù±ó?|8;óññŒøÍÅÌC†°ã0w6,Œõׯ|¬™êÚ³'×>˜³·—u€˜ÓÔ­Z±ƒ>v,§Ö×®eùV¬`ðÒ¡Ëb¦7½ö+Ü={8ƒ|ûíL;Ê)$„ùë/«SÞ²%߇͛Ù8ÁÑ3Ó­·rí‡ÍÆàiùrNåðð«cGNõšAK»vœ]1 Në›±§'g[>ûŒ¿_@_t,g“&l”Íõ9ר˜ÞzËúþø72GÐ̤reÎùø8Ÿ1”‚()mªWgÝd~Þ‹BQìpwë­¬‹BBò?;"""w:Ñ?ðrð`Öµ@Á©¸]»r0gÜ8¶wuë² ³f±MèÞgŸ|â8{°gëýï¿çÂñš5­àÁ<´¶A+‰‰±RÑìuêIJ֨aí*öÔS nê×g@µ~=g¬Çg;`ÎÄŸ9Ãv"¿ÃMíÛ3ø[°Ày²lÿš6eЕ’Â—S§¬Ã‹Íßyß>’edp€1;Ûú[mÛÆÁ.ó1³0—­>ý4¡ß~ãï`¿ýsXã‡íÛ^½<0o^yÌ(²°ùûŸÌ~Dîc?Á™·z±O<Áû˜iý}~þ‰ÙG¡•³PÉ?ïŒOÇÄ·Óñò¨ ÜÓ-=»dÀ#;O<’Ž¡ƒ3€ôtDGe`Ü‹éxo::µáí‹ÊÀî¤t¸e¦£_ „…¦ÈLJ‡tTñ=[j:°‹ÏÑæÜx$f û‹ @jŠóÂKáR,5jdÜy繮߽{·a³ÙŒiÓ¦åºmË–-cË–-†aÆæÍ†ÆÆÖ} 2Œ¶m #"Â0ºuãu§Oó~O>ÉËÝ» cÊÃHH0Œþý £U+Ø<Ù0l6ÃHO7Œ“'y¿Ù³ ãñÇù\öV¯æí;vðrÔ(^FFòö¬,Ãðõ5Œ XžG5Œ{ï5ŒN¬çøñG>æðaÃðñ1 ooà 3ŒìlÞ>c†a¬\ÉïGŒ0Œ:uËðÞ{|‰ £lYèVÍú}xÀ0j×6 Ãx÷]Ãøâ þn©©Îÿ/¿Ìç ã§Ÿ¬ëo¿åõUöÊf¾¾a,\ÈŸ¿ù†ÿè#^þóŸ¹_gñbÞ¶k—aøûÆ;ïX·íßÏ÷úâEçe,*Ë–± æ¿Þ'ŸÆöíŽ÷Y·Ž÷ #..ïç:rÄñw‘Òá×_ ã¾ûJºÎÕ¯omÚ\ýãͶÃß¿àûÆÆZuÙ¶m¼îÍ7ùsãÆüyÉþ¼w¯õ¸Ï?7 77ÃHI±®ËÊ2ŒY³xi†1fŒaT­Ê:ÛÓÓ0&MÊýú?ÿÌçöñ1Œ¿ÿÝñ¶ºu £o_Þ>c†aT¨`Ï?o!!†1v¬aôìÉÛ [Çšm¹iëVÈŠb»W½:ÛE{?üÀçÿäë=Z°ÀjÛçÎå÷ Öc:w6Œ>}ØV{yån¯RR ãÙgù~<õ”ãmþi½Î”)¼œ9“ïu™2,¯y»——a¼þzÞ¿kD„aüío†‘˜È¶ý‹/¬ÛF6Œ5¬Ÿ›65Œzõÿúõ3 wwþØ=Ú*ƒ¿?±cù·>ܺ_Tï3hË~ñ"wó±‹çî¯É•Ó H19þ<<í·ºÄëÒ‰sçíO[ÍÃα±®V#.\À0]' €;r¸¹qdÂ\\Ý»7Ó—ví²v†ªT‰£ã{öp4$çv¼æ¨†yn§NL72³ÉÜÜ8żx1g ƒå1· ¬C“fÌàLÍ‹/ï¿Ïç åsµoÏÙƒU«rXÛ¶-ÓR?þ˜ßÊÙžøxÎftèÀ’©S9R§NއㅆZ‡Ÿ›3 gAæÏçu»v޹µ£G3/Ùœ!h|iêùç9ŠõÊ+¹_§uk>ǰa\Ó£‡u[½zÖâÌâd?X9×öìÓ6ò›©UËñl)ºvu¾•xiðÈ#×vrv÷îœ1(ÌF$!!œU®UËš0× šõoëÖ,ÏÚµV[·aëts6à}ìO oЀ3+Vp¶ÀniæeíÚñqii¹S]›6e»iþN[·²=1ß#ó}Šˆ@¡†”üi¤˜„„„ Ö\ýe'îÒJ·PûäÉΞ}}û–¿| Ý=÷ƒÆàÁƒ1dGôï»Ïñ1µk3`ȹ‹Ip0;Äõê92qô?!!wâíÍ Æ @*WÎ=¢e>fÐ n{;~|î ¢m[ž·Qµ*+“>â‡ßË‹·­]k­gèÒÅñ±^^qZ·ŽÏÆþҥ̭[— H½z¬ò @Ì·ºbEÇE”fƒ’™É‘¬üxx°ÒjÑÂqw’œî¸ƒ í×i¸Ra€þ_•/_<8‰ˆ\ óÔô tü¹zuv¤íÇøÚµc{—žÎ¯½{ žÝ5Û¸… yV‡‡‡óûuìÈݤœ €è4iÂ5"[·²½öõe›døb~‚ƒ­Ù€&MØyŸ9“•ÿ{îû›ÈÎ֮Ї[39fav¬Íö>ç–·W",ŒkG«Tá÷3gòý~ã Þn¶Å-Zp6Â<íà9ZŸ~ʶ);Û1™<™׸ql‡íg£Ì÷9gâJtìÈÿ—E‹8ƒ–3ùöÛo±lÙ·8xºgðôÓ‰Wÿ‚@3 Å&""@rr²Ãõ7n4ÍçĨÛoŸ„ù(Sf>†ŸùóçcðàÁXaå >k×'gÛ(FFrtÂ^ÆüðÖH½ÐPkêÖÙɲfŠ×°aQŸ:5÷)f§ÞüU|÷ÏÈà‚ìJ•8rë­¹§JV +rDËfãïa.T¬S‡× ÊŸ 3’s¤)<œ—Ÿ_áðúßÿ¸/?o¾É÷Í<°ÊÕüü°™)pÎØllœòK¿¹^åL0xâ ¦.½ö;™@Á3,¾¾\œnŽ;Uådv|sLå @ŽðW¬ÈA¹-8#r%‹ÿ[µâŒ‚yêüwrðÏYú±Ù¥§³“o¶ÙfçÝLJ3;f²u+Ûú|ÆF ÎvÖÍ}‘ôt÷Þëx?³ ›7óòàAfxyY³YöÀÀ(1‘‹½Ö­¹Œ³~Qayyqå—_øsb"ÛI³?Õ Á` :ó±jÕ|”/?¡¡“ò~B) ŤÿþÈÊÊÂ4»ÄÿŒŒ LŸ>­[·Î{,ðµj+Ls{Õ‚˜ksZ· æºû™½ÐP~œ§éôé,Y’ÿ4¶™6eß¹ÿì3NsÞz+?ðYY¹gNLcÆpªÜÌCŒäì`•yØ0ÎåL¡²—Wb³1HêØ±p§³F¹r¹·kt%s_ú‚ft‚‚ŠfבÒîÖ[Ùq8‘»1µm›ÿ™'&sp.¿¤G9ÛÞÐPΞ˜ƒd€•6|µíMË–}_¿žÁ‘¿Þ÷õ𰙜 g*Nœ`[?cÛÑk™í5+uëùçYÎgžÉ}?3+ @Þxƒ32&X³f»]¥ Ó¼{÷æÒœí¸—׊^ë _ÏžL;wŽe0ÏÚ*_žkRNœ`ƒ‚¸ÞÆ\ß#WO)XŤeË–0`^yåÄÇÇ#<<3fÌ@tt4¦OŸžïc[·fÇ(|’ß ˆ3fR»¶óÃŒòJåñðÈ¿R8µü裎#V¥Þ¥ ·AÌ+ñós¬Ô›5³ÊdζT®\ð À^^¬œìÏ1™gmÜl‚‚òN)¹ÑŒÅŽdƒl— ÓÑnÑ‚CÎõöl6çëC€ÜÛÌÚlyo–R­ZqFæ»ïòŸå6quµj X~ý•ëMµk3MjÛ6ÞoâÄ«/À”%3m)00ÿY¦ví8XöÆ<ÛkäHn0bo·ï{ÌŸmå*Œ=˜á°ls€®N®•uw·‚¢'Ÿäb|óT{¹: @ŠÑ—_~‰±cÇ⫯¾ÂÙ³gѤI,X°í ž®U‹Æ©S…ŸÑhÕŠý‚̰֙r®ÿ0™Ó°ù­%(ˆÍÆ«¼ôïÏÅö…ÍÝ4Oö.ì{bÿ®9ó‡o?¬õ"ró(SæÊ;د½Æ33J‹úõ90wö¬µÛW~‚‚¸¼Z5æ4üì3¦…-ZÄMjjÖ,žr;sß}\Cúõ×ìð÷îÍþFË–Öiñ®T»6ßß_~á ¥€4iÂô´ªU­u>\çùÀ®-ãFH1òôôÄûï¿÷óÚ6)6Sœvî̽ ^^Ù³¯ì5†µ¦es2gë?ŠJ` §\ «n]V¾…å±çìtÙ›Ù£–t DDJ7sçÃÒ¢LÎʬXQ¸bÍóJ ®U‹ib±±…Ûö¸(õêŵ:/¼ÀÀÃÌp9’©[%¡GVvìh¥¯5iÂu)ÙÙŽ3]y ÞJái H)õá‡Öb¹â2asR)Š¢ææÆm|¼¤K"""âzf'¸°3 @þÁ…Íæúàà`bÏžÖY&æN›C†pázIèÚ•›ólÜhÍ€4n \¸Àáœ;ɵQRJ•-{m¹¢×ª4 w3)LˆÈ¦wo®ãp¶{eNAAÖ¶ú¥Ñ€¼tvfGIèÐéU‡9 g@€-¥`‰S¥5¹YµkÇEÑ…qÏ=<”±´®÷ëׇ—–Ä×—œ«VYH` €ŽŽv~\€\=Í€ˆS!!}íÚµCbb"Ö¬Yƒððð‡¸¸8”NDDDD®FHHˆ‚k ¤˜¤¦¦¢sçÎØ¿?V¬Xˆˆˆ’.’ˆˆˆˆH‰SRUã!5§IDATLî½÷^ÌŸ?Æ ˵è¼\¹rèÓ§OÉLDDDD¤))&µk×Ftt4œ½½µjÕÂáÇK T"""""%Kˆˆˆˆˆˆ¸Œ"—QR dddॗ^Bhh(|||кuk,[¶¬¤‹%7˜•+WÂÍÍÍéצM›JºxrJMMÅøñãѽ{wT¨Pnnn˜1c†ÓûîݻݻwG¹råP±bE<üðÃ8uꔋK,׫Âþ¯ :Ôi=× Aƒ(µ\6oÞŒgžy5‚ŸŸjÖ¬‰"***×}U¯]DX :sæÌÁ¨Q£P·n]LŸ>={öÄŠ+жmÛ’.žÜ`ž}öY´hÑÂáºÂl-âLBBÞ|óMÔ¬YM›6ÅÊ•+a³ÙrÝïøñãèСñÎ;ï 99&LÀÎ;±iÓ&xxx”@éåzRØÿ5ðôôÄ_|áp]@@€+Š)7€÷Þ{ëׯǀиqcÄÅÅaÊ”)ˆŒŒÄ† ШQ#ª×®‰!%jãÆ†Íf3&Nœxùºôôt£N:Æí·ß^‚%“ÍŠ+ ›ÍfÌ™3§¤‹"7ŒŒ ãäÉ“†aÆüaØl6cÆŒ¹î÷ä“O¾¾¾Æ±cÇ._·lÙ2Ãf³Ó¦MsYyåúUØÿµGyÄ(W®œ«‹'7uëÖ™™™×EEE^^^ƃ>xù:ÕkWO)X%löìÙpwwÇðáÃ/_çéé‰Ç{ ëׯGLLL –NnD†a 99/^,é¢È  lÙ²§»þ™æÌ™ƒÞ½{£Zµj—¯ëÒ¥ êÕ«‡~ø¡ØË)׿Âþ¯™·gggãܹs®(šÜ`Ú´iwwÇ$¡:uê aÆطoßåëT¯]= %lÛ¶m¨W¯üüü®7Sd¶oß^Å’Ø£>Š€€x{{£sçÎØ²eKIInp111HHH@óæÍsÝÖ¢E lÛ¶­J%7²´´4øûû£|ùò¨X±"žy椦¦–t±ä:fNž<‰   ª×®•Ö€”°¸¸8„„„äºÞ¼.66ÖÕE’”§§'ú÷ïž={"((»wïÆ„ о}{¬[·M›6-é"Ê *..ò¬ëΜ9ƒÌÌLåKK‘ ÅK/½„ÈÈHdggcÑ¢E˜:u*vìØ•+W¢L™2%]D¹}óÍ7ˆÅ[o½@õÚµRRÂΟ?OOÏ\×{yy]¾]¤(´iÓmÚ´¹üsï޽ѿ4nܯ¼ò -ZT‚¥“™YTש¡–¢ðÏþÓáçûï¿õêÕ믾ŠÙ³gcàÀ%T2¹^íÛ·O?ý4n¿ýv<òÈ#T¯]+¥`•0ooodddäº>==ýòí"Å%<<}úôÁŠ+ Ì©¹Zf=¦ºNJʨQ£àææ†åË——tQä:sâÄ ôêÕ ˜={öå×T¯] %,$$Äiš•9µêê"ÉM¦Zµj¸pá‚ò£¥Ø˜) f½f/..+VÔ(¡+///T¨PgΜ)é¢Èu$)) =zôÀ¹sç°xñbT©Råòmª×® 99Ùáú7€òò¥Ø>|ÞÞÞ¹6B)*U«VE¥J•°yóæ\·mÚ´Iõœ»äädœ:u •*U*é¢Èu"==wß}7<ˆ  ~ýú·«^»6 @JXÿþý‘••…iÓ¦]¾.##Ó§OGëÖ­QµjÕ,ÜHr]·cÇÌŸ?ݺu+ÉÍä¾ûî püøñË×-_¾QQQ0`@ –Ln$¹ôàÍ7ßtïÞÝÕE’ëPVVˆ7bÖ¬YhÕª•Óû©^»z6C‰ß%nàÀ˜7oF…ððp̘1üñ–/_ŽvíÚ•tñäѹsgøøø M›6Æž={0mÚ4xzzbýúõ¸å–[Jºˆrš2e ‹Ï>û ýúõ»<ú7räHøûûãøñ㈈ˆ@ùòåñì³Ï"99|ðjԨ͛7+UA ¥ ÿµ3gÎ ""C† ¹\§-Y²‹-B=°páÂ’,¾\'ž{î9|üñǸûî»>ø ¨^» @JŒŒ Œ;_ý5Ξ=‹&MšàÍ7ßD×®]Kºhr™Ê׿þun½õVn¿ýöw}ÜöíÛÙ¾}{“I’$édQTT:FÒ²€$ÀŸÿügn¾ùf®ºê*|ðÁw}ÜöíÛ;v,Û¶mK`:I’$Œââb/^l 9E8{õÕWùЇ>ÄøñãùÍo~CFÆ»/»Ù¾};Û¶mãW¿úÆ K`J¥£éÓ§3cÆŒÐ1”|¯)Q|¯)V®\ÉÇ?þq¶oßn9E8Z¹r%W^y%gžy&O?ý4ÙÙÙ'ô¼aÆQ^^çtJw=zôð}¦„ð½¦Dñ½&% È)úÏÿüOêêêÞœ.õä“O²iÓ&îºë."‘—]vuuuüíßþ-O=õÔqÏ2dÈ;^'D’$IJeSôÝï~—7‰Dxâ‰'øÝï~G$áæ›o¦µµ•-[¶‰Dø»¿û»·=ÿ“Ÿü¤D’$IiÇrŠÖ¯_ÿ¾immM@I’$)yx!B)MM›6-t¥ ßkJßkRr°€HiÊÔJßkJßkRr°€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€H’$IJ ˆ$I’¤„±€HRšûÞ÷`õêÐ)$IéÂ"IiìàA¸ûnøéOC'‘$¥ ˆ$¥±åË!…êêÐI$IéÂ"Ii¬¦&vk‘$%ŠD’ÒØ±â±u+ìÝ6‹$)=X@$)UWÃðᱯ†H’OIJSÑh¬tÜptìh‘$%†D’ÒÔ¶m±iWåå0l˜ë@$I‰a‘¤4ulÄ£´4ögÞ<øÊW`Μ°¹$I©Ír’:Ľ÷ÞËå—_N^^üüç?ÇÇ®\¹’Ë/¿œnݺ‘ŸŸÏÍ7ßLmmm‚KÒ;«®†®]aÀ€XY¾¾ým¸çžÐÉ$I©¬CèÉf÷îÝÜwß} 0€Ñ£Góâ‹/‰DÞö¸-[¶0eÊzöìÉ7¿ùM8À¿þë¿RSSÃÂ… ÉÊÊ ^’þ¢ºJJ #>ýi(*‚ýûáÎ;aóf8ãŒÐ %I©Èr’Š‹‹Ù±c………TTT0nܸw|Ü<ÀáÇ©ªª¢_¿~Œ?žK/½”ŸýìgÜvÛm‰Œ-IoSS'ƾîÙ>ö±XùÂàÑGáK_ ›O’”šœ‚u’:vìHaa!Ñhô]÷Ûßþ–«®ºêÍòpñÅsöÙgó›ßü&î9%é½47ÃÊ•±êê µ€îÝ᪫à‘GÂæ“$¥. Hlݺ•Ý»w3vìØ·Ý7nÜ8ªªª¤’¤¿X[uû›¿Ìm_ïþ(,ŒÍê­åÆ¡ª ¶l R’”Š, q°}ûvŠŠŠÞv_QQ{÷¹9ѱ$)fÝ:\1‚;ù/Z?v3<ü0üÍßÀ“OBi)£ó€Ø‰$ImÍ5 qpøða²³³ßv_NNΛq!º¤„Û´ .¾˜CÑN\W´‚yßø—ûî¼n¼‘¾·_IiÖ ‘\tÑ»?gÿÇï`!ã˜ð›/Q^{-aq%I)ÎSðŸÿùŸÔÕÕ±mÛ6ž|òI6mÚÀ]wÝE÷îÝùêW¿Êc=Æ…^Èç?ÿy8Àw¾óJKKùÔ§>2¾¤4óÃÛ+y¨ò7´>ôc2rrxæ;6¶óî»9gx&ËÌj¸”©<Ãk¯]‘¸À’¤”‰¾×ÕôôŽ ÄÆˆD"@좄‘H„õë×Ó¿V¬XÁ¾ðæÎKvv6W^y%ßýîwéÕ«×;¾î±!½ŠŠ §`I:-<ýúÁ”)ð\ε h\Í–g–qÁ%èÕ >ÿyøÇ|÷ç:]»Fy™×¥‰ÛG¿ÊËs# Ë/Ií•¿¯>G@NÁúõëOèqÇçÙgŸsIz»¯=v•óòî븴ñ)nãGìûQ:u‹]ø|êÔ÷~~—.п„îåW»>HÑÊç‹’]’”Ú, ’”bZZb—ûˆFáз¾Ïaòá£å¿eË   6ëýL ù—ðÆÏGð‘­ÿE}ýÅtîÿü’¤Ôf‘¤³eKì’µë÷ÓsûOù6wqï7sØ[;õ×Bfæû¿ÎƒDx­á®ý·Ï±vÞ†^Ò/Þñ%I)Î]°$)żþzìv3Él8ÄcùŸ¡xâ xøa¸ñÆ“{½.ó êéLä~Øöa%IiÇ"I)⡇ ¦Ö¯m³ûI~Ο¸ŒÜá}Oëu{鯝;|œâ?ýZ[Û(­$)]Y@$)D£0}:üÇÄ Èy½Ö0‘ùüŒ¿âì³Oïµ#x©ÿ'è¶o+›õî(I:IJ{ö@}=Ì››‚u[ö/8”•˸ö´ @}éD^gÏýÕÃÌšuú¯'IJ_IJ6ÄnW¬€ÊŠ(—¿ñëÊn¤‘œ6) ßü—®þæ1ª6œþ J’Ò–D’RÀÑk£Ðiu…×Ç? Àˆ§ÿú眣¾ý1rÙOöóÏœþ J’Ò–D’RÀ† ±-v{õ‚ëù-]ò(½ëV®„³Îj£“ Ê–Ü ©þ]½ $)Y@$)lÜÀÄ QnàqÞ8ÿZ"³:´ÏSþ!&ìyšhSsÛ¾°$)mX@$)lÜÂ5ƒ—skèpÓ q9Oã¢G´Žºß¿—×—$¥> ˆ$¥€ b# Î~’ÆŽ]É¿ñ⸜§èŠ260€úGžˆËëK’RŸD’RÀ±î/ÿ‘ì+/%’“—ó á‘ëÈ}éI¼ ˆ$éTX@$)ÉÕÕÁ¾}pVÞX°®¼2nçêØ–_A׺­°lYÜÎ#IJ]IJrǶà-Ùö´¶ÂÔ©q=ß²)4dv†gÜŽW’tò, ’”äŽ~KÿeeP\×ó ™ÃÜZ@$I§Ä"IInãFÈÎj%gÎspÅq?ߘ1ðDãT¢sçÂþýq?Ÿ$)µX@$)ÉíÜ å-!²g|ðƒq?ߨ±ð S‰9³gÇý|’¤Ôb‘¤$W[ —eΊ] }„¸ŸoÀØŸ&{ò†À¬Yq?Ÿ$)µX@$)ÉíÞ “gÁùçǶ©Š³H$6 ²¨ëEðüóq?Ÿ$)µX@$)ÉíßÕ@IÝËpé¥ ;çØ±ðÄþ‹aÕ*غ5aç•$%? ˆ$%¹~›æÑ±¥.¹$aç3~WwaìGA$I'Á"II®´v6‡ºô‚‘#vαc¡–^lëUJã3IÒ‰³€HRkm…qõ/±óœóc‹3¤_?¸ývx¬ö"ö<6¢Ñ„[’”Ü, ’”Äön©g< Ù_v~BωÀƒÂÈÏ^@ñ‘Í^½)¡ç—$%/ ˆ$%±úçБfZ&'¶€“uþ$öÿïÜ ç—$% ˆ$%±èK/±‡<:äüÃz±’¡´¾üJóK’’D’’XçE/1‡)ôêæŸóâbx…óèTéˆ$éÄX@$)Y55Ñsõ^f ={†‰› ³&“»y¼ñF˜’¤¤b‘¤dUUE‡#ÔäN&33L„HÖõ™L$…ùóÄ$% ˆ$%«yóhÊÌaWѨ 1šû¦.§7Ìu–$éýY@$)YÍŸÏú¼±äöê4FQq„ên“á¢K’ÞŸD’’ÕüùTw™H¯^acÃ+“aáBhl F’ÔîY@$)mÙ[¶ðjÆD ÂF)*‚?:¸¦_%‡…Í#Ijß, ’”ŒŽ.ø~±±}Œ€¼|p4 ™9§v.UUaóH’Ú7 ˆ$%£ùó‰Äн}‚€Ã²˜Ày¼Â¢EaóH’Ú7 ˆ$%‘†¸ì284k>ÛNäða3&l¦¢¢ØíœÖÉLf.‹FÃ’$µkIJ"7ÂKj kY%OlŸHYLž6Sqqì¶2{ìa×¼uaI’Ú5 ˆ$%‘Ý»¡œJ:F›øÉª‰Ü}wìb€!åæBNtš2€ÂM‹¼(º$é]Y@$)‰ìÞ ™OCF'öö-åÆC'Š [n›§çÑÔ0ãYÈâÅ¡SI’Ú+ ˆ$%‘c¤ã¤q,^šEvvèD1ÿõ_pÅ5i<2¹]’ô®, ’”DjwG9/2ŸŒÉ“ÈÏæí"ãÇQ­dõ²æÐQ$Ií”D’’Hóú-E·Á„ ¡£¼³ñãÉnm kÍòÐI$Ií”D’’HîÚ£‹+Æ äÝ”•ÑɤϦ…¡“H’Ú) ˆ$%‘Þ[³7§è/{ß¶7;³·x$gî]DÔËH’ÞD’’È€Ú 6Ž ã=6ž1- Ù»7tIR{d‘¤d2ôàbj¶ï¸qŒdÛÖ D’ÔY@$)YlÜH^ëœÓ¾ H— Ç“I+û_ª E’ÔY@$)I4Ì-@o=&p’÷–?eõt"²È…è’¤·ë:€$éÄ4¾²˜]œA·!½CGyO™ÙXÞ±œ®+½¡$é푤$©XÌbÆRP:Éû{-¼[ñJ’Þ‘D’’A4J§•T0†^½B‡y;û£ðàë°gOè(’¤vÆ"IÉàõ×É:X—4# ‡†](_Y6ˆ$©Ý±€HR2X[€¾ªó:u œåäŒÌ~º­°€H’Žg‰£Å‹síµ×R\\L—.]6l÷Ýw‡MR²Y¼˜½¹É(L‚á _ÿ –0šæ…nÅ+I:ž»`ÅIMM “'O¦¸¸˜éÓ§“——Ǽyó¸÷Þ{©¨¨à÷¿ÿ}舒’ÉâżÞslR¬ÿ8óL˜K9ãÿoè(’¤vÆ'¿þõ¯ijjâü#Æ àÖ[o¥µµ•_üâìÛ·ÜÜÜÀ)%%…ÖV¨¨`iŸ ¸8t˜3jü0«ŒN›¿û÷C÷î¡#I’Ú §`ÅI§£“´ ;Þ§O233騱cˆX’’Ѻupà/ÃYg…sb²²àHiy웥KÆ‘$µ+8¹å–[èÝ»7Ÿþô§Yºt)›7oæÑGåÁä®»îz³ HÒû:º“Ô3;Ë2$p–“Ð÷â¡4íBtIÒq, qR\\Ì+¯¼ÂªU«(++cÀ€L›6»îº‹ï~÷»¡ãIJ&K–Ð\ÜŸÚÖ<æÄMœ’E5¥xÙ…è’¤¿p Hœìܹ“©S§ðÐC‘ŸŸÏÓO?Íý÷ßOïÞ½¹óÎ;'””4ªªØÛ4l#©F@&N„Ç(㬅óCG‘$µ#8¹ï¾ûغu+kÖ¬¡øèªÑë®»ŽÖÖV¾ò•¯0mÚ4òòò§”ÔîE£PUÅÆ±w•gœ:ЉË˃íEåtßúchh€œœÐ‘$Ií€$NæÎKYYÙ›å㘫¯¾šŸýìg,Y²„‹.ºèŸ;}útzôèqܱiÓ¦1mÚ´¸å•ÔNíØ»wS“9š3Ï„ÌÌÐNNÖ¸22Ÿlš7.tI:)3gÎdæÌ™Ç««« ”&uX@⤹¹™–––w<päÈ‘w}îŒ3(//[6II¤*¶~b^ý褚~uLïKJ8òd&­ *éh‘”dÞéàÊÊJÆŒ(Qjpzœ”——SYYÉÚµk;>sæL233)-- ”LRRY²zô`ÞÖIµý˜òó:±’aìíBtIRŒ$N¾üå/“‘‘Á>ðþùŸÿ™ÿþïÿæŠ+®àø·Ür }úô QR2¨ª":j4¯¯$åHI ,Í(‡*·â•$ÅX@⤴´”_|‘²²2¾óïp÷Ýw³~ýzxà~ðƒ„Ž')Y,YÂ!e45%×XÇdeÁî~eäm©†£SP%IéÍ5 q4~üxžyæ™Ð1$%«ýûaÝ:fMv6$ëҰȘr:nj„•+Áé§’”ö‘¤öªº€y®ŒÏ~z÷œçõ¹l‡æ- œD’ÔX@$©½ªª¢93›u†ò÷:Ì©{q.ëȲ™Õ¡£H’Ú ˆ$µWK–°6{$×ÞE~~è0§nÈ8|V)ûç,eÖ¬Ði$I¡Y@$©½ªªb)£é×/tÓ7ôÆQŒÉZÊ?üCè$’¤Ð, ’Ô55]¾œ £)* æôe”"¯y‡^ß:Š$)0 ˆ$µG+Wijbqk)qÙ £»_õ­]ên¼’”æ, ’Ô-íUMiJŒ€0x0GrºPÊRv:"IiÍ"IíQu5õEgrn©1’‘AãÙ%”RͶm¡ÃH’B²€HR{T]MmQlÚRJ cT)£Xj‘¤4g‘¤ö¨ºšÍ=KéÑrrB‡iÙçŽb+Ù¾¡1tIR@Ijovî„;Y“Sš2££G‘ÅŽ,[:Š$) ˆ$µ7Õ±+†/eTj,@?¦¤€œÕK‘$…d‘¤ö¦º:wfé3Sj„îÝÙÙy=7W‡N"I È"IíMu5””°}gFj`GŸQô­uD’Ò™D’ڙà «i8»”;H­)XÀ¥ ©_ Ñhè(’¤@, ’Ôž47“¹z?œ_ʾ}©³ï1GFŒ¢Wt7‡7x5BIJWIjOÖ¬¡c´‰ß®‹]$ÕF@²ÆŽ î%§aIRº²€HR;Ò¸(¶@{EFlǨTéY>ˆt¥áU ˆ$¥+ ˆ$µ#‡,egð×_éÉ€0`@èDm«¸_5”±Ì°$)]Y@$©‰VW³”Q|ä#°atë:QÛÊÍ…e£èòš# ’”®, ’Ԏ䬩¦šRz÷$>"Ø[JÏ« ±1tIRIj/öì¡Óž­,‹”RP:Lüìì=ŠÌÖ#°reè(’¤, ’Ô^ÔÔ°¹g)™™³ÄѾþ±ö,u–$¥# ˆ$µÕÕ4gfs°è¬ÐIâª{ßnlÉ>3vÅwIRÚ±€HR{Q]Íæî#(èÓ!t’¸*,„噣‘¤4e‘¤öbéRVwLÝèÇôî ‹›h4tIR‚Y@$©=hieËX-¥°0t˜ø*,„ÅÍ¥P[ ;w†Ž#IJ0 ˆ$µëÖAC J‹Ž.Dwˆ$¥ ˆ$µ¿½7ö‹ø+JR¾€ÂëœIKNg ˆ$¥! ˆ$¶o¬x´šÝYEÔÒ+å§`õî Q2bÛñÝzX’”>, ’XU”RMEs)@ʀĮˆ¾³w©# ’”†, ’Xe%ŒŽ,eUVzÌÌX ÙØ½V¬€ææÐ‘$I d‘¤ÀV.ØÇ€èFz| ¶0»W¯À woX“] MM°fMè8’¤²€HR`õ —pÍ×JyøaÈÉ ( aIK¬pE«]"IéÄ"I:Ý7ÖКټICùèGC'JŒÞ½á…¥yl‰ôãW[ÍÚµ¡I’Å"I-] %TÓ8ðÈÎ'a aÃØØ­„¾{«9ïõ©O…Ž')”C‡Èܰ.6’:LûÓ}r)ifóì5¡£H’âÄ5 qrðàAêëëùÌg>ÃŒ3¸îºëhjjâ‡?ü!ßøÆ72dHà”’nÅ "Ѩ# ï¢1ÜÉÖ IDATÏ¥±ÁÞx©®8$)‰“N:0mÚ´ãŽû~Á‚ Ï$©¨®&‰°œŽ€¼ƒÞC{²%Ò–*×HRªr$NŠ‹‹Y±b½{¿ËMaa!o¼ñÆ»>wúôéôèÑã¸cÓ¦M{[™‘”\€¨aB!4Ôuæÿüß\@$뻕ÒcDRx3gÎdæÌ™Ç««« ”&uX@âdìØ±Ìš5‹-[¶pÖYg½y|Û¶môêÕë]Ÿ;cÆ ÊËËãžQRbÍ ]^¯f¥ôè ™™¡µO{ú–rö뇎!Iïøpee%cÆŒ ”(58+Nn¼ñF~üãwüG?úYYY\pÁRI ©bq”Rª©¦ÄéWï¡éœRz7n†÷)–$%/G@âdôèÑÜrË-üä'?áÈ‘#L™2…_|‘Çœ¯~õ«ôéÓ'tDI öú¼°‡Â‹KÞ9tšö«Óøø=Ô¿ZCç˧„Ž#Ijc8zðÁéß¿??ýéOyâ‰'8p 3fÌà®»î MR±+|ßñƒ>38p˜v¬÷”sh"‹½/V[@$)Y@â¨C‡ÜsÏ=ÜsÏ=¡£H l÷n(Ú]Í‘ìÎt|&'À¾«!òXÁpº-® E’þ”¤¨¨€j8rÎHÈðŸÞ÷’—«;–Ò\YÍwÀÁƒ¡I’Ú’?%)** ,£šìq¥¡£$…=}Kè÷F þ •^F’Ô–, ’”• 04º‚HiIè(Iáú,¥+‡(ﱞÊÊÐi$ImÉ"IqÂîWÖÐ1Ú¥Ž€œˆÞ—Æþž®ì_CUUà0’¤6e‘¤8[¿Šö]P]âÈ éÓ 8¯[µ# ’”b, ’g¯¼¥TÓÚ§òóCÇI‘””0¬¹šÍ›¡¶6t IR[±€HRœÍ›»Ö1ÊÑ“RZJï]ÕNÃ’¤b‘¤8›7FE—ÀèÑ¡£$—ÒR²6®£W—z§aIR ±€HRíÛ[ª÷’h3Œ:Nr)-%ríåIJ!IŠ£ª*(eiìG@NÎðá‰0¹{5ëÖ…#Ij+IŠ£a4KˆvêgŸ:NréÜÎ:‹¡MÕlÝ:Œ$©­X@$)Ž6m‚ss–923CÇI>¥¥œ±¯†]» ¹9tIR[°€HRmÚå Ÿ²’ ¶UFÙ¾=tIR[°€HRmÛÐÄ †.@?U¥¥tÜ¿‡"¶; K’R„D’â(kÝJ²¢ÍŽ€œªÒÒØ ÕlÙ8‹$©MX@$)N¢Q(ܶ$öÍÑ_¤u’$Úµ+åj‘¤a‘¤8Ù»†6-å`ïÁЭ[è8É)#ƒÈÈ‘ŒÏq',IJIŠ“M›b[ð6 wúÕi5ŠÒè ˆ$¥ ˆ$ÅÉæMQF³„¬qÓ2z4êW²{ÓáÐI$ImÀ"Iq²·z y¼A—Iî€uZÊÊÈŒ¶ÐeÃòÐI$ImÀ"Iq­Š-@Ï(wä´””ÐÉ xgÑhè0’¤Óe‘¤8é¼v)û:äA¿~¡£$·Î9Ðw(#T±woè0’¤Óe‘¤8éµm [ FA$:JÒk^FU.D—¤`‘¤8X·„ýƒœ~ղƗQJ5›Ö·„Ž"I:MIŠƒ=pfëkDÊ\€Þr/(£ õlž½&tIÒi²€HRl®€Ü)Ž€´…HYìïñð¼ªÀI$I§Ë"IqppîšÈ⌠%5äå±·û:¯±€HR²³€HRd,[ÊÚ¬átéÙ1t””QNCT±kWè$’¤Óa‘¤8è¹q [ œ~Õ–:OŠí„U±Ø‹HR2³€HR[;r„3êjÜ«õ¼p4ùìeÍó[X±š›C'’$ ˆ$µ±ÖÕkɉ6áXm*R^À¼ÿªbÄøõ¯’$ ˆ$µ±=³—Ðã| H›ê×Ãó9·cÙÙ°}{è@’¤Sa‘¤6¶û¹JÖ3AcòBGI-‘&•ñ… «èÓöí H’t*, ’Ô†¾ùMØñ¿l.(gàÀÐiRPYTU‘› uu¡ÃH’N…D’ÚÐw¾eBV%“??† ÿ…m{ee°iý»ìqD’’”?%©´´@^ÝëtnÞGÆØòÐqRSYl!ú¨è ˆ$%) ˆ$µ‘7Þ€2*cß”[@â⬳ sgF4UY@$)IY@$©ÔÖB9•4öê……¡ã¤¦ÌL5Š!ª\"IIÊ"ImdÏCM#ýˆ«²2¼áˆ$%+ ˆ$µ‘=µQÊ©$2vLè(©­¬Œ‚=«iª«D’t , ’ÔF¯ÞD{È™äH\MF´•ûkhm F’t², ’ÔF²—Ç w8׸9’ÖÌ”QÉ¡ÃH’N–D’ÚH÷µìÊìEE¡£¤¶œÉX»D’’D’ÚH¯Í•¬íêô«D8D.¢¾÷@jéåHuÏëÀ²¬2šç/æ¹çB§‘$( ˆ$¢cæ,d×€ñÊÍ…—Æ1ŽEìÞ:$éDY@èþûï'##ƒ’’’ÐQ$µ;!“#t¨®`]Ïqtí 99¡S¥Ü\XÌX†ðõ[ßG’t‚, ²eËxàºtéB$â6R*ع†±’¬¦z~¾rƒÝÇ1üà«øÙŽ$% Hœµ´´ð¹Ï}ŽÛn»#F„Ž#©[ô<.ºŠŒqÜz+dø/jBE"б#ì1ñ­ 8°ß"IÉÀ—qöàƒ²iÓ&î»ï¾ÐQ$µ¡;!‡ÃôØ\Ãå_Ï—¿:Qú:2f}ØÉK6†Ž"I:8Ú³g÷Üs÷ÜsùîÍ)¥”;a4KÈh9BŸ«Ç‘•:Qúêøsh|iAà$’¤a‰£¯}íkð¹Ï}.tImlçNÇ"¢ÙÙàÖÚAåÓ‹u &s‘D’’A‡ÐRÕÚµky衇˜1c[¶lyóxCCMMMlܸ‘îݻӳgÏ·=wúôéôèÑã¸cÓ¦McÚ´iqÏ-éÄìÜ ÈZ@¤¬,¶AÁäçß™À—[@$µ­™3g2sæÌãŽÕÕÕJ“:, q²uëVZ[[¹ë®»¸ë®»Þvÿ Aƒ˜>}:ÿöoÿö¶ûf̘Ayyy"bJ:E;wÂG£óaÒÿ %íuè5'ð‘MAc#dg‡Ž$)E¼ÓÀ•••Œ3&P¢Ô`‰“’’žxâ‰ã¶ÜF£|ík_ãàÁƒ|ï{ßcðàÁJ:¶ÓïȘ81të ϥÆ&¨ª‚ BÇ‘$½ Hœäççsíµ×¾íø¿ÿû¿pÍ5×$:’¤6ÔkÝüØ“&… "öž1ЦMÙt\°À"I휋Ð,‰x!B) Ü6½]ûCqqè(zöîÈÚncàÕWCG‘$½G@ì…^AR¶o>Û†N"/tPX'0bÁïBG‘$½G@$é$µÔ72ªy1û†»þ£½èÕ æ6O€ ¸ýÚ俯6 $µ?I:I»ÿTE6M´ŒwýG{QXÏÖÅÖ~Ô¿ð*û÷ÃÊ•CI’Þ‘D’NÒÆ™ó¨§#>:*t5~»s‹ùŸOÅ6ؼ9p(IÒ;²€HÒIjye>kº%¿OVè(:jìXXµ:B×K'Ñ©ò `ӦЩ$IïÄ"I'¡©1ÊÀmó¨åô«viòdX¸Á}, ’ÔNY@$é$,~b3ÅÑmôù Ðۥɓ¡©‰ ºUX@$©²€HÒIxýáy ú¨¤]5 ºveRËË®‘¤vÊ"I'¡[Í|¶wL¤waè(z':ÀĉŒ¨›ËƆ$Iú¿, ’tÎÞù2Ï8/t ½—É“9cÓ+:ØÊ¾}¡ÃH’þ/ ˆ$¨}û8§a {Fœ:‰ÞË>@ÇCuŒ`¹Ó°$©²€HÒ jœ=— ¢4N°€´kçžK´C&3×…è’ÔY@$éÕ?;‡­Ó£üÌÐQô^:w†ò1L‰¼l‘¤vÈ"I'(ã•9Ìa }ûEBGÑûˆ|`2S2‘¤öÈ"I'âÐ!º­^ÌKœOß¾¡Ãè}MžLß–ÍÔ¯Ü:‰$éÿ°€HÒ‰˜?ŸŒ–#TuB×®¡Ãè}Û©,oÅÜÀA$Iÿ—D’NÄœ9Ì)àPÿa¡“èDôêÅî‚¡ Úúrè$’¤ÿÃ"IïãoþÖÿü%jò¦Ðï ×$‹½#§0®þ%D’ôVIz ðèÏ(Úô*s#S\ÿ‘DZÏ¿ˆa¬bËÂm¡£H’ÞÂ"Iïaî\Ù°ˆyxëùôë:‘NT÷k.àÐÓ/„ "I:ŽD’ÞÃsÏÁU]_bF.5”8’DúŒêÍ2FÒñ•çCG‘$½…D’ÞóÏÂUÝ^bÛ É´’éHÉÌ„ŠÑ{…# ’ÔžX@$é]lÝ k—5pNí\z\1={ˆ¡Séd¬xùûÖÃúõ¡£H’޲€HÒ»¨¨€óx…Í ôùø%ìÙ„N¥“±oôù´/8 "Ií…D’ÞÅoÀ%Ì"ZX#GqÞ¤S4¬K3ʉ>ï:Ij/, ’ô.êêàƒ‘YD.¹ÛGr4þÜzÑYÏC4:Ž$ ˆ$½«†m{)‹VÀ%—„Ž¢S4h¼À…dìÜ«W‡Ž#IÂ"Iïª÷òçÉ jIbC†À\&ÓšÙÁu ’ÔNX@$é] X;‹9çÀg„Ž¢SÔ£tëÓ•ÍÅçÂìÙ¡ãH’°€HK–À÷¿ÿöãC·Î¢ºÐÑd7t(,ìv <ÿ<9:Ž$¥= ˆ¤´7s&Ü}7ìÛ÷–ƒë×Stè5Ö°€$»aÃà—Ƕ5[¸0tIJ{Iio÷nhi—^zËÁY³h!ƒ­g]*–ÚÈСð»ÍãˆæåÅ.m/I Ê")íÕÖÆngÍzËÁY³¨ÎGÇÂA2©í  ‡›294éƒðÌ3¡ãHRÚ³€HJ{»wÇnß, --0k³#—ÐÃþ‘ô†ݾvöTX¼ví H’ÒœDRÚ«­…`åJغX°öî副+- ) _?èÜæw¿,vàO H’ÒœDRÚÛ½n¼1öõCü#­ù,ˆŽ·€¤€Œ 8ç¨ÜÚÊË]"IY@$¥µææØîWÆÁ—¿ ÿôO°ížæðùSi%Ó’"†…åËË/‡çžƒÖÖБ$)mY@$¥µc Ð àÛ߆¿{Å{jØ2êJ HŠ˜0!¶ü£á‚Ëcÿ£WT„Ž$IiË")­+ ½zÅn¯Íú_ŽÉ‹Ù±õÔpé¥ÐÔsš'Bn®»aIR@IiíØX±Û¾UO3—ÉÌ[kÔ0t(ß_è—\b‘¤€, ’ÒÚq# ‡“5÷yfç\ùæ ÜÜ`ÑÔ†"‘Xï˜5 ¸ê*xõUع3t,IJKIim÷nÈÊ‚îÝ^ rø0+]ÉÊ• 99¡ª­\r ,Yµ®Š5’'Ÿ I’Ò’DRZ«­M¿ŠD€?þ$sä0Z[~•j.¹$vû|u|àðû߇ $IiÊ")­íÞ}týG4 O? W]Åà!À’jŠŠàÌ3aÞ<àºëbó±K’ÒŽDRZ«­=ºþ£²6m‚k®aÈØ}Ô3q"ÌŸO¬€45¹]’°€HJkoŽ€<þ8äçÃ0xpì> Hê™8ªª ¡Ï@=ÚiX’€DRZ«­…^ÑX¹î:ÈÊr$…MœÍÍG¯CxÝu±u?MM¡cIRZ±€HJkµµ0¢µÖ­ƒë¯bkrrÜ‚7•”@§N°`±²?¼ðBèX’”V, ’ÒV4›‚5vÃã±¶qñÅddÀÄ~YUjÉÊ‚qãà‰'à-¥©ß §aIR‚Y@$¥­}ûbÓqÎ^ö[¸öZèØñÍûžy>ûÙ€á7S¦À+¯Àߌðrþu±ÒÒ:–$¥ ˆ¤´µ}; c¹[VÀ 7„Ž£ù»¿ƒ¥Ká3Ÿwß;vÀË/‡Ž%IiÃ")mmß×ó[Z»t…K/ G Ò¥ ”–ÂÔ©ðø¶‰4÷3g†Ž%IiÃ")mmÛv´€\qulÕ¹ÒÊ…BVV„¥Ã¦Ác±ow?úQlm$)~, ’ÒVã’•Œf)>âô«tÔµ+Lž ?m˜o¼Á¯>ñ·Ýk׆N&I©Í")mõŸóKöeô€+¯ EL ?^X®‘ô|.6 Ë"Iñe‘”žZ[)[þ+^êsdg‡N£@î¸#v9ßõQ>”ñ r²fMèT’”Ú, q´hÑ">ûÙÏ2bĺvíÊ€¸é¦›XëÇkRx/½DAýfªFÞ:‰êÒ%¶þü¢~„N­õ|º×“IŠ3 H}ë[ßâ‰'žàÒK/å?þã?øë¿þkæÌ™Cyy9Ë—/OJo¿ø³s°dbè$ ,KÿzLœÈ GfZ@$)Î:„ʾøÅ/2nÜ8:tøË_óM7ÝDII ÿò/ÿÂ/ùË€é¤ôrèPìÓnêë‰>þ8¿äK÷Í¥v䣥ìówSËn Wè4’”²‰£‰'W>† ÂðáÃYµjU TRúYºòò`óæ£~ÿ{"ò“æOPT4šÚ“|22¸xû/©¯F’R—$Á¢Ñ(;w  t)m¬ZMMPUuôÀ/~A}ùy¬çL ˆþ¢ €7Îÿ·ñëÖz1IŠ H‚=üðÃlÛ¶›nº)t)mlß»]±‚ØÕÿüg6][|^\.—ÚŸ¬;nc«Øóä+¡£HRʲ€$ЪU«¸óÎ;™4iõW:Ž”6vìˆÝ®\ üèGDsr¨ûÀ½U÷k/d}Æ™ä?ñPè(’”², ²cÇ®¼òJzöìÉã?N$âÂW)QŽ€¬^~„#ÿý?ü¤ñcÜûo¹të»¶tL$3ƒgûÝÊYKcǪºÐq$)%¹ VìÛ·©S§²ÿ~^~ùeúôéóžŸ>}:=zô8îØ´iÓ˜6mZ§`ÅQKK 7Ýt¯¾ú*=öØ{–Iñ³cL³†K™Å¿¾ƒË.ƒn°|èÝå|ö6†7-!«j!ßøFè4’”Zœ‚G_üâyê©§¸úê«©­­åW¿úÕq÷üã”LJÍÍP[ ©{ZòyŒó·—…N¥vïòËað`¾Ÿùï\ñ£_óo@†ÙIR›°€ÄÑÒ¥K‰D"<õÔS<õÔSÇ݉D, RìÚ9Ñz†¾ú3)¼•ü9Œ:•Ú½ÌL˜>ÑŸŸNÇÖM,]ÚŸ²²Ð¡$)5øyN½ð ´´´ÐÚÚú¶?---¡ãIiaÇø¿$ëP‘ÛoçK_7¡Ó ùä'‰tïÆ³¾Ï³Ï†#I©Ã")¥mßÒ—ù W\Ï_}c0wß:‘’F×®Dn¿[£ÿËO8î®#Gb£k’¤“g‘”rî¹^z)öu§ÿý-Cx¬¯}%l(%§Ï~–œÖz†/ø ûöýåðƒÂèÑábIR2³€HJ)Ñ(|ç;pß}±o†?õ-æd]L‡ cCGS2ê×ÃWßÄç¢ßcÎ ™:û꫱ \67Ì&IIÊ")¥ÔÖBC<ÿ<Ô>:›¢í•àè‡Ú\YìßÍÿüm:~ƒ;|Ó"I§À"éÿ·wßqQ×À_Ç”!‚àÞ37îmš3Gšiš£ñkh©YfZ9*Ëմ̆Y9JÍrçBsàÞÅP‘)2޾¿?Þ~9Žáàôõ|ð±íûpÈJÁ›X€J•¬]:z¹¹5kÞùaÊ$;”Åsgß¶j™ˆˆJ# DT*…†íÛööNžÀËY‹ðM¹ˆ@ Tüœ±­Ë'è¿ؽÛÚ¥!"*U€Q© Ôªø7ÏÂ"¼}õz¨ºðutì8;[»tô(¸ÖþY²m‹¬—þ‡]›R­]"¢Rƒ•J¡¡@åÊÀïŸÐpøa†ŽÐbÏk—Œž^6“ù”+Wq¸ïLÄÄX»DDD¥"*uRS˜ žÓ5ôÝ5 Y#GAÓ¹“µ‹EOOàêayÍx óþ×k‰ˆ¨T`BD¥Îõë€YèöÛhh<<`óÕÖ.=‚<=åvüµÉ8‰&¨xþyk—ލhúöRS€`Ü8Y®Õ«»v·naÉå.Þu±±¦»qCn  >ÞâÅ&"² DTlEzu‹jÓwaØk×eâ®HëÍß^^ÀìÙœtN¥G½zo”- <óLŽ;jÕv] öeµÁ_³Ï˜í3ÿÅò ocÇ.T©bµâYœ¯/àæüã= „> ¿7ÅëYŸãFTàÔ)àí·-[¬\X"¢ˆ uøU³fÆ H}÷,¼2>)mG½´“høR[=* =J4 ~}àüycT£ØUëeL ˆ×ÿîãÈ9÷úõ»{î˜yn5óH%WV°|¹Ü=*€Q±8v ¨QC³ºb@ÇS_áHJ}´Â!lyñO¼äö; ®ž˜7°³³vi‰¬#;vÓÛz޽wÂëö aCø-~H5€dfsæ]ºÈÞ!9íß\¸ APÉvà0b²ƒM¢G¢GXqì¶¼e àïüñм9Ð%c;~<Þ³ß@Xë!x®ùyôþ~ –/>ü(SæÁ—¨´¨__…¬,Y†×ÛHhÖ¼Îo½…'N~‚sh€Š«ó|`‡Þ}ؽ[V™ËéèQ¹={Ö2¿Ý»¹åÊgô(aBTJÊžIIæï¿}/úóÅÄÈFi§O?˜ò©¾üRC­pŸŸï¿ô@LVY4Ç1Ä|ü=>[扥K¥Ñô öµ‰J›úõe×ôà`ÙýÜÛ(_uBê´ÑØæ,.ÚÔÃÛGŸZµ’ÝÔïØ¼E¾kפÁ³u«éñ´4`õjàæÍ»/cl,¸í ö{ö߭ᛎó³Ö öà$š¢F Ùâcôh S'pÅ+zä©[Þüû¯Üz{>>@zº»Y‹ûn·ùÀtëtîŒôÛpû¶‚6mäq93 Š"C œ€3¦›­?0sç‡ßýãú÷ϵ7e \z™% @ˆJE‘=4€üÓôgÎaayŸ:<þ8 ×›W—õÜ·Ïx,0¨ZxúiàÇ‹^¾Ð œzo52[¶Áþ¬6¨˜zIfUž> ççž ³³4¬ˆÈ¨bEÀÅøýwùY @à³Ï­èÛøûVg¤”M;SR`ßï ?ºD­„³Þ$*ƒK£6&æÁ–YQ€3€ß~»»Ç¥¦ë×s^JǹУˆQ)pîœ,e 䀨C8r¯¤²?°s'pèéñ„¹=pÀ8´üÇ¥1T¹²ijr2°t©™9#11À‚°oP?|CðA“¿awé‚ P·µE… €­­LHgƃȔF¼öšqd•в%0p ðÏ?@ãÆòÙ€°p¤Âåo·#îh:o8®fUBÃïf§GÕáW£FÉí¹sE+ËŒÀ‚…Ÿ#ÁÄÝ®°¥v䞯ò¨cB" D¥ÀÆ€³³|™ @ÒÓ%@ÉÊÊ»a™Ú3`z\ @nÞ.^”ï—ujÔ0}_~ÆŽNž„,·ó÷ßÒBòóCÖ;S±-­#f>y ƒÜÐhú“€±j±³*UjÖ¼¯·€è¡õÉ'$üü³ÿ:ð矲‘篿Ê1@2 ×B5¸RãqtÇ„o?å†ÁÿÈ"(Õª!°\?œ˜úª—OA‡€½½ÌiÙ2ïpËÜV¯–¡œ·oËðª½{ÍŸ*· 11Rþœõˆº’Wi @ †â™$žž.™FÃ!XôhaBT lÚtïT¨`þ"xåŠ,É qq²œã›oÊϹŒ ¹½uK'662 K¯— «ÍšÉ$Øœ¯³ms:a74oŒ—B  ­… ñÚ€¼_åL[Û 11ÀSOå-ßøñÀsÏ=˜÷‚èaT¯žd,rf ›4êÖ•aZ€“'k×Ê+poS«Ú|á"phìØÆFãÃà¡8ëíóÏá… [ðÙ<ŽÆŒÉn—¢H'Fb¢9}úãÆ™?W‡võª±>É)<\6YlÖ èÙÓx\Í€äž0ŸŸâX¥ï^}ÿ½Ì×ɽÜñýº~]~Ï ˜¡G ¢NQdG›6ÆÀ@QdȆz6ž'ËÂ…T¨D` Œ3ww—ž¶„oÞ¨‘ Ó:{V.®j’™ lތ̱/àû¾Ø.¨xô/`äH)бcØ^w<~øË &H¦#¿!V“&ÉÈ"º{òYýþ{ù9,L2 2ÑÜ׸rÃ|^ÀSC6öÓÞŽÁ¢+½ „w~}’VáÝW̾ÆÍ›@JŠÔ3fH€sá‚ôÐç¦ ƒù ƒƒ¥Cäµ×¤ªP렻ɀܺxzÊÑ’àÒ%©[Ož4ÿùóÆý\î†:üªU+f@èѤ”¸~èÕëþ'不s·ÕÒ&:Z–Þ­]Û€<(‹á¨«Ðä@Ô YX˜ô6¶m+û‘#e>ÇÕ«rws“!W›74²9‹f»büÆ'xÉèÓúí{ñ=^À¤ö‡Q×1Êü@£FX·è×O23¯¼bñ·…è‘R©’q î°0 Ê•“ ßÏO>ççÏ˲¾º5a;ã=àüyDm9ý‹ãà—p?$Ã×”Cz‡®2îëÐ!è“3²³ðÁÒ™0a‚.ä-˵k20? K]|âD¹Uç·¨›7ó.Š‘[Hˆt’lØPä·èž#û©D-{~ÃÒÞ|xã»í+W$ ݼ¹¼/æ2Jdy))Æ¡ÉT<€”—/KrëV™”x?š5¾þúÁ”‹ /™…û¥9uRiPñœjÕäûœHh¨œß­àå%C®€;ËåÆe ¥ÝqLqú _ÞŠÁ*àTÖcÐΘ{ïâcèŸÃÌaAøÂgz½ï›qìÛ'Ó? z÷Ö­“1ëDT|*U2Þª//9æë+?Ÿ:%H6å{6ï’YÀ‰ˆ=Š š/uËQvmÝ鮞®Óö_ÎG3Èa™ˆfΔ§0·OPh(кµ*ù nnÈ^v[ @®_—Œ Pø0,5ˆQ—'.N;wþ:… ÷Ö`½rE†Ø©ÃìÔ¡uÅ)*JL;ùûé'uP’†>l€”ß~+½× ˜OwUjª4\KJJÛbb Ÿx™[Hˆq>EQ,Z$Crûö[É.$&ÞÝëçvé’ôrV¯.Hd¤i࡞Ӵ©,Ùyó¦1¹rE¾÷ó~ü( ûÞÝŒ÷1M¦ôÀ7+=ðÓ©æð™7 ÝÃñsÖsø´Û6 >gçoÅ瘈(ÏúؾCƒ=$¶³zô‹ðï¿ËXtDůzuÉx nšäó Èç½^½üŸÃ«i%\èü ^òÛÄÇã“þøX™ŠÄXê­zÇÐek¸Á­g”ùðm¼â½W÷^ÏÓ »vM‚‹ªUÿþËû:áá2U Î;åû°0éé †¥ GŽHotzºÔw.<ØFar²\W [Ñ+<\êº}ûÌ¿~d¤•ß^9ýú«4òU—.UªÈxïòå%Ãqê”ܧ^4ƒƒ%Câé ÄÅfAvOâo”ÿö¬Ëì‡ÑïúáÉÿù¢É´>˜€/–¥Ã/•§cf÷}À­[]±Sñ t}»(_Þø~œ=++è8;:H½B¸¬.‘e¼û®þU«Jã=*Ê4¢2É€˜1x°ÍÕbêß­±¾þTtW¶á­0²ê^h>ø@"›U«ðÍÁxïûÊáôë'…X¹ŽÿEµ é¨Y3ÿ HÎäêU騹~]æ:ò;,XV?<\–ï6$ËZµªÔqõëK}˜cCøûré’ÜFGçߨÌÈ£o_ ürg: cæÂ\@–ÛµkÆŽ)5Q÷~É9]¯ž|òî; oÜÑÿmþ~5«Uت^QQÖ²½aCÞ-I]%²8V>#Á¤PÇõª©÷{¥VŒ/>©×¨(`åJÙÙ;.®hùûoyoŽ/ÚùTÄǃ•šÈ™2D‚¢œÒÒL^»ؾݘí jÕ’ïÕÀ 0°Eôg.!ý¿0"ôc<¿{vÝj†w>rÁîÐêøÐæä7Ѐ›OŽ‘¨*$þÕoâû'7àÛ2Sp£V;ÀÁO<Ì™<óŒéëìÛ'Wu·æ?ÿ”¶ví¢½?Dô`”-+#+J†öܹ¼ à  2™™À{ïÉêtsçJckç^{ܬ×^*¨Õ«ÐPÌŸ‘eþ†2öy©ì~ù>ûÃ[³\ðãáÇðâîáÀœ9ÿæ/¼ÔînE§!,Ì€tê$™ÓÕ«¥nÔH2 !!À´i²:^||Þr†‡K#ÚÓxáioß.õi¹ròØÜ‚‚î~”šMò¢£å=<(åU³H¹%Ñ륞W>(HZšlš™’"¯ûüów¿GLîçëß_FX âggíPÁ’’d¼mýúRI‡…IEw/=Ïjåj0HåP·îƒ-+ éçモ=#Ê”)úã `þ|YöÑÕõÁ”eñbã .‘‘r/̺ur{ölÑ^#(È@ìÚ%àTÁÁ2çbëVù›%&ÊÅQ½h2GäñÇo¾‘‰Šbìí ž˜œ¾‚ÁµC€…!hqð?lFª'‡ šæ*ìϧCÉp‡6¥>Üšã°ÏH¬<]4 ©T@4¸6 À½¼ÊÉS„ÈEõwŒåòò’cêÐ 5qw/ÚûBDÅC+oÌ€xyI#¿lÙÂë9__>Y£†4ðÕïÙ³’áÌ©F{_¼µðI´ö{~-$x ŒÇ‹mÏbéëgrè <Ï@ùd*$&b ÅWƒÕ6•¡¿Q xµÜjÕÂûÍja˼ªpATªä ??©kõzù=Þ}W†¬æ.¿k… ²ùûªURWR‡$+R5ib|ÌÈ‘R§íØQô÷3(H²»ÉÉr]ÔhäºÛ®iY¹fΚ%uû²e’‘zâ ÓFja ïŒ yüùóò{ܸ!Ù''ÙVÍ€$&Ê4­ÖXF fÔMgÍÍ'Q”¢ .ÈûðçŸÀÿþ—÷~õZ?b0}º|_«–\+~úIþ.ãǭܹ©+=æ7߯€? %œÚ;S¯ž"ii2Æ_½ðrápu•´tABB¤ç(&FzÏŠ€üñ‡ô¾¬_/?ëõÒ{óÌ3y+¥ôté!Ú¼Y*ñ»Ydÿ~¹•)#K7Þ¯ÈHé=éÓG–¤ˆôúˆr¡ëÞ=ïcâãÝ»¥'*ç0µ ¤l'OÊ€œNœ[ Ô½7ââäï4r¤ ©ºtÉ8æùúuù*_Ö€™c#Ð:+Û_ C·Sa(“†¯bÂQ×Pï!À¨ü ÿØã÷*5 GulBTí\‹ê¡õ˜úX´¶ xܨQIA̹hÔÆ%LŒsë‚1Ø-XR¨?ÿŒ÷RSñÞçÌìïŽm•qþJÜÐUFU°hqe„v®ŒÊm+Jìítî,×”6mL—ñîÛWÊüÝwÆÀ%"Bv€¿ÛºêâE E ©ß/_¾úJ¾¿tÉø\êȃŠ%ó¢(lÛ&ˆ:¡ÞÛ»ð HX˜d ._6ÎÁPñö–DQ$•”$ª‰åq9ÿö¹;4l(›ÖªHLLÞó®_7m*¨q­)»wK9rw þù§”kÆ ãó…„ Éÿ¹ £¾ŸÈ{•ûº›ž,]*·fÍŠg(0âÇ!XÅH¯×cÊ”)ðó󃓓Z·nwÓ5ãºâuëWAÉ9}ÙÔ7y²ñ¾ü*Àÿþ“ñ·eËæ]¯< @*šÜöï—×P{ÉfΔó¶oÏ{î´iÒóT«–T‚w#0Pnÿýî§JJ2V‚))2nV§“‹ ÚÞ½òôê%AAn›6IïÔĉ¦ct-’ Ï\ÏÖñã29tà@YE%#= ˆ‰AØ?çÐx·ú*L´ý 㦡ì;/b½¦?Ã^|aç¢Ã¶KUÞ+2‡ÂëË÷€-›Q7‘^£.~pØÏCÀÎåQÀíÛМ>Aš¿ð&ÂóýqØ…nXô§/:uÖÀÖV†+¨ÿ–-åÖÓÓt¢x¹rr‘»u«àŒFùòÒË¥f?ˆÈúÊ–5~žsvD5otìxoÏ©U«š¯RE†ó„…ɵã¹ç¤Áok+@ƒÒátåªu:–GfÛŽXÿ<¦(ŸàܬµÒн}iÁ×ÑÃy?†a²Þzÿù¶ƒ ²Ð]·íwÏÆ*<ƒÊÏ´5nïå…ßÏ?†I[{ ÓÏáí›SdŒÏªUÀž=І\ĸgã±ü׬ìIßê5çÆ ó ïüÉõµfMéPÚ¿_êÆ©Sç„…I±Ôì’F#óô¶m“ŸÕFj»vRÿ¦¤ä¿á£:óÊã5E @||¤á>n°d‰\¿FŽ”×+, ¢Î¥ùþ{™¸˜Ï€œ¹Ó)•{³Ys繺JcÇàØ1Ó9ÿþ+Y´Þ½åšY§Ž”] <ÔßÇ·lYô¡ßj’˜h~¶¿þ^~Y Šöœw‹Hñc¤=k×®ÅĉQ«V-,]º½{÷F@@ÚåÌïàüy¹¸¸{?ÂÂd¨Ï±c²ë´­­±"{óM©|._–J0>^êt@ß={ʇ:gÿ… ’)Ðé¤òüóO©Ä§O7û÷Ëó|ú©4hͳݲ=ZzaÞ|Ó|¯I~”áJûö™N`,ªñã%€X±øøcyßö퓊ÝÓSzÇ®_—¡lþþÀK/É[°™•%Ë·m+=ZS§N¤¡ºG<"¶Ç¡âóSêÔ—75.ˆGŸ?nb bPãÇhŒIº[Ç + ÀLànþëƒd”u/‡Œ&«Ò».UDÝÇ+âµ+àt\E4îä† ¶¸Õ—ßáÍ€Î8 JKfQ®œ”W 0nÝ’Õ¶¹@ª+Ÿøû?þh:AFË•+Ò˦Á2§|y™×„¨äÐhäZð߯ ÿ„ã¢hÞ\ðæ²èê¤ñ_~‘@%=]†ÙÝi=tî,4îîÒ µd‰Ï®ÃmlàP³"ª=[ë×·…v:°%VVaúòC©»ßŸ€=¿\ÃöeÐÅE‰3£ð¤G¤ü¢û÷K«4ÇSS¼[dùz~^hí…Í^K+‹” ^8£õÂöãe// Ý åë{J!Ýܲ#¸¬,ÉtŒ-ÕúºuÒHž-ç_¼L™"mƒgŸ5ÎGÙ³GF¨¨‹%øP÷‡É™Y¿^Ú%GŽH6«0‘‘ò»¨Y·œC›cðÓ©“\÷¿øÂø¸… åªreù~Õ*9²b…´MrSçîä΢0)~ @ŠÉáÇñûï¿cþüù˜4i`äÈ‘hذ!Þ~ûmì/âêt@zGììŒéàE‹¤R|áIÓ*ŠW¯J%´d‰<þÚ5©h¯\‘mzºql¥^ &Ù•¨( höî•ór ûöɲjUéyçÓÔhR’¼Ö¤IrAzýu©”9_}%8s©RE‘Šú¥—¤Ìo½%½G ˜¯0%ƒñòËÆ×?xP. =zå<3±}uš–MÎ%á ·$¸JDæµ$¼dŸ„WKDÓÍI8Ø)užJ‚mrÂÏ%bî‰x4¯§>ñHF<œ:ËÅ.»fî[ggÀÃЧ'nz@[ÏëbÁ÷ÞhÝÏ=Fúà‡õÞøqƒ7C|°á ¢{–qÂ寿ŽŽ@ÈåF žž=¥'S£‘÷ºLÓžÉòå嘓“4DÂÂŒˆ§§ÜÚØ{5Õ åªråŒׂ2 ê°- D%‹¹ä~tì(mò‚†pÕ¬) qgg©_rRë§&MŒ½Ü¹;‘>ýxõUù^mp«õÖ¨7Üñá×îèùEcܸ!׋×4ø¨ÒõΨ颢€ÈH(7b0íÅ›èòX,º5ŠÅéÅ7Ѫf,ÊŸ„û?7á•‹I™wvn €)¤èÜ‘lç†]©î¨ù«º¦º£[º4îãê½;¢ºã±AePæ˜ ws‚\¥7ÐÅÝ::C£Ñbûv)’¯¯¼ááò¥ÕʵöÏ?%PÙ´IŽ]¹"×ñŒ IP¥Šñý|ýuéÕ5Ê8â•ÄV¬Èþgzº'Ÿ.Ïݳ§4øÓÒd1cÒ¨‘”÷Ø1Óç ’!o Häùçe"ú¼y°¬Z|ô‘¬Èxñ¢éòóÕ«ËHŠœˆZ^5#³c‡ YYyÿ‡rŠŒ”òU©"í‘×_7½ÿߥѡƒ¼·II2aÐ é¼}[6Ç}óMºw劜ûÏ?ÆŽ;Õ /ÈcÔùŸ*sÈ7ßH™úôÉ¿ìTt @ŠÉš5k`gg‡—^z)û˜N§ÃóÏ?wß}ááá¨P„nþóç¥È¶BéÉOJ’ùS¦H‘˜(v5òòËÆ4ôÉ“Ò;“ž.…FüðƒTRÒË}è|Ð'O– $"B*µ¡ºc‡2o¼!AAzº:5jÈýGÊù­ZIET·®J0´y³TB-[B"—ÔT™õ—’‚°‹)¨|#Ã+¤ \³œZ™‚òš„LIFƒ®)Xº(þ SðXõ %7Ï¥À÷@ ¢¾MFd%%cÃÅ$ø¹&A›–û¸ G±r¤ƒä€W\šP©»\áèSAç]¡«\ÎO6<<°àOTmâãW=aëå[6Ð;{â— €½=~þY.,N›çõz»/Ç3€]Úz\¾ý¤¡Ÿ =))€¼úªip0c†¼W;2É^&»ŸÔ~ýŒC/jÖ”·ò±Çäg5ñò2¦õÍe@T… Á€•4j6<çgù~tí* ­Â™(,£Ý¸±Üjµyƒ#wwãówï.Yµn©YS楜8!÷O?•ã&—HFºîÝÜ€:u ¹˜zxÃó pi#0ftÚ­Yü¸XÍ¿ÅÁÇ6_͸)i‰[·—€SnÁ)=n¸…Ç|PöZš"U²`÷õ-ÌÏJ€ýÏàg {Á­+ŒyHÕèþ?ô²uÁ›”ë‚ %ê¶ G¸Âñ¤ Ú;ãà@Gtèáˆ*Û1­Š#Î_qÄí3ŽhØÂ8ä8:¢k%Gtí(½S)ŽÒÒ·±AÏž’‘9uÊtÒ½êàA¹® *éåËrÞ²Å8÷Pv}ê”~^^y{÷ÕÕ?ÿ\‚€F¤S¯GÙ  re¹¯m[9/çfÎ+ IDAT¿êÕ%ãîìl¼ÞÅÆÊ÷'OJûeÇÉfŒ!åÌoÁ„ÈH¹þ¨FÎÀ+.N‚£É“ÿo§OK`T¥Šdi~úIþÔ¾¾’QJI‘ßaäH9WÂxõª\gmlLGl Ò\þ.“&Ippè¼Ï樥dyøË—Ù9uôFÇŽòúZ­<×¾}²´ñ3ÏH¦båJéÔÓjå:÷ã¼}ö™,tãè(…ƒƒ»v:PçºÔ©c¤EEIÐ’œ\ðÿ% b ßÜ]Ï@ö±ˆ‚¶}çÀÕé1lR h»8Xf ürÑ€¬é°ýÀ0ü:PQo@ Òá<Ô€dàø›K‘¨c‚çÈM8<Ô€¬’„A@5૬H ÖÝà5`4ÈÐ; :dÚ9Àk«ŠN‡Î6Ð^Ð!脲´:¤d:ÀÞÓšŠeÜuظÕc{è°äÒì sÕaÚlhtø÷˜3<+:¡aK',\ì„€CNذÓIZÌNNXð­>øÈ³fi0uª\$êW•êôÀ Äf7’õ”uÀk 8å};³ÛvÉz JM9¦ÕÊEððaÉy{›nàÕºµ¼ÖêÕÒs+ÃܾúJ‚?6¤ÈÄÙ³¥§)8XRÙª‰%ñS·® Û²ÅüŸ¾°MÄr{áÓŸÕ%¹ØÎ›gºœ$Pô ÈÀ2DïAõ²уѵ«Ô1¹W²6''é@ñð¸÷çxæ @Ê”‘ÑNQ—å½~ݸRcƒòøF¤Ú®,{ñ¢qåÇÀ@ úô1jÛVêûž=åçzõ5X¶Ì™åq èß@®ºTë¼ÛpÊ^<1hqç¾—jK0´îªô²Oœ(K­¯X®àåÑi8w4ûv¤â½7Sñò¨TéQLMÍû•’Mj*ö-K…>!#»Èñ¸H=´ŠŽ6zD]Ó£ŽG"lBôpÐËWõ›éªèQnoAÝ-=´SÒñ= ÀRÆÐ×øû¼qç+['Óß÷ƒ;_Y§5È´Ñ.ZIÏkµè­Ñâ*´0¤káy@‹Тâ3ZdÀû E£KZŒ2haÖ"ËF‹*oi_å±¹¿ž>jo?;tÙe‹°EâÛv@K[y­M¶øÀÝU7Ù¶¶˜^Þ1sí08ÕO¥Û¡Â>[Ìia‹ƒGì0¾ª-°Y×ÐÖ_ ²ÃÊ©¶ø{ª-œíšn‹OGÛbÓ?v8¶ÂýÈsÞ¾n _Ø¡UU[¬;m‹Ì›vH3ØÂdÀûöØ¢œOw7¦|1)&©©©Ðå\zè‡ìûó•ØØ 1Q‹8Á¹Šà(Ì)Z9mL-† ÓUµÐhí±hŽö.ZDÇi1vNö€V‹µøú;-4:{4lªÅ{³´Pì´è3@‹AÃìqà°e}µ˜÷™Vº*´Z\Ô¡¡¿ÿ¤ÃȱvXÿ§ãÇKƒûÿ4F7—Þ·;¥Ç_«•ñ–î;.1À›Þ@¢03Czû?œ ôm+…¯JïÆö©À²I@Ó®rŒ?nÝ Hž&;Œ·k'YQ£¤·?8Xz?ì줧cÀIá;™ >y=µÇB–Èp°õë%Eݾ½éØÚI“äwU3Éí›oÊ2wðHТÑÈ(II’UQÕ®mœœYœrf@ã˜ëœre@ªV5Ý„ˆJ†îÝÍ/%^ŒUpö£0={JðQ”…H|}%«\µªqh’:oP­[·–òìßo @”:] >9'g§Q½z2, @:bZ´@íÛËãRRòumÒD†éª¿ÓñãˆÄÆjP©¶#n¦8"bàáà±Â×ÔòÀô˜&õ{›:ÒyÖ§ð»œÛé]¼ãønjõâÓÆÍ‡>¬ÿ+ ‰±é8¨GßzìÝ®GjéPÒôèÜFQÏèáë©ÇÅ3é˜ðšAF, &_©· °‡€ñþ¬d~ýØ- ÑÙ€CQ΀ä[ˆ÷0À¥–ç ðv7 +Ý€ô)@tÞç†Á€73à‘ž ‡ß3ðŠ6º­™ÀÞ (™™è–˜‰žš `R&‘÷snÕþ®Üdïõ;Úô=|íÎ@Íb|çX(€;Y¸ª"à/`1xβ[m}€"îULQ¨X4hÐ@yüñÇó?wÑh”%K–ä¹ïرc ¥lÙcJP¢Lœ¨(5j˜žóå—Š(ÊâŦǛ6•ãÕ«›ŽV[[Ei×NQnß6ïØQQ†U”råeæLÓǤ¤ÈsMœ(·‡+Jf¦¢deÏ6LîsqQ”~ýäû?ÿ4}žÚµÅ×WPOOE>\QfÍ’cŠríš|ÿ믦MMU{{¹ï£åòeù~Ëyž?T”ýû嘇‡¢<õTž·3ÛêÕr (‰‰ÆãË—Ë1­VQ>û,ÿÇ+Š¢¤§Kyœœ%44ÿó7–ç|ù傟¯¸\½*¯?iRþçÄÇË9öö¦S"¢’`ÂE3¦hçÆÅÉ5Kª(:¢[˜¥Ø CþTš 6 Æ ÃðáÒ£ÿÔS¦©VM&ðå^ÅÄÛ[†Õ®mÚÛÓ ôþÇÄäÝÐÑQRèê&{>>y{´ÔÇ<óŒ Gúàc:\Õ®lT¡‚ô}ñ…Ìkppûöï7ÎgèÖÍô±Òãtà€ü€é$w•ŸŸL&Ìï,«ÎU;Væ`|óMÞRÔF½ú«Ž!çëõ2!»\9Y­¢aüék@*ö²e%Å®ÑÈï¡NT¬YSŽ-?€¨Ïsø +xyxÈ{SÀŸ#ÛÏ?¾KûìÙò¾å·ºGqsq‘€M]¥ÄF.N ¿""*­r€¬ -KË«óïZ4ñ T©" ý=ò?Oí<ËÝ1•;dHlÙ²Ò)çïo\%ª¨Zµ’ ×gÏÊÏ?.憫נ´4iä«×lµñîä$CÝÔäøq¹ÖÐ7Z¨5ä:kc#m‘´4  0=O-ƒº<ïåË2ÇÒÁÁ¸IpÎÀ(!A—œZ·–Å`̵‹ŠÊÁAæUmÞ,?'$ÈuRmOÕ«7 £G¯‡V»{ö¬‡»ûzøù}~ï/H€›Áƒ#33Kr ü×ëõXºt)Z·n]à X­[ËšÞÑÑÆåU £6®kÖ,ÚùêÊF9?d9ùùɇÐÍM>œ¹õï/“´ ÚTHüœ³q¿x±l‚ذ¡|à33ófNTï¾+cuÕ‰–Íš÷@QËû¬eËø°aRŒt:æÎ‹¹sçÞÕã4âtæLÑ×y÷ð_ïæ5FÎß 517ÿãAñð”kQÕª%•oQ³<9uíz÷y˜cí•lööòURØÚJV&  hĪ›Îæ7,¸jU&Q´e¤>}d®ÎäÉx¨#^]†nYC¯^ÒYÙ©“qøZãÆ2/%+Ë4Ó•_ç-瀔P æ¿Y݃2¾ŒI5çAd@4ÙXïÅ­]"""ËSÁEÍ€åƒ@:{÷6îe¢®´9|¸L\·†îÝeqžC‡ŒF€ôtéνÒÝ %”½ýý½_%1d5“¢Œ}%""zØôí+ó8Ì­^™›——qYý’hȹíÛ·àó,¥cG^õߦ  ‡`‘Y%5!""zTµo/“¢‹âÉ'®äÎ÷4X²¤ä ÎÎÒÁ¹g1ñð*W–ÅÌm@÷Ž2Ë×8Pzˆˆˆ¨téÐÁz›â…V+CªKÒŠŒÝ»ËmÎeê7–[f@, d–¬s]”4/Qi§n 3Q‡a1y°€Ñ#¯ysY5Óßßx¬[7ãæ‰ôàp=òìì€;Mué„…Y§<3f@ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ŠÉÎ;1vìXÔ®]ÎÎΨQ£^|ñEDEEY»hDDDDDVcgí<¬¦L™‚„„ 2µjÕÂÿý‡¯¿þ7nÄÉ“'áããcí"Y3 ÅäóÏ?ÇåË—1gÎŒ;}ô6n܈èèh|ýõ×Ö.V®\ií"Ð#‚ÿkd)ü_#*€“öíÛç9Ö¡Cxzz"((È %"2Å 5Y ÿ×ÈRø¿FT:0± Û·o#)) ^^^Ö. ‘U0± Ï?ÿƒC‡µvQˆˆˆˆˆ¬‚“Ћ@Qèõú"ëàà`öø¿ÿþ‹™3gbèСèܹó,QéÁ¤öìÙƒ®]»éÜ   Ô®];ϱ¢Q£Føá‡ }Ž .ÜS9‰îFBBŽ?níbÐ#€ÿkd)ü_#K`;íþiEQ¬]ˆ’.::ÿüóO‘Î0`Ê”)“ýóõë×Ñ®];ØÛÛcÿþý.¿‰-Z ""â¾ËLDDDDÅÃÏÏG…¯¯¯µ‹R*1)F7oÞDûöí‘€}ûö¡F…>&22‘‘‘(Ý ___÷H1INNF×®]qñâE iÓ¦Ö.‘Õ1)& Àúõë1vìØ<“Î]]]ѿ댈ˆˆˆÈŠ€“jÕª!44æÞÞªU«"$$Ä ¥"""""². DDDDDd1܈ˆˆˆˆˆ,†H  ×ë1eÊøùùÁÉÉ ­[·ÆŽ;¬],zÈìÞ½666f¿>líâQ)•œœŒ>ø={ö„§§'lll°lÙ2³ç^¸p={ö„««+Ê–-‹çž{±±±.1•VEý_=z´Ùz®^½zV(5•FGŽÁ¸qãРA¸¸¸ J•*:t(‚ƒƒóœËzíÞp#Â`ôèÑX»v-&NœˆZµjaéÒ¥èÝ»7Ю];k2o¼ñüýýMŽe‰h"sbbb0{ölT©RMš4ÁîÝ»¡Ñhòœ†Ž;ÂÃÃsæÌARRæÏŸ3gÎàðáÃÐjµV(=•&Eý_N‡üÑ䘛››%ŠIO?ý2d5j„ÈÈH|ýõ×hÖ¬<ˆ `½v_²ªC‡)FY°`Aö±´´4¥fÍšJÛ¶m­X2zØ(FY»v­µ‹B½^¯DGG+Š¢(GU4²lÙ²<ç½òÊ+г³³rýúõìc;vìP4²dÉ‹•—J¯¢þ¯5Jquuµtñè!ràÀÅ`0˜ V”#Fdc½vï8ËÊÖ¬Y;;;¼ôÒKÙÇt:žþy"<<ÜŠ¥£‡‘¢(HJJBFF†µ‹B{{{x{{€ÙUÿTk×®Eß¾}Q±bÅìcݺuCíÚµñÇ{9©ô+êÿšzVV-Q4zÈ´iÓvv¦ƒ„jÖ¬‰úõë#(((ûëµ{ÇÄÊNœ8ÚµkÃÅÅÅä¸:DæäÉ“Ö(=ÄÆŒ7778::¢k×®8v옵‹D¹ððpÄÄÄ E‹yîó÷÷lj'¬P*z˜¥¤¤ L™2pwwGÙ²e1nÜ8$''[»XTŠ)Š‚èèhxyy`½v¿8ÄÊ"##áëë›ç¸z,""ÂÒE¢‡”N§ÃàÁƒÑ»woxyyáܹs˜?>:t耠I“&Ö."=¤"## ߺ...ƒã¥éðóóÔ)SЬY3deeaË–-øæ›opêÔ)ìÞ½¶¶¶Ö."•BË—/GDD>üðC¬×î+KMM…N§ËsÜÁÁ!û~¢¡M›6hÓ¦MöÏ}ûöÅàÁƒÑ¨Q#L:[¶l±béèa¦Öc…Õu¼PÓƒðñÇ›üüôÓO£víÚ˜6mÖ¬Yƒ¡C‡Z©dTZáµ×^CÛ¶m1jÔ(¬×î‡`Y™££#ôz}žãiiiÙ÷—5j ÿþ(tL5ѽRë1Öud-'N„ vîÜií¢P)…>}úÀÃÃkÖ¬É^yõÚýabe¾¾¾f‡Y©©=???K‰1+VDzz:ÇGS±Q‡(¨õZN‘‘‘([¶,{ ©X988ÀÓÓqqqÖ. •"·nÝB¯^½˜˜ˆ­[·¢|ùòÙ÷±^»? @¬¬iÓ¦¸té’’’LŽ:t8.ŸŠ]HHó,„@ô T¨PåʕÑ#GòÜwøðaÖsTì’’’‹råÊY»(TJ¤¥¥¡_¿~¸|ù26n܈ºuëšÜÏzíþ0±²Áƒ#33K–,É>¦×ë±téR´nÝ*T°béèa“çØ©S§°~ýzôèÑà %¢GÉSO=…7",,,ûØÎ;Œ!C†X±dô0Ñëõy:ô`öìÙ€ž={ZºHT effbèС8tèV¯^V­Z™=õÚ½Ó(ømuC‡źuë0qâDÔ¨QË–-ÃÑ£G±sçN´oßÞÚÅ£‡D×®]áää„6mÚÀÛÛçÏŸÇ’%K Óéˆ:uêX»ˆTJ}ýõ×HHH@DD/^ŒAƒe÷þ½þúë(S¦ ÂÂÂдiS¸»»ã7Þ@RRæÍ›‡Ê•+ãÈ‘#ª@ERØÿZ\\š6mŠáÇg×iÿüó¶lÙ‚^½zaÓ¦MÖ,>•&LÀ—_~‰~ýú™ $FŒ¬×î@¯×ã½÷ÞÃo¿ý†øøx4nܳgÏF÷îÝ­]4zˆ|õÕWX¾|9._¾ŒÄÄDx{{£[·nøàƒP½zukJ±jÕªáÚµk=ASQh4\¹r•+Wœ?“&M¾}û ÓéЧO,X°€Ãb¨È û_sssÃøñãqðàADDD 33µjÕ³Ï>‹É“'s ^*’.]ºàßÿ5»8‹F£AffföϬ×î """""²Î!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² D V$^IDATDDDDd1 @ˆˆˆˆˆÈb€‘Å0!"""""‹aBDDDDDĈˆˆˆˆ,†Y """""² DDDDDd1 @ˆˆˆˆˆÈbþÁc1ÈwòÆIEND®B`‚lmfit-0.9.2/doc/_images/models_nistgauss.png0000644000032700003100000012722412603520205022362 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝy`LçâÆñg&² A*Aì*––Øjí­ª5 JmuU[hi¯åª{¥¨–6mJ)j_jImUª?ZµS´öÚűDHdæ÷Ç+WhBfN&ù~þ‰{æÌ9ÏÜÜKž¼ïy_“Õjµ Àlt¹€ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 €ÃP@8 ä¶„„ 6LÍ›7—¯¯¯Ìf³¦M›vÏyV«U_}õ•‚ƒƒU @.\XÿøÇ?´|ùòt¯;yòdÉÓÓS*TPTT”½? mQ@n;þ¼"##µÿ~U«VM’d2™î9oÈ!êÙ³§Š/®1cÆhèСº|ù²BBB´hÑ¢4çN˜0AݺuSÕªU¥ºuë*""B£GvÈg²“Õjµ";HJJR||¼üüü´mÛ6ÕªUKS§NU—.]ÒœW¬X1•(QB7nL=võêU+VL7ÖâÅ‹%I‰‰‰*Q¢„êÕ«§˜˜˜Ôs_yå-^¼X'Nœc>M0r››››üüü$Ù¦Yݧ§§Š)’æXþüùåå奼yó¦[»v­âââÔ³gÏ4çöêÕK Z¶lY¦œ$“¨~øAQQQ:zô¨öíÛ§^½zéêÕ«êÛ·oêy;vì$Õ¬Y3Íûƒƒƒe6›µsçN‡æ²ƒ}Ú¡¹€ì€Lš?¾Þ|óMµoß^ ,Ð7ß|#µmÛV‡N=/11Qnnné^ÃÝÝ]‰‰‰ŽŠ dŒ€dÂ7Ô³gOµlÙR³fÍJ=Þºuk•/_^C† Ñœ9s$ÙžIJJºïu<==Ó}-66V±±±YYÂßß_þþþFÇpZLØ·oŸ.^¼¨ÐÐÐ4Ç ,¨úõëë×_M=æïﯔ”]¸p!Í4¬¤¤$ÅÅÅ) àžëÇÆÆªfÍšLÏÈÆ´uëVJÈC¢€dBrr²$)%%%Ý×î>^½zuIÒ–-[Ô¢E‹Ôã[·n•ÅbIÝkän±±±:}ú´f̘¡   ¬Žl¨_¿~7nœÑ1à |¿s¾ß¹ ßïÜcïÞ½zùå—KyHL¨T©’ÜÝÝ5gνù曩ÇOž<©õë׫Q£F©Ç7n,___EGG§) ÑÑÑòòòR«V­î{Ÿ   ÛçC [ñññá{‹ðýÎ]ø~ç.|¿Œ£€Ü%**Jñññ©S bbbtüøqIRDD„¼½½õöÛoë£>Ò³Ï>«¶mÛêêÕ«úòË/uóæM 4(õZŠŒŒT¯^½Ô¡C5mÚTëׯ×Ì™35bÄ6!@®D¹ËرcuìØ1I’ÉdÒ¢E‹´páB™L&uéÒEÞÞÞ1b„Š-ª‰'jÀ€rssSíÚµ5cÆ 5hÐ Íõzôè!WWW;V111 Ô¸qãR—ïr È]Ž9’¡ó"""2\"ÂÃÃþ(±€ƒ}@………Ä÷;wáû»ðý2Žˆ°r¾ß¹ ßïÜ…ï7qCà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0Cà0C¹-!!AÆ SóæÍåëë+³Ù¬iÓ¦¥{®ÅbQtt´ªU«¦¼yóªpáÂzöÙgµk×®{Î аaÃ4uêTíÞ½;k?`F@î¥øøøÔªbbbtüøqIRDD„¼½½5hÐ Í›7OíÚµÓ;ï¼#ooo}õÕWJIIш#R¯åáá¡ÈÈHõêÕK:tPÓ¦Mµ~ýzÍœ9S#FŒÈÐ&„Ý»w×gŸ}¦÷Þ{O+V¬°Ï‡Èd}Ю{¹LéÒ¥uìØ1I’Éd’dÛ”Ðd2éÈ‘# ”$9rD К5k”œœ¬zõêé£>Jw8nÒ¤I;vlêû{÷î­ˆˆˆtïgHoÛ¶m –$}÷Ýwjß¾½~üñG5iÒÄ”ÞÏkÈ H6’Þÿ ­V«êׯ¯ÄÄDmÛ¶Mf3³æŒBytLÁÊæL&“ƧC‡xd'P»vmÕ®]ÛèÀ#c>‡¡€p ‡¡€p ‡¡€8!«Õª¹sçjÓ¦MFG2…exÕjÕ˜1cd6›µqãF6'€Óà'W'd6›õé§ŸjË–-š5k–Ñq€ £€8©† ª]»v8p ŒŽdĉ=ZçÏŸ×Çlt C( N¬L™2êׯŸF­S§Nø['7dÈyyyiðàÁFGþÄÉy{{+22R+W®T||¼Ñq€¢€ä]»vÕþýûåããctà( 9@žÑ¢E‹´bÅ £ã — €äb;vTãÆÕ§OݸqÃè8È( ·%$$hذajÞ¼¹|}}e6›5mÚ´¾'99Y•*U’ÙlÖØ±cÓ=gòäÉ ’§§§*T¨ ¨¨({Ä(&“I_|ñ…Ž?®Q£F¹ä¶óçÏ+22Rû÷ïWµjÕ$Ù~@Ï?ÿ\'Nœ¸ï¹&LP·nÝTµjUEEE©nÝºŠˆˆÐèÑ£³þ<¤Š+ªÿþ9r¤>ltäpÛtæÌ9rDcÆŒùÛóÏ;§ÈÈH 80Ý×5dÈ…„„hÞ¼yêÚµ«¦M›¦—^zI‘‘‘ŠÏêðÐþõ¯ÉÏÏO²Z­FÇ@F¹ÍÍÍM~~~’”¡Â¨Š+꥗^J÷õµk×*..N={öLs¼W¯^JHHвeË=tñòòÒøñãU @ݼyÓè8ÈÁ( aóæÍúöÛo5nܸûž³cÇIRÍš5Ó–ÙlÖÎ;íš1³Ú¶m«Y³fÉÃÃÃè(ÈÁ( ™dµZÕ§OuêÔIuêÔ¹ïy±±±rqqQáÂ…ÓwssS¡B…túôi{G²›æmUªHJ7n”€  €à‘U®\YƒÖÈ‘#µsçN£ãNíjÌZÝ(WE·&MѦöc4²ßYu®°UOůÔc§w* å„þê0Pù—Ì´ yÜ5çªJ)%ÅÖWÈ®( ȃV¥J•ôꫯ*))Éè8€S²Ä,•Gëfúí\•¿¹GuôWôw~:uJ ’úô‘f,/¤*sß—þøC ”6”æÏ—d+ ’´g€¿Á3 Ènnnš:uªj×®­?üPÿùÏŒŽ8—+dm×Nß+Dî‹æjKW( ¹ºÞçü¢E¥µk¥®]¥Ž%OOy‡„(0ÈÞ( È2Õ«W×àÁƒõûï¿ËjµÊd2 ÈÖnݲíÙaÚ´QjÛV›|šé“ÒsôK›ûµŽÿáé)͘a{@=,Lúí7U©R…ÈÖ( ÈRï¿ÿ¾Ìf3åÈ€W_•Έ×g;)ññ`=³k¾¾rËÜEÌfiút©A)$DuB6뛥~ö @àd)ÊA³êÍ­Ý”p:^fé±îj×î!.”/Ÿ#%&ê_»êØ1«®\Éò¸d  9Yjrt’^ÔõvŸ¤¯V–RŸ>Rž‡— ”&LPñKÕQsõÇY€,CœÞqV£­t²E¸"ÖµWX˜Ô­Û#^´M¥¼ð¢>WüíB–ä «Q@Ày†T²\ukø(Õ¨!Íš%ùø<úu]¾ü\®æUšØ÷Ñ/€P@ÀÑ6nT±US5Ôô¡ŠUõÍÚk?ö˜fV«šûgI¿ý–µ× P@`wñññ6l’d±H}úè”_u­.~ÿ}>Á…–]´Çå Yÿ9P²Z³þ< ìîÈ‘#1b„†ntÀxsçJ[·êË ÏUª¬‹]nñ|½—2R¦õë¤+ìrvW½zu :T#FŒÐ¦M›ŒŽ'%EŠŒ”Z¶ÔŠ+õU¶¬}n,å}¡…6º7’åŸm÷ › €À! ¤àà`uéÒEׯ_7:àV«ô믶YW’¤ùó¥½{e}˜–Ê”±ß½#‡›ôNÒ(™÷ì–æÌ±ßÈ$ ÂÕÕUß~û­Ž?®pˆmÛl”ô‘þ;úÑ¢…âÊÕÖ•+²Ûˆ$I_{J?ºµTʈxmP@à0+VÔ¨Q£ôùçŸkõêÕFÇìnËÛ×÷ß—Ž\ ýù§4Ì6ú!ÙwD’þýoi”å=¹ü¹GZ¹Ò¾7 ƒ( p¨Þ½{«qãÆzýõ×otÀ®¶o—ªT‘jÕ´*)ò#ÝjÜTªSGýe{ÝÞ$0PªÒ³‘¶šk+ùÃÑö½DC™ÍfM™2EµjÕRbb¢Ñq»Ú±CªUKú®ï:UNÚ©ÏÜH’– ’ °†ÁCLúÔõ=¹þú³´y³ýoÀß €ÀáµpáBùûû°›¤$i÷nÛŠTóÇëâc•ôÞª&:zTúë/û~Üáç'•ÐF‡L唸FAÆ£€€üù§­„Ô-zDZ¼Xù†ô•OA“>þØ6bÏÐÿ×;ïºè+Ïwä¾b‘tü¸ãn @:( `;vH&“Tõÿ¢¤‚åÞõeõí+MšdqÔˆd›êU¸ßËJ°æ•uâ׎»1é €€lß.U/MnßN’Þ|SÊ›W½{K®®R\œcG@$©j½üš®Wd™8IJNvì͸ ì`ûv©»ÏéÚ5©GIRÁ‚©tèˆ$U¨ E«‡\Ο‘–,qì͸ ÙŠ•ÍÒ¤¤H¿ÿ.…œ™$5on[÷¶wßµ ˆÔªåØL¥JI{]ª*¶l}):Ú±7à.d}ûöÕ°aÃŒŽ<²ƒ¥Ò »p|“Ôµkš×Š‘&L¼¼›ÉÕÕ6êòS…ÒO?Iû÷;6·Q@nKHHаaÃÔ¼ysùúúÊl6kÚ´iiαZ­š:uªBCC¨|ùò©jÕªúðÃuóæÍt¯;yòdÉÓÓS*TPTT”#>ŽS*R¤ˆ>üðCýòË/FGÉöíRWM–¥ˆŸbtœTåËK ÔÞ¶ ÉäÉFÇäRÛΟ?¯ÈÈHíß¿_ÕªU“$™L¦4ç$$$è7ÞÐŋգG?^µk×Ö°aÃÔ¢E‹{®9aÂuëÖMU«VUTT”êÖ­«ˆˆÍZüé4hêÕ«§—_~Y—/_6:ðÐvm¾¡WÍÓe~íUÉÍÍè8©Ê——öþå.……I3fÈ’tK÷ùÝ vC¹- @gΜё#G4f̘tÏqww׆ ô믿jРAêÚµ«&Ož¬aÆéçŸÖš5kRÏMLLÔ!C¢yóæ©k×®š6mš^zé%EFF*>>ÞQÍi¸¸¸húôéºté’zõêetà¡X­Ò­‹UÐwÏô+£U¨`ÛƒäÖ˯I±±ZÔóGÕ¨at*@nC¹ÍÍÍM~~~’îÿ ´«««žzê©{Ž·iÓF’´oß¾Ôck×®U\\œzöì™æÜ^½z)!!AË–-˪è9J©R¥­™3gjæÌ™FÇ2í÷ߥçNMQ\åÒã'òå¥[·¤c…‚¥Ê•å3Mü!ݸat2@nBÉgΜ‘$.\8õØŽ;$I5kÖLsnpp°Ìf³vîÜ鸀N¦sçÎêܹ³zöì©£GÈ”Åѱj¢ÕòîÝÅè(÷¨PÁöõÀA“’Â^Uýó‹U@ñ:rÄØ\€Ü…’F­ ¤y$66V...iJ‰di)T¨NŸ>íè˜Nå‹/¾PÁ‚ÕãΦ €HI‘¬³çÈjΣ<Ûç%JHîî¶Uº6–{Y®JVGÍÕáÃF'ä&yŒàìFŒ¡5kÖ(::ZÞÞÞ©ÇåvŸ‡OÝÝÝ•˜˜è¨ˆNÉÇÇG ,ÑQ€ ûé'éù«3uõ­T°`A£ãÜÃl–Ê•“ΜñW’[3½ž½_6:Ê}•/oùé'éÏàWô”õ7]ÚÎ,€ã0ò~üñGuéÒE!!!úꫯîyÝßß_)))ºpáBšiXIIIŠ‹‹S@@À}¯Ý¯_¿{~ó¦°°°¬û²T\œä»b¦=|äÙª¥Ñqî«BiêTéâEéÍOž×ÍÍž*µi®¤FG€lgöìÙš={všc¬dúè( aÓ¦MjÛ¶­j×®­yóæÉl¾w ©zõê’¤-[¶¤y6dëÖ­²X,©{¤gܸq Îúàì"9Yz±½Uߤ̔¥}{ÉÃÃèH÷U¾¼tîœíÏ [äÓŸQÏ«ÎÑ9¢€À½ÒûðöíÛUƒ5Ì S°2iïÞ½jÕª•Ê”)£¥K—ÊÝÝ=Ýó7n,___EGG§9-///µjÕÊqØ™Õ*õî-%­Û¨’–£òzó%£#=Pùò¶¯Å‹Ûž9ýt˜‚nþ®”={%IÇKë×ã1r—¨¨(ÅÇǧ®P£ãÇK’"""d2™Ô¬Y3ÅÇÇë½÷ÞÓ÷ߟæýåÊ•KÝ'ÄÃÃC‘‘‘êÕ«—:tè ¦M›jýúõš9s¦FŒÁÃÕ@1i’4q¢´û¹ùÒî¢RÆFGz ;Kñ>óŒd2I.­šëò$oiÒ÷ *­]k+"؃Éz¿]÷r¡Ò¥KëØ±c’$“É$ɶ)¡ÉdÒ‘#Gd±XT¦L™L¦t7+‰s† IDAT|íµ×ôÍ7ߤ96iÒ$;VGŽQ`` z÷î­ˆˆˆtïgHoÛ¶mLÁz€uëÖ©f͚ʛ7¯ÑQU«&•/kÑüÍ%¥Ö­¥¨(£#=Õ*Õ¯/ *µh!íß/ýVñ5u(þ›<íS`I“NŸ¶mNèêjtZÈ~øyíÑ1r—#ØËb±dêšááá ØHø/^TË–-Õ¹sgMœ8Ñè8È厵í|>¶ý&iáIéÅŽô·L&iÆÿþçR¥¤¾ Ók'§éØ’:yÒöééÓRÉ’Ædäl<§R¨P!7N_ýµæÎktär11’››Ô vžT´¨Ô Ñ‘2ÍÝ]:X¢±< éâ„©ÇOœ00 G£€ÀétíÚU;vÔ›o¾™¡Q+À^/–ž}Æ"÷˜R»v’‹‹Ñ‘JÉr®ÚüX¨Û°PU«ÚŽñ À^( p:&“I&LP¡B…Ô©S'%'' ¹P\œ´nÔí‰MÒIç˜~u?eÊHKÌmUìê~…×ß+ À~( pJ М9s´}ûv <Øè8È…–/—RR¤çâç;íô«;Ê–•&üõœ®ÉK!É È,€ýP@à´j×®­Q£Féã?¾gIdÀÞ–,‘jײ*ߪ…R›6N;ýJ²òÐJs+•Ú¾P%J0° œÚÛo¿­:èüùóFGA.’ ­\)½Y{§tì˜Ô¶­Ñ‘IÙ²¶¯û+µ•yÇvU+xŒ€Ý° /œšÉdÒœ9sR÷maèPéÖ-©Ëb©@éÿ0:Ò#¹S@<Ûµ”¸é—éËãýŒ ȱÓ£|À‘6m’Æ“>ø@òY»H ±­ÅëÄ||¤ ¤®o{KÏ=§'-Ô¥KÒµkF'äDÈ ¤$)<\ –Þ=,íÞíôÓ¯îh×Î6˜£¶mUäÀ/òÓY¦aì‚%íÛ'Mž,åù~‘m¿fÍŒŽ•µBC%“I¡Š¡€ì‚´~½ôÌ3Ò“Oʶ aÓ¦R¾|FÇÊZEŠÈÚ°‘^ÐBVÂØ9Vbb¢ÑÃ8 =þ¸¤sç¤ rÌô«ÿe~¡­žÕ=pÙè(€ˆ‚éâÅ‹ªR¥Šf̘atä))Ò¡CR… ²­ÁkµJ-[Ë>Ú¶•›’UxÓ2£“r r$___5hÐ@Ý»wמ={ŒŽƒàøqÛCè?.Û6è5kJ=ft,û(QB‡ ÖRÐÞ…F'ä@äH&“I_~ù¥Ê–-«^xA—/3•fÿ~Û× enI«VåÜÑÛTn«šVHLed1 r,///-\¸PçÎÓ«¯¾*‹Åbt$8±l‹^•8½IºtIjÑÂèHvu¾á Êk½.뫌ŽÈa( ÈÑÊ•+§éÓ§kÉ’%=z´ÑqàÄÊ•“\~X.*$Õªet$»ò®õ¸öª¢nÌ[bt@CAŽ÷üóÏë_ÿú—† ¢Õ«WNêÀÛ ¯X!5o.¹¸É®¥…*ÏÊ¥¶'ðÈ"ä ÿþ÷¿Õ¤IMž<Ùè(pRH5‹ÅJ;väøéW’T²¤´D­åzé¼âVl2: ¡€ WpqqÑüùóY–%1Ѷ VÄ•’É”óv?OGáÂRøÄ::o*¢ií–hút£r r ooo¹äði3°C‡lÛ~Y.Õ®mûé<x£›‹ò‡…¨½kŒ4: § €Àß8p@Ê£dùnËùËïþ/­U"aŸ¼NÐùóF§äøHMóý&óÕ+¹®€¨IYÜ=ªýþ»Ña9þÆR‡üË%??)8Øè8Žåå%S“&jc¦€²ؤtà€ôÌÛËïšsß_›¦6­U×ò«oº`t@ûþ%þGß¾}Õ§O£c »òçI^Ú•+–ßMWHˆL²Ê÷·eF'ääzUªTÑ—_~©¯¿þÚè(Ȇö퓞Š_!«Ù,5mjtc-ªs¥ë(øTŒnÞ4: ÀÙQ@ëuëÖM=zôP¯^½ô믿ÙÌØ±R[÷²Ö©+ùúÇ07›†ª©õíÛyÃè('G$7NO=õ”Úµk§“'OÙDl¬4{Z’šX”¹U.~u[á7B•O :7ç'££œäææ¦ ÈÍÍM/¼ð‚nÜ෼ƗžÎó«Ü’®eÙò»)))Z½zµ¨ÚµkËßß_üñG–\Ûž¼jUÒ1ײòZct€“£€·ùùùiÑ¢EÚ½{·ºwï.«Õjt$èÊ):Zz¯ÊrÉß_ªVí‘®—””¤)S¦¨R¥Jzî¹ç4uêT•+WN={ö”¯3Lí2™´«d¨*ìÿ^bÕ8À# €w©Q£†&Ož¬%K–èèÑ£FǦN•¥z——Û–ß5™úZ›7oÖ“O>©7ÞxCAAAÚ°aƒbcc5kÖ, :Tþþþ|ÿåË—úÞY)¾Q¨ '–uë6££œø;wÖ¡C‡Tºti££À@{÷JMÊ“ë?yúÕ·ß~«|ùòiçÎZ¼x±êÖ­+S ÍŽ;¨©S§>R†¬PðùŠSA]™É4,Àã€é(\¸°Ñ`°‹¥f–’‹‹Ô¤É#]k̘1Ú°aƒž|òÉL¿·B… zñÅõúë¯käÈ‘†N ¬V3–©•R.1,Àùå1:dG/Jõ¯¬ê×—||éZžžžý^///}ýõ×*Q¢„¬³gÏêÓO?ÍðJV*^\:W'T¾›fèæ¾#r¯È(! ó€t\>wSUϭβկ…ÉdÒ°aÃôÅ_hüøñ6l˜aYžÿ¢¹nÊM}oX€scÒQ>vÜo]—ZdŸý?zöì©+W®hРA Txx¸Ã3T¨‘_F.K—èòå(àð'Ç ×®]3:Àj•êÆ¯ÐµŤªU3ôž„„‡<ŸñÏþS=zôÐ[o½¥;vØý~é)Þ«µêÝú?}öŸK†ÜàÜ( @ùä={–QœdÅ ÅÔ¹BA÷]ëèÑ£Ú·oŸfÍš¥€€Çæ{€+W®èĉ¹WÒ*÷Py]8.íÚå{r†Ü÷k»Gpg¾¿»»û=¯yxx¤žãêêªÄÄD¹¹¹¥{wwwžÈ!úöí+)ý ख/מ-UX÷ÿž–-[V‡Jýÿ}vѺukåÉ“G«V­²ûÿ&M&é¯O+ñ¸·<—,‘ž|Ò®÷䌀d‚§§§$éæÍ›÷¼vãÆ4çxzz*))ýÕanܸ‘zœ›Éd¢|ä$J‡i“o *ôàS³[ù¤wÞyG«W¯Ö÷ßïû)æ¦E[H11¹ g`$îL½º3ën±±±*T¨\]]SÏMIIÑ… ÒLÃJJJR\\ܧmôë×O>>>iŽ………),,,+>€ûY±BrsÓzׯ*TÀè0™¢çž{Nýû÷W³fÍÒ­ÍJÅŠI«Ï†ªî¶—¤“'¥»瀜`öìÙš={všc¬dúè( ™P¬X1)RD[¶l¹çµÍ›7§Ù•¸zõê’¤-[¶¨E‹©Ç·nÝ*‹ÅòÀŒÇ§ààà,L C–/—ž~Z§.åSõ2F‡É<“ɤO?ýTO>ù¤>ÿüs 0À®÷+VLZ´¡…†æÉ#}ÿ½Ô£‡]Þ/€·oß®5j”(g` V&µk×NK—.ÕÉ“'S­Y³FÔ‹/¾˜z¬qãÆòõõUtttš÷GGGËËËK­ZµrXfpýºôóÏR‹ºpA\‚7;«\¹²Þzë-EFFêâÅ‹v½W±bÒÞ3emÔˆiX€ £€Ü%**JÇ×7ß|#IЉ‰ÑðáÃ5|øp]¹rE’4xð`åÍ›WÏ<󌢢¢4räH½øâ‹zâ‰'ôú믧^ËÃÃC‘‘‘Zºt©:tè I“&éÕW_ÕÌ™35dÈ{¦X!g±X,š5kÖ÷”A6³v­tó¦Ô²¥.^Ôß>’ 6L‹E£F²ë}¤7¤Ä&¡ÒO?IW¯Úõ~€ŠT¥J•²šL&«Éd²šÍf«ÙlNýó±cÇRÏûã?¬Íš5³zyyY}}}­¯¼òŠõܹsé^ó믿¶V¬XÑêîîn-_¾¼uüøñ÷½ÿ¶mÛ¬’¬Û¶m³ZoÞÌòÏÇY·nU’uРAFGAFõìiµ–.m½yÃb•¬Ö)Sl‡×¯_o1c†Õb±/³Þÿ}«‡‡‡õÔ©Sv»Ç¯¿Z­’ÕºoÅ_¶?ÌŸo·{@v‘æç5<ž¹Ë‘#G2t^¥J•´råÊ ®ðððÌùóOY_xA'£—jKbK¥Jeî0VÆ 5vìXõïß_þþþêÓ§Ñ‘ð V«íùV­t1ζªYá¶ëºvíª"EŠ(,,Ì©V<{çwôøãë±Ç³Û=г}=j*­Ç«VµMÃjßÞn÷ä lèÏkÊsÂG>-[ª·6ÊZ4@Û·KéìˆlìwÞÑéÓ§Õ·o_-Z4Í3BÈföï—ŽM~%Ù¦` >\GŽÑ¢E‹d6;׌Õ ¨sçÎv½Ç¿“N’Ôºµôå—Ò­[R.ÜqÎõ/j.P!ŸÖ½·LE [uøñ–Êg½ªŽ¥Û›¬Ã‰Œ=Zaaazùå—õóÏ?÷³b…äî.ýã©äÂ…Ý5j”¬J•*›/›rs“й]@BC¥¸8é×_ŽÈæ( ÙÔ{d1y®]!Ï3Gµ¹d{mÙ¬N†Ì2›Íš2eŠ5j¤Ö­[k×®]FGBz–/—žyFÊ›÷vIÑþÓMåË—× AƒŒN—­+&>-©F Û«aeÊ´iÒªUF§Ç¢€dgUªH‹©à޵ÚÜ]Ÿ|bÕÁƒF‡Bf¹¹¹é»ï¾SÙ²eÕ¡C¥¤¤ w»vMZ·NjÙR’tá‚d2EkÛ¶Mš8q¢Ý7ósvÅŠÝ1›m£ K–Øž©A† *Mšdt p, Hv÷Ì3Ò”)ª²eІ™>кuFÂÃðööÖòåË5{öl¹¸¸wûé'))IÊÚ6 =|ø„¬ÖAzë­·Ô AƒÃe©D²Ç¥½{ Íä,.^”Nœ¸=‚¹Ä¼ô’ôá‡ú·õß2M›jt<¤¢E‹ªzõêFÇÀÿZ¾\g¼Ë«FÇrºzU:zô/¹»—×G}dt2§¦€4n,yy1 ë>:u’Þ}÷¿ÿyçNÛW €Ü†â, ÒúJoê•õÝÒ0ͬ5¹ ÄY˜L:ñÏ/ôƒšÉÒ®ýu&Éb‘zõ’ÆŽ50àŒþüS.'k¹ZªvmÛ\ü‹¥Â…g¿Œºzõª^ýu}ñÅYzÝbÅl?<Ÿ9sû@h¨´iÓ] Ùþ~6›m«=Ÿ³„-AnûüsÛ£1C†H*Ø ÈõëÒ¾}R«V¶sx@nBq"&“T¿¾ôãï~Ò?HW¯J­ZiÛÏWååe›±{·Ñ)‘YñññªV­š†jt”ÜåÊyïZ¯ßZª~}Û¦z¯¼b{)'Ž€HR™2eÔ®];}òÉ'Y¶tž<ÒèѶGÓŽ³ ÌVªçô£íʺ‘guõªôÕWR÷îRþüRƶ²gmúl Ûâk¹ ÄÉÔ«'mÙ"Ý,Vƶ{óziá zéÅ$¹¸0 ËùøøhÀ€úðÃõñÇ'×HˆY£<Ö[*Þ­…L·ùèÚÕöµHãrÙ[ÿþýuèÐ!ÅØs¥ªÖ­å©òüy…ýî‘ lÝú÷/_.]¹b{NO’5²•5k$)8Ø6âF›P@œLýú¶·o—T­š.»D5¯¯Ó ý¯ªRE‹~ÿÝè„x ÐàÁƒõî»ïjâĉFÇÉÎM[®½*£¿m©Óß*W––-“^|ÑàpvT§N5lØÐ¾e·|y/TM•ÿ˜k¿{lÓ&©V-Ûïî8~\*Qâö6(·nI?ÿ¬‚¼­?þø=ݼy3õ¥–-%oo³9À€´aÃýöÛov»Ç‰ºÕðòR¥\¾vÏk‡Ù6àsf³gÛ¾Þy \’V¯¶=p¾éß+¤  é™gTuß<%”}Â6÷ªNyØ«EzA›Oú«÷TÉj¥€Èu( NÆÕÕ¶×Wt´tíš­ˆl h'}ñ¥šíÿLM·¤,šÚ 3™Lúì³ÏÔ­[7uíÚUÓ§O7:RŽeݵ[Néû['-£#9THHˆ¾üòKÙí–ö”W‰º0ué=¯½úªÔ¯ŸÝnmw‹4¾íÏw‘¤«/h‘Úèµy-e Ôá™`9©øO§ØžDŽ–içNõo¹W1 Õ›^—Ú¶UEßs¹ Ä }ú©m‰ý÷Þ³ýãW¯ždêñ–wù·þ“3:JŽU¼¸´Ø­£ o]a{ û¶#GlË…>ì¼'Í™#Jï¼#ݸ!ž²N–§ê*!ÙMëÇlÒÚB/jÞ|“V®”ž~ÚöœÇÝÚ¶•^~Y*Û¿ôÛoòL¹¦i±ÏÉrî‚1Œâ¤ÞzKjÒDJI±€HR?“FøGiOÅöRX˜ôã’¤>&N”ææÜçAs³Ù¬Þ½{ËÍÍÍè(9Îÿ-Y¢'®žÕŽÇ:©L™ÇŒŽ“c™LÒ®Š”çÖMiÉ’Ôãw– ON¶-ÛëlnÝ’,:tjÔ¸nRÙˆ–ºP¼šêiƒju(­¶mm®_oÛ®é-*MŸn{žOeËjÓˆ5òÓ9¥<׌͜ä 'e6KÓ¦IC‡Ú–q¼£j5 -9]zöY©MùM‹ÙÖŸ>\<‚\íêÕ«š®<’ü^4:NŽWð‰ú=ýÿ>±-i×.Û³l’tà€AÁÁÏ?KçÏK;JnÿÐRkKý•ÿIýÇRù–öQ±b¶rrü¸mÅÂŒÌðó®]QÏéG™ìsî‡c ƒ( N, À6º‘'ÏU«&mÝåfû]Ê×±¥jäù] ØvÝýî;ãòFûóÏ?õôµDíVÕëTÒè89^P4-ù%YW­’Ξ•d©__rwwÎ2¾T¦ŒT£è)©iS%,®\—ê§yugÆä3ÏØ6³,QBªXñï¯ íÖúãÍϤI“ôiý;Ö¾ŸŒDÉaêÖµ=õM^%/Zª)eµÊÔTMKT“&¶Q‹Å蔀1êÔª¥Væ¼Zãñ‚ž|Òè49_P4õFGÛííQ]»¤'Ÿ”Ê——öï78`&Y­¶}?Ú¶¼)Sûv’Ù¬Ýc~ÐÞ3µm›R Hž<¶_ ¬ÔM.ÄÏÏö_ÑÆJoèzÈ‹zmC7Íu\ÉÉöý<` H"õï/õé#½ØÕ[Ï&¯”›!©I ï~B»wKßotJ< «Õª={öÃ9mÙ¢|×ÏëhåV2ó·_{÷îÍòkI—ä«óuB¤éÓuýºtð ôÄÒã;ßȾ}¶ýKúê#íÜ)-\¨à–E%ÙÊÉÝkFôìi{V/#òä‘{L:kÒôuUùõÁù·´|¹>düœÃ˜L¶²Þ}×öÜgåF…å±îGÉlV=§&OœÓÌ™F§Ä£X¼x±ªU«¦™|#3oéR]2ûÊ­ÑSF'ÉVÖ¬Y£J•*iÇŽYzݲem?\o ê"mß®¿¾ÿCV«TµªT¡‚ó•+¥îy&«Äʯ¥/¿”jÕR‘"¶Ñ_ߌM·ºŸ;›Î^á£iÕÇ«¥VhLJ49$2™¤Q£¤É“¥¨(IÅŠÙVĺ|YÓÏ5Óo+âuׯÏp2¡¡¡êÒ¥‹^yåMžÌž/™‘³LË,-Tµzž¿?9yú駨ñãÇgéu]]m?œÿàÒRòõ•eÚt™LRåʶrâ„týz–ÞÒ®þün¯ÆYúHݺIo¼‘z¼S'Ûƒ2ª`TY¿^òïÑF§o¬°-oëÔ‘¤,HÙ $‡2™lÿ>V­zû@¹rÒªU*|ý˜æ^k©_V\54ž‹‹‹&Mš¤·ÞzKáááúâ‹/ŒŽäþŸ½û‹âzÛ8þ]Š Š"XѨ¨( Šb±DTìkl˜h4ÆòK¬o{bkÄ;X±ÅÞPl¨(j±cT`Þ?ÆFÀ‚ÃÂó¹®\ ³3³71Á}öœóœðp OÀŸ†²þã?ŒŒŒèÛ·/¾¾¾Üz¹X<¥T©«ÖgáYó¶ÜûöÅâ03S§`\º”¢/—j¢<£Ïv<ÍýL™’à¹_~yùaÏg(PŽUw7m¦#ç©ãÁßNÿ¼ !D:$Hfâèˆáö­”Ñ¥`ŸFúõÑ£HÀÀÀ€?ÿü“Ò·o_ÆŒƒ¢(ZÇJßüý‰70d—±ÛgM•ɨºu놑‘³gÏNÑûþü3<~ Ó";’ëIíòêèÏBô›Ý~ÂA9˃?—½ÜÀ#eÙØ¨5kBîܽJv—ìMå­¿ç^Š¿žBèx«; IDAThI LFW©"ó[n¦@Ä1”&MÔm|…^ÒétLœ8‘_~ù…#FàííM¼´8{mùòål|»ã‚¿?!y¿$iKdÇÄråÊEÇŽ™9s&ÏRpŽfÁ‚j÷½!«+qFW†‘sµM­¥¥ž¬Ù³‡"«'2!ÇxжpN•—xU€´hñæXößFa Ärí»”'„Z“$rêYŠ?ʾýêßvÏßÌ1þ˜Ñ##õçSËŒN§Ó1bÄf̘ÁìÙ³9uê”Ö‘Ò…‹/Ò­[7Ö¬Y£ˆŽ†€¶Éô«÷éß¿?7oÞdåÊ•)zß¾}¡‚‹ŽÙJJ^X7oz²ýéSèÚ•cf_q½åÀj«û)œœÀš7s¬RÃ<¬ÌÕ‹¼+¦ÁÇ©óÂB¡)@2¡5 (gMþjµvìPWP¾xÁ”)ê¼ìÈÈ÷_ÿóÏРAÚd§wïÞ\¾|™råÊiEs111xzzbccÃôé/çÏïÞ QQøÜöä=J•*E½zõ˜:ujŠNé34„¹s!ÐátÆF°p! '­xú åÆ <£æS·^êý•Y±"Ü¿ÖÖoŽétð¬ß _Äõ²D‘qH’ Cýú0ñ”+Êß«ÁϨ1,Žøá‡÷_ü8„†ª*‹ô£@ZGH ÀÙ³gY¾|9Ù³gWúûó¼@aN>/…Ôhï7hÐ *Uª”¢Ó°Ê•ƒýgs¡kÝZ­FâãÓÿÈþý0mW»ãÅqpHÝ—Kjt¥yŸüøtC7u²º˜F!2)@2©Î!(~Ü×V¬ÀÄïoæ+]ùuB<óæÁ®]I_§(êNÆ—/§Y\!>ÊÂ… ™3gþù'åË—W* øùqµ´ “puueÆŒ˜šš¦Î ôè¡~‚±s'%J¨Ÿúß¹“:/õY¢£¡K¨R…ƒûP¤HÚÇÈ›‚܆`ýeVÊ6B­H’I¹¹Á¤Iê~!Ö4£ò-Ÿ-eÐ¥^Ô¨OIp\½ ©_‡„¤id!ÞëĉôîÝ›®]»âåå@|<< ÐÍŸÇz›Þ\»Ï’%‰¯ RŒ¤Ñ'3øÔÇÓ¸qcJ—.ÍomȰx1ŒÿÊŸg†f,­)£éNýúÁúõ%øç­C¿?äÈ¡NA-óäÖË'ÃèÑP²$W®h3úñŠ«+¬-Гˆk„LÚøá „"“$“=æÍS‹ƒÎaÁ,VÍeYŽ^HÜÒ5(Hý„ÐÉI }ñøñcœùñljˠŸžš››3vìXÖ¯_OÖ¬Y_?tšú±ËØ•}ÇLeýGzѱ#XX ›>š5ÓGrþ<Ô©CÄàC®Z¹Àwßh^€”}.œÎV…‡üÁŒÚeBˆ” H&§Ó—-úò@§N°`Í#çá¾¾—:‡å-AAêbÒâÅ¥ÑÙ³g§wïÞüúë¯4lØ{÷2æ¦f;vL´ÿúÉ{TŠ;@I,]ª~ð.Ò33èÝæÏ§nŇ;¦v»ÕJ\œÚZ¼dI`Ô(lŸ‡2ÂvúÎí €Â…¡ÔŒ~ÔQvðgŸs¯§Â !„>’D$Ö©š. aÄ<èÙ3AeËB±bpé’†ÅGÓét|ÿý÷lÙ²…cÇŽQ¡BŽ?®u¬T§(Pàô ”xŒ›4 }{È—OëTâµ>}àÙ3DÌ#6V­ÒÊ¿ÿª{²Væ0üþ;{ëüÌÖëjË«ØX¸~=å ¿þú KKK *„››“'O&äŸêµmÉsË|ôáùý+„ÐkR€ˆ$ŶïDg¢ÌŸÿºyôHm^S¶¬:QQZ'ËÕÕ•ÀÀ@òäÉ×_~‰Ö‘RÕ­[ൎH;—7ÛL‹O’’{‚¼–??xz’oùT¬­^h: ëüy0!† Ó;C… Üï:ˆ{÷àî]µøˆ‹KùÄÉɉ!C†Ð¡C~üñGJ”(A«V­Nú¢,YˆóêIGsõtÆ^×%„ÈØ¤Irp€%täÂÐ…ð²9uR yU€€Œ‚è›B… ±wï^:uê„——Ý»wOñýÒ‹àÀhê³™¸ÆÍ´Ž¢×~þùgZµj•:7ÿþ{tׯóÓK5/@ÆÂèz(,\ˆ}i#@–uåŠzNJ ŽŽŽ 2„±cDzuëVîß¿GŽ¡L™2Œ?>Éë²öë†QdY¿*e !D’D$©X1µÓÕ®‚aÑ"˜?Ë¡=ÈbO©Ro Y¢LMM™={6óçÏçæÍ›k)Y>¶`z².€ì<%WW)@>GÁ‚Y³f —RãÓ''hÑ‚WáØÁhU Çì9Œwìïè~þ(VL]wþ¼Z€ètP¨ÐÇßïÚµkôìÙ3YŽ™™]ºtáâÅ‹L˜0š5k&}bÁ‚ÉéJ‰ý{S‘±I"’”% ”(çÎ:À¢E”<èÃJó®d1Œ#wnÈ™S }ÖµkW6lØ€~üP…Ÿ~ú‰¯¿þš/^|ð|Ë=k¹bba™Ri.ãòôôÄÒÒ’éÓ§§Î üï䈼†ç³=š:/ñ^11´ÛÖ™+–`Ð ²fU}¿±±“»]@@*T`Û¶mܸq#ÙqLLLJLL ß|ó ãÆ£Y³fµ‰¥tèN•ÑÏ•5kVzöìÉ‚ x”­—Ê”Ai݆º1ìÛ¡ÁȨQXG‡²Ís¡:ìû’½ý›~µpáBÜÜÜpqqáøñãI¥ÖYj5åÎ.L•û !Dj“$NŸ>MõêÕ9}ú4ÞÞÞL:•ªU«2jÔ(<==_ŸF5 eüøñ 4\]]?ê“ÛôÂÁΞU¿~ö &F´cSǰz5´iC©¢Ï¤©îæÍ›Ô­[—5kÖ°råJ½ü”ú}”½û°ˆ½ÇýšR€¤„o¿ý–èèh,X*÷7øß( (Ἐ17M6ú~üXÝàŸP~ÿQüLî Î)YR=çêÕ+@f̘A—.]èÖ­þþþXZZ¦Jv€¢¦,S<‰_´XvFBè'E|´aÆ):N9wî\‚ã:uRt:òàÁEQ¥wïÞJ¶lÙ”ëׯ¿>' @ÑétÊœ9sÞyÿãÇ+€rüøñÔù’iùrEE¹{WQ.T¿>^Q”%KåB±Êù¢\§(/*J|¼6™EÊyðà²~ýz%^Ã?Ì-[¶(yóæUòå˧åÐ!èÞ]+]¢¬X¡it‘V­ZE“&M¨U«GŽIÓ×ŽŠŠbàÀ¸»»ãììLPPUªTù¸‹ÃëXGSJ;ʯ¸”2`À._¾Ì¦M›RåþyçOÀÄ(Ž? #%»þÞº›7¿ùþÁXºDaêS/žEF±©Ý_(:Ã×5^)YR\¸{÷ý# Ë—/ÇÛÛ›~øI“&¥ú´ÆÐÐP zÎ1\xhëK–på L›–ª/+„)JþvN†®]»’/_>¼¼¼ âúõë¬X±‚Y³fÑ¿²fÍJxx8wîÜÁÅÅ%Ñõ+Väĉ$ÿ4Å‹«Ïž 'O‚·÷[OººrqÊf*s˜Ë%êS¯ê#víR׫»¸À¬YšÅ)ÄËˋ͛7sÿþ}*W®LýúõÙ¿š¼¶¡¡!{öìaâĉlÚ´‰|ÉÙA00¬·ÿÅ߸E‹¦^ÆÌ¦J•*T®\™Ã‡§Î äÍËõ^cizwG¦§Üküþ;4l¯b/Z=žM§)ëénàÞ˶.¬.<›½ý›¯ßW€T®\™‘#G2a„T/>ž(_¬¬Ô©UI)\Œ«T€Ý»áæMøê+Lo]£S'µCdÝd;S200 Q£Flݺ• .P§N÷žÿðáCbbbˆ‹‹ãéӧܺu‹C‡±téRú÷ïÏâÅ‹S<ã!pö,sî6£V­¿½H5¨Ìä\£±öÛ¶}Ö½vîT‡ ƒ~ßDÒsSc¢sb±e1dˆ:ÍÔÉ)éëK–„/¾PÏI/t:³fÍÂÈÈS§º³Õ²- ØD±ÜÔÎ^B¡Œ>|Šxeß¾}8;;ccc“àx£FX¸p!'OžÄþåÄለˆD×GDD`eeõÁ= ¼½½±°°HpÌÓÓ3A«ß´òý÷àåÙ²}àDGGØ·\]¡zuúÌÚÎäÉ%Y°@ýôðüyèÕ ÌÍÓ$¶He%J”øà9:t`ãÆI>W¤HìììR4S` ¬¯»–!då›Ån4ÿ&Eo/Òˆ¡!ÂöA{¨Ûî OT»[|‚€µ¸MöGL<ç΃»—‚Vj‹ÜâÅÕVãïZ+ôÓOð { ¦ºµoo(U z÷†øx­ŠŒÆÇšéÖ¡©ûԽ׿?|âHŇ;àÚ5šÏ¨ÃÁ¥—PX¿^=oîܤ¯?5û G©HŽè›ðÏ?Pµê'gyúô)-[¶dÈ!Ä¥“Ç-, @kzö¼È—¿ýŠN‰çë§Hbö¯B¤?wáÒ;‡VÜÝÝ•9r(Y²dQJ–,©Œ?^‰‹K¸ãòÙ³g777%[¶lŠ¥¥¥Ò¡CåöíÛï½w†kë£(-Z¨Û /Z¤ìÙ£¶´|ÏfðB$[\œ¢)¢(Áùj(Š»»Öq2˜˜eĈÊž={Rí5~ýUQ† S”ëþAÊ¿FE”h£lŠòçŸJà±8¥AE16V”;oož~ó¦¢ôè¡Äa œ4ÿRýþ3uïÞ]133S‚ƒƒ?û^))4TQž>U¿~êRCñ£²s§¶™„È 2Üû5 È"ôdªT©›ßÞV÷ÒÕp½&LLÔ-Ñ{ö„N¨1%’Î0p T©¢®[âsmß1Wn`¯Û ­çk'ÓÈ’% 7näàÁƒï\×ö¹~õ•ãŸ"ïïƒéÖ§…,§0Áį> ©½='ë'áUö·—l%ûÖ¿yoÄÿ˜ˆeÿo)›/ËgeX»v-sçÎeΜ9”Lª_¯†ÞÞ 1KÛæÔ=ö|HíÚ9µ %„A¦`‰Ôeh¨Î‘<¼½™ÿ³ShÒîÝS{ð¯] GjTè«Ù³a€Íß`dM›j'ÓÐét 6Œ€€Ž9’ê¯×ºkvº¿˜ÉÎ_ö±—êôŸJ9ý¢$^ã‹AÛ¶ÜÙt„e–ý˜ÔûÎ ½8äóŠððpºuëF³fÍèÖ­[ ý$©Ã¨usLxŽñ6­£!ÄI¬t$ÃwU˜0~ü‘GûRÜ ¶_rÿ>\½ªŽ†œ:¥u@¡rç†ÀlÕ)äh~~ZÇÉTâââpppÀÁÁµkS¿óXåÊÇÃÊÅ1´²?űýÏòÝs.bKS[|}!%öKŒ§^½zsêÔ)¬¬¬>ÿ¦©ìB®ÊÜ1-Hõˆ¿µŽ"D†–á߯¥igèP˜=›Kgp¦tn„Æðå—0v,œ> ÿi.&Ä=|Yï]§Ð¿û¡M­ãd:††† :”uëÖqæÌ™T½öíÕâÃØÜš˜B¥J”ð1ÕêШ·-«V¥Lñ0yòdvîÜÉâÅ‹õ¢ø¸äØœò·6CT”ÖQ„⽤i«GX»–ØcîI^`ï¤I“×Ór '×øˆí3ââ¸t FŒ€§Oµ(Ò›¸Å5Jí¯µŽ"ô\ll¬ÖRLõêp8O# ?¼G®G˜?¾Ö‘„")@Dºa‘KGõ]£ék4 ƒYñUk¾ªŘ1ðãZ§éJl,Н/¾xR´¸¡Öi„;tè¥J•"44Të()ÂÀl:×ãF w®ÀäÉ“yñâ…Ö±„")@DºR¾Ò:•HkgÎÀ±c(»ŠŒ€¤s4kÖŒ~ýúqûöm­ã0kÖ,®_¿ÎÚµkÉ–Á×FdiÑ«ç7y°3Pë(B‘€ B¿ôèn˪éR}È—píšÖ‰DŠ·€9sQ¾!ÑÑR€èƒ™3g¢( =zôHS±¾ÿþ{æÌ™ÃúõëY´h‘Öq000 téÒZÇHÖ¶FÏ[Ÿì{dˆ"}‘Dè¥Ü_•ÂÕü°Úo²F HolDêz±b –ñwyئ'ÎÎê½ ú¡Y³ftìØ‘þýûËži,¾A#Š? $òL8þþþ4iÒ$]ŒD !27)@„^*WÎÞÎÃÍ¿v@‡й3 ±±Ü¿ÑѾÇܹpéRªG)äùôÙì¢uû–dýz SS­S‰5mÚ4&NœˆµµµÖQ2•²C܉Åà‰›033cÆ ìÚµKëXBˆLN ¡—Ê–UƒÎ›¨•Äôé0}:±uÝùÊávv0k¼x‘ôõÏžA¯^àã“v™Åg&Û±=Ì¢ööZ‡Ÿ"gΜtïÞN§u”L%_É\œÉV£[¨U«¥K—æ?þÐ:–"““D襢E!{v t:èÛ¶oçÙ‘“l¼]‰öeÏðí·P¡<žøúµ3å… i]|ŠÙ³yš-»-š‘;·Öa„>xøð!ñÒ~€[Îî” €±ôíÛ—õë×sMx!4$ˆÐKàä'O¾9v¹PmÊÇÅ,ov~ÛW•3cÖqú4lÚ”øúà`õQ =‹±«ˆEKfA>@AÍš52dˆÖQÒ…œ­ÝÈ¡<âêŠÃ|óÍ7˜››3sæL­c !21)@„Þ*WîåÈKƒC´urœÚnn8üÔŒ™ùaɢğ‚¾ÚÄðÒ%ˆ‹K£ÀâÓøúÂÇøv—éW⃂ƒƒ©Zµ*wïÞ¥sçÎZÇIœ:—ç.VÜùk+Ù³g§k×®Ì;—èY,'„©@ ¡·Ê•S ‰èhX·Ö®…ÿû?0Ë›V­‚Ñ£é1ŠoÖ·âÞµ' ® ccu-ˆÌDHŸNž„+¡ LŠÒ¨;¯%lÝ)=yò$E¦KmÛ¶jÕªannΡC‡2M»Ý137ädžzä:¼€>}úÉòåË5N&„Ȭ¤z«lYuǬYàé Í›CÛ¶/ŸÔé`øp,\G]eT«¡¡¯¯ †ÚµÕ¯eVúÔ¶-Ìn» NŸ&²£7"# ¢(´mÛ–&MšððáÃOºGLL ÄÍÍ*Uª°oß>lmmS8©~{RÝ »Ǹ*C‘ IDAT‰¸ƒ®®®¬^½ZëXBˆLJ ¡·Ê”Qׂ|÷T­ ýE¢õš0´æ!¢îE©+Ò7mz½øÜÕ²f•$=ºsGýs©~l qeœ8“» HF¤ÓéèÓ§{÷î¥T©R,Y²$Y£!GŽ¡|ùò̘1ƒ)S¦àïïOΜ9S1±~²éT®ÍÛ€kÖ¬Ñ8•"³’Dè-33pvVÿY·îÝ{BÔêSÇgÇxâü4lÈCïQ<‹Ž£ti(^\ ôèÀ(F ?NÖôæÂE²ñ`FU¿~}‚‚‚¨^½:;v¤J•*Ì›7ÈÈÈ^kiiI¡B…8vì ÀÀ@þZKŠsƒüœ2(KÔÚ­(P€,Y²hœJ‘YÉoj¡×¶n…ƒ!GŽwŸÓ¨Ó‚ÿ«ºÆŒÁâÑøáAéü÷±·—$=:p†e›F¤anf=ôäüy(RLL´N&RË_|ÁÊ•+Ù½{79sæ¤gÏžäË—V­Z½÷ºbÅŠ±eËÓ(©~26† …Ý)pv«:wU!4$ˆÐkVV~Sjj -[²å(Ã~bM÷-Tä(›U VŽÀ.@ž?‡Oœ¢.’éìî;xÆøp¢Ê·¬Ûbʹs2ý*³¨Y³&Û·o'<<œI“&Q­Z5­#e† ܰ|~‹ÇûOiE‘ÉI"2OOu úÑ£°%¾JG—;7=WÃí†ø#GBÍš©Ÿ53¹u+ñ±gÏàËãÓ00Ô‘sx?îÞ…€¤V&cmmMß¾}8p ÖQ2ŒÊß}ɲqqÚ­£!29)@D¦P«X[òej,‹²_ÀÞ½Üóè„^Ätì®öó}E¿ÿ†³gáÅ‹´Ë‘‚Í›M!_ Úûˆ^qp¿eÊ»Z‘7/ÄÆÊˆŸ«@‘,Y}ÑŽ­ZGBdrR€ˆLÁÐÚ´+Ô7¼¥J¦¦˜.œM|È忪T‹“¼þ¸|Y}#üï¿i›=£:xPŠ~ð`ÂãÑ“g‘§XýCChØP=.ˆŸ/®®‘û¸{å#†}…"•H"2víàæM¸ÿÍtž9`‹uæz†˜µU¯¯o¢kýüÞ´ø½t) Cg`'OªoŒŽÆiÇ$¶çï„q်HÖ¬ {Ê ñùJçŽ1±ûm×ëc±±±øûûóüùs “ !2)@D¦Q±â›6®¥J½9noÿV¯žº/HîÜiPˆ Ȫ’7²Úñlý›u /^ÄÃÃõë×k˜L‘™H"2 N­-²dQ÷ÿxÅÞNŸ†(CsXºæÎ…E‹ÔÝ /^$2ö탦MÕV°2òù^¼€3g pau$$6xú”¸1ãXD'J6*žàülÙ4‰)D†ô°ª;enlåÆ õ{ªU«Æœ9s´ &„È4¤™ÊС°¿Z„¼R±¢º¸Ü¾ª¡ãbnpø°:R¡Á£–§®E(VL ”pá‚ÚíªKõ_ó… ÀôéèD2Îp$ÒyUˆÔS°›v„²oá›_f=zô €ÐÐP “ !2 )@D¦bf.. yy©ŸÆO™!!0màôrJV£FT›îÉjËîØæzŠÝÇ Šóæ©o´EB¯Ötê¤>žÞû~ý?›©]˜œ95‹&D†—½QmžcŒnë›iX­Zµ"GŽøøøh˜L‘YHò iܸ1VVVdË– GGG¦OŸžàœàà`ÜÝÝ177ÇÊÊŠŽ;r÷î]‹÷ÑéÔÎß~ Íš©»«`n΋…Ñ?Û<</ƒ ¨jz‚ÐÐÛHøìYèÞ¶HËýDNžT§³}ñ…º.'×ÂI(ÑÑôF“&Z§"ƒËž‹yªSàÌ›v¼fff´k׎… §a8!Df H2mÛ¶ªU«r÷î]FŽÉ´iÓððð <<üõ9aaaÔ¨QƒÐÐPÆÏ Aƒð÷÷ÇÕÕ•²‰Dºææ¦Žp¼š…°c§ŽéO½ñ=ff´™\™oŸM"üú‡+ë×ÕÇwtöÍÔNžggõk×RaÔ8:‘ó®ýù7ֆƵÍ&Dfp³œ;eïïD‰y3DÛµkWÂÃÃÙ¶m›†É„™‘ÖôÉ£GèØ±#5âï¿ÿ~çyãÆ#::š'N`kk @¥J•puueáÂ…tïÞ=­"‹dúúk02RGAz÷V;òÚÛƒCó’àqßþÄ$Ÿï¹ßr+l\¤înø¯jR)@Rµ–··ú}ß°¡ówÜu[1½¤®ñ÷ç½ÂÂÔÇ´É®/ÂÂÔ½XÊ•¢ôÉ¿¦Œå¯9dú•iä‹FND`Í£Uoæˆêt:† B¥J•4L&„È ¤I†€€räÈÁõë×±··ÇÜÜœœ9sòí·ßòìåJãððpîܹƒËW:+VäÄ«ÍDºåæ;wÂÚµðä xz¾y.K¸ðE=&v<•*‡ôëÇ£›Q8;«ë>^yU€ÈHB¯ —sŠoob˱€.ÄÆ"Ó¯„H#…‹èØiäFöý[oß¾=?üðÃ;®Bˆ”!H2„„„KÓ¦M©_¿>kÖ¬¡k׮̚5‹.]º@þüù]Ÿ?~îß¿/ë@Ò977xü~üQí˜U<á–+AyaãF˜>æÍÃÐ¥&'±oß›óÂÂÀÐ""Ôû ÕÉ“`i ¶ÛÀáÃMŸBÁ/ )Tè娈"ÕÀ…Ânä8Åë A„"H’ OžÎ«w/^À³`l 'ê‘ß~«qX!2™¢•rs\çBü&é.„H[Ò+lll8wîùòåKp6ád›ñ|Å^L£î±0¨5výüzmÈmÜ ÀŸÂÓ§iôC¤«W!&Ô½UJ•TÐuó‚ØX˜?_|¡1KK·©D´INØ"Ó°„iG d(W®]»veÙ²e´mÛ–3fкuk–/_ÎàÁƒ±~¹)ݰaÃ033£víÚüñÇŒ?žV­Záääôº[–Ð_Y³ªS‰-R×?9sB½zêó—/« ÐRø§8Rs0]nŒAqv†^ß'2:vT[φ…Á€P° üw«˜§OÕ÷ìú&8X},õjðgæLµÚZ°’è'„H{NF·tU7?úk×®Q»vm.fÖ9¤BˆT#H2Íš5‹ÿýï>|˜Ä”)S3fÌëslmmÙ³gvvv :”ßÿ¶oßþÁõB?têçÎA` :sÁÅåÍÔ¬WHž<`jaÊ­¾c(O ±¦æP½:ôéÃÓˆGÔª6¨ïǃ‚ÔëÊ•ƒÑ£¾–››:½ëæÍ4ÿ1?Kp0d϶¶¨½w¿ÿ^]îá¡u4!ÄKUªÀÒ;î(‡«;„¾%_¾|áãã£Q:!DF%H21räH®\¹Â³gϸpáýû÷Otžƒƒ[¶láÉ“'Ü»wÅ‹“'O ‹Ôàê ÖÖê(ȱcP¡˜›«EÇ«ÄÖV=·D 8ƒ#‡'€)SP-"ÆÎ’Ö³w/tî¬ÎFúâ èÙΜë×ÕkÃÂÔ©^.ÀW_©ÓšôEp0”, º»wÔ!#øí7­c !Þ2t(èÜÝÐÅdz퇀Ï™ššÒ¾}{-ZD¬>à !Ò-)@„øFFо½Z€\¿®Ž€À›½o vvjqñ²!ôïÏìþç8]–Ïšâ8ªy‚ªÂÕUmüj:¶ŸŸÚ˜æÐ!uºW•¶?ë§:wíŸCË–êú—uëÔùkBˆtÃÄþ\oK„UiÂæo! a ‚——7oÞdÓ¦MÚBdHR€ñ‰:u‚GÔ¯“*@ Peͪ®íؽ¼¼àÛ …Ø?Ô–/‡Ã‡ÕE?ÿ ÑÑXZªS"6oV¯Ý°AùpvV»Ö^¿®Ž¤wŠÁç\è­öâ]½Zý— „Hw Àº“;õ ¶²{—’à¹råÊáì율ùŠB|)@„øDŽŽja`i … «Ç’uÖ’%êìÉ“aô˜—»^¸ ®>;V¢´v-õÝàÁعS]¤P¦ŒúøjqwJ ÿô…î/÷×L â†ÂˆÇƒ){ÌæÍƒ/¿ü¼€BˆT¥«ïNþøÜÛ“ø///üýý¹©o Ñ„é– B|†_Uk‡We‹U‹ß½›°:&M‚ÐPµÞx½ßWöì0a‚:¬Qª4oNÿ u)þø8?¿ìÜÛ¨‘zj¶lê:‘”.@={{µ3nr> ¹sÃß'<5|ƒ˜ÈíáÓÔV_Bˆô­zuž›a}r JÂAÚµk‡‘‘‹/Ö&›"ÑDˆÏP·.ôêõæ{;»7_¿]€Ô©ªõF’J”ظó§Ç…ÊS=q-zùuw-Pk”sçRôG`Ó&µÕï‘#É¿öÇÕkúé劢À¨Q[8œÿþ‚å¨~)V‘:LM¹_¶6ÕŸn!<<áS¹rå¢E‹,[¶L›lBˆ G !Rл ¢Ó‡ºS§˜We_)ÿ°éj)èßnßÔYZyôèÍ’±fúxêTòâîÙ£ÖLC†ÀÅ‹°lIœÚf÷—_X[e«KÇÈ(y÷BhǤ±ÕÙÇÉ}O=7aÂvíÚ¥A*!DF$ˆ)ÈÚÌÌÔ¯_-BO6##²ð¢8!„uÿ/V™ @…|a„†&½îâ•AƒÔÕ/\øðKÅĨ# ¶¶ê,°¸¸‹¨(jááâãÆA»°éÛ eöl˜7i¦Cp(-; ¡O,Ú¸cÂs®ß蹂 ’+W®´%„Ȥ"étê: ‹÷L·ú-[Š f|1s¨ºpdÈX²„¶?ef|®î¸œäugϾYËñ1Óµ·oW§Pýø£ZŒ„„|\¾µkÕ^ÿ÷`p2Ÿ òTˆÚ˺.xÑÑ‹sçÞÚ]¡tÅ‹‘µ(9nÑ:Š"ƒ“Dˆfg÷£/©‹Ïu:Ô6[£FÁµkÄ CÖS¢Q hÕJm“õÖŠÑ!CÔ…ê;«]·âãßÿ:kÖ¨›¶n­~ÿ±Ó°V®„/]žñõ¾_ jUL¬-Ý4æó’3§:cL !ôŒNǵRD‘º¤"…õëÆ¥ÂÍÍ1õUó]a³ÛTu¸£Nµ‚˜4‰½ëîáïãÇCêž!ÿ²­(0z4øø¨nØÍ›«¬ll (è#r( fû¶ñ÷årêÍ ‚}ûøuU€1cÔ×wuM…BˆT¥Ôs£HÜen¸¤u!D&ˆ)¬Nh×.õî_ØÁŒ…ÙûªÈž=P¾< J¥æØnÙšÖ†«©R6šâÅÕÚßæï#Gª",÷ï«@Ù²‰‡­[‰«ZŸp7tVVpâ„Ú‡ØÔ##¨Z¾ûfÏVn„úŦ}mžcÌ­%[µŽ"„ÈÀ¤BϼÓAàë˃3aŒT~Á9{ºV-ÑåÉ¿A#,—Ïàéñó (¼xƒÃ×_«µKƒàæ¦Ö/NN G@öî…Q#úÖ fë—¿@±bàîNÔãX곉ˆ•{ßìŽ(„È •6ç°QuLvÊ4,!Dê‘&™Bè™R¥`ÎußWmnÿ9Ÿ—_ùž»~À*ö"¬]KÁu›ùýEŒ\âP¬¬¸‘¯]Ï—¡u›R|qó –üh­SÜ7CCªÚ>fóõû<^Æãƒg¹:õ4= vaβñ¼}k²,ZÄâ êìøN‡Cimÿ=!RžN狸SñòËPML£( 8::’%K R !ôŒ€¡gàÅ ¸üV#¬={ÔVºEŠ nj8d¦w3að}ÜØÊã¾\ ÑÑ)ûß|ñsWužXéÒ?¿º$W.šô+Då0oëÅŸcp4 Áz@["l!/·ÙÒÚ¾úŠ'u”)ò¾Cˆ ªž¦qQ<Ü´?ɧ/^¼ˆ‹‹ ~~~iL‘QȈzæUw©sçÀÞ^ýzϨYóe׬· ÿ5GZÖ£gÏz„<†óÁ€eDDÀÍ›ê"ØXˆ%6«95šYQ¡¡5¬·å¯E:ʵƒü€õ/jËÞÆáäI(W.-b!DZj:Ò‰›Z:q Õš}èy{{{*UªÄüùóiþj™B$ƒ Bè™|ù W.µiÖ >Tׂ÷ì™ôù•*ÁÑ£êyVVfj¯à··mGýeã¬W—v´mûæ9WWPG^NŸ†NRë§Bh-O^‡Jº“óТ¢~}½¹êÛ¼¼¼èÝ»7áááøÜ¾ãBˆLG¦` ¡gt:¨^–.U/öïWTÕ¬ùîkŒŒ^ïçä¤>Ž oýv¨[ΟWGAž?gçÏû„é[‘Þ;ͪ)áI>ß¶m[LLLXôßV{Bñ¤B¥K–¨Ó¯¬­¡xñÏ¿oëÖêèF“& ýµZøüþ»úý«BE‘1åk_—xtœ¼ØØÄÏçÈ‘ƒÖ­[3oÞ<â?´ã©Bü‡ Bè¡  eKøßÿÔQ‰¤Ö|Š `áÂÄ÷²²RÛõîÚ¥vãÍ‘ãó_K‘ŽYY]¦înaë;¶éÕ«W®\aÛ¶mi›M¡÷¤BO aaêú÷M¿J)uëª2ýJˆÌÁ¬¹;nÛÙÄP¹reÊ–-ˬY³Ò8™BßI"„ž*Y:wV¿®U+õ_ïU"°„ÈtõݱˆäÞæ#I?¯Óñý÷ßS¸paEIãtB}&]°„Ðc&€‹‹ZŒ¤¶êÕÕµ ¦þk !ÒŠ‰Én…Ý…M<|Xœ9ŸÒ¡C:tèöÙ„zMF@„Ðcyò@ïÞ)³þãCLMaÇ([6õ_K‘ò¼n<ØÈþ¤÷$BˆO"ˆB!’dÞÖƒ²œâ䆵Ž"„È@¤B!D’tînÄêŒ0Úâ§u!D"ˆB!’–3'·JÔÀñškF‘QH"„Bˆw2næAmvrhÇS­£!2)@„BñNyº6”gD, Ð:Š"ƒD!„ï¤+^Œ9ìÁÏ >>éóbcciß¾=+V¬HÛ€B½#ˆB!ÞËâ›F46ðëk<5jÀƒ‰Ï122âæÍ›L™2%í !ôŠ B!„x/³ÖXÄÜäÈÌ@‚U«’>oÀ€:tˆÃ‡§m@!„^‘D!„ïW­XX౑ʕaëÖ¤Okذ!vvvL:5mó !ôŠ B!„x?cc¨_üü¨Wvì€ØØÄ§Ò¿V­ZEXXXÚçBè)@„Bñaˆ‡s8ÀÑ£IŸÖ¥KÌÌ̘1cFÚæBè )@„Bñaîî`hH¹p,,`Û¶¤O377ÇËˋٳg•¶…zA !„B|˜¥%|ù%†›ý¨SçÝë@úõëÇ£Gؽ{wšÅBè)@„Bñq<< €µ£9|8év¼EŠáúõë4hÐ mó !ô‚ B!„ø8At4 Mˆ‡;ß}ªµµuÚåBè)@„BñqJ–{{òXK‰%„ï"Èg;v,8::&z.88wwwÌÍͱ²²¢cǎܽ{Wƒ”B!D iÖ 6làËʱiF¡¤ù aaaŒ7ŽlÙ²¡Óé=W£F BCC?~<ƒ ÂßßWWW^¼x¡Qb!„â35k÷îñ¥²7´#„ÐGFZÐgƒ ¢ZµjÄÆÆ&Ù7nÑÑÑœ8q[[[*Uª„««+ .¤{÷îZDB!>‹ ØÚR1l µˆù8S‘ ò+ãýóÏ?¬^½š)S¦ (J¢Õ«Wãááñºø¨S§%J”`åÊ•iW!„Hд)Åά#6Váέ !ô Ÿ ..Ž~ýúѽ{wJ—.èùððpîܹƒ‹‹K¢ç*V¬È‰'Ò"¦B‘:š5Ãìîu*pœððŸ~ïÞ=†ÎÇS?›"Ý“äÌš5‹ÿý—Ñ£G'ù|DDùóçOô\þüù¹ÿ¾¬B¡¿jÔ ÞÂ’f¬ý¨u Ïž=ã·ß~cöìÙ©ŸM‘îI’L÷îÝcäÈ‘Œ9++«$Ï‰ŽŽÀÄÄ$Ñs¦¦¦ ÎB!ôŽ‘4mBKþ&2hÝ {.wòôGÿÃ?pûöm|||R9™"½“.XÉÂܹs™2e aaa¯ÇÄÄðüùs®]»FŽ9^O½z5ëmXYYallüÎ×ñööÆÂÂ"Á1OOO<==Sè'B!>S:<2´ Ð¡•€ÓO/Q¢mÛ¶eüøñxyy%9K@ˆôÆ××__ßÇIGGGÖ®]› å®¢( >œ'Ož0uêTìììhÑ¢‹-",,ìu+Þ;vÂ÷߯I~!„"%]pjM]¿pê”-Kß¾`l I|Æ@©R¥hݺ5ãÆ£K—.dÉ’%m !Ò)@’ÁÊÊŠ&Mš$:>yòd7nüúذaÃXµjµk×fÀ€<~ü˜ß~û '''ºté’f™…BˆÔò¨b"ýs‘kÕ*§²AΜï¿føðá8::²qãFZ´h‘6A…éŠ,BO:.ÑF„¶¶¶ìÙ³;;;†Êï¿ÿއ‡Û·oïú!„B_ä/dÌ¥ñ+Vv]áÁø÷_H¢ËkeÊ”!00æÍ›§]P!Dº"# )`×®]Iwpp`Ë–-iœF!„H660‰Vx]òá꺓€3Š¡¡PªÔ»¯svvN³ŒBˆôGF@„BñI €Ôá…EnŒÿöÅèåÇš—.i›K‘¾I"„BˆObc±s­RkŠó¥J¥x²f•Dñ~R€!„â“XX@Ö¬p¼d{¬¢Ãh™÷Š“Dñ~R€!„â“ètê(Èþøª\¡0õî.“DñAR€!„â“(;t,£ŃVa_ø™ Bˆ÷’D!„ŸÌÆ‚ƒá/Úcôøµb6sõ*<þñ÷X¹r%ýû÷OµŒBˆôE !„B|²ÔÇçvP®Îg–×®}ü=¢¢¢˜>}:‡JBˆtE !„B|2õÑÉ èØ†~™ IDAT‘<‡7bɽdMÃêСåÊ•cÀ€ÄÇǧJN!Dú!ˆB!>Ù«'' }{ˆ§ƒ‘o² CCC¦OŸÎ‘#GX°`AªäB¤R€!„⓽)[È›]Æt3Z˜ì…èÕ«Wç›o¾aèСDFF¦xN!Dú!ˆBñÿíÝ{|Îõãÿñǵ™ÃØÁ6ca¶ÍÖäCN•Cœ"åCõIÇO…RŸJJ’o|ä”>ý”rŽ3É©9Ållc6l×ï—ٰٮëšyÞo·Ý.{]ïÃëÚËÅõÜë$·¬n]8š5»\з/µR6qqóö<_ëÝwß%55•W_}µ`+)"…ŠˆˆˆˆÜ²R¥àóÏͦ„´kG’›7õÿÌûP*???^ýu&MšÄÆ ¶¢"Rh(€ˆˆˆHÁqqa_d4íNMçÒù‹y>}ذa´nÝZðDŠ0)Pç»õÇDŽ}ùCžÏ-V¬?ýô-[¶´AÍD¤0P‘U«ûݬsŠäüGŸ;º*"R)€ˆˆˆH*]v7}Š ý‹¹¸Ë,‡õë¯P©œ8áàʉˆÃ)€ˆˆˆH«7®+')Ǿ¾àÂ4bcaÏG×LDMDDDD \­ún,®Ø¿Ÿ¾bâû©™Á#6Ö±õÇS›(ýì“”½t‚?^›ÇСàî‡;ºV"âh """b á7—f a"o¼·ÞòÝwßñòË/lEÄ!@DDDÄ&ŠÏÑéq-­§R¥[‹c̘1ÌŸ?¿`+)"v§""""6Sã¹öPµ*|øa¾z@† B§NxüñÇ9pà@ÁVRDìJDDDDlÇÙ† ƒ9s¨Y6ö–{@, S¦L¡\¹rtîÜ™äää‚­§ˆØˆˆˆˆØÖãCÉ’4ßó)ññpñâ­]ÆÃÃï¿ÿž={öп¬VkÁÖSDìBDDDDl«tièߟš¿}N k2ññ·~©ððp¾þúk¾ýö[Æ_pu»QÛ6 —äÓ `r¾÷éÚµ+/½ô/¼ð»ví*˜ú‰ˆÝ(€ˆˆˆˆíÝu»ôà_ŒçÈ ù¾ÜèÑ£Y´h5jÔ(€Ê‰ˆ=)€ˆˆˆˆ]¸¼ú•ˆ¥ÌÓó}-'''xਕˆØ›ˆˆˆˆØ…¥fKܦ΢q–æèꈈƒ(€ˆˆˆˆÝü/ìE|NÅÀÜ¹Ž®Šˆ8ˆˆˆˆˆØMr­¬+ÓÞ|S½ "w(±›€]|4ìÜ 3gÚägÏžåàÁƒ6¹¶ˆäŸˆˆˆˆØM¥JðÓ‰†¤·ï¯½vë»ÞÀˆ#ˆŠŠbÇŽ~mÉ?±›€°ZáØÐÑpà|õUßã­·ÞÂÛÛ›{ï½—eË–øõE$@DDDÄn*U2ûÝÃá±Ç`ôh8¾@ïáëë˪U«hذ!­[·æë¯¿.Ðë‹Hþ(€ˆˆˆˆÝ˜ÇØXÌDô„xソO™2eX°`}ûö¥_¿~ >œ‹6î%"y§""""vS¶,”. ‡AA0lŒGŽø½\\\øâ‹/øä“OøôÓOyàHHH(ðûˆHÞ(€ˆˆˆˆ]À@­Zpÿ’WI/Y ^|Ñ&÷²X, <˜+VššJ±bÅlrÉ=±«çžƒ- qcX¹­,Û} ¾ùÖ­³Ù=ï½÷^Ö®]Kùòåmvɱ«Ç‡ÿû?øì3¨Z&[ûCíÚ0x0\ºd³ûZ,›][DrO$6lØÀСC©Y³&îîîÒ­[7bbb²»k×.Ú´iCéÒ¥ñôô¤wïÞ?~ܵ)œZ¶„EKáóÏaËøøcGWIDlL$ÞyçæÏŸOË–-™0adåʕԭ[7ˆG±±±4iÒ„ýû÷3vìXž{î9~üñGZ¶l©U8DDD.kÕ þú þömC‡Â+¯€v1·Z­|ûí·¤¤¤ØýÞ"wÍÄÊ£gŸ}–úõëg™ÄÖ­[7î¾ûnÆÇ7ß|À˜1c8þ<[¶l!àòšƒ 4 eË–|ýõ×<ñÄ©¿ˆˆHaÒ¼989ÁâÅ0àí·aþ|3ëÇÁŽC¦6oÞLÏž=©X±"¯½ö}úôÑ„uQHEFFfû)((ˆ°°0vïÞY6oÞ<Ú·oŸ>Z´hApp0³g϶[}EDD 3hÐ-¬Ïûé§°p¡MvH¿‘zõê±cÇ"##0`5kÖdÖ¬Y¤§§Ûµ"w`µZ9vì^^^9r„ÄÄDî¹çžlÇÖ¯_Ÿ-[¶Ø»Š"""…VË–°t)¤¥:@ÿþ0|8ìÝk×z„††2kÖ,¶lÙBõêÕyì±ÇgòäÉœ/àÝÚEîd `ÆŒÄÅÅÑ­[7âããðóóËv¬ŸŸ'OžÔ<‘ËZµ‚“'aóæË~¾¾mÓU±®'""‚ °zõj‚‚‚8p ï¿ÿ¾Ýë!RT)€äÓîÝ»2dQQQôéÓ ó·$®®®ÙŽ/Q¢D–cDDDît šÑW?üp¹ÀݦO‡áõ×V¯¨¨(¾ÿþ{bbbxê©§V‘¢F$Ž=J»ví(W®sçÎÍ\_ÜÍÍ €ÔÔÔlçd¬®‘qŒˆˆÈÎÅ €wÞ¹j/ÂF`ôhxûmøÿÏ¡õ«V­Zæ0kÉ?-ïp‹NŸ>̓>È™3gXµj¾¾¾™Ïe ½ÊŠuµøøx<==qqq¹îµGŒ‡‡G–²îݻӽ{÷ª½ˆˆHá2n¬] ]º˜¡XÞÞÀ¨Q&‘ôêezC‚‚]Íëzê©§ ¤sçÎ;º:R@fΜÉÌ™3³”:uÊAµ):,V«ÕêèJÜnRRRhÕª[¶laÉ’%4lØ0Û1*T iӦ̚5+KyHH•+WfñâÅÙÎÙ¼y3õêÕcÓ¦MÔ­[×fõ)Œbc¡n]³)ú/¿˜åy9}ê×WWX½š„”2”,iFiiiiôèу œœL­ZµèÔ©?ü0Ú½ˆÑçµüÓ¬:wîÌ‚ ˆÍ,[ºt)111tíÚÕ^Õ¹mÀÿ K–ÀäÉ— Ë–5{ƒ:Dzç.Ô ¿ˆtï+V8²¶W8;;3kÖ,™?>|ôÑGÔ­[úöíË‘#G]M‘BC= y4bÄ&L˜@‡r ÑÑÑ€Ù ½N:xxx0|øp’’’?~<•+WfÆ 9ÁR¢Ç7™c÷n¨Párá²e¤·nôK=ÙúôW,]fa×.Xµ ¢¢ZÝ]¸pÕ«W³páB/^̯¿þJ™2e]-)ú¼– yÔ¬Y3V®\IN?6‹ÅBZZZæ÷;wîä™gžá·ß~ÃÕÕ•víÚñþûïãííãµõZDDNœ€ÐP³<ïŒWÊ¿j1ƒÇ—Ec}~éoå¾&`ëÖÂ5$ëVìܹ“ÀÀ@J•*åèªÈMèóZþiz-_¾<×dž……ñóÏ?Û°6"""E§'¼ÿ>ôéc¾Zµ2›¾´£'žMxèÝgp.î´¯ß$¢Ž…çŸ7¨ßÎÚµkGll,µkצQ£FDFFÒ¨Q#ªV­ª9$Rähˆˆˆˆ:½zA³f0x0œ?«Wñcà3f$¼û.¼õÕg¼Îøw­Lš_}·ë˜«ÕÊ?þÈÇL­ZµX¼x1ÑÑÑQ¡B:vìȺÌõ‰Enê‘BÇbI“ <Ül’”+šM ‰ü¤§Ã /0hÈI6÷ýþýùñGøì³ËKøÞF, aaa„……enxxâÄ Ö­[Çï¿ÿÎï¿ÿŽ““~g,E‡ˆˆˆˆJ!!ðÒK&€”)=z\^šÌ!Xfr§£´ñ ‡• * öì¹ê¸\JJ‚³gáòV^çééIÛ¶miÛ¶m®ŽÿꫯX±bõêÕ£nݺԩS÷Û}bŒY """Rh½ð‚Yš÷¯¿ sçkž|òIðõ…Ç£Óá¦øMšKÔ£lÚd¶¹žsçàŸ̲¿žÞìy¸y³M^†Í¥¥¥±{÷nfÏžMjj*‹…àà`êÕ«G½zõhܸ1 4pt5EÍ‘BÌÕ¾þ{ 7Îဇ2kñÆÅÑhh=Úº¯dÁ‚_ó™g̵®ž3²|9üù'\ºTµ·Ÿ'žx‚õëד””ÄÖ­[™2e <ðû÷ïç•W^á“O>qtE2iÞBD˺‰ˆˆÜ¢„èÖô_W2¥ÂËôy-ÿ4KDDDn>>°x1vK¿¹op¡þBŠMŸÆ€alß÷ß™ “’Ì‘åËMØX³æÊevï.zÄÙÙù†á̤÷½{÷2þ|Î;€áááÔ¬Y“š5kÒ³gOJ–,i*K§!X"""R4+FÀç¯Òز†ä£g ¢6m‰Ê^ÉŒmùúkhÒ4€eËLÙêÕf…­Ò¥M¹…††²víZΜ9CLL óæÍcРA¸»»óÓO?1dÈíG"F= """Rd”/.÷6`@Ùm´Øô.Ï%Œa¸uOýôßד¥K˜<öíƒ/¿4ó@V¯6sBöï‡]»l_Ç#Gàõ×aâD3Ç¥0qrr"((ˆ   :uê”YžššŠëM*;`À:”ÙcR³fMÂÂÂnÚû"wõ€ˆˆˆH‘Ò¾=Ìû±ƒþ›-Ó¶Sò¾z|Coªv©K—ÿѵs:Íš™¹›6ÁÆpï½P£†}z@–,É“Mð¹]Ü,|ÔªU‹’%K²`ÁHTTвeKfÏžm‡šÊí@DDDDŠ”öíÍcãÆÐ gu,ó¿ãÇ—Vóµ,³/ͶmÛ8þ¼j,Ž¢!X"""R¤„…ÁСЧÙQ ÕëQô?ü+›­"hö\ûGó·Ë³|2ûIj–ìËÝwWáàA8u Ž3+eeHI1û„¼öxzæ¿~šÇÂ@Ö¬1¨{÷‚½®››DDDäúœ•+WÒ±cG, „„„Jhh(!!!„„„àçç§¹(E€–á-D´¬›ˆˆˆìÜÉú¾ŸRcÃ4Js¢¢8Ú¼w¿õ(s–{Ó´é•Cú Úµƒ©S¡oßì—JI1½&nn¹»uóæfë«ÕlˆXºtA¼ ¬2>ÝÝè³ºÕ õêÁéÓfNŒ£={–?þøƒ={ö°{÷îÌÇ}ûöqéÒ%Š/Nrr2ÎÎέ§>¯åŸz@DDDäÎFêûñmòÓ:ý@—ÔT7‚x†7¤% ímÚ@•*,^lNY·.{ٱà ùòð0½ ¹ !B‡fIàU« mÛ‚~qðÁfù¯̆ °e‹©³Õzã°’#G‚ŸŸéEºwww¢¢¢ˆŠŠÊR~ñâEöïßOllìMÃÇO<ÁÉ“'©^½:AAA™þþþê9)D4DDDDîH BˇJ6º;,X€%>ž·+|Ì…SÉðôÓPµ*„†R÷›´a!;ÖžÉrþ/¿@T”,iæŽ<ýôÍïyé> -[š¥m1 +- >üÐL°¿ÑtŠÏ>3çÏ›^[°ZaÚ4³ê×Ñ£·v BBBhÑ¢ÅMõõõåÌ™3Ìš5‹Ò´iSpww§víÚLŸ>ýÖ*!J= """rG*^¾ÿþª//¶FbMò ~Ùy–-#ù»Ÿi2}>½øˆ´mN¤‡ßSã(âªÞËÐQ‘Üצ 3¿µ0oôëgVÓê×ïú÷Œ‹3!¤J3+§òí·¦w"-Í|]ºd>È?ù$Ô©“õZnnP®\ÖóùÅ„0C«jÕÊ~þ1÷yðAX¸Ð\ËÃ#×?º\;pÀÜ àwLÏŒ-ÎØð³tðþýûÙ»w/111ìÝ»//¯žðàAæÌ™CÕªU3¿´ŒpÁS¹,4fÌÊ–…Ga~ò#DO·²òË¿˜úÄjÆV^M…eËðŸ4‰ÀºÆK‡Úô­]ë}LX›¯&Õ¤ruWú÷7!ãjÐïºË<7}:œ8qerû™3f˜——— ÎÎæ+6¶m3ü,3Q>4Ôìê<o¾ivxÿâ p€¿þÊ9€|ó \¼¯¼r%€„…üÏsÓ&ó8x0Lšÿúøûü}râêêJ5¨Q£F®ÏÙ½{7o¾ù&gÏžÍ,+_¾(Ê”É_9uÊÔaÐ øè£ëwè’¶q£Ha¤""""r•€³?Gt´ $¥Ì´ 64[¶änC«V&G\½ÇÆÁƒpÏ=—°X(^Ñ›®ã½éÙ³BD[°àòó—.™.˜`ÿ~,‡á³õ0N[règxõò§ìËœŠcPÅŠð_Jº$UâXB%Îþ·îa•¹è[‰¿Zž,4jt¥žþþY‡j=ó ,] Û·›!Z“'›úÿú«Ù1ý¾ûL€¹É‚R™Ð3ˆ“Ô­{ã½Inæÿ3“çgÏ6=T×Û$c²ÿŽ·~/±‘k”)c†Z]-0|| !zèæ×hÕÊü–~Ï3·$-Íüfþ®»²÷Øcf‰Ú?þ0C¨2+fnHÆÖì^—¿€+[©>|åëСÌ?WÛ·–ˆ¥xÏ‹¸à†óEhâo’GÅŠ_cÎs½£GM ºv•± ù û÷›Iú/¿l†²IÁSÉ‹Åìó›}’xNî¿ß|_´ÈŒ=@® NNfh×sÏ‘9|*×*_Þ|Õ®íéÔ3àQ6¹Ñ©þa^í{˜ŠÖXžêg*sälÝÊÇÑ6% .Ï ù 8mñàÈ[þÄÎôgôaZ[+ÂDªøû3±WE^ùÔŸ¡Oúz·K–{>ü°²µl™ ™½=—Õ«ï½ÇgíAIK3Á¦gO5êJùÕ¡äÔ)ó³?Þ»™3o@Ž1çåfÞJzº [£F™ahõꙹ@Rð@DDDDré³ÏÌ Ü(U 76–uk5o½¸R™2PÁ׉?ýˆ¬äÇÛ»0e pÍF‰ ¾ƒ>“8´6ŽÔq<×ã£¢ãØø¿8Ü÷¡Né½ø._ 3âà¢h =Ü|LOŠ¿?gÝ}iü‹/ÇðåýFp‰õ¥e_Hò5ô-–Ì@²i“YN8üyfÈ×Ï?_ V«™øß¤‰nõÃægߥ‹Ùå³Ïà“OLÈ»Öß›\vò$ìÜiv¬?sÆÁ/¿4s|®õÆf…®Aƒ`î\sžØ†ˆˆˆˆH.ùøäíøV­Ì‡Úää+$0°À«u]Õ«›ùß}gæKä4tÌßÎRšØR!Äz„0x{4x? :Àœ¯ ¼ &œ8qqüúß#üß;q¼Ò6Ž*Å@\gÖl§7‹ p9ŠÓî æâ]þrs__ªùúòC1_¼þ]~÷__¬|ùñߨêäËë*pé’ÅŠ™©/›6™¯ðpRî½× ëzì1³ ñ¢Eо}ö×tð ™è>gŽ™te‹7{’ä@–/‡G…O?5Ãæ@lGDDDDÄF:w6¿YïÑÃìÕáím&¶ÛKp°Ù'1.Z´0½×ÊØ™<.Î|è.UÊ 1 4SJ2‡›Y,fÜ”—MîgÔ è´ÅL*wv†öu¡j˜;ÇÊŠïO1uìQ>ù÷1ÜÏ5“6ŽÅrô(ö£ÜžßáÐQHHÀ’žÎ´ŒÊœ‡KåÊ‚JZ|ù_Êù°~€7•­><ÕÇVùp·—7‘!>|û_Ú·Ï>qäàA³|rPЕy Ë–™z®Ycös¹z‹«Õת•ù>,ÌLÄÛP±‘  ó[ø‡2¿­¯U˾÷†3̺_~™ó1Kêf5®Ì»¸Þ\‹ÅÌÃhÔÈ\·Y3³:ØË/›'›>Rަ”jd;wÞ(3ãÐ! -®ÍOà”p”iïeÐ#Gyâ£DU=ÆïRÅ=ž{\wRß’€GÚqœ§¦ÃT°k€K{œIþÉ›’•½M÷”·7—Ê{Ó/·Ö½)Y·øÕÞð—ëñ¦g~[máÃá¿ÿ½R§ÄD3\+,Ì|f†x]¸ó/ÉjצN…Þ½í;ü LII¹þð+0°½¼®Œá7Ó°!ôëgBGPºt›3æ ^=³ÚWBlÞìÌÜ•>|û­%:†óg]˜äQïCÏùÐáqhð¤%À’Mé´nð911‘Kq Ìš˜ÈžÕ‰´sM g"–£GIÛ´§IÄgúq¢ÒÓÍMCÌäú´=.œ/åž™>¤ÄzS"À—sI^<‰ yÂr/ê—ðÂû’'ûvzR#Â5w?É5ëÕËLƒ¨\Ù¾÷­^Ý<6o~ã};üýÍŠQ;wš•¬rkìX37câD°ÜÜn~NÆDô#Ì~­Z™¡j`6’ÿé'³’ðf:˜ÎÖ:žàé 5jP èÑͬŠÕh|5Ø¢UKÌü}»Óغü^y2±#ùæƒD&¿™€ÛÙDÖ¿—€%1‘pçxض ‡3‘™fêÄÔÁ$+OÏÌág™›ºÈ-S±ƒ.]ìÏjÕÌjXÑÑ7>ÎßßÌå8s&÷= `öäxã 92÷;ŽW©bvYŸ9†7Ëò»ü‰42Òlò8ožù>#€\ÅÏ?o6(\¸ÐƒÍ²€@g’£¼Ø…//‚´PðxÉœ÷G¼1ï¼|¡°b¹•?WŸ6k?NÖ'x´ùqnl¾çÄ ó˜±š€Ü2‘"ªD ³$íÍ6Ôó÷7ËCÞÀÓO›sZ¶ÌÝñ Œg&»÷ì™õ¹ÈHóøŸÿ˜¹(ÞÞ¹»fÓ¦f.ŠÕjòAÅŠfhYp° 7;vÀàÁWŽðAÓkó×_ryèYM‹Ù0Ä‚ˆ¯ 3‹ÃÃÏ^s³Í›¯lï.·ä&ûMŠˆˆˆÈíÌÃãæ£†üý͇w7·œ÷)¹gg3Œ*/#“Ì>ÀÌ‘ñõ5C°î¿?÷×kÖÌL$ß¹ÓŒ×P¼xÖahš41Á$c¥«œæ¾„…ÝÚNêrs """"w¸Œ¥xCCM p«ØÞe úIDAT‹åJ/H^HT¸¸˜½<Ì:Ù¿fMsݦM¯”¹»›IôK—š‘UÇŽå@þú+ûÆ““'çåIN@DDDDîp$¯Ã¯l!*Ê<Þw_îÏ)YÒŠ+̳«{q:v„îÝÍ<ò«µhaËöíæûk_{Íš&|ìÛ—µü§Ÿr_/É™ˆˆˆˆÈ®0'ž€ï¿7ó8ò¢Y3(ŽÉ@zõ2{¡\«E øç³ˆ³ó•¡Z2~WÊ‹3GòGDDDDäh>„שã蚘 ó×Û³äFš65› Z­¹›ÇÒ¨‘é9™>Ý„×k¶ûðñ1«îîÜy¥ì×_ó^/ÉNDDDDäçã{ö@›6ޮɭ‹Œ¼²kyn6|,^Ü ó:þú=?aaðçŸW¾_±Â,#,ù£"""""T«v{ï±çæfz5,¨T)wç´ha¯@š41û‹$%™ï—/¿²‘¢Ü:JMMeÔ¨QøûûS²dI5jÄ’%K]-‘"©cG&®Nu=7 O> ÉÉ0mš™[£-@ ‚ˆ õíÛ—>ø€^½z1aœiÛ¶-«W¯vtÕDDDDŠœ‘#aÓ¦Ü_§Ž™„þðÃ9?:™M —/7e ù§b#ëׯgÖ¬YŒ7ŽwÞy‡°lÙ2yþùç]=)$fΜéè*ˆ©½ï,jï;‹Ú»pprÊ}ï˜áZÝ»›á[×óôÓf~Ì[o™¥yË—Ï=ït 62wî\Š+ÆÀ3Ë\]]éß¿?k×®åÈ‘#¬úë΢ö¾³¨½ï,jqc¨]Û„fÍ]›¢AÄF¶lÙBpp0îîîYÊëׯÀÖ­[Q-É‹† 3¾z7u¹uÅ]¢*>>??¿låeqqqö®’ˆˆˆˆÜ‚èh8{ڷϺ1¡Ü9þ<®9 B,Q¢Dæó""""Rø/~¥DòOÄFÜÜÜHMMÍVž’’’ùüõìÚµËfõ’ÂåÔ©SlÞ¼ÙÑÕ;Q{ßYÔÞwµ÷CŸÓòOÄFüüürf€¿¿ŽçøûûmóúIáQOëùÝQÔÞwµ÷Eí}çð÷÷Ïq¨½äŽˆÔ©S‡+V””DéÒ¥3Ë×­[@DDD¶süüüظqcfH‘ÂÇÏÏO$,V«ÕêèJEëׯ§Q£FŒ?žgŸ}0;£×ªU oooÖ¬YãàŠˆˆˆˆØŸz@l¤AƒtíÚ•_|‘„„ªU«Æ´iÓ8tèS§NutõDDDDDB= 6”ššÊ«¯¾ÊôéÓù矨]»6£G¦eË–Ž®šˆˆˆˆˆC(€ˆˆˆˆˆˆÝh't±B 55•Q£FáïïOÉ’%iÔ¨K–,qtµ$ŸV¬X““SŽ_ëׯÏrì®]»hÓ¦ ¥K—ÆÓÓ“Þ½{süøqÕ\næÜ¹s¼öÚk´iÓ†òåËãääÄ´iÓr<6/m;eÊjÔ¨››ÁÁÁLœ8Ñ–/Cr)·íÝ·oßßï5jÔÈñºjïÂgÆ :”š5kâîîN`` ݺu#&&&Û±zoßþrÛÞzoÖÒ¥KßôzjïÂkÍš5Ö‹/f)‹‰‰±–(QÂY¦÷vÑÛöÖ{»ài–ƒÍ;—bÅŠ1pàÀÌ2WWWú÷ïÏÚµk9räˆk'Ájµ’””Ä¥K—r|~Þ¼y´oßž€€€Ì²-ZÌìÙ³íUMɃâÅ‹ããã˜ö½žÜ¶íòåË9yò$ƒÎrþ!C8wî?þøc¿ɋܶwÆóéééœ9sæºÇ¨½ ¯ÈÈHŠË:8$((ˆ°°0vïÞY¦÷vÑÛö½· šˆƒmÙ²…àà`ÜÝݳ”g ÙÙºu«#ª%¨_¿~”-[777š7oΦM›2Ÿ;r䉉‰ÜsÏ=ÙΫ_¿>[¶l±gU¥å¥m3þ|í±uëÖÅÉÉIÿÜF’““)S¦ xzz2tèPÎ;—åµ÷íÅjµrìØ1¼¼¼½·‹ºkÛ;ƒÞÛKs@,>>??¿låeqqqö®’WWWºtéBÛ¶mñòòbÇŽ¼÷Þ{Üwß}¬Y³†ˆˆâãã®ûwàäÉ“\¼xQó@nCyiÛøøxœ³ý‡W¼xq<==õïÀmÂßߟQ£FQ·n]ÒÓÓY¸p!Ÿ~ú)Û¶mcÅŠ8;;¨½o33fÌ ..Ž·Þz Ð{»¨»¶½Aïm[Pq°óçÏãêêš­¼D‰™ÏËí)22’ÈÈÈÌïÛ·oO—.]çÅ_dáÂ…™í{³¿ ·Ÿ¼´íùóç)^¼xŽ×quuÕ¿·‰1cÆdùþÑG%88˜—_~™¹sçÒ­[7µ÷md÷îÝ 2„¨¨(úôéè½]”åÔÞ ÷¶-h–ƒ¹¹¹‘ššš­<%%%óy):ªU«FÇŽY¾|9V«5³}õw èÉKÛº¹¹qáÂ…¯“’’¢¿·±‘#GâääÄÒ¥K3ËÔÞ·‡£GÒ®];Ê•+Çܹs3W>Ó{»hº^{_ÞÛù£â`~~~9vÉetñúûûÛ»Jbc•*UâÂ… œ;w.³ ?£½¯§§§z?nSyi[???ÒÒÒ²í!páÂNž<©nc%J” |ùòœ}š|3gÎðóÏ?ãëë›ùœÞÛEÏÚûzôÞΫS§ýõIIIYÊ×­[@DD„#ª%6´ÿ~ÜÜÜpww§bÅŠx{{³aÆlÇ­_¿^íËKÛÖ©S Û±7n$==]ncIII?~ooïÌ2µwá–’’B‡Ø»w/ , 444Ëózo-7kïëÑ{;@¬K—.¤¥¥ñÅ_d–¥¦¦2uêT5jDÅŠX;ÉÄÄÄleÛ¶mã‡~ U«V™e;wfÁ‚ÄÆÆf–-]º”˜˜ºvíj—ºŠmä¶m›7oNùòå™4iR–ó'MšD©R¥h×®Ýê,·&555Û/’F @›6m2ËÔÞ…WZZݺucݺuÌ™3‡† æxœÞÛECnÚ[ïmÛ°Xo¶¨¹Ø\·nݘ?>#GޤZµjL›67²téR7nìèêÉ-jÞ¼9%K–$22vîÜÉ_|««+k×®%$$0;êÖ©S†NRRãǧråÊlذAC° ©‰'rêÔ)âââøì³ÏèÔ©Sæo·† F™2eòÔ¶“&MbÈ!téÒ…V­Z±jÕ*¾ùæÆŒà /¼à¨—)—ݬ½OžúÈ^/Gnâfí}êÔ)k¯^½¬Õ«W·–*UÊZ¢D ëÝwßm7nœõÒ¥K9^Sí]ø4mÚ4³m¯ýrrrÊr¬ÞÛ·¿Ü´·ÞÛ¶¡±Í»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»Q»ùÿ ’&“¨ ÙIEND®B`‚lmfit-0.9.2/doc/_images/models_peak1.png0000644000032700003100000007660612603520205021352 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝy|•åÿÿ×ÉÂ"KÂH@EHHÂâ‚ Z¤uë´.L;Úvf:m:]¦ßþ::3V§nØeêL—±¶•ºTÆjGkqc_²¢ìk€°„²ßwÐRQrî;çœ×óñðqrî“pÞÔTòæº>÷‹Çãq$I’$)Q$I’”>, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ È8|ø0÷Þ{/×^{-={ö$##ƒ_üâ'}N<çá‡æ†n`àÀtíÚ•Ñ£Gsÿý÷süøñˆ’K’$IѲ€œºº:î»ï>^ýu ˆÅb'}Îáǹ뮻سgŸþô§yðÁ?~<÷Þ{/Ó¦M‹"¶$I’¹¬¨$£‚‚vìØA^^ååå”––¾ís:vìÈÂ… ™8qâ›×>ñ‰OpÞyçqï½÷òâ‹/2eÊ”0cK’$I‘sä tèм¼< Øju*ÙÙÙ'•nºé&jjjP’$Ij§, !Û±c½{÷Ž8‰$I’> HÈþã?þƒœœç@$I’”–œ Ñ<À‹/¾ÈücºwïuI’$)t<öØcüó?ÿ3Ÿüä'ùÛ¿ýÛwü¼ÚÚZjkkCL&I’¤÷#??Ÿüüü¨c$- HþøÇ?rÇwpÝu×ñÐC½ãçÕÖÖRRRÂöíÛCL'I’¤÷£  €²²2KȲ€$Ø’%Køð‡?ÌøñãyüñÇÉÈxç±›ÚÚZ¶oßί~õ+FŽbJ¥£3f0sæÌ¨c( ø½¦°ø½¦0¬^½šÛo¿ÚÚZ Ȳ€$ÐêÕ«ùЇ>Ä!CxöÙg騱ãi}ÝÈ‘#7n\‚Ó)Ýåææú}¦Pø½¦°ø½&% ÈúáH}}ý›Û¥~÷»ß±yófî¾ûnb±S§N¥¾¾ž/ùË<óÌ3'}ý°aÃNyNˆ$I’”Ê, gè;ßù›6m ‹1{ölžzê)b±wÜq---lݺ•X,ÆW¾ò•·}ý_ÿõ_[@$I’”v, ghÆ ïù9---!$‘$I’’‡JijúôéQGPšð{Mañ{MJ)MùµÂâ÷šÂâ÷š”, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"I’$)4I’$I¡±€H’$I D’$IRh, ’$I’Bc‘$I’ ˆ$I’¤ÐX@$I’$…Æ"IiîÁáõ×£N!IJIJc‡Áç?ÿó?Q'‘$¥ ˆ$¥±•+!‡êꨓH’Ò…D’ÒØŠÁ£D’ ˆ$¥±ÅcÛ6Ø»7Ú,’¤ô`‘¤4V] £FŸX ‘$)‘, ’”¦âñ t|ô£Ð¡ƒD’ ˆ$¥©íÛƒmWãÆÁÈ‘ÎH’Âa‘¤4ubÅcÌ˜àŸ… áŸþ æÎ6—$)µY@ާÇsï½÷ríµ×Ò³gO222øÅ/~qÊÏ]½z5×^{-ݺu£W¯^ÜqÇìÞ½;äÄ’tjÕÕе+ •+á?þî¹'êd’¤T–u€dSWWÇ}÷ÝÇ Aƒ(,,ä•W^!‹½íó¶nÝÊäÉ“éÑ£ÿþïÿÎÁƒùö·¿ÍŠ+Xºt)ÙÙÙ¤—¤·TWÃèÑ‘ŸøäçÃð™ÏÀ–-pî¹Q'”$¥" ÈûTPPÀŽ;ÈËË£¼¼œÒÒÒS~Þ<ÀÑ£G©¬¬dÀ€Œ?žk®¹†‡~˜O}êSaÆ–¤·Y±&M >îÑ>ö± €üã?ÂcÁ¿m>IRjr ÖûÔ¡CòòòˆÇãïøy¿ýío¹îºëÞ,S¦Laøðá<þøã Ï)I鈴V¯V@þT÷îpÝuðè£Ñä’$¥> HlÛ¶ºº:JJJÞöZii)•••¤’¤·¼þzPBÆŒyûk·Ü••°ukø¹$I©Ï’µµµäçç¿íµüü|öîÝKcccر$éM'n¹{ÑEo­¨(x\½:¼<’¤ôaI€£GбcÇ·½Ö©S§“>G’¢°bE0dÞ£ÇÛ_<88˜°¦&ü\’¤ÔgI€Î;püøñ·½vìØ±“>G’¢P]}êíW™™0|ø[+ áå’$¥>ï‚•'¶^ØŠõ§jkkéÕ«×»Þ†wÆŒäææžtmúôéLŸ>½mƒJJ[ÕÕpûíïüúˆÁ ȼy0y2”—'¦KR:™5k³fÍ:éZ}}}DiR‡$ú÷ïOŸ>}X¶lÙÛ^[ºt)………ïúõ3gÎdœÒKJ;ƒó±cßùsFŽ„Ÿþþð‡àyMDRú9Õ_WTTP\\Q¢Ôà¬ùÈG>³Ï>ËÖ?¹Ì‹/¾Èš5k¸ùæ›#L&)Ý”•ÁÒ¥o=þyˆÅફÞùkFŒ€ÚZ˜=;x¾n]b3J’Ò‡+ gà‡?ü!õõõlß¾€ßýîwlÞ¼€»ï¾›îÝ»óÕ¯~•'žx‚+¯¼’ø‡ààÁƒ|ë[ßb̘1ÜyçQÆ—”f¾øÅàdó5k‚SÏŸ{JJ õH£S1"x\µ*x´€H’ÚŠä |ç;ßaÓ¦MÄb1fÏžÍSO=E,ãŽ;î {÷î 0€W_}•üÇä+_ù ;väºë®ã;ßùλÎHR[xôQ0 ˜ßxã`5ãÅáÊ+ƒmUÿðïþõ\ðÖÇ“&Y@$ImÇr6lØpZŸ7jÔ(žþù§‘¤·ûçN9/* ÊG,ÿõ_pÎ9P_Ó®Ã3ÏÂÓOÃæÍ0p \}5Ü|3dfÒ¥Kp)ƒk®Ÿü$êß‘$)U8"I)¦¹9èÕÕÁêw¼zúiøÄ' ´ÇZƦn¸!éÒ%xœ>JK¡ª €iÓ‚¯:4(1GŽDø›’$¥ W@$)ÅlÝ MM°aC0€ðõ¯ÃÁƒPxx_Ùv±C½áÕWƒ=Z',Z÷wÁµgŸå¡‡‚×,^^¿þÔ'§K’ô~¸"I)fýú·>þíoƒaóaö7ßàÞe×ÑqÜE°xñÉå‚a ‚Uk¯}óÂ!C‚—‘$µ ˆ$¥ˆŸüV¬V>b1ÈÊ‚—^j(?p®»úõ öbõèqê_¤kWøýïaÔ(øÈG`ï^úõ fG, ’¤¶`‘¤ÃŒðý鸞 8L°¹†¾üå`ã™g 7÷ݱNàÉ'aÿ~ø»¿# VAV® fJâñP~K’¤e‘¤°gO0$¾pa°kÈ·N:Ÿ’ùJp ¬o~† ;½_ð¼óàG?‚'ž€çŸçüóáç?VSæÌIÔïB’”, ’”6n W­ F7†1c ƒf>ôÜgà²Ë‚ó÷ã¶Û`ÊøÌgøÆ½GyøaèÖ *+Û:½$)X@$)´ž @MMP@JKá¡û–UðÝïÇ ¿±X° ²iÃ_þ/>þñà„ôšš¶Í.IJ/IJ7ƒâ}úχ Ë'ã¿óï ,)9³_ø‚ à¯ÿþýßáða ˆ$é¬Y@$)lÚƒwÒ…`$öðÿ½s[pÈÙøÚ×`ï^øÑ92( ¢K’ΔD’RÀ¦MÁÜøÅÏl¶]}ä#­·Á: çwÞ ßû£†gß>صëlK’Ò•D’RÀÆÁ È_ýüë¿Bÿ²§aíZøÒ—Úæ >ÿyرƒ’ nÃ’$9 ˆ$¥€+ pÏ=ûÞwƒ“ÎKKÛæ FŽ„©SÉl&™q ˆ$éŒY@$)ÉÕ×gÔzáµ×`ÁøÜçÚöfÌ £²‚›û/´€H’ΘD’’܉[ðžw^ë…Ÿüòòà†Úö>ð2„OÄ~ÆêÕmûKK’Ò‡D’’܉2hpô(<òH04Þ¡CÛ¾QFÜy'—Õ>ΆêƒmûkK’Ò†D’’ܦMA×èÛ˜=;Ø“õÉO&æÍ>þq:4áÒÚÇÙ±#1o!IJmIJr;wå##øÕ¯à’K`ذļٹçrì²p?§¼<1o!IJmIJr»w·ž€¾k¼ð|ìc }¿Ns—°5ܘÐ÷‘$¥& ˆ$%¹º:èÝxüqˆÅàæ›ú~±oàXFgr_x<¡ï#IJMIJro®€<ú(LÚÚF¨kWÖ\p%kf%ö}$I)É"II®®†vÜ ‹Ám·…òž‡¯ŸÎEMUìšë ’¤÷Ç"IIn÷n¸xçlÈÎ†ë® å=ûréJÕÿ÷ûö…ò–’¤a‘¤$ÖÒ{öÀè5OÁ”)›Êû։ׇ|^óŸæâ‹CyKIRа€HRÛ»z¶Ô‘¿v.üÅ_„ö¾±”|ý&Š)çPÍŽ í­%IIÎ"IIl÷n¸ßOn¼1Ü7ÿàiÉÊæ&þ—ÚÚpßZ’”¼, ’”Äêêàzžáhá$ÈË ÷Ísr82þJ ˆ$é}±€HRÛ»ýW3‡øÃ>ÿs¾‘Ëy•ºµû#yIRò±€HRË^ø*]9L§FS@:øZ²h&{ÞK‘¼¿$)ùX@$)‰õYö{¶d $sÌ…‘¼lè6dŸOïò?Dòþ’¤äc‘¤d3då³Ì˹.¸-UD*zOeèÚ?@<YIRò°€HR²Z·Ž^6°<Z¤1Ö ™JŸÃaÍšHsH’’ƒD’’Õœ94ŲØ:ôòHcìsdÃóÏGšC’”, ’”¬æÌáµs&Ð5¿[¤1z êʬ˨ûõ0Ž4Ž$©³€HR2jn†—^âåÌ«éÓ'Ú(ðû¦©t+…ºmÇ©¬Œ6$©}³€HR2ª¬„}ûxöØÕôîm”‚øSéÔ|„K™Ï²eÑæ‘$µoIJ"ÇŽÁÔ©°ý‘94uîÊ܆ G›)?ªC-ý¸>ëy ˆ$é]Y@$)‰lÚ/¼Û™Cy×Ë]”Í¥—F›©  Æ‹™Sùh÷?X@$IïÊ"II¤®:q”Ñûç3«îj>ÿùH ':u‚í£§2`ï ®ÝÁ¾}Ñf’$µ_IJ"uup1 éÄq^ë{5·Üu¢ Ýuá &3—²²h3I’Ú/ ˆ$%‘º:¸†9Äûöå±×.¤cǨ~ô#˜r{>ñóÏçêì¹nÃ’$½# ˆ$%‘Ý»ajæbS¦Ð«wÄ{¯N!6y2S²_eÕª¨“H’Ú+ ˆ$%‘C[ö1¶¹¦L‰:Ê©]~9C¼ÆÁ »£N"Ij§, ’”Dz®^@q¸âЍ£œÚå—Ðý¼ˆƒH’Ú+ ˆ$%‘›æ±§S u”S8ý=ÏcTÝ«ÄãQ‡‘$µGIJ"Ãëæ³¾à²èï½û.êÇ\ÎÅÍsÙ»7ê$’¤öÈ"IÉâèQF^ÆŽaŸ<øš/™L!Ul_UuIR;d‘¤d±t)hdÿ˜Ë¢Nò®º|ðr2ˆsôó£Ž"Ij‡, ’”$^šÏ~º“1梨£¼«Þㇰ•þtXôjÔQ$IíD’’Dó+óXÀ%ôî›u”w•™cÙ9—Ó{¥D’ôvIJÍÍt(_È<.£wï¨Ã¼·7ú]NþŽ 8x0ê(’¤vÆ"IÉ ºšÌÙϥôéu˜÷¶ãüËÈŒ7Ã’%QG‘$µ3IJóçÓœÕe”&Å HÆÈ ØŸ‘ ‹EE’ÔÎX@$)̛ǎ¥duéDçÎQ‡yoýÏÍ`Il"q ˆ$éÏX@¨¬¬Œo¼‘‚‚ºtéÂÈ‘#¹ï¾û8zôhÔÑ$%“xæÏgM¿Ë’bûÀ€0¿yñE‹¡¥%ê8’¤vÄ’ +V¬àÒK/eÅŠ̘1ƒ|I“&qï½÷2}úô¨ãIJ&6@m-Ë»%ÇüÀ!°ˆIdÔïƒ×_:Ž$©ÉŠ:@ªúÍo~CCC¿ÿýï9r$Ÿüä'iiiá‘GaÿþýäääDœRRRhÝÆ4¯ig9McÇBu§ ÄLj-Z­ÿ”$ÉéܺI;//ï¤ëýúõ#33“:DKR2Z¼†§jsOÎ??ê0§';FŒïΦn9ˆ.I:‰$Aîºë.úöíË'>ñ –/_Ζ-[xì±Çx衇¸ûî»ß,(’ôž/¦eüD6n„aâsú.¹æ6Nr]’t H‚°`Ájjj(**bРALŸ>»ï¾›ï|ç;QÇ“”,Ž…ª*v›Hs3 u ÓwÉ%ðÒÑI°jÔ×GG’ÔNX@dçÎL›6x<ÎO~òžzê)îºë.î¿ÿ~~ô£EOR²¨¬„¦&Ööš$× È¤IÁ z,÷@BIÒ›BOûî»mÛ¶ñÆoPÐ:5zÓM7ÑÒÒÂ?ýÓ?1}útzöìqJIíÞâÅй3UÍ£ÉΆsÏ:ÐéëÙ²FçÐúžt]´¦N:’$©°€$Èüùó)**z³|œpýõ×óðÃSUUÅUW]uʯ1c¹¹¹']›>}º·ï•ÒÑ’%P\ÌšÙ ™™Qz&]£bë$&;") Íš5‹Y³ft­Þ-¥gÍ’ 477Ÿò:@SSÓ;~íÌ™37n\²IJ"‹Ã-·°¶&¹¶_PZ üù$.[ò-b--áÎ_IÉãT\QQAqqqD‰Rƒ$ȸq㨨¨`Íš5']Ÿ5k™™™Œ3&¢d’’Fm-lÞ &°vmr  ŸPZ Ⓢíß £K’Òž$A¾ô¥/‘‘‘Áe—]Æ×¿þuþó?ÿ“~ðƒ<ýôÓÜu×]ôë×/ꈒڻÖÁíæÒ‰¬_Ÿœ+ £GCu‡Râ±,]uIR;`I1cÆðÊ+¯PTTÄ·¾õ->ÿùϳaÃxà~üãGOR2X¼ú÷g+hhHÎ’ ʺ±­ûHX¶,ê8’¤vÀ?~<Ï=÷\Ô1$%«%K`Â~:v„d +-…¥«K`‘$á ˆ$µOMM°l‡.šÈ·¿ Ÿý,ôíu¨33~<¼x ”xu5;uIRÄ, ’Ô­\ ‡ó‹š ddÀÿûQ:s“&Á2J‰56ÂòåQÇ‘$EÌ"IíѲe‘Á¬7ŠùÈG W¯¨¹aÃ`ê—ÆÒ@65¿t–$¥; ˆ$µGee0jëº0`@ÔaÎÞ¿ü{GÖw˺ßX@$)ÝY@$©=*/'>®˜;!??ê0g/3Ž(åüz ˆ$¥; ˆ$µ7 P]Í¡‘%45AªtôÂR†5×иç@ÔQ$I²€HR{óÚkÐÐÀ®Å@j¬€ÄÆ—’AœúË£Ž"IŠD’Ú›²2ÈÌdC÷±@꬀tŸ0’Ctáè<·aIR:³€HR{S^£F±½þ u HÁ¹™”SLf¹D’Ò™D’Ú›²2()aÇÈÍ…N¢Ô6zõ‚òŒRº×,:Š$)BIjOއ+ ¤„ÚÚÔYýÈÈ€u=Jé¶o3ìÚuIRD, ’Ôž¬XP\ÌŽ©3€~Žブ¹ K’Ò•D’Ú“òrÈÊ‚1cRn 6ø<fõ€ŠŠ¨£H’"b‘¤ö¤¬ .¼:wfÇŽÔ+ ýc¼Ö±8(Z’¤´d‘¤ö¤¼œ}CKس‡”Ü‚UP˚ǹ"IiÌ"Iíűc°bÎ/棅ýûSp¤[¶@]]Ôq$I°€HR{Q] MM¼|°„W^ .¥â Hã‚'••ц‘$EÂ"IíEy9ñìlCffp)W@Ö1”¦sº¹ K’Ò”D’Ú‹²2†_Dùò—aРàŸTRPq2Ø;¨È"IiÊ"IíEy9õÃJ¸í6ظºu‹6R[ËÉ`[ßb ˆ$¥) ˆ$µGÂk¯±£ €¾}#Γ ±Xð{[—3Ö­ƒúú¨#I’Bf‘¤ö ºš›Yß³„Œ èÝ;ê@‰Ó·/¬Èv]’Ò•D’Úƒ²2ÈΦ&ë"z÷æÍ!ôT”—ÕÇ/€Î݆%IiÈ"IíAy9ŒCíÞŽäåE&±úö…u™PXh‘¤4d‘¤ö ¬ JJع3uç?NÈ˃;qžˆ.IéÈ"IQ;zV­‚qãÒ¢€ôí »vÅÅðúëpèPÔ‘$I!²€HRÔV®„æf(*bçNR~ V^> GGŽƒx–/:’$)DIŠZee0u~ÑEìÚ•+ ;zŽ q–$¥ ˆ$E­ªŠ]½FP¶²3{÷¦~9±Â³so6Œ àK’Ò†D’"ÖTVÉ » ù»¿ ž§ú¬ËAtIJOIŠRs3±êj*)zs! ÕW@z÷NDßµ‹ €¬Z âK’Ò‚D’¢´n™Ç³ºC!ݺ—R½€df%dçN‚;a57ÊQÇ’$…Ä"IQª¬ eL!·ß\êÓ'ÂäçÃ’†"⮀HRʳ€HRØÉ\½‚* éÕ+ê0íC~>,m*"¶s'ÔÖFG’”@I [M  TRDÏžQ‡iNœ8"I)Î"Iaký»š1®€´ÊχM ¢±k®D’RœD’ÂVUÅþ¼a¤;=zD¦}Èψ±w`¡D’RœD’ÂVYÉŽ¾…tïYYQ‡iºuƒsέ}Š, ’”â, ’¦xªªØØÃô?‹AA¼Þ¹Ö¯‡ýû£Ž$IJ ˆ$…ióf¨¯çõΠÿ¹‘#á•ý­ƒèž"I)Ë"IajÝ^´"Ó?7v,üßúЩ“Û°$)…Y@$)LUU—Ǻ#ù®€ü™±caÛÎ,GŒ¶€HR ³€$XEE7Üp½zõ¢K—.Œ=šüàQÇ’•ÊJ(,dÏÞ˜+ f̘àqgƒè’”ʼÿJ½ð \ýõsÏ=÷еkWÖ®]˶mÛ¢Ž&)*UUpÛmì}W@þÌСÁ°Vw*bÀªŸÁ±cÁv,IRJ±€$ȸãŽ;¸þúëyòÉ'£Ž#©=س'B/*bÏpäÏdfÂèѰàH×47Ãk¯AIIÔ±$ImÌ-X ò裲k×.î¿ÿ~>LKKKÄ©$EjùrŽ(äèQW@NeìXxnëhÈÈp–$¥( H‚Ì™3‡îÝ»³eË.¸àºuëFNNÿ÷ÏñãÇ£Ž') UUpÎ9ÆT7 IDATìéy>à È©Œ•¯ŸCË#, ’”¢, ²fÍššš¸é¦›˜6mO=õwÝu=ôwÞygÔñ$E¡²ÆŒaïþLÀS¹è"hl„ƒCD—¤Tå H‚:tˆ#GŽðéOš™3gpÓM7ÑÐÐÀý×ñoÿöo 6,â”’BUU—^Êž=ÁSW@ÞnøðàqKï"r^š ÍÍÁpˆ$)e¸’ ;w`úôé']?ñ|ñâÅ¡g’¡£Gaõj(*bïÞà’+ oׯtí +;Á‘#ðÆQG’$µ1W@¤  €U«VÑ·oß“®çåå°oß¾wüÚ3f››{ÒµéÓ§¿­ÌHJ"+WBs3_~´ØˆÅàÏþo.‚ÿ]Î?)äV¶au,IijÖ¬YÌš5ë¤kõõõ¥I)))aΜ9lݺ•óÏ?ÿÍëÛ·o OŸ>ïøµ3gÎdܸq Ï()D••Ä32øÁ«£i˜”wÚðáPµ¹' ¿ü˨#IJS§ú àŠŠ Š‹‹#J”Ü‚• ·Ür ?ûÙÏNºþÓŸþ”ììl®¸âŠRIŠLU»{ 9»3--n¿z7çŸkÖE¢KR*r$A ¹ë®»øùÏNSS“'Oæ•W^áÉ'Ÿä«_ý*ýúõ‹:¢¤0UU±ªc—]ƒî]Qj¿†‡íÛáø…Etüñƒ{³$I)Á’@=ôäþç˜={6çw3gÎäî»ïŽ:š¤057ÃòåÌËú0ÅÅðÍo?SëÔNÜ k[Ÿ"†ìÝ [¶ÀÀц’$µ HeeeqÏ=÷pÏ=÷DER”Ö­ƒÃ‡y…B>Uüe¾¡ÿÎNŒÍ­ìPĶaY@$)e8"I‰Ö:ÇPE!Î-¾·ž=ƒ3R~ú\vêMÃç@$)•X@$)Ѫª8Ð}M9½:4ê0ÉaÔ(øÝ31+bï‹IJ%IJ´ª*jÎ)bÜ8·^®_þ28·±¦Sk, ’”J, ’”`ñÊJæ,dÒ¤¨“$Aƒ`Ä88¬ˆœ[`Ïž¨#I’ÚˆD’iÇb;w2ÿp!_u˜äÓqBaðAUU´A$ImÆ"I‰ô'讀¼§œÏaÎáð|·aIRª°€HR"UVr¤CF öôó3PXœÉrÆràU ˆ$¥ ˆ$%Re%+³ ¹ø§ÏÏİaðZvÙ+- ’”*, ’”@ÍU,8\äüÇÊÈ€}ƒŠèY÷:9uIR°€HR¢8@æúµTPÄĉQ‡I^‘oêꨣH’Ú€D’eùr*)bðàˆ³$±Øè‹h$ëÍ~IRr³€HR¢TVÒ”Õ‘½}FйsÔa’W¿AYÅ(ZÊ- ’” , ’”(••lͽˆ‚AÙQ'Ijýû«HË, ’” , ’”(UU¬îXÄÀQIn' HvÍ hlŒ:Ž$é,Y@$)`åJ–5qî¹Q‡In' HFÃq¨©‰:Ž$é,Y@$)V®„ÆF^®wälõè5 ƒ'¢KRÒ³€HR"TVÅXz|Œä,ÅbÐ}@wvçµ€HR °€HR"TVr|ÐpŽÐÅÒ €uÝŠ, ’”, ’”UUì>·ÀÒú÷‡êÌ"¨ª‚x<ê8’¤³`‘¤¶ÖÒUUlêYD‡—u ä׿?,:Vû÷Æ QÇ‘$ ˆ$µµuëàÐ!VuáiÏZÿþðâÞ`EÉmX’”ÜücQ’ÚZëÈK Ý~ÕFú÷‡Í ýhÉëg‘¤$g‘¤¶VY ýûóÚÎ>žÒFú÷ w]’’D’ÚZU±f u˜Ô0`@ð¸3ß"IÉÎ"Im­²’#±g\pAÔaRÀ“Ë3Š ¶vîŒ:’$é Y@$©-µþp¼¥w00=|xÄyRD,ÅÅ¢KR*°€HR[jýÁxEVðƒòùçG&µ””Àÿ­ Ý»[@$)‰Y@$©-UVBn.{1`téu ÔQ\ ›·fÐpa¡D’’˜D’ÚRUòÆš˜óm¬¸8xÜÞÇ"IÉÌ"Im©²ŠŠxýuç?ÚÚ!› Ë3‹`íZ÷ˆ:’$é X@$©­ìßëÖÑ26¸¯+ mëÄ ú7žæk^úÞòˆI’΄D’ÚÊòàâÚ~E?nI„iÓ`g¯Q§™+܆%IÉÈ"Im¥²:vä•#·`%¾ë·dóF‡‹è±Ñ"IÉÈ"Im¥ªŠÚÞ£ù«;³¸â 8H¥®5]ŠÈÛ^u IÒ°€HR[©¬ä…º">þq˜32ü/lÂlêUDþÞ•ÐÐuIÒûä’ÔŽ'¾r%KЏäÈÌŒ:Pj«í[DVK#¬\uIÒûd‘¤¶°r%±¦&*(¢W¯¨Ã¤¾½ÆÐBÌó@$) Y@$©-TVÏÈ š1ôîu˜ÔשwW6un‘¤$d‘¤¶PQÁÑp”s\ An.TgY@$) Y@$©-”•±ç¼ Hrr ¼¥(8{¥¥%ê8’¤÷Á"Ig«±–/g[¿bzöŒ8OÈÉÅÇŠàÐ!X»6ê8’¤÷Á"IgkÕ*8~œõ=KÈÉì쨥¾Ü\¨ (xâ6,IJ*I:[ee‘Áꎅn¿ INì¡7Mù, ’”d, ’t¶ÊËaÄjtñX!ÉÉ  w]’’D’ÎVy9””°gèa9Q@ö n- ñx´$I§Í"Ig£uâb HˆrsƒÇ]EPWÛ·GH’tÚ, ’t6V®„ãÇ¡¸˜Ý»q VHN¬€lËs]’’D’ÎFë:……®€„¨sgÈÊ‚íY¡G ˆ$% ˆ$òr9’ø9]سǰÄbÁ6¬úý1(r]’’‰D’ÎFy9³?47»¦œØ¿ ˆ$% ˆ$©††`½õX` ÓIdãFØ·/êH’¤Ó`‘¤3thÉÊ „´Þ Ü‚¦ä_×:ˆ^Um IÒi±€HÒúÃýe4“A|l!»w×\ On.,[ÿöø4duv–$% ˆ$¡œµå¬bëjÏq Vrr`Ý:h!“-9£- ’”$, !ºÿþûÉÈÈ`ôèÑQG‘Ôì*§œb^y6m‚®]¡S§¨S¥gÔtv]’’…$$[·nå K—.Äb±¨ãH:[ 9TM9żü2üú×pÝuQ‡J/'NC8*3ÆAM 9m(IÒ{²€„ä‹_ü"_|1%%%Äãñ¨ãH:[¯½F‡xÕÙ%<ùdð³ï'?u¨ô2dôïÓ§ÃÂcÅÁ}D—¤vÏ‚¹sçòÛßþ–™3gÇ]‘R@Ó’`½`ÚX`ð`¸òʨS¥—¿ú+X¿>(!óêGïØ1˜J—$µkknnæsŸûŸúÔ§¸ð £Ž#©_  _ë9tè¬~dø_ÔPÅbСäåÁ¡†4.´€HRÈŠ:@ª{衇ؼy3/½ôRÔQ$µ¡XE9e”pÑùÁY„C‡F(}õé<5žÜEÏGF’ôžüûºÚ³g÷Üs÷Üs½¼7§”:Ž§Óš`½o_1²³£•¾òò‚ǺA¥°f'¢KR;gI ¯}íkôîÝ›Ï}îsQG‘Ô–ª«Éhj¤Œ’7øUtN¬€lî[|PV]IÒ{r V‚¬Y³†Ÿüä'Ìœ9“­[·¾yýرc444°iÓ&ºwïN=Þöµ3fÌ ÷Äý%[MŸ>éÓ§'<·¤Ó°t)Í™ÙlèRè¹í@¯^Á<Ȇìáн{0rÍ5QÇ’”f͚ŬY³NºV__QšÔaImÛ¶ÑÒÒÂÝwßÍÝwßý¶×ÌŒ3øîw¿û¶×fΜɸqãˆ)éL,]ʶÞcÉͱ}´YYг'ìÚ%%¢Kj3§ú àŠŠ Š‹‹#J”, 2zôhfÏž}Ò-wãñ8_ûÚ×8tè>ø CZ•’Ó’%¼Þ} }ûFD'äåA]0~<<òHÔq$IïÂ’ ½zõâÆo|Ûõï}ï{Üpà aG’ÔêëáõשõU H;’—»v)…o|¶o‡‚‚¨cI’NÁ!ôÅb1"”’Yëöžã- íHŸ>­+ ¥­ƒènÃ’¤v˲—_~™êêê¨cH:SK—BNKë‡[@Ú‘7W@ €~ý‚O’¤vÉ"IïÇÒ¥ÄKJ©Û“aiGúô Èkb”e”òÒ7—±sgÔ©$I§b‘¤ÓÃ’%1ž–ÈÏ:NÈ˃;`Ô(xaßxŠš—±zU<êX’¤S°€HÒéÚ²vîdilpñÅQÒ ãÇÃðáðíoÃç)¥õÔ/[u,IÒ)x,I:]­s¿YWÊĉÁxjJJ ¦¦õɾñÄ–.†G–I’tj®€HÒéZ²„ø¹çòÄü|>øÁ¨ÃèõèÁ†Ž#ÈY½(ê$’¤S°€HÒéZº”ºÁ8x H;·>o"¶.Ž:†$é, ’t:šš ¬Œ¥Œ'? £¤wS7l稆Ç£Ž"Iú3I:«VÁ‘#Ì=6žÒRð<ÑöíXáD²h&¾¬,ê(’¤?c‘¤Ó±hdfòêá ˆ:ŒÞK—ñr®{ÅmX’ÔÞX@$ét,\cDz¶¶‹$ œ{^&KOÃ< ˆ$µ7I:‹Ñ4þböî…þý££÷rî¹°˜‰t¬X )Ij7, ’ô^êê`ÍvNt¤ýë×–eL¤SýNØ´)ê8’¤?a‘¤÷²(8Obcþ$Àd™ [úO ž,ò<IjO, ’ô^-‚ü|Ö5 , É¢ëà>ìè:;"Ií‰D’ÞËÂ…0i[·ÅÈÉ®]£¤Ó1h,ï4Ñ"IíŒD’ÞMc#,[_̶mÎ$“ÁƒáÕ†IPY ÇŽEG’ÔÊ"Iïfùr8z”ÿ^1‰­[- ÉdÈøÃ‰A‰,/:Ž$©•D’ÞEãÜE§ÿúÌ86ntþ#™  ËKKç.°`AÔq$I­, ’ô.ö<³rŠÙ¾·••®€$“Áƒ¡™,öŸóçGG’ÔÊ"Iï¢cùBª»Lbذà¹+ É£ ²³a}Á¥Á HKKÔ‘$IX@$émÛFƒ›i*½˜›o.¹’<23á¼ó ¢Ëe°w/ÔÔDI’„D’ÞÑžg0àæIÜ~;ôè^q(½/ƒÃÜã‚6â6,Ij, ’ôö?3u ¡ôÆF‚={‚³%”<†Õ[ºBQ‘D’Ú ˆ$½ƒÜê¹Ìe2}úÏc±hóèý2Ö¯‡ø%—Z@$©°€HÒ©Ô×Óck5‹³'Ó¡CÔat¦†àPᥰalÛu$IJ{I:• ˆÅã¬È½,ê$: ƒëú]|ày ’9 ˆ$ʼyìï’O}¯¡Q'ÑY8qûäÕûúO܆%I‘³€HÒ©ÌKMŸÉäöpð#™åæB¿~­wà½Ô9Ij, ’Ò^UüàráÈ(+cy÷ËÈÍ,–ÚȈR@–/†B$I‘±€HJ{³fÁç?û÷·^X²YÒq²$ŒÙZ@.»,8 }á¨#IRZ³€HJ{uuÐÜ ¯¾Úzaî\èуªÆ - )`Äxýuhr>ôíû'ÿ¢%IQ°€HJ{»wsæ´^˜7.½”}û3Èɉ,–ÚȈpü8lÚƒ+®€W^‰:’$¥5 ˆ¤´WW<Ι46¢E0y2õõ¸’FŒkj€+¯„eËààÁH3IR:³€HJ{»wàA°z5ìz¾Ž¡å’ËØ¿ß’  €sÎi- W\ì·ó<IŠŒDRÚ««ƒ[n >^þýWáœs84|--T‘\ÐZ@†‡ü|xùå¨cIRÚ²€HJkÁݯFŽ„/} Zæ¼Èê>“Ù$°€¤Š#`åJ Ö:b‘¤ÈX@$¥µè½{Ã|½«²çñ³MSؼ9¸nI 'BYYpÄ W^ ååž"I±€HJk' HŸ>ÀâÅd7å%®¢¢"¸nI ×\ Á θòÊàååÿ¾32àŒ:–$¥ ˆ¤´¶{7Õý1Xö4f:uò¼©hôhèÜ/zö„ÒR·aIRȲ¢ IQ‰Ç¡nWœ Ž?·}èÍëÁ]ZGŽ.›#;;è³gÃÞ½ðùâ©ôþÍ¡¹23£Ž'IiÁIikÿ~8¯i Ý÷l„iÓNzí¹ç೟&—kòdX°x~Qû ‰TTDK’Ò†DRÚª­…i@ee%sæÌa„ ïø¹S^^θqãBL)¥¶1c‚_mÜg{ö ÷»‰æï~ŸãÇác‹:Ú/~‘æG~ÅÈnÛÈí•ÉüùÁ]z% üy­-¸+š››¹õÖ[Y²d O<ñÄ»–I‰³c\uQI~ã§ÝÈG?jùÐ;øèGɬÛÉï¾4ÊJø·‹:$¥·`%оðžy殿þzvïÞͯ~õ«“^¿ýöÛ#J&¥ÆFؽ&L€aü/ûšrù·“£Ž¥ölÂ8÷\F¬x‚Ï~ö ~úÓ „døWv’Ô&, ´|ùrb±Ï<ó Ï<óÌI¯Åb1 ˆ‚]» ‡þq¦dý–—²¯ã/в£Ž¥ö,ƒ~}”~õ}fÎÌdùr(*Š:˜$¥ÿ>'^~ùeš››iiiyÛ?ÍÍÍQǓ҉ô!‡W0ôØ*2?vÞ„Nïéæ›açN.e>]»ÂóÏGH’R‡DRJ;q+Õó=zpÓ®‰6’Ä 0`ÙÿûS¦ÀsÏürSS°º&Izÿ, ’RÎ=÷À«¯ïØ1âtýýo‚m5ÞÎH§###ø~ùío™öf.„ýûßzù¡‡ °0ºx’”Ì, ’RJ<ßúÜw_ð¼¶>Ðc± à¶Û¢ §äróͰc7ôZ@s3ÌûÖKK–ß[ÑÅ“¤de‘”Rvï†cÇॗ`Û¶`äc™¿¾}áòË£Ž§d2q"ôïO¿yO“¯½öÖK+VûöEM’’™DRJÙ¼9xŒÇaÖ,ر½…iƒ[nÌÌhÃ)¹ddÀ-·{âqÆŽj|³€46ÂêÕÁÇ{÷FO’’•DRJ9Q@®¸¾÷=8>g½owû•ÎÌwÀ®]ÜÜý¬\\Z»‚- ’ôþY@$¥”Í›¡cGø—ìløÇþ¿¡¡`Lšu4%£±caôh¦îü«Ww¿:±ý , ’t&, ’RÊ–-0p`0î±±æWízŒuþ¡3‹ÁÇ?ÎЕ¿ãœ†}¬[^½‚—- ’ôþY@$%­ãÇß~móæ €ðôÓÁ”ðw†šK)æc#ÖÒÌ­<Æk¯dÜ8èÒÅ"IgÂ"))íÝ ={ž|kT ȹç¶>ùÙÏà’Kà‚ BϧÒ¯LÊ]Y°reP@F¾ÿ, ’ôþY@$%¥µkÿÿöî;<ª*ø;!$¡C%)&„JSzSXXª, â¢" ² ˆ¢(ºv¬¨°DÊbWD”"(é½j()„’ûûãåpg’I2“„÷óýúâÙJS0ôÑK€ˆˆ\- "R :Ä}W^Šã XP;f!‡`iø•\GþOü ED³fP""rµ€ˆHtèÇáûù›6#FØsÍCæ|DDÍ›{7‘R¸4n 4kL˜@ˆˆÈÕR""Ò¡C@­ZÀí·óö½÷róÁžÍãá;ãà‘G´÷‡\?Ì›ìÞ}%IJâz""’3 @D¤@2«]uî 4lÔ¯Üwðk牀¯/0h·“(…QŸ>Ü…ð³Ïœ>ÍéF;ÇŽy;q""ƒ)p.\`e¯Z5àÅ9Ýáw&üì3  \9o'S £€Î-š<ŠŸ‡esæð®]»¼›4‘‚Bˆˆ8f²yµj€P´èå;~ú ˆçrX"yeÈàìYDlü°`+É "Rà˜%x«Ww:hYÀG:uêx%]rƒ¨YèÚÕf~ ÀBb"ïÞùC, =ˆõH EDò5 "’oÅÇãJåÎÙ¡CrU¥ŠÓÁ+€õë'ŸôXúä6|8ŠíÚ„`÷GÍšY÷€ìÝ ¼ú*ðí·JŸˆH>¦DDò­6mØjœÞ¡C@åÊ€¿¿ÓÁ>ÂÃ9+]$¯u숴ðÞA™2@·nY 6ðråJÏ$OD$?S""ùRt4°g°zuÆû¢¢€›nr:°oðË/œûá£lM<Àá€ãß/ âÁÚkÁ¯á¥KîO߸‘—+Wr8–ˆÈL%µˆäKË—órË× ›e‹¥Ûcðí·  -½+å¸çn(Z ŸƒÚµ”àÀ÷çnØ”*9bÏa¹Q)‘|É 'O11öñÍ›¹ V—DE_}<÷P¬˜ÇÓ)7°"EPñƒçP{ÇtÔ+ Àý0,ËbȃòöªUL£ˆH>¤DDò¥åË;îàõÍ®|1 IDAT›íã³f±%¹mÛËÞy äÒ¨"Vü_ÂŒÊ_½‡âÅmÛ2±ŠŽŽþþwàæ›³ž2z40aBÞ¦YDÄÛ€ˆH¾“lÚüóŸ@Ù² @>úxã à×_Y‘óópð ·¡9(^ÜÛÉ–‘¿?ðÌ3p|ó5:†îÇóÏ!!je˜ù-Zd€LŸÌž·Iñ6 "’ï¬X¤¥­[õë¿ý<ó ðÊ+\i÷Êð«wße„2t¨WÓ+7¸!C€Šñ]ØËøáàèQ`æLö„üò ðé§œ¢T¥ Ю°npì˜û§:z”ËO‹ˆf @D$_9rxì1 n] "hÐX³¨T‰+b ôêÎöýâ F&%Kz;Ùr#+^xí5Ÿþú†oD«V*8w.pÏ=œ2l÷®éÙ“™>=ãÓXçÞ‘ÂÈ×Û 1,‹´¤$`áB®¨Û ï{é% iSþÅfåaü–^‘+ÆŽ^xÝ»ÏÅk¯q(aãÆìñp8xZÅŠœÛ4u*0x°ëSœ>Íe|åoÁ}xßñã®ÇåeJ pê”g’-"â @D$ÏX[usê»ï¸Ãùßþf âäs?¿ËÒÒ€#€F€‡º®é¹&½zÍš¡Ú„Q­™†òåûîsšeŸîzÜ €æˆHá¦DDòÌo¿U«çÏgnj*ðÃ@ß¾@‘"YœøÃì&ùÏ´ë¹ä/ðÞ{p¬_ºLÁgŸ¹ßš¦R%ÆÐ/¿ Ì›gW""7 •Þ"’g–,aðqàËիΜqî¢E¬tõë—Å&&Ï?Ï&ävíò"É"צm[àpûÏ¢ÏÇ3=íÝwÙÓ÷Ï2ø\MD‘ÂLˆˆä™õëyyàð×_\èÏ?3ž üë_À­·Mšdñ„¯¾ÊZÚ{ïåErE®±cU<ûl¦§øúrûš'€¨(;z”CÔ""…›É©©öl{÷òúüù®ç­] ´oω·3gf±òÏš5À¸qÀë¯aay–n‘kV±"0f ð¿ÿ±0uëòrÇ^ÆÇsxVåÊv’–¼ÿ~æ=‡""‘É»wçÎñúÀ¾}¼î€Œ4kÆß 앯2HN âÄógžÉËd‹\<´lÉM ““Ýž ”)lßÎÛG2v©TÉ@6ož{˜3ÇCéñ "’'Ìð«ÆíÀ@`ÿ~9‰ŽF}”û$Ôª•Å“½ý6wsûâ Ž]Éï||€‰y¿ü²ÛSö‚˜wÈÚµ¼<|8w/ìŸÛôS–ÅyÇS§þþ×7¡"žàã|õ»(~˜ßk'uë.{öp÷óŠ9 ýèQߺ•¿%w= ¿ÿôîÍëqq®÷))8œWA¹Q() ¾ûŽÆÁƒîï=èÖ-çÏwð +¶r%†{ïeOEN:ÄÀcÚ4Þ¾çû>3,¤D V¬rdùrî¡ðôÓÜtP¤ ëу󘞘1ãÊáªU9êÇyÛ ðŸÿE‹Ý»³ÇòÂûéŽ_Þã0"‚ç8÷€:Äû{÷f¥öرëûV, xí5à›or÷¸ øÖ5/Å•z@äF¤D¤Ø¾¹Ì3„#ýJ*Ë—s‰ÛÕ«]Ÿ>ÍË+ìQ!_|ÁÊPµj®-ªçϳ#"Ýè‘+y„­´#G:°eT©)ÂNŒÍ7‰ŒäØ­–-¹]´Hañæ› ¨ûõ6mÀßÄã ò”J•€¦MyÚpÝÓèÜÀ`3dË91ïzˆ—f™ßì¼ö÷PÌŽ †r»Â–I¿sÞ" @䯤D¤˜5‹=%J¸@.^d€’––qÃ2S1Y´Èõ¸ @Nœà ·°aWÔ u}¯¾âtŒËu&›6±÷cÐ NÓ<Øõ~__ছr¸w`l,ð÷¿sÈʯ¿²iW¤°0óA""Ø#rùÇùî» þ÷?ÿþþ}¸q#ðõ×<°gcìXŸ4½AA@H:±±@ÇŽ<'$hÓðóã\‘¦M3·LoêTåb†‘Ä$%%o&‰_¼ÈÀÌáÐ,¹±()fÏfÅ¢J÷…`T—䀓'¹œ£Ù¯/}ré/ÏœaåÄLJð’“9aµqc¶¨:¿Ž©¸˜qêÎÆŽå0«ÿþ—•çáWÆOp ,= tíÊ72gP®\6)€J”à8$ËâØÈ˵Î:uØcáÜKذ!c•ªUyû÷ßÙË8mšÝR¡ãõ¸8þÆçÏçÂwÜÁø½NN;Y»80ó¹]–ÅFŒ³gù›îÖ 6Ìý¹fÚv~â,&†ijÜèÜÙ>nz@ÒO˜ÏLf=®Þðù眯“~¹ãkuø0ßg½zê‘‹‘|β8£E ;0°,Ù0ôž=öù'O2`7ŽA… $V®ä8ó²eYç9}šÃ7ê×ç0­mÛX¸šÄ´Æ]¼È!\@ƱÛóæ?ü<õ{:2bõôÓœ|š©S§Øóqàƒ›nÊíÇ$Rp„„ð|êÇ,fSó àoõóÏy;:šÁ~@'š³WaÇ+dz7àï»X1/ÉÉü­ºsâ˜Èüáµ×ø;wò÷Ÿž @RRܯεgÛœy—ɃrÓræ 7.]±"ûs=a÷næ­îz~öf?—Ü0ïš5SˆÜX€‡]º\û佋µÛjAÏ¥wÃÃídÕ*Ö[Ì*4éSEG³µ±eKþï|ó9`_¦ ‡\ýþ;”"EXaqÞmùr>¦{wö€˜ gútŽ"éØ:ôÞàÑ£@ûö,áçÍãž"…]x8»,NœÈQrÓMöÜÑÑ *T`ÐÂßùŽ\Ö7 À½øÖ[ü wéÂáUß}ç:)=9Ùîý€W_ecÂSO1Àع3cZdGà~–Y|Ä^šù-¦äĉŒ‹b¤·?IfÎÌú¼ëaà@àßÿÎú“ö̆¥=ó ð䓹í¨(öBßv?w=Jây‰‰öÐdÉ @ €½{Yœ;—“¯EãÆÀøñ×']’µS§Xð_+\8 fRid¤}NÍš¼î€:Äó;tàXq???~œ…{Ù²œ³qô(7ˆ`kiåʼ?)‰ß»J•€áÃY@.[Æ ²wßÍSÓ§_ÃÑÑ\7.ŽÑu“&WùD"PíÚ BŽZµÊ²Æc:oºÉî â±à`ÞÞ¼™HúÇ5jÄë÷ÞËËß~ãåÙ³<ôh»W㘜×_çmwû:4oÎ@%³¤L{Ùm€>Ì ûaX&ˆq7ìóz[° û×É.‰½º kT{­Ì0;3´./9ÂSÁNæ¾ü’£òÓ0ÀÂFHðÙgl½®WÏ}wwN]¸ÀŠk~éÒö„cDzŸx™Þþýö|ŠœøôSYHï³ÏØ»pölî^?½Ý»ÙÊyóÍöj7·9§Q#¶zž8a QQ¼ÂtšŠÇ±cvÁÑOqq P¾ÀÇΛÇ®Z¶d…£S'Â?þȱèW|,_΀#1‘OxË-WùD"XD3e??ÖêÓ¯qÙÍ7³Ç£_?×€¿o€¿÷:u2©Šïÿü3o?û,ó»¥Kí^òå<”.ÍFÍ›3>ÏÁƒ .jÔà~?éÅÄp¾ÀÆ3„3:š-ý@öðL²v-³ˆ‹™ßíÜy}+…çϳ\ÍnE¯˜æuË–¹ý¸8>óRÉ9ÅÏÙ¬x½†amÙ’ù|•3¸Í’éõ’ŒŽa#â¹sÞNIᥤرƒåÒ­·ºßç!§ÌXÓœ.ÉX<û,[ësZ`ÅİQÒÐ91e wÿN?´-2’€s}"³½:œ}ý5+ùÆîÝœäÀÀàäI»R` Í={ØCèÚ²~=ƒ©à`¶~vèÀŠÅñãö,À:>‰‰áܦMY9iÓ†÷­XÁçËѲºéY0q"£³°0®\«ÖU<‘H!Q³&TM›òÇÿé§2­ÿ›qz¬¼9âÚb¤ïI¯woo½LšÄó7l`ùP½ºëoºAƒÌêÕùóͬÄ99p€ÎáÜëð=Œ›y¯~L ‡„¦¤°—µF æquëòµM¯ÊµÚ½›—ññ™W6/]b€Ñ½;óÎô=))vÏ…»€,½ƒí†)€˜½_œGâ%'sEòÜ6=ʼÜ48¥gzµ²[ÕëÈï Ùž93㊎ždV‰Ì‹•Ï„€f\¯éz¿Z&cܵëÆèz=røþ{#:y2gùí7~66äìüK—Tœ:•± 6½Î=0}ú0(r–”äz{Ú4ö:˜Þ®={ìú¹ V®´ïKJâ¹µj±õÒ91sDÌã¶š:ÁØòÎ;À}÷¹ž¿l W³[ó/¿0€ Ïþ³qëÔ).õ3t(ð¯±&äœ8‘U™2\=bèP.?Õ³§ËdòåÙ8Rµ*¶oÏØdݰA&5xùe®N÷Þ{Ì /¶7 5Lâ ;Ç<¦Z5×d÷næ#gΰœ2H»vì9:•«_Ÿ= û÷/¾ÈÕñNʘΘV¢¹ÏPZóŹsù¾_|1ãc"#s? Êô&™ññüÌz÷æ|öíÙq•˜Èûs¿ Hf:wÞxƒ×³ê™8‘ñÜnø¸jÓkz‘ÒËI’œÌ|Þ,|•¤$nš™˜È×}øáÜï“þùzödî- @òž|.!ãmëÖeÁ}õÝÏ&sMI¹¶Ì!+.~˜ûaG))¬›I–×Ãĉö .9]öqút^nÛ–³ó##í"}‹Üž=U1w.ÿggΰptž²|9W›<™·-Ëní2='»wÛ~SW?žÇöìá¦c–Å‚=0ß‘sçXPš[œ[Hƒ‚X`:÷€øøpƒfóüAA3g²àn^ÈÆ¼lÒÄu¨ÕÉ“ü?õíËá»wÛ½*‡ó/%2„dž áXç}ûXàûú2-ii,ÐÒ÷€ÀÊD™2œh¯ZS¯žÝÓeº÷VVÒ÷€¤W¤¿+ýÅów6ϵƒ9pý®»˜ÈíÛYS÷zô`×êm·ñwÓ½û•š­ @;?÷ñáo<»Þ£O{¸e¥JvJúsΰaÌÛW¬°ËšêÕ89f*œë×3ÿ5ÀŸ»iÙ¯Z•¯·jó«÷Þcyb†B&ˆyê)`Ì×e¼»wçs8—C±± ª¶nÍÙg`ìÚÅ ¬L~ÄdzÜp eFT­Êž—É“yýÏ?yÜ4pU¬˜}Ht4Ë’½{í9f‘Šùº–Åžò„~>»wg?úaûvΚ=Û@œW;3¶‡6eU¹6AÊâÅîù…e}X˜ýؿ߂öïÏ:½Y1ŸçŠîËÝ‹ùšë×çÝ$q yOHJNNƨQ£‚âÅ‹£yóæ˜?~®žÃ¬+a¯‚â<}æL–Q#GÚ÷e–îÛÇñ·åËg\¯|Ñ"f4é-_Î×0…Çë¯óù„Á›Ã‘}/ˆ™KóùçlÌÜ÷€˜-ýf³îÎ+UŠ•ýùóY~9ÏÉXº” tíÊ2³vm¦Ýæ}||Ó¦9úm³gݯÂöë¯üÞÜ~{æûÚ\+ yOH0`þóŸÿàÁÄÇŒ"EŠ k×®Xž‹µYwì`!P²¤¡›–õë¹ë´‘=ó 3ÆÔT{ø–±oŸ½,¢s ÿÎlñéÕ‹Ö¤IìúìÀcùr¶.ÃÂÂÝ8Û9s€8®xÉ’Ü §ZµŠ•óeË2·š•'ž°{7ºuãç6s&3öÀ@¶ŽEEq(Û00pÂÒÒ¸1+Ú:¿øØ¨(¶™J;¦·%×Ht4k 5krìÆ /ð š~›gÉšÃÁÌ`ÇvOœG͘ð$ª úJÀ‘féÜÜ2+S¥ï˜?U©ÂÞé£G9ìéÍ7™Üq}Û6¾~Æö°ç€öW®Ìë&¹óNÞ8í&˜¸píÎÏ‘^Ÿ>jºloϘaŸ¿};‡xuíʠɹt––ÆÞ…ˆ–Ó§³’™?Ÿÿ“ß~cŽre;é×Ï"¼e óý&MÜW®§MãH‹-[ì¹.£F±²ï<¼mÉîõÝwÜô644ó3™À(;qq|/~~î‡a™àgÐ 6:?îÙgíÿ÷¸q,'ë×Ï|Xµe¹ïEQ’÷€ä‘5kÖàÇĻヒ1cÆà‘GÁÂ… Q½zu<—¾9' f:ÀÖ__;ùôSfŠ/½Ä»e1˜8p€™PŸ>@ëÖ<žšÊŒ!}’œ üóŸì]IKc@3dWvìdÙ2Ö%kÔàëíÞíÚ5šÀ´6kÆŒ7%Å®¸ÏËc™u•ZÁƒÙ²õì³ 2Ë0Ξå{w~ýU«X`uêÄBcî\{íûà`fLQQ R>ûŒAÀ}÷Ù•õo¾a·µÙ ÃLJŸÑÔ©,tÊ•Ë8ÉܲX7jļxq;³Ü³‡@©R,×®ešn»­dS¦ð³7)5þñt-Z°5Ñá`KXéÒ®-“•+3Å‹ÛA© @yéã“qE+£BûÿšUˆ¶•£$5•Ñ_¿~ <&Mâ$ó½{¹³YÉ’9xq«xqþŽFÂÝç¿ÆÔ@£Ñ½Øš‘›uÃÝhÛ–-üY-FÆüéÀÎsV£ó’† íVîôÁØ1ö‚ÎÀ¬âäI õêÙ=âY õê1oŸ7= 0¿,Z”y÷{ï±<üé'6¥÷å— Ø.\°{@.^ägðÖ[,kMp±ã¶CæÑóæ±’ÌÇÆÄ°gdÃ>ß?°\2eMT”¼Í›Ç ÏçrMløpNN?p€Ÿ‰ók-Xyzñ"‚#øþ6|?Î`âûïí©D[¶°Bœ±rÉ¡v&°½õVö´ïÙÀ凸Œg#d»vöco¾ÙµÄÔI;ð0u‚ìVÖŠ‹cúš6Í<¹ã~o÷ícýcÉ®äþÁœOºe dCBøy´ic/Êâì‘Gã§ç.™0Á5à‘k£$üüóÏðõõÅàÁƒ¯ó÷÷ÇÃ?Œ•+W"&‡ÍüΈ3äÇùƒûé'¶„‡³R~â„Ý2d»df%96–™Th(ŸÏ¬„µh+Ö_ÍÖ÷¥KYÖÅÆ2ó0ÕùóÙ2rÿýü‘_¼èº†¸™ݬ3¢ˆ»õþ·ßXFfÖúÅ–µÎ9<êûïùz?ýÄçlßÞuÈÔÌ™,ẖÄDfcÇr‚àš5ÌlŒ¾ŸX7.VŒõã­[t$&²…§Of¨ÅŠñsÚ¼™­~ÿ;3Bçÿýc’Ïœ±÷ßhÖÌ.°œW®êÞ…óéÓ @Z¶äñÇs ^{eÛ¶ x¦LáëïÚeX „{îáõ°0¶™ÍÃMdwë»ë1²‚d€¤¦²kì¹ç¸$N§Nìæyÿ}~ñÆŒÑ W"×S` ðê«xúQìH[wªWgíuñâ«Zâ°}{V´²›À^ª”]Yv§A^- —Þ€y¹¿cG-2yKXóßèh–cÆðxVˆÃÁ9(󿱬HJb¾X»6˱5k¸ÒWëÖ'•§¦réñÑ£y»N¦`9äçÇÛf>»$(ˆ<óæ±Â\¹²ç×®mï"?u*Ï1ã¢Ø›àëË2ÈäÓÿ/½d·6:wfænId€ p‰‰ìeêуåÁÍ731û­˜ÿÍ›y¿»!Xfžâ‡ò=Õ¯ÏF²yó؃Rº4ï3C…‡ü9 eËr¡”ãÇù9lÚÄïÍüù¬f>D °?Ï6m€8^'OòskÛ–/À²ù­·ø3xâ Ö Þ}—eßÔ©Lox8¿sÉÉös8Àrvöl×))L±b® Ø|ø![¹N,ÉûÛ߬zõêe8>þ|ËápX³fÍÊpßúõë-Öúõë-˲¬óç-Ëá°¬ÿû?ûœV­,ëÁ-ë‹/xßÁƒ–µn;§Oç值ìÕ˲J•²¬Ñ£-kÑ"Û¹Ó².´¯gYÅ‹[Vjªe%'[Öĉ–5iï?}ڲʗ·¬êÕM'%sè¯ÏšeYiiL×;ïXVÉ’–uéo?ý´eU©Âû›7çùÏ=çþ³úö[Þì˜eÅÅñýÜu—eµooYÛ·ó¾’%-ëÀžÿê«fÆ ×ÿgfƳÿ/–eñ ##ù¢÷ßÏ/À7ýØc–µj•ý…‘<óüóÌÿ/¥¤1ã6Œ"ÀßeŸ>–õÙgü½zð7yþ<óÍjÕ®þ9î»ÏΟ²>÷«¯xÞM71Ï6/R„Çcb,ë•Wø‘8 [¶ðþdÙf]¬+IDAThY–õ×_<6{6o÷êeYû¯‡†ZÖ³Ïf|ý‘#-«jUËjÙ’åò… Ì wíâÿgòdË ¶¬Ò¥Y†ÅÄðܰ¬ðp¾ÞàÁÙ&ÉÉ,ËßxÃýý/¿lY,Oœ`½`Â~‹óuªVåçép°þ0a‚eùú²ìw~?¾¾öçéú:/½Är´~}Ë s½ï×_ù??~v‹„ x½_?Ë*ZÔ²jÕrýœÝéÚ•u€ßç¹»wg|¨(~.E‹ZÖØ±,Ï?øÀ²¢£íÿÿk¯ÙÛº•ÇßyDzΞe9ûä“–U¢ÏýõWûÜcÇx¬aCþÿŒR¥øzçÎe¬¯Iî©$ÄÅÅ!8}Ó3påXlvÛÀ‚-–e·nlÙ¿Ÿó:vdóiA1âž}–÷OšÄÖûÙ³9œÉá๦Õiûv¶ÐÔ®ÍÖ ??vûš•Td+…éžlܘ=UªpÙÂÈHޏ4ˆ= Mšpr"ÀÖ Ó]¿e [~þÙnÉøê+v™öêTAAlõ0ÔV¯f—½Ÿ[TLgÒÞ½|GrÉ-[øÞ2k© á9IIögU´({.Ö¬a¯EÅŠ®x5oαÉ3f°a¿AŽ+ýävÛ¿ý6?þØ^–¶U+¶øìØáÚ°küÑGùùU­Êù2îV–ª[×µ·#;<⺄¥iÁ¬T‰ŸÉûïs΋³õ€\¼ˆ{#¶`Æ½ß è½çØgÆ~ýë_üâ ±GŽpL\³fšã!âíÛ3_.âë`ÆûÉ'Ì V¯æ>"11ì&Žˆ`wêwr<Ê·ß²ùØl`q/Ζæ¬z.²cö"*]:û‘›û/f>Àr 5•­÷!!Ì—Oœp·¸r%˼nÝ8”`ÏôÔ©Ìê–ƒ;wò¹œ÷5qÖ®ïÛ´Éžßòé§ü ÂÂX~ÄÅÙ+Žgïûaz\œ{@2ãçDzÜyq—Y&&²G¾K{!’j՘ϛýb¦sÉ–Á·ßÎô^ºäºGÖ† üLn¾™ïŤÑxþyfÿ»v¹n– ð1GGtèÀëû÷säC‘"œW“’²1 ëù fVË–,Rœ‡a-]Ê÷W£?—zõ¸€Á… |Ý*U8:Á××®3¹ñ䓜’Xº4Ëʉ¹|p­Z¥a˜áW¬g¤¦²G$!ïÁŒtk“‹ªŽäÆ… àï¼ôÐeWîÏÎÖ­+ÖU«rfÑ¢v¾\9N*ûóOfªaaveº{wNðÛ¶Í^ªB{%,³ˆ33>×t÷Þy'—Ü3?f-sçÚãR‹eùf˜aFS¦0ƒ|î9v]nÞÌç<˜Ý«íÚñ}´j嚆V­øƒÿøc^0€s˜eÖ¶-3˜ 8w",,óý)BBø\€kfß´) ˆØXvÓ;ן~𭙤]¿>/Ÿy†¤ó )Fóæ|ŽAƒ˜Québß΀0¯™!XfþÆc¥;!- }N"ÇPÇPnÑ1àÌ1{Œšù‹‰A•´4Tد]¿>ÿi­ZñŸ[ºtÞ¿q«cGþ¹ðña¦Ö´)'$$pÓõëY[ýõWÖ€à`Ž5 eÁR©’ë_ÅŠ,\rÙ¨ðÐCYÓÊNçÎÌ^rijÁªF {8Î-·ðÒä¿Í›3=Ë—ÛeݪUÌÒÌþÏéÝÛ¾]§ã¸E‹8lÇì—â¬uk>.11ãP׆ í=4:wfå~Ê6RÕ¬i¯(•“°Ëòøxþ{Y28ýfœó^)_ÍÊݺv™h&Ð[¿&#F°L]¹ÒnP4J”à0¤W_e£¢3ç÷Ѱ!Ë¢¨(þÕ«Çc5k2^>}šÃ¶3c2eØø÷×_,W/]bæ<ô«A~®AAv9=v,?«ôÿ“·Þb:|}¼mÝÊ‘‹gÎpËâ×Ý9IMåç|îœý< r¸›\ y¤X±bHvlxYÒå]능ÿõ:yþŽUøâÃHž ô¯l¡„ÓøÕVç-°0|Ðâ,€?€‚,ìÝ´© ø™ ñ, =ý€® ¢:ðf øç ŠÎªn¶Ð£§‰UU’,t< è ö`ÿGË¡ËÙþYÂÂÒù@ŸöЬY ô„üÆû+úØBO£j±%…êU,tIü–Ç&¡[, ¼€Ó†GM’-Üë \:ôk ´Jî…˜€:;€7·Ôβpö à_·˜ ·³ôšì·pïåëaëìày½/qûßËÛTà{û±¾Ê8=WÄ%àÁ"€¯…÷[øÖé.ŸWÀó7‡ÖCÚ[h°À–Œçez;³ciilvq÷wñ¢Ëí°ÉøçpëÊóÀç˜kž?ÏËsç€3g𖆿¹ûÁÞD fM–ämÚ0è¨[—ÿܬ–Ê‘ü©T)6››eý®Ô±cgîš¿]»X£Š·wn5vC”*eÿ9ß.VŒÍÐNÏ›ëã._úú2Iÿçp¸=îïãƒqí|p>ÑÌòÉ:r8°è9À¯(€Ë-Ø­Îwù*9€9@iCªgp¹qÍw¾×0×ýs@³Ó@'K_zçmü—ô”0$”b ˜gß÷’À©T $¨¸x¢ŽÛ.¯JÕø$P.Ø Á19Xÿ®â@ Øô{mªíB‹1_ŸõB£8-}[= è èàËó=Îþ<ø.jÄñþ‹¿8Ÿ::€æU}2OW97ÇJè]8u¨}¸/ð[ `7п6àX¬y(Qøá{ö8Xóì3) øï$V·Æ·Ÿæë?\Xó¯ÿù;pÓnà¥ávÚz¢ÜQð¹\÷© F@ÆôxÐ%´°‰ŸÏöÃÀÿc1賟M»^žûõr €°P a:€9Øò^²ä°¬¼ÚÆåÆÖ±cGÄÆÆb{ºÿ,X€Ž;bæÌ™è–n¾ 6à¶ÛnC0csöÏËrƒr8ØÍäîÏÏïÊõT_,^_Õê–D­%XY(Y’MW%J°‚*àÎ{ƒR¦–ï®ÀVÎki²‘‚ϲØoÿ:Åž”„6`˜ëæ/9™AKV))|îì–>ɧ¾¿üçì4€¿¬_¿Í’“’+êÉ#5ÂâÅ‹‘€R¥J]9¾úò¥ M±e›ÌB‰¢·b÷n®:õô3nZ€Òµ ½ù&ðÙ8ÀÞÃÃÝyæØ—_/¾Ä› u꺞׮wÄ3gƒØmëü|3g?Ìž4iêþ5¾ýxò) ÓåµÂáp`øp^ÿë/vóž<å@xxºUJ.¿ÆèÑìZݽ›c{ôà˜Ò˜X`Éb ACÆ^ |û н‡ût8ÜZhÜèò°µËÏoYKš’DÇ82νÈä³Ëê˜Ù±êM¹l¦ÇŽŒ}á™ð±€w;±‹¼Vk÷ç8ìªÀLd³êˆÜ N +[–cló‚ D²û3çe·¼pNÚO- ‘‘’5p ‡é<> økéåy Y¶ys»áÇy¬¬˜(²ÚHÊ™™Ø^³¦Sï†3ÐLfN¯hÑŒ«`¤ÎVÓÚbgVÙêÐ-Bf%“ôJ–t]…ÃìÖ[©’ÝêS©÷ÉJ@'Ý›ÏÈ™ÙpñFÄÿ…ˆÈ`ÄNn®S‡åRNZù›4áâb¡¡™ŸãppÞ¿;]»f<7³ÅRr¢Y3VÏøÁ^è%+AA—{ä«rZߟºvnÕ¬É^yÞØ±WŸ6€“¶ÍDÿråX—ÉLëÖÜ_dôhލ>œ‹<ñïw®{̘qméʉ.]¸Óûüùœ„nVˆ ãb=¾¾ö¤ö¡C9ßìú.WGHúꫯðòË/ã믿ƩS§Ð AÌš5 ­[g26æ²5˜a?žq¼Ì4kÆŠ~‹9;߬„•~,ì„•Y’w›ÍLïÞœÿh–ìËŽf™ÓÏÄÙO?¹¯×Òe[õï¯sEäÆQ¤Hî+Ø/½Äåcó‹ˆ6Ì:e¯ö••  ®3Pµ* Ó7NœÈ•çÌá ÍÕ«çMºÝ¹çN8ÿæVø»wg}£iS×Ýâ=¥fM~¾¿ÿÎFK€4hÀ̪T±÷Õ-Z”CÝï¿ß³i,l€ä!¼÷Þ{x/—[g:\ÇzëÖýG¹rÜg#7¯1`€ëÞÎLân¯Šë¥\9ŽÍ©Zµ˜ùæ´—ÇYûö¹La6p ·S "’¿™½ò‹"EØ+³hQæû^93Kñ¦ßÅݨQƒû„ÅÆ^ÛÞ-W£[7.¢6r$3Âaøp.ì ]º°±²];{ñÇ ¸|qZškOWf·’sZú&Ÿ7Ž­y郸¶¶;×£äzóñáÆz>ê픈ˆˆxž©ç´È:¸p8<|lLìÚÕÞËÄ,ÄØ¯7nô†Ž¹÷ËêÕvHýú\ÌmëV»D® ù”Ÿßµ½Vù1¸ùvNÆ¾Šˆˆ6Ý»s‡™K™•  ö2äסÆ}úð²{>YLªm[¯Ú·Ï5Ø¢äúÒ,q+¿ """7ªÖ­9):'ËÚæ×ù~wß Lš”%ØÀ¹d‰€”+Çåúʸ³º\õ€ˆ[ÁÁ@¯^l‘‚¥M›tû‚å3E‹rHu~Z‘±cG^–uÚ ºA^ªäúR"nùú¿ü’³n^‘‚Îl à€˜aX @®/ """"rûí6®šÙ¤‰}¬CNÔ׬ëKs@DDDDä†çë ,XàzìÎ;èh蠟0SˆˆˆˆˆˆxŒñ """""â1 @DDDDDÄc€ˆˆˆˆˆˆÇ(Q""""""£DDDDDDÇÎ;¯*"¹qúôilذÁÛÉ€¾kâ)ú®‰'¨žví–eYÞND~?þø#Gçþãÿ@éÒ¥¯Ü>|ø0Zµj???,_¾<Ëåwãââpûí·#66öšÓ,""""y#$$ëÖ­Cpp°·“R )ÉC'Nœ@ëÖ­qúôi,[¶ ¡¡¡Ù>&..qqqHˆˆˆˆ\àà`×@H9þ<Ú·o]»vaÑ¢EhÔ¨‘·“$""""âu @òÈ?þñ̘1ƒ Ê0é¼T©RèÙ³§w&""""âE @òHÍš5qèÐ!¸ûxkÔ¨ýû÷{!U"""""Þ¥DDDDDDW§N/¤Z ¢µk×bذa¨W¯J–,‰êÕ«£o߾سgO†s•¯]mD˜ 0Ó¦MÈ#P«V-Lž<]»vÅ¢E‹ÐªU+o'O ™'Ÿ|Mš4q9–“%¢EÜ9vìÞxã T¯^ 6ÄâÅ‹áp82œ¶mÛ¢\¹rxçw€>ø[·nÅš5kP´hQ/¤^ ’œ~×Àßß_|ñ…˱2eÊx"™RŒ3+W®DŸ>}P¿~}ÄÅÅaüøñhܸ1V­Z…zõêP¾vM,ñªÕ«W[‡Ã;vì•cIIIVXX˜Õ²eK/¦L ›E‹Y‡Ãš6mš·“"…Hrr²oY–e­[·Îr8Ö”)S2œ7tèP«D‰Öáǯ›?¾åp8¬I“&y,½Rpåô»öÐCY¥J•òtò¤Y±b…•’’ârlÏž=V@@€õÀ\9¦|íêi–—ýüóÏðõõÅàÁƒ¯ó÷÷ÇÃ?Œ•+W"&&Æ‹©“ÂȲ,$$$àÒ¥KÞNŠ~~~¨X±"¸]õϘ6mºwU«^9Ö¡C„‡‡ã§Ÿ~ÊótJÁ—Óïš¹?-- gÏžõDÒ¤iÑ¢|}] ………¡nݺˆŒŒ¼rLùÚÕSâe7nDxx8J–,érÜ ‘Ù´i“7’%…ØÀQ¦L+V íÛ·Çúõë½$)äbbbpìØ1Ü~ûíîkÒ¤ 6nÜè…TIa–˜˜ˆÒ¥K£lÙ²(_¾<† †óçÏ{;YR€Y–…øøxP¾v­4ÄËâââœá¸9ëé$I!åïïÞ½{£k×® ÂöíÛñÁ M›6X±b6lèí$J!™æu'OžDJJŠÆKËu‚Q£F¡qãÆHKKÜ9s0aÂlÞ¼‹/F‘"E¼D)€¾ýö[ÄÆÆâÍ7ß |íZ)ñ² .Àßß?Ãñ€€€+÷‹\-Z´@‹-®ÜîÞ½;z÷îúõëã…^Àœ9s¼˜:)ÌL>–]^§‚Z®‡·ß~Ûåö½÷Þ‹ððp¼øâ‹øùçŸÑ·o_/¥L ªÈÈH<þøãhÙ²%zè!Ê×®•†`yY±bÅœœœáxRRÒ•ûEòJhh(zöì‰E‹e;¦Zäj™|Lyxˈ#àãムx;)RÀ9rݺuC¹råðóÏ?_YyMùÚµQâeÁÁÁn‡Y™®½O'In0U«VÅÅ‹5>ZòŒ¢`ò5gqqq(_¾¼Z %O 00'OžôvR¤9sæ ºt邳gÏbîܹ¨\¹ò•û”¯] ^Ö¨Q#ìÞ½ .ÇW¯^ —/ynÿþý(V¬X†…D®—*Uª B… X»vm†ûÖ¬Y£|Nò\BBŽ?Ž *x;)R@$%%¡GØ»w/fÍš…ˆˆ—û•¯] ^Ö»wo¤¦¦bÒ¤IWŽ%''còäÉhÞ¼9ªT©âÅÔIarìØ± Ç6oÞŒ3f S§N^H‘ÜHî¹çÌš5 ÑÑÑWŽ-X°{öìAŸ>}¼˜2)L’““34èÀo¼èܹ³§“$Pjj*úöí‹Õ«WcêÔ©hÖ¬™Ûó”¯]=‡¥ß^×·o_LŸ>#FŒ@hh(¦L™‚uëÖaÁ‚hݺµ·“'…DûöíQ¼xq´hÑ+VÄŽ;0iÒ$øûûcåÊ•¨]»¶·“(ÔøñãqúôiÄÆÆbâĉ¸û´þ >¥K—Ftt45j„²eËâÉ'ŸDBBÞÿ}T«V k×®ÕPÉ‘ì¾k'OžD£FЯ_¿+yÚü9sæ K—.˜={¶7“/ÄSO=…?þ=zôpH<ðÀ |í(É’““ñòË/ã›o¾Á©S§Ð A¼ñÆèر£·“&…È'Ÿ|‚o¿ý{÷îÅÙ³gQ±bEtèЯ¾ú*n¾ùfo'O °š5kâàÁƒpe‚¦eYp8ˆŠŠBµjÕ;vìÀÓO?eË–ÁßßݺuÃØ±c5,Fr,»ïZ™2eðÄO`ÕªUˆEjj*jÕª…ûï¿#GŽÔ¼’#wÞy'–.]êvq‡ÃÔÔÔ+·•¯] """""â1š""""""£DDDDDDþøcµmÛV_ýµúõë§³Ï>[íÚµÓwÞ©£GZ]` ˆA¶lÙ¢ŠŠ ]ýõºêª«ôÖ[oé–[nÑ‹/¾¨)S¦X]` ΀$))I_~ù¥î¸ã=ÿüó'žßqÇz饗´yófõîÝÛ óq –AZµj%Iš4iRç“&MÒK/½¤‚‚‚dÇŽÚ±c‡)5 áºvíª®]»Z]F³E1H·nÝT\\¬Î;×x~î¹çJ’vïÞ]ë5;vìPZZš¾ùæSj@ÃuëÖM+V¬ „4Ä iiiúøãµmÛ6õéÓçÄóêpáp8j½fÇŽúæ›oôÚk¯éâ‹/6­VXgÚ´iš5k–ÕeÀ$|½c _ïØÂ×;vlܸQ7Ýt“vìØAi$ˆAn¼ñF=ñÄúë_ÿªË.»ìÄó¿üå/JHHÐ¥—^Zçk/¾øb <Ø„*aµöíÛóµŽ!|½c _ïØÂ×Ä ƒ Ò-·Ü¢¿ýíoª¨¨PFF†–.]ª èÁT—.]¬.0Ä@/¾ø¢Î;ï<Íž=[o¿ý¶zõê¥Y³fiêÔ©V—X‚b »Ý®GyD<òˆÕ¥F„€…N½¦ѯwláë[øzá#€âVláë[øzǾÞ@ø LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4NRYYiu Õ Tñù|êÓ§þô§?éðáÃV—Q‰@•öíÛËåréî»ïÖù矯Ç{L{ö챺,ˆ*ªôíÛW¯¿þº¶lÙ¢ &èÿ÷Õ³gO=ðÀ:xð Õå@T €bƱcÇ´ÿþzç]xá…úÓŸþ¤ÒÒRM:UÏ?ÿ¼îºë.*€èGÄŒ|P.—KÇk~çÎ5cÆ ½ð úè£T^^np…ý €˜°hÑ"ýßÿýŸn½õV%$$4èµ7ß|³6mÚ$‡ÃaPu; €¨·k×.ýüç?×èÑ£5mÚ´¿Þf³éì³Ï6 2ˆ=@TóûýšøàuîÜÙêr æñk @ÔZ½zµ¦OŸ®{ï½WcÆŒ±º€ €(öüóÏ«ÿþzüñÇ­.P…-X€¨õÒK/éÛo¿UË–- yÿ¯¼òŠ4iÒ$CÞ?D#V@Q+>>ÞÐsï¾û®~ûÛßÊï÷ö1 Ú@h¤ûï¿_›7oÖûï¿ou)Ðl@h$·Û-—Ë¥§žzÊêR Ù €pî»ï>-]ºT«V­²ºh œÿøÇºà‚ X€0@8ñññºçž{4þ|mÛ¶Íêr â@QcÊ”)úÛßþ¦)SPJÊXõë7N))c5eÊ*//7ìãÞrË-JLLÔŸÿügÃ>D ú€¢ÂêÕ«5gÎ}ðA‘víú‹¤lI6I~û”——)¯w¾G“ì³Ï>[ÿùÏ4`À€&ßmXD…§žzJ‰‰mµk׋’\ †)ø­Î¥’’ÊÊÊ6ìã§§§ë¬³Î2ìý@´ €š½íÛ·ëÿø‡Ú´é.ih³†Èç+6³,@@³÷ì³ÏªuëÖjÓæ|ý°òqª8UTÄ›Y ˆ–.]ª¸¸¸|>ŸÕå@T8pà€^zé%ýâ¿PË–q’uÌôËn¯4³4@B7Á=÷Ü£ôôôÏ’’’,ª¢ËìÙ³µÿ~M:Uß}÷¬Š‹ <rªB9Éf—8ÄÇ× 7Ü`u•^ýuMœ8Qçwž²³³”——©’’’†(¸Ðï—T¨¤¤‡”=_:zTÊÍ•¶o—vì¾ù&øgÇ).Nš3GêÓÇÒÏ ¢Ä@@û÷ïW«V­d·ó¿šR^^žöïß/Ir8òzç+++[>ߣª¨ˆ—Ý^)§3YÙÙóåèÐA;Vúè£à‹;u’ºv•ºu“.ºHZ¾\5JÊË“Î?¿Ñ5UTThéÒ¥r»ÝJLLlŠO¢g@L0eʵk×N­ZµÒÈ‘#µråJ«K€¨a·ÛÕ¡C‡w8š={¦6lx_Ÿ}öž6lx_³gÏ öÿøŸÿ‘/–. ®„”—«|ñbMé:@)¾2 ¯8__íüNe~¤ï>ý´Ñ5•––êŠ+®Ð¿ÿýï¦ø ªðëxµlÙR&LÐÕW_­N:iÆ zòÉ'5|øpåççkРAV—±cî\éÉ'¥Y³¤k®‘$•••Éãù‰JJSuã }¡¼ãnMs+°¦H’~n$))I©©©zã74qâĦý< ™³º® JJJ4pà@eddèƒ>¨1¶jÕ*¥¦¦jåÊ•ß$sNƒ?dvv¶~ûÛߪ¼¼œmX@áçµ3Ç,“%%%éºë®SNNŽÈ~`‚]»T9nœÖtyÉó*Þø¾6o~OÅÅ õùçÁ.é§ú\}t¹rtö¾=Ò˜1Ò¾} þ°'NÔáÇõþûï7Á'у-XèÑ£‡Ž;¦ƒªM›6µÆ§M›¦öíÛ×x6iÒ$Mš4ɬ :;&M˜ ý»÷jìÑ×uT#NŒ“ÔFu5.,ÖÝÒÝ¥·7<¸¾h‘ÔºuØú‚ .PZZšÞxã Ýxãgôi°Æ¼yó4oÞ¼ÏöìÙcQ5уb/¾øB­Zµ >$iÖ¬Y,é@S¸ç©°P¿ìž¦o¶^bB¥‚ C…¿6·9[šÿ¡4b„ôÜsRVVƒ>ü7Þ¨GyD¨óß|‘+Ô/€«·`¡ñØ‚e òòòZÏÖ®]«÷Þ{OW^y¥@tøì³ÏtìØ±ÓOúë_¥_”^xA+ZtRè‘,©°ŽwPÕ¸Ðå’n¾YzúiéÈ‘Õ9qâD9rDÿú׿ô:ˆfeffêšk®ÑŒ3ôòË/ëÞ{ï•ÇãQ›6môÄOX]4K@@W\q…¦OŸ^÷¤£G¥‡ ‡[o•Ý^½Òqª,IJZ®`ÃBU½õV5.¬ZñÈÊ’ÊÊ‚M  W¯^ÊÌÌ”ßï¯2Ķ`èÇ?þ±æÎ«§Ÿ~Zûöíӹ瞫 &è7¿ù.¼ðB«Ë€f©°°P_ýµ®¿þúº'½ñ†´kW°ï‡$§3YÅÅ…ª}àÜ!é~õîýZ´H¬Ý¸ÐáNëÓGš0AÊΖn»Mj@SÙüã úü Ú@ t÷Ýwëî»ï¶º ˆ*o¼ñ†ºté¢aÆ…ž{}Œìn.);;Kyy™*)™!iˆ‚ü’ •”ô¤òóßü!lÔåÿý?ið`éÍ7%.€F#€š ¿ß¯ hüøñŠ=iùriÕ*é¤^K‡C^ï|eeeËç{´î•ŽS”——W½¦Xñúkb'÷Ë{ÔjÔ(9Î=׈O¢ÐlTo¿:íµ¶³fW>N¹ìÃáphöì™a¬P]ÒRŽrŽÔm?º\º¸þU@-B4o¼ñ†ºvíª¡C‡†žPZ*½ý¶4uªwfßâ¦OŸY>\ª¾Ak™.•W.MÞiSVVv­×”——kÊ””’2VýúSJÊXM™ò@È[ V±hü~¿Þ|óMM˜0Añññµ¶GÙí•zÒV¦ÑgŸ­¸›o>ãçó+¸òq2›×ÿè=]§—–ÖlJjÅDò«¸Ø§¼¼Ly½uoõ€XB4 ;vìPÛ¶m5qâÄ?ì·Ö~¹Ô]iß^?>tHŽÄÄ3úxñ Õ;ä_ºFë•¢[Ë¿¨ñ¼æŠIµ8I.•”ÌPVVvƒ¶€@´b  YèÞ½»Š‹‹5lذۣnÖkj«ƒš±gVÈíQ UWï€âô„²téÁ2iíÚσ+&CêxoCäóëµ×^SNNÎ×ÍЬØl¶Z?ìÛä×=zFoé}¥ë«ÆÏŒÓYw—ôùº@ß&¶•Nj*[׊IPœ**âõ /èé§Ÿ>ãÚ 9#€šSØ¿Ré"}¦gtªØ?SÙÙYJJzP’W§vI??é7jùëÿ 6<üüsIu¯˜T¿În¯Ô 7Ü >úH‡:ãú ¹"€šSØŸ¦YZ©ÁZ®¡ªþaÿLU÷™<ù-%'_«¾}Ç)9ùZMžü–.|^÷mØ©ïmvýÕ9Z))cuìØAIu¼·B9É3fŒŽ=ªeË–q}Ð\qÐì8É*..”äÒEÚ¨1Z¤ŸéWE ª¶O¹P½CN>‰ŽèªÝê¶ÝïIúHvûUTüMÁ³)'w[HÙÙóÕ©S'uïÞ]‹-Ò˜1cš¤Fhn €f';;Kyy™*)™¡©ú»vª³ÞÐIÞ?ìåäðÿÔÝ¡—4Xk´JW©¢" Þ½T‹‰uv[=z´-ZdX}騂hvª·GÝö³7tsÜ_´àœvê•••Õzîp8ôò¤+•è¯Ô]¹ÿ ùþN>_¡½«ë4A <“RÿøË/¿\qqq¬‚ˆY@Ä ÊÌÌÔïÿûÐÞyGJJ’RRL«éÔð 4A}µEýµ^á€ïСƒ¦Nª®]»[(D(΀"Ö–-[´uëV=ºö ß/½÷žôÓŸJ¶ºúo4½“ÀKÒbÒ^µÕxýSëu ¬ðôËXD¬E‹)!!A—^ziíAŸOÚ¹SºþzSk:µ?È1µÔB]£ñzµê|–©õ@sCD¬E‹iذajÓ¦MíÁwß•:u’<Sk Õ¤°Ç& Ðò½:Ãð3(Ðܱ ‘Ž=ªœœ=òÈ#¡'¼óŽtíµRü™w=o¨ZýA–““#¹Ý¦×Í ‘–/_®C‡)==]S¦< Ÿ¯øDoqýºèñM›¤'ž°ºÌ V­¤«¯–þùOéÁ­®"‘-Z$‡Ã¡_üâ÷úâ‹Ç%e+xý­_c‹§ê°-N RÄlxš0AÊÌ”¾üRºà««€ˆÅ@DÚ·oŸÚ·ïR>\ªî½!Åé:­Ö¢ÀPeýö9 +<ÅÕWKg\Ô‰ˆH/¼ð‚ìöªî:^í\í’[^½«ŸWu%mÚH£G7(€”––ê™gžQ ¨2D  bUVÚõÃÊGеZ¨€lú—ÆÕÛuÜtãÇKÒ¶maM/..Ö´iÓ´qãFƒ €ÈAD¬S»ŽKÒõzGË5Tߪc½]ÇMwíµRB‚ôÖ[aM1b„Z¶l©E‹\D b»Šžø{¢èr}¬wt½¤Â°ºŽ›ª}{éòËÃÞ†Õºuk >œ ¦@ëԮ㣵Hgé¨ÞUÏÈí:>~¼”—'íÚÖôÑ£G+77WGŽ1¸0ˆ @Ä:µëøÏΞ¦Í-Û(c²O^ïüÈì:~ÝuR\œôöÛaM=z´Ž9¢¼¼<ƒ €È@D´ê®ãÖ¼£ëíÕ÷þ{4{öÌÈ ’Ô©“4b„ôî»aMïß¿¿ºuëÆ6,1ƒˆÔºuëB_KûÉ'ÒîÝÒõ×›_XC--[&;VïT›Í¦+¯¼’ f@cÉ’%8p ¾øâ‹Úƒï¼#uï.¥¦š_XC):$ù|aMŸ0a‚¬ãÇ\XˆK—.UÏž=uá…Ö‚[š®»N²ÙB¿8’\rIðF¬Å‹Ãš>vìXýýïWBB‚Á…€õ €ˆ‘››«#FÈvjÈØ¸Q*- öÙhâã¥K/•–,±ºˆ8@DØ·oŸV¯^­#FÔÌÉ‘ìviøpó k¬Q£$¯W:xÐêJ ¢@aùòåòûý¡ÈÒ¥’Ó)%&š^W£)?.-_nu%Q €ˆ››«.]º¨wïÞ5üþ`¹ì2Kêj´‹/–ºt ûÄ  "ÔyþcÃéÛo›_±Ù‚« œ€ Ë?~\¥¥¥uo¿JHÜnÓë:c£FI+Wû—$@ !!AÛ¶mÓ­·ÞZ{0'Gr¹¤Ö­Í/ìL¼B877¬é‡Ö‡~¨½{÷\X‡ˆqqqjÑ¢E͇~ð‡÷æ¶ýªZ¯^Ò…†}d×®]ºêª«´téRCË+@‘kÝ:éûïƒ=5š«œéÕ«—Î;ï<冹b͹rr¤–-›çùj£FIÅÅÒŽaM1b@T#€"×Ò¥Áógeu%W½},''¬éZ³f ç@D- 2UV6ïóÕ:w–ú÷ûȈ#ä÷ûµœ†¢™>ýTÚ³§ù©Aç@z÷î­®]»² @Ô"€,SYY©£G†ÌÉ n½2ÄÜ¢Œ0j”´u«ôÅõNµÙlœÕ ˪}ûöúì³ÏjæäHOðzs—‘!ÅÅ…½ r饗ª²²R•••æ#€,“››«„„%%%Õ¨¬”–-kÞ×}{)--ìs ·ß~»ŠŠŠopa`>À2¹¹¹:t¨ìv{ÍÕ«¥}û¢ãüGµês @½Sm6› €5 KTTThùòå1bDíÁ¥K¥V­$§Óôº 3j”TV&mØ`u%`)À«V­ÒBœièP©E ó 3ŠÇü|Â<ÑŠ°Dnn®Z·n­´´´šR^^tm¿’¤Ö­ƒ!$Ìs ­ KäææÊãñ(!!¡æÀªUÒþýÑ@¤àç”›+ùýVW–!€Lç÷ûõÉ'Ÿ(##£ö`NŽ”˜¼5*Ú &íÝ+mÜhu%`{ýShZqqq*..®}û•<€>l˜têÊH3V^^®¬¬l­/øT’þ÷ŠŸè«Ñc”%‡ÃqÚ×~óÍ7r8µWŠ ™bÄD3fÌP\\œ `u)`¹nݺéÜsÏ­ùðøñàùhéÿ!©¬¬Lnw¦æÌ¯›>ÔZ]¢^;R5gÎx¹Ý™*//¯óµëÖ­S÷îÝUXXhbÅ`,ˆI¶mÛ¦Ç{L‰‰‰ÜïuY¹R:x0ªÎLŸ>S%%IrI²)_yä•äRIÉ eee×ùÚ‹/¾XmÚ´ÑòåËÍ* G1Éý÷ß/Ç£´´4ÂhB1iùò`ÿÁƒ­®¤Éø|Å’†œø{¾<ê§Íê¨o% ©Ín·Ëår)??ßøBÀ$,[¶Lÿüç?5kÖ,V@ .^¯”žUç?**â%ýðï~¾<’$·¼’âªÆëæñx”ŸŸÏ/¯D ˆÁ*++u÷Ýwë¿ø…RRR¬."W  n·Õ•4)»½RÒá¡Tçëu•Gù’üUãuóx<úöÛoµeËc “p –Á^|ñE}õÕWZBç[8½¯¿–¾ù&êˆÓ™¬ââBÏ€H?œÉ—ô¡Ž;¨””±ª¨ˆ—Ý^)§3¹ÆíX.—K6›MùùùêÛ·¯UŸ4V@ ôÝwßé‘GÑ#<¢Ž;Z]D6¯7ø6ÊHvv–’’”ä•l@˜/·œ*ÐYñ÷êóÏŸPqñ¿´yó{*.^Xëv¬víÚ©ÿþœ5 úõ¯­N:éî»ï¶ºˆû÷ïWjjjè[òó¥ /”N½š·™s8òzçkòä·”œ|­úö§½þ©V:¦þ•Yª¾+(N¡nÇòx<***² zhzlÁ2È–-[ôòË/kÖ¬YÚ¶mÛ‰çGŽѱcÇTZZª¶mÛªC‡µ^;mÚ4µo߾ƳI“&iÒ¤I†× F*,,ÔªU«BþÛç?ª9Íž=ó‡Gêh«ÖòökEÈW ‘Ï÷艿͘1CmÚ´1ºL§˜7ožæÍ›WãÙž={,ª&z@ ²}ûvùý~M:US§N­5~ÁhÚ´izê©§jÍš5Kƒ£è J¨–ŸŸ¯:袋.ª9pø°´zµôóŸ[S˜ÙZ¶Ôú–íä9âÕ5-Ä„š·c±°F¨_¯ZµJ©©©U 0`€Þ~ûíWîýú׿ÖôÌ3Ï())É À|ùùùr»ÝŠ‹;eðÊ•REEÔ®€„²6±ƒ®8R×¹ŽúoÇ€æŠbŽ;êºë®«õüé§Ÿ–$7Îì’ÀR•••òz½ÊÊʪ=èõJ­[Kš_˜E  ž9慎¾Ö6õ óOô€hC˜bùòå4hk”–J;wÆÔùjñÇëÊM›´Á÷¾Õ¥€i SÜvÛmÚ¿íê„.Wí±hçñHóæI‡ÏÀ@ à À;vlí¯W•½ziÊô™JI«~ýÆ)%e¬¦LyàD7ð¨åñoÿZºÈ©æÌ™ÃõŸš=V@–:ž—§÷¿=¬9sÆKÊV°+¸_ÅÅ>ååeÊëâó))ÒÙg»ÀgdÔ;½]»vZµj•¾þúkõìyêÍYÐ<°°Îáò­ýTø™$—‚áC ~{r©¤d†²²²­«ÏhññÁ­gùuõ©ÉãñH è€æŠ°ÎŠ²üòjR†Èç+6µ$Óy<ÁÔ;µsçÎJJJ"€hÖ ëx½:h‹×:ÕÕ€0Nñ¦–d:Gúî;iË–0§{´|ùrƒ‹ã@Öñzµ¡U;Uª®á—Ý^ijI¦2D²ÙÂÞ†5tèP­Y³F4¸00`ª„eI}$Ö1©PNg²™U™¯];©ÿ©¬¬”Ïç3¸00`¨?þñzÿýö¶n•víÒ𬻔”ô $¯$Õ _’WII);;Ë´Z-S}$ ÉÉÉjÛ¶-ç@4[€a€f̘!ou³Á“U=k7z´¼Þùš<ù-%'_«¾}Ç)9ùZMžüVt_Á{2GÚ°AÚ½»Þ©ñññš;w®~ò‘8_ IDAT“Ÿ˜P4=ú€ óÅ_¨¬¬ìÄõ±5x½RïÞ’Ã!‡¤Ù³gš^_Ä2$øvÅ éŠ+ê~Í5×\‡€aªokr»Ý’¤òòrM™ò€RRÆjý˯êÝòñÑñ¼>}úÏ‚Y] Ž0L~~¾RRRÔ¡C•••ÉíÎÔœ9ãõeñêwô >Üû?š3g¼ÜîÌØ!qqRzºÄÁr1€0Œ×ë=±ú1}úL•”<&É¥4­T‚*äÕPÅDÇóp8RaaX  9#€ ±ÿ~­_¿þD v4žup©@”¨õê_5;:ž×Çé”vî”¶o·º0`ŸÏ'¿ß/—Ë%IUÍm’$§|Z¡4Už¸ %:ž×Çé ¾e€(G¢U«VºñÆuÑEIRUGóàö"§|òÉyÒìèx^Ÿ®]¥îÝ ¢`Ç£ùóç+..ø­&ØÑ¼PµSçék)ý¤Ù1Ðñ<NgƒÈ“O>©¹sçX4=ÀÙÙYJJzPézU’ªV@b¬ãy}œÎ`/¿¿þ¹’rrrôÚk¯\4-À‡C^ï|Ýö£·ô]| Õç®Øëx^§SÚ¿_úì³°¦»\.Èf`€H@'t€i‡®ëÒNê~¹>{¡ÕåDžÔTÉf núøâz§»ÝníÙ³G›7o>qÖ"+ óÁnßNgýscQ»vÒE…}ÄétÊf³©  Àà é@æùòKéûïƒ]¿Z¢·mÛV)))òz½M‡0OõÖº¥§Kk×JGŽ„5½ú4@“úúë¯UPP ÊÊ}=ŠŠ¤^½$œ×Í锎†0¸\.­_¿^û÷ï7¸0h@“zýõ×uÅW„ôù8ÿQŸ¥-‚a- #FŒÐÿ÷ëСCMƒ[°Mª  @N§Sñññ5**¤U«¤ë®³¦°æ¢eKiР°ÏôîÝ[úÓŸ . š+ €&TPP —ËU{pãFéÐ!V@ÂÑÀŽèМ@M¦´´T;wî @|>).N<Øüš§3ØŒpÏ«+€&G4™êÛ˜B¢¢`s½6mL®ªª¾%lÅ kë@MÆëõ*))IŽP·\q=|}ûJmÛ² @T"€šLAAÜnwíÇ¥uëèÿ®¸¸àÿ«0o€æ„h•••Ú½{wèíWkÖoÁb$|D¥ €&¯Í›7ëŽ;î¨=XTìm1`€ù…5WN§ôÍ7ÒöíaMß»w¯,X@?hRqq!¾µI—\ !OõjQ˜« [·nÕĉµ‚ƒë"ÐäÊËË5eÊJI«~ýÆéË7ÞÖÇ{©¼¼ÜêÒšnÝ‚ ýû÷Wbbâ‰›È RÑ ФÊÊÊäñüD%%IÊV;íÕê G6]+¯;S^ïüзd¡¶œ‰—Óé”×ë5¸(83¬€šÔôé3«Â‡K’Mi n *Ò$•”ÌPVV¶¥õ5+Ng°ˆßÖt·Û-¯×«@ `paÐx@“òùŠ% 9ñ÷ti¯Új³úJR5ް8Ò¾}ÒæÍaMw¹\Úµk—JKK . hRñ’l'þî”O+”¦€â$ÅU#,iiÁ·anÃ2$ü؆ ’@gìÈ‘#'þÛn¯”ôàt©HÕ ýUãK»vÁ®èaÞluî¹ç*))‰ƒè"pFŽ;¦N:éÕW_•$9É’ %I]õzh»|ªn@XX5ް¥¥5¨#úe—]F/[°gdÍš5:xð úõë'IÊÎÎR^^¦JJf(];%IEJ•äURÒCÊΞoaµÍPzºôÖ[ÒñãRBB½Ó_~ùeŠ€ÆcpF Ô²eK 4H’äp8äõÎ×äÉoéêN¨,¾¥Ú^|‡&O~‹+x#=]:rDÚ°ÁêJ I°8#] . =Èù¦3p`ð Þ0JR ÐîÝ» , ‡h´:è’K.©=PY)­\Éö«3P^^®)SPJÊXõ8Qëã[é“§_PyyyX¯¿í¶ÛtÍ5×\%4Ðô6o–`¤‘ÊÊÊävgjΜñ*.þ—6o~OyG&©}Éa¹Ý™a…håÊ•:vì˜ @ø €¦W}}ð`këh¦¦OŸ©’’Ç$¹$Ù$I+”®‹µU;KRVVv½ïÃívëèÑ£Z³f±Å@@MoÅ ©o_©}{«+i–|¾bICj<+Rºâå×%²WŸÞ AƒÔ¢E T%4Ä@6lÐĉ•””¤ÄÄDuìØQGsçεº40VQç?Î@EE¼ªW>ª+Y‡ÔJéZY5~z-[¶ÔàÁƒåõz ªÇnuÑ쫯¾Ò4yòduëÖM‡Ò‚ ô³ŸýL[·nÕC=du‰ÐôŽ—Ö¬‘23­®¤Ù²Û+%tr©”]«u‰ÒT¤EöʰÞÛíÖÛo¿mL‘ÐH¬€誫®Ò| ‡~X·Þz«î¾ûnåääèG?ú‘þüç?[]cÆ`ß|ðÁÐè€Þ$‡fÏžYó¡ß/µ_ü|ùåõ¾›Í¦þýûT!4[°Lpï½÷êã?Ö+¯¼¢Q£Fé®»îÒßÿþw«Ë€F)..Öþýûår¹j9"}ú)Ä(qqRjê}V "€˜ _¿~9r¤nºé&}ðÁ5j”¦M›¦Ã‡[]4XAAâââ”*d|ú©TQÁt#¥§W@ ™b –Ưÿüç?úì³Ï4hРZãÓ¦MSûSšwMš4I“&M2«D¨SAAú HQ‘” h~a±"-Mš9S*+“Î=×êj€¨6oÞ<Í›7¯Æ³={öXTMô €X zå#..ôÔ¬Y³4xð`3K€°y½^]z饡W¬†–-M­)¦T¯<­X!]}µµµQ.Ô/€W­Z¥ÔÔT‹*ŠlÁ2Pyyy­gÇ×+¯¼¢Ž;*%%Å‚ª ñöìÙ£7†>ÿ!W@8ÿa¬^½¤Ž9 ÙbÄ@·ß~»öï߯ŒŒ uëÖM;wîÔܹsµyófÍž=[ñññV— ôÄO„^9p@Ú¸Qº÷^ÓëŠ)6[pç@4S¬€è'?ù‰âââô /èÎ;ïÔ¬Y³tá…ê£>ÒÍ7ßluyÐ`:tÐôéÓuÞyçÕ\½:xM,+ ÆKO®€aMß·oŸ.¿ürýç?ÿ1¸0¨+ ÊÌÌTff¦Õe€9V¬Zµ 6!„±ÒÒ¤G•¶o—zô¨wúÙgŸ­uëÖ)77WW\q… @ÝX4¢"é’K$;¿Û2\õ*S˜ç@l6›\.— , ÂC4¢"ú˜ ¼¼\SzZeö–zñ¶,¥¤ŒÕ”)„¼øädn·[………ª¬¬4©R8s»wKŸÎùƒ•••ÉíÎÔœ9ãå­­¤ï{©¸x¡æÌ/·;ó´!ÄãñèÀZ¿~½‰@mÀ™[¹2ø–CMŸ>S%%IrÉ'§Ò´B6I’K%%3”••]çkÓÓÓe·Û•ŸŸoRµpæV¬Î>[êÛ×êJ¢šÏW,iˆ$©Héê =ê­Ï«F‡T‡ÖªU+ <˜Àr@½vïÞ­§žzªî->EERjªÇ·#UTÄKUk+\mJWõAô¸ªñºy<ËñP¯üü|Ýwß}Ú¿è +V°ýÊv{¥¤`ïÝ:G[Ô[NùªFýUãu»é¦›ô»ßýN0û‡€ €z-_¾\]ºtÑ\P{pçN髯$§ÓüÂbŒÓ™,©ðÄß‹”~Ò HaÕxÝRSSuÓM7Éf³W$Ôƒ¨W~~¾<Oè\«{Q@ —¥¤¤%y%ùå“S—hµìÊSRÒCÊÎβºD¨pZÇ—Ïç“Çã©5V^^®w~L߯·P¿+î »'ÇápÈë¯É“ßRròµÚÕsZ鈼öey½óåp8¬.êE»ZÀi­]»V‡®@ÊÊÊäñüDÏ•äÕ•Ú¼e¡$¿Š‹}ÊËËäbƒ8Íž=3ø—C‡¤¶mõ»k†Iü¿ÐL°8­üü|µhÑBƒ®ñ<Ø“b†œÚ,Ÿª·_Å)œžh"­[KýûK>_ýs B@§•ŸŸ¯´´4µlÙ²ÆsŸ¯XIê¤s´[E:µúé{R  9?œÃ€f€8­.]ºhܸqµžWTÄËYuSíRO 4‘ôtiýzéàA«+€°@§5kÖ,MŸ>½Ös»½Réòés%é{u_°,÷EÜÙÚ­ör*ÔAôÐW"{<ùý~ùhbÀd@Hk×®ÕB8 mØ@‰ö¿Š”®t…jHúJä¾}ûêœsÎaÓ@µ9RO>ùdè «V{O¤ŸÚ€Vp:“åS÷ªS{{„¾9..N·Ýv›ºwïnJPCè€Z6oÞ¬ï¿ÿ^'ô„¢¢àÙdz}D‚ìì,=üáHuÙ¹K=ô•¶é|¯D.¬ºy~È×ýá0µN €òóóe³Ù4dÈÐ|>)5U²óm$8Íøèuià@ÝÐã}غ;W"ˆX|çÔ’ŸŸ¯þýû«]»v¡'ø|Òøñæ…Óê8`€Ô½»žù¯+¤'ž°º¨g@µäçç×½ýª¬LÚº•è‘(==¸="PÃîÝ»U\\|úóÐ#‘Ó)­X¼ "Pƒ×ë•$¹ÝîÐŠŠ¤N¤^½Ì+ áIO—öí“6o¶º¨PÃÆÕµkWõîÝ;ô„ê„6›¹…¡~iiÁ·lÃÁ €î»ï>}þùç²… Ð#YûöRß¾Á¯Qlݺ•ŽèLÃ-X€ZZ·nzàË/¥ï¾#€D2§S*,lÐK~ó›ßhݺuZµj•AEÀX„¯ú·ä@\.—´zµtøpØ/ÉÈÈÐÚµkµoß> €  |EEÒ¡#2¹ÝREE0„„iøðáòûýÊÏÏ7°0"€ÂÇùÈ7`€Ôª•Tu›Y8úôé£Î;kÙ²eA@½ÊËËuëÏïÓáåùz|É:¥¤ŒÕ”)¨¼¼ÜêÒpª„„àmXa¿Äf³iøðáÊËË3°0"€N«¬¬Lnw¦V½2P­~½_þ’Š‹jΜñr»3 !‘ÈínP‘‚Û°|>ŸŽ9bPQDH’Ž?òùôé3URò˜Ü:¨ã²k¥RüöáRIÉ eee›Z'ÂàrIÛ¶ÿ„)##CÇŽã:^†#€$I7Þx£n¾ùæZÏ}¾bICä–W«u‰Ž¨ÕI£CªÆQ\®àÛ¬‚ 0@={öÔ¶„h @~¿_yyyêÕ«W­±ŠŠxI6¹å•WîSFãªÆQºv•Î?¿A$>>^¥¥¥úéOj`a@HÚ´i“¾ûî;eddÔ³Û+åÐ.õVIˆâ—Ý^iN‘h—«A7aIÁÃè`4@Ë–-S||¼\Õ[wNât&Ë¥W$)D)”Ó™lB…h0·[Z¹R:vÌêJ @yyyJMMU›6mjeggéêöÏéuÒWêQõÔ/É«¤¤‡”ej­“Ë%=*­]ku%PƒÝêÖ Z¶l™233CŽ;Ý’ÜCŸn/Wrâ8UTÄËn¯”Ó™¬ììùr8&WŒ° $µh܆•žnu5pb\ii©¶mÛ¦áLJžpü¸Z¬Y£´ßýNî¿ßÜâÐx-[J©©ÁƒèS§Z] œÀ,ˆqÕݯ‡ z§ŸJ‡Ï yq¹ÜŒF€7a¨cÇŽ¡'x½RBBð·éh^ÜnéË/¥]»ô²ÊÊJíÞ½Û ¢Ä:ĸV­ZiÈ!uOðz¥Áƒ¥³Î2¯(4F4$”¤Q£Féî»ï6  €êãõ²ýª¹êÑC•]ºèý‡SJÊXõë7N))c5eÊ*//¯óe©©©'¶æ@S#€ê¶kWp ¤Y*+/×öW*qÝqÿK›7¿§ââ…š3g¼ÜîÌ:CÈðáÃõÕW_©´´ÔäŠÄ nÕ´ ÍÒôé3õñÁL¥ë3Å«ºc}œ$—JJf(++;äëª/$`€ €ºy½R÷îRÏžVW‚FðùŠU •¨C u§Œ‘ÏWòu:uRrr²–-[f|‘bP7Î4kñZ©4—].z=Nñu¾6##ƒ† €B;~\Z±‚ÒŒÙí•:¢³´FƒB¿ìöʯ“‚ç@6mÚ¤²²2c‹s ***Ò]wÝ¥””µiÓF矾233µeË«KÍœ9SwÞygÝÖ®•&€4cNg²¤BÈ%·¼§ŒV‡–‘‘!IòzO}œ»ÕD³?üáòz½š8q¢¨;vè¹çžÓàÁƒUPP ””«KÃ,X  /¼°î ùùR‹Á h–²³³”——)oÉÝ­-:Gßé{uT¨¤¤‡”=¿Î×öèÑC_|ñ…zõêeZ½bÄ@÷ÝwŸÒÓÓe·ÿð¿933S ÐO<¡W_}ÕÂêIJ={öhÅŠúÅ/~Q÷¤ê„-[šWš”Ãá×;_3ïxPú§tC·«•ß¾“œÎdegÏ—Ãá8íë/¸à“*K r‡Ø¶Ð»wo%''kÓ¦MTA¹¹¹òûý5jTÝ“¼^é†Ì+ †p8Ê~óÏR—÷ôò-WJ¿ÿ½Õ%ˆqœ1Y Ю]»Ô©S'«KÖ,Y¢^½zÕýî;¤ÒRÎD ›Mr¹¤‚S¢€ù &›;w®¾ùæeffZ] €¶xñâúW?$H4q»ƒ¤¢ÂêJÄ8ˆ‰6mÚ¤_þò—òx<úùÏnu9bÔÎ;µaÆúHÁ?ˆÇKo7 @L²sçN;V:tЂ d³Ù¬. @ŒÊÉÉ‘$]vÙeuO¢aôIK ^(@sA㺠öîÝ««®ºJûöíS^^žºtérÚùÓ¦MSûöík<›4i’&Mšdd™b„ÇãÑœ9sêþ·èر`ÂÇ7·0«eËà9eˤiÓüò@ À/ÏsæÍ›§yóæÕx¶gÏ‹ª‰¶@ °ºˆhväÈ]yå•Z½zµ>þøc 2¤Î¹«V­RjjªV®\©ÁÜ»À*>Ÿ4dHpÄ岺4¥‡–^|Q*+ LÓwÞ©½{÷jîܹ4ü¼væØ‚e ÊÊJeffª°°Po¾ùæiÃDŒ¼<鬳¤K.±º4µŒ éÛo¥^ß±cG-Z´H~¿ß ÂĈî»ï>-\¸Pcƌѷß~«×^{­ÆˆH¹¹Áó4 Œ>n·ßàs #GŽÔwß}§O?ýÔ ÂÄ΀híÚµ²ÙlZ¸p¡.\XcÌf³é¦›n²¨2¨ƒßüá´gÐ ´iìn¿l™tûía¿Ìív묳ÎÒ’%K4hÐ   X1PNNŽ*++å÷ûký©¬¬´º<¨mÝ:iÏiÄ«+Q†oð ÈYg¥¡C‡jñâÅ –@?X¶LjÑ"xÑ)#Cúê«`§û5j”–-[¦ãÇT€XAü 7Wr:¥V­¬®F6,ø¶ç@8 ¢¢"ŠK #~ó›ßèõ×_¯{B \ÉÈ0¯(˜¯cG)%%øµn€ÔÔTµmÛVK–,1¨0±‚1 ¢¢B³fÍRIIIÝ“6m’ÊË9ÿ qÄn·ëƒ>ÐwÞiPQbbÀªU«´oß>5ªîI¹¹Á+Z=ó ƒ5†β²½ÌãñèœsÎ1¨(±‚1`É’%jÓ¦ÒÓÓëž´l™”š¼ªÑmøðàÛO>±¶1‰1`ñâÅÊÈÈPBBBè €*srôïC¥¤ŒU¿~ã”’2VS¦< òòrs‹…ñzö”zõjð9h 4"€(wôèQ}òÉ'š1cFs¾óùÔqçN=¿ó~ëW’l’ü*.ö)//S^ï|9Ój† 22|š+ å täÈ9²Î9ïÞ÷ùeÓrݪ`ø‚ß"\*)™¡¬¬l3J…™†—Ö¬‘öí³º1†QnñâÅêØ±£X眎ë×ki¯Ú‡"Ÿ¯Ø¸aŒ Éï—òó­®@Œa D¹#F¨sçΊ‹«ûwN©¿×M¨c4NñÆëôé#{nðȘ1VW †°QnÔ¨Qúå/Y÷„¯¾RŠÃÊU] ý²Û+ © ²Ù}äÍ7ßÔå—_®@ `@a¢b]n®$)O­ë˜P(§3Ù¼z`ŠòòrÍýê{[ž¯}Æ6èÖ³Ö­[kñâÅÚ¼y³ •ˆ6ˆuË–©â¢‹Ô>)[’W’¿jÀ/É«¤¤‡”e]}hreeer»35Ó÷sµøÕáóé*.^¨9sÆËíά7„\vÙejÙ²¥þýï›T1€hB€X—›+ûÈ‘òzçkòä·”œ|­úö§ääk5yò[\Á…¦OŸ©’’Ç´Nÿ¥½j« -SCn=kݺµ.»ì2€Fá:IJ;¤-[¤G•ÃáÐìÙ3­®&Þj–-¿lúDÃ4\'Ÿ"ŸïÑzßÇÕW_­ûï¿_P›6m «@ôabYu'쌺 #o5 ö{ÉÓp ÕrÅ«¢j4¼[Ï®ºê*;vLK–,1®PQ‰±,7WêÛWêÒÅêJ`¢à­fÁ¬r5BmtPiZQ5Þ­g½{÷VŸ>}؆ Á …vîÜ©{î¹GÛ·o?ýÄeˤ#Ì) #x«Y¡$©HéÚ£vºRU†ëÙÕW_­ÿûß\Ç  A …>üðC=ûì³jÑ¢EÝ“¾ýVÚ°íW1(;ûÿ·wçáQU÷Çß“ l‰YD $Qv¢UQQAT4R-‹X•‚‚&XjÕŠ(¬ÚŠV¶ŠTÀjA˜°XÃ&›ì‰ ”- ɜߓB2!3™™;3ù¼ž'Oà.3ß;ssîùÞsî9)ÄÆNÒ)$„%ô¢7_áê¨g#GŽäÃ?ôj¬"|”€ˆˆ¡/¾ø‚ÄÄÄŠG¯*ž€N- ÕNLLL©QÏ6\¸î|ËC÷|äÒ¨gmڴ᪫®ÂfîXoD IDAT³y9b &KD$Èœ>}š… 2nܸŠ7üúkhÙ.¾Ø7‰_)5êÙÖ­Çß’n ¹,"^¦‘ “žžÎÑ£G¹ùæ›Ë]Ÿ““ÃðáÉì|û=>:lwil R­[C‹ðÕWVG""Õ€‘ óŸÿü‡ /¼N:•YW<öÒé=h‘’YG_uil R6ôî­DD|B ˆˆHùâ‹/èÛ·/!!e‹øâ°o$‡Bùšëpel b½{æM°gÕ‘ˆHS""DöìÙÆ œv¿r̀ݛXÀwtçÔ?km·¢õR-]w£%D­ "âeJ@DD‚HHHãǧwïÞå®/(%Œ®g1 ¸éܽ+5¶©èhèÜY ˆˆx‘ Ò¤I&OžLÆ Ë]VH"Ôçå$ •›[‚XïÞ°hØí.ï:bÄ^{í5/%"ÁF ˆˆH5’˜ÏM¼Ç!¢XCçsÖV~l R½{CN¬_ïò®GŽá_ÿú—‚‘`£DD¤IMMa@øl¾¢#vŠ'³ãê Ø¤zö„ÚµÝê†Õ·o_¾ûî;:ä…ÀD$˜(©FbBBhŸœ“W†ߟ¸¸ÄÇ÷gذ¹.Í€-A*<®¹ÆíÄn·³páB/&"ÁD3¡‹ˆT'‹c3†û>ú;÷5kfu4âz÷†?üN‚Zµ*½[Ó¦Miß¾=ÿþ÷¿}*ÞpÁGòáƒÅRMÝpƒã·]©®ºê*Z´háÙxD$¨( p³gϦ_¿~Ô®]ÛùF§NÁ7ßèù©”œ°0v7¼€¹ÿ—B›6HHèÇðáÉäääXšˆuÁ `;vì`Íš5DF6&!¡¡„…’˜OjjÊ™y=–/‡Ü\=ÿ!ç•MÏžw3ò×Þ$±Œ-G> YY™,_ž¤ùbD¤ÊÔ""Àf̘ÍÂ7ß% ""j÷îÝääìîw²EQeqï^øïõü‡TJAA(`ãµYÈ äÓ³Ö†­qŸ‘ILL0ÀÉE•Å… ÏÌí raa…€àSÒ“•\ÈÁ¢µö¢õ•g·Û= ˆ<% ""ªaÆÄÄ\Ôs²EQeqÁèÒ¢£}ž¨ÄÄx €ùÜ‚ÁFæ­Í(Z_9wÞy'ÉÉÉžRDš‘vve±¬ zvŽƒ/¾€ÎZIDJKMM!6vÎ!¢XÎoÈ'@:±±$55¥Ò¯Õ¨Q#>þøcŒ1^‹WD‘vveŠ»ºØ)®,¾Ô§+;·ßn]PbbbHOŸÅ°as‰ïÏʘ_èmû’‡îùÈå!x ÄîÝ»Yµj•#‘@£y@DDXqe1%%•ÌÌçΙdõLJ6m m[«C•CZÚÇvì€V­øÛÀ߀‹óüæ7¿!&&†Ù³g“˜˜è…HE$) p¥*‹g+(€Ï>ƒ‡Òð»â¾–-¡}{øôS4È¥]CCC¹ýöÛ™={6/¾ø"6‡"‚º`‰ˆ¯eËàðau¿’ª8æÏ‡Ó§]ÞõŽ;î`ÇŽ¬[·Î ‰H R""¬æÌæÍ¡S'«#‘@7p = ß|ãò®×^{-QQQÌž=Û ‰H R""@~ù宼òÊóßM¶Ûá“O­êö"UÕ¾=\r‰£–‹jÔ¨ÁÀ™?¾‘@¤DD$€|øá‡dffÒ´iÓŠ7ÌÈ€ýûáŽ;|˜7› n»Í‘€¸1±àŸÿüg–-[æ…ÀD$) iiiôïßÿüC¡Î™ƒ=&†ûÞù„„„~´i3€„„~ žLNNŽo‚•à2p ìÝ kÖ¸¼k³fͨ_¿¾‚‘@¤Q°DDĺuëX·n'N¬xCc(üøcfåÕ íý;n€ °“••ÉòåI.Ïç •WBt´£¤kW«£‘¦‘‘––ÆE]DŸ>}*ÞpýzBþ™éÿKºãH>ÀQäwgÛ¶I¤¤¤z7X >aaп¿[ψˆœM ˆ8q‚§Ÿ~š>}úEHH3f̰:, @ùùù|ðÁüîw¿#,ì<×sæp4$Œ%Œt²A723³<£TBVlÙbu$"À”€xQNN'NdóæÍtèÐ@“0‰ˆ[æÍ›Ç¡C‡>|øù7ž;—¯#/¢€šN6¡  Ô£ñI5Ñ»7Ôªå˜àRDÄMJ@¼¨I“&8p€;v0eJ9³‹ˆTÒÌ™3éÖ­mÛ¶­xÃM› +‹ÅõÆÉFv =¢TµkÃM7©–ˆT‰/ªY³&^x!Æ8«ˆˆœßŒ3øÇ?þqþ çÎ…:uÈ¿æ* ÃÉF$&Æ{2<©N„ôt8pÀ­Ý1¬Zµ »ÃùŠHpP""êÔ©Ã¥—^zþ çÎ…›ofÒ+$6vWôì@:±±$55Å{ÁJp»åǼ ŸîÖî«W¯&11‘%K–x80 J@DD‚Å®]Ž9n¿˜˜ÒÓg1lØ\âãû7€øøþ 6WCðJÕDGÃõ×Ã?ÿéÖî]ºt!..Ž´´4&"B󀈈‹¹s¡fM¸ùfbbbHKÓógâC‡Â½÷ÂöíЪ•K»Úl6† ƳÏ>Ë›o¾© Eª!µ€ˆˆ‹¹sáÆ¡^=«#‘`wÛmP·.¼ÿ¾[»2„üü|fÍšåáÀD$¨Ä=úè£4hРԲÁƒ3xð`‹"¿·m¬Xáv…PÄ%µkÃ]w9η§ž‚×îg6mÚ”o¼‘´´4xà/)Ru3gÎdæÌ™¥–9rÄ¢h‚‡?4uêT:uêdu"H¦Ow´|Üq‡Õ‘Hu1t(¼û®#ñ½új—w>|8IIIlܸñüÃK‹X¤¼Àk×®¥sçÎEÔKDÄO­[·®rCx:Áƒw¦E|᪫ÏLŸîÖî  aÆLws \jñ²7Þxƒ#Gްoß>>ÿüs~þùgÆŒC=õÕ‘³äää’’ÊŠ«ùé§¥4mÚÞ½o 55ÅùÈU_}{öÀ}÷ù6X©Þl62^z ^êÔqi÷ˆˆ~øajÖ¬é¥EÄ_ÙŒfÈóª–-[²k×.À1ò8&a²ÙlìØ±ƒæÍ›—l[ܤ·fÍuÁ©†²³³éÙón¶m{˜ üøÈ"6v‚óásïº 6n„ •B_Ù±ÃÑ ò8FÅ©T_«:µ€xÙŽ;¬ADÄøñSŠ’à&à! ÐmÛ&1fÌ3DDÔ&33‹‚‚P ¹®] þòé§Ø^|Qɇø^Ë–pÍ50c†©4% ""~"33 H^N£ÏZÛ’9s¾æôé´¢ml€²ã4ü¯O.ð}È"އÑGŒ€Ý»áâ‹­ŽFD€Bñ¡@!0HšµöeNŸ~èŽ#ù°1‚Å|Î5$§¾çÛ`EŠ µj9ºa‰ˆT‚?VÌv³öG G©%YC;~à=+j=±@ݺŽáŸgÌ=V*"• DDÄOtíÚxèt3BVV&Ë—fý AÔIKƒ©S!"Âå×7Æ0dÈ.¿ürÆïéðEÄ(ñ#111¤¥M)³<''‡U«’ضmмËR®a9ÄÆþ‘ÔÔY¾Vª•3ÃDw?kiÅÃDOÜùw&9ŸÆE6›ˆˆ¦NÊ£>Jxx¸§B?£.X"" &&†ôôY 6—[_Ïu,áË&G6l®ó E<È1ÐA7'k»1oóèÑÞyÇí÷7nà£>rû5DÄÿ) Å­# î¾ êÕcòÖ•¤¥MQò!>áèÀÙd—!Žõ£GâE°~½[ïѶm[n¾ùf^~ùe= "Ä”€ˆˆ’ÂBǃ¾ƒCíÚVG#Õˆc gIݱþÎ;¡ysxùe·ßç±Çã‡~`ñâÅn¿†ˆø7% ""dÎس~ÿ{«#‘jÆ1гav‹B ƒ±caæLÇyê†^½zÑ¡C^®B#"þM ˆˆˆ…Ž;VùÉ“áúë¡sgï%RŽÔÔbc'éœ;L´c „Ç¢# Nxí5·ÞÇf³1nÜ8¾üòK~øáD."þF ˆˆˆEòòòhß¾=¯¼òJåvX¸¾ÿþðï&R޳BˆïO\Üâãû—¡n]9¦Mƒ£GÝz¯¤¤$Z·nÍÒ¥K=w"â74 ¯ˆˆEÞzë-víÚEß¾}+·Ã /@×®pÝuÞ LÄ gÃD—1z´ã9wÞÇwù}jÖ¬Éúõë©­çœD‚’Z@DD,pôèQ&NœÈ}÷ÝGÛ¶mÏ¿Cz:|ó£õÃæl$"?Ѥ ÜscRÂü|·^BɇHðR""b)S¦pòäIžyæ™Êíð ж-Üz«Wãñ˜Çƒ½{a–&ɑҔ€ˆˆøØþýûyå•WxôÑGiÚ´éùwøïaÞ<?BTlK€¸ürèÛ^zÉ1€‚ˆH]ÉDD|ì™gž¡V­Z¤¤¤Tn‡_„‹/vÌý!H6l€¯¾²:ñ#z]DÄ‹rrrHII%33‹‚‚P ²}ûržyæ4hpþرÃ1§Â+¯@ÍšÞXÄ çžçaa…$&Æ“úb21;:ZAn¼Ñê0EÄO(ñ’ììlzö¼›mÛžR°HfÆŒ¯9r䙡Kyé%hØî¿ßëñЏ£üóÜNVV&Ë—ßÍÚä©÷ÐC°~=´o_¥÷ÊËË#<<Üa‹ˆ…ÔKDÄKÆŸRT)뎣RÐø˜íÛ_ %%µâ8xÞ{y4"ø©òÏó ;Û¶MbÜÊÍм¹#™®‚ùóçÓ¢E :TňEÄjJ@DD¼$33 èædm·¢õ˜:ÂÂ`Ô(O‡&â1ç;ÏÓWov< òá‡P…™Í»uëÆ‰'˜4i’Û¯!"þA ˆˆˆ—„ræŽð¹BŠÖ;qô(üõ¯ðÐCŽ.X"~ªRçùƒBl,ŒëöˆX111$''óæ›o²sçNwÃ? DDÄK g•-{Ñz'žÞ1ÛØ±ÞMÄc*už×¬é˜}ñb˜?ßí÷;v,ÑÑÑ<òÈ# í+°”€ˆˆxIbb<ádmFÑúrlÚ¯¾ &8f”ñc•>Ïo¹n¸Á1A¡›³£GFFò׿þ•Ï?ÿœ™3gºõ"b=% ""^’ššBlì °-µé´h‘Lnn. ýhÓf ý><™œìl3Æ1ïGr²uÁ‹TR¥ÏóËneàö\ì?ýÄñ_tûýÈàÁƒ=z4ðÀˆˆ¯i^/©S§½{·¡k×ذṒù®¸â22Bùè£{p<¼{fØÒˆÿ\Ïßþ>ÿ"",>‘󋉉!=}VÑ< Ÿç[°3Aüö™gùåÎ;¹à²ËÜzÏ¿üå/$$$0jÔ(æÌ™ãÑãïS""â%úÓŸHKKcýúõ´iÓ¦dùðáÉìÜù"ŽaK‹…P‹vŒ?ø 뛵¤ý-·ø<^wÅÄÄ–6¥Ô2gçùSLã·ö…¬¿m0×oüÞ­÷»à‚ xÿý÷©[·®ûA‹ˆe”€ˆˆxÁÊ•+yõÕWIMM-•|@ñ°¥eçy‚É4æ0##zð›³Q…Dƒ³óübx–ÇyqÓŸ{5›Ãœ™9=5 üYÕSSJMÜyÓM7ùêPDÄÔ€ˆˆ¥rrr*UÙ$§NbøðátëÖ±åŒbUÞ°¥­ØF ©L!™í!|©ˆ÷8ž7›×YÊC4cÔöZôá3À••É’%·a³…µœœ;«zéé³¶\ðgÁX‹S""–ÉÎΦgÏ»‹fQžÊÆSO=Å®]»øôÓO -;×Ç™aKÏTÎ^e,Ù\È Œ§EØÝ¾ VÄKÊ;Ϧpšxœl>c }ùÿáf ;»vÅrn·­âYÕSRRËtõ’ª Ör¸˜’+ÿ¤Q°DÄ2ãÇO)ºèuçL%¥te#Ф§§óÊ+¯ðì³ÏÒ¶mÛr·9wØÒ›ù7˜Ç8^á$ÿu><¯Hq>ùªìÈq99Þ¿ÚÆr¸Xvv6=z$1}údeÍgË–ÏÉÊšÇôéwУG’Î )Ë8úˆws²¶[ÑúÀqäȆJ—.]7nœÓíζ4œ“¼Æ#,âzæÐ„ØØ?–ôƒ d·çÍÇQѵñ(SiÉ&óDÑú0œuÛ‚Á=ú–*’låðÙ‚9¹ tJ@DÄ2Îûˆ„­ÆÚµkÇ?ÿùOœ÷p-¶tذ¹¼vA;.a;¯ÅžfذO¾»ƒH±³ÏóøøþÄÅ >¾?õëÿJñÌéÿå RHe,SéÇ| €ògUŸL¢2ɽ{÷zñ¨*'''‡áÓ¢µ&ØÊá³srèô ˆ5õýôoÎûˆØ‹Öކ 2{öìJmCÚ]×Áô—`Ò$æM˜àåèD|ÏÙð¼Ó§gPüœÇ_à ,b:ÃhO/ö‘ô<ç•ÊQË¡™™Ï°iÓ&:vìÈÛo¿Íï~÷;OJ¥Ú3ÁVŸ-˜“«@§ Zêûéÿœ÷Èîg!ví‚{ï…~ýà‰'ο½H(Û5ËÆpÞ%sÂÒê’'pÞm«âéÁý,D^ÜuÔ­ ï¿!*Š¥ú(¯kV£øáü£Ïõt;}œ w÷¬°ÛVYg*’6›¿ýío$&&2pà@~þùgŸW±@ëöÌå°»ÉU u¡ Tê‚%AËÙ$XgšìÅ:ÅG7¹çÎé&ç_Ý<ê±Ç`Ý:øö[ˆŠ²:Ÿ+¯kO·¡ÎsÏ‘¶t)œµþÜn[¥•®H†‡‡3wî\0`+V¬ 22ÒãÇàL uû ær855…å˓ضmޤ0Gr•Q”\Í*³OeºÐIÕ)‘ hêÊiE$X}ø!¼ù&üíoÐ¥‹Õшø—?ý –,ßþÖ‘¤GG®W$cbb˜7o=zôàw¿ûsæÌ!ÄG-î>Saå3‹Þ.‡­:6w’«Ò½'Š•î=1zô`¯Å\](‘ ÌÖ‰urrrxüñX²dµj5qíBš•<÷Ü>蛀EIX|ðtè#FÀ'Ÿ€ÍæVEòòË/gæÌ™ 0€ &0yòdŸBbb.­Ü…ôøq4Z´€iÓÀæ¬uN¤š»øbHKƒ[ou´ˆ<ç¨ð¹s—þ–[nᥗ^âÈ‘#Þˆ´\îtû©Ì]÷Ê»¿þèî±Yuê=á#FüÆš5k `Ö¬Ycu(A!;;ÛÄÆö2°Ò@¡Sô{¥‰íe²³³­QÌo;Ú@Gµ ,,:§ŠVšaÃ/Çü|c4&2Ò˜}´H š2ÅñÇõÜsVGâ²ììl3lØã&>þf×ßÄÇßl† {Üéu'>þfösÊSrÝŠ¿¹Rï{ðàÁ¢ë^úY¯Wh Ý­ëž«Çá©cóôq¸¢2ñª¾Vuj©&ü펈/óƒuÕçó¡C‡˜;÷ý¢ÿ-®“`BCkXëäΘ1qqýKkLÿþÆÔ¬i̼yK$èÙíÆüáŽ?°7ß´:¯ñT ˆ§^Çc† {¼¨œ-ïµ*hñõ@L®îãÉëBezO¨¤ê4ø|5Hóa¸3y`°L8¨qÇ+Ç×çóÎ;ùÍo~ÃÑ£GiÑ¢;ÐÁÉ–ç l› ·ß §ŸÂ-·x4.‘jÁfƒI“àÑGaÔ(xï=«#ò OMèÉç<5Ÿ‰;ÇæêqxòºPÞ<5ññý6ln@àw¬Î€äŒÊfÔVõ-õwî¸xê.•­•ÊJ¾>Ÿ?ûì3Ó¦M³cÇŽÊŸk§NÓ§1Æ,XàÑxDª%»Ý˜‡2Æf3æƒ<ö²G5{öìñØë³ëwVV–GžY¬¸|<`ê×o_éºC\\§­½mêÕëP©×rçyLW£~ýÎ>½.¨¤ê”€ø‘ÊœÐîTT+.DÊé6b!w ϸ¸&ÁrÆ_“(ìÚfÅùœ——gŒ©ä…ôäIcz÷6¦V-c-òx,"ÕVa¡1ÆjLZšG^r̘1&**Ê|öÙgn牲ð|×שּׁ¬*¿‡ókÉA=\ª;8¿4àZ=ÄÕÏÏõã¸Á§×% U§ÄTæ„v§¢H- Î+—Î ¼5:L‚åŒ?~G¾¸XºÃ“Ÿ•ÇŸ7ڿߘk®1¦vmc–,©úÁŠHiÆÜ¿ãþ­U““c `3jÔ(sòäÉ2Ûxª…Ú7šœß$bà[—ÞÛy¼½¾?‡o¯¡J@ªN ˆ©Ì íNåËê»ë®Tòœ_EÞµ~Wyw•?¶RU|ÞÌ7uë¶«òÙóqUþ|öx··/¾0&&Ƙ‹.2fÅ 7ŽLD*Ån7æï7&<ܘNŒÙ¾½Š/g7o¼ñ† 7W\q…ùñÇK­·òalw”wÍu§‹’ó$À7×\׎ÃûIÑÙ”€T?R™ÚŠª•óa¸ZÉs^ÐWTp?f\½³ãoü±¤â˜¬ûÌ=u>—>×Î=NŽ!7ט±c³®YKseÜõ~Ó]M$¨­]kL«VÆ4h`ÌçŸWùåÖ¯_oâããMDD„yë­·ŒÝn7Æx®|¶òF“»ï]^P¯^÷ ^«òφxö8²£—Ä ŸÔs”€T?â­c¬ëËïê#ç•ËŠúwf›5.«r…ÔJNÿ6­[_ãóï®â –µ “ç&Ç*4ð/WØíú1lÞlL§NÆ^³¦y6ºuÑ9¨AD|æ×_¹õVÇîOsút•^îĉæÁ4€yòÉ'1žK¬¼ÑäÉ÷öä³!Æxª—„1®>d_J@ªN ˆñÖ3 Vr§Ðs§ù8.îz¿{XÚίù&,¬Ëº'TüÝù_—1W5kÖÓ@¢ ô3°½òÇ`·óÞ{ÆÔ©cL\œyªÿïêïR$¨ØíƼø¢ãáô®]=Òò«¯¾2?ýô“1Æs•wO_¿]©¸{ò½=ùlˆçzIø¶¬URuJ@üHeNèóu?±êÁ`g6“yIœùuÖ¬rÿ–]¹¬_¿ÞôìÙÓ¦qãÆæOúSÉ3#Þ8O´6x[ ÍSV•r[ HÕ)ñ’ŒŒ c³ÙÌË/¿\²,77×´nÝÚôìÙ³Ü}ªzB[}·ÜkUpÆÂÈãsIx &+¹7ŒrÕ/2Ç7U ¾ À˜ Œ¹çc¯UË‚YY'Ú<~QGÓ®mŸ ÏÙ@J´EªƒsËæ(~1cxÕü@+cÀ\|±1Ï>kÌîÝ%û¸SÞ®[·ÎŒ9ÒDFFÀ´mÛÖ$''›o¿ýÖ+Çq¦léåw7§Ü)­¼ÆU%ùQRuJ@¼$99ÙÔ¨QÃ;v¬Ôò^xÁØl6³gÏž2ûc HEü-1ñÇImÐ矡{ó×8;¶üü|³fÍóú믛¾}ûšððpS§N“››ëZÀóÑGÆ<ø 1MšætëÖfJT+s1Ÿ¸”TúÛù,R9/›í¦o›o.½Ü˜Úµ ;t0&9ÙŒhÞÕDp­kè±cÇÌœ9sÌ}÷Ýg5jdn»í6/‡o'Þ«,WËA+oÞT妭ªSâ%7ÜpƒIHH(³|Ñ¢EÆf³™ùóç—Ywî íêr Ý-÷vË;Ü)Œ|‘ôÒ Î?C×>§òÏ’LDD=af®»î:óÊ+¯˜Í›7Wü7c·³oŸ1³g3j”1ññg¹Æ<ü°1fØÐÇæïHDÊW©²ùèQcþùOc† 1¦qccÀœ$Â, ·yœTs KLWªBz¶ÂÂBsèС ·ÉËË3ûöí+™ìÐõãðíÄ{ÞdÕ͵€X+ ñŠýû÷Ó¸qã2Ë‹—íÛ·¯Âý³³³éÙón¶m{Hl€¬¬L–/O"=}111¥öIMMaùò$¶m›tB;AlìIMUæ}rrrHII%33‹‚‚P ILŒ'55¥Ìë{ÒøñSŠŽ­ûYKC€îlÛ6‰””TÒÒ¦xíýËVŸõ¹ìEëK+(u²=@HÑúÒ\ýÌcbbÊý,†O Ï0øèQÎ^tér'Ož¤víÚ€³ó`¹¹‰tíZÈÔ©ÏѱcGjÕª8þfzôpœÿ1<Îelær~àò¬¯ÙñÑ¥D× !ä×_/Óªôê&8~7iRò™ÃÿŒãï§<ÝÈÌ|Î…ODD¬P©²¹^=¸çÇ1ÜÚúb·ßJoñgž¦6§ø™‹YO;öÞÿú\z)\r 4l¶²ïBTTT…ñeddpõÕWS¿~}âââhÓ¦MÉïK/½”æÍ›UÁqij¨WïFš5krε¤lýÀŸ9»Æy[bbwÞ©¢$géÒÛèÞ½#6l÷Jb’™™Uôžå±¦’Wqaô%ùù'HHèWêó€<\IZÜI, ¬Ï0¸¸ hd{-„†nムˆˆ8δiÓ€òŽÍIQ|M49\qp=wï†uë`Ïؽ›Ã_-å˃†fô"‚<NÆfÚðßÜ.ìi›Ëíï>;CóæNÁ¤RDü‹Ë7”l6¢®îƫۯäU#”âØB{Öý|Ã]'@RÒ™}"#‰HñOÓ¦pÁe¢¢ FRo—ÀܹsÙ¼y3[¶laË–-|ùå—üòË/%Ûœ:uê<Çqèè:|ñÅ_©_¿>‘‘‘„…©ZWYîÜ´ÏÑ™ê%µjÕ"//¯ÌòÜÜÜ’õÎlœ1ƒ¼/p=ËÎYÛ¨OÈ×Ë`Ñ¢2û†ýú+£ÛÆ@ÛkJ-ß–Æî¢wêÔ €SަŶ´à8°ø¬­×ÁÎÝäìlOc®¦¸’¼;k7Þ þöíÛWtø¬]»¶Âõ¤q©÷,­ñწMuV¹.}Îlß¾#GŽ8]ß AZµjUòÿWûu£pÁCìÛpŽÂh5°™Û|ì?ÝW\íìÎÚåṘ×qÜá?Wׯ„²zòä’%ü-¶]N –K‹–vqüÚ6é÷Ž"9ùR¯²uëV>\ô¶vŒ1\qà'šð,¸2ïÞìè!X°c _ý5ÆìEûÛívŒÝNaa!Æn§sçÎ4-n8·%øiëV.XÀéü| òóK~œ>Íé¼< OŸfò¤I¼Ö©9ý{¿ä $”æ„a'ŒÓ„±:5v` ¦Rá¶0j…„аNmZ7kMÃ:uˆþé'¸å8q‚¶}O( Dr¼ä§&§ÏÜÏÀÝwCX˜£õââ‹Ù~ªù-»iÎn.f qlåRNS°Ÿ×ŸÛo»ÍéùPÌ–0±Ny­Êùù'¨¨Õµ¼»ÛgWH éÆFâÙÈe|D bc3IOßáØpûvص«ôÏŠpà:v{Ù· ‡ºuIKݺDÕ­Ëmuê@­ZŽu­ZA|<¹À¯'Or,/ˆ^`bøQ2Åib9M =ë'•Â?ñÇ-°ã¨:‡……Q3"‚šô¼òJ† êh¥9ûÀf£ °´´4Bà#4,ŒÐÐPBà!44”î=zpÑE•ìs®°ióflE¯b³9þ Øl6Çkt/ç¦ÞY¯µyófŽ=Z²Ï¹¢/¸€V-[–ó=:²nÝ:§ëbcciРA©e1ÀêÉÿÇ;ï¼Ê?n%77P;Í/nÄÍ7_SªÞd³ÙèØ±ã™·n­ðýäül¦¸6#Õ»woöíÛÇ?þXjùâÅ‹éÝ»7óæÍ£_¿~¥Ö­]»–Î;ó÷ˆÏ6¸èG$P…¶ °AXᑵ Çæ¸á¸ð†‡ŸùwDDFò¯/–³çȧ.'¨Ãq"9D4‡‰â ‰nÂÂ5Ÿ9.èE¬6m°eËçN㉋ÀæÍÎ×><™éÓï ü–°t† ›kIw)«t«r7Šo˜ÁÂÂÆRPðŽ¿åÒw·µ6W¹[²ÝGŽÀ/¿œù9|ŽƒãÇËþÎ˃Üܲ?§OÃéÓØóó9zèWBí5©ý¬ô£œ$G¼bfÑÏÙŽË5kÖœ÷f¨”O- ^Ò±cG–.]ʱcǨ[·nÉòŒŒ :tèàtß?¼û.“Ÿý;;wwÑõÀD\Úz‹¥•Ù÷äÉ“.¾[îD³fÍèÕkÛw¼[ο^¤ü;À†V-dzdɇeÖ:tˆ^x‹uë~"77ÐPC|ü%Œuo™;S¦üO?”÷‡»†·Î#9ùþJ‡3‡rÚÕíÈ‘#L›6‹÷PXBh¨Zó‡?Æ”þ]üog?àüwEÿ>Ëéü|òòò0ŽAÊüç}æðáÃäççãì~x­ZµÊÔ!Îf·ÛÙ¿©eç¾Vttt…=ONœ8Á¯ÅÏžã7ÀÕ6M›6-©ç,ûî{سÚéëI%Xñä{uP<ÈK/½T²¬x=z”»ÏÙ£*øbD+O™êê¨VV½çj¬žœ_Å“£f¹óVv–_«‡µz†.u5VO>àêPÉîp6Ô/Ü@ùÏTøßp¾îrö7“““ÃðáÉ>ŸïFD¼ËÕ¹<9:X7—–ø^Åuq•j®¢ [y•ä””7Ë-l]ÃJ®>¬ìé¤ÁÛ‰¥ó‡2#)ÿ˜'yt‡§+"â?\½AäÉIpU¶T/×ÄUJ@¤\åU’+*l##¿ÄÕ1×­âÎì§VÍÔêç:+<ƒ{Þ OV8DÄ¿¸zƒÈ“¸ªl©^*®;ˆ«”€H¥UTØ?þ"uë>ıcoáïC—û0«Î›‰ãò Ïx%yt‡?Î/"žãÊ "OvVÙR½”®;Ô8ïöR±«Àá(l»9YÛ‡Æc6l.ññý‰‹@||† ›ëwÍÐÅwÌ!Vwœi&>W 0øJ&±²½ ¬‚«-¾*[ª—³ë-[>ju8O- Riç+l¡vÀ47R—*W9o&ާuë?–™˜+%åRSß#3s’WŒ·’§&(‘ÀçN\gT¶T?Åu‡µk×Ò¹sg«Ã hJ@¤ÒTØ†Š»˜½ÄÊ•—›TT¿„ ‚¡‹™ˆTž'»àªlqŸº`I¥9 Ó 'kUØú‹`ïbæªÔÔbc'éc3©Vܤ·fÍ:uêdu8eäääУ‡ó;GÕ±r+Acõ‹ˆ7¨l©žü½¾ÔK*Í“è‰xC0?ó#"ÖQÙ"â% â¶""""RzDDDDDD|F ˆ4h Ç'“““cu("""""¥ÄíØ1•éÓï G$%!""""T”€ø¥ ;Û¶M"%%Õê`ÄM999 žLBB?Ú´@BB?µl‰ˆˆHµ§‡ÐýZ723Ÿ³:qCvv6={ÞͶmÏ©8&o´“••ÉòåI²XDDDª-µ€øµ B­BÜ0~ü”¢ä£;gfŽWË–ˆˆˆˆ¿f',¬Ðê Ä ™™Y8&k,O·¢õ""""Õ¿–Abb¼ÕAˆ-W6'kÕ²%"""Õ—žñKv ØØ?’š:Ëê`Ä Ž–+CùIˆZ¶DDD¤úR ˆjÙòQ† ›«•˜£å*ÃÉZµl‰ˆˆHõ¥?4{ö_èÔ©“ÕaH¤¦¦°|yÛ¶MÂñ,HŽ–­ µl‰ˆˆHµ¦DÄ bbbHOŸEJJ*™™ÏQPJXX!‰‰ñ¤¦ªeKDDDª/% "^CZÚ«Ãñ+zDDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£ÄK8ÀO¤ï»zÑ÷]½èû©<% ^Iƒ ¬Cüœ.XÕ‹¾ïêEßwõ¢ï[¤ò”€ˆˆˆˆˆˆÏ(Ÿ ³:€@`Œ!//¯RÛFDDx9‘À¥¤¾ùæ®»îºJm»iÓ&âââªô~7n¬Òþ8Ž9ÂÚµk­C|Dßwõ¢ï»zÑ÷]}¨žVuJ@*¡mÛ¶LŸ>½RÛ^tÑEn¿OãÆiÒ¤ ÷Þ{¯Û¯!§sçÎV‡ >¤ï»zÑ÷]½èû®>š4iBãÆ­#`)©„F1dȯ¿OãÆY½z5û÷ï÷ú{‰ˆˆˆˆ{7n¬¤ ”€øÐ""""Ì”€xÑsÏ=À?þÀûï¿Ï²eËxòÉ'-‹KDDDDÄ*6cŒ±:ˆ`‚ÍfÃSòÀf³QXXhqt"""""¾§DDDDDD|FŠˆˆˆˆˆÏ(ñyyyŒ?ž&MšP»vmºwï΢E‹¬K¼`ÕªU<üðÃ$$$É%—\BRR[·nµ:4ñ‘I“&ÂW\au(â%k×®eÀ€DGGS§N®¸â ^ýu«Ã/X½z5·Þz+Mš4¡N:´mÛ–‰'rêÔ)«C“*8qâO?ý4}úô!**Šf̘Qî¶7n¤OŸ>Ô­[—èèh† Â/¿üâ㈺`ùÁƒ3gÎÆŽË¥—^JZZ«V­bÉ’%\yå•V‡'4hÐ ÒÓÓ¹óÎ;i×®û÷ïç7Þàøñã|÷Ýw$$$X¢xÑž={hÓ¦ !!!´lÙ’ 6X’xØÂ… éß¿?;w&))‰ÈÈH~úé'Œ1Lž<Ùêðă~øáºvíJ“&Mx衇ˆŠŠbåÊ•LŸ>ðé§ŸZ¢¸içδjÕŠK.¹„–-[²téR¦OŸ^fJ†={öбcG6lȘ1c8vì/½ôÍ›7'33“5jXtÀˆ¥222ŒÍf3/¿ürɲÜÜ\ÓºukÓ³gO #oX¹r¥9}út©e[·n5æÞ{ïµ(*ñ•¤¤$sà 7˜k¯½Ö\~ùåV‡#vôèQÓ¨Q#sÇwXŠøÀ„ ŒÍf3YYY¥–:ÔØl6säÈ‹"“ªÊËË34Ƴzõjc³ÙÌŒ3Êl7räHS§N³{÷î’e‹-26›Í¼ýöÛ>‹7© –ÅfÏžMXX<ð@ɲððpFŒAzz:{÷îµ0:ñ´=zVzôëÖ­[ϦM›,ŠJ|aÙ²eÌ™3‡©S§–ŒŒ'ÁåÃ?$;;›I“&Žnv»Ýâ¨Ä[jÕªÀ…^XjùE]Dhh(5kÖ´",ñ€š5k–|¯¦‚ŽBsæÌá–[n¡Y³f%Ë®¿þzâââø×¿þåõ8™‹}ÿý÷ÄÅÅYjy×®]X·na‰c8xð \pÕ¡ˆ—2zôh~ÿûß«›][´hõêÕc÷îÝ´iÓ†ºuëR¿~}þïÿþ¼¼<«Ã»ï¾ûhÔ¨#FŒ`ýúõìÞ½›Y³fñÖ[o1f̘’E‚ÓÞ½{ÉÉÉ¡K—.eÖuíÚ•ï¿ÿÞ‚¨‡&"´ØþýûËù¼xÙ¾}û|’øØ|À¾}ûJ&®”àóÖ[oñóÏ?óõ×_[ŠxÑÖ­[)((`àÀÜÿý¼øâ‹,Y²„×_#GŽðá‡Z¢xP“&MøöÛo¹ùæ›éرcÉò'Ÿ|’gŸ}ÖÂÈÄöïßà´wøðaNŸ>­ç@œPb±S§N^fyDDDÉz ^›6mbÔ¨QôìÙ“¡C‡ZŽxÁ¡C‡xê©§xê©§ˆŽŽ¶:ñ¢ãÇsòäIFŽÉÔ©S8p ùùùL›6gŸ}–Ö­[[¥xÊÁƒéÛ·/ï¼óÑÑÑÌŸ?ŸI“&ѨQ#Feq„âMÅõ³óÕᔀ”O ˆÅjÕªUnÓ|nnnÉz N _¿~4lØÙ³g뙀 õä“OrÁ0zôh«C/+.¯\jùàÁƒ™6mß}÷ 2qâDöîÝË–-[hÒ¤ àH8ív;ãÇgðàÁDEEY¥xKñß»êpîÑ3 kܸq¹Ý¬Š›öŠ 5 .G¥oß¾üïÿãË/¿ä¢‹.²:$ñ‚­[·òÎ;ï0zôhöìÙÃÎ;Ù¹s'¹¹¹äçç³k×.~ýõW«Ã).¯5jTjyñìú®ƒËŠ+èØ±c™ëtÿþý9yò¤žá rÅ]¯ŠëkgÛ¿?ÑÑÑjý¨€‹uìØ‘-[¶pìØ±RË322èСƒa‰åææÒ¿~úé'æÏŸÏe—]fuHâ%{÷îÅn·3fÌZµjUò“™™É–-[hÙ²%'N´:Lñâ‡Q÷ìÙSjyñM¦˜˜ŸÇ$Þsúôi Ë]PPPàëćš6mJLL «V­*³.33Sõ·óPb±AƒQXXÈÛo¿]²,//´´4ºwïNÓ¦M-ŒN<­°°¤¤$222øøãéÖ­›Õ!‰]qÅ|òÉ'|úé§%?Ÿ|ò \rÉ%|úé§Œ1Âê0ÅCîºë.Þ}÷ÝRËÿþ÷¿S£F ®½öZ ¢oéÔ©k×®eëÖ­¥–Ïœ9“ÐÐPÚµkgQdâ+wÜqóçÏ/uÓañâÅlݺ•;ï¼ÓÂÈüŸfB÷III|òÉ'Œ;–ØØXf̘ÁêÕ«Y¼x1W]u•Õá‰=úè£üå/¡ÿþåN÷Þ{¯Q‰¯]{íµ:tˆ~øÁêPÄÃî¿ÿ~Þ{ï=îºë.®¾új–.]ÊìÙ³™0a‚Fº 26l {÷îÔ«W‡~˜¨¨(æÏŸÏ—_~Éïÿ{¦M›fuˆRo¼ñGŽaß¾}¼õÖ[Ü~ûí%­cÆŒ¡^½z%3¡7hЀGy„cÇŽ1eÊš7oΪU«Ô«J@ü@^^úÓŸøç?ÿɯ¿þJûöí™8q"½{÷¶:4ñ°^½z±lÙ²r'6²Ùlå6çKðéÕ«‡bÆ V‡"VPPÀóÏ?OZZûöí£E‹Œ5Š1cÆXšxAff&O?ý4+W®$77—V­Z1tèPRRR Q'“@Ö²eKvíÚP2HLñ$²;vì yóædee1nÜ8V¬XAxx8ýúõãå—_V—ËóP"""""">£ô\DDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(ŸQ"""""">£DDDDDD|F ˆˆˆˆˆˆøŒñ% """""â3J@DDDDDÄg”€ˆˆˆˆˆˆÏ(Ÿù ÐåÚFÑ*IEND®B`‚lmfit-0.9.2/doc/_images/models_stepfit.png0000644000032700003100000007633612603520205022027 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝwxTUþÇñϤ Bµ„" à"JYPW\\Ñ5Ú +¢?u-‹® ¨(Ê *J± ¸€dAAPpEjH± R¤…! }Îï“J IæN&ï×óäÜú½s'ÉùÌ=ç^—1Æ<ÀÏéTCà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1Cà1L§OŸÖÓO?­~ýú©V­ZòóóÓœ9sŠ\'--M­[·–ŸŸŸ&Ož\à2ï¼óŽZµj¥µhÑBÓ¦M+ò€ ’éèÑ£š0a‚vìØ¡:H’\.W‘ëL:Uûöí+tÙ7ß|SÇ×W\¡iÓ¦©[·n3fŒ&MšTöTLaaa:tèvïÞ­—^zéœË9rD&LÐc=Vàü¤¤$=ùä“8p æÏŸ¯¡C‡jΜ9ºãŽ;4aÂ%$$”õ!^’)((HõêÕ“$cιüc=¦Ë/¿\wÜqGóW­Z¥cÇŽiÔ¨Qy¦=Z§OŸÖÒ¥KK_4PÁ@ÎÃÆ5wî\M™2¥Ðebcc%I:uÊ3=""B~~~Ú²eK¹Öx#H ctÿý÷ë¶ÛnÓ•W^Yèrqqqò÷÷W:uòL RíÚµuðàÁò.ð:NPÑÌž=[Û·o×Â… ‹\.))IAAAÎ VRRRy”x5H œ=O™>}ºªU«¦ºŸV­Z)""¢\ŽÞ%44”s]‰p¾+ÎwåÂùŠ’Ë´iÓ”Ý***J{÷î•dÃGxx¸ÂÃÃó¬“Õ«M›6ºñƳ§W©RE&LÐèÑ£uë­·ªOŸ>úæ›oôÁhâĉ õÌA^„’ËäÉ“õÛo¿I’\.—-Z¤… Êår)22R5jÔ(Ñöî»ï>jòäÉŠŠŠRÓ¦M5eÊ3¦<ʼ$—Ý»w—xæÍ›Ëív:ذa6lXiÊ|"4dȧK€q¾+ÎwåÂùŠ8ˆ?X• ç»rá|W.œo ø <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àc <†Àcœ.ø†ÿû?iíZéŸÿ”þøGÉårº¢Ò3ÆèôéÓ:uê”år¹t饗¹ÎŒ3täÈ%''+%%Eéééy¾ ¤ºþO?ý¤¡C‡*==]n·[n·[Ƙ<ÿ~öÙgjÒ¤I¡Ûxá…4}úô|ëfý¿]»vZ¹re‘Ç®={öäy-r{úé§õàƒº~ll¬®¹æš"÷±uëV]tÑE…Îê©§4yòäBçwèÐAß~ûm‘ûhÕª•vïÞ]èü &è‘G)t~LLŒºwïžý½Ûí.r87ÀãV­’þýo©qc©iS©{wéê«® Å‘œ,-Y"]u•Ô°aÎôôtiÖ,Éß_8PêÒEz廜ÓÒÓÓuüøqÅÇÇëâ‹/Vppp¡ËN:U¯¿þº•˜˜¨S§NåixwèÐA±±±EîoæÌ™:xð ªT©¢   * ûë\ò*Uª¨E‹ ŸŸŸüüüär¹²ÿu¹\ªR¥J‘ÛWddd¾õ²þß0÷É+ĨQ£tâĉBççn”$,,LÏ<óL‘ËÔ¬Y³Èù}úôQíÚµóLsåJ¶uëÖ-r}IzüñÇuòäÉBçwëÖ­Àé H:H7ÖË/¿œ=}ß¾}š4iÒ9÷‹Â¹ÌÙqމ‰‰QÇŽµyófEDD8]€RJI‘‚‚|ãSà, RÕªö¸Î—1¶qzèT³¦´gtê”´m›Ô¶mñ¶±aƒÔ®rþuWB‚týõÒë¯Ûº+«¤7ÞÞzKŠ—î½WzçœùëÖÙ ¹n=Ÿÿø‡ôÛoÒÞ½ö=ã ñññzýõ×uðàA8p ûëèÑ£ÙË|÷Ýwj[ÄméÒ¥úꫯT½zõ¿jÕª¥+®¸¢TuÆÅI/¿,½ð‚XªM¡œ;&Õ¯/Ý}·ôöÛyçÑ^+=®€@90Æ~¢ß¬™ôÉ'¾B>üPŠŒ´Ÿp_q…Ô©“ôðÃÒ9z£ä³~½m?E0@JM•Z´Æ—æÏ?÷ú؆î3ÏØ®>åmáB[ï#H«W~.Ïœ‘JμUt´Ô«—=ö{î‘Nž”>ýTš1#§ýùçR­ZRçÎö=òŸÿØ÷ÆìÙÒ¨Q¥Û¿ÛíÖž={dŒQ£F—(8¸àó––¦3f¨Q£F S×®]Õ¨Q#5hÐ@uêÔQíÚµ‹ìî#I (²{TY˜:Õ^ºñFéCÎ)+[ãB€cÜnɯG»Ýö+  [µŸ~j¯ê}õUÙm¹xÍ›7IfóæÍN— ”>ûÌCŒ™;·ôÛ;zôü×ݾݘ;J·ÿ>0ÆÏϘ;î0æµ×Œ¹ûnc76¦Nc6m*Ù¶þòc.»Ì˜ŒŒœio¿m_«mÛνþ«¯ÚeÛ´)Ù~ÏåÐ!c¾ú*ÿôë¯7¦^=»ÏåË ^×í6¦Cûºøš]»ìñ_y¥1 vZt´}=V¬ÈY®sgcn»-ïºù‹1—\bLzzñ÷—˜˜hV¯^m^zé%s×]w™Ž;šªU«IfР¿š Œ1¢ôÇå”ôtc5²¯ß“O–n[û÷fL—.eS[yxåcš4)Ýï°s9Ò˜NòþN)­¾}©VÍž§Ý»óΣ½Vz/Âð½{Û?ˆ·ßnLh¨m(œ¯õëmã¿ ÆqQvî´û—Œ©RŘ™3mC¹¤>üÐîÿ®»ò6$ããéÚÕ˜ .ÈÛ-ʾ}ÆøûÛ“[jª1]dÌ-·œ{]»æ‚íÛ _îØ1cNŸ.z[Æ|ú©17ÝdL@€ÝæªU9ó¶Ç>c†Ýo§N¿†_}e×õ÷7æ·ßÎ} žæv³`1Ï)^=ôñóó3’LÕªUMçÎÍÝwßm^~ùe³dÉçæÊ+˜ .°ÛüðÃâÿ¹¤¤U² ôì³Æ¼õVÉ÷µl™­ÿòËKN2&""§‘¼aÃùo«(Æ dÌ{ï•|Ýo¿µ?’1cÇ–}mÆØß)vÿùOÙl3>Þþ>xöYûó?sfÞùkÖÐ^+-ˆ!€¾!6Öþ1œ7Ϙß7¦AcþøÇs7þW­² º³A£FÙí]sMñöïvóÔSörƶñXøþÊZR’½:Õ·¯½ú’ûµÎòãö˜²R«VÆlÞl–S§SµªW³¦1Ó§Ûó|ê”mwéb¯rýòKþí>ü°1uëÚå?øÀn#..ÿr½zÙí'ü~ñÅfæÌ™fÛ¶m&---ϼqãì{ñë¯í•¸êÕ >Þ¢ÄÆÚ÷fî0•‘a·W’Póë¯6pIö}[˜èèüï—Ûn3¦uk{ÕÏÏÏåsIMµà>°¿S²BAµjö\6onFs[¿Þ^-,®Ó§yäÛ Ï-ëjn͚ū5Ëï¿Û+W]eÌ¿þeGìÚUüõ‹ëÿþÏþ.¸újc®¸"ÿUÝ»íÏñÀög´8Wƒgδç7..烤Üúô¡½VZŒ€2öÊ+öÎNþ³í“üÖ[¶¯÷ÛoK#F¼ÎöíÒM7Ù¾õ7Ü`ÇFHRZšÑ¡ƒôõ×Òÿþ'õìYôþ_{ÍŽ§7Nz챜À=zH#GJÛ¶-JQ½D;p!5UJMUÒ‰T?œª„#©Ú“ªùï§*Фjáíiº¡¿[~ÿ1¶£uNï2Us»õß?}`t8ÎN3n·Nýdt,Êhà £?·®éitýuFéSŒÞí"Õ˜›¿îÈ ioéË›¥¯\Ү̻f®üFúÓMöÿ¿® ”†ü.ù·”vÏL]; þwiù³Òõ¤A-¤Ë¤Ï—I?ý]jÕ*ÿþ’ž—þÛ×ÞµI’ºw”Þ%ýöˆ¿“:Eúw ©ÎGÒµ²ÿÿa”tãÞœ>íÇKa‹¤±ƒí€õÕ¯Kg0ðú<ïù’”,U9kÌÙ$é‹/¤õë¤Óg¤~Kñë¤×æHW^iÇ^>l;ÿðƒtUMéÕ‘R­ÚÒܹÒÜÎÒÊ0iß~iÖÕRïÞÒ²åÒúû¤ OJ'NÚþïëJwFJÍ?Ï_×h·”|TÚõ ”¾Nz¡±Ôà“ü˽rQ²Þy÷½Ñú{ ÐSÍš5“doÒðãOÒ‘ÃvÿþþÒõY+­^m¿2íØ!%¼.}6@ê¹UêÒ^š´\ZØKzðÁâ÷ý%]+ÍX&mǬ,‰’j®”žª)þ§¤øblgôhˆ½Âú¡RǵöÿYNœ¢¢¤›ì÷— ·ã¦Î$I þ#  E¶ºí{­f{»\ZºµX ³?ó!!vÿ‡JJFÒz—T¯®Ô舴n¸tÅ·ÒÛí¤¥J§.—.¸À¾g–L´ïǸ£RÃç>¦e ¥¤ÕÒŠ•vœO–Ó¤çØAÙ«o‘n¾ùÜÛ2FúÏÛÒí¿KÿfÒB¤ÿ –.ºëÜë×™3’¦Jï]#µn-Mù·´m¸}팑–.•–!ùûI×_,uN>¾ÚÞ.º¨#¤¼!½z‰}? •6üW2¯ÙŸÁ'¤Ú+ö•ÝATRÜË‹pW â;p@jÞ\zñE顇r¦ÿío6ˆLj>¹:d¡¡ö\X˜ôÙgvÞçŸÛç)lÞlõêI+V°ãÔTi×.­ÿÏ~M*N·öˆÓ€ˆ8Û‹³­‡ÄD¥?)s2QJ/¯— ‡Ë%ãrÉ-?e¸]2²_AÁ.ù2;=Æ.??Û¨t»mC88XòsIÉ)v^P ”ᶇ5/%U2n)¸Šä’m¬¥¦Ú†Hp°–¥°yF¶aìrÙ}$§ØAÖþv¾Ûm÷ f6zÓÒmYwEMNÎ;?7“™"ŠsO#ûZ¤§Ûzm#=#ÃÖ.ÙýØã7²Ë¦¥e¿ür¹ì:y1-Ín'(È6βdd¾Þ~~v=—«ðZMæ±úûÛuìk–5/##CééÊÈ~f‚K~~Aòóó“1vÿY y½r“Ÿ_ÞsåvÛó“{¿çz=“’ìòYûΪ=0Ðkjª=…½?ÏÞN` ]'#ÃÖo¤<ÇhëÌȰÛÍÈ|‡T±ûKÊ|ý²êOO—RÓröåçg×w¹¤à I.ÉaÏ“Ÿ_Îk–USÖ똚ù¾‘Š÷úd¸íû>kÁÁö}á6öÙãJK+úõ1Êù™ÍȰ5ûûç=¶*Á%žÕH-h—i™ï;?9ÅÖY¥JÎÏN``Îû?ëxÎ~/½¿Ü¯eÖk“uÜiiÒÆt·®V íµÒpúŒ·8uê”yê©§Lß¾}MÍš5Ëå2³ÏêÌêv»Í¬Y³Ì 7Ü`š4ibªU«fÚ¶mkž}öY“œœ\àvgΜi.¿ürS¥JsÙe—™©S§Z]°€Šïÿ0¦Fü]Œ22l×ɘdzÝQÜn;Æ sgÛUjï^ÛeÉåÊéZr綯¸ÛmÌüùvýè…¿³p¡1ÿü§Ië7À¤_t‰qûùåº.!ã¾ðB»b¯^¶OÒý÷ÛþO/¼`?ýºy Ö\3¢Þ"³ð¾/ÌÀ_›>5Ö™Š6kßÜf~Xô“ù=z—¸räˆíw‘`ÌÉ“¶?Ô©Sv AR’1Éɶ}Zší‹“‘Q`_›Ã‡mw®G=÷k˜»Ï™3vlHß¾¶+‘dÝÛ-¥V-ûz._žÓí-·¬±gwƒ™5+ÿ ê³çÝs1ÁÁ9¯³<ú¨ÿÆöðëÖµ/o–aÃl·»Ü0füxcš6µc‚²Ž¡0¿üb»~óøãÆÜx£}_Ù}ß~{á㊒“ îâVÆŽµ¯‘d»F}øá‡æºë®3þþþÆår™«®ºÊLž<ÙÌž½Ûtïn»bEDÓ³§1/¾hÌÏ?ÛØ9]çvÂÛí'0ÐvMŒÏ¿ÿ—_¶¯Kîq;…yã Û-.Î~µooë~衜}6h`»<eÒ${²Þ§ÉÉöü\píâsíµöœ?nç?nßÃ;Ú¯r¶5j”í.hŒýºä;jÿ~»Ÿk®1æ…lmçr×]Æ4kfÌêÕö¸^{;çBBlw¨Âœ>mo Ñ­›ýQnÝÚþÚp»m·¾&MìþOŸ¶ƒç.x;Ÿ|b_?Éve<{Ž™3m׸¬ó{ú´}¾öš}}40æ–[h¯•$ÓîÝ»Ëå2Í›77½zõ2.—ËÌ™3'Ï2‰‰‰Æår™îÝ»›‰'š™3gš{ï½×øûû›^½zåÛæŒ3ŒËå2ƒ63gÎ4‘‘‘Æår™ ú‰0 ¢ÛµË6B~¸ðe&O¶/ºÈöa—lüèh;ÿôiÛèzøaûÿ .0fÒãÇŒyÿ}ã¾ç^³/°yvÈ8V¥Yêú£™¤‡Í0½e®Ñ*sC›æÔÑ3…é·ßìÀbÉæ“ÇËèE(Ÿ~jë¼ê*ûš%%åÌ>ܾ–—_nµ3èÝÛ˜¶msú†9bLíÚ¶ßARSmPŒ¹ùæüóÝnÛx‘l?|Ɇ£,YAé®»lˆ¹òJÛà©ZÕ˜¡Cí6%»””¼Û>vÌŽu¨VÍžŸsæýü³íKÿõ×ÅzÙéºëì2'^Ç´iv™Å‹óÏëÓÇn;·ž=í*>úÈ®÷ñÇ´×J‹’)%%ÅÎü ]`IMM5ëÖ­Ë·îøñãËå2+W®ÌžvæÌS»vmsà 7äYö¯ý«¹à‚ Ìñ¬Fr!€Wzº٬ٹB‹Û«“&ÙÆÈÙ·x|è!cšÔL4k†¾k–ª¿qgÝâ¥m[óSß1æ&-2 tдli?^¸Ð6¤>ú¨dƒDããí@UoçvÛîYƒès[¹ÒN÷ó3fË–‚×_·Î.óÿg?½­ZÕ†¼C‡ ßgVåã ¯)ëæ×]—þ!¶!Û¹³ "Ó§ç¼/Ünûij` ýÄüÎ;m°xüqÛx ±µf5‚½YF†½ ì Aö{÷ùÜfÍØz@€}­š41¦~}nŠcÏûºýÞÈíûï‹w—¤½{í{iútÛ°mÚÔÖâïoLxxÎM Šs»è³Ížm烙ûÓÿãÇíþÞ|Ó†°>}J¾ÝÜ:u²ãûïs¦e]Å8kL¿1Ɔ—+oÈp»íï2??ûÎÝ\ÉȰW°Z´È{•mäH;¼ ;©íÇíY,,Ìþîúþ{;-ë&Y7}˜1#ïþ7l°Wš[´°Û9Ûo¿Ù;¾%ëwJ³fyoÊñÍ79ç#·gž±Ç×­›½‚C{­ô Ø´iS¤0Û¶m3.—ËL›6-{ÚÒ¥KËå2Ÿþyže×­[g\.—yÿý÷óm‡74Pq½ð‚ýC^êO§wì0ÇïzÀ$¨†ÉËl®ÞÓ¶V3ûÛ¤§Û«(«WŸß-u+ª;làì®6ii¶q5fLÑëßpƒmÌDDóüóç¾UnJнKQQ]_22Œ™2Řï¾+xþ¹ÎϦM6|tïn¹U«ÚðYT0rZz·BÛ²Å6ÜKëé§í9êܹ䷭ž3§èÛý>ú¨í®WHoéû̘‹/¶WÊòÙ¹ýú« úè£ìiÏ>û¬q¹\æèYOÞIII1þþþæáúhð†*¦ØXûivqÆ7jÇûñ¼dL:fÞÅO˜&ú­ÄÔ}Ya ú'Îýü†ÄDï|>GnÞ(7nÜhnºé&sÛÙO,C©©¶q—»‹]q¹ÝÆüéO¶!ösNÒÒl˜øûß‹·­¬çt´m›7 &'óïÛF~Y7Îî¯{÷ò{ôìi?½Ïݘÿøc»ß³K–Õ« ¿ewV·È^°ÛnÕªxãTÎ%#ÃnÏÏφƒÒ>@õ\žyÆþîþþ{{«ôÚµ îò—’b»E6nlßO´×JR€’뮻΄††š¹®GŽ=Ú¸|½zõÌígßTÚð†*¢ŒŒœþëÅùt5ŸC‡ìC:üýíGùo¿mLR’Y±Â~â_Ìnô@¹X¿~½éß¿¿‘dZ¶l™ïæ,ÞäçŸíÑË/ç¾d‰m,÷OkF†}HAƒÞËCÖÕ†%KÊoË—Û+ wÝeÐIIöÙ!¹ÇÄ”ÔOä\X¾¼ÌJ5;wÚ ðÊ+e·ÍÂ$%Ù«]uêØãøì³Â—}öÙœçÄÐ^+=žRJ'NÔ—_~©éÓ§«FÙÓ“’’Tà:ÁÁÁJJJòT‰ÊQt´ôÝwÒ—_ÚÛ:›1Ò¼yÒý÷Ûï_|ÑÞŸ7ó^®×]gŸ/á*ÎýZ2öÃ?è‰'žÐâŋպukÍ›7Oƒ–Ö=U½Ðe—IÆIÏ?oÿ½ðBé÷ߥ¿ÿ]êÖM /Þvüü¤!CÊ·Öܺu³Ï9iÑ¢üöѧôÁÒwÚ[̶m+íß/-[vþÛ?ÞÖ]µªÝ~Y¹øb{çðÀbÜZ¹´ªT‘ÞxÃÖÿè£Rÿþ…/ûä“å_OeB)…?þXãÆÓ°aÃ4räÈ<óBBB”šu£ö³$''+$$Ä%(gÎîêa IDATQQöafçz8`‡Ûƒ|ú©tÛmöá uêä[ŒðOËÈÈÐßþö7½ûî»jÖ¬™Þÿ} 2D~%ypƒƒžzJš3GšÜtÌ©eËóßž¿¿ôŸÿ”]}¹y"|d¹þz¤.½Ôsûä¼­X±B‘‘‘8p f̘‘o~Æ •‘‘¡øøxÕÉÕ°HMMÕ±cÇVè¶ÇŽ«ÐÐÐ<Ó† ¢!žüH@±,^lŸZ^Ü'1+:Ú>ò<=]Z°@4¨\ëJÂßß_!!!š2eŠFŽYè•|ofÖ¯¼"9"­\)-_nŸjéO²šüûß6 Á**Λ7OóæÍË3-!!¡œ+ò}ó°aÃÝ|óÍêÒ¥‹æÏŸ_à'Cá™×z7mÚ¤þ¹®éEGGËív«C‡…nÊ”)}ôÍ7ßèƒ>Ðĉóu±Pñ,^,õî-U¯^ÄBÆHãÆIÏ='=û¬ôÄÞÝð·ßn¿x'H.“'OÖo¿ý&Ir¹\Z´h‘.\(—Ë¥ÈÈH¹Ýníß¿_.—K=öX¾õï¾ûîì"I÷ÝwŸ5yòdEEE©iÓ¦š2eŠÆŒã±cP>Ž“¾ùFzýõ"2ÆŽŠ}î9Ûä‘G°£ÓŸ}–ðGeddhüøñêÝ»·.¹ä}÷ÝwºŽ‘ÙD€JI±ðºñÆBذA:Tºë.;æpÈáÇշo_ýë_ÿÒ¸qãôå—_ªiÓ¦N— ’£ ”Ð’%öáf·ÜRÀÌýûíÍö#"ì}@p‡lÚ´I7ß|³ÒÓÓµbÅ õîÝÛé’@JlÎÛýªU«³f¤¦Ú J J…ܦð„©S§ªI“&Z°`ã=x”À‘#ÒçŸKS¦0sÂ)6VZ»VjÐÀ㵹͘1Cþþþ…>¯ œB€˜7Ïöªºí¶³f¬_/MœhžwîìDi@U«Vuº(ƒÐ æÌ‘”j×Î5ñôiéÎ;mðxüqÇj " €@1}÷íau×]gÍxøaéàAiî\)€ Ë…Å4g޽òÑ¿®‰k×J3fH/½$µháXm¨œöïß/cŒÓe@‰@ ÒÓí³o¿] Êœ˜‘!ݿԩ“ô·¿9Z*Ÿõë׫]»vš6mšÓ¥@‰ÐWŠaãFéÐ!@²½óŽc¯‚øñyxð…­ •KîðñßÿþWÕªUsº$(1º`@1lÙ"…‡g~³c‡ôÆÒóÏK :Z* 6¨ÿþ„W@àÒÒ¤íÛ¥2'ŒoŸt~ÿýŽÖ…Ê#))I7ß|³Ú·oOøPáqÎá§Ÿ¤””ÌòÓOöqèÓ¦IUª8]*‰}òÉ'jÓ¦ á@…G€sزÅþÛ¾½¤ûÆKKC‡:Z*Ÿ«®ºÊé L@à¶l‘.¾XºðÀÒGÙñÁÁN—@…Ä8‡ØØÌîWãÇKMšH÷ÞëtITX(‚1ö Èu’æÏ—ž|2×½x@I@ ûöÙgöÿåßRýúÒ]w9]|\JJŠÓ%@¹"€@bc¥š:¦¦«æH£F1öåjñâÅjݺµ<èt)Pn P„-[¤±Uߖ˸¥‘#.>lÛ¶mºãŽ;Ô¡C5hÐÀér Ü@ ߍéoÓäºýv©^=§Ë:zô¨n¼ñF]z饚;w®üüøó Àwq^(Býµ‹T/e¿ôÀN—•‘‘¡!C†èÌ™3úßÿþǃø<âøqéŽø):Ôº—´oït9ðQãÆÓªU«´råJ5mÚÔér Ü@ ?°IݵN{ï[ìt)ðQŸ~ú©žþyMš4I½zõrºð:™@!_©ƒMÔxä§KúðÃ5hÐ =üðÃN—Ã(À_Ψˮyú±ïX…ú;]|Ô¼yó”’’"—Ëåt)à1\€¬{xj(Q­_¼ÛéRàÃüýýUµjU§Ë"€ÀY’“¥Ÿ¿«Ÿ÷Rõö;]>…gYúÚN]¶Z5Æuº|r1F:öÊl ¸P F rº|rYûM†úž­c}‡H!!N—€Ï!€@.;ß\©&Ú¯Æãîuºø-[¶hÔ¨Q:sæŒÓ¥€ã¸ /äöõ‡ÚWír5éÒÉéRà#’’’tÇw(00PþþÜÒ É$%«ËÁOµ¹ÇƒjÂsPFž|òIíܹS›7oVpp°Óå€ã )þÃåªkNÊÜú§KøöÛo5eÊMš4ImÚ´qºð Œ€LÉs>Ö6]¡Ëonåt)ðgΜÑ=÷Ü£®]»êÁtºð¤3gTo}”>»à/ sºø‚qãÆiïÞ½š5kc? º`€$}ö™‚ÓNk×Õt¿Bé­]»V¯¾úª&Mš¤–-[:]xH2¬mþjtÍ¥N—P¿~}ýýï§ë€.Xpê”Ì’¥ú ã/êÄÝwQ.¹ä½öÚkt½€@à¿ÿ•_r’æëVuìèt1ø6º`À¢EÚ×°³Òýš«A§‹À·q@å–’"-[¦•Uo¢û@P¹}ýµ”˜¨™Go¤û@P¹EE)­qs­=Ù–+ x@åeŒ¥ÝWÜ(ÉÅœ—µk×jìØ±JJJrº¨„ òÚºUÚ·O«ºÞ¨&M¤zõœ.MzzºF¥ÀÀ@9]T•WT”tá…zoOuïît1¨ˆ¦OŸ®mÛ¶iÆ <óЉ.X*¯¨(eô鯱ºê*§‹AEsäÈ7N#FŒPçÎ.* €Êiÿ~iófýÚúF¥¦Š+ (±qãÆÉåréÙgŸuº¨Pè‚ rZ²D ÐrW?U­*µoïtA¨H¶lÙ¢·ß~[S¦LQ:uœ.*®€d:}ú´ž~úiõë×OµjÕ’ŸŸŸæÌ™Sà²?þø£úõë§êÕ««víÚŠŒŒT|||˾óÎ;jÕª•BBBÔ¢E M›6­<@q-]*]}µVm©©+¯”ø8ÅdŒÑ< Ë/¿\÷ÝwŸÓå@…CÉtôèQM˜0A;vìP‡$I.—+ßrû÷ïWÏž=µk×.=ÿüózøá‡µtéR]ýõJKK˳ì›o¾©áÇëŠ+®Ð´iÓÔ­[73F“&MòÈ1(Djª´j•Lß~úö[º_¡dNœ8!cŒ^}õU:]T8|æ—),,L‡R½zõ´yóæBNœ8QIIIŠUãÆ%I]ºtÑõ×_¯Ù³gkøðá’¤¤¤$=ùä“8p æÏŸ/I:t¨Ün·&L˜ #F(44Ô3 ¯o¿•NŸÖ¾Ö}uô¨€Ž Õ×_]à‡T€sã H¦   ÕË|€1¦Ðå,X f‡IêÝ»·Z´h‘4$iÕªU:vì˜F•gýÑ£GëôéÓZºti€b[¾\ª__«~o'IêÚÕázPá>àü@JàÀ:zô¨:uê”o^çΛý}ÖÿÏ^6""B~~~Ú²eKù  pË—K×_¯µëýÔ¦T³¦ÓPy@J ..N’Ô°aÃ|ó6l¨cÇŽe‰‹‹“¿¿¾»£©víÚ:xð`ù ¿Ã‡¥-[¤¾}µv-ã?ð4H $%%I’‚ƒƒóÍ«R¥Jže’’’Tàv‚ƒƒ³—àa_|!I:qe}ÿ=ã?ð4H „„„H’RRRòÍKNNγLHHˆRSS ÜNrrrör}ûŠÔ±£ÄÍŒp.Æ SRR’V¯^ít)<¬ €cbbÔ±cG‡*ò tÁ*¡[n¹EK–,Ñþýû³§}ùå—úå—_4xðàìi×^{­jÕª¥éÓ§çYúôéªV­š ౚdZ¾\ªVMºê*mß.]q…ÓÁÛ}õÕWZ¶l™î¿ÿ~§KŸÁ\¦M›¦„„„ì;TEEEiïÞ½’¤1cƨFzâ‰'ôÉ'Ÿ¨W¯^zà”˜˜¨—^zIíÚµÓ=÷Ü“½­*Uªh„ =z´n½õVõéÓGß|ó>øàMœ8‘‡NX±BúÔ˜¤={¤¶m.ÞÌívëÑGU×®]5hÐ §ËŸAÉeòäÉúí·ß$Ù‡L-Z´H .”ËåRdd¤jÔ¨¡Æë믿ÖC=¤Ç{LÁÁÁ8p &Ožœ=þ#Ë}÷ݧÀÀ@Mžq¢~øÁN"€ (óçÏ×æÍ›õ¿ÿý@"€ä²{÷îb-׺uk-[¶¬XË6LÆ +MYÊÂúõRJŠtíµÚ¾ÙŽýhÕÊé¢à­RSSõä“Oê†nP=œ.| @å°j•T«–Ô®¾Ÿkï~ÅݰQ˜wß}W»wïVTT”Ó¥€Ïa:€ÊaÕ*éšk$??mß.µiãtAðV)))zî¹ç4dȵáeŽ+ |ß™3¶ ÖäÉ’¤íÛ¥¡C® ^Ëßß_Ï=÷œºvíêt)à“ |ßÚµRZšÔ«—~ÿ]Š‹c:  ÈÈH§ËŸE,¾oÕ*ûØó6môý÷vg@ø¾U«¤?üAr¹´}»(]v™ÓEP9@ø¶S§¤M›¤^½$Ùñ-[JAA×@%EàÛÖ¬‘ÒÓ³È÷ßÓý '@ø¶U«¤ ¤–-eŒ½BÀ9¾mõj{õÃåÒ¡CÒ±c<y>}ZŸ~ú©Œ1N—•€ï:}ZЉ‘zö”d¯~H\A^o¼ñ†¬}ûö9] T ¾kÃ;þ£GI6€„„H]äp]ð§NÒ¤I“tï½÷ªiÓ¦N—•€ïZ³FªYSjÕJ’ôÝwRëÖ’¿¿ÃuÁkLŸ>]'NœÐO<át)Pi@ø®o¾‘®ºJòóSjª´t©tõÕNo‘œœ¬W^yE‘‘‘jÖ¬™Óå@¥Aà›ÒÓ¥uë²»_-^,9" îp]ðsæÌÑáÇõè£:] T*¾iË;=ó’Ç›oÚ‹!Ü ’”žž®_|QþóŸÕ¢E §Ë€J%Àé \¬Y#K;ê×_¥/¿”æÎuº(x‹ùóçk÷îÝZ°`Ó¥@¥Ã¾é›o¤+¯”‚ƒõÖ[v,úŸÿìtQðýúõÓ{ï½§ððp§K€J‡À÷c¯€\}µRR¤Y³¤»î²·à$©V­Zúë_ÿêtP)@øž_~±#Î{ôТER|¼4b„ÓE‰1 |Ñš5’Ë%uë¦wÛae> 8Œ+ |Ïš5R»vJ«z¡Ö¬‘nºÉé‚@ß“9þcëV))IêÖÍé‚@ßrô¨rÕUZ·N ”""œ. d!€ð-ë×Û»vÕºu6|T©âlIpÞž={´e˧ˈÀ׬_/Õ¯/5o®uëè~ëÙgŸÕ€”––æt)Pé@ø–ÌÔqè°K{öHÝ»;]œvèÐ!½÷Þ{3fŒ.*=ß‘ž.mܘÝýJâ ¤7ÞxCÁÃ`À+@øŽï¿—NŸ–ºuÓºuRãÆö •×™3gôÆohèСªY³¦ÓåDàKÖ­“üý¥NÿIÒܹsuüøq;ÖéR™ |ǺuRûöJ ¨ªèhHeçv»õꫯjРAºè¢‹œ.)Àé Ì¬_/]½¶n•’“ •Ý’%KôóÏ?kΜ9N—È…+ |Ãï¿K?ÿœ=þ#(H wº(8©uëÖš8q¢ºvíêt)€\ |ÃY ìØQ v¶$8ëÒK/Õã?ît€³@ø†õ륺u¥‹/ÖÚµt¿À[@ø†ÌÛ^íùÍ¥½{¥ž=.„ âËÈÈ~áªU’ËEÀ[@T|?ý$%&J]»jõj©C‰gÎà *¾%—K&¢£V­’zõrº P€ŠoÓ&éò˵û÷Ú·OúÜ.NÈÈÈБ#Gœ.p߯R—.ZµJòó“zôpº 8!**JMš4ÑÞ½{.P€Š-9YÚºUêÒE«WÛ‡††:]œðÚk¯©sçÎjÚ´©Ó¥Š@P±mÙ"¥§Ët¶„îW•Ó¶mÛ´zõj3ÆéRç@P±mÜ(igµvÚ¿ŸRYM:U5ÒÍ7ßìt)€s €¨Ø6n”:tÐêµAŒÿ¨¤~ÿýw½ÿþûºï¾ûèt9€s €¨Ø6mÊ€!]x¡ÓÁÓfΜ)cŒFŒát)€b €¨¸Ž—~þ9{üÏÿ¨|ÒÓÓõúë¯kÈ!ª[·®Ó加⊎–$ýV¿‹düGe¯V­Zéþûïwº@18]œ·¥ /Ô»/“¿¿tõÕNOkР–/_ît€à €ŠkãF©sg­þŸŸ:v”jÔpº p.“1Ò† 2:kÕ*º_PQ@TLH‡ë`£Î:tˆèTSæô¯;Ëß_ºê*‡ëÅBP1EGKõëké–FêÔIª^Ýé‚@q@TL›7Ëtê¤Õ_»è~@B)¡èèhÝtÓM SµjÕÔªU+M˜0AIIIy–ûñÇÕ¯_?U¯^]µk×Vdd¤âããªð1ÆHÑÑŠoÚQ‡3½²‰ŒŒÔìÙ³.pžxH |÷Ýwºúꫦ±cǪV­ZZ»v­ž~úimÞ¼YŸ~ú©$iÿþýêÙ³§jÖ¬©çŸ^‰‰‰zùå—õÝwßiãÆ tøH€ nï^)>^›L'0þ£2Ù±c‡Þ{ï=õéÓÇéRç‰R}ô‘RSSµtéRµjÕJ’4lØ0¹ÝnÍ;W'NœÐ…^¨‰'*))I±±±jܸ±$©K—.ºþúë5{öl >ÜÉÃ*¾Í›%I‹÷wTçÎÒ8\|Xýû÷—$½ýöÛª]»¶–,Y¢çž{Nõë××èÑ£³ï†UP÷€*UªH’’’’ ÀùÚ³G:vLëR;©E ©fM§ ‚'¬_¿^[¶lÑóÏ?ït)€R"€”À„ tàÀýüóÏ “$ýéO’ÛíÖ?þñ 2${œHJJJ¾õ“““%åŒ%p2 GèÈÕJdþüùºøâ‹¹ûøH ¬Y³FáááÙá#Ë 7Ü Ù³gkË–-jÙ²¥¤œ®X¹ÅÅÅ©víÚç¼ú1vìX…††æ™6dÈ 2¤”Gø€èh™FõÕ÷õõò=NO™¸ âˆÕïMíC@€@ÅDP1#ÅÄè§Õ¨!µhátA(Oiiiúðóî ðÃÁƒÒÑ£Zs:\;K<·-^¼XwÜq‡vîÜét)€2ÆŸpCl¬$iáîpº_Uo½õ–ºwï®¶mÛ:]  Œ@T 11ʨY[ÑGš@|ÜÎ;µbÅ 1ÂéR倠bÈ€îR§NNƒò4sæL…††êÖ[ouº@9 €¨bb´£j„êÕ“5rº”—ÔÔT½ûóÎ;ât9€r@àý~ÿ]Ú»Wë’ÃÕ±£är9]ÊKTT”Ž9B÷+ðaÞ/súâ}Šˆp¸”+Ÿ€ïãIè¼_l¬ÜÕ.кøKõpG§‹Ay1ÆèOú“š5kæt)€rDàýbbt¼Y™ü¸âÃ\.—Fåt€rF,Þ/6V¿VWíÚRÓ¦NJƒÀ»:%ýü³Ö§Øñ @ b#€ðn[·JÆhéA{,P±@x·˜™  ­:Òšñøï«“Í®Pº¹€ €ðn11Úua„.¼Pºè"§‹AY3ÆÈãt"€ð^))Ò÷ßkSz8Ð}Ô‚ ¡ÄÄD§Kx€÷Ú¾]JO×燀î«Þ|óMU­ZUÕ«Wwº€‡@x¯ØX??-?ÔŽè>hçÎZ¹r¥FŒát)"€ð^11:Ýär%©*W@|ÐÛo¿­ÐÐPÝzë­N—ð ï«5"T»¶tÙeNƒ²”ššªY³féÎ;ïTHHˆÓå<ˆÀ;edH[·êÛ3áêуè¾fñâÅ:räݯ "€ðN;vHIIúto„zôpº”µ·ÞzKÝ»wWÛ¶m.àaÞ)6V’´1­ÄÇ$$$hóæÍ\ý€J*Àé @11:^ëb¥§„*<ÜébP–BCCuàÀùùñTFÞ)6V?…«{G)€ßT>‡çPyññïcŒLl¬¾<Îø| €÷Ù³G®„­K '€àc ¼OLŒ$黀]y¥Ãµ€2EÏjÞ'6VǪ4Rû IDATT³ˆúb¨¾…+ ¼Ž‰‰ÑfÃø|€×ɈŽÕú”põìét%(+ëÖ­ÓW_}åt/@,Þ%.NG)Vº¿»ÓÅ ¬<õÔS:s挮½öZ§K8ŒÀ»d>=¸k¸BC®ebçÎZ¹r¥æÌ™ãt)/@àUNý/F©ª©^w7sº”‘™3g*44Tƒvº€ €ð*G–ÇjÂ5è—Ó¥  ¤¦¦êÝwßUdd$O?Hb:/òcŒŽ7W:NW‚²¥#GŽhøðáN—ð^ãà÷ÇÕ0eêô‰pº”‘·ÞzKÝ»wWÛ¶m.à% ¼ÆÚ7ìôð{îeaçÎZ±b…FŽét)/Bà5.‰U²UÕèÔÂéRP.¸à7NþóŸ.àE„À+ìÙ#ÕÞ£ÄËÚ«Š¿¿Óå  Ô¯__ãÇwº €—á ¯°p¡áŠÕ…½ÿ€/#€ð 1ßœVK󓂺0þ_Fàάß&?)‚+ ø2ÇÅÇK Å(Ã?PjÓÆér@9"€pÜæÍR¸b•Ö²­ät9 @8.:Zêì£à+ÿQÑ¥§§;]ÀË@8në¦Tµ6ÛåêÈøŠnÀ€zì±Çœ.àÅ wrý 4iR8W@*²;wê‹/¾PëÖ­.àÅ uø°v8FÆå’Úµsº”ÂÛo¿­ÐÐP <ØéR^ŒÀQÙÐ/n)]pÓåà<¥¦¦jÖ¬YŠŒŒTHHˆÓåþ¿½;«ªÎÿ8þ¾( *ášæ^*î˜K‹NY–¨•cJ™fe“–šËϲQkÊ¥ÆeH›ÒlÑ­\+grLKÍ‘E±ÒÄ !÷åûûãJ Šrïay=û¾çœ{ßp χïV„Q€°UD„Ô®l”ÜÙ€°Xûꫯtøða=ýôÓvGq l‘¡æf‡l@X¬Í;W:uRSöq\È5ˆŠŠRÏž=åçç§ *(00P³gÏÎqή]»Ô­[7ùøøÈÏÏO ÐÑ£GmJ ]ÇÂbå•q– èÅØÞ½{µfÍz?W¥¬ÝЛիW«GjÓ¦&Nœ(oooíÝ»WÌ>'>>^wÜq‡|}}5uêT%%%iúôéÚ¹s§ÂÃÃåîînãw RÍ#ÑÖ ÅVXX˜ªU«ÆäsÀU¡)€Ó§OkÀ€êÑ£‡–,YrÙó¦L™¢äädEGG«V­Z’¤víÚ©k×®š?¾ìªÈ@‘)µV”ÒkÕQÙn°;®QÿþýÕ»wo&Ÿ® C° `áÂ…:|ø°&Ož,I:{ö¬233s·téRg’t×]w©Q£Fúâ‹/\–(ê""¤[Ý£U&ˆùÅÅàjQ€Àš5kT±bE8p@7–*Uª¤¡C‡*55U’tðàA9rDmÛ¶Íu}PP¢££](²vl7je¢ä`ø¥HÄÆÆ*==]<ð€î»ï>-[¶LO<ñ„æÌ™£AƒI’%Iþþþ¹®÷÷÷×ñãÇ•––æÒÜ@Qu,z¿|ÒOH¬€@©Á8sæŒÎ;§!C†(44T’ôÀèüùóš;w®^}õU%''K’<==s]_®\9IRrr2ÑQê=+U9e}A¥= 5Æ9$$$G{Ö×aaaÙçd ɺTJJJŽçJ³Ÿ~º°º_u)CP2ÑRúùçŸU½zõíÕªU“$8qB’.źTbb¢üüü®ØûñüóÏ«råÊ9ÚBBBr>@qöãREÊ­u+Éá°;¹,Z´H‹-ÊÑvòäI›Ò” жm[­Y³Fñññjذav{BB‚$©jÕª PÕªUµmÛ¶\ׇ‡‡«eË–W|ÐÐPµfLøà¥§§ëŽ;îкuë´dɽôÒKªQ£†$饗^ÒâŋեK1BIIIš6mšš7ož½ZPڹ>¡)væÎ«jÕª©W¯^vGC 4gÎÕ®][~ø¡–/_®›nºI¡¡¡>|xö9µjÕÒúõë5jÔ(½øâ‹òôôTpp°f̘ÁêW€¤#G¤ú'#•êã'Ïo´; àܹsúè£4dÈyxxØP Q€PÙ²e5qâDMœ81ßóš4i¢U«V¹(P¼dM@OkÞFžL@/V¾øâ :uJƒ¶;  ˜b—Û¹Sj­(•¿áWÅÍœ9stÏ=÷¨^½zvGSô€p¹ýᨦ¤ âdÇŽÚºu«–-[fw@1F—3L@/ŽæÎ+ÛPŒÑÀ¥Œ‘|T²—¯¼êÔ±; `РAêÚµ+‹i® —Ú·O <©³-ÛÈ‹ èÅJPP‚‚‚ìŽ(æ‚À¥~üÑš€îÑáW”F \ê×-‡u£âåÓ™€Òˆ€K%­³& ;Ú´¶9 °—Ù¹SJÝ©¯ÊûHP*Q€p c¤Ñ£¥;ÊGÊãÖÖÐ(•(@¸Ä7ßHß~+u*%76 ,Œ1:}ú´Ý1% §KK³z?zv<ªòGö³a1±aÃhÏž=vG”  œnÞ<é—_¤\ؽ5ЋƒÿûߪU«–6lhw@ BÀéÞ~[êÛWjp*RªXQª_ßîH¸‚„„-_¾\C‡•ƒù:€BDÀ©RS¥Ý»¥Î%EFZ½nüê)êÞ{ï=yxxhàÀvG”0Üpª]»¤Œ ©ysIQQÌÿ(ÒÒÒ4wî\õïß_•*U²; „¡àT11ÖÇfþǤ¸8æ_ýµ4tèP»£J N#Õ­+ùÄFY ô€yo¿ý¶:uê¤-ZØPQ€pª;¥À@Yó?||$VT*ÒRRR”’’BïÀiÊÚ@É#=õ”¬¤U+& qåÊ•ÓÆeŒ±;  „âN€Ó9"ýñÇ…& +,½ p N³s§õ±eÒo¿1P€pž;%OO©þ)&  §‰‰‘š6•Êl”*T5²;°§É±V«VR™2vG6£àÒ?^Ø=2’áW@'ùí7)9Yj]ç˜ôë¯RPÝ‘p³gÏÖ;ï¼cw @)AÀ)bb¬-Ò"¬OÚµ³/ .+%%E¯½öšvíÚew@)AÀ)vV•|cåʕ¥ 쎄<|þùç:r䈞{î9»£J NsaþǶmÖð+6¶+rŒ1zóÍ7Õ­[75b…2€‹P€(tÆHÑÑR`3#…‡3üªˆÚ¼y³¢££5|øp»£J …nÃ).Nê}k¼tèЋ¨Y³f©aƺ÷Þ{íŽ(E(@º·ß–7–:¹‡[ ô€9ñññZºt©† &77þ)¸ÿê(T‰‰Ò²eÒС’#b›T³¦äïow,üÉ‚ T¾|y 8Ðî(€R†@¡š7Oòðó?а±cÇjÆ ªX±¢ÝQ¥ €B“–&Í+õï/UòÉ”""˜ÿQD¹»»«eË–vÇ”B Í×_K Ò!’~ùEJJ¢ä@ Ð¼ý¶Ô±£Ô²¥¬áW’Ô¶­­™@ÑB Pœ:%­]+=ñÄ…†mÛ¬¥°*U²5(Z(@Š˜ëã­·^h`:È€B-yzZJI‘¶og:È…@¡Ø¾] ”ÜÝeU#iiR‡vÇÂ'NœÐ²eË”‘‘aw@)G PDG_˜|.IaaR¹rR‹¶fÂEsçÎÕ#<¢£GÚPÊQ€¸nçÏK?ýtI²e‹µú•»»­¹`9þ¼fÏž­þýû«zõêvÇ”r ®Û®]Öˆ«V­.4„…IíÛÛš }öÙgJHHШQ£ìŽ€ë-9Ö<(8Àü"£3fè¾ûîS“&M쎀ë·}»Ô äã#«÷C¢¤ˆX»v­bbb4zôh»£ ‰@!ؾýOïn¼Q °5,3fÌP‹-ô—¿üÅî(H¢pŒ± +`1üªHøé§Ÿ´jÕ*5J‡Ãî8H¢pââ¤S§. çÏK ¿*"jÖ¬©™3gª_¿~vG [Y»(Þ¶o·>¶l))&ÆÚ¤H¨\¹²FŽiw r Àu‰Ž–ªW—üýe ¿òðZ·¶;(¢(@\—ó?¶l±f£{zÚš ] ®K® è ¿ù pÍŽ³ölÙRÒH¿ýÆ X _ ×iòäÉrssS```®c»víR·nÝäãã#??? 0@Gµ!%à‘‘ÖÇ6m$mÚd}Ñ©“my@ÑGrâãã5eÊU¨P!×ûñññºãŽ;ôÛo¿iêÔ©3fŒþóŸÿ¨k×®JKK³)1P¸""¤Š¥úõ%mÜ(Ýt“T«–ݱJ­ŒŒ EGGÛ€|± ïu3fŒ:vì¨ôôô\=S¦LQrr²¢££Uë Y»víÔµkWÍŸ?_ƒ¶#2P¨"#­Þ77YÈm·Ù©T[ºt©úöí«Ý»w«qãÆvÇ Oô€\£ 6héÒ¥ •1&WÈÒ¥Kœ]|HÒ]wÝ¥Fé‹/¾pu\À)² =k­ÇKbcŒ¦L™¢®]»R|Š4z@®AFF†† ¦Áƒ«iÓ¦¹Ž11Q’äïïŸë˜¿¿¿Ž?®´´4¹»»;5'àL9& /Ü(ùúJ·Übk¦ÒlêÔ©ºõÖ[Õ¹sg»£/ :vì˜&Nœ¨‰'ÊÏÏ/Ïs’““%IžylÆV®\¹ìs(@PœEDH•*]2½S§ “Aàj›6mÒ?ü +Vä @QÃÝB?^UªTѰaÃ.{Ž———$)555×±”””çÅUÖüGFºµ:ïl3uêT5mÚT=zô°; WDHÄÆÆjÞ¼y U|||v{JJŠÎŸ?¯}ûö©bÅŠÙC¯²†b]*11Q~~~ùö~<ÿüóª\¹r޶…„„Òw\¿ˆ©_?I11Ò™3 6Ù±c‡þóŸÿèã?–=PP¨-Z¤E‹åh;yò¤MiJ 8xð 2335|øp ><×ñºuëêùçŸ×Ì™3UµjUmÛ¶-×9ááájÙ²e¾¯ªÖ­[Zn °9bí€Þ¶­¬áWžž¾€«ùúújìØ±êׯŸÝQ ÄÉëÀQQQjÓ¦M‰J  ÔòåËsŒ±6Æhüøñ:sæŒÞ|óMÕ¯__’Ô»wo-X°@ñññÙKñ®]»V±±±=z´-ùÂ’cú¸RPU„Àåj×®­7ÞxÃî\5 ðóóS¯^½rµÿë_ÿ’$õìÙ3»í¥—^ÒâŋեK1BIIIš6mšš7o®Aƒ¹,3à RåÊR½ºÆê8ÐîH ˜`Àp!p8¹Vž©U«–Ö¯_¯úõëëÅ_ÔôéÓ¬o¿ý–Õ¯PìeO@ÿý7)1‘ùàªÑR¾ÿþû<Û›4i¢U«V¹8 à|Ò#HZ·ÎZz—\%z@ÈáÃR|ü…9çß/µnmmp(@Èÿk}ìØÁX= ]ºØš/ äÓO¥;ï”j&ï•”:w¶;R©—c"Š W-1Qúî;éÑGeõ~”)Ãü=z´î¹çcìŽÀ5a:€«öÙgRÙ²Ò_ÿ*éÙï­¥°*V´;V©±}ûv-[¶Lï¿ÿ~®•÷(.èpÕ>ýTºÿ~É·ò…ù ¿r©üãª_¿¾{ì1»£pÍèpU~ùÅÚÿãÅ%íÙcÇbºËDGGkÅŠš?>{ Š5z@\•… ­ÑVÁÁº8ÿ£S'»c•¯¼òŠ6l¨G}Ôî(\z@\‘1Öð«Þ½¥rådíÿ$ùøØ­Tضm›¾úê+}üñÇ*[–_Û€âW)ýúë…Õ¯ ó?\mìØ±jÖ¬™BBBìŽÀuãOi®(*Êquûí’vï–¢q¡W_}U‡CeÊ”±; ×ÀíÙ#Õ­+yxHúö[ëöÿp™Ûo¿Ýî†`¸¢={¤† /|±zµU|T¨`k&P]ééévGÀ)Ø@¾²WÀZ½Z ”üýíŽTbmß¾]Ÿ~ú©Þ~ûmy{{Û§ @¾öì‘60VÂò»NcŒÑÈ‘#Õ¸qc=ùä“vÇÀièpYÉÉÒþýR;„æ8ѲeË´nÝ:}óÍ7rww·;NC€ËÚ»×úØ*á?’——µ: ]rr²ÆŒ£îÝ»«[·nvÇÀ©èpYYKðÖŒúÚêýðò²7P 5sæLÅÇÇëÿûŸÝQp:z@\Öž=R½ŠGUvÛf©G»ã”H™™™Z±b…FŒ¡FÙ§£ÀeíÙ#=Vå¿rœÎ”ºw·;N‰äææ¦Í›7+--Íî(¸= .kÏéþô¯¥ví¤5ìŽSb¹»»«|ùòvÇÀ%(@\ÖᅵW‹Cÿcø(4 Á§ãÇ¥¦ÇÖËSI  ÐÐ O±±RO}¥Ôµ¥æÍíŽJ yÚøƒQ}-G’ÃawPBP€ÈeÃéÓq?ê&í“Go†_¦ØØX¥§§ÛÛP€È!6VzðAiX­å2ÞÞRçÎvG*1NŸ>­.]ºh̘1vGÀ6LBíøqk»ªU¥n‹åèÕKòô´;V‰1~üx8qB#GŽ´; ¶¡@¶éӥÇ¥Õ¡?«Ì®¥‡¶;R‰±uëV½õÖ[š4i’êÔ©cwlC ÛwßI÷Ý'ÕÞºXªXQºç»#•©©©zê©§Ôºuk 6Ìî8ØŠ!X$IgÎHÒ A’f}!õì)•+gw¬aÒ¤IÚ½{·"##U¶,¿v¥= $I›6IR×€Ÿ¤ŸføU!‰ŠŠÒÔ©S5aÂ5g?(@XÖ¯—ªW—êF0üª0M:U7nœÝQ( @’´ntçFŽÅ_H<ÀêW…ä£>ÒáÇåîînwŠz@èìYiÛ6éÁF?I»v1üªyyy±ê—  -[¤ôté®Ã‹¤J•¤®]íŽJ( Z·Nªæ—¡*ß|$õë'yxØ ”P ´~½ôì-ßÉ/=þ¸Ýq@ F”rçÎIááR¿ä¥›o–n½ÕîH £J¹°0ÉëüI5øq¹µ ¡Ãaw¤b)##Cü±222ìŽ@‘F”rë×KO”ÿ\Žô4é±ÇìŽSlM:UTtt´ÝQ(Ò(@€RnëVéiåèÖMò÷·;N±ôÃ?èå—_ÖøñãÕ¶m[»ãP¤±!PŠ#ÞºK7ŸÜ*=¾Øî8ÅÒ‘#GôÈ#¨S§Nš8q¢Ýq(òèJ±ýû¥O~ ó>7H=zاØÉÈÈPHHˆÎŸ?¯… ªlYþ¦À•ð¯%PŠmß|NOê}$OO»ã;&LÐ÷߯5kÖ¨V­ZvÇ X J±Ì?U%R™Ÿ³;J±³bÅ M:Uÿüç?Õ¥K»ãPl0 (­ŒQËf)¼zO©n]»Ó;µjÕÒ°aÃ4fÌ»£P¬Ð”Ræûuª{æG­h–:ئjÛ¶-+^p è) mÛ¶é¹çžSÓ¦Måíí­:uê¨oß¾ŠÍuî®]»Ô­[7ùøøÈÏÏO ÐÑ£GmH ä–üÆ,íT3ùõîlwPŠÐR@o¼ñ†¶lÙ¢>}ú¨yóæJLLÔ[o½¥Ö­[+,,LM›6•$ÅÇÇëŽ;¯¦Nª¤¤$MŸ>];wîTxx¸ÜÝÝmþNPªýþ»¼Ö|¥Yš£´eçsà: 4zôhåXn³oß¾ Ô믿®?þX’4eÊ%''+:::{uœvíÚ©k×®š?¾lK~@’ôï+Ù£’¾«ü¨æØ”& Á* :äZë¿AƒjÒ¤‰vïÞݶtéRçXšó®»îR£FôÅ_¸,/ËÑ£Òœ9ú2`ˆš´-owPÊP€cŒ:¤*UªH’<¨#GŽä9A5((HÑÑÑ®Ž\4s¦Œ¤WNŽT›6v‡)ú6oÞ¬ððp»cPbP€‚O?ýT êÛ·¯$)11Q’äïïŸë\?~\iii.ÍH’Ž“fÏÖéÇžÓžãU(@®`÷îÝêÑ£‡^y廣PbP€\§Ý»wëÙgŸUÇŽ5pà@IRrr²$É3¥Ë•+—ãÀ¥BC¥ÌLýÐn´$Q€ä#..Nwß}·ôé§ŸÚ€ƒä:üñÇêÞ½»|}}µdÉ9ÖjB^^^’¤ÔÔÔ\פ¤¤ä8p™'¤Y³¤¡CµeoUùûKL@ÏSbb¢î¾ûn•+WN«W¯–¯¯¯Ý‘(1Xë:uJ÷ÝwŸNŸ>­~øA5jÔÈ>–5ô*k(Ö¥åçç—ï2¼Ï?ÿ¼*W®œ£-$$D!!!…”¥Rh¨”–&£ˆô~\ÎñãÇuï½÷*%%E7nÌs(% tX´h‘-Z”£íäÉ“6¥)9(@®AJJŠzô衽{÷jÍš5ºùæ›s¯Y³¦ªV­ªmÛ¶åº6<<\-[¶Ì÷ùCCCÕºuëBÍŒR.1Qš9S:T™U«këVéÿþÏîPEÏñãÇÕµkW%&&jÆ ºé¦›ìްQ^ŽŠŠRþŠw]‚U@êÛ·¯¶nݪŋëÖ[oÍó¼Þ½{kåÊ•ŠÏn[»v­bccÕ§OWÅ,/½$•+'ýýïúåéÔ)©}{»C=ï¼óŽöíÛ§µk×ê–[n±;%= 4zôh}ýõ×êÑ£‡Ž=ªO>ù$ÇñþýûK’^zé%-^¼X]ºtш#”””¤iÓ¦©yóæ4hÑQZmÛ&ÍŸ/½óŽäë«°’Ã!Ù¬è7nœ}ôQz>p" Ú±c‡‡¾þúk}ýõ×9Ž9Žì¤V­ZZ¿~½F¥_|Qžžž ÖŒ3òÿ*c¤áÃ¥æÍ¥Áƒ%IaaRÓ¦RÅŠ6g+‚ÜÜÜ(>p2 úþûï¯úÜ&MšhÕªUNL\ÁÂ…VÅñÝwR™2’¬/~ì ¤:qB;VzðA©KIRR’ôã À> @I5|¸tö¬ôæ›ÙMRf&°P-[&}ò‰µñà7f7‡…Ys?JóO ,Ð3Ï<#cŒÝQ(•(@€’æðaé™g¤^½¤ÇËq(,Lj×Nr+…ÿçgffjâĉzüñÇ•‘‘¡ÌÌL»#P*•ÂÛ 3Æ*>Œ‘æÎµÖÛ½äPi€~úôi=øàƒš4i’^ýu½ûî»*saR>p-VÁJ’™3¥åË¥¥K¥êÕsŠ‹³:GJ[²gÏõêÕK‰‰‰Z¹r¥î¿ÿ~»#PªÑ”«W[«^½ð‚ôÐC¹‡…Yo½ÕŹlôù矫mÛ¶’¤ððpŠŠ  $øõóÓº\IDATW©_?éÞ{¥É“ó<%,LjÐ@ªRÅÅÙlròäI :TÝ»w×Ö­[Õ¨Q#»#1 (þNœ°&œW©bm(b芫¤$éþû¥ØXé»ïòÝÜ#<\JO—n»Í…ùò@P>-K?þhM>oÕ*ßÓ7m’*U’š6uQ>IOO·;(  ¸‰‹³ÆRmß.­Z%]ñ’­KJÒ„ëׯW«V­ôå—_Ú@ ºJ¬™äçÎYŸwèpÅK22¤Í›KÎð«¨_¿~êܹ³¼½½uÓM7Ù Pó§†ÌLiöl©K©Q#iëV©I“«z®;­é"Ž9uê”Æ¯ÆkýúõZ°`6mÚ¤-ZØ  ÕÑ£Òë¯KÇŽåÞÉ“Rr²k27³fI7ß,?¡aÿ~©kWiøpið`iÍšmæ±q£äî.]دØIIIQhh¨êׯ¯™3gjĈúå—_4`À¹•¤1e”üë] lÜ(½öZÞÇRS ÿõÖ­“>ù¤`×#}ö™µÓ¸qÒ+¯äîm·Iÿ÷ד²äZ²DÚ³GZ4?UzóM)0ÐZéêÛo­^OO>,ýõ¯Ò¡CW~¾­âÃËËùÙ!%%E“&MÒC=¤ØØXM:U+V´;¸F,Ã[ÄefJC†X‹=ôPÎUŒþû_©{w©zuk4N` bM¸Ö­Œ‘ž{ÎÚVâ‘G®nÒòáÃÖæ¿úJêÓGºñFé­·¬£víÜçoÜ(ýôSÉš}-^~Y*[Vš0áb[R’¶9S<ë/Ï“ÉØ'ÇàÁÒoXËX]0w®´t©õ³þ׿.ÿÆX?ïGqâ7âd•+WÖo¿ýFÑ@ QÊo‹¾åË­âÃÛ[zûíœÇ&O¶V_ýÛß$??ëܬ¶wߵЗ‚Ú¼Ù*Ž—bb®|þºuRË–RX˜´l™ôÅÒ?þ!U¬(Mš”÷5ï½g}üé'éÌ™‚g, þøÃª6cÆ%½XgÏê÷æh{F3-Hí§è´fúvÆNiΜÅGF†4ožÕ4gŽõ\—³¿tð`ñŸÿAñ@ÉAR„efJ¯¾*Ýu—4j”´`µñµdíë°y³u³ÿH‹[«³~ótÓMVQ²xqÁ_sΩn]©\9ko»ü²Mšde»ùfkEØ´Žy{K/¾(}ðôë¯9¯;yÒÊb=GTTÁ3–YÅäéS™Šxs“4l˜T«–šÍyVûËß"mܨ7ÿò•Æ}Ü$ׄôo¾‘°~ŽÒôé—­;:çû¸^iiiZ¶l™¢££íŽ\„¤ûòK«âå—­‚"5Uúè#ëØ´iÖ|‹îÝ/žïæ&uë&­X!5onm‘Ÿôôœ½$ÇŽY7µC†X{FäW€Ì˜!Mœh úö[Éß?çñ!C¤jÕ¬êR‹Y“«ÿùO©|yk‡îËÙ¾Ý*d¾ùF:{6÷ñ3g¬¹1·Übdy1ƺ>8Øzík‘‘aÍɸôg•–f=ßÀÒ‘#{¾ä?Né÷Ð/µºñ0,[G^¸Íê>ùĘfͬëkÔ0ÆÓÓ˜¨¨ü3çeêTë9ªV5æ‘GŒ7ÎúÙJƸ»óÔSù\œ”dLd¤1ï½gÌ3ÏÓ¦ÉpXßÔùZuMxÐPsד|6ÃÄÅYϹl™uif¦1AAÆtêtñ}ˆ‹3Æá0fÞ<ëëcǬ÷iìØ¼_¾Ic.ø÷ì »wï6&L0õë×7’L@@€=z´Ù¾}»ÝѸjY÷k‘‘‘vG)¶(@Ьÿ ¥HÓ¼¹u3º~ýÅãë×[mÖ pJÊåŸkõjëÜ;s¶¿òŠU<”/oÌ AÆxy],B76¦_?ë¼-[¬ë·lÉy}F†1wÞiL½zÆœ9“ÿ÷“’bQ^^Öýwd¤õœ_m=Ú˜:uò¾öØ1ëæþÍ7Ù½Û˜Y³¬¬Y3«Ýá0fà@ë†üÄ ëgrãÆ8`LLŒuÓ.sÿýÖÏ-9Ù˜6mŒ©[טãÇóÏ}©ädcªU3æÁ­Â£m[c|¼3Í3'›Ÿ¾?d>ž¸ÇÜ¡õæ×)ŸYUј1Æ<ú¨1;S³¦B²*©fÍLæÀf¢ÿ»æé»5Ƴk—uxùr«¨ps³¾Ÿ,«WS¶¬U|GLŒ5lð`£ åsËÌ´†q•ó¼øZgÎH‹¿°~FçÎI•+uî,ÕªuñºÓ§­Iò5jÝ×M:zL:”hä盡šUÎ[Oú§GâþóÚ¿÷¼ZÞœ"Ï”ÓÖ2U§O[c°þÄ”//G@€’|üµñ·íͬ¯ƒÞu䆯ònßLwõ¬ ôt©wokòþwZ×µha­n–ž.ÅÇ[s{.µi“ôðÃÖP°Œ ëóÿûâñ£G­y?#FX dyê)køÖo¿IeÊäŠëR¿þú«¢££¬råÊÙ€ëu¿©Ö­[Û§X¢)B²ÿƒöõUkww«ñÒõtK¶î«V•ÜÜrËÁáБ£Ö§U«ZÇNž’Ξ‘ük:”}©Ã¡”éðë&5 ¦CY‡þ8ì1’ ë¼ô )þ€TÁûâs^îµÿüùé$éð!É÷‡üü¬Ciéýú›T«¦5qýÒëâö9äp“êÔ¾ºç—¤”Tiÿ‡*UÊãçsáÜÓIÖ ¹äPÖø*£Ú =U­¦‡5«ûÂ#ÓÝC_þ×C>U>ÖÇK[÷ÕP×ÇôöG>*SÖ¡'ž° ŠîÝ­ZåÄ k.FÖ„üÖ­¥ˆˆ‹Ñ'O–¦Nµ^vøð¼÷P9tÈš¸¿n57¦yóœÇ_xÁš 'Ýpƒ5Ù? @úûß­‡3c´oß>mܸQÕªUÓ=÷Ü㜠¡)¶ö¿ ‡«íÒËȸºç›>Ýn•œl ‡ªRŘ‘#ó>7&Æš[r©3¬ëSR¬GûöÖ¨¢K‡Ĺs9³gfZó*&LÈy^Ö\ˆ>º¶×¹’… ™6͛͘­LO=e éš;7çyK—Z9Âïüœ}úXà$cú÷¿8¯æR{öXób¢£s·gÔÚ´éò¯‘–fLllÞDz†Õeý,gͲ†n%&^9ûÕ:|ø°Y½zµùç?ÿiúöíkjÕªuaÈ Ì!C ï…(‚uý؈°ºÚ üî¹G3Æúëû‘#ÖP§ŸÎûÜÀÀÜmù‹”’"mÙbíŒ-ýðƒT¹òµåþóN܇Ԯ]î•°.´Î}àk{+ ÉùõܹÖëýíoVÂßþfm øÆRçÎRPЕŸsÚ4«gâ™g¤‘#óÞ²aCë‘W{«VVI»v—²e¥ ò>V­šµòØ›oZ¯ÿÎ;Ö²È5j\9ûÕ5j”þuaÇà *¨E‹ Ñm·Ý¦Ž;ªJQZf i %X³fÖ èêÕÖMþwZ{v\­æÍ­á<ÆY›!~øáÕÝŒD»vRh¨õ÷‡Ãúøé§R¯^Öh'Wps³nÜ}}­å§NµæeìØaí65êÔ±–ê½V“&IûöYEƵ3ÆšÒ¯Ÿ´k—µ}^222” ýû÷g?üqU¯^ý²ÏݧOµoß^-[¶Tƒ äVÚ·±׌¤s8¬^?¶vË.è>nnR—.ÒÒ¥Vòøã…Ÿ±];kŽÄ¯¿Z݉±vHýõ­ü8Ö†ŽcÆH_}%}þ¹UTtëæš×¿ÿþëŽ5¬˜ÐP©Q#뽓¤S§NéÉ'ŸÔü¡øøxÅÇÇ+###ûºÊ•+«S§Nù :tP‡¬Õ ®H wÏ=Öæ…Uª\Ü©¼ †·†÷̘QøÙ¤‹=*[·Z»{ÿýï’ŸŸtï½Îy½+ññ‘}Ôz6cŒÒÒÒ”šššý8þ¼êÖ­›ïuŸ}ö™vìØ¡³gÏêÌ™3:qâDŽGpp°Þ¾°µúرҼyÒsÏ]æå奤¤$Õ«WO·ß~»êÔ©£Úµkg?*V¬Xøß,ÀeP€Aï¼óŽj\2xß\²PY¿~ýÔ¬Y³Ë^£Eº:Œ1Ù;ˆ×«g4q¢õùo¼‘ïëôÑGЉ‰ÉþÚËËèÅ/oÑ¢… ïsŒ1"Ç׿O‹­ 4H­Zµ’ŸŸÕóñ·¿Y»ZóMbb"õþûï_özÉú9ågîÜ¹ŠŒŒÌqý¥ÏÓ¶m[=óÌ3—½>33S={öTFFÆeS¦LÑ]wÝuÙçX¶l™üñìbãχ222äÈkÒÈk×®ÕÚµkåíí­ *È××W5kÖT`` |}}Õ¶mÛìsýý/®„•ÅÃÃCÿûßÿ.ûü®DR­\¹RÙ__zsÚ¡C‡| øøx-^¼8G[@€CGJË–Y__©‰ŒŒÌqÚõúY333¯X€¬]»6×u—~œÝ6hµ×ÅóÏKwßmýåþÛo+,,,Çsæw“ž—¸¸8íØ±ã²ÏQ­Zµ|¯w8*S¦Œ<<>>Ùí[·n•$µlÙ2×5þþþŠˆˆÈ.RPôøûûS€\‡1ÆØ¢$ Wûöí5mÚ4=Z’µ3z³fÍTµjUmÞ¼Ùæ„€ëÑâ$íÚµSŸ>}4nÜ8>|Xõë×ׂ ´ÿ~}øá‡vÇlAˆ¥¦¦j„ úä“OtâÄ µhÑB¯½öšºvíjw4À \†}@¸ Hššª^xA*_¾¼Ú·o¯5kÖØ N°mÛ6=÷ÜsjÚ´©¼½½U§NõíÛW±±±vGƒ‹LžjÞ¼¹õÖ[oéÌ™3 SÓ¦MíŽ'ŠWãÆåææ¦ºuë*&&ÆîH(d«W¯V=Ô¦MõíÛWÞÞÞÚ»w¯Œ1zýõ×펇B´sçN) @Ï<óŒn¸ámÞ¼YóçÏWÏž=µbÅ »#âÅÅÅ©^½zªS§ŽêÖ­«uëÖiþüù0`@ŽóâããÕªU+ùúújøðáJJJÒôéÓU»vm…‡‡ËÝÝݦï 0°ÕÖ­[Ãá03fÌÈnKII1 40;v´1œaóæÍ&---G[ll¬)W®œéß¿¿M©à*}ûö5wß}·éܹ³iÖ¬™ÝqPÈN:eªW¯nz÷îmw¸ÀK/½d‡ùùçŸs´8Ð8sòäI›’áz¥¦¦šC‡cŒ‰ˆˆ0‡Ã,X° ×yC† 1*T0Èn[³fq8æÝwßuYÞâˆ!X6[²d‰Ê–-«§Ÿ~:»ÍÓÓSO>ù¤¶lÙ¢ƒÚ˜…­C‡*[6çê× 4P“&M´{÷n›RÁ6lØ ¥K—*44TÆ9»#¡-\¸P‡ÖäÉ“%YÃ8233mNgñòò’$U«V-G{5T¦LyxxØ …ÀÃÃ#û}5ù Zºt©‚ƒƒU«V­ì¶»îºK5Ò_|áôœÅˆÍ¢££Õ¨Q#y{{çh ’$m߾ݎXp!cŒ:¤*UªØN’‘‘¡aÆiðàÁ ³+ÁÖ¬Y£Š+êÀjܸ±|||T©R% :T©©©vÇC!{â‰'T½zu=ùä“Ú±c‡8 Ï?ÿ\sæÌÑðáó ”LÔ‘#GÔ¶mÛ\Ç‚‚‚mCªâƒm–˜˜(ÿ\íYm ®ŽûôÓO• I“&ÙN2gÎíß¿_ß}÷ÝQàD±±±JOO×< §žzJo¼ñ†¾ÿþ{Íž=['OžÔÂ… 펈B M›6éþûïW«V­²ÛǯW_}ÕÆdp…ÄÄDIºì=ÜñãÇ•––Æ<Ë ±Yrr²<==sµ—+W.û8J®Ý»wëÙgŸUÇŽ5pà@»ãÀ Ž;¦‰'jâĉòóó³;œèÌ™3:w ¢ÐÐPIÒ< óçÏkîܹzõÕWÕ A›S¢°:tH÷ÝwŸ$iÞ¼yòóóÓÊ•+5yòdU¯^]Ï>û¬Í áLY÷gWº‡£ÉˆÍ¼¼¼òìšOIIÉ>Ž’é?þP÷îÝåëë«%K–0' „?~¼ªT©¢aÆÙN–õû:$$$G{HHˆæÎ«°°0 äµ×^ÓÁƒµgÏH² ÎÌÌL½ðÂ Ñ 7Ü`sJ8KÖÿïÜÃ]æ€ØÌßß?ÏaVY]{Y¿ÔP²œ:uJ÷ÝwŸNŸ>­U«V©FvG‚ÄÆÆjÞ¼y6l˜âã㧸¸8¥¤¤èüùóÚ·oŸNœ8awL’¬ß×Õ«WÏÑž5™•÷ºdÙ¸q£Zµj•ëßé=zèܹsÌá,ᲆ^eݯ]*11Q~~~ô~äƒÄf­ZµÒž={””””£}ëÖ­’¤–-[Ú N”’’¢=zhïÞ½Z¹r¥n¾ùf»#ÁI<¨ÌÌL >\õêÕË~„‡‡kÏž=ª[·®^{í5»c¢dMFÏÑžõG¦ªU«º<œ'--My¶KRzzº«#Á…jÖ¬©ªU«jÛ¶m¹Ž…‡‡sÿv 6ûë_ÿªŒŒ ½ûî»Ùm©©©úðÃÕ¾}{Õ¬YÓÆt(lêÛ·¯¶nݪŋëÖ[oµ;œ(00PË—/׊+²Ë—/WÓ¦MU§N­X±BO>ù¤Ý1QH~øaIÒû￟£ý½÷Þ“»»»:wîlC*8KëÖ­¥ØØØí‹-R™2eÔ¼ys›’ÁUz÷î­•+Wæø£ÃÚµk«>}úؘ¬èc'ô" oß¾Z¾|¹FŽ©úõëkÁ‚ŠˆˆÐÚµkuÛm·Ù…èùçŸ×¬Y³Ô£G<9õïß߆TpµÎ;ëØ±cÚ¹s§ÝQPÈžzê)}ðÁzøá‡uÇwhݺuZ²d‰^zé%Vº+abbbÔ¾}{U¬XQÏ=÷œn¸á­\¹R«V­ÒàÁƒ5wî\»#â:¼õÖ[:yò¤4gÎ=ôÐCÙ½ÇWÅŠ³wB¯\¹²FŒ¡¤¤$M›6Mµk×Ö¶mÛ‚• " 55U&LÐ'Ÿ|¢'N¨E‹zíµ×ÔµkW»£¡uéÒE6lÈsc#‡Ã‘gw>Jž.]ºèرcЉ‰±; Yzzº¦L™¢?üP ºé¦›ôì³ÏjøðávGƒ„‡‡ëå—_ÖæÍ›•’’¢zõêiàÀ;v¬ÜÜdRœÕ­[Wûö퓤ìEb²6‘ýý÷ßU»vmIÒÏ?ÿ¬Q£FiãÆòôôT÷îÝ5cÆ †\^—¡<à2 \†€ËP€p .CÀe(@¸ —¡à2 \†€ËP€p .CÀe(@¸ —¡à2 \†€ËP€p .CÀe(@¸ —¡à2 \†€ËP€p .CÀe(@¸ —¡à2 \†€ËP€p .CÀe(@¸Ìÿ‹ C=©GIEND®B`‚lmfit-0.9.2/doc/_images/models_doc2.png0000644000032700003100000010053012603520205021160 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝyXÔõÂþñ{wM±Ô6ã Zæb™Iâ†[‰ •¹u²§ÅÔ';Z§ô)¬YËÇŽd©¨)殘ŠK‹‰KRi¦a®¡ÌïAKÅù~fy¿®««ø~ç¶¹.†{>›Ín·Ûð1€÷ €° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( N´bÅ ùøø”øOFF†éx€åüLðÏ>û¬Z¶lyÖµÀÀ@Cis( hÓ¦|ðAÓ1㘂e»Ý®£Gª  ÀtÀ( ˆ  ªU«ª|ùò צM›LGŒ` –•+WNQQQêÒ¥‹jÖ¬©­[·ê7ÞP›6m´víZ5mÚÔtDÀR6»Ýn7›deeéŽ;îн÷Þ« ˜ŽXŠbÀC=¤Y³f)//O6›í¬{û÷ï×þýû %À¥Ô®][µk×6Ãm1Ë€o¼Qùùù:~ü¸*UªtæúþýûÕ¢E íÛ·Ï`:\L:u´qãFJÈU¢€ðÃ?¨|ùòg•ÉQ@öíÛ§O>ùD52”V:t¨LÇ€Ex½½ ¯·wáõöÛ¶mÓ#<¢ýû÷S@®ĉrrrpÖµo¾ùFsçÎUddäרQ#5kÖÌÙñàªU«ÆkíEx½½ ¯·wáõ.ĉbbbT¡B………©V­ZÊÌÌÔ¤I“T©R%½öÚk¦ã–£€8Ñ< ¤¤$½õÖ[:räˆjÕª¥¨¨(3F·Ýv›éx€å( NôÌ3Ïè™gž1pœ„k:,Äëí]x½½ ¯7pù( €A¼ay^oïÂëí]x½ËG` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€° €e( ,C` ËP@X†À2–¡€¼Ò®]»ôî»ïª[·nš9s¦é8à5( ¯2uêTÕ¯__ûÛß4|øp?~\þþþ}ÌôéÓµzõj‹€g£€¼Baa¡žþyõë×OÍš5Óœ9s”››«åË—+22ò¢]±b…ÂÃÕ˜˜hMXð`~¦àlGUll¬,X „„ 2D6›í²Ÿ ‚‚ 0@[·nÕk¯½&___'&ÏEx¼2eʨ  @_|ñ…:uêtÅ/[¶¬>øà5nÜXÆ ÓöíÛ•””¤*Uª8!-x6 ÀãùûûkÁ‚W4êq.›Í¦!C†¨AƒЉ‰QëÖ­5wî\ÝvÛm¥˜<k@^áZÊÇ_uêÔIëÖ­Ó‰'¢mÛ¶•ÊŸ Þ‚®P£F´~ýzÍž=[ 64Ü # ;v¬|||Ô¤IÓQרFzì±ÇäãÃ[)\ ~jZdïÞ½7nœ*V¬XjÓwC±ÈóÏ?¯Ö­[«E‹²Ûí¦ã€GJLLÔèÑ£ù9 .Œb•+WjæÌ™JHHÝngœ`Û¶mzê©§ôË/¿ðs\ÄÉ õÌ3Ïèïÿ»‚ƒƒMÇ”——§èèhÝrË-š0a‚é8€‹`,'{ÿý÷µgÏ-_¾ÜtðXÆ Ó®]»´aÃU¬XÑh–?þøC7nÔ½÷Þk4¸*F@œ(77W£GÖèÑ£U£F ÓqÀ#MŸ>]|ðÞ~ûm5nÜØtÅÇÇ«S§Núî»ïLG—Dq¢_|Q5kÖÔ3Ïë9»Ý®_|QÇŽÓÛo¿­ÀÀ@ƒ Àý5oÞ\Í›77£D¯¿þº7n¬‰'jèС¦ã€Ë €8I5Ô£Gó®¿õÖ[’ŸŒø@ùùùúÇ?þa: àQ@.íäÉ“zçwô裪V­Z¦ã\³yóæiÈ!¦c€1€Kûì³ÏtàÀ >Üt”Rqøða½óÎ;úî»ïLG#( —e·Ûõæ›o*22R·ß~»é8¥"::ZuëÖÕ[o½e: A¸¬/¿üR[¶lñ˜ÑI*S¦Œ† ¢O>ùD0,G¸¬6mÚhÑ¢Ej×®é(¥êñÇW™2eôÞ{–£€\–¯¯¯:tè ›Íf:J©ªV­š ¤‰'ê?þ0,EÀ€gŸ}V¿ÿþ»¦Nj: XŠ€·Ýv›xà ¯ãg:Þj„ ªV­šé`) †Ô©SÇt°S°X†pEEEš5k–N:e: ÀI( —±páBõêÕK7n4à$€Ë˜ú¨ •””d: 8 `\XX˜F%ï~[ºþúëÕ­[7Mž}ºbccåãÃ[ÐåðóóS^^€Çà§?À2‹-Rnn.Ó¯®ÐÃ?¬åË—kß¾}¦£À5£€8ÑÖ­[Õ»woªbÅŠªQ£†Z·n­¤¤$ÓÑÀˆéÓ§«qãÆºãŽ;LGq+½zõR™2eôÙgŸ™Ž×ÌÏtO¶gÏ;vLýû÷W:uôÇ(%%E}ûöÕO?ý¤Q£F™Ž–š8q¢vïÞm:†Û©V­šºvíª¤¤$ >Üt¸&6»Ýn7›©yóæ:xðàyo›7oVóæÍµiÓ&5kÖÌPB€+š5k–zõê¥mÛ¶éöÛo7ðZü¾v혂e1Ýxã*S¦Œé(7Ò¥KU­Z•i¼ÜÄüñ‡~ûí7eeeé­·ÞÒ¢E‹g:Àøûû+**JÓ§O“¸3Ö€X`øðáš4i’$ÇvŠ&LÐã?n8ÀÝŒ3Fþþþ²Ùl¦£ÀU£€X`ذaŠŽŽÖ¾}û”””¤§Ÿ~ZåË—W¿~ýLG¸‘›nºÉt¸f 4lØP 6”$=òÈ#êØ±£†ªèèh•/_Þp:À:zõê¥%K–hÇŽjÚ´éy÷‡ªjÕªu-66V±±±VE€R³ÿ~Ýpà Làv’““•œœ|ÖµC‡Jã9( äååIrìˆU’„„¶uàìv»Úµk§N:)!!Át¸"%}|z^\=vÁr¢œœœó®:uJS§NU5l XgóæÍÚ±c‡:wîl: ÀE0âD?þ¸Ž=ª{ï½WuêÔÑ”””¤;wjÊ”)òõõ5œ*))IµjÕÒý÷ßo: ÀEP@œ¨OŸ>úðÃ5qâDåææªJ•* Õ»ï¾Ë›1WTT¤éÓ§+::Z~~¼Ý8þ}ûT§NÓ1àŠðŽàD111Љ‰1ŒHOO×/¿üÂÏA'ILLÔàÁƒ•­ªU«šŽ—5 §˜>}ºêÔ©£Ö­[›Žâ‘Ú·o¯üü|Í;×t¸"@©+**ÒŒ3Ô»wï îø‡ksã7ªuëÖš>}ºé(pExW”ºÝ»wËn·+::Út­E‹q.·B”ºzõêiïÞ½ 3Å£EEEéÔ©Sš3gŽé(pÙ( §ðõõåôs'«[·®î¹ç¦ap+ÜXtt´–,Y¢ßÿÝt¸,ÜX¯^½T±bEmÙ²Åt¸,œð(999Š‹‹WFF¦ |åçW¨ ÅÇÇ) Àt¼RW§Negg«L™2¦£Àe¡€²«µ†ÿž¤¢öoê¹ôåŽ)YiiÒ-·˜ú«]–ÜÜ\Ýÿýš8q¢üqÓq DÀ5)((ЬY³4pà@£Ó¯N Д)ã_?.ED¨(§HËÞ¦Å)åØ%Ëq>ˆÔ^%M×rÕ÷åé¹Í›¥{~ZJMµâ¯pÕjÕª¥ûî»OÓ§O§€pYLÁ\“/¿üR¿ýö›z÷îm:ÊÙNž”|PÚ²E¯¶î¬Å?¿­óÏ©¤Kîšuë­RB‚4ožËIêÝ»·V¬X¡ÜÜ\ÓQ DÀ59uꔺvíj|úÕyž}Ö±Ø|ÎMûáw•|>ÈÅwÍrìª%©W/©CiÈé?œ·´ôìÙSEEEš3gŽé(P" àštêÔI©©©.1ýêŒíÛ¥ÿû?iüx)<ü"çƒIZ?d½BB‚ÿi³9)Ü·OúßÿuNæRrà 7¨M›6JII1JDxž—^’êÖ•–t±óAâ$½ iþºk–”®ÀÀQŠ‹¨F(88R »>§÷«Ü¬SãþW×_¨´¸†¨¨(-]ºT‡2ÎÃ"t€gùö[iÚ4ÇH¹r’.v>H€¤çU¿þ(•-[ñÌîX!!A1â]uëö”²²ÆIŠ—dÓpSG5ÐÏíº¨ÑOÛP«ÖYÚ¹gŠœþ³âãã`Á_ÞáÁÔ!C”ššª¾}ûZö¼p9( Ï2z´(õëwæR||œV­ŠQVÖX9Ö‚øÈ1Ò±^ohíÚç„F—?KKž*éY½¯¹y=ônÌßõtÚŸë,²³³ÕºuŸ³ ‹T¤ÌÌ ­Z£ôôi–•ºuëªOŸ>²Û/´¾Ì¡€<dž Òœ9ÒÇKeÊœ¹\Òù ŽN”\ 222å(gKUw¥*R½V/–Ž“*U’$9þ¼Ââ(:­”•5VqqñnläädËž ®à9þùO©Q#)6ö¼[gr.¼p]¢w´­°¾ôê«Òk¯IºpaqUFÆ«—ýÜàÉ( ·tîz‹ü}üÓ:žzBïë =¯"MS•*tãu.k§-ðFÀIIIQÕªUn,Ã_ˆ¿¤—´Rm´DÅw»ÞâÜÅéÿÑ“ê¯ÔI 5_uãu´uëN{þ+e·Û•œœ¬úõë+$$Ät` àʤ¤¤¨G*[¶¬± §ˆß©¯ÕR5^#ôçTÎ]oqîâô j©j®'õ§?÷Õ°Ùl;v¬Þ{ï=ÓQ@p233µmÛ6EEEÍqzxý¯~U--T'YµÞâüÅé6ýGO¨³è¾›‡»äZ^½ziΜ9ÊÏÏ7( €Ë7sæLUªTI—þf' PúÊO4Ð?U ¯« ÛôRPP7õï?KééÎ]oQÒâôonOQ^Ù²ú¢{ —\ë¥Ã‡kùò妣k@—¯iÓ¦3fŒüýýMGQÀÆÒ‰<õ[÷¹úÝy§µÏ]Ò©êÇKS§JãÇK.ðÿ篚4i¢úõë+%%E:u2€—cpÙºuë¦çŸÞt ‡>’š6•,.ôÄRn®4c†é$ç±ÙlŠŠŠÒ矮‚‚Óqx9 ÀýäæJ©©R¿~¦“ü©A©}{é?ÿ1¤DQQQÊÍÍÕ—_~i: /G¸´œœ 0BÁÁ‘jذ»‚ƒ#õqdŒìv»ôÐC¦ãíÉ'¥u뤯¾2ä<Íš5Ó­·Þª””ÓQx9Ö€\Vvv¶Z·î£¬¬q’âåØj·H·«±–W¨ª;l6¹Ô’ïnݤºu¥‰¥I“L§9‹ÍfS\\œÊ•+g: /LjmذAO?ý´‚ƒƒU©R%ÝrË-Љ‰Ñ÷ßo:¸…‘#Ç—V:}ÎG#mWKmÓþ®¸¸x£ùÎãç' ,%%I‡™NsžÿùŸÿÑÀMÇàå( Nôúë¯köìÙŠˆˆÐ„ ôøãkåÊ•jÖ¬™¶nÝj:¸¼ŒŒLI¡g]ë§”«ë4OÊﻘÇ“òó;bÎÃ,'zî¹çÔ²eKùùýù¿9&&FMš4Ñk¯½¦?þØ`:p}¾úó„sÉG…zDŸ(Y±ÊWùâû.¦vm©GiÊiÈÓiÀå0âDaaag•Iª_¿¾‚‚‚´}ûvC©àÊ|öÙgzå•WŒ<·Ÿ_¡$û™¯Ûk©êjŸ>R?IEÅ÷]PLŒôõ×RV–é$àr( ³Ûíúõ×_U³fMÓQà²Lœ8QéééFž;$$HÒú3_÷W¢2ÕHÕBÒúâû.¨K©|y‰§à<‹%%%iß¾}Љ‰1.é×_ÕªU«eäùãããø‚¤tUÑïê©Ïõ‘•´N£g$×%U¬(EFºä¡„`ÄBÛ·o×SO=¥Ö­[«Ÿ+ž0{ölùøø¨GFž? @ééÓÔ¿ÿ, ­}¯Êê„2þ¶DýûÏRzú4¸Ô&¼g‹Š’6m’~øÁtp),B·È©êÕ«+%%E6›íÒÃfΜ©víÚ©FÆ2hÊ”ñÒ=éÒ•¶p¡±,W$2Rò÷—fΔFŒ0æ<“&M’Ýn×àÁƒMGàe( 8|ø°:wî¬#GŽhÕªUºá†.úýC‡UµjÕκ«ØØXgÆ€³üöÛoJKKÓ{ï½g:ŠôÓOÒš5Žó5ÜE¥JRçÎŽiX.X@6lØ +VèñÇçC1à’““•œœ|ÖµC.xÆ»¡€8Ù‰'Ô­[7íÚµKK—.Õí·ß~ÉÇ$$$¨Y³f¤€ ›3gŽŠŠŠÔ³gOÓQ¤ÔT©lYÇIãî¤wo顇¤Ý»¥[n1æ,½zõÒäÉ“õí·ßêÎ;ï4pI%}¼yóf5oÞÜP"ÏÀ'*,,TLLŒÖ¯_¯3f(44ôÒ1sæLÝ{コþúëMG‘æÎ•Úµ“*W6äÊtí*•+ç’»a…‡‡«Zµjš9s¦é(¼ # NôÜsÏ)55UݺuÓo¿ý¦O>ùä¬û<òˆ¡dpiÇ— |Nuø°´b…ôöÛ¦“\¹Ê•¥Nä¹çL§9KÙ²eÕ£G¥¤¤è_ÿú—é8¼ĉ¾ùæÙl6¥¦¦*55õ¬{6›À¥µoßÞt‡… ¥‚÷›~uZT”Ô·¯ôóÏÒM7™Ns–^½zé£>Rff¦‚‚\ôLÇ>Úò\iii*,,TQQÑyÿºèé½àjæÎ•îºËå~y¿lݺ9Ö¯¸àT§ˆˆU®\™iX,E¸®S§¤ùó¥îÝM'¹zU«J;ºä¡„þþþêÖ­›R\p ÏÅ,€ëZ½Z:tȽ ˆä˜†Õ¯ŸôË/Rݺ¦ÓœeÈ!Ú½{·ìv;Ûñ°# ×5w®ãö»î2äÚtï.•)ã’Ó°BCCMù` À5ÙíÒœ9Ž_ÞÝý—ãjÕ¤ˆ—ÜŽ¬F¸¦ÌLéÇÝúÕi½{;¦”íßo: Eœ1hÐ ÅÇÇ›Žá0w®T©’ãBOн»äëë’Ó°ÀJ€$éÈ‘#JJJ’ŸŸ‹ìO2w®c÷¨råL')×]'µoï’»a€•( IÒ¼yótòäIEEE™Ž"8 ­_ï1Ó¯rrr4`À½ôÍ^®\©°Û;hÀ€ÊÉÉ1 ,GH’¦OŸ®V­Zéæ›o6Eúâ ÇÂó.]L'¹fÙÙÙ ‹Qbb/MÞ?Ø»„* IDAT_¾’nÙÑ_‰‰½C àu( 9rD ,PïÞ½MGq˜;Wºûn©fMÓI®Ùȑ㕕5NR+ý¢›ôîP-”ÔJYYcç"kn$}úé§ŠŒŒ4€‡£€4wî\åçç»Æô«?þ–,ñ˜éW™’BÏ|=_]ÔY dS‘¤Ðâû®¡B… š?¾¶oßn: FhÆŒ®3ýjÙ2)/Ïc HA¯¤?Ï1™¯. Ðoj¡’rµwï>GªaÃî Ž4º6¤cÇŽªT©’f°P€Q@ÀË9rD .Ttt´é(sçJ J ˜NR*üü %ÙÏ|®0RUuÑ I1:rd¢23çiçιÊÌL5º6¤|ùòêÞ½»¦OŸnùsððr•+WÖ† ôÈ#˜Ž"I©©3ú!I!!A’ÖŸùºP~Z¤Žê¢O$•ÔJŽøÈôÚèèh}÷ÝwÚ¶m›‘çàù( àål6›î¸ã˜Ž"mØ ýú«Gøø8¾ )]R‘$é uVˆ¨–ê]àQæÖ†tìØQ•+Wf§¡€\Ç¢ERµjR«V¦“”š€€¥§OSÿþ³ÔM t× >‘$uÔâ <ʧxíˆõüýýÕ½{w §q‘ãn´x±.¹Êiì¥$ @S¦Œ?ëÚ–òÕÔåÄ|}¬GKxDQñÚ3¢££•””¤mÛ¶©Q£FÆrðLŒ€\Ñ#ÒºuR‡¦“X"«a:j¾|UPÂÝõÅkGÌèСƒV®\©† ËÀsQ@®!-M*,”""L'±DÛ×ǨºŽª•&ëôÚÇ¿Ó8JññqƲùûû«M›6òñáץϳƸîkÉ)0Pºí6ÓI,Q="BE5kêÿÕNÔÈÂTøÊϯP!!AŠŸæ›€P@ÀK?~\+V4ãOK–xÍè‡$ÉÇG>;«ë7ߨëÖ/L§Ë0¶ ^(''Gš7ožé(»wK;wzW‘¤.]¤o¿•öî5,C/”’’¢üü|…††šŽâ°d‰äããØË›tèàø{/X`: X†^èÓO?UDD„ë¬3X¼X qœâM®»N “æÏ7,C/³gÏ­^½Z=ôé(……Ò²e^³ýîyºt‘–.•Nž4ä‚òòòTXhî\ž…^æ³Ï>“¿¿¿zöìi:ŠÃW_Ij܆ ŽTÆÝ©F(''Çt:çëÒE:vLZ½Út’ýðêU«–V®\i: Á.Xàe’““ÕµkWU®\ÙtIÒ±Y³$›¯Æ,xJº[’MR‘233´jUŒÒÓ=|KÚ;ï”êÔqLúÿ~ÓiÎS¯^=èÓO?U»víLÇà/²mÛ6}ýõ×®3ýJÒÏS>Ñ2{kè9ʇäx{j¥¬¬±Š‹‹7˜Î6›cÄEרl6=ôÐCš9s¦Nºð41îƒ^$==]Õ«WWçÎMGq8vLõìÕõ¾À7„*##ÓÒHFtî,mß.ýø£é$%ŠÕï¿ÿ®E‹™ŽÀP@À‹ 8P{öì‘¿¿¿é(+WªŒìZ¢ -@÷QA¯¥‘ŒwlÇ»d‰é$% ÖwÜ¡äädÓQx x™J•*™Žð§Å‹µ¯Œ¿vêoø†"ùùyÁîKÕªI¡¡.[@$Ç(Èœ9stìØ1ÓQ¸9 Àœ%K´ëÖ¿IʸÀ7¬WHH•‰Ì‰ˆplGì¢ÛÝöéÓGyyyš;w®é(Ü`Æ/¿H™™j7D/HJ—TT|³HRºG)>>Î\F+EDH¿ÿ.mÞl:I‰n½õVµnÝZ*‹py؆`™œœÅÅÅ+##SÝr÷iœ¤–}­ÔÔ÷ÿ_ed¼ª‚_ùù*$$Hññ¾ï_…†J•+;N…oÙÒtš-^¼X+V4€›£€,‘­Ö­û(+kœ¤x½ G´Y¾zï³G´pÃSžÞÇ¥”)#µkçX2j”é4%¢|( LÁXbäÈñÅ壕l²+BK´Xä5ç}\ŽˆiíZÇÉèà¡( àá¶oß®]»v™ŽQ|žG¨$é}«ZÊÑEßõ’ó>.%"B:uJZ¹Òtp x¸—^zI>ø éÅçy8N:ÐW­Uëâ»^rÞÇ¥4h Ý|³cx( x°C‡éóÏ?Wß¾}MG)>ÏÃ.I ×r­Rå«\ñ]/9ïãRl6Ç(ˆ Ÿ׊âDÇט1cÔ©S']wÝuòññÑG}d:/2}út:uJ<òˆé(Åçy¬—ŸN©V)Míþr׋Îû¸”ˆ)3Ó±M1x ˆåääè•W^ÑŽ;Ô´iSI’Íf3œ €7ILLTÇŽU»vmÓQ§ÀÀÔRSTIǵ\áòÊó>.åþû#!K—šNrQÙÙÙZ±b…éÜĉêÔ©£èÇÔøñãMÇàevîÜ©ôôtõë×ÏtIR@@€ÒÓ§éù»¦ê¨ŸŽÿíeuSÿþ³Ø‚÷¯jÖ”š5sùu ãÇWTT”òóóMGàf( NT¶lYÕªUK’d·Û §àm>úè#U­ZU=zô0匀€=X½œ*GvVæÎyÚºõ M™2žòq®ˆÇHQÑ¥¿×~ýú)77WóçÏ7€›¡€€*,,ÔÔ©SÕ§Oùûû›Žó§'¤5kîáÂ""¤ìliËÓI.¨qãÆjÞ¼¹MGàf( àŽ9¢¶mÛjàÀ¦£œmÝ:éäI)<Üt×v÷ÝRùò.¿V¿~ýôÅ_(''Çtn„¨zõêúä“Ob:ÊÙ–/—jÔš41ĵ•+'µmëòë@bcce³Ùôé§ŸšŽÀP@ÖIK“î»Oòáíç’""¤U«ÓÖ\TÍš5ÕµkW¦a¸"~¦à|C‡UµjÕκ«ØØXC‰ ?.­_/½õ–é$î!"Bzî9iõj©}{Ói.¨_¿~êÙ³§¾ùæÝyç¦ã¥*99YÉÉÉg];tè¡4žƒâ‚Ô¬Y3Ó1 t­Y#:ÅúËÕ¸±tà Žu .\@ºté¢èèhr’=IÒܹsµgÏIÒ!CT¥J“ñÀ:Ë—;¶ßµÙL'qÒÇ;¶ä->W ÜÄÉÞ|óMíÞ½[’d³Ù4{ölÍš5K6›M>ú(€w8|XÚ¸Qzì1ÓIÜKD„ãßË–I¬à!˜‚åd?þø£ŠŠŠTTT¤ÂÂBžùï›o¾Ùt<dÍš5zòÉ'uìØ1ÓQ”““£F(88R vדMî—ŠŠ”Ë"å+sÃ Žµ K—šN¥†bòäÉZ´h‘*V¬h4Gvv¶ÂÂb”˜ØK™™ó´sç\þ|¯öèz…ÆŽäк+Õ¾½c!ºÝn: ” x€#GŽhÆŒêß¿¿l†×XŒ9^YYã$µ’äÈ®4-W'eý0NqqñFó¹ˆé知]»L'€RA””¤'NhàÀ¦£(##SR虯¯S®îÔ7JS;I¡Å÷qÙî½WòósŒ‚€ €€›³Ûíš8q¢ºw﮺u뚎£‚_ù¤¶úR>²Ÿâû¸l•*Iaan³äÝwßÕ?þñÓ1¸0 ¸¹uëÖiË–-M†º¾sòÊOij§öZ*wXÈÿÄOhëÖ­Z³fé(\'¡€›kÖ¬™éç Д)ã¥Áƒ¥Õùúr«{, vç.ä—¤¥j¯7ô¼*(Ïåò‡‡‡«~ýúzÿý÷uÏ=÷˜ŽÀÅ0pžåË¥víL§p;ç.ä—¤%ŠP9åë­tù…ü>>>\:u2ãâÒÒ$›õÎо½£€¸É4,8ÜÈÞ½{•ššª~ýú™ŽrqiiRÓ¦Rõꦓxžöí¥Ÿvì0nˆnd„ ªT©’}ôQÓQ.Ìnw¦_9GÛ¶’ŸÓ°¸- ¸‰£GjÒ¤IüðC?~\Ï<óŒé(—–&ùøHmÚ˜Nâq²³³£¤_;©åÑÚµs¶23S•˜ØKaa1.]BÒÒÒôÀhÍš5¦£0Œn   @ Љ‰Ñ7Þh:ÎÅ¥¥IÍšIU«šNâqFޝ¬¬qZªª¦Ãj®Mr¼•·RVÖXÅÅÅ›ŽxA:tP£Fôæ›ošŽÀ0 ¸Y³fi÷îÝzî¹çLG¹8Ö8UFF¦¤Pe(D‡UE´ø/wC‹ï»& 6LsæÌÑ.Ð^nàúë¯×°aÃt×]w™Žrqß/íßOq’‚_I6ÊOij§ýu!ºOñ}×Õ·o_Õ¬YS ¦£0ˆn mÛ¶ú÷¿ÿm:Æ¥¥¥I¾¾Ò=÷˜Nâ‘üü %9q/VµÖZUÒÑâ»EÅ÷]—¿¿¿žzê)M™2ÅõÓà4@éIK“Z¶”\y—.7$i½$i‘:ªŒ ÔNiÅw×ßwmO>ù¤ŠŠŠôþûÀ  tØíÒŠL¿r¢øø8¾ )]?¨ž²t›:h‘¤tŽR||œéˆ— G}Tï¼óŽNž~šLG¼,Ï=÷œî¼óNÓ1B”Ž´4©Léî»M'ñhš2e¼ã‹Ù³¥Ô”ÑOJnR>$©AƒjРé a  t¤¥I¡¡R… ¦“xðpÇ¢ÿÅ‹/ý½à"( à‚N:¥S§N™ŽqùŠŠë?î»ÏtïRµªÔª€[¡€€ úè£T¿~}=zôÒßì ¾ûNÊÍeý‡ :HË–)gÿ~ 0BÁÁ‘jذ»‚ƒ#5`Àåää˜Nga ¸˜üü|½úê« UewÙÎ6-M*[V 3Äûtì(£'[vUÊ/ïIŠ—d“T¤ÌÌ ­Z£ôt÷Y Àó1.&11Q{öìј1cLG¹|iiŽòQ¾¼é$Þ§E /[NÁ¿Ü%©•åCr¼Å·RVÖXÅÅÅ›Ëç €€ 9yò¤ÆŽ«èèh›ŽsI999Øï9NýB¾ÛÏ´|}µº\uuPæ¾!Tºçìv»6mÚd:‹P@À…ü÷¿ÿÕÏ?ÿ¬Ñ£G›ŽrIÙÙÙ ‹Ñ·S«jQ¦ç~¨ÌÌT%&öRXX %ÄB«Ê×R¨Ö«ª•p×G¾–gº ,P‹-´aÃÓQX€.âäÉ“7nœbccd:Î%9^YYãt¿²uL•¡1íÇŒuUjÈWEº_ËJ¸[$?¿BË3]‰Ž;êöÛo×K/½d: P@ÀELž|¸$LjHãÆU«V­KÈæÍ›Õ¼ysmÚ´IÍš5³:2\™yó¤nݤᅲê×7’´y³Ô¼¹´b…Ô¶­é4€Gâ÷µkLj“¤¤¤ÈÏÏO?þø™kåʕӠAƒ”žž®_~ùÅ`:(Ë–I7ß,šN‚Óš6•jÖtëiX<ÄI¾úê+5hÐ@•*U:ëzË–-%I_ýµ‰X\È×_-·„^¶Lºÿ~Éf3§ùø8¦a-X`: \ÄIöï߯ڵkŸwýôµ}ûöY € ùꫯԬY3Íš5Ët”«“-mÙâ( p-]ºH_}%ñ>ÀEQ@œ$//OåÊ•;ﺿ¿ÿ™û¼“Ýn׳Ï>«   õèÑÃtœ«³|¹ãßááfsà|:9FBæÏ7JDq’òåËëäÉ“ç]?qâÄ™û¼ÓŒ3´jÕ*%$$ÈÏÏMcZ¶L ’Jé…a5jHaaŽMÀ¹é;Ÿë«]»v‰Ó¬öïß/IªS§Î;tèPU«Ví¬k±±±Š-Ý,÷ÇhĈêÑ£‡Ú·oo:ÎÕ[¶LêÚÕt \Hd¤4v¬tò¤TÂh¼»Ùµk—>ûì3½øâ‹¦£ÀË$''+99ù¬k‡2”ÆsP@œä®»îÒŠ+tôèQU®\ùÌõõë×K’š6mzÁÇ&$$°­à¡Þxã 8p@o¼ñ†é(Wdý‡+‹Œ”^xAúòKÇ¢t7·eËýóŸÿT³fÍÔ¥KÓqàEJúøô6¼¸zLÁr’¨¨(jÒ¤Ig®þøc=ûì³*,,Ô¼yótÏ=÷˜ŽÀ€×^{M3gΪÐÐP;(­ÊÚµRÓ¦úò«¥¦£à (=}šf÷ê¯æ«6ëîÛ:èwÿ2 R|¼g•ÇŸþY“'OÖ˜1cäãÃç«€+£€@)(**Rß¾}•››«E‹É×׃÷I‹Iƒ™N‚« Çg}$Õª¥Õ/Äxìë¸uëV½òÊ+²Ùlz饗LÇp|D¥à•W^Ñ_|¡O?ýT¦ã”®¯¿–rr¤NL'ÁÕªYS “¾8wˆçèÔ©“þõ¯éå—_Vjjªé8.‚×èðáÃzÿý÷õòË/«sçΦ㔾… ¥Ê•¿ÀÂ}uí*-^,åå™Nâ4/¼ð‚zôè¡GyD;wî4ÀP@àU­ZUß|óFe:Šs,\(…‡KeËšN‚kñàƒÒñãŽétÊÇÇGS§NUíÚµõÀèèÑ£¦#(JA­Zµ>Òƒ: HQ‘é4–kܸ±/^¬ï¿ÿ^­[·Ö?ü`:àU( P‚›o¾Y/¿ü²Ö¬Y£ë¯¿Þtkýô“c ^Öx´CíÛKûþ{wU½ÿqü5lb®¨`¹&&š7—Ü3õÚ-3ÔRC«›šÙm¹™¶`×òvséÚ/oYWí^¥M[Ì-m¹·²ÜH\*K2›&‚€ Š ûùý1€ 3#ËÌœx?y¨çÌ>0ãðýÌ÷óù~S¹³]:tN§NØ8ñI233ÍÍ-ºwïηß~Kaa!½{÷æÛo¿5;$‘ZC ˆˆˆ ‹…)S¦Ð¸qc³Cq¿O>??øýïÍŽD\$##ƒžSÿ#Ñý@oבð1±±£èÓ'ªÖ$!íÛ·'..Žððp ÄJ­ &âJ@DD¤¼5k`à@¨ÉW-1}ú<’þ÷wVÅ(VÖ!Ao’“çcr„îÓ¤I¾øâEïn` IDAT FŽɸqã8xð Ù!‰ÔxJ@DD伬,ظFŒ0;q¡øø 1ŠÖ¤»ËœíU|¾ö äÝwßeË–-´jÕÊìpDj<% "R«Öâ}lúôS((PRÃø¾áŽÌhÊ–ùŸ¯]|||èÕ«—ÙaˆÔ J@D¤VÊÉÉá±ÇcĈ†av8žcíZèÖͺ¯ÔX~~…€A!~¬adqRòÿ ¨ø¼ˆˆk(‘Zç‡~àºë®ãµ×^cРAJ@Še¦¤pnÕjÊ®•«"Õ&={FÛø1´g™2¬íÅçED\C ˆˆÔEEEÌŸ?Ÿž={b±Xرc?þ8>>z+ÌÈÈ ºç0êæç±$óÃZ»*RmM»v3€8¾d©„2žX Žvíž&&&Úä=Ï?þÈš5kÌC¤FÐo]©âââèׯÑÑÑL™2…øøxºtébvXcúôy\—v¿Òš)ù¹ÔÎU‘jƒââÞg„Utˆ¸O.¿Œ?ú.fÒ?$.î}BBBÌÑã¼ýöÛÜvÛmÜqÇÚ¸P¤š”€ˆH·lÙ2úöí˹sçøú믙7of‡åQvlß˾e-#€ w?¯}«"Õ!!!,[6½{7pßæµ\^˜Ï¿n»^ɇ/¾ø"o½õ[·n¥cÇŽ<ñÄœ8qÂì°D¼’©ñn½õV–-[Æ®]»0`€Ùáx¤«Ïœ¦©¬a¤³µsU¤Z¥S'¸î:ˆ5;e±XøãÿHbb"Ï<ó ‹-⪫®â•W^!//ÏìðD¼Š©ñBBB˜0a¾¾DÛsãÙTŽÄúÛ8«U‘j…ñãaÃHO7;V¯^=fΜIRR·ß~;Ó¦M£{÷îäç盚ˆ×P""" +Èb=½(ÄÏÆY­ŠT+Œ ¾¾°|¹Ù‘x…ÐÐPÞxã ¾ÿþ{¦M›†¿¿¿Ù!‰x % "âµ Ã`Ë–-Œ=šŸ~úÉìp¼×þý\‘uŒíÍq@Qñ‰"´*R- ÇÛoš‰W¹æšk¸÷Þ{ÍCÄ«Øú¨KDÄ£¥¤¤ðá‡òÎ;ï°{÷n:tèÀÑ£GÍË{­] uêð\Ü:ÎÍzøø9øâçWHÏžÄÄhU¤Zc¸õVøþ{¸öZ³£©1>LýúõiÔ¨‘Ù¡ˆxÍ€¸È‘#Gxê©§4h 4ÀÇLJo¾ùÆì°D¼Ö‘#GX¸p!×_=W^y%O=õW\qŸ|ò 8Ðì½×Úµpã„´iSº*Ò/¿¬cïÞ ,[6OÉGmrÓMЬ™šÑlæÌ™4mÚ”#F°|ùr²³³ÍIÄTJ@\dß¾}ÄÄÄ––Vº×€ÅráÒ–"RQ³gÏfÚ´i4lØ7ß|“ŒŒ Ö®]ËСCµ‘`udfÂÖ­0b„Ù‘ˆ'ðóƒ»ï†wß­ìä4³gÏæÅ_$##ƒ»îº‹¦M›rûí·³hÑ"’’’0 ÃìEÜJ¿µ]¤G?~œ}ûö1mÚ4³ÃñzO?ý4ééélذ{î¹G¥ β~=DFš‰xŠñãáèQøôS³#©1Z´hÁÔ©S‰‹‹ãÀÌš5‹#GŽðç?ÿ™ððpþñ˜¢ˆ[)q‘úõëÓ¸qc³ÃñHEEE$&&òÞ{ïÍ!CX¹r¥Ãk rS„µÈڵЧµìFàšk [7•a¹H«V­xòÉ'Ù¶mÇgýúõŒ¸Ä dAAfI¤FQºˆ¸Åk¯½F||<‰‰‰ìÝ»·´ºeË–tëÖ ˜aí‘™™Itt {¾ý‘-¿ü—×CÚóÓÄ'‰‰‰V¿‡=z4uŸ~††Éee$ÐkÄ™6lȰaÃ.y¿ 0oÞ<"""hß¾=áá᥶mÛ–:uê¸!ZçQ""•–““ÃÑ£G9zô(™™™dee1ḟ×|õÕW¤¦¦Ò¾}{FŒA÷îÝéÚµ+Mš4qSÔ‘‘Aß¾cIN~žáô£.Ÿ³8c I±YlÞE\œV¼ªí222¶d[ º%Fò*E$$Äë5b’’;}ûرcË—/çÌ™3øøøpÓM7ñÉ'Ÿ8|Œ‚‚üü4ìÏ Wb†Annn…îèâhD*Ç0 233ÉÍÍ-wËÉÉáìÙ³œ={–=zf÷1>ýôSžyæŽ;ÆÑ£GKñ•¨S§£Gv¸ÐÂG}ä´ïIªnúôy$'?ôf w“@G’¸€ää¹DGǰlÙ泞&ðfqâôÖkÄ$=zô G¥ÿ6 ƒ´´4’’’HLL¤nݺ—|Œ¦M›RTTD“&M ¢Q£F4l؆ Ò¨Q#î¼óNzöìi÷úììl:D:uÊÝð÷÷Ç×××)ß«ÔJ@*à›o¾aðàÁºï¾}û¯Ö×›:uªÝþ‘èèhú÷ïo÷Ú-[¶ãðñ×­[çðü‹/¾ÈÖ­[ížïׯÓ§OwøÇwxÞßÇ /¼pÉïã©§žrø¶¦Æ Ã(­Å1c×_½Ýë¿ùæfÍšUîº o›7ovÃã?ÎçŸNQQEEERPP@aa!………Üzë­,^¼ØîõEEE4»D}ÿ|àp#88˜ë®»Žàà`š4irÑ-44T«¼y‰øø †Ë8ÃHÖðeÿô">~ŽY¡‰‡(yÄ2uŒàw|Ï”ì ¢×ˆ'°X,„……Æ 7ÜP¡k^~ùe233Kg¯O:Å©S§HKKãÔ©S—|œ¯¿þÚáïv‹ÅÂéÓ§¹ì²ËìÞ'::šuëÖáëë‹ÏE·ðÒK/9Œãæ›o&//¯ôwŽÅb)½•|!C†Ø½~ûöí¥¿—/Œ¿ÄªU«°ûï¼óŽÃåÒ”€T@ÇŽ‰­`3^óæÍ«ýõöîÝ‹¿¿¹c-Z´ E‹Õ~ìÚÄb±8\žµ"怀›÷+9v©O| )÷yᛥacéܹ3………¥oÐ~~~øúú–Þ:uêä0___Ö®]K@@ÀEŸ\Õ«Wzõê]rÁ„ž={:üdL¼GA/`a8ë¨Ï–sg™³>Åç¥6+y|ÊPRhÁ#¼Ê}ü»ø¬^#ÞjüøñÕº¾_¿~lÞ¼ù¢Ùôüü|òóó)((¸d/J·nÝJ?L»ðVXXH›6m.GóæÍÉËË£¨¨ ôÁ’?%`-Y+‰óÂkmY±b+V¬(wlïÞ½—ŒS³ZVÁåV®\ÉwÜÁ×_Í€ìÞo÷îÝtïÞ]»vÑ­[77F("µE§NÃHHXÏÇDÄqú±­ÌÙ""""Ù»wƒiñ‰ùJ^#`!šyŽgiÉodÒ½FD4^s-Ã+"R‹ôìA0ŸsŸ_0û°ž=#L‰K<‡õ5°€%ÜO!¾<È?‹Ïê5""Õ§,š3ÇZ'[2U÷Ö[o±iÓ&žyæÓâ‘Ú+&&š+×÷ÇrÔàF-¶Ó®ÝÓÄļofxâbb¢Ù¼9Šää¹dÑ‹X&ð0¯ñ"7pE»YzˆHµ©Ë…|||°X,¥5þ%?j‹ÅBaaáE÷×”žˆ¸C~ïÞüœ’θFøj¹HÉ^1ññ \qöŸØHl¿›ˆ\ý¶^#Rëi¼V}šq¡’)qð þÛ·Óåí·Ù{÷ÝfG#*$$¤üR»Ã‡sﯿ‚öí'PˆˆHm²bÔ­ #F˜‰x“ǃŸ~‚/¾0;©”€ˆˆÔ&ï¾kM>40;ñ&7Ü×^ /¿lv$"R(©-öì±~Š}×]fG"ÞÆbiÓàÓOáçŸÍŽFD¼œ‘Úbùr ‚?üÁìHÄ ¡¡°`Ù‘ˆˆ—S""âå233™8ñI:uF‡ÃéÔi'>Iffæù;Y;î€Kì,bS@<ü0¼õ=jv4"âÅ”€ˆˆx±ŒŒ úô‰"6v ëIL\GBÂÇÄÆŽ¢OŸ¨óIÈÖ­pèÜyáæƒ"•ð§?Y˱-2;ñbJ@DD¼ØôéóHN~è XŠú½INžKttŒõлïB˖ЯŸ9JÍФ Üs¼öäæšˆx)% ""^,>>èeçl/ëù¼<øðC7|ô¶/Õ4u*9b-é©ý&ñb¾œŸù¸õüçŸÃñãZýJœãê«á¶Ûà¹ç4 ""U¢DDÄ‹ùù†³EÖóï¼;Ã5׸34©ÉžRRàõ×ÍŽDD¼/Ö³g°ÝÎÙí éÜ V¯†I“Ü–ÔtW_m}MÍ™YYfG#"^F ˆˆˆ‹‰‰¦]»@PT|´ˆ£]»§y¾m#ðóƒ L‹Qj¨¿ý rràÅÍŽDD¼Œ/B\ÜûL˜°ŠˆˆHÂÇÉ„ «ˆÛü.õÞyÇÚûѸ±Ù¡JMjÝ}Á8|ØìhDÄ‹ø™€ˆˆTOHHË–Í»øÄš5Ö:ýtPR;DGÃâÅðì³ð¯™ˆx Í€ˆˆÔPy/¿ÌþP:ýq¦ýÒEª£aC˜9–-ƒ„³£/¡DD¤:¶m›6ñ\ædÇ;¤‹T×@«VðÔSfG""^B ˆˆH ´sò2i̇ü‡;¤‹TW@Ì  ›7›ˆx% ""5Í™3ôÙ÷ÿæ~r ´q‡âÒEœ%* ºw·ö„öö¥±R""RÓ¬XAý¢ó€;ï.RI™™™Lœø$: +ßWtì˜u9Þo¿µî;#"â€VÁ©I ^{MõC8pºµ;ï.R ôí;–ää笥}E$$ijysqqïróÍÖ¥yÿ{hÔÈäˆEÄSiDD¤&Ù¾¾ÿžÝ½¯ÇÑéÖÔE*núôyÅÉGoìöýóŸpâ„5 ±C ˆˆHMòúëЦ |çu‡;¤ÇÄD›£x%kßP/;g‹ûŠZ·†—_¶.ËûñÇnŒND¼‰J°DDjŠÌLxÿ}˜3‡f͈‹{ŸèèâãçPPà‹Ÿ_!={Fó>!!!fG+^ÆÚ7d±s¶L_ѽ÷Zû@&O†Ÿ~‚&MÜ¢ˆx % ""5ÅÒ¥`±Àĉ€ƒÒEªÀÚ7d`; )ÓWd±Ào@çÎðàƒðÁÖc"&ÈÌÌ,þ &á‚b¢õAŒ‰”€ˆˆÔyyÖò«¨(}â,.ѳg Û±ö€\肾¢ÐPk?HT¬XwÞé®0EJUhá%!¦PˆˆHMðÖ[ðÛoðä“fG"5TLLtåúŠî¸ÆŽ…‡†Ã‡Ý¬\8AL¡DDăØÝg!3ÓþEyy֨nj±–½ˆ¸@HHqqï3aÂ*""" NDD$&¬²ÿIòk¯Aݺpß}Ú PÜ®B 'ØP¥÷a©•`‰ˆxˆK• |üñkÄÄ,½¨–ù•.a48p@«‰ËUº¯((þõ/6 –,?ýÉuÁI•ÕÔ>‰ /œPFEʶ¤ú”€ˆˆxˆòå%JʧW¯±dg/¦ì/Ť„­ÌòûþǨÙ1‰Ãì-·Àý÷ÃÔ©pÍ5з¯ÙáJ5¹O¢Â '”áø}ØZ¶õÈ#ã\om¢,á¸\`#ÙÙÿäÂZæ{ø…+ r˜c¹Ü-1Š\(##ƒ>}¢ˆEBÂzבð1±±£èÓ'ÊZ¶ò@¯^ ûö™²”Q“û$¬ #TnCÖª–mIå(ñŽË~ú”;âOO3—Íê$Õ&‹9*4€ „5k¬«cÝ|3¤¦š°”S“Ü•^8ª•mIå)ñçËl¹ø—â=¼E0‹gõKQLSálãÆðÙgPX·Ü§N¹+DqÀn³šº«²p‚ã÷aÛe[RyêñŽ÷YȦl-óùÙ1ì%‚ýR“8À#%%•N†•ö†Œì>„Ù_¯ÆçöÛá“O ÀáʪÒ'QUí1©lc¼£ûWfá„Jíw#UgˆÇصk—»ví2;1AFF†Ñ®Ý ¶PhX×--4`›Q¿~çâㆆ1‰7 ŒNühÀ6c„'Ì_j©ˆˆ[ (*}mž¿¥0È€¸2ç ˆ3Ɔu5Š ãÎ; £°Ðìo¡V›0á‰âçèÂçÏpÊ{KU?==½ø½ðâ×N»vƒŒŒŒŒjÝßGïÃ%¥ñZõ©KDÄC8*ˆÿ€vížâð'§´÷c/Ùvk™EÜÁ~£ï<`.¶zCÞKÔ «(Z¾œ7 §SÄ-¥%95aoúªÒ'QUé1©lc¼3é«´ßTžÙœ§ŒZDÉÈÈ0&Lx˜za€1¼íõÆ„ OTêÓ=g³ÿ‰ñÀKÎŒü™K˜dø³ÉhÕªŸÑºõ§|’mg~ï.%ï-·áá‘FDÄ-N{o ´3ûa½…‡G^týY5ëÏ2"â–jÝ¿º4^«>õ€ˆˆx‰–-šW¯„1cXûÁf‡$Rú‰±µþ~Niý}JJ§NÙê+˜X?­^HoNш%ÜOu°GyÛ{0LóæÍIlì(lÏ6Ä1aª 'jöc²ÎBX²³ñ´k7Ãf’S•%u+úÚ©ÇiBÙK(ÊH¨O(G%•0öÑÊÿgÚÖõÃçÂ}gêÔ±&%‰EÙ[ÙcÁÁàS~Í&תO3 .2}út²²²3f íÛ·'99™… ²~ýz¾ÿþ{š5kfvˆ"âMV®´nâ¶n’ñ özCòò öï·ýiõBÍdfA Ó¹…O˜Â+ühcÖä<Ϫñ¯JÉ‘³6t\þÕ–Õ«ÿK|ü° %öcªül”½°“œ\ב +^$öùrä»iåæÑ¼èY' λ‹0R %PÒhHv™Gû޳_2ýêpÔ¯…Íšö‡»ñiÛ¶|R“yôèù¯ýãAüüþWü3¹ÕcJúj*% .²`Áú÷ï_îØÍ7ßÌ 7ÜÀÂ… ™={¶I‘‰ˆ×9u }FŽ„ÈÈKß_ÄCØxÚÿt{;­['O3óÀ |Ãõ¼ÂT¾£+¯Ê_9NA6¾ŠgíN]•’#gmh?iÈÆqòä"Nž¬Xý˜ª‘äœ8QZòtjß>–=û2¿;Þƒ›©O(iÖä"á+ê½ù/ûÐ ð+E$•4BÙE÷âÄ:בF3u˜ÊöŸ?§•ÅB«Kü¬œY®&•§ÄE.L>®¿þz‚‚‚Ø·oŸ ‰ˆ×š9Óš„üãfG"RmöfF¬ÕÕ¥ŸJÉoÇ=§à¡Œ$Æí˜A K¹—"ÊÎxÖîÔŽ¿?ÛƒZgí¾m?i°×;aÖ¢2=<Šf¡L ìäxBO6:_•°“C+®"¨Yc|ÓÓ!7·ôº†ÀdÊO¤ÊAZñ-½‹“ŠÓ\{ó^þòÊlë¬Eýú̺T‰YŸßÅÞLRyÎ껑ªQâF§OŸ&;;›&Mš˜Šˆx‹]»`áBxñEhÙÒìhDœÂQIpѹc?ýÄæ>7òÆéûù‹y–çøŒ?PÄN»³ fªì²¶ÑÑ÷²yóÕš5±Å~ÒPù•¹bb¢Ùºé²ÿ÷¡„J:¡&Œ åâÃ:Ñœ#_|åŽ\:;±'·?iŽ2ì‰'Ê•Au»åA¾Û÷)öf~~ú-’¿´o_.¦ÊÎ.ÙS•ÕÊÄy”€¸Ñ‚ ÈÏÏ'**ÊìPDÄMªµ$fa!<ðtêd-Á©¥‚;wæúÿíaî„G‰üê6äÜJš_ ßvîÆ€Ø× ö‚RÇ%?óñǯ³´Â³&¶Ø çQvïOÍH/-yºöè!øë_Ë­’šÊ/Xøºôº"ฯ?‡ ¿"«ø‰Îü—‹¥¤±4Â8Bsò¨S&²"" #öÈ#åâ=S@ez_ª2»d³ún¤j”€T€aä–™2t$00ÐæñM›6ñÜsÏÅÀˆxªj×/Z;wÂÖ­àï令Eÿüó ÝwäÈ‘4lذô߇¢_¿~°uëV‡Ëï–¬+}ýõ×Ó¸qãrçÆǸqãªö ˆˆ)ª¼¶~> lÝxð§Ÿ ÈÖÊ?"Rή]°a|ý5lÛf¸_~9Üpôëááо=´mkÝ¢‚œµ·F‡ÃIL\‡/qœ`ŽÑ” BÈ$„L:/`ÊØË'éé•uÑc ¬Ëœ0ŽÐ–#4'f¥ ÅŽÑ{änþû24l‹Ã•ÇÚµ{Ú)+>Uåç䎸ì©è×^±b+V¬ //„„ý=zœsçNhjPâBÇŽ£ÿþdee±eËÚµkçðþÚØF¤f)pØ>œ_~±qþ±ÇàÕW­©~ý\ HM•“Û·ÃÆÖÿG;vÀÙ³Ös‹uA‡öí¡MëFs—¿5jd-{ôñáöÑSHúßkáK>ø“O 9Å·³„_ù çGÙ3pò¤uźS§Îÿ=+ ŽãОæûÓˆS…›Y~¾„t ‡hÖìü­yóò ¡Óµ#+ýá†3ÊÈ©j2áê¸.sE¿vù™0 ‡ÆkÕ ÄEΜ9ÃàÁƒùå—_ظq#]»v½ä5J@DjÇ3 é4jt-Z´(÷‹ïý:Ðpòdë’»S¦¸;d‘šÉ0¬ÍÕû÷CRÒù?°îK‘•e½Uïë\v™5yiØÐzkÔÈz fCÜ÷lü±'ÇèÆq‚8F0™„AS²ø™ VÛ]9ëÂArJÊqNг†Ý7\ÌÌdÂÕÊÏðì4^«õ€¸È]wÝÅŽ;¸÷Þ{Ù»w/{÷î-=× AFŒabt"âökŒ3€Û.ÚÌHxß7ÿHÎí·xÁj1"R ‹u÷ë°0kˆ-†ÙÙç“‘ÂB(*"jÌüú>øPD>þ¥ó9Ð*ü>6ïXeM>4À÷ÌÌäÑ>Q$'ßÉÅ3ÏØ\BÖ^ÿ Á¨Õ î‰÷ðHe)q‘~ø‹ÅÂÒ¥KYºti¹s­[·V"R Ø_óI`>e“œfÏñ«Ñ’Wë^Áâ n¦%"Nb±œŸ¹(³çÎe7ô%þW°½ÂS¿ïÛÕzÍ%Te Yû Yt¾µ“¨]Áñ²½RYJ@\ä×_5;1™ýÕbÒ9y²ìÀÁ`)÷F*=ˆÇÿ»ÇM‹Y¤6³UBÔ¥KkZ·žÎ/PÝÍï*;C`ÿS÷h ˜5 ©zLR1Ž—í•ÊR""âB¶: çäÉó¿ÄãÿÍGÜÆ*’¸špm€%âvŽ–ÛmÝú ÆŽ]Ξ=ÕÛü®²ìê¼OÆàŠ+ÂÜSmåxÙ^©,% ""nVö“´Á|É‹L禳†ÛÐX"ÎQÙ†hGûö80WÙ^6Û…êÌW„¹=¦Úª|I­6†­®êíÎ#""•f­ÏÞÎ |Í:†óCx†’MÈT¿-R]`$®Æ IDATôéElì(Ö“˜¸Ž„„‰EŸ>Qdff^tµÜ©—GìU|Þ½JÞ+lÓ{…;•”ÔN˜°Š6m¦šŽ×S""âf11ÑÜö Ê6úp«)Ĉ+®ßŽ6;D¯V~6£döÀ:›‘œ<—èè‹û*7ûŸw¯˜˜hÚµ›Äaíñ øO½W˜¡¤¤våÊWÌÅë©KDLU“×·'dï^Þ9ñ {Ú1½¡-‹¢T¿-âDŽ—LíE|üœ‹Ž:.w2§4²*+g‰x% "bGMŸ›7GÙÝ9׫mÜÆaéߟÎkײ»n]³#ñjö6ê«ìl†ã&cóÊjòÞR{©KDLS•2 ¯Vœ|pýõ°v-(ù©{½§NÕÅ:›a‹íÙ •;‰¸1'6}ºÌ_œO>Ö¬Qò!âö?Ä(Ù¨ÏÛ³e›Œ#"" NDD$&¬ª™³±"&R –ˆ˜Æ›>/¥Ò=+EE0>̘C†ÀêÕJ>DœÄÙõU¶Ü©6ö°‰8ƒ1'6}:Réž•'`üxøøcxê)˜=üô¶+â,UÙ¨/:ú5§$ µ²‡MÄIô›PDLã©MŸö8Ú¨¬¤g¥ôÓÓ]»`ôh8yÒš€Üz« ‹Ôl•ݨϙIC¥ÞD¤õ€ˆˆi¼­é³B=+†‹A߾Ф ìÞ­äCÄE*»QŸ3¾¨U=l"N¦DDLãmMŸ—êY¹<'ƃ„ûîƒ-[ uk7F(R»TöC g& ÞØÃ&â)T‚%"¦ªÊ÷f5~Ú+÷¨CSy™™¾‚“aùrk""".UÙúœ™4x[›ˆ'Q""^ÅÌÆÏ‹{V F°–—xœ–ä««¯å¦-ÿ…Ë/wÉב‹UæC g& ÞÖÃ&âIT‚%"^ÅÌÍ Ë–{tbÿåFÖpûi­Wv§Ûן*ùñ`•íqÄÛzØD<‰f@DÄ«Ø_÷¬5Üs*üX•-å iÒ„ó§ð¿)÷pí¡ýüæ_‡šwçÜàëY0}’öñp11ÑlÞErò\¬½ ÛÄ–Ê–‰ÈyJ@¤FÓ&Q5³j¸+UÊ•“+VÀ‚4Þ³‡n:Á’%´?ž×´€ˆ—pvÒP•6Q"5˜…5“³j¸+´†ÿÓ‚·Þ².«›™i]N÷¥—à÷¿‹¥r¥AŠˆGPÒ b>õ€Hef¯€¸Ž³j¸í-ÇÎ/ÌàK¢ß[íÛÃË/CTüò‹uCÁ!CÊ%ŽËJûˆˆˆ”¥©±œÙ+P[9*aL)osV wI)—…\Ë÷ c£YI~ä4õøÆ¿ßY C‡Âe—Uè±lÓ~"""e)‘KƒÂêqT¶qãmX,¾8ðâEç\]ÞVíî¢"øñG&žÜOGFpßИ“dSŸu çYžã3þ@Û+ï`بQŠIûˆˆˆTœ©±¼mPèi óŽúlüÉæ9wô!/ï : «Ðs¡ýDDD*N ˆÔXÞ4(ôĆyÇ%l™@;çL*oËÍ…¤$HH€½{á»ï¬ Gjªõ|Pôè? ƒ‘Õ®“'9ùFÊ—r}ŠŸßãìß[|üÒÏ…3—ö©é”€HåMƒBO\EÉq ›Ÿƒs¶ËÛœ2ÃcÖýû!9Ùšpüü³5éHN†ÂâY­¦MáÚkaüxèÞÝzkÕª\óxØ,åÊË;Ãþý˨Ìs¡ýDDD*N ˆxœª Tí]óñǯ³Ôã…žØ0︄­ÀÁ¹tÒÓ+W¾tÍ5­Ø¾}ï¥{F ²²àÀ8xðüŸ¿þjM0’“áܹó_êÊ+¡cG¸åèØ‘¡¡Ì\þ9÷üJÁ_üR~ gZ>1b¹8V[¥\: Ãö¬8z.´´§ˆˆHÅ(R•R$Ç×<ìû}8žm8FJJj…ûœÅq [ô½àxp'O.âäɲåK¿s×Ђ$®äÐù[rÒºö$¤q=øí7ÈÎ.}´<_?R|ëpØï2Rêԅν¸eÊ$uïmÚ@`àù¯\îuP±Ò)[´xˆˆˆk)â¸é úöC@@½rñœœ+_ª,û³ ÀXNú' UTW…£¶Ö­“¿pàÀ @/,@é´`2-I?ЂOhÁaZp˜+ØJ Öq9Yå¾F&M8Ä•=yFƒ–-¡ukŽ7hÀÐçpö†< œ-‚ñ´ûÛ âân"¤LòÎ+có¶Å DDD¼ZÂÓVX²Ç~)R0Ÿýû­Þ²qÿIÀ+vÑ;öû°?Û0˜‹ÉUHHqÛÞã¹Ggq(~:Á¹y„çèÚ¼!îí€Ï‘#¤œÅeY'hR‹?Fñ•(ć#4ç0-Há 6Ò„(NG¬ÇR¸‚ê6œ_.,ýÚO|’øƒó+õ};«ŒÍ›/ñFJ@jO\aÉûå/óÛŸnçç‡Ù¹Æzo(™±?Û°—ô†?n]!*-ÍîŸ!©©,ÌË+m^(8aa´>BC¡E hÑ‚QÌgÛoï“ASŠ(ûsDSÑY…ª$Î*ò¦Å DDD¼‘ZÀWX²Ç~ù‹£©¿kÀ[Jfì­¢”’’éSöÕ99LœødéÌ–¿oƒ»´æoCPNŽ5™(›X”üýȸ0± ‚°0kBZÿ]r¬äV§ŽÍhöýe1GhÎÅÏEð-¶—î½xV¡*É„³J§´¢•ˆˆˆk)©Ì^a©2å_öË_ H;a»!ÜQ2ã¬ò6{+2%$øPDS2%PÒ#•P’hq žæÿ;ǃäJÍ9‚ÿÏðþ?Ï?H“&ÖÄ!, ®¾ :ŸT”üÙ¼y¹†îª²ÿüE#°ÎdõáR³ UI&—N}V©µ¢•ˆˆˆë(ñB•𚹪Oe˿엿dc@úþþÉÏ_JuKf*û³­vy[~>¤§ŸŸ¸`¶bCú.hJ3ŽãKQéeEXÈ iEW’JöÎçÜD*aÅ)ÊQúÙÁKï¼ þþ«Ëþó·ŸÖ­}èÝû=öìyþ’³ Uéðÿµ+¿± ˆˆˆ¸ŽÅ0 ãÒwwؽ{7Ý»wg×®]tëÖÍæ}ì-5 ñ´k7Ãæ`Êú)úzì}šÉÞ½œûÍ›8ñIbcGa{ Ç„ «.ú¤ÙV`ÝîïØ.á‰cìØw ¼¬Z³UùÙÚûþüÉ£9˜|ËJfÞ7ÚvTZdfZû1JøøXg#ŠËÎ]~9o¬ßÌÞwJ_ÒhAÍHç>þŸÿf<¯Ž8cF(33“>}ì÷aØKªòÚ±õ±§"ã5qL3 ^¦*ýf®êS•ò/[å/—¾òJõ?Å®ÐÏöõYåf+Úú ÏãK(‹Ê•G5á˜õòO€O–ƒŸ_iR‘ÄÖØk4âHÓæ éµyäùhštì¾çg¤êãŠÕÿ‹_BA/ý ùCÏ6onMr²sf¶œ¹Jš3Ê—ªÚ‡áÌEDDÄ5”€x™ª èÍ\ÕÇYå_.o >}š#›wp=·ÊûÅ=eû-Ò¸â­$ˆ_î²Ç->¤r¶´ô)‘ðâ«BI%Œ:­þκBp0øø”™eYD¹Y–Cñ¼›0Åæ'ûöôÖuåú$l%Þ¥Ü͜Շ¡EDD<‹/S•Á”™«ú8sS·JH ú«¶­Ò§ ÿžÍ§ à —•K$~ä*Nøg‘Ü”#–º¯ãÏ•½~Ç;!1és»ß_D½W ÌÏ×™+’UvfË~¿Šu—roX%­*´± ˆˆˆgQâe.5˜‚³å–e-[JcÆ Ò™+•2 8qÂv"qá±³gË_Û Aù%e»w/ýûħ_%îà2Òã 9ÿ3¶îFNî*H-3kñ¿xêןLe–—uæŠdŽw*’œœ®å~¶yygHN¶•hµåcòDÚXPDDij(ñ2ŽSŸ’––YÜí¥4•Y™ÈB ÿ%ã‹a¼;ÿqŸ=k?ÉÈÍ-ÿ…7>¿¤l«VлwùefKnõëÛö‹ïù%ö$Ðñ‚öw#?}úE4x€ìì’’*ÇåmÎ,²7³e-©òå½÷î¢|3ýl¿njv‰’6ñ,J@¼Œ£ÁTýúO‘½O*¥ !nËræ<:‹”O”›O¨qŽ ÜlŽw%ŒJ{-šs„ò!;ÖúÁÁç‰ðp¸á†òIEX˜uÕ¨ºu+—­^ˆ.]ZÓºõtxŠïF~3¡¡ÿǨQ«*TÞæìr [ei'>YÜÏqáë ¾¯[³K”´± ˆˆˆgQâ"›6mbþüù|ÿý÷dffÒ°aC:wîÌO<ÁСC«ü¸ŽSÛ¶…‘˜èÆÕ~ ¬{XØ**3k’žÎ? Ë b-Žúø“B#R ã':ó_n,í·H£õ¯z†/~úÔá®ÛUåhïŽÖ­Ÿ`ìØåìÙSñÝÈá2—õmT…ý2/{‰Fåv)÷FÚXPDDÄs(q‘¤¤$üüüxðÁiÞ¼9ÇçwÞaذa¼ýöÛÜu×]U~l{ƒ©†SÙR[3}ºw`úøa¼÷KÉܳà¼|š#âò@zµlFcǬÉÅ%ö° [7ÛeP͚ѯó(×ÙýÃ}ê»$ùÇàÌcàÀUåöÏ(ÙÜ3î(²_æT—r‘êPâ"“&MbÒ¤IåŽ=ôÐC´mÛ–%K–T+±çRå=—ùäÁ¯¿–ÎNd'&²rÞbnÈêÌX åu‹„Oàí—™Y|e>~¡9©GØtøúFÝÛo/_j]íÉ·býf®LTÙFpgÎZ¸£ÈþÏ6ˆfS>ѨÜ.å""""Õ¡ÄêÖ­K“&Mð÷÷¯Ðý+¼9Ü™3–ÆÝ-ð}Â\B©oc‹.ß— mÛ–^èãËТÒ8N*alb@qÔfÒ¸‰4“JÇÆÀÇzÑÙ8&XV±læL.T™ÍìÌ\™¨²àΞµpu9ýŸmðW]õ4õ.xŽV+Ñ·Pâb§N"//£GòÖ[o‘˜˜HLŒ½OßÏËHOç}ÆóëC„2”PŽÆaB¾#negnþ]{23K÷°ø ïs–:¤Ñ¢8™e/Aäåò§¿Í¥a‡¥3×^ÿG~ÞÀŃñaÀTÇÁ^/‰£¾ [+p™¹2Qeg_¼­‰ÙñÏv>Û¶}èq1‹ˆˆHí¡ÄÅî¸ãþóŸÿP¯^=>øàƒK7¡A£#Gø¾ Ø\z8›úÖ¤ât v§£÷ÈaõX àÉÙÿ$~ÇÏÅå³Åå×hxÁ ³ ÐÛƒðÊ/ËZÙ öÌÔWeöÅ›š˜½-a‘ÚÅbe»ˆÅÃ0Ƚpß ;Ëýû‡~àèÑ£üöÛo,Z´ˆ={ö°nÝ:n¼ñÆ‹®Ý½{7Ý»wg×ÿÈÿ³“ïÒg’FXéêPg(Ù∈ˆÈrÒUam®^í[Çímûå¼x%33“>}ìϾ˜±_Šˆˆˆx‡ÒñÚ®]tëÖÍìp¼’f@*à›o¾aðàÁºï¾}û/ý÷ï~÷»Ò¿ß}÷ÝtëÖ‡~˜ÄÄDû2u*K·ÿÄôqvîàœÍáìÏ8Z–ÕöîåÖüÌ;6³Ó ˆˆˆˆy”€T@ÇŽ‰­Ð}›7on÷œ¿¿?‘‘‘¼ð deeѸqc›÷›:u*©©¿ÃËW|g­e¿W`~~)(XŠ59±¿{yIŸ‡¿ÿ'xÓfvÞTR%"""æX±b+V¬(w,++ˤhj% ЬY3î¹ç§<Ö¹sçðññ±{Ÿ ðê«+ˆ…+W‰r4½š˜˜¥ÄÇÏ-=ž—w†ýû—a«Ï#?¿ôuY¼""""î4nÜ8Æ+_‘RR‚%U§ÉÈÈ iÓ¦åŽeeeÑ¥K.¿ür~øá‡‹®)[Sxå•Wz\Ÿ‚ã>tüý’Ÿ¿O‰WDDDÄÙÔR}šq‘¡C‡rå•WÒ³gOš6mÊo¿ýƲeËÈÌ̬P9—'ö)8Þ?£W^Ù’VyL¼f«Ì¾(""""µ…™4iï½÷ , ++‹àà`ú÷ïÏ_þò— gËžÖ§p©ý3ý<*^3Uv_‘ÚÂ~#‚TËC=ĦM›ÈÈÈ //´´4>üðC¯žª³öql·sV}e•ߥ$a+¿/ŠˆˆˆHm¤D*,&&švíf`m6/*>ZÄï^m^p&>>k/Œ-½ŠÏ‹ˆˆˆÔ>*Á’ óľOå¸_ƳöEq'% R)žÖ—â©.Õ/ãiû¢ˆˆˆˆ¸‹J°D\@ý2""""¶)qõˈˆˆˆØ¦,P¿ŒˆˆˆˆmJ@<ÐèÑS¸á†>Ú°ÎË©_FDDDäb*Áò@¿þº€ØØQôéEff¦Ùለˆˆˆ8¤ ëDDDD¤fRâÑ´aˆˆˆˆÔ,J@<š6¬‘šE ˆGÓ†u""""R³(ñhÚ°NDDDDj-Ãë‘ÊnX÷¾ÙÁˆˆˆˆˆ8f@J¿~ý¸í¶Û*ýõ~þùçJ_#Þ)++‹Ý»w›†¸‰žïÚEÏwí¢ç»öÐ8­ú,†:£/)==Ï?ÿ¼B÷9r$;wîdÈ!¬ZµŠk¯½¶ô\ÿþý¹úê«ù÷¿ÿMPP 4(wmZZ=zô 55Õ©ñ‹ˆˆˆˆó„……±sçNBCCÍÅ+)qØØXî½÷^‡÷Y°`S¦L¹èxZZiii® MDDDDª)44TÉG5(qC‡ñÝwß•;f÷ß?­[·æé§Ÿ¦sçδmÛÖ¤EDDDDÌ¡ÄZ·nM—.]X·nÙ¡ˆˆˆˆˆ˜BËðº‘Åb1;SiDDDDDDÜF3 """""â6J@<@nn.Ó§O',,ŒË.»ŒÞ½{óÅ_˜–¸ÀŽ;øóŸÿL§N¨_¿>­Zµ"**Ф¤$³C7™;w.>>>\sÍ5f‡".²{÷n†Npp0õêÕãšk®áÕW_5;,q;w2bĨW¯;vdöìÙœ;wÎìФΜ9óÏ>ËÍ7ßLPP>>>¼ùæ›6ïûóÏ?sóÍ7Ó A‚ƒƒ¹çž{8zô¨›#ö>*ÁòãÆã£>bÚ´i´oßžeË–±cÇ6nÜH¿~ýÌOœhôèÑÄÅÅ1f̺téBZZ .äôéÓ|ûí·têÔÉìÅ…RRRèС>>>´iÓ†={ö˜’8Ùþó"##éÞ½;QQQÔ¯_Ÿýû÷c/¼ð‚Ùá‰ýøã\wÝu„……ñÀĶmÛˆeøðá¬Y³Æì¥Š8@Û¶miÕªmÚ´á믿&66–{î¹§ÜýRRRèÚµ+—_~9S¦L!;;›ùóçÓ²eKâããñ÷÷7é;ð†˜jûöí†Åb1^zé¥Òc999ÆUW]eôíÛ×ÄÈĶmÛfäçç—;–””dwß}·IQ‰»DEEC† 1htîÜÙìpÄÉNž}úàççWîØUW]EDDûöí3)*q‡M›6ñÑG±`Á ÃЪx5ÐòåËÉÈÈ`îܹ€µŒ£¨¨Èä¨ÄUêÖ­ @Ó¦MËoÞ¼9¾¾¾˜–8A@@@éój8(ú裸õÖ[¹âŠ+Jýþ÷¿'<<œ>øÀåqz3% &ûî»ï§~ýúåŽ_wÝu|ÿý÷f„%ndééé4iÒÄìPÄE yä‘G˜ø ,`äÈ‘äåå±xñbfÍšÅUW]er”â,ééé :€7Þxƒàà`Ö¯_ÏܹsiÖ¬?ü°ÉŠ+•ŒÏ.5†Sb›“Õ­[׿Ô|NNNéy©™Ž9°aøüòËY¹r¥zj¨gžy†&MšðÈ#˜ЏXÉûõ¸qãÊ7n‹/æÛo¿URƒÌž=›Ã‡“˜˜HXX`M8‹ŠŠ˜>}:ãÆ#((Èä(ÅUJþ¿k W5ê1Yhh¨Í2«’©½’75©YNž<ÉСC9uêŸ}öÍ›77;$q¤¤$Þxã yäRRR8pà ''‡¼¼<<ȉ'ÌSœ¤äýºY³f厗4³ê¹®Y¶lÙB×®]/ú=ÉÙ³gÕÃYÕ”^•Œ×ÊJKK#88X³(1Y×®]ILL$;;»ÜñíÛ·píµ×š–¸PNN‘‘‘ìß¿Ÿõë×sõÕW›’¸ÈáÇ)**bÊ”)´mÛ¶ôObb"mÚ´aöìÙf‡)NRÒŒš’’RîxɇL!!!nI\'??ŸÂÂB›Ç Ü’¸Q‹- aÇŽ‹×øí”€˜lôèѲdÉ’Òc¹¹¹,[¶ŒÞ½{Ó¢E £g+,,$**ŠíÛ·óá‡Ò«W/³CºæškX½z5kÖ¬)½­^½šN:ѪU+Ö¬YäI“ÌSœäŽ;îàßÿþw¹ãÿú׿ð÷÷gàÀ&D%®Ò­[7vïÞMRRR¹ã+V¬À××—.]º˜™¸Ë¨Q£X¿~}¹¾üòK’’’3fŒ‰‘y>í„¢X½z5Ó¦M£]»v¼ùæ›ìܹ“/¿ü’þýû›ž8ÑÔ©Syå•WˆŒŒ´ùæt÷Ýw›•¸ÛÀ9vì?þø£Ù¡ˆ“Ýwß},]º”;ðõ×_³råJf̘¡•îj˜={öлwo6lÈŸÿüg‚‚‚X¿~=Ÿ}ö“'OfñâÅf‡(Õ°páB²²²HMMeÑ¢EÜ~ûí¥³S¦L¡aÆ¥;¡7nܘG}”ììlæÍ›GË–-Ù±c‡J°Pârss™9s&ï¼ó'Nœàw¿û³gÏæÆo4;4q²Aƒ±iÓ&›Y,›ÓùRó 4ˆcÇŽ±gϳC'+((àùçŸgÙ²e¤¦¦Òºuk~øa¦L™bvhâñññ<ûì³lÛ¶œœÚ¶mËøñã‰ŽŽÆÇGE&Þ¬M›6ÖZÛJ­¿Š£*Dq ‚2"ø€²dC$ ð‘ŒóûãëQF€Œsßß{|Þ¯W^±‡äœ+ç>…\ç»"Ñh4*pA‚íƒÀ5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€8èóÏ?×å—_®ôôtÕ¨QCgžy¦zè!:tÈv4ÀŠH4ÚDË–-S=”žž®Ûn»MõêÕÓüùóõâ‹/jÈ!zë­·lG\—d;@P½òÊ+:räˆÞ}÷]yæ™’¤Ÿÿüç*))Ñ„ ´gÏÕ©SÇrJÀ]LÁrHJJŠ$)--í˜Û7n¬ÄÄDU©RÅF,À* ˆCF¥Fég?û™¾üòKmÞ¼Y¯¾úªÆ¯;ï¼óû‚„ k@´aà 4HkÖ¬ùþ¶ûï¿_üã-¦ìa ˆC¶oß®J’ž}öYÕ¯__Ó¦MÓÃ?¬FéŽ;î°œp# =z´^|ñE­Y³Féééßß>jÔ(MžÿüsJH1Ë!………*...õvI***:áÏòóó•——§—_~ùû­{lcÇŽÕ¸qãlÇ€K¸ÞáÂõ®wx|õÕWºîºë”ŸŸO© ˆCºuë¦×^{Mk×®U»ví¾¿=;;[‰‰‰êܹóI¿÷Ì3ÏT·nÝ܈ ËRSS¹Ö!Âõ®w¸p½²£€8ä׿þµÞxã wÞy=z´êÕ«§iÓ¦iÆŒºùæ›Õ¸qcÛ×Q@Ò¹sgÍ›7O>ø {ì1>|X­[·ÖŸþô'Ý{ï½¶ãVP@tÎ9çhúôé¶cžÁIè€EYYY¶#ÀE\ïpáz‡ ×(; `ÿ`… ×;\¸ÞáÂõÊŽÀ5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸†À5®¡€p €k( \Cà ×P@¸&ÉvºhTzã óßC‡J‘ˆÝ<ØÄ8h×.iøpiØ0ó1b„¹ €°¢€€CÞ_êØÑ|~õUó1gŽÔ©“¹ €0¢€€öí3#gœ!-_nFA†7ÿݾ½ùï}ûl§À}ÝxãJHH8éG~~¾íˆòÔSÒþýÒþ#¥§ÿp{zº4a‚)ãÇÛË€-,BwÐm·Ý¦~ýús[II‰n»í6µjÕJMš4±” €“”þö7馛¤fÍNüóæÍ¥o”þúWéŽ;¤êÕ]€5õêÕK½zõ:æ¶O>ùDÔµ×^k)§=û¬Yh~ß}'ÿšÿú/éùç¥çž“î¼Ó½lØÆ,—Mš4I‘HD#GŽ´€¾ýVúË_¤ë®“Z·>ù×µn-]{­ùÚo¿u/¶Q@\TXX¨É“'ëÇ?þ±Z´ha;¼ø¢”Ÿ/ýæ7§ÿÚßüFÊË“^zÉñXxÄE3gÎÔîÝ»™~T4*=ö˜Ùýª}ûÓýg˜¯}ì1ó½„ÄE“&MR•*U4|øpÛQ8`Å iýziÔ¨²ÏM7IëÖI+W:— /¡€¸dÿþýzûí·Õ¿Õ­[×v˜6MªQCºà‚²Ï…š]°¦Ms,žÂ.X.yë­·tèС2M¿;v¬RSS¹-++KYYYNÅÓ¦I}ûJÕª•ý{ªU3ß3mÚ©w͸/;;[ÙÙÙÇÜVPP`)MpP@\2qâDÕªUKC† 9í׎7Nݺus!€xÙ¹SúôS³oy ,Ýr‹Ùº·~ýøgTLio/^¼X™™™–S°\°cÇÍ™3GW^y¥ª•ç­Q¾1}ºTR" Tþï4È|ïôéñÏ€×P@\ðꫯª¸¸˜Ý¯€›6MêÑCjܸüßÛ¤‰Ô½;ë@á@qÁ¤I“Ô¨Q#]rÉ%¶£p@a¡4c†tÙe¿Ë.3÷QX¿\xÄóçÏW~~¾"‘ˆí(ðÉ'ÒÞ½•/ {öHÿû¿ñË€Q@ ’¦M“ÒÓ¥®]+~]»š©XLÃ*iÚ43‚Q™A΄sS§Æ/^D€JÈ˓֬‘úõ«ü}õëgî+?¿ò÷€WQ@ ,0Ÿ{÷®ü}Åî#vŸ*aÁ©ys³¤²š6•š5£€‚•°`Ô«Wüî¯W/  Ø( PA……ÒçŸÇ¿€,Z$Åï>ð TвeÒ¡Cñ/ ‡™û ˆ( PA HÉÉ•;ÿãxݺIIILÃ*hÁ©K)%%~÷™’bî“* TP¼ Ç°d¨€]»¤µk+ kÖ˜Ç h( PŸ}f>;U@$iáÂøß7¶Q@ ,6”ZµŠÿ}·n-5hÀ4,@0Q@ bë?"‘øßw$Â:@pQ@ œJJÌ,'¦_Åôêe£¤Ä¹ÇÀ ”ÓºuÒÞ½RÎ=Æ9çH{ö˜Ç H( PNK—šÏgŸíÜctîl>s": h( PNË–IiiæÃ)™Eî@ÐP@ œ–-ûa„ÂI;S@ÁC€rZºTêÔÉùÇéÔé‡é^ÊáÀiÃ÷ Èúõæ1 ”ÊR4êÞ¬hTZ¹ÒùÇÀ-(‡¥K¥„鬳œ¬³Î2‡2 $(‡eˤví¤”ç«zuóX,D ÊaÙ2wÖÄtêD Ê(uo¬˜ØNXѨ{ €“( PFÛ¶I»v¹³=¦sgiçNiûv÷'Q@ ŒbS¡Ü9ú±ð; ”ÑÒ¥RR«Vî=fëÖf1:;a‚‚e´l™Ô±£Ù†×- æ1ÊÈí°bØ $(ƒ¢"s"¹­²r¥É€ßQ@  Ö­“¾ýÖNéÜY:|ØdÀï( P_}e>Ÿu–û}æ™æóªUî?6ñF€2X½ZªSGJKsÿ±5’j×6ð; ”ÁêÕRûöR$âþcG"æ±) €  €@Ä ˆ-@PP@  ( ÄNcçNi÷nûd×.ó€ŸQ@à4b#¶ ÈÑYð+ œÆêÕf!xÛ¶ö2´kg2P@~G€ÓX½ZÊÈRRìeHI‘Z´ €ü§a{z ÑA@€Ó €?8…¢"iýzïuëL&üŠâ°Å‹kÈ!ª_¿¾jÔ¨¡N:éŸÿü§íXÊhãF©°Ð;¤°PÚ´Év*.Év€ ›5k–¬ÌÌL=ðÀªY³¦Ö­[§­[·ÚŽ Œ¼°oÌÑ[ñÚÜ‘ €Ê €8dïÞ½úéOªÁƒëõ×_·@­^-Õ¨!5mj;‰ÉP½ºÉt饶ÓP1LÁrȤI“ôõ×_ëᇖ$8p@%%%–S(¯U«¤ýÈœÁa[B‚ɲj•í$TÄ!sæÌQíÚµµyófµoß^µjÕR:uô‹_üBß~û­íxÊÈ+;`ŰÀï( Y»v­ŠŠŠtÅWhàÀzóÍ75jÔ(?^7Ýt“íxʈ@|±Ä!û÷ï×Áƒuûí·kܸq’¤+®¸BGŽÑÓO?­?þñjË*RÀÓ ¤¯¿ö^Ù¾]Ú³GªSÇvʇ¤¤¤H’²²²Ž¹=ö¿,Xàz&å㥰bŽÞ ?bÄ!éééZ¹r¥5jtÌíiii’¤o¾ùæ¤ß;vìX¥¦¦s[VVÖ e€³Ö®5ŸÛµ³›ãh?ú‘ù¼v­tÎ9v³@Ðegg+;;û˜Û ,¥  ˆCºwï®9sæhË–-jwÔo/yyy’¤† žô{ǧnݺ9žÀ©­_/¥¥IµjÙNòƒZµ¤† M6€³J{xñâÅÊÌÌ´”(˜‚åáÇK’þýïsûsÏ=§ääd]xá…R(õë¥6ml§8Q›6€1â.]ºhÔ¨QzþùçUTT¤óÏ?_óæÍÓ믿®ßþö·jܸ±íˆNƒ@üQ@4~üxµhÑB/¼ð‚¦L™¢–-[jܸqºóÎ;mGPë×K}ûÚNq¢6m¤÷ß·€Š¡€8())I<ð€xàÛQ”Óþýf»[¯Ž€lÛ&8 Õ¨a; åÃ(ņ æ³W ˆôCFü„¥ˆ­±ðraÀ( PŠõëÍô¦ïŽîñ”FL6 À( PŠØX‘ˆí$'ŠD¤Ö­) ¢€@)¼ºo [ñüŠ¥ €à §°PÊÉñ~ÉÉ‘ŠŠl' |( pœÜ\©¸Øû¤¨ÈdÀO( p/oÁÃV¼¿¢€ÀqÖ¯—’’¤-l'9¹-¤ÄD À( pœõ륌 SB¼*9Ùd¤€ü†ÇñúX1ì„ð# ‡€s( p”hTÚ°Á_$µ€²£€ÀQ¶o—ðGiÛÖdýúkÛI(; %6¥©m[»9Ê‚­x~D€£Ä~™oÝÚn޲ˆe¤€ü„GÙ¸QjÔHª^Ýv’Ó«QCJK3™ð eÓ&©U+Û)Ê®U+“¿ €ÀQ6n”Z¶´¢ìZ¶dà/8 # 8‹ß),”6oößÈæÍRQ‘í$” ¾³y³TRâ¿âb“? €ÀwbS™ü6"1 àøÎÆR$"µha;IÙed˜Ì,Dø¾³i“Ô´©Tµªí$eWµª”žÎÀ?( ð¿mÁÃV¼?¡€Àwü¶o [ñü„ßaçQ@@ÒáÃR^žG@òò¤o¿µ€Ó£€€¤Ü\óÙ¯# Ñè?^Fý0…ɯ# Ó°þ@™E܉‰R³f¶“”_³fRB Ñþ@™ÑƒæÍ¥¤$ÛIÊ/9Ùdgà·àa+^€_P@@þÝ‚7†­x~A™_Þý>Bø@è8 íØáÿ¯¿–´€S£€½ØÚ ¿€H¬x@èÅ~i÷ûˆDx@èmÜh¶²MO·¤âÒÓÍÏÀ:€×Q@„Þ¦MRF†9Ìϯ¥-xŸÿ¹€øÈÉ1Äï22ÌÏ€—Q@„^n®=ð»-ÌÏ€—Q@„# ¸‡ Ô–¶oNÙ¶ÍüLxÄAóæÍSBBB© .´€~˜²”"I›7ÛÍÀ©$ÙwÝu—zôèqÌmmÚ´±”ÀÑbS–‚T@rr¤víìfàd( .8ï¼ótÕUWÙŽ 99R$"5kf;IåÅ~Ö¼Œ)X.ˆF£Ú·oŸŠŠŠlGpœÜ\©I©JÛI*¯jUó³°ÀË( .¸é¦›T§N¥¤¤¨OŸ>ú¿ÿû?Û‘|'(;`ŰÀ똂堪U«êꫯ֠AƒÔ A­X±Býë_uÞyçiþüùêÒ¥‹íˆ@èQ@pÄA½{÷VïÞ½¿ÿß—]v™®¾újuîÜY¿ùÍo4}út‹éHæ—õ^½l§ˆŸŒ ‰Mö^Æ,—µiÓF—_~¹æÎ«h4j;jÅÅÒ–-Á8=¦E ³ oq±í$”Ž š5k¦#GŽèÀªY³æ >vìX¥¦¦s[VV–²²²ÜŠ„B~¾TT¼)XEEæ@¦Mm§ËÎÎVvvö1·XJ 6lØ ”””Rˇ$7Nݺus9>A:$æè³@( P9¥½¼xñbeffZJ LÁrÐŽ;N¸íË/¿Ô;ï¼£~ýúYHàh±¤)XG¼ˆ1BÕ«WWïÞ½•––¦•+Wê™gžQÍš5õç?ÿÙv< ôrr¤ÔT©vmÛIâ§vm©N À»( ºòÊ+5qâD=þøãÚ»w¯ÒÒÒtõÕWëÁTëÖ­mÇB/h[ðư/ÀË( 3fŒÆŒc;€“ÈÍ ná4t€W±@h1€û( B) ~á¨!€Q@„ÒîÝÒÁÚ+¦E iÿ~é›ol'àD¡Ä3@bØŠàe¡[¤äÂBt€Q@„RNŽT­š”–f;Iü¥¥IU«2ð&¶áJ99f­D$b;Iü%$˜ŸâqHo¿--Zd>¶o—V¯6Œ ”b$¨( Jo½%Ýu—´y³Ô¦Ô½»4bå@(P@„RNŽÔ¥‹íÎÉÈ–.µ'غUºí6iÚ4iÐ iÞ<©ukÛ©ÀU¼Õ ”‚zH ‡zP4*eeI‹Ko¼aJå@Q@„ÎÁƒÒÎÁ/ ;vH‡ÙN‚ïE"Ò¿ÿ-ÍŸ/]uUù 9"=ü°tø°sùÀ%¡ä-xc؊ףڵ«Ø oÅ S@®¼’À÷( B'65)è‹Ð%¦aF×®ÒÔ©ÒܹÒ/i; T @èää˜Í†š5³Ä9Íš™>¹øbiÜ8iüx³}/ø@èääHééRr²í$ΩRÅüŒ€¹õViÈég?“òóm§€ ¡€ÜÜ`¯ÿˆÉÈ` HàD"ÒsÏ™ö|à RI‰íDPn¡ô-xc؊ע»î’^{Í™ûnØPš0Aš=[ú׿œy p@èýôNC·dÑ"é‰'¤Ý»{Œ¾}ÍZþý{ p'¡•¢"suXF@¶l1?sÛ»#5»Tuê$ýüçÎ>Ö­·:{ÿàþI*[·JÅÅá) ÅÅR^^8F|<á7¤ÿý_iÖ,)1Ñvð$¦`•0BÃa„.;|Xº÷^éÒKÍ)@©( B% ‡Æp¡Ëžx´½Ç³< Trr¤zõ¤š5m'q^­ZRݺWìÛ'ýùÏf]Æ™gÚNžF*aÙ‚7†­x]²~½Ô tß}¶“€çQ@„ ŽèÒEZ½Úîܾü|éÙgí=>”@¨„åôNCwQ$b÷ñçΕn¹EZ²Än8 €ÐˆFÃ;ÚNÇ .µnmÖ¢€‡Q@„ÆÎÒ¡CáØ+¦E éàAi×.ÛIฤ$é׿–^]Z»Öv8) €Ðˆ­…ÛˆÄ:иñF©aC¶ài¡AAàU«&Ýq‡ôòËRAí4P* €ÐÈÉ‘RRÌn©aѰ¡ù”"?ÿ¹TX(M˜`; ”Š 4rsÍšÛ›¹)1?3;aÅÙ®]Ò…JË—ÛNr¢&M¤+®Æg÷ž”d;¸%l;`Åpˆ^xAúôS©Q#ÛIJwÿýÒŽ¶S@©( B#'GêÞÝv ÷edH‹ÛN %%ftaØ03ÇÍ‹Î>Ûv8)¦` F@³gKë×K·ßn; ø@(ìß/íÞÞ²k—tà€í$ñÔSR§NÒ¹çÚN¾D ±EØa:„0&ö3³=òó¥©S¥Ûn ×nG¡Æ3@b8 $Ž&M’’“¥¬,ÛIÀ·( B!'GJL”š6µÄ}M›J ¸xí5iÈ©n]ÛIÀ·Ø @(äæš_Ä“Bø·^r²ùÙ™‚³fùó„ñÇM ­RÅv`@8ää„sýGL‹Œ€ÄEíÚþ{!íÞ-¥§Ko¾i; H¢€‰°nÁÃV¼!V¯žtæ™Ò„ ¶“€$ € €P@Bí§?•fΔ¶m³( ‚¯°PÊË£€lÝ*ÙN+†7  &M²( ‚oëV©¤„RRbž „Pݺf÷.¦að €À‹M=òÛÚáxŠýìLà ±‘#¥/¿”V­²@ÈQ@\ôðÃ+!!A:u² ‡VʺuR4j;Eå (Õ¬iÎ2‹( .Ù²e‹þô§?©FŠD"¶ã¡’›+5h Õ¨a;‰=5jHõësH¹íÙ#uè =óŒí$•W­štùåÒÒ¥¶“¹Éeǯ~õ+{î¹***ÒÎ;mÇB%ì;`ŰV¼óŽtäˆt饶“ÄÇsÏ™"1â‚>úHo¼ñ†Æ§h4ÊರBÃa„0y²ôãKÍšÙN”@qXqq±ÆŒ£›o¾Y:t°%F@ F@Ê© Àœ1|¸í$(LÁrØøñã•››«>øÀv ”¢Q³îbžƒÜ\óœ0[o¿mN:ÔvF@´k×.=ðÀzàT¿~}Ûq€PÚ±C:|˜"™çàÐ!‰ehe4y²ô“ŸHM›ÚNBqÐý÷߯ h̘1¶£¡Å¼?à,røæiöliØ0ÛI p˜‚åµk×êÙgŸÕ¸qã´eË–ïo?|ø°Ž9¢œœÕ®][uëÖ=á{ÇŽ«ÔÔÔcnËÊÊRVV–ã¹ ‰ý²Íȱgtïn7‹ç­Ycö-¾ê*ÛIX”­ìììcn+((°”&8( Ùºu«JJJtçwêÎ;ï<áÏ[µj¥±cÇêïÿû 6nÜ8uëÖ͘@àåæJÕ«›ß%îA)%…³@ʤgO)//Ø‹evìòó¥Îm'<«´7€/^¬ÌÌLK‰‚âN:iÊ”)Çl¹Fuÿý÷kÿþýúÇ?þ¡6mÚXL„Cl¬ ÿYV‘;a•KÐ_4·ß.mÙ"-X`; €¡€8¤~ýúºüòËO¸ýñÇ—$ 2ÄíH@(±ï±( øÞWH×_oFzÒÓm§",BwY$á BÀEBx,#Ä÷.½TJL4§½€‹( .›;w®–.]j;œr¬ØY €êÖ•.¼Pš2Åv!CXû÷K»wS@Ž–‘!íÚ%8`; <áŠ+¤>0§¾€K( ‹-xOtôV¼€.¿Üœö>}ºí$B„ °8„ðDFx Ѩ4k–tø°í$îiÞ\ÊÌ”ÞzËv!BX¹¹f-üü iS󜰤˗KýûKsçÚNâ®aäâbÛ)„Û𬜩Y3)‰¿é¾—”dJ# ¥˜:UªYSêÓÇvwÝwŸíB†Å ¥ã,“x÷]©_?©jUÛI Ð( ‹3@JÇY ¥Ø¹SúôSs6ÀQÅ ¥ã,RLŸn¡d; @ JyyÒddH[·šç%– IDATßy÷]©{w©qcÛI ð( iË©¤„RšŒ óÜlÝj;‰GJ3fH—]f; „@ qáÉqáqòò¤V­( à6§H±5Í›ÛÍáE±ç„u ßÉÈ–,±Â–-3Åœu–í$Œ”“#5l(U¯n;‰÷Ô¨!5hÀJqýõÒ#ØN à( ‰3@N³@PªK/5;‚q2:Q@äÔ( (Õe—I»vIŸ}f; €£€¤Ü\!<•-X‚RœsŽT·®4s¦í$Œ p¢Q!<Øa„Ѩí$ð”ÄD©o_ GQ@Î×_K‡S@N%#C:tHÚ±ÃvxNÿþÒÂ…f*8€ p8äô8 DÒ¢EœÆXšþýÍÐØœ9¶“( €À‰­m` ÈÉÅž›P¯5Júýïm§ðž¦M¥>}¤={l'PD prrÌYõêÙNâ]õë›3RB;²u«´|¹tÿý¶“xÓûïÛN À8±-x#ÛI¼+ ùV¼3gš'á’Kl'€Ð¡€Î)›P3Ì–³õëÛN¡C8lÁ[6±­xC§¨È,°îßßv% €ÀÉÉazYddH›6ÙNaÁ¢EÒ7ßHØN¡D({ö˜ß-[µ²ÄûZ¶4ÏÕÞ½¶“¸læL)5UêÑÃv% €@‰½£ß²¥Íþ{ŽB7 ²oŸ4dˆ”ÄF`@ P@Ê.´äo“^zÉv 8|XúðCÛ) @ lÚ$U«&5jd;‰÷5nlž«Ð”݌҅Jë×ÛN @( eÓ&óÎ>g€œ^ì, NªO3UmæLÛI@ lÜÈô«òhÙÒœVÿþÒþýÒüù¶“ €À((0ç€P@Ê®eKó¼ØNÏêÒEJKc€¸¡€ŒØ;ùBXv±ç*'ÇnÇ:$-^,•”ØNâ? R¿~fG,ˆ €Àà ò ÍY sçJ™™ÒÚµ¶“øÓ€Rq±)rPI±q£”’"5lh;‰¤¥™³@¿ÖŒfÏáýÈv9RZºÔü *‰ 08¤ü"‘,DŸ=ÛL#âÅQ1}l'ˆ ¢QóK4;`•_«V/ ³gKݺIõëÛN@@|ó´w/# Ѳ¥9?å›ol'q@4jF@˜~žAlÁ[qÞŠ7/ÏœcqÉ%¶“¾“d;ĤâŽ. ]»ÚL…MM ‰Fm' ŽíÛÍŽMšØNÀ§›6IÕ«K ØNâ? šã9"™è üsѨYOóøã¶“ð1þFœRq¡9 •‰H_lö@Q@´bÅ 6LmÚ´Q5T¿~}{8q¢íh@àlÜÈX•ѪUNCG|ôë'}ñ…™Š@qPnn®öï߯o¼QO<ñ„þð‡?(99Y×_½~øaÛñ€@á Êae[Ðÿþûvsð-¡;hàÀ8pà1·ÝqÇÊÌÌÔ3Ï<£ßýîw–’Á;ä†l'ñ¯–-¥ ÌsÉ46œRãÆRçÎÒ¬YÒÈ‘¶Óð!F@\– fÍš)99Ùv 0ví’öïg¤2Zµ2Ïáîݶ“Àúö5ë@Ø] @P@\pðàAíܹSëׯ×ã?®™3gêÞ{ïµ Œ Ìç6mìæð³Ö­ÍçØsé{_-DqÁÝwß­´´4µk×N÷ÝwŸžxâ ÝrË-¶cû¥9öK4Ê/p䤞=m§®óΓêÔ¡€¨Ö€¸à—¿ü¥†®¼¼Aàkø¢€ Ü.¸À ŸÍžm; Ÿ €ð­hTZ¿žO”[ÍšfdÖ,ÛIø€o}ó´w¯Ôª•í$ÁѪ•TP`ž[ Ìúõ“æÎõù!2ÜBà[lÁGoÅ ”Yß¾ÒþýÒ‚¶“ð ߢ€ÄŸo Èþý¶„[·nR½z¬P&¾µaƒT§ŽT·®í$ÁQ¯žÙÅÖW$•Î:KzäÛIÂ+1QºøbiáBÛIø;çð­ØX‘ˆí$Á‰øp!úš5fس϶$Üž~Ú¼#§Aà[lÁë ß9sÌ6°çŸo;I¸1  Œ˜‚À·( Îð]™=[êÝÛl ð< _*,”rs) NhÝZÊÉ‘ŠŠl')ƒ¢"³ýkß¾¶“ʈÀ—rs¥âb ˆZ·6Ïmn®í$e°p¡9 ¦_?ÛIeDàKëÖ™ÏíÚÙÍD±ç4ö{Ú¬YfíAf¦í$€2¢€ð¥uë̺ãæÍm' ž-¤¤$ŸyóÌö¯‰‰¶“ʈ]°øÒÚµR«VæeÄWR’yn×®µ¤ ¦O—¾ùÆv ïðaóÅ@)àKëÖ1ýÊIíÚùd$%EJO·G[µÊœhÉ¡„N‚À—Ö­“Ú¶µ"¸Ú¶õI÷´m+U­jÖç@)( |§¨ÈœSÁˆsÚµ3Ïqq±í$ð¤$©Os> ”‚Àw6o6ç€0✶m¥#GÌs ”[¿~Ò‚Òž=¶“ð ߉M ¢€8'öÜ2 Ò·¯>›7ÏvDà;kךY¶“WË–æ9öÅNXðžÖ­¥6mX T¾³n[ð:-)É”OŽ€””˜x[ß¾¬P* ßa,wxv'¬… ¥&M<ßë×Ï ¡mÙb; ¡€ðµkÙË íÚyt ÖìÙÒ·ßš!xWÿþfƒfÍl'à1¾R\l¶‡eÄymÛJë×{p+ÞY³Ì6¯ÌÁó¶êÕ)JEà+[¶˜ía) ΋mÅ»u«í$GÙ»×lïÚ¯Ÿí$€ ¢€ð•Ø” ¦`9/ö{jÖ¼yæ$ʾ}m'T€¯¬['%&²¯Z¶4ϵ§ÖzÏšõï_¢€ð•ؼÉɶ“_r²·â=›Ñð9 _Y»–õnjÛÖCS°rr¤5kXÿ>Gà+œâ.OÒ¢…ôå—¿âðHß¡€ð’³-, ÐÝÓ®yÎ=ñ»c$"uî,Õ¬i; ÊëŠ+¤»ï¶€GP@øÆ–-æü9F@ÜÓ¶­tø°Ç¶â…ÿ¤¥I3gÚNÀ#( |cÍó™÷ÄžëØsTHß¾ÒªUædt¡Gà«W›™Zµ²$õêI ZZ2}º”š*õêeáÁN €ðvÀ²ËÚNXÓ§›ÅËì½ Aà ì€e—•°vì.dú €ç•”˜ÐŒ€Øqõ‡Y³Ì¼¸ø §Q@´hÑ"=Z:tPÍš5•‘‘¡#FhíÚµ¶£¾²e‹Ù–{Ú·7×`ëVtút©K©Ià4&Õ:èÑGÕ§Ÿ~ªaÆ©sçÎÊÏÏדO>©nݺiÁ‚êСƒíˆ€/ÄÖ0bOì¹_½ZjÞÜ¥ýë_¥ü|— à ˆƒî¹çõèÑCIG-ž1b„:uê¤?ÿùÏúÏþc1à«VIUªH-[ÚN^-[JÉÉæZ\r‰KÚ¸±ù@ð¼û®t÷ÝÒÒ¥æ|¡Â,õîÝû˜ò!ImÛ¶ÕYg¥UVö³üiõj©];)1Ñv’ðJJ2×ÀÊNXž¦MÍ®O>±€—E£Qmß¾] 4°ð vÀò+;a!˜Î>[JO7#!B‡ⲉ'*//O#FŒ°ð Îñkg x"iÐ é½÷l'`ÄE«V­ÒwÜ¡sÏ=W7Üpƒí8€/ìßovÁbľöí¥Í›¥l'A díúõ¶“pÄ%Û¶mÓ¥—^ªºuëêõ×_W$± ð…5kÌgF@ì‹]ƒØ5*å’KÌÎÓ§ÛNÀeì‚å‚={öhàÀÚ»w¯>þøc5>Í®.cÇŽUjjê1·eee)++Ëɘ€'}õ•ù̈}±²r¥Ôµ«Ý,€Zµ¤óÏ7Ó°F¶(Uvv¶²³³¹­  ÀRšà €8ìðáÃÅMœ(ýä'æøt ¼.¹Ä “fdØN ’lIúì3³åo‹øNB‚”™)-\x’/ؼYúè#éÅÝŒ… IJ2êxÂgŸI={ÚNŠêÙÓ\ÃR½òŠT­š™Ç= ë¶l1 Ð) þÕ³§Yˆ¾uk)8i’9ËéWQ@x@ìs ˆÅ®Ý £ +WšÕé#Gºž àMÖ}ö™Ô¼¹9þ”ž.5kVJ™4IJM•´’ à=Ö±þ#J]’›+ .U­j%À{( ¬**’>ÿœ={škYTtÔ&Hÿú—µL hTš?_Ú½ÛvD`ÕòåÒÁƒ èÙÓx¾bÅq˜h%j÷né ¥—_¶@Q@XõÙgæ÷ÓÌLÛIPY™™æZžt;^ ê×—.»Œse£€°ê³Ï¤N¤êÕm'AeÕ¨!uìH nºIZ²DúòKÛIT€U,@–SHÄË€RZ£ €OQ@X³w¯ôÕW éÙÓý±w¯í$´ädéºëÌ:#Gl§PNÖ,Zd6´¡€GÏžæš~þ¹í$¼o”vO·@9Q@XóÙgRíÚÒgØN‚x9£m‘~Wõ1-óµí(ºNÌÎÏ=g; €r¢€°æ“OÌ;æ üM‰3ÞÕÿ|{¯6|´Åv„ÁÝwKge†Ýøÿì°¢¨È .°qõôÓÚÚ´‡^ZÖMÅŶà ðFŽ”}TŠDl'PV|ñ…´oŸ9O ±i“4c†^w«öî5×€ãQ@tàÀ=øàƒ0`€êÕ«§„„½ôÒK¶cžðá‡RJŠÔ£‡í$ˆ›gŸ•jÕR‹{¯Qµjæp< ˆƒvìØ¡‡zH«W¯V—.]$I†‰IÒ¼yRïÞR•*¶“ . ¥çŸ—®¿^UëÕPïÞæp< ˆƒÒÓÓµmÛ6mܸQ=ö˜í8€gKÌú@yçiÛ6éÖ[%™kûñÇbàU©REiii’¤(;tß[ºTÚ³‡õ2~¼ÒêÔI’¹¶Ò²evc¼'Éváóá‡RÕªÒ9çØN‚¸¹çs:õwzö4×øÃ¥ïf  ‰|ø¡Ô«—T­ší$ˆ›¤‹/þþV«fJ Ñášâbéê«¥^°ÀiP@¸ª¤Dúè#Ö„Á˜RRb; B!1Ñl†ð÷¿s0!àq®Z¾\Ú½›\`®õж“ 4ÆŽ5É|ðí$N5 4vìX¥¦¦s[VV–²²²,%âçÃÍÖ»½zÙN§õîm–…|øá÷kÓg]x¡Ô¹³ô3%¨¨ììleggs[AA¥4ÁAñ qãÆ©[·n¶cŽ˜7Ï,>¯^Ýv8­zus­çΕF¶¡‰HwÝ%ýüçÒÚµR»v¶ÁçJ{xñâÅÊÌÌ´”(˜‚À5……Òœ9R¿~¶“À-ýúIï¿o®=àŠ‘#¥úõ¥'ž°ÀI0â°'Ÿ|RÊËË“$½óÎ;ÊÍÍ•$Ýyçª]»¶Íx€«æÏ—öî•´•¶u«ù%ï4[™ (=ø ôé§Òùç»” áV­šô‹_Hý«yñ5h`;€ãP@ö·¿ýM999’¤H$¢)S¦èÍ7ßT$ÑOúS Beút)-Mb†aÜ|³täˆÒ:…ÌL©aCsí) p͘1Òã›ùÆÙNà8‡mܸÑvÀ3Þ{Ï‘ÀäOûâ Ó(^~ù´_š`®ù{ïI<âB6@2£¹¹Òqºð~ àŠ-[¤eˤAƒl'A¥=òˆÔª•4bD™¾|Ð iéR3k p åð, W̘aÞ ïÛ×vTÊÚµÒë¯K¿þµ”T¶Aô~ý̵Ÿ1Ãál_ €pÅ{?êÕ³•ò—¿˜E7ÝTæo©WOêÙÓ¼ €p\l­2Ó¯|nóf饗¤»ï>íîWÇ4ȼØŽ@à¸ùó¥}ûØ~×÷zHªSGºýörëÀf æùóÈð ǽ÷žÔ¸±Ô¥‹í$¨”sÏ5S°jÕ*÷·ví*5jÄ4,€Ã¢QiêT¶ß „o,×Ú£%$˜Q©Sã (“hTºï>é©§l' ‡­X!­Z%]}µí$°mèP髯ÌkpU$"íÜ)ýáÒþý¶Ó¡Gà¨W_5Ûñ³ý.úö5KH^}Õv„ÒHß|#=ù¤í$@èQ@8&•&O–®¼RªRÅvØVµªy-Lžl^€«22¤[n‘}TÚ½Ûv Ô( ³t©´f4|¸í$ðŠáÃ¥Õ«¥eËl'A(ýþ÷Rq±ôßÿm; jŽyõU©n]éâ‹m'W\|±yM0 V4j$ýîwÒ¿þe§°‚À±éWW]%%'ÛNƒr;tHš6-îs¥ªTa,»ë.©yséW¿²- G,^,­_/a; *äñÇMSÈÍû]!­['-Y÷»N¯Z5é±Ç¤={Ø °„À“'KõëK]d; Ê-?_zäi̳p7Î.ºÈ¼6&OŽû]esÕUÒGI5kÚN„@Ü•”˜9þC‡JII¶Ó ÜÆŽ•RRÌ‚]$'›ßÿ^yżV×E"æ€q7{¶”“cΆϼ÷žšxüq³ZÜ!7Þh^#sæ8ö¢€ˆ»§Ÿ–:u’zõ²årà€ô‹_HýúI#G:úP½{K;š× \( â*/OzçsÞ3|æÁ¥íÛÍ¥_¼HļFÞ~Û,9„@\½ð‚Ùjõºël'A¹ìÛ'½ü²)!mÚ¸ò×_o^+/¼àÊÃ<‚ nŠ‹¥gŸ•®¹FJMµåR«–9žüž{\{ÈÔT³%ï³Ï²pèiÃP8Ž nfÍ2 ‹o½ÕvTHÆ®Ÿyë­Ò¦MæµX5{¶4j”4q¢í$@àQ@ÄÍÓOKgŸ-sŽí$ð‹ž=¥ÎYŒ2DºöZéŽ;Ì;)Cë×KÓ¦I·ÝÆâs”]$b^3S§J6ØNƒÐ{òI©Né†ÌœRŽ €ˆ‹G5§[ßpƒí$ð›n0¯Gµ¡—š*M˜`NIøaÛi€À¢€¨´Í›¥_”~õ+s€6PÕ«›µï/¼ mÙb; Bï ¥?üÁ|̘a9 L•öØcf¥Ûn³eòþûÒƒä¥YIDATë¯ÛNqŒÛo—jÖ4¯%Àºûï—4kB6m² €JÙ¶Íl£:v¬)!ð¸Ü\³OòsÏyj»ÑZµÌkè™gÌYˆ€U æ\œ‹.²$ €JùûßÍarcÆØN‚ÓÚ»×ìôS½ºÙjÔc»Œcvþûßm'$Õ­kF [¶´ € ûúké©§¤Ñ£9xÐó ¥aäÍveõëÛNt‚ºuÍké_ÿ2¯-@0Q@TØo~cF?î¾ÛvœR4jNü›;Wš2EêÔÉv¢“ºç3 òÛßÚNp @…,\(=ÿ¼ô?ÿãÉ7Óq´4[L=ÿ¼Ô§í4§T¿¾yM=ÿ¼y‚‡ ÜJJÌT™.]¤[n±§´p¡ôÐCæë®³¦Ln½ÕœŽ>z´y­‚… Ü^xAZ´Húç?¥ÄDÛipJçœcJȽ÷ÚNRf‰‰æµµh‘9_ðœ×^3k©T@¹ìÞmÖ~\{­ô“ŸØNƒ2éÑÃv‚r;ï‚‚d'"³«W^-ý“22ÚõŒAA¢Ëý—_Š}’Ýí©Õ4HL^CDÅ„ˆš´r¥¸ùw×. <\v ޼?ú088tظ°³“Ìê&L7¥ïØ!îù%"¢¶©ýbÑŸ¦(â¾Ê„1Ünt´ìD¸v ˜:8qBtõؼèÜYv*UÍšTTññ€½=ð>µ,@ˆ¨ÚZÑÅåÃU«€üCv"2swºwÝ­F–FšÅ‹ƒX¾¸rø×¿D1BÔª9|ñ…è2éä$; ‘Tì‚EDf·n‰Á”’“”q€Ç³Ë­ˆ½½˜ù1.>±O._.öÓäd±ÏÞº%;ÑCde‰¾ƒþþbh7éF1 Døæ`ð` ;8x˜9Sv"¢æEG‹}5;[ì»ß|#;Q3æÎ.\&N—ñüýÕ«ë×e'#R +2 ˆ‡V«E§NŠŒŒ Ù±ˆ¨©ݬþö7ÀÛÈÏìO°ËQ[+†x:rDv’6eôh±Ïjµb^¼¸ÝN‡BíA¯^bd~^|X»èÙˆ‰.]’ŽH5,@¬hÖ¬YøàƒðÒK/aË–-°µµÅøñãqâÄ Ùш`4ŠnVýû[·Š›Í¾‘JêëxóM Gqf49Yvª6' øßÿ€õë-[Ä>ýŸÿp¾jÅ€ÄD ¤DÌ¢ž™)Þˆ,@¬D§ÓaïÞ½X·nÖ¯_Ù³gãðáÃðõõÅ’%KdÇ£V"55Uõßyÿ¾˜Ômà@1¢ÐС@a¡¸ bk«zœÇJjj*p÷®è7´p!àã<óŒ˜EùïNU!ýi¶¶âêGa¡Ø§££Å´ Ÿ|"objß$Ï_z½ÝÜÄn—.ñì=VX€XIZZììì0wî\s›ƒƒbbbÒÒR‰é¨µPóåâE`éRqµ?*JtYÑéÄ=Íýú©ã±–šš ìߌ'FÙ2Et¹*+Þ_1Ó#é×OìÓ99€——Ø×{öûþÅ‹êfaòxy¤×ûŒö±x1°aƒ¸TÍQ¨ã0¼VRPP€¾}ûÂÙÙ¹A{HHàÔ©Sðöö–ðí·ÀW_Ÿœ=+¦ŒˆŽ^}xê)Ù Û£(.öèÑôÏM˜œ;'ú qˆ1«6 øïÅ~¿}»ª÷½÷€À@Ñõ><2pp”è0ÅÍN'OŠ«¨¨¶CBÄ2h‰ÁÕUvR¢?„ˆ•èõzxyy5j7µ•••©‰Ú±{÷ĤØgΧO‹QrsEâæ&ŽyW­ÆŽ:u’¶;sFœJ/+~ü(*ßÿø£èëóúëb‚À¦tîüØM(S` ¸/dÝ:ÑóíóÏE×ûµkEñ<û¬˜X>(HÔ…ŽŽ²SýŽ­­¸OÄh¾ÿ^¼Á›–O>ƒX|ýµx“oŠÁ N°¯-µ,@¬äÞ½{p°pj­cÇŽæõD–(Š8޽yS\e7-7o7n¥¥â¾EÓ¿%% Gqôñg×­ž{Ÿ9ñŸxù²8ƒx÷®¨ÜL_WWwîo¿Ýüc,Y">èíìĈ6}úcÆó扯 Pã™ÐŸÔ©0y²Xêꀂ1¡ü‰ÀÞ½¢g‹‰‡‡¸ˆeZ¼½ÅÒ¥‹¨]][:w:tàÅ,R‰­­¨”ƒ‚€—_mƒ8Ò³góÛnÙ"Þß<=Å„¦]ºü¶<ñàë+îMkNe¥xïspø­˜áÎOK¬ÄÑу¡Q{ͯãC:6sŠ-}älœ±s¶¸.³G4~ê Ei¼NQÿ[+Ij6[â“[,nkòBÉ.TXÜVð“K0¾ÖÆXÜÖ$ö‡–7þÕ×Ú¹<ÝäóèS úM=Àû}þmq[“ˆk;Ðïv>,ü ÀNÁøÂóU‹ÛšÄÿ4·qã?w Û\œwÚäóè'“¯'6Ú¶^ë‹ïÿ|ÔÖ¢Áò Wño Ežùû¶@/{qÐcoüì;%óçÃÏðó~×ë……øíƒª)óæ‰ª¥):èÃòà“û½‡Ý<½u«xœ¦ ÄÆ6½¾¾ˆŒgFqiúÚ´üóŸÀ¨QM?Æ¡CÀ;ïX^gg'Ž&ÇŒlš¹=náB`Ñ"ñméLby¹X,¨ªªB~~~ÓMª±µFŒ ܾ-î¾t ¨¨/áõëb´ÔŠ  ªªùdz·o¸ØÙ‰×; öö¿§™@ükcÓð{SÛƒß[Z¨1Ùÿ/gÏVaÄ™ßEÍ®õºã ?ÿ·ázÿg¸è+áX| Žu¥p¬;Nu·PÝ¡+¶~:¼ÙLjÿv¼îþÔ ­v¨×ØÂhc‡Ìž³Ñó•&·w¯)ÁËçCŠFìè 4P`å×pwÿÕ¨ìØt7Ö¡å_aHÅÿИ·yP•Cw|ÚçÝfŸÇÔ¢÷ÐÅp­ÉõùÝ^À·ÝÆ7ý•œtèQiÅÒ‘=ª°°0”••áìÙ³ Ú333†/¿üááá Öéõz :”ݳˆˆˆˆZ1­V‹¼¼<‹ÝíéáxÄJ‚ƒƒqôèQTWWÃÅÅÅÜž““,Z´}úôARRrssqäÈ<÷Üs²ãQ š:u*²³³1mÚ4 8z½Û¶mÃíÛ·qòäIÊŽHVTRR‚~ýúÁÆÆ~~~(,,”‰ZØ¡C‡!C† 22ÎÎθxñ"EÁºuëdÇ£túôi„„„@«Õâµ×^ƒ››²²²œœŒ‰'âÀ²#Ò_tùòeøûûÃ××~~~8zô(’““1sæÌ?WRR‚àà`téÒqqq¨®®ÆÆáããN{{{IÏ  PHªœœE£Ñ(›6m2·ÕÔÔ(½{÷V†.1YCVV–R[[Û ­¨¨H騱£2cÆ I©H-‘‘‘ʘ1c”‘#G*AAA²ãP »yó¦âéé©L™2EvRÁÒ¥KF£œ;w®A{tt´¢Ñh”ªª*IÉèQ ¥¼¼\QEÉËËS4’’’ÒèçæÍ›§899)ÅÅÅæ¶ŒŒ E£Ñ(;vìP-o[Ä.X’¥¥¥ÁÎÎsçÎ5·988 &&ÙÙÙ(--•˜ŽZÚ³Ï> ;»†£_÷îÝO=õΟ?/)©áرcØ·o6oÞ EQ ÑhdG¢¶gÏTTT`Íš5D7ŽúúzÉ©ÈZݺukÐÞ½{wØÚÚ¢C‡2bQ èСƒùuUšé(´oß>L˜0=zô0·=}ûöŧŸ~jõœm É Ð·o_8;;7h œ:uJF,R‘¢((//G×®]eG!+1ˆÅœ9sØÍ®ËÈÈ€««+Š‹‹Ñ¯_?¸¸¸ sçΘ?> ƒìxÔÂ^yåxzz"&&ß}÷Š‹‹±wï^$&&"..Î\ PûTZZŠëׯcèСօ„„   @Bª¶ƒJ¦×ëáååÕ¨ÝÔVVV¦v$RÙÇŒ²²2¬^½Zv²’ÄÄD\½z‡–…¬¨¨¨uuu˜4ifÏžõë×ãÈ‘#غu+ªªª°gÏÙ©iµZœ8qãÇGpp°¹}Ù²eXµj•Äd¤½^MÃýòË/¨­­å} M`"Ù½{÷àààШ½cÇŽæõÔ~? ,ÀðáÃ-;YAee%V¬X+VÀÝÝ]v²¢Û·oãîÝ»˜7o6oÞ ˜4iîß¿íÛ·cÕªUèÝ»·ä”ÔRÊËË1nÜ8ÀÎ;áîîŽôôt¬Y³žžžX°`ä„dM¦ã³‡ñ±ŒˆdŽŽŽ/Í×ÔÔ˜×SûtíÚ5„‡‡£K—.HKKã=íÔ²eËеkWÄÆÆÊŽBVfz¿ŽŠŠjÐ…íÛ·ãäÉ“,@Ú‘„„”––âÂ… ÐjµDÁY__øøxDEEÁÍÍMrJ²Óß;áþÞ"™———ÅnV¦K{¦75j_nÞ¼‰qãÆáÖ­[8xð ºwï.;YAQQvîÜ‰ØØX”””àòå˸|ù2jjjpÿþ}\¹r7nÜ“ZˆéýÚÓÓ³A»éfV¾ÖíËñãÇÜès:""wïÞå=œíœ©ë•éxíAz½îîî¼úÑ  ’ãÂ… ¨®®nО““°k×®í~ø!ìíí1räH ©ÈZž~úiäç磨¨¨A{jj*lmm1pà@IÉH-S¦LAzzzƒ“™™™(**´iÓ$&ký8z+‰ýû÷cÑ¢E@JJ òòò™™‰çŸ^vúè#LŸ>#FŒÀÑ£G‘––†¥K—r¤»v¦°°¡¡¡puuÅÂ… áææ†ôôtCÀgH@ø Ÿ!à3$ |†€Ï€ð>CÀgH@ø Ÿ!à3$ |†€Ï€ð>CÀgH@ø Ÿ!à3$ |†€Ï€ð>CÀgH@ø Ÿ!à3$ |†€Ï€ð>CÀgH@ø Ÿ!à3$ |†€Ï€ð>CÀgH@ø Ÿ!à3$ |†¤‚¾úê+Mš4I±±±jРڴi£øøxíܹ³Ô¾;vìÐÀÕ°aC5nÜXwß}·Ž=jBÔ€°†a˜Dm2räH¥¤¤èŽ;îP§N”™™©—_~Y'NœÐ—_~©ØØXIÒÔ¥K]xá…zðÁ•““£Ù³g«uëÖJKKSxx¸ÉWø H¥¤¤èÚk¯UXXع×víÚ¥«®ºJ#GŽÔÛo¿-IºÿþûõÖ[oé‡~P«V­$IŸ|ò‰ú÷ï¯×^{MãÇ7%~ÀL$ Õ¤[·n ÑW_}%IjÖ¬™úôé£eË–ÛïòË/×%—\¢>úÈŒ0SQR ÃБ#GÔ¤IIÒÁƒe·ÛuÍ5×”Ú÷Úk¯Õ¶mÛ|"àH@ªÁ’%KtèÐ!ÅÇÇK’233%IÍ›7/µoóæÍõ믿*//ϧ1þ€¤Š~øá=ðÀêÕ«—î¹çIÒéÓ§%I‘‘‘¥ö¯S§N±}€`vþ]àÍáÇ5dÈ]xá…ú÷¿ÿ-‹Å"Iª[·®$éÌ™3¥ŽÉÍÍ-¶»£GêÃ?TÛ¶m=n€¹NŸ>­½{÷jÀ€ç†ß£bH@*);;[ƒ ÒñãǵiÓ&]|ñÅç¶¹†^¹†b¹ËÌÌTãÆ=NÃûá‡ê÷¿ÿ}Í €j±xñb;Öì0j%JÈÍÍÕСCµk×.}üñǺüòË‹moÙ²¥¬V빱ܥ¥¥©sçÎÏÛ¶m[IŽ/ôW\QíqÃÿLžù¤Ž9¢ììl;vLÙÙÙņáþå/Ñðáýžç‡~Prr²êÕ«§zõê)22RŠŒŒTxx¸"##5lذbÓ×d·Û•››«ÐÐP…„„(44Taaa =÷gOÆQ~ü~;vè÷¿ÿý¹v*ޤ‚ ¯ÔÔTýç?ÿQ÷îÝ=î7bÄ-Z´H(¶ÈÎ;õè£z<Æ5ìêŠ+®P×®]kæàW¢¢¢ø¬ƒŸwíwìØ1íØ±CÚ³gêÖ­«)S¦xÜ×õy‡……©U«Vºúê«Õ¸qãR?;v,sG×®]5f̘šº$T~¿ƒÃå+¤‚}ôQ½ÿþû:t¨Ž=ªÅ‹ÛîBõøãkÅŠêÓ§zè!åäähÖ¬YêÔ©“ÍPA_|ñ…V¬X¡íÛ·+==]‡:·­iÓ¦êÝ»÷yϱråÊš j úæ›od±Xôþûïëý÷ß/¶Íb±œK@Zµj¥Ï>ûL<òˆ{ì1EFFê–[nÑóÏ?ï±þàÒÓÓµnÝ:ÅÆÆ*11Q111Љ‰Q‡Ô A³Ã€Z‰¤‚>ýôÓrï£õë××`4€ŠÊËËSZZš6lØ (..Îë¾ãÇ×øñã}>ÀD£G6;øŸ·9 ÃÐöíÛµ~ýzmذAÿïÿý?|¸Þ}÷]³CTC°~oïÞ½²ÙlJNN–aºë®»ôÀèꫯ6;4@‘€üVff¦¦OŸ®·ß~[^x¡þüç?k„ ²Z­f‡¨$€ß Ó¦M›d³Ùtß}÷©~ýúf‡¨"€ß²Z­úñÇBÉ" þFø5’,ü­0Uaa¡Ù!|ˆ`ŠãÇkÒ¤I;v¬Ù¡|ˆàsk×®ULLŒ’““Õ½{w†avH!øLNNŽÆ¯[n¹E:uÒöíÛõðÃËb±˜ÀG˜ àŸþ¹îºë.ÙívÍŸ?_ãÆ#ñ€ D Æ-[¶L7ÜpƒZ¶l©o¿ýVãÇ'ù€ E¨q}úôÑSO=¥7ª}ûöf‡0C°5®Y³fš>}ºÙaü= |†€Ï€ªE^^žÙ!j@•CÀgH@ø ™ŸþÙìAŒ‚ÈW_}¥:híÚµf‡R$ $Nœ8¡Ñ£GëꫯVÿþýͤX‚Ä#<¢ÌÌL­[·Nf‡R$ þóŸÿèõ×_×üùóu饗š ˆ1 ÜáÇ5nÜ8Ýzë­7nœÙá‚ 0Ã04nÜ8…††ê7ÞÅb1;$@c°üQ6lвeËdµZÍd—_~¹vïÞ­‹/¾ØìPÄ,x$BÀgH@ø Ÿ!à3$  rrr”ššjv”‰ÄO<¡~ýú騱cf‡€W¬`ëÖ­ú׿þ%›Í¦ .¸ÀìpðЍå uÿý÷+66V>ø ÙáP&z@ –[°`RSSµiÓ&…‡‡›e¢j±£Gê±ÇÓ=÷Ü£ßýîwf‡Ày‘€@-öØc©°°P6›ÍìP(†`@-•™™©Å‹ë…^PÓ¦MÍ€r!€ZªyóæJOOW›6mÌ€r#€Z¬}ûöf‡@…PÀgH@ø Ÿ!à3$ PK˜UFµ€a6yòd…„„è“O>1;~æàÁƒÔ‹= >V§N]tÑEúõ×_½î3yòäRSõŽ=Z£G®éð˜èÁÔÏ?ÿ¬´´4³CHZºt©–.]Zìµììl“¢ $ >–““££GÊjµzÝgΜ9êÚµ«£`¶mÛ¶iÕªUJNN6;€“§À[·nU·nÝLŠ(00«†œ9sF999¥^úé§%IôuHüØßÿþw]zé¥;v¬Ù¡P£è©¤—_~YÇŽÓ¡C‡$IkÖ¬Ñþýû%9†Qüúë¯êÒ¥‹ÆŒ£Ë.»L’ôá‡jݺu4hn»í6Óbà_¾úê+­Y³F‹/VX-›Å8ßJzð¨]»vÚ·oŸ$Éb±Hr,:h±X´gÏEEEéOú“¾üòK:tHçžnN™2Åã¼®.½-[¶0 "ƒÖž={ôý÷ß3=7ø9ÚkUÇ£¶JÚ³gÏy÷yë­·| €Ú,%%EëÖ­Ó²eËH>A0ÑÓO?­˜˜ÝqÇf‡€OÐ&ºûž‚ ˜hÔ¨Qf‡€OñÈ €Ï€ð>CÀgH@ø øÐwß}§‚‚³ÃÀ4$ à#¿ýö›®»î:Íš5ËìP0 øÈ+¯¼¢¼¼<%&&š ¦!8yò¤^|ñEÝ{ï½jÖ¬™Ùá`ð×_]ÙÙÙš:uªÙ¡`*¨ayyyzþùç5f̵iÓÆìp0 Ô°wß}W ÷‘€@2 C³gÏÖÀuå•Wš¦ 3;dùùùŠ×u×]gv(ø¨Aááázì±ÇÌ¿Á,>CÀg‚€ c·Û•”dSZZºòóCV ¸¸ÙlI²Z­f‡ÐH@T²²²Ô«×(edÌ”d“d‘T¨ôô4mÚ¯””å$!5ˆ!X*Ó¦Ír&=äH>$G³¸‡22f()Éf^pA€ªÙo¿ýfv€2¤¥¥KêîekwçvÔ¨FùùùêÒ¥‹fΜiv(@@±ÛíJLœªØØ!ºì²[;D‰‰Se·ÛÍ µP~~¨Šz>J qnGM¡ªÑÊ•+µoß> <ØìP€jgVÑnm¯OAsíV Éç$¤Ð¹5…ª‰aš={¶úõë§Î;›P­ÌLŠ×w)>^áÂY5òÞåQ$£ôôTÿN¹¤*..Æ×!†`@5ùâ‹/ôõ×_ë‘G1; Ú™Y´ëïãõkcAs°i³Ù’ý¸¤I…ÎW %¥(:zºl¶$ó‚ ô€@5y饗ԱcG 0ÀìP€jçhä{kHwWZÚ35öÞþ>^ßÌ{SôØHV«U))ËÃæž)1l.ð¯ßl$ P öï߯իW륗^RHË^¿ô½±ËѰO—ª]»ö+1qªßÔƒøû6_±Z­AqþˆªÁ+¯¼¢ èž{î1; F˜™”=^½Îž=©ØØ!U.þ®l!yñ{“%i”¤¢Þ…³g •œœ¦‡«G.úöÛݦª×¶¨&“&MRƒ ÌAª<çªÌÔdfѮ͖¤M›â•‘1CŽZ9Æë¯SXØ£Úµ+ÙùzÑP¢Š6ö«2,©ø½™%GòQ²w¡½öî-ÔÞ½cKÅêëaOþ>¤ AÀ€ßزe‹!ÉØ²e‹Ù¡üHVV–‘0ň‰ltì8Ôˆ‰l$$L1²²² Ã0Œ#GŽÑÑ} )Å É0¤CJ1Ú¶½Î5j’ѱãMFxøå÷‰Žîsî\eÅàxÍÎã\Ço.×ñ5q:t¸ÁQâçˆ!õ¬Ðµ&$Lqî_ò\†!m6¦”[ѽäöžî?S¼ÄzþóW·˜˜Á^btܧ˜˜Áe¾ïc ñt­C‡ÞE{­ŠH@ü ø/³]e%®Æ´÷Ƴ{CüÑr7°½]kzzº_5<½7¤+ÞØ¯®FyDD/ç¨ÚùËóÞåý\ª’l•çûXyº‡ññ¶m{»]k–ó÷èÚkUDâGH@À?U¦ÑU] Ky‹åkˆ—¯\›˜;­¶Æ¾÷s9~:vZ®˜¼Õsþ’*ûݬloVéïc–ó{6ØúQQÝj]oHé{èJ4®4¤/Œ¢dÞµÏ״תˆ©Z8Ю󕕥ž=㕜¿§ûvðàUfF«ŠLA[¼@ÿGÝWo÷U›Î××ë”ÿýv¿&÷ߟ²þ@…™Ýƒ" ÁÿTÑá9å©'(ïЙòœËû0-÷cÝ÷)kXW¿*äRÖu·is]‰1÷e'*=”È5t&Öm茷š˜ÒÅúŽ÷®z‘½§áw£FÝ_¥ó{¿oUÿ¼Î7\°ø÷Ëý;U½u-®8¢¢®öòù¿F¥¢×f%¿½]Ÿû>´×ªŠΣì50J?Q?pàW/ûJ®^‹òö’”gúÛò=uO’chÉ IÛåýinx×Zõõ>ʺî}û¢%ýÑã6o=G†®¨¨‰*,4túôYåç/t^ë(IÏ8ÏåºS%Íöxþ½{giԨźñÆUU^Û[ïBQÜå?¿ë˜Õ«?Rvö«bPU>¯òô6ï!p 1+ÙCP’÷é|=õä\uU¥¦n×Þ½ÏÉÑÛÐÓã±î½:çëA,oOJñßo÷kr¿Ö²þ@…™¡= @íñÊ+¯÷ÝwŸQXXhv(0j~†ªòÍ2åþTºÏyŸ —wÖ¥² †]SìÆÄ 6Ú·¿ÙˆŠºÚˆŠêfDGöòÔÝÕCйŒ§æSªíé³'e_··)lËÓstw‰¸KGGEu«ò{_ΆVüZ«6ã—·¸Gšäå»mÒZ£C‡JÌì•åü~—5å°aH‡¨¨«K½ßöíÛËQð]²ÇÑý³jDD\éa†ªÒ½eåíË{ûµºÏ"G{­ªH@ü P;äççíÚµ3ÆŽkv(0|3k“÷$ d£·üŠ ë*ß¡ž¯ÛÓ±e7Ä;× )™´Üh„‡w6:v¼¹Tƒ»"ò²¯ûü÷¤|ÃÍ<'UéÊ×3„¿Vo±»ÉŸÞÔ²Ö€ ñrßÜg}*yo] ·¡R%s×w¨a±\jxžYÊÛÐ'÷}ÊJ8=%NWž÷;áúþý~—œ®Úu­7ÒeÎûü•A{­j,†aæöÁÀeëÖ­êÖ­›¶lÙ¢®]»š/Ö¬Y£Ûn»M©©©Š‹‹3;œ —˜8UÉÉ#äyˆRŠVU¨ÖÛ°Ž¤¤?Èf{³TpvöW*=,Ã5“ÎÓr %q JUtôt¥¤,×7&(=ýÇJR¡bb†jû÷HgÎH§O—úyö¯Ïëãõ×)L¦|…)_áÊsþy‡n¼.MãFHùùE?’ahùò÷µåë«dÑ%²ÈÅ9;“ãÏûtõUÿSXX¸ì?¤c¿å¨°ð6YÔB’EÊ¢ºè‚O•0\*,ÔÛo½§cÇnÔÜy5†¤LE5úT-Z4“Ý~L………„ÊÉ9©3gï.qݧäê²GR¢—{b¨Iã•’¤£¿Œð°ÏJ9fcòä”"#ÞU~~¡ Ë>ÿ½÷Žtqê”6nLUfæ/ÊÏ/ÔéÓ'•Ÿ_ ‚ÂA’Z–ˆûIŠŒÈUÇŽ­uãÝU¯^½Rçq݃æÍÛÇ#ÃЛo®ÔÑ_nwÆ»R’ëÏ%TdÄ 5lØð\¬†!åç¨Ð$Gáøe’Zx8ö]Iwzx}£¤ŽÎcÜÿìՒntn;­¢Ïq€ó>’´FRoIÍ%­r»÷óº^/ï{—¼§$¥I:"鄤A’¾t;gi]¸JãÆ9¶Ÿ:uJ?KÓ¡ƒG”}B…ïiQÑ÷y£Z´hª¯3³ôTöAÚkU@âGH@€ÚaÀ€:vì˜RS=Mµ _‹rþ†üöµå:Wñ1ãÝå3.¥):úñscÆ]IÊ;ï|¢³g·z9›]ݬV­Z¨ /DVËiÝxy+=:v°.ÈÍÕŠ¾¡ý[ZéÕU”²uŽû‰Ò/jvB‘΄¡JBC¥°0ÇOHˆd±¨PRΉS*(¬+CáÎÄ")_!!'uáEQ Õ±ã'têt]ŠpÛGÎ?ŸUýú§eX¤œ d¨N±íŽ1ó™rÔ¡Ôq 舤(·× $–ÔXކcƒû»äªQÃ:›§¼¼æ¶’çvÅÎ߬YåèÀÃÊËk,GMŒëø_ÝÞÃý¼uŠ'<üµju±$¹Çó>a¡¥ë$ò ôËÑßt<ç´ µv¾z´ìØP“&êçŸ3•—פĵTQÒT’·mî¯{û,sfWº‘ÊÍ=«ü¼|ºXŽ„ÌulɸÝ?'÷÷ðö~îçrmûMŽ„£µ‡ýÏwÝ®ãÏÈ¢…G„ªNH5irá¹Ï"¿ @Gþ¦ÜÜ32 ‹,£Ø>[ssÕíçŸi¯U…¹0pÇ,ÀÿýðÆ$ã­·Þ2;8U×r†Q¾Eÿ¼ËP®q…6·j˜ñˆ.7^UãcK}#«A#£04´Ô ¢¢ŒŒðºFŠbuºÙXªxc®î6žU¬1=¤©ñTã+Œ¿5¿ÒxíúAƱ cíZãו+-»ô–q©úm´Çh©ŸfÊ4ËnDé7£¾rŒH6®¸tˆa”Q£TžaSå©S)½·á9ž†²Ň«¹¹÷h4iÒÄ8}ú´Ù¡À©¼ÅÜÕu®„„)F˜6µÕ§›×t›±E]Œ³ ;·ó Õ3þ§NÆ Ýn<«»Œ'št4Ž%'FJŠqtËcÜï.U8Þ¦MÉqúEãæÏßÀ¬Úu{Sžä®ø>Þˆ%~E×&]nxN`ÊÓÐ-Ù@îi”®…¸±Bç/ý=(ÏŸË›œÿ3òžüxJâÊšü ¬$Àý§dÍ·ûVvìÞïYÉïPy ¾½ÅáíÞx{¿’ç,_ÁþùÐ^«:¦á€r:qâ„’““õÀ¨NOà `†òLS[^Þý‹T®z*EwþI=–oÖ\ýKutF ÑvÕÕ׺Qoè"}¯Ú©a:¬‹‹ŸçhŠ~Þ¸JÏ äuˆWAÁxåå½é¼÷…g)/Ï¢Ÿ~*”ÔÏí:ݧ­Úu{SöôÃîS¼ºöñ¶ˆ[Éë¬rL‡+IýKœßêÜß¡mÛ[‹ÕðxŸrx—Ú¶ QËôí·3ݦDÎÕñãå?¿Tò{àmZÖòNA[øÅ­ IDAT±ij‹Oyë>urwgìÏÉQ'ó”JOÉÛÀíýÜ?»²¾+»5bD_Õ©S|úá³g íÚõ¥–¿þÇóu—½è"5 ¾Ä4¼~„ixÀ7ìv»’¦>'˧›”xt®?e×ñ:u:q‚rãã5eÞ¿µzõGÊÎ~U¥ŸpÛ%Ý&Ç“W÷5>%ýÑÃþY’†IzAŽuA¼MÑ.kµô²k*6ìdx7_´_‡7x}š\™©_+ÊûìXÞVå>oA°©è÷Ëý3®Îº'w¾^é½2ªÚ»W½ƒ´×ªŽ@À*ùDöª¼_•”ù½æfëKu×`­Õ: ’ëI~FÆ %%Ù´pá,¯3b94S³f­µ}û/ï÷L‰ÕÒ]=ÞǧGGÏÖûï/“Íö¦6oþŸöìY«¼¼7Tú)ølmÞ¼Âë“Ú²ëLªg¦ï³cY%-UTÔµlÙ²ÄJò«½3ªT§(*óýr©Îº'wÓ¦Íröœ•œ]«G±ß 3U¤þ§&ŽGõ $÷UÍ/ÖdÍÔtÝ£´Cu5Xh«t°¨^þ)h‹xjÜ\vÙ­nÃç/w_”Ìx/Îõ¤ì†­ç©_+ªìÂîÝ>¼¿ÇF^E~5=¤ÇL•ù~¹«‰†´/’W@"(ÇÓÜJTº^Ð@å+Lè½®µ*Ð/G5Ыk}‘Ò ÍÒ³yjHV¶YÙ†mEûÞgÇrŒ¥·Ù–W8î’ÜHG£ØQË’žž¦M›â«¥–ÅLÕ¹~MuñEò HŽ¿1^,X°À9-&j›ƒŸ­ô„ÞÔ½zOÃÔQ?iž&ª@† tOŠè6[’¢£—cªÕÂsÛ¥g#;©\q8’©^¶VC³2ï—••¥ž=㕜ùKÃß×ÉrmE{­ê¨Ž?®%K–hêÔ© ã¯JT²fá’Âzó—ïuIî Y^]+>ÿA9‹v¨hŒ½kMŠtI ¿W’”—÷¦jzÖ_ϼSÑ÷óDZÿU-Ò.™õÉ_Š¿kjv- $þU–,Y¢ÜÜ\7ÎìPàAÉå^Ú¬w4\'®Á­®Ô[·Ý&Ûm·iÓç®Bév’ÆH**hÎË+”ÔOE‹æ•<³þø¢±_Q¾(Òö—†¿?%€LS _ J0 CsçÎÕСCÕ²eK³ÃîO®ïÒÛÚ ¾Ú¡+§o´þÀKJJ²+”ŽŠ(Ç´·% šÈ_~fòu¡|yT×$eñ—†?Åß6$ PBJJоûî;Mœ8ÑìPà…ãÉuwMÑ,½¥{ô¶îR}¤_ÔDR{­^ý‘bc‡èw¿»×¹o˜<÷tÐð“|ÓØ¯(_Ì´å/ LšÄ,(aÞ¼yjß¾½úõëgv((ÁU÷±kç!ÍÐt=®gõŒ¦ë =-Ç“ì,I£•=OÙÙÝåZ;B ÏOº] ?ÿY‹Á þ:ö¿¦‡ùËZ¾XWð'$ PÂèÑ£5lØ0…„ÐIìO\u»3žÑËzW÷ëY=ªÙzAºí5KÒ •.*Žç‡$Iñ’ž–£‡$x~Á8öß_þþš5…J4hÙ!À×ÊæÿÔ;š ý§?kA±äCrÌp婨8FÒ—*= Ë*iŠ:t˜®ˆˆú4ü‚Œ?5üƒ1Dð"ø5×°«w–¬Ós’þ¤—uŸfkÖÊQ³àþäú¬<µ*«§c¶6o^A²¤hø¾Gð[îÓíþUk”¤ÙzXsôº–t·½ÏH UDÄÕ­©ìlOC­¬’–**j€Z¶lIO˜ˆà·\ÓíþQÿÓ“úI뽤‡[­rÔ|HR¡:tª¸¸%'{+*Þ­áÃûó´LF0]ÉUÍ]½›7«AºQ¯èýS]ô¬úz9Cª³7Ã?ŠŠÞ‘€LUrUs×Ô¹ééiº6lÞU¼>Ð-š¬×äXÍÜ{ráOEÅÏH@½‚‚(""ÂìP‚’ûªæEBÔB—è½ü½Ú¡N£wT¨ú’–«dÝǘ1‹%€c’{Aï¿ÿý¯Z·n­#GŽ˜JPr­jî.BgôoT¡"4TÕ)ÕwnqÕ}¬•ôg3P ΢gjz@½yóæé’K.Q³fÍÌ%(å燪ä¬U/êauÕV]¯5ú5üa)¯‰¨é€À@ ¨íÝ»WëÖ­Óo¼av(A+,¬@î«”'êMMÔ<ÓëúJýÕ±]Kõ굊š$ ‚ÚüùóÕ¨Q#ÅÇÇ›JЊ‹‹QzºcêÜÎÚ¦Wu¿æë.-Ð’nÒáùJKK?7ËIÔnÔ€ZgÏžÕ‚ t÷Ýw«~ýúç?5ÂfKRtô㪧 Z¦QJWGýIû%´Aǧ(=ý}%'PÏžñ²Ûíf‡ ¨Aë½÷ÞSVV–þøÇ?šJPsM»îÒ‡u‰%Cãëçé¬\³b¹jCB$õPFÆ %%ÙÌ Pe$ ‚ÖܹsÕ»woÅÆÆšJгnܨÞ;¿S½7æ+·M{I=½ìÙÝ9k ¶"”Nœ8¡ÌÌLM˜0ÁìP°¿tß}ÒwH‰‰gÅ*âܨ­(B”4h ;v¨°°ÐìP‚–ÝnWÒÔç4þßÉjw&W·{L—ÿ!IҹϊU\¡sÖ,@mE hY,…†ò4Ý YYYêÕk”údtW/ý¢Z¯/ì¯/LSƒë%})ÏðRããhÕ‰!XŸ›6m–Îf<¨çõŠÞнú? «ÐüĉçÔ°áI)r,:(çSœ‹&™6 Ðð¹´Ôíz]ß*[QzTÏ—Ø:PÍ›¿ #X| H¬¦M›jË–-ºöÚk=î7sæL>}ZÛ¶mS«V­$Iqqqêß¿¿’““5~üx_† ¦˜6m–3ùèqî5›“Eaš¢x/GQhŒ"ô ŠˆˆPÓ¦M%I†axÝoåÊ•ºå–[Î%’tÓM7©cÇŽz÷ÝwkjÞ/¿ü¢wß}WO=õ”BBxîRS\ÓíîÚ•)×°+)IR¼f¨žÎ(DOêï^ŽQ~>«Ò@0 ©®¡W®¡Xî233Õ¸qã2‡_MžWJ õ€" ÁT «Õª… gI< emѽ;¿Ö½^hvX?C úìÝ+½þºôØcÉÀçÀb‚?“̘!]p4i’Ù‘ü €€röìY]sÍ5š1c†Ù¡,»Ý®ÄĩТË.»U±±C”˜8U¿¤¥I :z?ê×7;L€Ÿ¢@@Y½zµŽ9¢áÇ›J@ÊÊÊR¯^£”‘1S’MŽu? •žž¦!+oÓðÆ:q¢ÉQü= ÊܹsÕ»woÅÆÆšJ@š6m–3ùè¡¢ECÔA5<'KKÛ])Õ­kb„G `ìØ±CŸ}ö™&L˜`v(+--]R÷R¯ÿUO)SÍõ|v¸ïƒÔ*$ ƼyódµZuûí·›JÀÊÏUQχCíÔ½£gõg*Œ0'0@­A œ³C hqq1’RÏýkíÓÝzK³5Egôs;Þ‘€¹¹¹;v¬Úµkgv(ÍfKRtôã’R$*IO*[azMï)<ü~mÞü­§Ên·›*ÀO‘€<ð€Þ~ûm³ÃxV«U))Ë•°J¿kƒîU²^Ð=:¥Ï”—·M?ý´NÉÉ#Ô³gR?mSWçQ»5|x-\8ËÌе €Z§  @óçÏ×èÑ£uÁ˜N@ð4Ó•T¨ôô4µm;EmÛ~«¶{ïPWmÓÍúPŽ¡V©Î¡VËMP»P ÖY»v­~þùgMœ8ÑìPFñ™®Š/*¸wï,õèq¥^¸äEíŒl }—þK11C•°J)) µT = j¹sçêšk®Ñ5×\cv(Ã1Ó•·•Ë»ëØ×V—»¥ùóõã¸q¾ `H@Ô*»wïÖ‡~HíG5sŸéª´>º_ºè"iìX_†@ ÁP«ÌŸ?_QQQ5j”Ù¡”¢™®Jk¤ß4âø~i©n]ß8$ j‚‚-Z´H÷ÜsêÕ«gv8űh`ªÇmÐßiÒý÷û6(@@b€Z#44T©©© 㯮êf³%iÓ¦xedÌcÕóI… Ñf=6_ù· WX‹&G ü+ ViݺµÙ!$«Õª””åÎu@ž9·È„fáºäÓ\éÏ6;D@€ Hr$!î ÚívýrUWm©{¡ÆŒyÒm•ó$¦ÞT  ”¬¬,ï6Dÿ9r@#´B?ý4R®… 7mŠgý@¥Q„(eÚ´Yºý€U{ÕFÿÑ0竎… 32f()ÉÛš!”PÊîÍÛ4Zë_ú“ Ju–ww.\@Å‘€J¹ãèÏ:«-н¶†8. âH@øµï¿ÿ^»wï6;Œà’›«ÑÙ{µP ÊÖv(t.\@ÅQ„À¯M™2E¿ýö›RS=/’‡°|¹œÕ?uƒ—R Pq$ üÖO?ý¤?üP‹-2;”à2w®Îöé#cÿ\)£•Ü&”R=]6ÛrscÔZ$ üÖܹsÕ¤IÝyçf‡<¶m“RSñÞ{JéÕ«Ô„Žu@˜‚Py$ üÒ‰'´páBMœ8QuêÔ1;œ€e·ÛIFºòóCõLÖÿtS½†*ˆ‹+µ0!Õ€_Z²d‰rrr4a³C XYYYêÕk”22fJ²©‘Žk°Zè9Ñ;×e±A@`,~Ç0 ½òÊ+:t¨Ú´icv8kÚ´YÎ䣇$‹îÒÛŠÔ½¡'YlPcH@øM›6é»ï¾Ó¤I“Ì% 9ìîü?C5Wïi˜2ÕB,6¨)$ üÎE]¤‡zH7Ýt“Ù¡4Çb‚IÒõÚ¤X¥k®&:·²Ø  fPÀï\yå•zñÅÍ#à94$Y4Qsõ£:jƒú:·²Ø  fÐAʱ˜`ªšêˆFh¥æi‚\=",6¨)ô€@²Ù’´iS¼Ff\¦…j‘î‹ j )«Õª”Ïß‘.½LëCËÚ,AÍYlPÃH@ ˆY·n•N×ðÔ4<.ÎìpA€fsçJ]ºH×^kv$€ AÀ/äææšBаÛíJLœª~—öUáèo‡ó”ø‡$Ùív³C¦ûá‡tñÅ뫯¾2;”€—••¥ž=㕜|¸Ù¡´iÓf9“’,¢µj­Ÿ5OUFÆ %%ÙÌz@Ô¬]»viÅŠúç?ÿ©ÐÐP³Ã hiié’Š’Œ‰zIiºX[õWI¡zç=’$›-‰ž€ièP£l6›¬V«þð‡?˜JÀËÏ•äâÖNi  š«{%} iΞýFÉÉ#Ô³g¼ìv»™¡‚ €söìY}üñÇzôÑGU·n]³Ã xaa’ IÒ5IÙj¨åz\®¤ÄñW~†cLÅ,5&""B;vìPaa¡Ù¡…¸¸¥§§*B]ô}£dMÔiÕó°gw¥¥=ãóøH@Ô°ÈÈH³C6[’6mŠW\Æ ²ê¬æi¢—=CœÃµð=V«U))ËõÛ•]ô©½¾~2:zÙ³Ð9\ ߣˆõðauÌ:¨ôúJJõ²Wªââb|çеPÉÏà£W-¿¨nóæºsÉ<Íéý{edÌÔ]ŽçM…’R=]6Ûrs/´H@ –)¹â¹tTÒsÚ—žª—ô…Þ¼¨­¾ž>Gï¿ÿŠl¶7•–öL±$ÅfcEt€yH@ –)¾ây–¤Q’fj¬:¨¾¾Ð?~Ý əڴ饤lü 5 ªÍÙ³guçwjÛ¶mf‡Ð+žwwþß,I3%u×DÍÓûªj#Öûø+´qãF…„„xüIKK3;< Ú-Y²D+V¬PDD„Ù¡4÷Ï%G2ÒK›ÕYßhn±©w»;“üC°|ࡇÒµ×^[ìµSã’‚ IDATèèh“¢jFAAþñhذaŠ5;œ€V´â¹E’#¹_¯j§:è#õwÛ“õ>þ‡Ä®¿þzÝ~ûíf‡Ô¨¥K—ê§Ÿ~Ò’%KÌ%à¹V˜˜¨¨¨(Õ­[W}ûöÕ–-[Ì ¨V‹/Ö®]»ôä“OšJPp­xž°JW\ºU´@KÔOÇåÜ£PRŠs½$3C †`Õ ÈÈH9RƒV“&M´}ûvÍž=[×_½6oÞ¬Î;›"Peyyyzê©§4bľÓ>dµZµpá,iõjéöOõóÐ “1”õ>~Ïb†avÁ$##C:uRïÞ½µnݺbÛ¶nݪnݺiË–-êÚµ«I“ššª¾}û*55UW^y¥ÙáŸ~ý¤S§¤Í›ÍŽ‚íµª£ÄÇ¢££uÛm·iÕªU2 C‹åü~¬{÷î:t袢¢Î¿3ª×?HŸ|"-^lv$” ˆ Zµj¥³gÏêäÉ“jРA©í“'O.Õ˜=z´Fí« !ù0É«¯JV«4r¤Ù‘@@Zºt©–.]Zìµììl“¢ $ &ؽ{·êÖ­ë1ù¤9sæÐ¥ l'NH‹I“&I‘‘fGÉÓ`×,T³`Õ »Ý^êµo¾ùFkÖ¬ÑÍ7ßlBDÆâÅŽ$ä4;*„¯zõê©gÏžjÚ´©ÒÓÓ5þ|5hÐ@ÿøÇ?Ì@meÒ+¯H·Þ*µnmv4T H >|¸–,Y¢9sæèøñãjÚ´©FŽ©¿ýíojß¾½ÙáðCv»]II6¥¥¥—˜R7©hJÝM›¤ï¿—æÌùÿíÝytTõýÿñ×d!ÁQ &ŠÊ&*¸"›Z¤k&)]’M’S99ÙZ³&UYYîu=þö7©{wéÊ+-®€Ð1@HæÏŸ¯)S¦ˆ%„j߬Y Ü᣿\áCrý™î¯ÜÜyJKK—öî•V­’î¼S"ê!€ ÙívÍŸ?_-Z´ $ ²³s$õ ðh?×ãû›+M˜`beÔ€ =úè£ŠŠŠÒC=du) ’éò–Š"uÒ–,‘&M’X{PO@eëÖ­Z²d‰fÏž­–-[Z]NƒU*)P×6§n,Ü%<(M›ffYÔ*€ Ìž=[‰‰‰L¬F}û&KZàѯ4åø^éúë%fÑÔc§”••¥×^{MsçÎUll¬Õå4XééiJJš-)K’Ó½5_Òx ‹§ö‡j؇ßëôÓ/R׮Õ’2\'Îô»è)uÓð¨’aš9s¦.¸àýîw¿³ºœ-!!AYY+Ýë€ÌUQ‘C»víTII†¦–îÒ×:¨w ÿOR>`Š^ê8Z@T©°°PmÚ´Qzzº""ø“n ÊÈX Í›ßÑe—õTII†ÎU Õ'Z¤û$ PÀ)z¨hP¥fÍšiÕªUV—Ñ(¹¦åM×tÝ¡½ŠÑJÍðÌ~ÊΞkfiT_g@åpDª•èVýSS'•(&À3#ÜSøP÷@ ŽŠŠ*ÕíZ"IZ¢³TÕ½®)|¨û PG èÓ]÷h‘þO¿×]¨ÀSô®sOá @ÝG€:ê/ý»*QûµHƒ%Ý/i¶¤µ*Ÿ¢×))KII)==Í¢* ƒÐ .2 µxá}úX]Nã–ž.u–4nœÕ•Pëh IJKKSdd¤æÏŸou)BAAÒÒÒ•#‡#RQQ¥êÛ7Y §Ý¬V+VH HÑÑV— @­#€Ð矮þóŸZºt©Z·nmu9 žÝn×Àc•›û˜¤tI6INåädë²×Gi|³fŠ˜<Ùâ*º`\II‰îºë.õïß_·Ýv›Õå4 ³f-p‡þr…IŠPK£ßÞ¯·Ïî!5kfa…„- @#÷æ›ojË–-Ú°aƒ"ðlŠìì¹Z>|MÕ3²É¦'ât½ùe` î6€FnôèÑÚ°aƒzõêeu)†Ã©ò–—æ:¢éú«žÓí*ÐiÖ€  @#g³Ù&‹Š*•døl»K×i:®šá~€†‰&ëÛ7YÒº²ßOS¡fèI-ÓmÚ«ÝîÇh˜ `²ôô4%%Í–”%É©ÛõœN×!=¡«•”ôÒÓÓ¬.€°a:˜Ä{íÈV|üŠ1"ô@aŽÞn~¦†Ü¥ôô•JHH°ºT†&´öÇ]JSkmÒšK+;;GƒM*[”0==0hp @#rèÐ!9NµlÙÒêRßµ?\bU¬‡ô¢^Rk-zçnIýä½(áš5©ÊÊ¢Eа0hD¦OŸ®K.¹D¥¥Ì²d6×Úý|¶Ý¡Åj#»ÕßUqQB©¿rsç)-­òz!Ôg ‘X½zµþùÏjÖ¬YŠŒŒ´ºœF§âÚ§©Pèqeª½ruS€½ú¹ƒ höï߯)S¦hذa?~¼Õå4J×þ¸GÏê ýª¹ê®Š‹–‹pÐÀ†¡)S¦¨¤¤DÏ?ÿ¼l¶@7»'ïµ?šëˆÒ”®4I¿(F%,çdQB@ƒC¸ŒŒ ½ñÆZºt©Úµkgu9–÷Ú÷ê)Å©Póô ¤Ör­âÏ:%48 ËÍÍÕôéÓuÛm·éÆo´ºœF-!!AYY+55õÿ4+bŽVœÞ^ñÉwjìØfêÔéAy%tqJÊbQB@ƒÄ4¼@–‘‘¡6mÚhÑ¢EV—¹BÈÓ ‘Rófš¸=[[µ’ä½@á\9‘^ë€0/ á!€ Øœ9st÷Ýw«yóæV—IÊÍ•/–æÌ‘ÜáCr“ŒŒ€yè‚4`6›quÉCImÛJÓ§[] –!€@hâÄ™Jír‰´r¥v¶ÔÄ»þ¤‚‚«KÀtÁ€0±Ûí8p¬rsçé­×JÑü}_Ë™ùµÖ¬IUVc<- &³f-Pnîc­=¬Ï4COÊ©hIý•›;OiiéV—€é PMžîU))ÃÕ½û(¥¤ ×ĉ3˺Wegç(V=µP÷ë-ÔºÖkï~ÊÎα¦p,D, øñǵ`Á=ýôÓŠ‹‹³ºœF¡¼{Õc’Ò%Ù$9•““]Ö½ÊáˆÔýzR‰Ú««õa…WˆÃi~áXŒÔsGŽÑo~óI’Óé<ųQ[<Ý«¤þ^[#äݽªƒqLj¾é^m×9^Á©¨¨Ró  Ž  P•––jܸqÚ³gV­ZÅz&ruŸêàQW÷ªyŽ}:ªXÍÕÃ~ž³N}û&‡±Bê&P=ðÀzï½÷´råJõèÑÃêrW÷)[€G#Ô÷ðAõßñ£žLh«£Ú,ÉÓ:å””¥¤¤‡”žžfJ­Ô%tÁê©ÌÌL-\¸P‹-ÒСC­.§ÑquŸ2ä/„Äè¸þ\ðtùåšùï«`Öegϕ騨Rõ훬ôt¦à4N úì³Ïtûí·kÊ”)š6mšÕå4J}û&+'g|Ç€¸ÌÖ$µ;yB#vÚvéd¯Ð‘Fè4ztÁê™ÒÒRÝu×]ºüòËõì³ÏÊf Ô ᔞž¦¤¤Ù’²äݽª»ëýKk‚ÞÉýT[·¾¥œœ·•™9Z¤²: Ñ£¨g"##õî»ïêôÓOW“&M¬.§ÑJHHPVÖJ¥¥¥—u¯ŠŽtè…kõKQ=¦¿«¼{–ïìX ,¬k@€z¨cÇŽV—¹Bˆ'L轑ãԯ谮Ðk*V¬Ÿ=ú);{®¹EPÇ@ †ìv»Æ^|½ÞÞùþ®³õ‰® ðL€1 PC¤¥ë‘E²ëL¥©»\³cùÃâƒ@ †º¾÷®.×7š¨ ª§¤užÉâƒ@€:ª´´T?üðƒÕeàTrrôûzF÷è3 –”&©òìX,>€ ¨ƒ‡n½õV 4H¿þú«Õå '¤±cµ§Éiš¥ÇÝ$­”´JÒHI£Ô¤Éš0a•²²X|¡uŒÃáÐïÿ{½òÊ+ú׿þ¥3Î8Ãê’Èý÷KÛ¶iùÐTxó{•/J˜ É3Õn–n¾ySïàF P‡kìØ±zõÕWµråJÝtÓMV—„@V­’þþwé/Ñ´¥ ü.JH·+*£¨#Ž;¦o¼Qk֬ѪU«4räH«KjT Ü‹ æÈáˆTTT©úöMVzzZånS;vH“'K7Þ(Ýq‡l¶J‹–ïO·+¼@€:àÀ6l˜¶lÙ¢÷ß_—_~¹Õ%5*v»]ŽUnîc’ÒåZÁÜ©œœl­Y“ê3v£à—_t¢O?éX±Fw\ÇÏQTèfÀ©Ñ ¨–-[¦;vèÓO?%|X`Ö¬îðÑ_®ð!¹þ<öWnî<¥¥¥K’ìùùÊ:¯¯ZýzTÃK²´!÷=åä¼­ÌÌÑ0 Uõ¨f̘¡7ªwïÞV—Ò¨hâÄ™zùå÷$õ ð¬~ÊÎΑ$ýwDªF³k¢–ëõt?^9¨€Àè‚ÔêСƒÕe4*¾Ý®~RyËGEr8"¥wßÕ˜ Ÿéq¥éýÖÏóú);{nø   €h”|»]•J2TB ä ’#)Rgüœ£¢Q×ëËÓÚè¡ãxEwPU¢ €FÉÕ­ÊÓí*YÒ:÷¿í’R%–´Zgëi½á8¦oçè7'[ÊðϦSQQ¥á-€€˜ä›o¾Ñ‰'¬.n®Ö O‹Gš$Ï:é’\-#-uPïê:*N#õ‰Ž8úºŸãÏ:õí›öº¨ï ŒgPmJÊpuï>J))Ã5qâLfç±aúë_ÿª¾}ûê©§ž²º¸¹Z+ ÷o ’VJZ%é}Iý¯Cú@רµöë:½«µ‘”®èèIbÁAª1 H(kÀš2eŠÞ|óMÝ{z1c†Õ%Á­oßdå䬓k ˆä ! $ý¤æ:ª÷4TµCCô‰¶©›û9muÖYuÙe«Xp€j¢¤ v-˜ãÍ7ßTJJоüòK½ùæ›zê©§cuYpKOOSR’§ÛUykFœ~Õ4L=ô£®Ö‡úNÈ5(}¦¤aÚ½»@ÙÙ9êÛ7Y_|ñ‚6o~G ‰Ò€øª­¨|-„×Áƒ5aÂÝpà 0`€~øá5Êê²PABB‚²²Vj„UJN©nÝFi@·kõEÌ·ê©MºVïk£úÈwPú;:yr#‹PtÁj@|ÕVT¦-((PZZº²³s*tqI«ß2OžúXÒ/rhƒêëD Ôw´€ Î õÛæÀãFÒäºQ#i€Bé»?bÄmÚ´IO<ñ‚FžQ/D¬Ï*‡JïV.ï0â ™¾á0FEš®ûôÈŽ5*-uj†êiM—S‘’Îs¿Ö\I‘jÒd‡n¾y(Ý©0 5RV-ÅÉøüìsŒ+Ú_ä~ ï}+þ”ÉÉÃjûÔ°úv¿V@¨¨¨ÈHKK3Úµkg4mÚÔèׯŸñá‡|¾è`nð ÷Mz(7­þŽãæ›§ÆäÉ“öíÛ’Œ¸¸8cÔ¨QƲeËŒâââ€ç£I“óL¹i­Éù÷{Ôæõ õµ*‡ÊûÝÿö#N£·6Ïë6ã¸bbEKu›1´ëåÞ0 ¨=š#€„ÑØ±cèèh#--ÍXºt©1pà@#::Úøâ‹/ü>?œhï›Ð.]®1âã/0š7ïiDEõ¨ö7ÜÉÉáýf¹&7À¹¹¹FDD„!ÉèÑ£‡qß}÷~ø¡QTTpßÀSñ[vߟnÝFÖèØ*¿_í¶ y®w·nWÑÑջƵy}«óZ?³®ãøÂ8KSŒYºÓø^)†!¿è,ãAÍ3”oHï]»^^!@Ú ©ê2‚E©9H˜¬[·Î°ÙlÆ“O>Y¶­¨¨ÈèÚµ«1pà@¿ûTü@×Ö·ã¾7ºÿsߌeÒŒ}3Ü­[xoÒ«¾i=^å °Óé4žþyãçŸúý|Oø»í„«É÷zWu]7ë>_µy}kôZ¥¥†±q£q,-Íø¹U[ÃŒBÙŒ—t•1Lo‘*qŠÕFTT÷Òn¸ZB†ÒH£I“ój½¥ Ð8@jŽAèaòꫯ***J·ß~{Ù¶˜˜Mš4I³gÏÖž={Ô¾}û€ûZÝ;''[Ÿ~z£ú÷ï¥ï¾û9¨Á¾k*ÌTù Bsä;Õ©·S¯^UËCáš é°¤­îŸ-’¾uÿt–ÃqzÀ}m6›&MšÒûù®'âv%—ª§ð­ÞûU仈ž÷àm鸜N‡""b$ÅTºþ¾×;Ð5¶KZ¨íÛw?^y}m^ߪ_+_ùù;•’2\G¤b#Ktý9m4óÒóÕ|ýzé“O¤‚ŵh¡Î×]'¥ãèÃGÿ®¼ìÅJr,UTT©Nž,Ôöíîã®ø~ÞÏêÚu$ϰ$L6mÚ¤nݺ©Y³f>Û/¾øbIÒ7ß|0€ÜtÓ4EFF)7w¾*¯îÝEyyNååýNn+†ß]ïWœê´ÀýXޤHmß¾S'Î lª^µü=³ˆžo-4VRààà{½­‘â=•mù{Jý•›;OiiéÕZ•>бîÙ³GR–¤>7Ñ.«êsx¸úþU}´Qè[Ån)–ã-›J.ê£èÛo—®¸B4HjÒD’ÔZª RR†{Õþ ªÉê&˜†*%%Ÿꪫ*mß¼y³a³ÙŒçž{®Òcž&=i½»›”¿.@Þƒqƒë¶ãÛýÅûßÞÝŒò½ºf7V ðìSo‘‘ i™!½oH/ÒBCºÅˆ‹kc´k×ÑèÜù’*»•­Y³Æ¸ð†ô¨!}mHG*ëØ±wÝE-˜ñ•»|…Þm'P·¹œœ?c2NÝÍ«r7­Š¿{×x•ßÇhÑ¢€kl±½ü½ƒ™]¬*ùùùƹ].7ÎÒëÆEzϸI)Æ,Ýa<§IÆÇbü¢³ŒR÷›:aü dc¹~oLÓ"c>7âôQHÝÐ|?çŒû„]°jŽ09qâ„bbb*m-{<°IÍäÿ›ëàºíHåß>çåí«;Š!é¤Ê»¦xKìýø·’vI*”T¨ÜÜ 5tèh v¹ Õ³gOM˜0¡lÕrW«ÂܲV…¢¢#úùç’nóª-NRkWaaI‘ÔGZo ¤>xC¤*7÷*÷þ’§âì³gꫯ"•—÷„‚Y§Ã·[’äÝÚ“›©sιN Í$}%×¢…’o·,Ý|óª*»íî6÷ž^|ñF9™îs?WU-¢çâú–¾r7-ïßírµ†”¿ßáÃNIWÉÿ5ö¨eD’l²•Ø”£¯Þ|F?òWýôÍŠ*1kWti‰N;¡ôž×*^Å:·]K]7ðvò¤tèd·KùùŠûy‡rNKú¬ì•i»¶+F¹jªM16åEœ­'^Ô7ê¥ãe×ØÃ©ì쿨±2ßn^ ’VЍ{ aÒ´iSWÚ^TTTöx OéJ%©PR+y‚ƒ­,@DHYö\×ör±¹_êØ†¡Ò‡ÆÈ¦12äºá4Üû ”tº\ad™¤n’¶KúÁýzßHÊ÷zU›"6J19ë©6 ÒŠ’\·y†!µ—¤IÒ—k·¨P}dS”\±&î÷ß&é\IMdÓ,߃Î=*û)áÜ®e›$å$:´ýøX9\(ÃéTII‰ë¨w*-í&iv¥s Ü#Úß³z$¹¾ø–tçúï5^ëÝO(‘M›%u–Ôµépœtø€lºÒ}>Zx½àÅÆæ©×–Ò¥—ª÷{Ú–§L{+I÷{9CRžäh%i†\ãX²ÜÛK$='©£¤æîß÷ȦBÙlÅü+Z%%¥*uw[ríó“ÊÒNI-%Ý[áì”kµïf²©DZ¢(©(5Q”îŸÝŠREªÔk›ë'Z%ŠÚV*ÅÇ«µ¤…•¸ÌIEëÐÿšÉþÃ×jŸÒ]Ñ­ZI‰‰RïÞZòÒô­ýåëLå«­vª£ª¥<Á,9i¤ŽHmÝ:(À«G¸»Å§r—±Ð$0$LÚµk§½{÷VÚ¾oß>IRbbbÀ}—ê¸âä”tL®À!]ª8]ªæ’ލâe3ʾÉ6¥Ž“´o¯]ÇÇK:M®¹»äCÑT†¶KJ‘ëæu€\¼K$æ~­‹¥²Ð%餢¢ÖȈn*ð©ð@‘ÿ”§ž=»+ÆÝ¢ã툭‰Ž(ÉÏ‘”¡.Žº•NîQJ›6>[›HJîÐAEEEúàÃ/u¬è"¹F|*C=ü¾’¡D;ñ?ë5Ææ·ë°Îrÿ¶Ñ}Ü­+œÃ³%µQóæ›±_†Ó&[„¡Ö­ãճϵŠö>V[åÖƒœòô«zû©èê#×÷.Iݽ;G†¾—”'鸤K%%H†MF‘$½+W+†çýöÈÐyîß÷Êu³mó:¹_ÿ#II’ÚªT=åзrh¿Œˆb5‹“Cmeÿõ*9ÔY¥Š°YtUIDAT¬AvªÏ%?hòÔ RÓ¦e?~b‰þ½z˜N¨¿N¨©+^EŠu½I–&\è{ƒ¿äíÚjŸàç|HžpQ›ÝÓÓÓ´fMªrskÜ qZ±b…V¸¿tõ8|ø°EÕ4 wk°fΜiDEEGŽñÙ>oÞ<Ãf³»wï®´Où¯½ú°Q¡û­†ôe€¾ûåc@ªÏpa³u5âãûIIÃŒääaF||ŸcBxúÜêOZy,DhÓºúÖž)vO5hÜM0c{*n÷>U»Ñ¢Å…ÇÇTg|G¨kyóüÊ×µò˜–P¦Ë5caG@ãÆš#€„‰g… –mó¬2`À¿ûøÃð·NÃØ±w:]vÊÇP×]¼&EèƒÞ¿Võ½W¾™ ífØ·¦š¯oáoaLjˆjò®5˜sS1¤yQÏï_Òu!ƒªŽ!˜›õÚûL•v|ƒÐ¾>XRstÁ “¾}ûj̘1zðÁe·Û•””¤åË—kçÎÊÈÈ8ÅÞNIYJJZ¨µk_©4`¶|:Ù¹¦“-\j×–ÀÝW6Èw´ïT½/¿¼£lÏ{~­Ö*ŸŠõÔÓÀzwçñ"W ušUßš!Éw ߢ"‡víÚ©’’ ¹Æ{Œ“´XÒ«jJVùàö@Óûž Pk0u‹רC‡D÷yˆÓ9[vû¯:r¤òÔ¶ÎA¥WNHiLDí}¦Ö©S§™**ê¥Áƒ'È0¢§Ž/RIÉ2û™õ”Õ ¨!+**2fΜi´k×Έ5úõëg|ðÁŸïIÔ;_Ré›èP¿­®Î*Ûþ¿Õïéµ_Õ­ž©f½÷÷îæåÛzÚ·÷þ»”…Ö…Ès|ññÁtcó¨<…¯w«÷y®X“Ýp­D>кVhŘaHƒèè nÝ®©¢ \àÖŒšN“H ÏÚØ±÷Ôè3åy­ÔÔ;ÝŸƒŠŸ£@SO×¢€h©9HèÌÕäæÔ÷ý‚é>dÒj£yóž~kìÔécìØ{ª6ûþWâ?Pyöl´hÑ?èþþ¡ž›Êï]ÕxOMW’g½§WèR:N}|UßÜ{Ž¥6Çkôný ý|ú v´€ê&HÍ@ê@èPgª)ß÷óîVTÕ7Ô5™Ý)¸›u«f8ª<ø:˜µB¿fá>¾SµnŒ{ѤÉy!×j ]àÁìÕ Ú˜‰Rs B¯*Àö¡¢"‡&Nœ©ììœ ƒÒÓªµâ³ïûy¯(½C 89PVn÷ Æž#is€çHÞ«»‡:h:XÞÌý¿Êƒ¯½ÀWg¥qÿ ì…ëø<*¯ïªEꢼ<§òò~'é…Zwà×õ?x<ð`vïÏıŽ ¤¨zö¡ÿi×®ÊÌürÝÄ»V™ÎÉÉÖš5©ÊÊZr©ü~Þ+J{fsªèh€݈—ÏîTTdÓÉ“¡ÝôֻݮǺo ýŸ¿Ê+l{Ïdå™k®ûqÏMs ó!…ºÀ^mÉÎHzR®úC_°òëV=SZåóé‘ é~uíúš4‰ 8èß"¬.§æšNu]€Gg©¤äy¯ˆ]ñÛçÚ{¿4I3$})×M¶ä™2¸Y³ýr…“Š<7´þ´R‡‰êÚµ]Ï ýf½  @'ÎTJÊpuï>J))Ã5qâLTz®ï·÷þÏ_zzš’’fË5…°S®å’+:ú uê¡øø»ßWIIÕœ¤`¦È å‚Ý'pKZŽÊÃ@UŸ5ÿuû¾®]®p6ZÒjIoéäÉo•™9Z¤ª  ÀÏù”*N=½yó;úé§·´yó;ÊÈX@ø !±ºÊêSXÕåèèäZRÕûyÏhUq²ÿ}N½r{uÙûêx„`Çׄ:>£öf! nÖ³`ö n…úà§7öœßq#u{<5Åš#€Ô!U} ݰ%% p³çú©îÔ¥Õ¹Aô·O0+·×æ P¡†™PW÷÷9¬Î1»Op+Ô{BHà)‘ £bà™a7S3Yê?HÍ1¤ž4@9%e¸Â1Ö :¢íÌÊíYY+Oùœ`ç yh÷uuïPTwPy¨Çì>Ÿ~šÄ õ’,Ý|óªJÇáÛu-IåcbB|H=x@¯ÌX3s#^[3@jưŠ7Àuñü…z Áî“à7èõìÙI_}õ òò—o0 <û”oà v¦4k߀º…RýùÏ‹”›{ ¨)uÓÓÓ|«Ý8§. µE£.ž¿ê´Ê»OMZ©¼U<Þ­&u+Ѐº…R½ýö•’nU0SêúV»±N]j‹F]<Õi•©iKN¨-P¬åªËf†aupÙ¸q£úôé#ékI½+<š¥ *÷Ň¯‚‚ ¸E£:뢘­:Ç`öqOœ8S™™£å?ðüG]»¦ûYË£z cP—xî×¾þúkõî]ñ~ Á ¤Þð?ø¾êb‹F¨ªs fwÕ]×\kyÔ‡s ÌG HRu ˆÔ­Û(ýôÓ[¦×øS>n$‡–@£A HÍÑRo0ƒê–Úš¹ 4.V€`1ƒê?Hô\ýéåþß,÷ BiÖÔ]°ê ‘#ÿ«ÜÜWêåj *:èϾ—AMhè‚À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@Â$33S~ìv»Õå–ˆ²º€†nΜ9êܹ³Ï¶øøx‹ª¬E H˜]wÝuºùæ›}~bbb¬. uÄŠ+¬.&âz7.\ïÆ…ë f†aèèÑ£*--µºÔAü«qáz7.\ïÆ…ë fC† Q||¼âââtýõ×kûöíV—X†1 a§‰'jÈ!jÑ¢…6lØ ¿üå/8p 6nܨ:X]"`:H ÃPqqqPÏ•$3FcÆŒ)Û>jÔ(]{íµºì²Ë4oÞ<ýãÿK­@]F ÂgŸ}¦+®¸"¨çþøãêÖ­›ßÇ.¹äõë×O}ô‘ßÇOœ8!IÚ²eKõ E½søðamܸÑê2`®wãÂõn\¸Þ‡ç>Ís߆Ð@‚pî¹ç*333¨çžyæ™U>Þ¡CmݺÕïcyyy’¤[n¹%”òPÏõéÓÇê`"®wãÂõn\¸ÞK^^ž.¹ä«Ë¨—l†aVј\tÑE*,,ôÛʱÿ~½ÿþûêÔ©“š6mjAu¨Ê‰'”——§k¯½V­[·¶ºœz‰&JHHðÙöŸÿüG#FŒÐôéÓõÔSOYT`H˜œsÎ9êÝ»·úô飸øxmܸQË–-Sûöíµ~ýúJáh  aòÇ?þQï¼óŽvìØ¡ãÇ+11QÇ×#Û¶mÛfÄÆÆ·Ür‹EUÁ,©©©ÆUW]e <Ø8ï¼ó¬.µìðáÃFÛ¶mÑ£G[] L0{ölÃf³999>ÛÇoØl6ãСCU†š*..6òóó Ã0Œ 66›ÍX¾|y¥çÝyçF\\œ±k×®²m}ô‘a³ÙŒçž{δzë#º`YìÕW_UTT”n¿ýö²m111š4i’²²²´gÏ «Cm0`€¢¢¢|¶uíÚUÉÉÉúñÇ-ª føüóÏõÚk¯iÑ¢E2 C6›Íê’PË^~ùeÙívÍ›7O’«‡Óé´¸*„‹gÁà6mÚøl?óÌ3©&MšXQjA“&MÊ®«QEG¡×^{M#FŒP‡ʶ]yå•êÖ­›þýÎúŒb±M›6©[·njÖ¬™Ïö‹/¾X’ôÍ7ßXQLd†òóóYMµ+--ÕÔ©S5eʺÙ5`}ô‘Z´h¡]»v©{÷îjÞ¼¹âããu×]w©¸¸ØêòPËn»í6µmÛV“&MÒ·ß~«]»viåÊ•Z¼x±¦M›VPÐ0íÙ³Gºè¢‹*=vñÅkÓ¦MTUDú)§}ûö©]»v•¶{¶íÝ»×ì’`²—^zI{÷îÕܹs­.a²xñbíܹSÿýï­.a´mÛ69Ýpà š|X×]wŽ9¢÷Þ{Ogžy¦Õ%! ¶mÛ¦¥K—jêÔ©Ú½{·òòò”——§¢¢"ž!C†èÀúî»ï¬.µÌápè±ÇSFF†öîÝ«N:éî»ïÖ´iÓ¬. a­GyDk×®UQQ‘ºté¢ñãÇ+--Mt2©Ï:wî¬_~ùE’Ê&‰ñ,"»cÇuìØQ’”““£ûî»O_|ñ…bbb4|øp=ùä“t¹<ÓϘ†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`Ó@˜†À4¦!€0 €i LC`šÿ~¼3 £ê8ÞIEND®B`‚lmfit-0.9.2/doc/_images/models_peak3.png0000644000032700003100000010134412603520205021340 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝyt•õÿñ÷ÍÎ"a_®ìäb› .¸ŒP÷Ö©ÃŒµ£m§µ32ØeÚ_§êüjµ3í¨t™j:]ì‚m]ªÖ­… IØQ B a'Br\pd ˜{¿¹÷¾_çpžä¹÷æù䜒Ïý.O$‹Å$I’¤$È @’$IRæ°€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€œ„}ûöqë­·2}útºvíJVV¿øÅ/ŽzN,ãç?ÿ9—]v  cÇŽD£Qn¿ýv8(¹$I’–ä$lÛ¶Ûn»U«VQRR@$9ê9ûöíãú믧¾¾žn¸ïÿûLœ8‘[o½•3f„ˆ-I’$—:@****bË–-ôìÙ“Å‹3a„÷='??ŸW_}•3Î8ãÝsŸùÌg4h·Þz+óæÍãüóÏOflI’$)8G@NB^^={öâS­>HnnîQåãˆ+®¸€•+W&. $I’ÔFY@’lË–-tïÞ=pI’$)ù, IöÝï~—ÂÂB×H’$)#¹$‰î¸ãæÍ›Ç=÷ÜC§NBÇ‘$I’’Î’$¿ýío¹ùæ›ùìg?Ëç?ÿùc>¯¦¦†ššš$&“$IÒ‰èÓ§}úô #eY@’àÏþ3×^{-—\r ÷Þ{ï1ŸWSSÃøñãÙ¼ysÓI’$éD±hÑ"KÈI²€$ØÂ… ¹òÊ+™8q"¿ûÝïÈÊ:ö²›šš6oÞ̯~õ+FޙĔÊD³gÏfΜ9¡c(ø³¦dñgMɰbÅ ®¹æjjj, 'É’@+V¬àâ‹/æÔSOåü#ùùùÇõº‘#GRZZšàtÊt;wöçLIáÏš’ÅŸ5)5X@NÒ~ô#vîÜùît©Çœªª*fÍšE$ᢋ.bçÎüË¿ü O<ñÄQ¯2dÈÞ'D’$IJg“tçw²aÃ"‘>ú(<ò‘H„k¯½–––ª««‰D"|ýë_ßëÿþïÿÞ"I’¤Œc9IëÖ­û‹ÏiiiIBI’$)ux#B)CÍœ93teÖ”,þ¬I©Á"e(Q+YüYS²ø³&¥ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$I’¤¤±€H’$IJ ˆ$e¸ïV­ B’”), ’”Áöî…›n‚Ÿý,tIR¦°€HR[¶ b1(/D’”), ’”Á**âG ˆ$)Y, ’”ÁŽM›`ûö°Y$I™Á"I¬¼FŠ|d4D’¤D²€HR†ŠÅâ¥ãª« /Ï"IJ ˆ$e¨Í›ãÓ®JKaäH×H’’Ã"Ijõ ›øwrÞ/¯ã_#w°é…Õ|ík0~èd’¤tf9AûöíãÖ[oeúôétíÚ•¬¬,~ñ‹_|àsW¬XÁôéÓ9å”SèÖ­×^{-uuuIN,IàÁ™ü¹ÑÜÆÍt\_ÁåËïà±µ£Ø÷ÝqËͱÐé$IiÌr‚¶mÛÆm·ÝƪU«()) ‰¼ïyÕÕÕœ}öÙ¼óÎ;|ç;ßá+_ù O>ù$^x!MMMÉŽ-Iÿã׿†™3)ëõ1®œ°‰È¢Eì[_Çšé7ò#nä‚ù·°qcè’¤t•:@ª)**bË–-ôìÙ“Å‹3a„|ÞwÜÁþýûY²d ýúõ`âĉ\xá…üüç?çsŸû\2cKRÜë¯Ãg>Ÿþ47”ýŒÉ¥ñ7Pºô) ËÓwÓxkO¾ù­oðÈ­éÿÓK‡•$¥#G@NP^^={ö ;ö4…‡~˜K.¹äÝòpþùç3lØ0~÷»ß%<§$½ÏÁƒð÷cÇÒô£Ÿ°be„hôè§üÛ×y£èr.xàZز%HLIRz³€$À¦M›Ø¶mãÇßc&L`É’%RIÊxwß k×Â}÷±j}>MM0fÌÿzN$Âæoÿ”CÍö~åÖ 1%IéÍ’555ôéÓç}õéÓ‡íÛ·»DRrmÙßúÜx#¿»ånqñûŸZ|VW¾Å-t˜{?TV&7§$)íY@`ÿþýäçç¿ï±‚‚‚£ž#II1gdgíñQŠ èߺtyÿS†ûs¿È®n§ÂÍ7'9¨$)ÝY@ ]»v8pà}566õIJ¸]»àž{à _€ÎøMß7ýê°ìl<YYðôÓ0~<¾¥Ñ1"~œ¿¦ÏrÃ_ÿð…¤D–$¥7 ÈI¸óÎ;Ù°a‘H„G}”Gy„H$µ×^K§Nèׯ/½ô_úÒ—øú׿N~~>—\r wÞy燮ÿ¤Öð›ßÀ ÂLyøaÈû﬋0oL›Ï> ÿüÏþúáÃÿçã׆~š‹×\ «Wða‰ .IJ{“°nݺãzÞ¨Q£xæ™gœF’Þïæ›av§G™|ð ÿuàSD"ñµèíÛÃÎ0cƇ¿¾C0 >U+ÿ¯/c×w )|àøö·“ó H’Ò–k@$)Í47CUDW=ÄÞ±g³…>\s <ö|æ3н{| Ö_2cF|§¬Ã ø]ì¯iùÍ\ˆÅÿ H’Òš# ’”fª«¡ã¡L9ôo ½ Êâ{öÄG@.¿<~¯¿äÞ{ãÇ à6>ÁçÖÝ¿ƒá±n "IÒq°€HRšy縌ÇÉá?ÚüqzöŒO§zôÑ“ûz§ž ÏsMí;‘ûÈ#IÒGâ,IJ÷Ý X·®â!^åLzµè¨å'£woÈmŸÇÚá—œ|‹‘$é0 ˆ$¥X,~£óüªW7p!Ïñzï+hnþèWE"ñQº|Êˉ­YÛ:¡%IÉ"Ii ¾àÕW¡àõ) ‘­.ZgçÜ¡Cá«ÏOçy¬ºûÉþ%IË"Ii`ýúøqùrè·ôI¶v<•Sãs¯Z£€|ç;ðãŸw`AöÙäÍ{ú£AIRƲ€HR8|oT ÆäO±näǘ01ÀèÑýëŸþ4”Í ßÛ/Áþýý‹J’2’D’ÒÀúõñ-vÏ첂Á¬gÏYãœs`ÅŠøô©Ö²¥d:yÍðÒK­÷E%IÅ"Ii`Ã8®+z–Fòi7ã\"1¢u¯SxÆH6f ö”Ó°$I'Ç"Ii`Ã4ÎižÇÎdàˆv ¹Îˆ‘žj™NóÓÏ&äëK’ÒŸD’ÒÀúõ0¸_§n|‰ÈùçÓ·ob®3b<Çä¬]›7'æ"’¤´f‘¤4°aLÎy“¬}{9ïöó‰DsÓNƒ—³Îò ‰¹ˆ$)­Y@$)ÅíÜ »vÁéuó S'7.a×Ê˃Â!=ØÜ= Ï?Ÿ°ëH’Ò—D’RÜ‘-x®çž 99 ½ÞÈ‘ðFûiŽ€H’NŠD’R܆ O#§,{ Î;/á×9ß{¬[÷?w@”$é8Y@$)ÅmØSrÞ$rð œ}v¯7n<ºýlb‘ˆ£ ’¤f‘¤W[ ux9¾þc̘„_oüxØIv¯¼’ðëI’Ò‹D’R\]L½ S¦@vv¯7p t뫺Oµ€H’N˜D’R\ýÖfJ^…³ÎJÊõ"‘ø(ÈKÍSaõêøŒ$IÇÉ"I)®pC9íNÊú#Ƈ«§Æ?Y° iו$¥> ˆ$¥¸S7½LSv>L˜´kŽe[ûq¨ß@§aI’NˆD’RÜð¯S[T ùùI»æøññcy§©zÉ"I:~IJa--Pr`!;†MJêuûõƒÏ~¶r ”•ÁþýI½¾$)uY@$)…íX½Óx‡ýc’[@"¸÷^¸ð›“È¡™Æ×–$õú’¤Ôe‘¤Öðâñ&%·€ÑqÊÉgï¼…A®/IJ=IJa±×²•œäú½ûçRF)±…o¹¾$)õX@$)…å¿õ: ™Dž‘ ×/*‚…L¢]¥D’t|, ’”ªZZè¼ú Þ`]º„‰PXoåN¤cí;°m[˜’¤”b‘¤Tµz5ùûw±¢Ó$²³ÃDˆD ª÷Äø'o¾&„$)¥X@$)U-Œ/üÞØ;y7 ü ‡œÊžünð†Ó°$I™D’RÕÂ…lê4‚ü^ƒÆèSayljIÒq±€HRªZ¸eÏ G°1ŠŠ`Qäp‰Å†‘$µyIJE °t)‹²'ѽ{Ø(}úÀ‹û'A}=göy‡}ûÂæ‘$µmIJEeeÐÜÌ+M“ÚÄÈ ûâëPÔ¾ÁoŠ.IúIJE k׎—wFƒ€A=Ýy'r*“XèfX’¤e‘¤ÒØ];þ¼ˆƒÇ²·1‡qãÂfêÓ'~|=6‰3²Þ°€H’>”D’RȆ ð§?Áî—–0o)cÇÂÔ©a3ÅoåNd\¤Œ%o4… $IjÓ, ’”B¶mƒŽì¡ãjþPUÊM7ÅoRa!ãÇ“Û|€¼·—³cGØL’¤¶Ë"I)dÛ68¥dcSÏR>ùÉЉâèúëáü/N,a,KX´(t*IR[e‘¤²m”²„X^s—Ž"??t¢¸ÿú/¸èªS`È&å-qˆ$é˜, ’”BêêàŒü2"Ñ(Ýz熎ó>‘±c™RPÆòå¡“H’Ú* ˆ$¥øH”–†ŽòÁÆŽeXÃ[l®n D’ÔFY@$)…ìÜÒȃËaìØÐQ>Xi)íí%kÝÛ¡“H’Ú( ˆ$¥Žë+ɉjÓ# ½k–‹Î"Ij“, ’”Bzm.£9’ cÆ„ŽòÁzô`×¾ŒnZÂöí¡ÃH’Ú" ˆ$¥õK¨ë>Úµ å˜G¥”2ª«C'‘$µEIJ!#ʨØF§_–3~,cYÂÆ*ç`I’ÞÏ"I)bß®CÇÊiѶ Hû³JéÉ6v,Û:Š$© ²€HRŠØùúJÚÑH¬¤mìq‡wèZ²$lIR›d‘¤qðõ2r'”Nò Àîì.tXm‘$½ŸD’RDdIkB·ÁBGùp‘º¥ç¦²ÐI$ImD’RDÁª¥,åtºwä/«ë?–Á;‘$½ŸD’RA,FaU«r£myÞwíQJßCˆÕ{3IÒÑ, ´hÑ".¿ürŠŠŠèС#GŽä¶Ûncÿþý¡£IJ5µµ´k¨gcçhè$Ç%«4¾Neßkå“H’ÚšœÐÒUEES§N¥¨¨ˆÙ³gÓµkW^}õUn½õV/^Ìþð‡Ð%¥’ÊJêzr|zLÊòØöB/97tIRbI|ƒòä“O2räH>ûÙÏÒÒÒÂ<À®]»(,, œRRʨ¨ 1«-ƒO 丌—ËòÈ(" ‘$Í)X Òîð$íž={u¾wïÞdgg“——"–¤TUQÁšÜQœ6,;t’ã’› 5=ÆP°º"tIRcI믿ž^½zñ™Ï|†¥K—²qãF~ûÛßrï½÷2kÖ¬w Š$–ŠJÊ3dHè$ǯ¥8J¿Äš[BG‘$µ!)**bÁ‚¬\¹’±cÇ2pà@fΜɬY³¸óÎ;CÇ“”JZZ`Ù2ÊcQNKXt;w íi êÅwBG‘$µ!©­­eÆŒÄb1î»ï>y䮿þzn¿ývþë¿þ+td§Æô¸H„Úžch·Ö°$¥¦¹sç2wîÜ£Îíܹ3PšôaI¦¦&š››?ð<À¡C‡ŽùÚ9sæPZZš°l’RLe%ëÚ3dh$t’vhd”Ï?EC´o:$˜z¸¬¬ŒqãÆJ”\’ ¥¥¥”••±fÍš£ÎÏ;—ììlÆŒ(™¤”SQÁÒ–ÔZ€~D§©cÂZÊ_Û:Š$©°€$ÈW¿úU²²²8묳øö·¿Íüc>ö±ñØcqýõ×Ó»wïÐ%¥‚ˆ­^Í«{Rkú}gŒ!‹ëŸZ:Š$©°€$Ș1cxñÅ;v,ßûÞ÷¸é¦›X·nwÜq÷ÜsOèx’RÅÊ•Dš›y«9µîrDΘQ´awD—$æš8q"O?ýtè’RÙá°Öä“’KÃÚ·g[ç¡ä¯²€H’⑤6lßÂJª"¸öÆBzõ æä4C¿¸qŒ$ , ’Ô¦mx²‚ÙÅüŸÿ:ÉÉë89ÊÊùɽ±ÐQ$Im€D’Ú°®Õ4ŒÒ­[è$'¯Û´1t§ž~£†çž F’šD’Úª]»èÝ´‘†S‹C'ùho;>³¸‚ý×ÀY$IÁY@$©j)¯ŒGG'ùˆ ‚ø«ÞålØ:Œ$)4 ˆ$µQû^¯àÙäŸ>"t”&+ ¢Qí­`ëVhj H’’D’Ú¨ƒe•¬f½䇎òÑC¯Úrb1¨­ F’’D’ڨȲ *ˆÒ»wè$­ ¥cÕrrhbóæÐa$I!Y@$©-ŠÅèðNeú1cÈ:ÔÄ0V[@$)ÃY@$©-ª©!ßvÖµ/¦  t˜V/¤/Í.gÓ¦ÀY$IAY@$©-ª¨`[ïßëˆ.] _?ÎèPîˆ$e8 ˆ$µE••4f·§yÀàÐIZϘ1ŒÍ²€HR¦³€HR[TQÁºö£éÕ'þ›ŽFz°Ò"I.~³IR©¨`YVš,@?¢¸˜ UìÞ¸+tIR@Ijc–•7[¾œ²Åôé:M+:¼½°zYà ’¤, ’ÔÆ|ùŠ·‰46òFcš€ŒAKV6÷T°è0’¤P, ’ÔÆt«© ‚hz€äçÓÐoÅTRS:Œ$) ˆ$µ! 0¤±‚mtg+=ÓkhYL” ¢KR³€HRR[ Q*Ø=0ÊÀ ¨uå‹RL%›7ÅBG‘$b‘¤6¤¶Š©¤ðÌ(ë×Ã)§„NÔº ÆÓzö¬Ù:Š$) ˆ$µ!u÷3”5䕇ޒ‘1ñ°²WTN"I Å"ImÈÁò•dÓB‡3¢¡£$ÆàÁ4fµ£ýÛ¡“H’±€HR’½<þ‡yö˜Ñ“$Hv6U§Œ¦ëfG@$)SY@$© 鸮‚êÜAé·øã=¶ö(¦h»# ’”©, ’Ô†t­©¤ª0M§_¶³”Á Ë ¥%tIRIjCúm¯`[Ïô\€~ÄaÅ´‹í‡wÞ E’€D’ÚŠ;èqp»¤÷Åñï¯q‘ë@$)Y@$©­¨ŒÿA~pxzÂὩ§+ûßpˆ$e" ˆ$µßþ6løcMä;zXè8 Õ³W„ ¢´”;"I™('tIÊt»vÁÍ7Ãð•Œ`Ý‹òBGJ¨^½`>ÅŒ[õ|è(’¤‘¤À–,‰{o« ’bzõ ›'Ѻw‡J¢tؼG’”dI ¬¬ ÚĈRAÑ´/ ÙÙPݹ˜¬–fX¹2tIR’Y@$)°²2¸pÔ&:³‹ ¢ôè:QâÕ÷9¼Õp¥ë@$)ÓX@$)°²2¸¨(¾#Ôgï.¦  p $hß§ºöý9XVA,:$)™, ’о}ñYH * cG.Ÿ50t¤¤èÕ ÊcQžÿA%gŸ kÖ„N$IJ ˆ$´t)ÄbpÚþJ(.†¬Ìøo¹gOxs1§gU°y3œy&´´„N%IJ†ÌøM'ImTYäåAçêŠxÉçž ‘1Qú¬âû·ífÛ6¨« J’” I ¨¬ JŠ‘µrDÓûèïuÅð/¿ˆ®A{ã ÑkjB&’$%‹D’*+ƒ‹N[¿F€0bdgÓ§Þ"I™Ä"I46²e0µ0¾V&€PPC‡Òycüûß²%pIRRX@$)ÊJ8tFÇ*ãÛBe @þ·h”ì•tíêˆ$e ˆ$RV¿+xïm™µý(ÅÅPQAŸÞ1 ˆ$e ˆ$RV£FAöŠÊÌ›~uD4 õõŒìZk‘¤ a‘¤@/†3Æ4ÀÚµ™[@üŒÏ¯°€HR†°€HR‡AELëµ<~'ÂL‚uê©Ð®£Z*]„.IÂ"IÔÕÅwÞÑß‚–ѣà %;Fbð¾øH,:$)Ñ, ’@}}üØ«¶"> СCØ@!E£ô©¯¤¡öì F’”hI `ûöø±°ª"s×Q\LçMˈÐâ:IÊI àÈHÁÛ¼ÖÑ(Ù fD’2€D’ؾºROvmMæ.@?âð÷¥Â…è’”, ’@}=Ljxz¦€ôéC¬kWÆæV:"IÀ"IlßÚU@^ :NX‘‘âbÆçWP]:Œ$)Ñ, ’@}=œ©€# 77tœð¢Q¢TRY:ˆ$)Ñ, ’Àöí0ü ÐßU\Lß}«X¹ô@è$’¤³€HRÛëc ÞWéô#¢Q²cÍÖ®bëÖÐa$I‰dI°²²2.»ì2ºuëF‡ˆF£üð‡? KR`y[ªhß´Û#ß >JK—Î"IJ¨œÐÒÙŸþô'.½ôRÆÇ-·ÜBÇŽY»v-›6m MR`½¶¹ÖQ:w&Ö¿?ck*)/‡ / H’”(Ù½{7×^{-—^z)=ôPè8’Ú˜»*8PЉüþýCGi3"ÅÅœ±§‚ÿçˆ$¥5§`%Èo~ó¶nÝÊí·ßÀ¾}ûhii œJR[°|ú®þʼn„ŽÓvD£Œ8Té,IJsyî¹çèÔ©7ndøðáœrÊ)òÅ/~‘ÜåEÊdÛ·Ç×:4qúÕQŠ‹é¾wÕËwsð`è0’¤D±€$Èš5k8tèW\q3fÌà‘Gáúë¯çÞ{ïåºë® OR@Ûk›É šGºÖQ¯‡vho¿8‹$)a\’ {÷¡n¸9sæpÅWpðàA~ò“Ÿð­o}‹!C†N))„ýåkÈ£÷yƒç¯gïà1¡ã´M‡wÂê^[ÉÞ½½éØ1pIR«³€$н÷ÞË€øÙÏ~Æ£>Ê Aƒ˜3g³fÍ MR‹ÃצV0û§tê©´ä=PÁÚµPR:$©µY@(''‡[n¹…[n¹%tImÛ7Âí–BNY£F„ŽÔ6egÓ2bÅK+Y½ ˆ$¥!×€HR,^?i(‡‘#!//l 6,§$ÊØì ~ýkøâaïÞЉ$I­É"II°x1B§ åpº Ð?Tq1#cËxâñî¹^x!t IRk²€HR,ZãÆ¶©¨€1®ÿøPÑ(íZXóì:ºuƒ²²Ð$I­É"I ‹Ák¯ÁŒ‘ëãó‰, ®8~‡øÓöW2v,,Y8$©UY@$)ÁÖ­ƒÚZ8·ËÒø ȇ+*‚.] ¢‚ÒRG@$)ÝX@$)Á,ˆG5—C÷îà}€>\$©¬¤´4¾{X]]èP’¤Öb‘¤{õÕøÆWí×”ÇG?"‘Бھh**;6þ©Ó°$)}X@$)Á^}¦LÊÝë¸ÃêÕ é€Ž†%IéÄ"I ´kTTÀÙ¥{áí·]ÿq¼¢Q8tˆ¬5«()±€HR:±€HR-Yßë¬.•ñ, Çgôèø±²’‘#aíÚ°q$I­Ç"I ´aCüØ·¾²²`Ô¨°RE—.ЯTVÒ¯lÚ:$©µX@$)ªª gOÈ[YÇCAAèH©£¸**èÛ¶n…¦¦Ð$I­Á"I TU_€îô«Be%}ûÆg¯ÕÔ„$Ij IJ ª*Ð?æX'£¸Ö¯§ç=€Ó°$)]X@$)ªª`LçªøvXŽ€œ˜h€þ;+¨®F’ÔZ, ’” ±X¼€œ)Ÿ°€œ˜Q£ '‡SÞYJA# ’”., ’” Û·CC i(‡Îã»:éøåçèQD–¾Eß¾IJIJªªø±OÝáè‘HØ@©¨¤ÞzË­x%)X@$)A6nŒ ×»ÖI+)òrú÷9d‘¤4a‘¤©ª‚N¹ûÉ~gµ;`¬’hläôök, ’”&, ’” UU0­ç2"--ïîè¤t¸¸nz‹êêøÂ~IRj³€HR‚TUÁY—@V–äduí pêî·8p ¾°_’”Ú, ’” 6@Il íÛ‡Ž“ºÆŽ¥×æ%€ Ñ%)X@$)AÖ¬á K ´4t”ÔVRÂ)ï¼ÄÞÝYL’”º, ’”õõ°£¾™ÞÛÊaìØÐqR[I ÙõÛ~J o½:Œ$飲€HR¬^ ÃXMÎ ÈGURÀ•ƒßbñâÀY$I™D’`õjK|Ý‘? u’„ÂBÎ)´€HR:°€HR¬Zgw\ÿã¹k×ÐqR[$%%Œnz‹aëÖÐ$I…D’`õj˜˜»ÄéW­¥¤„^[â @‘¤Ôf‘¤Xµ2Æð†2 Hk))!wÃZúîaÑ"X¾ššB‡’$ ˆ$µ²–8°¦ŠvX@ZKI ‘XŒ)ç»ß…Ñ£áÁC‡’$ ˆ$µ²ª*uððtïÒ:F‚¼<.ï_F—.Ÿ55¡CI’N†D’ZÙ+¯ÄwÀjîÚŠŠBÇIyyr^ábªª woص+t(IÒɰ€HR+úÎwàÚká‚nKÈ76¾ƒ“ZǸqï®@/,„;ç‘$ ˆ$µ¢ï}>ýi˜Òn ‘R×´ªqãâ«ÏèÜÙIJUIj%ÍÍñwåÏSG¤ºÚè­mܸø ÿ¥K),´€HRª²€HR+Ù±b1¼óðt Hë*.†Ü\X¼Ø"I)Ì"I­¤®.~ì»e1œr 6PºÉχ1cÞ- ®‘¤Ôd‘¤VR_?v{çÍøt¡,ÿ‹mu‡¢»D’R—¿%©•) V,‚ †IW‡¢wk¿ß"I)Ê"I­¤®z°•ìMU0~|è8éiÜ8hnfðî¥ìÞ_“.IJ-Ij%õõpNûEñO, ‰qx!ú€m‹‰Å`ÏžÐ$I'Ê"I­¤¾¦ä/‚®]aðàÐqÒS~>D£ô¬ŽßÐiX’”z, ’ÔJêê`|ìÍøè‡w@OœqãèòŽD’R•D’ZI}]ŒÑû9ý*ÑÆ£ýºe°ß­x%)Y@$©•Dj6ÓõÀwÀJ´qãˆ473†rG@$)Y@$©•ôÝüfüG@+%–›ËxY@$)Y@$©•œº}{:ö†¾}CGIoùùPRÂäÈB ˆ$¥ ˆ$µ‚X F7¼Iý` 'CdâDÎÈZèIJAIj»vÆÇ"öpúURLšÄæÕ¬Ý:‰$éY@$©ìZºžnlçÐX 'ŤItYûfà ’¤e‘¤“´{7lØÿ¸éÕøÂ9g8’C‡²;§ }ªrà ð§?…$I:^I:IwÜçœ_ÿ‘µè 60€ÎÃz†Ž•"Þî:‘îï,äÞ{áÙgC’$/ ˆ$¤ âÿÞ~:V¾ÆkL¦[·Ð©2GUŸID1¶m F’t¼, Itûí·“••E4 ER+¨­ç?w®ëS–7™‚‚°™2IíÀ‰ô ŽÁ¬cëÖÐi$IÇË’$ÕÕÕÜqÇtèЈ[tJiáHY÷è[ä:@Þ9g„ ”av›ÀÅÝ:"I)Ä’$_ùÊW˜2e ãÇ'‹…Ž#©ÔÖÆï‰×0ï5Éç¼/ )£ôŽö`}ö©\=h¡# ’”B, I0þ|~øaæÌ™C,sDJMMP__ ã›_gY~)çþU^èXåSŸ‚þWMâ´ú7ض-¾€$©í³€$Xss37Þx#ŸûÜç=ztè8’ZÉ‘)?ŸøLæ5ŸL–ÿ£&U$Ù“'ÑsS-²gOèD’¤ã‘:@º»÷Þ{©ªªâùçŸER+:²þcT—±~ÿèú &M"»éc(gÛ¶ñtê:$é/ñýºª¯¯ç–[ná–[n¡›{sJiåHé»ñurΚ0M+)¡%'—I¸D’R…$¾ùÍoÒ½{wn¼ñÆÐQ$µ²#¤Ëª×¡o_è×/l LUP@st,SxÕ"I)Â)X ²fÍî»ï>æÌ™Cuuõ»ç9xð 6l S§NtéÒå}¯={6;w>êÜÌ™3™9sfÂsK:>µµPX9o¾“ý)ûœ©L]òv+^I­lîܹÌ;÷¨s;wî ”&}X@dÓ¦M´´´0kÖ,fÍšõ¾ÇÌìÙ³¹ë®»Þ÷Øœ9s(--MFLI'©¶úöl‚E‹à¶ÛBÇÉhYgOeàœ»Ø¿z#Ð?tIiäƒÞ.++cܸq¥ H‚D£Q}ôÑ£¶ÜÅb|ó›ßdïÞ½|ÿûßç´ÓN ˜PÒGQ[ “;”ÃþýŽ€„6e …• €¿ ›E’ôY@¤[·n\~ùåï;÷ÝwpÙe—%;’¤VT[ Wó:äæ‚#–aõêÅÆvCéõ¶D’R$É"‘ˆ7"”Ò@m-”4.ˆ—‚‚Ðq2Þš^S9­æ•Ð1$IÇÁ]°’ì…^ ¼¼Lœóç3`€k@$©­²€HÒ X¶ ÎÍy™ˆÓ¯Ú¦iÓॗЯ…   H’ô¿Y@$éì^¿»+\ÿÑVM›Û·3†röî…]»B’$ýoI:6. ‹˜ë?Úª3΀‚†mzp–$µEI:Nû÷CÉÞ—Ù×¥/ :Ž>H~>œy&½–¿¸]’Ú" ˆ$§M›à<žgOé9‰„Ž£c™6‚7擟}È"ImD’ŽÓ–åÛ)¥ŒØy„Ž¢3m‘Ý»™Þ³Ì"ImD’ŽS˼È"F§+ÏEfÂèÐé/X@$© ²€HÒq:eás¬ÉF‡‘BGчÉÍ…©S™ràÖ¯F’ô¿Y@$é8õ]5Å…Ž~¤„óÎcĶ—©~ç`è$’¤ÿÅ"IÁ¾ÿyãzî\Ú®ÿH Ó¦‘×Ô@¿-o²è0’¤÷²€HÒ‡hl„€ªŸÍ£…[GO IÇcìXuèÄ4œ†%ImD’>Ä+¯Äïÿ1iß<1ž®§u IÇ#'‡¦Éçpϱn]è0’¤÷²€HÒ‡xöYèÓ;ÆEÙÏ1óéÛ7t"¯üË.âLP½bOè(’¤÷°€HÒ‡xæøÌ¤Jº7oå9. _¿Ð‰t¼²>6\‘3ÿùÐQ$Iïa‘¤cØ´ *+áÊNóhÉ/`yç3=:t*·ÓNcSû!U<:‰$é=, ’t ‹Ç£6ý™¬©g²y{†Í¤³zðt¢›žX,tIÒaI:†; €ýä¿öLŸN$:‘NTý„éô=¸žØªÕ¡£H’³€HÒ1ìÜ Óó^ ²?\|qè8: YçK#ù4<ê4,Ij+, ’t ;wÂå9OÂàÁ0bDè8: Fv`>gsè ˆ$µI:†;b\Øôd|ôÃùW)iÈx†étXô"Þ]’Ú ˆ$CûõËéÛ´ÁéW)¬sgXÜ}:9M0~è8’$, ’Ä[oÁøþóÃÖ>Icv{8÷ܤgRëÉ=’ºöýã7u‘$g‘”ñæÎ…›n‚]»Ž>_Rý$ËzŸa‚©UŒáÅ‚éðÇ?º¯$µIoÛ6hn†—^zÏÉ;½k«NsúUª1~µûrX»V¬G’2žDRÆ««‹Ÿ{î='ÿô'rh¦ªøcA2©õŒÏ:Ÿ–öàG’2žDRÆÛ¶-~<ª€<ù$•Ùcˆ è$“Zψp€jÇΰ€HR`‘”ñêê`àÀøìœM›€¦&bO=Åã͗йsètú¨úõƒöíaÉ +áÍ7¡º:t$IÊhIoÛ6øä'ãßwðÒKDêëyˆOX@Ò@V Ïf rrà±ÇBG’¤Œf‘”Ñššâ»_ _ý*üßÿ ¾ô0‡úb c- ibÄX´¶3L›æ4,I Ì")£Y€Þ½;|÷»ð­[›RñµS¯"4qưhüØðâ‹°cGèH’”±, ’2Ú‘Ò£Güø‰Þ èÅVôþ€$M\x!<¯v¿ ‚§ž I’2–DRF;²V÷îñãàű‘~õ) ¾V  À-xÓQ4 íÚÁë¯ÿ8äåÁo:–$e ˆ¤Œ‹Å§`_ùËø®HÆ•çžÿcUé%77~ÂG…ýn!{ξØiX’”dIk×.èÜ´•ËŸ~wô㈧Ÿ†ú§@Á”PgŸßsàŽ;`nÖßÅçcUV†Ž%IÃ")cÕÔÀLæÆ‡<®¾:t%É׿K— 7À]«/ž=áþûCÇ’¤Œa‘”±jjàSü’†i—@·n¡ã(I:t€1c`Æ Xµ.—}~ùKhl M’2‚DRÆjxm)ãYLÎõ׆ޢ¦M‹¯ y²Ïgaûv~ý(÷ß_$IJ ˆ¤ŒÕï‰{Ø)¢àªKBGQ;ÂÔ©ð`Ù08ûlªn¹Ï}Ö¬ L’Ò›DRfÚ½›‘e¿âánÿ99¡Ó(3à¹çà=>LjÍ/pk- ’”`I™é—¿$çP#/ûlè$ è‹_„+®€™‚ÝÙù|γzuèT’”Þ, ôæ›oòOÿôOŒ=šŽ;2pà@®¾újÖøöšV,÷ÜÃ+]/'opßÐiP‡0w.<ø‡vÄþö®ãg¬]Ñ:–$¥5 HýÇü>ú(^x!?øÁø‡øæÏŸOii)Ë–- OÊ\¯¼Ë–ñÓüèÓ't…‰Àå—Cá¿|žî‡jé³à¡Ð‘$)­9ñ9¾üå/3aÂrÞ3¿üꫯ&òïÿþïüò—¿ ˜NÊ,ûöÅßíàÇ?&6t(WŸÇmEAc©-).fí  ¸tÍ]û›x3‘$µ:G@hòäÉG•€!C†0jÔ(V®\(•”y–.…®]aãF`ËxøaüýØ·?ËeÝ7qzÓ"ç-E’Ò–$Éb±µµµtïÞ=t)c¬\ Â’%À~ùùl¼à: ˆŽÒáÓYÁüûÝ¡£HRÚ²€$Ù¯ýk6oÞÌÕW_:Š”1jjâǵKöÀ ÿðTïë@‘S°ôÃFd1‡ÙtzþQxçÐq$)-Y@’håÊ•üã?þ#S¦LáÓŸþtè8RÆØ²%~ìóÄÿƒ†o¸éÝRâˆÞ«[7øcçO±¿]×øh™$©ÕY@’dË–-\|ñÅtéÒ…‡zˆˆ‹¥¤©©\r^ùÝì¾ìïèíÇ·¿ §œ¿¶tD$G¶ç׿@Ëýÿ ;w†Ž$IiÇ]°’`×®]̘1ƒÝ»wóòË/Ó»wï}þìÙ³éܹóQçfΜÉÌ™3SJ[[¶Àßòz5mâ!_åàAX±† LmÑÝwÃ.ÿG>µï?Ù÷o?¤Ûœ›CG’Èܹs™;wîQçvúÆÄG‰Åb±Ð!ÒYcc#õWÅ’%Kxî¹ç˜4iÒ1Ÿ[VVƸqãX¼x1¥¥¥IL)¥·Ó£-<´ª˜MCø×âÇéÝ>ÿy8pþîïB§S[T[ Oÿg>¾÷ jÖ“×£0t$Im„¯}tNÁJ ææf®¾új.\Èïÿû-’§´ê mZÁð5*+ᢋફ,:¶^½ ä7_#¯y?ó¯r-ˆ$µ&§`%З¿üežxâ .½ôRêêêøÕ¯~uÔã×\sM dRæhjlæ+»o¦zä…,Y&ìé/)ùXóK>Ïø—ï¢eÇ,²º8 "I­Á’@K—.%‰ðÄOðÄOõX$±€HI°ç'¿a4Ëyås?gø°u+‡N¥T‘ý¯QðÉŸ°å_@Ñ] "I­Á’@/¼ðBèRf;xß»•G¸’AçLàºlhnŽït$ —qîç¹îgwÁwfA¡£ ’ôQ¹DRúºÿ~ò6¯çfn£wo˜5 nº)t(¥’¼š&I:qIiç–[àågà¶ÛX;éVDFÓ³gèTJU“®,â?c_!v×]°a÷Þ %%ƒIRв€HJ+±|ï{°ö‹wB]Ïœñoôè9N8ÕIºè"ø÷Ø¿p }øú×X¸0~ƒË¦¦Àá$)Y@$¥•º:èÙ¸«ßù{>{+žJŸ>¡S)• 9…™7ívxðAxí5**âíØ4š$¥$ ˆ¤´RUwòevÒ™Ÿö½™š, úH"‘øÎisó> %%´Üô%V,ßÃwûöÀá$)Y@$¥•ýœÇU<ÌÏF~ïÞs /¾hÑG7z4T®È†»î"káëüuÓ¯ ˆ$ ˆ¤ôÑÔÄÈ{ndAd*Sü·äæÂå—ÃW¾:˜R]q1¬X‡ÎšFÕäOr77Ñ: ˆ$—eJJwßM—­«ønÿÅŸ}$wƾÌöí¿M’RŽ# ’RÖïùdÅ ¸åž:›}CÝU­kôèø±²^[×ûÿ·wßqU–ïÀ?‡uX ²Ä 8ÒDq+fŽÊUæÊ‘æ*ËJMí×4-Ge©Y™šf¦}Óœ•šš#·(îT\ÊF‘!ó°žß—‡-Îü¼_/^‡óœçn‡û~®ûº–7š‡X[ÿ]Æ-QÄ„ˆ*¤¸8ÀÁ8p²+ÜÈ‘@íÚ˜k7 5k»tTÙ8;NNÀ… À¹s@äs£pXÛOÿþ:šjìâU( @ˆ¨B ’ë¾þ0opâðË/¸n…ZµŒ]:ªl4É‚,X~5˜S÷GTIŠ>üÐØÅ#"ªP€Q…*·»¡L›†_'ãϘvˆŽ*Í›wî‹}ûÉnÞXíóðÝwÀ¶mÆ.Q…Á„ˆ*¤ÐPÀi˜rb’ëalô L˜ ;¡3¡²ðé§À¥KÀ¸qrßÁXã4èÑC†FG³xDD"ªBCï4á¥\Á›µÐXY!,Lã* vv€——þ¾ƒ¯~ù01FŒrrŒV>"¢Š‚UHuý¯)ËðŽéB¬¿Ü“& Èc @ÈînDèì ¬\ ìÜ Ìkìb•{ @ˆ¨â¹x¯Ÿ~þ^Ãq¾õhÀK/É™§žllŒ["¢òŠU _~ üü3°|9.;wÔ®mä2ÑcM @ÔЯ\¹û@ÆÀúõ2äÕWœ( 0ci”¢•+ @ˆ¨ÜЉ¹{q·hðÑGÀ´iÀðá •!W5j»„ô8S¨[÷nDõì³ÀªUÀ¯¿g « ¦O~ûÍàÅ$"*w8 ˆÊ­ŽÙÞ¿`à¶·€‰e™+È ®®€VkÔâÑcN @ìì€^½€Ý» œ0d L˜€ÔH'ÀßßÐ¥$"*€Q¹4¿ºý®Ž^{ øæ›Ü™æ!!Ü냌ÏÊJ‚àÖ­eÔÕ?YY€YÞ–uüxàömø|ö!>DVøEᢠDôxã,"*—"fÿ‚ÕŠMC ,Zœ{Ŧ(ÀÞ½@Û¶Æ-‘FÔ©tî,›`ffׯqâôéXYï3|ŽñFôt„ÞP \R"¢ò…"*,@›%“°¯a\Æb܈6…‡‡i~qyk:ýˆ˜âìYý)[·UªÈŽçDÆfo/Ë@רX[çÏËÇ8¯ðp™ bòá˜éø mù6 Ðé ½ÞŒ²æQeÆ„ˆÊ‡´4àå—™3¡ûìKŒ¹5C†j`o/Yo¿fÎþüxî9ÀÂÂØ&Ò317>øpw×gDàôi¹õõ.wy®6n”r||¾×ùãàï¿ Xp""#`BDÆ tê$ÑźuØ×æ}ää~~@Ó¦À_S¦HrääI¿¢òéÏ?ßnÞ¶l‘LȦMÀ?NN’%éÔ ˜òâ×ïÎÚµ.^Ì}›7eùi"¢ÊŒסC@«V„<ˆèŽñæ›ÀOÈÊB>>@@àâ;L˜ôíkìBæî tè Cwìú÷—y!o¿-S>úô‘s×GùÉYFkÃ(Š y³'DD•"2ŽœÙÝüé§zõ€€(¾-ЧžlÛ&×f>>rúÔ©röí·2„¨¼êÝص øúkvLŸ.9;ËG~ýzÞÞ]÷ê ÝÛS ÉÊÀÍ›…ç‘U& @ˆÈ𢢀ž=ewó÷ß—uuÝÝqü¸\ýü3P»¶œÚ§cÆ·ÈD¥Õ»·LiÚ»WŸùÈkà@y,6€­-°f °`´K¿ÃQ´…Wf`Á©!DD• "*3Š$$8ðÛo2[÷Ì`ûv`öìÜÛV¯–λuÓ?ÅÉI&ŸsÒ9UIRÏÑ<¸ðã}ûʿ²ewh4Àĉ8½ø,‘Ž“hŒ¹ßI–ˆ¨bBDe毿 %@DЯŸ,?Ú½;pႬtWv¶Là4055^™‰–F|õ°x±ì–^‹ 0iðÉ'2TKRÍ-pK1®_L:v”ÿ"¢J†•™ýû]J&’>‡œ ¿íRVm”T‡£c¾s÷î•Õ†5Ra‰¡þýe¨Uq¾üR2}C†Hð ÈôtXá|‹=Óö·oÍ›ËÄÔT܈ȀQÙPhvïÂ)øÂeþ{¸æ7u3.c›e¿B§FF¯¿<ù¤,ˆETÙ™™ï¾+1FHˆ»yS† ZZçž’ p>úHf³7l(;g§Q%À„ˆ½ãÇ¡tí†ùçŸÅTÅúÿ;Žu¿G"ì±{w¡SÑ¥ ™){'œ°KTY=ñ„ÜÊmLŒ Ïru½»ˆV‹œiŸbÙ;éÓR6êlß8pÀhe&"z€Ñ£s劌;iÝ¡Ñèƒ?á‡C8‘ã‹k×䔼ÈÂ…@›6Òã»g~å+¢Ç›`g§Ÿæqó¦,Óëâ¢ßŒðìY`ìW^Øøò&àßNv3ìÚUöÐ!"ª€€ÑÃ;yRf7j$»þü36Lû›Ñ¾¾ܸ@p° 9 —x_{ 8qB¶D zœh4’Q3 E ÇËmX€ÎåmÓ&Y÷cGà™g€Ã‡ ½ö­[òÚAA†ù]èÁåäÈâ€\ôŒ' @ˆèÁ(Š,áÓ­в¥D JdÔ(œ8m OO Y3àúuàÚ5Abb"«ï~ðlðõ×¹«ð=vŠ @ÔÝÐOœÛ°°»OÐhdßÓ§‘½nnž‹üüÓ¦-°v­Œe„Ä$/ÊBT¾9"‹ªÁ&Ñã€Ñcìæ³&&?ü [”?û,'ëç^¾ Œ‡í{-Ѫ°nТ… «º|Y&š·h!“ÌßzKzüfͪV}ä¿Q…ñÄ(ääQÐÐO41ÁÐ ýásÏc3tf6²éH½zÀœ9¸pà6àüyÃý.ô`‚ƒåV :‰ @ˆ*ÙS#)©èÇ““e«ÒºuKVÂýï¿Rœ¬(r%ôÚk€»;0q"àå%uøÕÝ4ÆwßI°ai ¼ðP§ŽÄ,€àÕWK_^¢Êè‰'d×ô«Wøx @\]%IKΓÿ¥Ü HÛ¶ý˜`+žÇÙy{dÂȳÏÓ§ãÿ¸c C»§~_*—ò®‚Fô¸`BTA¬^-ÆE?>cЫWé_ïÆ ¹àÙ±#ÿñôt`ýzYׯŸ4i"©‹;dâÆ2½[·|ËVÅÆJL2uª~ÈU:ú×öô”MÐGŽ”y´\ñŠwË­º°•šÉÈcYYS @ÒÓ¥Ó¡];¹  iS`ùr(7B1Ëêsøhþ×§ŸêÖ¦M“Tä#òÕW@@Àý?¯O`çÎGVŒJA @Ô¬Ñã€Q (ÀÖ­ò}qiúsçdbwAgÏJœ Óå?®f%ò.¤ãï´©‰_ZŒÔ–åÂeÖ,nµu«´”Ó¦5jä{­ÐP <6n”ûýûëSW¶²±‘ +"Òóð¹Pk×Ê}5€o¾ÌÍÞ½%c™–¦^l¬Ü6l(çDEé MwÆÌÔ)ørØ´ÁQ¤=ÝX°@NnÖL:bvº¢Ÿ~ üï÷÷¼´4`ófÎK)ˆz1!ª.\dP|¢á(¸’ÊáòÄí±cù'$Èí‘#€ré2ðå—pîÓgckà{ŒG²b üú+pó&R–­ÆŠ›½ ˜=[üÕW¥—öÝweuPggýc5j¦¦’ý`ƃ(?FæDýû¯ÜwqZ·–yæÿü#±¿§§<–·ƒA @Ô![yuÞȈ‘  ŽþQº×7m’•ê>ÿ\–kÞøä©rrðé§À¼y÷.³ Ýo £–?2òþžWÙ1¡Ç¢ `ëVÉ ØØ€ddH€’“£Ïl¨Ô “½{ó¼sU÷þ……x þ·½¡iÔ˜9×3j`y§UèïwŸµÝ.K³ØÚbÕ*`ôhàÌ™Â?ûÌÉ~Œ hµÀرù73jÖ”ùDTØ—_J'Ã/¿µjÉÿѦMÀéÓÒP«–œ*€““LËŠŒ”¯gž‘sÜÝe•^ ™+Òº“vXõÖ¬‘+Ýõë%ùá m[ÀÕͼ‚óŸ¬Erx€ƒ‹.¯:!¾¤äÖ-)ÞúJFVÌ̲™$ž‘!™FÃ!Xôxáâ—DÀßË…E``Ñ`Hˆ~ži\œ\üþ»\ˆDEæÈ@ÌŸ'“ÝPþÙ ÍQ<“zðÄN<‹·æ¡ÓÌnèábo6ó_$¨óDNÓ¼æÍ“aV?þüôSÑYŽñãõ½¸DTX£Fò•W³fr›ž.·Û¶óçËÿ˜››«^]¾Š’N†Ý»¥£¢OšÕ¨‘,u £FɪXŽŽÖÀ€ò••= eëßðüêo¬P~EN-S˜š¶@Pµ§ÑqåÓ€ŸP¥Jn¹ÔyhׯËÓ .£!uBv¶dpÔŽ 5’7[SE)?YÓeË$Y-ïë£&¿g“&Ì€Ðã…¢rNQdG»v2Ô":ZŽýû¯~Ý«WõçÇÅ»7&âÂüÈú`*&þñ4a‡EgÚ#ãËyØr´:î|¾ß¼„§=‚°´Ù"¬Iy热‘™ øúÊÏQ{ã22dPxìö®]è¼óŽ\„w±0y²\Ñý³´”¡VË–ÉýðpÉ0XZÖÖ€DFJ…‡‡ Ïúå9·iSÀÊJ‚NþWó13üüpûÝ/ð¤òž¬zo(‹p9ËÝo­zöªU“,É[¶àæy¹RÎÌ,zu®«W%øxë-©»ÔN“ûÉ€$&ÊÆ¥GŽÜ÷ÛU&®\‘ºµ¨,0 コŸËýP‡_µià =^€Taa@?y/#ƒ»­V411²ônýúúäèQ™k =wv`á'ŒAÃA>xN5ì@à§eˆÉqÂÒ:_ %ŽÃ.#}²7áb§7pÝÔvv²¹ò¶m2ÝÔT.Xòn„vø0’"aÐ=ü<ÿ¼dfÆ3ÚÛCôX¨YS¿wx¸Õ«KÐïî.Y…À@YÖ×ÒRßK?{¶ü÷è!+å­^­¾HP¢(ú9fc>«…fcqüÕpG$.ýyI†iÕ©#QÍ /`ܧ.ÖÔÃo Ý×ßÉ5Mýrà“&É­:¿Èܾ]xQŒ‚‚ƒežÚ–-úŽ•Þ¨QÀG•|ŽZö↥M™"«“߯ÙœµE y_²²îÿ5èÑKM}¤‹ÆQ€TAA@ûö2 æŸîµ|}e³j*{ññÒð?,5»Q¿>P»Ú8E΋± ¯Âë¥æ@•*úm|‹‰hŽÓˆ©Ó‹|—ÃWpp]4FXoÀíáïà†SK˜je¬Dl¬4îöö2gãæM™—Ú°¡ô–ººÊãééò¹sq&LòÐ!™ Û¯ŸtŽþñ‡ŒY'¢²S³¦þVÍ€89É177¹ö¬ Ÿ§›|é%¹ýë/¹½sGΟ1C?¬jØ0©>û 48~§ðúë’ꌊBB0¯åœòèƒz÷²ÿ“숭-ðä“Àðáp_=/Øì†gÕ[hÜX€„…IƸ÷0,5ˆQ—'.K{öÜûçÜ+‰Œ|° ÖÉZyxÈ}uq²-™0;Åûùguð@›õR©pH°x±d.7.:Ý]Zii2Ññȹ˜|ܺ%ûäuï^úçËøeSÓÒÿÃòs>ý4ÿñÅ‹åXlììöš*Û#_¸»Õç±Шûy|&³?³o˜ÁMR­?‹·V´Äm÷'±i›%æ÷“y¦AB®KÅÝ]Êéè(KòÞº¥@6ž{N‚ÛnÝäÇ»ºÊmLŒ ³zöY ‚ÍÌä{Y6tàÀò3F›¨2«WO2C‡J£F ¹Èÿ7 ³ç‘äåì,ûïlØ +×ýßÿI}wà€Lñ°±‘:BýŸ®[W‚šáÃï¾€FÔ©ƒß²ë UÁø÷_ _/æ = œ:%'Ÿ9ƒö'6¡sV*à ²qÇé` Zc´<Ûµ¼á÷³ éo ‚Ôäøq©ÍÌ$HÊÊ’:ëQÕ;))Ò®fd”|^D„t´:TôÜ”¨(ýê`VV¥ÿù!!ò>«+ÆÄèë߇ñßòY(j¾ÊæÍÀ·ßo¿ÍÅAŠ-ˆÉÉù¦?Ñ#Ä H(LO>Yô>¥¥Ž5½páÑ”«"ø¿ÿ“ÞúÒöbDD H]Z+WÊî߇¶]º$c¤ó®>•o¯ŽôtùãnÞ,3¹ÇºuCrõ:ȱ±Z¶FŒ€ÇÑõ°´Ò@3d0¼º ¾8‰:Ý/Ncn߀qã°5¦ê6²„ƒƒŒSVÇŸ<)c±Ýܤ÷³kW †bceŒµœ§ðõ•[µŒˆI«­[ËÅIÇŽòØ‘#òz >ˆ 㣤÷½NémŽÎŸQÌ€4`€ôøÏž ,]*çŸ:%íCíÚùÿ§}|$¦(èÆ 9×Ë ¸|]+ÄoH¯‹¿?†¿p£Ú_Ö®ÅÍ#š¦AæÚ˜þí€88·§ Â<;!¬×²GÉ–-Ò8¥¦ºÇÔTêÐ?þß»~})oíÚú¬ÊúrEncbäb³(YY`ôî-ugÁLGf¦>sqíÚ½æ’}ôˆº÷KÞ‰è:ð ÷?ææM©ËÕLWAÿý'·÷ZÕ+:ÚxC¶·l)¼¢£!©ËÔ—ÅÊg$€Tê¸^5õþ ÔŠñòåÇ#õ-™€ôt¹(/¿þ’÷æÔ©ÒŸ•%AE||á†:ør&ê ×~Þ/kiΞÀޝ#¾e7iA­­%­Õ§lîwä`oÕ†` –#fó1 ) ¯v Á¿­Àœ9Hé7§á‹ýÒÅvõªü~aa²¬¿£cþDÝ©8oZõêù‡`’ùâ `ðàüç:$«º[ó¦MrP¿~éÞ"z4¥sÄÃC:.\(œJ΀Ò!“-+:/;š'$ûöé7 U©HÞœäd©cjÕ’D]Š÷Ê©GÐS©$^z .?}ŽÍþÆü·‚aƒluÃÌ~ÇÉVãàÝ ‰;BùðC¹ÒnÒDz:ÜÜ0üÇØl?s,§ãßQ«Ð2ýüжf¢zuàã ÿn—.Ýÿ0¨K—ôß<ÄÄÈ{6`€Ì×èÒE²0wc%ܺUô‚ ÅéÞ˜9S¾/*¢Z²D.ÄïwÃÇ£G¥¼j© Ò :ü Õ…J’ž.›f¦¦ÊÏ3æ¡ö¹Dzº4‹?üðà¯ñ°€”=Á*ç’’dÍõ'ž‹Üðð_šP­\33¥rhØðÑ–ôó?Êž÷3ì(3˜;WRÂ*ݹd‰>­% ø½üñ‡Üž?u: :7Gã¹ô(Ô@²&ß\B劑0l°Èqt‚wbM„eÔÓ‡^^8—î>S¼ðÉ÷n5ZEÞtnè¼b+ ûÓOËUƒ”i®^•MÇE&;8Èg$9YJuÅ–¼=¤NNÒ`æÍ€˜˜È7yÏ11ѯ~¥ jÀBDơΈ×g@œœdˆ’£ã½ë977>éé)½äêïùó’áÌËÇGêŠE‹$ÈéÛW¿HíÚ2'ì§Ÿ¤Þç`çN™¡Îig'sžùH‡l;øàHM\KŽææ¦À«#r°hZ´Œ»ûucY0êf£-öÀ!3 ˆð2í]ñ_|M$tõ€}éóðÀÜO=êX«÷¹—z­ÜK—$æII‘vQ£‘v·Cý9ê…|Æ2_æêUÉ|<(AWÞ‹Ô{]xgeÉóå‚ýæMÉîX[Ë45rç0k–üj=|/j0£n:[Ô|E)]rñ¢¼›6É ‚Ô¶~Ø0`êTùÞÛ[ÚŠŸ–%¤Ç/]¹ RWz,n¾!0){ @Ê9µw¦Q#©øÓÓ¥ÒW@Ž*U ÷^,=f·nIïYiuë¤÷eóf¹¯ÓIïÍàÁ…+¥Œ é!Ú¶M*ñûYäðabPµª,Ýø°¢¢¤÷¤W/ÙC#2R.ʇ “QÏ)oPðÚkRƼ™ŒÞ½eO€µk¥‘oÞ\‹åñÆ%;èÓû€|v f@ 25•ÏÊÁƒr~Þ͉ÈxÔÐg@LLäÜÛ»t¯1p þ{ýF†ÛuHæÛoËÏ8xP?,¦vm©o4¥vÚœ<)Udú×>\߆xxÈÏ;|XžÿÉ'ÀäÉ&xg²;êû¹Ëž#&m”Ž—€“S1¹oˆ¤zÃÃaq#ÁóÃPåJ8ì£wËñ¤$ü¤þ@ H$æê*¿`Á¯<ǃ.:£eKsœ9#uí÷ßKÇÍ•+úzOyàá!™E‘ `çN @Ô õÎÎ÷΀„‡K– (H¿òXݺúçß¼)¯ÿÿ'ÀW_Éjbááùÿö]¸ ¤­[õHÞÕÎTaaú¿aI×j²oŸ”£`Çà¦MR®O?Õ¿^p°~‘ààâ_û^Ô÷óÈy¯ ÎÇÌÈV¬Qʾ¾e3˜HÙcR†t:¦M›†_ý hÚ´)fÍš…nj×P)¨ëŠ7l¨Oñ†…é-[¤‚~áÙØ6,L‚”¢¢k×d­qyÝþýõíÝ+ÿÄjO»êðaù11R_ö™THŽŽ…?–M°¼½¥¼ŸÄß_n×®}°$)IƪÚÙI¯R¿Þp3KÄ’wncðß±0Û‹„ÈXô¿vÿ=‹º~±ð²¿-Wâw¿ì¥(€:\ëe¶¶°ÊqEÕT7$Y¸¢j·ÆÒ…èê ¸¹áë_]±þú¾æ„/æ˜ n—ÿ–Ï~ |rø{ŸT¤RyúûË8àÀ@©d'N^~YŸ…:Tþ&aaúT8 _vSQd ÜùóetW§NRI;8èÀÖ­%qpÈ¿JUõêØ&&–œÑP÷iÝúþÿDT6åÿY§ËßÕ¢…~ãÂûåë+HÁIáµkËp Z^yE²ñ¦¦D˜™I‡SïÞÀSOIïþ®]R×å½XîÝ[êæÄD}H½õÆÒÓÿã2N!AL§N@§NÖç¦bM\2ÆÎn^‘Iß+¾½ƒ¹ï„ÁáØðM8ª¤DK#¿ÜéÓòýÝÎ#Õo’µˆEuè¾vÄqŽˆUqº‹ž*)%Ë£xÎÜŽáŽ@º#4xöYkìÜ)¯¡^¤vè õojªdŠÊF©s1CBôÙ5qq‘ ÷·ß–ù9K—Êjƒ“'KÀ3bDñCu…ÌeËdâ>PtDí”R—t/ιst$%I»®¹S³æH­uky­mÛò êï Èó?úHÚº‚›VE @îÜ‘@¨àæ·þ)Ÿ@ÔùöÛ{¿æýbRö€”¡‘#GbãÆ˜4i¼½½±bÅ ôìÙ{÷îE‡¼ùÝJ#`k«¯ÐÃÃåòäI "LMõÙ”)RùI%/ H÷îòOw"úÅ‹’)Ðj¥òÜ´Iza¦NÕ§ç–×™3G.h‹g»};0r¤ôÂL™Rt¯IqŽ•‹óC‡€ˆÐlÔ°O‘HJ’š !AZ/õû¼_‰‰ˆ>‘€œ¸XÚ%À$!þ9iòÂχà{¹ÛΤÒlpý\:9¡Jƒ@‡ÈqtÂKdáˆÑï9¡çW¬ÞãŠÚmQ» `Ýèü=‡ð÷@íV@ç®ÀGSåoÒ¦>ðñ‘÷|Í©¬[µ’ÊuÛ6™oòæ›rþâÅr0mš4ðýú«VI èJ33 rrôAb¢ìåHƒ—™)ß·j,_žø -!!ĨIQ\]eü·:üŠˆŒO£‘¶àÚ5}(~Âqi´h!uMQYô6mävÕ*©£22$`P/$Ÿ~Z²ööÒ µt©Ï›±´ ’,ˆ¥¥>éÜYî%ÃvfÍ’`"-MÚ®¼¯QÐÀ2êÐ!ÉhoÜU‰5#0¢1N6“ç/;,õݬUúvÒÀÅÄ '2oöÁðn1ˆ¿‹¸ Û¨¦ÜFg÷ËH¿‡¬¹·a–‡ž99è y.„4·Dt¦#2ÚãÙ4;ì2·ƒóe;œ½n‡­íp;Ëã>°“J6Ï×­ãv°‡îdVÅþý¦°°Ð¿ÎÎÒ‘hb"CˆÕÌw³f÷@vï–¿‰ú9puÕ C‡Êªg]ºÈ½´E]\oÜ(×ÿý'ç_¾ ¼ÿ¾´i/¿¬Ÿ²¿¼ï‹ËýË—%±±‘ûy3 ›7ËuÉñã²´í½DEÉï¢fÝ  jðÓ©“ŒpP¨(é”?^þÞóçËêÑéé²r\“&…–Ú±[0‹Â¤ì1)#X»v-æÎ‹É“'†Ž&Mšà½÷ÞÃáRn¡N@¤wÄÌLŸþá© _}UÒ´Š"ÁÄõëR -]*Ï¿qC.XCBäŸ6#C?¶R§† ‘!´ÑÑÐ<(çå @’È:u¤w惀ìŒl˜f¤©©H¾•†œ ©èÙ? -]Rñwf2g$¡ÍÉ HÆñ“ðJ¿dhR’%¨HÖß*ÉÉøö\´É0ÍH†MíÔâßäØÙ#ÉÄUkÙCcoØÛ㜮ÂrìgLk{Œ˜h­íGG¼0Ú MžvÂÙÐj0³4Ãï¿cZ¦·“;eŒíÿVSC$»S³5òp.”Š©Z5¹Ï€(Фêß{OpkkyïÔÄÕU°W^‘,ÕÕ«ò}|¼Œ¶²ÒO¤lÞxñEéÙéÞ]z5y¯«VÍß3éê*Ǭ­åB$<\€88ä¾M…V´RU¯®ÿ»–”Q‡m1!*_Š @ÆSOITIC¸¼¼$+ac#õK^jýÔ¬™~“‚ÁÜ9Òáä@ɦÏ+sEnÞ”aPE½F^ï&£wí’ÌÞ=ÀôéÒ‰sá‚\(GGËEiãÆr @zº<<ðóNܸü˜ ¼ø6àPöBòö–€ÊÆøn60îõ¼6(É7â°fám}û6ÒCãðóÇ·1°f<î„%ÂÄ*Õs¢ñDêØ]O„¡LJ„Fíºë¥»_²ÀïklaÒÀ°µÅ/Y6¸íe 7o[XûÛçäøçÖ¶8ú— ”¥¶ÐT‘c¹_66Ȱ°Åù}ÖxïmkÌ]h‰Ìltï.üééÒæâ¢@š6•÷îäÉüïé¥KÒVÍ›'1c$ûþõ×°üþ»¬žfi)GÞ¥çëÕ“¬}ÞD¯ªfdvï–$'§ðg(¯¨()_íÚÒ¦Ü6àÀ |;v”À5)IŽé×OHHN–E%§L‘Éì!!rî?ÿÎè¿úª›†7G¤"*8 '¤â ÓTX†¤A陊/Ò¤ÂaQ*L3Ò°À&VÓÒðfF*Lµú…ÓmÀ ¹¿æÊ÷Þ¦ZTÏ®‚Œ•¶Ð:UÑWœUª..¸£TÁïgmÑ·¿-ž©ÿó¶HÑTA¯A¶6® ^}×=‡Ú£ÿ{ÀÖkVk0l°b®d\RSU€ùßfw€/Ke¨J¯ \‰‚Ce¼®••g~~2VÖ×W§¥GììYÉÌ<÷œ4ªê˜X@6Þ´I²Í›KÓ¦jï¾+Á†Ú˜÷î-ú ¨¤¦Ê°©7ßÌ|ú©ŽO=%ÏÊ•rü™gò§­Ÿ^?ôÂËKz Ÿ|R““>­_TDu¯!X¢òF͆çý_~]ºÈ…Ö½™¸WFÛÇGnÍÍ GwûŠHvþ¼¾nñò’ú÷ôi ræÌ‘ã%5‘LtßµK:éÒÓ¥í·ßä5 @†#­^]xCØìlöª.»Û¨‘~ØO÷î£xyÝOgb‚+7«ÁûÐÚ3÷5llÞ\qÒí€;µ¤ïÐAV+»|8 àËOÓ±÷¯D|ñ~"FõKÄ—&âNX"b¯%Â6'>ž)Ñ/HN†ýÝ/¤$AÑRÀädtŽK†ßdh^O)ò½° €Ùt-r~·Bb†LXá?XÃâg+à”ÞlmmóoÕªàÌ™3Å “&VVÈNÓá×`ê¯×;t€N‡cQé°š¯ƒv±i:XN×@#Ù|€¬¢º›ÆÝ _Ê÷ÏP¦˜£®©ÆÃ άáji…šµ­‘ma…³W­‘ej°¬jÈ´µÆ±d+¤ÂcFZ!§ª5¦~n…×&X£i+hl¬ñû_Vøùwklßo S[+ÌüÆk¶VÁ…ë6xª“9ŽÞ®oXòú{5ðá¯À«ß½³€æ’Zÿå&Рøù8°î"в/P»Š~xÓÔ©’Ö ”•öí¥—¦ 77yÎõëú‹òÖ­¥r9~\êøèhé=S5i"&F†KíÙ#½?Š"ó`>ûL‚•ñãõA‹ŸŸ¤£E&0ª•£V+“ö—,‘ÄÎN÷ÞË_Ni”Õù¹›0k–þû—_–Cµ7I @\\¤r·¶.:¢º×,€QyS³¦ÔMêÿû£ð(V¸kÒDê"7·’{¸›7—!]y­['·C†H] ”€Èüú«d=úö•NŸ&Mä¢3'G‚‰7¤.Ï{(õþÚµ2ì©vm}‡‘ºim£Fú=""ôCÑòêÜYÊZ«–~U±7ß”à¦aCàô öX!­ª&üàŠç&[Òzm€´c»#ŠhóÒdîNÀ{ïæ`êäT¹:¾œ 9«~Hž-©X±( iqiÐ%¤áò™4ìú+#;¤aohœ²ÓPÏ- 7SÒP×&]<mŽÎÍqâs\ZcŽOÆ™Ãüš9ì,,°j¶9º17—F0 @2êÎÎù7ðjÛV~ÖúõÒs+Ãܾÿ^‚Ï?>ü0ÿÏéÐAÖv ”€gÀýc“&I¯[Æ2ggûö¢Ëz¯MÄ zõÕü÷Õ%yO¾þ:ÿr’@é3 }ûžèJDÆ×¥‹Ô1W26kké@©VíÁ_cð`¹¨¯ZUå%Q×s Ó¯²Õ¸±<¿iS©ûÕ¶äòeýÊþþ õê¥2Ô¾½Ô÷y•+¥Þ/:êÔI†ŽÅÅÉϱ´Ôï]áå%eŠŠ’×™4Iæ$„„Ȇ°qq€¨mRI,,$¿u› ¦N“§#]P¥ àî L=<Õ0Ø@¾Â×Óÿœü€‰k¤vÃk³¿I¢_?àÖ¿ú:þù®’8ÿ_nGê–ÓÌtit:¤&f`ñ7:ü½I‡{è0áu]îcaA:ÌüD-tÜ[‡mê0¤ƒY):ìÐahW.lÐA›¦ƒ•Itp±O’ÆU§“±á™™@f&Ú†gÀÆ"ö»21™¨ú]&y¬YV~€IRæ °è Kä+w߯Åw¿4³î~Aâ«ù2`e€9`c˜™Á^c†0˜Áâª9SÌ 42ƒbb†ýIfÈ‚2[š–é÷þÃQ‰€”‘´´4hó.=t—¥¥eîãÅúö[À×›WcvI¿BjȺésçÊôþ Ú6 ðÏGÀÉ«@ˆ à> ¨c!çû„ FÛƒ€n}­3P]åBùÒ¥ÂËñªãsÕõ:w–áFêh2éرC2Š"å™2EÿíÛËíÊ•’þ|ï=¹€?{V^ìXI¯vê$“Ù ^$wè ½ ß}'ß)ðnÞ”†÷©§dXÒ¢E2wÂËK¿úFAîîú‹¼•}ëÖÒ@DFJö"ï$´É“e\²š!hÚTn§L‘²`ðHТÑÈ(II@úÇê××OÎ,Ky3 €~Ìu^yŠ’2 uêäß„ˆÊ‡gž)z)ñò`Ĉ’³÷Ò½»¥¡ 77É*ש£_Lh¬Ö¿mÛJyÖ·uGJ®€œ“·Ó¨Q#É|ìÝ+×Ç-óôö«üüäy©©…‡º6k&í¦ú;:%íal¬´Cj/{i@†òŽ¥_‘rð`é<ëÕKÚÅÏ>˾šéV÷‚$[di)]j›-m‚¢È¸I“€_4¿¿L«[å{MkS~FÇK§",õUK–}"ß~Xr°i)WÀ“À„uÀ¬» ±$$HPµeKÑ¿kk7Yåjútà™æò^®X!C¡?¡ ]«,ü²L’·_ÏÄÆµ™p©–‰SG3`’‰ˆë™¾œ‰Žm3sƒdf"#%Gög ™¸‘‰ÈÐL¼2$;6g"ðL¦}œ Mvb®gâ§%Yèâ›…#³0¡s2Ó²p80 fÈ‚bž³Ñùß\º •‰Æ+ݺu+tüÂ… ŠF£Q–.]Z豓'O*GǓʥKŠ2i’¢xzæ?ç»ïP”%KòoÞ\Ž×«—ÿxLŒ¢˜š*J‡Š’œ¬?þÔSŠ2h¢T¯®(Ÿ}–ÿ9©©òZ“&Ém@€¢dg+JNŽþœ!Cä1[[Eyþyù~Ó¦ü¯S¿¾¢¸¹Éc‘‘Šâà (C‡*ÊŒrÌÒRQnÜïý5ÿsÓÒÅÂB›=[Q‚‚äûíÛåufÍR”ÇåXµjŠÒ¿¡·3×úõr (wîèÿö›37W”o¾)þùŠ¢(RkkE -þ<yÍ7Þ(ùõÊÊõëòó'O.þœøx9ÇÂ"ÿß”ˆ¨þXQ\\ò·?))ò7¹qCQLLåÇåøøñú÷pÙ2yýãÇõÏûæ9öÒK^î;ä5Γû»vÉýß—Û³gõ×Í›Ëß\½^;yòäƒÿàÇ3 eÄÍÍ­ÈaVQwg4¹«i†"ÄÇ¿ƒ¾}ís7¤{á`È!2d†•ý¼{xÒ‹rútáULœe˜Qýúù{{7–Þÿ[· g@¬¬$…~ú´Üwq)Ü£¥>gð`Ž4}º>®êÐAz-jÔÞ¡o¿•y ––òØáÃúù ]»æ®¥¥ô89"¯[¯žôÖïÚ%©kooYM£~}Ic«Š¢¨oµ£cþI”êj™™¹{_ËÜ\Æ&·j%㯋óôÓ’®Ï;Oà f@Šbg'Ÿ+{û²ÙÀ‰ˆèa|óMéÏ-8Ü«fMl•§óÞÏOÚ»ôtùºxñÞÙ]µûûo™PÜÆê:ÉjRçÚ©uÙYÆ|ê”´×66Ò&©sþîÅÙY^ãàA¹U™`îœlZXšé>wN¿ªbp°>“£¶êµ½/¸äíý¨WO–ùwu•ïW¯–÷{ÆÝÅiÔ¶¸U+™4¡_Pá‹/d¥™™ óV3J;ÊÐç«We®Ï!ù³Qêû\ðâ~tê$Ÿ—íÛ%ƒ¦®€¥~Ö¬YƒÝ»×lX` ðÖ[ þ ð‰R*IóæÍqåÊ$%%å;~ìî¥ÍJØ1ª}ûpsÛ SÓÍ;v36oÞŒ!C† «`ðèW}*jE_ßÂciŸxBþùI5äî®Ï.µ ¶:WaôhIõ.ZTx…õ¢^ýU‡ “óu:™]½º¬VѤIáô5 •‚££¤Ø5ù=Ô‰Š^^rläH¹_R¢¾vÁT·§§4^¶¶¥ÛÀë—_î½IâÌ™ò¾·ºGY³µ•€MWF§’†_UTVùGá7dèÒÔ©úùwmÛ–ü662OQQd`qÔ ß‚S@†Ä::J§\«VúU¢J«MY¹QÝu¾[7éü+jø±Ú¥§ËE¾Úf«ïÖÖ2ÔM @N’¶¾„¾Ñ{òô”vÖÄD®EÒÓ%xxñÅüç©eP—ç ’!Ú––2L È€%$Hà’WÛ¶²LQ×E¥ei)óª¶m“û ÒNª×S ÁÈ‘›an¾û÷o†½ýf¸»/xðH€”™ ;;Kó ü×étX±bÚ¶m[â¼mÛʼˆ˜ýòª÷¢^\{y•î|uÂvÞ²¼ÜÝåŸÐÎNþ9 êÓG&i—´©:¯#ïÅý’%²F{“&òŸ]8s¢úè#««N´ôõÕyôhÉ©•TQŠ @4 ’:u*ÝQ¥Jþ€ M£‘,ѽ2:NNfÕ"¢ò®I¹p7O6åëСä=OTjç\IHl{ÝÝ%{¢v’Ò^…†>x{Óºµô¾ûûKpTµjñçš›ë;™Š @ýnè 2?¥cLJˊO*;Ú2_Òß_ö²*H¡ 3fHFfî\}öAm·]]eéùÞ½eiÁvÜÒRæŠ>l§_Ïž²Ï;Ru¯-{{YH :ZÊèä$ómÔù=ôà8«Œ´nÝć~ˆ›7oÂÓÓ+W®Dhh(V¬XQâsÛ¶• s ôHI¢¨HݺEj|TÜPsó’+e@RË£Fåï™07×Wê]»Ê2ˆÅ ¶¶ù+õ-ôeR³-..÷ÞØÒR*§¼{ƒ¨Ô½67NNÅ) "ªl&M’ ÉF¤]*Í…v«V0xzŽFSxs;UÏž…Ï-n±”ÒhÓF22¿ÿ^r–[åä$“Ý=<$`Ù¹SQÕ­+äNŸ–óæÍ{ð²2dI¶T­ZÉY&??é,›1C&£O˜ ‹Œ/ç½öPW8+K=zȇݻ%Q;è¼¼d±33}P4nœì RöåªÌ€”¡U«Vá“O>Á¯¿þŠøøxøøø`ëÖ­ð»G÷t:RaÄÆ–>£Ñ¦\è—”‘È«zu¹(/8ÿC¥¦aKšKp/ ±*΀²4biÇnª;{—ö=Ékݺ¢ׇY.²"{åÎÿ ¢Ç‡©éý_`O*Þ• JÇ\|¼~µ¯’89Ér»ÒaX°Ópɶ}»làX»vÙ”»(ýûËÒÿýO.ø{÷–ëÖ­åÂþQJ(­ºuåýݶM:-ÕÄÇG†§Õ¨¡Ÿçcn.ó<_~Ù°e¬l€”!­V‹¯¾ú _}õÕ}=O£‘!NçΕ~÷jÕdŸûù#G¿ï„€5ÿãQ©VMR®¥åí-•oi³éLìÙS¿—‰ºÒæÐ¡2qÝžyFç9vLŸiÚTöH>rË È£Å„Šdf&ë\—&ÍKDDDTÑ©Ûä @ÔaX @- DDDDôØkÑBVÍlÕJ¬kWýæ‰ôèp=öÌÌ€={òëÜ7Ny*3f@ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ÊÈž={0zôhÔ¯_666ðôôÄk¯½†èèhcˆˆˆˆÈhÌŒ]€Êêý÷ßGBBooo\»v .ÄÖ­[qæÌ¸¸¸»ˆDDDDDÇ HY°`‚‚‚ðÅ_`ôèј={6¶nÝŠ˜˜,\¸ÐØÅ#š5kŒ]zLð³F†ÂÏQÅÀ¤Œøùù:Ö±cG888àÒ¥KF(Q~l¨ÉPøY#Cág¨b`b@ÉÉÉHJJ‚“““±‹BDDDDd @ hÁ‚ÈÌÌÄ AƒŒ]"""""£à$ôRP:®TçZZZyüÀøì³Ï0hÐ <ýôÓ°tDDDDDRØ¿?ºtéRªs/]º„úõë:Ö·o_4mÚ?ýôÓ=_ãâÅ‹TN¢û‘€S§N»ôàg …Ÿ52^§=<¢(б QÞÅÄÄàŸþ)Õ¹/¾ø"ªV­š{?,, :t€……>\âò»QQQhÙ²%"##ºÌDDDDT6ÜÝÝqâÄ ¸¹¹»(2tûömøùù!!!‡‚§§ç=Ÿ…¨¨(”Žˆˆˆˆ„››ƒ‡À¤Œ¤¤¤ K—.¸|ù2öîÝ‹æÍ›»HDDDDDFǤŒ¼øâ‹Ø¼y3F]hÒy•*UЧO㌈ˆˆˆÈˆ€”‘ºuë"44E½½uêÔApp°JEDDDDd\ @ˆˆˆˆˆÈ`¸! r@§Óáý÷߇»»;¬­­Ñ¶m[ìÞ½ÛØÅ¢Jfß¾}011)ò+ ÀØÅ£ *%%Ó§OG÷îÝáàà¬\¹²Ès/^¼ˆîÝ»£J•*pttÄ+¯¼‚ØØX—˜*ªÒ~ÖFŽYd=רQ##”š*¢ãÇãí·ßFãÆakk‹ÚµkcРA¸zõj¡sY¯=nDXŒ97nĤI“àíí+V gϞػw/:tè`ìâQ%3qâD´jÕ*ß±Ò,MT”[·naæÌ™¨]»6š5k†}ûöA£Ñ:/<<O=õªU«†/¾øIII˜;w.Î;‡€€˜››¡ôT‘”ö³Z­Ë—/ÏwÌÎÎÎŤJ`Μ9ð÷÷ÇÀÑ´iSDEEaáÂ…ðõõÅÑ£GѸqc¬×ŠBFuìØ1E£Ñ(óæÍË=–žž®xyy)íÛ·7bɨ²Ù»w¯¢Ñh”7»(T‰èt:%&&FQE9qâ„¢Ñh”•+W:oܸqŠ–{l÷îÝŠF£Q–.]j°òRÅUÚÏÚˆ#”*UªºxT‰9rDÉÌÌÌwìêÕ«Š¥¥¥2lذÜc¬×‡`Ù† `ff†±cÇæÓjµ3f üýýaÄÒQe¤( ’’’••eì¢P%`aaggg(rÕ?ÕÆÑ»woxxxäëÚµ+êׯuëÖ•y9©â+ígM}<''wîÜ1DѨ’i×®ÌÌòòòòÂO|}}‘““ƒíÛ·cÑ¢E8{ö,öíÛSSSc‘* ß~û ‘‘‘˜5kÖk‹ˆ‘¥¥¥A«Õ:nii™û8ѣЮ];´k×.÷~ïÞ½1`À4mÚ~ø!¶oßnÄÒQe¦Öc÷ªëØPÓ£ðùçŸç»ÿÒK/¡~ýúøøã±aà 4ÈH%£ŠêÒ¥Kx뭷о}{Œ1뵇Å!XFfeeNWèxzzzîãDeÅÓÓ}úôÁÞ½{ï9¦šèA©õë:2–I“&ÁÄÄ{öì1vQ¨‚‰ŽŽF¯^½P­Z5lذ!wå5Ök‡ˆ‘¹¹¹9ÌJMí¹»»ºHô˜ñðð@FFÇGS™Q‡(¨õZ^QQQpttd/!•)KKK888 ..ÎØE¡ $11=zôÀ;w°cǸººæ>Æzíá01²æÍ›ãÊ•+HJJÊwüرcÀqùT悃ƒaeeUh!¢G¥F¨^½:Ž?^è±€€ÖsTæ’’’‹êÕ«»(TA¤§§ãùçŸGPP¶nÝŠ† æ{œõÚÃabd @vv6–.]š{L§ÓaÅŠhÛ¶-jÔ¨aÄÒQerëÖ­BÇΞ=‹Í›7ãÙgŸ5B‰èqÒ¿lݺááá¹ÇöìÙƒ«W¯bàÀF,U&:®P‡Ìœ9н{wC‰* ììl 4ÇŽÃúõëѦM›"Ïc½öà4 ~Ý AƒðÇ`Ò¤IðôôÄÊ•+qâÄ ìÙ³~~~Æ.U]ºtµµ5ÚµkgggbéÒ¥Ðjµð÷÷Gƒ Œ]Dª .\ˆ„„DFFbÉ’%èׯ_nïß„ PµjU„‡‡£yóæ°··Çĉ‘””„¯¿þµjÕÂñãÇ9TJå^Ÿµ¸¸84oÞC‡Í> «­VIDAT­Óþùçlß¾=zôÀßÿmÌâSñÎ;ïà»ï¾ÃóÏ?_d 1lØ0`½ö€”:Ÿ|ò þ÷¿ÿ!>>>>>˜9s&žyæc*‘ï¿ÿ¿ýö‚‚‚pçÎ8;;£k×®˜>}:êÕ«gìâQV·n]ܸqr'h*ŠFƒÔªU ˆÉ“'ãСCÐjµèÕ«æÍ›Ça1Tj÷ú¬ÙÙÙaüøñ8zô("##‘ ooo¼üòËx÷Ýw¹/•JçÎqàÀ"gÑh4ÈÎÎνÏzíÁ0!"""""ƒá"""""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ † """""2 DDDDDd0 @ˆˆˆˆˆÈ`€‘Á0!"""""ƒaBDDDDDĈˆˆˆˆ æÿ?ݬuRòIEND®B`‚lmfit-0.9.2/doc/_images/model_fit1.png0000644000032700003100000007161312603520205021022 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝyt”õÝÿÿgÀ* ƒk«m4˖Ђ­ˆ­ ‘Ÿ¶½¿u·t1œª_{Ï-¶ ýîÞöë^PTŠ".ØûvGA› DER—* qe_&™ß“(`-s]3“çãNNæš™¼ s½r]ŸÏ;'‘H$$I’¤ä†@’$IRËa‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@RlÑ¢E 6ŒŽ;Ò®];ºwïÎý×…K’$I E~زÙ3Ï<ÃСCéÝ»77ÝtíÛ·gÅŠ|øá‡aG“$I’B‘“H$a‡ÈFk×®¥k×®üà?`Ú´iaÇ‘$I’Ò‚·`¥Èƒ>Èš5k;v,6l ¾¾>äT’$IR¸, )òÜsÏqÐAñ¯ý‹nݺqàrðÁså•W²eË–°ãI’$I¡°€¤ÈÛo¿M<çœsÎáÌ3Ïdúôé\rÉ%Ü~ûí”——‡O’$I …k@R¤°°wÞy‡+®¸‚¿þõ¯_>~ÅWpÇw°|ùrºtébBI’$)xî‚•"Œ9r‡ÇGŽÉwÜÁܹs›, «V­bÕªUd”$IÒÞ;âˆ#8âˆ#ÂŽ‘±, )rä‘GR]]Ía‡¶Ãã;wà³Ï>ûÚkV­ZEŸ>}X¹re %I’´÷Ž<òH,X` ÙGéÓ§Ï=÷|ðÇwÜ—7–‹H$òµ×¬ZµŠ•+Wrÿý÷s '–Uá=z4&L;†â÷»eñûݲøýn9Þxã .ºè"V­ZeÙG9ÿüóùÃþÀ=÷ÜÃ~ô£/¿ûî»iÕª?üáwùÚN8^½zRaëСƒßëÄïwËâ÷»eñû-í9 HŠôèуK.¹„¿ýíoÄãqÈ‹/¾È´iÓ¸þúë9üðÃÃŽ(I’$Î’B·ß~;ßþö·™8q">ú(Ç{,&LàÚk¯ ;š$I’ H åççsÓM7qÓM7…E’$IJ "”B´ó6ÍÊn~¿[¿ß-‹ßoiÏY@¤ù«eñûݲøýnYü~K{Î"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$Æ"I’$)0I’$I±€H’$I ŒD’$IR`, ’$I’c‘$I’ ˆ$I’¤ÀX@$I’$&?ì’$5§ÚÚZ***©ªª&Ï#?¿Žh´ˆÊÊ "‘HØñ$©Å³€H’²Æš5kèßÿjjn* žêê*fÏ.#›j ‘¤y –$)kŒ3®¡|ô#Y> ù£®55c©¨¨ /œ$ °€H’²HUU5ÐwGû6—$…É"IÊñx_]ùØYnÃqIR˜, )ôâ‹/’››Û䟪ªª°ãIRÖÉϯ»8Zßp\’&¡à¿ø%%%;¥$^O§"×HRsÊI$»Ú.D)PSSÃI'ÄÀùŸÿùŸŽ-Z´ˆÞ½{³páBzõêRBIÊB ’øÁxå¨B.kýmâuùäç×±uëV¬ø=PºÃÓ»ð6³(eÛ!¹|{Å›pè¡áä–”v<_Û^ Xaa!gŸ}6Ó§O'‘H“³«ýê%IÍ⣨6Œ×­8µæ¯la ÉY!õÀ©4µcÖ ŽãTfòòÚÞpÆðÜspÐA—¤ìd ÁÑGÍÖ­[Ù°aíÛ·ÿÚñÑ£GÓ¡C‡9r$#GŽ *¢$e‡­[aÄÖ}öC¶<ÈNÞî`.О] .¬¦;—ÕG—/M.\úihÛ6ˆÔ’ÒÄ”)S˜2eÊ}þùç!¥ÉüóŸÿ¤   Éò0aÂ/éIRsøÅ/`Þ<®:ª+ßÚÄ6UBêYÞþ@˜úœ|2Üz+TT¤6¯¤´ÒÔ/€oÁÒ¾sz ÕÖÖ~í±%K–ðÄOpÚi§…H’Z{îÛo‡ÛncAëN4]2Š€y»xƒ†Á…ýúÁÏ~ãÇÃæÍ©Ë+I-„W@R¨¬¬Œ¶mÛRZZJçΩ®®æÎ;ï¤}ûöüá;ž$e¯-[à†’ÅáÒKÉÿótš¾ÒQ”ÿAr!zƒ !yåãoK)¼üò þ’”•, )ô“Ÿü„x€ñãdzvíZ:wî̈#øÝï~Çw¿ûݰãIRözè!øè#øíoˆF‹¨®žÇלG€ßÐ¥Ë ´nÝîëƒ #‘äÓŽ;FŒ€ÊJø·‡ÊJÒ>sÞ4â¶n’Ô  èÓ:w††íÎkkk)--£¦f,З¯tÄbÛ•]Y¼zõ‚7‘Z,Ï×öŸ¿Â‘$e—W^E‹¾,œŽ‹Mm˜x~ó®¯tìdû)éñx÷´ëÄ·¯úƒéÜ9¨¿‘$e ˆ$)»L˜Ç;mö‰D˜8qÜ¿MSSÒo`&/m8…ûÞ©ü~éó»¿j"IúwÁ’$e÷ÞƒG…k¯…Üýû7f̸†òÑÆÅë³ø!1ú1ju•_{Mmm-åå×Q\<„n݆Q\<„òòëšÜQ’Z*¯€H’2ÒηGåç×ñ§œ5œ~àäþìgûýþUUÕ$¯|l/‡ßó[žàlîxqÇ¡„M]1zª««˜=»lÏÖ™HR `‘$eœ¦NöÛ²Ž~ÅÝ:𓉴k·__#Ï£©Ù!Oòc^§˜Kkÿ¹Ãã;^1i” ô£¦f,•{u ˜$e+oÁ’$eœ¦nú÷sûù„&oÚ[ùùSÒw” —?PÁ7¬%K¾|ÙÏ¡ž_ðŸLç\Þçœf9ÙFw=%}*ßáãvÁvCewuÅ$)·á¸$É"IÊ8;ŸìŸÆ3Ï[ü'¿ ¹Nö+++(,¼ˆ‘œBÃÇÇþŽ67þ69ðpÅ `×WL_—<.I²€H’2ÎÎ'û£™ÀBzñ ß§¹Nög‡Œ5¢¢¡tí:Œ¢¢¡Œ53þʯ—­æÓœ|Nqñ¶nÝÌÝÅ»Ík¸¢"Irº$)ãD£ETWÏúq"“ýí烼ÄÉ|¡ çÑ8ƒÖ­ÿʲeÿHÙ×—¤LçIRFŠD"Ü5ò4ÚÕ×qõK°lÙ?˜8q\ʯ4l¿>N+çlF0äšw»’¤Ý±€H’2×cAa!ö%w^?tåmNäuÜíJ’vÏ"IÊLõõðÄpöÙ³«ùÍoçù Ï3ˆ/8ˆá<‚»]IÒîY@$I™©ª V¯†sÎ ôËî<d+m˜ÁÎä†ð摤Lc‘$e¦Ç‡N ÿ@¿lSóAæý&Ýù'U“Ǻە$톻`I’2ÓcÁСü¢ï¯ÍÙ´ "9JKÏ#I™Ä+ ’¤´V[[Kyùu¡[·aá·ç^ o¾™\ÿ‘ ଳà‘GÂN"IiÏ+ ’¤´µýÔñäì ž!Õײ)'—õ=z67<eeðÎ;ðï„F’Ò–W@$Iikû©ã³7 —³YÌÓ‰ïSñï·†˜n'gàUIÚ ˆ$)m%§Ž÷Ýá±Î|D)1çâ†ãi¢}{8ýt ˆ$í†D’”¶¶Ÿ:Þh(3HÓ K¿©ãÇÃܹðÁa'‘¤´e‘$¥­§ŽœÃc¼Â÷ù˜Žé7u|èPhÕ ¦O;‰$¥- ˆ$)míÿ<ó ¸D’¶c‘$¥§™3“·^õív’ý7h¼û.üóŸa'‘¤ÐY@$IéiæLèß?¹=Ó ¹¹^‘$, ’¤tTW³feöö»ÛëÐúôqˆ$a‘$¥£Å‹aíÚìXÿѨqH"vI •D’”~^|  ;Ió4Ö¬eËÂN"I¡²€H’ÒÏÌ™ðýïCëÖa'i>ýû'ÿ>®‘ÔÂY@$Ié%‡Ù³³ëö+€¶m“%Äu ’Z8 ˆ$)½,ZëÖe_äß饗 ¾>ì$’ ˆ$)½Ìœ íÚ%wÊ6?ø|ñ¼ñFØI$)4IRzyñÅä‰z«Va'i6µµµ”—_GÉU¤øÝà (/¿ŽÚÚÚ°£IRà, ;v,¹¹¹tïÞ=ì(’”ž¶mK®ÿÈ–ùÀš5k(--cÒ¤á,xó)–ГcWõfҤᔖ–YB$µ8€|ðÁÜrË-´k׎œœœ°ãHRzZ¸6lȪõcÆŒ£¦æ ÃúÓŸКš±TTT†œP’‚e Èo~óú÷ïOŸ>}H8„J’šöÊ+Éù½z…¤ÙTUU}¿ü|ýéÆr:ò1зá¸$µÌš5‹Gy„ &H$¼"I»‹AIIV­ÿˆÇó€¯þ¿?‡þ”rŽKRËaI±ºº:®¹æþ×ÿú_‡G’ÒW"‘, ¥¥a'iVùùuÀWW¾ßãVrý™Ô7—¤–#?ìÙîöÛoçý÷ßç'ßJÒ7û׿`åʬ+ ÑhÕÕóH®¯ÖÌžbëÖ !Ï#?¿Žh´ˆÊÊ "‘Hˆ©%)u, )ôÉ'ŸpÓM7qÓM7ѱcǰãHRz‹Å’³¬€TVV0{v55cI®Ée¥ŒåzÈû%+VÜÛðxPOuu³g—‹Mµ„HÊJÞ‚•B7Þx#:uâšk® ;Š$¥¿9sà»ß…ÎÃNÒ¬"‘±ØTFšNQÑPºvƪc¡€­œXWAãîXI¹¸;–¤lçyûí·¹ë®»˜0a|ðÁ—oÞ¼™­[·òÞ{ïqÐAqÈ!‡|íµ£G¦C‡;<6räHFŽ™òÜ’š,\ÿÑ(‰0qⸯز…-méŸXÇ‚&_Ñ—ªª›J'iW¦L™Â”)SvxìóÏ?)MöÈI¸'lJ¼øâ‹œrÊ)ßøœÑ£Góç?ÿùËÏ-ZDïÞ½Y¸p!½²h JIÚ­M›à ƒ`¸ꪰÓbaÁ¡¬Ø<˜ ˜Úäñ®]‡ñÖ[OœJÒîx¾¶ÿ¼’"Ý»wçÑGÝaËÝD"Á7ÞÈúõëùÏÿüO CL(IidáBˆÇ³ö HS–´;„Á›çì⨻cIÊ^騱#gŸ}ö×?~<Æ :’$¥¯X Ú¶…“N ;I`ÖŸÔoÍ|œ£ùð­ŽÎ#- %—$¥š‹Ð–““ã BIÚYãÂü–ó{±ÿï¿ÆPʽ@}ãõ@ŒÂ¨¬¬+š$¥TËù?}š˜9sfØ$)½4 5*ì$êT\LݱÇòo²,'¶Ó·à•”½, ’¤p½÷¬^Ý¢Ö4Ê0€ÓÞ|“eUÿ;Š$Æ[°$Iáj@دß7?/õï‹ÃÆa'‘¤ÀX@$IáŠÅ¨;öXÊÇŒ£¸xݺ £¸xåå×Q[[vºÔêß?¹ûׂ¦§HR6ò,IR¨¶ÍžÍ?>ÞĤIÃJ’SÁë©®®böì2b±,^Q\ ˜œ?p`Øi$)^‘$…gÓ&r–,å™õ?ú‘,üñÔšš±TTT†—/Õòò’·žÍÙÕ<IÊ>IRx, ?QOŒ‘»xB_ªªª¸þý“$‘;‰$Â"I O,Ɔœ<^cWs‰Çó¸þýá“Oàí·ÃN"I°€H’‹±¬à`êØUɨ'?¿.ÐHëÛrr¼ KR‹a‘$…£aášÂã€y»xÒ<¢Ñ¢ SïàƒáÄ- ’Z ˆ$)ï¾ }ĀЫ),¼ˆõ ë……7PYYZÄÀ4®‘¤À"I GÃO?Xl*£FM§¨h(]»£¨h(£FMÏî-x·×¿?,[Ÿ}vIJ9ç€H’‹A—.‰&Nv¢ðôí›ü¸` nIJ1¯€H’S[[Kyùuáõ»&óxí¦–1ñ|wŽ;.¹dþü°“HRÊY@$IX³f ¥¥eLš4œwª¢Û– <õÅo™4i8¥¥e-»„äæBI TU…D’RÎ"I Ę1㨩¹èGÒŠ81¾O‹˜x¾'¢Q˜7Ï„’²žD’ˆäDóäZ‡~Ìe=íx޶€‰ç»ÂêÕðá‡a'‘¤”²€H’‘œhž@”*Їº/÷BiÏw'M~ô6,IYÎ"I Dr¢yòö¢(UTÝîh ˜x¾;GGe‘”õ, ’¤@$'šÏã0VómþÅ|J¶;Ú&žï‰hÔ")ëY@$I¨¬¬ °ðzJ˜ Ðp¤…M<ßh49 ¤¾~÷Ï•¤ å BIR "‘±ØTæ Æ'¯·æ€ï^MQ«z¢Ñ"*+[ÈÄó݉FaÝ:xë-8á„°ÓHRJX@$I‰D"œ}øÁpÔ©¼õaÇI?½{CNNò6, ˆ¤,å-X’¤à$ÉißÑèîŸÛ|0¼ë@$e5 ˆ$)8?~šœú­¦¹]R–³€H’‚ÓxbmÙµ’X²6o;‰$¥„D’œùóáØcÁç»¶mÉ"IYÈ"I NU•ë?v礓 uëdY“¤,d‘$#‡E‹¼ýjwÚ´=\")kY@$IÁxã Ø¸Ñ+ {Â…è’²˜D’Œª*ÈÍ…^½ÂN’þ¢Ñä0ÂÏ?;‰$5; ˆ$)óç'‡ëµov’ô×x›Ú‚áæ¤°€H’‚áô=×µ+t·aIÊJIRêmÚ¯½æô=•››ü·r',IYÈ"IJ½W_Mî‚å=çBtIYÊ"IJ½ùó“³-ºw;IæˆFaåJøðð“HR³²€H’Roþ|èÙ3YB´g¯yDR–±€H’š]mm-åå×Q\<„n݆ñÎCòÜ[©­­ ;Zæ8òÈä ˆ¤,“vIRvY³f ýû_@MÍ-@%óßánzs(±Ò2b±©D"‘°cf×HÊB^‘$5«1cÆ5”~@}Hβ˜ÏHjjÆRQQj¾Œ&gÔׇD’šD’Ô¬ªªª¾_~^Â|¾à –ÓèÛp\{$…µkaùò°“HR³±€H’šU<žä|ùy”*Ї¹@nÃqí‘>}’½ KR±€H’šU~~øòóæ3ŸÆ„õ ǵG>89}Á‚°“HR³±€H’šU4ZÌàVr4REãÂy ǵÇúôq"º¤¬b‘$5«ÊÊ ¯b”4‘ùôbÞ@eeE¨ù2NIIr’ü¶ma'‘¤fa‘$5«H$B,6•Q£¦sV§ëX“׆ƒN¸‚Q£¦»ï¾()Í›aÙ²°“HR³pˆ$©ÙE"&N§/…6E,{≰#e®= 77¹¤G°ÓHÒ~ó ˆ$)5‰äIsIÉ]k׊‹]")kX@$I©ñÎ;ðé§_m%«}çBtIYÄ"IJÆf Èþ+)×^K®‘¤ g‘$¥ÆüùpÌ1à¢óý×§Äã°dIØI$i¿Y@$I©áúæsÒIЪ• %e ˆ$©ùÕÕÁÂ…Þ~µjkk)/¿Žââ!t;é<^Ï+àåñ·Q[[v4IÚ/IRó[¾Ö¯÷ È>Z³f ¥¥eLš4œêê'Y¾ü foI‡šM”––YB$e4 ˆ$©ù5.@ïÕ+Üj̘qÔÔÜôrX@ 'ð.«kn ¢¢2Ô|’´?, ’¤æ·`tí :„$#UUU}wxl>%äQOOòŽKRf²€¤Ð²eË8ï¼ó(,,¤]»vtìØ‘þýûóÀ„M’Rkþ|×ì‡x<Æ+ª)b#”°°á¸$e¦ü°d³÷ߟõë×3jÔ(Ž<òH6nÜÈ´iÓøéOÊ»ï¾Ë 7ÜvDIj~Û¶Á«¯BYYØI2V~~`ûRG>‹éIæót~]hÙ$iY@RèÌ3ÏäÌ3ÏÜᱫ®ºŠÞ½{sçwZ@$e§eË’ó¼²Ï¢Ñ"ª«ç‘\ò•ôá,¦^N0IjÞ‚°ÜÜ\Ž>úhZµjvIJ 7zö ;Iƪ¬¬ °ðz Ô7Ë[o½E=¾v|„yŽ& IDATôèÑtØix×È‘#9rdP%ißÌŸ­ZÁI'…${õéãÆÁš5йsØi¤¬6eʦL™²ÃcŸþyHi²‡$W>rs›¾5aÂzõêd$Ij $ËG›6a'É^··-Xgn)Ë5õ àE‹Ñ»wïeoÁJ¡ÚÚÚ¯=¶mÛ6î»ï>:vìHqqq©$)…æÏwýGª{,tìè:IË+ )ôóŸÿœuëÖ1pà@Ž<òHV¯^Í<ÀòåË™8q"yyyaG”¤æ³~=¼ñüò—a'Én99ÉÛ°\")CY@Rè‚ .àž{îá¶Ûnã“O>á ƒ¢oß¾Üzë­ 4(ìx’Ô¼/NnëÔ+)»î‚D"YH$)ƒX@R¨¬¬Œ²²²°cHR0,€‚‚äB¥VŸ>póÍðá‡pôÑa§‘¤½âIRó˜?zö„|·•rW™\")Y@$IÍcþ|ç ¶¶–òƳ&¿ ·ÿ[ÅÅC(/¿®ÉO$)ùk*IÒþûì3X±Âõ)¶fÍú÷¿€šš[8‡å~º‘êOgP]]ÅìÙeÄbS‰D"aÇ”¤oäIÒþ[¸0ùÑ+ )5fÌ8jjnúQE”>, ¹½55c©¨¨ 7 $í ˆ$iÿ-X]»†$«UUU}˜O ‡ð9]XÑp´oÃqIJoIÒþ›?z÷†\¬¤R<ž ×<¼ÚTBãBô܆㒔ÞüI!IÚ xûUòó뀟q(oÓ…(U GëŽKRz³€H’öÏêÕðþû†$ëE£EÀ¼/?ŸOÉvW@æ5—¤ôf‘$íŸÆY”«¬¬ °ðz ÔSE”ž,&ŸÙÞ@eeEØ%i·, ’¤}V[[Ëãÿû>ÎkM·ÁW;“"Å"‘±ØTFšNQÑP>úÖ4 ØÌõCïr ^IÃ9 ’¤}Ò8“âÖš1NcùÛ3€zgR¤X$aâÄqÉO6n„ƒâÿüø࿵¤ áIÒ>IΤK”åTÑxûU.ΤPÛ¶pâ‰PUµûçJRš°€H’öIUU5…tâP>c>;O@w&E`¢Ñ¯ÖáHR°€H’öI<žG´a¦¯gR¦¤^6l;‰$í ˆ$iŸäç×QB+(äS:îtÔ™))úzX¼8ì$’´G, ’¤}å…íÖlÏ™).†‚×HÊî‚%IÚ'•cÉ÷þ™‡§õ$§UÌk˜I15Ü€-E«Vг'›_~™+^[EUU5ñxùùuD£ETVV¸™¤´b‘$í“ÈGA¢žÈ™k(zoèN'½nÁ¤'žHíß&3)þP äà–È’Ò•D’´oæÏ‡¼\@4qÔ-‘%¥ ˆ$ißTU%gP(tÿÌ=Ïè@”¦¢»%²¤ôb‘$í½õëaÙ2 HšÈoUÏ|J(¡©„n‰,)½X@$I{oÑ¢ä쉒* ÑhUÕp$±ÓQ·D–”^, ’¤½7~ríG‘'¶é ²²‚_Àá|ÄѼßðh=kع"Ìx’´wÁ’$í½ª*èÝòý1’"‘cŸyN:‰s>—§Úå–È’Ò–?9$I{¯ª †;…¶Ó±{w8ê(þóÂÁð‡?„G’vÉ[°$I{gÍx÷] §£’’äíq’”Æ, ’¤½Óx‚ëôô‚É $)MY@$I{gþ|èÔ Ž=6ì$ÚYI ¬] Ë—‡D’vÉ"IÚ;srÂN¢õé“üèmX’Ò˜D’´ç ' §³ k×ä÷H’Ò”D’´çÞy>ùÄ’΢Q˜7/ì’´KIÒžküͺ ÐÓW¿~°x1lÚvIj’D’´çæÏ‡ï|'¹]é©´âñd ‘¤4d‘$í9פ¿îÝ¡ b±°“HR“, ’¤Ýª­­åÒ‹ͦWæðû^£¸xåå×Q[[v4í¬U«änXsç†D’šd‘$}£5kÖPZZÆ¢ûN¢ QÏ?jï ºz“& §´´Ì’ŽJK- ’Ò–D’ôÆŒGMÍ-”²mä³Þ$|ô£¦f,•aGÔÎúõƒ>Hþ‘¤4c‘$}£ªªj /¥ÄXLO6S°ÝѾ Ç•VúõK~ô*ˆ¤4d‘$}£x<È¡”1Jw:šÛp\iåˆ#à˜c, ’Ò’D’ôòóëˆð]¨i¢€Ô“Ÿ_J.íF¿~î„%)-Y@$Iß(-¢÷4Q@æJ»WZ ÂÖ­a'‘¤X@$Iߨ²²‚³:ÜÊJ:ñ>G7l#Ÿ~ì¼=—xW_}5ÅÅÅ´oßžcŽ9†²²2Þ~ûí°£IÒî-Y›6Y@2X4ZÌc.ý(%¶ÓÑy Ç%)XúãÿÈ£>ÊàÁƒùË_þÂÏþsfÍšE¯^½X¶lYØñ$é›Í™­['g€(#UVVPXx=1:Ñ•·9”O€z Faá TVV„QR ä6¼)ôë_ÿš’’òó¿úg.++£{÷îüá`òäÉ!¦“¤Ýh@ئMØI´"‘±ØTÆ]q=<çys:t"-¢²Ò-x%…Ã’B¥MܶХKŠŠŠxóÍ7CH$I{!ƒsÏ ;…öS$¡òá;áð'¸ë’Óà?þ#ìH’Z8oÁ X"‘à£>¢S§NaG‘¤][µ Þ{ÏõÙ"'úõƒ¹;/D—¤àY@öÀ°råJÊÊÊÂŽ"I»æÂìSZš, ñxØI$µp½ùæ›\uÕUôïߟ‹/¾8ì8’´k±}tò²Ã€°~}rw3I ‘$ «W¯fÈ!rÈ!L›6œœœ°#IÒ®9€0ûôé“ÜP`öì°“Hjá\„€/¾ø‚3Ï<“µk×2{öl?üðo|þèÑ£éСÃ9’‘#G¦2¦$%mÝš@øûßïÑÓ7oÞÌ /¼@]]C‡ýÆç–——sÈ!‡pôÑGsüñÇsÊ)§pÀ4GjíN›6Éu ³fÁèÑa§‘2”)S˜2eÊ}þùç!¥ÉÛ¼y3C‡eÅŠ<÷Üsüñ»}Í„ èå¾û’Âòê«°eË7^Ù°aO=õÓ¦MãÉ'Ÿdýúõüð‡?üÆÇùàƒ˜;w.ÿú׿ذaíÛ·gèС >œ3Ï<“¶mÛ¦âo¤FÀí·C"‘\˜.é5õ àE‹Ñ»wïeoÁJ¡ºº:ÊÊʘ7o?ü0}ûö ;’$íÞìÙpÀгçÇãq~øaFŒA$aĈ¼ù曌3†êêj^xá…o|Ûüü|ž}öYÞxã Ö­[Guuõ—¯1b:ubùòå©ü›ià@øøcp+xI!ò H ýú׿fÆŒ :”?þ˜ûᅦã]tQHÉ$é¼ôRòêÇNŸþyÎ?ÿ|JJJøÝï~ÇðáÃéÒ¥Ë>}‰œœN8án¼ñFn¼ñFV¬XÁ“O>¹Ïï§=TZ yyÉ’y a§‘ÔBY@RhÉ’%äää0cÆ f̘±Ã±œœ ˆ¤ôS_Ÿ<9mbÀi§Æë¯¿Nqqq³Ù.]º0Úu ©×¾}rºý¬YðóŸ‡FR eI¡™3g†A’öÎk¯ÁçŸÃÉ'íPNNNJʇ6`L›v I-˜k@$I_™5 Z·†4\³v÷ÝwSQQÁÖ­[ÃŽ’Ù„÷ßONº—¤X@$I¼ýöÛ|ôÐCBAAØq¾&3~üx¾ÿýï³bÅŠ°ãd®ü ùÑy ’Bb‘¤.‘Hpß}÷ѳGZÍKbÀ€°#5éòË/gΜ9|öÙgôìÙ“É“'‡)3uìÅÅÉ«]’ ˆ$µ`k×®å§?ý)_|1× Ì¡ñ89?üaرv©¤¤„Å‹sî¹çò³ŸýŒŸþô§¬]»6ìX™gÀ¯€H D’Z¨Å‹Ó³gOžxâ î¿ÿ~~ÆÉ-Zû÷;Ú7:ðÀ¹÷Þ{™ ù#¢55c©¨¨ #¦RiÀxõUp¿¤€Y@$It|ýu^¥_С‰£}©ªª<“Rlà@¨¯‡9sÂN"©…±€H’è½áSf1pGs‰ÇóÍÓ\>þøc6oÞvŒôtÜqй³ó@$Î"I-Ýûïst|/í²€Ô“Ÿ_h¤æP__Ïi§ÆùçŸÏ¶mÛÂŽ“~rr\")IÊBñxœqãÆ±iÓ¦Ý?ù¥—˜MÛ]œO<‘=zìóûÄãyägÏó4§ïtÔ Ø&L oß¾ >œ•+W†'X;BïÞI)g‘¤4·eˆN^^Ó¦M£uëÖûü^ùùuD™ÇÁ¬m¢€8»uëÖ<üðÃäææ2bĶlÙv¤`  Ï=õõa'‘”Å, ’”ƉW_}5‹/fúôévØaûõ~Ñh§ó7>áPÒ{§£NÀ†äL•Gy„… rÍ5ׄ'XƒCm-,YvIYÌ"IiìŽ;îàî»ïæ¶Ûn#î÷ûUVV0¬Í4ž¥'õ4NM¯Ç Ø;êÛ·/·Ýv÷ÜsK—. ;Npú÷‡¶m½ KRJ9ˆP’ÒÔ+¯¼Âµ×^ËÕW_Myyy³¼g$7—N[׳èûù}64¹&$¿Žh´ˆÊJ'`oï’K.¡´´”N8!ì(ÁiÓN>9Y@*,£’RÃ"Iiêå—_¦ÿþüùÏn¾7}þyr .ùûÝ\rôÑÍ÷¾YªE•FƒÃo ›6AAAØi$e!oÁ’¤45fÌžyæZµjÕ|oúôÓP\ –íÊàÁ°e ¼ürØI$e) ˆ$¥±ýÙñêk‰d9}çݯ¤íÃG¸DRÊX@$©¥¨®†?„ÓN ;‰ÒYNœzªDRÊX@$©¥xæ8à80ì$Jwƒë¯Âš5a'‘”…, ’ÔR<ýt²|¸°x¿¼ýöÛ\xá…lÚ´)ì(©sê©ÉÏ?nIYÉ"Ii §ö lÚ/½äúf°qãF¦OŸÎµ×^v””©ÍÏç_‡tbú•të6Œââ!”—_GmmmØÑ$e ˆ$…lâĉ 0€ 6ìÓëkkk)/¿Žââ!»>Yœ=6ovýG3øÞ÷¾Çÿûÿ»ï¾›I“&…§Ù­Y³†ÒÒ2úl0ÑÏ,_þ8ÕÕ3˜4i8¥¥e–IûÍ"I!Zºt)W^y%'žx"íÚµÛë×7ž,Nš4œêê'Y¾ü‰¦OŸyŽ:*¹Ã‘ö[yy9—\r W^yeÖMJ3f55·ð,?ãh>äxÞ$yºÐšš±TTT†QR†³€HRHÖ­[ÇyçG·nÝøË_þ²OïÑx²ý€œ†G›8Y|úéäÕœœ¦ßH{íÖ[o¥k×®œwÞy¬[·.ì8ͦªªèË,²‘†ðíŽöm8.IûÎ"I!H$\vÙe¬\¹’‡~˜‚}\Þx²Ø´†“Å?„×_wýG3+((ࡇbåÊ•\~ùå$‰°#5‹x<Èamy†Ó8‡Ç¶;šÛp\’öD’Bp÷Ýw3eÊîºë.Ž;î¸}~ŸÆ“Ŧ5œ,>óÌW³Ô¬ºvíÊwÞɃ>È´iÓÂŽÓ,òóë€d™zŒsèÏ:óQÃÑú†ã’´ï, ’°%K–pÍ5×pùå—sÁì×{m²øu '‹O? }ú@ÇŽûõµÔ´‘#Gò÷¿ÿaÆ…¥YD£EÀ<žäÇ$Èa(3ŽÎk8.IûÎ"Iû÷ÿwŽ?þxÆ¿ßïµýÉâ×Í£ï®ðßÿ Yrrœ®ÊÊÊhÓ¦MØ1šEee……×1>áPf3€sxˆQXx••aG””á, ’°û￟3fpÀì÷{m²õ ÖÓx²ø§3J`Ý:8÷ÜýþZj"‘±ØTFšNQÑPæD>fpÎS\~á߉Ŧ‰DÂŽ()Ãå‡@’ZšvíÚíÓ–»Mi˜ÙëAòóaèP ˆ¤ýfI¡ 6ð»ßýŽ3Î8ƒC=”ÜÜ\î½÷Þ°cIJ¡%K–pÍ5×pÙe—1räÈpB<ò_äæ3“+vñ„¾TUU©¥9rä—ëA^{íµ°ãì»sÎêjX¾<ì$’2˜$…jkkùÿøÞzë-zôè@Ž»ÑHYkݺuœþùüñŒ?>¼ Ó§óBûÉÓzOÈ%Ï 4’’ëA~üã‡cÿ  É—’´œ„žBGy$«W¯¦sçÎ,\¸’’’°#IJ¡+®¸‚U«V±`Á  ñæ›P]Íóßê k|uûÕöêÉϯ :Y‹WPPÀÃ?vŒýÓ¶-œ~zò6¬ë® ;¤ åjݺ5;wÈì…‡’öÈ•W^É<@×®]à 1}:´kÇÖ“ÌÛÅ“æ™JÙäœs ƒÕ«ÃN")CY@$©™ôïߟ¡C‡†bút8ë,Æþù ¯b@ã܆z Faá TVV„—Q™íÇ?NÎy≰“HÊPIÊï½—œÑpî¹D"b±©Œ5¢¢¡tí:Œ¢¢¡Œ5Xl*‘H$ì´ÊT; Apÿýa'‘”¡\"IÙbúthÝÎ: €H$ÂĉãB¥¬tñÅpÑEðÏÂw¿vIÆ+ ’”-¦O‡ÓNƒƒ ;‰öÒG}v„½ó“ŸÀÂ}÷…DRò H=z4:tØá±‘#G†7S@Rú«©—_ö„0Í;—ýèGü÷ÿ7?úÑÂŽ³gÚ¶…óÏOþ÷vÓMëï3•¦L™Â”)SvxìóÏ?)Mö°€¤¡ &ЫW¯°cHÚ…?üO?ý”îÝ»‡å+“&%¯| ví¥’’ú÷ïÏ\À¢E‹8ꨣŽ´g.¾î¹'Y| ;”ÿ{wU¹ÿü3ð(‹‰’Aîäž"d×Líç’f¹ éMM½&éMѬn]ÍÔQoݲ[fŠVj–K™ÝÒ4·”À5K4—DPpÁ+*ÛÌóûcAfÆYΜ33|ޯ׼ÐsfÎùÎÌ™ç<ßó<çyŒ]>xð :uê¤PDî—,ˆˆ¬P\\ŒÁƒcèСÐéœd. ΀ÄÅ®L“KñððÀêÕ«áéé‰!C† ¸¸Xé,Ó­›áþåË•Ž„ˆ\ [@lÑ¢E(((@NN`ãÆøóÏ?III`_m"—’””„C‡a÷îÝðð~6ñüü|$'k‘žž²2h4:té­6ÙôÈU?þdgÏ?/y<${ï½ëׯǣ>ŠI“&áÃ?T:¤»S©€çž,ÞðõU:""r*ÁòªE‹8{ö,@¥2ÌH,„€J¥ÂéÓ§Ñ´iÓÊçV4é8p€]°ˆœÐ'Ÿ|‚1cÆà“O>Abb¢äÛÏËËCLÌpde½ †YÌõÒ:Ãôð¹Ã†ÇŽGŽ*…ä²*ޱ¥K—âyWH(OŸ6´‚|ö™aT,¢Z€õ5û±ÄÁNŸ>­tD$ôôtL˜0/¼ð‚C’˜6m~yòѵÊR5€®ÈÊš¤¤7áãS·ZëÈãm›ã½¯¿†jÞ<&n`ôèÑØ·oÆ6mÚ sçÎJ‡d^‹@÷îÀŠL@ˆÈbL@ˆˆî"//ƒFÇŽñÞ{ï9l?éé´&Ö¶Àºu?¡´4¥ü9†Ö‘^/£eø_b; IDATŸ>hè°ÈHNï½÷~ÿýw8pÀùÀp3zb"pîФ‰ÒÑ‘ àMèDDf”––bذa(--ÅÚµkáííí°}••yÀX³¥¥Kah©xŽ ‰Ø†èŽ©Úe‹‹äåíí;wbܸqJ‡b™!C€:u ݰˆˆ,À„ˆÈ •J…¨¨(|õÕWU£Ñ0u[ÞQÑÕ–t´ÅoX†—Ë[OÈ]h4.ÔAÁßß0üóŠo+%" 0!"2C£Ñ`Þ¼yxôÑG¾¯.]"¤™X[Š;[GžÇ2dã~lFßòÖ"…Œœ8¤™:~‰ˆncBDä$´Úd„†Î ÃèW(ÿ› OÏTmñÁ-<‹UXQÐCUÞzBäXùùùHH˜ŠÈÈþhÕj "#û#!a*òzÈpÿç!" ¸P/‘{ Bjêšòy@Þª6HQÑãøâ‹4TŒõ Öã\C ¤•·ž9Nõa¢o„‘‘ŽÝ»ãðë!ðMIÞ}ðñQ8Z"rfL@ˆˆœHPPRRæ×XžŸŸ}ûb‘•5@±;ÐYÈGhè«Ðj×È,ÉîúõëÙ÷}·a¢gùs € sÓ™À.XDD. ¢u$>~=žë‰Ç±?„ >~½é É­!Я_?Œ1:ü]î D™X…oÿ¸DGK–ȹ & DDåÖ­[‡’’¥Ã0©¢udóðn@@æfîEJÊ|&µ„J¥ÂŒ3ðÝwßaÆŒ²ïßü0ÑjÃú‰­[_•34"r1L@ˆˆ¤¤¤`È!X¿~½Ò¡˜§Ónô‹êÖU:’Yß¾}±páBhµZ,—ù†oóÃDë 뇚6.”34"r1L@ˆ¨ÖÛµkÆŽ‹1cÆ 66VépÌ[·ÈÎÆŒQ:RÈK/½„1cÆà…^ÀîÝ»eÛ¯ùa¢ËBÐh€É“Õ« Ç)‘L@ˆ¨V;zô(žzê)tëÖ ‹-‚Jeª‹‰˜;èÙèÔIéhH!*• ‹-B·nÝ0pà@ddÈ3 ¥¹a¢ !$%&¾¾À¿ÿ-K\Däz˜€Q­•>}ú iӦذa¼¼¼”ɼ-[€C‡€W^Q:R˜——6lØ€&Mš OŸ>È–¡µ¡ê@>j„àïŒ,^ \»æð¸ˆÈõp^"ª• зo_¨Õj|ÿý÷¨W¯žÒ!ÝÝœ9@çÎÀã+ 9zõêáûï¿Ç‹/¾OOOYöij˜è&N4ܲd 0eŠã#"—Â"ª•‘““ƒÍ›7#$$Dépî.5عÓÐúáÌÝÄHV÷ß?6lØ€F)Ju!!Àˆ†I xd9"R"ª•æÌ™ƒï¾û­[·V:ËÌ™<ø ðÔSJGBd™—_ΟÖp’L"ªŽ]°ˆ¨V W:Ëýþ;ðí·†áwÕ¼nD.⡇€¾} €‘#ÙrGD•x&#"rvóæMšæþ r%S¦GŽ?þ¨t$DäDØBDä@ùùùHNÖ"==eeÐhtèÒ%Zm²e3˜Ÿ>m˜Sá_ÿœ}”.ªµLçó¦"¨CC+ÈO(&9 & DD’——‡˜˜áÈÊz€€ €騽;¶úÐ¥¦,XÔ¯Œ-CÄäN>ÿüsbܸqÝùã|8N‹€qã€_Úµsh,D䨋ˆÜÚ•+WÛ÷´ióË+e]a¨”†b·+²²f#9Yk~/Ë–/½Ô­ëØ`Éí@BBâãã±ÆAÃáZtœ „†“'B8$"r¼„ˆÜÎúõë1bÄŒ1‹/†Z¡¡k5ã•3}ùzÞ~Û0ÛäÉŠŽjµZ?þ¥¥¥1b¼¼¼ðôÓOKº‹Žs//ÃÌè›6H¹¶€‘[Yµjbcc1dÈ,[¶L±äºt‰fbmZùz#ŽÞy˜1Ã0£4‘<<<°lÙ2 <Æ ÃêÕ«%ݾÅÇù“O½z&(äìèDµ"rÿùÏ0räHŒ9Ÿþ94eyµÚd„†Î @_¾T Í›OEQQ"#û£U«ˆŒì„„©ÈÏË’’ ó~Lª\ðäV4 V®\‰gŸ}.\tÛ筟 SEП<‰Âyó$ˆ\‹JvÆtD§NpàÀtìØQépˆ\ÊæÍ›Ñ§OLš4 .T´å£*có#´iÓ iiGqæÌ<nÞ5 [ ¤c\£1øðâïÀÆì¦B’B@å€É­9Îÿƒ!xVý-Jþ††­[K ‘£±¾f?& N„4‘íôz=¾ùæ 4È!,)%$LÅòåƒa¶ô¶:¸‰ „âZã:h÷gàäïƒÈSÇyCäã$Z`ëÐóØ!e‚#²ëkösŽK„DDvR«Õxúé§>ùL[:sŒ+˜îӔɹ¢L`D2=â ._o:tÞ¼yxúé§qùòe”¸ø$fAAAHM]ƒøøõøwöh†Søwh)âã7¸|wr]7Æ®]»Ð§O 4Z­Ö®d¿êq1áá1õê]…¡kð;Ú ZLÆ»èMÊ*×U7Àl¸JEÒ•n¤·´vEîœ\¹:ÞBn}?›é>â ‡F£CQQÆŽ‹O?ý¯¿þ:Þ|óM§™ãÃAAAHö8°|0{6¾1Céˆàëë‹/¿üo¼ñ¦M›†£GbñâÅðññ±i{AAA5îÙ0 Ï›†Šû<ÞCza+–#íÐ9HsÇ–2`¸?Á˜(¤§¿eS|Žàj÷TXR»*wN®\ëŸÅ‰L`ßOçgº8¤¡U«ûеkW¬Y³«V­ÂÌ™3Ý"ùœ= Œ ôïLŸ~÷çÉD­VcÖ¬YX¹r%Ö¬Yƒèèhœ>}Z²í×욥B–¢*¬óÞ‚–ͦÃt·-£;UEÒÕºýÜ­vå{Òn'WƸvråêÜäLNT“«j#Ó}ÄSô<6oþEEEHKKC\\œrJ­¸6 ð÷>ýp—¤ŠÜʳÏ>‹´´4¡^½z’m×X׬F ø¬OOD•âÈð³Ý¶jr®Š¤«uû1W»ú=i¶&W®Ô…ÎU± ¹-C!ïMöµUEEÄÐMî­ÊnríÚµÄ?^°aðhÑ"øúú*ª´^~8|س T:"“Úµk‡-[¶H¾]c]³o´‚ï[o!eÇ Êú;»mUç\Wé]­Û©rØÐ]Ù¹º‹YK«MÆîݱÈÊš CR¨†!¹J+O®ÖÔx%]èÈ~L@Èm¹ÚI ¶2UÉÍàà`"r°U«€>>üxøa¥£!r.¯¿lß<û¬!IoЀmI¥ØzO…’÷,šL%¢Ô{³%¹ªÞ{¢BõÞ'ºQ‹¼B˜€ÛrçëjgM>ì:‘fd/¼ŒŒ+OÀD®D£V®Ú· •Ê¥®ÒwéŒ ëZk\íÆuk(ýÞ¬M®Ø{B&‚œÆqàÀ¥Cq ññS*aä±WÄÇOQ:Dr1/^¡¡=Ê+}ù±¤@ª í!òòòL¿øúu!|Pˆˆ! å šÈôz½ÈÌÌ”~Ãß|c(¬_}Uúm;X^^^y9±·¼|¨('öš,'¤<_åå剸ø)""¢Ÿ ""ú‰øø)æË'²õ½)õ>ÂØˆÕðÀúš˜€8ÐÒ²å$@ò)..z½^é0¬bs%¡¤DˆAƒ„ðõâØ1yƒ&r µk× F#^}õUqëÖ-i7>¾áÇõÖ[ÒnWÖVž#"úU¹¨qçC'""úY´_».’Hð>¤zoR¿kX/ëköcâDy@;Û¹ÔÖ÷íìvîÜ)ÂÃÃÅ—_~iÓë•ú^mª$’OO!6nth|Dr+..o¾ù¦ðôô­Zµ»ví’v3g~` J»]'cÉUwKHÙ’"U`Ë{³å}Hu^°dßL@ìÇĉ8ê€VòJ‚-l)D˜h¸†œœ‘˜˜(ˆèèhqôèQ«·¡äñlõ‰´¨Hˆ„ðòâÛo‘ÒŽ=*¢££‘˜˜(rrr¤Ù°^/Ä+¯~`| Í6T- RmGé’[b²ö5Rž,é=ÁÄ~L@œˆ£hWº–BÄÕ,SÜ9‰*,,o¾ù¦ðõõbÑ¢EB§ÓÙ´-%g«NŠ·n ѯŸÞÞBü÷¿‹‰ÈY”••‰E‹‰ÀÀ@áëë+Þ|óMqãÆ û7¬× 1i’ᇶt©ýÛsBR•kRµ¤!]2cË{³ö}H}^¸Ûù˜ ˆý˜€8Kh¥ú–ÊÁ–BÄ•,SÜ%‰ºSYY™X²d‰^^^bêÔ©âêÕ«vmSÉãÙâcíÖ-!úôÂÇGˆÍ›‘3ºr劘2eŠhÒ¤‰¸víš4Õë…7N•Jˆ•+¥Ù¦L¿322$¹gÑ|ùxAÔ«×Î⺃ù$ O´·h[¶Üiíû¨W¯“¬ç& öcâD,9 m©¨JyEÄÑl)<Ãßp™ËgM¢ìm•)((AAA"..Nœ>}Z’˜”<ž-:‘Þ¼)DïÞBÔ©#ÄÖ­‹…ÈÙI~SºN'D|¼B¤¤H»í»¢…únç »÷aú\rQÑVÕLŸ/ ÀºzˆµŸŸõ¬ç& öcâD,9 m©¨ºR ˆéÊ¥éÏÓ³½Ë$X¦8ãw$ÕÉòòåË’Æ%åg%ùýF¹¹Btï.DݺBlßnÿ›%¢êÊÊ„=ÚðƒáCk£ƒIÕB-Ç…&ÓIžÀ«öm:Þ)åÛw¦÷!ï9” ˆý˜€8Kh[*_J_]·¦’gúý™+ðsºÊ»µœ±•Êüq³Iøû·µû„,}\–Ï’w{ûï… â¾û„øùgÞQí’-ŠŠŠ¬¡^/Ä'Ÿî¯êØQˆS§¤® %oƶ…±s®-]”L'òœs­{ŽOŠªbb?& NÄ’Ú–Šª’óaX[É3]Л+¸_Ö^Ùq6ÎØb>¦ŠÏ<_§eýÌ¥:ž%KÌ‹Š„˜ø«ÚW9þä½’'›*z½[¶ñðÆ'&$qýºSv¡#r5z½^ìÞ½[üõ¯âÂ… Öm`ÏÃ=!€ƒ ‘™)I\R¤ìmmÅ]Ê}Kyoˆt½$äíñÀÄ~L@œˆ½ó€=zÔéæ’ªbæ,…ŽÜ”¬ØÞþÌ¿†fõpI{…ŸßCV'FÎ6Ñ¢Õ•Š={„xì1⣅øé§ÊUÎ8ˆ‘+»yó¦m/Ô鄸ì3!š4ÂÓSˆ—^âÒ%»b‘ºò.E9hKR$elý½!ÆËA©zIHù>,Ùû1q ¢¢"‘œœ,‚ƒƒE:uDTT”øñÇM>ßÞÚ[ ¤ŒIŽ ¬³U’卨êõz“ël™4«yóGÄðá/V{MlìxѼù_œ*9¶¸Rqø°O>iøÀÛ¶âÛo -!U°„H~óæÍ;vìÅÅÅ5WÞ¼)ÄÛo áï/D½zBÌž-ÄÅ‹wݦ¹2ϙΠÎXæØ“’oì ‘ ˆý˜€8ÐðáÃ…§§§HNNK–,111ÂÓÓSül¢ª½´3H®ÔrakaäȤÅßiii©8tèxçwD¿~ýÄ£>jSlÆÞ·éDÃú1èå`ê»ËÏÊ2ÜãQÑâ&ÄêÕ†««F8còOäÎòóóEƒ áëë+úõë'þõ¯‰C‡‰ÒòÑóòòÄÄØñbuý¦¢X¥%P‰ôfáâêš5FË’Í-©ZÍÕæ)³§Üfb?& ’––&T*•X¸paå²¢¢"&bbbŒ¾ÆÞÚY»8[«‚)¶FŽ>aIQ±½råŠØ°aƒ˜6mšèÞ½»¨[·® ¼½½EÏž=…V«5Û "M¼Î—×PV&ÄæÍBŒ!ôuê öú6Sîë Ú>ØÇì1ëJ‰6‘»ÐétâÀbîܹ¢gÏžÂÛÛ[uëÖ111¢Y³˜Ê²9—DÞ¿¡¥€(kÒDˆ™3…8w®r{Îx!Áô9¦‡Ó•©¶”ƒJ~æö$?L@ìÇÄA¦N*<==Åõë׫-Ÿ3gŽP©T";;»ÆkܱÄgKLœq’G)øá‡",´Z­Øµk—í}¬Í0ýÚ6à „øâ !ÆŽ"$D@”†…‰ù-El°*©t¶ã™¨¶¹y󦨵k—˜?¾hÞ¼•v)oô" ‹<$ôuë¶o/ÄÔ©"±igáƒNuUr6r[X[*yñÆž‹¶L@ìÇÄAzõê%"##k,ߺu«P©TbÓ¦M5ÖÝy@[ûCvÆ«7¦8cS·-…‘I_Õãàú‹°°î¢wïÁâÕW_õê5†¡qM†7oÞçª\ås$ÓŸ¡uŸ“CºÃéõBää±v­&QõËâÅ…HKñ£^v™ßgIÙ<ä‰'Ä”à`±­qcQàë+ nÂKlÆ#b æˆîØ.îÁ‹*¤ò¿y'Þs$¥.Þ°DYCäææ"88¸ÆòŠe999f_Ÿ——‡˜˜áÈÊz€€ €騽;©©kTí5Zm2vïŽEVÖlQÔôÒú*´Ú55ö“ŸŸäd-ÒÓ3PVæF‡.]" Õ&ר¾”¦M›_þÞºVYªÐYY³‘œ¬EJÊ|‡íßF@ÀðYßI_¾¾º²2Ïuùúê¬ýÌ,X€cÇvãÿ;ÜÜ\èt:œ< lÛ¦†^߀o•j~†uêÔAãÆ-ùìfú3Œð €h#¯JC—.Õ–Ør|ÜþÍÌF¦ 5þÀCø eü„Ó_<€uÔP_½jxrË–@ÀŒ†¿!!•ÛIOø' ¿c¢žþ–ùˆgIÙüLüH¤¦¦bÁÉ“È:yž™™x%è=ø'ö nù³ÿDüŠ¶È¹røòKà€fÍ ¯W€‡GÍrÞñï#À<ÆCî8—Ô¬8³   ÙÏ÷Ð¥K22ÒPý>>ˆˆˆÀO<Æ#44aaaèÛw<ŽûÎľí3Lð€ù0$!æ“ãšÇ‡€ ˆ+hO¨Ú¬Y\¾ dgçÎáÊ;ðÃEÆèJ¡Áh…ß‹FöƒExféË@§N@Ó¦&߃-I%9K.(ÅÅÅ!..®ré¨Q/ãO»áÀ'ŽzhÚáW´ÃN »qˆ­|¾¨[ÇnÞD®§'.ùú¢°^=”@4lõ½÷bÄK/áž–-OO£q–””ÀÃÃÃdcþ}4@ãÆ!8zô;K?ªÂ–‹¶$& R§N×X^TTT¹Þ”c+V ø¿›Ñ ìºcm õ °­[k¼Vsõ*^lÝhý—jËÿ\¶ –ÿ»S§N€ó?Fó¬AhŽBÛª<û0pæòÏ´E0º•/8—q/nŒÂôéãÑ¡C“ñ@ZZDÅ„(ÿS¹¯\@pµ}V|%;_ÂÐM°Æz÷îm6†ÔÔTœ;wz½¾ò¡Óé Óé ×ëѼysôêÕ«òùïô‚nó8ää> 5 …þ+®8œ¼€€%8—ñB=ÐïÃp…ÿNh[çV>ÿ<|¼½áç燢¢DÝh €€†¶PYƒ°|äLúBµ­üóÑGoÿG@¯Nœ@Ôÿ®â~ŽÕíO»Rãk—Í›M@߇±¿Uw.ÓëkþÕëÿîØ÷}Kùƒà¦Ð@ J¡Á)Ü{Oš7~—/\†‡ðQ•¡qP=DwŠDÉ“âbàÖ-àÆ |‘uˆ„ +^(½ûŸ†4CëE“&8uK‡£xçÐçÐ'ŽL<€RxÐ#¢xžyúiÓŸG9[ZˆH9ÆZ•KJnÀšVWX°`:öì1THu‹cPãôøÍšŽÔÔÓ†'ž:œ=‹[GBµkšçæ"òÒ%ø]¸ß³gQ-•øðCÃ_ooÀßðó3üõ÷|}ñÇÉ“8vú4JÔj”yx@çé ½§'„F¡Ñ`LpPŠP”Â:xTyœAL _>õŠŠ‹¡Öh öð€ÊÃ*P©Õhß¡ÂxP©  Ú¿¯`ÿ¾}€JµZ •Z ¨TPP©ÕP©Tˆ‰‰—‘‹ªÛ:uê.\¸Pþ_U•U*¨T*øûû#""¢Úkîtøða”––ÖX^±&M›¢Ñ½÷Àõë×qâÄ “ë M›6ðòò`hCÚ?÷oX²ä?~:zý „„ÔG¿~Ýq.%çîx½¯¯/ZµjdfšÝÝJT­’dz÷=z´ÚòmÛ¶¡wïÞøöÛoÑ¿ÿjë<ˆN:áQ÷ܱ½¸ò‘«ÐЩÔ(ƒ Ðhàãï µ——!iðô|| 'eoïÛÿöñüüðåw#»`0 áðE!üp p¸Œúh–Œ-¾1œÄËOd­Z ĉMÆ>üaz}…„„©X¾|0Œ·„¥">~½"݈¨¦ê-ùQ¨hÉ6C£™Œ²²e0ü–«_Ý6ÖÚ HÐ-Y¯ €K—n?®\®_ kü½zñ"n^¾ Uq1T%%P—”À£¤*je·Šá¡÷‚'ôUÒ½t"™µºüQU€Ý8€Ž;Ê”` ˆƒtèÐ;vìÀõë×áïï_¹<-- о}{“¯}eéRÌù Μ­èü `: €KÄÖ­)5^{óæM\¹rÅll÷ô葈S§—yÆÜî’U¡âßz´l‘_ûÂ9 IDATŒíÛWÖxÕåË—1gÎG8|ø$Š‹Káá¡CddK$%=‡úõë¶R^Yœ=ûCløúIÆ~¸0ø™ÿâŸÿœ†+2åWQª><==«]i±FÕXu:5<<ôhß> ¯¼2 4¨öÜ^½yrL]oÙb$:uŠ´h[¦?sƒ–-±}»éõUM™2_­í‹ŠÏPT‹ï†ù ¾ZýJÓŸ—©uWÇî|”_3ú×Ããö_• 0´yYônªûþnI@·‡€€jK¥j¹`³<‘ë0Ý]¹/ÊÊÂÂfÀËË×â{$ì¾A­ ðð»>½~ùÜüü|üÝXR4w ‚ÎtË´éqU ¯èYPÑS@§»ÝÛ@¯¯üw¨ÕêšÁ•o§°°ÅÅÅÕz)T½¾íééYY0åâÅ‹Ðëk&VÛ €ŸŸŸÉ×áòåË5ö]Upp°Ù{v PXXXmÙ£å¸qã–,Y‹]¿²÷›y7tW2ßô^kT̲`Á‚Êeó€DGG}MÕQäÑJÊ!S­µHÉ¡÷¬UÊùU¤5Ë–ÏÐUfùUzCÓ‰×wB£ieqB&WOžˆ”á¬ð’û©~þæ0¼öbâ@EEEbêÔ©"88Xøøøˆ¨¨(±e˓Ϸwk™®°='€=VU’]é*”µ±J}e]ŽJ²±c',¬»0>q•sNhe ¶\Õ.¶œ{XN-ªkL@ìÅ{@ÈÛÛZ­Z­©áfÍsôØØ¦†ímÛ¶9~ùåœ93–öw¥¡K­UÊ{¬*Ù¦†WzÁø=Î7$²­Lýfòóó‘0UöùnˆÈ±¬ËÁ–9¶ÌQj.-’ŸùºY‹ H-g®Âf¬’œœüÑÂönóa8ÓÐ¥ÖÞ¬,uÒàèÄÒôM™~0þž]'y´…Ô"rÖ^ ’r\–-µ‹ùºY‹ e¬’l®°õóûÖŽ¹®[f?Uj¦V[˜žäÑTáéÞó^HYá "çbí")'ÁeÙR»˜¯;µ˜€Å̶……óàï?ׯgºÔ݇Y5ÝLÀXáWIm!e…ƒˆœ5ˆ¤ì.̲¥v©^w0>³=YÎÈ ÎDÆ Û(kû 88ññë1áá1ññ뮺⊙+Äj‹ÛÍÄwJ0À r+=€Ðhì½cyjyB–ìàˆË•îO""Ç2]>Ö¶ø²l©]ªÖZ´˜¤t8.- d±»¶@]—inv¥.UÖ2ÝL` ÂÂ^­11WròhµËž>Û!7Æ+Iª ‰ÈõÙÒ×–-µOEÝáàÁƒèÔ©“Òá¸4& d1¶®Á|³Ø»÷+£IEíKÈwèbFD–“² .Ë"Û± YÌP˜¦™XËÂÖY¸{3kiµÉ  îØÅŒˆ,'eùȲ…Èv*!„©Î$³Š&½ cÇŽJ‡SC~~>¢£M_9ª•[r «ŸˆeKíäìõ5WÀ.Xd19&Ñ#rw¾ç‡ˆ”ò…È6L@È*,l‰ˆˆˆÈ¼„ˆˆˆˆˆdÃÄ ’„„„©ÈÏÏW:"""""I1qB§O¿‹åË#::–I¹& NI  +²²f#9Y«t0d£üü|$$LEdd´j5‘‘ýÙ²EDDDµoBwjQHOKé Èyyyˆ‰ެ¬·ha˜¼QŒŒtìÞË!‹‰ˆˆ¨Öb ˆSS£¬ÌCé ÈÓ¦Í/O>ºâöÌñlÙ""""bâÔôÐhtJA6HOÏ€a²Fc¢Ê×Õ>L@œZºt‰P:²¡åJeb-[¶ˆˆˆ¨öâ= NI ¡¡¯B«]£t0dCË•€ñ$„-[DDDT{±Ä µh1 ññëy£² 3´\¥™XË–-"""ª½Øâ„Ö®};vT: ²ƒV›ŒÝ»c‘•5†{AÔ0´l¥±e‹ˆˆˆj5& D„ÔÔ5HNÖ"=ý-”•y@£Ñ¡K—hµlÙ"""¢Ú‹ ‘ƒ!%e¾Òa9ÞBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aBDDDDD²aâ .\ÀôéÓÑ£GøûûC­VcçÎJ‡EDDDD¤(& rüøqhµZäææ¢mÛ¶•J¥pTDDDDDÊbâ ?ü0®\¹‚ãÇcòäÉJ‡CNjõêÕJ‡@2â÷]»ðû®]ø}YŽ ˆƒøùùáž{îQ: rrýôSìÚµ ðÚk¯)‘RTB¡tîJ­VC¥RAQùT*t:ÂÑÉ Ɇ‘l˜€8ââbL›6 !!!¨[·.ºv튭[·*9À¾}ûðâ‹/"22~~~hÖ¬bcc‘™™©th$“Ù³gC­V£M›6J‡BrðàA 8 4€¯¯/Ú´iƒ÷ß_é°Èöïß§žz !!!ðõõŃ>ˆY³fáÖ­[J‡Fv¸qãÞxã ôéÓP«ÕX±b…Ñç;v }úô¿¿?4h€çž{—.]’9b×Ã.XN ..ëÖ­ÃäÉ“ñÀ %%ûöíÃöíÛñÈ#(IhÈ!HMMÅСCѶm[äææbÑ¢E(,,Ä/¿ü‚ÈÈH¥C$ÊÎÎF«V­ V«Ñ¢E 9rDéHb[¶lÁ€ЩS'ÄÆÆÂÏÏ'Ož„sçÎU:<’Ðo¿ý†Î;#$$ãÆC`` öîÝ‹åË—càÀøú믕‘ltæÌ´lÙÍš5C‹-°cÇ,_¾¼Æ” ÙÙÙèСêׯ¤¤$\¿~ ,@Ó¦M‘žžOOO…Þ ¤¨´´4¡R©ÄÂ… +—‰°°0£`dä{÷¥Õ–eff 1räH…¢"¹ÄÆÆŠ^½z‰Ç{L<ôÐCJ‡C»víšhÔ¨‘ù$7n\¹¬gϞǗ_~éð8]…:táááðóó«¶¼sç΀Ç+ÉH‹/¢aÆJ‡B¢Óé0qâDŒ3†ÝìÜØÖ­[€sçΡU«Vð÷÷G½zõð·¿ý ÅÅÅJ‡G{þùçѨQ#$&&â×_Źsç°fÍ|ôÑGHJJªLPÈ=?ùùùxøá‡k¬ëܹ3:¤@T®ƒ*,77×èÌçËrrrä‰d¶råJäääTN\Iîç£>Ÿþ‰Ÿ~úIéPÈ233QVV†Aƒaôèј7o¶oߎ÷ßXµj•Ò!’„BBB°gÏôë×:t¨\þÚk¯aæÌ™ FFrÈÍÍ“u¸+W® ´´”÷˜ÀDa·nÝ‚··wå>>>•ëÉ}?~&L@LL F¥t8ä—/_Æ?þñüãÿ@ƒ ”‡¨°°7oÞÄøñãñî»ï „’’,^¼3gÎDXX˜ÂQ’T.^¼ˆ¾}û–,Y‚ `Ó¦M˜={65j„ &(!9REýìnu8& Æ1QX:uŒ6ÍU®'÷táÂôïßõë×ÇÚµkyO€›zíµ×аaCLœ8QéPÈÁ*Ê븸¸jËãââ°xñbüòË/L@ÜȬY³pþüyœ8q!!! §^¯Ç´iÓ‡ÀÀ@…£$G©ø½³gÞ¢°àà`£Ý¬*šö* 5r/×®]Cß¾}ñ¿ÿý?üðî»ï>¥C"ÈÌÌÄ’%K0qâDdggãÌ™38sæ ŠŠŠPRR‚³gÏâêÕ«J‡I©(¯5jTmyÅͬü®ÝËÏ?ÿŒ:Ô8O07oÞä=œn®¢ëUE}­ªÜÜ\4hЀ­f0QX‡pâÄ \¿~½Úò´´4@ûöí•‹¨¨¨ ÀÉ“'±iÓ&´nÝZéÈAΟ?½^¤¤$´lÙ²ò‘žžŽ'N E‹˜5k–Òa’D*nFÍÎή¶¼â"SPPì1‘ã”––B§Ó]eeer‡D2ºÿþû„}ûöÕX—žžÎúÛ]0QØ!C ÓéðñÇW.+..FJJ ºvíŠûï¿_ÁèHj:±±±HKKÃW_}…¨¨(¥C"jÓ¦ 6lØ€¯¿þºò±aÃDFF¢Y³føú믑˜˜¨t˜$‘aÆ–.]Zmù'Ÿ|OOO<öØc DEŽÒ±cGÂ3ÏŸO`dÓH–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° $ÂÖ¬Y£1cƨuëÖ:묳ԳgO=÷Üs¦ËŒ°™. ž½ûî»=z´úôé£G}TMš4Ñ_|¡-[¶˜. 0"ÉçóùL¾ýö[uíÚU™™™zóÍ7M—D–`EÈk¯½¦²²2M›6M’tàÀUVV® 0‹!‹/V³fÍôÍ7ߨ[·njÚ´©š7o®;ï¼Sßÿ½éò# ²aÕ——ëꫯֈ#4wî\ÝrË-š9s¦rrrL—ÁIMMÕW_}¥;î¸CúÓŸŽ]¿ãŽ;ôüóÏkýúõêÒ¥‹Á ëq V„4jÔH’4a„*×'L˜ çŸ^~øaµdÛ¶mÚ¶m›%5 tíÚµS»víL—³ Ò¾}{y<µmÛ¶Êõ6mÚH’öìÙsÊ3Û¶mSß¾}µuëVKj@èÚ·o¯>úˆRGéÛ·¯/^¬Í›7ëüóÏ?výh¸°Ûí§<³mÛ6mݺU¯¼òŠzôèaY­0gÒ¤Iš1c†é2`¾ß‰…ïwbáû8>ÿüsÝpà ڶm¤Ž òÓŸþTO=õ”^xá 2äØõ¿ýíojРôÙ=z¨wïÞT ÓZ´hÁ÷:ðýN,|¿ ßo ö Ò«W/ÝrË-zñÅU^^®K.¹DK—.Õ›o¾©‡~XçœsŽéË@"hæÌ™êÔ©“òòò4oÞ)É-)IR¥<žbd©°p! c  nL™’ä’ÿWÝ•–N“Ëå6W@GŠ‹=’úí˜DÄòòŸù8Yr``{@qÃf«äSõ!¤20^›ÖÀZ@Üp:òxŠäßr²"9Ž*WØ´Öc  n¸Ý.¥¦>,©PReàj¥¤B¥¦N•Ûíªr?›ÖÀzÌ€â†ÝnWaáœÀ’ª'ª,©r¹þtÊR«-[vÈ?óQþ*.~ÂÊò !@qÅn·+//·Êµ`K­¤+Ħu°K°q/øR«†òoZ¯Nõ›ÖõCĽàýA’> òÔ©›ÖOÇëõ*'g²ÒÒFª[·1JK©œœÉòz½!V ñ‹%X€¸¼?ˆKR–¤Ç%¥Ëÿ¾\¥¤"¥¦N•Ëõ'åäL®Õ½œ¨µCĽàýAì’f«yó+Ô¡C‡*!còä?jôè»j(ª.ó:ªê‰Z'ïM€DÄ,@Üó/¥* 2ú¥®¹ær•”¼­uëæ«¤ämååå*77/¤#zƒ/ó’ü'jyÂð•@ì#€â^¨ýA¤ÐEðe^'jÀq,ÁĽšúƒ¸ÝÕïÍ5P_æ%q¢G$„êúƒÔ¤æ@±C;vlRZÚÈcaæÈ‘òŸ¨•^Íý¡Ÿ¨ñŠ@5œN‡<ž"UÝT.Ie’®Ñ¾}3µo_ojøŽl¶•—¿x¦ê‰Zn÷+Ë€¨E n·KY*-&ÿ^£b²¤é:õ´«*/÷©K—‡Õ°áYµZ扈@5‚íÙ²e‡öí«n™•$ WÆRIÉÛ–Ö ±„ˆI^¯7Nß$°®ªÛ7Ò­ÛíÛÇiWPW@Ì1ÙuœÓ® ~èˆ9U»ŽŸ¾I`8ÕÜÔÓ®àt €˜c²ëx]šŽc  æ˜ì:^—¦†€ã ´téR :´Ú±?üPN§Ó⊠>˜Þ‡jSCÀq Ü{ï½êׯ_•k©©©†ª€Ø¼I Ä> ˆn 4HcÇŽ5]ÄàMé:ÑŽbŸÏ§ï¾ûN5’ÍÆr¨/öa@ìâÕ°rrr´ÿ~¥¤¤hРAÊÍÍUŸ>}L—1}› tÆghܸqºòÊ+uöÙg«¤¤DÓ§O× Aƒ´råJõêÕËt‰€¥ ”žž®ôôôcÿ>jÔ(7N^x¡zè!-\¸Ð`u€õhDh±ÔÔT]uÕUÊÏÏ—Ïç3]`)f@ èØ±£Ž9¢¨I“&§ŒOš4I-Z´¨rm„ š0a‚U%@ÜÚ¸q£^{í5íÙ³GûöíÓ7Þ¨Aƒ™. @š={¶fÏž]åÚÞ½{ U? |ùå—jÔ¨QµáC’f̘¡Þ½{[\D'¯×8íÊsÒiW®O»Ú¼y³.½ôRíÞ½[íÚµSóæÍ5räÈU ÖU÷ðš5k8L¨ž äõzOùåøé§Ÿjþüùü€Z(++SFÆx•–>)É-çóJy<Å*(ÈRaaíÜݳg†.ŸÏ§Ï?ÿ\;vŒdé€  ”••¥Æ+==]mÚ´‘ÇãÑ_þò5iÒDO=õ”éò êM™’'vþøc½ýöÛêÞ½{­ž9räˆn»í6­]»¶vÅj…ºçž{tÏ=÷˜.bVyyŠüË®ª“?½©S§j̘1êß?X˜9Õwß}§•+WjþüùZ²d‰G­ŸÇ  jÙl’‚Y^?½Æ‡>$©uëÖÊÏÏW›6m4dÈmܸ1¤çÕ#€¢–ÓéTd´(09v»]K–,QJJŠ~ýë_Gôs@¢ €¢–ÛíRjêÃ’ %U®VJ*TjêT¹Ý®ˆ×pöÙg롇Ò+¯¼¢õë×Güó@¼#€¢–ÝnWaáegÏ•Ã1Z]»Ž‘Ã1ZÙÙsC:‚·¾n½õVµk×N¿ýío-ù|ÏØ„ˆjv»½VGíFÒ™gž©©S§ê®»îÒÔ©SÕ£G£õ@,#€âÊ'Ÿ|¢®]»ªqãÆaý¸·Ür‹6oÞ¬V­Z…õã@¢a  n|ÿý÷5j”|ðÁ°ì3Î8CÓ¦MSÛ¶mÃþ± ‘@q㥗^ÒÖ­[5qâDÓ¥‚ €âByy¹žzê)7®ÖÝÎÖc .Ìž=[_}õ•æÎkº@ ˜ļÊÊJýÏÿüF¥^½z™.Pf@1oÞ¼yúüóÏõâ‹/š.pÌ€bšÏçÓ´iÓ4lØ0 0ÀÒÏýå—_jݺu–~NˆuÌ€bZee¥&Nœ¨nݺYúy}>ŸF¥~ýú饗^²ôs@,cÓRRR”­ôôtK?oRR’Ư¹sçêСC5Þëõz•“3Yii#Õ­Û¥¥TNÎdy½^‹ª€èA Ž®¿þzíß¿_ ,zOYY™ÒÓ³4kÖµòxþ¥õëçËãY Y³®Uzz!@Â!€PG]ºt‘ÓéÔk¯½ôž)SrUZú¤¤’’W“% Pié4¹\n *€èA ®¿þzýûßÿÖîÝ»«/.öHêäéþqHê!++Kzë­·ª//OÑñ™“íÒæÍ[Ù ¡@¨‡sÎ9GÆ Ó«¯¾Zí¸ÍV!ÉWÍH™¤,}ûíŸÙ ¡@1ÇçóÉç«îE½?ÿùÏÕ±cGUTTœ2æt:$UóT®¤ibo€DCÄœ?þX]»vÕ—_~iºIþeX¯¼òŠRRRNs»]JM}XR¡¤ÊÀÕJIÉ>ªÃÞñ‹F„€˜óúë¯kïÞ½êÔ©“éRNËn·«°pŽ\.·Š‹ŸPyyŠl¶ mÞ|Xß~loHr`ïÄ ¦ø|>Í™3G×]wl¶Øø5f·Û•——[åZZÚHy<>U¿A½2°wâK°1åÃ?Ô¦M›4~üxÓ¥ÔKð½!’T€øCÄ”×_]íÛ·Wff¦éRê%øÞB¥¦N•Ûí2WDPlÌ] ©¢¢Bo¼ñ†Æ¯ääØ~-ØÞ§Ó!·{Žìv»é " €˜ñÁhûöí1¿üê¨êö†@¼‹í· åÿþïÿtÞyçÉétš.%¨ÒÒRMž|X?üðƒé2B6bÄú@5 €¨öÚk¯©M›6:xð éRBÒ¾}{=ýôÓjÛ¶­éR ª@QmÑ¢EêÖ­›7nlº@@Q«¼¼\‹/ÖW\aº@˜@QkÕªUÚ³g†nº@˜@QkÑ¢EjÑ¢…úõëgº@˜@QëwÞÑå—_.›Ífº@˜ð7:À8¯×+—Ë­âbÊËSd³Uè ¤ââbÝz뭦˄`TYY™22Æ«´ôIInII’*åñL—äSß¾}Íÿú׿´eËÝ~ûí¦KãX‚0jÊ”Ü@ø øü¿ž\’æjÆŒWŒÕ.Ë–-Óo~óù|>Ó¥€q M›6MÉÉÉêÙ³§éR j{$õ2zU`<¶1BÛ¶mÓ§Ÿ~jº0Žb‘Í›7ëÉ'ŸÔYg¥¤¤¤Ó? ¢¼N–m™™™:묳´páBÓ¥€q‹<øàƒÊÈÈPß¾}™‚€Øl’‚ý½Xm 6Ô°aà ˆ%>øà½õÖ[š1c†|>3 p§Ó!©(ÈhQ`<ö1B+W®ÔÞ½{M—F@"¬¢¢B÷Üsn½õV¥¥¥™.¢ŽÛíRjêÃ’ %U®VJ*TjêT¹Ý.sŅш#TQQ¡Å‹›.ŒâÞ›9s¦6mÚ¤%K–˜.¢’ÝnWaáœ@'Žõq:r»çÈn·›.1,:wî¬=zhÑ¢E7nœérÀHíÚµK>ú¨}ôQµnÝÚt9`\u ýAÃ¥¼¼\IÒ‘#GÔ°aCÕFÆ}÷ÝGWw ¿#è‘GÑÙgŸ­{î¹Çt)`\ð†ƒÅ*(ÈRa¡¶ã¢‹.Rvv¶¦L™b¸âð£«;@"fÆ úë_ÿª3fhóæÍÇ®>|XGŽÑ×_­fÍš©eË–§<;iÒ$µhѢʵ &h„ ¯"¥jÃÁ£’% Pié4¹\n=òÈ/´víZuëÖÍP•pÜìÙ³5{öì*×8H¢þ’|œ K—.ÕСCk¼gÒ¤Iúýïìß׬Y£>}úhõêÕêÝ»w¤KK¥¥”Çó/Ußó£RÇhÝ{ïUºóÎ;µ{÷n5kÖÌêà´x½VÌ€DHÏž=5oÞ¼*Gîú|>=òÈ#Ú¿¿þð‡?(55Õ`…`­Ú4\¶l™z÷îMø€8F‰Ö­[몫®:åú3Ï<#I3fŒÕ%€QÇV?’’R®¥K—êú믷¸2€•èb±¤¤$HH§k8Ø£G{mݺUƒ¶°*€Õ ËÏÏ×gŸ}fº °Üét’““•™™i®H@Ä@–8Úp0;{®ŽÑêÚuŒŽÑÊΞ«ÂÂ9Z½zµzõê¥æÍ››.5â6nܨçž{Nœ ±`»Ý~¬áàÉž}öYmÛ¶ÍâŠÌ())Ñĉ5bÄuéÒÅt9`)f@Q¡eË–r8¦Ë°Dff¦’““µtéRÓ¥€å X¬yóæêÝ»7@B"€`À!C´téRöH8 ‰Š€Íš5SŸ>} Çð`Èu×]§;v˜.,Euùå—+''G×_½éR,7yòä c^¯W.—[ÅÅ•—§Èf«ÓéÛí’Ýn·°J/À˜Í›7kñâÅúÅ/~aº”¨RVV¦ŒŒñ*-}R’[R’¤Jy<Å*(ÈRaáB€˜Å€1Ë–-“$]rÉ%†+‰.S¦äÂÇùÇäÿ•=@¥¥Óär¹ÍõD³téR¥¥¥ñnþIŠ‹=’úí€ØD³lÙ2]z饦ˈ:åå):>óq²äÀ8Ä&Àˆ­[·jÆ –Õí222”””¤+V¨K—.’ü!$//×pe~̀ŠœBײeK]pÁZ¾|¹éR â €°â§ºÉÌÌ$€H@Xq‚SÝdffjíÚµUN €xD„•ÛíRjêÃ’ å?¹INpr™+.ŠeffJ’V®\i¸ˆ, ¬8Á©n:uê¤sÏ=—eXâ§`ÂŽœêæ’K.ÑŽ;j¼ÇëõÊår«¸Ø£òòÙlr:r»]„;1°Ôc=¦¾}ûjÔ¨Q¦K‰:/¿ü²’“ƒ/N¨m“Gˆf,ÁXæ‡~ÛíÖºuëL—•j Rí›<@4#€,óñÇëСCÇ6\#4þ&ýƒŒöŒ@t#€,³|ùr5jÔH_|±éRbMÄÀ2Ë—/—ÓéTÆ M—“hò @–ðù|Z±b˯ê&â`‰/¾øBeeez É#€xÀ1¼K,_¾\IIIJOO7]JLøî»ïÔ´iÓ*׎6yô÷yâ¤> Á 6@–èܹ³|ðA5oÞÜt)QoÚ´izþùçµiÓ¦SÆhò Ö@–:t¨†jºŒ˜pÁè›o¾Ñ¦M›Ô©S'Óå@X±€(“‘‘!É¿l â €(c·ÛÕ½{wÔú¯×«œœÉJK©nÝÆ(-m¤rr&ËëõF°RK°ˆBƒ ªõ HYY™22Æ«´ôIInù›VÊã)VAA– Ù  z0@ÊÌÌÔÿû_íÙ³ç´÷N™’t¼Sz²¤*-&—ËÁJ 4¢ÐÑ~)+W®<í½ÅÅIýƒŒöŒ@t €…~ô£©]»vµZ†U^ž¢ã3'KŒ@t` ¢Ž¾€¦zh’’’”ŸŸ¯Î;Ÿö^›­B’OÕ‡ÊÀ8D ¢ž|òIù|>-\¸Ðt)1§[·nµºÏétÈã)’ÈÉŠät:ÂZÔK°SQQ¡•+W2ûan·K©©K*”T¸Z)©P©©Såv»Ì'a1%%%Ú·o$Âìv» çÈår«¸ø •—§Èf«ÓéÛͼ¢ 1Ë—/—ÍfS¿~ýL—÷ìv»òòrM—§Å¬*))Ñu×]§ÔÔTuÖYjݺµ222ôꫯš. ,±bÅ õîÝ[76] J0A›6mÒþýû•­öíÛëàÁƒzóÍ7uã7jãÆš:uªé ¢–/_®qãÆ™.E 4bÄ1¢Êµ»îºK}úôÑ_þò€¸¶yófmÚ´‰ý€*X‚e±ääduìØQ 40] DÔöíÛåp8”‘‘aº”˜7yòdMž<Ùt ø >¬3Ï<Ót9@B¨î à5kÖ¨OŸ>†*Š,ÁŠ ê6 þðÃzùå—Õºuk¥¥¥¨ ÂcÊ”Ü@ø øü¿V¨´tš\.·¹ââÐÀuäÈ­^½Út)P/Ì€DÐm·Ý¦ï¾ûN—\r‰Ú·o¯íÛ·ëÕW_Õúõë•——§””Ó%@{äŸù8Ù^I?Œ#\.¼ðBýùÏVjjªéR ^ 4~üx½ð úóŸÿ¬]»v©Y³fêß¿¿þøÇ?jذa¦Ë€z)/OÑñ™½"é9r™ÅÅ7›Í¦_üâ¦Ë€z#€DPVV–²²²L—a³UHòéÔ²BRo5lh}M€èÇ@8IEÕŒ¬ô£À8U@uâv»”šú°¤BI•«%}£sÎùÜn—±ÚÑ‹%X€:±Ûí*,œèò„ÊËStàÀ7Ú²Ezÿ}Žàôjm €:³ÛíÊËË=öïwß}·Þ}÷€–_EzµˆF,Á„ÍŠ+4pà@Óe €^-¢‡ÒÚµk•™™iº”¸öÃ?è±ÇÓÊ•+O{¯¿Kÿ £ýéÕÀ–`¢Q£FÚµk—|>ŸéRâZƒ ô /èàÁƒÊÈȨñÞà½Z$)90Ö"€Â¦qãÆ¦KHÔòåËO{_ð^-’Tk± €3pà@­^½Z‡®ñ¾à½Z$©ˆ^-Œ €c¨#GŽè£>ªñ¾ê{µTJ*TjêTzµ0‚@Œ¹ð դI“Ó.Ã:Ú«%;{®ŽÑêÚuŒŽÑÊΞ˼Œa1Æf³)==½Vû@NîÕ¦1@ 4hV¬X¡ÊÊÊÓß Q„@½=v7))Øq¯ˆ„+®¸B[¶lÑí"±< IDATþýûÕ¬Y3Óå@­1¨—¯¿þZ:tÐêÕ«M—’PœN§fΜIøs €zùàƒ´mÛ6ýèG?2] @õRPP  .¸@­Zµ2] °pZ^¯W.—[ÅÅ•—§Èf«ÓéÛíRAA†jºD@Œ €jTVV¦ŒŒñ*-}R’[R’¤Jy<ÅÊÏ¿F_½N¿þõ¯ W ˆ,ÁÔhÊ”Ü@ø øü¿>èë¯GJò @m@5*.öHêdt»4h¤Ž;ZY †@5*/OÑñ™“-×™g¶¶²œäÀš;w®öìÙcº¨ F6[…$_Ñ¿Ènçø]“vïÞ­k¯½VK—.5] Ô P#§Ó!©(Èè]rI°åY°Â¹çž«Î;«  Àt)P+@Ün—RS–T(©2pµRR¡RS§Êív™+’¤ÌÌL€˜AÔÈn·«°p޲³çÊá­®]ÇÈá­ìì¹*,œ#»ÝnºÄ„7hÐ }üñÇÚ¿¿éRà´è8-»Ý®¼¼\Óe ˆAƒ©¢¢B~ø¡.»ì2Óå@˜ ÆõèÑC­[·f€˜À 1.)))ä} ^¯W.—[ÅÅ•—§Èf«ÓéÛíbY€ˆ"€†ª Èçó)))Xß¿²²2edŒt¸wËßç¥RO± ²ØÛ ¢X‚IEE…®¹æ­X±Ât)8ÁĉõÞ{ï6|HÒ”)¹ð1@Ç›L&K ÒÒir¹Ü¬@¢#€BòÙgŸéŸÿü§***L—‚:*.öH Ö¿¥`"ƒIAA6l(§ÓiºÔQyyŠŽÏ|œ,90‘A„¤  @ýúõÓ™gžiºÔ‘ÍV!Éd´20‘AÔšÏçSAA dºÔƒÓéTd´(0‘AÔÚ_|¡;v@bœÛíRjêÃ’ %U®VJ*TjêT¹Ý.sň{à ¨µ‚‚%%%)##Ãt)¨»Ý®ÂÂ9> OœÔ„#xDPkºð բE Ó¥ ŸÏ§ÒÒR¥¦¦Öx$¯ÝnW^^®…•€K°µvÕUWÉåbyN4{ï½÷tþùçkÆ ¦K€j1¨µ«¯¾Út 8ôôt¥¤¤(??_]»v5]œ‚âHÓ¦MÕ·o_åçç›.ªE Î 2DK—.•ϬטC Î 2D;vìÐçŸnº8€83pà@5hÐ@K—.5] œ‚@œ9묳ät:Ù *@ˆCC† Ñ'Ÿ|Â>Q‡A«V­ÒÝwß­´´45iÒD;wVVVg³ˆ)>ŸO=ö˜<éR‚)S¦híÚµ56# ôôÓOkÞ¼yºüòËõì³Ïê¶ÛnÓ| Þ½{«¤¤ÄtyP+6lÐo~ó}ýõצKAš4i¢””ÓeÀ)hDA<ð€úõë'›íø欬,õìÙSO=õ”þþ÷¿¬jgÉ’%JIIQff¦éRq€Aééé§\ëÒ¥‹‡Ö®]k "]~~¾œN§š6mjºXÄëõÊår«¸Ø£òòÙlr:r»]²Ûí¦Ëã óù|Ú±c‡zöìiº8­ÊÊJåççë¶Ûn3] ,RVV¦ŒŒñ*-}R’[R’¤Jy<Å*(ÈRaáB€zaˆÅ^}õUmݺUYYY¦K€Ó*))‘×ëÕ!CL—‹L™’ä’ÿå•–N“Ëå6W€¸@±ÐÚµku×]w)##C7ß|³érà´òóóÕ°aCedd˜.).öHêd´`êŽ%XÙ¾}»FŽ©–-[êÍ7ßäXDQ§ºuÿß}·^}ûöU£FL—‡z(//Wrr²’“Oÿ¾cyyŠŽÏ|œ,90uG±À¾}û4bÄ}ûí·*((Ð9çœSãý“&MR‹-ª\›0a‚&L˜É2$°`ëþ¥Ûuøp¼^/ëþcÔçŸ.§Ó©%K–¨_¿~§½ßf«äSõ!¤20$†Ù³gköìÙU®íÝ»×P5ñƒa‡ÖèÑ£õÅ_hñâÅêÞ½ûiŸ™1c†z÷îmAuàWuÝÿQÉ’þ*¯·P.—[yy¹†ªC}téÒE>ŸOùùùµ N§CO‘ªþ¿pT‘œNGØk¢Uuo¯Y³F}úô1TQ|`HUTT(++KEEEúÇ?þ¡þýƒ­©³X÷¿4h ÌÌLåçç×ê~·Û¥ÔÔ‡%Ê? ¦À? •š:Un·+B•HÌ€DÐ<  hôèÑÚ¹s§^yå•*ã7Üpƒ¡Ê *ÖýÇ·!C†èñÇ×?ü  Ôx¯ÝnWaáœÀ~ 'Nê¼êAŸ~ú©’’’´`Á-X° ÊXRR@Ô`Ý|ª¶IîÉìv;KîD K°"(??_ª¬¬<åOE¿ÌDÿºþ¢ £¬ûu}úôQÓ¦Mk½ "‰`Ýœ³Ùl4h Çëõ*'g²ÒÒFª[·1JK©œœÉòz½¦KKh,Á°î? :T<òˆ>¬3Ï<Ót9@Ä;^Üã)VAA– ù»Í@Òñuÿ‡Öo¼¡Ñ£G«eË–¦ËB˜ÜtÓM;v,á #øñâTZ:-èñâÕ5eõ¿ã"°„ PŇ~¨›o¾Yü1$ŽØív^ùäýzï½÷tß}÷™.ðù|JJ ¶ÔˆG¯-·Û¥‚‚,•–N“/H²ü³&EY“9úæ›o"Tmâ €@©éˆÉüüqêÕ«—FŽi¸JDÚèÑ£Õ«W/=þøã¦K¢JmfM õG€RSc®¯¿ž®!Cæªoß¾†ªƒUš7o®ÿûßÄp6 uÖ¡#€@©Kc.ÄŸáÇëÕW_ÕŽ;Ô¶m[ÓåÀ°Xïü]›æaû:¾úJZ¼8<+@ pÄ$$;åìÝwßÕ7Þh¸˜dé‹÷„ŠjšÙ=Ú<°Î3[¶Hùùþ?K–H7JôHª7þ @áˆIHR›6mÔ§O-Z´Èt)0ÌŠÎß^¯W99“•–6RݺQZÚHåäL–×ë­öþ²²2¥§giÖ¬kåñüKë×ϗdz@³f]«ôô¬Sž‹XóÀ_ýJêØQºñFiÕ*iÌéŸÿ”Þ¿nÇ0 „#&qÔðáÃ5sæLUTT(%…™¯Dée™u™a uF#b3»W]%õì) ,µisüúš5uûx8†H uiÌ…ø4|øpíÚµKkx1•Ð"½,³.3,5ÏhüXóæ½We6eÇŽ­ªõÌîþýÒ¢E’Ë%-]Zsñ}ûJ?ýiÕð°`H]s!> 0@Í›7×¢E‹Ô¯_?ÓåÀãË2« !õ_–Y—–ࡨLÒíÛ7Sûöõ×ÑÙ)Gþ7U2NyâL} ›Ïmâ_Nµd‰T\,•—KíÚIiiuû¢PoH0'1YPP V­Z>ŒÍfÓ;ï¼£îÝ»›.EzYf]fX‚‡¢\IÓtêҬ钮 Œ§ëhóÀ?(K·'ÍÕïTJ«Ïö/¥zöYièP©kWywî”+grÌžþË àî»ï>uíÚU¯½öšéR`±þýƒ-s©^¬׊SÕ¦ów}Ôe†%x( 6›b—4OÍ›_¡:ûóŒÖÒWüVgŒ-]pA•Ó«¢õô¯DA€¶cÇ­^½Z÷Þ{¯éRåxÁŸ"½,³.3,ÁCÑ%ɧžúLC”¯·t­6ëÜÀSmÕ¶m'•”̯U]=º§E€öÎ;ïH:Þ†lñ+Xçï£ÇçÖgÆ«.3,UBQÑãêtè2{Õsçe–·ÑÙÚ¥Ã:C¥J=!€„¶_…¦¬f@ -\¸P}úô¡6N‹l‰%\3^ua±ÛíÊkt@Úû‰´m›d³iC«6úsÙO´D7©Péú^gžðDhûUhÊjTEE…Þ}÷]Ýyç¦KA à[b©yÆëAed\§† ϪÕÌH°é4ûŠ7–n¸Á¿i<3S-ÒKéY*-=SRÃÀG¨Û~•HŸþ…š@ A­ZµJ»wïÖˆ#L—‚À ¶Ä|Æ«LÒt}ñÅSò/©ªÃÌHY™´l™ÊTÆ%7Ôz–ÅÞ¤IØö«ÔeoÊѰ´lYa­?ªG€õöÛo«eË–r:¦KAðù|JJ 6ÃùãZá:©,øŒW®¤÷íÙ#}ð¿Ç’%Òÿ+IúÓèCÞWTÓlJ(BÝ›RuIÚxI}ë]C"£:ĸ£EOì œ“3Y^¯·ÆçRRRtÓM7Éf㽨D÷ßÿþW;wÖºuë‚Þãv»”šú°ü ß*W+%^°¹,¨46Ôõg²¾ÊÊÊ”žž¥Y³®•Çó/­_?_ÏÍšu­ÒÓ³BúüÇg¼NV».åt¥ÏNÕWgŸ#_ëÖÒÕWK HN§ôÊ+Ò–-z³tW «`&2ŽîMÉΞ+‡c´ºv#‡c´²³çV;‹S}GwÔ¿u †Õg£èc=fa¥ˆf©©©Úµk—æÍ›§_þò—ÕÞéãZãE]&Ã1sΓʂÏxÕ¶K¹ÔCZ®šiß(×ÂWÔºOŸ*O˜ÞWÊlJ͇0 d>DÕ«Wû$ùV¯^mº1";ûAŸTè“|ÕüYéËÎ~Ðt‰ˆãÆóõë×Ït1¯.?“;vì𥦠‚I„¿‹Ž†¥7ß|Öt)1ˆa¡ºxñb%''kèС†*F4³Ûíúä“O”––Vëgj^>´K›7oUZÚÈZ-®Fz¦Ôå¸âP›âîóçååJ{÷Jï¼#åçkûìB£N’¤Ot‘æj¬–h¨ü³.á™)å˜f„"Éçó±¥?J¬Y³F}úôÑêÕ«Õ»woÓåˆCTëÖ­5þ|Ó¥ N¤¥”Çó/BÊäïý¤ü/ªýý0¤bwÞƒ0àb}öÙ—U^¨Nžœ£1cî,éªÝ3±L¤šÃ•¤ð¯‚é’K¤=thÀ=øïbÍÙ‘«]ºB'œhÛoíx½VÌ€@‚زe‹V®\©—^zÉt)ˆ#Á÷<œxòÒQÉ’~¬+µqãÏtbÈðxŠõæ›YÚ¿ÿ/!=sº†›Ñ¢6 CÙ á-+“kJnðÀ2`€´u«Ô®IzÌëÕA—[ÅÅdvÆ1EHÔÂéäw[¿ý¶T;v¬Õºukuþùç›.qÂëõ*=½ºåCÃ$-Ñ©3#“%•”^ÍGR‡g •=7ê72û7i_«ê7i×âk8xPZ¹RÊÏ×ï¼£wÖ}£ÑûÿO'Ï¥¦>,–ñz­þØ„q¨º£Q·oo#Ÿ¯ŸFŒ¸=áŽFEäÛøÜ¬ÙaU¿7¤¦#a›Öá™ØØèòfý#Gü˨~óið`©eKéòË¥¿þUkví×ìýwª¾ S ‡Ní¬\&éIÿ(»£ŸKJÞÖºuóURò¶:vl¥êûBÔ´i=XØo¸r¯¿þÕ¿‡cÆ øÈÍ•þóiÇÝÒ8U¯éÑ +6{@ ù_€œ2Žv·¾JRk?a}QH(Á÷†ÔÔó¢‡üǸf„ðLän†ãd®{}\w”ž.]t‘”R5œ„«q!` âЩ/PÞ’4X’ý„q f‡Rƒ d³…þr!øÑ²g«ú!ICÕ´éúî»™!<Ù†›µÙ<^›âì×C>Ïë¢Ýª%*Ð ýA“‚ mÚHmÚT~vìØ!“ ¨/Ä¡SßmM—ÿÝe‰(¨o¾ùF=zôÐo¼¡+¯¼2äçƒõ…¸ðÂóôá‡iãÆ§tjÏ‹éZ°àu¹Ý/†ðLh}2BUçNï>Ÿôå—Ò’%R~¾^X¼XÉúŽÈ¦•®=jyÚ¯!Xø‘rd*á@€8têò—ÇNå N¯cÇŽ:ï¼óôÒK/Õ)€H'4Å;Éñwõ«oXW—g"åÔåŒ'ê|9£Ë%MŸ.%'K}û*ùç?×ÞÞ½5åÿ–kùÇ_¨¼ü-9loÔø5?Óå_N™+ÿ› Ö2  ‡ÂÙY‰)))I999zøá‡µgϵlÙ2l;XÈ÷3áPçý&H—^* $5o.Ij!éù뮫õç~ì’æ©yó+Ô¡Cúz æ@ [þ „âg?û™¦L™¢Ù³gëÎ;ï4]Ž'.gl©Ý¬¥¢|ÍÕX-Õ¥Á—3öîíÿS5‡Ÿ¶jÛ¶“JJæ×ës&@"èÀr»Ý***Rqq±öîÝ«¼¼<Ý|óͦKL½cŒøqÎ9çèÊ+¯Ô¬Y³3€|û­nmw†*b2|dgKv»ÿ$ª_ýJúþ{顇¤?”vï–†¯r{ÕžG÷kVm8 <˜€8ô /hĈêСƒéR3Úµ“î¹G:Têß_:ãŒo¯sÃA!#€@©v ºÓql³i°±—†üç?ÿѪU«ôÖ[o™ú2€ÈÙ´É¿œêg?“lÁ_Æxï¿ßÿórÇÓ5þ¼U熃BF‰B“&MR‹-ª\›0a‚&L˜`¨"V¨i z~þ5JJJÑÆOŸ2vòúô¼¼<Ùív5ÊØ×„ͶmþÀ‘ŸïßËñå—RR’iUÏžÕ>R—ýôÜ@ufÏž­Ù³gW¹¶wï^CÕÄHš1c†z׳{*€ØSu úQþ5è_*éöjÇŽ®OÏËËÕ‘#Gô÷¿ÿ]7Ýt“6lhaõ@>,=ø ?p|þ¹ÿšÃ!]y¥4dˆté¥RëÖA¯égéÄŸ—9yÿQ¸M›F¤ÆºîçµçFM‡FX€à öÕW_™.@Œ¨y º]þ¥!ÕŒ_Ÿn·Ûy჈JKKSzzºž}öÙàd×.iæLÿÆñ+ü{:Zµ’–žyÆ¿£I“ˆÕhÅ~Žhm\Äö€@”¨i úyç•ê¼óªvŒõé°Ú< eË–iÕªUÁoÊÍ•5’ž|RúøcÉë•ÞzKºë.ÿ†ò¤`K¤Bãõz•“3Yii#Õ­Û¥¥ÔáÃuÞySÉŸuÇ D‰š× Ï“$Ö§Ã<ŸOW .]º(77Wo¼ñÆ©÷´níŸI‰lf!Î;ïAÿš>û¬êÏ‹Ëõ§°,›¢q!Pwˆ"§[ƒÊút ,|>iÆã}8–.UJ‹ºÿþûu÷ÝwëË/¿ÔüãSŸ‹pøj>nwãÆ\ ûLk×®Ur2“Úbß>郎÷âèÞ]šSà ä N>$éì³ÏÖu×]ÆBCêq»uíRuG€µnÝ:Í;WÏ?ÿ<áU8 -_~|ãøêÕRe¥Ô©“4t¨4j”é Ã"ÔYˆp÷ µq!?ĨéÓ§ëœsÎÑM7ÝdºD›_”&N”Î9Ç8n¿ÝßüïG? [ÿhê,˦€è@€´e˽ôÒKš6mšÎ8ã Óå ÚŒ/]~¹ÿôª8 Õ e‚eS@t €@ š1c†7n¬Ûo¿Ýt)°BE…¿›ø’%þeU—]&=ð@ðûívÿœ‚eS€yˆ1{öìÑÌ™3uÏ=÷¨Y³f¦ËA$TVúÀ=ºi|Ù2ÿFòÆ¥ÌL©cGÓ@@ Æüïÿþ¯~øáÝ{ヲKA¤ÜwŸôì³RÆRzºtÿýþ½N§ÿZ”ª¨¨Ð»ï¾«#F˜.@#€@Œ¹öÚkÕ©S'µmÛÖt)ˆ”[n‘ÆŒñ÷ãhÔÈt5µöÞ{ïéÊ+¯ÔÂ… 5|øpÓåˆRˆ ¯×Øðê9ië«Î^»wï®îÝ»‡¹RDÜÖ­ÇŽþziذà÷ÆhcÉ+®¸B—^z©î¿ÿ~]vÙe²Ùx™àTüÍRVV¦ŒŒñ*-}R’[þæg•òxŠUP¥ÂBN݉k^¯´téñãëÖù¯_p4r¤ÑÒ"%))IÏ<óŒúôé£çŸ^wÝu—é’D!:W@„L™’t¼ór²¤*-&—Ëm®8DÖ 7HmÚH?ý©?€ "½ñ†TV&ýç?ÒØ±¦+Œ˜‹/¾X999úõ¯­={ö˜.@"€@„{äovVþqÄ¥k®‘^~YÚ¼Ù?óñç?K×]—0Gã>ñÄúþûïõøã›.@"€@„”—§èøÌÇɒ㈇ùg3~õ+é›oj¾÷Úk¥o”:t°¦¶(Ó®];=ôÐCzî¹ç´~ýzÓåëª IDATˆ2ˆ›­B’/Èhe`QëÈiÅ éñÇýK¨Z¶ôoŸ9SÚ°ÁtuQï¾ûîS‡ôÔSO™.@”!€@„8IEAFéÈ‘JK©nÝÆ(-m¤rr&ËëõV¹ËëõjÒ¤I¬¥·ÚO*µjåoú7}ºÔ´©ôÔSÒ§ŸJ;vø{r F5Ò‚ ôÜsÏ™.@”á,ˆ·Û¥‚‚,•–N“/H²¤JI e³= /¾˜¸üt¬©S§êÿø‡yäC_E‚êÞ]êÛ×4.¾XJa¹\]ôìÙÓt ¢"Än·«°pN ÈÇú€9r@_|‘'ÿéXGU=+//W«W¯Ößþö7=ûì³:ûì³ }qÄçóo_ºTºõÖšCÅokYYh Av»]yy¹U®¥¥TÕðq¢þ*.~B>ŸO'NTZZš~ñ‹_D¼Î¸äóI_}u¼G~¾´m›d³I—^*õèaºBHH°XmNÇzþùçµråJ½ÿþût“ÕÁƒÒÝwûƒÇ×_KÉÉRïÞþS©† ñïëhÒÄt•°ø­;~:Vu!¤Råå{4iÒ$ÝqÇÊfçÐ5j$mÙ"]}µ?p\z©Ô¢…骰˜ÓéÇS¤ê—a-ÑÎ%r8úýïouiÑoÏé³Ïü¡"˜¤$éw¬« !©¨¨ÐæÍ›Õ¹sgÓ¥øÿíÝyx”ÕÝÿñÏd!aȦLËž€ PðQÙüjÙP6ÅG‚¢â •ÐVªØG\@,ˆÒj)Yc¦ñ!P 5@‰¬Ùç÷Ç$‘™!ËÌ}Ï$ï×uå¢Þ÷,ß1UÏgÎ9ßcÚð€Ább¢2GRœl]±Tôgœ‚ƒ_VïÞ½ôé§Ÿ*00м"=Å… ÒW_I³fIݺIKH—.™]*iöìٺ뮻h- Ô`0Xqw¬qã>SXØ…†UXØ÷™vïÞ ¯¾úJíÚµ3»Lóœ>-=ÿ¼Ô»·íð¿ûï—V¯¶m_¾\:|Xª[×ì*QIÓ§O×ùóç5qâDY­ŽêP± L`¯;ŠøøØ‚ÆÝwKcÆØöq„†Ú–VÁëkùòå5j”–-[¦I“&™]ƒ@ÆÉÏ—Nž”Zµrü˜&M¤Œ G56räHMžù¤úôé£ððp³K` –`ܧ°Púþ{éÍ7¥!Cl{8î¹çúÏ#|T{o¾ù¦BBBôðÃëÂ… f—À@€kedHý«4j”$ué"Í™c;Ÿ#:ZZ±Âì áj×®­µk×êøñã}¤¬,:U¡\z÷î­~øA¾¾¾f—À Ì€€Á–.]ª)S¦èÉ'ŸÔ€Ì.çúN’Ö®•&O–Ú·—~ÿ{ç÷÷'| B@Í T@ff¦¢£c”¤ü|_ùù¨gÏ0ÅÄD+((èºÏ_¾|¹&Ož¬éÓ§ëÍ7ß”Å7[Ÿ;'}û­k[>uà€ízÇŽÒÀÒàÁ¦–ðn¦ªê€ÞH§OŸVïÞ+9y¾¤II…JJJÐöíQŠ‹[ë´æ+VhÒ¤Iš:uªþò—¿xfø¤?´íáhÛÖvÇœ9Rß¾R‹fW¨ LSÕ½ÑfÏ^XTkÄUW}$E(9yž¢£c.¸téR=þøãš>¬ªþ‰`šÒúâyé½'IHH’ÔËÁÝ^E÷Ë:r䈦L™¢'žxBï¼óŽñá#'GÚ¶MzåÛLÆÂëœÀÞ¸1áaÛ¶múÍo~£ƒš] b€ilvG!£—^7²œëÊÏ÷Õ¯AéZ>E÷Ëjß¾½æ¶ÚJÉÏ—öîµíߨ²EÚ¹SºrEjØÐ@Ú·7¦ Šnºé&åçç«gÏžzï½÷ôÐC™]`€i*; 7‹Ÿ_$«ƒ»…E÷í3,|HÒ´iRD„4¾T«–ôê«Òž=Ò™3Ò† ÒðáÆÕTAÇŽ• Áƒ+**J3gÎT^^žÙe¨"f@˜æ×½½â|@o†ž=Ô”¯Ò{@ŠÅ«gOC†3Ó¦IcÇJÝ»ÛZâ^¬^½zZ½zµz÷î­§Ÿ~Z»wïÖǬ`– ^‹¦± ØãÜõ }‘˜˜h…„Ì‘'©°èj¡¤8?£ììl…‡R‡C>HãÇÏRfffÕߨj•Ž•–-“F–6ovþøÛn³6Nø@5a±X4}útmÛ¶MÇŽSÇŽõ‡?üÁì²T3 L­íÛ£”œ² èãò¼bbÖš[à5‚‚‚·¶¨mðë%mƒ›6õ×®]?ê“O&KzK.éæ•šjÛ¿Q|Gjªäã#õè!eg»áÓž/22RIIIZ°`êÕ«gv9*ÉbµZ-h†ÁöíÛ§nݺiïÞ½êÚµ«Ùå†ð¦s@®•˜˜¨çž{NÿøÇ?$Ý*éCIÝ®yTœÆûÌa{^»FŽ”>ûL²X¤Ûo—ú÷·ÇqçÒ 7¸î*ŒñZÕ1âF999š;w®>üðCeee©sçÎzýõ×5`À³KuêÔÉìR\ƒMèn’ µk×ê7ÞЂ ôØciË–- Vtt´Ùå^ËU‡Væuš6mª.]ºhÓ¦Múé§Ÿ4eÊùûûÛmÏ[[—5@ÿÒ|=«OS·KIC†HŸ~*ýôSe>:€rÊÌÌÔŸÿüguîÜYz÷Ýw•’’bvYŠ@ÜdݺuòóóÓ¤I“J®èÑGU\\œNœ8abu€÷ªìiäå{âaÿu:vì¨Õ«WkàÀòõýõŒ’k»ymÔ e©¡þ¥{4AKu¥Y3鯕–Ž—\5¨œ   ¥¦¦jýúõºñÆ5uêTµiÓF¡¡¡š:uªþ÷ÿ—óD±ËMöï߯ÐÐÐ2]:zôè!IúþûïÕ²eK3J¼š«/Ì˳H:$éGIÿ'[€¨%éË ½ŽT¶›Wœ"õ•îÕ5VnÛeŠûîSÉÃ7ÔÕ¿¿¿xà=ðÀÊÊÊRll¬6mÚ¤þóŸúøãuæÌ³Kj,ˆ›¤§§«yóæe®_;yò¤Ñ%ÕBU/ܱc‡–,Y¢üQGþ(éïEwšIê"i ã×),”~øAÚºUš>]ºjäÚö¼+ÚÐÞ«g˜bb>õøn^@u×°aC1B#FŒd[¢åçç|´hÑ"ÕªUK­ZµRpp°‚ƒƒÕ A#ʪ=ˆ›\¹rEe®–ÜP~………Ú¿¿Zµª¯¤¤7%Ý,颤s’ÎýôqzxaFF†’““Õ«W/6V|üHIIjrÍ#¿VnÎE ¹K=.œSDv¦"s~Q½Ül©vmiÐ ©}ûRϨL7/æ(Ï—~ø¡•ŸŸ_rí†nP³fÍÔ¤IÍš5KÜ4Œ¸pá‚ÒÒÒT§N*00P Åâh¨ nR»vmåä䔹ž]t€XíÚµ>÷©§žRÆ íÞ‹ŽŽÖwÜáð¹;vìPLŒóM¸_|ñ…Óû ,ÐÎ;ÞïÓ§fÏžíô5†êô>ŸãWF|Ž!C†”¹võ@Ï>û¬ÓϱmÛ6ÍŸ?_V«µäyÅÿ»øgË–-Nk˜5k–6mÚ¤‚‚(??¿ÔÏàÁƒµlÙ2‡Ï·Z­êÞ½{Ñ_]}@a}I%¨E‹ÅÄlrø£FÒ¨Q£$Ù¾ŒŒRrrIT|b]}¦÷,Ô7ÙOMuN¹òWœ"µP¡:Üb¯ÞŠÿBA7ßìô³ð~{÷îUAA222tìØ1?~\ÇŽÓéÓ§uöìYÕ¯_ßéówîÜ©ûî»Ïî½Zµj) @'Nœpú:/¿ü²¾üòKùúúÊÇǧÔÅbQDD„,Xà´Ž#F”Œ=®>ÅÿûÉ'ŸÔ=÷Üãðù{öìÑ+¯¼âð¾ÅbÑ'Ÿ|¢:uê8|Ì[o½¥Í›7;¼ßµkW½üòËïKRTT”Ó/o§OŸ®:¼¿wï^§ŸCR¹?GVV–Ó×Áõ@ܤyóæv—Y¥§§K’Z´há𹿿©k-[¶dÏ$©RßœÿǪ²¯éçç§zõêÉb±”<öê?-‹¬V«Ó×騱£²³³åãã#__ߢîQ~%?áááNkðõõÕþýûU§Nåääè7–iÿþ#*(ð¯Ô9 ŽN5Ï͹¨ºÉôžîÖõ×.õÖýédœ_ü 3@ áëë[òßßÞ½{Wè¹Ú±c‡.^¼¨œœœ’Ÿììì’?‹WE8Ò¶m[õèÑC………*((Paa¡¬VkÉŸMš\;{[Vݺuåãcë9tõHÅŠï9b±XÊõ˜êjÍš5Z³f$é§Ÿ~Rff& \€“ÐÝ$::Zo¾ù¦~þùçRßnÌŸ?_/¼ð‚RSSË NÖÜ,#CJL”œ|Û>HIIåhIXØ8ðw;÷5㵪£ ¯›Œ5JZºtiɵœœ­X±BÌfF8{VZ¿^š6M “š7·ÅádßU]¶€},Ár“ž={êÁÔsÏ=§Ó§O+$$D«V­ÒñãǵbÅ ³Ëª¯ôtiáBiË[×*Ij×Nêß_š;WêÛ×¶‘ܪtÙ×Gq£>ø@/¾ø¢>üðC;wN·ß~»6nÜèt³/à-233‹öO$•쟨è> ·ðó³Ízôë'=ý´íÏ[n)÷Ó{ö SRR¼l'¤_+Þi—-p}ìñ ¬)„§q2fͯ¡C§)9y¾l§‰[$JJPHÈÅÅ­uOÉΖÒÒl3¨·"¡è×îX¶C‹»cIñ yÞ}Ÿ à¯U3 ì:}ú´z÷~¸(dĨ8d$%%hݺ(]¼¸T¥g |$E(9yž¢£cÊtŠªT8ÈË“öì±-§Š•vî”Ú´‘’’*TïöíQ厺cÙj%|PUvÍž½°h0_6d\¼ØDö—(IR/%$¼^êJ…ÂAjª´v­r¾þZ…[·©v~ž.úøiOFJï¡{ßxQ7V°^G¡ÈÀ} ìJHH’-,ØS_Ž;EUZÚI…‡úõlÜKJNþƒÊŽ•uî\%(PÏL[4Vû »©à¢´;A!“æ(.®S™™çõ– EÀv9oGë¨SÔiIëüùÿQRÒÕ{CÈ>¬ª£Ëº¬ºW=çšppçš8êq½÷áC*;Ëâx6ƒö¹xÎ`ׯíhí¹URœë %Í“-8ØÂ@°Žkœ~Ö£4ݬ÷ôè5Ϲ&øù)nï¿eÛnO¯¢ÙŽŠÔKû\<€]¶v³ñîöWýúOÈB ‹®JÚ£ µÕh­Ö2=¦dµUŠÚè=ý 0%iµþŸ–hò5¯U6Tf6Ãy½_+7÷’ÂéC‡¡ ¤ñãg)33ÓÁ〻° ðžv®FLL´¶owÔŽöúòËOó~©NQiiÙ}þýEOéÿ®¬-ê¯mÚ¬szDå=[£2‡:®÷+ùùý·Ž]©«[W´;p à\ÕBÖ•¶£íq«b®µÛ)*<|>Hú½>ÑÃ:­¦WÝé#)JÒk’"uíÙ11kK½NetTonî%=ºB®èŽªŽ‚jÍÓfqe YW ÒŠÅ/K;vüzÇ­wIþÞõ즕I‡U68IzFíÚ=¯Zµê^÷l ç³/eK©zí„¢Š´ îEAµå‰³ ŽxT Ùìl).î×À/åçKÍšIýûK·ßîð©×[¶µk×ß ? îXxª-OU°Çù ¹ì¹nÅ™>]Z¾\jÜXêÛWúË_lÁ£CÉâ¨FWWX™ý$À} ¨¶´áEµåMKo·-{®Æµ³8×UX(%&Úf2† “þõ/ç¿õVÛ2«J„O­9*Û28®h?I´yÅP1‚jË›–Þ8Þ;±GžÅ±Z¥Ã‡mû7Š÷qœ9#H½{»ë#x,W. UGAµåMKo ’ÓÒ²uþ¼ãYœìì|?«T—¯Õçêö´Ÿ$??©GiòdÛŽÈH©vmC?—§ð´eaÔdT[•måjG-d“’Íâd(5õ¸V®|EWwùzN‹Ô¬Ù*Åìú\MÚ´)×{{K»bàý ¨¶ªÃÒ›âYœ& Q_}«þÚ¢ùš£4Ý"i¶òòÞÓµ]¾¾ÒÓRF¤¬¯þµ\ßú{S»bàý ¨œ}ƒï•Ko²²¤­[õN­óš]k€:æ^’$ý[¡ú@(Miò÷ߣ¼¼•^ ü]¾¼©]1ð~x½jõ ¾Õ*õë'mß.ªNp°‚G ÓÒÔ,­ÉÈÖIK]ùùÍ׸žaÚ¾½µ’“+ÖåË^P;q┼¥]1ð~x½jõ ¾Å"Ý¿ôûßÛ6Ž·i£Ú’&ý\-<|*ÒåËQP“þËÁkHžÖ®x?Ò#º[[uÉóÊyãé·¿•^zIêß_§[¶Tï;ç’ý*Žº|uê¬øx_}òIé¿WŽ—ZEKŠ’ôšl!ijÛïFGq¼œj¡¤?ÉÞ>¼¼î’â$Ù;å»üßàWf3ûµõ^P}媖þ¨g´E}u©ý|}ÿõW%÷gŸåÒý*öÎ?~–RRØyGK­‚$­Ñ 7ü—Z¶lé•튀÷ €À£Ø–KÙû–ÞÙ>ùû÷U^ÞûªÊƒ×ÛÌóÄ-;T2ÄI½=¨u%Zà_ê=ŒØ¯âø=œ-µúFŒè=›õ€×"€À£Ø–KÙû–ÞQ0‘¤¦ºå–Vºë®Ïªtààµ÷–JS?ŪŸbÕ_[Ôzý1éKçÎIשW²·üËqÀ’\µ_Åñ{°Ô ˜⸳“ó~` _•¿½ÏÏ÷ÕÍJÓóš§þÚ¢P‘$ý ÎÚ {_{“RZµÓ¹Î–œÎÛV¨UEKe8~–Zó@àvÙØí¸³S¹bŸ‡3~~ÊQ-Ý­­Ú¬z^óô­úꌬ’–®¬–þ]z|ëÖϨuëD¥¤¼¡ò,ÿªhëÜÊpþ,µæ²X­V«ÙEÀfß¾}êÖ­›öîÝ«®]»š]ŽK”ÞØ}uG¦…„̱»±Û^`éܹµ¾ûîÿôËÕ=êÂ)-MºõV»·ÇŸ¥•+GªìÀ}–¤dïDœ~ø#Ö)WÀÊÌÌTd¤ýÖ¹åþ×aÄ{PSUÇñšÑ Äÿ‡®h{YWq<¨—¤8÷Y¹¿¯ðg¸rEÚµKŠ•¶l‘¤¤¾¾ýûo%m‘£eSaaCtàÀßËõ*õ9*Á¬ß7Õ¤êX‚UT¦½¬«¸²ë“½–³eüç?ÒGÙG\œíò  ©_?iÌÛŸN^ßÞ¹iiÙ:ÞuÇËõ9ªÈˆ÷¨ H p½ö²={¢"ŒèúTJJŠôæ›ÒÝwK ÚGx¸äãS®§Û¸‡‡RR’{7ŽÔÀˆ³'qi×§ÂBéüy©aCǹûnéÌÉ×y°©È%#6ŽÔåûZ^ÍðYˆ«Øçñî^gðnµJJý«4j”tÓMÒO8C_ßë†Ó§O+22J+WŽTRÒF>ü…’’¾ÔÊ•#¥ÌÌÌR‰‰VHÈÙºp]-”WÔé*ÚyM(Á H `ÄÙŽ8n«¯Ö­g);»‹ÂÕÌBüWø-z%²ƒêïÞmÛ<ž‘!ùûK½zIS§J÷Þ[åš*º$ÍÑÞÎϨ8ˆªh‡#3—9¼wê¬øx_}òÉïtu{Þ{’fªÎßžV^—.ò;Vêß_êÓGª[×e5UfI›º\ƒâe*ÓÑÊÙ,„½Ãò\­ÔàÝj•,?K)) tí,Ä ½¢÷5XܾI+ÞxÃ-õ˜¹$  ¦cˆ—)½|¨x]zùеŠg!ÆûLaaC:TaaC4nÜgî?”î知 ¤éÓ¥Ûn“ŠB…m¢W™‡ÿ¢†:¯ßÝw_—¤ÙCW+wbÄËT¶£•aKˆ.\¶o·Ã±e‹ôý÷¶Y¶mmË©zÙB‡Ùãéj`ˆ—¹ÞÀ=;;_ãÇÏ2ïì3¤•+¥–-mcÆ ÛYÁÁ¥æ©ãX’P“@¼Œó{†RSkåÊWdô‰ç%ž{ÎöÓ¾½dq”ßÛ¸zbMð7š;w®,‹¬V«,‹Þÿ}I’Åb)Wªˆš]àQhà À0†!€0 €a C`Ã@†âFš¡ñãg)33ÓìR—"€x Ÿ~Z¤•+G*22Š€j…â‘|$E(9\¬ZŸ -IDATyž¢£cÌ.pˆG륄„$³‹\†âÑ|”Ÿïkv€Ë@ø Ú·o¯ääd-^¼X7nÔ÷߯¦M›š]"`8f@ÜdÑ¢E:zô¨þð‡?h„ š7ož6nܨS§NiñâÅf—±fͳK€ø}×,ü¾k~ß@ù@ÜäŽ;î(síÎ;ïT£FtèÐ!*‚'â?X5 ¿ïš…ßwÍÂï(?ˆ.^¼¨ .¨I“&f—˜‚b E‹)//OQQQf—˜‚Mèå`µZ•““S®ÇÚ½¾mÛ6½òÊ+ŠŠŠRß¾}]Xà= å°uëVõïß¿\=tèBCCË\1b„:wî¬åË—_÷5³Ë€Aø}×,ü¾k~ß5ã´ª³X­V«ÙExºS§NéŸÿüg¹;|øp5hРä¯SSSÕ§OÕªUK;wîtÚ~7==]Ý»w×É“'«\3Ü£E‹Ú³gš7onv)^‰âFgÏžÕwÜ¡¬¬,íØ±C!!!×}NzzºÒÓÓ ¨•ѼysÂG@ÜäÒ¥Kêß¿¿þýï+66V]ºt1»$Àt7>|¸¾øâ M˜0¡Ì¦óúõëkذa昈â&mÚ´ÑñãÇeïooëÖ­õŸÿüÇ„ªs@†ƒ†ârrr4{ölµhÑBuêÔQDD„6oÞlvYpƒÝ»wkÚ´i W½zõ¬¨¨(9rÄìÒ`yóæÉÇÇG:u2»¸É¾}û4tèP5nÜXuëÖU§NôöÛo›]Ü`Ïž=6l˜Z´h¡ºuëêÖ[oÕk¯½¦+W®˜]ªàÒ¥Kz饗tï½÷ªQ£FòññѪU«ì>öàÁƒº÷Þ{U¿~}5nÜXcƌљ3g ®Øû°ËŒ=Zëׯ×Ì™3Õ¾}{­X±B»wïVll¬úôécvyp¡Q£F)..N>ø :wî¬ôôt-^¼X/^Ôwß}§ððp³K„¥¥¥©C‡òññQ›6m”˜˜hvIp±M›6iÈ!êÖ­›¢¢¢T¯^==zTV«Uo¼ñ†ÙåÁ…~üñGõèÑC-Z´Ðã?®Fi×®]Z¹r¥†ªÏ?ÿÜìQI)))jÛ¶­‚ƒƒÕ¦M}ûí·Z¹r¥ÆŒSêqiiiêÒ¥‹n¼ñF͘1C.\ÐÿøGµjÕJ ò÷÷7éx+LoµX,Ö?ýéO%ײ³³­íÚµ³öîÝÛÄÊà»ví²æå啺väÈk`` õ‘G1©*%**Ê:`Àkß¾}­·Ýv›ÙåÀÅ~ùåkÓ¦M­#GŽ4»`Μ9V‹ÅbMJJ*u}ìØ±V‹ÅbÍÊÊ2©2TUNNŽõÔ©SV«ÕjݳgÕb±XW­ZUæqO<ñ„µnݺÖÔÔÔ’k›7o¶Z,ëÒ¥K «×±ËdëÖ­“ŸŸŸ&MšTr- @>ú¨âââtâÄ «ƒ«EFFÊÏϯԵvíÚ),,L‡2©*aÛ¶mZ¿~½-Z$«Õ*‹ÅbvIp±Õ«WëôéÓš7ož$Û2ŽÂÂB“«‚»Ô®][’tÓM7•ºÞ¬Y3ùúúªV­Zf”¨U«VÉïÕêd¡Ðúõë5xð`Ý|óÍ%×~ûÛß*44TŸ~ú©Ûëôf“íß¿_¡¡¡ªW¯^©ë=zô$}ÿý÷f”Y­V:uJMš41»¸IAA¦OŸ®‰'²Ì®Û¼y³4h ÔÔTuèÐAõë×× 7Ü )S¦(''Çìòàb&LPÓ¦Mõè£ê‡~PjjªÖ®]«wß}W3fÌ( (¨žNœ8¡ÌÌLuï޽̽=zhÿþý&Tå=ü®ÿ¸Szzºš7o^æzñµ“'O] öñÇëäÉ“zýõ×Í.nòî»ïêøñãÚ²e‹Ù¥ÀŽ9¢üü| >\=ö˜,X ØØX½ýöÛÊÊÊÒêÕ«Í..Ô¢E íܹS÷ß¿ºtéRrý…^Ы¯¾jbe0Bzzº$9ÃýüóÏÊËËcˆ“]¹rEe®–ÜGõuèÐ!M:U½{÷ÖØ±cÍ.npöìYÍ;WsçÎUãÆÍ.ntñâE]¾|YO<ñ„-Z$I>|¸rssµdɽúê«j×®ÉUÂUN:¥ûî»O’´lÙ25nÜX7nÔ¼yóÔ´iSM:Õä áNÅã³ëá ö@LV»vm»SóÙÙÙ%÷Q=eddhРAºñƵnÝ:öTS/¼ð‚š4i¢éÓ§›] ܬøß×£G.u}ôèÑZ²d‰¾ûî;H5òÚk¯éĉ:|ø°Z´h!É8 5{öl=Z52¹J¸Kñ?ïŒá*‡= &kÞ¼¹ÝeVÅS{ÅÿRCõòË/¿è¾ûîÓùóçõõ×_«Y³ff—78r䈖-[¦éÓ§+--M)))JIIQvv¶rssuìØ1;wÎì2á"Åÿ¾nÚ´i©ëÅ›Yù]W/;vìP—.]ÊüwzÈ!º|ù2{8«¹â¥WÅ㵫¥§§«qãÆÌ~8A1Y—.]tøða]¸p¡ÔõøøxIÒo~ó3Ê‚eggkÈ!:zô¨6nܨŽ;š]Üäĉ*,,ÔŒ3Ô¶mÛ’Ÿ„„>|XmÚ´Ñk¯½fv™p‘âͨiii¥®ÉdxMpŸ¼¼<ؽ.IùùùF—µlÙRAAAÚ½{w™{ Œß®ƒb²Q£F©  @K—.-¹–““£+V(""B-[¶4±:¸ZAA¢¢¢¯¿ýíoêÕ«—Ù%Á:uê¤ 6èóÏ?/ùÙ°aƒÂÃìÏ?ÿ\>ú¨ÙeÂEzè!IÒ{ï½WêúòåËåïﯾ}ûšPÜ¥k×®Ú·oŸŽ9Rêúš5käëë«Î;›TŒ2räHmܸ±Ô—ß|óŽ9¢|ÐÄÊ<'¡{€¨¨(mذA3gÎTHHˆV­Z¥={öè›o¾ÑwÜavyp¡§žzJo½õ–† b÷_N<òˆ UÁh}ûöÕÙ³gõã?š] \ì±ÇÓû￯‡zHwÝu—¾ýö[­[·NsæÌ¡Ó]5“˜˜¨ˆˆ5hÐ@Ó¦MS£F´qãF}ýõך8q¢–,Ybv‰¨‚Å‹+++K'OžÔ»ï¾«x dVcÆŒjРAÉIè 6Ô“O>© .háÂ…jÕª•vïÞÍ,'  ''G/¾ø¢>úè#;wN·ß~»^{í5 8ÐìÒàbýúõÓ¶mÛìld±XìNç£úéׯŸÎž=«ÄÄD³K‹åççkþüùZ±b…Nž<©Ö­[kêÔ©š1c†Ù¥Á ôÒK/i×®]ÊÎÎVÛ¶m5vìXEGGËLJE&Þ¬M›6:vì˜$•4‰)>Dö§Ÿ~R«V­$IIIIzúé§µcÇhРAúÓŸþÄ’Ëë €0 ñ€a C`Ã@†À0†!€0 €a C`Ã@†À0†!€0 €a C`Ã@†À0†!€0 €a C`Ã@†À0†!€0 €a C`Ã@†À0†ùÿbÞ…hQŸÝåIEND®B`‚lmfit-0.9.2/doc/_images/conf_interval1a.png0000644000032700003100000004471412603520205022054 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝ{tTå¡÷ñß„ÀT¹©\Ž«E –`T*T^PTÊE](  ½ë›Eª¨=D8PŠ=6ÚÆ­…°ö‚ÛC)) m­EÄ’@‰"†dÞ?p¦“¹d®ûÙ{f¾Ÿµ\âž½‡'{õýò<ÏÞ.Çãe÷d€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÄìøñãZ´h‘ÆŒ£nݺ)++KQ_ßØØ¨Ù³g«gÏžêܹ³®¼òJíØ±ÃÂÃ)ÄìðáÃZ¼x±ÞyçJ’\.WT×¶´´èÚk¯Õ /¼ ’’•––êСC5j”öìÙcå°áÙv©§  @ ÊËËÓo¼¡¢¢¢¨¯­ªªÒÖ­[UUU¥¯ýë’¤)S¦hРAZ´h‘žþy«† `1ëСƒòòò$I'¦k«ªªÔ»wo_|HR=4eÊýêW¿ÒÉ“'“:V8 £vìØ¡‹/¾8èxQQ‘>ýôSíÞ½Û†QÁFÕ××+???è¸÷X]]é!Á F8qBn·;èxÇŽ%IMMM¦‡ƒØ„î0õõõª¯¯·{ ùùù!ÿDß„wß}WÇŽ³ìû»té¢&õ;srrÔÜÜtüĉ¾Ï‘¾©¯¯×ÕzËŒ9R/¼ð‚ñy÷Ýw5hÐ ËŸÝ»w'5BòóóC.³òþ!lAAAÒ~/8â õõõzKÒ’ε{0q*“4ÛîA¤!î«5¸¯Öà¾ZƒûjdÜ×÷%=ñúëa÷5XÉ;óaÕ;¼/é ¿ß'Y õ‡?üA§Õ»C¶mÛ¦ÜÜ\#Qû t®¤v"N¹Jݱ;÷ÕÜWkp_­Á}µFºÜW'ÿ·CCCƒ5`ÀegŸùOÏI“&©ªªJëׯ×ĉ%IGŽÑ/ùK?^íÛ··sȰ€¸¬ZµJ¾åT/½ô’jkk%I%%%êÚµ«æÍ›§ÊÊJíÛ·O}ûö•t&@Š‹‹5cÆ ½ýöÛêÞ½»~üãËãñèᇶíçâ²lÙ2íß¿_’är¹´aí_¿^.—KÓ¦MS×®]år¹Z-³’¤¬¬,mÚ´I<ð€V®\©¦¦& >\•••Ißðç!@—½{÷F<§¼¼\åååAÇÏ:ë,=ýôÓzúé§­Œ÷€ÄèøñãZ´h‘ÆŒ£nݺ)++Km^sòäI}éK_RVV––-[fh¤öi÷Ò÷ÕÜWkp_­Á}µ÷0‰Ñáǵxñb½óÎ;*,,”¤ iÅ@?úÑôþûïGunªe÷ÒÔ(»¦FÙ=€45ÊQv M²{@"@bTPP ††íÝ»WO<ñDÄó:¤Å‹kÞ¼yF8£:(//O’äñx"ž?oÞ<]pÁºõÖ[­àxlB·PMM*++µeË»‡83 ñx<ºë®»tóÍ7ë’K.±{8€#0b‘gŸ}Vo½õ–Ö¯_o÷PÇ`Äü±æÏŸ¯9sæ¨OŸ>vp f@,°téR}úH’´k×®VQ1tèPýö·¿Õ‡~è;vúôi­]»V]»vUÿþýÍý 0ŽÄløðáš¼¿&B q,ÁŠQ‡”——'Iòx<1]{ÞyçI’Ú·oŸôq’Ë?>ÉC€Xìƒ>СC‡´}ûv͘1C½zõÒŒ3ì  áâƒ(€Ä±Ëb}úôÑgŸ}&I:ÿüóõú믫OŸ>6 N¤È`)$†‹ýæ7¿ÑË/¿¬eË–éĉºúê«uàÀ»‡!šâà ˆÅFŽ)Iºæšktà 7hðàÁzä‘GTVVfóÈ ³Å³œŠø€Ä þù*,,TMMM›ç•IÊ 86RÒ(‹Æ™€ýH†jI¯;nÃ8€TF€ÖÔÔ¤¬¬¶W¾Í–4ÀÌp í%+<˜ý€tæGÛ#©ÄøH€ÔÅ œ>}ZG :^SS£·ÞzK_ýêWmd✇8¬ZµJª««“$½ôÒKª­­•$•””¨¥¥Eçž{®n¾ùf}éK_Rnn®þö·¿©¼¼\½{÷Öüùóí>d✉‰Ã²eË´ÿ~I’ËåÒ† ´~ýz¹\.M›6Mùùùš5k–^{í5UUU©©©Içž{®fΜ©ï}ï{êÕ«—Í?¤7ö{€s qØ»woÄs–/_n`$€@Aññï’ž³c$€PØH!ãÃÿïÛ €´6>ÂýsØÿÉG€R^Äøˆt` HimÅGóŒ3…û`HY‘â#Ô¯Ï ‡åW` ’¢¶ŽÌ#@)'ÖøùK±À ¥ÄU&ªªÓÄVLj°H±ÆG¨_"BØÿÖáMèÇ‹ô˜ÝPË®&}ºÎ“>]×ê3wyˆ p¬xÂ#’ øx®õ?2ûÖ"@ŽÔ*>â À™ ϵý1 ù€ãøâ# 3þ"-½bö¬G€%T|$ã‘–^Ìà)Xǰ3>˜ý3˜8B`|Xöærf>ÀVÌ€lge|ðÈ]p`«pñê-汊vß˯À`›¶âÃ+Ññaé8°E4ñ±A‚ŽE+Ú¥WÌ~€YlB)>¼ááýõmPU§‰‘_,³HsŸ—š‡Zð½;$-Iþ÷"³10*–øXW7©Õ±h÷…´šýh#>˜ýó€1ñÄG`„øŸH=ÀˆxâCϸ[ýóMˆm_³à8ÀrÑÆÇººIAñ!þ燊ÞûÎF€,K|øxã#àŸ£IÌ~€Cñ,€ebŽox<õùuw&LÄØ‹€%Ž `?tvÅG[û?ˆp–`’Ê?>¼á!%?>&hCÔçà iÆ+¾ÍæÉ^vå·øg!@IS|Øï!àDì$ÌÎø˜ôéºä|À'Î|œ‹ÄÍIñÁÐ 5°—Hñ‘ÔÍæ·7Çy!Ài@Ì¢Ž;–\}þ,6 €3± GÇÀñ˜D%š·›[ ª’û…ã˜D䄸¤Ð&'ÆÇmÄ;@ ± VBñQÿrë/ËkÙ8}àe:8)©ñx,š¹óó¿þ^ïþÀÙâR K°A’±"> m €Vˆ€•€‘øhkùñiHbæ`0‘6ŸöÈp¶Ï|Hgf?ˆÈd0ÇÄÇçˆHd¨hâÃ'ñjù•ß¾â2(ÚøXW7Éú™Ï—^IÄd2Œ-ñ8ûâ‰WÄd2ˆg>¼K¯$â2¶øµ÷#įˆÈ Ùv`=G<íJjóq»ñ™€HsŽŠÏ…{â•$âÒiÌöøð.¿Šöq»Ä¤=Òñp"ÒPBñ‘ !âËø€ÌF€@šIè çRâ³aâ£Íw}ˆøRQss³æÎ«‚‚uêÔIÅÅÅÚ¼ysÔ×oÞ¼YW^y¥Î:ë,uíÚUÆ ÓÚµk-1œ€€4Ó£v½ìŽçˆ UMŸ>]Ë—/×Ô©SµråJµk×NãÆÓ–-["^[^^®k®¹Fn·[?øÁ´téR]qÅ:pà€‘ÃN<†ÒDÌññŒÛȲ+âHO555Z³f–.]ª{ï½W’4uêT ùäy<ËÇ g @ ÅÅÉšý >€Œ´cÇ 4H;wnu¼¨¨H’´sçΰ×nÞ¼Y\p6nܨsÎ9G]»vU=ôÐC"€%XÂ’ñÎ~´^Äžêë땟ŸtÜ{¬®®.ìµï¾û®²³³5sæLÍ;WC† Ѻuëôè£êÔ©SzüñÇ-7ìG€@Šrò̇tæq»Ä¾šššäv/çìØ±£ïóp¼K®–,Y¢x@’4aÂ}øá‡úᨠͬ }° RPRã#žÙ8ã@úÈÉÉQsssÐñ'Nø>oëZ—Ë¥[n¹¥Õñ›o¾YMMMm.ßBêcRŒ“g>ÚÚó!1ûXesΕz¯ÓÙ }Ç_x_[_x¿Õ±O?:)éHÈóóóóC.³ª¯¯—$„ý½ ôÞ{ï©W¯^­ŽçååI’Ž=ËБbH!IXg?ˆ m]v˹ºì–s[ÛûæQ-üÊ«!Ï:t¨ª««uìØ1uéÒÅw|Û¶m’¤Â°¿×°aôgÏ8p@_üâ}ǽAÓ³gϸ8K° E0óÀI&Mš¤Ó§O«¬¬Ìw¬¹¹Yååå*..VŸ>}$I Úµk—N:å;鍊n’$ýô§?õkiiQyy¹ºwﮯ|å+†~ ØH–ÄG,³Ä€Ã‡×äÉ“5þ|:tHýû÷WEE…jkkU^^î;oÞ¼yª¬¬Ô¾}ûÔ·o_IÒ 7ܠѣGë?øŽ9¢‹.ºH/¾ø¢¶lÙ¢²²2µoßÞ®  àpNœùðßl.@¦ª¬¬ÔÂ… µzõj=zTC† ÑÆ5bÄß9.—K.—+èÚ_|QßûÞ÷´fÍ=ûì³ºà‚ ôüóÏmLGú!@ÀÁ,‹hg?ˆmp»Ý*--UiiiØsÊËË[͈xåææjùòåZ¾|¹•C„±ÊÒ™oXDsñH"f@ÀâŽXFˆÿ¬H˜=þxÏ 8LBñ‘ȾÀ iã%ƒ^îàUÌ~ÚÄ,pÛâ#P„øðÎ~ø0ûˆs|ø³!>B-½bö W|$ûq»Rìñ@Œ°™ãâ#@›ñÁÒ+@Œ°Q´ñÑJf?¤èâƒåW€h `“XâÃÒMçmÄG¤'^+lJñôÄ+‰¥W€¸ `X¤øðs|ø¿L0’â#Òì˯ÑâE„`ˆ/<¤6ã#îw}˜Šf? ` HJ|´ÅÆø`ö f@ÀbI‹dìûxχĻ>f12³áfC–^’€°H4ññiWRrö}Ä!…‰–_bÅ HŽ?®E‹i̘1êÖ­›²²²TQQÑêÇ£gŸ}V×_½úöí«Î;ë /Ôc=¦æææ0ß ]¤r|°ô `%$‡ÖâÅ‹õÎ;侮°P’är¹ZsüøqÍœ9S|ð¾ùÍoê‡?ü¡†®E‹iìØ±v €!I‹Hò£øÿ%w õ’A¯X–^1ûˆK°âPPP ††åååé7ÞPQQQÐ9n·[üãU\ü¯ÿ¹í¶ÛÔ¯_?-Z´H¯¼òŠFmrØ 02óáÏ!þ³!¡Â$àiWþâÙ÷A|âÅ H:tè ¼¼v!@ khh$õèÑÃæ‘H¦À·›Kãß7B]zE|,Â,ÃJKKõ…/|} @‰%>|á!Yóž@Q,½ B|,D€ôøãë•W^Ñýשk×®v@82>–^ùÇGÄÙâ`1–`²fÍ-\¸P·ß~»î¸ã»‡ R!>üùÇG›{?€dbÄ€ßýîwš6mš®»î:=õTäÿÒ(“”pl¤¤QŒ @|ãÃ’âÃO¨}aßùböƒøZ«–ôzÀ±ã6ŒHeˆÅ¶mÛ¦ &høðáZ»v­²²"O:Í–4Àú¡ˆ“ãã£}± >€`£ü‚{$• ºX‚e¡üãºöÚkuþùçkãÆr»c|ÉÇI•øðÏìñ° 3 qZµj•UWW'Iz饗T[[+I*))‘ËåÒ5×\£ÆÆFÍ™3GÿýßÿÝêú„|OçŠ+>B½ÝÜ@|Ä´ô*ñ°§eË–iÿþý’$—Ë¥ 6hýúõr¹\š6mšZZZtàÀ¹\.Í›7/èúéÓ§ @ 1õ/‡~‹y8â#j~³ÄÀjHœöîÝñœ––#`5cñ‹Ë®¤øf?°mHJ|DZråÑÌ‚´m½í<$f?† F¸øð†‡”äøˆFñˆÙ€“ð,ÁÖøw<Êøˆú…ƒÌ~lÀ °<>bõâŠ@‘^:€ Ì€€#3ùcãÚU€¶âƒw~œˆ_xHaãÃRñá/lèÙÿ8 Œ(·K|œ*-ä½÷ÞÓ®]»Ô£G)++x¢çoû›6lØ ‡zȆp’Xâ#éo7÷Ɔ7DÚš ó¸]é_³{>ˆ€Ó¤Õ¬––MŸ>]Ôøñãu饗jРAúõ¯tî_þò=üðÃ6Œ€“´Zre:>ü…Z–•à¾âàDi eeeª¬¬ÔŒ3ô«_ýJ?ùÉOäv»5nÜ8=þøãAç{<F À)Bí÷ˆϸ[ÇÇSJ<>B‰cßË®© ­–`•••i„ úéOê;öo|CßùÎwô½ï}OÔ“O>iã8…‘ÍæñŠrßG¬ñAxœ ­dÏž=úæ7¿ÙêX‡TVV¦jÞ¼y:|ø°žþy›FÀ ¢ØtN|RIZHçÎõñLJüìPÏž=uûí·kìØ±š8qbÈó¤·HññIWV‡Gû>ü…ÚtN|RAZÈàÁƒõÛßþV÷Ýw_ÈϧOŸ®³Ï>[7ß|³¶nÝ*—Ëex„ìm|„Ýln2>DÚtN|™í5}M;õŤïQí•ôjÒ¿™-­6¡ßpà ڼy³þñ´yÎo~óµoßžMè@I¹øˆaßñH%i52sæL9Ryyyª­­U=Ô©S§ ó®¸â ýå/QuuµùA0.æøˆ5<¢y‡G[ÜtîC|R@ZÍ€ääähðàÁêÞ½»úõë§_|1ì¹[·nÕÌ™3 Ž€ŒÅG¼ÚˆŸxE\äû IDAT|RDZH,Nž<É ÍYõ/ÇG¬1ÒÆž)ôS¯Ân:ÿñpº´Z‚õÑGé£>òíí8räˆjkkƒÎ;zô¨Ö¬Y£üü|ÓC`HÜñMxDú<š¥X¡â#ÂÒ«HO¼">© ­dÅŠzøá‡}ÿüÝï~WßýîwÞ¿xñbÃ`˜%ñ‘èR+qć¿¶Þr€Ó¥U€\uÕUÊÍÍ•$Í™3G·Ür‹†Úê—Ë¥ÜÜ\ 6LÆ ³c˜,”ôøˆ'<Úš‰þxâ ¥U€\vÙeºì²Ë$IŸ|ò‰&Nœ¨ /¼ÐæQ0ŲeWÉE|xg?xâ ]¥U€øûþ÷¿o÷dY|ÎdD3#xM á!1óHoi 2ÇØb™›õð‹À µìŠø @ʲ}ÉU¤§]ÉØ÷€Hm¶ÇG$Ä!1 å8:>¢|ÊñÈT€”’ÔøðîáˆæÅшqÖC">™‡2ÚŠ„ÞïíÛËÛ’„%WñH€”*>šõH&
 /)ñaExHÁñÇ~‰ødž‚ÀÑŒÅG¢Ùl.…ŽÂÎŽu|˜^r%$€à8 ÅG"áÍÓ°bˆ–\Œà(qLJ•3^Ä #@8†|´ù‚A—ÅS°8‚câ#Ô÷$ 3 lç˜øÜÿaáfs‰ød&€­1†‡D|-€mIœõˆ"!@Ø"R|„}Á Uñ‘ଇD| €q©á!D‹`ÔØbµzÇ‡ä øH0<$â€HƤS|†‡D| €ŽdÏzHÄm @X.®ø0ñ˜ÝdÏzHÄ ,• ñ‘”ðˆ¢@€°L¸øhõŽÉ1ñ×r+©UxHÄm!@$ÿcv¥ÔŒxf=$â€HI•êñoxHÄÑ @$MªÅG¤Y€ä#@$E*dz˜“e÷¤¾˜ãã)96>Üåa­b¯ñ Ó577kîܹ*((P§NT\\¬Í›7Çü=³fÍRVV–ÆoÁ(á4Ì€HH¨øðÌ®">$ëâ#ÌÛÍ£ Ìz@XÓ§O׺uëtÏ=÷hàÀ*//׸qãôÚk¯éòË/ê;¶oß®ŠŠ uìØQ.—Ëâà qsD|„šõ|ñj³9K® q555Z³f–.]ª{ï½W’4uêT  ’œœ577?qâ„ïópî¾ûn]~ùåš0a‚eãƒs "Š:>ü_0(Ù‰ÌzHÄ€Ôóêáÿ'Õ MìK^\#½¸¶õ±? {z~~~ÈeVõõõ’¤‚‚‚×½úê«úÍo~£õë×kß¾}¾ã§NÒ§Ÿ~ªýû÷«[·nêÒ¥Kì?R M©ÉšõˆìÆ›Îüåïo;¤1—†<}èСª®®Ö±cÇZŶmÛ$I………!¯«­­•$}ýë_ú¬®®N_üâµbÅ •””ÄóS  Â[¬o7—œ±†‡D|@,&Mš¤¥K—ª¬¬L÷ÝwŸ¤3oF///Wqq±ï X jllÔ€”­Ñ£GëÅ_lõ]G³gÏV¿~ýôàƒjðàÁƘC€)•â#ÑðˆˆÕðáÃ5yòdÍŸ?_‡RÿþýUQQ¡ÚÚZ•—ÿëÿÏ›7O•••Ú·oŸúöí«sÏ=Wçž{nÐ÷Ý}÷ÝêÕ«—®¿þz“?l@€’Vñ!<$ââUYY©… jõêÕ:zô¨† ¢7jĈ¾s\.—\.WÄïŠæ¤€O¨ÇìJ­ã£Õ“®$GÄáöp»Ý*--UiiiØsÊËË[͈„³wïÞd F€”FñAxàh€ôˆöx õ!_0(9+>R d°tŽÂg"@€ åˆøð†‡D|! 9*>2 d˜PñòRëø`ÉHȾðˆ`›,»ÀzÄp f@€4Ö*<$éßC¿ãC">€¦ÂÍzH©„©‹ÒL¨YÉ™ñÁ¬™‡ÒHBñaèƒÌzÙ …‡”6ñAx^ Å¥k|¤'HQ!ÃC">€£ @ J(>ü7›KŽŠÂ€ôG€)&á%W’3âƒð #ñ&t … Õ1¤ˆ”ˆh^0øy|d&f@€@|€tÁ à` ?éÊJĈ8PØðbÛ›Ï̂ܩ3³ ùc#Ï‚xã"’ñø¤+â q8~ü¸JKKµmÛ6ÕÔÔ¨±±QåååúÆ7¾Ñ꼚š=ûì³Ú¶m›þú׿êôéÓjii±iÔpº6£Cò…‡Ç̇7B¼¢ Œpü6›KĈ‡Ã‡kñâÅ:ï¼óTXX¨êêj¹\® ó6mÚ¤Ÿþô§2dˆú÷ï¯wß}׆ÑÂé"†‡”X|øó΂ÄâÎ0lj$jhhP^^žÞxã …<ï[ßú–æÏŸ/·Û­ï|ç;Ú½{·á‘ÂÉb )Áø\ŠJ¸ØüžÏùÇG¸ À‡:(//O’äñxžç=ð—HxHIÜpMlxùE‡ñâA€†DRÄY)øðŸ‰t^Þðˆ;0 žY)ÉñI”Ñ!…yÌ®D|€ˆÀb±<ÝÊ_¸ýR‚ñáÿD¬6¢C ñâC€Š'>,Ùï(†Ù©uxH¡ãƒðÑ @¨LRnÀ±‘’F™ ÍË]rå'TtHáÃC">d¦jI¯;nÃ8€TF€8ÐlIì6>„‡e|D¹t*Z …‡D|È8£ü‚{$• º É’!÷{ø¿É< Rè=^á! vHœV­Z¥ÆÆFÕÕÕI’^zé%ÕÖÖJ’JJJÔµkWíß¿_«W¯–$mß¾]’ôØcÉãñ¨_¿~ú÷oã¿H‘’b¨÷{xƒÃûÁ;ýŽÇ!ÑÌxDñâC€ÄiÙ²eÚ¿¿$ÉåriÆ Z¿~½\.—¦M›¦®]»jïÞ½z衇|ç¸\.-\¸P’4jÔ($ÍÄ÷{Ƈÿ¯ïTÜO´’â ‰øñ#@â´wïÞˆçŒ5J---F»YþK®¼ÁQÿò™¿çm}Z…‡D|Ë @”LLJWP„H­â#šðœñˆ`ˆ ™á¯ }!Š?<$âÒΆÒ6wäóbU×!ù߉ŒG€m1îóŒxŸzÍK½Â…‡D|{ @‰ÆG¨Yd>r7¡/âF€!ÅG‚³Ròâ#Ò»<ü… ‰ø¶ @€‰Ä‡£Íèð">€MÀO4ña÷¬GTO´ ô\èÃÄ0>)> uu“Ân$o‹7>Ú|y`(a¢Ã‹øv @Yëê&µúu´nÖ#š å‘À.2^<ñˬGšõxÆý¯¿‡‰ˆ³l$i€AƉæƒI‹ox„à!±ÄÁR‚ŒËÛÍ#ñFƒˆxƒÂ"·7ÿë‚Ïg?Ïm3>f=ˆêdŒdƇ¿¨BDòŇÿÒ«Xö{ dÙ=À„Xã#ð‰SáÞ:îo‚6øþòšXPÕ*8ˆé˜AÚKÖ̇(„Úâ/pV$܆sö{€LC€ ­%îòð/ Œ6FC„Íæ Ó H[Víù¸<+Tø‡‡ÿ5ÄÈ4ÒR²â£­YpÚ ’Hû=î¤S³±µø™Š§`!mXOÄJÚ÷ 1‚´àÄ™@ì÷ @LÄG´{A¢š-ù<>‰¤4“3IYŠE|€ G€ %E³ÉÞÏÞjàC€ åÄÇ,‹‘çÂD|€LG€ ¥$áÎIæÒªPˆ€!@2’¡Î9Dˆ€˜ p¼á!EU&†|`¨kcyŠU(„@Û¤.oø…ˆ7 üC$šøˆzöƒøHÇ ;óè9͆DóÞ–\˜—e÷€P¢Ž¯q.0Üå1ÆÇs¡¿ß‹øˆ3 p”˜ÃÃ_„™dÎxx±!@à …‡¿0ÓõQ">bG€ÀVI !"$âù1">âC€À6–ćWˆ'd…ü<Ä@ügix œ I <$â QŒ1þŒ‰ðH–³-<Dt$ˤZxÖãE„°„Óããå?ÿbÓÜܬ¹s窠 @:uRqq±6oÞñºW^yE3gÎÔ Aƒ”››«þýûkÖ¬Yjhh00jØ$ãƒÀ ù¦OŸ®uëÖéž{îÑÀU^^®qãÆéµ×^Óå—_öº¹s窱±Q“'OÖÀõÞ{ïiÕªUÚ¸q£vîÜ©^½zü)`‚¤rR|X§¦¦FkÖ¬ÑÒ¥Kuï½÷J’¦NªÁƒkΜ9Ú²eKØkW¬X¡#F´:6fÌ9R«V­ÒâÅ‹-;ìÅ,$MÒããßÛ ?Ç’*¬WUU¥ììlÍž=ÛwÌívë¶ÛnÓÖ­[uðàÁ°×Ƈ$}õ«_U·nÝ´k×.KÆ ç`I‘Ôøˆ#:$¢“vìØ¡Aƒ©sçέŽI’vîÜ©>}úDý}Ÿ|ò‰Ž;¦=z$uœpÎÇ{;ˆ̪¯¯W~~~Ðqﱺºº˜¾oÅŠ:yò¤nºé¦¤ŒÎÅ,$…@|`^SS“ÜnwÐñŽ;ú>Öïÿ{=üðú馛4jÔ¨d E€ iL‡{=°ONNŽš››ƒŽŸ8qÂ÷y4víÚ¥ &袋.Ò3Ï<“Ô1™X‚…”Dxàg¤ö ~GÓ gþòçù(ìéùùù!—YÕ××K’ "þ–ï¿ÿ¾®¾új}öÙÚ´i“rssc3R‚¤zùOÖ?Š—øÀ9·œùËßÉ7¥#_ yúСCU]]­cÇŽ©K—.¾ãÛ¶m“$¶ùÛ}ðÁºúê«uòäI½öÚk¼û#ƒ° Ige 8äI“túôi•••ùŽ577«¼¼\ÅÅž'`544h×®]:uê”ï¼ãÇkܸqª¯¯×¦M›Ô¿ãã‡}˜%’=Bxà,Ç×äÉ“5þ|:tHýû÷WEE…jkkU^^î;oÞ¼yª¬¬Ô¾}ûÔ·o_IÒ­·Þª?ÿùÏš9s¦þþ÷¿ëïÿ»ïü.]ºè†n0þóÀ–IV„8See¥.\¨Õ«WëèÑ£2dˆ6nÜØêEƒ.—K.—«ÕuùË_är¹ô³ŸýL?ûÙÏZ}Ö¯_?$Í °ñ@úr»Ý*--UiiiØsÊËË[͈HÒÞ½{­Œ= Œ!@C€0†` ÀAÆ[ÿ6sd&­ø‡!€d#@àClÀj|^þSð‹y‘ ’‰7¡#Ñ«0À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@btüøq-Z´HcÆŒQ·nÝ”••¥ŠŠŠçþãÿИ1cÔ¥KuïÞ]Ó¦MÓ‘#G p$F‡ÖâÅ‹õÎ;侮°P’är¹‚Î;pà€®¸â ýóŸÿÔ~ðÝÿýúŸÿù]uÕU:yò¤éaŽm÷RMAA”——§7ÞxCEEE!Ï{üñÇÕÔÔ¤;vèœsΑ$ >\W]u•ž}öYÍš5Ëä°G`$F:tP^^ž$Éãñ„=oݺuºîºë|ñ!I£GÖ Aƒ´víZËÇ 8bƒêðáÃ6lXÐgEEEÚ±c‡ £ìG€X ¾¾^’”ŸŸôY~~¾>üðCö # hjj’$¹Ýî Ï:vìØê “ ÈÉÉ‘$577}vâĉV癄§`YÀ»ôÊ»Ë_}}½ºwï®öíÛ‡½¾LRnÀ±‘’F%m„ Õ’^8v܆q©Œ±@Ÿ>}Ô³gOýùÏú¬¦¦Æ÷þpfK`ÑØ@üF)ø÷H*1> u±Ë"'NÔÆuàÀß±W^yEï¾û®&OžlãÈû0‡U«V©±±Quuu’¤—^zIµµµ’¤’’uíÚU ,Ð/ùK}ík_ÓÝwß­cÇŽé‰'žÐE]¤3fØ9|nŽl‘ô|ñ ¾™Ž‰Ã²eË´ÿ~I’ËåÒ† ´~ýz¹\.M›6M]»vÕ9眣×_]÷Þ{¯æÍ›'·Û­ë®»NË–-ksÿÎ8ìÝ»7ªó¾ô¥/é׿þµÅ£R{@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1âÒÜܬ¹s窠 @:uRqq±6oÞÕµš={¶zöì©Î;ëÊ+¯ÔŽ;,1œ€@\¦OŸ®åË—kêÔ©Z¹r¥Úµk§qãÆiË–-m^×ÒÒ¢k¯½V/¼ð‚JJJTZZªC‡iÔ¨QÚ³g¡ÑÃ.’ªÚj»¦ªí@šª¶{iªÚj»Âjjj´fÍýÇü‡–,Y¢Ûo¿]¯¾úªÎ;ï<Í™3§Ík«ªª´uëVUTTháÂ…úÖ·¾¥êêjµk×N‹-2ôÀ.’êu»¦¸¯Öà¾Zƒûj î«5¸¯ñ«ªªRvv¶fÏží;æv»uÛm·iëÖ­:xð`›×öîÝ[_ÿú×}Çzôè¡)S¦èW¿ú•Nž]ºt :–ŸŸr©T}}½$©   ì÷%r-Râ ùùùzá…|ÿÇRC~~¾-rã7J’.¸àuêÔɒߣK—.8p`Ðñ¡C‡ªººZÇŽk(Û¶m“$†ýÎÂÂBýáÇã‘Ëåjumnn® ”ÄŸNãòx<»€ÔRSS£ââb=ñĺï¾û$y3úàÁƒÕ³gOýñ”$544¨±±Q Pvö™?û^»v­n¾ùfýò—¿Ôĉ%IGŽÑÀ5vìXýüç?·ç‡‚ârÓM7iÆ ºçž{Ô¿UTThûöízå•W4bÄIgÞ–^YY©}ûö©oß¾’μ }Ĉzë­·ôÀ¨{÷îúñ¬èÏþsȤ–` .•••Z¸p¡V¯^­£GjÈ!Ú¸q£/>$ÉårµZf%IYYYÚ´i“xà­\¹RMMM>|¸*++‰ À cxc$ŬY³”••¥ñãÇG}ÍÚµkuÙe—©[·n:ûì³uÉ%—è¹çž³p”©'žû*Ik֬ѥ—^ªÎ;ëì³ÏÖå—_®×^{Í¢Q¦žxï«×UW]¥¬¬,Ýu×]IYê‹õÞ®_¿^7Ýt“Î?ÿ|åææê‚ .Ðý÷߯>úÈ⑦–xþ7{ðàAM™2EgŸ}¶¾ð…/èÆoÔÞ½{-¥óýþ÷¿×õ×_¯¾}û*''G½zõÒèÑ£õòË/Gýü» H{@°íÛ·«¢¢B;v ZãNYY™î¼óN]~ùåzôÑG%ùêÓ¦MÓ‘#GôÝï~×Ê!§„xî«$}ÿûß×âÅ‹5yòdÍœ9SŸ}ö™þþ÷¿‡|Þz&Š÷¾z­_¿^úÓŸ$)®ëÓY<÷öŽ;îPŸ>}4mÚ4õíÛWýë_µjÕ*mÚ´Io¾ù¦ï­È™,žûúÉ'Ÿèk_ûšŽ;¦|PÙÙÙZ¾|¹FŽ©;wª[·nÚ™Þ}÷]eggë›ßü¦z÷î­?üPÏ=÷œ®½öZ­^½Z·Þzk›×óï. I<@ZZZ<—^z©çöÛo÷ôë×Ï3~üø¨®»ì²Ë<çœsŽç³Ï>ó;uê”gÀ€ž!C†X5Ü”ï}ݺu«'++˳bÅ ‹G˜šâ½¯^MMMž~ýúy}ôQËåòÜu×]4õÄ{o_ýõ c•••—Ëåyæ™g’=Ì”ï}]²d‰Çåry¶oßî;¶k×.Ovv¶gÁ‚V 7%}úé§žÞ½{{®¸âŠˆçòï. 9X‚…„¬^½Zo¿ý¶}ôQybxžANNŽÎ:ë,µoßÞw¬]»vêÞ½»e/RJ%ñÞ×+V(??_wß}·<>ùä G™z⽯^¥¥¥’ä{Þ=þ%Þ{{ÅWó¾Xí_oxÎ\ñÞתª* >\_ùÊW|ÇþíßþM£GÖÚµk­jÊÊÉÉQ=Zýû¨­sùw8q;vì˜æÎ« ¨W¯^1]{ÿý÷k÷îÝz衇´gϽ÷Þ{Z¼x±Þ|óMÍ™3Ç¢§†Dîë+¯¼¢aÆiÅŠêÙ³§ºvíª‚‚=ùä“6u$r_%©¶¶VK–,Ñ’%KX Ñ{¨¡¡A’Ô£G„¿+•Å{_[ZZô׿þUÆ ú¬¨¨Hï½÷žŽ?žÌ¡¦œ?þXGŽÑ®]»´`ÁíÞ½;ª?Xàß]@r°q{ä‘G”››«{î¹'ækÇŒ£_|Q7Ýt“om§N´nݺ¸7§‹xïëÑ£GõÁhË–-zõÕWõýï_}ûöÕÏ~ö3Ýu×]jß¾½fÏžmѨ/‘ÿ½Jgf=.¾øbM™2%É#K}‰ÞÛ@K–,Qvv¶&Mš””ïKUñÞ×?üPŸ}ö™òóóƒ>ó«««Ëèw-L™2E¿Èòc¦ VIDATýío%I¹¹¹Z»v­ÆŽñ:þÝ$y<577Gu®÷O~wïÞ­•+Wê¿øETÓÖþð‡?hòäÉ1b„fΜ©S§N©¬¬L·Þz«~÷»ßé’K.‰ù;Æô}õ.·úàƒ´fÍMžl˦)ꢧi]\6r“¹¡Û¢F6¦ÄpR#X Å&˜[…ac°rCÚ„i¤ 4¶ŠbXl«l›u%HëÅöpcY­ûÛÑÅ›µ²®¿{Õ÷ úçw~çôý}¹ÜÃÇópG¼ïXŠÞÞîÛo¿U]]>øàÍœ9ó¡l÷õÚµk’¤¨¨¨»ÿÖœ±ìAúzË'Ÿ|¢õë×ëÂ… úꫯT\\¬––-Z´è3Î]€¡yôáäСCÆqœûúçv»1Æ,Y²ÄäçççÉ'Ÿ¼ï$çÍ›g²²²ÆÍœ9s̳Ï>œ……˜í¾^ºtÉ8Žc¢¢¢ŒÏç Ø¶eËã8޹xñbð"¶û:88h\.—YµjUÀøx|=ßC9rÄDGG›W_}Õܸq#(k ¡ú.غuë°m555ÆqÓÙٜŅЃôõNŒËå2³gϾçÿ9Î]€ \222´sçÎûš›œœ¬ƒªµµUûöíSWW—Ûõë×uõêUuww+>>^?þøáñxÔÑÑ¡M›6ŒGDDhÉ’%ª©©Ñõë×1¶?ž¶û¯¨¨(ÅÇÇ{UgRR’¤›·i¥¤¤<ÐzÂ…í¾îÚµKª­­ Ø_ºyyww·’’’ó€+ ¶{;T{{»^{í5effª©©I“&ŸGCõ]ÐÓÓ3lÛ­±iÓ¦xáf¤}½›ÈÈH-[¶Lü±<¦L™rÇyåÜXꄱ§¾¾þžmª®®¾ëþ}}}Æq³aÆaÛÖ®]kÇ1^¯w4—–¶¯ÆóÜsÏ™ÈÈÈ€WDcLee¥qÇôôôŒæÂÒÃöµªªêžû777[\QøÆgÖcÎ;g’““MzzºùóÏ?-TÞ‚Ñ×… šìììaã‹-2³fÍ­ÒǬ÷ßß8Žc._¾|×9œ»€àqŒy€wQbB»xñ¢Nž<0fŒQii©¦OŸ®M›6ÉåriÆŒ’n¾=èêÕ«JOO÷ÏOKKSll¬~ûí7ÿýÍW®\QFF†&Ož¬?þøÃÞ‚ÂD0úZ]]­²²2ÕÖÖjõêÕ’$¯×«yóæùû=ѪmÛ¶iãÆrGO?ý´šššTXXh£Ü1c$}ŽŽÖÁƒUQQ¡ºº:õ÷÷+++K¸çÛ]&š‘ô#3’Þž>}ZŽãøäq¨¼¼<È#éëc=¦Ã‡«¬¬L[·n•ÏçS~~¾¶mÛ6aÇ$½ýöÛÚ³g¶oß.Ç£„„åææjÆ Z°`AÀ\Î]Àèá kÆÏkF„=k ¬!€°†Àk ¬!€°†Àk `ÑÙ³gUQQ¡ùóçkòäÉš6mš ô믿†º4¬pŒ1&ÔEÀDQ^^®ºº:-_¾\ÙÙÙòx<úúë¯ÕÕÕ¥ï¿ÿ^/¿ür¨K`T@À¢'N(==]±±±þ±¿ÿþ[š3gŽŽ=Âê}Ü‚AÐÝÝ­wÞyGO=õ”bcc5uêT½ñÆêî`Á‚€ð!IñññÊÍÍÕ™3gl– @HD„º~ùåµµµ©¤¤D))):þ¼vìØ¡¼¼ýýý*((P¿š››‡=ÀxÄ3 ëÖ­ÓÎ;UVV¦œœÅÅÅI’Š‹‹åóù†ÍPQQ‘~ÿýwµ¶¶jîܹ¶K $ MMMZµj•>ûì3ÿ˜×ëÕ?ÿü3l®ÏçÓ[o½¥C‡iïÞ½zá…l– @H@ """†]éøòË/ïxõcݺuÚ»w¯jkkõúë¯Û*€°@€ (((PCCƒââ┑‘¡¶¶6ýøãJHHÐЗ nß¾];vìPNNŽbbbÔØØpœ¢¢"žŒk‚êêj=òÈ#Ú½{·¼^¯rssõÃ?hñâÅrÇ?¯½½]ŽãèØ±cjkk 8†ã8zñÅ•––f»|¬áw@XÃkxXC` €5Ö@XC` €5Ö@XC` €5Ö@XC` €5ÿAéÙ4Zâ‡pIEND®B`‚lmfit-0.9.2/doc/_images/model_fit3b.png0000644000032700003100000007232312603520205021165 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝ{œSõÿñwæ¥(#HDÁ"u(ÔE;0¬k¡v‹Š Ômav-e¬]»õR©,ºrQ3Zµµ[ú«íŒZKiëÐ*Zï¥e%/­±E§€r@e@å2“ä÷ÇI˜d&'“ë9Iæõ|<|ˆ9¹|rÁœw¾ßÏ÷ë…B!€Jì.@ïA`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@X†À2–!€° €e ,C`Ë@RôÑGéÖ[oÕ\ Aƒ©¤¤D=ôPÂÛ´··«ªªJ%%%ºçž{,ªÈ?ùý~-^¼XÿûßuÖYgI’GÂÛüð‡?Ôû￟Ôu€bFIÑСCµk×.mÞ¼Y =^¿µµU‹/ÖM7ÝdAu@~#€¤¨OŸ>:á„$I¡P¨ÇëßtÓMúìg?«ÿüÏÿÌui@Þ+³»€bæõzõðÃ륗^²» /0’#¡PH×^{­fÍš¥ñãÇÛ]É‘¦¦&ýõ¯Uss³Ý¥yƒ’û÷ï×Í7ß,—Ë¥aÆ%}»={öè™gžÑˆ#Ô¯_¿V€tø@ÕÕÕÝŽ-[¶LË–-Ó믿®1cÆÄ1b„$ã}Úi§YQ*l6wî\Ý{ï½v—‹ð~÷.¼ß½ ïwïñöÛoëòË/?zÞ†Ô@ràºë®ÓŒ3b.Û½{·®ºê*Õ××ë’K.‰û¡L»:í´Ó4vìX+J…Í***x¯{ÞïÞ…÷»wáýî}˜.Ÿ>HxàíÛ·O;vì$=þøãzï½÷$áãì³ÏÖÙgŸs›ÈT¬êêjMŸ>ÝÒz€|AIÃ=÷Ü£­[·J’‡V­Z¥ææf9Íž=[ °¹B ?@Ò°yóæ”o3băÁT6"lTWWgw °ïwïÂûÝ»ð~É#€6â «wáýî]x¿{Þo y–!€° €e ,C`˰!HŠßï—Ëå–×ëSGG©Êʪ©©’Ûí’Óé´»<‚zÔÚÚª‰g©¥e™$·$‡¤ |>¯Ö®)g%!@R˜‚z4~C8|L>$ã4b‚ZZ–ÊårÛWŠŽßïW}ýº*  ™Œ`0ÚVü=*+ H )~ †™`0ÚVü=ª©©’´Áäè†ðñâABú2Á`´­ø1zäv»´víLµ´,•4^Æ ePÒUV.”Û½ÒÞ³ˆ„Ìd:‚Áh[ñcôÈétÊãY©9sšUU5M£FMWUÕ4Í™Ó\t'äô d&ÓŒ|m‹ŒŠýû¿_gËãF@@RœN§ì.#çèAÈL¦#ù8Ú;*6KÒ9–×PL ä‰ÞºÓx¾=ït~ÁÏ·ç`§šš*ù|dŒ uµAcÆŒP}ý<Ó×*2Úf¼žKº\ǞѶØQ±–?~±!€zkßA>>ïTÁÏÇç`§D#§œ2Oë×—jË–»”èµÊ·Ñ¶Ä£bH= äÞÚwÏ;Õ„l<‡bZu+Q¿PmíÙáð‘?ïw2Š!UŒ€zkßA>>ïT{2}Å8‚b6‚Q]=UÆkOþ~Ί!UŒ€2]9¨PAÏÇ=R]ñ+Óç£@¹’ïw2Š!UŒ€2Y9¨AÏ×=RéAÈô9äã(P®äëûÝ“ØQ±r»Ë)xŒ€`!³‘Š1cNUº{ò/èùºçC*2}…:*ŽB}¿£GÅ>ýéëí.§ð…7^}õդЫ¯¾jw)€4´¶¶†æÌ¹1TUuQhÔ¨i¡ªª‹BsæÜjmm …B¡ÐîÝ»C••“C’'$CR($B’'4bÄ¿„FŒ8/$­ _9¶.TY9ùè}ÄSUuQÔýuý'ªªºÈª— e­­­á×$õç/2}V¼=}6­R ï7çk™c YÌ4¨Ø‘Šc¤bË–Íšõ MšÔœòÞvü‚ž­}/òqχTeúzÚ7#Þ¨@*¯>MÑËôµb¿•"awB'5®9sn lÄû{ÝÑ_ŸsñK·Õ# ‰Fr åWì|’ê¨@ª¯2ŸÍBíÏ]º£Bœ¯e޲Àh$N´¼¨/g#¹œW¯gå_þå«áfÜÂë9ÉG©®º•jÏO2ŸÍBÍ^§ÖÖVÕÖÎTSÓeòùVkÓ¦Çåó=¡¦¦ËT[;3ïW+tLÁ ’ ¹Z(Õ}+’e6uGú¢âO’2]µ)“)6VLÏÉÕc¤²êVª«fårŠ^6_žî+«…EcÕªçÔÖö¿Š72fòi'öbC ’ éÌõOF®ú(Ì{VŽQ.Nh3éU°¢Ï!_z)R ¹ ¾Ù|=’¹¯ÄÏ{¯¶mÛ¡êꩦA(ö1|’jM–>ÎKvÏC'æ@áJfž½U+ekÅ#óÞ’ÜôœdÒ«Ë>‡ÈëYQqfHzÉö^Šd{~rUw6ï7•û2Þ»CRϽ!±Ÿ‘i&eü3jÔ4Óš9_Ë= dÛíReåIÓ”ü’n”4YååßÖºuoÊårë‰'~”ô\ÿtdsn»ù/ιé9IÜ«pªV­zÎt§÷Ln›HôëÙÖ6L‰5·¦—"™žŸØºŸ•t‹¤u2>› ÿÛž¢çJú±³ùz¤z_æÏ»ARÏ=I±Ÿ‘ȨP<ù»!bѰ;¡‰ [ä×ÜQ£Î•—6k«õ¤"›#æ¿8·†qþ¿n#9#FüKhÖ¬k޾˜ÐTV^dRwÏ¿peö‹vr¿Ž'÷z¦ÿ«y6uIk I7„¤I¡òò³B£F})4räçÃǣ߳CÆèÕCãÒËæë‘ü}µ† 8+êïÕÿuyÞU&ŸÓØ¡ØÏH׿'É¿>œ¯eŽ2¯q6ìP{ûÏ•‹×èÇ;t¨C{÷î–T¦Áƒ‡¨o_iûöÝÊ´Q7¼gÅ)éF¹P}úô?ú¼Ï8ãmØPª_ýê?eüÒÜ}(2ë_^þ”â÷*DÿÂûzvïsð‡ïÿ9Ié7Ç6>禗"UÑ=?ëÖ}O›7oW{{£¤µ·;´iS¼…œ2^G£Öaæ}Þ©4’góõHî¾Z%ÍÒþý?Öþýã%í‘t—¤ù’vKzDÒ&“¤èž˜ØÏˆKÒLŸ«OKúIŸÉ¶¶ šš¼Z³f†&L8[o¾ù£¯Meåñ ŸzF MV¯ûx7Jª“´\ÒxµµE{Š²Õ žxu­»µnÝobNPëëçiË–»”èd_’éfŒííçȘÂ6±K%]W?Š„ Ÿ¤Rýò—›5|øñ’Ö˘Æcœ´'”™5ÇNC‹LÊî"ÉJ.ìF^›}JæsÐý3lœàû|¯êÑG¿¤OúMœ8æhÉæë‘Ü}u ŸNIwKš'éËáË“ B±Ú)i¥‡ÔSµeKP[¶t ÔÈ>H€4år•¨x'›GŽ|¤––;Â7OÆ v×Çî£t~•6Y8ð8UTü·¢GYÌV×J~™T³ë¸U^>)|BxŽD=Ÿèpa„¾#G‚z÷ÝgTVV¯ŽŽŸKjŽzm2[‚ÖüWóä–;ÎÖ2µÉ…Ý®Á«çÏAìg8úö joߣM›îÒ¦Mad÷ђ{m_QüÏKôg-QzZGŽ|¤êê©:t¨Cåå«ÕÞþ ŒPê”1šòŠâ‡ÔI÷¨ûß±3>/ôŒèu’=)L_³é@Æ/ö[¶lV}ý<Ó“ÐäN6Í»J#]ÅÿU:¹‘¯^ 5kÌ›å“_Öì:Cô©O ×yç5Ëë]r48pXÁ`äõlPlðê|m;:†¨¼ü ƒ‘éF™M2ÿÕ|‰¤#ª¨ø@3fLŽÈÒ]¦6^üøãC&Óú¢Ãnôk“ÜèDìg8úö]ÃHdjW½:G©R{=ÒymC¡ríßkþ¬™…—?¨¬ì½ûn“:G0vKr©¼ü¿4|øõí+mÛvÈä1jdÄî&t¢© ro÷îÝáÞÄMÉÉ\ϼñ9ºÁ5õ&hóFòi&N®A<¹ÇK¿‰=™åa“]B6öõ¿!ª¦èÛ›½¶_LÐlœZS~¢¥“{j¸OgA€Øç½+êù%³$rôŸ#ŸƒÄK>Ç~†£ooV{kHªMéó•Îk¹¯ä—‚Žn"ŸêÓçô8øñ_óÇ0û;ÆùZ¦ y„¹—ìIa2×Kn•¨’z¼hÉt%:‘ߪ¨83é}@b/ý=>’yÍÒ{ý£O¦­dïuJîD<‘x«vÍœùß¡#Î % –Ɇ-ó×0™U¢]§ûIyäsyN}úœU£YIîóåóùRÞ¦§=kÌ?/7†ÌÃÅ“¡‘#?ßå¹™¿þæaöp¾–)H!€@î%{R˜øzÆ XâÍÓR; Š–ÜÈJö–Û}¼ô—VMf´ ûRªñA÷×?r2ýzš½G]ON³³m´d‚”ùûhþZš‡ÁdÂî…I}Ö’]J­ödGSeþ™z2TV6:düý‹¾|uørOÒÏÁü1f‡âÿýæ|-Sô€z•dû̯×*©NmmË%*cžü󨻝uî¹ßЦM©5Aw_R6"2×}±:{5â=vÏ Àæ—zÏDtÏB(TÞ­i½ûò¼‘¥T¿§òò¢VZêìèþúG/#é0{¢_§èfã 1bž&L¨•×ëÓ¹ç~CÒÇ ;TRÒWRߤ›Ä“i¸/+“R}-cŸw2«Du.‰ì÷ïS[[¼UÄ¤è¾ØÆóJuöOœõ©}ÌdÈlééè%‡½Þ%1½X.×*¹Ý?—×»4f¡†wßmLé9˜=Ƙ1#´~ýÍÚ²åNÅö–¼™òó@, W1?¹—¢OJ̯×uYÐHãìRÅkÂMöñ¢%»ÿÆ¡CåÚ»÷ÛJf…ªDb/µ¥UÍæ;›Ö].w—åy#K©JííMœØÜíä4¹Öar§¤ª¨˜¢aÆ%اÄ/#@FN0“k—’ ²'Ž6y%³ÌÃ`¢§Œ°+IµµfË&w†ÒØðÝüýº¤'%=¨Ø0Òsíɯ€–:§Ói^º^^]=U5'ÿY6{ŒÎp½$f'žHë© Âî!tb ä^æ= ©ÍëO§9™æÜlŠ}¼Hãsש-ñ;³^óih‰ïטޖx \÷×¶û}æ¶á>÷1ñ‚=O%ë©§"J4ÅÏxŒø»Ž'®=éf¹[Gæý?ñp¾–9Há ¹—ìI¡ùõ¾˜Ò‰Vº«(%s"™í×%òx§žú¥p˸PeåE ;™ñtNN“yŸR=Áï^kn®É¼™„Ád%S©=™ æ½CÝñÍôô¼9_ËS°½J¢9åÑS—Ì®·}ûjk )Ù)Uf÷Ó}:P÷é?éÌ™ïÊl/—ëŠðüùØË׬iJiúV2S‘Ò™†–ìû”ÌuÌkM“ÂÄ»ÄwNwJ4}Èì½yâ‰}o²5Í.šù?)zjR¢ÚS»ÏÎÍ3ÙŒ1½:¢{‡<úÿè>Ý/Z2{· ìN@…èÃ? -Z´(4eÊ”ÐÀC‡#ÔÔÔs`0jll M›6-ô©O}*Ô¿ÿÐé§ŸZ²dIèСCqï—D ù/)U™ÞOº£!æ+=µRPf+e¾ZXj+ve"›# ¡PúïK(”»U£’‘‹)~æ÷¹:kŸ5+ž[2/9_Ë$ ›7o9ŽÐˆ#B“'O9ŽÐC=s„Ghâĉ¡eË–…|ðÁÐW\*-- Mž<9îýò€ü—­“·ô6äKí.½=R æ±;dlXç un˜Ý©D©ÊfHök±6”åbŠ_¼ûLv3ÀlÊä¹%ó÷’óµÌ@ÒpøðáÐîÝ»C¡P(ôÊ+¯Ä GŽ y<žn·½ýöÛC‡#ôüóÏw;Æ C6NÞ’í‹ÈäD5ù]¤ÓŸ¯Ÿü Ùß‹#UÝk4)[Œò¥g"× íy&ó÷’óµÌÑ’†>}úè„N$…B¡¸×)//ׄ ÝçA^z饺õÖ[õ·¿ýMçŸ~NëôÌl~¢ùé©Ì7“l_D&Ë›š÷g¤ßûЕy¯ÌnµµÕF_Ssñƒ6lZVz\R¯V©DÁà•”ôUG‡´wïn» ѤIsrÖ«ì~4…®Ðžg:ýJHÄb»ví’$ <ØæJÉ4œfûÄ3"ÙFàLNàÌO¦²{’/=]mmùwâi#ŸcƒÉñáÚs÷Yè-'º…ö<“ý{‰Ì”Ø]@oãv»UQQ¡ /¼ÐîR ×‹Ý½9r‚»{s®¸Ý.UV.䑱z’Âÿö„WQrIŠ>‹'ñ œq²´!꿤y’¶‡7žìœdeR·¬þ,to¢ωn¡=Ïdÿ^"3 -[¶L/¼ð‚î¼óN 0Àîr ×3¦779:>|<7"ÓæÌiVUÕ45]UUÓ4gNs̯활ÀÅžLí’±“öe’ž•t‹¤uÊÕIV¡xZýYè-'º…ö<“ý{‰Ì0Ë"+W®Ô÷¾÷=]y啺ꪫì. ûç§'ÓK’ì~f÷éyXµê9µµý¯:§–¬”1íl©¤#ª¨ø@3fLÎh‰lÕm‡l~’é+JvŸ“BWˆÏ3=^HŒbçž{N³gÏÖÅ_¬åË—÷xý¹s窢¢"沺º:ÕÕÕåªD(h©n¶9Œ??Ý/ãÄü-mÙ²KÕÕS“º¯\Éô.r2åõNµ´)¼ÐN<³Õ«¨¯hÍšš0ál½ùæ?2Úü±Ðò ýŠ+´bÅŠ˜ËÚÚÚlª¦ˆØ½ W¡{ùå—ã.ñ~ýúPÿþýCçž{®é„,ë©Ëd³½îKÜFö«ÈÝÆ}vIvÙßÞ*÷LFï‹R˜Ÿ!8_Ë= 9ôöÛokêÔ©:õÔSµzõjõíÛ×î’ è˜7ÿQq.ïl*î>?½AÆ”¤Ôï+ßZS¸Õ²Õ«`ÞKÒ éògȦ`¥éо}û´cÇIÒã?®÷Þ{O’tÝu×ÉáphÊ”)Ú·oŸ\.—žx≘Û92î>!€Ô˜ï“Ñóþ]§ ½ûî{:r$½ûÊw,/šX¶¦Œ™÷’þgÈHšî¹çmݺU’äp8´jÕ*577ËáphöìÙ ƒÚ¶m›‡nºé¦n·Ÿ3g² ÓÍö¢ç§=]›6åvã>»ZS¸r»Áda†ÒÙ°0CIÓæÍ›{¼N0ìñ:€Ìds³=«6î³C¡5…*ó‘¦Âý Ù¹a'Š= €‚f¾ßD•¤õ&·Š?å(›÷•"¿ð¿õÖ“úûß×[o=©ÆÆN³È¼—d°r½ùc®Ø¹a'ŠPÐÌOø&«¬¬^©l¶—ÍûBïd¶‘ݬYÇhĈ›U(òE³sÃN'¦` Z¢©E.תðÞK“šr”ÍûBïeÖKÒÙGQXSàìÞ°ÅÇ …ÌÖäƒÅ6nܨqãÆéÕW_ÕØ±cí.Š M´@zª«§Êç[-³þ•ªªizë­'­.Ë6œ¯eŽ@Ñ£‰HK8#Ûè ¿ß¯úúyª®žªÑ£§«ºzªêëçÉï÷'¼M´@ú²µI#Á  d2Ša¾Y¡Ä&p@b,áŒl#€ Bì(FDì(†Ù&r4Ñ™ÉÆ&@S°!“¥@;7Œ'¿7€bC„LF1Ì7”h¢k@!“Q šh Ð(™,J-ä  ¸Ý.­];S--Keô‚”ÈÅØÅX™ðö4Ñ@~ € £P €‚‘Ì(†ßï‡_—â"¤@ €ŠF&›¬Á*X€¢»YadÉÞØÍ öbPâMµÚ¾}·Œ‘xÆËë]be‰€8 €¼.êÐÞ½»%•iðà!êÛW:ãŒS´aÃ[Ú²å.EOµ’¦(ÝÍ Ö €òJlÇ’ê$-—4^mm‘žŽzIw(vOI}dlV/„$Þ¬` z@y%¶ãnIñz:öHªsë*IëMî9ñf…k@yÅëõÉØhP’¢ÿ­TñG9\’JzIÆ”,…ÿí oVèÊrµ€T1 `™döè0ú4"áÂ,hª•SÒ UTLѰaÃØ¬ò`‰d÷è0ú4"áÂ,hD¦ZÅ›†õ͘ño=nX°S°–Hv£OcCøxôŸ£¹$Ý ¦Z@áa` £·ÃlŽSµjÕsòz§êС•—¯V{ûƒê\k‰ŒàR"#h¼«#J4a¯ôæ›Ë˜j„°DloG´VIujk[®¶¶ñáëì–äRyù+6ì$}ðÁ·½ˆ4V4 @–ˆííˆÖ i©b÷ô"é!µ·{4iR3ýPDèX"¶·#šO±á#ÚøðÔ-@± €,áv»TY¹@’G±ãGj–$•„§nŠS°–p:òxV†÷Yr´q|ûöÔÖoj–$ÃS·Å‚°ŒÓéìÖÏQ_?OMMÖ†ðÔ-@±` ÀVæS³ØÓŠ# [™MÍbO(N€íâMÍ'¦`° €e ,C`Ë@X†À2–!€° €eÊì.P|ü~¿\.·¼^Ÿ::JUVPMM•Ün—œN§ÝålÄHŠ>úè#Ýzë­ºà‚ 4hÐ •””衇Š{Ý·ß~[\pŽ=öXüñš={¶öìÙcqÅ`­ÖÖVÕÖÎTSÓeòùVkÓ¦Çåó=¡¦¦ËT[;S~¿_’Rêë空zªFž®êꩪ¯Ÿwô8 81’"¿ß¯Å‹ë”SNÑYg¥5kÖÈápt»Þ¶mÛtÞyçiàÀºãŽ;tàÀÝ}÷ÝúË_þ"¯×«òòrª€Ü›?¿A--Ë$Mˆº´DÒµ´,•ËåÖ]wÍÓĉ³Â×sKrH ÊçójíÚ™òxV2REŠ :T»víÒæÍ›ÕÐÐ`z½eË–éàÁƒzñÅuÍ5×èæ›oÖ¯ýk½ñÆjjj²®`°˜×ë“4Þäèxy½¾.!%ò#NlH'HŠúôé£N8A’ …L¯÷Øcéâ‹/ÖÉ'Ÿ|ô²óÏ?_£FÒ¯ýëœ× véè(Ug¨èªD¥I…@q"€äÀöíÛå÷ûuÎ9çt;ö¹Ï}N¯½öš U€5ÊÊ’Ì~  ª¬,TH'HìܹS’tÒI'u;vÒI'éŸÿü§ÚÛÛ­. ,QSS%iƒÉÑ ª©©J*¤Š$<(IêÛ·o·cŸøÄ'b®ÅÆív©²r$¤`øÒ $*+Êív%RʼnU°r _¿~’¤Ã‡w;vèС˜ë@±q:òxVÊårë¹ç¾­}ûvjРOéüó'Éí6V·r»]Z»v¦ZZ–ÊèyKÒIûôÉO¾­;ÏÑôéÓcî÷‘GQEE…éã._¾\O=õ”éñÓO?]Ë–-KXûå—_®ýû÷›¿êª«4uêTÓãùË_´pá„Áó0ð<:ñ<:ÂóxçwÞ?zFÉÈÔ«ÈT¬h;wîÔñÇŸpÞ¹sçvûËWWW§ºººì 9ât:ÕØØ ‹/¾X¯¼²S?þñm1_èÑ!Åë]¢>úH{÷¾­B™¨V IDATUUÕ9êÓ§Õ€aÅŠZ±bEÌe;vì°©šâá%ZÊ ½òÊ+ª©©QSS“fÏžslÈ!š4i’V®\sùèÑ£5|øp=÷ÜsÝîoãÆ7nœ^}õU;6§µ€.¼ðBõë×OÍÍÍv—YÁùZæèÉ‘Ë.»L«W¯Ö¶mÛŽ^ö /èwÞÑW¾ò+ëƒA•–²¢ S°ÒðÀhß¾}G‡àüq½÷Þ{’¤ë®»N Ђ ô›ßüF“'OÖw¾ó8p@ 3fŒêëëí,, €4ÜsÏ=Úºu«$ÉáphÕªUjnn–ÃáÐìÙ³5`À|òÉúÓŸþ¤ï~÷»ºé¦›Ô·o_]|ñźçž{ö@1 jooW}ýut”ª¬, šš*¹Ý.9N»KXŒ’†Í›7'u½ªª*=ýôÓ9®ò×áÇõì³/éÃçIrËØ|0(ŸÏ«µkgÊãYI€^†@Vøý~Õ×ÏSuõT=]ÕÕSõÆ›ôá‡ÿ*i‚:w>/‘4A--Kår¹í+` F@kmmÕĉ³ÔÒ²LÑ#Ò%ýÚäVãåõ.±ªD@ž €26~C8|Lˆº´DÒ1êùèªD4¨@oÃ,@Ƽ^ŸŒÍ» H2Ûn*¨²²@îŠä% m‘¾wßÝ©ø#U’6˜ÜzƒjjªrW /1 –ؾŸŒ‘Ž®!Ä%i¦¤Å’jeüî”´A•• åv¯´²d@ €ÒÛ÷é˜ÐåZNI7jäÈ…êÓ§—}@X‚z# -FßGdÝÈHÇR½ Ñ#wkݺß6’è¤ÉXÁ*2åÊ)i¥¤fIÓ$MWŸ>gjΜf6Ä €Òb¬`½Â•SRƒ¤'%ýN#G×áÃÛÕÜÜlK}€üD¤ÅXÁ*ñ Wëׯ×Ö­[­, ç €´¸Ý.UV.ä‘Ñï¡ð¿=á®\ *-e³A@'šÐiq:òxVÊårËë]w…«`0HÄ €Òæt:ÕØØ`z<¨¤„Áv@'¾9Ã,@W@Î0 Ð3LÁtÅ· g¾ñohìØ±v—È#4¡r¦¡Á¼AÐ;1À2–!€° €e ,C` 'B¡vïÞ­C‡Ù] @9qøðaxâ‰zì±Çì.G €œ’¤’¾jøVäD$€”––Ú\ Ÿ@9 %@± €œ`  ž2» ä?¿ß/—Ë-¯×§C‡:´wïnIeŸWk×Δdzòha  ÆÅ ÍŸß$Ý-)ògGø%’&¨¥e©\.÷ÑÛ1 ß €„¼^Ÿ¤ñáÿŠþsWãÃ×5 ²³¿G0hÜexsä/ù‹Î=÷\ :T×_½ ¤uëÖéÖ[oÕ«¯¾ªßýîwv—G9Ψ½>–tÙ$½ý=˜‚ˆ‡’#¿úÕ¯täÈ=ùä“:í´Ó$IW^y¥‚Á ~øaµµµ©¢¢Âæ* “ÓéÌê^Œ€âág©éׯŸ$é„Nˆ¹üÄOTii©úôécGY`F@ñð­#W\q…† ¢o|ãzã7ôþûïkåÊ•Z¾|¹®»îº£ŠUYY™œN§ÊËËí.G˜‚•#C‡ÕK/½¤‹.ºHgŸ}öÑËo¹åÝ~ûí6VÖ˜0úè†覵µU'ÎRKË2InIIAù|^­];SÏÊCH `Ð ?Mº™?¿!>&È’ñ•1A--Kår¹{¼¦`â!€ºñz}’Æ›>žS°ñ0 z1³>ǥΑ®JÔÑÑóÈÆ™gž©«®º*›åŠz©D}ååOI )~ ª¬,ÐãýŸþù:ÿüó³Z3 ð16½T¢>öös$yLn¹A55UV”(Bè¥÷y¸U^þ !$¾,(É£ÊÊ…r»]V”(BLÁ€^&Ò÷ñî»;eÞç1DŸúÔpw^³¼Þ%]öéy ^Ì@ ‰íûð)QŸÇ'>Q¦ÆÆk =¦`@/Û÷Q%iƒÉ5éóäz‘ؾ—¤¢Ï`%ô"Æþ‘)WNI+%5Kš&iºúô9Ssæ4ËãɼÏãÀÚ»woF÷(>èEŒý;BQ—8%5HzRÒï4räp566d¥Éüþçtî¹çf|?€âB€^Äèë°¦ï#¨¤„¯@,¾ ðûýª¯Ÿ§uë^Syy½¤—”ë¾@  ÒÒҬݠ8° /¹Ø¥wÝ’öHºKÒ÷T^þ>ýé4q☬ïï  €n Päb—Þ•Œ¾»%IííMœØœ“ý>˜‚ˆ‡o(r±Kïv5>|<û˜‚ˆ‡E.véÝ®JÂdz)X€x Päº/½->ž}LÁÄC¹šš*ù|ÔÙ-»KïF»é¦›tðàÁœÜ7 pñÓ9·Û¥ÊÊ’<ÊõÒ»ÑF­³Î:+'÷ (\Œ€@‘s:òxVÊårËë]¢ŽŽR••TSS•õ¥wè z§Ó™“¥vHS°X†À2–!€° ¿ÿýïõôÓOÛ] ϰ  '~ô£é¸ãŽÓ\`w)€< '€JJøšÄâ›@@¥¥¥v—È3@NƒA  '˜‚ˆ‡o@N0ˆ‡È F@ñðÍȉê¸ã޳» @ža@N<óÌ3v—ÈCŒ€° €e ,C`HŽmܸQÓ§O×ñǯþýûëŒ3ÎÐøC»ËlÁ*X9ôì³ÏjÚ´i7nœ-Z¤cŽ9Fï¾û®¶oßnwi€- 9²ÿ~Íž=[Ó¦MÓoû[»ËòS°rä—¿ü¥Z[[µtéRIÒG}¤`0hsUz¿ß¯úúyª®žªÑ£§«ºzªêëçÉï÷[òø3fÌPcc£%(yþùç5`À½ÿþû=z´Ž=öXUTTèÛßþ¶>lwyŠ\kk«jkgª©é2ù|«µiÓãòùžPSÓeª­iIY¿~½Þÿýœ? °@räwÞQGG‡.½ôR]xá…jnnÖW\¡åË—«¾¾Þîò¹ùóÔÒ²LÒIŽð¥%’&¨¥e©\.wÎk*--Íùã = 9òá‡êã?Öÿ÷ë¾ûî“$]zé¥:räˆ~ò“ŸèöÛo×È‘#m®@±òz}’ÌBÆxy½Kr^C0$€ºa$Gúõë'Iª««‹¹<òßëׯ·¼&½GGG©:G>º* Ï­@  ’¾f±É‘¡C‡ÊçóiÈ!1—Ÿp ’¤>øÀô¶sçÎUEEEÌeuuuÝ ˜)+ H )~ †çS°º+VhÅŠ1—µµµÙTMñ €äÈ9眣çŸ^Û¶mÓg>ó™£—ïØ±C’ät:Mo{ï½÷jìØ±9¯@ñª©©’Ï·AFHWTSS•󘂠ÐÅûxãÆ7nœMÆÆsä«_ýª$ég?ûYÌå>ø ÊËË5iÒ$ªÐ[¸Ý.UV.ä‘Y<(É£ÊÊ…r»]9¯)X€xÉ‘³Î:KW\q…~þóŸ«££CçwžÖ¬Y£ßþö·Z°`N<ñD»KPÄœN§<ž•r¹Üòz—¨££TeeÕÔTÉí^™p6[¾õ­oéÌ3ÏÌùã $‡–/_®áÇ«±±Q«V­Òˆ#tß}÷éºë®³»4EÊï÷‡C‡¯KèpY:¢Ý{ï½–> 0@r¨¬¬L‹-Ò¢E‹ì.@/ÐÚÚª‰g…÷ÿpËh@ÊçójíÚ™òx¬ù &ç@‘ȇÍè Š„±ùàx“£ãÃǰŠD>l>@O P$:7ŒÇšÍè Š„±¹à“£Öl>@O P$òaóÁˆ`0¨]»véСC–=& 0@ HD6œ3§YUUÓ4jÔtUUMÓœ9Í–/ÁÛÖÖ¦“N:IO>ù¤e ( ìEÄétª±±Áî2ý&%%üΈÅ7 ë"¤´”•·±€ç÷ûår¹åõúÔÑQª²²€jjªäv»lÛù<4zP €® PÀZ[[5qâ¬ðènû€åóyµvíLË{?"˜‚0Ã7°ùóÂác‚:7!,‘4A--Kår¹m©‹)X3(`^¯OÒx“£ãÃÇ­Ç,€°ŽŽRuŽ|tU>n=¦`ÌЬ¬, )¤ø!$>n½aÆéOú“ÆŒcËãò?M@«©©’´Áäè†ðqëõë×OçwžŽ;î8[¿ PÀÜn—*+HòH †/ Jò¨²r¡Ün—}ÅS° €9Ny<+Ãû€,鲈=Kð œÓéTccƒÝe¦`° €e ,CdÝöíÛõƒü@|ðÝ¥ò u---úÎw¾#¿ßow)€}ºÕ%ÈS~¿?¼ô®¯ËÒ»®ä—ÞÝ¿ßÒ)§ÿ¾üòøabà@iÄéÒK¥Ûn“^zIúá¥k¯5n÷³ŸIcÆdôœ€J²8¢(‹96"pTkk«&Nœ¥––e’Ü’’‚òù¼Z»v¦<ž$öÿظQúêW¥ÖV#H|ó›RŸ>ÉàpÓ°Î=WÚ°Aºâ iÜ8iáBé{ß“JKÓz^@@¥iÞPÜøyÊbüãõæ›oÚ]€<1~C8|L>$ãÍÔÒ²T.—;ñüèGRm­tÜqF¹úêäÃGWãÇ÷qóÍÒ’%ÒŒÒG¥uWÁ`ˆ‹6òz}’Æ›>G($-X ]sÑDþÒKÒÈ‘™Ô·¯tûíÒOHü£ôùÏK»v¥|7LÁ˜áÛlÔÑQªÎ‘®JÂÇ»†ñ;îî¹GúÁŒàM^(­]+íÜiŒŒ´´¤ts¦`Ì@ÀFeeIf«¡ÃÇ£/ JW^)=ð€ô“ŸHßýnîŠ;ë,£/äŸ0–éݾ=é›2 `†6ª©©’´Áäè†ðñ(.—ÔÔ$=ü°±dn®|²ôÜsRG‡ô¥/I{ö$u3¦`Ìðí6r»]ª¬\ É#)¾4(É£ÊÊ…r»]Wþá)W÷ßo,±k•áå矗ü~cjÖ=Þä¶ÛnÓ}÷ÝgAq€BÃ2¼`#§Ó)gex%]ö‰Z‚÷÷¿7ú>¾û]c¿«%=û¬Ñ”>{¶ôØc wNÿìg?kaq€BB›9N566˜_áõ×¥º:éË_–\/×Î:KúÅ/¤éÓez-²¯@Áb ä³¶6éßÿ]úìg¥GI8ê`‰iÓ¤ÿùéÖ[¥Ç··@A"€@¾ …ŒÉ÷ì‘~ó©_?»+2Ür‹té¥FÊßÿnw5€C€|uÿýRs³ÔØ(UVÚ]M§’c®¡C©aGŽØ] €@ ½ü²4ožÑt>c†ÝÕtwì±Ò/)ýõ¯Ò÷¾gw5€B€|sð ôµ¯MßwÞiw5æÆŽ•–.5ã_|Ñîj‚ùææ›¥-[ŒiNååvW“Ø 7H“'KóîÝ{ôâÇ{LÏ>û¬…òòÉÿhô~Üq‡tÚivWÓ³’顇¤?ŽÙŸäþûï×£>jca€|E€|±¿T_olö÷ïØ]MòN>ÙM+VH«WK’€Jì^2—øv€|qÓMÆ4¦ÆFû÷ûHÕå—K\ }ë[Òþý *--µ»*@*°o8(R´|¹ÑÔýéOÛ]Mêé'?16Nœ?_Á`ˆ‹vko—þ뿤sΑ®¾ÚîjÒ7|¸t×]Òòå:kß>¦`ââÛìv÷ÝÒÛoKÿïÿI…>jð­oIçž«›Þ{O}ì®— `§–éöÛ¥¹s}? ]I‰ô¿ÿ«á‡ëü7Þ°»@"€€]B!éšk¤!C¤Ûn³»šì9ã =vòɺà•W¤­[í®g `—'žž~Zº÷^©»«Éª™>Ÿú8Òõ×Û] Ï@À‡'ç_ú’té¥vW“}Çk«ßýNzê)»«äØà£ÛnSÇÖ­šÚrH£?{‰ª«§ª¾~žü~¿Ý¥eÏW¾"}ñ‹Æ¦ŠGŽØ] O”Ù]¿ß/—Ë-¯×§ŽŽR••TSS%·Û%§Ó©=¯¾ªþî}?T§§Z‘ä”ÏçÕÚµ3åñ¬”Óé´ûidÎá0FAÎçzÕlù»È­ulœ{/¯×gY½–¸ýv),®•¾i#€@áa¼ÉÑMýãô·>ôˆf›\§D¾aWN§tË-Ò,ùŠ,\RF€,2ƒ#î±ú½Æü@wŸ8ZAÓÿýUVÈY}¶¹î:é”S¤o´»€Í EFxu»¼\Gt—ækm§_ø¼¤ &÷°A55U¹,Ñ]t‘}ôÑÎ úö•¤?üAzæû ØŽYd„‡èpá—4OWélªw5ßáÔ¡CkĈù’<’‚áë%yTY¹Pn·Ë⪳ÏãñhÇŽ±Θ!}þóÒw¿+utØSÀvÈ"·Û¥ÊÊ2ÂÅ.I35@St«v«QßçÿèW¿úš¤€fÍú¥ªª¦iԨ骪š¦9sš‹f Þ@  ÒÒ.½,‡ôýïKo¿-ýô§ö°û€@9Ny<+år¹µjÕsjkû_ݬÇÕOµH·+²"Ö–- š4©Yo½õ¤Ý%çD0ì@$iìXéë_—-’êê¤ã޳¾8€­€,s:jllаaÃô) ÓõºOwëFíÔШkár»Q€JJL¾b–.•”–,±¶(@^ €@Žtt”j©nÑ>§Íër´—Ûw VÄСÒüùÒ~ ýãÖ°rdLû?õ5ýB‹t»>Ò1]Žér»a¦S°"n¸ÁØdáBëŠääB(¤Û¾§·ôiý\WĹBq,·k&á,Iúä'¥Å‹¥_ýJzùeë ØŽ¹ðä“:m×ûº÷ÄcÐË*Öåvã—RË IDAT …Bºîºëtúé§'¾â׿.q†±9a¨ûÞ)€âD€lëè\.é _Ðo<¯9sšUU5M§ž:EcUQq­¤~š4iŽêëçÉï÷Û]qV9Ýÿýª­­M|ÅÒRÉí–þügé‰'¬)`;–á€lûÙÏŒ½.~ñ 9O8A jmmÕĉ³ÔÖ¶\Òxµµ9$åóyµvíÌ¢Ùÿ#eS¦H_ü¢Ñ”~ÑER_KPì€l:p@ºõVék_3ö¼›?¿A--Ë$Mä_jì ÒÒ²T.—Û†bó€ÃaŒ‚üýïÒƒÚ] ÀȦ†iß¾n{\{~Œ7¹Qqï Ò£³Ï–.¿ÜnØ] Ç -Û·Kwß-Í+ sÈØóÃÿvE¾'HR–,‘ÚÚŒ(jÈ–E‹¤þý¥›nêvÈØóÃl¥§âÞ$)ÇK×_/Ýs´c‡ÝÕrˆYðÏ5küùϵ´ì®ùšª«§Æ¬peìù±ÁäÖŽ'HÒn¾Yê×Ïr€¢E€ µ¶¶ê¯]¦wõ)ݶë5mÚô¸|¾'ÔÔt™jkgÊï÷Ëív©²r$Š}O@  ;vèðáéݰ¢ÂÒ_ÿš›â¶#€äÐË/¿¬k®¹FÕÕÕ:æ˜ctÊ)§hæÌ™zçwì. @=|ùÕ:ïà?5_÷«C}—Ʈpåt:åñ¬<º'ȨQÓUU5Msæ4ݼ­­­6l˜^xá…Ôoü­oI§žjì£(J,¸žCwÝu—<¾ò•¯h̘1Ú¹s§xà;VëׯWuuµÝ%ÈT  i~Fku®~§Kã\a¼¼^cE,§Ó©ÆÆâo²Œ~–’’4~ãêÓGºãé+_‘^xA:ÿü,W°$‡n¸á}îsŸSYÔÆZ3gÎÔgœ¡;ï¼S<òˆÕÈŠ‡ÖèÃ4[w+þ*W½o…«H)-Móy_v™T[+Í›'½òŠ”Nä-þ¯žCµµµ1áC’FŽ©ªª*ýío³©*YóñÇÒ-·è©'É«“+õ¾®‚A£Ç%íâpË¿öšôè£Y¬   …BÚ½{·lw)2õýïK{öèÿ6U¬pÕ)£)X'J_þ²´p¡tð`–*äˆÅ}ôQíØ±C3gδ»™Ø½[ºë.éškäúñ²^³ÂU22ž‚qçÒÎÒ~…ªù‚b¡¿ýíoºúê«5qâD}ýë_·»™¸í6©¼\Z¸°W­p•ŒŒ§`E|æ3ƪXË–I{öd¡2@>  Ý"»víÒÔ©S5pà@ýö·¿•ïY@Axë-é§?•ÜniÐ I½g…«dde VÄ¢EÒÃK‹K÷ߟùýlG±@[[›.¼ðBíßÿÿÛ»óø¨ê³ÿÿ¯ÉFXÃYe eQˆ¨¸V¥‰(j¤¥JP¼õVQ«„–Z[´Dý¹ ÷OÜÀQ\*ÔjÕjE„MP#²dOÖ„$“Ï÷“e&™I&ÉÌ9“äý|<桜9Ë5gŽò¹æ³\‡X²d ]»v­qÿ»ï¾›¸¸8¯m&L`„ ¡ SDa Ü}7ôíK^j*éiÓÈÊʦ¤$’¨(7g5ŒŒôf×ëá©oß¾,Y²$8KÇÇÃþ`%"wÜýû7üœ""š?>óçÏ÷ÚvðàA‡¢i:\ÆãtMYaa!—\r k×®åóÏ?gĈ~÷]³f Æ cõêÕœqÆ6F)"[´RRÈí5Î|`.[¶<ŒÀZ‚·È"!aF³z2˜#G»ï:ˆ4sj¯5œæ€„Ûí&55•+Vðî»ïÖ˜|ˆH#PT¿ÿ=\|1w±®,ùIeýïêç$-[ÂÃÃÂ…™ét4""Ò@‚B÷Üs‹-"99™}ûöñÆox½?qâD‡"‘zyæغ>ü¬kÓ±z>|©¬~.A2q"Ìžm ÃÊÊ‚†NpÇ( ¡uëÖár¹X´h‹-òzÏår)iLrr¬‰Ð·Þ ƒ•U7÷·˜Dó«~r‘‘V’”/¿ 7ßìtD""RO‚B_~ù%n·›ÒÒÒj¯òUbD¤‘¸ï>ˆŠ‚(«nîo ]ó«~n‹Q£àúëaÆ 8pÀéhDD¤ž”€ˆˆÔfíZëW÷¨Xvתn®êç¶ûÛ߬¹8÷ßït$""ROJ@DDjb Üy' hÅ+“‘‘®êçNèÖÍJ>þïÿ`ýz§£‘zP""R“… aÉxòIkVU?÷oûöí<ýôÓ:t(4˜:Õª’~ÇV‚(""Š&¡‹ˆøSPÓ¦AJ \|qµ·UýÜ· 6p×]wqÕUWÑ®]»à_ &ÆZ‘ìW¿‚ àºë‚  õ€ˆˆøó·¿ÁîÝðøãNGÒ¨”/²¿b.¹ƃ{ï…£GCw :% ""¾lÜh% Ó§[Ã}$`å Hd¨ku<ñìÛ<Ú눈HP)©Ê¸í6èÙÓZòUꤴԚ”ò¤_?HO·z¨6oíµDD$h”€ˆˆTµ`|þ9<û,´lét4Ž-C°Êýáе+Ü~»&¤‹ˆ4š„."ÍV^^éédeeSRIT”›óNO`öç ˆ¼ê*¸ì2§Cl”lëhÕ ž{’“aþ|øÍoBMi% "Ò,åææ’”t[¶<d. ”Û²¯¡ÐµŸÂ?ÿ™NÇØXÙÚðë_Ã5×À]wÁ¥—V‹‘ð¤!X"Ò,MŸþXYò1+ù€Ñ,åyŸéæNî}úMGãkÌZ´hA×®]‰Š²ñ7®§Ÿ¶*¤O›fß5ED¤^”€ˆH³”•• Œ¨øs,¼Ì,%‰ÿcVÙûRW\q{öì¡U«Vö]´[7˜5 ^y¾úʾ늈H)‘f©¤$’òž€ûù½ù/7…á*6oÞNZÚ4òòòœ RêfÊ=nºIµADD˜i–¢¢Ü€µjÒé|Á4fó7²¯€(*ZǼyã5*Õ+ ÉËË#-mƒeÀ€ «D%\DDX= »wÃÿèt4""â‡i–Î:k °‚ò×ñ d0›Ê^‘`$[¶Ì$==°&®•ʼyãÉÎ^ÌÆ‘½Èg¢"9é$xôQ˜=þó§£”€ˆH³”‘‘NB ä&ÙÏïXH11>öQ1Ä×Äu_‰Š8ìŽ;àœs - Žq:©B ˆˆ4Kñññ¬zònîåMˆìÆwœægψ²ù"Õ'®{¡‰ëá""æÎ…œ­Š%"†”€ˆHótø0í3ˆÑ£Y”xåóA,yÀ4`,¶m[IK›Æñãà9qÝ[e¢"a !ž>úÈéhDDăižî¼rsáÕW9sÄ `EÙ¹@*0XŒç„ôíÛ·á¨x*-›Ø.aã–[ %&O¶&¦‹ˆHXP""ÍÏoXCtž}úõ«˜˰ª¢ûžçQ\|fÙ>¾¬(›Ø. ,à’K.q: p¹àå—!&®¿JKŽHDDP""ÍÌ/Ë—S˜6™¿Çõ`À#ï1hÐXÒÓ3X´è9&MzŸ˜˜Oñ?Ï#ƒèè±’òÆl)°Œ„„?‘‘‘nÇG{;wî$++Ëé0,;Ãk¯Á_XC²DDÄqQN Ò”äå呞žAVV6%%‘DE¹9ë¬dd¤ïtxÍ^îöíì;ïb"KºñÛƒßsô`[ ”ìì,–,¹eË™ù7ú›çÑ…OìŹç¾OVÖÃU¾ãúŽË¸Ýn""Âè÷­‹.‚ôt˜1F²VÈÇ( ’ÜÜ\’’®+[¦5køNyã6•eËÔ@uÚ÷—¤TTÄHþÎQÚ–mõ^F·²@¡¯$¤”ØØ(æÎ}̶˜£ÒÒR"#ÃlBþÌ™°|9¤¦Âš5е«Ó‰ˆ4[aô•Hã¦aîå—¹à§uÜÉÓ¬ãt;XËè–(ôMó<v= QQ°`õï©©P\ìl<""ÍX˜ý !Òx©FDpååå‘–6AƒÆ2`@ ƒ%-mZ½ªøç?)¾ùx)¢/p‹Ÿ½¬et½'¤kžG}¸Ýîðë«×ãw`éRøãŽFD¤ÙÒ,‘ ±j@¨FD0s8Û¾ï¾Ã<ެÒÜFwj^å&>>žeË”ÍåÑ<úË!XåF†'ž€»î‚ÁƒaÒ$§#iv”€ˆIms¹FD¸Mž÷ÎVÎ{8[@ó0Žãà¿"ÖÝŽ«ù”"þ?¬áU#}ì\9¼*>>^ó< ,‡`yš:~øn¾úö…óÎs:"‘fE ˆHœuÖ@²³ko܆'&Ï×–ðXÃÕüÍ™AVÖõ_Ä톉é¾?‡sYÆ^ºéXEgb —‹À^µ¢lxÕ‚zÅ+ÞFŽITTÿõârÁsÏÁ–-pÕU°bôïïtT""͇‘°±zõj˜Õ«W;ŠÔCnn®IH8ß@¦·SöÏL“p¾ÉÍÍu:DŸ&Mº×À²²x«¾2ͤI÷õz999e÷i™Rû´¬â>%&&û‰Çz%&&×|‘ÒRc¦N5&"ÂüO÷áUŽÏ5p¯Ë $›˜˜ÁfÒ¤{ý~?Ä+Ô/¿“˜h½ô=ŠH€Ô^k¸0î#i\ÊçLšô>&“˜˜ÂÀÉLšô~X/Ák÷äù@V «ÎæKÃÙž|žy†×κ€¹û ªœ+x øð!ýû÷bîÜÇü~?Zݬ ëÐþñÈχË.ƒC‡œŽHD¤Yã>r‘Ƨ1ΰ{ò| ë4œí¥—àž{˜Ó¾·,XH ó>¯4býûçŸÂ˜1’ÿü'´létT""Mšz@Dš¹÷6ÔQ O½—Â}ýu¸ùfþ=à4nÉ+é˜ÔY]­nÖ œ~:,^ YYV¢"§#iÒ”€ˆ4svÞ $á©×p¶wÞ±–TMKcjDw*{<âÀû@2BLÌi³;A‡Œ ⦅|W_ Ç;‘ˆH“¥!X"Í\FF:K–¤²eKÝV†ª¯@‡WÕi8Ûë¯CZL˜/¼@ñÀ+ñîµ(Ÿ÷aéÓ'%às7ÖÕͤ.» þþw¸òJ7Þ_ñDDB@= "͜ݓçk^Õ§Ï4 ëVýüé§áúë­Þyó 22¨½ªŒÞÌ\v™51ý?ÿäd8rÄéˆDDšõ€ˆÔCS« açäy•Ƈ éÍŠ‘¼ýöo±zbj©Gb üõ¯ðàƒ0mÌšeÕw ¸½ªŒ^wÀívÓ¹sg§C©Ÿ /´†býú×V‘ÂÅ‹¡[7§£i2\Æ?ŠÍÖ¬YðaÃX½z5gœq†£±4µv0yî«l(C 3ÂzÉÝp––6yóÆã;iXƤIïW&I……0e ¼ñ<ú(üá^{çåå1j”ÿaeúŽBkòäÉlذÌÌL§Ci˜uë`ìXˆŒ„?†AƒœŽHDÂ@8µ×+ Á’jrss5*•y󯓽˜?";{óægÔ¨Ôš‡ÃØ(//´´iu®ª ×#Ù»×Z2uáB˜?¿Zò·&KSQZZJDDøëå´Ó¬*é:@R’•„ˆˆHƒiVŒž ïv¹òö½$%]CLLkG{F¼{!2¨u¸N©.Dh´Üí²epíµàvÃ×_Ãðá~Ï×k²4n·›ÈÈ&²\ç󇪧ÂÉêÔvÖ…¨ùþícëÖ]lÜø0vOį*XóTâ¹­ŽÁ¶¥Ð§¼ðç^põÜJ­q~“MrVU.—ÕûqÑEžn- ý ðÔSÖŠY""⟑°±zõj˜Õ«WûÝgÒ¤{ ,3V¶ª¯ë ,õó^¦™4éÞ€cÉÍÍ5“&Ýk¼Ü$&&›/7ýûŸg ³Nç8ðr¥ûå¸×Àå’MLÌ`3iÒ½&77·N÷*77×$$œ_»ìÜn™&!áü:Ÿ/Ü”ßÿ˜˜ÁUîŸçëž*ß·ç½½ÈÄÅ «×½­«œœœ²ïb™G¬nËÿ.0æÁi×Θ¸8cžx˜ÂŠ·k~î­g/11ÙÏûÖ+119„wA<ýðÃæûï¿w: {-YbÌé§[ÛØ±Æ¬YãtD""´×¤fJ@ÂHMt` Ò½&:úäZå¾’‹@ªõiô{7s 4°¡êãžÔõs„;ïý=54¼ÇxÜÇàÞÛrÜã@’ƒ.`ŽÜ}·9c \æÕö}MRâEÕ®Q=‘õ|¹ÍÀ—´HH¹ÝÆÌŸoÌI'YÞWóõׯ”–:™ˆ‘†SB………&==ÝtëÖÍ´lÙÒŒ1Â|öÙg~÷÷÷@{7Hkþ•·_¿Kjl06ô×êº6ú½“–šÓuë¡iʼô¹e‰Eõ¤/:útû×€$À@Ÿ•z5üW¬0æw¿3¥-Z˜£®óLvû½FõÞê=iõé¡ ‰âbc^yŘ“O¶ÀáÃyýucŽs:2 % §$„®»î:mÒÓÓÍ‹/¾h’’’Ltt´ùæ›o|îïïön6ìWÞýZ] ÉIvvv½7áñ µ“½*þ{¹|[KL¼Äc¿àÿúè³èЧ}ëÖ™·Ï<ÏdǶ3ÌŽè–fV§¾¦#ÿ¬õÞIŽ¿ÞžMTÔc KkzÃò¤r»ùøcc.¼Ðz¨ã⌹åc–-S¯ˆH#¦¤á”€„ÈŠ+ŒËå2O<ñDŶÂÂBÓ¿“””äó´wã«a D¨†©òky ¿b;9„*(s‚ríÀz¹ââN3•s@ê~okK¶}VjÚ¯?̬.'›ãIIÆ ¦€óW›±,2•%µ_Ã;ªé¿˜þýÏkrÃò¤ شɘ?ýɘ=¬‡µgOc¦N5櫯Œ)*r::©% §$D¦M›f¢££Íáǽ¶?úè£Æår™;wV;ÆßíÝp÷?$'Fr¨&êòky`¿b‡¾±ßÏ µOð¯©á¿§lžÏ2{¸ÔÀeuº·õK}?+ž÷­ {̵¼mþþÇü„5¾("Ò|Û³¯Ic†iG~•óv ï¡|žŸ5xI´ˆ-JJŒùòKcn¿Ý˜îÝ­·McRRŒyæcÖ®µ†p‰HØRÒpM|Dç¬]»–ÄÄDÚ´iãµ}øðá|ûí·ŸË»æE<°xHRˆ‰9I“ÞhÙÕPÕϤއw}‘ºWU5;ª«û+–·y³õÙ-5:œNqñËeûž€õ,|ìÆªKÜÛ@jfÔô¬¸(¡wéaøøcf÷jÅ?Z§°•nì¥ ¸Ž1|Å æ–®ƒÉß²™ß´;…¹<Ì!⪜)°çѳFHLÌ^œ*B)Ò`‘‘0f Ìž ;vÀÊ•0c:÷ÜC‡B‡pá…ÖŸçÎ…U«àØ1§# Õ ‘={öЭ[·jÛË·íÞ½;àsU¯yÕÈXÆo~ó>sç>Ví8_µŠŠŽËQ>®TÿúÔûð®/òÔl¨O}‰úÖ¤°£ººwÿòÜÐÆãÚé@*PµË ¢£WQ\<ÏãØòg!¯ì˜‡ôÞֶϹCûãÎ^@âéÉNz±Sø‘Sø‘üH«ÍÇaìW´iÝš‹† á߇K˜ß•¬ñüÍYg%‘1‡øøøîmy²U{=—øøxæÎ}Œ¬¬±dg?ç mJ‘ Šˆ€3Ï´^ü#XÉFf&,_ÿ;<ù¤Õ¹çrAB  ýúA¯^ޯέ}DD% !RPP@‹-ªm­x?Pþ ® !áO¤§?GZÚ4¯÷!½Y±â¶m›…gá6ø”¨¨4JJ^ÁjôyŸ+#cA½>oå¯åþ…žüÞzk/EE57ök*ºè¯Ð^}Ž©Ëgh(ÿÅò<¯]ÞË•< D³•ßüæR–,éÖ-¾â³Ži×î ¢¸Vóù:)?ØR7£yŽüRñêÀ:ò 'ˉ6Ñ6ûcà™Š+äÏO `%½øG§#ÜþÜô5 zö$&"‚KK«D•——GZÚ4¶mÛŠï{[žl=„•×þ<:Y„RóöÛoÏ…^èt(KË–pÎ9Ö«ÜÑ£ ßß}gýsñbؾ +÷‹…®]¡S'+éܹòßÛ·‡Ö­½_mÚxÿ¹U+ˆŽ†¨(%2"r.cŒ¿ñÒƒ¦[·n|öÙg^Û³³³úÈëÏÞÉà²ïn‡HrhÕj mÚt¦}ûÄ{¬RRR(**bÉ’U;v оìÛ0@>Ý»åÛo?õ›d~óÍ7ddÔ<¼¯êç¨jÖ¬Y,]ºÔïûgŸ}6Ó§O¯ñ)))5¾ŸžžÎèÑ£ý¾îŸã믿&55•9sæÔx¼4€1°oŸ•ˆ”¿rr`ÿ~kû¾}•ÿžŸÇ~Êd$:ºòUõÏÖÿð<_¾¶Õ´Ýß{áDñÔ,Üâ±Ášü|†-YÂêÕ«9ãŒ3œ§QRHˆtëÖÍç0«={öVÃÕŸ'¦M•ÿ /Žå’¸¶œtÒItêÔÉÚèr±zÍ÷ä tÀDb5È*{`¼›¤½ˆŠÜÉÅ—øhà¸\¥ ÊûÑð<¾el¬5FÙ#Æ„³NgÛçË8|tÐ (oœY@|‡ŽŒ¨œrTÚ¡{÷D«\Çì£{‡äæí¥¤¬An(öc%8Ö¹{ ÿÍÙφ£k¹ôÒsˆeÃúÿr!egËÇš‡¡VcÿCÑQZ¸éÕ†3ÏLll,'öìɺÿÃáÃ'bõ(¸€íeŸá]â;“ïñ Ъ[7>]ñ‡â1DXïäÑîø*FŒÌÏGŽàv»ÉÏ?ÄÑR†veÇ»}ÀùXIÏ`Íí(oTçÓâ':ÐÅ×/8Ü–bZRB%¸(¡/Å\L ;>ò;Ü|‘9ŠcœÊQZ—õ{ü‰cDrŒÐr;ùE%vÁPö,‘”?˘ty L˜@{ #%… Þ¢¢"²³7sàÀaŒq1hÐX¯ÄÁ{¸YBÙ?»S5ihÕj çœs&çŸ~­ ^€˜˜Î9ç̲ko¬H¢;thËsÏ=Yë<( ½sÏ=—ñãÇ;FÓærA|¼õ6¬öýKJ¬y$Gú~;Åž_%%¾·—–ú^ ¢®Û«¾NOÍÂ-ž˜¿kówíòÚv°¸Ø¡hš§gÁ7UÓ¦M3QQQæÐ¡C^ÛgΜYë*X}ûžðÒ¡þ—@ ÍjW5©K @ªª{¯ÂTŸšu¯Â^×: 5¯œe- ›˜x¡ÇÊUžÅ«ë¹tîE&.n˜Ï¥sk»oþ÷Y\V'£ê Zu_M-U´ª?›áµì²ˆˆH}h¬†S"åu@üñŠmåu@Fåó˜òVVkûã©Ôº×ûf¾@ÎU·:5žÄòÆ·˜QIDATÄ }ñ ^ýü'€ž gÒṌrý–“­ï½­^)¼ö„ÇŸ@–,Õ’Ïõ¹"""Á¢¤á”€„е×^[Q }Μ9&))ÉÄÄĘ%K–øÜ¿2YpÃØøÞ:56ë[„ÏWã/5õVӧϹu>WUÞÜš³9~z< MFÿ욪חCmi — fÊ@Ϊ¢—žœ,)""Í“†Szíµ×¸ë®»xýõ×¹óÎ;q»Ý,^¼¸ÆÉ¥Þj¯=á][ÃS:p°Ø‹µÒÐx`1ðf1oÞxFJ%/// ºUù«i±`ÁQ¶m{´Nçò%##„„Xõ-JÀïäê ÚÓ_Ç„f‰]ÿµ2Eøü7þöá»ÎˆÿsùâY|..γÐ^U«=®çY¨Ñó˜Ð`ôßÈöl û»ö@¬š,¾9Ù`¡ ä\þŸÍeeKì¦|=ì()"""Á¥$¬å“³AƒÆ2`@ ƒ%-myyy{x6ÒL&11…“™4é}²²>`þüÙôèуÚ‚úü:î¿ñ¼_ÚË‹ÏmÚô ÷á«1ï†Ï€û°zN!¿Æûod¦²H/UhèPY‹c×®]øOâêvéݨéÙ¬©K]ØQ5&ê*ÚþïGhêƒÔ÷˜`«ëJT ]UÊîU©êúÝ‹ˆˆ4”VÁj8% a¤üNNþ‰‰ Þ­6Ò|5˜kN„ö–-[ý¼}úœm®»îvÛßuiì{7ÊkOÎóR¯u­ÅH²Z“†_á艈Hó¡¤á4+ -Zt!ÖC0ƶ7d¸Ì€)<èoþHN<±çžû~µó†zh‘¯Ïè4ï91ÙXC’|AVÖÃ>†1A}‡ÃÙ­®s$¬…j¾5ièñõêy&"""\J@ÂÒà{¬U†‚3¶ÝW#Í{‚r¾&º×Ö€ Jã/yÁâý™jŸ ïD£:Xê:G¢¡«JiU*©–á [éTÔ Í­q³£˜œ¿‚†ž…ƒÉû3Õ^Ï¢17ªëZ‹£¡µB‚YkDDDDš&% a˳ ^2BLÌiA­¡H7;ŠÉÙ]ÍÚû3Õ^¤17ªëZ‹£¡ § «ˆˆˆ4n‚ÖÊ ê”Ò¿rPǺòË~MóG‚U«Âî!NžŸ)3óÛ*õA*ëYôé3¡ü’|œ-üÕu™#h}P/"""MŸF#ø Ý@'(‡z’¯Cœ¥G.ÌûX“K>DDDDBM= a诽‹3Î8#ä× —á2ÞóÞœ¯¹Ñ˜W¾ gJ@š¹p.㙽õÖ§ù‹Ç¾šu-à'""""Ñ, å‰PŸ>} ‡ž-'+"""J@$¬„KÍp™#"""ÒÔh–„•pY™+\æÇ„›Ê%‹³«Ü“ЬP&"""M +áTÈ.æÇ„“ÜÜ\’’®+«ZŸ5T®”ìì,–,I ÉJm"""Òôh–„•òž‡I“Þ·e)b Üôé•%#©œ§ã½B™ˆˆˆHmÔ"aG=áɪâ/ɰo…2iÜÔ""Qm % "pY¡LDDD7% "ÕF‘`P""Qm MB‘€¨6Šˆˆˆƒ ˜V(‘†Ò,±±±±±±±±±±±±±±±±±±±ùâ‹/˜üü|®¹æN:é$¶lÙ³Ï>ËâÅ‹ùöÛoéÒ¥‹Ó!ŠˆˆˆˆØN= !òÔSO±yóf}ôQ&OžÌÌ™3Y¼x1999<ûì³N‡'abþüùN‡ 6Ò÷ݼèûn^ô}‹N HˆŒ=ºÚ¶sÎ9‡Ž;²aÃ"’p¤¿°š}ßÍ‹¾ïæEß·Hà”€ØèÈ‘#>|˜Î;;Šˆˆˆˆˆ#”€Øè©§ž¢¸¸˜ÔÔT§Cq„&¡ÀÃñãÇÚ766Öçö¯¿þšx€ÔÔTÆŒÄèDDDDD% øÏþÃ\о6l 11±Ú¶+¯¼’SO=•—^zÉï±üøãõV•ƒ²fͧÛèûn^ô}7/ú¾›òvZy»MêÎeŒ1NîrrrøôÓOÚwܸq´k×®âÏ;vìàì³Ï&&&†¥K—Ö¸üî›o¾Éĉ¯ˆˆˆˆ„Öo¼Áoû[§Ãh””€„Ðþýû=z4ùùù|óÍ7$$$Ô¸ÿ¾}ûøôÓOéÓ§-[¶´)J TAAÛ¶mãW¿ú•ª'% !rôèQ.¸à~úé'¾üòK†êtH"""""ŽS"ãÆã£>bòäÉÕ&·mÛ–+®¸Â™ÀDDDDD¤$DúöíËöíÛñu{ûôéÃÿû_¢q–± Šˆˆˆˆˆm”€„ãÇ3}útºwïN«V­9r$Ÿþ¹ÓaI¬\¹’Ûo¿AƒѦMz÷îMjj*›6mr:4±ÉÌ™3‰ˆˆ`È!N‡"!²fÍRRRèÔ©­[·fÈ!Ìž=Ûé°$V­ZÅW\A÷îÝiݺ5§œr =ôêC4rGå/ù —^z);v$""‚W_}Õç¾?þø#—^z)mÛ¶¥S§N\ýõìÛ·Ïæˆ Á &Là½÷Þãî»ï椓Nbîܹ¬\¹’/¿ü’³Ï>Ûéð$ˆ®¾új–-[Æ5×\駞ʞ={xöÙg9räË—/gРAN‡(!´sçN @DD}ûöeýúõN‡$Aö¯ý‹ääd† Fjj*mÚ´aóæÍcøÛßþætxDß}÷ǧ{÷îÜrË-tìØ‘ÌÌLæÍ›GJJ ~ø¡Ó!J=mÛ¶~ýúÑ»woúöíËW_}żyó¸þúë½öÛ¹s'C‡¥C‡L:•ÇóøãÓ«W/²²²ˆŽŽvè4FµbÅ ãr¹ÌOœµk×:UãUû.J{öì¡[·nÕ¶—oÛ½{·Ý!‰ÍÞ|óMvïÞÍÃ?ìt("Ï?ÿ<Û·oçßÿþ·Ó¡HmÚ´‰’’ÆÇM7ÝĬY³øòË/™={6ùùù¼õÖ[N‡(AÔ½{w–.]Êå—_ÎСC+¶ßwß}<øàƒF&vسg€ß6Ü/¿üBqq±æø¡Äa´hÑ¢ÚöØØØŠ÷¥éÚ°a·ÝvIIIÜpà N‡#!°ÿ~î¿ÿ~î¿ÿ~:uêät8BGŽáرcÜzë­<õÔSŒ7Ž¢¢"æÌ™Ãƒ>HÿþýŽR‚%''‡Ë.» €_|‘N:±xñbfΜI—.]¸í¶ÛŽPB©¼}V[N ˆoJ@Ö²eKŸ]ó………ïKÓ´wï^ÆŽK‡X¸p¡æ4Q÷Ýw;wæŽ;îp: ±òÿ_O˜0Ákû„ ˜3gË—/WÒ„<ôÐCìÚµ‹7Ò½{wÀJ8KKK™>}:&L cÇŽG)¡Rþß»Úpõ£9 ëÖ­›ÏaVå]{åÿS“¦åàÁƒ\vÙe:tˆO>ù„®]»:’„À¦M›xñŹãŽ;عs'Û¶mcÛ¶mRTTÄÏ?ÿÌœS‚¤üÿ×]ºtñÚ^>™UßuÓòÍ7ß0tèÐjO'''sìØ1Íálâʇ^•·×<íÙ³‡N:©÷£J@6tèP6nÜÈáǽ¶¯X±€ÓO?݉°$„ INNfóæÍ,^¼˜“O>Ùé$DvíÚEii)S§N¥_¿~¯¬¬,6nÜHß¾}y衇œS‚¤|2êÎ;½¶—ÿÈo{L:ÅÅŸÝnŸÛJJJìIlÔ£GâããY¹reµ÷²²²Ô~«…‡]}õÕ¸Ýn^xá…ŠmÇgîܹŒ9’=z8›Ûí&55•+Vðî»ï2bħC’2d|ð~øaÅëƒ>`РAôîÝ›?üo¼Ñé0%H®½öZ^~ùe¯í/½ôÑÑÑŒ3ƨ$TÎ8ã Ö¬YæM›¼¶ÏŸ?ŸÈÈHN=õT‡"»Œ?žÅ‹{ýèðÅ_°iÓ&®¹æ# ª„RSSùàƒ¸ûî»IHHàÕW_eÕªU|ñÅŒ=Úéð$ˆîºë.žyæ’““}þÏiâĉD%v3f û÷ïç»ï¾s: ²›nº‰W^y…k¯½–sÏ=—¯¾úŠ… 2cÆ ­t×Ĭ_¿ž‘#GÒ®];n¿ýv:vìÈâÅ‹ùä“O˜2e sæÌq:Di€gŸ}–üü|vïÞÍóÏ?ÏUW]UÑ«1uêTÚµkWQ ½}ûöÜyç>|˜Ç{Œ^½z±råJ Áª0püøqþüç?óÆopàÀN;í4zè!.¾øb§C“ ;ÿüóùúë¯}6r¹\>»ó¥é9ÿüóÙ¿?ëׯw: ²’’yäæÎËîÝ»éÓ§·ÝvS§Nu:4 ¬¬,þò—¿™™Iaa!ýúõã†n ==ˆ 2iÌúöíËÏ?ÿ P±HLyÙ­[·Ò«W/²³³ùýïÏ7ß|C‹-;v,O<ñ„†\ÖB ˆˆˆˆˆˆØF鹈ˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØF ˆˆˆˆˆˆØæÿòeÕÁ%!IEND®B`‚lmfit-0.9.2/doc/_images/conf_interval1.png0000644000032700003100000005103512603520205021705 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝ{tUÕÇñß TA‚ (Èr)• @£ãGE”*|´…"íØ­­<ª£T­ ƒEÚ±¨ µ.hËP´¤h‹ŠàÔZ|ˆ¤`E ™?hB’û:çÜsöyÜïg-ÖjOî½Ù÷õ~³÷>'ÖÐÐÐ 0 ÇïÈcÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ °íСCš3gŽFŽ©®]»*''Geee–ŸàÀM›6MÝ»wW§N4bÄmݺÕÃ#(ضoß>Í;Wï¼óŽŠ‹‹%I±XÌÒsëëëuõÕWë™gžÑôéÓ5oÞ<íÝ»WÇ×ûï¿ïå°mý§¨¨H555*((Ж-[4dÈËÏ­¨¨ÐÆUQQ¡/ùË’¤ë¯¿^ýû÷ל9sôôÓO{5l3 °­}ûö*(($544ØznEE…N?ýô¦ø¤ÓN;M×_½~ýë_ëèÑ£®ŽÁB€À¨­[·ê /Œ;>dÈ>|Xï¾û®£‚)Œª®®VaaaÜñÆcUUU¦‡ƒuäÈåææÆÏËË“$ÕÖÖš bzÀTWW«ººÚïa þFß„÷Þ{Oôìõ;wî¬sÎ9ÇÕ×ìСƒêêêâŽ9r¤éëˆ.$@ª««uEQ‘Þò{ À–aÆé™gž1!ï½÷žú÷ïïù÷y÷Ýw]„ˬ [TTäÚ÷Bð R]]­·$Ý)éL¿ã’%’¦ù=ˆ€à\œÄ¹8‰sqçá$ÎÅIa9JšÿÒKI÷5x©qæÃ«ÏJšßìû¸¥¸¸XøÃÔÐÐÐâÞ!›6mR~~¾‘¨‚:SR?¿á’|Eç½dŠsqçâ$ÎÅ œ‡“8'q.¬ òg‡šš8p@ýúõSÛ¶'>zŽ7NZ±b…ÆŽ+Iúè£ô«_ýJ£GV»víü2Í;Wï¼óŽŠ‹‹%)nZ±µG}T~ø¡¥ÇFÍp¿ Ãý@€ ÷{2ÜïÄp¿ Ãý@€ ÷{~Ö¬Y:÷ÜsõÕ¯~Õë¡Ç&tmÞ¼YåååÚ°aƒßC444è;ßùŽn¼ñF}á _ð{8@ 0â‘§žzJo½õ–V¬Xá÷P€À`ÄŸ~ú©fÏž­3f¨gÏž~ f@<ððÃëèÑ£ºþúëµsçNIÒîÝ»%Iü±vîÜ©ž={ª]»v Ÿ¿DR~«cÃÄåðÛzI/µ:vȇqaF€xàÃ?ÔþýûuþùçÇ}íÐ< mÛ¶é‚ .Høüi’úyþ ðâÀâÅ‹uàÀUUUI’V­Z¥ÊÊJI'âcРA4hP‹ç4.Å:ÿüóõ¥/}Éèx€  @X°`víÚ%IŠÅbZ¹r¥V¬X¡X,¦‰'ªK—.>&Ä;vØ~NŸ>}T__ïÁh€ðà2¼Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†`L[¿€ÌüÓç¥ óÝÝ7Iú“û¯‹ìÆ cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` ÀŽÔÕÕiæÌ™***RÇŽURR¢µk×ZzîÚµkuÙe—©  @;wÖÀõ裪¾¾ÞãQÃo™4i’.\¨ &hÑ¢EjÓ¦F¥ 6¤|Þ /¼ +®¸BûöíÓ]wÝ¥ÿüÏÿÔÙgŸ­Ûn»MwÜq‡¡ÑÃ/mýÂgóæÍZ¶l™~øá¦h˜0a‚  3f¤Œ¥K—*77W/¿ü²N9åIÒÔ©S5|øp=õÔSzä‘GŒ¼øƒØVQQ¡¶mÛjÚ´iMÇrssuË-·hãÆÚ³gOÒçvèÐA¹¹¹úÜç>×âøé§Ÿ®Ž;z6fÛ¶nݪþýû«S§N-Ž2D’´mÛ¶¤ÏýÎw¾£úúz}ãßÐöíÛµk×.=öØcZ¹r¥fÏžíé¸á?–`À¶êêjÆoŒ€øšÝšÿý3CˆmEEEª©©QAA¶lÙ¢!C†$|ÜO~ò“¸c×]w¬§Ÿ~Z÷Þ{¯×Cà‚É#@€ØÖ¾}{H’l=·wïÞ’¤víÚ¹>.þ":`1 [ ûûßÿ®ãÇ«²²R÷ÝwŸzôè¡›o¾ÙïapÑ·#² ⱞ={êÿþïÿ$IgŸ}¶^zé%õìÙÓçQpŠè€×ˆQG€xì·¿ý­Ž9¢·ß~[ ,ÐW\¡?þñ:ãŒ3ü‹ˆø¥õÏA  6L’tå•WêÚk¯Õ€tß}÷iÉ’%> @"Y_ó{ýÂïCãÏ'! ̃Î>ûlkóæÍ)·DR~«cÃ$ ÷h\@¶ŠLl„%"2áä=F8ZX¦åŸõ’^juìãÂŒ1¬¶¶V99©ïÿ8MR?3òNè¢#âÂ+©Î]„â„1k¸â!ø¾¤éÆG„âãÇëÓO?Õ©§žÚâøæÍ›õÖ[oéÖ[oõid@ö Epæ%;ç!b@ ,^¼XPUU•$iÕªUª¬¬”$MŸ>]õõõ:óÌ3uã7ê¼óÎS~~¾þô§?©´´T§Ÿ~ºfÏžíçðÈ ltÁ¡0a¿€ "@X°`víÚ%IŠÅbZ¹r¥V¬X¡X,¦‰'ª°°PS§NÕïÿ{UTT¨¶¶Vgžy¦&Ož¬»ï¾[=zôðùÑÈà 6¢¥õßgˆ‚„YAC€8°cÇŽ´Y¸p¡‘Ù-0á²Ø¨ ؽPsKýÍÿÎC#„? B'á°èZTØag쌕ÎŽ"üD€ ßÃÃçèsd¸%Ù9T˜„hväª"€y€Àó-<|"ÙTçÍ×8 Áì³!L#@–/áa8:ïµ>Ç’€†À@àƒÑApø¯ùßo1Ða6€ €Àˆbx)8*:Žõ{MÆ~Öï!H ÀìH€C„à€ï¢~DGâ «ã5*¾IC„Ù^!@ø&*áa:8™hý^ý #1BˆÈ_‹g;¼l «SQb4Fx)_–ep À(#á²™B#3ÉΟ—aÒø³m³"D7 Œð<<\Ž·cÃTd¬Ô#ß'Sc´Òóïab¶Äø¬ ž St¸^…FXÂÂ*;ïÇÍXñrO‰‘ Èl ×…%<܈·‚#já¦DçÆ­(iþ÷ª ÀlÀ)€k™FG¦Ááuh<[5ÎÓ×wjlQ…«¯çE”x5;âÙ~"@H 2æixø™‡Û±Ô¸°"ÝØÝ·£ÄíÙOB$K²ˆv  rx8§ÁáFl„902•ê½g'Íÿ^܈·B$j³!D;¶5<ÂžÅÆ¹Þ¼®Sê\y™ÖçÊi¸#n…ˆg³!¸J¤C€°Å“øð!:$gáá$:\ F:©ÆšAœ¸$™Æˆ[˳\Ÿ ñqI³ ¬"@Xæz|ø°ÌÊDt8Ž0ÅE¦’½Wa’i¸#NC$J³!D+–)>L„‡èTp<æþKZòM—^'Ñ9±%™I&1âFˆ!² ¥l #K«Ü¿#+ãr)­Ï›Ã q:3b2D\Ÿ ñiIbÞÿ–êyðº[%=äþë"» ’ s|x¶¢ÃIp50Üì½Ù “æçÕFŒ4ÿ»s2+ú!B !Wã#äáa9:‚ÕÏ{𢒠¯òæu«Q’aŒ„!DˆQC€h!(³¡ »ÑáFpx^}_'áÒú<\nåFxxv“ÀL®bE|Øãt6Dò4D¼˜ q!Ì‚+È2~҉ððôÎ䄇?šŸ»€ÌˆD2BÀ È"Acáaúž„‡»´4Ën„HÖ–dù!Ì‚0ˆ²„ñáFxHÉãÓJá¾Y`6ÈdVÄÅñú*YU9~€÷Â+5&a|<[5.u|<‘{òU5û“‰ê牓œžo»×)~–ì,ý³rÑ«aÞœÝx&äp_—®ßì@(1Dœéøpc¯‡£åV~Ít4GxøÇ鬈‘'r][’•n&„ý ¢Œ",hñá{x¸ÄFp9‰«!âR„XáK„°€QLJÁYG—Ôµn±^v7®[ ö…XÝ’-÷] ‚ÂŽïå‘,>¸j’ñ*D2˜ ñ*B‚>   @ĘŠÀÌzpØávˆD5BÀC\ ˆ(ÄGÂ+\%»¢•øh¼ZRó?È^vRý¬ex…,+WÆ’œ]Ë1WĽ˜""*ñÇix°ÂΆõT³!ifB¤ÔûB¼¸G³ ‚Š" (ñáyxH‰ãƒØ€¬.ÏzLÉ#Dr¼$Ë‹Ëóf!\ €GX‚„\ÖÄG¢DZ” ^°ò3åö=dþÁ«@ @ˆ…9>’ÞÍÜê’+Â^ÊäçË¥»¦@T @H…=>âØÙhN|À„t?gÍ‚@Ô @6r!>*:ŽMyÛñÑK®NÞ2˜q{–• G€IBÍ~¸Éxv•+Â~Iõ³Ç,ØF€!™ø`ÉÂÄÉÏ {A !.à d ïó‘ˆ+K®!>tÉ.Ë›/î AÁ "o<ÏP¢Ù×ö{´Æ~˳ ™âr¼ÂŠB"ˆK¯Øïüƒƒ½ Ùº ëùWý¿ @D2>]åJ">lgA¬\ ˆ¢,ÈñÑK®vÌ‚€%pŽg? ÇGÂ;›'ºÒ³»í±º„{°0ÅGö{ ¹< Â2,QD€ùø`ÉÂ,@³ ž²øï°ƒ²P âˆ*ö‚@J@^Î~DWº">™á~ †&RñÑñlá`$_÷üÂÝ—ã $ˆ† ×iÛù *ñ2A€’Ñ ÓH6û‘,>ýÖ•ø4WWW§™3gª¨¨H;vTII‰Ö®]kùùk×®Õˆ#tÊ)§¨K—.SCCƒçcF0 @˜e°üÊêU¯ˆ™bùU4mݺUýû÷W§NZ2dˆ$iÛ¶mIŸ»víZ{î¹Z½zµÎ8ã uéÒE§všþýßÿÉ,ÁÀ«åWn,½jøüCuuµ ãŽ7«ªªJúÜ÷Þ{OmÛ¶ÕäÉ“5sæL 8PÏ>û¬~øÃêØ±czà<7üG€a•föÓ¥WÍ@t±ÿÔÖÖ*77þæšyyyM_O¦qÉÕC=¤;ï¼S’4fÌ}üñÇúñ¬üàq3+ˆ–`YÆêìGÊ¥WÄ‹X~]:tP]]]Üñ#GŽ4}=Õsc±˜nºé¦Ço¼ñFÕÖÖ¦\¾…ðcð™£åWg?¬Þó#í¾ÖˆÀV.Áëè XµF胎§fô¯<ó¡6>óa‹c‡?9*飄/,,L¸ÌªººZ’TTT”ô{éƒ>P=Z/(($íß¿ßÎÐ2åÒÞó#ݾ∖_e­Kn:S—Ütf‹c;ÞØ¯{.Z—ðñƒ ÒúõëuðàAuîܹ鸦M›$IÅÅÅI¿×àÁƒõþûïk÷îÝ:묳šŽ7M÷îÝ¿K°aö£5[û>ˆ)°ü*ÚÆ§ãÇkÉ’%MÇêêêTZZª’’õìÙS’TSS£íÛ·ëØ±cM»á†$IO>ùdÓ±úúz•––ª[·nºè¢‹ ½ ø B<]zE|îx"Wš¿n›¡C‡jüøñš={¶öîÝ«¾}ûª¬¬L•••*-=¹öoÖ¬Y*//×Î;Õ«W/IÒµ×^«Ë.»L>ø >úè#]pÁzî¹ç´aÃ-Y²DíÚµóëmÁ“ îû‘Ž­}Ä€4˜ýÈåååºçž{´téRíß¿_ÔêÕ«u饗6=&‹)‹Å=÷¹çžÓÝwß­eË–é©§žÒ¹çž«§Ÿ~:nc:¢‡|âö½?2ýh!Õ¾â8©úy©ð*¿GáöÀ¦ÜÜ\Í›7OóæÍKú˜ÒÒÒ3"òóóµpáB-\¸ÐË!"€Ø„EŠÙW—^€· .¿â X‚ˆ|àÕϰ}³A'y<û1F+“~ÍÊ%xmqqöƒåWR!@€0p°÷ÃÑÒ+¾[Tá÷\C|H‡B.Ùò+GÒÝp@f\Z~åú ÙûÀ È"i/» ÀßÌü%R-¿ *f?XA€Açâò«”ÒÝñ€'ì.¿ êìñÀ*Èïýà X@f¸ù H"@ãܼV&û?X~W²åWÌ~ˆ2¿–_pÎÆþ(]ý ¬"@€,ÀæsÀvîÄåWÌ~ð  ÐÀquùñÀGTi–_%Úÿ‘hùUÚÍç,¿|‘lùU/¿ v @–aùà!îÿ᳂",ãKïÈœ û?¬,¿2‰ø 0Èò%x=ºúUÜìG¢åW‰öpÀU¾-¿riö2A€!dåþÌ~ÙÃÖ½?2Äì€L :tHsæÌÑÈ‘#ÕµkWåä䨬¬¬ÅcôÔSOéK_ú’zõê¥N:éóŸÿ¼î¿ÿ~ÕÕðrŒ5G³¼ÁåW)Ä}ûöiîܹzçwT\\,IŠÅb-sèÐ!Mž¦Y¾€`Ë`ùU"NãƒçŠ1lÞ¼yúÜç>Ç>8få XŽ$[~Å%xûlÌ~8a+>¸ô.€€aˆA ¡e3 IDAT<ð€^|ñEý×ý—ºtéâ÷pnðaöÃ2–^ f@ Y¶l™î¹çM™2EßøÆ7ü"ÄÊ%xøË·Ù ¼À ˆÿó?ÿ£‰'êšk®Ñc¥¿ÌÐIù­Ž “4܃±!zZ_‚×ñÝÏÄK´ÿ£5‹÷þÃìâ­—ôR«c‡|fˆÇ6mÚ¤1cÆhèСZ¾|¹rrÒO:M“ÔÏû¡!ˆ\¸ƒ,,¿J4ûáù=?\ÀìGbÃÿ Á÷%M7> ¼X‚å¡¿üå/ºúê«uöÙgkõêÕÊÍåÒ§€äRÍ~°ñ@T0âÐâÅ‹uàÀUUUI’V­Z¥ÊÊJIÒôéÓ‹Åtå•WêÀš1c†þû¿ÿ»Åóûõë—ð>!€q©–_q,à$˯ܜý0‰Ù^"@Z°`víÚ%IŠÅbZ¹r¥V¬X¡X,¦‰'ª¾¾^»wïV,Ó¬Y³âž?iÒ$æqBÀ=\ý*‘ Ì~¼F€8´cÇŽ´©¯¯70d»÷‰Û€À;6Ÿ{>ûÁÒ+!À BZ_+-®~XceùU+v.½ëÚìG†˜ý`€]–_}öƒø` „7!ÂÂæód\»ï„d 6 Î8X~Õšç÷ý`ö@ˆ @¶J·ÿƒKð‰ã£õò+f?ˆQE€HÌ…ßú‘“&>I6û„¥WÄ?D2@>øàýæ7¿Ñ¦M›’^ ÷Oú“î»ï>Ã#Äå{‘㕯‚¾ô ü©©¯¯×¤I“tÎ9çhôèѺøâ‹Õ¿½ð q}óÍ7uï½÷ú0J@à±ô <©Y²d‰ÊËËuóÍ7ë׿þµ~ö³Ÿ)77W£FÒ<÷ø††F‰låÅ샰„ˆñ‘ˆ§K¯ˆ!©;¡/Y²DcƌѓO>Ùtìë_ÿº¾ýíoëî»ïÖž={ô“ŸüÄÇ¢ÈêìGºø°4ûA|¹HÍ€¼ÿþû9rd‹cíÛ·×’%KôÐCé±ÇÓõ×_¯£Gú4B 3&ïˆ d%—–^9ÙûaâŸoâ@D*@:uê¤O?ý4á×î¼óN=ùä“Z±b…®ºê*œðq_üâõæ›oª´”õõ.½rcöƒ¥W²Q¤¤C‡0`€ºuë¦>}úè¹çžKúØ7jòäÉGð[H p¬ÄGnm<·„¥W"&RbÇÑ£GÙ‚Èñì-ŇßÏ3@|¢HmBÿä“OôÉ'Ÿ4ííøè£TYY÷¸ýû÷kÙ²e*,,4=D@P8Ü÷áÆìK¯d³HÈ#<¢{ï½·éÿß~ûíºýöÛ“>~îܹ&†×7%=æ÷ ¸¸ô*W®|•f?U¤äòË/W~~¾$iÆŒºé¦›4hР‰ÅbÊÏÏ×àÁƒ5xð`?† š –^qöƒød‘ K.¹D—\r‰$é³Ï>ÓØ±cõùÏÞçQîÊ-•ênö{@ˆXz•löƒ¥WáMèÿñÿA| œ\üàag¹|\zebÓ¹Äì€à‹l€ÙÂÖ:óDKJR}ø²ò›b Ì\^zå÷ωa@€Ã¥x$"~Õ+â@X €a–>$° ðžË7ôsßñ L ÛØ]†DÃÙ«2^zE|È"B¦6³‘àâÆs»û>øgâ @PÙøhë@ìl²0ûÁ¾pdKû@’ýF˜+a!̬Ì~XØxnw߇eÄ€,D€>ðýƒCkÝÐðøž/½">d)2î† 8cuæÎáÒ+f>À9ˆˆtû@â~«ËÕ°UÉâÃÁ쇓ýTig?ˆYŽBŠ«ë ØÙ³Ô*Â-½€,G€AÇ2,ÀšTñá`v¥Wà ðI >LX]†Å•°tvFÌ~¤‹–^€5ai÷Q.>,\v·µÖÿìø5!Ž–‡pI^„™ÝøHÀç^bö@Ô @$ùí©“ ¯Ì‚ «±ô |G€>²õáÂ⇘t—㵄Ëñ" 2\z•(>‚´ôŠøU z\Ø÷‘Ž——Ü%>D„I‚ߦZùä覄@exe6+û>2¾ß‡ÃÙâ@Ô €Ï¼ø°‘ñ½ €0³¹ô*h÷û€¨#@€°ñjˆû>ìbßd† ³ ­—aµþ ÇÍVîûÈxé•CÄ€lA€Y$h÷7\•æêmìû€` @€ˆHôá(Ý,˰.ìûH…ø÷ @@xqOD˜A¨YY~åp߇o >d#ˆ8[ª¸/Â(ÅÒ++7”ü[zÙˆ$Ó߆ZÝ ÛüXÊßsGt„MšˆféøÂÊÆ‡î ‚HH´üÊÆìG²øÈèŸâl#@€ˆÉø2¡,ÃBX¤ØxîF|xuÉ]â@¶#@€€ñêÃIëZ–—aaàr8{µôŠø­—_…péñ(ª««ÓÌ™3UTT¤Ž;ª¤¤Dk×®µý:S§NUNNŽFíÁ(4@–?¨$ù”ì··–gAšÿ6¹ù= ð{éW¼šLš4I .Ô„ ´hÑ"µiÓF£FÒ† ,¿Æë¯¿®²²2ååå)‹y8Z¶æá›æ†ƒÍ9¹ç û>ë6oÞ¬eË–éG?ú‘zè!M™2EëÖ­SïÞ½5cÆ K¯ÑÐРéÓ§ëë_ÿºzôèáñˆPÌ‚Jýóæò Ù÷ØSQQ¡¶mÛjÚ´iMÇrssuË-·hãÆÚ³gOÚ×Xºt©Þ~ûmýð‡?TCCƒ—ÃE€ @€™Š¤ˆø)Õ¾4ñawéñØ·uëVõïß_:ujq|È!’¤mÛ¶¥|þÁƒ5sæLýà?`ö#Ë @À™øÃ±8ØtD]uuµ ãŽ7«ªªJùüûî»Oùùùúîw¿ëÉø\6gARa)|•.>Rl:OÆMçÌ~ êjkk•››wW[¿Àšç_•®*Ió _Húš;ßolQ…ž­wâÿL©“žˆÿ-—¤«Ÿwç›"»¥ Úìûü°nß¿JUƒ2{‘ç–IÏ-oyìÓO’>¼°°0á2«êêjIRQQQÂç­[·N¿ýíoµbÅ íܹ³éø±cÇtøðaíÚµK]»vUçÎí¿„3 @–Èx$ÙR,‰™d.ÑÏMçÉøÌ~ ´®»AzêÙ–îŸôრһᆱƒ¶8¾iÓ&IRqqqÂçUVVJ’¾üå/ëì³ÏnúSUU¥uëÖ鬳ÎRi©GÓ“KlR|h²»ÜÄÖ†t"N¥‹Vý\&ŠçŒ6;D| ›Œ7NÇ×’%KšŽÕÕÕ©´´T%%%êÙ³§$©¦¦FÛ·o×±cÇ$I—]v™ž{î¹V®\©îÝ»kÈ!zî¹çtÍ5×øòž`K°€±´ˆq‡ŸUEDZMÿŒVj¥’¬Ém¾ë›’kõu–cÁ.+ñáǾ–^i :TãÇ×ìÙ³µwï^õíÛWeeeª¬¬l1ƒ1kÖ,•——kçÎêÕ«—Î<óLyæ™q¯wÛm·©GúÒ—¾dòmÀÌ€Qäå,Hª¥X3!°ÎA|°ô –òòrÝ~ûíZºt©n»í6?~\«W¯Ö¥—^Úô˜X,¦X,–öµ¬<Ñ@€Qe#BÒíIù¡[ć¥W^]ñJ">½rss5oÞXzž#@€(35 "%B­¹Éøq·sß!!C€!åû‡žDƒ¿)fCZ†7lÄÒ+/ˆ:/gA’}X$Bˆƒø`éD„˜åß¾ÚøpåZ„Í¥‹ìÄG¢Ù¯ãƒÙp†²œ“å)–"„Y4²ò÷ξÈrnÌ‚Ø]Š•3!HÄ… 6bßDD@ –b%Â,ZsqßGÆñá`öƒø€Ì @Dd!‰>´¹²„É^ïûÈ›ÎÀ7€&V~ștXâÒ¾;›Î%‹³ìû_ @„˜Øâ³ ÙÅÅ}‰n1ØÂR¬ìå0>2Ý÷á%âÜE€ˆãÙ~Dˆè° ¸^Î~ÜE€äÅR,É…+c%û0J„„ŸÕø°¦v7³ô Â…"Ê‹¥X¶ÙYçO„„—Õ¿;‹K¯áfƒa™~€òd)Vª%9DHø$û;3´ï#íìË® pÞ/Å"B¢Éj|$`l߇CÌ~€w âÜø å$B2B„ŸøpxÉÝŒ¯xÅÒ+$È–>P9ø°–êbF³ dƇw;÷röà-ÀI6—bµæêR,‰ "Cñá×%w™ýï @–ðk)!ìù Þlø€@#@€,âÆR,£÷iD„øÏn|8Ü÷‘W½€ð#@€,ˆIôá” .⃫^ :tHsæÌÑÈ‘#ÕµkWåä䨬¬,îq›7oÖ­·Þª‹.ºHíÚµSN§Á@„À²0ÅK¯ øDìÀ¾}û4wî\½óÎ;*..–$Åb±¸Ç­Y³FO>ù¤Ú´i£¾}û&| àSWÆò$B‘`"> ©¦¦F;vìÐüùó“>îÖ[oÕ§Ÿ~ªÍ›7ë_ÿõ_ÕÐÐ`p”€K\ËÖ=B¦Ô%Þ˜Îlˆÿp¹]@ô ´oß^’”2* ”››kjX€m–ûër„$ܔΒ¬`ÉðŠWv0ûÙ…²‚8ìûxˆ@„à$âà1€k¬FHsc‹*Ò߬P"BL0€ìE€äÎ,ˆd-B} %B|f÷ÜeÌ~@öjë÷o‰¤üVdžIn~(È2Ï¿*]Ubá¿ô5û¯?îð³ªè8VÒ‰¦+5¦Å×ÇUèÙªq'L©“žhu!‡Æy,É7)¼Jª~Þþà²YªøðàŠWÄÂl½¤—Z;äÃ8€0c$€¦IšÓêÏp?„¬âå~É¥™)õl3!Ö¹v¤ŠKˆøl¸âÿ=ÍÏ!D€pÎa„47F+S߬P"B¼b7>’pk߇՟»ˆ–`9´xñb8p@UUU’¤U«V©²²R’4}útuéÒE»víÒÒ¥K%I¯¿þº$éþûïWCCƒúô飯}ÍÁÀËK±¤”˱rK¥º›ã7_ŠÕ¨õ’,K˱¤”YŽeŸ“øéÒ+@°Ä¸=·#gu–víÚ%IŠÅb’NÜ”0‹iÇŽêÕ«—Ö¯_¯#FÄ=F’†®uëÖµxÍ7ÞxC]t‘Iêgè}©XŽ)åžD").B$Åí i!…H²‘ˆÖ’…aéì}IÓ%mÙ²E^x¡ÑïÝøÙA/l”>?Èýoð§­ÒÈ‹}yoˆ.–`9´cÇÕ×׫¾¾^Ç×ñãÇ›þw¯^½$ˆŒD©¯¯‹ ô\¸GˆÿÖ•{…°ë¤0ƇCÄ )ÛàFHª›J6#$ه諲;DÒ½ŸîõÁÒ+È>€”LDˆ”úŽé’J„HkéÞ¯‡ñÁ%w­ Ò J„H6®%¥_–• !’nÖ#ÃøHůKî‚`Ià#ÄÉlˆíqz™]÷úÚ¾‰Ù:€eŽÉyˆ4ΆD%Fœî÷’ž?ã›Î™ý€Èâ> l±uÉÑ}B¤ø{…4~ØMy¯FÉî"¥¾oˆÿÁ=L—ðuº×£‘ ñ‘Ž×ñÁì²ÖÊöÒ¦$ÿÞËDU{÷_Y¶ù5"Y¼B–”Ù²¬æšÏŽq†ÄêØ ÅGÆû>2@|@8  Z„x"‚#vÇnÉ•¡ø`é@b € ¸½KJ¼$«ñƒmë%Y­ïšÞø9é²,)ñÒ¬Æè©–f%br¹–“àq8ë!ù`öƒqs&DÊ|sº”ær±é.ÛkwF¤¹Ö˵2]¾•ÉsÃÌ~@V`@ÆÜœ ‘2ßœ.e0"9ŸI']HT?ïÎÒ® .±Æø`öÂ…®ðs&DJ=âhˆ”ùŒˆ]™ÆGºñ¦™õpójW$C€p’,D’Eˆë˲$ó!b—•ñÙ\re³'®r;B${"%‘ŒfC¤à…ˆÕðp,½xà:Ó’*D }ˆXýþ–\5 ò¯áF€ð„£qy_ˆ”Წ …ˆï—Á’+cñÁìd%€g}HÌ0B\ ‘ü‘oÊ~xd°ä*¨w9D—áà)Û—è•2ºL¯©ÞFÉ.Ù+¥¹l¯”þÒ½RúH°zY_'1“.’ä|¿‡UÌ~¬ @xΫ‘Rß/DRÒI!’K!’ŒÛ³$¢CÊlÉU#–^ÜÂ,Fx±KJÿÁ×î’¬F®,ÍòBã÷u!>Ò-¹j”øDÀ˜ç_5{…¬FN6¨7 DˆØŒŽFn,¹ Ò¯˜ý€h` ãl/ÉJ³KònIV#ËK³’±»d+ƒ¨qcÉ•äA|°ô €OEˆd)D2Ù .%Þ¤Þ(mˆ$c%(žÈÍx6Å­æAŠ@´ |ãÅætÉÚlH¢i”êjY‡H*â#ÝlG£0dz-_y!RêÙTK²ù")X ŽæÜZr%™¿Ë9ñÑC€ð×"9Ÿ ‘ì…H"™Æ‰“èhä{|°ô Ð  ÓíöæôF™Î†HÖ÷‰´f7N2 ŽFn†‡c,½$@€¯6§KÖ¯”%Y;!’ˆ±ÑšñÁ¾€[ãå’,)ý•²$û³"™†H¦ÜÜdÞšé}€h#@’ã%Y’+³!¬ÎŠ$ /ÂÄNl´f$>˜ý¤@€4dz!RÆWÊjÍê¬Hs©b!]œd­9ÙëÁ¦s€ç(B$ÛWÊ’¬Åˆ½"©¸©„)>˜ý€è#@„‚£%Y’­ÙÉúÒ¬FNfELqz…+f>^"@„Š×³!œ†ˆŒ16ë!¹Ì~@v @„NF"y"Rü‡SA’É==ˆ€)€Pr!’íÙÉÞfõÖ¼·n È%v¦ BË‘œ‡H#;˵¼¼SyÆñÁìÀ@¨9Þœ.9Z’%¹"’·‘Œ+³ÄÀ¡¿nÈ胬ÃÓa\¾¤ød'f@DFØgC¼äZ,¹Ì~@vb@äd<âàCvnéÉ?AÄød/f@DRF³!’ã)þ¿_³#®ÆËñÁìd/@¤et¥,)£iäG€ "@D^Ƴ!’+!Ò¨y¸#ž-ýbÙÀe€¬‘ñlˆäjˆHÁÜ3Òăø`öÀ&tYåùW]úìp³zh,¨««ÓÌ™3UTT¤Ž;ª¤¤Dk×®Mû¼_|Q“'OVÿþý•ŸŸ¯¾}ûjêÔ©ª©©10jø•\û0ʼnÚûà™I“&iáÂ…š0a‚-Z¤6mÚhÔ¨QÚ°aCÊçÍœ9S/¿ü²ÆŽ«G}T7Þx£–/_®Aƒéoû›¡ÑÃ/,Áµ\ÙÒ¨ù‡v—–gçax0ûDÏæÍ›µlÙ2=üðúãŽ;$I&LЀ4cÆŒ”òÈ#èÒK/mqläÈ‘6l˜/^¬¹sçz:vø‹YϵeY~ÑêOÐy·u|HÒ?ÿó?«k×®Ú¾}»'ãEp0ÿàêŒHsAœ C´­[·ªÿþêÔ©S‹ãC† ‘$mÛ¶M={ö´üzŸ}ö™<¨ÓN;ÍÕq"x˜€V<ý½ß³"†¿?³@tUWW«°°0îx㱪ª*[¯÷È#èèÑ£ºá†\‚‹HÀ³ÙF._Î×ò÷3ˆø¢­¶¶V¹¹¹qÇóòòš¾nÕË/¿¬{ï½W7Üpƒ†îÖP¤àʽCRñzyK­x¤C‡ª««‹;~äÈ‘¦¯[±}ûv3F\pžxâ WLj`"@ ÏgC¥‹;âsx0ûö¬¤v¾Fí3'þ4×ðIÒ‡&\fU]]-I***Jû-?üðC]qÅ:õÔSµfÍåççÛ3B‰‹<Ÿ I'$³ÄRn:ñ§¹£oH]”ðრÒúõëuðàAuîܹ鸦M›$IÅÅÅ)¿Ýßÿþw]qÅ:zô¨~ÿûß«G™¡Á&t°×ɹ~9c6nÜ8?~\K–,i:VWW§ÒÒR•””4]«¦¦FÛ·o×±cÇšwèÐ!5JÕÕÕZ³fúöík|üð3 `“±%Y!BxÙgèС?~¼fÏž­½{÷ªoß¾*++See¥JKK›7kÖ,•——kçÎêÕ«—$é«_ýª^{í5MžÍ;Wï¼óŽŠ‹‹%I±X,îq»wïÖ¿øEýõ¯Õƒ>¨ïÿûúÍo~£Ë/¿\G5=l Úú=€°)**RMM ´eË 2$áãxàÕÖÖjëÖ­:ãŒ3$IC‡Õå—_®§žzJS§N59l ˜±©}ûö*(($544$}ܳÏ>«k®¹¦)>$é²Ë.Sÿþýµ|ùrÏÇ â={öhß¾}d%ĵµµ’¤ÜÜܸ¯åååµx MtèÐA’TWW÷µ#GŽ´x M¸ –—^5.Åj®ººZݺuS»ví’>‰¤üVdžIîÚ€ë%½ÔêØ!Æ„âž={ª{÷îzíµ×â¾¶yóæ¦û‡$3MR?Æœ®ø_¾/iºñ‘áÅ,Œ;V«W¯ÖîÝ»›Ž½øâ‹zï½÷4~üxGø‡/^¬¨ªªJ’´jÕ*UVVJ’¦OŸ®.]ºè?ø~õ«_é_þå_tÛm·éàÁƒš?¾.¸àÝ|óÍ~DÍG$ý̓~߃×D¶#@X°`víÚ%IŠÅbZ¹r¥V¬X¡X,¦‰'ªK—.:ãŒ3ôÒK/éŽ;îЬY³”››«k®¹F ,H¹ÿˆ2Ä;vXzÜyç§^xÁãÑáÁÆ Œ!äX}§IDAT@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` À€1cÆ Œ!@C€0†` Gêêê4sæL©cÇŽ*))ÑÚµk-=÷Àš6mšºwï®N:iĈÚºu«Ç#F pdÒ¤IZ¸p¡&L˜ E‹©M›65j”6lØòyõõõºúê«õÌ3Ïhúôéš7ožöîÝ«áÇëý÷ß74zø…§Öû=€Yï÷d½ßõ~ Öû=€Yï÷d½ß@J›7oÖ²eËô£ýH=ô¦L™¢uëÖ©wïÞš1cFÊçVTThãÆ*++Ó=÷Ü£[o½UëׯW›6m4gÎCï~!@à©—ü@€p.Nâ\œÄ¹8ópçâ$ÎE°UTT¨mÛ¶š6mZÓ±ÜÜ\ÝrË-Ú¸q£öìÙ“ò¹§Ÿ~º¾üå/7;í´Ótýõ×ë׿þµŽ=êéØá/¶mݺUýû÷W§NZ2dˆ$iÛ¶m)Ÿ{á…Æ2dˆ>¬wß}×ÝÁ"PØV]]­Â¸ãǪªªô{.:$‰kYœÀ¹8‰sqçâÎÃIœ‹“Âr.üüïöáÇÿñ¿¼:SÉß]‡TWWwüÈ‘#M_÷â¹?$@ 5lØ0Í)ZÛî¦û=€á\œÄ¹8‰sqçá$ÎÅIa9Æ K¸¤ÈkÛ·oÿÇÿZäé÷éܹsܱ„K¥ª««%IEEEI_/“ç"ü),,Ô3Ï<Óô‡ÂÂB_äºë®“${î¹êر£'ߣsçÎ:çœsâŽ4Hëׯ×Áƒ[ʦM›$IÅÅÅI_³¸¸XøÃÔÐРX,Öâ¹ùùùêß¿¿‹ïAkhhhð{—Í›7«¤¤DóçÏ×÷¾÷=I'îŒ>`ÀuïÞ]¯¼òŠ$©¦¦FP¿~ýÔ¶í‰ß}/_¾\7Þx£~õ«_iìØ±’¤>úHçœsŽ®ºê*ýò—¿ôçMÁŽÜpà Z¹r¥¾ûÝïªoß¾*++Ó믿®_|Q—^z©¤wK///×Î;Õ«W/I'î„~饗ꭷÞÒwÞ©nݺé§?ý©vïÞ­×^{-ጠ¢ƒ%Xp¤¼¼\÷Üs–.]ªýû÷kàÀZ½zuS|HR,k±ÌJ’rrr´fÍÝyçZ´h‘jkk5tèP•——Y€ÆpÆ °åµ×^Ó·¿ýmþùêÔ©“z÷î­n¸Aï½÷žíך:uªrrr4zôhFê=7ÎÅÚµk5bÄrÊ)êÒ¥‹¬åË—{8jodz.Ö®]«Ë.»Lêܹ³¨G}TõõõÜ}þóŸ5~üxõíÛWùùùêÖ­›.¹ä=ýôÓ–žàÀM›6MÝ»wW§N4bÄmݺÕãQ{#“sñâ‹/jòäÉêß¿¿òóóÕ·o_M:U555Fî®L&š û¿7Ý8Qù÷&ÍØ[zè!mܸQãÇ×\ êêj-^¼X^x¡^}õUþù–^çõ×_WYY™òòòâÖ…†E¦ç¢´´TS¦LÑW\¡|PmÚ´ÑöíÛµ{÷nCïÀ=™œ‹^xA£FÒ€t×]w©cÇŽZ³fn»í6}ðÁzä‘G ¾“ÌUVVê³Ï>Ó¤I“TTT¤Ã‡«¢¢B&LÐÎ;u×]w%}n}}½®¾újýïÿþ¯f̘Ѵ)søðáÚ²e‹úõëgðd.“s1sæL8p@ãÇ×9眣>ø@‹/ÖêÕ«µmÛ6õèÑÃà;ÉL&硹(ü{3Ós¥oY­°á•W^i8zôh‹cï½÷^C^^^Ã×¾ö5K¯Q__ßpñÅ7L™2¥¡OŸ> £Göb¨žËä\ìØ±£¡C‡ ·ß~»—C4&“sñ•¯|¥!//¯aÿþý-Ž6¬ásŸûœëcõÃñãÇŠ‹‹zõê•òqË–-kˆÅb Ï>ûlÓ±}ûö5œzê© _ùÊW¼¦VÏÅþð‡¸c/¿ürC,k¸ûž1VÏC£¨ü{3«ç"jÿÞ²K°`ËÅ_Üt ïFýúõÓyçý{÷SeÝÇqüs@ÑS‚!*®²û5J7:h“4ÂR—³rŽ5Ê­f³­?³–­Ò'õ U4„ufµEÎ `lmÖL}ÒD].Ž6è#‚ ò½ÜãÜ"¨‡óç:px¿¶³¹¿sí{}víwüîú÷ŸKÞÆzu@@'NœÐŽ;dSøÑd±{÷n™™^ýuIR__ß´ÍbÖ¬Yš9s¦|>ߨñ¼¼¼¸½TËmGJKK»ê¼ÚÚZåååiíÚµ¡1¿ß¯õë׫¾¾^ƒƒƒñ.5îÂÍâÒ'èŒX¶l™²²²Â^k&³ps‘,ëæxÂÍ"ÙÖM`:£AÔÌL¿ÿþ»ü~ÿ5çöööêÅ_ÔK/½4¥.¡W¸Y455iáÂ…:xð  ”‘‘!¿ß¯íÛ·'Íj¸YlÙ²EÃÃÃÚ¼y³Nž<©`0¨Ý»wë‹/¾Ð¶mÛ\ª6öúûûõ×_éÌ™3zûí·ÕØØ¨^xáªß9~ü¸Š‹‹ÇŒ/^¼Xýýý:}út¼Ê«H²O__Ÿz{{ÃZk&£HsHÆu3’,¦Ãº L :ó‚$Ìq«©©¹æÜçž{Î,X`.\03³¹sç&Õ¥áf‘‘‘aYYY–žžn¯¾úªíß¿ß{ì1sǶmÛæN±q6‘ãâÈ‘#–——gŽã˜ã8–ššjï¿ÿ~ü‹Œ£Í›7‡ö'--ÍvíÚuÍïx½^«®®3þå—_šã8öÍ7ßÄ£Ô¸‹$‹ñ¼ñÆæ8Ž:t(¶º$Ò’qÝŒ$‹é°nÓ ¢ÒÖÖfvÏ=÷ØðððUçž:uÊf̘aû÷ï%Ã鈉dáñxÌq{óÍ7G¯ZµÊfÏžm½½½ñ,5î&’E[[›åææÚâÅ‹-ØgŸ}fkÖ¬±´´4«««s©âØ;yò¤577[ °•+WZJJŠíÝ»÷ªßIII±§Ÿ~zÌxss³9Žcõõõñ*7®"Éâr­­­–ššj6lˆS•ñIɺnF’E²¯›ÀtB‚ˆuvvZQQ‘Í;×:;;¯9åÊ•VVV6j,~HÍ&ž…×ë5ÇcçÎ5þᇚã8ãÞ€;UL4‹ŠŠ ËÏÏ·ÿýwÔxYY™ÝtÓM644¯R]U^^n™™™ÖßßÅ9×]w]Rž¹\8Y\ª­­Í²²²¬¸¸Øúúúâ\{ÂÉ!™×ÍK…“E2¯›ÀtÃ= ˆHOOV­Z¥þùG ÊËË»êü––566ê™gžQ{{{è344¤þþ~ƒAõööºT}lM4 IÊÏÏ—¤1×sçææJ’º»»c_¨ "Éâ»ï¾Ó½÷Þ;æ†óÊÊJutt( Æ«\W­[·N===:uêÔçÌ™3GcÆ;;;%ýÿ¸™êÂÉbĹsçT^^®n¸A_}õ•¼^¯ ºãZ9$óºy¹pމd]7éˆ600 ÊÊJýüóÏ:xð .\xÍïœ={V’´víZ…>jiiÑüùóUSSïÒc.’,$éî»ï–™yvýÈ>srrb^k¼EšÅÐÐ.^¼8f|ä‰OCCC1­3QΟ?/éOü¹’;ï¼SÇŽsCí?ü ¯×«[o½5®5º%œ,$©««KåååTcccÒÜ€=âZ9$ëº9žpމd\7i+Ág`0Å ÙêÕ«mÆŒöõ×__q^gg§µµµ…Þ qöìY«¯¯õ©««³ÜÜ\[²d‰Õ××Û™3gÜÚ˜ˆ4 3³ºº:sÇ^~ùåÐØÅ‹­¤¤Äü~èfÓ©"š,JJJ,;;ÛºººFmï®»î2ŸÏ7å.Áúã?ÆŒ]¸pÁŠ‹‹Íï÷‡ö§££cL#ï©­­ ýù矖™™i<òHü‹±h²èëë³%K–˜Ïç³cÇŽ¹VsÑ÷߯;wN¹Gñ®Y³F½½½Z¾|¹òóóõÛo¿iß¾}:}ú´jjj´iÓ&Iãg1<<¬’’ýôÓOzþùçCoBÿõ×_uäÈÝrË-‰Üµ ‹&‹‡zHÐã?®ÒÒÒQÛ½þúëõàƒº½;‹&‡ñLåu3Ú,’iݦµDw@˜ZJKKCO"¹üãñxB󪪪ÌãñX0¼êö¦ò}£Í¢¯¯Ï¶nÝjsæÌ±™3gÚwÜaü±Û»ÑfÑÐÐ`Ë–-3¯×ÊbÏž=nïFL|úé§¶bÅ ËË˳´´4ËÎζûï¿ßšššFÍ»RÝÝÝV]]m~¿ß¼^¯•••ÙÑ£GÝÜ…˜‰&‹yóæ]ñ˜š?¾Û»•h‰ËMåu3Ú,’iݦ3΀p 7¡p ×Ѐp ×Ѐp ×Ѐp ×Ѐp ×Ѐ€ËvîܩիWëÆo”ÇãÑk¯½–è’p ¸ì•W^ÑÑ£GU\\,Ir'ÁàžÔDÓM{{» ÕÕÕ¥œœœD—€«81 õÔSOé¶ÛnÓìÙ³å÷ûµ~ýzƒÁ1s %Ifæv™$g@ ~üñG>|X>ú¨ ôË/¿h×®]*--Õ‰'4kÖ¬D—À¤@1PQQ¡uëÖ«¬¬ÔÒ¥KõùçŸkãÆ ª €É…K° ÒÓÓCÿTWW—,X ÌÌL?~<•0¹Ð€@ œ?^Û·o×Í7߬ôôtåää(77Wÿý·zzz]“—`@ lÙ²E{÷îÕ³Ï>«¥K—ÊçóI’6lØ áááWÀäA1P[[«ªª*½õÖ[¡±uww'°*&.Á€HMMs¦ã½÷Þãì—á ÄÀ< @ ŸÏ§Ûo¿]‡Vss³²³³Ç¼ï#( ª¿¿_’ÔÚÚª;vH’6mÚzOɈbàwÞQJJŠöíÛ§•””¨©©I÷ÝwŸÇ5÷ƒ>Pkk«$Éq}ûí·:tèÇÑòåËi@IÍ1^Å À%ÜÀ54 \CÀ54 \CÀ54 \CÀ54 \CÀ54 \CÀ54 \CÀ54 \CÀ5ÿm!ÁÈùPqIEND®B`‚lmfit-0.9.2/doc/_images/models_nistgauss2.png0000644000032700003100000013147712603520205022451 0ustar newvillegeocars00000000000000‰PNG  IHDR Xšv‚psBIT|dˆ pHYsaa¨?§i IDATxœìÝw\•uÿÇñ×9lÜ€˜ 8s¦)NTÔ\i’6L³úÙB»Õ2›·M»oL»-Í»Û;Zê­ s”JSs bîUîˆ8dœóûãÅåœëïçãÑãp®ë:×÷s¢€÷ù.‹Ýn·#"""""âV³ ‘ÒCDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFDDDDDDœFä’ÔÔTFE=ðóóÃjµ2}úô?}Mff& 6Äjµ2~üø|¯™:u* 4ÀÇLJºuë2iÒ$G”/""""R,(€\ròäI¢££ÙµkM›6Àb±üékþóŸÿpèСë^ûñÇ3hÐ 7n̤I“gøðáŒ7®è߀ˆˆˆˆH1 rIPPÇŽãÀ¼ûî»yý‰'ˆŽŽfäÈ‘ùžOKKãµ×^#22’Ù³góä“O2}út~øa¢££III)ê· """"âò@.ñôô$00»Ýþ—×9’úõëóðÃç{~éÒ¥$''3tèÐ<LJ Fjj*1117_´ˆˆˆˆH1£rÖ®]ËŒ3˜8qâu¯Ù´i-Z´Ès<,, «ÕÊæÍ›Z£ˆˆˆˆˆ+R)$»ÝÎ3Ï<Ã>HëÖ­¯{]bb"nnnä9îé鉿¿?Gut©""""".ÇÝ슛iÓ¦±}ûvæÍ›÷§×¥¥¥áéé™ï9///ÒÒÒQžˆˆˆˆˆKS)„³gÏòÊ+¯ðòË/ü§×úøø‘‘‘ï¹ôôt|||ò=—˜˜HbbâM×*""""ŽQµjUªV­jvÅ–H!¼÷Þ{dffÒ¯_?<ÀáÇHNNæàÁƒãááAÕªUÉÎÎ&)))Ï0¬ŒŒ ’““ ºæþ‰‰‰´hÑBóDDDD\XPPëׯW¹A …pèÐ!NŸ>M£F®97fÌÆŒÃæÍ›iÒ¤Iî^"ëÖ­£gÏž¹×­_¿›Í–{þJ‰‰‰=z”™3gÒ Aǽq#FŒøÓÅ ¤dÑ÷»tÑ÷»tÑ÷»ôرc<ò‰‰‰ 7H¤†ν÷Þ›çØñãÇyê©§xüñÇéÓ§5jÔ K—.øùù1yòä<dòäÉ”)S†^½z]· æ÷ ®¥bÅŠú^—"ú~—.ú~—.ú~‹œÈ&MšDJJJî¨ á£Y³f4kÖ,Ïkr†b5jÔˆÞ½{ç÷öö&::šaÆѯ_?ºwïNll,³fÍb̘1T¬XÑ9oJDDDDÄ…(€\aüøñÄÇÇ`±X˜?>óæÍÃb±0pà@Ê—/_¨û 2ÆÏ‚  eâĉ >Ü勈ˆˆˆ¸<+8p Ð¯©Q£6›íºç£¢¢ˆŠŠº™²DDDDDJ mD(b¢˜]‚8‘¾ß¥‹¾ß¥‹¾ß"§"b"ýÂ*]ôý.]ôý.]ôý)8qqqqqqqqqqqqw³ ‘·y3üô4n ­[ƒ¿¿Ù‰ˆˆü9‘bhÿ~xýuøòKðô„Œ ãøgŸÁã›[›ˆˆÈŸÑ,‘bæÜ9hÛV¬€)SàüyØ»êׇիͮNDDäÏ©DD¤˜y÷]8svï†ãXíÚÆ0¬}ûÌ­MDDä¯(€ˆˆ¸ª'૯Œ.\€ÐPÎ…6dÆgÏ3bD`nøÈQ»6¬]kN©"""¥!X""®Æn‡‰!8^x*W6Æ\egcýôc6§×ãMÿÿBvvž—Õª‡]ž"""âŠ@DD\If&<õ<÷<ó ç÷$²öµïø¼å‡<_/†š™{8ܦ/>/= }ûBVVîKkÕ› âãM¬_DDä/h–ˆˆ«ÈÎ&¾ù}mÿ‰wj}ÆÔyÿ¾qÊb1FäcÔýèSø©7Üw S§‚ÕJíÚÆµû÷í·š÷6DDDþŒˆˆˆ‹È5šm1Œ¨Cj‡žþΞ…—^¢V- Áצ""b’ñãá½×ÃŒ¬ï3šÃéôëw7 qãàÓOéd_ÊþýÆJ¾"""®HDDÄ$GÛy/{;<óÊÞ' ‡5nðfO=mÚÐ}ñËœ?oçäÉ¢¬TDD¤è(€ˆˆ˜ + "Ž}C{VñšÏûüºÂþýoâ†V+DGSißzz£y ""â²@DDLpüh6ÿ´¿Îñ–‘<=¿ Í›ss K²ÂÛóo±ŸÆ`‰ˆˆkR1AÚWßQ—=¤<ý:;ÃúõpË-7yS‹÷Ñÿ pû~a‘Ô)""RÔ@DDœÍnÇoê»,§•z´.Ú{ßqËu¤Íoi&ºˆˆ¸$g[µ ¿Ýkxßí%ŠøÞ ?6êÉ› 6¶ˆo.""ró@DDœíÝw9á߀-ÁwauÀOá m»²×½|øaÑß\DDä&)€ˆˆ8Óîݰ` ê¾HÕ`Çükná?YC°Ïkì².""âB@DDœiÊðóc®×C;¦‰ÈHø¡ò£dà Ÿ~ê˜FDDDnˆˆˆ³dfÂôéðÈ#Ä÷vXñô„Ud–ål}l´+""â"@DD(Ïßþ11pâ<ù$GŽà°0x0|9kâQX°Àq ‰ˆˆ’ˆˆˆƒ8*À²e—L -Zp¾VΞ…  ǵ]½:„DÞÎVßÖØgÌp\C"""…¤""â ›6AZ<÷d'ᅦ¨(Ž1Î;²`ÈøäÂ#Øc¾‡¤$Ç6&""R@ ""²kxxÀæÍ°ù¹éàå>è´rçÒ»Íß|ãØÆDDD HDDÄAví‚fÍ ?;åÌ$«ÏýP¡Gç@ÜÜà¡•ùÙr'™Óf:¶1‘RqÝ»¡n]ÿøvêfí`¶õAŽŠÁ××ñ5<ñ|ayµ«aÿ~Ç7(""ò@DDd×.¨W‚WÍæ‚WEF.éFV–@9ýJàv_Î[Êb›9Ë9Šˆˆü 8u ’“¡^];|ý5ºßË¡ãžüò _‚÷jO>ãË\û}¤}:ìvç5,""’صËxlbß{öà?´?ÁŒÎ íÛÚÐþ”9¼~ÿÝy ‹ˆˆäCDDÄrH­u_ƒ¿?–.8¾ýöîun±X ÎS]8K9ìóæ;¯a‘|(€ˆˆ8ÀîÝbÇcÞ×pß}àáÁ#@F†1<ËYs@rÔ¬ïE ½Èž£"""æRq€]»à®ª›ŒíÐûõŒÐÑ­›qÞ™= !!0Ÿ{qßv©&“(€ˆˆ8ÀîÝp·}±ÞnÇŽ¹Ç4CBœ[OHü@O²=¼Œq`"""&Q)bÙÙÆ<‰ à®»ŒíÐ/éßßøû¿Y3çÖ=Ê‘P¯Ì›çÜÆEDD® ""RÄ òÅCÞwß眛ôécL w&«ªUƒõ!÷ÁªUpü¸s ¹DDD¤ˆíÚ‘,Âîî=z˜]N®ÐPXìs·‘~,0»)¥@DDŠØ®]petèhÌq!!ðljhÛ¾ÿÞìrDD¤”R)b·ã~ÅÒ§·Ù¥ä‡aÌKY¼{úE²³Í®JDDJKRSS5j=zôÀÏÏ«ÕÊôéÓó\c·Û™6m½{÷&44”²eËÒ¸qcÞ~ûm.^¼˜ï}§NJƒ ðññ¡nݺLš4ÉoGDLd]ü3žöŒkæ˜-$ÄØ…=ûλàüy¾}q%Í››]•ˆˆ”6 —œxµœ²aìªÙ“;XÊñøt³Ë‘RDä&|ýõ×¼ñÆDEEñÔSOå9çããCFFF¾¯KOOÇÇÇÇ%Šˆš· O2q»Ëõæä¸2€¤µï†·=ßÍ«Í.KDDJ­‚uƒ~ùåHdd$}ôÑ5ç«V­Jvv6IIIy†aeddœœLPPÐuï=bĈkVÈ0` (º7 "EêèQ¨±ó'ÎÔ¤|:f—s]!!ðõך Aw6&å‹@ªïþèlvi"".çË/¿äË/¿Ìs,%%ŤjJðÛo¿qï½÷ÒªU+fÏžÕzmGR³fÍX·n]ž¹!ëׯÇf³åî5’Ÿ‰'Vô…‹ˆÃ<ó ¼ëö#ž‘w“-\THˆ>š·°°·FWÇÿŒ5µ.W”ßÀ7n¤¹vq½)‚UH;vì W¯^ÔªU‹E‹áu‰¦;wÆÏÏÉ“'ç9>yòdÊ”)C¯^½œQ®ˆ8Áœ9°qÞjeïŻ뿂ËKñV¬µjÁÉÛ»Ñ0}#œ:ena""Rj¨ä “&M"%%%w…ª ÀðáñX,Üy礤¤ðòË/³páÂ<¯¯S§Nî>!ÞÞÞDGG3lØ0úõëG÷î݉eÖ¬YŒ3F›Š”§NÁ°a0ªÙì[¬Xî¸Ãì’þTh¨ñftÔ\ŒèŠu¶ ‹~Å÷ј:~þÙ¦%""â W?~<ñññX,æÏŸÏ¼yó°X, 8›ÍÆáDZX,Œ9òš×?öØcy6*2dŒ?ž Êĉ>|¸ÓÞ“ˆ8ÖèÑ‘Wÿ‹G ¨PÁì’þTNHÎè¿&ÕØA}n‰ùßG`þ|ˆ‹3¯>)ù@®pàÀ¿¼Æf³êžQQQDEEÝhI"ââ~þú÷³ãóݯðøãf—ó—ʔ瞃‡6žC Ý»»ÍÎúõ’“!3<<Ì­UDDJ&͹AIIðÇYë8~ºt1»¤™0n¿Ýø:(~¡>ÇrlÕ>Ž7ŽŸ8a^}""R²)€ˆˆÜ •+ÇvéKÀÓÚ¶5· àã[+uÂfuãø¬Å¹Çs‚ˆˆˆHQS¹A+V@õêPiÓ¯¾¾f—tC*T+G|åXc—ãéiSGQ¹A±±Ð©},[Vl†_å'86–ëDð¾åtì`@DDÄq@DDnÀ¹s°q#ÜS}œ9‹ïNâÕªÁr:â1‘»ëï¡bEq‘°z5ØlÐîâ¯ÆÒR­Z™]Ò †/âÛ‘…YN•* ""â8 ""7 6!`ûRˆˆ(ÖkÖéÌòl$Œ[,S‡R¹+V@ÇvYXV­‚ŽÍ.ç¦ÊvÂgírªÚ@DDÄa@DD )- Ö®…ûkn„óçKL9Ù¨#9B#ï} ""â0 ""…ôÉ'•]=–Kï6onvI7%'€xwiV+ÍÏ-S‡Q)„´4xç8ü_aìÿ‘³yF1åï/¿ ÷?Qš5£Þ±å$%!KDD¤¨)€ˆˆÂÇÃÉ“ðÚÈlc&z1~`±À¿þµk:Qmï2ìv;IIfW&""%‘ˆˆH¥¥¨µS·û”€’GÇŽøœ:LMh–ˆˆ8„ˆˆHM™bô~¼þ:°|9xyëý?òÝb¡š"""Ž¡""R@qqж-Ôª…±oëÖàímvYE«bEìMšÒ‘å ""â ""tèT¯Ž±úŠ%oøÕ%Öθâq ‘JH€ÐP`çN8u :t0»$ÇèØ‘P{»š]‰ˆˆ”@ ""•GŽ@HÆX,«Õ‚UED`ÃBÀïËÌ®DDDJ ‘HL„ììK= qqpÛmP®œÙe9†ŸñšPãàr³+‘HDD¤2CCÕ« K°¡h”´Ìì2DD¤R)€„ã1´ÜiرÃX«;Ù°#Á!>ÞìRDD¤„Q)€„(_ÊïøÍ8PÂ{@.´0&ØÛ–j–ˆˆ-‘8tèŠùP§ŽÙ%9T¥:þl§Çš]Šˆˆ”0 ""»oÎü‹Åì’ªJˆ%Ë*)Z ""Õ«eÃo¿•øáWp9€xÜ'N˜]Žˆˆ” ""pè4óúÎ+$(¶WŒ`ÿŒ•&W#""%‰ˆˆÈ_HM56>o|>ÜÜ eK³Kr8oo˜»6„£žÕYô÷XfÎ4»"))@DDþBÎ 5WÃí·C™2æä$·Þ Uî g¹XÞxÃìjDD¤¤Pù 9ÄW\©~u%·NÔ>»‰äøs\¼hv5""R(€ˆˆü…„ðçv—ºBDV»Vö58`v1""R(€ˆˆü…„¸Ëoñ¤´úõÉ®äO±ìÙcv1""R(€ˆˆü…C‡ ³÷jcmÚš5Í.ǹ,¬ÚÓѪ"""ECDDä/$$@‹¬¸R±a~,´¶¯aÿÎ ³K‘@DDä/‰ÏâÖÓkKßð«xÛÓ±nÚ`v%""R(€ˆˆü »Ê'lÇ+3µôfÍÈðð¥êÞX³+‘@DDäOüþ;4ÏXÍÍZ´0»sxxp²N8·¥Ä’žnv1""RÜ)€ˆˆü‰Y³ “g4k>>f—cšÌ6´cû÷ÚÌ.EDDŠ9‘ë°Ù.ï8¬mKéð«KÊõŒÀÓ[ò»Ù¥ˆˆH1§""r±±~èg÷•Þù—øÝÕ†Lܱ-×<¹9 ""×1s&Üg¼¼Ì.Ç%ÀùfT<¾ ûñf—#""Å”ˆˆH>Μú§WkþÇUZ>ÀΩ+M®DDDŠ+‘|xžJ$à|¼æ\%â¡»WçÀ Ñ£""’º§.m@¨<¬V8w{UvÇrü¸ÙÕˆˆHq¤""’Æ©qœ«ÁÁf—ârBŽ ©}Ó'3»)†@DD®rñ"´Î^MR]õ~ä§Lܰ‘0{Ù¥ˆˆH1¤""r•3'3hÎÎݦùùª_ŸTŸê×<)<‘«¤¯Ù„7Éh®|Y,$ÖnOÓs ""Rx ""W[GÞ¸5ojv%.ëLãö´´­!íL†Ù¥ˆˆH1£rIjj*£F¢GøùùaµZ™>}z¾×îØ±ƒ=zP®\9üýý8p IIIù^;uêT4h€uëÖeÒ¤IŽ|"R¼6¬f=-(àiv).+£u>¤sæ× f—"""ÅŒÈ%'Ož$::š]»vÑ´©ñ©§Åb¹æºÃ‡Ó¡CöïßÏØ±cyñʼn‰‰¡[·ndffæ¹öã?fРA4nܘI“&ÎðáÃ7nœSÞ“ˆÜ˜r¿ÇG8*˜]‰ëòlÓŒT|ÉZªaX""R8îfà*‚‚‚8vìlذ–-[æ{ݘ1cHKKcÓ¦MT«V €V­ZÑ­[7¦M›Æ AƒHKKãµ×^#22’Ù³gðä“Ob³ÙˆŽŽfðàÁT¬XÑ9oND îða|O&ŽpžS¹®ÊU=ˆ#œ&kc—Í.GDDŠõ€\âééI`` v»ýº×Í;—ÈÈÈÜðÐ¥KêÖ­›4–.]Jrr2C‡ÍóúaÆ‘ššJLLL¿)qÆ„›½Ãñð0¹±DPaû*°ÙÌ.GDDŠB8rä'Ož¤E‹לkÙ²%›6mÊ}žóõÕ׆……aµZÙ¼y³c‹‘³z5§+Ö$½â-fWâÒ|}aW^©§á÷ßÍ.GDDŠBHLL jժל«Zµ*ÉÉɹó@qss# ÏužžžøûûsôèQÇ,"…Çþ[4ÿ£ ö¶!Û걚"""§Riiixyy]sÎÛÛ;Ï5iiixzæ¿‚Ž——Wîu"âBÒÓaãFvVT)ˆrU|‰÷o®"""…¢R>>>\¼xñšséééy®ñññ!##ÿõñÓÓÓs¯²q#df²ÅW¤ *W†­"Œò'sçDDD®¤U° !gèUÎP¬+%&&âïïÇ¥Y«U«V%;;›¤¤¤<ð222HNN&((èºíŒ1âš² À€ŠâmˆÈõ¬^ ¾¾l¥‰HT® q"¸çÈ{pð Ô¬ivI""EêË/¿äË/¿Ìs,%%ŤjJB¦råʬ[·îšsk×®ÍÝ? Y³f¬[·Žž={æ_¿~=6›-ϵW›8q"aaaEX¹ˆH\´lIò9ªéoé¿Ë2ÛObc@D¤ÄÉïà7Ò¼ys“**4«î¿ÿ~-ZÄáÇs-Y²„={öðÀäëܹ3~~~Lž<9Ïë'OžL™2eèÕ«—Ój‘°ÛðpΜA= P¹2ìIö‡F4DDD L= W˜4i)))¹+T-X°€„„†NùòåyõÕWùæ›o¸ãŽ;xöÙg9wîï¾û.Mš4áñÇϽ—··7ÑÑÑ 6Œ~ýúѽ{wbcc™5kcÆŒÑ&„"®&>Ž3Èç Q¹2œ> ÙDà¶|©Ù刈H1¡r…ñãÇ€ÅbaþüùÌ›7‹ÅÂÀ)_¾<ÕªUcùòå<ÿü¤„AK IDATóŒ9///"##?~|îüC† ÁÃÃñãdz`ÁBCC™8q"Ç7ãí‰ÈŸ¹´¡z@ ®reãñ|Ó*|òœ8—6t¹+8p @×5lØü±@×FEEu3e‰ˆ3ÄÅA:dT¨LzºHA䬯qìÖ*¬\ ÷ÝgfI""R hˆ+:{^®³Œ¯ˆ8@\\nï(€DNÈQ·¨^]ó@DD¤@@\PÚ¾£ØÞù¿tˆ¦U+xóM³+)á.\€Í›@ )'€œ< DD(€ˆˆH(€¸ ½îõy+û îøm,Í2×2z4lØ`vU"%Øúõ•mÛ*€B… àáqEÙ´ Î3»,qq .¨Axb÷+¸·hÆGiiÞ0¡CÁf3»2‘*.Ê–…ÛnS)‹Å˜’”„@l6X³Æì²DDÄÅ)€¸ ww¨q«̘åàA¾mø k×”)fW&RBÅÅA«Vàæ¦RH—z@ê×7žhV¡ì؇™]…ˆˆs)€¸² `ìX‚¿ù7c»/å•W4ºA¤È]±! RH•+_  ´o¯RH<£F™]…ˆˆs)€¸ºgŸ…x~ûãd&ŸÕ\‘¢¶¿ñtÛ¶€@¼½ÁÓÓ亊‰ÜÆ0¬5k´‚_Ùí°s§±ÿ¥ˆHi¢âê¬V˜6 ³§˜h}ž­[Í.H¤„¹´áfï6Ú„°® ééZ5£€Ž5`KJ2»çR)jÖÄ2aOئb_cv5"%K\Ç*Ö#¢éé®@l67ndÁ‚|úé§,\¸39ãÃ\Hî$t€¦MÁ×Wð®cÈøÇ?.?ß½ÛxT‘ÒF¤¸ˆŠbKpO^§N]súÂÈÌ4¡.‘bξz5ËÒÃ9–-sÒ§Oš7oNŸ>}N2ùöÛËÇrHn’ˆH)¡R\X,Ä=1kæElC†^sº[7xë-ç—%R¬?[·²$½-ÞÞ°p¡ëgŸ}–¥K—’˜˜Hff&{÷îå“O>Áf³Ñ©S'æÌ™cv‰€@²² %åÒˆXµJë†_eÎãßÓ\ž"“@Ο7F®‰ˆ” ÅHíˆ †ñ_¬ß̆¯¾Ê=ž‘k×jصH¡­[‡Åfco@8QQFIIqÒµkW:uêÄ-·Ü‚»»;µk׿É'ŸdÕªU|ñÅôêÕËì«vC#€œ> ¿ÿnZM®è‹/ 0Ðøy½s§ql÷nðò2¾Î§c[D¤ÄR)Fš4¯xCmûƒ‰/-¿k—ñÉÚž=&(RÌØWÇqÖRžF4¤O㩵k]#€\ÕjeÀ€øøø˜] p9€<ý4DGÃèÅmȲ¸ójD,ññæÖæ*`Å xã ãùæÍÆãîÝТ…ñµæˆHi¢RŒT©¾h?Ê”G›-we¬ƒµú¥Haœùq5kì­¹÷~+:@ùòpö¬kWS¿>¼þ:dgÃûïÃûû²·|sŸ‰eãF³«s _}e,íüè£P³&lÙb|h´îêÏš""¥ŠH1Ó¤ ü¶Ç¦O‡¥Ka„Üb³ÁæÖ'RlØíxlXÃ&ï¶tìhìûqçÆ)gW\Õª°ÜÜŒž%KŒaDIIP/*‚Ärð€Ýìò\Â_@ïÞP®œ±PØæÍÆFYY—ˆz@D¤4QqQ¿üò ëÖ­»æxãÆ£KxáxõURWm¦iS㼆a‰О=”I;…{‡pÜÝC½{Î ‡¦nݺ,^¼Øñ9‰ÅréŸs„³[š]’évî4z<zÈxÞ´©ñ|×.ãyX˜~@D¤4QqAv»Ñ£GÉ«º4š4}ûŒUSxûmhØg~{˜^ÓðñQ)¨”Œ ë<Ô:÷XÏžÆP™à`Ƕm³ÙxôÑGqww',,¬Hï»9g‚™""ÈÆŠß–¥fWâP+Wþõb_±±Æ~²]ºÏo¿Ýè)Zº|| Zµ«öR)@\ÅbaΜ9”/_žž={’œœœ{®Iãñ÷ß//Î|8‹êYûø¿ßÿN: "uúûÕl§a+æó÷7þ}÷9¶í‰'ò믿2}útüüüŠì¾}ômÚ´aWÎÇëf©T‰C•›Sç`ÉéÝ¹ÚÆÆ‚_?ÿ|ùرcpÛmW …=SY\öÊöï½{ÓqÉTå(ß|uêá$Ïnò""¥€ˆ‹ª\¹2?üðIIIôéÓ‡ôK‹Ä7lhüÂÊ™÷±9³/3Žz?ý‡Êý¨"R@Þ›âØâNµjyóeÇŽ¼òÊ+<ÿüótíÚµHïýØcBTT6“÷áHlÔ•æg–\Ú¡°äùåãñʧ•+‡ÍÏ4fæW­ÊÀ•ƒ*“bŒ³²Ù¨ðùDRƒ&FùKgÏRåävN×Çbq^³v»áÇÂÛo¿]ä÷÷õõeÊ”)¬\¹’É“'ùý #½]í'8»zû5çÆŽ“Ë»i9Sw¶m»|lëV¨ÊQ:¿ÝÞy‡‹ƒŸ¦X5zÌŸ‹a9|˜Oj#’EŒ‹k "Rê(€¸¸ððpfΜÉìÙ³yå•WxðA˜9ÓØ³`ëVhÐЂuÚçxX²xóð ÒÓJæ'Ž"E%;n-Vìxu wj»ß}÷‹/fâĉx{{;¤Ž;ò·¿ý‘#GrìØ1‡´Qeº·# oÎÍ¿vÖÿþsçšPTIK3ævøú^îHŽý„Qéô>²/cuäXâ©NëÖW¼¸BöFŽ -«ñå´iC¶*€ˆH©¢R ÜÿýL˜0qãÆ±bÅ ž{ÎXÎñÿ0>}kÒ¨Z•ý#?å¾#yܳKqiI V“L%êôªç´6³²²xá…èÙ³§Ãw13f ¼õÖ[mçÏT¯çÍJÚã¶lIžã6›±ÿÅ¥}T‹¥Õ«áâExì1c•«Œ !×bïä\™[hjßÄŸö¬Ycü¬®_?ïëo¿vSŸÅA•* û!’ÌãÉù5%"R")€#FŒ`É’%DDDP®¼ö|þ9lÚd,Í à÷Ä=|JcG\^ãHI1zÿEĹ"Ž5´¡yKçýtwwç‹/¾àƒ>Àâàq_•*UâÍ7ßäÓO?å?þph[×ËÝ»â·mdfæ?rÄøã=!¡øNY¼ØØöÁ½<ö®I"»kwÒ²=Ù8úÒ˲d‰1T¶U«kçõèa¼¶Q—[à»ïðÊJåÝb·Ó!""…¤RŒtîÜ9÷—¿ýÍX*ôâÅË+cÝr ¼^f"gʇ¿Ý.^`âDcU“þq-6•v¯a_åpÊ—wnÓ­[·¦N:NikèСԬY“±cÇ:¥½«Y,°3¸ ž©—'­a¬2ž^|ç=,^ ]»þXÉÆÿ©¾d'¦;?Ó°KU:v$7€ä~uIÕªðå—Æ.BCY;l:½ì‹¸8v‚Óß‹ˆˆ@Š)oo=<<ÈÝ„Ðb [ËðaÄWFÚøûßËc­?ÿܤbE\ÉΔÉHáb˜sç8›§§'ß~û­©“Ñ/ÔkÆ9JÆ_ã—ìÝ{ù|B‚ EݤädذÁ +¿*Œ¥ò®X ü†:Ô«gìù±|¹±,o~äjY="ÇKx½5vìpü›1™H16p =j Èqë­°ôtSx÷]ø÷¿9üÑ"¶o7Æ ÿïyFBˆ”J—Å‘ÿž­Ì.Åán»í6Ê–-kZû¡5ÝøÍ·sžÍ2öí3æE@ñ K—CǺtââxîì[|Uë5~¼Ð† Õv;w†ìlãú‚€xƒh.†ÀK/9´~W RÌä}~ë­—6#|æ¸ûnü^xŒ:>Gøì38~~üÑ”2E\Æé˜Õlç6Â:9yüU)T£,ÈèkÖ]= -[‚—Wñœˆ¾d Ô­ !ÏÁCq8¨¯¦¿É–-Æär06#¬\ªWÏûÑõ@^ü>pÄÄ0©Ï/LêØ÷!"b& 33“ìK·Õ«‡Ãî=øì3ÎgzñmÙGo•MÓ¦ðÙg&+b2Ïu«øÍ­™]IÉW£ÌKëa,}uiãŒ}ûŒÀCC‹gH\œ±:o¾ 'N°ùÅYÄqgóæËÄj…'ž€‡*Ø=ýýÇíõî';¼¼À?ÈvHý""®@¤˜³ÛíÜÿý<óÌ3Øívî½×!÷ÝÛèŸ9“†IËaìX-‚'Ì®ZÄ$IIøÜÅÁàv¸»›]LÉW£¡iunƒ~Àn7z@j×.ž$5ÕØ÷㮪›àƒà­·¨Ýµ&`,Å›³ À;ïÀ˜1»¯—”/I§,lxhÙF³­ÓŠÝ¿‘‚R)æ, ½{÷fòäÉŒ=šrå`Þ<8xУ¼Æû2_z Þz‹Gë¬Âb¯¾2»j“¬^ @J£voêÂ… ¼÷Þ{œ9sÆám¹ª5ŒÇ#{Â?’tÂÆ¹sFHHHñ 6¶lz|û4l#FP¯ž±\î¹pò$|—ØŠ÷3’wXôzAD¤dR)¢¢¢=z4o¾ù&Ÿ|ò +^aLŸ~s÷®\ÙØ;$+ :u·¿¿H{ûJÖMúí/_+"RÜ(€” nnn̘1ƒvíÚÑ»wo¶nÝš÷‚ûï'3jÁ³6™S¤ˆY6nÄšq‘Õ´uxyÿý÷éС-[¶tlC…ôä“OâããäI“œÖæ€ðë¯p[OBVq{ cNLHˆq¾¸ÌIŒ;HÔù‰ì¿ï% *òûáã–[Œ!]U¢î&ÞóVÊ~2¾ÈÛ1›H ãååÅüùóéÔ©93#¯àñŸ ômHûÿôC}ûRª¬ZE†‡/{Ë4-ÐÞ 7jëÖ­¬\¹’gžyÆqÜ òåË3hÐ >úè#Ο?ï”6zjÕ‚·7Þ…›=›ÞžÆfDÅ-€d¾ü§©DÅÑŽéÕÊÙÓ©S'cèV+[:?G‹ø¹d<ì6EDÌ¢R•/_žo¿ý– \{ÒÛ›¹ýfSæüqˆŠ2Æ@ˆ”«Vq  5nõ0þÀs?ü   úôéã¸FnÂðáÃ9wîÓovÌP¹»Ã«¯Â'?†²ÉÒŒŽ)ßP¦Œ±ÿE±˜ˆ¾i¡+¿`¢_4·ÔqÌÎòWA/=ÌE¼8ôö ‡´)"bR¨ÁÝuxÜþ™1KýÃÍ.GÄñìvXµŠµŽÿqæÌfΜÉàÁƒóítÕ«W§OŸ>|øá‡ØôÄÿýŸ1çã[{êîÉy^löyã |ê’Ðù1‡5Q­šñعóåcaʳÈûÊÎù\‰H‰¢R µoséË®îOÃóÏ_ZÜÞØ ðÒfÅ*&ÆøDS¤ØØ»NžäçTÇ2eÊð¿ÿýÁƒ;®‘"0lØ0þøã–/_î”ö<=aäHøŽ>x¦5f[SLÈš5ÃëYÿ e¸ãv¯ìÞ6m"ÏŸV+$tyœÊ){aåJ‡µ-"âl ¥P` ±[úk¼glÝûÀ’‹/ÂwÂîÝþú¯¿6–À)6.m@¸ðT¸Cˆ»»;÷Þ{/U«Vu\#EàŽ;î ~ýú|èÄÐAƒà­y·c¯^¾ý(&›¾ñëÞÆÌÌ~7µÑà_±Z¡iÓk×ÔýÔäÌÄÏ׸ˆˆ“)€”Rðë*/˜=’“¹0à ¾üÂØäª&¯±gœ> ©©Î©U䦭ZEzíFœ¡"uê˜]Œù, Ÿ}öï½÷žÓÚtw‡{îµ`éÓ¾ûìv×ïY¶ /fßÀbÇJp°óKèÒÍÊ,÷ÇðY4œ´p€ˆˆ£)€”2±±±¼ñÆôêeç÷ßáëµ5áóÏñýq>/z~À˜10s¦2®gï^ãñ°f‘âbÕ*kÇ9z Þâ"<<œÐÐPç7|Ï=Ææ6 çÎÁ™3Î/ã/ÙíðÆÆö:÷ÆnçÎæë ñÅ=ãÌ™ãüDD@¤”Ù¶m£GfË–hú÷‡§ž‚-µîe’Ç¢/¾Äóí×R¥Êõ{ARR )ÉøºX¬^#’œ üÁïÛQ®œ1QL•*Á·ßR«–qh×.sK8v >ýþû_cmŽ ßýbÌ»ˆŽæh¢__(_ÞœÚÚô¯Îr:’1ýKs )b ¥ÌСC=z4o½5ЦMÿM… Ƥô‘ü ÛíÍðzäþ1ü3g^îé¸Ò•=# âêRR`õø8V[Œ èŽ\‚W ÀÝz÷†9s¸­‘«¶l1»(ø×¿`ð`c]ŽaÃì\xáu‡ž=IL4z?Ìúo'2¾áÜW,S§Ì)BD¤)€”B¯¾ú*/½ô¯¼2‚‡úœ `À£žxÎ7Æ?ñëÃøzeçÌÍ#'””-«!Xâú¦N…ecVqÊ£ ¶×ÒüWñàƒ°k>»6S¿>lÞlvA°?ôè/ÂÿUXHÀþu0z4X,=êÍÏ ì–[ µû}`³±ãïÌ+DD¤ˆ(€”B‹…ýë_ <˜qã¢;v.'ի×_â¶øgÆ•ý'\ûÚ={ rec-õ€ˆ«Û»îð\ͯvüþ‡Å!ó?RRRÈÊÊ*ú—d]º;ï}õM›ºF‰7~b³ñzÆ›ì¬Ú)wS³Àäù·°½Rñæðý÷æÖ""r³@J)‹Å‡~H¿~ýxýõ¬\ù“q¢{wˆŽæo'þIÀo1×¼nϨSÇØ4KD\]¾L²×rÇëíøï!6EíÕW_%<<¼èo\’yx@ß¾ðÕW4»ÝÆ–-mnIññP£0guÓ¶ðQpt!Xfòõ…oô¥‹}1ƒúžÎÙËQD¤XR)ÅÜÜܘ1cÝ»wçû+?R{å¶Õ¼›ç7=bŒK¸ÂÞ½Æ*B!!‚%®Ïgç&¼²ÓðèØ–¡CïŠRzz:_~ù%]»v-Ú› >>›Íæ¼ €„:z­!5öís^ÓW;sƘ/T£Z¼ù&;jô䇳ísÏ»B€Gÿûq'‹nißqäˆÙÕˆˆÜ8RÎÃùsç2qâÄË­VVšA’Ýûý÷CZZî©={.õ€ˆ+³Ù ÖÑ•dyxCX˜CÚX¸p!)))<ú裹¿³lÛ¶š5k²téRç5Ú¾=ÓhûW€¹Ã°âãÇæ;gÁ®]lîMB‚±ï… F@1»€  Òšµ£/sôˆk ‚——–«–w jX‘ûìsaç.:ìvNŸ6`É‚u挱†¿ˆ+:zÚe/'¥A8xz:¤3fЪU+êׯïû;Ëm·ÝFݺu™2eŠóµZ¡|Î&4(ËôâA5g¼÷݇O»æ¤§Ã‰Æð+pk¿¾tçgw5»‘¦"ùªY¶r;{_ú¦MƒO?Í]+§Ô "®ëÀ>Äb‹èèû?~œ~ø¡Ø÷~€1',**Šyóæqʙ˼>ô?ÎãÁ?›@[§âv8þùOc2ú¥ãG_»Jñî×O2ñ\þ‹Ù¥ˆˆÜ0ÉWÍšÆãºúgžáÔë£$'€h€¸ªÓ+¶áÇiÊG:&€|ñŸ¹¹ñàƒ:äþÎ6pà@ìv;3gÎt^£aaд)ýÎ~ʦMÎköj‡÷¤ñºe4–‡‚Fò .1  fMöz5¤Ê†k ).@$_åÊ¿?ÆR¼&@³f´ß—zþIT¨`|h±¨D\—Çêå\ÄrÿéÓ§s÷Ýwãçççû;[`` }úôaÊ”)Øívç4j±À AÔß³Ž%rì˜sš½Zƒe“©l;o½µ—- Æ,3wAÏϦ Hì1&:‰ˆC r]5jdóÍ7¯søäI˜3kz3³úCVžžP¥Šˆ¸®€?V°£\+ðñ)ò{Ÿ:uŠóçÏ3pàÀ"¿·™¢¢¢Ø¾};¿ýö›ó}øaðôäq>7gGôsçèýÇXVÞú9;UZ,ÆŠi9= fŸ {Qñâ Ø°ÁìRDDnˆˆ\WPP;wþÎ;“èæÆËµæÐôì xùe@KñŠ ³Û©“¸‚ƒ¡Ž~åïïÏž={ˆŒŒtÈýÍÒµkWBCC;½B,ýû3Ø2…ÍMøDÿƒðÍ:˦^¯ç9\½º@]gþGŽ‹ÍÛ’b©‹™]ŠˆÈ Q‘ëjР •+/åÂ… téÒ…¯ëóK¯‰ðþûð¿ÿi3Bq];vP)ó$)·;&€€1qÛj-Y?BÝÜÜ2dˆó†`]b<ˆö¤Ì]âÔv9u û»ïò£Òíy7‰É ®²È•‚«»ó½½'¶… "R<•¬ßžN°~ýzúôéCPPeÊ”¡AƒDGG“vÅ^;vì G”+WHRR’IUߘ5àØ±Züüó¯œcàÀ,X°€3gÎ0fÌÒÒÒøõ×_yúé§yå•W˜={6[¶laÚ´i澉BÈYŠ÷ÀXº´!={.&!!ž;ûôáìçŸãaÉbú…¾œMÊ`Ï2ÄøEݣ̚eníRŠÙíxÆ-g9sÿ×ç;èaNùã7u\‘Þ7%Ö®½üüôi£ä=^ät¹Pb›=‹Õjl®z¥œ@rñ¢ëõ€T«Éø“T»5üô‡Á'Ÿ˜]•ˆHÁ)€‚Ï¥Õtó¿å–[pssÃóÒnËsçÎ%22’jWüFëÒ¥ uëÖeöìÙÎ+ø&åü^´þøþö·&üòË/œ8q‚½iiì;—ÖüÆÖ.ÏѤ ,XÇC³fðí·æÖ.¥Øž=xŸ>ÆJkÇkþ¨æéÉñ‡_à®Ó³øý‡„"»íûïC»v—ç«-ZwdýL$1¼bÇÞC^ƒ‡GÞ×]Ù#âj= eËBÅŠ°;´,YÂ?Èæ©§ =ÝìÊDD F¤žxâ ªT©Â“O>É–-[8tè_ý5}ôÇÇÇLJ#GŽpòäIZ´hqÍë[¶lÉ&3wÛ*$ooãïÇC… н;„……±{÷n¨xW[†ñ_"¶}Ègm§°gDGÃð.\0ûH©´|96‹•ÃÕÛáæfv1R·ŽÄ9KyN½6¡Èî¹v­1$tüxãùÂÙiLõÆÙfù$ù~¾ø‚k†_Ñëáîn|íjŒ^ßÊwƒÓ§IŒÙhUB)>@ !((ˆU«V±sçNš5kFõêÕÿŸ½ûޝùìÿ8þ:Ù1Cb„3öŠ‘˜EíÙÖ(U¥C--~ªC+ÚªZ7:t¨­öÞ›Ø{o[‰$2Îï¯ µ2Nr2ÞÏÇÃãÈ÷\ßë|ŽÞ7ç}®EÇŽù裸ÚÞ% IDATøéÁ¿n—¬ tʘ½»»;AAAinHH¼ò 8:×bGz<< ÷ ž¶|—Ž›Þ'Ó¾­´n aa°zµµª– mÃθx“«¨eOŽ»wïÿüó¡¡¡íW±Ï‘…Õ>¤ÊÞ߈ Hú©„f3ìÜ nnðÛopîTY6÷È dö ^^&.^46Üø/[ÛGÓ²RÛ,0Öl‰òÁœ%+ÇVÆÁ‰""iH\½z•¦M›b6›ùí·ß˜;w.Ý»wç»ï¾ãÿûÀÃݰc?­?ÆÉÉ)N›´ v}ûöO>gcß}ùÿ >>ðÚkpñ"%J@‰°`AÊÖ*‚Ù 6°Õþ%бl׋/¦K—.\Ò®CÉ*¯ßÇÜÙ«Ý&¹¯sçàæM1ÂøŸÆçMÐ7úGî~4SÉtíj´{ÚHìõÔv z,8hÏ•Rui`V‘´E$†J`` ëÖ­£G¼òÊ+üþûïtíÚ•Ï?ÿœ   ‡ëD"""ž¸?üÁ]çd8™9¹”. ¹rAƒÏiäàÿþk ‘´j¡¡´n ‹AttŠ•*Bô©³Àìk/QÃÂ;ðN›6ªU«R¼xqËvœŠ]½z•?þ˜+W’>_êæ`L®oÉ¿ê/cø" ví2›4wzDñɱž\pò"ÇðÏxóMc¤ãYÿI L}§ ÇŠ=vK¦†Ôd …s‡*€ˆHšagíÒ’Í›7S©R%òýgBpË–-ù믿طo%J”MÅzÜåË—quuÅþ¿«ÿ£OŸ>¸¸¸Ä¹Ö±cÇ8[ý¦”¾}á­·ŒŒñ\yò‰£F èÒ…Ö}góÃ6øû @ÍæÔù¸¤!!ð[› |Œ‰V?Ô~øí¶%ܺu‹¥K—òÖݡ)µsppà—_~¡@ôë×/E^Ód2&<ä7Ò~„ÍÖ-Æpk"ìÜi|PÏ“¾Šù‚ÌìfÚ[›(úà/´‚aÿþg>}ŒÝÔ¨@¸v ~wnH["i™}#.4µvY"éÎôéÓ™>}zœk·oß¶R5é‡HDFFý”¯ôc×tDEE‘?~råÊÅΧ|s·cÇ*V¬øÂ×5jÞÞÞI/Øœœâ?ÿù˜ƒ³J”à‹yóð-ù%¹seà@ˆ‰Ý»aÕ*¨U+y때küxp?¼¢èÙßåÅ7$Àœ9sˆŠŠâõ×_·h¿©]Ž9xíµ×˜4iŸ~ú)¦ú¡}G[Þÿn ¶×…É“oAa×.¨ZX¾œìã‡sí“á¼>¬zœ6eÊ<û~ooãWj»>eÅù„æô yc@D,îi_ïÙ³‡Ê•+[©¢ôAS°ÀÛÛ›={öpòäÉ8×§OŸŽ­­-åË— M›6,^¼˜€Ç¶$Y³f 'Ož¤]»v)ZsJŠŒŒdì… ŒÉ“›aß2¢òtöíƒÜ¹o놵v…’žÍ›œ6­ÅKï{Ú´iÔ¯_ÿ©›K¤wÝ»wçØ±cøûû§Øk–)Ae_bS¡Îðá‡pìØmV®4Öš=këÙØ/>ê„ΡiSrÿØŸ§,ÏK“ ˆý SÆT¹µJS°D$ÍPI€þýûcccCíÚµùöÛo?~<Íš5cÁ‚tïÞ¼yó0hÐ 2eÊD½zõ7n~~~´k׎òåËÓ­[7+¿‹äS®\9Ö­[ÇwQQ,rqá͵ݸ½rsçácåJ㈥]¾ þÈsï¼dÙréÒ%Ö¯_Ïo¼aÑ~ÓŠúõëãééɤI“Rôu;t€¶×Æ“¿ÁÚ0ä“8kÊæÍƒ'`íÚ§ßâØߤÛÌÆÆPîß'z*Wj;RªdjÕ÷›‡; ³Ùºu‰ˆÄGúùÛ8”/_žõë×S©R%~üñGúöíËÙ³g6l&LxØÎÃà 6P´hQ Àˆ#hÑ¢«V­záú´®lÙ²¬[¿žÞööì·±Áܺ%ж-+Ç[»BI,€z¦ Ƶk[´ï™3gbooÏk©u1@2³±±¡[·nÌœ9“{Ý×_‡k÷²Ð0x6ÏSêçžìÚóðùÇ… Ÿ~ÿþwXAc2…\3ææÊ•U§œÌ™ÁÕêÕêÖÀ'|=7nXµ,‘xQI jÕª±lÙ2îܹCDDGeÀ€Øü盵ҥK³|ùrBBB¸yó&“'O&W:ûðYÊ”)Ê x3sf®ÞºEd³f؆‡òÙg0g?ní %½™?Þȳ*T0}° ‚ Ò¿ÿ'6†ÈHÞzë-BCC™={vнf±bд)D)ÅéÁò:3ÉÚ³„…qã9b,"_´È˜nG` Õ¾lJq›ÓجZ %K¦XÝ)iÎøâ _> zQ—õš†%"i‚ˆ$‹R¥J1gófºæÈÁýC‡{ýuº¼ƒ»; fíê$=¹sÖ®1S#| ¼ü²ÅûoÓ¦ ß~û­ÅûMK<==iРüñGоîÒ¥°y3TÚŽ|æRäèbhЀ‹Œm¿ý.]úÏÔÎ ˆ)WžÌ7Ï3¢Á ˆÇÆiÕK/Áƒ™¿˜_ª«""i†ˆ$›%Jð«¿?7lˆÓÒ¥8~û_|alj³i“µ«“ôbéR(u‚¬·’%€ˆáÛo¿å§Ÿ~²Úëçèö õYG̉“4èYˆiYzÒ±°?•²fÃäó0iAêÁ+¯°èV-JGîdz]5«Õ›ÒœšÖ£4G¹qøªµKy!mÃ+ɪpἿb…qqÿþôú­(ÿÔèN¯^°oŸqva` ØÛ»e‰$Ô¼yЭÀ¸luêX»œt«Z5ë~˜oÜÞñaéOÇ8;èW:Å®öïìf“‰ý¦úl)=Â;àïk¢X1«–œ¢LuÍý7í­[ŒˆÈ (€HÊøôS8u ›÷ÞaÊO¼Þ{™!CŒCÇ~þÙXC¹b…µ‹”´hëV’y øúB–,Ö.G’I¡BàåÓWädÆåd÷ =¼÷²~é=¾ÿ&œK9Ëc_(?6 ´3ww.d*Až£ëQ‘ÔNDR†ÉãÆÁ¹sî׆»m¥ï¥qv†jÕŒ)Y¤›=ú%eDGõËÑwZ ?¶v9’Ì52œŒ‰Zõ „Þ¥`äq†í 3høxàLºx_oí2DD^Hk@$åØÙÁ¬YP° ­lÎ/ß\åØ1=ÂÂà)‡Ç‹<×Õ«P>f/Ž÷nkýGи±>rç6FC²e3vA[·òå³n}Öv£l] ‡…+W¬]ŠˆÈs)€HÊÊ– –,Áæ~½·"âÖ~*T€ìÙaýzk'iM` 4`5ÑΙÁÇÇÚåH2«[×X/V»¶1¨«Y32Ôzg‰®]€ÈUë­Z‡ˆÈ‹(€HÊ+P-"jÿ~UªÄü¹³©SGD. ^f Q5ꀃƒÅú>|8þù§ÅúËÈ’~üúô±v%©S®ry9Ž¡+7[»‘çRë¨\¦M£µÙÌ™öíÉœy2[·ë@DâëêÙ{ÔföMX¬Ïˆˆ~øáN:e±>Ó£Û·o™â¯ûñÇP«VŠ¿ìs;wŽ#F0eÊ6lØÀýû÷­RGÁ‚°™ZØnS‘ÔMD¬Æîµ×`äHúÙgt%,l´ÖH‚8n߈Ø4il±>W¬XÁ­[·xã7,ÖgzsåÊòçÏÏüùó­]JªÉ7ß|CçΩ[·.îîî¼ûî»ìß¿?Eëðð€-Ô$󙃜¢¯-"’ bU6}ú`þàÆ›L´ _|1³Ùlí²$p?°‚kù¡ti‹õ9mÚ4Ê—/O™2e,Ögz“7o^¼½½?~¼µKIŠ/Npp0!!!ìÙ³‡^½z±lÙ2¼½½ùôÓO I‘:œœà|þšØ˜cÀß?E^SD$1@ĺL&L£Faóê«Ì2Ù¶~(½{÷&::ÚÚ•IPê åkwErܽ{—… Ò±cG‹ô—žõîÝ›õë×sðàAk—’ìBCCãÕ.sæÌTªT ???N:…ŸŸ&L C‡É\á#Å›{dë›5 KDR/±>[[˜2… Ïj,& ÿ½{÷Z»*Ií.^ÄóÞQ.–¶Üô«yóæ¦mÚ´ÁÝÝqãÆY»”dµuëV¼¼¼˜7o^‚î³··ç³Ï>ãðáÃüòË/ÉTÝ“š57±1º&÷VoI±×I(Iœ¹óÏB®ãÁæ¬îT)PÀÚIj·bÑØp×Çr ЧNJ:uðôô´XŸé•½½=ï½÷ÿüóAAAÖ.'YüñÇÔ­[—"EŠàë뛨> .Lþüù-\Ù³Õ¯þ¶µ°ßíVØ$@D$>@$Õ(]+'“Ú.'ìV$‘šCH+W{þ_ºdíê$µ‰\¼‚TõxN‹ôwåÊV¯^M§N,Ò_FЫW/¢££™4i’µK±¸‘#GÒ£GºwïÎÚµkqww·vIñ’% „Vª‰ýý{‹àEDâKDR•=é˜}QGNp£^;Ú´ŠdóføækW&©JT6ëV³‚ÆXêËå9r0kÖ,Úµkg™3€úˆû÷ï[´ïȪ5ñ¸sóÍôyP¤ˆ¤] ’v8;ÃÂ…Øxd%¨ìÚˆùóç³|ùrþïÿþÏÚÕIJX¿îÝ#²q ®^MzY¾|9žžž\½zÕ"å‰!-„º¨¨(k—S±ÆŒÃéÓ§=z´EûÎÛ¶—æl³h¿""I¥"i‹‹ ¦ˉ¶s¢ÑOhéãÃÆSd×±¾ –™ß“+9Kc6'=€L:rçÎm™…#GŽP¸paŽ9bíRžéÏ?ÿ¤F„„„X»Ê•+GïÞ½ñóóãÞ½{ë·rÛÂ\&/Wçj–ˆ¤. ’öäÍË—5Va{ï.4iB//—˜Í„Í^į—ZðλÆ.EI ÁÁÁ,X°€N:¥ÉÃæR«bÅŠa2™øê«¯¬]ÊSmÛ¶wß}—Š+’9sfk—óÐ×_Í®]»È”)“ÅúÌšÍıœ5qÚ­…è"’º(€Hš”µBºç[gÎ@Ë–`Áo %u2ïÝGþÈóœ)÷ Û¶¤(øþfÍšExx8;w¶\‘‚ƒƒ_|ñ³gÏfïÞ½Ö.'Ž€€^}õUªU«Æ¸qãRUðtqq¡H‘"ï÷^åZ¾±“˜°‹÷-"’X ’&/Ë˽h)ìÚmÚ@„þMÏîMÇ-\¨õ/qú4lÞlìô“Xüñ5ÂÃÃÃrE ]»v¥T©RôíÛ7Õl•}ïÞ=^}õU˜3gÖ.)Eä~¥&΄sæß=Ö.EDä!I“Їû÷á‚G X¸Ö­ƒŽ!*Š[·âf‘g}úê+He_ÐÊsØ,˜ÇbZP°¨=9sB‰ïëØ±clÛ¶îÝ»[®@yÈÞÞž‘#G²aÆd9é;¡bbbèÚµ+GŽaÁ‚jÍOÙ7+J&.ÏÑ:I=@$M*^ÜxÄ<^¥`Á¤w÷矒3gNZµj•ôÎ䩚4iB³fÍèׯáááV­eÈ!Ì™3‡©S§R©R%«Ö’Òœ³Ùs|8¯¼òŠÕê°¦Å|)pÉßÚeˆˆ<¤"i’)òXÌí_çëü¿ñÙU¯?ýû™™9³5S§nàüùóøúú>ÜôüyâG 4ÆÍ33–X7¼yóf¾ûw$ÏU¢D ¾üòKŠ-jµœÙºu+ýû÷·Z Öf[Ã÷¨BŽX»@DÒ°âÅãuëà›€îï=›Ÿâ+Ûo°³ƒÀÀ*lß¾,Y²P£F V¯^͹sÆ=I®\mÛXŸãU<=-Ó¥ Y²d±Lgò\ƒæõ×_·j ÎÎΩjÇ«ø¸víŸ|ò ·nÝJr_ù^õàÂlMÑÔADÒ¬ÿ‘#¡|yðû! †“ßWŒõÁ²eP°`A¶lÙ‚¯¯/M›6eÞ¼I€1+ Úœ±Í 66Ìja‘õ"iÙlfüøñŒ?>É})M¸·VÓ°D$uP‘4«xq8{¢¢àðaX²úö5·`à@4ˆwO÷Çkå8ÂÃ![¶l,^¼˜=z°xq/àÑÑp钵߉<×̙Р/¹ZlD$µË“'ݺuc̘1I^Äog'rú’å°ˆˆ¤ ’f/n„S§ {w(ZÔØ‰÷¡o¿åF×Où!gúOÀÎÎŽ &P©Ò.Ê•+ hVjõÚkðíû—`Ó&"^yë×шd(Ÿ|ò ×®]cæÌ™Iî+¸”/ž7vCd¤*II³b·âíÑvï†iÓ Î¦F&®üÈïY>¦ô¸÷á×_\6qóf%êÔ1š)€¤>f3¬] 6sgƒ¼Ý‹4"ÏÌ¢E‹¬]†E/^œ&Mš0vìØ$èè\Ïgsw·´Pu""‰§"iVàà`œ÷ñõ×P­Ú“mL6&vtø™)Ù{Ã;ïÀe¬ý(WräÐNX©ÑÅ‹pçÔ½:“ûõsöv@# éÉùó牶ЬëׯS¯^=ºuëÆíÛ·-ÒgjñÁ°{÷n¶oOÚòB¯Vâ>ö\š§iX"b} ’fÙÚB™2P« ðìvÍš›è|g,Áo¼ o¿Í­Ñm|›^° F@R£ ¨Á6–~ Œµ=‰ë/44”©S§Zý@<1„††R½zuÞzë-¢¢¢’Ô×áÇ©Y³&¬]» U™:4mÚ”"EŠ0nܸ$õS¼¼3l*µIDD¬ODÒ´Å‹aÙ2#Œ<ËË/ƒ½½‰|ÿo¿[ÿntb … ==€\»vÍbßÌJâ8]œfŽ#s£Zqþ<äËöö‰ëoúôétîÜ™+W®X¶PI”Ì™33jÔ(f̘A‡ MT?S¦L¡Zµj899±eËÊ—/oáJ­ÏÆÆ†Þ½{3kÖ,®_¿žè~lmá|^_rœPëS‘4-_>xÑqY³BÍš°rµ LœÈ©Zoñ7])²cžžq§`EGGÓ°aCZµjEpppò/Ïtð ¼i7ƒÍX³3.$~ý‡Ùlf„ 4kÖŒB… Y´NI¼öíÛ3gΖ.]JÅŠÙºuk¼ï={ö,mÛ¶¥sçδmÛ«v˜ÜºwïÎÆqssKR?a|ÉrnÞ´Pe""‰£"BÆÆA…‘Ñ6L¯÷sœÞÄ¡û›4 šgÄÖÖ–~ø-[¶P½zuNŸ>ýð¹Û··$ù…î8LÉÝÜlڙݻáèÑįÿعs'{öìá½÷Þ³l‘’d­Zµbß¾}¸¹¹Q»vmÞ~ûmöîÝûÜ{BBBðööfÛ¶mL:•¿þú‹L™2¥PÅÖáâ₯¯o’SÌÓÊ8ðò|H("Ö¥"B£Fp÷.lßg/Ø2ªüб#-¦¿A‹à©Ü¹ó¨mãÆÙ¾};‘‘‘T«VuëÖðå—м¹•Þ@µÏN&x¢o_˜4‰²[eaöÎ8ÙF>u$**Š 6ШQ#†ÑƒBÌf˜9ÓXN"qÅ®ÿhÒĘùvfï˜>99zR³Ž-:[NäÙŠ-J­Zµøûï¿_Üø)L¥Kb“Ç}Zˆ."Ö¡"ò€››±åëöÇþM6wëλ.3©4Ú´Á3O8F¸ˆeggÇ’%KøüóÏ8p ­[·æÖ­[?nŒ®¬^òï%µ;q 0‡ôô„¬ ¦`Žˆà»ËÝ©]ÛÚÕ‰¤~]»veõêÕ&f_p[[θV%×±‘ÇøúÂÁƒjü|êüv«-»‡,„Õ«é0¹6÷îrûvÜûlmm6l‹/fË–-x{{³aÃ.À8y]â:yòѶº%¼ÌxoOP­ÖœÈG:‰ï÷âÅ‹˜O‡"éT»víppp`êÔ©‰ºÿzŠmûmŠˆH QI„={öЪU+\]]Éœ93åÊ•cìØ±qÚ=z”&Mš5kV\]]éÒ¥ 7nܰRÅ-cO IDAT_>>ÆY!±§s¯\ ööPæÓ&°r%9Ïíf5 ¸r$è©÷7oÞœ={öàææÆÔ&rá‚þÿ¯'x¸Î£µÓ Þ=²}È’*VL\Ÿ!!!T¬X‘#FX®P‘T*{öì´jÕŠiÓ¦%êþû•|É}…ÈÓ,\™ˆÈ‹)€$ÐÊ•+©^½:7nÜ`È!Œ3†-ZÄ N:œ9s???úõëÇ’%Khذ!‘Zª•)cìåïoü¼r%Ô¨Y²µjq}æ:ŠpNuàÒ¥§öQ¨P!6oÞLõêoŸpìØÅ«?-ˆ‰1F–bG@ZœÉ.Sþ9[‹êÕÁ.‘§ýòË/Ó¾}{Ë+’ŠuêÔ‰¬Y³’à{3×÷àæRMÑ”§ƒ 88˜.]ºÐ²eKþý÷ßg¶6laaaìÝ»ã<ƒjժѰaCþúë/zöì™R%KÙÚB•*Æ:ÈHX· xô¼[#oʳ‰Á d²|¹±µÖ8::R¿þÿØ´é3‚‚ ¦à;Hý.]‚{÷Œ€ÜñèqsæÌ¡E‹ÃÀË/¿Œ——³fÍJ±z%q||Œ²};ܽ >zÎÞä×·¶AÖ¬Æá Û¶?ýÁÁÚ^»àir(Åî€U¼8ðóÏD¹{ð/m‰‰!Ñ ÐÇÇ;wråÊÅÎ;Ÿ¸ÇŽTŒÇ)k£FbáÂ…q~)|¤¬öíaîܧ?;Ó'v½‡Ù ÇŽA¦LðGTX²6ndµ)hºHÁ‚OxóÍ7Ù³gY³f¥zõêŒ=:]ä}î|ò‰1Ò®lØEæý66F‹¸ví?ýô÷ïß÷=E‹‚?¾ØŸ>·n%cu"iWÇŽŸøL6jÔ(k—•æ)€$@ìg“&MŠsý÷ßÇÞÞžºuëЦM/^'¨¬Y³†“'OÒ®]»«W’GìîʱÿyŒÑÚµPbn؈“mÅ…Û¼ô¹/gßõÔXÅ‹gëÖ­¼ÿþûôéÓ‡–-[r5¬ZŒ4þl 6¦Xýý7µ¿cÆáÃÕÕÚ%ФW®\¡_¿~¬Zµ*Þ÷);x0ßtÇŽdªLDäI P±bEºwïδiÓèСãǧ}ûö̘1ƒþýû“7o^ D¦L™¨W¯ãÆÃÏÏvíÚQ¾|ù‡»eIÚU 8:¾}ÆÏÇŽ/¿ ÷ïÃàR¶ãQ‘»ëPdß3†S€ãÇá½÷ißþg/^ÌÎ;™9sf ¼“ä»ýp¡B]4²g‡þý­U–HºT®\9J—.ýÄT‘çqr‚{ù‹sÏ)‡¢‹HŠRI ‰'òÕW_±}ûvúöíËþýû5jß~ûíÃ6lذ¢E‹2`ÀFŒA‹-XµjÕ ×Hêçèh,¦Ž=óãèQãZÍšÆÏÆX×ÈCÔÊuœ,Ù’N·1VdÿgzÕúõP½:LŸn¬>mZsÖ®=Ì|¢ï)9œ=k<> »vÁÔ©0t¨qˆ£ˆXŒÉdâ7Þ`þüùÜ»w/Þ÷-fâ„K5IQ dggÇ!C8{ö,?~œ>úè‰v¥K—fùòå„„„póæM&OžL®\¹¬P±$‡fÍ`ãF 1F@¼¼-X ÎÎÙÍ™}¦3”Á0p tê>Ìš[õ¤IƱ"_}å†Í£ÿk>XR’æœ;&,ˆ¼>ýÊ”Š$‹:Ê¢E‹â}O±b°-ÚóöíO|A""’\@D¡Y3cºÕÚµF)Yòä1ÖV‡æÊe|/àiÆruì,ãŒZµ¸ìž=àÕW‘”œ9¡{wx÷]ã€õØÏf³±«o“&°gußsB;gœ©âèÌœi¤¨¶ßM„˜˜ À©S§,Z§HzQ´hQªT©ÂìÙ³ã}OÛ¶°èº/¦›7áÌ™d¬NDä‘D(VÌøµt©1«T)ãsuÞ¼F@ìÎlŒG˶ƒ­[áÖ-2½T…†øåx|Vž¯¯qXß¹sÆÏçÏçgdÊ­ZÁåË•¢ï5±Î{0ý*(È8p°M#I%ÒèÑ£ùþûï¹ð¬-ÅD„víÚ±téRBCCãÕ¾Ih9´k¾óOÎÒDDRI¤fÍ`Þ<¸rÅc‹ÞØ;ã®@ãñâE BV|»“Ý÷Ëñï¸ü36δ__ãÑÿÁç€Í›ÇõëÇÖ­ÃðööfذaDFF&ëûKª‡ä³Ï "ÆŽMt_‡bàÀôíÛ—úõë[ªD‘t§mÛ¶„……±téÒxßóîÿ¹r-{1Žü¹Ý»“±8‘@D©Y3#h@Ü`LÁŠɔɨqöÂã¹^ƒÜø©á L½{ÃGA‡ €›/Û¶÷nÚ¥KCÙ²0q"ìÜiÂ×·9_|ñ>>>ì‹ÝŠ+:wê™Ö‹[¾ÿÜÝÕODDo¾ù&ÅŠcذa­Q$½)R¤Ÿ}öùc,Š“ Üšûàk³ ’±8‘@D饗Œ…æ%J€Ä0FAfÍ2‚Dd$Œhiô(ãâ²eP¥ 8£ ±dóf¨UËø}¹rN´iãÇöíÛ‰ŠŠ¢jÕª 2„ˆˆˆyÏñuÿ>„ܦý²nÆèÙ3Ñ}õíÛ—£G2eÊœœœ,X¥Húôý÷ßS£FÝcSÝ— æ}œ:œºþ.‘ôID$‘œœ ~}c÷«L™Œk±$vz¬B…Œ|Ѻ5>lǃïÞmtàãüAõêÆ#päÈ£’??ØÚ# UªTa×®] <???*W®ÌŽ$$`£ÄxÚTó€‹fÆ›ßÅ)üüó±:?þüóO&L˜À¸qã¨X±bâ ‘óñÁÁ|Ÿ˜=©wTUDÒ‘$ðó3¦FÅÊŸnÝ‚;w⎀øùÁ† Æià9rü§“Ø9W;C¼¾¸3™¢î<\2@ì쌑”Øê|ùå—ìÞ½'''ªW¯Î†DÌŸ 3ÑÿõW‚oåÌcÚØ’%q¯GLøƒÌä†ßoÿ9‰0þöíÛÇ{ï½ÇÛo¿MÏ$Œ ˆH’ žžÌzg ŸñÍNªUE!# O ;w¾û.þ‡Çnñ›Ð2}:ܾmlEœ% ü31Z¶“ ¿ê‹È[$SÂ:«ÊÖÈ—¢œáÜÎëÖ.EDÒ9 Ê’²e3~Ÿ¨jÖ±å'úqzúNcÌ*U _?Šå áêUcôáY¾ú 6°?îÌ™3Oì–fœ9R¢„1µ+¾gšÍÆ´«æÍih]Û‡QkTÌ'NÀâÅì¿æžØ¥"b%N/ù¾1ñZˆˆÄ‡ˆˆ…åÏo‘Ø-z£Y3cm†WÛò°s§1¤1~Ÿ|ò k×®ß … qË>™j!ºˆ$/ ËŸ? Ó¯0™ŠŽƒ|þ9>LL¹òÌçUrvoýÔ¹X¿ýflÕ[£FÜb2™˜6meË–¥cÇŽT¬X‘3f°vm49sÂ+¯íâ; kút#`4ò¹-[’íàúz-¥Ó/óõׯVÄñ û÷ïÇßùb"o,_¾œÉ“'Ç€ü>ä»èŸ¼…‰H†§"ba%J‹Å-®paV,¦Í2Ûm¼Pÿþƾ¿#&À›oB§NÆ!†wî<º½T©R,\¸7âîîNÇŽ1¢žž/ß}ìíã@Ž…V%ŽcSÝÇ8ÇdÙ2Þ›Y—*UàçŸ)Z¥J=¿èèh†J¥J•˜7o^"ÿPDäyÚ¶mË‚ ¸ÿ~¼Ú‡”ñ¥Lè¢#c’¹2ÉÈ@D,ìûïaöìäéÛÖÎÄžB¯1¼ë14ÈHEŠÀ7ß°xÊmááiSc=ÇêÕqï7›aòäÚ4h°‚uëvQ†½{{P§N 2Ç;€Ý7‡ï×W3ܹêÔ¡bEã`÷ë×áØ1cæYvíÚ…_~ù%_}õ­[·NüŠˆ¸p‡Àu'’¹2ÉÈ@D,,sæ§6hA… Á‰KYàË/!‹ÎaØ0ö,Ä”‚ƒ(—3Â…ˆÇ§a¬] ¿ÿŸ}:U%&f³gäóÏ?§xqÓ‹ÈåËD½Ò†_n¶åjÙ—ìÅ‹Çiboo ΘLOÞ~úôizöìIµjÕˆŽŽfÛ¶m 2[[Û$ý™ˆÈÓ•-[///þý÷ßxµÏݼ*1˜Z®u "’|@DÒ˜8gäÍ cÆpÿøY~7w§ÝÕqFBéо¥W°|ItœíxÇŒ²eaÏãÐÄàµ×ÊÒ®];Š{r Vh(¬[{Wß„/¾€’%1oÚL{friÌœG[~½À7xã7ðòòbáÂ…Œ9’;wâããc‰?y“ÉDÛ¶m™?>‘‘‘/lŸ¿tvŽ›J;Tˆˆ$‘4æig¹åNߘ‘ì^?ýû÷ÓsNv^-ÀÀòåœ9΢EðñÇP©’1xqò¤1‹  X18}¢£õ$­ZÄÐ"ûFŽÕb =6Œ-¥K3´Ã÷̦ž…â7§ kÖ¬œ:uŠÑ£GsîÜ9úô铨CE$áÚµkGPPëÖ­{a[8žÃ—œÇµ]D’>ˆ¤1… ë,BBŒí~öî5¦<•­‘ ~Hä¶],¬÷¯.\³þGA[vØT¢âîª^“§'Žyó»lÙÙQ5â-ï_!xÐ)ÂÖoç×ÛÈËU‚sdô­×8P'ˆu‡vqÿ`ìö•-[6\]])Q¢Ë–-{fÍŽŽŽìØ¡³D¬¡B… -Z”Ù³gÓ¨Q£¶¿V¤:ùvMŽû—Œˆˆ)€ˆ¤1±ÛÛž?eʿ߻×ÁÈšõA#“ ûU)8¯*^FóR¾#” \CÇb;±[»&ýb s<Æøˆ›…óNU9¯]f·$ÔÓ—/\À˜guõªñ+* ¢¢¸Ÿ);ù½óÒýƒüð£‰?G5Àc´cçNhÓÆÄÅ‹¹©R%7ݺÕM‰·+"ТE‹x·møqiî ÏÆÑ?¶á«""É@D$qw7vš:{Öø9&Æ8•¼yó§·/QÂ.‹Îã´Â|ùŒ_8Ù Á˜±àâíÛ?ê£Z5£€'Œ`#"éSî¼6ìqó%zÓVk—""锡‹¤166àé Ç?Ÿ>mLÕöö~ö=Y³>-yžbÅ <ºtL™]¯Zví‚7àæMðòJÚ{‘ÔÍþ¥”¼½Ó§Ì/n,"’@ "iPӦơ÷ïÓ¯àéS°*öHwÞ‰{½jU†%Kâ¶‘ô©x—ê¸Äò1:PD,OD$ z÷]¸v æÎ5Hþü`‰uà;ÂàÁPºtÜëUªS§ "é›ÓK>Ä`ââÌ­qα­IƒJ—†—^‚ ÀÙÙ2£5k¿þËÅŘvµf±lD;sФsÙ³s¯PŠœÛÆîÝÝ~ !"b I£Þ{6n4~Y*€(€ˆˆˆ`LúsçxzƒêÕÁÎŽŠÁ1™´]DGDDDDðööæêÕ«x{{?½AæÌP¹2λ6Q²¤ÖˆHâ(€ˆˆˆ&“ —ç7ªS6n¤b3‡§L]"’¾(€ˆˆˆHüÕ©”v>ËõëÖ.FDÒ"‰¿š5Ád¢ÂܸaíbD$-RI¢ï¾ûÊ•+÷ÄsG¥I“&dÍšWWWºté ým-""iYŽP¾<^W6ró¦¶â‘„³³viY@@Æ #sæÌ˜L¦'ž«S§9räÀÏÏ»wï2bÄ<ÈŽ;°···RÕ"""IT»6ùÿ]FL ››µ ‘´D$ úõëG5ˆŠŠzbdcذa„……±wï^<<<¨V­ 6䯿þ¢gÏžÖ(YDD$éêÔ!˸q¸s‰7ò)€ˆH‚h V"mܸ‘9sæ0jÔ(Ìfó# sæÌ¡E‹ÃÀË/¿Œ——³fÍJérEDDÄl6³oß>nݺõ䓵klÒBtI0DˆŽŽæÃ?¤gÏž”)Sæ‰ç¹~ý:UªTy⹪U«²wïÞ”(SDD$Ñ‚‚‚¨Zµ*S¦Lyòɼy‰*êE6*€ˆH‚)€$Âĉ¹páC‡}êó—/_ÀÝÝý‰çÜÝÝ "222YkI WWWš7oÎßÿýÔçmë½D=Öi',I0ºyó&C† aÈ!¸ºº>µMXXŽŽŽO<çä䧈ˆHjõÖ[o±{÷n<øÄs¦—ëS𣄹l…ÊD$-SI ÁƒãææÆ‡~øÌ6ÎÎÎDDD<ñ\xxxœ6"""©U³fÍpss{ú(H½z䨷.…«‘´N»`%ÀÉ“'ùí·ß5j¯‡‡‡sÿþ}Ο?O¶lÙN½ŠŠõ¸Ë—/ãêêúÜmxûô郋‹Kœk;v¤cÇŽz'"""/æàà@§N˜2e ~~~qÿíÊ“‡3™ÊRðÔà «Õ(’œ¦OŸÎôéÓã\»}û¶•ªI?Lf³Ùlí"ÒŠõë×S¿~ýç¶éÓ§#GŽ$Ož<Ô­[—™3gÆy¾D‰,XU«V=qïž={¨\¹2»wïÆÛÛÛ¢µ‹ˆˆ$ƾ}û¨T©‹-¢E‹qž[Rìc*.$oØYÎ.œÒUФ}^K:€$@¹rå˜7o^œ-wÍf3ƒ&$$„Ñ£GS´hQÚ´iÃßÿM@@Àíx׬YÃÉ“'ùôÓO­R¿ˆˆHBU¬X‘òåËó÷ß?@Î{™æ§ÇÀ™3P¤ï¿¶¶°x±•Š‘4A$\]]iݺõ×þùgZµjõðÚ Aƒ˜={6õêÕãã?æîÝ»üøã”/_žnݺ¥XÍ"""IõÁpøðá'νºU®Ñ+l°]³ŠáøqȔɊ…ŠHš b&“鉃=<<ذaŸ|ò  ÀÑÑ‘-ZðÓO?=wý‡ˆˆHjÓ³gϧ^ÏZÀ…=¦*TY»–È®=9²fMáâD$ÍQ±€uëž¾HéÒ¥Y¾|y W#""’2ÜÜ`µ¹>UÖüÁ¹³fbbLܹwï*ˆˆÈ³i^I”\¹` /cº~«k=¼hÅ¢D$ÕS‘Dqsƒ-Ô$ÆÑ ÛÝñ±êEDž """"‰’+„ãÌÍ2upÛ³‚"EŒë "ò< """’(nnÆã¹)°‘J%ÃÈ[DDžODDDDÅÉ ²dÃùáN§Mxx(€ˆÈó)€ˆˆˆH¼Ò©S'.^¼Ó°S†@òá{g¥ˆˆ¼ˆˆˆˆÄ[¶lÙX°`“&MŒ²g¯‰•4¢èé "òB """oY³få7Þ`Ò¤IDEEáæ;vÀ “õÜ!Jf»¤""Ï¥"""" òÎ;ïÀ²eËÈ• BB`½mÌ&Þ7WróÊ] IDAT&Ü»gí*E$µR‘©\¹2•+WfâĉwÂÊZØ SåÊ;µÐa„"òl """’`ï¿ÿ>Ë–-ÃÆæ4ÅŠM›â¶g¶Di–ˆ<“ˆˆˆˆ$XÇŽÉ‘#û÷æÍ±½s _ü@Dä™@DDD$ÁœéÑ£Û¶ýÜ7HÕª+íœ+€ˆÈ3)€ˆˆˆH¢|òÉ'Lš´p0ˆ 4kF3–(€ˆÈ3)€ˆˆˆH¢äÍ›—æÍ‹Ñ³'Ôªõàbóæ?Dø‰ V­MDR/I´L™à×_!{ö5"ÚdG±ãK¬Z—ˆ¤^ """b9Ù³sѳU®*€ˆÈÓ)€ˆˆˆˆE]«Ö‚Z÷×qK§ŠÈ“@DDDÄ¢"·À™p‚f­¶v)"’ )€ˆˆˆˆEyµ,ÁQJþ{÷ŸsÝøqüuÍfsÚ‰mv2†Fl˜*š³NhÑ­t‹;‡Bôë®;Ý"¥ÃM…;n·R¡(B‰ ¥gÎs9å´{ì`»~|\;Ø0l×5¼ŸÇ×®Ïõý~¯ÏµÏ.®÷>'Nú…³«""eˆˆˆˆ”ˆ””–-[†Ÿ¬~€ë¹sdgÃòåN® ˆ” """R"&L˜ÀÃ?LZZn=@•¬?ùß’Õ€Y)«MHNvr%EÄé@DDD¤D<óÌ3œ:uŠ)S¦pÇÓM8@Þ]À¹s0q¢9æàAçÖQDœODDDDJDhh(½{÷æõ×_ǯzkªßϪ/˜û™Ý»Í1GŽ8·Ž"â| """Rbž{î9¬V+3fÌ çÞð;»/l .\]@DDDDDDJPݺuéÑ£&L ñÓ·sœjܺk£GƒŸŸˆˆ(€ˆˆˆH 3f »víbMâV{ßKoyÜu§êÕáðag×NDœMDDDDJT£FxðÁùÇ?þAÓ׺–¾˦ßð÷Wˆˆ€«³+ """7žqãÆqðàA[¶„‘Þ0gþþÙ»×Ù5gSˆˆˆˆ”¸ºuër÷Ýwƒ›tëfˆŸM= "¢""""¥,>vïæÖÌDQ‘RvçàïO“¤ÿrâdf:»B"âL """Rº\]¡{w"6|†…Žsv…DÄ™@DDD¤ô=ü0žÇÐ’ÕZŠWä&§""""¥ïŽ;8N_fhˆÈMNDDDDJ]Vv6këÖ¡søsÿgWGDœHDDDDJÅbá•}{¨L•¿Ÿïìꈈ)€ˆˆˆH©suueôÔ©¬—ŽwvuDĉ@DDDÄ!Z·nÍç^ÍiüçNnÞììꈈ“(€ˆˆˆˆÃìA:°¢gWEDœDDDDDÆ/¢.K*4%jíZVýø£³«#"N """"S½:|Zñ ê?òéééή’ˆ8˜ˆˆˆˆ8Œ¿?,>ÕŠôڵ镚Êþýû]%q0qÈÈ´`{rqiiÔñòrv•DÄÁ@DDDÄaüýÍ­µm,îîðÉ'έˆ8œˆˆˆˆ8Œ=€:[zö„)S ;Û¹•‡R‡±#G€aß>X¸Ð©uÇR‡ñö8|hÒZµ‚7ßtvµDÄ@DDDÄaÊ•?¿ó= ÇÃêÕ°nSë%"Ž£""""åï“'C­ZPoDWrÂ#à­·˜2e ƒ rr E¤4)€ˆˆˆˆC ;C‡°}g9’:…¹saß>Ê—/Ïûï¿ÏäÉ“]M)% """âP=fVß<*W†…Þý R%xûmúõëÇðáÃ2d‹/vvUE¤(€ˆˆˆˆS¸¸@³fðÓo^ðôÓðá‡p䯽ö;w&>>žßÿÝÙÕ‘¦""""N kׂíé!àê o¼A¹råøÏþCDD:t`÷îÝή¦ˆ” +”ÀàÁƒ‰ŠŠÂËË‹ÐÐPâããIJJ*tìÖ­[éС•*UÂÇLJG}”cÇŽ9¡Ö"""eSl,:)g½áoƒ÷ÞƒcÇðòòbñâÅT¨P¸¸8:ä쪊H Q¹B&L`Á‚ÄÅÅ1iÒ$ ÀÊ•+‰‰‰aóæÍ¹Ç8p€Ö­[³k×.^}õUž}öY¾ùæâââÈÊÊrâ+);bcÍíºu˜Ùé»"V5Xºt)™™™üøãΩ ˆ”8WgWàzóÌ3ÏЬY3\]ó~tñññ4lØñãÇóé§Ÿ0nÜ8Ξ=ËÆ©Y³&±±±ÄÅÅ1}útžxâ §Ô_DD¤, „  @|Ð ‚wß5aÄ×—°°0¶nÝJÅŠ]U)!ê¹B-Z´(>j×®Í-·Ü¶mÛrËæÏŸO—.]rÃ@Û¶m‰ŒŒä³Ï>sX}EDDÊºØØ|ûŽ ¼òJîã "7`³Ù8|ø0¾¾¾¤¤¤pôèQš6mZèØfÍš±qãFGWQDD¤ÌŠ…ÄDÈÎ|}á¹çàý÷!9ÙÙU‘R RfÍšÅÁƒ‰ÀjµPèØ€€Ž?®y """çÅÆBj*lß~¾`ȳ]úóÏ;µ^"R:@®Ñ¶mÛ4h·ß~;}ûöàìÙ³¸»»:ÞÃãÀ1"""7»&M̨«ÜaX*Àر0gN¾Â¢¥¥¥•~E¤D)€\ƒC‡ѹsgªU«Æ¼yó°X,xzz‘‘QèœôôôLjˆˆÜìªT¨(˜??_á£BÆfƒÂœœ"ÏËÊÊâÎ;ïä©§ž"33Ó1•‘k¦U°®Ò©S§èر#§OŸfÕªUÔ¨Q#÷1ûÐ+ûP¬ü¬V+>>>¸¹¹]ôÚC‡¥jÕªÊzöìIÏž=K¨ö"""eË /@|<,Z:åÊ™y ­ZÁGÁ€…ÎqsscÀ€ <˜ÄÄDfÏžMDD„ã+/7¬Ù³g3{öìe'OžtRmn›Ífsv%®7ééé´k׎7²lÙ2š7o^è˜êÕ«s×]w1gΜåuëÖ%$$„¥K—:gÆ 4iÒ„õë×Sjõ)kl6h×ví‚?þ€Ü=_~i&ˆøùynBB={öäðáü÷Þ{ôéÓ'wT‚HIÓçµk§!XW(;;›øøxÖ®]Ëܹs‹ ݺuã믿æÀ¹eßÿ=IIIôèÑÃQÕ¹.X,0y2ì߯½–ïû‘#/z®}…Éx€¾}ûrß}÷‘’’Rº‘«¦+4tèP&MšD×®]‹ ½{÷ÌNèÑÑÑT­Z•!C†ššÊĉ !!!¡È!XJÔ""r³3Þ|Ó¬Àt¾pêT3ëÛo™¼£л7œ_×¥€/¾ø‚röìY–-[Vä’ø"×BŸ×®Èºûî»Y¹r%EýØ, ÙÙÙ¹÷·lÙÂðáÃY½z5îîîtîÜ™7Þx¿‹t!ëZDDnv§OCh(ôëo½u¾ÐfƒöíÉÙ¼ÿC¿ógN5ªW‡Ñ£Íн:qâ&Lॗ^Ê]}R¤¤èóÚµS)Cô -""/½dF^íÙc¶`ÿ~²ê7ä¿i]©öÕ§ÌŸÓ§ÃÊ•fžºˆ£èóÚµÓ)Sž~\]óõ€3¿õ$ú0“ÎgçññÇm6MןRE®/ """R¦x{àAfRúñãyåoéÃ/!=°<Þ—ä$ƇŸ†¯¾ºòçX»víE‡T‹HéR‘2gØ0ÈΆI“ÌýS§`ÃF ÛŸýªW‡î݉»ã mÚ˜‰ëù¦`ˇ~ÈwÞItt4}ôgΜ)ù!"ER‘2Çßž|ÞyÇLL_¹ÒlˆÞ²Se³ezR–ÁƒxuœÍ›áÕW¯l(Ö'Ÿ|Âwß}GHH  fÍš >œ7ªWD¤”)€ˆˆˆH™ôì³pæŒÙ}ùr†Zµ€† aʘ>Ø•¯ó f'õ¡C‹ßb±Xˆ‹‹cáÂ…$''Ó¿fΜILL QQQ¬_¿¾T_›ÈÍLDDDDʤ  øË_à7`ɸûn³a!`6ù¿ÿƒ‘#y¹á\ÞßÌéÛ÷ÊŸ'<<œ‰'’’’¢E‹ˆ‰‰!$$¤D_‹ˆäQ‘2kÔ(8q¶n5¤€—_†^½ O6XÅ[oÁ¬Y'®×Ò¥ð¯¹Ñ±cGfΜyÑ=»ì4LKäê)€ˆˆˆH™}ú˜ï ‹>ùn¿:u¢[Ð/€YëR„µk –}ðÙ{¤¸bcci×®&L 11±ÀFÄ"ri """R¦S§šÒ qw‡… ¡qcÿÒžö> üôÓ¥¯÷Üspß}'­oÚ))•uùúØl6zö쉫«+cÇŽ¥Y³føúúòÀ0yòd~ýõW‘KP‘2­zuxüñKàå‹a‰Šbþé8þ·heîC‡ÃêÕy‡æäÀâŦ<%Å”¥¦Br²yÌ^v)‹…ádzhÑ"Ž?ΪU«:t(þù'Ç'::šüñê^¬ÈM@DDDD®•*Á’%üÖ”‰›Ú‘õÙçŒ qqpò¤9,1Ž3ßÛºúã¼ËìÙseO[¾|yZ¶lÉ‹/¾ÈÊ•+9yò$+W®ä¶Ûn»äyGŽ!==ýÊžLä¡""""7†Ê•9üÉ7,à\îNú¸7™û™ôt˜3ÇòÍ7Pµ*øùåM› \9óýÞ½×V… *ЪU+*T¨pÉㆠB¥J•ˆŽŽæñÇçÃ?$!!ŒŒŒk«€Èu@DDDDn›»ó¸Ç,î‰ÇóÏðqú#´ŠIã“OÌã‹AûöдiÁR¯žêu¥= Wk̘1¼ûî»4mÚ”õë×ó·¿ýØØX*UªDLL }ô‘c*"â®Î®€ˆˆˆHIqsƒfÍ]_u<·Ô‰áù]¡Ó±ßiµo?üp+‰‰ðôÓ°c‡™Øn³™rë­fȵö€ÇÉ“ðÍ7 1¢!ý«)KOOgÓ¦M¬_¿žÄÄD<==/ysçÎa±X(gﺹŽ(€ˆˆˆÈ åŽ;àí·aÁ™‡hýf÷|Ò“šñF÷RŽa´o_ŽJ•à•W̤óM› sg³‹º#È’%0z´é‰‰Ž6eÄÆÆ[¬küøãÜ{ï½4hЀFqë­·ETTþþþ¥X{‘k§!X"""rC¹ã8s||àΧ¢pIXÇÏуsb¿V¼ÿƒ¿Ò¤‰9öóÏáôiÓê˜!XV«¹µ»µk×fìØ±Ô«WuëÖ1|øpÚ´iCõêÕñóó£mÛ¶äää”L…EJ˜z@DDDä†Ò¢…Ù£°wo³Mxà=í Z6~€Ï+þš4¡æ ÁDúüiÓ|@vï†ýûMOHiŽl:tÈÜ&&^fyáK eøðá¹÷³²²Ø¹s'›7ofóæÍ;v —KÿyÛ¶mP¥J•««„ÈUR‘JµjðŦ'Ä®Q#øë§-)wÏFø÷[X^y… g§óÊŸÏq´êÓU$,ÌlDhµBÍšy禧èQðâ‹àí}íõ+‰ ¹¹¹Q¿~}êׯO÷îÝ‹uN§Nؽ{7>>5iÚÔ ß²_£^½zøøø”\EòÑ,¹áÜ{¯‚•_ïÞàSÃÍl’œÌoûò2ç´0,ãþIx5³YÈ…ó@~þ&M‚o¿-™ºÙȦM™Y2×¼ ,à–[fb³õÁÝÝ/¿ü’'Ÿ|’–-[âëëËÔ©SW9¹¡)€ˆˆˆÈÍÇÏC£'Q‡$~¯÷ŒKýv5ù8½bCCÍí–-E_jòdøøãâ?µÕ Mš˜ð‘Ä’´u+ÌœyécjÖlÄöíãøòË/Ù¹s'iiilÚ´‰Ï>ûŒ¶mÛ^òü„„^|ñEfÏžÍÆIKK+ò¸-[ÌÐ6;¹)5m { #iè{°{7–‘#é처Žÿך53©"-„süæÍ…¯ñÎ;ð·¿ÁÀfißâ°Z¡cGpq)ÙaXù½ü2<õÔ¥ùúk3ßåÄ 8wΔyxxаaCzôèA­Zµ.y~RRS¦L¡W¯^ÄÄÄàååEhh(:t`èСL›6 0=O}û–Ä«’…ˆˆˆˆÜ”BḂðž=€øûß¹ÿÖݼ×~!øûÃO€Ÿ-êÎÃÌfïï§ œ?k j¾‚‚Ìþ"6Û¥Ÿ3#އZµà–[J'€dfš SSáÔ©‹·`™lo³™r¥zõê…ÕjåĉüòË/LŸ>ž={âááÁ’%Kxï½÷ÈÉ1½1Ë—ÃÎ…¯qâÄ l—û¡É G“ÐEDDä¦Õ¹sÁûÁá®|u¦+ƒ¾é {÷ò¿þ‹ï+ó™M/2v–'»s;Ê=pûëÅѯ_(=o¾ wÝ÷ß Â}÷]üù6·¦Æ>¼+¿ ÌЬsçò¾²³áÁMйœ4K ƒúTÔ"WiifNKçΦÎG‚Ÿßå¯]”ªU«Ò¼ysš7o^ <''‡}ûÌ$~0J¯¾Zðܺuë’žžN:ur¿"##so½KbÖ¿”9 """"ç…†ÂâÅywV¶EgF1ïÍ}¬þ9ÿ´Î§â“Oœ“ÃfêV.Ë÷pïwÑ¡C5† ?ÿ„† ¡qc³3{~ö è5j˜y ³f™^³\0ää@‡&€YNØÍÍ„uëàÓOMyv6´mkz0:w†nÝLÝÁ¬V¹² !ûöAƒ…_ç·ßš`ðÄ&€;V¢?F\\\ضÍ|ßµ+L›f††Ù&6›)S¦””ÄŽ;HJJbåÊ•Xí?$`Ö¬YôêÕ«ä+'N¥!X""""ç…†šU°ì£‚ÌjZw÷ á†òÕÈUpìo·šÏï~m)¿â;xðA,>Þ|±3Љ§°ªÿtzÅ&ñä€ÂC‹ìŸ­LÉÊ*8ý×_Møøþ{2rrL@7æÍƒ“f¡.¾ùÆôtääÀ˜1&dìÚeê½p¡™wáârñÉß ˜sZ´0÷K#€lÛ&x>l†¼ÙY,î¿ÿ~FŒÁÔ©SY±b$55•72gÎZµjuÉë/Z´ˆnݺ1bÄ>üðC–.]Jrr2YYY¥ó‚¤D(€ˆˆˆˆœfzŽ1÷ÌP)ooÓk±y3P­oí}5~IIæ“ÿŒ¸·iI 5|bù IDòÆ¿}!.Îl"òÙg°s'֔ʕ3Ã52=ùç|÷xyAË–&@ØõíkÂÊþcîOž Í››¹V+øúB¿~fHצG$(¨è’™i‚Àý÷CÕªæyJ+€lß‘‘¦7(6г²¯——7桇"88ø’Çæä䚚ʂ Rx¸ùzôQ,'Oòãø5,›Èÿ¹mÀ}ölxí5ú¹W¡Q¹h\ž¦BÆôŒˆbõ’[0À 0ä|ù‚õªQºt>‚6m`éÒ¼áXÕªÁôéæ¼G1¡¢U+6õ¼Ð_˜ž”‡6ÈÛ»t{@êÕ3ß?þ8<ù¤y._ß’¹~—.]èÒ¥ çÎcß¾}ìÚµ‹äädvîLÆÕõò[Ú¿ûî»T¬X‘°°0ÂÃéY³&nŽ“¥""""r^d¤r5b„ù°äˆY‘̪Uß}+WšûùwZ/ jUBžìÈ+:rÛ óÝ…Yü멜´ÁŒ“zûm>µÙ`œ ƒ¨(:þØ€F½¢`cóÉÝÓ3÷²ýû› 4á¨G¼§¼óN6ÌLˆä3Ï"8¸è?4=,QQ澯ïåÈ¿ÿmzVF6óRŠkÛ¶¼ vÇfˆØ–-ùÂ[ ruu¥V­ZÔªU‹;'  Ì.çý÷ßgûöí¹«q¹¸¸P³fMÂÃà cÀ€Ü~ûí%_ᛘˆˆˆˆÈy+ÂW_™ Þ:˜2{‰Š‚÷ß7½ Þi=¿°0óÁ~íÚóÄÏÚµcÚ»í :Üópæ §×nexûÍôýƒˆ?7óPÎlBg˜±QááP·.Ô­K§ˆHºy×eÍŠH<ˆ»{Á$ðÏšÞ™¿þÕÜ )¼ÊÖöífØVþM }}ó&½%'žÞ//³Üpqœ< ‡åõ€DD˜—ü¡äJåä˜á\#F@Ÿ>?îðaóš S§K_sëÖ­ddd°oß>öìÙÃîÝ»so·oßΉ«Y£X.IDDDD$Ÿ-à¿ÿ…0ó(LyT”™>o<öØ¥¯a±˜9ëÖ,·Z!&æü ¨|wx´ ñß™å{¿<{ÿHŲu‹™¾e‹Ùáðë¯)·kó²³Èy«",Š4á$ÒÜzDF2ï“H³y= 99yóI¦L1Á©[·¼:]ØòÇæþ]w™û &|´mkzY"#óÂÙ¥lßnnëÖ5·îîfÿûÊXWcóføýw˜3çÒäÐ!s»{wñ®ëîîž» °”>‘ Ü{¯ iiye·ÜbnÏž-Þ_ð›7‡·Þ2ÃŽìÖ¬V3Ÿ#¿§ž2{dL™b>T[*W2'_°¯YYœÝ¼‹ƒ+vqn» &۷ÊyŸ¸Á½ =fV¦²óóƒóîk–éÝ·Ïd™¹sͯE‹Lp‰7! $äÒ¯ß@"#óÊê׿¶òÃævÅ 3™þ¹2vöÕÆvíºúç’Ò£""""R„(xß¾Ö¡Cf’÷åį𯓒̇ðœ34ÈÞ£bcŽ]·Úµ»ÄÝÜðl\—ˆÆu®;uÊ<Ñö¼`âÿÛžc.U˜íÐ=€íøPqiôŠ€Úµ!"‚&g#øõPØj€ÅÂîÝær|#Gš öàƒæÃþ¬Yf¢þ»ïÂĉ—~ýÛ¶™^/¯¼²zõL ¹Z?üÕ«›Ÿã/¿\<ÚHq{@ò;{ÖÔ±gÏÂû¸HÉP)¦[n1¨/ll¬¹]·ÎcÇÌ® ÀСf•¨¶m¯²bUª˜õ‚›6Í-J; þþ6¾š~œ.õ“yûoÉT°&3 &’“M7‚ÕÊ“À“^ V-^ÚAR¹¬ÿŒà×Êï 'þ¾ÀƒÊ•Íæ…S§ÂK/™93ùýãf¸× /\Ë®^=³ÂØÙ³æ×çž{ÇpÏ=E¿ÄsçL•‡ 3héÒË””‚=^Α#f(Ü/¿˜Ày~-)a """"ÅôüóšZ¼c«U3ÁcíZ³1`þM/Ô³§™¬~~úF‰ðõ É'}ÈiêÃ+ɱ<õðr¾ƒÎœaáÛ»øøùdæý=[r2.$ÓÛ{!•ïÁíÙsìèx¾âaa¼èFµ“a$>Î}ÃÌŒû²]ÝyçÓëcÈ…a¢^=3$mdzŠÝ&€<òHÁs¾ûÎ Û 6ÃÄNŸ6[«lÙbÈØ±E¿vûˆ4›ÍLÌ·[²ÄÌmÉ?Í.) Ú·‡3gLχ†o•‘bjÓæÊŽ5.@ dØy'ö‰èüþiö ) B\7`! 8üˆ §Âê…ðÞ;çX3w?ƒ»ìá™÷˜®‹={¨¸g{þ„÷¬0+'÷RÙ~|u"Œã•ÃØÑ#ŒÖ™aÜsO8ì 3qwϾm[ÁòŸÿ˜°ðûïyeÙÙfÎIưzµ~U±¢Y•,.άöuâ„ z²ZMoÕ–-fVd¤ù9t쯿Ï(¿úª ÞÞÅŸP‚ƒÍ¼ô~0ó+Šzäçgn3ºÝÝÍdûÀ@ÓkR©RásZµ‚†Ñn¼úßpZ- ‡»ïæ…C•NÐóKرÚ Èä§9¨zrOnï »w¶y?¿®ƒ„™‰Xdºz²û\0­Cp­LÖéþB0ÍCøèÙ`vf3êe3é$,ÌÌ¡_ºôâäž{L˜°‰õëÍmB‚™QðœÝ»ó7ÁGJ‡ˆˆˆˆH)©W^|ÑLØnÖìâïJKHˆYRw˳¢UQò÷€ìÞm>´Û÷ )*|€éÐ>Ü,üûïæûÏ?›ØÁ õÚœT¨uþ+χOš‰ù×çÀ‘#¼óìvT‹›¥IDAT~~ûjo=³Ÿo^ÜGÛ~*nÙBÈæ%Lå.kmاzœû§7Ì2='¹³fv0é1AxD™Ä„Í«‡™Ÿu­Z{@Ú´1ÌçÌ1còêtö¬™7fî‡‡ç »’ߥx@DDDDJÑèÑ&üôÓÅWx*-ÁÁy² Íÿ8ÏËË k:vÌtR„‡ïÚññæCü믛ﳲ.³ŒðyõëçŸB.Øüj0á‡tïÛŒ*‡×Þ‡SíÌ„ôí¡¢[&Ÿ¿›Â’©ûY9s¯<¹Röþ}Äf­æÖSûñPp§r›W%~Ë ÂgJMÒÙv:Û»AøÿD«‡ƒ¨ëļÿVg̘¼Á{÷š[ûk7ÞOœ0½VR²@DDDDJ‘«+Ìœi&]׬éØç6·öÉÛE±XL/ÈÑ£¦¤¨y"Eqs3ËeVŽ âl$^¯žéqØ¿V®4å컚7h`&ÌÛlfÕ«ËCx8Æ…Óa\Áëx?-ƒnÏðD+¯ IÁÅšÂáõ),y#…>~©™¼‹À£«àÙƒü;3>2çfãB–uÜBƒ (ÏsŒ!ˆ‰AD}[U `÷®ªx{« ¤¤)€ˆˆˆˆ”²°0ÓR¥ŠcŸ×¾[yëÖ—ÞT/éÕ«ø×â xùe³YaÿþÅ®dßäí·á½÷ÌóÙ·/iؾùÆ„’£G!:úÒ׺çø×§èÙ3‚ÆÝ"èÝþð…áoÀ}SͰ«øx˜:ÙÆèÇØºì Uþ—Â3§ð@ýîŽLƒ©øÛÏ %ŸgÐ8dßîAf<—ýËf+þHФ""""â 8þ9ƒƒM(¸ÜòÁ¾¾fŒÓ§óæAG¥J0p ŒoV¦*Ž3þí·áÞ{aúô¼àÒ ¼óŽ™Oиñå¯÷ðÃ0n¬Zeö[±9 ÈR5wž÷ ?|Ûú8Ù†þ¿M5¿6æÏ‡ä-`µb;£qVúµ;HÛ[¬&Y­¦ËƾT˜\5‘T¥J°x1´lyéãüüÌ<(þ»áÃÍü‘NŠw¼‹‹Y‘«\93<ÏLƒ¦ƒaöl¨ZÕLˆ/Ž˜ذÁ|oµšž&OO3 àûï îjÞº5ÌšiifxÚîÝç_·»;„…a ã·:0?Ú¾zÁ“mØMš¯bR$gW@DDDDJOûöæCö¥øúÂÉ“æû+ ~~0uêÅWÌ*ÊâÅ&ð\¸,pT”¹ýúkÓûQܨš4M›ÌDx«5oµ1ooS¯ìì‚™¡iS³<ò¯¿šû¹$íRz@DDDDnrö¥x½¼ÀǧôŸïbóQ¼¼ÌÿÌÌËÏÿÈ/&Æœ³y³ 5j˜r‹%¯Ä>ÏLÐqwÏÛœpÏžÂCÏ@JˆˆˆˆÈMÎ@Âÿï…}®Ì•FL½7l w;{ÏFþ77ÓÃ’˜©©fÃÅ¢z@öì1=%ù­^]üzIÑ@DDDDnrör%ÐKKÆæ¶8Ðí¼¼ÌêZ6‚fß‘ˆð÷/xNÓ¦&€Ø{9Š pøpÁò3Š_/)šˆˆˆˆÈM.ˆ³ÅÅ™ða_®·¸ìÑ/ cÆÀŠ…oÚ¶o7sG è‡aåä˜säÚ(€ˆˆˆˆÜäüüÌmY wÝe6!¼Ô¾%E±ÔÔ¼9 `zGŠÚ²iS³âÖ矛ÉðÕ«|¼¨’œlVÎ’k£""""r“ 0ËâÖ¯ïìš\½˜3d ö€\L½zP¡‚Y‘+,¬ðÜ//Ó3”?€Ø—ú•k£""""r“ó÷‡-[ ];g×äê埴^œâêjÎIO¿xÏÏ…+amØP°wE®Žˆˆˆˆˆéü°®E•*P»¶ù¾8ò–æ½Øäû:uò戀 W:7E S‘BLŒÙߣjÕâo ëéÜÙ¬”µoŸ™/¢R2\]‘’pÿýfHUq{rš53·E?Þ¥‹ 4óæA·npü¸HIP‘BϞ櫸êÖ…E‹àž{Š~¼rehßæÎÍë%Q¹v‚UŠ2225jT¨PÛn»eË–9»Z""""r^ÇŽ—^ò·Gøåøâ 3ݾd±\=RÔ¯_?Þzë-úôéäI“(W®:uâ§Ÿ~rvÕDDDD¤ºv…òåaæL3ÇD®H)Y·nsæÌaüøñL˜0Çœ~øÐÐPFŽéìêI1{ölgWAHí}sQ{ß\ÔÞ7®*UÌ0¬œ’¢RJæÍ›‡««+ È-sww§ÿþ¬Y³†””'ÖNÊ ý‡usQ{ß\ÔÞ7µ÷­Gs«R24 ½”lܸ‘ÈÈH¼¼¼ ”7;¿Ü¯¿þJPP3ª&""""W [7غââ`Çg׿ú§RJ¬V+Eì‚c/;x𠣫$""""W¡B7ÎÙµ¸qhV)9{ö,îîî…Ê=<ú(ÇŽsRÍårÒÒÒxñÅéСÞÞÞ¸¸¸0cÆŒ"½’¶ýøã©_¿>žžžDFF2yòäÒ|RLÅmï~ýúù~¯_¿~‘×U{—= <˜¨¨(¼¼¼ %>>ž¤¤¤BÇê½}ý+n{ë½]ò4 ½ èׯóçÏgذaÔ©S‡iӦѩS'–/_ÎwÜáìêÉ52dÍš5+P‘ûýhݺ5ÕªUãÕW_%55•×_ßÿuëÖáæææè*Ëe=z”±cÇJãÆY±b‹¥ÐqWÒ¶ÿú׿8p Ý»wçÙgŸeåÊ•<ýôÓœ9s†‘#G:òåÉŠÛÞîîî|üñÇʪT©Rè8µwÙ4aÂÖ¬YC=¸õÖ[±Z­Lž<™˜˜~ù墢¢½·oÅmoÐ{»ÄÙĩ֮]k³X,¶7Þx#·,==ÝV»vmÛí·ßîĚɵZ¾|¹Íb±ØæÏŸÉãh«X±¢mÿþý¹eË–-³Y,Û”)SJ»šr222l‡¶Ùl6[bb¢Íb±Øf̘Qè¸â¶í™3gl>>>¶®]»8¿wïÞ6///Û‰'Jé•Hq·½ûöík«T©Òe¯§ö.»~þùg[VVV²¤¤$›‡‡‡­wïÞ¹ezoߊÛÞzo—< Ár²yóæáêêÊ€rËÜÝÝéß¿?kÖ¬!%%ʼnµ“’`³ÙHMMåܹsE>>þ|ºtéBÍš5sËÚ¶mKdd$Ÿ}ö™£ª)W |ùòøûû¦}/¦¸m»|ùrŽ?ÎSO=UàüAƒ‘––Æ7ß|S¯@®DqÛÛþxNN§OŸ¾è1jﲫE‹¸ºR»vmn¹å¶mÛ–[¦÷ö¡¸í zo—4'Û¸q#‘‘‘xyy(·Ùùõ×_Q-)A=öUªTÁÓÓ“6mÚ°~ýúÜÇRRR8zô(M›6-t^³fÍØ¸q£#«*%èJÚÖþý…ÇÆÄÄàâ⢮#gΜ¡råÊT­ZLZZZcÔÞ×›ÍÆáÇñõõôÞ¾Ñ]ØÞvzo—,Íq2«ÕJ@@@¡r{ÙÁƒ]%)!îîîtïÞN:áëëËæÍ›yýõ×iÕª?ÿü37Æjµ\ôwàøñãdeeiÈuèJÚÖjµR®\¹Bÿá•/_ý;p dÔ¨QÄÄÄ““ÃâÅ‹yÿý÷ùí·ßX±båÊ•P{_gfÍšÅÁƒyå•W½·ot¶7è½]@œììÙ³¸»»*÷ððÈ}\®O-Z´ E‹¹÷»téB÷îݹõÖ[=z4‹/ÎmßËý(€\®¤mÏž=Kùò勼޻»»þ¸NŒ7®Àý‡zˆÈÈHžþyæÍ›G||<€Úû:²mÛ6 Äí·ßNß¾}½·odEµ7è½]4ËÉ<==ÉÈÈ(Tžžžžû¸Ü8"""¸÷Þ{Y¾|96›-·}õ;pã¹’¶õôô$33³È뤧§ëwà:6lØ0\\\øþûïsËÔÞׇC‡ѹsgªU«Æ¼yórW>Ó{ûÆt±ö¾½·¯ˆ“Ù%gïâ tt•¤”“™™IZZZn¾½½ó³Z­øøø¨÷ã:u%m@vvv¡=2339~ü¸þ¸ŽyxxàííÍñãÇsËÔÞeß©S§èر#§OŸfÉ’%Ô¨Q#÷1½·o<—jï‹Ñ{ûÚ(€8Ytt4;vì 55µ@ùÚµkhܸ±3ª%¥h×®]xzzâååEPP~~~$$$:nݺujÿëØ•´mtt4@¡cÉÉÉÑïÁu,55•cÇŽáçç—[¦ö.ÛÒÓÓéÚµ+;wîä믿¦^½z×{ûÆr¹ö¾½·¯ˆ“uïÞììl¦L™’[–‘‘Á´iÓ¸í¶Û rbíäZ=z´PÙo¿ýÆÂ… i×®]nY·nÝøúë¯9pà@nÙ÷ßORR=zôpH]¥t·mÛ´iƒ··7|ðAó?øà*V¬HçÎVg¹:…þ0vìX:tè[¦ö.»²³³‰gíÚµÌ;—æÍ›yœÞÛ7†â´·ÞÛ¥Ãb»Ü¢æRêâããY°`Æ #""‚3f˜˜È÷ßOË–-]=¹JmÚ´¡B… ´hѶlÙ”)SpwwgÍš5Ô­[0;êFGGSµjU† Bjj*'N$$$„„„ Á*£&OžÌÉ“'9xð ~ø!>ø`î_·ž~úi*W®|EmûÁ0hÐ ºwïN»víXµjŸ~ú)ãÆã¹çžsÖË”ó.×ÞÇ'::š^½zå¾·¿ýö[/^LÇŽ ­ÿ¯ö.›†ʤI“èÚµk‘êÝ»7peÿn«­Ë®â´÷ž={ôÞ. ÎÚQò¤§§ÛFŒa °yxxØš7onûî»ïœ]-¹F“&M²5oÞÜæããcsss³Ù}ôQ[rrr¡c7oÞlkß¾½­bÅŠ6ooo[Ÿ>}lGŽqB­¥¸ÂÂÂl‹Åf±Xl...6—Üï÷îÝ›{Ü•´íÔ©SmõêÕ³¹»»ÛêÔ©c{çwõrä2.×Þ'Ož´õéÓÇV§N[ÅŠm¶† ÚÆo;wî\‘×T{—=wÝuWnÛ^øåââRàX½·¯Åio½·K‡z@DDDDDÄa4DDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDFDDDDDDæÿa-õ‡#ÍIEND®B`‚lmfit-0.9.2/doc/_images/model_fit2.png0000644000032700003100000010130212603520205021010 0ustar newvillegeocars00000000000000‰PNG  IHDR/gžQl…sBIT|dˆ pHYsaa¨?§i IDATxœìÝyt”õ¡ÿñ÷„² ˆ#n­h$ˆ Ô@MD!ˆE \7¢U/u©K ½âo¯âµáÞ«­]¬­…º!¡¬¢lp’€¶V‰‚FqCM@A¶,¿?&(ûšÌ3“y¿Îáääyf2ŸO’O¾[¨ªªª I’$IŠs)A$I’¤ay‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò#¯½öC‡¥U«V4iÒ„N:ñÐCK’$IJ©AH/¾ø"YYYtíÚ•ñãÇÓ´iSÞ}÷]>ùä“ £I’$I #TUUUtˆºlýúõ´k׎ž={2}úô ãH’$I Ëicµì©§ž¢´´” &°qãF*++N%I’$%ËK-›;w.Gy$}ôíÛ·§Y³f4oÞœÿøÇlÙ²%èx’$IR°¼Ô²wÞy‡òòr† Æ Aƒ˜1cW_}5?ü0999AÇ“$I’†k^jYZZï¿ÿ>cÆŒá7¿ùÍ·×ÇŒÃïÿ{V®\IÛ¶mwzΚ5k˜3gmÚ´¡Q£F±Ž,I’¤¶iÓ&V­ZÅÀ9úè£ƒŽ“°Üm¬–m/£FÚéú¨Q£øýïOAAÁnåeΜ9\~ùå1Ë(I’¤Øxâ‰'¸ì²Ë‚Ž‘°,/µìøã§¸¸˜Ö­[ïtý˜cŽ`ݺu»=çä“O¢ÿswèСöC*nÜrË-<øàƒAÇPüÚ''¿îÉɯ{rzë­·¸üòË¿ý=O‡ÆòRË~ðƒ0wî\>þøcN=õÔo¯¯^½€p8¼ÛsŽ8â:tè@—.]bTq¡E‹~Í“”_ûää×=9ùuOnÛÏÓ¡qÁ~-1b>úèN×ÿøÇ?R¿~}úöí@*I’$)ñ8òRËÎ:ë,®¾újþô§?Q^^NïÞ½Y¸p!Ó§OçÎ;ïäØc :¢$I’”,/1ððÃóýïŸI“&1sæLÚ´iÃ>ÈÍ7ßt4I’$)aX^b 55•ñãÇ3~üø £(Îíº+’‡_ûää×=9ùu—k^¤8â´äå×>9ùuON~Ý¥Cgy‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’‚åE’$IRB°¼H’$IJ–I’$I Áò"I’$)!X^$I’$%Ë‹$I’¤„`y‘$I’”,/’$I’BjÐ$IŠ¥²²2rsó(**¦¼¼©©dd¤“——K8:ž$i,/’¤¤QZZJ#))¹ÈB@%ÅÅEäçg‰LÝw©¬„'-HRPü,IJcÇN¬..݉ˆþ(ìNIÉrsóvÒW_ÁSOÁ¥—‘GBðþû± -Iú–åE’”4ŠŠŠn{¹Û­ú>ðÙgðûßÃ@8 —]«VÁí·Gïuî Ó§Ç(µ$i;Ë‹$)i”—×ã»—]¥DïB›6pà °müßÿÁ‡ÂÒ¥ðóŸÃk¯Á€Ñ‘˜1c`Ó¦~’”Ü\ó"IJ©©@{.0•´m†‘#ᬳà¹ç U«ÝÖ¢L ç·Ü¯¼}ÿ´Ój9½$É‘IRÒÈÈH ÷r·€_mù¾ø¦LÙ©¸”••‘“s;¦}û¡t<}9ïòÅ /À֭е+<ùdL>IJf޼H’’F^^.ùùÙ””L ºö%¨ ùYøjº­ZE9ùäoŸ³ïÊî$2÷yÂwÝW]±éØ1ˆOM’’‚#/’¤¤‡‰D¦2zô ÒÓ³h×n(ééYÜ9ìîÛð!\{-Œ±Ósö»CÙÏ>]'së­PUÛOJ’’ˆ#/’¤¤‡™4iâw6m‚Œ 8ùdÊÆ#7现üä“Ï‰Ž¸ìI7ŠŠî…† £ û/ºfÍ‚¡Ccñ©HRÒ±¼H’’Ûí·Ã»ï²ö…ȰL öòA^`ëÖßíBvé¼ÔîL*ÿë¿¢‡YîÁn;—uLNΔ••ÕÐ'&Iu—ÓÆ$IÉi„èÔ®?üB¡}`™ d÷™|·CÙó¤¦ÞÆ»ïþ™hé‰N3Á\JR†ÐøÖ[9bÊ”>Ò¾w.Ë&™J8®µOY’#/’¤äóÅðøãpà в%°ã–» ShÞü†v(kÛv"åå“ÙušÙ— àÎÊ[8âé§aéÒ>Ò~w.ËÝÛÆ’$°¼H’’ÑŸþpÝuß^Ú÷–ïqñÅç³|ùs¬Xñ,Ë—?GƒMˆ–Ýý ¼Ý°Ü|óN['ï}jDw.+>”ÏF’’†åE’”\**à7¿‰žçÒºõ·—óòrIK»ˆFõÛiiãÈËËÝéÃì}šTRŸ áÓ¡ žzꀞ³ÓÎe’¤=rÍ‹$)¹<÷\tG°iÓvº¼ýËÜÜ<ŠŠîýöœ—ŒŒtòòv_‹òÝ4³=•‘J^;²%\r äæÂ°aФÉ~ŸóíÎe’¤=²¼H’’ËCA·npöÙ»ÝÚíË}ÈÈH§¸¸=O+äŒ3ÚpǶmÜ¿z5ÿyJf}"[·n$ºsY柺&IÚË‹$)yÃܹðćý¡òòrÉÏϦ¤dÑu,Ûw!+䤓 «Vý‚¾|ÂàÒµÜ[: ˜CjêhÊË'-=ß=':5mêaç’¤ºÌò"IJ¿þutË¥—ö‡Ú×4³Í›;óôÓ—Ýy”k˜ÁpÒy‹bQ^^EÛ¶wÒ A“ýNM“$íÌò"Iª“ÊÊʪ‹E1ååõhÚÌË% ©¸å'4iРF^coÓÌ:vÌö]Åf3„RÂ\ãÜÎÿРÁoX¾ü¹É IÉÄÝÆ$IuNii)™™ÙLž<œââÙ¬\ù,™+Q¯¼’þy¥ÖO³ßqW±m4àq®à §>[qW1I:t–IR³ëa!*¹‘ßðFPðÁÿÔúa»xù(×f Cyw“¤Cgy‘$Õ9»9ˆçiK q±8 r×/ß"ݹ†GqW1I:t–IR³ëa7ñËèJAõ_µ=mkO^>ÊÕ dçœtûn^J’Œ ö%IuÎŽ‡A¶c0‡«˜L´ÐÔþ´­=íDözh ÛJê1gdoš¸«˜$Ë‹$©ÎÙñÉó[J 3•ìê»±™¶µÇÈrrh8u*Üw¤8ùA’–ß9%IuÎöi[),f$OóW²…@¤ú0È€¦m]s ¬Z óú’”à,/µláÂ…¤¤¤ìñ_QQQÐñ$©NÚ>më¿ý–Ö”²ì{¤§g1zô "‘ƒ<çhß}4˜×—¤ç´±ùÉO~ÂÙgŸ½Óµ´´´€ÒHR݇—~<¼Öš§W-ŠiZ¡\}5Œ¿þ5´lt"IJ(–—éÕ«?ü჎!IÉ£ª þúW¸è¢ø(.Û]y%Üy'<õÜpCÐi$)¡ÄÑwóº­ªªŠ¯¿þšòòò £HRrX¾JJ`ذ “ììØcað`§ŽIÒ!°¼ÄHNNÍ›7§Q£Fôë×W_}5èH’T·ýõ¯Ð´)ôët’Ý]s üãÑ’¤æ´±ZÖ°aC.¹ä.¼ðBŽ>úh–/_ÎÿüÏÿЫW/^yåÎ:묠#JRÝ4s&\x!4lt’Ý]xatæ±Ç sç ÓHRÂUUUU"Ù”””pÆgлwožþùÝî¿öÚktíÚ•^½zÑ¢E‹î5ŠQ£FÅ*ª$%¦?„“N‚)S`äÈ ÓìÙ˜10gNtj[(tI5hÊ”)L™2e§k_~ù%ùùù¼úê«téÒ% d‰Ïòû·cÆŒlÚ´‰Ð.?´¶—ÿç–¤CôÐCpûíPVÍ›fÏž>:óÆpúéA§‘TËüý®f8m, 'žx"[·neãÆ4mÚ4è8’”°ÊÊÊÈÍÍ£¨¨˜òòz¤¦Vð—uoÒ¶gOÄkq8÷\hÒž}Öò"IÈò÷Þ{FY\$é0”––Ò£ÇHJJîò€-YC;ŽåçÛŽàæ²²à¤ÜŸ#Ž€£ååÎ;ƒN#I ÁÝÆjYYYÙn×^ýuž}öY @"Iª;ÆŽX]\ºÑ)¸Cø;©Tðèš‰äææšo¿†…ÂBøì³ “HRBp䥖eggÓ¸qc2339æ˜c(..æ‘G¡iÓ¦ÜÿýAÇ“¤„VTTLtÄå;Ãø+ºó)C(*ú}0ÁÔàÁÑ4gφý(è4’÷y©e_|1kÖ¬áà†nà/ù —\r Ë–-£}ûöAÇ“¤„V^^í#.ø† x¿2 H©¾ÇŽ>Î9':uL’´_Ž¼Ô²›nº‰›nº)è’T'¥¦VUl/0ý™Kc6U——ÊêûqnèPøÿ¾ù7:$Å5G^$I +##(üöýaü•·8•´ «ïǹ¡Caóf˜;7è$’÷,/’¤„•——KZÚ@„zle(Ï2“a@„´´qäååqÿÚµƒöí:&IÀò"IJXáp˜Hd*£GÏಓzs4kyýäEŒ=ƒHdjün“¼«¡CaÖ,¨¬ :‰$Å5×¼H’Z8fÒ¤‰pë­0í#¦¾›ÝÁ+‘  'BQtïtIŠ[ öÝ]’¤=¨ª‚¿þ.º(ñŠ @f&´jåÔ1IÚü/IÒ.Þ~V­‚¬¬ “šzõ`ÈË‹$í‡åE’”øæÏ‡úõ¡wï “º¡Caùr() :‰$Å-Ë‹$)ñÍŸ]+Ò¤IÐIÝ€РAtá¾$i,/’¤ÄVQ @¿~A'9s ¤§ä°¥¦VUl/0oÑÕGžå%îgýúßQ\Ü­ú~%ÅÅEäçg‰LµÀHJ*N“$%¦ùó£SÆB¡ý?6Îed¤…;\ 1—þôç/À ;ß̤àZIÉÊò"IJ<_~ Ë–Õ‰)cyy¹¤¥Ý D€Jær](¥m÷ò,×ÂHJ>–IRâY´*+ëÄb}€p8L$2•Ñ£gžžE»vCùèÔÇèÇ‚½<+¥z­Œ$%×¼H’ϼypÒIpòÉA'©1áp˜I“&ît­¤a3úoË_±‡gTV¯•‘¤äáÈ‹$)ñÌŸ2VÖ»ìË{i§ÒŸçör·°z­Œ$%Ë‹$)±|þ9¼ùf™2¶/?»…SXÍÉLgûZ˜èÛiiãÈËË 0$ÅžÓÆ$I‰eAõsÏ 6G 4¿è"ªRRßí&~5i—s^Ü&YRò±¼H’ËüùС|ÐIj_óæ„22}b F¿2-è4’8§I’Ëöó]’EÿþÑ *+÷ÿXIªã,/’¤ÄñÁPR’|åå‹/àŸÿ :‰$Îò"IJ DwëÛ7è$±Ó½;4n}‘¤$gy‘$%ŽÅ‹¡cG8ꨠ“ÄNÆл7ÌtI œåE’”8–,ž=ƒN{ýûC~>lÞtI ”åE’”Ö®…·ß†sÎ :Iìõï›6A$tI ”åE’”^y%ú6ËK§N;uLRÒ³¼H’ÃâÅpÜqЦMÐIb/%Î;Ïò")éY^$I‰aûz—P(è$Áèß–-ƒuë‚N"I±¼H’âß–-Ñ_Ü“qÊØvýúEª\´(è$’Ë‹$)þ½új´À$syiÓ¾ÿ}xùå “HR`,/’¤ø·dIô Æ3Ï :IpB!èÓÇò")©Y^$IñoñâèIóõë$X}ûÂ?þ_~tI „åE’ߪª¢Û$'ó”±íúô‰þ÷X¼8è$’Ë‹$)¾­\ kÖX^N9N8. :‰$Âò"IŠoK–P ñãÇž£cÇÁ´o?”Ž““seeeA§‹­P(:uÌu/’’TjÐ$IÚ—Móæñ~ý&ü! ’ââ"òó³‰D¦‡NC}úÀ”)°~=ydÐi$)¦y‘$ŵ/g?Ï‚­îD‹ D|u§¤d¹¹yÁ… Bß¾Ñó^\÷") Y^$Iñ«¬ŒãÖ¯c ïåÝ(**Ži¤Àµm ÇçÔ1IIÉò"IŠ_¯¼Àzîå)”—׋]žx°}Ý‹‹ö%%!ËK&L˜@JJ :u :Š$Å·%Kø4õ>ä{{y@%©©1úôW_…¯¿:‰$Å”å%Æ>þøcî»ï>š4iB(Úÿ$)™-Y‡ß; (ÚË ÉÈHe¢øÐ§TTÀ’%A'‘¤˜²¼ÄØOúSzôèÁ~𪪪‚Ž#IñkófX¶Œôk¯"-íN TV߬"¤¥#//7¸ŒAißZ·vÝ‹¤¤cy‰¡E‹ñÌ3ÏðàƒRUUåÈ‹$í˲e°u+Í$™ÊèÑ3HOÏ¢]»¡¤§g1zôŒäÛ&y»P(:úby‘”d<ç%F***¸é¦›¸öÚk騱cÐq$)þ-YM›ÂgNMeÒ¤‰A'Š/}ûÂÍ7ÃÆÐ¤IÐi$)&y‰‘‡~˜?ü{î¹'è(’·ÊÊÊÈɹƒŽ3ïžx¥ª!9×þeeeAG‹?}ú@yù·;²IR2°¼ÄÀÚµk?~<ãǧU«VAÇ‘¤¸TZZJff6“'ç­âg9sc9/n¼É“‡“™™mÙU‡»e²¤¤â´±¸ë®»8ú裹馛êy·Ür -Z´ØéÚ¨Q£5jTMÆ“¤¸0vìDJJîºÓž·8šµÕç»t§¤d¹¹yNÛ‘ë^¤¸5eʦL™²Óµ/¿ü2 4u‹å¥–½óÎ;üáàÁäã?þöúæÍ›Ùºu+|ðGy$-[¶Üí¹>ø ]ºt‰e\I LQQ1À9,¡‚ è^}·EE÷–-nõí ·Þ ß|FRµ=ý±ùµ×^£k×®%ª;œ6VË>ùä*++¹ùæ›9å”S¾ýWTTÄÊ•+9ùä“]#I@yy= º ã9,áuÎdͪï¦Tß×NúômÛ  :‰$Å„#/µ¬S§NÌœ9s§m‘«ªª¸ë®»Ø°a¿üå/IKK 0¡$ŇÔÔ   ÑæÓo‡»•Õ÷µ“ôthÕ*:uì¼ó‚N#IµÎòRËZµjÅE]´Ûõx€¡C‡Æ:’$Å¥ŒŒtŠ‹ iA{:ð6·ÃÝB22ÒË·RR¢£/.Ú—”$œ6P(ä!•’´ƒ¼¼\ÒÒª×»TÒÒÆ‘——d¼øÕ§¦MA'‘¤ZçÈK@,XtIŠ+áp˜Hd*K cÝõ©wÊ­¤×¯$##¼¼©„Ãá #Ƨ¾}aëÖhéÛ7è4’T«,/’¤¸‡Öºœ0€³g'1œ~:uTtê˜åERç´1IRü¨¬ŒŽ tï¾ÿÇ**%zõ‚E‹‚N"IµÎò"IŠ+W—_Z^VïÞÑí’·n :‰$Õ*Ë‹$)~DOŽ?ûì “$–>}`ófXº4è$’T«,/’¤øQP=»¤yó “$–3Ï„fÍœ:&©Î³¼H’âGASÆEj*ôì=¬R’ê0Ë‹$)>lØo¼ay9T½{Ã’%P^tIª5–IR|X¶,ºÛ˜ååÐôé-€ÿøGÐI$©ÖX^$Iñ¡  ºn£C‡ “$Œ²²2rrî cÇÁœ~Õ6…RxúÇwPVVt4IªR)IŠ‘õê$!”––Ò£ÇHJJîò€¯p—m%33›Hd*áp8蘒T£y‘$¯ªÊÅúiìØ‰ÕÅ¥;àeúЋ7y¯ärsóÍ'IµÁò"I ÞÀçŸ[^BQQ1Ðm§k‹èMK¾¤«ïKRÝby‘$¯  ú¶[·}?Nß*/¯Çö—í éÆЛÅÕ÷%©n±¼H’‚WPiià–šZTítm3("ƒÞ,ª¾/Iu‹åE’s;î’Õ¾ýP^äϼRÕÀ]²BFF:P¸Ûõ—éCoæ‘q¶»¶Iª{,/’¤˜*--%33›É“‡S\<›U+ÿÂi›¾á©÷.$33Ûs€òòrIK»ˆ•ÕW+YÄÑ´fÿ{ÝL'IµÃò"IŠ©]wÉêÌ?hÈV IIÉwÉ:@áp˜Hd*£GÏ ==‹v톒žžÅ)—½OU½zõÆAG”¤ç9/’¤˜Šî‚õ]AéN›8‚qJQѽeK4áp˜I“&î~ãX´®¿>ö¡$©9ò"IŠ©]wÉÊ$«te €wɪ }úÀË/GÏÏ‘¤:Äò"IŠ©]wÉêNl?ߥÒ]²jBïÞðÉ'ðþûA'‘¤ey‘$ÅÔŽ»dÇjNâÃÊKaõ}–ž=!ŠŽ¾HRby‘$ÅÔŽ»du#@@„´´qäå嚯NhÑÎ<3ºîE’êË‹$)¦vÜ%kp«\>K=‚æéc=z‘ÈTÂTY3z÷väERãnc’¤˜ûv—¬>EîÌòéÓƒŽT§”••ñô«¸éý÷ésÊù¬iÔ€ŒŒtòòr-‡’š#/’¤`”—òeЭ[ÐIê”퇀þׂà„÷s(.žÅäÉÃ=TR³¼H’‚ñÆðÍ7™t’:eû! kÄrÒéÃËDÜw÷PI Ïò"I Fa!Ô«]º¤N‰ÍZDïêò²]·êû’”˜,/’¤`DwÄjÜ8è$uÊŽ‡€.¤/§±‚cù´ú®‡€JJl–IR0 ]ïR v<t!}v}ñPI‰Íò"Iнuëàí·¡{÷ý?VeÇC@KiM18—Õw=TRb³¼H’boéÒè[G^jÜŽ‡€B% éK_â! ’êË‹$)ö  eK8õÔ “Ô9;šžžÅŠãŠhÏJnñ˜‡€JJxR)IнÂBÈÈ€ÿ†V¾= ´Z·æ‹zÅER‚ó§†$)¶ªª¢åÅõ.±qÌ1ž D’›åE’[%%°v­ë]béÜsaÁ‚ý?N’âœåE’[Ñ·ÁæH&}û»ïÂÇD’‹k^$I±UPíÚA«VA'I}ú°~Ö,~RôEEÅ”—×#5µ‚ŒŒtòòr]È/)!X^$I±åá”±S~Úi¼0ö&=ÈB@%ÅÅEäçg»™¤„à´1IRìlÚÿü§‹õ°Ftù:èN´¸@ô׀L 77/¸p’t€,/’¤ØùÇ? ¼Ü‘—ÌÞ¢-Ÿp"íán7ŠŠŠcžI’–åE’;pÄpÆA'I:‘†GЗ…{¸›Byy½˜æ‘¤Cay‘$ÅNa!tí õë$élh˜Ê¿è´—òRIjjE¬#IÒA³¼H’b§ Àõ.ÉÈHg!§í¥¼’‘‘ëH’tÐ,/’¤ØøôSøðC×»$//—·Z¿Eïñ=VU_­"¤¥#//7Àt’t`Ü*Y’……TAÛ¦ IDATÑ·Ž¼"sÏËÓá´Ó¸ìø‹˜Ñô¤Îyq›dI‰Áò"IŠÂB8î88ñÄ “$­£Û·‡3Îà¿»vå¿ÿô§ ãHÒAsÚ˜$)6¶¯w …öÿXÕžsÏ… ‚N!I‡ÄòRË–/_Î¥—^JZZMš4¡U«Vôèу'Ÿ|2èh’;°t©ë]âAß¾°jUôŸ$%§Õ²?ü 60zôhŽ?þx¾ùæ¦OŸÎW\ÁªU«7n\Ð%©ö-_7ºÞ%ôîýzùehÓ&è4’tP,/µlРA 4h§k7Üp]»vå‘G±¼HJ……’=ãEÁ:ê(8óÌèÔ±«® :$§ %%…O<‘úÒ&)Y@§NдiÐIÑ©c B’šå%F¾ùæÖ¬YCII <ðsæÌ!7×=õ%% §Œ/}ûÂÀ{ïD’Šå%Fn»í6Ž9æN=õTÆŽ˯~õ+®»îº cIRíûê+xë-ëÇ“¾}¡^=˜;7è$’tP,/1rë­·2wî\{ì1Î;ï|8/½ô+V¬à¬³ÎÚãc|ðAÿç–”>üðCN>9ÊÊrn¢ËÖò«€­´n=‡?þñ~:wî¼ÏñüóÏs÷Ýw …ÈÈÈ`РA\xá…tíÚ•”'¶óχÿú/xõÕè(Œ¤³§?6oÿã´ßý²iÓ&Kª“î¾û!*+Çb)ÝiB„ëÿþ—Ï?ÿÏ<ó2Gyä>?ÆøñãY½z5>ú(ßÿþ÷yàÈÈÈà{ßûyyy¬_¿>&ŸKÕ­4kæÔ1I ÅßœkYYYÙn×¶mÛÆc=F«V­èرc©$©v÷ÐŽ¦Å:^¡Çw»Ußß¿ãŽ;Žœœ¦M›FYY‹-bРAÜu×]<ðÀµ’=iÔ¯çžky‘”Pœ6VË®»î:¾þúkz÷îÍñÇÏgŸ}Æ“O>ÉÊ•+™4iõœg,)ÁlÞ¼™É“'Ó¿Ú¶m»ÇÇ”—×Bôà* QÈŽ;¥Tß?8õë×§W¯^ôêÕ‹Ÿÿüç4nÜøÐ>}çüóá¶Û`ÃÏà‘”y©e#GŽ$%%…ßýîwüøÇ?æÁä”SNáÅ_äÊ+¯ :ž$”™3gÒ¶m[n¸áæÏŸ¿×Ç¥¦VUda9ùš§ˆUVß?t'œp-[¶<¬!¢åeÛ6X´(è$’t@y©eÙÙÙdggC’ËêÕ«¹é¦›˜1cC† aÁ‚œzê©{}|FF:ÅÅ…da çìr·ŒŒôÚ ¬Ó®|ï{Ñ©c^tIÚ/G^$I{UYYÉ#›™3gºEý®Âa¶uêÄüŸÝÃä ò€PIqqùùÙ1-“¤á´1IRÍ«¬„‚‚hy ØE]IJeËhذ!ݺucÚ´iAGŠ;/UA· å@7¢Å¢¿"t§¤d¹¹yÁ…“¤X^$I5¯¸Ö¯‹òжm[ ÈÊÊâÍ7ß :NÜyf}ˆãXËéìé¿Í**IµÍic’”ĪªªØ¸q#Mkú€ÂHRR #£f?îahÒ¤ O=õ”‹÷÷ ¨ÁÑlâÎç%Þ¤Ó.wíPQIª ޼HR’Úºu+W\qÆ «ù_è#8㌸;µ= ‘’â¾]U6€|z1€÷t÷°•¤šâwpIJB7n䢋.bÚ´i\{íµ´ýñAÙ¾X_ !##—hOoÑÍ»ÜõPQIñÃò"IIæ‹/¾àüóÏ'??Ÿ¿ÿýïdgg×ô ÀÛoC5ûqUkòòryëÄB³‰,®¾»CE%é@¹æE’’ÈÇÌÀ)--eÁ‚œ}öÙ5ÿ"Ñ· 6ò²yóf/^LÿþýƒŽsáp˜IËfñU›SÕäz>iÕq‡s^Ü&YRü°¼HR’X±b  ªªŠüü|N;í´Úy¡HÂa8å”Úùøµä‘Gá–[ná·¿ý-ÿþïÿtœ˜ ·n ?Ƶ+Vpí²gƒŽ#I{dy‘¤$PUUENNMš4áÅ_äÄO¬½ øpÊCuã7RRR˜1c(++ã®»îªùµ@ñîüóaÊX»Zµ :$íÆò"II  ñÔSOѬY3ZÕæ/¥PXwÝU{¯QKRRRxðÁ9æ˜c¸ë®»Ø´i&LH®sþùPUóæÁˆA§‘¤ÝX^$)I´iÓ¦ö_äÍ7aÆ„[ï²](bܸq4nܘÛn» ðŸÿùŸAÇŠN€ÓO‡çž³¼HŠK–IR͉D 5~ðƒ “–[o½•­[·ò³ŸýŒúõë3nܸ #ÅNVüáÑQ´zN))¾¸U²$©æD"pÖYиqÐIÛØ±c¹çž{øío˺u낎;YY°fÍw»ÆIR±¼H’KYY99wбã`VMy†'Þ‹¾_VVt´Ãv×]wñ¯ý‹–-[%v22àè£aÖ¬ “HÒn,/’T‡¬X±‚ùóçÇìõJKKÉÌÌfòäá”O¢Í¶<÷Å}Lž<œÌÌì:Q`juƒƒxT¯  ³gD’vcy‘¤:âý÷ß§_¿~ÜqÇTVVÆä5ÇŽHIÉ}@wºS@„@wJJ&››“ªaYY°|9¼ÿ~ÐI$i'–IªJKK0`7æ¹çž#%%6ßÞ‹ŠŠnda5Çñ'UßíV}_ gÀhÐÀ©c’âŽåE’Üúõë4h6làÅ_äØcÙk——×¢ç ôd1¯ÐãÛ÷!¥ú¾N³fз¯åERܱ¼HRÛ²e _|1ï¾û./¼ð'Ÿ|rL_?5µ¨¢[È ˆ|zíp·²ú~݉Dxíµ×‚ŽQ{²²àå—aýú “HÒ·,/’” ***¸âŠ+X²d ³fÍâÌ3ÏŒy†ŒŒt ³YÊlÙ¥¼V߯{ªªªøÿø DIIIÐqjGVlÛsæD’¾ey‘¤õÌ3ÏðÌ3ÏðôÓOÓ»wï@2äåå’–v'½x’õ4ãuÎ*iiãÈËË $Wm …Büå/¡E‹ 0€Ï>û,èH5邏 S'§ŽIŠ+–IJP—^z)K—.eذae‡ÃD"SuÂþÕ¤!mÛ]Lzz£GÏ ™J8,[m ‡ÃÌ™3‡Í›73hÐ ¾úê« #Õ¼¬,øûß¡¢îNÿ“”X,/’” B¡]ºt :ᣎ⌯×ÒóÎ[Y±âY–/ŽI“&Öéâ²]›6mxá…XµjÆ cË–-AGªYYY°v-D"A'‘$Àò"I:\ÿúWtQw¯^ûlÔ©S'fÍšE$áG?úUUUAGª9pÌ1N“7,/’¤Ã“Ÿ=ä쳃N˜ž={òç?ÿ™'žx‚éÓ§§æ¤¤°é¼óøä÷Ò±ã`Ú·JÇŽƒÉɹƒ²²² ÓIJB©A$%¸üüè_è8"è$ÊÎÎæøã§gÏžAG©1¥¥¥Ü=ÿ ~÷ÕZ6õKÞ£-PIqqùùÙu~]“¤øãÈ‹$Ź 6P¯ ¦«ª¢å%I§ŒíªW¯^„B¡ý?0AŒ;‘Ç?ÿ%[h@³«¯¦Ý))™@nn^ñ$%!Ë‹$ű­[·2lØ0rrr‚޲g?ny©£ŠŠŠÙȹ̧Yìºî¥EEÅä’”¼,/’§ªªª¸þúëY´h×\sMÐqö,?B!èÑ#è$ªååõ€³È¢7‹8’·ƒN©¾/I±cy‘¤8uï½÷2yòd&MšDŸ>}‚޳gùùpÖYмyÐIT RS+€*f3„ú”s/ìp·²ú¾$ÅŽåE’âÐSO=Åøñã¹çž{¸ì²Ë‚޳w®w9 •••ñ»ni22ÒB>âûü“3w™:VX}_’bÇò"IqfÉ’%äääpå•W2nܸ ãìÝêÕðÞ{–—ý¨ªªâÊ+¯äÖ[o :ÊAËËË%-íN ÂL†‘Å,ò !-myy¹AG””d,/’GJJJ6lÝ»wç‘G‰ï«òó£o-/û …8çœsx衇x衇‚ŽsPÂá0‘ÈTFžÁ²´4g=ן؋ѣg¸M²¤@x΋$Å‘M›6qÆg0mÚ46ltœ}[´N=Z·:IÜ3f ï¼ó·Ür iii\xá…AG:`áp˜I“&FßéÒ…_¦Ûß—¤säE’âÈ駟μyóhÕªUÐQöÏõ.eâĉ 2„ììlþõ¯çÐŒ³gÃúõA'‘”¤,/’¤ƒ·n¼ù¦åå Ô«W'Ÿ|’SO=•!C†ðé§ŸéàegÃæÍð·¿DR’²¼H’Þ’%PU½{$¡4mÚ”Y³fQQQÁСCùæ›o‚Žtp¾ÿ}èÙž~:è$’’”åE’tðòóáøãá䓃N’pN8áfϞͺuëXµjUÐqÞ¨Qðâ‹°vmÐI$%!Ë‹$éàm_ïÏ»¡Å±Î;óöÛo“žž€ç¤\rItÔmúô “HJB–I ÀG}DAAAÐ1Í7ßÀÒ¥®w9L©© ºáç1ÇÀyçÁ”)A'‘”„ô;§$%®¯¿þš!C†°uëVÞ|óMêÕ«t¤ƒSXåå–—d6j\}5|ò œpBÐi$%G^$)†ÊËË9r$«V­búôé‰W\ :e¬E 8ýô “((_ ÀÔ©A'‘”d,/’C·ß~;sæÌaÚ´itìØ1è8‡&??ºãTŠ?B’Vóæpá…N“sþ䑤ùõ¯ͯ~õ+zè!tœC³u+D"N«EÅÅÅlÙ²%èû7j,[ï¾tIIÄòK—.åÆo¤cÇŽ4mÚ”“N:‰ììlÞyç £IŠ‘çŸžŸüä'Üzë­Œ3&è8‡®¨6n„~ý‚NR'mذ>}úpÍ5×PUUtœ}2š6õÌI1ey‰_üâÌœ9“óÏ?Ÿ_ýêW\wÝu,Z´ˆ.]º°|ùò ãIªeï¿ÿ>#FŒ`ðàÁLœ81è8‡gîÜèz—΃NR'5mÚ”ßüæ7<ùä“Ü}÷ÝAÇÙ§² xå˜ïó }»,:vLNΔ••MRænc1pûí·söÙgï´-fvv6:uâþûïçñÇ0¤ÚÖ¦Mòòò¸òÊ+sþŽæÍ‹Žº$úçÇFŒÁûï¿ÏÏ~ö3N>ùdrrr‚Ž´›ÒÒRzôIû÷®æ9~JÃw&ð§S\\D~~6‘ÈTÂápÐ1%ÕA޼Ä@ffænûù·mÛ–ôôtÞ~ûí€RIŠ•P(Ę1chÒ¤IÐQφ PP=ãCµ*77—믿žë®»Ž¹sçg7cÇN¤¤ä>^â&Ör£˜BôWŠî””L 77/舒ê(ËK@ªªªøüóÏ9ú裃Ž"IfÑ¢èù.ýû¤Î …Büú׿¦ÿþ >œ7Þx#èH;)**º±LçFò4°}N·êû’Tó,/yòÉ'Y½z5ÙÙÙAG‘¤3w.œx"œzjÐI’Bjj*Ó¦Mã”SNaðàÁqµ–¤¼¼à .çdVq. ªï¦Tß—¤šgy ÀÛo¿Í 7Ü@=¸êª«‚Ž#I¤|ÎòhNÇӇоýPhÇ@³f͘={6?úÑ8ꨣ‚Žó­ÔÔ ¶´,¦'oÒ‘óÛ껕Õ÷%©æ¹`?Æ>ûì3LË–-™>}:¡Ph¯½å–[hÑ¢ÅN×FŨQ£j;¦$í¤lùrÂÅÅüž»)æn¢u¯tv œp Œ?>è;ÉÈH§¸¸è„ø-?æWÜÌ |Ì'|DFFzÐ¥@M™2…)»âúå—_”¦n UÅýFòuÇW_}Eß¾}ùøãÉÏÏç´ÓNÛãã^{í5ºvíÊ«¯¾J—.]bœRÒ¡š;w.“&MâOú 6 :Nú]ß,Ƽ<›ãXÍg·ËÝ£GÏ`Ò¤ßZ¬¬¬ŒÌÌlJJ&ÝhÆ>áþ<žö¾eVÚ¿«N‹‘Í›7“••Å»ï¾ËìÙ³÷Z\$%¦üã\|ñŬ]»–””º÷­5üú?YNúŠ ¸@;ù„Ãa"‘©Œ=ƒôô,Žkw9³ZÅOM%²è ‹‹¤Zã´±¨¨¨ ;;›ÂÂBþö·¿Ñ­[· #IªAï½÷ƒ ¢C‡LŸ>úõë©Æuß°–gøá^îº@;…ÃáGÛÞ|:u‚Å‹aĈà‚IªÓ,/1pûí·3kÖ,²²²X³f O<ñÄN÷/¿üò€’I:\¥¥¥ 8fÍšñÜsÏÑ´iÓ #Õ¼÷ÞãÄòMÌ£ß^àm§Ÿ½{Ãoky‘Tk,/1ðúë¯ …˜5k³fÍÚé^(²¼H jÆ <˜¯¿þšW^y¥îN•™;—ŠPˆ—«övÈf¡ ´°mÛ6n¸á.¿ürz÷îtœ¨ÿFŽ„åË¡cÇ ÓHªƒêÞÄì8´`Á***¨¬¬Üí_E…­”ÑÖ­[¹ä’KX±bÏ?ÿ<§œrJБjϼyTvíJ8í> TVߨ"¤¥#//7¸|Iª²²’’’†?‡X^|1{ltôEJ`eeeääÜAÇŽƒÝ>ÎX^$é|øá‡ó׿þ•Î;§öTV¼yÔ¿à‚h·k7”ôô,FžáÎRiذ!3gΤM›6\pÁ|ðÁAG‚ àÚká±Çà믃N#’ÒÒR23³™X^$©ÚSO=ŨQ£5j?þ8©©É58½ý¬‚• a6³²Ã]Ï*Ht|ð“&M";;›­[·Æî…<rsá„ ·p–ª•––’™™ÍäÉÃ).žÍÊ•ÏR\<‹É“‡“™™]³fãFxñEøÕ¯jîc&1Ë‹$U{饗¸âŠ+˜C‡B«VЭÜ{/¤¦FÿõU(+‹Ôzãž=¼U‡-yJK’v’——KæI·ó^e6ƒ«¯zVA]tþùç3þ|Š‹‹éÝ»wl¦ûqÜuL™o¾Yû¯§Z±}mÜžÕÌÚ¸C)HûÎu 3g¾´Ót²Ï?_ Tíåñ»Œ4WUÁÊ•ððÃ0b´n gž ?ûlØwÜK–Àºuð÷¿GßïÒê9Õ¶68mL’D·úœsóp*á½v¦]Õ4Ï*¨ÃºwïÎâÅ‹ùå/IË–-có¢W_ ¿øEt-Àôé±yMըñ8@‡2¥kï¹JQ|õÕÃ|õU7¶O'ƒ«‰*ÙcÏ)ä‚ôaòä廬}òI´ŒddDGûõƒÌLˆÅ´KíÄò")©lܸ‘F%õô°}i¶p!ôìIdÑKAGQ tèЇ~8v/Ø Œ-1¯½ýë´Êöµq{. 5³6îP ÒÞsM&ÅùîcD¯_Tý6“c(£/ 8) L}‰“¦o‚gþa92ZVzõ¢lóæèZœ›þ÷€Öâ¨æY^$%ÒÒRÌyçÇý÷ßtœø³iÌëš¶}.¶¾â ¸ÿþèöÉ/½ä:€“‘‘Nqq!;—íjfmÜ¡¤½çÚó(NsêӇ빠Á0Î m¡Ý–¯XÝü(ZƒCŸ>Ñõ,ÕbµYöÍ?=JJ +W®¤gÏž|ôÑGdgg'>ÍŸ-0C†ìÿ±Ò^ìw±õºuÑó.æÍƒG :®R^^.iiwrUY}µfׯmßù$sæÌ!44”éÓ§ã©¶•öíØ±±0`€Ù‘ˆ‹ˆeòäÉ|ðÁüôñ÷ý½ IDATÓO´iÓ¦X+ö^íÚðé§FmÁœ90rdY„-&qT²ví=tíÚž;ÿ.vRST‚´)r-Î¥rSZ"·{§Ó6)³gÁ×zö4f®s¾qcÆß4Œ˜˜@k.v‹ÌYÅYPì÷èŒfR4%/"R!8p€¥K—òõ×_óðÛŽëûùg¨YÓøG_¸úê«Ù´iƒ ¢K—.„‡‡Ó¿ÿ"W¢ ¼~ý`ÄxñE¸í6¸òʲ _œ,ÿvÁ\@ ÌæàÁ‡0¶\•²ÈÝjådDïI¿W1“Ôã$iTåw®çºVFýgun½¼/Øõ‡’¯âØQÚf¹ ,Ö­‹(ök‰Vq9[¶l±Ö-[¶˜Šˆ[KII1;÷ѹ³ÕzÿýfG!.èÌ™3ÖZ-‹uúôéÖ¬¬,‡÷ k…«±±àm£5$dlþœ:eµ6jdµöïoµfg—ã;‘òØÏ Ù6~æc­°±ø.uð Õúå—VëÃ[­[­`ÍÀÓúÝ­“™híÃ*kUÎï¹Ê@BB‚5  OÎûÉÊyÝ,+l´ô±&$$zL|||Îc"¬°Y×we@+/"Raùúúš‚鶬ÍýÆñøqˆŠ‚Ñ£Í V\R5X²d “&Mb„ ¬]»–¯¾úŠ ؼXX(6 !&fÆ7í8ܦS§|ò óæÁ#”ó;’Kë3¢ìot\µqã«yu2µÓ.Ð==‘»ªeÑ#ã ž‡µPíÛÃCñk™x©Ô°ù\¶†W–¥ÒÔâä_‘ÚZ®ñUJ^DD*¨bÏ$X¶ <<Œ-<"6xxx0eÊzöìÉ#<­·ÞÊöíÛm{-U±õ€F·§çžƒ[nFœð®\CY%¥Q–sKìo´_U‡}´ÙM‡½uËA‚0ºuýÌ«•ÉÝsæPkà@#ÁÖý8ÐNâÎ*˜·W‹cãRJ^DD*(û{Ð/¶¬={¦QïÒ­Ô«gR¤â.n»í6vìØÁßÿm3qÉUÒ <Þ}×Zùä“ðÕ¢ûXi“‡²JxŠýQ öëA.&5Õ9KO6Ìj‚YM{¶â‘ûÙÆú0…WYKoâiÉ„¬]Ìì#òžÉ æ7°ÒМqK™™™¼úꫬ[·ÎìP\V±f¤¥ŒL)ÅÔ°aCºwï^öO\·®Ñ}ì§ŸàÕWËþù]Pi†941±Ø¯ïø3¢K–¬$(¨?­[$(¨?#G޳ûü¶f³Tå½Éd2£ø›8M~¡2Ÿ]1ŠkiÊ®a?ÿà30ÔH\[sSJ3¼Òl.)+J^DÄíDGGÓ³gOf̘Á®]»ÌÇe«eíÚµšªÉâ¹mní^aa0m|ô‘¹Á:Ai†–å”wûŸ À0’“?.v‚äïïOÄúyLí÷>ïú·!âŠz$[j°†ÿò´Ç7ŇgyÖìæ*3‚§˜ïíÃašÙ‰®ð6°Ò ¯4›ã„KJCÛÆDÄmdddðÆo0uêTš7oΆ èÖ­›Ùa¹¬bm±øñGhÖ ]ïK©XнEjìXcæÐ3ϵ/wßmräå§4C‹=´ìF̦Qäv²ìlؾV¯†Õ«ñ_¿žWRS¶ë}{Aß¾LvƒüòÏ7‰ŠZ ™¿˜³ÍmãÆìÝ[üm`¥ª§2YþÞEÞ_ЦäEDܦM›xôÑG‰ŽŽæŸÿü''NÄÇÇÇì°\ZQ3 ºÝØ~ !!•¢¾@œãûï¿çرc<óÌ3ùû¾Âb·ß†cÇ`Ø0Xµ Êc›š (M GYNy·ÿa/A²ˆ/Ë—Á½1ÆÊíéÓpÅУLœÁÁСx]¼Äô›µ3#GŽcïÞ’ÍM)U=•‰.M¸Ö­‹àÀ³#rÚ6&".ïµ×^£k×®xyy±yóf¦NªÄ¥ŠÚbñf¿.pâ<ø yAJ…³sçN^xázöìItôÅmO%Ú"åé _ ;[wï.טÍRšÇ5%+Z·ÿ‘‘ Y `?ñóFØE[Bÿ'OÝáÖ­3˜ÿþþùOãgæU¼ïÆÝqXiä&\ ¾gv(‚V^DÄåÕ¯_ŸéÓ§3f̼Šù¢½Å¢öرк5´kgv¨RL™2…Ûn»Ç{ŒöíÛ3fÌ^~ùå"V N{Œ  þùþžÎüüsêÝsÜqlÜ;ó­”»ÏÄ¡ôSÞm±õq•õ,­bÐõüú°†&! 6щ/ÅjzsúÚ·Ù²nyéÞt¯ïêÛÀÄ|«Õª.fëÖ­tìØ‘-[¶Ð¡C³Ã‘ŠèüyhÐÆŒI“ÌŽF* ´´4¦OŸÎÌ™3©U«õ‰‹ÛJáïM€¡ÀtŒ x£¢˜@ä·ñ»ë.£•÷ÚµP»6`î|”²TÒ÷‘˜˜H·nöž’Ìf .Ö¬¹x‹‰!ØA+Vs« f=I¡fÎ" YìV[·\…®ïʆ’¤¿Ü"Rî-‚ûîƒ={ U+³£‘ ìðáÃL˜0o¾ùèl,pqÀ½9ç Š`èÐyœOeÜÏó9åY…ç¯î@µN×ù?|ƒ‚ O³fcéÚµ=;wþíÖI ØOlBCGöeé·ÄD# ÌMVr·äBŸ>̉  ºöªì$t}WV”¼¸ ýå–Ê&--M5,Îvß}pàlÙbv$RI,_¾œQ£Æ÷1ù/ˆoVa{KÙq¼½ûpáÂlðc1ƒiÁß„p#‹˜,äOîÞÆÖ*Ž;]tçïÎvïåäIX·Žs¿ü©…?pUÒ T©ÎÁæ-é8f454Vb/QQV¶\‰®ïʆ’¤¿ÜRYœ9s†?ü·ß~›%K–УG³CªΜÁZ¿>ß]ß•ÉçªëÂDœÆÖqlì)Μ‰°óˆqÀ=ä&)ÕHå e( xñ¼Â4²ñ,pû«8î´ÝiäÈqÌ™3Ûµ-ÞËÉ“°~½QH¿f ìÜ À!¯+X™y k¹Ÿ5sŒF¸cRçÎt}W6Tù*"NwúôiÞ{ï=Þ}÷]RSS5jMš41;¬JãÌW_Q3=±›_$–Ø·!RÆlµ¹ êOt´½vÁù[öž£:ÃgÆL:²…¡|Ë)ülÞ?¿’Í@1[±ç¹$&‰JîíÏ?ãÍšÛÀÆŒaÌÏ¿óö‘N„ ´©qj•,"N“À„ hÚ´)¯¿þ:<ò111|ôÑGJ^œèÐëo±žvÄ2ˆËÐ-r¹.¶ ¶/a´Í͕۲÷RÞ¦·ò_Ú±-t¤ äœ+»(f³×í*Ž0Œo™xtAýúpÿýðË/Щ|õ:dl ýòK>œåѱ»Mµˆ‹ÓÊ‹ˆ8Exx8!!!x{{óôÓO3fÌØc-N˜H›£‡x–qvîà^ßN‹û»Ø.x °x¸¸ /¯X23m­Ê²†jtd ‹Ìtc1÷ð*ID—pècY+«Z/¯,,dq-{èÎFz²^¬§9ˆ9_zÜ/¿ ½{ÃUWÙ}®²l)b6%/"â]»veÚ´iŒ9??¿¢ åãûï±ßó€;èBFœëÒY‘‘ÍHNöåÌ™ƒœ=;ªÀCÀÿ×\ò¨P`G˜IW6ò0óùÿâOò wò/>äo ¼RÉf ”Fþ"û0J¼%óÜ9ˆŠ‚™æ/®¦uI! ¶Óޏ› ôä7ªÒÿÁµÌþ$ÿV/{‰“±‚enR'RV”¼ˆˆS4oÞœ±cÇš†„‡á[“gí%ºç³U Ã;ï¼ÃG}Bvv8F3£ãÖ~š5ó k×oÙ¹s:dzr·çµ<_­ ý·¯ahVk¾àQ¦ò*GiŒ£¡eiüø™9‰Ë¥µ%ù·dæ½ÏÌLˆŽ†M›Œ„eÓ&£^%3jÖ¤MÇŽü;~>=(†s–Z8`é(qòõ]üíFåŸÔ‰”%%/"rÙþüóO"##yì±ÇÌE9|~ûÝ=ï„ e3¡[¤¼ðÁÊC=ɾ}Û¨Ukà%Û°–Øâxè‹ïÎÐm³y<ëS¶U«ÃþÀ¶ÜöÁÔ-çFöŠì}8Ož\¹b<ŸÛ¶mÊÏcÆJçÎðÄн;RÅÓ“‡ÙÆñ¨‹œ>ï(q:{ö jÔx’””‚mª“Ô‰”%µJvAj¥'®Îjµ²k×.~üñGÂÃÃÙµkõêÕãàÁƒT¯^ÝìðÄž™3áµ×8M×[Õ:©ØÎœ àçŸaåJHKƒk¯…aÀ¸á¨Q£ì^Ïj¥Ë5w@Ìdˆ!€®ã´e'­Ø‹'Ùd­Z¯Ý¹³qëÐ|}/ûå®mK±·5¬U«ÛèÞ½½æ¶˜H×weC+/"R,ééé¬X±‚eË–±lÙ2Ž9BµjÕ4h3fÌàöÛo§J•*f‡)Ž„‡Ã]wQ¯y󼃨¨©E~£+â–.]ÊÇL¿~ýèׯÍš5ƒÇ7n©©ðë¯ðÓO0{6„嬎ԯ-[B@€ñkË–P·.xy¾ef3T ÞÎ^11D&'ÿ ‘zDȯÜÂ[Œa'ב}í$6ÿµ¢\ÞQEùPMí¥BPò""Å’––ÆàÁƒiÞ¼9÷Þ{/ýúõ£W¯^øøø˜šÇž=ÆV•‰Û5"îÌÛÛ›sçÎñüóÏ3zôhÚ´iÃwÜA¯^½èÑ£õ ‚Aƒ + ¶o7þŸØ¿ß¸ÅÄÀŠP¼«V üüŒ[½zÆêÉðáòßù|í`b¸‡jxP!]Û–ùûÎeÔª©(_*>%/"@FF†Ã•“ZµjqðàA®¼òJ'F%e&<jÖ„~ýÌŽD¤\Ü~ûíÜ~ûíœ9s†_ý•eË–±hÑ"Þyç†ÎܹsÁÓ:v4n¥¤@r²±ÊRðæáq1a±ó¥Í£y§ÛRbZáìڒΉŽV-›T|J^œ 55•°°0"##‰ŠŠ"))‰Ù³g3bijC“J*!!mÛ¶±mÛ6¶nÝʶmÛÈÌÌäÀ§ÄÅMY­0>ÜsÝ‹.‘Š¢fÍšÜ{ï½Ü{ï½>|˜ 6P£ˆú–ììl¬Õªáyu0—¶}vö–Ì‹órlײ©(_* %/N˜˜È”)ShÚ´)íÚµcíÚµX,öö¥Š”ˆˆ^}õUþúë/Ž;ÿÈ·k׎þýûÓ¾}{²³³ñðð09R)s«Wþ}ðÙgfG"âtMš4ᡇ*ò~ÑÑÑtéÒ…   Z·n͵×^KëÖ­iݺ5×\sM¡-²Ž†Qš±%ÓÌÄIÄ™”¼8AãÆ9~ü8õë×gË–-têÔÉì¤ÈÌÌ$>>ž#GŽpèÐ!®»î:‚‚‚ìÞßÇLJZµjB»víèСÍ›7W²Rüûß½z™‰ˆËòóócòäÉìÚµ‹={ö°lÙ2N:€Åb¡iÓ¦lݺ•:uê\þ0Êr¢Z6© ”¼8A•*U¨_¿>`´˜)1cưk×.âââ8~ü8‰‰‰ùþ>͘1ÃaòÒ¾}{-ZäŒPŕįÂ?Â{ïV|EìjÔ¨cÆŒÉwìĉìÞ½›={öC­ZµG3UsŠÎ{2pàíøûûãç營ŸõêÕ£Y³f´hÑÂiïI¤"Rò"R„¬¬,’““¹pá…néééÜpà ÷S¯X±‚E‹‘ššJjj*)))$''sæÌ’““iÔ¨Û·owÇ©S§¨V­=zô aÆ4jÔˆ† rõÕWÓ´iSj×®]Öo]*‚Ï>ƒ+®€‡6;·S¯^=zôèA=ò·7Œ®âHHXÁÊ•+9qâ§N"+Ëèô•×4ÀŽôôt†NõêÕ ÝªU«†·Þz«ÃúógÏ’’’‚··wÞÍËË ooomY— AÉ‹ {á…ì^¾õÖ[\sÍ5v»xñbæÌ™cw¥§~ýú|ñÅ_ÿÅ_dß¾}vÏß{l5ÊîùøøxBBB€‹+N}ÿý÷iݺµÝççã?Î{ŒÕj5Š*s~ß°aC–,Yâð}ÜÿýìØ±ƒììl²³³ÉÊÊÊw=z4“&M²ûøC‡àð5¢¢¢nŒ‹‹cÛ¶myÿÕ¯_Ÿ–-[R«V-jÖ¬IãÆ>?ÀìÙ³‹¼Tlöö؇†Ž",ìËÂ{ï§¾€ÿ§ŸÂðáF§1)ögª<<ÁUW $:ú'ÀhpæÌNž<‰···ÃçÍÈÈàÔ©S9r„³gÏæ}ᕚšJZZ™™™¬\¹Òaò2þ|žxâ ›ç<<<¨W¯ñññã>|8xzzâáá§§'‹, ƒfbNÛu[RRRèß¿?‹%ß Èûýo¼AG[ßr,[¶Œ÷ß?ï1ùúúòÝwß9|¯¼ò ;vìÈwìÒçºýöÛyæ™gì>þìÙ³<øàƒ_còäÉ´k×Îîù+Vðá‡е«­NpRRJ^\Ø®]» }Ð]yå•ÅêøTðâ âÔ9xzzâå•ÿ¯È¥ÏWÔsX,ªU«–ï1ïéééð9jÔ¨A“&M }èå~ˆÖ«W¯È÷Ñ£G¼ÚŽÜâÜß{yyùaÒ A.\H•*U ݪV­J•*UŒah„„„ä%r"¥aýræÍ»›Ì̹Ü{ïûËí¼žzÊÌÐE\ž£â{[µ+%™©âááAíÚµ‹µ:^£F V®\i÷|fff‘«'wÞy'K—.%##ƒÌÌL.\¸ï×¢þÝèÕ«5Ê÷…ߥ_ µõÍb±Ð¬Y³¼Ç\úÅeîï‹jìååEõêÕó} {éï«V­Zäû(xSð Ýâ¬D•vµ*<<œððpó:y:úBXŠÏbU†SmÞ¼™Î;3gΆnó>[·n¥cÇŽlÙ²…:89BqE#GŽcΜÁžá0¸èVè1kè@É\{üˆ"qOù¿èBîE@À›Å÷öÿˆ $d± ç¥]ß• µqÆû.6ÎDcë*]ôfŸy½:)R™å/¾Ïý–ÝèJLÌ4BC ×¶„……0ˆÀHtÈù5"g¦J¨"©œ”¼ˆˆ¸û{ìmŠ8NVTÓ`QGì1Ð%ç|~¹3UBB8€V­8€Å¦µI©,Tó""âìï±/|Ü—†ó³x«÷Vç)â†ì1à‘s¾°’ÎT)i]ˆØ¦äÅI>øà’’’ò&›ÿôÓO>|€çž{Žšê$"tîHtt$…·ˆpiÍËÃÌ£çø”¹µsš£q?%)¾/-Wj)⎔¼8É[o½Å¡C‡£sÅ’%KX¼x1‹…áÇ+y‡ÂÂBÙ°a11Ó0¶¸x`ì±ïƒ—W™™³Éݳÿ4ÿæ'zàð.aa Ì [Ä¥ØZýÈÈH¥àEÒ¹sàe¿®ý¡–ëjTà/R”˜˜é@Æ ¼l¢££Ø°aº½ü2øûÓO:1bóiÛ˜ˆˆ ÆŸ™“¸tåâo +11Ó ³ýÀ_~テ7ß4SŠˆˆT"J^DDL1øÎ–.9ç 8wΨq¹åxðÁò ODDÄ%iÛ˜ˆˆ 23=¹¸âRGÎù&O†¸8X¹,ö+""Rq)y1—W`ÅvO|üa‚‚úçòßs?Sþó –ý Z¶tn°""".BÉ‹ˆˆ :w$::£æåR À=$'LrrÀ‚…L>nÏ~ï*Ô ÁA2‘ M5/""& % `dçÍÆori!ÿ?øœnüQÞ$tâ,3Âq Zy1¿¿? ræ¼LÍÛvôh<ÉÉÝòî×8^çŸ|ÆcüÆœŠ`bÔ"""æRò""bfÏž™ïXëÖIN¾Xó/’AÆóv ùEDD* %/"".äÒBþ;ø…¡,à!æqšº@vÎy‘ÊI5/"".¤sç@ ?Nð O°’[˜OîL—Èœó"""•“V^DD\HXX(¿¯€ÿNŇ4Fñ%ÆJ̼BXسC1’âïï϶7pÅ{ïñh“NT«:š@¯,:w$,lþþj”,""•—’WòÃT÷]xã f‡†šˆˆˆKQÍ‹ˆˆ«Ø»FŒ€{ï…qãÌŽFDDÄå(yqgÏÂ=÷@ãÆ0{6X,E?FDD¤’Ѷ1³Y­ðØcpø0DEAÍšfG$""â’”¼ˆˆ˜mÖ,X°¾ÿÚ´1;—¥mc""fúñG£¾eìX¸ï>³£qiJ^DDÌòóÏpÿýF­ËŒfG#""âò”¼ˆˆ˜á?ÿÁƒaÀ˜?¼´‹WDD¤(ú×RD¤ $&&FTT4™™žxå – -ðßÿBË–…žËݺ¦‰ˆˆ¸:ms‚ÞyçyäÞ{ï=<==éׯ¿ÿþ»Ù¡‰Te¹=ËÑs‰ÃÖÞw‰ÊÒ¥ðŰj•ÍÄܯkšˆˆˆ«SòR΢¢¢X°`¯¿þ:o¼ñ=ö«W¯¦iÓ¦„††šžH…P–C-m=W-’˜ÂDþf7íÞ/¿ À¨Q`±·²â~]ÓDDD\’—r¶páB¼¼¼øÇ?þ‘w¬jÕª<úè£DDDpôèQ£©Êr{Ö¥ÏåK /34ç%ÞæCFÓ·y_˜4 jÖ,ò¹ Î1d9]Óô†ˆˆHI¨æ¥œmÛ¶V­Záëë›ïx§Nؾ};W^y¥¡‰T·gÙJ`J¶=ËË+‹ìçY>`_R•t>á ¦3xêXu@±Ÿ+·kšQü?µ@ñ¿‹uMqJ^ÊY\\5*t<÷رSÀ— IDATcÇœ’H…Ó¹s ÑÑ‘u*s{–Õ «Vñ͙ݴ¥§¨Ëû<Ë¿yšcä~ÁAÛ¶Í9r\±»š•´kšˆˆˆØ§ä¥œ?žªU«:îãã“w^D.Ïe µ<}¾ý>üvíâºÀ@^ñoŬÄI£W¾çjÚtüáÉÁƒo ¡“"""Χ䥜]qŤ§§:ž–––wÞž^xÚµkç;6lØ0† V¶AЏ¹oÏÊÌ4ÚÏ ?þhü÷]wÁûïãÕ»7/8ÁñÐ0¢¢fæ{®´´ö|ûíCä_áÉßÕL«,""Nxxx¾cIII&ES±(y)g5²¹5,..€ÆÛ}ì¬Y³èСC¹Å&R‘k{Öÿþg$,óæÁñãpÝu0m<ô4lXäsõÇqW3 Û_6oݺ•Ž;šQš䥜µoßžµk×’’’B5òŽGFíSÛµkgVh"ŸÕj$, Â÷ßÃ_ŸŸ‘¬ŒíÛ;lu\†NŠˆˆ˜K­’ËÙ}÷ÝGVVŸ~úiÞ±ôôtfÏžM×®]ÕiL¤¬Y­°c¼ú*´imÛ»ïB§NðóÏpì˜ñß:”(q 1›V^ÊYçιÿþûyùå—IHH €¹sçrøðafÏžmvx"%–˜˜˜S[R¸Û`÷\¹²_¸ë×ÉÉO?$k׆»ï†·ß&±m[B_}—¨ñ‘9æÓRÇU&]ÍDDD¤Ô”¼8ÁW_}Å«¯¾Ê×_ÍéÓ§¹á†Xºt)=zô0;4‘IHH {÷¡ÄÄL§`·­5kîÁbqb'®Ó§aùr#YùåHN†«®‚`à@†*UÆ\Ò¸.««™ˆˆˆ\6‹Õjµ·BL’[еeËì‹K9rsæ ÆöÊÃà  »s„„,.Tïh§PB‘ Û·‰Ê/¿@D„q¬C#Y8Úµ+´Ìq̶ãr¤D1‹ˆˆäÐõ]ÙÐÊ‹ˆ[TT4Æê…-'€nvÎîÄU¬øõW#YY¾âãÉöõe[ÝFüÔ 5> 9™V…ÎÏvÕUøÛ¨aqsÉ;„i褈ˆˆy”¼ˆH±9î¶åèÜIbcÔ?oµ"##•˜˜\º"âEÝÈ඘&¤¶Åÿd¼Q€Ýu0|8§»u£ûØwÙý÷ëÛ¶ŠÞ¦a"""‡’)¶‹Ý¶l%öÎ%C9sæ#¢£/&p Ð…Öìæ~åVVÌjjp–ø™Q…_|·ÞjÔ²/—“¸H¤ã˜Õ!LDDĨU²ˆ›ÑM+ÒÎÙz@„ã3i ‡…úÄ3Œoù‚ý¦)»iÃÛ¼Dm’˜ÁËÜÈ&ÏK o„‘#óÈÝæhHdt cV‡0w¢•)6Gݶš5‹^æàÁ×ó«N$½èÍ-¼D_Vq;ØI ¾ãq~å6ГT|/y%Û+"¥Ùæ8æq¤¥µÏ·MÅ÷"""®KÉ‹ˆ sµÎVþþþDD,ȉij˜–ðò˜¤¯‰ÎgOqÓ¹D®?Ÿ„78ÌÕüÊ-„Ê*úÏ[€½.`¶WDJ³Ì^Ì×_ߌÈHO¾ýö!Š[?#"""æRò"â¢Êr>IY*Ôm+·…ñœ9°jŸoØçÎA:Ð/˜É¿ïæëã‹ÙÏ5äO:B!ÀŒ.eEÏL)íH[ÂFŽ—3“¦øõ3"""b.Õ¼H¥‘˜˜ÈÈ‘ã êOëÖ êÏÈ‘ãHLL4;4›ÆŸ™“¸µ"†üצ°ZaÏø÷¿á¾ûÀß:v„I“Œs“&ÁæÍ˜ ràŽ;ÙÏ) ¯–øciÙòЪÕ@²ØnbJ@ÀŒÚšìœ£Ù@DNÂZì·Qšú1—V^¤RpÕU GÊz>Ée9rV­‚Õ«ÛÑ£àå]ºÀ3Ï@ß¾Æï«V-ôPÇSéßdãÆï‹ýgïxÛZÉ~†j¡,""â~”¼H¥#—kor|q]xnJ™ÖÂ$$ÀÚµ–ýûÉõíÚÁ°a ={‚¯o‘OU– Gîó•ÅÏJ-”EDDÜ’©\j£˜ì_\Ûž›rY«HÉɰ~ýÅdåÏ?ã×^ ·Ý¯¿½{ƒŸ_©Þ‹+N¥/mýŒˆˆˆ˜G5/R)¸ã!ûóIòÏM1”°æÜ9X¹^~ÙØîU·. ?ü:Á¼yÆÖ°¿þ‚?„ÁƒK¸¸ª²¬ŸçÐÊ‹T î¸EÈ~­ÈJ¼Š”‘QQkV""Œc [ÀÜøµE‹òz;.§¬·³‰ˆˆHùSò"•‚;n²wq{ž3gŠXEÊÊ‚mÛ.&+¹í‹k×6¶½õ–‘¬´icÔ²TR®¸MDDDìSò"•‚ãŽW¶gЏ[×AAý‰Ž.¸Šd%ˆ]ó#·ÿ½Ž3U|¨™É9‹'û7¡Å¸qø`Ü{ºÞ9‘âPò"•BEÚ"d¬"ýAþ³š`VÓ‡54 t,lÌlÏL±†`¢¬7ráèvæM bôhüK¸$&&æüyE—OG3‘Rò"Ž£‹n·Þ" «WóÑù#LóêCãÌt2ñd37ò9²šÍläeÒèSà%oíŽsqDDD¤âSò"J…ºèε’[·²o>íÚQûñQ¼³7žðØ’­>xyíàèÑS¤%÷¶ódöÛAÛJö22R‰‰™;ÍÅ‘ŠOÉ‹T(î8Œ2OR’1k%7Y¹tÖÊ-·ÀŒpóÍP¯Õ€sn¹Z·HrrÉÚAÛKöàl77W‹#"""Ÿ’qi%­»p…a”ÅŽ95~ÿýb²²e dgCӦз/Œ}ú@ãÆÅzÝÒ´ƒ¶ŸìùÚyã¼+ÎÅ‘ŠOÉ‹¸¬¢¶€ýü󇄅}™/Iˆ=…™ÝŽbŽ\?ßy‰Ú[·ÉÊÀ… dÕ¯O”¯Ë±±ª?Ç«ùÐ9».a·ÝV¢-nŽÛA/'##•  þùªÿÄv²ç~sqDDD¤âSò".Ëñ°1té2”””O(¼Ýɼ‹îKcö$“lÍëÖãï?¨6hÔ©cÌZyçNÞp]F¼JÌß30Z8—¾FÇ~;è_ðòz‰ýûçz oï_±ýg¸×\©ø”¼ˆËr¼l ))Q8±éüt³ñ˜’_t—hÛZv6IëÿàyÌtz±žÚ$“‚/ëéÅ«Lå`óX´o]Þ¬•±#Çå$.—_£c¯tFF*û÷ϱù.ÔÁv² ¦`üYºÇ\©Ø”¼ˆË2¶xÙÛö¶”²»è.²sÙÆoñON6¶€­ZkÖ°äÄ ÒØÄïÜÄ›Œe}ÙÌdâ @+ïõù†D–u޽¡–ö‹ï;@÷‚ÏŒ¥eËW¨R¥º[ÏÅ‘ŠCÉ‹¸,Çèö`5kÞÆUW5¾¬‹n[ÛÖ®&–>ì!8Ææ-á\Š‘ŒtéO>ÉȯW~h é\aã o[sœ •MŽã×·w/.\ø’ü[Í" x“¿W¢"""".CÉ‹¸,Çèg±ŸØøqÕUÙµë?—õúQQÑÔg ½YW·r ûÉÆÂv®c~¦»®nMTUÒ“,tŽM#­['Òí°sámk¥éVRŽ_ÃæÍ¯¤{÷Åù¶ši…EDDD\‘’qYö Ð#ñõMäìÙ²«mÉ“”ëÖÁêÕ,Þ¿Ö4 š6ü—ÛϬ#S< ŸÂ‘üðÍš¥Y³<øz¡˜mm[sœ •Ma|Q¯Ñ½{{×}#"""r ‹Õjµš„ä·uëV:vìÈ–-[èСƒÙᔩ’Îm±wÿÐÐQ 0ÚfbðJñ»t¥¦Âo¿]œµ²u«1k¥ysž¾Àâ¤×YC0Çs’Ã8à^l'N :ŸjÅz‰‰‰tëf;A+ÑûpÀ¯!"""ŽUäë;gRòâ‚*ê_îüðW, Š€€ %¾ˆ.i"@zº1_%7Y‰Œ„  Q#6†BCóæŒ9Ž9sSxÅ¢?°{[½”hËZ©ÞG 9ã5DDDľŠz}çlJ^\Pyþå6ó"Ö~2AHÈâ²ß¾”™iL®ÏMV~û ÒÒ nÝ‹‰Jp0´n –üɈý‹Û•v_²U«ìÙóSÙ¾qkJ^ʆj^*‘"[ÿ–óö¡²n lSv6üùçÅdeÝ:HI__¸ùf˜6ÍHVÚ¶‡OeonÊÑ£§INÖôygSòR‰8žX_²ˆ¥Q.m­VØ»÷b²²f œ< >>pÓM0~<ôí ;‚··Ý§q´"UðÏÄXAÒôygSòR‰8eåÃ2k |èÐÅdeõj8v ¼¼ŒY+O?m¬¬tíj$0ÅPÒ)G]Ð4}^DDD¤ü(y©Dœ1ÑÇ-{—“‘‘JPPÿµ8YYÆŠJn²ò÷ßF}J‡ðÐCFíJÏžÆÖ°R(銔½ídš""""R¾”¼T"Έèˆý‹_ðòz‰ýûç]¨Ãinf ¢¿%é›fø_8gd×®ÿ”Il""""" äŵMžL¯ÙëÙp`¥;˜×½K]ÅDDDDÄÙ”¼”€Õj%==½X÷õññ¹üìߟ“ßþ+vïRW1q6%/%°nÝ:‚ƒƒ‹ußÝ»wÓªU«Ëz½^x””c@/ NÎÑa970³{—ZÿŠˆˆˆØNxxx¾cIII&ES±(y)6mÚ0gΜbÝ·aÆ—ýz³fÍâꫯ¦[·!ÄļŒ+µØUë_Û† ưaÃòÛºu+;v4)¢ŠCÉK 4hЀáÇ;õ5]µÅ®«Æ%""""—’7àª-v]5.©˜”¼8ÁÔ©Sصk_}õëׯ`âĉ¦Å%""""âN”¼8Ák¯½†ÅbÁjµb±XøòË/°X,J^DDDDDŠIÉ‹dgg›‚ˆˆˆˆˆÛó0;‘âPò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼¸°ûî{Ž‘#Ç‘˜˜hv("""""¦Sòâ˜Ŝ9ƒéÖmˆ©ô”¼¸4 +11Ó 3;S)yq ]ˆŠŠ6;S)yq dfzš„ˆˆˆˆˆ©”¼¸…l¼¼²ÌBDDDDÄTJ^ÜB$;š„ˆˆˆˆˆ©¼Ì@É"x…°°f#""""b*­¼¸°æÍ_ $d1 ð÷÷7;SiåÅ…-\ø:t0; — •q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y· äEDDDDDÜ‚’q J^DDDDDÄ-(y)g«V­bÔ¨Q´jÕŠêÕ«Àã?ÎñãÇÍMDDDDÄ­(y)gãÇgýúõ <˜÷ߟ¡C‡òÝwßѾ}{âããÍO\Lxx¸Ù!ˆIô³¯œôs¯œôs)=%/ålÖ¬Yìß¿Ÿ3f0jÔ(¦M›ÆÒ¥K‰çƒ>0;|x¾Û‹/¾˜ï¾éééŒ?žÆS­Z5ºvíʯ¿þjRäâ ›6mâ™gž!((___š6mÊ!CØ·oŸÙ¡‰“M›6 ®¿þz³C'غu+ÄÏÏêÕ«sýõ×óþûï›–”£Í›73hÐ 7nLõêÕiÓ¦ S¦LQç© "55•I“&qÇwP·n]<<<˜;w®Íûþõ×_ÜqÇÔ¨Q???†Ή'œ±ûÒÊ‹ 6l‹-âÅ_äšk®aöìÙlÚ´‰5kÖpÓM7™ž”ƒûˆî¿ÿ~Ú¶mK\\|ðgÏžå?þ ((ÈìÅ bcciݺ54oÞœ;w𒔣ÿþ÷¿ 0€Ž;2dÈ|}}Ù¿?V«•×_Ýìð¤üùçŸtêÔ‰Æóä“OR·n]6nÜÈœ9s8p ?üðƒÙ!Êe:xð -Z´ iÓ¦4oÞœµk×2gΆžï~±±±´oßž:uêðÜsÏ‘’’›o¾I“&MˆŠŠÂÛÛÛ¤wàF¬â"##­‹ÅúÖ[oåKKK³¶lÙÒÚ½{w#“ò´qãFë… òÛ·oŸÕÇÇÇúðÛ•8Û!C¬·Ür‹µwïÞÖë®»Îìp¤%''[4h`þøcž{î9Ít«$Ž=Jbb"7Þxc¡s:ubÛ¶m&Då~Ô*ÙEÄÅÅѨQ£BÇs;vÌÙ!‰I¾ùæŽ;ÆÔ©SÍEÊÙÇÌáÇY½zµÙ¡ˆ“ìÛ·ÌÌLî¾ûn{ì1Þxã Ö¬YÃûï¿ORRóçÏ7;D)7æ÷ß§_¿~´oß>ïøÄ‰™>ž;ï¼€Ï>û ???–.]Ê´iÓhР£G69Bq†Ük¹¢®÷”¼8¦äÅE\qÅ6· ¤¥¥å—Šíøñãôïߟ:uê°páBÕ>Tp'N¤^½z<ûì³f‡"N”ûY>lذ|LJ Æ'Ÿ|Âü¡ä¥š2e GeïÞ½4nÜ0’ÖììlÆϰaè[·®ÉQJyËýÿ_×{—G5/.¢Q£F6·†å.1æ~ØIÅ”œœÌwÞÉ™3gX¾|9 64;$)Gûöíã³Ï>ãÙgŸ%66–ƒrðàAÒÒÒÈÈÈàСCœ>}Úì0¥ä~–7hÐ ßñÜB_ýÜ+¦ß~ûöíÛú·|À€œ;wNu­•Dîv±Ük»KÅÅÅáçç§U—bPòâ"Ú·oÏÞ½{IIIÉw<22€víÚ™–8AZZ `ÿþý,]º”k¯½Ö줜=z”ììlž{î9Z´h‘w‹ŠŠbïÞ½4oÞœ)S¦˜¦”ƒÜBÝØØØ|Çs¿¼ò÷÷wzLRþ.\¸@VV–Íã™™™ÎILpå•WâïïϦM› ‹ŠŠÒµ^1)yq÷ÝwYYY|úé§yÇÒÓÓ™={6]»våÊ+¯41:)/YYY 2„ÈÈH¾ÿþ{ºtébvHâ×_=K–,á‡~È»-Y²„   š6mÊ?üÀ£>jv˜Rxà¾øâ‹|Ç?ÿüs¼½½éÝ»· QIyëС[·neß¾}ùއ‡‡ãééIÛ¶mMŠLœmðàÁ,]º4ß«V­bß¾}Üÿý&Fæ>,VGͨũ† Â’%KxñÅ `îܹlÞ¼™U«VÑ£G³Ã“rð /ðÞ{ï1`À›Z?ü° Q‰Yz÷îÍÉ“'ùóÏ?ÍEÊÑc=Æ—_~É<@¯^½X»v- .d„ ê2XAíܹ“®]»R³fMžyæêÖ­ËÒ¥KY¾|9?þ8Ÿ|ò‰Ù!JøàƒHJJâØ±c|üñÇÜ{ï½y«)Ï=÷5kÖ$66–öíÛS»vmžþyRRR˜9.cµÑ4IDATs&Mš4aÓ¦MÚ6V J^\Hzz:¯¾ú*óæÍãôéÓÜpà L™2…[o½ÕìФœôéÓ‡õë×Ûhe±Xln3Š«OŸ>œpàMš4 ::š—^z‰ß~ûªU«Ò¿Þzë-m-&%/"""""â”ꋈˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆ¸%/"""""┼ˆˆˆˆˆˆ[Pò""""""nAÉ‹ˆˆˆˆˆüûu@ èÿëvúÂyäX`A^€yäX`A^€yäX`!'Ÿ÷òp5NIEND®B`‚lmfit-0.9.2/doc/fitting.rst0000644000032700003100000006747712603520205017100 0ustar newvillegeocars00000000000000.. _minimize_chapter: ======================================= Performing Fits, Analyzing Outputs ======================================= As shown in the previous chapter, a simple fit can be performed with the :func:`minimize` function. For more sophisticated modeling, the :class:`Minimizer` class can be used to gain a bit more control, especially when using complicated constraints or comparing results from related fits. .. warning:: Upgrading scripts from version 0.8.3 to 0.9.0? See :ref:`whatsnew_090_label` The :func:`minimize` function =============================== The :func:`minimize` function is a wrapper around :class:`Minimizer` for running an optimization problem. It takes an objective function (the function that calculates the array to be minimized), a :class:`Parameters` object, and several optional arguments. See :ref:`fit-func-label` for details on writing the objective. .. function:: minimize(function, params[, args=None[, kws=None[, method='leastsq'[, scale_covar=True[, iter_cb=None[, **fit_kws]]]]]]) find values for the ``params`` so that the sum-of-squares of the array returned from ``function`` is minimized. :param function: function to return fit residual. See :ref:`fit-func-label` for details. :type function: callable. :param params: a :class:`Parameters` dictionary. Keywords must be strings that match ``[a-z_][a-z0-9_]*`` and cannot be a python reserved word. Each value must be :class:`Parameter`. :type params: :class:`Parameters`. :param args: arguments tuple to pass to the residual function as positional arguments. :type args: tuple :param kws: dictionary to pass to the residual function as keyword arguments. :type kws: dict :param method: name of fitting method to use. See :ref:`fit-methods-label` for details :type method: string (default ``leastsq``) :param scale_covar: whether to automatically scale covariance matrix (``leastsq`` only) :type scale_covar: bool (default ``True``) :param iter_cb: function to be called at each fit iteration. See :ref:`fit-itercb-label` for details. :type iter_cb: callable or ``None`` :param fit_kws: dictionary to pass to :func:`scipy.optimize.leastsq` or :func:`scipy.optimize.minimize`. :type fit_kws: dict :return: :class:`MinimizerResult` instance, which will contain the optimized parameter, and several goodness-of-fit statistics. .. versionchanged:: 0.9.0 return value changed to :class:`MinimizerResult` On output, the params will be unchanged. The best-fit values, and where appropriate, estimated uncertainties and correlations, will all be contained in the returned :class:`MinimizerResult`. See :ref:`fit-results-label` for further details. For clarity, it should be emphasized that this function is simply a wrapper around :class:`Minimizer` that runs a single fit, implemented as:: fitter = Minimizer(fcn, params, fcn_args=args, fcn_kws=kws, iter_cb=iter_cb, scale_covar=scale_covar, **fit_kws) return fitter.minimize(method=method) .. _fit-func-label: Writing a Fitting Function =============================== An important component of a fit is writing a function to be minimized -- the *objective function*. Since this function will be called by other routines, there are fairly stringent requirements for its call signature and return value. In principle, your function can be any python callable, but it must look like this: .. function:: func(params, *args, **kws): calculate objective residual to be minimized from parameters. :param params: parameters. :type params: :class:`Parameters`. :param args: positional arguments. Must match ``args`` argument to :func:`minimize` :param kws: keyword arguments. Must match ``kws`` argument to :func:`minimize` :return: residual array (generally data-model) to be minimized in the least-squares sense. :rtype: numpy array. The length of this array cannot change between calls. A common use for the positional and keyword arguments would be to pass in other data needed to calculate the residual, including such things as the data array, dependent variable, uncertainties in the data, and other data structures for the model calculation. The objective function should return the value to be minimized. For the Levenberg-Marquardt algorithm from :meth:`leastsq`, this returned value **must** be an array, with a length greater than or equal to the number of fitting variables in the model. For the other methods, the return value can either be a scalar or an array. If an array is returned, the sum of squares of the array will be sent to the underlying fitting method, effectively doing a least-squares optimization of the return values. Since the function will be passed in a dictionary of :class:`Parameters`, it is advisable to unpack these to get numerical values at the top of the function. A simple way to do this is with :meth:`Parameters.valuesdict`, as with:: def residual(pars, x, data=None, eps=None): # unpack parameters: # extract .value attribute for each parameter parvals = pars.valuesdict() period = parvals['period'] shift = parvals['shift'] decay = parvals['decay'] if abs(shift) > pi/2: shift = shift - sign(shift)*pi if abs(period) < 1.e-10: period = sign(period)*1.e-10 model = parvals['amp'] * sin(shift + x/period) * exp(-x*x*decay*decay) if data is None: return model if eps is None: return (model - data) return (model - data)/eps In this example, ``x`` is a positional (required) argument, while the ``data`` array is actually optional (so that the function returns the model calculation if the data is neglected). Also note that the model calculation will divide ``x`` by the value of the 'period' Parameter. It might be wise to ensure this parameter cannot be 0. It would be possible to use the bounds on the :class:`Parameter` to do this:: params['period'] = Parameter(value=2, min=1.e-10) but putting this directly in the function with:: if abs(period) < 1.e-10: period = sign(period)*1.e-10 is also a reasonable approach. Similarly, one could place bounds on the ``decay`` parameter to take values only between ``-pi/2`` and ``pi/2``. .. _fit-methods-label: Choosing Different Fitting Methods =========================================== By default, the `Levenberg-Marquardt `_ algorithm is used for fitting. While often criticized, including the fact it finds a *local* minima, this approach has some distinct advantages. These include being fast, and well-behaved for most curve-fitting needs, and making it easy to estimate uncertainties for and correlations between pairs of fit variables, as discussed in :ref:`fit-results-label`. Alternative algorithms can also be used by providing the ``method`` keyword to the :func:`minimize` function or :meth:`Minimizer.minimize` class as listed in the :ref:`Table of Supported Fitting Methods `. .. _fit-methods-table: Table of Supported Fitting Method, eithers: +-----------------------+------------------------------------------------------------------+ | Fitting Method | ``method`` arg to :func:`minimize` or :meth:`Minimizer.minimize` | +=======================+==================================================================+ | Levenberg-Marquardt | ``leastsq`` | +-----------------------+------------------------------------------------------------------+ | Nelder-Mead | ``nelder`` | +-----------------------+------------------------------------------------------------------+ | L-BFGS-B | ``lbfgsb`` | +-----------------------+------------------------------------------------------------------+ | Powell | ``powell`` | +-----------------------+------------------------------------------------------------------+ | Conjugate Gradient | ``cg`` | +-----------------------+------------------------------------------------------------------+ | Newton-CG | ``newton`` | +-----------------------+------------------------------------------------------------------+ | COBYLA | ``cobyla`` | +-----------------------+------------------------------------------------------------------+ | Truncated Newton | ``tnc`` | +-----------------------+------------------------------------------------------------------+ | Dogleg | ``dogleg`` | +-----------------------+------------------------------------------------------------------+ | Sequential Linear | ``slsqp`` | | Squares Programming | | +-----------------------+------------------------------------------------------------------+ | Differential | ``differential_evolution`` | | Evolution | | +-----------------------+------------------------------------------------------------------+ .. note:: The objective function for the Levenberg-Marquardt method **must** return an array, with more elements than variables. All other methods can return either a scalar value or an array. .. warning:: Much of this documentation assumes that the Levenberg-Marquardt method is the method used. Many of the fit statistics and estimates for uncertainties in parameters discussed in :ref:`fit-results-label` are done only for this method. .. _fit-results-label: :class:`MinimizerResult` -- the optimization result ======================================================== .. class:: MinimizerResult(**kws) .. versionadded:: 0.9.0 An optimization with :func:`minimize` or :meth:`Minimizer.minimize` will return a :class:`MinimizerResult` object. This is an otherwise plain container object (that is, with no methods of its own) that simply holds the results of the minimization. These results will include several pieces of informational data such as status and error messages, fit statistics, and the updated parameters themselves. Importantly, the parameters passed in to :meth:`Minimizer.minimize` will be not be changed. To to find the best-fit values, uncertainties and so on for each parameter, one must use the :attr:`MinimizerResult.params` attribute. .. attribute:: params the :class:`Parameters` actually used in the fit, with updated values, :attr:`stderr` and :attr:`correl`. .. attribute:: var_names ordered list of variable parameter names used in optimization, and useful for understanding the the values in :attr:`init_vals` and :attr:`covar`. .. attribute:: covar covariance matrix from minimization (`leastsq` only), with rows/columns using :attr:`var_names`. .. attribute:: init_vals list of initial values for variable parameters using :attr:`var_names`. .. attribute:: nfev number of function evaluations .. attribute:: success boolean (``True``/``False``) for whether fit succeeded. .. attribute:: errorbars boolean (``True``/``False``) for whether uncertainties were estimated. .. attribute:: message message about fit success. .. attribute:: ier integer error value from :func:`scipy.optimize.leastsq` (`leastsq` only). .. attribute:: lmdif_message message from :func:`scipy.optimize.leastsq` (`leastsq` only). .. attribute:: nvarys number of variables in fit :math:`N_{\rm varys}` .. attribute:: ndata number of data points: :math:`N` .. attribute:: nfree ` degrees of freedom in fit: :math:`N - N_{\rm varys}` .. attribute:: residual residual array, return value of :func:`func`: :math:`{\rm Resid}` .. attribute:: chisqr chi-square: :math:`\chi^2 = \sum_i^N [{\rm Resid}_i]^2` .. attribute:: redchi reduced chi-square: :math:`\chi^2_{\nu}= {\chi^2} / {(N - N_{\rm varys})}` .. attribute:: aic Akaike Information Criterion statistic (see below) .. attribute:: bic Bayesian Information Criterion statistic (see below). Goodness-of-Fit Statistics ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. _goodfit-table: Table of Fit Results: These values, including the standard Goodness-of-Fit statistics, are all attributes of the :class:`MinimizerResult` object returned by :func:`minimize` or :meth:`Minimizer.minimize`. +----------------------+----------------------------------------------------------------------------+ | Attribute Name | Description / Formula | +======================+============================================================================+ | nfev | number of function evaluations | +----------------------+----------------------------------------------------------------------------+ | nvarys | number of variables in fit :math:`N_{\rm varys}` | +----------------------+----------------------------------------------------------------------------+ | ndata | number of data points: :math:`N` | +----------------------+----------------------------------------------------------------------------+ | nfree ` | degrees of freedom in fit: :math:`N - N_{\rm varys}` | +----------------------+----------------------------------------------------------------------------+ | residual | residual array, return value of :func:`func`: :math:`{\rm Resid}` | +----------------------+----------------------------------------------------------------------------+ | chisqr | chi-square: :math:`\chi^2 = \sum_i^N [{\rm Resid}_i]^2` | +----------------------+----------------------------------------------------------------------------+ | redchi | reduced chi-square: :math:`\chi^2_{\nu}= {\chi^2} / {(N - N_{\rm varys})}` | +----------------------+----------------------------------------------------------------------------+ | aic | Akaike Information Criterion statistic (see below) | +----------------------+----------------------------------------------------------------------------+ | bic | Bayesian Information Criterion statistic (see below) | +----------------------+----------------------------------------------------------------------------+ | var_names | ordered list of variable parameter names used for init_vals and covar | +----------------------+----------------------------------------------------------------------------+ | covar | covariance matrix (with rows/columns using var_names | +----------------------+----------------------------------------------------------------------------+ | init_vals | list of initial values for variable parameters | +----------------------+----------------------------------------------------------------------------+ Note that the calculation of chi-square and reduced chi-square assume that the returned residual function is scaled properly to the uncertainties in the data. For these statistics to be meaningful, the person writing the function to be minimized must scale them properly. After a fit using using the :meth:`leastsq` method has completed successfully, standard errors for the fitted variables and correlations between pairs of fitted variables are automatically calculated from the covariance matrix. The standard error (estimated :math:`1\sigma` error-bar) go into the :attr:`stderr` attribute of the Parameter. The correlations with all other variables will be put into the :attr:`correl` attribute of the Parameter -- a dictionary with keys for all other Parameters and values of the corresponding correlation. In some cases, it may not be possible to estimate the errors and correlations. For example, if a variable actually has no practical effect on the fit, it will likely cause the covariance matrix to be singular, making standard errors impossible to estimate. Placing bounds on varied Parameters makes it more likely that errors cannot be estimated, as being near the maximum or minimum value makes the covariance matrix singular. In these cases, the :attr:`errorbars` attribute of the fit result (:class:`Minimizer` object) will be ``False``. Akaike and Bayesian Information Criteria ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The :class:`MinimizerResult` includes the tradtional chi-square and reduced chi-square statistics: .. math:: :nowrap: \begin{eqnarray*} \chi^2 &=& \sum_i^N r_i^2 \\ \chi^2_\nu &=& = \chi^2 / (N-N_{\rm varys}) \end{eqnarray*} where :math:`r` is the residual array returned by the objective function (likely to be ``(data-model)/uncertainty`` for data modeling usages), :math:`N` is the number of data points (``ndata``), and :math:`N_{\rm varys}` is number of variable parameters. Also included are the `Akaike Information Criterion `_, and `Bayesian Information Criterion `_ statistics, held in the ``aic`` and ``bic`` attributes, respectively. These give slightly different measures of the relative quality for a fit, trying to balance quality of fit with the number of variable parameters used in the fit. These are calculated as .. math:: :nowrap: \begin{eqnarray*} {\rm aic} &=& N \ln(\chi^2/N) + 2 N_{\rm varys} \\ {\rm bic} &=& N \ln(\chi^2/N) + \ln(N) *N_{\rm varys} \\ \end{eqnarray*} When comparing fits with different numbers of varying parameters, one typically selects the model with lowest reduced chi-square, Akaike information criterion, and/or Bayesian information criterion. Generally, the Bayesian information criterion is considered the most conservative of these statistics. .. _fit-itercb-label: Using a Iteration Callback Function ==================================== An iteration callback function is a function to be called at each iteration, just after the objective function is called. The iteration callback allows user-supplied code to be run at each iteration, and can be used to abort a fit. .. function:: iter_cb(params, iter, resid, *args, **kws): user-supplied function to be run at each iteration :param params: parameters. :type params: :class:`Parameters`. :param iter: iteration number :type iter: integer :param resid: residual array. :type resid: ndarray :param args: positional arguments. Must match ``args`` argument to :func:`minimize` :param kws: keyword arguments. Must match ``kws`` argument to :func:`minimize` :return: residual array (generally data-model) to be minimized in the least-squares sense. :rtype: ``None`` for normal behavior, any value like ``True`` to abort fit. Normally, the iteration callback would have no return value or return ``None``. To abort a fit, have this function return a value that is ``True`` (including any non-zero integer). The fit will also abort if any exception is raised in the iteration callback. When a fit is aborted this way, the parameters will have the values from the last iteration. The fit statistics are not likely to be meaningful, and uncertainties will not be computed. .. module:: Minimizer .. _fit-minimizer-label: Using the :class:`Minimizer` class ======================================= For full control of the fitting process, you'll want to create a :class:`Minimizer` object. .. class:: Minimizer(function, params, fcn_args=None, fcn_kws=None, iter_cb=None, scale_covar=True, **kws) creates a Minimizer, for more detailed access to fitting methods and attributes. :param function: objective function to return fit residual. See :ref:`fit-func-label` for details. :type function: callable. :param params: a dictionary of Parameters. Keywords must be strings that match ``[a-z_][a-z0-9_]*`` and is not a python reserved word. Each value must be :class:`Parameter`. :type params: dict :param fcn_args: arguments tuple to pass to the residual function as positional arguments. :type fcn_args: tuple :param fcn_kws: dictionary to pass to the residual function as keyword arguments. :type fcn_kws: dict :param iter_cb: function to be called at each fit iteration. See :ref:`fit-itercb-label` for details. :type iter_cb: callable or ``None`` :param scale_covar: flag for automatically scaling covariance matrix and uncertainties to reduced chi-square (``leastsq`` only) :type scale_cover: bool (default ``True``). :param kws: dictionary to pass as keywords to the underlying :mod:`scipy.optimize` method. :type kws: dict The Minimizer object has a few public methods: .. method:: minimize(method='leastsq', params=None, **kws) perform fit using either :meth:`leastsq` or :meth:`scalar_minimize`. :param method: name of fitting method. Must be one of the naemes in :ref:`Table of Supported Fitting Methods ` :type method: str. :param params: a :class:`Parameters` dictionary for starting values :type params: :class:`Parameters` or `None` :return: :class:`MinimizerResult` object, containing updated parameters, fitting statistics, and information. .. versionchanged:: 0.9.0 return value changed to :class:`MinimizerResult` Additonal keywords are passed on to the correspond :meth:`leastsq` or :meth:`scalar_minimize` method. .. method:: leastsq(params=None, scale_covar=True, **kws) perform fit with Levenberg-Marquardt algorithm. Keywords will be passed directly to :func:`scipy.optimize.leastsq`. By default, numerical derivatives are used, and the following arguments are set: +------------------+----------------+------------------------------------------------------------+ | :meth:`leastsq` | Default Value | Description | | arg | | | +==================+================+============================================================+ | xtol | 1.e-7 | Relative error in the approximate solution | +------------------+----------------+------------------------------------------------------------+ | ftol | 1.e-7 | Relative error in the desired sum of squares | +------------------+----------------+------------------------------------------------------------+ | maxfev | 2000*(nvar+1) | maximum number of function calls (nvar= # of variables) | +------------------+----------------+------------------------------------------------------------+ | Dfun | ``None`` | function to call for Jacobian calculation | +------------------+----------------+------------------------------------------------------------+ .. versionchanged:: 0.9.0 return value changed to :class:`MinimizerResult` .. method:: scalar_minimize(method='Nelder-Mead', params=None, hess=None, tol=None, **kws) perform fit with any of the scalar minimization algorithms supported by :func:`scipy.optimize.minimize`. +-------------------------+-----------------+-----------------------------------------------------+ | :meth:`scalar_minimize` | Default Value | Description | | arg | | | +=========================+=================+=====================================================+ | method | ``Nelder-Mead`` | fitting method | +-------------------------+-----------------+-----------------------------------------------------+ | tol | 1.e-7 | fitting and parameter tolerance | +-------------------------+-----------------+-----------------------------------------------------+ | hess | None | Hessian of objective function | +-------------------------+-----------------+-----------------------------------------------------+ .. versionchanged:: 0.9.0 return value changed to :class:`MinimizerResult` .. method:: prepare_fit(**kws) prepares and initializes model and Parameters for subsequent fitting. This routine prepares the conversion of :class:`Parameters` into fit variables, organizes parameter bounds, and parses, "compiles" and checks constrain expressions. The method also creates and returns a new instance of a :class:`MinimizerResult` object that contains the copy of the Parameters that will actually be varied in the fit. This method is called directly by the fitting methods, and it is generally not necessary to call this function explicitly. .. versionchanged:: 0.9.0 return value changed to :class:`MinimizerResult` Getting and Printing Fit Reports =========================================== .. function:: fit_report(result, modelpars=None, show_correl=True, min_correl=0.1) generate and return text of report of best-fit values, uncertainties, and correlations from fit. :param result: :class:`MinimizerResult` object as returned by :func:`minimize`. :param modelpars: Parameters with "Known Values" (optional, default None) :param show_correl: whether to show list of sorted correlations [``True``] :param min_correl: smallest correlation absolute value to show [0.1] If the first argument is a :class:`Parameters` object, goodness-of-fit statistics will not be included. .. function:: report_fit(result, modelpars=None, show_correl=True, min_correl=0.1) print text of report from :func:`fit_report`. An example fit with report would be .. literalinclude:: ../examples/doc_withreport.py which would write out:: [[Fit Statistics]] # function evals = 85 # data points = 1001 # variables = 4 chi-square = 498.812 reduced chi-square = 0.500 [[Variables]] amp: 13.9121944 +/- 0.141202 (1.01%) (init= 13) period: 5.48507044 +/- 0.026664 (0.49%) (init= 2) shift: 0.16203677 +/- 0.014056 (8.67%) (init= 0) decay: 0.03264538 +/- 0.000380 (1.16%) (init= 0.02) [[Correlations]] (unreported correlations are < 0.100) C(period, shift) = 0.797 C(amp, decay) = 0.582 C(amp, shift) = -0.297 C(amp, period) = -0.243 C(shift, decay) = -0.182 C(period, decay) = -0.150 lmfit-0.9.2/doc/confidence.rst0000644000032700003100000001536412613715346017532 0ustar newvillegeocars00000000000000.. _confidence_chapter: Calculation of confidence intervals ==================================== .. module:: confidence The lmfit :mod:`confidence` module allows you to explicitly calculate confidence intervals for variable parameters. For most models, it is not necessary: the estimation of the standard error from the estimated covariance matrix is normally quite good. But for some models, e.g. a sum of two exponentials, the approximation begins to fail. For this case, lmfit has the function :func:`conf_interval` to calculate confidence intervals directly. This is substantially slower than using the errors estimated from the covariance matrix, but the results are more robust. Method used for calculating confidence intervals ------------------------------------------------- The F-test is used to compare our null model, which is the best fit we have found, with an alternate model, where one of the parameters is fixed to a specific value. The value is changed until the difference between :math:`\chi^2_0` and :math:`\chi^2_{f}` can't be explained by the loss of a degree of freedom within a certain confidence. .. math:: F(P_{fix},N-P) = \left(\frac{\chi^2_f}{\chi^2_{0}}-1\right)\frac{N-P}{P_{fix}} N is the number of data-points, P the number of parameter of the null model. :math:`P_{fix}` is the number of fixed parameters (or to be more clear, the difference of number of parameters between our null model and the alternate model). Adding a log-likelihood method is under consideration. A basic example --------------- First we create an example problem:: >>> import lmfit >>> import numpy as np >>> x = np.linspace(0.3,10,100) >>> y = 1/(0.1*x)+2+0.1*np.random.randn(x.size) >>> pars = lmfit.Parameters() >>> pars.add_many(('a', 0.1), ('b', 1)) >>> def residual(p): ... a = p['a'].value ... b = p['b'].value ... return 1/(a*x)+b-y before we can generate the confidence intervals, we have to run a fit, so that the automated estimate of the standard errors can be used as a starting point:: >>> mini = lmfit.Minimizer(residual, pars) >>> result = mini.minimize() >>> print(lmfit.fit_report(result.params)) [Variables]] a: 0.09943895 +/- 0.000193 (0.19%) (init= 0.1) b: 1.98476945 +/- 0.012226 (0.62%) (init= 1) [[Correlations]] (unreported correlations are < 0.100) C(a, b) = 0.601 Now it is just a simple function call to calculate the confidence intervals:: >>> ci = lmfit.conf_interval(mini, result) >>> lmfit.printfuncs.report_ci(ci) 99.70% 95.00% 67.40% 0.00% 67.40% 95.00% 99.70% a 0.09886 0.09905 0.09925 0.09944 0.09963 0.09982 0.10003 b 1.94751 1.96049 1.97274 1.97741 1.99680 2.00905 2.02203 This shows the best-fit values for the parameters in the `0.00%` column, and parameter values that are at the varying confidence levels given by steps in :math:`\sigma`. As we can see, the estimated error is almost the same, and the uncertainties are well behaved: Going from 1 :math:`\sigma` (68% confidence) to 3 :math:`\sigma` (99.7% confidence) uncertainties is fairly linear. It can also be seen that the errors are fairy symmetric around the best fit value. For this problem, it is not necessary to calculate confidence intervals, and the estimates of the uncertainties from the covariance matrix are sufficient. An advanced example ------------------- Now we look at a problem where calculating the error from approximated covariance can lead to misleading result -- two decaying exponentials. In fact such a problem is particularly hard for the Levenberg-Marquardt method, so we fitst estimate the results using the slower but robust Nelder-Mead method, and *then* use Levenberg-Marquardt to estimate the uncertainties and correlations .. literalinclude:: ../examples/doc_confidence2.py which will report:: [[Variables]] a1: 2.98622120 +/- 0.148671 (4.98%) (init= 2.986237) a2: -4.33526327 +/- 0.115275 (2.66%) (init=-4.335256) t1: 1.30994233 +/- 0.131211 (10.02%) (init= 1.309932) t2: 11.8240350 +/- 0.463164 (3.92%) (init= 11.82408) [[Correlations]] (unreported correlations are < 0.500) C(a2, t2) = 0.987 C(a2, t1) = -0.925 C(t1, t2) = -0.881 C(a1, t1) = -0.599 95.00% 68.00% 0.00% 68.00% 95.00% a1 2.71850 2.84525 2.98622 3.14874 3.34076 a2 -4.63180 -4.46663 -4.33526 -4.22883 -4.14178 t2 10.82699 11.33865 11.82404 12.28195 12.71094 t1 1.08014 1.18566 1.30994 1.45566 1.62579 Again we called :func:`conf_interval`, this time with tracing and only for 1- and 2 :math:`\sigma`. Comparing these two different estimates, we see that the estimate for `a1` is reasonably well approximated from the covariance matrix, but the estimates for `a2` and especially for `t1`, and `t2` are very asymmetric and that going from 1 :math:`\sigma` (68% confidence) to 2 :math:`\sigma` (95% confidence) is not very predictable. Let plots mad of the confidence region are shown the figure on the left below for ``a1`` and ``t2``, and for ``a2`` and ``t2`` on the right: .. _figC1: .. image:: _images/conf_interval1.png :target: _images/conf_interval1.png :width: 48% .. image:: _images/conf_interval1a.png :target: _images/conf_interval1a.png :width: 48% Neither of these plots is very much like an ellipse, which is implicitly assumed by the approach using the covariance matrix. The trace returned as the optional second argument from :func:`conf_interval` contains a dictionary for each variable parameter. The values are dictionaries with arrays of values for each variable, and an array of corresponding probabilities for the corresponding cumulative variables. This can be used to show the dependence between two parameters:: >>> x, y, prob = trace['a1']['a1'], trace['a1']['t2'],trace['a1']['prob'] >>> x2, y2, prob2 = trace['t2']['t2'], trace['t2']['a1'],trace['t2']['prob'] >>> plt.scatter(x, y, c=prob ,s=30) >>> plt.scatter(x2, y2, c=prob2, s=30) >>> plt.gca().set_xlim((1, 5)) >>> plt.gca().set_ylim((5, 15)) >>> plt.xlabel('a1') >>> plt.ylabel('t2') >>> plt.show() which shows the trace of values: .. image:: _images/conf_interval2.png :target: _images/conf_interval2.png :width: 50% Confidence Interval Functions ---------------------------------- .. autofunction:: lmfit.conf_interval .. autofunction:: lmfit.conf_interval2d .. autofunction:: lmfit.ci_report lmfit-0.9.2/doc/sphinx/0000755000032700003100000000000012613717514016202 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/sphinx/theme/0000755000032700003100000000000012613717514017304 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/0000755000032700003100000000000012613717514021105 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/static/0000755000032700003100000000000012613717514022374 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/static/lmfitdoc.css_t0000644000032700003100000001521712603520205025224 0ustar newvillegeocars00000000000000/* * lmfitdoc.css_t * minor riff on sphinxdoc.css_t * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * * Sphinx stylesheet -- sphinxdoc theme. Originally created by * Armin Ronacher for Werkzeug. * * :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @import url("basic.css"); /* -- page layout ----------------------------------------------------------- */ body { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; font-size: 14px; letter-spacing: -0.01em; line-height: 150%; text-align: center; background-color: #D6DAC4; color: black; padding: 0; border: 0px solid #D0D0C0; margin: 15px 15px 15px 15px; min-width: 740px; } div.document { background-color: white; text-align: left; background-image: url(contents.png); background-repeat: repeat-x; } div.bodywrapper { margin: 0 {{ theme_sidebarwidth|toint + 10 }}px 0 0; border-right: 1px solid #ccc; } div.body { margin: 0; padding: 0.5em 20px 20px 20px; } div.related { font-size: 1em; background-color: #0D0; } div.related ul { height: 2em; border-top: 1px solid #ddd; border-bottom: 1px solid #ddd; background-color: #F0EFE4; color: #157; } div.related ul li { margin: 0; padding: 0; height: 2em; float: left; background-color: #D0000; } div.related ul li.right { float: right; margin-right: 5px; } div.related ul li a { margin: 0; padding: 0 5px 0 5px; line-height: 1.75em; color: #EE9816; color: #157; } div.related ul li a:hover { color: #822; } div.sphinxsidebarwrapper { padding: 0; } div.sphinxsidebar { margin: 0; padding: 0.5em 15px 15px 0; width: {{ theme_sidebarwidth|toint - 20 }}px; float: right; font-size: 1em; text-align: left; } div.sphinxsidebar h3, div.sphinxsidebar h4 { margin: 1em 0 0.5em 0; font-size: 1em; padding: 0.1em 0 0.1em 0.5em; color: #157; border: 1px solid #A0A090; background-color: #D0D0C4; } div.sphinxsidebar h3 a { color: #157; background-color: #D0D0C4; } div.sphinxsidebar ul { padding-left: 1.5em; margin-top: 7px; padding: 0; line-height: 130%; } div.sphinxsidebar ul ul { margin-left: 20px; } div.footer { background-color: #E0E8D4; color: #86989B; padding: 3px 8px 3px 0; clear: both; font-size: 0.8em; text-align: right; } div.footer a { color: #86989B; text-decoration: underline; } /* -- body styles ----------------------------------------------------------- */ p { margin: 0.8em 0 0.5em 0; } a { color: #CA7900; text-decoration: none; } a:hover { color: #2491CF; } div.body a { text-decoration: underline; } h1 { padding: 0.2em 0 0.2em 0; margin: 0.7em 0 0.3em 0; font-size: 1.5em; color: #157; background-color: #F0EFE4; } h2 { padding: 0.2em 0 0.2em 0; margin: 1.3em 0 0.2em 0; font-size: 1.35em; padding: 0; background-color: #FAFAF0; } h3 { padding: 0.2em 0 0.2em 0; margin: 1em 0 -0.3em 0; font-size: 1.2em; background-color: #FBFBF3; } div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a { color: black!important; } h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor { display: none; margin: 0 0 0 0.3em; padding: 0 0.2em 0 0.2em; color: #aaa!important; } h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor { display: inline; } h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover, h5 a.anchor:hover, h6 a.anchor:hover { color: #777; background-color: #eee; } a.headerlink { color: #c60f0f!important; font-size: 1em; margin-left: 6px; padding: 0 4px 0 4px; text-decoration: none!important; } a.headerlink:hover { background-color: #ccc; color: white!important; } cite, code, tt { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.01em; } tt { background-color: #f2f2f2; border-bottom: 1px solid #ddd; color: #333; } tt.descname, tt.descclassname, tt.xref { border: 0; } hr { border: 1px solid #abc; margin: 2em; } a tt { border: 0; color: #CA7900; } a tt:hover { color: #2491CF; } pre { font-family: 'Consolas', 'Deja Vu Sans Mono', 'Bitstream Vera Sans Mono', monospace; font-size: 0.95em; letter-spacing: 0.015em; line-height: 120%; padding: 0.5em; border: 1px solid #ccc; background-color: #f8f8f8; } pre a { color: inherit; text-decoration: underline; } td.linenos pre { padding: 0.5em 0; } div.quotebar { background-color: #f8f8f8; max-width: 250px; float: right; padding: 2px 7px; border: 1px solid #ccc; } div.topic { background-color: #f8f8f8; } table { border-collapse: collapse; margin: 0 -0.5em 0 -0.5em; } table td, table th { padding: 0.2em 0.5em 0.2em 0.5em; } div.admonition, div.warning { font-size: 0.9em; margin: 1em 0 1em 0; border: 1px solid #86989B; background-color: #f7f7f7; padding: 0; } div.admonition p, div.warning p { margin: 0.5em 1em 0.5em 1em; padding: 0; } div.admonition pre, div.warning pre { margin: 0.4em 1em 0.4em 1em; } div.admonition p.admonition-title, div.warning p.admonition-title { margin: 0; padding: 0.1em 0 0.1em 0.5em; color: white; border-bottom: 1px solid #86989B; font-weight: bold; background-color: #AFC1C4; } div.warning { border: 1px solid #940000; } div.warning p.admonition-title { background-color: #CF0000; border-bottom-color: #940000; } div.admonition ul, div.admonition ol, div.warning ul, div.warning ol { margin: 0.1em 0.5em 0.5em 3em; padding: 0; } div.versioninfo { margin: 1em 0 0 0; border: 1px solid #ccc; background-color: #DDEAF0; padding: 8px; line-height: 1.3em; font-size: 0.9em; } .viewcode-back { font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva', 'Verdana', sans-serif; } div.viewcode-block:target { background-color: #f4debf; border-top: 1px solid #ac9; border-bottom: 1px solid #ac9; } lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/static/contents.png0000644000032700003100000000031212603520205024717 0ustar newvillegeocars00000000000000‰PNG  IHDR(?¶wsRGB®Îé pHYs  šœtIMEØ 7C{´ÌtEXtCommentCreated with GIMPW7IDAT×¥9 ÂZþÿ^']ÔxŒ.$@”Z[‚!£8EÈž-«oöÃoì\éà¦K©IEND®B`‚lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/static/navigation.png0000644000032700003100000000033212603520205025223 0ustar newvillegeocars00000000000000‰PNG  IHDR<§ñÐúsRGB®Îé pHYs  šœtIMEØ y݉štEXtCommentCreated with GIMPWGIDATÓ½ÁÀ0 ÂûOëB©t~8qgª*°m,© 0Ö{,šB†ÀÌt—Ø6oœ.™qú\Y›~t7Ö"Lð“ßIEND®B`‚lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/theme.conf0000644000032700003100000000012012603520205023033 0ustar newvillegeocars00000000000000[theme] inherit = basic stylesheet = lmfitdoc.css pygments_style = friendly lmfit-0.9.2/doc/sphinx/theme/lmfitdoc/layout.html0000644000032700003100000000431112603520205023273 0ustar newvillegeocars00000000000000{# sphinxdoc/layout.html ~~~~~~~~~~~~~~~~~~~~~ Sphinx layout template for the sphinxdoc theme. :copyright: Copyright 2007-2014 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. #} {%- extends "basic/layout.html" %} {%- block extrahead %} {% endblock %} {% block rootrellink %}

  • [intro|
  • parameters|
  • minimize|
  • model|
  • builtin models|
  • confidence intervals|
  • bounds|
  • constraints]
  • {% endblock %} {% block relbar1 %}
    LMFIT Contents Download
    Non-Linear Least-Squares Minimization and Curve-Fitting for Python FAQ Develop
    {{ super() }} {% endblock %} {# put the sidebar before the body #} {% block sidebar1 %}{{ sidebar() }}{% endblock %} {% block sidebar2 %}{% endblock %} lmfit-0.9.2/doc/sphinx/ext_mathjax.py0000644000032700003100000000046012603520205021054 0ustar newvillegeocars00000000000000# sphinx extensions for mathjax extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.intersphinx', 'numpydoc'] mathjax = 'sphinx.ext.mathjax' pngmath = 'sphinx.ext.pngmath' extensions.append(mathjax) lmfit-0.9.2/doc/sphinx/ext_pngmath.py0000644000032700003100000000046012603520205021056 0ustar newvillegeocars00000000000000# sphinx extensions for pngmath extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.intersphinx', 'numpydoc'] mathjax = 'sphinx.ext.mathjax' pngmath = 'sphinx.ext.pngmath' extensions.append(pngmath) lmfit-0.9.2/doc/_static/0000755000032700003100000000000012613717514016317 5ustar newvillegeocars00000000000000lmfit-0.9.2/doc/_static/empty0000644000032700003100000000000012603520205017352 0ustar newvillegeocars00000000000000lmfit-0.9.2/doc/extensions.py0000644000032700003100000000046012613716032017434 0ustar newvillegeocars00000000000000# sphinx extensions for mathjax extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.intersphinx', 'numpydoc'] mathjax = 'sphinx.ext.mathjax' pngmath = 'sphinx.ext.pngmath' extensions.append(mathjax) lmfit-0.9.2/doc/model.rst0000644000032700003100000013216712613715346016536 0ustar newvillegeocars00000000000000.. _model_chapter: ================================================= Modeling Data and Curve Fitting ================================================= .. module:: model A common use of least-squares minimization is *curve fitting*, where one has a parametrized model function meant to explain some phenomena and wants to adjust the numerical values for the model to most closely match some data. With :mod:`scipy`, such problems are commonly solved with :func:`scipy.optimize.curve_fit`, which is a wrapper around :func:`scipy.optimize.leastsq`. Since Lmfit's :func:`minimize` is also a high-level wrapper around :func:`scipy.optimize.leastsq` it can be used for curve-fitting problems, but requires more effort than using :func:`scipy.optimize.curve_fit`. Here we discuss lmfit's :class:`Model` class. This takes a model function -- a function that calculates a model for some data -- and provides methods to create parameters for that model and to fit data using that model function. This is closer in spirit to :func:`scipy.optimize.curve_fit`, but with the advantages of using :class:`Parameters` and lmfit. In addition to allowing you turn any model function into a curve-fitting method, Lmfit also provides canonical definitions for many known line shapes such as Gaussian or Lorentzian peaks and Exponential decays that are widely used in many scientific domains. These are available in the :mod:`models` module that will be discussed in more detail in the next chapter (:ref:`builtin_models_chapter`). We mention it here as you may want to consult that list before writing your own model. For now, we focus on turning python function into high-level fitting models with the :class:`Model` class, and using these to fit data. Example: Fit data to Gaussian profile ================================================ Let's start with a simple and common example of fitting data to a Gaussian peak. As we will see, there is a buit-in :class:`GaussianModel` class that provides a model function for a Gaussian profile, but here we'll build our own. We start with a simple definition of the model function: >>> from numpy import sqrt, pi, exp, linspace >>> >>> def gaussian(x, amp, cen, wid): ... return amp * exp(-(x-cen)**2 /wid) ... We want to fit this objective function to data :math:`y(x)` represented by the arrays ``y`` and ``x``. This can be done easily wit :func:`scipy.optimize.curve_fit`:: >>> from scipy.optimize import curve_fit >>> >>> x = linspace(-10,10) >>> y = y = gaussian(x, 2.33, 0.21, 1.51) + np.random.normal(0, 0.2, len(x)) >>> >>> init_vals = [1, 0, 1] # for [amp, cen, wid] >>> best_vals, covar = curve_fit(gaussian, x, y, p0=init_vals) >>> print best_vals We sample random data point, make an initial guess of the model values, and run :func:`scipy.optimize.curve_fit` with the model function, data arrays, and initial guesses. The results returned are the optimal values for the parameters and the covariance matrix. It's simple and very useful. But it misses the benefits of lmfit. To solve this with lmfit we would have to write an objective function. But such a function would be fairly simple (essentially, ``data - model``, possibly with some weighting), and we would need to define and use appropriately named parameters. Though convenient, it is somewhat of a burden to keep the named parameter straight (on the other hand, with :func:`scipy.optimize.curve_fit` you are required to remember the parameter order). After doing this a few times it appears as a recurring pattern, and we can imagine automating this process. That's where the :class:`Model` class comes in. :class:`Model` allows us to easily wrap a model function such as the ``gaussian`` function. This automatically generate the appropriate residual function, and determines the corresponding parameter names from the function signature itself:: >>> from lmfit import Model >>> gmod = Model(gaussian) >>> gmod.param_names set(['amp', 'wid', 'cen']) >>> gmod.independent_vars) ['x'] The Model ``gmod`` knows the names of the parameters and the independent variables. By default, the first argument of the function is taken as the independent variable, held in :attr:`independent_vars`, and the rest of the functions positional arguments (and, in certain cases, keyword arguments -- see below) are used for Parameter names. Thus, for the ``gaussian`` function above, the parameters are named ``amp``, ``cen``, and ``wid``, and ``x`` is the independent variable -- all taken directly from the signature of the model function. As we will see below, you can specify what the independent variable is, and you can add or alter parameters, too. The parameters are *not* created when the model is created. The model knows what the parameters should be named, but not anything about the scale and range of your data. You will normally have to make these parameters and assign initial values and other attributes. To help you do this, each model has a :meth:`make_params` method that will generate parameters with the expected names: >>> params = gmod.make_params() This creates the :class:`Parameters` but doesn't necessarily give them initial values -- again, the model has no idea what the scale should be. You can set initial values for parameters with keyword arguments to :meth:`make_params`: >>> params = gmod.make_params(cen=5, amp=200, wid=1) or assign them (and other parameter properties) after the :class:`Parameters` has been created. A :class:`Model` has several methods associated with it. For example, one can use the :meth:`eval` method to evaluate the model or the :meth:`fit` method to fit data to this model with a :class:`Parameter` object. Both of these methods can take explicit keyword arguments for the parameter values. For example, one could use :meth:`eval` to calculate the predicted function:: >>> x = linspace(0, 10, 201) >>> y = gmod.eval(x=x, amp=10, cen=6.2, wid=0.75) Admittedly, this a slightly long-winded way to calculate a Gaussian function. But now that the model is set up, we can also use its :meth:`fit` method to fit this model to data, as with:: >>> result = gmod.fit(y, x=x, amp=5, cen=5, wid=1) Putting everything together, the script to do such a fit (included in the ``examples`` folder with the source code) is: .. literalinclude:: ../examples/doc_model1.py which is pretty compact and to the point. The returned ``result`` will be a :class:`ModelResult` object. As we will see below, this has many components, including a :meth:`fit_report` method, which will show:: [[Model]] gaussian [[Fit Statistics]] # function evals = 33 # data points = 101 # variables = 3 chi-square = 3.409 reduced chi-square = 0.035 [[Variables]] amp: 8.88021829 +/- 0.113594 (1.28%) (init= 5) cen: 5.65866102 +/- 0.010304 (0.18%) (init= 5) wid: 0.69765468 +/- 0.010304 (1.48%) (init= 1) [[Correlations]] (unreported correlations are < 0.100) C(amp, wid) = 0.577 The result will also have :attr:`init_fit` for the fit with the initial parameter values and a :attr:`best_fit` for the fit with the best fit parameter values. These can be used to generate the following plot: .. image:: _images/model_fit1.png :target: _images/model_fit1.png :width: 50% which shows the data in blue dots, the best fit as a solid red line, and the initial fit as a dashed black line. Note that the model fitting was really performed with 2 lines of code:: gmod = Model(gaussian) result = gmod.fit(y, x=x, amp=5, cen=5, wid=1) These lines clearly express that we want to turn the ``gaussian`` function into a fitting model, and then fit the :math:`y(x)` data to this model, starting with values of 5 for ``amp``, 5 for ``cen`` and 1 for ``wid``. This is much more expressive than :func:`scipy.optimize.curve_fit`:: best_vals, covar = curve_fit(gaussian, x, y, p0=[5, 5, 1]) In addition, all the other features of lmfit are included: :class:`Parameters` can have bounds and constraints and the result is a rich object that can be reused to explore the model fit in detail. The :class:`Model` class ======================================= The :class:`Model` class provides a general way to wrap a pre-defined function as a fitting model. .. class:: Model(func[, independent_vars=None[, param_names=None[, missing=None[, prefix=''[, name=None[, **kws]]]]]]) Create a model based on the user-supplied function. This uses introspection to automatically converting argument names of the function to Parameter names. :param func: model function to be wrapped :type func: callable :param independent_vars: list of argument names to ``func`` that are independent variables. :type independent_vars: ``None`` (default) or list of strings. :param param_names: list of argument names to ``func`` that should be made into Parameters. :type param_names: ``None`` (default) or list of strings :param missing: how to handle missing values. :type missing: one of ``None`` (default), 'none', 'drop', or 'raise'. :param prefix: prefix to add to all parameter names to distinguish components in a :class:`CompositeModel`. :type prefix: string :param name: name for the model. When ``None`` (default) the name is the same as the model function (``func``). :type name: ``None`` or string. :param kws: additional keyword arguments to pass to model function. Of course, the model function will have to return an array that will be the same size as the data being modeled. Generally this is handled by also specifying one or more independent variables. :class:`Model` class Methods --------------------------------- .. method:: Model.eval(params=None[, **kws]) evaluate the model function for a set of parameters and inputs. :param params: parameters to use for fit. :type params: ``None`` (default) or Parameters :param kws: additional keyword arguments to pass to model function. :return: ndarray for model given the parameters and other arguments. If ``params`` is ``None``, the values for all parameters are expected to be provided as keyword arguments. If ``params`` is given, and a keyword argument for a parameter value is also given, the keyword argument will be used. Note that all non-parameter arguments for the model function -- **including all the independent variables!** -- will need to be passed in using keyword arguments. .. method:: Model.fit(data[, params=None[, weights=None[, method='leastsq'[, scale_covar=True[, iter_cb=None[, **kws]]]]]]) perform a fit of the model to the ``data`` array with a set of parameters. :param data: array of data to be fitted. :type data: ndarray-like :param params: parameters to use for fit. :type params: ``None`` (default) or Parameters :param weights: weights to use for residual calculation in fit. :type weights: ``None`` (default) or ndarray-like. :param method: name of fitting method to use. See :ref:`fit-methods-label` for details :type method: string (default ``leastsq``) :param scale_covar: whether to automatically scale covariance matrix (``leastsq`` only) :type scale_covar: bool (default ``True``) :param iter_cb: function to be called at each fit iteration. See :ref:`fit-itercb-label` for details. :type iter_cb: callable or ``None`` :param verbose: print a message when a new parameter is created due to a *hint* :type verbose: bool (default ``True``) :param kws: additional keyword arguments to pass to model function. :return: :class:`ModelResult` object. If ``params`` is ``None``, the internal ``params`` will be used. If it is supplied, these will replace the internal ones. If supplied, ``weights`` will be used to weight the calculated residual so that the quantitiy minimized in the least-squares sense is ``weights*(data - fit)``. ``weights`` must be an ndarray-like object of same size and shape as ``data``. Note that other arguments for the model function (including all the independent variables!) will need to be passed in using keyword arguments. .. method:: Model.guess(data, **kws) Guess starting values for model parameters. :param data: data array used to guess parameter values :type func: ndarray :param kws: additional options to pass to model function. :return: :class:`Parameters` with guessed initial values for each parameter. by default this is left to raise a ``NotImplementedError``, but may be overwritten by subclasses. Generally, this method should take some values for ``data`` and use it to construct reasonable starting values for the parameters. .. method:: Model.make_params(**kws) Create a set of parameters for model. :param kws: optional keyword/value pairs to set initial values for parameters. :return: :class:`Parameters`. The parameters may or may not have decent initial values for each parameter. .. method:: Model.set_param_hint(name, value=None[, min=None[, max=None[, vary=True[, expr=None]]]]) set *hints* to use when creating parameters with :meth:`Model.make_param` for the named parameter. This is especially convenient for setting initial values. The ``name`` can include the models ``prefix`` or not. :param name: parameter name. :type name: string :param value: value for parameter :type value: float :param min: lower bound for parameter value :type min: ``None`` or float :param max: upper bound for parameter value :type max: ``None`` or float :param vary: whether to vary parameter in fit. :type vary: boolean :param expr: mathematical expression for constraint :type expr: string See :ref:`model_param_hints_section`. :class:`Model` class Attributes --------------------------------- .. attribute:: func The model function used to calculate the model. .. attribute:: independent_vars list of strings for names of the independent variables. .. attribute:: missing describes what to do for missing values. The choices are * ``None``: Do not check for null or missing values (default) * ``'none'``: Do not check for null or missing values. * ``'drop'``: Drop null or missing observations in data. If pandas is installed, ``pandas.isnull`` is used, otherwise :attr:`numpy.isnan` is used. * ``'raise'``: Raise a (more helpful) exception when data contains null or missing values. .. attribute:: name name of the model, used only in the string representation of the model. By default this will be taken from the model function. .. attribute:: opts extra keyword arguments to pass to model function. Normally this will be determined internally and should not be changed. .. attribute:: param_hints Dictionary of parameter hints. See :ref:`model_param_hints_section`. .. attribute:: param_names list of strings of parameter names. .. attribute:: prefix prefix used for name-mangling of parameter names. The default is ''. If a particular :class:`Model` has arguments ``amplitude``, ``center``, and ``sigma``, these would become the parameter names. Using a prefix of ``g1_`` would convert these parameter names to ``g1_amplitude``, ``g1_center``, and ``g1_sigma``. This can be essential to avoid name collision in composite models. Determining parameter names and independent variables for a function ----------------------------------------------------------------------- The :class:`Model` created from the supplied function ``func`` will create a :class:`Parameters` object, and names are inferred from the function arguments, and a residual function is automatically constructed. By default, the independent variable is take as the first argument to the function. You can explicitly set this, of course, and will need to if the independent variable is not first in the list, or if there are actually more than one independent variables. If not specified, Parameters are constructed from all positional arguments and all keyword arguments that have a default value that is numerical, except the independent variable, of course. Importantly, the Parameters can be modified after creation. In fact, you'll have to do this because none of the parameters have valid initial values. You can place bounds and constraints on Parameters, or fix their values. Explicitly specifying ``independent_vars`` ------------------------------------------------- As we saw for the Gaussian example above, creating a :class:`Model` from a function is fairly easy. Let's try another:: >>> def decay(t, tau, N): ... return N*np.exp(-t/tau) ... >>> decay_model = Model(decay) >>> print decay_model.independent_vars ['t'] >>> for pname, par in decay_model.params.items(): ... print pname, par ... tau N Here, ``t`` is assumed to be the independent variable because it is the first argument to the function. The other function arguments are used to create parameters for the model. If you want ``tau`` to be the independent variable in the above example, you can say so:: >>> decay_model = Model(decay, independent_vars=['tau']) >>> print decay_model.independent_vars ['tau'] >>> for pname, par in decay_model.params.items(): ... print pname, par ... t N You can also supply multiple values for multi-dimensional functions with multiple independent variables. In fact, the meaning of *independent variable* here is simple, and based on how it treats arguments of the function you are modeling: independent variable a function argument that is not a parameter or otherwise part of the model, and that will be required to be explicitly provided as a keyword argument for each fit with :meth:`Model.fit` or evaluation with :meth:`Model.eval`. Note that independent variables are not required to be arrays, or even floating point numbers. Functions with keyword arguments ----------------------------------------- If the model function had keyword parameters, these would be turned into Parameters if the supplied default value was a valid number (but not ``None``, ``True``, or ``False``). >>> def decay2(t, tau, N=10, check_positive=False): ... if check_small: ... arg = abs(t)/max(1.e-9, abs(tau)) ... else: ... arg = t/tau ... return N*np.exp(arg) ... >>> mod = Model(decay2) >>> for pname, par in mod.params.items(): ... print pname, par ... t N Here, even though ``N`` is a keyword argument to the function, it is turned into a parameter, with the default numerical value as its initial value. By default, it is permitted to be varied in the fit -- the 10 is taken as an initial value, not a fixed value. On the other hand, the ``check_positive`` keyword argument, was not converted to a parameter because it has a boolean default value. In some sense, ``check_positive`` becomes like an independent variable to the model. However, because it has a default value it is not required to be given for each model evaluation or fit, as independent variables are. Defining a ``prefix`` for the Parameters -------------------------------------------- As we will see in the next chapter when combining models, it is sometimes necessary to decorate the parameter names in the model, but still have them be correctly used in the underlying model function. This would be necessary, for example, if two parameters in a composite model (see :ref:`composite_models_section` or examples in the next chapter) would have the same name. To avoid this, we can add a ``prefix`` to the :class:`Model` which will automatically do this mapping for us. >>> def myfunc(x, amplitude=1, center=0, sigma=1): ... >>> mod = Model(myfunc, prefix='f1_') >>> for pname, par in mod.params.items(): ... print pname, par ... f1_amplitude f1_center f1_sigma You would refer to these parameters as ``f1_amplitude`` and so forth, and the model will know to map these to the ``amplitude`` argument of ``myfunc``. Initializing model parameters ----------------------------------------- As mentioned above, the parameters created by :meth:`Model.make_params` are generally created with invalid initial values of ``None``. These values **must** be initialized in order for the model to be evaluated or used in a fit. There are four different ways to do this initialization that can be used in any combination: 1. You can supply initial values in the definition of the model function. 2. You can initialize the parameters when creating parameters with :meth:`Model.make_params`. 3. You can give parameter hints with :meth:`Model.set_param_hint`. 4. You can supply initial values for the parameters when you use the :meth:`Model.eval` or :meth:`Model.fit` methods. Of course these methods can be mixed, allowing you to overwrite initial values at any point in the process of defining and using the model. Initializing values in the function definition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To supply initial values for parameters in the definition of the model function, you can simply supply a default value:: >>> def myfunc(x, a=1, b=0): >>> ... instead of using:: >>> def myfunc(x, a, b): >>> ... This has the advantage of working at the function level -- all parameters with keywords can be treated as options. It also means that some default initial value will always be available for the parameter. Initializing values with :meth:`Model.make_params` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When creating parameters with :meth:`Model.make_params` you can specify initial values. To do this, use keyword arguments for the parameter names and initial values:: >>> mod = Model(myfunc) >>> pars = mod.make_params(a=3, b=0.5) Initializing values by setting parameter hints ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ After a model has been created, but prior to creating parameters with :meth:`Model.make_params`, you can set parameter hints. These allows you to set not only a default initial value but also to set other parameter attributes controlling bounds, whether it is varied in the fit, or a constraint expression. To set a parameter hint, you can use :meth:`Model.set_param_hint`, as with:: >>> mod = Model(myfunc) >>> mod.set_param_hint('a', value = 1.0) >>> mod.set_param_hint('b', value = 0.3, min=0, max=1.0) >>> pars = mod.make_params() Parameter hints are discussed in more detail in section :ref:`model_param_hints_section`. Initializing values when using a model ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Finally, you can explicitly supply initial values when using a model. That is, as with :meth:`Model.make_params`, you can include values as keyword arguments to either the :meth:`Model.eval` or :meth:`Model.fit` methods:: >>> y1 = mod.eval(x=x, a=7.0, b=-2.0) >>> out = mod.fit(x=x, pars, a=3.0, b=-0.0) These approaches to initialization provide many opportunities for setting initial values for parameters. The methods can be combined, so that you can set parameter hints but then change the initial value explicitly with :meth:`Model.fit`. .. _model_param_hints_section: Using parameter hints -------------------------------- After a model has been created, you can give it hints for how to create parameters with :meth:`Model.make_params`. This allows you to set not only a default initial value but also to set other parameter attributes controlling bounds, whether it is varied in the fit, or a constraint expression. To set a parameter hint, you can use :meth:`Model.set_param_hint`, as with:: >>> mod = Model(myfunc) >>> mod.set_param_hint('a', value = 1.0) >>> mod.set_param_hint('b', value = 0.3, min=0, max=1.0) Parameter hints are stored in a model's :attr:`param_hints` attribute, which is simply a nested dictionary:: >>> print mod.param_hints {'a': {'value': 1}, 'b': {'max': 1.0, 'value': 0.3, 'min': 0}} You can change this dictionary directly, or with the :meth:`Model.set_param_hint` method. Either way, these parameter hints are used by :meth:`Model.make_params` when making parameters. An important feature of parameter hints is that you can force the creation of new parameters with parameter hints. This can be useful to make derived parameters with constraint expressions. For example to get the full-width at half maximum of a Gaussian model, one could use a parameter hint of:: >>> mod = Model(gaussian) >>> mod.set_param_hint('fwhm', expr='2.3548*sigma') The :class:`ModelResult` class ======================================= A :class:`ModelResult` (which had been called `ModelFit` prior to version 0.9) is the object returned by :meth:`Model.fit`. It is a subclass of :class:`Minimizer`, and so contains many of the fit results. Of course, it knows the :class:`Model` and the set of :class:`Parameters` used in the fit, and it has methods to evaluate the model, to fit the data (or re-fit the data with changes to the parameters, or fit with different or modified data) and to print out a report for that fit. While a :class:`Model` encapsulates your model function, it is fairly abstract and does not contain the parameters or data used in a particular fit. A :class:`ModelResult` *does* contain parameters and data as well as methods to alter and re-do fits. Thus the :class:`Model` is the idealized model while the :class:`ModelResult` is the messier, more complex (but perhaps more useful) object that represents a fit with a set of parameters to data with a model. A :class:`ModelResult` has several attributes holding values for fit results, and several methods for working with fits. These include statistics inherited from :class:`Minimizer` useful for comparing different models, includind `chisqr`, `redchi`, `aic`, and `bic`. .. class:: ModelResult() Model fit is intended to be created and returned by :meth:`Model.fit`. :class:`ModelResult` methods --------------------------------- These methods are all inherited from :class:`Minimize` or from :class:`Model`. .. method:: ModelResult.eval(**kwargs) evaluate the model using the best-fit parameters and supplied independent variables. The ``**kwargs`` arguments can be used to update parameter values and/or independent variables. .. method:: ModelResult.eval_components(**kwargs) evaluate each component of a :class:`CompositeModel`, returning an ordered dictionary of with the values for each component model. The returned dictionary will have keys of the model prefix or (if no prefix is given), the model name. The ``**kwargs`` arguments can be used to update parameter values and/or independent variables. .. method:: ModelResult.fit(data=None[, params=None[, weights=None[, method=None[, **kwargs]]]]) fit (or re-fit), optionally changing ``data``, ``params``, ``weights``, or ``method``, or changing the independent variable(s) with the ``**kwargs`` argument. See :meth:`Model.fit` for argument descriptions, and note that any value of ``None`` defaults to the last used value. .. method:: ModelResult.fit_report(modelpars=None[, show_correl=True[,`< min_correl=0.1]]) return a printable fit report for the fit with fit statistics, best-fit values with uncertainties and correlations. As with :func:`fit_report`. :param modelpars: Parameters with "Known Values" (optional, default None) :param show_correl: whether to show list of sorted correlations [``True``] :param min_correl: smallest correlation absolute value to show [0.1] .. method:: ModelResult.conf_interval(**kwargs) calculate the confidence intervals for the variable parameters using :func:`confidence.conf_interval() `. All keyword arguments are passed to that function. The result is stored in :attr:`ci_out`, and so can be accessed without recalculating them. .. method:: ModelResult.ci_report(with_offset=True) return a nicely formatted text report of the confidence intervals, as from :func:`ci_report() `. .. method:: ModelResult.plot(datafmt='o', fitfmt='-', initfmt='--', yerr=None, numpoints=None, fig=None, data_kws=None, fit_kws=None, init_kws=None, ax_res_kws=None, ax_fit_kws=None, fig_kws=None) Plot the fit results and residuals using matplotlib, if available. The plot will include two panels, one showing the fit residual, and the other with the data points, the initial fit curve, and the best-fit curve. If the fit model included weights or if ``yerr`` is specified, errorbars will also be plotted. :param datafmt: matplotlib format string for data curve. :type datafmt: ``None`` or string. :param fitfmt: matplotlib format string for best-fit curve. :type fitfmt: ``None`` or string. :param initfmt: matplotlib format string for initial curve. :type intfmt: ``None`` or string. :param yerr: array of uncertainties for data array. :type yerr: ``None`` or ndarray. :param numpoints: number of points to display :type numpoints: ``None`` or integer :param fig: matplotlib Figure to plot on. :type fig: ``None`` or matplotlib.figure.Figure :param data_kws: keyword arguments passed to plot for data curve. :type data_kws: ``None`` or dictionary :param fit_kws: keyword arguments passed to plot for best-fit curve. :type fit_kws: ``None`` or dictionary :param init_kws: keyword arguments passed to plot for initial curve. :type init_kws: ``None`` or dictionary :param ax_res_kws: keyword arguments passed to creation of matplotlib axes for the residual plot. :type ax_res_kws: ``None`` or dictionary :param ax_fit_kws: keyword arguments passed to creation of matplotlib axes for the fit plot. :type ax_fit_kws: ``None`` or dictionary :param fig_kws: keyword arguments passed to creation of matplotlib figure. :type fig_kws: ``None`` or dictionary :returns: matplotlib.figure.Figure This combines :meth:`ModelResult.plot_fit` and :meth:`ModelResult.plot_residual`. If ``yerr`` is specified or if the fit model included weights, then matplotlib.axes.Axes.errorbar is used to plot the data. If ``yerr`` is not specified and the fit includes weights, ``yerr`` set to ``1/self.weights`` If ``fig`` is None then ``matplotlib.pyplot.figure(**fig_kws)`` is called. .. method:: ModelResult.plot_fit(ax=None, datafmt='o', fitfmt='-', initfmt='--', yerr=None, numpoints=None, data_kws=None, fit_kws=None, init_kws=None, ax_kws=None) Plot the fit results using matplotlib, if available. The plot will include the data points, the initial fit curve, and the best-fit curve. If the fit model included weights or if ``yerr`` is specified, errorbars will also be plotted. :param ax: matplotlib axes to plot on. :type ax: ``None`` or matplotlib.axes.Axes. :param datafmt: matplotlib format string for data curve. :type datafmt: ``None`` or string. :param fitfmt: matplotlib format string for best-fit curve. :type fitfmt: ``None`` or string. :param initfmt: matplotlib format string for initial curve. :type intfmt: ``None`` or string. :param yerr: array of uncertainties for data array. :type yerr: ``None`` or ndarray. :param numpoints: number of points to display :type numpoints: ``None`` or integer :param data_kws: keyword arguments passed to plot for data curve. :type data_kws: ``None`` or dictionary :param fit_kws: keyword arguments passed to plot for best-fit curve. :type fit_kws: ``None`` or dictionary :param init_kws: keyword arguments passed to plot for initial curve. :type init_kws: ``None`` or dictionary :param ax_kws: keyword arguments passed to creation of matplotlib axes. :type ax_kws: ``None`` or dictionary :returns: matplotlib.axes.Axes For details about plot format strings and keyword arguments see documentation of :func:`matplotlib.axes.Axes.plot`. If ``yerr`` is specified or if the fit model included weights, then matplotlib.axes.Axes.errorbar is used to plot the data. If ``yerr`` is not specified and the fit includes weights, ``yerr`` set to ``1/self.weights`` If ``ax`` is None then ``matplotlib.pyplot.gca(**ax_kws)`` is called. .. method:: ModelResult.plot_residuals(ax=None, datafmt='o', yerr=None, data_kws=None, fit_kws=None, ax_kws=None) Plot the fit residuals (data - fit) using matplotlib. If ``yerr`` is supplied or if the model included weights, errorbars will also be plotted. :param ax: matplotlib axes to plot on. :type ax: ``None`` or matplotlib.axes.Axes. :param datafmt: matplotlib format string for data curve. :type datafmt: ``None`` or string. :param yerr: array of uncertainties for data array. :type yerr: ``None`` or ndarray. :param numpoints: number of points to display :type numpoints: ``None`` or integer :param data_kws: keyword arguments passed to plot for data curve. :type data_kws: ``None`` or dictionary :param fit_kws: keyword arguments passed to plot for best-fit curve. :type fit_kws: ``None`` or dictionary :param ax_kws: keyword arguments passed to creation of matplotlib axes. :type ax_kws: ``None`` or dictionary :returns: matplotlib.axes.Axes For details about plot format strings and keyword arguments see documentation of :func:`matplotlib.axes.Axes.plot`. If ``yerr`` is specified or if the fit model included weights, then matplotlib.axes.Axes.errorbar is used to plot the data. If ``yerr`` is not specified and the fit includes weights, ``yerr`` set to ``1/self.weights`` If ``ax`` is None then ``matplotlib.pyplot.gca(**ax_kws)`` is called. :class:`ModelResult` attributes --------------------------------- .. attribute:: aic floating point best-fit Akaike Information Criterion statistic (see :ref:`fit-results-label`). .. attribute:: best_fit ndarray result of model function, evaluated at provided independent variables and with best-fit parameters. .. attribute:: best_values dictionary with parameter names as keys, and best-fit values as values. .. attribute:: bic floating point best-fit Bayesian Information Criterion statistic (see :ref:`fit-results-label`). .. attribute:: chisqr floating point best-fit chi-square statistic (see :ref:`fit-results-label`). .. attribute:: ci_out confidence interval data (see :ref:`confidence_chapter`) or `None` if the confidence intervals have not been calculated. .. attribute:: covar ndarray (square) covariance matrix returned from fit. .. attribute:: data ndarray of data to compare to model. .. attribute:: errorbars boolean for whether error bars were estimated by fit. .. attribute:: ier integer returned code from :func:`scipy.optimize.leastsq`. .. attribute:: init_fit ndarray result of model function, evaluated at provided independent variables and with initial parameters. .. attribute:: init_params initial parameters. .. attribute:: init_values dictionary with parameter names as keys, and initial values as values. .. attribute:: iter_cb optional callable function, to be called at each fit iteration. This must take take arguments of ``params, iter, resid, *args, **kws``, where ``params`` will have the current parameter values, ``iter`` the iteration, ``resid`` the current residual array, and ``*args`` and ``**kws`` as passed to the objective function. See :ref:`fit-itercb-label`. .. attribute:: jacfcn optional callable function, to be called to calculate jacobian array. .. attribute:: lmdif_message string message returned from :func:`scipy.optimize.leastsq`. .. attribute:: message string message returned from :func:`minimize`. .. attribute:: method string naming fitting method for :func:`minimize`. .. attribute:: model instance of :class:`Model` used for model. .. attribute:: ndata integer number of data points. .. attribute:: nfev integer number of function evaluations used for fit. .. attribute:: nfree integer number of free parameters in fit. .. attribute:: nvarys integer number of independent, freely varying variables in fit. .. attribute:: params Parameters used in fit. Will have best-fit values. .. attribute:: redchi floating point reduced chi-square statistic (see :ref:`fit-results-label`). .. attribute:: residual ndarray for residual. .. attribute:: scale_covar boolean flag for whether to automatically scale covariance matrix. .. attribute:: success boolean value of whether fit succeeded. .. attribute:: weights ndarray (or ``None``) of weighting values to be used in fit. If not ``None``, it will be used as a multiplicative factor of the residual array, so that ``weights*(data - fit)`` is minimized in the least-squares sense. .. index:: Composite models .. _composite_models_section: Composite Models : adding (or multiplying) Models ============================================================== One of the more interesting features of the :class:`Model` class is that Models can be added together or combined with basic algebraic operations (add, subtract, multiply, and divide) to give a composite model. The composite model will have parameters from each of the component models, with all parameters being available to influence the whole model. This ability to combine models will become even more useful in the next chapter, when pre-built subclasses of :class:`Model` are discussed. For now, we'll consider a simple example, and build a model of a Gaussian plus a line, as to model a peak with a background. For such a simple problem, we could just build a model that included both components:: def gaussian_plus_line(x, amp, cen, wid, slope, intercept): "line + 1-d gaussian" gauss = (amp/(sqrt(2*pi)*wid)) * exp(-(x-cen)**2 /(2*wid**2)) line = slope * x + intercept return gauss + line and use that with:: mod = Model(gaussian_plus_line) But we already had a function for a gaussian function, and maybe we'll discover that a linear background isn't sufficient which would mean the model function would have to be changed. As an alternative we could define a linear function:: def line(x, slope, intercept): "a line" return slope * x + intercept and build a composite model with just:: mod = Model(gaussian) + Model(line) This model has parameters for both component models, and can be used as: .. literalinclude:: ../examples/doc_model2.py which prints out the results:: [[Model]] (Model(gaussian) + Model(line)) [[Fit Statistics]] # function evals = 44 # data points = 101 # variables = 5 chi-square = 2.579 reduced chi-square = 0.027 [[Variables]] amp: 8.45931061 +/- 0.124145 (1.47%) (init= 5) cen: 5.65547872 +/- 0.009176 (0.16%) (init= 5) intercept: -0.96860201 +/- 0.033522 (3.46%) (init= 1) slope: 0.26484403 +/- 0.005748 (2.17%) (init= 0) wid: 0.67545523 +/- 0.009916 (1.47%) (init= 1) [[Correlations]] (unreported correlations are < 0.100) C(amp, wid) = 0.666 C(cen, intercept) = 0.129 and shows the plot on the left. .. _figModel2: .. image:: _images/model_fit2.png :target: _images/model_fit2.png :width: 48% .. image:: _images/model_fit2a.png :target: _images/model_fit2a.png :width: 48% On the left, data is shown in blue dots, the total fit is shown in solid red line, and the initial fit is shown as a black dashed line. In the figure on the right, the data is again shown in blue dots, and the Gaussian component shown as a black dashed line, and the linear component shown as a red dashed line. These components were generated after the fit using the Models :meth:`ModelResult.eval_components` method of the `result`:: comps = result.eval_components() which returns a dictionary of the components, using keys of the model name (or `prefix` if that is set). This will use the parameter values in ``result.params`` and the independent variables (``x``) used during the fit. Note that while the :class:`ModelResult` held in `result` does store the best parameters and the best estimate of the model in ``result.best_fit``, the original model and parameters in ``pars`` are left unaltered. You can apply this composite model to other data sets, or evaluate the model at other values of ``x``. You may want to do this to give a finer or coarser spacing of data point, or to extrapolate the model outside the fitting range. This can be done with:: xwide = np.linspace(-5, 25, 3001) predicted = mod.eval(x=xwide) In this example, the argument names for the model functions do not overlap. If they had, the ``prefix`` argument to :class:`Model` would have allowed us to identify which parameter went with which component model. As we will see in the next chapter, using composite models with the built-in models provides a simple way to build up complex models. .. class:: CompositeModel(left, right, op[, **kws]) Create a composite model from two models (`left` and `right` and an binary operator (`op`). Additional keywords are passed to :class:`Model`. :param left: left-hand side Model :type left: :class:`Model` :param right: right-hand side Model :type right: :class:`Model` :param op: binary operator :type op: callable, and taking 2 arguments (`left` and `right`). Normally, one does not have to explicitly create a :class:`CompositeModel`, as doing:: mod = Model(fcn1) + Model(fcn2) * Model(fcn3) will automatically create a :class:`CompositeModel`. In this example, `mod.left` will be `Model(fcn1)`, `mod.op` will be :meth:`operator.add`, and `mod.right` will be another CompositeModel that has a `left` attribute of `Model(fcn2)`, an `op` of :meth:`operator.mul`, and a `right` of `Model(fcn3)`. If you want to use a binary operator other than add, subtract, multiply, or divide that are supported through normal Python syntax, you'll need to explicitly create a :class:`CompositeModel` with the appropriate binary operator. For example, to convolve two models, you could define a simple convolution function, perhaps as:: import numpy as np def convolve(dat, kernel): # simple convolution npts = min(len(dat), len(kernel)) pad = np.ones(npts) tmp = np.concatenate((pad*dat[0], dat, pad*dat[-1])) out = np.convolve(tmp, kernel, mode='valid') noff = int((len(out) - npts)/2) return (out[noff:])[:npts] which extends the data in both directions so that the convolving kernel function gives a valid result over the data range. Because this function takes two array arguments and returns an array, it can be used as the binary operator. A full script using this technique is here: .. literalinclude:: ../examples/doc_model3.py which prints out the results:: [[Model]] (Model(jump) Model(gaussian)) [[Fit Statistics]] # function evals = 25 # data points = 201 # variables = 3 chi-square = 21.692 reduced chi-square = 0.110 [[Variables]] amplitude: 0.62106099 +/- 0.001783 (0.29%) (init= 1) center: 4.49913218 +/- 0.009373 (0.21%) (init= 3.5) mid: 5 (fixed) sigma: 0.61936067 +/- 0.012977 (2.10%) (init= 1) [[Correlations]] (unreported correlations are < 0.100) C(amplitude, center) = 0.336 C(amplitude, sigma) = 0.274 and shows the plots: .. _figModel3: .. image:: _images/model_fit3a.png :target: _images/model_fit3a.png :width: 48% .. image:: _images/model_fit3b.png :target: _images/model_fit3b.png :width: 48% Using composite models with built-in or custom operators allows you to build complex models from testable sub-components. lmfit-0.9.2/doc/intro.rst0000644000032700003100000001546512603520205016555 0ustar newvillegeocars00000000000000.. _intro_chapter: =========================================================== Getting started with Non-Linear Least-Squares Fitting =========================================================== The lmfit package is designed to provide simple tools to help you build complex fitting models for non-linear least-squares problems and apply these models to real data. This section gives an overview of the concepts and describes how to set up and perform simple fits. Some basic knowledge of Python, numpy, and modeling data are assumed. To do a non-linear least-squares fit of a model to data or for a variety of other optimization problems, the main task is to write an *objective function* that takes the values of the fitting variables and calculates either a scalar value to be minimized or an array of values that is to be minimized in the least-squares sense. For many data fitting processes, the least-squares approach is used, and the objective function should return an array of (data-model), perhaps scaled by some weighting factor such as the inverse of the uncertainty in the data. For such a problem, the chi-square (:math:`\chi^2`) statistic is often defined as: .. math:: \chi^2 = \sum_i^{N} \frac{[y^{\rm meas}_i - y_i^{\rm model}({\bf{v}})]^2}{\epsilon_i^2} where :math:`y_i^{\rm meas}` is the set of measured data, :math:`y_i^{\rm model}({\bf{v}})` is the model calculation, :math:`{\bf{v}}` is the set of variables in the model to be optimized in the fit, and :math:`\epsilon_i` is the estimated uncertainty in the data. In a traditional non-linear fit, one writes an objective function that takes the variable values and calculates the residual :math:`y^{\rm meas}_i - y_i^{\rm model}({\bf{v}})`, or the residual scaled by the data uncertainties, :math:`[y^{\rm meas}_i - y_i^{\rm model}({\bf{v}})]/{\epsilon_i}`, or some other weighting factor. As a simple example, one might write an objective function like this:: def residual(vars, x, data, eps_data): amp = vars[0] phaseshift = vars[1] freq = vars[2] decay = vars[3] model = amp * sin(x * freq + phaseshift) * exp(-x*x*decay) return (data-model)/eps_data To perform the minimization with :mod:`scipy.optimize`, one would do:: from scipy.optimize import leastsq vars = [10.0, 0.2, 3.0, 0.007] out = leastsq(residual, vars, args=(x, data, eps_data)) Though it is wonderful to be able to use python for such optimization problems, and the scipy library is robust and easy to use, the approach here is not terribly different from how one would do the same fit in C or Fortran. There are several practical challenges to using this approach, including: a) The user has to keep track of the order of the variables, and their meaning -- vars[0] is the amplitude, vars[2] is the frequency, and so on, although there is no intrinsic meaning to this order. b) If the user wants to fix a particular variable (*not* vary it in the fit), the residual function has to be altered to have fewer variables, and have the corresponding constant value passed in some other way. While reasonable for simple cases, this quickly becomes a significant work for more complex models, and greatly complicates modeling for people not intimately familiar with the details of the fitting code. c) There is no simple, robust way to put bounds on values for the variables, or enforce mathematical relationships between the variables. In fact, those optimization methods that do provide bounds, require bounds to be set for all variables with separate arrays that are in the same arbitrary order as variable values. Again, this is acceptable for small or one-off cases, but becomes painful if the fitting model needs to change. These shortcomings are really do solely to the use of traditional arrays of variables, as matches closely the implementation of the Fortran code. The lmfit module overcomes these shortcomings by using objects -- a core reason for wokring with Python. The key concept for lmfit is to use :class:`Parameter` objects instead of plain floating point numbers as the variables for the fit. By using :class:`Parameter` objects (or the closely related :class:`Parameters` -- a dictionary of :class:`Parameter` objects), one can a) forget about the order of variables and refer to Parameters by meaningful names. b) place bounds on Parameters as attributes, without worrying about order. c) fix Parameters, without having to rewrite the objective function. d) place algebraic constraints on Parameters. To illustrate the value of this approach, we can rewrite the above example as:: from lmfit import minimize, Parameters def residual(params, x, data, eps_data): amp = params['amp'].value pshift = params['phase'].value freq = params['frequency'].value decay = params['decay'].value model = amp * sin(x * freq + pshift) * exp(-x*x*decay) return (data-model)/eps_data params = Parameters() params.add('amp', value=10) params.add('decay', value=0.007) params.add('phase', value=0.2) params.add('frequency', value=3.0) out = minimize(residual, params, args=(x, data, eps_data)) At first look, we simply replaced a list of values with a dictionary, accessed by name -- not a huge improvement. But each of the named :class:`Parameter` in the :class:`Parameters` object holds additional attributes to modify the value during the fit. For example, Parameters can be fixed or bounded. This can be done during definition:: params = Parameters() params.add('amp', value=10, vary=False) params.add('decay', value=0.007, min=0.0) params.add('phase', value=0.2) params.add('frequency', value=3.0, max=10) where ``vary=False`` will prevent the value from changing in the fit, and ``min=0.0`` will set a lower bound on that parameters value). It can also be done later by setting the corresponding attributes after they have been created:: params['amp'].vary = False params['decay'].min = 0.10 Importantly, our objective function remains unchanged. The `params` object can be copied and modified to make many user-level changes to the model and fitting process. Of course, most of the information about how your data is modeled goes into the objective function, but the approach here allows some external control; that is, control by the **user** performing the fit, instead of by the author of the objective function. Finally, in addition to the :class:`Parameters` approach to fitting data, lmfit allows switching optimization methods without changing the objective function, provides tools for writing fitting reports, and provides better determination of Parameters confidence levels. lmfit-0.9.2/doc/test_ci2_result.png0000644000032700003100000051645312603520205020513 0ustar newvillegeocars00000000000000‰PNG  IHDR¾ž$ÒÌ7sBIT|dˆ pHYsaa¨?§i IDATxœìÝy\”õþÿÿÇ, ¸îŠŠâšPV.™fY–¹fz²´Åƒ™§lûµ}Ë̲ÅJ;vLË“™–éIóX1Ë-³¨¹$š(˜î+(ÌÌïk®áš dV^÷Û›Ì5×̼§®7×õ¼Þ›Îb±XB!„B!B”ÞßB!„B!¼I‚¯B!„Bˆ&ÁW!„B!DH“à+„B!„"¤IðB!„BÒ$ø !„B!„i|…B!„B„4 ¾B!„B!Bš_!„B!„!M‚¯B!„Bˆ&ÁW!„B!DH“à+„B!„"¤IðB!„BÒ$ø !„B!„i|…B!„B„4 ¾B!„B!Bš_!„B!„!M‚¯B!„Bˆ&ÁW!„B!DH“à+„B!„"¤IðB!„BÒ$ø !„B!„i|…B!„B„4 ¾B!„B!Bš_!„B!„!M‚¯B!„Bˆ&ÁW!„B!DH“à+„B!„"¤IðB!„BÒ$ø !„B!„i|…B!„B„´  ¾?þ8-[¶D¯×óûï¿»Ýoùò夤¤””ÄàÁƒ9wîœK)„B!„"ÐMð:t(ëÖ­#!!Áí>çÏŸç‘GaéÒ¥ìÞ½›ØØX&MšäÃR !„B!„4FÀSݺu+wŸï¾ûŽÔÔT’’’;v,·Ývï¼óŽÓ¾Çç‡~ E‹DFFVyy…D………ìß¿Ÿ>}úРAÇF꣨n¤. ¤. 8¼]ƒ&øz"??ŸøøxÛã„„>ŒÙlF¯·oÜþá‡1b„¯‹(D@˜?>÷ÝwŸ¿‹a#õQTWR… R…Þª!|u:Çû¶lÙPþ椤Ø=·zÿjVì^A±¹˜bs1—K.SXRHaI!._àüåó–Ú½&ÜNlXÎ/;ϨçFÑ¡q’ê'f»âï5~üx¦M›vÅï#ïYuïk2›8|î0ûNï#ÿL>ùgòÉü(“˜1œ,<ÉÙKgݾ¶†¡Æjkn§†Aùר7:ý윿“ŽtÄ 7 ×éy¾ëóDEDUºÜüñ#FŒ°ÿÂU}ôÖÿ{o¾·¼¯÷ß;TÞ7˜ê¢7yó¬ \>)[åiËju1ÐÿÛ«‚¡œRƪQ‘2z»>†TðgåÊ•¶Çû÷ï§iÓ¦N­½¤¤¤ššj÷\jj*Oót™Ÿu©ä§ŠNqôüQöŸÞÏþÓûÙ{j/ó¿ŸÏ?ü“Ëû/]#šþ­û3´ÍPnmu+á†ðJ}¯˜˜§2^©êüž•yß‹ÅY•»Šÿîù/¿ü•]ÇwQTR@¤1’«ë_MDíúßÜŸ&µ›Ð¸VcÖjH½ÈzÔ¨KÝȺÔ¯MͰšèuž­¿{ãÝ,{~Y…¿_yÔã?P¸ªÞúïÍ÷–÷õþ{‡ÚûC]ô&oƒU!Ë'e«}ˆŠŠb÷îÝL˜0ØØXÒÓÓ©S§³gÏfÀ€”””о}{æÎëó²Ö0Öà†æ7pCóxµÇ«l/ØÎç¿ÎììÙLÝ8•þÉý™xóDÚ7nï󲉲2ï÷y|ºùS~=ø+î Ý™|Ëdî¼úN’ê'U¨K½B!„Âÿ‚&øÎš5Ëåö‰'Ú=îׯýúõóE‘<¢Óéh߸=Sn«=^eþïóyãû\ûɵ¼Óû¿þq Ràð¹Ã|øÛ‡Ìú¿Yœ,<ÉIwòù€Ï¹3éNêEÖówñ„B!„W h‚o°(«ku­ðZ¤_›ÎÈkFòªÿÃx~ØûsúÏ¡qíÆ•zOo”3ÔßSû¾…Å…¼»á]ÞZÿzž‡;=Ìã×?NbÝÄJ¿gUòÖ÷ÞüîÞ>®ªûûzó½å}CK ÿ÷ äòIÙ*/ÐËw%‚å»C9¥ŒU#ʨ³¸0â²³³IKK#++ËoƒÂ¿Û󣖎¨7²êU´nÐÚ/娎, ‹v.âÙ•ÏrøÜaž¸á ^êþ11þ.šWÂqïJ –Ko Ôc>PË%„·ê1¨å›¼}Ü{>½¬¨rw\}[Ò·P/²7͹‰ßþîï"U  ôÕ îýú^:5éÄŽ±;˜r딽B!„BTWÒÕÙÏšÖiÊê‘«¹mÞmôœÛ“ÿøi±iþ.VÈZºk)£¿ K†.a`Ê@ITÈ@ˆ jâïx‰ÔEl¤. üW¥Å74¨Ù€U¬âêzWÓëó^üqì)$½öók ør74¿ín—Ð+„B!D5!Á7@Ô¬ËÿîÿMj7aô·£1[Ìþ.RH™=› ?M`RÏI,¶´ÌÉÄ„B!„¡E‚o‰ªÅÇw}Ìúëù8ëc'd|·ç;Æ,ã×>ÊKÝ_’壄B!„¨f$ø˜-zðHê#<—ù‡Îòwq‚^Ö¡,îYtw&ÝÉô;¦KèB!„¢’à€Þéý‘ÆHþñÝ?ü]” vîÒ9|9€¶Ú’18ƒÞàï" !„B!ü@‚oªY—ÞñO–ü±„ov}ãïâ­ ?MàdáI¾ò5Ãjú»8B!„B?‘à îisw%ÝŸã8{鬿‹t6ÞÌ¿~À„HˆIðwq„B!„~$Á7@ét:þÕ÷_œ.:Í‹«^ôwq‚ŠÉlbÌÇЦaž¼áIG!„Bág|X|töŸÞO‹˜þ.Ž_*<ÅSÿ{Š{ÛÞKŸ«úø»8!åÀ4mÚ½^¹7¦Óéˆ'??ŸÄÄDÛ~ùùùÄÇÇÛ'$$pøðaÌf³íµK–,¡U«VtèСÌÏ?~<111vÛ†Îðáëâk‰J++xºoyï︖ãV £‡û¶ŒŒ §‹ÞÓ§O{üzÔÇ਋ž—哎Ïk/Çã0øŽ?QJêbÕ‰ŒŒ¤mÛd¶oßEaa!Ó§OçwÞáÙgŸµíóÒK/qýõ×3nÜ,¾ÿ~¢Ã;hë»:%õ/”]i}¬ ¾Aæî仉4F²pûBžïö¼¿‹ãW/¬z¢’"Þï󾿋Rmy:‘Ø¿ÿýoîhO›6ÔÔÔ+-–¨2ž Wûh¶Íƒ¨„r>'Š…ßàâê"5;;›´´ª½€«Êú¼u±¬Ð[Ñ›2êÿí{vÔ¼\€©‹UkË–Lbb’ùꫯhÙ²%O=õ”ÝóMš4aâĉ<øàƒäçPz/ÀUo W\ý‘ð*|Uµ$ø™Úáµé—ÜŒíÕ:øþràfeÍbúÓ‰­ëïℜ¸¸8»»Ó‹Åé6@||<+W®´=Þ¿¿ÝÝp€}ûöñ믿òŸÿÈR\ÁÅÕ…ˆ«Àëb¿³y¥¿ç‰yÎûhEAiøUwüÌê{×_ê£+åŸnœ-çXëñèÈ1«¸ú‡Bê¢+ÿþ÷ûÜsÏh† ‚Á`pzþúë¯ /ïâã[hž©È¨à¿*ƒŒñ BÃÛ ç÷£¿³ó˜ë™CÙbæÑÿ>ʵ±×òèµú»8!©Q£F¤¦¦2oÞ</^L\\œ]W.€>}úMNN3fÌpº{÷é§Ÿ2hÐ ¢¢\^MŠ€TÁÐ{6Ïþ'—ÒŸ<`5öÛÔÕÙ<Êo™«¾ã½¤>V–Ã1åxlºûQc—ã‚U[5ÛEu!uÑÙàÁwÒ®]2[·nÅb±8=¿}ûvš6­cÝRNÑžKlõ®úþýUKZ|ƒÐWÝAthn_Èk=_ówq|nùîål=º•u®Ã w¾»(ªÆ¬Y³5j“'O&::š9sæ0aÂbccIOO§N:Ìž=›PRRBûöí™;w®í=Ìf3sçε]$ˆ`àj²)Çç5W¥ ²y.¶•'1OÓò«~Ž´¦©¤>–§œ.Îjèõ Á—< ë1™€}OíïjW|9V«©‹Î¦N}Þ½‡2þ|î¿ÿ~ÛösçÎñƯӵk[®ºJ»d“ÃpG¶sG\£}¢úöüUC‚oªa¬Á ”A,ܾ‰7Oôx,I¨˜²a ]ãºÒ5¾«¿‹Ò’’’ذaƒÓö‰í'¨èׯýúõsùz½žüü|¯”OxCC¯«° ¥Û÷–ñQ‰š×$PÚ%ÚÖøáªësõèDê£VE&«rz+zCÜ` ¿Õ‘ÔEg½zucäÈ¡Œ9’+Vзo_:ĬY39qâ?ý4ʺ§‡×î) ¿¢êUðݳg#GŽäĉDGGóÙgŸÑ¦M§ý&NœÈ—_~I5ˆˆˆàŸÿü'×]wJì=ÃÚ cΖ9l>²™Ô¦9é7lük#ëò×ñÍ½ßø»(B„˜J†Þ²oE†Ê®•ÍUëohLx%ªRË_iC¯öx,릌+NX¯*NǧŸNåÚk;2}ú§,\¸ððp† ¹‘ÿ÷ÿž#%å¤fo7®o¢:ž;ìnŠ‚„_QYA|ÕEÃxà/^̨Q£Ø´i“Ý>›6mbΜ9ìܹ“š5k²`ÁÆǯ¿þê§R{G¯–½hP³ ·/¬VÁwʆ)$×O¦_²ë»¨BˆÊ(+ôjÆ8ªwèݵž9^wÁ7çà¡m®Pø•‹žêÍ]g7¡W{ܹ:>sQŽEWÑÌR.áW-½^ϸq1nÜCŽÁ°ÅúìI\¶öº ¼{q®‹=%üŠ+4ÁW]4<33P 7n¹¹¹v“ 4hЀóçÏS³fMN:E\\œ_ÊìMF½‘{ÚÜ×;¾ä­Þo¡×…þ㕯aŒðwq‚BFFvÛNŸ>í§ÒˆÀãA轂Àë²—³& —‚Ëìö,B¸âbÜ zÌîuØfåêæŒÚÈ{°ˆÒœ‹}ë¯c¶›øÊ‘«B8)«ç…æñÁ"h¦]/¸ ÏZ÷²€¿#½„§‚&øzºhøš5kèÕ«Mš4`Ô¨Qüãÿ ¤¤£ÑùëN›6ÔÔà#«×é¹·í½|±í ¦ö™ÒKûÌÝ2N'ëöV€«8ÙÙÙ¤¥ÉIAT ô–× -Ï}ØÕ>Nt|Þ1«¡BÛíY}[¸p$] å«íî»!èNÇ©»¬rÙú«%s…p¢mÍuœóÁz^É(²Ö?uÿ•@+ëã„<¸æc$ü OÍ@IO ïСëׯçÂ… ,_¾œääd—¡7 k7Œ£ŽòsÞÏþ.ŠW-ܱ»’î¢nd]Eˆ çaè]Mi‹ÙJJ[y3±âƒ9¥'Ú`ÇÇŽÛ¡|žc+€6tŸÍÃn g¹ßKìº8kUO~Àþ=˜ƒrœf¢Ô íbÛ1 öÇéVäØÊ­C´uqm‘æ<¡Ö¿•(õoKð1îgw¢TP¥AO ¿ýöÛùí·ßèܹ3aaaÔ®]›/¾øÂÏ%÷žëb¯£eLK2¶gЫe/Ç+vŸØMöál^ìö¢¿‹"D«@èuìÖ\F oY½ÖÜmsRÍ´;¶Ò¼Pmì=›§™ìÊqB!Q}•3©ÊcWóåTxÅ-µ” o[×K+§IÙ´uNZ¡D5ç¸v¯« ¨míuÜEÛ”:¨v}¶kù•V_áZP_O ùå—yùå—}U,¿Òét k7ŒYY³˜Ñwa†0©Ê}¹ýKj‡×¦ïÕ}ý]!‚XC¯«‰FpÝ«åj.G .^” U+‡7uìbêD.v„­½Ž<9fÕζžÎŽß­^èx“F%ǧv´7WË ½hêŸvì/(á71¢»= a/¨‚¯pmhÛ¡¼¹îM~Ü÷#}®êãïâT)‹ÅBÆö ´@dXdù/B¸PÉÐë"ð‚}€p‡ki©C³ÜiæêI§É®@&ºªÞ>ÿüSÆŒYFQ‘ €5tLŸÍ#C­;hã<§ÃÙ‰ã1[Öqš ôç‹o•zgG¯¨ÖÜtm.«"bߏ¬sEn$:Þ,í© ¿ uM8’à:6îÈÕõ®fÑÎE!|·lçãðîmïú»(B©+ ½eÞ²®Êq. r_SÝÝ…_•]—g5}«—aÃÞfñâ_())¡I“&\ºt‰Ó§Oó÷¿Ÿæ?‹à¿c­;:Þ³¸ÙOÝÖ e˜a"¨¯êØ÷[^$áW׬盒?Á°tùö=3´õÕñF”ÝyE¯¨ ¾!@§ÓqOÛ{øè·øèÎBª»sÆö êEÖ£wboEˆ TùÐ{0GÙ˱[³öbÄÓñ‘G™Xä¦å×¶ƒú‹úý䦺8~ü4_½ÚµkS£F Ž;F¯^½0›ÍüôÓOü° 2LôÇ©‹³¶÷þ•pšØYÛò¤ŽûÕv}–ð+„K— Á pá²Î6ùlqq1·£ô[¶l¡nݺ¼üòËÌ›7 . ×ë¹õx{1ʇ_4cÔµäXÕ@TY[òˆˆ¨ÁÔ©Sm¡ aÆL™2…~ýú‘ ´tóŽáW»Ý¶,ÞJuk\£}µÔ³êN‚oÚf(¯¯yÌÜÌ _úÇl1³hç"†´‚AïÍ{öB„:‡Ð{¶r¡×[ב«I…\¶ú‚fì¤J–°uS¦<ÈèÑrñâEæÍ›Çßþö74h@×®])((à™gžáÚk¯å÷ßgêÔ© 8}šgÝ´U·á·Ìqê~EuS:ƽcÇŽDGGÛ=k2™HHPºóÇ}ðãìÑÔCõÆÓ^ëNNuMêYu&Á7„´kÔŽÖ ZóÕŽ¯‚>øn:¸‰¿ÎþÅ=mîñwQ„2®º8»éÞœ‰G37û*ôji3ƒm²+µ å®ç+BÕÃ÷aìØ(.6qäÈZµjÅ´iÓÈÏÏ';;›¤¤$.^¼È±cǸ馛øï·ß2¸ÛËårYGÜ-w¤’ð+ª©½{÷R\\LXX‹…3f0yòd:€I¯çˆÙ\æ{hïÓRïÚñ¾`ìJûj©gՕߢvwþ`ã\*¹D c ©Ò¾Þù5k5¦[|7Eˆ ⪋³g¡×qæfð_èUÇn©å°ëÂfÛ`e×MTçÏ/¢ví!ñÓO?±{÷nFŒARR»ví¢OŸ>äççÊyq»NÇ6‹…$/—ËmøUgàQ¹\—ZK.ÊE¨)mí½¦=lÙvœY³f1nÜ8^xáÞ~ûmjÕª…ÑhäìÙ³ìÕ鈰X¨[Æ»ªu®•ÃcÇû‚„_ȬÎ!§rÎ\:Ão‡~ówQ*Íb±ðõί”2Hº9 á±à½ÚÏÓÎÚi+£¶‹¶Jfw®vÂÂÂ(,|•¾}¯â‡~àÈ‘#$%%QRRB¿~ý8xð ƒ°°0zõêÅõ×_@®ÑÈ9/—M=ËlÏ"´m^§üûøã3pà@Þ~ûmt:QQQ\¾|™ë®K£[·.VðýíVpÒSZ×>EêYõ$Á7ÄtlÜ‘:áuX›·ÖßE©´¬ÃYäÉcH›!þ.ŠA"øCoYì.d´l™Wýþ[Õƒ^¯ç›oF0bD<ÅÅŬ]»–åË—+3Â×]w 33“3fðØcÁ½‹—˦]ž+Óúc·<×JÊYîH¯aQ …Èp K—.Å`0P»vm’““Ø¿+Wþ—5k2Ù¹s3M›6áœÁPnÕ.‡gG­„~…•ßcÐè×…µùÁ|¿Þù5 j6঄›ü]”jmÏž=téÒ…ääd:wîÌÎ;]î·|ùrRRRHJJbðàÁœ;WÚ¦rêÔ)î»ï>’““i×®/¼ð‚¯Š_”±lQ‡^Z}¥°^$uÑ5½^Ïܹi<üpË–-eþüù˜Ífωù´ IDAT,X@íÚµ0`©©©|ñÅÔ®] ³ÙÌqƒïNwå¼6u&°Öqmj ¿AIêcEi'TºGDÀ…xè &“‰sçÎ1wî'ÄÆÆÚölÝ:™Y³>¤Äd¢¸Œwwu pZ^¯°’à‚ºÅwcà ˜Ì&¥ÂÔnÎ[Ĩ—!èþ”žžÎ˜1cÈÉÉá¹çžcÔ¨QNûœ?žGy„¥K—²{÷nbcc™4i’íù‡zˆ´´4rrrؾ};ãÇ÷á7¨\°·+'vØz?ßq"g[«¯ÓÎîZ}ƒÿ¢Fê¢+ÊÅ´^-~Ø‘›±xñb’““ILL$==ÌÌL22æSPpˆýû÷òÞ{S¨Í)·üªuNÂoð“úXYš1µQÊìÍ­›+[’ÒÚé}úÜŠÁ`(3ø‚s]S·Ù…_Ǧ¶a2RϪ ¾!¨{|wÎ\:Ãö‚íþ.J…m9²…½§öÊlÎ~VPP@VV#FŒ`РA8p€Ü\ûXòÝwß‘ššJR’2mÌØ±cÉÈÈàÏ?ÿ$++‹'Ÿ|Ò¶ãÆ}ô ª+ë \ ½Úi™­ÿë9ôªÜ…ß@)Ÿ/I],ŸÑ¨çË/¯ã7”åQNœ8Á¾}ûÈÈÈ`Ê”·6ì^-úš„„V<ýô³œ]¥ŸQ}êbé²(®ìÝ uÌš5 €ââb^yåUbc›ræÌY¾þú ì^¯gÛ¶í :‚½{þ¤‡­J•岎A÷²&%—¥Žªœ/ê"Tm} ܺXQQÎUöuxæsðÛhéé‘——ÏðáC¹té³gƇ~D-à2`¬?eq¬k‰ê6í’xê`]O-OGëïRÏ|ÁWõQK‚oˆêßù¿ÏÇb±”ù8üyòOöœÜÃû}Þ÷wQª½¸¸8ÛÝi½^Åbqºƒ ÏÊ•+m÷ïßo»O³fÍèÑ£·ß~;—/_&//ÄD—q†iÓ¦‘ššê½/2´þ¡×±‰à ½*Çð› 4óSY*ËÕEjvv6iiå_\I],‹z!­J£nÝ<ö~dáêt:ŽiÓþÉ–-[1 Lúƒ´íݾ};¾ùæ+Z·îÈE –—K+á×ÿ®¤.‚êcpÔÅÊHSŽï<Ø8ØÂ3 MLyã-^{m2áz=á@‘^ϳÙöªH½ž(³™²»tw^kf[?[³“S“ðë+WZ+Cº:‡¨îñÝ9tîûNïówQ<¶&o zžîñÝý]”j¯Q£F¤¦¦2oÞ</^L\\œÓI¹OŸ>dgg“““ÀŒ3lÄÒÒÒˆŠŠbÛ¶mlÚ´ P.DUqzÇõº¹¨†Ð«Êuø×Žæû8qž{îù‚¾}Ÿbݺà›ãÀ©‹ž*½PjÑŠƒ{j[xëÍ·0™L V:w„ÅbaúôÜ|sÎ:]…× ­¨\”ÕŒ¤Ûsp’úXÚÓÑÅ6K‚n„ÃF3S€&f3—§ž~˜ Þ'.® ƒB³™(wr:Wݞ˞èJ[Ç@êYh’ßÕ5®+kóÖ’X×õý@³6-×4¹†èˆhE³fÍbÔ¨QLž<™èèhæÌ™À„ ˆ%==:uê0{öl @II íÛ·gîܹ€ÒÕkîܹŒ=šÂÂB"""X¼x1aaÒýÊhg/vz]Œëulí ¦Ð«Ú $¸Ú˜ù õußP\¬§¤DY¨æ‡^Ä`бk×LÜ4j ©‹•3¯ Ô\iâs½³ÙLaaé ÷Ñ£ÇòÙgŸc2™¹öÚkhÔ¨?ý´ž3E—(1›©ãå²­nÕn–ß !õ±ª¤AT$äÙNHÑ:å¨> 1xü±,_þ#S§~JIIéJ%£Ã%&b]¾o©\¿7Ó>°µúª{iî´ü†" ¾!ªnd]Ú5jǺëyÍHÇ#kòÖpwòÝþ.†°JJJbÆ NÛ'Nœh÷¸_¿~ôë×Ïå{¤¦¦²qãF¯”¯z+#ô–3®7C¯K¹[žy þ³À̰aCyì±ÇˆŽŽfÉ’%Lž<™¤¤1íÇh ÞÓÔÅJhá¹0'Ιù^ÏìÙsxíµWø¿ÿËâßÿþŒèè(–/_@·n7pöì9x`,Ë–ý@¤Åâõ $ ¿ÁIêã•r¢àìpÙd"?ÿ{öì§Y³F¼þú8>Æ÷ßo`÷î<þúë(‡À£ðÛ MÆ-²vyN¤´Õ7kýJ@Âoh Þ+Q®îñÝùqßþ.†Gþ:ûûNï㦄›ü]!˜¶«c¡7Ä-(‚éôüߟ:Ìf3ƒžQ£F1{ölÛ>íÛ·§]»v 2„ÁƒaéÒÏüW`QÅ´“㸸ˆNÀ®Œ֙ͼþú[„‡‡³kW:ŽW_ýÿl¡7+k+o¾9ï¾û‹ÅÂ)ƒžÚ&3‘^þ&~Eõà8)]ÙáWmÛý曕fÎ|™|…ãÇOÑ£GGš7¯ÏÁƒGÑëõzPOµëÁ;MtÕŠÒ!3~CžŒñ aÝ㻓s"‡‚ þ.J¹Öæ)K/Éø^!Üqoä.ô†hkïQà  p?p¤As ‹“ÉÄÓO?íôšÒ¼ysV¬XåãÒ ßÒŒŒrê 4°X˜0a ,Äb±p×]Jä\µj ]»ÞÉŽЭ[*ƒžb“™SÀÊKx¥<ó 2æW9ÇàØÑþa" üs#J@1 Ü~{7ÆŽ}ƒ&Mbøä“g9~ü 7îÄb½^Ï3eÓŽ÷Í´>>˜Cé {§1õ*í˜_ $ø†°nñÝXŸ¿ÞÏ%)ßšü5´nК†µú»(B ãzµÊ ½?Rzn6çCÀ>£ 7:ŽÄÄÆ¾)å2üfb¿ø¯]¯ ðü$ø†¸:pðÜAN\<áµ&o Ñ ÄGÇû»(Bˆ2B¯›õzƒµ¥×œ t:.ëõ˜Ìf-ZÀûï¿cÛ§Q#åb§{÷¤ðÌ3ÏpÛm·ñ÷¿ÿ÷ߟ””êÕ«‡ÅbaÍš5,[¶Œââ˼ÿþ#lØð®¾˜ðí´gÝUQ@C“™Fe’4€ÌÌM´k×’_ü:€‹‹Ø¹3æÍpQ§ã,¥³ÎzK™áWÓËÃy<¢„_,< ¿MÁ6.?3Ó¹ãÙ³ÙøK•YÙ1üÚhÇØHø |C\‡ÆØV¸­¾kó×Ò=Aº9 a¯œÐ릋s°„^ P—€{ïˆÙl¦mÛ6ôﯬ}Y«V-t:Ë—/”;ûóçÏgïÞ½´jÕ NGÿþýÉÏÏãôéS´n݈÷Þ»ƒóç_¦¤dO.hZ| ÈÊÊbĈ 4ˆ›k [µj¶Ð ¥ãê«;lWçµùkiX³!Iõ“ü]!ü,Ëáw³8kCoNðLfU‚zF5kFS‡ÿþw6µj•vN»é¦.ÄÆ6åĉ“<óÌ ˜LÊ(ÊmÛþ§Ÿ~€¬¬,¾ÿþ{.]ºDÿfŠõ×Îzñ©6óZ/Zµ­¾îzAך-èu:nºéI&Mš@ß¾)NûÆÅÅÒ¦ÅU]|7*Þò+c~E0舭Ϊ­¾‰Ð=zã\_õ(“ÒÕ5›©[b"%ôšc:8§C H¼JapJ§*Pš•( ¼¶:¶Z³18»ÄÅ«¤å7˜M‹ïhÚ´©msNG||<ùùù$&–V‹;wÒ°aC†NNN-Z´à½÷Þ£eË–.ßwüøñÄÄÄØm>|8Ç÷Þ—ñ±;°hç"Lfý•t©z묧[|7[×FQu222ÈÈȰÛvúôi?•F”ÍͲEn&³ –Ð[‚rÑ¡†ƒ’×§gÏ.Ô©S›®]Ó0 |þùB†ÈÇOåî»ÿÆ¿þ5“åËWзïí=ZÀ²eßRÃ``¬ÉÄ@”‹"nö´r¾úIò” i°µ"õαßËU1 LfΞ½È–¬àÈ‘s´hQÏn?“ÉLAÁy|yæò¨å7ÁºcbžÒÜe;þÕ‹s©"E%y¥w¨r•Vßžš]Ê:ÇJ,ðÄF^}5œ˜ÇŽ™yòÉK,X`&Ï{fh[~{k[~U‰K jÒÊœ‚&øzª¤¤„ü‘_ý•””fÍšÅСCùí·ß\î?mÚ4RSS}\Jßêи‹/’{*—«ë_íïâØ\6]æ×¿~åõ^¯û»(!ÉÕ œììlÒÒäu`q/dÝæz­­½Áz‹:f‹…1cz3sf&×'22¶Ïí·ßDƒõX±b%O>ù"/½ô4«W˸qϲmÛNfÏž Æ:ŽÒŠÒpc#Ýœ«/µë!Ê…t¢u˜€C—g-WuGÒõ¹Ä' :Þ{ïg¦Oh·ÏÂ…›9vìõQ&g;Òê†rœzë³GáWM gÕð vÿmäb]ë0µ ËE}UÿÌ»ª¯fÀd€î]ôLNI têt-[ < ÂŒp¦.£,cæ‰rÃï5jè•.ÏÁ&hº:ÇÅÅqøðaÌfe* ‹ÅB~~>ññöKà$$$ЩS'RR”®I#FŒ ;;ÛÖm®:Rgv´q¾›o¦°¤®q]ý]!üÄÕ$Ý¥4S5;†^µçs ±gõ:jD1¢}ûv”8o¹¥3K–üÀùó0 dfÎ%*ª6Ó§LÓ¦­4è~¶mÛ‰Á '¢¸˜%%Ôƒ²—ªˆJ@.6„BÓuR¥¶"iº<÷¤ìnÏ ´ Ô4YøðÃuŒ™Á/¿ìg۶üòÊ÷<8j!‘À9à´A ¿&½2¾ð(ë^YQŽÝž×:v{ÖÎrçrRé’)fvguˆBÏÒúšôÂu}-L&6̈Åuë^dëVhÚ½ѵá²^YEÀSÚnÏk»=o‘É®‚UÐßF‘ššÊ¼yóX¼x1qqqvÝœî¸ãþúë/:ÀŠ+hÓ¦ C`uñõ¥FµѸVc~/¬à»þÀz"‘tjÚÉßEÂÊ8Yª­½«Q.d3]‡Þ@U \2[(,,æÞ{»’Ò €S§Î’”Ô‚K—.s÷ÝéüñÇŸ´k—ÄæÍËèÒ¥&“‰S'N‰ÒÝ´T°+©´ö •õBÚx¹¥Ës²ÒU^ ¿î.¦Uµ€h`áÙté2ÞåÍÉ™„—˜± ´"õï  ×¬—õʸvoq»Ô‘v§5H%üЧÖWkÚm–\~øÕ:\º¯½VDa! ì ûWÀ´gᣗ`Íl¸:,z*4._;¼WÂohª®Î³fÍbÔ¨QLž<™èèhæÌ™À„ ˆ%==š5k2sæLî¼óN, 111,\¸ÐÏ%÷¿öÛ³íh`Mpµ.›u&Üîï¢ácîN’]œ­¡—¼À ½%ÀY¬:·(Ëè /sÕUM¸á†«øí·}<ûìûŒ7Œ¹s—ѦÍí4lXS§Î`6+Aש;³UÅÚ… {àA·gJø­Yb¦¥7C˜ÉÀ1\×–®PZœz¤Áž|8t Lf0èášRÑ8žqÙíYí’¹%ìƒf¦gõïŒt{A@íò ãü´züƒþýïbvï¶ >|^éæ¼%žxÖl.}Ý ”u= @vçÛ"èn×í9®ûz¤íöìøœð·  ¾IIIlذÁiûĉíßzë­lÞ¼Ùi¿ê¬Cã,ݵÔß۱X,¬?°žÑ©£ý]!|¬ŒÐ Î38ç)wš-ô^B™PÄ`‹né aað¿L¸d̜܈O>YÅ!׳hÑ“$%§¨èo¿=Çö>ÇŽðRè• Žê-M㪎õ% Z+‘§á”ઽ¡s %ìFÕQþÔ –üƒ»Â˜' NMøzLýN˜• moð+‚Ÿ¦§Žc}µ6ï6Ã:–ÝE}Õ5Ͱs§‹Z5‡¦ á\èñ0$DCÆýЮ üš¯~ç ®Ùó±øn—:JÃ/ØO&§~/÷H‚¦«³¸2u`墳œ¿|ÞßEàÏ“Rp¡€nñÝü]!|¨œÐ{6Ï>ô®VB¯6 ‚ó”†Þ–-àÏðÃaù7ðW.tºŒF=‘‘á¬\¹Q£fpéR ‡ÏdìØ[íÞËÄ"-½¢*¹ç v](ÇüBùc~]Y³"Âá§ÿƒo…E/@ïNp}2Ly>¯t‡¾\Ù¯â—K©ý3µÝžÕ5Á¥Û³åÂ[±«¤îêkm ¶ÒƒCÇàB!LúêGÀºq0¬´k _¿Ž‡p£²æoE”¹Ô‘­Û³¶.9LX)‚ßjBàj{Áv?—D±.:tÜØüFE)çÄw6¯ôbÕz•õ ”Ð{¥k³^%%0óChÑ¢ôùFàóO¡¤ÄÌÖ­W—%K6qÕUOP·î#LŸþa= Qoc>S»þj"8—Or‡½zRÿ¿«áW3ÖWÕÊùU ¼á€ÑÅ%P«&œ< Ï QÆjÝw34Š†Â ¾EIøÁ+ —õUÊY­¯šü]Õ×:@Px Þ™ ‹WÁ˜!*Â~¿Øhxà:(®D’ðü|ÚÕù—_~!33½^Ï-·Ü 7Üà˯ÖR¦`ÐøýèïÜÐÜÿÿÝ×XOûÆí‰ŽˆöwQ„ð17ãzµ©š–Þ@ ½ÅÀi”I|š6„c§ çÍÎûµIf±pì?xšB³r+Þ ƒ¨c2{|×U ½jÖmá°ÑF&¶*u™õwì»Pæb[+´Yä9½A¹t@x‰2Æý„uyô8ý™ hZöœ©øgT”t{ÁËḫd}­‡2©Ük³”DZQ®÷k­,ƒTe/u$ÝžÏZ|ß}÷]† ÆÉ“'9vìÆ ã½÷ÞóÕÇW{Æ’$Ì’Fëò×I7gQ”3™•šn8ôBi×0³bÁåb8qÂy¿¢"8}ZéÆ\×l¡ Ðhh¶ç'ÇÐëÔÚ ¥K`Ø‘ ö7C4-I걓h÷O…Å ËzëýC¶ó>GNÁö<ßµ2T¼åì[¢¤UJø‹›–_7õÕÕ_~€†Özøn—ë}–ò%õl©#Ç^*©cþä³à;kÖ,²³³™:u*Ó¦M#;;›™3gúêãоQ{¶øfçcŽ‘s"GÖï p{öì¡K—.$''Ó¹sgvîÜér¿åË—“’’BRRƒæÜ¹s¶çôz=:t S§NtêÔ‰õë×ûªøăЫéÞ¨¡Àb€0ël ƒnQºuNý§ó~³?… •ÙpÁ¨ØÌ¶®Bo³dÍêNNB3ôJ}¬(Ç.ÏÖmêÝÝ]H—¥  7+ÙO| ¹‡KŸ;_NµN¾S‰÷®,Â/hÖøÅúoõ^Š¥°Ð³éR½ÉEøMÀewgwÂP†ÑÔ0CÆfø"[™€Àl†wWÃ/yqÁ®d©#í6ák> ¾ÑÑÑÔ¯_ßö¸^½zDGK7W_jßHYÒÈb¹ÂÚ~…6Pfæ–ßÀ–žžÎ˜1cÈÉÉá¹çžcÔ¨QNûœ?žGy„¥K—²{÷nbcc™4i’Ý>ëÖ­cóæÍlÞ¼™®]«ÛÍw'7ͲEÞ½ÙŽ’cÁh€}¡Y#˜ü6¤?¿n‚ìÍðÌsðøSÊÅGe*sz»G`÷ßî(4î–ÔÇ+á0Ù•zìhÇ^F(Ù‡NÀÕ£¡ï+0ìmh2VfC”Ù÷ª”~Õî™~m{ì1ö“ºèmá×n>…'½4¢€H Ü7Ú¾ ÃçAË×áÙo•ɰ"Ê{”~Ï.±î© ¿Õ·Ž¯ÿ-þý÷ßÙºu+½zõbÔ¨Q¬]»–5kÖðÐCÑ»woo¼ÐhÛ¨-§ŠNqäü¿–cÝuÄEÅï×r÷ ÈÊÊbĈ 4ˆ›k¿ØÇwß}Gjj*IIIŒ;–ŒŒ »}ü}£Å\Mp£)r€ IDAT¡™½Y›pƒ!ôafØuJL0kÜÑ’[À§ŸÁ Ý!í˜6 ¨_Þ›¹á*ôÚº8ƒ‹©wÓÜü:¤>V–öxpq!­QÙîΪh ¡êX`u6,[º"¨o©š ìÊ(3üªll$üž9Sþ@l©‹¾¢ ¿Úá,‰Öy< C©—õ€ýðÍ8vZYZ,Šª[[»ÌnϹ¸¿P]ëX ðú°“»ï¾ušC‹ÅÂÏ?ÿlû]§ÓñÖ[oy»ªmöì8¶ƒ¦ušú­ëó×Ó5^în²дiSôÖÁk:ŽøøxòóóIL,½DÌÏÏ'>¾ôFBB‡Æl6Û^Û³gOÌf3·Ür “&M¢fM÷þÆOLLŒÝ¶áÇ3|øðªüz>PÖ .+(C/(Ý5/1µàøø÷À¤™!D§ƒpÔ­äû» ½Í[{U.Ç÷žŒŒ §‹ÞÓ§O{üzÔÇЩ‹Ú‰®¬c~£² !O9Ør•õA+3Á•#=J÷þZ @2ÇÔÞÍv“ñ¨“]õÔNvåøß+´&ã)«.z2üNê¢/i†(hê«–‹Mvt(7ž"À«uR;. ºko*å=—@Ô ìë“:éUhձЏÒscex=øîß¿ßÛ!<”X7‘c; vÐ;Ñ?­í&³‰-G¶08e°_>_T-ãÚòóóiÞ¼9/^d̘1<ûì³üë_ÿr»ÿ´iÓHMM­êbúX9¡wK^P†^P.ìcÌpö¢òXzõ@“+¸°(3ô&8ì¨î$\]¤fgg“–Vµ;UYC£. (  ¸˜í¹Üð« ó²êbÆ ݼªâ¤.V•4àSåï}¶ÙsJ7 ·á×VÇ$ü:òÕ¹Q˧ÃN6mÚÄo¼ÁäÉ“ùí·ß|ùÑ0è ´nКÇvø­ žü“Â’B®irMù; ¿‰‹‹³Ý¥‡†ãl€øøxòòJO=û÷ï·»Þ¼ysj֬ɣ>ÊÚµk}ô ü¥b¡×ßëôCYúAûs¹œ×€ºe\c=”ncMQ&ù©Jv¡WMÁÚ ‰¢°u]uÃb¤>^)Ç.χk 'ÊEiOe yo —_ÊT¼.V„ÛnÏ+)ý#d·Æ¯ö_YçW%uÑR£Z_­Ý½uô(öõð0ž×Å•(õ̩۳ÚõYº=ûÏ‚ïÇÌ!C8vì 2„O>ùÄW/¬Ú6lë×à»õ¨RÁ;6‘57Y£FHMMeÞ¼y,^¼˜¸¸8»®\}úô!;;›œœf̘a»{wúôi.^TšÍf3_~ùeˆßµv·h½õ9¡7ÿ…ÞC(ëòêPºþ¨'ƒã”.[T#J÷±pªn¬”ãJE6jèuºÒ ݰ«%õ±*8+i¥á×z\©ÇžõÚÚg¡¬ìª.VAl›+ ¿Ž¿WORý%M ¿ ¸¼YUUõõ`¾.ZPꢧáW­gváW;©ÜÙ%¸_îH»Mxƒ¯––cúôédeeÙº’¼ôÒKôêÕ‹Ñ£Gûª%ø.ß½Ü6ÆÚ×¶ÝJlXÔlàóÏ3kÖ,FÅäÉ“‰ŽŽfΜ9L˜0ØØXÒÓÓ©S§³gÏfÀ€”””о}{æÎ À®]»HOOG§ÓQRRBZZ|ð?¿’¹ ½Ö“X€…ÞcÖì?ê_Ê…öJ—"ò«Ë(´k8ª¡×ÖÚ ökµ†.©UAí«9fól]›½sì_QÖøÁªpÔú¯»ºxei–ª"c~¯œÔE_Óo×d¡íàÜ}5vw‡®¤¾ªÓ¾†£„#ǺxÏë¢]9´ÝžÕ~ÏqâD»Çýúõ£_¿~NûÝpà lÝêØòŠ*zaL¯ÚÒ«½Ð¥s˜õù ø>üjÙíÕþµëâ\}H}¬*Ú —¦\|ö\b{Ö×áWm]*«.^¦òKƒ¹âø}< ¿PÝÇ#ª¤.ú‹:Lác¼~Í(-¼aÛ (a©„ŠÕE—áW»1!ÏzN×ãêÕí¢*ù,ø^uÕU¼ôÒK¤§§c±Xøä“O¸úê«}õñÂJ;³³_‚ïÑ­Œè0ÂçŸ+„w_èUpÝEÙ€r±}ÿ_»®Î‰?N¡W½‰&¢¢:b«³Qƒü~Ë«‹çQÆÓW¥Š‡_PꙄ_áoÞ ¿†2¶—X?¢"7¡œÂoÖÙ¯(íæ”¨mýU°Z×Ôm¢ªø,øÎš5‹qãÆÙÆ1ôîÝ›>úÈW/¬ZÖmI¤1’;¸­Õm>ýì“…'ùëì_Òâ+BDð†^Pîn»¢NÌ쳓nÆg9¶öVÓ–^ámÖ Í2¯z(z+üº› ]­£Ž-PU¥báì/È%ü _ÒSØŠ·ÂoyçÅÊÔÅ2ï*Ñú=Üv–zVU|rmc2™x÷ÝwùòË/}ñq¢ zž”†)~™àjëëÄV|EЫxèÍD9EBèåoÂþ·¥… *¿ï•Pp³Í»&`ÇÙy…¨ Ç‹h5ü&”®JiøÕ^£z#üš(».ÖñÂgª<¿àÜ%áWøSÕ‡_¥]žUÚºY‰R:•£HYŽ©™ö‰<¬ÃyÊZVLêYUðIð5 ¬^½ºü…O´iØÆ?Á÷èV"Œ\]_º¸‹`ü¡·¥3Ɔ¡\p«'w3î»{ù‚]7g§Ö^•6ôÊÅ€¨*ip h/¤½~ë'p®‹—­ÿúâ"M¯.ša ü_²{¶²á78 RZÍ(çE Pã JìXŽD”¿+Íò4Ôºf×ú+á·ªù¬7[ß¾}yýõ×y衇¨]»¶m{T”Ûv}á%m¶eYÎ2ŸÏì¼õèVÚ5j‡QïËN”BT¥à½ ŒQROòÅ”ÞÍådߨe²[¥H»®Q"Hgá=­¾Úðk= ½~kÑ(3©;ÖE#ÊzÙ®˜Q®íÕp|¥ËŠIøÏq†qÍý*˜í¹&J‹ï9œëb8ÊMª+¥-G&õl%šð‹²´˜„ß*ç³òÚk¯ðÊ+¯Ø¶ét:L&“¯Š ¬Ú6lËÙKgùëì_ÄEÇùìs·ÙJjSY«N«À ½%(w©-(wª#(ÿ"¸¦õç¢õµ”0ì꽉@³d”Å­k5Jk¯ðWÑ.¯º=ײþ\@¹V7¢„awÎ[÷5¡tÉ4:¨c¹²ñÀ~EàsWo)m)µªLø­cý¹@iËoYu±2—KtœñY»¶_¢»ð«nå³àk6»2.|­m£Ò™}|‹MÅì8¶ƒ¯yÐ'Ÿ'DÕ ÌÐkAi)ºD†At 8rÂõmöì"X Àþ¢æÛÞ8„^éâ,¼ÎÃðkåínÏj.ËEà,ð«à¹ÿŸ½3oªJÿÿ;I ]h)KËÚÊR @ HYEE\·Š(Ê :Î(óŸŠ|QGqøŠ(Š£¸án8¨ UT¶i²Z6i tKr~ÜÜô&MÚ´MÛž÷ë•W››{Ož´yÎ=Ÿó<ç9½ c(¬Îƒ?o†ìSÐZ¹®O¬)Ù¸~&¿BàáÅo#„ešË:¾«µM{öÅëB%;<½r¦@åxXû«ûܤz´òì¤AsNsssY»v-&“‰#F×o/8èÕ…°à02ó2¹¼ûå òžYDz(³•‘Ü^ ÒM ÷V7Ñ{r™k©fƒèýžú­{Gª£ æ] wÑÄïï‡!íÈ8 mê8®Oô%¼•D¯¾®7ÅÛÖE kÁT#~Q¤ì†+xå ›à¦Îð†ä©‹ÛÁw#¡ËrM·ðr}M0N؉ø*į^Ý!ýµÕQu(´(q)k‚Cñ~®Vüî¡"*‡Š}ÉH£‰ø­ 6&zÿý÷0`K—.åã?fàÀ,Y²¤¡Þ^0`6™éݶa+;ëû·ëß`ï)uÃ=Ê¢÷(ð‡IàÁC#`úšèèßþsà8'©$zCÜŠèOYŽc‘ñÚwsšèKÐ&iFk¿r1^¶ãª¬@©‚»=¼aÇPÓ^‹r<òñ¾U’/8º5V¡õmξNï÷NæPÑOê?·¸=„úÂÓ½`ck2œþÊ(¢ùl}ù« 8nÖêfôîçu"3¹®v'Mßê™Îé%h"w•ãÀJ\}N?ñ·m ÂkÀ¿ëá½4XÄwÖ¬Ylܸ‘®]»°oß>ÆŒÃĉÊÁ@RLRƒ ßߎüF|Ëx¢Bk¡ Ô„ªR›Ñn8ú ¨D¯Ž Ex•‚'î€'Ã-–Í·„KzÀYõ`Hñ(zõAŠSô BCã¥pŽ3…Òù]©Uc]Ò8‘ßæB[ aùa0›ÀîP»åh“d!ªöÛ“¹,ÕÐ×"B "¿úk‚P¸oMæÀ¸/·C8ŽÈ¡Þ"¿'MÐ* VL†”N°fÌùÖì…üR­îFž£^#¿úGúúƒ*GGå@äkŽ %òë &|ÃÃâ K—.„‡×g½PIÑI,Û¾¬Á*;oùc‹¤9 M„À½ Er” B›Áý`Ìyšðµy)Ÿàíxcâ»è•h¯Ðxªžêsîâè”ݰiÏA@3|°.ˆ®8^bƒäoµßcÚÀGaH ´†U?Á™b(RµßØ«øÕCgUŠ_Ôg¡~ñ¶/·Aü¬ªñ[+xw‚&zŸûù šA¹‚,P® Oi“R=´áIü&d9î“9Tˆ_ý§^ËEü&#¾V5 –ê|å•W2sæLöïßOnn.³fÍbܸqœá2¨âg#§=›€æ 솗vi‚`Î6­_èÒJÊà§Oà—Oá³×àȸ~,œ2i©ÒµEO{v¦cºMþUöl<&õ‰ûRCÚóhê%í¹Ìñs\ØrH½¡Í´Éç–×AûÝ®ÀlÖ–!xš—6ºÓ**²ÓKà` Ì¢ÂïVá2á·´´ç-ˆ¯UMƒE|Ÿzê)fÏžír|öìÙ²­Q#`¬ìU¿©…œúƒ¼Óy"|…§¢×±Þ¦!D/TLP+Q°ë4oß3^‡èpxàˆ …µÙpÏ'd‚к,ðó#ÕŠ^çècÛOwñ! —8ÄoNE娕 [ðªÚDØôÿÂÿÛ ÑÍ!Û1+v æü†Ü%< æÍ„ÏWÂñòŠíÎ|Ùò̯‘_ý‰ü †·í~6UN{Æ¿¯t?:~^û¢ZÀ©bè«e_4…EÏAÏH_Ï.€cg ÍsôѸ¯{7»K˜:éQ`ô r å5àÃçÜ‘íŒÎQâZÆNf^&Wô¸¢^ßkë‘­€¶™ˆ^Ç>E %z¡¢@ME›=þð˜q³&|Oœ†§?‚'¿ƒf(.‡3DÙ£¢³ÇêÍ ¸Š^—m‹<¥8 BCãií >Ž×Dž>gl¿Æ¾ >úÚZÁ@±Ž¸V+\9Êõü-Ûáò4°Ú`ȰpŠÏØùmK1Í-eÓöï® "~…ÀÅËz_¨Vüv£ö[†¼ôì: §K4kXà×/!ÂQj}ĸúRH¹¬ê ì+©¸w—úº‹`—*Ð"~}¢A·3³ÉLŸè> Rà*3?“ Z5TíKA¨ žD¯á˜›è=˜U‘iäOÑ[†#9Ø JlU„¡‰×fŽs¬6Ø ±íà‚áþñ0¢ÁÜO ¨X‡ÚkÍ©ŒéŸµ½rÓã@*DÛ¦ŠÈ¯ÎMü’¥}סnƒéê¢bÍ®8í(jõG¾Y(-…«î‚ŽCùe}ññÚâ‡Í›Ïpå»9qÔJ«Z$ÛéŸ)j(~A¶;ê—ª²5 â×qãÖů~¯¿šÑ²«žú£µu½¿n…y³*D¯Nß^0þrøÏ7hé^ðTÓÊ]ãˆwÒ/êâ×ý¾*@¾»víâŽ;îàØ±c´lÙ’·Þz‹>}úx=?--·ß~›ÂÂB"##ÐÒ¦ARLyõþ>yô‰îƒÅ\Ó¹eA¨Oª‰ò²I[·Ö¢÷4Ú¾¼]»FrõÕÝ8|ø4Ÿ~º›R¥ˆ²*-=Ñ-" à$ì9 ‰ß.²r09*=·F›}tÑ«¯tÙ§×ãš^½B Rñ‹6íä( ³ g6t½Ò­xUþõŒHÕú„eßÀÃðíw]œ¢`àÀ0æ¿Ëõ×ï¥ZúsMÑÓ1WA Ä/È^¿BýSø½f“cM¬ÆˆÕ`H{®¿F M6ïʯ8f·C‚—•„ ñ ÌT)|uª¿úë£uñ«ÌÉ1ø 1ãÎu¿kRÂwÊ”)Ü{ï½Ü~ûí,]º”´´4Ö¯_ïñÜe˖ѬY³©XÜTIŠNâ£Ì°+;fSý%Efæg’Toí BÍ©ªøŠãçoŽu|õ,zËÑDï_þ2矿³Yë³²³ ¹àü)Ú„¸ÑsõqÇÇϷל WPáƒoàˆnëãœ-†‡Žq töÓd"¾û÷ï§C‡˜ÍšV7™LÄÅÅ‘››KB‚ëÚÑ{çž{Ž-¼-¯àÁ$**ÊåØÄ‰™8q¢ÿŒPŒ•»¶êZÍÙµcÿÉý•IÄ·X²d K–,q9VXXØHÖ žD¯áçÉgÅföà½ú¶u½v Ðb¦L)®—BRRg^Yð#.lO³f•—Œ h³Á´Aj˜ãˆ¸‹^ç:^}M¯Ëz^Ñ+4-Ü#¿P)ú;Ê1u[C¨SŸ‘ß   lZ&I9pì˜?.àæ›[»œûÒKù˜Íâ|+ (°˜Áf' ß¶D«ù5܉ü ˆ»Ï£¿h‘_Ãr½HNmüÕ„6”—ÃE×èáЫ»ÎÚ£-OAó¹“ÀC%3{ö`‚)/·ñÿ·•¿ýíg‚q½ß{ŠüBEôW½Rê39Úçt®út_wçŠ6áë+‹-"..Ž‘#G:£½UE}çÎËÀʼ€"62–ˆfdæerUÏ«êå=ô5ĺÈO8›7ofР³¿cóL D¯cË"Š^Ðfv 2³nÍÿ0dˆ¶ûü¾}Gùï³PJUZš±kWÐ4Rsj&zßA½BSÂ[ ¥ƒH\+>Ó°â´w3Ç£Üii9äæ–qÓM­(.V¼þúQþõ¯<•ַ(à„ Î(èÓ»3¡aÍØ¾ý %åXìvZQý`Q᏷:ò €#U½Â?â Pv-…ù—_à—õ€M[– O(1Aÿ¾­yþùaÎûp°…¿þ5…o¾Éeõªƒ”šL(¥h® Wñ žp¥Ôg'Z¦­s®äƒp®øa“¾±±±>|»ÝŽÙlF)Enn.qqq.çýðì]»–åË—;%''óù矓œ,Ûc1™Lõ^Ù93/“ÍZ×2®ú“¡Þ0Š^iwz+}y?ˆ^…V©Yßܾ9Pj13õÞ‹¢àÖ[‡ñî»ëøì³=\{mwçñ²2O?½ž‹‰ ©Š„ï¢×“à…³ýF+œmx‹"9‘T*zå:µ¡¥‚¥ŠÿùŸC̘qЊ`µP[©œJL&^ú¿I¼ð—ìÜu˜1cÂW_­çXqQv{µÑ_} @į`×øB¥íò"©ñkÂp;ZÊ—6‹‰ëoèViÒ{ÍšCüøã‚šsùØ~œ>]ʪUÛ(1™hi³WTu¦B»ãRu=›Šró£–9îÉ:ç–6…@111 8wÞy€¥K—[)ÍùÝwß%77—½{÷²wï^~ÿýw½^HŠIªWᛑ¯Ut®ÏâYBý°k×.†Nbb"©©©lÛ¶ÍãyË—/§wïÞôìÙ“ë®»Ž¢¢¢JçÌœ9³ÙÌï¿ÿ^ßf{À¸®ÅC”×]ô®®›è-ùAŽD„a mÎQ Üfgøðî.ç_ziãÇàÆ¿âþûWóõ×ûX¼xC†,aÝO‡·©€ØšÈEï¥DïDôÖ³ÇÏ&¼e-èë~'¸®!pÍ¯Ž¾ïo´]«úÞhk«¨B«€Ò 3úÓÞ?‹ÅÂÎo°|ùÿò wÛ›ÝÎq“‰Ché›V¯ïVÑg:×üêâW_óë\o®k ›Îš_ñǦŒ§{‘cÝ~俯ù­PPPêrìÔ©r&Lø†aúsøð‹,[ög¾ùæ!vî|šö¢(²hãélÃCgãñ=®·¸DÓx^÷ ®>×tü°¶4)5²páB.\Hbb"sæÌáÍ7ß´ŽcáÂ…¯‘ªÎU“ÄöüíØ•‡©(? …­š.zõ¬¬,f̘AZZZ¥sN:ÅäÉ“ùüóÏÙ¹s';vdöìÙ.ç¬_¿ž7Ò¥K—†1܉±˜ƒþÜðÓ=µÙ10KwTb]MÍD¯BËf<X,fÚ´iÉ×_Ï¥°p……«ø÷¿Ål6±cÇa—ëÌf3}ôgzõêÀ«¯naìØOIKû†¬ßÒZù¶Æ®±ð*zGa½ ¢·n4}_<[1¢õ4†cƒ*‹ßL{‚¶¦0ןJ­v;òóÏ;yñÅ{èÚµ=Û¶í#6ö6vì8@LLkÆ»ˆöíÛbE¿¥ÞC§Jñ›ƒÛ ššø<ð$€'5¸ø ²*¿•å"~—,ÙEaa)o½uQQ+|»u‹á¥ù·Pl³S‚–©Q„¶.®BXŸÇÿžŠzs³ÐD¯×I(¦á‡µ¥É¤:ôìÙ“uëÖU:>kÖ,¯×ØlµØý"):‰bk1{ öÒ­u·ê/¨veg[þ6þÔïO~mW¨ô*ê«Viyj&L`Ú´idgg»dY¬X±‚Ò³gO¦NÊe—]Æœ9s8sæ ÷ß?K—.eĈ ø |\Ïk¨ÜLŽ6H3ja_±'-JýÍfçãŸfĈš53sçWñÆ_ðÒK+™<ùB:vlå¼~Û¶CìØq˜P«"mØbo¼ôæ´uCÕ¡g4W½)’Úì/š¾/ž ¸¯!tK}Ö·NIVVN£tÇSꢿ¶OsǘM&~ÿ]KÍ3FóÍ¡Cà±Çîá’KR¹ùæ¿óÇGéØ1†cÇ 9^ZF8‘ã*í-ÑÖvÒŸ_ ãø»¸m3àé–âgFßMü‚k^ƒøèVÂŽ¥ ñ¸VSö†¯ã‡pàøÉ2.ºð3žyv(C†´cÅŠ\ÛÛºÒù—_®’N8–|†„St¦Ìùz•‹a}1Á¸íPQôʈÃ.ž?Ö†&%|ÿc¬ììoá»·`/ÅÖb‰ø6A|­¢î¾Î>>>Þe-þ#<ÂÔ©Séܹ³Oï[·*ëUÍXº ^ð›èUÀ ‹…ޱíÙ—sˆV­"ˆˆç‚ */¯ø÷¿¥OŸ›IIyœ¼Œ>}:ñóÏ»yùåïRÚM°±Ópô(®þ{UŒÆ±]‘q=¯ˆÞJÔ¥ÂzÓôÅsoâ×—ê± TtIúOãÔ}Ëcš+Å÷ßoàÀ£ØíŠÓ§Kèׯwß=¾}¯'%¥«W¿M¯^ fÞ¼·yì±y˜©X+ìŽÑÞÑ ~ëºÛAcø£øb}ã.~“{ å5Œh,Rç‹/ú2ŽZÙ»¶på•ÿqoÓ&«ÕFPën‹kÁ¿»&_ÅgŸ¥sôè LŽâWE 'l6Úã:!åbK%ñ N ¬ÿ=<¤ôô¼v4Æî#"|Ïq:Et"²y$™y™\xµ_ÛvVt–­ŒÎZªZJ°råJrss™?¾óXuûj׮ʺ{:Ž—µ¼PåÍÆ¹]QME¯íÞgGÛ;× ”Úl¬øzjêç IDATýû#6¶=……•×rtêÍf§0¿ˆÇ[†Ý®²˜in³EàˆÞÑŽ»Ó)m„®ïÑ+E¬¼ÒÖÃÏu<‰_ý8•«Ç&@'CÑ+w •}¯>Äop¬à4ÁÁæÌù„nÅbæê«/âÕW?à‹/^¡eËíüˆp}ô>vïÎeÉ{_nµy­Châ·¡v;ð§?Š/65¿Àà ¡XãwÞñŒ&~ËÚdú±c§y矹óÎ \Î}üñϹè¢23÷rìØ ÂÂBx晘0ábNœ8ÅË/Èüùðš_7w´_Éwñ›`ø˜ñ9Çôƒ‘º¢Â/¡®¾Ù»ˆð=Ç1™L$E×O«ÌüL¢B¢èÑÑïm õ‹¯UÔãââX¹²¢;Ý·oŸs6|õêÕlÞ¼™®]µ=¢8ÀW\Ák¯½Æ•W^YKË {fVÂåõ"xõßk!zÚvDgÌfìJÌɲ2Ì&©ƒû‘˜Ø›ÍŽÝn''ç0k×þ—‹.r¬¼óÎ Z¡¥2Û³ÍÅ«Œ¢7‡°5âž •€[åf½ˆ•½u%p}QðLuâMüÆ£u:@'GÿÔ m0­‹]w‘ïåx] ZÛ…ÊÆk¯ý‡}ûþà?Ž‘™¹‡qãF9E¯‘Ûn»šÅ‹?%0kÃIeµ¦”K¸JñÛ šRÚ³øãÙŒoâW§“»#:NéDÍ+¸ë[é”™àcÇan¼q0gΔñÒKßqøp!O?}“&ý¥K—¾Àe—  ¼ÜÊO?ý@dËÊÊÊ9Y\B˜ÉDK¥Éô*~õN§®YqàèxÜ÷6îý«>Z`€úªìœ‘—ARt’k‚øZE}̘1lÞ¼™¬,mÁÚ‚ œ³wO?ý4pVXïܹ3+V¬ðÃÝÑ«WkÖ¸èQ^½ˆU-"½gÐ I<ôשüñG&%%X»öKZD´p¦½±uënzõêÂĉóŸÿ¬Ãn·SZZÆ[o}Å_œK˜ÉDŽu¼x^×ÐT½‰T¨Ò£ )x©Ü¬c,ôM冈¶/ ž©ÆÜ+>ëÕsů:…h!óKúãbª_‚P‚h¥E‰~ø~ ååVÞÿ?”—[±Ù<¿üâ‹ÕY‹hÁäÉ·ñÈ#÷Ó£WwNnç ^ec¨2»…v0üX…vÄÏvÆÝÈž=Z%Ô+¯|ˆˆˆ0ÊË­”””a1™ˆ®&Å´¡ñ(zõ\g÷eÿúØ.ÞðÜEôzÚ6NDo]i:¾(Tà)z.kE¯ô>JÿÝчurœ‚‡´ÊúJ{naµQˆAÚµ+‡íÛ÷rôhmÛVä+++ã•W–Э[W~üq9mÛ¶`öìÿᡇcîÜ…„¢ 2õ >÷îÑÆÈ/ÐT"¿âçîûþNrÍÖMÕÇn÷ËN«at-÷î6¡½] ›Ý¹}X°MQ`1³x±¶¸U«Hg`é‹/Ö°mÛ6nüŒAƒ´º:üÁœ9¯c·Û9ÿ‚Tš5 fÍš_(þc³qŽm¶õâs!nŸ\‹è ~TD¾ÜC…o ?õ†_¤è$J¬%ì-ÜK÷ÖÝ«¿À¬v+;Žî`ò€É~iOhx|­¢>nÜ8ÆWm{ú¾ÚþÃC+wÑk¼ŽÈou¢·­X&HM=cÇŽ“•µ ¬6îºë–JVÜw_³f=ÇWÜÃÛo?Ëòå¯2vì=üñÇQŠŠÎzD¥‰ˆÞnT¹Ž9+@Þãø)ÑÝú$ð}QðŒ»/l¢’¯¤¼¦¥ÆS16ö[:5 ø5¡-Ç8aµQTt³ÙÌe—MâÕWg‘šÚŸüüãÜtÓ_(//ç™gsŠ^ЖOÝ|óx^~ùß// Èb¡¹ÍF„›½«hšâWüñ\Âø=tˆßÄ–^ʽ"C$º‹_7·®3®)С6;éé[1™`óæíäæ&.®«VýJïÞÝœ¢W)Åõ×OÃb "+ëGzôÐnÞâÊ+oeǶ|kµq ðÐHtØ™à¨:ßɘî¼ø ǑGãû©7Dø •ó2ý&|wßM™­ÌÙ¶ ø}ðãe=¯§µ¼Ñ«§6w22bG½Ã†á£Þ¦}ûv¼þú[ÜsÏýWî2ÃÃÃ9ÿü!|ÿ݆ »™Ö­[Òœâ’RÌh”p?}zr)µ©*‰^}Ÿ"§Ðu¯ð˜L ÞÜ!ððä+÷Ó›*D°{xUÊ_€–@K¥8a³±õ÷ r#aa!”—bwLâ~ªË5¿ý¶•Ñ£o !¡+ûÛƒ$$teõê5¼øâÿQXZJ+›ÍOâ×øº Ô7ÆïÚ$œcHÇwÑ] „°»ø…Úûl(ŽqгÙÄM7Íà“Ož\ ¤ýôÓ&þûßm¬\ù¡SôtîÜ‘wÞ™Orò%–˜ÍØìv‚ÍfúÙíŒúëÈÖÅp–A¯Ä­0¸ú§N`Š_¾Zt *$ŠÌüL®éu_ÚÌÌÓÖ ËVF‚ÿñÚ ®kyÁ¥€ÕAƒàÕךyºñœ0á"zn¿}"ûÛ?xÿýe î:Ð+((dÍšŸhnÕ"åÇOŒ&xªƒ­éš¿nTˆÞîÕ™õAw•b×ø\„šãÅ"q"¹íwÔ)»²îFýîýÛP6¥€õL hÕgOÛ·ï":º­óÜ3fÇ/¿¬¡E ­ÄÕÅ䪫Æ2lØHŠÑö­»ø5„†Âx?Ô38Œûvã˜ÈcA¬NÙ{wû²c®;F GÀØìlØI\ÜåtïÞ™;sY¿~ ©©ÉlÚ”AHH—\RyèNÚÓ¼ysBCBxàÁ© ”Âÿû;óæ¾Ì¢"®²Ú1¼§Þ9÷Ö_Ð Ó9‹^5 ñ+ÂW¨—ÊÎy´ kKLxŒßÚתÎ5KmÎFKéù 8†–>Ô ×âRåhéÍFÑ Ð¼ysþüç{xæ™éÖ­ ÷Þ{¡¡¡deífÒ¤°–[i‰¶–ͽrmð$d«Ûe»&7Ó{ð†PQ}#ÖD:"z¡~ñàKúÀùdŽëq]áfÈl- £÷mžöþõÔgÔ4ÕRÇ„kßfJƒ‚˜9óY¾ùæ#š5kF^^>ß~»š7ÞxÕ)zu† IåÒK/!}Õ÷„ÙµbYÆe‘Ù8ý*ÇÜÔ âW,¼‰_ÇÏ”xœkøWj;w82ÏjBÞïÿ‡l6V;wæb±X?þ>ÞzëYÂÂB(++£  Ö­[¹\óì³ó±X,lظ†îݵ–Ç»‚Ûn»™ääaüXtŠ®Þ+*Ö;8 µÌ°å‘c†^oxDø €–îüë_ýÖ^f~¦ìß+ÔÖóV‘Ú¬‹Þ¯L&²•"44”æÍ›s¬°‹…H›ÍÙš€ãÇÝë‘jLœxÿüç <ôÐc<úèÓ´nŇ ¶Xˆ²Ù¨KY8o[ýfçi™mMÚñtžÇÔæj£¼Æc‚ øAn¿orþq`ã>ÀF1ëMØúrޝ˜æV+k×®cРÑLz'%%¥šyÝ<÷D=zt'}õ°»V‰> ¬bK ‹>©«ùJâWÇSQAhhª¿hXºwV:¢¦5¿î¾j|tÔšÅf³Q˜wŒ1cî$,,¥óç¿Éã?ärýo,aÒ¤Ûœ¢W§k×.Üu×,˜¿®V+{&çqÀQàÇ'»Ê˜úl\÷›S‘þíþ·*2öþáûÀψð­ÀÕâßû­²sF^w½Ø– ‚“98•®§Ôf/E¬>ñÆ«/sË-¢Y³f¤§ÿÈí·¥ñÇ¡C´¶Z;vòÃéŒéš"´`ÁëN‘[r¦˜Â3ÅD¡6[¶$2Ýguœ݇’ž†–•öÞõ†.tõÔæwÁkü]¢¼‚Ð0x‰þů#ˆ8‹ÐuZe„⺇(x.Ð u¿‘hû‘ïØ–ÅÔ©`±Xøá‡µ\t‘kÿ©”båÊïÀju+¾0›)páG¾%ðV&$;=ñkHNÁ+á\Æ“øç÷2­²a{„qÒ¾ <íëíiŸïKц@{l6€²3%O<ñ<Ç2iÒÍóÞ{K)(8Abbï׫WOÊ ¢wšPü2(ˆãß}ÇbáS›¿•Àh÷ÔçíId<æŸ"|úD÷¡ÔVÊž‚=ôlÓ³Nm•ZKÙu|Ó‡L÷“u‚àÀØÓ»¥6ÿçx(6³Ûl!vîêòÔS ik`G-«|é(ÇO£3}Y÷c·µ r¼‹_pŒa ÇÃÑ yŽ;Ë.»˜óÎȦMÿåÛo¿'ÄdrNð—eV+3f<ì½:ãÆ]EîÝøe÷}·5º–@Á*X?–A‰ šYàîa0ï¯`rF1lƒÔðˆðGeçÿTvÎÈË C‹´míËf͚œO>‰ÉŒR ›ÍFB×®X,9ôéÓ‡¸¸8Ú·oÏ=÷Üãr]RR÷ß?Ï?ÿ<‹¿ÃŒ»¼¾iÓ&vdeáZóP–þìoª½^o7·ŒëÇ<¦yz*ZUÕù‚ 4ž21Ü"IƽDõh°^Ê“¦~ů G ´ÍŽè‘½´Õ‚ °ÙlDEE‘™™ÉرcùòË/1™L´hÑ‚3gÎA¿~ýرco|vœ·ÛÀ™#9µÖ?¿Qü‚T{÷ïÛÒ¨˜¸òD ¯éþ¬ B¨Nü1Qv;ÍôïÖ°vu:&»H¥SÊ9ɯ‡bc;WnÃd".>žßvï!Ød›ÊÁdÕ2ðL&%6ÅK?Â+¿ñÈEVfÿÌfDø ARtëö¯«s;™ù™²¯à7.¾øbÖ®]Kxx87Þx#}ô#GŽdãÆØl6þþ÷¿óÔSO1zôèJ³’cÆŒaΜ9<úèãDDD–v;!!!¬Zõ“îœLs‹…ƒ³úÀ›è­6Ê«¯Éõ*t«KWvG„‚Ðtðù…Ê‘%ƒÖÏz4ØY%çúÂú¿U¡—Ïܽ{7‰‰‰üú민ñƘÍfú÷ïÏ™3gx衇˜={6aaa”••1oÞ<yäºô†»|©ö,âW¼ùï$¼Š_&áœÌ‰Ü¤MjyÚß[¯@µªBüêE=u¼‰ß0ÐÒš½Œtøí·+¹óÎ4—×Nž<ɺŸÖíxû£ÀpŽÁš5kF·nݸ÷Þ{i×® .äéïVóÜÚ`L&°Ù‚èÑ£[·n%(¨a¥¨_ÁIRtoþö&V»• sí¿y\Õó*?Z&œ«ìß¿Ÿôôt’““Yµj6l`Ñ¢EÌœ9“aÆгgObbbÈÊÊòØÆŽ;hmµ2íÏ÷ó—¢Y³fœ:}š– ým6—4 úÀÓ:Þ?ë.xEè ¹ƒÑ¯=D• "²d\_§ A+ž3:˵0«[0©^°™Í;v €½{÷ hKT’““yþùç]Ò?ü0ééé¬X±-a<ï*âWh*x[§^£ÄîKt²5î””TÞß»6ØÌfþ>ã ’JŸ>}())aÊ”û(+-¥ã¼<³™ÐæÍ)))¡C‡ÄÅÅñý÷ßÊ;ï¼Czz:AAAL˜0nݺ±råJ6lØ@hh(ÅÅÅ *~Eø N’b’(³•±ûønzµíU«6ŠË‹Ùs|}£%â+Ô‹/¾«ÕÊܹsiÕªùùù€!ˆ‰‰áàÁƒüøãÜ~ûíÜu×]¤§§3bDÅ6¼ðÜsÄ™L¤)Åq`Wy9Öòr:q~^»ë w‘küÝY©Y¯ µÆ}m¡Ûž¢z1™„×¾eV,§“£èÕ*}:O>ù$?üð]tcÆŒáž{îaÔ¨QìÙ³‡¹ÿú…‡ó¥è€v8Ïí=|Ù¨¦xkÓe;"o­.¥šµ»"zAð„1ÚS±§MZ_¢W„†Š‰¶•Ñ_OÔE»_«¿õ(›÷u&mMàã?ΰaÃ0™LzlK?Õ²ºwu/x%M Ä/T)€Z5ÁÝ_ÇØl¬Ö®úŽ#f3—Ùl\ ÄÎù@) …B{÷î À7ß|ƒÉdâá‡vŠ^©S§òꫯ²aÆšXGDø NbÂchÚ†ÌüL®ãºZµ‘™§Çêݧš3¡zÂÃÃ)..f×®]$&&2xð` À#<ÂW_}Åœ9s8|ø0 àšk®!99™W^y…yóæa2™§Ã7q[iÜšàk>‘·mˆÀ5Ê['Ákú(QQQÎsKKKyõÕW±XLDEyªÒ_Udwp¥o† B@à©VÑ_÷ŠÏ† ­šàÉ×/´rW6®|Í«•¿ž¯[·Ž®]»òÉ'Ÿ`·ÛÁ #&“‰‹.ºˆ;wÖÌÀ:"ÂWpâÊÎùĵŒ#²y#nÒ%œ5,X°€‰'òÄOðÞ{ïa6›Y¼x1—\r IIIL˜0µk×’Í矎Ùl¦¼¼Œ8`G3E¨‰š/r©I¸&çºï±ë~­GÁë­(†DyA¨ ÷è¯[ê3TŽéƒe_ùV7˜Îö.¢ ñ%@)pÚjåõ30w (,däÈ‘<óÌ3 2„ŒŒ {ì1víÚÅM×*/ìÝ‘¨¯ÐÔq/d•Ö¯‡Ûúd–‡bvu¢¿Ç ‹ÖÀN›³ÙÌÌ™3¹ä’K:t(‹-"++‹‹.º¨ÒuÛ¶mÃn·{h±þá+¸ÄÚœµµ¾>3O*: þã†n`Ò¤I|ðÁ8p€)S¦Æ!CX¾|9ï¿÷.±­LÜ2îèdåŽмºhDubÕ] Ö¶w<ÓŒmx»¾Ti±+‚7t±k¿nDª¨kœ€«oƒaã¾ÁÞÎ÷Pø x°6\Õ஺`BMEo•щš ]Oç ‚ xÃÇþBÀú ¹:¼ukÞDou“Іë>þ_(/·2ñøíô蟾g%¤ÆKR$ê+œMøâËúz~ƒ†ª÷ÎõÅßGáYü:ö ~¾ NعàQ;;Zù÷o`2ÙÙ·o)))<øàƒtíÚ•Õ«W;–-Xظq£ŸÉˆð\HŠI¢Ü^ήã»j¼N·¨´ˆœ9ñüÎÁƒ)--eÁ}!Ø¢à‰V‚ó2ŽŽ×#UiNo×T›Fç«ð¬‰@‘+B}RÕöGnáHãy^Hñðš±p–ާ}U<³ÝÎ >y…Êíù”æ,g;U ’}8Ç€/þž}Þ­ÀV+ s<‘\À´gl¼òq.=ôJ)‚‚‚°X,lÛ¶˜˜ßlô"|Œ•k*|·åosiCüIóæÍùËt/è[U‡×Á’·ƒ·ã¾DD¬ ‚Èxê£<›„÷Áð$4±l ÒýÜM•#MžÄqpOov.Q_ál¦ªñFMÇ"“?½ù¼§¥|\ü~þk9ÌM±5¶nƒ±×åѪU«ÚæDø .D‡GMf~&7pC®ÍÌÏÄ„‰ÞѽëÉ:áœÇ×ÁR­#¶¾Ì Ö´MA„¦Œ§;:z¿¸Å˹î‚×þÙ—K÷k*ÙUÕ1¼‚Ps¼ù¼ÑŸ|ñyÇq‡ÿöýúæ@dãˆ^á+x ¶•3ò2Hh•@XpX=X%jœæV ­îu‰ð ‚ ÔNϯF×È_^Ñ+uÃÓ–J:ÕMzávÜñZ#/U07ê» IRt’s?Þš™/Ï&víÚÅðáÃILL$55•mÛ¶yͳÏ>ÛðÆ6a’b’°);íôùš‚â¢o´D|ÏòòòØ´i·Þz+&L`ÿþýdg»Ö²_±b¤gOm¡©S§²dÉL&ááá(¥8qâíÚµóƒuÕE |™¬‰ÐuOAhXÛÁ× Åê"Cuí×ëñEáܦ¦Ao G“Yã«w6«V­´ÎfÚ´idgg“PQñ¦{÷îÎßÍf3çw™™5OÛ=—1Vvö5uY_,ß³ƒýû÷Ó¡CÌfmnÌd2Gnn®‹¿åææç|ÏáDZÛíÎkGMFF­ZµbíÚµU¾ïƒ>è²Á9Àĉ™8q¢Ð¸g IDATãYC¬áq+ø—%K–8½:………>_ßþX½/ ‚;žÖõºSUŸ½¥Š×üÓ׋/ ‚?©›Ï×ÕkC“¾¾v6FNŸ>Ío¼Á3Ï<ãµ]éP*Ó&¬ íÂÛÕ¨ÀUf^&“…Ä6‰õh™P¢C1™LÕž³jÕ*”R<õÔSÜvÛm|ýõ×^Ï;w.¬¢µº~DÔ §{ÊæÍ›4È¿ßGúcõ¾(Uáí»]Õ>¡þœÈôüþâ‹‚P_TåCžý¾¡üÑH“¾5¥¬¬Œ›nº‰1cÆpÍ5×x=O:ÏÔ´²sF~=Úô yPóz´J¨ uéPbcc]f§•R•f°âââX¹r¥óù¾}û\&¨tL&“'OöÓ²¯Â¹E`û£ Ô„¦Ý‹/ Bm¿o2k| ൳(//禛n¢S§NÌ;·¡M=+¨ieç̼LgŠ´Ðô‰‰‰aàÀ¼óÎ;,]º”ØØØJÙcÆŒaóæÍdee°`Á§Ø>räÎs?üðC†ZG˧ó„†"pýQÎ-Ä¡iÓd"¾ÆÎæŽ;îðÚÙX­Vn¾ùfÚ´iÃÂ… ÉÚ¦ORt 6, ÔZêS7#/ƒ©ƒ§6€eBC±páBÒÒÒxúé§iÙ²%o¾ù&3gΤcÇŽL™2…ˆˆ-ZÄøñã±Z­ôë×ŋڧ)S¦`³ÙHLLt¾&BÍ„À@|Qš.MFø‚o͇~ȧŸ~Jrr2 à‚ .ॗ^jLÓ›zeç¬cYôo׿ÊsóNç‘&_"¾g={ödݺu•ŽÏš5Ëåù¸qã7n\¥óÌæÍ›ëÍ>A8—„À@|Qš.MJøúÒÙÜrË-ÜrË- iÖY‰±²suÂWO‰öµ´ ‚ ‚ BCÒdÖø K«ÐVthÑÁ§W™ù™›ƒéÞº{µç ‚ ‚ ‚ 44"|¯øZÙ9#/ƒ^m{l n«AAAj†_Á+¾VvÎÌÏ$)FÖ÷ ‚ ‚ ‚˜ˆð¼’Äž‚=”XK¼ž£”"#/ƒ¾Ñ²¾WAA„ÀD„¯à•¤˜$ìÊÎŽ£;¼žsøÔa K %â+‚ ‚ BÀ"ÂWðJŸè>U¦;gäeRÑYAA„ÀE„¯à•¨(:Etª²ÀUf^&!A!têÚ€– ‚ ‚ ‚ øŽ_¡Jª«ìœ‘ŸAŸè>XÌ–´JAAÁwDø UR]eç̼L’¢e}¯ ‚ ‚ ‹_¡J’¢“È.ÈæLù™J¯)¥ÈÌÏ”õ½‚ ‚ ‚ 4"|…*IŠIB¡›Ù¿?:tÀlÖæÆL&qqqäææ’àŒÝnw^ `³Ù˜?>×^{m•ïûàƒårlâĉLœ8Ññ¬=ðGÝ>œ 40K–,qzu }¾¾1ü±z_„¦‡ø¢ uõÇÚ ÂWð‰ðfátêJf~&Í"ˆ‹&:<º±Í_Š›)¥˜:u*mÚ´á¨òܹsç2pàÀjZl_ ¡ññ4Hݼy3ƒ òëûøÓ«÷EñC¡é!¾(CCù£Iuö3î3gS›zeçŒü ÑÞ@±³±Úm*múBll¬sv´´û 6@\\999Îçûöís™ ˜>}:äÃ?¬‘ õùÙ›Ò÷ª)¶[ŸmŸ‹í‚?ÖÕÇùJ Û'¶ÕžÚÚ×|1Ðÿö:MÁN±Ñ?’"|ýLS?µ¾ŽÊΙy™Î5¿um³:y0ÚTÛô…˜˜È;ï¼ÀÒ¥K‰uIå3f ›7o&++ € ¸ÌÞMŸ>={ö°lÙ2‚‚j–`"¢¬é¶[ŸmŸ‹í‚?Ö4 òD Û'¶ÕžÚÚ×|1Ðÿö:MÁN±Ñ?’MJøÖµ„¼P7’¢“Ør?;í¤o´¬ï=ÛY¸p! .$11‘9sæðæ›o0sæL.\@DD‹-büøñôèуC‡ñØcðÓO?1þ|rrr2d àºë®k´Ï#MñGA Ä¡éS¾>¢—¿ýöÛYºt)iii¬_¿Þ彄üÚµkéÙ³'÷ß?³gÏfΜ9dõÙƒåµ)›Çˆ¯pvѳgOÖ­[Wéø¬Y³\ž7ŽqãÆU:ïüóÏw¦ƒ ‚P7Ä!0_„¦K“‰øú£„¼P7zµí… ­`ƒle$‚ ‚ BS¡ÉD|ý]B¾¤¤€íÛ·ûÕÎÂÂB6oÞ|Ö¶ÙéT'Jl%ìݾ—½ìõK›UQmÖW»M¡Mýû^\\ì·6ý'¬¯ÿ}}¶-íÖÛgK»MÉë“úüúƒ@¶Ol«=FûÎ6_ ô¿½NS°Slô5±±ÞýQ56nܨ]Ž¥¦¦ªÕ«W»{á…Ô”)SœÏOŸ>­,‹²Ùl.ç½ûî» ‡<ÎÉÇ»ï¾[o¾ZÄåq®>Äå!Àxˆ/ÊCó¨/l2_c y³Ù\e ù•+W:Ÿ{*!ZŽwß}—.]ºÚ ŸA›’’öîݢ1cÛÄ…s ñEA Ä!p¨o4)¥T½´\Œ5Š´´4î¸ã>ùäæÌ™S©¸UQQÝ»wgíÚµ$&&2mÚ4¤¸• ‚ ‚ Â9J“¾;wî$--cǎѲeKÞ|óM’’’˜9s&;vdÊ”)|ùå—<òÈ#X­VúõëÇâÅ‹‰ˆˆhdëAAA„Æ I _AAAA¨)Mf;#AAAA¨ g…ðݵkÇ'11‘ÔÔT¶mÛæñ¼åË—Ó»wozöìÉu×]GQQ§OŸfèС¤¤¤œœÌèÑ£Ù½{·³Ý„„"""èÒ¥‹ÇökÒîªU«œ¶6oÞœ®]»2`À ÀÇ\m›FfΜ‰ÙlæË/¿t¶Ù¿RRR<þ-jÛfmí4›ÍôïßßyÝ|Pg;ÝÛ\²dIí,((à–[n!11‘¾}û2eÊ”:ÛYU›µ±sëÖ­Îó @—.]ˆŠŠª“žÚlÓ¦óº.]ºÐ«W/vÖ'_}õƒ "$$„¿üå/Ï)..¦OŸ> 0À/í~úé§$''3`ÀúôéÃÃ?ŒÝn÷KÛ|ð  _¿~ôë×_|Ñ/ínذáÇε×^ës›Õµ ðä“OÒ½{wºwïΣ>Z£¶9r„ &œœLŸ>}˜7o^­Û2rèÐ!ÆŽKÿþýéÓ§iiiέ?ê´iÓ\|"44”ùóçûÁb¥K—Ò¿çw!''Çom76u½üúë¯$''“˜˜È%—\¡C‡œ¯-[¶Œ””§/½ýöÛeß×_ÍàÁƒINNfذaüþûï jÛõ×_O§N0›ÍœñÄαàÅ_ÜHjx³3==ÔÔTç8ë¹çžkë¥Vt3jÔ(µxñb¥”RŸ|ò‰7þŸjkgUmÖÖÎñãÇ«^xÁùüüóϯ³UµY—ÿ»Î´iÓTçÎýò7¶9}útçó.]º¨-[¶x<·>Ù¹s§Ú²e‹zôÑGÕƒ>èñœûï¿_Ý}÷ÝjÀ€~i·¨¨Èù{YY™JMMU~ø¡_Úþé§ŸÔ‘#G”RJ8qBuïÞ]ýðÃun÷ÀjýúõjáÂ…jüøñ>ÛZ]»kÖ¬QIIIêÌ™3ª´´TwÞyꫯ¾ªQû:úÓŸÔc=¦”Ò¶–KIIQ6l¨U[Fî»ï>õ׿þU)¥”ÍfS—_~¹Z°`AÛ5òǨÐÐPçÿ®®lÞ¼YõêÕK>|X)¥Ô©S§Ô™3güÒv P×û°ÍfSݺusúÆóÏ?¯n¸áçk-Z´P[·nUJ)µoß>ârmLûŽ?®Ú´i£¶mÛ¦”R*==Ýc__¶)¥Ôwß}§òòò*Ý#}m¿1íKOOW¨Õ=§>m+))Q+V¬p>Ÿ?¾9rdì«o¼ýíî¼óN5kÖ,¥”R6lP;wVåååeã_|áÜjtùòåªK—.bŸRU Ujjªºúê«ÕܹsÉBï6Î;W]wÝuÎÿ¯¿îYµÅ›½{÷V_~ù¥RJë3cbbÔöíÛܾ&/|9¢"##Îc·ÛUûöíÕž={\Îûè£ÔرcÏ·mÛ¦:wî\©=»Ý®žxâ uÓM7©ÈÈHuøða©¬V«jß¾½Ú½{·Kû5i÷á‡VÁÁÁN[ãããUÛ¶mklëéÓ§UjjªÚ¿¿ŠU-Z´P6›M9rDEDD8í3þ-jÛf]ì4™Lª°°P)åúª‹ÞÚ¬­»víR±±±Ên·ûÍΪڬËßS§¸¸XµlÙÒ/ÿwc›­Zµr餺té¢~ûí·Jç6O<ñ„Gá»råJuýõ׫~øA¥¤¤ø­]'N¨äädŸÅiMÚVJ©«®ºÊ9PóG»o¾ùf…oUíN:U=ûì³Îç ,P·Þzk­ÚïÛ·¯úùçŸÏ§OŸî2¹R[ž|òIu÷Ýw+»Ý®Îœ9£.¼ðBç Õ_<óÌ3êÚk¯õ[{·Ür‹zýõ×ýÖ^ áûðúõëU¯^½œ¯>ÞÅÖÓ§O3zôh&OžÌÑ£G}jó‘GaêÔ©tîÜ«ÕJÛ¶m1›Íìß¿ŸŽ;:í3þ-jÛf]ìm ª””zè!Ú·o_g;½µY[;·mÛFçιï¾û8ï¼ó¸æškhݺu쬪ͺþ=AKùëØ±£35«®O½Ínݺѿ—ã·Ývýû÷w±³1),,dÆŒ¼òÊ+(?×åûùçŸéß¿?íÚµãâ‹/梋.òkûÛ¶mãçŸfôèÑ~oÛ_ìß¿ŸøøxçóøøøJý©¯ 4ˆ÷Þ{¥ùùù|ýõ×~Iï}øá‡Ù±cíÛ·§]»vôéÓ‡«®ºªÎíyóÍ7¹ë®»üÖÞöíÛÉÉÉaäÈ‘ 8ǼFéôŒ?îù¹¹.ß»ˆˆ"##éÄo¿ý6ãǧK—.Œ1‚Å‹öõèуcÇŽñóÏ?ðÅ_PTTľ}ûÄ6´ßXöÕ…†¶mÞ¼yŒ?¾î†×3ÇŽ£¼¼œ˜˜ç±.]ºÔºoæÍ›Ç•W^éü_ Ÿ|ò AAAÎû‹Édjd‹\9yò$GŽá³Ï>cèС :”>ú¨±ÍòÈ‚ øÇ?þA||<½zõâé§ŸvùŽ6õ «G|ù²®ZµŠÃ‡sË-·ðØcù½ÝË/¿œÃ‡;§§§Ó¯_?^ýuÚ¶mËwÜQm›+W®$77×y®¯Ô¥ÍÚØ ÚÍfóæÍ¬[·Ž‚‚òòòêdgumÖÆN«ÕÊúõë™8q"7näOúÀf³ÕÚÎêÚ¬íßSç7Þàšk®ñéÜš´é>ÈOOOç÷ßÿÿìÝy\TåþÀñÏ Ã¦€û ˆà‚";æžeZš[æ¾¥–¦¦VÖ­[·ÅòvouoYú+s)Ô›&Z.¹¥¦‰¥¦i€K‰¸(¸/. 3s~ 3«ìg¾ï׋—Ì™3Ï|gä9çù>ÏsžClllŽ8K«cÇŽÔ«W/ÏOýúõIII)ôµÓ¦Mã7Þ nݺeZ®ùõ‡æìÙ³ìÞ½›+V”YÙÉÉÉ 0€ иqã2+· ÏRšr‹Ú©p¿÷™5k7oÞ$,,ŒQ£FÑ­[7JUnrr2/¿ü2ÁÁÁ\¸psçΑ@ddd™}/»ví"==Þ½{é{(JÌYYYV®\ÉK/½TìkåË›¢( 8>úˆ¤¤$þüóOÞxã âãã+<–²;*«ÄÛÛÛÒs§ÕjQ%Oï@“&Mضm›åñéÓ§sôši4&L˜À|€N§ÃÓÓ“óçÏc08sæ ÞÞÞ9Ê/N¹S§Neþüù–X===9sæ ¾¾¾¼øâ‹øûûß·ÌèèhbccñõõL F6lØ@ûöí9wî7nÜ I“&9¾‹+W®”¨Ì~ýú•(N///ªU«Æ”)Sزe F£ooïÅYX™%ý>›4i‚§§§etoذa¼øâ‹üõ×_%޳°2›7o^âï௿þâ·ß~cáÂ…|ñÅ¥þ>­Ë\»vmŽ¿Yów­ÓérÄYZæQ‘’سg{öìá•W^!##ƒk׮ѺukâããKU®µºuë2hÐ öìÙÃðáÃK3˜czôÑGyûí·4he{YÄœ_c¦4å6iÒ$ǨìéÓ§sŒt÷}/^lù}òäÉÞ÷5÷+7::šÈÈH4 nnn <˜èèèûŽÐõ{‰ŒŒdܸqÅj(Þ¯l „³³3dïÞ½L:µÈïa«Êâ<œûï.==7nиqcùäV¬XÁ?þ˜ãi‹¬c2dóçÏLwHII)—ËwŠË:Æo¿ý–·ß~›íÛ·[:Úm9Æ>}úpáÂK›cðàÁ¼óÎ;6‘ôZ#FŒ°œ¯]»Æþýû Q+´ÌqÖ«WZµj ˜:~ûí·2;o7(»— tìØQiÙ²¥òÀ(üñ‡¢(Š2cÆ eþüù–ýÖ¯_¯´jÕJiÞ¼¹òä“O*iiiŠ¢˜­ S‚ƒƒ•àà`eÈ!JJJŠ¥\___ÅÍÍMñññQxàå¹çž+q¹»ví²”Y­Z5¥eË–JPPâïﯼÿþû÷-3·¦M›*ëÖ­³|þ   %$$DiÙ²¥Ò¸qceÆŒ¥*³¤qîÝ»W VBBB”6mÚ(cÆŒQ8Pª8 +³4ßgLLŒÒ¾}{%88Xi×®òÍ7ß”úû,¨ÌÒÄi0oooË¢KÖ÷%3w™f‰‰‰–¿Ý   eÀ€JRRR¾/emûö튗——âáᡸ»»+^^^ù.\]¬U +wæÌ™J@@€ª+~øa™ÅMÍš5™1c´hтݻwóÒK/FPPþù';wî$00±cÇDÛ¶m9tèÊŸJ•$¾¢T4M…¾_íÚµY¹r%þù'111üúë¯|ýõ׃U‘««+_|ññññ:tˆ[·nñŸÿüGí°„°y}žBlöìÙ8p€C‡Ñ¥KÞ}÷]4 iii´mÛ–˜˜þñЫW/ @\\cÇŽeæÌ™–2Ž=ʸqã8r䯽öÇWñ‰âÄWËúõë  $$„¿ÿýï–í'Nœ oß¾´k׎æÎkynïÞ½<øàƒ„††† "Ögc IDATxå•Wh×®aaa<ôÐC?~€?þ˜I“&Y^ŸššJ½zõHMM%44”¦M›àììLHHIIIðÉ…°}åٓݼysÐjµ´mÛ–Ó§O«õQ…°YjŸ'…ûæ›oxà "22ÒrŽsqq¡ÿþDDDàîîÎC=À<À‰',e4mÚ”nݺ0dÈ.\¸@rrrQ"ŠEtñâE¥N:J||¼¢(вpáBE£Ñ(§NR"""”cÇŽ)Š¢(·nÝR‚‚‚”(W¯^U4h ìÞ½ÛRεk×EQ”Ë—/[¶EEE)½zõREQRSS•úõë+7nÜPEQ>ùäe„ yâ9þ¼Ò°aC%&&¦|>°vƺN}ðÁÊäÉ“•Ó§O+FY·n¢(Š©T¯^]Ù¹s§¢(ŠòÑG)C† QEQ¢££F£ìرCQEùöÛo•V­ZåyŸ›7o*­ZµR¾ÿþûòþHBØ[;O !îÙµk—Ò¬Y3K½Z·nªœ>}Z©Y³¦e¿#GŽ(M›6ÍñºÀÀ@EQLçI__ßåÖªUKINN®€O JK§vâ-ìǾ}û¦U«V<óÌ3<ÿüódffrôèÑS=nݺE||</^ÄßߟÎ;[ž«U«?þø#Ÿþ9éééF®]»@5êÖ­ËúõëyçwÓef¸¸¸äx¬×ë ,W£ÑXêzVVÆ ÃÓÓ“Ù³g—Ó'Â~ÙÊyR‘W¯^½X¶lþþþÔ©S‡=zpþüy àº›ßã6mÚ°dÉ^xáœ‰ŠŠ*ÿàE™k|E‘uèÐÇ“À¢E‹¸{÷.ÎÎÎxxx°dÉ˾'OžäúõëtêÔ‰'N°{÷nŒF#ׯ_çÆ8::Ò°aCEáóÏ?Ïñ^þþþøùù1iÒ$žþyËö›7oÒ«W/üqÞxãòÿÐB؉²îÉrôdëõz†N:uJ\¶•-œ'…ùÓét¬X±‚'N°oß>þõ¯‹e6@`` ‰‰‰–Ç]ºtáðáÃ9ÊY²d ‡æÀÒédG$ñEV¯^=-ZÄ“O>Ihh('Ož¤nݺ8::²qãFÖ¬YCHH<ûì³dddP³fMÖ®]Ë믿NHHüúë¯1|øpÚ´iC»víðññÉÓ»6a ƒ¶l›3g`Íš5„……Æ|PÑ_…6§W¯^øûûãïïO×®] ³Ô©’ôdóŸÿüÇÒ“½råJÖ®]KLLŒ¥îIc[ˆœlá<)„(?Ö³ „ýÑ(ŠÜUئiӦѨQ#Þ|óMµC¢Jعs'/½ôR¾Ó1…¶GΓBQt2â+lιsçhݺ5”kx…¨@Ò“-„}ó¤BŸŒø !„B!„¨ÔdÄW!„B!D¥&‰¯¢Ø^xá|}}Ñjµ9V:ÌmãÆ´nÝš–-[2hÐ ÒÓÓ+0J!„B!L$ñBÛСCÙ½{7>>>îsóæM&L˜Àºuë8~ü87æ½÷Þ«À(…B!„0Ñ©€Z®\¹ÂÖ­[iÚ´)®®®j‡#D…¸sç§OŸ¦gÏžÔ­[·ÄåtéÒå¾ûlÞ¼™ððpZ¶l À”)Sxì±Çøïÿ›g_©¢ª)«ºXÖ¤.ŠªFꢶ£¼ëc•M|·nÝÊèÑ£ÕCU,[¶ŒQ£F•ë{œ9s†&MšXûøøpþüyŒF#ZmÎÉ&REUUu±8¤.ŠªJꢶ£¼êc•M|}}}ÓÛºuë|÷™>}:³gϮȰªô{WÅÏ\ÑïÏèÑ£-ÿå©8·Å)¨>þwÏYùçÊ|_£ÓèprpÂI焳ƒ3NN¸:ºRͱ®:Ó¿Õ«Sͩիáæèfú×É•³Vòî‡ïR·Z]ÜœÜJ÷Aï£"ÿ彊çNÖâ¯ÄsôòQ¯'òWê_ýú(úžúû¾V‹–î~Ýù°Ç‡%z‹ÅQ”scYRóØ[¶ŸÄVrÖñU¶ºhëß½™=Ä)1–âÄXÞõ±Ê&¾...´nÝšððð|÷©Y³fÏ•·ªøÞUñ3«õÞæ¿ÿòÔ¤I¶mÛfy|úôi5j”g´×:žÜõqf“™<ú4YÆ,² YÜ5Üå®á.™†L2õ™Ü5Ü%CŸA†!ƒ;Yw¸•u‹›woZ~.e^"=3ô;餧¦“–™†A1@ Ú5w'w¼<¼òüx{xã]Ãooj¸Ô(ñ÷P‘ÿ¿ò^÷—”šÄü˜ùl=¹•ÃcP ¸ê\i]¯5ÁMƒ¹»ý.¯O~:ÕêPǵ5\j˜:P«áê芓ƒ:­­¦l–ȨˆºXE97–%5½EaËñIl%—_|•¥.ÚúwofqJŒe£$1–W}¬”‰ïêÕ«™9s&æ[oܸ±ÐEx„%WЭÀ{öìÉÔ©SIHHÀßߟ/¾ø‚#F«lÿºþø×õ/‹0S¬·³nóľ'˜1n)i)¤¤§œ–LrZ2G/åÇS?rþæyŒŠÑò:gš×nN{Ïötðê@¯´¨Ý¢X£ÚB]»Ïìfö¾Ù¬=¶w'w´À¤ˆItôîH›zmpÐ:ÐqƆŽU9Ú²'çE!l‡ÔG!ÔQé߸¸8Þzë-¢££iذ!·nÝÊw„IQr“&Mâ‡~àâÅ‹ôìÙŽ?Î;ï¼CãÆ™4iîîî|õÕW 0½^OPPÿûßÿT[£ÑPÝÉ4z×Õ§kûézΧŸçlÚYÎÞ8Ë™g8zå(;OïdÞïó¨íZÛ”{vàßGèèݱÌFEÙÉÐgðÒÖ—˜ÿû|ZÕmÅçÎS!O•ûw["çE!l‡ÔG!ÔSéßY³fñ·¿ý† P½zu•#¢òY°`A¾ÛgΜ™ãq¿~ýèׯ_E„T¦tZišs oðÎùÜõ;×ÙŸ²ŸßR~coò^>Ý÷)3vÎÀÓÝ“!m†04`(¼:Èh° 8yí$C¿ÊÑËG™×g“"&UÉÿ9/ a;¤> ¡žJ—øÆÇÇãëëËÃ?LZZ}ûöåÝwß-QoZq§e–¥ªøÞUñ3«ýÞUUi¾óZ®µèÙ¼'=›÷À¨ùõì¯|ûç·¬øc³÷ͦEíŒ ÇSÁOUèÿ¯¼×=›OlføêáÔ¯^Ÿ½ã÷Ö(¬ÜÞËÖ•åy±¬Ùú÷mËñIl%§f|å]mý»7³‡8%ƲaK1j”‚.гQ;vääÉ“y¶k4bccéÝ»7>>>¬Zµ ƒÁ@ÿþýyòÉ'™:ujŽýccc‰ˆˆàÁ¤fÍš9ž1b„Mý' QQQQDEE娖ššÊ®]»ˆ‰‰±©ÅÌõÑÖâ*.ƒÑÀÏI?³äàV]E†>ƒ¾-ûò·Ž£«O×*9Ú¨†m§¶Ñ7ª/=›õdÙÀex8{¨Reù7_VçEë¸äÜ(*£Š8/J;Uˆ¢Q£jw#¾{÷î-ôy „³³3dïÞ½ùžàfÏžm× m! ’߉Ñ|"åÃAëÀ#¾ðˆï#|ÞûsVþ±’9¿Íááÿ=Lx£p^ëüC†H\Ž~Iú…'V///Ú´iCXX^^^¼øâ‹j‡%„¨¢4 =›÷äǧ~dûSÛ¹zû* #˜²i é™éj‡Wi\¾u™>ËûÚ0”uÃ×ᢳ­{rªI΋BØ©B¨§Òøj4>úè#>úè#µCBˆºûuçÐäCÌ=0—·£ßf_ò>6ÜD#÷Fj‡f÷^ÿéu Š5C×PÝIVIµ&çE!l‡ÔG!ÔSéF|…–9:82½Ãtö<³‡‹·.Ò1²#Ç®S;,»¶÷ì^Å-âýGÞ§^õzj‡#„B$‰¯B¨ ¸A0{Ç梁Su:/êÌž3{ÔÉ.Œ¦ü0…ˆFLŒ˜¨v8B!„°Q’ø !„JšÔhÂî§wX?K{°>a½Ú!Ùy¿ÏãÐ…C|Ñç ´j‡#„B%‰¯B¨¨–k-¶ŽÞJŸ}xrå“|ó¥Ú!Ù‹7/òÖŽ·x6âYÚy¶S;!„BØ0I|…Be.:V^ÉsmŸcâÆ‰üóç¢(ŠÚaÙ¼Ï|ŽQ1òþ#響B!l\¥[ÕY!쑃ÖÏÿŒFnx+ú-ê¸Öaj»©j‡e³ôF=‘±‘ŒMjuÔG!„6N_!„°†7»¾É•;WxqË‹Ô  ›o7µÃ²I›ŽoâüÍó² •B!ŠD¦: !„ùèÑèæÛ!ß á¯ë©ŽMú2öKÚ6nKhÃPµCB!„ÄW!lŒN«cåà•Ôp©Á€•¸y÷¦Ú!Ù”37ΰùäf&†Ëh¯B!ŠF_!„°Aµ]k³~øz¯'2eӵñ)‹âáªsexàpµCB!„ÄW!lT›úmø¢÷,=¼”ïþüNípl‚Áh 2.’‘A#qwvW;!„BØ I|…†Í€!LÚ8‰”´µÃQÝ–“[HNKæÙðgÕE!„v¤Ò%¾Ó¦M#,,ÌòãêêÊ矮vXBQ"†ù}çãêèʸuã0*FµCRUd\$¡ CiÛ¸­Ú¡!„ÂŽTºÄ÷óÏ?'..ޏ¸8¶lÙ‚F£aèСj‡%„%VÛµ6KžXÂöÄí|öÛgj‡£š;YwØrr #G ÑhÔÇ®H§°¶Aê¢ê©Ô÷ñ]²d ½zõ¢~ýúj‡"„¥òh³Gy¾Ýó¼±ã F¢nµºj‡Tá¢OGsG‡~-û©ŠÝ±nX_¼x___éBR…PO¥ñµ¶xñbƯvBQ&f<4EQ˜»®Ú¡¨bãñøÕò£UÝVj‡bפSXÛ uQˆŠew#¾;vääÉ“y¶k4âââðôô`×®]¤§§Ó»wïBË›>}:5kÖ̱mĈŒ1¢ì‚BQQQDEE娖ššªR4¢,Ô­V—ñáãùlÿg¼ÚùUª9VS;¤ £( oäÉÖOÊ4çRZ¼x1³fÍ*t97ŠÊÈÖ΋REU¦F}´»ÄwïÞ½EÚ/22’qãÆÝ·4{ölÂÃÃË"4!lJ~'ÆØØX"""TŠH”…—;¼Ì¼óX·ˆií¦©N…9régÓÎÒ§EµC±IeÝ),çFQUÄyQê¢E£F;ÕîߢHKKcõêÕæÌ™Cbb" 6dîܹ 6Œ]»vøšÙ³gn¿ Ž&GLfaÌB6ßÈ€VÔ§Ìm<¾‘>-û ÕØï¥ü:obcc‰ˆcŒBQQì·%!ª¸˜|~Êû=€··7çÏŸÇh4 ( gΜ¡I“&9öûå—_xä‘GhØÐ´ ѸqãØ³gz½¾Âc®ÌÂ…ÑÞ³=óŸ¯v(eî䵓$\Më{Ec¹BTu2â+쌚ë÷®º#5õë×'<<œ¥K—2vìXV¯^··wŽiÎÁÁÁ|ýõ×ܺu‹êÕ«³qãFüýýÑéä°SÖ&·ÌÓëžæÔµS4«]yî ¹éø&œœèá×CíP„Ý)ì\!Çr!Ôw¿öœÔMQö¤*ìDqÞC%|bì[µN ,`ܸq¼ÿþûÔ¨QƒÅ‹ðÎ;ïиqc&MšD¯^½8pàíÚµÃÑÑ777–/_®rä•Ó°6ÃxiëK,ˆYÀý¯Úá”™'6Ò­i7ÜœÜÔEØ…’tŒVíc¹¯¨õÔ¼ŸÔKQv$ñ6®¨È’&»÷+£(ÉpÕ;8·lÙ’_ý5Ïö™3gæxüöÛoóöÛoWTXU–«£+ãBDZøàbÞëöÎ:gµC*µôÌt~>ý3ŸôüDíP„](ʹÂ|Œ/è¸^õŽåB”Ö»ï~Ì{ï}ŠV«E£Ñ`0hÑ—cÇvç³wI;§¤Nв!×ø U”k±Yý”—â”/× õLŽ˜Ì•ÛWX¿ZíPÊĶÄmd³äú^QE=Wô¸¸å !Ɵοÿ=€víÚѲeKªU«FBÂ)œœ¼QÅjïÒÔ+©“¢lȈ¯°ùÔòk˜tð+«ƒbIzsäŽEz*Eùó¯ëO·¦Ý˜ÿû|FT;œRÛx|#õð­å«v(¦vì¿_§ea#À2Ê$Daôz=‹KµjÕ8p K—.ÅÇLJ-ZpêÔ)ÒÒÒhÒ¤-gÎüŽF›ëÕ…ÕÍÂfdH¥SéßsçÎ1~üxRRRÐëõ´k׎ùóçãââ¢vh"‡ÂÝÜÏY=NKÊû²Ä2 É Wù>V1äwÀ ç¼ ”y_!ÊÏä¶“¶j\úƒÀúj‡SbFÅȦ›:NíP„M+(é-¨Qßþ¹ápï8.×ÿ QçŸFÃã?ÎÒ¥K™2e Ë—/'99™àà`Ο?Orò9Ú·ïÍîÝïàääXÄ’ »ìLÚS¢t*]âû¯ý‹6mÚ°yófŒF#}úôañâÅ<÷Üsj‡&îÛHÉgª°9Ñ5'·¹óÞ²LzóÉ©ñIÊNˆ³ßÜ’çf>–Ë[”¯­РzÄ,à³Ç?S;œ‹9Ã¥[—èÛ¢¯Ú¡›UÔYBÖûÆäí<õ((Îý{îÑa9Ž‹ªíÀ8ŒF# tîÜ™¥K—Ò®];–,Y‚——ƒ+VðôÓOóÆ_óñÇã³_YÐ ‡µÜN¹!uQ”D¥K|===IJJBQ233¹}û6ÞÞÞj‡%Š4“7Ñ…{ i"pÊj{Y%½`•ÜZi–ýI€9ßõ³j4yøPø´æ‚’`I€Eùprpb|øx>ßÿ9vÿêNÕÕ©D6ØD-—Ztôî¨v(•BÕ˜ u¿Kcbà`RÞNŸ|z<ÍÇyË1ÞúXmýXŽá¢ø*K} &æ'Nœà¡‡Â`0°jÕ*jÖ¬ €ƒƒ£F">>ž9s>áwFàî~"ûÕ¹êfnÖmAK}ÌÝv’º(НÒ%¾¯¾ú*=zô aÆܹs‡Q£FÑ·oÁ£Ó§O·TR³#F0bĈòµŠ¸_¯|ö(oA#»ÖÉn"÷ѲäCþIt"÷bóï&Áp¯WÒü»5ëÞI³òM€£¢¢ˆŠŠÊ±-55µ\ÞKØŽ‰áù`×DýÅ„ð j‡S"»Ï즫OWtÚJwŠREÕ› •Ïå2“ šœ§`êàÌÍrœOºw Ì}gûQ4•¥>~ùåÇ,]º EQ8~ü8>úhžö4À!Cø÷¿ÿÍ‘#ItêdýL—±Y·s >äW%ùÅcw­ŠŽ;ròäÉ<Û5 ±±±|øá‡óóÏ?sëÖ-ú÷ïOdd$ãÇϧ4˜={6áááåv•»ñ‘»GÞ*éµNhͽ|Þ”Œ²èðKÈ»ÍÓ…{]ë8ß0}ó†‚àü’_(¯òëÀ‰%"BN•™OMz·èÍüßçÛeâk0ØŸ²Ÿ7|SíP*Ê7ª sKëCX'½Ûsí’ß ÅSBœ£³3÷e/æã¶ù¸.ÇUQ4•¥>êt:úöíÁúõ?’’’‚Ÿ_þ ¥›7oàä”x‘gÀÃ,wÂknž¢ðúèaU†ÔCqv—øîÝ»·Ð磣£‰ŒŒD£ÑàææÆàÁƒ‰ŽŽ.0ñ奰¤×êZ^ë¤×:á5ÿž+áM¤ß|'fdÿžžEN€ÍÓq çTëÇ­"*ÓŸEÙ™Üv2ý¢úqðÂAB†ªN±Ä_‰'ýn:¼:¨J¥QÜ™P`û³¡¶l9À°a‘ž~E77¾ù¦-ýû{fïaÕ© l!Ū£ÓÒÁ™›õñ¾ÏøñÈýB9~Û:[˜ U™f&~ÿýFšÊŠßMBBþþþ9ö™?>^^õ mD¾k¹ä7Óo›Õvs»Ëœç–£.ž)ùJúhw‰ïý±yóf:tè@VV[¶l¡sçÎj‡UÅXÔî3Ê 9{÷ Ixó›¥V¬Û=¹g=û~ÅH€óý…Âf°&Ëõ‹ÒëÙ¬'õªÕã›#ߨ]â»/yZ–¶ÛªŠÝ(ë™P`Û³¡&MšË¢EÛÐëõ¸¹¹qóæMnÞ40pàïtìx‚]»Üó&½Ñ¦ó‰õ€¯_Fþåýx/ɯ½©ˆ™PUmfâ7ßÌå•W&Óµë“tïÞÿû¿ÿãñÇçܹsÌš5‹eË–±`Át:‡{/ÊÝ„œíÀìú Vu1wl½-O]”äר13±Ò%¾Ÿ|ò “&M"88ƒÁ@§Nx饗Ô«Š(á(oFx“ríV–rO!ÿNE2€‚D¹W….òè¯$¿¢ì9:82´ÍP¢ŽDñŸÿA«ÑªR‘íKÞGpƒ`»]˜K Ui&TjêÏDFþˆ³³3z½ž°°0\]]Ù½{7·oßæ×_S ½Æ†Àó–¤wWƽ<ج óI±:<%ù¹T¥úhÄÑ£?3dÈD dÙ^£†sæôaâÄ(pàrŽò&Ý«¯‰@Üu±ÈQr ‚È«Ò%¾7fÆ j‡Qa”÷`ö.w›kçŠLzÍrKÍŠIVáú™÷ÉÈ>ßOŽÑß‚¾’üŠò12h$sÌeWÒ.júÚáÙ¾ä}<èó ÚaT*•i&T÷îob00 Œ;–¸¸8>Ì /¼€N§cÍš5Ä'$Òò¹»Ìiiä™°'3çàoîŽÎÜró‹’Kò+Š¡2ÕGkÞÞžìÛ·‰Ã‡rðàŸ¸»Wç±ÇjP½zù^×›»-h5+úíÔEéˆ%Pé_¡sÒ{ŸiÍÖs•­Þìã yZKE'½fù%¿p/Î!¿ä7÷µ`f~¹“ߢN{¢ä:zu¤iͦ,ÿc¹Ý$¾72npôòQ^íôªÚ¡T*•i&Ô±cÉdeeѰaCŽ?Îþýû™3g‘‘‘„‡‡3fÌbbbx6&†¯§€drž~ c}·N€LÊg'ó Â')ûX/‹^‰ÂU¦ú˜Ÿàà‚ƒ(ü>½p*Ú¾72@ôÞÊ~.wÛ¯HQyê¢õ»I=&’øŠRÊ/éÍu_^«…E Jv±zÊ:G®ˆ„×Z~ˆÖ£¿Öûi$À|Ñp‰’_õ%§Ñh8‚ù¿Ïç³Ç?ÃÉÁIíîëÀ¹((´÷j¯v(•Ješ ó%mY IDATåì¬ãöíL<<¦µ›¦v(ÂÆ¥¥­¤V­¤¦¦²iÓ&êÖ­KRRß~û-`jT¯^½š£G2bĺtéÌÒ¥K¸rå ~E|ü1nu€¢t±vNJ4'Áù5ºO&A·7­¦[ZwlJ,ª½,IïŸþI×®]¹qロVKpFQ¨¡(¸X½6¿ºh=H‘£>Z×Eà^GHò[uIâ+Š¡ ¤×ê6EÑÜ[–Þj…>ó-$îw^[JzóSP|ÛÉçºßÜ M~­É¨¯(;ÇóúO¯³öØZÆ„ŒQ;œº~Š«w®ÒÁ«ƒÚ¡çêêJFÆ÷lÚÅСßqùòeËõ½Í›7Çßߟ=z0xð –/_ÊóÏ¿Èüù qqqA£Ñ¥(\ÑépÒë©ÁýGsûs4¶³OÌyʱöƒY·5V‹íÈ%-¢jsp0ÝÓ7++‹îÝ»síÚ5œœœpuu¡wï^dffòÃ[HS@£×ãlõÚû&¿Ü«yÛc’üVu’øŠ"*bÒk^Ä*×}·U\ ¦Ð$=<£1]ÿe­Àä÷~Sž¥a$JƧ¦í=Û³éÄ&›N|÷%ï g;•#¶íÞ‚9}ú–ö6óçïçïßÊò妭îܹÃ?þÈ¥K—xç·øôÓ9ÌŸ¿NG‹ÍyöÙ§ñðð`õêµlØð P«ïœû˜o¾Ä×ú9?óïÐ#<­_#ù9Æ‹ªã^½ur‚#GŽðÇpüøq._¾Œ³³3;¶çûï¿¥F¤¤¤Ð½{oOž¢®Á£s*¿öWîú˜£.n¶®‹’üVe’øŠ"¤·Ìäºp8+KaÇŽŸyöÙÛ\¸ð=ZFŽ &2rPEQ\ÝýºóeÌ—£Í^?»/yþuü©íZ[íP„qpÐ2ujžxBÏK/fÕª4RRRعs'~~~|úéjÔ¨A»vmÙ¸q NN¦ÎGÁøñ“ùßÿ–¡nÀýÖ>ÏÝඞŔ߭ï N~­oyd&ɯ¨ü6n¬KïÞ©<ñÄ„††b4¹{÷._}5Ï’ôxzzòÅsèÞýqîBŽQ_È?ù-ì6”’ü ÄW”–uÒ›½ró®Œ{‹8W¥¤·À{ýf'ºÆ“ m7ïÀÿEœ•Z.]>ƒNgZÒ¿Q£Fܾ}›E‹bùßÿrìØ<š7÷Ì]ªÅöHÓGx×ûüyéO‚©N¾ö%ï“i΢˜B0wÈzyuá»ï\Y¾h c&:0oÞ<V¯^Ãùóç˜9ómKÒ{üø ºuëÉ¥K—Óú8wµZ4F#u‡BÞµ Ù>mÏ“üZV™ˆ$¿¢ò»WO!‚GaðWXµî ‰‰¦ZÓ¬™Íšå^Nºu{² œÈ{IB±ëâfð”k~«4Ûìú6¤Ñ^Iz-r_»¼S“fa&¼´ê/rÀá hú/^p`Æ<-—.-«8p€sçÎqåÊ–-[†NçHëÖS*þƒˆJ©“w'œœˆ>}ÿUp×p—CÉ4gQDÖ‰aÎëeG†…“ ddÜA§Óñï`y®MÓ|oß¾MçÎpîÜyzõêÎöí«9|øgÞ{ïutÎÎ\Õh0–A”ÙK]°Ó"ldo<˜˜݇r½2×½O…°[æºbõ{Q«|HOÑãYÛtÏù‹/‘‘‘‘çÕÛ¶mÇh4’®óÀ5nJ1£ÈSóÔÃEÅþdÂ>Iâ+ Qô¤7%á^Ò»ƒª•ôžn‡g´Zk4üLÑ:ð•ÞÑ“_`áÂ…xx¶ærº#:#...èõzÖ­[GÛ¶mÐétŒ5Š>øƒÁHTÔNÕ>—¨<\]éèÕ‘íP;”|¸z½QO`ý@µCv£€ä×Çg&€ác…‰ôœ:~Î4~»oß~–/_Ijêu èÍúõËèÞ½+ññ'Xºô;233Ñ+ €«¿[žw´ÕFK£;ÓyÖ:ŽA`QùÜ«·.õ}Hþ š×UHOOgáÂÈ{îÚµ‡¾}âëëEË–¾d ¤bJ‚ïóóM~¿B’ß*F_Q€ÜI¯Õö|’ÞDî%½¶¾2sYP€›ÀE†‹ GˆôZ-...Ìš5‹1cÆP³fM<È'Ÿ|„ ¸pá"]ºtáîÝ»dddDëÖ­ó”?räHEáßÿþ¶¢?š¨¤ñ}„§wb0Ô%ø+ñÔ P9a_rO Îùxn $:é 7 Óéxýõ·¸qã«V­E¯7ð·¿=‡F£añâå 677ÓS4Ó„ÊL²G™J¥uƒ{Wù$¿ÖIn~ °öÌzÔ×üø^]{j8Áôé¯òüó/óë¯ûرc'O<1˜ðð6œ={ŽãÇOãââDX˜?5kšnËwS-Ž|gaHò[¥TºÄ÷âÅ‹ 8˜3gŽÚ!Ù¡ü’ÞìsMz@:pM§ã’VËEà–ƒnîT¯^`´Z-F£‘ï¾ûŽçŸžµk×òÜsÏѬY3À4½îòåË4nÜ'''Ó-5²²ò}?óv®ÒUQ¡’G|áFæ â.Ä©Jñ—ã©[­.u«ÕU;awr7ªsòÒÀ  Ÿ^ÏáÃàç@|¼©£¥Q£dddð÷¿ÿ“GíB\ÜŸ89éP…ððV´lÙ-ÀeJ7ú[¼ä$ù•KɯTo WÇÃSî ‘óÒ¹s7ºwœë×S¹té*z½‘ºÜ’¸¸´T¯î‚\×j(nWnÉï:I~«‚Jת~ùå— äСCüþûï,Y²„ßÿ]í°ìˆ$½ ¦…NneÿkRÈtrbبá<5ö)Œ˜Fž~wîdàääŒÑh¤Y³f<þøã¤§§“žžNhh¨¥\WWWjÔ¨^¯'33“ÚµksìØ18'†E‹¡Õjùøã ó¡E¥×γÕ«ý—í]ç{ôÊQíeË/û'ûþ&O} n]»FòÙ4 [¶ìà§ŸvqåÊUöìùE7Þ}w"‡Ÿàüù+t팗W=²€TJŸüî ä7m þJò+*‹¼T-àẃH göö¿þJ¦fMw.\¸BRR ƒ?DZÚ-îܹ‹““£QášN[6Éï6$ù­*]â{øðaz÷î @µjÕèÚµ+K—.U9*{QPÒK¾ YU¦¤WÉþɮ鸤i4\.k4h9p`7K–|É7pww§ÿ~$'§Áµk¦ÉpuëÖE£ÑàîîN5rtºhµZÆŽË?ü@«V­pwwG§Óѯ_?6lØ€Á` --?þ˜™3g¢ÓièÑ#4Ÿh…(>''lò ;NÛÞu¾ñ—ãi]7ï”Q6*ÿL¨\ èä]€š@ ¢ Õhxë­ˆ= ÀÝ»Y(ŠÂĉOòÏ~Ř1’’²‚;>&)é–,ù;H£tÉo"…$¿Ñd'¿ÿè¯$¿•Aå¯É}]~xøÜ»ù.à¬ÜÛä訣]»@öî=L÷î¬^ý ï¼3Œ+W¾æÎoÙ´émê7¨Åumé¼²N~ÓÞD’ßÊ©ÒÝÎ(""‚o¾ù†öíÛsåʶlÙ’ï5”fÓ§O§fÍš9¶1‚#F”w¨6&¿ª9é]SéFzL×meb:°feéÑh4h4ºtz€Y³Þ%""˜Ã‡Ò¾}¦L™Hp°é60IIgptt¤iSîܹÃõë×éÙ³'Ç'&&†sçÎѸqcÆÇüùó;v,­Zµàí·ßfíÚµœ={Ör£«W¯Ò¿1 (Š‚ƒƒ† –•ê3FEE•c[jjj©ÊöíßGøçÏÿä®á.N÷»ciÅ0 »rŒgÂävåÅ<jÍš5Ù+w¦sçΖEõ*‡Ššj€ZF#7nÞdÆŒ-ÛEáÔ©d¼¼ê±`ÁK–E±6oÞÏܹߣ(¦™@zg½‘êä½½JQä8gfÀƒæI愽ÛðHÎ[™o{$·;²wU£>–NC ®VËu£‘ÄÄdj×ö`Æ_yõÕ¼ùæË~½{G°yó ‚ƒ_äP­˜ïc½kÞ{n¿™}Ïm97U&v7âÛ±cGêÕ«—ç§~ýú¤¤¤0kÖ,nÞ¼IXX£F¢[·n88|G¾Ù³g³~ýú?U/éµ–k1«|’ÞíØoÒ«`Zù<¥Õ Ñ@ÿþÝøê«âO£F زe9mÛ† ÑhhÒÄ“ÌÌLÚµ»wBjܸ;vìdÀ€'8qâ}ûöµ,ˆ2räH.]ºÄŒ3ðòò¢mÛ¶Lž<™ÿû¿ÿcÚÔ©œ;—B=·[hŒé88qqѢѩYÓ™Ï?ïCVÖ{Ôªå^ªÏ:bĈ<Û³gÏ.U™f'Nœ S§NøûûÓ®];Ž=šï~gΜ¡_¿~´jÕŠ6mÚðù矗Éû‹’éÖ´·²nq %ïôzµœN=M¦!SF|ˑ̄ºÇœ[:uô܃£Ñ4^O¿~,Iïòå?Ñ·ï[¸¹‰Š͆ ã:"Œ4L£¿%•ïȯyÄIF~+µª]óõ5_–}i‚ù׎F#ƒ‘“'Ïr÷néé·yæ™yJ ò!"¢Y±º2+pä7šì‘ß©%,YØ"»ñÝ»wï}÷Y¼x±å÷É“'(·È(\£½$½æ¶=&½© wŲÕÿþ÷>cÆôàõ×?eÒ¤1¸ººZ^ãæVêÕ«ñÇG2dO?ý6lâÚµkÄÆÆÑ­Ûà :”ž={²mÛ6vïÞ——]ºtàÖ­[,Z´Å@³úZf32eèZ¹ëÒ'§ˆì¤¹à{SÚZÿ¤I“˜Èȯý«:õ± …ÌÎð²ëjmLõó–VÃÍ›wprÊ?m)h{QmNeÿžwäwMöÈïÜR½‡° v—øÞϵk×pwwÇÑÑ‘¸¸8Ö­[ÇÁƒÕËNXõ&ôFc:8Ø[Ò ¦…ªî(¦^}£ÑH›6Íyê©~–çõzCޤÀÑÑ‘§žÌܹóyúé14mêÃOôcȬZµ–üãMZ´hAÆ غu+JvùŠÑÈÎ;Q…®.°ý¡,›ÍŒ¦»# ggé—B“^ÛréÒ%bbbؾ};dÚ´i$&&âçwï⺟~ú KÒ P¿~ý WÜ£Óêx¨éCDŸŽæí‡ÞV;Àt+#w'w»7V;»Õ±cGNž<™g»F£!..ŽY³fñÊ+¯FýúõéÖ­—/_.´Lû½ (ûøYÄäL ¡:ÀU½Ë—SY½zÿùÏe<ÅåË7˜1ãQKÒköÜs˜ùîVîÜÈ(qâk@€<î¤ìF7Hò[zq PY×Gû­‹…1'¿à>IÐ HOðË0Õ` Î`äŽÖ4£nùò_rLuøë¯‹ü¶ï8æ9ræ5[Ì­«¢JÄ´¸3–ü>ƒÔ¹²£Æ%y•.ñÝ¿?/¼ð:¾ûî;4h vXv hIï¶_¯>ójÌw²;bºÞÃ<Ñ=C£! uŽMB«ÕÚÊ2= k×¾ýv=ÿøÇó993f¼ÌÒ¥« mÏsÏ=K@@kj×®mÙçĉ89:â ´º½…Ö€§?÷æí4#Ç*£öêìÙ³4jÔÈòùMS›pæÌ™‰ïÑ£G©W¯#FŒ !!¦M›2kÖ,|}}Õ ]û<Ì?~úY†,JÓd/G/›Vt¶®‹¢xÊc&ÔìÙ³ /ulê(~òë ÔÃtÛ"ƒÁH—.Óéݻ͛ç½Í–³³ï&59uäB©£-^ò –‘mI~‹-¿„166–ˆˆ²û˺>Úw],Œùï8›¹­”hšýà$e?uÒ¨p ˜9s×fôè‡ptÔqèÐ_Œù :­A1ÝvL  €ƒÞ´¨]Q¯ë4'¿‰ÀÄ“_s좴*¢>æVéß^½zqüøqµÃ°Sö›ôT …víjР3?m¿Â•L#5Œàà ¥eKoŽMÂh4òûï (Š¥Áý·¿åᇟfÒ¤WùÏÞ¢víZ¤¥¥óé§ ¹uë6ÎÀÇ}ŠÞ`ÀI§ÃÕ`º>Ìhž•ESr^ªâéRHÀ~XMa³–ßh¯}`õz=;vìà·ß~£uëÖ,X°€¡C‡æ{û&³ÊÙ³m[Ú6nK¦!“ø+ñ7V;â¯ÄWúiÎj/4WµfB™G’ÌÉo®Ñ¤$Óh’5sâé4²ô.$_fÞ¼ üòK"=z´Ìñš+Wnr,þ.ÀMà6¦ÎWLmãâ.güú‘ψ“O„Z>I~íUÕªE~I¦,7W=µ®àºÞÈ3Ï|Æô¿ÂÍÝ•sç®áì ¥šÁHªЧ—¡¡Z~ûÍÀ¶mF®j¡Ž±xɯ™$¿•O¥K|EqÅ`:yÚWÒk${uML•, ¸¸;ðËíxàSâ”––ŨQ‡ØüÃ%€ÞÀ‘#‰8;;’•e !á4óæ­dÊ”átíÚ–O>y•¿ýíc¾þú;š6õæì™22ï⸊!ûnqz½e –¦Óøw´7û;pz{{sþüyŒF#Z­EQ8sæ Mš4ɱŸaaa–k—FÍ”)S0 .8Wy{¶mGhCÓ-²bÏǪžø*ŠBüåx·¬jåM^mkU{&ÔD]Ƚ±£ìU”­’ßÜ—î8u FîiZ¦¿ø=Ñ;§P¯žYY¦M[ƒÁ`äŽô T¯ŽŽz®`j\÷Âë8¶“+ù}Ógä×îUíúXL• ר¯µDE! ÈH¿CZúj.#—5 ÕÂöí.<ü°ÿ÷ìÜi Ë0]Îà\ÄPrÌÂH€­Ÿ”ä×®Iâ+00cì"éÍÂ4M§½ª»BzvfÖûþ–¤ÀÃѯ¿¡Q£Ÿ¸i¤pêÔ9{ì~üÑ4ê8uê¿X»v;½zu!%å‹­Àén)Ç-sšV”ɘ…Žöš“á¬ïAiûêׯOxx8K—.eìØ±¬^½ooïÓœüqþþ÷¿[nïôÃ?Pè*ë¢ü¹;»Ó²NKbÏÇ2.tœª±¤¤§~7ÖõªÒÂ.¯êÍ„²õ=DaÉo"¦œ2¿óœPÃ`äxÂeš6ýC‡†âææÌwßäÒ¥›hSçëðAðÝZ¸uûÞkõÀ9 .Åý-}òk~NتªW “ýwëá$™ÚG§¿ügg€©ŽX_¤cp€§žÒñðĆÞâÏ?À`„N!qbãá†8 F#ËÑ!&Éo¥!‰o•—=Ú{0Érs^[Oz u3Xø!´ƒo7ÂðiзoÞþõZµéܹ¿î¸ŠPøñÇÔ®íÆµk7Ñj5DGï':z?½Þ@m²§FQ3rîùöZÏlöðÁt°¼_Òk›Ô 0nÜ8Þÿ}jÔ¨a¹^éwÞ¡qãÆLš4‰jÕª1þ|úô郢(Ô¬Y“+V¨¹oNÜ…8µÃE¸ò»Ë SŽ@mƒ‘[·¬\Ðd©©!ýHgSÒëì!-aïapuGH» ©ÙÓ,‹ÓÝWºädôWØ%óE½ÙÓñ1úæÇºŽè1 „tî¬eíÚ þüü`ýlði ™waÞ·ðθy<ŒE_ôJ’ßÊGß*-{¤7-ûÚŠS÷Û¿â0-V¥Çt •VZغ eç¹æ/\ÈÄÛ;çªÌŠ¢pþ|¦eu?óµWwRoáè !Ë`ZÿO‡©°¨Ó`Ìü¬þÍsmo~I¯åÚ^뤷 ¶{ mÙ²%¿þúkží3gÎÌñøÑG%.NýKäÞ0œ 0*F´õnç9 >5ì|Å7a'Š?íî]·‹ÞhÙ–è pþ¢id©s(ü ¦Á˜îàìÛ¸Oàr*Ô-FcÛ:s¤9’ßfÙÏHò+*«ÛYOwÆ4êK>£¾p¯Ž8`IHP˜;×€ÞÿÏÞ™‡GUü33Ù K ѰD‰¬„*µŠ ˆD-µ‚[µµ®UÐ_# VÑ€ QYbEÅ*£‚’@4EÉB²ÌÌýýqî¹³%“dÖä|ž'ÏÌÜõ óÎ9ßûn9O Ñûö¸ã°*Pj„Öæ…=³Fë>KñvølÅSSS ¸ùæ›Ù°aƒÃ¾;ï¼ÓW·‘ø =ÔBˆ“ï)#¤i±)¸t”]ìœ?zt3°pá¶vB[·–óý÷ÕÄÚO'èdUH²(ô@3I¦y¢WóöjŸSbp gv+zõ´ž‚V’ð`H÷!œ¨?AayaPDZ·l/gv9“Q†¿K|§q3`Pš(¿?#cD5å‹ñPŠÁ Úâ© â!÷+xì0ãRˆ‰UedžÿÌ9†Öî R„x‹ðüþ¼O}£müºû\®½êªä†Á¯ í-<ð™ÇwÖ¬Yœ8q‚¡C‡òÀ››Ë¢E‹øôÓO}u‰OÐOy¢C¬1op ¸©7<; :Ç@Ä¿EÕL£ÓcóÈHxü>…i÷¦¾^á®»N'))Š ~cÁüBbŒmus“ ½!Îàâ¬ms½ …8KÑ+ñ/ƒ»D«Œ.AÇ÷¥ßsV™ß+ñ:O’-äYÝž^ìp¤7ž_=‘@„Ix} ˆ×©c\Öz÷€_~X×Ýâ<—jÏÒó+ ktßÍ ]m?¦O¼/Æ#ZŠB' ò„ØVuB„>ÿc) J·n‘‚CSáÙþ8~\´:ò[¬‘ËuŸ¥ç7lð™ðýòË/ÉÏÏÇh4rÇw0qâDfΜIvv¶¯n!ñ îž «ÑàL 9œÑ–_`ÿÁ²¨âuÓÇPV]íÇO½^[ÿùÏo¬]+ú*c?l¾êªéXgO¯ƒ·W;@{4éQôºCþ`JüObl"§w<]¿îbrÿൊÚ[º—ß÷ú}Ðî/i ¸¿YöEv1¶ö¦ˆ_c­ŒŽ°oótlKhšøÕЋ_‰$”iDüyyÖ2ô¢€ŽfQQýh¼ñ>lùþu} ©S‡Áó#Z„4·âWÛ(ÅoXà3ák6›1Å·+>>žuëÖ1qâDn½õV_ÝBÒbœE¯.¿WG(8­˜t†ãVÿŽðm¥x²~ÅtQܪÿ™P}^|¶}ñ(tDx†#›Ð·Í<‰^p qNw:É£èu^”î‡ò›o¾aãÆFFÍyç°{KBƒ!݇°ëð® Ý¿ôD)å§Ê¥ÇWrG¢hi¥¶Âá¡1¥Õpï;p  :·p¤ z~o‘žßPÅg·ÿþŸ:„Á` %%…)S¦øê6’fãFôV©?:ëý¹9¥'›@9Pë´-HtÚÖ¨¨ƒ1ÀsçÀyIðý1˜»KÝDš^…¹94Iô:W¼òضH¿ ÎbÇŽölj‰‰tèàmKwIkaH÷!€(p á[PQ@z§t¢LQ¿·¤-£{Ö½OHƒ´bµUPÓÅoÐM•bkë@© ë(‹^ ·â×¹å)ìY†“&Mâ×_Å`0Э[7rrr8P>q ynÞ«¯Z1«ˆxb{Q1Ž«/øQGÀ€KÑŸ·ø èª;6è¨@~9Œxß¾=Ê ~Ì‚!z{öºˆÞ±4"zƒÞ¬çá‡æþûïGQ^}õUÆŒqSŽTÒªéÖ®ÝÛugׯ»˜ÐoBÀï_P^@ßÎ}~_‰Dàäõ%O´9¢ùž_Õž#}7Èq+~A¬ô¯d•gI¸¡¿ƒ^†âb¯¯ö¶1Ú!ª©Ÿ4Ãá2ñ>ߦÂIñ^øòÿ=·Ür <òG¥¢¢‚GyÄç®6nÜHVV111Ì™3Çeÿc=FïÞ½éÝ»7ÿûß}zïðÄMžVÔj36Ñ»]}Š–‹ïEo Bôš?<ÑêŸödA Ñ…ÈÕèŒx:—tVš×¢©´fÑ °sçNnºé&¦NʶmÛd:B%˜®¤ð•,7ïÕ×tDÎo/l9¿é4½Ïo pÉùÝ¢n,Fêò”ï+ó%¡Ž.çWËÃWs}›‚ hXG¶ÃÂ9¿›9¿_ËœßPÂçßÚÚZ®»î:Ûçk¯½–Gyħ÷èÛ·/+V¬`Íš5TWW;ìûä“OXµjß~û-&“‰ .¸€áÇsÙe—ùt á‡ÎઊíF©½ê[Ÿ‹^€ õ5 ǰ/ƒº­F=¦›Óyì"9P4Iôª?Äá$zA<<2dH°‡! 2Cº!;/EQ0üéžzK=EG‹¤ð•]{#Íš€K_gÏo/|?OÖ!æ@­ÞNGăaoðèù]•Ywù¾Òû+ uÔïmBžy+¶ŽÌ…¢±fõuy½-Ù½ÑÚ•×=¿¬k êº$ø\ø2„ÜÜ\FÀÇìóvŸ>}X¿~½Ë¾Õ«WsÓM7+ü‚Ó§O'''G _À–׫U èÕ0àþI›öÜ‚{>CKÓ…æŠÞNW =Ñ ðÝwß±iÓ& cÇŽeذaÁ’$ é>„#'Žp¸ú0=Ú÷Ø}ªü ³Õ,…¯$ˆ8ºò^ünÁûPKo(Eäë©Tÿ¼µÊæ‹_‰$Ôˆ-äY—Š0U×wÛWk×#ˆ< »ãÆ[[\¦½‘â7$ñ¹Ç?//Ñ£G“žžNzz:_|1yyy <8 ¦’’ÒÒl}dHKKãàÁƒŸ={6W^y¥Ã_NNŽßÇÜ„Uh±ÌE",*P¢Äˆ»Æ)¡ x¡¥¢÷BMôæää¸|·gÏž Àý÷ßOii)GŽáÚk¯eéÒ¥›$4Ð \åýج‚ò)|É“'ûdn”)@ÍAûMèôY×NÅÏaÏǢ׈ð*Å!Òy4¯Äá&\ËcØs.j‹wv.Ã/5|e‹ íÑ·h!Ï3D¾öŸÉ×x-zǨj¢w7íŠp³?øtêÔÉö>))) ù’ÐÁ`0™œÉžÒ=½oAE}û`4ø£ÌHx1tèPŸ<|•)@-ÁøEls¿›]ÞÇÒ²w®- êv p’¦µ^iºø•¹¾à;[iþÃ5ì9¥H|Ï5üa‹‘ˆVœÕGŽ·ØÆ"ÅoÈàsá»gÏ,X@aa!f³ˆ”7 |óÍ7¾¾•[Ïîu×]ǬY³¸óÎ;1™L¬X±‚ øüÞáCžc1«"Ñ«7¢W£ð b"·è¶€î‡ߊÞм‹/æá‡FQ–.]j›¤%m~IýØùË΀ÞSVt,%%%üîw¿³}NKKcÕªU ž3{öl‡~ßà>Фõ\ñÛÞǰّž_÷ää两³UVVt MµÇ¶g‹žÐÛ¨“øÝ쟜_gZd‹Rüº {ô¹ð4iS§NeÖ¬Y˜L¦ÆOh[·neÚ´iTUU¡( k×®eÉ’%Œ?ž /¼‰'Ò¿ÛxÚîS45ÌY+5§æõj9½½=a[µÁÛ”'g¾¤!Á«½¦Ä ’G´ƒµ|¯0©ÜÜ%%%¶'ÛcÆŒaÉ’%A‘$Xd&e²ò›•X¬LFÿüf;SP^ÀÔSr¯ÖB S€ -¤¹ÃYüê·!æ€bl*×Wâ׌kÇm;ˆ\ÃæÐ4ñÛ6¼¾ ¥5™’,<‹_â7½âׂ·žl±¹F´±Õ¨݆&~gÓ›yõðÅWöØ|.|#""¸÷Þ{}}YFMII‰ÇýsçÎeîܹ~CX ¥ë†(š¶åk4›¦ûì"xõ=z[™èxòÉ'åD*„ð­1×Pt´ˆ>ýïù?Qw‚CU‡¤Ç·‰È @¡_XƒC¥çªb1€ÏÄo ÂIUƒXT ïzì‘Q-™/¥ç×?H{ ܋ߑªç7¦E6F#œ2µ›ó›-º¿/«ïÛžø 4>O°ºè¢‹øïÿëëËJZÊß^NALÔUÀq\[1„*zÑ›îæÏ­èE«½‰žÌäLö–î ÈýöW/‰¾þÁS Ð믿ÎÉ“'©­­eÅŠLš4)£ ôÕž*=ƒK¡C}µç4šVa6±³"ŠëœTÿ´9µK³ÿ všWíYâ ¤=úç5˜kµç‘1M¯¾Þa‹üo‹ÿv©ö\ ¼ ¼âƒ»HÂçß &0nÜ8Ú·oOLŒhùl0(* wc›A7‘{>ª9˜J#ÔY!)NÔBi­(NÕבPÁèÕ¶{ôòzìÑëîéxøˆÞeË–ñ÷¿ÿvíìÁæ œ!i­to׎1ÙSº‡«Î¼Êï÷“­ŒüƒLò5 x~õù¾>ðüvC¾ LŸ.ÿgÿ„-UµP¬°q.ôQgéèH¸í÷ð[%ÌÏöŠbè[@ƒ¢×ÙýÛ`åæÖ!zòòòdޝÄFfr&ÿ;ô¿€Ü« BVt–„äü:ÇQn‘ªøÕðu…Y-,ºDˆ•"¼RÞäJñ+i]øGü)~ƒƒÏ…ïå—_Î;ï¼Ã•W^éëKK¼Â?¢·Ñ¿,:Ÿa½zn¼æ¾)Žqݼ½nC›5Ñë©èGø. ~ýõWV®\‰Á``äÈ‘ôìÙ3ØC’‘~]úñï¯ÿÊÎådtÎðë=$ßÒrñ{ß,¸­@¥ê× ÒâaÓaøé¤Ž7¤ø•´.Z‘øµ LŠ_ásáû /PUUELL ÑÑ¢ð·Á` ¢¢Â×·’¸àÑ[”F#ôM‹Õýq¡)Û¨à…ˆÞð_ Lž<™‹/¾EQ¸ë®»ø¿ÿû¿6ØP¢‘™œI­¥–GøÝ^Àø>ãýz‰Ä÷´\üBËÜU@t|1 ªIÀVæ~ï}×„ÍØk^Jñ+i]OüjU  ï¢]DekŸ¤øõ>¾_ý5C¨–7jÍø¯*c•újµÂ¹gòõð]1œíT}Å60!ʃ0ÒËÛ8+W®äŠ+®D+…K.¹D ß6Lf’¨ì¼çÈ¿ ßò“åTœª¡Î’0¥ñ ö¢Wš.r]l«››…U½ÔÃgÙE/€Ñd¿‚£§¼o¹R,S_gHñ+ kô^_´øU€@ZøÀd€E˜QcªHŠßÀásáËüùóÉÏÏçÔ©S€ðøîÚµË×·’4H>'¬º…–m6˜ á¿Û¡ú$ôé W>ÙwÀèP]/O¬…¸ ç÷úOô¶®‰?%žÄ9ýôÓ‰âh$Á¦[»ntŠéÄžÒ=\}ÖÕ~»¬è, œÅ¯Fž˜G4ñ«+ëì+ñkFˆß‹“]÷™Œ0¦+¼UŒ½­èÇ1fŒÔï”âWVOüV#Z{Þ6 fœ ±‘°:žØǬÞUh—â70ø\øÞrË-Œ1‚-[¶ðì³Ï’ÍàÁƒ}}‰ÎÞÞ|×CŠ€âæxûö om†—‚ìµðûùuõ`¶ˆ¹¶}3¯ï Ò±÷lóº€U½/½ôsçÎEQV¬XÁW\AU•ðí˶FmƒÁ@fr¦ß{ùj·wbo¿ÞG"ñ/zñ›}Žð¯øÕ*€¡nŠ¢ï?.žOªŸcðîA´Ã8¤ø•„5¿Và¤îý<£fñì,’J8­£x­²ŠüûÆìÑ­ø=Ü*ů¯ð¹ð-))áà7ÞàÊ+¯dܸqüîw¿ã±Çóõ­$ ¢¶2rÓͨ©nPàƒÍðÅ6|ÌxÎ9®¼¾ú—‰ã’^_¯D¯&x¡M‹^€¥K—²lÙ2‡m>ú¨lkÔ†ÉLÊdÇ¡~½GAE§%œF|”Œ0„;ú¹!ßñ³¾Ý8ˆßôˆß ÆOÿWö€]ºÃgåâ½Å$F›Œ¢&G–âWÒºñŸø­, ÌQfÉçð§õУTT ¬Füub¹žÇâsRüúŸ ߨ(ñóCYY‰‰‰”——ûú6¨!ÎzZXN2Nµ0çØõ)\q=ìÜ F¨W5R"‘?èEï<^í@m;´YÑ ²‘ĕ̤LV|½³ÕL„ÑçS <¾2ÌYÒºÐæ Mü:½¥îVçà”\£.¶ÓwyE;¾> çm{2 g|ø+<ñD˜ ]¤v…ƒPS&”Y¼›£¥ø•´Üy}óñ—øÕ2 ’ÛÁÞß`Ö`XäŠÚ8ñ1`Š€ªj8f„“VèÜÈ5¥øõ>OÇÌÈÈ ¬¬Œo¼‘óÎ;¬¬,²²|û#¹qãF²²²ˆ‰‰aΜ9û¾úê+†N||¿¶D| 0ÀíuSRR6l˜-äºm‘‡ÍÈõù½^X°J¸¤v ¹à ”ø(J ¢D»‘—tU !|ƒ-zÇЀèMÓmsðð:‹^éám GŽ!//o¼€k®¹†’’ŠŠ\¿h¿ýöO<ñÏ=÷ŠÒ„R£’€Ó5¾+‰±‰ì9²Ç/×ÿ¹êgN™OÉPgI+ƃçÔ¢WØ=Mc„çW{pÛo“ ±pÖª2ü¿ØE¯ÆíS gï¼Là¦4ˆƒ×ܦTI$!‰»µï=¿í8r>û *«E‘¹o áâ àß‹ ×é`0Àð¡°eÄÇŠµuC8?Û^ƒðø@iÕ:„JÏoSðO"—$@hÓ$T¥+߬¹vՙ̓>‰0Â^˜Àw\@D„‰'jùë_ßeñâíDѾ|³Ð·+ÒBÅR2°‡6kŠX;ØÅË ® IS())¡{÷îâ¹™Á` gÏž¼ÿ~/.ßJµÔÖ ¶Ú úpçªbì©U2ìÙÒCwE¯Ô°ç[hqس芽&XõŽë1uu°ú]06ašÕêÌ¡½#J?k¯dسׄ¤Ç×[òµ½|B·×©£^ôºiëkãèQ÷@••§0ñ?§ÛvEú*™½¼Ú« mö%ÉÉÉ 2„×_©S§òöÛo“ššê欺Ó0|óÍ7$$¸¸ $!BfR&õÖzöWìçÌ.gúôÚ²•‘ÿ‘…C -ÄRk§¢÷:eÁ CŸ·ÀÈfz~;G-°¿ú^ ·NÛ¿‹Æ]w%ÛŽ7.Ûo/á•åeÄZ¼ð€háÎ6¯/b½!=¿‘¶ʸkw4Cn»eí;>r ¤ï³å­-½³Ë,°æ=xìy˜sÄÇÁáßàχҲÆ[iÀ1 €Õ3 b Òóë%!éñmŒ­[·’ššÊÂ… Y¾|9©©©¼÷Þ{ìÛ·ÔÔTî¹ç>üðCRSSy饗‚<â¢)\·×ÙÓëÜÖ×Ä ¼øâ§ÔkyUÊʪY¹ò+Lf«ÇíMôÚŠXe`/F /ëì6´YŠ^‘Mvv6<ýôÓ¬X±€‡~˜ììl·çȪΡO¿$‘ èWRøúYø1ÑÏE¼¿º‚W-ñüv:[àÔQX¸žÎ†„öFn¿½‹ÃqƒìŠÙµ \¯ÈÝý‚Bz~="m1Ôqçùîb)0¸»¾ô†( »ú:÷H}F@ê0Øð!tPšÞTï¸*BÆÈEz~›HXz|GMII‰Û}÷µ.ôMž½ •â¼E¼ßÞ€·WALzV ÒªðÝ·‡¹ôÒ—X°àRÎ:«+Ÿ}ö#½ÿjNÖ“°—½èµ±ƒcÕf^^¢×ôíÛ—Ï?ÿÜeû‚ <žc±X<î“„ÉñÉtŽíÌžÒ=L`‚Ï®[g©ãÇ£?Ò7Q ßp!üë_„ªPL¸Fxk4Šó {!Ö¶Þt°ˆN ]»EíêãèÙ3 ƒšÜ¶<_íC/싉0ôü»öEs¶è/ܽš.¾Ï:{ÔZixk‹šç× œ:‡‚vˆ)z‹Tfk# X0 Ò¬ÚVÌéºÚ¶-À˜]›£0ôüÃÃRøJ< qn$¯·8aÂl¶‹‘HƒíÿÝψÏ۶ŘŒt´X1ùwä.4(zZã$«½¡;ùJ$¡ˆÁ` 3Ù÷•<ú#Å"=¾-$…e¡9à¥øU'mMüjs¸· nàÀþZJJêHMuô.nÛvŃ×i3N‹í5[Û©w}5µïKñU¡9i‹­ÿŠ_vØÞÃ>¨4BW^žÆðáÝøöÛrV¯>@½U¡£E±Ù¿öÌ) »øu)@‡z€­Çoh¯…ƒQøQ ßÖ@U±KˆóÏ5Ž‚W›³ßÇ pÕø‘<òÈíœyæé|þy>sæ<Ç7ùtD<©Š"-qÖ÷èu)b%½¼‰_ÉLÊä“âO|zͶÜÊÈ—ìØ±£Å×)Á¦¼_Müêª2Ì-L4š²àŽNáÖ[‹Y·.øxñûðázîüs 1&ˆôˆãòÀ\/~{¬ j Z Ò[þ¿ž8‰½›6]Î%—Ø „Þ}÷@.¾žj‹…ð(~Amq¤¯~åP}Ýy,‘Â7ìQթгK¿y•“@¥Éݬ3Y»ö)L&1^xa¹¹Ù¤¥§þX55|'½ƒ¼úm‰¤©d&e²l×2ê-õ>«À\P^@\d=Ú÷ðÉõ$ # ?†:ÎâW·-áÕ[cONJ)jÞ‚Û$X`ë–ãôèñ-W]Õ‘S§¬¼óÎ1°*t°4ÜÏ×£øÕúˆjÞÞ0 w$ÒÃ…àˆßZ“+.Os½ƒ'qÛŒ~,YüŠEÁ€{ñ N^_í5 UüêÿMÒ&A ß0'ÏÑÛ릊38æö~ƒÈµœ9ó›èÕèС7ÞxKêºq IDAT_^õ¾ogÒjy{^}åæQH/¯D2“EeçŠB[±«–RP! [I‡Ùºu+Ó¦M£ªª EQX»v-K–,aüøñìÛ·1cÆpòäIN:Ejj*=ô·ß~{°‡ÝFi@üjŸµÙ{sóÜ1@„NTYY›S D[D_oR˜<Š_ç'ëmÐëÛÒÃw½~ý+~-8ï¼®n÷{nW^xá[쨜ů†Í뫯¾ºg ¹N–·5PìøÞSˆó)D’=@||¬ÛKµkK0žAjÚÖ¡]‘ÖŸWŠ^‰$`d&e¢²³Ï„¯¬èdáÇpC/~Á1ôGñ{ ù îQ\Í|ží,~Ók„Ú!§°Ê9´2¶‰¤¸$ö–îõÙ5 Ê Ñs„Ï®'‘´ô!–ÎÞ_ìâWõàø#Ïì]N ¬ qˆv,à(~·¨c°•o²y—ÀQÈ·mñ+ wôx:$dÁU/£­®}a‹Qf…5kp÷Ý:ÔÞk{þü¯xë­ šÆ¤IçròdË—oçPI­Šk$n¼¾  yöôok{HáÛšPÜõ°ï¢Îd¤k—D~û­Œ·ßÞÆO¬`öìÉÄÆÆP^^ÉÝw/¤¸ø0qn:ö"Í6Ñ«¯Üì1Ÿ¤è•Hü‡/+;W×UóËñ_d+#‰Ä#ú¶³÷7 ½,¯*¾¿ pÌ'èwÖi ˜ÆçŸïãàÁ2Ú!*Òês Qß§èCžm^ß,uìRüJZ úÈŒBü¦ùFüÆu Œñn¹õ,Î=7™/¾ø%Köð—¿ŒaÑ¢I¶¡ûîÇ¥—.dǧ…D™­6{Ôçú¢Echh¥¤øµáÚÜM&ä{Ü£oç«}¶«Â=÷ÜŒÑh$::’¿ým1))—1dÈRR.cåÊ÷QRØJkWä"z5Oï ÍË+E¯Dh2“|'| Ë YÑY"iwóÀ ù¤¥sæì›Z àÞ|s6ÛrçsÖY§‘œÜÓNëLµº_C[_¡>h×BžsÕ÷.‚Î3T€Ú#7L¼€AƒNgР{©ª:ÅÕW_À!¬[÷)Ç1Y´Ê úû¸„<Û*Éêçkž_Ië@ûÏ‘ZØóf³É~”sǯ–é¢ú: ˜E…c œÑ+‰„×ZÆá˜Ý»ÚŽñtœmúƒ Úf«#)|[9å€ÙbaùògéÛ·¸çž§xþù×80ƒèè(ÊË+‰Ü×yö‹ÞkÔ#¥—W" &šØÝSº§å·BVt–HšŽs_QÍûë[ñkŒÿû_!»wÿÈ`Ô(û¼»yó.&N|œ£G«1 ª.أäçWÒvÑÕ¡q¿#sE•å-Øk¿¡¡µ!ÒÚí:‹_Ð^çžûˆ;0iÒ9œøŒë¯¿ŸïNœ¢ƒÎ©•^£>Ãé&ƒ´7šM¶~ñ–Â×[öîÝËŽ;ÈÎÎöxÌìÙ³éØ±£Ã¶É“'3yòdÏ74 é#£"#0 ¼ùæz^~y¥Ø§nK´úÇÛë z3pÌçu+z¥—××äää““ã°­²²2H£‘„™I™X åœ|v³®a¾‰RøJ$¾Á]èó@±ÝMžaSÄob‘½{g&“‰+¯¼ÚÚ:~ÿûÛ),,aÞ¼?1zôùÿÂSO-c÷î=DXôÅ<Šß´bu|šø•HZ#êúU‹ÄÐb›Ó!e‹=ôš&~AئÉhà‡b6›±ZÖ®ý'gœ!¬Ì`0pé¥#xæ™9üéOÿ @=/ !¸Ç¸Ë÷u(tå,~uÿžVDH ßóÏ?Ÿýû÷»l7 ìÞ½›”—"Ý.:tˆ?üádggÓ£GÇ-Z´ˆ!C†´h¼GôªÜ«^ ¢EmDµf3¦z3V«•ˆúa¢¾Þì·öE.¢w ª¥è (îàìÚµ‹¬,ùßXÒ8ZAª=Gö4_øVгCOb#ý]3^"iKx }v­0ÛTñ DZŽšà×_Ëyã÷Ù¹s/_}µ†¬,ñ;pÎ9¸òÊ‹¹`ødöæO”Åêp ñ›ä"Æe¿Ú¿C"imhâW÷0JÍ©uúì w펢­ Ï=û&‹•!Cβ‰^ï¿/⫯¾#""‚cŠB¾ÙB=p‰v=ç|ß4¿­3:Ã_Q®-bÇŽ”––ºü9rÄ+ÑûË/¿0vìXæÎË„ 0â`à<é Ì@®ÑÈI“‰‰7L$;û_Ìœy ‘‘‘ÔÕÕm4c¶ !J¾Â­è•ž^‰$ìè×™®ñ][TÙ¹ \¶2 $7n$++‹˜˜æÌ™ã°oÕªU <˜þýûÓ¿ž{î¹ Râ<¥ Ís­.µhdŒ˜Š/ÆMM7DõõfÞ|ó}^}õÆŽn½ÑÑQÜ{ßtNY¬XÜ\ãºv.¹5œ‹úÀÞýú¥5!m±­£å´«ö˜†°Ç1@šÝ&Ó±¿Ž»¸á+ëæªíÕ5¢Êúñ(ºpæÿü'—Aƒ&²qã§L›6«¯½”ºè(v›L|ƒ½Â4Åê‡ØÛÀv»Ô^õžßÖCHz|½EqS”éðáÃŒ=šx€?þñA•¿ixÂØV¶lyŸQ£ì½î¹g6C³†S[YéZÁÜG4(z¤è•HÂÌäÌ ßÂòBF¦ôáˆ$ ! ?¶EÜ…>·ÜóÛ8Qof×®ï¹á†+ÜÓ³§ˆ¦³"Z°xE0Hó"µÞy_Ú¢Äm¯_M͉°ã”bÑŠÔVoÊéu,Ž& “ÙÂo@aáA>ù$ /Jyy%S¦ü+¯ÍÊ•Ï ÀáÃG¸èÂø ¨„‹…-50R¿ öW*VSî<¼­Ëë’ßÆØºu+©©©,\¸åË—“ššÊ{ï½À¼yó8tè‹-bðàÁ <˜ÿûßA±¯hü)ég&—_~©ƒèHO?ƒ;ÿò'êŒF×&×-DŸ¾ë^ô^ƒm’¢W" 'ZÒÒȪX)¬(¤o¢ôøŠ>}ú0`À""\Ÿi>œääd@~l}øÞóÄš-œ:UˇnÇbqõë~ôÑg˜ŒFïE¯ ­×ó+mQ"ðàùMÇææMÉ`GÆ8z€Uç°‹ç×tD¤-þásxõÕwXºt‹…%K±‰^€îÝ“Y¸èïÔX,¼hq¶Ø^?ïÃÑókKŸÌÃÕëÛzl5,=¾£G¦¤¤Äí¾¥K—²téÒ(t8j42xÈ ·û €ÙjmÚÓÙFHÇ>‰z½ž/HÑ+‘„.™I™¼øÕ‹Ôšk‰Žˆnü‡ªQc®‘¡Î!ˆ7…%á†ï=¿íhE¡¤äWþö·…<þøL&±zرc7Ï<³Œh«µi”bÔœÂtФsµŠÎRøúŽ@~ ûŽmß‹ß(DÝ›§Ÿ^Æo¼ËرÃ):PÂ'Ûwc4ÒP€zõøHìíW4~ÖªÉj‹|/ ã«nÒ%MCÚŸð²˜iØE¯VÖY眰ϳøm´³*Ô•@IÉaêë뉌ek?ùäK.»ìVÚ·gÖ¬›‰ˆˆ 'g=ßüòµjª¨gñ«üi§Áè>"…oØà]˜Á‹…W?ØÌ‡næ’Kì…üëÿ–m±¸LJÍÁ;Ñ«G†6K$áFfR& *;7GøF#Ië˜ÖøÁ¯Ø±cG‹ÎoJáÇðìx ñ‡øm‡ÀGþÕ+ß‹•Ž@ŒÕJ5pÊhĪ((ŠBdD&³™Ó±×Íi8¬:°â×Wݤ-JšÇtñ’ z~Ó±÷4ÒD°Î ܘøñ°©#PZqŒeËÞâŽ;¦`6›™2å† Ä{ï½N|¼(gûøã2qâLÞ}çC>R«±A­4½EwQ›øG»ô­£ûˆ¾­Œ €-—_~5&ü#†óý÷ûxõÕ×±ÖÕÑÉ÷Ћޑ1£u+zµ/®½I8Ò)¶ÝÛugoÙÞ&Ÿ[P^@¯Ä^Då4hÚfáG‰ÿx~£Ìöˆ±J Æh¤wï3¸ýöi$&vdýú÷Ù°aù€ÛîÝZóÒAútëm"mQâŠ&~Õ\ÚA¬ S3_wâ÷€ã!D"ŸgÍšÏ×_Ïi§uåСüûîk6Ñ ÉóÏ?ʆÿ|À÷èD VðªHwáQÅ¢%`·Qw;•+’°ÀÙÛëZb¼Æ o9€Ñj%xgÝÖ®]O¤ÑH¤ÙLZ^ÍLŠ^‰¤m‘™Ü¼W²•QàÙºu+Ó¦M£ªª EQX»v-K–,aüøñ…-ZˆÊ©S§yÔÿàŸjÏ ."‚áçe±yóZbbb˜:u ¾ÄÝwÏÅ¥‹Òi£õŠ_i‹’†™Žø¾«vš%iX½ÙUüjèíµ¡(¼úÊêÌbb¢4ȱ @jj =RºQyè°£½×¨¿ Öôi@ú:]Øsë¿Rø†-ö ­ø8üþP˜9wØPN‹Œ¤dÇD( ­V"­Ö®ã=.¢wŽ%]D¯žð4‰¤­“™”ɦý›š|^AyWŸuµF$ñ„,ü(qÄâ÷`6›Y°à¯6Ñ«qç·òä“Ïóí‘2ûF-”S£Jó&µNñ+mQÒ8z‘êÐJ@x€«ìö©Å7§ †$×8Ú¨öÞ€HKˆ7[8TÕÔR\|ˆ´´ÓîZYyŒ#Gʈq:p¿ƒ´ßÖ!~òQÛFçí-å\÷‘‰ú¤nìÙ“Ï_îàÓÏ>á@Q}22¨2™|Ò¾h,nDïX½Ýl“H$áD¿¤~ì¯ØO¹¦ñƒUê,uüXù£le$‘ß·:áñ8ûì3]öEDDЯ_ÕˆEõD+[þb®úÞ&Ê[O«‰¤ièů¾Vš=ÿW³Ó18Øê(ÜÛ«öa22oÞÓ.áö?þuuõ£ÀQ“‰ê4ülWz|Cž†¿T_ÃW¿ZØ´é%úõëgÛ~úé§³ò3xð0j€ØŒ@‹xp½j2)z%’ÖKfR&VÅʾ²} ìæ\™Ý=EG‹°*Vê,‘„þÉù=üﻸâŠKöÕÔÔ°{÷·X}Cm×ÒWMGÜ{~|Î%‰¤- }ÿõßûœsî0¾úr'{~(À£áâù-V/f¨ŸÃ×ó+…oXášÛûÕAˆŽŠä÷¿wnq ƒ ¢{÷n?ük³…¯½O2uêTÊËËéС¯¾úªÃÀo¿ý–Y³fQZZJDDçœs‹/v “„.™ÉjeçÒ=^ _ÙÊH" 5š.~{áZAV#8Áƒ>ƈçÒ©“h·£( óç?ñcU$û³zŽKë”±¨=}µñé ¯Å´DÒ2¿UÅv·îXò~µÐg ½øCà¯>ÿŠíÛÿ@ŒÉ$lX¶l1Ó§ÿƒÁ€¢(¼öÚ›Ü|óä(ŠèþÒ¨ø O¤ð sb#¡Þl¦ªªÊ¥Ï[]]ÕÕÕÍn_Ô¸èÕÚ”HÑÛ™9s&·ß~;7Ýto¿ý6Ó¦MãË/¿t8&66–_|‘³Ï>«ÕÊ 7ÜÀSO=ÅÃ?¤QKšJǘŽôh߃=¥Þ¸*(/ ]T;ºµëæÇ‘I$’¦á½øM¯±Ñq'~ @;³™~(¤W¯aL›6‰ÄÄN¬]û.ùùßi2QaÑGF~´Z9\ú†:çûJ$m wâ{[!}û#°•vn(R#ˆ±XÑ*ý-*L&.»d4·Ür“í8ƒÁÀÔ©SX·î>zÿC¶iÕÛ¿áéõ•Â7,±O\ý»‹ hñâ%<ôЃG½þúJޝ&©wðNôêò)zÛGŽ!//-[ÄÒèšk®áÏþ3EEE¤§Û3Nz÷îm{o4:t({ö4½B°$¸d&5­²³VÑÙ`ðE×p‰Dâ;¼¿é²E„Rj¸¿±@„ű£•üë_ËPP,ŒF#™ýÏæ¯½‡ôôÓÉÍý„'Šì'‰°X¸w}C×é"Èd¸³¤­âAü‚£‡ÐçÆÒôê¬VÆs¸ôÒßóî;ïs@¿ÑkñHáÒxJ&ªŠY·&.6`Šˆdî܇9vìÓ§O#22’7ß\Å#r ¡Õ«JÇ©z³‹èÕ#Eo[¢¤¤„îÝ»c4ŠŸSƒÁ@Ïž=9xð ƒðÕsâÄ –/_ΓO>éñº³gÏv‰\p×à\X2“3y¯à=¯—­ŒÉÉÉ!''Ça[eeeF#‘x¿y¢}‰ºÈM¡qñ t¨ÍGFúœÝ;>¶¥´œsÎ0ÆËÁçñ–zŽKßP[o_m|I[EÿýÏÇÅ´ÊÏšVU®·9ú&‡ýìv_IÉ!"L& K#՞݅=‡‡×W ß0å` \w¿‘ &°bÅ žyæž{î9žyæY@x×b­VÛ"oñ(zmÕ›õ¢×¹Woèá%Á¡®®Ž‰'rÉ%—pÕUWyÜÌ6KCa”îÆ)‘´Eùî' ÒÒ웼¿‘f3Ë–¾Ê=÷ü…äd{LhYY9/¿¼‚HÍ>ÏoPü†OÈsX¶3Ú¸q#YYYÄÄÄ0g·}ëׯgàÀ <˜~ýúqß}÷aõQÛÐ@LTg ƒ¨¨(–-[F||<óçÏç—_~á£>böìÙX­VâÁëü^½¶mXôjHÑÛ–IMMåðáÃ6ÛR…ƒÒ³gO—cëëë™8q"))),Z´(ÐC•ø€Ì¤Lö•ïkôØãµÇ9\}X¶2’HBw‘[Y"äX×B%%ÃÞ>Å}€¤@‹-ëÙ3ÕíþÓOOêF i‘ηN‘HÚ2ú”Â8¶=š!lU‹Æô²5Y; ºê8çžsË—¿ÆîÝù¼òÊkœ3ìBŽ­¤ÓñEˆêìžíõe©ÅQXz|ûöíËŠ+X³f ÕÕÕûÆŽËÕW_ ˆ÷ˆ#X»v-×_}0†ê#Üëëë9Uc`ôè$$Ø}ºíÚµcìØ±œuÖY,Z´3ÞýNGToôNôÊœ^ $''3dÈ^ýu¦NÊÛo¿MjjªK˜³ÙlfÒ¤ItîÜ™ììì VÒRú%‰jÝ{ŽìaP7—Œ……€¬è,‘„¾óüa”[¶l㢋~ç°Ïjµ²iÓ‡Ô×רr‹…´R´¿é¨•ž=ä9J$m½Ä® ²ÔÐç<ªÎ®ÖÁÀt´Xøí` ·Þ:ËvN¬ÑH'«Õ­nhMžß°ôøöéÓ‡áú¿§];û³ŠS§NQ[[K×®]9ÿüs—í ,°½Ÿ2e S¦LñÙ=%Á#39Ó+á[P^@r|2c:6z¬D" œ=¿ê¶„<‘G¨Ò˜ç·=PYWÇÈ‘£9òz÷îÅ–-Û()9D{ J=®÷a˜®„®çH" < x~Éj°:»Þk«E\èO{*†P‡p o—%¸Ô¥-Ù:µòôô&ü{OH ßóÏ?Ÿýû÷»l7 ìÞ½›””7g9žÿÍ7ßPVVÆe—]ƪU«˜4i’Ûcñ˜Îúõ5FÚ·oÏõ×_Ͻ÷ÞËUW]Eyy9/¼ð7nöø:‡7§Ä ä5Ñ«E6ËbVa‹,¨#ñ%™I™¼³ïF+¨( O¢ôöJ$ᇻEõ HxÒŠmnކįá9:ìüôsvîø˜ÍtÁ.z½¢Jî,ůDbÇÙNÁ.€ÕÖdéÅ.ÕÙ‹ÞÚbÄúph[”Ž«øU€c'…Î‰ëØ‘Oñ­ÉÄ/ ·4*~CÏvC2ÔyÇŽ”––ºü9r¤QÑ«§K—.L˜0Ï>ûÌ£õÚ—:ßáóîÝ;xõÕ¤¤¤pìØ1’““yöÙg:t(—\r ¹¹¹F—ät= |S¥ IDATšèÕtîHMôŽqÚ!E¯D"QÉLʤèh'ëO6x\Ay]24*‰Dâ[Ü…SÎa”iˆ5BzÃaÏ è¤(t2›é„—¢W:iÃq $‘HÀsKQ°½rJSЊ^¥a÷mõÂ.‚Á5 £ 0GFò曯óÛo¿P¸?üð½ôçŸ&ß‚kšBÕ:àÝUBËvCRøz‹»üÖ}ûöÙ*Í?~œ7rÞyçzh~cÕªtëÖ…ššÊÏ?ÿÌÉ“ö…hmm-q ´1Ò‹Þ1êg›Ðí…‡Ø#)z%’¶Nf²¨ìüCÙQ…‚réñ m»ÛÄ·¸›ãg8æ6¡Úsc¡æ 6Jh- BÚ£Äÿ¸¿ºuº“øÕW|NÇ¡ ’ƒÖd€8e4²`ÁÃLž< “É@FFÞYÏIEáyÜTzv+~C‡°¾[·n%55•… ²|ùrRSSyï½÷QL§ÿþ <˜#Fpùå—·ªÃcǬôèуÈÈHguIIIŒ9‹ÅBwç:{zÓ—-¼97Þ^)z%‰½²óÞÒ½);YFeM¥¬è´n÷ÝwŸË¾±cÇ’ŸŸÏîÝ»ÉÏÏç“O>aíÚµA¥$üpò$iâ·>¿ÅžvØ \A8µJÑö( úuº†®í‘&~oÅ^ô*ÃQü: `Ô}õˆjì'^çr×ÓN; .ÎA<´9r¿¡c·!™ãÛ£G¦¤¤Äí¾yóæ1oÞ¼(pdfFòÊ+{ùõ×_éÖ­ýúõcï^±}÷ÝwÙ¾};ñÀ §óÜyzSb°+`ðâ RôJ$’„èRR,pUP^ÈVFÁ Oáe_¿~½Ë¾ÖÝí@â<Ñ™áX@ïZ¹£Ç0KÛÆ"t«q-G0Ÿp*ª)íQXôës§ü_çvG\ó~Óì{míºˆï¨;NTŸ@ÛãЖLÿ®Ïù |ß°¾m™?þ±=tŒ3neÕª·ˆ‹‹ààÁƒÜ}×]¤šL´³X8¢;Ç£è…!ÎRôJ$Afr&{Ž4,| èÕÉe9+ 2MéváÙñ@âk¼¿êÚ¡¹âÀŒxX¯ü·kgñÛü´¿»xKkï>" &šmhÅáTﯛM)jÜ‹ß ÊdbéÒå,\ø¬ÃòóóÉÛ½›‘ºs¶ ~R ñëH0ìQ ß°"޼õª•«oØÄi)ݹ|ü•T«¹Ìk-¾Öá\½Ù¥‚³&z݆8KÑ+‘Hìd&e²þW†FAE=;ô$626€£j²Û„glj?h }Ê €b›Û¶©â·ø¯ÁÀJÀ¢(ôµFð—b3wXÁXŒ¨L› _Ä·\üúªÛì>" }œmWWñY£Fæ5öcZeç4 ÆbaÑ¢ˆ‹‹ã®»î$11‘wß}?ÿéNºšLŒ´XlBRó7,~5.‚Ó}D ß°À16~ÜØû‚•%«ªølSQµ 3[9øŸî¸E¯VÁY/zÝ"E¯D"ôKêÇs;žãdýIâ"ã\ö”È0g?±cÇŸ\Gßí !á+‘Øq'~Õµ&~м¿uÀQ£‘§ŸÎÓ³fѵkWÞ{÷]î|ë-v¿¢°ô`(B Ñ ½uˆ´GIxàFü&¼lïÍ­èÈ\ª öl€ñˆÞÜÏ<ù4?þ¤íªg˜LüA'zõ¡z’AÄLÛR*õ¶|y ÿ]ÍG ß0ã@~1ÿÛ 1EðÐèÐÏbk̵½F|·ô¡ zzõ¸x{Co²‘H$Á#3ITvþ¾ô{²z¸þ>”paZÃ!´ÿâ©ÛAŸ>}0¶n3gÎ Âè$á‹—âw³XôŽÑUiv¿ Pm21pà@¶oßnKÙºà‚ HïÕ‹Çœi[aÄ-¨ý|õ÷÷MÈs ö( >މߔ" X<¼J×y€{×[­| ü ôºY,nï¤ósêõÕçì§k½¹ƒk³Rø† uLŸ^Ɔ ömqÑFî`eÞ¢o^ºú”U¦àVôêoƒ!ΉDbG_ÙÙYøZ+…å…Ü6ä¶` ­Í³uëV¦M›FUUŠ¢°víZ–,YÂøñãY½z5«W¯&** «ÕÊ 7ÜЪºH…~í´]/~”\Gñ{ûÚÄŒ¡œ?>qqqL™2…œœŒF#V«“ÉĘ-½bA½vx!íQZ8çýÎ"tÔ:±Yë¡­ U-ÿ÷ç{øó½Á1@ú¸¡RõºcPð«;KáX, —_þ……‘¼úê«\}õÕ;vŒ_|‘ùO>‰ñ˜‹*nkìß/¢×«¼^‰D"q¤}t{zvèé¶²sɱj-µ2Ô9H´ån’@¢‰_½×W]ÌÒ—Çq¿ ÍZÇÚÌÌLÆÇæÍ›‰‰‰!22’ªª*, ŠÑHüd+ÖÝxðú†6Ò%¡‰Þ~v¥‰_°—tVÕm ؼÀú^ÛîÄï÷À£«Á@§(­¨à"¸},±õI*vÊõ Éo¹&¿•âúõë4iÒ$Çš]\\ˆhÔ˜SW3_8IÖV(!D2ŸáÅBòkÌ%jcªÄþðF¶µgyþÖ[oáììÌ¥K—Xo¸M³L™2œ;wÎÚ”C¡ëê¼fÍÆŒáC‡8p _}õUŽeÒÒÒˆˆˆ dÉ’ìÝ»÷!K¬öŸPŽDEÝ¡zõ_Y²d ÇŽcñâÅìܹWWWœœœ˜4i/þo/„‰î„…R`•@]¼›øž¼v½ÒKâ+D±uiŽÜ¼!*3Ymcøã±É0ÅàE ½'øàúöíËìÙ³Yµj:Îæ9L¡K|ëÖ­KHHÎΖ«7lØÀùóçéÝ»·é¤¬°5jãÆ£k×®LŸ>ôôtž{î9ž|òIfÏžÍðáÙ6mÚýW$„¨µokâ“ãùrç—€!ñ-[¢,UËTµsdBûÊe¦·Ì›½¹;BlÔÝ%f»ë8zp?aÁAxxx––Æk¯½Æ… صk.\`ܸqÜÉŸ¬½(…V“-ùÍž›üì Ë›ÃÔJ:Nž8Aݺuiß¾=J)FŽI•*U²¬¹C‡4kÖŒ„„›nQ¡ëê|/IIIŒ5Š_ý•¿ÿþ;OŸ:t(*TÈòZ¯^½èÕ«—5BÌ—/¿ü’ˆˆ-Z„V«åÕW_åüùó\»v-Z°dÉÆoï0…ƒZ°` ,ÈòZRR’¢EIÛÚmy»ÙÛŒ\?’z•ëqìªa`«¢ÐËFñ°Ì»=ƒÅ‘žÛ`–“Y vzêùøJGŽ)Àmcݺu¸ººZ|?·×…´-?<ó}ÿÐ;¤·½CB8ãÉò~³ÇfM~j'À¹h¾Õ’’bqÉÉÉTО%ë}½æ]«%ù¢à™×©ýYŸ»e^Ü2Öë̸SmPûôŒ?žîÝ»›¼øá‡سgÜã›W–îß=uê”é±páB eÒ ðØcáääÄÂ… s¼§ÓéX¸p¡Í¯’!„¹²%ʲê¹U¸ÐÜ«¹½ÃB8<³“eó©3§HÑh@wç³gÏΑüÞ¾}›éÓ§ã¤Õí5îre$ƒ] Qðr¹‡ßø×xï/˜êö7Ý ·Ù1pà@ÆO»víèÛ·/NNNìÞ½Ûfу¶øÞÏï¿ÿNtt4)))(¥X²d Ó¦M£S§NY–SJêûÍúöíË‹/¾Èºuëx÷Ýwyë­·(W®/^äÍ7ßäÔ©SÚ;L!D1ç]Á›CƒÝAaUÅgª?Q¸tÌ|dcœ½$,óaf”Û;Œ?ž–-[2~üx7nÌßÿÍ{ï½ÇÑ£GyöÙžà¶ û†ÔEQ´uÌö7㽿þ¾ú4T^¶ŒçŸž™3g¢×ëÑh4Ô¬Y“cÇŽå:X±µºß'žx‚Ó§O“œœLJJ §OŸÎ‘ô´lÙ’={ö$[~çR–”eIAÔEKr›êÏè?þ`èС¹Ž$[”ëâƒpäø$¶g_Q«‹Žþ݆8%Æ‚‘Ÿ­UMT15oÞ<ÈCÅò1oÞ¼®;ýõ—ò÷÷ÏòZdd¤Ú´iS–×&L˜ ú÷ïoz~ãÆ åää¤t:ÔGyÈ#óñ0uÑ܆ ”§§§rssSåÊ•SžžžêçŸαܦM›Txxx®ë‘º(âúº(y8Σ êcvŶŷ]»vÌ›7J•*eïp„°‰ôôtN:E»ví¬^V~¦iú(Š›‚®‹Æ©þîç~SýI]ÅÔE!‡µÏS5J9мB‡wñâEê֭˵k×Ðjµ(¥¨Q£Û·oÏÒÕyÉ’%Ìœ9“uëÖpøðaÚµk—§!„B! ’Ìã+„È—*UªÐ A~øá–.]JÍš5³$½`¸Z½gÏŽ= ÀÔ©Seú!„BaÒâ+„È·cÇŽmšÎhÖ¬YòþûïS£F ú÷ïÀÏ?ÿÌÈ‘#ÉÈÈ 88˜9sæÈtFB!„Âæ$ñB!„BQ¤Ë®ÎǧiÓ¦øûûÉáÇ-.·zõjêׯŸŸݺu#55€sçÎÑ®];êÕ«Ghh(Ý»wçòåË6)ûÆ4iÒ„°°0BCCiݺµÅ‰Ô º\sï¿ÿ>Z­–Ød›´Z-!!!„‡‡ÎöíÛmVöµk×èÝ»7þþþñöÛoۤ샚¶7<<*Uª”§² ‹5kÖ««+Æ ³¸LZZ„‡‡[­¬åË—Jxx8Œ1½^oµò.\Hxx8ÁÁÁ3qâD«•µ{÷nš6mJ™2exæ™gªœû•ðñÇS§NêÔ©Ã{ï½÷Ðå%&&ÒµkWBCC `òäɶîìÎ;Ç“O>IHHDGG›¦)hƒÎRÏK•*Å”)S¬R–5Äoí®]» Åßߟ'žx‚sçΙÞ[¶laaa¦z3wî\‡Šï—_~¡Q£F„††òè£æùøXP±uïÞ´Z-)))´~{Å7dÈjÕª•¯ó [ÄvëÖ-ºté‚¿¿?aaa´mÛ–'Nä+>kËí»»xñ"íÛ·ÇÏÏàà`¶nÝê1îß¿ßôú‹/¾hún›5kÆ_ýå1ZÚ7n܈“““U;÷s¯?øàüýý ¡U«VvŠÐ ·8·nÝJdd¤é<ë‹/¾°O€V+ÚÁEEE©9sæ(¥”Z²d‰jÔ¨QŽeRSSUÕªUÕÑ£G•RJ |X)¥ÔÖ­[UPPÍbSJ©ßÿ]]¼xÑâ±2/ë·g|[·nUgΜQ>>>y>¯°Eléééjݺu¦çS¦LQ-[¶ÌW|Ö–Ûw÷â‹/ª±cÇ*¥”Ú½{·òôôTwîÜq¨W­ZešÞpõêÕÊÇÇÇ.ñ)uï}0))IEFFªÎ;«I“&Ù)ÂÜcœ4i’êÖ­›éÿ×ÞÇÜâ¬_¿¾iZ¯«W¯ª*Uª¨#GŽØ<¾b—ø&&&*777SeÓëõªZµjêĉY–ûé§Ÿ²$”‡Vžžž×¹xñâ<ýtÙz½^}ðÁ÷Mº ªÜ7n¨ÈÈHuúôé<  ªlF£’’’î[^A—}üøqU³fM¥×ëm^¶¹´´4õÈ#äû¤ °øàƒ,&¾ëׯWÝ»wW›7oVaaaV-Ë(99Y…††>T"šŸò”RªS§N¦“7k•5kÖ¬I|ïUÖ AƒÔçŸnz>uêTÕ§OŸ)/((HíܹÓô|È!V»ôñÇ«W^yEéõzuóæMÕ¼ys‹óp´Ï>ûL=óÌ3V/§ Äï]LLŒªW¯žé½””åêêªnݺ¥”RªN:jË–-J)¥öïߟ¯ykÇ·{÷nåçç—e]nnnjïÞ½6‰Í\öä-¯ë·W|æò›øÚ26¥ ¤=“³{ÉþÝ•-[6K©6lØ`ÐLîõÿ{éÒ%åââbú¿´K1öéÓGýüóÏ*::Ú®‰¯Qö===ÕñãÇí‘eÙãlݺµš;w®RJ©øøxU³fM»$éÅ®«óéÓ§©^½:Z­aÓ5 ^^^$$$dY.!!///ÓsoooΟ?Ÿ£û£N§cÊ”)téÒŦe·nÝšêÕ«³páBÆo“rGŽÉ Aƒðôô¼ï¶Zc›£¢¢ ãÍ7ßäæÍ›6)ûðáÃxzz2pà@6lH»víØ·oŸM· Ýüj×®MHHÈ}Ë.*’’’5jÓ¦MCÙ`(‚;wBÕªUiÕª-Z´°z™`˜æiçδnÝÚ&åYÓéÓ§ñöö6=÷ööαÏ?¨ˆˆæÏŸRŠK—.ñË/¿_ ëÎnĈüóÏ?T«VªU«@§N¬R–¹Y³fñòË/[½œ‚V¿w YöråÊáææfêNŠ»»{ŽG•*U8{öì=?;xð`Þyç*W®lõ²ŒŸ?pà§OŸfÛ¶m,\¸Ðªåœ9s†.]º0}útjÔ¨aÕ²òêaËzÐß…û•ûå—_rýúuÂÃÃéÝ»7QQQ899xYgΜá7Þ $$„ .pîÜ9Ž=ÊÌ™3­²]F[·n%55•:?222ÈÈÈ ==?ÿü“E‹1lذ|ß+omJ)ºvíÊ_|A||<‡âwÞáÈ‘#6¥à~• ‰š5kš®ôiµZ”R9®xyy±~ýzÓ󸸸,WÁp÷Ù³gY±b…ÍËÃX¿~ýøüóÏ­^î¦M›Ø³gµjÕ 'ì:t`ÆŒtìØÑêÛlle.]º44M—cííöòòÂÃÃÃÔú×¾}{nß¾M|||Žyk­±Ý§Nb×®],_¾ü¾ÛìhŒ- bûöílß¾áÇ“žžÎÕ«W©_¿~®?”S–¹Ê•+Ó­[7¶oßÎsÏ=—ër[Þ¹sçhÓ¦ £G¦[·n÷\¶ ¶-¯'=S–——W–Vظ¸¸,­d[î¬Y³Lÿ0`AAAù2emÚ´‰™3g¢Ñh([¶,Ý»wgÓ¦Mtñ)¯ßçÌ™3‰ŽŽvØ“Ó{)¨ßZó}'55•äädjÔ¨Á¾}û(S¦ Íš5 aÆxzz²oß>žxâ »ÇвeK6oÞ Eª^½:6‰­ Öo¯ø†­b›0a+V¬`Æ ¸ººè6XC¥J•pvv&11‘ªU«†mÎëÿ¹--Z´ˆ>úˆßÿwww{‡“Ell,çÏŸ',, €Ë—/óóÏ?sùòe>úè#;GgP±bEÊ–-KŸ>}Co†Ç{ŒÝ»w;TÁK—.qüøqÓ9U­ZµhÒ¤ Û·o§~ýú6¥ØµøV©R… ðÃ?°téRjÖ¬™#‰i×®{öìáèÑ£€¡‰¾W¯^¦÷‡ ‰'X¶lYž¯êDÙ‰‰‰\»vÍ´ì¢E‹hÒ¤‰ÕË7ngΜáÔ©Sœ:u OOOÖ­[wϤ· ÊNJJ2umÖëõ,Z´ˆ ܳ܂*;""777<@LL `8àZ»l£ï¿ÿž®]»âæævßm.¬,]E5îk§NbáÂ…ÈÕAKe=zÔÔí-55•5kÖÜ·^=LyçÏŸç‰'žà­·Þ*°¹••—÷ ª¬=zðÃ?póæMnݺŬY³îyñ ?®^½Ê;wØ»w/+W®dРA²î삃ƒY·nwîÜá—_~!88Ø*e¡»ÚÒ¥Ky饗¬V†5Ôoí;wLÉãôéÓéܹ3%J” N:\¼x‘þù€ÿý—'Nàïïïñ¡N}ôÑG<ñÄ÷¼8Z±ë¤yÝÌëúí_vùù²El'NdáÂ…üöÛo 6½G|óÍ7€adÿ³gÏÚìö{1ñ§Ÿ~bôèÑlذ!_·ÐY›1ÆŽ;ráÂÓyH÷îÝyÿý÷"é5ÿ{õêe:^]½z•˜˜BCCíZÆ8ÝÝÝyä‘GØ´i`¸ˆ°k×.«WïT±sôèQõè£*???Õ¨Q#õ÷ß+¥”3fŒúæ›oLË­ZµJÕ«WOÕ©SG=óÌ3*%%E)¥Ô¶mÛ”F£Q*,,L………©®]»Ú¤ì˜˜®BBBTHHˆêÑ£‡:{ö¬ÕËÍ.?ƒPN !r×§O5jDhh(:u"11‘¸¸8*T¨À˜1cˆˆˆ nݺlÛ¶aÆNpp0‡`óæÍñ /LÆ Ù¿¿·Jä•$¾â¡h4›–W±bE-ZÄ¡C‡ˆeÇŽÌ;צ1Q•*UŠ©S§räÈöïßÏ7øüóÏí–ÏÖÇI!Dî&MšÄîݻٿ?Íš5ãƒ>@£Ñ’’BÆ ‰åí·ß¦}ûötéÒ…½{÷ò /0vìXÓ:>Ltt4dÔ¨Q<÷ÜsvÜ"‘’øŠ|Yµj„††2räHÓëǧS§NDFFÊ×_mzoçÎ<þøã„……ÊÏ?ÿ ÀðáÉŒŒ$<<œ-ZpìØ1&L˜@ÿþýMŸOJJÂÝݤ¤$ÂÂÂðññ dÉ’„††oƒ-ÂñYóJv:u @«ÕÒ°aCâââ쵩B8,{'…¹›?>5"88˜™3gšŽq®®®tîÜ€ˆˆÊ•+G‹-hÔ¨Ç7­ÃÇLJ¨¨(zôèÁ… 8s挷D<%D%&&ªJ•*©#GŽ(¥”š1c†Òh4êĉ*""BýóÏ?J)¥nܸ¡‚ƒƒÕîݻՕ+WTÕªUÕ¶mÛLë¹zõªRJ©K—.™^[°`jß¾½RJ©¤¤$U¥J•œœ¬”Rjâĉª_¿~9â9þ¼ªV­šŠµÎ QȘשO?ýT 0@ÅÅÅ)F£V®\©”RjæÌ™ªL™2jóæÍJ)¥¾øâ Õ£G¥”R›6mRFmܸQ)¥ÔO?ý¤êÕ«—£œëׯ«zõê©+VX{“„(Tí8)„¸këÖ­ªvíÚ¦zµråJ¦âââT… LËòÈ#êÌ™36Øñ°œíx‹ÂãÏ?ÿ$$$„zõêðÒK/ñÚk¯qëÖ->œ¥«Ç78r䉉‰øûûóØc™Þ{ä‘Gøí·ß˜2e ©©©èõz®^½ @ùòåéÞ½;3gÎdذa|óÍ7üôÓOYbIIIá©§žbÔ¨Q4hÐÀÚ›.D¡0þ|æÍ›Gzz:éé鸻»÷¿’=þ|Ó:²_É~õÕW9sæ žžžÜ¾}›ž={Ò®];ž~úi[nžÏ‘Ž“Bˆ¬’’’(W®+VäöíÛLŸ>ýÖÇæÍ›iÙ²%K–,¡Zµjxxxp´Â$ñy–ý>%ãs¥+VdïÞ½9>³víZ‹ëJHHàµ×^㯿þ¢V­Z8pÀt"0dÈ:wîL½zõpww'44Ôô^jj*íÛ·ç™gžaèС±iBzÛ¶mãÿûþù'•+WfÕªU¼ÿþû€á¶#'''\]]³<ÏÈÈÈu½ÆT×ïܹCÏž=ñðð`Ò¤IVÚ! /G9N !rjß¾=óæÍÃßߟJ•*ѺukΟ?ä^w-= döìÙ 2„’%K²`Áë/ „Üã+ò¬I“&8p€£Gðý÷ßsûömJ–,‰››³gÏ6-ûï¿ÿríÚ5š6mÊñãÇÙ¶mz½žk×®‘œœŒ‹‹ ÕªUC)Å”)S²”åïﯯ/ýû÷çµ×^3½~ýúuÚ·oÏ“O>É;ï¼cý¢(è+Ù@–+Ù<÷ÜsTªTé×-DQçÇI!„eÎÎÎ,\¸ãÇóçŸòñdzgϼ½½M½)‚‚‚8yò¤éy³fÍ8pà@–õÌž=›°{÷n¹èTˆHâ+òÌÝÝï¿ÿžgžy†°°0þý÷_*W®Œ‹‹ «W¯fÙ²e„††Ä+¯¼Bzz:*T`ùòå¼õÖ[„††ÁŽ;æ¹çž#00ÈÈH¼½½s\]ëׯ:ŽîÝ»›^›úè#F)„BØŸ$¾B!D!Õ¬Y3<<<î¹ÌºuëhР~~~ 4È4M•BQ\8Û;{¹|ù2¿þú+>>>”*UÊÞáaiiiÄÅÅÑ®];*W®lïpL¤>ŠâÆ–u1!!///ÓsoooΟ?^¯G«Ízý[ê¢(nä¸(„ã°v},¶‰ï¯¿þJŸ>}ì†v1oÞŠâÊu1?STI]Å•…pÖªvI|?Î /¼À•+W(_¾<³gÏ& Çr«W¯fĈèt:‚ƒƒ™={6åÊ• {÷îìܹ“óçÏ“””„››·nÝ¢gÏž9r„R¥JQ¥J¦M›FíÚµ³¬»V­Z€á‹­_¿¾Å8‡ʤI“ rÓó¬8–]·ÙÖe9r„>}ú˜öG¨‹`¹>Zó{±Öºe½Ö_wQYoöºhM^^^¬_¿Þô<..ŽêÕ«çhí…¼„RŠ5Ç×¡Ë CepGw‡ÛºÛ¬œ¼’Zv'ÔÛ©¤¤§|+™K7/qéÆ%†K9—¿²?õ*×£¹WsÖhˆ“Ö)_1Øò·VÊ*¸²”R¤ÞJ5ì™û…ùß‹7.réæ%.߸Œ}–u”v.Mé¥)ãR†R.¥(éT’’Î% JR¹7ÎÝà‰d©‹Žpl|кhÏó™ü( qJŒ#?1Zýبì **JÍ™3G)¥Ô’%KT£Fr,“ššªªV­ªŽ=ª”RjðàÁjĈ¦÷ÿýwuñâE¥ÑhTrr²éõôôtµnÝ:Óó)S¦¨–-[æXll¬Tlll®q>õÔSù߸RË.ŽÛlë²³ï÷ŽP-Å¥”u¿k­[Ökýu•õæå”>>>jß¾}ßKIIQUªTQÿüóRJ©ÿüç?Yê°5㺟{}ï·3n«S×N©_ÿýU}¶õ3ÕsqOåý•·âTõ ÕÕ¿¾¡\8P e4)ëÁ]¿u]m:µIÕ{¬žêôc'UéóJŠÈò¨<¾² ™¢ÚÏk¯^^ù²½q´š¶{šZqd…Ú}v·:›rVeè2òTž¥}ÞŽZíy>“…!N‰±`ä'FkƒlÞâ{ñâEbccÙ°a]»veðàÁœ?ìÿ‰;'ÒÒ§%C"‡ð”ÿS8k‹í\…–N¯cýÉõ¬>¶š§wp ñ:¥Ãùª3^:/G&Ð=7j”«Aõ²Õ)é\ÒjñȱQˆ¢ËæGˆÓ§Ogéb¥Ñhðòò"!!!ËJ~㸗ɓ'Ó¥K—\ß:t(*TÈòZ¯^½èÕ«WžËÂ-X° ÇÈ­III¦;Z]„¬õ1&&†Î;K}…ÞýêâØ>}ºÅ×ÇŽ›åùSO=ÅSO=U eÚ“F£¡±gc{6æË¶_²âŸü7æ¿tý©+µ*Ôâû§¿§¥OK{‡)ò !9ï÷~Ï÷{¿çtÊiêT¬C3¯f l8Gk>Ê;±ï°ªÏ*›ÇåhÇF9OE•5¹qØK£ùŒ#7ãÆãäÉ“|ûí·¹.3iÒ$4hðÐe áh,÷ìÙCDDD¾Öc«ºYëcçÎYµÊö'=B´‚ª‹"+'zö G`öœßÿ¾A«9­x¯ù{Œi1FZ^éùíÄoLÝ=•5Ç×PÚ¥4½‚zѯA?ÕhT Ç[‘óT!Ž=Ž6ŸÇ·fÍš¦+b`è¶”ýªãˆ7=¿×`–L˜0+V°nÝ:\]](V{^M+ŽeÇm¶gÙŽ^­ù½Xkݲ^ë¯[Ö[´Ô÷Ó z~ïû;c[Žå“­Ÿ5'г)g­RV^HYY¥ÝIcêî©øOñçÉùO’œÀ7¿áü›ç™ñÔ "="s$’rl|0…å7§0Ä)1 ‡ŠÑ*wßGË–-ÕìÙ³•RJ-^¼Øâ yŒC¯×+F£’’’²¼þå—_ªˆˆuíÚµ\c°õB8‚ìû½#ÔEKq QÔ9ê>ï¨qåǶømÊs¢§ª5©–:u픽Ã)Ö®¥]SŸlùD¹wWÚ±ZõÜ’çÔŽ„J¯×Û;4Kû¼#‹B]"¿ŠÜàV`¸')::šqãÆQ¾|yfÍš¯Á8:vìÈÐh4âççÇÆ9sæ ǧvíÚDEEàêêÊÎ;0Ú »¹!6ŸËK·9P-ÏK®ºhdÏ:)D~å½>Š‚ñ˜×cli;Qs¢h1»›^Ø„ï#¾÷ÿ (PkŽ­¡ßÏý¸–v—Â_bxÓá…æÿ¡på˜( ûí’øúùù±cÇŽ¯çg0Ž5kÖX|ÝÓÓÓÔ=EˆâéyýQ)|uQðBˆûó*ïÅÑÐjN+ZÌnÁƾ©[©®½Ã*Ro¥òæooòížoéP·3:ÍÀÃÍÃÞaåKá;6 !òÂæ÷øŠ‚°?ó‘]¬ÙC!„(¾<Ý<Ù½™²%ÊÒæ‡6$§'Û;¤"ï@⦇ñãÁ™Ñi«{­.tI¯¢è’Ä·ÐÙŸíß–`äW!DqW£\ Öõ^Ç•´+¼ñÛö§H[~d9Mg6¥|Éòì°ŸW"^)T£4 !Š>I|‹„{µ Q”È>-„ÈŸ >Ll;‘ï÷~Ïšc–»ŸŠ§”âã-Óõ§®t¨Û­/n¥vÅÚöK!rÄ×aY:ÁÏ­u×üýìËH¢ ŠÙ§…ùÓ¯A?Ú×iÏ+?¿ÂÕ´«ö§H±~£7fl˱,꾈2%ÊØ;$!„°HßBé~÷ñfO€%QEìÓBˆ¼Óh4|ûԷܼs“!ë†Ø;œ"cîþ¹|¹óK&µ›Ä˜c¤k³â>ì{þ&‰o¡aLdÍw˜û f%ɯ(ÊdŸBä§›'ÿ}ò¿Ì?8ŸµÇ×Ú;œB/æl ¯þü*/†½ÈÆr1Aq/Ž1ø®$¾…Âýº8CîI°$¿¢(±Ô•_ök!DÞü_ÈÿåÅ¿¾ÁÝ{‡Sh]¸~®‹º^=œi§IK¯âçp0ß¿r$¿Æ›ß÷+ €($,伦7|ÍžæøQ5¿èc$û¾Å™«³+¯4x…O¶~ÂÛ7(S¢Œ½CrXJ)þ³ö?øUòãõ&¯Û;!„ÍYJzsIx³'º'Íþ<] å‹$¾¬Y³‘ÄÆ&R¦L^zé%عs'óçÏçÙhÅÞ-:‚ƒÌ>`LzOf[Q–ä,·þJ [FF[¥ Õ“ˆ¼Ížø’ËE#ó}?û{Bˆâ g`OÞÝø.kޝáÙÀgíŽÃúñàlKØÆo}~£„S {‡#„°™{%¼Æ÷³%¼Ù]sÙs“Ä×Aedd°cÇÜÜÜØ½{7uëÖ ÿþ¼ôÒKDEEÕ .Çqw'2&½',¬P’_Qˆùûûóï¿ÿ¢×ž;ÏtƧBÇß¹Ï}Íï ¶”K·!гÚkQ=‚E‡I⛋”[) _?œîÝiS»½ÃBØÌý­ÊLz³'¼æÉ®y¢k)?±1I|Ô„ ËÑjµ 4È”ô&$$°fÍnݺÅã?ζmÛà¤îîfLzs»šb1 äW8¶J•*qíÚ5èׯ¥K—fáÂ…lÚ´‰ oAÒ+f Ÿjg_ƒyë/Xîö/ɯÅUÏÀžŒÙ<†Ô[©”+Yîþ(fÆþ1–”[)|ÙöK{‡"„°™¼ ^•™ôfOx³%»óþ—6ÎÎètz´Ó]¨\¹2§NÂÕÕÕ ±çN_—ˆN§#<<œ;wî0dÈf̘V«ÅÉɉ[·náìì̹½P#)óCƤ÷^Ý|ãÁÍ›»'ø–Nôåä_8†uëÖ‘’’B‡X¾|9...DGGÓ³gOV¬XÁcóáÙêð‚Tp!s, +3Še±çƒÜó.DqõlೌÜ0’UGWÑ;¤·½Ãq(‡.bòŸ“ù0êC¼Ê{Ù;!„MÜ/é5ëÚl>¶1ÿ8q÷ùW'aä g\˸¯¯/¿ÿþ;k×®¥lÙ²\¿~ݦɯ$¾ªÿö|÷ÝzbccÙ±cß}÷}úôáðáÃüõ×_¸¸¸àääDËQzÔãGÖ¤×Ò @ÆÓÛÒýrò/Ï /¼@FFãÆ3%½—/_¦]»vìÙ³‡àà`´åËóæŽŒ9óªèyÊØ`cL€-ÀÆ{€}ã OÜŒ7[Ú×Í[¥Q”yWð¦‰gZ$‰¯¥¯­{ZÔâÍGß´w8B«Êc /XNxÍ’]¥`W2,ù&&ipw¯HLL ÞÞ†ó®aÆñã?Ò»wo"##9pà€56È"I|Txx@Ï”)SÈÈÈàñÇgîܹ´mÛ–iÓ¦‘œœÌÌ™39qâŸ/wš}8ΦƒGæù½)!6¶‚wÖ¨ûMw$ɯ°¯ëׯtw·èèhΜ9ßþI­ZµèÛ·/:½žëhévÉ…;çîðhìð!ç¾_³A°2±}ÍþífþÃAÎ®Ðæï !ŠŠž=¹~$IéITp­`ïpÂâËÙ·‰µÏ¯¥¤sI{‡#„°ŠXrŸƒ7—A«²)tòîßWÏÃÌT z¥pssR9r¤)é5zþùçùꫯػwoÁmJHâëÀþüsOG¯×³iÓ&>üðCFmzÿõ×_§M›6|¹çOÞy$æîgO¤g>9š™gO@’_áЪV­J\\ýõ‘‘‘?~œ5kÖ0gÎüýý àÒ¥K4oÞoooV¯^ÍÎ+W(qn–Ìü‘3î÷Ù[!kïo³'¾ñ™‰°ùþo~/°‘Ô! »=xã×7XñÏ ¢Ã¢íŽÝ]¿}7~}ƒ§ýŸæÉº–†ÑBnÆó˜ýdé¾ Y§#ÊžìBÖñ„2ÿÞЃ×q¸ ”(áÂܹsY¿~=3gΤQ£F#hܸ±M[{A_‡Ö°¡'_݉WQ©R%FŽ™å}WWW>ùäZ´hÁŽ$xì¦ÖÞ·ù¦“{,ɯpP¿üò AAA >œ_~ù…¿þú €§Ÿ~šiÓ¦qþüyÊ–-ˆ ¨T©/¼ðW®\àP^çÌWG3xÕ•»-½æ·ø’u”Áì ±w<„å ˆ%DQááæA3¯f,:´H_à“­Ÿp%í _µûÊ÷ˆËª IDATÞ¡! \¶¤7e™á©¥iˆî‘ì—IS| ’œpÖh=z4={öD§Óñý÷ß³ÿ~š7ož#Š={ö Óé h›òF_÷ôÓ ´ J–ÌÙÕ(4Ôpò}6ýîk÷ß*{l$ɯp@þþþ„……±}ûvêÔ©CÓ¦M¸zõ*_ý5Z­–·ß~›ÚµkF™2eX±b-[¶äĉ|üñÇ X¾œätx û¾1 †œÅü¹©e8>³õ·+9ëHý¢hèØ“¡¿åÊÍ+T*]ÉÞáØÍÑËGùrÇ—¼ûø»Ôz¤–½ÃBóÞjû¹P÷LvÍóŽ/€S™Il=Cwæ>}úðùçŸÓ£GªU«fúÌÏ?ÿÌÎ;©S§ÎÃoV>HâëàªW/GHHyþþûoÒÒÒ(Uª”é½´´4,X@Í+À¥¬­½æûnöžž'Óáñx`ƒÙB9’_ã¿%ùö³{÷nú÷ïÏwß}ÇŠ+prrâ¿ÿý//^D¯×Ó¦M¦OŸÎÕ«W‰‰‰¡F4hЀ%K–Õ²%Ówì ŠNgÚ÷!³ÃÃÑ»ådIˆ!ç`qQËÌĹ8$DÑÒ- C~ŠVðrƒ—íŽ](¥òË<Ý<ùØÈû@QX¸Ê,éÝ”ù²…{vSoRó—Ìÿ½ÊÙ22L¯Çg1b'N$((ˆP«V-6nÜÈÂ… qrrbÏž=¹mù#‰o!0~#‚ƒ70vìX>ýôSt:cÇŽå믿æÚµkô¹äÌëé„“õÂ9óžžXJ~M];-M÷"'÷Â>¦OŸÎôéÓa¥†Ï—Á[“&Q¦Lnß¾ÍéÓ§Y±bÏ<óŒ)é5Òjµ úÏxnëVö“µ‡söÆ^ßôl/ͬÆ@¶ú‘ÛÅ!ãkBØÆñãÇMÝüË—/ÏìÙ³ È±ÜØ±cY´h%K–ÄÕÕ•ÿþ÷¿¹Þ{UU+[Þ-XthQ±M|Wü³‚ßNüÆÊçVRÊ¥Ôý? „ppÙ“ÞïÉ2ÿî&rmÙ5Ov-%¼FI Z­½^OÅŠ™>}:3fÌàóÏ?§lÙ²|ðÁ|öÙgèt:\\\(S¦ §N¢\9ÛÎ.‰¯C öèÆøñAŒñ9›6ýŽN§Ø¿?¯¿þ:=zôàúõë|3m¯/]J_@CÖÛÍàîmŒÒÁ÷(xh ɯpPÞ0r(8'Áû¿ÜÄÙÙ™/¾ø‚´´4Ê—/oñ#*FhÝT=àŽ!ŸuÉ\Îâíéà»<ü3Ÿ»>ß³~˜¿&„õõïߟзo_–.]Jtt4111Y–‰‰‰aÖ¬Y>|˜Ò¥K3þ|Ì®]»ìµcz6ðY¯Ì¥—p/ãnïplêVÆ-†ý:Œu;ð”ßSöGñÐî‘ônâîÈÌÆÌÖ¬³y²›[ƒš)×Ðë©\¹2W¯^ÅÝÝo¿ý–Ò¥K3lØ0ªT©B½zõpww§ÄõD6w†Zóo¡1‘׆$ñ-$†÷# à"~ø7±±éÌš5‹èèh–,Y€¸qãeÊ”aÁ<Ë=îñ%k«@k0Üûh\@’_áÀ4µáͱ0è1Eµ÷2صkîîî¬ZµŠÉ“'›æû5Z¶l.NNÒu:êÖ©C…ònÄìÙK¬VKyŽzä~±Èhm¬¦+¡ñ™·x“s.lI~…í\¼x‘ØØX6l0tÝéÚµ+ƒæäÉ“øúÞ¿råÊ€¡ ZéÒ¥¹ví5kÖ´KÌŽ¬[ýnügíXþÏr^xÕÞáØÔ$>9žµ½×Úí¤TQP²ßÏ›9ró¾ø¬ÓmÀbë®ù˜V»€³ hµhu:Ê5T:/^D«ÕrìØ1ÜÝÝ™>}:“'O6-ãêâĉw FyÀŽ¿/’ø †ëJñÇé$$”£OŸ>T¨PÔÔTôz=ÎÎΤ§§£ÕjY¬×S9k5OŽ%ù…‚ïÝ¿¥ÚB² ø¾¯H¸r½^Ï‹/¾È”)S¨P¡Ìž=›o¿ý ¤[9~Y¹œæÍG£ÑO·nÏr`ß~þÕéÐZ(fcæß d&¿ÆKžm2ÿFeN–íæMÎnÎÙa©+¢à>}šêÕ«£Õö`Fƒ—— Y____†Ž•*U¢dÉ’lÙ²%×õ:ÔÔ[¨W¯^ôêÕË:â Ü˸ӪV+~:ôS±J|õJÏ„xÊï)Üsv“/*,X`Å())ÉNÑQ²·îÂÝA8³ bµSv{6s¬K-¼G€#NNÜÐëiõD+ªT©ÂÚ5k¹œ’By¥0Þ Q (¡ÑpQ¯ÇÉɉ+™çd`¸å¬F)=§?ÒeNÕN$ñ-T"HNþêÕ«áççGrr2ÎÎΔ+WŽÖ­[såÊ6oÞŒÞÙ™k<’‡5Þ3ùÍS·NI~… —J‰7ý€žôÖëxr!,üñG–.YBƒ°0NÆÅq!1W ƒ™O›8-î§ïííÍ’%‹ðõõ# (cVŒùl_¹Ûŧu:x0Ý÷ËÝ%|Íþíf~2?–ú"lïÏ?ÿdòäÉœŽaš!€6°8X1{ë-öìÚEYÃ’ü‹aðægžé’cM>>>„„s|Î Ôs›ê×77&¿ëÉ9÷¯‘·Ù“°’_K¬š5krþüyôz=Z­¥ xyyeYnË–-´jÕÊ4Dtt4¯½ö8;Ë©€¹gê?ÃÀ5Yzx) ´w861~Çxšx6ᱚÙ;!DžÄb9ÙÍüwJæ9Hö¬6å¡ÙRÒ›\ÖëùþóqYKtuueÆŒoXµògn¦§ÓC>ë ô<\tw_hCÖFhñÕÞ‘‚wüøqš6mŠ¿¿?‘‘‘>|Øâr«W¯¦~ýúøùùÑ­[7RSSMïuïÞ´Z-)))Y>7dÈjÕª…V«åÀœ'´…KÖn’}ú<†‹‹NG‰%˜9s¦)éü¾Ÿ~ú)J)2,¬-7'1´lmÈ|œ=šù*Ì>ãI|¶«H¦Jg©‹…pt…¯.Fdýëæ}÷*b¨þ¼Ýû†pèÇyNNNα6¥Ô}»¹™ßçb bkzæ“ ’_Kï2—1ÕŸä ”prâ믧åXÛúõˆOà~“vƪ°Ìä7ž»É­ñ ó‡1 6ÖŸ”w1¤äæ$Ç8Ý—¿¿?ãÇgÖ¬Y¼ÿþû†iÀ€öíÛÓ³gO"## ãÿû?þø£=ÃvhÏ>Ëqpáú{‡bu_ìø‚ºëÒÙ¿³½Cq…ïØ(Šó¤×ø<³…×<áÝDÖ„÷¨á¼e9_KI¯ñØ™3gsD ”"!>žG0œg™’Þ¨Ì'µ¹›ôúr7é5»ÙÍ_ã”}úô #Pž>}š“'³ŽC¼nÝ:4h€ŸŸ`ø1 U«V¸»[žj Y³fxxxX|¯(øàƒ h4Μ9ƒRŠÍ›7Ó°aCÖ®]KÏž=xñÅðöö"U£!-Ÿë–ä·ø(¼u1û`Qf­¿QfÉïS@'Ž &òæ›#ø÷ß¹téß|3ƒnÝž¥”VK‰l%( ŽR3w2_7&¿Æé¯·¦ß}œM7Ôó‡éà3»-À)ËÈ™ü‚Ôñ üüüرcG%&&†ÀÀ@À0ooÿþýMË=šC‡±oß>¶mÛFxx¸½Bvx]êuÁIëÄ’ÃKìŠUý{õ_–^Ê›¾‰“ÖÉÞá8„Â{lEŸ…¤×<á5¼*3é½WÂoöÈÞÒ[(áìÌçŸÊvëäêÕk8þï þCNkJz}É™ôšZyÍ-ìÇæ}œò:eö{”¼½½³ÜÇTP ×È•†ûkµÚFT©|š£G²zõjH“&Y½z%¥JÚ®>üðž¾Ë–.§¤^Ÿ¯+æ?í¦Ñl³¼oha3ÝÛ+÷ü:¢û^éhuòRCÍþî'ëþ›ÙõÙìÞÚõ†}wòQÃÕË©“ÿÇĉ“LÛ[ (¯æû2€dg'neè¨T©"i7Ó¸”–Fi†òJeéúlä‹å)Ä|3»]øf¿o>jYæ}Ê/eû„Ô¢HF’-|*–ªHkßÖ,=²”Á‘ƒíŽÕ|»ç[*–ªHßоöÅa8Ú±±p§ ëÉ%é5M³HŽ)жf›×xv¤ŽGœ¸­ÑPB)*gè¸ÉÝ–^ P&#ƒåËWбcg† L¥J•Xµêg¾?GµZzèõY“Þ6ÜÀÊÔÊ Y^ãyœ}Ž{s­î3)#WOòï:w J¹kéÖ­wîÜaÍš»I/€³³3_}õ%K—.Ï1bm^äšü®7¾*ɯ£+¨Ñ+myÏ×ýëcbw#s0¶ÌŸøõà‰!ùm£Ó±Ø\SŠìí HrrÂËÇ›~ø–ÆqûömæÌù‘ÿüç R22(OÖúQ,Nì†^Óý/’ü[2’láÔ½~w^]ý*‰×©Z¶ª½Ã)pz¥çǃ?Ò3¨'¥\îwÇÈNÎS…íd¿§—¬ÓAŽ)ŠŒ=7Í[sÁôþ£Õ’¤Ôÿ³wæñMUéã~n’.Zö"-´Z„²)ETD ˆ(â#®Ãâúg\GuÔÑŸ2Ê8¢TÅ 7PGª,↖]¤ •–½@ÒB—äÞß'7¹¹IÚ¦Mš.çù|ø´½ÙN4'÷<÷}ÏûréÅ£8p99ëùüóeD+ mTÕ%¿ú·ÂŠåÙ,[ö%ÑV+W8ü蚊;•Y—^ýÚ+Ê‹ó§wkÇpœë]|kZ2))‰åË]–Å®]»<®À5_ô¨/]­’q…Ê®â(úõëçuÏÄÄD8ºgO­^É|…ȧü¦à\¼Kùml4þ¹¨æüDÓ“q}zwŠÏîå¹Ðq2ÐSúœ*–.ý”=ºÅÔ©·PXxˆ'†XCEžçð…^·üæà®ø¬#çŽDn®ìy%Ó–LcѶEL;{Zõhd¬Î_Ížâ=Lê;)ÜCiP4þs£¤iQôVåõµÎ)J…¯¾ZÌÈ‘ºŽ¯\ù-£F¥TUie¸ Únç #pµÃAb+™G忥7\Ôûì¬iÊÑ£G³nÝ:rsEgåW_}Õ몀žsnÎ=÷uŸÆ‰ñbÛ¸dbZÀCyy9üñ‡×£ûmûÔ­0‡¹ ÏÞ\Ü}Àô·ÅùÈ=¿¦1Í©3¦}¿zÑ«Q@¦ø¢Ö«ŽÀ»²~9pö€þ.é5rà p¨*µ¥>]<öÍ/ÞÄPñy.bÞèÿÌÕ%I}Ò>¦=#ÎÁ'[? ÷PBÂ{›Þ#¥m çu9/ÜCiP4s£¤ñ“ƒXÌ^õA6äÃâ|wý¥ ÂfãškÆyH/À…eâÄk(7UúO.Æ7££Ò«WnŽéÕÿõÃ3Õ9¼„å²TM*PÆÆÆ2gή¼òJºwïξ}ûxì±Ç\ÏqÙe—‘””„¢(ôéÓ‡#F¸n›6m]»veïÞ½Œ=ÚUx éàþðŒím¢¬<öè㨪 Àž={7n<}úœ…Ýn§(²Zkµ`?ò«W‹“òÛ¨is±òëlw¤ËïÐhÿòëpÎ#3‡€Rà°ÍÆA‹…"«•“ˆéêð’ß71U|^ˆ`]tý‰°D"©/®î}5+w­äPé¡p%¨”ÙËødë'\ß÷zÙÂÈMãÜ(i¼Ìî 68…×(»Ë s½j³éÕô‹ÿÊYmçŸïûb×ùçŸG…ÝîZÓ赪ôbÍC•›ué5VmöªÜ܆"¼:aÙã«W 4óä“Ozü=fÌÆŒãó9–.]ê÷ùõ/¥¦ž¾ ¾öúÆDÂRÜøÁ|þع“k&\˳Ï>Õjáµ×^fðàóض-—§Ÿ~Ž_·l¥ªQ‹Q˜¯e–Aâ ÓÁ”|™öÜÈh:s±ª´gÄž_cÑ«<ºž_y@°~ýF¶lÙJZš»a;À‹/¾‚Íf%¦U+þÜCi4s£¤ñáŒðnÈw§2ƒwÙeÃ~D_Ò«Ç­N9T:th‡ÍjåÀÁCDX­üö[®ÏWÞºu6ŠÝî%½‰Õîç…†.½Ð€‹[Iüá-¿“!¾žü%‡{ZKttÛ¶m"9YìGéÛ7K/½˜ô~ç°7ïÚÖ2­¦Zù͆Kù•„ _ò ®Ï]âó ®³Y~w§¬V.»tÝúi“ß÷7¿ÏÙ g“Ú!5ÜC‘H$. Ò»±Xð!º:{ Âk¾ûq‹…¨V­X0ÿ5.¾x8kÖüÄ¥—\Ï[o½Çÿýßm¤¦º3 vìø7ßœGdUÒkÞÏë!¼ÆŸ SzAŠo#Áõ5‚˜)pQôq88×f㢉׹¤W§eË–Üýw0}úýhT™ò‡¹˜‡üê ÷jåW¿M" 6FùOÆS~ŸW³ü: ÷ígÔ¨±Ä´hAEev»Hs~챿º¤WgòäI̘1‹ÝÛwÖH|ÁtI—ß<<¿.ÖÇîõ] ç‘Dj®î}5÷|yE§Šh×¢]¸‡SgŠN±tûR^õB¸‡"‘H\˜¤WO p.Yö–yÞÛèúôþŽ(ÒY”«*o¿þ—\âN±:ô<>˜ÿãÆÝÊÀøóΩ Пuë60kÖëØËËIǽ Ì%½úÚDOm®Rx7<¤ø6Jô+)ÞMTÊ…„„Î>•˜˜€¦iu_cÊfàò 2ú+ þ¶8?oqD5eC6±Wä×á ¨¢¿q@zÆ‹Gþöü8œ?7lØBzz_WÒ4_~^O¥ÃÁa«•Jg¬h«•‡ƒè*Fi<‰¹zý÷ôt3=À%¿fä<’HBEçØÎ I§[?mâûþæ÷ÉLÉl’½‰%’ƇAzçÙBz³ñß.ÑöÒ#½Ç­VÎJïÅÂ…¯²dÉ7LŸþ v»ˆÏÊ>ªªâphD±‡†9tÃO¤W—Þôê„ÃZDŠo£ÁOº³‰ªÊ‹6òÌ3ÿ‡º5k¾gԨ˜À†ªjSUNiuMÚ2ʯÇ~E==Ó§ü‚Ü÷+©ª‰þ¦ƒ?ùí†ûómZX,<ýÔ‹Œ3šöíÝ3çÝw?f[îïXm6î™~#W\1’#GŽñâ‹o±zõ/Ämª¡yÛNНè¯Q€]ůÌßrI$¡â²î—ñô·OcWíØ,wét äk ÖðæØ7Ã=‰D¢Kïâ|W…f]zõHnUìC,EUåã_&))Ñ£‡b·ÛyçO™6íÇ|þùW;vœˆ¬4±Ì¨¹ô6NáÕi¼ßÞÍ’êå÷,ÄGñÑGŸàµ×^çØ±ã8vl6­[Ç2vìh*+í,Zô%•••œp8ˆ­ã¨üʯ~ƒ—üê¿Kù•Ôµ“_]Hõq¬ªR¿›Þ½3uÚMtíšÈ²e_³hÑ|øá¿?~47æ2lØ$¬V+e…}ªÈ°hëg„ƽóºëzE=ðWüJÎ#‰$ IBIE ›n"£sF¸‡Sko[ŒE±0&Õw%b‰DR_ÌíŠôö &é]^õƒÙX, ­c[ߎèèhRRD}ŸnÝ’¹þú±Ü{ïßQU•›nº«ÕÊÇÎw>D ‹…gëF]z]튒ñlWw•áU·ô‚ß&I:°8¼wå@dd矋½E\œÐÜÇ0jÔ¶lùVvGP÷üV-¿ +>KêŸÀå7Åö¼ñeÙÖá äО{v&v‡J´ÍJÐ5¥ W]u»v‘1P0 7ûöRPp€ «•C«årÜ;²qîŸÏÇódŒþz´?ÒçÏ\àVä\’H‚ËÙ gebMÁšF-¾ ~[À°Ó‡Ñ!¦C¸‡"‘4Sr€µ–^p°X,Œ;Œ>x–‡z™Ï>[¦i®¾Üo¼ñO, wÞù0wÝõ0  ª*1 ­UÕ#ÒëÑ£W¯1Ò¥ÀîHÅœjà›H "ý¡¢¢’¬¬ç]Ò«i»víáºëÆb·;(«ò™jÎrܽµ¿-óÑö  X‹ÓϦ¿%’P`œ3æ/î©"•g8®/üÄTq2Ðß6@¼C¥3ÐÎîÀ œ~zE!-í TUåºë.âÇ7qÖYgòî»OðÆ“‘‘Š]«b9îÖ}Ù8+9êÌëõ†ö‹óE“ûâ…ù•sI" &Q¶(ÎI<‡o ¾ ÷PjMÑ©"VìZÁø^ãÃ=‰¤’ãüç?Ò;‡ê¥÷˜ÍŠ¢(ØlÞxãï´h͸q#صkK—º{ŒFGG1oÞ L™rš­T•Ž@UÅ‚éLÆ$½æÞ¼Ž7>dÄ·Q⌔Æ%㫲³Ž!¹]»&н»Øt»víz&Oþ+›7ÿæº_©ÕŠÕá 2#Ó'løŽü&ç;÷ è*ù•Ô'æÈ/¸/¼L…ô×q¥/ûl3 }Þ'$=K"øñÇ œ8QÊ©Såôë׃>úŠG½…§žšæºÿ-·\΄ ²è¿«ˆv¨UfY˜#¿)e04g”wôWÿ "œ¨Xí‘]!‘H‚Á¤!¼µá-¨JcbÉö%ØU;Wö¼2ÜC‘HšÆ ÑsÅj?Ò믘•Î "*‚Š“eôïߋĪaÃ0jÔyüéO÷òÌ3åê«/æÄ‰RfÏþ€×_ÿX •áyüJïpüìç…¦ ½ #¾Ÿdÿ7E""¾‡QZz’ß~ÛÁÈ‘×ТEŸ}ö*ƒ§A¥ªr¨ ÒôˆU6†Èo¶á† 2ò+ 'æ/lã—¹)ò›é;òk$(;UÎí·?Íf!**’˜˜h|г „Õjå©§¦aw¨5ʲ0F~õ,нeÎù¸£½Ù¸ç—+»BF~%’`3$iJw´ºåiÃdÁo Ôe ± áŠDÒ Ð#¼:u“^ (·X¸ën‘±±gÏATç>]EQX¸ðE®¼r8÷Þû4 ƒIMÅ^žWKé5Gy­Š¯ô‚Œø6 º!fŽ h©i”–•ñòËsÈÍÝI»v­¹òÊLÆ» ‡C%"ÂFD„ÊJ;‡5ö´Èï(}Xz´Jã(ù•„c»#ðŒþN{f‡/tÝ»ªÈ¯ˆÓ4>ø` Šü±—¤¤N´jãõª©©É(Š‚ªiÕöÔ^Ž; k$ÏiÎ)¹§%ç!ÆŸn~¿‰¤¶ î:…o ¾¥[;s¯±†MIE ÿûý<3â™pE"i˜/:û–Þ×oð/½"½Y_'8T•³Ïî(ìÝ[È,cÒ$ѹ¥U«æÍ{ŠââR>ÿ|­U•(‡êáô^¿•›}¥5CSYGHñmâÄåüíoÏÉÝwÿ‰Ç›ID„ ‡£‚ .È W¯ÓùöÛõlܸƒÃ@gª^Œ×”*å·xV¦•ò+ æJézá«âsYCù"4C:tñ­8ý IDAT”ãÇOPXXD|¼gðŸ~úMÓ(NÙ,TØU¢l¢ì*-ñ=ï|5¯O1ÿ­‡sóÌÅBg¿âYȹ$‘Ô6ÑmèÛ©/k Ö4º~¾Ëv,£ÜQθ^ãÂ=‰¤ ã+Ë*péÕ€R Ì¹Nˆ²(Ø…_~ÙÆÈ‘|ýõ:n¾ùï¬_¿ñãGrüx ³f}ÄҥߊŒ¦çÔ¥w*¦vE®ý¼þ„šÒúAŠoS!Èõ}S (©¨äw>wFzaÅŠ,.¼P|˜5M#+k!·ßþ,G¡Îý}uÌòëêOê1ö|S[)¿’úÄ—ü: @~#€öÀÀnwð—¿ü›yóþîjkTRr’»îšA„Í‚%ÒÆ”?_@ïÞ‰|ÿýæÏÿ‘JU£ªU)¿Æ‚ξn<÷Öë÷N¿qº»ÕdzK$’š2$i_ç}îaÌ‚ß~Z:)m}åH$’ºãKzïÛûté]!¶-eSu¤·!¾·Ü0ˆk¯Èɓ̞½’åË·2kÖB~úéuÆŒy€¼¼ýüûßðâ‹ï`³YQ€N¦çKAÔ¬òêÑë!½M3ÂkFŠo"1ZD~ÌIb»E¡°ð‘‘L™2Î%½ öÜvÛxæÍûœŸ×nç¾``L×Ì‘ši¾SJ¾³X—ìó+ æÔgpß(œò«j|ðÁW|÷Ý&&N¼ˆ²² Þyç ŠŠŽÛ*šŸy‚=Nà¶Û†óç?_Àˆÿ“@K?#4öú5/]½šÜû”ß× ïKÎ'‰¤6 é:„W~•C¥‡èزªæd ‡2{Kw,åÁó ÷P$’&ŠYz7¯×Jz+Ò;sæî¹Ç]Ydܸ ®»n6ÿýïzdÜÊ 7^Ìøñ­xùåOq8´¶;ˆ2=Ÿî·þ¥×|A¼i¯¤ø6Zœ‹×Cì'ODTõ\æ’èÑ•S@EE%ÇŸíóYG:œœmA_çÐ\Ô\~u¤üJê ?Ñßå7¨Ð4îÚÏ‹3ÞÀRiÇjµpç]™.éÕ6¬'cƤó¿¥ii¯~îUU#gDدüNuþ-ç“D(C“‡°¦`M£I^S°†’ŠÆ¦Ž ÷P$’&Hð¤WC´·KIéõFŠo£f€(“’/Vº™îyÞòÛ8Š˜ãï¿ïFqÞ 6~å×xƒ‡üš%šÃ¤”„›ºË/ˆ"q‘•vTà€C¥ÿ$Ÿ¯Ú½{'–¨Eˆ“W „D×f¿½«­XÜT¥ü‚œSIÍé×…äÖɬÙÝxÄwuþjÚ·hOZ|Z¸‡"‘41ê.½*"Â[nS¨°kXè™Ø†¨¨¯WKIY&Ñ@ŒÝá|‡Ï‘IéõlgÔè D1±0E¤¢¬†±}˜¹í‚D"ñǤ!¬)XîaÔ˜Uù«¸ ù,Š\òI$ÁÁ|ÎÜHm¤WŽ[Ê#-ÜtKOæÌ¹a&°}ûA8îõª+VlªZJéõŒø6L›þ†®œ“ÍùZ¨ûö&#c0Ü)>+>ë4Ÿ‰* ¾"¿ýŽüê(@”CeÖ¬¯¹é¦!ôìÙ€={ЏæšY\~ù¼ýöhZ·;tV¬ØÍ˜1‹).­¤M-ßk,e¹Ì¸½ÀùÕ‹Z÷ØK$_ MÊG¿~DiE)-#ýíÊo”ÙËøiÏO<—ù\¸‡"‘4|] Ö×¥§7—"öô®^yƒ‰-PW]•B—.ïpûíïòá‡Ó\‘ßÂÂb¦ß3Ÿh«…‡ÿKâ~¥÷ŠdÄ9ßXĪùë¥ø6ZLÖ8Ü)Ï)¸öûfâ-¿­(‡ƒÝùû¹ãq2TÐxã Üzë¹X,ÊÊ*yì±/˜1ã"ÀkÃ|]0~dc’_=t6ý•Ÿ%aÃWºý­žòÛ ³j&¿±ÀÑ“ddü[nJïމ̞ý V+¼óÎÅÄÆº»hÞ•'ž8ü‡*ú×ãX\ò»•Ãq^ýÏ“¡`‰Äƒº®ÚY·kÏoCeíÞµ”;Ê–<,ÜC‘H9¾Òšõã9µÚÓ[aS?>Å%½mÛF1þ(Æÿ‰‰÷1~üNž¬`Á§¿à¨tÐÚ¡úÝå%½ÓœÒÍÒÛ|ÏíR|›†üæD 1Ÿ‘ßh ZÓPͱ‹­ W_—ÁäɃ\OÁóÏeéÒ_Ùµí QAÞúëS~õ,P]~“‘Ÿ%aÆŸü€+œWxÄåb?mJ™øØÎññL ­C¥ä”Êœ×WRé<]vyЇôꌓÂý÷‹Ú‹/øßTÃá —Ìí äü’HÌôìÐ›ÅÆæÂÍ ^|W篦uTkÎêtV¸‡"‘4bªÞâ…bA ô‚X§§wð:>vìé<ûì¹Üÿ¼3w  aW‰ÃÿZ@JoÍâÛdàŽú‚»ág6 uʯ>ùŒ‹`}ÇO¹]åŠ+úz=«¢(\uU?f<Ÿ •Á­ô >ä· õbéYpz¦³zspà@©ÏW-,<Ô®À•ù5WU—ò+‘Ô˜Hk$=;ôdsáæp¥ZVå¯bHÒ¬–º\:“Hš3æ½¼†ãÅ ÝÂë”ßšJ/‰ýùçBŸ·íÛWJ„U¡­ÝQíÀCz/1ð^y)¾MSDÊÜäÓ ¿:;ñž‡û^|:T‚šBÏ@5òkL}ö[ñYʯ¤¾ðµï·jù…ªO~-€Ÿ>ÈO?íçÜs;»ŽkšÆÌ™ëˆ²)D؃3k.¿àú,ç—D¢Ó7¾/›6lñ­tTòýîïybØáŠDÒH©¡ôf‹b­yÔ\z¢ì‹íâ›oö0bD×ñÍ›•µ•(‡é5²jÞÈÓ&õ¸dñkŠóŸ³Ò3î$›žÁ´°(¼òÊjÊË=ë8o4“HB‰¯ŠÏSÅIF/ï<†:««ÀûZ”‘h Úª0zôB^yeüqœÜϵ×.eáÂßia¯þÄzqçlœUÕ³ ‹âYE݈œ_ •;v0xð`RSS9çœsغu«Ïû0fÌzöìIŸ>}xå•Wêy¤M‡¾ñ}ÙR¸-Díÿ‚AÎþNVždØér¯D8Io6ð&ÞÒkNÇ€ðèÔƒ¨ŸsÑEK˜0á+fÎÜÄäÉ+8ðSÔrG•…eõ¤ÈáÀMÑRzkŠŒø6jô蓱"«3å¹8ßó®É@®«î•-UmÛ ÉÌœÅã_L¯^øî»?xäoK¨(³Ó.to…׸ʜ‘3ý=}[Oçö¨ø 2ò+©?‚ùU€6ââ þïÿVp÷Ý"Ý!Ò¦ÐqbÔ©J¨P@ÓÄ 3F ¼ð\•‘ßä…ž#Þk/½Žœ_ ‘iÓ¦qÛm·qã7²`Án¾ùfÖ®]ëqMÓ7nûÛß?~<……¾Sì$ÕÓ·S_Ž—gOñº¶îîáødÕ®U´ŒhIÿÓú‡{(I##péÕé¨À!Ä>ÞØ–tü¾ J5ˆSE¶—´Q5JÅ òøô“Þ¦BßxQcsáæ+¾« Vs~ÒùDX#Â=‰¤Qwé-Ž"úô>û0Üs+´h…‡á®GáÓ¥`ÓD‹QgËP}K“êNØ4£glêIC}Jï,äùÙ?R|› ýÔT„'±¡HŒ†<ç¼Þ ð( Ò®R‰[`S54DžJ X,qì;{÷A™´0Èo>†ŠÏÆ;{ýʉ/ 5ÁÝókÅwÅF 8a…þ½aãVp8 =Ž—À¡"8U‡ƒ%¿®Áéò;ÏJê:2úÛؽ{7;wÆbߊ¢””DAA‡ønݺ•Ž;2qâDrss9ýôÓù׿þÅgœáóy§OŸN›6ž¤'NœÈĉC÷fI­“ˆ‹ŠcóÁÍ\ÚýÒpÇ ‡ê`MÁü@¸‡Ò ˜?>óçÏ÷8vìØ±0FÒð¨»ôÚkæ\u) “2Åí›ó`ÆÇð^¶H¯jKíå7Eß[ïÂ,¿à)ÀR~ÃI×®]Ù¿?ªªb±XÐ4‚‚’’’<î—œœLÿþýéÕ«“&MâŽ;îÀáp`µÊV7µ¡o|_~ØóC¸‡á“U»Vm‹f`ÂÀpE"iø+ÞXzs±éÑ'Où~Vóq_ÒëSxõ(¯Qzã¤ôBÀª2%¤1à¿_WUÕeý¡)pñ(~©ØWøö?`Çnø4ì#R1#~“ßýF¥£2ÜCñbuÁjÎërQ¶@KßI$Í óùËp^«¡ôžD¤7·Žq_tNO…9óE°ÈÈÑcðáb°9£½féMñó/1÷ZBJo­ X|»wïΔ)SظÑÜê¢æÔ´õÂ’%KèÕ«=zô`üøñœ8qÂuÛÕW_Mbb"‹…âbÏk,5}þ¦‡ñƒï”_ã¬1÷1 €¢"1y'^΂(~ž{Þ„Có`Î`µz_í fùÍÃ$¿ÆvG®–GR~k‚œ‹Á&4òíü©(°û sf?ö|ð ̹ö?;ÿtcŠˆ‚ÞV̧üºÚ”߆EVVYYY¤¦¦òüóÏóÖ[oðøã“••@LL ³gÏæ²Ë.#==Y³fñᇆsØž¾ñ}©T+Ù~d{¸‡âª©¬Î_Ͱd™æ\[ä¹±¹àOz_¯±ôj@©&¤ÃÀ®Ð± X-ÒVþ“î†Üb ½êq-œ,ƒ–ø–^0 ¯Þª(˜†XK\‘,¥·–,¾;vì wïÞ\{íµ 2„>ú‡#°å•Þz!77—|›o¾Ùë>%%%Lž<™Å‹³}ûvxê©§\·ßqÇlذ¡ÖÏßt þ°©°bµˆ.Y-°§= gŸ)nŒ€?‚'&ˆbW¡èø«;®ÞÔ%¿æ^¿ú¥üÖ9CAðåWA¤/ƒ˜‡¿ï…’Sðêb¸üùˆpîÎìŸÝŠE\…¿òëÑë¤ü6zôèÁ÷ßOnn.k×®¥OŸ><ùä“L›6Íu¿Q£F±~ýz6lØÀÊ•+]÷“ÔŽ¾Ü•¿þJÑ©".H¾ ÜCi´Èscs *éͯ‘ô‚³‡ O^çŸ'NŠvƒÿýÆ„¯VAÏa`M‚ ¯-Û!ÖÝ÷'½‰ÑÎ(ïŸñŒòz´+’Ò(‹o›6m¸÷Þ{ÉÍÍå‘Gáþûï'))‰gžy†ÒÒÒj¯·^˜4i Z/ìÞ½›¼<ÏÝnË–-###ƒ=zâ ÄX‰oĈtìØ±ÖÏß´àþ—,fT7 EL$=ø[Ó4ËÖΟV ¬Ýç¥Â™½ïwý0ph§X‚î·.ùÕæF3Ö£¿R~«DÎÅP|ùmDhP^ ó¿Ï¾‡§àº~Þ÷íØ .ê.Z#ÕŸò›”_‰Ä@»íHˆMhpâ»:5–Îër^¸‡Ò(‘çÆæ@Ò»¡æÒ î`O÷0ùˆ°@Ï.âØâoàˆa‡¨ÕÑvHC,ËGà™Þœ‰a/o²ó@7ĺÁ•Ú,¥·.Ôª Mqq1/½ôÓ§O§OŸ>¼üòËìß¿ŸÑ£GWûتZ/1çHNNvðÆó7} ”î¬ÿêtáj±! W9TØQ öúÂßñ`c”ßlLò»Ï}¿.ùÕÿmÄ{ŸbóDÎÅP|ùíDjb.N}Q+³û¾ïÉ:n;ô’_}ÒIù•H\ôïËæƒ K|Wå¯b`â@b"bÂ=”F‰<767LÒ›O¥ÜU‚¿Û§ÅÁ’[àÀõ6U|m«Âx<…7Oáuíå5Jo Né€^Im ¸ªó´iÓX´hW_}5Ÿ}ö©©©Œ?ÞU-2(J 5IkOÓïU8ÈwG}óD»’”2ÏŠ²Õ]gŒDL.qÀÏ;`s>ô5í~ëkq5+2¹Î&–ã.êœ d–Aâ ?wöYñ¹éW£ V¿Âúš‹Ðçcð«=·Gôñ-r€Ís~‚s= øòûaX•±u½Ç8|µ¾Ðy26Î%½ßoÓž_PÕ\Ü´iK—.Åb±0räHÎ;OFé};õåÓ­Ÿ†{.4Mcuþjní/Ç¡F®S+¾.Ö"½;©±ô‚XGYàžÅðõ4šùƒ÷ÖÁŒUwÚQˆu«1 ¦¯ñ`3ÞpôÕX|»wïÎöíÛiݺµ×m_ýuµ¯ië…¤¤$–/wÔvíÚåq…¬®Ï¯Ó´{:ŸqÉ@¾{¦åAJ®wt©:ùm…¨,{Ê—þæÜ£ú‰tˬÿÁ³  ¥VË4‚ZàW~}½‘Dô·Éouý Ú\„¦:Íò u•_+¢wö 欅6-à¯@|+øßv¸c!D(Ð"eÖÍò›’ ‰ÆcR~«¥ª¹øðÃ3aÂ4Mc„ Ü}÷Ýüõ¯ ÓH%Ò7¾/3¾ŸÁ‰òÄFÕõRSÝÙ~d;KÊý½u ¡›æy±!`¬Þ\;éQƒ#V…Mû ù˜Øb"ࣰ¿Úà)½Î.„žÂ«0¦cê"ÜD¥ÂÓW;`G¹ï¾û|J/@BBBµ¯ië…Ñ£G³nÝ:rssxõÕW½þãhšæñ3ço>8?<ú$êdŠTŠLÓášüŠÚ«pø(\ü$Ä\ío€‡Þ­î¦@1tv¥=ëQ)sÚ³WêóFšó¾_9ësÅuFµçVˆ9÷ÒjèüD<—¾ ŽAk5x¡ŒiÏ®Âr^iϲÕQmxÿý÷y饗˜9s&ëÖ­cöìÙá’$úÆ‹W¿ú5Ì#¬Ê_…U±r~×óÃ=”F‹<76eÌ磚·,ªŠH Žr˜·^ûŽ‹íI-ð”ÞĹ>1Ï|g½€U3‘ÞppÄwûöíÜsÏ=lذ²2žP…¢¢¢?GVV7ß|3ÿüç?iݺµGë…„„¦M›Fll,sæÌáÊ+¯Än·Ó·o_æÍ›çzŽË.»ŒM›6¡( }úô¡G|óÍ7U>óÅ™î îÕ´!åÙLu‘_bŸB%PQ)Z­D#¢PáÀgä×Xk”é)ÆÈïÜ ôæ™’s±>1F~û!>wu‹ü*ñm©‰‡hD Š`; Ï8ŽL¯È¯y^ŒüV1…±]»v~/,K&½:öªXÙ|psƒ(&µ:53Dô¹1#ÏMgÐÃ(½+Dð$PéÕ±á,kÚîg–^´f= &áMFœ3¥ô›€ÅwÊ”)Ü~ûí0þ|^yå’“k«·^0óä“Ozü=fÌÆŒãó9–.]ðó7kâ’…ðéëkgÊóÐ|<Ù:Õɯ‚¸ÂÌ1Öå¸>!ôCóM7v3< Åœö¬Ó¼çr.†“àÈ/ˆÈn}”±‘ò|üqxà4Mãí·ß&33³úI Ѷhº·ïÞ *;kšÆªüU\×çºp¥Ñ#ÏMý³éÍ®›ôúçôêûvý /Hé ‹oqq1&Là™gžá¬³Î"++‹sÎ9‡Gy$ã“ã5 ç*¶¶òÛÐð¯Q~}á’_óL¹8—„ _û}!ò[_Ç‘dV)¿àΪòë‹_~ù…o¼â¢( Ï=÷\˜G% „´ø4¶n ÷0Øul{Š÷0,yX¸‡"‘4PüHo-Ò›«ÃKzSñ¿LQÞ~ÈsehX|#"DmîØØXþøãN;í4Ž9ôIêÃv’¡Î´çlÓ]BµØ.CD£‚ü¼¾ä׫)¿’zÇWÊ3„K~+;âdPÓ ã8²ñ!¿Éùî÷*å×K—.•…k9iÓ˜õó¬pƒUù«PP’4$ÜC‘H9îŸ5Þ Äv¾ÏlÔ½Ö¯ôK;ƒáyŽ ‹ï\Àáǹ뮻8û쳉ˆˆ`„ ¡›¤Î˜&NîÖ>F «ØBYÚ˜ ÍZ€Ó‚øúø=Þi®s߯/dÚ³¤Þñ'¿œÂzù­û8…h™TUÊï()¿5aË–-,[¶ EQ5j ÷$’ŸÆ¡“‡(,-$¾e|ØÆ±*gu:‹¶-Ú†m IÃC?×έVzË_¡¼–8÷ïVƒ¹ ÑPã~^sá*Òß3fð§?ý‰!C†püøqúöíôI‚E5ò»÷… IÁ$AbŸó§÷ÏŽ¨°¨¾&xÍñ)÷úù$ ¾ä×ùy ±ü¥×Š˜*b>ê'þàË¯Ž”_#<ð€ëâñÕW_Í£>Ê”)SÂ<*I ¤Å§ðká¯ÄŸ>ñ]¿šËº_¶×—H5—Þ ÜÒkCœUDä·´ñì¦ìI îŽ ™ŠXeRÃÔfçÄаø~þùç 2„¶mÛ’””ÄÑ£GYºt)—]&¿l.UÈo7\«×ÄhÈs.®“N,N8ê锊áïrÀX×Gñ5—_|ôúùE$ á‘_ýä…çI 8…˜“5Åœaá!¿Ýœ·¤ëÌsIÊïûï¿ÏÈ‘#xä‘G1b„ßFF·v݈²F±¥p ÃÏ–19y„¼£y ê2(,¯/‘4úè£lܸÑõwëÖ­yôÑG¥ø6xüÈo>î«Où¡KuÖÅ×(½à®} ("¸Q_¨F~ý½QŸ©Ïò I*j'¿Ý¨} ÏÌ !¿Àqj–ÚÞSÉC~SÀ[~õ¨¯¤m[wZjÇŽQ”`7¢’„›ÅF¯Ž½Ør(|®6Ø@ÿÎýÃ6‰¤áP½ôÎÁûÜeÅ»5§q^¬DœÍ{~½¤WßÏë7µd«ð°øšOÊ‹UUýÜ[Ò°ð!¿Éùî¨o2:ùUðÝ[Ô‚×2’gú=„üê½~}!åWR¯ø«ö<Àk_¾.¿Ùˆójmå×ß¼ÓWø|UÊï(œsJî÷53kÖ,üq4Mã7Þ {÷îá’¤„»²óú뉉ˆ¡{;ùù‘HI/T^,ÃS|}J¯¯ÔfáÕJé ;Gll,ß}÷ëï5kÖ+¥7Œ“m€»ÊœójT¢!׸›×c놆W_o0 eœ#‘º­»n¢g›ëÀr¿ Åû/êkÎ6ˆ ÂÕKïUxKo?<¶JÂJÀßY³f‘••Eii)7ÜpGŽaÊ”)¬Xá¯GŒ¤áb˜œÆê±y"B£SÛâ9¾èÀ}O'P58­*‡Z!þÕó`6iŒüúBF~%õ†1+c£ç±¸dnØ“€;ò›GÍ#¿‘ˆ‹Q¡¦f‘_ðýæù}íµ×˜={¶ëoEQp8‚q‰ORŸ(Š" \…¡²óúýë±Yl®¨³DÒüØÅÔZzu"ñß]ÄKzM¡Ý[xÀoÍIØ X|_ýu~üñGÎ?ÿ|Î<óL:ôIêç„ÔSž3Åâ4Tò[*{‚Ç%ÁÌs¡kK(*‡§7ÂK¿Š”u| _ò›RC–__j’àãO~ŸA]~“3XÕžC”_ÿäääÈ=¾M„>û°þÀúzÝõÖÓ»co¢lQõþÚIø™é­ ÝmS0H¯Þ®HJo£"`ñŠŠ"&&Æã˜Õ*«6nôBW¸÷^ù-º´„/„gB~»(ø×@ØT+÷‹}Ôm?¢¿>¿É¯lÉ" ¾ä×yÜ,¿yÎÏm=ɯ†H³P³=3µ“ߦÏxï½÷P…¡C‡’””î!IjIZ|ïo~‡ê¨×êÊ묗iÎ’fÊ5JoVÿjz¾2¢Ko&έ€Ãñ4a—ôÊý¼€Å7>>žÜ\· ½ýöÛ$''WñIÃÆXLg@ƒ‘_UëSÜÒ«³¶¾vn)/³ˆžjÇUö·O¸:¤üJ6fù5ôÂ5Ê/@vèåWN¨TÅ>áhZiž¢}!å×›‰'2bÄ4Mãž{îá?ÿù'N ÷°$µ ->2{yGóèÞ¾~úéV:*Ù|p3“úNª—דHÞÒk®ÞlGœ¯ÊpRU Jµ,jriÊCzSñLmN—E¬#‹ïK/½ÄĉÉÍÍ¥K—.ÄÅűdÉ’PŒMR¯ÕÕȯ^÷)ÔØMíóOÀàe`µ‚¢€ÝÚÂññû~ N£vý€k$¿zccý˜”_I½áO~ñÜó !•_ 8nÍ =Nƒ_wƒÍUŠ+é§UóÉoÓŸOï½÷cÆŒ`×®]Œ=ZŠo#ÅXÙ¹¾ÄwÛám”;ÊéßYF|%͉šIï1 tl÷ ‡´ÎðS>ük%+‡¶jÕÑ_/é5öèuI¯/á…¦~ÞjÌÔX| ‘êüñÇS^^ަiDEEa³ìÏ’†Ž±u Þò ¡•_«ïþÿè-œ¯ó–:¯ØY ½d= ýÓ øüçmxt†¸²çs n ¨V~õ>¿)†Hù•ÔU¼Q]R/ë"ù=œR¡Oä åý#”ž‚}ø/¢S½ü6Ÿù“˜è~÷§Ÿ~:-[£™”$tjÙ‰ö-Ú³¥p ãz«—×Ô÷§Ÿ–^/¯'‘„Ÿê¥·8tŒu…xgcúÌpM?è7JUÿýê}J¯Þ£×KzÍJÍçüÕ©±±fdd ("–väÈ"#E×ÕŠŠ :tè@aaahF(©üD“â’!9ßé¬Oùm .ƒË³aæ9з,Mâ»ä-ˆwÖ‹…G}0÷#ˆqDµxô××ûI1÷ùÕåBÏð/–ò+©/Œs hÄ%»Û+tCLÔdÑ~Áù«×5›€pÀÑRñëÃBzŸ~þß?!µ¤¤À£CÖ,¨ÔÄ"¤:–#Ö1Ùˆjœd;nÈGÔælÚó(''UU½þIémœ¤Å§‘{$— GEÈ_KÓ46Ø +:Kš89ÔDzÀÀî€O^€.ñ°ÒO\î›`3- k&½ýð¹N–4ßÊÊJ¶mÛæú;77—ŠŠÐÁKBMUô òë\L×—ü*ˆ~½­p¦'h°l%4´ŽVU¸çI…Ì̬^=ˆë®K`äÈüûß½yÿýtNjPÛO¨_ùÍÆ[~Á‡üBS^´KÂ…~²ígú›Ê¯±‘ÝKE‘¹;¦yßoÒŸ ¶”Öðyõ©”î ·“üJ$ Ÿ´ø4ìªíG¶‡üµþ8öÇËKñ•4qœ?óp·,*s/¿ôBVEÎÖ.ñpÞYpÛ50ïøÚ4ßû²wˆêÎ:5—^#Rx#‹ïsÏ=Ç!C1b#FŒàüóÏç¹çž ÅØ$õŽ?ùuÞ–žìaºõ%¿:ñ€ª‰«yß¿lÇ¿þòò5yäL¬VϤæk¯íÌg´àT^·Æòë‘ó­ËïFÃßI°©_ùBlC°Y!¿¨èìkjd$´jøóçáœ_zVE>~.&ItvìØÁàÁƒIMMåœsÎaëÖ­UÞÿæ›oÆb±¸öK‚KŸŽ}QÙ9Ôl8°@¦:Kš89âVJoó"`ñ;v,[·neúôéÜ{ï½üöÛoŒ;6c“„…jz‘é‹iguãÄèú•ßlÙÇ@ë>pñΡ¥ÄxÝ_Qºwoé«~A@$¿ÅÆog)¿’PS¿òÛqñ©¸**à+›†7l„ý„(ÛDÅõrüo;È7ÿ‘gøçšGr™™6m·Ýv¹¹¹<øàƒÜ|óÍ~ï»páB"##]…*%Á§m‹¶$Æ&Ö‹øn:¸‰Ž19­UuMÄ$’ÆŠó;ßx>0 ° `ƒÉ“mté…E°ì;ˆŠ„Ïÿ óþŽ8øèWX·¢ÖˆŒB)½Í€Å >>ž±cÇ2fÌ:vìì1IÂŽ?ù๘v~9Ô·üv::Dñ+G Ä8­vÅŠ#^÷--µóý÷G=ª¸U ªþµY9jQ(¥f{€—_ã"]ʯ$”&¿)ÔM~õvE6L½¶üê¾í?àú›DT¸RÅæÊ£¬TFÙ8V*«xî<ã/^Q_)¿F ÉÉÉaÒ¤I\uÕUìÞ½›¼<ï’ƒäÙgŸåÅ_DÓjSõ@RSÒâÓêM|ÏêtVÈ_G"©ŒYsÞßùºïD´.²Û¡ +VذZaâCðþ"Kpܸb8:&"Áí¨©ôÞŠ”Þ¦‡lÀ+ñƒ±r¬©o¨ê±‰+Dåc#¡ìó«à¹ßÐa‡ÊåüóÛrÆâ»]eúôß(-u _ž)ŠÎÛ£ª<Æ)à¸óövˆ«þ0tö¨ö¬¿Y/ë7VßÝHshÏ" úgj£áwg[2ó|Åù¹­Cµç Ü."»}3àì ˆˆ„-Çl¨°*Œ¹4/¾ø•ÈH+IIíÙ½ûEV ­ªk®å!¼<1…ö–9+<ë«›d ݼø‘sh÷îÝtîÜ‹E\ÃV…¤¤$ HIñü2š:u*/¼ð­j˜ƒ>}útÚ´iãqlâĉLœ818ƒo¤ŧ±hÛ¢¿ÎæÂÍ\Þãò¿NSbþüùÌŸ?ßãØ±cÇÂ4‰oŒB©6ÍÙŠ¸›“£rË-Q<ö˜ÊSO©Lzn|ÔØÐÚ;ã!½—¤ëíŠd«¢¦Š_Iå×ø·A~óq™ Q~õ·¡”_#q*:XNjUŒ½¢ññ‘,^|ýûËi­‰zBz'O¾Œyó¾Äá,m±XPUñ{±ÍÊI»ƒvU¼–Où]áãÆ”|gÏ7pË®”_I(ñ#¿à}QÆÐêHŸ§zâBM‰:ØEó†uâXK …ŽX®¼¢ nà±Ç®â¾û.'..†íÛ÷qà ¯òËÏ¿ÓNƒHÓsêòëZèìtðÙ2LΡš0gÎ’’’¸ð ]ÑÞꢾ3gÎ$##£>†×äH‹OãÅ^¤´¢”–‘-Cò¥¥ì,ÚIßø¾!yþ¦Š¯‹7ëÖ­cÀù]Ò00I¯q êçe4Ìkgòd?Þ‚»ïÖ¸üòSüü³†Ý.‚%§iž‘Þ›¢ñÈ^ô/½ò³Ñ”â+©]võ¨¯A†ã’a¸suj’ßlÃ3Ô‡üZ¶v“À‹€EA©Ôè€(ÆpèÒ¥#+W®ÇáP±Z­´lÅÃOfôèóÙ³ç 3f¼Íš5ë(Õ4ªZ®ø”_ýß°k±n¸h åWRŒòëü;qÕ¼ ù5Èœµ öK9¨ªÆúõ»¹öÚóøÇ?®`Þ¼UL›öååv;ïkz|†ž¾Æ¨¯”_ºvíÊþýûQU‹Å‚¦i””äq¿•+W²zõj–,Yâ:Ö¯_?/^L¿~M»Or8H‹OCCã·Ã¿qvÂÙ!y­‡¶¢¡Iñ•4!|µ‚Ì1Ôzì)ƒ}ˆm4zý–ÖWÀyç•qà 6úõ³Ð½»…Ÿv`³BGm¤·ùž[š2R|%5À,¿†c H~-ˆ¶G8‡w4C³Y2¤/~ø ªjgåÊ·0~¦ Y!’_üñÇfμ€¹sWðç?ga³YQ…sÎéÃñã¥lÛö'­¾r¨L1 `鯲q¶bÉÅ]qA¿Jéªòlþ2—¯$¡¦óUO½÷SíÙx¸.s6ÑãÄ^ûŠ ;wÝ5›ÍJ÷îÉdgÏ&""‚mÛþÀáP9d³ñ›¯'Ó瑱ºœG‹£æ]ð*++‹¬¬,RSSyþùçyë­·xüñÇÉÊÊòùYÕ9´´ŒlIJÛ”¸Ú\¸™3ÛIL„w7‰¤qQ…ôö÷Îʇ±{¡ã}X´èaV¯þ'wMC™ÍÊqE! ˆ× ½:8vDdNFJ¯Dñ­ißÁ%K–ЫW/zôèÁøñã9qâ„ë¶Ÿ~ú‰~ýú‘ššÊÈ‘#Ù·oŸë¶/¿ü’Ò¯_? ĦM›BþžšæÊ±†Ÿºü[9å7“†!¿Q𯆠¿`µZèÒ¥“ÇíóçÁk¯}DVÖólݺš¹s_bÝúå|òÉ”)¢ú³/v:º"dúâ|'>Zù“ßð çbSFŸ£õ/¿V …6›…¹sW°fÍ6NªÄnw0kÖÃÜxãccáÂW9räÖ®]È%—\À§Šð[Ýu]•ÓÛüVNožôèуï¿ÿžÜÜ\Ö®]KŸ>"øä“O2mÚ4Ÿq82ÚbúÄ÷ ¹øöí$ÓœC…<7Ö7ƵAz'ƒ¥ïÂôíV.3ìì'¹âŠs:´73fÜÂü…“šF…óÑVÄ7 â6qŠ“Ò+0‰oMú–””0yòd/^ÌöíÛIHHà©§ž@UU®¿þz^~ùerss¹ôÒK™>}:GeÒ¤I¼óÎ;lܸ‘^x믿¾>ß^§ù5¶:Êò«·N ·ü¶¢­â#ïp¨|ýõTT¸«Ìšõ!£F]ÀÔ©7xDD®¾úr®¼òbJ…#6,Šl6Jp·AÒµÖµX÷ÕsÎK~„g/çbSGomTü:ç+ÃÝ}~ë*¿­‹]eéÒõüë_boiBBGÖ¬YOQQ1+V¼Ç¸qÑ®]ºw?!Cвe ¯›ð!¿;}½’”_IÃ#”-4M­Œâe+£P!ÏáÀð]®Kï ÿŒÝ¨`·;xøáñ®*ö:W_=˜ÓOç”éÙôŒC)½#õ.¾5í;¸lÙ2222èÑ£wÜq‡«}NN 6 m>ÿüs***عs'íÛ·§W¯^ 2„‚‚6lØP_o± /¤M‹iðÙ741Õ½˜§ü*@‡J”óïC‡Š˜>ý9*+…ünÙ²ƒQ£†y=®¨è(k×n "*Š[&ßÂÌ™/pÅø+)µZ9f±`G°GýóB]¿Á%¿î”g9›~äWŸ¯zC_çÜ5öæ®íœU€ˆ}÷_.ÿÏKJNòßÿ~ÃUW]DB‚ȸøõל~ú…üío/RRrÕbáà^›ù˜.&gÔ×EóNw–4<Ò:¦±÷Ä^Žž:ôç>XzÃ'ˈoˆçÆpbøχ½‹+¨ª3œ~z¼×#E!%¥“«Ð"½†¾÷’fA½‹oU}˜+S&''»ªWœœìº-66–¸¸8öíÛG÷îÝ9rä?üðŸ}ö'Nœ`×®]¡sÍ ?i”ú‚ÚIJnòkAôq‹E42Ÿ=û#F0iÒCØí öz=æÿx‰'JX¿þG^{íeî¾ûÞ{ï-¦L¹• EáGà] ØŒa¡žQ_s¦¿Ezý-Þå\lnø_¨V~ëºO?±ï  ¸¸”C‡ŽÒ¶­¨íp8¸è¢›8~¼˜‰dzcGvûaV¬øœ3RN'Ëbq¥>ûŒúz\H’Hiñiüzè× ?÷惛dEç!Ïa¦8VÀ¡Ïྠ§&šLfg{§„Ÿä‡r]<ª—ÞYxž %͉[Õ¹¶Å7Z·nͧŸ~ÊÃ?LII ƒ ¢wïÞØl¾ßêôéÓiÓ¦Ç1_}Þ$¾0V{Ö1TMÈ÷(}|”?üÕ¡òöÛñàƒwÒ¥Kv»·ßþÛn›JÏž©€Haš0áF.\„Õj%**Šž=SÙ±ãwþuò$ÿ®ßå¼²dNÏôÙß×Hp*=ÏŸ?ßuõYçØ±c?O}ÍEó1ôøú\9«³§ª³;'fbdæÖ½B»1ßJ-öî-dÑ¢å¼ôÒ#|õÕ<°aCxçÙ¼ürÿû³Á³ ïÚíÌ(ƒñz“_})Îñ7ðL°æ¢¤ñÚ!›ÅÆ–Â- IÔçÞ\¸™¶¤´ wåŒæ\§cÂ}½·~6›•>}º±mÛ.FŽÌà‘GÞcРTÎ<³3•Üygee•ÄSô^Üê|݆}Îh.„ãÜXïâ[Ó¾ƒIII,_¾Üõ÷®]»\Wà’’’ÈÏw_é?qâÇ'!AÈÊ…^ÈÊ•+(//§sçÎôîÝÛçxfΜIFFFßesÂ_Ÿ_ç—J:îµó§Q~»¹‡…¶Î8TÀÑSeœ{Î¥<òètLçÇs8~ügŸíþŒ,^ü9 ü«Õʵ×^í·ÞÄŸþt#eeeôïߟ-[¶pce%7–CL.¼W_4ñåîêï îöF:u_Ìû:1®[·ŽÄó6´¹r>ÖÆÏœá3‡˜«úZz°\´è †üÆŠúÿÙ»óð¦ªôãߤ-m–µÚÒ èFJ7¨Èà‚¢ ²ª,ÕZdd\ÔpAGQPQvpͲ´le§,¥ei¡-šäüþ é]Ò¤Ëûyž<4ÉÍ9ï 9÷Þ÷.ç¹ œ>Áˆ¯Ó¼y #F˜î«ÿðÃÏxùå7hÓ&ˆ‡~ˆ³g3X²dO©z,“Øàh(~®z¹]_µO=§z„4 ©’û|“3’ÑyëpÒ:Ù¼lQý¶uj»xã¾ÞãË`e8;CP/{÷!<<€'2ÍÃÇѬ™+Wnçüù<•¢¥$½ÿxš“^YçV'ŽØ6ÚýRgëyRçìÑ£;vì 55€iÓ¦Y¾œ¸¸8 ,+éÓ§Ó§OêÕ«@zzº¥œ‰'rÿý÷+_Ø’õeÏæçEî%´íÙzóÕ•ÕÐØ` ël&£G¿N|üCŒóNNNìÚuóòšY³æâåå…Ÿ}ö ƒ?IPPsçÎe×®] ˲W€ÉN´ýÔá/–š5á¹j/{–¾X—•2Hù¾_ëéÉ‚m7=YCÀpQŠ9s–0uªiê77WòòòxûíIh4ÆŒÅÁƒ{øôÓùá‡y¤¦&Ó¨y34š›—<ßò¾y!Oç­«šKeDç*%ÛFGHº9uÑjHþÝôª^o`õê-¼öÚÓ|öÙ""IHèÉ‘#™,[¶sç.㦑”ô&"I¯(Æ!—:OŸ>„„Þ{ï=5jThÞAñððà믿¦oß¾èõz"##ùöÛoÐjµÌ›7ÄÄDòóóñõõµ¬ Ìålذ½^O—.]˜9s¦#šYǽì¹ÈÙ_Ï8è¶ØôV‘3¿k°œ\r8g ‰R#¦#C9Ÿýë ž¤mÛ6œ9c:Ü·o~øa!.\`ûöíáä䄇‡~ø!ýúõ#33“Q£F±nÝ:šÌÒ·ÆÀ3½<6´mÍg}¡*ÏüÞŠôꬴKìo\úÜí„éÈØôÌ/˜½2(EŽAqÝÙ‰ï¿_Œ››¹¹¹4oތɓß-4r§‹‹3gÏfpÐä«`…‚^Á”…WÿKŸEÝ óÒñÉÑOPJÙlîdƒÑÀ¾sûx²Ã“6)O”L¶ö”d¹¯×<¨ÃµnÄŵg×®ýüöÛÞ ³f-gùòM€iZJ0­íKLz»!I¯(Æ!‰¯yÞÁ¢&L˜PèyïÞ½éÝ»w‰etîܙݻKžuÆŒ•RT€9Ñ…â—>cZu[lÚ™^gzÉœüšw Kœ­¤{Üìtã¦K4³¯\!:úFŒx ¥Œ\»–Onn[¶l%..ŽÅ‹£ÑhÐëõ,^¼˜{ï½—¼¼<ž~úi¶lÙB¯^½hß¾=›6üÆà7òŸ$ ³?T7’ߢ+dû%¿Ò뺒îÓ‡b÷ý¹™üZ÷ÁŠöG' 1p^o`Ѣ喘.]îÄÕÕÕ²Ü! ,Xð#žžžxxxpúôiú­q¦ÅïzNý D›ûˆ¹’ü ÇÓyë¸põ™y™´hØâö(ƒÃ“¯Ï§C ™Ê¨*ɶÑ^nÜß{Îî‚éßÃÿ²´dcÄÍÙ‰¶m9xð87îâ×_“ðók››+ùù×0ŒÄS$éý?nÞÓ+I¯(AµÜJÔTæLI÷ýbZE'qsr[¸ë(›®âæˆ&¥ÙjÏA±œ€&z=9z=_|þ%×õz~üq!ôçÒ¥K̘1£ÑHhh¨eú‚wß}—;w²iÓ&î¸ãKyóæÍãÉ'ŸdÛ'®) ÍšÿD¯^Ù¼ôÒŸððp³cË„€’ïÓ‡bÉï3«¾€ï lvŸ~Sà"ðÃK8|ø°å Ùµk×ø;cP IDATþûprrâ믿fذa¸¸¸°{÷n†Jjj*ÿÝ §gt%¢Š˜GvNÉL±Y⛜aºíFFtµÆå|?†â„ÖÙ™‡íA£ü|öÿw5 üD¿~=hÐÀùóWpêT`š.ïNL ¯$½¢<$ñUä;ÓÄÝñny&©èUŒG¹™Û3ùÕôzŒÀ%àêÕ«¬[·ž´´4Ú¶m ˜ÎHi4 _ý5Ï<óL¡¤÷êÕ«|óÍ7h4´î!œ?y’ã'rIJZË„ kÑj¡W¯P–-ûÐŽ­¢´þÊÍÚ­Ïþ-~µFE“_-¦KŸ €‹ ûö`É’eôïß—ÀÀ4 ãÇç©§ž²|&""‚Q£F1räH_¸ä0tè5<<¬K–³¾Â±‚›ãæìÆÞ̽tîn“2S2ShÑ ^ ¼lRžŽcÉyÕÏðä'NÜqG<Ë—/¤iSÓÔEii'‰ïÊÊ¿Pp㄃“V‹«ÑHVIoè?$ée`÷Á­D]RtÐ+ë×âLó©™Ðu7  s—›éÌÍ•šyP`l3ÀNei1]¢Yß`àÌéÓhµZN:…V«%))‰ãÇsùòeÎ;G×®…§±˜ü~{6EJŸžìϸƒÔYݧo­2k€–Àƒ)S¦àááA“&MèÛ·/ÿþ÷¿™;w._}õÓ§OgéÒ¥–)23/Ó¾ý xx¸’‘±—JD"Dŵ÷nOîõ\Ò.¥иèðå³7Ó4'°$¾¢fº™ô:;ÿƒ|||HOOçÒ¥KÌœ9›‘# }⃦¢Õj 3)×-=éâö$ñvd}$ÎzÚ#«÷£Mƒl5‡hIIðÓȲݭ’_GÏÀÍ3Ñ=nü«w6ðÆ• Þúûk\7(ê9kؼy“åÈf~~~‰e™_wvv*ñ}!ª^ÑÚ¡Xl¤ÎjÄçîEFh¯ì]·@ŽR¼õÖ[–ײ²²˜1cÝ»wgÍš5$%%¡Õj %11‘F±hÑ"V®\IƒÁ\¿.g…c˜GvÞ“¹§Ò‰oJf Z–¯[„&„ÝLz|ðc øÛßþÆ€èÔ©îîî¼ðÂ_9|øƒ?Ƶk×ùúëY|ûí<šÏQZÒû.¦Ë›…(I|…ƒM‚Í;ÖQ¦÷<“n$Á”œCµL~Í‚1ÝûHÌ †Å%È÷Stý2kn®èIMMeË–-tîܹÐçgΜ‰V«å“OžqHüBÜt«8¢gñ¹¤Ú¡â °ÇÇU¥È´Z-Ÿ}ö‡bèС|øá‡8;;s÷Ýw³jÕ*êÕ«@BBï¿ÿ>¯½ö/¿<>_Á„¨¸Öž­ñ¨çÁžÌ=<òH¥ÊJÉL¡]Óv¸»¸Û(:!ìáfÒ I¬^}Þ|óMêׯÏ<ÀºuëprrâË/¿æãÿ€³³3.À$é¶#‰¯¨Êp´õT*pó&£à{ôæŽvyv®”7ÌR´¡ðÙ^ë¤×ü‚;à~ãæÇÍs¼ðÙ5–ýdZ±÷éÓ‡/¾ø‚G}”œœ¾üòK&NœH½zÎÜs b"ª ë~jžöàYÓªn‹-KënÞP’²ôÅ6˜öuv¼ûî»´hÑ‚?þø½^£ÏÔ+ô™±cÇ2iÒ$>ûìI|…Ch4ÓW6Ù99#YFt5LR‰GDDP¿~}–,YBBB .Äh4âää„R ½ž×€)’ô>€éN_IzEùIâ+ª‰2$¿—O5çL™îð ßu¦û~‹Ü\"ëù€+ëV ¯…yÄŸh K»@f¾/Ï>kà§ŸÎ3pà@´Z­edh-çÏϵQ„BØJiÉoœ©š“ß7Ý›çú…ÒûdYû¢y:³'C Yxgg&7ž·¼¯ÓéŠ}ÆÕÕ•ÐÐP¶oßV†„¨:oÛÏl¯TJ)R2RsǘÛ/,D5wàÀ®^½Š»»; 4àÇ$--¯¿þš‰'Ò XrcYIz…-Iâ+ª‘’’_«{ =o¼l}öלdÞØ«ö=j:Ó\ò­³pcQ[Ž],áÅêß6VÏ­ß÷ ÀÛ3Ž¥KMO‡ ;ÌÏ?ÆÕÕ™>zˆÇ{²H-2R¡¨.Š&¿`é§æä×*“½kéßÒúdY¯ÒææÐÀˆŠ»žwâða[·nå(ô™ÜÜ\öìÙƒ››[kÂötÞ:æìžƒÞ¨ÇY[±Ý®³¹g¹põ‚Le$j0Ó¶#8XËÑ£—øç?ÿÉ?þñË»^^^¬[·ggg~»[ÛéotFÑ’ôŠÊ“ÄWT3Ö÷B±3¿$™¦Sâ—?'bºÁ÷ÆåÏ¥ñ=Qú{R4áµ¾¦3¸È2æØ %²qÌ›gý¼h›…¨nnqÊ“Â#>ßà %f¹eî˜v€nÜ[Ð2:€?þè@ß¾Ù¸1‡qãÆO£FÓ²7Þxƒ¼¼<þõ¯wËÓ8!lJç­ãšáG.!´yñQüË"9#EÍ·o_ ÜÜÒ™8q"¿ýöƒ âÒ¥K|õÕW¤¥¥äcÄm 7l‘¤WØ$¾¢šº]Lá3Àæ³¾V—?—ª¬§˜Ês*Ê:áµ>l=(W)Ioa’ôŠšâV·'ÜôªHò[¬_–õò‹£ÜLz»qc'(ŽF`ݺnÄÆn&99™6mÚ@£FøñÇIIIÁË«£GËÎ’pë‘+šø¦d¦ÐÀ¥AM‚lšvçêz'™™›iÙ27ò믿¢ÕjQJ¥SìÜhµp’ô ›’ÄWTs%(k~n¾úÆx47G€¾ÕÎôíZóÎyY¯‡6ß¿kf}âեͷNx¡ô¤W.sÕUÑTpóìï³Å“ߢ}êV}Ñ:I6X²$½…cر#Ž7ßüï½÷Ÿ~ú)J)”RÜw_~ùåç²7Gˆ*àÝÀ¯ú^ìÉÜÀˆ*#%3…öÞíÑj´6ŽNûóòª‡! ²³ Ìœ!mô~¸ÈBݸ±ï$I¯°I|E a>»t›3¢ž7æ.z´µ[¤s‚òß\R¢k‰§,gy…¨éJ›žÌœüÞP´_–ÖKꇖ#ÿEë3™8ñA&N|åq á8í½Û³÷ÜÞ >%#…8ù=‹ZÄ3€ÆžðÒ·ZH’^a[’øŠäVýÙ)tÊJt)¯5º¼SÒçÊSç­HÂ+ê²Ò¦A²~ßZÑ~XÖK›¥‰ê¥½w{À4²sEßV [Ѽ~óªM›8~ü$ƒ?Ï–-7×Û 6`üø—xé¥çÐh pò ’ô {“ÄWÔr·K€áöI°-”õþCYé‹Ú®¤©ÊJêƒÖË%I¯µC‡1|øp.\¸@£F˜={6…–IIIaÔ¨Qœ;wgggâããùüóÏqsssPÔuKc·Æøyú±'sO¹?›œ‘,g{EµvùrwÞÙ WWwV¬XAÏž=9{ö,|ð¯¼òê×wgäÈ„R>-I¯°_ÔÖ÷Uäa å-óVñ Q={[–þr»÷ëfJLLä¹çž#55•qãÆ‘Plwww¦M›ÆþýûÙ½{7yyyLš4ÉþÁÖa:oå²åòHÉH‘û{Eµe0¸ï¾ddœcÍš5ôêÕ gggüüü˜:u*ÇçÝw?¡  €âgx%éö%g|Es«{ Íì1:¬¬ä…¸õýøå)£îÊÌÌ$))‰5kÖпFÍÑ£G ¾9&‰¯¨¶‚‚îàäÉÓ<ðÀ…Ö3fÏ>û,ß~û-»ví¥S§h OOY·×ßÂþ䌯¨£â°ÿYVGÔ)DuW‘>!}ÉìäÉ“´jÕ ­Ö´9×h4øûû“––Vêgòòò˜9s&}ûöµW˜ÓÈÎDz‘{=·ÌŸ1Ïý+—:‹êH§»—ôô Z´h»»{‰ËÔ¯_àÆ_3Y Ç3¾B”{å[Ö‘g…e'}È®_¿Îã?N=xôÑGK]îÅ_¤qãÆ…^óçÏ/ôZvv¶ƒ¢©Ù®^½JjêbccY½z5/^¤iÓ¦…–[°`žžtè ¿aáx’ø Qn²ƒ.„¨Z·nMzz:F£­V‹RŠ´´4üýý‹-[PPÀã?ޝ¯/S§N½e¹S§N%66¶ªÂ®“½ÂÑ aOæž2'¾)™)´kÖ7g„ÌJ:x³cÇââd»^^O<ñ>><ýôÓ´mÄĉ¯:8Z!L$ñB!j°éÓ§3}útBCC™™èØ…(B_!„B;0ìlž¦èVR2RhX¯!«8*!*æ/y†U«¾ÃÓÓƒôôt¶nÝJAAþó ÒÓ“žÅ8$ñ=tè]ºt!44”øøxöíÛWâr+W®$<<œ @NNŽå½­[·Ehh(÷ß?gΜ±¼·xñb¢££‰‰‰!22’9sæTy›„¨‰¤/ !„ý„4 ÁYë\¦û|“3“ÑyëÐj䅽ɶ±ì|ð^.]:ˆÁpÚòøöÛO–%rÈÚ411‘çž{ŽÔÔTÆGBBB±erss1bË–-ãàÁƒøøø0q¢é’ £ÑÈСCùôÓOIMMåá‡æÅ_´¼7|øpæÍ›ÇÎ;Y¹r%‰‰‰äååÙ³‰BÔÒ…Â~ê9Õ#´Yh™ß”Œ¹¿×AdÛ(Díd÷Ä733“¤¤$† @ÿþý9yò$G-´ÜªU«ˆ%$$€‘#GZ&OJJÂÅÅ…{î¹€gŸ}–+Vpýúu´Z--[¶$++ €K—.Ѽys\]]íÕD!jé‹Ba:oÝm/u.0°ÿü~™ÊÈdÛ(Díe÷QOž¤¤¤Ð¬Y³bËO:•ØØØÊ†+DµSÒ†qÇŽÄÅÅ•«{õEþ(j'[õEQ;è¼u\¼z‘³¹giåѪÄe’3LɈÎÕ—ì§ Q9ŽØ6ÚýRçÖ­[[Žˆi‚ö¢GÍüýý9qâ„åùñãÇ-GàŠ¾—““Ã¥K—ðññaß¾}4hЀ®]»бcGüüüصk—Z'DÍ!}Q!ìÏ<²ó­îóMÉLÁÇǦîMí–¸A¶BÔ^vO|½½½‰eîܹ,Z´ˆÖ­[º| GìØ±ƒÔÔT¦M›f9*GAAëׯ`úôéôéÓ‡zõêѶm[2339pà‡æÈ‘#„††Ú©…BÔ Ò…Âþ‚áîì~ëÄ7#EîïuÙ6 Q{9äRçéÓ§“À{ï½G£F˜5kãÇÇÇLJÄÄD<<<øúë¯éÛ·/z½žÈÈH¾ýö[´Z-óæÍ#11‘üü||}}-+¨¦M›2{öl† ‚R ƒÁÀ矎ŸŸŸ#š*Dµ&}Q!ìËIëD„W{ÎÝúŒï ˆAvŒJX“m£µ“Cß~ÿý÷b¯O˜0¡ÐóÞ½{Ó»wïËèܹ3»wï.ñ½G}”G}´ò QËI_BûÓyëJ=ã{ùÚeŽg—­H¶BÔN2+ºB!„é¼uìÍÜ‹Q‹½gNˆe`+!„°-I|…B!ìHç­#¯ ãÙÇ‹½—’‘‚“ƉðæáöL!j1I|…B!ìÈ<²óÞ̽ÅÞKÎL&´y(®Î®öK!j5I|…B!ìÈ××F®J¼Ï7%#EîïBˆ* ‰¯B!„i4Ú{·/6²³RŠ”L™ÊH!ª‚$¾B!„vVÒÈΧsN“Ÿ-g|…¢ Hâ+„Bag:/ΠÀP`y-9#…¢*Hâ+„Bag:o× ×9|ñ°åµ”Œ<êyÐ(À‘ !Dí$‰¯B!„YFv>wsdç”Ì"[D¢Ñh–BÔZ’ø !„BØ™W/¼xºÏ7%SFtBˆª"‰¯B!„XpU`(`ÿ¹ý’ø !D‘ÄW!„¬ßÔ © d`+!„¨"’ø !„B8€ÎKÇ¡‹‡È×ç“’‘ g|…¢Š8;:€ê¯¥£BXHBÔ:oFeäÀù¤d¦àçéG÷&ŽKÔ(²]¢¬äŒï-ÌŸ?_ê®õÖ庫³ªü^ªªl)·êË–rk{~?Õ±®öÞíØ“¹‡äŒä í­ŽíªiuÕ&5å{« qJŒ¶Qb”Ä÷êj2$‰oÝ©»:“¤¬æ–[•eK¹µKmM¤ÊZ—§«'þüÙ“¹Ç2•QUÕe µµ®Ú¤¦|o5!N‰Ñ6ªSŒ’ø !„B8ˆÎ[Ǧ“›H»”FïŽG!j-I|…BˆìСCtéÒ…ÐÐPâããÙ·o_‰Ë­\¹’ððpBBB0`999vŽT”Dç­ccÚFÑY!ª$¾B!D –˜˜ÈsÏ=Gjj*ãÆ#!!¡Ø2¹¹¹Œ1‚eË–qðàA|||˜8q¢ýƒÅè¼t8k kæàh„¢öª³£:ççç°ÿþR—ÉÎÎfÇŽö ©Î×]ÛlïºÍ¿÷«W¯Ú¥¾²*©?Vå÷RUeK¹U_vm)×V}133“¤¤$Ö¬Y@ÿþý=z4G%88زܪU«ˆ%$$€‘#Gòàƒ2yòäBå•eÛhKö\ÿU׺œÎ;A:ø7ögÏî=UZWeÕÆºjÒv±,¹?S5!N‰Ñ6Êc•÷GUGÍ›7OòG|Ì›7ÏÑ]°éò¨«ÊöÅ?þøC…††z->>^­[·®Ðk|ðJLL´<ÏËËSNNNÊ`0H_”‡<í¢<äQUÕëìß=z0oÞ<qwwwt8BØE~~>ÇŽ£GŽ¥颮±w_Ôh4eZNú¢¨kd»(DõQÕýQ£”RUR²B!ªTff&íÚµ#++ ­V‹R 6mÚTèRç… 2sæLV­ZÀ¾}ûèÑ£'OžtTèB!„]ÉàVB!D åííMll,sçÎ`Ñ¢E´nݺPÒ ¦³G;vì 55€iÓ¦1xð`»Ç+„B8ŠœñB!j°ƒ’À… hÔ¨³fÍ¢}ûöŒ?X±b¯¾ú*z½žÈÈH¾ýö[<<<½Ba’ø !„B!„¨ÕäRg!„B!„µZL|:D—.] %>>ž}ûö•¸ÜÊ•+ '$$„““À™3gèÑ£aaaDEE1pà@Ο?o—ºóòòèܹ3ÑÑÑDEEѽ{w>\åõZ?~çîîÎgŸ}fƒˆM-ZD‡,¿…'Nجl3[¬ó¶nÝJTT¡¡¡Üÿýœ9sÆòÞâÅ‹‰ŽŽ&&&†Úµkg©kÆ ôìÙ“"##Ù°aC•ÕÕ©S'‚ƒƒ-ÿWæßVEëúïÿK§NˆŠŠ"::šèèè*k×­êªH»ˆ¯¯/Z­–Ë—/—ú{0oC+Ó®ŠÖeëv3†   ´Z-+V¬(ô›·u»¬ë*ºßsï½÷–Ø.{)-¶ÌÌÌ¿G°Žq÷îݖןzê)BCC‰ŽŽ¦k×®üñÇÕ"Æ’öm×®]‹“““Ýÿ­Ý*Æ·ß~ÛÒïî»ï>EhRZœ6l >>Þ²Ÿ5eÊÇX%“$UsݺuSß~û­RJ©… ªN:[&''GµhÑB¥¦¦*¥”=z´zå•W”RJedd¨M›6Y–}å•WTBB‚]ê6*77ײìǬzè¡*¯×lëÖ­êá‡VAAAj÷îÝei²MêÖh4êÒ¥KeªÏÖu÷íÛW}øá‡–çgÏžµ[ÝÖF­ÆŒS¦ºk²ƒªÝ»w«7ÞxC½øâ‹%.ó /¨gžyFÅÄÄØ¤ÜœœËßׯ_WñññjÁ‚6){Ó¦M*##C)¥Ô¥K—TÛ¶mÕúõë+]î©S§Ô¶mÛÔôéÓUß¾}ËëíÊýõ×_UûöíÕ•+WÔµk×TÇŽÕO?ýT®ò͆ ¢Þ|óM¥”iÞØèèhµ}ûö •eíùçŸW/½ô’RJ)ƒÁ zöô³ IDAT쩦M›Vér­={V¹»»[þï*kÇŽ*,,L¥§§+¥”ÊÍÍUW®\±IÙÖ*»Þ1 ªM›6–ßè|  dy¯aÆ*%%E)¥ÔwÞ©\\\Tnn®Z¸p¡jÞ¼¹š0a‚RJ©íÛ·+???•••U%uyxx¨eË–Ù¤]/^TÍš5SûöíSJ)«|}}-ß¡-Ûu»ºÊÛ.¥”úå—_Tfff‰ÛIë߃N§SAAAnWeê²u»6lØ N:¥U§N ýæmÝ.뺊î÷Ü{ï½ÅÚeO¥ÅöÔSOû ªUŒË—/·Ì#¾råJèø”ºõÿqvv¶ŠW}úôQS§NuP„¥Ç8uêT5`ÀËÿ¯­¶YUZœááájÅŠJ)ÓzÐÛÛ[íß¿ßîñÕ¹Ä7##CyzzZ:›ÑhT-[¶TGŽ)´Ü?üP(¡Ü·oŸòóó+±ÌüQÝ{ï½v¯Ûh4ª·ß~û¶I·­êÍËËSñññêäÉ“%®ª²nF£²³³o[Ÿ­ë>tèjݺµ2v¯ÛÚÕ«WU“&MÊ|°¡6xûí·KL|W¯^­¨Ö¯_¯¢££mV®Ù¥K—TTTT™“Óò”­”R½zõ²ì¤Ù¢ÜY³f•;ñ½U¹#GŽT“&M²<Ÿ6mš6lX…Ê×étjóæÍ–çcÆŒ±ÉÁ›wÞyG=óÌ3Êh4ª+W®¨»ï¾Û²Aµ•÷ß_õë×Ïfå :T}õÕW6+¯$¶XïlÛ¶M………YÞ»|ù²rssS×®]SJ)Õ¶m[õÛo¿©ŒŒ Õ°aCåëë« ”ÑhTFmÛ¶ÍòÙøøxõæ›oVI]õêÕS_~ù¥MÚµ}ûvRè;ôððP;wî´y»nWWyÛe­hÒfý{0ÿÝ¢E uäÈ‘ µ«2uÙ²]ÖZ·n­6lXè7oËvY+-ñ]ºti‰ËÛSÑØ6lX(ŠWkÖ¬qDh·Úoî¹ç›–¦¹S7oÞL÷îÝm^¶­œùäyäËÿcu±páBœ-ÛFãàˆ »|ù2,]º”Î;Ó¹sg~øáG‡U¢iÓ¦ñúë¯@XXï½÷^¡ß¨½T¯_X5R–·RŠ‘#GÒ¬Y3þò—¿Øµî5kÖžžÎСCyòÉ'«¼ÞÕ«W“––ÆðáÃ-¯Ù2ñ¸]›ÓÒÒØ±c¿ÿþ;çÎã•W^±KÝz½žmÛ¶1xð`þøãÆŽK¯^½0 U^·µ™3gÚt'Ü‘î¼óN¼¼¼Š=¼½½9}úô-?;zôh^ýuš7onÓrÍŸONNæäÉ“lܸ‘ï¿ÿÞfeœ:uо}û2}út|||lVnim©L¹eíÛ·«çÃ?$77—˜˜†J·nÝprrªT¹§Nâ¯ý+:tàìÙ³œ9s†ÔÔTfΜi³ïeÆ äääðð×é{(KÌìÚµ‹Ÿþ™7òûï¿óÅ_”¹|[ªèÎ[nn.ƒ bÙ²e¬\¹’Ö­[3lØ0K²aº.\¸@›6m˜;w.ÉÉÉÜu×]ôêÕ«Âu5jÔˆ… òÚk¯1lØ0òòòˆˆˆÀÙÙÙæíº]]¶lWETU]µµ]sçÎ%55µP»ª«ê–´™Í›7ü‘3f8:”BΞ=Ë»ï¾ËÔ©SÓvÑÖÜ+K¯×£×ëÉÏÏgË–-,X°€±cÇ–y {QJÑ¿¦L™Â‰'Ø»w/¯¿þ:û÷ï·{,¥¯Õk©Ö­[[ŽòiµZ”RÅŽ:øûû³zõjËóãÇ:’¦¸OŸ>ÍÒ¥Kí^7˜Vb#FŒ`Ò¤IU^ïºuëØ±cAAA€i'þá‡fÆŒ<òÈ#UÞfóYæúõëóüóÏ[楬êvûûûãëëk9û׳gO®_¿Î‰'®òv;vŒ­[·²dÉ’Û¶¹&ؼys…?»iÓ&6mÚÄË/¿L~~>/^$<<œýû÷Wª\kÍ›7gÀ€lÚ´‰'žx¢Ò1ƒi0¦x€7ß|“X^·EÌ%íÌT¦\ÿBge?^èìUyë™5k–åïçž{NwÛÏÜ®ÜuëÖ1sæL4 6dàÀ¬[·î¶‡Êú½Ìœ9“„„„rí(ޮ쀀 €««+ýû÷góæÍŒ5ªÌuÜŽ­ÖyÖÿÿ999\ºt víÚEƒ èÚµ+™™™deeÂÎ;-ªÔ¯_¿P¹={ödÛ¶m6«k×®]Üwß}œ={ÖÒ®Q£FñòË/Ó´iÓb¿Ý²Ô¦AŠÖ¯_Off&íÚµãôéÓDDDдiS›¶ëVu)¥ÊÝ®[±þ=˜ÿÎÎÎÆßß¿Bíªh]¶n—5gggΟ?oùÍÛº]·c}œ¹]YYY4iÒ¤RåVF³fÍpvv&##ƒ-Z¦ö]T ,`âĉüòË/xyy9:œB’’’HOO'::€óçϳbŠΟ?ÏĉIÓ¦Miذ!Æ LÛ™?ýéOlß¾½Z]!xîÜ9:dÙ§ ¢sçÎlÚ´‰ððp»ÆRçÎøz{{ËܹsÓ(›­[·.–Äôèу;všš ˜NÑ<Øòþ˜1c8rä‹/¾åQa[ב‘AVV–eÙ йsç*¯÷½÷ÞãÔ©S;vŒcÇŽáççǪU«n™ôÚªîììlË¥ÍF£‘ {ËzmUw\\žžž¤¤¤X6œ­[·®òºÍ¾ùæú÷ï§§çmÛ\›”tdÕüû;vìßÿ=å>bXR¹©©©–KÞrrrøé§ŸnÛ¯ÊZvzz:÷ß?ûÛß*|uÆ­Ž2WætIŸ4hsçÎåÊ•+\»vY³fY6VåuñâE عs'Ë–-cäÈ‘Ž×,22’U«VPPPÀÿû_"##+].˜.[´hO?ý´MÊ32d?ÿü3J)ôz=?ÿü³e‡ÊVlµÎ+((`ýúõLŸ>>}úP¯^=Ú¶mKff&ÀÛÛÛrÐ)44”E‹ѬY3ËÿËöíÛ9}ú4cÇŽµy]?þø#-[¶´´kÑ¢E´lÙ’T¨.0õSówؤIÚ¶mKpp°ÍÛu«º*Ò.3s_¶îÓÖ¿oooZ·nMýúõ+Ü®ŠÖeëvYsrr",,¬ÐoÞ–í*Êú=ƒÁ@FF†å¹¹]ŽJz­c4h_~ù%pó;¨ŠÛwÊË:Æ~ø7ß|“5k֔뺪fŽñ‘GáìÙ³–}Ž2~üøj‘ôZƒ¶üÞ/^¼È¶mÛˆŠŠrTh…˜ãôòò¢I“&¬[·0Dغu«Í¶Ûå ªÎIMMUwÞy§ Q:uR{öìQJ)õÖ[o|aùòå*,,LµmÛVõë×O]¾|Y)¥ÔÆ•F£Q*::ZEGG«þýûÛ¥îmÛ¶©˜˜Õ¡CÕ¡C5hÐ uúôé*¯·¨²ne‹º7oÞ¬:tè ¢¢¢TûöíÕŸÿüg•••e—º•R*))IÝqǪC‡*>>^ýöÛov«Û`0¨Ö­[Wh ¥šjÍš5ÊÏÏÏ2苟Ÿ_‰­[·®\£:ᦚ &Xús‡Ôûï¿o³˜GŒ¡6lhYWDGG«Ù³gWºÜ(???Õ´iSåîî®üüüÔ_|Qér•Rêÿø‡ VÁÁÁêõ×_/×wamÕªUª]»v*<<\ÝqÇjÆ .ËÚéÓ§U¯^½Tdd¤ŠˆˆP#FŒ° ˆTYÓ§O/Ó`…åe4ÕË/¿¬ÂÃÕN§S#Gެ’QVm±Þ1¯sCBBT·nÝÔ©S§,ï-]ºTÅÄĨèèh¢Úµkg©ë×_U>ø jÚ´©òññ±¬·l]W\\œjß¾½ŠŒŒT-Z´Paaa*99¹Ru=óÌ3–ÏõíÛWÅÇÇWY»J««¢ízøá‡•ŸŸŸÒjµÊ××WuëÖ­ÄßCdd¤å»¬h»*RWU´ëÙgŸU~~~ÊÅÅE5kÖL¹¹¹UY»¬ëjÑ¢…j×®RÊ42{ÇŽUdd¤ŠŠŠRÝ»w·´Ë^J‹-##C=øàƒª]»vJ§Ó9t¢´]\\”¿¿¡mã… ªUŒÖÔ'Ÿ|â€èLJ‹ñÂ… ªOŸ>J§Ó)NWæý{ǹqãFuÇw¨¨¨(¡>þøc‡Ä§Qªš]°.„B!„BØP»ÔY!„B!DÝ"‰¯B!„BˆZM_!„B!„µš$¾B!„B!j5I|…B!„BÔj’øŠJiÞ¼9iiiv«oíÚµÜqÇ´oßNǸqã*5©¢lRRR¸ûî» '22’ÿû¿ÿ#??ßÑa QíÙ{;)„(ݰaÃèÔ©QQQôêÕ‹ŒŒ Ž?NãÆyë­·ˆ‹‹£]»vlܸ‘±cÇCdd${÷î`ýúõèt:†Ndd$;vd÷îÝn•(+I|E¥h4»Ö×´iS,XÀÞ½{IJJâ÷ßgΜ9vAˆºÈÝÝiÓ¦±ÿ~vïÞM^^“&MrtXBT{öÞN !J7uêT¶oßÎîÝ»éÚµ+o¿ý6†Ë—/Ó±cG’’’xíµ×èÙ³'}ûöeçÎ >œ &XÊØ·o ¤¤¤0nÜ8žxâ ¶H”‡$¾¢\–/_NDDQQQ¼úê«–×:D¯^½ˆ'**ŠÏ?ÿÜòÞæÍ›¹ë®»ˆŽŽ&**Š+VðòË/OLL ÷Üsàƒ> 11Ñòùììl¼¼¼ÈÎÎ&::šÀÀ@\]]‰ŠŠâĉvh¹Õ_UÉnÛ¶-:­VKÇŽ9~ü¸£š*Dµåèí¤¢tß}÷:u"22’™3gZ¶qnnnôéÓ€¸¸8<<<¸çž{èÔ©‡²”H·nÝ4hgÏžåÔ©Svn‰¨%Dedd¨fÍš©ýû÷+¥”š1c†Òh4êÈ‘#*..N8p@)¥T^^žŠŒŒTÛ·oW.\P-Z´P7n´”sñâE¥”Rçγ¼6þ|Õ³gO¥”RÙÙÙÊÛÛ[]ºtI)¥ÔG}¤FŒQ,žôôtÕ²eK•””T5 ¢†±îSÿüç?ÕsÏ=§Ž?®4Z¶l™RJ©™3gª ¨õë×+¥”š2eŠ4hRJ©uëÖ)F£Ö®]«”Rê‡~PaaaÅêÉÍÍUaaajéÒ¥UÝ$!j”ê¶BÜ´aÃÕ¦MK¿Z¶l™ŠŽŽVÇW7¶,—’’¢ }N§Ó)¥LÛÉ   Bå6iÒD:uÊ-•åìèÄ[Ô[¶l¡C‡„……ðôÓOó /píÚ5öíÛWèR¼¼<öïßOFF¡¡¡üéO²¼×¤Iþ÷¿ÿñÙgŸ‘““ƒÑhäâÅ‹4jÔˆ2sæLÆŽË—_~É?üP(–Ë—/Ó»woÆGlllU7]ˆá»ï¾cÞ¼yäç瓟Ÿ——pû#Ùß}÷¥Œ¢G²Ÿ}öYN:…ŸŸׯ_çñǧG<úè£ölžÕ^uÚN ! ËÎÎÆÃæM›rýúu¦OŸ^¡rŽ?Îúõë¹÷Þ{Y¸p!-[¶Ä×××ÆÑŠª ‰¯(³¢÷)™Ÿ+¥hÚ´);wî,ö™ÿüç?%–•––Æ /¼ÀüAPPÉÉÉ–q€1cÆÐ§OÂÂÂðòò"**Êò^NN={ö¤_¿~¼øâ‹¶hš5ÞÆù׿þÅ–-[hÞ¼9Ë—/güøñ€é¶3'''ÜÜÜ =×ëõ¥–«Ñh,}½  €Ç___¦NZE-¢æª.ÛI!Dq={ödÞ¼y„††Ò¬Y3ºwïNzz:Pzß-éyûöí™={6cÆŒÁÕÕ•ùóçW}ðÂ&ä_Qf;w&99™ÔÔT¾ùæ®_¿Ž««+žžžÌž=Û²ìáÇÉÊÊ¢K—.:tˆ7`4ÉÊÊâÒ¥K¸¸¸Ð²eK”R|öÙg…ê %88˜ÄÄD^xáËë¹¹¹ôìÙ“‡zˆ×_½ê-D aë#Ù@¡#Ùz½ž'žx‚fÍšU¸l!j»ê°B”ÌÙÙ™ï¿ÿžC‡±eËÞyçvìØA@@€åj NÇÑ£G-Ï»víJrrr¡rfÏžMrr2Û·o—ƒN5ˆ$¾¢Ì¼¼¼øæ›oèׯÑÑÑ>|˜æÍ›ãââÂÊ•+Y¼x1QQQèt:žyæòóóiܸ1K–,áoûQQQÄÅÅñûï¿ÉOù„íÛ·³xñbbbbˆ‰‰áŸÿü§½¿ !ªž={Jhh(wß}7111–>U‘#Ù:t`Ò¤I–#Ù ,`É’%$%%Yúžìl QXuØN !ªŽõUP¢æÑ(%“ ŠêiôèÑ´jÕŠ¿ÿýïŽEˆ:aýúõŒ;¶ÄË1…Õl'…¢ì䌯¨vΜ9Cxx8»ví’{x…°#9’-DÍ ÛI!„(?9ã+„B!„¢V“3¾B!„B!j5I|…B!„BÔj’ø !„BQ cÆŒ!((­V[hꛢV®\Ixx8!!! 0€œœ;F)DÝ&‰¯B!„•ðØc±qãFJ]&77—#F°lÙ2<ˆ'N´c”BÔmÎŽÀQΟ?ÏÏ?ÿL`` îîîŽG»¸zõ*ǧG4oÞÜÑáXHuôE!ª[õÅ®]»Þv™U«VKHH#GŽäÁdòäÉÅ–•¾(ꢪÞ6ÖÙÄ÷çŸfذaŽC‡˜7oC‡utÒE]%}QˆêÁ}1-- Ëó€€ÒÓÓ1hµ…/”¾(겪êu6ñ L_lxxx‰Ë¼øâ‹L:ÕžaÕéºëb›í]÷þýû6l˜å÷_]”Ô«ò{©ª²¥Üª/»¶”[“úbUr亷,ªs|[ÅYÇgϾXžyÒËÛ?Üü!é9é(†®\%_ŸÏUýU®êoü]p•k†k¦ýèy³ŒúÎõ‰nMl«Xî ¸‹¶MÛ–9Þ’ÔÄmLm(¿hÙùú|Îæž%='ôÜtÎ_9Oîõ\ò òÈ»žGîõ\Óóëy7_+È-½‚"¿›™}fÝ2Ú&±Wu¬³‰¯››áááÄÆÆ–¸LãÆK}¯ªÕźëb›U·ù÷_]”Ô«ò{©ª²¥Üª/»¶•[úbUr亷,ªs|[Å•Ÿ=ú¢¿¿?«W¯¶êÞÙ÷*½Aïèpj ½A¯æîž«Bþ¢x9-R}±ý •}5ÛÑ¡Ù]Uÿî‹#'ª½^ÏÚµkÑjµ,^¼˜¤¤$æÌ™ÃÁƒùðÃQJq÷Ýw;:L!ªÔ¼yó¸víýúõcóæÍŒ1‚!C†°|ùrÞ~ûmòóó™1c†£Ã¢Ú3f AAAhµZ’““-¯oذøøxbbbˆˆˆ`Ê”)ŒRˆÒ 6 ¶nÝÊØ±céÒ¥ Ï>û,Û·o§yóæ¼þú뎱ΊðŠà»þßñëñ_™´i’£Ã©ñ”R,=°”¨/£xrÉ“„7ç·„ßØýÜnžëøÜ9:ÄZGßjjêÔ©hµZ†^èž^­VË_ÿúW:wî̹sç¡&U¹£ý—¿üƒÁÀĉqr*øà8à (…(™ºqióŸÿüg ½×¬Y3F˜Æ|Žqoོ~×ë¼µî-6ŸÜìèpj¬£YGy`îô[ÐV­Ø:b+KŸXÊ]wÉbUHîñ­¦>Œ^¯çÁ,ñý‡zˆ¤¤$;G%Dq=öãÆ£k×ÂS$&&2yòdzõêEVVaaaôîÝ›°°°2—}õêU€bŸY»v-&LàÊ•+„4ªÇ_ýõÞxã Î;ÇŒ3n»£ýâ‹/Ò¸qcËóÀÀ@>ÌK/½Äÿþ÷?êׯÏèÑ£éÕ«‹/ÆÉɉ´´4RRRˆeêŽüIb:ÓÛÓ™…€|âÆ™_kÒ‡DÕû1м IDAT›?>óçÏ/ôZvv¶ÝêWJÑ¿¦L™ÂO<Á±cǸçž{ˆ‹‹#<<¼ÄÏí‹`ɳFæ)ìÈ|ñFÒkÍ|¶w5–DøÐu¸û¤ùîõqv.`íÚµ|õÕWŒ1ÂrÙçÊ•+™7onnœKÛ}½õ:ÝÑ}±6 lȳqÏ2kç,Þ»ï=\]RµvùÚezý»;Òwð¿'ÿG÷àN’Ä·[¾|9}úô¡S§NÿÏÞy‡GQ­ü³%…B %!„¤©ADЉ¼ QD zEÅkö{-€W½‚ –ŸFP!RE½E °@( %„–²;óûcvvg[d²›óyž<ÉÎÌ9ç{Þ†Ùlf×®]ÄÄÄP½zuŠŠŠ8xð [·n¥];oa>~\ÍB”ÜöŽ;ºëׯK–,!66–=z••Å/¿ü‚ÉdbúôéŒ3³ÙŒÑh$y‡‘ä-VNõ†0Ÿ8×’À‚²Ã›`Ü´iS¹m^æää°wï^† @ll,]ºtaÍš5>Ç£·±(” ­èµã-ÄY} Œ°©Þ8†-þIHHuêÔaìØ±|ôÑGtíÚ•mÛ¶±nÝ:L&#|Ý÷òãIï±h<Ôá!Þÿó}~Þó3÷\ÞæTXN_:ÍíßÞNÆÉ –Þ¿”›¢oÒÛ¤J‹u®Àôëו+Wb±X8tè‹-bÏž=Ìš5‹´´44h@¿~ýyŽAE¡¸…ö•²páBÞyçÎ;Ç‚ hÑ¢k×®e̘1˜ÍfÂÃÃ?~<“&Mâ¶Ûnà Ô\…{pz–Ëí_[,(‹²/ìwñâ•üµè[DDµjÕbùòåœ^k­ßxƒúõëÎéÓ§iÖ¬;wîdæÌ™¬_¿žFuàÄ gf¨Ù 7-붤{ãîLß<]oS*,Ù²éõU/öŸÞϲË„èÕ!|+85¢°°ÿû߬]»–FѺukúôéÃ¥K—8zô(?üðƒÞf @Ù-´Ÿyæ Y3ÎÀš5k˜2e F£‘ÈÈHvïÞÍ{ï½Ç!CèÖ­]»v ù¡kÏ!sÀ[,7§ø!~þNJJ ÑÑÑdeeÑ·o_š7oŽÁ``öìÙ¼ð ´oßžž={òä“Orã7êm®  (a1+»èÍʇ§òác”Pæ›nr ‚š5k²wï^$I"))‰Û;JNƒ:Ð+T¢WOFwMZfÎÐÛ” DZsǸåË[8qþ+G®¤cCE£7"Ô¹‚ó×_!Ë2Ë—/ççŸfܸq 4ˆ³gÏòé§Ÿ’‘‘Á×_̓>¨·©‚JJJJ .äĉôíÛ—°°0þþûofÏžÍSO=E~~>EEE¥²Ðî| ´ÿÍijÏ<ч$‰ &РARSS9r$f³™:P¿~},'Nœÿ΀Æ”*ÏàZ`%n.„Œ²PůXL ü©S§z=Þ­[7Ö­[WÎÖ*ň^ðoÎÊWôï$ƒ   Ù±c±±±.Ÿ*I»vlã–¦åôk®˜!­‡ðøâÇùb˼Ñë ½Í©0>{˜Þ_÷æRÑ%V=¸Šæušëm’!|+<ÁÁÁÌž=›¯¾úŠxÀqnÀ€ 6Œ… RTTDPP^f *1å¹Ð64¯_·Ñ{ÌnòòïoBBÛ·oçþûïçÞ{ïå£>"<<›ÍÆÌ™3I;–š²ÌËù@D©x©æƒâW:çž,O|ˆ^ NÑ»Ü)z§¡D uïÞÜÜ\Þ|óMn½õVªV­êxëÌ™3ÙÀÂÌ1åô«®˜ªAU¹¯Í}|±ù ^íù*f£9rèùeOddV=¸Š¸Zqz›$°#B+8½zõÂl6Å}÷ÝçrÎ`0ð /pþüyV¬X¡AymúÂælD…)‡¶lÙÂÿû_6lÈŒ3•hM&£Gfô˜1üh6óʺku>de „;kó~óæâ5?M >(Fôª!ÎjõæLEôf[µIݱcÇøøãÙ±c:t`Ò¤I|ûí·$''3fÌÄCwß5€ÑGsôÜQï[¬·)ºc“lÜ7÷>.]`ňBôV0„ð­àÔ¬Y“øøx¢¢¢0™Lç›4iˆrü‚JBX „ÅÐè&X?ŒF#o¾ù&üñôõ0xð`N[­lAñ2dÚ¿gåã¿vO„"~§!į@ \/¢WE›×«ŠÞ çówŽÁ@=¢m÷îÝäææòçŸÒ¦Mžyæ†΢E‹0 Ì™¨Dû‡&¿WÎQ9Ž ;Ò¡A¾ØüÅå/pÞ\õ&i™i|7ø;bÂÝ[( ôÆo…ïã?Nll,F£‘mÛ¶9ޝ^½šÎ;Ó¡Câããyï½÷t´²tHNNfëÖ­œ>}ÚãœÚä=>>¾¼ÍtÀ¾à ‹!²ÜyƒÄ‘#GÈÌÌô¹ù£Wƒ¯ÔuXŠ÷×!~UïožïâW`@ PH÷þ³{1+ûÆ¢VôîË2“&MÂh4Æ?þñ~ùå^~ùe,X@ÿþý9{ö,qõ$‚›áEô *C[eÉþ%X ô6E7–ì_ÂÄ•y½×ëÜw«Þæ¼à·ÂwèСüñÇÄĸ¤¤ðÊ+¯°yófÖ¬YÃûï¿Ïž={t²²t5jƒ‡~˜‚çåàÁƒ<÷ÜsôìÙ“Ö­[ëh¡@ q0÷3ßÝJAAsçÎåèÑ£.—H’ħŸ|B#“‰no÷¿i(‹´ØÛ¹‹_X T.Ó¶È‹èµ+ìïHJJ¢uëÖœ;w³ÙÌ[o½Eûöí¹ýöÛùí·ß0`×/ø½íT,’š%q¡èk_yÛÂ@ +/‹ûæÞGßf}y±Ç‹z›#ðßf wïÞÝëñ¨¨(Μ9À¹sç ¡víÚ×p§ã×ðÞkA]\o¥^½t¾û®=ÆÍ!:úwú÷¿ƒ³gsY°`Qµe¾¼/&)íØ¯ùˆ¦(F Ð^„U.èm@bÿÛ °ðÞxx®7´×J¯=x÷ý÷éÕ«û÷ïçÍ7ßdõêÕ$Ûß)9€ ¸ˆ2DÒ€Ì|è“Q ©øl¸ 6×¢W *? ‚Ê‹»·×­˜U1¢w)NËþýûÙ¶m]ºtaÆ H’(õlV+‡>ï5;EïÞŠH»úíhP½‹÷-¦wlo½Í)WdYf삱ƒøfÐ7 ~ëW xüVøúâÓO?¥wïÞ¼ôÒKäää0mÚ4êÕ«çóúñãÇ;Šá¨$''“œœìãzÀ A°}{>ùäk×ü¡²Ì»Ù•áÕ€ó—ùˆ< „‰I¢2‘ššJjjªË1ÿÏwû¶×Œ¨ ¬dcÄb ƒvœ®i6s7Рج6›9iµj2ÑÌfãNœ ³>jÕgP6‘^jÅgw,Æ•@ ¨,87å=Pk%#zAYx†Ú=¼·Ür ëÖ­Ãjµò¿ÿýßÿyóæ±$uB„8ûƒ¤fI,Ú·ˆÿ$þGosÊ•o¶}ý ùeØ/Ô­ZWosÅPÂW–eÌ{ï½Ç°aÃ8pà={ö$!!V­¼—œ{÷îe᯿rWœ[¯SžÉ"ÄÙ¿HjšÄ—[¾äHÞ…5ÒÛœráè¹£<±ø îks[ ÔÛÁe(ᛓ“ÃÞ½{6l±±±téÒ…5kÖø¾þÈæý ¹ý®lrNKÜØ¹çÏŸgFÚn:50±¨Ÿºê‚=×Å{{í§ˆÅºÀ¹Ì¢§)´mí«­Õù šL`T ZùôôŠçmE$±i"Fƒ‘ßöýÆCÒÛœ2G–eùõBL!LIš¢·9‚Aè²Ý[A­ZµX¾|9'Ožä¯¿þ¢M›6zšw•¸ïn*¯/^lGÿþ§hÛŽòçÚõlÛ¾‹5kÖ`) cįFe¦QWðÚœ_mŽ@à·hóÔ• ÏŽ\ö8\rÛ{„Âià¼ÍÆóÏ?ã½*ÆÝCÃõÙ‚s¨XPliØûýªE¯\zýªˆ¶G ÐñÞl?®ª[»Ò½œèU n“$>þŽ˜¬L¼‚š£<ÏÃÜ[ÁooE§v•ÚÜu#‹÷WŽ~¾?îú‘_2~áÓþŸR§j½Í”¿¾)))DGG“••Eß¾}iÞ¼9ƒÙ³gó /о}{zöìÉ“O>É7Þ¨·¹¥Æ¬YY?^Djê,7nì8ÞµkW>˜4……'$Våk*Õª½[š×G À/(f—_+~¯£íÅQ5ò »2™LDFFqç>Ñ~`ÎBÏâw‹ÚëWEˆ_@¨x½šg·uÆêü’‰^-a@c ¸ Ês[ý!Î~IR³$–î_ŠU²êmJ™"Ë2o®z“¤fI n5øòoTü6ÔyêÔ©^wëÖuëÖ•³5åÇ_¦mÛxš6m @VVwß}7ÇŽ£];ebX\‡’«¥õúÆ`wV'²vˆMâö7†3¢AuØóÛÛaÉ’¥Ü}·ëä”ÍÖmÛ¨j­Í ÐþìRñ9Àí§cíWhó~Ř€/Ñ‹3ÄY­à¼\½ê>{ID¯v¯2*·š$ZÜE¯x¾Vd’š%ñêŠWYwdÝ{ïÀ,;°ŒíÙÛ™Ôw’Þ¦®¿¾••ÐP¹¹g‘$‰V­Z‘™™‰Õ^¥öСC˜L&þÏfcÊ¥†<7E™â¼Uw u?âEüÆÙc1(ó@ëLèdâ©ñOѾ};Ǧх 5j ²$9„¯;ÚÅ[\ôpÉPůê•ÐæýŠvG ÐPEï\§§×MôªE/‡6+%œ–Mq s¢×ßèÙ‰ºUë²xß‾“ÖM¢mý¶•®u“¿ã·¡Î•“ ŠÄb9B||<{÷î¥AƒT¯^ÝqEHH‡F¡LBYù¸ôÔSÜXÅ„. ~…|_pùþµÑ†áøqZ4çöÛœ<œ† ±xÑbjJR±B5Â9M #ìÙ‚sìhÇ•[ÕS@ ð+|³"Ý«§7+½àôöºœp9à.r…èõŒ#·5½EûémJ™±çä~Ýû+OvyÒ£vˆ b#„¯_àÜñìÑ£‰‰JÙÿ°°0rrr7nþù'óçϧ{÷îH’ÄÜrÕg öÐbzñ ~E1Å®ì^߯M`›ÉÊc’đߖ°âÇÙÔ<ž’Dh î êÜ4|ˆ_GÑ+QøJ *éÊóNóüó–Ó+ùÀàpP³=U]ÛTó©aÎ^Cž…èõ'’š&±éØ&Nœ?¡·)e”¿¦P¿Z}’¯O¾üÅ‚ …u®Ð$àš»ƒ¡>z”¥KOpöìY~úé'îºë.Ç;úõëÇ AƒX¸p!’ÕꨮاØÖ,ZDسÀñöŒÅŃPÃOíe™L›eöKÝ»~ùb)šõ˜ÚëWÅô²Øï«µÉ=üYŒ-@PÑñѯ·„¢7×`à’,Ó¼ùu4oތի֓—ç»j4³Ï0gÀõY)ž›þÆmMo`Éþ%Üßî~­)]N]<ÅW[¾â…î/bÑÛÁ"<¾~ÈùóJ5ç-Zpçwºœ3<ÿüóX­V¶âìj”‰Û —Ö,Âë+Ü<¿n^_uAåÍãàî`K(žŠ< Ð~<¥â³‡ç×ÑîÈ=ôÙW¸ @ ø%½ç€"“‰¹s¿gÏž­ÌŸ?—cÇ’òðöḊÞ(5äFûvÉïõ/Ñ»wï^ºvíJ‹-èܹ3»víòzÝĉ‰§C‡ÜtÓMlذ¡œ--[êW¯OBÄ€lk4-}’,ñp§‡õ6EpáëW(!ÏC†Äc0ˆŽŽöš[ ¶9Ò’÷X¨«Xˆ_A@¡¿a¥k_T©‹¬âÄopÚlâ P§q#‚j…sÅ‹!ãCüº´;R+`¥»}âW Tt´Ï«âEï2\E¯ ˜L<öØ# t§c}R¥J>þx‘‘ 9‚[Ç"ð¬ËàǤ¤¤ððÓ‘‘ÁsÏ=ÇÈ‘#=®Y¿~=3gÎdãÆlÞ¼™qãÆ1nܸò7¶ŒIj–Äoû~Ã&Ùô6¥Ô°I6>KÿŒûÚÞGDµ½Í\BøVxÜw;ÛLHˆÌš5k8wîœãÌ©S§˜;w.o½õUq¦õ‚üD¯âW,ÌþŒFüj½¾öŸµ…UÀUüÆgM&®kÑœíÛÿÂbÙMvö¾ývÖ  ÎÚ¯ó¿„ø~Žûs©xÑëž"bŠl6 èçñÉ&“‰w 7(Èñ Ž ÅóAì¿þåé¥=^zz:Ç`ðàÁ>|˜ÌLשºuëpþüyΜ9Ctttù[$5KâÔ¥S¤ œù.-3Cg‘’¢·)‚«Däøú)Û·7 yó<üðÃL›6—_~™O?ý”‚‚ G€XY”uy ö‰Ê=? n®&?Q4Šø;öüÚ°t¥Å‘G2oT¨ÒãZízdAYsír€"Iâ—ù³ˆm€ÙlæÞ{‡räH/¼ð*6IƄۢ/_iwä’G¯æ{Íû9¿ "á^˜/]Iݰ </#zÔø³ìì¯wÈ>q‚`Iܼ½ê—G~¯=>LÆ 1Ÿ’Á` qãÆ:tˆ¸8§;;..ާŸ~š&MšP§NBBBXµj•^f—]u¡fHMï[Lç¨Îz›S*|¾ésÚÔkà ‘7èmŠà*_¿¤Íšuåû™2ߟJ:uøè£xé¥Éʲ}”I“> 78˜½û5ïT#œ]Ú©ž_—œÄÀÙ¡TVÚc•ç èƒÃëÛÇ~•Öáp¸á†ŽÑ«%9y’$S¤9¦õü:*¨k=¿™Øó~Aäü ‚ЉO¯Ú«w)¦¬Ôç¯b€& ÔdbÊ”±Z­.çöíÛÏüù¿Ò×fsæööBy'âLü Œ3j'0Y·nS¦L!33“Çóä“OrÏ=÷ø¼~üøñÜqÇ._©©©åhñÕa6šIlš0m²/d3/c£;Ž-ŒJ‰ÔÔT¿íñãÇ—é=…Ç×/ÐVwv2tÔ?"ÓëåÞÿ=þõ/çËOB£F‘,Y²œO?‰Íf#\’Š¿îÄþ,ÆŸ@ (/®Lôä£TpþÏ^sˆ^€àà`>ùäßÌž=Ÿœü|†àÖ¾(Æí@X "zš7oΟþéq|âĉ.¯_~ùe^~ùåò2KW’š%ñõÖ¯‘d £Á?M?ßô9Mk5¥g“žz›"¸Füó/°Rã:)tj=¢L<2öaþúk½ãøÎ;Iv!&!öcêäµßíµã…¶ –#S[G ðWÔqãöl÷:ôuÔ½¢*ÐÚf£.PC’"dLF®oÓŠôôß;öúõëÃäÉo1þÿqI’P3€Õ¡äö¬½ÊDÙ`Ò†?»„@‹°g@P֨ϷœÞˆ^µBïÞÝ=Î……Õ sçŽ.…­Ôè—^ØEïXü9¼Ypyú6íˉ 'Ø™½SoS®ŠÜü\~Üù#£:Œò[á.p"<¾~‰¦U ~H´qû¬StéÒ–×]‡98ˆ;wl4RÓ’©¢õü:Âó5mXÔpçö¸!Z¯ü5bÂÍók§Çr ßö ÎEŸÈ·I¼øâ“i}ûö¦S§öìܸ…*nïS‰Ó¶;ZŠsñçr‘Å‹÷WŒ9@PÚx½S)±èg뢃S¿~=—s’$qð Å±Àt©âœH1¢W<ï‘݈Žn Mý6z›sŤnO¥ÐVÈÈö#õ6EP ˆ­ 'VƒlLîÝË¥»0ÉrL&΢ä/‚s2Ӟł—YνȕðB çW³óh'iGÝ>ºîº8¼ÑªUs0™\Ži»…¥¡)&§ØÓû«Ž?áùåÂÕ‹^€j(uDÞyg2’Ûû¬Yó8t(‹âìQÈJˆÞ@¥zpuZÖmIú1ÿœÏ¦ožNÿæý‰¬©·)‚R@ßÁl€$à^à¢Ñˆ-(ˆ‘£Fðå—Ÿóô3OT³&¹&“‡øÍÄËgAÓ{„øÚÅ•½x›f1¦­ô¬uÈšƒÁÀêÕë<>Ñf³±bÅ`³yœEüZpöú]¯9°×ðg!~A™’εŠ^PÂMV+óæ-&1ñüôÓ¯¬\ù'O>ùÇ?B¨ÁÀ­x qŽA“×+¨,$D&°ñèF½Í¸b6ÛĦc›ÓqŒÞ¦J ê4ÅŸ¹ ÈV,[L÷î]—<üð:ÞĹӧ ·Sèɉ§–ºà¶‡V;vgEسÀŸÑ‰¥„÷šë8«VzVYŠ"|Ce™7^Ÿ¤¤Þ4o®ÈbY–yë­I>|”:ÀE”  dÿYnv  }ö†{¥ÎÕ‹^ ¸„’öaDy¾ÕΫVýɲe«0™L„ÚlŒC ¤éáâ,¼½•’N ;ñãÎ)²d ÒÛœ3có "kD’Ô,IoS¥„¾ÆŸf3ú%¹ˆ^€˜˜Æ<þÄ£¼>ñ-dI€2Á5E“ç«zœ<ò|U¡+į PЊ߄‰ß0 7÷,×·îΠÁýiܸ¿þº”Ý»ÿ¦*g2a•$Z¶ˆåLnÇŸ¤ŠÑ@¸$;Æ›îâ×¥ç˜Å.€ÝÇŸwàJшÞ+¨Þ J!«³&#’$Ó$6ŠììÓdŸ¿H5  Ym䣴8jn³Ñ¥'ºï*ÎZÄó¬2™@­€9;ißÀ£ˆL…äbÑE¾Ýö-ã:Ãlr)P¡ÎF®Á@ÛvÞ‹´iÓ›$¡ÍÆÑæ ®V«Ïª·¨!—h¾kÞxüñljÅh4²mÛ6—s¯½ö-Z´ mÛ¶ôîÝ[' }¡­ôœ ô’T=}œaÏê!PËf£ŠÕÊü¹¿òñ”iܳ—Z@‘ÉD»­Ø·o »v/$+k³gOAâ¬æŽ™8˜ê—KÞ¯u¡ŽAuæÍ¦!BŸ† Ó IDAT—ÃÇ£ ì¸zÑkrFnéu#™ÒØ¿?œœµ|øáó\4À”gc5 -Ðå™ÙåJ”¨Cï&à|ö Ñ[Yhß =Fƒ‘ô£þ3ÍÞ5›³gÕa”Þ¦J±…(ÄPG’X¯ik¤eÆtÌ&F·\Ä¥öï™ùöê¶,vϯê!•À•¡C‡òÜsÏѽ»k[‹)S¦°cÇvî܉Ùl&;;[' KJÉ<¿Õ¬VDZó€„̼yŸY«ÕJ—.÷ž¾SéŒ]ÁGq95✥×݉³@Ø4”J¨v{7g< J‡k½Ù@Xõ*üôÓÇT¯^ €ÐО|r${ödòås¨fµÑèÓ±ë‘×ëÕÛ+¨,¨®6ÛÈC<¤·9%bú¦éÜ{+qµ¼µø'Bø=l6¾XºŒ 2`@?Çñ]»vóñÇÿ#Äfs´!Ðâ’ƒX¬ø×gAeÇ}­òþûï³|ùrÌfå1S¯^=¯×é‹¶ÅÑVJ*~µ]»vpˆÞ¶H’DíÚ5iÓ¦ÿmáØ±“œ1¨%É.â×…|”ÐçPûkÕ%¬.ÕðçöBü |ãßãQPºØEï–+ïÓ[œ61ŒÜyg‡èÕ2lX¦M›EC\EoP\Cœ=ë‡ÊH§ÈN~ãñÝ{j/«­&õîT½M”2Bø]Q&´;îøö§GnlÛ¶ÔÔ¬6‚€s@U”ð$-. Oñ ÎŶ𠼓——lj'øù矙={6ÿú׿:t¨Î–ÇÕ‰_pþüEZ·€$IŒu[·f°re:uë†V¼¼ œ1¨'Éñ\p:½Å àDPÆ¢¿‚’s5ãqüøñ„‡‡»KNN&99¹Lm”Å‹Þé—y÷II¦uë ½^“Ÿ_ÀMx½Úg‡·Wÿ0çÔÔTRS]ÅLnn®.¶T6&ðýŽï)´l ÖÛœb™µsÕƒ«sg‹;õ6EPÊá`˜€›e™_€% óë‚… ¬6Õ«W£  €K²Ì›D¸,êöþ’‹_»¶_X­V¬V+ùùù¬[·‹ÅB×®]iÙ²%mÛ¶õù>}ÛÚBWšc%¿¡ÀæÍ»IOßÁß$22‚M›vsòäÒÒþKïÞ°ÙlÌž½œQ£Þ$7¿Ú² ¸Ž75PÕ¸™jåg­7ñ+råü½ÛW3'OžLÇŽËÍFAiâ[ôªÑÎÅ!&³‰¤¤ntéÒ–·ÞšÎ‰'©_¿®ãY–ùüóYD˜M$Xmž¢W q®`x›O6mÚDB‚x†–5";Qh+dgöN:4ì ·9Å2k×,6H• *z›"(e„ð @Œ(…&ªY­œ60#BPPçÏ_”Æó¹’D„$]¥çWLßÔ®]›êÕ«3|øpbbbèÖ­6l(Vøê¿ØV½¾ ˆßtèåÌÆu¿ûí_¡&ýnKp°™¶m¯cñâ?ùã©të¦l™Íf† Käܹ‹ŒûVœ_íx³ ¬µi¾.ØÞ¶Li2ì¾%ÆdEEïÅöÕŽG?rm¢×ä¡ô-ïØ±cÇæ¿ÿM%1qS¦Là–[:säÈqÞyg?ý”Æà6ìÏ'­èU`.Þ^AeF-pµñèÆ -|÷œÜöÛ˜xËD½M”¢ªsSäK2…Øl6zö¼‰Y³¦ñÝwŸrË-7!I§|¼W­>ë»Ú³¨0+ðD¶{2AYì/Z´€Ó§O³~ýzÚµ«¨QÚE™ÖƱʢ-¯Õž›¢„:×´Ù8w:›M&#ÃB“& éÚÕSPÜw__@i¢%exíG¿jg±4Í÷Õùöiö ]*¯‹wüw< ®Žk½EÀ“‘"³ Y†wQ›e˦!˽{ (èz7îÅ´i?ܯý­Øõqgÿ^!‚+#UƒªOú±Š=Wý¸óGªW½{!|ýûä¡é§.ÈÕù¦¥™<ÀóÏ?ÆO?}Á!INÄ’%?0jT2²ÉèÒÞHËåÅoÅ~x ʇ””¢££ÉÊÊ¢oß¾4oÞ€wÞy‡Å‹Ó¦MzöìÉóÏ?O§Nt¶¶8|‰ßçBÎîɈ õÖêHÂf³qà@6›÷Q%IÊqoæÀÙÍÈ]«çVçÛÛ¥á:óæ"įi< ® Mõf ŽÍ±Õù¾ Xi‘Pzõ6iÚŒŒØlV-ZÍÒ¥k‰oʶm?²rå ^ye,Uª„`³Iܤý5¬¹©ý»½/$4L`ãÑz›Q,³vÍâÎwjvO"ÔÙß ‹Q*½62•–(}ò•S§€³’ààž~œËÛ ¯½ö_|‘J>J±+od¢|t¸†=Çqs•þøãÄÆÆb4Ù¶m›Ë¹×^{-Zжm[z÷î­“…å}Q½¾‰@/çË;êÕ«CÍš…Ê¥K—øþûŸùþûyaóø\WÔ Sõ89â2—#§žšB¨¬ôþÍ68œ4É—È ÕC£Ž=‹Ûq‡÷wNïï 4i_”Î?…@ ¨à¨¢wš2þU¥kñÑ3Ü ç«QÙ~ëÝ[yæýç?£=: ›MbΜ4{ì]¦NÍÅ‹ùTµÚh‚[§"m˜sÑ+ðFBÃФ"vdïÐÛ¯ü¸óGÂB¸­émz›"(#üÖã;tèPž{î9ž…S¦LaÇŽìܹ³ÙLvv¶N– €Åf¤†<Û ðÔ‘eŽ9†År„˜˜FüôÓBF~ŠÓ§s ¯AQQ²ÉˆÙ&Q\í:íÄ—¡ùqÐKõünExš·JÏvT•»ÈTÆCý™ˆ"V÷ÚlœÉ=Çw>C•Ð`¬6‰¢"+¡€Íl¤FXžy,‘øøHÖ®ÝÇÔÏ–“[d#Ü&9v#½y~ÕÂWh®é“¡DzÐK=ªV|1‚@F#zó,ÊC¾)­õö‡ ˜ô¹µ ¿ý¶•ÌÌã´lÁ`à³Ïçõ×à§ŸÖðøãŸB¡†¸F¨¸ˆ_µ’s˜º ¢WàJ»í0Œl:¶‰„ÈŠ÷w!œ¿õøvïÞ¨¨(ãï¿ÿ>ï¾û.f³¢éëÕ«WÞ¦•?ª' ú+W®eȱôêÕ™}û–“³–¯¾z—›{Þ@®Á€÷N}N´w<ò óæâ,²#꤬.Ü4^_·bWq8=¿M뀺6‰º@P~!UЬÔCyàÖ«Âæ-¯óÚkw1thg&Mº—ÕLÀ \t³À›çWëýu)|µ˜Š[:1‚ÀÄMôª!ΙNÑ[d Ð*1lXwj×®ÎÛoïR­^½p¬V‰ÂB5ñQŸ@-,o¯½OªU¥i­¦ì:¹KoS<Ø™½“]9»ÚÚwsÿã·_oäååqâÄ ~þùgfÏž À¿þõ/†õýG¬OßÐ2BÝdMÄ‘ï;$ÎÙlL\´Œß_M‹±|÷Ýû4nÜ›S§Î`µ*ÎF£S24ôñÑª× œ‹í>‡³T¤#Ç„§Iôîxñü†Å8ó}ÕÜz»ç×Ý#lÿY Œžy,‘èè:®wIhÂà»øen:X] ci=¿ê-½†.ªm¦Ú/-<¿A`âEôÚw²2œ›b%¿Àd4`±äðÁ#xðÁOÈÉ9KJJ?ªW¯Â¬Y«˜>}U û{â|}˜ã„½ßÄGij+§â ß/ ZP5ãõ6EP†”ðµZ­X­VòóóY·n‹…®]»Ò²eKŸ½ õïzµ¸M(a¸ß±Ç^FY`T>ÄH£ ‹1â.jÔH °°ˆ:ujrêÔYd08&Ë>Å/8Ã-A™T£ÔbWñk0±Ø®èÝ;4ðPÿÝ4BX /^ê¿î¨‹O°I2ññ‘^?ýúëñó\ïáÕÚ¾¾Ú"5ª¶h®é£MEH´Àb< ƒ¦}™VôªÑWn¨ž}aB$™O>^Ķí2{öÓLœø#ƒ½€Ùl"X†šnïS¼Q¡ö¼†9 žÄGÄóͶoô6ÖtkÜ­BÝ”~êìÚµkS½zu†@LL ݺucÆ :[¦Mqô[‰ …[32 ®¤°°ˆ`¢£ðý÷o³eËw|òÉsÔ¯_“ÙäµÇ(¸Nžên²#ÄÒ%ìY„Y  Õ{¡y­M/P ËÙóë{„:j_©™€²À 2Y»vŸ×»,Z´ ›MâŒÙÈ“óx¼rÿÚ¯ùZ†s(º¤"ÌãQ  н™%Ïëu§pöÌ:vx†²y÷Ý{yâ‰þT¯ŠQ’¨…ïl€kÑ?ç¥@àJ|D«£uef‚q÷úªJ5È€ŽÀªU1›MÄÄ4à?¦S­šRÒª]»æÜ~{WZ¶üg¬6sG";ùöÖ*iš‹bD˜¥ Ðz/ì^YmÈ38®Eù1eœ¨ÃЄØ$¦~¶œáû’ÐÄñÖGýšµk÷Yâ8vì< ¤·É˜|Xå¾ÀÕ¶-qñüb^ìEèÄxüMË"o¢7Ã3ÍÂâöÚ& Ü&‘{<—çžýI–1 „H2µqõĽQöÕ{´°ÿ`ï(AØ`”ç‹ðö |Óªn+öœÜCç¨Î:[£°ùØfΞ§g“ž—¿Xà×ø­Ç7%%…èèh²²²èÛ·/Í›7àwÞañâÅ´iÓ†ž={òüóÏÓ©S'­-+Ü~v+¾£q7E…B²$#Ë26›Ä£uˆ^•&M"¹çžDŒfÏevqíU2Qvš]€Ýó›Žhu$ ´ykö±ç^X¹nõæ¨ÈE6ºÜø:Æ}ÊoÌ£G·øôÓeüóŸí8th4S§öá—_îbÇŽ«ʹb]-ždÓñU„nÂó+ø#Ñ« ùpS¸™n‡ÔK.‡¥y=Y¦>PO’ Gˆ^AéÓ²nK€ •ç»Ò²’*æ*tŠ T½ Pñ[ïÔ©S½¯]»6óæÍ+gkô¦ʤŠøEñD©É=q€O6Y¦Q#ïÕ®££ëc0x_iûj¯¢ž‹²h.p„=¥ãÚÏO ðgÜÿ†Óñc_fªM”bSö«Ô!‘‰âY¹Ì›³‘ŸælD²IÔ áƒnÆdr.3[¶¬ÍëotåŸÿüàÓëë Uüfc=ÚM°¡ûä >Q èGºóK«jíŠVâìKôÊ€{1+|‡.ûò†Ñ+(-ªW£Ix“ '|»Fw%Ø|ù‹~ßz|*î-Wì„Å8½¾àP¨O£«øí·u^?í×_×`²Ù|ÞÍ›çW=–•¯y¡ÎÀ¯¯}·Z ð{Ü=¿ %òúª¯(žßÚV‰ºV “ 7÷lDh¨ç>ä­·F#ËÊ‚õJÉDÉû†¯öc^ŧ ‚òC¼öí<»¤uóö'zeàpÊ 9@6pÚìÙ:­8./z?Aˆ^Á•Ïî“»õ6›dc•e=cD˜se@߀Â- SEÓ{ ?`°Ú˜1cóæ­t—$‰wޙɖ-T•dŠÃW±+À©„÷£ ¿R¯¿‚@Á­]‡ºÑ.éš—.âW‹Ø¿/×¥VÊÁƒyŽk®­ø]íSüŠ1)T<ÜçM·W#zÕ4#_žÞ³Ày<øP]–/¿Ž… ›rû€šäJ`…*zÇRœè®ŒVu[UïÖ[É+Èã–&·èmŠ ðÛPgm¯QM±+·pç( dæÃ³À‡’Ä]w=E»v͹þú¦¬^½™C‡ŽS °¡ì›€P¼/ºÝs†Ô0Î(õ¤¶ºO{ð\\‹Ýa¿ãVðÊžR8V¡Úa`A¿Ú°g€*ÀާX¸ðýû;e±Õ*ñöÛë 50[‹ßŒ*—±š=´¯{͵¼rÿ}~x½y׫Lç7_¢·ų;er#ܙޔ”ÆÃæ‹'©b+>¼y4ŠÖ¢WPŠÄGÄóáÚ¹Xt‘ªAUuµeåÁ•„šC+L¡-AÙ"<¾‰ÝåîŒ2‘] ‘•joý›¹ßÿFŽ]ô^2¸`6R%¢:g pÊd$ßÛ-ì¸G6»¹e6v„;ƒ{ϯ»××-ÜY=åîù ªaРù<ûìjV®<¬YsóͳX¹òU­rñ­DJ€êùMÃîù›ç×Þ"E èŒÑ« µòâíÕžRÉÂjII©ërƒÁÀ‹/ÖÇjã}¡Š½‚²$>"™Œ“z›ÂJËJº4ê"ú÷V„ð ܽ5öŸ¶¿^Œó¬Å›[ ¨e“E {7®Ç޽Á‰ì·Ø·ïenKjI®Ñ@Q1wÖF5g‚k¸³G®/¸Š_±Øø;šôGQ7å»{¸³7ñkÂ%)’˜ôa:·Üò#÷Üó+›×§¶¬ŒÓÒÀEüæ#į@Páð!zÁ9¯j:'h½½Þ Yõâ¹Ô‹ŽÆ`pí®’ˆ½WËÞ½{éÚµ+-Z´ sçÎìÚå=œ÷СC 8–-[Òºuk>þøãr¶T_Ô–FzçùJ²$ò{+"Ô9 Ð†<_—LFúôjÆäɃUãâê2gÎCÄÆNäì±<Â}¼7e!¯F8gåkBžÕòÏ „^‡¹¿»®•ŸDõú¢TxV•m&Äi6´‹ {jØd¬(;’&›gx³%tÑfr­P’?È]žó¡Ç ÍAö,èH1¢WÛ¾Þ^m÷@õûࢠŠì5*÷í+àðáB¢£]«Õ.[vY† 7+T}ë]ô¾…K:•Àƒ””~øaxàæÌ™ÃÈ‘#Y¿~½Ë5²,3hÐ ^|ñEî¾ûn²³³õ0W7j†Ö$²F¤îy¾ÛOlçLþ!|+Âãp\ù‚Uòm#FtöhebæÞ{‚Šo¦²e1Ÿ†=ä9ÃþÃRœ[ÒÏ¯Š¦Z¥@à×$àhçÑ>FY$6ú(‹G¸X ( Qo£­8m¹*4Œ„|›²ÈÍF)`SR<<¿Ë©(`áùtćèÕºt—»Š^ Ê4 pÈzÜó§ÃŠï¡J(ŒmáÂg·†cÇŠxlÜaBM®Â·xÑ;î²³³IOOgøðá <˜Ã‡“™éZå÷ß'44Ô!zêÕóÞb2‰ˆ×]ø®´¬$ØL—F]tµCP~o@¢z~ìý:-—¹^AòQÍY’dd._\g)Ê™†2_’aïgŠý(+ÿ<Õó«N šÄߢùûmÚqôÉPÆxz}/‡ ä™ U3Øñ7d‚Ð`¨Y²O+^à 2D–ÐRÏïrÍ뇄çW (_|Ô¾Ð*[7Ñ›†«è=˜Lpk7X8Œv·ÆÏSáŽ1爌ÜÎw†sé’Ä/¿œI¦¦ÍÙÏ÷ò¢Wô齇¦aÆíÿøƒÆsèÐ!ââœÛž»ví"""‚ääd222hÒ¤ |ð±±±^?wüøñ„‡»ÆÜ%''“œœ\v¿L9Ï’ýKtµa푵tŠìD• *ºÚQYIMM%55ÕåXnnn™ÞS߀%‡ Œ)öBŒ@¨ÉÀÌ™qÿý7¸x}/]*äÛo7b*ò– äÉR\½[}ò!J]T'Úmq<ÿÕI>AóZL¬¦xñ«†=»WE¿@¡ 2€,Ãð~ö?ÕBáB>˜ŒpB‚ú%üÌbÅo¯¹vûAŒI ,q®Ð³Òæõ#z P„®ÕϦ8E/@bصn¼Kâ‡ÔÓ˜d±AUœ‘%%½‚ÒÂjµ²lÙ2þúë/ZµjÅÔ©S:t(6lðzýäɓ騱c9[Yö´ªÛŠOÖB¡­`SðåßPl9¾…[coÕåÞï8›6m"!¡ìÖ"Ô¹²Ð´øÓUm2+Vì#%åŽU'wí:Îw|Ω“¨v·RC)Õ :K §T éx„<ƒÓë+B,þްç8èêµÖÜe±FH6èuÌþÚ4íÓáü¯pà[ÖKiEV\vw2鸅=«ãt‹{Ê–bzÜ«¢×>³ò•qê.zAIu°Ù÷¦£zÞ%6º&(5jÙ W#zÅØåˆŽŽæØ±cH’òŸ!Ë2‡¢qãÆ.×ÅÄÄСCZµR < >œM›6a³Ù<>3‰ˆÇ&ÛØ{j¯.÷¿Xt‘¿OýMûí/± `ßÊDà£r|(PøbÆ:fL_GõêÁä+ Èd$\’= `\­7) 7ϯË[HåVD±+A`àÛóÛc¹ÒO[‹¶¯¯7Œ€$+ÂW–!¢&üò¦î|ô$|2Voƒ3œ“@–”þÀ%eºúƒ»ç—¹Ð>¥Š«“AéámCIãíÕÔÈPE¯{N¯Š*—LFX²®s‹˜½x –¯õ\ð OoéR¯^=:vìÈ7ß|È#˜3gÑÑÑ.aηß~;Ï>û,G%22’… ÉT|-•@#>"€]9»h]¯u¹ßGö$Y¢]}Q°­2!„¯ÀA5 Š$“ØÎP µI.=D%”IÖˆ÷l6$¥zäi”Iµ¸<`u×ZÅ!~…ø2nâ×þwßc9.—ÛˆŠŽÃè÷•c£=¯3¡K üºýê¬Õz~û,²U@ˆ_àjñ%zQD¯ZøÑ^Áyu¾÷ðæóèkzCˆÝÕ{s$Ö‡ž+”×[”g@‘UYä©b…èT4âÂãøõï_Ëý¾’,±íÄ66Xî÷è‹îÂ÷È‘# ¢¢¢.±à ÑLZZoŠ·©}79‘âÅoâb Åu8P s–µÂ`õ&Ø’§€:rñâ·ûôÑöù„øÕ1Ëø}È9¯Füž“aÕ6åõŽãТžë5² [Žâ’Ÿ¥¸ŒU!~Ë1 …¬ò溳҈^µÈºŠÈ—á¹–NÑ«rs=è^6ž‚0 ”è’÷éuŸ[+ç\»víZÒÒÒ0Üzë­téÒEo“š¸Zqä\Ìá\Á9j„Ô¸üJ‰gp®ðœðøVBtkg´uëVZµjE›6mhÓ¦ ñññlÝê%çEPz„Ù[«Ø'»¡Êܧò…Á;ÁÀ!`2Á¼Iy>úvìS®‘û÷Ë¡vKñÞBÅ¢,€bwÈ¥†‹å‰½ÕQØ`x±ØM›ëb¨Ô“!Ø—Â9·¼ý¯6ÂþSÞóõ¯íXÍZLÅ9N™†ÒîHPšˆñȸµíË›«Œ'ÍèKô‚RÈ ÖGÁ¦5”i3Êו‰^­¨œ¢÷ñ r IDAT믿fذaœ>}šœœ† Æ| ·YM\-eÆ;{ \ï»õ„2E+£Ê‡n߇zˆ×_!C†0{ölFí³·àZÑx›bœEvz,Wò U¼z~%X¿aä@xêC8æO€Û;ÂÙ‹ðé"xå;8GÉ*É:òÁ³ŽÅ;6áù-{ÄX,oJÇókÂdØ}Ú|t…†5à×Ýðã6Eô^i~¯7<¢4¦ª¯„ç·,ã1Ðp߬Mw~/¡§WÅŒ2î—eC§Ú®çl¤ƒÛî³½%gΜ9lÙ²…:uêðÊ+¯pã7òÔSOélYࢠßÌ3™´­ß¶Üî»åøêU«Gƒê Êíž‚Šnß‚‚ÇÄðüƒ‚‚½Ì pÜ&µö®žß(7ϯ»Ç)T†ÌƒJQ °ûüò" ¸Añ×®/ …gA¾Ñ¹+}9–ËðâùUÝLÂó[.ˆ±¨¥ãù jÉ /.„?À¼Ц®Éµ…:kqñüf x~§#<¿e€ŠÛüµÅâáéM÷èeÁ ¼½¶œq—dxyd]rò¢÷ʨQ£†CôÔ®]›š5kêhQàS¯Z=ªU%óLIJ­–[OlÞÞJŠnߎ;²|ùrzõêÀŠ+èØ±£^æT4¹³j_Q;QšjÏ1öcêc¨Jë“ V¥CB3hëùé£á??)U'‹«ò¬ÅåQ§z~µ…ç·ÌcQ/JÇóÔ™f`(éÎÓâáùU_$ZàNáù--Äx $|ôëõ!zÝ Yy# ȵBÂR¸­4©‹Žå¢r.eÓ¬)WšÓ+¸á†9r$=ô²,óå—_Ò§O½Í h qµâÊ]øn9¾…{ZßS®÷T t¾ééé|óÍ74iÒ€ƒÒºuk:tè€Á``Ó¦Mz™`¨b× ícpˆßý®½EU2Qv™Çm°÷t¾ÎûÇ…\®²•ÜÅoœvQ Bü–1b,ꉛøµ»y¯TüBéyw‹Ã§øEˆßÒBŒÇ@Á[ˆóµ‰^PæãpYéá»ò¬¡.NÑ«FŒ\^ô o¯–¥K—ÌÊ•+eƒÁÀ»ï¾«³eMy ß3—Îpèì!ÚÕ…­*#º ß?þØç9ƒ¡<–p•v(‚Q[19]™-(Dã\{‹6Źà6á@žk3àÀ ˆ­ïz‡ïVÑA%©på†ö‘‡û¢!~Ë1õÆKŸß8è1ƒ+¿åA±â·×{’¿¿W‹€Vônår¢wW6¾@5 šÛ\+Dïµ±`Á]¡qµâX´wQ¹ÝO¶ªÜè&|o¹å½n] QÅ®7ñk÷øjU.N=¬¥*J›”óFð&¤>m›(½¿ÿC)nUEVZ(\ êíÕûzˆß˜¹v/µú;©ácíp.4Ä~¥\ëX|üñÇ™?>‹…-[¶Ð¶­kŠeË–‘˜˜È‡~ÈOÄoXŒRåÙMôúZ`W‚%Ø—íÆC£:pþä^„ª†’Ut.µÈ¥ŠË¢º)8{ýj/áý½®u,:”çž{ŽîÝ»{œ;{ö,/¼ð (U›â7 Èp^Ušâ÷8žÅèÂ(Ù¢{)J ø¿éÀ'×lceãZÆ£‹zã.z·ÓŠ oÎD [ÖÔªâ„u¸aÿŒ²ØV‘P¼Mç)yô†*~3±>Å/Tæñ˜ššJjjªË±ÜÜ\¯×–Åxc±¬¹:Ñ Š°¥‚ºÍaBYœ]Bƾð*zÕž„Bôz¥¸±h0¢ ""BäÕ—M›Šð½9ææ2½—$KìÎÙÍ}mî+Óû*.ºæø®\¹’ž={êeB%§˜jÏUüf‚³Ý‘ŠûÂ:FsPú,ÄoI(‹±xüøqÞzë-V¬X(Õ1eùò!“'OÅE”øµ·äö˜Œ(b¸8‡Òʬ$híâ×o‚qÓ¦M$$xþ{”öxc±¼)¹èUQ£.´P6¥|E!z¯ŽâÆbtt4&L %%Y–ùüóϹî:m,¥F• *DÖˆ,—Ê·Ïæ’õ-ë¶,ó{ *&º ߻ロ¤¤$jÔ¨Ah¨ÒõÕ`0™YQÊ·Tì"1,]Éó­ ,ÅÑåŵׯÚ^¯—ž°v}E¯JBYŒÅôôtŽ;FûöJ8ÑÉ“'™?>'Ožä7Þ(»í¦”ñ›¦D@Äá\W_ &¼·@RK‹äSrá ž¹ù=´'…ø-1¥=ÅX,kÜ+8_™èç˜óu¼Èí¸OÑ«†9 Ñ{UL˜0iÓ¦96|úôéÃÿþ÷?­ª”WK£Ý'wЪn«2¿— b¢›ð}ðÁùè£HHH¸ª¼BQ½² °WvŽrË'üöÎ<¼É*û㟤¡ K¡l²µ¥)k@DÁ•Í© #2¸â‚ øÃAÅq7PÁAvª(" *‹Ã* Ò–BKËZZ ´Zšäþþx“4IÓ=ÝÏçyòмysîMxOÞû½÷Üs<Í5ëC‡–,«8Yë7Xöý––²ú¢#¶•¤¡C‡röìY§6"##™:uj™ì× ¿¶šÛ6J#~]“ZÙ°­z—¦“ŸºnOñ[,<åâ‹MéD/hŠüQfë¿uŽ*z#‚Ñ|KJ•†/¾ø‚åË—Wv7j%Æ#ñçã˽شX| ¾5 *÷¶„ªI¥ _y¤ôå.${¥§ãKNû|mƒêcx6‹ìòÖ—Ðfµ[ã½…ÖúuÊøì($ô¹(Êê‹“&Mâ»ï¾#%%…ÁƒãïïÏ‘#G<ØCÁÓâW‡&|M8ßy{ –®£ù&©ú-tx.â·HÊââ‹í>SzÑë…&pm¾h¿fòVz}­ÿ-zu°,¢·¤ìÝ»·²»Pk162²ñèÆro'&-†Ð&¡xé%©nm¥Ò„ïСCùú믹ûî»Kõ~É^é)l%Tþ ÷,ÀVE×qP]–pJG³ÈÖAd›Ðà§VŰQ`­_ÇŒÏÆ$ë¾_ }.eõÅùóçyÎâÅ‹Ke»vãºßsâ· ZR´¶š?æZÿ-Íj¯#nÅ¯í ˆßB)‹?Š/V$e½×¡Ýÿ®¡ùŸÍm«½¶ (½åOß¾}yýõ×yä‘G¨_?¯¨›¿Y 5 Ea 0’’•BÖµ,êy7°äĦÅÊþÞZN¥ ß÷Þ{ŒŒ |}}ñññ´}L.\(“Ý’f¯”Ì•6¬+¿ˆ_(›øÍ°þk@«MˆÃsÛàû Î!]á¶Ö¯cHeû~ÝQ;V‹›I¶¼|Qðå#~½ÑJ¤¤¡M>™^+níТÈ'~Ó‰ø-ñÇê€gD¯VäÕÔvôÅ&hþ(¢·bX°`:ŽW_}Õ~L§Óa6› y—à l%ÓéÚ¼k¹µ“Ãmmo+7ûBÕ§Ò„ï<ž&¾4Ù+%s%ä ®ËOü^¶þ뺒¤³» ¤S<áë®/Fǵ-Vp’5ÑGaVjîÀ ¸™dËÃOR~â·y{î½)ûJ¯+"~KŽøcUdz¢×FAÛ}lúvÐZDo¹²oß>V޵|ËKøž¿ržÔ+©²â[Ë©4áëççÇÌ™39xð W¯^´™µýû÷—Ú¦d¯, nÄo°gůŽÂ³È–†Ëmºï-ô Àµ{€P¾(xšò {.ÁëHâ7˜ â×ñǪLùˆÞ‚p½¡Ö?Ú!¢·INNæ—_~A§Óѯ_?‚‚$ REТ~ | ¾åšÙ96-€NÍ$£sm¦,š£LL˜0àà`RSSyíµ×hÕªwÞyg©l¹f¯LLL$11‘Ñ£G3cÆ ½%Æ*~#‚a"0 Zßã|aÚ!cáÜ¢pŸIÖDTÚ5ŽMhÍh¶ZŸX#ØÊe$iûàeÚ¦ê×3.O<é‹Byâ:˜}D+[b[¤ Ž‘w¨¼Ph[²Ð¶(”!ÚFn|t°8°XDm÷CâUJ½·£Ý„#F’'zÃÑë6lØ@dd$«W¯fåÊ•tïÞ=ßv!¡|Ðétå^Ò(&-:®o,µ™k3•&|Oœ8Á /¼€¯¯/wß}7k×®eóæÍÅ~ÿ¤I“ äÔ©S <˜:”cok Ž7LñëZÕÏW»ÿÞFÉÄo€õßk8guvÌ"[–}…®ëSqä J6¡EnÛ6ÛůíqÐáïÚGY}Q¨H\µ=*\üæõp-+{:ÚþÄÔ"ÞW øÝŠˆ_Ä«*¶{Eá¢7ÈDËk‘óý®¸(z 5zË‘ °wï^Ö®]˺uëØ»w/3gάìnÕÚ´+÷߀üêø•[BÕ§ÒB½½µà:___ÒÒÒhܸ1çÏŸ/öû%{eE`¿y{~ÁªèPç·8?S~hƒd3Ú~^["y["/<›IÖ ʆÖ[^hGžZ·g~vh׎¤W®”Õ…ŠÆ1ìÙ:ð-‡:¿î0ézhwÄ/=˜¬!fœVÚ$WAà §Ät®{~Yc-GµÍ¬Š-z¿öëÀ¢À¿.øyùtðÑCCKñ[Ž®‚j³Ïx ???BBBìÏÛ¶mK½zå—aXpÆ`dã±ò+i“C§¦æ\Û©4áJZZQQQôîÝ› äKº#T®{ ='~[ ­åàœ¹Òh\À{LhBÙ„žP­RA¸–;2fƒÑ±ä‘ã˜Û½¿µOüŠ/Vw*Nü^ Mô*w÷‡v°d=œ¿¤M`]ÌÕV… Ë)÷©í·âwð!µÉ¬j-z?NêÀÛ‹ž‚{ûj“B»â`Ì8“ -Eoç)è•kÃSôíÛ—3f0qâD”R,^¼˜»îº‹Œ ­.…”5*_B…p<ý8eA¯ó|@jlZ,#:Žð¸]¡zQiÂwéÒ¥<ñÄôèуôôt† RYÝœp'~{XWcÊ&~KΜ….æçá!>Rs Ú º A„ãªRÚØ›øÝ„¶ê{;ÚG ƺú y‚×6¨ ñÅêˆ;¥ÜůIÝC`×Q1š6‚/zuá¯QP§¬\ÓAoú…Øúë¯I>ñ›S[ůøcU¢pÑ»X\ÓkAs1·æ½»wGˆ~§h·ÊÂ, ½÷ØjÒ?âòŽÚçåÍÂ… ÑétùòÂÌš5KÊUÆ#Ù¦lÎ^>K«­Ø´üÌyÛÜa_·ˆ?V6…‹ÞµhI¶ìncä·Û@òÉ‚…¯[Ñ;‡ÌÍ’¼ª"rF•‹½–ïÅD ßø ñ(””2ª†ðª*nöBâw3Ú ÜS!•¡þð~o°•´¬£‡§»ÂÖS°þ´&ŒR°v¿ùöý&X(€‘Á†P©Xñ«7[úÀ—ß‚ÉÌͽ~~ðÑû`ì¨Emh/I– ãDü U†E¸½ŸgkO²ô€ÖƒKYkroéZÇÁEôÞ›½¶{¯ø€P³ ÐöW'\Làæ ›=j;&5@„¯PyY…ê‚›,²ô(0Û³§2ÉZtpoHžèµ1þøî,èmbØY^pš¼²H®ØÊ%  àSÙäey¶•=Úd}ž„5Ëld¬ %„ª«Z£Üd{.kI2Û“N€ÜÐ3ÿymÛBëÖÚ^ßâp Íýòe{ÎHB²= Oá¢wÚµm¶€^¯enö®‹ÜÌ(í< gµ\®LDóÇq¾"zk ñññôéÓ‡ÐÐPzõêÅáÇ =üøñèõzû>âÚLÝ:uiQ¿E¹dvŽM‹¥YÝf4©[–ú!BM@V|…b`[U G‡=öü–eåW\ºæ|lÉQX’kX™1ß 'NÃw[!MM ­tüÝŒCÒ+_—“W€Áºÿwµm߯PÝ(hå·ܳ@‹d°îE(ÍÞ|´}úupúœò|ò$´iã|^f&¤¦j3«Ùä•uñF ÷,hÆ5Í7[' ©á­À=ŽÉæÄÿ„ò&¿è=µA»oØD/äÕ®îx=Žƒ¡ý`Æ—àë ÿu}`ýøÛ{Z´’K±ë‰h“Åý|qšDÑ[½™4i=öýë_Y½z5ãÇg÷îÝnÏ]³f ÞÞÞè\gøk1Æ# éž¾1i1tj&û{¾B™ÈŸðªu‚sH¥m%§¤x)Xr ^‹„íØ£;òV€Ÿ{ Þx^›mø#ú† Ь›®ŸA ¯4Úöþ;œhÀIÀ€$—xMˆU‘ᇲ²Ûðü,pU§ùßëoj¡ÍŽc·¿ 99àã¥ã‚YÑ¢…?99&._Î!Ód¡Rù¶'$á° íXwû@’5Ó³ãç„ò `Ñ»øÉzV´Á“Á ‚!.¶î›#àÙ…0m¡öZN®–ݹ©CFg#pŽrW7Î;Ǿ}ûìu·GŽÉ”)SHHHÀhtޱIIIá7Þ`ëÖ­|úé§îÌÕJŒÆrYñI‹¡w›Þ·+T?Dø ÅÄݪ¯u%ÆQüsÞOè¨%KB=´²(·n€9=á¦æÖÐ23´nÿœ–'zº†Â ‡ÞÒJ&ét`PZù#Ç‹<ÁåoÛ­¨@l‹ÛNr¨1zü6¡*à*~Á“%Él4|œW0ÿHJ†‰kY¿\+VA§Ã§ž7Û5ã·ßNÒ¿gÚ·oÁ?þABÂ9̸ßÿ›€Cù±chNj\#“OB9ã"zçé8øxCÇ4hàƒ··çÏ_Á×Kf 6Ã#cáóeðÓÞÊÛo¿Mýú…å¾×xòÉ'iä˜H3f cÆŒñ\ç«!Bø1ñGÚ´( GÎáሇ=jW(;Ë–-cÙ²eNÇÒÓÓ˵M¾B)(DüZÛmâ×UhÐHA|:Üa-ÓëÁË ú÷Öj‰:’v>[¥ý}Cßš7÷æ‡ÒH»b¦‘Åy•­ÇÈ[X*PÛ²caý|†dV^¨’TŒøõZ¡%™Û²¾ß¨¯cÐ&œ®(EïÞF¶o?ÆÏ?Ïà–[:qñâe>ùäG^zi—MŠËäùf;ò|ñT¶ƒøM@óÅ×Ï$¾'x Ñû)°Y½›9:8ëc`é§÷qß} z¶oO$jì—œ9™Ž°èKhÚD[ÝMIÕ,êÑj×Ûp+z'áP£WDomáÓO?%((ˆþýû£”°ÿ뎹sçÖšlÓÆ#§3Os5÷*~u +V|ާ'Û”-‰­ª î&pöïß_®µëEø %Àv!´òÛC[™±Ò«€,åÀº ¬+½ÀEë ú±¤üç>ú"¤]ªÃþý½ˆŒl@V–‰‡:Htt Í,Î{ÝõÃQ“mí»­-ûÞß$ë¾ß}h!i ¡êáè«6Úñ§aÝFøè£P»è¨WÏÀ¢Ea´l¹…+Ù¸±_è ßÚg§òGWö(Â1éÈÀE¨z¸Û÷ëyñ«ÃybÉ&k/]ºÊÀ]3æ?\¹’‹Á`àùç&!ák×n%;;€5z- £­}×U_p³ßÞö¡4ä½ñqp#p ¼•œBTTþk¬G@Ú·k™cçiˆõ²t³h—OôN /¼YDo¢yóætïÞ%K–0nÜ8V¯^M```¾0ç¥K—:=×ëõ:tÿ¢Š¿Õ|ìµ|Ó=&|cRc¨[§. =bO¨ÞˆðJI™žÙ§ÝÌïÙ§ &¬Ø2>o¶>/MÆg઼àŽñðÔ| ¬ÿ”‚;ïÌŸÖªQ£:Ü|s;¶œ/ЮmLmËe•lÀþ nVA°Puq]ý-ñëˆ7ZاÙII©ÄÇŸaçÎc|øá‹|òÉNñÒK“¹õÖ^;–Ìœ9 X—H‹Å9Éh«¾6Dü !¿è}0–ëõX,Þ{ïqš4ñgìØ70Û6ì: ”r{ܽµùóç3~üxfÏžMÆ Y¼x13fÌ U«VLš4)ß{$«s­´ÂÛËÛ£ ®bÏÇÚ$½N*¸ "|…2á*~¹$½2BëÍΟK#~¯²ÍpÁ oχ7çå½væLÎ{B”Rœ<™m_RÀU ÇKI;½E‘SœÆ³ Xý°Æ!ô9œÛÃ3Ïôw²°sçq_¤3и€Vì¢7Ôú‡ˆÞO‡عsg¾ã¯½öZï1›ÍåÙ¥j…^§'¤QˆG…oLª”2òá+”Gñ Ϋ¿˜ôÊFiį/ZReÖöþ¤tüë_ ,_é4{úÃiÄÅeÑMô^BÛ{Ø%4ظ˜- //=l·XìaÕá”ü*m0¡ÏŽõE U ×Ðç!b‘¶7ß¡ßfÀÁG“p.mí¸ø ‹âú€E)ââNóüóÿÕŽÕ¯Ëòå6l€]ô®^½‘ûîû‹…àà@:thÏîÝû˜x)ƒ­Ù°Ô1 ÃÖ‘\öüÖî}qBIÈ/z߈ƒf -Z4ä–[ÂÐét´lÙ„ †0}úüüê0~ü øøذ!–¿MXN+/=#Í·u©h·‡ÖnEï‡óQ¡âé’F±i± n7Øcö„ê_Á¸®$“v“ôʵ~uä]ÀuMŠ•+Ï’›»Ÿ©SÛÒ¬™7ÑÑ)üóõ£øéÁÇ9h¢wâÄa|úéz¼¼ô ^˜LfŒÆ6¤¦^$33‹¸Ýªå>û³íE[è³}߯c¹£}ˆøª®â÷M@ÈóÑ~h×·cpƒíß`òo pç¿:¬e,ŠÓIZªÛÓ§Sñõõ¡W/-Cé•+W‰Šz€Å‹?ä¯}€“'OñöÛï³xñ—,»šÍ/ÙÞJ€1଺¶Í¹L¸ ‚[AÆKö½ß¬…©§á„—Âd²Ð¦ÍuÄÇŸ²¿ã½÷¦p횉)SÖòÔSÑèõ:²³M„zé˜lVDºiÅviæ½ÿDJá Bá„„°-i›Gl¥f¥rþêyYñìˆð<„»}„ƒQ—uk`\’ó¾ß²ÌïÕEhoXŽuëRm¡EkZ‡âܱckÖü„——½^ÏM7…³pá,Ú·"'çŸ~ºš)SþÉàÚ^Å\´ Ó6œ²?ÛVØ8îûñ+TUŠ¿¶¬ìÆì¼k¾0-è5ÀGÁ9ƒiiùñÇ(¥X¹r&“™qãÆ0~üƒ:ô'·Ür'W¯fsíÚ5ZµjÉùôK›‚Á ¥g8ðÞxã3víŠáÆ;áí]‡E‹¦ñÄ#4ð9|Îgð1aVö-4­}]š²Õ‚Ñ+%ÆØÈÈç>G)Uæý϶ŒÎRÊH°!ÂWð0…¬þ:¬Ýd|†²‰_?Àפ0¡­Ø,8‡ ¼èÚ5„U«’ðññfݺ÷hhÒšzõüÈʺJj½ºde]ḗž³ÇÔYŽõÙÖÏáøâ€5I¯CŸe`.T\'«ò‹_ u‚&€O9øiA"¸0ÿmœ6™¹|ù*‡Å1gÎΟOÇd2qÏ=w¢”"*jÙÙ9téÒ‰E‹æNvv6 ~ÆÔ©ÏðÔ. ï·· 2Ü%—WœEïŸëá•t/zôã±ÇÆ3a˜Í||¼‰‹K⦛º1hÐsLž|7Dpôè)ÞygYé—Y ð%OÜÚ0ºü šè½'m Œˆ^A(Æ#Y¹Y¤^I¥y½æe²“ƒ^§çúÆ×{¨wBuG„¯P¸+¡b¿=àžù2>“7˜v›YÙŠ-Ò± ¶çÕY'Ìf< €^¯cȾvÑ ðÛo1ŒñùË­üë_3 mÏñã'˜>ý ¾új-uÄ£í+î`í§½¯Žâ÷vë¿vñkû@öý UGì"~°ïEh½U[>å&ù•#…‰ßV@–ÅÂ%à…Þ¦iÓÒÒγoß~ÿýO ß|³šÖ­µ¾¾¾,_¾‹ÅÂG™^Ì_ '77—VàT¾ ™\\y2ÖÀVXö!¼ü‹ž„ `æÕWŸ%(H»Î:vlGLÌQV¯þ‘¡Cû2dH>þx=sæ,@¯Ó±I)MôÚ"|En;—cÁ@„ˆ^A()ö’FË,|cÓb1ñ1øx¢kB @„¯PNú N¥TêØö‚óàÙñoÇý…%]öSØ÷n)99ל^ÿ׿>#0°5«W/ÄÛ[KsÕ¶m K—~À¡C‡‰ù3^ÉbဗíÍfÂÉ[ù=eËú šø FÛÛì6 Ð…ª†mÂêç *ÛŒ”ØìPÖ«\˜oÖ³>r€ËiñòòâÃ?åÙg§Ð¿ÿ-vÑ Ð¸q+233Ñëõ 2„&Mš°~ýzÎ\¼ˆ¾¡Â¢À9Ážø–`C½êG¸ïYX7ÜÐïŒKÄÆ¡K—PBB‚éÛ÷FNŸ>CƒõÈÌÌâ‡þGn® ÐJÍ(¥8¨]m¢×^Òg¡ëøÜ_D¯ ”†€.&pc›Ëd+&-†NMe¯‡_¡œ)(ôùQˆØ—/é•mPm´ªöÓð¼¸øuu:®(-uÕÆ;HN>CPPKûóÇÄ.zmœ9“™3çhÔ¤ O<ñ8:…ò믻øhÞN^»†Ñb! ܘ­…†:%á‰p]ý¶!«¿BUÃñZ´NP“¬“8ÖÃÖŒWE à¢|ÓÇúÈ0›9pàwÞ~û}À¹´ÇÉ“'ÉÈÈ yóæüôÓOtèЀœœî¿ÿ~¢££¹åæ$>ø¨=aañ+䡉ޘ/à‘×aïyC‡þ…uëV0vìÃÄÆáÿÛGHH0K–Ìã¶ÛFpõjíÚqìX²ÝJRlÚ8Š^ÛĦ #V¡ Úug»öDô BIñ÷ñ§iݦÉì›˽ïõ@¯„š‚_¡(,ô-¬2û¾_°ŠG×h+ªŽ{ mÃŒâþ4ꀆJ¡.+…RpûícÞ¼—¹í¶1›-xyyå{ßÌ™ï`0Ø¿ÿWûJTûöíX±b5'OžâwƒßL&–AÀ¬cpŸ|ÿ‚U,$¹$áq-½"ƒt¡ªa¼‡ƒÿ"ë$•Uo%/»M—rõ¬Éç”âߣ×ëùùçm$$$b4†Ð®]Ìf3o¾ù¦]ôæææ2uêT¾ùæôz=;wéß AI,[öM›Ú¶/ˆ_ÕNö¡íé]øáðåÏ:ô^^˜L&fÌ˜Ž——>ú+W®fÆŒ·8°mÛqàÀO|öÙW¼ûî|¼¼ôt5[xxkòªh‚×H^¨³0yטc>¹î¡,Œ$¤—Mø^ɽBRz’¬ø Nˆð*wâ׊çÐgÇS‡ØçÖh§´†|í’ˆ_´£gÍfN0hÐD¼¼ô˜Í–.]ÅôéS14×ÈÍÍå¿ÿ]ËóÏ?c½))) 4”ÜÜ\êÕ«Ç„ ó矇ùùç_H6™g‚qñà¡ÿ…=ó ®=Ûó>´ð7—ï@V…*‰Ã Þߺú šŸÚŠpó`Ù2@'71ÕŽüµÝ¡ÌfN§ ¾‹ >äÚ5m; Aƒìç=ùä“,^¼˜wÞy‡¨¨(>ýôSÞÿ}6o>J›6ó÷¿ßÁË/ßO“&þˆø­ä“O¶òØcZæþðˆnìßÿ:h n ¸•þýoá—_¶sýõ7òÐC÷ѼyS¢£7Dgà} Ÿ-‰Õ ´ Ù¶â "z¡ñD-ß#ç PRÊHpÂ]ÝuA('z¸<@,„£…Uk Û̺íaDxØfÚƒµ‰u{0·‘—Oª¸èÑí42™©Ô1[¨ =zœ¨¨Ç9yò4‰‰É\¹r…NBíï?!\¾|™M›¾çðávíÚÍ‹/¾hO½¯×ë1‡/BÇ ›Y‚º”,@$?ûÜ„ÊÄ6¨TìÑÄ€£Z}³u¨æ›ã|µéAÚa&¢ùiaÖsû˜Lœ<žÄm· ±÷ 9Y ==sæ ,àŸÿü'“'Of̘1¼úê«DFFANÎ5æÎ¦iÓiÑ"ŠÌÌËåÿõUˆ}¬[ÍäÉ™øùùa2™˜>ýû«Û·ï´}»ß}·Ž Æ‘ÃüùŸ3kÖ;Äü“»€°ŠÞä•$š@^H³ˆ^A(WB…”YøÆ¤ÆRÊHpF„¯P‰8ŠàpàC­ÖaÄH­„£n‡ó Û*~á</)Þh+ÀF@#¥Xµr=ÁÁ7вe;ß‚——;wçûï €;#¬¬,6oÞÂòåË™={6>>>Ìœ9“ßÿèèhÚ¶mË÷¼¨ßZ¶÷â•ç’ÈÊÚƒˆ_¡úà(~Gæ9-Éã•Õom"x?Œ.h»"?2™xè Þ|óM, [¶lÁd21qâD.\È?þÈ;ï¼Ã÷ßÏ¡C‡¨_¿>Íš5#%%Æ£xõÕ9ó •Ê… yüñ1b7&“‰Ç{ €»îF‡hÒ¤1Ï=÷©©©€ö;ýá‡ïrß}£°˜L,3™8b6óڵ˴ëz".¡Í ¢WÊc€‘—NpÍ|­è“ ö|,-ê· ‘o#öL¨îH¨³PEpHôЂm{ —ÙÊ¥ÄÊ kxåf´qŠmûaið|,®—ϦR0ó?þ„¨¨èÑ£;‹"7÷¡¡X³f-íÛ·'77¥Ë–-cĈœ9s†»îº‹Ë—/ó /йsgvìØÁ;,dóϧ˜2õ çÏ%$$†!CFS§Ž£;Jˆ¦PÕp¸ýÉKLgKµnóM[l³õ¹»ýú·gߛﶆ·˜LDGG3dÈ:wî €··7‹-â®»îâ“O>Áb±P§N,XÀƒ>ˆÁ``×®]DEEñÆïó·¿%0°µ›Ö„šÀ?nçþû'’••@ëÖ­¹ýöÛyçwøã?xå•é<ôÐx²³sh×® ÷Ý7І ýY½zÉÉ'øO3ÝØjÌ6 cÏÌÁkû[D¯ ”Æ# Eò¥dÚ7n_ôÜ“#«½B>Dø U—A„­ÑaäìPb¥õfçý…›ÑB'¡ðšÀÅ%Øœ›KïoaÄÈ{ðö®ÃåËYlß¾ƒN:ѤI^zé%Ìf3mÛ¶eøðáÌœ9“+W®°oß>‚‚‚xðÁiÕª3fÌ *êpµ£6ùbfæeFŒx„-[¶áëëËØ±cY¸p!~~~ 8ÀÀ@^zéU¢£×–vžéÓ_&++‹%Kþ‹R oeâónЇúY ÚJÙöòº]áµ!¢WÊ [-ß„‹ ¥¾±i±ô êëÉn 5¾BÅÍ`Âgñ y¡–Çò àÂ(Ί°Sý`³™}À޵_“‰ÂlQìÚµ›víŒìÝ»—ví´S‹-Ðétäææòå—_òì³ÏÚE/hƒ÷W_}•¾}û²{÷nüüüÈÈÈ 7×Ljê%F~ƒAÏ¥K_áë[=Äï}÷ÝÇóÏ?Oß¾}íûœFŽÉÂ… Ñëõ|ûí·Ü{ï½$&&VbO…²SÀÄ”-s¹«vÁ6³]¹Ö(s=Mü^nnbÐqˆ=¯ãé§ž EËÖ8p@{])ÆŽ›¯§]ºt¡k×®>|¸8¬FP[|1"b ¿ÿ‹Åb¡iÓ¦Œ1‚à`M¨=z”?ÿü“ p÷ÝwÓ½{/yd<³gÏbþüOˆãáŽðÉDðÒ“¿o„»ÒD6“VýßfA¨Ž´ñoƒAo(õ>_³ÅÌ‘óG˜Ø}¢‡{&TwDø U˜bŠ_ÈÀ›ò2̆m‚ÿ”›2,¶ŸY×±ø& @,ðoŽÿþ÷+¼½½ñòòB¯×³wï^RRRðöö&++‹®]»:Ù˜={6‘‘‘=z”îÝ»³{÷n6lÈûï¿ÏÈ‘#¹téóæÍcÖ¬YŒáêÕµ…*Bß¾îgUïºë.ûß7Þx#§NÂb± ×KzêkÈ'Ø÷¦û[ŸÛêWÛüÕ¦%laÑ ÎbØM±îúFøß3ÙTqÿ ÙlØO||¼ý4Çú¿Ž˜Ífô_§6øb«V¤¦žÇÏÏÈÈH8@ÇŽ6l/¿ü2ƒQ£F±bÅ ¶mÛÆoÌæ¹ç^Àl6cðòbÕs0ªù#ò%­‚üåçpy]OcÐn\já{<ý89æ)e$ä£Ú ßÚÎU»)@ü‚¶Âänui“ùEüf¶v}=)¨%8 d[Ÿ Jñ°>7—ø#G°X,Œ7Žÿþ÷¿4nܘ]»v1zôh®]»ÆæÍ›yì±Çøøã±X,˜L&Ö­[G¿~š÷õõåµ×^#77—·Þz‹;Ó§OÍ`½ûî» :´Ðö“O>I£FΉ(ÆŒØ1cÊ»{B‰±­†Ù’±9 kn°úë¾üBØæ³¶I*7bÈÆÖ×Ôƒo×[ع Æ?îÍÑ£×Ðëõ,^¼˜—_~Ù©‡{÷î%&&†®]+wŸ×²eËX¶l™Ó±ôôôJêMõöÅmÛv‘’’ŠÅb¡~ýúÜqÇdff²sçNž~úiûïkRR=zô 88˜«W¯b6›Ñëõl[d¦÷p«1w+»²¢[“©j¾(LH@é3;ǤIFgÁ=ÕVøÖ–p. |ø[ÞŽ"Øq0툻ßO×£®çØó¸¾Ïjÿ€`ų™¹ f³°iÓ&Z·nMëÖ­ùè£ˆŠŠ"<<Ü.ŒÓÓÓñõõ%%%…믿Þ.zyôÑGyã7xüñøí·ÎT÷ØÒ¥KY¹r%Û¶m+ô¼¹sçÒ½{÷ ê•àÜ]›îêvÛ„°õ¸;!lÃqu˜üÇu:¸ù/Áüù§â•W|˜3'ž™3gR¿~}&NœHݺuùþûï™8q"ƒ­[W–ò³yw‚qÿþýôèQñ~]Ý}ñþûÅb±àïïO£F8sæ >ú(S§Nå»ï¾ãƒ> E‹Ì™3“ÉDR’vBÌn u[HfæÚLUòE¡pŒFöœÚSª÷ƦÅRß»>müÛx¸WBu§Ú ßÚÎ%¸â8#Ðåø>çK›vÄV’"Áå˜ãi®û Z…r‰ƒnl„ÿC{<þ›…Owe“xì†:^ôêu÷Ýw]ºt¥I“Æ:tˆìlm ¹^½zn?©íøµk&·¯W'–/_άY³Ø²e Íš5«ìî†K´Ýom¢Øæ·Áy“VŽ8&˲á’êí o½Õƒ‘#“¸é¦Oxúé§™6mƒììl <‡¦M›zþãUCj‚/^º” ÀÕ«W>|8Ÿ}ö‡bãÆ 6Œ!C†pà 70`À¾ûî[zôðåǛѠãÀÝ ¯A¨Jùê¯PJ9-p‡˜4-£sIß'Ô|ª­ð-Õ9œK(ˆ‚'nÂÓl!Ñ®uq#\޹†^‚ó>DÛkíž»®;¼öa;øð9íïËWÍ|¸ÁÌ;–óÝwËiÜÈÂáè[·.×®]ãàÁƒ=z”öí³®X±NÇÓOÛbòJžäª²Bº”Rö¿W¬XÁ+¯¼Â–-[hÓFf^k'…CÛØçrjņ³ìÞxc0Ë7¼ýöjÞ|s&“™aƲlÙÇ 5ú6W(5Ñ›4iÌ•+Ú„¶ŸŸuëÖ¥ÿþLŸ>^½z±téR~úé'Ìf¯¼Ò‘éÓCñññ"ïÑ+Õc€‘Œœ .f_¤±_ã¢ßà€”2 ¢ÆŽª{8—P… T Ë Nû!è%ä¿t ½tÍTën õç;ÂóO™ìçÌ]À³Ï¦c6+ #FŒ`åÊ•tìØ‹ÅÂúõëyî¹çðòÒ3aÂàB>gáTdHפI“øî»ïHIIaðàÁøûûsäÈ¢¢¢hÙ²%wß}·ýÜ-[¶Ð¸qÉnbBuÇ]賋:¾î*„óÙrWV¦MÅ´i£¨ÍB¦¦ûâ7ß|NÏžChÔ¨o¾ù&<òqqqLœ˜—½µiS_~ø¡‘‘Ž“Ú%­ª½×Š Tel%/&–Hø*¥ˆM‹eX‡aåÕ5¡S#…oMç<‰»A7ä…K»| ¿,wãt×÷ZóO> UÐù‚à¹6¡&a 0–jÅ·}ãöx{y—S¯„êLµ¾‚P6 Hª¸À%±WE…vÊÀM¨Èu/‚ 8c 0²:fu‰Þ“C§fæ,¸G„¯ ¸Knoÿ¡’œ[Tû‚ ‚ µc€‘¤ô$L}ñ$KLj cÃÆ–sÏ„êŠ_AÈGi…¨XAAOÒ(³2s2ã$mµ-òüË×.s"ã„$¶ D„¯ ” »‚ ‚ žÆ±¤Qq„o\Z€”2 D_ÙAA„êN||<}úô!44”^½zqøðá|çüþûïÜrË-têÔ‰nݺ1aÂ{-jÁ™àFÁèÐ;Á•­”‘_¡ Dø ‚ ‚ B™4i=öqqq<ÿüóŒ?>ß9~~~Ì›7˜˜I£FœŽ3†1cÆx®óUc€‘ßS~/Ö¹1i1 h; œ{$xŠeË–±lÙ2§céééåÚ¦_AAA¨@®]»Æý÷ßÏàÁƒ¹çž{ þ´¬ß²"º%TSd¯ ‚ ‚ ”‘:°sçÎ|Ç_{í5ûßcÇŽeìØ±Ù­jM³ºÍ¨W§^Ñ+¾i1tlÚNWA=ª#²â+‚ ‚ B•C§Ói%Ò /i$¥Œ„â ÂWAA„*IH@H¡µ|•Rö_A( ¾‚ ‚ ‚ TIŒÆB…ïÙËgÉÈÉ_¡HDø ‚ ‚ ‚P%162r<ý8eqûzLšdtЇ_AAAª$Æ#×Ì×8yÚíë1©1ÔÑס]ãvÜ3¡º!ÂWAA„*‰­¤QAáαçc¹¾ÉõôR¬F(¾‚ ‚ ‚ TIÚ6j ,|cR%±•Pº—ß¼ô2q'”œj+|+Ž•ÝAœŸ„ÊGüP„Чiݦ•Ý¡S#öø–®)ï¥íšÙnmn»*SžßKyÙ»åo[ìÖ,ªú÷S•û'}+=U½EyÕñSìWç¾—7"| ¡¶Š!¾µ§íªLu¼)ˆÝò·-vkUýû©Êý“¾•žªÞ¿Š¢: ¤êÜ÷ò¶_û^ÞˆðAA„2OŸ>} ¥W¯^>|Øíyëׯ§S§NtèÐQ£F‘™™YÁ=„Ú‰_AAA(#“&Mâ±Ç#..ŽçŸžñãÇç;çòåËLœ8‘èèhŽ9B«V­˜5KÊòBE ÂWAAÊÀ¹sçØ·oQQQŒ9’'~ÊYÝIDATNàtÞ† èÞ½;:t`òäÉÕ:tTªµ6«svv6111ž“žžÎþýû+ªKµ¾íÚø™+ºmÛõ~õêÕ i¯¸¸óÇòü^Ê˶Ø-Û5ÅnuòÅò¤2{‹CUîŸô­ô8öÏS¾xâÄ Z¶l‰^¯­)ét:‚‚‚HNNÆh4ÚÏKNN&((Èþ<88˜3gÎ`±Xìï…ŠñÅòþªŽ÷˜š`¿:÷½Ü殺²téRÈCµò±téÒÊvA'ÄåQ[â‹òGÕx”Õ÷îÝ«BCCŽõêÕKmݺÕéØ;ï¼£&Mšdž••¥¼¼¼”Ùl_”‡<¬òº7ÖÚßÁƒ³téRÚ¶m‹ŸŸ_ewG*„ììl"|AAA„”3AAAj4µRøÆÇÇÓ§OBCCéÕ«‡v{ÞúõëéÔ©:t`Ô¨QdffpúôiLÇŽ gôèѤ¥¥UHÛYYYôîÝ›ˆˆÂÃÃ4hG-÷v™1cz½žC‡UÈgÐëõ„……Idd$;v쨰¶/^¼Èرc ¥k×®¼øâ‹Òöï¿ÿnÿ¼‘‘‘´mÛ–&Mš«íêÌ·ß~K=ðõõå©§žr{ÎÕ«Wéܹ3‘‘‘±»víZÂÃÉŒŒ¤sçÎL›6 ‹ÅâÛ_}õ‘‘‘tëÖnݺñïÿÛ#v÷ìÙCŸ>}¨W¯#FŒ(¶Í¢ì¼þúë´oßžöíÛóòË/—ȶ#)))Œ9’ððp:wîÌ»ï¾[j[Žœ>}š;°°0:wîÌøñãí¥?Ê”)Sœ|ÎÏÏ>øÀ=ÖX½z5aaaök!))Éc¶+OüÖîÚµ‹ððpBCC8p §OŸ¶¿¶fÍ"""ì¾ôÅ_T©þ}ÿý÷Üpà „‡‡sÓM7ûþ詾=šÖ­[£×ëÉÈÈ(•ýÊêßÔ©S )Ѹ¢"ú–““Ãðáà %""‚¿üå/;v¬Dý+ ŽßÃÁƒíÇgÏžMÇŽñòò"::Úãö~øaûgìÛ·/{÷îõ¨mÛ½µGlذ¡Ì}wwüøãxyy•úSPÿû÷ïÑh´ßJc¿°¾Ïœ9“ÐÐP¸í¶Û<Ú÷Þ½{ÛûÝ­[7ôz=üñ‡Gú¾mÛ6zõêe3½ýöÛeý={öpóÍ7Ûó·nÝZ*ûn)—\ÑUœ¨Ï?ÿ\)¥ÔªU«Ô 7ÜïœÌÌLuÝuש¸¸8¥”RS¦LQÓ¦MSJ)•’’¢vìØa?wÚ´ijüøñÒ¶ÅbQ—/_¶ŸûŸÿüGÝqÇåÞ®]»v©;ï¼S…„„¨ƒç#{¤mN§.]ºT¬ö<ÝöðáÃÕ;ï¼c~öìÙ kÛ‘)S¦¨©S§«íêÌ‘#GÔÁƒÕË/¿¬ž|òI·çüãÿPûÛßTdd¤GìfffÚÿ¾víšêÕ«—Z¾|¹GlïØ±C¥¤¤(¥”ºté’jß¾½úé§ŸÊl÷äÉ“j÷îÝjþüùjøðáÅîkQvþùgÕ¥KuåÊ•““£zö쩾ýöÛÙ·ñàƒªW^yE)¥•숈ˆP{öì)•-Gþþ÷¿«gžyF)¥”ÙlVC† QóæÍ+³]GΞ=«üüüìÿweeÿþýªcÇŽêÌ™3J)¥._¾¬®\¹âÛU²þÞ™ÍfÕ®];»oüë_ÿR÷Þ{¯ýµúõë«ßÿ])¥ÔñãÇ•¯¯¯Ó½°2ûwáÂÕ¤Iuøða¥”RÛ¶mS]»v­°¾)¥Ô–-[Ô¹sçÜÞ+‹c¿2û·mÛ6uòäIÕ¶mÛb+*¢oÙÙÙjÆ öç|ðêß¿‰úW úvïÞ­TÿþýUtt´Çíýõ×öRJëׯWmÛ¶õ˜íôôtûß¿ýö›jР²X,³ok£W¯^êî»ïVsçÎ-±íÂì—õ;/ÌöܹsÕ¨Q£Tnn®RJ•ú^SÿYµj• ó˜íN:©o¾ùF)¥ýþ5oÞ\ÅÄÄxľÅbQ­[·V[¶lQJiã•   uõêÕÛwG­¾)))Êßßßîä‹EµhÑB;vÌé¼+V8 ÊÇ«6mÚ¸µ¹råÊbýzºm‹Å¢fΜY¤èöT»YYYªW¯^êĉžAyªmNçôZ<Ñv||¼ ,ñµ§ÿ¯¯^½ªJ<(¨ÎÌœ9Ó­ðÝ´i“=z´úé§ŸTDD„ÇìÚ¸té’ /¶8-‰m¥”6l˜} æ »‹/.±ð-ÌîäÉ“Õ[o½e>oÞ<U*û]»vU¿þú«ýùÔ©S=2yóú믫¿ýíoÊb±¨+W®¨[n¹Å~öo¾ù¦1b„Çì;V}òÉ'³W•ðÄïÝîÝ»UÇŽí¯edd(___•““£”Rª}ûöê—_~QJ)uðàAÕ¦Mû€±²û·gÏÕ¡C'[þþþê·ß~«¾9â*ÞŠk¿²úçHI…oEöM)¥öìÙS*QXR ú›#f³™>ø€áÇWhÛƒ ¢eË–|õÕWE¦À÷T»Ï=÷“'O¦M›6E~ÖòøÌ ""‚gžy†+W®THÛ‡¦M›6üýï§gÏž <˜Tèç-̯]»v„……ÙvM&==矞>úåá¼|¿þú+aaa\wÝuÜvÛmÜzë­µpøða~ýõW äqÛžâĉÛŸç»n‹K=øòË/QJ‘ššÊ÷ßï‘ðÞiÓ¦K‹-¸îºëèܹ3Æ +³]G/^Ì„ œÏ?ÿÜcvV­Z…Á`°ÿþët:ÚmìÆ<@bb¢Glfdd’’ºuëèÝ»7½{÷fÅŠ±íʉ'øå—_ˆŠŠò˜Íyóæ1}út‚ƒƒéر#³gϦyóæ±Ý´iSZ¶lÉÊ•+-ì9..Îc[ƒjð-.Åq¥“'O¦I“&<ñÄÚöæÍ›9sæ cǎ塇*÷v7mÚDrr2ãÆ³ó¤ð(ê3'''³ÿ~vîÜIjj*Ó¦M«¶M&»wïf̘1ìÝ»—§žzŠaÆa6›Ë½mG.\èÑAxerÓM7ѬY³|æÍ›sêÔ©Bß;eʦOŸNÓ¦M=j×öþC‡qâÄ ¶oßÎW_}å1Û'OždøðáÌŸ?ŸV­ZyÌnAŸ¥,v‹ëÛEµóÎ;ïpùòe"##;v, ÀËË«LvOž<ÉÓO?MXXgÏžåôéÓÄÅűpáB}/Û¶m#33“;ï¼³XßCqúœ››Ëظq#Û·ogçÎ|ôÑGŶ_(í ôòåËÜ{ï½DGGsüøq¶lÙBTTçÏŸ¯ýkذ!«V­âÅ_¤gÏžlÚ´‰Î;[˜—gß*ŠªÜ?OômöìÙ$$$ðÆox GU“¥K—²råJ,XàQ»o¼ñGeõêÕÜÿýnsÇ”†³gÏòÏþ“¹sçÚ}ËÓâK–,!..ŽC‡ѯ_?M°šL&L&ÙÙÙüïÿcùòå<õÔS%Þã^>ûì3îºë.7nì{J)FŽÉÛo¿MRRþù'Ó§O'&&Æ#ö¢££Y´hÝ»wç½÷Þ£oß¾û=õܯr5!00Ð>Ó§×ëQJå›  bÓ¦MöçÇwšYmSö©S§X·n]…· Úùĉy뭷ʽݭ[·²ÿ~BBBmçw²`Á†ZîŸÙ¶Ê\·n]þþ÷¿Ûká•÷ç ¢uëÖöÕ¿!C†píÚ5’’’0åþ¹Ùµkk×®-ò3Wl«"¥aÇŽìØ±ƒgŸ}–ììl.\¸@§Nˆ‰‰)“]Gš6mʨQ£Ø±c<ð@™û Z2¦Ûo¿W^y…Q£FÙ{¢Ïîue±ä4³züøq§•®’¶³xñbûß=ö]»v-ò=EÙݺu+ .D§ÓQ¿~}FÍÖ­[‹œ*î÷²páBÆ_¢sQ¶ƒƒƒ5j>>>Œ9’_ý•ǼØmTU<õ[ëxÝeffréÒ%ZµjŨW¯}ûö gÏž´iÓ†0pàÀJïhIp~úé'@KŠÔ²eK:wî\!}ó„ýÊê_Y¨¨¾ýë_ÿbݺulÞ¼___~†ªÂòåË™5k[¶l¡Y³fåÒÆÀñ÷÷'>>žîÝ»—ÙÞ¾}û8sæ ¤¥¥ñÍ7ß––ƬY³ÊlpŠp|üñÇyöÙg¹xñ"e²Û¸qcêׯo_… ææ›ofÏž=ìSJñÙgŸññÇ{Ìfjj*ñññöñQHH½{÷fÇŽtêÔÉ#m„……9%Bëܹ3]ºtñˆíZ·âÛ¼ysºwïÎ’%K-Ëf```>3xð`öïßO\\ -ë3ÆþúÔ©S9vìkÖ¬)ö,„'ÚNIIáâÅ‹ös—/_Nï޽˽ÝÙ³gsòäIILL¤M›6lذ¡PÑë©¶ÓÓÓí¡Í‹…åË—ëGÓm÷èÑ~ÿýwvïÞ h7ÜònÛÆ¢E‹9r$þþþE~æš„»™[Ûõ—˜˜ÈW_}EçÎK<ËèÎn\\œ=ì-33“o¿ý¶H¿*®í3gÎ0pà@^xá…RGg6‹]–nwï½÷Þ{Y²d W®\!''‡Å‹Ûop%åÂ… äææðÛo¿ÍäÉ“KÝ_ݺu³ßsssùþûïéÖ­[™í‚‚¶zõjyäسñàƒ²qãF”R˜L&6nÜh°Uw<õ[›››kóçÏçî»ïÆÛÛ›öíÛsîÜ9bcc8zô(ÇŽ#44´Jô4?·1kÖ,Xèä¨'ûfÃæÏŽ~]\û•Õ?WJò{V}û÷¿ÿÍW_}Å?üP¡÷`w߃'W4í¬X±‚W^y…Í›7—h+[Q¶M&“SÕ‘Ý»wsáÂ…bûmQö‡ÊÙ³gíc‚Ñ£G3cÆŒ2‹^›}³ÙLJJŠýøêÕ«iÑ¢E™D¯ã÷>fÌû}ìÂ… ìÞ½›ðððRÛvµZ¶k“ÉÄí·ß^&»Ž¶›5kF@@€=ÓrZZ»ví*ó=رïgÏžµÿýÉ'ŸP¿~} P&ûŽ Õ:âââÔM7ݤ:tè n¸áõÇ(¥”zõÕWÕÇl?ï믿V;vTíÛ·W#FŒPJ)¥¶oß®t:êܹ³ŠˆˆPjäÈ‘ÒöîÝ»Udd¤ SaaaêÞ{ïU§N*÷v])Iв¶ý믿ª°°0®ºté¢þú׿ª‹/VHÛJ)µoß>uã7ª°°0Õ«W/{‚•ŠhÛl6«ÀÀÿoï^c¢8»8€ÿW%`Z¹TÖ (.—fWn¦*–Ĥ«A,‰F>4…(¨1Å”„ˆ—ÄbÛÄš«ñÞB j xK›4 ’¸±$”*K5«¢–(rQ Rå¼Lçu«´\XÖÿïÛÌìœ9Ï$3ÏžgnÓõ¢¥±ê×_£Ñ(“&M___1o|qѹsçôVç‹»mÛ6ýxŽ•o¿ýÖe9ggg˻ᆱŸ+Ìf³””” 9ncc£Fñ÷÷—‰'ŠÑh”ƒ9®ˆÈW_}%ááá.›7oоxÕÏ?ÿ,%IIIrþüùAÇzÕÝ»w%55UTU•èèhÉÎÎÖ_‚4T‡–7·öööJ~~¾DEE‰¢(²nݺ~¿œi,pÅùîïsý¬Y³$%%Eš››õe'Ož‹Å"f³YTU•²²2·Ê/''G_ï³Ï>ÐW\‘ÛâÅ‹Åh4ʸqã$$$DRRRþ3¾»ä·zõj1âåå%S§N•ˆˆ·ÈíÎ;b0dæÌ™ú¹{Μ9ÚwÑ×~øúë¯Åh4ŠÊ´iÓäáÇ.‹ïåå%|ðSÕÚÚ:äØOŸ>•¹s犢(b±X$99Ùé‹(®ÈýUYYYƒ~Ó›âwuuI||¼¨ª*š¦ÉÂ… Ån·»,÷ÖÖVIKKEQDQ”~÷ßý/òòË ………ƒŠûo±m6›$%%‰¦i-ßÿ½KãʬY³$""B–.]êt®*ƒˆ‹oˆ'""""""r#oÝ­ÎDDDDDDôvaáKDDDDDD…/y4¾DDDDDDäÑXø‘GcáKDDDDDD…/ I`` nß¾=bÛ«¬¬DRRbbb ( \öAw"ê[}}=’““UU±jÕ*twwvZDno¤ûI"êÛ§Ÿ~Š„„hš†ÔÔT´´´ÀápÀÏÏ[·nE\\"""`³Ù——‹ÅUUqùòe@UUEAff&TUE||<êêêF¹UÔ_,|iH ÈnÏßßÇŽÃåË—Q[[‹ .àÇшÞF'NÄÐÐЀºº:tuuaÇŽ£‘Ûé~’ˆú¶{÷nÔÔÔ ®®óæÍCaa! :;;ÚÚZlÚ´ V«Ÿ|ò .^¼ˆÌÌLlÛ¶MqåÊdee¡¾¾ÈÈÈÅÑ@°ð¥9}ú4¢££¡i6lØ ÏojjBjj*¡iöï߯/ûí·ß0þ|˜Ífhš†3gÎòó󑘘‹Å‚ àÚµk€;wbÍš5úúííí B{{;Ìf3BCCÞÞÞÐ4 ·nÝ–¹¿áÉž9s&EŒ7ñññp8£ÕT"·5Úý$õ­´´ PUEEEzçãヴ´4@\\|}}±`Á@BBšššô¡¡¡HII,_¾þù'š››G¸%4(BÔO--- ""òÃ?ˆÁ`7nH\\œ466ŠˆHWW—¨ª*555ÒÚÚ*S§N›Í¦Çyô葈ˆþøc,]ºt$›GäöÜ©Ÿ$"gíííðõõ…¿¿?zzzpøðáAÅq8¨ªªÂG}„'N 88!!!.Ζ† _ê·>§ô÷´ˆÀßß/^|mŸ~úé±nß¾ÜÜ\üþûï ƒÝn×ÿˆÀúõë‘––†ÈÈHAÓ4}ÙãÇaµZ‘žžŽ/¾øÂM#ól6öîÝ‹êêjâôéÓøòË/¼|,àoãLJÓôóçÏûŒk0ôcý¯¿þŠ+‚Ý»wSKˆÆ.wé'‰èuV«GŽÉdB@@.\ˆû÷ïèûØ}ÓtLL JJJ°~ýzx{{£¬¬lø“'—à3¾ÔosæÌÝnÇÕ«WÅÅÅèéé··7&Mš„’’ý·×¯_G[[>üðC455Áf³z{{ÑÖÖ†ŽŽxyy!88"‚}ûö9mËd2!<<kÖ¬Ann®>ÿÉ“'°Z­X´h6oÞ<ü&#\=’ Ài$ûùóçÈÈÈ@@@À cy:wè'‰èÍ&L˜€£G¢©© ÕÕÕøæ›oðÇ`úôéúÝ ( nÞ¼©OÏ›7v»Ý)NII ìv;jjj8è4†°ð¥~ Bqq1ÒÓÓa6›qýúuÂËË gÏžEyy94Mƒ¢(ÈÉÉAww7üüüPQQ7BÓ4ÄÅÅáÂ… PUˆ‰‰Abb"¦OŸþÚèZvv6^¼xeË–éóöìÙƒšš”——Ãb±Àb±`ûöí#½+ˆÜŽÕj…Éd‚ÉdBrr2,‹~L f$;66;vìÐG²;†ŠŠ ÔÖÖêÇÿl9s‡~’ˆ†Ï«wAÑØcáGPÉ=}þùçxÿý÷±eË–ÑN…è­PUU…¼¼¼7ÞŽIDî‡ý$QÿñŠ/¹{÷î!** —.]â3¼D#ˆ#ÙDcûI"¢ã_""""""òh¼âKDDDDDD…/y4¾DDDDDDäÑXø‘GcáKDDDDDD…/y4¾DDDDDDäÑXø‘GcáKDDDDDD…/y4¾DDDDDDäÑXø‘GcáKDDDDDD…/y´ÿ“]Z€£iL„IEND®B`‚lmfit-0.9.2/doc/builtin_models.rst0000644000032700003100000010767512613715346020455 0ustar newvillegeocars00000000000000.. _builtin_models_chapter: ===================================================== Built-in Fitting Models in the :mod:`models` module ===================================================== .. module:: models Lmfit provides several builtin fitting models in the :mod:`models` module. These pre-defined models each subclass from the :class:`model.Model` class of the previous chapter and wrap relatively well-known functional forms, such as Gaussians, Lorentzian, and Exponentials that are used in a wide range of scientific domains. In fact, all the models are all based on simple, plain python functions defined in the :mod:`lineshapes` module. In addition to wrapping a function into a :class:`model.Model`, these models also provide a :meth:`guess` method that is intended to give a reasonable set of starting values from a data array that closely approximates the data to be fit. As shown in the previous chapter, a key feature of the :class:`mode.Model` class is that models can easily be combined to give a composite :class:`model.Model`. Thus while some of the models listed here may seem pretty trivial (notably, :class:`ConstantModel` and :class:`LinearModel`), the main point of having these is to be able to used in composite models. For example, a Lorentzian plus a linear background might be represented as:: >>> from lmfit.models import LinearModel, LorentzianModel >>> peak = LorentzianModel() >>> background = LinearModel() >>> model = peak + background All the models listed below are one dimensional, with an independent variable named ``x``. Many of these models represent a function with a distinct peak, and so share common features. To maintain uniformity, common parameter names are used whenever possible. Thus, most models have a parameter called ``amplitude`` that represents the overall height (or area of) a peak or function, a ``center`` parameter that represents a peak centroid position, and a ``sigma`` parameter that gives a characteristic width. Some peak shapes also have a parameter ``fwhm``, typically constrained by ``sigma`` to give the full width at half maximum. After a list of builtin models, a few examples of their use is given. Peak-like models ------------------- There are many peak-like models available. These include :class:`GaussianModel`, :class:`LorentzianModel`, :class:`VoigtModel` and some less commonly used variations. The :meth:`guess` methods for all of these make a fairly crude guess for the value of ``amplitude``, but also set a lower bound of 0 on the value of ``sigma``. :class:`GaussianModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: GaussianModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Gaussian or normal distribution lineshape `_. Parameter names: ``amplitude``, ``center``, and ``sigma``. In addition, a constrained parameter ``fwhm`` is included. .. math:: f(x; A, \mu, \sigma) = \frac{A}{\sigma\sqrt{2\pi}} e^{[{-{(x-\mu)^2}/{{2\sigma}^2}}]} where the parameter ``amplitude`` corresponds to :math:`A`, ``center`` to :math:`\mu`, and ``sigma`` to :math:`\sigma`. The full width at half maximum is :math:`2\sigma\sqrt{2\ln{2}}`, approximately :math:`2.3548\sigma` :class:`LorentzianModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: LorentzianModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Lorentzian or Cauchy-Lorentz distribution function `_. Parameter names: ``amplitude``, ``center``, and ``sigma``. In addition, a constrained parameter ``fwhm`` is included. .. math:: f(x; A, \mu, \sigma) = \frac{A}{\pi} \big[\frac{\sigma}{(x - \mu)^2 + \sigma^2}\big] where the parameter ``amplitude`` corresponds to :math:`A`, ``center`` to :math:`\mu`, and ``sigma`` to :math:`\sigma`. The full width at half maximum is :math:`2\sigma`. :class:`VoigtModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: VoigtModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Voigt distribution function `_. Parameter names: ``amplitude``, ``center``, and ``sigma``. A ``gamma`` parameter is also available. By default, it is constrained to have value equal to ``sigma``, though this can be varied independently. In addition, a constrained parameter ``fwhm`` is included. The definition for the Voigt function used here is .. math:: f(x; A, \mu, \sigma, \gamma) = \frac{A \textrm{Re}[w(z)]}{\sigma\sqrt{2 \pi}} where .. math:: :nowrap: \begin{eqnarray*} z &=& \frac{x-\mu +i\gamma}{\sigma\sqrt{2}} \\ w(z) &=& e^{-z^2}{\operatorname{erfc}}(-iz) \end{eqnarray*} and :func:`erfc` is the complimentary error function. As above, ``amplitude`` corresponds to :math:`A`, ``center`` to :math:`\mu`, and ``sigma`` to :math:`\sigma`. The parameter ``gamma`` corresponds to :math:`\gamma`. If ``gamma`` is kept at the default value (constrained to ``sigma``), the full width at half maximum is approximately :math:`3.6013\sigma`. :class:`PseudoVoigtModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: PseudoVoigtModel(missing=None[, prefix=''[, name=None[, **kws]]]) a model based on a `pseudo-Voigt distribution function `_, which is a weighted sum of a Gaussian and Lorentzian distribution functions with that share values for ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and full width at half maximum (and so have constrained values of ``sigma`` (:math:`\sigma`). A parameter ``fraction`` (:math:`\alpha`) controls the relative weight of the Gaussian and Lorentzian components, giving the full definition of .. math:: f(x; A, \mu, \sigma, \alpha) = \frac{(1-\alpha)A}{\sigma_g\sqrt{2\pi}} e^{[{-{(x-\mu)^2}/{{2\sigma_g}^2}}]} + \frac{\alpha A}{\pi} \big[\frac{\sigma}{(x - \mu)^2 + \sigma^2}\big] where :math:`\sigma_g = {\sigma}/{\sqrt{2\ln{2}}}` so that the full width at half maximum of each component and of the sum is :math:`2\sigma`. The :meth:`guess` function always sets the starting value for ``fraction`` at 0.5. :class:`MoffatModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: MoffatModel(missing=None[, prefix=''[, name=None[, **kws]]]) a model based on a `Moffat distribution function `_, the parameters are ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`), a width parameter ``sigma`` (:math:`\sigma`) and an exponent ``beta`` (:math:`\beta`). For (:math:`\beta=1`) the Moffat has a Lorentzian shape. .. math:: f(x; A, \mu, \sigma, \beta) = A \big[(\frac{x-\mu}{\sigma})^2+1\big]^{-\beta} the full width have maximum is :math:`2\sigma\sqrt{2^{1/\beta}-1}`. :meth:`guess` function always sets the starting value for ``beta`` to 1. :class:`Pearson7Model` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: Pearson7Model(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Pearson VII distribution `_. This is a Lorenztian-like distribution function. It has the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`), and also an ``exponent`` (:math:`m`) in .. math:: f(x; A, \mu, \sigma, m) = \frac{A}{\sigma{\beta(m-\frac{1}{2}, \frac{1}{2})}} \bigl[1 + \frac{(x-\mu)^2}{\sigma^2} \bigr]^{-m} where :math:`\beta` is the beta function (see :func:`scipy.special.beta` in :mod:`scipy.special`). The :meth:`guess` function always gives a starting value for ``exponent`` of 1.5. :class:`StudentsTModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: StudentsTModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Student's t distribution function `_, with the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`) in .. math:: f(x; A, \mu, \sigma) = \frac{A \Gamma(\frac{\sigma+1}{2})} {\sqrt{\sigma\pi}\,\Gamma(\frac{\sigma}{2})} \Bigl[1+\frac{(x-\mu)^2}{\sigma}\Bigr]^{-\frac{\sigma+1}{2}} where :math:`\Gamma(x)` is the gamma function. :class:`BreitWignerModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: BreitWignerModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Breit-Wigner-Fano function `_. It has the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`), plus ``q`` (:math:`q`) in .. math:: f(x; A, \mu, \sigma, q) = \frac{A (q\sigma/2 + x - \mu)^2}{(\sigma/2)^2 + (x - \mu)^2} :class:`LognormalModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: LognormalModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on the `Log-normal distribution function `_. It has the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`) in .. math:: f(x; A, \mu, \sigma) = \frac{A e^{-(\ln(x) - \mu)/ 2\sigma^2}}{x} :class:`DampedOcsillatorModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: DampedOcsillatorModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on the `Damped Harmonic Oscillator Amplitude `_. It has the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`) in .. math:: f(x; A, \mu, \sigma) = \frac{A}{\sqrt{ [1 - (x/\mu)^2]^2 + (2\sigma x/\mu)^2}} :class:`ExponentialGaussianModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: ExponentialGaussianModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model of an `Exponentially modified Gaussian distribution `_. It has the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`), and also ``gamma`` (:math:`\gamma`) in .. math:: f(x; A, \mu, \sigma, \gamma) = \frac{A\gamma}{2} \exp\bigl[\gamma({\mu - x + \gamma\sigma^2/2})\bigr] {\operatorname{erfc}}\Bigl(\frac{\mu + \gamma\sigma^2 - x}{\sqrt{2}\sigma}\Bigr) where :func:`erfc` is the complimentary error function. :class:`SkewedGaussianModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: SkewedGaussianModel(missing=None[, prefix=''[, name=None[, **kws]]]) A variation of the above model, this is a `Skewed normal distribution `_. It has the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`), and also ``gamma`` (:math:`\gamma`) in .. math:: f(x; A, \mu, \sigma, \gamma) = \frac{A}{\sigma\sqrt{2\pi}} e^{[{-{(x-\mu)^2}/{{2\sigma}^2}}]} \Bigl\{ 1 + {\operatorname{erf}}\bigl[ \frac{\gamma(x-\mu)}{\sigma\sqrt{2}} \bigr] \Bigr\} where :func:`erf` is the error function. :class:`DonaichModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: DonaichModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model of an `Doniach Sunjic asymmetric lineshape `_, used in photo-emission. With the usual parameters ``amplitude`` (:math:`A`), ``center`` (:math:`\mu`) and ``sigma`` (:math:`\sigma`), and also ``gamma`` (:math:`\gamma`) in .. math:: f(x; A, \mu, \sigma, \gamma) = A\frac{\cos\bigl[\pi\gamma/2 + (1-\gamma) \arctan{(x - \mu)}/\sigma\bigr]} {\bigr[1 + (x-\mu)/\sigma\bigl]^{(1-\gamma)/2}} Linear and Polynomial Models ------------------------------------ These models correspond to polynomials of some degree. Of course, lmfit is a very inefficient way to do linear regression (see :func:`numpy.polyfit` or :func:`scipy.stats.linregress`), but these models may be useful as one of many components of composite model. :class:`ConstantModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: ConstantModel(missing=None[, prefix=''[, name=None[, **kws]]]) a class that consists of a single value, ``c``. This is constant in the sense of having no dependence on the independent variable ``x``, not in the sense of being non-varying. To be clear, ``c`` will be a variable Parameter. :class:`LinearModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: LinearModel(missing=None[, prefix=''[, name=None[, **kws]]]) a class that gives a linear model: .. math:: f(x; m, b) = m x + b with parameters ``slope`` for :math:`m` and ``intercept`` for :math:`b`. :class:`QuadraticModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: QuadraticModel(missing=None[, prefix=''[, name=None[, **kws]]]) a class that gives a quadratic model: .. math:: f(x; a, b, c) = a x^2 + b x + c with parameters ``a``, ``b``, and ``c``. :class:`ParabolicModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: ParabolicModel(missing=None[, prefix=''[, name=None[, **kws]]]) same as :class:`QuadraticModel`. :class:`PolynomialModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: PolynomialModel(degree, missing=None[, prefix=''[, name=None[, **kws]]]) a class that gives a polynomial model up to ``degree`` (with maximum value of 7). .. math:: f(x; c_0, c_1, \ldots, c_7) = \sum_{i=0, 7} c_i x^i with parameters ``c0``, ``c1``, ..., ``c7``. The supplied ``degree`` will specify how many of these are actual variable parameters. This uses :func:`numpy.polyval` for its calculation of the polynomial. Step-like models ----------------------------------------------- Two models represent step-like functions, and share many characteristics. :class:`StepModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: StepModel(form='linear'[, missing=None[, prefix=''[, name=None[, **kws]]]]) A model based on a Step function, with four choices for functional form. The step function starts with a value 0, and ends with a value of :math:`A` (``amplitude``), rising to :math:`A/2` at :math:`\mu` (``center``), with :math:`\sigma` (``sigma``) setting the characteristic width. The supported functional forms are ``linear`` (the default), ``atan`` or ``arctan`` for an arc-tangent function, ``erf`` for an error function, or ``logistic`` for a `logistic function `_. The forms are .. math:: :nowrap: \begin{eqnarray*} & f(x; A, \mu, \sigma, {\mathrm{form={}'linear{}'}}) & = A \min{[1, \max{(0, \alpha)}]} \\ & f(x; A, \mu, \sigma, {\mathrm{form={}'arctan{}'}}) & = A [1/2 + \arctan{(\alpha)}/{\pi}] \\ & f(x; A, \mu, \sigma, {\mathrm{form={}'erf{}'}}) & = A [1 + {\operatorname{erf}}(\alpha)]/2 \\ & f(x; A, \mu, \sigma, {\mathrm{form={}'logistic{}'}})& = A [1 - \frac{1}{1 + e^{\alpha}} ] \end{eqnarray*} where :math:`\alpha = (x - \mu)/{\sigma}`. :class:`RectangleModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: RectangleModel(form='linear'[, missing=None[, prefix=''[, name=None[, **kws]]]]) A model based on a Step-up and Step-down function of the same form. The same choices for functional form as for :class:`StepModel` are supported, with ``linear`` as the default. The function starts with a value 0, and ends with a value of :math:`A` (``amplitude``), rising to :math:`A/2` at :math:`\mu_1` (``center1``), with :math:`\sigma_1` (``sigma1``) setting the characteristic width. It drops to rising to :math:`A/2` at :math:`\mu_2` (``center2``), with characteristic width :math:`\sigma_2` (``sigma2``). .. math:: :nowrap: \begin{eqnarray*} &f(x; A, \mu, \sigma, {\mathrm{form={}'linear{}'}}) &= A \{ \min{[1, \max{(0, \alpha_1)}]} + \min{[-1, \max{(0, \alpha_2)}]} \} \\ &f(x; A, \mu, \sigma, {\mathrm{form={}'arctan{}'}}) &= A [\arctan{(\alpha_1)} + \arctan{(\alpha_2)}]/{\pi} \\ &f(x; A, \mu, \sigma, {\mathrm{form={}'erf{}'}}) &= A [{\operatorname{erf}}(\alpha_1) + {\operatorname{erf}}(\alpha_2)]/2 \\ &f(x; A, \mu, \sigma, {\mathrm{form={}'logistic{}'}}) &= A [1 - \frac{1}{1 + e^{\alpha_1}} - \frac{1}{1 + e^{\alpha_2}} ] \end{eqnarray*} where :math:`\alpha_1 = (x - \mu_1)/{\sigma_1}` and :math:`\alpha_2 = -(x - \mu_2)/{\sigma_2}`. Exponential and Power law models ----------------------------------------------- :class:`ExponentialModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: ExponentialModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on an `exponential decay function `_. With parameters named ``amplitude`` (:math:`A`), and ``decay`` (:math:`\tau`), this has the form: .. math:: f(x; A, \tau) = A e^{-x/\tau} :class:`PowerLawModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: PowerLawModel(missing=None[, prefix=''[, name=None[, **kws]]]) A model based on a `Power Law `_. With parameters named ``amplitude`` (:math:`A`), and ``exponent`` (:math:`k`), this has the form: .. math:: f(x; A, k) = A x^k User-defined Models ---------------------------- .. _asteval: http://newville.github.io/asteval/ As shown in the previous chapter (:ref:`model_chapter`), it is fairly straightforward to build fitting models from parametrized python functions. The number of model classes listed so far in the present chapter should make it clear that this process is not too difficult. Still, it is sometimes desirable to build models from a user-supplied function. This may be especially true if model-building is built-in to some larger library or application for fitting in which the user may not be able to easily build and use a new model from python code. The :class:`ExpressionModel` allows a model to be built from a user-supplied expression. This uses the `asteval`_ module also used for mathematical constraints as discussed in :ref:`constraints_chapter`. :class:`ExpressionModel` ~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. class:: ExpressionModel(expr, independent_vars=None, init_script=None, **kws) A model using the user-supplied mathematical expression, which can be nearly any valid Python expresion. :param expr: expression use to build model :type expr: string :param independent_vars: list of argument names in expression that are independent variables. :type independent_vars: ``None`` (default) or list of strings for independent variables. :param init_script: python script to run before parsing and evaluating expression. :type init_script: ``None`` (default) or string with other parameters passed to :class:`model.Model`, with the notable exception that :class:`ExpressionModel` does **not** support the `prefix` argument. Since the point of this model is that an arbitrary expression will be supplied, the determination of what are the parameter names for the model happens when the model is created. To do this, the expression is parsed, and all symbol names are found. Names that are already known (there are over 500 function and value names in the asteval namespace, including most python builtins, more than 200 functions inherited from numpy, and more than 20 common lineshapes defined in the :mod:`lineshapes` module) are not converted to parameters. Unrecognized name are expected to be names either of parameters or independent variables. If `independent_vars` is the default value of ``None``, and if the expression contains a variable named `x`, that will be used as the independent variable. Otherwise, `independent_vars` must be given. For example, if one creates an :class:`ExpressionModel` as:: >>> mod = ExpressionModel('off + amp * exp(-x/x0) * sin(x*phase)') The name `exp` will be recognized as the exponent function, so the model will be interpreted to have parameters named `off`, `amp`, `x0` and `phase`. In addition, `x` will be assumed to be the sole independent variable. In general, there is no obvious way to set default parameter values or parameter hints for bounds, so this will have to be handled explicitly. To evaluate this model, you might do the following:: >>> x = numpy.linspace(0, 10, 501) >>> params = mod.make_params(off=0.25, amp=1.0, x0=2.0, phase=0.04) >>> y = mod.eval(params, x=x) While many custom models can be built with a single line expression (especially since the names of the lineshapes like `gaussian`, `lorentzian` and so on, as well as many numpy functions, are available), more complex models will inevitably require multiple line functions. You can include such Python code with the `init_script` argument. The text of this script is evaluated when the model is initialized (and before the actual expression is parsed), so that you can define functions to be used in your expression. As a probably unphysical example, to make a model that is the derivative of a Gaussian function times the logarithm of a Lorentzian function you may could to define this in a script:: >>> script = """ def mycurve(x, amp, cen, sig): loren = lorentzian(x, amplitude=amp, center=cen, sigma=sig) gauss = gaussian(x, amplitude=amp, center=cen, sigma=sig) return log(loren)*gradient(gauss)/gradient(x) """ and then use this with :class:`ExpressionModel` as:: >>> mod = ExpressionModel('mycurve(x, height, mid, wid)', init_script=script, independent_vars=['x']) As above, this will interpret the parameter names to be `height`, `mid`, and `wid`, and build a model that can be used to fit data. Example 1: Fit Peaked data to Gaussian, Lorentzian, and Voigt profiles ------------------------------------------------------------------------ Here, we will fit data to three similar line shapes, in order to decide which might be the better model. We will start with a Gaussian profile, as in the previous chapter, but use the built-in :class:`GaussianModel` instead of one we write ourselves. This is a slightly different version from the one in previous example in that the parameter names are different, and have built-in default values. So, we'll simply use:: from numpy import loadtxt from lmfit.models import GaussianModel data = loadtxt('test_peak.dat') x = data[:, 0] y = data[:, 1] mod = GaussianModel() pars = mod.guess(y, x=x) out = mod.fit(y, pars, x=x) print(out.fit_report(min_correl=0.25)) which prints out the results:: [[Model]] gaussian [[Fit Statistics]] # function evals = 21 # data points = 401 # variables = 3 chi-square = 29.994 reduced chi-square = 0.075 [[Variables]] amplitude: 30.3135571 +/- 0.157126 (0.52%) (init= 29.08159) center: 9.24277049 +/- 0.007374 (0.08%) (init= 9.25) fwhm: 2.90156963 +/- 0.017366 (0.60%) == '2.3548200*sigma' sigma: 1.23218319 +/- 0.007374 (0.60%) (init= 1.35) [[Correlations]] (unreported correlations are < 0.250) C(amplitude, sigma) = 0.577 [We see a few interesting differences from the results of the previous chapter. First, the parameter names are longer. Second, there is a ``fwhm`` parameter, defined as :math:`\sim 2.355\sigma`. And third, the automated initial guesses are pretty good. A plot of the fit shows not such a great fit: .. _figA1: .. image:: _images/models_peak1.png :target: _images/models_peak1.png :width: 48 % .. image:: _images/models_peak2.png :target: _images/models_peak2.png :width: 48 % Fit to peak with Gaussian (left) and Lorentzian (right) models. suggesting that a different peak shape, with longer tails, should be used. Perhaps a Lorentzian would be better? To do this, we simply replace ``GaussianModel`` with ``LorentzianModel`` to get a :class:`LorentzianModel`:: from lmfit.models import LorentzianModel mod = LorentzianModel() pars = mod.guess(y, x=x) out = mod.fit(y, pars, x=x) print(out.fit_report(min_correl=0.25)) Predictably, the first thing we try gives results that are worse:: [[Model]] lorentzian [[Fit Statistics]] # function evals = 25 # data points = 401 # variables = 3 chi-square = 53.754 reduced chi-square = 0.135 [[Variables]] amplitude: 38.9728645 +/- 0.313857 (0.81%) (init= 36.35199) center: 9.24438944 +/- 0.009275 (0.10%) (init= 9.25) fwhm: 2.30969034 +/- 0.026312 (1.14%) == '2.0000000*sigma' sigma: 1.15484517 +/- 0.013156 (1.14%) (init= 1.35) [[Correlations]] (unreported correlations are < 0.250) C(amplitude, sigma) = 0.709 with the plot shown on the right in the figure above. A Voigt model does a better job. Using :class:`VoigtModel`, this is as simple as:: from lmfit.models import VoigtModel mod = VoigtModel() pars = mod.guess(y, x=x) out = mod.fit(y, pars, x=x) print(out.fit_report(min_correl=0.25)) which gives:: [[Model]] voigt [[Fit Statistics]] # function evals = 17 # data points = 401 # variables = 3 chi-square = 14.545 reduced chi-square = 0.037 [[Variables]] amplitude: 35.7554017 +/- 0.138614 (0.39%) (init= 43.62238) center: 9.24411142 +/- 0.005054 (0.05%) (init= 9.25) fwhm: 2.62951718 +/- 0.013269 (0.50%) == '3.6013100*sigma' gamma: 0.73015574 +/- 0.003684 (0.50%) == 'sigma' sigma: 0.73015574 +/- 0.003684 (0.50%) (init= 0.8775) [[Correlations]] (unreported correlations are < 0.250) C(amplitude, sigma) = 0.651 with the much better value for :math:`\chi^2` and the obviously better match to the data as seen in the figure below (left). .. _figA2: .. image:: _images/models_peak3.png :target: _images/models_peak3.png :width: 48 % .. image:: _images/models_peak4.png :target: _images/models_peak4.png :width: 48 % Fit to peak with Voigt model (left) and Voigt model with ``gamma`` varying independently of ``sigma`` (right). The Voigt function has a :math:`\gamma` parameter (``gamma``) that can be distinct from ``sigma``. The default behavior used above constrains ``gamma`` to have exactly the same value as ``sigma``. If we allow these to vary separately, does the fit improve? To do this, we have to change the ``gamma`` parameter from a constrained expression and give it a starting value:: mod = VoigtModel() pars = mod.guess(y, x=x) pars['gamma'].set(value=0.7, vary=True, expr='') out = mod.fit(y, pars, x=x) print(out.fit_report(min_correl=0.25)) which gives:: [[Model]] voigt [[Fit Statistics]] # function evals = 21 # data points = 401 # variables = 4 chi-square = 10.930 reduced chi-square = 0.028 [[Variables]] amplitude: 34.1914716 +/- 0.179468 (0.52%) (init= 43.62238) center: 9.24374845 +/- 0.004419 (0.05%) (init= 9.25) fwhm: 3.22385491 +/- 0.050974 (1.58%) == '3.6013100*sigma' gamma: 0.52540157 +/- 0.018579 (3.54%) (init= 0.7) sigma: 0.89518950 +/- 0.014154 (1.58%) (init= 0.8775) [[Correlations]] (unreported correlations are < 0.250) C(amplitude, gamma) = 0.821 and the fit shown on the right above. Comparing the two fits with the Voigt function, we see that :math:`\chi^2` is definitely improved with a separately varying ``gamma`` parameter. In addition, the two values for ``gamma`` and ``sigma`` differ significantly -- well outside the estimated uncertainties. Even more compelling, reduced :math:`\chi^2` is improved even though a fourth variable has been added to the fit. In the simplest statistical sense, this suggests that ``gamma`` is a significant variable in the model. This example shows how easy it can be to alter and compare fitting models for simple problems. The example is included in the ``doc_peakmodels.py`` file in the examples directory. Example 2: Fit data to a Composite Model with pre-defined models ------------------------------------------------------------------ Here, we repeat the point made at the end of the last chapter that instances of :class:`model.Model` class can be added together to make a *composite model*. By using the large number of built-in models available, it is therefore very simple to build models that contain multiple peaks and various backgrounds. An example of a simple fit to a noisy step function plus a constant: .. literalinclude:: ../examples/doc_stepmodel.py After constructing step-like data, we first create a :class:`StepModel` telling it to use the ``erf`` form (see details above), and a :class:`ConstantModel`. We set initial values, in one case using the data and :meth:`guess` method for the initial step function paramaters, and :meth:`make_params` arguments for the linear component. After making a composite model, we run :meth:`fit` and report the results, which give:: [[Model]] Composite Model: step(prefix='step_',form='erf') linear(prefix='line_') [[Fit Statistics]] # function evals = 49 # data points = 201 # variables = 5 chi-square = 633.465 reduced chi-square = 3.232 [[Variables]] line_intercept: 11.5685248 +/- 0.285611 (2.47%) (init= 10.72406) line_slope: 2.03270159 +/- 0.096041 (4.72%) (init= 0) step_amplitude: 112.270535 +/- 0.674790 (0.60%) (init= 136.3006) step_center: 3.12343845 +/- 0.005370 (0.17%) (init= 2.5) step_sigma: 0.67468813 +/- 0.011336 (1.68%) (init= 1.428571) [[Correlations]] (unreported correlations are < 0.100) C(step_amplitude, step_sigma) = 0.564 C(line_intercept, step_center) = 0.428 C(step_amplitude, step_center) = 0.109 with a plot of .. image:: _images/models_stepfit.png :target: _images/models_stepfit.png :width: 50 % Example 3: Fitting Multiple Peaks -- and using Prefixes ------------------------------------------------------------------ .. _NIST StRD: http://itl.nist.gov/div898/strd/nls/nls_main.shtml As shown above, many of the models have similar parameter names. For composite models, this could lead to a problem of having parameters for different parts of the model having the same name. To overcome this, each :class:`model.Model` can have a ``prefix`` attribute (normally set to a blank string) that will be put at the beginning of each parameter name. To illustrate, we fit one of the classic datasets from the `NIST StRD`_ suite involving a decaying exponential and two gaussians. .. literalinclude:: ../examples/doc_nistgauss.py where we give a separate prefix to each model (they all have an ``amplitude`` parameter). The ``prefix`` values are attached transparently to the models. MN----: Note that the calls to :meth:`make_param` used the bare name, without the prefix. We could have used them, but because we used the individual model ``gauss1`` and ``gauss2``, there was no need. Note also in the example here that we explicitly set bounds on many of the parameter values. The fit results printed out are:: [[Model]] Composite Model: gaussian(prefix='g1_') gaussian(prefix='g2_') exponential(prefix='exp_') [[Fit Statistics]] # function evals = 55 # data points = 250 # variables = 8 chi-square = 1247.528 reduced chi-square = 5.155 [[Variables]] exp_amplitude: 99.0183291 +/- 0.537487 (0.54%) (init= 162.2102) exp_decay: 90.9508788 +/- 1.103104 (1.21%) (init= 93.24905) g1_amplitude: 4257.77384 +/- 42.38354 (1.00%) (init= 2000) g1_center: 107.030955 +/- 0.150068 (0.14%) (init= 105) g1_fwhm: 39.2609205 +/- 0.377907 (0.96%) == '2.3548200*g1_sigma' g1_sigma: 16.6725781 +/- 0.160482 (0.96%) (init= 15) g2_amplitude: 2493.41747 +/- 36.16907 (1.45%) (init= 2000) g2_center: 153.270103 +/- 0.194665 (0.13%) (init= 155) g2_fwhm: 32.5128760 +/- 0.439860 (1.35%) == '2.3548200*g2_sigma' g2_sigma: 13.8069474 +/- 0.186791 (1.35%) (init= 15) [[Correlations]] (unreported correlations are < 0.500) C(g1_amplitude, g1_sigma) = 0.824 C(g2_amplitude, g2_sigma) = 0.815 C(g1_sigma, g2_center) = 0.684 C(g1_amplitude, g2_center) = 0.648 C(g1_center, g2_center) = 0.621 C(g1_center, g1_sigma) = 0.507 We get a very good fit to this challenging problem (described at the NIST site as of average difficulty, but the tests there are generally hard) by applying reasonable initial guesses and putting modest but explicit bounds on the parameter values. This fit is shown on the left: .. _figA3: .. image:: _images/models_nistgauss.png :target: _images/models_nistgauss.png :width: 48 % .. image:: _images/models_nistgauss2.png :target: _images/models_nistgauss2.png :width: 48 % One final point on setting initial values. From looking at the data itself, we can see the two Gaussian peaks are reasonably well separated but do overlap. Furthermore, we can tell that the initial guess for the decaying exponential component was poorly estimated because we used the full data range. We can simplify the initial parameter values by using this, and by defining an :func:`index_of` function to limit the data range. That is, with:: def index_of(arrval, value): "return index of array *at or below* value " if value < min(arrval): return 0 return max(np.where(arrval<=value)[0]) ix1 = index_of(x, 75) ix2 = index_of(x, 135) ix3 = index_of(x, 175) exp_mod.guess(y[:ix1], x=x[:ix1]) gauss1.guess(y[ix1:ix2], x=x[ix1:ix2]) gauss2.guess(y[ix2:ix3], x=x[ix2:ix3]) we can get a better initial estimate, and the fit converges in fewer steps, getting to identical values (to the precision printed out in the report), and without any bounds on parameters at all:: [[Model]] Composite Model: gaussian(prefix='g1_') gaussian(prefix='g2_') exponential(prefix='exp_') [[Fit Statistics]] # function evals = 46 # data points = 250 # variables = 8 chi-square = 1247.528 reduced chi-square = 5.155 [[Variables]] exp_amplitude: 99.0183281 +/- 0.537487 (0.54%) (init= 94.53724) exp_decay: 90.9508863 +/- 1.103105 (1.21%) (init= 111.1985) g1_amplitude: 4257.77321 +/- 42.38338 (1.00%) (init= 2126.432) g1_center: 107.030954 +/- 0.150067 (0.14%) (init= 106.5) g1_fwhm: 39.2609141 +/- 0.377905 (0.96%) == '2.3548200*g1_sigma' g1_sigma: 16.6725754 +/- 0.160481 (0.96%) (init= 14.5) g2_amplitude: 2493.41766 +/- 36.16948 (1.45%) (init= 1878.892) g2_center: 153.270100 +/- 0.194667 (0.13%) (init= 150) g2_fwhm: 32.5128777 +/- 0.439866 (1.35%) == '2.3548200*g2_sigma' g2_sigma: 13.8069481 +/- 0.186794 (1.35%) (init= 15) [[Correlations]] (unreported correlations are < 0.500) C(g1_amplitude, g1_sigma) = 0.824 C(g2_amplitude, g2_sigma) = 0.815 C(g1_sigma, g2_center) = 0.684 C(g1_amplitude, g2_center) = 0.648 C(g1_center, g2_center) = 0.621 C(g1_center, g1_sigma) = 0.507 This example is in the file ``doc_nistgauss2.py`` in the examples folder, and the fit result shown on the right above shows an improved initial estimate of the data. lmfit-0.9.2/doc/constraints.rst0000644000032700003100000001611212603520205017757 0ustar newvillegeocars00000000000000.. _constraints_chapter: ================================= Using Mathematical Constraints ================================= .. _asteval: http://newville.github.io/asteval/ Being able to fix variables to a constant value or place upper and lower bounds on their values can greatly simplify modeling real data. These capabilities are key to lmfit's Parameters. In addition, it is sometimes highly desirable to place mathematical constraints on parameter values. For example, one might want to require that two Gaussian peaks have the same width, or have amplitudes that are constrained to add to some value. Of course, one could rewrite the objective or model function to place such requirements, but this is somewhat error prone, and limits the flexibility so that exploring constraints becomes laborious. To simplify the setting of constraints, Parameters can be assigned a mathematical expression of other Parameters, builtin constants, and builtin mathematical functions that will be used to determine its value. The expressions used for constraints are evaluated using the `asteval`_ module, which uses Python syntax, and evaluates the constraint expressions in a safe and isolated namespace. This approach to mathematical constraints allows one to not have to write a separate model function for two Gaussians where the two ``sigma`` values are forced to be equal, or where amplitudes are related. Instead, one can write a more general two Gaussian model (perhaps using :class:`GaussianModel`) and impose such constraints on the Parameters for a particular fit. Overview =============== Just as one can place bounds on a Parameter, or keep it fixed during the fit, so too can one place mathematical constraints on parameters. The way this is done with lmfit is to write a Parameter as a mathematical expression of the other parameters and a set of pre-defined operators and functions. The constraint expressions are simple Python statements, allowing one to place constraints like:: pars = Parameters() pars.add('frac_curve1', value=0.5, min=0, max=1) pars.add('frac_curve2', expr='1-frac_curve1') as the value of the `frac_curve1` parameter is updated at each step in the fit, the value of `frac_curve2` will be updated so that the two values are constrained to add to 1.0. Of course, such a constraint could be placed in the fitting function, but the use of such constraints allows the end-user to modify the model of a more general-purpose fitting function. Nearly any valid mathematical expression can be used, and a variety of built-in functions are available for flexible modeling. Supported Operators, Functions, and Constants ================================================= The mathematical expressions used to define constrained Parameters need to be valid python expressions. As you'd expect, the operators '+', '-', '*', '/', '**', are supported. In fact, a much more complete set can be used, including Python's bit- and logical operators:: +, -, *, /, **, &, |, ^, <<, >>, %, and, or, ==, >, >=, <, <=, !=, ~, not, is, is not, in, not in The values for `e` (2.7182818...) and `pi` (3.1415926...) are available, as are several supported mathematical and trigonometric function:: abs, acos, acosh, asin, asinh, atan, atan2, atanh, ceil, copysign, cos, cosh, degrees, exp, fabs, factorial, floor, fmod, frexp, fsum, hypot, isinf, isnan, ldexp, log, log10, log1p, max, min, modf, pow, radians, sin, sinh, sqrt, tan, tanh, trunc In addition, all Parameter names will be available in the mathematical expressions. Thus, with parameters for a few peak-like functions:: pars = Parameters() pars.add('amp_1', value=0.5, min=0, max=1) pars.add('cen_1', value=2.2) pars.add('wid_1', value=0.2) The following expression are all valid:: pars.add('amp_2', expr='(2.0 - amp_1**2)') pars.add('cen_2', expr='cen_1 * wid_2 / max(wid_1, 0.001)') pars.add('wid_2', expr='sqrt(pi)*wid_1') In fact, almost any valid Python expression is allowed. A notable example is that Python's 1-line *if expression* is supported:: pars.add('bounded', expr='param_a if test_val/2. > 100 else param_b') which is equivalent to the more familiar:: if test_val/2. > 100: bounded = param_a else: bounded = param_b Using Inequality Constraints ============================== A rather common question about how to set up constraints that use an inequality, say, :math:`x + y \le 10`. This can be done with algebraic constraints by recasting the problem, as :math:`x + y = \delta` and :math:`\delta \le 10`. That is, first, allow :math:`x` to be held by the freely varying parameter `x`. Next, define a parameter `delta` to be variable with a maximum value of 10, and define parameter `y` as `delta - x`:: pars = Parameters() pars.add('x', value = 5, vary=True) pars.add('delta', value = 5, max=10, vary=True) pars.add('y', expr='delta-x') The essential point is that an inequality still implies that a variable (here, `delta`) is needed to describe the constraint. The secondary point is that upper and lower bounds can be used as part of the inequality to make the definitions more convenient. Advanced usage of Expressions in lmfit ============================================= The expression used in a constraint is converted to a Python `Abstract Syntax Tree `_, which is an intermediate version of the expression -- a syntax-checked, partially compiled expression. Among other things, this means that Python's own parser is used to parse and convert the expression into something that can easily be evaluated within Python. It also means that the symbols in the expressions can point to any Python object. In fact, the use of Python's AST allows a nearly full version of Python to be supported, without using Python's built-in :meth:`eval` function. The `asteval`_ module actually supports most Python syntax, including for- and while-loops, conditional expressions, and user-defined functions. There are several unsupported Python constructs, most notably the class statement, so that new classes cannot be created, and the import statement, which helps make the `asteval`_ module safe from malicious use. One important feature of the `asteval`_ module is that you can add domain-specific functions into the it, for later use in constraint expressions. To do this, you would use the :attr:`asteval` attribute of the :class:`Minimizer` class, which contains a complete AST interpreter. The `asteval`_ interpreter uses a flat namespace, implemented as a single dictionary. That means you can preload any Python symbol into the namespace for the constraints:: def mylorentzian(x, amp, cen, wid): "lorentzian function: wid = half-width at half-max" return (amp / (1 + ((x-cen)/wid)**2)) fitter = Minimizer() fitter.asteval.symtable['lorentzian'] = mylorentzian and this :meth:`lorentzian` function can now be used in constraint expressions. lmfit-0.9.2/doc/support.rst0000644000032700003100000000306112603520205017123 0ustar newvillegeocars00000000000000.. _support_chapter: =========================== Getting Help =========================== .. _mailing list: https://groups.google.com/group/lmfit-py .. _github issues: https://github.com/lmfit/lmfit-py/issues If you have questions, comments, or suggestions for LMFIT, please use the `mailing list`_. This provides an on-line conversation that is and archived well and can be searched well with standard web searches. If you find a bug with the code or documentation, use the `github issues`_ Issue tracker to submit a report. If you have an idea for how to solve the problem and are familiar with python and github, submitting a github Pull Request would be greatly appreciated. If you are unsure whether to use the mailing list or the Issue tracker, please start a conversation on the `mailing list`_. That is, the problem you're having may or may not be due to a bug. If it is due to a bug, creating an Issue from the conversation is easy. If it is not a bug, the problem will be discussed and then the Issue will be closed. While one *can* search through closed Issues on github, these are not so easily searched, and the conversation is not easily useful to others later. Starting the conversation on the mailing list with "How do I do this?" or "Why didn't this work?" instead of "This should work and doesn't" is generally preferred, and will better help others with similar questions. Of course, there is not always an obvious way to decide if something is a Question or an Issue, and we will try our best to engage in all discussions. lmfit-0.9.2/doc/parameters.rst0000644000032700003100000002257112603520205017561 0ustar newvillegeocars00000000000000.. _parameters_chapter: ================================================ :class:`Parameter` and :class:`Parameters` ================================================ This chapter describes :class:`Parameter` objects which is the key concept of lmfit. A :class:`Parameter` is the quantity to be optimized in all minimization problems, replacing the plain floating point number used in the optimization routines from :mod:`scipy.optimize`. A :class:`Parameter` has a value that can be varied in the fit or have a fixed value, have upper and/or lower bounds. It can even have a value that is constrained by an algebraic expression of other Parameter values. Since :class:`Parameters` live outside the core optimization routines, they can be used in **all** optimization routines from :mod:`scipy.optimize`. By using :class:`Parameter` objects instead of plain variables, the objective function does not have to be modified to reflect every change of what is varied in the fit. This simplifies the writing of models, allowing general models that describe the phenomenon to be written, and gives the user more flexibility in using and testing variations of that model. Whereas a :class:`Parameter` expands on an individual floating point variable, the optimization methods need an ordered group of floating point variables. In the :mod:`scipy.optimize` routines this is required to be a 1-dimensional numpy ndarray. For lmfit, where each :class:`Parameter` has a name, this is replaced by a :class:`Parameters` class, which works as an ordered dictionary of :class:`Parameter` objects, with a few additional features and methods. That is, while the concept of a :class:`Parameter` is central to lmfit, one normally creates and interacts with a :class:`Parameters` instance that contains many :class:`Parameter` objects. The objective functions you write for lmfit will take an instance of :class:`Parameters` as its first argument. The :class:`Parameter` class ======================================== .. class:: Parameter(name=None[, value=None[, vary=True[, min=None[, max=None[, expr=None]]]]]) create a Parameter object. :param name: parameter name :type name: ``None`` or string -- will be overwritten during fit if ``None``. :param value: the numerical value for the parameter :param vary: whether to vary the parameter or not. :type vary: boolean (``True``/``False``) [default ``True``] :param min: lower bound for value (``None`` = no lower bound). :param max: upper bound for value (``None`` = no upper bound). :param expr: mathematical expression to use to evaluate value during fit. :type expr: ``None`` or string Each of these inputs is turned into an attribute of the same name. After a fit, a Parameter for a fitted variable (that is with ``vary = True``) may have its :attr:`value` attribute to hold the best-fit value. Depending on the success of the fit and fitting algorithm used, it may also have attributes :attr:`stderr` and :attr:`correl`. .. attribute:: stderr the estimated standard error for the best-fit value. .. attribute:: correl a dictionary of the correlation with the other fitted variables in the fit, of the form:: {'decay': 0.404, 'phase': -0.020, 'frequency': 0.102} See :ref:`bounds_chapter` for details on the math used to implement the bounds with :attr:`min` and :attr:`max`. The :attr:`expr` attribute can contain a mathematical expression that will be used to compute the value for the Parameter at each step in the fit. See :ref:`constraints_chapter` for more details and examples of this feature. .. index:: Removing a Constraint Expression .. method:: set(value=None[, vary=None[, min=None[, max=None[, expr=None]]]]) set or update a Parameters value or other attributes. :param name: parameter name :param value: the numerical value for the parameter :param vary: whether to vary the parameter or not. :param min: lower bound for value :param max: upper bound for value :param expr: mathematical expression to use to evaluate value during fit. Each argument of :meth:`set` has a default value of ``None``, and will be set only if the provided value is not ``None``. You can use this to update some Parameter attribute without affecting others, for example:: p1 = Parameter('a', value=2.0) p2 = Parameter('b', value=0.0) p1.set(min=0) p2.set(vary=False) to set a lower bound, or to set a Parameter as have a fixed value. Note that to use this approach to lift a lower or upper bound, doing:: p1.set(min=0) ..... # now lift the lower bound p1.set(min=None) # won't work! lower bound NOT changed won't work -- this will not change the current lower bound. Instead you'll have to use ``np.inf`` to remove a lower or upper bound:: # now lift the lower bound p1.set(min=-np.inf) # will work! Similarly, to clear an expression of a parameter, you need to pass an empty string, not ``None``. You also need to give a value and explicitly tell it to vary:: p3 = Parameter('c', expr='(a+b)/2') p3.set(expr=None) # won't work! expression NOT changed # remove constraint expression p3.set(value=1.0, vary=True, expr='') # will work! parameter now unconstrained The :class:`Parameters` class ======================================== .. class:: Parameters() create a Parameters object. This is little more than a fancy ordered dictionary, with the restrictions that: 1. keys must be valid Python symbol names, so that they can be used in expressions of mathematical constraints. This means the names must match ``[a-z_][a-z0-9_]*`` and cannot be a Python reserved word. 2. values must be valid :class:`Parameter` objects. Two methods are for provided for convenient initialization of a :class:`Parameters`, and one for extracting :class:`Parameter` values into a plain dictionary. .. method:: add(name[, value=None[, vary=True[, min=None[, max=None[, expr=None]]]]]) add a named parameter. This creates a :class:`Parameter` object associated with the key `name`, with optional arguments passed to :class:`Parameter`:: p = Parameters() p.add('myvar', value=1, vary=True) .. method:: add_many(self, paramlist) add a list of named parameters. Each entry must be a tuple with the following entries:: name, value, vary, min, max, expr This method is somewhat rigid and verbose (no default values), but can be useful when initially defining a parameter list so that it looks table-like:: p = Parameters() # (Name, Value, Vary, Min, Max, Expr) p.add_many(('amp1', 10, True, None, None, None), ('cen1', 1.2, True, 0.5, 2.0, None), ('wid1', 0.8, True, 0.1, None, None), ('amp2', 7.5, True, None, None, None), ('cen2', 1.9, True, 1.0, 3.0, None), ('wid2', None, False, None, None, '2*wid1/3')) .. method:: pretty_print(oneline=False) prints a clean representation on the Parameters. If `oneline` is `True`, the result will be printed to a single (long) line. .. method:: valuesdict() return an ordered dictionary of name:value pairs with the Paramater name as the key and Parameter value as value. This is distinct from the :class:`Parameters` itself, as the dictionary values are not :class:`Parameter` objects, just the :attr:`value`. Using :method:`valuesdict` can be a very convenient way to get updated values in a objective function. .. method:: dumps(**kws): return a JSON string representation of the :class:`Parameter` object. This can be saved or used to re-create or re-set parameters, using the :meth:`loads` method. Optional keywords are sent :py:func:`json.dumps`. .. method:: dump(file, **kws): write a JSON representation of the :class:`Parameter` object to a file or file-like object in `file` -- really any object with a :meth:`write` method. Optional keywords are sent :py:func:`json.dumps`. .. method:: loads(sval, **kws): use a JSON string representation of the :class:`Parameter` object in `sval` to set all parameter settins. Optional keywords are sent :py:func:`json.loads`. .. method:: load(file, **kws): read and use a JSON string representation of the :class:`Parameter` object from a file or file-like object in `file` -- really any object with a :meth:`read` method. Optional keywords are sent :py:func:`json.loads`. Simple Example ================== Using :class:`Parameters`` and :func:`minimize` function (discussed in the next chapter) might look like this: .. literalinclude:: ../examples/doc_basic.py Here, the objective function explicitly unpacks each Parameter value. This can be simplified using the :class:`Parameters` :meth:`valuesdict` method, which would make the objective function ``fcn2min`` above look like:: def fcn2min(params, x, data): """ model decaying sine wave, subtract data""" v = params.valuesdict() model = v['amp'] * np.sin(x * v['omega'] + v['shift']) * np.exp(-x*x*v['decay']) return model - data The results are identical, and the difference is a stylistic choice. lmfit-0.9.2/doc/installation.rst0000644000032700003100000000431312603520205020111 0ustar newvillegeocars00000000000000==================================== Downloading and Installation ==================================== .. _lmfit github repository: http://github.com/lmfit/lmfit-py .. _Python Setup Tools: http://pypi.python.org/pypi/setuptools .. _pip: https://pip.pypa.io/ .. _nose: http://nose.readthedocs.org/ Prerequisites ~~~~~~~~~~~~~~~ The lmfit package requires Python, Numpy, and Scipy. Scipy version 0.13 or higher is recommended, but extensive testing on compatibility with various versions of scipy has not been done. Lmfit works with Python 2.7, 3.3 and 3.4. No testing has been done with Python 3.5, but as the package is pure Python, relying only on scipy and numpy, no significant troubles are expected. The `nose`_ framework is required for running the test suite, and IPython and matplotib are recommended. If Pandas is available, it will be used in portions of lmfit. Downloads ~~~~~~~~~~~~~ The latest stable version of lmfit is available from `PyPi `_. Installation ~~~~~~~~~~~~~~~~~ If you have `pip`_ installed, you can install lmfit with:: pip install lmfit or, if you have `Python Setup Tools`_ installed, you install lmfit with:: easy_install -U lmfit or, you can download the source kit, unpack it and install with:: python setup.py install Development Version ~~~~~~~~~~~~~~~~~~~~~~~~ To get the latest development version, use:: git clone http://github.com/lmfit/lmfit-py.git and install using:: python setup.py install Testing ~~~~~~~~~~ A battery of tests scripts that can be run with the `nose`_ testing framework is distributed with lmfit in the ``tests`` folder. These are routinely run on the development version. Running ``nosetests`` should run all of these tests to completion without errors or failures. Many of the examples in this documentation are distributed with lmfit in the ``examples`` folder, and should also run for you. Many of these require Acknowledgements ~~~~~~~~~~~~~~~~~~ .. literalinclude:: ../THANKS.txt License ~~~~~~~~~~~~~ The LMFIT-py code is distribution under the following license: .. literalinclude:: ../LICENSE lmfit-0.9.2/doc/faq.rst0000644000032700003100000000643312603520205016164 0ustar newvillegeocars00000000000000.. _faq_chapter: ==================================== Frequently Asked Questions ==================================== A list of common questions. What's the best way to ask for help or submit a bug report? ================================================================ See :ref:`support_chapter`. Why did my script break when upgrading from lmfit 0.8.3 to 0.9.0? ==================================================================== See :ref:`whatsnew_090_label` I get import errors from IPython ============================================================== If you see something like:: from IPython.html.widgets import Dropdown ImportError: No module named 'widgets' then you need to install the ipywidgets package. Try 'pip install ipywidgets'. How can I fit multi-dimensional data? ======================================== The fitting routines accept data arrays that are 1 dimensional and double precision. So you need to convert the data and model (or the value returned by the objective function) to be one dimensional. A simple way to do this is to use numpy's :meth:`numpy.ndarray.flatten`, for example:: def residual(params, x, data=None): .... resid = calculate_multidim_residual() return resid.flatten() How can I fit multiple data sets? ======================================== As above, the fitting routines accept data arrays that are 1 dimensional and double precision. So you need to convert the sets of data and models (or the value returned by the objective function) to be one dimensional. A simple way to do this is to use numpy's :meth:`numpy.concatenate`. As an example, here is a residual function to simultaneously fit two lines to two different arrays. As a bonus, the two lines share the 'offset' parameter: def fit_function(params, x=None, dat1=None, dat2=None): model1 = params['offset'].value + x * params['slope1'].value model2 = params['offset'].value + x * params['slope2'].value resid1 = dat1 - model1 resid2 = dat2 - model2 return numpy.concatenate((resid1, resid2)) How can I fit complex data? =================================== As with working with multidimensional data, you need to convert your data and model (or the value returned by the objective function) to be double precision floating point numbers. One way to do this would be to use a function like this:: def realimag(array): return np.array([(x.real, x.imag) for x in array]).flatten() to convert the complex array into an array of alternating real and imaginary values. You can then use this function on the result returned by your objective function:: def residual(params, x, data=None): .... resid = calculate_complex_residual() return realimag(resid) Can I constrain values to have integer values? =============================================== Basically, no. None of the minimizers in lmfit support integer programming. They all (I think) assume that they can make a very small change to a floating point value for a parameters value and see a change in the value to be minimized. How should I cite LMFIT? ================================== See http://dx.doi.org/10.5281/zenodo.11813 lmfit-0.9.2/doc/bounds.rst0000644000032700003100000000702712603520205016707 0ustar newvillegeocars00000000000000.. _bounds_chapter: ================================= Bounds Implementation ================================= .. _MINPACK-1: http://en.wikipedia.org/wiki/MINPACK .. _MINUIT: http://en.wikipedia.org/wiki/MINUIT .. _leastsqbound: https://github.com/jjhelmus/leastsqbound-scipy This section describes the implementation of :class:`Parameter` bounds. The `MINPACK-1`_ implementation used in :func:`scipy.optimize.leastsq` for the Levenberg-Marquardt algorithm does not explicitly support bounds on parameters, and expects to be able to fully explore the available range of values for any Parameter. Simply placing hard constraints (that is, resetting the value when it exceeds the desired bounds) prevents the algorithm from determining the partial derivatives, and leads to unstable results. Instead of placing such hard constraints, bounded parameters are mathematically transformed using the formulation devised (and documented) for `MINUIT`_. This is implemented following (and borrowing heavily from) the `leastsqbound`_ from J. J. Helmus. Parameter values are mapped from internally used, freely variable values :math:`P_{\rm internal}` to bounded parameters :math:`P_{\rm bounded}`. When both ``min`` and ``max`` bounds are specified, the mapping is .. math:: :nowrap: \begin{eqnarray*} P_{\rm internal} &=& \arcsin\big(\frac{2 (P_{\rm bounded} - {\rm min})}{({\rm max} - {\rm min})} - 1\big) \\ P_{\rm bounded} &=& {\rm min} + \big(\sin(P_{\rm internal}) + 1\big) \frac{({\rm max} - {\rm min})}{2} \end{eqnarray*} With only an upper limit ``max`` supplied, but ``min`` left unbounded, the mapping is: .. math:: :nowrap: \begin{eqnarray*} P_{\rm internal} &=& \sqrt{({\rm max} - P_{\rm bounded} + 1)^2 - 1} \\ P_{\rm bounded} &=& {\rm max} + 1 - \sqrt{P_{\rm internal}^2 + 1} \end{eqnarray*} With only a lower limit ``min`` supplied, but ``max`` left unbounded, the mapping is: .. math:: :nowrap: \begin{eqnarray*} P_{\rm internal} &=& \sqrt{(P_{\rm bounded} - {\rm min} + 1)^2 - 1} \\ P_{\rm bounded} &=& {\rm min} - 1 + \sqrt{P_{\rm internal}^2 + 1} \end{eqnarray*} With these mappings, the value for the bounded Parameter cannot exceed the specified bounds, though the internally varied value can be freely varied. It bears repeating that code from `leastsqbound`_ was adopted to implement the transformation described above. The challenging part (Thanks again to Jonathan J. Helmus!) here is to re-transform the covariance matrix so that the uncertainties can be estimated for bounded Parameters. This is included by using the derivate :math:`dP_{\rm internal}/dP_{\rm bounded}` from the equations above to re-scale the Jacobin matrix before constructing the covariance matrix from it. Tests show that this re-scaling of the covariance matrix works quite well, and that uncertainties estimated for bounded are quite reasonable. Of course, if the best fit value is very close to a boundary, the derivative estimated uncertainty and correlations for that parameter may not be reliable. The `MINUIT`_ documentation recommends caution in using bounds. Setting bounds can certainly increase the number of function evaluations (and so computation time), and in some cases may cause some instabilities, as the range of acceptable parameter values is not fully explored. On the other hand, preliminary tests suggest that using ``max`` and ``min`` to set clearly outlandish bounds does not greatly affect performance or results. lmfit-0.9.2/doc/whatsnew.rst0000644000032700003100000000775212603520205017262 0ustar newvillegeocars00000000000000.. _whatsnew_chapter: ===================== Release Notes ===================== .. _lmfit github repository: http://github.com/lmfit/lmfit-py This section discusses changes between versions, especially significant changes to the use and behavior of the library. This is not meant to be a comprehensive list of changes. For such a complete record, consult the `lmfit github repository`_. .. _whatsnew_090_label: Version 0.9.0 Release Notes ========================================== This upgrade makes an important, non-backward-compatible change to the way many fitting scripts and programs will work. Scripts that work with version 0.8.3 will not work with version 0.9.0 and vice versa. The change was not made lightly or without ample discussion, and is really an improvement. Modifying scripts that did work with 0.8.3 to work with 0.9.0 is easy, but needs to be done. Summary ~~~~~~~~~~~~ The upgrade from 0.8.3 to 0.9.0 introduced the :class:`MinimizerResult` class (see :ref:`fit-results-label`) which is now used to hold the return value from :func:`minimize` and :meth:`Minimizer.minimize`. This returned object contains many goodness of fit statistics, and holds the optimized parameters from the fit. Importantly, the parameters passed into :func:`minimize` and :meth:`Minimizer.minimize` are no longer modified by the fit. Instead, a copy of the passed-in parameters is made which is changed and returns as the :attr:`params` attribute of the returned :class:`MinimizerResult`. Impact ~~~~~~~~~~~~~ This upgrade means that a script that does:: my_pars = Parameters() my_pars.add('amp', value=300.0, min=0) my_pars.add('center', value= 5.0, min=0, max=10) my_pars.add('decay', value= 1.0, vary=False) result = minimize(objfunc, my_pars) will still work, but that ``my_pars`` will **NOT** be changed by the fit. Instead, ``my_pars`` is copied to an internal set of parameters that is changed in the fit, and this copy is then put in ``result.params``. To look at fit results, use ``result.params``, not ``my_pars``. This has the effect that ``my_pars`` will still hold the starting parameter values, while all of the results from the fit are held in the ``result`` object returned by :func:`minimize`. If you want to do an initial fit, then refine that fit to, for example, do a pre-fit, then refine that result different fitting method, such as:: result1 = minimize(objfunc, my_pars, method='nelder') result1.params['decay'].vary = True result2 = minimize(objfunc, result1.params, method='leastsq') and have access to all of the starting parameters ``my_pars``, the result of the first fit ``result1``, and the result of the final fit ``result2``. Discussion ~~~~~~~~~~~~~~ The main goal for making this change were to 1. give a better return value to :func:`minimize` and :meth:`Minimizer.minimize` that can hold all of the information about a fit. By having the return value be an instance of the :class:`MinimizerResult` class, it can hold an arbitrary amount of information that is easily accessed by attribute name, and even be given methods. Using objects is good! 2. To limit or even elimate the amount of "state information" a :class:`Minimizer` holds. By state information, we mean how much of the previous fit is remembered after a fit is done. Keeping (and especially using) such information about a previous fit means that a :class:`Minimizer` might give different results even for the same problem if run a second time. While it's desirable to be able to adjust a set of :class:`Parameters` re-run a fit to get an improved result, doing this by changing an *internal attribute (:attr:`Minimizer.params`) has the undesirable side-effect of not being able to "go back", and makes it somewhat cumbersome to keep track of changes made while adjusting parameters and re-running fits. lmfit-0.9.2/requirements.txt0000644000032700003100000000003112603520205017366 0ustar newvillegeocars00000000000000numpy>=1.5 scipy>=0.13 lmfit-0.9.2/NIST_STRD/0000755000032700003100000000000012613717514015535 5ustar newvillegeocars00000000000000lmfit-0.9.2/NIST_STRD/Gauss2.dat0000644000032700003100000002034012603520205017356 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Gauss2 (Gauss2.dat) File Format: ASCII Starting Values (lines 41 to 48) Certified Values (lines 41 to 53) Data (lines 61 to 310) Procedure: Nonlinear Least Squares Regression Description: The data are two slightly-blended Gaussians on a decaying exponential baseline plus normally distributed zero-mean noise with variance = 6.25. Reference: Rust, B., NIST (1996). Data: 1 Response (y) 1 Predictor (x) 250 Observations Lower Level of Difficulty Generated Data Model: Exponential Class 8 Parameters (b1 to b8) y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 ) + b6*exp( -(x-b7)**2 / b8**2 ) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 96.0 98.0 9.9018328406E+01 5.3748766879E-01 b2 = 0.009 0.0105 1.0994945399E-02 1.3335306766E-04 b3 = 103.0 103.0 1.0188022528E+02 5.9217315772E-01 b4 = 106.0 105.0 1.0703095519E+02 1.5006798316E-01 b5 = 18.0 20.0 2.3578584029E+01 2.2695595067E-01 b6 = 72.0 73.0 7.2045589471E+01 6.1721965884E-01 b7 = 151.0 150.0 1.5327010194E+02 1.9466674341E-01 b8 = 18.0 20.0 1.9525972636E+01 2.6416549393E-01 Residual Sum of Squares: 1.2475282092E+03 Residual Standard Deviation: 2.2704790782E+00 Degrees of Freedom: 242 Number of Observations: 250 Data: y x 97.58776 1.000000 97.76344 2.000000 96.56705 3.000000 92.52037 4.000000 91.15097 5.000000 95.21728 6.000000 90.21355 7.000000 89.29235 8.000000 91.51479 9.000000 89.60966 10.000000 86.56187 11.00000 85.55316 12.00000 87.13054 13.00000 85.67940 14.00000 80.04851 15.00000 82.18925 16.00000 87.24081 17.00000 80.79407 18.00000 81.28570 19.00000 81.56940 20.00000 79.22715 21.00000 79.43275 22.00000 77.90195 23.00000 76.75468 24.00000 77.17377 25.00000 74.27348 26.00000 73.11900 27.00000 73.84826 28.00000 72.47870 29.00000 71.92292 30.00000 66.92176 31.00000 67.93835 32.00000 69.56207 33.00000 69.07066 34.00000 66.53983 35.00000 63.87883 36.00000 69.71537 37.00000 63.60588 38.00000 63.37154 39.00000 60.01835 40.00000 62.67481 41.00000 65.80666 42.00000 59.14304 43.00000 56.62951 44.00000 61.21785 45.00000 54.38790 46.00000 62.93443 47.00000 56.65144 48.00000 57.13362 49.00000 58.29689 50.00000 58.91744 51.00000 58.50172 52.00000 55.22885 53.00000 58.30375 54.00000 57.43237 55.00000 51.69407 56.00000 49.93132 57.00000 53.70760 58.00000 55.39712 59.00000 52.89709 60.00000 52.31649 61.00000 53.98720 62.00000 53.54158 63.00000 56.45046 64.00000 51.32276 65.00000 53.11676 66.00000 53.28631 67.00000 49.80555 68.00000 54.69564 69.00000 56.41627 70.00000 54.59362 71.00000 54.38520 72.00000 60.15354 73.00000 59.78773 74.00000 60.49995 75.00000 65.43885 76.00000 60.70001 77.00000 63.71865 78.00000 67.77139 79.00000 64.70934 80.00000 70.78193 81.00000 70.38651 82.00000 77.22359 83.00000 79.52665 84.00000 80.13077 85.00000 85.67823 86.00000 85.20647 87.00000 90.24548 88.00000 93.61953 89.00000 95.86509 90.00000 93.46992 91.00000 105.8137 92.00000 107.8269 93.00000 114.0607 94.00000 115.5019 95.00000 118.5110 96.00000 119.6177 97.00000 122.1940 98.00000 126.9903 99.00000 125.7005 100.00000 123.7447 101.00000 130.6543 102.00000 129.7168 103.00000 131.8240 104.00000 131.8759 105.00000 131.9994 106.0000 132.1221 107.0000 133.4414 108.0000 133.8252 109.0000 133.6695 110.0000 128.2851 111.0000 126.5182 112.0000 124.7550 113.0000 118.4016 114.0000 122.0334 115.0000 115.2059 116.0000 118.7856 117.0000 110.7387 118.0000 110.2003 119.0000 105.17290 120.0000 103.44720 121.0000 94.54280 122.0000 94.40526 123.0000 94.57964 124.0000 88.76605 125.0000 87.28747 126.0000 92.50443 127.0000 86.27997 128.0000 82.44307 129.0000 80.47367 130.0000 78.36608 131.0000 78.74307 132.0000 76.12786 133.0000 79.13108 134.0000 76.76062 135.0000 77.60769 136.0000 77.76633 137.0000 81.28220 138.0000 79.74307 139.0000 81.97964 140.0000 80.02952 141.0000 85.95232 142.0000 85.96838 143.0000 79.94789 144.0000 87.17023 145.0000 90.50992 146.0000 93.23373 147.0000 89.14803 148.0000 93.11492 149.0000 90.34337 150.0000 93.69421 151.0000 95.74256 152.0000 91.85105 153.0000 96.74503 154.0000 87.60996 155.0000 90.47012 156.0000 88.11690 157.0000 85.70673 158.0000 85.01361 159.0000 78.53040 160.0000 81.34148 161.0000 75.19295 162.0000 72.66115 163.0000 69.85504 164.0000 66.29476 165.0000 63.58502 166.0000 58.33847 167.0000 57.50766 168.0000 52.80498 169.0000 50.79319 170.0000 47.03490 171.0000 46.47090 172.0000 43.09016 173.0000 34.11531 174.0000 39.28235 175.0000 32.68386 176.0000 30.44056 177.0000 31.98932 178.0000 23.63330 179.0000 23.69643 180.0000 20.26812 181.0000 19.07074 182.0000 17.59544 183.0000 16.08785 184.0000 18.94267 185.0000 18.61354 186.0000 17.25800 187.0000 16.62285 188.0000 13.48367 189.0000 15.37647 190.0000 13.47208 191.0000 15.96188 192.0000 12.32547 193.0000 16.33880 194.0000 10.438330 195.0000 9.628715 196.0000 13.12268 197.0000 8.772417 198.0000 11.76143 199.0000 12.55020 200.0000 11.33108 201.0000 11.20493 202.0000 7.816916 203.0000 6.800675 204.0000 14.26581 205.0000 10.66285 206.0000 8.911574 207.0000 11.56733 208.0000 11.58207 209.0000 11.59071 210.0000 9.730134 211.0000 11.44237 212.0000 11.22912 213.0000 10.172130 214.0000 12.50905 215.0000 6.201493 216.0000 9.019605 217.0000 10.80607 218.0000 13.09625 219.0000 3.914271 220.0000 9.567886 221.0000 8.038448 222.0000 10.231040 223.0000 9.367410 224.0000 7.695971 225.0000 6.118575 226.0000 8.793207 227.0000 7.796692 228.0000 12.45065 229.0000 10.61601 230.0000 6.001003 231.0000 6.765098 232.0000 8.764653 233.0000 4.586418 234.0000 8.390783 235.0000 7.209202 236.0000 10.012090 237.0000 7.327461 238.0000 6.525136 239.0000 2.840065 240.0000 10.323710 241.0000 4.790035 242.0000 8.376431 243.0000 6.263980 244.0000 2.705892 245.0000 8.362109 246.0000 8.983507 247.0000 3.362469 248.0000 1.182678 249.0000 4.875312 250.0000 lmfit-0.9.2/NIST_STRD/Hahn1.dat0000644000032700003100000002350512603520205017157 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Hahn1 (Hahn1.dat) File Format: ASCII Starting Values (lines 41 to 47) Certified Values (lines 41 to 52) Data (lines 61 to 296) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving the thermal expansion of copper. The response variable is the coefficient of thermal expansion, and the predictor variable is temperature in degrees kelvin. Reference: Hahn, T., NIST (197?). Copper Thermal Expansion Study. Data: 1 Response (y = coefficient of thermal expansion) 1 Predictor (x = temperature, degrees kelvin) 236 Observations Average Level of Difficulty Observed Data Model: Rational Class (cubic/cubic) 7 Parameters (b1 to b7) y = (b1+b2*x+b3*x**2+b4*x**3) / (1+b5*x+b6*x**2+b7*x**3) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 10 1 1.0776351733E+00 1.7070154742E-01 b2 = -1 -0.1 -1.2269296921E-01 1.2000289189E-02 b3 = 0.05 0.005 4.0863750610E-03 2.2508314937E-04 b4 = -0.00001 -0.000001 -1.4262662514E-06 2.7578037666E-07 b5 = -0.05 -0.005 -5.7609940901E-03 2.4712888219E-04 b6 = 0.001 0.0001 2.4053735503E-04 1.0449373768E-05 b7 = -0.000001 -0.0000001 -1.2314450199E-07 1.3027335327E-08 Residual Sum of Squares: 1.5324382854E+00 Residual Standard Deviation: 8.1803852243E-02 Degrees of Freedom: 229 Number of Observations: 236 Data: y x .591E0 24.41E0 1.547E0 34.82E0 2.902E0 44.09E0 2.894E0 45.07E0 4.703E0 54.98E0 6.307E0 65.51E0 7.03E0 70.53E0 7.898E0 75.70E0 9.470E0 89.57E0 9.484E0 91.14E0 10.072E0 96.40E0 10.163E0 97.19E0 11.615E0 114.26E0 12.005E0 120.25E0 12.478E0 127.08E0 12.982E0 133.55E0 12.970E0 133.61E0 13.926E0 158.67E0 14.452E0 172.74E0 14.404E0 171.31E0 15.190E0 202.14E0 15.550E0 220.55E0 15.528E0 221.05E0 15.499E0 221.39E0 16.131E0 250.99E0 16.438E0 268.99E0 16.387E0 271.80E0 16.549E0 271.97E0 16.872E0 321.31E0 16.830E0 321.69E0 16.926E0 330.14E0 16.907E0 333.03E0 16.966E0 333.47E0 17.060E0 340.77E0 17.122E0 345.65E0 17.311E0 373.11E0 17.355E0 373.79E0 17.668E0 411.82E0 17.767E0 419.51E0 17.803E0 421.59E0 17.765E0 422.02E0 17.768E0 422.47E0 17.736E0 422.61E0 17.858E0 441.75E0 17.877E0 447.41E0 17.912E0 448.7E0 18.046E0 472.89E0 18.085E0 476.69E0 18.291E0 522.47E0 18.357E0 522.62E0 18.426E0 524.43E0 18.584E0 546.75E0 18.610E0 549.53E0 18.870E0 575.29E0 18.795E0 576.00E0 19.111E0 625.55E0 .367E0 20.15E0 .796E0 28.78E0 0.892E0 29.57E0 1.903E0 37.41E0 2.150E0 39.12E0 3.697E0 50.24E0 5.870E0 61.38E0 6.421E0 66.25E0 7.422E0 73.42E0 9.944E0 95.52E0 11.023E0 107.32E0 11.87E0 122.04E0 12.786E0 134.03E0 14.067E0 163.19E0 13.974E0 163.48E0 14.462E0 175.70E0 14.464E0 179.86E0 15.381E0 211.27E0 15.483E0 217.78E0 15.59E0 219.14E0 16.075E0 262.52E0 16.347E0 268.01E0 16.181E0 268.62E0 16.915E0 336.25E0 17.003E0 337.23E0 16.978E0 339.33E0 17.756E0 427.38E0 17.808E0 428.58E0 17.868E0 432.68E0 18.481E0 528.99E0 18.486E0 531.08E0 19.090E0 628.34E0 16.062E0 253.24E0 16.337E0 273.13E0 16.345E0 273.66E0 16.388E0 282.10E0 17.159E0 346.62E0 17.116E0 347.19E0 17.164E0 348.78E0 17.123E0 351.18E0 17.979E0 450.10E0 17.974E0 450.35E0 18.007E0 451.92E0 17.993E0 455.56E0 18.523E0 552.22E0 18.669E0 553.56E0 18.617E0 555.74E0 19.371E0 652.59E0 19.330E0 656.20E0 0.080E0 14.13E0 0.248E0 20.41E0 1.089E0 31.30E0 1.418E0 33.84E0 2.278E0 39.70E0 3.624E0 48.83E0 4.574E0 54.50E0 5.556E0 60.41E0 7.267E0 72.77E0 7.695E0 75.25E0 9.136E0 86.84E0 9.959E0 94.88E0 9.957E0 96.40E0 11.600E0 117.37E0 13.138E0 139.08E0 13.564E0 147.73E0 13.871E0 158.63E0 13.994E0 161.84E0 14.947E0 192.11E0 15.473E0 206.76E0 15.379E0 209.07E0 15.455E0 213.32E0 15.908E0 226.44E0 16.114E0 237.12E0 17.071E0 330.90E0 17.135E0 358.72E0 17.282E0 370.77E0 17.368E0 372.72E0 17.483E0 396.24E0 17.764E0 416.59E0 18.185E0 484.02E0 18.271E0 495.47E0 18.236E0 514.78E0 18.237E0 515.65E0 18.523E0 519.47E0 18.627E0 544.47E0 18.665E0 560.11E0 19.086E0 620.77E0 0.214E0 18.97E0 0.943E0 28.93E0 1.429E0 33.91E0 2.241E0 40.03E0 2.951E0 44.66E0 3.782E0 49.87E0 4.757E0 55.16E0 5.602E0 60.90E0 7.169E0 72.08E0 8.920E0 85.15E0 10.055E0 97.06E0 12.035E0 119.63E0 12.861E0 133.27E0 13.436E0 143.84E0 14.167E0 161.91E0 14.755E0 180.67E0 15.168E0 198.44E0 15.651E0 226.86E0 15.746E0 229.65E0 16.216E0 258.27E0 16.445E0 273.77E0 16.965E0 339.15E0 17.121E0 350.13E0 17.206E0 362.75E0 17.250E0 371.03E0 17.339E0 393.32E0 17.793E0 448.53E0 18.123E0 473.78E0 18.49E0 511.12E0 18.566E0 524.70E0 18.645E0 548.75E0 18.706E0 551.64E0 18.924E0 574.02E0 19.1E0 623.86E0 0.375E0 21.46E0 0.471E0 24.33E0 1.504E0 33.43E0 2.204E0 39.22E0 2.813E0 44.18E0 4.765E0 55.02E0 9.835E0 94.33E0 10.040E0 96.44E0 11.946E0 118.82E0 12.596E0 128.48E0 13.303E0 141.94E0 13.922E0 156.92E0 14.440E0 171.65E0 14.951E0 190.00E0 15.627E0 223.26E0 15.639E0 223.88E0 15.814E0 231.50E0 16.315E0 265.05E0 16.334E0 269.44E0 16.430E0 271.78E0 16.423E0 273.46E0 17.024E0 334.61E0 17.009E0 339.79E0 17.165E0 349.52E0 17.134E0 358.18E0 17.349E0 377.98E0 17.576E0 394.77E0 17.848E0 429.66E0 18.090E0 468.22E0 18.276E0 487.27E0 18.404E0 519.54E0 18.519E0 523.03E0 19.133E0 612.99E0 19.074E0 638.59E0 19.239E0 641.36E0 19.280E0 622.05E0 19.101E0 631.50E0 19.398E0 663.97E0 19.252E0 646.9E0 19.89E0 748.29E0 20.007E0 749.21E0 19.929E0 750.14E0 19.268E0 647.04E0 19.324E0 646.89E0 20.049E0 746.9E0 20.107E0 748.43E0 20.062E0 747.35E0 20.065E0 749.27E0 19.286E0 647.61E0 19.972E0 747.78E0 20.088E0 750.51E0 20.743E0 851.37E0 20.83E0 845.97E0 20.935E0 847.54E0 21.035E0 849.93E0 20.93E0 851.61E0 21.074E0 849.75E0 21.085E0 850.98E0 20.935E0 848.23E0 lmfit-0.9.2/NIST_STRD/Thurber.dat0000644000032700003100000000607012603520205017631 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Thurber (Thurber.dat) File Format: ASCII Starting Values (lines 41 to 47) Certified Values (lines 41 to 52) Data (lines 61 to 97) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving semiconductor electron mobility. The response variable is a measure of electron mobility, and the predictor variable is the natural log of the density. Reference: Thurber, R., NIST (197?). Semiconductor electron mobility modeling. Data: 1 Response Variable (y = electron mobility) 1 Predictor Variable (x = log[density]) 37 Observations Higher Level of Difficulty Observed Data Model: Rational Class (cubic/cubic) 7 Parameters (b1 to b7) y = (b1 + b2*x + b3*x**2 + b4*x**3) / (1 + b5*x + b6*x**2 + b7*x**3) + e Starting Values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1000 1300 1.2881396800E+03 4.6647963344E+00 b2 = 1000 1500 1.4910792535E+03 3.9571156086E+01 b3 = 400 500 5.8323836877E+02 2.8698696102E+01 b4 = 40 75 7.5416644291E+01 5.5675370270E+00 b5 = 0.7 1 9.6629502864E-01 3.1333340687E-02 b6 = 0.3 0.4 3.9797285797E-01 1.4984928198E-02 b7 = 0.03 0.05 4.9727297349E-02 6.5842344623E-03 Residual Sum of Squares: 5.6427082397E+03 Residual Standard Deviation: 1.3714600784E+01 Degrees of Freedom: 30 Number of Observations: 37 Data: y x 80.574E0 -3.067E0 84.248E0 -2.981E0 87.264E0 -2.921E0 87.195E0 -2.912E0 89.076E0 -2.840E0 89.608E0 -2.797E0 89.868E0 -2.702E0 90.101E0 -2.699E0 92.405E0 -2.633E0 95.854E0 -2.481E0 100.696E0 -2.363E0 101.060E0 -2.322E0 401.672E0 -1.501E0 390.724E0 -1.460E0 567.534E0 -1.274E0 635.316E0 -1.212E0 733.054E0 -1.100E0 759.087E0 -1.046E0 894.206E0 -0.915E0 990.785E0 -0.714E0 1090.109E0 -0.566E0 1080.914E0 -0.545E0 1122.643E0 -0.400E0 1178.351E0 -0.309E0 1260.531E0 -0.109E0 1273.514E0 -0.103E0 1288.339E0 0.010E0 1327.543E0 0.119E0 1353.863E0 0.377E0 1414.509E0 0.790E0 1425.208E0 0.963E0 1421.384E0 1.006E0 1442.962E0 1.115E0 1464.350E0 1.572E0 1468.705E0 1.841E0 1447.894E0 2.047E0 1457.628E0 2.200E0 lmfit-0.9.2/NIST_STRD/Lanczos2.dat0000644000032700003100000000520112603520205017704 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Lanczos2 (Lanczos2.dat) File Format: ASCII Starting Values (lines 41 to 46) Certified Values (lines 41 to 51) Data (lines 61 to 84) Procedure: Nonlinear Least Squares Regression Description: These data are taken from an example discussed in Lanczos (1956). The data were generated to 6-digits of accuracy using f(x) = 0.0951*exp(-x) + 0.8607*exp(-3*x) + 1.5576*exp(-5*x). Reference: Lanczos, C. (1956). Applied Analysis. Englewood Cliffs, NJ: Prentice Hall, pp. 272-280. Data: 1 Response (y) 1 Predictor (x) 24 Observations Average Level of Difficulty Generated Data Model: Exponential Class 6 Parameters (b1 to b6) y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1.2 0.5 9.6251029939E-02 6.6770575477E-04 b2 = 0.3 0.7 1.0057332849E+00 3.3989646176E-03 b3 = 5.6 3.6 8.6424689056E-01 1.7185846685E-03 b4 = 5.5 4.2 3.0078283915E+00 4.1707005856E-03 b5 = 6.5 4 1.5529016879E+00 2.3744381417E-03 b6 = 7.6 6.3 5.0028798100E+00 1.3958787284E-03 Residual Sum of Squares: 2.2299428125E-11 Residual Standard Deviation: 1.1130395851E-06 Degrees of Freedom: 18 Number of Observations: 24 Data: y x 2.51340E+00 0.00000E+00 2.04433E+00 5.00000E-02 1.66840E+00 1.00000E-01 1.36642E+00 1.50000E-01 1.12323E+00 2.00000E-01 9.26890E-01 2.50000E-01 7.67934E-01 3.00000E-01 6.38878E-01 3.50000E-01 5.33784E-01 4.00000E-01 4.47936E-01 4.50000E-01 3.77585E-01 5.00000E-01 3.19739E-01 5.50000E-01 2.72013E-01 6.00000E-01 2.32497E-01 6.50000E-01 1.99659E-01 7.00000E-01 1.72270E-01 7.50000E-01 1.49341E-01 8.00000E-01 1.30070E-01 8.50000E-01 1.13812E-01 9.00000E-01 1.00042E-01 9.50000E-01 8.83321E-02 1.00000E+00 7.83354E-02 1.05000E+00 6.97669E-02 1.10000E+00 6.23931E-02 1.15000E+00 lmfit-0.9.2/NIST_STRD/DanWood.dat0000644000032700003100000000403112603520205017544 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: DanWood (DanWood.dat) File Format: ASCII Starting Values (lines 41 to 42) Certified Values (lines 41 to 47) Data (lines 61 to 66) Procedure: Nonlinear Least Squares Regression Description: These data and model are described in Daniel and Wood (1980), and originally published in E.S.Keeping, "Introduction to Statistical Inference," Van Nostrand Company, Princeton, NJ, 1962, p. 354. The response variable is energy radieted from a carbon filament lamp per cm**2 per second, and the predictor variable is the absolute temperature of the filament in 1000 degrees Kelvin. Reference: Daniel, C. and F. S. Wood (1980). Fitting Equations to Data, Second Edition. New York, NY: John Wiley and Sons, pp. 428-431. Data: 1 Response Variable (y = energy) 1 Predictor Variable (x = temperature) 6 Observations Lower Level of Difficulty Observed Data Model: Miscellaneous Class 2 Parameters (b1 and b2) y = b1*x**b2 + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1 0.7 7.6886226176E-01 1.8281973860E-02 b2 = 5 4 3.8604055871E+00 5.1726610913E-02 Residual Sum of Squares: 4.3173084083E-03 Residual Standard Deviation: 3.2853114039E-02 Degrees of Freedom: 4 Number of Observations: 6 Data: y x 2.138E0 1.309E0 3.421E0 1.471E0 3.597E0 1.490E0 4.340E0 1.565E0 4.882E0 1.611E0 5.660E0 1.680E0 lmfit-0.9.2/NIST_STRD/Eckerle4.dat0000644000032700003100000000546712603520205017665 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Eckerle4 (Eckerle4.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 95) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving circular interference transmittance. The response variable is transmittance, and the predictor variable is wavelength. Reference: Eckerle, K., NIST (197?). Circular Interference Transmittance Study. Data: 1 Response Variable (y = transmittance) 1 Predictor Variable (x = wavelength) 35 Observations Higher Level of Difficulty Observed Data Model: Exponential Class 3 Parameters (b1 to b3) y = (b1/b2) * exp[-0.5*((x-b3)/b2)**2] + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1 1.5 1.5543827178E+00 1.5408051163E-02 b2 = 10 5 4.0888321754E+00 4.6803020753E-02 b3 = 500 450 4.5154121844E+02 4.6800518816E-02 Residual Sum of Squares: 1.4635887487E-03 Residual Standard Deviation: 6.7629245447E-03 Degrees of Freedom: 32 Number of Observations: 35 Data: y x 0.0001575E0 400.000000E0 0.0001699E0 405.000000E0 0.0002350E0 410.000000E0 0.0003102E0 415.000000E0 0.0004917E0 420.000000E0 0.0008710E0 425.000000E0 0.0017418E0 430.000000E0 0.0046400E0 435.000000E0 0.0065895E0 436.500000E0 0.0097302E0 438.000000E0 0.0149002E0 439.500000E0 0.0237310E0 441.000000E0 0.0401683E0 442.500000E0 0.0712559E0 444.000000E0 0.1264458E0 445.500000E0 0.2073413E0 447.000000E0 0.2902366E0 448.500000E0 0.3445623E0 450.000000E0 0.3698049E0 451.500000E0 0.3668534E0 453.000000E0 0.3106727E0 454.500000E0 0.2078154E0 456.000000E0 0.1164354E0 457.500000E0 0.0616764E0 459.000000E0 0.0337200E0 460.500000E0 0.0194023E0 462.000000E0 0.0117831E0 463.500000E0 0.0074357E0 465.000000E0 0.0022732E0 470.000000E0 0.0008800E0 475.000000E0 0.0004579E0 480.000000E0 0.0002345E0 485.000000E0 0.0001586E0 490.000000E0 0.0001143E0 495.000000E0 0.0000710E0 500.000000E0 lmfit-0.9.2/NIST_STRD/Chwirut2.dat0000644000032700003100000000615212603520205017726 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Chwirut2 (Chwirut2.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 114) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving ultrasonic calibration. The response variable is ultrasonic response, and the predictor variable is metal distance. Reference: Chwirut, D., NIST (197?). Ultrasonic Reference Block Study. Data: 1 Response (y = ultrasonic response) 1 Predictor (x = metal distance) 54 Observations Lower Level of Difficulty Observed Data Model: Exponential Class 3 Parameters (b1 to b3) y = exp(-b1*x)/(b2+b3*x) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 0.1 0.15 1.6657666537E-01 3.8303286810E-02 b2 = 0.01 0.008 5.1653291286E-03 6.6621605126E-04 b3 = 0.02 0.010 1.2150007096E-02 1.5304234767E-03 Residual Sum of Squares: 5.1304802941E+02 Residual Standard Deviation: 3.1717133040E+00 Degrees of Freedom: 51 Number of Observations: 54 Data: y x 92.9000E0 0.500E0 57.1000E0 1.000E0 31.0500E0 1.750E0 11.5875E0 3.750E0 8.0250E0 5.750E0 63.6000E0 0.875E0 21.4000E0 2.250E0 14.2500E0 3.250E0 8.4750E0 5.250E0 63.8000E0 0.750E0 26.8000E0 1.750E0 16.4625E0 2.750E0 7.1250E0 4.750E0 67.3000E0 0.625E0 41.0000E0 1.250E0 21.1500E0 2.250E0 8.1750E0 4.250E0 81.5000E0 .500E0 13.1200E0 3.000E0 59.9000E0 .750E0 14.6200E0 3.000E0 32.9000E0 1.500E0 5.4400E0 6.000E0 12.5600E0 3.000E0 5.4400E0 6.000E0 32.0000E0 1.500E0 13.9500E0 3.000E0 75.8000E0 .500E0 20.0000E0 2.000E0 10.4200E0 4.000E0 59.5000E0 .750E0 21.6700E0 2.000E0 8.5500E0 5.000E0 62.0000E0 .750E0 20.2000E0 2.250E0 7.7600E0 3.750E0 3.7500E0 5.750E0 11.8100E0 3.000E0 54.7000E0 .750E0 23.7000E0 2.500E0 11.5500E0 4.000E0 61.3000E0 .750E0 17.7000E0 2.500E0 8.7400E0 4.000E0 59.2000E0 .750E0 16.3000E0 2.500E0 8.6200E0 4.000E0 81.0000E0 .500E0 4.8700E0 6.000E0 14.6200E0 3.000E0 81.7000E0 .500E0 17.1700E0 2.750E0 81.3000E0 .500E0 28.9000E0 1.750E0 lmfit-0.9.2/NIST_STRD/Misra1d.dat0000644000032700003100000000357712603520205017527 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Misra1d (Misra1d.dat) File Format: ASCII Starting Values (lines 41 to 42) Certified Values (lines 41 to 47) Data (lines 61 to 74) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study regarding dental research in monomolecular adsorption. The response variable is volume, and the predictor variable is pressure. Reference: Misra, D., NIST (1978). Dental Research Monomolecular Adsorption Study. Data: 1 Response (y = volume) 1 Predictor (x = pressure) 14 Observations Average Level of Difficulty Observed Data Model: Miscellaneous Class 2 Parameters (b1 and b2) y = b1*b2*x*((1+b2*x)**(-1)) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 500 450 4.3736970754E+02 3.6489174345E+00 b2 = 0.0001 0.0003 3.0227324449E-04 2.9334354479E-06 Residual Sum of Squares: 5.6419295283E-02 Residual Standard Deviation: 6.8568272111E-02 Degrees of Freedom: 12 Number of Observations: 14 Data: y x 10.07E0 77.6E0 14.73E0 114.9E0 17.94E0 141.1E0 23.93E0 190.8E0 29.61E0 239.9E0 35.18E0 289.0E0 40.02E0 332.8E0 44.82E0 378.4E0 50.76E0 434.8E0 55.05E0 477.3E0 61.01E0 536.8E0 66.40E0 593.1E0 75.47E0 689.1E0 81.78E0 760.0E0 lmfit-0.9.2/NIST_STRD/Gauss1.dat0000644000032700003100000002034112603520205017356 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Gauss1 (Gauss1.dat) File Format: ASCII Starting Values (lines 41 to 48) Certified Values (lines 41 to 53) Data (lines 61 to 310) Procedure: Nonlinear Least Squares Regression Description: The data are two well-separated Gaussians on a decaying exponential baseline plus normally distributed zero-mean noise with variance = 6.25. Reference: Rust, B., NIST (1996). Data: 1 Response (y) 1 Predictor (x) 250 Observations Lower Level of Difficulty Generated Data Model: Exponential Class 8 Parameters (b1 to b8) y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 ) + b6*exp( -(x-b7)**2 / b8**2 ) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 97.0 94.0 9.8778210871E+01 5.7527312730E-01 b2 = 0.009 0.0105 1.0497276517E-02 1.1406289017E-04 b3 = 100.0 99.0 1.0048990633E+02 5.8831775752E-01 b4 = 65.0 63.0 6.7481111276E+01 1.0460593412E-01 b5 = 20.0 25.0 2.3129773360E+01 1.7439951146E-01 b6 = 70.0 71.0 7.1994503004E+01 6.2622793913E-01 b7 = 178.0 180.0 1.7899805021E+02 1.2436988217E-01 b8 = 16.5 20.0 1.8389389025E+01 2.0134312832E-01 Residual Sum of Squares: 1.3158222432E+03 Residual Standard Deviation: 2.3317980180E+00 Degrees of Freedom: 242 Number of Observations: 250 Data: y x 97.62227 1.000000 97.80724 2.000000 96.62247 3.000000 92.59022 4.000000 91.23869 5.000000 95.32704 6.000000 90.35040 7.000000 89.46235 8.000000 91.72520 9.000000 89.86916 10.000000 86.88076 11.00000 85.94360 12.00000 87.60686 13.00000 86.25839 14.00000 80.74976 15.00000 83.03551 16.00000 88.25837 17.00000 82.01316 18.00000 82.74098 19.00000 83.30034 20.00000 81.27850 21.00000 81.85506 22.00000 80.75195 23.00000 80.09573 24.00000 81.07633 25.00000 78.81542 26.00000 78.38596 27.00000 79.93386 28.00000 79.48474 29.00000 79.95942 30.00000 76.10691 31.00000 78.39830 32.00000 81.43060 33.00000 82.48867 34.00000 81.65462 35.00000 80.84323 36.00000 88.68663 37.00000 84.74438 38.00000 86.83934 39.00000 85.97739 40.00000 91.28509 41.00000 97.22411 42.00000 93.51733 43.00000 94.10159 44.00000 101.91760 45.00000 98.43134 46.00000 110.4214 47.00000 107.6628 48.00000 111.7288 49.00000 116.5115 50.00000 120.7609 51.00000 123.9553 52.00000 124.2437 53.00000 130.7996 54.00000 133.2960 55.00000 130.7788 56.00000 132.0565 57.00000 138.6584 58.00000 142.9252 59.00000 142.7215 60.00000 144.1249 61.00000 147.4377 62.00000 148.2647 63.00000 152.0519 64.00000 147.3863 65.00000 149.2074 66.00000 148.9537 67.00000 144.5876 68.00000 148.1226 69.00000 148.0144 70.00000 143.8893 71.00000 140.9088 72.00000 143.4434 73.00000 139.3938 74.00000 135.9878 75.00000 136.3927 76.00000 126.7262 77.00000 124.4487 78.00000 122.8647 79.00000 113.8557 80.00000 113.7037 81.00000 106.8407 82.00000 107.0034 83.00000 102.46290 84.00000 96.09296 85.00000 94.57555 86.00000 86.98824 87.00000 84.90154 88.00000 81.18023 89.00000 76.40117 90.00000 67.09200 91.00000 72.67155 92.00000 68.10848 93.00000 67.99088 94.00000 63.34094 95.00000 60.55253 96.00000 56.18687 97.00000 53.64482 98.00000 53.70307 99.00000 48.07893 100.00000 42.21258 101.00000 45.65181 102.00000 41.69728 103.00000 41.24946 104.00000 39.21349 105.00000 37.71696 106.0000 36.68395 107.0000 37.30393 108.0000 37.43277 109.0000 37.45012 110.0000 32.64648 111.0000 31.84347 112.0000 31.39951 113.0000 26.68912 114.0000 32.25323 115.0000 27.61008 116.0000 33.58649 117.0000 28.10714 118.0000 30.26428 119.0000 28.01648 120.0000 29.11021 121.0000 23.02099 122.0000 25.65091 123.0000 28.50295 124.0000 25.23701 125.0000 26.13828 126.0000 33.53260 127.0000 29.25195 128.0000 27.09847 129.0000 26.52999 130.0000 25.52401 131.0000 26.69218 132.0000 24.55269 133.0000 27.71763 134.0000 25.20297 135.0000 25.61483 136.0000 25.06893 137.0000 27.63930 138.0000 24.94851 139.0000 25.86806 140.0000 22.48183 141.0000 26.90045 142.0000 25.39919 143.0000 17.90614 144.0000 23.76039 145.0000 25.89689 146.0000 27.64231 147.0000 22.86101 148.0000 26.47003 149.0000 23.72888 150.0000 27.54334 151.0000 30.52683 152.0000 28.07261 153.0000 34.92815 154.0000 28.29194 155.0000 34.19161 156.0000 35.41207 157.0000 37.09336 158.0000 40.98330 159.0000 39.53923 160.0000 47.80123 161.0000 47.46305 162.0000 51.04166 163.0000 54.58065 164.0000 57.53001 165.0000 61.42089 166.0000 62.79032 167.0000 68.51455 168.0000 70.23053 169.0000 74.42776 170.0000 76.59911 171.0000 81.62053 172.0000 83.42208 173.0000 79.17451 174.0000 88.56985 175.0000 85.66525 176.0000 86.55502 177.0000 90.65907 178.0000 84.27290 179.0000 85.72220 180.0000 83.10702 181.0000 82.16884 182.0000 80.42568 183.0000 78.15692 184.0000 79.79691 185.0000 77.84378 186.0000 74.50327 187.0000 71.57289 188.0000 65.88031 189.0000 65.01385 190.0000 60.19582 191.0000 59.66726 192.0000 52.95478 193.0000 53.87792 194.0000 44.91274 195.0000 41.09909 196.0000 41.68018 197.0000 34.53379 198.0000 34.86419 199.0000 33.14787 200.0000 29.58864 201.0000 27.29462 202.0000 21.91439 203.0000 19.08159 204.0000 24.90290 205.0000 19.82341 206.0000 16.75551 207.0000 18.24558 208.0000 17.23549 209.0000 16.34934 210.0000 13.71285 211.0000 14.75676 212.0000 13.97169 213.0000 12.42867 214.0000 14.35519 215.0000 7.703309 216.0000 10.234410 217.0000 11.78315 218.0000 13.87768 219.0000 4.535700 220.0000 10.059280 221.0000 8.424824 222.0000 10.533120 223.0000 9.602255 224.0000 7.877514 225.0000 6.258121 226.0000 8.899865 227.0000 7.877754 228.0000 12.51191 229.0000 10.66205 230.0000 6.035400 231.0000 6.790655 232.0000 8.783535 233.0000 4.600288 234.0000 8.400915 235.0000 7.216561 236.0000 10.017410 237.0000 7.331278 238.0000 6.527863 239.0000 2.842001 240.0000 10.325070 241.0000 4.790995 242.0000 8.377101 243.0000 6.264445 244.0000 2.706213 245.0000 8.362329 246.0000 8.983658 247.0000 3.362571 248.0000 1.182746 249.0000 4.875359 250.0000 lmfit-0.9.2/NIST_STRD/BoxBOD.dat0000644000032700003100000000337012603520205017273 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: BoxBOD (BoxBOD.dat) File Format: ASCII Starting Values (lines 41 to 42) Certified Values (lines 41 to 47) Data (lines 61 to 66) Procedure: Nonlinear Least Squares Regression Description: These data are described in detail in Box, Hunter and Hunter (1978). The response variable is biochemical oxygen demand (BOD) in mg/l, and the predictor variable is incubation time in days. Reference: Box, G. P., W. G. Hunter, and J. S. Hunter (1978). Statistics for Experimenters. New York, NY: Wiley, pp. 483-487. Data: 1 Response (y = biochemical oxygen demand) 1 Predictor (x = incubation time) 6 Observations Higher Level of Difficulty Observed Data Model: Exponential Class 2 Parameters (b1 and b2) y = b1*(1-exp[-b2*x]) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1 100 2.1380940889E+02 1.2354515176E+01 b2 = 1 0.75 5.4723748542E-01 1.0455993237E-01 Residual Sum of Squares: 1.1680088766E+03 Residual Standard Deviation: 1.7088072423E+01 Degrees of Freedom: 4 Number of Observations: 6 Data: y x 109 1 149 2 149 3 191 5 213 7 224 10 lmfit-0.9.2/NIST_STRD/Roszman1.dat0000644000032700003100000000501512603520205017726 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Roszman1 (Roszman1.dat) File Format: ASCII Starting Values (lines 41 to 44) Certified Values (lines 41 to 49) Data (lines 61 to 85) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving quantum defects in iodine atoms. The response variable is the number of quantum defects, and the predictor variable is the excited energy state. The argument to the ARCTAN function is in radians. Reference: Roszman, L., NIST (19??). Quantum Defects for Sulfur I Atom. Data: 1 Response (y = quantum defect) 1 Predictor (x = excited state energy) 25 Observations Average Level of Difficulty Observed Data Model: Miscellaneous Class 4 Parameters (b1 to b4) pi = 3.141592653589793238462643383279E0 y = b1 - b2*x - arctan[b3/(x-b4)]/pi + e Starting Values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 0.1 0.2 2.0196866396E-01 1.9172666023E-02 b2 = -0.00001 -0.000005 -6.1953516256E-06 3.2058931691E-06 b3 = 1000 1200 1.2044556708E+03 7.4050983057E+01 b4 = -100 -150 -1.8134269537E+02 4.9573513849E+01 Residual Sum of Squares: 4.9484847331E-04 Residual Standard Deviation: 4.8542984060E-03 Degrees of Freedom: 21 Number of Observations: 25 Data: y x 0.252429 -4868.68 0.252141 -4868.09 0.251809 -4867.41 0.297989 -3375.19 0.296257 -3373.14 0.295319 -3372.03 0.339603 -2473.74 0.337731 -2472.35 0.333820 -2469.45 0.389510 -1894.65 0.386998 -1893.40 0.438864 -1497.24 0.434887 -1495.85 0.427893 -1493.41 0.471568 -1208.68 0.461699 -1206.18 0.461144 -1206.04 0.513532 -997.92 0.506641 -996.61 0.505062 -996.31 0.535648 -834.94 0.533726 -834.66 0.568064 -710.03 0.612886 -530.16 0.624169 -464.17 lmfit-0.9.2/NIST_STRD/Gauss3.dat0000644000032700003100000002034212603520205017361 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Gauss3 (Gauss3.dat) File Format: ASCII Starting Values (lines 41 to 48) Certified Values (lines 41 to 53) Data (lines 61 to 310) Procedure: Nonlinear Least Squares Regression Description: The data are two strongly-blended Gaussians on a decaying exponential baseline plus normally distributed zero-mean noise with variance = 6.25. Reference: Rust, B., NIST (1996). Data: 1 Response (y) 1 Predictor (x) 250 Observations Average Level of Difficulty Generated Data Model: Exponential Class 8 Parameters (b1 to b8) y = b1*exp( -b2*x ) + b3*exp( -(x-b4)**2 / b5**2 ) + b6*exp( -(x-b7)**2 / b8**2 ) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 94.9 96.0 9.8940368970E+01 5.3005192833E-01 b2 = 0.009 0.0096 1.0945879335E-02 1.2554058911E-04 b3 = 90.1 80.0 1.0069553078E+02 8.1256587317E-01 b4 = 113.0 110.0 1.1163619459E+02 3.5317859757E-01 b5 = 20.0 25.0 2.3300500029E+01 3.6584783023E-01 b6 = 73.8 74.0 7.3705031418E+01 1.2091239082E+00 b7 = 140.0 139.0 1.4776164251E+02 4.0488183351E-01 b8 = 20.0 25.0 1.9668221230E+01 3.7806634336E-01 Residual Sum of Squares: 1.2444846360E+03 Residual Standard Deviation: 2.2677077625E+00 Degrees of Freedom: 242 Number of Observations: 250 Data: y x 97.58776 1.000000 97.76344 2.000000 96.56705 3.000000 92.52037 4.000000 91.15097 5.000000 95.21728 6.000000 90.21355 7.000000 89.29235 8.000000 91.51479 9.000000 89.60965 10.000000 86.56187 11.00000 85.55315 12.00000 87.13053 13.00000 85.67938 14.00000 80.04849 15.00000 82.18922 16.00000 87.24078 17.00000 80.79401 18.00000 81.28564 19.00000 81.56932 20.00000 79.22703 21.00000 79.43259 22.00000 77.90174 23.00000 76.75438 24.00000 77.17338 25.00000 74.27296 26.00000 73.11830 27.00000 73.84732 28.00000 72.47746 29.00000 71.92128 30.00000 66.91962 31.00000 67.93554 32.00000 69.55841 33.00000 69.06592 34.00000 66.53371 35.00000 63.87094 36.00000 69.70526 37.00000 63.59295 38.00000 63.35509 39.00000 59.99747 40.00000 62.64843 41.00000 65.77345 42.00000 59.10141 43.00000 56.57750 44.00000 61.15313 45.00000 54.30767 46.00000 62.83535 47.00000 56.52957 48.00000 56.98427 49.00000 58.11459 50.00000 58.69576 51.00000 58.23322 52.00000 54.90490 53.00000 57.91442 54.00000 56.96629 55.00000 51.13831 56.00000 49.27123 57.00000 52.92668 58.00000 54.47693 59.00000 51.81710 60.00000 51.05401 61.00000 52.51731 62.00000 51.83710 63.00000 54.48196 64.00000 49.05859 65.00000 50.52315 66.00000 50.32755 67.00000 46.44419 68.00000 50.89281 69.00000 52.13203 70.00000 49.78741 71.00000 49.01637 72.00000 54.18198 73.00000 53.17456 74.00000 53.20827 75.00000 57.43459 76.00000 51.95282 77.00000 54.20282 78.00000 57.46687 79.00000 53.60268 80.00000 58.86728 81.00000 57.66652 82.00000 63.71034 83.00000 65.24244 84.00000 65.10878 85.00000 69.96313 86.00000 68.85475 87.00000 73.32574 88.00000 76.21241 89.00000 78.06311 90.00000 75.37701 91.00000 87.54449 92.00000 89.50588 93.00000 95.82098 94.00000 97.48390 95.00000 100.86070 96.00000 102.48510 97.00000 105.7311 98.00000 111.3489 99.00000 111.0305 100.00000 110.1920 101.00000 118.3581 102.00000 118.8086 103.00000 122.4249 104.00000 124.0953 105.00000 125.9337 106.0000 127.8533 107.0000 131.0361 108.0000 133.3343 109.0000 135.1278 110.0000 131.7113 111.0000 131.9151 112.0000 132.1107 113.0000 127.6898 114.0000 133.2148 115.0000 128.2296 116.0000 133.5902 117.0000 127.2539 118.0000 128.3482 119.0000 124.8694 120.0000 124.6031 121.0000 117.0648 122.0000 118.1966 123.0000 119.5408 124.0000 114.7946 125.0000 114.2780 126.0000 120.3484 127.0000 114.8647 128.0000 111.6514 129.0000 110.1826 130.0000 108.4461 131.0000 109.0571 132.0000 106.5308 133.0000 109.4691 134.0000 106.8709 135.0000 107.3192 136.0000 106.9000 137.0000 109.6526 138.0000 107.1602 139.0000 108.2509 140.0000 104.96310 141.0000 109.3601 142.0000 107.6696 143.0000 99.77286 144.0000 104.96440 145.0000 106.1376 146.0000 106.5816 147.0000 100.12860 148.0000 101.66910 149.0000 96.44254 150.0000 97.34169 151.0000 96.97412 152.0000 90.73460 153.0000 93.37949 154.0000 82.12331 155.0000 83.01657 156.0000 78.87360 157.0000 74.86971 158.0000 72.79341 159.0000 65.14744 160.0000 67.02127 161.0000 60.16136 162.0000 57.13996 163.0000 54.05769 164.0000 50.42265 165.0000 47.82430 166.0000 42.85748 167.0000 42.45495 168.0000 38.30808 169.0000 36.95794 170.0000 33.94543 171.0000 34.19017 172.0000 31.66097 173.0000 23.56172 174.0000 29.61143 175.0000 23.88765 176.0000 22.49812 177.0000 24.86901 178.0000 17.29481 179.0000 18.09291 180.0000 15.34813 181.0000 14.77997 182.0000 13.87832 183.0000 12.88891 184.0000 16.20763 185.0000 16.29024 186.0000 15.29712 187.0000 14.97839 188.0000 12.11330 189.0000 14.24168 190.0000 12.53824 191.0000 15.19818 192.0000 11.70478 193.0000 15.83745 194.0000 10.035850 195.0000 9.307574 196.0000 12.86800 197.0000 8.571671 198.0000 11.60415 199.0000 12.42772 200.0000 11.23627 201.0000 11.13198 202.0000 7.761117 203.0000 6.758250 204.0000 14.23375 205.0000 10.63876 206.0000 8.893581 207.0000 11.55398 208.0000 11.57221 209.0000 11.58347 210.0000 9.724857 211.0000 11.43854 212.0000 11.22636 213.0000 10.170150 214.0000 12.50765 215.0000 6.200494 216.0000 9.018902 217.0000 10.80557 218.0000 13.09591 219.0000 3.914033 220.0000 9.567723 221.0000 8.038338 222.0000 10.230960 223.0000 9.367358 224.0000 7.695937 225.0000 6.118552 226.0000 8.793192 227.0000 7.796682 228.0000 12.45064 229.0000 10.61601 230.0000 6.001000 231.0000 6.765096 232.0000 8.764652 233.0000 4.586417 234.0000 8.390782 235.0000 7.209201 236.0000 10.012090 237.0000 7.327461 238.0000 6.525136 239.0000 2.840065 240.0000 10.323710 241.0000 4.790035 242.0000 8.376431 243.0000 6.263980 244.0000 2.705892 245.0000 8.362109 246.0000 8.983507 247.0000 3.362469 248.0000 1.182678 249.0000 4.875312 250.0000 lmfit-0.9.2/NIST_STRD/Rat43.dat0000644000032700003100000000417012603520205017112 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Rat43 (Rat43.dat) File Format: ASCII Starting Values (lines 41 to 44) Certified Values (lines 41 to 49) Data (lines 61 to 75) Procedure: Nonlinear Least Squares Regression Description: This model and data are an example of fitting sigmoidal growth curves taken from Ratkowsky (1983). The response variable is the dry weight of onion bulbs and tops, and the predictor variable is growing time. Reference: Ratkowsky, D.A. (1983). Nonlinear Regression Modeling. New York, NY: Marcel Dekker, pp. 62 and 88. Data: 1 Response (y = onion bulb dry weight) 1 Predictor (x = growing time) 15 Observations Higher Level of Difficulty Observed Data Model: Exponential Class 4 Parameters (b1 to b4) y = b1 / ((1+exp[b2-b3*x])**(1/b4)) + e Starting Values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 100 700 6.9964151270E+02 1.6302297817E+01 b2 = 10 5 5.2771253025E+00 2.0828735829E+00 b3 = 1 0.75 7.5962938329E-01 1.9566123451E-01 b4 = 1 1.3 1.2792483859E+00 6.8761936385E-01 Residual Sum of Squares: 8.7864049080E+03 Residual Standard Deviation: 2.8262414662E+01 Degrees of Freedom: 9 Number of Observations: 15 Data: y x 16.08E0 1.0E0 33.83E0 2.0E0 65.80E0 3.0E0 97.20E0 4.0E0 191.55E0 5.0E0 326.20E0 6.0E0 386.87E0 7.0E0 520.53E0 8.0E0 590.03E0 9.0E0 651.92E0 10.0E0 724.93E0 11.0E0 699.56E0 12.0E0 689.96E0 13.0E0 637.56E0 14.0E0 717.41E0 15.0E0 lmfit-0.9.2/NIST_STRD/ENSO.dat0000644000032700003100000001552612603520205016770 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: ENSO (ENSO.dat) File Format: ASCII Starting Values (lines 41 to 49) Certified Values (lines 41 to 54) Data (lines 61 to 228) Procedure: Nonlinear Least Squares Regression Description: The data are monthly averaged atmospheric pressure differences between Easter Island and Darwin, Australia. This difference drives the trade winds in the southern hemisphere. Fourier analysis of the data reveals 3 significant cycles. The annual cycle is the strongest, but cycles with periods of approximately 44 and 26 months are also present. These cycles correspond to the El Nino and the Southern Oscillation. Arguments to the SIN and COS functions are in radians. Reference: Kahaner, D., C. Moler, and S. Nash, (1989). Numerical Methods and Software. Englewood Cliffs, NJ: Prentice Hall, pp. 441-445. Data: 1 Response (y = atmospheric pressure) 1 Predictor (x = time) 168 Observations Average Level of Difficulty Observed Data Model: Miscellaneous Class 9 Parameters (b1 to b9) y = b1 + b2*cos( 2*pi*x/12 ) + b3*sin( 2*pi*x/12 ) + b5*cos( 2*pi*x/b4 ) + b6*sin( 2*pi*x/b4 ) + b8*cos( 2*pi*x/b7 ) + b9*sin( 2*pi*x/b7 ) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 11.0 10.0 1.0510749193E+01 1.7488832467E-01 b2 = 3.0 3.0 3.0762128085E+00 2.4310052139E-01 b3 = 0.5 0.5 5.3280138227E-01 2.4354686618E-01 b4 = 40.0 44.0 4.4311088700E+01 9.4408025976E-01 b5 = -0.7 -1.5 -1.6231428586E+00 2.8078369611E-01 b6 = -1.3 0.5 5.2554493756E-01 4.8073701119E-01 b7 = 25.0 26.0 2.6887614440E+01 4.1612939130E-01 b8 = -0.3 -0.1 2.1232288488E-01 5.1460022911E-01 b9 = 1.4 1.5 1.4966870418E+00 2.5434468893E-01 Residual Sum of Squares: 7.8853978668E+02 Residual Standard Deviation: 2.2269642403E+00 Degrees of Freedom: 159 Number of Observations: 168 Data: y x 12.90000 1.000000 11.30000 2.000000 10.60000 3.000000 11.20000 4.000000 10.90000 5.000000 7.500000 6.000000 7.700000 7.000000 11.70000 8.000000 12.90000 9.000000 14.30000 10.000000 10.90000 11.00000 13.70000 12.00000 17.10000 13.00000 14.00000 14.00000 15.30000 15.00000 8.500000 16.00000 5.700000 17.00000 5.500000 18.00000 7.600000 19.00000 8.600000 20.00000 7.300000 21.00000 7.600000 22.00000 12.70000 23.00000 11.00000 24.00000 12.70000 25.00000 12.90000 26.00000 13.00000 27.00000 10.90000 28.00000 10.400000 29.00000 10.200000 30.00000 8.000000 31.00000 10.90000 32.00000 13.60000 33.00000 10.500000 34.00000 9.200000 35.00000 12.40000 36.00000 12.70000 37.00000 13.30000 38.00000 10.100000 39.00000 7.800000 40.00000 4.800000 41.00000 3.000000 42.00000 2.500000 43.00000 6.300000 44.00000 9.700000 45.00000 11.60000 46.00000 8.600000 47.00000 12.40000 48.00000 10.500000 49.00000 13.30000 50.00000 10.400000 51.00000 8.100000 52.00000 3.700000 53.00000 10.70000 54.00000 5.100000 55.00000 10.400000 56.00000 10.90000 57.00000 11.70000 58.00000 11.40000 59.00000 13.70000 60.00000 14.10000 61.00000 14.00000 62.00000 12.50000 63.00000 6.300000 64.00000 9.600000 65.00000 11.70000 66.00000 5.000000 67.00000 10.80000 68.00000 12.70000 69.00000 10.80000 70.00000 11.80000 71.00000 12.60000 72.00000 15.70000 73.00000 12.60000 74.00000 14.80000 75.00000 7.800000 76.00000 7.100000 77.00000 11.20000 78.00000 8.100000 79.00000 6.400000 80.00000 5.200000 81.00000 12.00000 82.00000 10.200000 83.00000 12.70000 84.00000 10.200000 85.00000 14.70000 86.00000 12.20000 87.00000 7.100000 88.00000 5.700000 89.00000 6.700000 90.00000 3.900000 91.00000 8.500000 92.00000 8.300000 93.00000 10.80000 94.00000 16.70000 95.00000 12.60000 96.00000 12.50000 97.00000 12.50000 98.00000 9.800000 99.00000 7.200000 100.00000 4.100000 101.00000 10.60000 102.00000 10.100000 103.00000 10.100000 104.00000 11.90000 105.00000 13.60000 106.0000 16.30000 107.0000 17.60000 108.0000 15.50000 109.0000 16.00000 110.0000 15.20000 111.0000 11.20000 112.0000 14.30000 113.0000 14.50000 114.0000 8.500000 115.0000 12.00000 116.0000 12.70000 117.0000 11.30000 118.0000 14.50000 119.0000 15.10000 120.0000 10.400000 121.0000 11.50000 122.0000 13.40000 123.0000 7.500000 124.0000 0.6000000 125.0000 0.3000000 126.0000 5.500000 127.0000 5.000000 128.0000 4.600000 129.0000 8.200000 130.0000 9.900000 131.0000 9.200000 132.0000 12.50000 133.0000 10.90000 134.0000 9.900000 135.0000 8.900000 136.0000 7.600000 137.0000 9.500000 138.0000 8.400000 139.0000 10.70000 140.0000 13.60000 141.0000 13.70000 142.0000 13.70000 143.0000 16.50000 144.0000 16.80000 145.0000 17.10000 146.0000 15.40000 147.0000 9.500000 148.0000 6.100000 149.0000 10.100000 150.0000 9.300000 151.0000 5.300000 152.0000 11.20000 153.0000 16.60000 154.0000 15.60000 155.0000 12.00000 156.0000 11.50000 157.0000 8.600000 158.0000 13.80000 159.0000 8.700000 160.0000 8.600000 161.0000 8.600000 162.0000 8.700000 163.0000 12.80000 164.0000 13.20000 165.0000 14.00000 166.0000 13.40000 167.0000 14.80000 168.0000 lmfit-0.9.2/NIST_STRD/Rat42.dat0000644000032700003100000000363112603520205017112 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Rat42 (Rat42.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 69) Procedure: Nonlinear Least Squares Regression Description: This model and data are an example of fitting sigmoidal growth curves taken from Ratkowsky (1983). The response variable is pasture yield, and the predictor variable is growing time. Reference: Ratkowsky, D.A. (1983). Nonlinear Regression Modeling. New York, NY: Marcel Dekker, pp. 61 and 88. Data: 1 Response (y = pasture yield) 1 Predictor (x = growing time) 9 Observations Higher Level of Difficulty Observed Data Model: Exponential Class 3 Parameters (b1 to b3) y = b1 / (1+exp[b2-b3*x]) + e Starting Values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 100 75 7.2462237576E+01 1.7340283401E+00 b2 = 1 2.5 2.6180768402E+00 8.8295217536E-02 b3 = 0.1 0.07 6.7359200066E-02 3.4465663377E-03 Residual Sum of Squares: 8.0565229338E+00 Residual Standard Deviation: 1.1587725499E+00 Degrees of Freedom: 6 Number of Observations: 9 Data: y x 8.930E0 9.000E0 10.800E0 14.000E0 18.590E0 21.000E0 22.330E0 28.000E0 39.350E0 42.000E0 56.110E0 57.000E0 61.730E0 63.000E0 64.620E0 70.000E0 67.080E0 79.000E0 lmfit-0.9.2/NIST_STRD/Misra1b.dat0000644000032700003100000000360412603520205017514 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Misra1b (Misra1b.dat) File Format: ASCII Starting Values (lines 41 to 42) Certified Values (lines 41 to 47) Data (lines 61 to 74) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study regarding dental research in monomolecular adsorption. The response variable is volume, and the predictor variable is pressure. Reference: Misra, D., NIST (1978). Dental Research Monomolecular Adsorption Study. Data: 1 Response (y = volume) 1 Predictor (x = pressure) 14 Observations Lower Level of Difficulty Observed Data Model: Miscellaneous Class 2 Parameters (b1 and b2) y = b1 * (1-(1+b2*x/2)**(-2)) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 500 300 3.3799746163E+02 3.1643950207E+00 b2 = 0.0001 0.0002 3.9039091287E-04 4.2547321834E-06 Residual Sum of Squares: 7.5464681533E-02 Residual Standard Deviation: 7.9301471998E-02 Degrees of Freedom: 12 Number of Observations: 14 Data: y x 10.07E0 77.6E0 14.73E0 114.9E0 17.94E0 141.1E0 23.93E0 190.8E0 29.61E0 239.9E0 35.18E0 289.0E0 40.02E0 332.8E0 44.82E0 378.4E0 50.76E0 434.8E0 55.05E0 477.3E0 61.01E0 536.8E0 66.40E0 593.1E0 75.47E0 689.1E0 81.78E0 760.0E0 lmfit-0.9.2/NIST_STRD/MGH09.dat0000644000032700003100000000453112603520205017002 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: MGH09 (MGH09.dat) File Format: ASCII Starting Values (lines 41 to 44) Certified Values (lines 41 to 49) Data (lines 61 to 71) Procedure: Nonlinear Least Squares Regression Description: This problem was found to be difficult for some very good algorithms. There is a local minimum at (+inf, -14.07..., -inf, -inf) with final sum of squares 0.00102734.... See More, J. J., Garbow, B. S., and Hillstrom, K. E. (1981). Testing unconstrained optimization software. ACM Transactions on Mathematical Software. 7(1): pp. 17-41. Reference: Kowalik, J.S., and M. R. Osborne, (1978). Methods for Unconstrained Optimization Problems. New York, NY: Elsevier North-Holland. Data: 1 Response (y) 1 Predictor (x) 11 Observations Higher Level of Difficulty Generated Data Model: Rational Class (linear/quadratic) 4 Parameters (b1 to b4) y = b1*(x**2+x*b2) / (x**2+x*b3+b4) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 25 0.25 1.9280693458E-01 1.1435312227E-02 b2 = 39 0.39 1.9128232873E-01 1.9633220911E-01 b3 = 41.5 0.415 1.2305650693E-01 8.0842031232E-02 b4 = 39 0.39 1.3606233068E-01 9.0025542308E-02 Residual Sum of Squares: 3.0750560385E-04 Residual Standard Deviation: 6.6279236551E-03 Degrees of Freedom: 7 Number of Observations: 11 Data: y x 1.957000E-01 4.000000E+00 1.947000E-01 2.000000E+00 1.735000E-01 1.000000E+00 1.600000E-01 5.000000E-01 8.440000E-02 2.500000E-01 6.270000E-02 1.670000E-01 4.560000E-02 1.250000E-01 3.420000E-02 1.000000E-01 3.230000E-02 8.330000E-02 2.350000E-02 7.140000E-02 2.460000E-02 6.250000E-02 lmfit-0.9.2/NIST_STRD/Misra1c.dat0000644000032700003100000000361412603520205017516 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Misra1c (Misra1c.dat) File Format: ASCII Starting Values (lines 41 to 42) Certified Values (lines 41 to 47) Data (lines 61 to 74) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study regarding dental research in monomolecular adsorption. The response variable is volume, and the predictor variable is pressure. Reference: Misra, D., NIST (1978). Dental Research Monomolecular Adsorption. Data: 1 Response (y = volume) 1 Predictor (x = pressure) 14 Observations Average Level of Difficulty Observed Data Model: Miscellaneous Class 2 Parameters (b1 and b2) y = b1 * (1-(1+2*b2*x)**(-.5)) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 500 600 6.3642725809E+02 4.6638326572E+00 b2 = 0.0001 0.0002 2.0813627256E-04 1.7728423155E-06 Residual Sum of Squares: 4.0966836971E-02 Residual Standard Deviation: 5.8428615257E-02 Degrees of Freedom: 12 Number of Observations: 14 Data: y x 10.07E0 77.6E0 14.73E0 114.9E0 17.94E0 141.1E0 23.93E0 190.8E0 29.61E0 239.9E0 35.18E0 289.0E0 40.02E0 332.8E0 44.82E0 378.4E0 50.76E0 434.8E0 55.05E0 477.3E0 61.01E0 536.8E0 66.40E0 593.1E0 75.47E0 689.1E0 81.78E0 760.0E0 lmfit-0.9.2/NIST_STRD/Kirby2.dat0000644000032700003100000001367112603520205017365 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Kirby2 (Kirby2.dat) File Format: ASCII Starting Values (lines 41 to 45) Certified Values (lines 41 to 50) Data (lines 61 to 211) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving scanning electron microscope line with standards. Reference: Kirby, R., NIST (197?). Scanning electron microscope line width standards. Data: 1 Response (y) 1 Predictor (x) 151 Observations Average Level of Difficulty Observed Data Model: Rational Class (quadratic/quadratic) 5 Parameters (b1 to b5) y = (b1 + b2*x + b3*x**2) / (1 + b4*x + b5*x**2) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 2 1.5 1.6745063063E+00 8.7989634338E-02 b2 = -0.1 -0.15 -1.3927397867E-01 4.1182041386E-03 b3 = 0.003 0.0025 2.5961181191E-03 4.1856520458E-05 b4 = -0.001 -0.0015 -1.7241811870E-03 5.8931897355E-05 b5 = 0.00001 0.00002 2.1664802578E-05 2.0129761919E-07 Residual Sum of Squares: 3.9050739624E+00 Residual Standard Deviation: 1.6354535131E-01 Degrees of Freedom: 146 Number of Observations: 151 Data: y x 0.0082E0 9.65E0 0.0112E0 10.74E0 0.0149E0 11.81E0 0.0198E0 12.88E0 0.0248E0 14.06E0 0.0324E0 15.28E0 0.0420E0 16.63E0 0.0549E0 18.19E0 0.0719E0 19.88E0 0.0963E0 21.84E0 0.1291E0 24.00E0 0.1710E0 26.25E0 0.2314E0 28.86E0 0.3227E0 31.85E0 0.4809E0 35.79E0 0.7084E0 40.18E0 1.0220E0 44.74E0 1.4580E0 49.53E0 1.9520E0 53.94E0 2.5410E0 58.29E0 3.2230E0 62.63E0 3.9990E0 67.03E0 4.8520E0 71.25E0 5.7320E0 75.22E0 6.7270E0 79.33E0 7.8350E0 83.56E0 9.0250E0 87.75E0 10.2670E0 91.93E0 11.5780E0 96.10E0 12.9440E0 100.28E0 14.3770E0 104.46E0 15.8560E0 108.66E0 17.3310E0 112.71E0 18.8850E0 116.88E0 20.5750E0 121.33E0 22.3200E0 125.79E0 22.3030E0 125.79E0 23.4600E0 128.74E0 24.0600E0 130.27E0 25.2720E0 133.33E0 25.8530E0 134.79E0 27.1100E0 137.93E0 27.6580E0 139.33E0 28.9240E0 142.46E0 29.5110E0 143.90E0 30.7100E0 146.91E0 31.3500E0 148.51E0 32.5200E0 151.41E0 33.2300E0 153.17E0 34.3300E0 155.97E0 35.0600E0 157.76E0 36.1700E0 160.56E0 36.8400E0 162.30E0 38.0100E0 165.21E0 38.6700E0 166.90E0 39.8700E0 169.92E0 40.0300E0 170.32E0 40.5000E0 171.54E0 41.3700E0 173.79E0 41.6700E0 174.57E0 42.3100E0 176.25E0 42.7300E0 177.34E0 43.4600E0 179.19E0 44.1400E0 181.02E0 44.5500E0 182.08E0 45.2200E0 183.88E0 45.9200E0 185.75E0 46.3000E0 186.80E0 47.0000E0 188.63E0 47.6800E0 190.45E0 48.0600E0 191.48E0 48.7400E0 193.35E0 49.4100E0 195.22E0 49.7600E0 196.23E0 50.4300E0 198.05E0 51.1100E0 199.97E0 51.5000E0 201.06E0 52.1200E0 202.83E0 52.7600E0 204.69E0 53.1800E0 205.86E0 53.7800E0 207.58E0 54.4600E0 209.50E0 54.8300E0 210.65E0 55.4000E0 212.33E0 56.4300E0 215.43E0 57.0300E0 217.16E0 58.0000E0 220.21E0 58.6100E0 221.98E0 59.5800E0 225.06E0 60.1100E0 226.79E0 61.1000E0 229.92E0 61.6500E0 231.69E0 62.5900E0 234.77E0 63.1200E0 236.60E0 64.0300E0 239.63E0 64.6200E0 241.50E0 65.4900E0 244.48E0 66.0300E0 246.40E0 66.8900E0 249.35E0 67.4200E0 251.32E0 68.2300E0 254.22E0 68.7700E0 256.24E0 69.5900E0 259.11E0 70.1100E0 261.18E0 70.8600E0 264.02E0 71.4300E0 266.13E0 72.1600E0 268.94E0 72.7000E0 271.09E0 73.4000E0 273.87E0 73.9300E0 276.08E0 74.6000E0 278.83E0 75.1600E0 281.08E0 75.8200E0 283.81E0 76.3400E0 286.11E0 76.9800E0 288.81E0 77.4800E0 291.08E0 78.0800E0 293.75E0 78.6000E0 295.99E0 79.1700E0 298.64E0 79.6200E0 300.84E0 79.8800E0 302.02E0 80.1900E0 303.48E0 80.6600E0 305.65E0 81.2200E0 308.27E0 81.6600E0 310.41E0 82.1600E0 313.01E0 82.5900E0 315.12E0 83.1400E0 317.71E0 83.5000E0 319.79E0 84.0000E0 322.36E0 84.4000E0 324.42E0 84.8900E0 326.98E0 85.2600E0 329.01E0 85.7400E0 331.56E0 86.0700E0 333.56E0 86.5400E0 336.10E0 86.8900E0 338.08E0 87.3200E0 340.60E0 87.6500E0 342.57E0 88.1000E0 345.08E0 88.4300E0 347.02E0 88.8300E0 349.52E0 89.1200E0 351.44E0 89.5400E0 353.93E0 89.8500E0 355.83E0 90.2500E0 358.32E0 90.5500E0 360.20E0 90.9300E0 362.67E0 91.2000E0 364.53E0 91.5500E0 367.00E0 92.2000E0 371.30E0 lmfit-0.9.2/NIST_STRD/Lanczos1.dat0000644000032700003100000000573012603520205017712 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Lanczos1 (Lanczos1.dat) File Format: ASCII Starting Values (lines 41 to 46) Certified Values (lines 41 to 51) Data (lines 61 to 84) Procedure: Nonlinear Least Squares Regression Description: These data are taken from an example discussed in Lanczos (1956). The data were generated to 14-digits of accuracy using f(x) = 0.0951*exp(-x) + 0.8607*exp(-3*x) + 1.5576*exp(-5*x). Reference: Lanczos, C. (1956). Applied Analysis. Englewood Cliffs, NJ: Prentice Hall, pp. 272-280. Data: 1 Response (y) 1 Predictor (x) 24 Observations Average Level of Difficulty Generated Data Model: Exponential Class 6 Parameters (b1 to b6) y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1.2 0.5 9.5100000027E-02 5.3347304234E-11 b2 = 0.3 0.7 1.0000000001E+00 2.7473038179E-10 b3 = 5.6 3.6 8.6070000013E-01 1.3576062225E-10 b4 = 5.5 4.2 3.0000000002E+00 3.3308253069E-10 b5 = 6.5 4 1.5575999998E+00 1.8815731448E-10 b6 = 7.6 6.3 5.0000000001E+00 1.1057500538E-10 Residual Sum of Squares: 1.4307867721E-25 Residual Standard Deviation: 8.9156129349E-14 Degrees of Freedom: 18 Number of Observations: 24 Data: y x 2.513400000000E+00 0.000000000000E+00 2.044333373291E+00 5.000000000000E-02 1.668404436564E+00 1.000000000000E-01 1.366418021208E+00 1.500000000000E-01 1.123232487372E+00 2.000000000000E-01 9.268897180037E-01 2.500000000000E-01 7.679338563728E-01 3.000000000000E-01 6.388775523106E-01 3.500000000000E-01 5.337835317402E-01 4.000000000000E-01 4.479363617347E-01 4.500000000000E-01 3.775847884350E-01 5.000000000000E-01 3.197393199326E-01 5.500000000000E-01 2.720130773746E-01 6.000000000000E-01 2.324965529032E-01 6.500000000000E-01 1.996589546065E-01 7.000000000000E-01 1.722704126914E-01 7.500000000000E-01 1.493405660168E-01 8.000000000000E-01 1.300700206922E-01 8.500000000000E-01 1.138119324644E-01 9.000000000000E-01 1.000415587559E-01 9.500000000000E-01 8.833209084540E-02 1.000000000000E+00 7.833544019350E-02 1.050000000000E+00 6.976693743449E-02 1.100000000000E+00 6.239312536719E-02 1.150000000000E+00 lmfit-0.9.2/NIST_STRD/Misra1a.dat0000644000032700003100000000361412603520205017514 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Misra1a (Misra1a.dat) File Format: ASCII Starting Values (lines 41 to 42) Certified Values (lines 41 to 47) Data (lines 61 to 74) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study regarding dental research in monomolecular adsorption. The response variable is volume, and the predictor variable is pressure. Reference: Misra, D., NIST (1978). Dental Research Monomolecular Adsorption Study. Data: 1 Response Variable (y = volume) 1 Predictor Variable (x = pressure) 14 Observations Lower Level of Difficulty Observed Data Model: Exponential Class 2 Parameters (b1 and b2) y = b1*(1-exp[-b2*x]) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 500 250 2.3894212918E+02 2.7070075241E+00 b2 = 0.0001 0.0005 5.5015643181E-04 7.2668688436E-06 Residual Sum of Squares: 1.2455138894E-01 Residual Standard Deviation: 1.0187876330E-01 Degrees of Freedom: 12 Number of Observations: 14 Data: y x 10.07E0 77.6E0 14.73E0 114.9E0 17.94E0 141.1E0 23.93E0 190.8E0 29.61E0 239.9E0 35.18E0 289.0E0 40.02E0 332.8E0 44.82E0 378.4E0 50.76E0 434.8E0 55.05E0 477.3E0 61.01E0 536.8E0 66.40E0 593.1E0 75.47E0 689.1E0 81.78E0 760.0E0 lmfit-0.9.2/NIST_STRD/MGH17.dat0000644000032700003100000000615212603520205017002 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: MGH17 (MGH17.dat) File Format: ASCII Starting Values (lines 41 to 45) Certified Values (lines 41 to 50) Data (lines 61 to 93) Procedure: Nonlinear Least Squares Regression Description: This problem was found to be difficult for some very good algorithms. See More, J. J., Garbow, B. S., and Hillstrom, K. E. (1981). Testing unconstrained optimization software. ACM Transactions on Mathematical Software. 7(1): pp. 17-41. Reference: Osborne, M. R. (1972). Some aspects of nonlinear least squares calculations. In Numerical Methods for Nonlinear Optimization, Lootsma (Ed). New York, NY: Academic Press, pp. 171-189. Data: 1 Response (y) 1 Predictor (x) 33 Observations Average Level of Difficulty Generated Data Model: Exponential Class 5 Parameters (b1 to b5) y = b1 + b2*exp[-x*b4] + b3*exp[-x*b5] + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 50 0.5 3.7541005211E-01 2.0723153551E-03 b2 = 150 1.5 1.9358469127E+00 2.2031669222E-01 b3 = -100 -1 -1.4646871366E+00 2.2175707739E-01 b4 = 1 0.01 1.2867534640E-02 4.4861358114E-04 b5 = 2 0.02 2.2122699662E-02 8.9471996575E-04 Residual Sum of Squares: 5.4648946975E-05 Residual Standard Deviation: 1.3970497866E-03 Degrees of Freedom: 28 Number of Observations: 33 Data: y x 8.440000E-01 0.000000E+00 9.080000E-01 1.000000E+01 9.320000E-01 2.000000E+01 9.360000E-01 3.000000E+01 9.250000E-01 4.000000E+01 9.080000E-01 5.000000E+01 8.810000E-01 6.000000E+01 8.500000E-01 7.000000E+01 8.180000E-01 8.000000E+01 7.840000E-01 9.000000E+01 7.510000E-01 1.000000E+02 7.180000E-01 1.100000E+02 6.850000E-01 1.200000E+02 6.580000E-01 1.300000E+02 6.280000E-01 1.400000E+02 6.030000E-01 1.500000E+02 5.800000E-01 1.600000E+02 5.580000E-01 1.700000E+02 5.380000E-01 1.800000E+02 5.220000E-01 1.900000E+02 5.060000E-01 2.000000E+02 4.900000E-01 2.100000E+02 4.780000E-01 2.200000E+02 4.670000E-01 2.300000E+02 4.570000E-01 2.400000E+02 4.480000E-01 2.500000E+02 4.380000E-01 2.600000E+02 4.310000E-01 2.700000E+02 4.240000E-01 2.800000E+02 4.200000E-01 2.900000E+02 4.140000E-01 3.000000E+02 4.110000E-01 3.100000E+02 4.060000E-01 3.200000E+02 lmfit-0.9.2/NIST_STRD/Nelson.dat0000644000032700003100000001603212603520205017453 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Nelson (Nelson.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 188) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a study involving the analysis of performance degradation data from accelerated tests, published in IEEE Transactions on Reliability. The response variable is dialectric breakdown strength in kilo-volts, and the predictor variables are time in weeks and temperature in degrees Celcius. Reference: Nelson, W. (1981). Analysis of Performance-Degradation Data. IEEE Transactions on Reliability. Vol. 2, R-30, No. 2, pp. 149-155. Data: 1 Response ( y = dialectric breakdown strength) 2 Predictors (x1 = time; x2 = temperature) 128 Observations Average Level of Difficulty Observed Data Model: Exponential Class 3 Parameters (b1 to b3) log[y] = b1 - b2*x1 * exp[-b3*x2] + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 2 2.5 2.5906836021E+00 1.9149996413E-02 b2 = 0.0001 0.000000005 5.6177717026E-09 6.1124096540E-09 b3 = -0.01 -0.05 -5.7701013174E-02 3.9572366543E-03 Residual Sum of Squares: 3.7976833176E+00 Residual Standard Deviation: 1.7430280130E-01 Degrees of Freedom: 125 Number of Observations: 128 Data: y x1 x2 15.00E0 1E0 180E0 17.00E0 1E0 180E0 15.50E0 1E0 180E0 16.50E0 1E0 180E0 15.50E0 1E0 225E0 15.00E0 1E0 225E0 16.00E0 1E0 225E0 14.50E0 1E0 225E0 15.00E0 1E0 250E0 14.50E0 1E0 250E0 12.50E0 1E0 250E0 11.00E0 1E0 250E0 14.00E0 1E0 275E0 13.00E0 1E0 275E0 14.00E0 1E0 275E0 11.50E0 1E0 275E0 14.00E0 2E0 180E0 16.00E0 2E0 180E0 13.00E0 2E0 180E0 13.50E0 2E0 180E0 13.00E0 2E0 225E0 13.50E0 2E0 225E0 12.50E0 2E0 225E0 12.50E0 2E0 225E0 12.50E0 2E0 250E0 12.00E0 2E0 250E0 11.50E0 2E0 250E0 12.00E0 2E0 250E0 13.00E0 2E0 275E0 11.50E0 2E0 275E0 13.00E0 2E0 275E0 12.50E0 2E0 275E0 13.50E0 4E0 180E0 17.50E0 4E0 180E0 17.50E0 4E0 180E0 13.50E0 4E0 180E0 12.50E0 4E0 225E0 12.50E0 4E0 225E0 15.00E0 4E0 225E0 13.00E0 4E0 225E0 12.00E0 4E0 250E0 13.00E0 4E0 250E0 12.00E0 4E0 250E0 13.50E0 4E0 250E0 10.00E0 4E0 275E0 11.50E0 4E0 275E0 11.00E0 4E0 275E0 9.50E0 4E0 275E0 15.00E0 8E0 180E0 15.00E0 8E0 180E0 15.50E0 8E0 180E0 16.00E0 8E0 180E0 13.00E0 8E0 225E0 10.50E0 8E0 225E0 13.50E0 8E0 225E0 14.00E0 8E0 225E0 12.50E0 8E0 250E0 12.00E0 8E0 250E0 11.50E0 8E0 250E0 11.50E0 8E0 250E0 6.50E0 8E0 275E0 5.50E0 8E0 275E0 6.00E0 8E0 275E0 6.00E0 8E0 275E0 18.50E0 16E0 180E0 17.00E0 16E0 180E0 15.30E0 16E0 180E0 16.00E0 16E0 180E0 13.00E0 16E0 225E0 14.00E0 16E0 225E0 12.50E0 16E0 225E0 11.00E0 16E0 225E0 12.00E0 16E0 250E0 12.00E0 16E0 250E0 11.50E0 16E0 250E0 12.00E0 16E0 250E0 6.00E0 16E0 275E0 6.00E0 16E0 275E0 5.00E0 16E0 275E0 5.50E0 16E0 275E0 12.50E0 32E0 180E0 13.00E0 32E0 180E0 16.00E0 32E0 180E0 12.00E0 32E0 180E0 11.00E0 32E0 225E0 9.50E0 32E0 225E0 11.00E0 32E0 225E0 11.00E0 32E0 225E0 11.00E0 32E0 250E0 10.00E0 32E0 250E0 10.50E0 32E0 250E0 10.50E0 32E0 250E0 2.70E0 32E0 275E0 2.70E0 32E0 275E0 2.50E0 32E0 275E0 2.40E0 32E0 275E0 13.00E0 48E0 180E0 13.50E0 48E0 180E0 16.50E0 48E0 180E0 13.60E0 48E0 180E0 11.50E0 48E0 225E0 10.50E0 48E0 225E0 13.50E0 48E0 225E0 12.00E0 48E0 225E0 7.00E0 48E0 250E0 6.90E0 48E0 250E0 8.80E0 48E0 250E0 7.90E0 48E0 250E0 1.20E0 48E0 275E0 1.50E0 48E0 275E0 1.00E0 48E0 275E0 1.50E0 48E0 275E0 13.00E0 64E0 180E0 12.50E0 64E0 180E0 16.50E0 64E0 180E0 16.00E0 64E0 180E0 11.00E0 64E0 225E0 11.50E0 64E0 225E0 10.50E0 64E0 225E0 10.00E0 64E0 225E0 7.27E0 64E0 250E0 7.50E0 64E0 250E0 6.70E0 64E0 250E0 7.60E0 64E0 250E0 1.50E0 64E0 275E0 1.00E0 64E0 275E0 1.20E0 64E0 275E0 1.20E0 64E0 275E0 lmfit-0.9.2/NIST_STRD/Bennett5.dat0000644000032700003100000001566012603520205017707 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Bennett5 (Bennett5.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 214) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving superconductivity magnetization modeling. The response variable is magnetism, and the predictor variable is the log of time in minutes. Reference: Bennett, L., L. Swartzendruber, and H. Brown, NIST (1994). Superconductivity Magnetization Modeling. Data: 1 Response Variable (y = magnetism) 1 Predictor Variable (x = log[time]) 154 Observations Higher Level of Difficulty Observed Data Model: Miscellaneous Class 3 Parameters (b1 to b3) y = b1 * (b2+x)**(-1/b3) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = -2000 -1500 -2.5235058043E+03 2.9715175411E+02 b2 = 50 45 4.6736564644E+01 1.2448871856E+00 b3 = 0.8 0.85 9.3218483193E-01 2.0272299378E-02 Residual Sum of Squares: 5.2404744073E-04 Residual Standard Deviation: 1.8629312528E-03 Degrees of Freedom: 151 Number of Observations: 154 Data: y x -34.834702E0 7.447168E0 -34.393200E0 8.102586E0 -34.152901E0 8.452547E0 -33.979099E0 8.711278E0 -33.845901E0 8.916774E0 -33.732899E0 9.087155E0 -33.640301E0 9.232590E0 -33.559200E0 9.359535E0 -33.486801E0 9.472166E0 -33.423100E0 9.573384E0 -33.365101E0 9.665293E0 -33.313000E0 9.749461E0 -33.260899E0 9.827092E0 -33.217400E0 9.899128E0 -33.176899E0 9.966321E0 -33.139198E0 10.029280E0 -33.101601E0 10.088510E0 -33.066799E0 10.144430E0 -33.035000E0 10.197380E0 -33.003101E0 10.247670E0 -32.971298E0 10.295560E0 -32.942299E0 10.341250E0 -32.916302E0 10.384950E0 -32.890202E0 10.426820E0 -32.864101E0 10.467000E0 -32.841000E0 10.505640E0 -32.817799E0 10.542830E0 -32.797501E0 10.578690E0 -32.774300E0 10.613310E0 -32.757000E0 10.646780E0 -32.733799E0 10.679150E0 -32.716400E0 10.710520E0 -32.699100E0 10.740920E0 -32.678799E0 10.770440E0 -32.661400E0 10.799100E0 -32.644001E0 10.826970E0 -32.626701E0 10.854080E0 -32.612202E0 10.880470E0 -32.597698E0 10.906190E0 -32.583199E0 10.931260E0 -32.568699E0 10.955720E0 -32.554298E0 10.979590E0 -32.539799E0 11.002910E0 -32.525299E0 11.025700E0 -32.510799E0 11.047980E0 -32.499199E0 11.069770E0 -32.487598E0 11.091100E0 -32.473202E0 11.111980E0 -32.461601E0 11.132440E0 -32.435501E0 11.152480E0 -32.435501E0 11.172130E0 -32.426800E0 11.191410E0 -32.412300E0 11.210310E0 -32.400799E0 11.228870E0 -32.392101E0 11.247090E0 -32.380501E0 11.264980E0 -32.366001E0 11.282560E0 -32.357300E0 11.299840E0 -32.348598E0 11.316820E0 -32.339901E0 11.333520E0 -32.328400E0 11.349940E0 -32.319698E0 11.366100E0 -32.311001E0 11.382000E0 -32.299400E0 11.397660E0 -32.290699E0 11.413070E0 -32.282001E0 11.428240E0 -32.273300E0 11.443200E0 -32.264599E0 11.457930E0 -32.256001E0 11.472440E0 -32.247299E0 11.486750E0 -32.238602E0 11.500860E0 -32.229900E0 11.514770E0 -32.224098E0 11.528490E0 -32.215401E0 11.542020E0 -32.203800E0 11.555380E0 -32.198002E0 11.568550E0 -32.189400E0 11.581560E0 -32.183601E0 11.594420E0 -32.174900E0 11.607121E0 -32.169102E0 11.619640E0 -32.163300E0 11.632000E0 -32.154598E0 11.644210E0 -32.145901E0 11.656280E0 -32.140099E0 11.668200E0 -32.131401E0 11.679980E0 -32.125599E0 11.691620E0 -32.119801E0 11.703130E0 -32.111198E0 11.714510E0 -32.105400E0 11.725760E0 -32.096699E0 11.736880E0 -32.090900E0 11.747890E0 -32.088001E0 11.758780E0 -32.079300E0 11.769550E0 -32.073502E0 11.780200E0 -32.067699E0 11.790730E0 -32.061901E0 11.801160E0 -32.056099E0 11.811480E0 -32.050301E0 11.821700E0 -32.044498E0 11.831810E0 -32.038799E0 11.841820E0 -32.033001E0 11.851730E0 -32.027199E0 11.861550E0 -32.024300E0 11.871270E0 -32.018501E0 11.880890E0 -32.012699E0 11.890420E0 -32.004002E0 11.899870E0 -32.001099E0 11.909220E0 -31.995300E0 11.918490E0 -31.989500E0 11.927680E0 -31.983700E0 11.936780E0 -31.977900E0 11.945790E0 -31.972099E0 11.954730E0 -31.969299E0 11.963590E0 -31.963501E0 11.972370E0 -31.957701E0 11.981070E0 -31.951900E0 11.989700E0 -31.946100E0 11.998260E0 -31.940300E0 12.006740E0 -31.937401E0 12.015150E0 -31.931601E0 12.023490E0 -31.925800E0 12.031760E0 -31.922899E0 12.039970E0 -31.917101E0 12.048100E0 -31.911301E0 12.056170E0 -31.908400E0 12.064180E0 -31.902599E0 12.072120E0 -31.896900E0 12.080010E0 -31.893999E0 12.087820E0 -31.888201E0 12.095580E0 -31.885300E0 12.103280E0 -31.882401E0 12.110920E0 -31.876600E0 12.118500E0 -31.873699E0 12.126030E0 -31.867901E0 12.133500E0 -31.862101E0 12.140910E0 -31.859200E0 12.148270E0 -31.856300E0 12.155570E0 -31.850500E0 12.162830E0 -31.844700E0 12.170030E0 -31.841801E0 12.177170E0 -31.838900E0 12.184270E0 -31.833099E0 12.191320E0 -31.830200E0 12.198320E0 -31.827299E0 12.205270E0 -31.821600E0 12.212170E0 -31.818701E0 12.219030E0 -31.812901E0 12.225840E0 -31.809999E0 12.232600E0 -31.807100E0 12.239320E0 -31.801300E0 12.245990E0 -31.798401E0 12.252620E0 -31.795500E0 12.259200E0 -31.789700E0 12.265750E0 -31.786800E0 12.272240E0 lmfit-0.9.2/NIST_STRD/Chwirut1.dat0000644000032700003100000001723312603520205017727 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Chwirut1 (Chwirut1.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 274) Procedure: Nonlinear Least Squares Regression Description: These data are the result of a NIST study involving ultrasonic calibration. The response variable is ultrasonic response, and the predictor variable is metal distance. Reference: Chwirut, D., NIST (197?). Ultrasonic Reference Block Study. Data: 1 Response Variable (y = ultrasonic response) 1 Predictor Variable (x = metal distance) 214 Observations Lower Level of Difficulty Observed Data Model: Exponential Class 3 Parameters (b1 to b3) y = exp[-b1*x]/(b2+b3*x) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 0.1 0.15 1.9027818370E-01 2.1938557035E-02 b2 = 0.01 0.008 6.1314004477E-03 3.4500025051E-04 b3 = 0.02 0.010 1.0530908399E-02 7.9281847748E-04 Residual Sum of Squares: 2.3844771393E+03 Residual Standard Deviation: 3.3616721320E+00 Degrees of Freedom: 211 Number of Observations: 214 Data: y x 92.9000E0 0.5000E0 78.7000E0 0.6250E0 64.2000E0 0.7500E0 64.9000E0 0.8750E0 57.1000E0 1.0000E0 43.3000E0 1.2500E0 31.1000E0 1.7500E0 23.6000E0 2.2500E0 31.0500E0 1.7500E0 23.7750E0 2.2500E0 17.7375E0 2.7500E0 13.8000E0 3.2500E0 11.5875E0 3.7500E0 9.4125E0 4.2500E0 7.7250E0 4.7500E0 7.3500E0 5.2500E0 8.0250E0 5.7500E0 90.6000E0 0.5000E0 76.9000E0 0.6250E0 71.6000E0 0.7500E0 63.6000E0 0.8750E0 54.0000E0 1.0000E0 39.2000E0 1.2500E0 29.3000E0 1.7500E0 21.4000E0 2.2500E0 29.1750E0 1.7500E0 22.1250E0 2.2500E0 17.5125E0 2.7500E0 14.2500E0 3.2500E0 9.4500E0 3.7500E0 9.1500E0 4.2500E0 7.9125E0 4.7500E0 8.4750E0 5.2500E0 6.1125E0 5.7500E0 80.0000E0 0.5000E0 79.0000E0 0.6250E0 63.8000E0 0.7500E0 57.2000E0 0.8750E0 53.2000E0 1.0000E0 42.5000E0 1.2500E0 26.8000E0 1.7500E0 20.4000E0 2.2500E0 26.8500E0 1.7500E0 21.0000E0 2.2500E0 16.4625E0 2.7500E0 12.5250E0 3.2500E0 10.5375E0 3.7500E0 8.5875E0 4.2500E0 7.1250E0 4.7500E0 6.1125E0 5.2500E0 5.9625E0 5.7500E0 74.1000E0 0.5000E0 67.3000E0 0.6250E0 60.8000E0 0.7500E0 55.5000E0 0.8750E0 50.3000E0 1.0000E0 41.0000E0 1.2500E0 29.4000E0 1.7500E0 20.4000E0 2.2500E0 29.3625E0 1.7500E0 21.1500E0 2.2500E0 16.7625E0 2.7500E0 13.2000E0 3.2500E0 10.8750E0 3.7500E0 8.1750E0 4.2500E0 7.3500E0 4.7500E0 5.9625E0 5.2500E0 5.6250E0 5.7500E0 81.5000E0 .5000E0 62.4000E0 .7500E0 32.5000E0 1.5000E0 12.4100E0 3.0000E0 13.1200E0 3.0000E0 15.5600E0 3.0000E0 5.6300E0 6.0000E0 78.0000E0 .5000E0 59.9000E0 .7500E0 33.2000E0 1.5000E0 13.8400E0 3.0000E0 12.7500E0 3.0000E0 14.6200E0 3.0000E0 3.9400E0 6.0000E0 76.8000E0 .5000E0 61.0000E0 .7500E0 32.9000E0 1.5000E0 13.8700E0 3.0000E0 11.8100E0 3.0000E0 13.3100E0 3.0000E0 5.4400E0 6.0000E0 78.0000E0 .5000E0 63.5000E0 .7500E0 33.8000E0 1.5000E0 12.5600E0 3.0000E0 5.6300E0 6.0000E0 12.7500E0 3.0000E0 13.1200E0 3.0000E0 5.4400E0 6.0000E0 76.8000E0 .5000E0 60.0000E0 .7500E0 47.8000E0 1.0000E0 32.0000E0 1.5000E0 22.2000E0 2.0000E0 22.5700E0 2.0000E0 18.8200E0 2.5000E0 13.9500E0 3.0000E0 11.2500E0 4.0000E0 9.0000E0 5.0000E0 6.6700E0 6.0000E0 75.8000E0 .5000E0 62.0000E0 .7500E0 48.8000E0 1.0000E0 35.2000E0 1.5000E0 20.0000E0 2.0000E0 20.3200E0 2.0000E0 19.3100E0 2.5000E0 12.7500E0 3.0000E0 10.4200E0 4.0000E0 7.3100E0 5.0000E0 7.4200E0 6.0000E0 70.5000E0 .5000E0 59.5000E0 .7500E0 48.5000E0 1.0000E0 35.8000E0 1.5000E0 21.0000E0 2.0000E0 21.6700E0 2.0000E0 21.0000E0 2.5000E0 15.6400E0 3.0000E0 8.1700E0 4.0000E0 8.5500E0 5.0000E0 10.1200E0 6.0000E0 78.0000E0 .5000E0 66.0000E0 .6250E0 62.0000E0 .7500E0 58.0000E0 .8750E0 47.7000E0 1.0000E0 37.8000E0 1.2500E0 20.2000E0 2.2500E0 21.0700E0 2.2500E0 13.8700E0 2.7500E0 9.6700E0 3.2500E0 7.7600E0 3.7500E0 5.4400E0 4.2500E0 4.8700E0 4.7500E0 4.0100E0 5.2500E0 3.7500E0 5.7500E0 24.1900E0 3.0000E0 25.7600E0 3.0000E0 18.0700E0 3.0000E0 11.8100E0 3.0000E0 12.0700E0 3.0000E0 16.1200E0 3.0000E0 70.8000E0 .5000E0 54.7000E0 .7500E0 48.0000E0 1.0000E0 39.8000E0 1.5000E0 29.8000E0 2.0000E0 23.7000E0 2.5000E0 29.6200E0 2.0000E0 23.8100E0 2.5000E0 17.7000E0 3.0000E0 11.5500E0 4.0000E0 12.0700E0 5.0000E0 8.7400E0 6.0000E0 80.7000E0 .5000E0 61.3000E0 .7500E0 47.5000E0 1.0000E0 29.0000E0 1.5000E0 24.0000E0 2.0000E0 17.7000E0 2.5000E0 24.5600E0 2.0000E0 18.6700E0 2.5000E0 16.2400E0 3.0000E0 8.7400E0 4.0000E0 7.8700E0 5.0000E0 8.5100E0 6.0000E0 66.7000E0 .5000E0 59.2000E0 .7500E0 40.8000E0 1.0000E0 30.7000E0 1.5000E0 25.7000E0 2.0000E0 16.3000E0 2.5000E0 25.9900E0 2.0000E0 16.9500E0 2.5000E0 13.3500E0 3.0000E0 8.6200E0 4.0000E0 7.2000E0 5.0000E0 6.6400E0 6.0000E0 13.6900E0 3.0000E0 81.0000E0 .5000E0 64.5000E0 .7500E0 35.5000E0 1.5000E0 13.3100E0 3.0000E0 4.8700E0 6.0000E0 12.9400E0 3.0000E0 5.0600E0 6.0000E0 15.1900E0 3.0000E0 14.6200E0 3.0000E0 15.6400E0 3.0000E0 25.5000E0 1.7500E0 25.9500E0 1.7500E0 81.7000E0 .5000E0 61.6000E0 .7500E0 29.8000E0 1.7500E0 29.8100E0 1.7500E0 17.1700E0 2.7500E0 10.3900E0 3.7500E0 28.4000E0 1.7500E0 28.6900E0 1.7500E0 81.3000E0 .5000E0 60.9000E0 .7500E0 16.6500E0 2.7500E0 10.0500E0 3.7500E0 28.9000E0 1.7500E0 28.9500E0 1.7500E0 lmfit-0.9.2/NIST_STRD/MGH10.dat0000644000032700003100000000456512603520205017001 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: MGH10 (MGH10.dat) File Format: ASCII Starting Values (lines 41 to 43) Certified Values (lines 41 to 48) Data (lines 61 to 76) Procedure: Nonlinear Least Squares Regression Description: This problem was found to be difficult for some very good algorithms. See More, J. J., Garbow, B. S., and Hillstrom, K. E. (1981). Testing unconstrained optimization software. ACM Transactions on Mathematical Software. 7(1): pp. 17-41. Reference: Meyer, R. R. (1970). Theoretical and computational aspects of nonlinear regression. In Nonlinear Programming, Rosen, Mangasarian and Ritter (Eds). New York, NY: Academic Press, pp. 465-486. Data: 1 Response (y) 1 Predictor (x) 16 Observations Higher Level of Difficulty Generated Data Model: Exponential Class 3 Parameters (b1 to b3) y = b1 * exp[b2/(x+b3)] + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 2 0.02 5.6096364710E-03 1.5687892471E-04 b2 = 400000 4000 6.1813463463E+03 2.3309021107E+01 b3 = 25000 250 3.4522363462E+02 7.8486103508E-01 Residual Sum of Squares: 8.7945855171E+01 Residual Standard Deviation: 2.6009740065E+00 Degrees of Freedom: 13 Number of Observations: 16 Data: y x 3.478000E+04 5.000000E+01 2.861000E+04 5.500000E+01 2.365000E+04 6.000000E+01 1.963000E+04 6.500000E+01 1.637000E+04 7.000000E+01 1.372000E+04 7.500000E+01 1.154000E+04 8.000000E+01 9.744000E+03 8.500000E+01 8.261000E+03 9.000000E+01 7.030000E+03 9.500000E+01 6.005000E+03 1.000000E+02 5.147000E+03 1.050000E+02 4.427000E+03 1.100000E+02 3.820000E+03 1.150000E+02 3.307000E+03 1.200000E+02 2.872000E+03 1.250000E+02 lmfit-0.9.2/NIST_STRD/Lanczos3.dat0000644000032700003100000000514512603520205017714 0ustar newvillegeocars00000000000000NIST/ITL StRD Dataset Name: Lanczos3 (Lanczos3.dat) File Format: ASCII Starting Values (lines 41 to 46) Certified Values (lines 41 to 51) Data (lines 61 to 84) Procedure: Nonlinear Least Squares Regression Description: These data are taken from an example discussed in Lanczos (1956). The data were generated to 5-digits of accuracy using f(x) = 0.0951*exp(-x) + 0.8607*exp(-3*x) + 1.5576*exp(-5*x). Reference: Lanczos, C. (1956). Applied Analysis. Englewood Cliffs, NJ: Prentice Hall, pp. 272-280. Data: 1 Response (y) 1 Predictor (x) 24 Observations Lower Level of Difficulty Generated Data Model: Exponential Class 6 Parameters (b1 to b6) y = b1*exp(-b2*x) + b3*exp(-b4*x) + b5*exp(-b6*x) + e Starting values Certified Values Start 1 Start 2 Parameter Standard Deviation b1 = 1.2 0.5 8.6816414977E-02 1.7197908859E-02 b2 = 0.3 0.7 9.5498101505E-01 9.7041624475E-02 b3 = 5.6 3.6 8.4400777463E-01 4.1488663282E-02 b4 = 5.5 4.2 2.9515951832E+00 1.0766312506E-01 b5 = 6.5 4 1.5825685901E+00 5.8371576281E-02 b6 = 7.6 6.3 4.9863565084E+00 3.4436403035E-02 Residual Sum of Squares: 1.6117193594E-08 Residual Standard Deviation: 2.9923229172E-05 Degrees of Freedom: 18 Number of Observations: 24 Data: y x 2.5134E+00 0.00000E+00 2.0443E+00 5.00000E-02 1.6684E+00 1.00000E-01 1.3664E+00 1.50000E-01 1.1232E+00 2.00000E-01 0.9269E+00 2.50000E-01 0.7679E+00 3.00000E-01 0.6389E+00 3.50000E-01 0.5338E+00 4.00000E-01 0.4479E+00 4.50000E-01 0.3776E+00 5.00000E-01 0.3197E+00 5.50000E-01 0.2720E+00 6.00000E-01 0.2325E+00 6.50000E-01 0.1997E+00 7.00000E-01 0.1723E+00 7.50000E-01 0.1493E+00 8.00000E-01 0.1301E+00 8.50000E-01 0.1138E+00 9.00000E-01 0.1000E+00 9.50000E-01 0.0883E+00 1.00000E+00 0.0783E+00 1.05000E+00 0.0698E+00 1.10000E+00 0.0624E+00 1.15000E+00 lmfit-0.9.2/tests/0000755000032700003100000000000012613717514015266 5ustar newvillegeocars00000000000000lmfit-0.9.2/tests/NISTModels.py0000644000032700003100000001404412603520205017550 0ustar newvillegeocars00000000000000import os import sys from numpy import exp, log, log10, sin, cos, arctan, array from lmfit import Parameters thisdir, thisfile = os.path.split(__file__) NIST_DIR = os.path.join(thisdir, '..', 'NIST_STRD') def read_params(params): if isinstance(params, Parameters): return [par.value for par in params.values()] else: return params def Bennet5(b, x, y=0): b = read_params(b) return y - b[0] * (b[1]+x)**(-1/b[2]) def BoxBOD(b, x, y=0): b = read_params(b) return y - b[0]*(1-exp(-b[1]*x)) def Chwirut(b, x, y=0): b = read_params(b) return y - exp(-b[0]*x)/(b[1]+b[2]*x) def DanWood(b, x, y=0): b = read_params(b) return y - b[0]*x**b[1] def ENSO(b, x, y=0): b = read_params(b) pi = 3.141592653589793238462643383279 return y - b[0] + (b[1]*cos( 2*pi*x/12 ) + b[2]*sin( 2*pi*x/12 ) + b[4]*cos( 2*pi*x/b[3] ) + b[5]*sin( 2*pi*x/b[3] ) + b[7]*cos( 2*pi*x/b[6] ) + b[8]*sin( 2*pi*x/b[6] ) ) def Eckerle4(b, x, y=0): b = read_params(b) return y - (b[0]/b[1]) * exp(-0.5*((x-b[2])/b[1])**2) def Gauss(b, x, y=0): b = read_params(b) return y - b[0]*exp( -b[1]*x ) + (b[2]*exp( -(x-b[3])**2 / b[4]**2 ) + b[5]*exp( -(x-b[6])**2 / b[7]**2 ) ) def Hahn1(b, x, y=0): b = read_params(b) return y - ((b[0]+b[1]*x+b[2]*x**2+b[3]*x**3) / (1+b[4]*x+b[5]*x**2+b[6]*x**3) ) def Kirby(b, x, y=0): b = read_params(b) return y - (b[0] + b[1]*x + b[2]*x**2) / (1 + b[3]*x + b[4]*x**2) def Lanczos(b, x, y=0): b = read_params(b) return y - b[0]*exp(-b[1]*x) + b[2]*exp(-b[3]*x) + b[4]*exp(-b[5]*x) def MGH09(b, x, y=0): b = read_params(b) return y - b[0]*(x**2+x*b[1]) / (x**2+x*b[2]+b[3]) def MGH10(b, x, y=0): b = read_params(b) return y - b[0] * exp( b[1]/(x+b[2]) ) def MGH17(b, x, y=0): b = read_params(b) return y - b[0] + b[1]*exp(-x*b[3]) + b[2]*exp(-x*b[4]) def Misra1a(b, x, y=0): b = read_params(b) return y - b[0]*(1-exp(-b[1]*x)) def Misra1b(b, x, y=0): b = read_params(b) return y - b[0] * (1-(1+b[1]*x/2)**(-2)) def Misra1c(b, x, y=0): b = read_params(b) return y - b[0] * (1-(1+2*b[1]*x)**(-.5)) def Misra1d(b, x, y=0): b = read_params(b) return y - b[0]*b[1]*x*((1+b[1]*x)**(-1)) def Nelson(b, x, y=None): b = read_params(b) x1 = x[:,0] x2 = x[:,1] if y is None: return - exp(b[0] - b[1]*x1 * exp(-b[2]*x2)) return log(y) - (b[0] - b[1]*x1 * exp(-b[2]*x2) ) def Rat42(b, x, y=0): b = read_params(b) return y - b[0] / (1+exp(b[1]-b[2]*x)) def Rat43(b, x, y=0): b = read_params(b) return y - b[0] / ((1+exp(b[1]-b[2]*x))**(1/b[3])) def Roszman1(b, x, y=0): b = read_params(b) pi = 3.141592653589793238462643383279 return y - b[0] - b[1]*x - arctan(b[2]/(x-b[3]))/pi def Thurber(b, x, y=0): b = read_params(b) return y - ( (b[0] + b[1]*x + b[2]*x**2 + b[3]*x**3) / (1 + b[4]*x + b[5]*x**2 + b[6]*x**3) ) # Model name fcn, #fitting params, dim of x Models = {'Bennett5': (Bennet5, 3, 1), 'BoxBOD': (BoxBOD, 2, 1), 'Chwirut1': (Chwirut, 3, 1), 'Chwirut2': (Chwirut, 3, 1), 'DanWood': (DanWood, 2, 1), 'ENSO': (ENSO, 9, 1), 'Eckerle4': (Eckerle4, 3, 1), 'Gauss1': (Gauss, 8, 1), 'Gauss2': (Gauss, 8, 1), 'Gauss3': (Gauss, 8, 1), 'Hahn1': (Hahn1, 7, 1), 'Kirby2': (Kirby, 5, 1), 'Lanczos1': (Lanczos, 6, 1), 'Lanczos2': (Lanczos, 6, 1), 'Lanczos3': (Lanczos, 6, 1), 'MGH09': (MGH09, 4, 1), 'MGH10': (MGH10, 3, 1), 'MGH17': (MGH17, 5, 1), 'Misra1a': (Misra1a, 2, 1), 'Misra1b' : (Misra1b, 2, 1), 'Misra1c' : (Misra1c, 2, 1), 'Misra1d' : (Misra1d, 2, 1), 'Nelson': (Nelson, 3, 2), 'Rat42': (Rat42, 3, 1), 'Rat43': (Rat43, 4, 1), 'Roszman1': (Roszman1, 4, 1), 'Thurber': (Thurber, 7, 1) } def ReadNistData(dataset): """NIST STRD data is in a simple, fixed format with line numbers being significant! """ finp = open(os.path.join(NIST_DIR, "%s.dat" % dataset), 'r') lines = [l[:-1] for l in finp.readlines()] finp.close() ModelLines = lines[30:39] ParamLines = lines[40:58] DataLines = lines[60:] words = ModelLines[1].strip().split() nparams = int(words[0]) start1 = [0]*nparams start2 = [0]*nparams certval = [0]*nparams certerr = [0]*nparams for i, text in enumerate(ParamLines[:nparams]): [s1, s2, val, err] = [float(x) for x in text.split('=')[1].split()] start1[i] = s1 start2[i] = s2 certval[i] = val certerr[i] = err # for t in ParamLines[nparams:]: t = t.strip() if ':' not in t: continue val = float(t.split(':')[1]) if t.startswith('Residual Sum of Squares'): sum_squares = val elif t.startswith('Residual Standard Deviation'): std_dev = val elif t.startswith('Degrees of Freedom'): nfree = int(val) elif t.startswith('Number of Observations'): ndata = int(val) y, x = [], [] for d in DataLines: vals = [float(i) for i in d.strip().split()] y.append(vals[0]) if len(vals) > 2: x.append(vals[1:]) else: x.append(vals[1]) y = array(y) x = array(x) out = {'y': y, 'x': x, 'nparams': nparams, 'ndata': ndata, 'nfree': nfree, 'start1': start1, 'start2': start2, 'sum_squares': sum_squares, 'std_dev': std_dev, 'cert': certval, 'cert_values': certval, 'cert_stderr': certerr } return out lmfit-0.9.2/tests/test_itercb.py0000644000032700003100000000204112603520205020130 0ustar newvillegeocars00000000000000import numpy as np from lmfit import Parameters, minimize, report_fit from lmfit.models import LinearModel, GaussianModel from lmfit.lineshapes import gaussian def per_iteration(pars, iter, resid, *args, **kws): """iteration callback, will abort at iteration 23 """ # print( iter, ', '.join(["%s=%.4f" % (p.name, p.value) for p in pars.values()])) return iter == 23 def test_itercb(): x = np.linspace(0, 20, 401) y = gaussian(x, amplitude=24.56, center=7.6543, sigma=1.23) y = y - .20*x + 3.333 + np.random.normal(scale=0.23, size=len(x)) mod = GaussianModel(prefix='peak_') + LinearModel(prefix='bkg_') pars = mod.make_params(peak_amplitude=21.0, peak_center=7.0, peak_sigma=2.0, bkg_intercept=2, bkg_slope=0.0) out = mod.fit(y, pars, x=x, iter_cb=per_iteration) assert(out.nfev == 23) assert(out.aborted) assert(not out.errorbars) assert(not out.success) lmfit-0.9.2/tests/test_nose.py0000644000032700003100000003261012603520205017631 0ustar newvillegeocars00000000000000# -*- coding: utf-8 -*- from __future__ import print_function from lmfit import minimize, Parameters, Parameter, report_fit, Minimizer from lmfit.minimizer import SCALAR_METHODS from lmfit.lineshapes import gaussian import numpy as np from numpy import pi from numpy.testing import assert_ import unittest import nose from nose import SkipTest def check(para, real_val, sig=3): err = abs(para.value - real_val) print( para.name, para.value, real_val, para.stderr) assert(err < sig * para.stderr) def check_wo_stderr(para, real_val, sig=0.1): err = abs(para.value - real_val) print (para.name, para.value, real_val) assert(err < sig) def check_paras(para_fit, para_real): for i in para_fit: check(para_fit[i], para_real[i].value) def test_simple(): # create data to be fitted np.random.seed(1) x = np.linspace(0, 15, 301) data = (5. * np.sin(2 * x - 0.1) * np.exp(-x*x*0.025) + np.random.normal(size=len(x), scale=0.2) ) # define objective function: returns the array to be minimized def fcn2min(params, x, data): """ model decaying sine wave, subtract data""" amp = params['amp'].value shift = params['shift'].value omega = params['omega'].value decay = params['decay'].value model = amp * np.sin(x * omega + shift) * np.exp(-x*x*decay) return model - data # create a set of Parameters params = Parameters() params.add('amp', value= 10, min=0) params.add('decay', value= 0.1) params.add('shift', value= 0.0, min=-pi / 2., max=pi / 2) params.add('omega', value= 3.0) # do fit, here with leastsq model result = minimize(fcn2min, params, args=(x, data)) # calculate final result final = data + result.residual # write error report print(" --> SIMPLE --> ") print(result.params) report_fit(result.params) #assert that the real parameters are found for para, val in zip(result.params.values(), [5, 0.025, -.1, 2]): check(para, val) def test_lbfgsb(): p_true = Parameters() p_true.add('amp', value=14.0) p_true.add('period', value=5.33) p_true.add('shift', value=0.123) p_true.add('decay', value=0.010) def residual(pars, x, data=None): amp = pars['amp'].value per = pars['period'].value shift = pars['shift'].value decay = pars['decay'].value if abs(shift) > pi/2: shift = shift - np.sign(shift) * pi model = amp * np.sin(shift + x / per) * np.exp(-x * x * decay * decay) if data is None: return model return (model - data) n = 2500 xmin = 0. xmax = 250.0 noise = np.random.normal(scale=0.7215, size=n) x = np.linspace(xmin, xmax, n) data = residual(p_true, x) + noise fit_params = Parameters() fit_params.add('amp', value=11.0, min=5, max=20) fit_params.add('period', value=5., min=1., max=7) fit_params.add('shift', value=.10, min=0.0, max=0.2) fit_params.add('decay', value=6.e-3, min=0, max=0.1) init = residual(fit_params, x) out = minimize(residual, fit_params, method='lbfgsb', args=(x,), kws={'data':data}) fit = residual(fit_params, x) for name, par in out.params.items(): nout = "%s:%s" % (name, ' '*(20-len(name))) print("%s: %s (%s) " % (nout, par.value, p_true[name].value)) for para, true_para in zip(out.params.values(), p_true.values()): check_wo_stderr(para, true_para.value) def test_derive(): def func(pars, x, data=None): a = pars['a'].value b = pars['b'].value c = pars['c'].value model=a * np.exp(-b * x)+c if data is None: return model return (model - data) def dfunc(pars, x, data=None): a = pars['a'].value b = pars['b'].value c = pars['c'].value v = np.exp(-b*x) return np.array([v, -a*x*v, np.ones(len(x))]) def f(var, x): return var[0]* np.exp(-var[1] * x)+var[2] params1 = Parameters() params1.add('a', value=10) params1.add('b', value=10) params1.add('c', value=10) params2 = Parameters() params2.add('a', value=10) params2.add('b', value=10) params2.add('c', value=10) a, b, c = 2.5, 1.3, 0.8 x = np.linspace(0,4,50) y = f([a, b, c], x) data = y + 0.15*np.random.normal(size=len(x)) # fit without analytic derivative min1 = Minimizer(func, params1, fcn_args=(x,), fcn_kws={'data':data}) out1 = min1.leastsq() fit1 = func(out1.params, x) # fit with analytic derivative min2 = Minimizer(func, params2, fcn_args=(x,), fcn_kws={'data':data}) out2 = min2.leastsq(Dfun=dfunc, col_deriv=1) fit2 = func(out2.params, x) print ('''Comparison of fit to exponential decay with and without analytic derivatives, to model = a*exp(-b*x) + c for a = %.2f, b = %.2f, c = %.2f ============================================== Statistic/Parameter| Without | With | ---------------------------------------------- N Function Calls | %3i | %3i | Chi-square | %.4f | %.4f | a | %.4f | %.4f | b | %.4f | %.4f | c | %.4f | %.4f | ---------------------------------------------- ''' % (a, b, c, out1.nfev, out2.nfev, out1.chisqr, out2.chisqr, out1.params['a'].value, out2.params['a'].value, out1.params['b'].value, out2.params['b'].value, out1.params['c'].value, out2.params['c'].value )) check_wo_stderr(out1.params['a'], out2.params['a'].value, 0.00005) check_wo_stderr(out1.params['b'], out2.params['b'].value, 0.00005) check_wo_stderr(out1.params['c'], out2.params['c'].value, 0.00005) def test_peakfit(): def residual(pars, x, data=None): g1 = gaussian(x, pars['a1'].value, pars['c1'].value, pars['w1'].value) g2 = gaussian(x, pars['a2'].value, pars['c2'].value, pars['w2'].value) model = g1 + g2 if data is None: return model return (model - data) n = 601 xmin = 0. xmax = 15.0 noise = np.random.normal(scale=.65, size=n) x = np.linspace(xmin, xmax, n) org_params = Parameters() org_params.add_many(('a1', 12.0, True, None, None, None), ('c1', 5.3, True, None, None, None), ('w1', 1.0, True, None, None, None), ('a2', 9.1, True, None, None, None), ('c2', 8.1, True, None, None, None), ('w2', 2.5, True, None, None, None)) data = residual(org_params, x) + noise fit_params = Parameters() fit_params.add_many(('a1', 8.0, True, None, 14., None), ('c1', 5.0, True, None, None, None), ('w1', 0.7, True, None, None, None), ('a2', 3.1, True, None, None, None), ('c2', 8.8, True, None, None, None)) fit_params.add('w2', expr='2.5*w1') myfit = Minimizer(residual, fit_params, fcn_args=(x,), fcn_kws={'data':data}) myfit.prepare_fit() init = residual(fit_params, x) out = myfit.leastsq() # print(' N fev = ', myfit.nfev) # print(myfit.chisqr, myfit.redchi, myfit.nfree) report_fit(out.params) fit = residual(out.params, x) check_paras(out.params, org_params) def test_scalar_minimize_has_no_uncertainties(): # scalar_minimize doesn't calculate uncertainties. # when a scalar_minimize is run the stderr and correl for each parameter # should be None. (stderr and correl are set to None when a Parameter is # initialised). # This requires a reset after a leastsq fit has been done. # Only when scalar_minimize calculates stderr and correl can this test # be removed. np.random.seed(1) x = np.linspace(0, 15, 301) data = (5. * np.sin(2 * x - 0.1) * np.exp(-x*x*0.025) + np.random.normal(size=len(x), scale=0.2) ) # define objective function: returns the array to be minimized def fcn2min(params, x, data): """ model decaying sine wave, subtract data""" amp = params['amp'].value shift = params['shift'].value omega = params['omega'].value decay = params['decay'].value model = amp * np.sin(x * omega + shift) * np.exp(-x*x*decay) return model - data # create a set of Parameters params = Parameters() params.add('amp', value= 10, min=0) params.add('decay', value= 0.1) params.add('shift', value= 0.0, min=-pi / 2., max=pi / 2) params.add('omega', value= 3.0) mini = Minimizer(fcn2min, params, fcn_args=(x, data)) out = mini.minimize() assert_(np.isfinite(out.params['amp'].stderr)) print(out.errorbars) assert_(out.errorbars == True) out2 = mini.minimize(method='nelder-mead') assert_(out2.params['amp'].stderr is None) assert_(out2.params['decay'].stderr is None) assert_(out2.params['shift'].stderr is None) assert_(out2.params['omega'].stderr is None) assert_(out2.params['amp'].correl is None) assert_(out2.params['decay'].correl is None) assert_(out2.params['shift'].correl is None) assert_(out2.params['omega'].correl is None) assert_(out2.errorbars == False) def test_multidimensional_fit_GH205(): # test that you don't need to flatten the output from the objective # function. Tests regression for GH205. pos = np.linspace(0, 99, 100) xv, yv = np.meshgrid(pos, pos) f = lambda xv, yv, lambda1, lambda2: (np.sin(xv * lambda1) + np.cos(yv * lambda2)) data = f(xv, yv, 0.3, 3) assert_(data.ndim, 2) def fcn2min(params, xv, yv, data): """ model decaying sine wave, subtract data""" lambda1 = params['lambda1'].value lambda2 = params['lambda2'].value model = f(xv, yv, lambda1, lambda2) return model - data # create a set of Parameters params = Parameters() params.add('lambda1', value=0.4) params.add('lambda2', value=3.2) mini = Minimizer(fcn2min, params, fcn_args=(xv, yv, data)) res = mini.minimize() class CommonMinimizerTest(unittest.TestCase): def setUp(self): """ test scale minimizers except newton-cg (needs jacobian) and anneal (doesn't work out of the box). """ p_true = Parameters() p_true.add('amp', value=14.0) p_true.add('period', value=5.33) p_true.add('shift', value=0.123) p_true.add('decay', value=0.010) self.p_true = p_true n = 2500 xmin = 0. xmax = 250.0 noise = np.random.normal(scale=0.7215, size=n) self.x = np.linspace(xmin, xmax, n) data = self.residual(p_true, self.x) + noise fit_params = Parameters() fit_params.add('amp', value=11.0, min=5, max=20) fit_params.add('period', value=5., min=1., max=7) fit_params.add('shift', value=.10, min=0.0, max=0.2) fit_params.add('decay', value=6.e-3, min=0, max=0.1) self.fit_params = fit_params init = self.residual(fit_params, self.x) self.mini = Minimizer(self.residual, fit_params, [self.x, data]) def residual(self, pars, x, data=None): amp = pars['amp'].value per = pars['period'].value shift = pars['shift'].value decay = pars['decay'].value if abs(shift) > pi/2: shift = shift - np.sign(shift) * pi model = amp*np.sin(shift + x/per) * np.exp(-x*x*decay*decay) if data is None: return model return (model - data) def test_diffev_bounds_check(self): # You need finite (min, max) for each parameter if you're using # differential_evolution. self.fit_params['decay'].min = None self.minimizer = 'differential_evolution' np.testing.assert_raises(ValueError, self.scalar_minimizer) def test_scalar_minimizers(self): # test all the scalar minimizers for method in SCALAR_METHODS: if method in ['newton', 'dogleg', 'trust-ncg']: continue self.minimizer = SCALAR_METHODS[method] if method == 'Nelder-Mead': sig = 0.2 else: sig = 0.15 self.scalar_minimizer(sig=sig) def scalar_minimizer(self, sig=0.15): try: from scipy.optimize import minimize as scipy_minimize except ImportError: raise SkipTest print(self.minimizer) out = self.mini.scalar_minimize(method=self.minimizer) fit = self.residual(out.params, self.x) for name, par in out.params.items(): nout = "%s:%s" % (name, ' '*(20-len(name))) print("%s: %s (%s) " % (nout, par.value, self.p_true[name].value)) for para, true_para in zip(out.params.values(), self.p_true.values()): check_wo_stderr(para, true_para.value, sig=sig) if __name__ == '__main__': nose.main() lmfit-0.9.2/tests/test_basicfit.py0000644000032700003100000000273612603520205020457 0ustar newvillegeocars00000000000000import numpy as np from lmfit import minimize, Parameters, Parameter, report_fit from lmfit_testutils import assert_paramval, assert_paramattr def test_basic(): # create data to be fitted x = np.linspace(0, 15, 301) data = (5. * np.sin(2 * x - 0.1) * np.exp(-x*x*0.025) + np.random.normal(size=len(x), scale=0.2) ) # define objective function: returns the array to be minimized def fcn2min(params, x, data): """ model decaying sine wave, subtract data""" amp = params['amp'].value shift = params['shift'].value omega = params['omega'].value decay = params['decay'].value model = amp * np.sin(x * omega + shift) * np.exp(-x*x*decay) return model - data # create a set of Parameters params = Parameters() params.add('amp', value= 10, min=0) params.add('decay', value= 0.1) params.add('shift', value= 0.0, min=-np.pi/2., max=np.pi/2) params.add('omega', value= 3.0) # do fit, here with leastsq model result = minimize(fcn2min, params, args=(x, data)) # calculate final result final = data + result.residual # report_fit(result) assert(result.nfev > 5) assert(result.nfev < 500) assert(result.chisqr > 1) assert(result.nvarys == 4) assert_paramval(result.params['amp'], 5.03, tol=0.05) assert_paramval(result.params['omega'], 2.0, tol=0.05) if __name__ == '__main__': test_basic() lmfit-0.9.2/tests/test_parameters.py0000644000032700003100000000666012613715346021053 0ustar newvillegeocars00000000000000from __future__ import print_function from lmfit import Parameters, Parameter from numpy.testing import assert_, assert_almost_equal import unittest from copy import deepcopy import numpy as np import pickle class TestParameters(unittest.TestCase): def setUp(self): self.params = Parameters() self.params.add_many(('a', 1., True, None, None, None), ('b', 2., True, None, None, None), ('c', 3., True, None, None, '2. * a')) def test_expr_was_evaluated(self): self.params.update_constraints() assert_almost_equal(self.params['c'].value, 2 * self.params['a'].value) def test_deepcopy(self): # check that a simple copy works b = deepcopy(self.params) assert_(self.params == b) # check that we can add a symbol to the interpreter self.params['b'].expr = 'sin(1)' self.params['b'].value = 10 assert_almost_equal(self.params['b'].value, np.sin(1)) assert_almost_equal(self.params._asteval.symtable['b'], np.sin(1)) # check that the symbols in the interpreter are still the same after # deepcopying b = deepcopy(self.params) unique_symbols_params = self.params._asteval.user_defined_symbols() unique_symbols_b = self.params._asteval.user_defined_symbols() assert_(unique_symbols_b == unique_symbols_params) for unique_symbol in unique_symbols_b: if self.params._asteval.symtable[unique_symbol] is np.nan: continue assert_(self.params._asteval.symtable[unique_symbol] == b._asteval.symtable[unique_symbol]) def test_add_many_params(self): # test that we can add many parameters, but only parameters are added. a = Parameter('a', 1) b = Parameter('b', 2) p = Parameters() p.add_many(a, b) assert_(list(p.keys()) == ['a', 'b']) def test_expr_and_constraints_GH265(self): # test that parameters are reevaluated if they have bounds and expr # see GH265 p = Parameters() p['a'] = Parameter('a', 10, True) p['b'] = Parameter('b', 10, True, 0, 20) p['a'].expr = '2 * b' assert_almost_equal(p['a'].value, 20) p['b'].value = 15 assert_almost_equal(p['b'].value, 15) assert_almost_equal(p['a'].value, 30) p['b'].value = 30 assert_almost_equal(p['b'].value, 20) assert_almost_equal(p['a'].value, 40) def test_pickle_parameter(self): # test that we can pickle a Parameter p = Parameter('a', 10, True, 0, 1) pkl = pickle.dumps(p) q = pickle.loads(pkl) assert_(p == q) def test_pickle_parameters(self): # test that we can pickle a Parameters object p = Parameters() p.add('a', 10, True, 0, 100) p.add('b', 10, True, 0, 100, 'a * sin(1)') p.update_constraints() p._asteval.symtable['abc'] = '2 * 3.142' pkl = pickle.dumps(p, -1) q = pickle.loads(pkl) q.update_constraints() assert_(p == q) assert_(not p is q) # now test if the asteval machinery survived assert_(q._asteval.symtable['abc'] == '2 * 3.142') if __name__ == '__main__': unittest.main() lmfit-0.9.2/tests/test_bounds.py0000644000032700003100000000322112603520205020153 0ustar newvillegeocars00000000000000from lmfit import Parameters, minimize, fit_report from lmfit_testutils import assert_paramval, assert_paramattr from numpy import linspace, zeros, sin, exp, random, pi, sign def test_bounds(): p_true = Parameters() p_true.add('amp', value=14.0) p_true.add('period', value=5.4321) p_true.add('shift', value=0.12345) p_true.add('decay', value=0.01000) def residual(pars, x, data=None): amp = pars['amp'].value per = pars['period'].value shift = pars['shift'].value decay = pars['decay'].value if abs(shift) > pi/2: shift = shift - sign(shift)*pi model = amp*sin(shift + x/per) * exp(-x*x*decay*decay) if data is None: return model return (model - data) n = 1500 xmin = 0. xmax = 250.0 random.seed(0) noise = random.normal(scale=2.80, size=n) x = linspace(xmin, xmax, n) data = residual(p_true, x) + noise fit_params = Parameters() fit_params.add('amp', value=13.0, max=20, min=0.0) fit_params.add('period', value=2, max=10) fit_params.add('shift', value=0.0, max=pi/2., min=-pi/2.) fit_params.add('decay', value=0.02, max=0.10, min=0.00) out = minimize(residual, fit_params, args=(x,), kws={'data':data}) fit = residual(out.params, x) assert(out.nfev > 10) assert(out.nfree > 50) assert(out.chisqr > 1.0) print(fit_report(out, show_correl=True, modelpars=p_true)) assert_paramval(out.params['decay'], 0.01, tol=1.e-2) assert_paramval(out.params['shift'], 0.123, tol=1.e-2) if __name__ == '__main__': test_bounds() lmfit-0.9.2/tests/test_1variable.py0000644000032700003100000000305412603520205020533 0ustar newvillegeocars00000000000000# test of fitting one variable # From Nick Schurch import lmfit, numpy from numpy.testing import assert_allclose def linear_chisq(params, x, data, errs=None): ''' Calcs chi-squared residuals linear model (weighted by errors if given) ''' if type(params) is not lmfit.parameter.Parameters: msg = "Params argument is not a lmfit parameter set" raise TypeError(msg) if "m" not in params.keys(): msg = "No slope parameter (m) defined in the model" raise KeyError(msg) if "c" not in params.keys(): msg = "No intercept parameter (c) defined in the model" raise KeyError(msg) m = params["m"].value c = params["c"].value model = m*x+c residuals = (data-model) if errs is not None: residuals = residuals/errs return(residuals) def test_1var(): rands = [-0.21698284, 0.41900591, 0.02349374, -0.218552, -0.3513699, 0.33418304, 0.04226855, 0.213303, 0.45948731, 0.33587736] x = numpy.arange(10)+1 y = numpy.arange(10)+1+rands y_errs = numpy.sqrt(y)/2 params = lmfit.Parameters() params.add(name="m", value=1.0, vary=True) params.add(name="c", value=0.0, vary=False) out = lmfit.minimize(linear_chisq, params, args=(x, y)) lmfit.report_fit(out) assert_allclose(params['m'].value, 1.025, rtol=0.02, atol=0.02) assert(len(params)==2) assert(out.nvarys == 1) assert(out.chisqr > 0.01) assert(out.chisqr < 5.00) if __name__ == '__main__': test_1var() lmfit-0.9.2/tests/_test_ci.py0000644000032700003100000000332612603520205017421 0ustar newvillegeocars00000000000000from __future__ import print_function from lmfit import minimize, Parameters, conf_interval, report_ci, report_errors import numpy as np pi = np.pi import nose def test_ci(): np.random.seed(1) p_true = Parameters() p_true.add('amp', value=14.0) p_true.add('period', value=5.33) p_true.add('shift', value=0.123) p_true.add('decay', value=0.010) def residual(pars, x, data=None): amp = pars['amp'].value per = pars['period'].value shift = pars['shift'].value decay = pars['decay'].value if abs(shift) > pi / 2: shift = shift - np.sign(shift) * pi model = amp * np.sin(shift + x / per) * np.exp(-x * x * decay * decay) if data is None: return model return model - data n = 2500 xmin = 0. xmax = 250.0 noise = np.random.normal(scale=0.7215, size=n) x = np.linspace(xmin, xmax, n) data = residual(p_true, x) + noise fit_params = Parameters() fit_params.add('amp', value=13.0) fit_params.add('period', value=4) fit_params.add('shift', value=0.1) fit_params.add('decay', value=0.02) out = minimize(residual, fit_params, args=(x,), kws={'data': data}) fit = residual(fit_params, x) print( ' N fev = ', out.nfev) print( out.chisqr, out.redchi, out.nfree) report_errors(fit_params) ci, tr = conf_interval(out, sigmas=[0.674], trace=True) report_ci(ci) for p in out.params: diff1 = ci[p][1][1] - ci[p][0][1] diff2 = ci[p][2][1] - ci[p][1][1] stderr = out.params[p].stderr assert(abs(diff1 - stderr) / stderr < 0.05) assert(abs(diff2 - stderr) / stderr < 0.05) lmfit-0.9.2/tests/test_copy_params.py0000644000032700003100000000171312603520205021202 0ustar newvillegeocars00000000000000import numpy as np from lmfit import Parameters, minimize, report_fit def get_data(): x = np.arange(0, 1, 0.01) y1 = 1.5*np.exp(0.9*x) + np.random.normal(scale=0.001, size=len(x)) y2 = 2.0 + x + 1/2.*x**2 +1/3.*x**3 y2 = y2 + np.random.normal(scale=0.001, size=len(x)) return x, y1, y2 def residual(params, x, data): a = params['a'].value b = params['b'].value model = a*np.exp(b*x) return (data-model) def test_copy_params(): x, y1, y2 = get_data() params = Parameters() params.add('a', value = 2.0) params.add('b', value = 2.0) # fit to first data set out1 = minimize(residual, params, args=(x, y1)) # fit to second data set out2 = minimize(residual, params, args=(x, y2)) adiff = out1.params['a'].value - out2.params['a'].value bdiff = out1.params['b'].value - out2.params['b'].value assert(abs(adiff) > 1.e-2) assert(abs(bdiff) > 1.e-2) lmfit-0.9.2/tests/test_params_set.py0000644000032700003100000000360012613715346021035 0ustar newvillegeocars00000000000000import numpy as np from numpy.testing import assert_allclose from lmfit import Parameters, minimize, report_fit from lmfit.lineshapes import gaussian from lmfit.models import VoigtModel def test_param_set(): np.random.seed(2015) x = np.arange(0, 20, 0.05) y = gaussian(x, amplitude=15.43, center=4.5, sigma=2.13) y = y + 0.05 - 0.01*x + np.random.normal(scale=0.03, size=len(x)) model = VoigtModel() params = model.guess(y, x=x) # test #1: gamma is constrained to equal sigma assert(params['gamma'].expr == 'sigma') params.update_constraints() sigval = params['gamma'].value assert_allclose(params['gamma'].value, sigval, 1e-4, 1e-4, '', True) # test #2: explicitly setting a param value should work, even when # it had been an expression. The value will be left as fixed gamval = 0.87543 params['gamma'].set(value=gamval) assert(params['gamma'].expr is None) assert(not params['gamma'].vary) assert_allclose(params['gamma'].value, gamval, 1e-4, 1e-4, '', True) # test #3: explicitly setting an expression should work # Note, the only way to ensure that **ALL** constraints are up to date # is to call params.update_constraints(). This is because the constraint # may have multiple dependencies. params['gamma'].set(expr='sigma/2.0') assert(params['gamma'].expr is not None) assert(not params['gamma'].vary) params.update_constraints() assert_allclose(params['gamma'].value, sigval/2.0, 1e-4, 1e-4, '', True) # test #4: explicitly setting a param value WITH vary=True # will set it to be variable gamval = 0.7777 params['gamma'].set(value=gamval, vary=True) assert(params['gamma'].expr is None) assert(params['gamma'].vary) assert_allclose(params['gamma'].value, gamval, 1e-4, 1e-4, '', True) test_param_set()lmfit-0.9.2/tests/test_manypeaks_speed.py0000644000032700003100000000152312613715346022051 0ustar newvillegeocars00000000000000# # test speed of building complex model # import time import sys import numpy as np from lmfit import Model from lmfit.lineshapes import gaussian from copy import deepcopy sys.setrecursionlimit(2000) def test_manypeaks_speed(): x = np.linspace( -5, 5, 251) model = None t0 = time.time() for i in np.arange(500): g = Model(gaussian, prefix='g%i_' % i) if model is None: model = g else: model += g t1 = time.time() pars = model.make_params() t2 = time.time() cpars = deepcopy(pars) t3 = time.time() # these are very conservative tests that # should be satisfied on nearly any machine assert((t3-t2) < 0.5) assert((t2-t1) < 0.5) assert((t1-t0) < 5.0) if __name__ == '__main__': test_manypeaks_speed() lmfit-0.9.2/tests/test_model.py0000644000032700003100000004615212613715346020010 0ustar newvillegeocars00000000000000import unittest import warnings import nose from numpy.testing import assert_allclose from numpy.testing.decorators import knownfailureif import numpy as np from lmfit import Model, Parameter, models from lmfit.lineshapes import gaussian def assert_results_close(actual, desired, rtol=1e-03, atol=1e-03, err_msg='', verbose=True): for param_name, value in desired.items(): assert_allclose(actual[param_name], value, rtol, atol, err_msg, verbose) def _skip_if_no_pandas(): try: import pandas except ImportError: raise nose.SkipTest("Skipping tests that require pandas.") class CommonTests(object): # to be subclassed for testing predefined models def setUp(self): np.random.seed(1) self.noise = 0.0001*np.random.randn(*self.x.shape) # Some Models need args (e.g., polynomial order), and others don't. try: args = self.args except AttributeError: self.model = self.model_constructor() self.model_drop = self.model_constructor(missing='drop') self.model_raise = self.model_constructor(missing='raise') self.model_explicit_var = self.model_constructor(['x']) func = self.model.func else: self.model = self.model_constructor(*args) self.model_drop = self.model_constructor(*args, missing='drop') self.model_raise = self.model_constructor(*args, missing='raise') self.model_explicit_var = self.model_constructor( *args, independent_vars=['x']) func = self.model.func self.data = func(x=self.x, **self.true_values()) + self.noise @property def x(self): return np.linspace(1, 10, num=1000) def test_fit(self): model = self.model # Pass Parameters object. params = model.make_params(**self.guess()) result = model.fit(self.data, params, x=self.x) assert_results_close(result.values, self.true_values()) # Pass inidividual Parameter objects as kwargs. kwargs = {name: p for name, p in params.items()} result = self.model.fit(self.data, x=self.x, **kwargs) assert_results_close(result.values, self.true_values()) # Pass guess values (not Parameter objects) as kwargs. kwargs = {name: p.value for name, p in params.items()} result = self.model.fit(self.data, x=self.x, **kwargs) assert_results_close(result.values, self.true_values()) def test_explicit_independent_vars(self): self.check_skip_independent_vars() model = self.model_explicit_var pars = model.make_params(**self.guess()) result = model.fit(self.data, pars, x=self.x) assert_results_close(result.values, self.true_values()) def test_fit_with_weights(self): model = self.model # fit without weights params = model.make_params(**self.guess()) out1 = model.fit(self.data, params, x=self.x) # fit with weights weights = 1.0/(0.5 + self.x**2) out2 = model.fit(self.data, params, weights=weights, x=self.x) max_diff = 0.0 for parname, val1 in out1.values.items(): val2 = out2.values[parname] if max_diff < abs(val1-val2): max_diff = abs(val1-val2) assert(max_diff > 1.e-8) def test_result_attributes(self): pars = self.model.make_params(**self.guess()) result = self.model.fit(self.data, pars, x=self.x) # result.init_values assert_results_close(result.values, self.true_values()) self.assertEqual(result.init_values, self.guess()) # result.init_params params = self.model.make_params() for param_name, value in self.guess().items(): params[param_name].value = value self.assertEqual(result.init_params, params) # result.best_fit assert_allclose(result.best_fit, self.data, atol=self.noise.max()) # result.init_fit init_fit = self.model.func(x=self.x, **self.guess()) assert_allclose(result.init_fit, init_fit) # result.model self.assertTrue(result.model is self.model) def test_result_eval(self): # Check eval() output against init_fit and best_fit. pars = self.model.make_params(**self.guess()) result = self.model.fit(self.data, pars, x=self.x) assert_allclose(result.eval(x=self.x, **result.values), result.best_fit) assert_allclose(result.eval(x=self.x, **result.init_values), result.init_fit) def test_result_eval_custom_x(self): self.check_skip_independent_vars() pars = self.model.make_params(**self.guess()) result = self.model.fit(self.data, pars, x=self.x) # Check that the independent variable is respected. short_eval = result.eval(x=np.array([0, 1, 2]), **result.values) self.assertEqual(len(short_eval), 3) def test_data_alignment(self): _skip_if_no_pandas() from pandas import Series # Align data and indep var of different lengths using pandas index. data = Series(self.data.copy()).iloc[10:-10] x = Series(self.x.copy()) model = self.model params = model.make_params(**self.guess()) result = model.fit(data, params, x=x) result = model.fit(data, params, x=x) assert_results_close(result.values, self.true_values()) # Skip over missing (NaN) values, aligning via pandas index. data.iloc[500:510] = np.nan result = self.model_drop.fit(data, params, x=x) assert_results_close(result.values, self.true_values()) # Raise if any NaN values are present. raises = lambda: self.model_raise.fit(data, params, x=x) self.assertRaises(ValueError, raises) def check_skip_independent_vars(self): # to be overridden for models that do not accept indep vars pass def test_aic(self): model = self.model # Pass Parameters object. params = model.make_params(**self.guess()) result = model.fit(self.data, params, x=self.x) aic = result.aic self.assertTrue(aic < 0) # aic must be negative # Pass extra unused Parameter. params.add("unused_param", value=1.0, vary=True) result = model.fit(self.data, params, x=self.x) aic_extra = result.aic self.assertTrue(aic_extra < 0) # aic must be negative self.assertTrue(aic < aic_extra) # the extra param should lower the aic def test_bic(self): model = self.model # Pass Parameters object. params = model.make_params(**self.guess()) result = model.fit(self.data, params, x=self.x) bic = result.bic self.assertTrue(bic < 0) # aic must be negative # Compare to AIC aic = result.aic self.assertTrue(aic < bic) # aic should be lower than bic # Pass extra unused Parameter. params.add("unused_param", value=1.0, vary=True) result = model.fit(self.data, params, x=self.x) bic_extra = result.bic self.assertTrue(bic_extra < 0) # bic must be negative self.assertTrue(bic < bic_extra) # the extra param should lower the bic class TestUserDefiniedModel(CommonTests, unittest.TestCase): # mainly aimed at checking that the API does what it says it does # and raises the right exceptions or warnings when things are not right def setUp(self): self.true_values = lambda: dict(amplitude=7.1, center=1.1, sigma=2.40) self.guess = lambda: dict(amplitude=5, center=2, sigma=4) # return a fresh copy self.model_constructor = ( lambda *args, **kwargs: Model(gaussian, *args, **kwargs)) super(TestUserDefiniedModel, self).setUp() @property def x(self): return np.linspace(-10, 10, num=1000) def test_lists_become_arrays(self): # smoke test self.model.fit([1, 2, 3], x=[1, 2, 3], **self.guess()) self.model.fit([1, 2, None, 3], x=[1, 2, 3, 4], **self.guess()) def test_missing_param_raises_error(self): # using keyword argument parameters guess_missing_sigma = self.guess() del guess_missing_sigma['sigma'] # f = lambda: self.model.fit(self.data, x=self.x, **guess_missing_sigma) # self.assertRaises(ValueError, f) # using Parameters params = self.model.make_params() for param_name, value in guess_missing_sigma.items(): params[param_name].value = value f = lambda: self.model.fit(self.data, params, x=self.x) def test_extra_param_issues_warning(self): # The function accepts extra params, Model will warn but not raise. def flexible_func(x, amplitude, center, sigma, **kwargs): return gaussian(x, amplitude, center, sigma) flexible_model = Model(flexible_func) pars = flexible_model.make_params(**self.guess()) with warnings.catch_warnings(record=True) as w: warnings.simplefilter("always") flexible_model.fit(self.data, pars, x=self.x, extra=5) self.assertTrue(len(w) == 1) self.assertTrue(issubclass(w[-1].category, UserWarning)) def test_missing_independent_variable_raises_error(self): pars = self.model.make_params(**self.guess()) f = lambda: self.model.fit(self.data, pars) self.assertRaises(KeyError, f) def test_bounding(self): true_values = self.true_values() true_values['center'] = 1.3 # as close as it's allowed to get pars = self.model.make_params(**self.guess()) pars['center'].set(value=2, min=1.3) result = self.model.fit(self.data, pars, x=self.x) assert_results_close(result.values, true_values, rtol=0.05) def test_vary_false(self): true_values = self.true_values() true_values['center'] = 1.3 pars = self.model.make_params(**self.guess()) pars['center'].set(value=1.3, vary=False) result = self.model.fit(self.data, pars, x=self.x) assert_results_close(result.values, true_values, rtol=0.05) # testing model addition... def test_user_defined_gaussian_plus_constant(self): data = self.data + 5.0 model = self.model + models.ConstantModel() guess = self.guess() pars = model.make_params(c= 10.1, **guess) true_values = self.true_values() true_values['c'] = 5.0 result = model.fit(data, pars, x=self.x) assert_results_close(result.values, true_values, rtol=0.01, atol=0.01) def test_model_with_prefix(self): # model with prefix of 'a' and 'b' mod = models.GaussianModel(prefix='a') vals = {'center': 2.45, 'sigma':0.8, 'amplitude':3.15} data = gaussian(x=self.x, **vals) + self.noise/3.0 pars = mod.guess(data, x=self.x) self.assertTrue('aamplitude' in pars) self.assertTrue('asigma' in pars) out = mod.fit(data, pars, x=self.x) self.assertTrue(out.params['aamplitude'].value > 2.0) self.assertTrue(out.params['acenter'].value > 2.0) self.assertTrue(out.params['acenter'].value < 3.0) mod = models.GaussianModel(prefix='b') data = gaussian(x=self.x, **vals) + self.noise/3.0 pars = mod.guess(data, x=self.x) self.assertTrue('bamplitude' in pars) self.assertTrue('bsigma' in pars) def test_change_prefix(self): "should fail" mod = models.GaussianModel(prefix='b') set_prefix_failed = None try: mod.prefix = 'c' set_prefix_failed = False except AttributeError: set_prefix_failed = True except: set_prefix_failed = None self.assertTrue(set_prefix_failed) def test_sum_of_two_gaussians(self): # two user-defined gaussians model1 = self.model f2 = lambda x, amp, cen, sig: gaussian(x, amplitude=amp, center=cen, sigma=sig) model2 = Model(f2) values1 = self.true_values() values2 = {'cen': 2.45, 'sig':0.8, 'amp':3.15} data = gaussian(x=self.x, **values1) + f2(x=self.x, **values2) + self.noise/3.0 model = self.model + model2 pars = model.make_params() pars['sigma'].set(value=2, min=0) pars['center'].set(value=1, min=0.2, max=1.8) pars['amplitude'].set(value=3, min=0) pars['sig'].set(value=1, min=0) pars['cen'].set(value=2.4, min=2, max=3.5) pars['amp'].set(value=1, min=0) true_values = dict(list(values1.items()) + list(values2.items())) result = model.fit(data, pars, x=self.x) assert_results_close(result.values, true_values, rtol=0.01, atol=0.01) # user-defined models with common parameter names # cannot be added, and should raise f = lambda: model1 + model1 self.assertRaises(NameError, f) # two predefined_gaussians, using suffix to differentiate model1 = models.GaussianModel(prefix='g1_') model2 = models.GaussianModel(prefix='g2_') model = model1 + model2 true_values = {'g1_center': values1['center'], 'g1_amplitude': values1['amplitude'], 'g1_sigma': values1['sigma'], 'g2_center': values2['cen'], 'g2_amplitude': values2['amp'], 'g2_sigma': values2['sig']} pars = model.make_params() pars['g1_sigma'].set(2) pars['g1_center'].set(1) pars['g1_amplitude'].set(3) pars['g2_sigma'].set(1) pars['g2_center'].set(2.4) pars['g2_amplitude'].set(1) result = model.fit(data, pars, x=self.x) assert_results_close(result.values, true_values, rtol=0.01, atol=0.01) # without suffix, the names collide and Model should raise model1 = models.GaussianModel() model2 = models.GaussianModel() f = lambda: model1 + model2 self.assertRaises(NameError, f) def test_sum_composite_models(self): # test components of composite model created adding composite model model1 = models.GaussianModel(prefix='g1_') model2 = models.GaussianModel(prefix='g2_') model3 = models.GaussianModel(prefix='g3_') model4 = models.GaussianModel(prefix='g4_') model_total1 = (model1 + model2) + model3 for mod in [model1, model2, model3]: self.assertTrue(mod in model_total1.components) model_total2 = model1 + (model2 + model3) for mod in [model1, model2, model3]: self.assertTrue(mod in model_total2.components) model_total3 = (model1 + model2) + (model3 + model4) for mod in [model1, model2, model3, model4]: self.assertTrue(mod in model_total3.components) def test_composite_has_bestvalues(self): # test that a composite model has non-empty best_values model1 = models.GaussianModel(prefix='g1_') model2 = models.GaussianModel(prefix='g2_') mod = model1 + model2 pars = mod.make_params() values1 = dict(amplitude=7.10, center=1.1, sigma=2.40) values2 = dict(amplitude=12.2, center=2.5, sigma=0.5) data = gaussian(x=self.x, **values1) + gaussian(x=self.x, **values2) + 0.1*self.noise pars['g1_sigma'].set(2) pars['g1_center'].set(1, max=1.5) pars['g1_amplitude'].set(3) pars['g2_sigma'].set(1) pars['g2_center'].set(2.6, min=2.0) pars['g2_amplitude'].set(1) result = mod.fit(data, params=pars, x=self.x) self.assertTrue(len(result.best_values) == 6) self.assertTrue(abs(result.params['g1_amplitude'].value - 7.1) < 0.5) self.assertTrue(abs(result.params['g2_amplitude'].value - 12.2) < 0.5) self.assertTrue(abs(result.params['g1_center'].value - 1.1) < 0.2) self.assertTrue(abs(result.params['g2_center'].value - 2.5) < 0.2) def test_hints_in_composite_models(self): # test propagation of hints from base models to composite model def func(x, amplitude): pass m1 = Model(func, prefix='p1_') m2 = Model(func, prefix='p2_') m1.set_param_hint('amplitude', value=1) m2.set_param_hint('amplitude', value=2) mx = (m1 + m2) params = mx.make_params() param_values = {name: p.value for name, p in params.items()} self.assertEqual(param_values['p1_amplitude'], 1) self.assertEqual(param_values['p2_amplitude'], 2) class TestLinear(CommonTests, unittest.TestCase): def setUp(self): self.true_values = lambda: dict(slope=5, intercept=2) self.guess = lambda: dict(slope=10, intercept=6) self.model_constructor = models.LinearModel super(TestLinear, self).setUp() class TestParabolic(CommonTests, unittest.TestCase): def setUp(self): self.true_values = lambda: dict(a=5, b=2, c=8) self.guess = lambda: dict(a=1, b=6, c=3) self.model_constructor = models.ParabolicModel super(TestParabolic, self).setUp() class TestPolynomialOrder2(CommonTests, unittest.TestCase): # class Polynomial constructed with order=2 def setUp(self): self.true_values = lambda: dict(c2=5, c1=2, c0=8) self.guess = lambda: dict(c1=1, c2=6, c0=3) self.model_constructor = models.PolynomialModel self.args = (2,) super(TestPolynomialOrder2, self).setUp() class TestPolynomialOrder3(CommonTests, unittest.TestCase): # class Polynomial constructed with order=3 def setUp(self): self.true_values = lambda: dict(c3=2, c2=5, c1=2, c0=8) self.guess = lambda: dict(c3=1, c1=1, c2=6, c0=3) self.model_constructor = models.PolynomialModel self.args = (3,) super(TestPolynomialOrder3, self).setUp() class TestConstant(CommonTests, unittest.TestCase): def setUp(self): self.true_values = lambda: dict(c=5) self.guess = lambda: dict(c=2) self.model_constructor = models.ConstantModel super(TestConstant, self).setUp() def check_skip_independent_vars(self): raise nose.SkipTest("ConstantModel has not independent_vars.") class TestPowerlaw(CommonTests, unittest.TestCase): def setUp(self): self.true_values = lambda: dict(amplitude=5, exponent=3) self.guess = lambda: dict(amplitude=2, exponent=8) self.model_constructor = models.PowerLawModel super(TestPowerlaw, self).setUp() class TestExponential(CommonTests, unittest.TestCase): def setUp(self): self.true_values = lambda: dict(amplitude=5, decay=3) self.guess = lambda: dict(amplitude=2, decay=8) self.model_constructor = models.ExponentialModel super(TestExponential, self).setUp() lmfit-0.9.2/tests/test_NIST_Strd.py0000644000032700003100000001663012603520205020442 0ustar newvillegeocars00000000000000from __future__ import print_function import sys import math from optparse import OptionParser from lmfit import Parameters, minimize from NISTModels import Models, ReadNistData HASPYLAB = False for arg in sys.argv: if 'nose' in arg: HASPYLAB = False if HASPYLAB: try: import matplotlib import pylab HASPYLAB = True except ImportError: HASPYLAB = False def ndig(a, b): "precision for NIST values" return round(-math.log10((abs(abs(a)-abs(b)) +1.e-15)/ abs(b))) ABAR = ' |----------------+----------------+------------------+-------------------|' def Compare_NIST_Results(DataSet, myfit, params, NISTdata): buff = [' ======================================', ' %s: ' % DataSet, ' | Parameter Name | Value Found | Certified Value | # Matching Digits |'] buff.append(ABAR) val_dig_min = 200 err_dig_min = 200 fmt = ' | %s | % -.7e | % -.7e | %2i |' for i in range(NISTdata['nparams']): parname = 'b%i' % (i+1) par = params[parname] thisval = par.value certval = NISTdata['cert_values'][i] vdig = ndig(thisval, certval) pname = (parname + ' value ' + ' '*14)[:14] buff.append(fmt % (pname, thisval, certval, vdig)) val_dig_min = min(val_dig_min, vdig) thiserr = par.stderr certerr = NISTdata['cert_stderr'][i] if thiserr is not None and myfit.errorbars: edig = ndig(thiserr, certerr) ename = (parname + ' stderr' + ' '*14)[:14] buff.append(fmt % (ename, thiserr, certerr, edig)) err_dig_min = min(err_dig_min, edig) buff.append(ABAR) sumsq = NISTdata['sum_squares'] try: chi2 = myfit.chisqr buff.append(' | Sum of Squares | %.7e | %.7e | %2i |' % (chi2, sumsq, ndig(chi2, sumsq))) except: pass buff.append(ABAR) if not myfit.errorbars: buff.append(' | * * * * COULD NOT ESTIMATE UNCERTAINTIES * * * * |') err_dig_min = 0 if err_dig_min < 199: buff.append(' Worst agreement: %i digits for value, %i digits for error ' % (val_dig_min, err_dig_min)) else: buff.append(' Worst agreement: %i digits' % (val_dig_min)) return val_dig_min, '\n'.join(buff) def NIST_Dataset(DataSet, method='leastsq', start='start2', plot=True, verbose=False): NISTdata = ReadNistData(DataSet) resid, npar, dimx = Models[DataSet] y = NISTdata['y'] x = NISTdata['x'] params = Parameters() for i in range(npar): pname = 'b%i' % (i+1) cval = NISTdata['cert_values'][i] cerr = NISTdata['cert_stderr'][i] pval1 = NISTdata[start][i] params.add(pname, value=pval1) myfit = minimize(resid, params, method=method, args=(x,), kws={'y':y}) digs, buff = Compare_NIST_Results(DataSet, myfit, myfit.params, NISTdata) if verbose: print(buff) if plot and HASPYLAB: fit = -resid(myfit.params, x, ) pylab.plot(x, y, 'ro') pylab.plot(x, fit, 'k+-') pylab.show() return digs > 1 def build_usage(): modelnames = [] ms = '' for d in sorted(Models.keys()): ms = ms + ' %s ' % d if len(ms) > 55: modelnames.append(ms) ms = ' ' modelnames.append(ms) modelnames = '\n'.join(modelnames) usage = """ === Test Fit to NIST StRD Models === usage: ------ python fit_NIST.py [options] Model Start where Start is one of 'start1','start2' or 'cert', for different starting values, and Model is one of %s if Model = 'all', all models and starting values will be run. options: -------- -m name of fitting method. One of: leastsq, nelder, powell, lbfgsb, bfgs, tnc, cobyla, slsqp, cg, newto-cg leastsq (Levenberg-Marquardt) is the default """ % modelnames return usage ############################ def run_interactive(): usage = build_usage() parser = OptionParser(usage=usage, prog="fit-NIST.py") parser.add_option("-m", "--method", dest="method", metavar='METH', default='leastsq', help="set method name, default = 'leastsq'") (opts, args) = parser.parse_args() dset = '' start = 'start2' if len(args) > 0: dset = args[0] if len(args) > 1: start = args[1] if dset.lower() == 'all': tpass = 0 tfail = 0 failures = [] dsets = sorted(Models.keys()) for dset in dsets: for start in ('start1', 'start2', 'cert'): if NIST_Dataset(dset, method=opts.method, start=start, plot=False, verbose=True): tpass += 1 else: tfail += 1 failures.append(" %s (starting at '%s')" % (dset, start)) print('--------------------------------------') print(' Fit Method: %s ' % opts.method) print(' Final Results: %i pass, %i fail.' % (tpass, tfail)) print(' Tests Failed for:\n %s' % '\n '.join(failures)) print('--------------------------------------') elif dset not in Models: print(usage) else: return NIST_Dataset(dset, method=opts.method, start=start, plot=True, verbose=True) def RunNIST_Model(model): out1 = NIST_Dataset(model, start='start1', plot=False, verbose=False) out2 = NIST_Dataset(model, start='start2', plot=False, verbose=False) print("NIST Test" , model, out1, out2) assert(out1 or out2) return out1 or out2 def test_Bennett5(): return RunNIST_Model('Bennett5') def test_BoxBOD(): return RunNIST_Model('BoxBOD') def test_Chwirut1(): return RunNIST_Model('Chwirut1') def test_Chwirut2(): return RunNIST_Model('Chwirut2') def test_DanWood(): return RunNIST_Model('DanWood') def test_ENSO(): return RunNIST_Model('ENSO') def test_Eckerle4(): return RunNIST_Model('Eckerle4') def test_Gauss1(): return RunNIST_Model('Gauss1') def test_Gauss2(): return RunNIST_Model('Gauss2') def test_Gauss3(): return RunNIST_Model('Gauss3') def test_Hahn1(): return RunNIST_Model('Hahn1') def test_Kirby2(): return RunNIST_Model('Kirby2') def test_Lanczos1(): return RunNIST_Model('Lanczos1') def test_Lanczos2(): return RunNIST_Model('Lanczos2') def test_Lanczos3(): return RunNIST_Model('Lanczos3') def test_MGH09(): return RunNIST_Model('MGH09') def test_MGH10(): return RunNIST_Model('MGH10') def test_MGH17(): return RunNIST_Model('MGH17') def test_Misra1a(): return RunNIST_Model('Misra1a') def test_Misra1b(): return RunNIST_Model('Misra1b') def test_Misra1c(): return RunNIST_Model('Misra1c') def test_Misra1d(): return RunNIST_Model('Misra1d') def test_Nelson(): return RunNIST_Model('Nelson') def test_Rat42(): return RunNIST_Model('Rat42') def test_Rat43(): return RunNIST_Model('Rat43') def test_Roszman1(): return RunNIST_Model('Roszman1') def test_Thurber(): return RunNIST_Model('Thurber') if __name__ == '__main__': run_interactive() lmfit-0.9.2/tests/lmfit_testutils.py0000644000032700003100000000111512603520205021055 0ustar newvillegeocars00000000000000from lmfit import Parameter from numpy.testing import assert_allclose def assert_paramval(param, val, tol=1.e-3): """assert that a named parameter's value is close to expected value""" assert(isinstance(param, Parameter)) pval = param.value assert_allclose([pval], [val], rtol=tol, atol=tol, err_msg='',verbose=True) def assert_paramattr(param, attr, val): """assert that a named parameter's value is a value""" assert(isinstance(param, Parameter)) assert(hasattr(param, attr)) assert(getattr(param, attr) == val) lmfit-0.9.2/tests/test_algebraic_constraint2.py0000644000032700003100000000626712613715346023152 0ustar newvillegeocars00000000000000from numpy import linspace, zeros, sin, exp, random, sqrt, pi, sign from lmfit import Parameters, Parameter, Minimizer from lmfit.lineshapes import gaussian, lorentzian, pvoigt from lmfit.printfuncs import report_fit import sys # Turn off plotting if run by nosetests. WITHPLOT = True for arg in sys.argv: if 'nose' in arg: WITHPLOT = False if WITHPLOT: try: import matplotlib import pylab except ImportError: WITHPLOT = False def test_constraints(with_plot=True): with_plot = with_plot and WITHPLOT def residual(pars, x, sigma=None, data=None): yg = gaussian(x, pars['amp_g'].value, pars['cen_g'].value, pars['wid_g'].value) yl = lorentzian(x, pars['amp_l'].value, pars['cen_l'].value, pars['wid_l'].value) slope = pars['line_slope'].value offset = pars['line_off'].value model = yg + yl + offset + x * slope if data is None: return model if sigma is None: return (model - data) return (model - data) / sigma n = 201 xmin = 0. xmax = 20.0 x = linspace(xmin, xmax, n) data = (gaussian(x, 21, 8.1, 1.2) + lorentzian(x, 10, 9.6, 2.4) + random.normal(scale=0.23, size=n) + x*0.5) if with_plot: pylab.plot(x, data, 'r+') pfit = Parameters() pfit.add(name='amp_g', value=10) pfit.add(name='cen_g', value=9) pfit.add(name='wid_g', value=1) pfit.add(name='amp_tot', value=20) pfit.add(name='amp_l', expr='amp_tot - amp_g') pfit.add(name='cen_l', expr='1.5+cen_g') pfit.add(name='wid_l', expr='2*wid_g') pfit.add(name='line_slope', value=0.0) pfit.add(name='line_off', value=0.0) sigma = 0.021 # estimate of data error (for all data points) myfit = Minimizer(residual, pfit, fcn_args=(x,), fcn_kws={'sigma':sigma, 'data':data}, scale_covar=True) myfit.prepare_fit() init = residual(myfit.params, x) result = myfit.leastsq() print(' Nfev = ', result.nfev) print( result.chisqr, result.redchi, result.nfree) report_fit(result.params, min_correl=0.3) fit = residual(result.params, x) if with_plot: pylab.plot(x, fit, 'b-') assert(result.params['cen_l'].value == 1.5 + result.params['cen_g'].value) assert(result.params['amp_l'].value == result.params['amp_tot'].value - result.params['amp_g'].value) assert(result.params['wid_l'].value == 2 * result.params['wid_g'].value) # now, change fit slightly and re-run myfit.params['wid_l'].expr = '1.25*wid_g' result = myfit.leastsq() report_fit(result.params, min_correl=0.4) fit2 = residual(result.params, x) if with_plot: pylab.plot(x, fit2, 'k') pylab.show() assert(result.params['cen_l'].value == 1.5 + result.params['cen_g'].value) assert(result.params['amp_l'].value == result.params['amp_tot'].value - result.params['amp_g'].value) assert(result.params['wid_l'].value == 1.25 * result.params['wid_g'].value) test_constraints() lmfit-0.9.2/tests/test_confidence.py0000644000032700003100000000242112603520205020757 0ustar newvillegeocars00000000000000import numpy as np from numpy.testing import assert_allclose import lmfit from lmfit_testutils import assert_paramval def residual(params, x, data): a = params['a'].value b = params['b'].value return data - 1.0/(a*x)+b def test_confidence1(): x = np.linspace(0.3,10,100) np.random.seed(0) y = 1/(0.1*x)+2+0.1*np.random.randn(x.size) pars = lmfit.Parameters() pars.add_many(('a', 0.1), ('b', 1)) minimizer = lmfit.Minimizer(residual, pars, fcn_args=(x, y) ) out = minimizer.leastsq() # lmfit.report_fit(out) assert(out.nfev > 5) assert(out.nfev < 500) assert(out.chisqr < 3.0) assert(out.nvarys == 2) assert_paramval(out.params['a'], 0.1, tol=0.1) assert_paramval(out.params['b'], -2.0, tol=0.1) ci = lmfit.conf_interval(minimizer, out) assert_allclose(ci['b'][0][0], 0.997, rtol=0.01) assert_allclose(ci['b'][0][1], -2.022, rtol=0.01) assert_allclose(ci['b'][2][0], 0.674, rtol=0.01) assert_allclose(ci['b'][2][1], -1.997, rtol=0.01) assert_allclose(ci['b'][5][0], 0.95, rtol=0.01) assert_allclose(ci['b'][5][1], -1.96, rtol=0.01) # lmfit.printfuncs.report_ci(ci) if __name__ == '__main__': test_confidence1() lmfit-0.9.2/tests/test_algebraic_constraint.py0000644000032700003100000001042412613715346023056 0ustar newvillegeocars00000000000000from numpy import linspace, zeros, sin, exp, random, sqrt, pi, sign from lmfit import Parameters, Parameter, Minimizer from lmfit.lineshapes import gaussian, lorentzian, pvoigt from lmfit.printfuncs import report_fit def test_constraints1(): def residual(pars, x, sigma=None, data=None): yg = gaussian(x, pars['amp_g'].value, pars['cen_g'].value, pars['wid_g'].value) yl = lorentzian(x, pars['amp_l'].value, pars['cen_l'].value, pars['wid_l'].value) slope = pars['line_slope'].value offset = pars['line_off'].value model = yg + yl + offset + x * slope if data is None: return model if sigma is None: return (model - data) return (model - data)/sigma n = 601 xmin = 0. xmax = 20.0 x = linspace(xmin, xmax, n) data = (gaussian(x, 21, 8.1, 1.2) + lorentzian(x, 10, 9.6, 2.4) + random.normal(scale=0.23, size=n) + x*0.5) pfit = Parameters() pfit.add(name='amp_g', value=10) pfit.add(name='cen_g', value=9) pfit.add(name='wid_g', value=1) pfit.add(name='amp_tot', value=20) pfit.add(name='amp_l', expr='amp_tot - amp_g') pfit.add(name='cen_l', expr='1.5+cen_g') pfit.add(name='wid_l', expr='2*wid_g') pfit.add(name='line_slope', value=0.0) pfit.add(name='line_off', value=0.0) sigma = 0.021 # estimate of data error (for all data points) myfit = Minimizer(residual, pfit, fcn_args=(x,), fcn_kws={'sigma':sigma, 'data':data}, scale_covar=True) myfit.prepare_fit() init = residual(myfit.params, x) result = myfit.leastsq() print(' Nfev = ', result.nfev) print( result.chisqr, result.redchi, result.nfree) report_fit(result.params) pfit= result.params fit = residual(result.params, x) assert(pfit['cen_l'].value == 1.5 + pfit['cen_g'].value) assert(pfit['amp_l'].value == pfit['amp_tot'].value - pfit['amp_g'].value) assert(pfit['wid_l'].value == 2 * pfit['wid_g'].value) def test_constraints2(): """add a user-defined function to symbol table""" def residual(pars, x, sigma=None, data=None): yg = gaussian(x, pars['amp_g'].value, pars['cen_g'].value, pars['wid_g'].value) yl = lorentzian(x, pars['amp_l'].value, pars['cen_l'].value, pars['wid_l'].value) slope = pars['line_slope'].value offset = pars['line_off'].value model = yg + yl + offset + x * slope if data is None: return model if sigma is None: return (model - data) return (model - data)/sigma n = 601 xmin = 0. xmax = 20.0 x = linspace(xmin, xmax, n) data = (gaussian(x, 21, 8.1, 1.2) + lorentzian(x, 10, 9.6, 2.4) + random.normal(scale=0.23, size=n) + x*0.5) pfit = Parameters() pfit.add(name='amp_g', value=10) pfit.add(name='cen_g', value=9) pfit.add(name='wid_g', value=1) pfit.add(name='amp_tot', value=20) pfit.add(name='amp_l', expr='amp_tot - amp_g') pfit.add(name='cen_l', expr='1.5+cen_g') pfit.add(name='line_slope', value=0.0) pfit.add(name='line_off', value=0.0) sigma = 0.021 # estimate of data error (for all data points) myfit = Minimizer(residual, pfit, fcn_args=(x,), fcn_kws={'sigma':sigma, 'data':data}, scale_covar=True) def width_func(wpar): """ """ return 2*wpar myfit.params._asteval.symtable['wfun'] = width_func myfit.params.add(name='wid_l', expr='wfun(wid_g)') result = myfit.leastsq() print(' Nfev = ', result.nfev) print( result.chisqr, result.redchi, result.nfree) report_fit(result.params) pfit= result.params fit = residual(result.params, x) assert(pfit['cen_l'].value == 1.5 + pfit['cen_g'].value) assert(pfit['amp_l'].value == pfit['amp_tot'].value - pfit['amp_g'].value) assert(pfit['wid_l'].value == 2 * pfit['wid_g'].value) if __name__ == '__main__': test_constraints1() test_constraints2() lmfit-0.9.2/tests/_test_make_paras_and_func.py0000644000032700003100000000135612603520205022767 0ustar newvillegeocars00000000000000# -*- coding: utf-8 -*- import lmfit def test_wrap_function(): get_names = lambda p: [p_key for p_key in p ] def func(A, b, c, d=5, e=10): return A + b + c + d x0 = [1, 2, 3] para, f = lmfit.make_paras_and_func(func, x0) assert(get_names(para) == ['A', 'b', 'c']) y1 = f(para) y2 = func(*x0) assert(y1==y2) x0 = [1, 2, 3, 4] para, f = lmfit.make_paras_and_func(func, x0) assert(get_names(para) == ['A', 'b', 'c', 'd']) y1 = f(para) y2 = func(*x0) assert(y1==y2) x0 = [1, 2, 3] para, f = lmfit.make_paras_and_func(func, x0, {'e': 3}) assert(get_names(para) == ['A', 'b', 'c', 'e']) y1 = f(para) y2 = func(*x0) assert(y1==y2) lmfit-0.9.2/tests/test_stepmodel.py0000644000032700003100000000327712603520205020670 0ustar newvillegeocars00000000000000import numpy as np from lmfit import fit_report from lmfit.models import StepModel, ConstantModel from lmfit_testutils import assert_paramval, assert_paramattr def get_data(): x = np.linspace(0, 10, 201) dat = np.ones_like(x) dat[:48] = 0.0 dat[48:77] = np.arange(77-48)/(77.0-48) dat = dat + 5e-2*np.random.randn(len(x)) dat = 110.2 * dat + 12.0 return x, dat def test_stepmodel_linear(): x, y = get_data() stepmod = StepModel(form='linear') const = ConstantModel() pars = stepmod.guess(y, x) pars = pars + const.make_params(c=3*y.min()) mod = stepmod + const out = mod.fit(y, pars, x=x) assert(out.nfev > 5) assert(out.nvarys == 4) assert(out.chisqr > 1) assert(out.params['c'].value > 3) assert(out.params['center'].value > 1) assert(out.params['center'].value < 4) assert(out.params['sigma'].value > 0.5) assert(out.params['sigma'].value < 3.5) assert(out.params['amplitude'].value > 50) def test_stepmodel_erf(): x, y = get_data() stepmod = StepModel(form='linear') const = ConstantModel() pars = stepmod.guess(y, x) pars = pars + const.make_params(c=3*y.min()) mod = stepmod + const out = mod.fit(y, pars, x=x) assert(out.nfev > 5) assert(out.nvarys == 4) assert(out.chisqr > 1) assert(out.params['c'].value > 3) assert(out.params['center'].value > 1) assert(out.params['center'].value < 4) assert(out.params['amplitude'].value > 50) assert(out.params['sigma'].value > 0.2) assert(out.params['sigma'].value < 1.5) if __name__ == '__main__': # test_stepmodel_linear() test_stepmodel_erf() lmfit-0.9.2/tests/test_bounded_jacobian.py0000644000032700003100000000212712603520205022133 0ustar newvillegeocars00000000000000from lmfit import Parameters, minimize, fit_report from lmfit_testutils import assert_paramval, assert_paramattr import numpy as np def test_bounded_jacobian(): pars = Parameters() pars.add('x0', value=2.0) pars.add('x1', value=2.0, min=1.5) global jac_count jac_count = 0 def resid(params): x0 = params['x0'].value x1 = params['x1'].value return np.array([10 * (x1 - x0*x0), 1-x0]) def jac(params): global jac_count jac_count += 1 x0 = params['x0'].value return np.array([[-20*x0, 10], [-1, 0]]) out0 = minimize(resid, pars, Dfun=None) assert_paramval(out0.params['x0'], 1.2243, tol=0.02) assert_paramval(out0.params['x1'], 1.5000, tol=0.02) assert(jac_count == 0) out1 = minimize(resid, pars, Dfun=jac) assert_paramval(out1.params['x0'], 1.2243, tol=0.02) assert_paramval(out1.params['x1'], 1.5000, tol=0.02) assert(jac_count > 5) print(fit_report(out1, show_correl=True)) if __name__ == '__main__': test_bounded_jacobian() lmfit-0.9.2/tests/test_multidatasets.py0000644000032700003100000000475112603520205021555 0ustar newvillegeocars00000000000000# # example fitting to multiple (simulated) data sets # import numpy as np from lmfit import minimize, Parameters, fit_report from lmfit.lineshapes import gaussian def gauss_dataset(params, i, x): """calc gaussian from params for data set i using simple, hardwired naming convention""" amp = params['amp_%i' % (i+1)].value cen = params['cen_%i' % (i+1)].value sig = params['sig_%i' % (i+1)].value return gaussian(x, amp, cen, sig) def objective(params, x, data): """ calculate total residual for fits to several data sets held in a 2-D array, and modeled by Gaussian functions""" ndata, nx = data.shape resid = 0.0*data[:] # make residual per data set for i in range(ndata): resid[i, :] = data[i, :] - gauss_dataset(params, i, x) # now flatten this to a 1D array, as minimize() needs return resid.flatten() def test_multidatasets(): # create 5 datasets x = np.linspace( -1, 2, 151) data = [] for i in np.arange(5): amp = 2.60 + 1.50*np.random.rand() cen = -0.20 + 1.50*np.random.rand() sig = 0.25 + 0.03*np.random.rand() dat = gaussian(x, amp, cen, sig) + \ np.random.normal(size=len(x), scale=0.1) data.append(dat) # data has shape (5, 151) data = np.array(data) assert(data.shape) == (5, 151) # create 5 sets of parameters, one per data set pars = Parameters() for iy, y in enumerate(data): pars.add( 'amp_%i' % (iy+1), value=0.5, min=0.0, max=200) pars.add( 'cen_%i' % (iy+1), value=0.4, min=-2.0, max=2.0) pars.add( 'sig_%i' % (iy+1), value=0.3, min=0.01, max=3.0) # but now constrain all values of sigma to have the same value # by assigning sig_2, sig_3, .. sig_5 to be equal to sig_1 for iy in (2, 3, 4, 5): pars['sig_%i' % iy].expr='sig_1' # run the global fit to all the data sets out = minimize(objective, pars, args=(x, data)) assert(len(pars) == 15) assert(out.nvarys == 11) assert(out.nfev > 15) assert(out.chisqr > 1.0) assert(pars['amp_1'].value > 0.1) assert(pars['sig_1'].value > 0.1) assert(pars['sig_2'].value == pars['sig_1'].value) ## plot the data sets and fits # plt.figure() # for i in range(5): # y_fit = gauss_dataset(pars, i, x) # plt.plot(x, data[i, :], 'o', x, y_fit, '-') # plt.show() if __name__ == '__main__': test_multidatasets() lmfit-0.9.2/tests/test_default_kws.py0000644000032700003100000000121012603520205021165 0ustar newvillegeocars00000000000000import numpy as np from nose.tools import assert_true from lmfit.lineshapes import gaussian from lmfit.models import GaussianModel def test_default_inputs_gauss(): area = 1 cen = 0 std = 0.2 x = np.arange(-3, 3, 0.01) y = gaussian(x, area, cen, std) g = GaussianModel() fit_option1 = {'maxfev': 5000, 'xtol': 1e-2} result1 = g.fit(y, x=x, amplitude=1, center=0, sigma=0.5, fit_kws=fit_option1) fit_option2 = {'maxfev': 5000, 'xtol': 1e-6} result2 = g.fit(y, x=x, amplitude=1, center=0, sigma=0.5, fit_kws=fit_option2) assert_true(result1.values!=result2.values) return lmfit-0.9.2/MANIFEST.in0000644000032700003100000000061412613715346015664 0ustar newvillegeocars00000000000000include README.txt INSTALL LICENSE MANIFEST.in PKG-INFO THANKS.txt include setup.py publish_docs.sh include requirements.txt exclude *.pyc core.* *~ *.pdf recursive-include lmfit *.py recursive-include tests *.py *.dat recursive-include NIST_STRD *.dat recursive-include doc * recursive-exclude doc/_build * recursive-exclude doc *.pdf include versioneer.py include lmfit/_version.py lmfit-0.9.2/setup.py0000644000032700003100000000454212603520205015627 0ustar newvillegeocars00000000000000#!/usr/bin/env python # from distutils.core import setup from setuptools import setup import versioneer versioneer.VCS = 'git' versioneer.versionfile_source = 'lmfit/_version.py' versioneer.versionfile_build = 'lmfit/_version.py' versioneer.tag_prefix = '' versioneer.parentdir_prefix = 'lmfit-' long_desc = """A library for least-squares minimization and data fitting in Python. Built on top of scipy.optimize, lmfit provides a Parameter object which can be set as fixed or free, can have upper and/or lower bounds, or can be written in terms of algebraic constraints of other Parameters. The user writes a function to be minimized as a function of these Parameters, and the scipy.optimize methods are used to find the optimal values for the Parameters. The Levenberg-Marquardt (leastsq) is the default minimization algorithm, and provides estimated standard errors and correlations between varied Parameters. Other minimization methods, including Nelder-Mead's downhill simplex, Powell's method, BFGS, Sequential Least Squares, and others are also supported. Bounds and contraints can be placed on Parameters for all of these methods. In addition, methods for explicitly calculating confidence intervals are provided for exploring minmization problems where the approximation of estimating Parameter uncertainties from the covariance matrix is questionable. """ setup(name = 'lmfit', version = versioneer.get_version(), cmdclass = versioneer.get_cmdclass(), author = 'LMFit Development Team', author_email = 'matt.newville@gmail.com', url = 'http://lmfit.github.io/lmfit-py/', download_url = 'http://lmfit.github.io//lmfit-py/', install_requires = ['numpy', 'scipy'], license = 'BSD', description = "Least-Squares Minimization with Bounds and Constraints", long_description = long_desc, platforms = ['Windows', 'Linux', 'Mac OS X'], classifiers=['Intended Audience :: Science/Research', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Topic :: Scientific/Engineering', ], # test_suite='nose.collector', # test_requires=['Nose'], package_dir = {'lmfit': 'lmfit'}, packages = ['lmfit', 'lmfit.ui', 'lmfit.uncertainties'], ) lmfit-0.9.2/README0000644000032700003100000000550612267763555015025 0ustar newvillegeocars00000000000000LMfit-py ======== [![build status](https://travis-ci.org/lmfit/lmfit-py.png?branch=master)](https://travis-ci.org/lmfit/lmfit-py) LMfit-py provides a Least-Squares Minimization routine and class with a simple, flexible approach to parameterizing a model for fitting to data. Named Parameters can be held fixed or freely adjusted in the fit, or held between lower and upper bounds. In addition, parameters can be constrained as a simple mathematical expression of other Parameters. To do this, the programmer defines a Parameters object, an enhanced dictionary, containing named parameters: fit_params = Parameters() fit_params['amp'] = Parameter(value=1.2, min=0.1, max=1000) fit_params['cen'] = Parameter(value=40.0, vary=False), fit_params['wid'] = Parameter(value=4, min=0)} or using the equivalent fit_params = Parameters() fit_params.add('amp', value=1.2, min=0.1, max=1000) fit_params.add('cen', value=40.0, vary=False), fit_params.add('wid', value=4, min=0) The programmer will also write a function to be minimized (in the least-squares sense) with its first argument being this Parameters object, and additional positional and keyword arguments as desired: def myfunc(params, x, data, someflag=True): amp = params['amp'].value cen = params['cen'].value wid = params['wid'].value ... return residual_array For each call of this function, the values for the params may have changed, subject to the bounds and constraint settings for each Parameter. The function should return the residual (ie, data-model) array to be minimized. The advantage here is that the function to be minimized does not have to be changed if different bounds or constraints are placed on the fitting Parameters. The fitting model (as described in myfunc) is instead written in terms of physical parameters of the system, and remains remains independent of what is actually varied in the fit. In addition, which parameters are adjuested and which are fixed happens at run-time, so that changing what is varied and what constraints are placed on the parameters can easily be modified by the consumer in real-time data analysis. To perform the fit, the user calls result = minimize(myfunc, fit_params, args=(x, data), kws={'someflag':True}, ....) After the fit, each real variable in the ``fit_params`` dictionary is updated to have best-fit values, estimated standard deviations, and correlations with other variables in the fit, while the results dictionary holds fit statistics and information. By default, the underlying fit algorithm is the Levenberg-Marquart algorithm with numerically-calculated derivatives from MINPACK's lmdif function, as used by scipy.optimize.leastsq. Other solvers (currently Simulated Annealing and L-BFGS-B) are also available, though slightly less well-tested and supported. lmfit-0.9.2/lmfit/0000755000032700003100000000000012613717514015237 5ustar newvillegeocars00000000000000lmfit-0.9.2/lmfit/confidence.py0000644000032700003100000003331412613715346017713 0ustar newvillegeocars00000000000000#!/usr/bin/python # -*- coding: utf-8 -*- """ Contains functions to calculate confidence intervals. """ from __future__ import print_function from warnings import warn import numpy as np from scipy.stats import f from scipy.optimize import brentq from .minimizer import MinimizerException try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict CONF_ERR_GEN = 'Cannot determine Confidence Intervals' CONF_ERR_STDERR = '%s without sensible uncertainty estimates' % CONF_ERR_GEN CONF_ERR_NVARS = '%s with < 2 variables' % CONF_ERR_GEN def f_compare(ndata, nparas, new_chi, best_chi, nfix=1.): """ Returns the probalitiy for two given parameter sets. nfix is the number of fixed parameters. """ nparas = nparas + nfix nfree = ndata - nparas nfix = 1.0*nfix dchi = new_chi / best_chi - 1.0 return f.cdf(dchi * nfree / nfix, nfix, nfree) def copy_vals(params): """Saves the values and stderrs of params in temporay dict""" tmp_params = {} for para_key in params: tmp_params[para_key] = (params[para_key].value, params[para_key].stderr) return tmp_params def restore_vals(tmp_params, params): """Restores values and stderrs of params in temporay dict""" for para_key in params: params[para_key].value, params[para_key].stderr = tmp_params[para_key] def conf_interval(minimizer, result, p_names=None, sigmas=(0.674, 0.95, 0.997), trace=False, maxiter=200, verbose=False, prob_func=None): r"""Calculates the confidence interval for parameters from the given a MinimizerResult, output from minimize. The parameter for which the ci is calculated will be varied, while the remaining parameters are re-optimized for minimizing chi-square. The resulting chi-square is used to calculate the probability with a given statistic e.g. F-statistic. This function uses a 1d-rootfinder from scipy to find the values resulting in the searched confidence region. Parameters ---------- minimizer : Minimizer The minimizer to use, holding objective function. result : MinimizerResult The result of running minimize(). p_names : list, optional Names of the parameters for which the ci is calculated. If None, the ci is calculated for every parameter. sigmas : list, optional The probabilities (1-alpha) to find. Default is 1,2 and 3-sigma. trace : bool, optional Defaults to False, if true, each result of a probability calculation is saved along with the parameter. This can be used to plot so called "profile traces". Returns ------- output : dict A dict, which contains a list of (sigma, vals)-tuples for each name. trace_dict : dict Only if trace is set true. Is a dict, the key is the parameter which was fixed.The values are again a dict with the names as keys, but with an additional key 'prob'. Each contains an array of the corresponding values. See also -------- conf_interval2d Other Parameters ---------------- maxiter : int Maximum of iteration to find an upper limit. prob_func : ``None`` or callable Function to calculate the probability from the optimized chi-square. Default (``None``) uses built-in f_compare (F test). verbose: bool print extra debuggin information. Default is ``False``. Examples -------- >>> from lmfit.printfuncs import * >>> mini = minimize(some_func, params) >>> mini.leastsq() True >>> report_errors(params) ... #report >>> ci = conf_interval(mini) >>> report_ci(ci) ... #report Now with quantiles for the sigmas and using the trace. >>> ci, trace = conf_interval(mini, sigmas=(0.25, 0.5, 0.75, 0.999), trace=True) >>> fixed = trace['para1']['para1'] >>> free = trace['para1']['not_para1'] >>> prob = trace['para1']['prob'] This makes it possible to plot the dependence between free and fixed. """ ci = ConfidenceInterval(minimizer, result, p_names, prob_func, sigmas, trace, verbose, maxiter) output = ci.calc_all_ci() if trace: return output, ci.trace_dict return output def map_trace_to_names(trace, params): "maps trace to param names" out = {} allnames = list(params.keys()) + ['prob'] for name in trace.keys(): tmp_dict = {} tmp = np.array(trace[name]) for para_name, values in zip(allnames, tmp.T): tmp_dict[para_name] = values out[name] = tmp_dict return out class ConfidenceInterval(object): """ Class used to calculate the confidence interval. """ def __init__(self, minimizer, result, p_names=None, prob_func=None, sigmas=(0.674, 0.95, 0.997), trace=False, verbose=False, maxiter=50): """ """ self.verbose = verbose self.minimizer = minimizer self.result = result self.params = result.params self.org = copy_vals(self.params) self.best_chi = result.chisqr if p_names is None: p_names = [i for i in self.params if self.params[i].vary] self.p_names = p_names self.fit_params = [self.params[p] for p in self.p_names] # check that there are at least 2 true variables! # check that all stderrs are sensible (including not None or NaN) nvars = 0 for par in self.fit_params: if par.vary: nvars += 1 try: if not (par.vary and par.stderr > 0.0): raise MinimizerException(CONF_ERR_STDERR) except TypeError: raise MinimizerException(CONF_ERR_STDERR) if nvars < 2: raise MinimizerException(CONF_ERR_NVARS) if prob_func is None or not hasattr(prob_func, '__call__'): self.prob_func = f_compare if trace: self.trace_dict = dict([(i, []) for i in self.p_names]) self.trace = trace self.maxiter = maxiter self.min_rel_change = 1e-5 self.sigmas = list(sigmas) self.sigmas.sort() def calc_all_ci(self): """ Calculates all cis. """ out = OrderedDict() for p in self.p_names: out[p] = (self.calc_ci(p, -1)[::-1] + [(0., self.params[p].value)] + self.calc_ci(p, 1)) if self.trace: self.trace_dict = map_trace_to_names(self.trace_dict, self.params) return out def calc_ci(self, para, direction): """ Calculate the ci for a single parameter for a single direction. Direction is either positive or negative 1. """ if isinstance(para, str): para = self.params[para] #function used to calculate the pro calc_prob = lambda val, prob: self.calc_prob(para, val, prob) if self.trace: x = [i.value for i in self.params.values()] self.trace_dict[para.name].append(x + [0]) para.vary = False limit, max_prob = self.find_limit(para, direction) start_val = para.value.copy() a_limit = start_val.copy() ret = [] orig_warn_settings = np.geterr() np.seterr(all='ignore') for prob in self.sigmas: if prob > max_prob: ret.append((prob, direction*np.inf)) continue try: val = brentq(calc_prob, a_limit, limit, rtol=.5e-4, args=prob) except ValueError: self.reset_vals() try: val = brentq(calc_prob, start_val, limit, rtol=.5e-4, args=prob) except ValueError: val = np.nan a_limit = val ret.append((prob, val)) para.vary = True self.reset_vals() np.seterr(**orig_warn_settings) return ret def reset_vals(self): restore_vals(self.org, self.params) def find_limit(self, para, direction): """ For given para, search a value so that prob(val) > sigmas. """ if self.verbose: print('Calculating CI for ' + para.name) self.reset_vals() #starting steps: if para.stderr > 0 and para.stderr < abs(para.value): step = para.stderr else: step = max(abs(para.value) * 0.2, 0.001) para.vary = False start_val = para.value old_prob = 0 limit = start_val i = 0 while old_prob < max(self.sigmas): i = i + 1 limit += step * direction new_prob = self.calc_prob(para, limit) rel_change = (new_prob - old_prob) / max(new_prob, old_prob, 1.e-12) old_prob = new_prob # Check convergence. if i > self.maxiter: errmsg = "Warning, maxiter={0} reached".format(self.maxiter) errmsg += "and prob({0}={1}) = {2} < max(sigmas).".format(para.name, limit, new_prob) warn(errmsg) break if rel_change < self.min_rel_change: errmsg = "Warning, rel_change={0} < 0.01 ".format(rel_change) errmsg += " at iteration {3} and prob({0}={1}) = {2} < max(sigmas).".format(para.name, limit, new_prob, i) warn(errmsg) break self.reset_vals() return limit, new_prob def calc_prob(self, para, val, offset=0., restore=False): """Returns the probability for given Value.""" if restore: restore_vals(self.org, self.params) para.value = val save_para = self.params[para.name] self.params[para.name] = para self.minimizer.prepare_fit(self.params) out = self.minimizer.leastsq() prob = self.prob_func(out.ndata, out.ndata - out.nfree, out.chisqr, self.best_chi) if self.trace: x = [i.value for i in out.params.values()] self.trace_dict[para.name].append(x + [prob]) self.params[para.name] = save_para return prob - offset def conf_interval2d(minimizer, result, x_name, y_name, nx=10, ny=10, limits=None, prob_func=None): r"""Calculates confidence regions for two fixed parameters. The method is explained in *conf_interval*: here we are fixing two parameters. Parameters ---------- minimizer : Minimizer The minimizer to use, holding objective function. result : MinimizerResult The result of running minimize(). x_name : string The name of the parameter which will be the x direction. y_name : string The name of the parameter which will be the y direction. nx, ny : ints, optional Number of points. limits : tuple: optional Should have the form ((x_upper, x_lower),(y_upper, y_lower)). If not given, the default is 5 std-errs in each direction. Returns ------- x : (nx)-array x-coordinates y : (ny)-array y-coordinates grid : (nx,ny)-array grid contains the calculated probabilities. Examples -------- >>> mini = Minimizer(some_func, params) >>> result = mini.leastsq() >>> x, y, gr = conf_interval2d(mini, result, 'para1','para2') >>> plt.contour(x,y,gr) Other Parameters ---------------- prob_func : ``None`` or callable Function to calculate the probability from the optimized chi-square. Default (``None``) uses built-in f_compare (F test). """ # used to detect that .leastsq() has run! params = result.params best_chi = result.chisqr org = copy_vals(result.params) if prob_func is None or not hasattr(prob_func, '__call__'): prob_func = f_compare x = params[x_name] y = params[y_name] if limits is None: (x_upper, x_lower) = (x.value + 5 * x.stderr, x.value - 5 * x.stderr) (y_upper, y_lower) = (y.value + 5 * y.stderr, y.value - 5 * y.stderr) elif len(limits) == 2: (x_upper, x_lower) = limits[0] (y_upper, y_lower) = limits[1] x_points = np.linspace(x_lower, x_upper, nx) y_points = np.linspace(y_lower, y_upper, ny) grid = np.dstack(np.meshgrid(x_points, y_points)) x.vary = False y.vary = False def calc_prob(vals, restore=False): if restore: restore_vals(org, result.params) x.value = vals[0] y.value = vals[1] save_x = result.params[x.name] save_y = result.params[y.name] result.params[x.name] = x result.params[y.name] = y minimizer.prepare_fit(params=result.params) out = minimizer.leastsq() prob = prob_func(out.ndata, out.ndata - out.nfree, out.chisqr, best_chi, nfix=2.) result.params[x.name] = save_x result.params[y.name] = save_y return prob out = x_points, y_points, np.apply_along_axis(calc_prob, -1, grid) x.vary, y.vary = True, True restore_vals(org, result.params) result.chisqr = best_chi return out lmfit-0.9.2/lmfit/_version.py0000644000032700003100000000064112613717514017436 0ustar newvillegeocars00000000000000 # This file was generated by 'versioneer.py' (0.12) from # revision-control system data, or from the parent directory name of an # unpacked source archive. Distribution tarballs contain a pre-generated copy # of this file. version_version = '0.9.2' version_full = '208871db96689c911e00b9d59dace2de68df3220' def get_versions(default={}, verbose=False): return {'version': version_version, 'full': version_full} lmfit-0.9.2/lmfit/ordereddict.py0000644000032700003100000001017612603520205020072 0ustar newvillegeocars00000000000000# Copyright (c) 2009 Raymond Hettinger # # 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. from UserDict import DictMixin class OrderedDict(dict, DictMixin): def __init__(self, *args, **kwds): if len(args) > 1: raise TypeError('expected at most 1 arguments, got %d' % len(args)) try: self.__end except AttributeError: self.clear() self.update(*args, **kwds) def clear(self): self.__end = end = [] end += [None, end, end] # sentinel node for doubly linked list self.__map = {} # key --> [key, prev, next] dict.clear(self) def __setitem__(self, key, value): if key not in self: end = self.__end curr = end[1] curr[2] = end[1] = self.__map[key] = [key, curr, end] dict.__setitem__(self, key, value) def __delitem__(self, key): dict.__delitem__(self, key) key, prev, next = self.__map.pop(key) prev[2] = next next[1] = prev def __iter__(self): end = self.__end curr = end[2] while curr is not end: yield curr[0] curr = curr[2] def __reversed__(self): end = self.__end curr = end[1] while curr is not end: yield curr[0] curr = curr[1] def popitem(self, last=True): if not self: raise KeyError('dictionary is empty') if last: key = reversed(self).next() else: key = iter(self).next() value = self.pop(key) return key, value def __reduce__(self): items = [[k, self[k]] for k in self] tmp = self.__map, self.__end del self.__map, self.__end inst_dict = vars(self).copy() self.__map, self.__end = tmp if inst_dict: return (self.__class__, (items,), inst_dict) return self.__class__, (items,) def keys(self): return list(self) setdefault = DictMixin.setdefault update = DictMixin.update pop = DictMixin.pop values = DictMixin.values items = DictMixin.items iterkeys = DictMixin.iterkeys itervalues = DictMixin.itervalues iteritems = DictMixin.iteritems def __repr__(self): if not self: return '%s()' % (self.__class__.__name__,) return '%s(%r)' % (self.__class__.__name__, self.items()) def copy(self): return self.__class__(self) @classmethod def fromkeys(cls, iterable, value=None): d = cls() for key in iterable: d[key] = value return d def __eq__(self, other): if isinstance(other, OrderedDict): if len(self) != len(other): return False for p, q in zip(self.items(), other.items()): if p != q: return False return True return dict.__eq__(self, other) def __ne__(self, other): return not self == other lmfit-0.9.2/lmfit/ui/0000755000032700003100000000000012613717514015654 5ustar newvillegeocars00000000000000lmfit-0.9.2/lmfit/ui/ipy_fitter.py0000644000032700003100000002520512603520205020374 0ustar newvillegeocars00000000000000import warnings import numpy as np from ..model import Model from .basefitter import MPLFitter, _COMMON_DOC, _COMMON_EXAMPLES_DOC # Note: If IPython is not available of the version is < 2, # this module will not be imported, and a different Fitter. import IPython from IPython.display import display, clear_output # Widgets were only experimental in IPython 2.x, but this does work there. # Handle the change in naming from 2.x to 3.x. IPY2 = IPython.release.version_info[0] == 2 IPY3 = IPython.release.version_info[0] == 3 if IPY2: from IPython.html.widgets import DropdownWidget as Dropdown from IPython.html.widgets import ButtonWidget as Button from IPython.html.widgets import ContainerWidget from IPython.html.widgets import FloatTextWidget as FloatText from IPython.html.widgets import CheckboxWidget as Checkbox class HBox(ContainerWidget): def __init__(self, *args, **kwargs): self.add_class('hbox') super(self, ContainerWidget).__init__(*args, **kwargs) elif IPY3: # as of IPython 3.x: from IPython.html.widgets import Dropdown from IPython.html.widgets import Button from IPython.html.widgets import HBox from IPython.html.widgets import FloatText from IPython.html.widgets import Checkbox else: # as of IPython 4.x+: from ipywidgets import Dropdown from ipywidgets import Button from ipywidgets import HBox from ipywidgets import FloatText from ipywidgets import Checkbox class ParameterWidgetGroup(object): """Construct several widgets that together represent a Parameter. This will only be used if IPython is available.""" def __init__(self, par): self.par = par # Define widgets. self.value_text = FloatText(description=par.name, min=self.par.min, max=self.par.max) self.value_text.width = 100 self.min_text = FloatText(description='min', max=self.par.max) self.min_text.width = 100 self.max_text = FloatText(description='max', min=self.par.min) self.max_text.width = 100 self.min_checkbox = Checkbox(description='min') self.max_checkbox = Checkbox(description='max') self.vary_checkbox = Checkbox(description='vary') # Set widget values and visibility. if par.value is not None: self.value_text.value = self.par.value min_unset = self.par.min is None or self.par.min == -np.inf max_unset = self.par.max is None or self.par.max == np.inf self.min_checkbox.value = not min_unset self.min_text.visible = not min_unset self.min_text.value = self.par.min self.max_checkbox.value = not max_unset self.max_text.visible = not max_unset self.max_text.value = self.par.max self.vary_checkbox.value = self.par.vary # Configure widgets to sync with par attributes. self.value_text.on_trait_change(self._on_value_change, 'value') self.min_text.on_trait_change(self._on_min_value_change, 'value') self.max_text.on_trait_change(self._on_max_value_change, 'value') self.min_checkbox.on_trait_change(self._on_min_checkbox_change, 'value') self.max_checkbox.on_trait_change(self._on_max_checkbox_change, 'value') self.vary_checkbox.on_trait_change(self._on_vary_change, 'value') def _on_value_change(self, name, value): self.par.value = value def _on_min_checkbox_change(self, name, value): self.min_text.visible = value if value: # -np.inf does not play well with a numerical text field, # so set min to -1 if activated (and back to -inf if deactivated). self.min_text.value = -1 self.par.min = self.min_text.value self.value_text.min = self.min_text.value else: self.par.min = None def _on_max_checkbox_change(self, name, value): self.max_text.visible = value if value: # np.inf does not play well with a numerical text field, # so set max to 1 if activated (and back to inf if deactivated). self.max_text.value = 1 self.par.max = self.max_text.value self.value_text.max = self.max_text.value else: self.par.max = None def _on_min_value_change(self, name, value): self.par.min = value self.value_text.min = value self.max_text.min = value def _on_max_value_change(self, name, value): self.par.max = value self.value_text.max = value self.min_text.max = value def _on_vary_change(self, name, value): self.par.vary = value # self.value_text.disabled = not value def close(self): # one convenience method to close (i.e., hide and disconnect) all # widgets in this group self.value_text.close() self.min_text.close() self.max_text.close() self.vary_checkbox.close() self.min_checkbox.close() self.max_checkbox.close() def _repr_html_(self): box = HBox() box.children = [self.value_text, self.vary_checkbox, self.min_checkbox, self.min_text, self.max_checkbox, self.max_text] display(box) # Make it easy to set the widget attributes directly. @property def value(self): return self.value_text.value @value.setter def value(self, value): self.value_text.value = value @property def vary(self): return self.vary_checkbox.value @vary.setter def vary(self, value): self.vary_checkbox.value = value @property def min(self): return self.min_text.value @min.setter def min(self, value): self.min_text.value = value @property def max(self): return self.max_text.value @max.setter def max(self, value): self.max_text.value = value @property def name(self): return self.par.name class NotebookFitter(MPLFitter): __doc__ = _COMMON_DOC + """ If IPython is available, it uses the IPython notebook's rich display to fit data interactively in a web-based GUI. The Parameters are represented in a web-based form that is kept in sync with `current_params`. All subclasses to Model, including user-defined ones, are shown in a drop-down menu. Clicking the "Fit" button updates a plot, as above, and updates the Parameters in the form to reflect the best fit. Parameters ---------- data : array-like model : lmfit.Model optional initial Model to use, maybe be set or changed later all_models : list optional list of Models to populate drop-down menu, by default all built-in and user-defined subclasses of Model are used Additional Parameters --------------------- axes_style : dictionary representing style keyword arguments to be passed through to `Axes.set(...)` data_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the data points init_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the initial fit line best_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the best fit line **kwargs : independent variables or extra arguments, passed like `x=x` """ + _COMMON_EXAMPLES_DOC def __init__(self, data, model=None, all_models=None, axes_style={}, data_style={}, init_style={}, best_style={}, **kwargs): # Dropdown menu of all subclasses of Model, incl. user-defined. self.models_menu = Dropdown() # Dropbox API is very different between IPy 2.x and 3.x. if IPY2: if all_models is None: all_models = dict([(m.__name__, m) for m in Model.__subclasses__()]) self.models_menu.values = all_models else: if all_models is None: all_models = [(m.__name__, m) for m in Model.__subclasses__()] self.models_menu.options = all_models self.models_menu.on_trait_change(self._on_model_value_change, 'value') # Button to trigger fitting. self.fit_button = Button(description='Fit') self.fit_button.on_click(self._on_fit_button_click) # Button to trigger guessing. self.guess_button = Button(description='Auto-Guess') self.guess_button.on_click(self._on_guess_button_click) # Parameter widgets are not built here. They are (re-)built when # the model is (re-)set. super(NotebookFitter, self).__init__(data, model, axes_style, data_style, init_style, best_style, **kwargs) def _repr_html_(self): display(self.models_menu) button_box = HBox() button_box.children = [self.fit_button, self.guess_button] display(button_box) for pw in self.param_widgets: display(pw) self.plot() def guess(self): guessing_successful = super(NotebookFitter, self).guess() self.guess_button.disabled = not guessing_successful def _finalize_model(self, value): first_run = not hasattr(self, 'param_widgets') if not first_run: # Remove all Parameter widgets, and replace them with widgets # for the new model. for pw in self.param_widgets: pw.close() self.models_menu.value = value self.param_widgets = [ParameterWidgetGroup(p) for _, p in self._current_params.items()] if not first_run: for pw in self.param_widgets: display(pw) def _finalize_params(self): for pw in self.param_widgets: pw.value = self._current_params[pw.name].value pw.min = self._current_params[pw.name].min pw.max = self._current_params[pw.name].max pw.vary = self._current_params[pw.name].vary def plot(self): clear_output(wait=True) super(NotebookFitter, self).plot() def fit(self): super(NotebookFitter, self).fit() self.plot() lmfit-0.9.2/lmfit/ui/basefitter.py0000644000032700003100000003053012603520205020343 0ustar newvillegeocars00000000000000import warnings import numpy as np from ..model import Model from ..models import ExponentialModel # arbitrary default from ..asteval import Interpreter from ..astutils import NameFinder from ..parameter import check_ast_errors _COMMON_DOC = """ This an interactive container for fitting models to particular data. It maintains the attributes `current_params` and `current_result`. When its fit() method is called, the best fit becomes the new `current_params`. The most basic usage is iteratively fitting data, taking advantage of this stateful memory that keep the parameters between each fit. """ _COMMON_EXAMPLES_DOC = """ Examples -------- >>> fitter = Fitter(data, model=SomeModel, x=x) >>> fitter.model # This property can be changed, to try different models on the same # data with the same independent vars. # (This is especially handy in the notebook.) >>> fitter.current_params # This copy of the model's Parameters is updated after each fit. >>> fitter.fit() # Perform a fit using fitter.current_params as a guess. # Optionally, pass a params argument or individual keyword arguments # to override current_params. >>> fitter.current_result # This is the result of the latest fit. It contain the usual # copies of the Parameters, in the attributes params and init_params. >>> fitter.data = new_data # If this property is updated, the `current_params` are retained an used # as an initial guess if fit() is called again. """ class BaseFitter(object): __doc__ = _COMMON_DOC + """ Parameters ---------- data : array-like model : lmfit.Model optional initial Model to use, maybe be set or changed later """ + _COMMON_EXAMPLES_DOC def __init__(self, data, model=None, **kwargs): self._data = data self.kwargs = kwargs # GUI-based subclasses need a default value for the menu of models, # and so an arbitrary default is applied here, for uniformity # among the subclasses. if model is None: model = ExponentialModel self.model = model def _on_model_value_change(self, name, value): self.model = value def _on_fit_button_click(self, b): self.fit() def _on_guess_button_click(self, b): self.guess() @property def data(self): return self._data @data.setter def data(self, value): self._data = value @property def model(self): return self._model @model.setter def model(self, value): if callable(value): model = value() else: model = value self._model = model self.current_result = None self._current_params = model.make_params() # Use these to evaluate any Parameters that use expressions. self.asteval = Interpreter() self.namefinder = NameFinder() self._finalize_model(value) self.guess() def _finalize_model(self, value): # subclasses optionally override to update display here pass @property def current_params(self): """Each time fit() is called, these will be updated to reflect the latest best params. They will be used as the initial guess for the next fit, unless overridden by arguments to fit().""" return self._current_params @current_params.setter def current_params(self, new_params): # Copy contents, but retain original params objects. for name, par in new_params.items(): self._current_params[name].value = par.value self._current_params[name].expr = par.expr self._current_params[name].vary = par.vary self._current_params[name].min = par.min self._current_params[name].max = par.max # Compute values for expression-based Parameters. self.__assign_deps(self._current_params) for _, par in self._current_params.items(): if par.value is None: self.__update_paramval(self._current_params, par.name) self._finalize_params() def _finalize_params(self): # subclasses can override this to pass params to display pass def guess(self): count_indep_vars = len(self.model.independent_vars) guessing_successful = True try: if count_indep_vars == 0: guess = self.model.guess(self._data) elif count_indep_vars == 1: key = self.model.independent_vars[0] val = self.kwargs[key] d = {key: val} guess = self.model.guess(self._data, **d) except NotImplementedError: guessing_successful = False self.current_params = guess return guessing_successful def __assign_deps(self, params): # N.B. This does not use self.current_params but rather # new Parameters that are being built by self.guess(). for name, par in params.items(): if par.expr is not None: par.ast = self.asteval.parse(par.expr) check_ast_errors(self.asteval.error) par.deps = [] self.namefinder.names = [] self.namefinder.generic_visit(par.ast) for symname in self.namefinder.names: if (symname in self.current_params and symname not in par.deps): par.deps.append(symname) self.asteval.symtable[name] = par.value if par.name is None: par.name = name def __update_paramval(self, params, name): # N.B. This does not use self.current_params but rather # new Parameters that are being built by self.guess(). par = params[name] if getattr(par, 'expr', None) is not None: if getattr(par, 'ast', None) is None: par.ast = self.asteval.parse(par.expr) if par.deps is not None: for dep in par.deps: self.__update_paramval(params, dep) par.value = self.asteval.run(par.ast) out = check_ast_errors(self.asteval.error) if out is not None: self.asteval.raise_exception(None) self.asteval.symtable[name] = par.value def fit(self, *args, **kwargs): "Use current_params unless overridden by arguments passed here." guess = dict(self.current_params) guess.update(self.kwargs) # from __init__, e.g. x=x guess.update(kwargs) self.current_result = self.model.fit(self._data, *args, **guess) self.current_params = self.current_result.params class MPLFitter(BaseFitter): # This is a small elaboration on BaseModel; it adds a plot() # method that depends on matplotlib. It adds several plot- # styling arguments to the signature. __doc__ = _COMMON_DOC + """ Parameters ---------- data : array-like model : lmfit.Model optional initial Model to use, maybe be set or changed later Additional Parameters --------------------- axes_style : dictionary representing style keyword arguments to be passed through to `Axes.set(...)` data_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the data points init_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the initial fit line best_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the best fit line **kwargs : independent variables or extra arguments, passed like `x=x` """ + _COMMON_EXAMPLES_DOC def __init__(self, data, model=None, axes_style={}, data_style={}, init_style={}, best_style={}, **kwargs): self.axes_style = axes_style self.data_style = data_style self.init_style = init_style self.best_style = best_style super(MPLFitter, self).__init__(data, model, **kwargs) def plot(self, axes_style={}, data_style={}, init_style={}, best_style={}, ax=None): """Plot data, initial guess fit, and best fit. Optional style arguments pass keyword dictionaries through to their respective components of the matplotlib plot. Precedence is: 1. arguments passed to this function, plot() 2. arguments passed to the Fitter when it was first declared 3. hard-coded defaults Parameters --------------------- axes_style : dictionary representing style keyword arguments to be passed through to `Axes.set(...)` data_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the data points init_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the initial fit line best_style : dictionary representing style keyword arguments to be passed through to the matplotlib `plot()` command the plots the best fit line ax : matplotlib.Axes optional `Axes` object. Axes will be generated if not provided. """ try: import matplotlib.pyplot as plt except ImportError: raise ImportError("Matplotlib is required to use this Fitter. " "Use BaseFitter or a subclass thereof " "that does not depend on matplotlib.") # Configure style _axes_style= dict() # none, but this is here for possible future use _axes_style.update(self.axes_style) _axes_style.update(axes_style) _data_style= dict(color='blue', marker='o', linestyle='none') _data_style.update(**_normalize_kwargs(self.data_style, 'line2d')) _data_style.update(**_normalize_kwargs(data_style, 'line2d')) _init_style = dict(color='gray') _init_style.update(**_normalize_kwargs(self.init_style, 'line2d')) _init_style.update(**_normalize_kwargs(init_style, 'line2d')) _best_style= dict(color='red') _best_style.update(**_normalize_kwargs(self.best_style, 'line2d')) _best_style.update(**_normalize_kwargs(best_style, 'line2d')) if ax is None: fig, ax = plt.subplots() count_indep_vars = len(self.model.independent_vars) if count_indep_vars == 0: ax.plot(self._data, **_data_style) elif count_indep_vars == 1: indep_var = self.kwargs[self.model.independent_vars[0]] ax.plot(indep_var, self._data, **_data_style) else: raise NotImplementedError("Cannot plot models with more than one " "indepedent variable.") result = self.current_result # alias for brevity if not result: ax.set(**_axes_style) return # short-circuit the rest of the plotting if count_indep_vars == 0: ax.plot(result.init_fit, **_init_style) ax.plot(result.best_fit, **_best_style) elif count_indep_vars == 1: ax.plot(indep_var, result.init_fit, **_init_style) ax.plot(indep_var, result.best_fit, **_best_style) ax.set(**_axes_style) def _normalize_kwargs(kwargs, kind='patch'): """Convert matplotlib keywords from short to long form.""" # Source: # github.com/tritemio/FRETBursts/blob/fit_experim/fretbursts/burst_plot.py if kind == 'line2d': long_names = dict(c='color', ls='linestyle', lw='linewidth', mec='markeredgecolor', mew='markeredgewidth', mfc='markerfacecolor', ms='markersize',) elif kind == 'patch': long_names = dict(c='color', ls='linestyle', lw='linewidth', ec='edgecolor', fc='facecolor',) for short_name in long_names: if short_name in kwargs: kwargs[long_names[short_name]] = kwargs.pop(short_name) return kwargs lmfit-0.9.2/lmfit/ui/__init__.py0000644000032700003100000000313312603520205017751 0ustar newvillegeocars00000000000000# These variables are used at the end of the module to decide # which BaseFitter subclass the Fitter will point to. import warnings has_ipython, has_matplotlib = False, False try: import matplotlib except ImportError: pass else: has_matplotlib = True try: import IPython except ImportError: warnings.warn("lmfit.Fitter will use basic mode, not IPython: need matplotlib") else: _ipy_msg1 = "lmfit.Fitter will use basic mode, not IPython: need IPython2." _ipy_msg2 = "lmfit.Fitter will use basic mode, not IPython: could not get IPython version" _ipy_msg3 = "lmfit.Fitter will use basic mode, not IPython: need ipywidgets." try: major_version = IPython.release.version_info[0] if major_version < 2: warnings.warn(_ipy_msg1) elif major_version > 3: # After IPython 3, widgets were moved to a separate package. # There is a shim to allow the old import, but the package has to be # installed for that to work. try: import ipywidgets except ImportError: warnings.warn(_ipy_msg3) else: # has_ipython = iPython installed and we are in an IPython session. has_ipython = IPython.get_ipython() is not None except Exception as e: warnings.warn(_ipy_msg2) from .basefitter import BaseFitter Fitter = BaseFitter if has_matplotlib: from .basefitter import MPLFitter Fitter = MPLFitter if has_ipython: from .ipy_fitter import NotebookFitter Fitter = NotebookFitter lmfit-0.9.2/lmfit/astutils.py0000644000032700003100000003022612603520205017450 0ustar newvillegeocars00000000000000""" utility functions for asteval Matthew Newville , The University of Chicago """ from __future__ import division, print_function import re import ast from sys import exc_info RESERVED_WORDS = ('and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'True', 'False', 'None', 'eval', 'execfile', '__import__', '__package__') NAME_MATCH = re.compile(r"[a-zA-Z_][a-zA-Z0-9_]*$").match UNSAFE_ATTRS = ('__subclasses__', '__bases__', '__globals__', '__code__', '__closure__', '__func__', '__self__', '__module__', '__dict__', '__class__', '__call__', '__get__', '__getattribute__', '__subclasshook__', '__new__', '__init__', 'func_globals', 'func_code', 'func_closure', 'im_class', 'im_func', 'im_self', 'gi_code', 'gi_frame', '__asteval__') # inherit these from python's __builtins__ FROM_PY = ('ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'ValueError', 'Warning', 'ZeroDivisionError', 'abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'bytes', 'chr', 'complex', 'dict', 'dir', 'divmod', 'enumerate', 'filter', 'float', 'format', 'frozenset', 'hash', 'hex', 'id', 'int', 'isinstance', 'len', 'list', 'map', 'max', 'min', 'oct', 'ord', 'pow', 'range', 'repr', 'reversed', 'round', 'set', 'slice', 'sorted', 'str', 'sum', 'tuple', 'type', 'zip') # inherit these from python's math FROM_MATH = ('acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'exp', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'hypot', 'isinf', 'isnan', 'ldexp', 'log', 'log10', 'log1p', 'modf', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc') FROM_NUMPY = ('Inf', 'NAN', 'abs', 'add', 'alen', 'all', 'amax', 'amin', 'angle', 'any', 'append', 'arange', 'arccos', 'arccosh', 'arcsin', 'arcsinh', 'arctan', 'arctan2', 'arctanh', 'argmax', 'argmin', 'argsort', 'argwhere', 'around', 'array', 'array2string', 'asanyarray', 'asarray', 'asarray_chkfinite', 'ascontiguousarray', 'asfarray', 'asfortranarray', 'asmatrix', 'asscalar', 'atleast_1d', 'atleast_2d', 'atleast_3d', 'average', 'bartlett', 'base_repr', 'bitwise_and', 'bitwise_not', 'bitwise_or', 'bitwise_xor', 'blackman', 'bool', 'broadcast', 'broadcast_arrays', 'byte', 'c_', 'cdouble', 'ceil', 'cfloat', 'chararray', 'choose', 'clip', 'clongdouble', 'clongfloat', 'column_stack', 'common_type', 'complex', 'complex128', 'complex64', 'complex_', 'complexfloating', 'compress', 'concatenate', 'conjugate', 'convolve', 'copy', 'copysign', 'corrcoef', 'correlate', 'cos', 'cosh', 'cov', 'cross', 'csingle', 'cumprod', 'cumsum', 'datetime_data', 'deg2rad', 'degrees', 'delete', 'diag', 'diag_indices', 'diag_indices_from', 'diagflat', 'diagonal', 'diff', 'digitize', 'divide', 'dot', 'double', 'dsplit', 'dstack', 'dtype', 'e', 'ediff1d', 'empty', 'empty_like', 'equal', 'exp', 'exp2', 'expand_dims', 'expm1', 'extract', 'eye', 'fabs', 'fill_diagonal', 'finfo', 'fix', 'flatiter', 'flatnonzero', 'fliplr', 'flipud', 'float', 'float32', 'float64', 'float_', 'floating', 'floor', 'floor_divide', 'fmax', 'fmin', 'fmod', 'format_parser', 'frexp', 'frombuffer', 'fromfile', 'fromfunction', 'fromiter', 'frompyfunc', 'fromregex', 'fromstring', 'fv', 'genfromtxt', 'getbufsize', 'geterr', 'gradient', 'greater', 'greater_equal', 'hamming', 'hanning', 'histogram', 'histogram2d', 'histogramdd', 'hsplit', 'hstack', 'hypot', 'i0', 'identity', 'iinfo', 'imag', 'in1d', 'index_exp', 'indices', 'inexact', 'inf', 'info', 'infty', 'inner', 'insert', 'int', 'int0', 'int16', 'int32', 'int64', 'int8', 'int_', 'int_asbuffer', 'intc', 'integer', 'interp', 'intersect1d', 'intp', 'invert', 'ipmt', 'irr', 'iscomplex', 'iscomplexobj', 'isfinite', 'isfortran', 'isinf', 'isnan', 'isneginf', 'isposinf', 'isreal', 'isrealobj', 'isscalar', 'issctype', 'iterable', 'ix_', 'kaiser', 'kron', 'ldexp', 'left_shift', 'less', 'less_equal', 'linspace', 'little_endian', 'load', 'loads', 'loadtxt', 'log', 'log10', 'log1p', 'log2', 'logaddexp', 'logaddexp2', 'logical_and', 'logical_not', 'logical_or', 'logical_xor', 'logspace', 'long', 'longcomplex', 'longdouble', 'longfloat', 'longlong', 'mafromtxt', 'mask_indices', 'mat', 'matrix', 'max', 'maximum', 'maximum_sctype', 'may_share_memory', 'mean', 'median', 'memmap', 'meshgrid', 'mgrid', 'min', 'minimum', 'mintypecode', 'mirr', 'mod', 'modf', 'msort', 'multiply', 'nan', 'nan_to_num', 'nanargmax', 'nanargmin', 'nanmax', 'nanmin', 'nansum', 'ndarray', 'ndenumerate', 'ndfromtxt', 'ndim', 'ndindex', 'negative', 'newaxis', 'nextafter', 'nonzero', 'not_equal', 'nper', 'npv', 'number', 'obj2sctype', 'ogrid', 'ones', 'ones_like', 'outer', 'packbits', 'percentile', 'pi', 'piecewise', 'place', 'pmt', 'poly', 'poly1d', 'polyadd', 'polyder', 'polydiv', 'polyfit', 'polyint', 'polymul', 'polysub', 'polyval', 'power', 'ppmt', 'prod', 'product', 'ptp', 'put', 'putmask', 'pv', 'r_', 'rad2deg', 'radians', 'rank', 'rate', 'ravel', 'real', 'real_if_close', 'reciprocal', 'record', 'remainder', 'repeat', 'reshape', 'resize', 'restoredot', 'right_shift', 'rint', 'roll', 'rollaxis', 'roots', 'rot90', 'round', 'round_', 'row_stack', 's_', 'sctype2char', 'searchsorted', 'select', 'setbufsize', 'setdiff1d', 'seterr', 'setxor1d', 'shape', 'short', 'sign', 'signbit', 'signedinteger', 'sin', 'sinc', 'single', 'singlecomplex', 'sinh', 'size', 'sometrue', 'sort', 'sort_complex', 'spacing', 'split', 'sqrt', 'square', 'squeeze', 'std', 'str', 'str_', 'subtract', 'sum', 'swapaxes', 'take', 'tan', 'tanh', 'tensordot', 'tile', 'trace', 'transpose', 'trapz', 'tri', 'tril', 'tril_indices', 'tril_indices_from', 'trim_zeros', 'triu', 'triu_indices', 'triu_indices_from', 'true_divide', 'trunc', 'ubyte', 'uint', 'uint0', 'uint16', 'uint32', 'uint64', 'uint8', 'uintc', 'uintp', 'ulonglong', 'union1d', 'unique', 'unravel_index', 'unsignedinteger', 'unwrap', 'ushort', 'vander', 'var', 'vdot', 'vectorize', 'vsplit', 'vstack', 'where', 'who', 'zeros', 'zeros_like') NUMPY_RENAMES = {'ln': 'log', 'asin': 'arcsin', 'acos': 'arccos', 'atan': 'arctan', 'atan2': 'arctan2', 'atanh': 'arctanh', 'acosh': 'arccosh', 'asinh': 'arcsinh'} def _open(filename, mode='r', buffering=0): """read only version of open()""" umode = 'r' if mode == 'rb': umode = 'rb' return open(filename, umode, buffering) LOCALFUNCS = {'open': _open} OPERATORS = {ast.Is: lambda a, b: a is b, ast.IsNot: lambda a, b: a is not b, ast.In: lambda a, b: a in b, ast.NotIn: lambda a, b: a not in b, ast.Add: lambda a, b: a + b, ast.BitAnd: lambda a, b: a & b, ast.BitOr: lambda a, b: a | b, ast.BitXor: lambda a, b: a ^ b, ast.Div: lambda a, b: a / b, ast.FloorDiv: lambda a, b: a // b, ast.LShift: lambda a, b: a << b, ast.RShift: lambda a, b: a >> b, ast.Mult: lambda a, b: a * b, ast.Pow: lambda a, b: a ** b, ast.Sub: lambda a, b: a - b, ast.Mod: lambda a, b: a % b, ast.And: lambda a, b: a and b, ast.Or: lambda a, b: a or b, ast.Eq: lambda a, b: a == b, ast.Gt: lambda a, b: a > b, ast.GtE: lambda a, b: a >= b, ast.Lt: lambda a, b: a < b, ast.LtE: lambda a, b: a <= b, ast.NotEq: lambda a, b: a != b, ast.Invert: lambda a: ~a, ast.Not: lambda a: not a, ast.UAdd: lambda a: +a, ast.USub: lambda a: -a} def valid_symbol_name(name): """determines whether the input symbol name is a valid name This checks for reserved words, and that the name matches the regular expression ``[a-zA-Z_][a-zA-Z0-9_]`` """ if name in RESERVED_WORDS: return False return NAME_MATCH(name) is not None def op2func(op): "return function for operator nodes" return OPERATORS[op.__class__] class Empty: """empty class""" def __init__(self): pass def __nonzero__(self): return False ReturnedNone = Empty() class ExceptionHolder(object): "basic exception handler" def __init__(self, node, exc=None, msg='', expr=None, lineno=None): self.node = node self.expr = expr self.msg = msg self.exc = exc self.lineno = lineno self.exc_info = exc_info() if self.exc is None and self.exc_info[0] is not None: self.exc = self.exc_info[0] if self.msg is '' and self.exc_info[1] is not None: self.msg = self.exc_info[1] def get_error(self): "retrieve error data" col_offset = -1 if self.node is not None: try: col_offset = self.node.col_offset except AttributeError: pass try: exc_name = self.exc.__name__ except AttributeError: exc_name = str(self.exc) if exc_name in (None, 'None'): exc_name = 'UnknownError' out = [" %s" % self.expr] if col_offset > 0: out.append(" %s^^^" % ((col_offset)*' ')) out.append(str(self.msg)) return (exc_name, '\n'.join(out)) class NameFinder(ast.NodeVisitor): """find all symbol names used by a parsed node""" def __init__(self): self.names = [] ast.NodeVisitor.__init__(self) def generic_visit(self, node): if node.__class__.__name__ == 'Name': if node.ctx.__class__ == ast.Load and node.id not in self.names: self.names.append(node.id) ast.NodeVisitor.generic_visit(self, node) def get_ast_names(astnode): "returns symbol Names from an AST node" finder = NameFinder() finder.generic_visit(astnode) return finder.names lmfit-0.9.2/lmfit/minimizer.py0000644000032700003100000007212712613715346017626 0ustar newvillegeocars00000000000000""" Simple minimizer is a wrapper around scipy.leastsq, allowing a user to build a fitting model as a function of general purpose Fit Parameters that can be fixed or floated, bounded, and written as a simple expression of other Fit Parameters. The user sets up a model in terms of instance of Parameters, writes a function-to-be-minimized (residual function) in terms of these Parameters. Copyright (c) 2011 Matthew Newville, The University of Chicago """ from copy import deepcopy import numpy as np from numpy import (dot, eye, ndarray, ones_like, sqrt, take, transpose, triu, deprecate) from numpy.dual import inv from numpy.linalg import LinAlgError from scipy.optimize import leastsq as scipy_leastsq from scipy.optimize import fmin as scipy_fmin from scipy.optimize.lbfgsb import fmin_l_bfgs_b as scipy_lbfgsb # differential_evolution is only present in scipy >= 0.15 try: from scipy.optimize import differential_evolution as scipy_diffev except ImportError: from ._differentialevolution import differential_evolution as scipy_diffev # check for scipy.optimize.minimize HAS_SCALAR_MIN = False try: from scipy.optimize import minimize as scipy_minimize HAS_SCALAR_MIN = True except ImportError: pass from .asteval import Interpreter from .parameter import Parameter, Parameters # use locally modified version of uncertainties package from . import uncertainties def asteval_with_uncertainties(*vals, **kwargs): """ given values for variables, calculate object value. This is used by the uncertainties package to calculate the uncertainty in an object even with a complicated expression. """ _obj = kwargs.get('_obj', None) _pars = kwargs.get('_pars', None) _names = kwargs.get('_names', None) _asteval = _pars._asteval if (_obj is None or _pars is None or _names is None or _asteval is None or _obj._expr_ast is None): return 0 for val, name in zip(vals, _names): _asteval.symtable[name] = val return _asteval.eval(_obj._expr_ast) wrap_ueval = uncertainties.wrap(asteval_with_uncertainties) def eval_stderr(obj, uvars, _names, _pars): """evaluate uncertainty and set .stderr for a parameter `obj` given the uncertain values `uvars` (a list of uncertainties.ufloats), a list of parameter names that matches uvars, and a dict of param objects, keyed by name. This uses the uncertainties package wrapped function to evaluate the uncertainty for an arbitrary expression (in obj._expr_ast) of parameters. """ if not isinstance(obj, Parameter) or getattr(obj, '_expr_ast', None) is None: return uval = wrap_ueval(*uvars, _obj=obj, _names=_names, _pars=_pars) try: obj.stderr = uval.std_dev() except: obj.stderr = 0 class MinimizerException(Exception): """General Purpose Exception""" def __init__(self, msg): Exception.__init__(self) self.msg = msg def __str__(self): return "\n%s" % (self.msg) def _differential_evolution(func, x0, **kwds): """ A wrapper for differential_evolution that can be used with scipy.minimize """ kwargs = dict(args=(), strategy='best1bin', maxiter=None, popsize=15, tol=0.01, mutation=(0.5, 1), recombination=0.7, seed=None, callback=None, disp=False, polish=True, init='latinhypercube') for k, v in kwds.items(): if k in kwargs: kwargs[k] = v return scipy_diffev(func, kwds['bounds'], **kwargs) SCALAR_METHODS = {'nelder': 'Nelder-Mead', 'powell': 'Powell', 'cg': 'CG', 'bfgs': 'BFGS', 'newton': 'Newton-CG', 'lbfgsb': 'L-BFGS-B', 'l-bfgsb':'L-BFGS-B', 'tnc': 'TNC', 'cobyla': 'COBYLA', 'slsqp': 'SLSQP', 'dogleg': 'dogleg', 'trust-ncg': 'trust-ncg', 'differential_evolution': 'differential_evolution'} class MinimizerResult(object): """ The result of a minimization. Attributes ---------- params : Parameters The best-fit parameters success : bool Whether the minimization was successful status : int Termination status of the optimizer. Its value depends on the underlying solver. Refer to `message` for details. Notes ----- additional attributes not listed above depending of the specific solver. Since this class is essentially a subclass of dict with attribute accessors, one can see which attributes are available using the `keys()` method. """ def __init__(self, **kws): for key, val in kws.items(): setattr(self, key, val) class Minimizer(object): """A general minimizer for curve fitting""" err_nonparam = ("params must be a minimizer.Parameters() instance or list " "of Parameters()") err_maxfev = ("Too many function calls (max set to %i)! Use:" " minimize(func, params, ..., maxfev=NNN)" "or set leastsq_kws['maxfev'] to increase this maximum.") def __init__(self, userfcn, params, fcn_args=None, fcn_kws=None, iter_cb=None, scale_covar=True, **kws): """ Initialization of the Minimzer class Parameters ---------- userfcn : callable objective function that returns the residual (difference between model and data) to be minimized in a least squares sense. The function must have the signature: `userfcn(params, *fcn_args, **fcn_kws)` params : lmfit.parameter.Parameters object. contains the Parameters for the model. fcn_args : tuple, optional positional arguments to pass to userfcn. fcn_kws : dict, optional keyword arguments to pass to userfcn. iter_cb : callable, optional Function to be called at each fit iteration. This function should have the signature: `iter_cb(params, iter, resid, *fcn_args, **fcn_kws)`, where where `params` will have the current parameter values, `iter` the iteration, `resid` the current residual array, and `*fcn_args` and `**fcn_kws` as passed to the objective function. scale_covar : bool, optional Whether to automatically scale the covariance matrix (leastsq only). kws : dict, optional Options to pass to the minimizer being used. Notes ----- The objective function should return the value to be minimized. For the Levenberg-Marquardt algorithm from leastsq(), this returned value must be an array, with a length greater than or equal to the number of fitting variables in the model. For the other methods, the return value can either be a scalar or an array. If an array is returned, the sum of squares of the array will be sent to the underlying fitting method, effectively doing a least-squares optimization of the return values. A common use for the fcn_args and fcn_kwds would be to pass in other data needed to calculate the residual, including such things as the data array, dependent variable, uncertainties in the data, and other data structures for the model calculation. """ self.userfcn = userfcn self.userargs = fcn_args if self.userargs is None: self.userargs = [] self.userkws = fcn_kws if self.userkws is None: self.userkws = {} self.kws = kws self.iter_cb = iter_cb self.scale_covar = scale_covar self.nfev = 0 self.nfree = 0 self.ndata = 0 self.ier = 0 self._abort = False self.success = True self.errorbars = False self.message = None self.lmdif_message = None self.chisqr = None self.redchi = None self.covar = None self.residual = None self.params = params self.jacfcn = None @property def values(self): """ Returns ------- param_values : dict Parameter values in a simple dictionary. """ return dict([(name, p.value) for name, p in self.result.params.items()]) def __residual(self, fvars): """ Residual function used for least-squares fit. With the new, candidate values of fvars (the fitting variables), this evaluates all parameters, including setting bounds and evaluating constraints, and then passes those to the user-supplied function to calculate the residual. """ # set parameter values if self._abort: return None params = self.result.params for name, val in zip(self.result.var_names, fvars): params[name].value = params[name].from_internal(val) self.result.nfev = self.result.nfev + 1 params.update_constraints() out = self.userfcn(params, *self.userargs, **self.userkws) if callable(self.iter_cb): abort = self.iter_cb(params, self.result.nfev, out, *self.userargs, **self.userkws) self._abort = self._abort or abort if not self._abort: return np.asarray(out).ravel() def __jacobian(self, fvars): """ analytical jacobian to be used with the Levenberg-Marquardt modified 02-01-2012 by Glenn Jones, Aberystwyth University modified 06-29-2015 M Newville to apply gradient scaling for bounded variables (thanks to JJ Helmus, N Mayorov) """ pars = self.result.params grad_scale = ones_like(fvars) for ivar, name in enumerate(self.result.var_names): val = fvars[ivar] pars[name].value = pars[name].from_internal(val) grad_scale[ivar] = pars[name].scale_gradient(val) self.result.nfev = self.result.nfev + 1 pars.update_constraints() # compute the jacobian for "internal" unbounded variables, # the rescale for bounded "external" variables. jac = self.jacfcn(pars, *self.userargs, **self.userkws) if self.col_deriv: jac = (jac.transpose()*grad_scale).transpose() else: jac = jac*grad_scale return jac def penalty(self, fvars): """ Penalty function for scalar minimizers: Parameters ---------- fvars : array of values for the variable parameters Returns ------- r - float The user evaluated user-supplied objective function. If the objective function is an array, return the array sum-of-squares """ r = self.__residual(fvars) if isinstance(r, ndarray): r = (r*r).sum() return r def prepare_fit(self, params=None): """ Prepares parameters for fitting, return array of initial values """ # determine which parameters are actually variables # and which are defined expressions. result = self.result = MinimizerResult() if params is not None: self.params = params if isinstance(self.params, Parameters): result.params = deepcopy(self.params) elif isinstance(self.params, (list, tuple)): result.params = Parameters() for par in self.params: if not isinstance(par, Parameter): raise MinimizerException(self.err_nonparam) else: result.params[par.name] = par elif self.params is None: raise MinimizerException(self.err_nonparam) # determine which parameters are actually variables # and which are defined expressions. result.var_names = [] # note that this *does* belong to self... result.init_vals = [] result.params.update_constraints() result.nfev = 0 result.errorbars = False result.aborted = False for name, par in self.result.params.items(): par.stderr = None par.correl = None if par.expr is not None: par.vary = False if par.vary: result.var_names.append(name) result.init_vals.append(par.setup_bounds()) par.init_value = par.value if par.name is None: par.name = name result.nvarys = len(result.var_names) return result def unprepare_fit(self): """ Unprepares the fit, so that subsequent fits will be forced to run prepare_fit. removes ast compilations of constraint expressions """ pass @deprecate(message=' Deprecated in lmfit 0.8.2, use scalar_minimize ' 'and method=\'L-BFGS-B\' instead') def lbfgsb(self, **kws): """ Use l-bfgs-b minimization Parameters ---------- kws : dict Minimizer options to pass to the scipy.optimize.lbfgsb.fmin_l_bfgs_b function. """ raise NotImplementedError("use scalar_minimize(method='L-BFGS-B')") @deprecate(message=' Deprecated in lmfit 0.8.2, use scalar_minimize ' 'and method=\'Nelder-Mead\' instead') def fmin(self, **kws): """ Use Nelder-Mead (simplex) minimization Parameters ---------- kws : dict Minimizer options to pass to the scipy.optimize.fmin minimizer. """ raise NotImplementedError("use scalar_minimize(method='Nelder-Mead')") def scalar_minimize(self, method='Nelder-Mead', params=None, **kws): """ Use one of the scalar minimization methods from scipy.optimize.minimize. Parameters ---------- method : str, optional Name of the fitting method to use. One of: 'Nelder-Mead' (default) 'L-BFGS-B' 'Powell' 'CG' 'Newton-CG' 'COBYLA' 'TNC' 'trust-ncg' 'dogleg' 'SLSQP' 'differential_evolution' params : Parameters, optional Parameters to use as starting points. kws : dict, optional Minimizer options pass to scipy.optimize.minimize. If the objective function returns a numpy array instead of the expected scalar, the sum of squares of the array will be used. Note that bounds and constraints can be set on Parameters for any of these methods, so are not supported separately for those designed to use bounds. However, if you use the differential_evolution option you must specify finite (min, max) for each Parameter. Returns ------- success : bool Whether the fit was successful. """ if not HAS_SCALAR_MIN: raise NotImplementedError result = self.prepare_fit(params=params) vars = result.init_vals params = result.params fmin_kws = dict(method=method, options={'maxiter': 1000 * (len(vars) + 1)}) fmin_kws.update(self.kws) fmin_kws.update(kws) # hess supported only in some methods if 'hess' in fmin_kws and method not in ('Newton-CG', 'dogleg', 'trust-ncg'): fmin_kws.pop('hess') # jac supported only in some methods (and Dfun could be used...) if 'jac' not in fmin_kws and fmin_kws.get('Dfun', None) is not None: self.jacfcn = fmin_kws.pop('jac') fmin_kws['jac'] = self.__jacobian if 'jac' in fmin_kws and method not in ('CG', 'BFGS', 'Newton-CG', 'dogleg', 'trust-ncg'): self.jacfcn = None fmin_kws.pop('jac') if method == 'differential_evolution': fmin_kws['method'] = _differential_evolution bounds = [(par.min, par.max) for par in params.values()] if not np.all(np.isfinite(bounds)): raise ValueError('With differential evolution finite bounds ' 'are required for each parameter') bounds = [(-np.pi / 2., np.pi / 2.)] * len(vars) fmin_kws['bounds'] = bounds # in scipy 0.14 this can be called directly from scipy_minimize # When minimum scipy is 0.14 the following line and the else # can be removed. ret = _differential_evolution(self.penalty, vars, **fmin_kws) else: ret = scipy_minimize(self.penalty, vars, **fmin_kws) result.aborted = self._abort self._abort = False for attr in dir(ret): if not attr.startswith('_'): setattr(result, attr, getattr(ret, attr)) result.chisqr = result.residual = self.__residual(ret.x) result.nvarys = len(vars) result.ndata = 1 result.nfree = 1 if isinstance(result.residual, ndarray): result.chisqr = (result.chisqr**2).sum() result.ndata = len(result.residual) result.nfree = result.ndata - result.nvarys result.redchi = result.chisqr / result.nfree _log_likelihood = result.ndata * np.log(result.redchi) result.aic = _log_likelihood + 2 * result.nvarys result.bic = _log_likelihood + np.log(result.ndata) * result.nvarys return result def leastsq(self, params=None, **kws): """ Use Levenberg-Marquardt minimization to perform a fit. This assumes that ModelParameters have been stored, and a function to minimize has been properly set up. This wraps scipy.optimize.leastsq. When possible, this calculates the estimated uncertainties and variable correlations from the covariance matrix. Writes outputs to many internal attributes. Parameters ---------- params : Parameters, optional Parameters to use as starting points. kws : dict, optional Minimizer options to pass to scipy.optimize.leastsq. Returns ------- success : bool True if fit was successful, False if not. """ result = self.prepare_fit(params=params) vars = result.init_vals nvars = len(vars) lskws = dict(full_output=1, xtol=1.e-7, ftol=1.e-7, col_deriv=False, gtol=1.e-7, maxfev=2000*(nvars+1), Dfun=None) lskws.update(self.kws) lskws.update(kws) self.col_deriv = False if lskws['Dfun'] is not None: self.jacfcn = lskws['Dfun'] self.col_deriv = lskws['col_deriv'] lskws['Dfun'] = self.__jacobian # suppress runtime warnings during fit and error analysis orig_warn_settings = np.geterr() np.seterr(all='ignore') lsout = scipy_leastsq(self.__residual, vars, **lskws) _best, _cov, infodict, errmsg, ier = lsout result.aborted = self._abort self._abort = False result.residual = resid = infodict['fvec'] result.ier = ier result.lmdif_message = errmsg result.message = 'Fit succeeded.' result.success = ier in [1, 2, 3, 4] if result.aborted: result.message = 'Fit aborted by user callback.' result.success = False elif ier == 0: result.message = 'Invalid Input Parameters.' elif ier == 5: result.message = self.err_maxfev % lskws['maxfev'] else: result.message = 'Tolerance seems to be too small.' result.ndata = len(resid) result.chisqr = (resid**2).sum() result.nfree = (result.ndata - nvars) result.redchi = result.chisqr / result.nfree _log_likelihood = result.ndata * np.log(result.redchi) result.aic = _log_likelihood + 2 * nvars result.bic = _log_likelihood + np.log(result.ndata) * nvars params = result.params # need to map _best values to params, then calculate the # grad for the variable parameters grad = ones_like(_best) vbest = ones_like(_best) # ensure that _best, vbest, and grad are not # broken 1-element ndarrays. if len(np.shape(_best)) == 0: _best = np.array([_best]) if len(np.shape(vbest)) == 0: vbest = np.array([vbest]) if len(np.shape(grad)) == 0: grad = np.array([grad]) for ivar, name in enumerate(result.var_names): grad[ivar] = params[name].scale_gradient(_best[ivar]) vbest[ivar] = params[name].value # modified from JJ Helmus' leastsqbound.py infodict['fjac'] = transpose(transpose(infodict['fjac']) / take(grad, infodict['ipvt'] - 1)) rvec = dot(triu(transpose(infodict['fjac'])[:nvars, :]), take(eye(nvars), infodict['ipvt'] - 1, 0)) try: result.covar = inv(dot(transpose(rvec), rvec)) except (LinAlgError, ValueError): result.covar = None has_expr = False for par in params.values(): par.stderr, par.correl = 0, None has_expr = has_expr or par.expr is not None # self.errorbars = error bars were successfully estimated result.errorbars = (result.covar is not None) if result.aborted: result.errorbars = False if result.errorbars: if self.scale_covar: result.covar *= result.redchi for ivar, name in enumerate(result.var_names): par = params[name] par.stderr = sqrt(result.covar[ivar, ivar]) par.correl = {} try: result.errorbars = result.errorbars and (par.stderr > 0.0) for jvar, varn2 in enumerate(result.var_names): if jvar != ivar: par.correl[varn2] = (result.covar[ivar, jvar] / (par.stderr * sqrt(result.covar[jvar, jvar]))) except: result.errorbars = False uvars = None if has_expr: # uncertainties on constrained parameters: # get values with uncertainties (including correlations), # temporarily set Parameter values to these, # re-evaluate contrained parameters to extract stderr # and then set Parameters back to best-fit value try: uvars = uncertainties.correlated_values(vbest, result.covar) except (LinAlgError, ValueError): uvars = None if uvars is not None: for par in params.values(): eval_stderr(par, uvars, result.var_names, params) # restore nominal values for v, nam in zip(uvars, result.var_names): params[nam].value = v.nominal_value if not result.errorbars: result.message = '%s. Could not estimate error-bars'% result.message np.seterr(**orig_warn_settings) return result def minimize(self, method='leastsq', params=None, **kws): """ Perform the minimization. Parameters ---------- method : str, optional Name of the fitting method to use. One of: 'leastsq' - Levenberg-Marquardt (default) 'nelder' - Nelder-Mead 'lbfgsb' - L-BFGS-B 'powell' - Powell 'cg' - Conjugate-Gradient 'newton' - Newton-CG 'cobyla' - Cobyla 'tnc' - Truncate Newton 'trust-ncg' - Trust Newton-CGn 'dogleg' - Dogleg 'slsqp' - Sequential Linear Squares Programming 'differential_evolution' - differential evolution params : Parameters, optional parameters to use as starting values Returns ------- result : MinimizerResult MinimizerResult object contains updated params, fit statistics, etc. """ function = self.leastsq kwargs = {'params': params} kwargs.update(kws) user_method = method.lower() if user_method.startswith('least'): function = self.leastsq elif HAS_SCALAR_MIN: function = self.scalar_minimize for key, val in SCALAR_METHODS.items(): if (key.lower().startswith(user_method) or val.lower().startswith(user_method)): kwargs['method'] = val elif (user_method.startswith('nelder') or user_method.startswith('fmin')): function = self.fmin elif user_method.startswith('lbfgsb'): function = self.lbfgsb return function(**kwargs) def minimize(fcn, params, method='leastsq', args=None, kws=None, scale_covar=True, iter_cb=None, **fit_kws): """ A general purpose curvefitting function The minimize function takes a objective function to be minimized, a dictionary (lmfit.parameter.Parameters) containing the model parameters, and several optional arguments. Parameters ---------- fcn : callable objective function that returns the residual (difference between model and data) to be minimized in a least squares sense. The function must have the signature: `fcn(params, *args, **kws)` params : lmfit.parameter.Parameters object. contains the Parameters for the model. method : str, optional Name of the fitting method to use. One of: 'leastsq' - Levenberg-Marquardt (default) 'nelder' - Nelder-Mead 'lbfgsb' - L-BFGS-B 'powell' - Powell 'cg' - Conjugate-Gradient 'newton' - Newton-CG 'cobyla' - Cobyla 'tnc' - Truncate Newton 'trust-ncg' - Trust Newton-CGn 'dogleg' - Dogleg 'slsqp' - Sequential Linear Squares Programming 'differential_evolution' - differential evolution args : tuple, optional Positional arguments to pass to fcn. kws : dict, optional keyword arguments to pass to fcn. iter_cb : callable, optional Function to be called at each fit iteration. This function should have the signature `iter_cb(params, iter, resid, *args, **kws)`, where where `params` will have the current parameter values, `iter` the iteration, `resid` the current residual array, and `*args` and `**kws` as passed to the objective function. scale_covar : bool, optional Whether to automatically scale the covariance matrix (leastsq only). fit_kws : dict, optional Options to pass to the minimizer being used. Notes ----- The objective function should return the value to be minimized. For the Levenberg-Marquardt algorithm from leastsq(), this returned value must be an array, with a length greater than or equal to the number of fitting variables in the model. For the other methods, the return value can either be a scalar or an array. If an array is returned, the sum of squares of the array will be sent to the underlying fitting method, effectively doing a least-squares optimization of the return values. A common use for `args` and `kwds` would be to pass in other data needed to calculate the residual, including such things as the data array, dependent variable, uncertainties in the data, and other data structures for the model calculation. """ fitter = Minimizer(fcn, params, fcn_args=args, fcn_kws=kws, iter_cb=iter_cb, scale_covar=scale_covar, **fit_kws) return fitter.minimize(method=method) lmfit-0.9.2/lmfit/parameter.py0000644000032700003100000005546512613715346017611 0ustar newvillegeocars00000000000000""" Parameter class """ from __future__ import division from numpy import arcsin, cos, sin, sqrt, inf, nan import json from copy import deepcopy try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict from . import uncertainties from .asteval import Interpreter from .astutils import get_ast_names, valid_symbol_name def check_ast_errors(expr_eval): """check for errors derived from asteval""" if len(expr_eval.error) > 0: expr_eval.raise_exception(None) class Parameters(OrderedDict): """ A dictionary of all the Parameters required to specify a fit model. All keys must be strings, and valid Python symbol names, and all values must be Parameters. Custom methods: --------------- add() add_many() dumps() / dump() loads() / load() """ def __init__(self, asteval=None, *args, **kwds): super(Parameters, self).__init__(self) self._asteval = asteval if asteval is None: self._asteval = Interpreter() self.update(*args, **kwds) def __deepcopy__(self, memo): _pars = Parameters() # find the symbols that were added by users, not during construction sym_unique = self._asteval.user_defined_symbols() unique_symbols = {key: deepcopy(self._asteval.symtable[key], memo) for key in sym_unique} _pars._asteval.symtable.update(unique_symbols) # we're just about to add a lot of Parameter objects to the newly parameter_list = [] for key, par in self.items(): if isinstance(par, Parameter): param = Parameter(name=par.name, value=par.value, min=par.min, max=par.max) param.vary = par.vary param.stderr = par.stderr param.correl = par.correl param.init_value = par.init_value param.expr = par.expr parameter_list.append(param) _pars.add_many(*parameter_list) return _pars def __setitem__(self, key, par): if key not in self: if not valid_symbol_name(key): raise KeyError("'%s' is not a valid Parameters name" % key) if par is not None and not isinstance(par, Parameter): raise ValueError("'%s' is not a Parameter" % par) OrderedDict.__setitem__(self, key, par) par.name = key par._expr_eval = self._asteval self._asteval.symtable[key] = par.value def __add__(self, other): "add Parameters objects" if not isinstance(other, Parameters): raise ValueError("'%s' is not a Parameters object" % other) out = deepcopy(self) params = other.values() out.add_many(*params) return out def __iadd__(self, other): """ add/assign Parameters objects """ if not isinstance(other, Parameters): raise ValueError("'%s' is not a Parameters object" % other) params = other.values() self.add_many(*params) return self def __reduce__(self): """ Required to pickle a Parameters instance. """ # make a list of all the parameters params = [self[k] for k in self] # find the symbols from _asteval.symtable, that need to be remembered. sym_unique = self._asteval.user_defined_symbols() unique_symbols = {key: deepcopy(self._asteval.symtable[key]) for key in sym_unique} return self.__class__, (), {'unique_symbols': unique_symbols, 'params': params} def __setstate__(self, state): """ Unpickle a Parameters instance. Parameters ---------- state : list state[0] is a dictionary containing symbols that need to be injected into _asteval.symtable state[1:] are the Parameter instances to be added is list of parameters """ # first add all the parameters self.add_many(*state['params']) # now update the Interpreter symbol table self._asteval.symtable.update(state['unique_symbols']) def update_constraints(self): """ Update all constrained parameters, checking that dependencies are evaluated as needed. """ _updated = [name for name,par in self.items() if par._expr is None] def _update_param(name): """ Update a parameter value, including setting bounds. For a constrained parameter (one with an expr defined), this first updates (recursively) all parameters on which the parameter depends (using the 'deps' field). """ # Has this param already been updated? if name in _updated: return par = self.__getitem__(name) if par._expr_eval is None: par._expr_eval = self._asteval if par._expr is not None: par.expr = par._expr if par._expr_ast is not None: for dep in par._expr_deps: if dep in self.keys(): _update_param(dep) self._asteval.symtable[name] = par.value _updated.append(name) for name in self.keys(): if name not in _updated: _update_param(name) def pretty_repr(self, oneline=False): if oneline: return super(Parameters, self).__repr__() s = "Parameters({\n" for key in self.keys(): s += " '%s': %s, \n" % (key, self[key]) s += " })\n" return s def pretty_print(self, oneline=False): print(self.pretty_repr(oneline=oneline)) def add(self, name, value=None, vary=True, min=None, max=None, expr=None): """ Convenience function for adding a Parameter: Example ------- p = Parameters() p.add(name, value=XX, ...) is equivalent to: p[name] = Parameter(name=name, value=XX, .... """ if isinstance(name, Parameter): self.__setitem__(name.name, name) else: self.__setitem__(name, Parameter(value=value, name=name, vary=vary, min=min, max=max, expr=expr)) def add_many(self, *parlist): """ Convenience function for adding a list of Parameters. Parameters ---------- parlist : sequence A sequence of tuples, or a sequence of `Parameter` instances. If it is a sequence of tuples, then each tuple must contain at least the name. The order in each tuple is the following: name, value, vary, min, max, expr Example ------- p = Parameters() # add a sequence of tuples p.add_many( (name1, val1, True, None, None, None), (name2, val2, True, 0.0, None, None), (name3, val3, False, None, None, None), (name4, val4)) # add a sequence of Parameter f = Parameter('name5', val5) g = Parameter('name6', val6) p.add_many(f, g) """ for para in parlist: if isinstance(para, Parameter): self.__setitem__(para.name, para) else: param = Parameter(*para) self.__setitem__(param.name, param) def valuesdict(self): """ Returns ------- An ordered dictionary of name:value pairs for each Parameter. This is distinct from the Parameters itself, as it has values of the Parameter values, not the full Parameter object. """ return OrderedDict(((p.name, p.value) for p in self.values())) def dumps(self, **kws): """represent Parameters as a JSON string. all keyword arguments are passed to `json.dumps()` Returns ------- json string representation of Parameters See Also -------- dump(), loads(), load(), json.dumps() """ out = [p.__getstate__() for p in self.values()] return json.dumps(out, **kws) def loads(self, s, **kws): """load Parameters from a JSON string. current Parameters will be cleared before loading. all keyword arguments are passed to `json.loads()` Returns ------- None. Parameters are updated as a side-effect See Also -------- dump(), dumps(), load(), json.loads() """ self.clear() for parstate in json.loads(s, **kws): _par = Parameter() _par.__setstate__(parstate) self.__setitem__(parstate[0], _par) def dump(self, fp, **kws): """write JSON representation of Parameters to a file or file-like object (must have a `write()` method). Arguments --------- fp open file-like object with `write()` method. all keyword arguments are passed to `dumps()` Returns ------- return value from `fp.write()` See Also -------- dump(), load(), json.dump() """ return fp.write(self.dumps(**kws)) def load(self, fp, **kws): """load JSON representation of Parameters from a file or file-like object (must have a `read()` method). Arguments --------- fp open file-like object with `read()` method. all keyword arguments are passed to `loads()` Returns ------- None. Parameters are updated as a side-effect See Also -------- dump(), loads(), json.load() """ return self.loads(fp.read(), **kws) class Parameter(object): """ A Parameter is an object used to define a Fit Model. Attributes ---------- name : str Parameter name. value : float The numerical value of the Parameter. vary : bool Whether the Parameter is fixed during a fit. min : float Lower bound for value (None = no lower bound). max : float Upper bound for value (None = no upper bound). expr : str An expression specifying constraints for the parameter. stderr : float The estimated standard error for the best-fit value. correl : dict Specifies correlation with the other fitted Parameter after a fit. Of the form `{'decay': 0.404, 'phase': -0.020, 'frequency': 0.102}` """ def __init__(self, name=None, value=None, vary=True, min=None, max=None, expr=None): """ Parameters ---------- name : str, optional Name of the parameter. value : float, optional Numerical Parameter value. vary : bool, optional Whether the Parameter is fixed during a fit. min : float, optional Lower bound for value (None = no lower bound). max : float, optional Upper bound for value (None = no upper bound). expr : str, optional Mathematical expression used to constrain the value during the fit. """ self.name = name self._val = value self.user_value = value self.init_value = value self.min = min self.max = max self.vary = vary self._expr = expr self._expr_ast = None self._expr_eval = None self._expr_deps = [] self._delay_asteval = False self.stderr = None self.correl = None self.from_internal = lambda val: val self._init_bounds() def set(self, value=None, vary=None, min=None, max=None, expr=None): """ Set or update Parameter attributes. Parameters ---------- value : float, optional Numerical Parameter value. vary : bool, optional Whether the Parameter is fixed during a fit. min : float, optional Lower bound for value. To remove a lower bound you must use -np.inf max : float, optional Upper bound for value. To remove an upper bound you must use np.inf expr : str, optional Mathematical expression used to constrain the value during the fit. To remove a constraint you must supply an empty string. """ self.__set_expression(expr) if value is not None: self._val = value if vary is not None: self.vary = vary if min is not None: self.min = min if max is not None: self.max = max def _init_bounds(self): """make sure initial bounds are self-consistent""" #_val is None means - infinity. if self._val is not None: if self.max is not None and self._val > self.max: self._val = self.max if self.min is not None and self._val < self.min: self._val = self.min elif self.min is not None and self._expr is None: self._val = self.min elif self.max is not None and self._expr is None: self._val = self.max self.setup_bounds() def __getstate__(self): """get state for pickle""" return (self.name, self.value, self.vary, self.expr, self.min, self.max, self.stderr, self.correl, self.init_value) def __setstate__(self, state): """set state for pickle""" (self.name, self.value, self.vary, self.expr, self.min, self.max, self.stderr, self.correl, self.init_value) = state self._expr_ast = None self._expr_eval = None self._expr_deps = [] self._delay_asteval = False self._init_bounds() def __repr__(self): s = [] if self.name is not None: s.append("'%s'" % self.name) sval = repr(self._getval()) if not self.vary and self._expr is None: sval = "value=%s (fixed)" % (sval) elif self.stderr is not None: sval = "value=%s +/- %.3g" % (sval, self.stderr) s.append(sval) s.append("bounds=[%s:%s]" % (repr(self.min), repr(self.max))) if self._expr is not None: s.append("expr='%s'" % (self.expr)) return "" % ', '.join(s) def setup_bounds(self): """ Set up Minuit-style internal/external parameter transformation of min/max bounds. As a side-effect, this also defines the self.from_internal method used to re-calculate self.value from the internal value, applying the inverse Minuit-style transformation. This method should be called prior to passing a Parameter to the user-defined objective function. This code borrows heavily from JJ Helmus' leastsqbound.py Returns ------- The internal value for parameter from self.value (which holds the external, user-expected value). This internal value should actually be used in a fit. """ if self.min in (None, -inf) and self.max in (None, inf): self.from_internal = lambda val: val _val = self._val elif self.max in (None, inf): self.from_internal = lambda val: self.min - 1.0 + sqrt(val*val + 1) _val = sqrt((self._val - self.min + 1.0)**2 - 1) elif self.min in (None, -inf): self.from_internal = lambda val: self.max + 1 - sqrt(val*val + 1) _val = sqrt((self.max - self._val + 1.0)**2 - 1) else: self.from_internal = lambda val: self.min + (sin(val) + 1) * \ (self.max - self.min) / 2.0 _val = arcsin(2*(self._val - self.min)/(self.max - self.min) - 1) return _val def scale_gradient(self, val): """ Returns ------- scaling factor for gradient the according to Minuit-style transformation. """ if self.min in (None, -inf) and self.max in (None, inf): return 1.0 elif self.max in (None, inf): return val / sqrt(val*val + 1) elif self.min in (None, -inf): return -val / sqrt(val*val + 1) else: return cos(val) * (self.max - self.min) / 2.0 def _getval(self): """get value, with bounds applied""" # Note assignment to self._val has been changed to self.value # The self.value property setter makes sure that the # _expr_eval.symtable is kept updated. # If you just assign to self._val then # _expr_eval.symtable[self.name] # becomes stale if parameter.expr is not None. if (isinstance(self._val, uncertainties.Variable) and self._val is not nan): try: self.value = self._val.nominal_value except AttributeError: pass if not self.vary and self._expr is None: return self._val if not hasattr(self, '_expr_eval'): self._expr_eval = None if not hasattr(self, '_expr_ast'): self._expr_ast = None if self._expr_ast is None and self._expr is not None: self.__set_expression(self._expr) if self._expr_ast is not None and self._expr_eval is not None: if not self._delay_asteval: self.value = self._expr_eval(self._expr_ast) check_ast_errors(self._expr_eval) if self.min is None: self.min = -inf if self.max is None: self.max = inf if self.max < self.min: self.max, self.min = self.min, self.max if (abs((1.0 * self.max - self.min)/ max(abs(self.max), abs(self.min), 1.e-13)) < 1.e-13): raise ValueError("Parameter '%s' has min == max" % self.name) try: self.value = max(self.min, min(self._val, self.max)) except(TypeError, ValueError): self.value = nan return self._val def set_expr_eval(self, evaluator): "set expression evaluator instance" self._expr_eval = evaluator @property def value(self): "The numerical value of the Parameter, with bounds applied" return self._getval() @value.setter def value(self, val): "Set the numerical Parameter value." self._val = val if not hasattr(self, '_expr_eval'): self._expr_eval = None if self._expr_eval is not None: self._expr_eval.symtable[self.name] = val @property def expr(self): """ The mathematical expression used to constrain the value during the fit. """ return self._expr @expr.setter def expr(self, val): """ The mathematical expression used to constrain the value during the fit. To remove a constraint you must supply an empty string. """ self.__set_expression(val) def __set_expression(self, val): if val == '': val = None self._expr = val if val is not None: self.vary = False if not hasattr(self, '_expr_eval'): self._expr_eval = None if val is None: self._expr_ast = None if val is not None and self._expr_eval is not None: self._expr_ast = self._expr_eval.parse(val) check_ast_errors(self._expr_eval) self._expr_deps = get_ast_names(self._expr_ast) def __str__(self): "string" return self.__repr__() def __abs__(self): "abs" return abs(self._getval()) def __neg__(self): "neg" return -self._getval() def __pos__(self): "positive" return +self._getval() def __nonzero__(self): "not zero" return self._getval() != 0 def __int__(self): "int" return int(self._getval()) def __long__(self): "long" return long(self._getval()) def __float__(self): "float" return float(self._getval()) def __trunc__(self): "trunc" return self._getval().__trunc__() def __add__(self, other): "+" return self._getval() + other def __sub__(self, other): "-" return self._getval() - other def __div__(self, other): "/" return self._getval() / other __truediv__ = __div__ def __floordiv__(self, other): "//" return self._getval() // other def __divmod__(self, other): "divmod" return divmod(self._getval(), other) def __mod__(self, other): "%" return self._getval() % other def __mul__(self, other): "*" return self._getval() * other def __pow__(self, other): "**" return self._getval() ** other def __gt__(self, other): ">" return self._getval() > other def __ge__(self, other): ">=" return self._getval() >= other def __le__(self, other): "<=" return self._getval() <= other def __lt__(self, other): "<" return self._getval() < other def __eq__(self, other): "==" return self._getval() == other def __ne__(self, other): "!=" return self._getval() != other def __radd__(self, other): "+ (right)" return other + self._getval() def __rdiv__(self, other): "/ (right)" return other / self._getval() __rtruediv__ = __rdiv__ def __rdivmod__(self, other): "divmod (right)" return divmod(other, self._getval()) def __rfloordiv__(self, other): "// (right)" return other // self._getval() def __rmod__(self, other): "% (right)" return other % self._getval() def __rmul__(self, other): "* (right)" return other * self._getval() def __rpow__(self, other): "** (right)" return other ** self._getval() def __rsub__(self, other): "- (right)" return other - self._getval() def isParameter(x): "test for Parameter-ness" return (isinstance(x, Parameter) or x.__class__.__name__ == 'Parameter') lmfit-0.9.2/lmfit/model.py0000644000032700003100000011737312613715346016726 0ustar newvillegeocars00000000000000""" Concise nonlinear curve fitting. """ from __future__ import print_function import warnings import inspect import operator from copy import deepcopy import numpy as np from . import Parameters, Parameter, Minimizer from .printfuncs import fit_report, ci_report from .confidence import conf_interval from collections import MutableSet try: from collections import OrderedDict except ImportError: from ordereddict import OrderedDict # Use pandas.isnull for aligning missing data is pandas is available. # otherwise use numpy.isnan try: from pandas import isnull, Series except ImportError: isnull = np.isnan Series = type(NotImplemented) def _align(var, mask, data): "align missing data, with pandas is available" if isinstance(data, Series) and isinstance(var, Series): return var.reindex_like(data).dropna() elif mask is not None: return var[mask] return var try: from matplotlib import pyplot as plt _HAS_MATPLOTLIB = True except ImportError: _HAS_MATPLOTLIB = False def _ensureMatplotlib(function): if _HAS_MATPLOTLIB: return function else: def no_op(*args, **kwargs): print('matplotlib module is required for plotting the results') return no_op class Model(object): """Create a model from a user-defined function. Parameters ---------- func: function to be wrapped independent_vars: list of strings or None (default) arguments to func that are independent variables param_names: list of strings or None (default) names of arguments to func that are to be made into parameters missing: None, 'none', 'drop', or 'raise' 'none' or None: Do not check for null or missing values (default) 'drop': Drop null or missing observations in data. if pandas is installed, pandas.isnull is used, otherwise numpy.isnan is used. 'raise': Raise a (more helpful) exception when data contains null or missing values. name: None or string name for the model. When `None` (default) the name is the same as the model function (`func`). Note ---- Parameter names are inferred from the function arguments, and a residual function is automatically constructed. Example ------- >>> def decay(t, tau, N): ... return N*np.exp(-t/tau) ... >>> my_model = Model(decay, independent_vars=['t']) """ _forbidden_args = ('data', 'weights', 'params') _invalid_ivar = "Invalid independent variable name ('%s') for function %s" _invalid_par = "Invalid parameter name ('%s') for function %s" _invalid_missing = "missing must be None, 'none', 'drop', or 'raise'." _valid_missing = (None, 'none', 'drop', 'raise') _invalid_hint = "unknown parameter hint '%s' for param '%s'" _hint_names = ('value', 'vary', 'min', 'max', 'expr') def __init__(self, func, independent_vars=None, param_names=None, missing='none', prefix='', name=None, **kws): self.func = func self._prefix = prefix self._param_root_names = param_names # will not include prefixes self.independent_vars = independent_vars self._func_allargs = [] self._func_haskeywords = False if not missing in self._valid_missing: raise ValueError(self._invalid_missing) self.missing = missing self.opts = kws self.param_hints = OrderedDict() # the following has been changed from OrderedSet for the time being self._param_names = [] self._parse_params() if self.independent_vars is None: self.independent_vars = [] if name is None and hasattr(self.func, '__name__'): name = self.func.__name__ self._name = name def _reprstring(self, long=False): out = self._name opts = [] if len(self._prefix) > 0: opts.append("prefix='%s'" % (self._prefix)) if long: for k, v in self.opts.items(): opts.append("%s='%s'" % (k, v)) if len(opts) > 0: out = "%s, %s" % (out, ', '.join(opts)) return "Model(%s)" % out @property def name(self): return self._reprstring(long=False) @name.setter def name(self, value): self._name = value @property def prefix(self): return self._prefix @property def param_names(self): return self._param_names def __repr__(self): return "" % (self.name) def copy(self, **kwargs): """DOES NOT WORK""" raise NotImplementedError("Model.copy does not work. Make a new Model") def _parse_params(self): "build params from function arguments" if self.func is None: return argspec = inspect.getargspec(self.func) pos_args = argspec.args[:] keywords = argspec.keywords kw_args = {} if argspec.defaults is not None: for val in reversed(argspec.defaults): kw_args[pos_args.pop()] = val self._func_haskeywords = keywords is not None self._func_allargs = pos_args + list(kw_args.keys()) allargs = self._func_allargs if len(allargs) == 0 and keywords is not None: return # default independent_var = 1st argument if self.independent_vars is None: self.independent_vars = [pos_args[0]] # default param names: all positional args # except independent variables self.def_vals = {} might_be_param = [] if self._param_root_names is None: self._param_root_names = pos_args[:] for key, val in kw_args.items(): if (not isinstance(val, bool) and isinstance(val, (float, int))): self._param_root_names.append(key) self.def_vals[key] = val elif val is None: might_be_param.append(key) for p in self.independent_vars: if p in self._param_root_names: self._param_root_names.remove(p) new_opts = {} for opt, val in self.opts.items(): if (opt in self._param_root_names or opt in might_be_param and isinstance(val, Parameter)): self.set_param_hint(opt, value=val.value, min=val.min, max=val.max, expr=val.expr) elif opt in self._func_allargs: new_opts[opt] = val self.opts = new_opts names = [] if self._prefix is None: self._prefix = '' for pname in self._param_root_names: names.append("%s%s" % (self._prefix, pname)) # check variables names for validity # The implicit magic in fit() requires us to disallow some fname = self.func.__name__ for arg in self.independent_vars: if arg not in allargs or arg in self._forbidden_args: raise ValueError(self._invalid_ivar % (arg, fname)) for arg in names: if (self._strip_prefix(arg) not in allargs or arg in self._forbidden_args): raise ValueError(self._invalid_par % (arg, fname)) # the following as been changed from OrderedSet for the time being. self._param_names = names[:] def set_param_hint(self, name, **kwargs): """set hints for parameter, including optional bounds and constraints (value, vary, min, max, expr) these will be used by make_params() when building default parameters example: model = GaussianModel() model.set_param_hint('amplitude', min=-100.0, max=0.) """ npref = len(self._prefix) if npref > 0 and name.startswith(self._prefix): name = name[npref:] thishint = {} if name in self.param_hints: thishint = self.param_hints.pop(name) thishint.update(kwargs) self.param_hints[name] = OrderedDict() for key, val in thishint.items(): if key in self._hint_names: self.param_hints[name][key] = val else: warnings.warn(self._invalid_hint % (key, name)) def make_params(self, verbose=False, **kwargs): """create and return a Parameters object for a Model. This applies any default values """ params = Parameters() # first build parameters defined in param_hints # note that composites may define their own additional # convenience parameters here for basename, hint in self.param_hints.items(): name = "%s%s" % (self._prefix, basename) if name in params: par = params[name] else: par = Parameter(name=name) par._delay_asteval = True for item in self._hint_names: if item in hint: setattr(par, item, hint[item]) # Add the new parameter to self._param_names if name not in self._param_names: self._param_names.append(name) params.add(par) if verbose: print( ' - Adding parameter for hint "%s"' % name) # next, make sure that all named parameters are included for name in self.param_names: if name in params: par = params[name] else: par = Parameter(name=name) par._delay_asteval = True basename = name[len(self._prefix):] # apply defaults from model function definition if basename in self.def_vals: par.value = self.def_vals[basename] # apply defaults from parameter hints if basename in self.param_hints: hint = self.param_hints[basename] for item in self._hint_names: if item in hint: setattr(par, item, hint[item]) # apply values passed in through kw args if basename in kwargs: # kw parameter names with no prefix par.value = kwargs[basename] if name in kwargs: # kw parameter names with prefix par.value = kwargs[name] params.add(par) if verbose: print( ' - Adding parameter "%s"' % name) for p in params.values(): p._delay_asteval = False return params def guess(self, data=None, **kws): """stub for guess starting values -- should be implemented for each model subclass to run self.make_params(), update starting values and return a Parameters object""" cname = self.__class__.__name__ msg = 'guess() not implemented for %s' % cname raise NotImplementedError(msg) def _residual(self, params, data, weights, **kwargs): "default residual: (data-model)*weights" diff = self.eval(params, **kwargs) - data if weights is not None: diff *= weights return np.asarray(diff).ravel() # for compatibility with pandas.Series def _handle_missing(self, data): "handle missing data" if self.missing == 'raise': if np.any(isnull(data)): raise ValueError("Data contains a null value.") elif self.missing == 'drop': mask = ~isnull(data) if np.all(mask): return None # short-circuit this -- no missing values mask = np.asarray(mask) # for compatibility with pandas.Series return mask def _strip_prefix(self, name): npref = len(self._prefix) if npref > 0 and name.startswith(self._prefix): name = name[npref:] return name def make_funcargs(self, params=None, kwargs=None, strip=True): """convert parameter values and keywords to function arguments""" if params is None: params = {} if kwargs is None: kwargs = {} out = {} out.update(self.opts) for name, par in params.items(): if strip: name = self._strip_prefix(name) if name in self._func_allargs or self._func_haskeywords: out[name] = par.value # kwargs handled slightly differently -- may set param value too! for name, val in kwargs.items(): if strip: name = self._strip_prefix(name) if name in self._func_allargs or self._func_haskeywords: out[name] = val if name in params: params[name].value = val return out def _make_all_args(self, params=None, **kwargs): """generate **all** function args for all functions""" args = {} for key, val in self.make_funcargs(params, kwargs).items(): args["%s%s" % (self._prefix, key)] = val return args def eval(self, params=None, **kwargs): """evaluate the model with the supplied parameters""" result = self.func(**self.make_funcargs(params, kwargs)) # Handle special case of constant result and one # independent variable (of any dimension). if np.ndim(result) == 0 and len(self.independent_vars) == 1: result = np.tile(result, kwargs[self.independent_vars[0]].shape) return result @property def components(self): """return components for composite model""" return [self] def eval_components(self, params=None, **kwargs): """ evaluate the model with the supplied parameters and returns a ordered dict containting name, result pairs. """ key = self._prefix if len(key) < 1: key = self._name return {key: self.eval(params=params, **kwargs)} def fit(self, data, params=None, weights=None, method='leastsq', iter_cb=None, scale_covar=True, verbose=True, fit_kws=None, **kwargs): """Fit the model to the data. Parameters ---------- data: array-like params: Parameters object weights: array-like of same size as data used for weighted fit method: fitting method to use (default = 'leastsq') iter_cb: None or callable callback function to call at each iteration. scale_covar: bool (default True) whether to auto-scale covariance matrix verbose: bool (default True) print a message when a new parameter is added because of a hint. fit_kws: dict default fitting options, such as xtol and maxfev, for scipy optimizer keyword arguments: optional, named like the arguments of the model function, will override params. See examples below. Returns ------- lmfit.ModelResult Examples -------- # Take t to be the independent variable and data to be the # curve we will fit. # Using keyword arguments to set initial guesses >>> result = my_model.fit(data, tau=5, N=3, t=t) # Or, for more control, pass a Parameters object. >>> result = my_model.fit(data, params, t=t) # Keyword arguments override Parameters. >>> result = my_model.fit(data, params, tau=5, t=t) Note ---- All parameters, however passed, are copied on input, so the original Parameter objects are unchanged. """ if params is None: params = self.make_params(verbose=verbose) else: params = deepcopy(params) # If any kwargs match parameter names, override params. param_kwargs = set(kwargs.keys()) & set(self.param_names) for name in param_kwargs: p = kwargs[name] if isinstance(p, Parameter): p.name = name # allows N=Parameter(value=5) with implicit name params[name] = deepcopy(p) else: params[name].set(value=p) del kwargs[name] # All remaining kwargs should correspond to independent variables. for name in kwargs.keys(): if name not in self.independent_vars: warnings.warn("The keyword argument %s does not" % name + "match any arguments of the model function." + "It will be ignored.", UserWarning) # If any parameter is not initialized raise a more helpful error. missing_param = any([p not in params.keys() for p in self.param_names]) blank_param = any([(p.value is None and p.expr is None) for p in params.values()]) if missing_param or blank_param: msg = ('Assign each parameter an initial value by passing ' 'Parameters or keyword arguments to fit.\n') missing = [p for p in self.param_names if p not in params.keys()] blank = [name for name, p in params.items() if (p.value is None and p.expr is None)] msg += 'Missing parameters: %s\n' % str(missing) msg += 'Non initialized parameters: %s' % str(blank) raise ValueError(msg) # Do not alter anything that implements the array interface (np.array, pd.Series) # but convert other iterables (e.g., Python lists) to numpy arrays. if not hasattr(data, '__array__'): data = np.asfarray(data) for var in self.independent_vars: var_data = kwargs[var] if (not hasattr(var_data, '__array__')) and (not np.isscalar(var_data)): kwargs[var] = np.asfarray(var_data) # Handle null/missing values. mask = None if self.missing not in (None, 'none'): mask = self._handle_missing(data) # This can raise. if mask is not None: data = data[mask] if weights is not None: weights = _align(weights, mask, data) # If independent_vars and data are alignable (pandas), align them, # and apply the mask from above if there is one. for var in self.independent_vars: if not np.isscalar(kwargs[var]): kwargs[var] = _align(kwargs[var], mask, data) if fit_kws is None: fit_kws = {} output = ModelResult(self, params, method=method, iter_cb=iter_cb, scale_covar=scale_covar, fcn_kws=kwargs, **fit_kws) output.fit(data=data, weights=weights) output.components = self.components return output def __add__(self, other): return CompositeModel(self, other, operator.add) def __sub__(self, other): return CompositeModel(self, other, operator.sub) def __mul__(self, other): return CompositeModel(self, other, operator.mul) def __div__(self, other): return CompositeModel(self, other, operator.truediv) def __truediv__(self, other): return CompositeModel(self, other, operator.truediv) class CompositeModel(Model): """Create a composite model -- a binary operator of two Models Parameters ---------- left_model: left-hand side model-- must be a Model() right_model: right-hand side model -- must be a Model() oper: callable binary operator (typically, operator.add, operator.mul, etc) independent_vars: list of strings or None (default) arguments to func that are independent variables param_names: list of strings or None (default) names of arguments to func that are to be made into parameters missing: None, 'none', 'drop', or 'raise' 'none' or None: Do not check for null or missing values (default) 'drop': Drop null or missing observations in data. if pandas is installed, pandas.isnull is used, otherwise numpy.isnan is used. 'raise': Raise a (more helpful) exception when data contains null or missing values. name: None or string name for the model. When `None` (default) the name is the same as the model function (`func`). """ _names_collide = ("\nTwo models have parameters named '{clash}'. " "Use distinct names.") _bad_arg = "CompositeModel: argument {arg} is not a Model" _bad_op = "CompositeModel: operator {op} is not callable" _known_ops = {operator.add: '+', operator.sub: '-', operator.mul: '*', operator.truediv: '/'} def __init__(self, left, right, op, **kws): if not isinstance(left, Model): raise ValueError(self._bad_arg.format(arg=left)) if not isinstance(right, Model): raise ValueError(self._bad_arg.format(arg=right)) if not callable(op): raise ValueError(self._bad_op.format(op=op)) self.left = left self.right = right self.op = op name_collisions = set(left.param_names) & set(right.param_names) if len(name_collisions) > 0: msg = '' for collision in name_collisions: msg += self._names_collide.format(clash=collision) raise NameError(msg) # we assume that all the sub-models have the same independent vars if 'independent_vars' not in kws: kws['independent_vars'] = self.left.independent_vars if 'missing' not in kws: kws['missing'] = self.left.missing def _tmp(self, *args, **kws): pass Model.__init__(self, _tmp, **kws) for side in (left, right): prefix = side.prefix for basename, hint in side.param_hints.items(): self.param_hints["%s%s" % (prefix, basename)] = hint def _parse_params(self): self._func_haskeywords = (self.left._func_haskeywords or self.right._func_haskeywords) self._func_allargs = (self.left._func_allargs + self.right._func_allargs) self.def_vals = deepcopy(self.right.def_vals) self.def_vals.update(self.left.def_vals) self.opts = deepcopy(self.right.opts) self.opts.update(self.left.opts) def _reprstring(self, long=False): return "(%s %s %s)" % (self.left._reprstring(long=long), self._known_ops.get(self.op, self.op), self.right._reprstring(long=long)) def eval(self, params=None, **kwargs): return self.op(self.left.eval(params=params, **kwargs), self.right.eval(params=params, **kwargs)) def eval_components(self, **kwargs): """return ordered dict of name, results for each component""" out = OrderedDict(self.left.eval_components(**kwargs)) out.update(self.right.eval_components(**kwargs)) return out @property def param_names(self): return self.left.param_names + self.right.param_names @property def components(self): """return components for composite model""" return self.left.components + self.right.components def _make_all_args(self, params=None, **kwargs): """generate **all** function args for all functions""" out = self.right._make_all_args(params=params, **kwargs) out.update(self.left._make_all_args(params=params, **kwargs)) return out class ModelResult(Minimizer): """Result from Model fit Attributes ----------- model instance of Model -- the model function params instance of Parameters -- the fit parameters data array of data values to compare to model weights array of weights used in fitting init_params copy of params, before being updated by fit() init_values array of parameter values, before being updated by fit() init_fit model evaluated with init_params. best_fit model evaluated with params after being updated by fit() Methods: -------- fit(data=None, params=None, weights=None, method=None, **kwargs) fit (or re-fit) model with params to data (with weights) using supplied method. The keyword arguments are sent to as keyword arguments to the model function. all inputs are optional, defaulting to the value used in the previous fit. This allows easily changing data or parameter settings, or both. eval(**kwargs) evaluate the current model, with the current parameter values, with values in kwargs sent to the model function. eval_components(**kwargs) evaluate the current model, with the current parameter values, with values in kwargs sent to the model function and returns a ordered dict with the model names as the key and the component results as the values. fit_report(modelpars=None, show_correl=True, min_correl=0.1) return a fit report. plot_fit(self, ax=None, datafmt='o', fitfmt='-', initfmt='--', numpoints=None, data_kws=None, fit_kws=None, init_kws=None, ax_kws=None) Plot the fit results using matplotlib. plot_residuals(self, ax=None, datafmt='o', data_kws=None, fit_kws=None, ax_kws=None) Plot the fit residuals using matplotlib. plot(self, datafmt='o', fitfmt='-', initfmt='--', numpoints=None, data_kws=None, fit_kws=None, init_kws=None, ax_res_kws=None, ax_fit_kws=None, fig_kws=None) Plot the fit results and residuals using matplotlib. """ def __init__(self, model, params, data=None, weights=None, method='leastsq', fcn_args=None, fcn_kws=None, iter_cb=None, scale_covar=True, **fit_kws): self.model = model self.data = data self.weights = weights self.method = method self.ci_out = None self.init_params = deepcopy(params) Minimizer.__init__(self, model._residual, params, fcn_args=fcn_args, fcn_kws=fcn_kws, iter_cb=iter_cb, scale_covar=scale_covar, **fit_kws) def fit(self, data=None, params=None, weights=None, method=None, **kwargs): """perform fit for a Model, given data and params""" if data is not None: self.data = data if params is not None: self.init_params = params if weights is not None: self.weights = weights if method is not None: self.method = method self.ci_out = None self.userargs = (self.data, self.weights) self.userkws.update(kwargs) self.init_fit = self.model.eval(params=self.params, **self.userkws) _ret = self.minimize(method=self.method) for attr in dir(_ret): if not attr.startswith('_') : try: setattr(self, attr, getattr(_ret, attr)) except AttributeError: pass self.init_values = self.model._make_all_args(self.init_params) self.best_values = self.model._make_all_args(_ret.params) self.best_fit = self.model.eval(params=_ret.params, **self.userkws) def eval(self, **kwargs): self.userkws.update(kwargs) return self.model.eval(params=self.params, **self.userkws) def eval_components(self, **kwargs): self.userkws.update(kwargs) return self.model.eval_components(params=self.params, **self.userkws) def conf_interval(self, **kwargs): """return explicitly calculated confidence intervals""" if self.ci_out is None: self.ci_out = conf_interval(self, self, **kwargs) return self.ci_out def ci_report(self, with_offset=True, ndigits=5, **kwargs): """return nicely formatted report about confidence intervals""" return ci_report(self.conf_interval(**kwargs), with_offset=with_offset, ndigits=ndigits) def fit_report(self, **kwargs): "return fit report" return '[[Model]]\n %s\n%s\n' % (self.model._reprstring(long=True), fit_report(self, **kwargs)) @_ensureMatplotlib def plot_fit(self, ax=None, datafmt='o', fitfmt='-', initfmt='--', yerr=None, numpoints=None, data_kws=None, fit_kws=None, init_kws=None, ax_kws=None): """Plot the fit results using matplotlib. The method will plot results of the fit using matplotlib, including: the data points, the initial fit curve and the fitted curve. If the fit model included weights, errorbars will also be plotted. Parameters ---------- ax : matplotlib.axes.Axes, optional The axes to plot on. The default in None, which means use the current pyplot axis or create one if there is none. datafmt : string, optional matplotlib format string for data points fitfmt : string, optional matplotlib format string for fitted curve initfmt : string, optional matplotlib format string for initial conditions for the fit yerr : ndarray, optional array of uncertainties for data array numpoints : int, optional If provided, the final and initial fit curves are evaluated not only at data points, but refined to contain `numpoints` points in total. data_kws : dictionary, optional keyword arguments passed on to the plot function for data points fit_kws : dictionary, optional keyword arguments passed on to the plot function for fitted curve init_kws : dictionary, optional keyword arguments passed on to the plot function for the initial conditions of the fit ax_kws : dictionary, optional keyword arguments for a new axis, if there is one being created Returns ------- matplotlib.axes.Axes Notes ---- For details about plot format strings and keyword arguments see documentation of matplotlib.axes.Axes.plot. If yerr is specified or if the fit model included weights, then matplotlib.axes.Axes.errorbar is used to plot the data. If yerr is not specified and the fit includes weights, yerr set to 1/self.weights If `ax` is None then matplotlib.pyplot.gca(**ax_kws) is called. See Also -------- ModelResult.plot_residuals : Plot the fit residuals using matplotlib. ModelResult.plot : Plot the fit results and residuals using matplotlib. """ if data_kws is None: data_kws = {} if fit_kws is None: fit_kws = {} if init_kws is None: init_kws = {} if ax_kws is None: ax_kws = {} if len(self.model.independent_vars) == 1: independent_var = self.model.independent_vars[0] else: print('Fit can only be plotted if the model function has one ' 'independent variable.') return False if not isinstance(ax, plt.Axes): ax = plt.gca(**ax_kws) x_array = self.userkws[independent_var] # make a dense array for x-axis if data is not dense if numpoints is not None and len(self.data) < numpoints: x_array_dense = np.linspace(min(x_array), max(x_array), numpoints) else: x_array_dense = x_array ax.plot(x_array_dense, self.model.eval(self.init_params, **{independent_var: x_array_dense}), initfmt, label='init', **init_kws) ax.plot(x_array_dense, self.model.eval(self.params, **{independent_var: x_array_dense}), fitfmt, label='best-fit', **fit_kws) if yerr is None and self.weights is not None: yerr = 1.0/self.weights if yerr is not None: ax.errorbar(x_array, self.data, yerr=yerr, fmt=datafmt, label='data', **data_kws) else: ax.plot(x_array, self.data, datafmt, label='data', **data_kws) ax.set_title(self.model.name) ax.set_xlabel(independent_var) ax.set_ylabel('y') ax.legend() return ax @_ensureMatplotlib def plot_residuals(self, ax=None, datafmt='o', yerr=None, data_kws=None, fit_kws=None, ax_kws=None): """Plot the fit residuals using matplotlib. The method will plot residuals of the fit using matplotlib, including: the data points and the fitted curve (as horizontal line). If the fit model included weights, errorbars will also be plotted. Parameters ---------- ax : matplotlib.axes.Axes, optional The axes to plot on. The default in None, which means use the current pyplot axis or create one if there is none. datafmt : string, optional matplotlib format string for data points yerr : ndarray, optional array of uncertainties for data array data_kws : dictionary, optional keyword arguments passed on to the plot function for data points fit_kws : dictionary, optional keyword arguments passed on to the plot function for fitted curve ax_kws : dictionary, optional keyword arguments for a new axis, if there is one being created Returns ------- matplotlib.axes.Axes Notes ---- For details about plot format strings and keyword arguments see documentation of matplotlib.axes.Axes.plot. If yerr is specified or if the fit model included weights, then matplotlib.axes.Axes.errorbar is used to plot the data. If yerr is not specified and the fit includes weights, yerr set to 1/self.weights If `ax` is None then matplotlib.pyplot.gca(**ax_kws) is called. See Also -------- ModelResult.plot_fit : Plot the fit results using matplotlib. ModelResult.plot : Plot the fit results and residuals using matplotlib. """ if data_kws is None: data_kws = {} if fit_kws is None: fit_kws = {} if fit_kws is None: fit_kws = {} if ax_kws is None: ax_kws = {} if len(self.model.independent_vars) == 1: independent_var = self.model.independent_vars[0] else: print('Fit can only be plotted if the model function has one ' 'independent variable.') return False if not isinstance(ax, plt.Axes): ax = plt.gca(**ax_kws) x_array = self.userkws[independent_var] ax.axhline(0, **fit_kws) if yerr is None and self.weights is not None: yerr = 1.0/self.weights if yerr is not None: ax.errorbar(x_array, self.eval() - self.data, yerr=yerr, fmt=datafmt, label='residuals', **data_kws) else: ax.plot(x_array, self.eval() - self.data, datafmt, label='residuals', **data_kws) ax.set_title(self.model.name) ax.set_ylabel('residuals') ax.legend() return ax @_ensureMatplotlib def plot(self, datafmt='o', fitfmt='-', initfmt='--', yerr=None, numpoints=None, fig=None, data_kws=None, fit_kws=None, init_kws=None, ax_res_kws=None, ax_fit_kws=None, fig_kws=None): """Plot the fit results and residuals using matplotlib. The method will produce a matplotlib figure with both results of the fit and the residuals plotted. If the fit model included weights, errorbars will also be plotted. Parameters ---------- datafmt : string, optional matplotlib format string for data points fitfmt : string, optional matplotlib format string for fitted curve initfmt : string, optional matplotlib format string for initial conditions for the fit yerr : ndarray, optional array of uncertainties for data array numpoints : int, optional If provided, the final and initial fit curves are evaluated not only at data points, but refined to contain `numpoints` points in total. fig : matplotlib.figure.Figure, optional The figure to plot on. The default in None, which means use the current pyplot figure or create one if there is none. data_kws : dictionary, optional keyword arguments passed on to the plot function for data points fit_kws : dictionary, optional keyword arguments passed on to the plot function for fitted curve init_kws : dictionary, optional keyword arguments passed on to the plot function for the initial conditions of the fit ax_res_kws : dictionary, optional keyword arguments for the axes for the residuals plot ax_fit_kws : dictionary, optional keyword arguments for the axes for the fit plot fig_kws : dictionary, optional keyword arguments for a new figure, if there is one being created Returns ------- matplotlib.figure.Figure Notes ---- The method combines ModelResult.plot_fit and ModelResult.plot_residuals. If yerr is specified or if the fit model included weights, then matplotlib.axes.Axes.errorbar is used to plot the data. If yerr is not specified and the fit includes weights, yerr set to 1/self.weights If `fig` is None then matplotlib.pyplot.figure(**fig_kws) is called. See Also -------- ModelResult.plot_fit : Plot the fit results using matplotlib. ModelResult.plot_residuals : Plot the fit residuals using matplotlib. """ if data_kws is None: data_kws = {} if fit_kws is None: fit_kws = {} if init_kws is None: init_kws = {} if ax_res_kws is None: ax_res_kws = {} if ax_fit_kws is None: ax_fit_kws = {} if fig_kws is None: fig_kws = {} if len(self.model.independent_vars) != 1: print('Fit can only be plotted if the model function has one ' 'independent variable.') return False if not isinstance(fig, plt.Figure): fig = plt.figure(**fig_kws) gs = plt.GridSpec(nrows=2, ncols=1, height_ratios=[1, 4]) ax_res = fig.add_subplot(gs[0], **ax_res_kws) ax_fit = fig.add_subplot(gs[1], sharex=ax_res, **ax_fit_kws) self.plot_fit(ax=ax_fit, datafmt=datafmt, fitfmt=fitfmt, yerr=yerr, initfmt=initfmt, numpoints=numpoints, data_kws=data_kws, fit_kws=fit_kws, init_kws=init_kws, ax_kws=ax_fit_kws) self.plot_residuals(ax=ax_res, datafmt=datafmt, yerr=yerr, data_kws=data_kws, fit_kws=fit_kws, ax_kws=ax_res_kws) return fig lmfit-0.9.2/lmfit/uncertainties/0000755000032700003100000000000012613717514020114 5ustar newvillegeocars00000000000000lmfit-0.9.2/lmfit/uncertainties/umath.py0000644000032700003100000003053312603520205021574 0ustar newvillegeocars00000000000000''' Mathematical operations that generalize many operations from the standard math module so that they also work on numbers with uncertainties. Examples: from umath import sin # Manipulation of numbers with uncertainties: x = uncertainties.ufloat((3, 0.1)) print sin(x) # prints 0.141120008...+/-0.098999... # The umath functions also work on regular Python floats: print sin(3) # prints 0.141120008... This is a Python float. Importing all the functions from this module into the global namespace is possible. This is encouraged when using a Python shell as a calculator. Example: import uncertainties from uncertainties.umath import * # Imports tan(), etc. x = uncertainties.ufloat((3, 0.1)) print tan(x) # tan() is the uncertainties.umath.tan function The numbers with uncertainties handled by this module are objects from the uncertainties module, from either the Variable or the AffineScalarFunc class. (c) 2009-2013 by Eric O. LEBIGOT (EOL) . Please send feature requests, bug reports, or feedback to this address. This software is released under a dual license. (1) The BSD license. (2) Any other license, as long as it is obtained from the original author.''' from __future__ import division # Many analytical derivatives depend on this # Standard modules import math import sys import itertools import functools # Local modules from __init__ import wrap, set_doc, __author__, to_affine_scalar, AffineScalarFunc ############################################################################### # We wrap the functions from the math module so that they keep track of # uncertainties by returning a AffineScalarFunc object. # Some functions from the math module cannot be adapted in a standard # way so to work with AffineScalarFunc objects (either as their result # or as their arguments): # (1) Some functions return a result of a type whose value and # variations (uncertainties) cannot be represented by AffineScalarFunc # (e.g., math.frexp, which returns a tuple). The exception raised # when not wrapping them with wrap() is more obvious than the # one obtained when wrapping them (in fact, the wrapped functions # attempts operations that are not supported, such as calculation a # subtraction on a result of type tuple). # (2) Some functions don't take continuous scalar arguments (which can # be varied during differentiation): math.fsum, math.factorial... # Such functions can either be: # - wrapped in a special way. # - excluded from standard wrapping by adding their name to # no_std_wrapping # Math functions that have a standard interface: they take # one or more float arguments, and return a scalar: many_scalars_to_scalar_funcs = [] # Some functions require a specific treatment and must therefore be # excluded from standard wrapping. Functions # no_std_wrapping = ['modf', 'frexp', 'ldexp', 'fsum', 'factorial'] # Functions with numerical derivatives: num_deriv_funcs = ['fmod', 'gamma', 'isinf', 'isnan', 'lgamma', 'trunc'] # Functions that do not belong in many_scalars_to_scalar_funcs, but # that have a version that handles uncertainties: non_std_wrapped_funcs = [] # Function that copies the relevant attributes from generalized # functions from the math module: wraps = functools.partial(functools.update_wrapper, assigned=('__doc__', '__name__')) ######################################## # Wrapping of math functions: # Fixed formulas for the derivatives of some functions from the math # module (some functions might not be present in all version of # Python). Singular points are not taken into account. The user # should never give "large" uncertainties: problems could only appear # if this assumption does not hold. # Functions not mentioned in _fixed_derivatives have their derivatives # calculated numerically. # Functions that have singularities (possibly at infinity) benefit # from analytical calculations (instead of the default numerical # calculation) because their derivatives generally change very fast. # Even slowly varying functions (e.g., abs()) yield more precise # results when differentiated analytically, because of the loss of # precision in numerical calculations. #def log_1arg_der(x): # """ # Derivative of log(x) (1-argument form). # """ # return 1/x def log_der0(*args): """ Derivative of math.log() with respect to its first argument. Works whether 1 or 2 arguments are given. """ if len(args) == 1: return 1/args[0] else: return 1/args[0]/math.log(args[1]) # 2-argument form # The following version goes about as fast: ## A 'try' is used for the most common case because it is fast when no ## exception is raised: #try: # return log_1arg_der(*args) # Argument number check #except TypeError: # return 1/args[0]/math.log(args[1]) # 2-argument form _erf_coef = 2/math.sqrt(math.pi) # Optimization for erf() fixed_derivatives = { # In alphabetical order, here: 'acos': [lambda x: -1/math.sqrt(1-x**2)], 'acosh': [lambda x: 1/math.sqrt(x**2-1)], 'asin': [lambda x: 1/math.sqrt(1-x**2)], 'asinh': [lambda x: 1/math.sqrt(1+x**2)], 'atan': [lambda x: 1/(1+x**2)], 'atan2': [lambda y, x: x/(x**2+y**2), # Correct for x == 0 lambda y, x: -y/(x**2+y**2)], # Correct for x == 0 'atanh': [lambda x: 1/(1-x**2)], 'ceil': [lambda x: 0], 'copysign': [lambda x, y: (1 if x >= 0 else -1) * math.copysign(1, y), lambda x, y: 0], 'cos': [lambda x: -math.sin(x)], 'cosh': [math.sinh], 'degrees': [lambda x: math.degrees(1)], 'erf': [lambda x: math.exp(-x**2)*_erf_coef], 'erfc': [lambda x: -math.exp(-x**2)*_erf_coef], 'exp': [math.exp], 'expm1': [math.exp], 'fabs': [lambda x: 1 if x >= 0 else -1], 'floor': [lambda x: 0], 'hypot': [lambda x, y: x/math.hypot(x, y), lambda x, y: y/math.hypot(x, y)], 'log': [log_der0, lambda x, y: -math.log(x, y)/y/math.log(y)], 'log10': [lambda x: 1/x/math.log(10)], 'log1p': [lambda x: 1/(1+x)], 'pow': [lambda x, y: y*math.pow(x, y-1), lambda x, y: math.log(x) * math.pow(x, y)], 'radians': [lambda x: math.radians(1)], 'sin': [math.cos], 'sinh': [math.cosh], 'sqrt': [lambda x: 0.5/math.sqrt(x)], 'tan': [lambda x: 1+math.tan(x)**2], 'tanh': [lambda x: 1-math.tanh(x)**2] } # Many built-in functions in the math module are wrapped with a # version which is uncertainty aware: this_module = sys.modules[__name__] # for (name, attr) in vars(math).items(): for name in dir(math): if name in fixed_derivatives: # Priority to functions in fixed_derivatives derivatives = fixed_derivatives[name] elif name in num_deriv_funcs: # Functions whose derivatives are calculated numerically by # this module fall here (isinf, fmod,...): derivatives = None # Means: numerical calculation required else: continue # 'name' not wrapped by this module (__doc__, e, etc.) func = getattr(math, name) setattr(this_module, name, wraps(wrap(func, derivatives), func)) many_scalars_to_scalar_funcs.append(name) ############################################################################### ######################################## # Special cases: some of the functions from no_std_wrapping: ########## # The math.factorial function is not converted to an uncertainty-aware # function, because it does not handle non-integer arguments: it does # not make sense to give it an argument with a numerical error # (whereas this would be relevant for the gamma function). ########## # fsum takes a single argument, which cannot be differentiated. # However, each of the arguments inside this single list can # be a variable. We handle this in a specific way: if sys.version_info[:2] >= (2, 6): # For drop-in compatibility with the math module: factorial = math.factorial non_std_wrapped_funcs.append('factorial') # We wrap math.fsum original_func = math.fsum # For optimization purposes # The function below exists so that temporary variables do not # pollute the module namespace: def wrapped_fsum(): """ Returns an uncertainty-aware version of math.fsum, which must be contained in _original_func. """ # The fsum function is flattened, in order to use the # wrap() wrapper: flat_fsum = lambda *args: original_func(args) flat_fsum_wrap = wrap( flat_fsum, itertools.repeat(lambda *args: 1)) return wraps(lambda arg_list: flat_fsum_wrap(*arg_list), original_func) fsum = wrapped_fsum() non_std_wrapped_funcs.append('fsum') @set_doc(math.modf.__doc__) def modf(x): """ Version of modf that works for numbers with uncertainty, and also for regular numbers. """ # The code below is inspired by wrap(). It is # simpler because only 1 argument is given, and there is no # delegation to other functions involved (as for __mul__, etc.). aff_func = to_affine_scalar(x) (frac_part, int_part) = math.modf(aff_func.nominal_value) if aff_func.derivatives: # The derivative of the fractional part is simply 1: the # derivatives of modf(x)[0] are the derivatives of x: return (AffineScalarFunc(frac_part, aff_func.derivatives), int_part) else: # This function was not called with an AffineScalarFunc # argument: there is no need to return numbers with uncertainties: return (frac_part, int_part) many_scalars_to_scalar_funcs.append('modf') @set_doc(math.ldexp.__doc__) def ldexp(x, y): # The code below is inspired by wrap(). It is # simpler because only 1 argument is given, and there is no # delegation to other functions involved (as for __mul__, etc.). # Another approach would be to add an additional argument to # wrap() so that some arguments are automatically # considered as constants. aff_func = to_affine_scalar(x) # y must be an integer, for math.ldexp if aff_func.derivatives: factor = 2**y return AffineScalarFunc( math.ldexp(aff_func.nominal_value, y), # Chain rule: dict((var, factor*deriv) for (var, deriv) in aff_func.derivatives.iteritems())) else: # This function was not called with an AffineScalarFunc # argument: there is no need to return numbers with uncertainties: # aff_func.nominal_value is not passed instead of x, because # we do not have to care about the type of the return value of # math.ldexp, this way (aff_func.nominal_value might be the # value of x coerced to a difference type [int->float, for # instance]): return math.ldexp(x, y) many_scalars_to_scalar_funcs.append('ldexp') @set_doc(math.frexp.__doc__) def frexp(x): """ Version of frexp that works for numbers with uncertainty, and also for regular numbers. """ # The code below is inspired by wrap(). It is # simpler because only 1 argument is given, and there is no # delegation to other functions involved (as for __mul__, etc.). aff_func = to_affine_scalar(x) if aff_func.derivatives: result = math.frexp(aff_func.nominal_value) # With frexp(x) = (m, e), dm/dx = 1/(2**e): factor = 1/(2**result[1]) return ( AffineScalarFunc( result[0], # Chain rule: dict((var, factor*deriv) for (var, deriv) in aff_func.derivatives.iteritems())), # The exponent is an integer and is supposed to be # continuous (small errors): result[1]) else: # This function was not called with an AffineScalarFunc # argument: there is no need to return numbers with uncertainties: return math.frexp(x) non_std_wrapped_funcs.append('frexp') ############################################################################### # Exported functions: __all__ = many_scalars_to_scalar_funcs + non_std_wrapped_funcs lmfit-0.9.2/lmfit/uncertainties/__init__.py0000644000032700003100000017553412603520205022230 0ustar newvillegeocars00000000000000#!! Whenever the documentation below is updated, setup.py should be # checked for consistency. ''' Calculations with full error propagation for quantities with uncertainties. Derivatives can also be calculated. Web user guide: http://packages.python.org/uncertainties/. Example of possible calculation: (0.2 +/- 0.01)**2 = 0.04 +/- 0.004. Correlations between expressions are correctly taken into account (for instance, with x = 0.2+/-0.01, 2*x-x-x is exactly zero, as is y-x-x with y = 2*x). Examples: import uncertainties from uncertainties import ufloat from uncertainties.umath import * # sin(), etc. # Mathematical operations: x = ufloat((0.20, 0.01)) # x = 0.20+/-0.01 x = ufloat("0.20+/-0.01") # Other representation x = ufloat("0.20(1)") # Other representation x = ufloat("0.20") # Implicit uncertainty of +/-1 on the last digit print x**2 # Square: prints "0.04+/-0.004" print sin(x**2) # Prints "0.0399...+/-0.00399..." print x.std_score(0.17) # Prints "-3.0": deviation of -3 sigmas # Access to the nominal value, and to the uncertainty: square = x**2 # Square print square # Prints "0.04+/-0.004" print square.nominal_value # Prints "0.04" print square.std_dev() # Prints "0.004..." print square.derivatives[x] # Partial derivative: 0.4 (= 2*0.20) # Correlations: u = ufloat((1, 0.05), "u variable") # Tag v = ufloat((10, 0.1), "v variable") sum_value = u+v u.set_std_dev(0.1) # Standard deviations can be updated on the fly print sum_value - u - v # Prints "0.0" (exact result) # List of all sources of error: print sum_value # Prints "11+/-0.1414..." for (var, error) in sum_value.error_components().items(): print "%s: %f" % (var.tag, error) # Individual error components # Covariance matrices: cov_matrix = uncertainties.covariance_matrix([u, v, sum_value]) print cov_matrix # 3x3 matrix # Correlated variables can be constructed from a covariance matrix, if # NumPy is available: (u2, v2, sum2) = uncertainties.correlated_values([1, 10, 11], cov_matrix) print u2 # Value and uncertainty of u: correctly recovered (1+/-0.1) print uncertainties.covariance_matrix([u2, v2, sum2]) # == cov_matrix - The main function provided by this module is ufloat, which creates numbers with uncertainties (Variable objects). Variable objects can be used as if they were regular Python numbers. The main attributes and methods of Variable objects are defined in the documentation of the Variable class. - Valid operations on numbers with uncertainties include basic mathematical functions (addition, etc.). Most operations from the standard math module (sin, etc.) can be applied on numbers with uncertainties by using their generalization from the uncertainties.umath module: from uncertainties.umath import sin print sin(ufloat("1+/-0.01")) # 0.841...+/-0.005... print sin(1) # umath.sin() also works on floats, exactly like math.sin() Logical operations (>, ==, etc.) are also supported. Basic operations on NumPy arrays or matrices of numbers with uncertainties can be performed: 2*numpy.array([ufloat((1, 0.01)), ufloat((2, 0.1))]) More complex operations on NumPy arrays can be performed through the dedicated uncertainties.unumpy sub-module (see its documentation). Calculations that are performed through non-Python code (Fortran, C, etc.) can handle numbers with uncertainties instead of floats through the provided wrap() wrapper: import uncertainties # wrapped_f is a version of f that can take arguments with # uncertainties, even if f only takes floats: wrapped_f = uncertainties.wrap(f) If some derivatives of the wrapped function f are known (analytically, or numerically), they can be given to wrap()--see the documentation for wrap(). - Utility functions are also provided: the covariance matrix between random variables can be calculated with covariance_matrix(), or used as input for the definition of correlated quantities (correlated_values() function--defined only if the NumPy module is available). - Mathematical expressions involving numbers with uncertainties generally return AffineScalarFunc objects, which also print as a value with uncertainty. Their most useful attributes and methods are described in the documentation for AffineScalarFunc. Note that Variable objects are also AffineScalarFunc objects. UFloat is an alias for AffineScalarFunc, provided as a convenience: testing whether a value carries an uncertainty handled by this module should be done with insinstance(my_value, UFloat). - Mathematically, numbers with uncertainties are, in this package, probability distributions. These probabilities are reduced to two numbers: a nominal value and an uncertainty. Thus, both variables (Variable objects) and the result of mathematical operations (AffineScalarFunc objects) contain these two values (respectively in their nominal_value attribute and through their std_dev() method). The uncertainty of a number with uncertainty is simply defined in this package as the standard deviation of the underlying probability distribution. The numbers with uncertainties manipulated by this package are assumed to have a probability distribution mostly contained around their nominal value, in an interval of about the size of their standard deviation. This should cover most practical cases. A good choice of nominal value for a number with uncertainty is thus the median of its probability distribution, the location of highest probability, or the average value. - When manipulating ensembles of numbers, some of which contain uncertainties, it can be useful to access the nominal value and uncertainty of all numbers in a uniform manner: x = ufloat("3+/-0.1") print nominal_value(x) # Prints 3 print std_dev(x) # Prints 0.1 print nominal_value(3) # Prints 3: nominal_value works on floats print std_dev(3) # Prints 0: std_dev works on floats - Probability distributions (random variables and calculation results) are printed as: nominal value +/- standard deviation but this does not imply any property on the nominal value (beyond the fact that the nominal value is normally inside the region of high probability density), or that the probability distribution of the result is symmetrical (this is rarely strictly the case). - Linear approximations of functions (around the nominal values) are used for the calculation of the standard deviation of mathematical expressions with this package. The calculated standard deviations and nominal values are thus meaningful approximations as long as the functions involved have precise linear expansions in the region where the probability distribution of their variables is the largest. It is therefore important that uncertainties be small. Mathematically, this means that the linear term of functions around the nominal values of their variables should be much larger than the remaining higher-order terms over the region of significant probability. For instance, sin(0+/-0.01) yields a meaningful standard deviation since it is quite linear over 0+/-0.01. However, cos(0+/-0.01) yields an approximate standard deviation of 0 (because the cosine is not well approximated by a line around 0), which might not be precise enough for all applications. - Comparison operations (>, ==, etc.) on numbers with uncertainties have a pragmatic semantics, in this package: numbers with uncertainties can be used wherever Python numbers are used, most of the time with a result identical to the one that would be obtained with their nominal value only. However, since the objects defined in this module represent probability distributions and not pure numbers, comparison operator are interpreted in a specific way. The result of a comparison operation ("==", ">", etc.) is defined so as to be essentially consistent with the requirement that uncertainties be small: the value of a comparison operation is True only if the operation yields True for all infinitesimal variations of its random variables, except, possibly, for an infinitely small number of cases. Example: "x = 3.14; y = 3.14" is such that x == y but x = ufloat((3.14, 0.01)) y = ufloat((3.14, 0.01)) is not such that x == y, since x and y are independent random variables that almost never give the same value. However, x == x still holds. The boolean value (bool(x), "if x...") of a number with uncertainty x is the result of x != 0. - The uncertainties package is for Python 2.5 and above. - This package contains tests. They can be run either manually or automatically with the nose unit testing framework (nosetests). (c) 2009-2013 by Eric O. LEBIGOT (EOL) . Please send feature requests, bug reports, or feedback to this address. Please support future development by donating $5 or more through PayPal! This software is released under a dual license. (1) The BSD license. (2) Any other license, as long as it is obtained from the original author.''' # The idea behind this module is to replace the result of mathematical # operations by a local approximation of the defining function. For # example, sin(0.2+/-0.01) becomes the affine function # (AffineScalarFunc object) whose nominal value is sin(0.2) and # whose variations are given by sin(0.2+delta) = 0.98...*delta. # Uncertainties can then be calculated by using this local linear # approximation of the original function. from __future__ import division # Many analytical derivatives depend on this import re import math from math import sqrt, log # Optimization: no attribute look-up import copy import warnings # Numerical version: __version_info__ = (1, 9) __version__ = '.'.join(map(str, __version_info__)) __author__ = 'Eric O. LEBIGOT (EOL) ' # Attributes that are always exported (some other attributes are # exported only if the NumPy module is available...): __all__ = [ # All sub-modules and packages are not imported by default, # in particular because NumPy might be unavailable. 'ufloat', # Main function: returns a number with uncertainty # Uniform access to nominal values and standard deviations: 'nominal_value', 'std_dev', # Utility functions (more are exported if NumPy is present): 'covariance_matrix', # Class for testing whether an object is a number with # uncertainty. Not usually created by users (except through the # Variable subclass), but possibly manipulated by external code # ['derivatives()' method, etc.]. 'UFloat', # Wrapper for allowing non-pure-Python function to handle # quantities with uncertainties: 'wrap', # The documentation for wrap() indicates that numerical # derivatives are calculated through partial_derivative(). The # user might also want to change the size of the numerical # differentiation step. 'partial_derivative' ] ############################################################################### def set_doc(doc_string): """ Decorator function that sets the docstring to the given text. It is useful for functions whose docstring is calculated (including string substitutions). """ def set_doc_string(func): func.__doc__ = doc_string return func return set_doc_string # Some types known to not depend on Variable objects are put in # CONSTANT_TYPES. The most common types can be put in front, as this # may slightly improve the execution speed. CONSTANT_TYPES = (float, int, complex) # , long) ############################################################################### # Utility for issuing deprecation warnings def deprecation(message): ''' Warns the user with the given message, by issuing a DeprecationWarning. ''' warnings.warn(message, DeprecationWarning, stacklevel=2) ############################################################################### ## Definitions that depend on the availability of NumPy: try: import numpy except ImportError: pass else: # NumPy numbers do not depend on Variable objects: CONSTANT_TYPES += (numpy.number,) # Entering variables as a block of correlated values. Only available # if NumPy is installed. #! It would be possible to dispense with NumPy, but a routine should be # written for obtaining the eigenvectors of a symmetric matrix. See # for instance Numerical Recipes: (1) reduction to tri-diagonal # [Givens or Householder]; (2) QR / QL decomposition. def correlated_values(nom_values, covariance_mat, tags=None): """ Returns numbers with uncertainties (AffineScalarFunc objects) that correctly reproduce the given covariance matrix, and have the given (float) values as their nominal value. The correlated_values_norm() function returns the same result, but takes a correlation matrix instead of a covariance matrix. The list of values and the covariance matrix must have the same length, and the matrix must be a square (symmetric) one. The numbers with uncertainties returned depend on newly created, independent variables (Variable objects). If 'tags' is not None, it must list the tag of each new independent variable. nom_values -- sequence with the nominal (real) values of the numbers with uncertainties to be returned. covariance_mat -- full covariance matrix of the returned numbers with uncertainties (not the statistical correlation matrix, i.e., not the normalized covariance matrix). For example, the first element of this matrix is the variance of the first returned number with uncertainty. """ # If no tags were given, we prepare tags for the newly created # variables: if tags is None: tags = (None,) * len(nom_values) # The covariance matrix is diagonalized in order to define # the independent variables that model the given values: (variances, transform) = numpy.linalg.eigh(covariance_mat) # Numerical errors might make some variances negative: we set # them to zero: variances[variances < 0] = 0. # Creation of new, independent variables: # We use the fact that the eigenvectors in 'transform' are # special: 'transform' is unitary: its inverse is its transpose: variables = tuple( # The variables represent "pure" uncertainties: Variable(0, sqrt(variance), tag) for (variance, tag) in zip(variances, tags)) # Representation of the initial correlated values: values_funcs = tuple( AffineScalarFunc(value, dict(zip(variables, coords))) for (coords, value) in zip(transform, nom_values)) return values_funcs __all__.append('correlated_values') def correlated_values_norm(values_with_std_dev, correlation_mat, tags=None): ''' Returns correlated values like correlated_values(), but takes instead as input: - nominal (float) values along with their standard deviation, and - a correlation matrix (i.e. a normalized covariance matrix normalized with individual standard deviations). values_with_std_dev -- sequence of (nominal value, standard deviation) pairs. The returned, correlated values have these nominal values and standard deviations. correlation_mat -- correlation matrix (i.e. the normalized covariance matrix, a matrix with ones on its diagonal). ''' (nominal_values, std_devs) = numpy.transpose(values_with_std_dev) return correlated_values( nominal_values, correlation_mat*std_devs*std_devs[numpy.newaxis].T, tags) __all__.append('correlated_values_norm') ############################################################################### # Mathematical operations with local approximations (affine scalar # functions) class NotUpcast(Exception): 'Raised when an object cannot be converted to a number with uncertainty' def to_affine_scalar(x): """ Transforms x into a constant affine scalar function (AffineScalarFunc), unless it is already an AffineScalarFunc (in which case x is returned unchanged). Raises an exception unless 'x' belongs to some specific classes of objects that are known not to depend on AffineScalarFunc objects (which then cannot be considered as constants). """ if isinstance(x, AffineScalarFunc): return x #! In Python 2.6+, numbers.Number could be used instead, here: if isinstance(x, CONSTANT_TYPES): # No variable => no derivative to define: return AffineScalarFunc(x, {}) # Case of lists, etc. raise NotUpcast("%s cannot be converted to a number with" " uncertainty" % type(x)) def partial_derivative(f, param_num): """ Returns a function that numerically calculates the partial derivative of function f with respect to its argument number param_num. The step parameter represents the shift of the parameter used in the numerical approximation. """ def partial_derivative_of_f(*args, **kws): """ Partial derivative, calculated with the (-epsilon, +epsilon) method, which is more precise than the (0, +epsilon) method. """ # f_nominal_value = f(*args) param_kw = None if '__param__kw__' in kws: param_kw = kws.pop('__param__kw__') shifted_args = list(args) # Copy, and conversion to a mutable shifted_kws = {} for k, v in kws.items(): shifted_kws[k] = v step = 1.e-8 if param_kw in shifted_kws: step = step*abs(shifted_kws[param_kw]) elif param_num < len(shifted_args): # The step is relative to the parameter being varied, so that # shsifting it does not suffer from finite precision: step = step*abs(shifted_args[param_num]) if param_kw in shifted_kws: shifted_kws[param_kw] += step elif param_num < len(shifted_args): shifted_args[param_num] += step shifted_f_plus = f(*shifted_args, **shifted_kws) if param_kw in shifted_kws: shifted_kws[param_kw] -= 2*step elif param_num < len(shifted_args): shifted_args[param_num] -= 2*step shifted_f_minus = f(*shifted_args, **shifted_kws) return (shifted_f_plus - shifted_f_minus)/2/step return partial_derivative_of_f class NumericalDerivatives(object): """ Convenient access to the partial derivatives of a function, calculated numerically. """ # This is not a list because the number of arguments of the # function is not known in advance, in general. def __init__(self, function): """ 'function' is the function whose derivatives can be computed. """ self._function = function def __getitem__(self, n): """ Returns the n-th numerical derivative of the function. """ return partial_derivative(self._function, n) def wrap(f, derivatives_iter=None): """ Wraps a function f into a function that also accepts numbers with uncertainties (UFloat objects) and returns a number with uncertainties. Doing so may be necessary when function f cannot be expressed analytically (with uncertainties-compatible operators and functions like +, *, umath.sin(), etc.). f must return a scalar (not a list, etc.). In the wrapped function, the standard Python scalar arguments of f (float, int, etc.) can be replaced by numbers with uncertainties. The result will contain the appropriate uncertainty. If no argument to the wrapped function has an uncertainty, f simply returns its usual, scalar result. If supplied, derivatives_iter can be an iterable that generally contains functions; each successive function is the partial derivative of f with respect to the corresponding variable (one function for each argument of f, which takes as many arguments as f). If instead of a function, an element of derivatives_iter contains None, then it is automatically replaced by the relevant numerical derivative; this can be used for non-scalar arguments of f (like string arguments). If derivatives_iter is None, or if derivatives_iter contains a fixed (and finite) number of elements, then any missing derivative is calculated numerically. An infinite number of derivatives can be specified by having derivatives_iter be an infinite iterator; this can for instance be used for specifying the derivatives of functions with a undefined number of argument (like sum(), whose partial derivatives all return 1). Example (for illustration purposes only, as uncertainties.umath.sin() runs faster than the examples that follow): wrap(math.sin) is a sine function that can be applied to numbers with uncertainties. Its derivative will be calculated numerically. wrap(math.sin, [None]) would have produced the same result. wrap(math.sin, [math.cos]) is the same function, but with an analytically defined derivative. """ if derivatives_iter is None: derivatives_iter = NumericalDerivatives(f) else: # Derivatives that are not defined are calculated numerically, # if there is a finite number of them (the function lambda # *args: fsum(args) has a non-defined number of arguments, as # it just performs a sum): try: # Is the number of derivatives fixed? len(derivatives_iter) except TypeError: pass else: derivatives_iter = [ partial_derivative(f, k) if derivative is None else derivative for (k, derivative) in enumerate(derivatives_iter)] #! Setting the doc string after "def f_with...()" does not # seem to work. We define it explicitly: @set_doc("""\ Version of %s(...) that returns an affine approximation (AffineScalarFunc object), if its result depends on variables (Variable objects). Otherwise, returns a simple constant (when applied to constant arguments). Warning: arguments of the function that are not AffineScalarFunc objects must not depend on uncertainties.Variable objects in any way. Otherwise, the dependence of the result in uncertainties.Variable objects will be incorrect. Original documentation: %s""" % (f.__name__, f.__doc__)) def f_with_affine_output(*args, **kwargs): # Can this function perform the calculation of an # AffineScalarFunc (or maybe float) result? try: old_funcs = map(to_affine_scalar, args) aff_funcs = [to_affine_scalar(a) for a in args] aff_kws = kwargs aff_varkws = [] for key, val in kwargs.items(): if isinstance(val, Variable): aff_kws[key] = to_affine_scalar(val) aff_varkws.append(key) except NotUpcast: # This function does not know how to itself perform # calculations with non-float-like arguments (as they # might for instance be objects whose value really changes # if some Variable objects had different values): # Is it clear that we can't delegate the calculation? if any(isinstance(arg, AffineScalarFunc) for arg in args): # This situation arises for instance when calculating # AffineScalarFunc(...)*numpy.array(...). In this # case, we must let NumPy handle the multiplication # (which is then performed element by element): return NotImplemented else: # If none of the arguments is an AffineScalarFunc, we # can delegate the calculation to the original # function. This can be useful when it is called with # only one argument (as in # numpy.log10(numpy.ndarray(...)): return f(*args, **kwargs) ######################################## # Nominal value of the constructed AffineScalarFunc: args_values = [e.nominal_value for e in aff_funcs] kw_values = {} for key, val in aff_kws.items(): kw_values[key] = val if key in aff_varkws: kw_values[key] = val.nominal_value f_nominal_value = f(*args_values, **kw_values) ######################################## # List of involved variables (Variable objects): variables = set() for expr in aff_funcs: variables |= set(expr.derivatives) for vname in aff_varkws: variables |= set(aff_kws[vname].derivatives) ## It is sometimes useful to only return a regular constant: # (1) Optimization / convenience behavior: when 'f' is called # on purely constant values (e.g., sin(2)), there is no need # for returning a more complex AffineScalarFunc object. # (2) Functions that do not return a "float-like" value might # not have a relevant representation as an AffineScalarFunc. # This includes boolean functions, since their derivatives are # either 0 or are undefined: they are better represented as # Python constants than as constant AffineScalarFunc functions. if not variables or isinstance(f_nominal_value, bool): return f_nominal_value # The result of 'f' does depend on 'variables'... ######################################## # Calculation of the derivatives with respect to the arguments # of f (aff_funcs): # The chain rule is applied. This is because, in the case of # numerical derivatives, it allows for a better-controlled # numerical stability than numerically calculating the partial # derivatives through '[f(x + dx, y + dy, ...) - # f(x,y,...)]/da' where dx, dy,... are calculated by varying # 'a'. In fact, it is numerically better to control how big # (dx, dy,...) are: 'f' is a simple mathematical function and # it is possible to know how precise the df/dx are (which is # not possible with the numerical df/da calculation above). # We use numerical derivatives, if we don't already have a # list of derivatives: #! Note that this test could be avoided by requiring the # caller to always provide derivatives. When changing the # functions of the math module, this would force this module # to know about all the math functions. Another possibility # would be to force derivatives_iter to contain, say, the # first 3 derivatives of f. But any of these two ideas has a # chance to break, one day... (if new functions are added to # the math module, or if some function has more than 3 # arguments). derivatives_wrt_args = [] for (arg, derivative) in zip(aff_funcs, derivatives_iter): derivatives_wrt_args.append(derivative(*args_values, **aff_kws) if arg.derivatives else 0) kws_values = [] for vname in aff_varkws: kws_values.append( aff_kws[vname].nominal_value) for (vname, derivative) in zip(aff_varkws, derivatives_iter): derivatives_wrt_args.append(derivative(__param__kw__=vname, **kw_values) if aff_kws[vname].derivatives else 0) ######################################## # Calculation of the derivative of f with respect to all the # variables (Variable) involved. # Initial value (is updated below): derivatives_wrt_vars = dict((var, 0.) for var in variables) # The chain rule is used (we already have # derivatives_wrt_args): for (func, f_derivative) in zip(aff_funcs, derivatives_wrt_args): for (var, func_derivative) in func.derivatives.items(): derivatives_wrt_vars[var] += f_derivative * func_derivative for (vname, f_derivative) in zip(aff_varkws, derivatives_wrt_args): func = aff_kws[vname] for (var, func_derivative) in func.derivatives.items(): derivatives_wrt_vars[var] += f_derivative * func_derivative # The function now returns an AffineScalarFunc object: return AffineScalarFunc(f_nominal_value, derivatives_wrt_vars) # It is easier to work with f_with_affine_output, which represents # a wrapped version of 'f', when it bears the same name as 'f': f_with_affine_output.__name__ = f.__name__ return f_with_affine_output def _force_aff_func_args(func): """ Takes an operator op(x, y) and wraps it. The constructed operator returns func(x, to_affine_scalar(y)) if y can be upcast with to_affine_scalar(); otherwise, it returns NotImplemented. Thus, func() is only called on two AffineScalarFunc objects, if its first argument is an AffineScalarFunc. """ def op_on_upcast_args(x, y): """ Returns %s(self, to_affine_scalar(y)) if y can be upcast through to_affine_scalar. Otherwise returns NotImplemented. """ % func.__name__ try: y_with_uncert = to_affine_scalar(y) except NotUpcast: # This module does not know how to handle the comparison: # (example: y is a NumPy array, in which case the NumPy # array will decide that func() should be applied # element-wise between x and all the elements of y): return NotImplemented else: return func(x, y_with_uncert) return op_on_upcast_args ######################################## # Definition of boolean operators, that assume that self and # y_with_uncert are AffineScalarFunc. # The fact that uncertainties must be smalled is used, here: the # comparison functions are supposed to be constant for most values of # the random variables. # Even though uncertainties are supposed to be small, comparisons # between 3+/-0.1 and 3.0 are handled (even though x == 3.0 is not a # constant function in the 3+/-0.1 interval). The comparison between # x and x is handled too, when x has an uncertainty. In fact, as # explained in the main documentation, it is possible to give a useful # meaning to the comparison operators, in these cases. def _eq_on_aff_funcs(self, y_with_uncert): """ __eq__ operator, assuming that both self and y_with_uncert are AffineScalarFunc objects. """ difference = self - y_with_uncert # Only an exact zero difference means that self and y are # equal numerically: return not(difference._nominal_value or difference.std_dev()) def _ne_on_aff_funcs(self, y_with_uncert): """ __ne__ operator, assuming that both self and y_with_uncert are AffineScalarFunc objects. """ return not _eq_on_aff_funcs(self, y_with_uncert) def _gt_on_aff_funcs(self, y_with_uncert): """ __gt__ operator, assuming that both self and y_with_uncert are AffineScalarFunc objects. """ return self._nominal_value > y_with_uncert._nominal_value def _ge_on_aff_funcs(self, y_with_uncert): """ __ge__ operator, assuming that both self and y_with_uncert are AffineScalarFunc objects. """ return (_gt_on_aff_funcs(self, y_with_uncert) or _eq_on_aff_funcs(self, y_with_uncert)) def _lt_on_aff_funcs(self, y_with_uncert): """ __lt__ operator, assuming that both self and y_with_uncert are AffineScalarFunc objects. """ return self._nominal_value < y_with_uncert._nominal_value def _le_on_aff_funcs(self, y_with_uncert): """ __le__ operator, assuming that both self and y_with_uncert are AffineScalarFunc objects. """ return (_lt_on_aff_funcs(self, y_with_uncert) or _eq_on_aff_funcs(self, y_with_uncert)) ######################################## class AffineScalarFunc(object): """ Affine functions that support basic mathematical operations (addition, etc.). Such functions can for instance be used for representing the local (linear) behavior of any function. This class is mostly meant to be used internally. This class can also be used to represent constants. The variables of affine scalar functions are Variable objects. AffineScalarFunc objects include facilities for calculating the 'error' on the function, from the uncertainties on its variables. Main attributes and methods: - nominal_value, std_dev(): value at the origin / nominal value, and standard deviation. - error_components(): error_components()[x] is the error due to Variable x. - derivatives: derivatives[x] is the (value of the) derivative with respect to Variable x. This attribute is a dictionary whose keys are the Variable objects on which the function depends. All the Variable objects on which the function depends are in 'derivatives'. - std_score(x): position of number x with respect to the nominal value, in units of the standard deviation. """ # To save memory in large arrays: __slots__ = ('_nominal_value', 'derivatives') #! The code could be modify in order to accommodate for non-float # nominal values. This could for instance be done through # the operator module: instead of delegating operations to # float.__*__ operations, they could be delegated to # operator.__*__ functions (while taking care of properly handling # reverse operations: __radd__, etc.). def __init__(self, nominal_value, derivatives): """ nominal_value -- value of the function at the origin. nominal_value must not depend in any way of the Variable objects in 'derivatives' (the value at the origin of the function being defined is a constant). derivatives -- maps each Variable object on which the function being defined depends to the value of the derivative with respect to that variable, taken at the nominal value of all variables. Warning: the above constraint is not checked, and the user is responsible for complying with it. """ # Defines the value at the origin: # Only float-like values are handled. One reason is that it # does not make sense for a scalar function to be affine to # not yield float values. Another reason is that it would not # make sense to have a complex nominal value, here (it would # not be handled correctly at all): converting to float should # be possible. self._nominal_value = float(nominal_value) self.derivatives = derivatives # The following prevents the 'nominal_value' attribute from being # modified by the user: @property def nominal_value(self): "Nominal value of the random number." return self._nominal_value ############################################################ ### Operators: operators applied to AffineScalarFunc and/or ### float-like objects only are supported. This is why methods ### from float are used for implementing these operators. # Operators with no reflection: ######################################## # __nonzero__() is supposed to return a boolean value (it is used # by bool()). It is for instance used for converting the result # of comparison operators to a boolean, in sorted(). If we want # to be able to sort AffineScalarFunc objects, __nonzero__ cannot # return a AffineScalarFunc object. Since boolean results (such # as the result of bool()) don't have a very meaningful # uncertainty unless it is zero, this behavior is fine. def __nonzero__(self): """ Equivalent to self != 0. """ #! This might not be relevant for AffineScalarFunc objects # that contain values in a linear space which does not convert # the float 0 into the null vector (see the __eq__ function: # __nonzero__ works fine if subtracting the 0 float from a # vector of the linear space works as if 0 were the null # vector of that space): return self != 0. # Uses the AffineScalarFunc.__ne__ function ######################################## ## Logical operators: warning: the resulting value cannot always ## be differentiated. # The boolean operations are not differentiable everywhere, but # almost... # (1) I can rely on the assumption that the user only has "small" # errors on variables, as this is used in the calculation of the # standard deviation (which performs linear approximations): # (2) However, this assumption is not relevant for some # operations, and does not have to hold, in some cases. This # comes from the fact that logical operations (e.g. __eq__(x,y)) # are not differentiable for many usual cases. For instance, it # is desirable to have x == x for x = n+/-e, whatever the size of e. # Furthermore, n+/-e != n+/-e', if e != e', whatever the size of e or # e'. # (3) The result of logical operators does not have to be a # function with derivatives, as these derivatives are either 0 or # don't exist (i.e., the user should probably not rely on # derivatives for his code). # __eq__ is used in "if data in [None, ()]", for instance. It is # therefore important to be able to handle this case too, which is # taken care of when _force_aff_func_args(_eq_on_aff_funcs) # returns NotImplemented. __eq__ = _force_aff_func_args(_eq_on_aff_funcs) __ne__ = _force_aff_func_args(_ne_on_aff_funcs) __gt__ = _force_aff_func_args(_gt_on_aff_funcs) # __ge__ is not the opposite of __lt__ because these operators do # not always yield a boolean (for instance, 0 <= numpy.arange(10) # yields an array). __ge__ = _force_aff_func_args(_ge_on_aff_funcs) __lt__ = _force_aff_func_args(_lt_on_aff_funcs) __le__ = _force_aff_func_args(_le_on_aff_funcs) ######################################## # Uncertainties handling: def error_components(self): """ Individual components of the standard deviation of the affine function (in absolute value), returned as a dictionary with Variable objects as keys. This method assumes that the derivatives contained in the object take scalar values (and are not a tuple, like what math.frexp() returns, for instance). """ # Calculation of the variance: error_components = {} for (variable, derivative) in self.derivatives.items(): # Individual standard error due to variable: error_components[variable] = abs(derivative*variable._std_dev) return error_components def std_dev(self): """ Standard deviation of the affine function. This method assumes that the function returns scalar results. This returned standard deviation depends on the current standard deviations [std_dev()] of the variables (Variable objects) involved. """ #! It would be possible to not allow the user to update the #std dev of Variable objects, in which case AffineScalarFunc #objects could have a pre-calculated or, better, cached #std_dev value (in fact, many intermediate AffineScalarFunc do #not need to have their std_dev calculated: only the final #AffineScalarFunc returned to the user does). return sqrt(sum( delta**2 for delta in self.error_components().values())) def _general_representation(self, to_string): """ Uses the to_string() conversion function on both the nominal value and the standard deviation, and returns a string that describes them. to_string() is typically repr() or str(). """ (nominal_value, std_dev) = (self._nominal_value, self.std_dev()) # String representation: # Not putting spaces around "+/-" helps with arrays of # Variable, as each value with an uncertainty is a # block of signs (otherwise, the standard deviation can be # mistaken for another element of the array). return ("%s+/-%s" % (to_string(nominal_value), to_string(std_dev)) if std_dev else to_string(nominal_value)) def __repr__(self): return self._general_representation(repr) def __str__(self): return self._general_representation(str) def std_score(self, value): """ Returns 'value' - nominal value, in units of the standard deviation. Raises a ValueError exception if the standard deviation is zero. """ try: # The ._nominal_value is a float: there is no integer division, # here: return (value - self._nominal_value) / self.std_dev() except ZeroDivisionError: raise ValueError("The standard deviation is zero:" " undefined result.") def __deepcopy__(self, memo): """ Hook for the standard copy module. The returned AffineScalarFunc is a completely fresh copy, which is fully independent of any variable defined so far. New variables are specially created for the returned AffineScalarFunc object. """ return AffineScalarFunc( self._nominal_value, dict((copy.deepcopy(var), deriv) for (var, deriv) in self.derivatives.items())) def __getstate__(self): """ Hook for the pickle module. """ obj_slot_values = dict((k, getattr(self, k)) for k in # self.__slots__ would not work when # self is an instance of a subclass: AffineScalarFunc.__slots__) return obj_slot_values def __setstate__(self, data_dict): """ Hook for the pickle module. """ for (name, value) in data_dict.items(): setattr(self, name, value) # Nicer name, for users: isinstance(ufloat(...), UFloat) is True: UFloat = AffineScalarFunc def get_ops_with_reflection(): """ Returns operators with a reflection, along with their derivatives (for float operands). """ # Operators with a reflection: # We do not include divmod(). This operator could be included, by # allowing its result (a tuple) to be differentiated, in # derivative_value(). However, a similar result can be achieved # by the user by calculating separately the division and the # result. # {operator(x, y): (derivative wrt x, derivative wrt y)}: # Note that unknown partial derivatives can be numerically # calculated by expressing them as something like # "partial_derivative(float.__...__, 1)(x, y)": # String expressions are used, so that reversed operators are easy # to code, and execute relatively efficiently: derivatives_list = { 'add': ("1.", "1."), # 'div' is the '/' operator when __future__.division is not in # effect. Since '/' is applied to # AffineScalarFunc._nominal_value numbers, it is applied on # floats, and is therefore the "usual" mathematical division. 'div': ("1/y", "-x/y**2"), 'floordiv': ("0.", "0."), # Non exact: there is a discontinuities # The derivative wrt the 2nd arguments is something like (..., x//y), # but it is calculated numerically, for convenience: 'mod': ("1.", "partial_derivative(float.__mod__, 1)(x, y)"), 'mul': ("y", "x"), 'pow': ("y*x**(y-1)", "log(x)*x**y"), 'sub': ("1.", "-1."), 'truediv': ("1/y", "-x/y**2") } # Conversion to Python functions: ops_with_reflection = {} for (op, derivatives) in derivatives_list.items(): ops_with_reflection[op] = [ eval("lambda x, y: %s" % expr) for expr in derivatives ] ops_with_reflection["r"+op] = [ eval("lambda y, x: %s" % expr) for expr in reversed(derivatives)] return ops_with_reflection # Operators that have a reflection, along with their derivatives: _ops_with_reflection = get_ops_with_reflection() # Some effectively modified operators (for the automated tests): _modified_operators = [] _modified_ops_with_reflection = [] def add_operators_to_AffineScalarFunc(): """ Adds many operators (__add__, etc.) to the AffineScalarFunc class. """ ######################################## #! Derivatives are set to return floats. For one thing, # uncertainties generally involve floats, as they are based on # small variations of the parameters. It is also better to # protect the user from unexpected integer result that behave # badly with the division. ## Operators that return a numerical value: # Single-argument operators that should be adapted from floats to # AffineScalarFunc objects, associated to their derivative: simple_numerical_operators_derivatives = { 'abs': lambda x: 1. if x>=0 else -1., 'neg': lambda x: -1., 'pos': lambda x: 1., 'trunc': lambda x: 0. } for (op, derivative) in ( simple_numerical_operators_derivatives.items()): attribute_name = "__%s__" % op # float objects don't exactly have the same attributes between # different versions of Python (for instance, __trunc__ was # introduced with Python 2.6): try: setattr(AffineScalarFunc, attribute_name, wrap(getattr(float, attribute_name), [derivative])) except AttributeError: pass else: _modified_operators.append(op) ######################################## # Reversed versions (useful for float*AffineScalarFunc, for instance): for (op, derivatives) in _ops_with_reflection.items(): attribute_name = '__%s__' % op # float objects don't exactly have the same attributes between # different versions of Python (for instance, __div__ and # __rdiv__ were removed, in Python 3): try: setattr(AffineScalarFunc, attribute_name, wrap(getattr(float, attribute_name), derivatives)) except AttributeError: pass else: _modified_ops_with_reflection.append(op) ######################################## # Conversions to pure numbers are meaningless. Note that the # behavior of float(1j) is similar. for coercion_type in ('complex', 'int', 'long', 'float'): def raise_error(self): raise TypeError("can't convert an affine function (%s)" ' to %s; use x.nominal_value' # In case AffineScalarFunc is sub-classed: % (self.__class__, coercion_type)) setattr(AffineScalarFunc, '__%s__' % coercion_type, raise_error) add_operators_to_AffineScalarFunc() # Actual addition of class attributes class Variable(AffineScalarFunc): """ Representation of a float-like scalar random variable, along with its uncertainty. Objects are meant to represent variables that are independent from each other (correlations are handled through the AffineScalarFunc class). """ # To save memory in large arrays: __slots__ = ('_std_dev', 'tag') def __init__(self, value, std_dev, tag=None): """ The nominal value and the standard deviation of the variable are set. These values must be scalars. 'tag' is a tag that the user can associate to the variable. This is useful for tracing variables. The meaning of the nominal value is described in the main module documentation. """ #! The value, std_dev, and tag are assumed by __copy__() not to # be copied. Either this should be guaranteed here, or __copy__ # should be updated. # Only float-like values are handled. One reason is that the # division operator on integers would not produce a # differentiable functions: for instance, Variable(3, 0.1)/2 # has a nominal value of 3/2 = 1, but a "shifted" value # of 3.1/2 = 1.55. value = float(value) # If the variable changes by dx, then the value of the affine # function that gives its value changes by 1*dx: # ! Memory cycles are created. However, they are garbage # collected, if possible. Using a weakref.WeakKeyDictionary # takes much more memory. Thus, this implementation chooses # more cycles and a smaller memory footprint instead of no # cycles and a larger memory footprint. # ! Using AffineScalarFunc instead of super() results only in # a 3 % speed loss (Python 2.6, Mac OS X): super(Variable, self).__init__(value, {self: 1.}) # We force the error to be float-like. Since it is considered # as a Gaussian standard deviation, it is semantically # positive (even though there would be no problem defining it # as a sigma, where sigma can be negative and still define a # Gaussian): assert std_dev >= 0, "the error must be a positive number" # Since AffineScalarFunc.std_dev is a property, we cannot do # "self.std_dev = ...": self._std_dev = std_dev self.tag = tag # Standard deviations can be modified (this is a feature). # AffineScalarFunc objects that depend on the Variable have their # std_dev() automatically modified (recalculated with the new # std_dev of their Variables): def set_std_dev(self, value): """ Updates the standard deviation of the variable to a new value. """ # A zero variance is accepted. Thus, it is possible to # conveniently use infinitely precise variables, for instance # to study special cases. self._std_dev = value # The following method is overridden so that we can represent the tag: def _general_representation(self, to_string): """ Uses the to_string() conversion function on both the nominal value and standard deviation and returns a string that describes the number. to_string() is typically repr() or str(). """ num_repr = super(Variable, self)._general_representation(to_string) # Optional tag: only full representations (to_string == repr) # contain the tag, as the tag is required in order to recreate # the variable. Outputting the tag for regular string ("print # x") would be too heavy and produce an unusual representation # of a number with uncertainty. return (num_repr if ((self.tag is None) or (to_string != repr)) else "< %s = %s >" % (self.tag, num_repr)) def __hash__(self): # All Variable objects are by definition independent # variables, so they never compare equal; therefore, their # id() are therefore allowed to differ # (http://docs.python.org/reference/datamodel.html#object.__hash__): return id(self) def __copy__(self): """ Hook for the standard copy module. """ # This copy implicitly takes care of the reference of the # variable to itself (in self.derivatives): the new Variable # object points to itself, not to the original Variable. # Reference: http://www.doughellmann.com/PyMOTW/copy/index.html #! The following assumes that the arguments to Variable are # *not* copied upon construction, since __copy__ is not supposed # to copy "inside" information: return Variable(self.nominal_value, self.std_dev(), self.tag) def __deepcopy__(self, memo): """ Hook for the standard copy module. A new variable is created. """ # This deep copy implicitly takes care of the reference of the # variable to itself (in self.derivatives): the new Variable # object points to itself, not to the original Variable. # Reference: http://www.doughellmann.com/PyMOTW/copy/index.html return self.__copy__() def __getstate__(self): """ Hook for the standard pickle module. """ obj_slot_values = dict((k, getattr(self, k)) for k in self.__slots__) obj_slot_values.update(AffineScalarFunc.__getstate__(self)) # Conversion to a usual dictionary: return obj_slot_values def __setstate__(self, data_dict): """ Hook for the standard pickle module. """ for (name, value) in data_dict.items(): setattr(self, name, value) ############################################################################### # Utilities def nominal_value(x): """ Returns the nominal value of x if it is a quantity with uncertainty (i.e., an AffineScalarFunc object); otherwise, returns x unchanged. This utility function is useful for transforming a series of numbers, when only some of them generally carry an uncertainty. """ return x.nominal_value if isinstance(x, AffineScalarFunc) else x def std_dev(x): """ Returns the standard deviation of x if it is a quantity with uncertainty (i.e., an AffineScalarFunc object); otherwise, returns the float 0. This utility function is useful for transforming a series of numbers, when only some of them generally carry an uncertainty. """ return x.std_dev() if isinstance(x, AffineScalarFunc) else 0. def covariance_matrix(nums_with_uncert): """ Returns a matrix that contains the covariances between the given sequence of numbers with uncertainties (AffineScalarFunc objects). The resulting matrix implicitly depends on their ordering in 'nums_with_uncert'. The covariances are floats (never int objects). The returned covariance matrix is the exact linear approximation result, if the nominal values of the numbers with uncertainties and of their variables are their mean. Otherwise, the returned covariance matrix should be close to its linear approximation value. The returned matrix is a list of lists. """ # See PSI.411 in EOL's notes. covariance_matrix = [] for (i1, expr1) in enumerate(nums_with_uncert): derivatives1 = expr1.derivatives # Optimization vars1 = set(derivatives1) coefs_expr1 = [] for (i2, expr2) in enumerate(nums_with_uncert[:i1+1]): derivatives2 = expr2.derivatives # Optimization coef = 0. for var in vars1.intersection(derivatives2): # var is a variable common to both numbers with # uncertainties: coef += (derivatives1[var]*derivatives2[var]*var._std_dev**2) coefs_expr1.append(coef) covariance_matrix.append(coefs_expr1) # We symmetrize the matrix: for (i, covariance_coefs) in enumerate(covariance_matrix): covariance_coefs.extend(covariance_matrix[j][i] for j in range(i+1, len(covariance_matrix))) return covariance_matrix try: import numpy except ImportError: pass else: def correlation_matrix(nums_with_uncert): ''' Returns the correlation matrix of the given sequence of numbers with uncertainties, as a NumPy array of floats. ''' cov_mat = numpy.array(covariance_matrix(nums_with_uncert)) std_devs = numpy.sqrt(cov_mat.diagonal()) return cov_mat/std_devs/std_devs[numpy.newaxis].T __all__.append('correlation_matrix') ############################################################################### # Parsing of values with uncertainties: POSITIVE_DECIMAL_UNSIGNED = r'(\d+)(\.\d*)?' # Regexp for a number with uncertainty (e.g., "-1.234(2)e-6"), where the # uncertainty is optional (in which case the uncertainty is implicit): NUMBER_WITH_UNCERT_RE_STR = ''' ([+-])? # Sign %s # Main number (?:\(%s\))? # Optional uncertainty ([eE][+-]?\d+)? # Optional exponent ''' % (POSITIVE_DECIMAL_UNSIGNED, POSITIVE_DECIMAL_UNSIGNED) NUMBER_WITH_UNCERT_RE = re.compile( "^%s$" % NUMBER_WITH_UNCERT_RE_STR, re.VERBOSE) def parse_error_in_parentheses(representation): """ Returns (value, error) from a string representing a number with uncertainty like 12.34(5), 12.34(142), 12.5(3.4) or 12.3(4.2)e3. If no parenthesis is given, an uncertainty of one on the last digit is assumed. Raises ValueError if the string cannot be parsed. """ match = NUMBER_WITH_UNCERT_RE.search(representation) if match: # The 'main' part is the nominal value, with 'int'eger part, and # 'dec'imal part. The 'uncert'ainty is similarly broken into its # integer and decimal parts. (sign, main_int, main_dec, uncert_int, uncert_dec, exponent) = match.groups() else: raise ValueError("Unparsable number representation: '%s'." " Was expecting a string of the form 1.23(4)" " or 1.234" % representation) # The value of the number is its nominal value: value = float(''.join((sign or '', main_int, main_dec or '.0', exponent or ''))) if uncert_int is None: # No uncertainty was found: an uncertainty of 1 on the last # digit is assumed: uncert_int = '1' # Do we have a fully explicit uncertainty? if uncert_dec is not None: uncert = float("%s%s" % (uncert_int, uncert_dec or '')) else: # uncert_int represents an uncertainty on the last digits: # The number of digits after the period defines the power of # 10 than must be applied to the provided uncertainty: num_digits_after_period = (0 if main_dec is None else len(main_dec)-1) uncert = int(uncert_int)/10**num_digits_after_period # We apply the exponent to the uncertainty as well: uncert *= float("1%s" % (exponent or '')) return (value, uncert) # The following function is not exposed because it can in effect be # obtained by doing x = ufloat(representation) and # x.nominal_value and x.std_dev(): def str_to_number_with_uncert(representation): """ Given a string that represents a number with uncertainty, returns the nominal value and the uncertainty. The string can be of the form: - 124.5+/-0.15 - 124.50(15) - 124.50(123) - 124.5 When no numerical error is given, an uncertainty of 1 on the last digit is implied. Raises ValueError if the string cannot be parsed. """ try: # Simple form 1234.45+/-1.2: (value, uncert) = representation.split('+/-') except ValueError: # Form with parentheses or no uncertainty: parsed_value = parse_error_in_parentheses(representation) else: try: parsed_value = (float(value), float(uncert)) except ValueError: raise ValueError('Cannot parse %s: was expecting a number' ' like 1.23+/-0.1' % representation) return parsed_value def ufloat(representation, tag=None): """ Returns a random variable (Variable object). Converts the representation of a number into a number with uncertainty (a random variable, defined by a nominal value and a standard deviation). The representation can be a (value, standard deviation) sequence, or a string. Strings of the form '12.345+/-0.015', '12.345(15)', or '12.3' are recognized (see full list below). In the last case, an uncertainty of +/-1 is assigned to the last digit. 'tag' is an optional string tag for the variable. Variables don't have to have distinct tags. Tags are useful for tracing what values (and errors) enter in a given result (through the error_components() method). Examples of valid string representations: -1.23(3.4) -1.34(5) 1(6) 3(4.2) -9(2) 1234567(1.2) 12.345(15) -12.3456(78)e-6 12.3(0.4)e-5 0.29 31. -31. 31 -3.1e10 169.0(7) 169.1(15) """ # This function is somewhat optimized so as to help with the # creation of lots of Variable objects (through unumpy.uarray, for # instance). # representations is "normalized" so as to be a valid sequence of # 2 arguments for Variable(). #! Accepting strings and any kind of sequence slows down the code # by about 5 %. On the other hand, massive initializations of # numbers with uncertainties are likely to be performed with # unumpy.uarray, which does not support parsing from strings and # thus does not have any overhead. #! Different, in Python 3: if isinstance(representation, basestring): representation = str_to_number_with_uncert(representation) #! The tag is forced to be a string, so that the user does not # create a Variable(2.5, 0.5) in order to represent 2.5 +/- 0.5. # Forcing 'tag' to be a string prevents numerical uncertainties # from being considered as tags, here: if tag is not None: #! 'unicode' is removed in Python3: assert isinstance(tag, (str, unicode)), "The tag can only be a string." #! The special ** syntax is for Python 2.5 and before (Python 2.6+ # understands tag=tag): return Variable(*representation, **{'tag': tag}) lmfit-0.9.2/lmfit/models.py0000644000032700003100000004342312613715346017103 0ustar newvillegeocars00000000000000import numpy as np from .model import Model from .lineshapes import (gaussian, lorentzian, voigt, pvoigt, moffat, pearson7, step, rectangle, breit_wigner, logistic, students_t, lognormal, damped_oscillator, expgaussian, skewed_gaussian, donaich, skewed_voigt, exponential, powerlaw, linear, parabolic) from . import lineshapes from .asteval import Interpreter from .astutils import get_ast_names class DimensionalError(Exception): pass def _validate_1d(independent_vars): if len(independent_vars) != 1: raise DimensionalError( "This model requires exactly one independent variable.") def index_of(arr, val): """return index of array nearest to a value """ if val < min(arr): return 0 return np.abs(arr-val).argmin() def fwhm_expr(model): "return constraint expression for fwhm" return "%.7f*%ssigma" % (model.fwhm_factor, model.prefix) def guess_from_peak(model, y, x, negative, ampscale=1.0, sigscale=1.0): "estimate amp, cen, sigma for a peak, create params" if x is None: return 1.0, 0.0, 1.0 maxy, miny = max(y), min(y) maxx, minx = max(x), min(x) imaxy = index_of(y, maxy) cen = x[imaxy] amp = (maxy - miny)*2.0 sig = (maxx-minx)/6.0 halfmax_vals = np.where(y > (maxy+miny)/2.0)[0] if negative: imaxy = index_of(y, miny) amp = -(maxy - miny)*2.0 halfmax_vals = np.where(y < (maxy+miny)/2.0)[0] if len(halfmax_vals) > 2: sig = (x[halfmax_vals[-1]] - x[halfmax_vals[0]])/2.0 cen = x[halfmax_vals].mean() amp = amp*sig*ampscale sig = sig*sigscale pars = model.make_params(amplitude=amp, center=cen, sigma=sig) pars['%ssigma' % model.prefix].set(min=0.0) return pars def update_param_vals(pars, prefix, **kwargs): """convenience function to update parameter values with keyword arguments""" for key, val in kwargs.items(): pname = "%s%s" % (prefix, key) if pname in pars: pars[pname].value = val return pars COMMON_DOC = """ Parameters ---------- independent_vars: list of strings to be set as variable names missing: None, 'drop', or 'raise' None: Do not check for null or missing values. 'drop': Drop null or missing observations in data. Use pandas.isnull if pandas is available; otherwise, silently fall back to numpy.isnan. 'raise': Raise a (more helpful) exception when data contains null or missing values. prefix: string to prepend to paramter names, needed to add two Models that have parameter names in common. None by default. """ class ConstantModel(Model): __doc__ = "x -> c" + COMMON_DOC def __init__(self, *args, **kwargs): def constant(x, c): return c super(ConstantModel, self).__init__(constant, *args, **kwargs) def guess(self, data, **kwargs): pars = self.make_params() pars['%sc' % self.prefix].set(value=data.mean()) return update_param_vals(pars, self.prefix, **kwargs) class LinearModel(Model): __doc__ = linear.__doc__ + COMMON_DOC if linear.__doc__ else "" def __init__(self, *args, **kwargs): super(LinearModel, self).__init__(linear, *args, **kwargs) def guess(self, data, x=None, **kwargs): sval, oval = 0., 0. if x is not None: sval, oval = np.polyfit(x, data, 1) pars = self.make_params(intercept=oval, slope=sval) return update_param_vals(pars, self.prefix, **kwargs) class QuadraticModel(Model): __doc__ = parabolic.__doc__ + COMMON_DOC if parabolic.__doc__ else "" def __init__(self, *args, **kwargs): super(QuadraticModel, self).__init__(parabolic, *args, **kwargs) def guess(self, data, x=None, **kwargs): a, b, c = 0., 0., 0. if x is not None: a, b, c = np.polyfit(x, data, 2) pars = self.make_params(a=a, b=b, c=c) return update_param_vals(pars, self.prefix, **kwargs) ParabolicModel = QuadraticModel class PolynomialModel(Model): __doc__ = "x -> c0 + c1 * x + c2 * x**2 + ... c7 * x**7" + COMMON_DOC MAX_DEGREE=7 DEGREE_ERR = "degree must be an integer less than %d." def __init__(self, degree, *args, **kwargs): if not isinstance(degree, int) or degree > self.MAX_DEGREE: raise TypeError(self.DEGREE_ERR % self.MAX_DEGREE) self.poly_degree = degree pnames = ['c%i' % (i) for i in range(degree + 1)] kwargs['param_names'] = pnames def polynomial(x, c0=0, c1=0, c2=0, c3=0, c4=0, c5=0, c6=0, c7=0): return np.polyval([c7, c6, c5, c4, c3, c2, c1, c0], x) super(PolynomialModel, self).__init__(polynomial, *args, **kwargs) def guess(self, data, x=None, **kwargs): pars = self.make_params() if x is not None: out = np.polyfit(x, data, self.poly_degree) for i, coef in enumerate(out[::-1]): pars['%sc%i'% (self.prefix, i)].set(value=coef) return update_param_vals(pars, self.prefix, **kwargs) class GaussianModel(Model): __doc__ = gaussian.__doc__ + COMMON_DOC if gaussian.__doc__ else "" fwhm_factor = 2.354820 def __init__(self, *args, **kwargs): super(GaussianModel, self).__init__(gaussian, *args, **kwargs) self.set_param_hint('sigma', min=0) self.set_param_hint('fwhm', expr=fwhm_expr(self)) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative) return update_param_vals(pars, self.prefix, **kwargs) class LorentzianModel(Model): __doc__ = lorentzian.__doc__ + COMMON_DOC if lorentzian.__doc__ else "" fwhm_factor = 2.0 def __init__(self, *args, **kwargs): super(LorentzianModel, self).__init__(lorentzian, *args, **kwargs) self.set_param_hint('sigma', min=0) self.set_param_hint('fwhm', expr=fwhm_expr(self)) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative, ampscale=1.25) return update_param_vals(pars, self.prefix, **kwargs) class VoigtModel(Model): __doc__ = voigt.__doc__ + COMMON_DOC if voigt.__doc__ else "" fwhm_factor = 3.60131 def __init__(self, *args, **kwargs): super(VoigtModel, self).__init__(voigt, *args, **kwargs) self.set_param_hint('sigma', min=0) self.set_param_hint('gamma', expr='%ssigma' % self.prefix) self.set_param_hint('fwhm', expr=fwhm_expr(self)) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative, ampscale=1.5, sigscale=0.65) return update_param_vals(pars, self.prefix, **kwargs) class PseudoVoigtModel(Model): __doc__ = pvoigt.__doc__ + COMMON_DOC if pvoigt.__doc__ else "" fwhm_factor = 2.0 def __init__(self, *args, **kwargs): super(PseudoVoigtModel, self).__init__(pvoigt, *args, **kwargs) self.set_param_hint('fraction', value=0.5) self.set_param_hint('fwhm', expr=fwhm_expr(self)) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative, ampscale=1.25) pars['%sfraction' % self.prefix].set(value=0.5) return update_param_vals(pars, self.prefix, **kwargs) class MoffatModel(Model): __doc__ = moffat.__doc__ + COMMON_DOC if moffat.__doc__ else "" def __init__(self, *args, **kwargs): super(MoffatModel, self).__init__(moffat, *args, **kwargs) self.set_param_hint('fwhm', expr="2*%ssigma*sqrt(2**(1.0/%sbeta)-1)" % (self.prefix, self.prefix)) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative, ampscale=0.5, sigscale=1.) return update_param_vals(pars, self.prefix, **kwargs) class Pearson7Model(Model): __doc__ = pearson7.__doc__ + COMMON_DOC if pearson7.__doc__ else "" def __init__(self, *args, **kwargs): super(Pearson7Model, self).__init__(pearson7, *args, **kwargs) self.set_param_hint('expon', value=1.5) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative) pars['%sexpon' % self.prefix].set(value=1.5) return update_param_vals(pars, self.prefix, **kwargs) class StudentsTModel(Model): __doc__ = students_t.__doc__ + COMMON_DOC if students_t.__doc__ else "" def __init__(self, *args, **kwargs): super(StudentsTModel, self).__init__(students_t, *args, **kwargs) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative) return update_param_vals(pars, self.prefix, **kwargs) class BreitWignerModel(Model): __doc__ = breit_wigner.__doc__ + COMMON_DOC if breit_wigner.__doc__ else "" def __init__(self, *args, **kwargs): super(BreitWignerModel, self).__init__(breit_wigner, *args, **kwargs) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative) pars['%sq' % self.prefix].set(value=1.0) return update_param_vals(pars, self.prefix, **kwargs) class LognormalModel(Model): __doc__ = lognormal.__doc__ + COMMON_DOC if lognormal.__doc__ else "" def __init__(self, *args, **kwargs): super(LognormalModel, self).__init__(lognormal, *args, **kwargs) def guess(self, data, x=None, negative=False, **kwargs): pars = self.make_params(amplitude=1.0, center=0.0, sigma=0.25) pars['%ssigma' % self.prefix].set(min=0.0) return update_param_vals(pars, self.prefix, **kwargs) class DampedOscillatorModel(Model): __doc__ = damped_oscillator.__doc__ + COMMON_DOC if damped_oscillator.__doc__ else "" def __init__(self, *args, **kwargs): super(DampedOscillatorModel, self).__init__(damped_oscillator, *args, **kwargs) def guess(self, data, x=None, negative=False, **kwargs): pars =guess_from_peak(self, data, x, negative, ampscale=0.1, sigscale=0.1) return update_param_vals(pars, self.prefix, **kwargs) class ExponentialGaussianModel(Model): __doc__ = expgaussian.__doc__ + COMMON_DOC if expgaussian.__doc__ else "" def __init__(self, *args, **kwargs): super(ExponentialGaussianModel, self).__init__(expgaussian, *args, **kwargs) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative) return update_param_vals(pars, self.prefix, **kwargs) class SkewedGaussianModel(Model): __doc__ = skewed_gaussian.__doc__ + COMMON_DOC if skewed_gaussian.__doc__ else "" fwhm_factor = 2.354820 def __init__(self, *args, **kwargs): super(SkewedGaussianModel, self).__init__(skewed_gaussian, *args, **kwargs) self.set_param_hint('sigma', min=0) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative) return update_param_vals(pars, self.prefix, **kwargs) class DonaichModel(Model): __doc__ = donaich.__doc__ + COMMON_DOC if donaich.__doc__ else "" def __init__(self, *args, **kwargs): super(DonaichModel, self).__init__(donaich, *args, **kwargs) def guess(self, data, x=None, negative=False, **kwargs): pars = guess_from_peak(self, data, x, negative, ampscale=0.5) return update_param_vals(pars, self.prefix, **kwargs) class PowerLawModel(Model): __doc__ = powerlaw.__doc__ + COMMON_DOC if powerlaw.__doc__ else "" def __init__(self, *args, **kwargs): super(PowerLawModel, self).__init__(powerlaw, *args, **kwargs) def guess(self, data, x=None, **kwargs): try: expon, amp = np.polyfit(np.log(x+1.e-14), np.log(data+1.e-14), 1) except: expon, amp = 1, np.log(abs(max(data)+1.e-9)) pars = self.make_params(amplitude=np.exp(amp), exponent=expon) return update_param_vals(pars, self.prefix, **kwargs) class ExponentialModel(Model): __doc__ = exponential.__doc__ + COMMON_DOC if exponential.__doc__ else "" def __init__(self, *args, **kwargs): super(ExponentialModel, self).__init__(exponential, *args, **kwargs) def guess(self, data, x=None, **kwargs): try: sval, oval = np.polyfit(x, np.log(abs(data)+1.e-15), 1) except: sval, oval = 1., np.log(abs(max(data)+1.e-9)) pars = self.make_params(amplitude=np.exp(oval), decay=-1.0/sval) return update_param_vals(pars, self.prefix, **kwargs) class StepModel(Model): __doc__ = step.__doc__ + COMMON_DOC if step.__doc__ else "" def __init__(self, *args, **kwargs): super(StepModel, self).__init__(step, *args, **kwargs) def guess(self, data, x=None, **kwargs): if x is None: return ymin, ymax = min(data), max(data) xmin, xmax = min(x), max(x) pars = self.make_params(amplitude=(ymax-ymin), center=(xmax+xmin)/2.0) pars['%ssigma' % self.prefix].set(value=(xmax-xmin)/7.0, min=0.0) return update_param_vals(pars, self.prefix, **kwargs) class RectangleModel(Model): __doc__ = rectangle.__doc__ + COMMON_DOC if rectangle.__doc__ else "" def __init__(self, *args, **kwargs): super(RectangleModel, self).__init__(rectangle, *args, **kwargs) self.set_param_hint('midpoint', expr='(%scenter1+%scenter2)/2.0' % (self.prefix, self.prefix)) def guess(self, data, x=None, **kwargs): if x is None: return ymin, ymax = min(data), max(data) xmin, xmax = min(x), max(x) pars = self.make_params(amplitude=(ymax-ymin), center1=(xmax+xmin)/4.0, center2=3*(xmax+xmin)/4.0) pars['%ssigma1' % self.prefix].set(value=(xmax-xmin)/7.0, min=0.0) pars['%ssigma2' % self.prefix].set(value=(xmax-xmin)/7.0, min=0.0) return update_param_vals(pars, self.prefix, **kwargs) class ExpressionModel(Model): """Model from User-supplied expression Parameters ---------- expr: string of mathematical expression for model. independent_vars: list of strings to be set as variable names missing: None, 'drop', or 'raise' None: Do not check for null or missing values. 'drop': Drop null or missing observations in data. Use pandas.isnull if pandas is available; otherwise, silently fall back to numpy.isnan. 'raise': Raise a (more helpful) exception when data contains null or missing values. prefix: NOT supported for ExpressionModel """ idvar_missing = "No independent variable found in\n %s" idvar_notfound = "Cannot find independent variables '%s' in\n %s" no_prefix = "ExpressionModel does not support `prefix` argument" def __init__(self, expr, independent_vars=None, init_script=None, *args, **kwargs): # create ast evaluator, load custom functions self.asteval = Interpreter() for name in lineshapes.functions: self.asteval.symtable[name] = getattr(lineshapes, name, None) if init_script is not None: self.asteval.eval(init_script) # save expr as text, parse to ast, save for later use self.expr = expr.strip() self.astcode = self.asteval.parse(self.expr) # find all symbol names found in expression sym_names = get_ast_names(self.astcode) if independent_vars is None and 'x' in sym_names: independent_vars = ['x'] if independent_vars is None: raise ValueError(self.idvar_missing % (self.expr)) # determine which named symbols are parameter names, # try to find all independent variables idvar_found = [False]*len(independent_vars) param_names = [] for name in sym_names: if name in independent_vars: idvar_found[independent_vars.index(name)] = True elif name not in self.asteval.symtable: param_names.append(name) # make sure we have all independent parameters if not all(idvar_found): lost = [] for ix, found in enumerate(idvar_found): if not found: lost.append(independent_vars[ix]) lost = ', '.join(lost) raise ValueError(self.idvar_notfound % (lost, self.expr)) kwargs['independent_vars'] = independent_vars if 'prefix' in kwargs: raise Warning(self.no_prefix) def _eval(**kwargs): for name, val in kwargs.items(): self.asteval.symtable[name] = val return self.asteval.run(self.astcode) super(ExpressionModel, self).__init__(_eval, *args, **kwargs) # set param names here, and other things normally # set in _parse_params(), which will be short-circuited. self.independent_vars = independent_vars self._func_allargs = independent_vars + param_names self._param_names = set(param_names) self._func_haskeywords = True self.def_vals = {} def __repr__(self): return "" % (self.expr) def _parse_params(self): """ExpressionModel._parse_params is over-written (as `pass`) to prevent normal parsing of function for parameter names """ pass lmfit-0.9.2/lmfit/_differentialevolution.py0000644000032700003100000007561112603520205022347 0ustar newvillegeocars00000000000000""" differential_evolution: The differential evolution global optimization algorithm Added by Andrew Nelson 2014 """ from __future__ import division, print_function, absolute_import import numpy as np from scipy.optimize import minimize from scipy.optimize.optimize import _status_message import numbers __all__ = ['differential_evolution'] _MACHEPS = np.finfo(np.float64).eps #------------------------------------------------------------------------------ # scipy.optimize does not contain OptimizeResult until 0.14. Include here as a # fix for scipy < 0.14. class OptimizeResult(dict): """ Represents the optimization result. Attributes ---------- x : ndarray The solution of the optimization. success : bool Whether or not the optimizer exited successfully. status : int Termination status of the optimizer. Its value depends on the underlying solver. Refer to `message` for details. message : str Description of the cause of the termination. fun, jac, hess, hess_inv : ndarray Values of objective function, Jacobian, Hessian or its inverse (if available). The Hessians may be approximations, see the documentation of the function in question. nfev, njev, nhev : int Number of evaluations of the objective functions and of its Jacobian and Hessian. nit : int Number of iterations performed by the optimizer. maxcv : float The maximum constraint violation. Notes ----- There may be additional attributes not listed above depending of the specific solver. Since this class is essentially a subclass of dict with attribute accessors, one can see which attributes are available using the `keys()` method. """ def __getattr__(self, name): try: return self[name] except KeyError: raise AttributeError(name) __setattr__ = dict.__setitem__ __delattr__ = dict.__delitem__ def __repr__(self): if self.keys(): m = max(map(len, list(self.keys()))) + 1 return '\n'.join([k.rjust(m) + ': ' + repr(v) for k, v in self.items()]) else: return self.__class__.__name__ + "()" #------------------------------------------------------------------------------ def differential_evolution(func, bounds, args=(), strategy='best1bin', maxiter=None, popsize=15, tol=0.01, mutation=(0.5, 1), recombination=0.7, seed=None, callback=None, disp=False, polish=True, init='latinhypercube'): """Finds the global minimum of a multivariate function. Differential Evolution is stochastic in nature (does not use gradient methods) to find the minimium, and can search large areas of candidate space, but often requires larger numbers of function evaluations than conventional gradient based techniques. The algorithm is due to Storn and Price [1]_. Parameters ---------- func : callable The objective function to be minimized. Must be in the form ``f(x, *args)``, where ``x`` is the argument in the form of a 1-D array and ``args`` is a tuple of any additional fixed parameters needed to completely specify the function. bounds : sequence Bounds for variables. ``(min, max)`` pairs for each element in ``x``, defining the lower and upper bounds for the optimizing argument of `func`. It is required to have ``len(bounds) == len(x)``. ``len(bounds)`` is used to determine the number of parameters in ``x``. args : tuple, optional Any additional fixed parameters needed to completely specify the objective function. strategy : str, optional The differential evolution strategy to use. Should be one of: - 'best1bin' - 'best1exp' - 'rand1exp' - 'randtobest1exp' - 'best2exp' - 'rand2exp' - 'randtobest1bin' - 'best2bin' - 'rand2bin' - 'rand1bin' The default is 'best1bin'. maxiter : int, optional The maximum number of times the entire population is evolved. The maximum number of function evaluations is: ``maxiter * popsize * len(x)`` popsize : int, optional A multiplier for setting the total population size. The population has ``popsize * len(x)`` individuals. tol : float, optional When the mean of the population energies, multiplied by tol, divided by the standard deviation of the population energies is greater than 1 the solving process terminates: ``convergence = mean(pop) * tol / stdev(pop) > 1`` mutation : float or tuple(float, float), optional The mutation constant. If specified as a float it should be in the range [0, 2]. If specified as a tuple ``(min, max)`` dithering is employed. Dithering randomly changes the mutation constant on a generation by generation basis. The mutation constant for that generation is taken from ``U[min, max)``. Dithering can help speed convergence significantly. Increasing the mutation constant increases the search radius, but will slow down convergence. recombination : float, optional The recombination constant, should be in the range [0, 1]. Increasing this value allows a larger number of mutants to progress into the next generation, but at the risk of population stability. seed : int or `np.random.RandomState`, optional If `seed` is not specified the `np.RandomState` singleton is used. If `seed` is an int, a new `np.random.RandomState` instance is used, seeded with seed. If `seed` is already a `np.random.RandomState instance`, then that `np.random.RandomState` instance is used. Specify `seed` for repeatable minimizations. disp : bool, optional Display status messages callback : callable, `callback(xk, convergence=val)`, optional: A function to follow the progress of the minimization. ``xk`` is the current value of ``x0``. ``val`` represents the fractional value of the population convergence. When ``val`` is greater than one the function halts. If callback returns `True`, then the minimization is halted (any polishing is still carried out). polish : bool, optional If True (default), then `scipy.optimize.minimize` with the `L-BFGS-B` method is used to polish the best population member at the end, which can improve the minimization slightly. init : string, optional Specify how the population initialization is performed. Should be one of: - 'latinhypercube' - 'random' The default is 'latinhypercube'. Latin Hypercube sampling tries to maximize coverage of the available parameter space. 'random' initializes the population randomly - this has the drawback that clustering can occur, preventing the whole of parameter space being covered. Returns ------- res : OptimizeResult The optimization result represented as a `OptimizeResult` object. Important attributes are: ``x`` the solution array, ``success`` a Boolean flag indicating if the optimizer exited successfully and ``message`` which describes the cause of the termination. See `OptimizeResult` for a description of other attributes. If `polish` was employed, then OptimizeResult also contains the `jac` attribute. Notes ----- Differential evolution is a stochastic population based method that is useful for global optimization problems. At each pass through the population the algorithm mutates each candidate solution by mixing with other candidate solutions to create a trial candidate. There are several strategies [2]_ for creating trial candidates, which suit some problems more than others. The 'best1bin' strategy is a good starting point for many systems. In this strategy two members of the population are randomly chosen. Their difference is used to mutate the best member (the `best` in `best1bin`), :math:`b_0`, so far: .. math:: b' = b_0 + mutation * (population[rand0] - population[rand1]) A trial vector is then constructed. Starting with a randomly chosen 'i'th parameter the trial is sequentially filled (in modulo) with parameters from `b'` or the original candidate. The choice of whether to use `b'` or the original candidate is made with a binomial distribution (the 'bin' in 'best1bin') - a random number in [0, 1) is generated. If this number is less than the `recombination` constant then the parameter is loaded from `b'`, otherwise it is loaded from the original candidate. The final parameter is always loaded from `b'`. Once the trial candidate is built its fitness is assessed. If the trial is better than the original candidate then it takes its place. If it is also better than the best overall candidate it also replaces that. To improve your chances of finding a global minimum use higher `popsize` values, with higher `mutation` and (dithering), but lower `recombination` values. This has the effect of widening the search radius, but slowing convergence. .. versionadded:: 0.15.0 Examples -------- Let us consider the problem of minimizing the Rosenbrock function. This function is implemented in `rosen` in `scipy.optimize`. >>> from scipy.optimize import rosen, differential_evolution >>> bounds = [(0,2), (0, 2), (0, 2), (0, 2), (0, 2)] >>> result = differential_evolution(rosen, bounds) >>> result.x, result.fun (array([1., 1., 1., 1., 1.]), 1.9216496320061384e-19) Next find the minimum of the Ackley function (http://en.wikipedia.org/wiki/Test_functions_for_optimization). >>> from scipy.optimize import differential_evolution >>> import numpy as np >>> def ackley(x): ... arg1 = -0.2 * np.sqrt(0.5 * (x[0] ** 2 + x[1] ** 2)) ... arg2 = 0.5 * (np.cos(2. * np.pi * x[0]) + np.cos(2. * np.pi * x[1])) ... return -20. * np.exp(arg1) - np.exp(arg2) + 20. + np.e >>> bounds = [(-5, 5), (-5, 5)] >>> result = differential_evolution(ackley, bounds) >>> result.x, result.fun (array([ 0., 0.]), 4.4408920985006262e-16) References ---------- .. [1] Storn, R and Price, K, Differential Evolution - a Simple and Efficient Heuristic for Global Optimization over Continuous Spaces, Journal of Global Optimization, 1997, 11, 341 - 359. .. [2] http://www1.icsi.berkeley.edu/~storn/code.html .. [3] http://en.wikipedia.org/wiki/Differential_evolution """ solver = DifferentialEvolutionSolver(func, bounds, args=args, strategy=strategy, maxiter=maxiter, popsize=popsize, tol=tol, mutation=mutation, recombination=recombination, seed=seed, polish=polish, callback=callback, disp=disp, init=init) return solver.solve() class DifferentialEvolutionSolver(object): """This class implements the differential evolution solver Parameters ---------- func : callable The objective function to be minimized. Must be in the form ``f(x, *args)``, where ``x`` is the argument in the form of a 1-D array and ``args`` is a tuple of any additional fixed parameters needed to completely specify the function. bounds : sequence Bounds for variables. ``(min, max)`` pairs for each element in ``x``, defining the lower and upper bounds for the optimizing argument of `func`. It is required to have ``len(bounds) == len(x)``. ``len(bounds)`` is used to determine the number of parameters in ``x``. args : tuple, optional Any additional fixed parameters needed to completely specify the objective function. strategy : str, optional The differential evolution strategy to use. Should be one of: - 'best1bin' - 'best1exp' - 'rand1exp' - 'randtobest1exp' - 'best2exp' - 'rand2exp' - 'randtobest1bin' - 'best2bin' - 'rand2bin' - 'rand1bin' The default is 'best1bin' maxiter : int, optional The maximum number of times the entire population is evolved. The maximum number of function evaluations is: ``maxiter * popsize * len(x)`` popsize : int, optional A multiplier for setting the total population size. The population has ``popsize * len(x)`` individuals. tol : float, optional When the mean of the population energies, multiplied by tol, divided by the standard deviation of the population energies is greater than 1 the solving process terminates: ``convergence = mean(pop) * tol / stdev(pop) > 1`` mutation : float or tuple(float, float), optional The mutation constant. If specified as a float it should be in the range [0, 2]. If specified as a tuple ``(min, max)`` dithering is employed. Dithering randomly changes the mutation constant on a generation by generation basis. The mutation constant for that generation is taken from U[min, max). Dithering can help speed convergence significantly. Increasing the mutation constant increases the search radius, but will slow down convergence. recombination : float, optional The recombination constant, should be in the range [0, 1]. Increasing this value allows a larger number of mutants to progress into the next generation, but at the risk of population stability. seed : int or `np.random.RandomState`, optional If `seed` is not specified the `np.random.RandomState` singleton is used. If `seed` is an int, a new `np.random.RandomState` instance is used, seeded with `seed`. If `seed` is already a `np.random.RandomState` instance, then that `np.random.RandomState` instance is used. Specify `seed` for repeatable minimizations. disp : bool, optional Display status messages callback : callable, `callback(xk, convergence=val)`, optional A function to follow the progress of the minimization. ``xk`` is the current value of ``x0``. ``val`` represents the fractional value of the population convergence. When ``val`` is greater than one the function halts. If callback returns `True`, then the minimization is halted (any polishing is still carried out). polish : bool, optional If True, then `scipy.optimize.minimize` with the `L-BFGS-B` method is used to polish the best population member at the end. This requires a few more function evaluations. maxfun : int, optional Set the maximum number of function evaluations. However, it probably makes more sense to set `maxiter` instead. init : string, optional Specify which type of population initialization is performed. Should be one of: - 'latinhypercube' - 'random' """ # Dispatch of mutation strategy method (binomial or exponential). _binomial = {'best1bin': '_best1', 'randtobest1bin': '_randtobest1', 'best2bin': '_best2', 'rand2bin': '_rand2', 'rand1bin': '_rand1'} _exponential = {'best1exp': '_best1', 'rand1exp': '_rand1', 'randtobest1exp': '_randtobest1', 'best2exp': '_best2', 'rand2exp': '_rand2'} def __init__(self, func, bounds, args=(), strategy='best1bin', maxiter=None, popsize=15, tol=0.01, mutation=(0.5, 1), recombination=0.7, seed=None, maxfun=None, callback=None, disp=False, polish=True, init='latinhypercube'): if strategy in self._binomial: self.mutation_func = getattr(self, self._binomial[strategy]) elif strategy in self._exponential: self.mutation_func = getattr(self, self._exponential[strategy]) else: raise ValueError("Please select a valid mutation strategy") self.strategy = strategy self.callback = callback self.polish = polish self.tol = tol #Mutation constant should be in [0, 2). If specified as a sequence #then dithering is performed. self.scale = mutation if (not np.all(np.isfinite(mutation)) or np.any(np.array(mutation) >= 2) or np.any(np.array(mutation) < 0)): raise ValueError('The mutation constant must be a float in ' 'U[0, 2), or specified as a tuple(min, max)' ' where min < max and min, max are in U[0, 2).') self.dither = None if hasattr(mutation, '__iter__') and len(mutation) > 1: self.dither = [mutation[0], mutation[1]] self.dither.sort() self.cross_over_probability = recombination self.func = func self.args = args # convert tuple of lower and upper bounds to limits # [(low_0, high_0), ..., (low_n, high_n] # -> [[low_0, ..., low_n], [high_0, ..., high_n]] self.limits = np.array(bounds, dtype='float').T if (np.size(self.limits, 0) != 2 or not np.all(np.isfinite(self.limits))): raise ValueError('bounds should be a sequence containing ' 'real valued (min, max) pairs for each value' ' in x') self.maxiter = maxiter or 1000 self.maxfun = (maxfun or ((self.maxiter + 1) * popsize * np.size(self.limits, 1))) # population is scaled to between [0, 1]. # We have to scale between parameter <-> population # save these arguments for _scale_parameter and # _unscale_parameter. This is an optimization self.__scale_arg1 = 0.5 * (self.limits[0] + self.limits[1]) self.__scale_arg2 = np.fabs(self.limits[0] - self.limits[1]) parameter_count = np.size(self.limits, 1) self.random_number_generator = _make_random_gen(seed) #default initialization is a latin hypercube design, but there #are other population initializations possible. self.population = np.zeros((popsize * parameter_count, parameter_count)) if init == 'latinhypercube': self.init_population_lhs() elif init == 'random': self.init_population_random() else: raise ValueError("The population initialization method must be one" "of 'latinhypercube' or 'random'") self.population_energies = np.ones( popsize * parameter_count) * np.inf self.disp = disp def init_population_lhs(self): """ Initializes the population with Latin Hypercube Sampling Latin Hypercube Sampling ensures that the sampling of parameter space is maximised. """ samples = np.size(self.population, 0) N = np.size(self.population, 1) rng = self.random_number_generator # Generate the intervals segsize = 1.0 / samples # Fill points uniformly in each interval rdrange = rng.rand(samples, N) * segsize rdrange += np.atleast_2d(np.arange(0., 1., segsize)).T # Make the random pairings self.population = np.zeros_like(rdrange) for j in range(N): order = rng.permutation(range(samples)) self.population[:, j] = rdrange[order, j] def init_population_random(self): """ Initialises the population at random. This type of initialization can possess clustering, Latin Hypercube sampling is generally better. """ rng = self.random_number_generator self.population = rng.random_sample(self.population.shape) @property def x(self): """ The best solution from the solver Returns ------- x - ndarray The best solution from the solver. """ return self._scale_parameters(self.population[0]) def solve(self): """ Runs the DifferentialEvolutionSolver. Returns ------- res : OptimizeResult The optimization result represented as a ``OptimizeResult`` object. Important attributes are: ``x`` the solution array, ``success`` a Boolean flag indicating if the optimizer exited successfully and ``message`` which describes the cause of the termination. See `OptimizeResult` for a description of other attributes. If polish was employed, then OptimizeResult also contains the ``hess_inv`` and ``jac`` attributes. """ nfev, nit, warning_flag = 0, 0, False status_message = _status_message['success'] # calculate energies to start with for index, candidate in enumerate(self.population): parameters = self._scale_parameters(candidate) self.population_energies[index] = self.func(parameters, *self.args) nfev += 1 if nfev > self.maxfun: warning_flag = True status_message = _status_message['maxfev'] break minval = np.argmin(self.population_energies) # put the lowest energy into the best solution position. lowest_energy = self.population_energies[minval] self.population_energies[minval] = self.population_energies[0] self.population_energies[0] = lowest_energy self.population[[0, minval], :] = self.population[[minval, 0], :] if warning_flag: return OptimizeResult( x=self.x, fun=self.population_energies[0], nfev=nfev, nit=nit, message=status_message, success=(warning_flag != True)) # do the optimisation. for nit in range(1, self.maxiter + 1): if self.dither is not None: self.scale = self.random_number_generator.rand( ) * (self.dither[1] - self.dither[0]) + self.dither[0] for candidate in range(np.size(self.population, 0)): if nfev > self.maxfun: warning_flag = True status_message = _status_message['maxfev'] break trial = self._mutate(candidate) self._ensure_constraint(trial) parameters = self._scale_parameters(trial) energy = self.func(parameters, *self.args) nfev += 1 if energy < self.population_energies[candidate]: self.population[candidate] = trial self.population_energies[candidate] = energy if energy < self.population_energies[0]: self.population_energies[0] = energy self.population[0] = trial # stop when the fractional s.d. of the population is less than tol # of the mean energy convergence = (np.std(self.population_energies) / np.abs(np.mean(self.population_energies) + _MACHEPS)) if self.disp: print("differential_evolution step %d: f(x)= %g" % (nit, self.population_energies[0])) if (self.callback and self.callback(self._scale_parameters(self.population[0]), convergence=self.tol / convergence) is True): warning_flag = True status_message = ('callback function requested stop early ' 'by returning True') break if convergence < self.tol or warning_flag: break else: status_message = _status_message['maxiter'] warning_flag = True DE_result = OptimizeResult( x=self.x, fun=self.population_energies[0], nfev=nfev, nit=nit, message=status_message, success=(warning_flag != True)) if self.polish: result = minimize(self.func, np.copy(DE_result.x), method='L-BFGS-B', bounds=self.limits.T, args=self.args) nfev += result.nfev DE_result.nfev = nfev if result.fun < DE_result.fun: DE_result.fun = result.fun DE_result.x = result.x DE_result.jac = result.jac # to keep internal state consistent self.population_energies[0] = result.fun self.population[0] = self._unscale_parameters(result.x) return DE_result def _scale_parameters(self, trial): """ scale from a number between 0 and 1 to parameters """ return self.__scale_arg1 + (trial - 0.5) * self.__scale_arg2 def _unscale_parameters(self, parameters): """ scale from parameters to a number between 0 and 1. """ return (parameters - self.__scale_arg1) / self.__scale_arg2 + 0.5 def _ensure_constraint(self, trial): """ make sure the parameters lie between the limits """ for index, param in enumerate(trial): if param > 1 or param < 0: trial[index] = self.random_number_generator.rand() def _mutate(self, candidate): """ create a trial vector based on a mutation strategy """ trial = np.copy(self.population[candidate]) parameter_count = np.size(trial, 0) fill_point = self.random_number_generator.randint(0, parameter_count) if (self.strategy == 'randtobest1exp' or self.strategy == 'randtobest1bin'): bprime = self.mutation_func(candidate, self._select_samples(candidate, 5)) else: bprime = self.mutation_func(self._select_samples(candidate, 5)) if self.strategy in self._binomial: crossovers = self.random_number_generator.rand(parameter_count) crossovers = crossovers < self.cross_over_probability # the last one is always from the bprime vector for binomial # If you fill in modulo with a loop you have to set the last one to # true. If you don't use a loop then you can have any random entry # be True. crossovers[fill_point] = True trial = np.where(crossovers, bprime, trial) return trial elif self.strategy in self._exponential: i = 0 while (i < parameter_count and self.random_number_generator.rand() < self.cross_over_probability): trial[fill_point] = bprime[fill_point] fill_point = (fill_point + 1) % parameter_count i += 1 return trial def _best1(self, samples): """ best1bin, best1exp """ r0, r1 = samples[:2] return (self.population[0] + self.scale * (self.population[r0] - self.population[r1])) def _rand1(self, samples): """ rand1bin, rand1exp """ r0, r1, r2 = samples[:3] return (self.population[r0] + self.scale * (self.population[r1] - self.population[r2])) def _randtobest1(self, candidate, samples): """ randtobest1bin, randtobest1exp """ r0, r1 = samples[:2] bprime = np.copy(self.population[candidate]) bprime += self.scale * (self.population[0] - bprime) bprime += self.scale * (self.population[r0] - self.population[r1]) return bprime def _best2(self, samples): """ best2bin, best2exp """ r0, r1, r2, r3 = samples[:4] bprime = (self.population[0] + self.scale * (self.population[r0] + self.population[r1] - self.population[r2] - self.population[r3])) return bprime def _rand2(self, samples): """ rand2bin, rand2exp """ r0, r1, r2, r3, r4 = samples bprime = (self.population[r0] + self.scale * (self.population[r1] + self.population[r2] - self.population[r3] - self.population[r4])) return bprime def _select_samples(self, candidate, number_samples): """ obtain random integers from range(np.size(self.population, 0)), without replacement. You can't have the original candidate either. """ idxs = list(range(np.size(self.population, 0))) idxs.remove(candidate) self.random_number_generator.shuffle(idxs) idxs = idxs[:number_samples] return idxs def _make_random_gen(seed): """Turn seed into a np.random.RandomState instance If seed is None, return the RandomState singleton used by np.random. If seed is an int, return a new RandomState instance seeded with seed. If seed is already a RandomState instance, return it. Otherwise raise ValueError. """ if seed is None or seed is np.random: return np.random.mtrand._rand if isinstance(seed, (numbers.Integral, np.integer)): return np.random.RandomState(seed) if isinstance(seed, np.random.RandomState): return seed raise ValueError('%r cannot be used to seed a numpy.random.RandomState' ' instance' % seed) lmfit-0.9.2/lmfit/asteval.py0000644000032700003100000007226412613715346017264 0ustar newvillegeocars00000000000000""" Safe(ish) evaluator of python expressions, using ast module. The emphasis here is on mathematical expressions, and so numpy functions are imported if available and used. Symbols are held in the Interpreter symtable -- a simple dictionary supporting a simple, flat namespace. Expressions can be compiled into ast node and then evaluated later, using the current values in the """ from __future__ import division, print_function from sys import exc_info, stdout, version_info import ast import math from .astutils import (FROM_PY, FROM_MATH, FROM_NUMPY, UNSAFE_ATTRS, LOCALFUNCS, NUMPY_RENAMES, op2func, ExceptionHolder, ReturnedNone, valid_symbol_name) HAS_NUMPY = False try: import numpy HAS_NUMPY = True except ImportError: print("Warning: numpy not available... functionality will be limited.") class Interpreter: """mathematical expression compiler and interpreter. This module compiles expressions and statements to AST representation, using python's ast module, and then executes the AST representation using a dictionary of named object (variable, functions). The result is a restricted, simplified version of Python meant for numerical caclulations that is somewhat safer than 'eval' because some operations (such as 'import' and 'eval') are simply not allowed. The resulting language uses a flat namespace that works on Python objects, but does not allow new classes to be defined. Many parts of Python syntax are supported, including: for loops, while loops, if-then-elif-else conditionals try-except (including 'finally') function definitions with def advanced slicing: a[::-1], array[-3:, :, ::2] if-expressions: out = one_thing if TEST else other list comprehension out = [sqrt(i) for i in values] The following Python syntax elements are not supported: Import, Exec, Lambda, Class, Global, Generators, Yield, Decorators In addition, while many builtin functions are supported, several builtin functions are missing ('eval', 'exec', and 'getattr' for example) that can be considered unsafe. If numpy is installed, many numpy functions are also imported. """ supported_nodes = ('arg', 'assert', 'assign', 'attribute', 'augassign', 'binop', 'boolop', 'break', 'call', 'compare', 'continue', 'delete', 'dict', 'ellipsis', 'excepthandler', 'expr', 'extslice', 'for', 'functiondef', 'if', 'ifexp', 'index', 'interrupt', 'list', 'listcomp', 'module', 'name', 'num', 'pass', 'print', 'raise', 'repr', 'return', 'slice', 'str', 'subscript', 'try', 'tuple', 'unaryop', 'while') def __init__(self, symtable=None, writer=None, use_numpy=True): self.writer = writer or stdout if symtable is None: symtable = {} self.symtable = symtable self._interrupt = None self.error = [] self.error_msg = None self.expr = None self.retval = None self.lineno = 0 self.use_numpy = HAS_NUMPY and use_numpy symtable['print'] = self._printer # add python symbols py_symtable = {sym: __builtins__[sym] for sym in FROM_PY if sym in __builtins__} symtable.update(py_symtable) # add local symbols local_symtable = {sym: obj for (sym, obj) in LOCALFUNCS.items()} symtable.update(local_symtable) # add math symbols math_symtable = {sym: getattr(math, sym) for sym in FROM_MATH if hasattr(math, sym)} symtable.update(math_symtable) # add numpy symbols if self.use_numpy: numpy_symtable = {sym: getattr(numpy, sym) for sym in FROM_NUMPY if hasattr(numpy, sym)} symtable.update(numpy_symtable) npy_rename_symtable = {name: getattr(numpy, sym) for name, sym in NUMPY_RENAMES.items() if hasattr(numpy, sym)} symtable.update(npy_rename_symtable) self.node_handlers = dict(((node, getattr(self, "on_%s" % node)) for node in self.supported_nodes)) # to rationalize try/except try/finally for Python2.6 through Python3.3 self.node_handlers['tryexcept'] = self.node_handlers['try'] self.node_handlers['tryfinally'] = self.node_handlers['try'] self.no_deepcopy = [key for key, val in symtable.items() if (callable(val) or 'numpy.lib.index_tricks' in repr(val))] def user_defined_symbols(self): """ Return a set of symbols that have been added to symtable after construction. I.e. the symbols from self.symtable that are not in self.no_deepcopy. Returns ------- unique_symbols : set symbols in symtable that are not in self.no_deepcopy """ sym_in_current = set(self.symtable.keys()) sym_from_construction = set(self.no_deepcopy) unique_symbols = sym_in_current.difference(sym_from_construction) return unique_symbols def unimplemented(self, node): "unimplemented nodes" self.raise_exception(node, exc=NotImplementedError, msg="'%s' not supported" % (node.__class__.__name__)) def raise_exception(self, node, exc=None, msg='', expr=None, lineno=None): "add an exception" if self.error is None: self.error = [] if expr is None: expr = self.expr if len(self.error) > 0 and not isinstance(node, ast.Module): msg = '%s' % msg err = ExceptionHolder(node, exc=exc, msg=msg, expr=expr, lineno=lineno) self._interrupt = ast.Break() self.error.append(err) if self.error_msg is None: self.error_msg = "%s in expr='%s'" % (msg, self.expr) elif len(msg) > 0: self.error_msg = "%s\n %s" % (self.error_msg, msg) if exc is None: try: exc = self.error[0].exc except: exc = RuntimeError raise exc(self.error_msg) # main entry point for Ast node evaluation # parse: text of statements -> ast # run: ast -> result # eval: string statement -> result = run(parse(statement)) def parse(self, text): """parse statement/expression to Ast representation""" self.expr = text try: return ast.parse(text) except SyntaxError: self.raise_exception(None, msg='Syntax Error', expr=text) except: self.raise_exception(None, msg='Runtime Error', expr=text) def run(self, node, expr=None, lineno=None, with_raise=True): """executes parsed Ast representation for an expression""" # Note: keep the 'node is None' test: internal code here may run # run(None) and expect a None in return. if len(self.error) > 0: return if node is None: return None if isinstance(node, str): node = self.parse(node) if lineno is not None: self.lineno = lineno if expr is not None: self.expr = expr # get handler for this node: # on_xxx with handle nodes of type 'xxx', etc try: handler = self.node_handlers[node.__class__.__name__.lower()] except KeyError: return self.unimplemented(node) # run the handler: this will likely generate # recursive calls into this run method. try: ret = handler(node) if isinstance(ret, enumerate): ret = list(ret) return ret except: if with_raise: self.raise_exception(node, expr=expr) def __call__(self, expr, **kw): return self.eval(expr, **kw) def eval(self, expr, lineno=0, show_errors=True): """evaluates a single statement""" self.lineno = lineno self.error = [] try: node = self.parse(expr) except: errmsg = exc_info()[1] if len(self.error) > 0: errmsg = "\n".join(self.error[0].get_error()) if not show_errors: try: exc = self.error[0].exc except: exc = RuntimeError raise exc(errmsg) print(errmsg, file=self.writer) return try: return self.run(node, expr=expr, lineno=lineno) except: errmsg = exc_info()[1] if len(self.error) > 0: errmsg = "\n".join(self.error[0].get_error()) if not show_errors: try: exc = self.error[0].exc except: exc = RuntimeError raise exc(errmsg) print(errmsg, file=self.writer) return def dump(self, node, **kw): "simple ast dumper" return ast.dump(node, **kw) # handlers for ast components def on_expr(self, node): "expression" return self.run(node.value) # ('value',) def on_index(self, node): "index" return self.run(node.value) # ('value',) def on_return(self, node): # ('value',) "return statement: look for None, return special sentinal" self.retval = self.run(node.value) if self.retval is None: self.retval = ReturnedNone return def on_repr(self, node): "repr " return repr(self.run(node.value)) # ('value',) def on_module(self, node): # ():('body',) "module def" out = None for tnode in node.body: out = self.run(tnode) return out def on_pass(self, node): "pass statement" return None # () def on_ellipsis(self, node): "ellipses" return Ellipsis # for break and continue: set the instance variable _interrupt def on_interrupt(self, node): # () "interrupt handler" self._interrupt = node return node def on_break(self, node): "break" return self.on_interrupt(node) def on_continue(self, node): "continue" return self.on_interrupt(node) def on_assert(self, node): # ('test', 'msg') "assert statement" if not self.run(node.test): self.raise_exception(node, exc=AssertionError, msg=node.msg) return True def on_list(self, node): # ('elt', 'ctx') "list" return [self.run(e) for e in node.elts] def on_tuple(self, node): # ('elts', 'ctx') "tuple" return tuple(self.on_list(node)) def on_dict(self, node): # ('keys', 'values') "dictionary" return dict([(self.run(k), self.run(v)) for k, v in zip(node.keys, node.values)]) def on_num(self, node): # ('n',) 'return number' return node.n def on_str(self, node): # ('s',) 'return string' return node.s def on_name(self, node): # ('id', 'ctx') """ Name node """ ctx = node.ctx.__class__ if ctx in (ast.Param, ast.Del): return str(node.id) else: if node.id in self.symtable: return self.symtable[node.id] else: msg = "name '%s' is not defined" % node.id self.raise_exception(node, exc=NameError, msg=msg) def node_assign(self, node, val): """here we assign a value (not the node.value object) to a node this is used by on_assign, but also by for, list comprehension, etc. """ if node.__class__ == ast.Name: if not valid_symbol_name(node.id): errmsg = "invalid symbol name (reserved word?) %s" % node.id self.raise_exception(node, exc=NameError, msg=errmsg) sym = self.symtable[node.id] = val if node.id in self.no_deepcopy: self.no_deepcopy.pop(node.id) elif node.__class__ == ast.Attribute: if node.ctx.__class__ == ast.Load: msg = "cannot assign to attribute %s" % node.attr self.raise_exception(node, exc=AttributeError, msg=msg) setattr(self.run(node.value), node.attr, val) elif node.__class__ == ast.Subscript: sym = self.run(node.value) xslice = self.run(node.slice) if isinstance(node.slice, ast.Index): sym[xslice] = val elif isinstance(node.slice, ast.Slice): sym[slice(xslice.start, xslice.stop)] = val elif isinstance(node.slice, ast.ExtSlice): sym[(xslice)] = val elif node.__class__ in (ast.Tuple, ast.List): if len(val) == len(node.elts): for telem, tval in zip(node.elts, val): self.node_assign(telem, tval) else: raise ValueError('too many values to unpack') def on_attribute(self, node): # ('value', 'attr', 'ctx') "extract attribute" ctx = node.ctx.__class__ if ctx == ast.Store: msg = "attribute for storage: shouldn't be here!" self.raise_exception(node, exc=RuntimeError, msg=msg) sym = self.run(node.value) if ctx == ast.Del: return delattr(sym, node.attr) # ctx is ast.Load fmt = "cannnot access attribute '%s' for %s" if node.attr not in UNSAFE_ATTRS: fmt = "no attribute '%s' for %s" try: return getattr(sym, node.attr) except AttributeError: pass # AttributeError or accessed unsafe attribute obj = self.run(node.value) msg = fmt % (node.attr, obj) self.raise_exception(node, exc=AttributeError, msg=msg) def on_assign(self, node): # ('targets', 'value') "simple assignment" val = self.run(node.value) for tnode in node.targets: self.node_assign(tnode, val) return def on_augassign(self, node): # ('target', 'op', 'value') "augmented assign" return self.on_assign(ast.Assign(targets=[node.target], value=ast.BinOp(left=node.target, op=node.op, right=node.value))) def on_slice(self, node): # ():('lower', 'upper', 'step') "simple slice" return slice(self.run(node.lower), self.run(node.upper), self.run(node.step)) def on_extslice(self, node): # ():('dims',) "extended slice" return tuple([self.run(tnode) for tnode in node.dims]) def on_subscript(self, node): # ('value', 'slice', 'ctx') "subscript handling -- one of the tricky parts" val = self.run(node.value) nslice = self.run(node.slice) ctx = node.ctx.__class__ if ctx in (ast.Load, ast.Store): if isinstance(node.slice, (ast.Index, ast.Slice, ast.Ellipsis)): return val.__getitem__(nslice) elif isinstance(node.slice, ast.ExtSlice): return val[(nslice)] else: msg = "subscript with unknown context" self.raise_exception(node, msg=msg) def on_delete(self, node): # ('targets',) "delete statement" for tnode in node.targets: if tnode.ctx.__class__ != ast.Del: break children = [] while tnode.__class__ == ast.Attribute: children.append(tnode.attr) tnode = tnode.value if tnode.__class__ == ast.Name: children.append(tnode.id) children.reverse() self.symtable.pop('.'.join(children)) else: msg = "could not delete symbol" self.raise_exception(node, msg=msg) def on_unaryop(self, node): # ('op', 'operand') "unary operator" return op2func(node.op)(self.run(node.operand)) def on_binop(self, node): # ('left', 'op', 'right') "binary operator" return op2func(node.op)(self.run(node.left), self.run(node.right)) def on_boolop(self, node): # ('op', 'values') "boolean operator" val = self.run(node.values[0]) is_and = ast.And == node.op.__class__ if (is_and and val) or (not is_and and not val): for n in node.values: val = op2func(node.op)(val, self.run(n)) if (is_and and not val) or (not is_and and val): break return val def on_compare(self, node): # ('left', 'ops', 'comparators') "comparison operators" lval = self.run(node.left) out = True for op, rnode in zip(node.ops, node.comparators): rval = self.run(rnode) out = op2func(op)(lval, rval) lval = rval if self.use_numpy and isinstance(out, numpy.ndarray) and out.any(): break elif not out: break return out def on_print(self, node): # ('dest', 'values', 'nl') """ note: implements Python2 style print statement, not print() function. May need improvement....""" dest = self.run(node.dest) or self.writer end = '' if node.nl: end = '\n' out = [self.run(tnode) for tnode in node.values] if out and len(self.error) == 0: self._printer(*out, file=dest, end=end) def _printer(self, *out, **kws): "generic print function" flush = kws.pop('flush', True) fileh = kws.pop('file', self.writer) sep = kws.pop('sep', ' ') end = kws.pop('sep', '\n') print(*out, file=fileh, sep=sep, end=end) if flush: fileh.flush() def on_if(self, node): # ('test', 'body', 'orelse') "regular if-then-else statement" block = node.body if not self.run(node.test): block = node.orelse for tnode in block: self.run(tnode) def on_ifexp(self, node): # ('test', 'body', 'orelse') "if expressions" expr = node.orelse if self.run(node.test): expr = node.body return self.run(expr) def on_while(self, node): # ('test', 'body', 'orelse') "while blocks" while self.run(node.test): self._interrupt = None for tnode in node.body: self.run(tnode) if self._interrupt is not None: break if isinstance(self._interrupt, ast.Break): break else: for tnode in node.orelse: self.run(tnode) self._interrupt = None def on_for(self, node): # ('target', 'iter', 'body', 'orelse') "for blocks" for val in self.run(node.iter): self.node_assign(node.target, val) self._interrupt = None for tnode in node.body: self.run(tnode) if self._interrupt is not None: break if isinstance(self._interrupt, ast.Break): break else: for tnode in node.orelse: self.run(tnode) self._interrupt = None def on_listcomp(self, node): # ('elt', 'generators') "list comprehension" out = [] for tnode in node.generators: if tnode.__class__ == ast.comprehension: for val in self.run(tnode.iter): self.node_assign(tnode.target, val) add = True for cond in tnode.ifs: add = add and self.run(cond) if add: out.append(self.run(node.elt)) return out def on_excepthandler(self, node): # ('type', 'name', 'body') "exception handler..." return (self.run(node.type), node.name, node.body) def on_try(self, node): # ('body', 'handlers', 'orelse', 'finalbody') "try/except/else/finally blocks" no_errors = True for tnode in node.body: self.run(tnode, with_raise=False) no_errors = no_errors and len(self.error) == 0 if len(self.error) > 0: e_type, e_value, e_tback = self.error[-1].exc_info for hnd in node.handlers: htype = None if hnd.type is not None: htype = __builtins__.get(hnd.type.id, None) if htype is None or isinstance(e_type(), htype): self.error = [] if hnd.name is not None: self.node_assign(hnd.name, e_value) for tline in hnd.body: self.run(tline) break if no_errors and hasattr(node, 'orelse'): for tnode in node.orelse: self.run(tnode) if hasattr(node, 'finalbody'): for tnode in node.finalbody: self.run(tnode) def on_raise(self, node): # ('type', 'inst', 'tback') "raise statement: note difference for python 2 and 3" if version_info[0] == 3: excnode = node.exc msgnode = node.cause else: excnode = node.type msgnode = node.inst out = self.run(excnode) msg = ' '.join(out.args) msg2 = self.run(msgnode) if msg2 not in (None, 'None'): msg = "%s: %s" % (msg, msg2) self.raise_exception(None, exc=out.__class__, msg=msg, expr='') def on_call(self, node): "function execution" # ('func', 'args', 'keywords', 'starargs', 'kwargs') func = self.run(node.func) if not hasattr(func, '__call__') and not isinstance(func, type): msg = "'%s' is not callable!!" % (func) self.raise_exception(node, exc=TypeError, msg=msg) args = [self.run(targ) for targ in node.args] if node.starargs is not None: args = args + self.run(node.starargs) keywords = {} for key in node.keywords: if not isinstance(key, ast.keyword): msg = "keyword error in function call '%s'" % (func) self.raise_exception(node, msg=msg) keywords[key.arg] = self.run(key.value) if node.kwargs is not None: keywords.update(self.run(node.kwargs)) try: return func(*args, **keywords) except: self.raise_exception(node, msg="Error running %s" % (func)) def on_arg(self, node): # ('test', 'msg') "arg for function definitions" # print(" ON ARG ! ", node, node.arg) return node.arg def on_functiondef(self, node): "define procedures" # ('name', 'args', 'body', 'decorator_list') if node.decorator_list != []: raise Warning("decorated procedures not supported!") kwargs = [] offset = len(node.args.args) - len(node.args.defaults) for idef, defnode in enumerate(node.args.defaults): defval = self.run(defnode) keyval = self.run(node.args.args[idef+offset]) kwargs.append((keyval, defval)) if version_info[0] == 3: args = [tnode.arg for tnode in node.args.args[:offset]] else: args = [tnode.id for tnode in node.args.args[:offset]] doc = None nb0 = node.body[0] if isinstance(nb0, ast.Expr) and isinstance(nb0.value, ast.Str): doc = nb0.value.s self.symtable[node.name] = Procedure(node.name, self, doc=doc, lineno=self.lineno, body=node.body, args=args, kwargs=kwargs, vararg=node.args.vararg, varkws=node.args.kwarg) if node.name in self.no_deepcopy: self.no_deepcopy.pop(node.name) class Procedure(object): """Procedure: user-defined function for asteval This stores the parsed ast nodes as from the 'functiondef' ast node for later evaluation. """ def __init__(self, name, interp, doc=None, lineno=0, body=None, args=None, kwargs=None, vararg=None, varkws=None): self.name = name self.__asteval__ = interp self.raise_exc = self.__asteval__.raise_exception self.__doc__ = doc self.body = body self.argnames = args self.kwargs = kwargs self.vararg = vararg self.varkws = varkws self.lineno = lineno def __repr__(self): sig = "" if len(self.argnames) > 0: sig = "%s%s" % (sig, ', '.join(self.argnames)) if self.vararg is not None: sig = "%s, *%s" % (sig, self.vararg) if len(self.kwargs) > 0: if len(sig) > 0: sig = "%s, " % sig _kw = ["%s=%s" % (k, v) for k, v in self.kwargs] sig = "%s%s" % (sig, ', '.join(_kw)) if self.varkws is not None: sig = "%s, **%s" % (sig, self.varkws) sig = "" % (self.name, sig) if self.__doc__ is not None: sig = "%s\n %s" % (sig, self.__doc__) return sig def __call__(self, *args, **kwargs): symlocals = {} args = list(args) n_args = len(args) n_names = len(self.argnames) n_kws = len(kwargs) # may need to move kwargs to args if names align! if (n_args < n_names) and n_kws > 0: for name in self.argnames[n_args:]: if name in kwargs: args.append(kwargs.pop(name)) n_args = len(args) n_names = len(self.argnames) n_kws = len(kwargs) if len(self.argnames) > 0 and kwargs is not None: msg = "multiple values for keyword argument '%s' in Procedure %s" for targ in self.argnames: if targ in kwargs: self.raise_exc(None, exc=TypeError, msg=msg % (targ, self.name), lineno=self.lineno) if n_args != n_names: msg = None if n_args < n_names: msg = 'not enough arguments for Procedure %s()' % self.name msg = '%s (expected %i, got %i)' % (msg, n_names, n_args) self.raise_exc(None, exc=TypeError, msg=msg) for argname in self.argnames: symlocals[argname] = args.pop(0) try: if self.vararg is not None: symlocals[self.vararg] = tuple(args) for key, val in self.kwargs: if key in kwargs: val = kwargs.pop(key) symlocals[key] = val if self.varkws is not None: symlocals[self.varkws] = kwargs elif len(kwargs) > 0: msg = 'extra keyword arguments for Procedure %s (%s)' msg = msg % (self.name, ','.join(list(kwargs.keys()))) self.raise_exc(None, msg=msg, exc=TypeError, lineno=self.lineno) except (ValueError, LookupError, TypeError, NameError, AttributeError): msg = 'incorrect arguments for Procedure %s' % self.name self.raise_exc(None, msg=msg, lineno=self.lineno) save_symtable = self.__asteval__.symtable.copy() self.__asteval__.symtable.update(symlocals) self.__asteval__.retval = None retval = None # evaluate script of function for node in self.body: self.__asteval__.run(node, expr='<>', lineno=self.lineno) if len(self.__asteval__.error) > 0: break if self.__asteval__.retval is not None: retval = self.__asteval__.retval if retval is ReturnedNone: retval = None break self.__asteval__.symtable = save_symtable symlocals = None return retval lmfit-0.9.2/lmfit/printfuncs.py0000644000032700003100000001746212613715346020017 0ustar newvillegeocars00000000000000# -*- coding: utf-8 -*- """ Created on Fri Apr 20 19:24:21 2012 @author: Tillsten Changes: - 13-Feb-2013 M Newville complemented "report_errors" and "report_ci" with "error_report" and "ci_report" (respectively) which return the text of the report. Thus report_errors() is simply: def report_errors(params, modelpars=None, show_correl=True): print error_report(params, modelpars=modelpars, show_correl=show_correl) and similar for report_ci() / ci_report() """ from __future__ import print_function from .parameter import Parameters import re def alphanumeric_sort(s, _nsre=re.compile('([0-9]+)')): return [int(text) if text.isdigit() else text.lower() for text in re.split(_nsre, s)] def getfloat_attr(obj, attr, fmt='%.3f'): "format an attribute of an object for printing" val = getattr(obj, attr, None) if val is None: return 'unknown' if isinstance(val, int): return '%d' % val if isinstance(val, float): return fmt % val else: return repr(val) def gformat(val, length=11): """format a number with '%g'-like format, except that the return will be length ``length`` (default=12) and have at least length-6 significant digits """ length = max(length, 7) fmt = '{: .%ig}' % (length-6) if isinstance(val, int): out = ('{: .%ig}' % (length-2)).format(val) if len(out) > length: out = fmt.format(val) else: out = fmt.format(val) if len(out) < length: if 'e' in out: ie = out.find('e') if '.' not in out[:ie]: out = out[:ie] + '.' + out[ie:] out = out.replace('e', '0'*(length-len(out))+'e') else: fmt = '{: .%ig}' % (length-1) out = fmt.format(val)[:length] if len(out) < length: pad = '0' if '.' in out else ' ' out += pad*(length-len(out)) return out CORREL_HEAD = '[[Correlations]] (unreported correlations are < % .3f)' def fit_report(inpars, modelpars=None, show_correl=True, min_correl=0.1, sort_pars=False): """return text of a report for fitted params best-fit values, uncertainties and correlations arguments ---------- inpars Parameters from fit or Minizer object returned from a fit. modelpars Optional Known Model Parameters [None] show_correl whether to show list of sorted correlations [True] min_correl smallest correlation absolute value to show [0.1] sort_pars If True, then fit_report will show parameter names sorted in alphanumerical order. If False, then the parameters will be listed in the order they were added to the Parameters dictionary. If sort_pars is callable, then this (one argument) function is used to extract a comparison key from each list element. """ if isinstance(inpars, Parameters): result, params = None, inpars if hasattr(inpars, 'params'): result = inpars params = inpars.params if sort_pars: if callable(sort_pars): key = sort_pars else: key = alphanumeric_sort parnames = sorted(params, key=key) else: # dict.keys() returns a KeysView in py3, and they're indexed further # down parnames = list(params.keys()) buff = [] add = buff.append if result is not None: add("[[Fit Statistics]]") add(" # function evals = %s" % getfloat_attr(result, 'nfev')) add(" # data points = %s" % getfloat_attr(result, 'ndata')) add(" # variables = %s" % getfloat_attr(result, 'nvarys')) add(" chi-square = %s" % getfloat_attr(result, 'chisqr')) add(" reduced chi-square = %s" % getfloat_attr(result, 'redchi')) namelen = max([len(n) for n in parnames]) add("[[Variables]]") for name in parnames: par = params[name] space = ' '*(namelen+1-len(name)) nout = "%s:%s" % (name, space) inval = '(init= ?)' if par.init_value is not None: inval = '(init=% .7g)' % par.init_value if modelpars is not None and name in modelpars: inval = '%s, model_value =% .7g' % (inval, modelpars[name].value) try: sval = gformat(par.value) except (TypeError, ValueError): sval = 'Non Numeric Value?' if par.stderr is not None: serr = gformat(par.stderr, length=9) try: spercent = '({:.2%})'.format(abs(par.stderr/par.value)) except ZeroDivisionError: spercent = '' sval = '%s +/-%s %s' % (sval, serr, spercent) if par.vary: add(" %s %s %s" % (nout, sval, inval)) elif par.expr is not None: add(" %s %s == '%s'" % (nout, sval, par.expr)) else: add(" %s % .7g (fixed)" % (nout, par.value)) if show_correl: add(CORREL_HEAD % min_correl) correls = {} for i, name in enumerate(parnames): par = params[name] if not par.vary: continue if hasattr(par, 'correl') and par.correl is not None: for name2 in parnames[i+1:]: if (name != name2 and name2 in par.correl and abs(par.correl[name2]) > min_correl): correls["%s, %s" % (name, name2)] = par.correl[name2] sort_correl = sorted(correls.items(), key=lambda it: abs(it[1])) sort_correl.reverse() for name, val in sort_correl: lspace = max(1, 25 - len(name)) add(' C(%s)%s = % .3f ' % (name, (' '*30)[:lspace], val)) return '\n'.join(buff) def report_errors(params, **kws): """print a report for fitted params: see error_report()""" print(fit_report(params, **kws)) def report_fit(params, **kws): """print a report for fitted params: see error_report()""" print(fit_report(params, **kws)) def ci_report(ci, with_offset=True, ndigits=5): """return text of a report for confidence intervals Parameters ---------- with_offset : bool (default `True`) whether to subtract best value from all other values. ndigits : int (default 5) number of significant digits to show Returns ------- text of formatted report on confidence intervals. """ maxlen = max([len(i) for i in ci]) buff = [] add = buff.append def convp(x): if abs(x[0]) < 1.e-2: return "_BEST_" return "%.2f%%" % (x[0]*100) title_shown = False fmt_best = fmt_diff = "{0:.%if}" % ndigits if with_offset: fmt_diff = "{0:+.%if}" % ndigits for name, row in ci.items(): if not title_shown: add("".join([''.rjust(maxlen+1)]+[i.rjust(ndigits+5) for i in map(convp, row)])) title_shown = True thisrow = [" %s:" % name.ljust(maxlen)] offset = 0.0 if with_offset: for cval, val in row: if abs(cval) < 1.e-2: offset = val for cval, val in row: if cval < 1.e-2: sval = fmt_best.format(val) else: sval = fmt_diff.format(val-offset) thisrow.append(sval.rjust(ndigits+5)) add("".join(thisrow)) return '\n'.join(buff) def report_ci(ci): """print a report for confidence intervals""" print(ci_report(ci)) lmfit-0.9.2/lmfit/lineshapes.py0000644000032700003100000002357412613715346017760 0ustar newvillegeocars00000000000000#!/usr/bin/env python """ basic model line shapes and distribution functions """ from __future__ import division from numpy import (pi, log, exp, sqrt, arctan, cos, where) from numpy.testing import assert_allclose from scipy.special import gamma as gamfcn from scipy.special import gammaln, erf, erfc, wofz log2 = log(2) s2pi = sqrt(2*pi) spi = sqrt(pi) s2 = sqrt(2.0) functions = ('gaussian', 'lorentzian', 'voigt', 'pvoigt', 'moffat', 'pearson7', 'breit_wigner', 'damped_oscillator', 'logistic', 'lognormal', 'students_t', 'expgaussian', 'donaich', 'skewed_gaussian', 'skewed_voigt', 'step', 'rectangle', 'erf', 'erfc', 'wofz', 'gamma', 'gammaln', 'exponential', 'powerlaw', 'linear', 'parabolic') def gaussian(x, amplitude=1.0, center=0.0, sigma=1.0): """1 dimensional gaussian: gaussian(x, amplitude, center, sigma) """ return (amplitude/(s2pi*sigma)) * exp(-(1.0*x-center)**2 /(2*sigma**2)) def lorentzian(x, amplitude=1.0, center=0.0, sigma=1.0): """1 dimensional lorentzian lorentzian(x, amplitude, center, sigma) """ return (amplitude/(1 + ((1.0*x-center)/sigma)**2) ) / (pi*sigma) def voigt(x, amplitude=1.0, center=0.0, sigma=1.0, gamma=None): """1 dimensional voigt function. see http://en.wikipedia.org/wiki/Voigt_profile """ if gamma is None: gamma = sigma z = (x-center + 1j*gamma)/ (sigma*s2) return amplitude*wofz(z).real / (sigma*s2pi) def pvoigt(x, amplitude=1.0, center=0.0, sigma=1.0, fraction=0.5): """1 dimensional pseudo-voigt: pvoigt(x, amplitude, center, sigma, fraction) = amplitude*(1-fraction)*gaussion(x, center, sigma_g) + amplitude*fraction*lorentzian(x, center, sigma) where sigma_g (the sigma for the Gaussian component) is sigma_g = sigma / sqrt(2*log(2)) ~= sigma / 1.17741 so that the Gaussian and Lorentzian components have the same FWHM of 2*sigma. """ sigma_g = sigma / sqrt(2*log2) return ((1-fraction)*gaussian(x, amplitude, center, sigma_g) + fraction*lorentzian(x, amplitude, center, sigma)) def moffat(x, amplitude=1, center=0., sigma=1, beta=1.): """ 1 dimensional moffat function: moffat(amplitude, center, sigma, beta) = amplitude / (((x - center)/sigma)**2 + 1)**beta """ return amplitude / (((x - center)/sigma)**2 + 1)**beta def pearson7(x, amplitude=1.0, center=0.0, sigma=1.0, expon=1.0): """pearson7 lineshape, using the wikipedia definition: pearson7(x, center, sigma, expon) = amplitude*(1+arg**2)**(-expon)/(sigma*beta(expon-0.5, 0.5)) where arg = (x-center)/sigma and beta() is the beta function. """ arg = (x-center)/sigma scale = amplitude * gamfcn(expon)/(gamfcn(0.5)*gamfcn(expon-0.5)) return scale*(1+arg**2)**(-expon)/sigma def breit_wigner(x, amplitude=1.0, center=0.0, sigma=1.0, q=1.0): """Breit-Wigner-Fano lineshape: = amplitude*(q*sigma/2 + x - center)**2 / ( (sigma/2)**2 + (x - center)**2 ) """ gam = sigma/2.0 return amplitude*(q*gam + x - center)**2 / (gam*gam + (x-center)**2) def damped_oscillator(x, amplitude=1.0, center=1., sigma=0.1): """amplitude for a damped harmonic oscillator amplitude/sqrt( (1.0 - (x/center)**2)**2 + (2*sigma*x/center)**2)) """ center = max(1.e-9, abs(center)) return (amplitude/sqrt( (1.0 - (x/center)**2)**2 + (2*sigma*x/center)**2)) def logistic(x, amplitude=1., center=0., sigma=1.): """Logistic lineshape (yet another sigmoidal curve) = amplitude*(1. - 1. / (1 + exp((x-center)/sigma))) """ return amplitude*(1. - 1./(1. + exp((x-center)/sigma))) def lognormal(x, amplitude=1.0, center=0., sigma=1): """log-normal function lognormal(x, center, sigma) = (amplitude/x) * exp(-(ln(x) - center)/ (2* sigma**2)) """ x[where(x<=1.e-19)] = 1.e-19 return (amplitude/(x*sigma*s2pi)) * exp(-(log(x)-center)**2/ (2* sigma**2)) def students_t(x, amplitude=1.0, center=0.0, sigma=1.0): """Student's t distribution: gamma((sigma+1)/2) (1 + (x-center)**2/sigma)^(-(sigma+1)/2) = ------------------------- sqrt(sigma*pi)gamma(sigma/2) """ s1 = (sigma+1)/2.0 denom = (sqrt(sigma*pi)*gamfcn(sigma/2)) return amplitude*(1 + (x-center)**2/sigma)**(-s1) * gamfcn(s1) / denom def expgaussian(x, amplitude=1, center=0, sigma=1.0, gamma=1.0): """exponentially modified Gaussian = (gamma/2) exp[center*gamma + (gamma*sigma)**2/2 - gamma*x] * erfc[(center + gamma*sigma**2 - x)/(sqrt(2)*sigma)] http://en.wikipedia.org/wiki/Exponentially_modified_Gaussian_distribution """ gss = gamma*sigma*sigma arg1 = gamma*(center +gss/2.0 - x) arg2 = (center + gss - x)/(s2*sigma) return amplitude*(gamma/2) * exp(arg1) * erfc(arg2) def donaich(x, amplitude=1.0, center=0, sigma=1.0, gamma=0.0): """Doniach Sunjic asymmetric lineshape, used for photo-emission = amplitude* cos(pi*gamma/2 + (1-gamma) arctan((x-center)/sigma) / (sigma**2 + (x-center)**2)**[(1-gamma)/2] see http://www.casaxps.com/help_manual/line_shapes.htm """ arg = (x-center)/sigma gm1 = (1.0 - gamma) scale = amplitude/(sigma**gm1) return scale*cos(pi*gamma/2 + gm1*arctan(arg))/(1 + arg**2)**(gm1/2) def skewed_gaussian(x, amplitude=1.0, center=0.0, sigma=1.0, gamma=0.0): """Gaussian, skewed with error function, equal to gaussian(x, center, sigma)*(1+erf(beta*(x-center))) with beta = gamma/(sigma*sqrt(2)) with gamma < 0: tail to low value of centroid gamma > 0: tail to high value of centroid see http://en.wikipedia.org/wiki/Skew_normal_distribution """ asym = 1 + erf(gamma*(x-center)/(s2*sigma)) return asym * gaussian(x, amplitude, center, sigma) def skewed_voigt(x, amplitude=1.0, center=0.0, sigma=1.0, gamma=None, skew=0.0): """Skewed Voigt lineshape, skewed with error function useful for ad-hoc Compton scatter profile with beta = skew/(sigma*sqrt(2)) = voigt(x, center, sigma, gamma)*(1+erf(beta*(x-center))) skew < 0: tail to low value of centroid skew > 0: tail to high value of centroid see http://en.wikipedia.org/wiki/Skew_normal_distribution """ beta = skew/(s2*sigma) asym = 1 + erf(beta*(x-center)) return asym * voigt(x, amplitude, center, sigma, gamma=gamma) def step(x, amplitude=1.0, center=0.0, sigma=1.0, form='linear'): """step function: starts at 0.0, ends at amplitude, with half-max at center, and rising with form: 'linear' (default) = amplitude * min(1, max(0, arg)) 'atan', 'arctan' = amplitude * (0.5 + atan(arg)/pi) 'erf' = amplitude * (1 + erf(arg))/2.0 'logistic' = amplitude * [1 - 1/(1 + exp(arg))] where arg = (x - center)/sigma """ if abs(sigma) < 1.e-13: sigma = 1.e-13 out = (x - center)/sigma if form == 'erf': out = 0.5*(1 + erf(out)) elif form.startswith('logi'): out = (1. - 1./(1. + exp(out))) elif form in ('atan', 'arctan'): out = 0.5 + arctan(out)/pi else: out[where(out < 0)] = 0.0 out[where(out > 1)] = 1.0 return amplitude*out def rectangle(x, amplitude=1.0, center1=0.0, sigma1=1.0, center2=1.0, sigma2=1.0, form='linear'): """rectangle function: step up, step down (see step function) starts at 0.0, rises to amplitude (at center1 with width sigma1) then drops to 0.0 (at center2 with width sigma2) with form: 'linear' (default) = ramp_up + ramp_down 'atan', 'arctan' = amplitude*(atan(arg1) + atan(arg2))/pi 'erf' = amplitude*(erf(arg1) + erf(arg2))/2. 'logisitic' = amplitude*[1 - 1/(1 + exp(arg1)) - 1/(1+exp(arg2))] where arg1 = (x - center1)/sigma1 and arg2 = -(x - center2)/sigma2 """ if abs(sigma1) < 1.e-13: sigma1 = 1.e-13 if abs(sigma2) < 1.e-13: sigma2 = 1.e-13 arg1 = (x - center1)/sigma1 arg2 = (center2 - x)/sigma2 if form == 'erf': out = 0.5*(erf(arg1) + erf(arg2)) elif form.startswith('logi'): out = (1. - 1./(1. + exp(arg1)) - 1./(1. + exp(arg2))) elif form in ('atan', 'arctan'): out = (arctan(arg1) + arctan(arg2))/pi else: arg1[where(arg1 < 0)] = 0.0 arg1[where(arg1 > 1)] = 1.0 arg2[where(arg2 > 0)] = 0.0 arg2[where(arg2 < -1)] = -1.0 out = arg1 + arg2 return amplitude*out def _erf(x): """error function. = 2/sqrt(pi)*integral(exp(-t**2), t=[0, z])""" return erf(x) def _erfc(x): """complented error function. = 1 - erf(x)""" return erfc(x) def _wofz(x): """fadeeva function for complex argument. = exp(-x**2)*erfc(-i*x)""" return wofz(x) def _gamma(x): """gamma function""" return gamfcn(x) def _gammaln(x): """log of absolute value of gamma function""" return gammaln(x) def exponential(x, amplitude=1, decay=1): "x -> amplitude * exp(-x/decay)" return amplitude * exp(-x/decay) def powerlaw(x, amplitude=1, exponent=1.0): "x -> amplitude * x**exponent" return amplitude * x**exponent def linear(x, slope, intercept): "x -> slope * x + intercept" return slope * x + intercept def parabolic(x, a, b, c): "x -> a * x**2 + b * x + c" return a * x**2 + b * x + c def assert_results_close(actual, desired, rtol=1e-03, atol=1e-03, err_msg='', verbose=True): """returns whether all parameter values in actual are close to those in desired""" for param_name, value in desired.items(): assert_allclose(actual[param_name], value, rtol, atol, err_msg, verbose) lmfit-0.9.2/lmfit/__init__.py0000644000032700003100000000436212603520205017341 0ustar newvillegeocars00000000000000""" Lmfit provides a high-level interface to non-linear optimization and curve fitting problems for Python. Lmfit builds on Levenberg-Marquardt algorithm of scipy.optimize.leastsq(), but also supports most of the optimization methods from scipy.optimize. It has a number of useful enhancements, including: * Using Parameter objects instead of plain floats as variables. A Parameter has a value that can be varied in the fit, fixed, have upper and/or lower bounds. It can even have a value that is constrained by an algebraic expression of other Parameter values. * Ease of changing fitting algorithms. Once a fitting model is set up, one can change the fitting algorithm without changing the objective function. * Improved estimation of confidence intervals. While scipy.optimize.leastsq() will automatically calculate uncertainties and correlations from the covariance matrix, lmfit also has functions to explicitly explore parameter space to determine confidence levels even for the most difficult cases. * Improved curve-fitting with the Model class. This which extends the capabilities of scipy.optimize.curve_fit(), allowing you to turn a function that models for your data into a python class that helps you parametrize and fit data with that model. * Many pre-built models for common lineshapes are included and ready to use. version: 0.8.0 last update: 2014-Sep-21 License: MIT Authors: Matthew Newville, The University of Chicago Till Stensitzki, Freie Universitat Berlin Daniel B. Allen, Johns Hopkins University Antonino Ingargiola, University of California, Los Angeles """ from .minimizer import minimize, Minimizer, MinimizerException from .parameter import Parameter, Parameters from .confidence import conf_interval, conf_interval2d from .printfuncs import (fit_report, ci_report, report_fit, report_ci, report_errors) from .model import Model, CompositeModel from . import models from . import uncertainties from .uncertainties import ufloat, correlated_values ## versioneer code from ._version import get_versions __version__ = get_versions()['version'] del get_versions lmfit-0.9.2/THANKS.txt0000644000032700003100000000232412613715346015657 0ustar newvillegeocars00000000000000Many people have contributed to lmfit. Matthew Newville wrote the original version and maintains the project. Till Stensitzki wrote the improved estimates of confidence intervals, and contributed many tests, bug fixes, and documentation. Daniel B. Allan wrote much of the high level Model code, and many improvements to the testing and documentation. Antonino Ingargiola wrote much of the high level Model code and provided many bug fixes. J. J. Helmus wrote the MINUT bounds for leastsq, originally in leastsqbounds.py, and ported to lmfit. E. O. Le Bigot wrote the uncertainties package, a version of which is used by lmfit. Michal Rawlik added plotting capabilities for Models. A. R. J. Nelson added differential_evolution, and greatly improved the code in the docstrings. Additional patches, bug fixes, and suggestions have come from Christoph Deil, Francois Boulogne, Thomas Caswell, Colin Brosseau, nmearl, Gustavo Pasquevich, Clemens Prescher, LiCode, and Ben Gamari. The lmfit code obviously depends on, and owes a very large debt to the code in scipy.optimize. Several discussions on the scipy-user and lmfit mailing lists have also led to improvements in this code.